commit 670fef77ac4d9116d5fdc28c0da40622919a062b Author: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sat Dec 16 23:54:22 2017 -0800 first commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..7c8d2699d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +*.pal text eol=crlf + +*.s text eol=lf +*.txt text eol=lf +Makefile text eol=lf +*.mk text eol=lf +*.c text eol=lf +*.h text eol=lf +*.pl text eol=lf +*.inc text eol=lf +*.sha1 text eol=lf +*.sed text eol=lf + +*.png binary +*.bin binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..7a8836759 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +*.exe +*.o +*.i +*.elf +*.gba +*.1bpp +*.4bpp +*.8bpp +*.gbapal +*.lz +*.rl +*.pcm +*.latfont +*.hwjpnfont +*.fwjpnfont +*.bat +sound/**/*.bin +src/*.s +tools/agbcc +ld_script_ruby.txt +ld_script_sapphire.txt +*.map +*.id0 +*.id1 +*.id2 +*.nam +*.til +*.ld +tags +types_*.taghl +*.swp +*.swo +*.s.old +*.s.old2 +*.dump +*.sa* +Thumbs.db +build/ +.idea/ +*.DS_Store +*.pl +tools/ diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..a62e54693 --- /dev/null +++ b/Makefile @@ -0,0 +1,108 @@ +AS := $(DEVKITARM)/bin/arm-none-eabi-as +ASFLAGS := -mcpu=arm7tdmi + +CC1 := tools/agbcc/bin/agbcc +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm + +CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp +CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef + +LD := $(DEVKITARM)/bin/arm-none-eabi-ld + +OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy + +LIBGCC := tools/agbcc/lib/libgcc.a + +LIBC := tools/agbcc/lib/libc.a + +SHA1 := sha1sum -c + +GFX := tools/gbagfx/gbagfx +AIF := tools/aif2pcm/aif2pcm +MID := tools/mid2agb/mid2agb +SCANINC := tools/scaninc/scaninc +PREPROC := tools/preproc/preproc +RAMSCRGEN := tools/ramscrgen/ramscrgen + +REVISION := 0 + +# Clear the default suffixes. +.SUFFIXES: + +# Secondary expansion is required for dependency variables in object rules. +.SECONDEXPANSION: + +.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin + +.PHONY: all clean tidy + +C_SRCS := $(wildcard src/*.c) +C_OBJS := $(C_SRCS:%.c=%.o) + +ASM_SRCS := $(wildcard asm/*.s) +ASM_OBJS := $(ASM_SRCS:%.s=%.o) + +DATA_ASM_SRCS := $(wildcard data/*.s) +DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=%.o) + +OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) + +all: pokefirered.gba + +# For contributors to make sure a change didn't affect the contents of the ROM. + +compare: all + @$(SHA1) firered.sha1 + +clean: tidy + +tidy: + rm -f pokefirered.gba pokefirered.elf pokefirered.map + rm -f $(ASM_OBJS) + rm -f $(DATA_ASM_OBJS) + rm -f $(C_OBJS) + rm -f $(ASM_OBJS) + rm -f $(DATA_ASM_OBJS) + rm -f $(C_SRCS:%.c=%.i) + rm -f $(C_SRCS:%.c=%.s) + rm -f *.ld + +src/agb_flash.o: CFLAGS := -O -mthumb-interwork +src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork +src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork + +src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc +src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc + +src/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc +src/isagbprn.o: CFLAGS := -mthumb-interwork + +$(C_OBJS): %.o : %.c + @$(CPP) $(CPPFLAGS) $< -o $*.i + @$(CC1) $(CFLAGS) $*.i -o $*.s + @printf ".text\n\t.align\t2, 0\n" >> $*.s + $(AS) $(ASFLAGS) -o $@ $*.s + +$(ASM_OBJS): %.o: %.s + $(AS) $(ASFLAGS) --defsym REVISION=$(REVISION) -o $@ $< + +$(DATA_ASM_OBJS): %.o: %.s + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) --defsym REVISION=$(REVISION) -o $@ + +sym_bss.ld: sym_bss.txt + $(RAMSCRGEN) .bss $< ENGLISH > $@ + +sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) + $(RAMSCRGEN) COMMON $< ENGLISH -c src,common_syms > $@ + +sym_ewram.ld: sym_ewram.txt + $(RAMSCRGEN) ewram_data $< ENGLISH > $@ + +ld_script.ld: ld_script.txt sym_bss.ld sym_common.ld sym_ewram.ld + sed -f ld_script.sed ld_script.txt >ld_script.ld + +pokefirered.elf: ld_script.ld $(OBJS) + $(LD) -T ld_script.ld -Map pokefirered.map -o $@ $(OBJS) $(LIBGCC) $(LIBC) + +pokefirered.gba: pokefirered.elf + $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ diff --git a/asm/bag.s b/asm/bag.s new file mode 100644 index 000000000..ee29b1e58 --- /dev/null +++ b/asm/bag.s @@ -0,0 +1,431 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810B858 +sub_810B858: @ 810B858 + push {r4,lr} + ldr r0, _0810B86C @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + cmp r0, 0x3 + beq _0810B874 + ldr r0, _0810B870 @ =gUnknown_84530C4 + bl sub_8003B24 + b _0810B87A + .align 2, 0 +_0810B86C: .4byte gUnknown_203ACFC +_0810B870: .4byte gUnknown_84530C4 +_0810B874: + ldr r0, _0810B8E4 @ =gUnknown_84530E4 + bl sub_8003B24 +_0810B87A: + bl sub_8002C28 + movs r0, 0 + movs r1, 0x64 + movs r2, 0xE0 + bl sub_815001C + movs r0, 0 + movs r1, 0x6D + movs r2, 0xD0 + bl sub_814FEAC + movs r0, 0 + movs r1, 0x81 + movs r2, 0xC0 + bl sub_814FF2C + ldr r0, _0810B8E8 @ =gUnknown_8453098 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r4, 0 +_0810B8A8: + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0810B8A8 + movs r0, 0 + bl sub_80F67A4 + movs r4, 0 + ldr r3, _0810B8EC @ =gUnknown_203AD34 + movs r2, 0xFF +_0810B8CC: + adds r0, r4, r3 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _0810B8CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B8E4: .4byte gUnknown_84530E4 +_0810B8E8: .4byte gUnknown_8453098 +_0810B8EC: .4byte gUnknown_203AD34 + thumb_func_end sub_810B858 + + thumb_func_start sub_810B8F0 +sub_810B8F0: @ 810B8F0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r3 + ldr r3, [sp, 0x30] + ldr r4, [sp, 0x34] + ldr r6, [sp, 0x38] + ldr r5, [sp, 0x3C] + mov r8, r5 + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + mov r9, r7 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r6, [sp, 0x4] + lsls r4, r5, 1 + adds r4, r5 + ldr r5, _0810B954 @ =gUnknown_84530B8 + adds r4, r5 + str r4, [sp, 0x8] + mov r4, r8 + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + str r2, [sp, 0x10] + mov r2, r9 + bl sub_812E5A4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810B954: .4byte gUnknown_84530B8 + thumb_func_end sub_810B8F0 + + thumb_func_start sub_810B958 +sub_810B958: @ 810B958 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0x48 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0810B990 @ =gUnknown_84530B8 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x1 + movs r3, 0x1 + bl sub_812E51C + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B990: .4byte gUnknown_84530B8 + thumb_func_end sub_810B958 + + thumb_func_start sub_810B994 +sub_810B994: @ 810B994 + push {r4,lr} + sub sp, 0xC + movs r0, 0x2 + movs r1, 0 + movs r2, 0x81 + movs r3, 0xC + bl sub_810F2E8 + ldr r4, _0810B9D8 @ =gUnknown_84162E8 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r3, 0x40 + subs r3, r0 + lsrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + adds r2, r4, 0 + bl sub_8002C48 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B9D8: .4byte gUnknown_84162E8 + thumb_func_end sub_810B994 + + thumb_func_start sub_810B9DC +sub_810B9DC: @ 810B9DC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r6, _0810BA10 @ =gUnknown_203AD34 + adds r4, r5, r6 + ldrb r0, [r4] + cmp r0, 0xFF + bne _0810BA2A + adds r0, r5, r1 + lsls r0, 3 + ldr r1, _0810BA14 @ =gUnknown_8453104 + adds r0, r1 + bl sub_8003CE4 + strb r0, [r4] + cmp r5, 0x6 + beq _0810BA18 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0x64 + movs r3, 0xE + bl sub_810F2E8 + b _0810BA24 + .align 2, 0 +_0810BA10: .4byte gUnknown_203AD34 +_0810BA14: .4byte gUnknown_8453104 +_0810BA18: + ldrb r0, [r6, 0x6] + movs r1, 0 + movs r2, 0x81 + movs r3, 0xC + bl sub_810F2E8 +_0810BA24: + movs r0, 0 + bl sub_80F67A4 +_0810BA2A: + ldr r0, _0810BA38 @ =gUnknown_203AD34 + adds r0, r5, r0 + ldrb r0, [r0] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0810BA38: .4byte gUnknown_203AD34 + thumb_func_end sub_810B9DC + + thumb_func_start sub_810BA3C +sub_810BA3C: @ 810BA3C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810BA6C @ =gUnknown_203AD34 + adds r4, r0 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0 + bl sub_80F67A4 + movs r0, 0xFF + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810BA6C: .4byte gUnknown_203AD34 + thumb_func_end sub_810BA3C + + thumb_func_start sub_810BA70 +sub_810BA70: @ 810BA70 + push {r4,lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0810BA94 @ =gUnknown_203AD34 + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, 0xFF + bne _0810BA8C + lsls r0, r1, 3 + ldr r1, _0810BA98 @ =gUnknown_8453104 + adds r0, r1 + bl sub_8003CE4 + strb r0, [r4] +_0810BA8C: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0810BA94: .4byte gUnknown_203AD34 +_0810BA98: .4byte gUnknown_8453104 + thumb_func_end sub_810BA70 + + thumb_func_start sub_810BA9C +sub_810BA9C: @ 810BA9C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810BAD4 @ =gUnknown_203AD34 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0xFF + beq _0810BACE + movs r1, 0 + bl sub_810F260 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0xFF + strb r0, [r4] +_0810BACE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810BAD4: .4byte gUnknown_203AD34 + thumb_func_end sub_810BA9C + + thumb_func_start sub_810BAD8 +sub_810BAD8: @ 810BAD8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810BAE4 @ =gUnknown_203AD34 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0810BAE4: .4byte gUnknown_203AD34 + thumb_func_end sub_810BAD8 + + thumb_func_start sub_810BAE8 +sub_810BAE8: @ 810BAE8 + push {lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810BB10 @ =gUnknown_845311C + movs r2, 0x2 + str r2, [sp] + movs r2, 0x64 + str r2, [sp, 0x4] + movs r2, 0xE + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r2, 0x2 + movs r3, 0 + bl sub_80BF5D0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0810BB10: .4byte gUnknown_845311C + thumb_func_end sub_810BAE8 + + thumb_func_start sub_810BB14 +sub_810BB14: @ 810BB14 + push {lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810BB3C @ =gUnknown_8453124 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x64 + str r2, [sp, 0x4] + movs r2, 0xE + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r2, 0x2 + movs r3, 0 + bl sub_80BF5D0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0810BB3C: .4byte gUnknown_8453124 + thumb_func_end sub_810BB14 + + thumb_func_start sub_810BB40 +sub_810BB40: @ 810BB40 + push {r4,lr} + movs r0, 0x2 + movs r1, 0 + bl sub_810B9DC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810BB70 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + adds r3, r0, 0 + adds r0, r4, 0 + movs r1, 0x81 + movs r2, 0xC + bl sub_809FF48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810BB70: .4byte gUnknown_3005008 + thumb_func_end sub_810BB40 + + thumb_func_start sub_810BB74 +sub_810BB74: @ 810BB74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + movs r2, 0xE + bl sub_8150048 + pop {r0} + bx r0 + thumb_func_end sub_810BB74 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_1.s b/asm/battle_1.s new file mode 100644 index 000000000..704f6c0ef --- /dev/null +++ b/asm/battle_1.s @@ -0,0 +1,1473 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800F1E8 +sub_800F1E8: @ 800F1E8 + push {lr} + bl sub_8006B10 + ldr r0, _0800F21C @ =gUnknown_824EFF0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0800F220 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, _0800F224 @ =sub_800F228 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0800F21C: .4byte gUnknown_824EFF0 +_0800F220: .4byte gUnknown_202063C +_0800F224: .4byte sub_800F228 + thumb_func_end sub_800F1E8 + + thumb_func_start sub_800F228 +sub_800F228: @ 800F228 + push {lr} + bl sub_8006B5C + bl sub_8006BA8 + pop {r0} + bx r0 + thumb_func_end sub_800F228 + + thumb_func_start sub_800F238 +sub_800F238: @ 800F238 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + ldr r1, _0800F24C @ =gUnknown_824EFC4 +_0800F242: + ldrb r3, [r1] + cmp r0, r3 + bne _0800F250 + ldrb r0, [r1, 0x1] + b _0800F25A + .align 2, 0 +_0800F24C: .4byte gUnknown_824EFC4 +_0800F250: + adds r1, 0x4 + adds r2, 0x1 + cmp r2, 0x7 + bls _0800F242 + movs r0, 0x9 +_0800F25A: + pop {r1} + bx r1 + thumb_func_end sub_800F238 + + thumb_func_start sub_800F260 +sub_800F260: @ 800F260 + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x13 + bls _0800F26C + movs r0, 0x9 +_0800F26C: + ldr r5, _0800F2A0 @ =gUnknown_824EE34 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 2 + adds r0, r4, r5 + ldr r0, [r0] + ldr r1, _0800F2A4 @ =0x06008000 + bl sub_800EBC0 + adds r0, r5, 0x4 + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _0800F2A8 @ =0x0600d000 + bl sub_800EBC0 + adds r5, 0x10 + adds r4, r5 + ldr r0, [r4] + movs r1, 0x20 + movs r2, 0x60 + bl sub_80703A8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F2A0: .4byte gUnknown_824EE34 +_0800F2A4: .4byte 0x06008000 +_0800F2A8: .4byte 0x0600d000 + thumb_func_end sub_800F260 + + thumb_func_start sub_800F2AC +sub_800F2AC: @ 800F2AC + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x13 + bls _0800F2B8 + movs r0, 0x9 +_0800F2B8: + ldr r5, _0800F2E0 @ =gUnknown_824EE34 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 2 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _0800F2E4 @ =0x06004000 + bl sub_800EBC0 + adds r5, 0xC + adds r4, r5 + ldr r0, [r4] + ldr r1, _0800F2E8 @ =0x0600e000 + bl sub_800EBC0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F2E0: .4byte gUnknown_824EE34 +_0800F2E4: .4byte 0x06004000 +_0800F2E8: .4byte 0x0600e000 + thumb_func_end sub_800F2AC + + thumb_func_start sub_800F2EC +sub_800F2EC: @ 800F2EC + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bls _0800F2FC + movs r0, 0x9 +_0800F2FC: + ldr r2, _0800F320 @ =gUnknown_824EE34 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r0, r1, r2 + ldr r0, [r0] + str r0, [r4] + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + str r0, [r5] + adds r2, 0x10 + adds r1, r2 + ldr r0, [r1] + str r0, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F320: .4byte gUnknown_824EE34 + thumb_func_end sub_800F2EC + + thumb_func_start sub_800F324 +sub_800F324: @ 800F324 + push {lr} + movs r0, 0 + bl sub_8001618 + ldr r1, _0800F344 @ =gUnknown_8248320 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r0, _0800F348 @ =gUnknown_8248330 + bl sub_8003B24 + bl sub_8002C28 + pop {r0} + bx r0 + .align 2, 0 +_0800F344: .4byte gUnknown_8248320 +_0800F348: .4byte gUnknown_8248330 + thumb_func_end sub_800F324 + + thumb_func_start sub_800F34C +sub_800F34C: @ 800F34C + push {lr} + movs r0, 0xC5 + bl sub_8000B68 + bl sub_800F324 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r1, _0800F37C @ =0x0000b040 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0800F37C: .4byte 0x0000b040 + thumb_func_end sub_800F34C + + thumb_func_start sub_800F380 +sub_800F380: @ 800F380 + push {r4,r5,lr} + movs r0, 0x2 + movs r1, 0x12 + movs r2, 0x10 + bl sub_815001C + movs r0, 0x2 + movs r1, 0x22 + movs r2, 0x10 + bl sub_815001C + ldr r4, _0800F3F0 @ =gUnknown_20371F8 + adds r0, r4, 0 + adds r0, 0xB8 + ldr r1, _0800F3F4 @ =0x00002529 + strh r1, [r0] + adds r2, r4, 0 + adds r2, 0xBA + strh r1, [r2] + adds r2, 0x2 + ldr r1, _0800F3F8 @ =0x00007fff + strh r1, [r2] + adds r2, 0x2 + ldr r1, _0800F3FC @ =0x0000675a + strh r1, [r2] + ldr r5, _0800F400 @ =gUnknown_20376B0 + adds r1, r5, 0 + movs r2, 0x4 + bl CpuSet + ldr r0, _0800F404 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0800F408 @ =0x00010010 + ands r0, r1 + cmp r0, 0 + beq _0800F3EA + movs r0, 0x70 + bl sub_80F77CC + movs r0, 0 + movs r1, 0x30 + movs r2, 0x70 + bl sub_814FEAC + adds r0, r4, 0 + adds r0, 0xEC + movs r1, 0 + strh r1, [r0] + adds r1, r5, 0 + adds r1, 0x34 + movs r2, 0x1 + bl CpuSet +_0800F3EA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F3F0: .4byte gUnknown_20371F8 +_0800F3F4: .4byte 0x00002529 +_0800F3F8: .4byte 0x00007fff +_0800F3FC: .4byte 0x0000675a +_0800F400: .4byte gUnknown_20376B0 +_0800F404: .4byte gUnknown_2022B4C +_0800F408: .4byte 0x00010010 + thumb_func_end sub_800F380 + + thumb_func_start sub_800F40C +sub_800F40C: @ 800F40C + push {lr} + bl sub_800FC2C + lsls r0, 24 + lsrs r0, 24 + bl sub_800F260 + pop {r0} + bx r0 + thumb_func_end sub_800F40C + + thumb_func_start sub_800F420 +sub_800F420: @ 800F420 + push {lr} + ldr r0, _0800F454 @ =gUnknown_8D00000 + movs r1, 0xC0 + lsls r1, 19 + bl sub_800EBC0 + ldr r1, _0800F458 @ =gUnknown_8D0051C + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0 + bl sub_80020BC + ldr r0, _0800F45C @ =gUnknown_8D004D8 + movs r1, 0 + movs r2, 0x40 + bl sub_80703A8 + bl sub_800F380 + bl sub_800F40C + pop {r0} + bx r0 + .align 2, 0 +_0800F454: .4byte gUnknown_8D00000 +_0800F458: .4byte gUnknown_8D0051C +_0800F45C: .4byte gUnknown_8D004D8 + thumb_func_end sub_800F420 + + thumb_func_start sub_800F460 +sub_800F460: @ 800F460 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + ldr r4, [sp, 0x34] + lsls r0, 24 + lsrs r6, r0, 24 + adds r7, r6, 0 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r3, 24 + mov r12, r3 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + movs r4, 0 + ldr r0, _0800F4B8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800F548 + ldr r0, _0800F4BC @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + movs r2, 0x12 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0800F4D2 + cmp r5, 0x1 + beq _0800F4FA + cmp r5, 0x1 + bgt _0800F4C0 + cmp r5, 0 + beq _0800F4CA + b _0800F504 + .align 2, 0 +_0800F4B8: .4byte gUnknown_2022B4C +_0800F4BC: .4byte gUnknown_3005090 +_0800F4C0: + cmp r5, 0x2 + beq _0800F4CE + cmp r5, 0x3 + beq _0800F4EE + b _0800F504 +_0800F4CA: + ldrh r0, [r1, 0xE] + b _0800F4F0 +_0800F4CE: + ldrh r1, [r1, 0xE] + b _0800F4FC +_0800F4D2: + cmp r5, 0x1 + beq _0800F4EE + cmp r5, 0x1 + bgt _0800F4E0 + cmp r5, 0 + beq _0800F4EA + b _0800F504 +_0800F4E0: + cmp r5, 0x2 + beq _0800F4F6 + cmp r5, 0x3 + beq _0800F4FA + b _0800F504 +_0800F4EA: + ldrh r0, [r1, 0xE] + b _0800F4F0 +_0800F4EE: + ldrh r0, [r1, 0x10] +_0800F4F0: + movs r4, 0x3F + ands r4, r0 + b _0800F504 +_0800F4F6: + ldrh r1, [r1, 0xE] + b _0800F4FC +_0800F4FA: + ldrh r1, [r1, 0x10] +_0800F4FC: + movs r0, 0xFC + lsls r0, 4 + ands r0, r1 + lsrs r4, r0, 6 +_0800F504: + movs r2, 0 + movs r6, 0x3 + ldr r0, _0800F544 @ =0x00006001 + adds r5, r0, 0 + add r3, sp, 0xC +_0800F50E: + lsls r1, r2, 1 + adds r0, r6, 0 + lsls r0, r1 + ands r0, r4 + asrs r0, r1 + adds r0, r5 + strh r0, [r3] + adds r3, 0x2 + adds r2, 0x1 + cmp r2, 0x2 + ble _0800F50E + movs r0, 0x3 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + mov r0, r8 + add r1, sp, 0xC + mov r2, r12 + mov r3, r9 + bl sub_8002228 + mov r0, r8 + bl sub_80020BC + b _0800F5B6 + .align 2, 0 +_0800F544: .4byte 0x00006001 +_0800F548: + ldr r0, _0800F564 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r0, [r0] + cmp r5, r0 + bne _0800F56C + ldr r1, _0800F568 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldrh r4, [r0, 0xE] + b _0800F578 + .align 2, 0 +_0800F564: .4byte gUnknown_2023FE8 +_0800F568: .4byte gUnknown_3005090 +_0800F56C: + ldr r1, _0800F5C4 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldrh r4, [r0, 0x10] +_0800F578: + movs r2, 0 + movs r6, 0x3 + ldr r0, _0800F5C8 @ =0x00006001 + adds r5, r0, 0 + add r3, sp, 0xC +_0800F582: + lsls r1, r2, 1 + adds r0, r6, 0 + lsls r0, r1 + ands r0, r4 + asrs r0, r1 + adds r0, r5 + strh r0, [r3] + adds r3, 0x2 + adds r2, 0x1 + cmp r2, 0x5 + ble _0800F582 + movs r0, 0x6 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + mov r0, r8 + add r1, sp, 0xC + mov r2, r12 + mov r3, r9 + bl sub_8002228 + mov r0, r8 + bl sub_80020BC +_0800F5B6: + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F5C4: .4byte gUnknown_3005090 +_0800F5C8: .4byte 0x00006001 + thumb_func_end sub_800F460 + + thumb_func_start sub_800F5CC +sub_800F5CC: @ 800F5CC + push {lr} + ldr r0, _0800F5E0 @ =gUnknown_2023E8A + ldrb r2, [r0] + cmp r2, 0x3 + bne _0800F5E8 + ldr r0, _0800F5E4 @ =gUnknown_83FE883 + movs r1, 0x15 + bl sub_80D87BC + b _0800F6F0 + .align 2, 0 +_0800F5E0: .4byte gUnknown_2023E8A +_0800F5E4: .4byte gUnknown_83FE883 +_0800F5E8: + ldr r0, _0800F61C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800F666 + cmp r2, 0x1 + bne _0800F632 + ldr r2, _0800F620 @ =gUnknown_202273C + ldr r0, _0800F624 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0x1 + beq _0800F682 + cmp r0, 0x1 + bgt _0800F628 + cmp r0, 0 + beq _0800F6BC + b _0800F6F0 + .align 2, 0 +_0800F61C: .4byte gUnknown_2022B4C +_0800F620: .4byte gUnknown_202273C +_0800F624: .4byte gUnknown_2023FE8 +_0800F628: + cmp r0, 0x2 + beq _0800F6BC + cmp r0, 0x3 + bne _0800F6F0 + b _0800F682 +_0800F632: + ldr r2, _0800F654 @ =gUnknown_202273C + ldr r0, _0800F658 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0x1 + beq _0800F6BC + cmp r0, 0x1 + bgt _0800F65C + cmp r0, 0 + beq _0800F682 + b _0800F6F0 + .align 2, 0 +_0800F654: .4byte gUnknown_202273C +_0800F658: .4byte gUnknown_2023FE8 +_0800F65C: + cmp r0, 0x2 + beq _0800F682 + cmp r0, 0x3 + bne _0800F6F0 + b _0800F6BC +_0800F666: + cmp r2, 0x1 + bne _0800F6A4 + ldr r2, _0800F694 @ =gUnknown_202273C + ldr r0, _0800F698 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0 + beq _0800F6BC +_0800F682: + ldr r0, _0800F69C @ =gUnknown_83FE874 + movs r1, 0x17 + bl sub_80D87BC + ldr r0, _0800F6A0 @ =gUnknown_83FE87B + movs r1, 0x16 + bl sub_80D87BC + b _0800F6F0 + .align 2, 0 +_0800F694: .4byte gUnknown_202273C +_0800F698: .4byte gUnknown_2023FE8 +_0800F69C: .4byte gUnknown_83FE874 +_0800F6A0: .4byte gUnknown_83FE87B +_0800F6A4: + ldr r2, _0800F6D0 @ =gUnknown_202273C + ldr r0, _0800F6D4 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x18] + cmp r0, 0 + beq _0800F6E0 +_0800F6BC: + ldr r0, _0800F6D8 @ =gUnknown_83FE874 + movs r1, 0x16 + bl sub_80D87BC + ldr r0, _0800F6DC @ =gUnknown_83FE87B + movs r1, 0x17 + bl sub_80D87BC + b _0800F6F0 + .align 2, 0 +_0800F6D0: .4byte gUnknown_202273C +_0800F6D4: .4byte gUnknown_2023FE8 +_0800F6D8: .4byte gUnknown_83FE874 +_0800F6DC: .4byte gUnknown_83FE87B +_0800F6E0: + ldr r0, _0800F6F4 @ =gUnknown_83FE874 + movs r1, 0x17 + bl sub_80D87BC + ldr r0, _0800F6F8 @ =gUnknown_83FE87B + movs r1, 0x16 + bl sub_80D87BC +_0800F6F0: + pop {r0} + bx r0 + .align 2, 0 +_0800F6F4: .4byte gUnknown_83FE874 +_0800F6F8: .4byte gUnknown_83FE87B + thumb_func_end sub_800F5CC + + thumb_func_start sub_800F6FC +sub_800F6FC: @ 800F6FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _0800F728 @ =gUnknown_3005090 + lsls r0, r7, 2 + mov r8, r0 + adds r0, r7 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _0800F71E + b _0800F850 +_0800F71E: + cmp r0, 0x1 + bgt _0800F72C + cmp r0, 0 + beq _0800F734 + b _0800FAC4 + .align 2, 0 +_0800F728: .4byte gUnknown_3005090 +_0800F72C: + cmp r0, 0x2 + bne _0800F732 + b _0800F8F0 +_0800F732: + b _0800FAC4 +_0800F734: + ldr r0, _0800F75C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800F7CC + movs r5, 0 + movs r6, 0x3 +_0800F744: + ldr r0, _0800F760 @ =gUnknown_2022744 + adds r1, r5, r0 + subs r0, 0x8 + adds r4, r5, r0 + ldrh r0, [r4, 0x18] + cmp r0, 0x1 + beq _0800F77C + cmp r0, 0x1 + bgt _0800F764 + cmp r0, 0 + beq _0800F76E + b _0800F7C2 + .align 2, 0 +_0800F75C: .4byte gUnknown_2022B4C +_0800F760: .4byte gUnknown_2022744 +_0800F764: + cmp r0, 0x2 + beq _0800F790 + cmp r0, 0x3 + beq _0800F7AA + b _0800F7C2 +_0800F76E: + adds r0, r1, 0 + movs r1, 0x11 + bl sub_80D87BC + ldrb r1, [r4, 0x18] + movs r0, 0x4 + b _0800F79C +_0800F77C: + adds r0, r1, 0 + movs r1, 0x12 + bl sub_80D87BC + ldrb r1, [r4, 0x18] + movs r0, 0x4 + str r0, [sp] + adds r0, r7, 0 + movs r2, 0x2 + b _0800F7A2 +_0800F790: + adds r0, r1, 0 + movs r1, 0x13 + bl sub_80D87BC + ldrb r1, [r4, 0x18] + movs r0, 0x8 +_0800F79C: + str r0, [sp] + adds r0, r7, 0 + movs r2, 0x1 +_0800F7A2: + movs r3, 0x2 + bl sub_800F460 + b _0800F7C2 +_0800F7AA: + adds r0, r1, 0 + movs r1, 0x14 + bl sub_80D87BC + ldrb r1, [r4, 0x18] + movs r0, 0x8 + str r0, [sp] + adds r0, r7, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_800F460 +_0800F7C2: + adds r5, 0x1C + subs r6, 0x1 + cmp r6, 0 + bge _0800F744 + b _0800F830 +_0800F7CC: + ldr r0, _0800F844 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r5, [r0] + movs r0, 0x1 + adds r6, r5, 0 + eors r6, r0 + adds r1, r6, 0 + ldr r4, _0800F848 @ =gUnknown_202273C + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x18] + cmp r0, 0 + beq _0800F7F0 + adds r6, r5, 0 + adds r5, r1, 0 +_0800F7F0: + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r4, 0x8 + adds r1, r0, r4 + adds r0, r1, 0 + movs r1, 0xF + bl sub_80D87BC + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 2 + adds r1, r0, r4 + adds r0, r1, 0 + movs r1, 0x10 + bl sub_80D87BC + movs r4, 0x7 + str r4, [sp] + adds r0, r7, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_800F460 + str r4, [sp] + adds r0, r7, 0 + adds r1, r6, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_800F460 +_0800F830: + ldr r0, _0800F84C @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _0800FAC4 + .align 2, 0 +_0800F844: .4byte gUnknown_2023FE8 +_0800F848: .4byte gUnknown_202273C +_0800F84C: .4byte gUnknown_3005090 +_0800F850: + ldr r0, _0800F8CC @ =0x00002710 + bl sub_80089B8 + lsls r0, 24 + ldr r2, _0800F8D0 @ =gUnknown_20371F8 + lsrs r0, 19 + ldr r3, _0800F8D4 @ =0x0000021e + adds r0, r3 + adds r2, r0, r2 + ldr r1, _0800F8D8 @ =gUnknown_20375F8 + adds r0, r1 + ldr r1, _0800F8DC @ =0x00007fff + strh r1, [r0] + strh r1, [r2] + ldr r0, _0800F8E0 @ =gUnknown_82482E8 + movs r1, 0x6C + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r4, _0800F8E4 @ =gUnknown_2023FE8 + ldr r1, [r4] + adds r1, 0x7D + strb r0, [r1] + ldr r0, _0800F8E8 @ =gUnknown_8248300 + movs r1, 0x84 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] + adds r1, 0x7E + strb r0, [r1] + ldr r3, _0800F8EC @ =gUnknown_202063C + ldr r0, [r4] + adds r0, 0x7D + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0x7E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _0800FAC4 + .align 2, 0 +_0800F8CC: .4byte 0x00002710 +_0800F8D0: .4byte gUnknown_20371F8 +_0800F8D4: .4byte 0x0000021e +_0800F8D8: .4byte gUnknown_20375F8 +_0800F8DC: .4byte 0x00007fff +_0800F8E0: .4byte gUnknown_82482E8 +_0800F8E4: .4byte gUnknown_2023FE8 +_0800F8E8: .4byte gUnknown_8248300 +_0800F8EC: .4byte gUnknown_202063C +_0800F8F0: + movs r1, 0x12 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0800F958 + ldr r4, _0800F944 @ =gUnknown_2022978 + ldrh r0, [r5, 0xA] + bl sub_8044E6C + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0800F90A + adds r0, 0x1F +_0800F90A: + asrs r1, r0, 5 + movs r2, 0x14 + negs r2, r2 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4] + ldr r4, _0800F948 @ =gUnknown_202297C + ldrh r0, [r5, 0xC] + bl sub_8044E6C + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0800F928 + adds r0, 0x1F +_0800F928: + asrs r1, r0, 5 + movs r3, 0x8C + negs r3, r3 + adds r0, r3, 0 + subs r0, r1 + strh r0, [r4] + ldr r0, _0800F94C @ =gUnknown_202297A + ldr r2, _0800F950 @ =0x0000ffdc + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _0800F954 @ =gUnknown_202297E + strh r1, [r0] + b _0800F9C4 + .align 2, 0 +_0800F944: .4byte gUnknown_2022978 +_0800F948: .4byte gUnknown_202297C +_0800F94C: .4byte gUnknown_202297A +_0800F950: .4byte 0x0000ffdc +_0800F954: .4byte gUnknown_202297E +_0800F958: + ldr r4, _0800F9E8 @ =gUnknown_2022978 + ldrh r0, [r5, 0xA] + bl sub_8044E6C + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0800F96A + adds r0, 0x1F +_0800F96A: + asrs r1, r0, 5 + movs r3, 0x14 + negs r3, r3 + adds r0, r3, 0 + subs r0, r1 + strh r0, [r4] + ldr r4, _0800F9EC @ =gUnknown_202297A + ldrh r0, [r5, 0xA] + bl sub_8044EB0 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0800F988 + adds r0, 0x1F +_0800F988: + asrs r0, 5 + subs r0, 0xA4 + strh r0, [r4] + ldr r4, _0800F9F0 @ =gUnknown_202297C + ldrh r0, [r5, 0xC] + bl sub_8044E6C + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0800F9A0 + adds r0, 0x1F +_0800F9A0: + asrs r1, r0, 5 + movs r2, 0x8C + negs r2, r2 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4] + ldr r4, _0800F9F4 @ =gUnknown_202297E + ldrh r0, [r5, 0xC] + bl sub_8044EB0 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0800F9BE + adds r0, 0x1F +_0800F9BE: + asrs r0, 5 + subs r0, 0xA4 + strh r0, [r4] +_0800F9C4: + ldr r1, _0800F9F8 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0xC] + movs r2, 0xC + ldrsh r3, [r1, r2] + mov r8, r3 + cmp r3, 0 + beq _0800F9FC + subs r0, 0x2 + strh r0, [r1, 0xC] + ldrh r0, [r1, 0xA] + adds r0, 0x2 + strh r0, [r1, 0xA] + b _0800FAC4 + .align 2, 0 +_0800F9E8: .4byte gUnknown_2022978 +_0800F9EC: .4byte gUnknown_202297A +_0800F9F0: .4byte gUnknown_202297C +_0800F9F4: .4byte gUnknown_202297E +_0800F9F8: .4byte gUnknown_3005090 +_0800F9FC: + movs r3, 0x12 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _0800FA08 + bl sub_800F5CC +_0800FA08: + movs r0, 0x71 + bl sub_80722CC + adds r0, r7, 0 + bl sub_8077508 + ldr r4, _0800FAD0 @ =gUnknown_202063C + ldr r5, _0800FAD4 @ =gUnknown_2023FE8 + ldr r0, [r5] + adds r0, 0x7D + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x7E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r5, [r5] + adds r6, r5, 0 + adds r6, 0x7E + ldrb r0, [r6] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x40 + ldr r7, _0800FAD8 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _0800FADC @ =0xfffffc00 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] + adds r5, 0x7D + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r1, r8 + strh r1, [r0, 0x2E] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + strh r1, [r0, 0x2E] + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x20] + strh r1, [r0, 0x30] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x20] + strh r1, [r0, 0x30] + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r2, r8 + strh r2, [r0, 0x32] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x32] +_0800FAC4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800FAD0: .4byte gUnknown_202063C +_0800FAD4: .4byte gUnknown_2023FE8 +_0800FAD8: .4byte 0x000003ff +_0800FADC: .4byte 0xfffffc00 + thumb_func_end sub_800F6FC + + thumb_func_start sub_800FAE0 +sub_800FAE0: @ 800FAE0 + push {r4,lr} + ldr r0, _0800FB64 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0800FB94 + ldr r0, _0800FB68 @ =gUnknown_8E7737C + ldr r1, _0800FB6C @ =0x06004000 + bl sub_800EBC0 + ldr r0, _0800FB70 @ =gUnknown_8E77598 + ldr r1, _0800FB74 @ =0x06010000 + bl sub_800EBC0 + ldr r0, _0800FB78 @ =gUnknown_8E77570 + movs r1, 0x60 + movs r2, 0x20 + bl sub_80703A8 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80019E4 + ldr r1, _0800FB7C @ =0x00005c04 + movs r0, 0xA + bl sub_8000A38 + ldr r4, _0800FB80 @ =gUnknown_8E77464 + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x48 + movs r1, 0x36 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x36 + bl sub_8000A38 + ldr r0, _0800FB84 @ =gUnknown_202297A + ldr r2, _0800FB88 @ =0x0000ff5c + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _0800FB8C @ =gUnknown_202297E + strh r1, [r0] + ldr r0, _0800FB90 @ =gUnknown_8248318 + bl sub_800F034 + b _0800FC26 + .align 2, 0 +_0800FB64: .4byte gUnknown_2022B4C +_0800FB68: .4byte gUnknown_8E7737C +_0800FB6C: .4byte 0x06004000 +_0800FB70: .4byte gUnknown_8E77598 +_0800FB74: .4byte 0x06010000 +_0800FB78: .4byte gUnknown_8E77570 +_0800FB7C: .4byte 0x00005c04 +_0800FB80: .4byte gUnknown_8E77464 +_0800FB84: .4byte gUnknown_202297A +_0800FB88: .4byte 0x0000ff5c +_0800FB8C: .4byte gUnknown_202297E +_0800FB90: .4byte gUnknown_8248318 +_0800FB94: + movs r0, 0x80 + lsls r0, 9 + ands r0, r1 + cmp r0, 0 + beq _0800FBA6 + movs r0, 0 + bl sub_800F2AC + b _0800FC26 +_0800FBA6: + ldr r0, _0800FBC8 @ =0x00080902 + ands r0, r1 + cmp r0, 0 + bne _0800FBF8 + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + beq _0800FBD8 + ldr r0, _0800FBCC @ =gUnknown_81E9F10 + ldrb r0, [r0] + cmp r0, 0x4 + bne _0800FBD0 + movs r0, 0x7 + bl sub_800F2AC + b _0800FC26 + .align 2, 0 +_0800FBC8: .4byte 0x00080902 +_0800FBCC: .4byte gUnknown_81E9F10 +_0800FBD0: + movs r0, 0x4 + bl sub_800F2AC + b _0800FC26 +_0800FBD8: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _0800FC08 + ldr r2, _0800FC00 @ =gUnknown_823EAC8 + ldr r0, _0800FC04 @ =gUnknown_20386AE + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0x54 + beq _0800FBF8 + cmp r0, 0x5A + bne _0800FC08 +_0800FBF8: + movs r0, 0x8 + bl sub_800F2AC + b _0800FC26 + .align 2, 0 +_0800FC00: .4byte gUnknown_823EAC8 +_0800FC04: .4byte gUnknown_20386AE +_0800FC08: + bl sub_8056288 + lsls r0, 24 + cmp r0, 0 + bne _0800FC20 + ldr r0, _0800FC1C @ =gUnknown_2022B50 + ldrb r0, [r0] + bl sub_800F2AC + b _0800FC26 + .align 2, 0 +_0800FC1C: .4byte gUnknown_2022B50 +_0800FC20: + movs r0, 0x8 + bl sub_800F2AC +_0800FC26: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_800FAE0 + + thumb_func_start sub_800FC2C +sub_800FC2C: @ 800FC2C + push {lr} + ldr r0, _0800FC40 @ =gUnknown_2022B4C + ldr r1, [r0] + ldr r2, _0800FC44 @ =0x00080902 + ands r2, r1 + cmp r2, 0 + beq _0800FC48 + movs r0, 0xA + b _0800FCAA + .align 2, 0 +_0800FC40: .4byte gUnknown_2022B4C +_0800FC44: .4byte 0x00080902 +_0800FC48: + movs r0, 0x80 + lsls r0, 9 + ands r0, r1 + cmp r0, 0 + beq _0800FC60 + ldr r0, _0800FC5C @ =gUnknown_2022B50 + strb r2, [r0] + movs r0, 0 + b _0800FCAA + .align 2, 0 +_0800FC5C: .4byte gUnknown_2022B50 +_0800FC60: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _0800FC90 + ldr r2, _0800FC80 @ =gUnknown_823EAC8 + ldr r0, _0800FC84 @ =gUnknown_20386AE + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0x54 + bne _0800FC88 + movs r0, 0xC + b _0800FCAA + .align 2, 0 +_0800FC80: .4byte gUnknown_823EAC8 +_0800FC84: .4byte gUnknown_20386AE +_0800FC88: + cmp r0, 0x5A + bne _0800FC90 + movs r0, 0x13 + b _0800FCAA +_0800FC90: + bl sub_8056288 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0800FCA6 + bl sub_800F238 + lsls r0, 24 + lsrs r0, 24 + b _0800FCAA +_0800FCA6: + ldr r0, _0800FCB0 @ =gUnknown_2022B50 + ldrb r0, [r0] +_0800FCAA: + pop {r1} + bx r1 + .align 2, 0 +_0800FCB0: .4byte gUnknown_2022B50 + thumb_func_end sub_800FC2C + + thumb_func_start sub_800FCB4 +sub_800FCB4: @ 800FCB4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + movs r4, 0 + cmp r0, 0x6 + bhi _0800FD92 + lsls r0, 2 + ldr r1, _0800FCCC @ =_0800FCD0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800FCCC: .4byte _0800FCD0 + .align 2, 0 +_0800FCD0: + .4byte _0800FCEC + .4byte _0800FCFC + .4byte _0800FD14 + .4byte _0800FD24 + .4byte _0800FD3E + .4byte _0800FD68 + .4byte _0800FD8C +_0800FCEC: + ldr r0, _0800FCF8 @ =gUnknown_8D00000 + movs r1, 0xC0 + lsls r1, 19 + bl sub_800EBC0 + b _0800FD94 + .align 2, 0 +_0800FCF8: .4byte gUnknown_8D00000 +_0800FCFC: + ldr r1, _0800FD10 @ =gUnknown_8D0051C + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0 + bl sub_80020BC + b _0800FD94 + .align 2, 0 +_0800FD10: .4byte gUnknown_8D0051C +_0800FD14: + ldr r0, _0800FD20 @ =gUnknown_8D004D8 + movs r1, 0 + movs r2, 0x40 + bl sub_80703A8 + b _0800FD94 + .align 2, 0 +_0800FD20: .4byte gUnknown_8D004D8 +_0800FD24: + bl sub_800FC2C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _0800FD5C @ =gUnknown_824EE34 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _0800FD60 @ =0x06008000 + bl sub_800EBC0 +_0800FD3E: + bl sub_800FC2C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _0800FD5C @ =gUnknown_824EE34 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + ldr r1, _0800FD64 @ =0x0600d000 + bl sub_800EBC0 + b _0800FD94 + .align 2, 0 +_0800FD5C: .4byte gUnknown_824EE34 +_0800FD60: .4byte 0x06008000 +_0800FD64: .4byte 0x0600d000 +_0800FD68: + bl sub_800FC2C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _0800FD88 @ =gUnknown_824EE34 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0x10 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x20 + movs r2, 0x60 + bl sub_80703A8 + b _0800FD94 + .align 2, 0 +_0800FD88: .4byte gUnknown_824EE34 +_0800FD8C: + bl sub_800F380 + b _0800FD94 +_0800FD92: + movs r4, 0x1 +_0800FD94: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800FCB4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_2.s b/asm/battle_2.s new file mode 100644 index 000000000..dfaf2f25a --- /dev/null +++ b/asm/battle_2.s @@ -0,0 +1,13887 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800FD9C +sub_800FD9C: @ 800FD9C + push {r4,lr} + bl sub_804C0A4 + bl sub_802E03C + bl sub_8033DB8 + bl sub_80358D4 + ldr r4, _0800FDCC @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800FDD8 + bl sub_800D230 + ldr r0, _0800FDD0 @ =sub_80109C8 + bl sub_8000544 + ldr r1, _0800FDD4 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1] + b _0800FE1C + .align 2, 0 +_0800FDCC: .4byte gUnknown_2022B4C +_0800FDD0: .4byte sub_80109C8 +_0800FDD4: .4byte gUnknown_2023E82 +_0800FDD8: + bl sub_800FE24 + ldr r1, [r4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0800FE1C + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0800FE06 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0800FDFE + movs r0, 0x19 + bl sub_812B1F0 + b _0800FE1C +_0800FDFE: + movs r0, 0x18 + bl sub_812B1F0 + b _0800FE1C +_0800FE06: + movs r0, 0x80 + ands r1, r0 + cmp r1, 0 + beq _0800FE16 + movs r0, 0x1A + bl sub_812B1F0 + b _0800FE1C +_0800FE16: + movs r0, 0x17 + bl sub_812B1F0 +_0800FE1C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_800FD9C + + thumb_func_start sub_800FE24 +sub_800FE24: @ 800FE24 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + str r0, [sp] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _0800FF28 @ =0x05006000 + mov r0, sp + bl CpuSet + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r4, _0800FF2C @ =0x00005051 + movs r0, 0x44 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + ldr r1, _0800FF30 @ =gUnknown_2022984 + movs r0, 0xF0 + strh r0, [r1] + ldr r0, _0800FF34 @ =gUnknown_2022986 + strh r4, [r0] + bl sub_8087EA4 + ldr r0, _0800FF38 @ =gUnknown_2038700 + movs r3, 0xF0 + movs r1, 0xF0 + lsls r1, 3 + adds r2, r0, r1 + movs r1, 0x4F +_0800FE88: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0800FE88 + movs r1, 0x50 + ldr r4, _0800FF3C @ =gUnknown_824EFE4 + ldr r0, _0800FF38 @ =gUnknown_2038700 + ldr r3, _0800FF40 @ =0x0000ff10 + movs r5, 0x82 + lsls r5, 4 + adds r2, r0, r5 + adds r0, 0xA0 +_0800FEA6: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + adds r1, 0x1 + cmp r1, 0x9F + ble _0800FEA6 + ldr r0, [r4] + ldr r1, [r4, 0x4] + ldr r2, [r4, 0x8] + bl sub_8087EE4 + bl sub_8070528 + ldr r0, _0800FF44 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _0800FF48 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _0800FF4C @ =gUnknown_2022978 + strh r1, [r0] + ldr r0, _0800FF50 @ =gUnknown_202297A + strh r1, [r0] + ldr r0, _0800FF54 @ =gUnknown_202297C + strh r1, [r0] + ldr r0, _0800FF58 @ =gUnknown_202297E + strh r1, [r0] + ldr r0, _0800FF5C @ =gUnknown_2022980 + strh r1, [r0] + ldr r0, _0800FF60 @ =gUnknown_2022982 + strh r1, [r0] + bl sub_807FC5C + ldr r1, _0800FF64 @ =gUnknown_2022B50 + strb r0, [r1] + bl sub_800F34C + bl sub_800F420 + bl sub_8006B10 + bl sub_80773BC + bl sub_800FAE0 + bl sub_80088F0 + ldr r1, _0800FF68 @ =gUnknown_3003E58 + movs r0, 0x4 + strb r0, [r1] + ldr r0, _0800FF6C @ =sub_80116F4 + bl sub_80006F4 + bl sub_800D278 + ldr r0, _0800FF70 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800FF78 + ldr r0, _0800FF74 @ =sub_8010BA0 + bl sub_8000544 + b _0800FF7E + .align 2, 0 +_0800FF28: .4byte 0x05006000 +_0800FF2C: .4byte 0x00005051 +_0800FF30: .4byte gUnknown_2022984 +_0800FF34: .4byte gUnknown_2022986 +_0800FF38: .4byte gUnknown_2038700 +_0800FF3C: .4byte gUnknown_824EFE4 +_0800FF40: .4byte 0x0000ff10 +_0800FF44: .4byte gUnknown_2022974 +_0800FF48: .4byte gUnknown_2022976 +_0800FF4C: .4byte gUnknown_2022978 +_0800FF50: .4byte gUnknown_202297A +_0800FF54: .4byte gUnknown_202297C +_0800FF58: .4byte gUnknown_202297E +_0800FF5C: .4byte gUnknown_2022980 +_0800FF60: .4byte gUnknown_2022982 +_0800FF64: .4byte gUnknown_2022B50 +_0800FF68: .4byte gUnknown_3003E58 +_0800FF6C: .4byte sub_80116F4 +_0800FF70: .4byte gUnknown_2022B4C +_0800FF74: .4byte sub_8010BA0 +_0800FF78: + ldr r0, _0800FFCC @ =sub_8010508 + bl sub_8000544 +_0800FF7E: + ldr r0, _0800FFD0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0800FF98 + ldr r0, _0800FFD4 @ =gUnknown_202402C + ldr r1, _0800FFD8 @ =gUnknown_20386AE + ldrh r1, [r1] + bl sub_80112E0 + bl sub_80443F4 +_0800FF98: + ldr r0, _0800FFDC @ =gUnknown_30030F0 + ldr r1, _0800FFE0 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] + ldr r4, _0800FFE4 @ =gUnknown_2024284 + movs r0, 0xFA + lsls r0, 1 + adds r5, r4, r0 +_0800FFAE: + adds r0, r4, 0 + movs r1, 0x3 + bl sub_80436F8 + adds r4, 0x64 + cmp r4, r5 + ble _0800FFAE + movs r1, 0 + ldr r0, _0800FFE8 @ =gUnknown_2023E82 + strb r1, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800FFCC: .4byte sub_8010508 +_0800FFD0: .4byte gUnknown_2022B4C +_0800FFD4: .4byte gUnknown_202402C +_0800FFD8: .4byte gUnknown_20386AE +_0800FFDC: .4byte gUnknown_30030F0 +_0800FFE0: .4byte 0x00000439 +_0800FFE4: .4byte gUnknown_2024284 +_0800FFE8: .4byte gUnknown_2023E82 + thumb_func_end sub_800FE24 + + thumb_func_start sub_800FFEC +sub_800FFEC: @ 800FFEC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + mov r9, r6 + movs r0, 0xCE + lsls r0, 1 + mov r10, r0 + mov r8, r6 +_08010002: + movs r0, 0x64 + mov r4, r9 + muls r4, r0 + ldr r0, _080100B0 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + adds r1, r0, 0 + cmp r5, 0 + beq _0801007E + cmp r5, r10 + beq _0801004A + cmp r7, 0 + beq _0801004A + cmp r1, 0 + bne _0801004A + movs r0, 0x1 + mov r2, r8 + lsls r0, r2 + orrs r6, r0 + lsls r0, r6, 16 + lsrs r6, r0, 16 +_0801004A: + cmp r5, 0 + beq _0801007E + cmp r7, 0 + beq _08010066 + cmp r5, r10 + beq _0801005A + cmp r1, 0 + beq _08010066 +_0801005A: + movs r0, 0x2 + mov r1, r8 + lsls r0, r1 + orrs r6, r0 + lsls r0, r6, 16 + lsrs r6, r0, 16 +_08010066: + cmp r5, 0 + beq _0801007E + cmp r5, r10 + beq _0801007E + cmp r7, 0 + bne _0801007E + movs r0, 0x3 + mov r2, r8 + lsls r0, r2 + orrs r6, r0 + lsls r0, r6, 16 + lsrs r6, r0, 16 +_0801007E: + movs r0, 0x2 + add r8, r0 + movs r1, 0x1 + add r9, r1 + mov r2, r9 + cmp r2, 0x5 + ble _08010002 + ldr r1, _080100B4 @ =gUnknown_2023FE8 + ldr r0, [r1] + movs r2, 0xC3 + lsls r2, 1 + adds r0, r2 + strb r6, [r0] + ldr r0, [r1] + adds r2, 0x1 + adds r1, r0, r2 + lsrs r0, r6, 8 + strb r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080100B0: .4byte gUnknown_2024284 +_080100B4: .4byte gUnknown_2023FE8 + thumb_func_end sub_800FFEC + + thumb_func_start sub_80100B8 +sub_80100B8: @ 80100B8 + push {r4-r7,lr} + ldr r0, _08010120 @ =gUnknown_2023FE8 + ldr r5, [r0] + movs r0, 0xC4 + lsls r0, 1 + adds r4, r5, r0 + bl sub_809C854 + cmp r0, 0x1 + bne _08010134 + movs r2, 0 + ldr r7, _08010124 @ =gUnknown_3005008 + movs r1, 0xC8 + lsls r1, 1 + adds r5, r1 + adds r6, r7, 0 + ldr r3, _08010128 @ =0x000030ec +_080100DA: + adds r0, r4, r2 + ldr r1, [r6] + adds r1, r3 + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x5 + ble _080100DA + adds r1, r4, r2 + movs r0, 0xFF + strb r0, [r1] + movs r2, 0 + adds r3, r5, 0 + ldr r6, _08010124 @ =gUnknown_3005008 + ldr r5, _0801012C @ =0x00003108 +_080100FA: + adds r0, r3, r2 + ldr r1, [r6] + adds r1, r5 + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x11 + ble _080100FA + ldr r0, [r7] + ldr r1, _08010130 @ =0x0000311a + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4, 0x7] + ldr r0, [r7] + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + b _08010174 + .align 2, 0 +_08010120: .4byte gUnknown_2023FE8 +_08010124: .4byte gUnknown_3005008 +_08010128: .4byte 0x000030ec +_0801012C: .4byte 0x00003108 +_08010130: .4byte 0x0000311a +_08010134: + movs r0, 0xAF + bl sub_809C8E4 + lsls r0, 24 + lsrs r0, 24 + bl sub_809C8A0 + adds r3, r0, 0 + movs r2, 0 + movs r0, 0xC8 + lsls r0, 1 + adds r5, r0 +_0801014C: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x5 + ble _0801014C + adds r1, r4, r2 + movs r0, 0xFF + strb r0, [r1] + adds r0, r5, 0 + movs r2, 0 + adds r1, r0, 0 + adds r1, 0x11 +_08010168: + strb r2, [r1] + subs r1, 0x1 + cmp r1, r0 + bge _08010168 + movs r0, 0 + strb r0, [r4, 0x7] +_08010174: + strb r0, [r4, 0x1A] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80100B8 + + thumb_func_start sub_801017C +sub_801017C: @ 801017C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08010234 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08010194 + b _080102C0 +_08010194: + bl sub_809C854 + cmp r0, 0x1 + bne _08010250 + movs r5, 0 + ldr r3, _08010238 @ =gUnknown_2023F54 + ldr r0, _0801023C @ =gUnknown_3005008 + mov r8, r0 + adds r6, r3, 0 + mov r4, r8 + ldr r2, _08010240 @ =0x000030ec + adds r7, r3, 0 + adds r7, 0x38 +_080101AE: + adds r1, r5, r6 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r5, r7 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r5, 0x1 + cmp r5, 0x5 + ble _080101AE + adds r1, r5, r3 + movs r0, 0xFF + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x38 + adds r0, r5, r0 + movs r1, 0x1 + negs r1, r1 + strb r1, [r0] + movs r5, 0 + adds r7, r3, 0 + adds r7, 0x8 + ldr r4, _0801023C @ =gUnknown_3005008 + ldr r2, _08010244 @ =0x00003108 + adds r6, r3, 0 + adds r6, 0x40 +_080101EC: + adds r1, r5, r7 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r5, r6 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r5, 0x1 + cmp r5, 0x11 + ble _080101EC + mov r1, r8 + ldr r0, [r1] + ldr r2, _08010248 @ =0x0000311a + adds r0, r2 + ldrb r1, [r0] + strb r1, [r3, 0x7] + ldrb r0, [r0] + adds r1, r3, 0 + adds r1, 0x3F + strb r0, [r1] + mov r4, r8 + ldr r0, [r4] + ldr r1, _0801024C @ =0x0000311b + adds r0, r1 + ldrb r1, [r0] + strb r1, [r3, 0x1A] + ldrb r1, [r0] + adds r0, r3, 0 + adds r0, 0x52 + strb r1, [r0] + b _080103FC + .align 2, 0 +_08010234: .4byte gUnknown_2022B4C +_08010238: .4byte gUnknown_2023F54 +_0801023C: .4byte gUnknown_3005008 +_08010240: .4byte 0x000030ec +_08010244: .4byte 0x00003108 +_08010248: .4byte 0x0000311a +_0801024C: .4byte 0x0000311b +_08010250: + movs r0, 0xAF + bl sub_809C8E4 + lsls r0, 24 + lsrs r0, 24 + bl sub_809C8A0 + adds r6, r0, 0 + movs r5, 0 + ldr r4, _080102BC @ =gUnknown_2023F54 + adds r7, r4, 0 + adds r7, 0x38 + adds r3, r4, 0 +_0801026A: + adds r1, r5, r4 + adds r2, r6, r5 + ldrb r0, [r2] + strb r0, [r1] + adds r1, r5, r7 + ldrb r0, [r2] + strb r0, [r1] + adds r5, 0x1 + cmp r5, 0x5 + ble _0801026A + adds r1, r5, r3 + movs r0, 0xFF + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x38 + adds r0, r5, r0 + movs r1, 0x1 + negs r1, r1 + strb r1, [r0] + movs r5, 0 + adds r4, r3, 0 + adds r4, 0x8 + movs r1, 0 + adds r2, r3, 0 + adds r2, 0x40 +_0801029C: + adds r0, r5, r4 + strb r1, [r0] + adds r0, r5, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x11 + ble _0801029C + movs r1, 0 + strb r1, [r3, 0x7] + adds r0, r3, 0 + adds r0, 0x3F + strb r1, [r0] + strb r1, [r3, 0x1A] + adds r0, 0x13 + strb r1, [r0] + b _080103FC + .align 2, 0 +_080102BC: .4byte gUnknown_2023F54 +_080102C0: + movs r0, 0x40 + ands r1, r0 + cmp r1, 0 + beq _0801034C + movs r5, 0 + ldr r3, _08010340 @ =gUnknown_2023F54 + ldr r2, _08010344 @ =gUnknown_202273C + mov r9, r2 + adds r6, r3, 0 + movs r4, 0x8 + adds r4, r6 + mov r8, r4 +_080102D8: + lsls r0, r5, 8 + ldr r1, _08010348 @ =gUnknown_202211C + adds r7, r0, r1 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r9 + ldrb r3, [r0, 0x18] + movs r4, 0 + adds r5, 0x1 + mov r10, r5 + lsls r1, r3, 3 + subs r0, r1, r3 + adds r5, r1, 0 + lsls r0, 2 + adds r1, r0, r6 +_080102F8: + adds r0, r7, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r1, 0x1 + adds r4, 0x1 + cmp r4, 0x5 + ble _080102F8 + subs r0, r5, r3 + lsls r0, 2 + adds r1, r4, r0 + adds r1, r6 + movs r2, 0xFF + strb r2, [r1] + movs r4, 0 + mov r2, r8 + adds r1, r0, r2 + adds r2, r7, 0 + adds r2, 0x8 +_0801031C: + adds r0, r2, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r1, 0x1 + adds r4, 0x1 + cmp r4, 0x11 + ble _0801031C + subs r0, r5, r3 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r7, 0x7] + strb r1, [r0, 0x7] + ldrb r1, [r7, 0x1A] + strb r1, [r0, 0x1A] + mov r5, r10 + cmp r5, 0x3 + ble _080102D8 + b _080103FC + .align 2, 0 +_08010340: .4byte gUnknown_2023F54 +_08010344: .4byte gUnknown_202273C +_08010348: .4byte gUnknown_202211C +_0801034C: + movs r5, 0 + ldr r4, _0801040C @ =gUnknown_2023F54 + mov r9, r4 +_08010352: + lsls r0, r5, 8 + ldr r1, _08010410 @ =gUnknown_202211C + adds r7, r0, r1 + movs r4, 0 + adds r2, r5, 0x1 + mov r10, r2 + lsls r0, r5, 3 + mov r8, r0 + adds r1, r5, 0x2 + mov r12, r1 + subs r1, r0, r5 + mov r2, r12 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + mov r2, r9 + adds r3, r0, r2 + lsls r1, 2 + adds r2, r1, r2 +_08010378: + adds r0, r7, r4 + ldrb r1, [r0] + strb r1, [r2] + ldrb r0, [r0] + strb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + adds r4, 0x1 + cmp r4, 0x5 + ble _08010378 + mov r0, r8 + subs r3, r0, r5 + lsls r3, 2 + adds r1, r4, r3 + add r1, r9 + ldrb r0, [r1] + movs r2, 0xFF + orrs r0, r2 + strb r0, [r1] + mov r0, r12 + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + adds r1, r4, r2 + add r1, r9 + ldrb r0, [r1] + movs r4, 0xFF + orrs r0, r4 + strb r0, [r1] + movs r4, 0 + ldr r0, _0801040C @ =gUnknown_2023F54 + adds r0, 0x8 + adds r2, r0 + adds r3, r0 + adds r6, r7, 0 + adds r6, 0x8 +_080103C0: + adds r0, r6, r4 + ldrb r1, [r0] + strb r1, [r3] + ldrb r0, [r0] + strb r0, [r2] + adds r2, 0x1 + adds r3, 0x1 + adds r4, 0x1 + cmp r4, 0x11 + ble _080103C0 + mov r0, r8 + subs r2, r0, r5 + lsls r2, 2 + add r2, r9 + ldrb r0, [r7, 0x7] + strb r0, [r2, 0x7] + mov r1, r12 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + ldrb r1, [r7, 0x7] + strb r1, [r0, 0x7] + ldrb r1, [r7, 0x1A] + strb r1, [r2, 0x1A] + ldrb r1, [r7, 0x1A] + strb r1, [r0, 0x1A] + mov r5, r10 + cmp r5, 0x1 + ble _08010352 +_080103FC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801040C: .4byte gUnknown_2023F54 +_08010410: .4byte gUnknown_202211C + thumb_func_end sub_801017C + + thumb_func_start sub_8010414 +sub_8010414: @ 8010414 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + movs r6, 0 + ldr r0, _08010440 @ =gUnknown_2022118 + ldrh r2, [r0] + movs r1, 0x80 + lsls r1, 1 + mov r12, r0 + cmp r2, r1 + bne _08010458 + cmp r3, 0 + bne _08010448 + ldr r0, _08010444 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0xC + b _0801044E + .align 2, 0 +_08010440: .4byte gUnknown_2022118 +_08010444: .4byte gUnknown_2022B4C +_08010448: + ldr r0, _0801048C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0x8 +_0801044E: + orrs r1, r2 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08010458: + cmp r6, 0 + bne _080104FC + movs r2, 0 + cmp r2, r4 + bge _0801047C + ldr r1, _08010490 @ =gUnknown_2022118 + mov r8, r1 + movs r5, 0x80 + lsls r5, 1 +_0801046A: + adds r1, r5 + adds r2, 0x1 + cmp r2, r4 + bge _0801047C + mov r7, r8 + ldrh r0, [r7] + ldrh r7, [r1] + cmp r0, r7 + beq _0801046A +_0801047C: + cmp r2, r4 + bne _080104A4 + cmp r3, 0 + bne _08010494 + ldr r0, _0801048C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0xC + b _0801049A + .align 2, 0 +_0801048C: .4byte gUnknown_2022B4C +_08010490: .4byte gUnknown_2022118 +_08010494: + ldr r0, _080104EC @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0x8 +_0801049A: + orrs r1, r2 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080104A4: + cmp r6, 0 + bne _080104FC + movs r2, 0 + ldr r5, _080104EC @ =gUnknown_2022B4C + cmp r2, r4 + bge _080104E2 + mov r0, r12 + ldrh r1, [r0] + ldr r0, _080104F0 @ =0x00000201 + cmp r1, r0 + beq _080104DA +_080104BA: + lsls r0, r2, 8 + add r0, r12 + ldrh r0, [r0] + ldr r1, _080104F0 @ =0x00000201 + cmp r0, r1 + bls _080104CA + cmp r2, r3 + bne _080104E2 +_080104CA: + adds r2, 0x1 + cmp r2, r4 + bge _080104E2 + lsls r0, r2, 8 + add r0, r12 + ldrh r0, [r0] + cmp r0, r1 + bne _080104BA +_080104DA: + cmp r2, r3 + beq _080104BA + cmp r2, r3 + bge _080104BA +_080104E2: + cmp r2, r4 + bne _080104F4 + ldr r0, [r5] + movs r1, 0xC + b _080104F8 + .align 2, 0 +_080104EC: .4byte gUnknown_2022B4C +_080104F0: .4byte 0x00000201 +_080104F4: + ldr r0, [r5] + movs r1, 0x8 +_080104F8: + orrs r0, r1 + str r0, [r5] +_080104FC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8010414 + + thumb_func_start sub_8010508 +sub_8010508: @ 8010508 + push {r4-r6,lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_800A404 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08010540 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + strb r4, [r0] + movs r0, 0x1 + adds r5, r4, 0 + eors r5, r0 + ldr r0, _08010544 @ =gUnknown_2023E82 + ldrb r0, [r0] + cmp r0, 0x10 + bls _08010536 + b _080108B8 +_08010536: + lsls r0, 2 + ldr r1, _08010548 @ =_0801054C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08010540: .4byte gUnknown_2023FE8 +_08010544: .4byte gUnknown_2023E82 +_08010548: .4byte _0801054C + .align 2, 0 +_0801054C: + .4byte _08010590 + .4byte _080105D4 + .4byte _08010670 + .4byte _080106F4 + .4byte _0801071C + .4byte _08010898 + .4byte _080108A4 + .4byte _0801074C + .4byte _08010774 + .4byte _08010898 + .4byte _080108A4 + .4byte _080107A4 + .4byte _080107CC + .4byte _08010898 + .4byte _080108A4 + .4byte _08010834 + .4byte _0801084C +_08010590: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080105BC + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + bl sub_80357C8 + ldr r1, _080105CC @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1] +_080105BC: + ldr r0, _080105D0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _080105C6 + b _080108B8 +_080105C6: + bl sub_80FCEA8 + b _080108B8 + .align 2, 0 +_080105CC: .4byte gUnknown_2023E82 +_080105D0: .4byte gUnknown_3003F3C +_080105D4: + ldr r2, _08010640 @ =gUnknown_2022B4C + ldr r1, [r2] + movs r6, 0x2 + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + beq _08010658 + ldr r0, _08010644 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _080105EC + b _080108B8 +_080105EC: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0801062A + ldr r4, _08010648 @ =gUnknown_2023FE8 + ldr r0, [r4] + movs r5, 0xC2 + lsls r5, 1 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _0801064C @ =0x00000185 + adds r0, r1 + strb r6, [r0] + bl sub_800FFEC + bl sub_80100B8 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, r5 + movs r2, 0x20 + bl sub_800A448 + ldr r0, _08010650 @ =gUnknown_2023E82 + strb r6, [r0] +_0801062A: + ldr r0, _08010654 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _08010634 + b _080108B8 +_08010634: + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _080108B8 + .align 2, 0 +_08010640: .4byte gUnknown_2022B4C +_08010644: .4byte gUnknown_3003F64 +_08010648: .4byte gUnknown_2023FE8 +_0801064C: .4byte 0x00000185 +_08010650: .4byte gUnknown_2023E82 +_08010654: .4byte gUnknown_3003F3C +_08010658: + movs r0, 0x4 + orrs r1, r0 + str r1, [r2] + ldr r1, _0801066C @ =gUnknown_2023E82 + movs r0, 0xF + strb r0, [r1] + bl sub_801017C + b _080108B8 + .align 2, 0 +_0801066C: .4byte gUnknown_2023E82 +_08010670: + bl sub_800A4EC + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _0801067E + b _080108B8 +_0801067E: + bl sub_800A550 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_8010414 + bl sub_801017C + ldr r0, _080106E0 @ =sub_800F6FC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080106E4 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r1 + movs r1, 0 + movs r0, 0x87 + lsls r0, 1 + strh r0, [r2, 0xA] + movs r0, 0x5A + strh r0, [r2, 0xC] + strh r1, [r2, 0x12] + ldr r0, _080106E8 @ =gUnknown_2023FE8 + ldr r3, [r0] + movs r4, 0xC3 + lsls r4, 1 + adds r0, r3, r4 + ldrb r1, [r0] + adds r4, 0x1 + adds r0, r3, r4 + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + strh r1, [r2, 0xE] + ldr r0, _080106EC @ =gUnknown_2022118 + lsls r1, r5, 8 + adds r0, 0x2 + adds r1, r0 + ldrh r0, [r1] + strh r0, [r2, 0x10] + bl sub_8044708 + ldr r1, _080106F0 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_080106E0: .4byte sub_800F6FC +_080106E4: .4byte gUnknown_3005090 +_080106E8: .4byte gUnknown_2023FE8 +_080106EC: .4byte gUnknown_2022118 +_080106F0: .4byte gUnknown_2023E82 +_080106F4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08010700 + b _080108B8 +_08010700: + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08010714 @ =gUnknown_2024284 + movs r2, 0xC8 + bl sub_800A448 + ldr r1, _08010718 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_08010714: .4byte gUnknown_2024284 +_08010718: .4byte gUnknown_2023E82 +_0801071C: + bl sub_800A4EC + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _0801072A + b _080108B8 +_0801072A: + bl sub_800A550 + ldr r0, _08010740 @ =gUnknown_202402C + lsls r1, r5, 8 + ldr r2, _08010744 @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xC8 + bl memcpy + ldr r1, _08010748 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_08010740: .4byte gUnknown_202402C +_08010744: .4byte gUnknown_2022118 +_08010748: .4byte gUnknown_2023E82 +_0801074C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08010758 + b _080108B8 +_08010758: + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0801076C @ =gUnknown_202434C + movs r2, 0xC8 + bl sub_800A448 + ldr r1, _08010770 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_0801076C: .4byte gUnknown_202434C +_08010770: .4byte gUnknown_2023E82 +_08010774: + bl sub_800A4EC + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + beq _08010782 + b _080108B8 +_08010782: + bl sub_800A550 + ldr r0, _08010798 @ =gUnknown_20240F4 + lsls r1, r5, 8 + ldr r2, _0801079C @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xC8 + bl memcpy + ldr r1, _080107A0 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_08010798: .4byte gUnknown_20240F4 +_0801079C: .4byte gUnknown_2022118 +_080107A0: .4byte gUnknown_2023E82 +_080107A4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _080107B0 + b _080108B8 +_080107B0: + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080107C4 @ =gUnknown_2024414 + movs r2, 0xC8 + bl sub_800A448 + ldr r1, _080107C8 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_080107C4: .4byte gUnknown_2024414 +_080107C8: .4byte gUnknown_2023E82 +_080107CC: + bl sub_800A4EC + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x3 + bne _080108B8 + bl sub_800A550 + ldr r4, _08010820 @ =gUnknown_20241BC + lsls r1, r5, 8 + ldr r0, _08010824 @ =gUnknown_2022118 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0xC8 + bl memcpy + ldr r1, _08010828 @ =0xfffffe70 + adds r0, r4, r1 + bl sub_8011D0C + ldr r1, _0801082C @ =0xfffffed4 + adds r0, r4, r1 + bl sub_8011D0C + adds r0, r4, 0 + subs r0, 0xC8 + bl sub_8011D0C + adds r0, r4, 0 + subs r0, 0x64 + bl sub_8011D0C + adds r0, r4, 0 + bl sub_8011D0C + adds r0, r4, 0 + adds r0, 0x64 + bl sub_8011D0C + ldr r1, _08010830 @ =gUnknown_2023E82 + b _080108B2 + .align 2, 0 +_08010820: .4byte gUnknown_20241BC +_08010824: .4byte gUnknown_2022118 +_08010828: .4byte 0xfffffe70 +_0801082C: .4byte 0xfffffed4 +_08010830: .4byte gUnknown_2023E82 +_08010834: + bl sub_800D30C + ldr r0, _08010848 @ =gUnknown_2023E82 + ldrb r1, [r0] + adds r1, 0x1 + movs r2, 0 + strb r1, [r0] + strb r2, [r0, 0x1] + strb r2, [r0, 0x2] + b _080108B8 + .align 2, 0 +_08010848: .4byte gUnknown_2023E82 +_0801084C: + ldr r0, _08010880 @ =gUnknown_2023E83 + adds r1, r0, 0x1 + bl sub_8034984 + lsls r0, 24 + cmp r0, 0 + beq _080108B8 + ldr r2, _08010884 @ =gUnknown_3004F80 + ldr r1, _08010888 @ =gUnknown_30030F0 + ldr r0, [r1] + str r0, [r2] + ldr r0, _0801088C @ =sub_80123E4 + str r0, [r1] + ldr r0, _08010890 @ =sub_8011100 + bl sub_8000544 + ldr r2, _08010894 @ =gUnknown_2022B4C + ldr r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080108B8 + movs r0, 0x20 + orrs r1, r0 + str r1, [r2] + b _080108B8 + .align 2, 0 +_08010880: .4byte gUnknown_2023E83 +_08010884: .4byte gUnknown_3004F80 +_08010888: .4byte gUnknown_30030F0 +_0801088C: .4byte sub_80123E4 +_08010890: .4byte sub_8011100 +_08010894: .4byte gUnknown_2022B4C +_08010898: + ldr r0, _080108C0 @ =gUnknown_2023E82 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + movs r1, 0x1 + strb r1, [r0, 0x1] +_080108A4: + ldr r1, _080108C0 @ =gUnknown_2023E82 + ldrb r0, [r1, 0x1] + subs r0, 0x1 + strb r0, [r1, 0x1] + lsls r0, 24 + cmp r0, 0 + bne _080108B8 +_080108B2: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080108B8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080108C0: .4byte gUnknown_2023E82 + thumb_func_end sub_8010508 + + thumb_func_start sub_80108C4 +sub_80108C4: @ 80108C4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + mov r8, r0 + ldr r1, _080109BC @ =gUnknown_2022B58 + mov r9, r1 + movs r0, 0x18 + add r0, r9 + mov r10, r0 +_080108DC: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + ldr r0, _080109C0 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, r8 + lsls r5, r1, 5 + mov r1, r9 + adds r6, r5, r1 + strh r0, [r6] + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + strh r0, [r6, 0x2] + mov r0, r9 + adds r0, 0x4 + adds r7, r5, r0 + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r7, 0 + bl sub_803FBE8 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + strb r0, [r6, 0xF] + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r6, 0x10] + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + strh r0, [r6, 0x12] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + mov r1, r9 + adds r1, 0x14 + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + add r5, r10 + str r0, [r5] + adds r0, r4, 0 + bl sub_803F720 + strb r0, [r6, 0x1C] + adds r0, r7, 0 + bl sub_8009424 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_803FBE8 + mov r4, r8 + adds r4, 0x1 + cmp r0, 0x1 + beq _08010994 + adds r2, r7, 0 + movs r1, 0 + ldrb r0, [r2] + cmp r0, 0xFF + beq _0801097E +_08010974: + adds r1, 0x1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08010974 +_0801097E: + cmp r1, 0x5 + bgt _0801098E + movs r3, 0 +_08010984: + adds r0, r2, r1 + strb r3, [r0] + adds r1, 0x1 + cmp r1, 0x5 + ble _08010984 +_0801098E: + adds r1, r2, r1 + movs r0, 0xFF + strb r0, [r1] +_08010994: + mov r8, r4 + cmp r4, 0x2 + ble _080108DC + ldr r0, _080109C4 @ =gUnknown_2023FE8 + ldr r0, [r0] + movs r1, 0xC2 + lsls r1, 1 + adds r0, r1 + ldr r1, _080109BC @ =gUnknown_2022B58 + movs r2, 0x60 + bl memcpy + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080109BC: .4byte gUnknown_2022B58 +_080109C0: .4byte gUnknown_2024284 +_080109C4: .4byte gUnknown_2023FE8 + thumb_func_end sub_80108C4 + + thumb_func_start sub_80109C8 +sub_80109C8: @ 80109C8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + bl sub_800A404 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _08010A0C @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r0, 0xB5 + strb r6, [r0] + ldr r0, [r4] + movs r1, 0xB0 + adds r1, r0 + mov r9, r1 + adds r0, 0xAE + mov r8, r0 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + ldr r5, _08010A10 @ =gUnknown_2023E82 + ldrb r0, [r5] + cmp r0, 0x1 + beq _08010A5C + cmp r0, 0x1 + bgt _08010A14 + cmp r0, 0 + beq _08010A20 + b _08010B82 + .align 2, 0 +_08010A0C: .4byte gUnknown_2023FE8 +_08010A10: .4byte gUnknown_2023E82 +_08010A14: + cmp r0, 0x2 + beq _08010AFC + cmp r0, 0x3 + bne _08010A1E + b _08010B2A +_08010A1E: + b _08010B82 +_08010A20: + ldr r0, _08010A58 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08010A2A + b _08010B82 +_08010A2A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08010A36 + b _08010B82 +_08010A36: + bl sub_80108C4 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r2, 0xC2 + lsls r2, 1 + adds r1, r2 + movs r2, 0x60 + bl sub_800A448 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _08010B82 + .align 2, 0 +_08010A58: .4byte gUnknown_3003F64 +_08010A5C: + bl sub_800A4EC + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _08010A6A + b _08010B82 +_08010A6A: + bl sub_800A550 + movs r4, 0 + lsls r0, r6, 3 + subs r0, r6 + lsls r5, r0, 2 + movs r7, 0 +_08010A78: + cmp r4, r6 + beq _08010ABA + ldr r2, _08010A9C @ =gUnknown_202273C + adds r0, r7, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _08010AA0 + adds r0, r5, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08010AAC + b _08010ABA + .align 2, 0 +_08010A9C: .4byte gUnknown_202273C +_08010AA0: + adds r0, r5, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08010ABA +_08010AAC: + lsls r1, r4, 8 + ldr r0, _08010AE4 @ =gUnknown_2022118 + adds r1, r0 + ldr r0, _08010AE8 @ =gUnknown_2022B58 + movs r2, 0x60 + bl memcpy +_08010ABA: + adds r7, 0x1C + adds r4, 0x1 + cmp r4, 0x3 + ble _08010A78 + ldr r1, _08010AEC @ =gUnknown_2023E82 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, _08010AF0 @ =gUnknown_30030F0 + ldr r0, [r1, 0x8] + mov r2, r9 + str r0, [r2] + ldr r0, _08010AF4 @ =gUnknown_2022B4C + ldr r0, [r0] + mov r2, r8 + strh r0, [r2] + ldr r0, _08010AF8 @ =sub_80109C8 + str r0, [r1, 0x8] + bl sub_8128198 + b _08010B82 + .align 2, 0 +_08010AE4: .4byte gUnknown_2022118 +_08010AE8: .4byte gUnknown_2022B58 +_08010AEC: .4byte gUnknown_2023E82 +_08010AF0: .4byte gUnknown_30030F0 +_08010AF4: .4byte gUnknown_2022B4C +_08010AF8: .4byte sub_80109C8 +_08010AFC: + ldr r0, _08010B1C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08010B82 + movs r0, 0x3 + strb r0, [r5] + ldr r0, _08010B20 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08010B24 + bl sub_800AB9C + b _08010B82 + .align 2, 0 +_08010B1C: .4byte gUnknown_2037AB8 +_08010B20: .4byte gUnknown_3003F3C +_08010B24: + bl sub_800AAC0 + b _08010B82 +_08010B2A: + ldr r0, _08010B54 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08010B64 + bl sub_80FA4F8 + lsls r0, 24 + cmp r0, 0 + beq _08010B82 + ldr r1, _08010B58 @ =gUnknown_2022B4C + mov r2, r8 + ldrh r0, [r2] + str r0, [r1] + ldr r1, _08010B5C @ =gUnknown_30030F0 + mov r2, r9 + ldr r0, [r2] + str r0, [r1, 0x8] + ldr r0, _08010B60 @ =sub_800FE24 + bl sub_8000544 + b _08010B82 + .align 2, 0 +_08010B54: .4byte gUnknown_3003F3C +_08010B58: .4byte gUnknown_2022B4C +_08010B5C: .4byte gUnknown_30030F0 +_08010B60: .4byte sub_800FE24 +_08010B64: + ldr r0, _08010B90 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08010B82 + ldr r1, _08010B94 @ =gUnknown_2022B4C + mov r2, r8 + ldrh r0, [r2] + str r0, [r1] + ldr r1, _08010B98 @ =gUnknown_30030F0 + mov r2, r9 + ldr r0, [r2] + str r0, [r1, 0x8] + ldr r0, _08010B9C @ =sub_800FE24 + bl sub_8000544 +_08010B82: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08010B90: .4byte gUnknown_3003F64 +_08010B94: .4byte gUnknown_2022B4C +_08010B98: .4byte gUnknown_30030F0 +_08010B9C: .4byte sub_800FE24 + thumb_func_end sub_80109C8 + + thumb_func_start sub_8010BA0 +sub_8010BA0: @ 8010BA0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + bl sub_800A404 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08010BD8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + strb r7, [r0] + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + ldr r0, _08010BDC @ =gUnknown_2023E82 + ldrb r0, [r0] + cmp r0, 0xC + bls _08010BCC + b _080110F0 +_08010BCC: + lsls r0, 2 + ldr r1, _08010BE0 @ =_08010BE4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08010BD8: .4byte gUnknown_2023FE8 +_08010BDC: .4byte gUnknown_2023E82 +_08010BE0: .4byte _08010BE4 + .align 2, 0 +_08010BE4: + .4byte _08010C18 + .4byte _08010C5C + .4byte _08010CD4 + .4byte _08010DB6 + .4byte _08010DE0 + .4byte _080110D0 + .4byte _080110DC + .4byte _08010ED8 + .4byte _08010F00 + .4byte _080110D0 + .4byte _080110DC + .4byte _0801106C + .4byte _08011084 +_08010C18: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08010C44 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + bl sub_80357C8 + ldr r1, _08010C54 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1] +_08010C44: + ldr r0, _08010C58 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _08010C4E + b _080110F0 +_08010C4E: + bl sub_80FCEA8 + b _080110F0 + .align 2, 0 +_08010C54: .4byte gUnknown_2023E82 +_08010C58: .4byte gUnknown_3003F3C +_08010C5C: + ldr r0, _08010CC0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08010C66 + b _080110F0 +_08010C66: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08010CAA + ldr r4, _08010CC4 @ =gUnknown_2023FE8 + ldr r0, [r4] + movs r5, 0xC2 + lsls r5, 1 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _08010CC8 @ =0x00000185 + adds r1, r0, r2 + movs r0, 0x2 + strb r0, [r1] + bl sub_800FFEC + bl sub_80100B8 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, r5 + movs r2, 0x20 + bl sub_800A448 + ldr r1, _08010CCC @ =gUnknown_2023E82 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08010CAA: + ldr r0, _08010CD0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _08010CB4 + b _080110F0 +_08010CB4: + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _080110F0 + .align 2, 0 +_08010CC0: .4byte gUnknown_3003F64 +_08010CC4: .4byte gUnknown_2023FE8 +_08010CC8: .4byte 0x00000185 +_08010CCC: .4byte gUnknown_2023E82 +_08010CD0: .4byte gUnknown_3003F3C +_08010CD4: + bl sub_800A4EC + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _08010CE2 + b _080110F0 +_08010CE2: + bl sub_800A550 + movs r0, 0x4 + adds r1, r7, 0 + bl sub_8010414 + bl sub_801017C + bl sub_8044708 + ldr r0, _08010D4C @ =gUnknown_201C000 + ldr r1, _08010D50 @ =gUnknown_2024284 + movs r2, 0x96 + lsls r2, 1 + bl memcpy + ldr r0, _08010D54 @ =sub_800F6FC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08010D58 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + movs r0, 0x87 + lsls r0, 1 + strh r0, [r1, 0xA] + movs r0, 0x5A + strh r0, [r1, 0xC] + strh r2, [r1, 0x12] + strh r2, [r1, 0xE] + strh r2, [r1, 0x10] + adds r2, r1, 0 + ldr r0, _08010D5C @ =gUnknown_2022118 + adds r3, r0, 0x2 + ldr r5, _08010D60 @ =gUnknown_202273C + movs r4, 0x3F + movs r7, 0x80 + lsls r7, 1 + movs r6, 0x3 +_08010D3A: + ldrh r0, [r5, 0x18] + cmp r0, 0x1 + beq _08010D76 + cmp r0, 0x1 + bgt _08010D64 + cmp r0, 0 + beq _08010D6E + b _08010D9C + .align 2, 0 +_08010D4C: .4byte gUnknown_201C000 +_08010D50: .4byte gUnknown_2024284 +_08010D54: .4byte sub_800F6FC +_08010D58: .4byte gUnknown_3005090 +_08010D5C: .4byte gUnknown_2022118 +_08010D60: .4byte gUnknown_202273C +_08010D64: + cmp r0, 0x2 + beq _08010D7E + cmp r0, 0x3 + beq _08010D8E + b _08010D9C +_08010D6E: + ldrh r0, [r3] + adds r1, r4, 0 + ands r1, r0 + b _08010D86 +_08010D76: + ldrh r0, [r3] + adds r1, r4, 0 + ands r1, r0 + b _08010D96 +_08010D7E: + ldrh r0, [r3] + adds r1, r4, 0 + ands r1, r0 + lsls r1, 6 +_08010D86: + ldrh r0, [r2, 0xE] + orrs r1, r0 + strh r1, [r2, 0xE] + b _08010D9C +_08010D8E: + ldrh r0, [r3] + adds r1, r4, 0 + ands r1, r0 + lsls r1, 6 +_08010D96: + ldrh r0, [r2, 0x10] + orrs r1, r0 + strh r1, [r2, 0x10] +_08010D9C: + adds r3, r7 + adds r5, 0x1C + subs r6, 0x1 + cmp r6, 0 + bge _08010D3A + bl sub_803DA14 + bl sub_803DA34 + ldr r1, _08010DD8 @ =gUnknown_2023E82 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08010DB6: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08010DC2 + b _080110F0 +_08010DC2: + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08010DDC @ =gUnknown_201C000 + movs r2, 0xC8 + bl sub_800A448 + ldr r1, _08010DD8 @ =gUnknown_2023E82 + b _080110EA + .align 2, 0 +_08010DD8: .4byte gUnknown_2023E82 +_08010DDC: .4byte gUnknown_201C000 +_08010DE0: + bl sub_800A4EC + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _08010DEE + b _080110F0 +_08010DEE: + bl sub_800A550 + movs r6, 0 + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + mov r8, r0 + ldr r4, _08010E18 @ =gUnknown_2022118 + movs r5, 0 +_08010E00: + cmp r6, r7 + bne _08010E34 + ldr r0, _08010E1C @ =gUnknown_202273C + adds r0, r5, r0 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _08010E20 + cmp r0, 0x1 + bge _08010E2C + cmp r0, 0 + beq _08010E24 + b _08010EBE + .align 2, 0 +_08010E18: .4byte gUnknown_2022118 +_08010E1C: .4byte gUnknown_202273C +_08010E20: + cmp r0, 0x3 + bne _08010EBE +_08010E24: + ldr r0, _08010E28 @ =gUnknown_2024284 + b _08010EA4 + .align 2, 0 +_08010E28: .4byte gUnknown_2024284 +_08010E2C: + ldr r0, _08010E30 @ =gUnknown_20243B0 + b _08010EA4 + .align 2, 0 +_08010E30: .4byte gUnknown_20243B0 +_08010E34: + ldr r2, _08010E54 @ =gUnknown_202273C + adds r0, r5, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _08010E58 + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08010E66 + b _08010E8C + .align 2, 0 +_08010E54: .4byte gUnknown_202273C +_08010E58: + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08010E8C +_08010E66: + adds r0, r5, r2 + ldrh r2, [r0, 0x18] + cmp r2, 0x2 + bgt _08010E78 + cmp r2, 0x1 + bge _08010E84 + cmp r2, 0 + beq _08010E7C + b _08010EBE +_08010E78: + cmp r2, 0x3 + bne _08010EBE +_08010E7C: + ldr r0, _08010E80 @ =gUnknown_2024284 + b _08010EA4 + .align 2, 0 +_08010E80: .4byte gUnknown_2024284 +_08010E84: + ldr r0, _08010E88 @ =gUnknown_20243B0 + b _08010EA4 + .align 2, 0 +_08010E88: .4byte gUnknown_20243B0 +_08010E8C: + adds r0, r5, r2 + ldrh r2, [r0, 0x18] + cmp r2, 0x2 + bgt _08010E9E + cmp r2, 0x1 + bge _08010EB4 + cmp r2, 0 + beq _08010EA2 + b _08010EBE +_08010E9E: + cmp r2, 0x3 + bne _08010EBE +_08010EA2: + ldr r0, _08010EB0 @ =gUnknown_202402C +_08010EA4: + adds r1, r4, 0 + movs r2, 0xC8 + bl memcpy + b _08010EBE + .align 2, 0 +_08010EB0: .4byte gUnknown_202402C +_08010EB4: + ldr r0, _08010ED0 @ =gUnknown_2024158 + adds r1, r4, 0 + movs r2, 0xC8 + bl memcpy +_08010EBE: + movs r2, 0x80 + lsls r2, 1 + adds r4, r2 + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08010E00 + ldr r1, _08010ED4 @ =gUnknown_2023E82 + b _080110EA + .align 2, 0 +_08010ED0: .4byte gUnknown_2024158 +_08010ED4: .4byte gUnknown_2023E82 +_08010ED8: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08010EE4 + b _080110F0 +_08010EE4: + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08010EF8 @ =gUnknown_201C0C8 + movs r2, 0x64 + bl sub_800A448 + ldr r1, _08010EFC @ =gUnknown_2023E82 + b _080110EA + .align 2, 0 +_08010EF8: .4byte gUnknown_201C0C8 +_08010EFC: .4byte gUnknown_2023E82 +_08010F00: + bl sub_800A4EC + movs r1, 0xF + ands r1, r0 + cmp r1, 0xF + beq _08010F0E + b _080110F0 +_08010F0E: + bl sub_800A550 + movs r6, 0 + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + mov r8, r0 + ldr r4, _08010F38 @ =gUnknown_2022118 + movs r5, 0 +_08010F20: + cmp r6, r7 + bne _08010F54 + ldr r0, _08010F3C @ =gUnknown_202273C + adds r0, r5, r0 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _08010F40 + cmp r0, 0x1 + bge _08010F4C + cmp r0, 0 + beq _08010F44 + b _08010FDE + .align 2, 0 +_08010F38: .4byte gUnknown_2022118 +_08010F3C: .4byte gUnknown_202273C +_08010F40: + cmp r0, 0x3 + bne _08010FDE +_08010F44: + ldr r0, _08010F48 @ =gUnknown_202434C + b _08010FC4 + .align 2, 0 +_08010F48: .4byte gUnknown_202434C +_08010F4C: + ldr r0, _08010F50 @ =gUnknown_2024478 + b _08010FC4 + .align 2, 0 +_08010F50: .4byte gUnknown_2024478 +_08010F54: + ldr r2, _08010F74 @ =gUnknown_202273C + adds r0, r5, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _08010F78 + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08010F86 + b _08010FAC + .align 2, 0 +_08010F74: .4byte gUnknown_202273C +_08010F78: + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08010FAC +_08010F86: + adds r0, r5, r2 + ldrh r2, [r0, 0x18] + cmp r2, 0x2 + bgt _08010F98 + cmp r2, 0x1 + bge _08010FA4 + cmp r2, 0 + beq _08010F9C + b _08010FDE +_08010F98: + cmp r2, 0x3 + bne _08010FDE +_08010F9C: + ldr r0, _08010FA0 @ =gUnknown_202434C + b _08010FC4 + .align 2, 0 +_08010FA0: .4byte gUnknown_202434C +_08010FA4: + ldr r0, _08010FA8 @ =gUnknown_2024478 + b _08010FC4 + .align 2, 0 +_08010FA8: .4byte gUnknown_2024478 +_08010FAC: + adds r0, r5, r2 + ldrh r2, [r0, 0x18] + cmp r2, 0x2 + bgt _08010FBE + cmp r2, 0x1 + bge _08010FD4 + cmp r2, 0 + beq _08010FC2 + b _08010FDE +_08010FBE: + cmp r2, 0x3 + bne _08010FDE +_08010FC2: + ldr r0, _08010FD0 @ =gUnknown_20240F4 +_08010FC4: + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy + b _08010FDE + .align 2, 0 +_08010FD0: .4byte gUnknown_20240F4 +_08010FD4: + ldr r0, _0801105C @ =gUnknown_2024220 + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy +_08010FDE: + movs r2, 0x80 + lsls r2, 1 + adds r4, r2 + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08010F20 + ldr r4, _08011060 @ =gUnknown_2024284 + adds r0, r4, 0 + bl sub_8011D0C + adds r0, r4, 0 + adds r0, 0x64 + bl sub_8011D0C + adds r0, r4, 0 + adds r0, 0xC8 + bl sub_8011D0C + movs r1, 0x96 + lsls r1, 1 + adds r0, r4, r1 + bl sub_8011D0C + movs r2, 0xC8 + lsls r2, 1 + adds r0, r4, r2 + bl sub_8011D0C + movs r1, 0xFA + lsls r1, 1 + adds r0, r4, r1 + bl sub_8011D0C + ldr r4, _08011064 @ =gUnknown_202402C + adds r0, r4, 0 + bl sub_8011D0C + adds r0, r4, 0 + adds r0, 0x64 + bl sub_8011D0C + adds r0, r4, 0 + adds r0, 0xC8 + bl sub_8011D0C + movs r2, 0x96 + lsls r2, 1 + adds r0, r4, r2 + bl sub_8011D0C + movs r1, 0xC8 + lsls r1, 1 + adds r0, r4, r1 + bl sub_8011D0C + movs r2, 0xFA + lsls r2, 1 + adds r0, r4, r2 + bl sub_8011D0C + ldr r1, _08011068 @ =gUnknown_2023E82 + b _080110EA + .align 2, 0 +_0801105C: .4byte gUnknown_2024220 +_08011060: .4byte gUnknown_2024284 +_08011064: .4byte gUnknown_202402C +_08011068: .4byte gUnknown_2023E82 +_0801106C: + bl sub_800D30C + ldr r0, _08011080 @ =gUnknown_2023E82 + ldrb r1, [r0] + adds r1, 0x1 + movs r2, 0 + strb r1, [r0] + strb r2, [r0, 0x1] + strb r2, [r0, 0x2] + b _080110F0 + .align 2, 0 +_08011080: .4byte gUnknown_2023E82 +_08011084: + ldr r0, _080110B8 @ =gUnknown_2023E83 + adds r1, r0, 0x1 + bl sub_8034984 + lsls r0, 24 + cmp r0, 0 + beq _080110F0 + ldr r2, _080110BC @ =gUnknown_3004F80 + ldr r1, _080110C0 @ =gUnknown_30030F0 + ldr r0, [r1] + str r0, [r2] + ldr r0, _080110C4 @ =sub_80123E4 + str r0, [r1] + ldr r0, _080110C8 @ =sub_8011100 + bl sub_8000544 + ldr r2, _080110CC @ =gUnknown_2022B4C + ldr r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080110F0 + movs r0, 0x20 + orrs r1, r0 + str r1, [r2] + b _080110F0 + .align 2, 0 +_080110B8: .4byte gUnknown_2023E83 +_080110BC: .4byte gUnknown_3004F80 +_080110C0: .4byte gUnknown_30030F0 +_080110C4: .4byte sub_80123E4 +_080110C8: .4byte sub_8011100 +_080110CC: .4byte gUnknown_2022B4C +_080110D0: + ldr r0, _080110FC @ =gUnknown_2023E82 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + movs r1, 0x1 + strb r1, [r0, 0x1] +_080110DC: + ldr r1, _080110FC @ =gUnknown_2023E82 + ldrb r0, [r1, 0x1] + subs r0, 0x1 + strb r0, [r1, 0x1] + lsls r0, 24 + cmp r0, 0 + bne _080110F0 +_080110EA: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080110F0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080110FC: .4byte gUnknown_2023E82 + thumb_func_end sub_8010BA0 + + thumb_func_start sub_8011100 +sub_8011100: @ 8011100 + push {lr} + sub sp, 0x4 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_8002DE8 + bl sub_80704D0 + bl sub_8077578 + ldr r0, _08011160 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08011158 + ldr r0, _08011164 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + beq _08011158 + ldr r2, _08011168 @ =gUnknown_20370D0 + ldr r1, _0801116C @ =gUnknown_2023E8A + movs r0, 0x3 + strb r0, [r1] + movs r0, 0x3 + strh r0, [r2] + bl sub_8070A84 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08011170 @ =sub_80111BC + bl sub_8000544 +_08011158: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08011160: .4byte gUnknown_30030F0 +_08011164: .4byte gUnknown_2022B4C +_08011168: .4byte gUnknown_20370D0 +_0801116C: .4byte gUnknown_2023E8A +_08011170: .4byte sub_80111BC + thumb_func_end sub_8011100 + + thumb_func_start sub_8011174 +sub_8011174: @ 8011174 + push {lr} + ldr r1, _080111AC @ =gUnknown_30030F0 + ldr r0, _080111B0 @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r1] + ldr r2, _080111B4 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r2, 0x15] + ldr r0, _080111B8 @ =0x00000439 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + bl sub_803DA34 + movs r0, 0x53 + bl m4aSongNumStop + bl sub_80359AC + bl sub_8033DF8 + bl sub_802E138 + pop {r0} + bx r0 + .align 2, 0 +_080111AC: .4byte gUnknown_30030F0 +_080111B0: .4byte gUnknown_3004F80 +_080111B4: .4byte gUnknown_2039600 +_080111B8: .4byte 0x00000439 + thumb_func_end sub_8011174 + + thumb_func_start sub_80111BC +sub_80111BC: @ 80111BC + push {lr} + bl sub_80704D0 + ldr r0, _080111E4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080111DE + bl sub_8011174 + bl sub_8003ECC + ldr r0, _080111E8 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 +_080111DE: + pop {r0} + bx r0 + .align 2, 0 +_080111E4: .4byte gUnknown_2037AB8 +_080111E8: .4byte gUnknown_30030F0 + thumb_func_end sub_80111BC + + thumb_func_start sub_80111EC +sub_80111EC: @ 80111EC + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r1, _080111F8 @ =sub_80111FC + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080111F8: .4byte sub_80111FC + thumb_func_end sub_80111EC + + thumb_func_start sub_80111FC +sub_80111FC: @ 80111FC + push {r4-r7,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r6, [r5, r0] + cmp r6, 0x1 + beq _08011236 + cmp r6, 0x1 + bgt _08011212 + cmp r6, 0 + beq _08011218 + b _080112D0 +_08011212: + cmp r6, 0x2 + beq _080112A0 + b _080112D0 +_08011218: + ldr r4, _08011298 @ =gUnknown_2022BC0 + movs r0, 0x80 + lsls r0, 5 + bl sub_8002BB0 + str r0, [r4] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + strh r6, [r5, 0x30] + ldr r0, _0801129C @ =0x00000281 + strh r0, [r5, 0x32] + strh r6, [r5, 0x34] + movs r0, 0x1 + strh r0, [r5, 0x36] +_08011236: + ldrh r0, [r5, 0x36] + subs r0, 0x1 + strh r0, [r5, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _080112D0 + movs r0, 0x2 + strh r0, [r5, 0x36] + movs r1, 0x30 + ldrsh r2, [r5, r1] + movs r3, 0x34 + ldrsh r0, [r5, r3] + lsls r0, 5 + adds r2, r0 + movs r3, 0x32 + ldrsh r1, [r5, r3] + subs r1, r0 + movs r3, 0 + ldr r0, _08011298 @ =gUnknown_2022BC0 + mov r12, r0 + lsls r7, r2, 1 + movs r4, 0x3D + lsls r6, r1, 1 +_08011264: + mov r1, r12 + ldr r0, [r1] + lsls r2, r3, 1 + adds r1, r7, r0 + adds r1, r2, r1 + strh r4, [r1] + adds r0, r6, r0 + adds r2, r0 + strh r4, [r2] + adds r3, 0x2 + cmp r3, 0x1D + ble _08011264 + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080112D0 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r0, 0x20 + strh r0, [r5, 0x30] + b _080112D0 + .align 2, 0 +_08011298: .4byte gUnknown_2022BC0 +_0801129C: .4byte 0x00000281 +_080112A0: + ldrh r0, [r5, 0x30] + subs r0, 0x1 + strh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080112D0 + ldr r4, _080112D8 @ =gUnknown_2022BC0 + ldr r0, [r4] + cmp r0, 0 + beq _080112CA + movs r2, 0x80 + lsls r2, 5 + movs r1, 0 + bl memset + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080112CA: + ldr r0, _080112DC @ =sub_800FD9C + bl sub_8000544 +_080112D0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080112D8: .4byte gUnknown_2022BC0 +_080112DC: .4byte sub_800FD9C + thumb_func_end sub_80111FC + + thumb_func_start sub_80112E0 +sub_80112E0: @ 80112E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + str r0, [sp, 0x10] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x14] + movs r0, 0 + mov r9, r0 + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _08011304 + movs r0, 0 + b _080116AC +_08011304: + ldr r0, _08011334 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08011338 @ =0x00080908 + ands r0, r1 + ldr r1, [sp, 0x14] + lsls r1, 2 + str r1, [sp, 0x20] + cmp r0, 0x8 + beq _08011318 + b _0801169C +_08011318: + bl sub_803DA34 + movs r2, 0 + str r2, [sp, 0x18] + ldr r2, _0801133C @ =gUnknown_823EAC8 + ldr r1, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r1, r3 + lsls r0, 3 + adds r0, r2 + adds r0, 0x20 + ldr r4, [sp, 0x18] + b _0801167E + .align 2, 0 +_08011334: .4byte gUnknown_2022B4C +_08011338: .4byte 0x00080908 +_0801133C: .4byte gUnknown_823EAC8 +_08011340: + ldr r3, [sp, 0x14] + adds r0, r1, r3 + lsls r0, 3 + adds r1, r0, r2 + ldrb r0, [r1, 0x18] + cmp r0, 0x1 + bne _08011354 + movs r4, 0x80 + mov r10, r4 + b _08011366 +_08011354: + ldrb r1, [r1, 0x2] + movs r0, 0x80 + ands r0, r1 + movs r1, 0x88 + mov r10, r1 + cmp r0, 0 + beq _08011366 + movs r2, 0x78 + mov r10, r2 +_08011366: + movs r6, 0 + ldr r0, _080113BC @ =gUnknown_823EAC8 + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r1, r2, r3 + lsls r1, 3 + adds r3, r0, 0x4 + adds r1, r3 + ldrb r1, [r1] + adds r4, r0, 0 + ldr r0, [sp, 0x18] + adds r0, 0x1 + str r0, [sp, 0x1C] + cmp r1, 0xFF + beq _0801139E +_08011384: + ldr r0, [sp, 0x14] + adds r1, r2, r0 + lsls r1, 3 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08011384 +_0801139E: + adds r2, r4, 0 + ldr r1, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r1, r3 + lsls r1, r0, 3 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08011454 + cmp r0, 0x1 + bgt _080113C0 + cmp r0, 0 + beq _080113CE + b _0801166C + .align 2, 0 +_080113BC: .4byte gUnknown_823EAC8 +_080113C0: + cmp r0, 0x2 + bne _080113C6 + b _08011514 +_080113C6: + cmp r0, 0x3 + bne _080113CC + b _080115A8 +_080113CC: + b _0801166C +_080113CE: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r4, [r0] + movs r6, 0 + ldr r0, [sp, 0x18] + lsls r2, r0, 3 + adds r0, r2, r4 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, _08011450 @ =gUnknown_8245EE0 + adds r0, r1 + ldrb r0, [r0] + adds r5, r2, 0 + cmp r0, 0xFF + beq _08011410 + adds r3, r1, 0 + movs r7, 0xB +_080113F4: + adds r0, r2, r4 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r7 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080113F4 +_08011410: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + adds r4, r5, r4 + ldrh r1, [r4] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, [sp, 0x18] + movs r1, 0x64 + adds r0, r3, 0 + muls r0, r1 + ldr r2, [sp, 0x10] + adds r0, r2, r0 + ldrh r1, [r4, 0x4] + ldrb r2, [r4, 0x2] + movs r3, 0x1 + str r3, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r3, 0x2 + str r3, [sp, 0x8] + movs r3, 0 + str r3, [sp, 0xC] + adds r3, r6, 0 + bl sub_803DA54 + b _0801166C + .align 2, 0 +_08011450: .4byte gUnknown_8245EE0 +_08011454: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r7, [r0] + movs r6, 0 + ldr r4, [sp, 0x18] + lsls r2, r4, 4 + adds r0, r2, r7 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, _0801150C @ =gUnknown_8245EE0 + adds r0, r1 + ldrb r0, [r0] + mov r8, r2 + cmp r0, 0xFF + beq _08011496 + adds r3, r1, 0 + movs r4, 0xB +_0801147A: + adds r0, r2, r7 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r4 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _0801147A +_08011496: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + mov r3, r8 + adds r4, r3, r7 + ldrh r1, [r4] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, [sp, 0x18] + movs r1, 0x64 + adds r5, r0, 0 + muls r5, r1 + ldr r2, [sp, 0x10] + adds r5, r2, r5 + ldrh r1, [r4, 0x4] + ldrb r2, [r4, 0x2] + movs r0, 0x1 + str r0, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r5, 0 + adds r3, r6, 0 + bl sub_803DA54 + movs r6, 0 + mov r0, r8 + adds r0, 0x6 + adds r4, r7, r0 +_080114E0: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_804037C + adds r1, r6, 0 + adds r1, 0x11 + ldrh r0, [r4] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, _08011510 @ =gUnknown_8250C08 + adds r2, r0 + adds r0, r5, 0 + bl sub_804037C + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _080114E0 + b _0801166C + .align 2, 0 +_0801150C: .4byte gUnknown_8245EE0 +_08011510: .4byte gUnknown_8250C08 +_08011514: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r4, [r0] + movs r6, 0 + ldr r0, [sp, 0x18] + lsls r2, r0, 3 + adds r0, r2, r4 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, _080115A4 @ =gUnknown_8245EE0 + adds r0, r1 + ldrb r0, [r0] + adds r5, r2, 0 + cmp r0, 0xFF + beq _08011556 + adds r3, r1, 0 + movs r7, 0xB +_0801153A: + adds r0, r2, r4 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r7 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _0801153A +_08011556: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + adds r5, r4 + ldrh r1, [r5] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, [sp, 0x18] + movs r0, 0x64 + adds r4, r3, 0 + muls r4, r0 + ldr r1, [sp, 0x10] + adds r4, r1, r4 + ldrh r1, [r5, 0x4] + ldrb r2, [r5, 0x2] + movs r0, 0x1 + str r0, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_803DA54 + adds r5, 0x6 + adds r0, r4, 0 + movs r1, 0xC + adds r2, r5, 0 + bl sub_804037C + b _0801166C + .align 2, 0 +_080115A4: .4byte gUnknown_8245EE0 +_080115A8: + adds r0, r4, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r7, [r0] + movs r6, 0 + ldr r4, [sp, 0x18] + lsls r2, r4, 4 + adds r0, r2, r7 + ldrh r1, [r0, 0x4] + movs r0, 0xB + muls r0, r1 + ldr r1, _080116BC @ =gUnknown_8245EE0 + adds r0, r1 + ldrb r0, [r0] + mov r8, r2 + cmp r0, 0xFF + beq _080115EA + adds r3, r1, 0 + movs r4, 0xB +_080115CE: + adds r0, r2, r7 + ldrh r0, [r0, 0x4] + adds r1, r0, 0 + muls r1, r4 + adds r0, r6, r1 + adds r0, r3 + ldrb r0, [r0] + add r9, r0 + adds r6, 0x1 + adds r1, r6, r1 + adds r1, r3 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080115CE +_080115EA: + mov r2, r9 + lsls r0, r2, 8 + add r10, r0 + mov r3, r8 + adds r5, r3, r7 + ldrh r1, [r5] + lsls r0, r1, 5 + subs r0, r1 + movs r1, 0xFF + bl __divsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, [sp, 0x18] + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r2, [sp, 0x10] + adds r4, r2, r4 + ldrh r1, [r5, 0x4] + ldrb r2, [r5, 0x2] + movs r0, 0x1 + str r0, [sp] + mov r3, r10 + str r3, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_803DA54 + adds r5, 0x6 + adds r0, r4, 0 + movs r1, 0xC + adds r2, r5, 0 + bl sub_804037C + movs r6, 0 + adds r5, r4, 0 + mov r0, r8 + adds r0, 0x8 + adds r4, r7, r0 +_08011642: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_804037C + adds r1, r6, 0 + adds r1, 0x11 + ldrh r0, [r4] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, _080116C0 @ =gUnknown_8250C08 + adds r2, r0 + adds r0, r5, 0 + bl sub_804037C + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08011642 +_0801166C: + ldr r4, [sp, 0x1C] + str r4, [sp, 0x18] + ldr r2, _080116C4 @ =gUnknown_823EAC8 + ldr r1, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r1, r3 + lsls r0, 3 + adds r0, r2 + adds r0, 0x20 +_0801167E: + ldrb r0, [r0] + cmp r4, r0 + bge _08011686 + b _08011340 +_08011686: + ldr r2, _080116C8 @ =gUnknown_2022B4C + ldr r1, _080116C4 @ =gUnknown_823EAC8 + ldr r4, [sp, 0x20] + ldr r3, [sp, 0x14] + adds r0, r4, r3 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0x18] + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] +_0801169C: + ldr r0, _080116C4 @ =gUnknown_823EAC8 + ldr r4, [sp, 0x20] + ldr r2, [sp, 0x14] + adds r1, r4, r2 + lsls r1, 3 + adds r1, r0 + adds r1, 0x20 + ldrb r0, [r1] +_080116AC: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080116BC: .4byte gUnknown_8245EE0 +_080116C0: .4byte gUnknown_8250C08 +_080116C4: .4byte gUnknown_823EAC8 +_080116C8: .4byte gUnknown_2022B4C + thumb_func_end sub_80112E0 + + thumb_func_start sub_80116CC +sub_80116CC: @ 80116CC + push {lr} + ldr r0, _080116EC @ =0x04000006 + ldrh r0, [r0] + subs r0, 0x6F + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x30 + bhi _080116E6 + ldr r1, _080116F0 @ =0x04000008 + movs r2, 0x98 + lsls r2, 8 + adds r0, r2, 0 + strh r0, [r1] +_080116E6: + pop {r0} + bx r0 + .align 2, 0 +_080116EC: .4byte 0x04000006 +_080116F0: .4byte 0x04000008 + thumb_func_end sub_80116CC + + thumb_func_start sub_80116F4 +sub_80116F4: @ 80116F4 + push {lr} + bl sub_8044EC8 + ldr r0, _08011788 @ =gUnknown_2022974 + ldrh r1, [r0] + movs r0, 0x10 + bl sub_8000A38 + ldr r0, _0801178C @ =gUnknown_2022976 + ldrh r1, [r0] + movs r0, 0x12 + bl sub_8000A38 + ldr r0, _08011790 @ =gUnknown_2022978 + ldrh r1, [r0] + movs r0, 0x14 + bl sub_8000A38 + ldr r0, _08011794 @ =gUnknown_202297A + ldrh r1, [r0] + movs r0, 0x16 + bl sub_8000A38 + ldr r0, _08011798 @ =gUnknown_202297C + ldrh r1, [r0] + movs r0, 0x18 + bl sub_8000A38 + ldr r0, _0801179C @ =gUnknown_202297E + ldrh r1, [r0] + movs r0, 0x1A + bl sub_8000A38 + ldr r0, _080117A0 @ =gUnknown_2022980 + ldrh r1, [r0] + movs r0, 0x1C + bl sub_8000A38 + ldr r0, _080117A4 @ =gUnknown_2022982 + ldrh r1, [r0] + movs r0, 0x1E + bl sub_8000A38 + ldr r0, _080117A8 @ =gUnknown_2022984 + ldrh r1, [r0] + movs r0, 0x40 + bl sub_8000A38 + ldr r0, _080117AC @ =gUnknown_2022986 + ldrh r1, [r0] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, _080117B0 @ =gUnknown_2022988 + ldrh r1, [r0] + movs r0, 0x42 + bl sub_8000A38 + ldr r0, _080117B4 @ =gUnknown_202298A + ldrh r1, [r0] + movs r0, 0x46 + bl sub_8000A38 + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + bl sub_8087F54 + pop {r0} + bx r0 + .align 2, 0 +_08011788: .4byte gUnknown_2022974 +_0801178C: .4byte gUnknown_2022976 +_08011790: .4byte gUnknown_2022978 +_08011794: .4byte gUnknown_202297A +_08011798: .4byte gUnknown_202297C +_0801179C: .4byte gUnknown_202297E +_080117A0: .4byte gUnknown_2022980 +_080117A4: .4byte gUnknown_2022982 +_080117A8: .4byte gUnknown_2022984 +_080117AC: .4byte gUnknown_2022986 +_080117B0: .4byte gUnknown_2022988 +_080117B4: .4byte gUnknown_202298A + thumb_func_end sub_80116F4 + + thumb_func_start nullsub_9 +nullsub_9: @ 80117B8 + bx lr + thumb_func_end nullsub_9 + + thumb_func_start sub_80117BC +sub_80117BC: @ 80117BC + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080117DC + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + lsrs r0, 8 + ldrh r1, [r5, 0x30] + adds r0, r1 + strh r0, [r5, 0x20] + b _080117EE +_080117DC: + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + asrs r0, 8 + ldrh r1, [r5, 0x30] + subs r1, r0 + strh r1, [r5, 0x20] +_080117EE: + movs r1, 0xC0 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08011822 + ldr r4, _08011828 @ =0x00002710 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + adds r0, r5, 0 + bl sub_80077D8 + adds r0, r5, 0 + bl sub_8007280 +_08011822: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08011828: .4byte 0x00002710 + thumb_func_end sub_80117BC + + thumb_func_start sub_801182C +sub_801182C: @ 801182C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _08011848 @ =sub_80117BC + str r0, [r4, 0x1C] + movs r0, 0x61 + bl sub_80722CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011848: .4byte sub_80117BC + thumb_func_end sub_801182C + + thumb_func_start sub_801184C +sub_801184C: @ 801184C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + ldr r0, _08011894 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r2, [r0] + ldr r0, _08011898 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080118BC + ldr r1, _0801189C @ =gUnknown_202273C + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x18] + cmp r0, 0x1 + beq _080118A8 + cmp r0, 0x1 + bgt _080118A0 + cmp r0, 0 + beq _080118BC + b _080118C4 + .align 2, 0 +_08011894: .4byte gUnknown_2023FE8 +_08011898: .4byte gUnknown_2022B4C +_0801189C: .4byte gUnknown_202273C +_080118A0: + cmp r0, 0x2 + beq _080118BC + cmp r0, 0x3 + bne _080118C4 +_080118A8: + ldr r0, _080118B4 @ =gUnknown_202402C + str r0, [sp, 0x4] + ldr r1, _080118B8 @ =gUnknown_2024284 + str r1, [sp, 0x8] + b _080118C4 + .align 2, 0 +_080118B4: .4byte gUnknown_202402C +_080118B8: .4byte gUnknown_2024284 +_080118BC: + ldr r2, _08011A10 @ =gUnknown_2024284 + str r2, [sp, 0x4] + ldr r3, _08011A14 @ =gUnknown_202402C + str r3, [sp, 0x8] +_080118C4: + movs r7, 0 + movs r0, 0 + mov r8, r0 + ldr r1, [sp] + lsls r1, 2 + str r1, [sp, 0xC] + movs r2, 0xCE + lsls r2, 1 + mov r10, r2 + mov r9, r0 +_080118D8: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + ldr r3, [sp, 0x4] + adds r4, r3, r4 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + adds r1, r0, 0 + cmp r5, 0 + beq _08011948 + cmp r5, r10 + beq _0801191C + cmp r6, 0 + beq _0801191C + cmp r1, 0 + bne _0801191C + movs r0, 0x1 + mov r2, r9 + lsls r0, r2 + orrs r7, r0 +_0801191C: + cmp r5, 0 + beq _08011948 + cmp r6, 0 + beq _08011934 + cmp r5, r10 + beq _0801192C + cmp r1, 0 + beq _08011934 +_0801192C: + movs r0, 0x2 + mov r3, r9 + lsls r0, r3 + orrs r7, r0 +_08011934: + cmp r5, 0 + beq _08011948 + cmp r5, r10 + beq _08011948 + cmp r6, 0 + bne _08011948 + movs r0, 0x3 + mov r1, r9 + lsls r0, r1 + orrs r7, r0 +_08011948: + movs r2, 0x2 + add r9, r2 + movs r3, 0x1 + add r8, r3 + mov r0, r8 + cmp r0, 0x5 + ble _080118D8 + ldr r1, _08011A18 @ =gUnknown_3005090 + ldr r2, [sp, 0xC] + ldr r3, [sp] + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + strh r7, [r0, 0xE] + movs r7, 0 + movs r0, 0 + mov r8, r0 + movs r1, 0xCE + lsls r1, 1 + mov r10, r1 + mov r9, r0 +_08011972: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + ldr r2, [sp, 0x8] + adds r4, r2, r4 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + adds r1, r0, 0 + cmp r5, 0 + beq _080119E2 + cmp r5, r10 + beq _080119B6 + cmp r6, 0 + beq _080119B6 + cmp r1, 0 + bne _080119B6 + movs r0, 0x1 + mov r3, r9 + lsls r0, r3 + orrs r7, r0 +_080119B6: + cmp r5, 0 + beq _080119E2 + cmp r6, 0 + beq _080119CE + cmp r5, r10 + beq _080119C6 + cmp r1, 0 + beq _080119CE +_080119C6: + movs r0, 0x2 + mov r1, r9 + lsls r0, r1 + orrs r7, r0 +_080119CE: + cmp r5, 0 + beq _080119E2 + cmp r5, r10 + beq _080119E2 + cmp r6, 0 + bne _080119E2 + movs r0, 0x3 + mov r2, r9 + lsls r0, r2 + orrs r7, r0 +_080119E2: + movs r3, 0x2 + add r9, r3 + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x5 + ble _08011972 + ldr r1, _08011A18 @ =gUnknown_3005090 + ldr r2, [sp, 0xC] + ldr r3, [sp] + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + strh r7, [r0, 0x10] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08011A10: .4byte gUnknown_2024284 +_08011A14: .4byte gUnknown_202402C +_08011A18: .4byte gUnknown_3005090 + thumb_func_end sub_801184C + + thumb_func_start sub_8011A1C +sub_8011A1C: @ 8011A1C + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + str r0, [sp] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _08011B40 @ =0x05006000 + mov r0, sp + bl CpuSet + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r4, _08011B44 @ =0x00005051 + movs r0, 0x44 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + ldr r1, _08011B48 @ =gUnknown_2022984 + movs r0, 0xF0 + strh r0, [r1] + ldr r0, _08011B4C @ =gUnknown_2022986 + strh r4, [r0] + bl sub_8087EA4 + ldr r0, _08011B50 @ =gUnknown_2038700 + movs r3, 0xF0 + movs r1, 0xF0 + lsls r1, 3 + adds r2, r0, r1 + movs r1, 0x4F +_08011A80: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _08011A80 + movs r1, 0x50 + ldr r0, _08011B50 @ =gUnknown_2038700 + ldr r3, _08011B54 @ =0x0000ff10 + movs r4, 0x82 + lsls r4, 4 + adds r2, r0, r4 + adds r0, 0xA0 +_08011A9C: + strh r3, [r0] + strh r3, [r2] + adds r2, 0x2 + adds r0, 0x2 + adds r1, 0x1 + cmp r1, 0x9F + ble _08011A9C + bl sub_8070528 + ldr r0, _08011B58 @ =gUnknown_2022974 + movs r4, 0 + strh r4, [r0] + ldr r0, _08011B5C @ =gUnknown_2022976 + strh r4, [r0] + ldr r0, _08011B60 @ =gUnknown_2022978 + strh r4, [r0] + ldr r0, _08011B64 @ =gUnknown_202297A + strh r4, [r0] + ldr r0, _08011B68 @ =gUnknown_202297C + strh r4, [r0] + ldr r0, _08011B6C @ =gUnknown_202297E + strh r4, [r0] + ldr r0, _08011B70 @ =gUnknown_2022980 + strh r4, [r0] + ldr r0, _08011B74 @ =gUnknown_2022982 + strh r4, [r0] + bl sub_800F34C + ldr r0, _08011B78 @ =gUnknown_8D004D8 + movs r1, 0 + movs r2, 0x40 + bl sub_80703A8 + bl sub_800F380 + bl sub_8006B10 + bl sub_80773BC + bl sub_800FAE0 + movs r0, 0x4A + movs r1, 0x37 + bl sub_8000A38 + bl sub_80088F0 + ldr r1, _08011B7C @ =gUnknown_3003E58 + movs r0, 0x4 + strb r0, [r1] + ldr r0, _08011B80 @ =sub_80116F4 + bl sub_80006F4 + ldr r0, _08011B84 @ =sub_800F6FC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08011B88 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x87 + lsls r2, 1 + strh r2, [r1, 0xA] + movs r2, 0x5A + strh r2, [r1, 0xC] + movs r2, 0x1 + strh r2, [r1, 0x12] + bl sub_801184C + ldr r0, _08011B8C @ =sub_8011B94 + bl sub_8000544 + ldr r0, _08011B90 @ =gUnknown_2023E82 + strb r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011B40: .4byte 0x05006000 +_08011B44: .4byte 0x00005051 +_08011B48: .4byte gUnknown_2022984 +_08011B4C: .4byte gUnknown_2022986 +_08011B50: .4byte gUnknown_2038700 +_08011B54: .4byte 0x0000ff10 +_08011B58: .4byte gUnknown_2022974 +_08011B5C: .4byte gUnknown_2022976 +_08011B60: .4byte gUnknown_2022978 +_08011B64: .4byte gUnknown_202297A +_08011B68: .4byte gUnknown_202297C +_08011B6C: .4byte gUnknown_202297E +_08011B70: .4byte gUnknown_2022980 +_08011B74: .4byte gUnknown_2022982 +_08011B78: .4byte gUnknown_8D004D8 +_08011B7C: .4byte gUnknown_3003E58 +_08011B80: .4byte sub_80116F4 +_08011B84: .4byte sub_800F6FC +_08011B88: .4byte gUnknown_3005090 +_08011B8C: .4byte sub_8011B94 +_08011B90: .4byte gUnknown_2023E82 + thumb_func_end sub_8011A1C + + thumb_func_start sub_8011B94 +sub_8011B94: @ 8011B94 + push {lr} + bl sub_8011BB0 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + bl sub_8077578 + pop {r0} + bx r0 + thumb_func_end sub_8011B94 + + thumb_func_start sub_8011BB0 +sub_8011BB0: @ 8011BB0 + push {r4,lr} + sub sp, 0x4 + ldr r4, _08011BC8 @ =gUnknown_2023E82 + ldrb r0, [r4] + cmp r0, 0x1 + beq _08011BEA + cmp r0, 0x1 + bgt _08011BCC + cmp r0, 0 + beq _08011BD2 + b _08011C34 + .align 2, 0 +_08011BC8: .4byte gUnknown_2023E82 +_08011BCC: + cmp r0, 0x2 + beq _08011C10 + b _08011C34 +_08011BD2: + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0xFF + strb r0, [r4, 0x1] + b _08011C08 +_08011BEA: + ldrb r0, [r4, 0x1] + subs r0, 0x1 + strb r0, [r4, 0x1] + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08011C34 + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_08011C08: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08011C34 +_08011C10: + ldr r0, _08011C3C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08011C34 + ldr r0, _08011C40 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 + bl sub_812C224 + bl sub_80359AC + bl sub_8033DF8 + bl sub_802E138 +_08011C34: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011C3C: .4byte gUnknown_2037AB8 +_08011C40: .4byte gUnknown_30030F0 + thumb_func_end sub_8011BB0 + + thumb_func_start sub_8011C44 +sub_8011C44: @ 8011C44 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + cmp r1, 0x6 + bhi _08011D04 + lsls r0, r1, 2 + ldr r1, _08011C60 @ =_08011C64 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08011C60: .4byte _08011C64 + .align 2, 0 +_08011C64: + .4byte _08011C80 + .4byte _08011C94 + .4byte _08011CA8 + .4byte _08011CBC + .4byte _08011CD0 + .4byte _08011CE4 + .4byte _08011CF8 +_08011C80: + ldr r0, _08011C90 @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + lsrs r0, 30 + b _08011D04 + .align 2, 0 +_08011C90: .4byte gUnknown_8248320 +_08011C94: + ldr r0, _08011CA4 @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 28 + lsrs r0, 30 + b _08011D04 + .align 2, 0 +_08011CA4: .4byte gUnknown_8248320 +_08011CA8: + ldr r0, _08011CB8 @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + lsls r0, 23 + lsrs r0, 27 + b _08011D04 + .align 2, 0 +_08011CB8: .4byte gUnknown_8248320 +_08011CBC: + ldr r0, _08011CCC @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 29 + lsrs r0, 30 + b _08011D04 + .align 2, 0 +_08011CCC: .4byte gUnknown_8248320 +_08011CD0: + ldr r0, _08011CE0 @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 28 + lsrs r0, 31 + b _08011D04 + .align 2, 0 +_08011CE0: .4byte gUnknown_8248320 +_08011CE4: + ldr r0, _08011CF4 @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 26 + lsrs r0, 30 + b _08011D04 + .align 2, 0 +_08011CF4: .4byte gUnknown_8248320 +_08011CF8: + ldr r0, _08011D08 @ =gUnknown_8248320 + lsls r1, r2, 2 + adds r1, r0 + ldr r0, [r1] + lsls r0, 8 + lsrs r0, 22 +_08011D04: + pop {r1} + bx r1 + .align 2, 0 +_08011D08: .4byte gUnknown_8248320 + thumb_func_end sub_8011C44 + + thumb_func_start sub_8011D0C +sub_8011D0C: @ 8011D0C + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + add r5, sp, 0xC + movs r0, 0x1 + strb r0, [r5] + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + ldr r1, _08011D5C @ =0x0000012f + cmp r0, r1 + bne _08011D54 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_803FBE8 + ldrb r1, [r5] + cmp r0, r1 + beq _08011D54 + adds r0, r4, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r1, _08011D60 @ =gUnknown_824F008 + mov r0, sp + bl sub_8009370 + cmp r0, 0 + bne _08011D54 + adds r0, r4, 0 + movs r1, 0x3 + adds r2, r5, 0 + bl sub_804037C +_08011D54: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08011D5C: .4byte 0x0000012f +_08011D60: .4byte gUnknown_824F008 + thumb_func_end sub_8011D0C + + thumb_func_start sub_8011D64 +sub_8011D64: @ 8011D64 + push {lr} + sub sp, 0x4 + ldr r1, _08011D8C @ =sub_8011D94 + str r1, [r0, 0x1C] + movs r1, 0 + bl sub_80083A4 + movs r0, 0x80 + lsls r0, 10 + ldr r1, _08011D90 @ =0x00002108 + str r1, [sp] + movs r1, 0 + movs r2, 0xA + movs r3, 0xA + bl sub_8070588 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08011D8C: .4byte sub_8011D94 +_08011D90: .4byte 0x00002108 + thumb_func_end sub_8011D64 + + thumb_func_start sub_8011D94 +sub_8011D94: @ 8011D94 + push {lr} + adds r2, r0, 0 + ldr r0, _08011DC0 @ =gUnknown_2023F4C + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08011DBC + ldrh r0, [r2, 0x24] + adds r0, 0x2 + strh r0, [r2, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _08011DBC + ldr r0, _08011DC4 @ =sub_8011DC8 + str r0, [r2, 0x1C] + ldrh r0, [r2, 0x32] + movs r1, 0x19 + bl sub_8071DF0 +_08011DBC: + pop {r0} + bx r0 + .align 2, 0 +_08011DC0: .4byte gUnknown_2023F4C +_08011DC4: .4byte sub_8011DC8 + thumb_func_end sub_8011D94 + + thumb_func_start sub_8011DC8 +sub_8011DC8: @ 8011DC8 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08011E10 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + bl sub_804BD94 + ldr r1, _08011E18 @ =gUnknown_3004FF0 + movs r2, 0x2E + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + bl sub_80481D4 + ldr r0, _08011E1C @ =nullsub_10 + str r0, [r4, 0x1C] + adds r0, r4, 0 + movs r1, 0 + bl sub_80083A4 + movs r0, 0x80 + lsls r0, 10 + ldr r1, _08011E20 @ =0x00002108 + str r1, [sp] + movs r1, 0 + movs r2, 0xA + movs r3, 0 + bl sub_8070588 +_08011E10: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011E18: .4byte gUnknown_3004FF0 +_08011E1C: .4byte nullsub_10 +_08011E20: .4byte 0x00002108 + thumb_func_end sub_8011DC8 + + thumb_func_start nullsub_10 +nullsub_10: @ 8011E24 + bx lr + thumb_func_end nullsub_10 + + thumb_func_start sub_8011E28 +sub_8011E28: @ 8011E28 + movs r1, 0x6 + strh r1, [r0, 0x34] + movs r1, 0x1 + strh r1, [r0, 0x36] + ldr r1, _08011E38 @ =sub_8011E3C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_08011E38: .4byte sub_8011E3C + thumb_func_end sub_8011E28 + + thumb_func_start sub_8011E3C +sub_8011E3C: @ 8011E3C + push {r4,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x36] + subs r0, 0x1 + strh r0, [r3, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _08011E90 + movs r0, 0x8 + strh r0, [r3, 0x36] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r4, 0x5 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _08011E90 + ldrb r1, [r1] + adds r0, r4, 0 + ands r0, r1 + mov r1, r12 + strb r0, [r1] + ldr r0, _08011E98 @ =nullsub_10 + str r0, [r3, 0x1C] + ldr r0, _08011E9C @ =gUnknown_2022AE8 + str r2, [r0] +_08011E90: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011E98: .4byte nullsub_10 +_08011E9C: .4byte gUnknown_2022AE8 + thumb_func_end sub_8011E3C + + thumb_func_start sub_8011EA0 +sub_8011EA0: @ 8011EA0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08011EC4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + beq _08011EC8 + adds r4, r0, 0 + b _08011ECC + .align 2, 0 +_08011EC4: .4byte gUnknown_2024018 +_08011EC8: + mov r0, r9 + ldrh r4, [r0, 0x32] +_08011ECC: + ldr r1, _08011F34 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r5, r0, r1 + ldrh r0, [r5] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r7, _08011F38 @ =gUnknown_202402C + adds r0, r7 + movs r1, 0 + bl sub_803FBE8 + cmp r4, 0xC9 + bne _08011F50 + ldrh r0, [r5] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + movs r1, 0 + bl sub_803FBE8 + adds r2, r0, 0 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08011F3C + movs r0, 0xC9 + b _08011F46 + .align 2, 0 +_08011F34: .4byte gUnknown_2023BCE +_08011F38: .4byte gUnknown_202402C +_08011F3C: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08011F46: + ldr r1, _08011F4C @ =gUnknown_82349CC + lsls r0, 2 + b _08011F88 + .align 2, 0 +_08011F4C: .4byte gUnknown_82349CC +_08011F50: + ldr r0, _08011F68 @ =0x00000181 + cmp r4, r0 + bne _08011F74 + ldr r0, _08011F6C @ =gUnknown_83AE03C + ldr r1, _08011F70 @ =gUnknown_2024024 + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _08011F8C + .align 2, 0 +_08011F68: .4byte 0x00000181 +_08011F6C: .4byte gUnknown_83AE03C +_08011F70: .4byte gUnknown_2024024 +_08011F74: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08011F84 + ldr r0, _08011F80 @ =gUnknown_82349CC + b _08011F8A + .align 2, 0 +_08011F80: .4byte gUnknown_82349CC +_08011F84: + ldr r1, _08011FAC @ =gUnknown_82349CC + lsls r0, r4, 2 +_08011F88: + adds r0, r1 +_08011F8A: + ldrb r0, [r0, 0x1] +_08011F8C: + lsrs r1, r0, 3 + movs r0, 0x8 + subs r0, r1 + mov r1, r9 + strh r0, [r1, 0x34] + movs r0, 0x1 + strh r0, [r1, 0x36] + ldr r0, _08011FB0 @ =sub_8011FB4 + str r0, [r1, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08011FAC: .4byte gUnknown_82349CC +_08011FB0: .4byte sub_8011FB4 + thumb_func_end sub_8011EA0 + + thumb_func_start sub_8011FB4 +sub_8011FB4: @ 8011FB4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + subs r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _08012034 + movs r0, 0x2 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x26] + adds r0, 0x8 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + cmp r0, 0 + bge _08011FE8 + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + b _08012034 +_08011FE8: + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + ldr r1, _0801203C @ =gUnknown_202401C + ldr r1, [r1] + lsls r0, 24 + lsrs r0, 22 + adds r1, 0x4 + adds r1, r0 + ldr r2, _08012040 @ =gUnknown_2024024 + movs r3, 0x2E + ldrsh r0, [r4, r3] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 11 + ldr r1, [r1] + adds r1, r0 + movs r2, 0x34 + ldrsh r0, [r4, r2] + lsls r0, 8 + adds r1, r0 + movs r2, 0 + movs r0, 0xFF +_0801201A: + strb r2, [r1] + adds r1, 0x1 + subs r0, 0x1 + cmp r0, 0 + bge _0801201A + ldr r0, _08012040 @ =gUnknown_2024024 + movs r3, 0x2E + ldrsh r1, [r4, r3] + adds r1, r0 + ldrb r1, [r1] + adds r0, r4, 0 + bl sub_800838C +_08012034: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801203C: .4byte gUnknown_202401C +_08012040: .4byte gUnknown_2024024 + thumb_func_end sub_8011FB4 + + thumb_func_start sub_8012044 +sub_8012044: @ 8012044 + movs r1, 0x8 + strh r1, [r0, 0x34] + adds r1, r0, 0 + adds r1, 0x3E + ldrb r1, [r1] + lsls r1, 29 + lsrs r1, 31 + strh r1, [r0, 0x36] + ldr r1, _0801205C @ =sub_8012060 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_0801205C: .4byte sub_8012060 + thumb_func_end sub_8012044 + + thumb_func_start sub_8012060 +sub_8012060: @ 8012060 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _08012092 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + movs r0, 0x8 + strh r0, [r3, 0x34] +_08012092: + pop {r0} + bx r0 + thumb_func_end sub_8012060 + + thumb_func_start sub_8012098 +sub_8012098: @ 8012098 + movs r1, 0x3E + adds r1, r0 + mov r12, r1 + movs r1, 0x1 + ldrh r2, [r0, 0x36] + ands r2, r1 + lsls r2, 2 + mov r1, r12 + ldrb r3, [r1] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r2 + mov r2, r12 + strb r1, [r2] + movs r1, 0 + strh r1, [r0, 0x36] + ldr r1, _080120C0 @ =nullsub_10 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080120C0: .4byte nullsub_10 + thumb_func_end sub_8012098 + + thumb_func_start sub_80120C4 +sub_80120C4: @ 80120C4 + ldr r1, _080120CC @ =sub_80120D0 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080120CC: .4byte sub_80120D0 + thumb_func_end sub_80120C4 + + thumb_func_start sub_80120D0 +sub_80120D0: @ 80120D0 + push {lr} + adds r2, r0, 0 + ldr r0, _080120F8 @ =gUnknown_2023F4C + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080120F4 + ldrh r0, [r2, 0x24] + subs r0, 0x2 + strh r0, [r2, 0x24] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _080120F4 + ldr r0, _080120FC @ =nullsub_11 + str r0, [r2, 0x1C] + strh r1, [r2, 0x30] +_080120F4: + pop {r0} + bx r0 + .align 2, 0 +_080120F8: .4byte gUnknown_2023F4C +_080120FC: .4byte nullsub_11 + thumb_func_end sub_80120D0 + + thumb_func_start sub_8012100 +sub_8012100: @ 8012100 + ldr r1, _08012108 @ =nullsub_11 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_08012108: .4byte nullsub_11 + thumb_func_end sub_8012100 + + thumb_func_start nullsub_11 +nullsub_11: @ 801210C + bx lr + thumb_func_end nullsub_11 + + thumb_func_start sub_8012110 +sub_8012110: @ 8012110 + push {lr} + adds r2, r0, 0 + ldr r0, _08012134 @ =gUnknown_2023F4C + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08012130 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x26] + adds r0, r1 + strh r0, [r2, 0x26] +_08012130: + pop {r0} + bx r0 + .align 2, 0 +_08012134: .4byte gUnknown_2023F4C + thumb_func_end sub_8012110 + + thumb_func_start sub_8012138 +sub_8012138: @ 8012138 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + cmp r1, 0 + beq _08012174 + ldr r0, _08012170 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r2, r4, 1 + adds r0, r2, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + b _08012186 + .align 2, 0 +_08012170: .4byte gUnknown_2024018 +_08012174: + ldr r0, _080121D0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r2, r4, 1 + adds r0, r2, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 +_08012186: + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + bne _0801223C + ldr r0, _080121D4 @ =sub_8012308 + bl sub_8044EF8 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + cmp r0, 0x1 + bne _080121E0 + ldr r0, _080121D8 @ =gUnknown_3004FF0 + adds r0, r4, r0 + ldrb r7, [r0] + ldr r2, _080121D0 @ =gUnknown_2024018 + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r6, r4 + lsls r1, 2 + adds r0, r1, r0 + strb r5, [r0, 0x2] + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + ldr r2, _080121DC @ =gUnknown_202063C + lsls r3, r5, 4 + adds r0, r3, r5 + lsls r0, 2 + adds r0, r2 + movs r1, 0x80 + b _0801220E + .align 2, 0 +_080121D0: .4byte gUnknown_2024018 +_080121D4: .4byte sub_8012308 +_080121D8: .4byte gUnknown_3004FF0 +_080121DC: .4byte gUnknown_202063C +_080121E0: + ldr r0, _0801224C @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r7, [r0] + ldr r2, _08012250 @ =gUnknown_2024018 + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r6, r4 + lsls r1, 2 + adds r0, r1, r0 + strb r5, [r0, 0x3] + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r2, _08012254 @ =gUnknown_202063C + lsls r3, r5, 4 + adds r0, r3, r5 + lsls r0, 2 + adds r0, r2 + movs r1, 0xC0 +_0801220E: + strh r1, [r0, 0x2E] + adds r4, r2, 0 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r4 + mov r2, r9 + lsls r0, r2, 24 + asrs r0, 24 + movs r2, 0 + strh r0, [r1, 0x30] + mov r3, r10 + lsls r0, r3, 24 + asrs r0, 24 + strh r0, [r1, 0x32] + strh r7, [r1, 0x34] + mov r0, r8 + strh r0, [r1, 0x36] + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x24] + strh r2, [r0, 0x26] +_0801223C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801224C: .4byte gUnknown_2023D44 +_08012250: .4byte gUnknown_2024018 +_08012254: .4byte gUnknown_202063C + thumb_func_end sub_8012138 + + thumb_func_start sub_8012258 +sub_8012258: @ 8012258 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + bne _080122AC + ldr r6, _080122A4 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r5, r0, 2 + adds r3, r5, r1 + ldrb r1, [r3] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080122FA + ldr r2, _080122A8 @ =gUnknown_202063C + ldrb r1, [r3, 0x2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x34] + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8007280 + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r5, r1 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + b _080122E6 + .align 2, 0 +_080122A4: .4byte gUnknown_2024018 +_080122A8: .4byte gUnknown_202063C +_080122AC: + ldr r6, _08012300 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r5, r0, 2 + adds r3, r5, r1 + ldrb r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080122FA + ldr r2, _08012304 @ =gUnknown_202063C + ldrb r1, [r3, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x34] + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8007280 + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r5, r1 + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 +_080122E6: + ands r0, r2 + strb r0, [r1] + ldr r0, _08012304 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + movs r0, 0 + strh r0, [r1, 0x24] + strh r0, [r1, 0x26] +_080122FA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08012300: .4byte gUnknown_2024018 +_08012304: .4byte gUnknown_202063C + thumb_func_end sub_8012258 + + thumb_func_start sub_8012308 +sub_8012308: @ 8012308 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _08012320 + movs r2, 0x2E + ldrsh r0, [r4, r2] + b _08012324 +_08012320: + movs r1, 0x2E + ldrsh r0, [r4, r1] +_08012324: + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldr r2, _08012350 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r4, 0x32] + adds r0, r2 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08012350: .4byte gUnknown_202063C + thumb_func_end sub_8012308 + + thumb_func_start sub_8012354 +sub_8012354: @ 8012354 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_800838C + ldr r0, _08012368 @ =sub_8012398 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08012368: .4byte sub_8012398 + thumb_func_end sub_8012354 + + thumb_func_start sub_801236C +sub_801236C: @ 801236C + push {lr} + adds r2, r0, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r0, 0x3F + ands r0, r1 + cmp r0, 0 + bne _0801238E + ldr r1, _08012394 @ =gUnknown_824F048 + adds r0, r2, 0 + adds r0, 0x2B + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + adds r0, r2, 0 + adds r0, 0x28 + strb r1, [r0] +_0801238E: + pop {r0} + bx r0 + .align 2, 0 +_08012394: .4byte gUnknown_824F048 + thumb_func_end sub_801236C + + thumb_func_start sub_8012398 +sub_8012398: @ 8012398 + push {r4,lr} + adds r4, r0, 0 + bl sub_801236C + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080123B2 + ldr r0, _080123B8 @ =nullsub_11 + str r0, [r4, 0x1C] +_080123B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080123B8: .4byte nullsub_11 + thumb_func_end sub_8012398 + + thumb_func_start nullsub_12 +nullsub_12: @ 80123BC + bx lr + thumb_func_end nullsub_12 + + thumb_func_start sub_80123C0 +sub_80123C0: @ 80123C0 + push {lr} + bl sub_8012434 + ldr r1, _080123D8 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x1] + ldr r1, _080123DC @ =gUnknown_3004F84 + ldr r0, _080123E0 @ =sub_8012FAC + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080123D8: .4byte gUnknown_2023E82 +_080123DC: .4byte gUnknown_3004F84 +_080123E0: .4byte sub_8012FAC + thumb_func_end sub_80123C0 + + thumb_func_start sub_80123E4 +sub_80123E4: @ 80123E4 + push {r4,r5,lr} + ldr r0, _08012424 @ =gUnknown_3004F84 + ldr r0, [r0] + bl _call_via_r0 + ldr r1, _08012428 @ =gUnknown_2023BC4 + movs r0, 0 + strb r0, [r1] + ldr r0, _0801242C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r0, 0 + beq _0801241E + ldr r5, _08012430 @ =gUnknown_3004FE0 + adds r4, r1, 0 +_08012400: + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + bl _call_via_r0 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _0801242C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08012400 +_0801241E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08012424: .4byte gUnknown_3004F84 +_08012428: .4byte gUnknown_2023BC4 +_0801242C: .4byte gUnknown_2023BCC +_08012430: .4byte gUnknown_3004FE0 + thumb_func_end sub_80123E4 + + thumb_func_start sub_8012434 +sub_8012434: @ 8012434 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + bl sub_8015330 + bl sub_8015450 + movs r2, 0 + movs r3, 0 + ldr r0, _080126CC @ =gUnknown_2023DB0 + mov r10, r0 + ldr r1, _080126D0 @ =gUnknown_2023DA8 + mov r12, r1 + ldr r0, _080126D4 @ =gUnknown_2023DA0 + mov r9, r0 + ldr r1, _080126D8 @ =gUnknown_2023D98 + mov r8, r1 + ldr r4, _080126DC @ =gUnknown_2023E0C + movs r5, 0 + ldr r7, _080126E0 @ =gUnknown_2023D90 + ldr r6, _080126E4 @ =gUnknown_2023DB8 +_08012464: + ldr r0, _080126E8 @ =gUnknown_2023DFC + adds r0, r5, r0 + str r3, [r0] + movs r1, 0 +_0801246C: + adds r0, r4, r1 + strb r3, [r0] + adds r1, 0x1 + cmp r1, 0x1B + bls _0801246C + movs r0, 0x2 + strb r0, [r4, 0x16] + ldr r1, _080126EC @ =gUnknown_2023DD4 + adds r0, r2, r1 + strb r3, [r0] + mov r0, r8 + strh r3, [r0] + mov r1, r9 + strh r3, [r1] + mov r0, r12 + strh r3, [r0] + mov r1, r10 + strh r3, [r1] + ldr r0, _080126F0 @ =gUnknown_2023DC0 + adds r1, r2, r0 + movs r0, 0xFF + strb r0, [r1] + strh r3, [r6] + strh r3, [r7] + ldr r1, _080126F4 @ =gUnknown_2023FF4 + ldr r0, [r1] + ldr r0, [r0, 0x4] + adds r0, r5 + str r3, [r0] + movs r0, 0x2 + add r10, r0 + add r12, r0 + add r9, r0 + add r8, r0 + adds r4, 0x1C + adds r5, 0x4 + adds r7, 0x2 + adds r6, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + ble _08012464 + movs r5, 0 + ldr r3, _080126F8 @ =gUnknown_2023DE4 + ldr r4, _080126FC @ =gUnknown_2023DDE + movs r2, 0x1 +_080124C6: + strh r5, [r4] + movs r1, 0 +_080124CA: + adds r0, r3, r1 + strb r5, [r0] + adds r1, 0x1 + cmp r1, 0xB + bls _080124CA + adds r3, 0xC + adds r4, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _080124C6 + movs r1, 0 + ldr r2, _08012700 @ =gUnknown_2023D6B + strb r1, [r2] + ldr r0, _08012704 @ =gUnknown_2023D6C + strb r1, [r0] + ldr r2, _08012708 @ =gUnknown_2023F1C + strh r1, [r2] + ldr r1, _0801270C @ =gUnknown_2023F20 + movs r2, 0 + movs r3, 0 +_080124F2: + adds r0, r1, r2 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x2B + bls _080124F2 + movs r0, 0 + ldr r1, _08012710 @ =gUnknown_2023DD0 + str r0, [r1] + ldr r2, _08012714 @ =gUnknown_2022B4C + ldr r0, [r2] + ldr r1, _08012718 @ =0x00010002 + ands r0, r1 + cmp r0, 0 + bne _08012522 + ldr r1, _0801271C @ =gUnknown_300500C + ldr r0, [r1] + ldrb r1, [r0, 0x15] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08012522 + movs r0, 0x80 + ldr r2, _08012710 @ =gUnknown_2023DD0 + str r0, [r2] +_08012522: + ldr r1, _0801271C @ =gUnknown_300500C + ldr r0, [r1] + ldrb r0, [r0, 0x15] + lsls r0, 30 + lsrs r0, 31 + movs r1, 0 + ldr r2, _08012720 @ =gUnknown_2023FC4 + strb r0, [r2, 0x1D] + ldr r0, _08012724 @ =gUnknown_2023D72 + strb r1, [r0] + ldr r2, _08012728 @ =gUnknown_2023E8A + strb r1, [r2] + ldr r0, _0801272C @ =gUnknown_2023BC8 + str r1, [r0] + movs r2, 0 + ldr r0, _08012730 @ =gUnknown_2023E7E + strh r1, [r0] + ldr r1, _080126F4 @ =gUnknown_2023FF4 + ldr r0, [r1] + ldr r0, [r0, 0x8] + adds r0, 0x20 + strb r2, [r0] + ldr r0, [r1] + ldr r0, [r0, 0xC] + adds r0, 0x20 + strb r2, [r0] + ldr r1, _08012734 @ =gUnknown_2023E82 + movs r2, 0 + adds r0, r1, 0x7 +_0801255C: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0801255C + movs r2, 0 + mov r9, r2 + ldr r0, _08012738 @ =gUnknown_2023E7C + strh r2, [r0] + movs r0, 0 + ldr r1, _0801273C @ =gUnknown_2023D50 + str r0, [r1] + ldr r2, _08012740 @ =gUnknown_2023F4C + strh r0, [r2] + mov r1, r9 + ldr r0, _08012720 @ =gUnknown_2023FC4 + strb r1, [r0, 0x18] + strb r1, [r0, 0x19] + ldr r2, _08012744 @ =gUnknown_3004FD4 + strb r1, [r2] + ldr r0, _08012748 @ =gUnknown_2023D70 + strb r1, [r0] + ldr r7, _0801274C @ =gUnknown_2023FE8 + ldr r0, [r7] + adds r0, 0x6C + strb r1, [r0] + ldr r0, [r7] + adds r0, 0x79 + strb r1, [r0] + ldr r0, [r7] + adds r0, 0x7A + strb r1, [r0] + ldr r0, _08012750 @ =gUnknown_202402C + movs r1, 0xB + bl sub_803FBE8 + ldr r4, [r7] + adds r4, 0x7C + ldr r1, _08012754 @ =gUnknown_8254784 + mov r8, r1 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x8] + movs r5, 0x64 + muls r0, r5 + ldr r6, _08012758 @ =0x000004fb + adds r1, r6, 0 + bl __divsi3 + strb r0, [r4] + ldr r0, _08012750 @ =gUnknown_202402C + movs r1, 0xB + bl sub_803FBE8 + ldr r4, [r7] + adds r4, 0x7B + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x18] + muls r0, r5 + adds r1, r6, 0 + bl __divsi3 + strb r0, [r4] + ldr r0, [r7] + adds r1, r0, 0 + adds r1, 0x7B + ldrb r0, [r1] + cmp r0, 0x1 + bhi _080125F2 + movs r0, 0x2 + strb r0, [r1] +_080125F2: + ldr r0, [r7] + mov r2, r9 + strb r2, [r0, 0x12] + ldr r0, [r7] + adds r0, 0x4A + movs r1, 0x1 + strb r1, [r0] + movs r2, 0 + adds r4, r7, 0 + ldr r5, _0801275C @ =gUnknown_3004F90 + adds r3, r4, 0 + movs r1, 0 +_0801260A: + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0x98 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xB8 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xC8 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xD0 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xE0 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xE8 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xF0 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0xF8 + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x7 + ble _0801260A + ldr r0, [r4] + adds r0, 0x92 + movs r1, 0x6 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0x93 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xDF + movs r1, 0 + strb r1, [r0] + ldr r0, _0801275C @ =gUnknown_3004F90 + movs r1, 0 + movs r2, 0xA + adds r0, 0x40 +_0801266E: + strb r1, [r0] + subs r0, 0x1 + subs r2, 0x1 + cmp r2, 0 + bge _0801266E + movs r1, 0 + strb r1, [r5, 0x13] + strb r1, [r5] + strb r1, [r5, 0x1] + strb r1, [r5, 0x2] + strb r1, [r5, 0x3] + strb r1, [r5, 0x4] + ldrb r2, [r5, 0x5] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + movs r2, 0x3 + negs r2, r2 + ands r0, r2 + strb r0, [r5, 0x5] + strh r1, [r5, 0x20] + strh r1, [r5, 0x22] + strh r1, [r5, 0x24] + strh r1, [r5, 0x6] + strh r1, [r5, 0x26] + strh r1, [r5, 0x28] + movs r2, 0 + adds r4, r5, 0 + adds r4, 0x8 + movs r3, 0 + adds r1, r5, 0 + adds r1, 0x14 +_080126AE: + adds r0, r2, r4 + strb r3, [r0] + strb r3, [r1] + strb r3, [r1, 0x16] + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x9 + ble _080126AE + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080126CC: .4byte gUnknown_2023DB0 +_080126D0: .4byte gUnknown_2023DA8 +_080126D4: .4byte gUnknown_2023DA0 +_080126D8: .4byte gUnknown_2023D98 +_080126DC: .4byte gUnknown_2023E0C +_080126E0: .4byte gUnknown_2023D90 +_080126E4: .4byte gUnknown_2023DB8 +_080126E8: .4byte gUnknown_2023DFC +_080126EC: .4byte gUnknown_2023DD4 +_080126F0: .4byte gUnknown_2023DC0 +_080126F4: .4byte gUnknown_2023FF4 +_080126F8: .4byte gUnknown_2023DE4 +_080126FC: .4byte gUnknown_2023DDE +_08012700: .4byte gUnknown_2023D6B +_08012704: .4byte gUnknown_2023D6C +_08012708: .4byte gUnknown_2023F1C +_0801270C: .4byte gUnknown_2023F20 +_08012710: .4byte gUnknown_2023DD0 +_08012714: .4byte gUnknown_2022B4C +_08012718: .4byte 0x00010002 +_0801271C: .4byte gUnknown_300500C +_08012720: .4byte gUnknown_2023FC4 +_08012724: .4byte gUnknown_2023D72 +_08012728: .4byte gUnknown_2023E8A +_0801272C: .4byte gUnknown_2023BC8 +_08012730: .4byte gUnknown_2023E7E +_08012734: .4byte gUnknown_2023E82 +_08012738: .4byte gUnknown_2023E7C +_0801273C: .4byte gUnknown_2023D50 +_08012740: .4byte gUnknown_2023F4C +_08012744: .4byte gUnknown_3004FD4 +_08012748: .4byte gUnknown_2023D70 +_0801274C: .4byte gUnknown_2023FE8 +_08012750: .4byte gUnknown_202402C +_08012754: .4byte gUnknown_8254784 +_08012758: .4byte 0x000004fb +_0801275C: .4byte gUnknown_3004F90 + thumb_func_end sub_8012434 + + thumb_func_start sub_8012760 +sub_8012760: @ 8012760 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r4, _080128C4 @ =gUnknown_2023E0C + ldr r5, _080128C8 @ =gUnknown_2023BC4 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r1, sp + adds r0, r4 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r0, [r0] + str r0, [r1] + ldr r2, _080128CC @ =gUnknown_8250C04 + ldr r3, _080128D0 @ =gUnknown_2023D4A + ldrh r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + mov r9, r4 + mov r12, r5 + ldr r6, _080128D4 @ =gUnknown_2023DFC + mov r10, r6 + cmp r0, 0x7F + beq _08012838 + movs r5, 0 + mov r4, r12 + movs r3, 0x58 + ldr r2, _080128D8 @ =gUnknown_2023BE4 + adds r2, 0x18 + movs r1, 0x6 +_080127B0: + ldrb r0, [r4] + muls r0, r3 + adds r0, r5, r0 + adds r0, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x7 + ble _080127B0 + movs r5, 0 + ldr r7, _080128DC @ =gUnknown_2023BCC + ldrb r7, [r7] + cmp r5, r7 + bge _08012824 + ldr r0, _080128E0 @ =gUnknown_2023C34 + mov r8, r0 + ldr r3, _080128C4 @ =gUnknown_2023E0C + ldr r4, _080128D4 @ =gUnknown_2023DFC +_080127D2: + movs r0, 0x58 + muls r0, r5 + mov r1, r8 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 19 + ands r0, r1 + cmp r0, 0 + beq _080127F6 + ldrb r0, [r3, 0x14] + ldr r6, _080128C8 @ =gUnknown_2023BC4 + ldrb r6, [r6] + cmp r0, r6 + bne _080127F6 + ldr r0, _080128E4 @ =0xfbffffff + ands r1, r0 + str r1, [r2] +_080127F6: + ldr r1, [r4] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _08012816 + ldrb r0, [r3, 0x15] + ldr r7, _080128C8 @ =gUnknown_2023BC4 + ldrb r7, [r7] + cmp r0, r7 + bne _08012816 + movs r0, 0x19 + negs r0, r0 + ands r1, r0 + str r1, [r4] + movs r0, 0 + strb r0, [r3, 0x15] +_08012816: + adds r3, 0x1C + adds r4, 0x4 + adds r5, 0x1 + ldr r0, _080128DC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _080127D2 +_08012824: + ldr r1, _080128D0 @ =gUnknown_2023D4A + ldrh r0, [r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r2, _080128CC @ =gUnknown_8250C04 + adds r1, r2 + ldrb r0, [r1] + cmp r0, 0x7F + bne _080128F0 +_08012838: + mov r3, r12 + ldrb r1, [r3] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + ldr r0, _080128D8 @ =gUnknown_2023BE4 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + ldr r1, _080128E8 @ =0x15100007 + ands r0, r1 + str r0, [r2] + ldrb r1, [r3] + lsls r1, 2 + add r1, r10 + ldr r0, [r1] + ldr r2, _080128EC @ =0x0003043f + ands r0, r2 + str r0, [r1] + movs r5, 0 + ldr r6, _080128DC @ =gUnknown_2023BCC + ldrb r6, [r6] + cmp r5, r6 + bge _0801290C + mov r7, r12 + movs r6, 0 +_0801286C: + ldrb r0, [r7] + bl sub_80751C4 + adds r4, r0, 0 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _080128AC + ldr r1, _080128D4 @ =gUnknown_2023DFC + lsls r0, r5, 2 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _080128AC + ldr r0, _080128C4 @ =gUnknown_2023E0C + adds r0, r6, r0 + ldrb r0, [r0, 0x15] + ldrb r3, [r7] + cmp r0, r3 + bne _080128AC + movs r0, 0x19 + negs r0, r0 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + str r1, [r2] +_080128AC: + adds r6, 0x1C + adds r5, 0x1 + ldr r0, _080128DC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801286C + ldr r6, _080128C4 @ =gUnknown_2023E0C + mov r9, r6 + ldr r7, _080128C8 @ =gUnknown_2023BC4 + mov r12, r7 + b _0801290C + .align 2, 0 +_080128C4: .4byte gUnknown_2023E0C +_080128C8: .4byte gUnknown_2023BC4 +_080128CC: .4byte gUnknown_8250C04 +_080128D0: .4byte gUnknown_2023D4A +_080128D4: .4byte gUnknown_2023DFC +_080128D8: .4byte gUnknown_2023BE4 +_080128DC: .4byte gUnknown_2023BCC +_080128E0: .4byte gUnknown_2023C34 +_080128E4: .4byte 0xfbffffff +_080128E8: .4byte 0x15100007 +_080128EC: .4byte 0x0003043f +_080128F0: + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + ldr r1, _08012B7C @ =gUnknown_2023BE4 + adds r1, 0x50 + adds r0, r1 + movs r1, 0 + str r1, [r0] + mov r2, r12 + ldrb r0, [r2] + lsls r0, 2 + add r0, r10 + str r1, [r0] +_0801290C: + movs r5, 0 + ldr r7, _08012B80 @ =gUnknown_2023FE8 + ldr r3, _08012B84 @ =gUnknown_2023FF8 + mov r10, r3 + ldr r6, _08012B88 @ =gUnknown_2023BCC + ldrb r6, [r6] + cmp r5, r6 + bge _0801296C + ldr r0, _08012B8C @ =gUnknown_2023C34 + mov r8, r0 + ldr r6, _08012B90 @ =gUnknown_825E45C + ldr r4, _08012B94 @ =gUnknown_2023BC4 +_08012924: + movs r0, 0x58 + muls r0, r5 + mov r1, r8 + adds r3, r0, r1 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + lsls r2, r0, 16 + ldr r1, [r3] + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _08012944 + bics r1, r2 + str r1, [r3] +_08012944: + ldr r1, [r3] + movs r0, 0xE0 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _08012962 + ldr r0, [r7] + adds r0, r5, r0 + ldrb r0, [r0, 0x14] + ldrb r2, [r4] + cmp r0, r2 + bne _08012962 + ldr r0, _08012B98 @ =0xffff1fff + ands r1, r0 + str r1, [r3] +_08012962: + adds r5, 0x1 + ldr r3, _08012B88 @ =gUnknown_2023BCC + ldrb r3, [r3] + cmp r5, r3 + blt _08012924 +_0801296C: + mov r6, r12 + ldrb r0, [r6] + add r0, r10 + movs r1, 0 + strb r1, [r0] + ldrb r0, [r6] + ldr r2, _08012B9C @ =gUnknown_2023FFC + adds r0, r2 + strb r1, [r0] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r3, r9 + adds r1, r0, r3 + movs r5, 0 + movs r2, 0 +_0801298E: + adds r0, r1, r5 + strb r2, [r0] + adds r5, 0x1 + cmp r5, 0x1B + bls _0801298E + ldr r6, _08012BA0 @ =gUnknown_2023D4A + ldrh r0, [r6] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, _08012BA4 @ =gUnknown_8250C04 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x7F + bne _08012A1A + mov r2, r12 + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + mov r1, sp + ldrb r1, [r1, 0xA] + strb r1, [r0, 0xA] + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + mov r1, sp + ldrb r1, [r1, 0x15] + strb r1, [r0, 0x15] + ldrb r0, [r2] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r9 + mov r0, sp + ldrb r2, [r0, 0xF] + lsls r2, 28 + movs r4, 0xF + lsrs r2, 28 + ldrb r3, [r1, 0xF] + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xF] + mov r3, r12 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + mov r1, sp + ldrb r1, [r1, 0xF] + lsrs r1, 4 + lsls r1, 4 + ldrb r2, [r0, 0xF] + ands r4, r2 + orrs r4, r1 + strb r4, [r0, 0xF] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + mov r1, sp + ldrb r1, [r1, 0x14] + strb r1, [r0, 0x14] +_08012A1A: + movs r0, 0 + ldr r6, _08012BA8 @ =gUnknown_2023DCC + strb r0, [r6] + mov r0, r12 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + movs r2, 0 + movs r1, 0x2 + strb r1, [r0, 0x16] + mov r1, r12 + ldrb r0, [r1] + lsls r0, 1 + ldr r3, _08012BAC @ =gUnknown_2023D98 + adds r0, r3 + movs r3, 0 + strh r2, [r0] + ldrb r0, [r1] + lsls r0, 1 + ldr r6, _08012BB0 @ =gUnknown_2023DA0 + adds r0, r6 + strh r2, [r0] + ldrb r0, [r1] + lsls r0, 1 + ldr r1, _08012BB4 @ =gUnknown_2023DA8 + adds r0, r1 + strh r2, [r0] + mov r6, r12 + ldrb r0, [r6] + lsls r0, 1 + ldr r1, _08012BB8 @ =gUnknown_2023DB0 + adds r0, r1 + strh r2, [r0] + ldrb r0, [r6] + lsls r0, 1 + ldr r6, _08012BBC @ =gUnknown_2023D90 + adds r0, r6 + strh r2, [r0] + mov r1, r12 + ldrb r0, [r1] + ldr r2, _08012BC0 @ =gUnknown_2023DC0 + adds r0, r2 + movs r1, 0xFF + strb r1, [r0] + mov r6, r12 + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 1 + adds r0, r1 + adds r0, 0x98 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 1 + adds r0, r1 + adds r0, 0x99 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE0 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE1 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE2 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE3 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE4 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE5 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE6 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r7] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE7 + strb r3, [r0] + movs r5, 0 + ldr r0, _08012B88 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _08012B3C + adds r4, r7, 0 +_08012AFC: + ldrb r1, [r6] + cmp r5, r1 + beq _08012B14 + ldr r0, [r4] + lsls r1, r5, 1 + adds r0, r1, r0 + adds r0, 0x98 + strb r3, [r0] + ldr r0, [r4] + adds r1, r0 + adds r1, 0x99 + strb r3, [r1] +_08012B14: + ldrb r0, [r6] + ldr r1, [r4] + lsls r0, 1 + lsls r2, r5, 3 + adds r0, r2 + adds r0, r1 + adds r0, 0xE0 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r4] + lsls r0, 1 + adds r0, r2 + adds r0, r1 + adds r0, 0xE1 + strb r3, [r0] + adds r5, 0x1 + ldr r2, _08012B88 @ =gUnknown_2023BCC + ldrb r2, [r2] + cmp r5, r2 + blt _08012AFC +_08012B3C: + mov r3, r12 + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + movs r2, 0 + strb r2, [r0] + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r2, [r0] + ldr r6, _08012BC4 @ =gUnknown_2023FF4 + ldr r0, [r6] + ldr r1, [r0, 0x4] + ldrb r0, [r3] + lsls r0, 2 + adds r1, r0 + movs r0, 0 + str r0, [r1] + ldr r7, _08012BA0 @ =gUnknown_2023D4A + strh r0, [r7] + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08012B7C: .4byte gUnknown_2023BE4 +_08012B80: .4byte gUnknown_2023FE8 +_08012B84: .4byte gUnknown_2023FF8 +_08012B88: .4byte gUnknown_2023BCC +_08012B8C: .4byte gUnknown_2023C34 +_08012B90: .4byte gUnknown_825E45C +_08012B94: .4byte gUnknown_2023BC4 +_08012B98: .4byte 0xffff1fff +_08012B9C: .4byte gUnknown_2023FFC +_08012BA0: .4byte gUnknown_2023D4A +_08012BA4: .4byte gUnknown_8250C04 +_08012BA8: .4byte gUnknown_2023DCC +_08012BAC: .4byte gUnknown_2023D98 +_08012BB0: .4byte gUnknown_2023DA0 +_08012BB4: .4byte gUnknown_2023DA8 +_08012BB8: .4byte gUnknown_2023DB0 +_08012BBC: .4byte gUnknown_2023D90 +_08012BC0: .4byte gUnknown_2023DC0 +_08012BC4: .4byte gUnknown_2023FF4 + thumb_func_end sub_8012760 + + thumb_func_start sub_8012BC8 +sub_8012BC8: @ 8012BC8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r3, 0 + ldr r7, _08012F5C @ =gUnknown_2023BC4 + ldr r6, _08012F60 @ =gUnknown_2023DFC + ldr r0, _08012F64 @ =gUnknown_2023FF8 + mov r8, r0 + ldr r1, _08012F68 @ =gUnknown_2023FFC + mov r9, r1 + ldr r2, _08012F6C @ =gUnknown_2023E8C + mov r12, r2 + adds r5, r7, 0 + movs r4, 0x58 + ldr r2, _08012F70 @ =gUnknown_2023BE4 + adds r2, 0x18 + movs r1, 0x6 +_08012BEE: + ldrb r0, [r5] + muls r0, r4 + adds r0, r3, r0 + adds r0, r2 + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x7 + ble _08012BEE + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + ldr r2, _08012F70 @ =gUnknown_2023BE4 + adds r2, 0x50 + adds r0, r2 + movs r1, 0 + str r1, [r0] + ldrb r0, [r7] + lsls r0, 2 + adds r0, r6 + str r1, [r0] + movs r3, 0 + ldr r0, _08012F74 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r3, r0 + bge _08012C8A + adds r4, r2, 0 + movs r5, 0 + ldr r6, _08012F78 @ =gUnknown_825E45C +_08012C26: + ldr r1, [r4] + movs r0, 0x80 + lsls r0, 19 + ands r0, r1 + cmp r0, 0 + beq _08012C44 + ldr r2, _08012F7C @ =gUnknown_2023E0C + adds r0, r5, r2 + ldrb r0, [r0, 0x14] + ldrb r2, [r7] + cmp r0, r2 + bne _08012C44 + ldr r0, _08012F80 @ =0xfbffffff + ands r1, r0 + str r1, [r4] +_08012C44: + ldrb r0, [r7] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + lsls r2, r0, 16 + ldr r1, [r4] + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _08012C5C + bics r1, r2 + str r1, [r4] +_08012C5C: + ldr r1, [r4] + movs r0, 0xE0 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _08012C7C + ldr r2, _08012F84 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, r3, r0 + ldrb r0, [r0, 0x14] + ldrb r2, [r7] + cmp r0, r2 + bne _08012C7C + ldr r0, _08012F88 @ =0xffff1fff + ands r1, r0 + str r1, [r4] +_08012C7C: + adds r4, 0x58 + adds r5, 0x1C + adds r3, 0x1 + ldr r0, _08012F74 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r3, r0 + blt _08012C26 +_08012C8A: + ldrb r0, [r7] + add r0, r8 + movs r1, 0 + strb r1, [r0] + ldrb r0, [r7] + add r0, r9 + strb r1, [r0] + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r2, _08012F7C @ =gUnknown_2023E0C + adds r1, r0, r2 + movs r3, 0 + movs r2, 0 +_08012CA8: + adds r0, r1, r3 + strb r2, [r0] + adds r3, 0x1 + cmp r3, 0x1B + bls _08012CA8 + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + mov r9, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + mov r8, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r6, 0x5 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + mov r10, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r5, 0x21 + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r4, 0x41 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1, 0x1] + mov r0, r9 + ands r0, r2 + strb r0, [r1, 0x1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1, 0x1] + mov r0, r8 + ands r0, r2 + strb r0, [r1, 0x1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1, 0x1] + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1, 0x1] + ldrb r1, [r7] + lsls r1, 4 + add r1, r12 + ldrb r2, [r1, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x1] + ands r5, r1 + strb r5, [r0, 0x1] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x1] + ands r3, r1 + strb r3, [r0, 0x1] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x2] + mov r2, r9 + ands r2, r1 + strb r2, [r0, 0x2] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x2] + mov r2, r8 + ands r2, r1 + strb r2, [r0, 0x2] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x2] + ands r6, r1 + strb r6, [r0, 0x2] + ldrb r0, [r7] + lsls r0, 4 + add r0, r12 + ldrb r1, [r0, 0x2] + mov r2, r10 + ands r2, r1 + strb r2, [r0, 0x2] + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _08012F7C @ =gUnknown_2023E0C + adds r0, r1 + movs r2, 0 + movs r1, 0x2 + strb r1, [r0, 0x16] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _08012F8C @ =gUnknown_2023D98 + adds r0, r1 + movs r3, 0 + strh r2, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _08012F90 @ =gUnknown_2023DA0 + adds r0, r1 + strh r2, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _08012F94 @ =gUnknown_2023DA8 + adds r0, r1 + strh r2, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _08012F98 @ =gUnknown_2023DB0 + adds r0, r1 + strh r2, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _08012F9C @ =gUnknown_2023D90 + adds r0, r1 + strh r2, [r0] + ldrb r0, [r7] + ldr r2, _08012FA0 @ =gUnknown_2023DC0 + adds r0, r2 + movs r1, 0xFF + strb r1, [r0] + ldrb r0, [r7] + ldr r2, _08012F84 @ =gUnknown_2023FE8 + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0x98 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0x99 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE0 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE1 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE2 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE3 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE4 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE5 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE6 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + adds r0, 0xE7 + strb r3, [r0] + movs r3, 0 + ldr r0, _08012F74 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r3, r0 + bge _08012F04 + adds r6, r7, 0 + adds r5, r2, 0 + movs r4, 0 +_08012EC4: + ldrb r1, [r6] + cmp r3, r1 + beq _08012EDC + ldr r0, [r5] + lsls r1, r3, 1 + adds r0, r1, r0 + adds r0, 0x98 + strb r4, [r0] + ldr r0, [r5] + adds r1, r0 + adds r1, 0x99 + strb r4, [r1] +_08012EDC: + ldrb r0, [r6] + ldr r1, [r5] + lsls r0, 1 + lsls r2, r3, 3 + adds r0, r2 + adds r0, r1 + adds r0, 0xE0 + strb r4, [r0] + ldrb r0, [r6] + ldr r1, [r5] + lsls r0, 1 + adds r0, r2 + adds r0, r1 + adds r0, 0xE1 + strb r4, [r0] + adds r3, 0x1 + ldr r2, _08012F74 @ =gUnknown_2023BCC + ldrb r2, [r2] + cmp r3, r2 + blt _08012EC4 +_08012F04: + ldr r1, _08012FA4 @ =gUnknown_2023FF4 + ldr r0, [r1] + ldr r1, [r0, 0x4] + ldrb r0, [r7] + lsls r0, 2 + adds r1, r0 + movs r0, 0 + str r0, [r1] + ldrb r0, [r7] + movs r3, 0x58 + adds r1, r0, 0 + muls r1, r3 + ldr r2, _08012F70 @ =gUnknown_2023BE4 + adds r1, r2 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + ldr r2, _08012FA8 @ =gUnknown_8254784 + adds r0, r2 + ldrb r0, [r0, 0x6] + adds r1, 0x21 + strb r0, [r1] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r3 + ldr r0, _08012F70 @ =gUnknown_2023BE4 + adds r1, r0 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + ldr r2, _08012FA8 @ =gUnknown_8254784 + adds r0, r2 + ldrb r0, [r0, 0x7] + adds r1, 0x22 + strb r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08012F5C: .4byte gUnknown_2023BC4 +_08012F60: .4byte gUnknown_2023DFC +_08012F64: .4byte gUnknown_2023FF8 +_08012F68: .4byte gUnknown_2023FFC +_08012F6C: .4byte gUnknown_2023E8C +_08012F70: .4byte gUnknown_2023BE4 +_08012F74: .4byte gUnknown_2023BCC +_08012F78: .4byte gUnknown_825E45C +_08012F7C: .4byte gUnknown_2023E0C +_08012F80: .4byte 0xfbffffff +_08012F84: .4byte gUnknown_2023FE8 +_08012F88: .4byte 0xffff1fff +_08012F8C: .4byte gUnknown_2023D98 +_08012F90: .4byte gUnknown_2023DA0 +_08012F94: .4byte gUnknown_2023DA8 +_08012F98: .4byte gUnknown_2023DB0 +_08012F9C: .4byte gUnknown_2023D90 +_08012FA0: .4byte gUnknown_2023DC0 +_08012FA4: .4byte gUnknown_2023FF4 +_08012FA8: .4byte gUnknown_8254784 + thumb_func_end sub_8012BC8 + + thumb_func_start sub_8012FAC +sub_8012FAC: @ 8012FAC + push {r4,r5,lr} + ldr r5, _08012FBC @ =gUnknown_2023E82 + ldrb r0, [r5] + cmp r0, 0 + beq _08012FC0 + cmp r0, 0x1 + beq _08012FE4 + b _0801301A + .align 2, 0 +_08012FBC: .4byte gUnknown_2023E82 +_08012FC0: + ldr r4, _08012FE0 @ =gUnknown_2023BC4 + ldrb r0, [r5, 0x1] + strb r0, [r4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_800DFA4 + ldrb r0, [r4] + bl sub_8017248 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _0801301A + .align 2, 0 +_08012FE0: .4byte gUnknown_2023BC4 +_08012FE4: + ldr r0, _08013008 @ =gUnknown_2023BC8 + ldr r2, [r0] + cmp r2, 0 + bne _0801301A + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] + ldr r1, _0801300C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _08013018 + ldr r1, _08013010 @ =gUnknown_3004F84 + ldr r0, _08013014 @ =sub_8013020 + str r0, [r1] + b _0801301A + .align 2, 0 +_08013008: .4byte gUnknown_2023BC8 +_0801300C: .4byte gUnknown_2023BCC +_08013010: .4byte gUnknown_3004F84 +_08013014: .4byte sub_8013020 +_08013018: + strb r2, [r5] +_0801301A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8012FAC + + thumb_func_start sub_8013020 +sub_8013020: @ 8013020 + push {r4,r5,lr} + ldr r0, _08013058 @ =gUnknown_2023BC8 + ldr r5, [r0] + cmp r5, 0 + bne _08013050 + movs r0, 0 + bl sub_80751E8 + ldr r4, _0801305C @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r0, _08013060 @ =gUnknown_2022B50 + ldrb r1, [r0] + movs r0, 0 + bl sub_800EA3C + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _08013064 @ =gUnknown_3004F84 + ldr r0, _08013068 @ =sub_8013070 + str r0, [r1] + ldr r0, _0801306C @ =gUnknown_2023E82 + strb r5, [r0] + strb r5, [r0, 0x1] +_08013050: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08013058: .4byte gUnknown_2023BC8 +_0801305C: .4byte gUnknown_2023BC4 +_08013060: .4byte gUnknown_2022B50 +_08013064: .4byte gUnknown_3004F84 +_08013068: .4byte sub_8013070 +_0801306C: .4byte gUnknown_2023E82 + thumb_func_end sub_8013020 + + thumb_func_start sub_8013070 +sub_8013070: @ 8013070 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080130D4 @ =gUnknown_2023BC8 + ldr r1, [r0] + cmp r1, 0 + beq _08013084 + b _08013314 +_08013084: + ldr r2, _080130D8 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _080130DC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcc _08013092 + b _0801330E +_08013092: + movs r7, 0x58 + ldr r0, _080130E0 @ =gUnknown_2023BE4 + mov r8, r0 + mov r9, r2 + movs r1, 0x48 + add r1, r8 + mov r10, r1 +_080130A0: + ldr r0, _080130E4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080130E8 + ldr r4, _080130D8 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080130E8 + ldrb r0, [r4] + muls r0, r7 + mov r2, r8 + adds r3, r0, r2 + movs r2, 0 + movs r1, 0 +_080130C6: + adds r0, r3, r2 + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x57 + bls _080130C6 + b _080131B6 + .align 2, 0 +_080130D4: .4byte gUnknown_2023BC8 +_080130D8: .4byte gUnknown_2023BC4 +_080130DC: .4byte gUnknown_2023BCC +_080130E0: .4byte gUnknown_2023BE4 +_080130E4: .4byte gUnknown_2022B4C +_080130E8: + mov r1, r9 + ldrb r0, [r1] + muls r0, r7 + mov r2, r8 + adds r3, r0, r2 + movs r2, 0 + ldr r6, _08013230 @ =gUnknown_8254784 + ldr r5, _08013234 @ =gUnknown_20233C4 + ldr r4, _08013238 @ =gUnknown_2023BC4 +_080130FA: + adds r0, r3, r2 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x57 + bls _080130FA + mov r1, r9 + ldrb r0, [r1] + adds r2, r0, 0 + muls r2, r7 + add r2, r8 + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x6] + adds r2, 0x21 + strb r0, [r2] + mov r2, r9 + ldrb r0, [r2] + adds r2, r0, 0 + muls r2, r7 + add r2, r8 + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x7] + adds r2, 0x22 + strb r0, [r2] + mov r1, r9 + ldrb r0, [r1] + adds r1, r0, 0 + muls r1, r7 + add r1, r8 + ldrh r0, [r1] + ldrb r1, [r1, 0x17] + lsrs r1, 7 + bl sub_8040D38 + mov r2, r9 + ldrb r1, [r2] + muls r1, r7 + add r1, r8 + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r2] + bl sub_80751C4 + ldr r1, _0801323C @ =gUnknown_2023FE8 + lsls r0, 24 + lsrs r0, 23 + adds r0, 0xA8 + ldr r1, [r1] + adds r1, r0 + mov r2, r9 + ldrb r0, [r2] + muls r0, r7 + add r0, r8 + ldrh r0, [r0, 0x28] + strh r0, [r1] + movs r2, 0 + ldr r4, _08013238 @ =gUnknown_2023BC4 + movs r5, 0x58 + ldr r1, _08013240 @ =gUnknown_2023BFC + adds r6, r4, 0 + movs r0, 0x18 + negs r0, r0 + adds r0, r1 + mov r12, r0 + movs r3, 0x6 +_08013196: + ldrb r0, [r4] + muls r0, r5 + adds r0, r2, r0 + adds r0, r1 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x7 + ble _08013196 + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r7 + mov r0, r12 + adds r0, 0x50 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_080131B6: + ldr r4, _08013238 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + bne _080131D0 + movs r0, 0 + bl sub_800E0D4 + ldrb r0, [r4] + bl sub_8017248 +_080131D0: + ldr r5, _08013244 @ =gUnknown_2022B4C + ldr r0, [r5] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801324C + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080131F6 + movs r0, 0 + bl sub_800E0D4 + ldrb r0, [r4] + bl sub_8017248 +_080131F6: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080132C2 + ldr r0, [r5] + ldr r1, _08013248 @ =0x0001aa02 + ands r0, r1 + cmp r0, 0 + bne _080132C2 + ldrb r0, [r4] + muls r0, r7 + add r0, r8 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r7 + add r1, r10 + ldr r2, [r1] + movs r1, 0x2 + bl sub_8044898 + b _080132C2 + .align 2, 0 +_08013230: .4byte gUnknown_8254784 +_08013234: .4byte gUnknown_20233C4 +_08013238: .4byte gUnknown_2023BC4 +_0801323C: .4byte gUnknown_2023FE8 +_08013240: .4byte gUnknown_2023BFC +_08013244: .4byte gUnknown_2022B4C +_08013248: .4byte 0x0001aa02 +_0801324C: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080132C2 + ldr r1, [r5] + movs r2, 0xA0 + lsls r2, 8 + ands r2, r1 + cmp r2, 0 + beq _0801328E + movs r0, 0x80 + lsls r0, 8 + cmp r2, r0 + beq _080132B4 + ldrb r0, [r4] + muls r0, r7 + add r0, r8 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r7 + add r1, r10 + ldr r2, [r1] + movs r1, 0x2 + bl sub_8044898 + b _080132B4 +_0801328E: + ldr r0, _08013324 @ =0x0001aa02 + ands r1, r0 + cmp r1, 0 + bne _080132B4 + ldrb r0, [r4] + muls r0, r7 + add r0, r8 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r7 + add r1, r10 + ldr r2, [r1] + movs r1, 0x2 + bl sub_8044898 +_080132B4: + movs r0, 0 + bl sub_800E070 + mov r1, r9 + ldrb r0, [r1] + bl sub_8017248 +_080132C2: + ldr r0, _08013328 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080132F8 + ldr r4, _0801332C @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080132EC + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _080132F8 +_080132EC: + movs r0, 0 + bl sub_800E0D4 + ldrb r0, [r4] + bl sub_8017248 +_080132F8: + mov r2, r9 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + ldr r1, _08013330 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcs _0801330E + b _080130A0 +_0801330E: + ldr r1, _08013334 @ =gUnknown_3004F84 + ldr r0, _08013338 @ =sub_801333C + str r0, [r1] +_08013314: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08013324: .4byte 0x0001aa02 +_08013328: .4byte gUnknown_2022B4C +_0801332C: .4byte gUnknown_2023BC4 +_08013330: .4byte gUnknown_2023BCC +_08013334: .4byte gUnknown_3004F84 +_08013338: .4byte sub_801333C + thumb_func_end sub_8013070 + + thumb_func_start sub_801333C +sub_801333C: @ 801333C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x30 + ldr r0, _08013394 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0801334E + b _080134C8 +_0801334E: + ldr r0, _08013398 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0801335C + b _08013468 +_0801335C: + movs r7, 0 + add r0, sp, 0x4 + mov r8, r0 + mov r6, r8 + mov r5, sp +_08013366: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _0801339C @ =gUnknown_202402C + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _0801338C + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _080133A4 +_0801338C: + ldr r0, _080133A0 @ =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _080133B6 + .align 2, 0 +_08013394: .4byte gUnknown_2023BC8 +_08013398: .4byte gUnknown_2022B4C +_0801339C: .4byte gUnknown_202402C +_080133A0: .4byte 0x0000ffff +_080133A4: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 +_080133B6: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _08013366 + movs r0, 0x1 + bl sub_80751E8 + ldr r4, _08013410 @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + mov r1, sp + movs r2, 0x80 + bl sub_800EA7C + ldrb r0, [r4] + bl sub_8017248 + movs r7, 0 + mov r6, r8 + mov r5, sp +_080133E2: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08013414 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08013408 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _0801341C +_08013408: + ldr r0, _08013418 @ =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _0801342E + .align 2, 0 +_08013410: .4byte gUnknown_2023BC4 +_08013414: .4byte gUnknown_2024284 +_08013418: .4byte 0x0000ffff +_0801341C: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 +_0801342E: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _080133E2 + movs r0, 0 + bl sub_80751E8 + ldr r4, _0801345C @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + mov r1, sp + movs r2, 0x80 + bl sub_800EA7C + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _08013460 @ =gUnknown_3004F84 + ldr r0, _08013464 @ =sub_80134DC + b _080134C6 + .align 2, 0 +_0801345C: .4byte gUnknown_2023BC4 +_08013460: .4byte gUnknown_3004F84 +_08013464: .4byte sub_80134DC +_08013468: + movs r7, 0 + add r6, sp, 0x4 + mov r5, sp +_0801346E: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _0801349C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08013494 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _080134A4 +_08013494: + ldr r0, _080134A0 @ =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _080134B6 + .align 2, 0 +_0801349C: .4byte gUnknown_2024284 +_080134A0: .4byte 0x0000ffff +_080134A4: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 +_080134B6: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _0801346E + ldr r1, _080134D4 @ =gUnknown_3004F84 + ldr r0, _080134D8 @ =sub_8013514 +_080134C6: + str r0, [r1] +_080134C8: + add sp, 0x30 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080134D4: .4byte gUnknown_3004F84 +_080134D8: .4byte sub_8013514 + thumb_func_end sub_801333C + + thumb_func_start sub_80134DC +sub_80134DC: @ 80134DC + push {lr} + ldr r0, _08013504 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _080134FE + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _08013508 @ =gUnknown_2023BC4 + strb r0, [r1] + ldrb r1, [r1] + movs r0, 0 + bl sub_80173AC + ldr r1, _0801350C @ =gUnknown_3004F84 + ldr r0, _08013510 @ =sub_8013568 + str r0, [r1] +_080134FE: + pop {r0} + bx r0 + .align 2, 0 +_08013504: .4byte gUnknown_2023BC8 +_08013508: .4byte gUnknown_2023BC4 +_0801350C: .4byte gUnknown_3004F84 +_08013510: .4byte sub_8013568 + thumb_func_end sub_80134DC + + thumb_func_start sub_8013514 +sub_8013514: @ 8013514 + push {lr} + ldr r0, _08013550 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801354A + ldr r1, _08013554 @ =gUnknown_3004F84 + ldr r0, _08013558 @ =sub_80136E4 + str r0, [r1] + movs r0, 0 + movs r1, 0 + bl sub_80173AC + ldr r0, _0801355C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xA0 + lsls r1, 8 + ands r0, r1 + cmp r0, r1 + bne _0801354A + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _08013560 @ =gUnknown_2023FC4 + strb r0, [r1, 0x17] + ldr r0, _08013564 @ =gUnknown_81D91A1 + bl sub_801BBE4 +_0801354A: + pop {r0} + bx r0 + .align 2, 0 +_08013550: .4byte gUnknown_2023BC8 +_08013554: .4byte gUnknown_3004F84 +_08013558: .4byte sub_80136E4 +_0801355C: .4byte gUnknown_2022B4C +_08013560: .4byte gUnknown_2023FC4 +_08013564: .4byte gUnknown_81D91A1 + thumb_func_end sub_8013514 + + thumb_func_start sub_8013568 +sub_8013568: @ 8013568 + push {lr} + ldr r0, _08013590 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801358A + movs r0, 0x1 + bl sub_80751E8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + bl sub_80173AC + ldr r1, _08013594 @ =gUnknown_3004F84 + ldr r0, _08013598 @ =sub_801359C + str r0, [r1] +_0801358A: + pop {r0} + bx r0 + .align 2, 0 +_08013590: .4byte gUnknown_2023BC8 +_08013594: .4byte gUnknown_3004F84 +_08013598: .4byte sub_801359C + thumb_func_end sub_8013568 + + thumb_func_start sub_801359C +sub_801359C: @ 801359C + push {r4,lr} + ldr r0, _08013614 @ =gUnknown_2023BC8 + ldr r1, [r0] + cmp r1, 0 + bne _0801360C + ldr r2, _08013618 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _0801361C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcs _08013606 + adds r4, r2, 0 +_080135B4: + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080135CE + movs r0, 0 + bl sub_800EA5C + ldrb r0, [r4] + bl sub_8017248 +_080135CE: + ldr r0, _08013620 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080135F4 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _080135F4 + movs r0, 0 + bl sub_800EA5C + ldrb r0, [r4] + bl sub_8017248 +_080135F4: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _0801361C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _080135B4 +_08013606: + ldr r1, _08013624 @ =gUnknown_3004F84 + ldr r0, _08013628 @ =sub_801362C + str r0, [r1] +_0801360C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08013614: .4byte gUnknown_2023BC8 +_08013618: .4byte gUnknown_2023BC4 +_0801361C: .4byte gUnknown_2023BCC +_08013620: .4byte gUnknown_2022B4C +_08013624: .4byte gUnknown_3004F84 +_08013628: .4byte sub_801362C + thumb_func_end sub_801359C + + thumb_func_start sub_801362C +sub_801362C: @ 801362C + push {r4-r7,lr} + ldr r0, _080136A4 @ =gUnknown_2023BC8 + ldr r1, [r0] + cmp r1, 0 + bne _0801369C + ldr r2, _080136A8 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _080136AC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcs _08013696 + adds r4, r2, 0 + ldr r6, _080136B0 @ =gUnknown_2023BE4 + movs r5, 0x58 + adds r7, r6, 0 + adds r7, 0x48 +_0801364C: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08013684 + ldr r0, _080136B4 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _080136B8 @ =0x0001aa02 + ands r0, r1 + cmp r0, 0 + bne _08013684 + ldrb r0, [r4] + muls r0, r5 + adds r0, r6 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4] + muls r1, r5 + adds r1, r7 + ldr r2, [r1] + movs r1, 0x2 + bl sub_8044898 +_08013684: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _080136AC @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0801364C +_08013696: + ldr r1, _080136BC @ =gUnknown_3004F84 + ldr r0, _080136C0 @ =sub_80136E4 + str r0, [r1] +_0801369C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080136A4: .4byte gUnknown_2023BC8 +_080136A8: .4byte gUnknown_2023BC4 +_080136AC: .4byte gUnknown_2023BCC +_080136B0: .4byte gUnknown_2023BE4 +_080136B4: .4byte gUnknown_2022B4C +_080136B8: .4byte 0x0001aa02 +_080136BC: .4byte gUnknown_3004F84 +_080136C0: .4byte sub_80136E4 + thumb_func_end sub_801362C + + thumb_func_start sub_80136C4 +sub_80136C4: @ 80136C4 + push {lr} + ldr r0, _080136D8 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _080136D4 + ldr r1, _080136DC @ =gUnknown_3004F84 + ldr r0, _080136E0 @ =sub_80136E4 + str r0, [r1] +_080136D4: + pop {r0} + bx r0 + .align 2, 0 +_080136D8: .4byte gUnknown_2023BC8 +_080136DC: .4byte gUnknown_3004F84 +_080136E0: .4byte sub_80136E4 + thumb_func_end sub_80136C4 + + thumb_func_start sub_80136E4 +sub_80136E4: @ 80136E4 + push {lr} + ldr r0, _08013718 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08013712 + ldr r0, _0801371C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0801370C + movs r0, 0 + bl sub_80751E8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + bl sub_80173AC +_0801370C: + ldr r1, _08013720 @ =gUnknown_3004F84 + ldr r0, _08013724 @ =sub_8013728 + str r0, [r1] +_08013712: + pop {r0} + bx r0 + .align 2, 0 +_08013718: .4byte gUnknown_2023BC8 +_0801371C: .4byte gUnknown_2022B4C +_08013720: .4byte gUnknown_3004F84 +_08013724: .4byte sub_8013728 + thumb_func_end sub_80136E4 + + thumb_func_start sub_8013728 +sub_8013728: @ 8013728 + push {r4,lr} + ldr r0, _080137B4 @ =gUnknown_2023BC8 + ldr r1, [r0] + cmp r1, 0 + bne _080137AC + ldr r2, _080137B8 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _080137BC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcs _08013790 + adds r4, r2, 0 +_08013740: + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + bne _08013758 + movs r0, 0 + bl sub_800EA5C + ldrb r0, [r4] + bl sub_8017248 +_08013758: + ldr r0, _080137C0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801377E + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0801377E + movs r0, 0 + bl sub_800EA5C + ldrb r0, [r4] + bl sub_8017248 +_0801377E: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _080137BC @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08013740 +_08013790: + ldr r2, _080137C4 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0x4C + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xD9 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xB6 + strb r1, [r0] + ldr r1, _080137C8 @ =gUnknown_3004F84 + ldr r0, _080137CC @ =sub_801385C + str r0, [r1] +_080137AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080137B4: .4byte gUnknown_2023BC8 +_080137B8: .4byte gUnknown_2023BC4 +_080137BC: .4byte gUnknown_2023BCC +_080137C0: .4byte gUnknown_2022B4C +_080137C4: .4byte gUnknown_2023FE8 +_080137C8: .4byte gUnknown_3004F84 +_080137CC: .4byte sub_801385C + thumb_func_end sub_8013728 + + thumb_func_start sub_80137D0 +sub_80137D0: @ 80137D0 + push {r4,r5,lr} + ldr r0, _08013840 @ =gUnknown_2023BC8 + ldr r1, [r0] + cmp r1, 0 + bne _0801383A + ldr r2, _08013844 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _08013848 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcs _0801381E + adds r4, r2, 0 + ldr r5, _0801384C @ =gUnknown_2023BCE +_080137EA: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0801380C + ldrb r0, [r4] + lsls r0, 1 + adds r0, r5 + ldrb r1, [r0] + movs r0, 0 + movs r2, 0 + bl sub_800E090 + ldrb r0, [r4] + bl sub_8017248 +_0801380C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _08013848 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _080137EA +_0801381E: + ldr r2, _08013850 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0x4C + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xD9 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xB6 + strb r1, [r0] + ldr r1, _08013854 @ =gUnknown_3004F84 + ldr r0, _08013858 @ =sub_801385C + str r0, [r1] +_0801383A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08013840: .4byte gUnknown_2023BC8 +_08013844: .4byte gUnknown_2023BC4 +_08013848: .4byte gUnknown_2023BCC +_0801384C: .4byte gUnknown_2023BCE +_08013850: .4byte gUnknown_2023FE8 +_08013854: .4byte gUnknown_3004F84 +_08013858: .4byte sub_801385C + thumb_func_end sub_80137D0 + + thumb_func_start sub_801385C +sub_801385C: @ 801385C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + movs r0, 0 + mov r9, r0 + ldr r0, _080138A0 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _08013874 + b _08013ADA +_08013874: + ldr r0, _080138A4 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x4C + ldrb r0, [r0] + cmp r0, 0 + bne _080138FA + movs r5, 0 + ldr r1, _080138A8 @ =gUnknown_2023BCC + adds r3, r1, 0 + ldrb r0, [r1] + cmp r5, r0 + bge _0801389A + ldr r2, _080138AC @ =gUnknown_2023BDE +_0801388E: + adds r0, r5, r2 + strb r5, [r0] + adds r5, 0x1 + ldrb r0, [r1] + cmp r5, r0 + blt _0801388E +_0801389A: + movs r5, 0 + b _080138F0 + .align 2, 0 +_080138A0: .4byte gUnknown_2023BC8 +_080138A4: .4byte gUnknown_2023FE8 +_080138A8: .4byte gUnknown_2023BCC +_080138AC: .4byte gUnknown_2023BDE +_080138B0: + adds r4, r5, 0x1 + mov r8, r4 + ldrb r1, [r1] + cmp r8, r1 + bge _080138EE + ldr r6, _08013924 @ =gUnknown_2023BDE + ldr r3, _08013928 @ =gUnknown_2023BCC + lsls r7, r5, 24 +_080138C0: + adds r0, r5, r6 + ldrb r0, [r0] + adds r1, r4, r6 + ldrb r1, [r1] + movs r2, 0x1 + str r3, [sp, 0x4] + bl sub_8014CD8 + lsls r0, 24 + ldr r3, [sp, 0x4] + cmp r0, 0 + beq _080138E4 + lsls r1, r4, 24 + lsrs r1, 24 + lsrs r0, r7, 24 + bl sub_8014CA4 + ldr r3, [sp, 0x4] +_080138E4: + adds r4, 0x1 + ldr r0, _08013928 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _080138C0 +_080138EE: + mov r5, r8 +_080138F0: + adds r1, r3, 0 + ldrb r0, [r3] + subs r0, 0x1 + cmp r5, r0 + blt _080138B0 +_080138FA: + ldr r4, _0801392C @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r0, 0xB6 + ldrb r0, [r0] + cmp r0, 0 + bne _08013930 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0xFF + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08013930 + ldr r0, [r4] + adds r0, 0xB6 + movs r1, 0x1 + strb r1, [r0] + b _08013ADA + .align 2, 0 +_08013924: .4byte gUnknown_2023BDE +_08013928: .4byte gUnknown_2023BCC +_0801392C: .4byte gUnknown_2023FE8 +_08013930: + ldr r2, _08013AE8 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0x4C + ldr r1, _08013AEC @ =gUnknown_2023BCC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcs _0801398A + ldr r5, _08013AF0 @ =gUnknown_2023BDE + adds r4, r2, 0 +_08013944: + ldr r0, [r4] + adds r0, 0x4C + ldrb r0, [r0] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0801396A + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801396A: + ldr r1, [r4] + adds r1, 0x4C + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r1, r9 + cmp r1, 0 + beq _0801397C + b _08013ADA +_0801397C: + ldr r0, [r4] + adds r0, 0x4C + ldr r1, _08013AEC @ =gUnknown_2023BCC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcc _08013944 +_0801398A: + movs r0, 0 + str r0, [sp] + movs r0, 0x9 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080139A4 + b _08013ADA +_080139A4: + str r0, [sp] + movs r0, 0xB + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _080139BA + b _08013ADA +_080139BA: + ldr r2, _08013AE8 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0xD9 + ldr r1, _08013AEC @ =gUnknown_2023BCC + ldrb r0, [r0] + adds r3, r1, 0 + ldrb r1, [r3] + cmp r0, r1 + bcs _08013A14 + ldr r5, _08013AF0 @ =gUnknown_2023BDE + adds r4, r2, 0 +_080139D0: + ldr r0, [r4] + adds r0, 0xD9 + ldrb r0, [r0] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0 + movs r2, 0 + str r3, [sp, 0x4] + bl sub_801BC68 + lsls r0, 24 + ldr r3, [sp, 0x4] + cmp r0, 0 + beq _080139F6 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_080139F6: + ldr r1, [r4] + adds r1, 0xD9 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r0, r9 + cmp r0, 0 + bne _08013ADA + ldr r0, [r4] + adds r0, 0xD9 + ldr r1, _08013AEC @ =gUnknown_2023BCC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcc _080139D0 +_08013A14: + ldrb r0, [r3] + cmp r0, 0 + beq _08013A22 + adds r5, r0, 0 +_08013A1C: + subs r5, 0x1 + cmp r5, 0 + bne _08013A1C +_08013A22: + movs r5, 0 + ldr r1, _08013AE8 @ =gUnknown_2023FE8 + mov r8, r1 + movs r7, 0x6 + ldr r6, _08013AF4 @ =gUnknown_2023D7C + ldr r2, _08013AF8 @ =gUnknown_2023DC4 + movs r4, 0xFF + movs r3, 0 +_08013A32: + mov r1, r8 + ldr r0, [r1] + adds r0, r5, r0 + adds r0, 0x5C + strb r7, [r0] + adds r1, r5, r6 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + strh r3, [r2] + adds r2, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08013A32 + movs r0, 0 + bl sub_8015330 + bl sub_8015450 + ldr r0, _08013AE8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x91 + ldr r1, _08013AFC @ =gUnknown_2023D70 + ldrb r1, [r1] + strb r1, [r0] + ldr r1, _08013B00 @ =gUnknown_3004F84 + ldr r0, _08013B04 @ =sub_8014040 + str r0, [r1] + bl sub_80173D0 + ldr r1, _08013B08 @ =gUnknown_2023E82 + movs r2, 0 + adds r0, r1, 0x7 +_08013A74: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08013A74 + movs r5, 0 + ldr r3, _08013AEC @ =gUnknown_2023BCC + ldr r2, _08013AE8 @ =gUnknown_2023FE8 + ldr r6, _08013B0C @ =gUnknown_2023FC4 + ldr r7, _08013B10 @ =gUnknown_2023DCC + ldrb r0, [r3] + cmp r5, r0 + bge _08013AA6 + ldr r0, _08013B14 @ =gUnknown_2023BE4 + movs r4, 0x9 + negs r4, r4 + adds r1, r0, 0 + adds r1, 0x50 +_08013A96: + ldr r0, [r1] + ands r0, r4 + str r0, [r1] + adds r1, 0x58 + adds r5, 0x1 + ldrb r0, [r3] + cmp r5, r0 + blt _08013A96 +_08013AA6: + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x1] + ldr r0, [r2] + movs r3, 0xC0 + lsls r3, 1 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x1 + adds r0, r3 + strb r1, [r0] + movs r1, 0 + strb r1, [r6, 0x14] + ldr r0, [r2] + adds r0, 0x4D + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x3] + strb r1, [r7] + bl sub_8044EC8 + ldr r1, _08013B18 @ =gUnknown_2023E80 + strh r0, [r1] +_08013ADA: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08013AE8: .4byte gUnknown_2023FE8 +_08013AEC: .4byte gUnknown_2023BCC +_08013AF0: .4byte gUnknown_2023BDE +_08013AF4: .4byte gUnknown_2023D7C +_08013AF8: .4byte gUnknown_2023DC4 +_08013AFC: .4byte gUnknown_2023D70 +_08013B00: .4byte gUnknown_3004F84 +_08013B04: .4byte sub_8014040 +_08013B08: .4byte gUnknown_2023E82 +_08013B0C: .4byte gUnknown_2023FC4 +_08013B10: .4byte gUnknown_2023DCC +_08013B14: .4byte gUnknown_2023BE4 +_08013B18: .4byte gUnknown_2023E80 + thumb_func_end sub_801385C + + thumb_func_start sub_8013B1C +sub_8013B1C: @ 8013B1C + push {r4-r6,lr} + ldr r0, _08013BB4 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08013BAC + ldr r1, _08013BB8 @ =gUnknown_3004F84 + ldr r0, _08013BBC @ =sub_8013BD4 + str r0, [r1] + ldr r3, _08013BC0 @ =gUnknown_2023BCC + ldr r1, _08013BC4 @ =gUnknown_2023E82 + movs r2, 0 + adds r0, r1, 0x7 +_08013B34: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08013B34 + movs r4, 0 + ldrb r3, [r3] + cmp r4, r3 + bge _08013B86 + ldr r5, _08013BC8 @ =gUnknown_2023BE4 + adds r6, r5, 0 + adds r6, 0x4C +_08013B4A: + movs r0, 0x58 + adds r2, r4, 0 + muls r2, r0 + adds r1, r5, 0 + adds r1, 0x50 + adds r1, r2, r1 + ldr r3, [r1] + subs r0, 0x61 + ands r3, r0 + str r3, [r1] + adds r2, r6 + ldr r0, [r2] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _08013B7C + movs r0, 0x80 + lsls r0, 5 + ands r3, r0 + cmp r3, 0 + beq _08013B7C + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80172E8 +_08013B7C: + adds r4, 0x1 + ldr r0, _08013BC0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _08013B4A +_08013B86: + ldr r2, _08013BCC @ =gUnknown_2023FE8 + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x1] + ldr r0, [r2] + movs r3, 0xC0 + lsls r3, 1 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x1 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x3] + ldr r0, _08013BD0 @ =gUnknown_2023DCC + strb r1, [r0] +_08013BAC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08013BB4: .4byte gUnknown_2023BC8 +_08013BB8: .4byte gUnknown_3004F84 +_08013BBC: .4byte sub_8013BD4 +_08013BC0: .4byte gUnknown_2023BCC +_08013BC4: .4byte gUnknown_2023E82 +_08013BC8: .4byte gUnknown_2023BE4 +_08013BCC: .4byte gUnknown_2023FE8 +_08013BD0: .4byte gUnknown_2023DCC + thumb_func_end sub_8013B1C + + thumb_func_start sub_8013BD4 +sub_8013BD4: @ 8013BD4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0x1 + bl sub_8015330 + ldr r0, _08013C78 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0 + bne _08013C04 + bl sub_8017B04 + lsls r0, 24 + cmp r0, 0 + beq _08013BF8 + b _08013D20 +_08013BF8: + bl sub_8018258 + lsls r0, 24 + cmp r0, 0 + beq _08013C04 + b _08013D20 +_08013C04: + bl sub_8018F90 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08013C12 + b _08013D20 +_08013C12: + ldr r0, _08013C7C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x4D + strb r1, [r0] + bl sub_8018C98 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08013D20 + movs r0, 0 + bl sub_8015330 + ldr r2, _08013C80 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08013C84 @ =0xfffffdff + ands r0, r1 + ldr r1, _08013C88 @ =0xfff7ffff + ands r0, r1 + ldr r1, _08013C8C @ =0xffbfffff + ands r0, r1 + ldr r1, _08013C90 @ =0xffefffff + ands r0, r1 + str r0, [r2] + ldr r0, _08013C94 @ =gUnknown_2023FC4 + strb r4, [r0, 0x18] + strb r4, [r0, 0x19] + strb r4, [r0, 0x14] + ldr r0, _08013C98 @ =gUnknown_2023D50 + str r4, [r0] + ldr r0, _08013C9C @ =gUnknown_2023DCC + strb r4, [r0] + ldr r1, _08013CA0 @ =gUnknown_2023E82 + movs r2, 0 + adds r0, r1, 0x4 +_08013C58: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08013C58 + ldr r0, _08013C78 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0 + beq _08013CB0 + ldr r1, _08013CA4 @ =gUnknown_2023BE3 + movs r0, 0xC + strb r0, [r1] + ldr r1, _08013CA8 @ =gUnknown_3004F84 + ldr r0, _08013CAC @ =sub_80155C8 + str r0, [r1] + b _08013D20 + .align 2, 0 +_08013C78: .4byte gUnknown_2023E8A +_08013C7C: .4byte gUnknown_2023FE8 +_08013C80: .4byte gUnknown_2023DD0 +_08013C84: .4byte 0xfffffdff +_08013C88: .4byte 0xfff7ffff +_08013C8C: .4byte 0xffbfffff +_08013C90: .4byte 0xffefffff +_08013C94: .4byte gUnknown_2023FC4 +_08013C98: .4byte gUnknown_2023D50 +_08013C9C: .4byte gUnknown_2023DCC +_08013CA0: .4byte gUnknown_2023E82 +_08013CA4: .4byte gUnknown_2023BE3 +_08013CA8: .4byte gUnknown_3004F84 +_08013CAC: .4byte sub_80155C8 +_08013CB0: + ldr r1, _08013D30 @ =gUnknown_3004F90 + ldrb r0, [r1, 0x13] + cmp r0, 0xFE + bhi _08013CBC + adds r0, 0x1 + strb r0, [r1, 0x13] +_08013CBC: + movs r2, 0 + ldr r4, _08013D34 @ =gUnknown_2023BCC + ldr r0, _08013D38 @ =gUnknown_2023FE8 + mov r8, r0 + ldr r1, _08013D3C @ =gUnknown_3004F84 + mov r10, r1 + ldr r0, _08013D40 @ =gUnknown_2023D70 + mov r12, r0 + ldr r1, _08013D44 @ =sub_8014040 + mov r9, r1 + ldrb r0, [r4] + cmp r2, r0 + bge _08013CF2 + ldr r7, _08013D48 @ =gUnknown_2023D7C + movs r6, 0xFF + movs r5, 0 + ldr r3, _08013D4C @ =gUnknown_2023DC4 +_08013CDE: + adds r1, r2, r7 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + strh r5, [r3] + adds r3, 0x2 + adds r2, 0x1 + ldrb r1, [r4] + cmp r2, r1 + blt _08013CDE +_08013CF2: + movs r2, 0 + ldr r3, _08013D38 @ =gUnknown_2023FE8 + movs r1, 0x6 +_08013CF8: + ldr r0, [r3] + adds r0, r2, r0 + adds r0, 0x5C + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _08013CF8 + mov r2, r8 + ldr r0, [r2] + adds r0, 0x91 + mov r2, r12 + ldrb r1, [r2] + strb r1, [r0] + mov r0, r9 + mov r1, r10 + str r0, [r1] + bl sub_8044EC8 + ldr r1, _08013D50 @ =gUnknown_2023E80 + strh r0, [r1] +_08013D20: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08013D30: .4byte gUnknown_3004F90 +_08013D34: .4byte gUnknown_2023BCC +_08013D38: .4byte gUnknown_2023FE8 +_08013D3C: .4byte gUnknown_3004F84 +_08013D40: .4byte gUnknown_2023D70 +_08013D44: .4byte sub_8014040 +_08013D48: .4byte gUnknown_2023D7C +_08013D4C: .4byte gUnknown_2023DC4 +_08013D50: .4byte gUnknown_2023E80 + thumb_func_end sub_8013BD4 + + thumb_func_start sub_8013D54 +sub_8013D54: @ 8013D54 + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _08013D78 @ =gUnknown_2023BE4 + ldr r0, _08013D7C @ =gUnknown_2023BC4 + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08013D84 + ldr r1, _08013D80 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x7] + b _08013D8E + .align 2, 0 +_08013D78: .4byte gUnknown_2023BE4 +_08013D7C: .4byte gUnknown_2023BC4 +_08013D80: .4byte gUnknown_2023F54 +_08013D84: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r2, r0, 24 +_08013D8E: + ldr r1, _08013EA4 @ =gUnknown_2023D6F + ldr r3, _08013EA8 @ =gUnknown_2023BC4 + ldrb r0, [r3] + strb r0, [r1] + cmp r2, 0x25 + bne _08013D9C + b _08013F18 +_08013D9C: + ldr r0, _08013EAC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08013DAA + b _08013F18 +_08013DAA: + ldr r1, _08013EB0 @ =gUnknown_2023BE4 + ldrb r2, [r3] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x32 + bne _08013DBE + b _08013F18 +_08013DBE: + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _08013EB4 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _08013E52 + movs r7, 0 +_08013DD4: + lsrs r4, r7, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _08013DF8 + ldr r1, _08013EB0 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r5 + adds r0, r1 + adds r2, r0, 0 + adds r2, 0x20 + ldrb r0, [r2] + cmp r0, 0x17 + bne _08013DF8 + b _08013F20 +_08013DF8: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _08013E42 + ldr r3, _08013EB0 @ =gUnknown_2023BE4 + ldr r0, _08013EA8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + movs r2, 0x58 + muls r0, r2 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + beq _08013E42 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08013E42 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08013E42 + adds r0, r5, 0 + muls r0, r2 + adds r0, r3 + adds r2, r0, 0 + adds r2, 0x20 + ldrb r0, [r2] + cmp r0, 0x47 + bne _08013E42 + b _08013F3C +_08013E42: + movs r0, 0x80 + lsls r0, 17 + adds r7, r0 + adds r5, 0x1 + ldr r0, _08013EB4 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _08013DD4 +_08013E52: + ldr r4, _08013EA8 @ =gUnknown_2023BC4 + ldrb r1, [r4] + movs r0, 0 + str r0, [sp] + movs r0, 0xF + movs r2, 0x2A + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _08013EC4 + ldr r6, _08013EB0 @ =gUnknown_2023BE4 + ldrb r0, [r4] + movs r3, 0x58 + muls r0, r3 + adds r1, r0, r6 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x8 + beq _08013E8A + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x8 + bne _08013EC4 +_08013E8A: + ldr r0, _08013EB8 @ =gUnknown_2023FC4 + subs r1, r5, 0x1 + strb r1, [r0, 0x17] + ldr r2, _08013EBC @ =gUnknown_2023D6A + adds r0, r1, 0 + muls r0, r3 + adds r0, r6 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r2] + ldr r1, _08013EC0 @ =gUnknown_2023E82 + movs r0, 0x2 + b _08013F5C + .align 2, 0 +_08013EA4: .4byte gUnknown_2023D6F +_08013EA8: .4byte gUnknown_2023BC4 +_08013EAC: .4byte gUnknown_2022B4C +_08013EB0: .4byte gUnknown_2023BE4 +_08013EB4: .4byte gUnknown_2023BCC +_08013EB8: .4byte gUnknown_2023FC4 +_08013EBC: .4byte gUnknown_2023D6A +_08013EC0: .4byte gUnknown_2023E82 +_08013EC4: + ldr r1, _08013EF8 @ =gUnknown_2023BE4 + ldr r0, _08013EFC @ =gUnknown_2023BC4 + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08013F00 @ =0x0400e000 + ands r0, r1 + cmp r0, 0 + bne _08013EEE + ldr r1, _08013F04 @ =gUnknown_2023DFC + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _08013F0C +_08013EEE: + ldr r1, _08013F08 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + movs r0, 0x1 + b _08013F5E + .align 2, 0 +_08013EF8: .4byte gUnknown_2023BE4 +_08013EFC: .4byte gUnknown_2023BC4 +_08013F00: .4byte 0x0400e000 +_08013F04: .4byte gUnknown_2023DFC +_08013F08: .4byte gUnknown_2023E82 +_08013F0C: + ldr r0, _08013F1C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08013F58 +_08013F18: + movs r0, 0 + b _08013F5E + .align 2, 0 +_08013F1C: .4byte gUnknown_2022B4C +_08013F20: + ldr r0, _08013F30 @ =gUnknown_2023FC4 + strb r5, [r0, 0x17] + ldr r1, _08013F34 @ =gUnknown_2023D6A + ldrb r0, [r2] + strb r0, [r1] + ldr r1, _08013F38 @ =gUnknown_2023E82 + movs r0, 0x2 + b _08013F5C + .align 2, 0 +_08013F30: .4byte gUnknown_2023FC4 +_08013F34: .4byte gUnknown_2023D6A +_08013F38: .4byte gUnknown_2023E82 +_08013F3C: + ldr r0, _08013F4C @ =gUnknown_2023FC4 + strb r5, [r0, 0x17] + ldr r1, _08013F50 @ =gUnknown_2023D6A + ldrb r0, [r2] + strb r0, [r1] + ldr r1, _08013F54 @ =gUnknown_2023E82 + movs r0, 0x2 + b _08013F5C + .align 2, 0 +_08013F4C: .4byte gUnknown_2023FC4 +_08013F50: .4byte gUnknown_2023D6A +_08013F54: .4byte gUnknown_2023E82 +_08013F58: + ldr r1, _08013F68 @ =gUnknown_2023E82 + movs r0, 0x1 +_08013F5C: + strb r0, [r1, 0x5] +_08013F5E: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08013F68: .4byte gUnknown_2023E82 + thumb_func_end sub_8013D54 + + thumb_func_start sub_8013F6C +sub_8013F6C: @ 8013F6C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0 + ldr r0, _08014008 @ =gUnknown_2023BCE + mov r8, r0 + ldr r1, _0801400C @ =gUnknown_203B0DC + mov r12, r1 + ldr r7, _08014010 @ =gUnknown_2023FE8 + lsls r0, r5, 1 + adds r4, r0, r5 + adds r6, r0, 0 +_08013F88: + mov r0, r12 + adds r2, r3, r0 + ldr r1, [r7] + adds r0, r4, r3 + adds r0, r1 + adds r0, 0x60 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0x2 + ble _08013F88 + mov r1, r8 + adds r0, r6, r1 + ldrb r0, [r0] + bl sub_8128030 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r7, _08014010 @ =gUnknown_2023FE8 + ldr r0, [r7] + adds r0, r5, r0 + adds r0, 0x5C + ldrb r0, [r0] + bl sub_8128030 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8127FF4 + ldr r0, _08014014 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08014018 + movs r3, 0 + adds r4, r7, 0 + adds r6, r5 + movs r0, 0x2 + adds r1, r5, 0 + eors r1, r0 + ldr r7, _0801400C @ =gUnknown_203B0DC + lsls r0, r1, 1 + adds r5, r0, r1 +_08013FE6: + ldr r0, [r4] + adds r1, r6, r3 + adds r1, r0 + adds r1, 0x60 + adds r2, r3, r7 + ldrb r0, [r2] + strb r0, [r1] + ldr r1, [r4] + adds r0, r5, r3 + adds r0, r1 + adds r0, 0x60 + ldrb r1, [r2] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x2 + ble _08013FE6 + b _08014032 + .align 2, 0 +_08014008: .4byte gUnknown_2023BCE +_0801400C: .4byte gUnknown_203B0DC +_08014010: .4byte gUnknown_2023FE8 +_08014014: .4byte gUnknown_2022B4C +_08014018: + movs r3, 0 + adds r2, r6, r5 + ldr r4, _0801403C @ =gUnknown_203B0DC +_0801401E: + ldr r0, [r7] + adds r1, r2, r3 + adds r1, r0 + adds r1, 0x60 + adds r0, r3, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x1 + cmp r3, 0x2 + ble _0801401E +_08014032: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801403C: .4byte gUnknown_203B0DC + thumb_func_end sub_8013F6C + + thumb_func_start sub_8014040 +sub_8014040: @ 8014040 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r0, _0801408C @ =gUnknown_2023E82 + movs r1, 0 + strb r1, [r0, 0x4] + ldr r0, _08014090 @ =gUnknown_2023BC4 + strb r1, [r0] + ldr r0, _08014094 @ =gUnknown_2023BCC + adds r2, r0, 0 + ldrb r0, [r2] + cmp r1, r0 + bcc _08014064 + bl _08014C68 +_08014064: + ldr r4, _08014090 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0801408C @ =gUnknown_2023E82 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x6 + bls _08014080 + bl _08014C4E +_08014080: + lsls r0, 2 + ldr r1, _08014098 @ =_0801409C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801408C: .4byte gUnknown_2023E82 +_08014090: .4byte gUnknown_2023BC4 +_08014094: .4byte gUnknown_2023BCC +_08014098: .4byte _0801409C + .align 2, 0 +_0801409C: + .4byte _080140B8 + .4byte _080141DC + .4byte _08014764 + .4byte _08014AA0 + .4byte _08014B44 + .4byte _08014B88 + .4byte _08014C20 +_080140B8: + ldr r0, _08014150 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r4, _08014154 @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r1, r0 + adds r1, 0x5C + movs r0, 0x6 + strb r0, [r1] + ldr r0, _08014158 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08014114 + movs r1, 0x2 + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + beq _08014114 + eors r5, r1 + adds r0, r5, 0 + bl sub_80751E8 + ldr r1, [r4] + adds r1, 0x91 + ldrb r1, [r1] + ldr r2, _0801415C @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08014114 + ldr r4, _08014160 @ =gUnknown_2023E82 + adds r0, r5, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x4 + beq _08014114 + bl _08014C4E +_08014114: + ldr r0, _08014154 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x91 + ldrb r3, [r0] + ldr r1, _0801415C @ =gUnknown_825E45C + ldr r4, _08014150 @ =gUnknown_2023BC4 + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ands r3, r0 + cmp r3, 0 + beq _0801417C + ldr r0, _08014164 @ =gUnknown_2023D7C + adds r0, r2, r0 + movs r1, 0xD + strb r1, [r0] + ldr r0, _08014158 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08014168 + ldr r0, _08014160 @ =gUnknown_2023E82 + ldrb r1, [r4] + adds r1, r0 + movs r0, 0x4 + strb r0, [r1] + bl _08014C4E + .align 2, 0 +_08014150: .4byte gUnknown_2023BC4 +_08014154: .4byte gUnknown_2023FE8 +_08014158: .4byte gUnknown_2022B4C +_0801415C: .4byte gUnknown_825E45C +_08014160: .4byte gUnknown_2023E82 +_08014164: .4byte gUnknown_2023D7C +_08014168: + ldr r0, _08014178 @ =gUnknown_2023E82 + ldrb r1, [r4] + adds r1, r0 + movs r0, 0x3 + strb r0, [r1] + bl _08014C4E + .align 2, 0 +_08014178: .4byte gUnknown_2023E82 +_0801417C: + ldr r1, _080141B0 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _0801419C + movs r0, 0x80 + lsls r0, 15 + ands r1, r0 + cmp r1, 0 + beq _080141BC +_0801419C: + ldr r0, _080141B4 @ =gUnknown_2023D7C + adds r0, r2, r0 + strb r3, [r0] + ldr r1, _080141B8 @ =gUnknown_2023E82 + ldrb r0, [r4] + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + bl _08014C4E + .align 2, 0 +_080141B0: .4byte gUnknown_2023BE4 +_080141B4: .4byte gUnknown_2023D7C +_080141B8: .4byte gUnknown_2023E82 +_080141BC: + ldr r0, _080141D4 @ =gUnknown_2023D7C + ldrb r1, [r0] + ldr r0, _080141D8 @ =gUnknown_20233C4 + ldrb r2, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r2, r0 + movs r0, 0 + bl sub_800E4D4 + bl _08014B26 + .align 2, 0 +_080141D4: .4byte gUnknown_2023D7C +_080141D8: .4byte gUnknown_20233C4 +_080141DC: + ldr r4, _08014234 @ =gUnknown_2023BC8 + ldr r1, _08014238 @ =gUnknown_825E45C + ldr r3, _0801423C @ =gUnknown_2023BC4 + ldrb r5, [r3] + lsls r0, r5, 2 + adds r0, r1 + ldr r2, [r0] + lsls r0, r2, 4 + movs r1, 0xF0 + lsls r1, 24 + orrs r0, r1 + orrs r0, r2 + lsls r1, r2, 8 + orrs r0, r1 + lsls r2, 12 + orrs r0, r2 + ldr r1, [r4] + ands r1, r0 + mov r8, r3 + cmp r1, 0 + beq _0801420A + bl _08014C4E +_0801420A: + ldr r2, _08014240 @ =gUnknown_2023D7C + adds r2, r5, r2 + ldr r1, _08014244 @ =gUnknown_20233C4 + lsls r0, r5, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldrb r0, [r3] + lsls r0, 9 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xC + bls _08014228 + b _080146AC +_08014228: + lsls r0, 2 + ldr r1, _08014248 @ =_0801424C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014234: .4byte gUnknown_2023BC8 +_08014238: .4byte gUnknown_825E45C +_0801423C: .4byte gUnknown_2023BC4 +_08014240: .4byte gUnknown_2023D7C +_08014244: .4byte gUnknown_20233C4 +_08014248: .4byte _0801424C + .align 2, 0 +_0801424C: + .4byte _08014280 + .4byte _080143D4 + .4byte _08014450 + .4byte _080146AC + .4byte _080146AC + .4byte _08014620 + .4byte _080146AC + .4byte _080146AC + .4byte _080146AC + .4byte _080146AC + .4byte _080146AC + .4byte _080146AC + .4byte _08014670 +_08014280: + bl sub_8017998 + lsls r0, 24 + cmp r0, 0 + beq _080142D8 + ldr r0, _080142C8 @ =gUnknown_2023E82 + ldr r3, _080142CC @ =gUnknown_2023BC4 + ldrb r1, [r3] + adds r1, r0 + movs r4, 0 + movs r0, 0x5 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, _080142D0 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r4, [r1] + ldrb r1, [r3] + ldr r0, [r2] + adds r1, r0 + adds r1, 0x84 + movs r0, 0x3 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, [r2] + adds r2, r1, r2 + ldr r0, _080142D4 @ =gUnknown_20233C4 + lsls r1, 9 + adds r0, 0x3 + adds r1, r0 + ldrb r0, [r1] + strb r0, [r2, 0xC] + bl _08014C78 + .align 2, 0 +_080142C8: .4byte gUnknown_2023E82 +_080142CC: .4byte gUnknown_2023BC4 +_080142D0: .4byte gUnknown_2023FE8 +_080142D4: .4byte gUnknown_20233C4 +_080142D8: + ldr r3, _08014318 @ =gUnknown_2023E0C + ldr r5, _0801431C @ =gUnknown_2023BC4 + ldrb r4, [r5] + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r3 + ldrh r2, [r0, 0x6] + cmp r2, 0 + beq _0801432C + ldr r1, _08014320 @ =gUnknown_2023DC4 + lsls r0, r4, 1 + adds r0, r1 + strh r2, [r0] + ldrb r2, [r5] + ldr r0, _08014324 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, r2, r1 + adds r1, 0x80 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0xC] + strb r0, [r1] + ldr r1, _08014328 @ =gUnknown_2023E82 + ldrb r0, [r5] + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + bl _08014C78 + .align 2, 0 +_08014318: .4byte gUnknown_2023E0C +_0801431C: .4byte gUnknown_2023BC4 +_08014320: .4byte gUnknown_2023DC4 +_08014324: .4byte gUnknown_2023FE8 +_08014328: .4byte gUnknown_2023E82 +_0801432C: + add r2, sp, 0x4 + ldr r3, _080143CC @ =gUnknown_2023BE4 + movs r1, 0x58 + adds r0, r4, 0 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x10] + ldrb r0, [r5] + muls r0, r1 + adds r0, r3 + adds r0, 0x21 + ldrb r0, [r0] + strb r0, [r2, 0x12] + ldrb r0, [r5] + muls r0, r1 + adds r0, r3 + adds r0, 0x22 + ldrb r0, [r0] + strb r0, [r2, 0x13] + movs r4, 0 + mov r1, sp + adds r1, 0xC + str r1, [sp, 0x18] + add r2, sp, 0x10 + mov r10, r2 + mov r8, r3 + adds r7, r5, 0 + movs r6, 0x58 + movs r3, 0xC + add r3, r8 + mov r9, r3 + add r5, sp, 0x4 +_0801436E: + lsls r2, r4, 1 + ldrb r0, [r7] + muls r0, r6 + adds r0, r2, r0 + add r0, r9 + ldrh r0, [r0] + strh r0, [r5] + ldr r0, [sp, 0x18] + adds r3, r0, r4 + ldrb r0, [r7] + muls r0, r6 + adds r0, r4, r0 + mov r1, r8 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + adds r2, r1 + add r2, r9 + ldrh r0, [r2] + add r1, r8 + adds r1, 0x3B + ldrb r1, [r1] + lsls r2, r4, 24 + lsrs r2, 24 + bl sub_804101C + mov r2, r10 + adds r1, r2, r4 + strb r0, [r1] + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0801436E + ldr r0, _080143D0 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r1, r0 + movs r0, 0 + movs r2, 0 + add r3, sp, 0x4 + bl sub_800E520 + b _0801460E + .align 2, 0 +_080143CC: .4byte gUnknown_2023BE4 +_080143D0: .4byte gUnknown_2022B4C +_080143D4: + ldr r0, _08014410 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08014414 @ =0x00000902 + ands r0, r1 + cmp r0, 0 + beq _08014428 + ldr r1, _08014418 @ =gUnknown_2023D80 + mov r3, r8 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _0801441C @ =gUnknown_81D96A4 + str r1, [r0] + ldr r0, _08014420 @ =gUnknown_2023E82 + ldrb r1, [r3] + adds r1, r0 + movs r3, 0 + movs r0, 0x5 + strb r0, [r1] + mov r0, r8 + ldrb r1, [r0] + ldr r2, _08014424 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r3, [r1] + mov r1, r8 + ldrb r0, [r1] + b _0801472C + .align 2, 0 +_08014410: .4byte gUnknown_2022B4C +_08014414: .4byte 0x00000902 +_08014418: .4byte gUnknown_2023D80 +_0801441C: .4byte gUnknown_81D96A4 +_08014420: .4byte gUnknown_2023E82 +_08014424: .4byte gUnknown_2023FE8 +_08014428: + ldr r2, _08014448 @ =gUnknown_2023FE8 + ldr r4, _0801444C @ =gUnknown_2023BC4 + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + adds r0, 0x60 + ldr r1, [r2] + adds r1, r0 + movs r0, 0 + bl sub_800E55C + ldrb r0, [r4] + bl sub_8017248 + b _080146AC + .align 2, 0 +_08014448: .4byte gUnknown_2023FE8 +_0801444C: .4byte gUnknown_2023BC4 +_08014450: + ldr r5, _080144A8 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r3, _080144AC @ =gUnknown_2023FE8 + ldr r1, [r3] + adds r1, r0, r1 + adds r1, 0x58 + ldr r2, _080144B0 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r7, _080144B4 @ =gUnknown_2023BE4 + ldrb r2, [r5] + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + adds r1, r7, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080144B8 @ =0x0400e000 + ands r0, r1 + cmp r0, 0 + bne _08014492 + ldr r0, _080144BC @ =gUnknown_2023DFC + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x80 + lsls r0, 3 + ands r1, r0 + cmp r1, 0 + beq _080144C0 +_08014492: + lsls r1, r2, 1 + adds r1, r2 + adds r1, 0x60 + ldr r0, [r3] + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x6 + b _080145DE + .align 2, 0 +_080144A8: .4byte gUnknown_2023BC4 +_080144AC: .4byte gUnknown_2023FE8 +_080144B0: .4byte gUnknown_2023BCE +_080144B4: .4byte gUnknown_2023BE4 +_080144B8: .4byte 0x0400e000 +_080144BC: .4byte gUnknown_2023DFC +_080144C0: + str r1, [sp] + movs r0, 0xC + adds r1, r2, 0 + movs r2, 0x17 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08014548 + ldrb r1, [r5] + str r4, [sp] + movs r0, 0xC + movs r2, 0x47 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08014510 + ldrb r0, [r5] + muls r0, r6 + adds r1, r0, r7 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08014510 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08014510 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + bne _08014548 +_08014510: + ldr r5, _08014574 @ =gUnknown_2023BC4 + ldrb r1, [r5] + movs r0, 0 + str r0, [sp] + movs r0, 0xF + movs r2, 0x2A + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08014584 + ldr r2, _08014578 @ =gUnknown_2023BE4 + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x8 + beq _08014548 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x8 + bne _08014584 +_08014548: + subs r1, r4, 0x1 + lsls r1, 4 + movs r0, 0x4 + orrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0801457C @ =gUnknown_2023D6A + ldrb r3, [r0] + ldr r4, _08014580 @ =gUnknown_2023FE8 + ldr r0, _08014574 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + adds r2, 0x60 + ldr r0, [r4] + adds r0, r2 + str r0, [sp] + movs r0, 0 + movs r2, 0x6 + bl sub_800E590 + b _0801460E + .align 2, 0 +_08014574: .4byte gUnknown_2023BC4 +_08014578: .4byte gUnknown_2023BE4 +_0801457C: .4byte gUnknown_2023D6A +_08014580: .4byte gUnknown_2023FE8 +_08014584: + ldr r0, _080145A8 @ =gUnknown_2023BC4 + ldrb r1, [r0] + mov r8, r0 + cmp r1, 0x2 + bne _080145B4 + ldr r0, _080145AC @ =gUnknown_2023D7C + ldrb r0, [r0] + cmp r0, 0x2 + bne _080145B4 + ldr r0, _080145B0 @ =gUnknown_2023FE8 + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0x5C + ldrb r2, [r0] + mov r0, r8 + ldrb r1, [r0] + b _080145D0 + .align 2, 0 +_080145A8: .4byte gUnknown_2023BC4 +_080145AC: .4byte gUnknown_2023D7C +_080145B0: .4byte gUnknown_2023FE8 +_080145B4: + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0x3 + bne _080145F0 + ldr r0, _080145E8 @ =gUnknown_2023D7C + ldrb r0, [r0, 0x1] + cmp r0, 0x2 + bne _080145F0 + ldr r0, _080145EC @ =gUnknown_2023FE8 + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0x5D + ldrb r2, [r0] + ldrb r1, [r1] +_080145D0: + lsls r0, r1, 1 + adds r0, r1 + adds r0, 0x60 + adds r3, r0 + str r3, [sp] + movs r0, 0 + movs r1, 0 +_080145DE: + movs r3, 0 + bl sub_800E590 + b _0801460E + .align 2, 0 +_080145E8: .4byte gUnknown_2023D7C +_080145EC: .4byte gUnknown_2023FE8 +_080145F0: + ldr r2, _08014618 @ =gUnknown_2023FE8 + ldr r0, _0801461C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r1, r0, 1 + adds r1, r0 + adds r1, 0x60 + ldr r0, [r2] + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + movs r3, 0 + bl sub_800E590 +_0801460E: + ldr r0, _0801461C @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + b _080146AC + .align 2, 0 +_08014618: .4byte gUnknown_2023FE8 +_0801461C: .4byte gUnknown_2023BC4 +_08014620: + bl sub_8040F6C + lsls r0, 24 + cmp r0, 0 + beq _080146AC + ldr r1, _0801465C @ =gUnknown_2023D80 + ldr r3, _08014660 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _08014664 @ =gUnknown_81D8949 + str r1, [r0] + ldr r0, _08014668 @ =gUnknown_2023E82 + ldrb r1, [r3] + adds r1, r0 + movs r4, 0 + movs r0, 0x5 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, _0801466C @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r4, [r1] + ldrb r0, [r3] + ldr r1, [r2] + adds r0, r1 + adds r0, 0x84 + strb r4, [r0] + b _08014C78 + .align 2, 0 +_0801465C: .4byte gUnknown_2023D80 +_08014660: .4byte gUnknown_2023BC4 +_08014664: .4byte gUnknown_81D8949 +_08014668: .4byte gUnknown_2023E82 +_0801466C: .4byte gUnknown_2023FE8 +_08014670: + ldr r4, _080146A8 @ =gUnknown_2023E82 + mov r2, r8 + ldrb r1, [r2] + adds r1, r4 + movs r5, 0 + movs r0, 0x6 + strb r0, [r1] + ldrb r0, [r2] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + strb r5, [r0] + movs r0, 0 + bl sub_800EAE4 + mov r3, r8 + ldrb r0, [r3] + bl sub_8017248 + b _08014C78 + .align 2, 0 +_080146A8: .4byte gUnknown_2023E82 +_080146AC: + ldr r0, _080146D8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xA + ands r0, r1 + cmp r0, 0x8 + bne _080146EC + ldr r0, _080146DC @ =gUnknown_20233C4 + ldr r4, _080146E0 @ =gUnknown_2023BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x3 + bne _080146EC + ldr r0, _080146E4 @ =gUnknown_81D8924 + bl sub_801BBE4 + ldr r1, _080146E8 @ =gUnknown_2023E82 + ldrb r0, [r4] + adds r0, r1 + b _08014926 + .align 2, 0 +_080146D8: .4byte gUnknown_2022B4C +_080146DC: .4byte gUnknown_20233C4 +_080146E0: .4byte gUnknown_2023BC4 +_080146E4: .4byte gUnknown_81D8924 +_080146E8: .4byte gUnknown_2023E82 +_080146EC: + bl sub_8013D54 + lsls r0, 24 + cmp r0, 0 + beq _08014750 + ldr r0, _08014738 @ =gUnknown_20233C4 + ldr r4, _0801473C @ =gUnknown_2023BC4 + ldrb r2, [r4] + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x3 + bne _08014750 + ldr r1, _08014740 @ =gUnknown_2023D80 + lsls r0, r2, 2 + adds r0, r1 + ldr r1, _08014744 @ =gUnknown_81D8943 + str r1, [r0] + ldr r0, _08014748 @ =gUnknown_2023E82 + ldrb r1, [r4] + adds r1, r0 + movs r3, 0 + movs r0, 0x5 + strb r0, [r1] + ldrb r1, [r4] + ldr r2, _0801474C @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r3, [r1] + ldrb r0, [r4] +_0801472C: + ldr r1, [r2] + adds r0, r1 + adds r0, 0x84 + strb r3, [r0] + b _08014C78 + .align 2, 0 +_08014738: .4byte gUnknown_20233C4 +_0801473C: .4byte gUnknown_2023BC4 +_08014740: .4byte gUnknown_2023D80 +_08014744: .4byte gUnknown_81D8943 +_08014748: .4byte gUnknown_2023E82 +_0801474C: .4byte gUnknown_2023FE8 +_08014750: + ldr r2, _0801475C @ =gUnknown_2023E82 + ldr r0, _08014760 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_0801475C: .4byte gUnknown_2023E82 +_08014760: .4byte gUnknown_2023BC4 +_08014764: + ldr r4, _080147A8 @ =gUnknown_2023BC8 + ldr r1, _080147AC @ =gUnknown_825E45C + ldr r3, _080147B0 @ =gUnknown_2023BC4 + ldrb r5, [r3] + lsls r0, r5, 2 + adds r0, r1 + ldr r2, [r0] + lsls r0, r2, 4 + movs r1, 0xF0 + lsls r1, 24 + orrs r0, r1 + orrs r0, r2 + lsls r1, r2, 8 + orrs r0, r1 + lsls r2, 12 + orrs r0, r2 + ldr r1, [r4] + ands r1, r0 + mov r8, r3 + cmp r1, 0 + beq _08014790 + b _08014C4E +_08014790: + ldr r1, _080147B4 @ =gUnknown_2023D7C + adds r0, r5, r1 + ldrb r0, [r0] + adds r3, r1, 0 + cmp r0, 0x9 + bls _0801479E + b _08014C4E +_0801479E: + lsls r0, 2 + ldr r1, _080147B8 @ =_080147BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080147A8: .4byte gUnknown_2023BC8 +_080147AC: .4byte gUnknown_825E45C +_080147B0: .4byte gUnknown_2023BC4 +_080147B4: .4byte gUnknown_2023D7C +_080147B8: .4byte _080147BC + .align 2, 0 +_080147BC: + .4byte _080147E4 + .4byte _080148D8 + .4byte _08014910 + .4byte _08014A08 + .4byte _08014A2C + .4byte _08014A40 + .4byte _08014A54 + .4byte _08014A54 + .4byte _08014A68 + .4byte _08014A8C +_080147E4: + ldr r0, _08014804 @ =gUnknown_20233C4 + mov r1, r8 + ldrb r4, [r1] + lsls r1, r4, 9 + adds r2, r0, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r7, r0, 0 + cmp r1, 0x9 + bgt _08014808 + cmp r1, 0x3 + blt _08014808 + adds r0, r4, r3 + strb r1, [r0] + b _08014C78 + .align 2, 0 +_08014804: .4byte gUnknown_20233C4 +_08014808: + adds r3, r7, 0 + mov r5, r8 + ldrb r4, [r5] + lsls r1, r4, 9 + adds r6, r3, 0x2 + adds r0, r1, r6 + ldrb r2, [r0] + adds r3, 0x3 + mov r9, r3 + add r1, r9 + ldrb r0, [r1] + lsls r0, 8 + orrs r2, r0 + ldr r0, _08014830 @ =0x0000ffff + cmp r2, r0 + bne _08014838 + ldr r0, _08014834 @ =gUnknown_2023E82 + adds r0, r4, r0 + b _08014926 + .align 2, 0 +_08014830: .4byte 0x0000ffff +_08014834: .4byte gUnknown_2023E82 +_08014838: + bl sub_8017594 + lsls r0, 24 + cmp r0, 0 + beq _0801487C + ldr r0, _08014874 @ =gUnknown_2023E82 + ldrb r1, [r5] + adds r1, r0 + movs r3, 0 + movs r0, 0x5 + strb r0, [r1] + ldrb r1, [r5] + ldr r2, _08014878 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r1, r0 + adds r1, 0x54 + strb r3, [r1] + ldrb r0, [r5] + lsls r0, 9 + adds r1, r7, 0x1 + adds r0, r1 + strb r3, [r0] + ldrb r1, [r5] + ldr r0, [r2] + adds r1, r0 + adds r1, 0x84 + movs r0, 0x1 + strb r0, [r1] + b _08014C78 + .align 2, 0 +_08014874: .4byte gUnknown_2023E82 +_08014878: .4byte gUnknown_2023FE8 +_0801487C: + mov r2, r8 + ldrb r0, [r2] + ldr r4, _080148C8 @ =gUnknown_2023FE8 + ldr r1, [r4] + adds r1, r0, r1 + adds r1, 0x80 + lsls r0, 9 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080148CC @ =gUnknown_2023DC4 + ldrb r2, [r2] + lsls r5, r2, 1 + adds r5, r0 + ldr r3, _080148D0 @ =gUnknown_2023BE4 + ldr r4, [r4] + adds r0, r2, r4 + adds r0, 0x80 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + muls r1, r2 + adds r0, r1 + adds r3, 0xC + adds r0, r3 + ldrh r0, [r0] + strh r0, [r5] + mov r3, r8 + ldrb r0, [r3] + adds r4, r0, r4 + lsls r0, 9 + add r0, r9 + ldrb r0, [r0] + strb r0, [r4, 0xC] + ldr r0, _080148D4 @ =gUnknown_2023E82 + ldrb r1, [r3] + b _08014B30 + .align 2, 0 +_080148C8: .4byte gUnknown_2023FE8 +_080148CC: .4byte gUnknown_2023DC4 +_080148D0: .4byte gUnknown_2023BE4 +_080148D4: .4byte gUnknown_2023E82 +_080148D8: + ldr r2, _08014900 @ =gUnknown_20233C4 + ldr r5, _08014904 @ =gUnknown_2023BC4 + ldrb r4, [r5] + lsls r1, r4, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r0, [r1] + lsls r0, 8 + orrs r3, r0 + cmp r3, 0 + bne _080148F6 + b _08014C48 +_080148F6: + ldr r0, _08014908 @ =gUnknown_2023D68 + strh r3, [r0] + ldr r0, _0801490C @ =gUnknown_2023E82 + ldrb r1, [r5] + b _08014B30 + .align 2, 0 +_08014900: .4byte gUnknown_20233C4 +_08014904: .4byte gUnknown_2023BC4 +_08014908: .4byte gUnknown_2023D68 +_0801490C: .4byte gUnknown_2023E82 +_08014910: + ldr r6, _0801492C @ =gUnknown_20233C4 + ldr r7, _08014930 @ =gUnknown_2023BC4 + ldrb r2, [r7] + lsls r0, r2, 9 + adds r1, r6, 0x1 + adds r0, r1 + ldrb r1, [r0] + cmp r1, 0x6 + bne _08014938 + ldr r0, _08014934 @ =gUnknown_2023E82 + adds r0, r2, r0 +_08014926: + movs r1, 0 + strb r1, [r0] + b _08014C4E + .align 2, 0 +_0801492C: .4byte gUnknown_20233C4 +_08014930: .4byte gUnknown_2023BC4 +_08014934: .4byte gUnknown_2023E82 +_08014938: + ldr r0, _080149FC @ =gUnknown_2023FE8 + mov r12, r0 + ldr r0, [r0] + adds r0, r2, r0 + adds r0, 0x5C + strb r1, [r0] + ldr r0, _08014A00 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080149F6 + ldrb r0, [r7] + mov r1, r12 + ldr r2, [r1] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r2, [r1] + movs r0, 0xF + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + mov r2, r12 + ldr r1, [r2] + lsls r2, r0, 1 + adds r2, r0 + adds r2, r1 + adds r2, 0x60 + lsls r0, 9 + adds r5, r6, 0x2 + adds r0, r5 + ldrb r1, [r0] + movs r3, 0xF0 + adds r0, r3, 0 + ands r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r7] + mov r0, r12 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + adds r0, r2 + adds r0, 0x61 + lsls r1, 9 + adds r6, 0x3 + adds r1, r6 + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r7] + movs r4, 0x2 + eors r0, r4 + mov r1, r12 + ldr r2, [r1] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r2, [r1] + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + eors r0, r4 + mov r1, r12 + ldr r2, [r1] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r0, [r7] + lsls r0, 9 + adds r0, r5 + ldrb r0, [r0] + ands r3, r0 + lsrs r3, 4 + ldrb r0, [r1] + orrs r3, r0 + strb r3, [r1] + ldrb r0, [r7] + eors r4, r0 + mov r2, r12 + ldr r0, [r2] + lsls r1, r4, 1 + adds r1, r4 + adds r1, r0 + adds r1, 0x62 + ldrb r0, [r7] + lsls r0, 9 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] +_080149F6: + ldr r0, _08014A04 @ =gUnknown_2023E82 + ldrb r1, [r7] + b _08014B30 + .align 2, 0 +_080149FC: .4byte gUnknown_2023FE8 +_08014A00: .4byte gUnknown_2022B4C +_08014A04: .4byte gUnknown_2023E82 +_08014A08: + ldr r2, _08014A20 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 8 + orrs r0, r1 + str r0, [r2] + ldr r2, _08014A24 @ =gUnknown_2023E82 + ldr r0, _08014A28 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_08014A20: .4byte gUnknown_2023DD0 +_08014A24: .4byte gUnknown_2023E82 +_08014A28: .4byte gUnknown_2023BC4 +_08014A2C: + ldr r2, _08014A38 @ =gUnknown_2023E82 + ldr r0, _08014A3C @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_08014A38: .4byte gUnknown_2023E82 +_08014A3C: .4byte gUnknown_2023BC4 +_08014A40: + ldr r2, _08014A4C @ =gUnknown_2023E82 + ldr r0, _08014A50 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_08014A4C: .4byte gUnknown_2023E82 +_08014A50: .4byte gUnknown_2023BC4 +_08014A54: + ldr r2, _08014A60 @ =gUnknown_2023E82 + ldr r0, _08014A64 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_08014A60: .4byte gUnknown_2023E82 +_08014A64: .4byte gUnknown_2023BC4 +_08014A68: + ldr r2, _08014A80 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 8 + orrs r0, r1 + str r0, [r2] + ldr r2, _08014A84 @ =gUnknown_2023E82 + ldr r0, _08014A88 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_08014A80: .4byte gUnknown_2023DD0 +_08014A84: .4byte gUnknown_2023E82 +_08014A88: .4byte gUnknown_2023BC4 +_08014A8C: + ldr r2, _08014A98 @ =gUnknown_2023E82 + ldr r0, _08014A9C @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, r2 + b _08014B32 + .align 2, 0 +_08014A98: .4byte gUnknown_2023E82 +_08014A9C: .4byte gUnknown_2023BC4 +_08014AA0: + ldr r3, _08014B08 @ =gUnknown_2023BC8 + ldr r4, _08014B0C @ =gUnknown_825E45C + ldr r0, _08014B10 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r4 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + beq _08014ACA + b _08014C4E +_08014ACA: + ldr r0, _08014B14 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x41 + ands r0, r1 + cmp r0, 0x1 + bne _08014AFE + movs r1, 0x2 + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + bne _08014AFE + adds r0, r5, 0 + eors r0, r1 + bl sub_80751E8 + ldr r1, _08014B18 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r1, 0x91 + ldrb r1, [r1] + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08014B1C +_08014AFE: + movs r0, 0 + movs r1, 0 + bl sub_800EB54 + b _08014B24 + .align 2, 0 +_08014B08: .4byte gUnknown_2023BC8 +_08014B0C: .4byte gUnknown_825E45C +_08014B10: .4byte gUnknown_2023BC4 +_08014B14: .4byte gUnknown_2022B4C +_08014B18: .4byte gUnknown_2023FE8 +_08014B1C: + movs r0, 0 + movs r1, 0x1 + bl sub_800EB54 +_08014B24: + ldr r4, _08014B3C @ =gUnknown_2023BC4 +_08014B26: + ldrb r0, [r4] + bl sub_8017248 + ldr r0, _08014B40 @ =gUnknown_2023E82 + ldrb r1, [r4] +_08014B30: + adds r1, r0 +_08014B32: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08014C4E + .align 2, 0 +_08014B3C: .4byte gUnknown_2023BC4 +_08014B40: .4byte gUnknown_2023E82 +_08014B44: + ldr r3, _08014B78 @ =gUnknown_2023BC8 + ldr r1, _08014B7C @ =gUnknown_825E45C + ldr r0, _08014B80 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + bne _08014C4E + ldr r1, _08014B84 @ =gUnknown_2023E82 + ldrb r0, [r1, 0x4] + adds r0, 0x1 + strb r0, [r1, 0x4] + b _08014C4E + .align 2, 0 +_08014B78: .4byte gUnknown_2023BC8 +_08014B7C: .4byte gUnknown_825E45C +_08014B80: .4byte gUnknown_2023BC4 +_08014B84: .4byte gUnknown_2023E82 +_08014B88: + ldr r5, _08014BA8 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, _08014BAC @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r1, r2, r0 + adds r0, r1, 0 + adds r0, 0x54 + ldrb r0, [r0] + cmp r0, 0 + beq _08014BB4 + ldr r0, _08014BB0 @ =gUnknown_2023E82 + adds r0, r2, r0 + adds r1, 0x84 + ldrb r1, [r1] + strb r1, [r0] + b _08014C4E + .align 2, 0 +_08014BA8: .4byte gUnknown_2023BC4 +_08014BAC: .4byte gUnknown_2023FE8 +_08014BB0: .4byte gUnknown_2023E82 +_08014BB4: + ldr r0, _08014C08 @ =gUnknown_2023D6B + strb r2, [r0] + ldr r7, _08014C0C @ =gUnknown_2023D74 + ldr r6, _08014C10 @ =gUnknown_2023D80 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldr r4, [r0] + str r4, [r7] + ldr r3, _08014C14 @ =gUnknown_2023BC8 + ldr r1, _08014C18 @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + lsls r1, r2, 4 + movs r0, 0xF0 + lsls r0, 24 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, 8 + orrs r1, r0 + lsls r2, 12 + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, 0 + bne _08014BFA + ldr r0, _08014C1C @ =gUnknown_825011C + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_08014BFA: + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldr r1, [r7] + str r1, [r0] + b _08014C4E + .align 2, 0 +_08014C08: .4byte gUnknown_2023D6B +_08014C0C: .4byte gUnknown_2023D74 +_08014C10: .4byte gUnknown_2023D80 +_08014C14: .4byte gUnknown_2023BC8 +_08014C18: .4byte gUnknown_825E45C +_08014C1C: .4byte gUnknown_825011C +_08014C20: + ldr r3, _08014C88 @ =gUnknown_2023BC8 + ldr r1, _08014C8C @ =gUnknown_825E45C + ldr r0, _08014C90 @ =gUnknown_2023BC4 + ldrb r4, [r0] + lsls r0, r4, 2 + adds r0, r1 + ldr r2, [r0] + lsls r0, r2, 4 + movs r1, 0xF0 + lsls r1, 24 + orrs r0, r1 + orrs r0, r2 + lsls r1, r2, 8 + orrs r0, r1 + lsls r2, 12 + orrs r0, r2 + ldr r3, [r3] + ands r3, r0 + cmp r3, 0 + bne _08014C4E +_08014C48: + ldr r0, _08014C94 @ =gUnknown_2023E82 + adds r0, r4, r0 + strb r3, [r0] +_08014C4E: + ldr r0, _08014C90 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r0, _08014C98 @ =gUnknown_2023BCC + lsls r1, 24 + lsrs r1, 24 + adds r2, r0, 0 + ldrb r3, [r2] + cmp r1, r3 + bcs _08014C68 + bl _08014064 +_08014C68: + ldr r0, _08014C94 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x4] + ldrb r2, [r2] + cmp r0, r2 + bne _08014C78 + ldr r1, _08014C9C @ =gUnknown_3004F84 + ldr r0, _08014CA0 @ =sub_80150A8 + str r0, [r1] +_08014C78: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08014C88: .4byte gUnknown_2023BC8 +_08014C8C: .4byte gUnknown_825E45C +_08014C90: .4byte gUnknown_2023BC4 +_08014C94: .4byte gUnknown_2023E82 +_08014C98: .4byte gUnknown_2023BCC +_08014C9C: .4byte gUnknown_3004F84 +_08014CA0: .4byte sub_80150A8 + thumb_func_end sub_8014040 + + thumb_func_start sub_8014CA4 +sub_8014CA4: @ 8014CA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08014CD0 @ =gUnknown_2023BDA + adds r4, r0, r2 + ldrb r5, [r4] + adds r2, r1, r2 + ldrb r3, [r2] + strb r3, [r4] + strb r5, [r2] + ldr r2, _08014CD4 @ =gUnknown_2023BDE + adds r0, r2 + ldrb r5, [r0] + adds r1, r2 + ldrb r2, [r1] + strb r2, [r0] + strb r5, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08014CD0: .4byte gUnknown_2023BDA +_08014CD4: .4byte gUnknown_2023BDE + thumb_func_end sub_8014CA4 + + thumb_func_start sub_8014CD8 +sub_8014CD8: @ 8014CD8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _08014DA0 + ldr r1, [sp, 0x8] + str r1, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _08014DA0 + ldr r1, _08014D58 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r0, r1 + adds r0, 0x20 + ldrb r3, [r0] + cmp r3, 0x21 + bne _08014D44 + ldr r0, _08014D5C @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _08014D54 +_08014D44: + cmp r3, 0x22 + bne _08014D60 + ldr r0, _08014D5C @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08014D60 +_08014D54: + movs r3, 0x2 + b _08014D62 + .align 2, 0 +_08014D58: .4byte gUnknown_2023BE4 +_08014D5C: .4byte gUnknown_2023F1C +_08014D60: + movs r3, 0x1 +_08014D62: + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + ldr r2, _08014D98 @ =gUnknown_2023BE4 + adds r0, r2 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0x21 + bne _08014D82 + ldr r0, _08014D9C @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _08014D92 +_08014D82: + cmp r2, 0x22 + bne _08014DA2 + ldr r0, _08014D9C @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08014DA2 +_08014D92: + movs r7, 0x2 + b _08014DA4 + .align 2, 0 +_08014D98: .4byte gUnknown_2023BE4 +_08014D9C: .4byte gUnknown_2023F1C +_08014DA0: + movs r3, 0x1 +_08014DA2: + movs r7, 0x1 +_08014DA4: + ldr r1, _08014DE8 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r4, r0, r1 + ldrh r0, [r4, 0x6] + muls r3, r0 + ldr r2, _08014DEC @ =gUnknown_825DEAD + movs r1, 0x1B + ldrsb r1, [r4, r1] + lsls r1, 1 + adds r0, r1, r2 + ldrb r0, [r0] + muls r0, r3 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + bl __divsi3 + mov r8, r0 + ldrh r0, [r4, 0x2E] + cmp r0, 0xAF + bne _08014DF4 + ldr r1, _08014DF0 @ =gUnknown_2023F54 + mov r3, r9 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x7] + ldrb r5, [r0, 0x1A] + b _08014E08 + .align 2, 0 +_08014DE8: .4byte gUnknown_2023BE4 +_08014DEC: .4byte gUnknown_825DEAD +_08014DF0: .4byte gUnknown_2023F54 +_08014DF4: + ldrh r0, [r4, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r6, r0, 24 + ldrh r0, [r4, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r5, r0, 24 +_08014E08: + ldr r0, _08014EC4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08014E3C + ldr r0, _08014EC8 @ =0x00000822 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _08014E3C + mov r0, r9 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08014E3C + movs r0, 0x6E + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0x64 + bl __udivsi3 + mov r8, r0 +_08014E3C: + cmp r6, 0x18 + bne _08014E46 + mov r2, r8 + lsrs r2, 1 + mov r8, r2 +_08014E46: + ldr r1, _08014ECC @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08014E64 + mov r0, r8 + lsrs r0, 2 + mov r8, r0 +_08014E64: + cmp r6, 0x1A + bne _08014E80 + ldr r0, _08014ED0 @ =gUnknown_2023E80 + ldrh r4, [r0] + lsls r0, r5, 16 + subs r0, r5 + movs r1, 0x64 + bl __divsi3 + cmp r4, r0 + bge _08014E80 + movs r1, 0x1 + negs r1, r1 + mov r8, r1 +_08014E80: + ldr r1, _08014ECC @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + adds r4, r0, r1 + ldrh r0, [r4, 0x6] + adds r3, r0, 0 + muls r3, r7 + ldr r2, _08014ED4 @ =gUnknown_825DEAD + movs r1, 0x1B + ldrsb r1, [r4, r1] + lsls r1, 1 + adds r0, r1, r2 + ldrb r0, [r0] + muls r0, r3 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + bl __divsi3 + adds r7, r0, 0 + ldrh r0, [r4, 0x2E] + cmp r0, 0xAF + bne _08014EDC + ldr r1, _08014ED8 @ =gUnknown_2023F54 + mov r3, r10 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x7] + ldrb r5, [r0, 0x1A] + b _08014EF0 + .align 2, 0 +_08014EC4: .4byte gUnknown_2022B4C +_08014EC8: .4byte 0x00000822 +_08014ECC: .4byte gUnknown_2023BE4 +_08014ED0: .4byte gUnknown_2023E80 +_08014ED4: .4byte gUnknown_825DEAD +_08014ED8: .4byte gUnknown_2023F54 +_08014EDC: + ldrh r0, [r4, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r6, r0, 24 + ldrh r0, [r4, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r5, r0, 24 +_08014EF0: + ldr r0, _08014F68 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08014F20 + ldr r0, _08014F6C @ =0x00000822 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _08014F20 + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08014F20 + movs r0, 0x6E + muls r0, r7 + movs r1, 0x64 + bl __udivsi3 + adds r7, r0, 0 +_08014F20: + cmp r6, 0x18 + bne _08014F26 + lsrs r7, 1 +_08014F26: + ldr r2, _08014F70 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08014F42 + lsrs r7, 2 +_08014F42: + cmp r6, 0x1A + bne _08014F5C + ldr r0, _08014F74 @ =gUnknown_2023E80 + ldrh r4, [r0] + lsls r0, r5, 16 + subs r0, r5 + movs r1, 0x64 + bl __divsi3 + cmp r4, r0 + bge _08014F5C + movs r7, 0x1 + negs r7, r7 +_08014F5C: + ldr r2, [sp, 0x4] + cmp r2, 0 + beq _08014F78 + movs r3, 0 + b _08015014 + .align 2, 0 +_08014F68: .4byte gUnknown_2022B4C +_08014F6C: .4byte 0x00000822 +_08014F70: .4byte gUnknown_2023BE4 +_08014F74: .4byte gUnknown_2023E80 +_08014F78: + ldr r0, _08014F98 @ =gUnknown_2023D7C + mov r3, r9 + adds r1, r3, r0 + ldrb r1, [r1] + adds r2, r0, 0 + cmp r1, 0 + bne _08014FC8 + ldr r0, _08014F9C @ =gUnknown_2023E8C + lsls r1, r3, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + bge _08014FA0 + movs r3, 0xA5 + b _08014FCA + .align 2, 0 +_08014F98: .4byte gUnknown_2023D7C +_08014F9C: .4byte gUnknown_2023E8C +_08014FA0: + ldr r0, _08014FC0 @ =gUnknown_2023FE8 + ldr r0, [r0] + add r0, r9 + adds r0, 0x80 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + mov r3, r9 + muls r3, r1 + adds r1, r3, 0 + adds r0, r1 + ldr r1, _08014FC4 @ =gUnknown_2023BE4 + adds r1, 0xC + adds r0, r1 + ldrh r3, [r0] + b _08014FCA + .align 2, 0 +_08014FC0: .4byte gUnknown_2023FE8 +_08014FC4: .4byte gUnknown_2023BE4 +_08014FC8: + movs r3, 0 +_08014FCA: + mov r1, r10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08015014 + ldr r0, _08014FE8 @ =gUnknown_2023E8C + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + bge _08014FEC + movs r2, 0xA5 + b _08015016 + .align 2, 0 +_08014FE8: .4byte gUnknown_2023E8C +_08014FEC: + ldr r0, _0801500C @ =gUnknown_2023FE8 + ldr r0, [r0] + add r0, r10 + adds r0, 0x80 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + mov r2, r10 + muls r2, r1 + adds r1, r2, 0 + adds r0, r1 + ldr r1, _08015010 @ =gUnknown_2023BE4 + adds r1, 0xC + adds r0, r1 + ldrh r2, [r0] + b _08015016 + .align 2, 0 +_0801500C: .4byte gUnknown_2023FE8 +_08015010: .4byte gUnknown_2023BE4 +_08015014: + movs r2, 0 +_08015016: + ldr r4, _08015060 @ =gUnknown_8250C04 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r4 + movs r1, 0x7 + ldrsb r1, [r0, r1] + lsls r3, r2, 1 + cmp r1, 0 + bne _0801503A + adds r0, r3, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x7] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08015078 +_0801503A: + adds r0, r3, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x7] + lsls r0, 24 + asrs r0, 24 + cmp r1, r0 + bne _0801506E + cmp r8, r7 + bne _08015064 + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08015064 + movs r3, 0x2 + b _08015094 + .align 2, 0 +_08015060: .4byte gUnknown_8250C04 +_08015064: + cmp r8, r7 + bcs _08015096 + movs r0, 0x1 + str r0, [sp, 0x8] + b _08015096 +_0801506E: + cmp r1, r0 + bge _08015096 + movs r1, 0x1 + str r1, [sp, 0x8] + b _08015096 +_08015078: + cmp r8, r7 + bne _0801508E + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0801508E + movs r2, 0x2 + str r2, [sp, 0x8] + b _08015096 +_0801508E: + cmp r8, r7 + bcs _08015096 + movs r3, 0x1 +_08015094: + str r3, [sp, 0x8] +_08015096: + ldr r0, [sp, 0x8] + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8014CD8 + + thumb_func_start sub_80150A8 +sub_80150A8: @ 80150A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r3, 0 + ldr r0, _080150FC @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08015114 + ldr r0, _08015100 @ =gUnknown_2023BC4 + strb r3, [r0] + ldr r4, _08015104 @ =gUnknown_2023BCC + mov r8, r0 + ldrb r0, [r4] + cmp r3, r0 + bcc _080150D0 + b _080152FA +_080150D0: + ldr r7, _08015108 @ =gUnknown_2023BDA + ldr r6, _0801510C @ =gUnknown_2023D7C + mov r2, r8 + ldr r5, _08015110 @ =gUnknown_2023BDE +_080150D8: + adds r1, r3, r7 + ldrb r0, [r2] + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r3, r5 + ldrb r0, [r2] + strb r0, [r1] + adds r3, 0x1 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + cmp r0, r1 + bcc _080150D8 + b _080152FA + .align 2, 0 +_080150FC: .4byte gUnknown_2022B4C +_08015100: .4byte gUnknown_2023BC4 +_08015104: .4byte gUnknown_2023BCC +_08015108: .4byte gUnknown_2023BDA +_0801510C: .4byte gUnknown_2023D7C +_08015110: .4byte gUnknown_2023BDE +_08015114: + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + beq _08015164 + ldr r0, _08015158 @ =gUnknown_2023BC4 + strb r3, [r0] + ldr r1, _0801515C @ =gUnknown_2023BCC + mov r8, r0 + adds r2, r1, 0 + ldrb r2, [r2] + cmp r3, r2 + bcs _08015174 + ldr r0, _08015160 @ =gUnknown_2023D7C + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x3 + beq _08015172 +_08015136: + mov r7, r8 + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0801515C @ =gUnknown_2023BCC + ldrb r1, [r1] + cmp r0, r1 + bcs _08015174 + ldrb r0, [r7] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _08015136 + b _08015172 + .align 2, 0 +_08015158: .4byte gUnknown_2023BC4 +_0801515C: .4byte gUnknown_2023BCC +_08015160: .4byte gUnknown_2023D7C +_08015164: + ldr r0, _080151D8 @ =gUnknown_2023D7C + ldrb r0, [r0] + ldr r2, _080151DC @ =gUnknown_2023BC4 + mov r8, r2 + cmp r0, 0x3 + bne _08015174 + strb r3, [r2] +_08015172: + movs r3, 0x5 +_08015174: + cmp r3, 0x5 + bne _080151F8 + ldr r6, _080151E0 @ =gUnknown_2023BDA + ldr r1, _080151D8 @ =gUnknown_2023D7C + mov r3, r8 + ldrb r0, [r3] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r6] + ldr r2, _080151E4 @ =gUnknown_2023BDE + ldrb r0, [r3] + strb r0, [r2] + movs r3, 0x1 + movs r5, 0 + adds r4, r1, 0 + ldr r7, _080151E8 @ =gUnknown_3004F84 + mov r10, r7 + ldr r0, _080151EC @ =sub_80154A0 + mov r12, r0 + ldr r1, _080151F0 @ =gUnknown_2023FE8 + mov r9, r1 + ldr r7, _080151F4 @ =gUnknown_2023BCC + ldrb r7, [r7] + cmp r5, r7 + bge _080151CC + adds r7, r6, 0 + adds r6, r4, 0 + adds r4, r2, 0 + ldr r2, _080151F4 @ =gUnknown_2023BCC +_080151AE: + mov r0, r8 + ldrb r0, [r0] + cmp r5, r0 + beq _080151C4 + adds r1, r3, r7 + adds r0, r5, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r4 + strb r5, [r0] + adds r3, 0x1 +_080151C4: + adds r5, 0x1 + ldrb r1, [r2] + cmp r5, r1 + blt _080151AE +_080151CC: + mov r2, r12 + mov r3, r10 + str r2, [r3] + mov r7, r9 + ldr r0, [r7] + b _08015304 + .align 2, 0 +_080151D8: .4byte gUnknown_2023D7C +_080151DC: .4byte gUnknown_2023BC4 +_080151E0: .4byte gUnknown_2023BDA +_080151E4: .4byte gUnknown_2023BDE +_080151E8: .4byte gUnknown_3004F84 +_080151EC: .4byte sub_80154A0 +_080151F0: .4byte gUnknown_2023FE8 +_080151F4: .4byte gUnknown_2023BCC +_080151F8: + movs r0, 0 + mov r1, r8 + strb r0, [r1] + ldr r2, _08015288 @ =gUnknown_2023BCC + ldrb r0, [r2] + cmp r0, 0 + beq _0801523E + ldr r6, _0801528C @ =gUnknown_2023D7C + mov r2, r8 + ldr r5, _08015290 @ =gUnknown_2023BDA + ldr r4, _08015294 @ =gUnknown_2023BDE +_0801520E: + ldrb r0, [r2] + adds r0, r6 + ldrb r1, [r0] + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0801522C + adds r0, r3, r5 + strb r1, [r0] + adds r1, r3, r4 + mov r7, r8 + ldrb r0, [r7] + strb r0, [r1] + adds r3, 0x1 +_0801522C: + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08015288 @ =gUnknown_2023BCC + ldrb r1, [r1] + cmp r0, r1 + bcc _0801520E +_0801523E: + movs r0, 0 + mov r2, r8 + strb r0, [r2] + ldr r7, _08015288 @ =gUnknown_2023BCC + ldrb r0, [r7] + cmp r0, 0 + beq _08015282 + ldr r6, _0801528C @ =gUnknown_2023D7C + ldr r5, _08015290 @ =gUnknown_2023BDA + ldr r4, _08015294 @ =gUnknown_2023BDE +_08015252: + ldrb r0, [r2] + adds r0, r6 + ldrb r1, [r0] + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08015270 + adds r0, r3, r5 + strb r1, [r0] + adds r1, r3, r4 + mov r7, r8 + ldrb r0, [r7] + strb r0, [r1] + adds r3, 0x1 +_08015270: + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08015288 @ =gUnknown_2023BCC + ldrb r1, [r1] + cmp r0, r1 + bcc _08015252 +_08015282: + movs r5, 0 + b _080152F0 + .align 2, 0 +_08015288: .4byte gUnknown_2023BCC +_0801528C: .4byte gUnknown_2023D7C +_08015290: .4byte gUnknown_2023BDA +_08015294: .4byte gUnknown_2023BDE +_08015298: + adds r4, r5, 0x1 + adds r7, r4, 0 + ldrb r1, [r1] + cmp r7, r1 + bge _080152EE + ldr r6, _08015318 @ =gUnknown_2023BDA + lsls r2, r5, 24 + mov r8, r2 +_080152A8: + ldr r0, _0801531C @ =gUnknown_2023BDE + adds r1, r5, r0 + ldrb r3, [r1] + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r5, r6 + ldrb r2, [r0] + cmp r2, 0x1 + beq _080152E4 + adds r0, r4, r6 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080152E4 + cmp r2, 0x2 + beq _080152E4 + cmp r0, 0x2 + beq _080152E4 + adds r0, r3, 0 + movs r2, 0 + bl sub_8014CD8 + lsls r0, 24 + cmp r0, 0 + beq _080152E4 + lsls r1, r4, 24 + lsrs r1, 24 + mov r3, r8 + lsrs r0, r3, 24 + bl sub_8014CA4 +_080152E4: + adds r4, 0x1 + ldr r0, _08015320 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _080152A8 +_080152EE: + adds r5, r7, 0 +_080152F0: + ldr r1, _08015320 @ =gUnknown_2023BCC + ldrb r0, [r1] + subs r0, 0x1 + cmp r5, r0 + blt _08015298 +_080152FA: + ldr r1, _08015324 @ =gUnknown_3004F84 + ldr r0, _08015328 @ =sub_80154A0 + str r0, [r1] + ldr r0, _0801532C @ =gUnknown_2023FE8 + ldr r0, [r0] +_08015304: + adds r0, 0x48 + movs r1, 0 + strb r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015318: .4byte gUnknown_2023BDA +_0801531C: .4byte gUnknown_2023BDE +_08015320: .4byte gUnknown_2023BCC +_08015324: .4byte gUnknown_3004F84 +_08015328: .4byte sub_80154A0 +_0801532C: .4byte gUnknown_2023FE8 + thumb_func_end sub_80150A8 + + thumb_func_start sub_8015330 +sub_8015330: @ 8015330 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _08015388 @ =gUnknown_2023BC4 + movs r0, 0 + strb r0, [r1] + ldr r0, _0801538C @ =gUnknown_2023BCC + ldrb r2, [r0] + adds r5, r1, 0 + cmp r2, 0 + beq _08015428 + ldr r7, _08015390 @ =gUnknown_2023E8C + adds r6, r5, 0 + ldr r0, _08015394 @ =gUnknown_2023C34 + mov r12, r0 + ldr r1, _08015398 @ =gUnknown_2023E0C + mov r8, r1 + mov r10, r8 +_0801535E: + mov r2, r9 + cmp r2, 0 + beq _0801539C + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, 4 + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + b _080153F8 + .align 2, 0 +_08015388: .4byte gUnknown_2023BC4 +_0801538C: .4byte gUnknown_2023BCC +_08015390: .4byte gUnknown_2023E8C +_08015394: .4byte gUnknown_2023C34 +_08015398: .4byte gUnknown_2023E0C +_0801539C: + ldrb r0, [r6] + lsls r0, 4 + adds r2, r0, r7 + movs r1, 0 + mov r4, r10 + movs r3, 0 +_080153A8: + adds r0, r2, r1 + strb r3, [r0] + adds r1, 0x1 + cmp r1, 0xF + bls _080153A8 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1, 0x16] + cmp r0, 0 + beq _080153C6 + subs r0, 0x1 + strb r0, [r1, 0x16] +_080153C6: + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1, 0x19] + cmp r0, 0 + beq _080153F8 + subs r0, 0x1 + strb r0, [r1, 0x19] + ldrb r2, [r5] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x19] + cmp r0, 0 + bne _080153F8 + movs r0, 0x58 + muls r2, r0 + add r2, r12 + ldr r0, [r2] + ldr r1, _08015440 @ =0xffbfffff + ands r0, r1 + str r0, [r2] +_080153F8: + ldrb r2, [r5] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0xA] + cmp r0, 0 + bne _08015416 + movs r0, 0x58 + muls r2, r0 + add r2, r12 + ldr r0, [r2] + ldr r1, _08015444 @ =0xfeffffff + ands r0, r1 + str r0, [r2] +_08015416: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08015448 @ =gUnknown_2023BCC + ldrb r1, [r1] + cmp r0, r1 + bcc _0801535E +_08015428: + movs r0, 0 + ldr r2, _0801544C @ =gUnknown_2023DE4 + strb r0, [r2, 0x8] + strb r0, [r2, 0x14] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015440: .4byte 0xffbfffff +_08015444: .4byte 0xfeffffff +_08015448: .4byte gUnknown_2023BCC +_0801544C: .4byte gUnknown_2023DE4 + thumb_func_end sub_8015330 + + thumb_func_start sub_8015450 +sub_8015450: @ 8015450 + push {r4-r6,lr} + ldr r2, _08015494 @ =gUnknown_2023BC4 + movs r0, 0 + strb r0, [r2] + ldr r0, _08015498 @ =gUnknown_2023BCC + ldrb r1, [r0] + adds r6, r0, 0 + cmp r1, 0 + beq _0801548E + adds r3, r2, 0 + movs r4, 0 + ldr r5, _0801549C @ =gUnknown_2023ECC +_08015468: + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r5 + movs r1, 0 +_08015474: + adds r0, r2, r1 + strb r4, [r0] + adds r1, 0x1 + cmp r1, 0x13 + bls _08015474 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r6] + cmp r0, r1 + bcc _08015468 +_0801548E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08015494: .4byte gUnknown_2023BC4 +_08015498: .4byte gUnknown_2023BCC +_0801549C: .4byte gUnknown_2023ECC + thumb_func_end sub_8015450 + + thumb_func_start sub_80154A0 +sub_80154A0: @ 80154A0 + push {r4-r7,lr} + ldr r0, _08015528 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _0801555E + ldr r2, _0801552C @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0x48 + ldr r1, _08015530 @ =gUnknown_2023BCC + ldrb r0, [r0] + mov r12, r2 + adds r6, r1, 0 + ldrb r1, [r6] + cmp r0, r1 + bcs _0801555E + ldr r5, _08015534 @ =gUnknown_2023BC4 + ldr r4, _08015538 @ =gUnknown_2023D6B + movs r7, 0x84 + lsls r7, 1 +_080154CC: + ldr r1, [r2] + adds r1, 0x48 + ldrb r0, [r1] + strb r0, [r4] + strb r0, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, _0801553C @ =gUnknown_2023DC4 + ldrb r3, [r5] + lsls r0, r3, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r7 + bne _08015550 + ldr r1, _08015540 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r3 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _08015550 + ldr r2, _08015544 @ =gUnknown_2023E0C + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsls r0, 31 + cmp r0, 0 + bne _08015550 + ldr r0, _08015548 @ =gUnknown_2023E8C + lsls r1, r3, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + blt _08015550 + ldr r0, _0801554C @ =gUnknown_81D9015 + bl sub_801BBE4 + b _08015598 + .align 2, 0 +_08015528: .4byte gUnknown_2023DD0 +_0801552C: .4byte gUnknown_2023FE8 +_08015530: .4byte gUnknown_2023BCC +_08015534: .4byte gUnknown_2023BC4 +_08015538: .4byte gUnknown_2023D6B +_0801553C: .4byte gUnknown_2023DC4 +_08015540: .4byte gUnknown_2023BE4 +_08015544: .4byte gUnknown_2023E0C +_08015548: .4byte gUnknown_2023E8C +_0801554C: .4byte gUnknown_81D9015 +_08015550: + mov r2, r12 + ldr r0, [r2] + adds r0, 0x48 + ldrb r0, [r0] + ldrb r1, [r6] + cmp r0, r1 + bcc _080154CC +_0801555E: + bl sub_8019284 + ldr r1, _080155A0 @ =gUnknown_2023BE2 + movs r0, 0 + strb r0, [r1] + ldr r1, _080155A4 @ =gUnknown_2023BE3 + ldr r0, _080155A8 @ =gUnknown_2023BDA + movs r3, 0 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080155AC @ =gUnknown_2023F50 + movs r2, 0 + strh r3, [r0] + ldr r0, _080155B0 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r2, [r0, 0x13] + ldr r1, _080155B4 @ =gUnknown_3004F84 + ldr r0, _080155B8 @ =sub_80155C8 + str r0, [r1] + ldr r0, _080155BC @ =gUnknown_2023E82 + strb r2, [r0, 0x3] + strb r2, [r0, 0x4] + ldr r0, _080155C0 @ =gUnknown_2023FC4 + strb r2, [r0, 0x16] + ldr r0, _080155C4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x8] + adds r0, 0x20 + strb r2, [r0] +_08015598: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080155A0: .4byte gUnknown_2023BE2 +_080155A4: .4byte gUnknown_2023BE3 +_080155A8: .4byte gUnknown_2023BDA +_080155AC: .4byte gUnknown_2023F50 +_080155B0: .4byte gUnknown_2023FE8 +_080155B4: .4byte gUnknown_3004F84 +_080155B8: .4byte sub_80155C8 +_080155BC: .4byte gUnknown_2023E82 +_080155C0: .4byte gUnknown_2023FC4 +_080155C4: .4byte gUnknown_2023FF4 + thumb_func_end sub_80154A0 + + thumb_func_start sub_80155C8 +sub_80155C8: @ 80155C8 + push {r4-r6,lr} + ldr r6, _0801561C @ =gUnknown_2023E8A + ldrb r0, [r6] + ldr r2, _08015620 @ =gUnknown_2023BE3 + cmp r0, 0 + beq _080155D8 + movs r0, 0xC + strb r0, [r2] +_080155D8: + ldr r5, _08015624 @ =gUnknown_2023FE8 + ldr r0, [r5] + adds r0, 0x4B + ldr r4, _08015628 @ =gUnknown_2023BE2 + ldrb r1, [r4] + strb r1, [r0] + ldr r1, _0801562C @ =gUnknown_8250038 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08015630 @ =gUnknown_2023BCC + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bcc _08015644 + ldr r2, _08015634 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08015638 @ =0xffefffff + ands r0, r1 + str r0, [r2] + ldr r3, _0801563C @ =gUnknown_3004F84 + ldr r2, _08015640 @ =gUnknown_8250070 + ldrb r1, [r6] + movs r0, 0x7F + ands r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r3] + b _0801565C + .align 2, 0 +_0801561C: .4byte gUnknown_2023E8A +_08015620: .4byte gUnknown_2023BE3 +_08015624: .4byte gUnknown_2023FE8 +_08015628: .4byte gUnknown_2023BE2 +_0801562C: .4byte gUnknown_8250038 +_08015630: .4byte gUnknown_2023BCC +_08015634: .4byte gUnknown_2023DD0 +_08015638: .4byte 0xffefffff +_0801563C: .4byte gUnknown_3004F84 +_08015640: .4byte gUnknown_8250070 +_08015644: + ldr r0, [r5] + adds r0, 0x4B + ldrb r0, [r0] + cmp r0, r1 + beq _0801565C + ldr r2, _08015664 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08015668 @ =0xfffffdff + ands r0, r1 + ldr r1, _0801566C @ =0xfff7ffff + ands r0, r1 + str r0, [r2] +_0801565C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08015664: .4byte gUnknown_2023DD0 +_08015668: .4byte 0xfffffdff +_0801566C: .4byte 0xfff7ffff + thumb_func_end sub_80155C8 + + thumb_func_start sub_8015670 +sub_8015670: @ 8015670 + push {r4,lr} + ldr r1, _080156A8 @ =gUnknown_2023BE3 + movs r0, 0 + strb r0, [r1] + ldr r0, _080156AC @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080156C4 + ldr r1, _080156B0 @ =gUnknown_2022AB8 + ldr r4, _080156B4 @ =gUnknown_2023E8A + ldrb r0, [r4] + strb r0, [r1] + movs r0, 0 + bl sub_80751E8 + ldr r1, _080156B8 @ =gUnknown_2023D6B + strb r0, [r1] + ldr r1, _080156BC @ =gUnknown_2023D74 + ldr r0, _080156C0 @ =gUnknown_81D88CC + str r0, [r1] + ldrb r1, [r4] + movs r0, 0x7F + ands r0, r1 + strb r0, [r4] + b _0801576E + .align 2, 0 +_080156A8: .4byte gUnknown_2023BE3 +_080156AC: .4byte gUnknown_2022B4C +_080156B0: .4byte gUnknown_2022AB8 +_080156B4: .4byte gUnknown_2023E8A +_080156B8: .4byte gUnknown_2023D6B +_080156BC: .4byte gUnknown_2023D74 +_080156C0: .4byte gUnknown_81D88CC +_080156C4: + ldr r0, _080156E0 @ =0x00080900 + ands r0, r1 + cmp r0, 0 + beq _080156EC + bl sub_8035314 + movs r0, 0x9B + lsls r0, 1 + bl sub_80722A0 + ldr r1, _080156E4 @ =gUnknown_2023D74 + ldr r0, _080156E8 @ =gUnknown_81D88D7 + b _0801576C + .align 2, 0 +_080156E0: .4byte 0x00080900 +_080156E4: .4byte gUnknown_2023D74 +_080156E8: .4byte gUnknown_81D88D7 +_080156EC: + movs r0, 0xA + ands r1, r0 + cmp r1, 0x8 + bne _08015768 + bl sub_8035314 + ldr r1, _08015720 @ =gUnknown_2023D74 + ldr r0, _08015724 @ =gUnknown_81D87EF + str r0, [r1] + ldr r2, _08015728 @ =gUnknown_823EAC8 + ldr r0, _0801572C @ =gUnknown_20386AE + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x1] + subs r0, 0x53 + cmp r0, 0x7 + bhi _0801575E + lsls r0, 2 + ldr r1, _08015730 @ =_08015734 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08015720: .4byte gUnknown_2023D74 +_08015724: .4byte gUnknown_81D87EF +_08015728: .4byte gUnknown_823EAC8 +_0801572C: .4byte gUnknown_20386AE +_08015730: .4byte _08015734 + .align 2, 0 +_08015734: + .4byte _0801575E + .4byte _08015754 + .4byte _0801575E + .4byte _0801575E + .4byte _0801575E + .4byte _0801575E + .4byte _0801575E + .4byte _08015754 +_08015754: + movs r0, 0x9C + lsls r0, 1 + bl sub_80722A0 + b _0801576E +_0801575E: + movs r0, 0x9B + lsls r0, 1 + bl sub_80722A0 + b _0801576E +_08015768: + ldr r1, _0801577C @ =gUnknown_2023D74 + ldr r0, _08015780 @ =gUnknown_81D8803 +_0801576C: + str r0, [r1] +_0801576E: + ldr r1, _08015784 @ =gUnknown_3004F84 + ldr r0, _08015788 @ =sub_8015910 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801577C: .4byte gUnknown_2023D74 +_08015780: .4byte gUnknown_81D8803 +_08015784: .4byte gUnknown_3004F84 +_08015788: .4byte sub_8015910 + thumb_func_end sub_8015670 + + thumb_func_start sub_801578C +sub_801578C: @ 801578C + push {r4,lr} + ldr r1, _080157C4 @ =gUnknown_2023BE3 + movs r0, 0 + strb r0, [r1] + ldr r0, _080157C8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r4, 0x2 + adds r0, r1, 0 + ands r0, r4 + cmp r0, 0 + beq _080157E0 + ldr r1, _080157CC @ =gUnknown_2022AB8 + ldr r4, _080157D0 @ =gUnknown_2023E8A + ldrb r0, [r4] + strb r0, [r1] + movs r0, 0 + bl sub_80751E8 + ldr r1, _080157D4 @ =gUnknown_2023D6B + strb r0, [r1] + ldr r1, _080157D8 @ =gUnknown_2023D74 + ldr r0, _080157DC @ =gUnknown_81D88CC + str r0, [r1] + ldrb r1, [r4] + movs r0, 0x7F + ands r0, r1 + strb r0, [r4] + b _08015830 + .align 2, 0 +_080157C4: .4byte gUnknown_2023BE3 +_080157C8: .4byte gUnknown_2022B4C +_080157CC: .4byte gUnknown_2022AB8 +_080157D0: .4byte gUnknown_2023E8A +_080157D4: .4byte gUnknown_2023D6B +_080157D8: .4byte gUnknown_2023D74 +_080157DC: .4byte gUnknown_81D88CC +_080157E0: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _08015824 + bl sub_80803CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bne _08015824 + bl sub_80803D8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0801580C + ldr r1, _08015808 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08015810 + .align 2, 0 +_08015808: .4byte gUnknown_2023E82 +_0801580C: + ldr r0, _0801581C @ =gUnknown_2023E82 + strb r4, [r0, 0x5] +_08015810: + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _08015820 @ =gUnknown_2023D6B + strb r0, [r1] + b _0801582A + .align 2, 0 +_0801581C: .4byte gUnknown_2023E82 +_08015820: .4byte gUnknown_2023D6B +_08015824: + ldr r1, _0801583C @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] +_0801582A: + ldr r1, _08015840 @ =gUnknown_2023D74 + ldr r0, _08015844 @ =gUnknown_81D8806 + str r0, [r1] +_08015830: + ldr r1, _08015848 @ =gUnknown_3004F84 + ldr r0, _0801584C @ =sub_8015910 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801583C: .4byte gUnknown_2023E82 +_08015840: .4byte gUnknown_2023D74 +_08015844: .4byte gUnknown_81D8806 +_08015848: .4byte gUnknown_3004F84 +_0801584C: .4byte sub_8015910 + thumb_func_end sub_801578C + + thumb_func_start sub_8015850 +sub_8015850: @ 8015850 + push {lr} + ldr r1, _08015878 @ =gUnknown_2023BE3 + movs r0, 0 + strb r0, [r1] + ldr r1, _0801587C @ =gUnknown_2023E8C + ldr r0, _08015880 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x1] + lsls r0, 27 + lsrs r0, 30 + cmp r0, 0x1 + beq _0801588C + cmp r0, 0x2 + beq _0801589C + ldr r1, _08015884 @ =gUnknown_2023D74 + ldr r0, _08015888 @ =gUnknown_81D8916 + b _080158A0 + .align 2, 0 +_08015878: .4byte gUnknown_2023BE3 +_0801587C: .4byte gUnknown_2023E8C +_08015880: .4byte gUnknown_2023D6B +_08015884: .4byte gUnknown_2023D74 +_08015888: .4byte gUnknown_81D8916 +_0801588C: + ldr r1, _08015894 @ =gUnknown_2023D74 + ldr r0, _08015898 @ =gUnknown_81D8901 + b _080158A0 + .align 2, 0 +_08015894: .4byte gUnknown_2023D74 +_08015898: .4byte gUnknown_81D8901 +_0801589C: + ldr r1, _080158AC @ =gUnknown_2023D74 + ldr r0, _080158B0 @ =gUnknown_81D890F +_080158A0: + str r0, [r1] + ldr r1, _080158B4 @ =gUnknown_3004F84 + ldr r0, _080158B8 @ =sub_8015910 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080158AC: .4byte gUnknown_2023D74 +_080158B0: .4byte gUnknown_81D890F +_080158B4: .4byte gUnknown_3004F84 +_080158B8: .4byte sub_8015910 + thumb_func_end sub_8015850 + + thumb_func_start sub_80158BC +sub_80158BC: @ 80158BC + ldr r1, _080158F0 @ =gUnknown_2023BE3 + movs r0, 0 + strb r0, [r1] + ldr r1, _080158F4 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + ldr r2, _080158F8 @ =gUnknown_2023D6B + ldrb r0, [r2] + strb r0, [r1, 0x2] + ldr r3, _080158FC @ =gUnknown_2023BCE + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08015900 @ =gUnknown_2023D74 + ldr r0, _08015904 @ =gUnknown_81D891D + str r0, [r1] + ldr r1, _08015908 @ =gUnknown_3004F84 + ldr r0, _0801590C @ =sub_8015910 + str r0, [r1] + bx lr + .align 2, 0 +_080158F0: .4byte gUnknown_2023BE3 +_080158F4: .4byte gUnknown_2022AB8 +_080158F8: .4byte gUnknown_2023D6B +_080158FC: .4byte gUnknown_2023BCE +_08015900: .4byte gUnknown_2023D74 +_08015904: .4byte gUnknown_81D891D +_08015908: .4byte gUnknown_3004F84 +_0801590C: .4byte sub_8015910 + thumb_func_end sub_80158BC + + thumb_func_start sub_8015910 +sub_8015910: @ 8015910 + push {r4-r7,lr} + ldr r0, _08015974 @ =gUnknown_2023BE3 + ldrb r0, [r0] + subs r0, 0xB + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08015A04 + ldr r0, _08015978 @ =gUnknown_2022B4C + ldr r1, [r0] + ldr r0, _0801597C @ =0x00080b92 + ands r1, r0 + cmp r1, 0 + bne _080159BC + ldr r2, _08015980 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _08015984 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcs _080159BC + adds r4, r2, 0 + ldr r6, _08015988 @ =gUnknown_2023BE4 + movs r5, 0x58 + adds r7, r6, 0 + adds r7, 0x30 +_08015942: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080159AA + ldr r2, _0801598C @ =gUnknown_3004F90 + ldrh r0, [r2, 0x6] + cmp r0, 0 + bne _08015990 + ldrb r0, [r4] + muls r0, r5 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r2, 0x6] + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r5 + adds r1, r7 + adds r0, r2, 0 + adds r0, 0x8 + bl sub_8008D84 + b _080159AA + .align 2, 0 +_08015974: .4byte gUnknown_2023BE3 +_08015978: .4byte gUnknown_2022B4C +_0801597C: .4byte 0x00080b92 +_08015980: .4byte gUnknown_2023BC4 +_08015984: .4byte gUnknown_2023BCC +_08015988: .4byte gUnknown_2023BE4 +_0801598C: .4byte gUnknown_3004F90 +_08015990: + ldrb r0, [r4] + muls r0, r5 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r2, 0x26] + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r5 + adds r1, r7 + adds r0, r2, 0 + adds r0, 0x14 + bl sub_8008D84 +_080159AA: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _080159EC @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08015942 +_080159BC: + bl sub_812BFDC + ldr r0, _080159F0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080159D0 + bl sub_810CB90 +_080159D0: + movs r0, 0x3 + bl sub_8070E44 + movs r0, 0x5 + bl sub_8071AB4 + ldr r1, _080159F4 @ =gUnknown_3004F84 + ldr r0, _080159F8 @ =sub_8015A30 + str r0, [r1] + ldr r1, _080159FC @ =gUnknown_300537C + ldr r0, _08015A00 @ =sub_8011100 + str r0, [r1] + b _08015A1E + .align 2, 0 +_080159EC: .4byte gUnknown_2023BCC +_080159F0: .4byte gUnknown_2022B4C +_080159F4: .4byte gUnknown_3004F84 +_080159F8: .4byte sub_8015A30 +_080159FC: .4byte gUnknown_300537C +_08015A00: .4byte sub_8011100 +_08015A04: + ldr r0, _08015A24 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08015A1E + ldr r1, _08015A28 @ =gUnknown_825011C + ldr r0, _08015A2C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_08015A1E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015A24: .4byte gUnknown_2023BC8 +_08015A28: .4byte gUnknown_825011C +_08015A2C: .4byte gUnknown_2023D74 + thumb_func_end sub_8015910 + + thumb_func_start sub_8015A30 +sub_8015A30: @ 8015A30 + push {lr} + ldr r0, _08015A58 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08015A8E + bl sub_8006B10 + ldr r0, _08015A5C @ =gUnknown_3004FD4 + ldrb r0, [r0] + cmp r0, 0 + beq _08015A52 + ldr r0, _08015A60 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x1 + beq _08015A6C +_08015A52: + ldr r1, _08015A64 @ =gUnknown_3004F84 + ldr r0, _08015A68 @ =sub_8015B58 + b _08015A70 + .align 2, 0 +_08015A58: .4byte gUnknown_2037AB8 +_08015A5C: .4byte gUnknown_3004FD4 +_08015A60: .4byte gUnknown_2023E8A +_08015A64: .4byte gUnknown_3004F84 +_08015A68: .4byte sub_8015B58 +_08015A6C: + ldr r1, _08015A94 @ =gUnknown_3004F84 + ldr r0, _08015A98 @ =sub_8015AA0 +_08015A70: + str r0, [r1] + bl sub_8003ECC + ldr r0, _08015A9C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08015A8E + bl sub_80359AC + bl sub_8033DF8 + bl sub_802E138 +_08015A8E: + pop {r0} + bx r0 + .align 2, 0 +_08015A94: .4byte gUnknown_3004F84 +_08015A98: .4byte sub_8015AA0 +_08015A9C: .4byte gUnknown_2022B4C + thumb_func_end sub_8015A30 + + thumb_func_start sub_8015AA0 +sub_8015AA0: @ 8015AA0 + push {r4,r5,lr} + ldr r0, _08015AF4 @ =gUnknown_3004FD4 + ldrb r1, [r0] + adds r3, r0, 0 + cmp r1, 0 + beq _08015B16 +_08015AAC: + movs r5, 0 +_08015AAE: + ldrb r2, [r3] + ldr r0, _08015AF8 @ =gUnknown_825E45C + lsls r1, r5, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08015B08 + bics r2, r1 + strb r2, [r3] + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08015AFC @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0 + bl sub_8042EC4 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08015B08 + ldr r0, _08015B00 @ =gUnknown_3004F84 + ldr r1, _08015B04 @ =sub_8015B30 + str r1, [r0] + lsls r3, r5, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r2, 0 + movs r2, 0x81 + bl sub_80CDDF4 + b _08015B1C + .align 2, 0 +_08015AF4: .4byte gUnknown_3004FD4 +_08015AF8: .4byte gUnknown_825E45C +_08015AFC: .4byte gUnknown_2024284 +_08015B00: .4byte gUnknown_3004F84 +_08015B04: .4byte sub_8015B30 +_08015B08: + adds r5, 0x1 + ldr r3, _08015B24 @ =gUnknown_3004FD4 + cmp r5, 0x5 + ble _08015AAE + ldrb r0, [r3] + cmp r0, 0 + bne _08015AAC +_08015B16: + ldr r1, _08015B28 @ =gUnknown_3004F84 + ldr r0, _08015B2C @ =sub_8015B58 + str r0, [r1] +_08015B1C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08015B24: .4byte gUnknown_3004FD4 +_08015B28: .4byte gUnknown_3004F84 +_08015B2C: .4byte sub_8015B58 + thumb_func_end sub_8015AA0 + + thumb_func_start sub_8015B30 +sub_8015B30: @ 8015B30 + push {lr} + ldr r0, _08015B48 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _08015B4C @ =sub_8011100 + cmp r1, r0 + bne _08015B42 + ldr r1, _08015B50 @ =gUnknown_3004F84 + ldr r0, _08015B54 @ =sub_8015AA0 + str r0, [r1] +_08015B42: + pop {r0} + bx r0 + .align 2, 0 +_08015B48: .4byte gUnknown_30030F0 +_08015B4C: .4byte sub_8011100 +_08015B50: .4byte gUnknown_3004F84 +_08015B54: .4byte sub_8015AA0 + thumb_func_end sub_8015B30 + + thumb_func_start sub_8015B58 +sub_8015B58: @ 8015B58 + push {r4-r6,lr} + ldr r6, _08015BDC @ =gUnknown_2022B4C + ldr r0, [r6] + movs r5, 0x2 + ands r0, r5 + cmp r0, 0 + bne _08015B74 + ldr r4, _08015BE0 @ =gUnknown_2024284 + adds r0, r4, 0 + bl sub_8043A68 + adds r0, r4, 0 + bl sub_8043B40 +_08015B74: + ldr r4, [r6] + adds r0, r4, 0 + ands r0, r5 + cmp r0, 0 + beq _08015B86 + ldr r0, _08015BE4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08015BD4 +_08015B86: + ldr r1, _08015BE8 @ =gUnknown_20370D0 + ldr r5, _08015BEC @ =gUnknown_2023E8A + ldrb r0, [r5] + strh r0, [r1] + ldr r3, _08015BF0 @ =gUnknown_30030F0 + ldr r0, _08015BF4 @ =0x00000439 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _08015BF8 @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r3] + movs r0, 0x80 + lsls r0, 3 + ands r4, r0 + cmp r4, 0 + beq _08015BC6 + ldr r0, _08015BFC @ =gUnknown_202402C + bl sub_8141FE8 + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08015BC2 + cmp r1, 0x7 + bne _08015BC6 +_08015BC2: + bl sub_814201C +_08015BC6: + movs r0, 0x53 + bl m4aSongNumStop + ldr r0, _08015BF0 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 +_08015BD4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08015BDC: .4byte gUnknown_2022B4C +_08015BE0: .4byte gUnknown_2024284 +_08015BE4: .4byte gUnknown_3003F64 +_08015BE8: .4byte gUnknown_20370D0 +_08015BEC: .4byte gUnknown_2023E8A +_08015BF0: .4byte gUnknown_30030F0 +_08015BF4: .4byte 0x00000439 +_08015BF8: .4byte gUnknown_3004F80 +_08015BFC: .4byte gUnknown_202402C + thumb_func_end sub_8015B58 + + thumb_func_start sub_8015C00 +sub_8015C00: @ 8015C00 + push {lr} + ldr r0, _08015C3C @ =gUnknown_2023BE3 + ldrb r0, [r0] + subs r0, 0xB + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08015C48 + ldr r3, _08015C40 @ =gUnknown_2023FF4 + ldr r0, [r3] + ldr r0, [r0, 0xC] + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0 + beq _08015C24 + subs r0, 0x1 + strb r0, [r1] +_08015C24: + ldr r2, _08015C44 @ =gUnknown_3004F84 + ldr r0, [r3] + ldr r1, [r0, 0xC] + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + b _08015C62 + .align 2, 0 +_08015C3C: .4byte gUnknown_2023BE3 +_08015C40: .4byte gUnknown_2023FF4 +_08015C44: .4byte gUnknown_3004F84 +_08015C48: + ldr r0, _08015C68 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08015C62 + ldr r1, _08015C6C @ =gUnknown_825011C + ldr r0, _08015C70 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_08015C62: + pop {r0} + bx r0 + .align 2, 0 +_08015C68: .4byte gUnknown_2023BC8 +_08015C6C: .4byte gUnknown_825011C +_08015C70: .4byte gUnknown_2023D74 + thumb_func_end sub_8015C00 + + thumb_func_start sub_8015C74 +sub_8015C74: @ 8015C74 + push {lr} + ldr r0, _08015C94 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08015C90 + ldr r1, _08015C98 @ =gUnknown_825011C + ldr r0, _08015C9C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_08015C90: + pop {r0} + bx r0 + .align 2, 0 +_08015C94: .4byte gUnknown_2023BC8 +_08015C98: .4byte gUnknown_825011C +_08015C9C: .4byte gUnknown_2023D74 + thumb_func_end sub_8015C74 + + thumb_func_start sub_8015CA0 +sub_8015CA0: @ 8015CA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0x4 + str r0, [sp] + ldr r6, _08015CE0 @ =gUnknown_2023D6B + ldr r1, _08015CE4 @ =gUnknown_2023BDE + ldr r0, _08015CE8 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r6] + ldr r1, _08015CEC @ =gUnknown_2023FE8 + ldr r3, [r1] + adds r0, r3, 0 + adds r0, 0x91 + ldrb r2, [r0] + ldr r1, _08015CF0 @ =gUnknown_825E45C + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + beq _08015CF8 + ldr r1, _08015CF4 @ =gUnknown_2023BE3 + movs r0, 0xC + b _0801634C + .align 2, 0 +_08015CE0: .4byte gUnknown_2023D6B +_08015CE4: .4byte gUnknown_2023BDE +_08015CE8: .4byte gUnknown_2023BE2 +_08015CEC: .4byte gUnknown_2023FE8 +_08015CF0: .4byte gUnknown_825E45C +_08015CF4: .4byte gUnknown_2023BE3 +_08015CF8: + ldr r1, _08015D6C @ =gUnknown_2023D71 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _08015D70 @ =gUnknown_2023FC4 + movs r0, 0x1 + strb r0, [r1, 0xE] + adds r0, r3, 0 + adds r0, 0xB7 + strb r2, [r0] + ldr r0, _08015D74 @ =gUnknown_2023DCC + strb r2, [r0] + ldr r0, _08015D78 @ =gUnknown_2023D72 + strb r2, [r0] + ldr r0, _08015D7C @ =gUnknown_2023E82 + strb r2, [r0, 0x6] + ldr r2, _08015D80 @ =gUnknown_2023D48 + ldr r3, _08015D84 @ =gUnknown_2023D49 + mov r9, r3 + ldrb r0, [r6] + ldr r4, _08015D88 @ =gUnknown_2023FE8 + ldr r1, [r4] + adds r0, r1 + adds r0, 0x80 + ldrb r0, [r0] + strb r0, [r3] + strb r0, [r2] + ldr r1, _08015D8C @ =gUnknown_2023E8C + ldrb r4, [r6] + lsls r0, r4, 4 + adds r3, r0, r1 + ldrb r1, [r3] + lsls r0, r1, 29 + mov r8, r2 + cmp r0, 0 + bge _08015D9C + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r2, _08015D90 @ =gUnknown_2023D4A + ldr r1, _08015D94 @ =gUnknown_2023D4C + movs r0, 0xA5 + strh r0, [r1] + strh r0, [r2] + ldr r2, _08015D98 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 4 + orrs r0, r1 + str r0, [r2] + movs r0, 0xA5 + movs r1, 0 + bl sub_801D05C + ldrb r1, [r6] + ldr r3, _08015D88 @ =gUnknown_2023FE8 + ldr r2, [r3] + b _08015EF6 + .align 2, 0 +_08015D6C: .4byte gUnknown_2023D71 +_08015D70: .4byte gUnknown_2023FC4 +_08015D74: .4byte gUnknown_2023DCC +_08015D78: .4byte gUnknown_2023D72 +_08015D7C: .4byte gUnknown_2023E82 +_08015D80: .4byte gUnknown_2023D48 +_08015D84: .4byte gUnknown_2023D49 +_08015D88: .4byte gUnknown_2023FE8 +_08015D8C: .4byte gUnknown_2023E8C +_08015D90: .4byte gUnknown_2023D4A +_08015D94: .4byte gUnknown_2023D4C +_08015D98: .4byte gUnknown_2023DD0 +_08015D9C: + ldr r0, _08015DD4 @ =gUnknown_2023BE4 + movs r1, 0x58 + adds r5, r4, 0 + muls r5, r1 + adds r1, r0, 0 + adds r1, 0x50 + adds r1, r5, r1 + ldr r2, [r1] + movs r1, 0x80 + lsls r1, 5 + ands r1, r2 + mov r10, r0 + cmp r1, 0 + bne _08015DC2 + movs r7, 0x80 + lsls r7, 15 + ands r7, r2 + cmp r7, 0 + beq _08015DE4 +_08015DC2: + ldr r3, _08015DD8 @ =gUnknown_2023D4A + ldr r2, _08015DDC @ =gUnknown_2023D4C + ldr r1, _08015DE0 @ =gUnknown_2023DB8 + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + strh r0, [r3] + b _08015F18 + .align 2, 0 +_08015DD4: .4byte gUnknown_2023BE4 +_08015DD8: .4byte gUnknown_2023D4A +_08015DDC: .4byte gUnknown_2023D4C +_08015DE0: .4byte gUnknown_2023DB8 +_08015DE4: + ldr r3, _08015E38 @ =gUnknown_2023E0C + mov r12, r3 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + add r0, r12 + ldrh r4, [r0, 0x6] + adds r2, r4, 0 + cmp r2, 0 + beq _08015EBC + ldrb r3, [r0, 0xC] + lsls r0, r3, 1 + adds r0, r5 + mov r5, r10 + adds r5, 0xC + adds r0, r5 + ldrh r1, [r0] + cmp r2, r1 + bne _08015E48 + ldr r2, _08015E3C @ =gUnknown_2023D4A + ldr r0, _08015E40 @ =gUnknown_2023D4C + strh r4, [r0] + strh r4, [r2] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xC] + mov r4, r9 + strb r0, [r4] + mov r1, r8 + strb r0, [r1] + ldrh r0, [r2] + movs r1, 0 + bl sub_801D05C + ldrb r1, [r6] + ldr r3, _08015E44 @ =gUnknown_2023FE8 + ldr r2, [r3] + b _08015EF6 + .align 2, 0 +_08015E38: .4byte gUnknown_2023E0C +_08015E3C: .4byte gUnknown_2023D4A +_08015E40: .4byte gUnknown_2023D4C +_08015E44: .4byte gUnknown_2023FE8 +_08015E48: + cmp r2, 0 + beq _08015EBC + cmp r2, r1 + beq _08015EBC + mov r4, r9 + strb r3, [r4] + mov r0, r8 + strb r3, [r0] + ldr r3, _08015EB0 @ =gUnknown_2023D4A + ldr r2, _08015EB4 @ =gUnknown_2023D4C + ldrb r0, [r0] + lsls r0, 1 + ldrb r1, [r6] + movs r4, 0x58 + muls r1, r4 + adds r0, r1 + adds r0, r5 + ldrh r0, [r0] + strh r0, [r2] + strh r0, [r3] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + movs r2, 0 + strh r7, [r0, 0x6] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + strb r2, [r0, 0xC] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r12 + ldrb r2, [r1, 0xE] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0xE] + ldrh r0, [r3] + movs r1, 0 + bl sub_801D05C + ldrb r1, [r6] + ldr r3, _08015EB8 @ =gUnknown_2023FE8 + ldr r2, [r3] + b _08015EF6 + .align 2, 0 +_08015EB0: .4byte gUnknown_2023D4A +_08015EB4: .4byte gUnknown_2023D4C +_08015EB8: .4byte gUnknown_2023FE8 +_08015EBC: + mov r4, r8 + ldrb r0, [r4] + lsls r0, 1 + ldr r4, _08015EFC @ =gUnknown_2023D6B + ldrb r2, [r4] + movs r1, 0x58 + muls r1, r2 + adds r0, r1 + mov r1, r10 + adds r1, 0xC + adds r0, r1 + ldr r1, _08015F00 @ =gUnknown_2023DC4 + lsls r2, 1 + adds r2, r1 + ldrh r3, [r0] + ldrh r2, [r2] + cmp r3, r2 + beq _08015F10 + ldr r1, _08015F04 @ =gUnknown_2023D4A + ldr r0, _08015F08 @ =gUnknown_2023D4C + strh r3, [r0] + strh r3, [r1] + ldrh r0, [r1] + movs r1, 0 + bl sub_801D05C + ldrb r1, [r4] + ldr r2, _08015F0C @ =gUnknown_2023FE8 + ldr r2, [r2] +_08015EF6: + adds r1, r2 + strb r0, [r1, 0xC] + b _08015F18 + .align 2, 0 +_08015EFC: .4byte gUnknown_2023D6B +_08015F00: .4byte gUnknown_2023DC4 +_08015F04: .4byte gUnknown_2023D4A +_08015F08: .4byte gUnknown_2023D4C +_08015F0C: .4byte gUnknown_2023FE8 +_08015F10: + ldr r1, _08015F30 @ =gUnknown_2023D4A + ldr r0, _08015F34 @ =gUnknown_2023D4C + strh r3, [r0] + strh r3, [r1] +_08015F18: + ldr r0, _08015F38 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08015F40 + ldr r0, _08015F3C @ =gUnknown_3004F90 + ldr r1, _08015F30 @ =gUnknown_2023D4A + ldrh r1, [r1] + strh r1, [r0, 0x22] + b _08015F48 + .align 2, 0 +_08015F30: .4byte gUnknown_2023D4A +_08015F34: .4byte gUnknown_2023D4C +_08015F38: .4byte gUnknown_2023D6B +_08015F3C: .4byte gUnknown_3004F90 +_08015F40: + ldr r0, _08015FAC @ =gUnknown_3004F90 + ldr r1, _08015FB0 @ =gUnknown_2023D4A + ldrh r1, [r1] + strh r1, [r0, 0x24] +_08015F48: + ldr r4, _08015FB4 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08015FB8 @ =gUnknown_2023DE4 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r1 + ldrb r0, [r5, 0x8] + adds r3, r4, 0 + cmp r0, 0 + beq _08015FC8 + ldr r2, _08015FBC @ =gUnknown_8250C04 + ldr r0, _08015FB0 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + cmp r0, 0 + bne _08015FC8 + ldrb r0, [r3] + bl sub_80751C4 + adds r4, r0, 0 + ldrb r0, [r5, 0x9] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _08015FC8 + ldr r1, _08015FC0 @ =gUnknown_2023BE4 + ldrb r2, [r5, 0x9] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08015FC8 + ldr r0, _08015FC4 @ =gUnknown_2023D6C + strb r2, [r0] + b _0801632C + .align 2, 0 +_08015FAC: .4byte gUnknown_3004F90 +_08015FB0: .4byte gUnknown_2023D4A +_08015FB4: .4byte gUnknown_2023D6B +_08015FB8: .4byte gUnknown_2023DE4 +_08015FBC: .4byte gUnknown_8250C04 +_08015FC0: .4byte gUnknown_2023BE4 +_08015FC4: .4byte gUnknown_2023D6C +_08015FC8: + ldr r2, _080160E4 @ =gUnknown_2022B4C + ldr r1, [r2] + movs r0, 0x1 + ands r1, r0 + ldr r3, _080160E8 @ =gUnknown_2023D6B + adds r7, r2, 0 + cmp r1, 0 + bne _08015FDA + b _080162A0 +_08015FDA: + ldr r1, _080160EC @ =gUnknown_2023DE4 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x8] + cmp r5, 0 + beq _08015FEC + b _080161F8 +_08015FEC: + ldr r2, _080160F0 @ =gUnknown_8250C04 + ldr r0, _080160F4 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08016008 + ldrb r0, [r4, 0x6] + cmp r0, 0x10 + bne _08016008 + b _080161F8 +_08016008: + ldr r3, _080160F8 @ =gUnknown_2023BE4 + ldr r2, _080160E8 @ =gUnknown_2023D6B + ldrb r6, [r2] + ldr r0, _080160FC @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, r6, r0 + ldrb r1, [r0, 0xC] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + adds r3, r2, 0 + cmp r0, 0x1F + bne _08016028 + b _080161F8 +_08016028: + ldrb r0, [r4, 0x2] + cmp r0, 0xD + beq _08016030 + b _080161F8 +_08016030: + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08016100 @ =gUnknown_2023BC4 + strb r5, [r1] + ldr r0, _08016104 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bcs _080160A8 + adds r4, r1, 0 +_08016048: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _08016096 + ldr r0, _080160E8 @ =gUnknown_2023D6B + ldrb r1, [r0] + ldr r0, _080160FC @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r1, r0 + ldrb r0, [r1, 0xC] + ldrb r1, [r4] + cmp r0, r1 + beq _08016096 + ldr r1, _080160F8 @ =gUnknown_2023BE4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1F + bne _08016096 + adds r0, r2, 0 + bl sub_801FEE8 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [sp] + cmp r0, r3 + bcs _08016096 + ldrb r0, [r4] + bl sub_801FEE8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] +_08016096: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _08016104 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08016048 +_080160A8: + ldr r4, [sp] + cmp r4, 0x4 + beq _080160B0 + b _080161AA +_080160B0: + ldr r2, _080160F0 @ =gUnknown_8250C04 + ldr r0, _08016108 @ =gUnknown_2023D4C + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + ands r4, r0 + cmp r4, 0 + beq _08016130 + ldr r0, _080160E8 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08016110 + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0801610C + movs r0, 0x1 + b _08016122 + .align 2, 0 +_080160E4: .4byte gUnknown_2022B4C +_080160E8: .4byte gUnknown_2023D6B +_080160EC: .4byte gUnknown_2023DE4 +_080160F0: .4byte gUnknown_8250C04 +_080160F4: .4byte gUnknown_2023D4A +_080160F8: .4byte gUnknown_2023BE4 +_080160FC: .4byte gUnknown_2023FE8 +_08016100: .4byte gUnknown_2023BC4 +_08016104: .4byte gUnknown_2023BCC +_08016108: .4byte gUnknown_2023D4C +_0801610C: + movs r0, 0x3 + b _08016122 +_08016110: + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08016120 + movs r0, 0 + b _08016122 +_08016120: + movs r0, 0x2 +_08016122: + bl sub_80751E8 + ldr r1, _0801612C @ =gUnknown_2023D6C + strb r0, [r1] + b _08016140 + .align 2, 0 +_0801612C: .4byte gUnknown_2023D6C +_08016130: + ldr r2, _08016178 @ =gUnknown_2023D6C + ldr r0, _0801617C @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r1, _08016180 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + ldrb r0, [r0, 0xC] + strb r0, [r2] +_08016140: + ldr r7, _08016184 @ =gUnknown_2023D70 + ldrb r0, [r7] + ldr r1, _08016188 @ =gUnknown_825E45C + mov r8, r1 + ldr r5, _08016178 @ =gUnknown_2023D6C + ldrb r1, [r5] + lsls r1, 2 + add r1, r8 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + bne _0801615A + b _0801632C +_0801615A: + ldr r6, _0801617C @ =gUnknown_2023D6B + ldrb r0, [r6] + bl sub_80751C4 + adds r4, r0, 0 + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0801618C + ldrb r0, [r5] + b _0801631A + .align 2, 0 +_08016178: .4byte gUnknown_2023D6C +_0801617C: .4byte gUnknown_2023D6B +_08016180: .4byte gUnknown_2023FE8 +_08016184: .4byte gUnknown_2023D70 +_08016188: .4byte gUnknown_825E45C +_0801618C: + ldrb r0, [r6] + bl sub_80751D8 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + strb r0, [r5] + ldrb r1, [r7] + ldrb r2, [r5] + lsls r0, r2, 2 + add r0, r8 + b _08016310 +_080161AA: + ldr r4, _080161E4 @ =gUnknown_2023BC4 + ldr r0, _080161E8 @ =gUnknown_2023BDE + ldr r3, [sp] + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r4] + ldrb r0, [r4] + ldr r2, _080161EC @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r0 + adds r1, r2 + adds r1, 0x20 + ldrb r1, [r1] + bl sub_80C71D0 + ldr r2, _080161F0 @ =gUnknown_2023ECC + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] + ldr r1, _080161F4 @ =gUnknown_2023D6C + ldrb r0, [r4] + strb r0, [r1] + b _0801632C + .align 2, 0 +_080161E4: .4byte gUnknown_2023BC4 +_080161E8: .4byte gUnknown_2023BDE +_080161EC: .4byte gUnknown_2023BE4 +_080161F0: .4byte gUnknown_2023ECC +_080161F4: .4byte gUnknown_2023D6C +_080161F8: + ldr r0, [r7] + movs r4, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080162A0 + ldr r2, _08016238 @ =gUnknown_8250C04 + ldr r0, _0801623C @ =gUnknown_2023D4C + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x6] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080162A0 + ldrb r0, [r3] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08016244 + bl sub_8044EC8 + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _08016240 + movs r0, 0x1 + b _08016256 + .align 2, 0 +_08016238: .4byte gUnknown_8250C04 +_0801623C: .4byte gUnknown_2023D4C +_08016240: + movs r0, 0x3 + b _08016256 +_08016244: + bl sub_8044EC8 + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _08016254 + movs r0, 0 + b _08016256 +_08016254: + movs r0, 0x2 +_08016256: + bl sub_80751E8 + ldr r1, _08016290 @ =gUnknown_2023D6C + strb r0, [r1] + ldr r0, _08016294 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08016298 @ =gUnknown_825E45C + ldr r5, _08016290 @ =gUnknown_2023D6C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801632C + ldr r0, _0801629C @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + adds r4, r0, 0 + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0801632C + ldrb r0, [r5] + b _0801631A + .align 2, 0 +_08016290: .4byte gUnknown_2023D6C +_08016294: .4byte gUnknown_2023D70 +_08016298: .4byte gUnknown_825E45C +_0801629C: .4byte gUnknown_2023D6B +_080162A0: + ldr r5, _080162E4 @ =gUnknown_2023D6C + adds r2, r3, 0 + ldrb r0, [r2] + ldr r1, _080162E8 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + ldrb r0, [r0, 0xC] + strb r0, [r5] + ldr r6, _080162EC @ =gUnknown_2023D70 + ldrb r1, [r6] + ldr r7, _080162F0 @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801632C + ldrb r0, [r2] + str r3, [sp, 0x4] + bl sub_80751C4 + adds r4, r0, 0 + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + ldr r3, [sp, 0x4] + cmp r4, r0 + beq _080162F4 + ldrb r0, [r5] + b _0801631A + .align 2, 0 +_080162E4: .4byte gUnknown_2023D6C +_080162E8: .4byte gUnknown_2023FE8 +_080162EC: .4byte gUnknown_2023D70 +_080162F0: .4byte gUnknown_825E45C +_080162F4: + ldrb r0, [r3] + bl sub_80751D8 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + strb r0, [r5] + ldrb r1, [r6] + ldrb r2, [r5] + lsls r0, r2, 2 + adds r0, r7 +_08016310: + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801632C + adds r0, r2, 0 +_0801631A: + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + strb r0, [r5] +_0801632C: + ldr r4, _08016360 @ =gUnknown_2023D74 + ldr r3, _08016364 @ =gUnknown_81D65A8 + ldr r2, _08016368 @ =gUnknown_8250C04 + ldr r0, _0801636C @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r4] + ldr r1, _08016370 @ =gUnknown_2023BE3 + movs r0, 0xA +_0801634C: + strb r0, [r1] + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08016360: .4byte gUnknown_2023D74 +_08016364: .4byte gUnknown_81D65A8 +_08016368: .4byte gUnknown_8250C04 +_0801636C: .4byte gUnknown_2023D4A +_08016370: .4byte gUnknown_2023BE3 + thumb_func_end sub_8015CA0 + + thumb_func_start sub_8016374 +sub_8016374: @ 8016374 + push {r4,lr} + ldr r3, _080163E0 @ =gUnknown_2023D6B + ldr r1, _080163E4 @ =gUnknown_2023BDE + ldr r0, _080163E8 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldr r0, _080163EC @ =gUnknown_2022974 + movs r2, 0 + strh r2, [r0] + ldr r0, _080163F0 @ =gUnknown_2022976 + strh r2, [r0] + ldr r1, _080163F4 @ =gUnknown_2023FF8 + ldrb r0, [r3] + adds r0, r1 + strb r2, [r0] + ldr r1, _080163F8 @ =gUnknown_2023FFC + ldrb r0, [r3] + adds r0, r1 + strb r2, [r0] + ldr r2, _080163FC @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x7 + strb r0, [r2, 0x1] + ldrb r4, [r3] + strb r4, [r2, 0x2] + ldrb r0, [r3] + ldr r1, _08016400 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x58 + ldrb r0, [r0] + strb r0, [r2, 0x3] + movs r0, 0xFF + strb r0, [r2, 0x4] + ldr r0, _08016404 @ =gUnknown_2023FC4 + strb r4, [r0, 0x17] + ldr r1, _08016408 @ =gUnknown_2023D74 + ldr r0, _0801640C @ =gUnknown_81D894D + str r0, [r1] + ldr r1, _08016410 @ =gUnknown_2023BE3 + movs r0, 0xA + strb r0, [r1] + ldr r1, _08016414 @ =gUnknown_3004F90 + ldrb r0, [r1, 0x2] + cmp r0, 0xFE + bhi _080163DA + adds r0, 0x1 + strb r0, [r1, 0x2] +_080163DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080163E0: .4byte gUnknown_2023D6B +_080163E4: .4byte gUnknown_2023BDE +_080163E8: .4byte gUnknown_2023BE2 +_080163EC: .4byte gUnknown_2022974 +_080163F0: .4byte gUnknown_2022976 +_080163F4: .4byte gUnknown_2023FF8 +_080163F8: .4byte gUnknown_2023FFC +_080163FC: .4byte gUnknown_2022AB8 +_08016400: .4byte gUnknown_2023FE8 +_08016404: .4byte gUnknown_2023FC4 +_08016408: .4byte gUnknown_2023D74 +_0801640C: .4byte gUnknown_81D894D +_08016410: .4byte gUnknown_2023BE3 +_08016414: .4byte gUnknown_3004F90 + thumb_func_end sub_8016374 + + thumb_func_start sub_8016418 +sub_8016418: @ 8016418 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08016474 @ =gUnknown_2023D6B + ldr r2, _08016478 @ =gUnknown_2023D6C + ldr r1, _0801647C @ =gUnknown_2023BDE + ldr r0, _08016480 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + strb r0, [r4] + ldr r0, _08016484 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _08016488 @ =gUnknown_2022976 + strh r1, [r0] + ldrb r0, [r4] + bl sub_801CFE4 + ldr r5, _0801648C @ =gUnknown_2023D68 + ldr r2, _08016490 @ =gUnknown_20233C4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r0, [r1] + lsls r0, 8 + orrs r3, r0 + strh r3, [r5] + adds r1, r3, 0 + cmp r1, 0xC + bhi _0801649C + ldr r2, _08016494 @ =gUnknown_2023D74 + ldr r1, _08016498 @ =gUnknown_81D99B0 + ldrh r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + b _080164FC + .align 2, 0 +_08016474: .4byte gUnknown_2023D6B +_08016478: .4byte gUnknown_2023D6C +_0801647C: .4byte gUnknown_2023BDE +_08016480: .4byte gUnknown_2023BE2 +_08016484: .4byte gUnknown_2022974 +_08016488: .4byte gUnknown_2022976 +_0801648C: .4byte gUnknown_2023D68 +_08016490: .4byte gUnknown_20233C4 +_08016494: .4byte gUnknown_2023D74 +_08016498: .4byte gUnknown_81D99B0 +_0801649C: + adds r0, r3, 0 + subs r0, 0x50 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _080164C4 + ldr r0, _080164B8 @ =gUnknown_2023D74 + ldr r1, _080164BC @ =gUnknown_81D99FC + ldr r1, [r1] + str r1, [r0] + ldr r1, _080164C0 @ =gUnknown_2023BE3 + mov r10, r1 + b _0801671E + .align 2, 0 +_080164B8: .4byte gUnknown_2023D74 +_080164BC: .4byte gUnknown_81D99FC +_080164C0: .4byte gUnknown_2023BE3 +_080164C4: + movs r0, 0xAF + lsls r0, 1 + cmp r1, r0 + bne _080164E8 + ldr r0, _080164DC @ =gUnknown_2023D74 + ldr r1, _080164E0 @ =gUnknown_81D99FC + ldr r1, [r1, 0x4] + str r1, [r0] + ldr r2, _080164E4 @ =gUnknown_2023BE3 + mov r10, r2 + b _0801671E + .align 2, 0 +_080164DC: .4byte gUnknown_2023D74 +_080164E0: .4byte gUnknown_81D99FC +_080164E4: .4byte gUnknown_2023BE3 +_080164E8: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08016510 + ldr r0, _08016504 @ =gUnknown_2023D74 + ldr r1, _08016508 @ =gUnknown_81D99E4 + ldr r1, [r1] + str r1, [r0] +_080164FC: + ldr r0, _0801650C @ =gUnknown_2023BE3 + mov r10, r0 + b _0801671E + .align 2, 0 +_08016504: .4byte gUnknown_2023D74 +_08016508: .4byte gUnknown_81D99E4 +_0801650C: .4byte gUnknown_2023BE3 +_08016510: + ldr r3, _08016548 @ =gUnknown_2023FC4 + ldrb r0, [r4] + strb r0, [r3, 0x17] + lsls r0, 24 + lsrs r0, 25 + ldr r2, _0801654C @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r0, r1 + adds r0, 0xC4 + ldrb r0, [r0] + subs r0, 0x1 + mov r8, r4 + ldr r1, _08016550 @ =gUnknown_2023D74 + mov r9, r1 + ldr r6, _08016554 @ =gUnknown_81D99E4 + mov r12, r3 + adds r7, r2, 0 + ldr r2, _08016558 @ =gUnknown_2023BE3 + mov r10, r2 + cmp r0, 0x4 + bls _0801653C + b _08016706 +_0801653C: + lsls r0, 2 + ldr r1, _0801655C @ =_08016560 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08016548: .4byte gUnknown_2023FC4 +_0801654C: .4byte gUnknown_2023FE8 +_08016550: .4byte gUnknown_2023D74 +_08016554: .4byte gUnknown_81D99E4 +_08016558: .4byte gUnknown_2023BE3 +_0801655C: .4byte _08016560 + .align 2, 0 +_08016560: + .4byte _08016706 + .4byte _08016706 + .4byte _08016574 + .4byte _08016608 + .4byte _080166D8 +_08016574: + ldr r5, _080165AC @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r5, 0x5] + ldr r2, _080165B0 @ =gUnknown_2023D6B + ldrb r0, [r2] + lsrs r0, 1 + ldr r1, [r7] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _080165C0 + movs r0, 0x3E + ands r0, r1 + ldr r1, _080165B4 @ =gUnknown_2023D74 + mov r9, r1 + ldr r6, _080165B8 @ =gUnknown_81D99E4 + ldr r2, _080165BC @ =gUnknown_2023BE3 + mov r10, r2 + cmp r0, 0 + bne _080165A6 + b _08016706 +_080165A6: + movs r0, 0x5 + strb r0, [r5, 0x5] + b _08016706 + .align 2, 0 +_080165AC: .4byte gUnknown_2023E82 +_080165B0: .4byte gUnknown_2023D6B +_080165B4: .4byte gUnknown_2023D74 +_080165B8: .4byte gUnknown_81D99E4 +_080165BC: .4byte gUnknown_2023BE3 +_080165C0: + ldr r0, _080165FC @ =gUnknown_2023D74 + mov r9, r0 + ldr r6, _08016600 @ =gUnknown_81D99E4 + ldr r1, _08016604 @ =gUnknown_2023BE3 + mov r10, r1 + mov r4, r8 + adds r3, r7, 0 + adds r2, r5, 0 +_080165D0: + ldrb r1, [r4] + lsrs r1, 1 + ldr r0, [r3] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + ldrb r0, [r2, 0x5] + adds r0, 0x1 + strb r0, [r2, 0x5] + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080165D0 + b _08016706 + .align 2, 0 +_080165FC: .4byte gUnknown_2023D74 +_08016600: .4byte gUnknown_81D99E4 +_08016604: .4byte gUnknown_2023BE3 +_08016608: + ldr r3, _0801663C @ =gUnknown_2023E82 + movs r0, 0x4 + strb r0, [r3, 0x5] + ldr r2, _08016640 @ =gUnknown_2023D6B + ldrb r0, [r2] + lsrs r0, 1 + ldr r1, [r7] + adds r0, r1 + adds r6, r0, 0 + adds r6, 0xC6 + ldrb r1, [r6] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r8, r2 + cmp r5, 0 + beq _08016650 + movs r0, 0x5 + strb r0, [r3, 0x5] + ldr r2, _08016644 @ =gUnknown_2023D74 + mov r9, r2 + ldr r6, _08016648 @ =gUnknown_81D99E4 + ldr r0, _0801664C @ =gUnknown_2023BE3 + mov r10, r0 + b _08016706 + .align 2, 0 +_0801663C: .4byte gUnknown_2023E82 +_08016640: .4byte gUnknown_2023D6B +_08016644: .4byte gUnknown_2023D74 +_08016648: .4byte gUnknown_81D99E4 +_0801664C: .4byte gUnknown_2023BE3 +_08016650: + ldr r3, _080166C4 @ =gUnknown_2022AB8 + movs r4, 0xFD + strb r4, [r3] + movs r0, 0x5 + strb r0, [r3, 0x1] + movs r2, 0x1 + strb r2, [r3, 0x2] + movs r0, 0xFF + strb r0, [r3, 0x3] + ldr r1, _080166C8 @ =gUnknown_2022AC8 + strb r4, [r1] + strb r5, [r1, 0x1] + movs r0, 0xD2 + strb r0, [r1, 0x2] + strb r5, [r1, 0x3] + subs r0, 0xD3 + strb r0, [r1, 0x4] + ldrb r0, [r6] + ands r2, r0 + ldr r1, _080166CC @ =gUnknown_2023D74 + mov r9, r1 + ldr r6, _080166D0 @ =gUnknown_81D99E4 + ldr r0, _080166D4 @ =gUnknown_2023BE3 + mov r10, r0 + cmp r2, 0 + bne _080166B4 + mov r5, r8 + adds r4, r7, 0 + adds r2, r3, 0 +_0801668A: + ldrb r1, [r5] + lsrs r1, 1 + ldr r0, [r4] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + ldrb r0, [r2, 0x2] + adds r0, 0x1 + strb r0, [r2, 0x2] + ldrb r0, [r5] + lsrs r0, 1 + ldr r1, [r4] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0801668A +_080166B4: + ldrb r0, [r3, 0x2] + adds r0, 0xE + movs r1, 0 + mov r2, r12 + strb r0, [r2, 0x10] + strb r1, [r2, 0x11] + b _08016706 + .align 2, 0 +_080166C4: .4byte gUnknown_2022AB8 +_080166C8: .4byte gUnknown_2022AC8 +_080166CC: .4byte gUnknown_2023D74 +_080166D0: .4byte gUnknown_81D99E4 +_080166D4: .4byte gUnknown_2023BE3 +_080166D8: + ldr r0, _080166EC @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080166F4 + ldr r1, _080166F0 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _080166F8 + .align 2, 0 +_080166EC: .4byte gUnknown_2022B4C +_080166F0: .4byte gUnknown_2023E82 +_080166F4: + ldr r0, _08016734 @ =gUnknown_2023E82 + strb r1, [r0, 0x5] +_080166F8: + ldr r0, _08016738 @ =gUnknown_2023D6B + mov r8, r0 + ldr r1, _0801673C @ =gUnknown_2023D74 + mov r9, r1 + ldr r6, _08016740 @ =gUnknown_81D99E4 + ldr r2, _08016744 @ =gUnknown_2023BE3 + mov r10, r2 +_08016706: + mov r1, r8 + ldrb r0, [r1] + lsrs r0, 1 + ldr r1, [r7] + adds r0, r1 + adds r0, 0xC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + mov r2, r9 + str r0, [r2] +_0801671E: + movs r0, 0xA + mov r1, r10 + strb r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08016734: .4byte gUnknown_2023E82 +_08016738: .4byte gUnknown_2023D6B +_0801673C: .4byte gUnknown_2023D74 +_08016740: .4byte gUnknown_81D99E4 +_08016744: .4byte gUnknown_2023BE3 + thumb_func_end sub_8016418 + + thumb_func_start sub_8016748 +sub_8016748: @ 8016748 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r6, 0 + ldr r1, _0801676C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08016774 + ldr r1, _08016770 @ =gUnknown_2023F54 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x7] + b _0801677E + .align 2, 0 +_0801676C: .4byte gUnknown_2023BE4 +_08016770: .4byte gUnknown_2023F54 +_08016774: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r1, r0, 24 +_0801677E: + ldr r0, _080167AC @ =gUnknown_2023D6F + strb r4, [r0] + cmp r1, 0x25 + bne _080167BC + ldr r2, _080167B0 @ =gUnknown_2023D68 + ldr r1, _080167B4 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r0, [r0, 0x2E] + strh r0, [r2] + ldr r0, _080167B8 @ =gUnknown_2023E8C + lsls r2, r4, 4 + adds r2, r0 + ldrb r1, [r2, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2, 0x1] + b _08016816 + .align 2, 0 +_080167AC: .4byte gUnknown_2023D6F +_080167B0: .4byte gUnknown_2023D68 +_080167B4: .4byte gUnknown_2023BE4 +_080167B8: .4byte gUnknown_2023E8C +_080167BC: + ldr r7, _080167EC @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r0, r4, 0 + muls r0, r2 + adds r5, r0, r7 + adds r0, r5, 0 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x32 + bne _080167F8 + ldr r0, _080167F0 @ =gUnknown_2023D6A + strb r1, [r0] + ldr r0, _080167F4 @ =gUnknown_2023E8C + lsls r2, r4, 4 + adds r2, r0 + ldrb r1, [r2, 0x1] + movs r0, 0x19 + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0x1] + b _08016816 + .align 2, 0 +_080167EC: .4byte gUnknown_2023BE4 +_080167F0: .4byte gUnknown_2023D6A +_080167F4: .4byte gUnknown_2023E8C +_080167F8: + ldr r0, _08016820 @ =gUnknown_2022B4C + ldr r3, [r0] + movs r0, 0xA0 + lsls r0, 8 + ands r0, r3 + movs r1, 0x80 + lsls r1, 8 + cmp r0, r1 + bne _08016824 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0801687A +_08016816: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + b _0801687A + .align 2, 0 +_08016820: .4byte gUnknown_2022B4C +_08016824: + movs r0, 0x1 + ands r3, r0 + cmp r3, 0 + bne _0801686E + movs r1, 0x1 + adds r0, r4, 0 + eors r0, r1 + muls r0, r2 + adds r2, r0, r7 + ldrh r0, [r5, 0x6] + ldrh r1, [r2, 0x6] + cmp r0, r1 + bcs _08016868 + lsls r0, 7 + ldrh r1, [r2, 0x6] + bl __divsi3 + adds r4, r0, 0 + ldr r0, _08016894 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x6C + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 1 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + cmp r4, r1 + bls _0801686E +_08016868: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0801686E: + ldr r0, _08016894 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, 0x6C + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0801687A: + cmp r6, 0 + beq _0801688C + ldr r1, _08016898 @ =gUnknown_2023BE2 + ldr r0, _0801689C @ =gUnknown_2023BCC + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _080168A0 @ =gUnknown_2023E8A + movs r0, 0x4 + strb r0, [r1] +_0801688C: + adds r0, r6, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08016894: .4byte gUnknown_2023FE8 +_08016898: .4byte gUnknown_2023BE2 +_0801689C: .4byte gUnknown_2023BCC +_080168A0: .4byte gUnknown_2023E8A + thumb_func_end sub_8016748 + + thumb_func_start sub_80168A4 +sub_80168A4: @ 80168A4 + push {r4-r6,lr} + ldr r4, _080168F4 @ =gUnknown_2023D6B + ldr r1, _080168F8 @ =gUnknown_2023BDE + ldr r5, _080168FC @ =gUnknown_2023BE2 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, _08016900 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801694C + ldr r0, _08016904 @ =gUnknown_2023BCC + ldrb r1, [r0] + strb r1, [r5] + ldr r2, _08016908 @ =gUnknown_2023BC4 + movs r0, 0 + strb r0, [r2] + lsls r1, 24 + cmp r1, 0 + beq _08016938 + adds r4, r2, 0 + ldr r6, _0801690C @ =gUnknown_2023D7C + ldr r5, _08016910 @ =gUnknown_2023E8A +_080168D8: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08016914 + ldrb r0, [r4] + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x3 + bne _08016926 + ldrb r0, [r5] + movs r1, 0x2 + b _08016922 + .align 2, 0 +_080168F4: .4byte gUnknown_2023D6B +_080168F8: .4byte gUnknown_2023BDE +_080168FC: .4byte gUnknown_2023BE2 +_08016900: .4byte gUnknown_2022B4C +_08016904: .4byte gUnknown_2023BCC +_08016908: .4byte gUnknown_2023BC4 +_0801690C: .4byte gUnknown_2023D7C +_08016910: .4byte gUnknown_2023E8A +_08016914: + ldrb r0, [r4] + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x3 + bne _08016926 + ldrb r0, [r5] + movs r1, 0x1 +_08016922: + orrs r0, r1 + strb r0, [r5] +_08016926: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _08016944 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _080168D8 +_08016938: + ldr r0, _08016948 @ =gUnknown_2023E8A + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + b _080169D8 + .align 2, 0 +_08016944: .4byte gUnknown_2023BCC +_08016948: .4byte gUnknown_2023E8A +_0801694C: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0801698C + ldrb r0, [r4] + bl sub_8016748 + lsls r0, 24 + cmp r0, 0 + bne _080169D8 + ldrb r0, [r4] + bl sub_801CFE4 + ldr r1, _0801697C @ =gUnknown_2023E82 + movs r0, 0x3 + strb r0, [r1, 0x5] + ldr r1, _08016980 @ =gUnknown_2023D74 + ldr r0, _08016984 @ =gUnknown_81D893A + str r0, [r1] + ldr r1, _08016988 @ =gUnknown_2023BE3 + movs r0, 0xA + b _080169D6 + .align 2, 0 +_0801697C: .4byte gUnknown_2023E82 +_08016980: .4byte gUnknown_2023D74 +_08016984: .4byte gUnknown_81D893A +_08016988: .4byte gUnknown_2023BE3 +_0801698C: + ldr r1, _080169B4 @ =gUnknown_2023BE4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080169B8 @ =0x0400e000 + ands r0, r1 + cmp r0, 0 + beq _080169CC + ldr r1, _080169BC @ =gUnknown_2023E82 + movs r0, 0x4 + strb r0, [r1, 0x5] + ldr r1, _080169C0 @ =gUnknown_2023D74 + ldr r0, _080169C4 @ =gUnknown_81D893A + str r0, [r1] + ldr r1, _080169C8 @ =gUnknown_2023BE3 + movs r0, 0xA + b _080169D6 + .align 2, 0 +_080169B4: .4byte gUnknown_2023BE4 +_080169B8: .4byte 0x0400e000 +_080169BC: .4byte gUnknown_2023E82 +_080169C0: .4byte gUnknown_2023D74 +_080169C4: .4byte gUnknown_81D893A +_080169C8: .4byte gUnknown_2023BE3 +_080169CC: + ldr r0, _080169E0 @ =gUnknown_2023BCC + ldrb r0, [r0] + strb r0, [r5] + ldr r1, _080169E4 @ =gUnknown_2023E8A + movs r0, 0x6 +_080169D6: + strb r0, [r1] +_080169D8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080169E0: .4byte gUnknown_2023BCC +_080169E4: .4byte gUnknown_2023E8A + thumb_func_end sub_80168A4 + + thumb_func_start sub_80169E8 +sub_80169E8: @ 80169E8 + push {r4,r5,lr} + ldr r2, _08016A44 @ =gUnknown_2023D6B + ldr r1, _08016A48 @ =gUnknown_2023BDE + ldr r0, _08016A4C @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _08016A50 @ =gUnknown_2022974 + movs r5, 0 + strh r5, [r0] + ldr r0, _08016A54 @ =gUnknown_2022976 + strh r5, [r0] + ldr r4, _08016A58 @ =gUnknown_2023FE8 + ldr r1, [r4] + adds r2, r1, 0 + adds r2, 0x79 + ldrb r0, [r2] + cmp r0, 0 + beq _08016A74 + subs r0, 0x1 + strb r0, [r2] + ldr r0, [r4] + adds r0, 0x79 + ldrb r0, [r0] + cmp r0, 0 + bne _08016A68 + ldr r0, _08016A5C @ =gUnknown_202402C + movs r1, 0xB + bl sub_803FBE8 + ldr r4, [r4] + adds r4, 0x7C + ldr r2, _08016A60 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x8] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08016A64 @ =0x000004fb + bl __divsi3 + strb r0, [r4] + b _08016A98 + .align 2, 0 +_08016A44: .4byte gUnknown_2023D6B +_08016A48: .4byte gUnknown_2023BDE +_08016A4C: .4byte gUnknown_2023BE2 +_08016A50: .4byte gUnknown_2022974 +_08016A54: .4byte gUnknown_2022976 +_08016A58: .4byte gUnknown_2023FE8 +_08016A5C: .4byte gUnknown_202402C +_08016A60: .4byte gUnknown_8254784 +_08016A64: .4byte 0x000004fb +_08016A68: + ldr r1, _08016A70 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08016A9C + .align 2, 0 +_08016A70: .4byte gUnknown_2023E82 +_08016A74: + adds r1, 0x7A + ldrb r0, [r1] + cmp r0, 0 + beq _08016A98 + subs r0, 0x1 + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x7A + ldrb r0, [r0] + cmp r0, 0 + beq _08016A98 + ldr r1, _08016A94 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _08016A9C + .align 2, 0 +_08016A94: .4byte gUnknown_2023E82 +_08016A98: + ldr r0, _08016AB0 @ =gUnknown_2023E82 + strb r5, [r0, 0x5] +_08016A9C: + ldr r1, _08016AB4 @ =gUnknown_2023D74 + ldr r0, _08016AB8 @ =gUnknown_81D9A04 + ldr r0, [r0] + str r0, [r1] + ldr r1, _08016ABC @ =gUnknown_2023BE3 + movs r0, 0xA + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08016AB0: .4byte gUnknown_2023E82 +_08016AB4: .4byte gUnknown_2023D74 +_08016AB8: .4byte gUnknown_81D9A04 +_08016ABC: .4byte gUnknown_2023BE3 + thumb_func_end sub_80169E8 + + thumb_func_start sub_8016AC0 +sub_8016AC0: @ 8016AC0 + ldr r2, _08016AF8 @ =gUnknown_2023D6B + ldr r1, _08016AFC @ =gUnknown_2023BDE + ldr r0, _08016B00 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _08016B04 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _08016B08 @ =gUnknown_2022976 + strh r1, [r0] + ldr r1, _08016B0C @ =gUnknown_2039994 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + ldr r1, _08016B10 @ =gUnknown_2023D68 + movs r0, 0x5 + strh r0, [r1] + ldr r1, _08016B14 @ =gUnknown_2023D74 + ldr r0, _08016B18 @ =gUnknown_81D99B0 + ldr r0, [r0, 0x14] + str r0, [r1] + ldr r1, _08016B1C @ =gUnknown_2023BE3 + movs r0, 0xA + strb r0, [r1] + bx lr + .align 2, 0 +_08016AF8: .4byte gUnknown_2023D6B +_08016AFC: .4byte gUnknown_2023BDE +_08016B00: .4byte gUnknown_2023BE2 +_08016B04: .4byte gUnknown_2022974 +_08016B08: .4byte gUnknown_2022976 +_08016B0C: .4byte gUnknown_2039994 +_08016B10: .4byte gUnknown_2023D68 +_08016B14: .4byte gUnknown_2023D74 +_08016B18: .4byte gUnknown_81D99B0 +_08016B1C: .4byte gUnknown_2023BE3 + thumb_func_end sub_8016AC0 + + thumb_func_start sub_8016B20 +sub_8016B20: @ 8016B20 + push {r4-r7,lr} + ldr r2, _08016B9C @ =gUnknown_2023D6B + ldr r1, _08016BA0 @ =gUnknown_2023BDE + ldr r0, _08016BA4 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _08016BA8 @ =gUnknown_2022974 + movs r7, 0 + strh r7, [r0] + ldr r0, _08016BAC @ =gUnknown_2022976 + strh r7, [r0] + bl sub_8044EC8 + ldr r6, _08016BB0 @ =gUnknown_2023FE8 + ldr r5, [r6] + adds r5, 0x7A + ldrb r4, [r5] + adds r4, 0x2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + adds r0, r4 + strb r0, [r5] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x7A + ldrb r0, [r1] + cmp r0, 0x6 + bls _08016B66 + movs r0, 0x6 + strb r0, [r1] +_08016B66: + ldr r0, [r6] + adds r0, 0x79 + strb r7, [r0] + ldr r1, [r6] + adds r1, 0x7C + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x7C + ldrb r0, [r1] + cmp r0, 0x2 + bhi _08016B86 + movs r0, 0x3 + strb r0, [r1] +_08016B86: + ldr r1, _08016BB4 @ =gUnknown_2023D74 + ldr r0, _08016BB8 @ =gUnknown_81D9A04 + ldr r0, [r0, 0x8] + str r0, [r1] + ldr r1, _08016BBC @ =gUnknown_2023BE3 + movs r0, 0xA + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08016B9C: .4byte gUnknown_2023D6B +_08016BA0: .4byte gUnknown_2023BDE +_08016BA4: .4byte gUnknown_2023BE2 +_08016BA8: .4byte gUnknown_2022974 +_08016BAC: .4byte gUnknown_2022976 +_08016BB0: .4byte gUnknown_2023FE8 +_08016BB4: .4byte gUnknown_2023D74 +_08016BB8: .4byte gUnknown_81D9A04 +_08016BBC: .4byte gUnknown_2023BE3 + thumb_func_end sub_8016B20 + + thumb_func_start sub_8016BC0 +sub_8016BC0: @ 8016BC0 + push {r4-r7,lr} + ldr r2, _08016C3C @ =gUnknown_2023D6B + ldr r1, _08016C40 @ =gUnknown_2023BDE + ldr r0, _08016C44 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _08016C48 @ =gUnknown_2022974 + movs r7, 0 + strh r7, [r0] + ldr r0, _08016C4C @ =gUnknown_2022976 + strh r7, [r0] + bl sub_8044EC8 + ldr r6, _08016C50 @ =gUnknown_2023FE8 + ldr r5, [r6] + adds r5, 0x79 + ldrb r4, [r5] + adds r4, 0x2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + adds r0, r4 + strb r0, [r5] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x79 + ldrb r0, [r1] + cmp r0, 0x6 + bls _08016C06 + movs r0, 0x6 + strb r0, [r1] +_08016C06: + ldr r0, [r6] + adds r0, 0x7A + strb r7, [r0] + ldr r1, [r6] + adds r1, 0x7C + ldrb r0, [r1] + lsls r0, 1 + strb r0, [r1] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x7C + ldrb r0, [r1] + cmp r0, 0x14 + bls _08016C26 + movs r0, 0x14 + strb r0, [r1] +_08016C26: + ldr r1, _08016C54 @ =gUnknown_2023D74 + ldr r0, _08016C58 @ =gUnknown_81D9A04 + ldr r0, [r0, 0x4] + str r0, [r1] + ldr r1, _08016C5C @ =gUnknown_2023BE3 + movs r0, 0xA + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08016C3C: .4byte gUnknown_2023D6B +_08016C40: .4byte gUnknown_2023BDE +_08016C44: .4byte gUnknown_2023BE2 +_08016C48: .4byte gUnknown_2022974 +_08016C4C: .4byte gUnknown_2022976 +_08016C50: .4byte gUnknown_2023FE8 +_08016C54: .4byte gUnknown_2023D74 +_08016C58: .4byte gUnknown_81D9A04 +_08016C5C: .4byte gUnknown_2023BE3 + thumb_func_end sub_8016BC0 + + thumb_func_start sub_8016C60 +sub_8016C60: @ 8016C60 + push {r4,lr} + ldr r2, _08016C88 @ =gUnknown_2023D6B + ldr r1, _08016C8C @ =gUnknown_2023BDE + ldr r4, _08016C90 @ =gUnknown_2023BE2 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x11 + bl sub_80722CC + ldr r0, _08016C94 @ =gUnknown_2023BCC + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _08016C98 @ =gUnknown_2023E8A + movs r0, 0x4 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08016C88: .4byte gUnknown_2023D6B +_08016C8C: .4byte gUnknown_2023BDE +_08016C90: .4byte gUnknown_2023BE2 +_08016C94: .4byte gUnknown_2023BCC +_08016C98: .4byte gUnknown_2023E8A + thumb_func_end sub_8016C60 + + thumb_func_start sub_8016C9C +sub_8016C9C: @ 8016C9C + ldr r3, _08016CE8 @ =gUnknown_2023D6B + ldr r1, _08016CEC @ =gUnknown_2023BDE + ldr r0, _08016CF0 @ =gUnknown_2023BE2 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + strb r2, [r3] + ldr r0, _08016CF4 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _08016CF8 @ =gUnknown_2022976 + strh r1, [r0] + ldr r1, _08016CFC @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + ldr r2, _08016D00 @ =gUnknown_2023BCE + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08016D04 @ =gUnknown_2023D74 + ldr r0, _08016D08 @ =gUnknown_81D9A04 + ldr r0, [r0, 0xC] + str r0, [r1] + ldr r1, _08016D0C @ =gUnknown_2023BE3 + movs r0, 0xA + strb r0, [r1] + ldr r1, _08016D10 @ =gUnknown_2023BDA + movs r0, 0xC + strb r0, [r1, 0x1] + bx lr + .align 2, 0 +_08016CE8: .4byte gUnknown_2023D6B +_08016CEC: .4byte gUnknown_2023BDE +_08016CF0: .4byte gUnknown_2023BE2 +_08016CF4: .4byte gUnknown_2022974 +_08016CF8: .4byte gUnknown_2022976 +_08016CFC: .4byte gUnknown_2022AB8 +_08016D00: .4byte gUnknown_2023BCE +_08016D04: .4byte gUnknown_2023D74 +_08016D08: .4byte gUnknown_81D9A04 +_08016D0C: .4byte gUnknown_2023BE3 +_08016D10: .4byte gUnknown_2023BDA + thumb_func_end sub_8016C9C + + thumb_func_start sub_8016D14 +sub_8016D14: @ 8016D14 + push {lr} + bl sub_8018F90 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08016D30 + ldr r0, _08016D34 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x4D + strb r1, [r0] + ldr r1, _08016D38 @ =gUnknown_2023BE3 + movs r0, 0xC + strb r0, [r1] +_08016D30: + pop {r0} + bx r0 + .align 2, 0 +_08016D34: .4byte gUnknown_2023FE8 +_08016D38: .4byte gUnknown_2023BE3 + thumb_func_end sub_8016D14 + + thumb_func_start sub_8016D3C +sub_8016D3C: @ 8016D3C + ldr r1, _08016D5C @ =gUnknown_2023BE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r3, _08016D60 @ =gUnknown_2023BE3 + ldr r2, _08016D64 @ =gUnknown_2023BDA + ldrb r0, [r1] + adds r0, r2 + ldrb r0, [r0] + strb r0, [r3] + ldr r2, _08016D68 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08016D6C @ =0xf1e892af + ands r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_08016D5C: .4byte gUnknown_2023BE2 +_08016D60: .4byte gUnknown_2023BE3 +_08016D64: .4byte gUnknown_2023BDA +_08016D68: .4byte gUnknown_2023DD0 +_08016D6C: .4byte 0xf1e892af + thumb_func_end sub_8016D3C + + thumb_func_start sub_8016D70 +sub_8016D70: @ 8016D70 + push {r4,r5,lr} + ldr r1, _08016DE4 @ =gUnknown_2023BE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r3, _08016DE8 @ =gUnknown_2023BE3 + ldr r2, _08016DEC @ =gUnknown_2023BDA + ldrb r0, [r1] + adds r0, r2 + ldrb r0, [r0] + strb r0, [r3] + bl sub_8015450 + ldr r2, _08016DF0 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08016DF4 @ =0xf1e892af + ands r0, r1 + str r0, [r2] + ldr r0, _08016DF8 @ =gUnknown_2023D4A + movs r1, 0 + strh r1, [r0] + ldr r0, _08016DFC @ =gUnknown_2023D50 + movs r4, 0 + str r4, [r0] + ldr r0, _08016E00 @ =gUnknown_2023DCC + strb r1, [r0] + ldr r5, _08016E04 @ =gUnknown_2023FC4 + strb r1, [r5, 0x18] + strb r1, [r5, 0x19] + ldr r2, _08016E08 @ =gUnknown_2023DA0 + ldr r3, _08016E0C @ =gUnknown_2023D6B + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + strh r4, [r0] + ldr r2, _08016E10 @ =gUnknown_2023DA8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + strh r4, [r0] + ldr r0, _08016E14 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _08016E18 @ =gUnknown_2023F50 + strh r4, [r0] + strb r1, [r5, 0x14] + ldr r0, _08016E1C @ =gUnknown_2023E82 + strb r1, [r0, 0x3] + strb r1, [r0, 0x4] + strb r1, [r5, 0x16] + ldr r0, _08016E20 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x8] + adds r0, 0x20 + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08016DE4: .4byte gUnknown_2023BE2 +_08016DE8: .4byte gUnknown_2023BE3 +_08016DEC: .4byte gUnknown_2023BDA +_08016DF0: .4byte gUnknown_2023DD0 +_08016DF4: .4byte 0xf1e892af +_08016DF8: .4byte gUnknown_2023D4A +_08016DFC: .4byte gUnknown_2023D50 +_08016E00: .4byte gUnknown_2023DCC +_08016E04: .4byte gUnknown_2023FC4 +_08016E08: .4byte gUnknown_2023DA0 +_08016E0C: .4byte gUnknown_2023D6B +_08016E10: .4byte gUnknown_2023DA8 +_08016E14: .4byte gUnknown_2023FE8 +_08016E18: .4byte gUnknown_2023F50 +_08016E1C: .4byte gUnknown_2023E82 +_08016E20: .4byte gUnknown_2023FF4 + thumb_func_end sub_8016D70 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_ai_script_commands.s b/asm/battle_ai_script_commands.s new file mode 100644 index 000000000..8f9605a12 --- /dev/null +++ b/asm/battle_ai_script_commands.s @@ -0,0 +1,5796 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80C6D0C +sub_80C6D0C: @ 80C6D0C + push {r4-r7,lr} + ldr r1, _080C6D8C @ =gUnknown_2023FF4 + ldr r0, [r1] + ldr r3, [r0, 0x18] + movs r4, 0 + adds r7, r1, 0 + ldr r2, _080C6D90 @ =gUnknown_2022B4C + movs r1, 0 +_080C6D1C: + adds r0, r3, r4 + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x2F + bls _080C6D1C + ldr r3, [r2] + movs r0, 0x8 + ands r0, r3 + cmp r0, 0 + beq _080C6D80 + ldr r0, _080C6D94 @ =gUnknown_20386AE + ldrh r2, [r0] + movs r1, 0x80 + lsls r1, 3 + adds r6, r0, 0 + cmp r2, r1 + beq _080C6D80 + ldr r0, _080C6D98 @ =0x00080982 + ands r3, r0 + cmp r3, 0 + bne _080C6D80 + movs r4, 0 + ldr r5, _080C6D9C @ =gUnknown_823EAD8 +_080C6D4A: + lsls r2, r4, 1 + ldrh r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r2, r0 + adds r2, r5 + ldrh r3, [r2] + cmp r3, 0 + beq _080C6D7A + ldr r2, [r7] + ldr r1, [r2, 0x18] + adds r0, r1, 0 + adds r0, 0x2C + ldrb r0, [r0] + lsls r0, 1 + adds r1, 0x24 + adds r1, r0 + strh r3, [r1] + ldr r1, [r2, 0x18] + adds r1, 0x2C + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080C6D7A: + adds r4, 0x1 + cmp r4, 0x3 + ble _080C6D4A +_080C6D80: + bl sub_80C6DA0 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6D8C: .4byte gUnknown_2023FF4 +_080C6D90: .4byte gUnknown_2022B4C +_080C6D94: .4byte gUnknown_20386AE +_080C6D98: .4byte 0x00080982 +_080C6D9C: .4byte gUnknown_823EAD8 + thumb_func_end sub_80C6D0C + + thumb_func_start sub_80C6DA0 +sub_80C6DA0: @ 80C6DA0 + push {r4-r7,lr} + ldr r0, _080C6E60 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r4, 0 + ldr r3, _080C6E64 @ =gUnknown_2023BC4 + movs r2, 0 +_080C6DAE: + adds r0, r1, r4 + strb r2, [r0] + adds r4, 0x1 + cmp r4, 0x1B + bls _080C6DAE + movs r4, 0 + ldr r2, _080C6E60 @ =gUnknown_2023FF4 + movs r1, 0x64 +_080C6DBE: + ldr r0, [r2] + ldr r0, [r0, 0x14] + adds r0, 0x4 + adds r0, r4 + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x3 + ble _080C6DBE + ldrb r0, [r3] + movs r1, 0 + movs r2, 0xFF + bl sub_801779C + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r5, _080C6E60 @ =gUnknown_2023FF4 +_080C6DE0: + ldr r7, _080C6E68 @ =gUnknown_825E45C + lsls r0, r4, 2 + adds r0, r7 + ldr r0, [r0] + ands r0, r6 + cmp r0, 0 + beq _080C6DFA + ldr r0, [r5] + ldr r0, [r0, 0x14] + adds r0, 0x4 + adds r0, r4 + movs r1, 0 + strb r1, [r0] +_080C6DFA: + bl sub_8044EC8 + ldr r1, [r5] + ldr r2, [r1, 0x14] + adds r2, 0x18 + adds r2, r4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + strb r1, [r2] + adds r4, 0x1 + cmp r4, 0x3 + ble _080C6DE0 + ldr r0, _080C6E60 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x1C] + adds r0, 0x20 + movs r1, 0 + strb r1, [r0] + ldr r1, _080C6E6C @ =gUnknown_2023D6B + ldr r0, _080C6E64 @ =gUnknown_2023BC4 + ldrb r2, [r0] + strb r2, [r1] + ldr r0, _080C6E70 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C6E7C + ldr r4, _080C6E74 @ =gUnknown_2023D6C + bl sub_8044EC8 + movs r3, 0x2 + ands r0, r3 + strb r0, [r4] + ldr r0, _080C6E78 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080C6E84 + eors r2, r3 + strb r2, [r4] + b _080C6E84 + .align 2, 0 +_080C6E60: .4byte gUnknown_2023FF4 +_080C6E64: .4byte gUnknown_2023BC4 +_080C6E68: .4byte gUnknown_825E45C +_080C6E6C: .4byte gUnknown_2023D6B +_080C6E70: .4byte gUnknown_2022B4C +_080C6E74: .4byte gUnknown_2023D6C +_080C6E78: .4byte gUnknown_2023D70 +_080C6E7C: + ldr r0, _080C6EA0 @ =gUnknown_2023D6C + movs r1, 0x1 + eors r1, r2 + strb r1, [r0] +_080C6E84: + ldr r0, _080C6EA4 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C6EAC + ldr r0, _080C6EA8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x80 + lsls r0, 23 + str r0, [r1, 0xC] + b _080C6F34 + .align 2, 0 +_080C6EA0: .4byte gUnknown_2023D6C +_080C6EA4: .4byte gUnknown_2022B4C +_080C6EA8: .4byte gUnknown_2023FF4 +_080C6EAC: + movs r2, 0x80 + lsls r2, 3 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080C6ECC + ldr r0, _080C6EC8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x80 + lsls r0, 22 + str r0, [r1, 0xC] + b _080C6F34 + .align 2, 0 +_080C6EC8: .4byte gUnknown_2023FF4 +_080C6ECC: + ldr r0, _080C6EF4 @ =0x00080900 + ands r0, r1 + cmp r0, 0 + bne _080C6F0A + ldr r4, _080C6EF8 @ =gUnknown_20386AE + ldrh r0, [r4] + cmp r0, r2 + beq _080C6F0A + movs r0, 0x80 + lsls r0, 10 + ands r0, r1 + cmp r0, 0 + beq _080C6F00 + ldr r0, _080C6EFC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x1 + str r0, [r1, 0xC] + b _080C6F34 + .align 2, 0 +_080C6EF4: .4byte 0x00080900 +_080C6EF8: .4byte gUnknown_20386AE +_080C6EFC: .4byte gUnknown_2023FF4 +_080C6F00: + movs r0, 0x80 + lsls r0, 11 + ands r1, r0 + cmp r1, 0 + beq _080C6F1C +_080C6F0A: + ldr r0, _080C6F18 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x7 + str r0, [r1, 0xC] + b _080C6F34 + .align 2, 0 +_080C6F18: .4byte gUnknown_2023FF4 +_080C6F1C: + ldr r0, _080C6F3C @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C6F40 @ =gUnknown_823EAC8 + ldrh r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r2, 0x1C + adds r0, r2 + ldr r0, [r0] + str r0, [r3, 0xC] +_080C6F34: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6F3C: .4byte gUnknown_2023FF4 +_080C6F40: .4byte gUnknown_823EAC8 + thumb_func_end sub_80C6DA0 + + thumb_func_start sub_80C6F44 +sub_80C6F44: @ 80C6F44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + bl sub_80C7164 + ldr r1, _080C6FA8 @ =gUnknown_2023FF4 + ldr r0, [r1] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0xC] + cmp r0, 0 + beq _080C6F94 + adds r4, r1, 0 + movs r5, 0 +_080C6F60: + ldr r0, [r4] + ldr r2, [r0, 0x14] + ldr r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C6F74 + strb r5, [r2] + bl sub_80C7038 +_080C6F74: + ldr r0, [r4] + ldr r1, [r0, 0x14] + ldr r0, [r1, 0xC] + lsrs r0, 1 + str r0, [r1, 0xC] + ldrb r0, [r1, 0x11] + adds r0, 0x1 + strb r0, [r1, 0x11] + ldr r0, [r4] + ldr r0, [r0, 0x14] + strb r5, [r0, 0x1] + ldr r0, [r4] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0xC] + cmp r0, 0 + bne _080C6F60 +_080C6F94: + ldr r6, _080C6FA8 @ =gUnknown_2023FF4 + ldr r0, [r6] + ldr r3, [r0, 0x14] + ldrb r1, [r3, 0x10] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080C6FAC + movs r0, 0x4 + b _080C702A + .align 2, 0 +_080C6FA8: .4byte gUnknown_2023FF4 +_080C6FAC: + movs r0, 0x4 + ands r0, r1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _080C6FBC + movs r0, 0x5 + b _080C702A +_080C6FBC: + movs r5, 0x1 + mov r0, sp + ldrb r1, [r3, 0x4] + strb r1, [r0] + add r0, sp, 0x4 + strb r2, [r0] + movs r3, 0x1 + mov r8, r0 + mov r4, sp + adds r7, r6, 0 + mov r6, r8 +_080C6FD2: + ldrb r1, [r4] + ldr r0, [r7] + ldr r0, [r0, 0x14] + adds r0, 0x4 + adds r2, r0, r3 + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bge _080C6FEC + movs r5, 0x1 + ldrb r0, [r2] + strb r0, [r4] + strb r3, [r6] +_080C6FEC: + ldrb r1, [r4] + ldr r0, [r7] + ldr r0, [r0, 0x14] + adds r0, 0x4 + adds r2, r0, r3 + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080C7012 + mov r0, sp + adds r1, r0, r5 + ldrb r0, [r2] + strb r0, [r1] + adds r1, r5, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r1, r6, r1 + strb r3, [r1] +_080C7012: + adds r3, 0x1 + cmp r3, 0x3 + ble _080C6FD2 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + bl __modsi3 + add r0, r8 + ldrb r0, [r0] +_080C702A: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C6F44 + + thumb_func_start sub_80C7038 +sub_80C7038: @ 80C7038 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r7, _080C70B0 @ =gUnknown_2023FF4 + ldr r0, [r7] + ldr r0, [r0, 0x14] + ldrb r0, [r0] + adds r6, r7, 0 + cmp r0, 0x2 + bne _080C7050 + b _080C7156 +_080C7050: + mov r9, r7 + ldr r0, _080C70B4 @ =gUnknown_2039A00 + mov r8, r0 +_080C7056: + mov r1, r9 + ldr r0, [r1] + ldr r2, [r0, 0x14] + ldrb r0, [r2] + cmp r0, 0x1 + beq _080C70C4 + cmp r0, 0x1 + bgt _080C714A + cmp r0, 0 + bne _080C714A + ldr r1, _080C70B8 @ =gUnknown_81D9BF4 + ldrb r0, [r2, 0x11] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + mov r1, r8 + str r0, [r1] + ldr r5, _080C70BC @ =gUnknown_2023BE4 + ldrb r4, [r2, 0x1] + ldr r0, _080C70C0 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + adds r3, r1, 0 + muls r3, r0 + adds r0, r4, r3 + adds r1, r5, 0 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080C70A0 + lsls r0, r4, 1 + adds r0, r3 + adds r1, r5, 0 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] +_080C70A0: + strh r0, [r2, 0x2] + ldr r0, [r6] + ldr r1, [r0, 0x14] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C714A + .align 2, 0 +_080C70B0: .4byte gUnknown_2023FF4 +_080C70B4: .4byte gUnknown_2039A00 +_080C70B8: .4byte gUnknown_81D9BF4 +_080C70BC: .4byte gUnknown_2023BE4 +_080C70C0: .4byte gUnknown_2023D6B +_080C70C4: + ldrh r1, [r2, 0x2] + cmp r1, 0 + beq _080C70E4 + ldr r1, _080C70E0 @ =gUnknown_83F55A4 + mov r2, r8 + ldr r0, [r2] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _080C70FA + .align 2, 0 +_080C70E0: .4byte gUnknown_83F55A4 +_080C70E4: + adds r0, r2, 0x4 + ldrb r2, [r2, 0x1] + adds r0, r2 + strb r1, [r0] + mov r1, r9 + ldr r0, [r1] + ldr r2, [r0, 0x14] + ldrb r1, [r2, 0x10] + movs r0, 0x1 + orrs r0, r1 + strb r0, [r2, 0x10] +_080C70FA: + ldr r2, _080C7130 @ =gUnknown_2023FF4 + ldr r0, [r2] + ldr r3, [r0, 0x14] + ldrb r1, [r3, 0x10] + movs r0, 0x1 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _080C714A + ldrb r0, [r3, 0x1] + adds r0, 0x1 + strb r0, [r3, 0x1] + ldr r0, [r6] + ldr r2, [r0, 0x14] + ldrb r0, [r2, 0x1] + cmp r0, 0x3 + bhi _080C7134 + ldrb r1, [r2, 0x10] + movs r0, 0x8 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080C7134 + strb r0, [r2] + b _080C713E + .align 2, 0 +_080C7130: .4byte gUnknown_2023FF4 +_080C7134: + ldr r0, [r6] + ldr r1, [r0, 0x14] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080C713E: + ldr r0, [r6] + ldr r2, [r0, 0x14] + ldrb r1, [r2, 0x10] + movs r0, 0xFE + ands r0, r1 + strb r0, [r2, 0x10] +_080C714A: + ldr r0, [r7] + ldr r0, [r0, 0x14] + ldrb r0, [r0] + cmp r0, 0x2 + beq _080C7156 + b _080C7056 +_080C7156: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C7038 + + thumb_func_start sub_80C7164 +sub_80C7164: @ 80C7164 + push {r4-r6,lr} + movs r3, 0 + ldr r5, _080C7190 @ =gUnknown_2023FF4 + ldr r4, _080C7194 @ =gUnknown_2023D6C + ldr r6, _080C7198 @ =gUnknown_2023D98 +_080C716E: + ldr r0, [r5] + ldr r2, [r0, 0x18] + lsls r1, r3, 1 + ldrb r0, [r4] + lsrs r0, 1 + lsls r0, 4 + adds r1, r0 + adds r2, r1 + ldrh r0, [r2] + cmp r0, 0 + bne _080C719C + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r2] + b _080C71A2 + .align 2, 0 +_080C7190: .4byte gUnknown_2023FF4 +_080C7194: .4byte gUnknown_2023D6C +_080C7198: .4byte gUnknown_2023D98 +_080C719C: + adds r3, 0x1 + cmp r3, 0x7 + ble _080C716E +_080C71A2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80C7164 + + thumb_func_start sub_80C71A8 +sub_80C71A8: @ 80C71A8 + push {r4,lr} + lsls r0, 24 + ldr r4, _080C71CC @ =gUnknown_2023FF4 + lsrs r0, 25 + lsls r1, r0, 4 + movs r3, 0 + movs r2, 0x7 +_080C71B6: + ldr r0, [r4] + ldr r0, [r0, 0x18] + adds r0, r1 + strh r3, [r0] + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _080C71B6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C71CC: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C71A8 + + thumb_func_start sub_80C71D0 +sub_80C71D0: @ 80C71D0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080C71FC + adds r0, r4, 0 + bl sub_80751D8 + ldr r1, _080C7204 @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r2, [r1, 0x18] + movs r1, 0x1 + ands r1, r0 + adds r2, 0x20 + adds r2, r1 + strb r5, [r2] +_080C71FC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C7204: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C71D0 + + thumb_func_start sub_80C7208 +sub_80C7208: @ 80C7208 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080C7234 + adds r0, r4, 0 + bl sub_80751D8 + ldr r1, _080C723C @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r2, [r1, 0x18] + movs r1, 0x1 + ands r1, r0 + adds r2, 0x22 + adds r2, r1 + strb r5, [r2] +_080C7234: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C723C: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C7208 + + thumb_func_start sub_80C7240 +sub_80C7240: @ 80C7240 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xFF + lsls r1, 16 + ldr r3, _080C7274 @ =gUnknown_2039A00 + ldr r2, [r3] + ands r1, r0 + lsrs r1, 16 + ldrb r0, [r2, 0x1] + cmp r1, r0 + bcs _080C7278 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C727C + .align 2, 0 +_080C7274: .4byte gUnknown_2039A00 +_080C7278: + adds r0, r2, 0x6 + str r0, [r3] +_080C727C: + pop {r0} + bx r0 + thumb_func_end sub_80C7240 + + thumb_func_start sub_80C7280 +sub_80C7280: @ 80C7280 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xFF + lsls r1, 16 + ldr r3, _080C72B4 @ =gUnknown_2039A00 + ldr r2, [r3] + ands r1, r0 + lsrs r1, 16 + ldrb r0, [r2, 0x1] + cmp r1, r0 + bls _080C72B8 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C72BC + .align 2, 0 +_080C72B4: .4byte gUnknown_2039A00 +_080C72B8: + adds r0, r2, 0x6 + str r0, [r3] +_080C72BC: + pop {r0} + bx r0 + thumb_func_end sub_80C7280 + + thumb_func_start sub_80C72C0 +sub_80C72C0: @ 80C72C0 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xFF + lsls r1, 16 + ldr r3, _080C72F4 @ =gUnknown_2039A00 + ldr r2, [r3] + ands r1, r0 + lsrs r1, 16 + ldrb r0, [r2, 0x1] + cmp r1, r0 + bne _080C72F8 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C72FC + .align 2, 0 +_080C72F4: .4byte gUnknown_2039A00 +_080C72F8: + adds r0, r2, 0x6 + str r0, [r3] +_080C72FC: + pop {r0} + bx r0 + thumb_func_end sub_80C72C0 + + thumb_func_start sub_80C7300 +sub_80C7300: @ 80C7300 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xFF + lsls r1, 16 + ldr r3, _080C7334 @ =gUnknown_2039A00 + ldr r2, [r3] + ands r1, r0 + lsrs r1, 16 + ldrb r0, [r2, 0x1] + cmp r1, r0 + beq _080C7338 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C733C + .align 2, 0 +_080C7334: .4byte gUnknown_2039A00 +_080C7338: + adds r0, r2, 0x6 + str r0, [r3] +_080C733C: + pop {r0} + bx r0 + thumb_func_end sub_80C7300 + + thumb_func_start sub_80C7340 +sub_80C7340: @ 80C7340 + push {r4,lr} + ldr r2, _080C737C @ =gUnknown_2023FF4 + ldr r0, [r2] + ldr r0, [r0, 0x14] + adds r1, r0, 0x4 + ldrb r0, [r0, 0x1] + adds r1, r0 + ldr r3, _080C7380 @ =gUnknown_2039A00 + ldr r0, [r3] + ldrb r0, [r0, 0x1] + ldrb r4, [r1] + adds r0, r4 + strb r0, [r1] + ldr r0, [r2] + ldr r1, [r0, 0x14] + adds r0, r1, 0x4 + ldrb r1, [r1, 0x1] + adds r1, r0, r1 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0 + bge _080C7370 + movs r0, 0 + strb r0, [r1] +_080C7370: + ldr r0, [r3] + adds r0, 0x2 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C737C: .4byte gUnknown_2023FF4 +_080C7380: .4byte gUnknown_2039A00 + thumb_func_end sub_80C7340 + + thumb_func_start sub_80C7384 +sub_80C7384: @ 80C7384 + push {r4,lr} + ldr r0, _080C7398 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C73A0 + ldr r0, _080C739C @ =gUnknown_2023D6B + b _080C73A2 + .align 2, 0 +_080C7398: .4byte gUnknown_2039A00 +_080C739C: .4byte gUnknown_2023D6B +_080C73A0: + ldr r0, _080C73D8 @ =gUnknown_2023D6C +_080C73A2: + ldrb r1, [r0] + ldr r2, _080C73DC @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r2, [r1, 0x28] + movs r0, 0x64 + muls r0, r2 + ldrh r1, [r1, 0x2C] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, 0x2] + cmp r0, r1 + bcs _080C73E0 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C73E4 + .align 2, 0 +_080C73D8: .4byte gUnknown_2023D6C +_080C73DC: .4byte gUnknown_2023BE4 +_080C73E0: + adds r0, r2, 0x7 + str r0, [r4] +_080C73E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C7384 + + thumb_func_start sub_80C73EC +sub_80C73EC: @ 80C73EC + push {r4,lr} + ldr r0, _080C7400 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C7408 + ldr r0, _080C7404 @ =gUnknown_2023D6B + b _080C740A + .align 2, 0 +_080C7400: .4byte gUnknown_2039A00 +_080C7404: .4byte gUnknown_2023D6B +_080C7408: + ldr r0, _080C7440 @ =gUnknown_2023D6C +_080C740A: + ldrb r1, [r0] + ldr r2, _080C7444 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r2, [r1, 0x28] + movs r0, 0x64 + muls r0, r2 + ldrh r1, [r1, 0x2C] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, 0x2] + cmp r0, r1 + bls _080C7448 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C744C + .align 2, 0 +_080C7440: .4byte gUnknown_2023D6C +_080C7444: .4byte gUnknown_2023BE4 +_080C7448: + adds r0, r2, 0x7 + str r0, [r4] +_080C744C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C73EC + + thumb_func_start sub_80C7454 +sub_80C7454: @ 80C7454 + push {r4,lr} + ldr r0, _080C7468 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C7470 + ldr r0, _080C746C @ =gUnknown_2023D6B + b _080C7472 + .align 2, 0 +_080C7468: .4byte gUnknown_2039A00 +_080C746C: .4byte gUnknown_2023D6B +_080C7470: + ldr r0, _080C74A8 @ =gUnknown_2023D6C +_080C7472: + ldrb r1, [r0] + ldr r2, _080C74AC @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r2, [r1, 0x28] + movs r0, 0x64 + muls r0, r2 + ldrh r1, [r1, 0x2C] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, 0x2] + cmp r0, r1 + bne _080C74B0 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C74B4 + .align 2, 0 +_080C74A8: .4byte gUnknown_2023D6C +_080C74AC: .4byte gUnknown_2023BE4 +_080C74B0: + adds r0, r2, 0x7 + str r0, [r4] +_080C74B4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C7454 + + thumb_func_start sub_80C74BC +sub_80C74BC: @ 80C74BC + push {r4,lr} + ldr r0, _080C74D0 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C74D8 + ldr r0, _080C74D4 @ =gUnknown_2023D6B + b _080C74DA + .align 2, 0 +_080C74D0: .4byte gUnknown_2039A00 +_080C74D4: .4byte gUnknown_2023D6B +_080C74D8: + ldr r0, _080C7510 @ =gUnknown_2023D6C +_080C74DA: + ldrb r1, [r0] + ldr r2, _080C7514 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r2, [r1, 0x28] + movs r0, 0x64 + muls r0, r2 + ldrh r1, [r1, 0x2C] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, 0x2] + cmp r0, r1 + beq _080C7518 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C751C + .align 2, 0 +_080C7510: .4byte gUnknown_2023D6C +_080C7514: .4byte gUnknown_2023BE4 +_080C7518: + adds r0, r2, 0x7 + str r0, [r4] +_080C751C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C74BC + + thumb_func_start sub_80C7524 +sub_80C7524: @ 80C7524 + push {r4,r5,lr} + ldr r0, _080C7538 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C7540 + ldr r0, _080C753C @ =gUnknown_2023D6B + b _080C7542 + .align 2, 0 +_080C7538: .4byte gUnknown_2039A00 +_080C753C: .4byte gUnknown_2023D6B +_080C7540: + ldr r0, _080C7584 @ =gUnknown_2023D6C +_080C7542: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r2, r0 + ldr r1, _080C7588 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, 0 + beq _080C758C + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C7592 + .align 2, 0 +_080C7584: .4byte gUnknown_2023D6C +_080C7588: .4byte gUnknown_2023BE4 +_080C758C: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r5] +_080C7592: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7524 + + thumb_func_start sub_80C7598 +sub_80C7598: @ 80C7598 + push {r4,r5,lr} + ldr r0, _080C75AC @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C75B4 + ldr r0, _080C75B0 @ =gUnknown_2023D6B + b _080C75B6 + .align 2, 0 +_080C75AC: .4byte gUnknown_2039A00 +_080C75B0: .4byte gUnknown_2023D6B +_080C75B4: + ldr r0, _080C75F8 @ =gUnknown_2023D6C +_080C75B6: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r2, r0 + ldr r1, _080C75FC @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, 0 + bne _080C7600 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C7606 + .align 2, 0 +_080C75F8: .4byte gUnknown_2023D6C +_080C75FC: .4byte gUnknown_2023BE4 +_080C7600: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r5] +_080C7606: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7598 + + thumb_func_start sub_80C760C +sub_80C760C: @ 80C760C + push {r4,r5,lr} + ldr r0, _080C7620 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C7628 + ldr r0, _080C7624 @ =gUnknown_2023D6B + b _080C762A + .align 2, 0 +_080C7620: .4byte gUnknown_2039A00 +_080C7624: .4byte gUnknown_2023D6B +_080C7628: + ldr r0, _080C766C @ =gUnknown_2023D6C +_080C762A: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r2, r0 + ldr r1, _080C7670 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, 0 + beq _080C7674 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C767A + .align 2, 0 +_080C766C: .4byte gUnknown_2023D6C +_080C7670: .4byte gUnknown_2023BE4 +_080C7674: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r5] +_080C767A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C760C + + thumb_func_start sub_80C7680 +sub_80C7680: @ 80C7680 + push {r4,r5,lr} + ldr r0, _080C7694 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C769C + ldr r0, _080C7698 @ =gUnknown_2023D6B + b _080C769E + .align 2, 0 +_080C7694: .4byte gUnknown_2039A00 +_080C7698: .4byte gUnknown_2023D6B +_080C769C: + ldr r0, _080C76E0 @ =gUnknown_2023D6C +_080C769E: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r2, r0 + ldr r1, _080C76E4 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, 0 + bne _080C76E8 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C76EE + .align 2, 0 +_080C76E0: .4byte gUnknown_2023D6C +_080C76E4: .4byte gUnknown_2023BE4 +_080C76E8: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r5] +_080C76EE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7680 + + thumb_func_start sub_80C76F4 +sub_80C76F4: @ 80C76F4 + push {r4,r5,lr} + ldr r0, _080C7708 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C7710 + ldr r0, _080C770C @ =gUnknown_2023D6B + b _080C7712 + .align 2, 0 +_080C7708: .4byte gUnknown_2039A00 +_080C770C: .4byte gUnknown_2023D6B +_080C7710: + ldr r0, _080C7750 @ =gUnknown_2023D6C +_080C7712: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r1, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r1, r0 + ldr r2, _080C7754 @ =gUnknown_2023DFC + lsls r0, r4, 2 + adds r0, r2 + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + beq _080C7758 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C775E + .align 2, 0 +_080C7750: .4byte gUnknown_2023D6C +_080C7754: .4byte gUnknown_2023DFC +_080C7758: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r5] +_080C775E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C76F4 + + thumb_func_start sub_80C7764 +sub_80C7764: @ 80C7764 + push {r4,r5,lr} + ldr r0, _080C7778 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C7780 + ldr r0, _080C777C @ =gUnknown_2023D6B + b _080C7782 + .align 2, 0 +_080C7778: .4byte gUnknown_2039A00 +_080C777C: .4byte gUnknown_2023D6B +_080C7780: + ldr r0, _080C77C0 @ =gUnknown_2023D6C +_080C7782: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r1, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r1, r0 + ldr r2, _080C77C4 @ =gUnknown_2023DFC + lsls r0, r4, 2 + adds r0, r2 + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + bne _080C77C8 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C77CE + .align 2, 0 +_080C77C0: .4byte gUnknown_2023D6C +_080C77C4: .4byte gUnknown_2023DFC +_080C77C8: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r5] +_080C77CE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7764 + + thumb_func_start sub_80C77D4 +sub_80C77D4: @ 80C77D4 + push {r4,lr} + ldr r0, _080C77E4 @ =gUnknown_2039A00 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _080C77EC + ldr r0, _080C77E8 @ =gUnknown_2023D6B + b _080C77EE + .align 2, 0 +_080C77E4: .4byte gUnknown_2039A00 +_080C77E8: .4byte gUnknown_2023D6B +_080C77EC: + ldr r0, _080C7838 @ =gUnknown_2023D6C +_080C77EE: + ldrb r0, [r0] + bl sub_80751D8 + movs r2, 0x1 + ands r2, r0 + ldr r4, _080C783C @ =gUnknown_2039A00 + ldr r3, [r4] + ldrb r1, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r1, r0 + ldr r0, _080C7840 @ =gUnknown_2023DDE + lsls r2, 1 + adds r2, r0 + ldrh r0, [r2] + ands r0, r1 + cmp r0, 0 + beq _080C7844 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C784A + .align 2, 0 +_080C7838: .4byte gUnknown_2023D6C +_080C783C: .4byte gUnknown_2039A00 +_080C7840: .4byte gUnknown_2023DDE +_080C7844: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r4] +_080C784A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C77D4 + + thumb_func_start sub_80C7850 +sub_80C7850: @ 80C7850 + push {r4,lr} + ldr r0, _080C7860 @ =gUnknown_2039A00 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _080C7868 + ldr r0, _080C7864 @ =gUnknown_2023D6B + b _080C786A + .align 2, 0 +_080C7860: .4byte gUnknown_2039A00 +_080C7864: .4byte gUnknown_2023D6B +_080C7868: + ldr r0, _080C78B4 @ =gUnknown_2023D6C +_080C786A: + ldrb r0, [r0] + bl sub_80751D8 + movs r2, 0x1 + ands r2, r0 + ldr r4, _080C78B8 @ =gUnknown_2039A00 + ldr r3, [r4] + ldrb r1, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r1, r0 + ldr r0, _080C78BC @ =gUnknown_2023DDE + lsls r2, 1 + adds r2, r0 + ldrh r0, [r2] + ands r0, r1 + cmp r0, 0 + bne _080C78C0 + ldrb r1, [r3, 0x6] + ldrb r0, [r3, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C78C6 + .align 2, 0 +_080C78B4: .4byte gUnknown_2023D6C +_080C78B8: .4byte gUnknown_2039A00 +_080C78BC: .4byte gUnknown_2023DDE +_080C78C0: + adds r0, r3, 0 + adds r0, 0xA + str r0, [r4] +_080C78C6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C7850 + + thumb_func_start sub_80C78CC +sub_80C78CC: @ 80C78CC + push {lr} + ldr r0, _080C78F8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r3, _080C78FC @ =gUnknown_2039A00 + ldr r2, [r3] + ldr r0, [r0, 0x8] + ldrb r1, [r2, 0x1] + cmp r0, r1 + bcs _080C7900 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7904 + .align 2, 0 +_080C78F8: .4byte gUnknown_2023FF4 +_080C78FC: .4byte gUnknown_2039A00 +_080C7900: + adds r0, r2, 0x6 + str r0, [r3] +_080C7904: + pop {r0} + bx r0 + thumb_func_end sub_80C78CC + + thumb_func_start sub_80C7908 +sub_80C7908: @ 80C7908 + push {lr} + ldr r0, _080C7934 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r3, _080C7938 @ =gUnknown_2039A00 + ldr r2, [r3] + ldr r0, [r0, 0x8] + ldrb r1, [r2, 0x1] + cmp r0, r1 + bls _080C793C + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7940 + .align 2, 0 +_080C7934: .4byte gUnknown_2023FF4 +_080C7938: .4byte gUnknown_2039A00 +_080C793C: + adds r0, r2, 0x6 + str r0, [r3] +_080C7940: + pop {r0} + bx r0 + thumb_func_end sub_80C7908 + + thumb_func_start sub_80C7944 +sub_80C7944: @ 80C7944 + push {lr} + ldr r0, _080C7970 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r3, _080C7974 @ =gUnknown_2039A00 + ldr r2, [r3] + ldr r0, [r0, 0x8] + ldrb r1, [r2, 0x1] + cmp r0, r1 + bne _080C7978 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C797C + .align 2, 0 +_080C7970: .4byte gUnknown_2023FF4 +_080C7974: .4byte gUnknown_2039A00 +_080C7978: + adds r0, r2, 0x6 + str r0, [r3] +_080C797C: + pop {r0} + bx r0 + thumb_func_end sub_80C7944 + + thumb_func_start sub_80C7980 +sub_80C7980: @ 80C7980 + push {lr} + ldr r0, _080C79AC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r3, _080C79B0 @ =gUnknown_2039A00 + ldr r2, [r3] + ldr r0, [r0, 0x8] + ldrb r1, [r2, 0x1] + cmp r0, r1 + beq _080C79B4 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C79B8 + .align 2, 0 +_080C79AC: .4byte gUnknown_2023FF4 +_080C79B0: .4byte gUnknown_2039A00 +_080C79B4: + adds r0, r2, 0x6 + str r0, [r3] +_080C79B8: + pop {r0} + bx r0 + thumb_func_end sub_80C7980 + + thumb_func_start sub_80C79BC +sub_80C79BC: @ 80C79BC + push {lr} + ldr r3, _080C79FC @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r0, _080C7A00 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bcs _080C7A04 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7A0A + .align 2, 0 +_080C79FC: .4byte gUnknown_2039A00 +_080C7A00: .4byte gUnknown_2023FF4 +_080C7A04: + adds r0, r2, 0 + adds r0, 0x9 + str r0, [r3] +_080C7A0A: + pop {r0} + bx r0 + thumb_func_end sub_80C79BC + + thumb_func_start sub_80C7A10 +sub_80C7A10: @ 80C7A10 + push {lr} + ldr r3, _080C7A50 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r0, _080C7A54 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bls _080C7A58 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7A5E + .align 2, 0 +_080C7A50: .4byte gUnknown_2039A00 +_080C7A54: .4byte gUnknown_2023FF4 +_080C7A58: + adds r0, r2, 0 + adds r0, 0x9 + str r0, [r3] +_080C7A5E: + pop {r0} + bx r0 + thumb_func_end sub_80C7A10 + + thumb_func_start sub_80C7A64 +sub_80C7A64: @ 80C7A64 + push {lr} + ldr r3, _080C7AA4 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r0, _080C7AA8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bne _080C7AAC + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7AB2 + .align 2, 0 +_080C7AA4: .4byte gUnknown_2039A00 +_080C7AA8: .4byte gUnknown_2023FF4 +_080C7AAC: + adds r0, r2, 0 + adds r0, 0x9 + str r0, [r3] +_080C7AB2: + pop {r0} + bx r0 + thumb_func_end sub_80C7A64 + + thumb_func_start sub_80C7AB8 +sub_80C7AB8: @ 80C7AB8 + push {lr} + ldr r3, _080C7AF8 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r0, _080C7AFC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0x8] + ldrb r1, [r1] + cmp r0, r1 + beq _080C7B00 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7B06 + .align 2, 0 +_080C7AF8: .4byte gUnknown_2039A00 +_080C7AFC: .4byte gUnknown_2023FF4 +_080C7B00: + adds r0, r2, 0 + adds r0, 0x9 + str r0, [r3] +_080C7B06: + pop {r0} + bx r0 + thumb_func_end sub_80C7AB8 + + thumb_func_start sub_80C7B0C +sub_80C7B0C: @ 80C7B0C + push {lr} + ldr r3, _080C7B40 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r0, _080C7B44 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + cmp r0, r1 + bne _080C7B48 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7B4C + .align 2, 0 +_080C7B40: .4byte gUnknown_2039A00 +_080C7B44: .4byte gUnknown_2023FF4 +_080C7B48: + adds r0, r2, 0x7 + str r0, [r3] +_080C7B4C: + pop {r0} + bx r0 + thumb_func_end sub_80C7B0C + + thumb_func_start sub_80C7B50 +sub_80C7B50: @ 80C7B50 + push {lr} + ldr r3, _080C7B84 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r0, _080C7B88 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + cmp r0, r1 + beq _080C7B8C + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C7B90 + .align 2, 0 +_080C7B84: .4byte gUnknown_2039A00 +_080C7B88: .4byte gUnknown_2023FF4 +_080C7B8C: + adds r0, r2, 0x7 + str r0, [r3] +_080C7B90: + pop {r0} + bx r0 + thumb_func_end sub_80C7B50 + + thumb_func_start sub_80C7B94 +sub_80C7B94: @ 80C7B94 + push {r4,lr} + ldr r2, _080C7BE0 @ =gUnknown_2039A00 + ldr r1, [r2] + ldrb r3, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r3, r0 + ldrb r0, [r3] + cmp r0, 0xFF + beq _080C7BF0 + ldr r0, _080C7BE4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r1, [r0, 0x8] + adds r4, r2, 0 +_080C7BBE: + ldrb r0, [r3] + cmp r1, r0 + bne _080C7BE8 + ldr r2, [r4] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C7BF6 + .align 2, 0 +_080C7BE0: .4byte gUnknown_2039A00 +_080C7BE4: .4byte gUnknown_2023FF4 +_080C7BE8: + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0xFF + bne _080C7BBE +_080C7BF0: + ldr r0, [r2] + adds r0, 0x9 + str r0, [r2] +_080C7BF6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C7B94 + + thumb_func_start sub_80C7BFC +sub_80C7BFC: @ 80C7BFC + push {r4,lr} + ldr r2, _080C7C38 @ =gUnknown_2039A00 + ldr r1, [r2] + ldrb r3, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r3, r0 + ldrb r0, [r3] + adds r4, r2, 0 + cmp r0, 0xFF + beq _080C7C48 + ldr r0, _080C7C3C @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r2, [r0, 0x8] + adds r1, r4, 0 +_080C7C28: + ldrb r0, [r3] + cmp r2, r0 + bne _080C7C40 + ldr r0, [r1] + adds r0, 0x9 + str r0, [r1] + b _080C7C60 + .align 2, 0 +_080C7C38: .4byte gUnknown_2039A00 +_080C7C3C: .4byte gUnknown_2023FF4 +_080C7C40: + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0xFF + bne _080C7C28 +_080C7C48: + ldr r2, [r4] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] +_080C7C60: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C7BFC + + thumb_func_start sub_80C7C68 +sub_80C7C68: @ 80C7C68 + push {r4,r5,lr} + ldr r2, _080C7CB4 @ =gUnknown_2039A00 + ldr r1, [r2] + ldrb r3, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r3, r0 + ldrh r0, [r3] + ldr r5, _080C7CB8 @ =0x0000ffff + cmp r0, r5 + beq _080C7CC8 + ldr r0, _080C7CBC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r1, [r0, 0x8] + adds r4, r2, 0 +_080C7C94: + ldrh r0, [r3] + cmp r1, r0 + bne _080C7CC0 + ldr r2, [r4] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C7CCE + .align 2, 0 +_080C7CB4: .4byte gUnknown_2039A00 +_080C7CB8: .4byte 0x0000ffff +_080C7CBC: .4byte gUnknown_2023FF4 +_080C7CC0: + adds r3, 0x2 + ldrh r0, [r3] + cmp r0, r5 + bne _080C7C94 +_080C7CC8: + ldr r0, [r2] + adds r0, 0x9 + str r0, [r2] +_080C7CCE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7C68 + + thumb_func_start sub_80C7CD4 +sub_80C7CD4: @ 80C7CD4 + push {r4,r5,lr} + ldr r2, _080C7D10 @ =gUnknown_2039A00 + ldr r1, [r2] + ldrb r3, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r3, r0 + ldrh r0, [r3] + ldr r4, _080C7D14 @ =0x0000ffff + adds r5, r2, 0 + cmp r0, r4 + beq _080C7D24 + ldr r0, _080C7D18 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r2, [r0, 0x8] + adds r1, r5, 0 +_080C7D02: + ldrh r0, [r3] + cmp r2, r0 + bne _080C7D1C + ldr r0, [r1] + adds r0, 0x9 + str r0, [r1] + b _080C7D3C + .align 2, 0 +_080C7D10: .4byte gUnknown_2039A00 +_080C7D14: .4byte 0x0000ffff +_080C7D18: .4byte gUnknown_2023FF4 +_080C7D1C: + adds r3, 0x2 + ldrh r0, [r3] + cmp r0, r4 + bne _080C7D02 +_080C7D24: + ldr r2, [r5] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] +_080C7D3C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7CD4 + + thumb_func_start sub_80C7D44 +sub_80C7D44: @ 80C7D44 + push {r4,r5,lr} + movs r3, 0 + ldr r4, _080C7D84 @ =gUnknown_2039A00 + ldr r1, _080C7D88 @ =gUnknown_2023BE4 + ldr r0, _080C7D8C @ =gUnknown_2023D6B + ldrb r2, [r0] + ldr r5, _080C7D90 @ =gUnknown_8250C04 + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r2, r0, r1 +_080C7D5A: + ldrh r0, [r2] + cmp r0, 0 + beq _080C7D6E + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _080C7D76 +_080C7D6E: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + ble _080C7D5A +_080C7D76: + cmp r3, 0x4 + bne _080C7D94 + ldr r0, [r4] + adds r0, 0x5 + str r0, [r4] + b _080C7DAC + .align 2, 0 +_080C7D84: .4byte gUnknown_2039A00 +_080C7D88: .4byte gUnknown_2023BE4 +_080C7D8C: .4byte gUnknown_2023D6B +_080C7D90: .4byte gUnknown_8250C04 +_080C7D94: + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] +_080C7DAC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7D44 + + thumb_func_start sub_80C7DB4 +sub_80C7DB4: @ 80C7DB4 + push {r4,r5,lr} + movs r3, 0 + ldr r4, _080C7DF4 @ =gUnknown_2039A00 + ldr r1, _080C7DF8 @ =gUnknown_2023BE4 + ldr r0, _080C7DFC @ =gUnknown_2023D6B + ldrb r2, [r0] + ldr r5, _080C7E00 @ =gUnknown_8250C04 + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r2, r0, r1 +_080C7DCA: + ldrh r0, [r2] + cmp r0, 0 + beq _080C7DDE + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _080C7DE6 +_080C7DDE: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + ble _080C7DCA +_080C7DE6: + cmp r3, 0x4 + beq _080C7E04 + ldr r0, [r4] + adds r0, 0x5 + str r0, [r4] + b _080C7E1C + .align 2, 0 +_080C7DF4: .4byte gUnknown_2039A00 +_080C7DF8: .4byte gUnknown_2023BE4 +_080C7DFC: .4byte gUnknown_2023D6B +_080C7E00: .4byte gUnknown_8250C04 +_080C7E04: + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] +_080C7E1C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C7DB4 + + thumb_func_start sub_80C7E24 +sub_80C7E24: @ 80C7E24 + ldr r0, _080C7E3C @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + ldr r0, _080C7E40 @ =gUnknown_3004F90 + ldrb r0, [r0, 0x13] + str r0, [r1, 0x8] + ldr r1, _080C7E44 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C7E3C: .4byte gUnknown_2023FF4 +_080C7E40: .4byte gUnknown_3004F90 +_080C7E44: .4byte gUnknown_2039A00 + thumb_func_end sub_80C7E24 + + thumb_func_start sub_80C7E48 +sub_80C7E48: @ 80C7E48 + push {r4,lr} + ldr r1, _080C7E60 @ =gUnknown_2039A00 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0x4 + bhi _080C7F22 + lsls r0, 2 + ldr r1, _080C7E64 @ =_080C7E68 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C7E60: .4byte gUnknown_2039A00 +_080C7E64: .4byte _080C7E68 + .align 2, 0 +_080C7E68: + .4byte _080C7EA0 + .4byte _080C7E7C + .4byte _080C7EE8 + .4byte _080C7EC4 + .4byte _080C7F0C +_080C7E7C: + ldr r0, _080C7E94 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C7E98 @ =gUnknown_2023BE4 + ldr r0, _080C7E9C @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x21 + ldrb r0, [r0] + b _080C7F20 + .align 2, 0 +_080C7E94: .4byte gUnknown_2023FF4 +_080C7E98: .4byte gUnknown_2023BE4 +_080C7E9C: .4byte gUnknown_2023D6B +_080C7EA0: + ldr r0, _080C7EB8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C7EBC @ =gUnknown_2023BE4 + ldr r0, _080C7EC0 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x21 + ldrb r0, [r0] + b _080C7F20 + .align 2, 0 +_080C7EB8: .4byte gUnknown_2023FF4 +_080C7EBC: .4byte gUnknown_2023BE4 +_080C7EC0: .4byte gUnknown_2023D6C +_080C7EC4: + ldr r0, _080C7EDC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C7EE0 @ =gUnknown_2023BE4 + ldr r0, _080C7EE4 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x22 + ldrb r0, [r0] + b _080C7F20 + .align 2, 0 +_080C7EDC: .4byte gUnknown_2023FF4 +_080C7EE0: .4byte gUnknown_2023BE4 +_080C7EE4: .4byte gUnknown_2023D6B +_080C7EE8: + ldr r0, _080C7F00 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C7F04 @ =gUnknown_2023BE4 + ldr r0, _080C7F08 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x22 + ldrb r0, [r0] + b _080C7F20 + .align 2, 0 +_080C7F00: .4byte gUnknown_2023FF4 +_080C7F04: .4byte gUnknown_2023BE4 +_080C7F08: .4byte gUnknown_2023D6C +_080C7F0C: + ldr r0, _080C7F30 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C7F34 @ =gUnknown_8250C04 + ldrh r1, [r3, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] +_080C7F20: + str r0, [r3, 0x8] +_080C7F22: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C7F30: .4byte gUnknown_2023FF4 +_080C7F34: .4byte gUnknown_8250C04 + thumb_func_end sub_80C7E48 + + thumb_func_start sub_80C7F38 +sub_80C7F38: @ 80C7F38 + ldr r0, _080C7F58 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C7F5C @ =gUnknown_8250C04 + ldrh r1, [r3, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + str r0, [r3, 0x8] + ldr r1, _080C7F60 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C7F58: .4byte gUnknown_2023FF4 +_080C7F5C: .4byte gUnknown_8250C04 +_080C7F60: .4byte gUnknown_2039A00 + thumb_func_end sub_80C7F38 + + thumb_func_start sub_80C7F64 +sub_80C7F64: @ 80C7F64 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + movs r3, 0 + ldr r0, _080C80A4 @ =gUnknown_83F571C + ldrh r1, [r0] + ldr r5, _080C80A8 @ =0x0000ffff + ldr r6, _080C80AC @ =gUnknown_8250C04 + ldr r2, _080C80B0 @ =gUnknown_2023FF4 + cmp r1, r5 + beq _080C7FA2 + ldr r0, [r2] + ldr r0, [r0, 0x14] + ldrh r1, [r0, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r4, [r0] + ldr r1, _080C80A4 @ =gUnknown_83F571C +_080C7F92: + ldrh r0, [r1] + cmp r4, r0 + beq _080C7FA2 + adds r1, 0x2 + adds r3, 0x1 + ldrh r0, [r1] + cmp r0, r5 + bne _080C7F92 +_080C7FA2: + ldr r0, [r2] + ldr r0, [r0, 0x14] + ldrh r1, [r0, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bhi _080C7FB8 + b _080C8142 +_080C7FB8: + lsls r0, r3, 1 + ldr r1, _080C80A4 @ =gUnknown_83F571C + adds r0, r1 + ldrh r3, [r0] + ldr r0, _080C80A8 @ =0x0000ffff + cmp r3, r0 + beq _080C7FC8 + b _080C8142 +_080C7FC8: + ldr r0, _080C80B4 @ =gUnknown_2023F50 + movs r1, 0 + strh r1, [r0] + ldr r0, _080C80B8 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _080C80BC @ =gUnknown_2023FC4 + movs r2, 0x1 + strb r2, [r0, 0xE] + ldr r0, _080C80C0 @ =gUnknown_2023DCC + strb r1, [r0] + ldr r0, _080C80C4 @ =gUnknown_2023D71 + strb r2, [r0] + movs r6, 0 + mov r9, r3 + ldr r2, _080C80A4 @ =gUnknown_83F571C + ldrh r2, [r2] + str r2, [sp, 0x10] +_080C7FEC: + movs r3, 0 + ldr r5, _080C80C8 @ =gUnknown_2023BE4 + lsls r4, r6, 1 + ldr r7, _080C80CC @ =gUnknown_2023D6B + lsls r0, r6, 2 + mov r8, r0 + adds r1, r6, 0x1 + mov r10, r1 + ldr r2, [sp, 0x10] + cmp r2, r9 + beq _080C8030 + ldr r2, _080C80AC @ =gUnknown_8250C04 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + adds r0, r4, r0 + adds r1, r5, 0 + adds r1, 0xC + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0] + ldr r1, _080C80A4 @ =gUnknown_83F571C +_080C8020: + ldrh r0, [r1] + cmp r2, r0 + beq _080C8030 + adds r1, 0x2 + adds r3, 0x1 + ldrh r0, [r1] + cmp r0, r9 + bne _080C8020 +_080C8030: + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + adds r0, r4, r0 + adds r1, r5, 0 + adds r1, 0xC + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, 0 + beq _080C80DC + lsls r0, r3, 1 + ldr r2, _080C80A4 @ =gUnknown_83F571C + adds r0, r2 + ldrh r0, [r0] + cmp r0, r9 + bne _080C80DC + ldr r0, _080C80AC @ =gUnknown_8250C04 + ldrh r2, [r1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0x1 + bls _080C80DC + ldr r5, _080C80D0 @ =gUnknown_2023D4A + strh r2, [r5] + ldrb r0, [r7] + ldr r4, _080C80D4 @ =gUnknown_2023D6C + ldrb r1, [r4] + bl sub_801E68C + ldrh r0, [r5] + ldrb r1, [r7] + ldrb r2, [r4] + bl sub_801EDF4 + mov r4, sp + add r4, r8 + ldr r2, _080C80D8 @ =gUnknown_2023D50 + ldr r0, _080C80B0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + adds r0, 0x18 + adds r0, r6 + ldrb r1, [r0] + ldr r0, [r2] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _080C80E4 + movs r0, 0x1 + str r0, [r4] + b _080C80E4 + .align 2, 0 +_080C80A4: .4byte gUnknown_83F571C +_080C80A8: .4byte 0x0000ffff +_080C80AC: .4byte gUnknown_8250C04 +_080C80B0: .4byte gUnknown_2023FF4 +_080C80B4: .4byte gUnknown_2023F50 +_080C80B8: .4byte gUnknown_2023FE8 +_080C80BC: .4byte gUnknown_2023FC4 +_080C80C0: .4byte gUnknown_2023DCC +_080C80C4: .4byte gUnknown_2023D71 +_080C80C8: .4byte gUnknown_2023BE4 +_080C80CC: .4byte gUnknown_2023D6B +_080C80D0: .4byte gUnknown_2023D4A +_080C80D4: .4byte gUnknown_2023D6C +_080C80D8: .4byte gUnknown_2023D50 +_080C80DC: + mov r1, sp + add r1, r8 + movs r0, 0 + str r0, [r1] +_080C80E4: + mov r6, r10 + cmp r6, 0x3 + bgt _080C80EC + b _080C7FEC +_080C80EC: + movs r6, 0 + ldr r2, _080C8130 @ =gUnknown_2023FF4 + ldr r0, [r2] + ldr r0, [r0, 0x14] + ldrb r0, [r0, 0x1] + lsls r0, 2 + add r0, sp + ldr r1, [sp] + ldr r0, [r0] + ldr r5, _080C8134 @ =gUnknown_2039A00 + cmp r1, r0 + bgt _080C8122 + adds r4, r2, 0 + mov r3, sp +_080C8108: + adds r3, 0x4 + adds r6, 0x1 + cmp r6, 0x3 + bgt _080C8122 + ldr r0, [r4] + ldr r0, [r0, 0x14] + ldrb r0, [r0, 0x1] + lsls r0, 2 + add r0, sp + ldr r1, [r3] + ldr r0, [r0] + cmp r1, r0 + ble _080C8108 +_080C8122: + cmp r6, 0x4 + bne _080C8138 + ldr r0, [r2] + ldr r1, [r0, 0x14] + movs r0, 0x2 + str r0, [r1, 0x8] + b _080C814C + .align 2, 0 +_080C8130: .4byte gUnknown_2023FF4 +_080C8134: .4byte gUnknown_2039A00 +_080C8138: + ldr r0, [r2] + ldr r1, [r0, 0x14] + movs r0, 0x1 + str r0, [r1, 0x8] + b _080C814C +_080C8142: + ldr r0, [r2] + ldr r1, [r0, 0x14] + movs r0, 0 + str r0, [r1, 0x8] + ldr r5, _080C8164 @ =gUnknown_2039A00 +_080C814C: + ldr r0, [r5] + adds r0, 0x1 + str r0, [r5] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C8164: .4byte gUnknown_2039A00 + thumb_func_end sub_80C7F64 + + thumb_func_start sub_80C8168 +sub_80C8168: @ 80C8168 + push {lr} + ldr r0, _080C8184 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r3, r0, 0 + cmp r1, 0x1 + bne _080C8194 + ldr r0, _080C8188 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r1, _080C818C @ =gUnknown_2023D98 + ldr r0, _080C8190 @ =gUnknown_2023D6B + b _080C819E + .align 2, 0 +_080C8184: .4byte gUnknown_2039A00 +_080C8188: .4byte gUnknown_2023FF4 +_080C818C: .4byte gUnknown_2023D98 +_080C8190: .4byte gUnknown_2023D6B +_080C8194: + ldr r0, _080C81B4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r1, _080C81B8 @ =gUnknown_2023D98 + ldr r0, _080C81BC @ =gUnknown_2023D6C +_080C819E: + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + str r0, [r2, 0x8] + ldr r0, [r3] + adds r0, 0x2 + str r0, [r3] + pop {r0} + bx r0 + .align 2, 0 +_080C81B4: .4byte gUnknown_2023FF4 +_080C81B8: .4byte gUnknown_2023D98 +_080C81BC: .4byte gUnknown_2023D6C + thumb_func_end sub_80C8168 + + thumb_func_start sub_80C81C0 +sub_80C81C0: @ 80C81C0 + push {lr} + ldr r3, _080C81EC @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldr r0, _080C81F0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0x8] + cmp r1, r0 + bne _080C81F4 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C81F8 + .align 2, 0 +_080C81EC: .4byte gUnknown_2039A00 +_080C81F0: .4byte gUnknown_2023FF4 +_080C81F4: + adds r0, r2, 0x6 + str r0, [r3] +_080C81F8: + pop {r0} + bx r0 + thumb_func_end sub_80C81C0 + + thumb_func_start sub_80C81FC +sub_80C81FC: @ 80C81FC + push {lr} + ldr r3, _080C8228 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldr r0, _080C822C @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r0, [r0, 0x8] + cmp r1, r0 + beq _080C8230 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C8234 + .align 2, 0 +_080C8228: .4byte gUnknown_2039A00 +_080C822C: .4byte gUnknown_2023FF4 +_080C8230: + adds r0, r2, 0x6 + str r0, [r3] +_080C8234: + pop {r0} + bx r0 + thumb_func_end sub_80C81FC + + thumb_func_start sub_80C8238 +sub_80C8238: @ 80C8238 + push {lr} + ldr r0, _080C8270 @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r1, _080C8274 @ =gUnknown_2023D6C + ldrb r1, [r1] + movs r2, 0x1 + bl sub_8014CD8 + ldr r3, _080C8278 @ =gUnknown_2039A00 + ldr r2, [r3] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r2, 0x1] + cmp r0, r1 + bne _080C827C + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C8280 + .align 2, 0 +_080C8270: .4byte gUnknown_2023D6B +_080C8274: .4byte gUnknown_2023D6C +_080C8278: .4byte gUnknown_2039A00 +_080C827C: + adds r0, r2, 0x6 + str r0, [r3] +_080C8280: + pop {r0} + bx r0 + thumb_func_end sub_80C8238 + + thumb_func_start sub_80C8284 +sub_80C8284: @ 80C8284 + push {lr} + ldr r0, _080C82BC @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r1, _080C82C0 @ =gUnknown_2023D6C + ldrb r1, [r1] + movs r2, 0x1 + bl sub_8014CD8 + ldr r3, _080C82C4 @ =gUnknown_2039A00 + ldr r2, [r3] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r2, 0x1] + cmp r0, r1 + beq _080C82C8 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C82CC + .align 2, 0 +_080C82BC: .4byte gUnknown_2023D6B +_080C82C0: .4byte gUnknown_2023D6C +_080C82C4: .4byte gUnknown_2039A00 +_080C82C8: + adds r0, r2, 0x6 + str r0, [r3] +_080C82CC: + pop {r0} + bx r0 + thumb_func_end sub_80C8284 + + thumb_func_start nullsub_64 +nullsub_64: @ 80C82D0 + bx lr + thumb_func_end nullsub_64 + + thumb_func_start nullsub_65 +nullsub_65: @ 80C82D4 + bx lr + thumb_func_end nullsub_65 + + thumb_func_start sub_80C82D8 +sub_80C82D8: @ 80C82D8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080C82F8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0 + str r0, [r1, 0x8] + ldr r0, _080C82FC @ =gUnknown_2039A00 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _080C8304 + ldr r0, _080C8300 @ =gUnknown_2023D6B + b _080C8306 + .align 2, 0 +_080C82F8: .4byte gUnknown_2023FF4 +_080C82FC: .4byte gUnknown_2039A00 +_080C8300: .4byte gUnknown_2023D6B +_080C8304: + ldr r0, _080C834C @ =gUnknown_2023D6C +_080C8306: + ldrb r5, [r0] + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + ldr r1, _080C8350 @ =gUnknown_202402C + mov r8, r1 + cmp r0, 0 + bne _080C831C + ldr r0, _080C8354 @ =gUnknown_2024284 + mov r8, r0 +_080C831C: + ldr r0, _080C8358 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C8360 + ldr r4, _080C835C @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r4 + ldrb r7, [r0] + adds r0, r5, 0 + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrb r6, [r0] + b _080C836A + .align 2, 0 +_080C834C: .4byte gUnknown_2023D6C +_080C8350: .4byte gUnknown_202402C +_080C8354: .4byte gUnknown_2024284 +_080C8358: .4byte gUnknown_2022B4C +_080C835C: .4byte gUnknown_2023BCE +_080C8360: + ldr r1, _080C83C8 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrb r6, [r0] + adds r7, r6, 0 +_080C836A: + movs r5, 0 +_080C836C: + cmp r5, r7 + beq _080C83B0 + cmp r5, r6 + beq _080C83B0 + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _080C83B0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _080C83B0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _080C83B0 + ldr r0, _080C83CC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + ldr r0, [r1, 0x8] + adds r0, 0x1 + str r0, [r1, 0x8] +_080C83B0: + adds r5, 0x1 + cmp r5, 0x5 + ble _080C836C + ldr r1, _080C83D0 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C83C8: .4byte gUnknown_2023BCE +_080C83CC: .4byte gUnknown_2023FF4 +_080C83D0: .4byte gUnknown_2039A00 + thumb_func_end sub_80C82D8 + + thumb_func_start sub_80C83D4 +sub_80C83D4: @ 80C83D4 + ldr r0, _080C83E8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + ldrh r0, [r1, 0x2] + str r0, [r1, 0x8] + ldr r1, _080C83EC @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C83E8: .4byte gUnknown_2023FF4 +_080C83EC: .4byte gUnknown_2039A00 + thumb_func_end sub_80C83D4 + + thumb_func_start sub_80C83F0 +sub_80C83F0: @ 80C83F0 + ldr r0, _080C8410 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C8414 @ =gUnknown_8250C04 + ldrh r1, [r3, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + str r0, [r3, 0x8] + ldr r1, _080C8418 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C8410: .4byte gUnknown_2023FF4 +_080C8414: .4byte gUnknown_8250C04 +_080C8418: .4byte gUnknown_2039A00 + thumb_func_end sub_80C83F0 + + thumb_func_start sub_80C841C +sub_80C841C: @ 80C841C + push {r4-r7,lr} + ldr r0, _080C842C @ =gUnknown_2039A00 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _080C8434 + ldr r0, _080C8430 @ =gUnknown_2023D6B + b _080C8436 + .align 2, 0 +_080C842C: .4byte gUnknown_2039A00 +_080C8430: .4byte gUnknown_2023D6B +_080C8434: + ldr r0, _080C8468 @ =gUnknown_2023D6C +_080C8436: + ldrb r4, [r0] + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080C8506 + adds r0, r4, 0 + bl sub_80751D8 + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + ldr r6, _080C846C @ =gUnknown_2023FF4 + ldr r3, [r6] + ldr r0, [r3, 0x18] + adds r0, 0x20 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, 0 + beq _080C8470 + ldr r1, [r3, 0x14] + str r0, [r1, 0x8] + b _080C851A + .align 2, 0 +_080C8468: .4byte gUnknown_2023D6C +_080C846C: .4byte gUnknown_2023FF4 +_080C8470: + ldr r1, _080C84A0 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r5, r0, r1 + adds r0, r5, 0 + adds r0, 0x20 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0x17 + beq _080C848C + cmp r0, 0x2A + beq _080C848C + cmp r0, 0x47 + bne _080C84A8 +_080C848C: + ldr r0, _080C84A4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x58 + muls r0, r4 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + str r0, [r1, 0x8] + b _080C851A + .align 2, 0 +_080C84A0: .4byte gUnknown_2023BE4 +_080C84A4: .4byte gUnknown_2023FF4 +_080C84A8: + ldr r4, _080C84E0 @ =gUnknown_8254784 + ldrh r0, [r5] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r2, r1, r4 + ldrb r0, [r2, 0x16] + cmp r0, 0 + beq _080C84FE + ldrb r0, [r2, 0x17] + cmp r0, 0 + beq _080C84F6 + bl sub_8044EC8 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080C84E4 + ldr r0, [r6] + ldr r2, [r0, 0x14] + ldrh r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x16] + b _080C8518 + .align 2, 0 +_080C84E0: .4byte gUnknown_8254784 +_080C84E4: + ldr r0, [r6] + ldr r2, [r0, 0x14] + ldrh r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x17] + b _080C8518 +_080C84F6: + ldr r1, [r3, 0x14] + ldrb r0, [r2, 0x16] + str r0, [r1, 0x8] + b _080C851A +_080C84FE: + ldr r1, [r3, 0x14] + ldrb r0, [r2, 0x17] + str r0, [r1, 0x8] + b _080C851A +_080C8506: + ldr r0, _080C8528 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r1, _080C852C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] +_080C8518: + str r0, [r2, 0x8] +_080C851A: + ldr r1, _080C8530 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C8528: .4byte gUnknown_2023FF4 +_080C852C: .4byte gUnknown_2023BE4 +_080C8530: .4byte gUnknown_2039A00 + thumb_func_end sub_80C841C + + thumb_func_start sub_80C8534 +sub_80C8534: @ 80C8534 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080C85F0 @ =gUnknown_2023F50 + movs r1, 0 + strh r1, [r0] + ldr r0, _080C85F4 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _080C85F8 @ =gUnknown_2023FC4 + movs r3, 0 + movs r2, 0x1 + strb r2, [r0, 0xE] + ldr r0, _080C85FC @ =gUnknown_2023DCC + strb r1, [r0] + ldr r0, _080C8600 @ =gUnknown_2023D71 + strb r2, [r0] + ldr r0, _080C8604 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + str r3, [r0, 0x8] + movs r5, 0 + ldr r4, _080C8608 @ =gUnknown_2023D50 + ldr r7, _080C860C @ =gUnknown_2023D4A + ldr r0, _080C8610 @ =gUnknown_2023BF0 + mov r8, r0 + ldr r6, _080C8614 @ =gUnknown_2023D6B +_080C856A: + movs r0, 0x28 + str r0, [r4] + lsls r1, r5, 1 + ldrb r2, [r6] + movs r0, 0x58 + muls r0, r2 + adds r1, r0 + add r1, r8 + ldrh r0, [r1] + strh r0, [r7] + lsls r0, 16 + cmp r0, 0 + beq _080C85D8 + ldrh r0, [r7] + ldrb r1, [r6] + ldr r2, _080C8618 @ =gUnknown_2023D6C + ldrb r2, [r2] + bl sub_801EDF4 + ldr r0, [r4] + cmp r0, 0x78 + bne _080C859A + movs r0, 0x50 + str r0, [r4] +_080C859A: + ldr r0, [r4] + cmp r0, 0xF0 + bne _080C85A4 + movs r0, 0xA0 + str r0, [r4] +_080C85A4: + ldr r0, [r4] + cmp r0, 0x1E + bne _080C85AE + movs r0, 0x14 + str r0, [r4] +_080C85AE: + ldr r0, [r4] + cmp r0, 0xF + bne _080C85B8 + movs r0, 0xA + str r0, [r4] +_080C85B8: + ldr r0, _080C85FC @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080C85C8 + movs r0, 0 + str r0, [r4] +_080C85C8: + ldr r0, _080C8604 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r0, [r2, 0x8] + ldr r1, [r4] + cmp r0, r1 + bcs _080C85D8 + str r1, [r2, 0x8] +_080C85D8: + adds r5, 0x1 + cmp r5, 0x3 + ble _080C856A + ldr r1, _080C861C @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C85F0: .4byte gUnknown_2023F50 +_080C85F4: .4byte gUnknown_2023FE8 +_080C85F8: .4byte gUnknown_2023FC4 +_080C85FC: .4byte gUnknown_2023DCC +_080C8600: .4byte gUnknown_2023D71 +_080C8604: .4byte gUnknown_2023FF4 +_080C8608: .4byte gUnknown_2023D50 +_080C860C: .4byte gUnknown_2023D4A +_080C8610: .4byte gUnknown_2023BF0 +_080C8614: .4byte gUnknown_2023D6B +_080C8618: .4byte gUnknown_2023D6C +_080C861C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C8534 + + thumb_func_start sub_80C8620 +sub_80C8620: @ 80C8620 + push {r4,r5,lr} + ldr r0, _080C86B8 @ =gUnknown_2023F50 + movs r1, 0 + strh r1, [r0] + ldr r0, _080C86BC @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _080C86C0 @ =gUnknown_2023FC4 + movs r2, 0x1 + strb r2, [r0, 0xE] + ldr r5, _080C86C4 @ =gUnknown_2023DCC + strb r1, [r5] + ldr r0, _080C86C8 @ =gUnknown_2023D71 + strb r2, [r0] + ldr r4, _080C86CC @ =gUnknown_2023D50 + movs r0, 0x28 + str r0, [r4] + ldr r1, _080C86D0 @ =gUnknown_2023D4A + ldr r0, _080C86D4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + strh r0, [r1] + ldrh r0, [r1] + ldr r1, _080C86D8 @ =gUnknown_2023D6B + ldrb r1, [r1] + ldr r2, _080C86DC @ =gUnknown_2023D6C + ldrb r2, [r2] + bl sub_801EDF4 + ldr r0, [r4] + cmp r0, 0x78 + bne _080C8666 + movs r0, 0x50 + str r0, [r4] +_080C8666: + ldr r0, [r4] + cmp r0, 0xF0 + bne _080C8670 + movs r0, 0xA0 + str r0, [r4] +_080C8670: + ldr r0, [r4] + cmp r0, 0x1E + bne _080C867A + movs r0, 0x14 + str r0, [r4] +_080C867A: + ldr r0, [r4] + cmp r0, 0xF + bne _080C8684 + movs r0, 0xA + str r0, [r4] +_080C8684: + ldrb r1, [r5] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080C8692 + movs r0, 0 + str r0, [r4] +_080C8692: + ldrb r0, [r4] + ldr r3, _080C86E0 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + cmp r0, r1 + bne _080C86E4 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C86E8 + .align 2, 0 +_080C86B8: .4byte gUnknown_2023F50 +_080C86BC: .4byte gUnknown_2023FE8 +_080C86C0: .4byte gUnknown_2023FC4 +_080C86C4: .4byte gUnknown_2023DCC +_080C86C8: .4byte gUnknown_2023D71 +_080C86CC: .4byte gUnknown_2023D50 +_080C86D0: .4byte gUnknown_2023D4A +_080C86D4: .4byte gUnknown_2023FF4 +_080C86D8: .4byte gUnknown_2023D6B +_080C86DC: .4byte gUnknown_2023D6C +_080C86E0: .4byte gUnknown_2039A00 +_080C86E4: + adds r0, r2, 0x6 + str r0, [r3] +_080C86E8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C8620 + + thumb_func_start nullsub_66 +nullsub_66: @ 80C86F0 + bx lr + thumb_func_end nullsub_66 + + thumb_func_start nullsub_67 +nullsub_67: @ 80C86F4 + bx lr + thumb_func_end nullsub_67 + + thumb_func_start sub_80C86F8 +sub_80C86F8: @ 80C86F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080C8710 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + cmp r1, 0x1 + bne _080C8738 + ldr r1, _080C8714 @ =gUnknown_202402C + b _080C873A + .align 2, 0 +_080C8710: .4byte gUnknown_2039A00 +_080C8714: .4byte gUnknown_202402C +_080C8718: + ldr r3, _080C8734 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x6] + ldrb r0, [r2, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C87A6 + .align 2, 0 +_080C8734: .4byte gUnknown_2039A00 +_080C8738: + ldr r1, _080C87B4 @ =gUnknown_2024284 +_080C873A: + mov r9, r1 + ldr r1, [r0] + ldrb r7, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + orrs r7, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + orrs r7, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + orrs r7, r0 + movs r0, 0 + mov r8, r0 + movs r1, 0xCE + lsls r1, 1 + mov r10, r1 +_080C875C: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + add r4, r9 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + cmp r5, 0 + beq _080C8794 + cmp r5, r10 + beq _080C8794 + cmp r6, 0 + beq _080C8794 + cmp r0, r7 + beq _080C8718 +_080C8794: + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x5 + ble _080C875C + ldr r1, _080C87B8 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] +_080C87A6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C87B4: .4byte gUnknown_2024284 +_080C87B8: .4byte gUnknown_2039A00 + thumb_func_end sub_80C86F8 + + thumb_func_start sub_80C87BC +sub_80C87BC: @ 80C87BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080C87D8 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r2, r0, 0 + cmp r1, 0x1 + bne _080C87E0 + ldr r0, _080C87DC @ =gUnknown_202402C + mov r10, r0 + b _080C87E4 + .align 2, 0 +_080C87D8: .4byte gUnknown_2039A00 +_080C87DC: .4byte gUnknown_202402C +_080C87E0: + ldr r1, _080C8878 @ =gUnknown_2024284 + mov r10, r1 +_080C87E4: + ldr r1, [r2] + ldrb r7, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + orrs r7, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + orrs r7, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + orrs r7, r0 + movs r0, 0 + mov r8, r0 + mov r9, r2 +_080C8800: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + add r4, r10 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + cmp r5, 0 + beq _080C8844 + movs r1, 0xCE + lsls r1, 1 + cmp r5, r1 + beq _080C8844 + cmp r6, 0 + beq _080C8844 + cmp r0, r7 + bne _080C8844 + mov r1, r9 + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] +_080C8844: + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x5 + ble _080C8800 + ldr r3, _080C887C @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x6] + ldrb r0, [r2, 0x7] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x9] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C8878: .4byte gUnknown_2024284 +_080C887C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C87BC + + thumb_func_start sub_80C8880 +sub_80C8880: @ 80C8880 + push {lr} + ldr r2, _080C88E0 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _080C8898 + ldr r0, _080C88E4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x1 + str r0, [r1, 0x8] +_080C8898: + ldrh r1, [r2] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _080C88AC + ldr r0, _080C88E4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x2 + str r0, [r1, 0x8] +_080C88AC: + ldrh r1, [r2] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _080C88C0 + ldr r0, _080C88E4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0 + str r0, [r1, 0x8] +_080C88C0: + ldrh r1, [r2] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C88D4 + ldr r0, _080C88E4 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x14] + movs r0, 0x3 + str r0, [r1, 0x8] +_080C88D4: + ldr r1, _080C88E8 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080C88E0: .4byte gUnknown_2023F1C +_080C88E4: .4byte gUnknown_2023FF4 +_080C88E8: .4byte gUnknown_2039A00 + thumb_func_end sub_80C8880 + + thumb_func_start sub_80C88EC +sub_80C88EC: @ 80C88EC + push {lr} + ldr r2, _080C8924 @ =gUnknown_8250C04 + ldr r0, _080C8928 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldrh r1, [r0, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r3, _080C892C @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r0, [r0] + ldrb r1, [r2, 0x1] + cmp r0, r1 + bne _080C8930 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C8934 + .align 2, 0 +_080C8924: .4byte gUnknown_8250C04 +_080C8928: .4byte gUnknown_2023FF4 +_080C892C: .4byte gUnknown_2039A00 +_080C8930: + adds r0, r2, 0x6 + str r0, [r3] +_080C8934: + pop {r0} + bx r0 + thumb_func_end sub_80C88EC + + thumb_func_start sub_80C8938 +sub_80C8938: @ 80C8938 + push {lr} + ldr r2, _080C8970 @ =gUnknown_8250C04 + ldr r0, _080C8974 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldrh r1, [r0, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r3, _080C8978 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r0, [r0] + ldrb r1, [r2, 0x1] + cmp r0, r1 + beq _080C897C + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C8980 + .align 2, 0 +_080C8970: .4byte gUnknown_8250C04 +_080C8974: .4byte gUnknown_2023FF4 +_080C8978: .4byte gUnknown_2039A00 +_080C897C: + adds r0, r2, 0x6 + str r0, [r3] +_080C8980: + pop {r0} + bx r0 + thumb_func_end sub_80C8938 + + thumb_func_start sub_80C8984 +sub_80C8984: @ 80C8984 + push {r4,lr} + ldr r0, _080C8998 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C89A0 + ldr r0, _080C899C @ =gUnknown_2023D6B + b _080C89A2 + .align 2, 0 +_080C8998: .4byte gUnknown_2039A00 +_080C899C: .4byte gUnknown_2023D6B +_080C89A0: + ldr r0, _080C89D8 @ =gUnknown_2023D6C +_080C89A2: + ldrb r3, [r0] + ldr r1, _080C89DC @ =gUnknown_2023BE4 + ldr r2, [r4] + movs r0, 0x58 + muls r0, r3 + ldrb r3, [r2, 0x2] + adds r0, r3 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrb r1, [r2, 0x3] + cmp r0, r1 + bge _080C89E0 + ldrb r1, [r2, 0x4] + ldrb r0, [r2, 0x5] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C89E6 + .align 2, 0 +_080C89D8: .4byte gUnknown_2023D6C +_080C89DC: .4byte gUnknown_2023BE4 +_080C89E0: + adds r0, r2, 0 + adds r0, 0x8 + str r0, [r4] +_080C89E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C8984 + + thumb_func_start sub_80C89EC +sub_80C89EC: @ 80C89EC + push {r4,lr} + ldr r0, _080C8A00 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C8A08 + ldr r0, _080C8A04 @ =gUnknown_2023D6B + b _080C8A0A + .align 2, 0 +_080C8A00: .4byte gUnknown_2039A00 +_080C8A04: .4byte gUnknown_2023D6B +_080C8A08: + ldr r0, _080C8A40 @ =gUnknown_2023D6C +_080C8A0A: + ldrb r3, [r0] + ldr r1, _080C8A44 @ =gUnknown_2023BE4 + ldr r2, [r4] + movs r0, 0x58 + muls r0, r3 + ldrb r3, [r2, 0x2] + adds r0, r3 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrb r1, [r2, 0x3] + cmp r0, r1 + ble _080C8A48 + ldrb r1, [r2, 0x4] + ldrb r0, [r2, 0x5] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C8A4E + .align 2, 0 +_080C8A40: .4byte gUnknown_2023D6C +_080C8A44: .4byte gUnknown_2023BE4 +_080C8A48: + adds r0, r2, 0 + adds r0, 0x8 + str r0, [r4] +_080C8A4E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C89EC + + thumb_func_start sub_80C8A54 +sub_80C8A54: @ 80C8A54 + push {r4,lr} + ldr r0, _080C8A68 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C8A70 + ldr r0, _080C8A6C @ =gUnknown_2023D6B + b _080C8A72 + .align 2, 0 +_080C8A68: .4byte gUnknown_2039A00 +_080C8A6C: .4byte gUnknown_2023D6B +_080C8A70: + ldr r0, _080C8AA8 @ =gUnknown_2023D6C +_080C8A72: + ldrb r3, [r0] + ldr r1, _080C8AAC @ =gUnknown_2023BE4 + ldr r2, [r4] + movs r0, 0x58 + muls r0, r3 + ldrb r3, [r2, 0x2] + adds r0, r3 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrb r1, [r2, 0x3] + cmp r0, r1 + bne _080C8AB0 + ldrb r1, [r2, 0x4] + ldrb r0, [r2, 0x5] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C8AB6 + .align 2, 0 +_080C8AA8: .4byte gUnknown_2023D6C +_080C8AAC: .4byte gUnknown_2023BE4 +_080C8AB0: + adds r0, r2, 0 + adds r0, 0x8 + str r0, [r4] +_080C8AB6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C8A54 + + thumb_func_start sub_80C8ABC +sub_80C8ABC: @ 80C8ABC + push {r4,lr} + ldr r0, _080C8AD0 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C8AD8 + ldr r0, _080C8AD4 @ =gUnknown_2023D6B + b _080C8ADA + .align 2, 0 +_080C8AD0: .4byte gUnknown_2039A00 +_080C8AD4: .4byte gUnknown_2023D6B +_080C8AD8: + ldr r0, _080C8B10 @ =gUnknown_2023D6C +_080C8ADA: + ldrb r3, [r0] + ldr r1, _080C8B14 @ =gUnknown_2023BE4 + ldr r2, [r4] + movs r0, 0x58 + muls r0, r3 + ldrb r3, [r2, 0x2] + adds r0, r3 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrb r1, [r2, 0x3] + cmp r0, r1 + beq _080C8B18 + ldrb r1, [r2, 0x4] + ldrb r0, [r2, 0x5] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C8B1E + .align 2, 0 +_080C8B10: .4byte gUnknown_2023D6C +_080C8B14: .4byte gUnknown_2023BE4 +_080C8B18: + adds r0, r2, 0 + adds r0, 0x8 + str r0, [r4] +_080C8B1E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C8ABC + + thumb_func_start sub_80C8B24 +sub_80C8B24: @ 80C8B24 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r2, _080C8BD4 @ =gUnknown_8250C04 + ldr r0, _080C8BD8 @ =gUnknown_2023FF4 + mov r8, r0 + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldrh r1, [r0, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bls _080C8C08 + ldr r0, _080C8BDC @ =gUnknown_2023F50 + movs r1, 0 + strh r1, [r0] + ldr r0, _080C8BE0 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _080C8BE4 @ =gUnknown_2023FC4 + movs r7, 0x1 + strb r7, [r0, 0xE] + ldr r0, _080C8BE8 @ =gUnknown_2023DCC + strb r1, [r0] + ldr r0, _080C8BEC @ =gUnknown_2023D71 + strb r7, [r0] + ldr r5, _080C8BF0 @ =gUnknown_2023D4A + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + strh r0, [r5] + ldr r4, _080C8BF4 @ =gUnknown_2023D6B + ldrb r0, [r4] + ldr r6, _080C8BF8 @ =gUnknown_2023D6C + ldrb r1, [r6] + bl sub_801E68C + ldrh r0, [r5] + ldrb r1, [r4] + ldrb r2, [r6] + bl sub_801EDF4 + ldr r4, _080C8BFC @ =gUnknown_2023D50 + mov r1, r8 + ldr r0, [r1] + ldr r1, [r0, 0x14] + adds r0, r1, 0 + adds r0, 0x18 + ldrb r1, [r1, 0x1] + adds r0, r1 + ldrb r1, [r0] + ldr r0, [r4] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _080C8BA4 + str r7, [r4] +_080C8BA4: + ldr r2, _080C8C00 @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r1, [r0, 0x28] + ldr r0, [r4] + cmp r1, r0 + bgt _080C8C08 + ldr r3, _080C8C04 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C8C10 + .align 2, 0 +_080C8BD4: .4byte gUnknown_8250C04 +_080C8BD8: .4byte gUnknown_2023FF4 +_080C8BDC: .4byte gUnknown_2023F50 +_080C8BE0: .4byte gUnknown_2023FE8 +_080C8BE4: .4byte gUnknown_2023FC4 +_080C8BE8: .4byte gUnknown_2023DCC +_080C8BEC: .4byte gUnknown_2023D71 +_080C8BF0: .4byte gUnknown_2023D4A +_080C8BF4: .4byte gUnknown_2023D6B +_080C8BF8: .4byte gUnknown_2023D6C +_080C8BFC: .4byte gUnknown_2023D50 +_080C8C00: .4byte gUnknown_2023BE4 +_080C8C04: .4byte gUnknown_2039A00 +_080C8C08: + ldr r1, _080C8C1C @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080C8C10: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C8C1C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C8B24 + + thumb_func_start sub_80C8C20 +sub_80C8C20: @ 80C8C20 + push {r4-r7,lr} + ldr r2, _080C8CBC @ =gUnknown_8250C04 + ldr r7, _080C8CC0 @ =gUnknown_2023FF4 + ldr r0, [r7] + ldr r0, [r0, 0x14] + ldrh r1, [r0, 0x2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bls _080C8CF0 + ldr r0, _080C8CC4 @ =gUnknown_2023F50 + movs r1, 0 + strh r1, [r0] + ldr r0, _080C8CC8 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _080C8CCC @ =gUnknown_2023FC4 + movs r2, 0x1 + strb r2, [r0, 0xE] + ldr r0, _080C8CD0 @ =gUnknown_2023DCC + strb r1, [r0] + ldr r0, _080C8CD4 @ =gUnknown_2023D71 + strb r2, [r0] + ldr r6, _080C8CD8 @ =gUnknown_2023D4A + ldr r0, [r7] + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + strh r0, [r6] + ldr r4, _080C8CDC @ =gUnknown_2023D6B + ldrb r0, [r4] + ldr r5, _080C8CE0 @ =gUnknown_2023D6C + ldrb r1, [r5] + bl sub_801E68C + ldrh r0, [r6] + ldrb r1, [r4] + ldrb r2, [r5] + bl sub_801EDF4 + ldr r4, _080C8CE4 @ =gUnknown_2023D50 + ldr r0, [r7] + ldr r1, [r0, 0x14] + adds r0, r1, 0 + adds r0, 0x18 + ldrb r1, [r1, 0x1] + adds r0, r1 + ldrb r1, [r0] + ldr r0, [r4] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + ldr r3, _080C8CE8 @ =gUnknown_2023BE4 + ldrb r2, [r5] + movs r1, 0x58 + muls r1, r2 + adds r1, r3 + ldrh r1, [r1, 0x28] + cmp r1, r0 + ble _080C8CF0 + ldr r3, _080C8CEC @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C8CF8 + .align 2, 0 +_080C8CBC: .4byte gUnknown_8250C04 +_080C8CC0: .4byte gUnknown_2023FF4 +_080C8CC4: .4byte gUnknown_2023F50 +_080C8CC8: .4byte gUnknown_2023FE8 +_080C8CCC: .4byte gUnknown_2023FC4 +_080C8CD0: .4byte gUnknown_2023DCC +_080C8CD4: .4byte gUnknown_2023D71 +_080C8CD8: .4byte gUnknown_2023D4A +_080C8CDC: .4byte gUnknown_2023D6B +_080C8CE0: .4byte gUnknown_2023D6C +_080C8CE4: .4byte gUnknown_2023D50 +_080C8CE8: .4byte gUnknown_2023BE4 +_080C8CEC: .4byte gUnknown_2039A00 +_080C8CF0: + ldr r1, _080C8D00 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080C8CF8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C8D00: .4byte gUnknown_2039A00 + thumb_func_end sub_80C8C20 + + thumb_func_start sub_80C8D04 +sub_80C8D04: @ 80C8D04 + push {r4-r7,lr} + ldr r1, _080C8D20 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r6, r0, 0x2 + ldrb r0, [r0, 0x1] + adds r5, r1, 0 + cmp r0, 0x1 + beq _080C8D2C + cmp r0, 0x1 + bgt _080C8D24 + cmp r0, 0 + beq _080C8D70 + b _080C8DD8 + .align 2, 0 +_080C8D20: .4byte gUnknown_2039A00 +_080C8D24: + cmp r0, 0x2 + beq _080C8D70 + cmp r0, 0x3 + bne _080C8DD8 +_080C8D2C: + movs r3, 0 + ldr r2, _080C8D68 @ =gUnknown_2023BE4 + ldr r4, _080C8D6C @ =gUnknown_2023D6B + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r2, 0xC + adds r0, r2 + ldrh r0, [r0] + ldrh r1, [r6] + cmp r0, r1 + beq _080C8D62 + adds r7, r4, 0 + movs r6, 0x58 + adds r4, r2, 0 + adds r2, r1, 0 +_080C8D4C: + adds r3, 0x1 + cmp r3, 0x3 + bgt _080C8D62 + lsls r1, r3, 1 + ldrb r0, [r7] + muls r0, r6 + adds r1, r0 + adds r1, r4 + ldrh r0, [r1] + cmp r0, r2 + bne _080C8D4C +_080C8D62: + cmp r3, 0x4 + beq _080C8DB0 + b _080C8DC0 + .align 2, 0 +_080C8D68: .4byte gUnknown_2023BE4 +_080C8D6C: .4byte gUnknown_2023D6B +_080C8D70: + movs r3, 0 + ldr r4, _080C8DB8 @ =gUnknown_2023FF4 + ldr r0, [r4] + ldr r1, [r0, 0x18] + ldr r2, _080C8DBC @ =gUnknown_2023D6C + ldrb r0, [r2] + lsrs r0, 1 + lsls r0, 4 + adds r1, r0 + ldrh r0, [r1] + ldrh r1, [r6] + cmp r0, r1 + beq _080C8DAC + adds r7, r4, 0 + adds r4, r1, 0 + adds r6, r2, 0 +_080C8D90: + adds r3, 0x1 + cmp r3, 0x7 + bgt _080C8DAC + ldr r0, [r7] + ldr r2, [r0, 0x18] + lsls r1, r3, 1 + ldrb r0, [r6] + lsrs r0, 1 + lsls r0, 4 + adds r1, r0 + adds r2, r1 + ldrh r0, [r2] + cmp r0, r4 + bne _080C8D90 +_080C8DAC: + cmp r3, 0x8 + bne _080C8DC0 +_080C8DB0: + ldr r0, [r5] + adds r0, 0x8 + str r0, [r5] + b _080C8DD8 + .align 2, 0 +_080C8DB8: .4byte gUnknown_2023FF4 +_080C8DBC: .4byte gUnknown_2023D6C +_080C8DC0: + ldr r2, [r5] + ldrb r1, [r2, 0x4] + ldrb r0, [r2, 0x5] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] +_080C8DD8: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C8D04 + + thumb_func_start sub_80C8DE0 +sub_80C8DE0: @ 80C8DE0 + push {r4-r7,lr} + ldr r1, _080C8DFC @ =gUnknown_2039A00 + ldr r0, [r1] + adds r6, r0, 0x2 + ldrb r0, [r0, 0x1] + adds r5, r1, 0 + cmp r0, 0x1 + beq _080C8E08 + cmp r0, 0x1 + bgt _080C8E00 + cmp r0, 0 + beq _080C8E4C + b _080C8EB4 + .align 2, 0 +_080C8DFC: .4byte gUnknown_2039A00 +_080C8E00: + cmp r0, 0x2 + beq _080C8E4C + cmp r0, 0x3 + bne _080C8EB4 +_080C8E08: + movs r3, 0 + ldr r2, _080C8E44 @ =gUnknown_2023BE4 + ldr r4, _080C8E48 @ =gUnknown_2023D6B + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r2, 0xC + adds r0, r2 + ldrh r0, [r0] + ldrh r1, [r6] + cmp r0, r1 + beq _080C8E3E + adds r7, r4, 0 + movs r6, 0x58 + adds r4, r2, 0 + adds r2, r1, 0 +_080C8E28: + adds r3, 0x1 + cmp r3, 0x3 + bgt _080C8E3E + lsls r1, r3, 1 + ldrb r0, [r7] + muls r0, r6 + adds r1, r0 + adds r1, r4 + ldrh r0, [r1] + cmp r0, r2 + bne _080C8E28 +_080C8E3E: + cmp r3, 0x4 + bne _080C8E8C + b _080C8E9C + .align 2, 0 +_080C8E44: .4byte gUnknown_2023BE4 +_080C8E48: .4byte gUnknown_2023D6B +_080C8E4C: + movs r3, 0 + ldr r4, _080C8E94 @ =gUnknown_2023FF4 + ldr r0, [r4] + ldr r1, [r0, 0x18] + ldr r2, _080C8E98 @ =gUnknown_2023D6C + ldrb r0, [r2] + lsrs r0, 1 + lsls r0, 4 + adds r1, r0 + ldrh r0, [r1] + ldrh r1, [r6] + cmp r0, r1 + beq _080C8E88 + adds r7, r4, 0 + adds r4, r1, 0 + adds r6, r2, 0 +_080C8E6C: + adds r3, 0x1 + cmp r3, 0x7 + bgt _080C8E88 + ldr r0, [r7] + ldr r2, [r0, 0x18] + lsls r1, r3, 1 + ldrb r0, [r6] + lsrs r0, 1 + lsls r0, 4 + adds r1, r0 + adds r2, r1 + ldrh r0, [r2] + cmp r0, r4 + bne _080C8E6C +_080C8E88: + cmp r3, 0x8 + beq _080C8E9C +_080C8E8C: + ldr r0, [r5] + adds r0, 0x8 + str r0, [r5] + b _080C8EB4 + .align 2, 0 +_080C8E94: .4byte gUnknown_2023FF4 +_080C8E98: .4byte gUnknown_2023D6C +_080C8E9C: + ldr r2, [r5] + ldrb r1, [r2, 0x4] + ldrb r0, [r2, 0x5] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] +_080C8EB4: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C8DE0 + + thumb_func_start sub_80C8EBC +sub_80C8EBC: @ 80C8EBC + push {r4-r7,lr} + ldr r1, _080C8ED4 @ =gUnknown_2039A00 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r5, r1, 0 + cmp r0, 0x1 + beq _080C8EE0 + cmp r0, 0x1 + bgt _080C8ED8 + cmp r0, 0 + beq _080C8F34 + b _080C8F96 + .align 2, 0 +_080C8ED4: .4byte gUnknown_2039A00 +_080C8ED8: + cmp r0, 0x2 + beq _080C8F34 + cmp r0, 0x3 + bne _080C8F96 +_080C8EE0: + movs r3, 0 + ldr r1, _080C8F24 @ =gUnknown_2023BE4 + ldr r0, _080C8F28 @ =gUnknown_2023D6B + ldrb r2, [r0] + ldr r6, _080C8F2C @ =gUnknown_8250C04 + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r2, r0, r1 + ldr r4, _080C8F30 @ =gUnknown_2039A00 +_080C8EF4: + ldrh r0, [r2] + cmp r0, 0 + beq _080C8F0E + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldr r1, [r4] + ldrb r0, [r0] + ldrb r1, [r1, 0x2] + cmp r0, r1 + beq _080C8F16 +_080C8F0E: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + ble _080C8EF4 +_080C8F16: + cmp r3, 0x4 + bne _080C8F7E + ldr r0, [r5] + adds r0, 0x7 + str r0, [r5] + b _080C8F96 + .align 2, 0 +_080C8F24: .4byte gUnknown_2023BE4 +_080C8F28: .4byte gUnknown_2023D6B +_080C8F2C: .4byte gUnknown_8250C04 +_080C8F30: .4byte gUnknown_2039A00 +_080C8F34: + movs r3, 0 + ldr r1, _080C8F9C @ =gUnknown_2023BE4 + ldr r0, _080C8FA0 @ =gUnknown_2023D6B + ldrb r2, [r0] + ldr r0, _080C8FA4 @ =gUnknown_8250C04 + mov r12, r0 + ldr r7, _080C8FA8 @ =gUnknown_2023FF4 + ldr r6, _080C8FAC @ =gUnknown_2023D6C + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r4, r0, r1 +_080C8F4C: + lsls r2, r3, 1 + ldrh r0, [r4] + cmp r0, 0 + beq _080C8F76 + ldr r0, [r7] + ldr r1, [r0, 0x18] + ldrb r0, [r6] + lsrs r0, 1 + lsls r0, 4 + adds r0, r2, r0 + adds r1, r0 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r12 + ldr r1, [r5] + ldrb r0, [r0] + ldrb r1, [r1, 0x2] + cmp r0, r1 + beq _080C8F7E +_080C8F76: + adds r4, 0x2 + adds r3, 0x1 + cmp r3, 0x7 + ble _080C8F4C +_080C8F7E: + ldr r2, [r5] + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] +_080C8F96: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C8F9C: .4byte gUnknown_2023BE4 +_080C8FA0: .4byte gUnknown_2023D6B +_080C8FA4: .4byte gUnknown_8250C04 +_080C8FA8: .4byte gUnknown_2023FF4 +_080C8FAC: .4byte gUnknown_2023D6C + thumb_func_end sub_80C8EBC + + thumb_func_start sub_80C8FB0 +sub_80C8FB0: @ 80C8FB0 + push {r4-r6,lr} + ldr r1, _080C8FC8 @ =gUnknown_2039A00 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0x1 + beq _080C8FD4 + cmp r0, 0x1 + bgt _080C8FCC + cmp r0, 0 + beq _080C9038 + b _080C9074 + .align 2, 0 +_080C8FC8: .4byte gUnknown_2039A00 +_080C8FCC: + cmp r0, 0x2 + beq _080C9038 + cmp r0, 0x3 + bne _080C9074 +_080C8FD4: + movs r3, 0 + ldr r1, _080C9028 @ =gUnknown_2023BE4 + ldr r0, _080C902C @ =gUnknown_2023D6B + ldrb r2, [r0] + ldr r6, _080C9030 @ =gUnknown_8250C04 + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r2, r0, r1 + ldr r5, _080C9034 @ =gUnknown_2039A00 +_080C8FE8: + ldrh r0, [r2] + cmp r0, 0 + beq _080C9002 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldr r1, [r5] + ldrb r0, [r0] + ldrb r1, [r1, 0x2] + cmp r0, r1 + beq _080C900A +_080C9002: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + ble _080C8FE8 +_080C900A: + cmp r3, 0x4 + bne _080C906E + ldr r2, [r4] + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C9074 + .align 2, 0 +_080C9028: .4byte gUnknown_2023BE4 +_080C902C: .4byte gUnknown_2023D6B +_080C9030: .4byte gUnknown_8250C04 +_080C9034: .4byte gUnknown_2039A00 +_080C9038: + movs r3, 0 + ldr r0, _080C907C @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x18] + ldr r0, _080C9080 @ =gUnknown_2023D6C + ldrb r0, [r0] + lsrs r0, 1 + lsls r0, 4 + adds r2, r0, r1 + ldr r5, _080C9084 @ =gUnknown_8250C04 +_080C904C: + ldrh r0, [r2] + cmp r0, 0 + beq _080C9066 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, [r4] + ldrb r0, [r0] + ldrb r1, [r1, 0x2] + cmp r0, r1 + beq _080C906E +_080C9066: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x7 + ble _080C904C +_080C906E: + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] +_080C9074: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C907C: .4byte gUnknown_2023FF4 +_080C9080: .4byte gUnknown_2023D6C +_080C9084: .4byte gUnknown_8250C04 + thumb_func_end sub_80C8FB0 + + thumb_func_start sub_80C9088 +sub_80C9088: @ 80C9088 + push {r4,r5,lr} + ldr r0, _080C909C @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080C90A4 + ldr r0, _080C90A0 @ =gUnknown_2023D6B + b _080C90A6 + .align 2, 0 +_080C909C: .4byte gUnknown_2039A00 +_080C90A0: .4byte gUnknown_2023D6B +_080C90A4: + ldr r0, _080C90C4 @ =gUnknown_2023D6C +_080C90A6: + ldrb r3, [r0] + adds r4, r5, 0 + ldr r2, [r4] + ldrb r0, [r2, 0x2] + cmp r0, 0 + bne _080C90CC + ldr r0, _080C90C8 @ =gUnknown_2023E0C + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x4] + cmp r0, 0 + beq _080C90D0 + b _080C90E6 + .align 2, 0 +_080C90C4: .4byte gUnknown_2023D6C +_080C90C8: .4byte gUnknown_2023E0C +_080C90CC: + cmp r0, 0x1 + beq _080C90D6 +_080C90D0: + adds r0, r2, 0x7 + str r0, [r4] + b _080C9108 +_080C90D6: + ldr r0, _080C9100 @ =gUnknown_2023E0C + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x6] + cmp r0, 0 + beq _080C9104 +_080C90E6: + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C9108 + .align 2, 0 +_080C9100: .4byte gUnknown_2023E0C +_080C9104: + adds r0, r2, 0x7 + str r0, [r5] +_080C9108: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C9088 + + thumb_func_start sub_80C9110 +sub_80C9110: @ 80C9110 + push {r4,lr} + ldr r4, _080C9124 @ =gUnknown_2039A00 + ldr r3, [r4] + ldrb r0, [r3, 0x1] + cmp r0, 0 + beq _080C9128 + cmp r0, 0x1 + beq _080C9154 + b _080C9194 + .align 2, 0 +_080C9124: .4byte gUnknown_2039A00 +_080C9128: + ldr r2, _080C9148 @ =gUnknown_2023E0C + ldr r0, _080C914C @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080C9150 @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r1, [r1, 0x14] + ldrh r0, [r0, 0x4] + ldrh r1, [r1, 0x2] + cmp r0, r1 + beq _080C9170 + b _080C9194 + .align 2, 0 +_080C9148: .4byte gUnknown_2023E0C +_080C914C: .4byte gUnknown_2023BC4 +_080C9150: .4byte gUnknown_2023FF4 +_080C9154: + ldr r2, _080C9188 @ =gUnknown_2023E0C + ldr r0, _080C918C @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080C9190 @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r1, [r1, 0x14] + ldrh r0, [r0, 0x6] + ldrh r1, [r1, 0x2] + cmp r0, r1 + bne _080C9194 +_080C9170: + ldrb r1, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _080C9198 + .align 2, 0 +_080C9188: .4byte gUnknown_2023E0C +_080C918C: .4byte gUnknown_2023BC4 +_080C9190: .4byte gUnknown_2023FF4 +_080C9194: + adds r0, r3, 0x6 + str r0, [r4] +_080C9198: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C9110 + + thumb_func_start sub_80C91A0 +sub_80C91A0: @ 80C91A0 + ldr r0, _080C91B0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldrb r1, [r2, 0x10] + movs r0, 0xB + orrs r0, r1 + strb r0, [r2, 0x10] + bx lr + .align 2, 0 +_080C91B0: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C91A0 + + thumb_func_start sub_80C91B4 +sub_80C91B4: @ 80C91B4 + push {r4,lr} + ldr r0, _080C91D8 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x79 + ldrb r0, [r0] + cmp r0, 0 + beq _080C91DC + adds r0, r1, 0 + adds r0, 0x7B + ldrb r0, [r0] + lsls r0, 25 + lsrs r4, r0, 24 + cmp r4, 0x14 + bls _080C91FC + movs r4, 0x14 + b _080C91FC + .align 2, 0 +_080C91D8: .4byte gUnknown_2023FE8 +_080C91DC: + adds r0, r1, 0 + adds r0, 0x7A + ldrb r0, [r0] + cmp r0, 0 + beq _080C91F6 + adds r0, r1, 0 + adds r0, 0x7B + ldrb r0, [r0] + lsrs r4, r0, 2 + cmp r4, 0 + bne _080C91FC + movs r4, 0x1 + b _080C91FC +_080C91F6: + adds r0, r1, 0 + adds r0, 0x7B + ldrb r4, [r0] +_080C91FC: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcs _080C923C + ldr r3, _080C9238 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C9244 + .align 2, 0 +_080C9238: .4byte gUnknown_2039A00 +_080C923C: + ldr r1, _080C924C @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080C9244: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C924C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C91B4 + + thumb_func_start sub_80C9250 +sub_80C9250: @ 80C9250 + ldr r0, _080C9260 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldrb r1, [r2, 0x10] + movs r0, 0xD + orrs r0, r1 + strb r0, [r2, 0x10] + bx lr + .align 2, 0 +_080C9260: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C9250 + + thumb_func_start sub_80C9264 +sub_80C9264: @ 80C9264 + push {r4,lr} + ldr r0, _080C9274 @ =gUnknown_2039A00 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _080C927C + ldr r0, _080C9278 @ =gUnknown_2023D6B + b _080C927E + .align 2, 0 +_080C9274: .4byte gUnknown_2039A00 +_080C9278: .4byte gUnknown_2023D6B +_080C927C: + ldr r0, _080C92A8 @ =gUnknown_2023D6C +_080C927E: + ldrb r4, [r0] + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080C92B0 + adds r0, r4, 0 + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + ldr r0, _080C92AC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r0, [r0, 0x18] + adds r0, 0x22 + adds r0, r1 + ldrb r0, [r0] + str r0, [r2, 0x8] + b _080C92CA + .align 2, 0 +_080C92A8: .4byte gUnknown_2023D6C +_080C92AC: .4byte gUnknown_2023FF4 +_080C92B0: + ldr r1, _080C92D8 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r0, [r0, 0x2E] + bl sub_809A924 + ldr r1, _080C92DC @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r1, [r1, 0x14] + lsls r0, 24 + lsrs r0, 24 + str r0, [r1, 0x8] +_080C92CA: + ldr r1, _080C92E0 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C92D8: .4byte gUnknown_2023BE4 +_080C92DC: .4byte gUnknown_2023FF4 +_080C92E0: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9264 + + thumb_func_start sub_80C92E4 +sub_80C92E4: @ 80C92E4 + push {lr} + ldr r0, _080C92F4 @ =gUnknown_2039A00 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _080C92FC + ldr r0, _080C92F8 @ =gUnknown_2023D6B + b _080C92FE + .align 2, 0 +_080C92F4: .4byte gUnknown_2039A00 +_080C92F8: .4byte gUnknown_2023D6B +_080C92FC: + ldr r0, _080C932C @ =gUnknown_2023D6C +_080C92FE: + ldrb r1, [r0] + ldr r2, _080C9330 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r1, r0 + adds r0, r1, r2 + ldrh r0, [r0] + adds r2, 0x48 + adds r1, r2 + ldr r1, [r1] + bl sub_803F78C + ldr r1, _080C9334 @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r1, [r1, 0x14] + lsls r0, 24 + lsrs r0, 24 + str r0, [r1, 0x8] + ldr r1, _080C9338 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080C932C: .4byte gUnknown_2023D6C +_080C9330: .4byte gUnknown_2023BE4 +_080C9334: .4byte gUnknown_2023FF4 +_080C9338: .4byte gUnknown_2039A00 + thumb_func_end sub_80C92E4 + + thumb_func_start sub_80C933C +sub_80C933C: @ 80C933C + push {r4,lr} + ldr r0, _080C9350 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C9358 + ldr r0, _080C9354 @ =gUnknown_2023D6B + b _080C935A + .align 2, 0 +_080C9350: .4byte gUnknown_2039A00 +_080C9354: .4byte gUnknown_2023D6B +_080C9358: + ldr r0, _080C937C @ =gUnknown_2023D6C +_080C935A: + ldrb r3, [r0] + ldr r0, _080C9380 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r1, _080C9384 @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x16] + str r0, [r2, 0x8] + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C937C: .4byte gUnknown_2023D6C +_080C9380: .4byte gUnknown_2023FF4 +_080C9384: .4byte gUnknown_2023E0C + thumb_func_end sub_80C933C + + thumb_func_start sub_80C9388 +sub_80C9388: @ 80C9388 + push {r4,lr} + ldr r0, _080C939C @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C93A4 + ldr r0, _080C93A0 @ =gUnknown_2023D6B + b _080C93A6 + .align 2, 0 +_080C939C: .4byte gUnknown_2039A00 +_080C93A0: .4byte gUnknown_2023D6B +_080C93A4: + ldr r0, _080C93C8 @ =gUnknown_2023D6C +_080C93A6: + ldrb r3, [r0] + ldr r0, _080C93CC @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r1, _080C93D0 @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x9] + str r0, [r2, 0x8] + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C93C8: .4byte gUnknown_2023D6C +_080C93CC: .4byte gUnknown_2023FF4 +_080C93D0: .4byte gUnknown_2023E0C + thumb_func_end sub_80C9388 + + thumb_func_start sub_80C93D4 +sub_80C93D4: @ 80C93D4 + ldr r0, _080C93F0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r0, _080C93F4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + str r0, [r2, 0x8] + ldr r1, _080C93F8 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C93F0: .4byte gUnknown_2023FF4 +_080C93F4: .4byte gUnknown_2022B4C +_080C93F8: .4byte gUnknown_2039A00 + thumb_func_end sub_80C93D4 + + thumb_func_start sub_80C93FC +sub_80C93FC: @ 80C93FC + push {r4,lr} + ldr r0, _080C9410 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C9418 + ldr r0, _080C9414 @ =gUnknown_2023D6B + b _080C941A + .align 2, 0 +_080C9410: .4byte gUnknown_2039A00 +_080C9414: .4byte gUnknown_2023D6B +_080C9418: + ldr r0, _080C943C @ =gUnknown_2023D6C +_080C941A: + ldrb r3, [r0] + ldr r0, _080C9440 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r0, _080C9444 @ =gUnknown_2023FE8 + ldr r1, [r0] + lsls r0, r3, 1 + adds r0, r1 + adds r0, 0xB8 + ldrb r0, [r0] + str r0, [r2, 0x8] + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C943C: .4byte gUnknown_2023D6C +_080C9440: .4byte gUnknown_2023FF4 +_080C9444: .4byte gUnknown_2023FE8 + thumb_func_end sub_80C93FC + + thumb_func_start sub_80C9448 +sub_80C9448: @ 80C9448 + ldr r0, _080C9468 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C946C @ =gUnknown_8250C04 + ldr r1, [r3, 0x8] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + str r0, [r3, 0x8] + ldr r1, _080C9470 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C9468: .4byte gUnknown_2023FF4 +_080C946C: .4byte gUnknown_8250C04 +_080C9470: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9448 + + thumb_func_start sub_80C9474 +sub_80C9474: @ 80C9474 + ldr r0, _080C9494 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C9498 @ =gUnknown_8250C04 + ldr r1, [r3, 0x8] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + str r0, [r3, 0x8] + ldr r1, _080C949C @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C9494: .4byte gUnknown_2023FF4 +_080C9498: .4byte gUnknown_8250C04 +_080C949C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9474 + + thumb_func_start sub_80C94A0 +sub_80C94A0: @ 80C94A0 + ldr r0, _080C94C0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r3, [r0, 0x14] + ldr r2, _080C94C4 @ =gUnknown_8250C04 + ldr r1, [r3, 0x8] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + str r0, [r3, 0x8] + ldr r1, _080C94C8 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080C94C0: .4byte gUnknown_2023FF4 +_080C94C4: .4byte gUnknown_8250C04 +_080C94C8: .4byte gUnknown_2039A00 + thumb_func_end sub_80C94A0 + + thumb_func_start sub_80C94CC +sub_80C94CC: @ 80C94CC + push {r4,lr} + ldr r0, _080C94E0 @ =gUnknown_2039A00 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080C94E8 + ldr r0, _080C94E4 @ =gUnknown_2023D6B + b _080C94EA + .align 2, 0 +_080C94E0: .4byte gUnknown_2039A00 +_080C94E4: .4byte gUnknown_2023D6B +_080C94E8: + ldr r0, _080C950C @ =gUnknown_2023D6C +_080C94EA: + ldrb r3, [r0] + ldr r0, _080C9510 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldr r1, _080C9514 @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x8] + str r0, [r2, 0x8] + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C950C: .4byte gUnknown_2023D6C +_080C9510: .4byte gUnknown_2023FF4 +_080C9514: .4byte gUnknown_2023E0C + thumb_func_end sub_80C94CC + + thumb_func_start nullsub_68 +nullsub_68: @ 80C9518 + bx lr + thumb_func_end nullsub_68 + + thumb_func_start nullsub_69 +nullsub_69: @ 80C951C + bx lr + thumb_func_end nullsub_69 + + thumb_func_start nullsub_70 +nullsub_70: @ 80C9520 + bx lr + thumb_func_end nullsub_70 + + thumb_func_start nullsub_71 +nullsub_71: @ 80C9524 + bx lr + thumb_func_end nullsub_71 + + thumb_func_start nullsub_72 +nullsub_72: @ 80C9528 + bx lr + thumb_func_end nullsub_72 + + thumb_func_start nullsub_73 +nullsub_73: @ 80C952C + bx lr + thumb_func_end nullsub_73 + + thumb_func_start sub_80C9530 +sub_80C9530: @ 80C9530 + push {r4,lr} + ldr r4, _080C955C @ =gUnknown_2039A00 + ldr r0, [r4] + adds r0, 0x5 + bl sub_80C971C + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C955C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9530 + + thumb_func_start sub_80C9560 +sub_80C9560: @ 80C9560 + ldr r3, _080C957C @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_080C957C: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9560 + + thumb_func_start sub_80C9580 +sub_80C9580: @ 80C9580 + push {lr} + bl sub_80C9768 + lsls r0, 24 + cmp r0, 0 + bne _080C959A + ldr r0, _080C95A0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x14] + ldrb r1, [r2, 0x10] + movs r0, 0x1 + orrs r0, r1 + strb r0, [r2, 0x10] +_080C959A: + pop {r0} + bx r0 + .align 2, 0 +_080C95A0: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C9580 + + thumb_func_start sub_80C95A4 +sub_80C95A4: @ 80C95A4 + push {r4,r5,lr} + ldr r5, _080C95BC @ =gUnknown_2039A00 + ldr r4, [r5] + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + beq _080C95F8 + cmp r0, 0x1 + bgt _080C95C0 + cmp r0, 0 + beq _080C95C6 + b _080C9674 + .align 2, 0 +_080C95BC: .4byte gUnknown_2039A00 +_080C95C0: + cmp r0, 0x2 + beq _080C9628 + b _080C9674 +_080C95C6: + ldr r3, _080C95EC @ =gUnknown_2023BE4 + ldr r0, _080C95F0 @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r2, 0x58 + adds r1, r0, 0 + muls r1, r2 + adds r1, r3 + adds r1, 0x2A + ldr r0, _080C95F4 @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bhi _080C964A + b _080C9670 + .align 2, 0 +_080C95EC: .4byte gUnknown_2023BE4 +_080C95F0: .4byte gUnknown_2023D6B +_080C95F4: .4byte gUnknown_2023D6C +_080C95F8: + ldr r3, _080C961C @ =gUnknown_2023BE4 + ldr r0, _080C9620 @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r2, 0x58 + adds r1, r0, 0 + muls r1, r2 + adds r1, r3 + adds r1, 0x2A + ldr r0, _080C9624 @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bcc _080C964A + b _080C9670 + .align 2, 0 +_080C961C: .4byte gUnknown_2023BE4 +_080C9620: .4byte gUnknown_2023D6B +_080C9624: .4byte gUnknown_2023D6C +_080C9628: + ldr r3, _080C9664 @ =gUnknown_2023BE4 + ldr r0, _080C9668 @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r2, 0x58 + adds r1, r0, 0 + muls r1, r2 + adds r1, r3 + adds r1, 0x2A + ldr r0, _080C966C @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _080C9670 +_080C964A: + ldrb r1, [r4, 0x2] + ldrb r0, [r4, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r4, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r4, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r5] + b _080C9674 + .align 2, 0 +_080C9664: .4byte gUnknown_2023BE4 +_080C9668: .4byte gUnknown_2023D6B +_080C966C: .4byte gUnknown_2023D6C +_080C9670: + adds r0, r4, 0x6 + str r0, [r5] +_080C9674: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C95A4 + + thumb_func_start sub_80C967C +sub_80C967C: @ 80C967C + push {lr} + ldr r2, _080C96B0 @ =gUnknown_2023E0C + ldr r0, _080C96B4 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x13] + lsls r0, 28 + cmp r0, 0 + beq _080C96BC + ldr r3, _080C96B8 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C96C4 + .align 2, 0 +_080C96B0: .4byte gUnknown_2023E0C +_080C96B4: .4byte gUnknown_2023D6C +_080C96B8: .4byte gUnknown_2039A00 +_080C96BC: + ldr r1, _080C96C8 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080C96C4: + pop {r0} + bx r0 + .align 2, 0 +_080C96C8: .4byte gUnknown_2039A00 + thumb_func_end sub_80C967C + + thumb_func_start sub_80C96CC +sub_80C96CC: @ 80C96CC + push {lr} + ldr r2, _080C9700 @ =gUnknown_2023E0C + ldr r0, _080C9704 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x13] + lsls r0, 28 + cmp r0, 0 + bne _080C970C + ldr r3, _080C9708 @ =gUnknown_2039A00 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080C9714 + .align 2, 0 +_080C9700: .4byte gUnknown_2023E0C +_080C9704: .4byte gUnknown_2023D6C +_080C9708: .4byte gUnknown_2039A00 +_080C970C: + ldr r1, _080C9718 @ =gUnknown_2039A00 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080C9714: + pop {r0} + bx r0 + .align 2, 0 +_080C9718: .4byte gUnknown_2039A00 + thumb_func_end sub_80C96CC + + thumb_func_start sub_80C971C +sub_80C971C: @ 80C971C + push {r4,lr} + ldr r1, _080C973C @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r3, [r1, 0x1C] + adds r4, r3, 0 + adds r4, 0x20 + ldrb r1, [r4] + adds r2, r1, 0x1 + strb r2, [r4] + lsls r1, 24 + lsrs r1, 22 + adds r3, r1 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C973C: .4byte gUnknown_2023FF4 + thumb_func_end sub_80C971C + + thumb_func_start sub_80C9740 +sub_80C9740: @ 80C9740 + ldr r0, _080C9760 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x1C] + adds r3, r2, 0 + adds r3, 0x20 + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 22 + adds r2, r0 + ldr r0, _080C9764 @ =gUnknown_2039A00 + ldr r0, [r0] + str r0, [r2] + bx lr + .align 2, 0 +_080C9760: .4byte gUnknown_2023FF4 +_080C9764: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9740 + + thumb_func_start sub_80C9768 +sub_80C9768: @ 80C9768 + push {lr} + ldr r3, _080C9780 @ =gUnknown_2023FF4 + ldr r0, [r3] + ldr r0, [r0, 0x1C] + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0 + bne _080C9784 + movs r0, 0 + b _080C979E + .align 2, 0 +_080C9780: .4byte gUnknown_2023FF4 +_080C9784: + subs r0, 0x1 + strb r0, [r1] + ldr r2, _080C97A4 @ =gUnknown_2039A00 + ldr r0, [r3] + ldr r1, [r0, 0x1C] + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + movs r0, 0x1 +_080C979E: + pop {r1} + bx r1 + .align 2, 0 +_080C97A4: .4byte gUnknown_2039A00 + thumb_func_end sub_80C9768 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_ai_switch_items.s b/asm/battle_ai_switch_items.s new file mode 100644 index 000000000..f0ac1b0ed --- /dev/null +++ b/asm/battle_ai_switch_items.s @@ -0,0 +1,2654 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8039188 +sub_8039188: @ 8039188 + push {lr} + ldr r1, _080391D4 @ =gUnknown_2023DFC + ldr r0, _080391D8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080391E4 + ldr r0, _080391DC @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xF] + lsls r0, 28 + cmp r0, 0 + bne _080391E4 + adds r0, r2, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _080391E0 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + movs r1, 0x6 + strb r1, [r0] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + bl sub_800E848 + movs r0, 0x1 + b _080391E6 + .align 2, 0 +_080391D4: .4byte gUnknown_2023DFC +_080391D8: .4byte gUnknown_2023BC4 +_080391DC: .4byte gUnknown_2023E0C +_080391E0: .4byte gUnknown_2023FE8 +_080391E4: + movs r0, 0 +_080391E6: + pop {r1} + bx r1 + thumb_func_end sub_8039188 + + thumb_func_start sub_80391EC +sub_80391EC: @ 80391EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08039204 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08039234 + b _0803935C + .align 2, 0 +_08039204: .4byte gUnknown_2022B4C +_08039208: + ldr r0, _0803922C @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _08039230 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + strb r6, [r0] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + bl sub_800E848 + movs r0, 0x1 + b _0803935E + .align 2, 0 +_0803922C: .4byte gUnknown_2023BC4 +_08039230: .4byte gUnknown_2023FE8 +_08039234: + ldr r4, _0803936C @ =gUnknown_2023BE4 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x58 + muls r0, r1 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x19 + beq _08039250 + b _0803935C +_08039250: + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r2, r0, 24 + movs r6, 0 + adds r7, r4, 0 + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r4, r0, r7 + movs r0, 0x20 + adds r0, r4 + mov r8, r0 +_0803926C: + lsls r1, r6, 1 + ldr r0, _08039370 @ =gUnknown_2023BC4 + ldrb r0, [r0] + muls r0, r5 + adds r1, r0 + adds r0, r7, 0 + adds r0, 0xC + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _08039298 + ldrh r1, [r4] + mov r3, r8 + ldrb r2, [r3] + bl sub_801EFCC + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + bne _0803935C +_08039298: + adds r6, 0x1 + cmp r6, 0x3 + ble _0803926C + movs r6, 0 + ldr r0, _08039374 @ =gUnknown_202402C + mov r9, r0 +_080392A4: + movs r0, 0x64 + adds r5, r6, 0 + muls r5, r0 + mov r3, r9 + adds r4, r5, r3 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08039356 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08039356 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _08039356 + ldr r1, _08039378 @ =gUnknown_2023BCE + ldr r0, _08039370 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _08039356 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r2, r0, 24 + movs r4, 0 + mov r8, r5 + ldr r1, _0803936C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r5, r0, r1 + adds r7, r5, 0 + adds r7, 0x20 +_08039310: + adds r1, r4, 0 + adds r1, 0xD + mov r0, r8 + add r0, r9 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08039350 + ldrh r1, [r5] + ldrb r2, [r7] + bl sub_801EFCC + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + beq _08039350 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08039350 + b _08039208 +_08039350: + adds r4, 0x1 + cmp r4, 0x3 + ble _08039310 +_08039356: + adds r6, 0x1 + cmp r6, 0x5 + ble _080392A4 +_0803935C: + movs r0, 0 +_0803935E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803936C: .4byte gUnknown_2023BE4 +_08039370: .4byte gUnknown_2023BC4 +_08039374: .4byte gUnknown_202402C +_08039378: .4byte gUnknown_2023BCE + thumb_func_end sub_80391EC + + thumb_func_start sub_803937C +sub_803937C: @ 803937C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0x1 + bl sub_8039698 + lsls r0, 24 + cmp r0, 0 + beq _080393A8 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _080393A8 + b _08039588 +_080393A8: + ldr r1, _08039410 @ =gUnknown_2023DA0 + ldr r5, _08039414 @ =gUnknown_2023BC4 + ldrb r3, [r5] + lsls r0, r3, 1 + adds r4, r0, r1 + ldrh r1, [r4] + cmp r1, 0 + bne _080393BA + b _08039588 +_080393BA: + ldr r0, _08039418 @ =0x0000ffff + cmp r1, r0 + bne _080393C2 + b _08039588 +_080393C2: + ldr r2, _0803941C @ =gUnknown_8250C04 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _080393D6 + b _08039588 +_080393D6: + ldr r0, _08039420 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08039442 + mov r8, r3 + mov r0, r8 + bl sub_80751D8 + movs r4, 0x2 + eors r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r1, _08039424 @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _08039428 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803942C + ldrb r7, [r5] + b _08039446 + .align 2, 0 +_08039410: .4byte gUnknown_2023DA0 +_08039414: .4byte gUnknown_2023BC4 +_08039418: .4byte 0x0000ffff +_0803941C: .4byte gUnknown_8250C04 +_08039420: .4byte gUnknown_2022B4C +_08039424: .4byte gUnknown_2023D70 +_08039428: .4byte gUnknown_825E45C +_0803942C: + ldrb r0, [r5] + bl sub_80751D8 + eors r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r7, r0, 24 + b _08039446 +_08039442: + adds r7, r3, 0 + mov r8, r7 +_08039446: + ldr r3, _08039468 @ =gUnknown_8250C04 + ldr r1, _0803946C @ =gUnknown_2023DA0 + ldr r2, _08039470 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x2] + adds r1, r2, 0 + cmp r0, 0xA + bne _08039474 + movs r0, 0x12 + b _08039486 + .align 2, 0 +_08039468: .4byte gUnknown_8250C04 +_0803946C: .4byte gUnknown_2023DA0 +_08039470: .4byte gUnknown_2023BC4 +_08039474: + cmp r0, 0xB + bne _0803947E + movs r2, 0xB + mov r10, r2 + b _08039488 +_0803947E: + cmp r0, 0xD + beq _08039484 + b _08039588 +_08039484: + movs r0, 0xA +_08039486: + mov r10, r0 +_08039488: + ldr r2, _0803949C @ =gUnknown_2023BE4 + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r10 + bne _080394CC + b _08039588 + .align 2, 0 +_0803949C: .4byte gUnknown_2023BE4 +_080394A0: + ldr r0, _080394C4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _080394C8 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + strb r6, [r0] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + bl sub_800E848 + movs r0, 0x1 + b _0803958A + .align 2, 0 +_080394C4: .4byte gUnknown_2023BC4 +_080394C8: .4byte gUnknown_2023FE8 +_080394CC: + movs r6, 0 + ldr r2, _08039558 @ =gUnknown_8254784 + mov r9, r2 +_080394D2: + movs r0, 0x64 + adds r1, r6, 0 + muls r1, r0 + ldr r0, _0803955C @ =gUnknown_202402C + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08039582 + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08039582 + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _08039582 + ldr r1, _08039560 @ =gUnknown_2023BCE + mov r2, r8 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _08039582 + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _08039582 + ldr r0, _08039564 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r2, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r6, r0 + beq _08039582 + adds r0, r7, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r6, r0 + beq _08039582 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + movs r1, 0x2E + bl sub_803FBE8 + cmp r0, 0 + beq _08039568 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + add r0, r9 + ldrb r0, [r0, 0x17] + b _08039572 + .align 2, 0 +_08039558: .4byte gUnknown_8254784 +_0803955C: .4byte gUnknown_202402C +_08039560: .4byte gUnknown_2023BCE +_08039564: .4byte gUnknown_2023FE8 +_08039568: + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + add r0, r9 + ldrb r0, [r0, 0x16] +_08039572: + cmp r10, r0 + bne _08039582 + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _080394A0 +_08039582: + adds r6, 0x1 + cmp r6, 0x5 + ble _080394D2 +_08039588: + movs r0, 0 +_0803958A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_803937C + + thumb_func_start sub_8039598 +sub_8039598: @ 8039598 + push {r4,r5,lr} + ldr r3, _080395F0 @ =gUnknown_2023BE4 + ldr r5, _080395F4 @ =gUnknown_2023BC4 + ldrb r4, [r5] + movs r0, 0x58 + adds r2, r4, 0 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _08039660 + adds r1, r2, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1E + bne _08039660 + ldrh r0, [r1, 0x2C] + ldrh r1, [r1, 0x28] + lsrs r0, 1 + cmp r1, r0 + bcc _08039660 + ldr r1, _080395F8 @ =gUnknown_2023DA0 + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + cmp r1, 0 + beq _080395DE + ldr r0, _080395FC @ =0x0000ffff + cmp r1, r0 + bne _08039600 +_080395DE: + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08039600 + ldrb r0, [r5] + b _08039668 + .align 2, 0 +_080395F0: .4byte gUnknown_2023BE4 +_080395F4: .4byte gUnknown_2023BC4 +_080395F8: .4byte gUnknown_2023DA0 +_080395FC: .4byte 0x0000ffff +_08039600: + ldr r2, _0803962C @ =gUnknown_8250C04 + ldr r1, _08039630 @ =gUnknown_2023DA0 + ldr r4, _08039634 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _08039638 + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08039638 + ldrb r0, [r4] + b _08039668 + .align 2, 0 +_0803962C: .4byte gUnknown_8250C04 +_08039630: .4byte gUnknown_2023DA0 +_08039634: .4byte gUnknown_2023BC4 +_08039638: + movs r0, 0x8 + movs r1, 0x1 + bl sub_8039828 + lsls r0, 24 + cmp r0, 0 + bne _08039686 + movs r0, 0x4 + movs r1, 0x1 + bl sub_8039828 + lsls r0, 24 + cmp r0, 0 + bne _08039686 + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _08039664 +_08039660: + movs r0, 0 + b _08039688 +_08039664: + ldr r0, _08039690 @ =gUnknown_2023BC4 + ldrb r0, [r0] +_08039668: + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _08039694 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + movs r1, 0x6 + strb r1, [r0] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + bl sub_800E848 +_08039686: + movs r0, 0x1 +_08039688: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08039690: .4byte gUnknown_2023BC4 +_08039694: .4byte gUnknown_2023FE8 + thumb_func_end sub_8039598 + + thumb_func_start sub_8039698 +sub_8039698: @ 8039698 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _08039730 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08039734 @ =gUnknown_825E45C + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08039720 + movs r4, 0 + ldr r6, _08039738 @ =gUnknown_2023BE4 + movs r7, 0x58 + adds r0, r3, 0 + muls r0, r7 + adds r5, r0, r6 + movs r0, 0x20 + adds r0, r5 + mov r9, r0 +_080396D4: + lsls r1, r4, 1 + ldr r0, _0803973C @ =gUnknown_2023BC4 + ldrb r0, [r0] + muls r0, r7 + adds r1, r0 + adds r0, r6, 0 + adds r0, 0xC + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _0803971A + ldrh r1, [r5] + mov r3, r9 + ldrb r2, [r3] + bl sub_801EFCC + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + beq _0803971A + mov r0, r8 + cmp r0, 0 + bne _08039744 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _08039744 +_0803971A: + adds r4, 0x1 + cmp r4, 0x3 + ble _080396D4 +_08039720: + ldr r0, _08039740 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08039748 + b _080397C2 + .align 2, 0 +_08039730: .4byte gUnknown_2023D70 +_08039734: .4byte gUnknown_825E45C +_08039738: .4byte gUnknown_2023BE4 +_0803973C: .4byte gUnknown_2023BC4 +_08039740: .4byte gUnknown_2022B4C +_08039744: + movs r0, 0x1 + b _080397C4 +_08039748: + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _080397D0 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _080397D4 @ =gUnknown_825E45C + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080397C2 + movs r4, 0 + ldr r6, _080397D8 @ =gUnknown_2023BE4 + movs r7, 0x58 + adds r0, r3, 0 + muls r0, r7 + adds r5, r0, r6 + movs r3, 0x20 + adds r3, r5 + mov r9, r3 +_08039776: + lsls r1, r4, 1 + ldr r0, _080397DC @ =gUnknown_2023BC4 + ldrb r0, [r0] + muls r0, r7 + adds r1, r0 + adds r0, r6, 0 + adds r0, 0xC + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _080397BC + ldrh r1, [r5] + mov r3, r9 + ldrb r2, [r3] + bl sub_801EFCC + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + beq _080397BC + mov r0, r8 + cmp r0, 0 + bne _08039744 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _08039744 +_080397BC: + adds r4, 0x1 + cmp r4, 0x3 + ble _08039776 +_080397C2: + movs r0, 0 +_080397C4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080397D0: .4byte gUnknown_2023D70 +_080397D4: .4byte gUnknown_825E45C +_080397D8: .4byte gUnknown_2023BE4 +_080397DC: .4byte gUnknown_2023BC4 + thumb_func_end sub_8039698 + + thumb_func_start sub_80397E0 +sub_80397E0: @ 80397E0 + push {r4,lr} + movs r4, 0 + ldr r1, _08039820 @ =gUnknown_2023BE4 + ldr r0, _08039824 @ =gUnknown_2023BC4 + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x18 + adds r2, r0, r1 + movs r3, 0x7 +_080397F4: + ldrb r1, [r2] + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r0, 0x6 + ble _0803980A + subs r1, 0x6 + lsls r0, r4, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 +_0803980A: + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _080397F4 + movs r0, 0 + cmp r4, 0x3 + bls _0803981A + movs r0, 0x1 +_0803981A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08039820: .4byte gUnknown_2023BE4 +_08039824: .4byte gUnknown_2023BC4 + thumb_func_end sub_80397E0 + + thumb_func_start sub_8039828 +sub_8039828: @ 8039828 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x4] + ldr r1, _080398B4 @ =gUnknown_2023DA0 + ldr r5, _080398B8 @ =gUnknown_2023BC4 + ldrb r3, [r5] + lsls r0, r3, 1 + adds r4, r0, r1 + ldrh r1, [r4] + cmp r1, 0 + bne _08039852 + b _08039A54 +_08039852: + ldr r0, _080398BC @ =0x0000ffff + cmp r1, r0 + bne _0803985A + b _08039A54 +_0803985A: + ldr r0, _080398C0 @ =gUnknown_2023DC0 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08039866 + b _08039A54 +_08039866: + ldr r2, _080398C4 @ =gUnknown_8250C04 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0803987A + b _08039A54 +_0803987A: + ldr r0, _080398C8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08039918 + mov r9, r3 + mov r0, r9 + bl sub_80751D8 + movs r4, 0x2 + eors r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r1, _080398CC @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _080398D0 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080398D4 + ldrb r5, [r5] + mov r10, r5 + b _0803991C + .align 2, 0 +_080398B4: .4byte gUnknown_2023DA0 +_080398B8: .4byte gUnknown_2023BC4 +_080398BC: .4byte 0x0000ffff +_080398C0: .4byte gUnknown_2023DC0 +_080398C4: .4byte gUnknown_8250C04 +_080398C8: .4byte gUnknown_2022B4C +_080398CC: .4byte gUnknown_2023D70 +_080398D0: .4byte gUnknown_825E45C +_080398D4: + ldrb r0, [r5] + bl sub_80751D8 + eors r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + b _0803991C +_080398EC: + ldr r0, _08039910 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _08039914 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + strb r7, [r0] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + bl sub_800E848 + movs r0, 0x1 + b _08039A56 + .align 2, 0 +_08039910: .4byte gUnknown_2023BC4 +_08039914: .4byte gUnknown_2023FE8 +_08039918: + mov r9, r3 + mov r10, r9 +_0803991C: + movs r7, 0 +_0803991E: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _080399B0 @ =gUnknown_202402C + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08039936 + b _08039A4C +_08039936: + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + bne _08039944 + b _08039A4C +_08039944: + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _08039A4C + ldr r1, _080399B4 @ =gUnknown_2023BCE + mov r2, r9 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r7, r0 + beq _08039A4C + mov r2, r10 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r7, r0 + beq _08039A4C + ldr r0, _080399B8 @ =gUnknown_2023FE8 + ldr r1, [r0] + mov r2, r9 + adds r0, r2, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r7, r0 + beq _08039A4C + mov r2, r10 + adds r0, r2, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r7, r0 + beq _08039A4C + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + movs r1, 0x2E + bl sub_803FBE8 + cmp r0, 0 + beq _080399C0 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r1, _080399BC @ =gUnknown_8254784 + adds r0, r1 + ldrb r2, [r0, 0x17] + b _080399CC + .align 2, 0 +_080399B0: .4byte gUnknown_202402C +_080399B4: .4byte gUnknown_2023BCE +_080399B8: .4byte gUnknown_2023FE8 +_080399BC: .4byte gUnknown_8254784 +_080399C0: + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r2, _08039A68 @ =gUnknown_8254784 + adds r0, r2 + ldrb r2, [r0, 0x16] +_080399CC: + ldr r1, _08039A6C @ =gUnknown_2023DA0 + ldr r5, _08039A70 @ =gUnknown_2023BC4 + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + adds r1, r4, 0 + bl sub_801EFCC + ldr r1, [sp] + ands r1, r0 + cmp r1, 0 + beq _08039A4C + ldr r1, _08039A74 @ =gUnknown_2023DC0 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + mov r9, r0 + movs r4, 0 + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + mov r8, r1 + ldr r1, _08039A78 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r5, r0, r1 + adds r6, r5, 0 + adds r6, 0x20 +_08039A0A: + ldr r0, _08039A7C @ =gUnknown_202402C + adds r1, r4, 0 + adds r1, 0xD + add r0, r8 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08039A46 + ldrh r1, [r5] + ldrb r2, [r6] + bl sub_801EFCC + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + beq _08039A46 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp, 0x4] + bl __modsi3 + cmp r0, 0 + bne _08039A46 + b _080398EC +_08039A46: + adds r4, 0x1 + cmp r4, 0x3 + ble _08039A0A +_08039A4C: + adds r7, 0x1 + cmp r7, 0x5 + bgt _08039A54 + b _0803991E +_08039A54: + movs r0, 0 +_08039A56: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08039A68: .4byte gUnknown_8254784 +_08039A6C: .4byte gUnknown_2023DA0 +_08039A70: .4byte gUnknown_2023BC4 +_08039A74: .4byte gUnknown_2023DC0 +_08039A78: .4byte gUnknown_2023BE4 +_08039A7C: .4byte gUnknown_202402C + thumb_func_end sub_8039828 + + thumb_func_start sub_8039A80 +sub_8039A80: @ 8039A80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r6, _08039B5C @ =gUnknown_2023BE4 + ldr r4, _08039B60 @ =gUnknown_2023BC4 + ldrb r2, [r4] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r6, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08039B64 @ =0x0400e000 + ands r0, r1 + cmp r0, 0 + beq _08039AA6 + b _08039C74 +_08039AA6: + ldr r0, _08039B68 @ =gUnknown_2023DFC + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x80 + lsls r0, 3 + ands r1, r0 + cmp r1, 0 + beq _08039ABA + b _08039C74 +_08039ABA: + str r1, [sp] + movs r0, 0xC + adds r1, r2, 0 + movs r2, 0x17 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08039AD2 + b _08039C74 +_08039AD2: + ldrb r1, [r4] + str r0, [sp] + movs r0, 0xC + movs r2, 0x47 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08039AEA + b _08039C74 +_08039AEA: + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x2A + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08039B1C + ldrb r0, [r4] + muls r0, r5 + adds r1, r0, r6 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x8 + bne _08039B10 + b _08039C74 +_08039B10: + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x8 + bne _08039B1C + b _08039C74 +_08039B1C: + movs r0, 0 + mov r8, r0 + ldr r0, _08039B6C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08039B8E + ldr r4, _08039B60 @ =gUnknown_2023BC4 + ldrb r7, [r4] + adds r0, r7, 0 + bl sub_80751D8 + movs r5, 0x2 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r1, _08039B70 @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _08039B74 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08039B78 + ldrb r6, [r4] + b _08039B94 + .align 2, 0 +_08039B5C: .4byte gUnknown_2023BE4 +_08039B60: .4byte gUnknown_2023BC4 +_08039B64: .4byte 0x0400e000 +_08039B68: .4byte gUnknown_2023DFC +_08039B6C: .4byte gUnknown_2022B4C +_08039B70: .4byte gUnknown_2023D70 +_08039B74: .4byte gUnknown_825E45C +_08039B78: + ldrb r0, [r4] + bl sub_80751D8 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + b _08039B94 +_08039B8E: + ldr r0, _08039C64 @ =gUnknown_2023BC4 + ldrb r6, [r0] + adds r7, r6, 0 +_08039B94: + movs r5, 0 +_08039B96: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08039C68 @ =gUnknown_202402C + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08039BFA + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08039BFA + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _08039BFA + ldr r1, _08039C6C @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _08039BFA + lsls r0, r6, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _08039BFA + ldr r0, _08039C70 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r7, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r5, r0 + beq _08039BFA + adds r0, r6, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r5, r0 + beq _08039BFA + movs r0, 0x1 + add r8, r0 +_08039BFA: + adds r5, 0x1 + cmp r5, 0x5 + ble _08039B96 + mov r0, r8 + cmp r0, 0 + beq _08039C74 + bl sub_8039188 + lsls r0, 24 + cmp r0, 0 + bne _08039C60 + bl sub_80391EC + lsls r0, 24 + cmp r0, 0 + bne _08039C60 + bl sub_803937C + lsls r0, 24 + cmp r0, 0 + bne _08039C60 + bl sub_8039598 + lsls r0, 24 + cmp r0, 0 + bne _08039C60 + movs r0, 0 + bl sub_8039698 + lsls r0, 24 + cmp r0, 0 + bne _08039C74 + bl sub_80397E0 + lsls r0, 24 + cmp r0, 0 + bne _08039C74 + movs r0, 0x8 + movs r1, 0x2 + bl sub_8039828 + lsls r0, 24 + cmp r0, 0 + bne _08039C60 + movs r0, 0x4 + movs r1, 0x3 + bl sub_8039828 + lsls r0, 24 + cmp r0, 0 + beq _08039C74 +_08039C60: + movs r0, 0x1 + b _08039C76 + .align 2, 0 +_08039C64: .4byte gUnknown_2023BC4 +_08039C68: .4byte gUnknown_202402C +_08039C6C: .4byte gUnknown_2023BCE +_08039C70: .4byte gUnknown_2023FE8 +_08039C74: + movs r0, 0 +_08039C76: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8039A80 + + thumb_func_start sub_8039C84 +sub_8039C84: @ 8039C84 + push {r4-r6,lr} + ldr r5, _08039CDC @ =gUnknown_2022B4C + ldr r0, [r5] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08039C94 + b _08039D96 +_08039C94: + bl sub_8039A80 + lsls r0, 24 + cmp r0, 0 + beq _08039D8C + ldr r0, _08039CE0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _08039CE4 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + ldrb r0, [r0] + cmp r0, 0x6 + bne _08039D5A + bl sub_8039E3C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bne _08039D44 + ldr r0, [r5] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08039CE8 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + b _08039CFC + .align 2, 0 +_08039CDC: .4byte gUnknown_2022B4C +_08039CE0: .4byte gUnknown_2023BC4 +_08039CE4: .4byte gUnknown_2023FE8 +_08039CE8: + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 +_08039CFC: + movs r4, 0 +_08039CFE: + movs r0, 0x64 + muls r0, r4 + ldr r1, _08039D7C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08039D3E + ldr r1, _08039D80 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _08039D3E + lsls r0, r5, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _08039D3E + ldr r0, _08039D84 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r6, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r4, r0 + beq _08039D3E + adds r0, r5, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r4, r0 + bne _08039D44 +_08039D3E: + adds r4, 0x1 + cmp r4, 0x5 + ble _08039CFE +_08039D44: + ldr r0, _08039D88 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, _08039D84 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x92 + strb r4, [r0] +_08039D5A: + ldr r4, _08039D88 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751D8 + ldrb r2, [r4] + ldr r1, _08039D84 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r2, r1 + adds r2, 0x5C + lsls r0, 24 + lsrs r0, 25 + adds r0, r1 + adds r0, 0x92 + ldrb r0, [r0] + strb r0, [r2] + b _08039DA8 + .align 2, 0 +_08039D7C: .4byte gUnknown_202402C +_08039D80: .4byte gUnknown_2023BCE +_08039D84: .4byte gUnknown_2023FE8 +_08039D88: .4byte gUnknown_2023BC4 +_08039D8C: + bl sub_803A1F4 + lsls r0, 24 + cmp r0, 0 + bne _08039DA8 +_08039D96: + ldr r0, _08039DB0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + movs r2, 0x1 + eors r2, r0 + lsls r2, 8 + movs r0, 0x1 + movs r1, 0 + bl sub_800E848 +_08039DA8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08039DB0: .4byte gUnknown_2023BC4 + thumb_func_end sub_8039C84 + + thumb_func_start sub_8039DB4 +sub_8039DB4: @ 8039DB4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r3, 0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + movs r7, 0 + ldr r0, _08039E38 @ =gUnknown_824F050 + mov r10, r0 + ldrb r0, [r0] + cmp r0, 0xFF + beq _08039E26 + mov r5, r10 +_08039DE2: + ldrb r0, [r5] + cmp r0, 0xFE + beq _08039E18 + ldr r1, [sp] + cmp r0, r1 + bne _08039E18 + ldrb r4, [r5, 0x1] + cmp r4, r9 + bne _08039E02 + ldrb r1, [r6] + ldrb r0, [r5, 0x2] + muls r0, r1 + movs r1, 0xA + bl __divsi3 + strb r0, [r6] +_08039E02: + cmp r4, r8 + bne _08039E18 + cmp r9, r8 + beq _08039E18 + ldrb r1, [r6] + ldrb r0, [r5, 0x2] + muls r0, r1 + movs r1, 0xA + bl __divsi3 + strb r0, [r6] +_08039E18: + adds r5, 0x3 + adds r7, 0x3 + mov r1, r10 + adds r0, r7, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08039DE2 +_08039E26: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08039E38: .4byte gUnknown_824F050 + thumb_func_end sub_8039DB4 + + thumb_func_start sub_8039E3C +sub_8039E3C: @ 8039E3C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r4, _08039E98 @ =gUnknown_2023BC4 + ldrb r2, [r4] + ldr r0, _08039E9C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, r2, r0 + adds r1, r0, 0 + adds r1, 0x5C + ldrb r0, [r1] + cmp r0, 0x6 + beq _08039E5E + b _0803A160 +_08039E5E: + ldr r0, _08039EA0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08039EF8 + str r2, [sp, 0xC] + adds r0, r2, 0 + bl sub_80751D8 + movs r5, 0x2 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r1, _08039EA4 @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _08039EA8 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08039EAC + ldrb r4, [r4] + str r4, [sp, 0x10] + b _08039EC2 + .align 2, 0 +_08039E98: .4byte gUnknown_2023BC4 +_08039E9C: .4byte gUnknown_2023FE8 +_08039EA0: .4byte gUnknown_2022B4C +_08039EA4: .4byte gUnknown_2023D70 +_08039EA8: .4byte gUnknown_825E45C +_08039EAC: + ldrb r0, [r4] + bl sub_80751D8 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x10] +_08039EC2: + bl sub_8044EC8 + movs r3, 0x2 + ands r0, r3 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _08039EF0 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08039EF4 @ =gUnknown_825E45C + mov r4, r10 + lsls r0, r4, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08039F0A + eors r4, r3 + lsls r0, r4, 24 + lsrs r0, 24 + mov r10, r0 + b _08039F0A + .align 2, 0 +_08039EF0: .4byte gUnknown_2023D70 +_08039EF4: .4byte gUnknown_825E45C +_08039EF8: + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrb r4, [r4] + str r4, [sp, 0x10] + str r4, [sp, 0xC] +_08039F0A: + movs r0, 0 + mov r9, r0 + mov r1, sp + str r1, [sp, 0x14] +_08039F12: + movs r2, 0 + str r2, [sp, 0x4] + movs r4, 0x6 + str r4, [sp, 0x8] + movs r7, 0 + ldr r0, _08039FD8 @ =gUnknown_825E45C + mov r8, r0 +_08039F20: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08039FDC @ =gUnknown_202402C + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + beq _08039FF0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08039FF0 + mov r1, r8 + ldr r0, [r1] + mov r2, r9 + ands r0, r2 + cmp r0, 0 + bne _08039FF0 + ldr r1, _08039FE0 @ =gUnknown_2023BCE + ldr r4, [sp, 0xC] + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _08039FF0 + ldr r2, [sp, 0x10] + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _08039FF0 + ldr r0, _08039FE4 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r4, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r7, r0 + beq _08039FF0 + adds r0, r2, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r7, r0 + beq _08039FF0 + ldr r1, _08039FE8 @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x6] + ldrb r6, [r0, 0x7] + movs r0, 0xA + ldr r4, [sp, 0x14] + strb r0, [r4] + movs r0, 0x58 + mov r4, r10 + muls r4, r0 + ldr r0, _08039FEC @ =gUnknown_2023BE4 + adds r4, r0 + adds r0, r4, 0 + adds r0, 0x21 + ldrb r0, [r0] + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, sp + bl sub_8039DB4 + adds r4, 0x22 + ldrb r0, [r4] + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, sp + bl sub_8039DB4 + ldr r2, [sp, 0x4] + ldr r1, [sp, 0x14] + ldrb r1, [r1] + cmp r2, r1 + bcs _08039FFE + ldr r2, [sp, 0x14] + ldrb r2, [r2] + str r2, [sp, 0x4] + lsls r0, r7, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + b _08039FFE + .align 2, 0 +_08039FD8: .4byte gUnknown_825E45C +_08039FDC: .4byte gUnknown_202402C +_08039FE0: .4byte gUnknown_2023BCE +_08039FE4: .4byte gUnknown_2023FE8 +_08039FE8: .4byte gUnknown_8254784 +_08039FEC: .4byte gUnknown_2023BE4 +_08039FF0: + mov r4, r8 + ldr r0, [r4] + mov r1, r9 + orrs r1, r0 + lsls r0, r1, 24 + lsrs r0, 24 + mov r9, r0 +_08039FFE: + movs r2, 0x4 + add r8, r2 + adds r7, 0x1 + cmp r7, 0x5 + ble _08039F20 + ldr r4, [sp, 0x8] + cmp r4, 0x6 + beq _0803A06C + movs r7, 0 + movs r0, 0x64 + adds r5, r4, 0 + muls r5, r0 + ldr r6, _0803A060 @ =gUnknown_202402C +_0803A018: + adds r1, r7, 0 + adds r1, 0xD + adds r0, r5, r6 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _0803A03E + ldr r0, _0803A064 @ =gUnknown_2023BC4 + ldrb r1, [r0] + adds r0, r4, 0 + mov r2, r10 + bl sub_801EDF4 + movs r1, 0x2 + ands r1, r0 + cmp r1, 0 + bne _0803A044 +_0803A03E: + adds r7, 0x1 + cmp r7, 0x3 + ble _0803A018 +_0803A044: + cmp r7, 0x4 + beq _0803A04A + b _0803A15E +_0803A04A: + ldr r1, [sp, 0x8] + lsls r0, r1, 2 + ldr r2, _0803A068 @ =gUnknown_825E45C + adds r0, r2 + ldr r0, [r0] + mov r4, r9 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r0, 24 + b _0803A06E + .align 2, 0 +_0803A060: .4byte gUnknown_202402C +_0803A064: .4byte gUnknown_2023BC4 +_0803A068: .4byte gUnknown_825E45C +_0803A06C: + movs r0, 0x3F +_0803A06E: + mov r9, r0 + mov r1, r9 + cmp r1, 0x3F + beq _0803A078 + b _08039F12 +_0803A078: + ldr r0, _0803A170 @ =gUnknown_2023F50 + movs r1, 0 + strh r1, [r0] + ldr r0, _0803A174 @ =gUnknown_2023FE8 + ldr r0, [r0] + strb r1, [r0, 0x13] + ldr r0, _0803A178 @ =gUnknown_2023FC4 + movs r2, 0x1 + strb r2, [r0, 0xE] + ldr r0, _0803A17C @ =gUnknown_2023DCC + strb r1, [r0] + ldr r0, _0803A180 @ =gUnknown_2023D71 + strb r2, [r0] + movs r2, 0 + str r2, [sp, 0x4] + movs r4, 0x6 + str r4, [sp, 0x8] + movs r7, 0 +_0803A09C: + movs r0, 0x64 + adds r6, r7, 0 + muls r6, r0 + ldr r0, _0803A184 @ =gUnknown_202402C + adds r4, r6, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + adds r1, r7, 0x1 + str r1, [sp, 0x18] + cmp r0, 0 + beq _0803A158 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0803A158 + ldr r1, _0803A188 @ =gUnknown_2023BCE + ldr r2, [sp, 0xC] + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _0803A158 + ldr r4, [sp, 0x10] + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _0803A158 + ldr r0, _0803A174 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r2, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r7, r0 + beq _0803A158 + adds r0, r4, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r7, r0 + beq _0803A158 + movs r5, 0 + mov r9, r6 + ldr r0, _0803A18C @ =gUnknown_2023D50 + mov r8, r0 + ldr r6, _0803A190 @ =gUnknown_2023BC4 +_0803A100: + adds r1, r5, 0 + adds r1, 0xD + ldr r0, _0803A184 @ =gUnknown_202402C + add r0, r9 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0 + mov r1, r8 + str r0, [r1] + cmp r4, 0 + beq _0803A13C + ldr r0, _0803A194 @ =gUnknown_8250C04 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0x1 + beq _0803A13C + ldrb r0, [r6] + mov r1, r10 + bl sub_801E68C + ldrb r1, [r6] + adds r0, r4, 0 + mov r2, r10 + bl sub_801EDF4 +_0803A13C: + mov r2, r8 + ldr r0, [r2] + ldr r4, [sp, 0x4] + cmp r4, r0 + bge _0803A152 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + lsls r0, r7, 24 + lsrs r0, 24 + str r0, [sp, 0x8] +_0803A152: + adds r5, 0x1 + cmp r5, 0x3 + ble _0803A100 +_0803A158: + ldr r7, [sp, 0x18] + cmp r7, 0x5 + ble _0803A09C +_0803A15E: + ldr r0, [sp, 0x8] +_0803A160: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803A170: .4byte gUnknown_2023F50 +_0803A174: .4byte gUnknown_2023FE8 +_0803A178: .4byte gUnknown_2023FC4 +_0803A17C: .4byte gUnknown_2023DCC +_0803A180: .4byte gUnknown_2023D71 +_0803A184: .4byte gUnknown_202402C +_0803A188: .4byte gUnknown_2023BCE +_0803A18C: .4byte gUnknown_2023D50 +_0803A190: .4byte gUnknown_2023BC4 +_0803A194: .4byte gUnknown_8250C04 + thumb_func_end sub_8039E3C + + thumb_func_start sub_803A198 +sub_803A198: @ 803A198 + push {r4,lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bne _0803A1A8 + movs r0, 0x1 + b _0803A1EE +_0803A1A8: + ldrb r1, [r2, 0x4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803A1B6 + movs r0, 0x2 + b _0803A1EE +_0803A1B6: + ldrb r4, [r2, 0x3] + movs r3, 0x3F + adds r0, r3, 0 + ands r0, r4 + cmp r0, 0 + beq _0803A1C6 + movs r0, 0x3 + b _0803A1EE +_0803A1C6: + ldrb r1, [r2] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0803A1DC + ldrb r0, [r2, 0x1] + cmp r0, 0 + bne _0803A1DC + ldrb r0, [r2, 0x2] + cmp r0, 0 + beq _0803A1E0 +_0803A1DC: + movs r0, 0x4 + b _0803A1EE +_0803A1E0: + movs r0, 0x80 + ands r0, r4 + cmp r0, 0 + bne _0803A1EC + movs r0, 0x6 + b _0803A1EE +_0803A1EC: + movs r0, 0x5 +_0803A1EE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_803A198 + + thumb_func_start sub_803A1F4 +sub_803A1F4: @ 803A1F4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0 + mov r10, r0 + movs r7, 0 + movs r1, 0 + mov r8, r1 +_0803A20A: + movs r0, 0x64 + mov r1, r8 + muls r1, r0 + ldr r0, _0803A2A8 @ =gUnknown_202402C + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0803A246 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _0803A246 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0803A246 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_0803A246: + movs r2, 0x1 + add r8, r2 + mov r0, r8 + cmp r0, 0x5 + ble _0803A20A + movs r1, 0 + mov r8, r1 +_0803A254: + ldr r1, _0803A2AC @ =gUnknown_2023FF4 + mov r2, r8 + cmp r2, 0 + beq _0803A26E + ldr r0, [r1] + ldr r0, [r0, 0x18] + adds r0, 0x2C + ldrb r0, [r0] + subs r0, r2 + adds r0, 0x1 + cmp r10, r0 + ble _0803A26E + b _0803A644 +_0803A26E: + ldr r0, [r1] + ldr r0, [r0, 0x18] + mov r2, r8 + lsls r1, r2, 1 + adds r0, 0x24 + adds r0, r1 + ldrh r0, [r0] + mov r9, r0 + str r1, [sp] + cmp r0, 0 + bne _0803A286 + b _0803A644 +_0803A286: + ldr r1, _0803A2B0 @ =gUnknown_82528BC + subs r0, 0xD + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + cmp r1, 0 + bne _0803A296 + b _0803A644 +_0803A296: + mov r0, r9 + cmp r0, 0xAF + bne _0803A2BC + ldr r0, _0803A2B4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0803A2B8 @ =0x00003108 + adds r5, r0, r1 + b _0803A2BE + .align 2, 0 +_0803A2A8: .4byte gUnknown_202402C +_0803A2AC: .4byte gUnknown_2023FF4 +_0803A2B0: .4byte gUnknown_82528BC +_0803A2B4: .4byte gUnknown_3005008 +_0803A2B8: .4byte 0x00003108 +_0803A2BC: + adds r5, r1, 0 +_0803A2BE: + mov r2, r9 + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r5, 0 + bl sub_803A198 + ldr r4, _0803A2F8 @ =gUnknown_2023BC4 + ldrb r1, [r4] + lsrs r1, 1 + ldr r3, _0803A2FC @ =gUnknown_2023FE8 + ldr r2, [r3] + adds r1, r2 + adds r1, 0xC4 + strb r0, [r1] + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC4 + ldrb r0, [r0] + subs r0, 0x1 + cmp r0, 0x5 + bls _0803A2EE + b _0803A5F8 +_0803A2EE: + lsls r0, 2 + ldr r1, _0803A300 @ =_0803A304 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803A2F8: .4byte gUnknown_2023BC4 +_0803A2FC: .4byte gUnknown_2023FE8 +_0803A300: .4byte _0803A304 + .align 2, 0 +_0803A304: + .4byte _0803A31C + .4byte _0803A348 + .4byte _0803A390 + .4byte _0803A4E8 + .4byte _0803A5C8 + .4byte _0803A650 +_0803A31C: + ldr r2, _0803A340 @ =gUnknown_2023BE4 + ldr r0, _0803A344 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r1, [r0, 0x2C] + ldrh r0, [r0, 0x28] + lsrs r1, 2 + cmp r0, r1 + bcc _0803A334 + b _0803A5F8 +_0803A334: + cmp r0, 0 + bne _0803A33A + b _0803A5F8 +_0803A33A: + movs r7, 0x1 + b _0803A5FC + .align 2, 0 +_0803A340: .4byte gUnknown_2023BE4 +_0803A344: .4byte gUnknown_2023BC4 +_0803A348: + mov r0, r9 + movs r1, 0x4 + movs r2, 0x4 + bl sub_8042C08 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0803A35C + b _0803A5F8 +_0803A35C: + ldr r2, _0803A388 @ =gUnknown_2023BE4 + ldr r0, _0803A38C @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + ldrh r2, [r1, 0x28] + cmp r2, 0 + bne _0803A370 + b _0803A5F8 +_0803A370: + ldrh r3, [r1, 0x2C] + lsrs r0, r3, 2 + cmp r2, r0 + bcc _0803A33A + adds r0, r2, 0 + subs r0, r3, r0 + adds r1, r5, r4 + ldrb r1, [r1] + cmp r0, r1 + bgt _0803A386 + b _0803A5F8 +_0803A386: + b _0803A33A + .align 2, 0 +_0803A388: .4byte gUnknown_2023BE4 +_0803A38C: .4byte gUnknown_2023BC4 +_0803A390: + ldr r3, _0803A4DC @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsrs r0, 1 + ldr r2, _0803A4E0 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r0, r1 + adds r0, 0xC6 + movs r1, 0 + strb r1, [r0] + ldrb r1, [r5, 0x3] + movs r6, 0x20 + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0803A3D4 + ldr r1, _0803A4E4 @ =gUnknown_2023BE4 + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0803A3D4 + lsrs r1, r4, 1 + ldr r0, [r2] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, 0x1 +_0803A3D4: + ldrb r1, [r5, 0x3] + movs r6, 0x10 + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0803A40E + ldr r1, _0803A4E4 @ =gUnknown_2023BE4 + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0803A3FE + movs r0, 0x80 + ands r1, r0 + cmp r1, 0 + beq _0803A40E +_0803A3FE: + lsrs r1, r4, 1 + ldr r0, [r2] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, 0x1 +_0803A40E: + ldrb r1, [r5, 0x3] + movs r6, 0x8 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0803A440 + ldr r1, _0803A4E4 @ =gUnknown_2023BE4 + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0803A440 + lsrs r1, r4, 1 + ldr r0, [r2] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, 0x1 +_0803A440: + ldrb r1, [r5, 0x3] + movs r6, 0x4 + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803A472 + ldr r1, _0803A4E4 @ =gUnknown_2023BE4 + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0803A472 + lsrs r1, r4, 1 + ldr r0, [r2] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, 0x1 +_0803A472: + ldrb r1, [r5, 0x3] + movs r6, 0x2 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803A4A4 + ldr r1, _0803A4E4 @ =gUnknown_2023BE4 + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803A4A4 + lsrs r1, r4, 1 + ldr r0, [r2] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, 0x1 +_0803A4A4: + ldrb r1, [r5, 0x3] + movs r4, 0x1 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0803A4B2 + b _0803A5F8 +_0803A4B2: + ldr r1, _0803A4E4 @ =gUnknown_2023BE4 + ldrb r3, [r3] + movs r0, 0x58 + muls r0, r3 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0803A4CA + b _0803A5F8 +_0803A4CA: + lsrs r1, r3, 1 + ldr r0, [r2] + adds r1, r0 + adds r1, 0xC6 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + b _0803A33A + .align 2, 0 +_0803A4DC: .4byte gUnknown_2023BC4 +_0803A4E0: .4byte gUnknown_2023FE8 +_0803A4E4: .4byte gUnknown_2023BE4 +_0803A4E8: + ldr r4, _0803A5BC @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsrs r0, 1 + ldr r3, _0803A5C0 @ =gUnknown_2023FE8 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + movs r1, 0 + strb r1, [r0] + ldr r1, _0803A5C4 @ =gUnknown_2023E0C + ldrb r2, [r4] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x16] + cmp r0, 0 + beq _0803A5F8 + ldrb r1, [r5] + movs r6, 0xF + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A528 + lsrs r2, 1 + ldr r0, [r3] + adds r2, r0 + adds r2, 0xC6 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_0803A528: + ldrb r1, [r5, 0x1] + movs r7, 0xF0 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A546 + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] +_0803A546: + ldrb r1, [r5, 0x1] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A562 + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_0803A562: + ldrb r1, [r5, 0x2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A57E + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] +_0803A57E: + ldrb r1, [r5, 0x2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A59A + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] +_0803A59A: + ldrb r1, [r5] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + bne _0803A5A6 + b _0803A33A +_0803A5A6: + ldrb r0, [r4] + lsrs r0, 1 + ldr r1, [r3] + adds r0, r1 + adds r0, 0xC6 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + b _0803A33A + .align 2, 0 +_0803A5BC: .4byte gUnknown_2023BC4 +_0803A5C0: .4byte gUnknown_2023FE8 +_0803A5C4: .4byte gUnknown_2023E0C +_0803A5C8: + ldr r4, _0803A630 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _0803A634 @ =gUnknown_2023E0C + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x16] + cmp r0, 0 + beq _0803A5F8 + ldr r0, _0803A638 @ =gUnknown_2023DE4 + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x4] + cmp r0, 0 + bne _0803A5F8 + b _0803A33A +_0803A5F8: + cmp r7, 0 + beq _0803A644 +_0803A5FC: + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_800E848 + ldr r0, _0803A630 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsrs r0, 1 + ldr r1, _0803A63C @ =gUnknown_2023FE8 + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC0 + mov r1, r9 + strb r1, [r0] + ldr r0, _0803A640 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x18] + adds r0, 0x24 + ldr r2, [sp] + adds r0, r2 + movs r1, 0 + strh r1, [r0] + adds r0, r7, 0 + b _0803A652 + .align 2, 0 +_0803A630: .4byte gUnknown_2023BC4 +_0803A634: .4byte gUnknown_2023E0C +_0803A638: .4byte gUnknown_2023DE4 +_0803A63C: .4byte gUnknown_2023FE8 +_0803A640: .4byte gUnknown_2023FF4 +_0803A644: + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x3 + bgt _0803A650 + b _0803A254 +_0803A650: + movs r0, 0 +_0803A652: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_803A1F4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim.s b/asm/battle_anim.s new file mode 100644 index 000000000..54284ed8c --- /dev/null +++ b/asm/battle_anim.s @@ -0,0 +1,4107 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80724C0 +sub_80724C0: @ 80724C0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08072554 @ =gUnknown_2037EE0 + movs r1, 0 + strb r1, [r0] + ldr r0, _08072558 @ =gUnknown_2037EE1 + strb r1, [r0] + ldr r0, _0807255C @ =gUnknown_2037EE2 + strb r1, [r0] + ldr r0, _08072560 @ =gUnknown_2037EE3 + strb r1, [r0] + ldr r0, _08072564 @ =gUnknown_2037EE4 + movs r1, 0 + str r1, [r0] + ldr r0, _08072568 @ =gUnknown_2037EE8 + str r1, [r0] + ldr r0, _0807256C @ =gUnknown_2037EEC + movs r2, 0 + strh r1, [r0] + ldr r0, _08072570 @ =gUnknown_2037EFE + strb r2, [r0] + ldr r4, _08072574 @ =gUnknown_2037F14 + ldr r5, _08072578 @ =gUnknown_2037F16 + ldr r6, _0807257C @ =gUnknown_2037F17 + ldr r7, _08072580 @ =gUnknown_2037F18 + ldr r0, _08072584 @ =gUnknown_2037F1A + mov r12, r0 + ldr r1, _08072588 @ =gUnknown_2037F1B + mov r8, r1 + ldr r0, _0807258C @ =gUnknown_2037F24 + mov r9, r0 + ldr r1, _08072590 @ =0x0000ffff + adds r3, r1, 0 + ldr r1, _08072594 @ =gUnknown_2037EEE + movs r2, 0x7 +_0807250A: + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _0807250A + ldr r1, _08072598 @ =gUnknown_2037F02 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0xE +_08072520: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _08072520 + movs r1, 0 + movs r0, 0xFF + strb r0, [r4] + movs r0, 0x1 + negs r0, r0 + strb r0, [r4, 0x1] + strb r1, [r5] + strb r1, [r6] + movs r0, 0 + strh r1, [r7] + mov r1, r12 + strb r0, [r1] + mov r1, r8 + strb r0, [r1] + mov r1, r9 + strb r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072554: .4byte gUnknown_2037EE0 +_08072558: .4byte gUnknown_2037EE1 +_0807255C: .4byte gUnknown_2037EE2 +_08072560: .4byte gUnknown_2037EE3 +_08072564: .4byte gUnknown_2037EE4 +_08072568: .4byte gUnknown_2037EE8 +_0807256C: .4byte gUnknown_2037EEC +_08072570: .4byte gUnknown_2037EFE +_08072574: .4byte gUnknown_2037F14 +_08072578: .4byte gUnknown_2037F16 +_0807257C: .4byte gUnknown_2037F17 +_08072580: .4byte gUnknown_2037F18 +_08072584: .4byte gUnknown_2037F1A +_08072588: .4byte gUnknown_2037F1B +_0807258C: .4byte gUnknown_2037F24 +_08072590: .4byte 0x0000ffff +_08072594: .4byte gUnknown_2037EEE +_08072598: .4byte gUnknown_2037F02 + thumb_func_end sub_80724C0 + + thumb_func_start sub_807259C +sub_807259C: @ 807259C + push {lr} + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _080725C0 @ =gUnknown_2037F1A + ldr r0, _080725C4 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r2] + ldr r2, _080725C8 @ =gUnknown_2037F1B + ldr r0, _080725CC @ =gUnknown_2023D6C + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _080725D0 @ =gUnknown_81C68F4 + movs r2, 0x1 + bl sub_80725D4 + pop {r0} + bx r0 + .align 2, 0 +_080725C0: .4byte gUnknown_2037F1A +_080725C4: .4byte gUnknown_2023D6B +_080725C8: .4byte gUnknown_2037F1B +_080725CC: .4byte gUnknown_2023D6C +_080725D0: .4byte gUnknown_81C68F4 + thumb_func_end sub_807259C + + thumb_func_start sub_80725D4 +sub_80725D4: @ 80725D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + bl sub_80767F0 + movs r0, 0 + bl sub_804828C + movs r4, 0 + ldr r6, _08072618 @ =gUnknown_2023BCE + movs r7, 0x64 + ldr r5, _0807261C @ =gUnknown_2037F1C +_08072600: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08072624 + ldrh r0, [r6] + muls r0, r7 + ldr r1, _08072620 @ =gUnknown_202402C + b _0807262A + .align 2, 0 +_08072618: .4byte gUnknown_2023BCE +_0807261C: .4byte gUnknown_2037F1C +_08072620: .4byte gUnknown_202402C +_08072624: + ldrh r0, [r6] + muls r0, r7 + ldr r1, _0807264C @ =gUnknown_2024284 +_0807262A: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + strh r0, [r5] + adds r6, 0x2 + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _08072600 + mov r0, r9 + cmp r0, 0 + bne _08072654 + ldr r0, _08072650 @ =gUnknown_2037F18 + mov r1, r9 + b _08072658 + .align 2, 0 +_0807264C: .4byte gUnknown_2024284 +_08072650: .4byte gUnknown_2037F18 +_08072654: + ldr r0, _080726C0 @ =gUnknown_2037F18 + mov r1, r8 +_08072658: + strh r1, [r0] + ldr r4, _080726C4 @ =gUnknown_2037F14 + ldr r5, _080726C8 @ =gUnknown_2037ED4 + mov r0, r8 + lsls r3, r0, 2 + ldr r6, _080726CC @ =gUnknown_2037EE1 + ldr r1, _080726D0 @ =gUnknown_2037EE0 + mov r12, r1 + ldr r0, _080726D4 @ =gUnknown_2037EDC + mov r10, r0 + ldr r7, _080726D8 @ =sub_8072828 + ldr r1, _080726DC @ =gUnknown_2037F02 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0xE +_08072676: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _08072676 + movs r0, 0xFF + strb r0, [r4] + movs r0, 0x1 + negs r0, r0 + strb r0, [r4, 0x1] + ldr r1, [sp] + adds r0, r3, r1 + ldr r0, [r0] + str r0, [r5] + movs r0, 0x1 + strb r0, [r6] + movs r0, 0 + mov r1, r12 + strb r0, [r1] + mov r0, r10 + str r7, [r0] + ldr r1, _080726E0 @ =0x0000ffff + adds r2, r1, 0 + ldr r1, _080726E4 @ =gUnknown_2037EEE + movs r4, 0x7 +_080726A6: + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + adds r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080726A6 + mov r0, r9 + cmp r0, 0 + beq _08072706 + movs r4, 0 + ldr r2, _080726E8 @ =gUnknown_81C68EC + b _080726EE + .align 2, 0 +_080726C0: .4byte gUnknown_2037F18 +_080726C4: .4byte gUnknown_2037F14 +_080726C8: .4byte gUnknown_2037ED4 +_080726CC: .4byte gUnknown_2037EE1 +_080726D0: .4byte gUnknown_2037EE0 +_080726D4: .4byte gUnknown_2037EDC +_080726D8: .4byte sub_8072828 +_080726DC: .4byte gUnknown_2037F02 +_080726E0: .4byte 0x0000ffff +_080726E4: .4byte gUnknown_2037EEE +_080726E8: .4byte gUnknown_81C68EC +_080726EC: + adds r4, 0x1 +_080726EE: + lsls r0, r4, 1 + adds r0, r2 + ldrh r0, [r0] + ldr r1, _08072728 @ =0x0000ffff + cmp r0, r1 + beq _08072706 + cmp r8, r0 + bne _080726EC + ldr r0, _0807272C @ =gMPlay_BGM + movs r2, 0x80 + bl m4aMPlayVolumeControl +_08072706: + ldr r0, _08072730 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _08072734 @ =gUnknown_2022986 + strh r1, [r0] + ldr r0, _08072738 @ =gUnknown_2022988 + strh r1, [r0] + ldr r0, _0807273C @ =gUnknown_202298A + strh r1, [r0] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072728: .4byte 0x0000ffff +_0807272C: .4byte gMPlay_BGM +_08072730: .4byte gUnknown_2022984 +_08072734: .4byte gUnknown_2022986 +_08072738: .4byte gUnknown_2022988 +_0807273C: .4byte gUnknown_202298A + thumb_func_end sub_80725D4 + + thumb_func_start sub_8072740 +sub_8072740: @ 8072740 + push {r4,lr} + adds r4, r0, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + ldr r1, _0807275C @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807275C: .4byte gUnknown_2037EE2 + thumb_func_end sub_8072740 + + thumb_func_start sub_8072760 +sub_8072760: @ 8072760 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r1, _08072778 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08072778: .4byte gUnknown_2037EE2 + thumb_func_end sub_8072760 + + thumb_func_start sub_807277C +sub_807277C: @ 807277C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r1, _08072794 @ =gUnknown_2037EE3 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08072794: .4byte gUnknown_2037EE3 + thumb_func_end sub_807277C + + thumb_func_start sub_8072798 +sub_8072798: @ 8072798 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r4, _080727B0 @ =0x0000ffff + ldr r1, _080727B4 @ =gUnknown_2037EEE +_080727A4: + ldrh r0, [r1] + cmp r0, r4 + bne _080727B8 + strh r3, [r1] + b _080727C0 + .align 2, 0 +_080727B0: .4byte 0x0000ffff +_080727B4: .4byte gUnknown_2037EEE +_080727B8: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x7 + ble _080727A4 +_080727C0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8072798 + + thumb_func_start sub_80727C8 +sub_80727C8: @ 80727C8 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r0, _080727E4 @ =0x0000ffff + adds r4, r0, 0 + ldr r1, _080727E8 @ =gUnknown_2037EEE +_080727D6: + ldrh r0, [r1] + cmp r0, r3 + bne _080727EC + orrs r0, r4 + strh r0, [r1] + b _080727F4 + .align 2, 0 +_080727E4: .4byte 0x0000ffff +_080727E8: .4byte gUnknown_2037EEE +_080727EC: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x7 + ble _080727D6 +_080727F4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80727C8 + + thumb_func_start sub_80727FC +sub_80727FC: @ 80727FC + push {lr} + ldr r2, _08072814 @ =gUnknown_2037EE0 + ldrb r1, [r2] + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r0, 0 + bgt _08072820 + ldr r0, _08072818 @ =gUnknown_2037EDC + ldr r1, _0807281C @ =sub_8072828 + str r1, [r0] + movs r0, 0 + b _08072822 + .align 2, 0 +_08072814: .4byte gUnknown_2037EE0 +_08072818: .4byte gUnknown_2037EDC +_0807281C: .4byte sub_8072828 +_08072820: + subs r0, r1, 0x1 +_08072822: + strb r0, [r2] + pop {r0} + bx r0 + thumb_func_end sub_80727FC + + thumb_func_start sub_8072828 +sub_8072828: @ 8072828 + push {r4,lr} + ldr r4, _08072858 @ =gUnknown_83ADF5C +_0807282C: + ldr r0, _0807285C @ =gUnknown_2037ED4 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08072860 @ =gUnknown_2037EE0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _08072850 + ldr r0, _08072864 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807282C +_08072850: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08072858: .4byte gUnknown_83ADF5C +_0807285C: .4byte gUnknown_2037ED4 +_08072860: .4byte gUnknown_2037EE0 +_08072864: .4byte gUnknown_2037EE1 + thumb_func_end sub_8072828 + + thumb_func_start sub_8072868 +sub_8072868: @ 8072868 + push {r4-r6,lr} + ldr r6, _080728B4 @ =gUnknown_2037ED4 + ldr r0, [r6] + adds r1, r0, 0x1 + str r1, [r6] + ldrb r4, [r0, 0x1] + ldrb r0, [r1, 0x1] + lsls r0, 8 + orrs r4, r0 + lsls r5, r4, 3 + ldr r0, _080728B8 @ =gUnknown_8399388 + adds r0, r5, r0 + bl sub_800F034 + ldr r0, _080728BC @ =gUnknown_8399C90 + adds r5, r0 + adds r0, r5, 0 + bl sub_800F078 + ldr r0, [r6] + adds r0, 0x2 + str r0, [r6] + ldr r0, _080728C0 @ =0xffffd8f0 + adds r4, r0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + bl sub_8072798 + ldr r1, _080728C4 @ =gUnknown_2037EE0 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _080728C8 @ =gUnknown_2037EDC + ldr r0, _080728CC @ =sub_80727FC + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080728B4: .4byte gUnknown_2037ED4 +_080728B8: .4byte gUnknown_8399388 +_080728BC: .4byte gUnknown_8399C90 +_080728C0: .4byte 0xffffd8f0 +_080728C4: .4byte gUnknown_2037EE0 +_080728C8: .4byte gUnknown_2037EDC +_080728CC: .4byte sub_80727FC + thumb_func_end sub_8072868 + + thumb_func_start sub_80728D0 +sub_80728D0: @ 80728D0 + push {r4-r6,lr} + ldr r6, _08072910 @ =gUnknown_2037ED4 + ldr r0, [r6] + adds r1, r0, 0x1 + str r1, [r6] + ldrb r4, [r0, 0x1] + ldrb r0, [r1, 0x1] + lsls r0, 8 + orrs r4, r0 + ldr r1, _08072914 @ =gUnknown_83ACC08 + ldr r0, _08072918 @ =0xffffd8f0 + adds r4, r0 + lsls r0, r4, 3 + adds r0, r1 + ldrh r5, [r0, 0x6] + adds r0, r5, 0 + bl sub_800874C + adds r0, r5, 0 + bl sub_8008A30 + ldr r0, [r6] + adds r0, 0x2 + str r0, [r6] + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + bl sub_80727C8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08072910: .4byte gUnknown_2037ED4 +_08072914: .4byte gUnknown_83ACC08 +_08072918: .4byte 0xffffd8f0 + thumb_func_end sub_80728D0 + + thumb_func_start sub_807291C +sub_807291C: @ 807291C + push {r4-r7,lr} + ldr r5, _08072984 @ =gUnknown_2037ED4 + ldr r1, [r5] + adds r3, r1, 0x1 + str r3, [r5] + ldrb r2, [r1, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r3, 0x2] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r3, 0x3] + lsls r0, 24 + adds r7, r2, r0 + adds r0, r1, 0x5 + str r0, [r5] + ldrb r4, [r1, 0x5] + adds r0, r1, 0x6 + str r0, [r5] + ldrb r0, [r1, 0x6] + adds r1, 0x7 + str r1, [r5] + cmp r0, 0 + beq _0807296C + adds r6, r5, 0 + ldr r5, _08072988 @ =gUnknown_2037F02 + adds r3, r0, 0 +_08072954: + ldr r2, [r6] + ldrb r1, [r2] + ldrb r0, [r2, 0x1] + lsls r0, 8 + orrs r1, r0 + strh r1, [r5] + adds r2, 0x2 + str r2, [r6] + adds r5, 0x2 + subs r3, 0x1 + cmp r3, 0 + bne _08072954 +_0807296C: + movs r0, 0x80 + ands r0, r4 + cmp r0, 0 + beq _0807299C + movs r0, 0x80 + eors r4, r0 + cmp r4, 0x3F + bls _0807298C + adds r0, r4, 0 + subs r0, 0x40 + b _0807298E + .align 2, 0 +_08072984: .4byte gUnknown_2037ED4 +_08072988: .4byte gUnknown_2037F02 +_0807298C: + negs r0, r4 +_0807298E: + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08072998 @ =gUnknown_2037F1B + b _080729AE + .align 2, 0 +_08072998: .4byte gUnknown_2037F1B +_0807299C: + cmp r4, 0x3F + bls _080729A6 + adds r0, r4, 0 + subs r0, 0x40 + b _080729A8 +_080729A6: + negs r0, r4 +_080729A8: + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08072A04 @ =gUnknown_2037F1A +_080729AE: + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 24 + asrs r1, 24 + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, 0x2 + bgt _080729CC + movs r6, 0x3 +_080729CC: + ldr r5, _08072A08 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, r6, 24 + lsrs r3, 24 + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_80071EC + ldr r1, _08072A0C @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072A04: .4byte gUnknown_2037F1A +_08072A08: .4byte gUnknown_2037F1B +_08072A0C: .4byte gUnknown_2037EE2 + thumb_func_end sub_807291C + + thumb_func_start sub_8072A10 +sub_8072A10: @ 8072A10 + push {r4-r7,lr} + ldr r4, _08072A80 @ =gUnknown_2037ED4 + ldr r1, [r4] + adds r3, r1, 0x1 + str r3, [r4] + ldrb r2, [r1, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r3, 0x2] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r3, 0x3] + lsls r0, 24 + adds r6, r2, r0 + adds r0, r1, 0x5 + str r0, [r4] + ldrb r7, [r1, 0x5] + adds r0, r1, 0x6 + str r0, [r4] + ldrb r0, [r1, 0x6] + adds r1, 0x7 + str r1, [r4] + cmp r0, 0 + beq _08072A60 + adds r5, r4, 0 + ldr r4, _08072A84 @ =gUnknown_2037F02 + adds r3, r0, 0 +_08072A48: + ldr r2, [r5] + ldrb r1, [r2] + ldrb r0, [r2, 0x1] + lsls r0, 8 + orrs r1, r0 + strh r1, [r4] + adds r2, 0x2 + str r2, [r5] + adds r4, 0x2 + subs r3, 0x1 + cmp r3, 0 + bne _08072A48 +_08072A60: + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r6 + ldr r1, _08072A88 @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072A80: .4byte gUnknown_2037ED4 +_08072A84: .4byte gUnknown_2037F02 +_08072A88: .4byte gUnknown_2037EE2 + thumb_func_end sub_8072A10 + + thumb_func_start sub_8072A8C +sub_8072A8C: @ 8072A8C + push {r4,lr} + ldr r1, _08072ABC @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r2, r0, 0x1 + str r2, [r1] + ldr r3, _08072AC0 @ =gUnknown_2037EE0 + ldrb r0, [r0, 0x1] + strb r0, [r3] + lsls r0, 24 + cmp r0, 0 + bne _08072AAA + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + strb r0, [r3] +_08072AAA: + adds r0, r2, 0x1 + str r0, [r1] + ldr r1, _08072AC4 @ =gUnknown_2037EDC + ldr r0, _08072AC8 @ =sub_80727FC + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08072ABC: .4byte gUnknown_2037ED4 +_08072AC0: .4byte gUnknown_2037EE0 +_08072AC4: .4byte gUnknown_2037EDC +_08072AC8: .4byte sub_80727FC + thumb_func_end sub_8072A8C + + thumb_func_start sub_8072ACC +sub_8072ACC: @ 8072ACC + push {lr} + ldr r0, _08072AE4 @ =gUnknown_2037EE2 + ldrb r2, [r0] + cmp r2, 0 + bne _08072AF0 + ldr r0, _08072AE8 @ =gUnknown_2037ED4 + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + ldr r0, _08072AEC @ =gUnknown_2037EE0 + strb r2, [r0] + b _08072AF6 + .align 2, 0 +_08072AE4: .4byte gUnknown_2037EE2 +_08072AE8: .4byte gUnknown_2037ED4 +_08072AEC: .4byte gUnknown_2037EE0 +_08072AF0: + ldr r1, _08072AFC @ =gUnknown_2037EE0 + movs r0, 0x1 + strb r0, [r1] +_08072AF6: + pop {r0} + bx r0 + .align 2, 0 +_08072AFC: .4byte gUnknown_2037EE0 + thumb_func_end sub_8072ACC + + thumb_func_start nullsub_41 +nullsub_41: @ 8072B00 + bx lr + thumb_func_end nullsub_41 + + thumb_func_start nullsub_42 +nullsub_42: @ 8072B04 + bx lr + thumb_func_end nullsub_42 + + thumb_func_start sub_8072B08 +sub_8072B08: @ 8072B08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r0, 0 + mov r8, r0 + ldr r0, _08072B38 @ =gUnknown_2037EE2 + ldrb r0, [r0] + cmp r0, 0 + bne _08072B30 + ldr r0, _08072B3C @ =gUnknown_2037EE3 + ldrb r0, [r0] + cmp r0, 0 + bne _08072B30 + ldr r1, _08072B40 @ =gUnknown_2037F14 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08072B30 + ldrb r0, [r1, 0x1] + cmp r0, 0xFF + beq _08072B48 +_08072B30: + ldr r1, _08072B44 @ =gUnknown_2037F12 + movs r0, 0 + strh r0, [r1] + b _08072B62 + .align 2, 0 +_08072B38: .4byte gUnknown_2037EE2 +_08072B3C: .4byte gUnknown_2037EE3 +_08072B40: .4byte gUnknown_2037F14 +_08072B44: .4byte gUnknown_2037F12 +_08072B48: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _08072B80 + ldr r1, _08072B6C @ =gUnknown_2037F12 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5A + bhi _08072B74 +_08072B62: + ldr r1, _08072B70 @ =gUnknown_2037EE0 + movs r0, 0x1 + strb r0, [r1] + b _08072BDC + .align 2, 0 +_08072B6C: .4byte gUnknown_2037F12 +_08072B70: .4byte gUnknown_2037EE0 +_08072B74: + ldr r0, _08072BE8 @ =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, _08072BEC @ =gMPlay_SE2 + bl m4aMPlayStop +_08072B80: + ldr r1, _08072BF0 @ =gUnknown_2037F12 + movs r0, 0 + strh r0, [r1] + movs r5, 0 + ldr r7, _08072BF4 @ =0x0000ffff + ldr r6, _08072BF8 @ =gUnknown_83ACC08 + ldr r4, _08072BFC @ =gUnknown_2037EEE +_08072B8E: + ldrh r0, [r4] + cmp r0, r7 + beq _08072BB2 + lsls r0, 3 + adds r0, r6 + ldrh r0, [r0, 0x6] + bl sub_800874C + ldrh r0, [r4] + lsls r0, 3 + adds r0, r6 + ldrh r0, [r0, 0x6] + bl sub_8008A30 + ldrh r1, [r4] + adds r0, r7, 0 + orrs r0, r1 + strh r0, [r4] +_08072BB2: + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x7 + ble _08072B8E + mov r1, r8 + cmp r1, 0 + bne _08072BDC + ldr r0, _08072C00 @ =gMPlay_BGM + ldr r1, _08072BF4 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + bl sub_80767F0 + movs r0, 0x1 + bl sub_804828C + ldr r0, _08072C04 @ =gUnknown_2037EE1 + mov r1, r8 + strb r1, [r0] +_08072BDC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072BE8: .4byte gMPlay_SE1 +_08072BEC: .4byte gMPlay_SE2 +_08072BF0: .4byte gUnknown_2037F12 +_08072BF4: .4byte 0x0000ffff +_08072BF8: .4byte gUnknown_83ACC08 +_08072BFC: .4byte gUnknown_2037EEE +_08072C00: .4byte gMPlay_BGM +_08072C04: .4byte gUnknown_2037EE1 + thumb_func_end sub_8072B08 + + thumb_func_start sub_8072C08 +sub_8072C08: @ 8072C08 + push {r4,lr} + ldr r4, _08072C2C @ =gUnknown_2037ED4 + ldr r0, [r4] + adds r1, r0, 0x1 + str r1, [r4] + ldrb r0, [r0, 0x1] + ldrb r1, [r1, 0x1] + lsls r1, 8 + orrs r0, r1 + bl sub_80722CC + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08072C2C: .4byte gUnknown_2037ED4 + thumb_func_end sub_8072C08 + + thumb_func_start sub_8072C30 +sub_8072C30: @ 8072C30 + push {r4-r7,lr} + ldr r0, _08072C44 @ =gUnknown_2037ED4 + ldr r2, [r0] + adds r1, r2, 0x1 + str r1, [r0] + ldrb r6, [r2, 0x1] + cmp r6, 0 + bne _08072C48 + movs r6, 0x2 + b _08072C52 + .align 2, 0 +_08072C44: .4byte gUnknown_2037ED4 +_08072C48: + cmp r6, 0x1 + bne _08072C4E + movs r6, 0x3 +_08072C4E: + cmp r6, 0 + beq _08072C56 +_08072C52: + cmp r6, 0x2 + bne _08072C60 +_08072C56: + ldr r0, _08072C5C @ =gUnknown_2037F1A + b _08072C62 + .align 2, 0 +_08072C5C: .4byte gUnknown_2037F1A +_08072C60: + ldr r0, _08072CD8 @ =gUnknown_2037F1B +_08072C62: + ldrb r5, [r0] + adds r0, r5, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08072D12 + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + movs r7, 0x1 + cmp r0, 0x1 + bhi _08072C88 + movs r7, 0 +_08072C88: + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_8072E48 + ldr r0, _08072CDC @ =gUnknown_2023D44 + adds r0, r5, r0 + ldrb r4, [r0] + ldr r0, _08072CE0 @ =sub_8073174 + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _08072CE4 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r2, r0, r1 + strh r4, [r2, 0x8] + ldr r1, _08072CE8 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x24] + ldrh r4, [r0, 0x20] + adds r1, r4 + strh r1, [r2, 0xA] + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + strh r1, [r2, 0xC] + cmp r7, 0 + bne _08072CF4 + ldr r0, _08072CEC @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r2, 0xE] + ldr r0, _08072CF0 @ =gUnknown_202297A + b _08072CFC + .align 2, 0 +_08072CD8: .4byte gUnknown_2037F1B +_08072CDC: .4byte gUnknown_2023D44 +_08072CE0: .4byte sub_8073174 +_08072CE4: .4byte gUnknown_3005090 +_08072CE8: .4byte gUnknown_202063C +_08072CEC: .4byte gUnknown_2022978 +_08072CF0: .4byte gUnknown_202297A +_08072CF4: + ldr r0, _08072D8C @ =gUnknown_202297C + ldrh r0, [r0] + strh r0, [r2, 0xE] + ldr r0, _08072D90 @ =gUnknown_202297E +_08072CFC: + ldrh r0, [r0] + strh r0, [r2, 0x10] + ldr r0, _08072D94 @ =gUnknown_3005090 + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 3 + adds r1, r0 + strh r7, [r1, 0x12] + strh r5, [r1, 0x14] + ldr r0, _08072D98 @ =gUnknown_2037F14 + strb r3, [r0] +_08072D12: + movs r0, 0x2 + eors r5, r0 + cmp r6, 0x1 + bls _08072DCE + adds r0, r5, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08072DCE + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + movs r7, 0x1 + cmp r0, 0x1 + bhi _08072D3E + movs r7, 0 +_08072D3E: + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_8072E48 + ldr r0, _08072D9C @ =gUnknown_2023D44 + adds r0, r5, r0 + ldrb r4, [r0] + ldr r0, _08072DA0 @ =sub_8073174 + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _08072D94 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r2, r0, r1 + strh r4, [r2, 0x8] + ldr r1, _08072DA4 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x24] + ldrh r4, [r0, 0x20] + adds r1, r4 + strh r1, [r2, 0xA] + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + strh r1, [r2, 0xC] + cmp r7, 0 + bne _08072DB0 + ldr r0, _08072DA8 @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r2, 0xE] + ldr r0, _08072DAC @ =gUnknown_202297A + b _08072DB8 + .align 2, 0 +_08072D8C: .4byte gUnknown_202297C +_08072D90: .4byte gUnknown_202297E +_08072D94: .4byte gUnknown_3005090 +_08072D98: .4byte gUnknown_2037F14 +_08072D9C: .4byte gUnknown_2023D44 +_08072DA0: .4byte sub_8073174 +_08072DA4: .4byte gUnknown_202063C +_08072DA8: .4byte gUnknown_2022978 +_08072DAC: .4byte gUnknown_202297A +_08072DB0: + ldr r0, _08072DDC @ =gUnknown_202297C + ldrh r0, [r0] + strh r0, [r2, 0xE] + ldr r0, _08072DE0 @ =gUnknown_202297E +_08072DB8: + ldrh r0, [r0] + strh r0, [r2, 0x10] + ldr r0, _08072DE4 @ =gUnknown_3005090 + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 3 + adds r1, r0 + strh r7, [r1, 0x12] + strh r5, [r1, 0x14] + ldr r0, _08072DE8 @ =gUnknown_2037F14 + strb r3, [r0, 0x1] +_08072DCE: + ldr r1, _08072DEC @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072DDC: .4byte gUnknown_202297C +_08072DE0: .4byte gUnknown_202297E +_08072DE4: .4byte gUnknown_3005090 +_08072DE8: .4byte gUnknown_2037F14 +_08072DEC: .4byte gUnknown_2037ED4 + thumb_func_end sub_8072C30 + + thumb_func_start sub_8072DF0 +sub_8072DF0: @ 8072DF0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08072E40 + ldr r0, _08072E34 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r4, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08072E30 + ldr r2, _08072E38 @ =gUnknown_202063C + ldr r0, _08072E3C @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + blt _08072E40 +_08072E30: + movs r0, 0x1 + b _08072E42 + .align 2, 0 +_08072E34: .4byte gUnknown_2024018 +_08072E38: .4byte gUnknown_202063C +_08072E3C: .4byte gUnknown_2023D44 +_08072E40: + movs r0, 0 +_08072E42: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8072DF0 + + thumb_func_start sub_8072E48 +sub_8072E48: @ 8072E48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r4, 0 + beq _08072E5E + b _08072F84 +_08072E5E: + ldr r1, _08072F5C @ =0x06004000 + movs r2, 0x80 + lsls r2, 6 + movs r0, 0 + movs r3, 0x1 + bl sub_8000F44 + ldr r1, _08072F60 @ =0x0600e000 + movs r2, 0x80 + lsls r2, 5 + movs r0, 0 + movs r3, 0x1 + bl sub_8000F44 + add r0, sp, 0x10 + bl sub_80752A0 + add r0, sp, 0x20 + strh r4, [r0] + ldr r1, [sp, 0x10] + ldr r2, _08072F64 @ =0x01000800 + bl CpuSet + mov r0, sp + adds r0, 0x22 + strh r4, [r0] + ldr r1, [sp, 0x14] + ldr r2, _08072F68 @ =0x01000400 + bl CpuSet + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80BC1F8 + ldr r2, _08072F6C @ =gUnknown_2023D44 + adds r2, r7, r2 + ldrb r0, [r2] + ldr r5, _08072F70 @ =gUnknown_2022978 + ldr r3, _08072F74 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r1, 0x24] + ldrh r4, [r1, 0x20] + adds r0, r4 + negs r0, r0 + adds r0, 0x20 + strh r0, [r5] + ldr r4, _08072F78 @ =gUnknown_202297A + ldrh r0, [r1, 0x26] + ldrh r1, [r1, 0x22] + adds r0, r1 + negs r0, r0 + adds r0, 0x20 + strh r0, [r4] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrh r1, [r5] + movs r0, 0x14 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x16 + bl sub_8000A38 + lsls r4, r7, 5 + ldr r0, _08072F7C @ =gUnknown_20373F8 + adds r4, r0 + add r0, sp, 0x10 + ldrb r1, [r0, 0x8] + lsls r1, 4 + adds r0, r4, 0 + movs r2, 0x20 + bl sub_80703EC + add r0, sp, 0x10 + ldrb r1, [r0, 0x8] + lsls r1, 5 + movs r0, 0xA0 + lsls r0, 19 + adds r1, r0 + ldr r2, _08072F80 @ =0x04000008 + adds r0, r4, 0 + bl CpuSet + adds r0, r7, 0 + bl sub_80751D8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + add r0, sp, 0x10 + ldrb r0, [r0, 0x8] + str r0, [sp] + ldr r0, [sp, 0x10] + str r0, [sp, 0x4] + ldr r0, [sp, 0x14] + str r0, [sp, 0x8] + add r0, sp, 0x10 + ldrh r0, [r0, 0xA] + str r0, [sp, 0xC] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BCEF4 + b _08073086 + .align 2, 0 +_08072F5C: .4byte 0x06004000 +_08072F60: .4byte 0x0600e000 +_08072F64: .4byte 0x01000800 +_08072F68: .4byte 0x01000400 +_08072F6C: .4byte gUnknown_2023D44 +_08072F70: .4byte gUnknown_2022978 +_08072F74: .4byte gUnknown_202063C +_08072F78: .4byte gUnknown_202297A +_08072F7C: .4byte gUnknown_20373F8 +_08072F80: .4byte 0x04000008 +_08072F84: + ldr r1, _08073094 @ =0x06006000 + movs r2, 0x80 + lsls r2, 6 + movs r0, 0 + movs r3, 0x1 + bl sub_8000F44 + ldr r1, _08073098 @ =0x0600f000 + movs r6, 0x80 + lsls r6, 5 + movs r0, 0 + adds r2, r6, 0 + movs r3, 0x1 + bl sub_8000F44 + add r0, sp, 0x10 + movs r1, 0x2 + bl sub_80752C8 + add r0, sp, 0x24 + movs r4, 0 + strh r4, [r0] + ldr r1, [sp, 0x10] + adds r1, r6 + ldr r2, _0807309C @ =0x01000800 + bl CpuSet + mov r0, sp + adds r0, 0x26 + strh r4, [r0] + ldr r1, [sp, 0x14] + movs r2, 0x80 + lsls r2, 4 + mov r8, r2 + add r1, r8 + ldr r2, _080730A0 @ =0x01000400 + bl CpuSet + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_80BC1F8 + ldr r2, _080730A4 @ =gUnknown_2023D44 + adds r2, r7, r2 + ldrb r0, [r2] + ldr r5, _080730A8 @ =gUnknown_202297C + ldr r3, _080730AC @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r1, 0x24] + ldrh r4, [r1, 0x20] + adds r0, r4 + negs r0, r0 + adds r0, 0x20 + strh r0, [r5] + ldr r4, _080730B0 @ =gUnknown_202297E + ldrh r0, [r1, 0x26] + ldrh r1, [r1, 0x22] + adds r0, r1 + negs r0, r0 + adds r0, 0x20 + strh r0, [r4] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrh r1, [r5] + movs r0, 0x18 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x1A + bl sub_8000A38 + lsls r4, r7, 5 + ldr r0, _080730B4 @ =gUnknown_20373F8 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x90 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080730B8 @ =0x05000120 + ldr r2, _080730BC @ =0x04000008 + adds r0, r4, 0 + bl CpuSet + adds r0, r7, 0 + bl sub_80751D8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + add r0, sp, 0x10 + ldrb r0, [r0, 0x8] + str r0, [sp] + ldr r0, [sp, 0x10] + adds r0, r6 + str r0, [sp, 0x4] + ldr r0, [sp, 0x14] + add r0, r8 + str r0, [sp, 0x8] + add r0, sp, 0x10 + ldrh r0, [r0, 0xA] + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_80BCEF4 +_08073086: + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073094: .4byte 0x06006000 +_08073098: .4byte 0x0600f000 +_0807309C: .4byte 0x01000800 +_080730A0: .4byte 0x01000400 +_080730A4: .4byte gUnknown_2023D44 +_080730A8: .4byte gUnknown_202297C +_080730AC: .4byte gUnknown_202063C +_080730B0: .4byte gUnknown_202297E +_080730B4: .4byte gUnknown_20373F8 +_080730B8: .4byte 0x05000120 +_080730BC: .4byte 0x04000008 + thumb_func_end sub_8072E48 + + thumb_func_start sub_80730C0 +sub_80730C0: @ 80730C0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r12, r1 + adds r7, r2, 0 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r3, 24 + movs r0, 0x40 + mov r9, r0 + cmp r3, 0 + bne _080730DE + movs r1, 0x20 + mov r9, r1 +_080730DE: + lsls r0, r6, 28 + lsrs r6, r0, 16 + movs r0, 0 + cmp r0, r9 + bcs _08073116 + ldr r1, _08073124 @ =0x00000fff + mov r8, r1 +_080730EC: + movs r3, 0 + adds r5, r0, 0x1 + lsls r4, r0, 5 +_080730F2: + adds r1, r4, r3 + lsls r1, 1 + add r1, r12 + ldrh r2, [r1] + mov r0, r8 + ands r0, r2 + orrs r0, r6 + adds r0, r7 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1F + bls _080730F2 + lsls r0, r5, 24 + lsrs r0, 24 + cmp r0, r9 + bcc _080730EC +_08073116: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073124: .4byte 0x00000fff + thumb_func_end sub_80730C0 + + thumb_func_start sub_8073128 +sub_8073128: @ 8073128 + push {r4,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, sp + bl sub_80752A0 + cmp r4, 0 + bne _08073154 + movs r0, 0x1 + bl sub_8075358 + ldr r0, _0807314C @ =gUnknown_2022978 + strh r4, [r0] + ldr r0, _08073150 @ =gUnknown_202297A + strh r4, [r0] + b _08073164 + .align 2, 0 +_0807314C: .4byte gUnknown_2022978 +_08073150: .4byte gUnknown_202297A +_08073154: + movs r0, 0x2 + bl sub_8075358 + ldr r0, _0807316C @ =gUnknown_202297C + movs r1, 0 + strh r1, [r0] + ldr r0, _08073170 @ =gUnknown_202297E + strh r1, [r0] +_08073164: + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807316C: .4byte gUnknown_202297C +_08073170: .4byte gUnknown_202297E + thumb_func_end sub_8073128 + + thumb_func_start sub_8073174 +sub_8073174: @ 8073174 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080731F0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrb r4, [r5, 0x8] + ldrb r6, [r5, 0x14] + mov r0, sp + bl sub_80752A0 + ldr r0, _080731F4 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r2, [r1, 0x24] + ldrh r0, [r1, 0x20] + adds r2, r0 + ldrh r0, [r5, 0xA] + subs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r2, [r1, 0x26] + ldrh r1, [r1, 0x22] + adds r2, r1 + ldrh r0, [r5, 0xC] + subs r0, r2 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x12 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0807320C + ldr r1, _080731F8 @ =gUnknown_2022978 + lsls r0, r3, 16 + asrs r0, 16 + ldrh r3, [r5, 0xE] + adds r0, r3 + strh r0, [r1] + ldr r1, _080731FC @ =gUnknown_202297A + lsls r0, r2, 16 + asrs r0, 16 + ldrh r5, [r5, 0x10] + adds r0, r5 + strh r0, [r1] + lsls r0, r6, 5 + ldr r2, _08073200 @ =gUnknown_20377F8 + adds r0, r2 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 5 + ldr r3, _08073204 @ =0xfffffe00 + adds r2, r3 + adds r1, r2 + ldr r2, _08073208 @ =0x04000008 + bl CpuSet + b _08073232 + .align 2, 0 +_080731F0: .4byte gUnknown_3005090 +_080731F4: .4byte gUnknown_202063C +_080731F8: .4byte gUnknown_2022978 +_080731FC: .4byte gUnknown_202297A +_08073200: .4byte gUnknown_20377F8 +_08073204: .4byte 0xfffffe00 +_08073208: .4byte 0x04000008 +_0807320C: + ldr r1, _0807323C @ =gUnknown_202297C + lsls r0, r3, 16 + asrs r0, 16 + ldrh r3, [r5, 0xE] + adds r0, r3 + strh r0, [r1] + ldr r1, _08073240 @ =gUnknown_202297E + lsls r0, r2, 16 + asrs r0, 16 + ldrh r5, [r5, 0x10] + adds r0, r5 + strh r0, [r1] + lsls r0, r6, 5 + ldr r1, _08073244 @ =gUnknown_20377F8 + adds r0, r1 + subs r1, 0xE0 + ldr r2, _08073248 @ =0x04000008 + bl CpuSet +_08073232: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807323C: .4byte gUnknown_202297C +_08073240: .4byte gUnknown_202297E +_08073244: .4byte gUnknown_20377F8 +_08073248: .4byte 0x04000008 + thumb_func_end sub_8073174 + + thumb_func_start sub_807324C +sub_807324C: @ 807324C + push {r4,r5,lr} + ldr r0, _08073260 @ =gUnknown_2037ED4 + ldr r2, [r0] + adds r1, r2, 0x1 + str r1, [r0] + ldrb r4, [r2, 0x1] + cmp r4, 0 + bne _08073264 + movs r4, 0x2 + b _0807326E + .align 2, 0 +_08073260: .4byte gUnknown_2037ED4 +_08073264: + cmp r4, 0x1 + bne _0807326A + movs r4, 0x3 +_0807326A: + cmp r4, 0 + beq _08073272 +_0807326E: + cmp r4, 0x2 + bne _0807327C +_08073272: + ldr r0, _08073278 @ =gUnknown_2037F1A + b _0807327E + .align 2, 0 +_08073278: .4byte gUnknown_2037F1A +_0807327C: + ldr r0, _080732D4 @ =gUnknown_2037F1B +_0807327E: + ldrb r5, [r0] + ldr r3, _080732D8 @ =gUnknown_2037F14 + ldrb r0, [r3] + cmp r0, 0xFF + beq _080732A4 + ldr r2, _080732DC @ =gUnknown_202063C + ldr r0, _080732E0 @ =gUnknown_2023D44 + adds r0, r5, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_080732A4: + cmp r4, 0x1 + bls _080732E4 + ldrb r0, [r3, 0x1] + cmp r0, 0xFF + beq _080732E4 + ldr r3, _080732DC @ =gUnknown_202063C + ldr r2, _080732E0 @ =gUnknown_2023D44 + movs r1, 0x2 + adds r0, r5, 0 + eors r0, r1 + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + b _080732E6 + .align 2, 0 +_080732D4: .4byte gUnknown_2037F1B +_080732D8: .4byte gUnknown_2037F14 +_080732DC: .4byte gUnknown_202063C +_080732E0: .4byte gUnknown_2023D44 +_080732E4: + movs r4, 0 +_080732E6: + ldr r0, _08073310 @ =sub_807331C + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08073314 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + strh r5, [r1, 0xC] + ldr r1, _08073318 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08073310: .4byte sub_807331C +_08073314: .4byte gUnknown_3005090 +_08073318: .4byte gUnknown_2037ED4 + thumb_func_end sub_807324C + + thumb_func_start sub_807331C +sub_807331C: @ 807331C + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + ldr r1, _08073394 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + beq _0807338E + ldrb r0, [r4, 0xC] + bl sub_80751D8 + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + movs r5, 0x1 + cmp r0, 0x1 + bhi _08073354 + movs r5, 0 +_08073354: + ldr r6, _08073398 @ =gUnknown_2037F14 + ldrb r0, [r6] + cmp r0, 0xFF + beq _0807336C + adds r0, r5, 0 + bl sub_8073128 + ldrb r0, [r6] + bl sub_8077508 + movs r0, 0xFF + strb r0, [r6] +_0807336C: + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + ble _08073388 + movs r0, 0x1 + eors r5, r0 + adds r0, r5, 0 + bl sub_8073128 + ldrb r0, [r6, 0x1] + bl sub_8077508 + movs r0, 0xFF + strb r0, [r6, 0x1] +_08073388: + adds r0, r7, 0 + bl sub_8077508 +_0807338E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073394: .4byte gUnknown_3005090 +_08073398: .4byte gUnknown_2037F14 + thumb_func_end sub_807331C + + thumb_func_start sub_807339C +sub_807339C: @ 807339C + push {r4,r5,lr} + ldr r0, _080733B0 @ =gUnknown_2037ED4 + ldr r2, [r0] + adds r1, r2, 0x1 + str r1, [r0] + ldrb r5, [r2, 0x1] + cmp r5, 0 + bne _080733B4 + movs r5, 0x2 + b _080733BE + .align 2, 0 +_080733B0: .4byte gUnknown_2037ED4 +_080733B4: + cmp r5, 0x1 + bne _080733BA + movs r5, 0x3 +_080733BA: + cmp r5, 0 + beq _080733C2 +_080733BE: + cmp r5, 0x2 + bne _080733CC +_080733C2: + ldr r0, _080733C8 @ =gUnknown_2037F1A + b _080733CE + .align 2, 0 +_080733C8: .4byte gUnknown_2037F1A +_080733CC: + ldr r0, _08073474 @ =gUnknown_2037F1B +_080733CE: + ldrb r4, [r0] + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08073416 + adds r0, r4, 0 + bl sub_80751D8 + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + movs r1, 0x1 + cmp r0, 0x1 + bhi _080733F4 + movs r1, 0 +_080733F4: + adds r0, r4, 0 + bl sub_8072E48 + ldr r2, _08073478 @ =gUnknown_202063C + ldr r0, _0807347C @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_08073416: + movs r0, 0x2 + eors r4, r0 + cmp r5, 0x1 + bls _08073464 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08073464 + adds r0, r4, 0 + bl sub_80751D8 + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + movs r1, 0x1 + cmp r0, 0x1 + bhi _08073442 + movs r1, 0 +_08073442: + adds r0, r4, 0 + bl sub_8072E48 + ldr r2, _08073478 @ =gUnknown_202063C + ldr r0, _0807347C @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_08073464: + ldr r1, _08073480 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08073474: .4byte gUnknown_2037F1B +_08073478: .4byte gUnknown_202063C +_0807347C: .4byte gUnknown_2023D44 +_08073480: .4byte gUnknown_2037ED4 + thumb_func_end sub_807339C + + thumb_func_start sub_8073484 +sub_8073484: @ 8073484 + push {r4-r6,lr} + ldr r0, _08073498 @ =gUnknown_2037ED4 + ldr r2, [r0] + adds r1, r2, 0x1 + str r1, [r0] + ldrb r5, [r2, 0x1] + cmp r5, 0 + bne _0807349C + movs r5, 0x2 + b _080734A6 + .align 2, 0 +_08073498: .4byte gUnknown_2037ED4 +_0807349C: + cmp r5, 0x1 + bne _080734A2 + movs r5, 0x3 +_080734A2: + cmp r5, 0 + beq _080734AA +_080734A6: + cmp r5, 0x2 + bne _080734B4 +_080734AA: + ldr r0, _080734B0 @ =gUnknown_2037F1A + b _080734B6 + .align 2, 0 +_080734B0: .4byte gUnknown_2037F1A +_080734B4: + ldr r0, _08073514 @ =gUnknown_2037F1B +_080734B6: + ldrb r6, [r0] + adds r0, r6, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080734E0 + ldr r2, _08073518 @ =gUnknown_202063C + ldr r0, _0807351C @ =gUnknown_2023D44 + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_080734E0: + cmp r5, 0x1 + bls _08073520 + movs r0, 0x2 + adds r4, r6, 0 + eors r4, r0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08073520 + ldr r2, _08073518 @ =gUnknown_202063C + ldr r0, _0807351C @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + b _08073522 + .align 2, 0 +_08073514: .4byte gUnknown_2037F1B +_08073518: .4byte gUnknown_202063C +_0807351C: .4byte gUnknown_2023D44 +_08073520: + movs r5, 0 +_08073522: + ldr r0, _0807354C @ =sub_8073558 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08073550 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + strh r6, [r1, 0xC] + ldr r1, _08073554 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807354C: .4byte sub_8073558 +_08073550: .4byte gUnknown_3005090 +_08073554: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073484 + + thumb_func_start sub_8073558 +sub_8073558: @ 8073558 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080735DC @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + beq _080735D2 + ldrb r4, [r5, 0xC] + adds r6, r4, 0 + adds r0, r4, 0 + bl sub_80751D8 + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + movs r7, 0x1 + cmp r0, 0x1 + bhi _08073598 + movs r7, 0 +_08073598: + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080735AA + adds r0, r7, 0 + bl sub_8073128 +_080735AA: + movs r2, 0x8 + ldrsh r0, [r5, r2] + cmp r0, 0x1 + ble _080735CC + movs r0, 0x2 + eors r6, r0 + adds r0, r6, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080735CC + movs r0, 0x1 + eors r7, r0 + adds r0, r7, 0 + bl sub_8073128 +_080735CC: + mov r0, r8 + bl sub_8077508 +_080735D2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080735DC: .4byte gUnknown_3005090 + thumb_func_end sub_8073558 + + thumb_func_start sub_80735E0 +sub_80735E0: @ 80735E0 + push {r4,r5,lr} + ldr r2, _08073614 @ =gUnknown_2037ED4 + ldr r0, [r2] + adds r1, r0, 0x1 + str r1, [r2] + ldrb r5, [r0, 0x1] + adds r0, r1, 0x1 + str r0, [r2] + ldrb r4, [r1, 0x1] + lsls r4, 8 + adds r0, 0x1 + str r0, [r2] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + orrs r5, r4 + movs r0, 0x52 + adds r1, r5, 0 + bl sub_8000A38 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08073614: .4byte gUnknown_2037ED4 + thumb_func_end sub_80735E0 + + thumb_func_start sub_8073618 +sub_8073618: @ 8073618 + push {lr} + ldr r3, _0807363C @ =gUnknown_2037ED4 + ldr r0, [r3] + adds r2, r0, 0x1 + str r2, [r3] + ldrb r1, [r0, 0x1] + adds r0, r2, 0x1 + str r0, [r3] + ldrb r2, [r2, 0x1] + lsls r2, 8 + adds r0, 0x1 + str r0, [r3] + orrs r1, r2 + movs r0, 0x50 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0807363C: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073618 + + thumb_func_start sub_8073640 +sub_8073640: @ 8073640 + push {lr} + ldr r1, _08073660 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_08073660: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073640 + + thumb_func_start sub_8073664 +sub_8073664: @ 8073664 + push {r4,lr} + ldr r4, _08073690 @ =gUnknown_2037ED4 + ldr r1, [r4] + adds r3, r1, 0x1 + str r3, [r4] + ldr r2, _08073694 @ =gUnknown_2037ED8 + adds r0, r1, 0x5 + str r0, [r2] + ldrb r1, [r1, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08073690: .4byte gUnknown_2037ED4 +_08073694: .4byte gUnknown_2037ED8 + thumb_func_end sub_8073664 + + thumb_func_start sub_8073698 +sub_8073698: @ 8073698 + ldr r0, _080736A4 @ =gUnknown_2037ED4 + ldr r1, _080736A8 @ =gUnknown_2037ED8 + ldr r1, [r1] + str r1, [r0] + bx lr + .align 2, 0 +_080736A4: .4byte gUnknown_2037ED4 +_080736A8: .4byte gUnknown_2037ED8 + thumb_func_end sub_8073698 + + thumb_func_start sub_80736AC +sub_80736AC: @ 80736AC + push {r4,r5,lr} + ldr r5, _080736D8 @ =gUnknown_2037ED4 + ldr r1, [r5] + adds r0, r1, 0x1 + str r0, [r5] + ldrb r2, [r1, 0x1] + adds r3, r0, 0x1 + str r3, [r5] + ldrb r4, [r0, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 8 + orrs r4, r0 + adds r1, 0x4 + str r1, [r5] + ldr r0, _080736DC @ =gUnknown_2037F02 + lsls r2, 1 + adds r2, r0 + strh r4, [r2] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080736D8: .4byte gUnknown_2037ED4 +_080736DC: .4byte gUnknown_2037F02 + thumb_func_end sub_80736AC + + thumb_func_start sub_80736E0 +sub_80736E0: @ 80736E0 + push {lr} + ldr r3, _08073718 @ =gUnknown_2037ED4 + ldr r2, [r3] + adds r0, r2, 0x1 + str r0, [r3] + ldr r0, _0807371C @ =gUnknown_2037F16 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080736FA + adds r0, r2, 0x5 + str r0, [r3] +_080736FA: + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r3] + pop {r0} + bx r0 + .align 2, 0 +_08073718: .4byte gUnknown_2037ED4 +_0807371C: .4byte gUnknown_2037F16 + thumb_func_end sub_80736E0 + + thumb_func_start sub_8073720 +sub_8073720: @ 8073720 + push {r4,r5,lr} + ldr r5, _08073750 @ =gUnknown_2037ED4 + ldr r4, [r5] + adds r2, r4, 0x1 + str r2, [r5] + ldrb r1, [r4, 0x1] + adds r3, r2, 0x1 + str r3, [r5] + ldr r0, _08073754 @ =gUnknown_2037F16 + ldrb r0, [r0] + cmp r1, r0 + bne _08073758 + ldrb r1, [r2, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r5] + b _0807375C + .align 2, 0 +_08073750: .4byte gUnknown_2037ED4 +_08073754: .4byte gUnknown_2037F16 +_08073758: + adds r0, r4, 0x6 + str r0, [r5] +_0807375C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8073720 + + thumb_func_start sub_8073764 +sub_8073764: @ 8073764 + ldr r3, _08073784 @ =gUnknown_2037ED4 + ldr r0, [r3] + adds r2, r0, 0x1 + str r2, [r3] + ldrb r1, [r0, 0x1] + ldrb r0, [r2, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_08073784: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073764 + + thumb_func_start sub_8073788 +sub_8073788: @ 8073788 + movs r0, 0 + bx lr + thumb_func_end sub_8073788 + + thumb_func_start sub_807378C +sub_807378C: @ 807378C + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC9 + beq _0807379A + movs r0, 0x1 + b _0807379C +_0807379A: + movs r0, 0 +_0807379C: + pop {r1} + bx r1 + thumb_func_end sub_807378C + + thumb_func_start sub_80737A0 +sub_80737A0: @ 80737A0 + push {r4,lr} + ldr r1, _080737D4 @ =gUnknown_2037ED4 + ldr r2, [r1] + adds r0, r2, 0x1 + str r0, [r1] + ldrb r4, [r2, 0x1] + adds r0, 0x1 + str r0, [r1] + ldr r0, _080737D8 @ =sub_8073850 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080737DC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + ldr r1, _080737E0 @ =gUnknown_2037F17 + movs r0, 0x1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080737D4: .4byte gUnknown_2037ED4 +_080737D8: .4byte sub_8073850 +_080737DC: .4byte gUnknown_3005090 +_080737E0: .4byte gUnknown_2037F17 + thumb_func_end sub_80737A0 + + thumb_func_start sub_80737E4 +sub_80737E4: @ 80737E4 + push {r4-r6,lr} + ldr r1, _08073820 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r2, r0, 0x1 + str r2, [r1] + ldrb r6, [r0, 0x1] + ldrb r5, [r2, 0x1] + adds r0, 0x4 + str r0, [r1] + ldr r0, _08073824 @ =sub_8073850 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08073828 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08073830 + ldr r1, _0807382C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + b _0807383C + .align 2, 0 +_08073820: .4byte gUnknown_2037ED4 +_08073824: .4byte sub_8073850 +_08073828: .4byte gUnknown_2037F1B +_0807382C: .4byte gUnknown_3005090 +_08073830: + ldr r1, _08073848 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + strh r6, [r0, 0x8] +_0807383C: + ldr r1, _0807384C @ =gUnknown_2037F17 + movs r0, 0x1 + strb r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08073848: .4byte gUnknown_3005090 +_0807384C: .4byte gUnknown_2037F17 + thumb_func_end sub_80737E4 + + thumb_func_start sub_8073850 +sub_8073850: @ 8073850 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08073884 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r6, [r4, 0x1C] + movs r0, 0x1C + ldrsh r3, [r4, r0] + adds r7, r1, 0 + cmp r3, 0 + bne _08073888 + str r3, [sp] + movs r0, 0xE8 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8071264 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + b _08073918 + .align 2, 0 +_08073884: .4byte gUnknown_3005090 +_08073888: + ldr r2, _080738A4 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08073918 + cmp r3, 0x1 + bne _080738AC + adds r0, r6, 0x1 + strh r0, [r4, 0x1C] + ldr r1, _080738A8 @ =gUnknown_2037F17 + movs r0, 0x2 + strb r0, [r1] + b _080738F0 + .align 2, 0 +_080738A4: .4byte gUnknown_2037AB8 +_080738A8: .4byte gUnknown_2037F17 +_080738AC: + cmp r3, 0x2 + bne _080738F0 + ldrh r0, [r4, 0x8] + lsls r2, r0, 16 + asrs r1, r2, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080738C4 + bl sub_807396C + b _080738CA +_080738C4: + lsrs r0, r2, 16 + bl sub_8073924 +_080738CA: + movs r0, 0x1 + str r0, [sp] + movs r0, 0xE8 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8071264 + ldr r1, _080738EC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x1C] + adds r1, 0x1 + strh r1, [r0, 0x1C] + b _08073918 + .align 2, 0 +_080738EC: .4byte gUnknown_3005090 +_080738F0: + ldrb r1, [r2, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08073918 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r7 + movs r1, 0x1C + ldrsh r0, [r0, r1] + cmp r0, 0x3 + bne _08073918 + adds r0, r5, 0 + bl sub_8077508 + ldr r0, _08073920 @ =gUnknown_2037F17 + strb r4, [r0] +_08073918: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073920: .4byte gUnknown_2037F17 + thumb_func_end sub_8073850 + + thumb_func_start sub_8073924 +sub_8073924: @ 8073924 + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r5, _08073960 @ =gUnknown_83ADE18 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _08073964 @ =0x0600d000 + bl sub_800EBC0 + adds r0, r4, r5 + ldr r0, [r0] + ldr r1, _08073968 @ =0x06008000 + bl sub_800EBC0 + adds r5, 0x4 + adds r4, r5 + ldr r0, [r4] + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703A8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08073960: .4byte gUnknown_83ADE18 +_08073964: .4byte 0x0600d000 +_08073968: .4byte 0x06008000 + thumb_func_end sub_8073924 + + thumb_func_start sub_807396C +sub_807396C: @ 807396C + push {lr} + bl sub_800F40C + pop {r0} + bx r0 + thumb_func_end sub_807396C + + thumb_func_start sub_8073978 +sub_8073978: @ 8073978 + push {lr} + ldr r1, _080739A8 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r0, _080739AC @ =sub_8073850 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080739B0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080739B4 @ =0x0000ffff + strh r0, [r1, 0x8] + ldr r1, _080739B8 @ =gUnknown_2037F17 + movs r0, 0x1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080739A8: .4byte gUnknown_2037ED4 +_080739AC: .4byte sub_8073850 +_080739B0: .4byte gUnknown_3005090 +_080739B4: .4byte 0x0000ffff +_080739B8: .4byte gUnknown_2037F17 + thumb_func_end sub_8073978 + + thumb_func_start sub_80739BC +sub_80739BC: @ 80739BC + push {lr} + ldr r0, _080739D4 @ =gUnknown_2037F17 + ldrb r0, [r0] + cmp r0, 0x2 + bne _080739E0 + ldr r1, _080739D8 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r1, _080739DC @ =gUnknown_2037EE0 + movs r0, 0 + b _080739E4 + .align 2, 0 +_080739D4: .4byte gUnknown_2037F17 +_080739D8: .4byte gUnknown_2037ED4 +_080739DC: .4byte gUnknown_2037EE0 +_080739E0: + ldr r1, _080739EC @ =gUnknown_2037EE0 + movs r0, 0x1 +_080739E4: + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080739EC: .4byte gUnknown_2037EE0 + thumb_func_end sub_80739BC + + thumb_func_start sub_80739F0 +sub_80739F0: @ 80739F0 + push {lr} + ldr r0, _08073A08 @ =gUnknown_2037F17 + ldrb r2, [r0] + cmp r2, 0 + bne _08073A14 + ldr r0, _08073A0C @ =gUnknown_2037ED4 + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + ldr r0, _08073A10 @ =gUnknown_2037EE0 + strb r2, [r0] + b _08073A1A + .align 2, 0 +_08073A08: .4byte gUnknown_2037F17 +_08073A0C: .4byte gUnknown_2037ED4 +_08073A10: .4byte gUnknown_2037EE0 +_08073A14: + ldr r1, _08073A20 @ =gUnknown_2037EE0 + movs r0, 0x1 + strb r0, [r1] +_08073A1A: + pop {r0} + bx r0 + .align 2, 0 +_08073A20: .4byte gUnknown_2037EE0 + thumb_func_end sub_80739F0 + + thumb_func_start sub_8073A24 +sub_8073A24: @ 8073A24 + push {r4,lr} + ldr r4, _08073A40 @ =gUnknown_2037ED4 + ldr r1, [r4] + adds r0, r1, 0x1 + str r0, [r4] + ldrb r0, [r1, 0x1] + bl sub_8073924 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08073A40: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073A24 + + thumb_func_start sub_8073A44 +sub_8073A44: @ 8073A44 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08073A78 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _08073A7C @ =gUnknown_2037F1A + ldrb r2, [r0] + ldr r1, [r1, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08073A80 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + movs r4, 0xC0 + cmp r0, 0 + beq _08073AE6 + movs r4, 0x3F + b _08073AE6 + .align 2, 0 +_08073A78: .4byte gUnknown_2024018 +_08073A7C: .4byte gUnknown_2037F1A +_08073A80: + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08073ABA + ldr r0, _08073AA8 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08073AE6 + lsls r0, r4, 24 + asrs r1, r0, 24 + cmp r1, 0x3F + bne _08073AAC + movs r4, 0xC0 + b _08073AE6 + .align 2, 0 +_08073AA8: .4byte gUnknown_2037F1B +_08073AAC: + movs r0, 0x40 + negs r0, r0 + cmp r1, r0 + beq _08073AE6 + negs r0, r1 + lsls r0, 24 + b _08073AE4 +_08073ABA: + ldr r0, _08073ADC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08073AE0 + lsls r0, r4, 24 + asrs r0, 24 + movs r1, 0x40 + negs r1, r1 + cmp r0, r1 + bne _08073AE6 + movs r4, 0x3F + b _08073AE6 + .align 2, 0 +_08073ADC: .4byte gUnknown_2037F1B +_08073AE0: + lsls r0, r4, 24 + negs r0, r0 +_08073AE4: + lsrs r4, r0, 24 +_08073AE6: + lsls r0, r4, 24 + asrs r1, r0, 24 + cmp r1, 0x3F + ble _08073AF2 + movs r4, 0x3F + b _08073AFC +_08073AF2: + movs r0, 0x40 + negs r0, r0 + cmp r1, r0 + bge _08073AFC + movs r4, 0xC0 +_08073AFC: + lsls r0, r4, 24 + asrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8073A44 + + thumb_func_start sub_8073B08 +sub_8073B08: @ 8073B08 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08073B3C @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _08073B40 @ =gUnknown_2037F1A + ldrb r2, [r0] + ldr r1, [r1, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08073B44 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + movs r4, 0xC0 + cmp r0, 0 + beq _08073B56 + movs r4, 0x3F + b _08073B56 + .align 2, 0 +_08073B3C: .4byte gUnknown_2024018 +_08073B40: .4byte gUnknown_2037F1A +_08073B44: + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08073B56 + lsls r0, r4, 24 + negs r0, r0 + lsrs r4, r0, 24 +_08073B56: + lsls r0, r4, 24 + asrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8073B08 + + thumb_func_start sub_8073B60 +sub_8073B60: @ 8073B60 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + asrs r2, r0, 16 + cmp r2, 0x3F + ble _08073B70 + movs r1, 0x3F + b _08073B7A +_08073B70: + movs r0, 0x40 + negs r0, r0 + cmp r2, r0 + bge _08073B7A + ldr r1, _08073B84 @ =0x0000ffc0 +_08073B7A: + lsls r0, r1, 16 + asrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08073B84: .4byte 0x0000ffc0 + thumb_func_end sub_8073B60 + + thumb_func_start sub_8073B88 +sub_8073B88: @ 8073B88 + push {lr} + lsls r2, 16 + lsrs r2, 16 + adds r3, r2, 0 + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + cmp r0, r1 + bge _08073BA6 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0 + bge _08073BB6 + b _08073BB4 +_08073BA6: + cmp r0, r1 + ble _08073BBC + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0 + bge _08073BB4 + negs r0, r0 +_08073BB4: + negs r0, r0 +_08073BB6: + lsls r0, 16 + lsrs r0, 16 + b _08073BBE +_08073BBC: + movs r0, 0 +_08073BBE: + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8073B88 + + thumb_func_start sub_8073BC8 +sub_8073BC8: @ 8073BC8 + push {r4,r5,lr} + ldr r5, _08073BFC @ =gUnknown_2037ED4 + ldr r0, [r5] + adds r1, r0, 0x1 + str r1, [r5] + ldrb r4, [r0, 0x1] + ldrb r0, [r1, 0x1] + lsls r0, 8 + orrs r4, r0 + movs r0, 0x2 + ldrsb r0, [r1, r0] + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + adds r0, r4, 0 + bl sub_80722F4 + ldr r0, [r5] + adds r0, 0x3 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08073BFC: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073BC8 + + thumb_func_start sub_8073C00 +sub_8073C00: @ 8073C00 + push {r4,lr} + ldr r4, _08073C28 @ =gUnknown_2037ED4 + ldr r1, [r4] + adds r0, r1, 0x1 + str r0, [r4] + movs r0, 0x1 + ldrsb r0, [r1, r0] + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + bl sub_80723B0 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08073C28: .4byte gUnknown_2037ED4 + thumb_func_end sub_8073C00 + + thumb_func_start sub_8073C2C +sub_8073C2C: @ 8073C2C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08073CDC @ =gUnknown_2037ED4 + mov r10, r0 + ldr r0, [r0] + adds r1, r0, 0x1 + mov r2, r10 + str r1, [r2] + ldrb r0, [r0, 0x1] + mov r9, r0 + ldrb r0, [r1, 0x1] + lsls r0, 8 + mov r2, r9 + orrs r2, r0 + mov r9, r2 + ldrb r4, [r1, 0x3] + ldrb r6, [r1, 0x4] + ldrb r7, [r1, 0x5] + movs r0, 0x2 + ldrsb r0, [r1, r0] + bl sub_8073A44 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + asrs r4, 24 + adds r0, r4, 0 + bl sub_8073A44 + mov r8, r0 + lsls r5, 24 + asrs r5, 24 + mov r0, r8 + lsls r0, 24 + asrs r0, 24 + mov r8, r0 + lsls r6, 24 + asrs r6, 24 + adds r0, r5, 0 + mov r1, r8 + adds r2, r6, 0 + bl sub_8073B88 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08073CE0 @ =sub_8073CEC + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08073CE4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + mov r2, r8 + strh r2, [r1, 0xA] + lsls r4, 24 + asrs r4, 24 + strh r4, [r1, 0xC] + strh r7, [r1, 0xE] + strh r5, [r1, 0x10] + mov r0, r9 + adds r1, r5, 0 + bl sub_80722F4 + ldr r1, _08073CE8 @ =gUnknown_2037EE3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r1, r10 + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073CDC: .4byte gUnknown_2037ED4 +_08073CE0: .4byte sub_8073CEC +_08073CE4: .4byte gUnknown_3005090 +_08073CE8: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073C2C + + thumb_func_start sub_8073CEC +sub_8073CEC: @ 8073CEC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r7, 0 + ldr r1, _08073D30 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0x18] + adds r1, r0, 0x1 + strh r1, [r2, 0x18] + lsls r0, 16 + asrs r0, 16 + movs r3, 0xE + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08073D70 + strh r7, [r2, 0x18] + ldrh r6, [r2, 0x8] + ldrh r3, [r2, 0xA] + movs r4, 0x10 + ldrsh r0, [r2, r4] + movs r4, 0xC + ldrsh r1, [r2, r4] + adds r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + strh r4, [r2, 0x10] + cmp r1, 0 + bne _08073D34 + lsls r2, r3, 16 + b _08073D58 + .align 2, 0 +_08073D30: .4byte gUnknown_3005090 +_08073D34: + lsls r1, r6, 16 + lsls r0, r3, 16 + asrs r3, r0, 16 + adds r2, r0, 0 + cmp r1, r2 + bge _08073D4A + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, r3 + blt _08073D54 + b _08073D58 +_08073D4A: + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, r3 + bgt _08073D54 + movs r7, 0x1 +_08073D54: + cmp r7, 0 + beq _08073D68 +_08073D58: + lsrs r4, r2, 16 + adds r0, r5, 0 + bl sub_8077508 + ldr r1, _08073D78 @ =gUnknown_2037EE3 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_08073D68: + lsls r0, r4, 24 + asrs r0, 24 + bl sub_80723B0 +_08073D70: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073D78: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073CEC + + thumb_func_start sub_8073D7C +sub_8073D7C: @ 8073D7C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + ldr r0, _08073E00 @ =gUnknown_2037ED4 + mov r9, r0 + ldr r0, [r0] + adds r1, r0, 0x1 + mov r2, r9 + str r1, [r2] + ldrb r0, [r0, 0x1] + mov r8, r0 + ldrb r0, [r1, 0x1] + lsls r0, 8 + mov r2, r8 + orrs r2, r0 + mov r8, r2 + ldrb r4, [r1, 0x2] + ldrb r5, [r1, 0x3] + ldrb r6, [r1, 0x4] + ldrb r1, [r1, 0x5] + mov r10, r1 + ldr r0, _08073E04 @ =sub_8073CEC + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08073E08 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + lsls r4, 24 + asrs r4, 24 + strh r4, [r1, 0x8] + lsls r5, 24 + asrs r5, 24 + strh r5, [r1, 0xA] + lsls r6, 24 + asrs r6, 24 + strh r6, [r1, 0xC] + mov r0, r10 + strh r0, [r1, 0xE] + strh r4, [r1, 0x10] + mov r0, r8 + adds r1, r4, 0 + bl sub_80722F4 + ldr r1, _08073E0C @ =gUnknown_2037EE3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r1, r9 + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08073E00: .4byte gUnknown_2037ED4 +_08073E04: .4byte sub_8073CEC +_08073E08: .4byte gUnknown_3005090 +_08073E0C: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073D7C + + thumb_func_start sub_8073E10 +sub_8073E10: @ 8073E10 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08073EC0 @ =gUnknown_2037ED4 + mov r10, r0 + ldr r0, [r0] + adds r1, r0, 0x1 + mov r2, r10 + str r1, [r2] + ldrb r0, [r0, 0x1] + mov r9, r0 + ldrb r0, [r1, 0x1] + lsls r0, 8 + mov r2, r9 + orrs r2, r0 + mov r9, r2 + ldrb r4, [r1, 0x3] + ldrb r0, [r1, 0x4] + mov r8, r0 + ldrb r7, [r1, 0x5] + movs r0, 0x2 + ldrsb r0, [r1, r0] + bl sub_8073B08 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + asrs r4, 24 + adds r0, r4, 0 + bl sub_8073B08 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + mov r0, r8 + bl sub_8073B08 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08073EC4 @ =sub_8073CEC + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08073EC8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + lsls r6, 24 + asrs r6, 24 + strh r6, [r1, 0x8] + lsls r5, 24 + asrs r5, 24 + strh r5, [r1, 0xA] + lsls r4, 24 + asrs r4, 24 + strh r4, [r1, 0xC] + strh r7, [r1, 0xE] + strh r6, [r1, 0x10] + mov r0, r9 + adds r1, r6, 0 + bl sub_80722F4 + ldr r1, _08073ECC @ =gUnknown_2037EE3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r2, r10 + ldr r0, [r2] + adds r0, 0x6 + str r0, [r2] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08073EC0: .4byte gUnknown_2037ED4 +_08073EC4: .4byte sub_8073CEC +_08073EC8: .4byte gUnknown_3005090 +_08073ECC: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073E10 + + thumb_func_start sub_8073ED0 +sub_8073ED0: @ 8073ED0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r6, _08073F48 @ =gUnknown_2037ED4 + ldr r0, [r6] + adds r1, r0, 0x1 + str r1, [r6] + ldrb r5, [r0, 0x1] + ldrb r0, [r1, 0x1] + lsls r0, 8 + orrs r5, r0 + ldrb r0, [r1, 0x3] + mov r8, r0 + ldrb r2, [r1, 0x4] + mov r9, r2 + movs r0, 0x2 + ldrsb r0, [r1, r0] + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08073F4C @ =sub_8073F58 + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08073F50 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + lsls r4, 24 + asrs r4, 24 + strh r4, [r1, 0xA] + mov r2, r8 + strh r2, [r1, 0xC] + mov r2, r9 + strh r2, [r1, 0xE] + mov r2, r8 + strh r2, [r1, 0x18] + ldr r1, [r1] + bl _call_via_r1 + ldr r1, _08073F54 @ =gUnknown_2037EE3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r6] + adds r0, 0x5 + str r0, [r6] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08073F48: .4byte gUnknown_2037ED4 +_08073F4C: .4byte sub_8073F58 +_08073F50: .4byte gUnknown_3005090 +_08073F54: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073ED0 + + thumb_func_start sub_8073F58 +sub_8073F58: @ 8073F58 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08073FAC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0x18] + adds r1, r0, 0x1 + strh r1, [r2, 0x18] + lsls r0, 16 + asrs r0, 16 + movs r3, 0xC + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08073FA6 + movs r0, 0 + strh r0, [r2, 0x18] + ldrh r0, [r2, 0x8] + ldrb r1, [r2, 0xA] + ldrh r4, [r2, 0xE] + subs r4, 0x1 + strh r4, [r2, 0xE] + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + asrs r1, 24 + bl sub_80722F4 + cmp r4, 0 + bne _08073FA6 + adds r0, r5, 0 + bl sub_8077508 + ldr r1, _08073FB0 @ =gUnknown_2037EE3 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_08073FA6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08073FAC: .4byte gUnknown_3005090 +_08073FB0: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073F58 + + thumb_func_start sub_8073FB4 +sub_8073FB4: @ 8073FB4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r6, _08074018 @ =gUnknown_2037ED4 + ldr r0, [r6] + adds r1, r0, 0x1 + str r1, [r6] + ldrb r5, [r0, 0x1] + ldrb r0, [r1, 0x1] + lsls r0, 8 + orrs r5, r0 + ldrb r0, [r1, 0x3] + mov r8, r0 + movs r0, 0x2 + ldrsb r0, [r1, r0] + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0807401C @ =sub_8074028 + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08074020 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + lsls r4, 24 + asrs r4, 24 + strh r4, [r1, 0xA] + mov r0, r8 + strh r0, [r1, 0xC] + ldr r1, _08074024 @ =gUnknown_2037EE3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r6] + adds r0, 0x4 + str r0, [r6] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08074018: .4byte gUnknown_2037ED4 +_0807401C: .4byte sub_8074028 +_08074020: .4byte gUnknown_3005090 +_08074024: .4byte gUnknown_2037EE3 + thumb_func_end sub_8073FB4 + + thumb_func_start sub_8074028 +sub_8074028: @ 8074028 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08074064 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0xC] + subs r1, r0, 0x1 + strh r1, [r2, 0xC] + lsls r0, 16 + cmp r0, 0 + bgt _0807405C + ldrh r0, [r2, 0x8] + movs r1, 0xA + ldrsb r1, [r2, r1] + bl sub_80722F4 + adds r0, r4, 0 + bl sub_8077508 + ldr r1, _08074068 @ =gUnknown_2037EE3 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_0807405C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08074064: .4byte gUnknown_3005090 +_08074068: .4byte gUnknown_2037EE3 + thumb_func_end sub_8074028 + + thumb_func_start sub_807406C +sub_807406C: @ 807406C + push {r4-r6,lr} + ldr r4, _080740D4 @ =gUnknown_2037ED4 + ldr r1, [r4] + adds r3, r1, 0x1 + str r3, [r4] + ldrb r2, [r1, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r3, 0x2] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r3, 0x3] + lsls r0, 24 + adds r6, r2, r0 + adds r0, r1, 0x5 + str r0, [r4] + ldrb r0, [r1, 0x5] + adds r1, 0x6 + str r1, [r4] + cmp r0, 0 + beq _080740B6 + adds r5, r4, 0 + ldr r4, _080740D8 @ =gUnknown_2037F02 + adds r3, r0, 0 +_0807409E: + ldr r2, [r5] + ldrb r1, [r2] + ldrb r0, [r2, 0x1] + lsls r0, 8 + orrs r1, r0 + strh r1, [r4] + adds r2, 0x2 + str r2, [r5] + adds r4, 0x2 + subs r3, 0x1 + cmp r3, 0 + bne _0807409E +_080740B6: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r6 + ldr r1, _080740DC @ =gUnknown_2037EE3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080740D4: .4byte gUnknown_2037ED4 +_080740D8: .4byte gUnknown_2037F02 +_080740DC: .4byte gUnknown_2037EE3 + thumb_func_end sub_807406C + + thumb_func_start sub_80740E0 +sub_80740E0: @ 80740E0 + push {r4,r5,lr} + ldr r0, _08074118 @ =gUnknown_2037EE3 + ldrb r5, [r0] + cmp r5, 0 + bne _08074128 + bl sub_80723E0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08074140 + ldr r4, _0807411C @ =gUnknown_2037F12 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5A + bls _0807412E + ldr r0, _08074120 @ =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, _08074124 @ =gMPlay_SE2 + bl m4aMPlayStop + strh r5, [r4] + b _08074152 + .align 2, 0 +_08074118: .4byte gUnknown_2037EE3 +_0807411C: .4byte gUnknown_2037F12 +_08074120: .4byte gMPlay_SE1 +_08074124: .4byte gMPlay_SE2 +_08074128: + ldr r1, _08074138 @ =gUnknown_2037F12 + movs r0, 0 + strh r0, [r1] +_0807412E: + ldr r1, _0807413C @ =gUnknown_2037EE0 + movs r0, 0x1 + strb r0, [r1] + b _08074152 + .align 2, 0 +_08074138: .4byte gUnknown_2037F12 +_0807413C: .4byte gUnknown_2037EE0 +_08074140: + ldr r0, _08074158 @ =gUnknown_2037F12 + movs r2, 0 + strh r1, [r0] + ldr r1, _0807415C @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r0, _08074160 @ =gUnknown_2037EE0 + strb r2, [r0] +_08074152: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074158: .4byte gUnknown_2037F12 +_0807415C: .4byte gUnknown_2037ED4 +_08074160: .4byte gUnknown_2037EE0 + thumb_func_end sub_80740E0 + + thumb_func_start sub_8074164 +sub_8074164: @ 8074164 + push {r4-r6,lr} + ldr r5, _080741A4 @ =gUnknown_2037ED4 + ldr r4, [r5] + adds r3, r4, 0x1 + str r3, [r5] + ldrb r2, [r4, 0x1] + ldrb r1, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r0, _080741A8 @ =gUnknown_2037F02 + lsls r2, 1 + adds r2, r0 + lsls r1, 16 + asrs r1, 16 + movs r6, 0 + ldrsh r0, [r2, r6] + cmp r1, r0 + bne _080741AC + ldrb r1, [r3, 0x3] + ldrb r0, [r3, 0x4] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x6] + lsls r0, 24 + adds r1, r0 + str r1, [r5] + b _080741B2 + .align 2, 0 +_080741A4: .4byte gUnknown_2037ED4 +_080741A8: .4byte gUnknown_2037F02 +_080741AC: + adds r0, r4, 0 + adds r0, 0x8 + str r0, [r5] +_080741B2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8074164 + + thumb_func_start sub_80741B8 +sub_80741B8: @ 80741B8 + ldr r1, _080741C4 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + bx lr + .align 2, 0 +_080741C4: .4byte gUnknown_2037ED4 + thumb_func_end sub_80741B8 + + thumb_func_start sub_80741C8 +sub_80741C8: @ 80741C8 + push {lr} + ldr r0, _080741DC @ =gUnknown_2037ED4 + ldr r1, [r0] + ldrb r2, [r1, 0x1] + adds r1, 0x2 + str r1, [r0] + cmp r2, 0 + beq _080741E4 + ldr r0, _080741E0 @ =gUnknown_2037F1B + b _080741E6 + .align 2, 0 +_080741DC: .4byte gUnknown_2037ED4 +_080741E0: .4byte gUnknown_2037F1B +_080741E4: + ldr r0, _08074210 @ =gUnknown_2037F1A +_080741E6: + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080741F8 + cmp r0, 0x3 + bne _0807420C +_080741F8: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 +_0807420C: + pop {r0} + bx r0 + .align 2, 0 +_08074210: .4byte gUnknown_2037F1A + thumb_func_end sub_80741C8 + + thumb_func_start sub_8074214 +sub_8074214: @ 8074214 + push {lr} + ldr r1, _08074238 @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + pop {r0} + bx r0 + .align 2, 0 +_08074238: .4byte gUnknown_2037ED4 + thumb_func_end sub_8074214 + + thumb_func_start sub_807423C +sub_807423C: @ 807423C + push {r4-r7,lr} + ldr r1, _0807426C @ =gUnknown_2037ED4 + ldr r0, [r1] + ldrb r6, [r0, 0x1] + adds r0, 0x2 + str r0, [r1] + ldr r7, _08074270 @ =gUnknown_2037F1A + ldrb r0, [r7] + bl sub_80751C4 + adds r4, r0, 0 + ldr r5, _08074274 @ =gUnknown_2037F1B + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0807429E + cmp r6, 0 + beq _08074278 + ldrb r0, [r5] + b _0807427A + .align 2, 0 +_0807426C: .4byte gUnknown_2037ED4 +_08074270: .4byte gUnknown_2037F1A +_08074274: .4byte gUnknown_2037F1B +_08074278: + ldrb r0, [r7] +_0807427A: + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807428A + cmp r0, 0x3 + bne _0807429E +_0807428A: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 +_0807429E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807423C + + thumb_func_start sub_80742A4 +sub_80742A4: @ 80742A4 + push {r4,lr} + ldr r4, _080742D8 @ =gUnknown_2037ED4 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080742CC + ldr r1, _080742DC @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080742CC: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080742D8: .4byte gUnknown_2037ED4 +_080742DC: .4byte gUnknown_202063C + thumb_func_end sub_80742A4 + + thumb_func_start sub_80742E0 +sub_80742E0: @ 80742E0 + push {r4,lr} + ldr r4, _08074318 @ =gUnknown_2037ED4 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _0807430A + ldr r1, _0807431C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_0807430A: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08074318: .4byte gUnknown_2037ED4 +_0807431C: .4byte gUnknown_202063C + thumb_func_end sub_80742E0 + + thumb_func_start sub_8074320 +sub_8074320: @ 8074320 + push {r4-r7,lr} + ldr r1, _08074364 @ =gUnknown_2037ED4 + ldr r0, [r1] + ldrb r7, [r0, 0x1] + adds r0, 0x2 + str r0, [r1] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080743C2 + ldr r6, _08074368 @ =gUnknown_2037F1A + ldrb r0, [r6] + bl sub_80751C4 + adds r4, r0, 0 + ldr r5, _0807436C @ =gUnknown_2037F1B + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080743C2 + cmp r7, 0 + bne _08074370 + ldrb r0, [r6] + bl sub_80768B0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + b _0807437C + .align 2, 0 +_08074364: .4byte gUnknown_2037ED4 +_08074368: .4byte gUnknown_2037F1A +_0807436C: .4byte gUnknown_2037F1B +_08074370: + ldrb r0, [r5] + bl sub_80768B0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1 +_0807437C: + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080743C2 + ldr r1, _080743B8 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r2, r0, r1 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + cmp r4, 0x2 + bne _080743AC + ldrb r0, [r2, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r2, 0x5] +_080743AC: + cmp r4, 0x1 + bne _080743BC + movs r0, 0 + bl sub_8073128 + b _080743C2 + .align 2, 0 +_080743B8: .4byte gUnknown_202063C +_080743BC: + movs r0, 0x1 + bl sub_8073128 +_080743C2: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8074320 + + thumb_func_start sub_80743C8 +sub_80743C8: @ 80743C8 + push {r4-r7,lr} + ldr r1, _0807440C @ =gUnknown_2037ED4 + ldr r0, [r1] + ldrb r7, [r0, 0x1] + adds r0, 0x2 + str r0, [r1] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0807444C + ldr r6, _08074410 @ =gUnknown_2037F1A + ldrb r0, [r6] + bl sub_80751C4 + adds r4, r0, 0 + ldr r5, _08074414 @ =gUnknown_2037F1B + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _0807444C + cmp r7, 0 + bne _08074418 + ldrb r0, [r6] + bl sub_80768B0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + b _08074424 + .align 2, 0 +_0807440C: .4byte gUnknown_2037ED4 +_08074410: .4byte gUnknown_2037F1A +_08074414: .4byte gUnknown_2037F1B +_08074418: + ldrb r0, [r5] + bl sub_80768B0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1 +_08074424: + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _0807444C + cmp r4, 0x2 + bne _0807444C + ldr r1, _08074454 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x5] +_0807444C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08074454: .4byte gUnknown_202063C + thumb_func_end sub_80743C8 + + thumb_func_start sub_8074458 +sub_8074458: @ 8074458 + push {lr} + ldr r0, _08074474 @ =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, _08074478 @ =gMPlay_SE2 + bl m4aMPlayStop + ldr r1, _0807447C @ =gUnknown_2037ED4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08074474: .4byte gMPlay_SE1 +_08074478: .4byte gMPlay_SE2 +_0807447C: .4byte gUnknown_2037ED4 + thumb_func_end sub_8074458 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_8074480.s b/asm/battle_anim_8074480.s new file mode 100644 index 000000000..7d11d789b --- /dev/null +++ b/asm/battle_anim_8074480.s @@ -0,0 +1,6343 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8074480 +sub_8074480: @ 8074480 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r4, 0x4 + bhi _08074500 + lsls r0, r4, 2 + ldr r1, _08074498 @ =_0807449C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08074498: .4byte _0807449C + .align 2, 0 +_0807449C: + .4byte _080744B0 + .4byte _080744D8 + .4byte _080744B0 + .4byte _08074500 + .4byte _08074500 +_080744B0: + ldr r4, _080744D0 @ =gUnknown_83AE01C + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080744D4 @ =gUnknown_2022B4C + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + b _08074588 + .align 2, 0 +_080744D0: .4byte gUnknown_83AE01C +_080744D4: .4byte gUnknown_2022B4C +_080744D8: + ldr r4, _080744F8 @ =gUnknown_83AE01C + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080744FC @ =gUnknown_2022B4C + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x1] + b _08074588 + .align 2, 0 +_080744F8: .4byte gUnknown_83AE01C +_080744FC: .4byte gUnknown_2022B4C +_08074500: + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08074538 + ldr r0, _0807452C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08074570 + ldr r1, _08074530 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08074534 @ =gUnknown_202402C + b _08074556 + .align 2, 0 +_0807452C: .4byte gUnknown_2024018 +_08074530: .4byte gUnknown_2023BCE +_08074534: .4byte gUnknown_202402C +_08074538: + ldr r0, _08074564 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08074570 + ldr r1, _08074568 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807456C @ =gUnknown_2024284 +_08074556: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + b _08074572 + .align 2, 0 +_08074564: .4byte gUnknown_2024018 +_08074568: .4byte gUnknown_2023BCE +_0807456C: .4byte gUnknown_2024284 +_08074570: + ldrh r1, [r1, 0x2] +_08074572: + cmp r4, 0x3 + bne _0807457C + adds r0, r5, 0 + movs r2, 0x1 + b _08074580 +_0807457C: + adds r0, r5, 0 + movs r2, 0 +_08074580: + bl sub_80747AC + lsls r0, 24 + lsrs r0, 24 +_08074588: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8074480 + + thumb_func_start sub_8074590 +sub_8074590: @ 8074590 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r7, r4, 0 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08074674 + cmp r4, 0xC9 + bne _08074638 + ldr r0, _080745D8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _080745E4 + ldr r1, _080745DC @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080745E0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + bl sub_803FBE8 + adds r2, r0, 0 + b _080745EA + .align 2, 0 +_080745D8: .4byte gUnknown_2024018 +_080745DC: .4byte gUnknown_2023BCE +_080745E0: .4byte gUnknown_2024284 +_080745E4: + ldr r0, _08074620 @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r2, [r0] +_080745EA: + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08074624 + adds r0, r7, 0 + b _0807462E + .align 2, 0 +_08074620: .4byte gUnknown_2024008 +_08074624: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_0807462E: + ldr r1, _08074634 @ =gUnknown_8235E6C + lsls r0, 2 + b _0807473C + .align 2, 0 +_08074634: .4byte gUnknown_8235E6C +_08074638: + ldr r0, _0807464C @ =0x00000181 + cmp r4, r0 + bne _08074658 + ldr r0, _08074650 @ =gUnknown_83AE050 + ldr r1, _08074654 @ =gUnknown_2024024 + adds r1, r5, r1 + ldrb r1, [r1] + adds r1, r0 + ldrb r0, [r1] + b _08074740 + .align 2, 0 +_0807464C: .4byte 0x00000181 +_08074650: .4byte gUnknown_83AE050 +_08074654: .4byte gUnknown_2024024 +_08074658: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074668 + ldr r0, _08074664 @ =gUnknown_8235E6C + b _0807473E + .align 2, 0 +_08074664: .4byte gUnknown_8235E6C +_08074668: + ldr r1, _08074670 @ =gUnknown_8235E6C + lsls r0, r4, 2 + b _0807473C + .align 2, 0 +_08074670: .4byte gUnknown_8235E6C +_08074674: + cmp r4, 0xC9 + bne _08074704 + ldr r0, _080746A4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _080746B0 + ldr r1, _080746A8 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080746AC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0 + bl sub_803FBE8 + adds r2, r0, 0 + b _080746B6 + .align 2, 0 +_080746A4: .4byte gUnknown_2024018 +_080746A8: .4byte gUnknown_2023BCE +_080746AC: .4byte gUnknown_202402C +_080746B0: + ldr r0, _080746EC @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r2, [r0] +_080746B6: + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _080746F0 + adds r0, r7, 0 + b _080746FA + .align 2, 0 +_080746EC: .4byte gUnknown_2024008 +_080746F0: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_080746FA: + ldr r1, _08074700 @ =gUnknown_82349CC + lsls r0, 2 + b _0807473C + .align 2, 0 +_08074700: .4byte gUnknown_82349CC +_08074704: + ldr r0, _0807471C @ =0x00000181 + cmp r4, r0 + bne _08074728 + ldr r0, _08074720 @ =gUnknown_83AE03C + ldr r1, _08074724 @ =gUnknown_2024024 + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _08074740 + .align 2, 0 +_0807471C: .4byte 0x00000181 +_08074720: .4byte gUnknown_83AE03C +_08074724: .4byte gUnknown_2024024 +_08074728: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074738 + ldr r0, _08074734 @ =gUnknown_82349CC + b _0807473E + .align 2, 0 +_08074734: .4byte gUnknown_82349CC +_08074738: + ldr r1, _08074748 @ =gUnknown_82349CC + lsls r0, r7, 2 +_0807473C: + adds r0, r1 +_0807473E: + ldrb r0, [r0, 0x1] +_08074740: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08074748: .4byte gUnknown_82349CC + thumb_func_end sub_8074590 + + thumb_func_start sub_807474C +sub_807474C: @ 807474C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + adds r7, r4, 0 + movs r5, 0 + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807479E + ldr r0, _0807477C @ =0x00000181 + cmp r4, r0 + bne _08074788 + ldr r0, _08074780 @ =gUnknown_83AE04C + ldr r1, _08074784 @ =gUnknown_2024024 + adds r1, r6, r1 + ldrb r1, [r1] + adds r1, r0 + ldrb r5, [r1] + b _0807479E + .align 2, 0 +_0807477C: .4byte 0x00000181 +_08074780: .4byte gUnknown_83AE04C +_08074784: .4byte gUnknown_2024024 +_08074788: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074798 + ldr r0, _08074794 @ =gUnknown_823A004 + b _0807479C + .align 2, 0 +_08074794: .4byte gUnknown_823A004 +_08074798: + ldr r0, _080747A8 @ =gUnknown_823A004 + adds r0, r7, r0 +_0807479C: + ldrb r5, [r0] +_0807479E: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080747A8: .4byte gUnknown_823A004 + thumb_func_end sub_807474C + + thumb_func_start sub_80747AC +sub_80747AC: @ 80747AC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r7, r2, 24 + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080747D4 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8074590 + lsls r0, 24 + lsrs r5, r0, 24 + b _080747F2 +_080747D4: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8074590 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_807474C + lsls r0, 24 + lsrs r0, 24 + subs r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 +_080747F2: + adds r0, r6, 0 + bl sub_80751D8 + ldr r3, _0807483C @ =gUnknown_83AE01C + lsls r0, 24 + lsrs r0, 22 + ldr r1, _08074840 @ =gUnknown_2022B4C + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r3 + ldrb r0, [r0, 0x1] + adds r0, r5 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r7, 0 + beq _08074832 + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0807482C + adds r0, r4, 0 + adds r0, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 +_0807482C: + cmp r4, 0x68 + bls _08074832 + movs r4, 0x68 +_08074832: + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0807483C: .4byte gUnknown_83AE01C +_08074840: .4byte gUnknown_2022B4C + thumb_func_end sub_80747AC + + thumb_func_start sub_8074844 +sub_8074844: @ 8074844 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + movs r0, 0xFD + lsls r0, 24 + adds r1, r0 + lsrs r1, 24 + cmp r1, 0x1 + bhi _08074896 + ldr r0, _08074874 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807487C + ldr r1, _08074878 @ =gUnknown_2037F1C + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + b _0807487E + .align 2, 0 +_08074874: .4byte gUnknown_2024018 +_08074878: .4byte gUnknown_2037F1C +_0807487C: + ldrh r1, [r1, 0x2] +_0807487E: + cmp r3, 0x3 + bne _0807488C + adds r0, r2, 0 + movs r2, 0x1 + bl sub_80747AC + b _0807489E +_0807488C: + adds r0, r2, 0 + movs r2, 0 + bl sub_80747AC + b _0807489E +_08074896: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8074480 +_0807489E: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8074844 + + thumb_func_start sub_80748A8 +sub_80748A8: @ 80748A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x4 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80748A8 + + thumb_func_start sub_80748BC +sub_80748BC: @ 80748BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080748E0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x80 + lsls r1, 13 + b _080748F0 +_080748E0: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x88 + lsls r1, 13 +_080748F0: + adds r0, r1 + lsrs r0, 16 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80748BC + + thumb_func_start sub_8074900 +sub_8074900: @ 8074900 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807491A + adds r0, r4, 0 + movs r1, 0x1 + b _0807491E +_0807491A: + adds r0, r4, 0 + movs r1, 0x4 +_0807491E: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8074900 + + thumb_func_start sub_807492C +sub_807492C: @ 807492C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08074978 + ldr r0, _0807496C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080749B0 + ldr r1, _08074970 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08074974 @ =gUnknown_202402C + b _08074996 + .align 2, 0 +_0807496C: .4byte gUnknown_2024018 +_08074970: .4byte gUnknown_2023BCE +_08074974: .4byte gUnknown_202402C +_08074978: + ldr r0, _080749A4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080749B0 + ldr r1, _080749A8 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080749AC @ =gUnknown_2024284 +_08074996: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + b _080749B2 + .align 2, 0 +_080749A4: .4byte gUnknown_2024018 +_080749A8: .4byte gUnknown_2023BCE +_080749AC: .4byte gUnknown_2024284 +_080749B0: + ldrh r4, [r1, 0x2] +_080749B2: + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080749CC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807474C + subs r0, r6, r0 + lsls r0, 24 + lsrs r6, r0, 24 +_080749CC: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807492C + + thumb_func_start sub_80749D4 +sub_80749D4: @ 80749D4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0 + bne _080749FC + ldr r4, _080749F4 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + ldr r1, _080749F8 @ =gUnknown_2023D44 + ldrb r0, [r4] + b _08074A5A + .align 2, 0 +_080749F4: .4byte gUnknown_2037F1A +_080749F8: .4byte gUnknown_2023D44 +_080749FC: + cmp r0, 0x1 + bne _08074A1C + ldr r4, _08074A14 @ =gUnknown_2037F1B + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + ldr r1, _08074A18 @ =gUnknown_2023D44 + ldrb r0, [r4] + b _08074A5A + .align 2, 0 +_08074A14: .4byte gUnknown_2037F1B +_08074A18: .4byte gUnknown_2023D44 +_08074A1C: + cmp r1, 0x2 + bne _08074A38 + ldr r5, _08074A34 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + b _08074A54 + .align 2, 0 +_08074A34: .4byte gUnknown_2037F1A +_08074A38: + ldr r5, _08074A50 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _08074A54 +_08074A4A: + movs r0, 0xFF + b _08074A5E + .align 2, 0 +_08074A50: .4byte gUnknown_2037F1B +_08074A54: + ldr r1, _08074A64 @ =gUnknown_2023D44 + ldrb r0, [r5] + eors r0, r4 +_08074A5A: + adds r0, r1 + ldrb r0, [r0] +_08074A5E: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08074A64: .4byte gUnknown_2023D44 + thumb_func_end sub_80749D4 + + thumb_func_start sub_8074A68 +sub_8074A68: @ 8074A68 + strh r1, [r0, 0x3A] + lsrs r1, 16 + strh r1, [r0, 0x3C] + bx lr + thumb_func_end sub_8074A68 + + thumb_func_start sub_8074A70 +sub_8074A70: @ 8074A70 + ldrh r2, [r0, 0x3A] + movs r3, 0x3C + ldrsh r1, [r0, r3] + lsls r1, 16 + orrs r2, r1 + str r2, [r0, 0x1C] + bx lr + thumb_func_end sub_8074A70 + + thumb_func_start sub_8074A80 +sub_8074A80: @ 8074A80 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074AD4 + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074AC0 + ldr r2, _08074ABC @ =0xffffff00 + b _08074AC8 + .align 2, 0 +_08074ABC: .4byte 0xffffff00 +_08074AC0: + cmp r0, 0 + bge _08074ACC + movs r2, 0x80 + lsls r2, 1 +_08074AC8: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074ACC: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074ADA +_08074AD4: + adds r0, r4, 0 + bl sub_8074A70 +_08074ADA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074A80 + + thumb_func_start sub_8074AE0 +sub_8074AE0: @ 8074AE0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074B50 + movs r2, 0x2E + ldrsh r0, [r4, r2] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074B3C + ldr r2, _08074B38 @ =0xffffff00 + b _08074B44 + .align 2, 0 +_08074B38: .4byte 0xffffff00 +_08074B3C: + cmp r0, 0 + bge _08074B48 + movs r2, 0x80 + lsls r2, 1 +_08074B44: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074B48: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074B56 +_08074B50: + adds r0, r4, 0 + bl sub_8074A70 +_08074B56: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074AE0 + + thumb_func_start sub_8074B5C +sub_8074B5C: @ 8074B5C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074BD8 + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x38] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074BA4 + ldr r2, _08074BA0 @ =0xffffff00 + b _08074BAC + .align 2, 0 +_08074BA0: .4byte 0xffffff00 +_08074BA4: + cmp r0, 0 + bge _08074BB0 + movs r2, 0x80 + lsls r2, 1 +_08074BAC: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074BB0: + ldrh r1, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + ble _08074BC4 + ldr r2, _08074BC0 @ =0xffffff00 + b _08074BCC + .align 2, 0 +_08074BC0: .4byte 0xffffff00 +_08074BC4: + cmp r0, 0 + bge _08074BD0 + movs r2, 0x80 + lsls r2, 1 +_08074BCC: + adds r0, r1, r2 + strh r0, [r4, 0x36] +_08074BD0: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074BDE +_08074BD8: + adds r0, r4, 0 + bl sub_8074A70 +_08074BDE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074B5C + + thumb_func_start sub_8074BE4 +sub_8074BE4: @ 8074BE4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074C38 + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074C24 + ldr r2, _08074C20 @ =0xffffff00 + b _08074C2C + .align 2, 0 +_08074C20: .4byte 0xffffff00 +_08074C24: + cmp r0, 0 + bge _08074C30 + movs r2, 0x80 + lsls r2, 1 +_08074C2C: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074C30: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074C3E +_08074C38: + adds r0, r4, 0 + bl sub_8074A70 +_08074C3E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074BE4 + + thumb_func_start sub_8074C44 +sub_8074C44: @ 8074C44 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x2E] + movs r3, 0x2E + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _08074C58 + subs r0, r2, 0x1 + strh r0, [r1, 0x2E] + b _08074C5E +_08074C58: + adds r0, r1, 0 + bl sub_8074A70 +_08074C5E: + pop {r0} + bx r0 + thumb_func_end sub_8074C44 + + thumb_func_start sub_8074C64 +sub_8074C64: @ 8074C64 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074C80 + ldr r1, _08074C7C @ =sub_8074CD0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08074C7C: .4byte sub_8074CD0 + thumb_func_end sub_8074C64 + + thumb_func_start sub_8074C80 +sub_8074C80: @ 8074C80 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _08074C96 + ldrh r0, [r4, 0x2E] + negs r0, r0 + strh r0, [r4, 0x2E] +_08074C96: + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + subs r0, r1 + ldrh r5, [r4, 0x2E] + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + cmp r0, 0 + bge _08074CB0 + negs r0, r0 +_08074CB0: + strh r0, [r4, 0x2E] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + subs r0, r1 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x32] + strh r5, [r4, 0x30] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8074C80 + + thumb_func_start sub_8074CD0 +sub_8074CD0: @ 8074CD0 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x2E] + movs r3, 0x2E + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _08074CF4 + subs r0, r2, 0x1 + strh r0, [r1, 0x2E] + ldrh r0, [r1, 0x30] + ldrh r2, [r1, 0x24] + adds r0, r2 + strh r0, [r1, 0x24] + ldrh r0, [r1, 0x32] + ldrh r3, [r1, 0x26] + adds r0, r3 + strh r0, [r1, 0x26] + b _08074CFA +_08074CF4: + adds r0, r1, 0 + bl sub_8074A70 +_08074CFA: + pop {r0} + bx r0 + thumb_func_end sub_8074CD0 + + thumb_func_start sub_8074D00 +sub_8074D00: @ 8074D00 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _08074D30 + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r0, r1 + strh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r2, 0x26] + b _08074D36 +_08074D30: + adds r0, r2, 0 + bl sub_8074A70 +_08074D36: + pop {r0} + bx r0 + thumb_func_end sub_8074D00 + + thumb_func_start sub_8074D3C +sub_8074D3C: @ 8074D3C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074D6C + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r4, 0x26] + b _08074D72 +_08074D6C: + adds r0, r4, 0 + bl sub_8074A70 +_08074D72: + adds r0, r4, 0 + bl sub_8097228 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074D3C + + thumb_func_start sub_8074D80 +sub_8074D80: @ 8074D80 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x34] + ldr r5, _08074DBC @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _08074DC0 @ =sub_8074C64 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074DBC: .4byte gUnknown_2037F1B +_08074DC0: .4byte sub_8074C64 + thumb_func_end sub_8074D80 + + thumb_func_start sub_8074DC4 +sub_8074DC4: @ 8074DC4 + push {r4,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + movs r2, 0x2E + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _08074E08 + subs r0, r1, 0x1 + strh r0, [r3, 0x2E] + ldr r2, _08074E04 @ =gUnknown_202063C + movs r4, 0x34 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x30] + ldrh r4, [r0, 0x24] + adds r1, r4 + strh r1, [r0, 0x24] + movs r0, 0x34 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x32] + ldrh r2, [r0, 0x26] + adds r1, r2 + strh r1, [r0, 0x26] + b _08074E0E + .align 2, 0 +_08074E04: .4byte gUnknown_202063C +_08074E08: + adds r0, r3, 0 + bl sub_8074A70 +_08074E0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074DC4 + + thumb_func_start sub_8074E14 +sub_8074E14: @ 8074E14 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074E64 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + ldrh r0, [r4, 0x34] + adds r1, r0 + strh r1, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + ldr r3, _08074E60 @ =gUnknown_202063C + movs r0, 0x38 + ldrsh r2, [r4, r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + lsls r1, 16 + asrs r1, 24 + strh r1, [r0, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r1, 0x26] + b _08074E6A + .align 2, 0 +_08074E60: .4byte gUnknown_202063C +_08074E64: + adds r0, r4, 0 + bl sub_8074A70 +_08074E6A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074E14 + + thumb_func_start sub_8074E70 +sub_8074E70: @ 8074E70 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074ED2 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r1, r0 + strh r1, [r4, 0x32] + ldrh r1, [r4, 0x36] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r1, r0 + strh r1, [r4, 0x36] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _08074ED8 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074ED8 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08074ED8 +_08074ED2: + adds r0, r4, 0 + bl sub_8074A70 +_08074ED8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074E70 + + thumb_func_start sub_8074EE0 +sub_8074EE0: @ 8074EE0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074EE0 + + thumb_func_start sub_8074EF4 +sub_8074EF4: @ 8074EF4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x34] + ldr r5, _08074F30 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _08074F34 @ =sub_8074C64 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074F30: .4byte gUnknown_2037F1A +_08074F34: .4byte sub_8074C64 + thumb_func_end sub_8074EF4 + + thumb_func_start sub_8074F38 +sub_8074F38: @ 8074F38 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + bl sub_8070A0C + adds r0, r4, 0 + bl sub_8074EE0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074F38 + + thumb_func_start sub_8074F50 +sub_8074F50: @ 8074F50 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08074F66 + adds r0, r2, 0 + bl sub_8074A70 +_08074F66: + pop {r0} + bx r0 + thumb_func_end sub_8074F50 + + thumb_func_start sub_8074F6C +sub_8074F6C: @ 8074F6C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08074F82 + adds r0, r2, 0 + bl sub_8074A70 +_08074F82: + pop {r0} + bx r0 + thumb_func_end sub_8074F6C + + thumb_func_start sub_8074F88 +sub_8074F88: @ 8074F88 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074F88 + + thumb_func_start sub_8074FA8 +sub_8074FA8: @ 8074FA8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074FA8 + + thumb_func_start sub_8074FCC +sub_8074FCC: @ 8074FCC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08074FF4 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074FF4: .4byte gUnknown_2037F1A + thumb_func_end sub_8074FCC + + thumb_func_start sub_8074FF8 +sub_8074FF8: @ 8074FF8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + mov r8, r5 + ldr r7, _08075030 @ =gUnknown_2037F1A + ldrb r0, [r7] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08075034 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bhi _08075044 + cmp r6, r0 + bcs _08075038 + lsls r0, r5, 16 + b _08075054 + .align 2, 0 +_08075030: .4byte gUnknown_2037F1A +_08075034: .4byte gUnknown_2037F1B +_08075038: + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08075050 +_08075044: + ldrh r1, [r4, 0x20] + lsls r0, r5, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r4, 0x20] + b _0807505C +_08075050: + mov r1, r8 + lsls r0, r1, 16 +_08075054: + asrs r0, 16 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] +_0807505C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8074FF8 + + thumb_func_start sub_8075068 +sub_8075068: @ 8075068 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + movs r5, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80754F8 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r0, 0x80 + lsls r0, 8 + bl __divsi3 + strh r0, [r4, 0x3A] + strh r5, [r4, 0x3C] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8075068 + + thumb_func_start sub_8075094 +sub_8075094: @ 8075094 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080750C0 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + strh r0, [r4, 0x3C] + lsls r0, 16 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r0, 0 + b _080750C2 +_080750C0: + movs r0, 0x1 +_080750C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8075094 + + thumb_func_start sub_80750C8 +sub_80750C8: @ 80750C8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080750F4 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + strh r0, [r4, 0x3C] + lsls r0, 16 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r0, 0 + b _080750F6 +_080750F4: + movs r0, 0x1 +_080750F6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80750C8 + + thumb_func_start sub_80750FC +sub_80750FC: @ 80750FC + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + movs r2, 0 + strh r1, [r0, 0x20] + ldrh r1, [r0, 0x26] + ldrh r3, [r0, 0x22] + adds r1, r3 + strh r1, [r0, 0x22] + strh r2, [r0, 0x24] + strh r2, [r0, 0x26] + bx lr + thumb_func_end sub_80750FC + + thumb_func_start sub_8075114 +sub_8075114: @ 8075114 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _0807513C + ldr r4, _08075158 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_0807513C: + ldr r4, _0807515C @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08075158: .4byte gUnknown_2037F1B +_0807515C: .4byte gUnknown_2037F02 + thumb_func_end sub_8075114 + + thumb_func_start sub_8075160 +sub_8075160: @ 8075160 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _08075184 + ldr r4, _08075180 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + b _08075198 + .align 2, 0 +_08075180: .4byte gUnknown_2037F1A +_08075184: + ldr r4, _080751BC @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 +_08075198: + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080751C0 @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080751BC: .4byte gUnknown_2037F1A +_080751C0: .4byte gUnknown_2037F02 + thumb_func_end sub_8075160 + + thumb_func_start sub_80751C4 +sub_80751C4: @ 80751C4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080751D4 @ =gUnknown_2023BD6 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_080751D4: .4byte gUnknown_2023BD6 + thumb_func_end sub_80751C4 + + thumb_func_start sub_80751D8 +sub_80751D8: @ 80751D8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080751E4 @ =gUnknown_2023BD6 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080751E4: .4byte gUnknown_2023BD6 + thumb_func_end sub_80751D8 + + thumb_func_start sub_80751E8 +sub_80751E8: @ 80751E8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r1, 0 + ldr r0, _0807521C @ =gUnknown_2023BCC + ldrb r2, [r0] + cmp r1, r2 + bcs _08075212 + ldr r4, _08075220 @ =gUnknown_2023BD6 + ldrb r0, [r4] + cmp r0, r3 + beq _08075212 +_08075200: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcs _08075212 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _08075200 +_08075212: + adds r0, r1, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0807521C: .4byte gUnknown_2023BCC +_08075220: .4byte gUnknown_2023BD6 + thumb_func_end sub_80751E8 + + thumb_func_start sub_8075224 +sub_8075224: @ 8075224 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + ldr r0, _08075254 @ =gUnknown_2023BD6 + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, 0xFF + beq _08075288 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08075260 + ldr r1, _08075258 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807525C @ =gUnknown_202402C + b _0807526E + .align 2, 0 +_08075254: .4byte gUnknown_2023BD6 +_08075258: .4byte gUnknown_2023BCE +_0807525C: .4byte gUnknown_202402C +_08075260: + ldr r1, _08075280 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08075284 @ =gUnknown_2024284 +_0807526E: + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08075288 + movs r0, 0x1 + b _0807528A + .align 2, 0 +_08075280: .4byte gUnknown_2023BCE +_08075284: .4byte gUnknown_2024284 +_08075288: + movs r0, 0 +_0807528A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8075224 + + thumb_func_start sub_8075290 +sub_8075290: @ 8075290 + ldr r0, _0807529C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0807529C: .4byte gUnknown_2022B4C + thumb_func_end sub_8075290 + + thumb_func_start sub_80752A0 +sub_80752A0: @ 80752A0 + ldr r1, _080752C0 @ =gUnknown_2022BB8 + ldr r1, [r1] + str r1, [r0] + ldr r1, _080752C4 @ =gUnknown_2022BBC + ldr r1, [r1] + str r1, [r0, 0x4] + movs r2, 0 + movs r1, 0x8 + strb r1, [r0, 0x8] + movs r1, 0x1 + strb r1, [r0, 0x9] + movs r1, 0x80 + lsls r1, 2 + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + bx lr + .align 2, 0 +_080752C0: .4byte gUnknown_2022BB8 +_080752C4: .4byte gUnknown_2022BBC + thumb_func_end sub_80752A0 + + thumb_func_start sub_80752C8 +sub_80752C8: @ 80752C8 + push {lr} + adds r2, r0, 0 + cmp r1, 0x1 + bne _080752D6 + bl sub_80752A0 + b _080752F4 +_080752D6: + ldr r0, _080752F8 @ =gUnknown_2022BB8 + ldr r0, [r0] + str r0, [r2] + ldr r0, _080752FC @ =gUnknown_2022BBC + ldr r0, [r0] + str r0, [r2, 0x4] + movs r1, 0 + movs r0, 0x9 + strb r0, [r2, 0x8] + movs r0, 0x2 + strb r0, [r2, 0x9] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r2, 0xA] + strh r1, [r2, 0xC] +_080752F4: + pop {r0} + bx r0 + .align 2, 0 +_080752F8: .4byte gUnknown_2022BB8 +_080752FC: .4byte gUnknown_2022BBC + thumb_func_end sub_80752C8 + + thumb_func_start sub_8075300 +sub_8075300: @ 8075300 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08075334 @ =gUnknown_2022BB8 + ldr r0, [r0] + str r0, [r4] + ldr r0, _08075338 @ =gUnknown_2022BBC + ldr r0, [r0] + str r0, [r4, 0x4] + ldr r0, _0807533C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1 + bne _08075340 + movs r0, 0 + movs r1, 0x8 + strb r1, [r4, 0x8] + strb r2, [r4, 0x9] + movs r1, 0x80 + lsls r1, 2 + strh r1, [r4, 0xA] + strh r0, [r4, 0xC] + b _08075352 + .align 2, 0 +_08075334: .4byte gUnknown_2022BB8 +_08075338: .4byte gUnknown_2022BBC +_0807533C: .4byte gUnknown_2037F1A +_08075340: + movs r1, 0 + movs r0, 0x9 + strb r0, [r4, 0x8] + movs r0, 0x2 + strb r0, [r4, 0x9] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r4, 0xA] + strh r1, [r4, 0xC] +_08075352: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075300 + + thumb_func_start sub_8075358 +sub_8075358: @ 8075358 + push {r4,lr} + sub sp, 0x20 + adds r4, r0, 0 + add r0, sp, 0xC + adds r1, r4, 0 + bl sub_80752C8 + movs r0, 0 + str r0, [sp, 0x1C] + add r0, sp, 0x1C + ldr r1, [sp, 0xC] + ldr r2, _080753B0 @ =0x05000800 + bl CpuSet + lsls r4, 24 + lsrs r4, 24 + ldr r1, [sp, 0xC] + movs r2, 0x80 + lsls r2, 6 + add r0, sp, 0xC + ldrh r3, [r0, 0xA] + adds r0, r4, 0 + bl sub_80017D0 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + adds r0, r4, 0 + bl sub_80020BC + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080753B0: .4byte 0x05000800 + thumb_func_end sub_8075358 + + thumb_func_start sub_80753B4 +sub_80753B4: @ 80753B4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r5, r0, 0 + mov r8, r1 + adds r6, r2, 0 + movs r0, 0 + str r0, [sp] + ldr r4, _080753FC @ =gUnknown_2022BB8 + ldr r1, [r4] + ldr r2, _08075400 @ =0x05000800 + mov r0, sp + bl CpuSet + ldr r1, [r4] + mov r0, r8 + bl sub_800EBB4 + lsls r5, 24 + lsrs r5, 24 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 6 + lsls r6, 16 + lsrs r6, 16 + adds r0, r5, 0 + adds r3, r6, 0 + bl sub_80017D0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080753FC: .4byte gUnknown_2022BB8 +_08075400: .4byte 0x05000800 + thumb_func_end sub_80753B4 + + thumb_func_start sub_8075404 +sub_8075404: @ 8075404 + push {r4,r5,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8075404 + + thumb_func_start sub_807543C +sub_807543C: @ 807543C + push {r4,lr} + adds r4, r0, 0 + bl sub_8075404 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80020BC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807543C + + thumb_func_start sub_8075454 +sub_8075454: @ 8075454 + movs r0, 0x2 + bx lr + thumb_func_end sub_8075454 + + thumb_func_start sub_8075458 +sub_8075458: @ 8075458 + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _08075476 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80BC1F8 + b _0807548A +_08075476: + movs r0, 0x3 + movs r1, 0 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_80BC1F8 +_0807548A: + pop {r0} + bx r0 + thumb_func_end sub_8075458 + + thumb_func_start sub_8075490 +sub_8075490: @ 8075490 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80754B8 + ldr r1, _080754B4 @ =sub_8074D3C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080754B4: .4byte sub_8074D3C + thumb_func_end sub_8075490 + + thumb_func_start sub_80754B8 +sub_80754B8: @ 80754B8 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x32] + ldrh r1, [r5, 0x30] + subs r0, r1 + ldrh r4, [r5, 0x36] + ldrh r1, [r5, 0x34] + subs r4, r1 + lsls r4, 24 + lsrs r4, 16 + lsls r0, 24 + asrs r0, 16 + movs r2, 0x2E + ldrsh r1, [r5, r2] + bl __divsi3 + movs r6, 0 + strh r0, [r5, 0x30] + lsls r4, 16 + asrs r4, 16 + movs r0, 0x2E + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl __divsi3 + strh r0, [r5, 0x32] + strh r6, [r5, 0x36] + strh r6, [r5, 0x34] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80754B8 + + thumb_func_start sub_80754F8 +sub_80754F8: @ 80754F8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + movs r0, 0x32 + ldrsh r1, [r7, r0] + movs r2, 0x30 + ldrsh r0, [r7, r2] + subs r1, r0 + movs r3, 0x36 + ldrsh r2, [r7, r3] + movs r3, 0x34 + ldrsh r0, [r7, r3] + subs r2, r0 + lsrs r0, r1, 31 + mov r8, r0 + lsrs r3, r2, 31 + mov r9, r3 + cmp r1, 0 + bge _08075524 + negs r1, r1 +_08075524: + lsls r0, r1, 24 + lsrs r6, r0, 16 + adds r0, r2, 0 + cmp r0, 0 + bge _08075530 + negs r0, r0 +_08075530: + lsls r0, 24 + lsrs r5, r0, 16 + movs r0, 0x2E + ldrsh r4, [r7, r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r2, r8 + cmp r2, 0 + beq _0807555C + movs r0, 0x1 + orrs r6, r0 + b _08075560 +_0807555C: + ldr r0, _0807556C @ =0x0000fffe + ands r6, r0 +_08075560: + mov r3, r9 + cmp r3, 0 + beq _08075570 + movs r0, 0x1 + orrs r5, r0 + b _08075574 + .align 2, 0 +_0807556C: .4byte 0x0000fffe +_08075570: + ldr r0, _0807558C @ =0x0000fffe + ands r5, r0 +_08075574: + movs r0, 0 + strh r6, [r7, 0x30] + strh r5, [r7, 0x32] + strh r0, [r7, 0x36] + strh r0, [r7, 0x34] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807558C: .4byte 0x0000fffe + thumb_func_end sub_80754F8 + + thumb_func_start sub_8075590 +sub_8075590: @ 8075590 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80754F8 + ldr r1, _080755B4 @ =sub_807563C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080755B4: .4byte sub_807563C + thumb_func_end sub_8075590 + + thumb_func_start sub_80755B8 +sub_80755B8: @ 80755B8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80754F8 + ldr r1, _080755DC @ =sub_8075658 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080755DC: .4byte sub_8075658 + thumb_func_end sub_80755B8 + + thumb_func_start sub_80755E0 +sub_80755E0: @ 80755E0 + push {r4-r6,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080755F0 + movs r0, 0x1 + b _08075634 +_080755F0: + ldrh r1, [r2, 0x30] + ldrh r4, [r2, 0x32] + ldrh r6, [r2, 0x34] + ldrh r5, [r2, 0x36] + adds r0, r6, r1 + lsls r3, r0, 16 + lsrs r6, r3, 16 + adds r0, r5, r4 + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08075612 + lsrs r0, r3, 24 + negs r0, r0 + b _08075614 +_08075612: + lsrs r0, r3, 24 +_08075614: + strh r0, [r2, 0x24] + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _08075624 + lsrs r0, r5, 8 + negs r0, r0 + b _08075626 +_08075624: + lsrs r0, r5, 8 +_08075626: + strh r0, [r2, 0x26] + strh r6, [r2, 0x34] + strh r5, [r2, 0x36] + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + movs r0, 0 +_08075634: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80755E0 + + thumb_func_start sub_807563C +sub_807563C: @ 807563C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _08075650 + adds r0, r4, 0 + bl sub_8074A70 +_08075650: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807563C + + thumb_func_start sub_8075658 +sub_8075658: @ 8075658 + push {r4,lr} + adds r4, r0, 0 + bl sub_801236C + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _08075672 + adds r0, r4, 0 + bl sub_8074A70 +_08075672: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075658 + + thumb_func_start sub_8075678 +sub_8075678: @ 8075678 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + subs r0, r1, r0 + cmp r0, 0 + bge _0807568C + negs r0, r0 +_0807568C: + lsls r0, 8 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80754F8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075678 + + thumb_func_start sub_80756A4 +sub_80756A4: @ 80756A4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_8075678 + ldr r1, _080756C8 @ =sub_807563C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080756C8: .4byte sub_807563C + thumb_func_end sub_80756A4 + + thumb_func_start sub_80756CC +sub_80756CC: @ 80756CC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + movs r0, 0x32 + ldrsh r1, [r7, r0] + movs r2, 0x30 + ldrsh r0, [r7, r2] + subs r1, r0 + movs r3, 0x36 + ldrsh r2, [r7, r3] + movs r3, 0x34 + ldrsh r0, [r7, r3] + subs r2, r0 + lsrs r0, r1, 31 + mov r8, r0 + lsrs r3, r2, 31 + mov r9, r3 + cmp r1, 0 + bge _080756F8 + negs r1, r1 +_080756F8: + lsls r0, r1, 20 + lsrs r6, r0, 16 + adds r0, r2, 0 + cmp r0, 0 + bge _08075704 + negs r0, r0 +_08075704: + lsls r0, 20 + lsrs r5, r0, 16 + movs r0, 0x2E + ldrsh r4, [r7, r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r2, r8 + cmp r2, 0 + beq _08075730 + movs r0, 0x1 + orrs r6, r0 + b _08075734 +_08075730: + ldr r0, _08075740 @ =0x0000fffe + ands r6, r0 +_08075734: + mov r3, r9 + cmp r3, 0 + beq _08075744 + movs r0, 0x1 + orrs r5, r0 + b _08075748 + .align 2, 0 +_08075740: .4byte 0x0000fffe +_08075744: + ldr r0, _08075760 @ =0x0000fffe + ands r5, r0 +_08075748: + movs r0, 0 + strh r6, [r7, 0x30] + strh r5, [r7, 0x32] + strh r0, [r7, 0x36] + strh r0, [r7, 0x34] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075760: .4byte 0x0000fffe + thumb_func_end sub_80756CC + + thumb_func_start sub_8075764 +sub_8075764: @ 8075764 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80756CC + ldr r1, _08075788 @ =sub_80757E8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075788: .4byte sub_80757E8 + thumb_func_end sub_8075764 + + thumb_func_start sub_807578C +sub_807578C: @ 807578C + push {r4-r6,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _0807579C + movs r0, 0x1 + b _080757E0 +_0807579C: + ldrh r1, [r2, 0x30] + ldrh r4, [r2, 0x32] + ldrh r6, [r2, 0x34] + ldrh r5, [r2, 0x36] + adds r0, r6, r1 + lsls r3, r0, 16 + lsrs r6, r3, 16 + adds r0, r5, r4 + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080757BE + lsrs r0, r3, 20 + negs r0, r0 + b _080757C0 +_080757BE: + lsrs r0, r3, 20 +_080757C0: + strh r0, [r2, 0x24] + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _080757D0 + lsrs r0, r5, 4 + negs r0, r0 + b _080757D2 +_080757D0: + lsrs r0, r5, 4 +_080757D2: + strh r0, [r2, 0x26] + strh r6, [r2, 0x34] + strh r5, [r2, 0x36] + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + movs r0, 0 +_080757E0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807578C + + thumb_func_start sub_80757E8 +sub_80757E8: @ 80757E8 + push {r4,lr} + adds r4, r0, 0 + bl sub_807578C + lsls r0, 24 + cmp r0, 0 + beq _080757FC + adds r0, r4, 0 + bl sub_8074A70 +_080757FC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80757E8 + + thumb_func_start sub_8075804 +sub_8075804: @ 8075804 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + subs r0, r1, r0 + cmp r0, 0 + bge _08075818 + negs r0, r0 +_08075818: + lsls r0, 4 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80756CC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075804 + + thumb_func_start sub_8075830 +sub_8075830: @ 8075830 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_8075804 + ldr r1, _08075854 @ =sub_80757E8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075854: .4byte sub_80757E8 + thumb_func_end sub_8075830 + + thumb_func_start sub_8075858 +sub_8075858: @ 8075858 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsls r3, 16 + lsrs r3, 16 + ldr r5, _080758D0 @ =0xffff0000 + lsls r2, 16 + lsrs r1, 16 + orrs r1, r2 + str r1, [sp] + ldr r0, [sp, 0x4] + ands r0, r5 + orrs r0, r3 + str r0, [sp, 0x4] + bl sub_80758DC + lsls r0, 24 + cmp r0, 0 + beq _08075894 + mov r0, sp + ldrh r0, [r0] + negs r0, r0 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp] + ands r1, r5 + orrs r1, r0 + str r1, [sp] +_08075894: + ldr r1, _080758D4 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x3] + lsls r4, 26 + lsrs r4, 27 + add r5, sp, 0x8 + mov r0, sp + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + ldr r0, _080758D8 @ =gUnknown_2021BCC + lsls r4, 3 + adds r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x4] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x6] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080758D0: .4byte 0xffff0000 +_080758D4: .4byte gUnknown_202063C +_080758D8: .4byte gUnknown_2021BCC + thumb_func_end sub_8075858 + + thumb_func_start sub_80758DC +sub_80758DC: @ 80758DC + movs r0, 0 + bx lr + thumb_func_end sub_80758DC + + thumb_func_start sub_80758E0 +sub_80758E0: @ 80758E0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r2, _08075978 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r4, r1, r2 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075914 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_08075914: + movs r7, 0x3 + ands r5, r7 + lsls r2, r5, 2 + ldrb r1, [r4, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + cmp r0, 0 + bne _0807595C + ldr r0, _0807597C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x6] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_0807595C: + ldrb r3, [r4, 0x1] + orrs r3, r7 + strb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075978: .4byte gUnknown_202063C +_0807597C: .4byte gUnknown_2024018 + thumb_func_end sub_80758E0 + + thumb_func_start sub_8075980 +sub_8075980: @ 8075980 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r2, 0x80 + lsls r2, 1 + adds r0, r4, 0 + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldr r1, _080759D8 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x1] + movs r1, 0x4 + negs r1, r1 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + movs r2, 0xD + negs r2, r2 + ands r1, r2 + strb r1, [r0, 0x1] + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r1, 0x7F + ands r1, r2 + strb r1, [r3] + ldrb r3, [r0, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r0, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + bl sub_80073F0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080759D8: .4byte gUnknown_202063C + thumb_func_end sub_8075980 + + thumb_func_start sub_80759DC +sub_80759DC: @ 80759DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08075A14 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r2, r1, r2 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + ldr r1, _08075A18 @ =gUnknown_2021BCC + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x4] + movs r3, 0x4 + ldrsh r0, [r0, r3] + cmp r0, 0 + bge _08075A08 + negs r0, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_08075A08: + lsls r0, r1, 16 + asrs r0, 19 + strh r0, [r2, 0x26] + pop {r0} + bx r0 + .align 2, 0 +_08075A14: .4byte gUnknown_202063C +_08075A18: .4byte gUnknown_2021BCC + thumb_func_end sub_80759DC + + thumb_func_start sub_8075A1C +sub_8075A1C: @ 8075A1C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + ldr r0, [sp, 0x28] + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 16 + lsrs r5, r2, 16 + lsls r3, 16 + lsrs r7, r3, 16 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08075AC2 + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + cmp r6, 0 + beq _08075A6A + ldrb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 +_08075A6A: + ldr r6, _08075AD0 @ =0xffff0000 + lsls r0, r7, 16 + orrs r5, r0 + str r5, [sp] + ldr r0, [sp, 0x4] + ands r0, r6 + mov r1, r8 + orrs r0, r1 + str r0, [sp, 0x4] + bl sub_80758DC + lsls r0, 24 + cmp r0, 0 + beq _08075A98 + mov r0, sp + ldrh r0, [r0] + negs r0, r0 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp] + ands r1, r6 + orrs r1, r0 + str r1, [sp] +_08075A98: + ldrb r4, [r4, 0x3] + lsls r4, 26 + lsrs r4, 27 + add r5, sp, 0x8 + mov r0, sp + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + ldr r0, _08075AD4 @ =gUnknown_2021BCC + lsls r4, 3 + adds r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x4] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x6] +_08075AC2: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075AD0: .4byte 0xffff0000 +_08075AD4: .4byte gUnknown_2021BCC + thumb_func_end sub_8075A1C + + thumb_func_start sub_8075AD8 +sub_8075AD8: @ 8075AD8 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r3, 0x80 + lsls r3, 1 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x1 + adds r2, r3, 0 + bl sub_8075A1C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldrb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075AD8 + + thumb_func_start sub_8075B18 +sub_8075B18: @ 8075B18 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl ArcTan2 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8075B18 + + thumb_func_start sub_8075B30 +sub_8075B30: @ 8075B30 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B18 + lsls r0, 16 + negs r0, r0 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8075B30 + + thumb_func_start sub_8075B48 +sub_8075B48: @ 8075B48 + push {r4-r7,lr} + lsls r1, 24 + lsls r0, 20 + lsrs r0, 16 + cmp r1, 0 + bne _08075BC4 + ldr r2, _08075BB8 @ =gUnknown_20371F8 + ldr r1, _08075BBC @ =gUnknown_20375F8 + lsls r0, 1 + adds r4, r0, r1 + adds r5, r0, r2 + movs r6, 0xF +_08075B60: + ldr r0, [r5] + lsls r2, r0, 27 + lsrs r2, 27 + lsls r1, r0, 22 + lsrs r1, 27 + adds r2, r1 + lsls r0, 17 + lsrs r0, 27 + adds r0, r2 + movs r1, 0x3 + bl __udivsi3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1F + ands r0, r1 + ldrb r1, [r4] + movs r3, 0x20 + negs r3, r3 + adds r2, r3, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] + lsls r3, r0, 5 + ldrh r1, [r4] + ldr r7, _08075BC0 @ =0xfffffc1f + adds r2, r7, 0 + ands r1, r2 + orrs r1, r3 + strh r1, [r4] + lsls r0, 2 + ldrb r1, [r4, 0x1] + movs r3, 0x7D + negs r3, r3 + adds r2, r3, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x1] + adds r4, 0x2 + adds r5, 0x2 + subs r6, 0x1 + cmp r6, 0 + bge _08075B60 + b _08075BD4 + .align 2, 0 +_08075BB8: .4byte gUnknown_20371F8 +_08075BBC: .4byte gUnknown_20375F8 +_08075BC0: .4byte 0xfffffc1f +_08075BC4: + lsls r1, r0, 1 + ldr r0, _08075BDC @ =gUnknown_20371F8 + adds r0, r1, r0 + ldr r2, _08075BE0 @ =gUnknown_20375F8 + adds r1, r2 + ldr r2, _08075BE4 @ =0x04000008 + bl CpuSet +_08075BD4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075BDC: .4byte gUnknown_20371F8 +_08075BE0: .4byte gUnknown_20375F8 +_08075BE4: .4byte 0x04000008 + thumb_func_end sub_8075B48 + + thumb_func_start sub_8075BE8 +sub_8075BE8: @ 8075BE8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + ldr r6, [sp, 0x24] + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r7, r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + lsls r6, 24 + lsrs r6, 24 + mov r9, r6 + movs r4, 0 + cmp r0, 0 + beq _08075C1C + movs r4, 0xE +_08075C1C: + cmp r1, 0 + beq _08075C2E + ldr r0, _08075CB0 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C2E: + cmp r2, 0 + beq _08075C40 + ldr r0, _08075CB4 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C40: + cmp r3, 0 + beq _08075C64 + ldr r6, _08075CB0 @ =gUnknown_2037F1A + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075C64 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C64: + cmp r7, 0 + beq _08075C88 + ldr r6, _08075CB4 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075C88 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C88: + mov r0, r8 + cmp r0, 0 + beq _08075C94 + movs r0, 0x80 + lsls r0, 1 + orrs r4, r0 +_08075C94: + mov r0, r9 + cmp r0, 0 + beq _08075CA0 + movs r0, 0x80 + lsls r0, 2 + orrs r4, r0 +_08075CA0: + adds r0, r4, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08075CB0: .4byte gUnknown_2037F1A +_08075CB4: .4byte gUnknown_2037F1B + thumb_func_end sub_8075BE8 + + thumb_func_start sub_8075CB8 +sub_8075CB8: @ 8075CB8 + push {r4-r7,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + movs r4, 0 + cmp r0, 0 + beq _08075CF2 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075CF2 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r4, 0x1 + lsls r4, r0 +_08075CF2: + cmp r5, 0 + beq _08075D1E + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D1E + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D1E: + cmp r6, 0 + beq _08075D4A + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D4A + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D4A: + cmp r7, 0 + beq _08075D76 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D76 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D76: + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8075CB8 + + thumb_func_start sub_8075D80 +sub_8075D80: @ 8075D80 + lsls r0, 24 + lsrs r0, 24 + bx lr + thumb_func_end sub_8075D80 + + thumb_func_start sub_8075D88 +sub_8075D88: @ 8075D88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8075D88 + + thumb_func_start sub_8075D9C +sub_8075D9C: @ 8075D9C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08075DDA + ldr r2, _08075DC8 @ =gUnknown_2037F02 + movs r3, 0x6 + ldrsh r0, [r2, r3] + movs r1, 0 + cmp r0, 0 + bne _08075DB6 + movs r1, 0x1 +_08075DB6: + movs r3, 0x4 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _08075DCC + adds r0, r4, 0 + bl sub_8075160 + b _08075DD2 + .align 2, 0 +_08075DC8: .4byte gUnknown_2037F02 +_08075DCC: + adds r0, r4, 0 + bl sub_8075114 +_08075DD2: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _08075DEE +_08075DDA: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _08075DEE + adds r0, r4, 0 + bl sub_8074EE0 +_08075DEE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075D9C + + thumb_func_start sub_8075DF4 +sub_8075DF4: @ 8075DF4 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r6, _08075E6C @ =gUnknown_2037F02 + movs r1, 0xA + ldrsh r0, [r6, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0 + cmp r0, 0 + bne _08075E0C + movs r1, 0x1 +_08075E0C: + ldrb r0, [r6, 0xA] + movs r7, 0x1 + cmp r0, 0 + bne _08075E16 + movs r7, 0x3 +_08075E16: + adds r0, r5, 0 + bl sub_8075160 + ldr r0, _08075E70 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08075E30 + ldrh r0, [r6, 0x4] + negs r0, r0 + strh r0, [r6, 0x4] +_08075E30: + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldr r4, _08075E74 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + adds r1, r7, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _08075E78 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _08075E7C @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075E6C: .4byte gUnknown_2037F02 +_08075E70: .4byte gUnknown_2037F1A +_08075E74: .4byte gUnknown_2037F1B +_08075E78: .4byte sub_8075590 +_08075E7C: .4byte sub_8072740 + thumb_func_end sub_8075DF4 + + thumb_func_start sub_8075E80 +sub_8075E80: @ 8075E80 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _08075EE0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08075EA0 + ldr r1, _08075EE4 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08075EA0: + ldr r4, _08075EE4 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _08075EE8 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _08075EEC @ =sub_8075EF0 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08075EE0: .4byte gUnknown_2037F1A +_08075EE4: .4byte gUnknown_2037F02 +_08075EE8: .4byte gUnknown_2037F1B +_08075EEC: .4byte sub_8075EF0 + thumb_func_end sub_8075E80 + + thumb_func_start sub_8075EF0 +sub_8075EF0: @ 8075EF0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _08075F04 + adds r0, r4, 0 + bl sub_8072740 +_08075F04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075EF0 + + thumb_func_start sub_8075F0C +sub_8075F0C: @ 8075F0C + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _08075F20 @ =gUnknown_2037F02 + movs r2, 0xC + ldrsh r1, [r0, r2] + cmp r1, 0 + bne _08075F24 + movs r4, 0x1 + movs r7, 0x3 + b _08075F28 + .align 2, 0 +_08075F20: .4byte gUnknown_2037F02 +_08075F24: + movs r4, 0 + movs r7, 0x1 +_08075F28: + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08075F40 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075160 + ldr r0, _08075F3C @ =gUnknown_2037F1A + b _08075F4A + .align 2, 0 +_08075F3C: .4byte gUnknown_2037F1A +_08075F40: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075114 + ldr r0, _08075FA8 @ =gUnknown_2037F1B +_08075F4A: + ldrb r6, [r0] + ldr r0, _08075FAC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08075F62 + ldr r1, _08075FB0 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08075F62: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075114 + ldr r4, _08075FB0 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r5, 0x32] + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r5, 0x36] + ldr r0, _08075FB4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _08075FB8 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075FA8: .4byte gUnknown_2037F1B +_08075FAC: .4byte gUnknown_2037F1A +_08075FB0: .4byte gUnknown_2037F02 +_08075FB4: .4byte sub_8075590 +_08075FB8: .4byte sub_8072740 + thumb_func_end sub_8075F0C + + thumb_func_start sub_8075FBC +sub_8075FBC: @ 8075FBC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80749D4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08076026 + movs r6, 0 + ldr r2, _08076018 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r1, r0, 2 +_08075FD8: + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r4, r0, r2 + adds r5, r4, 0 + adds r5, 0x3E + ldrb r0, [r5] + lsls r0, 31 + cmp r0, 0 + bne _0807601C + adds r0, r4, 0 + adds r1, r2 + movs r2, 0x44 + bl memcpy + ldrb r1, [r4, 0x1] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] + ldrb r0, [r5] + adds r2, 0x8 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r5] + lsls r0, r6, 16 + asrs r0, 16 + b _0807602A + .align 2, 0 +_08076018: .4byte gUnknown_202063C +_0807601C: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x3F + bls _08075FD8 +_08076026: + movs r0, 0x1 + negs r0, r0 +_0807602A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8075FBC + + thumb_func_start sub_8076030 +sub_8076030: @ 8076030 + push {lr} + adds r3, r0, 0 + adds r3, 0x3F + ldrb r1, [r3] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r3] + bl sub_8007280 + pop {r0} + bx r0 + thumb_func_end sub_8076030 + + thumb_func_start sub_8076048 +sub_8076048: @ 8076048 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + movs r3, 0 + ldr r2, _080760C0 @ =gUnknown_2037F02 + movs r0, 0x4 + ldrsh r1, [r2, r0] + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08076062 + movs r3, 0x1 +_08076062: + cmp r1, r0 + bge _08076068 + ldr r3, _080760C4 @ =0x0000ffff +_08076068: + movs r0, 0x6 + ldrsh r1, [r2, r0] + movs r4, 0x2 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08076076 + movs r6, 0x1 +_08076076: + cmp r1, r0 + bge _0807607C + ldr r6, _080760C4 @ =0x0000ffff +_0807607C: + ldr r0, _080760C8 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + movs r1, 0 + strh r1, [r4, 0x8] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0xA] + strh r1, [r4, 0xC] + ldrh r0, [r2] + strh r0, [r4, 0xE] + ldrh r0, [r2, 0x2] + strh r0, [r4, 0x10] + strh r3, [r4, 0x12] + strh r6, [r4, 0x14] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x16] + ldrh r0, [r2, 0x6] + strh r0, [r4, 0x18] + ldrh r1, [r2, 0x2] + lsls r1, 8 + ldrh r0, [r2] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080760CC @ =sub_80760D0 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080760C0: .4byte gUnknown_2037F02 +_080760C4: .4byte 0x0000ffff +_080760C8: .4byte gUnknown_3005090 +_080760CC: .4byte sub_80760D0 + thumb_func_end sub_8076048 + + thumb_func_start sub_80760D0 +sub_80760D0: @ 80760D0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807611C @ =gUnknown_3005090 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xA + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _08076164 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08076120 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r1, [r4, r3] + movs r3, 0x16 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _08076134 + ldrh r0, [r4, 0x12] + adds r0, r2, r0 + strh r0, [r4, 0xE] + b _08076134 + .align 2, 0 +_0807611C: .4byte gUnknown_3005090 +_08076120: + ldrh r2, [r4, 0x10] + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r3, 0x18 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _08076134 + ldrh r0, [r4, 0x14] + adds r0, r2, r0 + strh r0, [r4, 0x10] +_08076134: + ldrh r1, [r4, 0x10] + lsls r1, 8 + ldrh r0, [r4, 0xE] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076164 + movs r3, 0x10 + ldrsh r1, [r4, r3] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076164 + adds r0, r5, 0 + bl sub_8072760 +_08076164: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80760D0 + + thumb_func_start sub_807616C +sub_807616C: @ 807616C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0807618C @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08076190 + adds r0, r4, 0 + bl sub_8072760 + b _080761B6 + .align 2, 0 +_0807618C: .4byte gUnknown_2037F02 +_08076190: + ldr r1, _080761BC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080761C0 @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + lsls r1, 4 + ldr r3, _080761C4 @ =0x00000101 + adds r2, r3, 0 + adds r1, r2 + strh r1, [r0, 0x8] + bl sub_80761C8 +_080761B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080761BC: .4byte gUnknown_3005090 +_080761C0: .4byte gUnknown_202063C +_080761C4: .4byte 0x00000101 + thumb_func_end sub_807616C + + thumb_func_start sub_80761C8 +sub_80761C8: @ 80761C8 + ldr r3, _080761E8 @ =gUnknown_2037F02 + ldrh r1, [r3, 0x2] + movs r2, 0 + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0xE] + strh r2, [r0, 0x10] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0x12] + strh r2, [r0, 0x14] + ldrh r1, [r3, 0x8] + strh r1, [r0, 0x16] + ldr r1, _080761EC @ =sub_80761F0 + str r1, [r0] + bx lr + .align 2, 0 +_080761E8: .4byte gUnknown_2037F02 +_080761EC: .4byte sub_80761F0 + thumb_func_end sub_80761C8 + + thumb_func_start sub_80761F0 +sub_80761F0: @ 80761F0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08076248 @ =gUnknown_3005090 + adds r4, r0, r1 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x12 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08076280 + movs r0, 0 + strh r0, [r4, 0x10] + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0807624C + ldrh r2, [r4, 0xC] + adds r2, 0x1 + strh r2, [r4, 0xC] + ldrh r0, [r4, 0x8] + lsls r2, 24 + lsrs r2, 24 + ldrh r3, [r4, 0xA] + movs r1, 0xF + bl sub_8045274 + movs r2, 0xC + ldrsh r1, [r4, r2] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076280 + movs r0, 0x1 + strh r0, [r4, 0x14] + b _08076280 + .align 2, 0 +_08076248: .4byte gUnknown_3005090 +_0807624C: + ldrh r2, [r4, 0xC] + subs r2, 0x1 + strh r2, [r4, 0xC] + ldrh r0, [r4, 0x8] + lsls r2, 24 + lsrs r2, 24 + ldrh r3, [r4, 0xA] + movs r1, 0xF + bl sub_8045274 + movs r0, 0xC + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _08076280 + ldrh r0, [r4, 0x16] + subs r0, 0x1 + strh r0, [r4, 0x16] + lsls r0, 16 + cmp r0, 0 + beq _0807627A + strh r1, [r4, 0x10] + strh r1, [r4, 0x14] + b _08076280 +_0807627A: + adds r0, r5, 0 + bl sub_8072760 +_08076280: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80761F0 + + thumb_func_start sub_8076288 +sub_8076288: @ 8076288 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080762A8 @ =gUnknown_2037F02 + ldrh r0, [r0] + bl sub_80089E8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _080762AC + adds r0, r4, 0 + bl sub_8072760 + b _080762C2 + .align 2, 0 +_080762A8: .4byte gUnknown_2037F02 +_080762AC: + ldr r1, _080762C8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + lsls r1, r2, 4 + ldr r2, _080762CC @ =0x00000101 + adds r1, r2 + strh r1, [r0, 0x8] + bl sub_80761C8 +_080762C2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080762C8: .4byte gUnknown_3005090 +_080762CC: .4byte 0x00000101 + thumb_func_end sub_8076288 + + thumb_func_start sub_80762D0 +sub_80762D0: @ 80762D0 + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + strh r1, [r3, 0x16] + strh r1, [r3, 0x18] + strh r1, [r3, 0x1A] + strh r4, [r3, 0x26] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r3, 0x1C] + strh r0, [r3, 0x1E] + strh r1, [r3, 0x20] + adds r0, r3, 0 + adds r0, 0x22 + adds r3, 0x24 + adds r1, r3, 0 + bl sub_80765C0 + adds r0, r4, 0 + movs r1, 0 + bl sub_80758E0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80762D0 + + thumb_func_start sub_8076308 +sub_8076308: @ 8076308 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080763A8 @ =gUnknown_2037F28 + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + bl sub_80765C8 + movs r3, 0x16 + ldrsh r1, [r4, r3] + lsls r1, 3 + adds r1, r0, r1 + str r1, [r5] + movs r6, 0 + ldrsh r2, [r1, r6] + ldr r0, _080763AC @ =0x00007ffe + cmp r2, r0 + beq _080763B0 + cmp r2, r0 + bgt _08076410 + subs r0, 0x1 + cmp r2, r0 + beq _080763B6 + ldrb r0, [r1, 0x5] + cmp r0, 0 + bne _08076356 + ldrh r0, [r1] + strh r0, [r4, 0x1C] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x1E] + ldrb r0, [r1, 0x4] + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + adds r0, r1, 0 + adds r0, 0x8 + str r0, [r5] +_08076356: + ldr r1, [r5] + ldrh r0, [r1] + ldrh r2, [r4, 0x1C] + adds r0, r2 + strh r0, [r4, 0x1C] + ldrh r0, [r1, 0x2] + ldrh r3, [r4, 0x1E] + adds r0, r3 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x20] + ldrb r1, [r1, 0x4] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r6, 0x1C + ldrsh r1, [r4, r6] + movs r3, 0x1E + ldrsh r2, [r4, r3] + ldrh r3, [r4, 0x20] + bl sub_8075858 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + ldrh r0, [r4, 0x18] + adds r0, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + asrs r0, 16 + ldr r1, [r5] + ldrb r1, [r1, 0x5] + cmp r0, r1 + blt _08076436 + movs r0, 0 + strh r0, [r4, 0x18] + b _08076408 + .align 2, 0 +_080763A8: .4byte gUnknown_2037F28 +_080763AC: .4byte 0x00007ffe +_080763B0: + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x16] + b _08076436 +_080763B6: + ldrh r2, [r1, 0x2] + movs r6, 0x2 + ldrsh r0, [r1, r6] + cmp r0, 0 + beq _08076408 + ldrh r1, [r4, 0x1A] + movs r3, 0x1A + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080763D6 + subs r0, r1, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + cmp r0, 0 + bne _080763D8 + b _08076408 +_080763D6: + strh r2, [r4, 0x1A] +_080763D8: + movs r6, 0x16 + ldrsh r0, [r4, r6] + cmp r0, 0 + beq _08076436 + ldr r3, _08076400 @ =gUnknown_2037F28 + ldr r5, _08076404 @ =0x00007ffd +_080763E4: + ldrh r2, [r4, 0x16] + subs r1, r2, 0x1 + strh r1, [r4, 0x16] + ldr r0, [r3] + subs r0, 0x8 + str r0, [r3] + movs r6, 0 + ldrsh r0, [r0, r6] + cmp r0, r5 + beq _08076434 + lsls r0, r1, 16 + cmp r0, 0 + bne _080763E4 + b _08076436 + .align 2, 0 +_08076400: .4byte gUnknown_2037F28 +_08076404: .4byte 0x00007ffd +_08076408: + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + b _08076436 +_08076410: + ldr r2, _08076430 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + movs r0, 0 + b _08076438 + .align 2, 0 +_08076430: .4byte gUnknown_202063C +_08076434: + strh r2, [r4, 0x16] +_08076436: + movs r0, 0x1 +_08076438: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8076308 + + thumb_func_start sub_8076440 +sub_8076440: @ 8076440 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80764EC + lsls r0, 16 + lsrs r0, 15 + movs r1, 0x40 + subs r5, r1, r0 + ldr r1, _0807648C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrb r1, [r4, 0x3] + lsls r1, 26 + lsrs r1, 27 + lsls r0, r5, 8 + ldr r2, _08076490 @ =gUnknown_2021BCC + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, 0x80 + ble _0807647C + movs r0, 0x80 +_0807647C: + subs r0, r5, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807648C: .4byte gUnknown_202063C +_08076490: .4byte gUnknown_2021BCC + thumb_func_end sub_8076440 + + thumb_func_start sub_8076494 +sub_8076494: @ 8076494 + push {r4,r5,lr} + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 24 + lsrs r0, 24 + bl sub_80764EC + lsls r0, 16 + lsrs r0, 15 + movs r1, 0x40 + subs r5, r1, r0 + ldr r1, _080764E4 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrb r1, [r4, 0x3] + lsls r1, 26 + lsrs r1, 27 + lsls r0, r5, 8 + ldr r2, _080764E8 @ =gUnknown_2021BCC + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, 0x80 + ble _080764D4 + movs r0, 0x80 +_080764D4: + subs r0, r5, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080764E4: .4byte gUnknown_202063C +_080764E8: .4byte gUnknown_2021BCC + thumb_func_end sub_8076494 + + thumb_func_start sub_80764EC +sub_80764EC: @ 80764EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _08076548 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r1, _0807654C @ =gUnknown_2023D44 + ldr r6, _08076550 @ =gUnknown_2023BCE +_08076508: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, r2 + bne _080765AC + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08076568 + ldr r0, _08076554 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807655C + lsls r0, r4, 1 + adds r0, r6 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08076558 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + b _0807655E + .align 2, 0 +_08076548: .4byte gUnknown_202063C +_0807654C: .4byte gUnknown_2023D44 +_08076550: .4byte gUnknown_2023BCE +_08076554: .4byte gUnknown_2024018 +_08076558: .4byte gUnknown_2024284 +_0807655C: + ldrh r1, [r1, 0x2] +_0807655E: + ldr r0, _08076564 @ =gUnknown_8235E6C + b _080765A0 + .align 2, 0 +_08076564: .4byte gUnknown_8235E6C +_08076568: + ldr r0, _08076594 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807659C + lsls r0, r4, 1 + adds r0, r6 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08076598 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + b _0807659E + .align 2, 0 +_08076594: .4byte gUnknown_2024018 +_08076598: .4byte gUnknown_202402C +_0807659C: + ldrh r1, [r1, 0x2] +_0807659E: + ldr r0, _080765A8 @ =gUnknown_82349CC +_080765A0: + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _080765B8 + .align 2, 0 +_080765A8: .4byte gUnknown_82349CC +_080765AC: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08076508 + movs r0, 0x40 +_080765B8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80764EC + + thumb_func_start sub_80765C0 +sub_80765C0: @ 80765C0 + strh r2, [r0] + asrs r2, 16 + strh r2, [r1] + bx lr + thumb_func_end sub_80765C0 + + thumb_func_start sub_80765C8 +sub_80765C8: @ 80765C8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + orrs r0, r1 + bx lr + thumb_func_end sub_80765C8 + + thumb_func_start sub_80765D4 +sub_80765D4: @ 80765D4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r5, r3, 0 + ldr r0, [sp, 0x14] + ldr r4, [sp, 0x18] + ldr r6, [sp, 0x1C] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r6, 16 + lsrs r6, 16 + mov r3, r8 + strh r6, [r3, 0x18] + strh r1, [r3, 0x26] + strh r2, [r3, 0x1A] + strh r5, [r3, 0x1C] + strh r0, [r3, 0x22] + strh r4, [r3, 0x24] + lsls r0, 16 + asrs r0, 16 + lsls r2, 16 + asrs r2, 16 + subs r0, r2 + adds r1, r6, 0 + bl __divsi3 + mov r1, r8 + strh r0, [r1, 0x1E] + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + subs r4, r5 + adds r0, r4, 0 + adds r1, r6, 0 + bl __divsi3 + mov r3, r8 + strh r0, [r3, 0x20] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80765D4 + + thumb_func_start sub_8076640 +sub_8076640: @ 8076640 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08076652 + movs r0, 0 + b _080766AE +_08076652: + subs r0, r1, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + cmp r0, 0 + beq _0807666C + ldrh r0, [r4, 0x1E] + ldrh r3, [r4, 0x1A] + adds r0, r3 + strh r0, [r4, 0x1A] + ldrh r0, [r4, 0x20] + ldrh r1, [r4, 0x1C] + adds r0, r1 + b _08076672 +_0807666C: + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x1A] + ldrh r0, [r4, 0x24] +_08076672: + strh r0, [r4, 0x1C] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1A + ldrsh r1, [r4, r2] + movs r3, 0x1C + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8075858 + movs r0, 0x18 + ldrsh r3, [r4, r0] + cmp r3, 0 + beq _0807669C + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + b _080766AC +_0807669C: + ldr r2, _080766B4 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x26] +_080766AC: + ldrb r0, [r4, 0x18] +_080766AE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080766B4: .4byte gUnknown_202063C + thumb_func_end sub_8076640 + + thumb_func_start sub_80766B8 +sub_80766B8: @ 80766B8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080766E4 @ =gUnknown_2037EFE + ldrb r0, [r0] + movs r1, 0 + cmp r0, 0x1E + bls _080766D6 + movs r1, 0x1 + cmp r0, 0x64 + bls _080766D6 + movs r1, 0x3 + cmp r0, 0xC8 + bhi _080766D6 + movs r1, 0x2 +_080766D6: + ldr r0, _080766E8 @ =gUnknown_2037F02 + strh r1, [r0, 0xE] + adds r0, r2, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080766E4: .4byte gUnknown_2037EFE +_080766E8: .4byte gUnknown_2037F02 + thumb_func_end sub_80766B8 + + thumb_func_start sub_80766EC +sub_80766EC: @ 80766EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + ldr r6, _080767E0 @ =gUnknown_2037F1B + ldrb r0, [r6] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0807672C + ldr r2, _080767E4 @ =gUnknown_202063C + ldr r1, _080767E8 @ =gUnknown_2023D44 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_0807672C: + ldr r0, _080767EC @ =gUnknown_2037F1A + mov r8, r0 + ldrb r0, [r0] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08076764 + ldr r2, _080767E4 @ =gUnknown_202063C + ldr r1, _080767E8 @ =gUnknown_2023D44 + mov r3, r8 + ldrb r0, [r3] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_08076764: + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0807679C + ldr r2, _080767E4 @ =gUnknown_202063C + ldr r1, _080767E8 @ =gUnknown_2023D44 + ldrb r0, [r6] + eors r0, r5 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_0807679C: + mov r1, r8 + ldrb r0, [r1] + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080767D4 + ldr r2, _080767E4 @ =gUnknown_202063C + ldr r1, _080767E8 @ =gUnknown_2023D44 + mov r3, r8 + ldrb r0, [r3] + eors r0, r5 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + ands r7, r0 + lsls r3, r7, 2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] +_080767D4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080767E0: .4byte gUnknown_2037F1B +_080767E4: .4byte gUnknown_202063C +_080767E8: .4byte gUnknown_2023D44 +_080767EC: .4byte gUnknown_2037F1A + thumb_func_end sub_80766EC + + thumb_func_start sub_80767F0 +sub_80767F0: @ 80767F0 + push {r4-r6,lr} + movs r5, 0 + ldr r0, _08076850 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _0807684A + ldr r6, _08076854 @ =gUnknown_202063C +_080767FE: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08076840 + adds r0, r4, 0 + bl sub_807685C + ldr r3, _08076858 @ =gUnknown_2023D44 + adds r3, r5, r3 + ldrb r2, [r3] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r6 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r2, [r0, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x8 + orrs r2, r1 + strb r2, [r0, 0x5] +_08076840: + adds r5, 0x1 + ldr r0, _08076850 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _080767FE +_0807684A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08076850: .4byte gUnknown_2023BCC +_08076854: .4byte gUnknown_202063C +_08076858: .4byte gUnknown_2023D44 + thumb_func_end sub_80767F0 + + thumb_func_start sub_807685C +sub_807685C: @ 807685C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1E + cmp r0, 0 + beq _0807687E + movs r1, 0x14 + cmp r0, 0x2 + beq _0807687E + movs r1, 0x32 + cmp r0, 0x1 + bne _0807687E + movs r1, 0x28 +_0807687E: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_807685C + + thumb_func_start sub_8076884 +sub_8076884: @ 8076884 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807689A + cmp r0, 0x3 + bne _0807689E +_0807689A: + movs r0, 0x2 + b _080768A0 +_0807689E: + movs r0, 0x1 +_080768A0: + movs r1, 0x4 + bl sub_80BC30C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8076884 + + thumb_func_start sub_80768B0 +sub_80768B0: @ 80768B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080768C6 + cmp r0, 0x3 + bne _080768CA +_080768C6: + movs r0, 0x2 + b _080768CC +_080768CA: + movs r0, 0x1 +_080768CC: + pop {r1} + bx r1 + thumb_func_end sub_80768B0 + + thumb_func_start sub_80768D0 +sub_80768D0: @ 80768D0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r4, [sp, 0x30] + ldr r5, [sp, 0x34] + ldr r6, [sp, 0x38] + mov r8, r6 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + lsls r4, 16 + lsrs r4, 16 + str r4, [sp, 0x4] + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x8] + lsls r0, r7, 3 + ldr r1, _080769B0 @ =gUnknown_83AE084 + adds r0, r1 + bl sub_80086DC + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + ldr r1, _080769B4 @ =gUnknown_83AE054 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x2] + bl sub_80089B8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080769B8 @ =gUnknown_202401C + ldr r0, [r4] + cmp r0, 0 + beq _0807694E + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _0807694E + movs r0, 0x80 + lsls r0, 6 + bl sub_8002BB0 + ldr r1, [r4] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + str r0, [r1] +_0807694E: + mov r3, r9 + cmp r3, 0 + bne _080769EC + adds r0, r6, 0 + ldr r1, [sp, 0x3C] + mov r2, r8 + bl sub_80440F4 + lsls r1, r5, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703A8 + ldr r3, [sp, 0x44] + cmp r3, 0x1 + beq _0807699A + ldr r0, [sp, 0x40] + lsls r1, r0, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0807699A + ldr r0, _080769BC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + ldr r2, [sp, 0x40] + lsls r0, r2, 2 + adds r0, r1 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _080769C4 +_0807699A: + lsls r0, r6, 3 + ldr r1, _080769C0 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080769B8 @ =gUnknown_202401C + ldr r1, [r1] + movs r3, 0xBE + lsls r3, 1 + adds r1, r3 + ldr r1, [r1] + movs r2, 0x1 + b _08076A46 + .align 2, 0 +_080769B0: .4byte gUnknown_83AE084 +_080769B4: .4byte gUnknown_83AE054 +_080769B8: .4byte gUnknown_202401C +_080769BC: .4byte gUnknown_2024018 +_080769C0: .4byte gUnknown_82350AC +_080769C4: + lsls r0, r6, 3 + ldr r1, _080769E4 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080769E8 @ =gUnknown_202401C + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + movs r2, 0x1 + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl sub_800ECF0 + b _08076A7C + .align 2, 0 +_080769E4: .4byte gUnknown_82350AC +_080769E8: .4byte gUnknown_202401C +_080769EC: + adds r0, r6, 0 + ldr r1, [sp, 0x3C] + mov r2, r8 + bl sub_80440F4 + lsls r1, r5, 20 + movs r3, 0x80 + lsls r3, 17 + adds r1, r3 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703A8 + ldr r0, [sp, 0x44] + cmp r0, 0x1 + beq _08076A32 + ldr r2, [sp, 0x40] + lsls r1, r2, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08076A32 + ldr r0, _08076A54 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + ldr r3, [sp, 0x40] + lsls r0, r3, 2 + adds r0, r1 + ldrh r2, [r0, 0x2] + cmp r2, 0 + beq _08076A60 +_08076A32: + lsls r0, r6, 3 + ldr r1, _08076A58 @ =gUnknown_823654C + adds r0, r1 + ldr r1, _08076A5C @ =gUnknown_202401C + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 +_08076A46: + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl sub_800F134 + b _08076A7C + .align 2, 0 +_08076A54: .4byte gUnknown_2024018 +_08076A58: .4byte gUnknown_823654C +_08076A5C: .4byte gUnknown_202401C +_08076A60: + lsls r0, r6, 3 + ldr r1, _08076AC8 @ =gUnknown_823654C + adds r0, r1 + ldr r1, _08076ACC @ =gUnknown_202401C + ldr r1, [r1] + movs r3, 0xBE + lsls r3, 1 + adds r1, r3 + ldr r1, [r1] + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl sub_800ECF0 +_08076A7C: + ldr r5, _08076ACC @ =gUnknown_202401C + ldr r0, [r5] + movs r4, 0xBE + lsls r4, 1 + adds r0, r4 + ldr r0, [r0] + ldr r2, [sp, 0xC] + lsls r1, r2, 5 + ldr r3, _08076AD0 @ =0x06010000 + adds r1, r3 + movs r2, 0x80 + lsls r2, 4 + movs r3, 0x1 + bl sub_8000EAC + ldr r0, [r5] + adds r0, r4 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + str r1, [r0] + mov r0, r9 + cmp r0, 0 + bne _08076ADC + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + ldr r1, _08076AD4 @ =gUnknown_83AE054 + adds r0, r1 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldr r3, _08076AD8 @ =gUnknown_82349CC + b _08076AEE + .align 2, 0 +_08076AC8: .4byte gUnknown_823654C +_08076ACC: .4byte gUnknown_202401C +_08076AD0: .4byte 0x06010000 +_08076AD4: .4byte gUnknown_83AE054 +_08076AD8: .4byte gUnknown_82349CC +_08076ADC: + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + ldr r1, _08076B18 @ =gUnknown_83AE054 + adds r0, r1 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldr r3, _08076B1C @ =gUnknown_8235E6C +_08076AEE: + lsls r2, r6, 2 + adds r2, r3 + ldrb r2, [r2, 0x1] + ldr r3, [sp, 0x4] + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + ldr r3, [sp, 0x8] + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08076B18: .4byte gUnknown_83AE054 +_08076B1C: .4byte gUnknown_8235E6C + thumb_func_end sub_80768D0 + + thumb_func_start sub_8076B20 +sub_8076B20: @ 8076B20 + push {lr} + bl sub_8007804 + pop {r0} + bx r0 + thumb_func_end sub_8076B20 + + thumb_func_start sub_8076B2C +sub_8076B2C: @ 8076B2C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08076C08 + ldr r0, _08076B88 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r8 + lsls r2, r1, 2 + adds r1, r2, r0 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08076B94 + ldr r0, _08076B8C @ =gUnknown_2023BCE + mov r1, r8 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08076B90 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + ldrh r0, [r4] + muls r0, r6 + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + adds r2, r0, 0 + b _08076B9C + .align 2, 0 +_08076B88: .4byte gUnknown_2024018 +_08076B8C: .4byte gUnknown_2023BCE +_08076B90: .4byte gUnknown_2024284 +_08076B94: + ldrh r7, [r1, 0x2] + ldr r0, _08076BD4 @ =gUnknown_2024008 + adds r0, r2, r0 + ldr r2, [r0] +_08076B9C: + cmp r7, 0xC9 + bne _08076BEC + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08076BD8 + movs r0, 0xC9 + b _08076BE2 + .align 2, 0 +_08076BD4: .4byte gUnknown_2024008 +_08076BD8: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08076BE2: + lsls r1, r0, 2 + ldr r0, _08076BE8 @ =gUnknown_8235E6C + b _08076CDC + .align 2, 0 +_08076BE8: .4byte gUnknown_8235E6C +_08076BEC: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bls _08076BFC + ldr r4, _08076BF8 @ =gUnknown_8235E6C + b _08076CDE + .align 2, 0 +_08076BF8: .4byte gUnknown_8235E6C +_08076BFC: + lsls r1, r7, 2 + ldr r0, _08076C04 @ =gUnknown_8235E6C + b _08076CDC + .align 2, 0 +_08076C04: .4byte gUnknown_8235E6C +_08076C08: + ldr r0, _08076C48 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r8 + lsls r2, r1, 2 + adds r1, r2, r0 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08076C54 + ldr r0, _08076C4C @ =gUnknown_2023BCE + mov r1, r8 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08076C50 @ =gUnknown_202402C + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + ldrh r0, [r4] + muls r0, r6 + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + adds r2, r0, 0 + b _08076C5C + .align 2, 0 +_08076C48: .4byte gUnknown_2024018 +_08076C4C: .4byte gUnknown_2023BCE +_08076C50: .4byte gUnknown_202402C +_08076C54: + ldrh r7, [r1, 0x2] + ldr r0, _08076C94 @ =gUnknown_2024008 + adds r0, r2, r0 + ldr r2, [r0] +_08076C5C: + cmp r7, 0xC9 + bne _08076CA6 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08076C98 + movs r0, 0xC9 + b _08076CA2 + .align 2, 0 +_08076C94: .4byte gUnknown_2024008 +_08076C98: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08076CA2: + lsls r1, r0, 2 + b _08076CDA +_08076CA6: + ldr r0, _08076CBC @ =0x00000181 + cmp r7, r0 + bne _08076CC8 + ldr r0, _08076CC0 @ =gUnknown_2024024 + add r0, r8 + ldrb r0, [r0] + lsls r0, 2 + ldr r1, _08076CC4 @ =gUnknown_83AE03C + adds r4, r0, r1 + b _08076CDE + .align 2, 0 +_08076CBC: .4byte 0x00000181 +_08076CC0: .4byte gUnknown_2024024 +_08076CC4: .4byte gUnknown_83AE03C +_08076CC8: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bls _08076CD8 + ldr r4, _08076CD4 @ =gUnknown_82349CC + b _08076CDE + .align 2, 0 +_08076CD4: .4byte gUnknown_82349CC +_08076CD8: + lsls r1, r7, 2 +_08076CDA: + ldr r0, _08076CF0 @ =gUnknown_82349CC +_08076CDC: + adds r4, r1, r0 +_08076CDE: + mov r0, r9 + cmp r0, 0x6 + bhi _08076D8E + lsls r0, 2 + ldr r1, _08076CF4 @ =_08076CF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08076CF0: .4byte gUnknown_82349CC +_08076CF4: .4byte _08076CF8 + .align 2, 0 +_08076CF8: + .4byte _08076D14 + .4byte _08076D1E + .4byte _08076D4A + .4byte _08076D62 + .4byte _08076D26 + .4byte _08076D38 + .4byte _08076D7A +_08076D14: + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + lsls r0, 3 + b _08076D90 +_08076D1E: + ldrb r0, [r4] + lsrs r0, 4 + lsls r0, 3 + b _08076D90 +_08076D26: + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsrs r1, 4 + b _08076D5C +_08076D38: + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsrs r1, 4 + b _08076D74 +_08076D4A: + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4] + movs r1, 0xF + ands r1, r2 +_08076D5C: + lsls r1, 2 + subs r0, r1 + b _08076D90 +_08076D62: + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4] + movs r1, 0xF + ands r1, r2 +_08076D74: + lsls r1, 2 + adds r0, r1 + b _08076D90 +_08076D7A: + mov r0, r8 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + ldrb r1, [r4, 0x1] + subs r0, r1 + b _08076D90 +_08076D8E: + movs r0, 0 +_08076D90: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8076B2C + + thumb_func_start sub_8076D9C +sub_8076D9C: @ 8076D9C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r2 + mov r10, r3 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + cmp r1, 0 + bne _08076DBA + movs r5, 0 + movs r6, 0x1 + b _08076DBE +_08076DBA: + movs r5, 0x2 + movs r6, 0x3 +_08076DBE: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08076E06 + movs r0, 0x2 + eors r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r3, r0, 24 + mov r0, r8 + lsls r1, r0, 16 + lsls r2, r7, 16 + b _08076E12 +_08076E06: + mov r0, r8 + lsls r1, r0, 16 + lsrs r5, r1, 16 + lsls r0, r7, 16 + lsrs r3, r0, 16 + adds r2, r0, 0 +_08076E12: + asrs r0, r1, 16 + adds r0, r5 + asrs r0, 1 + mov r1, r9 + strh r0, [r1] + asrs r0, r2, 16 + adds r0, r3 + asrs r0, 1 + mov r1, r10 + strh r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8076D9C + + thumb_func_start sub_8076E34 +sub_8076E34: @ 8076E34 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + lsls r6, r1, 24 + lsrs r6, 24 + ldr r0, _08076ECC @ =nullsub_8 + mov r10, r0 + bl sub_8044EF8 + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08076ED0 @ =gUnknown_202063C + mov r9, r0 + mov r0, r8 + lsls r3, r0, 4 + add r3, r8 + lsls r3, 2 + mov r0, r9 + adds r5, r3, r0 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + add r4, r9 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x44 + str r3, [sp] + bl memcpy + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r5, 0x5] + ldrb r0, [r5, 0x1] + ands r1, r0 + movs r0, 0x8 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldrh r2, [r5, 0x4] + ldr r0, _08076ED4 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + movs r0, 0x1C + add r9, r0 + ldr r3, [sp] + add r3, r9 + mov r0, r10 + str r0, [r3] + mov r0, r8 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08076ECC: .4byte nullsub_8 +_08076ED0: .4byte gUnknown_202063C +_08076ED4: .4byte 0xfffffc00 + thumb_func_end sub_8076E34 + + thumb_func_start sub_8076ED8 +sub_8076ED8: @ 8076ED8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _08076F10 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08076F18 + ldr r2, _08076F14 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x6] + negs r0, r0 + strh r0, [r2, 0x6] + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, 0 + b _08076F22 + .align 2, 0 +_08076F10: .4byte gUnknown_2037F1A +_08076F14: .4byte gUnknown_2037F02 +_08076F18: + ldr r1, _08076F4C @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] +_08076F22: + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldr r1, _08076F50 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _08076F54 @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076F4C: .4byte gUnknown_2037F02 +_08076F50: .4byte sub_8074EE0 +_08076F54: .4byte sub_8074E70 + thumb_func_end sub_8076ED8 + + thumb_func_start sub_8076F58 +sub_8076F58: @ 8076F58 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08076F80 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08076F88 + ldr r2, _08076F84 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + movs r1, 0x6 + ldrsh r0, [r2, r1] + negs r0, r0 + strh r0, [r2, 0x6] + adds r1, r2, 0 + b _08076F92 + .align 2, 0 +_08076F80: .4byte gUnknown_2037F1A +_08076F84: .4byte gUnknown_2037F02 +_08076F88: + ldr r1, _08076FC4 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] +_08076F92: + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldrb r1, [r1, 0xC] + adds r0, r4, 0 + bl sub_800838C + ldr r1, _08076FC8 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _08076FCC @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076FC4: .4byte gUnknown_2037F02 +_08076FC8: .4byte sub_8074EE0 +_08076FCC: .4byte sub_8074E70 + thumb_func_end sub_8076F58 + + thumb_func_start sub_8076FD0 +sub_8076FD0: @ 8076FD0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _08076FF4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08076FFC + ldr r0, _08076FF8 @ =gUnknown_2037F02 + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _08077008 + .align 2, 0 +_08076FF4: .4byte gUnknown_2037F1A +_08076FF8: .4byte gUnknown_2037F02 +_08076FFC: + ldr r1, _08077024 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_08077008: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _08077028 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _0807702C @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08077024: .4byte gUnknown_2037F02 +_08077028: .4byte sub_8074F6C +_0807702C: .4byte sub_8072740 + thumb_func_end sub_8076FD0 + + thumb_func_start sub_8077030 +sub_8077030: @ 8077030 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080770C4 @ =gUnknown_3005090 + adds r5, r1, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0x8] + ldr r7, _080770C8 @ =gUnknown_2037F1A + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + movs r1, 0x8 + cmp r0, 0 + beq _08077064 + movs r0, 0x8 + negs r0, r0 + adds r1, r0, 0 +_08077064: + strh r1, [r5, 0xA] + strh r6, [r5, 0xC] + strh r6, [r5, 0xE] + ldr r4, _080770CC @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x24] + ldrh r2, [r5, 0x8] + subs r1, r2 + strh r1, [r0, 0x24] + ldr r0, _080770D0 @ =0x00002771 + bl sub_80089B8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + strh r6, [r5, 0x12] + movs r1, 0x10 + ldrsh r0, [r5, r1] + adds r0, 0x10 + lsls r0, 20 + lsrs r6, r0, 16 + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r4, r0, 4 + ldrb r0, [r7] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + cmp r0, 0x14 + beq _080770C0 + cmp r0, 0x28 + bne _080770D4 +_080770C0: + movs r0, 0x2 + b _080770D6 + .align 2, 0 +_080770C4: .4byte gUnknown_3005090 +_080770C8: .4byte gUnknown_2037F1A +_080770CC: .4byte gUnknown_202063C +_080770D0: .4byte 0x00002771 +_080770D4: + movs r0, 0x3 +_080770D6: + strh r0, [r5, 0x14] + lsls r0, r4, 1 + ldr r1, _08077104 @ =gUnknown_20371F8 + adds r0, r1 + lsls r1, r6, 1 + ldr r2, _08077108 @ =gUnknown_20375F8 + adds r1, r2 + ldr r2, _0807710C @ =0x04000008 + bl CpuSet + ldr r0, _08077110 @ =gUnknown_2037F02 + ldrb r2, [r0, 0x2] + ldrh r3, [r0] + adds r0, r6, 0 + movs r1, 0x10 + bl sub_8045274 + ldr r0, _08077114 @ =sub_8077118 + str r0, [r5] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077104: .4byte gUnknown_20371F8 +_08077108: .4byte gUnknown_20375F8 +_0807710C: .4byte 0x04000008 +_08077110: .4byte gUnknown_2037F02 +_08077114: .4byte sub_8077118 + thumb_func_end sub_8077030 + + thumb_func_start sub_8077118 +sub_8077118: @ 8077118 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807713C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807717C + cmp r0, 0x1 + bgt _08077140 + cmp r0, 0 + beq _08077146 + b _080771D8 + .align 2, 0 +_0807713C: .4byte gUnknown_3005090 +_08077140: + cmp r0, 0x2 + beq _080771C4 + b _080771D8 +_08077146: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80771E4 + ldr r2, _08077178 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0xA] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + ldrh r1, [r4, 0xE] + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080771D8 + strh r1, [r4, 0xE] + b _080771B6 + .align 2, 0 +_08077178: .4byte gUnknown_202063C +_0807717C: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80771E4 + ldr r3, _080771C0 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + ldrh r2, [r4, 0xA] + subs r1, r2 + strh r1, [r0, 0x24] + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _080771D8 + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + strh r2, [r1, 0x24] +_080771B6: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080771D8 + .align 2, 0 +_080771C0: .4byte gUnknown_202063C +_080771C4: + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080771D8 + ldr r0, _080771E0 @ =0x00002771 + bl sub_8008A30 + adds r0, r5, 0 + bl sub_8072760 +_080771D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080771E0: .4byte 0x00002771 + thumb_func_end sub_8077118 + + thumb_func_start sub_80771E4 +sub_80771E4: @ 80771E4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r0, 0 + bl sub_8075FBC + lsls r0, 16 + lsrs r7, r0, 16 + asrs r0, 16 + cmp r0, 0 + blt _08077254 + ldr r5, _08077260 @ =gUnknown_202063C + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r3, r4, r5 + movs r0, 0x3 + ldrb r1, [r6, 0x14] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldrb r1, [r6, 0x10] + lsls r1, 4 + movs r2, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + movs r0, 0x8 + strh r0, [r3, 0x2E] + mov r0, r8 + strh r0, [r3, 0x30] + strh r7, [r3, 0x32] + movs r0, 0x8 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r0, [r0, 0x24] + strh r0, [r3, 0x24] + adds r5, 0x1C + adds r4, r5 + ldr r0, _08077264 @ =sub_8077268 + str r0, [r4] + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] +_08077254: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077260: .4byte gUnknown_202063C +_08077264: .4byte sub_8077268 + thumb_func_end sub_80771E4 + + thumb_func_start sub_8077268 +sub_8077268: @ 8077268 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + subs r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _08077292 + ldr r2, _08077298 @ =gUnknown_3005090 + movs r0, 0x30 + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x12] + subs r1, 0x1 + strh r1, [r0, 0x12] + adds r0, r3, 0 + bl sub_8076030 +_08077292: + pop {r0} + bx r0 + .align 2, 0 +_08077298: .4byte gUnknown_3005090 + thumb_func_end sub_8077268 + + thumb_func_start sub_807729C +sub_807729C: @ 807729C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080772D0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080772D4 + movs r0, 0x5 + b _080772D6 + .align 2, 0 +_080772D0: .4byte gUnknown_2037F1A +_080772D4: + ldr r0, _080772E8 @ =0x0000fff6 +_080772D6: + strh r0, [r5, 0x2E] + ldr r0, _080772EC @ =0x0000ffd8 + strh r0, [r5, 0x30] + ldr r0, _080772F0 @ =sub_80772F4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080772E8: .4byte 0x0000fff6 +_080772EC: .4byte 0x0000ffd8 +_080772F0: .4byte sub_80772F4 + thumb_func_end sub_807729C + + thumb_func_start sub_80772F4 +sub_80772F4: @ 80772F4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r5, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r0, r5, r2 + strh r0, [r4, 0x34] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r2, 0x34 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + lsls r0, r5, 16 + asrs r0, 16 + movs r1, 0x14 + negs r1, r1 + cmp r0, r1 + bge _08077330 + adds r0, r5, 0x1 + strh r0, [r4, 0x30] +_08077330: + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _08077348 + adds r0, r4, 0 + bl sub_8072740 +_08077348: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80772F4 + + thumb_func_start sub_8077350 +sub_8077350: @ 8077350 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _08077388 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r5, 0xA] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x36] + ldr r0, _0807738C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08077390 + ldrh r0, [r5, 0x8] + adds r0, 0x1E + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0xA] + subs r0, 0x14 + b _0807739E + .align 2, 0 +_08077388: .4byte gUnknown_2037F02 +_0807738C: .4byte gUnknown_2037F1B +_08077390: + ldrh r0, [r5, 0x8] + subs r0, 0x1E + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0xA] + subs r0, 0x50 +_0807739E: + strh r0, [r4, 0x22] + ldr r0, _080773B4 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080773B8 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080773B4: .4byte sub_8075590 +_080773B8: .4byte sub_8072740 + thumb_func_end sub_8077350 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_8078178.s b/asm/battle_anim_8078178.s new file mode 100644 index 000000000..9836536c8 --- /dev/null +++ b/asm/battle_anim_8078178.s @@ -0,0 +1,977 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8078178 +sub_8078178: @ 8078178 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _0807821C @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r6, [r0] + ldr r0, _08078220 @ =sub_80782BC + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08078224 @ =gUnknown_83AD048 + bl sub_800F034 + ldr r0, _08078228 @ =gUnknown_83AD950 + bl sub_800F078 + ldr r1, _0807822C @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r1, r0, r1 + strh r4, [r1, 0x8] + cmp r5, 0 + beq _08078238 + movs r0, 0x1F + strh r0, [r1, 0xA] + movs r5, 0 + lsls r0, r6, 4 + ldr r7, _08078230 @ =gUnknown_202063C + adds r0, r6 + lsls r0, 2 + adds r6, r0, r7 +_080781CC: + movs r0, 0x20 + ldrsh r1, [r6, r0] + ldrh r2, [r6, 0x22] + adds r2, 0x20 + lsls r2, 16 + asrs r2, 16 + ldr r0, _08078234 @ =gUnknown_83BF574 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r7 + lsls r0, r5, 1 + adds r0, r5 + lsls r1, r0, 4 + adds r0, r1 + strh r0, [r3, 0x2E] + movs r0, 0xFF + lsls r0, 8 + strh r0, [r3, 0x30] + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + cmp r5, 0x4 + bls _08078210 + movs r0, 0x15 + strh r0, [r3, 0x3A] +_08078210: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x9 + bls _080781CC + b _08078298 + .align 2, 0 +_0807821C: .4byte gUnknown_2023D44 +_08078220: .4byte sub_80782BC +_08078224: .4byte gUnknown_83AD048 +_08078228: .4byte gUnknown_83AD950 +_0807822C: .4byte gUnknown_3005090 +_08078230: .4byte gUnknown_202063C +_08078234: .4byte gUnknown_83BF574 +_08078238: + movs r0, 0xF8 + lsls r0, 7 + strh r0, [r1, 0xA] + movs r5, 0 + lsls r0, r6, 4 + ldr r7, _080782B4 @ =gUnknown_202063C + adds r0, r6 + lsls r0, 2 + adds r6, r0, r7 +_0807824A: + movs r2, 0x20 + ldrsh r1, [r6, r2] + ldrh r2, [r6, 0x22] + subs r2, 0x20 + lsls r2, 16 + asrs r2, 16 + ldr r0, _080782B8 @ =gUnknown_83BF574 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r7 + lsls r0, r5, 1 + adds r0, r5 + lsls r1, r0, 4 + adds r0, r1 + strh r0, [r3, 0x2E] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r3, 0x30] + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + cmp r5, 0x4 + bls _0807828E + movs r0, 0x15 + strh r0, [r3, 0x3A] +_0807828E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x9 + bls _0807824A +_08078298: + ldr r0, _080782B4 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080782B4: .4byte gUnknown_202063C +_080782B8: .4byte gUnknown_83BF574 + thumb_func_end sub_8078178 + + thumb_func_start sub_80782BC +sub_80782BC: @ 80782BC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08078314 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0xC] + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x2 + bne _08078342 + movs r0, 0 + strh r0, [r4, 0xC] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 20 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 16 + ldrb r2, [r4, 0x10] + ldrh r3, [r4, 0xA] + movs r1, 0x10 + bl sub_8045274 + ldrh r2, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08078318 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _08078346 + movs r0, 0x1 + eors r0, r2 + strh r0, [r4, 0x12] + b _08078346 + .align 2, 0 +_08078314: .4byte gUnknown_3005090 +_08078318: + ldrh r1, [r4, 0x10] + subs r0, r1, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _08078346 + strh r1, [r4, 0x10] + movs r0, 0x1 + eors r0, r2 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _08078346 + adds r0, r5, 0 + bl sub_8077508 + b _08078346 +_08078342: + adds r0, r1, 0x1 + strh r0, [r4, 0xC] +_08078346: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80782BC + + thumb_func_start sub_807834C +sub_807834C: @ 807834C + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x3A] + movs r3, 0x3A + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _08078378 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r3] + ldr r1, _08078374 @ =sub_8078380 + str r1, [r2, 0x1C] + adds r0, r2, 0 + bl _call_via_r1 + b _0807837C + .align 2, 0 +_08078374: .4byte sub_8078380 +_08078378: + subs r0, r1, 0x1 + strh r0, [r2, 0x3A] +_0807837C: + pop {r0} + bx r0 + thumb_func_end sub_807834C + + thumb_func_start sub_8078380 +sub_8078380: @ 8078380 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl sub_8044E30 + strh r0, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080783AC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D + b _080783B2 +_080783AC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F +_080783B2: + strb r0, [r1] + ldrh r0, [r4, 0x2E] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x34 + bne _080783F4 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080783EE + adds r0, r4, 0 + bl sub_8007804 + b _080783F4 +_080783EE: + adds r0, r4, 0 + bl sub_8007280 +_080783F4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8078380 + + thumb_func_start sub_80783FC +sub_80783FC: @ 80783FC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _080784AC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + ldr r1, _080784B0 @ =0xffe00000 + adds r0, r1 + lsrs r5, r0, 16 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + ldr r1, _080784B4 @ =0xffdc0000 + adds r0, r1 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _0807843A + lsls r0, r5, 16 + ldr r1, _080784B8 @ =0xfffa0000 + adds r0, r1 + lsrs r5, r0, 16 +_0807843A: + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080784BC @ =gUnknown_83BF55C + lsls r1, r5, 16 + asrs r1, 16 + lsls r2, r4, 16 + asrs r2, 16 + movs r3, 0x4 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080784C0 @ =0x0000271a + bl sub_8008804 + lsls r0, 16 + ldr r1, _080784C4 @ =0xffff0000 + cmp r0, r1 + bne _08078484 + ldr r1, _080784C8 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_08078484: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _080784C8 @ =gUnknown_202063C + adds r0, r1 + ldr r1, _080784CC @ =gUnknown_83BF554 + bl sub_8008A58 + ldr r1, _080784D0 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0x26] + ldr r1, _080784D4 @ =sub_80784D8 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080784AC: .4byte gUnknown_2037F1B +_080784B0: .4byte 0xffe00000 +_080784B4: .4byte 0xffdc0000 +_080784B8: .4byte 0xfffa0000 +_080784BC: .4byte gUnknown_83BF55C +_080784C0: .4byte 0x0000271a +_080784C4: .4byte 0xffff0000 +_080784C8: .4byte gUnknown_202063C +_080784CC: .4byte gUnknown_83BF554 +_080784D0: .4byte gUnknown_3005090 +_080784D4: .4byte sub_80784D8 + thumb_func_end sub_80783FC + + thumb_func_start sub_80784D8 +sub_80784D8: @ 80784D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08078504 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + adds r2, r0, 0 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _0807850C + ldr r0, _08078508 @ =sub_8078528 + str r0, [r1] + movs r0, 0 + strh r0, [r1, 0xA] + b _08078522 + .align 2, 0 +_08078504: .4byte gUnknown_3005090 +_08078508: .4byte sub_8078528 +_0807850C: + lsls r0, r2, 24 + lsrs r0, 24 + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_08078522: + pop {r0} + bx r0 + thumb_func_end sub_80784D8 + + thumb_func_start sub_8078528 +sub_8078528: @ 8078528 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080785C0 @ =0x0000271a + bl sub_80089E8 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080785C4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0xA] + adds r1, r0, 0x1 + strh r1, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + ble _080785B8 + ldrh r0, [r5, 0xC] + adds r0, 0x1 + movs r6, 0 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080785B8 + ldr r3, _080785C8 @ =gUnknown_20375F8 + lsls r2, 4 + mov r12, r2 + ldr r1, _080785CC @ =0x0000010d + add r1, r12 + lsls r1, 1 + adds r1, r3 + ldrh r4, [r1] + movs r2, 0x87 + lsls r2, 1 + add r2, r12 + lsls r2, 1 + adds r2, r3 + ldrh r0, [r2] + strh r0, [r1] + ldr r0, _080785D0 @ =0x0000010f + add r0, r12 + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + strh r1, [r2] + strh r4, [r0] + strh r6, [r5, 0xC] + ldrh r0, [r5, 0xE] + adds r0, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080785B8 + strh r6, [r5, 0xE] + strh r6, [r5, 0xA] + ldrh r0, [r5, 0x10] + adds r0, 0x1 + strh r0, [r5, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080785B8 + movs r0, 0x9 + strh r0, [r5, 0xA] + ldr r0, _080785D4 @ =sub_80785D8 + str r0, [r5] +_080785B8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080785C0: .4byte 0x0000271a +_080785C4: .4byte gUnknown_3005090 +_080785C8: .4byte gUnknown_20375F8 +_080785CC: .4byte 0x0000010d +_080785D0: .4byte 0x0000010f +_080785D4: .4byte sub_80785D8 + thumb_func_end sub_8078528 + + thumb_func_start sub_80785D8 +sub_80785D8: @ 80785D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08078608 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r2, r1, r2 + ldrh r0, [r2, 0xA] + subs r0, 0x1 + adds r3, r0, 0 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _08078610 + ldr r0, _0807860C @ =sub_807862C + str r0, [r2] + movs r0, 0 + strh r0, [r2, 0xA] + b _08078626 + .align 2, 0 +_08078608: .4byte gUnknown_3005090 +_0807860C: .4byte sub_807862C +_08078610: + lsls r0, r3, 24 + lsrs r0, 24 + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_08078626: + pop {r0} + bx r0 + thumb_func_end sub_80785D8 + + thumb_func_start sub_807862C +sub_807862C: @ 807862C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r1, _0807866C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x25 + bne _08078674 + ldrh r0, [r1, 0x26] + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08078670 @ =gUnknown_202063C + adds r4, r0 + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + b _0807868E + .align 2, 0 +_0807866C: .4byte gUnknown_3005090 +_08078670: .4byte gUnknown_202063C +_08078674: + cmp r0, 0x27 + bne _0807868E + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072760 +_0807868E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807862C + + thumb_func_start sub_8078694 +sub_8078694: @ 8078694 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0 + ldr r0, _080786B8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrh r0, [r0] + subs r0, 0xF + cmp r0, 0x2B + bls _080786AC + b _08078830 +_080786AC: + lsls r0, 2 + ldr r1, _080786BC @ =_080786C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080786B8: .4byte gUnknown_2024018 +_080786BC: .4byte _080786C0 + .align 2, 0 +_080786C0: + .4byte _08078770 + .4byte _08078776 + .4byte _0807877C + .4byte _08078782 + .4byte _08078788 + .4byte _0807878E + .4byte _08078794 + .4byte _0807879A + .4byte _080787A0 + .4byte _080787A6 + .4byte _080787AC + .4byte _080787B2 + .4byte _080787B8 + .4byte _080787BE + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _080787C4 + .4byte _080787C8 + .4byte _080787CC + .4byte _080787D0 + .4byte _080787D4 + .4byte _080787D8 + .4byte _080787DC + .4byte _080787E0 + .4byte _080787E8 + .4byte _080787F0 + .4byte _080787F8 + .4byte _08078800 + .4byte _08078808 + .4byte _08078810 + .4byte _08078830 + .4byte _08078830 + .4byte _08078818 + .4byte _0807881C + .4byte _08078820 + .4byte _08078828 +_08078770: + movs r5, 0 + movs r2, 0 + b _08078838 +_08078776: + movs r5, 0 + movs r2, 0x1 + b _08078838 +_0807877C: + movs r5, 0 + movs r2, 0x3 + b _08078838 +_08078782: + movs r5, 0 + movs r2, 0x5 + b _08078838 +_08078788: + movs r5, 0 + movs r2, 0x6 + b _08078838 +_0807878E: + movs r5, 0 + movs r2, 0x2 + b _08078838 +_08078794: + movs r5, 0 + movs r2, 0x4 + b _08078838 +_0807879A: + movs r5, 0x1 + movs r2, 0 + b _08078838 +_080787A0: + movs r5, 0x1 + movs r2, 0x1 + b _08078838 +_080787A6: + movs r5, 0x1 + movs r2, 0x3 + b _08078838 +_080787AC: + movs r5, 0x1 + movs r2, 0x5 + b _08078838 +_080787B2: + movs r5, 0x1 + movs r2, 0x6 + b _08078838 +_080787B8: + movs r5, 0x1 + movs r2, 0x2 + b _08078838 +_080787BE: + movs r5, 0x1 + movs r2, 0x4 + b _08078838 +_080787C4: + movs r5, 0 + b _080787E2 +_080787C8: + movs r5, 0 + b _080787EA +_080787CC: + movs r5, 0 + b _080787F2 +_080787D0: + movs r5, 0 + b _080787FA +_080787D4: + movs r5, 0 + b _08078802 +_080787D8: + movs r5, 0 + b _0807880A +_080787DC: + movs r5, 0 + b _08078812 +_080787E0: + movs r5, 0x1 +_080787E2: + movs r2, 0 + movs r3, 0x1 + b _08078838 +_080787E8: + movs r5, 0x1 +_080787EA: + movs r2, 0x1 + movs r3, 0x1 + b _08078838 +_080787F0: + movs r5, 0x1 +_080787F2: + movs r2, 0x3 + movs r3, 0x1 + b _08078838 +_080787F8: + movs r5, 0x1 +_080787FA: + movs r2, 0x5 + movs r3, 0x1 + b _08078838 +_08078800: + movs r5, 0x1 +_08078802: + movs r2, 0x6 + movs r3, 0x1 + b _08078838 +_08078808: + movs r5, 0x1 +_0807880A: + movs r2, 0x2 + movs r3, 0x1 + b _08078838 +_08078810: + movs r5, 0x1 +_08078812: + movs r2, 0x4 + movs r3, 0x1 + b _08078838 +_08078818: + movs r5, 0 + b _08078822 +_0807881C: + movs r5, 0 + b _0807882A +_08078820: + movs r5, 0x1 +_08078822: + movs r2, 0xFF + movs r3, 0 + b _08078838 +_08078828: + movs r5, 0x1 +_0807882A: + movs r2, 0xFF + movs r3, 0x1 + b _08078838 +_08078830: + adds r0, r4, 0 + bl sub_8072760 + b _0807885A +_08078838: + ldr r0, _08078860 @ =gUnknown_2037F02 + movs r1, 0 + strh r5, [r0] + strh r2, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r3, [r0, 0x8] + ldr r1, _08078864 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08078868 @ =sub_80BB088 + str r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 +_0807885A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08078860: .4byte gUnknown_2037F02 +_08078864: .4byte gUnknown_3005090 +_08078868: .4byte sub_80BB088 + thumb_func_end sub_8078694 + + thumb_func_start sub_807886C +sub_807886C: @ 807886C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _080788A8 @ =gUnknown_2037F1A + strb r4, [r0] + ldr r0, _080788AC @ =gUnknown_2037F1B + strb r4, [r0] + ldr r0, _080788B0 @ =gUnknown_81C6E84 + movs r2, 0 + bl sub_80725D4 + ldr r0, _080788B4 @ =sub_80788BC + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080788B8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080788A8: .4byte gUnknown_2037F1A +_080788AC: .4byte gUnknown_2037F1B +_080788B0: .4byte gUnknown_81C6E84 +_080788B4: .4byte sub_80788BC +_080788B8: .4byte gUnknown_3005090 + thumb_func_end sub_807886C + + thumb_func_start sub_80788BC +sub_80788BC: @ 80788BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08078904 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08078908 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _080788FE + ldr r0, _0807890C @ =gUnknown_2024018 + ldr r2, [r0] + ldr r1, _08078910 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + ldr r2, [r2, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_080788FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08078904: .4byte gUnknown_2037EDC +_08078908: .4byte gUnknown_2037EE1 +_0807890C: .4byte gUnknown_2024018 +_08078910: .4byte gUnknown_3005090 + thumb_func_end sub_80788BC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80989F8.s b/asm/battle_anim_80989F8.s new file mode 100644 index 000000000..40b1c9300 --- /dev/null +++ b/asm/battle_anim_80989F8.s @@ -0,0 +1,2588 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80989F8 +sub_80989F8: @ 80989F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08098A18 @ =gUnknown_2037F02 + ldrb r0, [r4] + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _08098A1C + adds r0, r5, 0 + bl sub_8072760 + b _08098A58 + .align 2, 0 +_08098A18: .4byte gUnknown_2037F02 +_08098A1C: + ldr r1, _08098A60 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x24] + ldrh r1, [r4, 0x4] + strh r1, [r0, 0x26] + ldr r1, _08098A64 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0x8] + ldrh r1, [r4, 0x6] + strh r1, [r0, 0xA] + ldrh r1, [r4, 0x8] + strh r1, [r0, 0xC] + ldrh r1, [r4, 0x8] + strh r1, [r0, 0xE] + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x10] + ldrh r1, [r4, 0x4] + strh r1, [r0, 0x12] + ldr r1, _08098A68 @ =sub_8098A6C + str r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_08098A58: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08098A60: .4byte gUnknown_202063C +_08098A64: .4byte gUnknown_3005090 +_08098A68: .4byte sub_8098A6C + thumb_func_end sub_80989F8 + + thumb_func_start sub_8098A6C +sub_8098A6C: @ 8098A6C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08098AA8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3, 0xE] + movs r2, 0xE + ldrsh r5, [r3, r2] + adds r7, r1, 0 + cmp r5, 0 + bne _08098B12 + ldr r2, _08098AAC @ =gUnknown_202063C + movs r6, 0x8 + ldrsh r1, [r3, r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + movs r6, 0x24 + ldrsh r0, [r1, r6] + adds r6, r2, 0 + cmp r0, 0 + bne _08098AB0 + ldrh r0, [r3, 0x10] + strh r0, [r1, 0x24] + b _08098AB2 + .align 2, 0 +_08098AA8: .4byte gUnknown_3005090 +_08098AAC: .4byte gUnknown_202063C +_08098AB0: + strh r5, [r1, 0x24] +_08098AB2: + lsls r2, r4, 2 + adds r0, r2, r4 + lsls r0, 3 + adds r3, r0, r7 + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r6 + movs r5, 0x26 + ldrsh r0, [r1, r5] + cmp r0, 0 + bne _08098AD2 + ldrh r0, [r3, 0x12] + b _08098AD4 +_08098AD2: + movs r0, 0 +_08098AD4: + strh r0, [r1, 0x26] + adds r0, r2, r4 + lsls r0, 3 + adds r2, r0, r7 + ldrh r0, [r2, 0xC] + strh r0, [r2, 0xE] + ldrh r0, [r2, 0xA] + subs r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + bne _08098B16 + movs r0, 0x8 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r3, [r0, 0x24] + movs r5, 0x8 + ldrsh r1, [r2, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r3, [r0, 0x26] + adds r0, r4, 0 + bl sub_8072760 + b _08098B16 +_08098B12: + subs r0, 0x1 + strh r0, [r3, 0xE] +_08098B16: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8098A6C + + thumb_func_start sub_8098B1C +sub_8098B1C: @ 8098B1C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _08098B44 @ =gUnknown_2037F02 + ldrh r0, [r2] + movs r3, 0 + ldrsh r1, [r2, r3] + cmp r1, 0x3 + bgt _08098B48 + lsls r0, 24 + lsrs r0, 24 + bl sub_80749D4 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08098B9E + b _08098BA2 + .align 2, 0 +_08098B44: .4byte gUnknown_2037F02 +_08098B48: + cmp r1, 0x8 + beq _08098B94 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x5 + beq _08098B68 + cmp r0, 0x5 + bgt _08098B5E + cmp r0, 0x4 + beq _08098B64 + b _08098B70 +_08098B5E: + cmp r0, 0x6 + beq _08098B6C + b _08098B70 +_08098B64: + movs r0, 0 + b _08098B72 +_08098B68: + movs r0, 0x2 + b _08098B72 +_08098B6C: + movs r0, 0x1 + b _08098B72 +_08098B70: + movs r0, 0x3 +_08098B72: + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _08098B88 + movs r6, 0x1 +_08098B88: + ldr r0, _08098B90 @ =gUnknown_2023D44 + adds r0, r4, r0 + b _08098B9C + .align 2, 0 +_08098B90: .4byte gUnknown_2023D44 +_08098B94: + ldr r1, _08098BAC @ =gUnknown_2023D44 + ldr r0, _08098BB0 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 +_08098B9C: + ldrb r3, [r0] +_08098B9E: + cmp r6, 0 + beq _08098BB4 +_08098BA2: + adds r0, r5, 0 + bl sub_8072760 + b _08098BF2 + .align 2, 0 +_08098BAC: .4byte gUnknown_2023D44 +_08098BB0: .4byte gUnknown_2037F1A +_08098BB4: + ldr r1, _08098BF8 @ =gUnknown_202063C + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldr r2, _08098BFC @ =gUnknown_2037F02 + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x24] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x26] + ldr r1, _08098C00 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r3, [r0, 0x8] + ldrh r1, [r2, 0x6] + strh r1, [r0, 0xA] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0xC] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0xE] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x10] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x12] + ldr r1, _08098C04 @ =sub_8098C08 + str r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_08098BF2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08098BF8: .4byte gUnknown_202063C +_08098BFC: .4byte gUnknown_2037F02 +_08098C00: .4byte gUnknown_3005090 +_08098C04: .4byte sub_8098C08 + thumb_func_end sub_8098B1C + + thumb_func_start sub_8098C08 +sub_8098C08: @ 8098C08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08098C4C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r1 + ldrh r2, [r3, 0xE] + movs r4, 0xE + ldrsh r0, [r3, r4] + mov r12, r1 + cmp r0, 0 + bne _08098CC0 + ldr r2, _08098C50 @ =gUnknown_202063C + movs r7, 0x8 + ldrsh r1, [r3, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r0, 0x24 + ldrsh r1, [r4, r0] + ldrh r5, [r3, 0x10] + movs r7, 0x10 + ldrsh r0, [r3, r7] + adds r7, r2, 0 + cmp r1, r0 + bne _08098C54 + negs r0, r5 + strh r0, [r4, 0x24] + b _08098C56 + .align 2, 0 +_08098C4C: .4byte gUnknown_3005090 +_08098C50: .4byte gUnknown_202063C +_08098C54: + strh r5, [r4, 0x24] +_08098C56: + lsls r3, r6, 2 + adds r1, r3, r6 + lsls r1, 3 + add r1, r12 + movs r0, 0x8 + ldrsh r2, [r1, r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r7 + movs r0, 0x26 + ldrsh r2, [r4, r0] + mov r8, r2 + ldrh r5, [r1, 0x12] + movs r2, 0x12 + ldrsh r0, [r1, r2] + cmp r8, r0 + bne _08098C80 + negs r0, r5 + strh r0, [r4, 0x26] + b _08098C82 +_08098C80: + strh r5, [r4, 0x26] +_08098C82: + adds r0, r3, r6 + lsls r0, 3 + mov r4, r12 + adds r3, r0, r4 + ldrh r0, [r3, 0xC] + strh r0, [r3, 0xE] + ldrh r0, [r3, 0xA] + subs r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _08098CC4 + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x24] + movs r4, 0x8 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x26] + adds r0, r6, 0 + bl sub_8072760 + b _08098CC4 +_08098CC0: + subs r0, r2, 0x1 + strh r0, [r3, 0xE] +_08098CC4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8098C08 + + thumb_func_start sub_8098CD0 +sub_8098CD0: @ 8098CD0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08098CF0 @ =gUnknown_2037F02 + ldrb r0, [r4] + bl sub_80749D4 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08098CF4 + adds r0, r5, 0 + bl sub_8072760 + b _08098D42 + .align 2, 0 +_08098CF0: .4byte gUnknown_2037F02 +_08098CF4: + ldr r0, _08098D48 @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x2] + ldrh r2, [r1, 0x24] + adds r0, r2 + movs r2, 0 + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x4] + ldrh r6, [r1, 0x26] + adds r0, r6 + strh r0, [r1, 0x26] + ldr r0, _08098D4C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + strh r3, [r1, 0x8] + strh r2, [r1, 0xA] + ldrh r0, [r4, 0x6] + strh r0, [r1, 0xC] + strh r2, [r1, 0xE] + ldrh r0, [r4, 0x8] + strh r0, [r1, 0x10] + movs r2, 0x2 + ldrsh r0, [r4, r2] + lsls r0, 1 + strh r0, [r1, 0x12] + movs r6, 0x4 + ldrsh r0, [r4, r6] + lsls r0, 1 + strh r0, [r1, 0x14] + ldr r2, _08098D50 @ =sub_8098D54 + str r2, [r1] + adds r0, r5, 0 + bl _call_via_r2 +_08098D42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08098D48: .4byte gUnknown_202063C +_08098D4C: .4byte gUnknown_3005090 +_08098D50: .4byte sub_8098D54 + thumb_func_end sub_8098CD0 + + thumb_func_start sub_8098D54 +sub_8098D54: @ 8098D54 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08098DAC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + adds r6, r1, 0 + cmp r0, 0 + beq _08098D72 + b _08098E84 +_08098D72: + ldrh r1, [r4, 0xA] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08098DB4 + ldr r2, _08098DB0 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r3, [r0, 0x24] + adds r1, r3 + strh r1, [r0, 0x24] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x14] + ldrh r3, [r0, 0x26] + adds r1, r3 + strh r1, [r0, 0x26] + adds r3, r2, 0 + b _08098DDE + .align 2, 0 +_08098DAC: .4byte gUnknown_3005090 +_08098DB0: .4byte gUnknown_202063C +_08098DB4: + ldr r3, _08098E40 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + ldrh r2, [r4, 0x12] + subs r1, r2 + strh r1, [r0, 0x24] + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + ldrh r2, [r4, 0x14] + subs r1, r2 + strh r1, [r0, 0x26] +_08098DDE: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r6 + ldrh r0, [r4, 0x10] + strh r0, [r4, 0xE] + ldrh r0, [r4, 0xA] + adds r2, r0, 0x1 + strh r2, [r4, 0xA] + lsls r0, r2, 16 + asrs r0, 16 + movs r6, 0xC + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _08098E88 + movs r0, 0x1 + ands r2, r0 + cmp r2, 0 + beq _08098E44 + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + movs r2, 0x12 + ldrsh r0, [r4, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + ldrh r6, [r1, 0x24] + adds r0, r6 + strh r0, [r1, 0x24] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + movs r2, 0x14 + ldrsh r0, [r4, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + ldrh r3, [r1, 0x26] + adds r0, r3 + strh r0, [r1, 0x26] + b _08098E7C + .align 2, 0 +_08098E40: .4byte gUnknown_202063C +_08098E44: + movs r6, 0x8 + ldrsh r0, [r4, r6] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + movs r0, 0x12 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + movs r3, 0x14 + ldrsh r1, [r4, r3] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r0, [r2, 0x26] + subs r0, r1 + strh r0, [r2, 0x26] +_08098E7C: + adds r0, r5, 0 + bl sub_8072760 + b _08098E88 +_08098E84: + subs r0, r2, 0x1 + strh r0, [r4, 0xE] +_08098E88: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8098D54 + + thumb_func_start sub_8098E90 +sub_8098E90: @ 8098E90 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _08098EE0 @ =gUnknown_2037F02 + ldrb r0, [r5] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08098EE4 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r5, 0x2] + strh r2, [r1, 0x24] + ldr r2, _08098EE8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + strh r0, [r1, 0x8] + ldrh r0, [r5, 0x2] + strh r0, [r1, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r1, 0xC] + ldrh r0, [r5, 0x6] + strh r0, [r1, 0xE] + ldrh r0, [r5, 0x8] + strh r0, [r1, 0x10] + ldr r2, _08098EEC @ =sub_8098EF0 + str r2, [r1] + adds r0, r4, 0 + bl _call_via_r2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08098EE0: .4byte gUnknown_2037F02 +_08098EE4: .4byte gUnknown_202063C +_08098EE8: .4byte gUnknown_3005090 +_08098EEC: .4byte sub_8098EF0 + thumb_func_end sub_8098E90 + + thumb_func_start sub_8098EF0 +sub_8098EF0: @ 8098EF0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _08098F7C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r2 + ldrb r5, [r3, 0x8] + ldrh r4, [r3, 0xA] + ldrh r1, [r3, 0x18] + adds r0, r1, 0x1 + strh r0, [r3, 0x18] + movs r7, 0xC + ldrsh r0, [r3, r7] + lsls r1, 16 + asrs r1, 16 + mov r12, r2 + ldr r7, _08098F80 @ =gUnknown_202063C + cmp r0, r1 + bne _08098F42 + movs r0, 0 + strh r0, [r3, 0x18] + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r1, r0, r7 + ldrh r3, [r1, 0x24] + movs r0, 0x24 + ldrsh r2, [r1, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r2, r0 + bne _08098F3A + negs r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 +_08098F3A: + lsls r0, r4, 16 + asrs r0, 16 + adds r0, r3 + strh r0, [r1, 0x24] +_08098F42: + lsls r2, r6, 2 + adds r2, r6 + lsls r2, 3 + add r2, r12 + strh r4, [r2, 0xA] + ldrh r1, [r2, 0xE] + ldrh r0, [r2, 0x1A] + adds r1, r0 + strh r1, [r2, 0x1A] + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r7 + lsls r1, 16 + asrs r1, 24 + strh r1, [r0, 0x26] + ldrh r0, [r2, 0x10] + subs r0, 0x1 + strh r0, [r2, 0x10] + lsls r0, 16 + cmp r0, 0 + bne _08098F74 + adds r0, r6, 0 + bl sub_8072760 +_08098F74: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08098F7C: .4byte gUnknown_3005090 +_08098F80: .4byte gUnknown_202063C + thumb_func_end sub_8098EF0 + + thumb_func_start sub_8098F84 +sub_8098F84: @ 8098F84 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0x1 + ldr r4, _08098FF8 @ =gUnknown_2037F02 + ldrb r0, [r4] + bl sub_80749D4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + ble _08098FA8 + movs r0, 0x5 + strh r0, [r4, 0x8] +_08098FA8: + movs r1, 0 + movs r2, 0x8 + ldrsh r0, [r4, r2] + adds r3, r4, 0 + ldr r2, _08098FFC @ =gUnknown_3005090 + mov r12, r2 + lsls r4, r5, 2 + ldr r2, _08099000 @ =sub_8099004 + mov r8, r2 + cmp r1, r0 + bge _08098FCE + adds r2, r0, 0 +_08098FC0: + lsls r0, r6, 25 + lsrs r6, r0, 24 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + blt _08098FC0 +_08098FCE: + adds r0, r4, r5 + lsls r0, 3 + add r0, r12 + strh r7, [r0, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r0, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0xE] + strh r6, [r0, 0x10] + mov r1, r8 + str r1, [r0] + adds r0, r5, 0 + bl _call_via_r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08098FF8: .4byte gUnknown_2037F02 +_08098FFC: .4byte gUnknown_3005090 +_08099000: .4byte sub_8099004 + thumb_func_end sub_8098F84 + + thumb_func_start sub_8099004 +sub_8099004: @ 8099004 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _08099074 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrb r4, [r5, 0x8] + movs r1, 0x12 + ldrsh r0, [r5, r1] + movs r2, 0xA + ldrsh r1, [r5, r2] + bl sub_8044E30 + ldr r2, _08099078 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r4, r1, r2 + strh r0, [r4, 0x24] + movs r1, 0x12 + ldrsh r0, [r5, r1] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r1, [r5, 0xC] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0x10] + ldrh r1, [r5, 0x12] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x12] + cmp r0, 0 + bne _0809905C + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] +_0809905C: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _0809906E + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r6, 0 + bl sub_8072760 +_0809906E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08099074: .4byte gUnknown_3005090 +_08099078: .4byte gUnknown_202063C + thumb_func_end sub_8099004 + + thumb_func_start sub_809907C +sub_809907C: @ 809907C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080990A4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08099098 + ldr r1, _080990A8 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_08099098: + adds r0, r4, 0 + bl sub_8098F84 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080990A4: .4byte gUnknown_2037F1A +_080990A8: .4byte gUnknown_2037F02 + thumb_func_end sub_809907C + + thumb_func_start sub_80990AC +sub_80990AC: @ 80990AC + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080990D4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080990DC + ldr r1, _080990D8 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + b _080990E0 + .align 2, 0 +_080990D4: .4byte gUnknown_2037F1A +_080990D8: .4byte gUnknown_2037F02 +_080990DC: + ldr r1, _0809910C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] +_080990E0: + strh r0, [r4, 0x30] + ldrh r2, [r1] + movs r0, 0 + strh r2, [r4, 0x2E] + strh r0, [r4, 0x32] + ldr r1, _08099110 @ =gUnknown_2023D44 + ldr r0, _08099114 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + strh r2, [r4, 0x36] + ldr r1, _08099118 @ =sub_8099120 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _0809911C @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809910C: .4byte gUnknown_2037F02 +_08099110: .4byte gUnknown_2023D44 +_08099114: .4byte gUnknown_2037F1A +_08099118: .4byte sub_8099120 +_0809911C: .4byte sub_8074DC4 + thumb_func_end sub_80990AC + + thumb_func_start sub_8099120 +sub_8099120: @ 8099120 + push {lr} + ldrh r1, [r0, 0x36] + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x30] + negs r1, r1 + strh r1, [r0, 0x30] + ldr r1, _0809913C @ =sub_8074DC4 + str r1, [r0, 0x1C] + ldr r1, _08099140 @ =sub_8072740 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_0809913C: .4byte sub_8074DC4 +_08099140: .4byte sub_8072740 + thumb_func_end sub_8099120 + + thumb_func_start sub_8099144 +sub_8099144: @ 8099144 + push {r4,r5,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r5, _08099184 @ =gUnknown_2037F02 + ldrb r0, [r5, 0x4] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r5] + movs r1, 0 + strh r2, [r4, 0x2E] + strh r1, [r4, 0x30] + ldrh r1, [r5, 0x2] + strh r1, [r4, 0x32] + strh r0, [r4, 0x34] + strh r2, [r4, 0x36] + ldr r1, _08099188 @ =sub_8099190 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _0809918C @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08099184: .4byte gUnknown_2037F02 +_08099188: .4byte sub_8099190 +_0809918C: .4byte sub_8074DC4 + thumb_func_end sub_8099144 + + thumb_func_start sub_8099190 +sub_8099190: @ 8099190 + push {lr} + ldrh r1, [r0, 0x36] + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x32] + negs r1, r1 + strh r1, [r0, 0x32] + ldr r1, _080991AC @ =sub_8074DC4 + str r1, [r0, 0x1C] + ldr r1, _080991B0 @ =sub_8072740 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080991AC: .4byte sub_8074DC4 +_080991B0: .4byte sub_8072740 + thumb_func_end sub_8099190 + + thumb_func_start sub_80991B4 +sub_80991B4: @ 80991B4 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r0, _080991CC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080991D8 + ldr r1, _080991D0 @ =gUnknown_2023D44 + ldr r0, _080991D4 @ =gUnknown_2037F1A + b _080991DC + .align 2, 0 +_080991CC: .4byte gUnknown_2037F02 +_080991D0: .4byte gUnknown_2023D44 +_080991D4: .4byte gUnknown_2037F1A +_080991D8: + ldr r1, _0809923C @ =gUnknown_2023D44 + ldr r0, _08099240 @ =gUnknown_2037F1B +_080991DC: + ldrb r0, [r0] + adds r0, r1 + ldrb r7, [r0] + ldr r5, _08099244 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x4] + movs r3, 0 + strh r0, [r6, 0x2E] + ldr r0, _08099248 @ =gUnknown_202063C + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r6, 0x30] + ldrh r0, [r4, 0x20] + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x22] + strh r0, [r6, 0x36] + adds r0, r6, 0 + str r3, [sp] + bl sub_80754B8 + ldr r3, [sp] + strh r3, [r6, 0x34] + strh r3, [r6, 0x36] + ldrh r0, [r4, 0x24] + strh r0, [r6, 0x38] + ldrh r0, [r4, 0x26] + strh r0, [r6, 0x3A] + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _0809924C + strh r3, [r6, 0x32] + b _08099252 + .align 2, 0 +_0809923C: .4byte gUnknown_2023D44 +_08099240: .4byte gUnknown_2037F1B +_08099244: .4byte gUnknown_2037F02 +_08099248: .4byte gUnknown_202063C +_0809924C: + cmp r0, 0x2 + bne _08099252 + strh r3, [r6, 0x30] +_08099252: + ldr r0, _08099268 @ =gUnknown_2037F02 + ldrh r1, [r0, 0x2] + lsls r0, r7, 8 + orrs r0, r1 + strh r0, [r6, 0x3C] + ldr r0, _0809926C @ =sub_8099270 + str r0, [r6, 0x1C] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099268: .4byte gUnknown_2037F02 +_0809926C: .4byte sub_8099270 + thumb_func_end sub_80991B4 + + thumb_func_start sub_8099270 +sub_8099270: @ 8099270 + push {r4-r6,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x3C] + lsls r1, r0, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + lsls r0, 16 + asrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080992AC @ =gUnknown_202063C + adds r3, r1, r0 + ldrh r0, [r2, 0x2E] + movs r6, 0x2E + ldrsh r1, [r2, r6] + cmp r1, 0 + bne _080992B0 + cmp r4, 0x1 + bhi _0809929A + strh r1, [r3, 0x24] +_0809929A: + cmp r5, 0x2 + beq _080992A2 + cmp r5, 0 + bne _080992A4 +_080992A2: + strh r1, [r3, 0x26] +_080992A4: + adds r0, r2, 0 + bl sub_8072740 + b _080992DA + .align 2, 0 +_080992AC: .4byte gUnknown_202063C +_080992B0: + subs r0, 0x1 + strh r0, [r2, 0x2E] + ldrh r1, [r2, 0x30] + ldrh r0, [r2, 0x34] + adds r1, r0 + strh r1, [r2, 0x34] + ldrh r0, [r2, 0x32] + ldrh r4, [r2, 0x36] + adds r0, r4 + strh r0, [r2, 0x36] + lsls r1, 16 + asrs r1, 24 + ldrh r6, [r2, 0x38] + adds r1, r6 + strh r1, [r3, 0x24] + ldrh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r2, 0x3A] + adds r0, r2 + strh r0, [r3, 0x26] +_080992DA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8099270 + + thumb_func_start sub_80992E0 +sub_80992E0: @ 80992E0 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080992F4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080992FC + ldr r0, _080992F8 @ =gUnknown_2037F1A + b _080992FE + .align 2, 0 +_080992F4: .4byte gUnknown_2037F02 +_080992F8: .4byte gUnknown_2037F1A +_080992FC: + ldr r0, _0809937C @ =gUnknown_2037F1B +_080992FE: + ldrb r2, [r0] + ldr r0, _08099380 @ =gUnknown_2023D44 + adds r0, r2, r0 + ldrb r6, [r0] + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08099328 + ldr r1, _08099384 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _08099328 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08099328: + ldr r2, _08099384 @ =gUnknown_2037F02 + ldrh r0, [r2, 0x8] + movs r4, 0 + strh r0, [r5, 0x2E] + ldr r0, _08099388 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r2, 0x2] + ldrh r3, [r1, 0x20] + adds r0, r3 + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x22] + strh r0, [r5, 0x34] + ldrh r0, [r2, 0x4] + ldrh r1, [r1, 0x22] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754B8 + strh r4, [r5, 0x34] + strh r4, [r5, 0x36] + strh r6, [r5, 0x38] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0809938C @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _08099390 @ =sub_8074E14 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809937C: .4byte gUnknown_2037F1B +_08099380: .4byte gUnknown_2023D44 +_08099384: .4byte gUnknown_2037F02 +_08099388: .4byte gUnknown_202063C +_0809938C: .4byte sub_8072740 +_08099390: .4byte sub_8074E14 + thumb_func_end sub_80992E0 + + thumb_func_start sub_8099394 +sub_8099394: @ 8099394 + push {r4-r7,lr} + adds r6, r0, 0 + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080993B4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080993BC + ldr r0, _080993B8 @ =gUnknown_2037F1A + b _080993BE + .align 2, 0 +_080993B4: .4byte gUnknown_2037F02 +_080993B8: .4byte gUnknown_2037F1A +_080993BC: + ldr r0, _0809943C @ =gUnknown_2037F1B +_080993BE: + ldrb r1, [r0] + ldr r0, _08099440 @ =gUnknown_2023D44 + adds r0, r1, r0 + ldrb r7, [r0] + adds r0, r1, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080993E8 + ldr r1, _08099444 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080993E8 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080993E8: + ldr r5, _08099444 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x8] + strh r0, [r6, 0x2E] + ldr r0, _08099448 @ =gUnknown_202063C + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r6, 0x30] + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r6, 0x34] + ldrh r1, [r5, 0x4] + adds r0, r1 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl sub_80754B8 + ldrh r0, [r4, 0x24] + lsls r0, 8 + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x26] + lsls r0, 8 + strh r0, [r6, 0x36] + strh r7, [r6, 0x38] + ldrh r0, [r5, 0xA] + strh r0, [r6, 0x3A] + lsls r0, 16 + cmp r0, 0 + bne _08099450 + ldr r1, _0809944C @ =sub_8072740 + adds r0, r6, 0 + bl sub_8074A68 + b _08099458 + .align 2, 0 +_0809943C: .4byte gUnknown_2037F1B +_08099440: .4byte gUnknown_2023D44 +_08099444: .4byte gUnknown_2037F02 +_08099448: .4byte gUnknown_202063C +_0809944C: .4byte sub_8072740 +_08099450: + ldr r1, _08099464 @ =sub_809946C + adds r0, r6, 0 + bl sub_8074A68 +_08099458: + ldr r0, _08099468 @ =sub_8074E14 + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099464: .4byte sub_809946C +_08099468: .4byte sub_8074E14 + thumb_func_end sub_8099394 + + thumb_func_start sub_809946C +sub_809946C: @ 809946C + push {r4,lr} + ldr r4, _08099498 @ =gUnknown_202063C + movs r1, 0x38 + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + movs r3, 0 + strh r3, [r1, 0x24] + movs r1, 0x38 + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r3, [r1, 0x26] + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08099498: .4byte gUnknown_202063C + thumb_func_end sub_809946C + + thumb_func_start sub_809949C +sub_809949C: @ 809949C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _08099520 @ =gUnknown_2037F02 + movs r0, 0x6 + ldrsh r1, [r5, r0] + movs r0, 0x80 + lsls r0, 8 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08099524 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080994CE + ldrh r0, [r5, 0x2] + negs r0, r0 + strh r0, [r5, 0x2] + ldrh r0, [r5, 0xA] + negs r0, r0 + strh r0, [r5, 0xA] +_080994CE: + ldrb r0, [r5] + bl sub_80749D4 + ldr r1, _08099528 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x8] + movs r1, 0x2 + ldrsh r0, [r5, r1] + lsls r0, 8 + movs r2, 0x6 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0xE] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r5, r1] + lsls r0, 8 + movs r2, 0xC + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0x12] + ldrh r0, [r5, 0xC] + strh r0, [r4, 0x14] + strh r7, [r4, 0x16] + ldr r0, _0809952C @ =sub_8099530 + str r0, [r4] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099520: .4byte gUnknown_2037F02 +_08099524: .4byte gUnknown_2037F1A +_08099528: .4byte gUnknown_3005090 +_0809952C: .4byte sub_8099530 + thumb_func_end sub_809949C + + thumb_func_start sub_8099530 +sub_8099530: @ 8099530 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08099588 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrb r1, [r5, 0x8] + ldrh r0, [r5, 0xA] + ldrh r2, [r5, 0x1E] + adds r0, r2 + strh r0, [r5, 0x1E] + ldr r2, _0809958C @ =gUnknown_202063C + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r2 + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x1C] + lsrs r0, 8 + movs r2, 0xC + ldrsh r1, [r5, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0x16] + ldrh r1, [r5, 0x1C] + adds r0, r1 + strh r0, [r5, 0x1C] + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _08099580 + ldr r0, _08099590 @ =sub_8099594 + str r0, [r5] +_08099580: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08099588: .4byte gUnknown_3005090 +_0809958C: .4byte gUnknown_202063C +_08099590: .4byte sub_8099594 + thumb_func_end sub_8099530 + + thumb_func_start sub_8099594 +sub_8099594: @ 8099594 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080995B8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080995BC + subs r0, r1, 0x1 + strh r0, [r4, 0x10] + b _080995F0 + .align 2, 0 +_080995B8: .4byte gUnknown_3005090 +_080995BC: + ldrb r0, [r4, 0x8] + ldrh r2, [r4, 0x12] + ldrh r1, [r4, 0x20] + adds r2, r1 + strh r2, [r4, 0x20] + ldr r3, _080995F8 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + lsls r2, 16 + asrs r2, 24 + ldrh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 24 + adds r2, r0 + strh r2, [r1, 0x24] + ldrh r0, [r4, 0x14] + subs r0, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bne _080995F0 + adds r0, r5, 0 + bl sub_8072760 +_080995F0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080995F8: .4byte gUnknown_202063C + thumb_func_end sub_8099594 + + thumb_func_start sub_80995FC +sub_80995FC: @ 80995FC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08099620 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x2 + beq _0809962A + cmp r0, 0x2 + bgt _08099624 + cmp r0, 0 + blt _0809965C + ldrb r0, [r1] + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + b _08099664 + .align 2, 0 +_08099620: .4byte gUnknown_2037F02 +_08099624: + cmp r0, 0x3 + beq _08099634 + b _0809965C +_0809962A: + ldr r5, _08099630 @ =gUnknown_2037F1A + b _08099636 + .align 2, 0 +_08099630: .4byte gUnknown_2037F1A +_08099634: + ldr r5, _08099654 @ =gUnknown_2037F1B +_08099636: + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0809965C + ldr r1, _08099658 @ =gUnknown_2023D44 + ldrb r0, [r5] + eors r0, r4 + adds r0, r1 + ldrb r2, [r0] + b _08099664 + .align 2, 0 +_08099654: .4byte gUnknown_2037F1B +_08099658: .4byte gUnknown_2023D44 +_0809965C: + adds r0, r6, 0 + bl sub_8072760 + b _080996A4 +_08099664: + ldr r1, _08099684 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r0, r4, r6 + lsls r0, 3 + adds r5, r0, r1 + strh r2, [r5, 0x8] + ldr r0, _08099688 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08099690 + ldr r0, _0809968C @ =gUnknown_2037F02 + ldrh r0, [r0, 0x2] + b _08099696 + .align 2, 0 +_08099684: .4byte gUnknown_3005090 +_08099688: .4byte gUnknown_2037F1B +_0809968C: .4byte gUnknown_2037F02 +_08099690: + ldr r0, _080996AC @ =gUnknown_2037F02 + ldrh r0, [r0, 0x2] + negs r0, r0 +_08099696: + strh r0, [r5, 0xA] + ldr r0, _080996B0 @ =gUnknown_3005090 + adds r1, r4, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080996B4 @ =sub_80996B8 + str r0, [r1] +_080996A4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080996AC: .4byte gUnknown_2037F02 +_080996B0: .4byte gUnknown_3005090 +_080996B4: .4byte sub_80996B8 + thumb_func_end sub_80995FC + + thumb_func_start sub_80996B8 +sub_80996B8: @ 80996B8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080996FC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrb r2, [r1, 0x8] + ldr r3, _08099700 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r1, 0xA] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + movs r2, 0x24 + ldrsh r1, [r0, r2] + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r1, r0 + adds r1, 0x20 + movs r0, 0x98 + lsls r0, 1 + cmp r1, r0 + bls _080996F6 + adds r0, r4, 0 + bl sub_8072760 +_080996F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080996FC: .4byte gUnknown_3005090 +_08099700: .4byte gUnknown_202063C + thumb_func_end sub_80996B8 + + thumb_func_start sub_8099704 +sub_8099704: @ 8099704 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _08099754 @ =gUnknown_2037F1A + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08099720 + ldr r1, _08099758 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_08099720: + ldr r4, _08099758 @ =gUnknown_2037F02 + ldrb r0, [r4, 0x8] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809975C @ =gUnknown_3005090 + lsls r3, r5, 2 + adds r1, r3, r5 + lsls r1, 3 + adds r2, r1, r2 + ldrh r1, [r4] + strh r1, [r2, 0x8] + ldrh r1, [r4, 0x2] + strh r1, [r2, 0xA] + ldrh r1, [r4, 0x4] + strh r1, [r2, 0xC] + ldrh r1, [r4, 0x6] + strh r1, [r2, 0xE] + strh r0, [r2, 0x10] + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08099760 + ldrb r0, [r6] + b _08099764 + .align 2, 0 +_08099754: .4byte gUnknown_2037F1A +_08099758: .4byte gUnknown_2037F02 +_0809975C: .4byte gUnknown_3005090 +_08099760: + ldr r0, _0809977C @ =gUnknown_2037F1B + ldrb r0, [r0] +_08099764: + strh r0, [r2, 0x12] + ldr r1, _08099780 @ =gUnknown_3005090 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x20] + ldr r1, _08099784 @ =sub_8099788 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809977C: .4byte gUnknown_2037F1B +_08099780: .4byte gUnknown_3005090 +_08099784: .4byte sub_8099788 + thumb_func_end sub_8099704 + + thumb_func_start sub_8099788 +sub_8099788: @ 8099788 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080997D8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + ldrb r7, [r4, 0x10] + ldrh r0, [r4, 0xC] + ldrh r1, [r4, 0x1C] + adds r0, r1 + lsls r1, r0, 16 + strh r0, [r4, 0x1C] + lsrs r1, 24 + mov r8, r1 + mov r0, r8 + movs r2, 0xA + ldrsh r1, [r4, r2] + bl sub_8044E30 + lsls r0, 16 + lsrs r5, r0, 16 + mov r9, r5 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080997E0 + ldr r0, _080997DC @ =gUnknown_202063C + lsls r2, r7, 4 + adds r1, r2, r7 + lsls r1, 2 + adds r1, r0 + strh r5, [r1, 0x24] + mov r9, r0 + adds r4, r2, 0 + b _08099826 + .align 2, 0 +_080997D8: .4byte gUnknown_3005090 +_080997DC: .4byte gUnknown_202063C +_080997E0: + ldrb r0, [r4, 0x12] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08099808 + ldr r1, _08099804 @ =gUnknown_202063C + lsls r2, r7, 4 + adds r0, r2, r7 + lsls r0, 2 + adds r3, r0, r1 + lsls r0, r5, 16 + asrs r0, 16 + mov r9, r1 + adds r4, r2, 0 + cmp r0, 0 + bge _08099824 + b _08099822 + .align 2, 0 +_08099804: .4byte gUnknown_202063C +_08099808: + ldr r1, _080998A8 @ =gUnknown_202063C + lsls r2, r7, 4 + adds r0, r2, r7 + lsls r0, 2 + adds r3, r0, r1 + mov r4, r9 + lsls r0, r4, 16 + asrs r0, 16 + mov r9, r1 + adds r4, r2, 0 + cmp r0, 0 + bge _08099822 + negs r0, r0 +_08099822: + negs r0, r0 +_08099824: + strh r0, [r3, 0x26] +_08099826: + mov r5, r8 + cmp r5, 0x7F + bls _08099848 + ldr r1, _080998AC @ =gUnknown_3005090 + lsls r2, r6, 2 + adds r0, r2, r6 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0x1E + ldrsh r0, [r3, r5] + adds r5, r1, 0 + cmp r0, 0 + bne _08099848 + movs r1, 0x20 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _0809986A +_08099848: + mov r2, r8 + cmp r2, 0x7E + bhi _0809989C + ldr r1, _080998AC @ =gUnknown_3005090 + lsls r2, r6, 2 + adds r0, r2, r6 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0x1E + ldrsh r0, [r3, r5] + adds r5, r1, 0 + cmp r0, 0x1 + bne _0809989C + movs r1, 0x20 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _0809989C +_0809986A: + adds r1, r2, r6 + lsls r1, 3 + adds r1, r5 + ldrh r0, [r1, 0x1E] + movs r2, 0x1 + eors r0, r2 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + eors r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0xE] + subs r0, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + bne _0809989C + adds r0, r4, r7 + lsls r0, 2 + add r0, r9 + strh r3, [r0, 0x24] + strh r3, [r0, 0x26] + adds r0, r6, 0 + bl sub_8072760 +_0809989C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080998A8: .4byte gUnknown_202063C +_080998AC: .4byte gUnknown_3005090 + thumb_func_end sub_8099788 + + thumb_func_start sub_80998B0 +sub_80998B0: @ 80998B0 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _080998FC @ =gUnknown_2037F02 + ldrb r0, [r6, 0x6] + bl sub_80749D4 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r1, [r6, 0x8] + adds r0, r5, 0 + bl sub_80758E0 + ldr r1, _08099900 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r6] + strh r1, [r0, 0x8] + ldrh r1, [r6, 0x2] + strh r1, [r0, 0xA] + ldrh r1, [r6, 0x4] + strh r1, [r0, 0xC] + ldrh r1, [r6, 0x4] + strh r1, [r0, 0xE] + strh r5, [r0, 0x10] + movs r1, 0x80 + lsls r1, 1 + strh r1, [r0, 0x1C] + strh r1, [r0, 0x1E] + ldr r1, _08099904 @ =sub_8099908 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080998FC: .4byte gUnknown_2037F02 +_08099900: .4byte gUnknown_3005090 +_08099904: .4byte sub_8099908 + thumb_func_end sub_80998B0 + + thumb_func_start sub_8099908 +sub_8099908: @ 8099908 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _08099968 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r4, 0x1C] + ldrh r0, [r4, 0xA] + ldrh r3, [r4, 0x1E] + adds r0, r3 + strh r0, [r4, 0x1E] + ldrb r0, [r4, 0x10] + adds r6, r0, 0 + movs r0, 0x1C + ldrsh r1, [r4, r0] + movs r3, 0x1E + ldrsh r2, [r4, r3] + adds r0, r6, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _08099978 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + ble _0809996C + ldrh r0, [r4, 0x8] + negs r0, r0 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xA] + negs r0, r0 + strh r0, [r4, 0xA] + strh r2, [r4, 0xC] + strh r1, [r4, 0xE] + b _08099978 + .align 2, 0 +_08099968: .4byte gUnknown_3005090 +_0809996C: + adds r0, r6, 0 + bl sub_8075980 + adds r0, r5, 0 + bl sub_8072760 +_08099978: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8099908 + + thumb_func_start sub_8099980 +sub_8099980: @ 8099980 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _080999BC @ =gUnknown_2037F02 + ldrb r0, [r4, 0x4] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r1, 0 + bl sub_80758E0 + ldr r1, _080999C0 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r2, r0, r1 + movs r1, 0 + strh r1, [r2, 0xA] + ldrh r0, [r4] + strh r0, [r2, 0xC] + movs r3, 0x6 + ldrsh r0, [r4, r3] + cmp r0, 0x1 + beq _080999C4 + strh r1, [r2, 0xE] + b _080999D0 + .align 2, 0 +_080999BC: .4byte gUnknown_2037F02 +_080999C0: .4byte gUnknown_3005090 +_080999C4: + ldrh r0, [r4] + ldrh r1, [r4, 0x2] + adds r3, r0, 0 + muls r3, r1 + adds r0, r3, 0 + strh r0, [r2, 0xE] +_080999D0: + ldr r1, _080999FC @ =gUnknown_3005090 + lsls r4, r7, 2 + adds r0, r4, r7 + lsls r0, 3 + adds r5, r0, r1 + ldr r6, _08099A00 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x10] + mov r0, r8 + strh r0, [r5, 0x12] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x14] + bl sub_8073788 + lsls r0, 24 + mov r8, r4 + cmp r0, 0 + beq _08099A04 + movs r0, 0x1 + strh r0, [r5, 0x16] + b _08099A28 + .align 2, 0 +_080999FC: .4byte gUnknown_3005090 +_08099A00: .4byte gUnknown_2037F02 +_08099A04: + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _08099A14 + ldr r0, _08099A10 @ =gUnknown_2037F1A + b _08099A16 + .align 2, 0 +_08099A10: .4byte gUnknown_2037F1A +_08099A14: + ldr r0, _08099A6C @ =gUnknown_2037F1B +_08099A16: + ldrb r0, [r0] + bl sub_80751C4 + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _08099A26 + movs r1, 0x1 +_08099A26: + strh r1, [r5, 0x16] +_08099A28: + ldr r0, _08099A70 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r4, r1, r0 + movs r3, 0x16 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08099A54 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _08099A54 + movs r1, 0xE + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0xE] + movs r2, 0x10 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x10] +_08099A54: + ldr r0, _08099A70 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08099A74 @ =sub_8099B54 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099A6C: .4byte gUnknown_2037F1B +_08099A70: .4byte gUnknown_3005090 +_08099A74: .4byte sub_8099B54 + thumb_func_end sub_8099980 + + thumb_func_start sub_8099A78 +sub_8099A78: @ 8099A78 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08099AB4 @ =gUnknown_2037F02 + ldrb r0, [r4, 0x4] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r1, 0 + bl sub_80758E0 + ldr r1, _08099AB8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0xA] + ldrh r1, [r4] + strh r1, [r0, 0xC] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08099AC0 + ldr r0, _08099ABC @ =gUnknown_2037F1A + b _08099AC2 + .align 2, 0 +_08099AB4: .4byte gUnknown_2037F02 +_08099AB8: .4byte gUnknown_3005090 +_08099ABC: .4byte gUnknown_2037F1A +_08099AC0: + ldr r0, _08099AF0 @ =gUnknown_2037F1B +_08099AC2: + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08099AD4 + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] +_08099AD4: + ldr r0, _08099AF4 @ =gUnknown_2037F02 + movs r2, 0x6 + ldrsh r1, [r0, r2] + adds r6, r0, 0 + cmp r1, 0x1 + beq _08099AFC + ldr r2, _08099AF8 @ =gUnknown_3005090 + lsls r3, r5, 2 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0xE] + b _08099B16 + .align 2, 0 +_08099AF0: .4byte gUnknown_2037F1B +_08099AF4: .4byte gUnknown_2037F02 +_08099AF8: .4byte gUnknown_3005090 +_08099AFC: + ldr r3, _08099B4C @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r0, r4, r5 + lsls r0, 3 + adds r0, r3 + ldrh r2, [r6] + ldrh r1, [r6, 0x2] + adds r7, r2, 0 + muls r7, r1 + adds r1, r7, 0 + strh r1, [r0, 0xE] + adds r2, r3, 0 + adds r3, r4, 0 +_08099B16: + adds r1, r3, r5 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r6, 0x2] + strh r0, [r1, 0x10] + mov r0, r8 + strh r0, [r1, 0x12] + ldrh r0, [r6, 0x6] + strh r0, [r1, 0x14] + movs r0, 0x1 + strh r0, [r1, 0x16] + movs r2, 0xE + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0xE] + movs r7, 0x10 + ldrsh r0, [r1, r7] + negs r0, r0 + strh r0, [r1, 0x10] + ldr r0, _08099B50 @ =sub_8099B54 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099B4C: .4byte gUnknown_3005090 +_08099B50: .4byte sub_8099B54 + thumb_func_end sub_8099A78 + + thumb_func_start sub_8099B54 +sub_8099B54: @ 8099B54 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08099BAC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0xE] + adds r0, r1 + strh r0, [r4, 0xE] + ldrb r0, [r4, 0x12] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0xE] + adds r1, r2, 0 + bl sub_8075858 + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08099B88 + ldrb r0, [r4, 0x12] + bl sub_80759DC +_08099B88: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xC + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08099BCE + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08099BB0 + cmp r0, 0x1 + ble _08099BB6 + cmp r0, 0x2 + beq _08099BBE + b _08099BB6 + .align 2, 0 +_08099BAC: .4byte gUnknown_3005090 +_08099BB0: + ldrb r0, [r4, 0x12] + bl sub_8075980 +_08099BB6: + adds r0, r5, 0 + bl sub_8072760 + b _08099BCE +_08099BBE: + movs r0, 0 + strh r0, [r4, 0xA] + movs r2, 0x10 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x10] + movs r0, 0x1 + strh r0, [r4, 0x14] +_08099BCE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8099B54 + + thumb_func_start sub_8099BD4 +sub_8099BD4: @ 8099BD4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08099C00 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + mov r8, r0 + cmp r1, 0 + bne _08099C0C + ldr r4, _08099C04 @ =gUnknown_3005090 + lsls r5, r7, 2 + adds r0, r5, r7 + lsls r0, 3 + adds r6, r0, r4 + ldr r0, _08099C08 @ =gUnknown_2037EEC + ldrh r0, [r0] + movs r1, 0xC + bl __udivsi3 + b _08099C20 + .align 2, 0 +_08099C00: .4byte gUnknown_2037F02 +_08099C04: .4byte gUnknown_3005090 +_08099C08: .4byte gUnknown_2037EEC +_08099C0C: + ldr r4, _08099CA8 @ =gUnknown_3005090 + lsls r5, r7, 2 + adds r0, r5, r7 + lsls r0, 3 + adds r6, r0, r4 + ldr r0, _08099CAC @ =gUnknown_2037EE8 + ldr r0, [r0] + movs r1, 0xC + bl __divsi3 +_08099C20: + strh r0, [r6, 0x26] + lsls r0, 16 + adds r1, r4, 0 + cmp r0, 0 + bgt _08099C2E + movs r0, 0x1 + strh r0, [r6, 0x26] +_08099C2E: + movs r2, 0x26 + ldrsh r0, [r6, r2] + cmp r0, 0x10 + ble _08099C3A + movs r0, 0x10 + strh r0, [r6, 0x26] +_08099C3A: + adds r4, r5, r7 + lsls r4, 3 + adds r4, r1 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + movs r5, 0 + strh r1, [r4, 0x24] + ldrh r2, [r4, 0x26] + movs r0, 0x1 + ands r0, r2 + adds r1, r0 + strh r1, [r4, 0x22] + strh r5, [r4, 0x20] + mov r1, r8 + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x1C] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x1E] + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x16] + ldr r2, _08099CB0 @ =gUnknown_202063C + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x18] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x26] + strh r0, [r4, 0x1A] + strh r5, [r4, 0x8] + mov r1, r8 + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xA] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xC] + ldr r0, _08099CB4 @ =sub_8099CB8 + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099CA8: .4byte gUnknown_3005090 +_08099CAC: .4byte gUnknown_2037EE8 +_08099CB0: .4byte gUnknown_202063C +_08099CB4: .4byte sub_8099CB8 + thumb_func_end sub_8099BD4 + + thumb_func_start sub_8099CB8 +sub_8099CB8: @ 8099CB8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08099D0C @ =gUnknown_3005090 + adds r3, r0, r1 + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xA + ldrsh r1, [r3, r2] + cmp r0, r1 + ble _08099D96 + movs r0, 0 + strh r0, [r3, 0x8] + ldrh r0, [r3, 0x20] + adds r1, r0, 0x1 + movs r0, 0x1 + ands r1, r0 + strh r1, [r3, 0x20] + movs r2, 0x1C + ldrsh r0, [r3, r2] + cmp r0, 0 + beq _08099D2A + cmp r1, 0 + beq _08099D14 + ldr r2, _08099D10 @ =gUnknown_202063C + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x18] + adds r1, r2 + b _08099D28 + .align 2, 0 +_08099D0C: .4byte gUnknown_3005090 +_08099D10: .4byte gUnknown_202063C +_08099D14: + ldr r2, _08099D50 @ =gUnknown_202063C + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x18] + ldrh r2, [r3, 0x24] + subs r1, r2 +_08099D28: + strh r1, [r0, 0x24] +_08099D2A: + movs r1, 0x1E + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _08099D64 + movs r2, 0x20 + ldrsh r4, [r3, r2] + cmp r4, 0 + beq _08099D54 + ldr r2, _08099D50 @ =gUnknown_202063C + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x26] + strh r1, [r0, 0x26] + b _08099D64 + .align 2, 0 +_08099D50: .4byte gUnknown_202063C +_08099D54: + ldr r2, _08099D9C @ =gUnknown_202063C + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x26] +_08099D64: + ldrh r0, [r3, 0xC] + subs r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r4, r0, 16 + cmp r4, 0 + bne _08099D96 + ldr r2, _08099D9C @ =gUnknown_202063C + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x24] + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x26] + adds r0, r5, 0 + bl sub_8072760 +_08099D96: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08099D9C: .4byte gUnknown_202063C + thumb_func_end sub_8099CB8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80A22E8.s b/asm/battle_anim_80A22E8.s new file mode 100644 index 000000000..19fbaa81b --- /dev/null +++ b/asm/battle_anim_80A22E8.s @@ -0,0 +1,55436 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A22E8 +sub_80A22E8: @ 80A22E8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A231C @ =gUnknown_2037F02 + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080A2320 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A2324 + ldrh r0, [r5, 0x8] + negs r0, r0 + b _080A2326 + .align 2, 0 +_080A231C: .4byte gUnknown_2037F02 +_080A2320: .4byte gUnknown_2037F1A +_080A2324: + ldrh r0, [r5, 0x8] +_080A2326: + strh r0, [r4, 0x34] + ldr r0, _080A2338 @ =gUnknown_2037F02 + ldrh r0, [r0, 0xA] + strh r0, [r4, 0x36] + ldr r0, _080A233C @ =sub_80A2340 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2338: .4byte gUnknown_2037F02 +_080A233C: .4byte sub_80A2340 + thumb_func_end sub_80A22E8 + + thumb_func_start sub_80A2340 +sub_80A2340: @ 80A2340 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A237C + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r1, r0 + strh r1, [r4, 0x32] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A2382 +_080A237C: + adds r0, r4, 0 + bl sub_8072740 +_080A2382: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2340 + + thumb_func_start sub_80A2388 +sub_80A2388: @ 80A2388 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080A23C8 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r5, _080A23CC @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080A23D0 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080A23D4 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A23C8: .4byte gUnknown_2037F02 +_080A23CC: .4byte gUnknown_2037F1A +_080A23D0: .4byte sub_8075590 +_080A23D4: .4byte sub_8074EE0 + thumb_func_end sub_80A2388 + + thumb_func_start sub_80A23D8 +sub_80A23D8: @ 80A23D8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080A2420 @ =gUnknown_2037F02 + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl sub_800838C + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldr r5, _080A2424 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080A2428 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080A242C @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2420: .4byte gUnknown_2037F02 +_080A2424: .4byte gUnknown_2037F1B +_080A2428: .4byte sub_8075590 +_080A242C: .4byte sub_8072740 + thumb_func_end sub_80A23D8 + + thumb_func_start sub_80A2430 +sub_80A2430: @ 80A2430 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r6, _080A2480 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080A2484 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x38] + ldr r1, _080A2488 @ =sub_80A248C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2480: .4byte gUnknown_2037F02 +_080A2484: .4byte gUnknown_2037F1B +_080A2488: .4byte sub_80A248C + thumb_func_end sub_80A2430 + + thumb_func_start sub_80A248C +sub_80A248C: @ 80A248C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A24A2 + adds r0, r4, 0 + bl sub_8007280 + b _080A24F6 +_080A24A2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _080A24BC + ldr r0, _080A24B8 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x1 + b _080A24C6 + .align 2, 0 +_080A24B8: .4byte gUnknown_2037F1B +_080A24BC: + ldr r0, _080A24FC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x6 +_080A24C6: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0xF + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080A24F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A24FC: .4byte gUnknown_2037F1B + thumb_func_end sub_80A248C + + thumb_func_start sub_80A2500 +sub_80A2500: @ 80A2500 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080A2570 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + subs r0, 0x1 + movs r2, 0 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080A255A + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + movs r0, 0x6 + strh r0, [r5, 0x8] + ldr r1, _080A2574 @ =gUnknown_2037F02 + movs r0, 0xF + strh r0, [r1] + strh r2, [r1, 0x2] + movs r0, 0x50 + strh r0, [r1, 0x4] + strh r2, [r1, 0x6] + ldr r4, _080A2578 @ =gUnknown_83E2A88 + ldr r0, _080A257C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + adds r3, r0, 0 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_80071EC +_080A255A: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0xF + bne _080A2568 + adds r0, r6, 0 + bl sub_8072760 +_080A2568: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2570: .4byte gUnknown_3005090 +_080A2574: .4byte gUnknown_2037F02 +_080A2578: .4byte gUnknown_83E2A88 +_080A257C: .4byte gUnknown_2037F1B + thumb_func_end sub_80A2500 + + thumb_func_start sub_80A2580 +sub_80A2580: @ 80A2580 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r6, _080A25C4 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x2E] + ldr r5, _080A25C8 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080A25CC @ =sub_80A25D0 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A25C4: .4byte gUnknown_2037F02 +_080A25C8: .4byte gUnknown_2037F1A +_080A25CC: .4byte sub_80A25D0 + thumb_func_end sub_80A2580 + + thumb_func_start sub_80A25D0 +sub_80A25D0: @ 80A25D0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080A25E4 + adds r0, r4, 0 + bl sub_8072740 +_080A25E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A25D0 + + thumb_func_start sub_80A25EC +sub_80A25EC: @ 80A25EC + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8044EC8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x7 + ands r1, r0 + adds r0, r5, 0 + bl sub_800838C + ldr r4, _080A2634 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A2638 + ldrh r0, [r5, 0x20] + subs r0, 0x14 + b _080A263C + .align 2, 0 +_080A2634: .4byte gUnknown_2037F1A +_080A2638: + ldrh r0, [r5, 0x20] + adds r0, 0x14 +_080A263C: + strh r0, [r5, 0x20] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1F + ands r0, r1 + adds r0, 0x40 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080A269C @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8075804 + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + strh r1, [r5, 0x38] + adds r0, r5, 0 + adds r0, 0x43 + ldrb r0, [r0] + strh r0, [r5, 0x3A] + ldr r1, _080A26A0 @ =sub_80A26A4 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A269C: .4byte gUnknown_2037F1B +_080A26A0: .4byte sub_80A26A4 + thumb_func_end sub_80A25EC + + thumb_func_start sub_80A26A4 +sub_80A26A4: @ 80A26A4 + push {r4,lr} + adds r4, r0, 0 + bl sub_807578C + lsls r0, 24 + cmp r0, 0 + beq _080A26BA + adds r0, r4, 0 + bl sub_8072740 + b _080A26EA +_080A26BA: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xC + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7E + bgt _080A26D6 + ldrh r0, [r4, 0x3A] + b _080A26DA +_080A26D6: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 +_080A26DA: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x18 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080A26EA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A26A4 + + thumb_func_start sub_80A26F0 +sub_80A26F0: @ 80A26F0 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080A2750 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A2710 + ldr r1, _080A2754 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080A2710: + ldr r4, _080A2754 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080A2758 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _080A275C @ =sub_80A2760 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2750: .4byte gUnknown_2037F1A +_080A2754: .4byte gUnknown_2037F02 +_080A2758: .4byte gUnknown_2037F1B +_080A275C: .4byte sub_80A2760 + thumb_func_end sub_80A26F0 + + thumb_func_start sub_80A2760 +sub_80A2760: @ 80A2760 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080A278A + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0xA + strh r0, [r4, 0x2E] + ldr r0, _080A2790 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080A2794 @ =sub_80A2798 + adds r0, r4, 0 + bl sub_8074A68 +_080A278A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2790: .4byte sub_8074C44 +_080A2794: .4byte sub_80A2798 + thumb_func_end sub_80A2760 + + thumb_func_start sub_80A2798 +sub_80A2798: @ 80A2798 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + movs r0, 0x3C + strh r0, [r4, 0x2E] + ldr r0, _080A27C8 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080A27CC @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A27C8: .4byte sub_8074C44 +_080A27CC: .4byte sub_8072740 + thumb_func_end sub_80A2798 + + thumb_func_start sub_80A27D0 +sub_80A27D0: @ 80A27D0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r5, _080A2814 @ =gUnknown_2037F02 + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + bl sub_800838C + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080A27FA + ldrb r0, [r4, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] +_080A27FA: + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldr r1, _080A2818 @ =sub_80A281C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2814: .4byte gUnknown_2037F02 +_080A2818: .4byte sub_80A281C + thumb_func_end sub_80A27D0 + + thumb_func_start sub_80A281C +sub_80A281C: @ 80A281C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + negs r1, r1 + bl sub_8044E4C + ldrh r1, [r4, 0x32] + adds r1, 0x18 + strh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080A2870 + ldr r0, _080A286C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + b _080A2894 + .align 2, 0 +_080A286C: .4byte gUnknown_2037F1B +_080A2870: + ldr r0, _080A28C0 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + adds r0, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080A2884 + movs r2, 0x3 +_080A2884: + movs r0, 0x3 + ands r2, r0 + lsls r2, 2 + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 +_080A2894: + strb r0, [r4, 0x5] + ldrh r0, [r4, 0x30] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080A28B8 + adds r0, r4, 0 + bl sub_8072740 +_080A28B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A28C0: .4byte gUnknown_2037F1B + thumb_func_end sub_80A281C + + thumb_func_start sub_80A28C4 +sub_80A28C4: @ 80A28C4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A28DE + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _080A28E6 +_080A28DE: + adds r0, r4, 0 + bl sub_8072760 + b _080A2918 +_080A28E6: + ldr r0, _080A2904 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A2908 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x3 + bl sub_80BC1F8 + b _080A2912 + .align 2, 0 +_080A2904: .4byte gUnknown_2037F1B +_080A2908: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 +_080A2912: + adds r0, r4, 0 + bl sub_8072760 +_080A2918: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A28C4 + + thumb_func_start sub_80A2920 +sub_80A2920: @ 80A2920 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r5, _080A2968 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, _080A296C @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, _080A2970 @ =sub_80A2974 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2968: .4byte gUnknown_2037F02 +_080A296C: .4byte gUnknown_2037F1A +_080A2970: .4byte sub_80A2974 + thumb_func_end sub_80A2920 + + thumb_func_start sub_80A2974 +sub_80A2974: @ 80A2974 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A29E0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + negs r1, r1 + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080A29C0 + ldr r0, _080A29BC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + b _080A29CA + .align 2, 0 +_080A29BC: .4byte gUnknown_2037F1A +_080A29C0: + ldr r0, _080A29DC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x1 +_080A29CA: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A29E6 + .align 2, 0 +_080A29DC: .4byte gUnknown_2037F1A +_080A29E0: + adds r0, r4, 0 + bl sub_8072740 +_080A29E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2974 + + thumb_func_start sub_80A29EC +sub_80A29EC: @ 80A29EC + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080A2A34 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, _080A2A38 @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, _080A2A3C @ =sub_80A2A40 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2A34: .4byte gUnknown_2037F02 +_080A2A38: .4byte gUnknown_2037F1A +_080A2A3C: .4byte sub_80A2A40 + thumb_func_end sub_80A29EC + + thumb_func_start sub_80A2A40 +sub_80A2A40: @ 80A2A40 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A2A98 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r1, [r4, 0x38] + adds r0, r1, 0 + subs r0, 0x3B + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bls _080A2A78 + adds r0, r1, 0 + subs r0, 0xBB + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _080A2A8C +_080A2A78: + ldrb r2, [r4, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + eors r1, r0 + lsls r1, 1 + subs r0, 0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_080A2A8C: + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A2A9E +_080A2A98: + adds r0, r4, 0 + bl sub_8072740 +_080A2A9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2A40 + + thumb_func_start sub_80A2AA4 +sub_80A2AA4: @ 80A2AA4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A2AE0 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, _080A2AE4 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldr r0, _080A2AE8 @ =sub_80A2AEC + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2AE0: .4byte gUnknown_2037F1A +_080A2AE4: .4byte gUnknown_2037F02 +_080A2AE8: .4byte sub_80A2AEC + thumb_func_end sub_80A2AA4 + + thumb_func_start sub_80A2AEC +sub_80A2AEC: @ 80A2AEC + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x32] + movs r2, 0x32 + ldrsh r3, [r1, r2] + cmp r3, 0 + bne _080A2B20 + ldrh r0, [r1, 0x30] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + beq _080A2B0E + movs r0, 0x80 + strh r0, [r1, 0x2E] + strh r3, [r1, 0x30] + strh r3, [r1, 0x32] + b _080A2B14 +_080A2B0E: + strh r2, [r1, 0x2E] + strh r2, [r1, 0x30] + strh r2, [r1, 0x32] +_080A2B14: + ldr r0, _080A2B1C @ =sub_80A2B38 + str r0, [r1, 0x1C] + b _080A2B34 + .align 2, 0 +_080A2B1C: .4byte sub_80A2B38 +_080A2B20: + subs r0, 0x1 + strh r0, [r1, 0x32] + ldrh r0, [r1, 0x2E] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x30] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] +_080A2B34: + pop {r0} + bx r0 + thumb_func_end sub_80A2AEC + + thumb_func_start sub_80A2B38 +sub_80A2B38: @ 80A2B38 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A2B58 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A2B5C + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl sub_8044E30 + negs r0, r0 + b _080A2B66 + .align 2, 0 +_080A2B58: .4byte gUnknown_2037F1A +_080A2B5C: + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl sub_8044E30 +_080A2B66: + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080A2B86 + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] +_080A2B86: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080A2B94 + adds r0, r4, 0 + bl sub_8072740 +_080A2B94: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2B38 + + thumb_func_start sub_80A2B9C +sub_80A2B9C: @ 80A2B9C + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080A2BF0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A2BBC + ldr r1, _080A2BF4 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080A2BBC: + ldr r6, _080A2BF4 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + movs r1, 0xC + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A2BFC + ldr r4, _080A2BF8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + b _080A2C1C + .align 2, 0 +_080A2BF0: .4byte gUnknown_2037F1A +_080A2BF4: .4byte gUnknown_2037F02 +_080A2BF8: .4byte gUnknown_2037F1B +_080A2BFC: + ldr r0, _080A2C48 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_8076D9C + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 +_080A2C1C: + strh r0, [r5, 0x36] + ldr r0, _080A2C4C @ =gUnknown_2037F02 + ldrh r0, [r0, 0xA] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080A2C50 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + adds r4, r0, 0 + ldr r0, _080A2C48 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080A2C54 + movs r0, 0x1 + b _080A2C56 + .align 2, 0 +_080A2C48: .4byte gUnknown_2037F1B +_080A2C4C: .4byte gUnknown_2037F02 +_080A2C50: .4byte gUnknown_2037F1A +_080A2C54: + movs r0, 0 +_080A2C56: + strh r0, [r5, 0x2E] + ldr r0, _080A2C64 @ =sub_80A2C68 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2C64: .4byte sub_80A2C68 + thumb_func_end sub_80A2B9C + + thumb_func_start sub_80A2C68 +sub_80A2C68: @ 80A2C68 + push {r4-r7,lr} + adds r6, r0, 0 + movs r7, 0 + ldrh r5, [r6, 0x2E] + ldrh r4, [r6, 0x3C] + movs r0, 0x1 + strh r0, [r6, 0x2E] + adds r0, r6, 0 + bl sub_8075094 + ldrh r0, [r6, 0x3C] + strh r5, [r6, 0x2E] + lsls r4, 16 + asrs r4, 16 + cmp r4, 0xC8 + ble _080A2C9A + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x37 + bgt _080A2C9A + ldrh r0, [r6, 0x6] + cmp r0, 0 + bne _080A2CA0 + adds r0, 0x1 + strh r0, [r6, 0x6] +_080A2C9A: + ldrh r0, [r6, 0x6] + cmp r0, 0 + beq _080A2CD2 +_080A2CA0: + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080A2CD2 + adds r3, r6, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r6, 0x6] + adds r0, 0x1 + strh r0, [r6, 0x6] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bne _080A2CD2 + movs r7, 0x1 +_080A2CD2: + movs r2, 0x20 + ldrsh r0, [r6, r2] + movs r2, 0x24 + ldrsh r1, [r6, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080A2CFC + movs r0, 0x22 + ldrsh r1, [r6, r0] + movs r2, 0x26 + ldrsh r0, [r6, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080A2CFC + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080A2CFE +_080A2CFC: + movs r7, 0x1 +_080A2CFE: + cmp r7, 0 + beq _080A2D08 + adds r0, r6, 0 + bl sub_8072740 +_080A2D08: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A2C68 + + thumb_func_start sub_80A2D10 +sub_80A2D10: @ 80A2D10 + push {r4,lr} + adds r4, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A2D3C + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A2D3C + ldr r0, _080A2D64 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_8076D9C +_080A2D3C: + ldrh r0, [r4, 0x22] + adds r0, 0x20 + strh r0, [r4, 0x22] + ldr r1, _080A2D68 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x36] + ldr r0, _080A2D6C @ =sub_80A2D70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2D64: .4byte gUnknown_2037F1B +_080A2D68: .4byte gUnknown_2037F02 +_080A2D6C: .4byte sub_80A2D70 + thumb_func_end sub_80A2D10 + + thumb_func_start sub_80A2D70 +sub_80A2D70: @ 80A2D70 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + bne _080A2D86 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + b _080A2D94 +_080A2D86: + cmp r0, 0 + ble _080A2D94 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + subs r0, r1, 0x2 + strh r0, [r4, 0x30] +_080A2D94: + ldrh r3, [r4, 0x32] + ldrh r5, [r4, 0x38] + adds r2, r3, r5 + strh r2, [r4, 0x38] + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r5, 0x36 + ldrsh r0, [r4, r5] + cmp r1, r0 + bge _080A2DAC + adds r0, r2, r3 + strh r0, [r4, 0x38] +_080A2DAC: + ldrh r1, [r4, 0x38] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r5, 0x38 + ldrsh r0, [r4, r5] + movs r1, 0x5 + bl sub_8044E30 + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080A2DEC + ldr r0, _080A2DE8 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + b _080A2DFA + .align 2, 0 +_080A2DE8: .4byte gUnknown_2037F1B +_080A2DEC: + ldr r0, _080A2E24 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 +_080A2DFA: + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080A2E1E + adds r0, r4, 0 + bl sub_8072740 +_080A2E1E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2E24: .4byte gUnknown_2037F1B + thumb_func_end sub_80A2D70 + + thumb_func_start sub_80A2E28 +sub_80A2E28: @ 80A2E28 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075114 + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r4, _080A2E5C @ =gUnknown_2037F02 + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_800843C + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, _080A2E60 @ =sub_80A2E64 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2E5C: .4byte gUnknown_2037F02 +_080A2E60: .4byte sub_80A2E64 + thumb_func_end sub_80A2E28 + + thumb_func_start sub_80A2E64 +sub_80A2E64: @ 80A2E64 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A2E94 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080A2E98 @ =0x0000ffff + cmp r1, r0 + bne _080A2E8E + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + bl sub_80749D4 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x2E] + ldr r0, _080A2E9C @ =sub_80A2EA0 + str r0, [r4, 0x1C] +_080A2E8E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2E94: .4byte gUnknown_2037F02 +_080A2E98: .4byte 0x0000ffff +_080A2E9C: .4byte sub_80A2EA0 + thumb_func_end sub_80A2E64 + + thumb_func_start sub_80A2EA0 +sub_80A2EA0: @ 80A2EA0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl sub_80749D4 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A2EB8 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + b _080A2EBC +_080A2EB8: + ldrh r0, [r4, 0x2E] + subs r0, 0xB +_080A2EBC: + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080A2ED8 + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x32] +_080A2ED8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A2F06 + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + cmp r0, 0 + ble _080A2F00 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800843C + b _080A2F06 +_080A2F00: + adds r0, r4, 0 + bl sub_8072740 +_080A2F06: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2EA0 + + thumb_func_start sub_80A2F0C +sub_80A2F0C: @ 80A2F0C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A2F38 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080A2F3C + adds r0, r4, 0 + bl sub_8072760 + b _080A2F62 + .align 2, 0 +_080A2F38: .4byte gUnknown_202063C +_080A2F3C: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_80758E0 + ldr r1, _080A2F68 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080A2F6C @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r0, 0x8] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xA] + movs r1, 0x80 + lsls r1, 1 + strh r1, [r0, 0x1E] + ldr r1, _080A2F70 @ =sub_80A2F74 + str r1, [r0] +_080A2F62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2F68: .4byte gUnknown_3005090 +_080A2F6C: .4byte gUnknown_2037F02 +_080A2F70: .4byte sub_80A2F74 + thumb_func_end sub_80A2F0C + + thumb_func_start sub_80A2F74 +sub_80A2F74: @ 80A2F74 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080A2FF4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x8] + ldrh r0, [r4, 0x1C] + adds r1, r0 + strh r1, [r4, 0x1C] + ldr r2, _080A2FF8 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r2 + lsls r1, 16 + asrs r1, 24 + strh r1, [r5, 0x24] + ldr r0, _080A2FFC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A2FBE + ldrh r0, [r5, 0x24] + negs r0, r0 + strh r0, [r5, 0x24] +_080A2FBE: + ldrh r0, [r4, 0x1E] + adds r0, 0x10 + strh r0, [r4, 0x1E] + movs r0, 0x1E + ldrsh r2, [r4, r0] + adds r0, r6, 0 + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + adds r0, r6, 0 + bl sub_8076440 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080A2FEC + strh r0, [r4, 0x8] + ldr r0, _080A3000 @ =sub_80A3004 + str r0, [r4] +_080A2FEC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2FF4: .4byte gUnknown_3005090 +_080A2FF8: .4byte gUnknown_202063C +_080A2FFC: .4byte gUnknown_2037F1B +_080A3000: .4byte sub_80A3004 + thumb_func_end sub_80A2F74 + + thumb_func_start sub_80A3004 +sub_80A3004: @ 80A3004 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _080A3050 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080A3054 @ =0x0000ffff + cmp r1, r0 + bne _080A3060 + ldr r0, _080A3058 @ =gUnknown_3005090 + lsls r2, r3, 2 + adds r1, r2, r3 + lsls r1, 3 + adds r6, r1, r0 + movs r1, 0x8 + ldrsh r5, [r6, r1] + adds r4, r0, 0 + cmp r5, 0 + bne _080A3074 + movs r0, 0x1 + bl sub_80749D4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8075980 + ldr r1, _080A305C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x24] + strh r5, [r0, 0x26] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080A308E + .align 2, 0 +_080A3050: .4byte gUnknown_2037F02 +_080A3054: .4byte 0x0000ffff +_080A3058: .4byte gUnknown_3005090 +_080A305C: .4byte gUnknown_202063C +_080A3060: + ldr r1, _080A3094 @ =gUnknown_3005090 + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + movs r4, 0x8 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + cmp r0, 0 + beq _080A308E +_080A3074: + adds r1, r2, r3 + lsls r1, 3 + adds r1, r4 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080A308E + adds r0, r3, 0 + bl sub_8072760 +_080A308E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3094: .4byte gUnknown_3005090 + thumb_func_end sub_80A3004 + + thumb_func_start sub_80A3098 +sub_80A3098: @ 80A3098 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080A30AA + cmp r0, 0x1 + beq _080A3104 + b _080A3156 +_080A30AA: + ldr r6, _080A30FC @ =gUnknown_2037F1B + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A30C2 + ldr r1, _080A3100 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080A30C2: + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A3100 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080A3156 + .align 2, 0 +_080A30FC: .4byte gUnknown_2037F1B +_080A3100: .4byte gUnknown_2037F02 +_080A3104: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A3156 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800849C + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldr r4, _080A315C @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080A3160 @ =sub_8075764 + str r0, [r5, 0x1C] + ldr r1, _080A3164 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 +_080A3156: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A315C: .4byte gUnknown_2037F1A +_080A3160: .4byte sub_8075764 +_080A3164: .4byte sub_8072740 + thumb_func_end sub_80A3098 + + thumb_func_start sub_80A3168 +sub_80A3168: @ 80A3168 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A31D4 + ldr r4, _080A31E0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080A31E4 @ =gUnknown_2037F02 + ldrh r0, [r4] + strh r0, [r5, 0x24] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x26] + ldrb r0, [r4, 0x4] + adds r0, 0x1E + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r4, 0x6] + adds r0, r5, 0 + bl sub_800838C + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r2, 0x22 + ldrsh r0, [r5, r2] + movs r2, 0x26 + ldrsh r1, [r5, r2] + adds r0, r1 + cmp r0, 0x78 + ble _080A31D4 + ldrh r0, [r5, 0x22] + adds r1, r0, 0 + subs r1, 0x78 + ldrh r2, [r5, 0x26] + adds r0, r2 + adds r1, r0 + strh r1, [r5, 0x22] +_080A31D4: + ldr r0, _080A31E8 @ =sub_80A32DC + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A31E0: .4byte gUnknown_2037F1A +_080A31E4: .4byte gUnknown_2037F02 +_080A31E8: .4byte sub_80A32DC + thumb_func_end sub_80A3168 + + thumb_func_start sub_80A31EC +sub_80A31EC: @ 80A31EC + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + mov r9, r0 + ldr r4, _080A32C8 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r6, _080A32CC @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + adds r2, r0, 0 + lsls r2, 24 + subs r4, r5 + lsls r4, 16 + lsrs r2, 24 + mov r1, r8 + subs r2, r1 + lsls r2, 16 + lsrs r2, 16 + lsrs r3, r4, 16 + mov r10, r3 + asrs r4, 16 + ldr r6, _080A32D0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + muls r0, r4 + movs r1, 0x64 + str r2, [sp] + bl __divsi3 + adds r5, r0 + mov r3, r9 + strh r5, [r3, 0x20] + ldr r2, [sp] + lsls r0, r2, 16 + asrs r0, 16 + movs r3, 0 + ldrsh r1, [r6, r3] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + add r8, r0 + mov r1, r8 + mov r0, r9 + strh r1, [r0, 0x22] + ldrh r0, [r6, 0x2] + mov r3, r9 + strh r0, [r3, 0x24] + ldrh r0, [r6, 0x4] + strh r0, [r3, 0x26] + ldrb r0, [r6, 0x6] + adds r0, 0x1E + mov r1, r9 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0x8] + mov r0, r9 + bl sub_800838C + ldrh r0, [r6, 0xA] + mov r1, r9 + strh r0, [r1, 0x32] + ldr r0, _080A32D4 @ =sub_80A32DC + str r0, [r1, 0x1C] + ldr r1, _080A32D8 @ =gUnknown_203999C + mov r3, r9 + ldrh r0, [r3, 0x20] + strh r0, [r1] + ldrh r0, [r3, 0x22] + strh r0, [r1, 0x2] + mov r0, r10 + strh r0, [r1, 0x4] + ldr r2, [sp] + strh r2, [r1, 0x6] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A32C8: .4byte gUnknown_2037F1A +_080A32CC: .4byte gUnknown_2037F1B +_080A32D0: .4byte gUnknown_2037F02 +_080A32D4: .4byte sub_80A32DC +_080A32D8: .4byte gUnknown_203999C + thumb_func_end sub_80A31EC + + thumb_func_start sub_80A32DC +sub_80A32DC: @ 80A32DC + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + adds r1, 0x1 + strh r1, [r3, 0x2E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x32 + ldrsh r0, [r3, r2] + subs r0, 0xA + cmp r1, r0 + ble _080A331C + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + movs r2, 0x3E + adds r2, r3 + mov r12, r2 + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080A331C: + movs r2, 0x2E + ldrsh r1, [r3, r2] + movs r2, 0x32 + ldrsh r0, [r3, r2] + cmp r1, r0 + ble _080A332E + adds r0, r3, 0 + bl sub_8072740 +_080A332E: + pop {r0} + bx r0 + thumb_func_end sub_80A32DC + + thumb_func_start sub_80A3334 +sub_80A3334: @ 80A3334 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A3374 + ldr r5, _080A33B0 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A33B4 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r2, [r4] + adds r0, r2 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x30] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x34] +_080A3374: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] + ldrh r1, [r6, 0x30] + muls r0, r1 + strh r0, [r6, 0x24] + movs r2, 0x2E + ldrsh r1, [r6, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + movs r1, 0xFF + ands r0, r1 + movs r2, 0x32 + ldrsh r1, [r6, r2] + bl sub_8044E30 + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x34 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080A33AA + adds r0, r6, 0 + bl sub_8072740 +_080A33AA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A33B0: .4byte gUnknown_2037F1A +_080A33B4: .4byte gUnknown_2037F02 + thumb_func_end sub_80A3334 + + thumb_func_start sub_80A33B8 +sub_80A33B8: @ 80A33B8 + push {r4,r5,lr} + movs r2, 0x20 + ldrsh r4, [r0, r2] + lsls r4, 8 + movs r3, 0x22 + ldrsh r2, [r0, r3] + orrs r4, r2 + movs r5, 0x3A + ldrsh r2, [r0, r5] + lsls r2, 8 + movs r5, 0x3C + ldrsh r3, [r0, r5] + orrs r2, r3 + lsls r1, 8 + strh r4, [r0, 0x38] + strh r2, [r0, 0x3A] + strh r1, [r0, 0x3C] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A33B8 + + thumb_func_start sub_80A33E0 +sub_80A33E0: @ 80A33E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + ldrh r0, [r0, 0x38] + lsrs r1, r0, 8 + mov r10, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + ldrh r0, [r1, 0x3A] + lsrs r2, r0, 8 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r1, [r1, 0x3C] + lsls r0, r1, 16 + asrs r0, 24 + lsls r0, 16 + lsrs r6, r0, 16 + movs r3, 0xFF + ands r3, r1 + cmp r2, 0 + bne _080A341A + movs r2, 0x20 + negs r2, r2 + b _080A3422 +_080A341A: + cmp r2, 0xFF + bne _080A3422 + movs r2, 0x88 + lsls r2, 1 +_080A3422: + mov r0, r9 + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + mov r1, r10 + subs r0, r2, r1 + lsls r5, r3, 16 + asrs r5, 16 + muls r0, r5 + lsls r1, r6, 16 + asrs r7, r1, 16 + adds r1, r7, 0 + bl __divsi3 + adds r6, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + muls r0, r5 + adds r1, r7, 0 + bl __divsi3 + add r6, r10 + mov r1, r8 + strh r6, [r1, 0x20] + add r0, r9 + strh r0, [r1, 0x22] + adds r5, 0x1 + lsls r5, 16 + lsrs r3, r5, 16 + asrs r5, 16 + cmp r5, r7 + beq _080A3474 + lsls r1, r7, 8 + lsls r0, r3, 16 + asrs r0, 16 + orrs r0, r1 + mov r1, r8 + strh r0, [r1, 0x3C] + movs r0, 0 + b _080A3476 +_080A3474: + movs r0, 0x1 +_080A3476: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A33E0 + + thumb_func_start sub_80A3484 +sub_80A3484: @ 80A3484 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080A3498 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_080A3498: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + ble _080A34AC + adds r0, r4, 0 + bl sub_8072740 +_080A34AC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A3484 + + thumb_func_start sub_80A34B4 +sub_80A34B4: @ 80A34B4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080A34DE + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080A34DE: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80A33E0 + lsls r0, 24 + cmp r0, 0 + beq _080A350E + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, _080A3514 @ =sub_80A3484 + str r0, [r4, 0x1C] +_080A350E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A3514: .4byte sub_80A3484 + thumb_func_end sub_80A34B4 + + thumb_func_start sub_80A3518 +sub_80A3518: @ 80A3518 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r4, _080A3560 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A3564 @ =gUnknown_2037F1A + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080A3568 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x1 + b _080A357A + .align 2, 0 +_080A3560: .4byte gUnknown_2037F1B +_080A3564: .4byte gUnknown_2037F1A +_080A3568: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x3 +_080A357A: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A358C @ =sub_80A34B4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A358C: .4byte sub_80A34B4 + thumb_func_end sub_80A3518 + + thumb_func_start sub_80A3590 +sub_80A3590: @ 80A3590 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080A35BA + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080A35BA: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80A33E0 + lsls r0, 24 + cmp r0, 0 + beq _080A35EC + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + adds r0, r4, 0 + bl sub_8072740 +_080A35EC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A3590 + + thumb_func_start sub_80A35F4 +sub_80A35F4: @ 80A35F4 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080A3630 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A3638 + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80A33B8 + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A3634 @ =sub_80A34B4 + b _080A3662 + .align 2, 0 +_080A3630: .4byte gUnknown_2037F1B +_080A3634: .4byte sub_80A34B4 +_080A3638: + movs r0, 0xFF + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A3650 + movs r0, 0 + strh r0, [r5, 0x3A] +_080A3650: + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80A33B8 + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A366C @ =sub_80A3590 +_080A3662: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A366C: .4byte sub_80A3590 + thumb_func_end sub_80A35F4 + + thumb_func_start sub_80A3670 +sub_80A3670: @ 80A3670 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A368A + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 + ldr r0, _080A36B0 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x30] +_080A368A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + muls r0, r1 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A36AA + adds r0, r4, 0 + bl sub_8072740 +_080A36AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A36B0: .4byte gUnknown_2037F02 + thumb_func_end sub_80A3670 + + thumb_func_start sub_80A36B4 +sub_80A36B4: @ 80A36B4 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075114 + ldr r4, _080A36FC @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A3700 @ =gUnknown_2037F1B + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080A3704 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x1 + b _080A3716 + .align 2, 0 +_080A36FC: .4byte gUnknown_2037F1A +_080A3700: .4byte gUnknown_2037F1B +_080A3704: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80A33B8 + movs r0, 0x3 +_080A3716: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080A3728 @ =sub_80A372C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3728: .4byte sub_80A372C + thumb_func_end sub_80A36B4 + + thumb_func_start sub_80A372C +sub_80A372C: @ 80A372C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080A3756 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080A3756: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bne _080A378A + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl sub_80722F4 +_080A378A: + adds r0, r4, 0 + bl sub_80A33E0 + lsls r0, 24 + cmp r0, 0 + beq _080A37B2 + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, _080A37B8 @ =sub_80A3484 + str r0, [r4, 0x1C] + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl sub_80722F4 +_080A37B2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A37B8: .4byte sub_80A3484 + thumb_func_end sub_80A372C + + thumb_func_start sub_80A37BC +sub_80A37BC: @ 80A37BC + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A3850 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A37E4 + ldr r0, _080A37E0 @ =gUnknown_2037F02 + ldrh r1, [r0, 0x2] + strh r1, [r4, 0x30] + movs r1, 0x78 + strh r1, [r4, 0x20] + adds r5, r0, 0 + b _080A3806 + .align 2, 0 +_080A37E0: .4byte gUnknown_2037F02 +_080A37E4: + ldr r0, _080A3840 @ =gUnknown_2037F02 + movs r1, 0x2 + ldrsh r3, [r0, r1] + adds r1, r3, 0 + subs r1, 0x20 + adds r2, r1, 0 + adds r5, r0, 0 + cmp r1, 0 + bge _080A37FA + adds r2, r3, 0 + adds r2, 0xDF +_080A37FA: + asrs r0, r2, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + movs r0, 0x46 + strh r0, [r4, 0x20] +_080A3806: + ldrh r0, [r5] + strh r0, [r4, 0x22] + strh r0, [r4, 0x32] + movs r0, 0x14 + strh r0, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3C + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldr r0, _080A3844 @ =sub_80A3858 + str r0, [r4, 0x1C] + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080A3848 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080A384E + .align 2, 0 +_080A3840: .4byte gUnknown_2037F02 +_080A3844: .4byte sub_80A3858 +_080A3848: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080A384E: + strb r0, [r1] +_080A3850: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A37BC + + thumb_func_start sub_80A3858 +sub_80A3858: @ 80A3858 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A386A + cmp r0, 0x1 + beq _080A389A + b _080A38BA +_080A386A: + ldrh r5, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x4E + ble _080A3882 + movs r0, 0x1 + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + b _080A38BA +_080A3882: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + adds r0, r5, r0 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x36] + adds r1, 0x3 + strh r1, [r4, 0x36] + strh r0, [r4, 0x22] + b _080A38BA +_080A389A: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A38BA + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A38BA + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x32] + ldr r0, _080A38C0 @ =sub_80A38C4 + str r0, [r4, 0x1C] +_080A38BA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A38C0: .4byte sub_80A38C4 + thumb_func_end sub_80A3858 + + thumb_func_start sub_80A38C4 +sub_80A38C4: @ 80A38C4 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080A3908 @ =gUnknown_83E2F78 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r3, r0, r1 + adds r0, r5, 0x1 + adds r0, r3, r0 + ldrh r2, [r4, 0x32] + movs r6, 0x32 + ldrsh r1, [r4, r6] + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r1, r0 + bne _080A3910 + adds r0, r5, 0x2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x7F + bne _080A38FC + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080A390C @ =sub_80A397C + str r0, [r4, 0x1C] +_080A38FC: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A3976 + .align 2, 0 +_080A3908: .4byte gUnknown_83E2F78 +_080A390C: .4byte sub_80A397C +_080A3910: + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + adds r1, r0, r5 + movs r2, 0 + ldrsb r2, [r1, r2] + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + muls r0, r2 + ldrh r1, [r4, 0x30] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A395E + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080A3956 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080A395C +_080A3956: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080A395C: + strb r0, [r1] +_080A395E: + movs r6, 0x30 + ldrsh r0, [r4, r6] + movs r1, 0x3C + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl sub_8044E30 + strh r0, [r4, 0x26] +_080A3976: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A38C4 + + thumb_func_start sub_80A397C +sub_80A397C: @ 80A397C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x14 + ble _080A398E + adds r0, r4, 0 + bl sub_8072740 +_080A398E: + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A397C + + thumb_func_start sub_80A39C0 +sub_80A39C0: @ 80A39C0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A3B14 @ =gUnknown_3005090 + adds r5, r0, r1 + ldr r4, _080A3B18 @ =gUnknown_2037F1B + ldrb r0, [r4] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + strh r0, [r5, 0x10] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8076B2C + strh r0, [r5, 0x1C] + ldrb r0, [r4] + movs r1, 0 + bl sub_8076B2C + strh r0, [r5, 0x1E] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0x1 + bne _080A3A28 + movs r1, 0x1 +_080A3A28: + strh r1, [r5, 0x12] + movs r3, 0x12 + ldrsh r0, [r5, r3] + lsls r0, 6 + movs r1, 0x38 + subs r1, r0 + strh r1, [r5, 0x1A] + ldrh r0, [r5, 0x16] + subs r0, r1 + ldrh r1, [r5, 0x14] + adds r0, r1 + strh r0, [r5, 0x18] + ldr r0, _080A3B1C @ =gUnknown_83E2FF0 + movs r2, 0x18 + ldrsh r1, [r5, r2] + movs r3, 0x1A + ldrsh r2, [r5, r3] + ldrb r3, [r5, 0x10] + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xC] + cmp r0, 0x40 + bne _080A3A60 + adds r0, r6, 0 + bl sub_8072760 +_080A3A60: + ldr r4, _080A3B20 @ =gUnknown_202063C + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xA + strh r1, [r0, 0x2E] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x18] + strh r1, [r0, 0x30] + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + movs r1, 0x1C + ldrsh r0, [r5, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r5, r3] + muls r1, r0 + ldrh r0, [r5, 0x14] + subs r0, r1 + strh r0, [r2, 0x32] + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x1A] + strh r1, [r0, 0x34] + movs r1, 0xC + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + movs r2, 0x1E + ldrsh r0, [r5, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r2, [r5, r3] + muls r0, r2 + ldrh r2, [r5, 0x16] + adds r0, r2 + strh r0, [r1, 0x36] + movs r3, 0xC + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80A3F04 + movs r1, 0xC + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x38] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8075068 + ldr r0, _080A3B24 @ =sub_80A3B28 + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3B14: .4byte gUnknown_3005090 +_080A3B18: .4byte gUnknown_2037F1B +_080A3B1C: .4byte gUnknown_83E2FF0 +_080A3B20: .4byte gUnknown_202063C +_080A3B24: .4byte sub_80A3B28 + thumb_func_end sub_80A39C0 + + thumb_func_start sub_80A3B28 +sub_80A3B28: @ 80A3B28 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A3B6C @ =gUnknown_3005090 + adds r6, r0, r1 + movs r0, 0xC + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080A3B70 @ =gUnknown_202063C + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r5, [r6, r1] + cmp r5, 0x7 + bne _080A3B50 + b _080A3D80 +_080A3B50: + cmp r5, 0x7 + bgt _080A3B9E + cmp r5, 0x3 + bne _080A3B5A + b _080A3C72 +_080A3B5A: + cmp r5, 0x3 + bgt _080A3B74 + cmp r5, 0x1 + beq _080A3C04 + cmp r5, 0x1 + bgt _080A3C54 + cmp r5, 0 + beq _080A3BE6 + b _080A3EFC + .align 2, 0 +_080A3B6C: .4byte gUnknown_3005090 +_080A3B70: .4byte gUnknown_202063C +_080A3B74: + cmp r5, 0x5 + bne _080A3B7A + b _080A3CE8 +_080A3B7A: + cmp r5, 0x5 + ble _080A3B80 + b _080A3D62 +_080A3B80: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + bne _080A3B96 + b _080A3EFC +_080A3B96: + movs r0, 0x5 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3B9E: + cmp r5, 0xB + bne _080A3BA4 + b _080A3E64 +_080A3BA4: + cmp r5, 0xB + bgt _080A3BD2 + cmp r5, 0x9 + bne _080A3BAE + b _080A3DD2 +_080A3BAE: + cmp r5, 0x9 + ble _080A3BB4 + b _080A3E48 +_080A3BB4: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + bne _080A3BCA + b _080A3EFC +_080A3BCA: + movs r0, 0x9 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3BD2: + cmp r5, 0xD + bne _080A3BD8 + b _080A3ED6 +_080A3BD8: + cmp r5, 0xD + bge _080A3BDE + b _080A3EB6 +_080A3BDE: + cmp r5, 0xFF + bne _080A3BE4 + b _080A3EE6 +_080A3BE4: + b _080A3EFC +_080A3BE6: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + bne _080A3BFC + b _080A3EFC +_080A3BFC: + movs r0, 0x1 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3C04: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r0, [r6, 0x10] + adds r0, 0x2 + strh r0, [r6, 0x10] + strh r5, [r6, 0xE] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3C54: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + bne _080A3C6A + b _080A3EFC +_080A3C6A: + movs r0, 0x3 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3C72: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r1, r0 + ldrh r0, [r6, 0x16] + subs r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + movs r0, 0x2 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3CE8: + ldrh r1, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r1, r3 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x14] + adds r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r2, 0x1E + ldrsh r0, [r6, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x16] + adds r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x3 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3D62: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + bne _080A3D78 + b _080A3EFC +_080A3D78: + movs r0, 0x7 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3D80: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + adds r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x4 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3DD2: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r0, r1 + ldrh r3, [r6, 0x16] + adds r0, r3 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + movs r0, 0x5 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3E48: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080A3EFC + movs r0, 0xB + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080A3EFA +_080A3E64: + ldrh r2, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r2, r0 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x18] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x1A] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A3F04 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x6 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8075068 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3EB6: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80A3F24 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080A3EFC + adds r0, r4, 0 + bl sub_8007280 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080A3EFA +_080A3ED6: + movs r1, 0x20 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A3EFC + adds r0, r2, 0 + bl sub_8072760 + b _080A3EFC +_080A3EE6: + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A3EFC + movs r0, 0 + strh r0, [r6, 0xA] + ldrh r0, [r6, 0x26] +_080A3EFA: + strh r0, [r6, 0x8] +_080A3EFC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A3B28 + + thumb_func_start sub_80A3F04 +sub_80A3F04: @ 80A3F04 + push {lr} + movs r2, 0x8 + movs r3, 0x36 + ldrsh r1, [r0, r3] + movs r3, 0x22 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _080A3F1A + negs r0, r2 + lsls r0, 16 + lsrs r2, r0, 16 +_080A3F1A: + lsls r0, r2, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80A3F04 + + thumb_func_start sub_80A3F24 +sub_80A3F24: @ 80A3F24 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + ldrh r0, [r6, 0x24] + adds r0, 0x1 + strh r0, [r6, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _080A3FBA + movs r0, 0 + strh r0, [r6, 0x24] + ldr r0, _080A3FC4 @ =gUnknown_202063C + mov r8, r0 + movs r2, 0xC + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + ldrh r2, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r2, r0 + ldr r0, _080A3FC8 @ =gUnknown_83E2FF0 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + ldrb r3, [r6, 0x10] + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080A3FBA + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + mov r0, r8 + adds r4, r5, r0 + strh r7, [r4, 0x3A] + movs r0, 0xC + strh r0, [r4, 0x3C] + ldr r0, _080A3FCC @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldrh r2, [r6, 0x22] + movs r0, 0x1 + ands r0, r2 + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl sub_800838C + ldrh r0, [r6, 0x10] + adds r4, 0x43 + strb r0, [r4] + mov r0, r8 + adds r0, 0x1C + adds r5, r0 + ldr r0, _080A3FD0 @ =sub_80A3FD4 + str r0, [r5] +_080A3FBA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3FC4: .4byte gUnknown_202063C +_080A3FC8: .4byte gUnknown_83E2FF0 +_080A3FCC: .4byte gUnknown_3005090 +_080A3FD0: .4byte sub_80A3FD4 + thumb_func_end sub_80A3F24 + + thumb_func_start sub_80A3FD4 +sub_80A3FD4: @ 80A3FD4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4036 + movs r0, 0 + strh r0, [r4, 0x2E] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A4036 + ldr r3, _080A403C @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080A4036: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A403C: .4byte gUnknown_3005090 + thumb_func_end sub_80A3FD4 + + thumb_func_start sub_80A4040 +sub_80A4040: @ 80A4040 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080A4054 @ =gUnknown_2037F02 + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A405C + ldr r0, _080A4058 @ =gUnknown_2037F1A + b _080A405E + .align 2, 0 +_080A4054: .4byte gUnknown_2037F02 +_080A4058: .4byte gUnknown_2037F1A +_080A405C: + ldr r0, _080A407C @ =gUnknown_2037F1B +_080A405E: + ldrb r6, [r0] + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A4088 + movs r0, 0 + strh r0, [r4, 0x36] + ldr r1, _080A4080 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldr r0, _080A4084 @ =0x0000fff0 + b _080A4098 + .align 2, 0 +_080A407C: .4byte gUnknown_2037F1B +_080A4080: .4byte gUnknown_2037F02 +_080A4084: .4byte 0x0000fff0 +_080A4088: + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r1, _080A40BC @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r4, 0x32] + movs r0, 0x80 + lsls r0, 1 +_080A4098: + strh r0, [r4, 0x20] + adds r7, r1, 0 + adds r5, r7, 0 + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x34] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080A40CE + cmp r0, 0x1 + bgt _080A40C0 + cmp r0, 0 + beq _080A40CA + b _080A4138 + .align 2, 0 +_080A40BC: .4byte gUnknown_2037F02 +_080A40C0: + cmp r0, 0x2 + beq _080A40D4 + cmp r0, 0x3 + beq _080A4100 + b _080A4138 +_080A40CA: + ldrh r0, [r5] + b _080A40E4 +_080A40CE: + ldrh r0, [r5] + strh r0, [r4, 0x22] + b _080A411A +_080A40D4: + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5] + adds r0, r5 +_080A40E4: + strh r0, [r4, 0x22] + adds r0, r6, 0 + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080A4138 +_080A4100: + ldr r0, _080A4144 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r7, [r7] + adds r0, r7 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl sub_80749D4 +_080A411A: + adds r0, r6, 0 + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] +_080A4138: + ldr r0, _080A4148 @ =sub_80A414C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4144: .4byte gUnknown_2037F1B +_080A4148: .4byte sub_80A414C + thumb_func_end sub_80A4040 + + thumb_func_start sub_80A414C +sub_80A414C: @ 80A414C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x3C + ldrsh r3, [r4, r0] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x30 + ldrsh r2, [r4, r1] + ldr r1, _080A41A0 @ =gUnknown_825E074 + movs r5, 0x2E + ldrsh r0, [r4, r5] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + muls r0, r2 + asrs r0, 8 + strh r0, [r4, 0x26] + movs r2, 0x32 + ldrsh r0, [r4, r2] + muls r0, r3 + strh r0, [r4, 0x24] + movs r5, 0x34 + ldrsh r0, [r4, r5] + muls r0, r3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A41A4 + movs r2, 0x24 + ldrsh r0, [r4, r2] + movs r5, 0x20 + ldrsh r1, [r4, r5] + adds r0, r1 + cmp r0, 0xF7 + ble _080A41BC + b _080A41B6 + .align 2, 0 +_080A41A0: .4byte gUnknown_825E074 +_080A41A4: + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x20 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bgt _080A41BC +_080A41B6: + adds r0, r4, 0 + bl sub_8074EE0 +_080A41BC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A414C + + thumb_func_start sub_80A41C4 +sub_80A41C4: @ 80A41C4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A41E4 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080A41E8 + cmp r0, 0x1 + beq _080A421C + b _080A4276 + .align 2, 0 +_080A41E4: .4byte gUnknown_3005090 +_080A41E8: + ldr r0, _080A4214 @ =0x0000274f + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + movs r2, 0x80 + lsls r2, 1 + adds r4, r2, 0 + adds r0, r4 + strh r0, [r5, 0x18] + ldr r0, _080A4218 @ =0x000027b0 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + adds r0, r4 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080A4276 + .align 2, 0 +_080A4214: .4byte 0x0000274f +_080A4218: .4byte 0x000027b0 +_080A421C: + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x1A] + lsls r0, 16 + cmp r0, 0 + blt _080A4276 + strh r7, [r5, 0x1A] + ldrh r0, [r5, 0x18] + ldrb r2, [r5, 0x1C] + ldr r4, _080A4290 @ =gUnknown_83E30F0 + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl sub_8045274 + ldrh r0, [r5, 0x20] + ldrb r2, [r5, 0x1C] + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl sub_8045274 + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + bne _080A4276 + strh r7, [r5, 0x1C] + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bne _080A4276 + strh r7, [r5, 0x1E] +_080A4276: + ldr r0, _080A4294 @ =gUnknown_2037F02 + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080A428A + adds r0, r6, 0 + bl sub_8072760 +_080A428A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4290: .4byte gUnknown_83E30F0 +_080A4294: .4byte gUnknown_2037F02 + thumb_func_end sub_80A41C4 + + thumb_func_start sub_80A4298 +sub_80A4298: @ 80A4298 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r1, _080A42B0 @ =gUnknown_2037F02 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080A42B4 + adds r0, r6, 0 + bl sub_8072740 + b _080A438E + .align 2, 0 +_080A42B0: .4byte gUnknown_2037F02 +_080A42B4: + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080A42C4 + ldr r4, _080A42C0 @ =gUnknown_2037F1A + b _080A42C6 + .align 2, 0 +_080A42C0: .4byte gUnknown_2037F1A +_080A42C4: + ldr r4, _080A4300 @ =gUnknown_2037F1B +_080A42C6: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A4304 @ =gUnknown_2037F02 + ldrh r1, [r0, 0x8] + strh r1, [r6, 0x2E] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r7, r0, 0 + cmp r1, 0 + bne _080A4308 + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x20] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x22] + strh r5, [r6, 0x38] + strh r2, [r6, 0x3A] + b _080A4318 + .align 2, 0 +_080A4300: .4byte gUnknown_2037F1B +_080A4304: .4byte gUnknown_2037F02 +_080A4308: + strh r5, [r6, 0x20] + strh r2, [r6, 0x22] + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x38] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x3A] +_080A4318: + ldrh r4, [r6, 0x20] + lsls r0, r4, 4 + strh r0, [r6, 0x30] + ldrh r5, [r6, 0x22] + lsls r0, r5, 4 + strh r0, [r6, 0x32] + movs r1, 0x38 + ldrsh r0, [r6, r1] + movs r2, 0x20 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x34] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x22 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x38] + subs r0, r4 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r6, 0x3A] + subs r1, r5 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A437A + ldr r1, _080A4398 @ =0xffff8000 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080A437A: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldr r0, _080A439C @ =sub_80A43A0 + str r0, [r6, 0x1C] +_080A438E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4398: .4byte 0xffff8000 +_080A439C: .4byte sub_80A43A0 + thumb_func_end sub_80A4298 + + thumb_func_start sub_80A43A0 +sub_80A43A0: @ 80A43A0 + push {r4,lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x2E] + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080A43D0 + ldrh r0, [r2, 0x34] + ldrh r4, [r2, 0x30] + adds r0, r4 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r4, [r2, 0x32] + adds r1, r4 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r2, 0x22] + subs r0, r3, 0x1 + strh r0, [r2, 0x2E] + b _080A43D6 +_080A43D0: + adds r0, r2, 0 + bl sub_8074EE0 +_080A43D6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A43A0 + + thumb_func_start sub_80A43DC +sub_80A43DC: @ 80A43DC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A43F2 + adds r0, r2, 0 + bl sub_8072740 +_080A43F2: + pop {r0} + bx r0 + thumb_func_end sub_80A43DC + + thumb_func_start sub_80A43F8 +sub_80A43F8: @ 80A43F8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A4418 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A4420 + ldr r2, _080A441C @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + b _080A442C + .align 2, 0 +_080A4418: .4byte gUnknown_2037F1A +_080A441C: .4byte gUnknown_2037F02 +_080A4420: + ldr r0, _080A4444 @ =gUnknown_2037F02 + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_080A442C: + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080A4448 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080A444C @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4444: .4byte gUnknown_2037F02 +_080A4448: .4byte sub_8074F6C +_080A444C: .4byte sub_8072740 + thumb_func_end sub_80A43F8 + + thumb_func_start sub_80A4450 +sub_80A4450: @ 80A4450 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080A4488 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A446A + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C +_080A446A: + ldr r0, _080A448C @ =sub_80A43DC + str r0, [r5, 0x1C] + ldr r4, _080A4490 @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4488: .4byte gUnknown_2037F1A +_080A448C: .4byte sub_80A43DC +_080A4490: .4byte gUnknown_2037F02 + thumb_func_end sub_80A4450 + + thumb_func_start sub_80A4494 +sub_80A4494: @ 80A4494 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080A44D4 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldrb r1, [r1, 0xC] + adds r0, r4, 0 + bl sub_800843C + ldr r1, _080A44D8 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A44DC @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A44D4: .4byte gUnknown_2037F02 +_080A44D8: .4byte sub_8074EE0 +_080A44DC: .4byte sub_8074E70 + thumb_func_end sub_80A4494 + + thumb_func_start sub_80A44E0 +sub_80A44E0: @ 80A44E0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080A4530 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A4514 + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] +_080A4514: + ldr r0, _080A4534 @ =sub_80A46CC + str r0, [r5, 0x1C] + ldr r0, _080A4538 @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080A453C + ldrh r0, [r3] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + b _080A4550 + .align 2, 0 +_080A4530: .4byte gUnknown_2037F1B +_080A4534: .4byte sub_80A46CC +_080A4538: .4byte gUnknown_2037F02 +_080A453C: + ldrh r0, [r5, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r5, 0x20] + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080A4550: + ldrh r0, [r3, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldr r1, _080A4584 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r5, 0x30] + adds r1, r0, r2 + strh r1, [r5, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A457E + negs r0, r1 + strh r0, [r5, 0x30] +_080A457E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4584: .4byte 0xfffffc00 + thumb_func_end sub_80A44E0 + + thumb_func_start sub_80A4588 +sub_80A4588: @ 80A4588 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r0, _080A45A4 @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080A45A8 + cmp r0, 0x1 + ble _080A4624 + cmp r0, 0x2 + beq _080A45C8 + b _080A4624 + .align 2, 0 +_080A45A4: .4byte gUnknown_2037F02 +_080A45A8: + ldr r5, _080A45C4 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + eors r4, r0 + adds r0, r4, 0 + b _080A4634 + .align 2, 0 +_080A45C4: .4byte gUnknown_2037F1B +_080A45C8: + ldr r5, _080A4620 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + movs r2, 0x2 + mov r8, r2 + mov r1, r8 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A463E + ldrb r0, [r5] + mov r2, r8 + eors r0, r2 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + lsrs r7, r0, 1 + ldrb r0, [r5] + mov r1, r8 + eors r0, r1 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + lsrs r4, r0, 1 + b _080A463E + .align 2, 0 +_080A4620: .4byte gUnknown_2037F1B +_080A4624: + ldr r4, _080A4670 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] +_080A4634: + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r4, r0, 24 +_080A463E: + strh r7, [r6, 0x20] + strh r4, [r6, 0x22] + ldr r0, _080A4670 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A4656 + ldrh r0, [r6, 0x22] + adds r0, 0x8 + strh r0, [r6, 0x22] +_080A4656: + ldr r0, _080A4674 @ =sub_80A46CC + str r0, [r6, 0x1C] + ldr r0, _080A4678 @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080A467C + ldrh r0, [r3] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + b _080A4690 + .align 2, 0 +_080A4670: .4byte gUnknown_2037F1B +_080A4674: .4byte sub_80A46CC +_080A4678: .4byte gUnknown_2037F02 +_080A467C: + ldrh r0, [r6, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r6, 0x20] + adds r2, r6, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080A4690: + ldrh r0, [r3, 0x2] + ldrh r2, [r6, 0x22] + adds r0, r2 + strh r0, [r6, 0x22] + ldr r1, _080A46C8 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r6, 0x30] + adds r1, r0, r2 + strh r1, [r6, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r6, 0x32] + adds r0, r2 + strh r0, [r6, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r6, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A46BE + negs r0, r1 + strh r0, [r6, 0x30] +_080A46BE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A46C8: .4byte 0xfffffc00 + thumb_func_end sub_80A4588 + + thumb_func_start sub_80A46CC +sub_80A46CC: @ 80A46CC + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A46EE + adds r0, r1, 0 + adds r0, 0x18 + b _080A46F2 +_080A46EE: + adds r0, r1, 0 + subs r0, 0x18 +_080A46F2: + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + subs r0, 0x18 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080A4728 + ldr r1, _080A4730 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldr r0, _080A4734 @ =sub_8074C44 + str r0, [r4, 0x1C] +_080A4728: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4730: .4byte sub_8072740 +_080A4734: .4byte sub_8074C44 + thumb_func_end sub_80A46CC + + thumb_func_start sub_80A4738 +sub_80A4738: @ 80A4738 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x32] + movs r2, 0x32 + ldrsh r0, [r5, r2] + cmp r0, 0x1 + ble _080A47DC + ldrh r1, [r5, 0x34] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A4794 + adds r3, r5, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + strb r0, [r3] + ldr r4, _080A4790 @ =gUnknown_202063C + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r3, [r0] + adds r1, r2, 0 + ands r1, r3 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _080A47CA + .align 2, 0 +_080A4790: .4byte gUnknown_202063C +_080A4794: + adds r1, r5, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _080A47D8 @ =gUnknown_202063C + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] +_080A47CA: + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + b _080A47E0 + .align 2, 0 +_080A47D8: .4byte gUnknown_202063C +_080A47DC: + adds r0, r1, 0x1 + strh r0, [r5, 0x32] +_080A47E0: + movs r1, 0x34 + ldrsh r0, [r5, r1] + cmp r0, 0xA + bne _080A4810 + movs r2, 0x2E + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080A4818 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + adds r0, r5, 0 + bl sub_8072740 +_080A4810: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4818: .4byte gUnknown_202063C + thumb_func_end sub_80A4738 + + thumb_func_start sub_80A481C +sub_80A481C: @ 80A481C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080A483C @ =gUnknown_2037F02 + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080A4840 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A4844 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _080A484A + .align 2, 0 +_080A483C: .4byte gUnknown_2037F02 +_080A4840: .4byte gUnknown_2037F1A +_080A4844: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080A484A: + strh r0, [r5, 0x20] + ldr r4, _080A4878 @ =gUnknown_2037F02 + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl sub_800838C + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x34] + ldr r1, _080A487C @ =sub_80A4880 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4878: .4byte gUnknown_2037F02 +_080A487C: .4byte sub_80A4880 + thumb_func_end sub_80A481C + + thumb_func_start sub_80A4880 +sub_80A4880: @ 80A4880 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x64 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0x14 + bl sub_8044E30 + strh r0, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080A48AC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0 + b _080A48B2 +_080A48AC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0xE +_080A48B2: + strb r0, [r1] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x82 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080A48E8 + adds r0, r4, 0 + bl sub_8072740 +_080A48E8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4880 + + thumb_func_start sub_80A48F0 +sub_80A48F0: @ 80A48F0 + push {r4-r6,lr} + adds r5, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A4906 + ldr r1, _080A4964 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + adds r0, 0x8 + strh r0, [r1, 0x2] +_080A4906: + ldr r6, _080A4968 @ =gUnknown_2037F1A + ldrb r0, [r6] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + ldr r4, _080A4964 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A4944 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A496C +_080A4944: + ldrb r0, [r6] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + b _080A4984 + .align 2, 0 +_080A4964: .4byte gUnknown_2037F02 +_080A4968: .4byte gUnknown_2037F1A +_080A496C: + ldrb r0, [r6] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] +_080A4984: + ldr r0, _080A49C8 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080A49CC @ =0x00002828 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r5, 0x32] + movs r4, 0x10 + movs r0, 0x10 + strh r0, [r5, 0x3C] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r0, [r5, 0x3C] + lsls r1, r0, 8 + subs r4, r0 + orrs r1, r4 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080A49D0 @ =sub_80A49D4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A49C8: .4byte gUnknown_2037F02 +_080A49CC: .4byte 0x00002828 +_080A49D0: .4byte sub_80A49D4 + thumb_func_end sub_80A48F0 + + thumb_func_start sub_80A49D4 +sub_80A49D4: @ 80A49D4 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x60 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4A32 + movs r0, 0 + strh r0, [r4, 0x30] + ldr r1, _080A4A7C @ =gUnknown_20375F8 + movs r2, 0x32 + ldrsh r0, [r4, r2] + adds r0, 0x1 + lsls r0, 1 + adds r0, r1 + ldrh r5, [r0] + movs r2, 0 + adds r6, r1, 0 + adds r3, r6, 0 +_080A4A0C: + movs r1, 0x32 + ldrsh r0, [r4, r1] + adds r2, 0x1 + adds r0, r2 + lsls r1, r0, 1 + adds r1, r3 + adds r0, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + cmp r2, 0x5 + ble _080A4A0C + movs r2, 0x32 + ldrsh r0, [r4, r2] + adds r0, 0x7 + lsls r0, 1 + adds r0, r6 + strh r5, [r0] +_080A4A32: + ldrh r2, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x6 + ble _080A4A6C + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + ble _080A4A80 + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4A6C + movs r0, 0 + strh r0, [r4, 0x3A] + subs r2, 0x1 + strh r2, [r4, 0x3C] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_080A4A6C: + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A4A80 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _080A4AC2 + .align 2, 0 +_080A4A7C: .4byte gUnknown_20375F8 +_080A4A80: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A4AC2 + movs r0, 0 + strh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r2, 0x1 + strh r2, [r4, 0x3C] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A4AC2 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080A4AC8 @ =sub_8074F88 + str r0, [r4, 0x1C] +_080A4AC2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4AC8: .4byte sub_8074F88 + thumb_func_end sub_80A49D4 + + thumb_func_start sub_80A4ACC +sub_80A4ACC: @ 80A4ACC + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080A4B2C @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A4B30 @ =0x0000ffe8 + adds r0, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] + strh r5, [r4, 0x34] + strh r5, [r4, 0x36] + strh r5, [r4, 0x3A] + movs r0, 0x10 + strh r0, [r4, 0x3C] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080A4B34 @ =sub_80A4B38 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4B2C: .4byte gUnknown_2037F1B +_080A4B30: .4byte 0x0000ffe8 +_080A4B34: .4byte sub_80A4B38 + thumb_func_end sub_80A4ACC + + thumb_func_start sub_80A4B38 +sub_80A4B38: @ 80A4B38 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080A4B46 + b _080A4C90 +_080A4B46: + lsls r0, 2 + ldr r1, _080A4B50 @ =_080A4B54 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A4B50: .4byte _080A4B54 + .align 2, 0 +_080A4B54: + .4byte _080A4B68 + .4byte _080A4BCC + .4byte _080A4BE8 + .4byte _080A4C66 + .4byte _080A4C7A +_080A4B68: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + cmp r0, 0 + bgt _080A4B76 + b _080A4C90 +_080A4B76: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A4B98 + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080A4BA6 + adds r0, r1, 0x1 + strh r0, [r4, 0x3A] + b _080A4BA6 +_080A4B98: + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A4BA6 + subs r0, r1, 0x1 + strh r0, [r4, 0x3C] +_080A4BA6: + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A4C90 + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A4C90 + strh r0, [r4, 0x30] + b _080A4C72 +_080A4BCC: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A4C90 + movs r0, 0 + strh r0, [r4, 0x30] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + b _080A4C72 +_080A4BE8: + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x4 + bl sub_80A4C98 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080A4C0A + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080A4C0A: + ldrh r0, [r4, 0x32] + adds r1, r0, 0x1 + strh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x1D + ble _080A4C90 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080A4C30 + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A4C3E + subs r0, r1, 0x1 + strh r0, [r4, 0x3A] + b _080A4C3E +_080A4C30: + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080A4C3E + adds r0, r1, 0x1 + strh r0, [r4, 0x3C] +_080A4C3E: + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x3A + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _080A4C90 + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _080A4C90 + strh r1, [r4, 0x30] + strh r1, [r4, 0x32] + b _080A4C72 +_080A4C66: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080A4C72: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A4C90 +_080A4C7A: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 +_080A4C90: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4B38 + + thumb_func_start sub_80A4C98 +sub_80A4C98: @ 80A4C98 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0xB + bgt _080A4CAA + ldrh r0, [r4, 0x36] + adds r0, 0x2 + strh r0, [r4, 0x36] +_080A4CAA: + ldrh r5, [r4, 0x34] + adds r0, r5, 0 + subs r0, 0x12 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + cmp r0, 0x17 + bhi _080A4CC0 + ldrh r0, [r4, 0x36] + subs r0, 0x2 + strh r0, [r4, 0x36] +_080A4CC0: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x2F + ble _080A4CCE + ldrh r0, [r4, 0x36] + adds r0, 0x2 + strh r0, [r4, 0x36] +_080A4CCE: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0x9 + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl __divsi3 + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bge _080A4CF4 + movs r1, 0x26 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x26] +_080A4CF4: + adds r0, r5, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3B + ble _080A4D04 + movs r0, 0 + strh r0, [r4, 0x34] +_080A4D04: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A4C98 + + thumb_func_start sub_80A4D0C +sub_80A4D0C: @ 80A4D0C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A4D50 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A4D20 + adds r0, r4, 0 + bl sub_8074FCC +_080A4D20: + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x32] + ldr r1, _080A4D54 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A4D58 @ =sub_8074D00 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4D50: .4byte gUnknown_2037F02 +_080A4D54: .4byte sub_8072740 +_080A4D58: .4byte sub_8074D00 + thumb_func_end sub_80A4D0C + + thumb_func_start sub_80A4D5C +sub_80A4D5C: @ 80A4D5C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080A4D70 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A4D78 + ldr r0, _080A4D74 @ =gUnknown_2037F1A + b _080A4D7A + .align 2, 0 +_080A4D70: .4byte gUnknown_2037F02 +_080A4D74: .4byte gUnknown_2037F1A +_080A4D78: + ldr r0, _080A4DBC @ =gUnknown_2037F1B +_080A4D7A: + ldrb r6, [r0] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080A4DC4 + movs r1, 0x2 + adds r0, r6, 0 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A4DC4 + ldr r4, _080A4DC0 @ =gUnknown_2037F02 + ldrb r1, [r4, 0xC] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + adds r0, r6, 0 + bl sub_8076D9C + movs r2, 0 + ldrsh r1, [r4, r2] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + b _080A4E14 + .align 2, 0 +_080A4DBC: .4byte gUnknown_2037F1B +_080A4DC0: .4byte gUnknown_2037F02 +_080A4DC4: + ldr r4, _080A4DE4 @ =gUnknown_2037F02 + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A4DE8 + adds r0, r6, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + b _080A4DFA + .align 2, 0 +_080A4DE4: .4byte gUnknown_2037F02 +_080A4DE8: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 +_080A4DFA: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldr r0, _080A4E34 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r5, 0 + bl sub_8074FF8 +_080A4E14: + ldr r1, _080A4E34 @ =gUnknown_2037F02 + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x32] + ldr r1, _080A4E38 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080A4E3C @ =sub_8074D00 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4E34: .4byte gUnknown_2037F02 +_080A4E38: .4byte sub_8072740 +_080A4E3C: .4byte sub_8074D00 + thumb_func_end sub_80A4D5C + + thumb_func_start sub_80A4E40 +sub_80A4E40: @ 80A4E40 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080A4E6C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A4E74 + ldr r0, _080A4E70 @ =gUnknown_2037F02 + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + b _080A4E8E + .align 2, 0 +_080A4E6C: .4byte gUnknown_2037F1A +_080A4E70: .4byte gUnknown_2037F02 +_080A4E74: + ldr r2, _080A4E98 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C +_080A4E8E: + ldr r0, _080A4E9C @ =sub_80A4EA0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4E98: .4byte gUnknown_2037F02 +_080A4E9C: .4byte sub_80A4EA0 + thumb_func_end sub_80A4E40 + + thumb_func_start sub_80A4EA0 +sub_80A4EA0: @ 80A4EA0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _080A4ED8 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r0, 0x1E + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r4, 0x26] + movs r1, 0x30 + ldrsh r0, [r4, r1] + lsls r0, 18 + asrs r0, 16 + movs r1, 0x3 + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_080A4ED8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A4EEC + adds r0, r4, 0 + bl sub_8072740 +_080A4EEC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4EA0 + + thumb_func_start sub_80A4EF4 +sub_80A4EF4: @ 80A4EF4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080A4F24 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A4F2C + ldr r1, _080A4F28 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0x1 + strh r0, [r4, 0x34] + b _080A4F4A + .align 2, 0 +_080A4F24: .4byte gUnknown_2037F1A +_080A4F28: .4byte gUnknown_2037F02 +_080A4F2C: + ldr r2, _080A4F54 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldr r0, _080A4F58 @ =0x0000ffff + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_080A4F4A: + ldr r0, _080A4F5C @ =sub_80A4F60 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4F54: .4byte gUnknown_2037F02 +_080A4F58: .4byte 0x0000ffff +_080A4F5C: .4byte sub_80A4F60 + thumb_func_end sub_80A4EF4 + + thumb_func_start sub_80A4F60 +sub_80A4F60: @ 80A4F60 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl __divsi3 + negs r0, r0 + strh r0, [r4, 0x26] + movs r2, 0x36 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 1 + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _080A4FA4 + adds r0, r4, 0 + bl sub_8074EE0 +_080A4FA4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A4F60 + + thumb_func_start sub_80A4FAC +sub_80A4FAC: @ 80A4FAC + push {lr} + ldrh r1, [r0, 0x20] + subs r1, 0x20 + strh r1, [r0, 0x20] + ldrh r1, [r0, 0x22] + subs r1, 0x20 + strh r1, [r0, 0x22] + movs r1, 0x14 + strh r1, [r0, 0x2E] + ldr r1, _080A4FCC @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080A4FD0 @ =sub_80A4FD4 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080A4FCC: .4byte sub_8074C44 +_080A4FD0: .4byte sub_80A4FD4 + thumb_func_end sub_80A4FAC + + thumb_func_start sub_80A4FD4 +sub_80A4FD4: @ 80A4FD4 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r6, [r5, 0x38] + movs r1, 0x1 + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + beq _080A4FEA + cmp r0, 0x1 + beq _080A5004 + b _080A506A +_080A4FEA: + strh r1, [r5, 0x2E] + ldr r0, _080A4FFC @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080A5000 @ =sub_80A4FD4 + adds r0, r5, 0 + bl sub_8074A68 + b _080A506A + .align 2, 0 +_080A4FFC: .4byte sub_8074C44 +_080A5000: .4byte sub_80A4FD4 +_080A5004: + ldrh r3, [r5, 0x24] + ldrh r0, [r5, 0x20] + adds r3, r0 + movs r0, 0 + strh r3, [r5, 0x20] + ldrh r4, [r5, 0x26] + ldrh r1, [r5, 0x22] + adds r4, r1 + strh r4, [r5, 0x22] + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + movs r0, 0x8 + strh r0, [r5, 0x2E] + ldr r2, _080A5078 @ =gUnknown_83E3548 + lsls r0, r6, 16 + asrs r0, 24 + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + adds r3, r1 + strh r3, [r5, 0x32] + adds r2, 0x1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r4, r0 + strh r4, [r5, 0x36] + ldr r0, _080A507C @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A5080 @ =sub_80A5084 + adds r0, r5, 0 + bl sub_8074A68 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xCB + bl sub_80722F4 +_080A506A: + ldrh r0, [r5, 0x38] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x38] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5078: .4byte gUnknown_83E3548 +_080A507C: .4byte sub_8075590 +_080A5080: .4byte sub_80A5084 + thumb_func_end sub_80A4FD4 + + thumb_func_start sub_80A5084 +sub_80A5084: @ 80A5084 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x38] + lsls r0, 16 + asrs r0, 24 + cmp r0, 0x4 + bne _080A50AC + movs r0, 0xA + strh r0, [r2, 0x2E] + ldr r0, _080A50A4 @ =sub_8074C44 + str r0, [r2, 0x1C] + ldr r1, _080A50A8 @ =sub_80A50B8 + adds r0, r2, 0 + bl sub_8074A68 + b _080A50B0 + .align 2, 0 +_080A50A4: .4byte sub_8074C44 +_080A50A8: .4byte sub_80A50B8 +_080A50AC: + ldr r0, _080A50B4 @ =sub_80A4FD4 + str r0, [r2, 0x1C] +_080A50B0: + pop {r0} + bx r0 + .align 2, 0 +_080A50B4: .4byte sub_80A4FD4 + thumb_func_end sub_80A5084 + + thumb_func_start sub_80A50B8 +sub_80A50B8: @ 80A50B8 + push {r4-r7,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x6] + cmp r1, 0 + bne _080A50E0 + movs r0, 0x3 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + strh r1, [r5, 0x32] + ldr r0, _080A50D8 @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080A50DC @ =sub_80A5174 + adds r0, r5, 0 + bl sub_8074A68 + b _080A5160 + .align 2, 0 +_080A50D8: .4byte sub_8074C44 +_080A50DC: .4byte sub_80A5174 +_080A50E0: + ldrh r0, [r5, 0x6] + cmp r0, 0x2 + beq _080A5100 + cmp r0, 0x2 + bgt _080A50F0 + cmp r0, 0x1 + beq _080A50F6 + b _080A5114 +_080A50F0: + cmp r0, 0x3 + beq _080A5108 + b _080A5114 +_080A50F6: + ldr r6, _080A50FC @ =0x0000fff8 + adds r7, r6, 0 + b _080A5118 + .align 2, 0 +_080A50FC: .4byte 0x0000fff8 +_080A5100: + ldr r7, _080A5104 @ =0x0000fff8 + b _080A5116 + .align 2, 0 +_080A5104: .4byte 0x0000fff8 +_080A5108: + movs r7, 0x8 + ldr r6, _080A5110 @ =0x0000fff8 + b _080A5118 + .align 2, 0 +_080A5110: .4byte 0x0000fff8 +_080A5114: + movs r7, 0x8 +_080A5116: + movs r6, 0x8 +_080A5118: + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080A5168 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _080A516C @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A5170 @ =sub_80A5220 + adds r0, r5, 0 + bl sub_8074A68 +_080A5160: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A5168: .4byte gUnknown_2037F1B +_080A516C: .4byte sub_8075590 +_080A5170: .4byte sub_80A5220 + thumb_func_end sub_80A50B8 + + thumb_func_start sub_80A5174 +sub_80A5174: @ 80A5174 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A5194 + ldrh r0, [r4, 0x30] + adds r0, 0x3 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A51A4 + movs r0, 0x10 + b _080A51A2 +_080A5194: + ldrh r0, [r4, 0x30] + subs r0, 0x3 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080A51A4 + movs r0, 0 +_080A51A2: + strh r0, [r4, 0x30] +_080A51A4: + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8075BE8 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A5200 @ =0x00007fff + bl sub_80714D4 + movs r3, 0x30 + ldrsh r0, [r4, r3] + cmp r0, 0x10 + bne _080A520C + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + ldrb r1, [r4, 0x5] + lsrs r1, 4 + lsls r0, r1, 5 + ldr r2, _080A5204 @ =gUnknown_2037408 + adds r0, r2 + lsls r1, 4 + ldr r3, _080A5208 @ =0x00000101 + adds r2, r3, 0 + orrs r1, r2 + movs r2, 0x4 + bl sub_80703EC + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xB9 + bl sub_80722F4 + b _080A5214 + .align 2, 0 +_080A5200: .4byte 0x00007fff +_080A5204: .4byte gUnknown_2037408 +_080A5208: .4byte 0x00000101 +_080A520C: + cmp r0, 0 + bne _080A5214 + ldr r0, _080A521C @ =sub_80A5220 + str r0, [r4, 0x1C] +_080A5214: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A521C: .4byte sub_80A5220 + thumb_func_end sub_80A5174 + + thumb_func_start sub_80A5220 +sub_80A5220: @ 80A5220 + push {lr} + adds r2, r0, 0 + ldr r0, _080A523C @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080A5240 @ =0x0000ffff + cmp r1, r0 + bne _080A5238 + movs r0, 0 + strh r0, [r2, 0x30] + strh r0, [r2, 0x2E] + ldr r0, _080A5244 @ =sub_80A5248 + str r0, [r2, 0x1C] +_080A5238: + pop {r0} + bx r0 + .align 2, 0 +_080A523C: .4byte gUnknown_2037F02 +_080A5240: .4byte 0x0000ffff +_080A5244: .4byte sub_80A5248 + thumb_func_end sub_80A5220 + + thumb_func_start sub_80A5248 +sub_80A5248: @ 80A5248 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080A527C + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A527C: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bne _080A5290 + adds r0, r4, 0 + bl sub_8072740 +_080A5290: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A5248 + + thumb_func_start sub_80A5298 +sub_80A5298: @ 80A5298 + push {r4,lr} + adds r3, r0, 0 + ldr r0, _080A52B8 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r3, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A52BC + ldrh r0, [r3, 0x20] + subs r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + subs r0, 0x18 + strh r0, [r3, 0x22] + b _080A530E + .align 2, 0 +_080A52B8: .4byte gUnknown_2037F02 +_080A52BC: + cmp r0, 0x2 + bne _080A52D8 + ldrh r0, [r3, 0x20] + subs r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + adds r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x20 + b _080A530A +_080A52D8: + cmp r0, 0x3 + bne _080A52F4 + ldrh r0, [r3, 0x20] + adds r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + subs r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + b _080A530A +_080A52F4: + ldrh r0, [r3, 0x20] + adds r0, 0x18 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x22] + adds r0, 0x18 + strh r0, [r3, 0x22] + ldrb r1, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x30 +_080A530A: + orrs r0, r1 + strb r0, [r3, 0x3] +_080A530E: + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r4, _080A5334 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080A5338 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldr r1, _080A533C @ =sub_80A4FAC + str r1, [r3, 0x1C] + adds r0, r3, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5334: .4byte 0x000003ff +_080A5338: .4byte 0xfffffc00 +_080A533C: .4byte sub_80A4FAC + thumb_func_end sub_80A5298 + + thumb_func_start sub_80A5340 +sub_80A5340: @ 80A5340 + push {lr} + adds r3, r0, 0 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + strh r0, [r3, 0x2E] + ldr r0, _080A5368 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080A537C + cmp r0, 0x1 + bgt _080A536C + cmp r0, 0 + beq _080A5372 + b _080A538C + .align 2, 0 +_080A5368: .4byte gUnknown_2037F02 +_080A536C: + cmp r0, 0x2 + beq _080A5384 + b _080A538C +_080A5372: + ldr r0, _080A5378 @ =sub_80A5398 + b _080A538E + .align 2, 0 +_080A5378: .4byte sub_80A5398 +_080A537C: + ldr r0, _080A5380 @ =sub_80A5474 + b _080A538E + .align 2, 0 +_080A5380: .4byte sub_80A5474 +_080A5384: + ldr r0, _080A5388 @ =sub_80A54C4 + b _080A538E + .align 2, 0 +_080A5388: .4byte sub_80A54C4 +_080A538C: + ldr r0, _080A5394 @ =sub_80A5584 +_080A538E: + str r0, [r3, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_080A5394: .4byte sub_80A5584 + thumb_func_end sub_80A5340 + + thumb_func_start sub_80A5398 +sub_80A5398: @ 80A5398 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x6 + strh r0, [r4, 0x2E] + ldr r5, _080A53D8 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + beq _080A53B6 + movs r1, 0x2 +_080A53B6: + strh r1, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, _080A53DC @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + ldr r1, _080A53E0 @ =sub_80A53E8 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A53E4 @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A53D8: .4byte gUnknown_2037F1A +_080A53DC: .4byte gUnknown_2023D44 +_080A53E0: .4byte sub_80A53E8 +_080A53E4: .4byte sub_8074DC4 + thumb_func_end sub_80A5398 + + thumb_func_start sub_80A53E8 +sub_80A53E8: @ 80A53E8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r6, [r5, r0] + cmp r6, 0 + bne _080A5424 + ldr r1, _080A5464 @ =gUnknown_2023D44 + ldr r4, _080A5468 @ =gUnknown_2037F1A + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r5, 0x34] + movs r1, 0 + bl sub_80758E0 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + ldr r2, _080A546C @ =0xfffffd00 + adds r1, r2, 0 + cmp r0, 0 + beq _080A5420 + movs r0, 0xC0 + lsls r0, 2 + adds r1, r0, 0 +_080A5420: + strh r1, [r5, 0x36] + strh r6, [r5, 0x38] +_080A5424: + ldrh r0, [r5, 0x36] + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r5, 0x38] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A545E + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080A5470 @ =sub_80A5584 + str r0, [r5, 0x1C] +_080A545E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5464: .4byte gUnknown_2023D44 +_080A5468: .4byte gUnknown_2037F1A +_080A546C: .4byte 0xfffffd00 +_080A5470: .4byte sub_80A5584 + thumb_func_end sub_80A53E8 + + thumb_func_start sub_80A5474 +sub_80A5474: @ 80A5474 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x4 + strh r0, [r4, 0x2E] + ldr r5, _080A54B4 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + movs r1, 0x3 + cmp r0, 0 + beq _080A5492 + movs r0, 0x3 + negs r0, r0 + adds r1, r0, 0 +_080A5492: + strh r1, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, _080A54B8 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + ldr r1, _080A54BC @ =sub_80A5584 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A54C0 @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A54B4: .4byte gUnknown_2037F1A +_080A54B8: .4byte gUnknown_2023D44 +_080A54BC: .4byte sub_80A5584 +_080A54C0: .4byte sub_8074DC4 + thumb_func_end sub_80A5474 + + thumb_func_start sub_80A54C4 +sub_80A54C4: @ 80A54C4 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A54DE + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, _080A54E4 @ =sub_80A54E8 + str r0, [r1, 0x1C] +_080A54DE: + pop {r0} + bx r0 + .align 2, 0 +_080A54E4: .4byte sub_80A54E8 + thumb_func_end sub_80A54C4 + + thumb_func_start sub_80A54E8 +sub_80A54E8: @ 80A54E8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A5538 + ldr r1, _080A5524 @ =gUnknown_2023D44 + ldr r4, _080A5528 @ =gUnknown_2037F1A + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r5, 0x34] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A552C + movs r0, 0xFC + lsls r0, 8 + strh r0, [r5, 0x36] + movs r0, 0xC0 + lsls r0, 4 + b _080A5536 + .align 2, 0 +_080A5524: .4byte gUnknown_2023D44 +_080A5528: .4byte gUnknown_2037F1A +_080A552C: + movs r0, 0x80 + lsls r0, 3 + strh r0, [r5, 0x36] + movs r0, 0xF4 + lsls r0, 8 +_080A5536: + strh r0, [r5, 0x38] +_080A5538: + ldrh r0, [r5, 0x36] + ldrh r1, [r5, 0x38] + adds r0, r1 + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r5, 0x38] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080A5578 + ldrh r0, [r5, 0x34] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + ldr r0, _080A5580 @ =sub_80A5584 + str r0, [r5, 0x1C] +_080A5578: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5580: .4byte sub_80A5584 + thumb_func_end sub_80A54E8 + + thumb_func_start sub_80A5584 +sub_80A5584: @ 80A5584 + push {lr} + bl sub_8072740 + pop {r0} + bx r0 + thumb_func_end sub_80A5584 + + thumb_func_start sub_80A5590 +sub_80A5590: @ 80A5590 + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r1, _080A559C @ =sub_80A55A0 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080A559C: .4byte sub_80A55A0 + thumb_func_end sub_80A5590 + + thumb_func_start sub_80A55A0 +sub_80A55A0: @ 80A55A0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080A55FA + cmp r5, 0x1 + bgt _080A55B6 + cmp r5, 0 + beq _080A55BC + b _080A568E +_080A55B6: + cmp r5, 0x2 + beq _080A564C + b _080A568E +_080A55BC: + strh r5, [r4, 0x30] + ldr r1, _080A5640 @ =gUnknown_2023D44 + ldr r2, _080A5644 @ =gUnknown_2037F1A + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x32] + ldrb r0, [r2] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x34] + ldr r2, _080A5648 @ =0xfffffe00 + adds r1, r2, 0 + cmp r0, 0 + beq _080A55E4 + movs r0, 0x80 + lsls r0, 2 + adds r1, r0, 0 +_080A55E4: + strh r1, [r4, 0x36] + strh r5, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_080A55FA: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x38] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A568E + movs r0, 0 + strh r0, [r4, 0x30] + movs r2, 0x36 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A568E + .align 2, 0 +_080A5640: .4byte gUnknown_2023D44 +_080A5644: .4byte gUnknown_2037F1A +_080A5648: .4byte 0xfffffe00 +_080A564C: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x38] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A568E + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + adds r0, r4, 0 + bl sub_8072740 +_080A568E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A55A0 + + thumb_func_start sub_80A5694 +sub_80A5694: @ 80A5694 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080A56D8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldr r1, _080A56DC @ =gUnknown_2023D44 + ldr r2, _080A56E0 @ =gUnknown_2037F1A + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + movs r4, 0 + strh r0, [r5, 0x8] + ldrb r0, [r2] + bl sub_80751C4 + lsls r0, 24 + lsrs r2, r0, 24 + strh r2, [r5, 0xA] + strh r4, [r5, 0xC] + ldr r0, _080A56E4 @ =gUnknown_2037F02 + movs r3, 0 + ldrsh r1, [r0, r3] + cmp r1, 0 + beq _080A56E8 + cmp r1, 0x1 + beq _080A5704 + adds r0, r6, 0 + bl sub_8072760 + b _080A5722 + .align 2, 0 +_080A56D8: .4byte gUnknown_3005090 +_080A56DC: .4byte gUnknown_2023D44 +_080A56E0: .4byte gUnknown_2037F1A +_080A56E4: .4byte gUnknown_2037F02 +_080A56E8: + strh r1, [r5, 0xC] + movs r0, 0x8 + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] + movs r0, 0x3 + strh r0, [r5, 0x12] + cmp r2, 0 + bne _080A56FC + negs r0, r0 + strh r0, [r5, 0x12] +_080A56FC: + ldr r0, _080A5700 @ =sub_80A572C + b _080A5720 + .align 2, 0 +_080A5700: .4byte sub_80A572C +_080A5704: + movs r0, 0x8 + strh r0, [r5, 0xE] + movs r0, 0xC0 + lsls r0, 3 + strh r0, [r5, 0x10] + movs r1, 0xC0 + strh r1, [r5, 0x12] + cmp r2, 0 + bne _080A571E + negs r0, r0 + strh r0, [r5, 0x10] + negs r0, r1 + strh r0, [r5, 0x12] +_080A571E: + ldr r0, _080A5728 @ =sub_80A58EC +_080A5720: + str r0, [r5] +_080A5722: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5728: .4byte sub_80A58EC + thumb_func_end sub_80A5694 + + thumb_func_start sub_80A572C +sub_80A572C: @ 80A572C + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A5750 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080A5746 + b _080A58E6 +_080A5746: + lsls r0, 2 + ldr r1, _080A5754 @ =_080A5758 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A5750: .4byte gUnknown_3005090 +_080A5754: .4byte _080A5758 + .align 2, 0 +_080A5758: + .4byte _080A576C + .4byte _080A579E + .4byte _080A57F8 + .4byte _080A5870 + .4byte _080A58B4 +_080A576C: + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r1, 0 + beq _080A577C + ldrh r2, [r4, 0x12] + ldrh r3, [r4, 0x10] + adds r2, r3 + b _080A58C2 +_080A577C: + movs r0, 0x8 + strh r0, [r4, 0xE] + strh r1, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r1, 0xC0 + cmp r0, 0 + bne _080A5792 + movs r2, 0xC0 + negs r2, r2 + adds r1, r2, 0 +_080A5792: + strh r1, [r4, 0x12] + ldrb r0, [r4, 0x8] + movs r1, 0 + bl sub_80758E0 + b _080A58A8 +_080A579E: + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A57C4 + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x10] + adds r1, r2, 0 + bl sub_8075858 + ldrb r0, [r4, 0x8] + bl sub_80759DC + b _080A58D4 +_080A57C4: + movs r0, 0x8 + strh r0, [r4, 0xE] + ldr r2, _080A57F4 @ =gUnknown_202063C + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080A57EA + movs r1, 0x2 +_080A57EA: + strh r1, [r4, 0x12] + movs r0, 0x1 + strh r0, [r4, 0x14] + b _080A58A8 + .align 2, 0 +_080A57F4: .4byte gUnknown_202063C +_080A57F8: + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A5854 + ldrh r1, [r4, 0x14] + movs r3, 0x14 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A5812 + subs r0, r1, 0x1 + strh r0, [r4, 0x14] + b _080A58E6 +_080A5812: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _080A5834 + ldr r2, _080A5830 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r2, [r4, 0x10] + adds r1, r2 + b _080A5848 + .align 2, 0 +_080A5830: .4byte gUnknown_202063C +_080A5834: + ldr r2, _080A5850 @ =gUnknown_202063C + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + ldrh r2, [r4, 0x12] + subs r1, r2 +_080A5848: + strh r1, [r0, 0x24] + movs r0, 0x1 + strh r0, [r4, 0x14] + b _080A58D4 + .align 2, 0 +_080A5850: .4byte gUnknown_202063C +_080A5854: + ldr r2, _080A586C @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + strh r1, [r0, 0x24] + movs r0, 0xC + strh r0, [r4, 0xE] + b _080A58A8 + .align 2, 0 +_080A586C: .4byte gUnknown_202063C +_080A5870: + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080A5880 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080A58E6 +_080A5880: + movs r0, 0x3 + strh r0, [r4, 0xE] + ldr r2, _080A58B0 @ =gUnknown_202063C + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0x8 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080A58A6 + movs r1, 0x8 +_080A58A6: + strh r1, [r4, 0x12] +_080A58A8: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080A58E6 + .align 2, 0 +_080A58B0: .4byte gUnknown_202063C +_080A58B4: + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080A58E0 + ldrh r2, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r2, r0 +_080A58C2: + strh r2, [r4, 0x10] + ldr r3, _080A58DC @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x24] +_080A58D4: + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080A58E6 + .align 2, 0 +_080A58DC: .4byte gUnknown_202063C +_080A58E0: + adds r0, r2, 0 + bl sub_8072760 +_080A58E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A572C + + thumb_func_start sub_80A58EC +sub_80A58EC: @ 80A58EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A5928 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A592C + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0x10] + adds r1, r2, 0 + bl sub_8075858 + ldrb r0, [r4, 0x8] + bl sub_80759DC + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080A5938 + .align 2, 0 +_080A5928: .4byte gUnknown_3005090 +_080A592C: + ldrb r0, [r4, 0x8] + bl sub_8075980 + adds r0, r5, 0 + bl sub_8072760 +_080A5938: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A58EC + + thumb_func_start sub_80A5940 +sub_80A5940: @ 80A5940 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080A5954 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A595C + ldr r4, _080A5958 @ =gUnknown_2037F1A + b _080A595E + .align 2, 0 +_080A5954: .4byte gUnknown_2037F02 +_080A5958: .4byte gUnknown_2037F1A +_080A595C: + ldr r4, _080A599C @ =gUnknown_2037F1B +_080A595E: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x4] + adds r0, r6 + strh r0, [r5, 0x22] + movs r0, 0 + strh r0, [r5, 0x2E] + strh r0, [r5, 0x30] + ldr r1, _080A59A0 @ =sub_80A5A8C + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080A59A4 @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A599C: .4byte gUnknown_2037F1B +_080A59A0: .4byte sub_80A5A8C +_080A59A4: .4byte sub_8074F6C + thumb_func_end sub_80A5940 + + thumb_func_start sub_80A59A8 +sub_80A59A8: @ 80A59A8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A59E0 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A59E4 @ =0x0000ffd0 + adds r0, r1 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, _080A59E8 @ =sub_80A5A44 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A59EC @ =sub_8074F6C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A59E0: .4byte gUnknown_2037F1B +_080A59E4: .4byte 0x0000ffd0 +_080A59E8: .4byte sub_80A5A44 +_080A59EC: .4byte sub_8074F6C + thumb_func_end sub_80A59A8 + + thumb_func_start sub_80A59F0 +sub_80A59F0: @ 80A59F0 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080A5A34 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A5A38 @ =gUnknown_2037F02 + ldr r2, _080A5A3C @ =0x0000ffd0 + adds r0, r2 + ldrh r1, [r1] + adds r0, r1 + movs r6, 0 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + strh r6, [r4, 0x2E] + strh r6, [r4, 0x30] + ldr r0, _080A5A40 @ =sub_80A5A8C + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5A34: .4byte gUnknown_2037F1B +_080A5A38: .4byte gUnknown_2037F02 +_080A5A3C: .4byte 0x0000ffd0 +_080A5A40: .4byte sub_80A5A8C + thumb_func_end sub_80A59F0 + + thumb_func_start sub_80A5A44 +sub_80A5A44: @ 80A5A44 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A5A6E + movs r0, 0xC + strh r0, [r4, 0x2E] + movs r0, 0x8 + strh r0, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + ldr r1, _080A5A74 @ =sub_80A5A7C + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A5A78 @ =sub_8074CD0 + str r0, [r4, 0x1C] +_080A5A6E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5A74: .4byte sub_80A5A7C +_080A5A78: .4byte sub_8074CD0 + thumb_func_end sub_80A5A44 + + thumb_func_start sub_80A5A7C +sub_80A5A7C: @ 80A5A7C + movs r1, 0 + strh r1, [r0, 0x2E] + strh r1, [r0, 0x30] + ldr r1, _080A5A88 @ =sub_80A5A8C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080A5A88: .4byte sub_80A5A8C + thumb_func_end sub_80A5A7C + + thumb_func_start sub_80A5A8C +sub_80A5A8C: @ 80A5A8C + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A5AD4 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080A5AD4 + adds r0, r3, 0 + bl sub_8072740 +_080A5AD4: + pop {r0} + bx r0 + thumb_func_end sub_80A5A8C + + thumb_func_start sub_80A5AD8 +sub_80A5AD8: @ 80A5AD8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080A5AEC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A5AF4 + ldr r4, _080A5AF0 @ =gUnknown_2037F1A + b _080A5AF6 + .align 2, 0 +_080A5AEC: .4byte gUnknown_2037F02 +_080A5AF0: .4byte gUnknown_2037F1A +_080A5AF4: + ldr r4, _080A5B30 @ =gUnknown_2037F1B +_080A5AF6: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x4] + adds r0, r6 + strh r0, [r5, 0x22] + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080A5B34 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x6] + strh r0, [r5, 0x30] + ldr r0, _080A5B38 @ =sub_80A5B3C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5B30: .4byte gUnknown_2037F1B +_080A5B34: .4byte gUnknown_2037F02 +_080A5B38: .4byte sub_80A5B3C + thumb_func_end sub_80A5AD8 + + thumb_func_start sub_80A5B3C +sub_80A5B3C: @ 80A5B3C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x30 + ldrsh r1, [r2, r3] + cmp r0, r1 + ble _080A5B5C + movs r0, 0 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x22] + subs r0, 0x1 + strh r0, [r2, 0x22] +_080A5B5C: + ldrh r0, [r2, 0x22] + ldrh r1, [r2, 0x2E] + subs r0, r1 + strh r0, [r2, 0x22] + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A5B78 + adds r0, r2, 0 + bl sub_8072740 +_080A5B78: + pop {r0} + bx r0 + thumb_func_end sub_80A5B3C + + thumb_func_start sub_80A5B7C +sub_80A5B7C: @ 80A5B7C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080A5BC4 @ =gUnknown_2037F1A + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0xC + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + movs r0, 0x2 + strh r0, [r4, 0x30] + strh r5, [r4, 0x32] + strh r5, [r4, 0x34] + strh r5, [r4, 0x36] + subs r0, 0x42 + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0x38] + ldr r0, _080A5BC8 @ =sub_80A5BCC + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5BC4: .4byte gUnknown_2037F1A +_080A5BC8: .4byte sub_80A5BCC + thumb_func_end sub_80A5B7C + + thumb_func_start sub_80A5BCC +sub_80A5BCC: @ 80A5BCC + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080A5C38 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080A5C1E + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080A5C1E + ldrh r1, [r4, 0x38] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xBB + bl sub_80722F4 +_080A5C1E: + movs r1, 0 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A5C38 + strh r1, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_080A5C38: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A5C62 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + ble _080A5C62 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080A5C62 + adds r0, r4, 0 + bl sub_8072740 +_080A5C62: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A5BCC + + thumb_func_start sub_80A5C68 +sub_80A5C68: @ 80A5C68 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080A5CB2 + ldr r4, _080A5CC8 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r5, _080A5CCC @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x2] + adds r0, r5 + strh r0, [r6, 0x22] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A5CAC + ldrh r0, [r6, 0x22] + adds r0, 0xA + strh r0, [r6, 0x22] +_080A5CAC: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] +_080A5CB2: + ldr r0, _080A5CCC @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080A5CD0 @ =0x0000ffff + cmp r1, r0 + bne _080A5CC2 + adds r0, r6, 0 + bl sub_8072740 +_080A5CC2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5CC8: .4byte gUnknown_2037F1A +_080A5CCC: .4byte gUnknown_2037F02 +_080A5CD0: .4byte 0x0000ffff + thumb_func_end sub_80A5C68 + + thumb_func_start sub_80A5CD4 +sub_80A5CD4: @ 80A5CD4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A5CF4 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080A5D00 + ldr r1, _080A5CF8 @ =gUnknown_2037F02 + ldr r0, _080A5CFC @ =0x0000ffff + strh r0, [r1, 0xE] + b _080A5D3E + .align 2, 0 +_080A5CF4: .4byte gUnknown_3005090 +_080A5CF8: .4byte gUnknown_2037F02 +_080A5CFC: .4byte 0x0000ffff +_080A5D00: + cmp r0, 0x2 + bne _080A5D0C + adds r0, r2, 0 + bl sub_8072760 + b _080A5D44 +_080A5D0C: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A5D44 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r2, [r4, 0xA] + adds r2, 0x1 + strh r2, [r4, 0xA] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A5D44 +_080A5D3E: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_080A5D44: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A5CD4 + + thumb_func_start sub_80A5D4C +sub_80A5D4C: @ 80A5D4C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075114 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080A5D74 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080A5D78 @ =sub_80A5D7C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5D74: .4byte gUnknown_2037F02 +_080A5D78: .4byte sub_80A5D7C + thumb_func_end sub_80A5D4C + + thumb_func_start sub_80A5D7C +sub_80A5D7C: @ 80A5D7C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080A5D90 + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] + b _080A5DCC +_080A5D90: + adds r2, r5, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1E + strh r0, [r5, 0x2E] + ldr r4, _080A5DD4 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080A5DD8 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A5DDC @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 +_080A5DCC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5DD4: .4byte gUnknown_2037F1A +_080A5DD8: .4byte sub_8075590 +_080A5DDC: .4byte sub_8072740 + thumb_func_end sub_80A5D7C + + thumb_func_start sub_80A5DE0 +sub_80A5DE0: @ 80A5DE0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A5E30 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A5E28 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A5E28 + adds r0, r5, 0 + bl sub_8072760 +_080A5E28: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5E30: .4byte gUnknown_3005090 + thumb_func_end sub_80A5DE0 + + thumb_func_start sub_80A5E34 +sub_80A5E34: @ 80A5E34 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + ldr r0, _080A5E9C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bcs _080A5E90 + ldr r6, _080A5EA0 @ =gUnknown_2037F02 + ldr r5, _080A5EA4 @ =gUnknown_3004FF0 +_080A5E48: + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _080A5E64 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A5E64 + adds r0, r4, r5 + ldrb r0, [r0] + bl sub_8048188 +_080A5E64: + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _080A5E82 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A5E82 + adds r0, r4, r5 + ldrb r0, [r0] + bl sub_8048188 +_080A5E82: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A5E9C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bcc _080A5E48 +_080A5E90: + adds r0, r7, 0 + bl sub_8072760 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A5E9C: .4byte gUnknown_2023BCC +_080A5EA0: .4byte gUnknown_2037F02 +_080A5EA4: .4byte gUnknown_3004FF0 + thumb_func_end sub_80A5E34 + + thumb_func_start sub_80A5EA8 +sub_80A5EA8: @ 80A5EA8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + b _080A5EC2 +_080A5EB2: + ldr r0, _080A5ED8 @ =gUnknown_3004FF0 + adds r0, r4, r0 + ldrb r0, [r0] + bl sub_80481D4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080A5EC2: + ldr r0, _080A5EDC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bcc _080A5EB2 + adds r0, r5, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5ED8: .4byte gUnknown_3004FF0 +_080A5EDC: .4byte gUnknown_2023BCC + thumb_func_end sub_80A5EA8 + + thumb_func_start sub_80A5EE0 +sub_80A5EE0: @ 80A5EE0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A5EF6 + movs r0, 0x30 + strh r0, [r4, 0x20] + movs r0, 0x28 + b _080A5EFE +_080A5EF6: + ldr r0, _080A5F20 @ =gUnknown_2037F02 + ldrh r1, [r0] + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_080A5EFE: + strh r0, [r4, 0x22] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r4, 0x3] + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080A5F24 @ =sub_80A5F28 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5F20: .4byte gUnknown_2037F02 +_080A5F24: .4byte sub_80A5F28 + thumb_func_end sub_80A5EE0 + + thumb_func_start sub_80A5F28 +sub_80A5F28: @ 80A5F28 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080A5F3A + adds r0, r1, 0 + bl sub_8072740 +_080A5F3A: + pop {r0} + bx r0 + thumb_func_end sub_80A5F28 + + thumb_func_start sub_80A5F40 +sub_80A5F40: @ 80A5F40 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A5F78 @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r2, _080A5F7C @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r2] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + strh r0, [r4, 0x22] + strh r1, [r4, 0x2E] + strh r1, [r4, 0x30] + strh r1, [r4, 0x32] + strh r1, [r4, 0x34] + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r0, _080A5F80 @ =sub_80A5F84 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5F78: .4byte gUnknown_2037F1A +_080A5F7C: .4byte gUnknown_2037F02 +_080A5F80: .4byte sub_80A5F84 + thumb_func_end sub_80A5F40 + + thumb_func_start sub_80A5F84 +sub_80A5F84: @ 80A5F84 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A5FAE + movs r0, 0 + strh r0, [r1, 0x30] + ldrh r2, [r1, 0x32] + movs r3, 0x32 + ldrsh r0, [r1, r3] + cmp r0, 0x77 + bgt _080A5FAE + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + adds r0, r2, 0x1 + strh r0, [r1, 0x32] +_080A5FAE: + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080A5FBC + adds r0, r1, 0 + bl sub_8072740 +_080A5FBC: + pop {r0} + bx r0 + thumb_func_end sub_80A5F84 + + thumb_func_start sub_80A5FC0 +sub_80A5FC0: @ 80A5FC0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + mov r8, r0 + ldr r0, _080A6090 @ =0x0000ffff + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldr r0, _080A6094 @ =gUnknown_3005090 + mov r9, r0 + lsls r5, r7, 2 + adds r5, r7 + lsls r5, 3 + adds r6, r5, r0 + strh r4, [r6, 0x8] + strh r4, [r6, 0xA] + strh r4, [r6, 0xC] + strh r1, [r6, 0xE] + strh r4, [r6, 0x10] + strh r4, [r6, 0x12] + strh r4, [r6, 0x14] + movs r0, 0xD + strh r0, [r6, 0x16] + movs r0, 0xE + strh r0, [r6, 0x18] + movs r0, 0xF + strh r0, [r6, 0x1A] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8075CB8 + mov r10, r0 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + movs r0, 0x8 + add r9, r0 + add r5, r9 + adds r0, r5, 0 + adds r0, 0x1C + adds r5, 0x1E + adds r1, r5, 0 + mov r2, r8 + bl sub_80765C0 + ldr r0, _080A6098 @ =0x000027d2 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x80 + lsls r4, 9 + adds r1, r4, 0 + lsls r1, r0 + mov r0, r10 + orrs r0, r1 + mov r10, r0 + ldr r0, _080A609C @ =0x000027d3 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0 + mov r1, r10 + orrs r4, r1 + ldr r0, _080A60A0 @ =0x00007fbb + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _080A60A4 @ =sub_80A60A8 + str r1, [r6] + adds r0, r7, 0 + bl _call_via_r1 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6090: .4byte 0x0000ffff +_080A6094: .4byte gUnknown_3005090 +_080A6098: .4byte 0x000027d2 +_080A609C: .4byte 0x000027d3 +_080A60A0: .4byte 0x00007fbb +_080A60A4: .4byte sub_80A60A8 + thumb_func_end sub_80A5FC0 + + thumb_func_start sub_80A60A8 +sub_80A60A8: @ 80A60A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A60D0 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080A6194 + cmp r1, 0x1 + bgt _080A60D4 + cmp r1, 0 + beq _080A60E2 + b _080A6232 + .align 2, 0 +_080A60D0: .4byte gUnknown_3005090 +_080A60D4: + cmp r1, 0x2 + bne _080A60DA + b _080A61EC +_080A60DA: + cmp r1, 0x3 + bne _080A60E0 + b _080A6220 +_080A60E0: + b _080A6232 +_080A60E2: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bgt _080A60F0 + b _080A6232 +_080A60F0: + strh r1, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _080A613C + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + ldrh r2, [r4, 0x18] + ldrh r3, [r4, 0x12] + adds r2, r3 + strh r2, [r4, 0x12] + ldrh r1, [r4, 0x1A] + ldrh r5, [r4, 0x14] + adds r1, r5 + strh r1, [r4, 0x14] + lsls r0, 16 + asrs r0, 19 + lsls r0, 16 + lsrs r0, 16 + lsls r2, 16 + asrs r2, 19 + lsls r2, 16 + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r2, 11 + orrs r0, r2 + lsrs r1, 6 + orrs r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r12, r0 + b _080A6146 +_080A613C: + ldr r7, _080A618C @ =0x00007fbb + mov r12, r7 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080A6146: + movs r2, 0x1 + movs r3, 0 + movs r1, 0 +_080A614C: + movs r5, 0xE + ldrsh r0, [r4, r5] + ands r0, r2 + lsls r5, r2, 17 + adds r6, r3, 0 + adds r6, 0x10 + adds r1, 0x1 + mov r8, r1 + cmp r0, 0 + beq _080A6178 + movs r1, 0x1 + ldr r2, _080A6190 @ =gUnknown_20375F8 +_080A6164: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r2 + mov r7, r12 + strh r7, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _080A6164 +_080A6178: + lsrs r2, r5, 16 + lsls r0, r6, 16 + lsrs r3, r0, 16 + mov r1, r8 + lsls r0, r1, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _080A614C + b _080A6232 + .align 2, 0 +_080A618C: .4byte 0x00007fbb +_080A6190: .4byte gUnknown_20375F8 +_080A6194: + ldr r0, _080A61DC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A6232 + movs r2, 0 + ldr r3, _080A61E0 @ =gUnknown_202063C + movs r5, 0x14 + adds r5, r3 + mov r12, r5 + ldr r7, _080A61E4 @ =gUnknown_83E3734 + mov r8, r7 + ldr r6, _080A61E8 @ =gUnknown_83E3764 + movs r5, 0x1 +_080A61B2: + lsls r0, r2, 4 + adds r0, r2 + lsls r1, r0, 2 + mov r7, r12 + adds r0, r1, r7 + ldr r0, [r0] + cmp r0, r8 + beq _080A61C6 + cmp r0, r6 + bne _080A61CA +_080A61C6: + adds r0, r1, r3 + strh r5, [r0, 0x2E] +_080A61CA: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _080A61B2 + movs r0, 0 + strh r0, [r4, 0xA] + b _080A6214 + .align 2, 0 +_080A61DC: .4byte gUnknown_2037AB8 +_080A61E0: .4byte gUnknown_202063C +_080A61E4: .4byte gUnknown_83E3734 +_080A61E8: .4byte gUnknown_83E3764 +_080A61EC: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _080A6232 + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + bl sub_80765C8 + ldr r1, _080A621C @ =0x00007fbb + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_080A6214: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080A6232 + .align 2, 0 +_080A621C: .4byte 0x00007fbb +_080A6220: + ldr r0, _080A6240 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A6232 + adds r0, r2, 0 + bl sub_8072760 +_080A6232: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6240: .4byte gUnknown_2037AB8 + thumb_func_end sub_80A60A8 + + thumb_func_start sub_80A6244 +sub_80A6244: @ 80A6244 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080A62C8 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bgt _080A6256 + movs r0, 0x2 + strh r0, [r6, 0x4] +_080A6256: + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0x7F + ble _080A6262 + movs r0, 0x7F + strh r0, [r6, 0x4] +_080A6262: + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x30] + ldr r4, _080A62CC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x2] + adds r0, r6 + strh r0, [r5, 0x22] + ldrh r1, [r5, 0x20] + strh r1, [r5, 0x3A] + strh r0, [r5, 0x3C] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A62D4 + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + adds r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, _080A62D0 @ =0xffffec00 + b _080A62FA + .align 2, 0 +_080A62C8: .4byte gUnknown_2037F02 +_080A62CC: .4byte gUnknown_2037F1B +_080A62D0: .4byte 0xffffec00 +_080A62D4: + ldr r0, _080A6314 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A631C + ldrh r0, [r5, 0x20] + subs r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + adds r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r0, 0xA0 + lsls r0, 5 +_080A62FA: + bl __divsi3 + strh r0, [r5, 0x34] + lsls r4, 7 + strh r4, [r5, 0x36] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, _080A6318 @ =0xfffff600 + bl __divsi3 + strh r0, [r5, 0x38] + b _080A6358 + .align 2, 0 +_080A6314: .4byte gUnknown_2037F1A +_080A6318: .4byte 0xfffff600 +_080A631C: + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r4, [r5, 0x22] + subs r4, 0x14 + strh r4, [r5, 0x22] + lsls r0, 7 + strh r0, [r5, 0x32] + movs r0, 0x30 + ldrsh r1, [r5, r0] + ldr r0, _080A6364 @ =0xffffec00 + bl __divsi3 + strh r0, [r5, 0x34] + lsls r4, 7 + strh r4, [r5, 0x36] + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r0, 0xA0 + lsls r0, 4 + bl __divsi3 + strh r0, [r5, 0x38] + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x30 + orrs r0, r1 + strb r0, [r5, 0x3] +_080A6358: + ldr r0, _080A6368 @ =sub_80A636C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6364: .4byte 0xffffec00 +_080A6368: .4byte sub_80A636C + thumb_func_end sub_80A6244 + + thumb_func_start sub_80A636C +sub_80A636C: @ 80A636C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r2, 0x38] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 23 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 23 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A63A2 + ldrh r0, [r2, 0x3A] + strh r0, [r2, 0x20] + ldrh r0, [r2, 0x3C] + strh r0, [r2, 0x22] +_080A63A2: + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080A63B0 + adds r0, r2, 0 + bl sub_8072740 +_080A63B0: + pop {r0} + bx r0 + thumb_func_end sub_80A636C + + thumb_func_start sub_80A63B4 +sub_80A63B4: @ 80A63B4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _080A6444 @ =gUnknown_3005090 + adds r6, r0, r1 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x8] + ldr r0, _080A6448 @ =0x00002771 + bl sub_80089B8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0xA] + movs r1, 0xA + ldrsh r0, [r6, r1] + lsls r0, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + ldr r2, _080A644C @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r4, r0, 4 + movs r5, 0x1 + ldr r2, _080A6450 @ =gUnknown_20371F8 +_080A640C: + adds r1, r3, r5 + lsls r1, 1 + adds r1, r2 + adds r0, r4, r5 + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xF + bls _080A640C + adds r0, r3, 0 + movs r1, 0x10 + movs r2, 0xB + movs r3, 0 + bl sub_8045274 + movs r0, 0 + strh r0, [r6, 0xE] + movs r5, 0 + ldr r7, _080A644C @ =gUnknown_202063C + movs r1, 0x1C + adds r1, r7 + mov r9, r1 + b _080A6488 + .align 2, 0 +_080A6444: .4byte gUnknown_3005090 +_080A6448: .4byte 0x00002771 +_080A644C: .4byte gUnknown_202063C +_080A6450: .4byte gUnknown_20371F8 +_080A6454: + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r4, r2, r7 + ldrb r1, [r6, 0xA] + lsls r1, 4 + ldrb r3, [r4, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r1 + strb r0, [r4, 0x5] + movs r0, 0 + strh r0, [r4, 0x2E] + lsls r0, r5, 7 + strh r0, [r4, 0x30] + mov r0, r8 + strh r0, [r4, 0x32] + add r2, r9 + ldr r0, _080A64BC @ =sub_80A653C + str r0, [r2] + ldrh r0, [r6, 0xE] + adds r0, 0x1 + strh r0, [r6, 0xE] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_080A6488: + cmp r5, 0x1 + bhi _080A649A + movs r0, 0 + bl sub_8075FBC + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080A6454 +_080A649A: + ldr r0, _080A64C0 @ =sub_80A64E0 + str r0, [r6] + ldr r0, _080A64C4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A64C8 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_8000B14 + b _080A64D2 + .align 2, 0 +_080A64BC: .4byte sub_80A653C +_080A64C0: .4byte sub_80A64E0 +_080A64C4: .4byte gUnknown_2037F1A +_080A64C8: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl sub_8000B14 +_080A64D2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A63B4 + + thumb_func_start sub_80A64E0 +sub_80A64E0: @ 80A64E0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A6514 @ =gUnknown_3005090 + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6532 + ldr r0, _080A6518 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A651C + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_8000AF4 + b _080A6526 + .align 2, 0 +_080A6514: .4byte gUnknown_3005090 +_080A6518: .4byte gUnknown_2037F1A +_080A651C: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl sub_8000AF4 +_080A6526: + ldr r0, _080A6538 @ =0x00002771 + bl sub_8008A30 + adds r0, r4, 0 + bl sub_8072760 +_080A6532: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6538: .4byte 0x00002771 + thumb_func_end sub_80A64E0 + + thumb_func_start sub_80A653C +sub_80A653C: @ 80A653C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A6558 + movs r0, 0 + strh r0, [r5, 0x34] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_080A6558: + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x40 + ble _080A6580 + ldr r2, _080A657C @ =gUnknown_3005090 + movs r0, 0x32 + ldrsh r1, [r5, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xE] + subs r1, 0x1 + strh r1, [r0, 0xE] + adds r0, r5, 0 + bl sub_8076030 + b _080A65C2 + .align 2, 0 +_080A657C: .4byte gUnknown_3005090 +_080A6580: + ldr r4, _080A65C8 @ =gUnknown_825E074 + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0x6 + bl __divsi3 + strh r0, [r5, 0x36] + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0xD + bl __divsi3 + strh r0, [r5, 0x38] + ldrh r1, [r5, 0x30] + adds r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x30] + movs r1, 0x30 + ldrsh r0, [r5, r1] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl sub_8044E30 + strh r0, [r5, 0x24] +_080A65C2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A65C8: .4byte gUnknown_825E074 + thumb_func_end sub_80A653C + + thumb_func_start sub_80A65CC +sub_80A65CC: @ 80A65CC + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080A65E0 @ =sub_8072740 + bl sub_8074A68 + ldr r0, _080A65E4 @ =sub_8074F6C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A65E0: .4byte sub_8072740 +_080A65E4: .4byte sub_8074F6C + thumb_func_end sub_80A65CC + + thumb_func_start sub_80A65E8 +sub_80A65E8: @ 80A65E8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r4, _080A6698 @ =gUnknown_83E3898 + ldrh r0, [r4] + bl sub_80089E8 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + beq _080A662C + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + movs r2, 0x1 + ldr r5, _080A669C @ =gUnknown_20375F8 +_080A6614: + adds r1, r3, r2 + lsls r1, 1 + adds r1, r5 + lsls r0, r2, 1 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _080A6614 +_080A662C: + movs r4, 0x1 + ldr r0, _080A6698 @ =gUnknown_83E3898 + mov r8, r0 +_080A6632: + lsls r0, r4, 1 + adds r0, r4 + lsls r5, r0, 2 + mov r1, r8 + adds r0, r5, r1 + ldrh r0, [r0] + bl sub_80089B8 + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, 0x1 + mov r12, r4 + cmp r3, 0xFF + beq _080A667A + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r3, r0, 16 + movs r2, 0x1 + ldr r7, _080A669C @ =gUnknown_20375F8 + ldr r6, _080A6698 @ =gUnknown_83E3898 + adds r4, r5, 0 +_080A6660: + adds r1, r3, r2 + lsls r1, 1 + adds r1, r7 + lsls r0, r2, 1 + adds r0, r4 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _080A6660 +_080A667A: + mov r1, r12 + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080A6632 + mov r0, r9 + bl sub_8072760 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6698: .4byte gUnknown_83E3898 +_080A669C: .4byte gUnknown_20375F8 + thumb_func_end sub_80A65E8 + + thumb_func_start sub_80A66A0 +sub_80A66A0: @ 80A66A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0x1 + ldr r6, _080A66D0 @ =gUnknown_83E3898 +_080A66AA: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r6 + ldrh r0, [r0] + bl sub_8008A30 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080A66AA + adds r0, r5, 0 + bl sub_8072760 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A66D0: .4byte gUnknown_83E3898 + thumb_func_end sub_80A66A0 + + thumb_func_start sub_80A66D4 +sub_80A66D4: @ 80A66D4 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_8074FCC + ldr r4, _080A672C @ =gUnknown_2037F02 + ldrb r1, [r4] + adds r0, r5, 0 + bl sub_800838C + ldr r2, _080A6730 @ =gUnknown_83E3898 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A6710 + lsls r2, r0, 4 + ldrb r1, [r5, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] +_080A6710: + ldrh r0, [r4, 0x2] + movs r1, 0 + strh r0, [r5, 0x30] + strh r1, [r5, 0x32] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x34] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A6734 + movs r6, 0x30 + movs r3, 0x28 + b _080A674E + .align 2, 0 +_080A672C: .4byte gUnknown_2037F02 +_080A6730: .4byte gUnknown_83E3898 +_080A6734: + ldr r4, _080A6784 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r3, r0, 24 +_080A674E: + ldrh r0, [r5, 0x20] + lsls r1, r0, 4 + strh r1, [r5, 0x36] + ldrh r1, [r5, 0x22] + lsls r2, r1, 4 + strh r2, [r5, 0x38] + subs r0, r6, r0 + lsls r0, 16 + asrs r0, 16 + subs r1, r3, r1 + lsls r1, 16 + asrs r1, 16 + adds r2, r5, 0 + adds r2, 0x3A + adds r3, r5, 0 + adds r3, 0x3C + movs r4, 0x28 + str r4, [sp] + bl sub_80A678C + ldr r0, _080A6788 @ =sub_80A67E4 + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6784: .4byte gUnknown_2037F1B +_080A6788: .4byte sub_80A67E4 + thumb_func_end sub_80A66D4 + + thumb_func_start sub_80A678C +sub_80A678C: @ 80A678C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r2, 0 + mov r8, r3 + ldr r2, [sp, 0x18] + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r1, r2, 24 + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bge _080A67AE + lsls r0, r1, 24 + negs r0, r0 + lsrs r1, r0, 24 +_080A67AE: + lsls r5, r2, 8 + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl __divsi3 + adds r4, r0, 0 + cmp r4, 0 + bne _080A67C2 + movs r4, 0x1 +_080A67C2: + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + strh r0, [r7] + lsls r0, r6, 16 + asrs r0, 8 + adds r1, r4, 0 + bl __divsi3 + mov r1, r8 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80A678C + + thumb_func_start sub_80A67E4 +sub_80A67E4: @ 80A67E4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x2E] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r1, r0, r1 + adds r0, r1, 0 + cmp r1, 0 + bge _080A6800 + adds r0, 0xFF +_080A6800: + asrs r0, 8 + lsls r0, 8 + subs r0, r1, r0 + ldrh r1, [r4, 0x3A] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + ldrh r2, [r4, 0x3C] + ldrh r3, [r4, 0x38] + adds r2, r3 + strh r2, [r4, 0x38] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x20] + lsls r2, 16 + asrs r2, 20 + strh r2, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xF + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + ldrh r0, [r4, 0x20] + adds r0, 0x10 + lsls r0, 16 + movs r1, 0x88 + lsls r1, 17 + cmp r0, r1 + bhi _080A684E + lsls r0, r2, 16 + asrs r1, r0, 16 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + blt _080A684E + cmp r1, 0x80 + ble _080A6856 +_080A684E: + adds r0, r4, 0 + bl sub_8074EE0 + b _080A68A6 +_080A6856: + movs r0, 0x34 + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _080A68A6 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, r1 + ble _080A68A6 + strh r5, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A687E + strh r5, [r4, 0x30] +_080A687E: + ldr r2, _080A68AC @ =gUnknown_83E3898 + movs r3, 0x30 + ldrsh r1, [r4, r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A68A6 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] +_080A68A6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A68AC: .4byte gUnknown_83E3898 + thumb_func_end sub_80A67E4 + + thumb_func_start sub_80A68B0 +sub_80A68B0: @ 80A68B0 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r7, _080A6934 @ =gUnknown_2037F1A + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A68CE + ldr r1, _080A6938 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080A68CE: + ldrb r0, [r7] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A6938 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + movs r5, 0 + strh r0, [r6, 0x20] + ldrb r0, [r7] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r6, 0x22] + ldrb r1, [r4] + adds r0, r6, 0 + bl sub_800838C + strh r5, [r6, 0x32] + strh r5, [r6, 0x34] + ldrh r0, [r6, 0x20] + lsls r0, 4 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x22] + lsls r0, 4 + strh r0, [r6, 0x38] + movs r1, 0x2 + ldrsh r0, [r4, r1] + lsls r0, 4 + movs r1, 0x5 + bl __divsi3 + strh r0, [r6, 0x3A] + movs r2, 0x4 + ldrsh r0, [r4, r2] + lsls r0, 7 + movs r1, 0x5 + bl __divsi3 + strh r0, [r6, 0x3C] + ldr r0, _080A693C @ =sub_80A6940 + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6934: .4byte gUnknown_2037F1A +_080A6938: .4byte gUnknown_2037F02 +_080A693C: .4byte sub_80A6940 + thumb_func_end sub_80A68B0 + + thumb_func_start sub_80A6940 +sub_80A6940: @ 80A6940 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + ldrh r1, [r4, 0x3C] + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x22] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x5 + ble _080A699E + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080A699E + ldrh r0, [r4, 0x32] + adds r0, 0x10 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0x12 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r1, 0x12 + bl sub_8044E30 + strh r0, [r4, 0x26] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A699E + movs r0, 0x1 + strh r0, [r4, 0x34] +_080A699E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + bne _080A69B2 + adds r0, r4, 0 + bl sub_8074EE0 +_080A69B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A6940 + + thumb_func_start sub_80A69B8 +sub_80A69B8: @ 80A69B8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080A69D8 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _080A69DC + ldrb r0, [r5, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r5, 0x3] + movs r6, 0x10 + b _080A69DE + .align 2, 0 +_080A69D8: .4byte gUnknown_2037F02 +_080A69DC: + ldr r6, _080A6A18 @ =0x0000fff0 +_080A69DE: + ldr r4, _080A6A1C @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x8 + strh r0, [r5, 0x22] + movs r0, 0x8 + strh r0, [r5, 0x2E] + ldr r0, _080A6A20 @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080A6A24 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6A18: .4byte 0x0000fff0 +_080A6A1C: .4byte gUnknown_2037F1A +_080A6A20: .4byte sub_8074C44 +_080A6A24: .4byte sub_8072740 + thumb_func_end sub_80A69B8 + + thumb_func_start sub_80A6A28 +sub_80A6A28: @ 80A6A28 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldrh r0, [r4, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] + ldr r5, _080A6AA0 @ =gUnknown_2037F02 + ldrb r1, [r5, 0x2] + adds r0, r4, 0 + bl sub_800838C + ldr r2, _080A6AA4 @ =gUnknown_83E3898 + movs r0, 0x4 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A6A68 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] +_080A6A68: + movs r1, 0 + ldrsh r0, [r5, r1] + movs r2, 0x20 + cmp r0, 0 + bne _080A6A74 + ldr r2, _080A6AA8 @ =0x0000ffe0 +_080A6A74: + movs r0, 0x28 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x20] + strh r1, [r4, 0x30] + lsls r0, r2, 16 + asrs r0, 16 + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + subs r0, 0x28 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x38] + ldr r0, _080A6AAC @ =sub_80A6AB0 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6AA0: .4byte gUnknown_2037F02 +_080A6AA4: .4byte gUnknown_83E3898 +_080A6AA8: .4byte 0x0000ffe0 +_080A6AAC: .4byte sub_80A6AB0 + thumb_func_end sub_80A6A28 + + thumb_func_start sub_80A6AB0 +sub_80A6AB0: @ 80A6AB0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A6B00 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl sub_8044E30 + lsls r0, 16 + lsrs r1, r0, 16 + ldrh r2, [r4, 0x24] + movs r3, 0x24 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _080A6ADC + lsls r0, r1, 16 + negs r0, r0 + lsrs r1, r0, 16 +_080A6ADC: + lsls r0, r1, 16 + asrs r0, 16 + adds r0, r2 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E30 + ldrh r3, [r4, 0x26] + adds r0, r3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A6B06 +_080A6B00: + adds r0, r4, 0 + bl sub_8072740 +_080A6B06: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A6AB0 + + thumb_func_start sub_80A6B0C +sub_80A6B0C: @ 80A6B0C + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A6B2C + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8076B2C + adds r0, 0x8 + b _080A6B36 +_080A6B2C: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_8076B2C + subs r0, 0x8 +_080A6B36: + strh r0, [r6, 0x20] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0 + bl sub_8076B2C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080A6B58 + adds r0, 0x3 +_080A6B58: + asrs r0, 2 + subs r0, r4, r0 + strh r0, [r6, 0x22] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A6B0C + + thumb_func_start sub_80A6B64 +sub_80A6B64: @ 80A6B64 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080A6B78 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6B80 + ldr r0, _080A6B7C @ =gUnknown_2037F1A + b _080A6B82 + .align 2, 0 +_080A6B78: .4byte gUnknown_2037F02 +_080A6B7C: .4byte gUnknown_2037F1A +_080A6B80: + ldr r0, _080A6BC0 @ =gUnknown_2037F1B +_080A6B82: + ldrb r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80A6B0C + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + ldr r0, _080A6BC4 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x2] + strh r0, [r5, 0x2E] + adds r0, r1, 0x2 + strh r0, [r5, 0x30] + adds r0, r5, 0 + bl sub_800838C + ldr r1, _080A6BC8 @ =sub_80A6BD0 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080A6BCC @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6BC0: .4byte gUnknown_2037F1B +_080A6BC4: .4byte gUnknown_2037F02 +_080A6BC8: .4byte sub_80A6BD0 +_080A6BCC: .4byte sub_8074F6C + thumb_func_end sub_80A6B64 + + thumb_func_start sub_80A6BD0 +sub_80A6BD0: @ 80A6BD0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080A6BF8 + ldr r1, _080A6C00 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + ldr r0, _080A6C04 @ =sub_8074F6C + str r0, [r4, 0x1C] +_080A6BF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C00: .4byte sub_8072740 +_080A6C04: .4byte sub_8074F6C + thumb_func_end sub_80A6BD0 + + thumb_func_start sub_80A6C08 +sub_80A6C08: @ 80A6C08 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A6C1C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6C24 + ldr r0, _080A6C20 @ =gUnknown_2037F1A + b _080A6C26 + .align 2, 0 +_080A6C1C: .4byte gUnknown_2037F02 +_080A6C20: .4byte gUnknown_2037F1A +_080A6C24: + ldr r0, _080A6C44 @ =gUnknown_2037F1B +_080A6C26: + ldrb r0, [r0] + adds r1, r4, 0 + bl sub_80A6B0C + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r1, _080A6C48 @ =sub_80A6C50 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A6C4C @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C44: .4byte gUnknown_2037F1B +_080A6C48: .4byte sub_80A6C50 +_080A6C4C: .4byte sub_8074F50 + thumb_func_end sub_80A6C08 + + thumb_func_start sub_80A6C50 +sub_80A6C50: @ 80A6C50 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A6C76 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r1, _080A6C7C @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A6C80 @ =sub_8074F50 + str r0, [r4, 0x1C] +_080A6C76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C7C: .4byte sub_8074EE0 +_080A6C80: .4byte sub_8074F50 + thumb_func_end sub_80A6C50 + + thumb_func_start sub_80A6C84 +sub_80A6C84: @ 80A6C84 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, _080A6C98 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6CA0 + ldr r0, _080A6C9C @ =gUnknown_2037F1A + b _080A6CA2 + .align 2, 0 +_080A6C98: .4byte gUnknown_2037F02 +_080A6C9C: .4byte gUnknown_2037F1A +_080A6CA0: + ldr r0, _080A6CF4 @ =gUnknown_2037F1B +_080A6CA2: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8076B2C + strh r0, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bgt _080A6CCA + movs r0, 0xA + strh r0, [r4, 0x22] +_080A6CCA: + movs r0, 0x1 + strh r0, [r4, 0x2E] + strh r6, [r4, 0x30] + adds r1, r4, 0 + adds r1, 0x43 + ldrb r0, [r1] + strh r0, [r4, 0x32] + ldrb r0, [r1] + adds r0, 0x4 + strh r0, [r4, 0x34] + strh r6, [r4, 0x36] + ldr r1, _080A6CF8 @ =sub_80A6D00 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A6CFC @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A6CF4: .4byte gUnknown_2037F1B +_080A6CF8: .4byte sub_80A6D00 +_080A6CFC: .4byte sub_8074F50 + thumb_func_end sub_80A6C84 + + thumb_func_start sub_80A6D00 +sub_80A6D00: @ 80A6D00 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x36] + adds r0, 0x1 + strh r0, [r1, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080A6D16 + ldr r0, _080A6D1C @ =sub_80A6D20 + str r0, [r1, 0x1C] +_080A6D16: + pop {r0} + bx r0 + .align 2, 0 +_080A6D1C: .4byte sub_80A6D20 + thumb_func_end sub_80A6D00 + + thumb_func_start sub_80A6D20 +sub_80A6D20: @ 80A6D20 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r1, r0, 0x4 + strh r1, [r2, 0x30] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFE + ble _080A6D52 + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080A6D4C + strh r0, [r2, 0x24] + ldr r0, _080A6D48 @ =sub_80A6C50 + str r0, [r2, 0x1C] + b _080A6D88 + .align 2, 0 +_080A6D48: .4byte sub_80A6C50 +_080A6D4C: + movs r0, 0xFF + ands r1, r0 + strh r1, [r2, 0x30] +_080A6D52: + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r0, 0x4F + ble _080A6D62 + ldrh r0, [r2, 0x34] + adds r1, r2, 0 + adds r1, 0x43 + strb r0, [r1] +_080A6D62: + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r0, 0x9F + ble _080A6D72 + ldrh r0, [r2, 0x32] + adds r1, r2, 0 + adds r1, 0x43 + strb r0, [r1] +_080A6D72: + ldr r1, _080A6D8C @ =gUnknown_825E074 + movs r3, 0x30 + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + asrs r1, r0, 1 + adds r0, r1 + strh r0, [r2, 0x24] +_080A6D88: + pop {r0} + bx r0 + .align 2, 0 +_080A6D8C: .4byte gUnknown_825E074 + thumb_func_end sub_80A6D20 + + thumb_func_start sub_80A6D90 +sub_80A6D90: @ 80A6D90 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080A6DA4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6DAC + ldr r0, _080A6DA8 @ =gUnknown_2037F1A + b _080A6DAE + .align 2, 0 +_080A6DA4: .4byte gUnknown_2037F02 +_080A6DA8: .4byte gUnknown_2037F1A +_080A6DAC: + ldr r0, _080A6DD0 @ =gUnknown_2037F1B +_080A6DAE: + ldrb r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80A6B0C + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A6DD4 + adds r0, r5, 0 + movs r1, 0 + bl sub_800838C + movs r0, 0x2 + b _080A6DDE + .align 2, 0 +_080A6DD0: .4byte gUnknown_2037F1B +_080A6DD4: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C + movs r0, 0x3 +_080A6DDE: + strh r0, [r5, 0x2E] + ldr r0, _080A6DEC @ =sub_80A6DF0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6DEC: .4byte sub_80A6DF0 + thumb_func_end sub_80A6D90 + + thumb_func_start sub_80A6DF0 +sub_80A6DF0: @ 80A6DF0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + ble _080A6E1E + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + ldr r1, _080A6E24 @ =sub_80A6E2C + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A6E28 @ =sub_8074F6C + str r0, [r4, 0x1C] +_080A6E1E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6E24: .4byte sub_80A6E2C +_080A6E28: .4byte sub_8074F6C + thumb_func_end sub_80A6DF0 + + thumb_func_start sub_80A6E2C +sub_80A6E2C: @ 80A6E2C + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A6E44 + adds r0, r1, 0 + bl sub_8072740 +_080A6E44: + pop {r0} + bx r0 + thumb_func_end sub_80A6E2C + + thumb_func_start sub_80A6E48 +sub_80A6E48: @ 80A6E48 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r5, _080A6E8C @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x34] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x36] + ldr r1, _080A6E90 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r1, _080A6E94 @ =sub_8074BE4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6E8C: .4byte gUnknown_2037F02 +_080A6E90: .4byte sub_8074EE0 +_080A6E94: .4byte sub_8074BE4 + thumb_func_end sub_80A6E48 + + thumb_func_start sub_80A6E98 +sub_80A6E98: @ 80A6E98 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A6EAC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A6EB4 + ldr r0, _080A6EB0 @ =gUnknown_2037F1A + b _080A6EB6 + .align 2, 0 +_080A6EAC: .4byte gUnknown_2037F02 +_080A6EB0: .4byte gUnknown_2037F1A +_080A6EB4: + ldr r0, _080A6ED0 @ =gUnknown_2037F1B +_080A6EB6: + ldrb r0, [r0] + adds r1, r4, 0 + bl sub_80A6B0C + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x30] + ldr r0, _080A6ED4 @ =sub_80A6ED8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6ED0: .4byte gUnknown_2037F1B +_080A6ED4: .4byte sub_80A6ED8 + thumb_func_end sub_80A6E98 + + thumb_func_start sub_80A6ED8 +sub_80A6ED8: @ 80A6ED8 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _080A6F0A + cmp r0, 0x1 + bgt _080A6EEE + cmp r0, 0 + beq _080A6EF4 + b _080A6F38 +_080A6EEE: + cmp r0, 0x2 + beq _080A6F24 + b _080A6F38 +_080A6EF4: + ldrh r0, [r1, 0x26] + subs r0, 0x3 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080A6F38 + b _080A6F1C +_080A6F0A: + ldrh r0, [r1, 0x26] + adds r0, 0x3 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080A6F38 +_080A6F1C: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _080A6F38 +_080A6F24: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x40 + bne _080A6F38 + adds r0, r1, 0 + bl sub_8072740 +_080A6F38: + pop {r0} + bx r0 + thumb_func_end sub_80A6ED8 + + thumb_func_start sub_80A6F3C +sub_80A6F3C: @ 80A6F3C + push {r4,lr} + adds r4, r0, 0 + ldr r3, _080A6F88 @ =gUnknown_202063C + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r4, 0x30] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x30] + movs r0, 0x2E + ldrsh r2, [r4, r0] + cmp r2, 0 + bne _080A6F7A + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x24] + adds r0, r4, 0 + bl sub_8074EE0 +_080A6F7A: + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6F88: .4byte gUnknown_202063C + thumb_func_end sub_80A6F3C + + thumb_func_start sub_80A6F8C +sub_80A6F8C: @ 80A6F8C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080A6FD4 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080A6FD8 @ =gUnknown_2023D44 + ldr r0, _080A6FDC @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r0, r1 + ldrb r6, [r0] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A6FE4 + ldr r0, _080A6FE0 @ =gUnknown_2037F02 + ldrh r1, [r5, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r5, 0x20] + adds r1, r0, 0 + b _080A6FEE + .align 2, 0 +_080A6FD4: .4byte gUnknown_2037F1A +_080A6FD8: .4byte gUnknown_2023D44 +_080A6FDC: .4byte gUnknown_2037F1B +_080A6FE0: .4byte gUnknown_2037F02 +_080A6FE4: + ldr r1, _080A7018 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] +_080A6FEE: + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + strh r6, [r5, 0x32] + ldr r0, _080A701C @ =sub_80A6F3C + str r0, [r5, 0x1C] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A7018: .4byte gUnknown_2037F02 +_080A701C: .4byte sub_80A6F3C + thumb_func_end sub_80A6F8C + + thumb_func_start sub_80A7020 +sub_80A7020: @ 80A7020 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080A704C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x38] + ldr r0, _080A7050 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080A7054 @ =sub_80A7058 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A704C: .4byte gUnknown_2037F02 +_080A7050: .4byte sub_8074C44 +_080A7054: .4byte sub_80A7058 + thumb_func_end sub_80A7020 + + thumb_func_start sub_80A7058 +sub_80A7058: @ 80A7058 + push {lr} + ldrh r1, [r0, 0x30] + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x20] + strh r1, [r0, 0x32] + ldrh r1, [r0, 0x22] + adds r1, 0xF + strh r1, [r0, 0x36] + ldr r1, _080A7078 @ =sub_8075590 + str r1, [r0, 0x1C] + ldr r1, _080A707C @ =sub_80A7080 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080A7078: .4byte sub_8075590 +_080A707C: .4byte sub_80A7080 + thumb_func_end sub_80A7058 + + thumb_func_start sub_80A7080 +sub_80A7080: @ 80A7080 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x38] + movs r3, 0x38 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080A7096 + adds r0, r1, 0 + bl sub_8072740 + b _080A709A +_080A7096: + subs r0, r2, 0x1 + strh r0, [r1, 0x38] +_080A709A: + pop {r0} + bx r0 + thumb_func_end sub_80A7080 + + thumb_func_start sub_80A70A0 +sub_80A70A0: @ 80A70A0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080A70CC @ =gUnknown_2023D44 + ldr r0, _080A70D0 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_80758E0 + ldr r1, _080A70D4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080A70D8 @ =sub_80A70DC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A70CC: .4byte gUnknown_2023D44 +_080A70D0: .4byte gUnknown_2037F1A +_080A70D4: .4byte gUnknown_3005090 +_080A70D8: .4byte sub_80A70DC + thumb_func_end sub_80A70A0 + + thumb_func_start sub_80A70DC +sub_80A70DC: @ 80A70DC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A710C @ =gUnknown_2023D44 + ldr r0, _080A7110 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r4, [r1] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A7118 + ldr r1, _080A7114 @ =gUnknown_3005090 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x8] + negs r0, r0 + lsls r0, 16 + lsrs r3, r0, 16 + adds r6, r2, 0 + b _080A7126 + .align 2, 0 +_080A710C: .4byte gUnknown_2023D44 +_080A7110: .4byte gUnknown_2037F1A +_080A7114: .4byte gUnknown_3005090 +_080A7118: + ldr r2, _080A7158 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + adds r0, r2 + ldrh r3, [r0, 0x8] + adds r6, r1, 0 +_080A7126: + movs r2, 0x80 + lsls r2, 1 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_8075858 + ldr r1, _080A7158 @ =gUnknown_3005090 + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080A7160 + ldrh r0, [r1, 0x8] + adds r0, 0xB0 + strh r0, [r1, 0x8] + ldr r1, _080A715C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x26] + adds r1, 0x1 + b _080A718A + .align 2, 0 +_080A7158: .4byte gUnknown_3005090 +_080A715C: .4byte gUnknown_202063C +_080A7160: + cmp r0, 0x1 + bne _080A7176 + ldrh r0, [r1, 0xE] + adds r0, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + bne _080A71D0 + movs r0, 0x2 + b _080A71CE +_080A7176: + ldrh r0, [r1, 0x8] + subs r0, 0xB0 + strh r0, [r1, 0x8] + ldr r1, _080A71C4 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x26] + subs r1, 0x1 +_080A718A: + strh r1, [r0, 0x26] + adds r0, r4, 0 + bl sub_80759DC + ldr r0, _080A71C8 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + movs r3, 0x8 + ldrsh r2, [r1, r3] + movs r0, 0xF2 + lsls r0, 4 + cmp r2, r0 + beq _080A71AA + cmp r2, 0 + bne _080A71D0 +_080A71AA: + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0x2 + bne _080A71CC + adds r0, r4, 0 + bl sub_8075980 + adds r0, r5, 0 + bl sub_8072760 + b _080A71D0 + .align 2, 0 +_080A71C4: .4byte gUnknown_202063C +_080A71C8: .4byte gUnknown_3005090 +_080A71CC: + adds r0, r2, 0x1 +_080A71CE: + strh r0, [r1, 0xA] +_080A71D0: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A70DC + + thumb_func_start sub_80A71D8 +sub_80A71D8: @ 80A71D8 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080A71FC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A7204 + ldr r0, _080A7200 @ =gUnknown_2037F02 + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + adds r5, r0, 0 + b _080A7210 + .align 2, 0 +_080A71FC: .4byte gUnknown_2037F1A +_080A7200: .4byte gUnknown_2037F02 +_080A7204: + ldr r1, _080A7244 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r5, r1, 0 +_080A7210: + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080A7248 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A724C + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x1 + adds r2, r0, 0 + orrs r2, r1 + strb r2, [r3] + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080A7260 + movs r0, 0x2 + orrs r2, r0 + strb r2, [r3] + b _080A7260 + .align 2, 0 +_080A7244: .4byte gUnknown_2037F02 +_080A7248: .4byte gUnknown_2037F1A +_080A724C: + movs r2, 0x4 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080A7260 + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] +_080A7260: + ldr r0, _080A7274 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080A7278 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A7274: .4byte sub_8074F6C +_080A7278: .4byte sub_8072740 + thumb_func_end sub_80A71D8 + + thumb_func_start sub_80A727C +sub_80A727C: @ 80A727C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A7298 @ =sub_8074F50 + str r0, [r4, 0x1C] + ldr r1, _080A729C @ =sub_80A72A0 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7298: .4byte sub_8074F50 +_080A729C: .4byte sub_80A72A0 + thumb_func_end sub_80A727C + + thumb_func_start sub_80A72A0 +sub_80A72A0: @ 80A72A0 + push {lr} + movs r1, 0x6 + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x20] + strh r1, [r0, 0x32] + ldrh r1, [r0, 0x22] + subs r1, 0x20 + strh r1, [r0, 0x36] + ldr r1, _080A72C0 @ =sub_8075590 + str r1, [r0, 0x1C] + ldr r1, _080A72C4 @ =sub_8072740 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080A72C0: .4byte sub_8075590 +_080A72C4: .4byte sub_8072740 + thumb_func_end sub_80A72A0 + + thumb_func_start sub_80A72C8 +sub_80A72C8: @ 80A72C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A72EC + ldr r1, _080A72E8 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + b _080A730E + .align 2, 0 +_080A72E8: .4byte gUnknown_2037F02 +_080A72EC: + ldr r0, _080A73B4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A730E + ldr r1, _080A73B8 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080A730E: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r4, _080A73BC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r6, _080A73B8 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x6] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + adds r7, r0, 0 + ldrh r1, [r5, 0x20] + mov r2, r8 + lsls r0, r2, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r5, 0x22] + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xF0 + lsls r1, 24 + adds r0, r1 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A7380 + ldr r2, _080A73C0 @ =0xffffa000 + adds r0, r4, r2 + lsls r0, 16 + lsrs r4, r0, 16 +_080A7380: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r5, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + mov r0, r8 + strh r0, [r5, 0x32] + strh r7, [r5, 0x36] + ldr r0, _080A73C4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A73C8 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A73B4: .4byte gUnknown_2037F1A +_080A73B8: .4byte gUnknown_2037F02 +_080A73BC: .4byte gUnknown_2037F1B +_080A73C0: .4byte 0xffffa000 +_080A73C4: .4byte sub_8075590 +_080A73C8: .4byte sub_8072740 + thumb_func_end sub_80A72C8 + + thumb_func_start sub_80A73CC +sub_80A73CC: @ 80A73CC + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + subs r1, r0, 0x1 + strh r1, [r3, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080A73F6 + ldr r2, _080A73FC @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xA] + subs r1, 0x1 + strh r1, [r0, 0xA] + adds r0, r3, 0 + bl sub_8007280 +_080A73F6: + pop {r0} + bx r0 + .align 2, 0 +_080A73FC: .4byte gUnknown_3005090 + thumb_func_end sub_80A73CC + + thumb_func_start sub_80A7400 +sub_80A7400: @ 80A7400 + push {r4,lr} + adds r2, r0, 0 + movs r0, 0x3C + ldrsh r1, [r2, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080A7430 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r3, 0x2E + ldrsh r1, [r2, r3] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _080A7434 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x38] + adds r0, r1 + strh r0, [r2, 0x38] + ldrh r0, [r2, 0x36] + ldrh r3, [r2, 0x3A] + adds r0, r3 + b _080A7442 + .align 2, 0 +_080A7430: .4byte gUnknown_3005090 +_080A7434: + ldrh r0, [r2, 0x38] + ldrh r1, [r2, 0x34] + subs r0, r1 + strh r0, [r2, 0x38] + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x36] + subs r0, r1 +_080A7442: + strh r0, [r2, 0x3A] + ldrh r0, [r2, 0x38] + ldrh r1, [r2, 0x30] + adds r3, r0, r1 + strh r3, [r2, 0x30] + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r4, 0x16] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7466 + lsls r0, r3, 16 + lsrs r0, 24 + negs r0, r0 + b _080A746A +_080A7466: + lsls r0, r3, 16 + lsrs r0, 24 +_080A746A: + strh r0, [r2, 0x24] + ldrh r1, [r4, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A747E + ldrh r0, [r2, 0x32] + lsrs r0, 8 + negs r0, r0 + b _080A7482 +_080A747E: + ldrh r0, [r2, 0x32] + lsrs r0, 8 +_080A7482: + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + subs r1, r0, 0x1 + strh r1, [r2, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080A7498 + movs r0, 0x1E + strh r0, [r2, 0x2E] + ldr r0, _080A74A0 @ =sub_80A73CC + str r0, [r2, 0x1C] +_080A7498: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A74A0: .4byte sub_80A73CC + thumb_func_end sub_80A7400 + + thumb_func_start sub_80A74A4 +sub_80A74A4: @ 80A74A4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080A74E8 @ =gUnknown_3005090 + adds r6, r0, r1 + ldrh r2, [r6, 0x16] + movs r1, 0x2 + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + ldrh r3, [r7, 0x30] + adds r2, r0, r3 + strh r2, [r7, 0x30] + ldrh r0, [r6, 0x18] + ands r1, r0 + ldrh r0, [r7, 0x32] + adds r1, r0 + strh r1, [r7, 0x32] + ldrh r1, [r6, 0x16] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A74EC + lsls r0, r2, 16 + lsrs r0, 24 + negs r0, r0 + b _080A74F0 + .align 2, 0 +_080A74E8: .4byte gUnknown_3005090 +_080A74EC: + lsls r0, r2, 16 + lsrs r0, 24 +_080A74F0: + strh r0, [r7, 0x24] + ldrh r1, [r6, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7504 + ldrh r0, [r7, 0x32] + lsrs r0, 8 + negs r0, r0 + b _080A7508 +_080A7504: + ldrh r0, [r7, 0x32] + lsrs r0, 8 +_080A7508: + strh r0, [r7, 0x26] + ldrh r0, [r7, 0x2E] + subs r1, r0, 0x1 + strh r1, [r7, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080A75D4 + movs r4, 0 + movs r0, 0x8 + strh r0, [r7, 0x2E] + movs r0, 0x4 + strh r0, [r6, 0x12] + movs r0, 0x80 + lsls r0, 5 + bl sub_80D8B90 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r7, 0x24] + ldrh r1, [r7, 0x20] + adds r2, r0, r1 + strh r2, [r7, 0x20] + ldrh r0, [r7, 0x26] + ldrh r3, [r7, 0x22] + adds r0, r3 + strh r0, [r7, 0x22] + strh r4, [r7, 0x26] + strh r4, [r7, 0x24] + ldrh r3, [r6, 0x1E] + movs r0, 0x1E + ldrsh r1, [r6, r0] + lsls r0, r2, 16 + asrs r0, 16 + cmp r1, r0 + blt _080A7552 + subs r0, r3, r2 + b _080A7554 +_080A7552: + subs r0, r2, r3 +_080A7554: + lsls r0, 24 + lsrs r4, r0, 16 + ldrh r3, [r6, 0x20] + movs r0, 0x20 + ldrsh r1, [r6, r0] + ldrh r2, [r7, 0x22] + movs r6, 0x22 + ldrsh r0, [r7, r6] + cmp r1, r0 + blt _080A756C + subs r0, r3, r2 + b _080A756E +_080A756C: + subs r0, r2, r3 +_080A756E: + lsls r0, 24 + lsrs r0, 16 + mov r8, r0 + movs r0, 0 + strh r0, [r7, 0x32] + strh r0, [r7, 0x30] + strh r0, [r7, 0x3A] + strh r0, [r7, 0x38] + lsls r0, r4, 16 + asrs r0, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r5, 0 + bl sub_80D8AA0 + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + movs r6, 0xE0 + lsls r6, 1 + adds r0, r6, 0 + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + strh r0, [r7, 0x34] + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + adds r1, r5, 0 + bl sub_80D8AA0 + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r6, 0 + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + strh r0, [r7, 0x36] + ldr r0, _080A75E0 @ =sub_80A7400 + str r0, [r7, 0x1C] +_080A75D4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A75E0: .4byte sub_80A7400 + thumb_func_end sub_80A74A4 + + thumb_func_start sub_80A75E4 +sub_80A75E4: @ 80A75E4 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A7608 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A7602 + adds r0, r2, 0 + bl sub_8072760 +_080A7602: + pop {r0} + bx r0 + .align 2, 0 +_080A7608: .4byte gUnknown_3005090 + thumb_func_end sub_80A75E4 + + thumb_func_start sub_80A760C +sub_80A760C: @ 80A760C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080A7660 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + subs r1, r0, 0x1 + strh r1, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bgt _080A76E0 + ldr r0, _080A7664 @ =gUnknown_83E3C28 + movs r2, 0x1A + ldrsh r1, [r5, r2] + movs r3, 0x1C + ldrsh r2, [r5, r3] + ldrb r3, [r5, 0xC] + ldrb r4, [r5, 0xA] + subs r3, r4 + lsls r3, 24 + lsrs r3, 24 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r0, 4 + add r0, r12 + lsls r0, 2 + ldr r1, _080A7668 @ =gUnknown_202063C + adds r6, r0, r1 + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080A766C + cmp r0, 0x2 + beq _080A7682 + b _080A7690 + .align 2, 0 +_080A7660: .4byte gUnknown_3005090 +_080A7664: .4byte gUnknown_83E3C28 +_080A7668: .4byte gUnknown_202063C +_080A766C: + ldrb r2, [r6, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x18 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x57 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x3] + b _080A7690 +_080A7682: + ldrb r0, [r6, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r6, 0x3] +_080A7690: + ldr r3, _080A76E8 @ =gUnknown_3005090 + lsls r2, r7, 2 + adds r2, r7 + lsls r2, 3 + adds r4, r2, r3 + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x14] + subs r0, r1 + strh r0, [r6, 0x2E] + strh r7, [r6, 0x3C] + movs r1, 0xA + ldrsh r0, [r4, r1] + adds r0, 0xD + lsls r0, 1 + adds r0, r2 + adds r3, 0x8 + adds r0, r3 + mov r2, r12 + strh r2, [r0] + ldrh r0, [r4, 0xE] + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + movs r0, 0x3F + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x93 + bl sub_80722F4 + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0x2 + ble _080A76E0 + ldr r0, _080A76EC @ =sub_80A75E4 + str r0, [r4] +_080A76E0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A76E8: .4byte gUnknown_3005090 +_080A76EC: .4byte sub_80A75E4 + thumb_func_end sub_80A760C + + thumb_func_start sub_80A76F0 +sub_80A76F0: @ 80A76F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0 + mov r9, r0 + movs r5, 0 + mov r0, sp + mov r1, r9 + strh r1, [r0] + mov r4, sp + adds r4, 0x2 + strh r1, [r4] + bl sub_8073788 + lsls r0, 24 + mov r10, r4 + cmp r0, 0 + beq _080A775C + ldr r1, _080A774C @ =gUnknown_3005090 + lsls r2, r7, 2 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + movs r1, 0x2 + strh r1, [r0, 0x10] + ldr r3, _080A7750 @ =gUnknown_2037F02 + ldrh r0, [r3] + negs r0, r0 + strh r0, [r3] + ldrh r1, [r3, 0x4] + movs r0, 0x1 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _080A7754 + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strh r0, [r3, 0x4] + b _080A77B6 + .align 2, 0 +_080A774C: .4byte gUnknown_3005090 +_080A7750: .4byte gUnknown_2037F02 +_080A7754: + movs r0, 0x1 + orrs r0, r1 + strh r0, [r3, 0x4] + b _080A77B6 +_080A775C: + ldr r1, _080A77A0 @ =gUnknown_2023BD6 + ldr r0, _080A77A4 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + lsls r2, r7, 2 + mov r8, r2 + cmp r0, 0 + bne _080A77B6 + ldr r1, _080A77A8 @ =gUnknown_3005090 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + strh r3, [r0, 0x10] + ldr r2, _080A77AC @ =gUnknown_2037F02 + ldrh r0, [r2] + negs r0, r0 + strh r0, [r2] + ldrh r0, [r2, 0x2] + negs r0, r0 + strh r0, [r2, 0x2] + ldrh r1, [r2, 0x4] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080A77B0 + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + b _080A77B4 + .align 2, 0 +_080A77A0: .4byte gUnknown_2023BD6 +_080A77A4: .4byte gUnknown_2037F1B +_080A77A8: .4byte gUnknown_3005090 +_080A77AC: .4byte gUnknown_2037F02 +_080A77B0: + movs r0, 0x1 + orrs r0, r1 +_080A77B4: + strh r0, [r2, 0x4] +_080A77B6: + ldr r5, _080A7810 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + ldr r1, _080A7814 @ =gUnknown_3005090 + mov r3, r8 + adds r4, r3, r7 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + adds r6, r0, 0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + mov r9, r0 + ldr r0, _080A7818 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7820 + ldr r4, _080A781C @ =gUnknown_2037F1B + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A7820 + ldrb r0, [r4] + movs r1, 0 + mov r2, sp + mov r3, r10 + bl sub_8076D9C + b _080A7842 + .align 2, 0 +_080A7810: .4byte gUnknown_2037F1A +_080A7814: .4byte gUnknown_3005090 +_080A7818: .4byte gUnknown_2022B4C +_080A781C: .4byte gUnknown_2037F1B +_080A7820: + mov r5, sp + ldr r4, _080A787C @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r1, r10 + strh r0, [r1] +_080A7842: + mov r4, sp + ldr r0, _080A7880 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + mov r2, sp + ldr r3, _080A7884 @ =gUnknown_2037F02 + ldrh r0, [r3] + ldrh r2, [r2] + adds r0, r2 + strh r0, [r1, 0x1E] + strh r0, [r4] + ldrh r0, [r3, 0x2] + mov r3, r10 + ldrh r3, [r3] + adds r0, r3 + strh r0, [r1, 0x20] + mov r1, r10 + strh r0, [r1] + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r0, [r0, r3] + adds r1, r6, 0 + cmp r0, r1 + blt _080A7888 + subs r0, r2, r1 + b _080A788A + .align 2, 0 +_080A787C: .4byte gUnknown_2037F1B +_080A7880: .4byte gUnknown_3005090 +_080A7884: .4byte gUnknown_2037F02 +_080A7888: + subs r0, r1, r2 +_080A788A: + lsls r0, 16 + lsrs r0, 16 + lsls r4, r0, 16 + asrs r4, 16 + ldr r5, _080A7900 @ =gUnknown_2037F02 + ldrh r1, [r5, 0x4] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + lsls r0, 16 + asrs r0, 16 + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + ldr r2, _080A7904 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r6, r1, r2 + strh r0, [r6, 0x12] + movs r1, 0x12 + ldrsh r0, [r6, r1] + movs r1, 0x80 + bl sub_80D8AA0 + strh r0, [r6, 0x14] + ldrh r0, [r5, 0x4] + strh r0, [r6, 0x16] + mov r2, r10 + ldrh r1, [r2] + movs r3, 0 + ldrsh r0, [r2, r3] + mov r4, r9 + cmp r0, r4 + blt _080A7908 + subs r4, r1, r4 + lsls r4, 16 + asrs r4, 16 + movs r1, 0x12 + ldrsh r0, [r6, r1] + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + movs r1, 0x2 + negs r1, r1 + ands r1, r0 + strh r1, [r6, 0x18] + b _080A7928 + .align 2, 0 +_080A7900: .4byte gUnknown_2037F02 +_080A7904: .4byte gUnknown_3005090 +_080A7908: + subs r4, r1 + lsls r4, 16 + asrs r4, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + bl sub_80D8B90 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_80D8AA0 + movs r1, 0x1 + orrs r0, r1 + strh r0, [r6, 0x18] +_080A7928: + ldr r1, _080A7968 @ =gUnknown_3005090 + mov r3, r8 + adds r0, r3, r7 + lsls r0, 3 + adds r5, r0, r1 + ldr r4, _080A796C @ =gUnknown_2037F02 + ldrh r0, [r4, 0x6] + strh r0, [r5, 0xE] + ldrh r1, [r4, 0x8] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080A7978 + movs r0, 0x80 + eors r0, r1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _080A79A0 + ldr r0, _080A7970 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A7974 @ =0x0000ffc0 + adds r1, r2, 0 + ldrh r4, [r4, 0x8] + adds r1, r4 + adds r0, r1 + b _080A79B0 + .align 2, 0 +_080A7968: .4byte gUnknown_3005090 +_080A796C: .4byte gUnknown_2037F02 +_080A7970: .4byte gUnknown_2037F1B +_080A7974: .4byte 0x0000ffc0 +_080A7978: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _080A79A0 + ldr r0, _080A7998 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080A799C @ =0x0000ffc0 + adds r1, r3, 0 + ldrh r4, [r4, 0x8] + adds r1, r4 + adds r0, r1 + b _080A79B0 + .align 2, 0 +_080A7998: .4byte gUnknown_2037F1B +_080A799C: .4byte 0x0000ffc0 +_080A79A0: + ldr r0, _080A79DC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x8] + subs r0, r1 +_080A79B0: + strh r0, [r5, 0xC] + ldr r0, _080A79E0 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0x2 + bgt _080A79C8 + movs r0, 0x3 + strh r0, [r1, 0xC] +_080A79C8: + ldr r0, _080A79E4 @ =sub_80A760C + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A79DC: .4byte gUnknown_2037F1B +_080A79E0: .4byte gUnknown_3005090 +_080A79E4: .4byte sub_80A760C + thumb_func_end sub_80A76F0 + + thumb_func_start sub_80A79E8 +sub_80A79E8: @ 80A79E8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A7A10 @ =gUnknown_83E3D18 + ldrh r0, [r0, 0x2] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r4, 0x2E] + ldr r0, _080A7A14 @ =sub_80A7A18 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7A10: .4byte gUnknown_83E3D18 +_080A7A14: .4byte sub_80A7A18 + thumb_func_end sub_80A79E8 + + thumb_func_start sub_80A7A18 +sub_80A7A18: @ 80A7A18 + push {r4-r7,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080A7A7C + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r5, [r4, 0x2E] + ldr r1, _080A7A84 @ =gUnknown_20375F8 + adds r0, r5, 0 + adds r0, 0x8 + lsls r0, 1 + adds r0, r1 + ldrh r7, [r0] + adds r6, r1, 0 + adds r1, r5, 0 + adds r1, 0x9 + lsls r0, r5, 1 + adds r0, r6 + adds r2, r0, 0 + adds r2, 0x10 + movs r3, 0x7 + lsls r1, 1 + adds r1, r6 +_080A7A50: + ldrh r0, [r1] + strh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080A7A50 + adds r0, r5, 0 + adds r0, 0xF + lsls r0, 1 + adds r0, r6 + strh r7, [r0] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + bne _080A7A7C + adds r0, r4, 0 + bl sub_8072740 +_080A7A7C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7A84: .4byte gUnknown_20375F8 + thumb_func_end sub_80A7A18 + + thumb_func_start sub_80A7A88 +sub_80A7A88: @ 80A7A88 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r4, _080A7B28 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A7B2C @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _080A7B30 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A7ACC + ldrh r0, [r4, 0x4] + negs r0, r0 + strh r0, [r4, 0x4] +_080A7ACC: + lsls r0, r6, 16 + asrs r0, 16 + ldrh r1, [r4, 0x4] + adds r0, r1 + lsls r0, 16 + ldrh r1, [r5, 0x20] + lsrs r6, r0, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r5, 0x22] + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + strh r6, [r5, 0x32] + strh r7, [r5, 0x36] + ldr r0, _080A7B34 @ =sub_80756A4 + str r0, [r5, 0x1C] + ldr r1, _080A7B38 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7B28: .4byte gUnknown_2037F1B +_080A7B2C: .4byte gUnknown_2037F02 +_080A7B30: .4byte gUnknown_2037F1A +_080A7B34: .4byte sub_80756A4 +_080A7B38: .4byte sub_8072740 + thumb_func_end sub_80A7A88 + + thumb_func_start sub_80A7B3C +sub_80A7B3C: @ 80A7B3C + ldr r1, _080A7B4C @ =0x0000fff0 + strh r1, [r0, 0x32] + ldrh r1, [r0, 0x22] + adds r1, 0x8 + strh r1, [r0, 0x22] + ldr r1, _080A7B50 @ =sub_80A7B54 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080A7B4C: .4byte 0x0000fff0 +_080A7B50: .4byte sub_80A7B54 + thumb_func_end sub_80A7B3C + + thumb_func_start sub_80A7B54 +sub_80A7B54: @ 80A7B54 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldr r0, _080A7BC0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A7B78 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] +_080A7B78: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x5 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7E + ble _080A7BB8 + movs r0, 0 + strh r0, [r4, 0x30] + movs r1, 0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080A7BB8 + adds r0, r4, 0 + bl sub_8072740 +_080A7BB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7BC0: .4byte gUnknown_2037F1A + thumb_func_end sub_80A7B54 + + thumb_func_start sub_80A7BC4 +sub_80A7BC4: @ 80A7BC4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r5, _080A7C10 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080A7C14 @ =sub_8075590 + str r0, [r4, 0x1C] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080A7C18 @ =sub_80A7C1C + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A7C10: .4byte gUnknown_2037F1B +_080A7C14: .4byte sub_8075590 +_080A7C18: .4byte sub_80A7C1C + thumb_func_end sub_80A7BC4 + + thumb_func_start sub_80A7C1C +sub_80A7C1C: @ 80A7C1C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x9F + bl sub_80722F4 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + movs r2, 0 + movs r1, 0x7 + adds r0, r4, 0 + adds r0, 0x3C +_080A7C50: + strh r2, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080A7C50 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x7 + ands r0, r1 + ldr r2, _080A7C98 @ =0x0000fff4 + adds r1, r2, 0 + subs r1, r0 + strh r1, [r4, 0x3A] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA0 + bl __umodsi3 + adds r0, 0xA0 + strh r0, [r4, 0x3C] + ldr r0, _080A7C9C @ =sub_80A7CA0 + str r0, [r4, 0x1C] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7C98: .4byte 0x0000fff4 +_080A7C9C: .4byte sub_80A7CA0 + thumb_func_end sub_80A7C1C + + thumb_func_start sub_80A7CA0 +sub_80A7CA0: @ 80A7CA0 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x3C] + ldrh r2, [r4, 0x2E] + adds r0, r1, r2 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r2, r0, 24 + strh r2, [r4, 0x24] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A7CBE + negs r0, r2 + strh r0, [r4, 0x24] +_080A7CBE: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x3A + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x8 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7E + ble _080A7CFE + movs r0, 0 + strh r0, [r4, 0x30] + movs r1, 0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A7CFE + adds r0, r4, 0 + bl sub_8072740 +_080A7CFE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A7CA0 + + thumb_func_start sub_80A7D04 +sub_80A7D04: @ 80A7D04 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A7D54 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A7D22 + ldrh r0, [r4, 0x22] + adds r0, 0x10 + strh r0, [r4, 0x22] +_080A7D22: + ldr r1, _080A7D58 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0xC] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldr r0, _080A7D5C @ =sub_8074A80 + str r0, [r4, 0x1C] + ldr r1, _080A7D60 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7D54: .4byte gUnknown_2037F1A +_080A7D58: .4byte gUnknown_2037F02 +_080A7D5C: .4byte sub_8074A80 +_080A7D60: .4byte sub_8072740 + thumb_func_end sub_80A7D04 + + thumb_func_start sub_80A7D64 +sub_80A7D64: @ 80A7D64 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + movs r7, 0x20 + ldr r4, _080A7DE0 @ =0x0000ffe0 + movs r0, 0x10 + mov r8, r0 + ldr r6, _080A7DE4 @ =0x0000fff0 + ldr r0, _080A7DE8 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080A7D90 + adds r7, r4, 0 + movs r4, 0x20 + mov r8, r6 + movs r6, 0x10 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C +_080A7D90: + lsls r0, r7, 16 + asrs r0, 16 + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080A7DEC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + add r0, r8 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _080A7DF0 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A7DF4 @ =sub_80A7DF8 + adds r0, r5, 0 + bl sub_8074A68 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7DE0: .4byte 0x0000ffe0 +_080A7DE4: .4byte 0x0000fff0 +_080A7DE8: .4byte gUnknown_2037F02 +_080A7DEC: .4byte gUnknown_2037F1B +_080A7DF0: .4byte sub_8075590 +_080A7DF4: .4byte sub_80A7DF8 + thumb_func_end sub_80A7D64 + + thumb_func_start sub_80A7DF8 +sub_80A7DF8: @ 80A7DF8 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A7E0E + adds r0, r2, 0 + bl sub_8072740 +_080A7E0E: + pop {r0} + bx r0 + thumb_func_end sub_80A7DF8 + + thumb_func_start sub_80A7E14 +sub_80A7E14: @ 80A7E14 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + movs r0, 0x20 + mov r8, r0 + ldr r4, _080A7EA8 @ =0x0000ffe0 + movs r2, 0x10 + mov r9, r2 + ldr r6, _080A7EAC @ =0x0000fff0 + ldr r7, _080A7EB0 @ =gUnknown_2037F02 + ldrh r1, [r7] + movs r2, 0 + ldrsh r0, [r7, r2] + cmp r0, 0 + beq _080A7E48 + mov r8, r4 + movs r4, 0x20 + mov r9, r6 + movs r6, 0x10 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_080A7E48: + mov r0, r8 + lsls r1, r0, 16 + asrs r1, 16 + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + movs r0, 0x6 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + ldr r4, _080A7EB4 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + add r0, r9 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + ldrh r0, [r7] + strh r0, [r5, 0x38] + ldrh r0, [r5, 0x2E] + strh r0, [r5, 0x3A] + ldr r0, _080A7EB8 @ =sub_80A7EBC + str r0, [r5, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7EA8: .4byte 0x0000ffe0 +_080A7EAC: .4byte 0x0000fff0 +_080A7EB0: .4byte gUnknown_2037F02 +_080A7EB4: .4byte gUnknown_2037F1B +_080A7EB8: .4byte sub_80A7EBC + thumb_func_end sub_80A7E14 + + thumb_func_start sub_80A7EBC +sub_80A7EBC: @ 80A7EBC + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A7F20 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A7F20 + adds r0, r4, 0 + movs r1, 0 + bl sub_80083C0 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r2, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0x2 + strh r0, [r4, 0x24] + ldr r0, _080A7F28 @ =0x0000fffe + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + eors r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x36] + strh r2, [r4, 0x34] + ldr r0, _080A7F2C @ =sub_80A7F30 + str r0, [r4, 0x1C] +_080A7F20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7F28: .4byte 0x0000fffe +_080A7F2C: .4byte sub_80A7F30 + thumb_func_end sub_80A7EBC + + thumb_func_start sub_80A7F30 +sub_80A7F30: @ 80A7F30 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A7F48 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x26] + negs r0, r0 + strh r0, [r4, 0x26] +_080A7F48: + ldrh r0, [r4, 0x34] + movs r1, 0x1 + eors r0, r1 + movs r1, 0 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080A7F8A + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + strh r1, [r4, 0x36] + strh r1, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x38] + movs r1, 0x1 + eors r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + ldr r0, _080A7F90 @ =sub_80A7F94 + str r0, [r4, 0x1C] +_080A7F8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A7F90: .4byte sub_80A7F94 + thumb_func_end sub_80A7F30 + + thumb_func_start sub_80A7F94 +sub_80A7F94: @ 80A7F94 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A7FA8 + adds r0, r4, 0 + bl sub_8072740 +_080A7FA8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A7F94 + + thumb_func_start sub_80A7FB0 +sub_80A7FB0: @ 80A7FB0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x1 + bl sub_80749D4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80758E0 + adds r0, r4, 0 + movs r1, 0xD0 + movs r2, 0xD0 + movs r3, 0 + bl sub_8075858 + ldr r1, _080A8008 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0 + bl sub_8075B48 + ldr r1, _080A800C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x50 + strh r1, [r0, 0x8] + ldr r1, _080A8010 @ =sub_80A8014 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8008: .4byte gUnknown_202063C +_080A800C: .4byte gUnknown_3005090 +_080A8010: .4byte sub_80A8014 + thumb_func_end sub_80A7FB0 + + thumb_func_start sub_80A8014 +sub_80A8014: @ 80A8014 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A806C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + asrs r1, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080A8064 + movs r0, 0x1 + bl sub_80749D4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8075980 + ldr r1, _080A8070 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0x1 + bl sub_8075B48 + adds r0, r5, 0 + bl sub_8072760 +_080A8064: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A806C: .4byte gUnknown_3005090 +_080A8070: .4byte gUnknown_202063C + thumb_func_end sub_80A8014 + + thumb_func_start sub_80A8074 +sub_80A8074: @ 80A8074 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A80C0 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x8] + movs r1, 0 + bl sub_80758E0 + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x10] + strh r5, [r4, 0x12] + strh r5, [r4, 0x14] + ldr r0, _080A80C4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x16] + ldr r0, _080A80C8 @ =sub_80A80CC + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A80C0: .4byte gUnknown_3005090 +_080A80C4: .4byte gUnknown_2037F1A +_080A80C8: .4byte sub_80A80CC + thumb_func_end sub_80A8074 + + thumb_func_start sub_80A80CC +sub_80A80CC: @ 80A80CC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A80F0 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080A80E6 + b _080A81F6 +_080A80E6: + lsls r0, 2 + ldr r1, _080A80F4 @ =_080A80F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A80F0: .4byte gUnknown_3005090 +_080A80F4: .4byte _080A80F8 + .align 2, 0 +_080A80F8: + .4byte _080A8110 + .4byte _080A8158 + .4byte _080A818E + .4byte _080A8194 + .4byte _080A81A4 + .4byte _080A81D8 +_080A8110: + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080A8120 + cmp r0, 0x3 + beq _080A8120 + cmp r0, 0x6 + bne _080A8128 +_080A8120: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80A8200 +_080A8128: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + adds r0, 0x28 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r1, 0x10 + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrb r0, [r4, 0x8] + bl sub_8076440 + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x20 + bne _080A81F6 + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + b _080A81D0 +_080A8158: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A81F6 + movs r2, 0x12 + ldrsh r1, [r4, r2] + cmp r1, 0x3 + bne _080A816E + strh r0, [r4, 0xC] + strh r1, [r4, 0xA] + b _080A81F6 +_080A816E: + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r2, 0x80 + lsls r2, 1 + strh r2, [r4, 0x10] + ldrb r0, [r4, 0x8] + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrb r0, [r4, 0x8] + bl sub_8076440 + movs r0, 0x2 + strh r0, [r4, 0xA] + b _080A81F6 +_080A818E: + movs r0, 0 + strh r0, [r4, 0xA] + b _080A81F6 +_080A8194: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + ble _080A81F6 + b _080A81CC +_080A81A4: + ldrh r0, [r4, 0xC] + adds r0, 0x2 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + subs r0, 0x50 + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + movs r1, 0x10 + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrb r0, [r4, 0x8] + bl sub_8076440 + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x20 + bne _080A81F6 +_080A81CC: + movs r0, 0 + strh r0, [r4, 0xC] +_080A81D0: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080A81F6 +_080A81D8: + ldrb r0, [r4, 0x8] + bl sub_8075980 + ldr r2, _080A81FC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x26] + adds r0, r5, 0 + bl sub_8072760 +_080A81F6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A81FC: .4byte gUnknown_202063C + thumb_func_end sub_80A80CC + + thumb_func_start sub_80A8200 +sub_80A8200: @ 80A8200 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r0, 0 + bl sub_8075FBC + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r0, 16 + asrs r4, r0, 16 + cmp r4, 0 + blt _080A82DA + bl sub_8008594 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xFF + bne _080A8244 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _080A8240 @ =gUnknown_202063C + adds r0, r1 + bl sub_8076030 + b _080A82DA + .align 2, 0 +_080A8240: .4byte gUnknown_202063C +_080A8244: + ldr r5, _080A82E8 @ =gUnknown_202063C + lsls r3, r4, 4 + adds r3, r4 + lsls r3, 2 + adds r4, r3, r5 + ldrb r1, [r4, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1F + ands r6, r0 + lsls r2, r6, 1 + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x3] + ldrb r0, [r7, 0x16] + ldrb r1, [r7, 0xE] + subs r0, r1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r7, 0xE] + adds r0, 0x1 + strh r0, [r7, 0xE] + ldrh r0, [r7, 0x14] + adds r0, 0x1 + strh r0, [r7, 0x14] + movs r0, 0x10 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + movs r0, 0x6 + strh r0, [r4, 0x32] + adds r5, 0x1C + adds r3, r5 + ldr r0, _080A82EC @ =sub_80A82F0 + str r0, [r3] + mov r1, r8 + lsls r0, r1, 24 + lsrs r0, 24 + movs r1, 0x10 + ldrsh r2, [r7, r1] + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrb r0, [r4, 0x1] + movs r3, 0x4 + negs r3, r3 + ands r3, r0 + movs r0, 0x1 + orrs r3, r0 + strb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 +_080A82DA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A82E8: .4byte gUnknown_202063C +_080A82EC: .4byte sub_80A82F0 + thumb_func_end sub_80A8200 + + thumb_func_start sub_80A82F0 +sub_80A82F0: @ 80A82F0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080A832E + ldr r3, _080A8334 @ =gUnknown_3005090 + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8076030 +_080A832E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8334: .4byte gUnknown_3005090 + thumb_func_end sub_80A82F0 + + thumb_func_start sub_80A8338 +sub_80A8338: @ 80A8338 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A835C @ =gUnknown_3005090 + adds r4, r0, r1 + ldr r5, _080A8360 @ =gUnknown_2037F02 + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A8364 + adds r0, r2, 0 + bl sub_8072760 + b _080A838A + .align 2, 0 +_080A835C: .4byte gUnknown_3005090 +_080A8360: .4byte gUnknown_2037F02 +_080A8364: + ldrb r0, [r5] + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r1, [r4, 0x8] + strh r2, [r4, 0xA] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0xC] + strh r2, [r4, 0xE] + strh r2, [r4, 0x10] + ldr r2, _080A8390 @ =gUnknown_83E3E60 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A8394 @ =sub_80A8398 + str r0, [r4] +_080A838A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8390: .4byte gUnknown_83E3E60 +_080A8394: .4byte sub_80A8398 + thumb_func_end sub_80A8338 + + thumb_func_start sub_80A8398 +sub_80A8398: @ 80A8398 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A83BC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0xA + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080A8400 + cmp r5, 0x1 + bgt _080A83C0 + cmp r5, 0 + beq _080A83CA + b _080A84A8 + .align 2, 0 +_080A83BC: .4byte gUnknown_3005090 +_080A83C0: + cmp r5, 0x2 + beq _080A8434 + cmp r5, 0x3 + beq _080A8464 + b _080A84A8 +_080A83CA: + adds r0, r4, 0 + bl sub_8076308 + ldrh r2, [r4, 0x10] + adds r2, 0x3 + strh r2, [r4, 0x10] + ldr r3, _080A83FC @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + adds r1, r2 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080A84A8 + strh r5, [r4, 0xE] + b _080A845C + .align 2, 0 +_080A83FC: .4byte gUnknown_202063C +_080A8400: + adds r0, r4, 0 + bl sub_8076308 + ldr r2, _080A8430 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + ldrh r2, [r0, 0x26] + adds r1, r2 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080A84A8 + movs r0, 0 + strh r0, [r4, 0xE] + b _080A845C + .align 2, 0 +_080A8430: .4byte gUnknown_202063C +_080A8434: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080A845C + ldr r2, _080A8458 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x2 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0x10] + subs r0, 0x2 + strh r0, [r4, 0x10] + b _080A84A8 + .align 2, 0 +_080A8458: .4byte gUnknown_202063C +_080A845C: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080A84A8 +_080A8464: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080A84A8 + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _080A849C + ldr r2, _080A8498 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x26] + adds r0, r6, 0 + bl sub_8072760 + b _080A84A8 + .align 2, 0 +_080A8498: .4byte gUnknown_202063C +_080A849C: + ldrb r1, [r4, 0x8] + ldr r2, _080A84B0 @ =gUnknown_83E3E60 + adds r0, r4, 0 + bl sub_80762D0 + strh r5, [r4, 0xA] +_080A84A8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A84B0: .4byte gUnknown_83E3E60 + thumb_func_end sub_80A8398 + + thumb_func_start sub_80A84B4 +sub_80A84B4: @ 80A84B4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A84E4 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A84E8 @ =gUnknown_83E3E80 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A84EC @ =sub_80A84F0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A84E4: .4byte gUnknown_3005090 +_080A84E8: .4byte gUnknown_83E3E80 +_080A84EC: .4byte sub_80A84F0 + thumb_func_end sub_80A84B4 + + thumb_func_start sub_80A84F0 +sub_80A84F0: @ 80A84F0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A8518 @ =gUnknown_3005090 + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080A8510 + adds r0, r4, 0 + bl sub_8072760 +_080A8510: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8518: .4byte gUnknown_3005090 + thumb_func_end sub_80A84F0 + + thumb_func_start sub_80A851C +sub_80A851C: @ 80A851C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080A854C @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A8550 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r4, 0x20] + movs r0, 0x40 + b _080A856A + .align 2, 0 +_080A854C: .4byte gUnknown_2037F1A +_080A8550: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x20 + strh r0, [r4, 0x20] + ldr r0, _080A859C @ =0x0000ffc0 +_080A856A: + strh r0, [r4, 0x30] + ldr r0, _080A85A0 @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + strh r0, [r4, 0x22] + movs r0, 0x34 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x32] + strh r1, [r4, 0x34] + strh r1, [r4, 0x36] + ldr r1, _080A85A4 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080A85A8 @ =sub_8074D00 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A859C: .4byte 0x0000ffc0 +_080A85A0: .4byte gUnknown_2037F1A +_080A85A4: .4byte sub_8072740 +_080A85A8: .4byte sub_8074D00 + thumb_func_end sub_80A851C + + thumb_func_start sub_80A85AC +sub_80A85AC: @ 80A85AC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080A85C0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A85C8 + ldr r0, _080A85C4 @ =gUnknown_2037F1A + b _080A85CA + .align 2, 0 +_080A85C0: .4byte gUnknown_2037F02 +_080A85C4: .4byte gUnknown_2037F1A +_080A85C8: + ldr r0, _080A8628 @ =gUnknown_2037F1B +_080A85CA: + ldrb r5, [r0] + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A85E4 + ldr r1, _080A862C @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080A85E4: + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A862C @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x20] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x4] + adds r0, r4 + strh r0, [r6, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bgt _080A8616 + movs r0, 0x8 + strh r0, [r6, 0x22] +_080A8616: + ldr r1, _080A8630 @ =sub_8074EE0 + adds r0, r6, 0 + bl sub_8074A68 + ldr r0, _080A8634 @ =sub_8074F50 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A8628: .4byte gUnknown_2037F1B +_080A862C: .4byte gUnknown_2037F02 +_080A8630: .4byte sub_8074EE0 +_080A8634: .4byte sub_8074F50 + thumb_func_end sub_80A85AC + + thumb_func_start sub_80A8638 +sub_80A8638: @ 80A8638 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A866C @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + strh r1, [r4, 0x8] + strh r0, [r4, 0xA] + ldr r2, _080A8670 @ =gUnknown_83E3F1C + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A8674 @ =sub_80A8678 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A866C: .4byte gUnknown_3005090 +_080A8670: .4byte gUnknown_83E3F1C +_080A8674: .4byte sub_80A8678 + thumb_func_end sub_80A8638 + + thumb_func_start sub_80A8678 +sub_80A8678: @ 80A8678 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A86A0 @ =gUnknown_3005090 + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080A8698 + adds r0, r4, 0 + bl sub_8072760 +_080A8698: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A86A0: .4byte gUnknown_3005090 + thumb_func_end sub_80A8678 + + thumb_func_start sub_80A86A4 +sub_80A86A4: @ 80A86A4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080A8718 @ =gUnknown_3005090 + adds r4, r1, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + strh r0, [r4, 0x8] + strh r2, [r4, 0xA] + movs r0, 0x4 + strh r0, [r4, 0xC] + movs r0, 0x7 + strh r0, [r4, 0xE] + movs r0, 0x3 + strh r0, [r4, 0x10] + ldr r3, _080A871C @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x20] + strh r0, [r4, 0x12] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x14] + strh r2, [r4, 0x16] + strh r2, [r4, 0x18] + movs r0, 0x2 + strh r0, [r4, 0x1A] + ldr r0, _080A8720 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A870E + movs r1, 0xC + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0xC] +_080A870E: + ldr r0, _080A8724 @ =sub_80A8728 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8718: .4byte gUnknown_3005090 +_080A871C: .4byte gUnknown_202063C +_080A8720: .4byte gUnknown_2037F1A +_080A8724: .4byte sub_80A8728 + thumb_func_end sub_80A86A4 + + thumb_func_start sub_80A8728 +sub_80A8728: @ 80A8728 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A8770 @ =gUnknown_3005090 + adds r3, r0, r1 + ldrh r0, [r3, 0x16] + adds r0, 0x1 + strh r0, [r3, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080A878E + movs r0, 0 + strh r0, [r3, 0x16] + ldrh r0, [r3, 0x18] + adds r0, 0x1 + strh r0, [r3, 0x18] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A8778 + ldr r2, _080A8774 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x1A] + ldrh r2, [r0, 0x22] + adds r1, r2 + b _080A878C + .align 2, 0 +_080A8770: .4byte gUnknown_3005090 +_080A8774: .4byte gUnknown_202063C +_080A8778: + ldr r2, _080A87A0 @ =gUnknown_202063C + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + ldrh r2, [r3, 0x1A] + subs r1, r2 +_080A878C: + strh r1, [r0, 0x22] +_080A878E: + movs r1, 0xA + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _080A87DC + cmp r0, 0x1 + bgt _080A87A4 + cmp r0, 0 + beq _080A87AA + b _080A886C + .align 2, 0 +_080A87A0: .4byte gUnknown_202063C +_080A87A4: + cmp r0, 0x2 + beq _080A880C + b _080A886C +_080A87AA: + ldr r2, _080A87D8 @ =gUnknown_202063C + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0xC] + ldrh r2, [r0, 0x20] + adds r1, r2 + strh r1, [r0, 0x20] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080A886C + movs r0, 0xE + strh r0, [r3, 0xE] + movs r0, 0x1 + strh r0, [r3, 0xA] + b _080A886C + .align 2, 0 +_080A87D8: .4byte gUnknown_202063C +_080A87DC: + ldr r2, _080A8808 @ =gUnknown_202063C + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x20] + ldrh r2, [r3, 0xC] + subs r1, r2 + strh r1, [r0, 0x20] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080A886C + movs r0, 0x7 + strh r0, [r3, 0xE] + movs r0, 0x2 + strh r0, [r3, 0xA] + b _080A886C + .align 2, 0 +_080A8808: .4byte gUnknown_202063C +_080A880C: + ldr r2, _080A8844 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0xC] + ldrh r5, [r0, 0x20] + adds r1, r5 + strh r1, [r0, 0x20] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _080A886C + ldrh r0, [r3, 0x10] + subs r0, 0x1 + strh r0, [r3, 0x10] + lsls r0, 16 + cmp r0, 0 + beq _080A8848 + movs r0, 0x7 + strh r0, [r3, 0xE] + strh r1, [r3, 0xA] + b _080A886C + .align 2, 0 +_080A8844: .4byte gUnknown_202063C +_080A8848: + ldrh r1, [r3, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A8866 + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + ldrh r2, [r3, 0x1A] + subs r1, r2 + strh r1, [r0, 0x22] +_080A8866: + adds r0, r4, 0 + bl sub_8072760 +_080A886C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A8728 + + thumb_func_start sub_80A8874 +sub_80A8874: @ 80A8874 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080A88C4 @ =gUnknown_3005090 + adds r5, r1, r0 + ldr r4, _080A88C8 @ =gUnknown_2037F1B + ldrb r0, [r4] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + movs r1, 0 + strh r0, [r5, 0x8] + movs r0, 0x4 + strh r0, [r5, 0xA] + strh r1, [r5, 0xC] + strh r1, [r5, 0xE] + strh r1, [r5, 0x10] + strh r1, [r5, 0x12] + ldrb r0, [r4] + bl sub_8076B2C + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A88D4 + ldr r0, _080A88CC @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r5, 0x14] + ldr r0, _080A88D0 @ =0x04000014 + b _080A88DC + .align 2, 0 +_080A88C4: .4byte gUnknown_3005090 +_080A88C8: .4byte gUnknown_2037F1B +_080A88CC: .4byte gUnknown_2022978 +_080A88D0: .4byte 0x04000014 +_080A88D4: + ldr r0, _080A8940 @ =gUnknown_202297C + ldrh r0, [r0] + strh r0, [r5, 0x14] + ldr r0, _080A8944 @ =0x04000018 +_080A88DC: + str r0, [sp] + ldrh r0, [r5, 0x8] + adds r1, r0, 0 + subs r1, 0x40 + lsls r2, r1, 16 + lsls r0, 16 + cmp r2, r0 + bgt _080A891A + ldr r4, _080A8948 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r4, r0 +_080A88F4: + asrs r3, r2, 16 + cmp r3, 0 + blt _080A890C + lsls r1, r3, 1 + adds r2, r1, r4 + ldrh r0, [r5, 0x14] + adds r0, 0xF0 + strh r0, [r2] + adds r1, r6 + ldrh r0, [r5, 0x14] + adds r0, 0xF0 + strh r0, [r1] +_080A890C: + adds r0, r3, 0x1 + lsls r2, r0, 16 + asrs r1, r2, 16 + movs r3, 0x8 + ldrsh r0, [r5, r3] + cmp r1, r0 + ble _080A88F4 +_080A891A: + ldr r0, _080A894C @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldr r0, _080A8950 @ =sub_80A8954 + str r0, [r5] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A8940: .4byte gUnknown_202297C +_080A8944: .4byte 0x04000018 +_080A8948: .4byte gUnknown_2038700 +_080A894C: .4byte 0xa2600001 +_080A8950: .4byte sub_80A8954 + thumb_func_end sub_80A8874 + + thumb_func_start sub_80A8954 +sub_80A8954: @ 80A8954 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080A8974 @ =gUnknown_3005090 + adds r3, r0, r1 + movs r1, 0x10 + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _080A8978 + cmp r0, 0x1 + beq _080A898E + b _080A8A0E + .align 2, 0 +_080A8974: .4byte gUnknown_3005090 +_080A8978: + ldrh r0, [r3, 0x12] + adds r0, 0x1 + strh r0, [r3, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080A8A0E + ldrh r0, [r3, 0x10] + adds r0, 0x1 + strh r0, [r3, 0x10] + b _080A8A0E +_080A898E: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A8A0E + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r1, [r3, 0xE] + movs r0, 0x3 + ands r0, r1 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x8] + subs r0, r1 + strh r0, [r3, 0x12] + movs r2, 0xC + ldrsh r1, [r3, r2] + cmp r1, 0x1 + beq _080A89C4 + cmp r1, 0x1 + ble _080A89CC + cmp r1, 0x2 + beq _080A89C8 + cmp r1, 0x3 + beq _080A89C8 + b _080A89CC +_080A89C4: + subs r0, 0x2 + b _080A89CA +_080A89C8: + adds r0, 0x1 +_080A89CA: + strh r0, [r3, 0x12] +_080A89CC: + movs r1, 0x12 + ldrsh r0, [r3, r1] + cmp r0, 0 + blt _080A89F0 + ldr r2, _080A8A14 @ =gUnknown_2038700 + lsls r0, 1 + adds r0, r2 + ldrh r1, [r3, 0x14] + strh r1, [r0] + movs r1, 0x12 + ldrsh r0, [r3, r1] + lsls r0, 1 + movs r1, 0xF0 + lsls r1, 3 + adds r2, r1 + adds r0, r2 + ldrh r1, [r3, 0x14] + strh r1, [r0] +_080A89F0: + ldrh r0, [r3, 0xE] + adds r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x26 + ldrsh r1, [r3, r2] + cmp r0, r1 + blt _080A8A0E + ldr r1, _080A8A18 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] + adds r0, r4, 0 + bl sub_8072760 +_080A8A0E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8A14: .4byte gUnknown_2038700 +_080A8A18: .4byte gUnknown_2039600 + thumb_func_end sub_80A8954 + + thumb_func_start sub_80A8A1C +sub_80A8A1C: @ 80A8A1C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080A8A70 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x10 + movs r5, 0 + strh r0, [r4, 0x20] + ldrb r0, [r6] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + strh r0, [r4, 0x22] + strh r5, [r4, 0x2E] + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] + movs r0, 0x10 + strh r0, [r4, 0x34] + strh r5, [r4, 0x36] + ldrb r0, [r6] + movs r1, 0 + bl sub_8076B2C + adds r0, 0x2 + strh r0, [r4, 0x38] + movs r0, 0x3F + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0x3A] + ldr r0, _080A8A74 @ =sub_80A8A78 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A8A70: .4byte gUnknown_2037F1B +_080A8A74: .4byte sub_80A8A78 + thumb_func_end sub_80A8A1C + + thumb_func_start sub_80A8A78 +sub_80A8A78: @ 80A8A78 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080A8ADC + cmp r1, 0x1 + bgt _080A8A8E + cmp r1, 0 + beq _080A8A94 + b _080A8BBC +_080A8A8E: + cmp r1, 0x2 + beq _080A8B6E + b _080A8BBC +_080A8A94: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A8ABE + strh r1, [r4, 0x32] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A8ABE: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A8BBC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + b _080A8B66 +_080A8ADC: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A8B22 + ldrh r2, [r4, 0x32] + movs r3, 0x32 + ldrsh r1, [r4, r3] + movs r3, 0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080A8B22 + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + subs r0, 0x1 + strh r0, [r4, 0x22] + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080A8B22 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC6 + bl sub_80722F4 +_080A8B22: + ldrh r0, [r4, 0x34] + ldrh r2, [r4, 0x36] + adds r1, r0, r2 + strh r1, [r4, 0x36] + lsls r0, r1, 16 + asrs r2, r0, 16 + cmp r2, 0x1F + ble _080A8B36 + movs r0, 0x40 + b _080A8B44 +_080A8B36: + movs r0, 0x20 + negs r0, r0 + cmp r2, r0 + bgt _080A8B50 + movs r2, 0x40 + negs r2, r2 + adds r0, r2, 0 +_080A8B44: + subs r0, r1 + strh r0, [r4, 0x36] + movs r3, 0x34 + ldrsh r0, [r4, r3] + negs r0, r0 + strh r0, [r4, 0x34] +_080A8B50: + ldrh r0, [r4, 0x36] + movs r2, 0 + strh r0, [r4, 0x24] + movs r0, 0x38 + ldrsh r1, [r4, r0] + movs r3, 0x32 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080A8BBC + strh r2, [r4, 0x30] + strh r2, [r4, 0x32] +_080A8B66: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080A8BBC +_080A8B6E: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A8B9A + movs r0, 0 + strh r0, [r4, 0x32] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A8B9A: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080A8BBC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + bl sub_8072740 +_080A8BBC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A8A78 + + thumb_func_start sub_80A8BC4 +sub_80A8BC4: @ 80A8BC4 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + movs r5, 0 + mov r0, sp + strh r5, [r0] + mov r1, sp + adds r1, 0x2 + strh r5, [r1] + ldr r0, _080A8BE8 @ =gUnknown_2037F02 + movs r3, 0x4 + ldrsh r2, [r0, r3] + adds r7, r1, 0 + adds r1, r0, 0 + cmp r2, 0 + bne _080A8BF0 + ldr r0, _080A8BEC @ =gUnknown_2037F1A + b _080A8BF2 + .align 2, 0 +_080A8BE8: .4byte gUnknown_2037F02 +_080A8BEC: .4byte gUnknown_2037F1A +_080A8BF0: + ldr r0, _080A8C2C @ =gUnknown_2037F1B +_080A8BF2: + ldrb r5, [r0] + ldrb r1, [r1, 0x6] + movs r0, 0x1 + adds r4, r0, 0 + eors r4, r1 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080A8C6A + movs r1, 0x2 + adds r0, r5, 0 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8C6A + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r7, 0 + bl sub_8076D9C + cmp r4, 0 + bne _080A8C30 + adds r0, r5, 0 + movs r1, 0 + b _080A8C34 + .align 2, 0 +_080A8C2C: .4byte gUnknown_2037F1B +_080A8C30: + adds r0, r5, 0 + movs r1, 0x2 +_080A8C34: + bl sub_8074480 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A8C60 + ldr r2, _080A8C5C @ =gUnknown_2037F02 + mov r0, sp + ldrh r1, [r0] + subs r1, r4 + ldrh r0, [r2] + subs r1, r0 + subs r0, r1 + strh r0, [r2] + b _080A8C6A + .align 2, 0 +_080A8C5C: .4byte gUnknown_2037F02 +_080A8C60: + ldr r1, _080A8C7C @ =gUnknown_2037F02 + mov r0, sp + ldrh r0, [r0] + subs r0, r4 + strh r0, [r1] +_080A8C6A: + ldr r1, _080A8C80 @ =sub_8075D9C + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A8C7C: .4byte gUnknown_2037F02 +_080A8C80: .4byte sub_8075D9C + thumb_func_end sub_80A8BC4 + + thumb_func_start sub_80A8C84 +sub_80A8C84: @ 80A8C84 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080A8C9E + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8072740 +_080A8C9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A8C84 + + thumb_func_start sub_80A8CA4 +sub_80A8CA4: @ 80A8CA4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + movs r6, 0 + mov r0, sp + strh r6, [r0] + mov r1, sp + adds r1, 0x2 + strh r6, [r1] + ldr r0, _080A8CD0 @ =gUnknown_2037F02 + movs r2, 0xA + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080A8CDC + ldr r0, _080A8CD4 @ =gUnknown_2037F1A + ldrb r7, [r0] + ldr r0, _080A8CD8 @ =gUnknown_2037F1B + b _080A8CE2 + .align 2, 0 +_080A8CD0: .4byte gUnknown_2037F02 +_080A8CD4: .4byte gUnknown_2037F1A +_080A8CD8: .4byte gUnknown_2037F1B +_080A8CDC: + ldr r0, _080A8CFC @ =gUnknown_2037F1B + ldrb r7, [r0] + ldr r0, _080A8D00 @ =gUnknown_2037F1A +_080A8CE2: + ldrb r0, [r0] + mov r8, r0 + ldr r0, _080A8D04 @ =gUnknown_2037F02 + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080A8D08 + movs r0, 0 + mov r10, r0 + movs r1, 0x1 + str r1, [sp, 0x4] + b _080A8D10 + .align 2, 0 +_080A8CFC: .4byte gUnknown_2037F1B +_080A8D00: .4byte gUnknown_2037F1A +_080A8D04: .4byte gUnknown_2037F02 +_080A8D08: + movs r2, 0x2 + mov r10, r2 + movs r3, 0x3 + str r3, [sp, 0x4] +_080A8D10: + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A8D6C + adds r0, r7, 0 + mov r1, r10 + bl sub_8074480 + lsls r0, 24 + ldr r1, _080A8D50 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + movs r0, 0x2 + mov r4, r8 + eors r4, r0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8D5C + ldr r2, _080A8D54 @ =gUnknown_202063C + ldr r0, _080A8D58 @ =gUnknown_2023D44 + adds r0, r4, r0 + b _080A8DEA + .align 2, 0 +_080A8D50: .4byte gUnknown_2037F02 +_080A8D54: .4byte gUnknown_202063C +_080A8D58: .4byte gUnknown_2023D44 +_080A8D5C: + ldr r2, _080A8D64 @ =gUnknown_202063C + ldr r0, _080A8D68 @ =gUnknown_2023D44 + add r0, r8 + b _080A8DEA + .align 2, 0 +_080A8D64: .4byte gUnknown_202063C +_080A8D68: .4byte gUnknown_2023D44 +_080A8D6C: + adds r0, r7, 0 + mov r1, r10 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A8DD4 @ =gUnknown_2037F02 + ldrh r1, [r1] + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A8DE4 + movs r0, 0x2 + adds r4, r7, 0 + eors r4, r0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8DE4 + ldr r3, _080A8DD8 @ =gUnknown_202063C + ldr r2, _080A8DDC @ =gUnknown_2023D44 + adds r0, r7, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r6, r0, r3 + adds r2, r4, r2 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r3 + movs r0, 0x20 + ldrsh r1, [r6, r0] + movs r3, 0x20 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080A8DE0 + adds r0, r2, 0 + adds r0, 0x43 + ldrb r0, [r0] + adds r0, 0x1 + b _080A8DFA + .align 2, 0 +_080A8DD4: .4byte gUnknown_2037F02 +_080A8DD8: .4byte gUnknown_202063C +_080A8DDC: .4byte gUnknown_2023D44 +_080A8DE0: + adds r0, r6, 0 + b _080A8DF4 +_080A8DE4: + ldr r2, _080A8E40 @ =gUnknown_202063C + ldr r0, _080A8E44 @ =gUnknown_2023D44 + adds r0, r7, r0 +_080A8DEA: + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 +_080A8DF4: + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 +_080A8DFA: + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + adds r0, r7, 0 + ldr r1, [sp, 0x4] + bl sub_8074480 + lsls r0, 24 + ldr r4, _080A8E48 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A8E4C + movs r1, 0x2 + mov r0, r8 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080A8E4C + ldrb r1, [r4, 0xC] + mov r0, r8 + mov r2, sp + mov r3, sp + adds r3, 0x2 + bl sub_8076D9C + b _080A8E6C + .align 2, 0 +_080A8E40: .4byte gUnknown_202063C +_080A8E44: .4byte gUnknown_2023D44 +_080A8E48: .4byte gUnknown_2037F02 +_080A8E4C: + mov r4, sp + mov r0, r8 + mov r1, r10 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + mov r0, r8 + ldr r1, [sp, 0x4] + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r2, sp + strh r0, [r2, 0x2] +_080A8E6C: + mov r0, r8 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A8E90 + mov r3, sp + mov r2, sp + ldr r1, _080A8E8C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + ldrh r2, [r2] + adds r0, r2 + strh r0, [r3] + adds r2, r1, 0 + b _080A8E9E + .align 2, 0 +_080A8E8C: .4byte gUnknown_2037F02 +_080A8E90: + mov r3, sp + mov r0, sp + ldr r2, _080A8EE0 @ =gUnknown_2037F02 + ldrh r0, [r0] + ldrh r1, [r2, 0x6] + subs r0, r1 + strh r0, [r3] +_080A8E9E: + ldrh r1, [r2, 0x8] + mov r3, sp + ldrh r3, [r3, 0x2] + adds r1, r3 + mov r0, sp + strh r1, [r0, 0x2] + mov r3, r9 + strh r3, [r5, 0x30] + strh r3, [r5, 0x20] + strh r6, [r5, 0x34] + strh r6, [r5, 0x22] + ldrh r0, [r0] + strh r0, [r5, 0x32] + strh r1, [r5, 0x36] + ldrh r0, [r2] + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_80754F8 + ldr r1, _080A8EE4 @ =sub_80A8C84 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A8EE0: .4byte gUnknown_2037F02 +_080A8EE4: .4byte sub_80A8C84 + thumb_func_end sub_80A8CA4 + + thumb_func_start sub_80A8EE8 +sub_80A8EE8: @ 80A8EE8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080A8F28 @ =0x000027db + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080A8F0E + lsls r0, 20 + ldr r1, _080A8F2C @ =0x01010000 + adds r0, r1 + lsrs r0, 16 + ldr r1, _080A8F30 @ =gUnknown_2037F02 + ldrb r2, [r1, 0xA] + ldrh r3, [r1, 0x8] + movs r1, 0xF + bl sub_8045274 +_080A8F0E: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r1, _080A8F34 @ =sub_8075D9C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8F28: .4byte 0x000027db +_080A8F2C: .4byte 0x01010000 +_080A8F30: .4byte gUnknown_2037F02 +_080A8F34: .4byte sub_8075D9C + thumb_func_end sub_80A8EE8 + + thumb_func_start sub_80A8F38 +sub_80A8F38: @ 80A8F38 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r0, _080A8F6C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + movs r1, 0xA0 + cmp r0, 0 + beq _080A8F54 + ldr r1, _080A8F70 @ =0x0000ff60 +_080A8F54: + movs r0, 0xE0 + lsls r0, 2 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + ldr r0, _080A8F74 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x3C] + ldr r0, _080A8F78 @ =sub_80A8F7C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8F6C: .4byte gUnknown_2037F1A +_080A8F70: .4byte 0x0000ff60 +_080A8F74: .4byte gUnknown_2037F02 +_080A8F78: .4byte sub_80A8F7C + thumb_func_end sub_80A8F38 + + thumb_func_start sub_80A8F7C +sub_80A8F7C: @ 80A8F7C + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x2E] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + subs r1, r0 + movs r5, 0 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + subs r2, 0x20 + strh r2, [r4, 0x2E] + ldr r0, _080A8FE8 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + movs r1, 0xA0 + cmp r0, 0 + beq _080A8FAC + ldr r1, _080A8FEC @ =0x0000ff60 +_080A8FAC: + lsls r0, r1, 16 + asrs r0, 16 + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x26] + movs r2, 0x26 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080A8FE0 + ldrh r2, [r4, 0x22] + adds r0, r1, r2 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x26] + strh r5, [r4, 0x24] + strh r5, [r4, 0x2E] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _080A8FF0 @ =sub_80A8FF4 + str r0, [r4, 0x1C] +_080A8FE0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8FE8: .4byte gUnknown_2037F1A +_080A8FEC: .4byte 0x0000ff60 +_080A8FF0: .4byte sub_80A8FF4 + thumb_func_end sub_80A8F7C + + thumb_func_start sub_80A8FF4 +sub_80A8FF4: @ 80A8FF4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080A9012 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800843C + ldr r0, _080A9018 @ =sub_80A901C + str r0, [r4, 0x1C] +_080A9012: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9018: .4byte sub_80A901C + thumb_func_end sub_80A8FF4 + + thumb_func_start sub_80A901C +sub_80A901C: @ 80A901C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080A9082 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + movs r0, 0 + strh r0, [r4, 0x2E] + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9068 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r3, _080A905C @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080A9060 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, _080A9064 @ =sub_80A9094 + b _080A9080 + .align 2, 0 +_080A905C: .4byte 0x000003ff +_080A9060: .4byte 0xfffffc00 +_080A9064: .4byte sub_80A9094 +_080A9068: + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x20 + ldr r3, _080A9088 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080A908C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, _080A9090 @ =sub_80A911C +_080A9080: + str r0, [r4, 0x1C] +_080A9082: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9088: .4byte 0x000003ff +_080A908C: .4byte 0xfffffc00 +_080A9090: .4byte sub_80A911C + thumb_func_end sub_80A901C + + thumb_func_start sub_80A9094 +sub_80A9094: @ 80A9094 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x26] + subs r0, 0x2 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _080A90CA + movs r0, 0x10 + strh r0, [r4, 0x2E] + movs r0, 0 + strh r0, [r4, 0x30] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0x2E] + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080A90D0 @ =sub_80A90D4 + str r0, [r4, 0x1C] +_080A90CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A90D0: .4byte sub_80A90D4 + thumb_func_end sub_80A9094 + + thumb_func_start sub_80A90D4 +sub_80A90D4: @ 80A90D4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r1, r0, 0x1 + strh r1, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080A9112 + ldrh r1, [r4, 0x2E] + subs r1, 0x1 + strh r1, [r4, 0x2E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9112 + ldr r0, _080A9118 @ =sub_80A911C + str r0, [r4, 0x1C] +_080A9112: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9118: .4byte sub_80A911C + thumb_func_end sub_80A90D4 + + thumb_func_start sub_80A911C +sub_80A911C: @ 80A911C + push {lr} + adds r3, r0, 0 + ldr r0, _080A9144 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080A9148 @ =0x0000ffff + cmp r1, r0 + bne _080A9154 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x3C + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080A9150 + ldr r0, _080A914C @ =sub_80A915C + b _080A9152 + .align 2, 0 +_080A9144: .4byte gUnknown_2037F02 +_080A9148: .4byte 0x0000ffff +_080A914C: .4byte sub_80A915C +_080A9150: + ldr r0, _080A9158 @ =sub_8072740 +_080A9152: + str r0, [r3, 0x1C] +_080A9154: + pop {r0} + bx r0 + .align 2, 0 +_080A9158: .4byte sub_8072740 + thumb_func_end sub_80A911C + + thumb_func_start sub_80A915C +sub_80A915C: @ 80A915C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A915C + + thumb_func_start sub_80A917C +sub_80A917C: @ 80A917C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A91AC @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x8] + ldr r2, _080A91B0 @ =gUnknown_83E4128 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080A91B4 @ =sub_80A91B8 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A91AC: .4byte gUnknown_3005090 +_080A91B0: .4byte gUnknown_83E4128 +_080A91B4: .4byte sub_80A91B8 + thumb_func_end sub_80A917C + + thumb_func_start sub_80A91B8 +sub_80A91B8: @ 80A91B8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A9208 @ =gUnknown_3005090 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + bne _080A9202 + ldr r2, _080A920C @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x26] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, 0 + bl sub_8072760 +_080A9202: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9208: .4byte gUnknown_3005090 +_080A920C: .4byte gUnknown_202063C + thumb_func_end sub_80A91B8 + + thumb_func_start sub_80A9210 +sub_80A9210: @ 80A9210 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080A9244 @ =gUnknown_3005090 + adds r4, r1, r0 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r0, 0x3 + strh r0, [r4, 0x20] + ldr r0, _080A9248 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080A9250 + ldr r0, _080A924C @ =0x0000ffff + strh r0, [r4, 0x22] + movs r0, 0x8 + b _080A9256 + .align 2, 0 +_080A9244: .4byte gUnknown_3005090 +_080A9248: .4byte gUnknown_2037F1B +_080A924C: .4byte 0x0000ffff +_080A9250: + movs r0, 0x1 + strh r0, [r4, 0x22] + ldr r0, _080A9270 @ =0x0000fff8 +_080A9256: + strh r0, [r4, 0x24] + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080A9274 @ =sub_80A9278 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9270: .4byte 0x0000fff8 +_080A9274: .4byte sub_80A9278 + thumb_func_end sub_80A9210 + + thumb_func_start sub_80A9278 +sub_80A9278: @ 80A9278 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A929C @ =gUnknown_3005090 + adds r3, r0, r1 + movs r0, 0x8 + ldrsh r4, [r3, r0] + cmp r4, 0x1 + beq _080A92CC + cmp r4, 0x1 + bgt _080A92A0 + cmp r4, 0 + beq _080A92AA + b _080A9392 + .align 2, 0 +_080A929C: .4byte gUnknown_3005090 +_080A92A0: + cmp r4, 0x2 + beq _080A9348 + cmp r4, 0x3 + beq _080A9362 + b _080A9392 +_080A92AA: + ldr r2, _080A92C8 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x24] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + strh r4, [r3, 0xA] + strh r4, [r3, 0xC] + strh r4, [r3, 0xE] + b _080A935A + .align 2, 0 +_080A92C8: .4byte gUnknown_202063C +_080A92CC: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A9392 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + ands r0, r4 + lsls r0, 16 + cmp r0, 0 + beq _080A9304 + ldr r2, _080A9300 @ =gUnknown_202063C + movs r4, 0x26 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + adds r1, 0x6 + b _080A9316 + .align 2, 0 +_080A9300: .4byte gUnknown_202063C +_080A9304: + ldr r2, _080A9344 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + subs r1, 0x6 +_080A9316: + strh r1, [r0, 0x24] + ldrh r0, [r3, 0xE] + adds r0, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080A9392 + ldrh r1, [r3, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A935A + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x24] + subs r0, 0x6 + strh r0, [r1, 0x24] + b _080A935A + .align 2, 0 +_080A9344: .4byte gUnknown_202063C +_080A9348: + ldrh r0, [r3, 0x20] + subs r0, 0x1 + strh r0, [r3, 0x20] + lsls r0, 16 + cmp r0, 0 + beq _080A935A + movs r0, 0 + strh r0, [r3, 0x8] + b _080A9392 +_080A935A: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080A9392 +_080A9362: + ldr r2, _080A9398 @ =gUnknown_202063C + movs r4, 0x26 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x22] + ldrh r4, [r0, 0x24] + adds r1, r4 + strh r1, [r0, 0x24] + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x24 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A9392 + adds r0, r5, 0 + bl sub_8072760 +_080A9392: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9398: .4byte gUnknown_202063C + thumb_func_end sub_80A9278 + + thumb_func_start sub_80A939C +sub_80A939C: @ 80A939C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A93D8 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r0, 0x1 + strh r0, [r4, 0x10] + movs r0, 0xE + strh r0, [r4, 0x22] + movs r0, 0x2 + strh r0, [r4, 0x24] + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080A93DC @ =sub_80A93E0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A93D8: .4byte gUnknown_3005090 +_080A93DC: .4byte sub_80A93E0 + thumb_func_end sub_80A939C + + thumb_func_start sub_80A93E0 +sub_80A93E0: @ 80A93E0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A9434 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r2, [r4, r0] + cmp r2, 0 + bne _080A94A6 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x10 + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _080A94A6 + strh r2, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080A943C + ldr r3, _080A9438 @ =gUnknown_202063C + movs r6, 0x26 + ldrsh r1, [r4, r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + b _080A9452 + .align 2, 0 +_080A9434: .4byte gUnknown_3005090 +_080A9438: .4byte gUnknown_202063C +_080A943C: + ldr r3, _080A9484 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 +_080A9452: + strb r1, [r0] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + movs r2, 0 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r6, 0x22 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080A94A6 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + movs r6, 0x24 + ldrsh r1, [r4, r6] + cmp r0, r1 + bge _080A9488 + strh r2, [r4, 0xA] + strh r2, [r4, 0xC] + strh r2, [r4, 0xE] + b _080A94A6 + .align 2, 0 +_080A9484: .4byte gUnknown_202063C +_080A9488: + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r5, 0 + bl sub_8072760 +_080A94A6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A93E0 + + thumb_func_start sub_80A94AC +sub_80A94AC: @ 80A94AC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080A94FC @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + movs r1, 0x4 + strh r1, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + strh r0, [r4, 0x12] + strh r0, [r4, 0x14] + strh r0, [r4, 0x16] + strh r0, [r4, 0x18] + strh r0, [r4, 0x22] + ldr r5, _080A9500 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080A9504 @ =sub_80A9508 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A94FC: .4byte gUnknown_3005090 +_080A9500: .4byte gUnknown_2037F1A +_080A9504: .4byte sub_80A9508 + thumb_func_end sub_80A94AC + + thumb_func_start sub_80A9508 +sub_80A9508: @ 80A9508 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080A952C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x18 + ldrsh r2, [r4, r0] + cmp r2, 0x1 + beq _080A9574 + cmp r2, 0x1 + bgt _080A9530 + cmp r2, 0 + beq _080A9536 + b _080A9590 + .align 2, 0 +_080A952C: .4byte gUnknown_3005090 +_080A9530: + cmp r2, 0x2 + beq _080A958C + b _080A9590 +_080A9536: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080A9590 + strh r2, [r4, 0x10] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + movs r1, 0x1 + ands r0, r1 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x14] + adds r0, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080A9590 + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A956E + strh r2, [r4, 0x14] + movs r0, 0x1 + strh r0, [r4, 0x18] + b _080A9590 +_080A956E: + movs r0, 0x2 + strh r0, [r4, 0x18] + b _080A9590 +_080A9574: + movs r1, 0 + strh r1, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080A9590 + strh r2, [r4, 0x16] + strh r1, [r4, 0x18] + b _080A9590 +_080A958C: + movs r0, 0x1 + strh r0, [r4, 0x12] +_080A9590: + movs r2, 0x8 + ldrsh r5, [r4, r2] + cmp r5, 0 + beq _080A959E + cmp r5, 0x1 + beq _080A9634 + b _080A9642 +_080A959E: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080A9642 + strh r5, [r4, 0xA] + ldr r0, _080A9628 @ =gUnknown_83E4154 + movs r3, 0x24 + ldrsh r1, [r4, r3] + movs r3, 0x26 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080A9642 + ldr r0, _080A962C @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + strh r6, [r1, 0x2E] + movs r0, 0xD + strh r0, [r1, 0x30] + ldr r2, _080A9630 @ =gUnknown_83E416C + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1, 0x24] + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r2, 0x1 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080A9642 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A9642 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080A9642 + .align 2, 0 +_080A9628: .4byte gUnknown_83E4154 +_080A962C: .4byte gUnknown_202063C +_080A9630: .4byte gUnknown_83E416C +_080A9634: + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9642 + adds r0, r6, 0 + bl sub_8072760 +_080A9642: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80A9508 + + thumb_func_start sub_80A9648 +sub_80A9648: @ 80A9648 + push {r4,lr} + adds r3, r0, 0 + ldr r4, _080A96B0 @ =gUnknown_3005090 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + movs r2, 0x1 + ldrb r1, [r0, 0x12] + ands r1, r2 + lsls r1, 2 + mov r0, r12 + ldrb r2, [r0] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080A96AA + movs r0, 0x30 + ldrsh r1, [r3, r0] + lsls r1, 1 + movs r0, 0x2E + ldrsh r2, [r3, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x8 + adds r1, r0 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r3, 0 + bl sub_8007280 +_080A96AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A96B0: .4byte gUnknown_3005090 + thumb_func_end sub_80A9648 + + thumb_func_start sub_80A96B4 +sub_80A96B4: @ 80A96B4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080A9750 @ =0x000027de + bl sub_80089E8 + mov r1, sp + strb r0, [r1] + movs r4, 0x1 + ldr r0, _080A9754 @ =0x00002710 + adds r5, r0, 0 +_080A96CC: + subs r0, r5, r4 + lsls r0, 16 + lsrs r0, 16 + bl sub_80089B8 + mov r2, sp + adds r1, r2, r4 + strb r0, [r1] + adds r4, 0x1 + cmp r4, 0x2 + ble _080A96CC + movs r0, 0x80 + lsls r0, 6 + bl sub_8002BB0 + adds r1, r0, 0 + ldr r0, _080A9758 @ =gUnknown_202401C + ldr r0, [r0] + movs r2, 0xBE + lsls r2, 1 + adds r0, r2 + str r1, [r0] + ldr r0, _080A975C @ =gUnknown_8D227E4 + bl sub_800EBB4 + movs r4, 0 +_080A9700: + ldr r5, _080A9758 @ =gUnknown_202401C + ldr r0, [r5] + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + lsls r1, r4, 6 + ldr r0, [r0] + adds r0, r1 + mov r2, sp + adds r1, r2, r4 + ldrb r1, [r1] + lsls r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + adds r4, 0x1 + cmp r4, 0x2 + ble _080A9700 + ldr r0, [r5] + movs r4, 0xBE + lsls r4, 1 + adds r0, r4 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + str r1, [r0] + adds r0, r6, 0 + bl sub_8072760 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9750: .4byte 0x000027de +_080A9754: .4byte 0x00002710 +_080A9758: .4byte gUnknown_202401C +_080A975C: .4byte gUnknown_8D227E4 + thumb_func_end sub_80A96B4 + + thumb_func_start sub_80A9760 +sub_80A9760: @ 80A9760 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080A9784 @ =gUnknown_83E41C8 + movs r4, 0x2 +_080A976A: + ldrh r0, [r5] + bl sub_8008A30 + adds r5, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080A976A + adds r0, r6, 0 + bl sub_8072760 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9784: .4byte gUnknown_83E41C8 + thumb_func_end sub_80A9760 + + thumb_func_start sub_80A9788 +sub_80A9788: @ 80A9788 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsls r2, 24 + lsrs r3, r2, 24 + movs r0, 0x1 + ands r3, r0 + negs r0, r3 + orrs r0, r3 + asrs r0, 31 + movs r3, 0x20 + ands r0, r3 + ldrh r4, [r5, 0x4] + lsls r3, r4, 22 + lsrs r3, 22 + lsrs r1, 22 + adds r0, r1 + adds r3, r0 + ldr r1, _080A97DC @ =0x000003ff + adds r0, r1, 0 + ands r3, r0 + ldr r0, _080A97E0 @ =0xfffffc00 + ands r0, r4 + orrs r0, r3 + strh r0, [r5, 0x4] + ldr r0, _080A97E4 @ =gUnknown_83E41C8 + lsrs r2, 25 + lsls r2, 1 + adds r2, r0 + ldrh r0, [r2] + bl sub_80089E8 + lsls r0, 4 + ldrb r2, [r5, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A97DC: .4byte 0x000003ff +_080A97E0: .4byte 0xfffffc00 +_080A97E4: .4byte gUnknown_83E41C8 + thumb_func_end sub_80A9788 + + thumb_func_start sub_80A97E8 +sub_80A97E8: @ 80A97E8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8075160 + ldr r6, _080A9850 @ =gUnknown_2037F1A + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080A9808 + ldr r1, _080A9854 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080A9808: + ldr r4, _080A9854 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldr r0, _080A9858 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080A985C @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldrb r1, [r4, 0xA] + ldrb r2, [r4, 0xC] + adds r0, r5, 0 + bl sub_80A9788 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9850: .4byte gUnknown_2037F1A +_080A9854: .4byte gUnknown_2037F02 +_080A9858: .4byte sub_8075590 +_080A985C: .4byte sub_8072740 + thumb_func_end sub_80A97E8 + + thumb_func_start sub_80A9860 +sub_80A9860: @ 80A9860 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A987A + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 +_080A987A: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x32] + lsls r0, r2, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x7 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + subs r2, 0x80 + strh r2, [r4, 0x32] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x3C + bne _080A98AA + adds r0, r4, 0 + bl sub_8072740 +_080A98AA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A9860 + + thumb_func_start sub_80A98B0 +sub_80A98B0: @ 80A98B0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8073788 + lsls r0, 24 + movs r6, 0xF0 + cmp r0, 0 + beq _080A98C4 + movs r6, 0x98 +_080A98C4: + movs r5, 0 + ldr r1, _080A9918 @ =gUnknown_2022984 + strh r6, [r1] + ldr r4, _080A991C @ =gUnknown_2022986 + movs r0, 0xA0 + strh r0, [r4] + ldrh r1, [r1] + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x44 + bl sub_8000A38 + ldr r1, _080A9920 @ =0x00003f1f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080A9924 @ =0x00003f3f + movs r0, 0x4A + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xC8 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x10 + bl sub_8000A38 + ldr r1, _080A9928 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + strh r6, [r0, 0xA] + ldr r1, _080A992C @ =sub_80A9930 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A9918: .4byte gUnknown_2022984 +_080A991C: .4byte gUnknown_2022986 +_080A9920: .4byte 0x00003f1f +_080A9924: .4byte 0x00003f3f +_080A9928: .4byte gUnknown_3005090 +_080A992C: .4byte sub_80A9930 + thumb_func_end sub_80A98B0 + + thumb_func_start sub_80A9930 +sub_80A9930: @ 80A9930 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A9964 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r3, r1, r2 + ldrh r0, [r3, 0x8] + adds r4, r0, 0 + adds r4, 0xD + strh r4, [r3, 0x8] + ldrh r0, [r3, 0xA] + adds r2, r0, 0 + subs r2, 0xD + strh r2, [r3, 0xA] + lsls r1, r4, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _080A9970 + ldr r0, _080A9968 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080A996C @ =sub_80A9984 + str r0, [r3] + b _080A9978 + .align 2, 0 +_080A9964: .4byte gUnknown_3005090 +_080A9968: .4byte gUnknown_2022984 +_080A996C: .4byte sub_80A9984 +_080A9970: + ldr r1, _080A9980 @ =gUnknown_2022984 + lsls r0, r4, 8 + orrs r2, r0 + strh r2, [r1] +_080A9978: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9980: .4byte gUnknown_2022984 + thumb_func_end sub_80A9930 + + thumb_func_start sub_80A9984 +sub_80A9984: @ 80A9984 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080A99D0 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + movs r4, 0 + strh r0, [r1, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080A99D8 + movs r0, 0x88 + strh r0, [r1, 0x1E] + movs r0, 0x50 + movs r1, 0x88 + bl sub_8000A38 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + ldr r2, _080A99D4 @ =0x00007fff + movs r1, 0x10 + bl sub_80714D4 + b _080A9A0C + .align 2, 0 +_080A99D0: .4byte gUnknown_3005090 +_080A99D4: .4byte 0x00007fff +_080A99D8: + cmp r0, 0x4 + ble _080A9A0C + ldr r0, _080A9A14 @ =gUnknown_2022984 + strh r4, [r0] + ldr r0, _080A9A18 @ =gUnknown_2022986 + strh r4, [r0] + ldr r4, _080A9A1C @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8072760 +_080A9A0C: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9A14: .4byte gUnknown_2022984 +_080A9A18: .4byte gUnknown_2022986 +_080A9A1C: .4byte 0x00003f3f + thumb_func_end sub_80A9984 + + thumb_func_start sub_80A9A20 +sub_80A9A20: @ 80A9A20 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A9A70 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A9A7C + movs r0, 0x1 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A9A74 @ =gUnknown_83E4200 + adds r0, r5, 0 + bl sub_80762D0 + ldr r1, _080A9A78 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + movs r1, 0x4 + strh r1, [r0, 0x24] + b _080A9AA4 + .align 2, 0 +_080A9A70: .4byte gUnknown_3005090 +_080A9A74: .4byte gUnknown_83E4200 +_080A9A78: .4byte gUnknown_202063C +_080A9A7C: + ldr r1, _080A9AAC @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + adds r0, r5, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A9AA4 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r6, 0 + bl sub_8072760 +_080A9AA4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9AAC: .4byte gUnknown_202063C + thumb_func_end sub_80A9A20 + + thumb_func_start sub_80A9AB0 +sub_80A9AB0: @ 80A9AB0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A9B00 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080A9B0C + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080A9B04 @ =gUnknown_83E4200 + adds r0, r5, 0 + bl sub_80762D0 + ldr r1, _080A9B08 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + movs r1, 0x4 + strh r1, [r0, 0x24] + b _080A9B34 + .align 2, 0 +_080A9B00: .4byte gUnknown_3005090 +_080A9B04: .4byte gUnknown_83E4200 +_080A9B08: .4byte gUnknown_202063C +_080A9B0C: + ldr r1, _080A9B3C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + adds r0, r5, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080A9B34 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r6, 0 + bl sub_8072760 +_080A9B34: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9B3C: .4byte gUnknown_202063C + thumb_func_end sub_80A9AB0 + + thumb_func_start sub_80A9B40 +sub_80A9B40: @ 80A9B40 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0x5F + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080A9B84 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + ldr r0, _080A9B88 @ =sub_80A9B8C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9B84: .4byte gUnknown_2037F1B +_080A9B88: .4byte sub_80A9B8C + thumb_func_end sub_80A9B40 + + thumb_func_start sub_80A9B8C +sub_80A9B8C: @ 80A9B8C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080A9BB6 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl sub_8044E30 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080A9BBC +_080A9BB6: + adds r0, r4, 0 + bl sub_8072740 +_080A9BBC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A9B8C + + thumb_func_start sub_80A9BC4 +sub_80A9BC4: @ 80A9BC4 + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080A9BE8 + ldr r1, _080A9BE4 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x32] + adds r0, r2, 0x1 + strh r0, [r4, 0x2E] + b _080A9C44 + .align 2, 0 +_080A9BE4: .4byte gUnknown_2037F02 +_080A9BE8: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x64 + ble _080A9C36 + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080A9C36: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _080A9C44 + adds r0, r4, 0 + bl sub_8072740 +_080A9C44: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A9BC4 + + thumb_func_start sub_80A9C4C +sub_80A9C4C: @ 80A9C4C + push {lr} + ldr r2, _080A9C70 @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r0, 0x20] + movs r1, 0xA0 + strh r1, [r0, 0x22] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x2E] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x30] + ldr r1, _080A9C74 @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080A9C78 @ =sub_80A9C7C + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080A9C70: .4byte gUnknown_2037F02 +_080A9C74: .4byte sub_8074C44 +_080A9C78: .4byte sub_80A9C7C + thumb_func_end sub_80A9C4C + + thumb_func_start sub_80A9C7C +sub_80A9C7C: @ 80A9C7C + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + lsls r0, 16 + lsrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + lsls r0, 16 + asrs r5, r0, 16 + cmp r5, 0x48 + bgt _080A9CE2 + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + cmp r5, 0x40 + bgt _080A9CE2 + adds r0, r4, 0 + bl sub_8072740 +_080A9CE2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A9C7C + + thumb_func_start sub_80A9CE8 +sub_80A9CE8: @ 80A9CE8 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A9DA0 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x3 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A9D2A + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080A9D2A: + ldr r0, _080A9DA4 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r4, _080A9DA8 @ =gUnknown_202297A + strh r1, [r4] + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x16 + bl sub_8000A38 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080A9DAC @ =gUnknown_8D23F4C + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080A9DB0 @ =gUnknown_8D234B4 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080A9DB4 @ =gUnknown_8D23F24 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A9D88 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080A9D88: + ldr r0, _080A9DB8 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080A9DBC @ =sub_80A9DC0 + str r0, [r1] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9DA0: .4byte 0x00003f42 +_080A9DA4: .4byte gUnknown_2022978 +_080A9DA8: .4byte gUnknown_202297A +_080A9DAC: .4byte gUnknown_8D23F4C +_080A9DB0: .4byte gUnknown_8D234B4 +_080A9DB4: .4byte gUnknown_8D23F24 +_080A9DB8: .4byte gUnknown_3005090 +_080A9DBC: .4byte sub_80A9DC0 + thumb_func_end sub_80A9CE8 + + thumb_func_start sub_80A9DC0 +sub_80A9DC0: @ 80A9DC0 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A9DE8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bls _080A9DDE + b _080A9F08 +_080A9DDE: + lsls r0, 2 + ldr r1, _080A9DEC @ =_080A9DF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A9DE8: .4byte gUnknown_3005090 +_080A9DEC: .4byte _080A9DF0 + .align 2, 0 +_080A9DF0: + .4byte _080A9E04 + .4byte _080A9E48 + .4byte _080A9E6A + .4byte _080A9EAE + .4byte _080A9ED4 +_080A9E04: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A9F08 + strh r5, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080A9F08 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080A9F08 +_080A9E48: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8D + bne _080A9F08 + movs r0, 0x10 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080A9F08 +_080A9E6A: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080A9F08 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080A9F08 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080A9F08 +_080A9EAE: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + ldr r1, _080A9ED0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x20] + adds r1, 0x1 + strh r1, [r0, 0x20] + b _080A9F08 + .align 2, 0 +_080A9ED0: .4byte gUnknown_3005090 +_080A9ED4: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A9EE8 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080A9EE8: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + adds r0, r4, 0 + bl sub_8072760 +_080A9F08: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A9DC0 + + thumb_func_start sub_80A9F10 +sub_80A9F10: @ 80A9F10 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A9F88 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080A9F52 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080A9F52: + ldr r0, _080A9F8C @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r4, _080A9F90 @ =gUnknown_202297A + strh r1, [r4] + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x16 + bl sub_8000A38 + mov r0, sp + bl sub_80752A0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A9F98 + ldr r0, _080A9F94 @ =gUnknown_8E7F874 + ldr r1, [sp, 0x4] + bl sub_800EBC0 + b _080A9FC6 + .align 2, 0 +_080A9F88: .4byte 0x00003f42 +_080A9F8C: .4byte gUnknown_2022978 +_080A9F90: .4byte gUnknown_202297A +_080A9F94: .4byte gUnknown_8E7F874 +_080A9F98: + ldr r0, _080A9FB4 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A9FBC + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080A9FB8 @ =gUnknown_8E7F4AC + bl sub_807543C + b _080A9FC6 + .align 2, 0 +_080A9FB4: .4byte gUnknown_2037F1B +_080A9FB8: .4byte gUnknown_8E7F4AC +_080A9FBC: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AA010 @ =gUnknown_8E7F690 + bl sub_807543C +_080A9FC6: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AA014 @ =gUnknown_8D24BCC + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080AA018 @ =gUnknown_8D24BA4 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080A9FFA + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080A9FFA: + ldr r0, _080AA01C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080AA020 @ =sub_80AA024 + str r0, [r1] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA010: .4byte gUnknown_8E7F690 +_080AA014: .4byte gUnknown_8D24BCC +_080AA018: .4byte gUnknown_8D24BA4 +_080AA01C: .4byte gUnknown_3005090 +_080AA020: .4byte sub_80AA024 + thumb_func_end sub_80A9F10 + + thumb_func_start sub_80AA024 +sub_80AA024: @ 80AA024 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080AA04C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bls _080AA042 + b _080AA168 +_080AA042: + lsls r0, 2 + ldr r1, _080AA050 @ =_080AA054 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AA04C: .4byte gUnknown_3005090 +_080AA050: .4byte _080AA054 + .align 2, 0 +_080AA054: + .4byte _080AA068 + .4byte _080AA0AC + .4byte _080AA0CE + .4byte _080AA112 + .4byte _080AA134 +_080AA068: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080AA168 + strh r5, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0xE + bne _080AA168 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080AA168 +_080AA0AC: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080AA168 + movs r0, 0xE + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080AA168 +_080AA0CE: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080AA168 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080AA168 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080AA168 +_080AA112: + mov r0, sp + bl sub_80752A0 + movs r0, 0x1 + bl sub_8075358 + movs r0, 0x2 + bl sub_8075358 + ldr r0, _080AA170 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] +_080AA134: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AA148 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080AA148: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + adds r0, r4, 0 + bl sub_8072760 +_080AA168: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA170: .4byte gUnknown_3005090 + thumb_func_end sub_80AA024 + + thumb_func_start sub_80AA174 +sub_80AA174: @ 80AA174 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080AA1C8 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080AA1CC @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrb r0, [r5] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x3C] + ldr r1, _080AA1D0 @ =sub_80AA1D4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA1C8: .4byte gUnknown_2037F1A +_080AA1CC: .4byte gUnknown_2037F02 +_080AA1D0: .4byte sub_80AA1D4 + thumb_func_end sub_80AA174 + + thumb_func_start sub_80AA1D4 +sub_80AA1D4: @ 80AA1D4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080AA1EA + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + b _080AA1EE +_080AA1EA: + ldrh r0, [r4, 0x3C] + subs r0, 0x1 +_080AA1EE: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r2, 0x30 + ldrsh r0, [r4, r2] + ldrh r1, [r4, 0x34] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x9 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r3, 0x38 + ldrsh r2, [r4, r3] + cmp r2, 0 + beq _080AA260 + cmp r2, 0x1 + bne _080AA290 + ldr r1, _080AA258 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r4, 0x32] + adds r0, r2 + strh r0, [r4, 0x32] + ldr r3, _080AA25C @ =0xffffff00 + adds r0, r3, 0 + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x2E + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080AA290 + movs r0, 0x2 + strh r0, [r4, 0x38] + b _080AA2A0 + .align 2, 0 +_080AA258: .4byte 0xfffffc00 +_080AA25C: .4byte 0xffffff00 +_080AA260: + movs r3, 0x80 + lsls r3, 3 + adds r0, r3, 0 + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + movs r3, 0x80 + lsls r3, 1 + adds r0, r3, 0 + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x2E + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080AA290 + strh r2, [r4, 0x36] + movs r0, 0x1 + strh r0, [r4, 0x38] +_080AA290: + ldr r0, _080AA2A8 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080AA2AC @ =0x0000ffff + cmp r1, r0 + bne _080AA2A0 + adds r0, r4, 0 + bl sub_8072740 +_080AA2A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA2A8: .4byte gUnknown_2037F02 +_080AA2AC: .4byte 0x0000ffff + thumb_func_end sub_80AA1D4 + + thumb_func_start sub_80AA2B0 +sub_80AA2B0: @ 80AA2B0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080AA2F8 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080AA2FC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl sub_8044E30 + strh r0, [r5, 0x2E] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0x7 + bl sub_8044E4C + strh r0, [r5, 0x30] + ldr r0, _080AA300 @ =sub_80AA304 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA2F8: .4byte gUnknown_2037F1A +_080AA2FC: .4byte gUnknown_2037F02 +_080AA300: .4byte sub_80AA304 + thumb_func_end sub_80AA2B0 + + thumb_func_start sub_80AA304 +sub_80AA304: @ 80AA304 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x30] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] + movs r1, 0x20 + ldrsh r0, [r2, r1] + movs r3, 0x24 + ldrsh r1, [r2, r3] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080AA342 + movs r0, 0x22 + ldrsh r1, [r2, r0] + movs r3, 0x26 + ldrsh r0, [r2, r3] + adds r1, r0 + cmp r1, 0xA0 + bgt _080AA342 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080AA348 +_080AA342: + adds r0, r2, 0 + bl sub_8072740 +_080AA348: + pop {r0} + bx r0 + thumb_func_end sub_80AA304 + + thumb_func_start sub_80AA34C +sub_80AA34C: @ 80AA34C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x30] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x34] + adds r1, r0, 0x1 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _080AA378 + adds r0, r2, 0 + bl sub_8072740 +_080AA378: + pop {r0} + bx r0 + thumb_func_end sub_80AA34C + + thumb_func_start sub_80AA37C +sub_80AA37C: @ 80AA37C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080AA3C8 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080AA3CC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl sub_8044E30 + strh r0, [r5, 0x2E] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0x7 + bl sub_8044E4C + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x32] + ldr r0, _080AA3D0 @ =sub_80AA34C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA3C8: .4byte gUnknown_2037F1A +_080AA3CC: .4byte gUnknown_2037F02 +_080AA3D0: .4byte sub_80AA34C + thumb_func_end sub_80AA37C + + thumb_func_start sub_80AA3D4 +sub_80AA3D4: @ 80AA3D4 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AA3EA + adds r0, r2, 0 + bl sub_8072740 +_080AA3EA: + pop {r0} + bx r0 + thumb_func_end sub_80AA3D4 + + thumb_func_start sub_80AA3F0 +sub_80AA3F0: @ 80AA3F0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080AA404 @ =sub_80AA3D4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA404: .4byte sub_80AA3D4 + thumb_func_end sub_80AA3F0 + + thumb_func_start sub_80AA408 +sub_80AA408: @ 80AA408 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA426 + ldr r0, _080AA498 @ =gUnknown_2037F02 + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_080AA426: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r2, 0x2E + ldrsh r1, [r4, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r5, r0, 1 + movs r0, 0xFF + ands r5, r0 + adds r0, r5, 0 + movs r1, 0x50 + bl sub_8044E30 + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4F + bgt _080AA46A + adds r0, r5, 0 + movs r1, 0x50 + bl sub_8044E4C + movs r2, 0x2E + ldrsh r1, [r4, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + lsls r0, 16 + asrs r0, 24 + adds r1, r0 + strh r1, [r4, 0x26] +_080AA46A: + movs r0, 0x2E + ldrsh r2, [r4, r0] + cmp r2, 0x5A + ble _080AA488 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r0, [r4, 0x24] + subs r0, r1 + strh r0, [r4, 0x24] +_080AA488: + cmp r2, 0x64 + ble _080AA492 + adds r0, r4, 0 + bl sub_8072740 +_080AA492: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA498: .4byte gUnknown_2037F02 + thumb_func_end sub_80AA408 + + thumb_func_start sub_80AA49C +sub_80AA49C: @ 80AA49C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x14 + ble _080AA4F2 + adds r1, r0, 0 + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AA4F2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x1E + ble _080AA500 + adds r0, r4, 0 + bl sub_8072740 +_080AA500: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AA49C + + thumb_func_start sub_80AA508 +sub_80AA508: @ 80AA508 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA52C + ldr r1, _080AA528 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x32] + adds r0, r2, 0x1 + strh r0, [r4, 0x2E] + b _080AA580 + .align 2, 0 +_080AA528: .4byte gUnknown_2037F02 +_080AA52C: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + movs r5, 0 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E30 + adds r2, r0, 0 + strh r2, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x46 + ble _080AA580 + ldr r0, _080AA588 @ =sub_80AA49C + str r0, [r4, 0x1C] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r0, r2, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x24] + strh r5, [r4, 0x26] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB4 + bl __umodsi3 + strh r0, [r4, 0x34] +_080AA580: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA588: .4byte sub_80AA49C + thumb_func_end sub_80AA508 + + thumb_func_start sub_80AA58C +sub_80AA58C: @ 80AA58C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA5C6 + ldr r1, _080AA688 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + ldr r0, _080AA68C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r0, 0x1 + strh r0, [r4, 0x32] +_080AA5C6: + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r0, r2 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r1, r0, 2 + adds r0, r1, 0 + cmp r1, 0 + bge _080AA5DC + adds r0, 0xFF +_080AA5DC: + asrs r0, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080AA5EE + movs r0, 0 + strh r0, [r4, 0x30] +_080AA5EE: + movs r0, 0x30 + ldrsh r2, [r4, r0] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080AA5FC + adds r0, 0x3 +_080AA5FC: + asrs r0, 2 + movs r1, 0x1E + subs r1, r0 + adds r0, r2, 0 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r0, 0x30 + ldrsh r2, [r4, r0] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080AA618 + adds r0, 0x7 +_080AA618: + asrs r0, 3 + movs r1, 0xA + subs r1, r0 + adds r0, r2, 0 + bl sub_8044E30 + strh r0, [r4, 0x26] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0x80 + ble _080AA63C + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080AA63C + ldr r0, _080AA690 @ =0x0000ffff + strh r0, [r4, 0x32] +_080AA63C: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA650 + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + bge _080AA650 + movs r0, 0x1 + strh r0, [r4, 0x32] +_080AA650: + ldrh r0, [r4, 0x34] + adds r1, r0, 0x1 + strh r1, [r4, 0x34] + subs r0, 0x9 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x46 + bls _080AA694 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080AA6A2 + .align 2, 0 +_080AA688: .4byte gUnknown_2037F02 +_080AA68C: .4byte gUnknown_2037F1B +_080AA690: .4byte 0x0000ffff +_080AA694: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080AA6A2: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x5A + ble _080AA6B0 + adds r0, r4, 0 + bl sub_8072740 +_080AA6B0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AA58C + + thumb_func_start sub_80AA6B8 +sub_80AA6B8: @ 80AA6B8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA6EC + ldr r1, _080AA6E8 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrb r1, [r1, 0x4] + adds r0, r4, 0 + bl sub_800838C + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080AA700 + .align 2, 0 +_080AA6E8: .4byte gUnknown_2037F02 +_080AA6EC: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AA700 + adds r0, r4, 0 + bl sub_8072740 +_080AA700: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AA6B8 + + thumb_func_start sub_80AA708 +sub_80AA708: @ 80AA708 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _080AA720 @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AA724 + adds r0, r5, 0 + bl sub_8072740 + b _080AA788 + .align 2, 0 +_080AA720: .4byte gUnknown_2037F02 +_080AA724: + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AA734 + ldr r4, _080AA730 @ =gUnknown_2037F1A + b _080AA736 + .align 2, 0 +_080AA730: .4byte gUnknown_2037F1A +_080AA734: + ldr r4, _080AA764 @ =gUnknown_2037F1B +_080AA736: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080AA768 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r1, [r0, r2] + adds r2, r0, 0 + cmp r1, 0 + bne _080AA76C + ldrh r0, [r5, 0x20] + adds r0, 0x20 + b _080AA770 + .align 2, 0 +_080AA764: .4byte gUnknown_2037F1B +_080AA768: .4byte gUnknown_2037F02 +_080AA76C: + ldrh r0, [r5, 0x20] + subs r0, 0x20 +_080AA770: + strh r0, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x2E] + ldrh r1, [r2, 0x2] + strh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080AA790 @ =sub_80AA794 + str r0, [r5, 0x1C] +_080AA788: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA790: .4byte sub_80AA794 + thumb_func_end sub_80AA708 + + thumb_func_start sub_80AA794 +sub_80AA794: @ 80AA794 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AA7C4 + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + cmp r0, 0 + beq _080AA7BE + ldrh r1, [r2, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl sub_800838C + b _080AA7C4 +_080AA7BE: + adds r0, r2, 0 + bl sub_8072740 +_080AA7C4: + pop {r0} + bx r0 + thumb_func_end sub_80AA794 + + thumb_func_start sub_80AA7C8 +sub_80AA7C8: @ 80AA7C8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080AA7FC @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _080AA800 @ =gUnknown_3005090 + adds r4, r0 + ldr r2, _080AA804 @ =gUnknown_83E4410 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080AA808 @ =sub_80AA80C + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA7FC: .4byte gUnknown_2037F02 +_080AA800: .4byte gUnknown_3005090 +_080AA804: .4byte gUnknown_83E4410 +_080AA808: .4byte sub_80AA80C + thumb_func_end sub_80AA7C8 + + thumb_func_start sub_80AA80C +sub_80AA80C: @ 80AA80C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080AA834 @ =gUnknown_3005090 + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080AA82C + adds r0, r4, 0 + bl sub_8072760 +_080AA82C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA834: .4byte gUnknown_3005090 + thumb_func_end sub_80AA80C + + thumb_func_start sub_80AA838 +sub_80AA838: @ 80AA838 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080AA84C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AA854 + ldr r0, _080AA850 @ =gUnknown_2037F1A + b _080AA856 + .align 2, 0 +_080AA84C: .4byte gUnknown_2037F02 +_080AA850: .4byte gUnknown_2037F1A +_080AA854: + ldr r0, _080AA8EC @ =gUnknown_2037F1B +_080AA856: + ldrb r6, [r0] + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AA870 + ldr r1, _080AA8F0 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080AA870: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r7, _080AA8F0 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r3, [r7, 0x2] + adds r0, r3 + movs r4, 0 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r7, 0x4] + adds r0, r1 + strh r0, [r5, 0x22] + strh r4, [r5, 0x2E] + ldrh r1, [r5, 0x20] + lsls r1, 3 + strh r1, [r5, 0x30] + lsls r0, 3 + strh r0, [r5, 0x32] + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 3 + cmp r0, 0 + bge _080AA8B0 + adds r0, 0x7 +_080AA8B0: + asrs r0, 3 + strh r0, [r5, 0x34] + movs r3, 0x4 + ldrsh r0, [r7, r3] + lsls r0, 3 + cmp r0, 0 + bge _080AA8C0 + adds r0, 0x7 +_080AA8C0: + asrs r0, 3 + strh r0, [r5, 0x36] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x6 + ldrsh r0, [r7, r3] + lsls r0, 4 + adds r1, r0 + ldr r3, _080AA8F4 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080AA8F8 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, _080AA8FC @ =sub_80AA900 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AA8EC: .4byte gUnknown_2037F1B +_080AA8F0: .4byte gUnknown_2037F02 +_080AA8F4: .4byte 0x000003ff +_080AA8F8: .4byte 0xfffffc00 +_080AA8FC: .4byte sub_80AA900 + thumb_func_end sub_80AA838 + + thumb_func_start sub_80AA900 +sub_80AA900: @ 80AA900 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x30] + adds r0, r1 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r3, [r2, 0x32] + adds r1, r3 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 19 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 19 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080AA934 + adds r0, r2, 0 + bl sub_8072740 +_080AA934: + pop {r0} + bx r0 + thumb_func_end sub_80AA900 + + thumb_func_start sub_80AA938 +sub_80AA938: @ 80AA938 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AA95A + ldr r0, _080AA994 @ =gUnknown_2037F02 + ldrh r1, [r0] + movs r0, 0x78 + subs r0, r1 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080AA95A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080AA978 + ldrb r0, [r4, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0 + bl sub_8075B48 +_080AA978: + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + adds r0, 0x50 + cmp r1, r0 + bne _080AA98C + adds r0, r4, 0 + bl sub_8072740 +_080AA98C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA994: .4byte gUnknown_2037F02 + thumb_func_end sub_80AA938 + + thumb_func_start sub_80AA998 +sub_80AA998: @ 80AA998 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080AA9C6 + movs r5, 0x78 + strh r5, [r6, 0x20] + ldr r4, _080AAA48 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r4, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + subs r0, 0xF + strh r0, [r6, 0x22] + ldrb r1, [r4, 0x2] + adds r0, r6, 0 + bl sub_800838C + strh r5, [r6, 0x38] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x34] +_080AA9C6: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + movs r5, 0 + strh r0, [r6, 0x2E] + movs r1, 0x2E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r6, 0x30] + movs r2, 0x2E + ldrsh r0, [r6, r2] + lsls r4, r0, 1 + adds r4, r0 + ldrh r0, [r6, 0x34] + adds r4, r0 + movs r2, 0xFF + ldrh r0, [r6, 0x3A] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0x3A] + ands r4, r2 + adds r0, r4, 0 + movs r1, 0x64 + bl sub_8044E4C + strh r0, [r6, 0x24] + adds r0, r4, 0 + movs r1, 0xA + bl sub_8044E30 + adds r4, r0, 0 + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r1, 0x4 + bl sub_8044E4C + ldrh r2, [r6, 0x30] + adds r4, r2 + adds r0, r4 + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x38 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080AAA42 + ldr r0, _080AAA4C @ =sub_80AAA50 + str r0, [r6, 0x1C] + strh r5, [r6, 0x2E] + adds r0, r6, 0 + bl sub_80750FC + movs r0, 0x5 + strh r0, [r6, 0x32] + strh r5, [r6, 0x36] + strh r5, [r6, 0x34] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_800843C +_080AAA42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AAA48: .4byte gUnknown_2037F02 +_080AAA4C: .4byte sub_80AAA50 + thumb_func_end sub_80AA998 + + thumb_func_start sub_80AAA50 +sub_80AAA50: @ 80AAA50 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + ble _080AAA6A + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, _080AAA70 @ =sub_80AAA74 + str r0, [r1, 0x1C] +_080AAA6A: + pop {r0} + bx r0 + .align 2, 0 +_080AAA70: .4byte sub_80AAA74 + thumb_func_end sub_80AAA50 + + thumb_func_start sub_80AAA74 +sub_80AAA74: @ 80AAA74 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + strh r0, [r4, 0x26] + adds r1, 0x1 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + ble _080AAA9E + lsls r0, r1, 16 + cmp r0, 0 + ble _080AAA9E + ldrh r0, [r4, 0x36] + subs r1, r0, 0x5 + strh r1, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x36] +_080AAA9E: + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _080AAAD0 + movs r2, 0x32 + ldrsh r1, [r4, r2] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, 0 + bl sub_8072740 +_080AAAD0: + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bne _080AAADE + adds r0, r4, 0 + bl sub_8072740 +_080AAADE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AAA74 + + thumb_func_start sub_80AAAE4 +sub_80AAAE4: @ 80AAAE4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080AAB28 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AAB30 + ldr r4, _080AAB2C @ =gUnknown_2037F1A + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080AAB30 + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C + ldrh r0, [r5, 0x22] + adds r0, 0x28 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800843C + b _080AAB50 + .align 2, 0 +_080AAB28: .4byte gUnknown_2022B4C +_080AAB2C: .4byte gUnknown_2037F1A +_080AAB30: + ldr r4, _080AAB70 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x28 + strh r0, [r5, 0x22] +_080AAB50: + movs r0, 0xD + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + subs r0, 0x48 + strh r0, [r5, 0x36] + ldr r0, _080AAB74 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080AAB78 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AAB70: .4byte gUnknown_2037F1A +_080AAB74: .4byte sub_8075590 +_080AAB78: .4byte sub_8072740 + thumb_func_end sub_80AAAE4 + + thumb_func_start sub_80AAB7C +sub_80AAB7C: @ 80AAB7C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080AAB98 @ =gUnknown_2037F02 + ldr r1, _080AAB9C @ =gUnknown_2037EE4 + ldr r1, [r1] + ldrb r2, [r1, 0x10] + movs r1, 0x1 + ands r1, r2 + strh r1, [r3, 0xE] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080AAB98: .4byte gUnknown_2037F02 +_080AAB9C: .4byte gUnknown_2037EE4 + thumb_func_end sub_80AAB7C + + thumb_func_start sub_80AABA0 +sub_80AABA0: @ 80AABA0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080AABB8 @ =gUnknown_2037F02 + ldr r1, _080AABBC @ =gUnknown_2037EE4 + ldr r1, [r1] + ldrb r1, [r1, 0x10] + strh r1, [r2, 0xE] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080AABB8: .4byte gUnknown_2037F02 +_080AABBC: .4byte gUnknown_2037EE4 + thumb_func_end sub_80AABA0 + + thumb_func_start sub_80AABC0 +sub_80AABC0: @ 80AABC0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080AAC48 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AABE8 + ldr r1, _080AAC4C @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r5, 0xA] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0xC] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0xE] +_080AABE8: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r2, 0x8 + ldrsh r0, [r5, r2] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, 0x1 + bne _080AAC30 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x50 + bl __umodsi3 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080AAC50 @ =gUnknown_83E5898 + adds r1, r4, 0 + movs r3, 0x4 + bl sub_8006F8C +_080AAC30: + movs r0, 0x8 + ldrsh r1, [r5, r0] + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _080AAC42 + adds r0, r6, 0 + bl sub_8072760 +_080AAC42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AAC48: .4byte gUnknown_3005090 +_080AAC4C: .4byte gUnknown_2037F02 +_080AAC50: .4byte gUnknown_83E5898 + thumb_func_end sub_80AABC0 + + thumb_func_start sub_80AAC54 +sub_80AAC54: @ 80AAC54 + ldr r1, _080AAC5C @ =sub_80AAC60 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080AAC5C: .4byte sub_80AAC60 + thumb_func_end sub_80AAC54 + + thumb_func_start sub_80AAC60 +sub_80AAC60: @ 80AAC60 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bgt _080AAC7E + ldrh r0, [r2, 0x24] + adds r0, 0x1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x26] + adds r0, 0x4 + strh r0, [r2, 0x26] +_080AAC7E: + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AAC92 + adds r0, r2, 0 + bl sub_8007280 +_080AAC92: + pop {r0} + bx r0 + thumb_func_end sub_80AAC60 + + thumb_func_start sub_80AAC98 +sub_80AAC98: @ 80AAC98 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080AACC0 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AACC8 + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080AACC4 @ =gUnknown_2037F02 + ldrh r1, [r4] + subs r0, r1 + b _080AACDA + .align 2, 0 +_080AACC0: .4byte gUnknown_2037F1A +_080AACC4: .4byte gUnknown_2037F02 +_080AACC8: + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080AADA0 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 +_080AACDA: + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r6, 0x22] + adds r2, r6, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080AADA4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AAD10 + ldr r1, _080AADA0 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080AAD10: + ldr r5, _080AADA0 @ =gUnknown_2037F02 + ldrh r0, [r5, 0xC] + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldr r4, _080AADA8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl sub_80754F8 + ldr r0, _080AADAC @ =nullsub_8 + bl sub_8044EF8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + strh r4, [r6, 0x38] + ldrb r0, [r5, 0x8] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl sub_8044E30 + ldrh r1, [r6, 0x20] + subs r1, r0 + strh r1, [r6, 0x20] + ldrb r0, [r5, 0x8] + movs r2, 0x6 + ldrsh r1, [r5, r2] + bl sub_8044E4C + ldrh r1, [r6, 0x22] + subs r1, r0 + strh r1, [r6, 0x22] + ldr r0, _080AADB0 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r5, 0x4] + strh r0, [r1, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r1, 0x30] + ldrh r0, [r5, 0xA] + strh r0, [r1, 0x32] + ldrb r0, [r5, 0x8] + lsls r0, 8 + strh r0, [r1, 0x34] + ldrh r0, [r5, 0xC] + strh r0, [r1, 0x36] + ldr r1, _080AADB4 @ =sub_80AADB8 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AADA0: .4byte gUnknown_2037F02 +_080AADA4: .4byte gUnknown_2037F1A +_080AADA8: .4byte gUnknown_2037F1B +_080AADAC: .4byte nullsub_8 +_080AADB0: .4byte gUnknown_202063C +_080AADB4: .4byte sub_80AADB8 + thumb_func_end sub_80AAC98 + + thumb_func_start sub_80AADB8 +sub_80AADB8: @ 80AADB8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r1, [r5, 0x38] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080AAE20 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r7, r0, r2 + ldrh r4, [r7, 0x36] + lsls r4, 24 + lsrs r4, 24 + ldrh r0, [r7, 0x34] + mov r8, r0 + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_80755E0 + mov r1, r8 + lsrs r6, r1, 8 + movs r0, 0x2E + ldrsh r1, [r7, r0] + adds r0, r6, 0 + bl sub_8044E30 + ldrh r1, [r5, 0x24] + adds r0, r1 + strh r0, [r5, 0x24] + movs r0, 0x30 + ldrsh r1, [r7, r0] + adds r0, r6, 0 + bl sub_8044E4C + ldrh r1, [r5, 0x26] + adds r0, r1 + strh r0, [r5, 0x26] + ldrh r0, [r7, 0x32] + mov r1, r8 + adds r1, r0 + strh r1, [r7, 0x34] + subs r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + cmp r4, 0 + beq _080AAE24 + strh r4, [r7, 0x36] + b _080AAE2E + .align 2, 0 +_080AAE20: .4byte gUnknown_202063C +_080AAE24: + ldr r0, _080AAE3C @ =sub_80AAE40 + str r0, [r5, 0x1C] + adds r0, r7, 0 + bl sub_8007280 +_080AAE2E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AAE3C: .4byte sub_80AAE40 + thumb_func_end sub_80AADB8 + + thumb_func_start sub_80AAE40 +sub_80AAE40: @ 80AAE40 + push {lr} + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + strb r1, [r3] + ldr r1, _080AAE60 @ =sub_8074F6C + str r1, [r0, 0x1C] + ldr r1, _080AAE64 @ =sub_80AAE68 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080AAE60: .4byte sub_8074F6C +_080AAE64: .4byte sub_80AAE68 + thumb_func_end sub_80AAE40 + + thumb_func_start sub_80AAE68 +sub_80AAE68: @ 80AAE68 + push {lr} + movs r1, 0xA + strh r1, [r0, 0x2E] + ldr r1, _080AAE7C @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080AAE80 @ =sub_8074EE0 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080AAE7C: .4byte sub_8074C44 +_080AAE80: .4byte sub_8074EE0 + thumb_func_end sub_80AAE68 + + thumb_func_start sub_80AAE84 +sub_80AAE84: @ 80AAE84 + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080AAEAC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AAEB4 + ldr r1, _080AAEB0 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r7, r1, 0 + b _080AAEBA + .align 2, 0 +_080AAEAC: .4byte gUnknown_2037F1A +_080AAEB0: .4byte gUnknown_2037F02 +_080AAEB4: + ldr r0, _080AAF10 @ =gUnknown_2037F02 + ldrh r6, [r0, 0x4] + adds r7, r0, 0 +_080AAEBA: + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080AAF14 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r7, [r7, 0x6] + adds r0, r7 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + ldr r0, _080AAF18 @ =sub_80AAF1C + str r0, [r5, 0x1C] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AAF10: .4byte gUnknown_2037F02 +_080AAF14: .4byte gUnknown_2037F1B +_080AAF18: .4byte sub_80AAF1C + thumb_func_end sub_80AAE84 + + thumb_func_start sub_80AAF1C +sub_80AAF1C: @ 80AAF1C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AAF58 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080AAF5C @ =0x0000ffff + cmp r1, r0 + bne _080AAF3E + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] +_080AAF3E: + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080AAF50 + adds r0, r4, 0 + bl sub_8072740 +_080AAF50: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAF58: .4byte gUnknown_2037F02 +_080AAF5C: .4byte 0x0000ffff + thumb_func_end sub_80AAF1C + + thumb_func_start sub_80AAF60 +sub_80AAF60: @ 80AAF60 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080AAF94 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r0, _080AAF98 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r4, 0x8] + ldr r0, _080AAF9C @ =0x0000279c + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r4, 0xC] + ldr r0, _080AAFA0 @ =sub_80AAFA4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAF94: .4byte gUnknown_3005090 +_080AAF98: .4byte gUnknown_2037F02 +_080AAF9C: .4byte 0x0000279c +_080AAFA0: .4byte sub_80AAFA4 + thumb_func_end sub_80AAF60 + + thumb_func_start sub_80AAFA4 +sub_80AAFA4: @ 80AAFA4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080AB01C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0x1C] + adds r0, 0x1 + strh r0, [r2, 0x1C] + lsls r0, 16 + asrs r0, 16 + mov r12, r1 + cmp r0, 0x3 + bne _080AAFF6 + movs r0, 0 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r1, _080AB020 @ =gUnknown_20375F8 + lsls r0, r5, 1 + adds r0, r1 + ldrh r6, [r0] + adds r7, r1, 0 + adds r3, r0, 0x2 + movs r1, 0x6 + adds r2, r0, 0 +_080AAFE0: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080AAFE0 + adds r0, r5, 0x7 + lsls r0, 1 + adds r0, r7 + strh r6, [r0] +_080AAFF6: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r12 + ldrh r1, [r0, 0x1E] + adds r1, 0x1 + strh r1, [r0, 0x1E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x8 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _080AB016 + adds r0, r4, 0 + bl sub_8072760 +_080AB016: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB01C: .4byte gUnknown_3005090 +_080AB020: .4byte gUnknown_20375F8 + thumb_func_end sub_80AAFA4 + + thumb_func_start sub_80AB024 +sub_80AB024: @ 80AB024 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0x1E + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080AB08C @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + movs r0, 0x2E + ldrsh r1, [r5, r0] + movs r0, 0xD2 + lsls r0, 8 + bl __divsi3 + strh r0, [r5, 0x38] + ldr r0, _080AB090 @ =gUnknown_2037F02 + ldrh r2, [r0, 0x6] + strh r2, [r5, 0x3C] + ldrh r1, [r0, 0xE] + movs r3, 0xE + ldrsh r0, [r0, r3] + cmp r0, 0x7F + ble _080AB094 + adds r0, r1, 0 + subs r0, 0x7F + lsls r0, 8 + strh r0, [r5, 0x3A] + negs r0, r2 + strh r0, [r5, 0x3C] + b _080AB098 + .align 2, 0 +_080AB08C: .4byte gUnknown_2037F1B +_080AB090: .4byte gUnknown_2037F02 +_080AB094: + lsls r0, r1, 8 + strh r0, [r5, 0x3A] +_080AB098: + ldr r1, _080AB0A8 @ =sub_80AB0AC + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AB0A8: .4byte sub_80AB0AC + thumb_func_end sub_80AB024 + + thumb_func_start sub_80AB0AC +sub_80AB0AC: @ 80AB0AC + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080AB0C0 + adds r0, r4, 0 + bl sub_8072740 +_080AB0C0: + ldrh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r2, 0x3A + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + adds r0, r1 + asrs r0, 8 + cmp r0, 0x7F + ble _080AB0F0 + movs r0, 0 + strh r0, [r4, 0x3A] + ldrh r0, [r4, 0x3C] + negs r0, r0 + strh r0, [r4, 0x3C] + b _080AB0F8 +_080AB0F0: + ldrh r0, [r4, 0x38] + ldrh r1, [r4, 0x3A] + adds r0, r1 + strh r0, [r4, 0x3A] +_080AB0F8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AB0AC + + thumb_func_start sub_80AB100 +sub_80AB100: @ 80AB100 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080AB120 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r3, _080AB124 @ =gUnknown_2037F02 + ldrh r0, [r3] + movs r2, 0 + strh r0, [r1, 0x8] + strh r2, [r3, 0xE] + ldr r0, _080AB128 @ =sub_80AB12C + str r0, [r1] + bx lr + .align 2, 0 +_080AB120: .4byte gUnknown_3005090 +_080AB124: .4byte gUnknown_2037F02 +_080AB128: .4byte sub_80AB12C + thumb_func_end sub_80AB100 + + thumb_func_start sub_80AB12C +sub_80AB12C: @ 80AB12C + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080AB160 @ =gUnknown_2037F02 + ldrh r0, [r2, 0xE] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r2, 0xE] + ldr r1, _080AB164 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + cmp r1, 0 + bne _080AB15A + adds r0, r3, 0 + bl sub_8072760 +_080AB15A: + pop {r0} + bx r0 + .align 2, 0 +_080AB160: .4byte gUnknown_2037F02 +_080AB164: .4byte gUnknown_3005090 + thumb_func_end sub_80AB12C + + thumb_func_start sub_80AB168 +sub_80AB168: @ 80AB168 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r7, _080AB1B4 @ =gUnknown_2037F1A + ldrb r0, [r7] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r7] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r6, _080AB1B8 @ =0x0000fff6 + strh r6, [r4, 0x26] + ldrb r0, [r7] + bl sub_807685C + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AB1C2 + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AB1BC + movs r0, 0xA + strh r0, [r4, 0x24] + b _080AB1C4 + .align 2, 0 +_080AB1B4: .4byte gUnknown_2037F1A +_080AB1B8: .4byte 0x0000fff6 +_080AB1BC: + strh r6, [r4, 0x24] + subs r0, r5, 0x2 + b _080AB1C6 +_080AB1C2: + strh r6, [r4, 0x24] +_080AB1C4: + adds r0, r5, 0x2 +_080AB1C6: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldr r0, _080AB1D8 @ =sub_80AB1DC + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB1D8: .4byte sub_80AB1DC + thumb_func_end sub_80AB168 + + thumb_func_start sub_80AB1DC +sub_80AB1DC: @ 80AB1DC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080AB1F2 + adds r0, r2, 0 + bl sub_8072740 +_080AB1F2: + pop {r0} + bx r0 + thumb_func_end sub_80AB1DC + + thumb_func_start sub_80AB1F8 +sub_80AB1F8: @ 80AB1F8 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r5, _080AB2B8 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + adds r4, r0, 0 + ldr r0, _080AB2BC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080AB242 + ldr r4, _080AB2C0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4] + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + beq _080AB23A + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AB242 +_080AB23A: + movs r1, 0 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4] +_080AB242: + ldr r5, _080AB2C0 @ =gUnknown_2037F02 + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0 + cmp r0, 0 + bne _080AB256 + movs r1, 0x1 +_080AB256: + ldrb r0, [r5, 0xA] + movs r7, 0x1 + cmp r0, 0 + bne _080AB260 + movs r7, 0x3 +_080AB260: + adds r0, r6, 0 + bl sub_8075160 + ldr r0, _080AB2B8 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AB27A + ldrh r0, [r5, 0x4] + negs r0, r0 + strh r0, [r5, 0x4] +_080AB27A: + ldrh r0, [r5, 0x8] + strh r0, [r6, 0x2E] + ldr r4, _080AB2BC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r4] + adds r1, r7, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r6, 0x36] + ldr r0, _080AB2C4 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080AB2C8 @ =sub_8072740 + adds r0, r6, 0 + bl sub_8074A68 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB2B8: .4byte gUnknown_2037F1A +_080AB2BC: .4byte gUnknown_2037F1B +_080AB2C0: .4byte gUnknown_2037F02 +_080AB2C4: .4byte sub_8075590 +_080AB2C8: .4byte sub_8072740 + thumb_func_end sub_80AB1F8 + + thumb_func_start sub_80AB2CC +sub_80AB2CC: @ 80AB2CC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080AB2FC @ =gUnknown_2037F02 + ldrh r1, [r0, 0x8] + strh r1, [r4, 0x2E] + ldrh r0, [r0, 0x4] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + adds r1, r0 + strh r1, [r4, 0x36] + ldr r0, _080AB300 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080AB304 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AB2FC: .4byte gUnknown_2037F02 +_080AB300: .4byte sub_8075590 +_080AB304: .4byte sub_8072740 + thumb_func_end sub_80AB2CC + + thumb_func_start sub_80AB308 +sub_80AB308: @ 80AB308 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AB320 @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080AB324 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + b _080AB32C + .align 2, 0 +_080AB320: .4byte gUnknown_2037F02 +_080AB324: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075160 +_080AB32C: + ldr r0, _080AB33C @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x3C] + ldr r0, _080AB340 @ =sub_80AB344 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AB33C: .4byte gUnknown_2037F02 +_080AB340: .4byte sub_80AB344 + thumb_func_end sub_80AB308 + + thumb_func_start sub_80AB344 +sub_80AB344: @ 80AB344 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x30 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080AB384 + adds r0, r4, 0 + bl sub_8072740 +_080AB384: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AB344 + + thumb_func_start sub_80AB38C +sub_80AB38C: @ 80AB38C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r1, _080AB3FC @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0x1 + bl sub_80BC1F8 + mov r0, sp + bl sub_80752A0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AB418 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 + ldr r0, _080AB400 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AB408 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AB404 @ =gUnknown_8E81D14 + bl sub_807543C + b _080AB42E + .align 2, 0 +_080AB3FC: .4byte 0x00003f42 +_080AB400: .4byte gUnknown_2037F1A +_080AB404: .4byte gUnknown_8E81D14 +_080AB408: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AB414 @ =gUnknown_8E81FE4 + bl sub_807543C + b _080AB42E + .align 2, 0 +_080AB414: .4byte gUnknown_8E81FE4 +_080AB418: + ldr r0, _080AB458 @ =gUnknown_8E822B8 + ldr r1, [sp, 0x4] + bl sub_800EBC0 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0x1 + bl sub_80730C0 +_080AB42E: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AB45C @ =gUnknown_8E809CC + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080AB460 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AB468 + ldr r0, _080AB464 @ =gUnknown_8E81CEC + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + b _080AB476 + .align 2, 0 +_080AB458: .4byte gUnknown_8E822B8 +_080AB45C: .4byte gUnknown_8E809CC +_080AB460: .4byte gUnknown_2037F02 +_080AB464: .4byte gUnknown_8E81CEC +_080AB468: + ldr r0, _080AB4E0 @ =gUnknown_8E7BAB0 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 +_080AB476: + ldr r0, _080AB4E4 @ =sub_80AB79C + ldr r4, _080AB4E8 @ =gUnknown_3005090 + mov r2, r10 + lsls r5, r2, 2 + adds r1, r5, r2 + lsls r1, 3 + adds r6, r1, r4 + ldrb r1, [r6, 0x7] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0 + mov r9, r0 + mov r1, r8 + strh r1, [r6, 0x26] + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r7, r0, r4 + mov r0, r9 + strh r0, [r7, 0x8] + movs r0, 0x80 + lsls r0, 5 + strh r0, [r7, 0xA] + strh r0, [r7, 0xC] + bl sub_8073788 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080AB4F8 + ldr r1, _080AB4EC @ =0x0000ffb0 + adds r0, r1, 0 + ldr r2, _080AB4F0 @ =gUnknown_2022978 + strh r0, [r2] + adds r1, 0x20 + adds r0, r1, 0 + ldr r2, _080AB4F4 @ =gUnknown_202297A + strh r0, [r2] + movs r0, 0x2 + strh r0, [r6, 0x8] + movs r0, 0x1 + strh r0, [r6, 0xA] + mov r0, r9 + strh r0, [r7, 0xE] + b _080AB552 + .align 2, 0 +_080AB4E0: .4byte gUnknown_8E7BAB0 +_080AB4E4: .4byte sub_80AB79C +_080AB4E8: .4byte gUnknown_3005090 +_080AB4EC: .4byte 0x0000ffb0 +_080AB4F0: .4byte gUnknown_2022978 +_080AB4F4: .4byte gUnknown_202297A +_080AB4F8: + ldr r0, _080AB528 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + bne _080AB53C + ldr r2, _080AB52C @ =0x0000ff20 + adds r0, r2, 0 + ldr r2, _080AB530 @ =gUnknown_2022978 + strh r0, [r2] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ldr r2, _080AB534 @ =gUnknown_202297A + strh r0, [r2] + movs r0, 0x2 + strh r0, [r6, 0x8] + ldr r0, _080AB538 @ =0x0000ffff + strh r0, [r6, 0xA] + strh r1, [r7, 0xE] + b _080AB552 + .align 2, 0 +_080AB528: .4byte gUnknown_2037F1A +_080AB52C: .4byte 0x0000ff20 +_080AB530: .4byte gUnknown_2022978 +_080AB534: .4byte gUnknown_202297A +_080AB538: .4byte 0x0000ffff +_080AB53C: + ldr r0, _080AB584 @ =gUnknown_2022978 + strh r4, [r0] + ldr r1, _080AB588 @ =0x0000ffd0 + adds r0, r1, 0 + ldr r2, _080AB58C @ =gUnknown_202297A + strh r0, [r2] + ldr r0, _080AB590 @ =0x0000fffe + strh r0, [r6, 0x8] + movs r0, 0x1 + strh r0, [r6, 0xA] + strh r4, [r7, 0xE] +_080AB552: + ldr r0, _080AB584 @ =gUnknown_2022978 + ldrh r1, [r0] + movs r0, 0x14 + bl sub_8000A38 + ldr r2, _080AB58C @ =gUnknown_202297A + ldrh r1, [r2] + movs r0, 0x16 + bl sub_8000A38 + ldr r1, _080AB594 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AB598 + movs r0, 0x30 + strh r0, [r1, 0x10] + movs r0, 0x70 + b _080AB59C + .align 2, 0 +_080AB584: .4byte gUnknown_2022978 +_080AB588: .4byte 0x0000ffd0 +_080AB58C: .4byte gUnknown_202297A +_080AB590: .4byte 0x0000fffe +_080AB594: .4byte gUnknown_3005090 +_080AB598: + movs r0, 0 + strh r0, [r1, 0x10] +_080AB59C: + strh r0, [r1, 0x12] + ldr r1, _080AB5C0 @ =gUnknown_3005090 + mov r2, r10 + adds r0, r5, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x14] + ldr r1, _080AB5C4 @ =sub_80AB5C8 + str r1, [r0] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB5C0: .4byte gUnknown_3005090 +_080AB5C4: .4byte sub_80AB5C8 + thumb_func_end sub_80AB38C + + thumb_func_start sub_80AB5C8 +sub_80AB5C8: @ 80AB5C8 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080AB6F4 @ =gUnknown_2022978 + ldr r2, _080AB6F8 @ =gUnknown_202297A + ldr r0, _080AB6FC @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0x8] + ldrh r3, [r1] + adds r0, r3 + strh r0, [r1] + ldrh r0, [r4, 0xA] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + mov r0, sp + bl sub_80752A0 + ldrh r0, [r4, 0xA] + ldrh r3, [r4, 0xC] + adds r0, r3 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080AB65C + ldr r1, _080AB700 @ =gUnknown_20375F8 + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + adds r0, 0x7 + lsls r0, 1 + adds r0, r1 + ldrh r6, [r0] + movs r2, 0x6 + adds r7, r1, 0 + adds r3, r7, 0 + mov r4, sp +_080AB622: + ldrb r0, [r4, 0x8] + lsls r0, 4 + adds r1, r2, 0x1 + adds r0, r1 + lsls r1, r0, 1 + adds r1, r3 + subs r0, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + subs r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _080AB622 + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + adds r0, 0x1 + lsls r0, 1 + adds r0, r7 + strh r6, [r0] + ldr r1, _080AB6FC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0x12] +_080AB65C: + ldr r1, _080AB6FC @ =gUnknown_3005090 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3, 0x14] + adds r0, 0x1 + strh r0, [r3, 0x14] + lsls r0, 16 + asrs r0, 16 + adds r4, r1, 0 + adds r6, r2, 0 + cmp r0, 0x1 + ble _080AB6CA + movs r0, 0 + strh r0, [r3, 0x14] + ldrh r0, [r3, 0xE] + adds r2, r0, 0x1 + strh r2, [r3, 0xE] + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xD + bgt _080AB6A6 + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0x10 + subs r0, r2 + lsls r0, 8 + orrs r2, r0 + strh r2, [r1, 0xA] + ldrh r0, [r3, 0x10] + adds r0, 0x1 + strh r0, [r3, 0x10] +_080AB6A6: + movs r1, 0xE + ldrsh r0, [r3, r1] + cmp r0, 0x36 + ble _080AB6CA + ldrh r2, [r3, 0x10] + subs r2, 0x1 + strh r2, [r3, 0x10] + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0x10 + subs r0, r2 + lsls r0, 8 + orrs r2, r0 + strh r2, [r1, 0xA] +_080AB6CA: + adds r0, r6, r5 + lsls r0, 3 + adds r2, r0, r4 + movs r3, 0x26 + ldrsh r1, [r2, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldrh r0, [r0, 0xA] + movs r3, 0x1F + ands r3, r0 + cmp r3, 0 + bne _080AB6EC + strh r3, [r2, 0x8] + ldr r0, _080AB704 @ =sub_80AB708 + str r0, [r2] +_080AB6EC: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB6F4: .4byte gUnknown_2022978 +_080AB6F8: .4byte gUnknown_202297A +_080AB6FC: .4byte gUnknown_3005090 +_080AB700: .4byte gUnknown_20375F8 +_080AB704: .4byte sub_80AB708 + thumb_func_end sub_80AB5C8 + + thumb_func_start sub_80AB708 +sub_80AB708: @ 80AB708 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r7, _080AB740 @ =gUnknown_2022978 + ldr r0, _080AB744 @ =gUnknown_202297A + mov r8, r0 + ldr r6, _080AB748 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r6 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AB74C + movs r0, 0x1 + bl sub_8075358 + movs r0, 0x2 + bl sub_8075358 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AB78E + .align 2, 0 +_080AB740: .4byte gUnknown_2022978 +_080AB744: .4byte gUnknown_202297A +_080AB748: .4byte gUnknown_3005090 +_080AB74C: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AB760 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080AB760: + movs r0, 0 + strh r0, [r7] + mov r1, r8 + strh r0, [r1] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r6 + ldr r1, _080AB798 @ =0x0000ffff + strh r1, [r0, 0x26] + adds r0, r5, 0 + bl sub_8072760 +_080AB78E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB798: .4byte 0x0000ffff + thumb_func_end sub_80AB708 + + thumb_func_start sub_80AB79C +sub_80AB79C: @ 80AB79C + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080AB7C4 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080AB7B8 + b _080AB8F0 +_080AB7B8: + cmp r0, 0x1 + bgt _080AB7C8 + cmp r0, 0 + beq _080AB7D0 + b _080ABA66 + .align 2, 0 +_080AB7C4: .4byte gUnknown_3005090 +_080AB7C8: + cmp r0, 0x2 + bne _080AB7CE + b _080AB9BC +_080AB7CE: + b _080ABA66 +_080AB7D0: + movs r3, 0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + ldr r1, _080AB8A0 @ =gUnknown_2038700 + mov r12, r1 + cmp r3, r0 + bge _080AB80E + mov r7, r12 + movs r5, 0xF0 + lsls r5, 3 + add r5, r12 + ldr r6, _080AB8A4 @ =0x0000ffff +_080AB7E8: + lsls r2, r3, 16 + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r7 + adds r1, r5 + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r1, [r4, 0xC] + adds r0, r6, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r3, r2, 16 + asrs r2, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080AB7E8 +_080AB80E: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080AB848 + ldr r5, _080AB8A0 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 + ldr r7, _080AB8A4 @ =0x0000ffff +_080AB826: + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r5 + adds r1, r6 + ldrh r0, [r4, 0xA] + strh r0, [r1] + ldrh r1, [r4, 0xA] + adds r0, r7, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080AB826 +_080AB848: + ldrh r3, [r4, 0x12] + lsls r2, r3, 16 + asrs r0, r2, 16 + cmp r0, 0x9F + bgt _080AB87E + ldr r5, _080AB8A0 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 + ldr r7, _080AB8A4 @ =0x0000ffff +_080AB85C: + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r5 + adds r1, r6 + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r1, [r4, 0xC] + adds r0, r7, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r3, r2, 16 + lsls r2, r3, 16 + asrs r0, r2, 16 + cmp r0, 0x9F + ble _080AB85C +_080AB87E: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AB8A8 + lsls r0, r3, 16 + asrs r0, 15 + mov r3, r12 + adds r2, r0, r3 + movs r1, 0xF0 + lsls r1, 3 + add r1, r12 + adds r0, r1 + ldrh r1, [r4, 0xA] + strh r1, [r0] + ldrh r0, [r4, 0xA] + b _080AB8BE + .align 2, 0 +_080AB8A0: .4byte gUnknown_2038700 +_080AB8A4: .4byte 0x0000ffff +_080AB8A8: + lsls r0, r3, 16 + asrs r0, 15 + mov r1, r12 + adds r2, r0, r1 + movs r1, 0xF0 + lsls r1, 3 + add r1, r12 + adds r0, r1 + ldrh r1, [r4, 0xC] + strh r1, [r0] + ldrh r0, [r4, 0xC] +_080AB8BE: + strh r0, [r2] + ldr r0, _080AB8E8 @ =0x04000052 + str r0, [sp] + ldr r0, _080AB8EC @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080ABA66 + .align 2, 0 +_080AB8E8: .4byte 0x04000052 +_080AB8EC: .4byte 0xa2600001 +_080AB8F0: + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080AB908 + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bgt _080AB91C + strh r1, [r4, 0x10] + b _080AB916 +_080AB908: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6F + ble _080AB91C +_080AB916: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080AB91C: + movs r3, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080AB950 + ldr r6, _080AB9B4 @ =gUnknown_2038700 + ldr r5, _080AB9B8 @ =gUnknown_2039600 +_080AB92A: + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldrb r2, [r5, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + adds r3, r6 + ldrh r0, [r4, 0xC] + strh r0, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + asrs r1, 16 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080AB92A +_080AB950: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080AB984 + ldr r6, _080AB9B4 @ =gUnknown_2038700 + ldr r5, _080AB9B8 @ =gUnknown_2039600 +_080AB962: + asrs r3, r2, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xA] + strh r0, [r2] + adds r3, 0x1 + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080AB962 +_080AB984: + ldrh r3, [r4, 0x12] + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080ABA66 + ldr r6, _080AB9B4 @ =gUnknown_2038700 + ldr r5, _080AB9B8 @ =gUnknown_2039600 +_080AB992: + asrs r3, r1, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080AB992 + b _080ABA66 + .align 2, 0 +_080AB9B4: .4byte gUnknown_2038700 +_080AB9B8: .4byte gUnknown_2039600 +_080AB9BC: + movs r3, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080AB9F0 + ldr r6, _080ABA70 @ =gUnknown_2038700 + ldr r5, _080ABA74 @ =gUnknown_2039600 +_080AB9CA: + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldrb r2, [r5, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + adds r3, r6 + ldrh r0, [r4, 0xC] + strh r0, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + asrs r1, 16 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080AB9CA +_080AB9F0: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080ABA24 + ldr r6, _080ABA70 @ =gUnknown_2038700 + ldr r5, _080ABA74 @ =gUnknown_2039600 +_080ABA02: + asrs r3, r2, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xA] + strh r0, [r2] + adds r3, 0x1 + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080ABA02 +_080ABA24: + ldrh r3, [r4, 0x12] + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080ABA50 + ldr r6, _080ABA70 @ =gUnknown_2038700 + ldr r5, _080ABA74 @ =gUnknown_2039600 +_080ABA32: + asrs r3, r1, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080ABA32 +_080ABA50: + movs r0, 0x26 + ldrsh r1, [r4, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080ABA66 + bl sub_8087E64 + adds r0, r7, 0 + bl sub_8077508 +_080ABA66: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ABA70: .4byte gUnknown_2038700 +_080ABA74: .4byte gUnknown_2039600 + thumb_func_end sub_80AB79C + + thumb_func_start sub_80ABA78 +sub_80ABA78: @ 80ABA78 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r3, _080ABACC @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080ABAD0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + bl sub_8044EC8 + movs r5, 0xFF + ands r5, r0 + movs r0, 0x80 + lsls r0, 1 + adds r6, r0, 0 + orrs r5, r6 + bl sub_8044EC8 + ldr r1, _080ABAD4 @ =0x000001ff + ands r1, r0 + adds r0, r1, 0 + cmp r0, 0xFF + ble _080ABABE + subs r0, r6, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_080ABABE: + strh r5, [r4, 0x30] + strh r1, [r4, 0x32] + ldr r0, _080ABAD8 @ =sub_80ABADC + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ABACC: .4byte 0x000003ff +_080ABAD0: .4byte 0xfffffc00 +_080ABAD4: .4byte 0x000001ff +_080ABAD8: .4byte sub_80ABADC + thumb_func_end sub_80ABA78 + + thumb_func_start sub_80ABADC +sub_80ABADC: @ 80ABADC + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r3, r0, r1 + strh r3, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r4, [r2, 0x36] + adds r1, r4 + strh r1, [r2, 0x36] + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080ABB00 + lsls r0, r3, 16 + asrs r0, 24 + negs r0, r0 + b _080ABB04 +_080ABB00: + lsls r0, r3, 16 + asrs r0, 24 +_080ABB04: + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080ABB22 + adds r0, r2, 0 + bl sub_8072740 +_080ABB22: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ABADC + + thumb_func_start sub_80ABB28 +sub_80ABB28: @ 80ABB28 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080ABB78 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r2, _080ABB7C @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x12] + bl sub_80ABDC8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldr r0, _080ABB80 @ =sub_80ABB84 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ABB78: .4byte gUnknown_3005090 +_080ABB7C: .4byte gUnknown_202063C +_080ABB80: .4byte sub_80ABB84 + thumb_func_end sub_80ABB28 + + thumb_func_start sub_80ABB84 +sub_80ABB84: @ 80ABB84 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080ABBAC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bls _080ABBA0 + b _080ABDBE +_080ABBA0: + lsls r0, 2 + ldr r1, _080ABBB0 @ =_080ABBB4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ABBAC: .4byte gUnknown_3005090 +_080ABBB0: .4byte _080ABBB4 + .align 2, 0 +_080ABBB4: + .4byte _080ABBD4 + .4byte _080ABBFA + .4byte _080ABC8C + .4byte _080ABCC2 + .4byte _080ABCD6 + .4byte _080ABCE4 + .4byte _080ABD64 + .4byte _080ABDB0 +_080ABBD4: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 1 + movs r0, 0xE0 + str r0, [sp] + movs r0, 0x80 + lsls r0, 2 + str r0, [sp, 0x4] + movs r0, 0x20 + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r2, r3, 0 + bl sub_80765D4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080ABBFA: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080ABC56 + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ABC44 + ldr r2, _080ABC40 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strh r1, [r0, 0x24] + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + adds r1, 0x1 + strh r1, [r0, 0x22] + b _080ABC56 + .align 2, 0 +_080ABC40: .4byte gUnknown_202063C +_080ABC44: + ldr r2, _080ABC84 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080ABC88 @ =0x0000fffd + strh r1, [r0, 0x24] +_080ABC56: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080ABC66 + b _080ABDBE +_080ABC66: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + ldr r2, _080ABC84 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] + strh r5, [r4, 0xE] + b _080ABDA0 + .align 2, 0 +_080ABC84: .4byte gUnknown_202063C +_080ABC88: .4byte 0x0000fffd +_080ABC8C: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080ABC9C + b _080ABDBE +_080ABC9C: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xE0 + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_80765D4 + movs r0, 0 + strh r0, [r4, 0xE] + b _080ABDA2 +_080ABCC2: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080ABDBE + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + b _080ABDA2 +_080ABCD6: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80ABE4C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080ABCE4: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080ABDBE + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ABD1C + ldr r2, _080ABD18 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x2 + b _080ABD2E + .align 2, 0 +_080ABD18: .4byte gUnknown_202063C +_080ABD1C: + ldr r2, _080ABD60 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x2 +_080ABD2E: + strh r1, [r0, 0x26] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080ABDBE + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xE0 + bl sub_80765D4 + movs r0, 0 + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + b _080ABDA2 + .align 2, 0 +_080ABD60: .4byte gUnknown_202063C +_080ABD64: + ldr r6, _080ABDAC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080ABDBE + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r4, 0x12] + strh r1, [r0, 0x22] +_080ABDA0: + strh r5, [r4, 0x10] +_080ABDA2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080ABDBE + .align 2, 0 +_080ABDAC: .4byte gUnknown_202063C +_080ABDB0: + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080ABDBE + adds r0, r2, 0 + bl sub_8072760 +_080ABDBE: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80ABB84 + + thumb_func_start sub_80ABDC8 +sub_80ABDC8: @ 80ABDC8 + push {r4,r5,lr} + ldr r4, _080ABDEC @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080ABDFC + ldr r1, _080ABDF0 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080ABDF4 @ =gUnknown_2024284 + b _080ABE0C + .align 2, 0 +_080ABDEC: .4byte gUnknown_2037F1A +_080ABDF0: .4byte gUnknown_2023BCE +_080ABDF4: .4byte gUnknown_2024284 +_080ABDF8: + adds r0, r2, 0 + b _080ABE3E +_080ABDFC: + ldr r1, _080ABE44 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080ABE48 @ =gUnknown_202402C +_080ABE0C: + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r3, r0, 16 + lsrs r4, 18 + movs r2, 0 +_080ABE2A: + adds r1, r2, 0x1 + adds r0, r4, 0 + muls r0, r1 + cmp r3, r0 + blt _080ABDF8 + lsls r0, r1, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _080ABE2A + movs r0, 0x3 +_080ABE3E: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080ABE44: .4byte gUnknown_2023BCE +_080ABE48: .4byte gUnknown_202402C + thumb_func_end sub_80ABDC8 + + thumb_func_start sub_80ABE4C +sub_80ABE4C: @ 80ABE4C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + ldr r4, _080ABF54 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0xAC + ldrb r0, [r4] + bl sub_807685C + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + ldrh r1, [r7, 0xA] + movs r0, 0x4 + subs r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r0, 0 + bgt _080ABE9C + movs r1, 0x1 +_080ABE9C: + movs r0, 0 + str r0, [sp, 0x4] + lsls r0, r1, 16 + mov r10, r8 + mov r9, r6 + mov r1, r10 + lsls r1, 4 + str r1, [sp, 0xC] + mov r1, r9 + lsls r1, 4 + str r1, [sp, 0x10] + asrs r0, 16 + mov r8, r0 +_080ABEB6: + ldr r0, _080ABF58 @ =gUnknown_83E5AE0 + mov r1, r10 + mov r2, r9 + ldr r3, [sp, 0x8] + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + lsls r6, r5, 16 + cmp r2, 0x40 + beq _080ABF1E + ldr r1, _080ABF5C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r5, r0, r1 + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x30] + mov r1, sp + ldrh r1, [r1, 0xC] + strh r1, [r5, 0x32] + mov r0, sp + ldrh r0, [r0, 0x10] + strh r0, [r5, 0x34] + asrs r4, r6, 16 + adds r0, r4, 0 + movs r1, 0x40 + bl sub_8044E4C + strh r0, [r5, 0x36] + adds r0, r4, 0 + movs r1, 0x40 + bl sub_8044E30 + strh r0, [r5, 0x38] + mov r1, sp + ldrh r1, [r1] + strh r1, [r5, 0x3A] + movs r0, 0x2 + strh r0, [r5, 0x3C] + ldrh r1, [r7, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ABF18 + adds r0, r5, 0 + bl sub_80ABF60 +_080ABF18: + ldrh r0, [r7, 0xC] + adds r0, 0x1 + strh r0, [r7, 0xC] +_080ABF1E: + mov r1, r8 + lsls r0, r1, 1 + asrs r1, r6, 16 + adds r1, r0 + lsls r1, 16 + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r5, r0, 16 + ldr r1, [sp, 0x4] + lsls r0, r1, 16 + asrs r0, 16 + add r0, r8 + lsls r0, 16 + lsrs r1, r0, 16 + str r1, [sp, 0x4] + asrs r0, 16 + cmp r0, 0x13 + ble _080ABEB6 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ABF54: .4byte gUnknown_2037F1A +_080ABF58: .4byte gUnknown_83E5AE0 +_080ABF5C: .4byte gUnknown_202063C + thumb_func_end sub_80ABE4C + + thumb_func_start sub_80ABF60 +sub_80ABF60: @ 80ABF60 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ABF72 + cmp r0, 0x1 + beq _080ABFA8 + b _080AC002 +_080ABF72: + movs r2, 0x30 + ldrsh r0, [r4, r2] + movs r1, 0x6 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + ldrh r0, [r4, 0x36] + adds r1, r0 + strh r1, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_080ABFA8: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x38] + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r2, r1, 20 + strh r2, [r4, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080ABFDE + adds r1, r2, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080ABFDE + cmp r1, 0x78 + ble _080AC002 +_080ABFDE: + ldr r3, _080AC008 @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080AC002: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC008: .4byte gUnknown_3005090 + thumb_func_end sub_80ABF60 + + thumb_func_start sub_80AC00C +sub_80AC00C: @ 80AC00C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AC03C @ =gUnknown_3005090 + adds r4, r1, r0 + bl sub_80ABDC8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldr r0, _080AC040 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AC044 + movs r0, 0x88 + strh r0, [r4, 0x10] + movs r0, 0x28 + b _080AC04A + .align 2, 0 +_080AC03C: .4byte gUnknown_3005090 +_080AC040: .4byte gUnknown_2037F1A +_080AC044: + movs r0, 0x10 + strh r0, [r4, 0x10] + movs r0, 0x50 +_080AC04A: + strh r0, [r4, 0x14] + movs r0, 0x62 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r0, 0x31 + strh r0, [r4, 0x16] + movs r0, 0xA + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + adds r0, 0x5 + strh r0, [r4, 0x20] + ldr r0, _080AC06C @ =sub_80AC070 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC06C: .4byte sub_80AC070 + thumb_func_end sub_80AC00C + + thumb_func_start sub_80AC070 +sub_80AC070: @ 80AC070 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r7, _080AC094 @ =gUnknown_3005090 + adds r4, r0, r7 + movs r0, 0x8 + ldrsh r2, [r4, r0] + cmp r2, 0 + beq _080AC098 + cmp r2, 0x1 + beq _080AC148 + b _080AC156 + .align 2, 0 +_080AC094: .4byte gUnknown_3005090 +_080AC098: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080AC0AE + strh r2, [r4, 0xC] + adds r0, r4, 0 + bl sub_80AC160 +_080AC0AE: + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AC128 + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AC128 + ldr r5, _080AC13C @ =gUnknown_2037F02 + movs r1, 0x1 + mov r8, r1 + mov r2, r8 + strh r2, [r5] + strh r0, [r5, 0x2] + movs r0, 0xC + strh r0, [r5, 0x4] + ldr r6, _080AC140 @ =sub_80B94B4 + adds r0, r6, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080AC0F8 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r7 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldr r1, _080AC144 @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080AC0F8: + movs r0, 0x3 + strh r0, [r5] + adds r0, r6, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080AC124 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r7 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldr r1, _080AC144 @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080AC124: + mov r0, r8 + strh r0, [r4, 0x22] +_080AC128: + movs r2, 0x1E + ldrsh r1, [r4, r2] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080AC156 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AC156 + .align 2, 0 +_080AC13C: .4byte gUnknown_2037F02 +_080AC140: .4byte sub_80B94B4 +_080AC144: .4byte gUnknown_2037EE2 +_080AC148: + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AC156 + adds r0, r1, 0 + bl sub_8072760 +_080AC156: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80AC070 + + thumb_func_start sub_80AC160 +sub_80AC160: @ 80AC160 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r1, _080AC1EC @ =gUnknown_825E074 + movs r2, 0x18 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + adds r0, 0x3 + asrs r0, 4 + ldrh r2, [r4, 0x14] + adds r0, r2 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080AC1F0 @ =gUnknown_83E5AE0 + movs r2, 0x16 + ldrsh r1, [r4, r2] + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080AC1BA + ldr r3, _080AC1F4 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _080AC1F8 @ =sub_80AC204 + str r2, [r1] + adds r0, r3 + strh r5, [r0, 0x38] + strh r6, [r0, 0x3A] + movs r1, 0x9 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] +_080AC1BA: + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x18] + adds r0, 0x27 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x18] + movs r0, 0x16 + ldrsh r1, [r4, r0] + ldr r0, _080AC1FC @ =0x41c64e6d + muls r0, r1 + ldr r1, _080AC200 @ =0x00003039 + adds r0, r1 + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r4, 0x10] + adds r1, r0 + strh r1, [r4, 0x16] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC1EC: .4byte gUnknown_825E074 +_080AC1F0: .4byte gUnknown_83E5AE0 +_080AC1F4: .4byte gUnknown_202063C +_080AC1F8: .4byte sub_80AC204 +_080AC1FC: .4byte 0x41c64e6d +_080AC200: .4byte 0x00003039 + thumb_func_end sub_80AC160 + + thumb_func_start sub_80AC204 +sub_80AC204: @ 80AC204 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AC29A + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x38 + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080AC29A + ldr r2, _080AC2A0 @ =gUnknown_3005090 + movs r3, 0x3A + ldrsh r1, [r5, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0x1 + strh r1, [r0, 0x1C] + ldr r0, _080AC2A4 @ =gUnknown_83E7C38 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x30] + cmp r0, 0x40 + beq _080AC294 + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080AC2A8 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0x3 + bl sub_800843C + movs r2, 0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x3A] + strh r1, [r0, 0x3A] + movs r3, 0x30 + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x3C] + strh r1, [r0, 0x3C] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080AC2AC @ =sub_80AC2B0 + str r1, [r0] +_080AC294: + adds r0, r5, 0 + bl sub_8007280 +_080AC29A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC2A0: .4byte gUnknown_3005090 +_080AC2A4: .4byte gUnknown_83E7C38 +_080AC2A8: .4byte gUnknown_202063C +_080AC2AC: .4byte sub_80AC2B0 + thumb_func_end sub_80AC204 + + thumb_func_start sub_80AC2B0 +sub_80AC2B0: @ 80AC2B0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AC31C + movs r0, 0 + strh r0, [r4, 0x30] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _080AC31C + ldr r3, _080AC324 @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8007280 +_080AC31C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC324: .4byte gUnknown_3005090 + thumb_func_end sub_80AC2B0 + + thumb_func_start sub_80AC328 +sub_80AC328: @ 80AC328 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AC3AC @ =gUnknown_3005090 + adds r5, r1, r0 + ldr r4, _080AC3B0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080AC36C + movs r1, 0x1 +_080AC36C: + strh r1, [r5, 0x16] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080AC380 + movs r1, 0x16 + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x16] +_080AC380: + movs r2, 0x16 + ldrsh r0, [r5, r2] + lsls r0, 3 + ldrh r1, [r5, 0xE] + adds r0, r1 + strh r0, [r5, 0x12] + movs r2, 0x16 + ldrsh r1, [r5, r2] + lsls r1, 3 + ldrh r0, [r5, 0x10] + subs r0, r1 + strh r0, [r5, 0x14] + ldr r0, _080AC3B4 @ =0x0000ffe0 + strh r0, [r5, 0x1A] + strh r6, [r5, 0xA] + strh r6, [r5, 0x8] + ldr r0, _080AC3B8 @ =sub_80AC3BC + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC3AC: .4byte gUnknown_3005090 +_080AC3B0: .4byte gUnknown_2037F1A +_080AC3B4: .4byte 0x0000ffe0 +_080AC3B8: .4byte sub_80AC3BC + thumb_func_end sub_80AC328 + + thumb_func_start sub_80AC3BC +sub_80AC3BC: @ 80AC3BC + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080AC3E0 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bls _080AC3D6 + b _080AC4F6 +_080AC3D6: + lsls r0, 2 + ldr r1, _080AC3E4 @ =_080AC3E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AC3E0: .4byte gUnknown_3005090 +_080AC3E4: .4byte _080AC3E8 + .align 2, 0 +_080AC3E8: + .4byte _080AC404 + .4byte _080AC414 + .4byte _080AC42E + .4byte _080AC470 + .4byte _080AC492 + .4byte _080AC4C0 + .4byte _080AC4E6 +_080AC404: + adds r0, r4, 0 + bl sub_80AC504 + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AC4FC + b _080AC4EE +_080AC414: + adds r0, r4, 0 + bl sub_80AC504 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080AC4FC + movs r0, 0 + strh r0, [r4, 0xA] + b _080AC4EE +_080AC42E: + adds r0, r4, 0 + bl sub_80AC504 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x12] + adds r1, r0 + movs r2, 0 + strh r1, [r4, 0x12] + adds r1, 0x10 + lsls r1, 16 + movs r0, 0x88 + lsls r0, 17 + cmp r1, r0 + bls _080AC4FC + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080AC46C + movs r0, 0x1 + strh r0, [r4, 0x22] + movs r0, 0x6 + strh r0, [r4, 0x8] + strh r2, [r4, 0xA] + b _080AC4FC +_080AC46C: + strh r2, [r4, 0xA] + b _080AC4EE +_080AC470: + adds r0, r4, 0 + bl sub_80AC504 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x14] + subs r0, r1 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080AC4FC + b _080AC4EE +_080AC492: + adds r0, r4, 0 + bl sub_80AC504 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x12] + adds r0, 0x10 + lsls r0, 16 + movs r1, 0x88 + lsls r1, 17 + cmp r0, r1 + bls _080AC4FC + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0xA] + b _080AC4EE +_080AC4C0: + adds r0, r4, 0 + bl sub_80AC504 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x14] + subs r0, r1 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080AC4FC + movs r0, 0x2 + strh r0, [r4, 0x8] + b _080AC4FC +_080AC4E6: + movs r1, 0x18 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AC4FC +_080AC4EE: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AC4FC +_080AC4F6: + adds r0, r2, 0 + bl sub_8072760 +_080AC4FC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AC3BC + + thumb_func_start sub_80AC504 +sub_80AC504: @ 80AC504 + push {r4-r6,lr} + adds r6, r0, 0 + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AC55E + movs r0, 0 + strh r0, [r6, 0xC] + ldr r0, _080AC564 @ =gUnknown_83E5AE0 + movs r2, 0xE + ldrsh r1, [r6, r2] + movs r3, 0x10 + ldrsh r2, [r6, r3] + movs r3, 0xA + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080AC55E + ldr r5, _080AC568 @ =gUnknown_202063C + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r0, r4, r5 + movs r1, 0x10 + strh r1, [r0, 0x2E] + ldrh r1, [r6, 0x12] + strh r1, [r0, 0x32] + ldrh r1, [r6, 0x14] + strh r1, [r0, 0x36] + ldrh r1, [r6, 0x1A] + strh r1, [r0, 0x38] + bl sub_8075068 + adds r5, 0x1C + adds r4, r5 + ldr r0, _080AC56C @ =sub_80AC570 + str r0, [r4] + ldrh r0, [r6, 0x18] + adds r0, 0x1 + strh r0, [r6, 0x18] +_080AC55E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC564: .4byte gUnknown_83E5AE0 +_080AC568: .4byte gUnknown_202063C +_080AC56C: .4byte sub_80AC570 + thumb_func_end sub_80AC504 + + thumb_func_start sub_80AC570 +sub_80AC570: @ 80AC570 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080AC5CA + ldrh r0, [r6, 0x24] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + ldrh r0, [r6, 0x26] + ldrh r1, [r6, 0x22] + adds r0, r1 + strh r0, [r6, 0x22] + movs r0, 0x6 + strh r0, [r6, 0x2E] + bl sub_8044EC8 + movs r4, 0x1F + adds r1, r4, 0 + ands r1, r0 + ldr r5, _080AC5D0 @ =0x0000fff0 + adds r1, r5 + ldrh r0, [r6, 0x20] + adds r1, r0 + strh r1, [r6, 0x32] + bl sub_8044EC8 + ands r4, r0 + adds r4, r5 + ldrh r1, [r6, 0x22] + adds r4, r1 + strh r4, [r6, 0x36] + bl sub_8044EC8 + movs r1, 0x7 + ands r1, r0 + mvns r1, r1 + strh r1, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _080AC5D4 @ =sub_80AC5D8 + str r0, [r6, 0x1C] +_080AC5CA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC5D0: .4byte 0x0000fff0 +_080AC5D4: .4byte sub_80AC5D8 + thumb_func_end sub_80AC570 + + thumb_func_start sub_80AC5D8 +sub_80AC5D8: @ 80AC5D8 + push {r4-r6,lr} + adds r5, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080AC614 + movs r4, 0 + ldr r6, _080AC61C @ =gUnknown_3005090 +_080AC5EA: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r6 + ldr r1, [r2] + ldr r0, _080AC620 @ =sub_80AC3BC + cmp r1, r0 + bne _080AC60A + movs r0, 0x1 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0x18] + subs r0, 0x1 + strh r0, [r2, 0x18] + adds r0, r5, 0 + bl sub_8007280 +_080AC60A: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xF + bls _080AC5EA +_080AC614: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AC61C: .4byte gUnknown_3005090 +_080AC620: .4byte sub_80AC3BC + thumb_func_end sub_80AC5D8 + + thumb_func_start sub_80AC624 +sub_80AC624: @ 80AC624 + ldr r2, _080AC644 @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r0, 0x20] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x22] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x2E] + ldrh r1, [r2, 0x6] + strh r1, [r0, 0x30] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0x32] + ldrh r1, [r2, 0xA] + strh r1, [r0, 0x34] + ldr r1, _080AC648 @ =sub_80AC64C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080AC644: .4byte gUnknown_2037F02 +_080AC648: .4byte sub_80AC64C + thumb_func_end sub_80AC624 + + thumb_func_start sub_80AC64C +sub_80AC64C: @ 80AC64C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x2E] + subs r0, r1 + strh r0, [r4, 0x36] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x38] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080AC690 + adds r0, r4, 0 + bl sub_8072740 +_080AC690: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AC64C + + thumb_func_start sub_80AC698 +sub_80AC698: @ 80AC698 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 23 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 23 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080AC6D0 + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 +_080AC6D0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AC698 + + thumb_func_start sub_80AC6D8 +sub_80AC6D8: @ 80AC6D8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080AC714 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x30] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldr r1, _080AC718 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldr r0, _080AC71C @ =sub_80AC720 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC714: .4byte gUnknown_2037F1B +_080AC718: .4byte gUnknown_2037F02 +_080AC71C: .4byte sub_80AC720 + thumb_func_end sub_80AC6D8 + + thumb_func_start sub_80AC720 +sub_80AC720: @ 80AC720 + push {r4-r6,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x20 + ldrsh r0, [r4, r2] + subs r6, r1, r0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x22 + ldrsh r0, [r4, r2] + subs r5, r1, r0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + muls r0, r6 + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + muls r0, r5 + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080AC778 + movs r0, 0 + strh r0, [r4, 0x38] + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80AC798 +_080AC778: + movs r0, 0x34 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080AC78A + adds r0, r4, 0 + bl sub_8072740 +_080AC78A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80AC720 + + thumb_func_start sub_80AC798 +sub_80AC798: @ 80AC798 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r4, r1, 0 + adds r5, r2, 0 + movs r2, 0x2E + ldrsh r1, [r0, r2] + lsrs r2, r1, 31 + adds r1, r2 + lsls r1, 15 + lsrs r1, 16 + str r1, [sp] + ldrh r1, [r0, 0x24] + ldrh r3, [r0, 0x20] + adds r1, r3 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r0, r5, r0 + subs r0, 0x5 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl sub_8044EC8 + negs r4, r4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r4, r0 + subs r4, 0x5 + lsls r4, 16 + lsrs r7, r4, 16 + movs r6, 0 + mov r0, r8 + lsls r0, 16 + mov r8, r0 + mov r1, r10 + lsls r1, 16 + str r1, [sp, 0xC] + ldr r2, [sp] + lsls r2, 16 + str r2, [sp, 0x10] + asrs r1, 16 + lsls r0, r7, 16 + asrs r5, r0, 16 + str r0, [sp, 0x14] + negs r3, r5 + str r3, [sp, 0x4] + asrs r0, r2, 16 + adds r1, r0 + lsls r1, 16 + mov r10, r1 +_080AC826: + ldr r0, _080AC868 @ =gUnknown_83E5B88 + mov r2, r8 + asrs r1, r2, 16 + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0x82 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080AC86C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + movs r0, 0x14 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + ldr r0, _080AC870 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + cmp r5, 0 + bge _080AC874 + mov r1, sp + ldrh r1, [r1, 0x4] + strh r1, [r4, 0x32] + b _080AC876 + .align 2, 0 +_080AC868: .4byte gUnknown_83E5B88 +_080AC86C: .4byte gUnknown_202063C +_080AC870: .4byte gUnknown_2037F1A +_080AC874: + strh r7, [r4, 0x32] +_080AC876: + lsls r0, r6, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r6, r0, 16 + cmp r0, 0 + ble _080AC826 + movs r6, 0 + ldr r3, [sp, 0xC] + asrs r1, r3, 16 + ldr r0, [sp, 0x14] + asrs r5, r0, 16 + negs r2, r5 + str r2, [sp, 0x8] + ldr r3, [sp, 0x10] + asrs r0, r3, 16 + subs r1, r0 + lsls r1, 16 + mov r10, r1 +_080AC89C: + ldr r0, _080AC8E0 @ =gUnknown_83E5B88 + mov r2, r8 + asrs r1, r2, 16 + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0x82 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080AC8E4 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + movs r0, 0x14 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + ldr r0, _080AC8E8 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + cmp r5, 0 + ble _080AC8EC + mov r1, sp + ldrh r1, [r1, 0x8] + strh r1, [r4, 0x32] + b _080AC8EE + .align 2, 0 +_080AC8E0: .4byte gUnknown_83E5B88 +_080AC8E4: .4byte gUnknown_202063C +_080AC8E8: .4byte gUnknown_2037F1A +_080AC8EC: + strh r7, [r4, 0x32] +_080AC8EE: + lsls r0, r6, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r6, r0, 16 + cmp r0, 0 + ble _080AC89C + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80AC798 + + thumb_func_start sub_80AC90C +sub_80AC90C: @ 80AC90C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AC940 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r4, 0x2E] + movs r0, 0x3C + strh r0, [r4, 0x30] + movs r0, 0x9 + strh r0, [r4, 0x32] + movs r0, 0x1E + strh r0, [r4, 0x34] + movs r0, 0xFE + lsls r0, 8 + strh r0, [r4, 0x36] + ldr r1, _080AC944 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r1, _080AC948 @ =sub_8074AE0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC940: .4byte gUnknown_2037F02 +_080AC944: .4byte sub_8072740 +_080AC948: .4byte sub_8074AE0 + thumb_func_end sub_80AC90C + + thumb_func_start sub_80AC94C +sub_80AC94C: @ 80AC94C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080AC984 @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x32] + ldr r0, _080AC988 @ =sub_8074D00 + str r0, [r4, 0x1C] + ldr r1, _080AC98C @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC984: .4byte gUnknown_2037F02 +_080AC988: .4byte sub_8074D00 +_080AC98C: .4byte sub_8072740 + thumb_func_end sub_80AC94C + + thumb_func_start sub_80AC990 +sub_80AC990: @ 80AC990 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080AC9C4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AC9CC + ldr r2, _080AC9C8 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x8] + negs r0, r0 + strh r0, [r4, 0x32] + adds r1, r2, 0 + b _080AC9E2 + .align 2, 0 +_080AC9C4: .4byte gUnknown_2037F1A +_080AC9C8: .4byte gUnknown_2037F02 +_080AC9CC: + ldr r1, _080AC9F8 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] +_080AC9E2: + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080AC9FC @ =sub_80ACA6C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC9F8: .4byte gUnknown_2037F02 +_080AC9FC: .4byte sub_80ACA6C + thumb_func_end sub_80AC990 + + thumb_func_start sub_80ACA00 +sub_80ACA00: @ 80ACA00 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ACA2C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080ACA34 + ldr r2, _080ACA30 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0x32] + adds r1, r2, 0 + b _080ACA4C + .align 2, 0 +_080ACA2C: .4byte gUnknown_2037F1A +_080ACA30: .4byte gUnknown_2037F02 +_080ACA34: + ldr r1, _080ACA64 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x8] + negs r0, r0 + strh r0, [r4, 0x32] +_080ACA4C: + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080ACA68 @ =sub_80ACA6C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACA64: .4byte gUnknown_2037F02 +_080ACA68: .4byte sub_80ACA6C + thumb_func_end sub_80ACA00 + + thumb_func_start sub_80ACA6C +sub_80ACA6C: @ 80ACA6C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + bge _080ACA92 + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x34] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] +_080ACA92: + movs r0, 0x2E + ldrsh r1, [r2, r0] + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r1, r0 + bne _080ACAA4 + adds r0, r2, 0 + bl sub_8074EE0 +_080ACAA4: + pop {r0} + bx r0 + thumb_func_end sub_80ACA6C + + thumb_func_start sub_80ACAA8 +sub_80ACAA8: @ 80ACAA8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _080ACACC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080ACAD4 + ldr r0, _080ACAD0 @ =gUnknown_2037F02 + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080ACAE6 + .align 2, 0 +_080ACACC: .4byte gUnknown_2037F1A +_080ACAD0: .4byte gUnknown_2037F02 +_080ACAD4: + ldr r0, _080ACB14 @ =gUnknown_2037F02 + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + adds r2, r4, 0 + adds r2, 0x43 + movs r1, 0x8 + strb r1, [r2] +_080ACAE6: + adds r2, r0, 0 + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r2, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r2, 0xA] + strh r0, [r4, 0x34] + ldrh r0, [r2, 0xC] + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + ldr r0, _080ACB18 @ =sub_80ACB1C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACB14: .4byte gUnknown_2037F02 +_080ACB18: .4byte sub_80ACB1C + thumb_func_end sub_80ACAA8 + + thumb_func_start sub_80ACB1C +sub_80ACB1C: @ 80ACB1C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ACBA4 + movs r2, 0x38 + ldrsh r1, [r4, r2] + ldr r0, _080ACB88 @ =0x00002710 + cmp r1, r0 + ble _080ACB3A + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1 + strb r0, [r1] +_080ACB3A: + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080ACB90 + ldr r2, _080ACB8C @ =0xffffff00 + b _080ACB98 + .align 2, 0 +_080ACB88: .4byte 0x00002710 +_080ACB8C: .4byte 0xffffff00 +_080ACB90: + cmp r0, 0 + bge _080ACB9C + movs r2, 0x80 + lsls r2, 1 +_080ACB98: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_080ACB9C: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _080ACBAA +_080ACBA4: + adds r0, r4, 0 + bl sub_8074EE0 +_080ACBAA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACB1C + + thumb_func_start sub_80ACBB0 +sub_80ACBB0: @ 80ACBB0 + push {lr} + movs r1, 0 + strh r1, [r0, 0x20] + strh r1, [r0, 0x22] + movs r1, 0x3C + strh r1, [r0, 0x2E] + movs r1, 0x8C + strh r1, [r0, 0x32] + movs r1, 0x50 + strh r1, [r0, 0x36] + ldr r1, _080ACBD4 @ =sub_8075590 + str r1, [r0, 0x1C] + ldr r1, _080ACBD8 @ =sub_8072740 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080ACBD4: .4byte sub_8075590 +_080ACBD8: .4byte sub_8072740 + thumb_func_end sub_80ACBB0 + + thumb_func_start sub_80ACBDC +sub_80ACBDC: @ 80ACBDC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080ACC34 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + adds r4, r0, 0 + ldr r0, _080ACC38 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080ACC22 + movs r0, 0x2 + bl sub_80751E8 + ldrb r1, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + beq _080ACC1A + movs r0, 0x3 + bl sub_80751E8 + ldrb r1, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + bne _080ACC22 +_080ACC1A: + ldr r1, _080ACC3C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080ACC22: + ldr r1, _080ACC40 @ =sub_8075F0C + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ACC34: .4byte gUnknown_2037F1A +_080ACC38: .4byte gUnknown_2037F1B +_080ACC3C: .4byte gUnknown_2037F02 +_080ACC40: .4byte sub_8075F0C + thumb_func_end sub_80ACBDC + + thumb_func_start sub_80ACC44 +sub_80ACC44: @ 80ACC44 + ldr r2, _080ACC58 @ =gUnknown_2037F02 + ldrh r1, [r2] + negs r1, r1 + strh r1, [r2] + ldrh r1, [r2, 0x4] + negs r1, r1 + strh r1, [r2, 0x4] + ldr r1, _080ACC5C @ =sub_8075F0C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080ACC58: .4byte gUnknown_2037F02 +_080ACC5C: .4byte sub_8075F0C + thumb_func_end sub_80ACC44 + + thumb_func_start sub_80ACC60 +sub_80ACC60: @ 80ACC60 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080ACC80 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + movs r1, 0 + strh r0, [r4, 0x3C] + strh r1, [r4, 0x2E] + ldr r0, _080ACC84 @ =sub_80ACC88 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACC80: .4byte gUnknown_2037F02 +_080ACC84: .4byte sub_80ACC88 + thumb_func_end sub_80ACC60 + + thumb_func_start sub_80ACC88 +sub_80ACC88: @ 80ACC88 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80ACD7C + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x12 + bne _080ACCD2 + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080ACCD8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + ldr r0, _080ACCDC @ =sub_80ACCE0 + str r0, [r5, 0x1C] +_080ACCD2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACCD8: .4byte gUnknown_2037F1B +_080ACCDC: .4byte sub_80ACCE0 + thumb_func_end sub_80ACC88 + + thumb_func_start sub_80ACCE0 +sub_80ACCE0: @ 80ACCE0 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080ACD28 + movs r4, 0 + strh r4, [r6, 0x2E] + ldr r5, _080ACD20 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + strh r4, [r6, 0x26] + strh r4, [r6, 0x24] + ldr r1, _080ACD24 @ =sub_80ACD58 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + b _080ACD52 + .align 2, 0 +_080ACD20: .4byte gUnknown_2037F1B +_080ACD24: .4byte sub_80ACD58 +_080ACD28: + movs r1, 0x3C + ldrsh r0, [r6, r1] + movs r1, 0x1C + bl sub_8044E30 + ldrh r1, [r6, 0x24] + adds r0, r1 + strh r0, [r6, 0x24] + movs r1, 0x3C + ldrsh r0, [r6, r1] + movs r1, 0x1C + bl sub_8044E4C + ldrh r1, [r6, 0x26] + adds r0, r1 + strh r0, [r6, 0x26] + ldrh r0, [r6, 0x3C] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0x3C] +_080ACD52: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80ACCE0 + + thumb_func_start sub_80ACD58 +sub_80ACD58: @ 80ACD58 + push {r4,lr} + adds r4, r0, 0 + bl sub_80ACD7C + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080ACD74 + adds r0, r4, 0 + bl sub_8072740 +_080ACD74: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACD58 + + thumb_func_start sub_80ACD7C +sub_80ACD7C: @ 80ACD7C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x1C + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x1C + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACD7C + + thumb_func_start sub_80ACDA8 +sub_80ACDA8: @ 80ACDA8 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080ACDDC @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] + ldr r1, _080ACDE0 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080ACDE4 @ =sub_8074CD0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACDDC: .4byte gUnknown_2037F02 +_080ACDE0: .4byte sub_8072740 +_080ACDE4: .4byte sub_8074CD0 + thumb_func_end sub_80ACDA8 + + thumb_func_start sub_80ACDE8 +sub_80ACDE8: @ 80ACDE8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080ACE1C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x2E] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080ACE20 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080ACE24 @ =sub_80ACE28 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACE1C: .4byte gUnknown_2037F02 +_080ACE20: .4byte sub_8074C44 +_080ACE24: .4byte sub_80ACE28 + thumb_func_end sub_80ACDE8 + + thumb_func_start sub_80ACE28 +sub_80ACE28: @ 80ACE28 + push {lr} + adds r3, r0, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r3] + ldrh r1, [r0, 0x30] + movs r2, 0 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + ldr r1, _080ACE4C @ =sub_80ACE50 + str r1, [r0, 0x1C] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080ACE4C: .4byte sub_80ACE50 + thumb_func_end sub_80ACE28 + + thumb_func_start sub_80ACE50 +sub_80ACE50: @ 80ACE50 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + adds r0, 0xD0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080ACE9C + adds r0, r4, 0 + bl sub_8072740 +_080ACE9C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ACE50 + + thumb_func_start sub_80ACEA4 +sub_80ACEA4: @ 80ACEA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080ACF04 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x26] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + ldr r2, _080ACF08 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x10] + ldr r0, _080ACF0C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x12] + strh r5, [r4, 0x14] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldr r0, _080ACF10 @ =sub_80ACF14 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACF04: .4byte gUnknown_3005090 +_080ACF08: .4byte gUnknown_202063C +_080ACF0C: .4byte gUnknown_2037F1A +_080ACF10: .4byte sub_80ACF14 + thumb_func_end sub_80ACEA4 + + thumb_func_start sub_80ACF14 +sub_80ACF14: @ 80ACF14 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080ACF3C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bls _080ACF30 + b _080AD1EE +_080ACF30: + lsls r0, 2 + ldr r1, _080ACF40 @ =_080ACF44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ACF3C: .4byte gUnknown_3005090 +_080ACF40: .4byte _080ACF44 + .align 2, 0 +_080ACF44: + .4byte _080ACF60 + .4byte _080ACF86 + .4byte _080AD038 + .4byte _080AD098 + .4byte _080AD0B6 + .4byte _080AD18C + .4byte _080AD1E0 +_080ACF60: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 1 + movs r0, 0xE0 + str r0, [sp] + movs r0, 0x80 + lsls r0, 2 + str r0, [sp, 0x4] + movs r0, 0x20 + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r2, r3, 0 + bl sub_80765D4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080ACF86: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080ACFCE + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ACFBC + ldr r2, _080ACFB8 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + b _080ACFCC + .align 2, 0 +_080ACFB8: .4byte gUnknown_202063C +_080ACFBC: + ldr r2, _080AD030 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080AD034 @ =0x0000fffd +_080ACFCC: + strh r1, [r0, 0x24] +_080ACFCE: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ACFFC + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080ACFFC + movs r0, 0 + strh r0, [r4, 0xE] + ldr r2, _080AD030 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + adds r1, 0x1 + strh r1, [r0, 0x22] +_080ACFFC: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080AD00C + b _080AD1EE +_080AD00C: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + ldr r2, _080AD030 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + b _080AD1D4 + .align 2, 0 +_080AD030: .4byte gUnknown_202063C +_080AD034: .4byte 0x0000fffd +_080AD038: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080AD048 + b _080AD1EE +_080AD048: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD072 + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xF0 + str r0, [sp, 0x4] + movs r0, 0x6 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_80765D4 + b _080AD092 +_080AD072: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xC0 + str r0, [sp, 0x4] + movs r0, 0x6 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_80765D4 +_080AD092: + movs r0, 0 + strh r0, [r4, 0xA] + b _080AD1D4 +_080AD098: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + cmp r0, 0 + beq _080AD0A6 + b _080AD1EE +_080AD0A6: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + adds r1, r5, 0 + movs r2, 0x6 + bl sub_80AD1F8 + b _080AD1D4 +_080AD0B6: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD104 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD0F0 + ldr r2, _080AD0EC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + b _080AD102 + .align 2, 0 +_080AD0EC: .4byte gUnknown_202063C +_080AD0F0: + ldr r2, _080AD13C @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x3 +_080AD102: + strh r1, [r0, 0x26] +_080AD104: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + ble _080AD1EE + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD140 + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xF0 + bl sub_80765D4 + b _080AD15E + .align 2, 0 +_080AD13C: .4byte gUnknown_202063C +_080AD140: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xC0 + bl sub_80765D4 +_080AD15E: + ldrh r1, [r4, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD17C + ldr r2, _080AD188 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] +_080AD17C: + movs r0, 0 + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + b _080AD1D4 + .align 2, 0 +_080AD188: .4byte gUnknown_202063C +_080AD18C: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AD1A8 + ldr r2, _080AD1DC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] +_080AD1A8: + adds r0, r4, 0 + bl sub_8076640 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080AD1EE + ldr r2, _080AD1DC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + strh r1, [r0, 0x22] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + strh r5, [r4, 0xC] +_080AD1D4: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080AD1EE + .align 2, 0 +_080AD1DC: .4byte gUnknown_202063C +_080AD1E0: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AD1EE + adds r0, r5, 0 + bl sub_8072760 +_080AD1EE: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80ACF14 + + thumb_func_start sub_80AD1F8 +sub_80AD1F8: @ 80AD1F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + adds r0, r4, 0 + bl sub_80AD374 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + ldr r1, _080AD248 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r4, [r0, 0x20] + ldr r0, _080AD24C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AD250 + adds r0, r4, 0 + subs r0, 0xC + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1 + b _080AD25A + .align 2, 0 +_080AD248: .4byte gUnknown_202063C +_080AD24C: .4byte gUnknown_2037F1A +_080AD250: + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0xFF +_080AD25A: + movs r6, 0 + movs r5, 0 + lsls r4, 16 + str r4, [sp, 0x8] + mov r1, r9 + lsls r1, 16 + str r1, [sp, 0x4] + ldr r2, _080AD314 @ =gUnknown_83E5E44 + mov r9, r2 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r3, r8 + lsls r3, 1 + mov r10, r3 +_080AD278: + ldr r0, _080AD318 @ =gUnknown_83E5E2C + ldr r2, [sp, 0x8] + asrs r1, r2, 16 + ldr r3, [sp, 0x4] + asrs r2, r3, 16 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080AD2FA + ldr r1, _080AD31C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + lsls r0, r5, 2 + adds r0, 0x40 + adds r1, r0 + ldr r3, _080AD320 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r3, _080AD324 @ =0xfffffc00 + adds r0, r3, 0 + ands r2, r0 + orrs r2, r1 + strh r2, [r4, 0x4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x4 + bls _080AD2C2 + movs r5, 0 +_080AD2C2: + lsls r2, r6, 2 + mov r1, r9 + adds r0, r2, r1 + ldrh r0, [r0] + ldr r3, [sp] + adds r1, r0, 0 + muls r1, r3 + lsls r1, 16 + asrs r1, 16 + ldr r0, _080AD328 @ =gUnknown_83E5E46 + adds r2, r0 + movs r3, 0 + ldrsh r2, [r2, r3] + adds r0, r4, 0 + bl sub_80AD3C8 + strh r7, [r4, 0x3A] + mov r0, r8 + strh r0, [r4, 0x3C] + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + add r0, r10 + ldr r1, _080AD32C @ =gUnknown_3005098 + adds r0, r1 + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] +_080AD2FA: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x6 + bls _080AD278 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AD314: .4byte gUnknown_83E5E44 +_080AD318: .4byte gUnknown_83E5E2C +_080AD31C: .4byte gUnknown_202063C +_080AD320: .4byte 0x000003ff +_080AD324: .4byte 0xfffffc00 +_080AD328: .4byte gUnknown_83E5E46 +_080AD32C: .4byte gUnknown_3005098 + thumb_func_end sub_80AD1F8 + + thumb_func_start sub_80AD330 +sub_80AD330: @ 80AD330 + push {r4,lr} + adds r4, r0, 0 + bl sub_80AD3E4 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080AD36A + ldr r3, _080AD370 @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080AD36A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD370: .4byte gUnknown_3005090 + thumb_func_end sub_80AD330 + + thumb_func_start sub_80AD374 +sub_80AD374: @ 80AD374 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080AD3AC @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x26] + ldrh r0, [r1, 0x22] + adds r2, r0 + adds r1, 0x29 + movs r0, 0 + ldrsb r0, [r1, r0] + adds r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080AD3B0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AD3B4 + lsls r0, r4, 16 + movs r1, 0x94 + lsls r1, 15 + b _080AD3BA + .align 2, 0 +_080AD3AC: .4byte gUnknown_202063C +_080AD3B0: .4byte gUnknown_2037F1A +_080AD3B4: + lsls r0, r4, 16 + movs r1, 0xB0 + lsls r1, 14 +_080AD3BA: + adds r0, r1 + lsrs r4, r0, 16 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80AD374 + + thumb_func_start sub_80AD3C8 +sub_80AD3C8: @ 80AD3C8 + movs r3, 0 + strh r3, [r0, 0x2E] + strh r3, [r0, 0x30] + ldrh r3, [r0, 0x20] + lsls r3, 3 + strh r3, [r0, 0x32] + ldrh r3, [r0, 0x22] + lsls r3, 3 + strh r3, [r0, 0x34] + lsls r1, 3 + strh r1, [r0, 0x36] + lsls r2, 3 + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_80AD3C8 + + thumb_func_start sub_80AD3E4 +sub_80AD3E4: @ 80AD3E4 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080AD40E + movs r0, 0 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x30] + adds r1, r0, 0 + muls r1, r0 + adds r0, r1, 0 + ldrh r3, [r2, 0x34] + adds r0, r3 + strh r0, [r2, 0x34] +_080AD40E: + ldrh r0, [r2, 0x36] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 19 + strh r0, [r2, 0x20] + ldrh r1, [r2, 0x38] + ldrh r3, [r2, 0x34] + adds r1, r3 + strh r1, [r2, 0x34] + lsls r1, 16 + asrs r3, r1, 19 + strh r3, [r2, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080AD444 + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080AD444 + cmp r1, 0x78 + ble _080AD450 +_080AD444: + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080AD450: + pop {r0} + bx r0 + thumb_func_end sub_80AD3E4 + + thumb_func_start sub_80AD454 +sub_80AD454: @ 80AD454 + push {r4,r5,lr} + ldr r3, _080AD498 @ =gUnknown_2037F02 + ldrh r1, [r3] + movs r2, 0 + strh r1, [r0, 0x20] + ldrh r1, [r3, 0x2] + strh r1, [r0, 0x22] + strh r2, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r2, [r0, 0x32] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0x3A] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0x3C] + ldrh r4, [r0, 0x4] + lsls r2, r4, 22 + lsrs r2, 22 + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r1, 4 + adds r2, r1 + ldr r3, _080AD49C @ =0x000003ff + adds r1, r3, 0 + ands r2, r1 + ldr r1, _080AD4A0 @ =0xfffffc00 + ands r1, r4 + orrs r1, r2 + strh r1, [r0, 0x4] + ldr r1, _080AD4A4 @ =sub_80AD4A8 + str r1, [r0, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD498: .4byte gUnknown_2037F02 +_080AD49C: .4byte 0x000003ff +_080AD4A0: .4byte 0xfffffc00 +_080AD4A4: .4byte sub_80AD4A8 + thumb_func_end sub_80AD454 + + thumb_func_start sub_80AD4A8 +sub_80AD4A8: @ 80AD4A8 + push {r4,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + beq _080AD4DA + cmp r0, 0x1 + bgt _080AD4BE + cmp r0, 0 + beq _080AD4C4 + b _080AD538 +_080AD4BE: + cmp r0, 0x2 + beq _080AD4F8 + b _080AD538 +_080AD4C4: + ldrh r1, [r2, 0x3A] + movs r3, 0x3A + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080AD4D4 + subs r0, r1, 0x1 + strh r0, [r2, 0x3A] + b _080AD538 +_080AD4D4: + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_080AD4DA: + ldrh r0, [r2, 0x22] + adds r0, 0x8 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + ldrh r3, [r2, 0x3C] + movs r4, 0x3C + ldrsh r1, [r2, r4] + cmp r0, r1 + blt _080AD538 + strh r3, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + b _080AD538 +_080AD4F8: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD524 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD520 + ldr r0, _080AD51C @ =0x0000fffd + b _080AD522 + .align 2, 0 +_080AD51C: .4byte 0x0000fffd +_080AD520: + movs r0, 0x3 +_080AD522: + strh r0, [r2, 0x26] +_080AD524: + ldrh r0, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080AD538 + adds r0, r2, 0 + bl sub_8072740 +_080AD538: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD4A8 + + thumb_func_start sub_80AD540 +sub_80AD540: @ 80AD540 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080AD5B4 + cmp r0, 0x1 + bgt _080AD556 + cmp r0, 0 + beq _080AD55C + b _080AD682 +_080AD556: + cmp r0, 0x2 + beq _080AD612 + b _080AD682 +_080AD55C: + adds r0, r5, 0 + movs r1, 0 + bl sub_8075160 + ldr r4, _080AD584 @ =gUnknown_2037F02 + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_800838C + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3C] + ldr r0, _080AD588 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AD58C + movs r0, 0x4 + b _080AD58E + .align 2, 0 +_080AD584: .4byte gUnknown_2037F02 +_080AD588: .4byte gUnknown_2037F1A +_080AD58C: + ldr r0, _080AD5AC @ =0x0000fffc +_080AD58E: + strh r0, [r5, 0x36] + ldr r0, _080AD5B0 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080AD60A + .align 2, 0 +_080AD5AC: .4byte 0x0000fffc +_080AD5B0: .4byte gUnknown_2037F1B +_080AD5B4: + ldrh r0, [r5, 0x30] + adds r0, 0xC0 + strh r0, [r5, 0x30] + ldr r0, _080AD5D4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AD5D8 + ldrh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + b _080AD5DE + .align 2, 0 +_080AD5D4: .4byte gUnknown_2037F1A +_080AD5D8: + ldrh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 +_080AD5DE: + strh r0, [r5, 0x26] + movs r2, 0x32 + ldrsh r0, [r5, r2] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl sub_8044E30 + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080AD682 + movs r0, 0 + strh r0, [r5, 0x34] +_080AD60A: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080AD682 +_080AD612: + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl sub_8044E30 + adds r2, r0, 0 + movs r3, 0 + strh r2, [r5, 0x24] + ldrh r0, [r5, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080AD682 + ldrh r0, [r5, 0x20] + adds r1, r2, r0 + strh r1, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r3, [r5, 0x26] + strh r3, [r5, 0x24] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + ldr r4, _080AD688 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8075678 + ldr r0, _080AD68C @ =sub_80AD690 + str r0, [r5, 0x1C] +_080AD682: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD688: .4byte gUnknown_2037F1B +_080AD68C: .4byte sub_80AD690 + thumb_func_end sub_80AD540 + + thumb_func_start sub_80AD690 +sub_80AD690: @ 80AD690 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080AD6E8 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x10 + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080AD6C6 + cmp r2, 0xC4 + ble _080AD6EE +_080AD6C6: + lsls r0, 16 + cmp r0, 0 + ble _080AD6EE + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AD6EE + ldr r0, _080AD6E4 @ =gUnknown_2037F24 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x89 + bl sub_80722F4 + b _080AD6EE + .align 2, 0 +_080AD6E4: .4byte gUnknown_2037F24 +_080AD6E8: + adds r0, r4, 0 + bl sub_8072740 +_080AD6EE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD690 + + thumb_func_start sub_80AD6F4 +sub_80AD6F4: @ 80AD6F4 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AD70C + ldr r0, _080AD778 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r4, 0x30] + adds r0, r1, 0x1 + strh r0, [r4, 0x2E] +_080AD70C: + movs r0, 0xC0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0xA0 + strh r0, [r4, 0x36] + movs r2, 0x30 + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x36] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x7 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AD7A8 + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x83 + bls _080AD780 + ldr r0, _080AD77C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080AD7C4 + .align 2, 0 +_080AD778: .4byte gUnknown_2037F02 +_080AD77C: .4byte gUnknown_2037F1B +_080AD780: + ldr r0, _080AD7A4 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080AD7C4 + .align 2, 0 +_080AD7A4: .4byte gUnknown_2037F1B +_080AD7A8: + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x83 + bls _080AD7BC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D + b _080AD7C2 +_080AD7BC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F +_080AD7C2: + strb r0, [r1] +_080AD7C4: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080AD7EC + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AD7EC: + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0x1E + bne _080AD7FA + adds r0, r4, 0 + bl sub_8072740 +_080AD7FA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AD6F4 + + thumb_func_start sub_80AD800 +sub_80AD800: @ 80AD800 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AD860 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r0, _080AD864 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080AD826 + movs r1, 0x1 +_080AD826: + strh r1, [r4, 0x20] + ldr r0, _080AD868 @ =gUnknown_2037F1B + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + movs r0, 0x3 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080AD86C @ =sub_80AD870 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD860: .4byte gUnknown_3005090 +_080AD864: .4byte gUnknown_2037F1A +_080AD868: .4byte gUnknown_2037F1B +_080AD86C: .4byte sub_80AD870 + thumb_func_end sub_80AD800 + + thumb_func_start sub_80AD870 +sub_80AD870: @ 80AD870 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080AD894 @ =gUnknown_3005090 + adds r2, r0, r1 + movs r0, 0x8 + ldrsh r3, [r2, r0] + cmp r3, 0x1 + beq _080AD938 + cmp r3, 0x1 + bgt _080AD898 + cmp r3, 0 + beq _080AD8A6 + b _080ADA98 + .align 2, 0 +_080AD894: .4byte gUnknown_3005090 +_080AD898: + cmp r3, 0x2 + bne _080AD89E + b _080AD9C0 +_080AD89E: + cmp r3, 0x3 + bne _080AD8A4 + b _080ADA54 +_080AD8A4: + b _080ADA98 +_080AD8A6: + movs r1, 0x20 + ldrsh r0, [r2, r1] + lsls r0, 1 + ldrh r5, [r2, 0x1C] + adds r0, r5 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD8D8 + strh r3, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD8D4 + movs r0, 0x2 + b _080AD8D6 +_080AD8D4: + ldr r0, _080AD930 @ =0x0000fffe +_080AD8D6: + strh r0, [r2, 0x1E] +_080AD8D8: + movs r1, 0 + strh r1, [r2, 0xE] + movs r7, 0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080AD91A + ldr r4, _080AD934 @ =gUnknown_202063C + adds r3, r2, 0 + adds r3, 0x8 +_080AD8EA: + movs r1, 0xE + ldrsh r0, [r2, r1] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r5, 0 + ldrsh r0, [r0, r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r7, [r2, 0x1C] + adds r0, r7 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r5, 0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _080AD8EA +_080AD91A: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + beq _080AD92A + b _080ADA98 +_080AD92A: + movs r0, 0 + strh r0, [r2, 0x1A] + b _080ADA44 + .align 2, 0 +_080AD930: .4byte 0x0000fffe +_080AD934: .4byte gUnknown_202063C +_080AD938: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080AD960 + movs r0, 0 + strh r0, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + ands r0, r3 + lsls r0, 16 + cmp r0, 0 + beq _080AD95C + movs r0, 0x2 + b _080AD95E +_080AD95C: + ldr r0, _080AD9B8 @ =0x0000fffe +_080AD95E: + strh r0, [r2, 0x1E] +_080AD960: + movs r1, 0 + strh r1, [r2, 0xE] + movs r7, 0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080AD9A2 + ldr r4, _080AD9BC @ =gUnknown_202063C + adds r3, r2, 0 + adds r3, 0x8 +_080AD972: + movs r1, 0xE + ldrsh r0, [r2, r1] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r5, 0 + ldrsh r0, [r0, r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r7, [r2, 0x1C] + adds r0, r7 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r5, 0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _080AD972 +_080AD9A2: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x60 + bne _080ADA98 + movs r0, 0 + strh r0, [r2, 0x1A] + b _080ADA44 + .align 2, 0 +_080AD9B8: .4byte 0x0000fffe +_080AD9BC: .4byte gUnknown_202063C +_080AD9C0: + movs r7, 0x20 + ldrsh r1, [r2, r7] + lsls r1, 1 + ldrh r0, [r2, 0x1C] + subs r0, r1 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AD9F4 + movs r0, 0 + strh r0, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AD9F0 + strh r3, [r2, 0x1E] + b _080AD9F4 +_080AD9F0: + ldr r0, _080ADA4C @ =0x0000fffe + strh r0, [r2, 0x1E] +_080AD9F4: + movs r1, 0 + strh r1, [r2, 0xE] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080ADA36 + ldr r4, _080ADA50 @ =gUnknown_202063C + adds r3, r2, 0 + adds r3, 0x8 +_080ADA06: + movs r5, 0xE + ldrsh r0, [r2, r5] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r7, 0 + ldrsh r0, [r0, r7] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r5, [r2, 0x1C] + adds r0, r5 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r7, 0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _080ADA06 +_080ADA36: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080ADA98 +_080ADA44: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080ADA98 + .align 2, 0 +_080ADA4C: .4byte 0x0000fffe +_080ADA50: .4byte gUnknown_202063C +_080ADA54: + movs r1, 0 + strh r1, [r2, 0xE] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080ADA92 + ldr r6, _080ADAA0 @ =gUnknown_202063C + adds r3, r2, 0 + adds r3, 0x8 + movs r5, 0 +_080ADA68: + movs r7, 0xE + ldrsh r0, [r2, r7] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r5, [r0, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r7, 0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _080ADA68 +_080ADA92: + adds r0, r4, 0 + bl sub_8072760 +_080ADA98: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADAA0: .4byte gUnknown_202063C + thumb_func_end sub_80AD870 + + thumb_func_start sub_80ADAA4 +sub_80ADAA4: @ 80ADAA4 + push {r4,lr} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + ldr r1, _080ADAD4 @ =gUnknown_2037F02 + ldrb r2, [r1] + ldrh r3, [r1, 0x2] + movs r1, 0x10 + bl sub_8045274 + adds r0, r4, 0 + bl sub_8072760 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADAD4: .4byte gUnknown_2037F02 + thumb_func_end sub_80ADAA4 + + thumb_func_start sub_80ADAD8 +sub_80ADAD8: @ 80ADAD8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080ADB30 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0x8 + ldrsh r0, [r2, r3] + mov r9, r1 + ldr r4, _080ADB34 @ =gUnknown_2037F02 + mov r8, r4 + cmp r0, 0 + bne _080ADB0E + ldrh r0, [r4] + strh r0, [r2, 0xA] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0xC] + ldrh r0, [r4, 0x4] + strh r0, [r2, 0xE] + ldrh r0, [r4, 0x6] + strh r0, [r2, 0x10] +_080ADB0E: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + ldr r1, _080ADB38 @ =gUnknown_2023D44 + ldr r0, _080ADB3C @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r0, r1 + ldrb r6, [r0] + movs r5, 0x10 + ldrsh r0, [r2, r5] + cmp r0, 0 + bne _080ADB44 + ldr r4, _080ADB40 @ =gUnknown_83E5EFC + movs r1, 0x8 + ldrsh r0, [r2, r1] + b _080ADB4A + .align 2, 0 +_080ADB30: .4byte gUnknown_3005090 +_080ADB34: .4byte gUnknown_2037F02 +_080ADB38: .4byte gUnknown_2023D44 +_080ADB3C: .4byte gUnknown_2037F1B +_080ADB40: .4byte gUnknown_83E5EFC +_080ADB44: + ldr r4, _080ADB90 @ =gUnknown_83E5F0C + movs r3, 0x8 + ldrsh r0, [r2, r3] +_080ADB4A: + movs r1, 0xA + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + adds r0, r4 + ldrb r5, [r0] + lsls r0, r7, 2 + adds r1, r0, r7 + lsls r1, 3 + add r1, r9 + movs r4, 0xE + ldrsh r1, [r1, r4] + mov r12, r0 + cmp r1, 0x1 + bne _080ADB98 + ldr r2, _080ADB94 @ =gUnknown_202063C + lsls r3, r6, 4 + adds r0, r3, r6 + lsls r0, 2 + adds r0, r2 + mov r10, r0 + mov r0, r8 + movs r4, 0x2 + ldrsh r1, [r0, r4] + lsls r0, r5, 24 + asrs r0, 24 + muls r0, r1 + cmp r0, 0 + bge _080ADB88 + negs r0, r0 +_080ADB88: + mov r5, r10 + strh r0, [r5, 0x26] + b _080ADBB2 + .align 2, 0 +_080ADB90: .4byte gUnknown_83E5F0C +_080ADB94: .4byte gUnknown_202063C +_080ADB98: + ldr r3, _080ADBE8 @ =gUnknown_202063C + lsls r4, r6, 4 + adds r2, r4, r6 + lsls r2, 2 + adds r2, r3 + lsls r0, r5, 24 + asrs r0, 24 + mov r5, r8 + ldrh r1, [r5, 0x2] + muls r0, r1 + strh r0, [r2, 0x24] + adds r2, r3, 0 + adds r3, r4, 0 +_080ADBB2: + mov r1, r12 + adds r0, r1, r7 + lsls r0, 3 + add r0, r9 + movs r4, 0x8 + ldrsh r1, [r0, r4] + movs r5, 0xA + ldrsh r0, [r0, r5] + cmp r1, r0 + bne _080ADBD8 + adds r0, r3, r6 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x24] + strh r1, [r0, 0x26] + adds r0, r7, 0 + bl sub_8072760 +_080ADBD8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADBE8: .4byte gUnknown_202063C + thumb_func_end sub_80ADAD8 + + thumb_func_start sub_80ADBEC +sub_80ADBEC: @ 80ADBEC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ADC0C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080ADC14 + ldr r0, _080ADC10 @ =gUnknown_2037F02 + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080ADC20 + .align 2, 0 +_080ADC0C: .4byte gUnknown_2037F1A +_080ADC10: .4byte gUnknown_2037F02 +_080ADC14: + ldr r1, _080ADC34 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_080ADC20: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080ADC38 @ =sub_80ADC3C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADC34: .4byte gUnknown_2037F02 +_080ADC38: .4byte sub_80ADC3C + thumb_func_end sub_80ADBEC + + thumb_func_start sub_80ADC3C +sub_80ADC3C: @ 80ADC3C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080ADC52 + adds r0, r2, 0 + bl sub_8072740 +_080ADC52: + pop {r0} + bx r0 + thumb_func_end sub_80ADC3C + + thumb_func_start sub_80ADC58 +sub_80ADC58: @ 80ADC58 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ADC78 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080ADC80 + ldr r0, _080ADC7C @ =gUnknown_2037F02 + ldrh r1, [r4, 0x20] + ldrh r0, [r0] + subs r1, r0 + strh r1, [r4, 0x20] + b _080ADC8A + .align 2, 0 +_080ADC78: .4byte gUnknown_2037F1A +_080ADC7C: .4byte gUnknown_2037F02 +_080ADC80: + ldr r0, _080ADC94 @ =gUnknown_2037F02 + ldrh r0, [r0] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] +_080ADC8A: + ldr r0, _080ADC98 @ =sub_80ADC9C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADC94: .4byte gUnknown_2037F02 +_080ADC98: .4byte sub_80ADC9C + thumb_func_end sub_80ADC58 + + thumb_func_start sub_80ADC9C +sub_80ADC9C: @ 80ADC9C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080ADCB2 + adds r0, r2, 0 + bl sub_8074EE0 +_080ADCB2: + pop {r0} + bx r0 + thumb_func_end sub_80ADC9C + + thumb_func_start sub_80ADCB8 +sub_80ADCB8: @ 80ADCB8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080ADCFC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080ADD00 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080ADD08 + ldr r2, _080ADD04 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + ldrh r1, [r2, 0x2] + subs r0, r1 + strh r0, [r5, 0x22] + b _080ADD1C + .align 2, 0 +_080ADCFC: .4byte gUnknown_2037F1B +_080ADD00: .4byte gUnknown_2037F1A +_080ADD04: .4byte gUnknown_2037F02 +_080ADD08: + ldr r0, _080ADD40 @ =gUnknown_2037F02 + ldrh r1, [r0] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x20] + ldrh r1, [r0, 0x2] + ldrh r2, [r5, 0x22] + adds r1, r2 + strh r1, [r5, 0x22] + adds r2, r0, 0 +_080ADD1C: + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x30] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x32] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x34] + ldr r1, _080ADD44 @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080ADD48 @ =sub_8074A80 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ADD40: .4byte gUnknown_2037F02 +_080ADD44: .4byte sub_8074EE0 +_080ADD48: .4byte sub_8074A80 + thumb_func_end sub_80ADCB8 + + thumb_func_start sub_80ADD4C +sub_80ADD4C: @ 80ADD4C + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080ADD64 @ =gUnknown_2037F02 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080ADDC4 + cmp r0, 0x1 + bgt _080ADD68 + cmp r0, 0 + beq _080ADD72 + b _080ADDC4 + .align 2, 0 +_080ADD64: .4byte gUnknown_2037F02 +_080ADD68: + cmp r0, 0x2 + beq _080ADD7C + cmp r0, 0x3 + beq _080ADDA0 + b _080ADDC4 +_080ADD72: + ldr r0, _080ADD78 @ =gUnknown_2037F1A + b _080ADDC6 + .align 2, 0 +_080ADD78: .4byte gUnknown_2037F1A +_080ADD7C: + ldr r4, _080ADD94 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r6, 0x2 + eors r0, r6 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _080ADD98 + ldrb r4, [r4] + b _080ADDC8 + .align 2, 0 +_080ADD94: .4byte gUnknown_2037F1A +_080ADD98: + ldrb r0, [r4] + adds r4, r6, 0 + eors r4, r0 + b _080ADDC8 +_080ADDA0: + ldr r0, _080ADDBC @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080ADDC4 + ldr r0, _080ADDC0 @ =gUnknown_2037F1B + ldrb r0, [r0] + eors r4, r0 + b _080ADDC8 + .align 2, 0 +_080ADDBC: .4byte gUnknown_2037F1A +_080ADDC0: .4byte gUnknown_2037F1B +_080ADDC4: + ldr r0, _080ADDE8 @ =gUnknown_2037F1B +_080ADDC6: + ldrb r4, [r0] +_080ADDC8: + ldr r0, _080ADDEC @ =gUnknown_2037F02 + movs r2, 0xA + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080ADDF0 + adds r0, r4, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r4, 0 + movs r1, 0x1 + b _080ADE02 + .align 2, 0 +_080ADDE8: .4byte gUnknown_2037F1B +_080ADDEC: .4byte gUnknown_2037F02 +_080ADDF0: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r4, 0 + movs r1, 0x3 +_080ADE02: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r7, _080ADEA0 @ =gUnknown_825E074 + ldr r6, _080ADEA4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + lsls r0, 1 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x24] + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, 0x40 + lsls r0, 1 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x26] + ldrh r1, [r6, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080ADE66 + adds r0, r4, 0 + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] +_080ADE66: + ldrb r2, [r5, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r0, 0x4 + ldrsh r1, [r6, r0] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + ldr r3, _080ADEA8 @ =gUnknown_2021BCC + lsls r2, 3 + adds r2, r3 + adds r1, 0x40 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + strh r1, [r2, 0x6] + strh r1, [r2] + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x2E] + ldr r0, _080ADEAC @ =sub_80B1D3C + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ADEA0: .4byte gUnknown_825E074 +_080ADEA4: .4byte gUnknown_2037F02 +_080ADEA8: .4byte gUnknown_2021BCC +_080ADEAC: .4byte sub_80B1D3C + thumb_func_end sub_80ADD4C + + thumb_func_start sub_80ADEB0 +sub_80ADEB0: @ 80ADEB0 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080ADF24 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r6, _080ADF28 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x38] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x3A] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x3C] + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080ADF2C @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080ADF30 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r1, _080ADF34 @ =sub_80ADF38 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ADF24: .4byte gUnknown_2037F02 +_080ADF28: .4byte gUnknown_2037F1B +_080ADF2C: .4byte 0x000003ff +_080ADF30: .4byte 0xfffffc00 +_080ADF34: .4byte sub_80ADF38 + thumb_func_end sub_80ADEB0 + + thumb_func_start sub_80ADF38 +sub_80ADF38: @ 80ADF38 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080ADFA2 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080ADFA8 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080ADFA8 +_080ADFA2: + adds r0, r4, 0 + bl sub_8072740 +_080ADFA8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ADF38 + + thumb_func_start sub_80ADFB0 +sub_80ADFB0: @ 80ADFB0 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x38] + subs r0, 0x1 + strh r0, [r3, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080ADFE8 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x36] + strh r0, [r3, 0x38] +_080ADFE8: + ldrh r0, [r3, 0x34] + subs r1, r0, 0x1 + strh r1, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bgt _080ADFFA + adds r0, r3, 0 + bl sub_8072740 +_080ADFFA: + pop {r0} + bx r0 + thumb_func_end sub_80ADFB0 + + thumb_func_start sub_80AE000 +sub_80AE000: @ 80AE000 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AE01C + ldr r0, _080AE060 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AE024 +_080AE01C: + ldr r1, _080AE064 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_080AE024: + ldr r5, _080AE060 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080AE064 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4] + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x36] + strh r0, [r6, 0x38] + ldr r0, _080AE068 @ =sub_80ADFB0 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AE060: .4byte gUnknown_2037F1B +_080AE064: .4byte gUnknown_2037F02 +_080AE068: .4byte sub_80ADFB0 + thumb_func_end sub_80AE000 + + thumb_func_start sub_80AE06C +sub_80AE06C: @ 80AE06C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r1, _080AE088 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x2E] + movs r2, 0xE + ldrsh r0, [r1, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080AE090 + ldr r0, _080AE08C @ =gUnknown_2037F1B + b _080AE092 + .align 2, 0 +_080AE088: .4byte gUnknown_2037F02 +_080AE08C: .4byte gUnknown_2037F1B +_080AE090: + ldr r0, _080AE118 @ =gUnknown_2037F1A +_080AE092: + ldrb r6, [r0] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AE0AA + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AE0B2 +_080AE0AA: + ldr r1, _080AE11C @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080AE0B2: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080AE11C @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r3, [r4] + adds r0, r3 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r1, [r4, 0xE] + ldr r0, _080AE120 @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x38] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x3C] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080AE124 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080AE128 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r1, _080AE12C @ =sub_80AE130 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AE118: .4byte gUnknown_2037F1A +_080AE11C: .4byte gUnknown_2037F02 +_080AE120: .4byte 0x00007fff +_080AE124: .4byte 0x000003ff +_080AE128: .4byte 0xfffffc00 +_080AE12C: .4byte sub_80AE130 + thumb_func_end sub_80AE06C + + thumb_func_start sub_80AE130 +sub_80AE130: @ 80AE130 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _080AE186 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AE186: + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080AE198 + adds r0, r4, 0 + bl sub_8072740 +_080AE198: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AE130 + + thumb_func_start sub_80AE1A0 +sub_80AE1A0: @ 80AE1A0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075114 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, _080AE1DC @ =gUnknown_2037F02 + movs r5, 0x6 + ldrsh r0, [r3, r5] + lsls r0, 2 + adds r1, r0 + ldr r5, _080AE1E0 @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _080AE1E4 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x6 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + bne _080AE1E8 + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + b _080AE1F6 + .align 2, 0 +_080AE1DC: .4byte gUnknown_2037F02 +_080AE1E0: .4byte 0x000003ff +_080AE1E4: .4byte 0xfffffc00 +_080AE1E8: + cmp r0, 0x2 + bne _080AE1FA + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x20 +_080AE1F6: + orrs r1, r0 + strb r1, [r4, 0x3] +_080AE1FA: + ldr r0, _080AE214 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080AE218 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080AE21C @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE214: .4byte gUnknown_2037F02 +_080AE218: .4byte sub_8074C44 +_080AE21C: .4byte sub_8072740 + thumb_func_end sub_80AE1A0 + + thumb_func_start sub_80AE220 +sub_80AE220: @ 80AE220 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _080AE268 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + ldr r1, _080AE26C @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + ldr r5, _080AE270 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r4, 0x8] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldr r0, _080AE274 @ =sub_80AE278 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AE268: .4byte gUnknown_2037F1B +_080AE26C: .4byte gUnknown_3005090 +_080AE270: .4byte gUnknown_2037F02 +_080AE274: .4byte sub_80AE278 + thumb_func_end sub_80AE220 + + thumb_func_start sub_80AE278 +sub_80AE278: @ 80AE278 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r5, 0 + movs r7, 0 + ldr r1, _080AE2B8 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrb r2, [r0, 0xC] + str r2, [sp] + ldrh r4, [r0, 0x8] + ldrh r6, [r0, 0xA] + movs r3, 0xC + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0 + bne _080AE2BC + movs r0, 0 + mov r8, r0 + movs r2, 0x1 + movs r1, 0x10 + mov r12, r1 + b _080AE2C6 + .align 2, 0 +_080AE2B8: .4byte gUnknown_3005090 +_080AE2BC: + movs r2, 0x10 + mov r12, r2 + movs r3, 0x8 + mov r8, r3 + movs r2, 0x4 +_080AE2C6: + mov r0, r9 + lsls r1, r0, 2 + adds r0, r1, r0 + lsls r0, 3 + add r0, r10 + movs r3, 0x1C + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0xA + bhi _080AE3BC + lsls r0, 2 + ldr r1, _080AE2E4 @ =_080AE2E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AE2E4: .4byte _080AE2E8 + .align 2, 0 +_080AE2E8: + .4byte _080AE314 + .4byte _080AE3BC + .4byte _080AE328 + .4byte _080AE3BC + .4byte _080AE348 + .4byte _080AE3BC + .4byte _080AE35E + .4byte _080AE3BC + .4byte _080AE380 + .4byte _080AE3BC + .4byte _080AE3B4 +_080AE314: + ldr r0, _080AE324 @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + mov r4, r12 + lsls r3, r4, 16 + b _080AE396 + .align 2, 0 +_080AE324: .4byte gUnknown_83E60A0 +_080AE328: + mov r0, r12 + lsls r3, r0, 17 + mov r1, r8 + adds r0, r1, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080AE344 @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080AE396 + .align 2, 0 +_080AE344: .4byte gUnknown_83E60A0 +_080AE348: + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + lsls r3, r0, 1 + adds r3, r0 + lsls r0, r2, 1 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + b _080AE38A +_080AE35E: + mov r0, r12 + lsls r3, r0, 18 + lsls r0, r2, 1 + adds r0, r2 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080AE37C @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080AE396 + .align 2, 0 +_080AE37C: .4byte gUnknown_83E60A0 +_080AE380: + mov r1, r12 + lsls r0, r1, 16 + asrs r0, 16 + lsls r3, r0, 2 + adds r3, r0 +_080AE38A: + ldr r0, _080AE3B0 @ =gUnknown_83E60A0 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + lsls r3, 16 +_080AE396: + asrs r3, 16 + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _080AE3BC + .align 2, 0 +_080AE3B0: .4byte gUnknown_83E60A0 +_080AE3B4: + mov r0, r9 + bl sub_8072760 + b _080AE400 +_080AE3BC: + cmp r7, 0 + beq _080AE3F0 + ldr r4, _080AE410 @ =gUnknown_202063C + lsls r3, r5, 4 + adds r3, r5 + lsls r3, 2 + adds r0, r3, r4 + ldrh r5, [r0, 0x4] + lsls r2, r5, 22 + lsrs r2, 22 + add r2, r8 + ldr r6, _080AE414 @ =0x000003ff + adds r1, r6, 0 + ands r2, r1 + ldr r1, _080AE418 @ =0xfffffc00 + ands r1, r5 + orrs r1, r2 + strh r1, [r0, 0x4] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, 0x2E] + adds r4, 0x1C + adds r3, r4 + ldr r1, [r3] + bl _call_via_r1 +_080AE3F0: + ldr r0, _080AE41C @ =gUnknown_3005090 + mov r1, r10 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + strh r0, [r1, 0x1C] +_080AE400: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AE410: .4byte gUnknown_202063C +_080AE414: .4byte 0x000003ff +_080AE418: .4byte 0xfffffc00 +_080AE41C: .4byte gUnknown_3005090 + thumb_func_end sub_80AE278 + + thumb_func_start sub_80AE420 +sub_80AE420: @ 80AE420 + push {lr} + adds r3, r0, 0 + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080AE442 + ldrb r1, [r3, 0x1] + movs r2, 0x3F + adds r0, r2, 0 + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r2, r0 + strb r2, [r3, 0x3] + b _080AE456 +_080AE442: + ldrb r2, [r3, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r1, r0 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r3, 0x3] +_080AE456: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bne _080AE46A + adds r0, r3, 0 + bl sub_8007280 +_080AE46A: + pop {r0} + bx r0 + thumb_func_end sub_80AE420 + + thumb_func_start sub_80AE470 +sub_80AE470: @ 80AE470 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080AE4D8 @ =gUnknown_2037F02 + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + ldr r0, _080AE4DC @ =gUnknown_83E60B8 + adds r1, 0x20 + lsls r1, 16 + asrs r1, 16 + movs r7, 0x22 + ldrsh r2, [r4, r7] + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080AE4E0 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r6, r2, r3 + ldrh r5, [r6, 0x4] + lsls r1, r5, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r7, _080AE4E4 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080AE4E8 @ =0xfffffc00 + ands r0, r5 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080AE4EC @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + adds r3, 0x1C + adds r2, r3 + ldr r0, _080AE4F0 @ =sub_80AE4F4 + str r0, [r2] + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AE4D8: .4byte gUnknown_2037F02 +_080AE4DC: .4byte gUnknown_83E60B8 +_080AE4E0: .4byte gUnknown_202063C +_080AE4E4: .4byte 0x000003ff +_080AE4E8: .4byte 0xfffffc00 +_080AE4EC: .4byte gUnknown_2037EE2 +_080AE4F0: .4byte sub_80AE4F4 + thumb_func_end sub_80AE470 + + thumb_func_start sub_80AE4F4 +sub_80AE4F4: @ 80AE4F4 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080AE528 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080AE528: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080AE53C + adds r0, r3, 0 + bl sub_8072740 +_080AE53C: + pop {r0} + bx r0 + thumb_func_end sub_80AE4F4 + + thumb_func_start sub_80AE540 +sub_80AE540: @ 80AE540 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080AE560 @ =gUnknown_3005090 + adds r5, r1, r0 + ldr r0, _080AE564 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AE56C + ldr r4, _080AE568 @ =gUnknown_2037F1A + b _080AE56E + .align 2, 0 +_080AE560: .4byte gUnknown_3005090 +_080AE564: .4byte gUnknown_2037F02 +_080AE568: .4byte gUnknown_2037F1A +_080AE56C: + ldr r4, _080AE5B0 @ =gUnknown_2037F1B +_080AE56E: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x26] + ldr r2, _080AE5B4 @ =gUnknown_2037F02 + ldrh r0, [r2, 0x2] + movs r1, 0 + strh r0, [r5, 0x14] + strh r1, [r5, 0x16] + strh r1, [r5, 0x18] + strh r1, [r5, 0x1A] + strh r1, [r5, 0x1C] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x1E] + strh r1, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x22] + ldr r0, _080AE5B8 @ =sub_80AE5BC + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE5B0: .4byte gUnknown_2037F1B +_080AE5B4: .4byte gUnknown_2037F02 +_080AE5B8: .4byte sub_80AE5BC + thumb_func_end sub_80AE540 + + thumb_func_start sub_80AE5BC +sub_80AE5BC: @ 80AE5BC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r2, r6, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080AE6A4 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080AE6BC + ldrh r0, [r5, 0x20] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x20] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x22 + ldrsh r1, [r5, r2] + cmp r0, r1 + ble _080AE6CA + strh r7, [r5, 0x20] + ldr r0, _080AE6A8 @ =gUnknown_83E6120 + movs r3, 0x24 + ldrsh r1, [r5, r3] + movs r3, 0x26 + ldrsh r2, [r5, r3] + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080AE6CA + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _080AE6AC @ =gUnknown_202063C + adds r4, r0 + ldr r1, _080AE6B0 @ =gUnknown_83E60D0 + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, 0x20] + adds r3, r0 + strh r3, [r4, 0x20] + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + movs r2, 0 + ldrsb r2, [r0, r2] + ldrh r0, [r4, 0x22] + adds r2, r0 + strh r2, [r4, 0x22] + movs r1, 0x18 + ldrsh r0, [r5, r1] + lsls r1, r0, 2 + adds r1, r0 + movs r0, 0x28 + subs r0, r1 + strh r0, [r4, 0x2E] + strh r3, [r4, 0x30] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + ldrh r0, [r5, 0x26] + strh r0, [r4, 0x36] + strh r6, [r4, 0x38] + adds r0, r4, 0 + bl sub_80754F8 + ldr r1, _080AE6B4 @ =sub_80AE704 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080AE6B8 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + strh r0, [r5, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080AE674 + strh r7, [r5, 0x1A] +_080AE674: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1E + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080AE696 + strh r7, [r5, 0x1C] + ldrh r1, [r5, 0x18] + movs r3, 0x18 + ldrsh r0, [r5, r3] + cmp r0, 0x5 + bgt _080AE696 + adds r0, r1, 0x1 + strh r0, [r5, 0x18] +_080AE696: + ldrh r0, [r5, 0x16] + adds r0, 0x1 + strh r0, [r5, 0x16] + ldrh r0, [r5, 0x14] + subs r0, 0x1 + strh r0, [r5, 0x14] + b _080AE6CA + .align 2, 0 +_080AE6A4: .4byte gUnknown_3005090 +_080AE6A8: .4byte gUnknown_83E6120 +_080AE6AC: .4byte gUnknown_202063C +_080AE6B0: .4byte gUnknown_83E60D0 +_080AE6B4: .4byte sub_80AE704 +_080AE6B8: .4byte sub_8074F6C +_080AE6BC: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AE6CA + adds r0, r2, 0 + bl sub_8072760 +_080AE6CA: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80AE5BC + + thumb_func_start sub_80AE6D0 +sub_80AE6D0: @ 80AE6D0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080AE6F8 + ldr r2, _080AE700 @ =gUnknown_3005090 + movs r0, 0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x16] + subs r1, 0x1 + strh r1, [r0, 0x16] + adds r0, r4, 0 + bl sub_8007280 +_080AE6F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE700: .4byte gUnknown_3005090 + thumb_func_end sub_80AE6D0 + + thumb_func_start sub_80AE704 +sub_80AE704: @ 80AE704 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_800838C + ldr r0, _080AE718 @ =sub_80AE6D0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE718: .4byte sub_80AE6D0 + thumb_func_end sub_80AE704 + + thumb_func_start sub_80AE71C +sub_80AE71C: @ 80AE71C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080AE730 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AE738 + ldr r4, _080AE734 @ =gUnknown_2037F1A + b _080AE73A + .align 2, 0 +_080AE730: .4byte gUnknown_2037F02 +_080AE734: .4byte gUnknown_2037F1A +_080AE738: + ldr r4, _080AE768 @ =gUnknown_2037F1B +_080AE73A: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080AE76C @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080AE770 @ =sub_8074F50 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE768: .4byte gUnknown_2037F1B +_080AE76C: .4byte sub_8074EE0 +_080AE770: .4byte sub_8074F50 + thumb_func_end sub_80AE71C + + thumb_func_start sub_80AE774 +sub_80AE774: @ 80AE774 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080AE788 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080AE790 + ldr r4, _080AE78C @ =gUnknown_2037F1A + b _080AE792 + .align 2, 0 +_080AE788: .4byte gUnknown_2037F02 +_080AE78C: .4byte gUnknown_2037F1A +_080AE790: + ldr r4, _080AE7CC @ =gUnknown_2037F1B +_080AE792: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080AE7D0 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x24] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x26] + ldr r1, _080AE7D4 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080AE7D8 @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE7CC: .4byte gUnknown_2037F1B +_080AE7D0: .4byte gUnknown_2037F02 +_080AE7D4: .4byte sub_8072740 +_080AE7D8: .4byte sub_8074F6C + thumb_func_end sub_80AE774 + + thumb_func_start sub_80AE7DC +sub_80AE7DC: @ 80AE7DC + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_800843C + ldr r4, _080AE834 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + movs r0, 0x10 + strh r0, [r5, 0x3C] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080AE82A + movs r1, 0x3C + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x3C] +_080AE82A: + ldr r0, _080AE838 @ =sub_80AE83C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE834: .4byte gUnknown_2037F1A +_080AE838: .4byte sub_80AE83C + thumb_func_end sub_80AE7DC + + thumb_func_start sub_80AE83C +sub_80AE83C: @ 80AE83C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AE84E + cmp r0, 0x1 + beq _080AE864 + b _080AE894 +_080AE84E: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080AE894 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080AE894 +_080AE864: + ldrh r2, [r4, 0x3C] + ldrh r1, [r4, 0x20] + adds r0, r2, r1 + strh r0, [r4, 0x20] + ldr r3, _080AE89C @ =gUnknown_202063C + movs r0, 0x3A + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + adds r2, r1 + strh r2, [r0, 0x24] + ldrh r0, [r4, 0x20] + adds r0, 0x50 + lsls r0, 16 + movs r1, 0xC8 + lsls r1, 17 + cmp r0, r1 + bls _080AE894 + adds r0, r4, 0 + bl sub_8074EE0 +_080AE894: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE89C: .4byte gUnknown_202063C + thumb_func_end sub_80AE83C + + thumb_func_start sub_80AE8A0 +sub_80AE8A0: @ 80AE8A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080AE8C4 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080AE934 + cmp r0, 0x1 + bgt _080AE8C8 + cmp r0, 0 + beq _080AE8D4 + b _080AEA04 + .align 2, 0 +_080AE8C4: .4byte gUnknown_3005090 +_080AE8C8: + cmp r0, 0x2 + beq _080AE990 + cmp r0, 0x3 + bne _080AE8D2 + b _080AE9E4 +_080AE8D2: + b _080AEA04 +_080AE8D4: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0x26] + ldr r4, _080AE908 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AE910 + ldr r0, _080AE90C @ =0x0000ffe0 + strh r0, [r5, 0x24] + movs r0, 0x2 + b _080AE916 + .align 2, 0 +_080AE908: .4byte gUnknown_2037F1A +_080AE90C: .4byte 0x0000ffe0 +_080AE910: + movs r0, 0x20 + strh r0, [r5, 0x24] + ldr r0, _080AE92C @ =0x0000fffe +_080AE916: + strh r0, [r5, 0x22] + ldr r2, _080AE930 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r5, 0x24] + strh r1, [r0, 0x24] + b _080AE9D6 + .align 2, 0 +_080AE92C: .4byte 0x0000fffe +_080AE930: .4byte gUnknown_202063C +_080AE934: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AEA04 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r4, _080AE98C @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r5, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r5, 0x24] + movs r2, 0x24 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AE9D6 + ldrh r2, [r5, 0x22] + adds r2, r1, r2 + strh r2, [r5, 0x24] + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x24] + b _080AEA04 + .align 2, 0 +_080AE98C: .4byte gUnknown_202063C +_080AE990: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AEA04 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r1, _080AE9E0 @ =gUnknown_202063C + movs r2, 0x26 + ldrsh r0, [r5, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bne _080AEA04 +_080AE9D6: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080AEA04 + .align 2, 0 +_080AE9E0: .4byte gUnknown_202063C +_080AE9E4: + ldr r2, _080AEA0C @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r3, 0 + bl sub_8072760 +_080AEA04: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AEA0C: .4byte gUnknown_202063C + thumb_func_end sub_80AE8A0 + + thumb_func_start sub_80AEA10 +sub_80AEA10: @ 80AEA10 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080AEA34 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080AEA2A + b _080AEB50 +_080AEA2A: + cmp r0, 0x1 + bgt _080AEA38 + cmp r0, 0 + beq _080AEA40 + b _080AEB92 + .align 2, 0 +_080AEA34: .4byte gUnknown_3005090 +_080AEA38: + cmp r0, 0x2 + bne _080AEA3E + b _080AEB84 +_080AEA3E: + b _080AEB92 +_080AEA40: + ldr r4, _080AEA80 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080AEA56 + movs r1, 0x1 +_080AEA56: + movs r6, 0 + strh r1, [r5, 0xA] + ldr r0, _080AEA84 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r2, [r0, r1] + adds r3, r0, 0 + cmp r2, 0 + beq _080AEA8C + cmp r2, 0x4 + beq _080AEAB4 + ldrh r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080AEAEC + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0xE] + ldr r0, _080AEA88 @ =0x0000fff0 + b _080AEAF4 + .align 2, 0 +_080AEA80: .4byte gUnknown_2037F1A +_080AEA84: .4byte gUnknown_2037F02 +_080AEA88: .4byte 0x0000fff0 +_080AEA8C: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 7 + adds r0, 0x78 + strh r0, [r5, 0x10] + b _080AEB2A +_080AEAB4: + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r1, 7 + movs r0, 0x78 + subs r0, r1 + strh r0, [r5, 0xE] + ldr r4, _080AEAE8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xA + ldrsh r1, [r5, r2] + lsls r1, 5 + subs r0, r1 + strh r0, [r5, 0x10] + b _080AEB2A + .align 2, 0 +_080AEAE8: .4byte gUnknown_2037F1B +_080AEAEC: + ldr r0, _080AEB10 @ =0x0000fff0 + strh r0, [r5, 0xE] + movs r0, 0x80 + lsls r0, 1 +_080AEAF4: + strh r0, [r5, 0x10] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080AEB14 + movs r2, 0 + ldrsh r0, [r3, r2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + movs r0, 0x50 + subs r0, r1 + strh r0, [r5, 0x12] + b _080AEB2A + .align 2, 0 +_080AEB10: .4byte 0x0000fff0 +_080AEB14: + movs r0, 0 + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, 0x28 + strh r0, [r5, 0x12] + ldrh r1, [r5, 0xE] + ldrh r0, [r5, 0x10] + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] +_080AEB2A: + movs r2, 0xE + ldrsh r1, [r5, r2] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _080AEB40 + movs r1, 0 + movs r0, 0x1 + strh r0, [r5, 0xA] + strh r1, [r5, 0x14] + b _080AEB7C +_080AEB40: + ldr r0, _080AEB4C @ =0x0000ffff + strh r0, [r5, 0xA] + movs r0, 0x3 + strh r0, [r5, 0x14] + b _080AEB7C + .align 2, 0 +_080AEB4C: .4byte 0x0000ffff +_080AEB50: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + cmp r0, 0 + ble _080AEB92 + movs r0, 0 + strh r0, [r5, 0xC] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80AEB98 + lsls r0, 24 + cmp r0, 0 + bne _080AEB7C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80AEB98 + lsls r0, 24 + cmp r0, 0 + beq _080AEB92 +_080AEB7C: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080AEB92 +_080AEB84: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AEB92 + adds r0, r4, 0 + bl sub_8072760 +_080AEB92: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80AEA10 + + thumb_func_start sub_80AEB98 +sub_80AEB98: @ 80AEB98 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080AEC24 @ =gUnknown_83E6278 + movs r2, 0xE + ldrsh r1, [r4, r2] + movs r3, 0x12 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080AEBCE + ldr r1, _080AEC28 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x3A] + movs r1, 0x7 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080AEBCE: + ldrh r1, [r4, 0xA] + ldrh r5, [r4, 0x14] + adds r0, r1, r5 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bge _080AEBE0 + movs r0, 0x3 + strh r0, [r4, 0x14] +_080AEBE0: + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + ble _080AEBEC + movs r0, 0 + strh r0, [r4, 0x14] +_080AEBEC: + movs r3, 0xA + ldrsh r0, [r4, r3] + lsls r0, 4 + ldrh r5, [r4, 0xE] + adds r2, r0, r5 + strh r2, [r4, 0xE] + lsls r0, r1, 16 + asrs r3, r0, 16 + cmp r3, 0x1 + bne _080AEC0C + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x10 + ldrsh r1, [r4, r5] + cmp r0, r1 + bge _080AEC20 +_080AEC0C: + movs r0, 0x1 + negs r0, r0 + cmp r3, r0 + bne _080AEC2C + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x10 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _080AEC2C +_080AEC20: + movs r0, 0x1 + b _080AEC2E + .align 2, 0 +_080AEC24: .4byte gUnknown_83E6278 +_080AEC28: .4byte gUnknown_202063C +_080AEC2C: + movs r0, 0 +_080AEC2E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80AEB98 + + thumb_func_start sub_80AEC34 +sub_80AEC34: @ 80AEC34 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080AEC74 + ldr r3, _080AEC7C @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8007280 +_080AEC74: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AEC7C: .4byte gUnknown_3005090 + thumb_func_end sub_80AEC34 + + thumb_func_start sub_80AEC80 +sub_80AEC80: @ 80AEC80 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080AEC92 + cmp r0, 0x1 + beq _080AECC4 + b _080AECD8 +_080AEC92: + ldr r4, _080AECC0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_800843C + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080AECD8 + .align 2, 0 +_080AECC0: .4byte gUnknown_2037F1A +_080AECC4: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080AECD8 + adds r0, r5, 0 + bl sub_8074EE0 +_080AECD8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AEC80 + + thumb_func_start sub_80AECE0 +sub_80AECE0: @ 80AECE0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080AED04 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080AECFA + b _080AEE6C +_080AECFA: + lsls r0, 2 + ldr r1, _080AED08 @ =_080AED0C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AED04: .4byte gUnknown_3005090 +_080AED08: .4byte _080AED0C + .align 2, 0 +_080AED0C: + .4byte _080AED20 + .4byte _080AEDB0 + .4byte _080AEDEC + .4byte _080AEE48 + .4byte _080AEE58 +_080AED20: + ldr r4, _080AEDA4 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + ldr r0, _080AEDA8 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x1C] + movs r2, 0x1C + ldrsh r0, [r5, r2] + movs r2, 0x14 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x5 + bl __divsi3 + strh r0, [r5, 0x1A] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080AEDAC @ =0x0000ffff + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + subs r0, 0x4C + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x20] + movs r0, 0x3F + bl sub_8073A44 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x22] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x24] + movs r1, 0x22 + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + b _080AEE6A + .align 2, 0 +_080AEDA4: .4byte gUnknown_2037F1A +_080AEDA8: .4byte gUnknown_2037F1B +_080AEDAC: .4byte 0x0000ffff +_080AEDB0: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + cmp r0, 0 + ble _080AEDE0 + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80AEE74 + lsls r0, 24 + cmp r0, 0 + beq _080AEDE0 + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0x5 + bne _080AEDDA + movs r0, 0x3 + b _080AEDDE +_080AEDDA: + ldrh r0, [r5, 0x8] + adds r0, 0x1 +_080AEDDE: + strh r0, [r5, 0x8] +_080AEDE0: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AEE6C + b _080AEE62 +_080AEDEC: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AEDFA + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] +_080AEDFA: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + movs r3, 0 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080AEE6C + strh r3, [r5, 0xA] + ldrh r1, [r5, 0xC] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080AEE26 + movs r0, 0x4 + strh r0, [r5, 0x16] + movs r0, 0x44 + strh r0, [r5, 0x18] + strh r3, [r5, 0x10] + strh r2, [r5, 0x12] + b _080AEE36 +_080AEE26: + movs r0, 0x44 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080AEE44 @ =0x0000ffff + strh r0, [r5, 0x12] +_080AEE36: + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080AEE68 + movs r0, 0x4 + b _080AEE6A + .align 2, 0 +_080AEE44: .4byte 0x0000ffff +_080AEE48: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AEE6C + adds r0, r2, 0 + bl sub_8072760 + b _080AEE6C +_080AEE58: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080AEE68 +_080AEE62: + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] + b _080AEE6C +_080AEE68: + movs r0, 0x1 +_080AEE6A: + strh r0, [r5, 0x8] +_080AEE6C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AECE0 + + thumb_func_start sub_80AEE74 +sub_80AEE74: @ 80AEE74 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080AEF3C @ =gUnknown_83E62A8 + movs r2, 0x14 + ldrsh r1, [r4, r2] + movs r3, 0x16 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080AEEE0 + ldr r1, _080AEF40 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldrh r6, [r4, 0x10] + adds r1, r6 + ldr r6, _080AEF44 @ =0x000003ff + adds r0, r6, 0 + ands r1, r0 + ldr r0, _080AEF48 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _080AEEC8 + movs r0, 0x7 + strh r0, [r4, 0x10] +_080AEEC8: + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0x7 + ble _080AEED4 + movs r0, 0 + strh r0, [r4, 0x10] +_080AEED4: + strh r5, [r3, 0x3A] + movs r0, 0x3 + strh r0, [r3, 0x3C] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080AEEE0: + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080AEF02 + movs r5, 0x12 + ldrsh r0, [r4, r5] + cmp r0, 0 + ble _080AEF02 + ldrh r1, [r4, 0x26] + ldrh r6, [r4, 0x24] + adds r1, r6 + strh r1, [r4, 0x24] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x6F + bl sub_80722F4 +_080AEF02: + movs r0, 0x12 + ldrsh r3, [r4, r0] + ldrh r2, [r4, 0x16] + cmp r3, 0 + bge _080AEF18 + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x18 + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _080AEF28 +_080AEF18: + cmp r3, 0 + ble _080AEF4C + lsls r0, r2, 16 + asrs r0, 16 + movs r6, 0x18 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080AEF4C +_080AEF28: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x1A] + ldrh r1, [r4, 0x14] + adds r0, r1 + strh r0, [r4, 0x14] + movs r0, 0x1 + b _080AEF58 + .align 2, 0 +_080AEF3C: .4byte gUnknown_83E62A8 +_080AEF40: .4byte gUnknown_202063C +_080AEF44: .4byte 0x000003ff +_080AEF48: .4byte 0xfffffc00 +_080AEF4C: + movs r3, 0x12 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, r2, r0 + strh r0, [r4, 0x16] + movs r0, 0 +_080AEF58: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80AEE74 + + thumb_func_start sub_80AEF60 +sub_80AEF60: @ 80AEF60 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080AEF96 + ldr r3, _080AEF9C @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080AEF96: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AEF9C: .4byte gUnknown_3005090 + thumb_func_end sub_80AEF60 + + thumb_func_start sub_80AEFA0 +sub_80AEFA0: @ 80AEFA0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080AEFC4 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080AF01C + cmp r0, 0x1 + bgt _080AEFC8 + cmp r0, 0 + beq _080AEFCE + b _080AF052 + .align 2, 0 +_080AEFC4: .4byte gUnknown_3005090 +_080AEFC8: + cmp r0, 0x2 + beq _080AF044 + b _080AF052 +_080AEFCE: + ldr r0, _080AF018 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + cmp r0, 0x10 + ble _080AEFF8 + adds r2, r0, 0 +_080AEFE8: + adds r1, r2, 0 + subs r1, 0x20 + adds r2, r1, 0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x10 + bgt _080AEFE8 + strh r1, [r5, 0x24] +_080AEFF8: + ldr r4, _080AF018 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x2 + strh r0, [r5, 0x20] + b _080AF03C + .align 2, 0 +_080AF018: .4byte gUnknown_2037F1B +_080AF01C: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080AF052 + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80AF058 + lsls r0, 24 + cmp r0, 0 + beq _080AF052 +_080AF03C: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080AF052 +_080AF044: + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AF052 + adds r0, r2, 0 + bl sub_8072760 +_080AF052: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AEFA0 + + thumb_func_start sub_80AF058 +sub_80AF058: @ 80AF058 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080AF0B4 @ =gUnknown_83E5F38 + movs r2, 0x22 + ldrsh r1, [r4, r2] + movs r3, 0x24 + ldrsh r2, [r4, r3] + ldrh r3, [r4, 0x20] + lsls r3, 24 + lsrs r3, 24 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080AF09C + ldr r3, _080AF0B8 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _080AF0BC @ =sub_80AF0C8 + str r2, [r1] + adds r0, r3 + strh r5, [r0, 0x3A] + movs r1, 0xA + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] +_080AF09C: + ldrh r2, [r4, 0x24] + movs r0, 0x24 + ldrsh r1, [r4, r0] + movs r3, 0x26 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080AF0C0 + adds r0, r2, 0 + adds r0, 0x20 + strh r0, [r4, 0x24] + movs r0, 0 + b _080AF0C2 + .align 2, 0 +_080AF0B4: .4byte gUnknown_83E5F38 +_080AF0B8: .4byte gUnknown_202063C +_080AF0BC: .4byte sub_80AF0C8 +_080AF0C0: + movs r0, 0x1 +_080AF0C2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80AF058 + + thumb_func_start sub_80AF0C8 +sub_80AF0C8: @ 80AF0C8 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AF0FC + ldr r3, _080AF104 @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080AF0FC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AF104: .4byte gUnknown_3005090 + thumb_func_end sub_80AF0C8 + + thumb_func_start sub_80AF108 +sub_80AF108: @ 80AF108 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x7 + ldr r3, _080AF210 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080AF214 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r4, _080AF218 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, _080AF21C @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + str r3, [sp] + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080AF220 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r1] + ldr r3, [sp] + adds r0, r3 + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x4] + mov r4, r9 + adds r0, r4, r0 + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x2] + adds r0, r6 + strh r0, [r5, 0x34] + ldrh r0, [r1, 0x6] + mov r7, r8 + adds r0, r7, r0 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8074C80 + adds r4, 0x20 + movs r0, 0x98 + lsls r0, 1 + mov r12, r0 + ldr r3, [sp] + cmp r4, r12 + bhi _080AF1E2 + adds r0, r7, 0 + adds r0, 0x20 + ldrh r1, [r5, 0x30] + ldrh r2, [r5, 0x32] + cmp r0, 0xE0 + bhi _080AF1E2 + adds r4, r1, 0 + mov r10, r12 +_080AF1AE: + mov r7, r9 + lsls r1, r7, 16 + asrs r1, 16 + adds r1, r4 + lsls r1, 16 + mov r7, r8 + lsls r0, r7, 16 + asrs r0, 16 + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsrs r0, r1, 16 + mov r9, r0 + movs r7, 0x80 + lsls r7, 14 + adds r1, r7 + lsrs r1, 16 + cmp r1, r10 + bhi _080AF1E2 + mov r1, r8 + lsls r0, r1, 16 + adds r0, r7 + lsrs r0, 16 + cmp r0, 0xE0 + bls _080AF1AE +_080AF1E2: + ldrh r0, [r5, 0x30] + negs r7, r0 + strh r7, [r5, 0x30] + ldrh r0, [r5, 0x32] + negs r4, r0 + strh r4, [r5, 0x32] + lsls r0, r3, 16 + movs r1, 0x80 + lsls r1, 14 + adds r0, r1 + lsrs r0, 16 + movs r2, 0x98 + lsls r2, 1 + mov r12, r2 + ldr r1, _080AF220 @ =gUnknown_2037F02 + mov r10, r1 + cmp r0, r12 + bhi _080AF24E + lsls r1, r6, 16 + movs r2, 0x80 + lsls r2, 14 + adds r0, r1, r2 + b _080AF246 + .align 2, 0 +_080AF210: .4byte 0x000003ff +_080AF214: .4byte 0xfffffc00 +_080AF218: .4byte gUnknown_2037F1B +_080AF21C: .4byte gUnknown_2037F1A +_080AF220: .4byte gUnknown_2037F02 +_080AF224: + lsls r1, r3, 16 + asrs r1, 16 + adds r1, r7 + lsls r1, 16 + asrs r0, r2, 16 + adds r0, r4 + lsls r0, 16 + lsrs r6, r0, 16 + lsrs r3, r1, 16 + movs r0, 0x80 + lsls r0, 14 + adds r1, r0 + lsrs r1, 16 + cmp r1, r12 + bhi _080AF24E + lsls r1, r6, 16 + adds r0, r1, r0 +_080AF246: + lsrs r0, 16 + adds r2, r1, 0 + cmp r0, 0xE0 + bls _080AF224 +_080AF24E: + strh r3, [r5, 0x20] + strh r6, [r5, 0x22] + mov r1, r10 + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + strh r3, [r5, 0x30] + mov r2, r9 + strh r2, [r5, 0x32] + strh r6, [r5, 0x34] + mov r3, r8 + strh r3, [r5, 0x36] + adds r0, r5, 0 + bl sub_8074C80 + mov r7, r10 + ldrh r0, [r7, 0xA] + strh r0, [r5, 0x34] + ldrh r0, [r7, 0xC] + strh r0, [r5, 0x36] + ldr r0, _080AF288 @ =sub_80AF28C + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AF288: .4byte sub_80AF28C + thumb_func_end sub_80AF108 + + thumb_func_start sub_80AF28C +sub_80AF28C: @ 80AF28C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080AF2E4 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x3A] + adds r0, r2 + strh r0, [r4, 0x3A] + strh r1, [r4, 0x24] + strh r0, [r4, 0x26] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + b _080AF2EA +_080AF2E4: + adds r0, r4, 0 + bl sub_8072740 +_080AF2EA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AF28C + + thumb_func_start sub_80AF2F0 +sub_80AF2F0: @ 80AF2F0 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AF324 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r4, 0x2E] + movs r0, 0x3C + strh r0, [r4, 0x30] + movs r0, 0x9 + strh r0, [r4, 0x32] + movs r0, 0x1E + strh r0, [r4, 0x34] + movs r0, 0xFE + lsls r0, 8 + strh r0, [r4, 0x36] + ldr r1, _080AF328 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r1, _080AF32C @ =sub_8074AE0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AF324: .4byte gUnknown_2037F02 +_080AF328: .4byte sub_8072740 +_080AF32C: .4byte sub_8074AE0 + thumb_func_end sub_80AF2F0 + + thumb_func_start sub_80AF330 +sub_80AF330: @ 80AF330 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080AF364 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldr r0, _080AF368 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF370 + ldr r0, _080AF36C @ =gUnknown_2037F02 + ldrh r1, [r4, 0x32] + ldrh r0, [r0, 0x4] + subs r1, r0 + strh r1, [r4, 0x32] + b _080AF37A + .align 2, 0 +_080AF364: .4byte gUnknown_2037F1B +_080AF368: .4byte gUnknown_2037F1A +_080AF36C: .4byte gUnknown_2037F02 +_080AF370: + ldr r0, _080AF3A8 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] +_080AF37A: + ldr r0, _080AF3AC @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + ldr r1, _080AF3A8 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r2, [r1, 0x6] + adds r0, r2 + strh r0, [r4, 0x36] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x2E] + ldr r1, _080AF3B0 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080AF3B4 @ =sub_8075590 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AF3A8: .4byte gUnknown_2037F02 +_080AF3AC: .4byte gUnknown_2037F1B +_080AF3B0: .4byte sub_8072740 +_080AF3B4: .4byte sub_8075590 + thumb_func_end sub_80AF330 + + thumb_func_start sub_80AF3B8 +sub_80AF3B8: @ 80AF3B8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080AF3D0 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AF3D4 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + b _080AF40A + .align 2, 0 +_080AF3D0: .4byte gUnknown_2037F02 +_080AF3D4: + ldr r0, _080AF41C @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_8076D9C + ldr r0, _080AF420 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF3FA + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_080AF3FA: + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_080AF40A: + ldr r1, _080AF424 @ =sub_80AF42C + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080AF428 @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AF41C: .4byte gUnknown_2037F1B +_080AF420: .4byte gUnknown_2037F1A +_080AF424: .4byte sub_80AF42C +_080AF428: .4byte sub_8074F50 + thumb_func_end sub_80AF3B8 + + thumb_func_start sub_80AF42C +sub_80AF42C: @ 80AF42C + push {lr} + adds r3, r0, 0 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080AF462 + adds r0, r3, 0 + bl sub_8074EE0 +_080AF462: + pop {r0} + bx r0 + thumb_func_end sub_80AF42C + + thumb_func_start sub_80AF468 +sub_80AF468: @ 80AF468 + push {r4-r7,lr} + sub sp, 0x10 + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r6, _080AF4B0 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + movs r1, 0xA + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080AF4B8 + ldr r4, _080AF4B4 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x36] + b _080AF4CA + .align 2, 0 +_080AF4B0: .4byte gUnknown_2037F02 +_080AF4B4: .4byte gUnknown_2037F1B +_080AF4B8: + ldr r0, _080AF4E4 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_8076D9C +_080AF4CA: + ldr r0, _080AF4E8 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF4F0 + ldr r0, _080AF4EC @ =gUnknown_2037F02 + ldrh r1, [r5, 0x32] + ldrh r0, [r0, 0x4] + subs r1, r0 + strh r1, [r5, 0x32] + b _080AF4FA + .align 2, 0 +_080AF4E4: .4byte gUnknown_2037F1B +_080AF4E8: .4byte gUnknown_2037F1A +_080AF4EC: .4byte gUnknown_2037F02 +_080AF4F0: + ldr r0, _080AF598 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] +_080AF4FA: + adds r7, r5, 0 + adds r7, 0x2E + adds r2, r7, 0 + mov r1, sp + movs r4, 0x7 +_080AF504: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080AF504 + adds r0, r5, 0 + bl sub_8075804 + ldrh r0, [r5, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + eors r0, r1 + strh r0, [r5, 0x32] +_080AF526: + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_807578C + movs r0, 0x20 + ldrsh r1, [r5, r0] + movs r2, 0x24 + ldrsh r0, [r5, r2] + adds r1, r0 + adds r1, 0x10 + movs r0, 0x88 + lsls r0, 1 + cmp r1, r0 + bhi _080AF55A + movs r0, 0x22 + ldrsh r1, [r5, r0] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080AF55A + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080AF526 +_080AF55A: + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + ldr r6, _080AF59C @ =sub_8075830 + ldr r1, _080AF5A0 @ =sub_80AF5A4 + mov r3, sp + adds r2, r7, 0 + movs r4, 0x7 +_080AF57A: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080AF57A + str r6, [r5, 0x1C] + adds r0, r5, 0 + bl sub_8074A68 + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AF598: .4byte gUnknown_2037F02 +_080AF59C: .4byte sub_8075830 +_080AF5A0: .4byte sub_80AF5A4 + thumb_func_end sub_80AF468 + + thumb_func_start sub_80AF5A4 +sub_80AF5A4: @ 80AF5A4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r5, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r5, [r4, 0x26] + strh r5, [r4, 0x24] + movs r0, 0x80 + strh r0, [r4, 0x2E] + ldr r0, _080AF600 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldr r1, _080AF604 @ =0x0000ffec + cmp r0, 0 + beq _080AF5D4 + movs r1, 0x14 +_080AF5D4: + movs r2, 0x2E + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + strh r0, [r4, 0x34] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0xF + bl sub_8044E4C + strh r0, [r4, 0x36] + strh r5, [r4, 0x38] + ldr r1, _080AF608 @ =sub_80AF60C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AF600: .4byte gUnknown_2037F1A +_080AF604: .4byte 0x0000ffec +_080AF608: .4byte sub_80AF60C + thumb_func_end sub_80AF5A4 + + thumb_func_start sub_80AF60C +sub_80AF60C: @ 80AF60C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AF660 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldr r1, _080AF664 @ =0x0000ffec + cmp r0, 0 + beq _080AF622 + movs r1, 0x14 +_080AF622: + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0x1F + bgt _080AF668 + movs r2, 0x2E + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + ldrh r1, [r4, 0x34] + subs r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0xF + bl sub_8044E4C + ldrh r1, [r4, 0x36] + subs r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x10 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _080AF686 + .align 2, 0 +_080AF660: .4byte gUnknown_2037F1A +_080AF664: .4byte 0x0000ffec +_080AF668: + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + strh r1, [r4, 0x36] + strh r1, [r4, 0x34] + ldr r0, _080AF68C @ =sub_80AF690 + str r0, [r4, 0x1C] +_080AF686: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AF68C: .4byte sub_80AF690 + thumb_func_end sub_80AF60C + + thumb_func_start sub_80AF690 +sub_80AF690: @ 80AF690 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_807578C + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080AF6CC + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r1, r0, r1 + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + bgt _080AF6CC + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080AF6D2 +_080AF6CC: + adds r0, r4, 0 + bl sub_8072740 +_080AF6D2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AF690 + + thumb_func_start sub_80AF6D8 +sub_80AF6D8: @ 80AF6D8 + push {r4-r7,lr} + sub sp, 0x10 + adds r5, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080AF71C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080AF724 + ldr r4, _080AF720 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080AF736 + .align 2, 0 +_080AF71C: .4byte gUnknown_2037F02 +_080AF720: .4byte gUnknown_2037F1B +_080AF724: + ldr r0, _080AF754 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_8076D9C +_080AF736: + ldr r0, _080AF758 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF760 + ldr r0, _080AF75C @ =gUnknown_2037F02 + ldrh r1, [r5, 0x32] + ldrh r2, [r0, 0x4] + subs r1, r2 + strh r1, [r5, 0x32] + adds r1, r0, 0 + b _080AF76A + .align 2, 0 +_080AF754: .4byte gUnknown_2037F1B +_080AF758: .4byte gUnknown_2037F1A +_080AF75C: .4byte gUnknown_2037F02 +_080AF760: + ldr r1, _080AF814 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] +_080AF76A: + ldrh r0, [r1, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8075804 + adds r7, r5, 0 + adds r7, 0x2E + adds r2, r7, 0 + mov r1, sp + movs r4, 0x7 +_080AF782: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080AF782 + ldrh r0, [r5, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + eors r0, r1 + strh r0, [r5, 0x32] +_080AF79E: + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_807578C + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r2, 0x24 + ldrsh r0, [r5, r2] + adds r1, r0 + adds r1, 0x10 + movs r0, 0x88 + lsls r0, 1 + cmp r1, r0 + bhi _080AF7D2 + movs r0, 0x22 + ldrsh r1, [r5, r0] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080AF7D2 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080AF79E +_080AF7D2: + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + ldr r1, _080AF814 @ =gUnknown_2037F02 + ldr r6, _080AF818 @ =sub_80AF81C + mov r3, sp + adds r2, r7, 0 + movs r4, 0x7 +_080AF7F2: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080AF7F2 + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x38] + ldrh r0, [r1, 0xC] + strh r0, [r5, 0x3A] + str r6, [r5, 0x1C] + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080AF814: .4byte gUnknown_2037F02 +_080AF818: .4byte sub_80AF81C + thumb_func_end sub_80AF6D8 + + thumb_func_start sub_80AF81C +sub_80AF81C: @ 80AF81C + push {r4,lr} + adds r4, r0, 0 + bl sub_807578C + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AF830 + movs r0, 0x1 + strh r0, [r4, 0x2E] +_080AF830: + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080AF886 + movs r2, 0x20 + ldrsh r0, [r4, r2] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080AF880 + movs r0, 0x22 + ldrsh r1, [r4, r0] + movs r2, 0x26 + ldrsh r0, [r4, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080AF880 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080AF886 +_080AF880: + adds r0, r4, 0 + bl sub_8072740 +_080AF886: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AF81C + + thumb_func_start sub_80AF88C +sub_80AF88C: @ 80AF88C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080AF8F8 + ldr r5, _080AF8AC @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080AF8B0 + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 + b _080AF8E6 + .align 2, 0 +_080AF8AC: .4byte gUnknown_2037F02 +_080AF8B0: + ldr r0, _080AF8F0 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C + ldr r0, _080AF8F4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF8D6 + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_080AF8D6: + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_080AF8E6: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080AF90C + .align 2, 0 +_080AF8F0: .4byte gUnknown_2037F1B +_080AF8F4: .4byte gUnknown_2037F1A +_080AF8F8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080AF90C + adds r0, r4, 0 + bl sub_8072740 +_080AF90C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80AF88C + + thumb_func_start sub_80AF914 +sub_80AF914: @ 80AF914 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080AF934 @ =gUnknown_2037F02 + movs r1, 0x8 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080AF984 + movs r1, 0xA + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080AF938 + adds r0, r5, 0 + movs r1, 0 + bl sub_8075160 + b _080AF976 + .align 2, 0 +_080AF934: .4byte gUnknown_2037F02 +_080AF938: + ldr r4, _080AF960 @ =gUnknown_2037F1A + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF964 + ldrh r0, [r5, 0x20] + ldrh r1, [r6] + subs r0, r1 + b _080AF96A + .align 2, 0 +_080AF960: .4byte gUnknown_2037F1A +_080AF964: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080AF96A: + strh r0, [r5, 0x20] + ldr r0, _080AF97C @ =gUnknown_2037F02 + ldrh r0, [r0, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] +_080AF976: + ldr r0, _080AF980 @ =gUnknown_2037F1A + b _080AF9D4 + .align 2, 0 +_080AF97C: .4byte gUnknown_2037F02 +_080AF980: .4byte gUnknown_2037F1A +_080AF984: + movs r1, 0xA + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080AF996 + adds r0, r5, 0 + movs r1, 0 + bl sub_8075114 + b _080AF9D2 +_080AF996: + ldr r4, _080AF9BC @ =gUnknown_2037F1B + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080AF9C0 + ldrh r0, [r5, 0x20] + ldrh r1, [r6] + subs r0, r1 + b _080AF9C6 + .align 2, 0 +_080AF9BC: .4byte gUnknown_2037F1B +_080AF9C0: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080AF9C6: + strh r0, [r5, 0x20] + ldr r0, _080AF9F0 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] +_080AF9D2: + ldr r0, _080AF9F4 @ =gUnknown_2037F1B +_080AF9D4: + ldrb r0, [r0] + strh r0, [r5, 0x3C] + ldr r0, _080AF9F0 @ =gUnknown_2037F02 + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080AF9EC + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _080AF9F8 +_080AF9EC: + movs r0, 0x20 + b _080AF9FA + .align 2, 0 +_080AF9F0: .4byte gUnknown_2037F02 +_080AF9F4: .4byte gUnknown_2037F1B +_080AF9F8: + movs r0, 0x40 +_080AF9FA: + strh r0, [r5, 0x3A] + ldr r0, _080AFA40 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080AFA10 + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] +_080AFA10: + ldr r1, _080AFA44 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrh r1, [r1, 0x4] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + movs r0, 0x40 + strh r0, [r5, 0x38] + ldr r1, _080AFA48 @ =sub_80AFA4C + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080AFA40: .4byte gUnknown_2037F1B +_080AFA44: .4byte gUnknown_2037F02 +_080AFA48: .4byte sub_80AFA4C + thumb_func_end sub_80AF914 + + thumb_func_start sub_80AFA4C +sub_80AFA4C: @ 80AFA4C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080AFAD6 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x3A + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r1, 0x6 + negs r1, r1 + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080AFAA8 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080AFACA +_080AFAA8: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] +_080AFACA: + ldrh r0, [r4, 0x38] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080AFADC +_080AFAD6: + adds r0, r4, 0 + bl sub_8072740 +_080AFADC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80AFA4C + + thumb_func_start sub_80AFAE4 +sub_80AFAE4: @ 80AFAE4 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080AFBA0 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AFB26 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080AFB26: + ldr r0, _080AFBA4 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r4, _080AFBA8 @ =gUnknown_202297A + strh r1, [r4] + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x16 + bl sub_8000A38 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AFBAC @ =gUnknown_83C3540 + movs r2, 0x80 + lsls r2, 4 + mov r3, sp + ldrh r3, [r3, 0xA] + bl sub_80017D0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AFBB0 @ =gUnknown_8E7F1F4 + bl sub_807543C + ldr r0, _080AFBB4 @ =gUnknown_83C2CE0 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703EC + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080AFB88 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080AFB88: + ldr r0, _080AFBB8 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080AFBBC @ =sub_80AFBC0 + str r0, [r1] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFBA0: .4byte 0x00003f42 +_080AFBA4: .4byte gUnknown_2022978 +_080AFBA8: .4byte gUnknown_202297A +_080AFBAC: .4byte gUnknown_83C3540 +_080AFBB0: .4byte gUnknown_8E7F1F4 +_080AFBB4: .4byte gUnknown_83C2CE0 +_080AFBB8: .4byte gUnknown_3005090 +_080AFBBC: .4byte sub_80AFBC0 + thumb_func_end sub_80AFAE4 + + thumb_func_start sub_80AFBC0 +sub_80AFBC0: @ 80AFBC0 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080AFBF4 @ =gUnknown_2022978 + ldr r2, _080AFBF8 @ =0x0000ffff + adds r0, r2, 0 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + ldr r1, _080AFBFC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bls _080AFBEA + b _080AFD36 +_080AFBEA: + lsls r0, 2 + ldr r1, _080AFC00 @ =_080AFC04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AFBF4: .4byte gUnknown_2022978 +_080AFBF8: .4byte 0x0000ffff +_080AFBFC: .4byte gUnknown_3005090 +_080AFC00: .4byte _080AFC04 + .align 2, 0 +_080AFC04: + .4byte _080AFC18 + .4byte _080AFC70 + .4byte _080AFC92 + .4byte _080AFCD6 + .4byte _080AFCF8 +_080AFC18: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _080AFC32 + b _080AFD36 +_080AFC32: + strh r5, [r4, 0x1C] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + ldr r1, _080AFC6C @ =gUnknown_83E64D4 + movs r2, 0x1A + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r1, [r0] + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x9 + bne _080AFD36 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080AFD36 + .align 2, 0 +_080AFC6C: .4byte gUnknown_83E64D4 +_080AFC70: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x51 + bne _080AFD36 + movs r0, 0x9 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080AFD36 +_080AFC92: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080AFD36 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080AFD36 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080AFD36 +_080AFCD6: + mov r0, sp + bl sub_80752A0 + movs r0, 0x1 + bl sub_8075358 + movs r0, 0x2 + bl sub_8075358 + ldr r0, _080AFD40 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] +_080AFCF8: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AFD0C + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080AFD0C: + ldr r0, _080AFD44 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080AFD48 @ =gUnknown_202297A + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + adds r0, r4, 0 + bl sub_8072760 +_080AFD36: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFD40: .4byte gUnknown_3005090 +_080AFD44: .4byte gUnknown_2022978 +_080AFD48: .4byte gUnknown_202297A + thumb_func_end sub_80AFBC0 + + thumb_func_start sub_80AFD4C +sub_80AFD4C: @ 80AFD4C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080AFD78 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r0, _080AFD7C @ =sub_8075DF4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFD78: .4byte gUnknown_2037F1A +_080AFD7C: .4byte sub_8075DF4 + thumb_func_end sub_80AFD4C + + thumb_func_start sub_80AFD80 +sub_80AFD80: @ 80AFD80 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080AFE40 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AFDC2 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080AFDC2: + ldr r0, _080AFE44 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r4, _080AFE48 @ =gUnknown_202297A + strh r1, [r4] + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x16 + bl sub_8000A38 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AFE4C @ =gUnknown_83C3540 + movs r2, 0x80 + lsls r2, 4 + mov r3, sp + ldrh r3, [r3, 0xA] + bl sub_80017D0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080AFE50 @ =gUnknown_8E7F1F4 + bl sub_807543C + ldr r0, _080AFE54 @ =gUnknown_83C2CE0 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703EC + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080AFE24 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080AFE24: + ldr r1, _080AFE58 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080AFE5C @ =0x0000ffff + strh r1, [r0, 0x26] + ldr r1, _080AFE60 @ =sub_80AFE64 + str r1, [r0] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFE40: .4byte 0x00003f42 +_080AFE44: .4byte gUnknown_2022978 +_080AFE48: .4byte gUnknown_202297A +_080AFE4C: .4byte gUnknown_83C3540 +_080AFE50: .4byte gUnknown_8E7F1F4 +_080AFE54: .4byte gUnknown_83C2CE0 +_080AFE58: .4byte gUnknown_3005090 +_080AFE5C: .4byte 0x0000ffff +_080AFE60: .4byte sub_80AFE64 + thumb_func_end sub_80AFD80 + + thumb_func_start sub_80AFE64 +sub_80AFE64: @ 80AFE64 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _080AFE94 @ =gUnknown_2022978 + ldr r3, _080AFE98 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r3 + ldrh r0, [r1, 0x26] + ldrh r5, [r2] + adds r0, r5 + strh r0, [r2] + movs r2, 0x20 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + bls _080AFE8A + b _080AFFBE +_080AFE8A: + lsls r0, 2 + ldr r1, _080AFE9C @ =_080AFEA0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AFE94: .4byte gUnknown_2022978 +_080AFE98: .4byte gUnknown_3005090 +_080AFE9C: .4byte _080AFEA0 + .align 2, 0 +_080AFEA0: + .4byte _080AFEB4 + .4byte _080AFEF8 + .4byte _080AFF1A + .4byte _080AFF5E + .4byte _080AFF80 +_080AFEB4: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r3 + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + ldr r1, _080AFEF4 @ =gUnknown_83E6500 + movs r5, 0x1A + ldrsh r0, [r4, r5] + adds r0, r1 + ldrb r1, [r0] + strh r1, [r4, 0x1E] + movs r0, 0x11 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bne _080AFFBE + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0x1E] + b _080AFFBE + .align 2, 0 +_080AFEF4: .4byte gUnknown_83E6500 +_080AFEF8: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r3 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x51 + bne _080AFFBE + movs r0, 0x5 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080AFFBE +_080AFF1A: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r3 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080AFFBE + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080AFFBE + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080AFFBE +_080AFF5E: + mov r0, sp + bl sub_80752A0 + movs r0, 0x1 + bl sub_8075358 + movs r0, 0x2 + bl sub_8075358 + ldr r0, _080AFFC8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] +_080AFF80: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080AFF94 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080AFF94: + ldr r0, _080AFFCC @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080AFFD0 @ =gUnknown_202297A + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + adds r0, r4, 0 + bl sub_8072760 +_080AFFBE: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFFC8: .4byte gUnknown_3005090 +_080AFFCC: .4byte gUnknown_2022978 +_080AFFD0: .4byte gUnknown_202297A + thumb_func_end sub_80AFE64 + + thumb_func_start sub_80AFFD4 +sub_80AFFD4: @ 80AFFD4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldr r6, _080B00BC @ =gUnknown_2037F02 + ldrh r0, [r6] + strh r0, [r5, 0x2E] + ldr r0, _080B00C0 @ =gUnknown_2037F1A + mov r8, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + ldr r7, _080B00C4 @ =gUnknown_2037F1B + ldrb r0, [r7] + movs r1, 0x2 + bl sub_8074480 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bcs _080B0008 + movs r0, 0x80 + lsls r0, 8 + strh r0, [r5, 0x3C] +_080B0008: + ldr r3, _080B00C8 @ =gUnknown_2023BD6 + ldrb r0, [r7] + adds r0, r3 + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080B0068 + ldrh r0, [r6, 0x2] + negs r0, r0 + strh r0, [r6, 0x2] + ldrh r0, [r6, 0x6] + negs r0, r0 + strh r0, [r6, 0x6] + movs r1, 0x3C + ldrsh r0, [r5, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080B0064 + mov r1, r8 + ldrb r0, [r1] + adds r0, r3 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080B0064 + movs r0, 0x1 + bl sub_80749D4 + ldr r2, _080B00CC @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] +_080B0064: + movs r0, 0x1 + strh r0, [r5, 0x3A] +_080B0068: + ldr r4, _080B00C0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r6, _080B00BC @ =gUnknown_2037F02 + movs r1, 0xE + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080B00D0 + ldrh r0, [r6, 0x2] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x30] + ldr r4, _080B00C4 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x6] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + b _080B00F8 + .align 2, 0 +_080B00BC: .4byte gUnknown_2037F02 +_080B00C0: .4byte gUnknown_2037F1A +_080B00C4: .4byte gUnknown_2037F1B +_080B00C8: .4byte gUnknown_2023BD6 +_080B00CC: .4byte gUnknown_202063C +_080B00D0: + ldrh r0, [r6, 0x2] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x30] + ldr r4, _080B0140 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x6] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x1 +_080B00F8: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x8] + adds r0, r6 + strh r0, [r5, 0x36] + ldrb r0, [r4] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 16 + ldrh r1, [r5, 0x3C] + orrs r0, r1 + strh r0, [r5, 0x3C] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B012C + movs r0, 0x1 + strh r0, [r5, 0x3A] + adds r1, r5, 0 + adds r1, 0x43 + movs r0, 0x80 + strb r0, [r1] +_080B012C: + adds r0, r5, 0 + bl sub_80754F8 + ldr r0, _080B0144 @ =sub_80B0148 + str r0, [r5, 0x1C] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B0140: .4byte gUnknown_2037F1B +_080B0144: .4byte sub_80B0148 + thumb_func_end sub_80AFFD4 + + thumb_func_start sub_80B0148 +sub_80B0148: @ 80B0148 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x3C] + movs r5, 0xFF + movs r1, 0xFF + ands r1, r0 + cmp r1, 0x1 + beq _080B0230 + cmp r1, 0x1 + bgt _080B0162 + cmp r1, 0 + beq _080B016A + b _080B0380 +_080B0162: + cmp r1, 0x2 + bne _080B0168 + b _080B0344 +_080B0168: + b _080B0380 +_080B016A: + adds r0, r4, 0 + bl sub_80755E0 + ldr r1, _080B0194 @ =gUnknown_825E074 + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + asrs r0, 4 + ldrh r2, [r4, 0x24] + adds r0, r2 + strh r0, [r4, 0x24] + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080B0198 + ldrh r0, [r4, 0x38] + subs r0, 0x8 + b _080B019C + .align 2, 0 +_080B0194: .4byte gUnknown_825E074 +_080B0198: + ldrh r0, [r4, 0x38] + adds r0, 0x8 +_080B019C: + ands r0, r5 + strh r0, [r4, 0x38] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080B01AA + b _080B0380 +_080B01AA: + movs r5, 0x50 + strh r5, [r4, 0x2E] + ldr r6, _080B01F8 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, 0x1D + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B0200 + ldr r1, _080B01FC @ =gUnknown_2023BD6 + ldrb r0, [r6] + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B0200 + movs r0, 0xCC + strh r0, [r4, 0x38] + b _080B0202 + .align 2, 0 +_080B01F8: .4byte gUnknown_2037F1B +_080B01FC: .4byte gUnknown_2023BD6 +_080B0200: + strh r5, [r4, 0x38] +_080B0202: + movs r0, 0 + strh r0, [r4, 0x26] + ldr r1, _080B022C @ =gUnknown_825E074 + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + asrs r0, 3 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x38] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80754F8 + b _080B0380 + .align 2, 0 +_080B022C: .4byte gUnknown_825E074 +_080B0230: + adds r0, r4, 0 + bl sub_80755E0 + ldr r1, _080B028C @ =gUnknown_825E074 + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + asrs r0, 3 + ldrh r2, [r4, 0x24] + adds r0, r2 + strh r0, [r4, 0x24] + movs r2, 0x38 + ldrsh r0, [r4, r2] + adds r0, 0x40 + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + negs r0, r0 + asrs r0, 8 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B02AE + ldrh r1, [r4, 0x38] + adds r0, r1, 0 + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + adds r3, r1, 0 + cmp r0, 0x7F + bhi _080B0290 + ldrh r1, [r4, 0x3C] + lsls r1, 16 + asrs r1, 24 + b _080B0298 + .align 2, 0 +_080B028C: .4byte gUnknown_825E074 +_080B0290: + ldrh r1, [r4, 0x3C] + lsls r1, 16 + asrs r1, 24 + adds r1, 0x1 +_080B0298: + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r0, r3, 0x4 + b _080B02CE +_080B02AE: + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080B02C2 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x80 + b _080B02C8 +_080B02C2: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x8C +_080B02C8: + strb r0, [r1] + ldrh r0, [r4, 0x38] + subs r0, 0x4 +_080B02CE: + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bgt _080B0380 + movs r5, 0 + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, 0x4 + strh r0, [r4, 0x36] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B0328 + ldr r1, _080B0320 @ =gUnknown_2023BD6 + ldr r0, _080B0324 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B0328 + movs r0, 0x80 + lsls r0, 1 + b _080B032A + .align 2, 0 +_080B0320: .4byte gUnknown_2023BD6 +_080B0324: .4byte gUnknown_2037F1B +_080B0328: + ldr r0, _080B0340 @ =0x0000fff0 +_080B032A: + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x3C] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + adds r0, r4, 0 + bl sub_8075678 + b _080B0380 + .align 2, 0 +_080B0340: .4byte 0x0000fff0 +_080B0344: + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080B0380 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B0372 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080B0372: + adds r0, r4, 0 + bl sub_8007280 + ldr r1, _080B0388 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080B0380: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B0388: .4byte gUnknown_2037EE2 + thumb_func_end sub_80B0148 + + thumb_func_start sub_80B038C +sub_80B038C: @ 80B038C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B03A0 @ =gUnknown_3005090 + adds r1, r0 + ldr r0, _080B03A4 @ =sub_80B03A8 + str r0, [r1] + bx lr + .align 2, 0 +_080B03A0: .4byte gUnknown_3005090 +_080B03A4: .4byte sub_80B03A8 + thumb_func_end sub_80B038C + + thumb_func_start sub_80B03A8 +sub_80B03A8: @ 80B03A8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B03CC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080B03EC + cmp r5, 0x1 + bgt _080B03D0 + cmp r5, 0 + beq _080B03D6 + b _080B0450 + .align 2, 0 +_080B03CC: .4byte gUnknown_3005090 +_080B03D0: + cmp r5, 0x2 + beq _080B0442 + b _080B0450 +_080B03D6: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080B0450 + strh r5, [r4, 0x10] + strh r5, [r4, 0x12] + strh r5, [r4, 0xC] + b _080B0428 +_080B03EC: + ldrh r1, [r4, 0x12] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080B043C + ldrb r0, [r4, 0xE] + ldrb r1, [r4, 0xC] + movs r3, 0x1 + bl sub_80B0458 + lsls r0, 24 + cmp r0, 0 + beq _080B040C + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] +_080B040C: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080B0438 + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080B0430 +_080B0428: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B0450 +_080B0430: + ldrh r0, [r4, 0x8] + subs r0, 0x1 + strh r0, [r4, 0x8] + b _080B0450 +_080B0438: + strh r5, [r4, 0x12] + b _080B0450 +_080B043C: + subs r0, r1, 0x1 + strh r0, [r4, 0x12] + b _080B0450 +_080B0442: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B0450 + adds r0, r2, 0 + bl sub_8072760 +_080B0450: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B03A8 + + thumb_func_start sub_80B0458 +sub_80B0458: @ 80B0458 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + movs r1, 0 + str r1, [sp, 0x4] + ldr r1, _080B04D0 @ =gUnknown_83E652C + lsrs r0, 22 + adds r4, r0, r1 + ldrb r0, [r4, 0x3] + lsls r0, 24 + asrs r0, 28 + mov r8, r0 + cmp r0, 0x2 + beq _080B0544 + ldrh r0, [r4, 0x2] + lsls r0, 20 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B0544 + movs r0, 0x1 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + mov r1, r8 + cmp r1, 0 + beq _080B04D4 + cmp r1, 0x1 + beq _080B050A + b _080B0556 + .align 2, 0 +_080B04D0: .4byte gUnknown_83E652C +_080B04D4: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r0, r5, 0 + movs r1, 0 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r6, 16 + asrs r1, 16 + subs r1, r0 + b _080B053E +_080B050A: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r7, 16 + asrs r1, 16 + adds r1, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r0, r5, 0 + movs r1, 0 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r6, 16 + asrs r1, 16 + adds r1, r0 +_080B053E: + lsls r1, 16 + lsrs r6, r1, 16 + b _080B0556 +_080B0544: + ldrh r0, [r4] + lsls r0, 22 + asrs r0, 6 + lsrs r7, r0, 16 + ldr r0, [r4] + lsls r0, 12 + asrs r0, 22 + lsls r0, 16 + lsrs r6, r0, 16 +_080B0556: + lsls r0, r6, 16 + asrs r0, 16 + adds r0, 0x8 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r0 + ldr r0, _080B05B0 @ =gUnknown_83E65A4 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x8 + negs r2, r2 + movs r3, 0x12 + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _080B05B8 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r0, _080B05B4 @ =gUnknown_202063C + adds r4, r0 + adds r0, r4, 0 + mov r1, r9 + bl sub_800843C + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + strh r7, [r4, 0x34] + strh r6, [r4, 0x36] + mov r1, r9 + strh r1, [r4, 0x38] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x3A] + mov r1, r10 + strh r1, [r4, 0x3C] + movs r0, 0x1 + b _080B05BA + .align 2, 0 +_080B05B0: .4byte gUnknown_83E65A4 +_080B05B4: .4byte gUnknown_202063C +_080B05B8: + movs r0, 0 +_080B05BA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80B0458 + + thumb_func_start sub_80B05CC +sub_80B05CC: @ 80B05CC + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + adds r0, 0x4 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r2, r1, 0 + adds r2, 0x8 + strh r2, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x34 + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _080B05F6 + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080B06A6 +_080B05F6: + movs r3, 0x2E + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080B0678 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B0678 + ldr r0, _080B066C @ =gUnknown_83E63E0 + movs r2, 0x34 + ldrsh r1, [r4, r2] + movs r3, 0x36 + ldrsh r2, [r4, r3] + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x2E] + cmp r0, 0x40 + beq _080B065A + ldr r2, _080B0670 @ =gUnknown_202063C + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080B0674 @ =sub_80B06B0 + str r1, [r0] + movs r3, 0x2E + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x3A] + strh r1, [r0, 0x3A] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x3C] + strh r1, [r0, 0x3C] +_080B065A: + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8007280 + b _080B06A6 + .align 2, 0 +_080B066C: .4byte gUnknown_83E63E0 +_080B0670: .4byte gUnknown_202063C +_080B0674: .4byte sub_80B06B0 +_080B0678: + ldr r3, _080B06AC @ =gUnknown_3005090 + movs r2, 0x3C + ldrsh r1, [r4, r2] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8007280 +_080B06A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B06AC: .4byte gUnknown_3005090 + thumb_func_end sub_80B05CC + + thumb_func_start sub_80B06B0 +sub_80B06B0: @ 80B06B0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080B06F0 + ldr r3, _080B06F8 @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8007280 +_080B06F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B06F8: .4byte gUnknown_3005090 + thumb_func_end sub_80B06B0 + + thumb_func_start sub_80B06FC +sub_80B06FC: @ 80B06FC + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080B077C @ =gUnknown_2037EE4 + ldr r0, [r0] + ldrb r1, [r0, 0x11] + lsrs r0, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r0, r1 + subs r0, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _080B071A + movs r1, 0x4 +_080B071A: + adds r0, r5, 0 + bl sub_800843C + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r6, _080B0780 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldr r0, _080B0784 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B0742 + ldrh r0, [r6, 0x4] + negs r0, r0 + strh r0, [r6, 0x4] +_080B0742: + ldr r4, _080B0788 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r6, 0xA] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080B078C @ =sub_80B0790 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B077C: .4byte gUnknown_2037EE4 +_080B0780: .4byte gUnknown_2037F02 +_080B0784: .4byte gUnknown_2037F1A +_080B0788: .4byte gUnknown_2037F1B +_080B078C: .4byte sub_80B0790 + thumb_func_end sub_80B06FC + + thumb_func_start sub_80B0790 +sub_80B0790: @ 80B0790 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B07B2 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + ldr r0, _080B07B8 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080B07BC @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 +_080B07B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B07B8: .4byte sub_8074F6C +_080B07BC: .4byte sub_8072740 + thumb_func_end sub_80B0790 + + thumb_func_start sub_80B07C0 +sub_80B07C0: @ 80B07C0 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r3, _080B0814 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080B0818 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + bl sub_8044EC8 + movs r5, 0xFF + ands r5, r0 + movs r0, 0x80 + lsls r0, 1 + adds r6, r0, 0 + orrs r5, r6 + bl sub_8044EC8 + ldr r1, _080B081C @ =0x000001ff + ands r1, r0 + adds r0, r1, 0 + cmp r0, 0xFF + ble _080B0806 + subs r0, r6, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_080B0806: + strh r5, [r4, 0x30] + strh r1, [r4, 0x32] + ldr r0, _080B0820 @ =sub_80B0824 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B0814: .4byte 0x000003ff +_080B0818: .4byte 0xfffffc00 +_080B081C: .4byte 0x000001ff +_080B0820: .4byte sub_80B0824 + thumb_func_end sub_80B07C0 + + thumb_func_start sub_80B0824 +sub_80B0824: @ 80B0824 + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r3, r0, r1 + strh r3, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r4, [r2, 0x36] + adds r1, r4 + strh r1, [r2, 0x36] + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080B0848 + lsls r0, r3, 16 + asrs r0, 24 + negs r0, r0 + b _080B084C +_080B0848: + lsls r0, r3, 16 + asrs r0, 24 +_080B084C: + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080B086A + adds r0, r2, 0 + bl sub_8072740 +_080B086A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B0824 + + thumb_func_start sub_80B0870 +sub_80B0870: @ 80B0870 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B0898 @ =gUnknown_2037F02 + ldrb r3, [r1] + lsls r3, 1 + adds r3, r1 + ldr r1, _080B089C @ =gUnknown_2037EE4 + ldr r1, [r1] + ldrb r1, [r1, 0x11] + lsrs r2, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r2, r1 + subs r2, 0x1 + strh r2, [r3] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080B0898: .4byte gUnknown_2037F02 +_080B089C: .4byte gUnknown_2037EE4 + thumb_func_end sub_80B0870 + + thumb_func_start sub_80B08A0 +sub_80B08A0: @ 80B08A0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B08D0 @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0xF + strh r0, [r4, 0x2E] + ldr r0, _080B08D4 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080B08D8 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B08D0: .4byte gUnknown_2037F02 +_080B08D4: .4byte sub_8074C44 +_080B08D8: .4byte sub_8072740 + thumb_func_end sub_80B08A0 + + thumb_func_start sub_80B08DC +sub_80B08DC: @ 80B08DC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B0920 @ =gUnknown_2037F02 + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080B0904 + ldr r0, _080B0924 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B0904 + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r4, 0x6] +_080B0904: + ldr r4, _080B0920 @ =gUnknown_2037F02 + ldrb r1, [r4, 0xC] + adds r0, r5, 0 + bl sub_800838C + movs r0, 0 + strh r0, [r4, 0xC] + adds r0, r5, 0 + bl sub_8075F0C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B0920: .4byte gUnknown_2037F02 +_080B0924: .4byte gUnknown_2037F1A + thumb_func_end sub_80B08DC + + thumb_func_start sub_80B0928 +sub_80B0928: @ 80B0928 + push {r4,lr} + adds r4, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B0944 + ldr r0, _080B0950 @ =gUnknown_2037F02 + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_080B0944: + adds r0, r4, 0 + bl sub_80B08DC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0950: .4byte gUnknown_2037F02 + thumb_func_end sub_80B0928 + + thumb_func_start sub_80B0954 +sub_80B0954: @ 80B0954 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B0974 @ =gUnknown_2037F02 + ldrb r1, [r4, 0x8] + bl sub_800838C + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B0978 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + b _080B0980 + .align 2, 0 +_080B0974: .4byte gUnknown_2037F02 +_080B0978: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075114 +_080B0980: + ldr r0, _080B0998 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080B099C @ =sub_8074C44 + str r0, [r5, 0x1C] + ldr r1, _080B09A0 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B0998: .4byte gUnknown_2037F02 +_080B099C: .4byte sub_8074C44 +_080B09A0: .4byte sub_8072740 + thumb_func_end sub_80B0954 + + thumb_func_start sub_80B09A4 +sub_80B09A4: @ 80B09A4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + ldr r0, _080B09C0 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + mov r9, r0 + cmp r1, 0 + bne _080B09C8 + ldr r0, _080B09C4 @ =gUnknown_2037F1A + b _080B09CA + .align 2, 0 +_080B09C0: .4byte gUnknown_2037F02 +_080B09C4: .4byte gUnknown_2037F1A +_080B09C8: + ldr r0, _080B0B10 @ =gUnknown_2037F1B +_080B09CA: + ldrb r0, [r0] + mov r8, r0 + mov r4, r9 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _080B09E8 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4, 0x4] +_080B09E8: + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_800838C + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + mov r0, r8 + movs r1, 0x1 + bl sub_8076B2C + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + lsls r1, 15 + lsrs r6, r1, 16 + mov r0, r8 + movs r1, 0 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080B0A32 + adds r0, 0x3 +_080B0A32: + lsls r4, r0, 14 + lsrs r4, 16 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r6, 16 + asrs r1, 16 + bl __modsi3 + lsls r0, 16 + lsrs r6, r0, 16 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + bl __modsi3 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8044EC8 + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080B0A74 + lsls r0, r6, 16 + negs r0, r0 + lsrs r6, r0, 16 +_080B0A74: + bl sub_8044EC8 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080B0A86 + lsls r0, r4, 16 + negs r0, r0 + lsrs r4, r0, 16 +_080B0A86: + ldr r0, _080B0B14 @ =gUnknown_2023BD6 + add r0, r8 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080B0A9C + lsls r0, r4, 16 + ldr r1, _080B0B18 @ =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_080B0A9C: + lsls r0, r6, 16 + asrs r0, 16 + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r3, [r5, 0x22] + adds r0, r3 + strh r0, [r5, 0x22] + mov r1, r9 + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x2E] + ldr r0, _080B0B1C @ =gUnknown_83E7C08 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + adds r3, r5, 0 + adds r3, 0x43 + ldrb r3, [r3] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3C] + cmp r0, 0x40 + beq _080B0B00 + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080B0B20 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0 + bl sub_800843C + movs r2, 0x3C + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080B0B24 @ =nullsub_8 + str r1, [r0] +_080B0B00: + ldr r0, _080B0B28 @ =sub_80B0B2C + str r0, [r5, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B0B10: .4byte gUnknown_2037F1B +_080B0B14: .4byte gUnknown_2023BD6 +_080B0B18: .4byte 0xfff00000 +_080B0B1C: .4byte gUnknown_83E7C08 +_080B0B20: .4byte gUnknown_202063C +_080B0B24: .4byte nullsub_8 +_080B0B28: .4byte sub_80B0B2C + thumb_func_end sub_80B09A4 + + thumb_func_start sub_80B0B2C +sub_80B0B2C: @ 80B0B2C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _080B0B74 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0x40 + beq _080B0B68 + ldr r4, _080B0B70 @ =gUnknown_202063C + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 +_080B0B68: + adds r0, r5, 0 + bl sub_8072740 + b _080B0B78 + .align 2, 0 +_080B0B70: .4byte gUnknown_202063C +_080B0B74: + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] +_080B0B78: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B0B2C + + thumb_func_start sub_80B0B80 +sub_80B0B80: @ 80B0B80 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + movs r0, 0x1E + strh r0, [r4, 0x2E] + ldr r0, _080B0BA0 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B0BA4 + ldrh r0, [r4, 0x20] + subs r0, 0x14 + strh r0, [r4, 0x32] + b _080B0BB6 + .align 2, 0 +_080B0BA0: .4byte gUnknown_2037F02 +_080B0BA4: + ldrh r0, [r4, 0x20] + adds r0, 0x14 + strh r0, [r4, 0x32] + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080B0BB6: + ldrh r0, [r4, 0x22] + subs r0, 0x14 + strh r0, [r4, 0x36] + ldr r0, _080B0BD0 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080B0BD4 @ =sub_80B0BD8 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0BD0: .4byte sub_8075590 +_080B0BD4: .4byte sub_80B0BD8 + thumb_func_end sub_80B0B80 + + thumb_func_start sub_80B0BD8 +sub_80B0BD8: @ 80B0BD8 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x38] + adds r0, 0x1 + movs r6, 0 + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _080B0C18 + ldrh r2, [r5, 0x20] + ldrh r4, [r5, 0x24] + subs r0, r2, r4 + strh r0, [r5, 0x32] + ldrh r1, [r5, 0x22] + ldrh r3, [r5, 0x26] + subs r0, r1, r3 + strh r0, [r5, 0x36] + movs r0, 0x8 + strh r0, [r5, 0x2E] + adds r2, r4 + strh r2, [r5, 0x20] + adds r1, r3 + strh r1, [r5, 0x22] + strh r6, [r5, 0x26] + strh r6, [r5, 0x24] + ldr r0, _080B0C20 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080B0C24 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 +_080B0C18: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B0C20: .4byte sub_8075590 +_080B0C24: .4byte sub_8072740 + thumb_func_end sub_80B0BD8 + + thumb_func_start sub_80B0C28 +sub_80B0C28: @ 80B0C28 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080B0CA4 @ =gUnknown_2037F1A + ldrb r1, [r0] + movs r0, 0x2 + ldr r2, _080B0CA8 @ =gUnknown_2037F1B + eors r0, r1 + ldrb r1, [r2] + cmp r0, r1 + bne _080B0C54 + ldrb r0, [r2] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080B0C54 + ldr r1, _080B0CAC @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080B0C54: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080B0CA4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B0C72 + ldr r1, _080B0CAC @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080B0C72: + ldr r4, _080B0CAC @ =gUnknown_2037F02 + ldrh r0, [r4, 0x6] + movs r5, 0 + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl sub_80754F8 + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x3A] + strh r5, [r6, 0x3C] + ldr r0, _080B0CB0 @ =sub_80B0CB4 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B0CA4: .4byte gUnknown_2037F1A +_080B0CA8: .4byte gUnknown_2037F1B +_080B0CAC: .4byte gUnknown_2037F02 +_080B0CB0: .4byte sub_80B0CB4 + thumb_func_end sub_80B0C28 + + thumb_func_start sub_80B0CB4 +sub_80B0CB4: @ 80B0CB4 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080B0CE0 + ldrh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + strh r0, [r4, 0x3C] + b _080B0CE6 +_080B0CE0: + adds r0, r4, 0 + bl sub_8072740 +_080B0CE6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B0CB4 + + thumb_func_start sub_80B0CEC +sub_80B0CEC: @ 80B0CEC + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r5, _080B0D18 @ =gUnknown_2037F02 + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl sub_800838C + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldr r0, _080B0D1C @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080B0D20 @ =sub_80B0D24 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B0D18: .4byte gUnknown_2037F02 +_080B0D1C: .4byte sub_8074C44 +_080B0D20: .4byte sub_80B0D24 + thumb_func_end sub_80B0CEC + + thumb_func_start sub_80B0D24 +sub_80B0D24: @ 80B0D24 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_800843C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r0, _080B0D50 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080B0D54 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0D50: .4byte sub_8074C44 +_080B0D54: .4byte sub_8072740 + thumb_func_end sub_80B0D24 + + thumb_func_start sub_80B0D58 +sub_80B0D58: @ 80B0D58 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080B0D74 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080B0D78 @ =sub_80B0D7C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0D74: .4byte gUnknown_2037F02 +_080B0D78: .4byte sub_80B0D7C + thumb_func_end sub_80B0D58 + + thumb_func_start sub_80B0D7C +sub_80B0D7C: @ 80B0D7C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x2E] + subs r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B0DC0 + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080B0DC8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080B0DCC @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080B0DD0 @ =sub_80B0DD4 + adds r0, r5, 0 + bl sub_8074A68 +_080B0DC0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B0DC8: .4byte gUnknown_2037F1B +_080B0DCC: .4byte sub_8075590 +_080B0DD0: .4byte sub_80B0DD4 + thumb_func_end sub_80B0D7C + + thumb_func_start sub_80B0DD4 +sub_80B0DD4: @ 80B0DD4 + push {lr} + movs r1, 0xF + strh r1, [r0, 0x2E] + ldr r1, _080B0DE8 @ =sub_8074C44 + str r1, [r0, 0x1C] + ldr r1, _080B0DEC @ =sub_8072740 + bl sub_8074A68 + pop {r0} + bx r0 + .align 2, 0 +_080B0DE8: .4byte sub_8074C44 +_080B0DEC: .4byte sub_8072740 + thumb_func_end sub_80B0DD4 + + thumb_func_start sub_80B0DF0 +sub_80B0DF0: @ 80B0DF0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B0E1C + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r1, _080B0E18 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080B0E78 + .align 2, 0 +_080B0E18: .4byte gUnknown_2037F02 +_080B0E1C: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x64 + ble _080B0E6A + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080B0E6A: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _080B0E78 + adds r0, r4, 0 + bl sub_8072740 +_080B0E78: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B0DF0 + + thumb_func_start sub_80B0E80 +sub_80B0E80: @ 80B0E80 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B0E94 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B0E9C + ldr r4, _080B0E98 @ =gUnknown_2037F1A + b _080B0E9E + .align 2, 0 +_080B0E94: .4byte gUnknown_2037F02 +_080B0E98: .4byte gUnknown_2037F1A +_080B0E9C: + ldr r4, _080B0EE4 @ =gUnknown_2037F1B +_080B0E9E: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080B0EE8 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r5, 0x20] + ldrh r0, [r1, 0x4] + ldrh r3, [r5, 0x22] + adds r0, r3 + strh r0, [r5, 0x22] + strh r2, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x32] + strh r2, [r5, 0x34] + ldr r0, _080B0EEC @ =sub_80B0EF0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B0EE4: .4byte gUnknown_2037F1B +_080B0EE8: .4byte gUnknown_2037F02 +_080B0EEC: .4byte sub_80B0EF0 + thumb_func_end sub_80B0E80 + + thumb_func_start sub_80B0EF0 +sub_80B0EF0: @ 80B0EF0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + cmp r2, 0 + beq _080B0F02 + cmp r2, 0x1 + beq _080B0F26 + b _080B0F60 +_080B0F02: + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080B0F60 + movs r2, 0x32 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080B0F1E + adds r0, r1, 0 + bl sub_8072740 + b _080B0F60 +_080B0F1E: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _080B0F60 +_080B0F26: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B0F4E + movs r0, 0 + strh r0, [r1, 0x30] + ldrh r0, [r1, 0x34] + adds r0, 0x1 + strh r0, [r1, 0x34] + ands r0, r2 + lsls r0, 16 + cmp r0, 0 + beq _080B0F4A + movs r0, 0x2 + b _080B0F4C +_080B0F4A: + ldr r0, _080B0F64 @ =0x0000fffe +_080B0F4C: + strh r0, [r1, 0x24] +_080B0F4E: + ldrh r0, [r1, 0x32] + subs r0, 0x1 + strh r0, [r1, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _080B0F60 + adds r0, r1, 0 + bl sub_8072740 +_080B0F60: + pop {r0} + bx r0 + .align 2, 0 +_080B0F64: .4byte 0x0000fffe + thumb_func_end sub_80B0EF0 + + thumb_func_start sub_80B0F68 +sub_80B0F68: @ 80B0F68 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080B0F8C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080B0F94 + ldr r4, _080B0F90 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x4] + adds r0, r2 + b _080B0FA6 + .align 2, 0 +_080B0F8C: .4byte gUnknown_2037F02 +_080B0F90: .4byte gUnknown_2037F1A +_080B0F94: + ldr r4, _080B0FF0 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 +_080B0FA6: + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x22] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, _080B0FF4 @ =gUnknown_2037F02 + movs r4, 0x2 + ldrsh r0, [r3, r4] + lsls r0, 4 + adds r1, r0 + ldr r4, _080B0FF8 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080B0FFC @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + movs r1, 0 + movs r0, 0 + strh r0, [r5, 0x2E] + movs r2, 0x2 + ldrsh r0, [r3, r2] + cmp r0, 0x1 + beq _080B1014 + cmp r0, 0x1 + bgt _080B1000 + cmp r0, 0 + beq _080B100A + b _080B103A + .align 2, 0 +_080B0FF0: .4byte gUnknown_2037F1B +_080B0FF4: .4byte gUnknown_2037F02 +_080B0FF8: .4byte 0x000003ff +_080B0FFC: .4byte 0xfffffc00 +_080B1000: + cmp r0, 0x2 + beq _080B1024 + cmp r0, 0x3 + beq _080B1034 + b _080B103A +_080B100A: + ldr r0, _080B1010 @ =0x0000fffd + b _080B1034 + .align 2, 0 +_080B1010: .4byte 0x0000fffd +_080B1014: + movs r0, 0x3 + strh r0, [r5, 0x3A] + ldr r0, _080B1020 @ =0x0000fffd + strh r0, [r5, 0x3C] + b _080B1042 + .align 2, 0 +_080B1020: .4byte 0x0000fffd +_080B1024: + ldr r0, _080B1030 @ =0x0000fffd + strh r0, [r5, 0x3A] + movs r0, 0x3 + strh r0, [r5, 0x3C] + b _080B1042 + .align 2, 0 +_080B1030: .4byte 0x0000fffd +_080B1034: + strh r0, [r5, 0x3A] + strh r0, [r5, 0x3C] + b _080B1042 +_080B103A: + adds r0, r5, 0 + bl sub_8072740 + b _080B1046 +_080B1042: + ldr r0, _080B104C @ =sub_80B1050 + str r0, [r5, 0x1C] +_080B1046: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B104C: .4byte sub_80B1050 + thumb_func_end sub_80B0F68 + + thumb_func_start sub_80B1050 +sub_80B1050: @ 80B1050 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x3A] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x3C] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080B1078 + adds r0, r1, 0 + bl sub_8072740 +_080B1078: + pop {r0} + bx r0 + thumb_func_end sub_80B1050 + + thumb_func_start sub_80B107C +sub_80B107C: @ 80B107C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B10C8 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B10D8 + ldr r4, _080B10CC @ =gUnknown_2023D6B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080B10D0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldr r0, _080B10D4 @ =gUnknown_2037F1B + b _080B10F4 + .align 2, 0 +_080B10C8: .4byte gUnknown_2037F02 +_080B10CC: .4byte gUnknown_2023D6B +_080B10D0: .4byte gUnknown_2037F1A +_080B10D4: .4byte gUnknown_2037F1B +_080B10D8: + ldr r0, _080B1110 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldr r0, _080B1114 @ =gUnknown_2037F1A +_080B10F4: + ldrb r0, [r0] + strh r0, [r5, 0x3C] + movs r0, 0 + strh r0, [r5, 0x2E] + movs r0, 0xC + strh r0, [r5, 0x30] + movs r0, 0x8 + strh r0, [r5, 0x32] + ldr r0, _080B1118 @ =sub_80B111C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1110: .4byte gUnknown_2037F1B +_080B1114: .4byte gUnknown_2037F1A +_080B1118: .4byte sub_80B111C + thumb_func_end sub_80B107C + + thumb_func_start sub_80B111C +sub_80B111C: @ 80B111C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB4 + bne _080B1178 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + ldr r1, _080B1180 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080B1184 @ =sub_807563C + str r0, [r4, 0x1C] +_080B1178: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1180: .4byte sub_8074EE0 +_080B1184: .4byte sub_807563C + thumb_func_end sub_80B111C + + thumb_func_start sub_80B1188 +sub_80B1188: @ 80B1188 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B11D4 @ =gUnknown_2037F02 + ldrh r0, [r4] + strh r0, [r5, 0x20] + movs r2, 0x78 + strh r2, [r5, 0x22] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x2E] + adds r0, r5, 0 + adds r0, 0x36 + adds r1, r5, 0 + adds r1, 0x38 + lsls r2, 8 + bl sub_80765C0 + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x3A] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x4 + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080B11D8 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080B11DC @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, _080B11E0 @ =sub_80B11E4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B11D4: .4byte gUnknown_2037F02 +_080B11D8: .4byte 0x000003ff +_080B11DC: .4byte 0xfffffc00 +_080B11E0: .4byte sub_80B11E4 + thumb_func_end sub_80B1188 + + thumb_func_start sub_80B11E4 +sub_80B11E4: @ 80B11E4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r1, 0x2E + ldrsh r0, [r7, r1] + cmp r0, 0 + beq _080B1236 + movs r2, 0x36 + ldrsh r0, [r7, r2] + movs r2, 0x38 + ldrsh r1, [r7, r2] + bl sub_80765C8 + adds r4, r0, 0 + movs r1, 0x3A + ldrsh r0, [r7, r1] + subs r4, r0 + adds r0, r7, 0 + adds r0, 0x36 + adds r1, r7, 0 + adds r1, 0x38 + adds r2, r4, 0 + bl sub_80765C0 + asrs r4, 8 + strh r4, [r7, 0x22] + lsls r4, 16 + asrs r4, 16 + movs r0, 0x8 + negs r0, r0 + cmp r4, r0 + bge _080B122E + adds r0, r7, 0 + bl sub_8072740 + b _080B128C +_080B122E: + ldrh r0, [r7, 0x2E] + subs r0, 0x1 + strh r0, [r7, 0x2E] + b _080B128C +_080B1236: + ldr r4, _080B1298 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r2, _080B129C @ =gUnknown_2037F1B + mov r8, r2 + ldrb r0, [r2] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + subs r4, r6 + strh r4, [r7, 0x2E] + lsrs r0, 24 + subs r0, r5 + strh r0, [r7, 0x30] + ldrh r0, [r7, 0x20] + lsls r0, 4 + strh r0, [r7, 0x32] + ldrh r0, [r7, 0x22] + lsls r0, 4 + strh r0, [r7, 0x34] + ldr r0, _080B12A0 @ =sub_80B12A4 + str r0, [r7, 0x1C] +_080B128C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B1298: .4byte gUnknown_2037F1A +_080B129C: .4byte gUnknown_2037F1B +_080B12A0: .4byte sub_80B12A4 + thumb_func_end sub_80B11E4 + + thumb_func_start sub_80B12A4 +sub_80B12A4: @ 80B12A4 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x34] + adds r1, r3 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r3, r1, 20 + strh r3, [r2, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080B12DE + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080B12DE + cmp r1, 0x78 + ble _080B12E4 +_080B12DE: + adds r0, r2, 0 + bl sub_8072740 +_080B12E4: + pop {r0} + bx r0 + thumb_func_end sub_80B12A4 + + thumb_func_start sub_80B12E8 +sub_80B12E8: @ 80B12E8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B131C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B132C + ldr r4, _080B1320 @ =gUnknown_2023D6B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080B1324 @ =gUnknown_2037F1B + ldrb r4, [r0] + ldr r0, _080B1328 @ =gUnknown_2037F1A + b _080B1332 + .align 2, 0 +_080B131C: .4byte gUnknown_2037F02 +_080B1320: .4byte gUnknown_2023D6B +_080B1324: .4byte gUnknown_2037F1B +_080B1328: .4byte gUnknown_2037F1A +_080B132C: + ldr r0, _080B1364 @ =gUnknown_2037F1A + ldrb r4, [r0] + ldr r0, _080B1368 @ =gUnknown_2037F1B +_080B1332: + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B136C + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x47 + b _080B1386 + .align 2, 0 +_080B1364: .4byte gUnknown_2037F1A +_080B1368: .4byte gUnknown_2037F1B +_080B136C: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B138C + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x18 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x57 +_080B1386: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] +_080B138C: + movs r0, 0x10 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + ldr r1, _080B13CC @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080B13D0 @ =sub_807563C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B13CC: .4byte sub_8072740 +_080B13D0: .4byte sub_807563C + thumb_func_end sub_80B12E8 + + thumb_func_start sub_80B13D4 +sub_80B13D4: @ 80B13D4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080B13EA + adds r0, r4, 0 + bl sub_8072740 +_080B13EA: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B13D4 + + thumb_func_start sub_80B13F8 +sub_80B13F8: @ 80B13F8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080B1474 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080B1478 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1] + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x34] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x36] + ldr r0, _080B147C @ =gUnknown_2037F16 + ldrb r6, [r0] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B1442 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080B1442: + movs r0, 0x1 + ands r6, r0 + cmp r6, 0 + beq _080B1456 + ldrh r0, [r5, 0x32] + negs r0, r0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] +_080B1456: + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C + ldrh r0, [r5, 0x32] + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x34] + strh r0, [r5, 0x26] + ldr r0, _080B1480 @ =sub_80B13D4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B1474: .4byte gUnknown_2037F1B +_080B1478: .4byte gUnknown_2037F02 +_080B147C: .4byte gUnknown_2037F16 +_080B1480: .4byte sub_80B13D4 + thumb_func_end sub_80B13F8 + + thumb_func_start sub_80B1484 +sub_80B1484: @ 80B1484 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B149C @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B14A0 + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + b _080B14A8 + .align 2, 0 +_080B149C: .4byte gUnknown_2037F02 +_080B14A0: + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 +_080B14A8: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B14BC + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + b _080B14D2 +_080B14BC: + ldr r0, _080B14E4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B14D2 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C +_080B14D2: + ldr r0, _080B14E8 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080B14EC @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B14E4: .4byte gUnknown_2037F1A +_080B14E8: .4byte sub_8074F6C +_080B14EC: .4byte sub_8072740 + thumb_func_end sub_80B1484 + + thumb_func_start sub_80B14F0 +sub_80B14F0: @ 80B14F0 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080B152A + ldrh r0, [r4, 0x30] + adds r0, 0x28 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x2 + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080B152A + adds r0, r4, 0 + bl sub_8072740 +_080B152A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B14F0 + + thumb_func_start sub_80B1530 +sub_80B1530: @ 80B1530 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080B1560 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B1568 + cmp r0, 0x1 + bgt _080B1582 + cmp r0, 0 + bne _080B1582 + movs r0, 0 + bl sub_8075458 + ldr r0, _080B1564 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r4, 0x18] + b _080B157A + .align 2, 0 +_080B1560: .4byte gUnknown_3005090 +_080B1564: .4byte gUnknown_2037F02 +_080B1568: + ldrh r0, [r4, 0x18] + subs r0, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B158E +_080B157A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B158E +_080B1582: + movs r2, 0xA0 + lsls r2, 3 + adds r0, r2, 0 + ldrh r1, [r4, 0x1A] + adds r0, r1 + strh r0, [r4, 0x1A] +_080B158E: + movs r2, 0xB0 + lsls r2, 4 + adds r0, r2, 0 + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r4, 0x1C] + ldr r0, _080B15BC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B15C4 + ldr r1, _080B15C0 @ =gUnknown_2022980 + ldrh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + adds r7, r1, 0 + b _080B15D4 + .align 2, 0 +_080B15BC: .4byte gUnknown_2037F1B +_080B15C0: .4byte gUnknown_2022980 +_080B15C4: + ldr r2, _080B1614 @ =gUnknown_2022980 + ldrh r1, [r4, 0x1A] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2] + subs r0, r1 + strh r0, [r2] + adds r7, r2, 0 +_080B15D4: + ldr r3, _080B1618 @ =gUnknown_2022982 + ldrh r2, [r4, 0x1C] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r3] + adds r0, r1 + strh r0, [r3] + movs r0, 0xFF + ldrb r1, [r4, 0x1A] + movs r5, 0 + strh r1, [r4, 0x1A] + ands r0, r2 + strh r0, [r4, 0x1C] + ldr r0, _080B161C @ =gUnknown_2037F02 + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080B160C + strh r5, [r7] + strh r5, [r3] + movs r0, 0x1 + bl sub_8075458 + adds r0, r6, 0 + bl sub_8072760 +_080B160C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B1614: .4byte gUnknown_2022980 +_080B1618: .4byte gUnknown_2022982 +_080B161C: .4byte gUnknown_2037F02 + thumb_func_end sub_80B1530 + + thumb_func_start sub_80B1620 +sub_80B1620: @ 80B1620 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B1674 @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B1636 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_800838C +_080B1636: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x2E] + ldr r4, _080B1678 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080B167C @ =0x0000ffe2 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080B1680 @ =sub_80B1684 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1674: .4byte gUnknown_2037F02 +_080B1678: .4byte gUnknown_2037F1B +_080B167C: .4byte 0x0000ffe2 +_080B1680: .4byte sub_80B1684 + thumb_func_end sub_80B1620 + + thumb_func_start sub_80B1684 +sub_80B1684: @ 80B1684 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B1698 + adds r0, r4, 0 + bl sub_8072740 +_080B1698: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B1684 + + thumb_func_start sub_80B16A0 +sub_80B16A0: @ 80B16A0 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r5, _080B1714 @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B16B8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C +_080B16B8: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080B1718 @ =gUnknown_2037F1B + ldrb r0, [r0] + mov r6, sp + adds r6, 0x2 + movs r1, 0x1 + mov r2, sp + adds r3, r6, 0 + bl sub_8076D9C + ldr r0, _080B171C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B16E6 + ldrh r0, [r5, 0x8] + negs r0, r0 + strh r0, [r5, 0x8] +_080B16E6: + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + mov r1, sp + ldrh r0, [r5, 0x8] + ldrh r1, [r1] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r5, 0xA] + ldrh r6, [r6] + adds r0, r6 + strh r0, [r4, 0x36] + ldr r0, _080B1720 @ =0x0000ffe2 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080B1724 @ =sub_80B1728 + str r0, [r4, 0x1C] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B1714: .4byte gUnknown_2037F02 +_080B1718: .4byte gUnknown_2037F1B +_080B171C: .4byte gUnknown_2037F1A +_080B1720: .4byte 0x0000ffe2 +_080B1724: .4byte sub_80B1728 + thumb_func_end sub_80B16A0 + + thumb_func_start sub_80B1728 +sub_80B1728: @ 80B1728 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B173C + adds r0, r4, 0 + bl sub_8072740 +_080B173C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B1728 + + thumb_func_start sub_80B1744 +sub_80B1744: @ 80B1744 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B1790 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r1, [r5] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754B8 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0x38] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0x3A] + ldr r0, _080B1794 @ =sub_80B1798 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1790: .4byte gUnknown_2037F02 +_080B1794: .4byte sub_80B1798 + thumb_func_end sub_80B1744 + + thumb_func_start sub_80B1798 +sub_80B1798: @ 80B1798 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074D00 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x38] + subs r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x3A] + subs r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B17BE + adds r0, r4, 0 + bl sub_8072740 +_080B17BE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B1798 + + thumb_func_start sub_80B17C4 +sub_80B17C4: @ 80B17C4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B1824 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_8076D9C + ldr r0, _080B1828 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B17F0 + ldr r1, _080B182C @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080B17F0: + ldr r0, _080B182C @ =gUnknown_2037F02 + ldrh r2, [r0] + ldrh r1, [r4, 0x20] + adds r2, r1 + strh r2, [r4, 0x20] + ldrh r1, [r0, 0x2] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + ldrh r3, [r0, 0x8] + strh r3, [r4, 0x2E] + ldrh r0, [r0, 0x4] + adds r2, r0 + strh r2, [r4, 0x32] + adds r1, r3 + strh r1, [r4, 0x36] + ldr r0, _080B1830 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080B1834 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1824: .4byte gUnknown_2037F1B +_080B1828: .4byte gUnknown_2037F1A +_080B182C: .4byte gUnknown_2037F02 +_080B1830: .4byte sub_8075590 +_080B1834: .4byte sub_8072740 + thumb_func_end sub_80B17C4 + + thumb_func_start sub_80B1838 +sub_80B1838: @ 80B1838 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B1850 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B1854 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 + b _080B188A + .align 2, 0 +_080B1850: .4byte gUnknown_2037F02 +_080B1854: + ldr r0, _080B1894 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_8076D9C + ldr r0, _080B1898 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B187A + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_080B187A: + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_080B188A: + ldr r0, _080B189C @ =sub_80B18A0 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1894: .4byte gUnknown_2037F1B +_080B1898: .4byte gUnknown_2037F1A +_080B189C: .4byte sub_80B18A0 + thumb_func_end sub_80B1838 + + thumb_func_start sub_80B18A0 +sub_80B18A0: @ 80B18A0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x30 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080B18DC + adds r0, r4, 0 + bl sub_8072740 +_080B18DC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B18A0 + + thumb_func_start sub_80B18E4 +sub_80B18E4: @ 80B18E4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075114 + ldrh r0, [r4, 0x22] + adds r0, 0x14 + strh r0, [r4, 0x22] + movs r0, 0xBF + strh r0, [r4, 0x30] + ldr r1, _080B1908 @ =sub_80B190C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1908: .4byte sub_80B190C + thumb_func_end sub_80B18E4 + + thumb_func_start sub_80B190C +sub_80B190C: @ 80B190C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x47 + bne _080B1946 + adds r0, r4, 0 + bl sub_8072740 +_080B1946: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B190C + + thumb_func_start sub_80B194C +sub_80B194C: @ 80B194C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B197C @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r1, _080B1980 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x8] + ldrh r0, [r1] + strh r0, [r4, 0xA] + ldr r0, _080B1984 @ =0x00002719 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xC] + ldr r0, _080B1988 @ =sub_80B198C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B197C: .4byte gUnknown_3005090 +_080B1980: .4byte gUnknown_2037F02 +_080B1984: .4byte 0x00002719 +_080B1988: .4byte sub_80B198C + thumb_func_end sub_80B194C + + thumb_func_start sub_80B198C +sub_80B198C: @ 80B198C + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _080B1A0C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x1C] + adds r1, r0, 0x1 + strh r1, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r4, 0xA + ldrsh r1, [r3, r4] + adds r7, r2, 0 + cmp r0, r1 + bne _080B19EA + movs r0, 0 + strh r0, [r3, 0x1C] + ldrb r0, [r3, 0xC] + ldr r2, _080B1A10 @ =gUnknown_20375F8 + lsls r0, 4 + movs r3, 0x84 + lsls r3, 1 + adds r1, r0, r3 + lsls r1, 1 + adds r1, r2 + ldrh r6, [r1] + movs r4, 0x7 + mov r12, r0 + ldr r0, _080B1A14 @ =0x00000107 + add r0, r12 + lsls r0, 1 + adds r3, r0, r2 +_080B19D2: + ldrh r0, [r3] + strh r0, [r1] + subs r3, 0x2 + subs r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bgt _080B19D2 + ldr r0, _080B1A18 @ =0x00000101 + add r0, r12 + lsls r0, 1 + adds r0, r2 + strh r6, [r0] +_080B19EA: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r7 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + cmp r1, 0 + bne _080B1A04 + adds r0, r5, 0 + bl sub_8072760 +_080B1A04: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B1A0C: .4byte gUnknown_3005090 +_080B1A10: .4byte gUnknown_20375F8 +_080B1A14: .4byte 0x00000107 +_080B1A18: .4byte 0x00000101 + thumb_func_end sub_80B198C + + thumb_func_start sub_80B1A1C +sub_80B1A1C: @ 80B1A1C + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080B1A88 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B1A3C + ldr r1, _080B1A8C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080B1A3C: + ldr r4, _080B1A8C @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldr r5, _080B1A90 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl sub_80754F8 + ldr r0, _080B1A94 @ =sub_8074F50 + str r0, [r6, 0x1C] + ldr r1, _080B1A98 @ =sub_80B1A9C + adds r0, r6, 0 + bl sub_8074A68 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B1A88: .4byte gUnknown_2037F1A +_080B1A8C: .4byte gUnknown_2037F02 +_080B1A90: .4byte gUnknown_2037F1B +_080B1A94: .4byte sub_8074F50 +_080B1A98: .4byte sub_80B1A9C + thumb_func_end sub_80B1A1C + + thumb_func_start sub_80B1A9C +sub_80B1A9C: @ 80B1A9C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080B1AB0 + adds r0, r4, 0 + bl sub_8072740 +_080B1AB0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B1A9C + + thumb_func_start sub_80B1AB8 +sub_80B1AB8: @ 80B1AB8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B1B54 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B1AE4 + ldr r1, _080B1B58 @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080B1AE4: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B1AFC + ldr r0, _080B1B58 @ =gUnknown_2037F02 + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_080B1AFC: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + ldr r2, _080B1B58 @ =gUnknown_2037F02 + ldrh r1, [r2] + ldrh r3, [r5, 0x20] + adds r1, r3 + strh r1, [r5, 0x20] + lsrs r0, 24 + ldrh r1, [r2, 0x2] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x2E] + movs r3, 0xC + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080B1B60 + ldr r4, _080B1B5C @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080B1B72 + .align 2, 0 +_080B1B54: .4byte gUnknown_2037F1A +_080B1B58: .4byte gUnknown_2037F02 +_080B1B5C: .4byte gUnknown_2037F1B +_080B1B60: + ldr r0, _080B1BA0 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_8076D9C +_080B1B72: + ldr r4, _080B1BA4 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x6] + ldrh r3, [r5, 0x36] + adds r0, r3 + strh r0, [r5, 0x36] + ldr r0, _080B1BA8 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080B1BAC @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl sub_80083C0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1BA0: .4byte gUnknown_2037F1B +_080B1BA4: .4byte gUnknown_2037F02 +_080B1BA8: .4byte sub_8075590 +_080B1BAC: .4byte sub_8072740 + thumb_func_end sub_80B1AB8 + + thumb_func_start sub_80B1BB0 +sub_80B1BB0: @ 80B1BB0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080B1BEC @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080B1BF0 @ =sub_80B1BF8 + str r0, [r4, 0x1C] + movs r0, 0 + bl sub_80749D4 + ldr r2, _080B1BF4 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1BEC: .4byte gUnknown_2037F02 +_080B1BF0: .4byte sub_80B1BF8 +_080B1BF4: .4byte gUnknown_202063C + thumb_func_end sub_80B1BB0 + + thumb_func_start sub_80B1BF8 +sub_80B1BF8: @ 80B1BF8 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080B1C0C + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + b _080B1C1E +_080B1C0C: + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + subs r1, r0 + strh r1, [r2, 0x26] +_080B1C1E: + movs r3, 0x22 + ldrsh r0, [r2, r3] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080B1C36 + adds r0, r2, 0 + bl sub_8072740 +_080B1C36: + pop {r0} + bx r0 + thumb_func_end sub_80B1BF8 + + thumb_func_start sub_80B1C3C +sub_80B1C3C: @ 80B1C3C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B1C64 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B1C6C + movs r0, 0x88 + lsls r0, 1 + strh r0, [r5, 0x20] + ldr r0, _080B1C68 @ =0x0000ffe0 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800843C + b _080B1C72 + .align 2, 0 +_080B1C64: .4byte gUnknown_2037F1A +_080B1C68: .4byte 0x0000ffe0 +_080B1C6C: + ldr r0, _080B1CB0 @ =0x0000ffe0 + strh r0, [r5, 0x20] + strh r0, [r5, 0x22] +_080B1C72: + ldr r0, _080B1CB4 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080B1CB8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754F8 + ldr r0, _080B1CBC @ =sub_80B1CC0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1CB0: .4byte 0x0000ffe0 +_080B1CB4: .4byte gUnknown_2037F02 +_080B1CB8: .4byte gUnknown_2037F1B +_080B1CBC: .4byte sub_80B1CC0 + thumb_func_end sub_80B1C3C + + thumb_func_start sub_80B1CC0 +sub_80B1CC0: @ 80B1CC0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80755E0 + ldrh r1, [r4, 0x34] + lsrs r0, r1, 8 + cmp r0, 0xC8 + bls _080B1CE8 + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0x24] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] +_080B1CE8: + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x20 + movs r1, 0x98 + lsls r1, 1 + cmp r0, r1 + bhi _080B1D0A + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0xA0 + ble _080B1D30 +_080B1D0A: + movs r0, 0 + bl sub_80749D4 + ldr r2, _080B1D38 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8072740 +_080B1D30: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1D38: .4byte gUnknown_202063C + thumb_func_end sub_80B1CC0 + + thumb_func_start sub_80B1D3C +sub_80B1D3C: @ 80B1D3C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080B1D7C + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B1D6E + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080B1D6E: + adds r0, r4, 0 + bl sub_8007280 + ldr r1, _080B1D84 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080B1D7C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1D84: .4byte gUnknown_2037EE2 + thumb_func_end sub_80B1D3C + + thumb_func_start sub_80B1D88 +sub_80B1D88: @ 80B1D88 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r5, r7, 0 + adds r5, 0x2E + ldr r0, _080B1DA8 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080B1DB0 + ldr r0, _080B1DAC @ =gUnknown_2037F1A + b _080B1DB2 + .align 2, 0 +_080B1DA8: .4byte gUnknown_2037F02 +_080B1DAC: .4byte gUnknown_2037F1A +_080B1DB0: + ldr r0, _080B1E5C @ =gUnknown_2037F1B +_080B1DB2: + ldrb r6, [r0] + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B1DC8 + ldr r1, _080B1E60 @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080B1DC8: + adds r0, r6, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080B1E60 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r7, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + ldrh r1, [r4, 0x2] + lsrs r0, 24 + adds r1, r0, r1 + strh r1, [r7, 0x22] + lsls r1, 8 + strh r1, [r5, 0x8] + ldrh r1, [r4, 0xC] + adds r0, r1 + lsls r0, 1 + ldrh r2, [r5, 0xE] + movs r1, 0x1 + ands r1, r2 + orrs r1, r0 + strh r1, [r5, 0xE] + ldrb r0, [r5] + movs r2, 0x4 + mov r8, r2 + mov r1, r8 + orrs r0, r1 + strb r0, [r5] + ldrh r0, [r4, 0x4] + ldrb r1, [r4, 0x4] + strh r1, [r5, 0x2] + lsls r0, 16 + lsrs r0, 24 + strh r0, [r5, 0xA] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x4] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x6] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0xC] + subs r1, 0x40 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0x7F + bhi _080B1EBE + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B1E64 + adds r0, r6, 0 + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r7, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x5] + b _080B1E7C + .align 2, 0 +_080B1E5C: .4byte gUnknown_2037F1B +_080B1E60: .4byte gUnknown_2037F02 +_080B1E64: + adds r0, r6, 0 + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] +_080B1E7C: + ldrb r1, [r5, 0xE] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + strb r0, [r5, 0xE] + movs r2, 0x4 + ldrsh r0, [r5, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _080B1F1E + adds r3, r7, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r0, r2, 31 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + b _080B1F16 +_080B1EBE: + adds r0, r6, 0 + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] + ldrb r0, [r5, 0xE] + movs r4, 0x1 + orrs r0, r4 + strb r0, [r5, 0xE] + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080B1F1E + adds r3, r7, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + ands r1, r4 + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + mov r2, r8 + orrs r0, r2 +_080B1F16: + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] +_080B1F1E: + ldrh r1, [r5, 0x2] + lsrs r1, 6 + lsls r1, 4 + ldrb r2, [r5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + ldr r3, _080B1F88 @ =gUnknown_825E074 + ldrh r0, [r5, 0x2] + lsls r0, 1 + adds r0, r3 + movs r2, 0 + ldrsh r1, [r0, r2] + ldrb r0, [r5, 0xC] + muls r0, r1 + asrs r0, 8 + strh r0, [r7, 0x24] + ldrb r2, [r7, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r1, 0x24 + ldrsh r0, [r7, r1] + negs r0, r0 + asrs r0, 1 + ldrb r5, [r5, 0xA] + adds r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r3 + ldrh r4, [r1] + ldr r1, _080B1F8C @ =gUnknown_2021BCC + lsls r2, 3 + adds r2, r1 + adds r0, 0x40 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x6] + strh r0, [r2] + strh r4, [r2, 0x2] + lsls r0, r4, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldr r0, _080B1F90 @ =sub_80B1F94 + str r0, [r7, 0x1C] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B1F88: .4byte gUnknown_825E074 +_080B1F8C: .4byte gUnknown_2021BCC +_080B1F90: .4byte sub_80B1F94 + thumb_func_end sub_80B1D88 + + thumb_func_start sub_80B1F94 +sub_80B1F94: @ 80B1F94 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + movs r6, 0 + adds r4, r5, 0 + adds r4, 0x2E + ldrb r2, [r4] + movs r7, 0x1 + movs r0, 0x1 + mov r9, r0 + ands r0, r2 + cmp r0, 0 + beq _080B1FCE + ldrb r0, [r4, 0x1] + adds r1, r0, 0 + adds r1, 0xFF + strb r1, [r4, 0x1] + lsls r0, 24 + cmp r0, 0 + beq _080B1FC2 + b _080B24AA +_080B1FC2: + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080B24AA +_080B1FCE: + ldrh r0, [r4, 0x2] + lsrs r1, r0, 6 + mov r12, r0 + cmp r1, 0x1 + bne _080B1FDA + b _080B20FE +_080B1FDA: + cmp r1, 0x1 + bgt _080B1FE4 + cmp r1, 0 + beq _080B1FF2 + b _080B23F0 +_080B1FE4: + cmp r1, 0x2 + bne _080B1FEA + b _080B21F2 +_080B1FEA: + cmp r1, 0x3 + bne _080B1FF0 + b _080B22E6 +_080B1FF0: + b _080B23F0 +_080B1FF2: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x1 + bne _080B2006 + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080B20F4 +_080B2006: + lsrs r0, r1, 28 + cmp r0, 0x3 + bne _080B2028 + lsls r0, r2, 30 + lsrs r0, 31 + movs r1, 0x1 + eors r0, r1 + ands r0, r7 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + strb r1, [r4] + strb r6, [r4, 0x1] + b _080B20F4 +_080B2028: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080B20F4 + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r6, 0x1 + eors r1, r6 + ands r1, r7 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080B20E6 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B20B6 + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B209C + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B20D4 +_080B209C: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B20D4 +_080B20B6: + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B20CA + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + b _080B20D2 +_080B20CA: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC +_080B20D2: + strb r0, [r1] +_080B20D4: + ldrb r2, [r4, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xE] +_080B20E6: + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, 0x2] + mov r12, r1 +_080B20F4: + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + strb r0, [r4] + b _080B23F0 +_080B20FE: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0 + bne _080B210C + movs r0, 0x8 + orrs r0, r2 + b _080B2114 +_080B210C: + lsrs r0, r1, 28 + cmp r0, 0x2 + bne _080B211C + adds r0, r2, 0 +_080B2114: + orrs r0, r7 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080B21E8 +_080B211C: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080B21E8 + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r6, 0x1 + eors r1, r6 + ands r1, r7 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080B21DA + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B21AA + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B2190 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B21C8 +_080B2190: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B21C8 +_080B21AA: + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B21BE + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + b _080B21C6 +_080B21BE: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC +_080B21C6: + strb r0, [r1] +_080B21C8: + ldrb r2, [r4, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xE] +_080B21DA: + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, 0x2] + mov r12, r1 +_080B21E8: + ldrb r0, [r4] + movs r1, 0xF + ands r1, r0 + movs r0, 0x10 + b _080B23EC +_080B21F2: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x3 + bne _080B2200 + movs r0, 0x8 + orrs r0, r2 + b _080B2208 +_080B2200: + lsrs r0, r1, 28 + cmp r0, 0x1 + bne _080B2210 + adds r0, r2, 0 +_080B2208: + orrs r0, r7 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080B22DC +_080B2210: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080B22DC + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r6, 0x1 + eors r1, r6 + ands r1, r7 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080B22CE + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B229E + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B2284 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B22BC +_080B2284: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B22BC +_080B229E: + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B22B2 + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + b _080B22BA +_080B22B2: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC +_080B22BA: + strb r0, [r1] +_080B22BC: + ldrb r2, [r4, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xE] +_080B22CE: + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, 0x2] + mov r12, r1 +_080B22DC: + ldrb r0, [r4] + movs r1, 0xF + ands r1, r0 + movs r0, 0x20 + b _080B23EC +_080B22E6: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x2 + bne _080B22F6 + movs r0, 0x8 + orrs r0, r2 + strb r0, [r4] + b _080B23E4 +_080B22F6: + lsrs r0, r1, 28 + cmp r0, 0 + bne _080B2318 + lsls r0, r2, 30 + lsrs r0, 31 + movs r1, 0x1 + eors r0, r1 + ands r0, r7 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + strb r1, [r4] + strb r6, [r4, 0x1] + b _080B23E4 +_080B2318: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080B23E4 + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r6, 0x1 + eors r1, r6 + ands r1, r7 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080B23D6 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B23A6 + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B238C + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B23C4 +_080B238C: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080B23C4 +_080B23A6: + ldrb r1, [r4, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080B23BA + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + b _080B23C2 +_080B23BA: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC +_080B23C2: + strb r0, [r1] +_080B23C4: + ldrb r2, [r4, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xE] +_080B23D6: + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, 0x2] + mov r12, r1 +_080B23E4: + ldrb r0, [r4] + movs r1, 0xF + ands r1, r0 + movs r0, 0x30 +_080B23EC: + orrs r1, r0 + strb r1, [r4] +_080B23F0: + ldrb r1, [r4] + lsls r1, 30 + lsrs r1, 31 + adds r0, r4, 0 + adds r0, 0xC + adds r0, r1 + ldrb r1, [r0] + ldr r3, _080B2478 @ =gUnknown_825E074 + mov r2, r12 + lsls r0, r2, 1 + adds r0, r3 + movs r2, 0 + ldrsh r0, [r0, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x24] + ldrb r2, [r5, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r1, 0x24 + ldrsh r0, [r5, r1] + negs r0, r0 + asrs r0, 1 + ldrb r1, [r4, 0xA] + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r3 + ldrh r6, [r1] + ldr r1, _080B247C @ =gUnknown_2021BCC + lsls r2, 3 + adds r2, r1 + adds r0, 0x40 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x6] + strh r0, [r2] + strh r6, [r2, 0x2] + lsls r0, r6, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldrh r0, [r4, 0x6] + ldrh r2, [r4, 0x8] + adds r0, r2 + strh r0, [r4, 0x8] + lsls r0, 16 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080B2480 + ldrh r0, [r4, 0x4] + subs r1, 0x1 + ands r1, r0 + ldrh r0, [r4, 0x2] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2] + b _080B2490 + .align 2, 0 +_080B2478: .4byte gUnknown_825E074 +_080B247C: .4byte gUnknown_2021BCC +_080B2480: + ldrh r0, [r4, 0x4] + ldr r1, _080B24B8 @ =0x00007fff + ands r1, r0 + ldrh r2, [r4, 0x2] + adds r1, r2 + movs r0, 0xFF + ands r1, r0 + strh r1, [r4, 0x2] +_080B2490: + movs r0, 0x22 + ldrsh r1, [r5, r0] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + ldrh r0, [r4, 0xE] + lsrs r0, 1 + cmp r1, r0 + blt _080B24AA + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080B24BC @ =sub_80B1D3C + str r0, [r5, 0x1C] +_080B24AA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B24B8: .4byte 0x00007fff +_080B24BC: .4byte sub_80B1D3C + thumb_func_end sub_80B1F94 + + thumb_func_start sub_80B24C0 +sub_80B24C0: @ 80B24C0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _080B2508 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldr r5, _080B250C @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r0, _080B2510 @ =sub_8075DF4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2508: .4byte gUnknown_2037F1B +_080B250C: .4byte gUnknown_2037F1A +_080B2510: .4byte sub_8075DF4 + thumb_func_end sub_80B24C0 + + thumb_func_start sub_80B2514 +sub_80B2514: @ 80B2514 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r5, _080B2554 @ =gUnknown_2037F02 + ldrh r0, [r5] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x34] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B25C4 + ldr r0, _080B2558 @ =gUnknown_2023BD6 + ldr r1, _080B255C @ =gUnknown_2037F1B + ldrb r2, [r1] + adds r0, r2, r0 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B2560 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + b _080B256E + .align 2, 0 +_080B2554: .4byte gUnknown_2037F02 +_080B2558: .4byte gUnknown_2023BD6 +_080B255C: .4byte gUnknown_2037F1B +_080B2560: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x28 +_080B256E: + strh r0, [r4, 0x3C] + ldr r0, _080B259C @ =gUnknown_2037F02 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080B25A4 + ldr r0, _080B25A0 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080B25D8 + .align 2, 0 +_080B259C: .4byte gUnknown_2037F02 +_080B25A0: .4byte gUnknown_2037F1B +_080B25A4: + ldr r0, _080B25C0 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_8076884 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080B25D8 + .align 2, 0 +_080B25C0: .4byte gUnknown_2037F1B +_080B25C4: + ldr r0, _080B267C @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r4, 0x3C] +_080B25D8: + ldr r5, _080B2680 @ =gUnknown_825E074 + ldrh r3, [r4, 0x30] + movs r1, 0xFF + ands r1, r3 + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + movs r2, 0 + strh r0, [r4, 0x36] + adds r1, 0x40 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r4, 0x38] + strh r2, [r4, 0x3A] + strh r2, [r4, 0x26] + strh r2, [r4, 0x24] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r6, r0, 27 + lsls r3, 16 + lsrs r3, 24 + strh r3, [r4, 0x30] + bl sub_8044EC8 + lsls r0, 16 + asrs r7, r0, 16 + movs r0, 0x80 + lsls r0, 8 + ands r0, r7 + cmp r0, 0 + beq _080B2622 + ldrh r1, [r4, 0x30] + movs r0, 0xFF + subs r0, r1 + strh r0, [r4, 0x30] +_080B2622: + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + ldr r3, _080B2684 @ =gUnknown_2021BCC + lsls r2, r6, 3 + adds r2, r3 + adds r1, 0x40 + lsls r1, 1 + adds r1, r5 + ldrh r1, [r1] + strh r1, [r2, 0x6] + strh r1, [r2] + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + movs r0, 0x1 + ands r0, r7 + cmp r0, 0 + beq _080B2672 + adds r2, r4, 0 + adds r2, 0x2A + movs r1, 0x1 + movs r0, 0x1 + strb r0, [r2] + ldrb r0, [r3] + orrs r0, r1 + strb r0, [r3] +_080B2672: + ldr r0, _080B2688 @ =sub_80B268C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B267C: .4byte gUnknown_2037F1B +_080B2680: .4byte gUnknown_825E074 +_080B2684: .4byte gUnknown_2021BCC +_080B2688: .4byte sub_80B268C + thumb_func_end sub_80B2514 + + thumb_func_start sub_80B268C +sub_80B268C: @ 80B268C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x2E + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r1, 0 + mov r8, r1 + movs r7, 0 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080B2770 + movs r2, 0x36 + ldrsh r1, [r4, r2] + movs r2, 0x3A + ldrsh r0, [r4, r2] + muls r0, r1 + asrs r6, r0, 8 + strh r6, [r4, 0x24] + movs r0, 0x38 + ldrsh r1, [r4, r0] + movs r2, 0x3A + ldrsh r0, [r4, r2] + muls r0, r1 + asrs r3, r0, 8 + strh r3, [r4, 0x26] + ldrh r2, [r4, 0x34] + movs r1, 0xFF + adds r0, r1, 0 + ands r0, r2 + ldrh r2, [r4, 0x3A] + adds r0, r2 + strh r0, [r4, 0x3A] + ldrh r2, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + ands r1, r2 + cmp r0, r1 + blt _080B2770 + ldrh r0, [r4, 0x20] + adds r0, r6 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + strh r7, [r4, 0x24] + strh r7, [r4, 0x26] + mov r0, sp + adds r1, r5, 0 + movs r2, 0x10 + bl memcpy + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x10 + bl memset + ldrh r0, [r4, 0x22] + lsls r0, 8 + strh r0, [r5, 0x8] + mov r0, sp + ldrh r0, [r0, 0x6] + lsrs r1, r0, 8 + strh r1, [r5, 0x6] + strh r7, [r5, 0x2] + mov r0, sp + ldrh r0, [r0, 0x2] + strh r0, [r5, 0xA] + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, 0 + beq _080B2740 + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080B2738 + ldr r0, _080B2734 @ =0x00008001 + b _080B274E + .align 2, 0 +_080B2734: .4byte 0x00008001 +_080B2738: + ldr r0, _080B273C @ =0x00008002 + b _080B274E + .align 2, 0 +_080B273C: .4byte 0x00008002 +_080B2740: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080B274C + movs r0, 0x1 + b _080B274E +_080B274C: + movs r0, 0x2 +_080B274E: + strh r0, [r5, 0x4] + mov r0, sp + ldrh r0, [r0, 0x4] + lsrs r0, 8 + strb r0, [r5, 0xC] + subs r0, 0x2 + strb r0, [r5, 0xD] + mov r0, sp + ldrh r1, [r0, 0xE] + lsls r1, 1 + ldrh r2, [r5, 0xE] + movs r0, 0x1 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0xE] + ldr r0, _080B277C @ =sub_80B1F94 + str r0, [r4, 0x1C] +_080B2770: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B277C: .4byte sub_80B1F94 + thumb_func_end sub_80B268C + + thumb_func_start sub_80B2780 +sub_80B2780: @ 80B2780 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B2798 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B279C + adds r0, r5, 0 + movs r1, 0 + bl sub_8075160 + b _080B27A4 + .align 2, 0 +_080B2798: .4byte gUnknown_2037F02 +_080B279C: + adds r0, r5, 0 + movs r1, 0 + bl sub_8075114 +_080B27A4: + ldr r4, _080B280C @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080B27BC + ldr r0, _080B2810 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B27D2 +_080B27BC: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080B27D8 + ldr r0, _080B2814 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B27D8 +_080B27D2: + ldrh r0, [r5, 0x20] + adds r0, 0x8 + strh r0, [r5, 0x20] +_080B27D8: + ldr r4, _080B280C @ =gUnknown_2037F02 + ldrb r1, [r4, 0x8] + adds r0, r5, 0 + bl sub_80083C0 + ldrh r0, [r5, 0x20] + subs r0, 0x20 + strh r0, [r5, 0x20] + ldr r0, _080B2818 @ =0x00000ccc + strh r0, [r5, 0x30] + ldrh r1, [r4, 0x8] + movs r0, 0xC + adds r2, r0, 0 + muls r2, r1 + adds r0, r2, 0 + ldrh r2, [r5, 0x24] + adds r0, r2 + strh r0, [r5, 0x24] + strh r1, [r5, 0x2E] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, _080B281C @ =sub_80B2820 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B280C: .4byte gUnknown_2037F02 +_080B2810: .4byte gUnknown_2037F1A +_080B2814: .4byte gUnknown_2037F1B +_080B2818: .4byte 0x00000ccc +_080B281C: .4byte sub_80B2820 + thumb_func_end sub_80B2780 + + thumb_func_start sub_80B2820 +sub_80B2820: @ 80B2820 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080B284A + strh r1, [r4, 0x2E] + strh r1, [r4, 0x24] + adds r0, r4, 0 + bl sub_800838C +_080B284A: + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B2862 + adds r0, r4, 0 + bl sub_8072740 +_080B2862: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B2820 + + thumb_func_start sub_80B2868 +sub_80B2868: @ 80B2868 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080B2900 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r7, r0, r1 + ldrh r0, [r7, 0x8] + movs r1, 0x1F + ands r0, r1 + cmp r0, 0 + bne _080B28E2 + ldr r1, _080B2904 @ =gUnknown_2037EE2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r1, 0x8 + ldrsh r0, [r7, r1] + movs r5, 0xD + negs r5, r5 + adds r1, r5, 0 + bl sub_8044E30 + ldr r4, _080B2908 @ =gUnknown_2037F02 + strh r0, [r4] + movs r1, 0x8 + ldrsh r0, [r7, r1] + adds r1, r5, 0 + bl sub_8044E4C + strh r0, [r4, 0x2] + movs r0, 0x1 + strh r0, [r4, 0x4] + movs r0, 0x3 + strh r0, [r4, 0x6] + ldr r0, _080B290C @ =gUnknown_83E7C98 + mov r8, r0 + ldr r5, _080B2910 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + mov r0, r8 + adds r1, r4, 0 + movs r3, 0x3 + bl sub_80071EC +_080B28E2: + ldrh r0, [r7, 0x8] + adds r0, 0x8 + strh r0, [r7, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080B28F6 + adds r0, r6, 0 + bl sub_8072760 +_080B28F6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B2900: .4byte gUnknown_3005090 +_080B2904: .4byte gUnknown_2037EE2 +_080B2908: .4byte gUnknown_2037F02 +_080B290C: .4byte gUnknown_83E7C98 +_080B2910: .4byte gUnknown_2037F1B + thumb_func_end sub_80B2868 + + thumb_func_start sub_80B2914 +sub_80B2914: @ 80B2914 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080B2926 + cmp r0, 0x1 + beq _080B2958 + b _080B296C +_080B2926: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075160 + movs r0, 0 + bl sub_80749D4 + ldr r2, _080B2954 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080B296C + .align 2, 0 +_080B2954: .4byte gUnknown_202063C +_080B2958: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080B296C + adds r0, r4, 0 + bl sub_8072740 +_080B296C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B2914 + + thumb_func_start sub_80B2974 +sub_80B2974: @ 80B2974 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B29AC + cmp r0, 0x1 + bgt _080B298A + cmp r0, 0 + beq _080B2990 + b _080B29FE +_080B298A: + cmp r0, 0x2 + beq _080B29C0 + b _080B29FE +_080B2990: + ldr r0, _080B29A8 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + negs r0, r0 + subs r0, 0x20 + strh r0, [r4, 0x26] + b _080B29B8 + .align 2, 0 +_080B29A8: .4byte gUnknown_2037F1B +_080B29AC: + ldrh r0, [r4, 0x26] + adds r0, 0xA + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080B29FE +_080B29B8: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080B29FE +_080B29C0: + ldrh r0, [r4, 0x26] + subs r0, 0xA + strh r0, [r4, 0x26] + movs r2, 0x22 + ldrsh r0, [r4, r2] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080B29FE + movs r0, 0 + bl sub_80749D4 + ldr r2, _080B2A04 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8072740 +_080B29FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B2A04: .4byte gUnknown_202063C + thumb_func_end sub_80B2974 + + thumb_func_start sub_80B2A08 +sub_80B2A08: @ 80B2A08 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080B2A44 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080B2A48 @ =sub_80B2A50 + str r0, [r4, 0x1C] + movs r0, 0 + bl sub_80749D4 + ldr r2, _080B2A4C @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B2A44: .4byte gUnknown_2037F02 +_080B2A48: .4byte sub_80B2A50 +_080B2A4C: .4byte gUnknown_202063C + thumb_func_end sub_80B2A08 + + thumb_func_start sub_80B2A50 +sub_80B2A50: @ 80B2A50 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080B2A64 + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + b _080B2AA8 +_080B2A64: + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _080B2A8A + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + subs r1, r0 + strh r1, [r2, 0x26] + b _080B2AA8 +_080B2A8A: + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x34] + adds r1, r0, 0x1 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080B2AA8 + ldr r0, _080B2AAC @ =sub_80B2AB0 + str r0, [r2, 0x1C] +_080B2AA8: + pop {r0} + bx r0 + .align 2, 0 +_080B2AAC: .4byte sub_80B2AB0 + thumb_func_end sub_80B2A50 + + thumb_func_start sub_80B2AB0 +sub_80B2AB0: @ 80B2AB0 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + adds r0, r1 + strh r0, [r2, 0x26] + movs r3, 0x22 + ldrsh r0, [r2, r3] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _080B2AE0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] +_080B2AE0: + movs r1, 0x26 + ldrsh r0, [r2, r1] + cmp r0, 0 + ble _080B2AEE + adds r0, r2, 0 + bl sub_8072740 +_080B2AEE: + pop {r0} + bx r0 + thumb_func_end sub_80B2AB0 + + thumb_func_start sub_80B2AF4 +sub_80B2AF4: @ 80B2AF4 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080B2B08 + cmp r0, 0x1 + beq _080B2B60 + b _080B2BCC +_080B2B08: + ldr r0, _080B2B18 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080B2B20 + ldr r4, _080B2B1C @ =gUnknown_2037F1A + b _080B2B22 + .align 2, 0 +_080B2B18: .4byte gUnknown_2037F02 +_080B2B1C: .4byte gUnknown_2037F1A +_080B2B20: + ldr r4, _080B2B5C @ =gUnknown_2037F1B +_080B2B22: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0 + movs r3, 0x80 + lsls r3, 2 + strh r3, [r5, 0x30] + movs r2, 0x80 + lsls r2, 1 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + bl sub_8075A1C + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080B2BCC + .align 2, 0 +_080B2B5C: .4byte gUnknown_2037F1B +_080B2B60: + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0xB + bgt _080B2B6E + ldrh r0, [r5, 0x30] + subs r0, 0x28 + b _080B2B72 +_080B2B6E: + ldrh r0, [r5, 0x30] + adds r0, 0x28 +_080B2B72: + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x32] + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x30 + ldrsh r3, [r5, r0] + str r1, [sp] + adds r0, r5, 0 + bl sub_8075A1C + ldrb r1, [r5, 0x3] + lsls r1, 26 + lsrs r1, 27 + movs r0, 0xF4 + lsls r0, 6 + ldr r2, _080B2BD4 @ =gUnknown_2021BCC + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0x1 + cmp r1, 0x80 + ble _080B2BAC + movs r1, 0x80 +_080B2BAC: + movs r0, 0x40 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r1, r0, 1 + strh r1, [r5, 0x26] + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0x18 + bne _080B2BCC + adds r0, r5, 0 + bl sub_8075AD8 + adds r0, r5, 0 + bl sub_8072740 +_080B2BCC: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2BD4: .4byte gUnknown_2021BCC + thumb_func_end sub_80B2AF4 + + thumb_func_start sub_80B2BD8 +sub_80B2BD8: @ 80B2BD8 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8044EC8 + ldr r4, _080B2BFC @ =0x000001ff + ands r4, r0 + bl sub_8044EC8 + movs r1, 0x7F + ands r1, r0 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080B2C00 + movs r2, 0xB8 + lsls r2, 2 + adds r0, r4, r2 + b _080B2C08 + .align 2, 0 +_080B2BFC: .4byte 0x000001ff +_080B2C00: + movs r2, 0xB8 + lsls r2, 2 + adds r0, r2, 0 + subs r0, r4 +_080B2C08: + strh r0, [r5, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B2C1C + movs r2, 0xE0 + lsls r2, 2 + adds r0, r2, 0 + adds r0, r1, r0 + b _080B2C24 +_080B2C1C: + movs r2, 0xE0 + lsls r2, 2 + adds r0, r2, 0 + subs r0, r1 +_080B2C24: + strh r0, [r5, 0x30] + ldr r2, _080B2C4C @ =gUnknown_2037F02 + ldrh r0, [r2] + strh r0, [r5, 0x32] + lsls r0, 16 + cmp r0, 0 + beq _080B2C40 + ldrb r0, [r5, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r5, 0x3] +_080B2C40: + movs r1, 0x2 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080B2C54 + ldr r4, _080B2C50 @ =gUnknown_2037F1A + b _080B2C56 + .align 2, 0 +_080B2C4C: .4byte gUnknown_2037F02 +_080B2C50: .4byte gUnknown_2037F1A +_080B2C54: + ldr r4, _080B2C80 @ =gUnknown_2037F1B +_080B2C56: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x22] + ldr r0, _080B2C84 @ =sub_80B2C88 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2C80: .4byte gUnknown_2037F1B +_080B2C84: .4byte sub_80B2C88 + thumb_func_end sub_80B2BD8 + + thumb_func_start sub_80B2C88 +sub_80B2C88: @ 80B2C88 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B2CA0 + ldrh r3, [r4, 0x2E] + lsls r0, r3, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + b _080B2CAA +_080B2CA0: + ldrh r3, [r4, 0x2E] + lsls r1, r3, 16 + asrs r1, 24 + ldrh r0, [r4, 0x24] + subs r0, r1 +_080B2CAA: + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x30] + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x26] + subs r0, r1 + strh r0, [r4, 0x26] + strh r3, [r4, 0x2E] + adds r0, r2, 0 + subs r0, 0x20 + strh r0, [r4, 0x30] + lsls r0, r3, 16 + cmp r0, 0 + bge _080B2CCA + movs r0, 0 + strh r0, [r4, 0x2E] +_080B2CCA: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080B2CDE + adds r0, r4, 0 + bl sub_8072740 +_080B2CDE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B2C88 + + thumb_func_start sub_80B2CE4 +sub_80B2CE4: @ 80B2CE4 + movs r1, 0 + strh r1, [r0, 0x3A] + movs r1, 0x40 + strh r1, [r0, 0x3C] + ldr r1, _080B2CF4 @ =sub_80B2CF8 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080B2CF4: .4byte sub_80B2CF8 + thumb_func_end sub_80B2CE4 + + thumb_func_start sub_80B2CF8 +sub_80B2CF8: @ 80B2CF8 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080B2D0A + cmp r1, 0x1 + beq _080B2D58 + b _080B2D5E +_080B2D0A: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080B2D5E + strh r1, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080B2D5E + ldrb r1, [r1] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080B2D5E + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080B2D5E +_080B2D58: + adds r0, r3, 0 + bl sub_8072740 +_080B2D5E: + pop {r0} + bx r0 + thumb_func_end sub_80B2CF8 + + thumb_func_start sub_80B2D64 +sub_80B2D64: @ 80B2D64 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r8, r0 + ldrh r4, [r0, 0x20] + ldrh r5, [r0, 0x22] + ldr r6, _080B2E18 @ =gUnknown_2037F1A + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + strh r0, [r1, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + mov r2, r8 + strh r6, [r2, 0x22] + ldrh r0, [r2, 0x20] + mov r9, r0 + mov r1, r9 + lsls r0, r1, 4 + strh r0, [r2, 0x36] + lsls r0, r6, 4 + strh r0, [r2, 0x38] + lsls r4, 16 + asrs r4, 16 + movs r1, 0x20 + ldrsh r0, [r2, r1] + subs r0, r4, r0 + lsls r0, 4 + movs r1, 0xC + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3A] + lsls r5, 16 + asrs r5, 16 + movs r1, 0x22 + ldrsh r0, [r2, r1] + subs r0, r5, r0 + lsls r0, 4 + movs r1, 0xC + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3C] + mov r0, r9 + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + subs r5, r6 + lsls r5, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + mov r0, r8 + movs r1, 0x1 + adds r2, r3, 0 + bl sub_8075A1C + ldr r0, _080B2E1C @ =sub_80B2E20 + mov r2, r8 + str r0, [r2, 0x1C] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B2E18: .4byte gUnknown_2037F1A +_080B2E1C: .4byte sub_80B2E20 + thumb_func_end sub_80B2D64 + + thumb_func_start sub_80B2E20 +sub_80B2E20: @ 80B2E20 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x3C] + ldrh r3, [r2, 0x38] + adds r1, r3 + strh r1, [r2, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r3, r1, 20 + strh r3, [r2, 0x22] + adds r0, 0x2D + lsls r0, 16 + movs r1, 0xA5 + lsls r1, 17 + cmp r0, r1 + bhi _080B2E5A + adds r1, r3, 0 + cmp r1, 0x9D + bgt _080B2E5A + movs r0, 0x2D + negs r0, r0 + cmp r1, r0 + bge _080B2E60 +_080B2E5A: + adds r0, r2, 0 + bl sub_8074EE0 +_080B2E60: + pop {r0} + bx r0 + thumb_func_end sub_80B2E20 + + thumb_func_start sub_80B2E64 +sub_80B2E64: @ 80B2E64 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080B2E94 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B2E9C + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B2E98 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + b _080B2EBA + .align 2, 0 +_080B2E94: .4byte gUnknown_2037F02 +_080B2E98: .4byte gUnknown_202063C +_080B2E9C: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B2EC8 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 +_080B2EBA: + strb r0, [r1] + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B2EC8: .4byte gUnknown_202063C + thumb_func_end sub_80B2E64 + + thumb_func_start sub_80B2ECC +sub_80B2ECC: @ 80B2ECC + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, _080B2F84 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B2EE8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B2EFE +_080B2EE8: + ldrb r1, [r6, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r6, 0x5] + adds r1, r6, 0 + adds r1, 0x43 + movs r0, 0xC8 + strb r0, [r1] +_080B2EFE: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B2F5A + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + adds r0, r4, 0 + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B2F3C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8072E48 +_080B2F3C: + movs r0, 0x2 + adds r4, r0, 0 + eors r4, r7 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B2F5A + movs r0, 0x1 + eors r5, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8072E48 +_080B2F5A: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B2F90 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080B2F90 + ldr r0, _080B2F84 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B2F88 + movs r0, 0x48 + strh r0, [r6, 0x20] + movs r0, 0x50 + b _080B2FCA + .align 2, 0 +_080B2F84: .4byte gUnknown_2037F1A +_080B2F88: + movs r0, 0xB0 + strh r0, [r6, 0x20] + movs r0, 0x28 + b _080B2FCA +_080B2F90: + ldr r5, _080B3000 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B2FA6 + ldr r1, _080B3004 @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080B2FA6: + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080B3004 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 +_080B2FCA: + strh r0, [r6, 0x22] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B2FDC + ldrh r0, [r6, 0x22] + adds r0, 0x9 + strh r0, [r6, 0x22] +_080B2FDC: + ldr r0, _080B3004 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r6, 0x2E] + ldr r1, _080B3008 @ =sub_80B300C + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B3000: .4byte gUnknown_2037F1A +_080B3004: .4byte gUnknown_2037F02 +_080B3008: .4byte sub_80B300C + thumb_func_end sub_80B2ECC + + thumb_func_start sub_80B300C +sub_80B300C: @ 80B300C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldrh r1, [r4, 0x34] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0xD + bne _080B3038 + ldr r0, _080B3034 @ =sub_80B3044 + str r0, [r4, 0x1C] + b _080B303C + .align 2, 0 +_080B3034: .4byte sub_80B3044 +_080B3038: + adds r0, r1, 0x1 + strh r0, [r4, 0x34] +_080B303C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B300C + + thumb_func_start sub_80B3044 +sub_80B3044: @ 80B3044 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080B30A2 + movs r0, 0 + strh r0, [r3, 0x30] + ldrh r4, [r3, 0x2E] + ldr r1, _080B30A8 @ =gUnknown_20375F8 + adds r0, r4, 0 + adds r0, 0x8 + lsls r0, 1 + adds r0, r1 + ldrh r7, [r0] + movs r5, 0x8 + adds r6, r1, 0 + adds r1, r4, 0x7 + lsls r0, r4, 1 + adds r0, r6 + adds r2, r0, 0 + adds r2, 0x10 + lsls r1, 1 + adds r1, r6 +_080B307A: + ldrh r0, [r1] + strh r0, [r2] + subs r1, 0x2 + subs r2, 0x2 + subs r5, 0x1 + cmp r5, 0 + bgt _080B307A + adds r0, r4, 0x1 + lsls r0, 1 + adds r0, r6 + strh r7, [r0] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080B30A2 + ldr r0, _080B30AC @ =sub_80B30B0 + str r0, [r3, 0x1C] +_080B30A2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B30A8: .4byte gUnknown_20375F8 +_080B30AC: .4byte sub_80B30B0 + thumb_func_end sub_80B3044 + + thumb_func_start sub_80B30B0 +sub_80B30B0: @ 80B30B0 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x34] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldrh r0, [r5, 0x34] + subs r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B3156 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B3146 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B3118 + ldr r2, _080B315C @ =gUnknown_202063C + ldr r0, _080B3160 @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_080B3118: + movs r0, 0x2 + adds r4, r0, 0 + eors r4, r6 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B3146 + ldr r2, _080B315C @ =gUnknown_202063C + ldr r0, _080B3160 @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_080B3146: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B3164 @ =sub_80B3168 + str r0, [r5, 0x1C] +_080B3156: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B315C: .4byte gUnknown_202063C +_080B3160: .4byte gUnknown_2023D44 +_080B3164: .4byte sub_80B3168 + thumb_func_end sub_80B30B0 + + thumb_func_start sub_80B3168 +sub_80B3168: @ 80B3168 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B31C0 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B31A6 + adds r0, r5, 0 + bl sub_8073128 +_080B31A6: + movs r0, 0x2 + eors r4, r0 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B31C0 + movs r0, 0x1 + eors r5, r0 + adds r0, r5, 0 + bl sub_8073128 +_080B31C0: + ldr r0, _080B31CC @ =sub_8072740 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B31CC: .4byte sub_8072740 + thumb_func_end sub_80B3168 + + thumb_func_start sub_80B31D0 +sub_80B31D0: @ 80B31D0 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B325C + ldr r5, _080B321C @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r5, r1] + movs r6, 0 + cmp r0, 0 + bne _080B31EA + movs r6, 0x1 +_080B31EA: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B3232 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080B3232 + ldr r0, _080B3220 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B3224 + ldrh r0, [r5] + movs r1, 0x48 + subs r1, r0 + strh r1, [r4, 0x20] + ldrh r0, [r5, 0x2] + adds r0, 0x50 + strh r0, [r4, 0x22] + b _080B3254 + .align 2, 0 +_080B321C: .4byte gUnknown_2037F02 +_080B3220: .4byte gUnknown_2037F1A +_080B3224: + ldrh r0, [r5] + adds r0, 0xB0 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + adds r0, 0x28 + strh r0, [r4, 0x22] + b _080B3254 +_080B3232: + ldr r0, _080B3248 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B324C + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8075160 + b _080B3254 + .align 2, 0 +_080B3248: .4byte gUnknown_2037F02 +_080B324C: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8075114 +_080B3254: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080B3270 +_080B325C: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _080B3270 + adds r0, r4, 0 + bl sub_8074EE0 +_080B3270: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B31D0 + + thumb_func_start sub_80B3278 +sub_80B3278: @ 80B3278 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B32C0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B32C8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C + ldrh r0, [r5, 0x20] + subs r0, 0x28 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0xA + strh r0, [r5, 0x22] + ldr r0, _080B32C4 @ =0x0000ffff + b _080B32D6 + .align 2, 0 +_080B32C0: .4byte gUnknown_2037F1A +_080B32C4: .4byte 0x0000ffff +_080B32C8: + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + subs r0, 0xA + strh r0, [r5, 0x22] + movs r0, 0x1 +_080B32D6: + strh r0, [r5, 0x30] + ldr r1, _080B32EC @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080B32F0 @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B32EC: .4byte sub_8072740 +_080B32F0: .4byte sub_8074F6C + thumb_func_end sub_80B3278 + + thumb_func_start sub_80B32F4 +sub_80B32F4: @ 80B32F4 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r6, _080B3378 @ =gUnknown_2037F1A + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8076B2C + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + lsls r1, 15 + lsrs r4, r1, 16 + ldrb r0, [r6] + movs r1, 0 + bl sub_8076B2C + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + asrs r1, 1 + negs r1, r1 + lsls r1, 16 + lsrs r7, r1, 16 + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B333A + lsls r0, r4, 16 + negs r0, r0 + lsrs r4, r0, 16 +_080B333A: + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _080B3366 + movs r0, 0x10 + strh r0, [r5, 0x22] +_080B3366: + ldr r1, _080B337C @ =sub_80B3384 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080B3380 @ =sub_8074F6C + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B3378: .4byte gUnknown_2037F1A +_080B337C: .4byte sub_80B3384 +_080B3380: .4byte sub_8074F6C + thumb_func_end sub_80B32F4 + + thumb_func_start sub_80B3384 +sub_80B3384: @ 80B3384 + push {r4,lr} + adds r4, r0, 0 + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r0, _080B33B0 @ =gUnknown_83E6FF0 + str r0, [r4, 0x10] + movs r0, 0 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_800860C + ldr r0, _080B33B4 @ =sub_80B33B8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B33B0: .4byte gUnknown_83E6FF0 +_080B33B4: .4byte sub_80B33B8 + thumb_func_end sub_80B3384 + + thumb_func_start sub_80B33B8 +sub_80B33B8: @ 80B33B8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080B33CA + cmp r0, 0x1 + beq _080B33F8 + b _080B3410 +_080B33CA: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080B3410 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x12 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080B3410 +_080B33F8: + ldrh r0, [r4, 0x30] + subs r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B3410 + adds r0, r4, 0 + bl sub_8072740 +_080B3410: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B33B8 + + thumb_func_start sub_80B3418 +sub_80B3418: @ 80B3418 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080B3448 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x8] + ldr r2, _080B344C @ =gUnknown_83E700C + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080B3450 @ =sub_80B3454 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B3448: .4byte gUnknown_3005090 +_080B344C: .4byte gUnknown_83E700C +_080B3450: .4byte sub_80B3454 + thumb_func_end sub_80B3418 + + thumb_func_start sub_80B3454 +sub_80B3454: @ 80B3454 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080B347C @ =gUnknown_3005090 + adds r0, r1 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080B3474 + adds r0, r4, 0 + bl sub_8072760 +_080B3474: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B347C: .4byte gUnknown_3005090 + thumb_func_end sub_80B3454 + + thumb_func_start sub_80B3480 +sub_80B3480: @ 80B3480 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B34CC @ =gUnknown_3005090 + adds r4, r1, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + strh r1, [r4, 0xC] + ldr r0, _080B34D0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + movs r1, 0x8 + cmp r0, 0 + beq _080B34B4 + movs r1, 0x4 +_080B34B4: + strh r1, [r4, 0xE] + ldrb r1, [r4, 0x8] + ldr r2, _080B34D4 @ =gUnknown_83E702C + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080B34D8 @ =sub_80B34DC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B34CC: .4byte gUnknown_3005090 +_080B34D0: .4byte gUnknown_2037F1A +_080B34D4: .4byte gUnknown_83E702C +_080B34D8: .4byte sub_80B34DC + thumb_func_end sub_80B3480 + + thumb_func_start sub_80B34DC +sub_80B34DC: @ 80B34DC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B34FC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080B3500 + cmp r0, 0x1 + beq _080B351C + b _080B357A + .align 2, 0 +_080B34FC: .4byte gUnknown_3005090 +_080B3500: + adds r0, r4, 0 + bl sub_8076308 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080B357A + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080B357A +_080B351C: + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080B3544 + ldr r2, _080B3540 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x8 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080B357A + .align 2, 0 +_080B3540: .4byte gUnknown_202063C +_080B3544: + ldr r3, _080B3580 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0x88 + lsls r1, 1 + strh r1, [r0, 0x20] + ldrb r0, [r4, 0x8] + bl sub_8075980 + adds r0, r5, 0 + bl sub_8072760 +_080B357A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B3580: .4byte gUnknown_202063C + thumb_func_end sub_80B34DC + + thumb_func_start sub_80B3584 +sub_80B3584: @ 80B3584 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B360C @ =gUnknown_3005090 + adds r5, r1, r0 + movs r1, 0 + movs r0, 0x10 + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] + ldr r4, _080B3610 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + ldrb r0, [r4] + movs r1, 0 + bl sub_8076B2C + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, r6 + bcs _080B35EE + adds r1, r6, 0 +_080B35EE: + strh r1, [r5, 0x20] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + ldr r0, _080B3614 @ =sub_80B3618 + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B360C: .4byte gUnknown_3005090 +_080B3610: .4byte gUnknown_2037F1A +_080B3614: .4byte sub_80B3618 + thumb_func_end sub_80B3584 + + thumb_func_start sub_80B3618 +sub_80B3618: @ 80B3618 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B363C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080B3718 + cmp r1, 0x1 + bgt _080B3640 + cmp r1, 0 + beq _080B364E + b _080B379E + .align 2, 0 +_080B363C: .4byte gUnknown_3005090 +_080B3640: + cmp r1, 0x2 + bne _080B3646 + b _080B377A +_080B3646: + cmp r1, 0x3 + bne _080B364C + b _080B3788 +_080B364C: + b _080B379E +_080B364E: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bgt _080B365E + b _080B379E +_080B365E: + strh r1, [r4, 0xA] + ldr r0, _080B369C @ =gUnknown_83E7044 + movs r2, 0x22 + ldrsh r1, [r4, r2] + movs r3, 0x24 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0xC + ldrsh r1, [r4, r0] + adds r1, 0x8 + lsls r1, 1 + adds r0, r4, 0 + adds r0, 0x8 + adds r0, r1 + strh r2, [r0] + cmp r2, 0x40 + beq _080B3702 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B36BC + cmp r0, 0x1 + bgt _080B36A0 + cmp r0, 0 + beq _080B36AA + b _080B3702 + .align 2, 0 +_080B369C: .4byte gUnknown_83E7044 +_080B36A0: + cmp r0, 0x2 + beq _080B36D4 + cmp r0, 0x3 + beq _080B36EC + b _080B3702 +_080B36AA: + ldr r0, _080B36B8 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x20] + b _080B36FA + .align 2, 0 +_080B36B8: .4byte gUnknown_202063C +_080B36BC: + ldr r0, _080B36D0 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x20] + negs r0, r0 + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x20] + b _080B3700 + .align 2, 0 +_080B36D0: .4byte gUnknown_202063C +_080B36D4: + ldr r1, _080B36E8 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r4, 0x20] + strh r1, [r0, 0x24] + ldrh r1, [r4, 0x20] + strh r1, [r0, 0x26] + b _080B3702 + .align 2, 0 +_080B36E8: .4byte gUnknown_202063C +_080B36EC: + ldr r0, _080B3714 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x20] + negs r0, r0 +_080B36FA: + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x20] + negs r0, r0 +_080B3700: + strh r0, [r1, 0x26] +_080B3702: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080B379E + b _080B377A + .align 2, 0 +_080B3714: .4byte gUnknown_202063C +_080B3718: + ldrh r0, [r4, 0xA] + ands r1, r0 + cmp r1, 0 + beq _080B3728 + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080B372E +_080B3728: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] +_080B372E: + ldrh r1, [r4, 0x10] + lsls r1, 8 + ldrh r0, [r4, 0xE] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + bne _080B379E + movs r5, 0x8 + adds r6, r4, 0 + adds r6, 0x8 +_080B3754: + lsls r0, r5, 1 + adds r1, r6, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x40 + beq _080B3770 + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080B3784 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 +_080B3770: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xC + bls _080B3754 +_080B377A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B379E + .align 2, 0 +_080B3784: .4byte gUnknown_202063C +_080B3788: + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8072760 +_080B379E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B3618 + + thumb_func_start sub_80B37A4 +sub_80B37A4: @ 80B37A4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + subs r0, 0xA + cmp r1, r0 + ble _080B37CE + ldrh r0, [r4, 0x30] + movs r1, 0x1 + ands r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080B37CE: + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080B37E0 + adds r0, r4, 0 + bl sub_8072740 +_080B37E0: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B37A4 + + thumb_func_start sub_80B37EC +sub_80B37EC: @ 80B37EC + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080B3828 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080B3818 + ldr r4, _080B382C @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_080B3818: + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x2E] + ldr r0, _080B3830 @ =sub_80B37A4 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B3828: .4byte gUnknown_2037F02 +_080B382C: .4byte gUnknown_2037F1A +_080B3830: .4byte sub_80B37A4 + thumb_func_end sub_80B37EC + + thumb_func_start sub_80B3834 +sub_80B3834: @ 80B3834 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B3890 @ =gUnknown_3005090 + adds r5, r1, r0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B38D8 + ldr r0, _080B3894 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _080B38A4 + ldr r0, _080B3898 @ =0x0000fff6 + strh r0, [r5, 0x1C] + ldr r4, _080B389C @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080B38A0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x8 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x8 + b _080B3962 + .align 2, 0 +_080B3890: .4byte gUnknown_3005090 +_080B3894: .4byte gUnknown_2037F02 +_080B3898: .4byte 0x0000fff6 +_080B389C: .4byte gUnknown_2037F1B +_080B38A0: .4byte gUnknown_2037F1A +_080B38A4: + movs r0, 0xA + strh r0, [r5, 0x1C] + ldr r4, _080B38D0 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8076B2C + subs r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080B38D4 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x8 + b _080B3956 + .align 2, 0 +_080B38D0: .4byte gUnknown_2037F1A +_080B38D4: .4byte gUnknown_2037F1B +_080B38D8: + ldr r0, _080B391C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _080B392C + ldr r0, _080B3920 @ =0x0000fff6 + strh r0, [r5, 0x1C] + ldr r4, _080B3924 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080B3928 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x8 + b _080B3962 + .align 2, 0 +_080B391C: .4byte gUnknown_2037F02 +_080B3920: .4byte 0x0000fff6 +_080B3924: .4byte gUnknown_2037F1B +_080B3928: .4byte gUnknown_2037F1A +_080B392C: + movs r0, 0xA + strh r0, [r5, 0x1C] + ldr r4, _080B3974 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8076B2C + subs r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080B3978 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x8 +_080B3956: + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8076B2C + subs r0, 0x8 +_080B3962: + strh r0, [r5, 0x24] + movs r0, 0x6 + strh r0, [r5, 0xA] + ldr r0, _080B397C @ =sub_80B3980 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B3974: .4byte gUnknown_2037F1A +_080B3978: .4byte gUnknown_2037F1B +_080B397C: .4byte sub_80B3980 + thumb_func_end sub_80B3834 + + thumb_func_start sub_80B3980 +sub_80B3980: @ 80B3980 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B39A0 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r0, 0x8 + ldrsh r1, [r5, r0] + cmp r1, 0 + beq _080B39A4 + cmp r1, 0x1 + beq _080B3A18 + b _080B3A2C + .align 2, 0 +_080B39A0: .4byte gUnknown_3005090 +_080B39A4: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080B3A2C + strh r1, [r5, 0xA] + ldr r0, _080B3A10 @ =gUnknown_83E7114 + movs r2, 0x1E + ldrsh r1, [r5, r2] + movs r3, 0x20 + ldrsh r2, [r5, r3] + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080B39F8 + ldr r0, _080B3A14 @ =gUnknown_202063C + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r0 + movs r0, 0x10 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x22] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x36] + ldrh r0, [r5, 0x1C] + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldrb r0, [r5, 0xC] + movs r1, 0x3 + ands r1, r0 + adds r0, r4, 0 + bl sub_800843C +_080B39F8: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _080B3A2C + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080B3A2C + .align 2, 0 +_080B3A10: .4byte gUnknown_83E7114 +_080B3A14: .4byte gUnknown_202063C +_080B3A18: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + ble _080B3A2C + adds r0, r2, 0 + bl sub_8072760 +_080B3A2C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B3980 + + thumb_func_start sub_80B3A34 +sub_80B3A34: @ 80B3A34 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B3A52 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r0, r4, 0 + bl sub_8007280 +_080B3A52: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B3A34 + + thumb_func_start sub_80B3A58 +sub_80B3A58: @ 80B3A58 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B3A90 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r0, _080B3A94 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_807492C + lsls r0, 24 + lsrs r1, r0, 24 + adds r0, r1, 0 + subs r0, 0x20 + strh r0, [r4, 0x24] + ldr r0, _080B3A98 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0x1 + beq _080B3AAE + cmp r0, 0x1 + bgt _080B3A9C + cmp r0, 0 + beq _080B3AA2 + b _080B3ACA + .align 2, 0 +_080B3A90: .4byte gUnknown_3005090 +_080B3A94: .4byte gUnknown_2037F1B +_080B3A98: .4byte gUnknown_2037F02 +_080B3A9C: + cmp r0, 0x2 + beq _080B3ABA + b _080B3ACA +_080B3AA2: + movs r0, 0x2 + strh r0, [r4, 0x1E] + movs r0, 0x5 + strh r0, [r4, 0x20] + movs r0, 0x40 + b _080B3AC2 +_080B3AAE: + movs r0, 0x2 + strh r0, [r4, 0x1E] + movs r0, 0x5 + strh r0, [r4, 0x20] + movs r0, 0xC0 + b _080B3AC2 +_080B3ABA: + movs r0, 0x4 + strh r0, [r4, 0x1E] + strh r0, [r4, 0x20] + movs r0, 0 +_080B3AC2: + strh r0, [r4, 0x22] + adds r0, r1, 0 + adds r0, 0x20 + strh r0, [r4, 0x26] +_080B3ACA: + movs r1, 0x24 + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080B3AD6 + movs r0, 0 + strh r0, [r4, 0x24] +_080B3AD6: + ldr r0, _080B3AF0 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B3AFC + ldr r0, _080B3AF4 @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r4, 0x1C] + ldr r0, _080B3AF8 @ =0x04000014 + b _080B3B04 + .align 2, 0 +_080B3AF0: .4byte gUnknown_2037F1B +_080B3AF4: .4byte gUnknown_2022978 +_080B3AF8: .4byte 0x04000014 +_080B3AFC: + ldr r0, _080B3B64 @ =gUnknown_202297C + ldrh r0, [r0] + strh r0, [r4, 0x1C] + ldr r0, _080B3B68 @ =0x04000018 +_080B3B04: + str r0, [sp] + ldrh r1, [r4, 0x24] + lsls r3, r1, 16 + asrs r1, r3, 16 + movs r2, 0x24 + ldrsh r0, [r4, r2] + adds r0, 0x40 + cmp r1, r0 + bgt _080B3B3E + ldr r5, _080B3B6C @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080B3B1E: + asrs r3, 16 + lsls r1, r3, 1 + adds r2, r1, r5 + ldrh r0, [r4, 0x1C] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r4, 0x1C] + strh r0, [r1] + adds r3, 0x1 + lsls r3, 16 + asrs r1, r3, 16 + movs r2, 0x24 + ldrsh r0, [r4, r2] + adds r0, 0x40 + cmp r1, r0 + ble _080B3B1E +_080B3B3E: + ldr r0, _080B3B70 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldr r0, _080B3B74 @ =sub_80B3B78 + str r0, [r4] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B3B64: .4byte gUnknown_202297C +_080B3B68: .4byte 0x04000018 +_080B3B6C: .4byte gUnknown_2038700 +_080B3B70: .4byte 0xa2600001 +_080B3B74: .4byte sub_80B3B78 + thumb_func_end sub_80B3A58 + + thumb_func_start sub_80B3B78 +sub_80B3B78: @ 80B3B78 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B3BA0 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080B3C52 + cmp r0, 0x1 + bgt _080B3BA4 + cmp r0, 0 + beq _080B3BAA + b _080B3C6A + .align 2, 0 +_080B3BA0: .4byte gUnknown_3005090 +_080B3BA4: + cmp r0, 0x2 + beq _080B3C64 + b _080B3C6A +_080B3BAA: + ldrh r3, [r5, 0x22] + ldrh r4, [r5, 0x24] + movs r2, 0x24 + ldrsh r1, [r5, r2] + movs r2, 0x26 + ldrsh r0, [r5, r2] + cmp r1, r0 + bgt _080B3C42 + ldr r0, _080B3BF4 @ =gUnknown_825E074 + mov r9, r0 + movs r7, 0x3 + ldr r1, _080B3BF8 @ =gUnknown_2038700 + mov r12, r1 + movs r2, 0xF0 + lsls r2, 3 + add r2, r12 + mov r8, r2 +_080B3BCC: + lsls r2, r3, 16 + asrs r0, r2, 15 + add r0, r9 + movs r3, 0 + ldrsh r0, [r0, r3] + movs r3, 0x20 + ldrsh r1, [r5, r3] + asrs r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + asrs r3, r0, 16 + adds r6, r2, 0 + cmp r3, 0 + ble _080B3BFC + ldrh r1, [r5, 0xA] + adds r0, r7, 0 + ands r0, r1 + adds r0, r3, r0 + b _080B3C08 + .align 2, 0 +_080B3BF4: .4byte gUnknown_825E074 +_080B3BF8: .4byte gUnknown_2038700 +_080B3BFC: + cmp r3, 0 + bge _080B3C0C + ldrh r1, [r5, 0xA] + adds r0, r7, 0 + ands r0, r1 + subs r0, r3, r0 +_080B3C08: + lsls r0, 16 + lsrs r1, r0, 16 +_080B3C0C: + lsls r2, r4, 16 + asrs r2, 16 + lsls r3, r2, 1 + mov r0, r12 + adds r4, r3, r0 + ldrh r0, [r5, 0x1C] + lsls r1, 16 + asrs r1, 16 + adds r0, r1, r0 + strh r0, [r4] + add r3, r8 + ldrh r0, [r5, 0x1C] + adds r1, r0 + strh r1, [r3] + asrs r0, r6, 16 + ldrh r1, [r5, 0x1E] + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + adds r2, 0x1 + lsls r2, 16 + lsrs r4, r2, 16 + asrs r2, 16 + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r2, r0 + ble _080B3BCC +_080B3C42: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x17 + ble _080B3C6A + b _080B3C58 +_080B3C52: + ldr r1, _080B3C60 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B3C58: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080B3C6A + .align 2, 0 +_080B3C60: .4byte gUnknown_2039600 +_080B3C64: + adds r0, r2, 0 + bl sub_8072760 +_080B3C6A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80B3B78 + + thumb_func_start sub_80B3C78 +sub_80B3C78: @ 80B3C78 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080B3CAC @ =gUnknown_3005090 + adds r7, r0, r1 + bl sub_8008594 + lsls r0, 24 + lsrs r5, r0, 24 + mov r10, r5 + adds r6, r5, 0 + cmp r6, 0xFF + bne _080B3CB0 + adds r0, r4, 0 + bl sub_8072760 + b _080B3D5A + .align 2, 0 +_080B3CAC: .4byte gUnknown_3005090 +_080B3CB0: + ldr r1, _080B3CD4 @ =gUnknown_2037F02 + ldrb r0, [r1] + bl sub_8075FBC + lsls r0, 16 + lsrs r1, r0, 16 + mov r9, r1 + asrs r0, 16 + cmp r0, 0 + bge _080B3CD8 + adds r0, r5, 0 + bl sub_80085CC + mov r0, r8 + bl sub_8072760 + b _080B3D5A + .align 2, 0 +_080B3CD4: .4byte gUnknown_2037F02 +_080B3CD8: + ldr r2, _080B3D68 @ =gUnknown_202063C + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r0, r2, 0 + adds r0, 0x1C + adds r0, r4, r0 + ldr r1, _080B3D6C @ =nullsub_8 + str r1, [r0] + adds r4, r2 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1F + ands r6, r0 + lsls r2, r6, 1 + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x3] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r1, r9 + lsls r0, r1, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 + ldr r1, _080B3D70 @ =gUnknown_2037F02 + ldrb r0, [r1] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x22] + mov r0, r10 + strh r0, [r7, 0x24] + mov r1, r9 + strh r1, [r7, 0x26] + ldr r0, _080B3D74 @ =sub_80B3D78 + str r0, [r7] +_080B3D5A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B3D68: .4byte gUnknown_202063C +_080B3D6C: .4byte nullsub_8 +_080B3D70: .4byte gUnknown_2037F02 +_080B3D74: .4byte sub_80B3D78 + thumb_func_end sub_80B3C78 + + thumb_func_start sub_80B3D78 +sub_80B3D78: @ 80B3D78 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B3D9C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B3DFC + cmp r0, 0x1 + bgt _080B3DA0 + cmp r0, 0 + beq _080B3DAA + b _080B3E7C + .align 2, 0 +_080B3D9C: .4byte gUnknown_3005090 +_080B3DA0: + cmp r0, 0x2 + beq _080B3E4C + cmp r0, 0x3 + beq _080B3E6C + b _080B3E7C +_080B3DAA: + ldrh r0, [r4, 0xA] + adds r0, 0x4 + strh r0, [r4, 0xA] + ldr r1, _080B3DF8 @ =gUnknown_825E074 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r1, 16 + asrs r1, 17 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xC + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + lsls r1, 24 + lsrs r1, 24 + bl sub_8076494 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0x30 + bne _080B3E7C + b _080B3E5E + .align 2, 0 +_080B3DF8: .4byte gUnknown_825E074 +_080B3DFC: + ldrh r0, [r4, 0xA] + subs r0, 0x4 + strh r0, [r4, 0xA] + ldr r1, _080B3E48 @ =gUnknown_825E074 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r1, 16 + asrs r1, 17 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xC + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + lsls r1, 24 + lsrs r1, 24 + bl sub_8076494 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080B3E7C + b _080B3E5E + .align 2, 0 +_080B3E48: .4byte gUnknown_825E074 +_080B3E4C: + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080B3E68 @ =gUnknown_202063C + adds r0, r1 + bl sub_8076030 +_080B3E5E: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B3E7C + .align 2, 0 +_080B3E68: .4byte gUnknown_202063C +_080B3E6C: + ldrh r0, [r4, 0x24] + lsls r0, 24 + lsrs r0, 24 + bl sub_80085CC + adds r0, r5, 0 + bl sub_8072760 +_080B3E7C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B3D78 + + thumb_func_start sub_80B3E84 +sub_80B3E84: @ 80B3E84 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080B3EFC + cmp r0, 0x1 + bgt _080B3E9A + cmp r0, 0 + beq _080B3EA4 + b _080B3FA4 +_080B3E9A: + cmp r0, 0x2 + beq _080B3F2E + cmp r0, 0x3 + beq _080B3F8E + b _080B3FA4 +_080B3EA4: + ldr r4, _080B3EF8 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B3ED2 + ldrh r0, [r5, 0x22] + adds r0, 0xC + strh r0, [r5, 0x22] +_080B3ED2: + movs r0, 0x8 + strh r0, [r5, 0x30] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r0, [r5, 0x30] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + b _080B3F26 + .align 2, 0 +_080B3EF8: .4byte gUnknown_2037F1A +_080B3EFC: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080B3FA4 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC4 + bl sub_80722F4 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800849C +_080B3F26: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080B3FA4 +_080B3F2E: + ldrh r0, [r5, 0x32] + adds r1, r0, 0x1 + strh r1, [r5, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B3F72 + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r1, [r5, 0x30] + subs r1, 0x1 + strh r1, [r5, 0x30] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x30 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B3F72 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080B3F72: + movs r0, 0xE0 + lsls r0, 2 + adds r2, r0, 0 + ldrh r1, [r5, 0x34] + adds r2, r1 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r5, 0x26] + subs r0, r1 + strh r0, [r5, 0x26] + movs r0, 0xFF + ands r2, r0 + strh r2, [r5, 0x34] + b _080B3FA4 +_080B3F8E: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8072740 +_080B3FA4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B3E84 + + thumb_func_start sub_80B3FAC +sub_80B3FAC: @ 80B3FAC + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B3FD8 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_800843C + ldr r0, _080B3FD4 @ =gUnknown_2037F02 + ldrh r1, [r0, 0x4] + negs r1, r1 + strh r1, [r0, 0x4] + ldrh r1, [r0] + negs r1, r1 + strh r1, [r0] + b _080B4008 + .align 2, 0 +_080B3FD4: .4byte gUnknown_2037F02 +_080B3FD8: + ldr r0, _080B406C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B4008 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_800843C + ldr r1, _080B4070 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080B4008: + ldr r5, _080B406C @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + ldr r4, _080B4070 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + ldr r0, _080B4074 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080B4078 @ =sub_8072740 + adds r0, r6, 0 + bl sub_8074A68 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B406C: .4byte gUnknown_2037F1B +_080B4070: .4byte gUnknown_2037F02 +_080B4074: .4byte sub_8075590 +_080B4078: .4byte sub_8072740 + thumb_func_end sub_80B3FAC + + thumb_func_start sub_80B407C +sub_80B407C: @ 80B407C + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B40A0 + ldr r1, _080B409C @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] + adds r0, r6, 0 + movs r1, 0x2 + bl sub_800843C + b _080B40BC + .align 2, 0 +_080B409C: .4byte gUnknown_2037F02 +_080B40A0: + ldr r0, _080B4118 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B40BC + ldr r0, _080B411C @ =gUnknown_2037F02 + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0] + negs r1, r1 + strh r1, [r0] +_080B40BC: + ldr r5, _080B4118 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + ldr r4, _080B411C @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x2E] + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x36] + ldr r0, _080B4120 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080B4124 @ =sub_8072740 + adds r0, r6, 0 + bl sub_8074A68 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B4118: .4byte gUnknown_2037F1B +_080B411C: .4byte gUnknown_2037F02 +_080B4120: .4byte sub_8075590 +_080B4124: .4byte sub_8072740 + thumb_func_end sub_80B407C + + thumb_func_start sub_80B4128 +sub_80B4128: @ 80B4128 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B4144 + ldr r0, _080B4184 @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r1, [r0, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + strh r1, [r0, 0x4] +_080B4144: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r1, _080B4184 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080B418C + ldr r4, _080B4188 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080B419E + .align 2, 0 +_080B4184: .4byte gUnknown_2037F02 +_080B4188: .4byte gUnknown_2037F1B +_080B418C: + ldr r0, _080B41B4 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_8076D9C +_080B419E: + adds r0, r5, 0 + bl sub_8075678 + ldr r0, _080B41B8 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x6] + strh r0, [r5, 0x38] + ldr r0, _080B41BC @ =sub_80B41C0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B41B4: .4byte gUnknown_2037F1B +_080B41B8: .4byte gUnknown_2037F02 +_080B41BC: .4byte sub_80B41C0 + thumb_func_end sub_80B4128 + + thumb_func_start sub_80B41C0 +sub_80B41C0: @ 80B41C0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080B41D6 + adds r0, r4, 0 + bl sub_8072740 + b _080B41F2 +_080B41D6: + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x3A] + adds r0, 0xD + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] +_080B41F2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B41C0 + + thumb_func_start sub_80B41F8 +sub_80B41F8: @ 80B41F8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B4228 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C + ldr r0, _080B422C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B4234 + ldr r0, _080B4230 @ =gUnknown_2037F02 + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080B4240 + .align 2, 0 +_080B4228: .4byte gUnknown_2037F1B +_080B422C: .4byte gUnknown_2037F1A +_080B4230: .4byte gUnknown_2037F02 +_080B4234: + ldr r1, _080B4268 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_080B4240: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080B426C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B425C + ldrh r0, [r4, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] +_080B425C: + ldr r0, _080B4270 @ =sub_80B4274 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B4268: .4byte gUnknown_2037F02 +_080B426C: .4byte gUnknown_2037F1B +_080B4270: .4byte sub_80B4274 + thumb_func_end sub_80B41F8 + + thumb_func_start sub_80B4274 +sub_80B4274: @ 80B4274 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080B42A8 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080B42A8: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080B42BC + adds r0, r3, 0 + bl sub_8072740 +_080B42BC: + pop {r0} + bx r0 + thumb_func_end sub_80B4274 + + thumb_func_start sub_80B42C0 +sub_80B42C0: @ 80B42C0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + movs r0, 0x10 + strh r0, [r4, 0x2E] + ldr r0, _080B42E4 @ =sub_80B42E8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B42E4: .4byte sub_80B42E8 + thumb_func_end sub_80B42C0 + + thumb_func_start sub_80B42E8 +sub_80B42E8: @ 80B42E8 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0x13 + bgt _080B42FC + adds r0, r1, 0x1 + strh r0, [r4, 0x32] + b _080B433A +_080B42FC: + ldrh r1, [r4, 0x30] + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B433A + ldrh r1, [r4, 0x2E] + subs r1, 0x1 + strh r1, [r4, 0x2E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B433A + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B4340 @ =sub_80B4344 + str r0, [r4, 0x1C] +_080B433A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B4340: .4byte sub_80B4344 + thumb_func_end sub_80B42E8 + + thumb_func_start sub_80B4344 +sub_80B4344: @ 80B4344 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B4344 + + thumb_func_start sub_80B4364 +sub_80B4364: @ 80B4364 + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B4384 + ldr r1, _080B4380 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + b _080B43A6 + .align 2, 0 +_080B4380: .4byte gUnknown_2037F02 +_080B4384: + ldr r0, _080B4480 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B43A6 + ldr r1, _080B4484 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080B43A6: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B43F6 + ldr r0, _080B4480 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + adds r4, r0, 0 + ldr r5, _080B4488 @ =gUnknown_2037F1B + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080B43F6 + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + beq _080B43E4 + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B43F6 +_080B43E4: + ldr r0, _080B4484 @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r1, [r0, r2] + negs r1, r1 + strh r1, [r0, 0x4] + movs r2, 0 + ldrsh r1, [r0, r2] + negs r1, r1 + strh r1, [r0] +_080B43F6: + adds r0, r7, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r5, _080B4488 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + ldr r6, _080B4484 @ =gUnknown_2037F02 + lsrs r4, 24 + ldrh r0, [r6, 0x4] + adds r4, r0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r6, 0x6] + adds r1, r2 + lsls r1, 16 + ldrh r2, [r7, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + subs r0, r2 + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r7, 0x22] + lsrs r5, r1, 16 + asrs r1, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + adds r0, r7, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldrh r0, [r6, 0x8] + strh r0, [r7, 0x2E] + strh r4, [r7, 0x32] + strh r5, [r7, 0x36] + ldr r0, _080B448C @ =sub_8075590 + str r0, [r7, 0x1C] + ldr r1, _080B4490 @ =sub_8072740 + adds r0, r7, 0 + bl sub_8074A68 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B4480: .4byte gUnknown_2037F1A +_080B4484: .4byte gUnknown_2037F02 +_080B4488: .4byte gUnknown_2037F1B +_080B448C: .4byte sub_8075590 +_080B4490: .4byte sub_8072740 + thumb_func_end sub_80B4364 + + thumb_func_start sub_80B4494 +sub_80B4494: @ 80B4494 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080B4500 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B44B4 + ldr r1, _080B4504 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080B44B4: + ldr r4, _080B4504 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080B4508 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _080B450C @ =sub_80B4510 + str r0, [r6, 0x1C] + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B4500: .4byte gUnknown_2037F1A +_080B4504: .4byte gUnknown_2037F02 +_080B4508: .4byte gUnknown_2037F1B +_080B450C: .4byte sub_80B4510 + thumb_func_end sub_80B4494 + + thumb_func_start sub_80B4510 +sub_80B4510: @ 80B4510 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B453C + adds r0, r4, 0 + bl sub_8072740 + b _080B45CC +_080B453C: + movs r0, 0x2E + adds r0, r4 + mov r8, r0 + ldrh r7, [r4, 0x20] + ldrh r5, [r4, 0x24] + ldrh r1, [r4, 0x22] + mov r12, r1 + ldrh r6, [r4, 0x26] + mov r2, r8 + add r1, sp, 0x4 + movs r3, 0x7 +_080B4552: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080B4552 + adds r0, r7, r5 + lsls r0, 16 + lsrs r5, r0, 16 + mov r2, r12 + adds r0, r2, r6 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + bne _080B45CC + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + lsls r1, r5, 16 + asrs r1, 16 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r1, r2 + lsls r2, r6, 16 + asrs r2, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + add r2, sp, 0x4 + mov r1, r8 + movs r3, 0x7 +_080B45BE: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080B45BE +_080B45CC: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80B4510 + + thumb_func_start sub_80B45D8 +sub_80B45D8: @ 80B45D8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B45EC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B45F4 + ldr r4, _080B45F0 @ =gUnknown_2037F1A + b _080B45F6 + .align 2, 0 +_080B45EC: .4byte gUnknown_2037F02 +_080B45F0: .4byte gUnknown_2037F1A +_080B45F4: + ldr r4, _080B4628 @ =gUnknown_2037F1B +_080B45F6: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x12 + strh r0, [r5, 0x22] + ldr r1, _080B462C @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080B4630 @ =sub_8074F50 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4628: .4byte gUnknown_2037F1B +_080B462C: .4byte sub_8074EE0 +_080B4630: .4byte sub_8074F50 + thumb_func_end sub_80B45D8 + + thumb_func_start sub_80B4634 +sub_80B4634: @ 80B4634 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080B46A0 @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080B4654 + ldr r0, _080B46A4 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C +_080B4654: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r4, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0xE + strh r0, [r5, 0x22] + ldrb r1, [r6, 0x2] + adds r0, r5, 0 + bl sub_800838C + adds r0, r5, 0 + bl sub_8007824 + strh r4, [r5, 0x2E] + strh r4, [r5, 0x30] + movs r0, 0x4 + strh r0, [r5, 0x32] + movs r0, 0x10 + strh r0, [r5, 0x34] + ldr r0, _080B46A8 @ =0x0000ffba + strh r0, [r5, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x38] + ldr r1, _080B46AC @ =sub_80B46B4 + adds r0, r5, 0 + bl sub_8074A68 + ldr r1, _080B46B0 @ =sub_8074BE4 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B46A0: .4byte gUnknown_2037F02 +_080B46A4: .4byte gUnknown_2037F1B +_080B46A8: .4byte 0x0000ffba +_080B46AC: .4byte sub_80B46B4 +_080B46B0: .4byte sub_8074BE4 + thumb_func_end sub_80B4634 + + thumb_func_start sub_80B46B4 +sub_80B46B4: @ 80B46B4 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x38] + ldrh r2, [r4, 0x20] + adds r0, r1, r2 + strh r0, [r4, 0x20] + movs r0, 0xC0 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r0, 0x4 + strh r0, [r4, 0x32] + movs r0, 0x20 + strh r0, [r4, 0x34] + ldr r0, _080B46EC @ =0x0000ffe8 + strh r0, [r4, 0x36] + ldr r1, _080B46F0 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r1, _080B46F4 @ =sub_8074BE4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B46EC: .4byte 0x0000ffe8 +_080B46F0: .4byte sub_8074EE0 +_080B46F4: .4byte sub_8074BE4 + thumb_func_end sub_80B46B4 + + thumb_func_start sub_80B46F8 +sub_80B46F8: @ 80B46F8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B4720 @ =gUnknown_2037F02 + ldrb r1, [r4, 0xA] + bl sub_800838C + adds r0, r5, 0 + bl sub_8007824 + ldr r0, _080B4724 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B4728 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _080B472E + .align 2, 0 +_080B4720: .4byte gUnknown_2037F02 +_080B4724: .4byte gUnknown_2037F1A +_080B4728: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080B472E: + strh r0, [r5, 0x20] + ldr r3, _080B4770 @ =gUnknown_2037F02 + ldrh r2, [r3, 0x2] + ldrh r0, [r5, 0x22] + adds r2, r0 + movs r4, 0 + strh r2, [r5, 0x22] + ldrh r0, [r3, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r1, [r3, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + strh r2, [r5, 0x34] + ldrh r0, [r3, 0x6] + adds r2, r0 + strh r2, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754B8 + strh r4, [r5, 0x34] + strh r4, [r5, 0x36] + ldr r0, _080B4774 @ =sub_8074D00 + str r0, [r5, 0x1C] + ldr r1, _080B4778 @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4770: .4byte gUnknown_2037F02 +_080B4774: .4byte sub_8074D00 +_080B4778: .4byte sub_8074EE0 + thumb_func_end sub_80B46F8 + + thumb_func_start sub_80B477C +sub_80B477C: @ 80B477C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B4794 @ =gUnknown_2037F02 + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B4798 + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + b _080B47A0 + .align 2, 0 +_080B4794: .4byte gUnknown_2037F02 +_080B4798: + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 +_080B47A0: + ldr r1, _080B47BC @ =gUnknown_2037F02 + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080B47C0 @ =sub_80B47C4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B47BC: .4byte gUnknown_2037F02 +_080B47C0: .4byte sub_80B47C4 + thumb_func_end sub_80B477C + + thumb_func_start sub_80B47C4 +sub_80B47C4: @ 80B47C4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B480A + adds r0, r4, 0 + bl sub_8072740 +_080B480A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B47C4 + + thumb_func_start sub_80B4810 +sub_80B4810: @ 80B4810 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r1, _080B48E4 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B4854 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080B4854: + ldr r0, _080B48E8 @ =gUnknown_2022978 + strh r5, [r0] + ldr r4, _080B48EC @ =gUnknown_202297A + strh r5, [r4] + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x16 + bl sub_8000A38 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080B48F0 @ =gUnknown_8E79354 + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080B48F4 @ =gUnknown_8E794D0 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080B48F8 @ =gUnknown_8E799FC + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B48B0 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080B48B0: + ldr r0, _080B48FC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080B48CA + ldr r0, _080B4900 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B48CA + movs r5, 0x1 +_080B48CA: + ldr r0, _080B4904 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + strh r5, [r1, 0x8] + ldr r0, _080B4908 @ =sub_80B490C + str r0, [r1] + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B48E4: .4byte 0x00003f42 +_080B48E8: .4byte gUnknown_2022978 +_080B48EC: .4byte gUnknown_202297A +_080B48F0: .4byte gUnknown_8E79354 +_080B48F4: .4byte gUnknown_8E794D0 +_080B48F8: .4byte gUnknown_8E799FC +_080B48FC: .4byte gUnknown_2037F02 +_080B4900: .4byte gUnknown_2037F1A +_080B4904: .4byte gUnknown_3005090 +_080B4908: .4byte sub_80B490C + thumb_func_end sub_80B4810 + + thumb_func_start sub_80B490C +sub_80B490C: @ 80B490C + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080B4934 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0 + bne _080B4940 + ldr r1, _080B4938 @ =gUnknown_2022978 + ldr r3, _080B493C @ =0x0000fffa + adds r0, r3, 0 + ldrh r3, [r1] + adds r0, r3 + b _080B4946 + .align 2, 0 +_080B4934: .4byte gUnknown_3005090 +_080B4938: .4byte gUnknown_2022978 +_080B493C: .4byte 0x0000fffa +_080B4940: + ldr r1, _080B4974 @ =gUnknown_2022978 + ldrh r0, [r1] + adds r0, 0x6 +_080B4946: + strh r0, [r1] + ldr r1, _080B4978 @ =gUnknown_202297A + ldr r3, _080B497C @ =0x0000ffff + adds r0, r3, 0 + ldrh r3, [r1] + adds r0, r3 + strh r0, [r1] + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + adds r0, r2 + movs r3, 0x20 + ldrsh r0, [r0, r3] + adds r4, r1, 0 + cmp r0, 0x4 + bls _080B4968 + b _080B4A96 +_080B4968: + lsls r0, 2 + ldr r1, _080B4980 @ =_080B4984 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B4974: .4byte gUnknown_2022978 +_080B4978: .4byte gUnknown_202297A +_080B497C: .4byte 0x0000ffff +_080B4980: .4byte _080B4984 + .align 2, 0 +_080B4984: + .4byte _080B4998 + .4byte _080B49DA + .4byte _080B49F4 + .4byte _080B4A36 + .4byte _080B4A58 +_080B4998: + adds r0, r4, r5 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B4A96 + strh r5, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bne _080B4A96 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080B4A96 +_080B49DA: + adds r0, r4, r5 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x65 + bne _080B4A96 + movs r0, 0x7 + strh r0, [r1, 0x1E] + b _080B4A4C +_080B49F4: + adds r0, r4, r5 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B4A96 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080B4A96 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080B4A96 +_080B4A36: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + ldr r0, _080B4A54 @ =gUnknown_3005090 + adds r1, r4, r5 + lsls r1, 3 + adds r1, r0 +_080B4A4C: + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080B4A96 + .align 2, 0 +_080B4A54: .4byte gUnknown_3005090 +_080B4A58: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B4A6C + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080B4A6C: + ldr r0, _080B4AA0 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080B4AA4 @ =gUnknown_202297A + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + adds r0, r5, 0 + bl sub_8072760 +_080B4A96: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4AA0: .4byte gUnknown_2022978 +_080B4AA4: .4byte gUnknown_202297A + thumb_func_end sub_80B490C + + thumb_func_start sub_80B4AA8 +sub_80B4AA8: @ 80B4AA8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B4B24 + ldr r4, _080B4AEC @ =gUnknown_2037F02 + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B4AF4 + ldr r0, _080B4AF0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B4AF4 + movs r0, 0x98 + lsls r0, 1 + strh r0, [r5, 0x20] + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + movs r0, 0x1 + strh r0, [r5, 0x38] + ldrb r1, [r5, 0x3] + subs r0, 0x40 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + b _080B4AF8 + .align 2, 0 +_080B4AEC: .4byte gUnknown_2037F02 +_080B4AF0: .4byte gUnknown_2037F1A +_080B4AF4: + ldr r0, _080B4B18 @ =0x0000ffc0 + strh r0, [r5, 0x20] +_080B4AF8: + ldr r4, _080B4B1C @ =gUnknown_2037F02 + ldrh r0, [r4] + strh r0, [r5, 0x22] + ldr r1, _080B4B20 @ =gUnknown_83E7470 + adds r0, r5, 0 + bl sub_8008A58 + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080B4B80 + .align 2, 0 +_080B4B18: .4byte 0x0000ffc0 +_080B4B1C: .4byte gUnknown_2037F02 +_080B4B20: .4byte gUnknown_83E7470 +_080B4B24: + ldrh r1, [r5, 0x30] + ldrh r3, [r5, 0x34] + adds r1, r3 + ldrh r2, [r5, 0x32] + ldrh r0, [r5, 0x36] + adds r2, r0 + lsls r0, r1, 16 + asrs r0, 24 + ldrh r3, [r5, 0x24] + adds r0, r3 + strh r0, [r5, 0x24] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r3, [r5, 0x26] + adds r0, r3 + strh r0, [r5, 0x26] + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x34] + ands r2, r0 + strh r2, [r5, 0x36] + movs r1, 0x38 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B4B6A + movs r2, 0x20 + ldrsh r0, [r5, r2] + movs r3, 0x24 + ldrsh r1, [r5, r3] + adds r0, r1 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + ble _080B4B80 + b _080B4B7C +_080B4B6A: + movs r1, 0x20 + ldrsh r0, [r5, r1] + movs r2, 0x24 + ldrsh r1, [r5, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080B4B80 +_080B4B7C: + ldr r0, _080B4B88 @ =sub_8072740 + str r0, [r5, 0x1C] +_080B4B80: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4B88: .4byte sub_8072740 + thumb_func_end sub_80B4AA8 + + thumb_func_start sub_80B4B8C +sub_80B4B8C: @ 80B4B8C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B4BC4 @ =gUnknown_2037F02 + ldrb r1, [r5, 0x8] + bl sub_800838C + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x4] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x36] + ldr r0, _080B4BC8 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080B4BCC @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4BC4: .4byte gUnknown_2037F02 +_080B4BC8: .4byte sub_8075590 +_080B4BCC: .4byte sub_8072740 + thumb_func_end sub_80B4B8C + + thumb_func_start sub_80B4BD0 +sub_80B4BD0: @ 80B4BD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B4C50 @ =gUnknown_3005090 + adds r6, r1, r0 + ldr r5, _080B4C54 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0xC0 + lsls r1, 13 + adds r0, r1 + lsrs r7, r0, 16 + ldr r4, _080B4C58 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xC0 + lsls r2, 13 + adds r0, r2 + lsrs r0, 16 + mov r8, r0 + ldrb r1, [r5] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080B4C40 + mov r8, r7 +_080B4C40: + bl sub_80B4FB8 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bne _080B4C5C + movs r0, 0x20 + b _080B4C62 + .align 2, 0 +_080B4C50: .4byte gUnknown_3005090 +_080B4C54: .4byte gUnknown_2037F1A +_080B4C58: .4byte gUnknown_2037F1B +_080B4C5C: + lsls r1, r5, 3 + movs r0, 0x30 + subs r0, r1 +_080B4C62: + strh r0, [r6, 0x18] + movs r4, 0 + strh r4, [r6, 0x8] + strh r4, [r6, 0x1E] + strh r4, [r6, 0x1A] + movs r0, 0x1 + strh r0, [r6, 0x20] + movs r1, 0x18 + ldrsh r0, [r6, r1] + cmp r0, 0 + bge _080B4C7A + adds r0, 0x7 +_080B4C7A: + asrs r0, 3 + subs r0, 0x1 + strh r0, [r6, 0x1C] + mov r2, r9 + lsls r0, r2, 3 + strh r0, [r6, 0xC] + lsls r0, r7, 3 + strh r0, [r6, 0xE] + mov r1, r10 + subs r0, r1, r2 + lsls r0, 3 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x10] + mov r1, r8 + subs r0, r1, r7 + lsls r0, 3 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x12] + strh r4, [r6, 0x14] + strh r4, [r6, 0x16] + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + asrs r4, 8 + lsrs r4, 16 + movs r0, 0x3F + bl sub_8073A44 + lsls r0, 24 + strh r4, [r6, 0x22] + asrs r0, 24 + lsls r4, 16 + asrs r4, 16 + subs r0, r4 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x24] + strh r5, [r6, 0xA] + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x26] + ldr r0, _080B4CFC @ =sub_80B4D00 + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B4CFC: .4byte sub_80B4D00 + thumb_func_end sub_80B4BD0 + + thumb_func_start sub_80B4D00 +sub_80B4D00: @ 80B4D00 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B4D24 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080B4D1A + b _080B4E68 +_080B4D1A: + lsls r0, 2 + ldr r1, _080B4D28 @ =_080B4D2C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B4D24: .4byte gUnknown_3005090 +_080B4D28: .4byte _080B4D2C + .align 2, 0 +_080B4D2C: + .4byte _080B4D40 + .4byte _080B4DA4 + .4byte _080B4DAC + .4byte _080B4E08 + .4byte _080B4E5A +_080B4D40: + ldrh r2, [r4, 0x14] + ldrh r0, [r4, 0x10] + subs r2, r0 + strh r2, [r4, 0x14] + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x16] + ldr r3, _080B4DA0 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + lsls r2, 16 + asrs r2, 19 + strh r2, [r0, 0x24] + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080B4D90 + movs r0, 0x14 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080B4D90: + ldrh r1, [r4, 0x22] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x9B + bl sub_80722F4 + b _080B4E68 + .align 2, 0 +_080B4DA0: .4byte gUnknown_202063C +_080B4DA4: + ldrh r0, [r4, 0x1E] + subs r0, 0x1 + strh r0, [r4, 0x1E] + b _080B4E4C +_080B4DAC: + ldrh r0, [r4, 0x1A] + subs r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + beq _080B4DCC + ldrh r0, [r4, 0x10] + ldrh r2, [r4, 0x14] + adds r0, r2 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x16] + adds r0, r1 + strh r0, [r4, 0x16] + b _080B4DD6 +_080B4DCC: + strh r0, [r4, 0x14] + strh r0, [r4, 0x16] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080B4DD6: + ldr r2, _080B4E04 @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x24] + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x26] + b _080B4E68 + .align 2, 0 +_080B4E04: .4byte gUnknown_202063C +_080B4E08: + ldrh r0, [r4, 0x10] + ldrh r2, [r4, 0xC] + adds r0, r2 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0xE] + adds r0, r1 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1C + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080B4E46 + movs r0, 0 + strh r0, [r4, 0x1A] + adds r0, r4, 0 + bl sub_80B4E70 + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x22] + adds r1, r0 + strh r1, [r4, 0x22] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xA8 + bl sub_80722F4 +_080B4E46: + ldrh r0, [r4, 0x18] + subs r0, 0x1 + strh r0, [r4, 0x18] +_080B4E4C: + lsls r0, 16 + cmp r0, 0 + bne _080B4E68 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B4E68 +_080B4E5A: + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B4E68 + adds r0, r2, 0 + bl sub_8072760 +_080B4E68: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B4D00 + + thumb_func_start sub_80B4E70 +sub_80B4E70: @ 80B4E70 + push {r4-r7,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bhi _080B4F60 + lsls r0, 2 + ldr r1, _080B4E8C @ =_080B4E90 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B4E8C: .4byte _080B4E90 + .align 2, 0 +_080B4E90: + .4byte _080B4EA4 + .4byte _080B4EB0 + .4byte _080B4EB0 + .4byte _080B4EBC + .4byte _080B4EC8 +_080B4EA4: + ldr r3, _080B4EAC @ =gUnknown_83E74D8 + movs r5, 0 + b _080B4ECC + .align 2, 0 +_080B4EAC: .4byte gUnknown_83E74D8 +_080B4EB0: + ldr r3, _080B4EB8 @ =gUnknown_83E74F0 + movs r5, 0x50 + b _080B4ECC + .align 2, 0 +_080B4EB8: .4byte gUnknown_83E74F0 +_080B4EBC: + ldr r3, _080B4EC4 @ =gUnknown_83E74F0 + movs r5, 0x40 + b _080B4ECC + .align 2, 0 +_080B4EC4: .4byte gUnknown_83E74F0 +_080B4EC8: + ldr r3, _080B4F68 @ =gUnknown_83E74F0 + movs r5, 0x30 +_080B4ECC: + ldrh r1, [r4, 0xC] + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r4, 0xE] + lsls r2, 16 + asrs r2, 19 + lsls r2, 16 + movs r6, 0x20 + ldrsh r0, [r4, r6] + lsls r0, 2 + adds r1, r0 + lsls r1, 16 + lsrs r6, r1, 16 + asrs r1, 16 + lsrs r7, r2, 16 + asrs r2, 16 + adds r0, r3, 0 + movs r3, 0x23 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080B4F58 + ldr r1, _080B4F6C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x12 + strh r1, [r0, 0x2E] + movs r2, 0x20 + ldrsh r1, [r4, r2] + lsls r2, r1, 2 + adds r2, r1 + lsls r2, 2 + adds r2, r6, r2 + movs r6, 0xA + ldrsh r3, [r4, r6] + lsls r1, r3, 1 + adds r1, r3 + adds r2, r1 + strh r2, [r0, 0x32] + strh r7, [r0, 0x36] + movs r1, 0xA + ldrsh r2, [r4, r1] + lsls r2, 1 + movs r3, 0x10 + negs r3, r3 + adds r1, r3, 0 + subs r1, r2 + strh r1, [r0, 0x38] + ldrh r3, [r0, 0x4] + lsls r2, r3, 22 + lsrs r2, 22 + adds r2, r5 + ldr r5, _080B4F70 @ =0x000003ff + adds r1, r5, 0 + ands r2, r1 + ldr r1, _080B4F74 @ =0xfffffc00 + ands r1, r3 + orrs r1, r2 + strh r1, [r0, 0x4] + bl sub_8075068 + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] +_080B4F58: + movs r6, 0x20 + ldrsh r0, [r4, r6] + negs r0, r0 + strh r0, [r4, 0x20] +_080B4F60: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B4F68: .4byte gUnknown_83E74F0 +_080B4F6C: .4byte gUnknown_202063C +_080B4F70: .4byte 0x000003ff +_080B4F74: .4byte 0xfffffc00 + thumb_func_end sub_80B4E70 + + thumb_func_start sub_80B4F78 +sub_80B4F78: @ 80B4F78 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B4FAA + ldr r0, _080B4FB0 @ =sub_80B4D00 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080B4FA4 + ldr r0, _080B4FB4 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1E] + subs r0, 0x1 + strh r0, [r1, 0x1E] +_080B4FA4: + adds r0, r4, 0 + bl sub_8007280 +_080B4FAA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B4FB0: .4byte sub_80B4D00 +_080B4FB4: .4byte gUnknown_3005090 + thumb_func_end sub_80B4F78 + + thumb_func_start sub_80B4FB8 +sub_80B4FB8: @ 80B4FB8 + push {lr} + ldr r0, _080B4FE0 @ =gUnknown_2037EE4 + ldr r0, [r0] + ldrb r1, [r0, 0x11] + lsrs r0, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xFF + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x4 + bls _080B4FDA + movs r1, 0x1 +_080B4FDA: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_080B4FE0: .4byte gUnknown_2037EE4 + thumb_func_end sub_80B4FB8 + + thumb_func_start sub_80B4FE4 +sub_80B4FE4: @ 80B4FE4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B501C @ =gUnknown_2037F02 + ldrb r1, [r5, 0x8] + bl sub_800838C + ldrh r0, [r5] + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + ldrh r1, [r5, 0x4] + subs r0, r1 + strh r0, [r4, 0x34] + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080B5020 @ =sub_80B5024 + str r0, [r4, 0x1C] + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B501C: .4byte gUnknown_2037F02 +_080B5020: .4byte sub_80B5024 + thumb_func_end sub_80B4FE4 + + thumb_func_start sub_80B5024 +sub_80B5024: @ 80B5024 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r3] + ldrh r1, [r2, 0x34] + movs r3, 0x34 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080B505C + ldrh r3, [r2, 0x32] + adds r0, r1, r3 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r1, r0 + strh r1, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r1, 16 + cmp r1, 0 + ble _080B506E + movs r0, 0 + strh r0, [r2, 0x34] + b _080B506E +_080B505C: + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080B506E + adds r0, r2, 0 + bl sub_8072740 +_080B506E: + pop {r0} + bx r0 + thumb_func_end sub_80B5024 + + thumb_func_start sub_80B5074 +sub_80B5074: @ 80B5074 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B509C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B5090 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_080B5090: + adds r0, r4, 0 + bl sub_8075DF4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B509C: .4byte gUnknown_2037F1A + thumb_func_end sub_80B5074 + + thumb_func_start sub_80B50A0 +sub_80B50A0: @ 80B50A0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B50EC @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B50F0 @ =gUnknown_2037F02 + ldrh r3, [r2] + ldrh r5, [r4, 0x20] + adds r1, r3, r5 + strh r1, [r4, 0x20] + ldrh r1, [r2, 0x2] + adds r0, r1 + strh r0, [r4, 0x22] + strh r3, [r4, 0x30] + strh r1, [r4, 0x32] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x38] + ldrb r1, [r2, 0x6] + adds r0, r4, 0 + bl sub_800838C + ldr r0, _080B50F4 @ =sub_80B50F8 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B50EC: .4byte gUnknown_2037F1B +_080B50F0: .4byte gUnknown_2037F02 +_080B50F4: .4byte sub_80B50F8 + thumb_func_end sub_80B50A0 + + thumb_func_start sub_80B50F8 +sub_80B50F8: @ 80B50F8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x8 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl __divsi3 + ldrh r1, [r4, 0x24] + adds r1, r0 + strh r1, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r1, [r4, 0x26] + subs r1, r0 + strh r1, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x8C + ble _080B5142 + adds r0, r4, 0 + bl sub_8072740 +_080B5142: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B50F8 + + thumb_func_start sub_80B5148 +sub_80B5148: @ 80B5148 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080B5180 @ =gUnknown_2037EE8 + ldr r0, [r2] + cmp r0, 0x20 + bgt _080B515C + ldr r1, _080B5184 @ =gUnknown_2037F02 + movs r0, 0 + strh r0, [r1, 0xE] +_080B515C: + ldr r2, [r2] + adds r0, r2, 0 + subs r0, 0x21 + cmp r0, 0x20 + bhi _080B516C + ldr r1, _080B5184 @ =gUnknown_2037F02 + movs r0, 0x1 + strh r0, [r1, 0xE] +_080B516C: + cmp r2, 0x41 + ble _080B5176 + ldr r1, _080B5184 @ =gUnknown_2037F02 + movs r0, 0x2 + strh r0, [r1, 0xE] +_080B5176: + adds r0, r3, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080B5180: .4byte gUnknown_2037EE8 +_080B5184: .4byte gUnknown_2037F02 + thumb_func_end sub_80B5148 + + thumb_func_start sub_80B5188 +sub_80B5188: @ 80B5188 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080B51E4 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B51AA + movs r0, 0 + bl sub_8075458 + movs r0, 0xC8 + strh r0, [r5, 0xA] +_080B51AA: + ldr r4, _080B51E8 @ =gUnknown_2022982 + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r1, 0xA + bl __divsi3 + ldrh r1, [r4] + adds r1, r0 + strh r1, [r4] + ldrh r0, [r5, 0xA] + subs r0, 0x3 + strh r0, [r5, 0xA] + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x78 + bne _080B51D6 + movs r0, 0x1 + bl sub_8075458 + adds r0, r6, 0 + bl sub_8072760 +_080B51D6: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B51E4: .4byte gUnknown_3005090 +_080B51E8: .4byte gUnknown_2022982 + thumb_func_end sub_80B5188 + + thumb_func_start sub_80B51EC +sub_80B51EC: @ 80B51EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080B5258 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B5218 + movs r0, 0 + bl sub_8075458 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldr r0, _080B525C @ =gUnknown_2022982 + ldrh r0, [r0] + strh r0, [r4, 0xC] +_080B5218: + ldrh r0, [r4, 0xA] + adds r0, 0x50 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0xA] + ldr r6, _080B525C @ =gUnknown_2022982 + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r0, 0x4 + bl sub_8044E4C + ldrh r4, [r4, 0xC] + adds r0, r4 + strh r0, [r6] + ldr r0, _080B5260 @ =gUnknown_2037F02 + movs r2, 0xE + ldrsh r1, [r0, r2] + ldr r0, _080B5264 @ =0x00000fff + cmp r1, r0 + bne _080B5250 + movs r0, 0 + strh r0, [r6] + movs r0, 0x1 + bl sub_8075458 + adds r0, r5, 0 + bl sub_8072760 +_080B5250: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B5258: .4byte gUnknown_3005090 +_080B525C: .4byte gUnknown_2022982 +_080B5260: .4byte gUnknown_2037F02 +_080B5264: .4byte 0x00000fff + thumb_func_end sub_80B51EC + + thumb_func_start sub_80B5268 +sub_80B5268: @ 80B5268 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080B52C4 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080B52C8 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8075678 + ldr r0, _080B52CC @ =sub_80B52D0 + str r0, [r4, 0x1C] + movs r0, 0x10 + strh r0, [r4, 0x3A] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0x3A] + movs r0, 0x52 + bl sub_8000A38 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B52C4: .4byte gUnknown_2037F02 +_080B52C8: .4byte gUnknown_2037F1B +_080B52CC: .4byte sub_80B52D0 + thumb_func_end sub_80B5268 + + thumb_func_start sub_80B52D0 +sub_80B52D0: @ 80B52D0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80B53C0 + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080B52F0 + ldr r0, _080B52EC @ =sub_80B5344 + str r0, [r4, 0x1C] + b _080B533A + .align 2, 0 +_080B52EC: .4byte sub_80B5344 +_080B52F0: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xF + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080B5328 + cmp r2, 0xC4 + ble _080B533A +_080B5328: + lsls r0, 16 + cmp r0, 0 + ble _080B533A + ldr r0, _080B5340 @ =gUnknown_2037F24 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0xBD + bl sub_80722F4 +_080B533A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B5340: .4byte gUnknown_2037F24 + thumb_func_end sub_80B52D0 + + thumb_func_start sub_80B5344 +sub_80B5344: @ 80B5344 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80755E0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl sub_8044E30 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xF + bl sub_8044E4C + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080B538A + cmp r2, 0xC4 + ble _080B5396 +_080B538A: + lsls r0, 16 + cmp r0, 0 + ble _080B5396 + movs r0, 0xBD + bl sub_80722CC +_080B5396: + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B53B4 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B53B0 @ =sub_8074F88 + str r0, [r4, 0x1C] + b _080B53BA + .align 2, 0 +_080B53B0: .4byte sub_8074F88 +_080B53B4: + adds r0, r4, 0 + bl sub_80B53C0 +_080B53BA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B5344 + + thumb_func_start sub_80B53C0 +sub_80B53C0: @ 80B53C0 + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x3A] + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0xFF + ble _080B53E4 + adds r0, r2, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + ldr r1, _080B53E0 @ =0x010d0000 + cmp r0, r1 + bne _080B544A + movs r0, 0 + b _080B5448 + .align 2, 0 +_080B53E0: .4byte 0x010d0000 +_080B53E4: + ldrh r1, [r4, 0x3C] + adds r3, r1, 0x1 + strh r3, [r4, 0x3C] + movs r0, 0xFF + ands r0, r1 + cmp r0, 0 + bne _080B544A + ldr r1, _080B5408 @ =0xffffff00 + ands r1, r3 + strh r1, [r4, 0x3C] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080B540C + adds r0, r2, 0x1 + b _080B540E + .align 2, 0 +_080B5408: .4byte 0xffffff00 +_080B540C: + subs r0, r2, 0x1 +_080B540E: + strh r0, [r4, 0x3A] + ldrh r0, [r4, 0x3A] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B5430 + cmp r0, 0x10 + bne _080B543C +_080B5430: + ldrh r0, [r4, 0x3C] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + eors r0, r1 + strh r0, [r4, 0x3C] +_080B543C: + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B544A + movs r0, 0x80 + lsls r0, 1 +_080B5448: + strh r0, [r4, 0x3A] +_080B544A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B53C0 + + thumb_func_start sub_80B5450 +sub_80B5450: @ 80B5450 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r1, _080B546C @ =sub_80B5470 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B546C: .4byte sub_80B5470 + thumb_func_end sub_80B5450 + + thumb_func_start sub_80B5470 +sub_80B5470: @ 80B5470 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x41 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x82 + bhi _080B54A4 + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x8 + b _080B54AE +_080B54A4: + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 +_080B54AE: + orrs r1, r0 + strb r1, [r4, 0x5] + ldrh r0, [r4, 0x2E] + adds r0, 0x13 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x50 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3D + bne _080B54E0 + adds r0, r4, 0 + bl sub_8072740 +_080B54E0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B5470 + + thumb_func_start sub_80B54E8 +sub_80B54E8: @ 80B54E8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0 + bl sub_80749D4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80758E0 + adds r0, r4, 0 + movs r1, 0x80 + movs r2, 0x80 + movs r3, 0 + bl sub_8075858 + ldr r1, _080B5560 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r1, _080B5564 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0x80 + strh r1, [r0, 0x8] + ldr r1, _080B5568 @ =gUnknown_2037F02 + ldrh r1, [r1] + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + movs r1, 0x10 + strh r1, [r0, 0xE] + ldr r1, _080B556C @ =sub_80B5570 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B5560: .4byte gUnknown_202063C +_080B5564: .4byte gUnknown_3005090 +_080B5568: .4byte gUnknown_2037F02 +_080B556C: .4byte sub_80B5570 + thumb_func_end sub_80B54E8 + + thumb_func_start sub_80B5570 +sub_80B5570: @ 80B5570 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B55C0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080B55B8 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0xC] + adds r1, 0x1 + strh r1, [r4, 0xC] + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x9 + bne _080B55B8 + ldr r0, _080B55C4 @ =sub_80B55C8 + str r0, [r4] +_080B55B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B55C0: .4byte gUnknown_3005090 +_080B55C4: .4byte sub_80B55C8 + thumb_func_end sub_80B5570 + + thumb_func_start sub_80B55C8 +sub_80B55C8: @ 80B55C8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080B55EC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080B55F0 + subs r0, r1, 0x1 + strh r0, [r4, 0xA] + b _080B5634 + .align 2, 0 +_080B55EC: .4byte gUnknown_3005090 +_080B55F0: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r1, r0, 24 + ldrh r0, [r4, 0x8] + adds r0, 0x8 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + bgt _080B5618 + movs r0, 0x8 + ldrsh r2, [r4, r0] + adds r0, r1, 0 + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + b _080B5634 +_080B5618: + adds r0, r1, 0 + bl sub_8075980 + adds r0, r5, 0 + bl sub_8072760 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 +_080B5634: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B55C8 + + thumb_func_start sub_80B563C +sub_80B563C: @ 80B563C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r5, [r4, 0x20] + ldrh r6, [r4, 0x22] + ldr r0, _080B56D8 @ =gUnknown_2037F1A + mov r8, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + mov r9, r1 + strh r0, [r4, 0x20] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + mov r1, r9 + strh r1, [r4, 0x2E] + ldr r2, _080B56DC @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r4, 0x30] + ldrh r1, [r2, 0x2] + strh r1, [r4, 0x32] + ldrh r1, [r2, 0x4] + strh r1, [r4, 0x34] + ldrh r1, [r4, 0x20] + lsls r1, 4 + strh r1, [r4, 0x36] + lsls r0, 4 + strh r0, [r4, 0x38] + lsls r5, 16 + asrs r5, 16 + movs r1, 0x20 + ldrsh r0, [r4, r1] + subs r5, r0 + lsls r5, 4 + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r1, 1 + adds r0, r5, 0 + str r2, [sp] + bl __divsi3 + strh r0, [r4, 0x3A] + lsls r6, 16 + asrs r6, 16 + movs r1, 0x22 + ldrsh r0, [r4, r1] + subs r6, r0 + lsls r6, 4 + ldr r2, [sp] + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r1, 1 + adds r0, r6, 0 + bl __divsi3 + strh r0, [r4, 0x3C] + ldr r0, _080B56E0 @ =sub_80B56E4 + str r0, [r4, 0x1C] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B56D8: .4byte gUnknown_2037F1A +_080B56DC: .4byte gUnknown_2037F02 +_080B56E0: .4byte sub_80B56E4 + thumb_func_end sub_80B563C + + thumb_func_start sub_80B56E4 +sub_80B56E4: @ 80B56E4 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080B572E + cmp r0, 0x1 + bgt _080B56FA + cmp r0, 0 + beq _080B5704 + b _080B57F2 +_080B56FA: + cmp r0, 0x2 + beq _080B5798 + cmp r0, 0x3 + beq _080B57EC + b _080B57F2 +_080B5704: + ldrh r0, [r5, 0x3A] + ldrh r2, [r5, 0x36] + adds r0, r2 + strh r0, [r5, 0x36] + ldrh r1, [r5, 0x3C] + ldrh r2, [r5, 0x38] + adds r1, r2 + strh r1, [r5, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r5, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x22] + ldrh r0, [r5, 0x30] + subs r0, 0x1 + strh r0, [r5, 0x30] + lsls r0, 16 + cmp r0, 0 + bgt _080B57F2 + b _080B57DE +_080B572E: + ldrh r0, [r5, 0x32] + subs r0, 0x1 + strh r0, [r5, 0x32] + lsls r0, 16 + cmp r0, 0 + bgt _080B57F2 + ldr r4, _080B5794 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x30] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x20] + lsls r0, 4 + strh r0, [r5, 0x36] + ldrh r0, [r5, 0x22] + lsls r0, 4 + strh r0, [r5, 0x38] + movs r1, 0x30 + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + subs r0, r1 + lsls r0, 4 + movs r2, 0x34 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, 0x3A] + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r2, 0x22 + ldrsh r1, [r5, r2] + subs r0, r1 + lsls r0, 4 + movs r2, 0x34 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, 0x3C] + b _080B57DE + .align 2, 0 +_080B5794: .4byte gUnknown_2037F1B +_080B5798: + ldrh r0, [r5, 0x3A] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r1, [r5, 0x3C] + ldrh r2, [r5, 0x38] + adds r1, r2 + strh r1, [r5, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r5, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x22] + ldrh r0, [r5, 0x34] + subs r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + cmp r0, 0 + bgt _080B57F2 + ldr r4, _080B57E8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_080B57DE: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080B57F2 + .align 2, 0 +_080B57E8: .4byte gUnknown_2037F1B +_080B57EC: + adds r0, r5, 0 + bl sub_8074EE0 +_080B57F2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B56E4 + + thumb_func_start sub_80B57F8 +sub_80B57F8: @ 80B57F8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080B580C @ =sub_80B5810 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B580C: .4byte sub_80B5810 + thumb_func_end sub_80B57F8 + + thumb_func_start sub_80B5810 +sub_80B5810: @ 80B5810 + push {r4-r6,lr} + adds r3, r0, 0 + movs r5, 0 + movs r6, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080B58A6 + adds r1, r3, 0 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x4 + ands r0, r2 + adds r4, r1, 0 + cmp r0, 0 + bne _080B583A + movs r0, 0x4 + orrs r0, r2 + strb r0, [r4] +_080B583A: + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _080B584A + cmp r0, 0x1 + beq _080B5854 + movs r6, 0x1 + b _080B585E +_080B584A: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0x2 + bne _080B585E + b _080B5862 +_080B5854: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0x4 + bne _080B585E + movs r5, 0x1 +_080B585E: + cmp r5, 0 + beq _080B5894 +_080B5862: + ldrb r2, [r4] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + movs r1, 0 + strh r0, [r3, 0x32] + strh r1, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080B58A6 + strh r1, [r3, 0x32] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080B58A6 +_080B5894: + cmp r6, 0 + beq _080B58A0 + adds r0, r3, 0 + bl sub_8072740 + b _080B58A6 +_080B58A0: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] +_080B58A6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B5810 + + thumb_func_start sub_80B58AC +sub_80B58AC: @ 80B58AC + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080B58D8 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r0, 0x1 + bl sub_8075FBC + movs r6, 0 + movs r1, 0 + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bge _080B58DC + adds r0, r4, 0 + bl sub_8072760 + b _080B59B8 + .align 2, 0 +_080B58D8: .4byte gUnknown_3005090 +_080B58DC: + strh r1, [r5, 0xA] + movs r0, 0xF + strh r0, [r5, 0xC] + movs r0, 0x2 + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r5, 0xE] + lsls r1, 8 + ldrh r0, [r5, 0xC] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r4, _080B5944 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x50 + strh r1, [r0, 0x2E] + ldr r0, _080B5948 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B5950 + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080B594C @ =0x0000ff70 + strh r1, [r0, 0x30] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x70 + b _080B596E + .align 2, 0 +_080B5944: .4byte gUnknown_202063C +_080B5948: .4byte gUnknown_2037F1B +_080B594C: .4byte 0x0000ff70 +_080B5950: + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x90 + strh r1, [r0, 0x30] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080B59C0 @ =0x0000ff90 +_080B596E: + strh r1, [r0, 0x32] + ldr r4, _080B59C4 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r2, 0 + strh r2, [r0, 0x34] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x36] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080B59C8 @ =nullsub_8 + bl sub_8074A68 + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080B59CC @ =sub_8074D00 + str r1, [r0] + ldr r0, _080B59D0 @ =sub_80B59D4 + str r0, [r5] +_080B59B8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B59C0: .4byte 0x0000ff90 +_080B59C4: .4byte gUnknown_202063C +_080B59C8: .4byte nullsub_8 +_080B59CC: .4byte sub_8074D00 +_080B59D0: .4byte sub_80B59D4 + thumb_func_end sub_80B58AC + + thumb_func_start sub_80B59D4 +sub_80B59D4: @ 80B59D4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B59F8 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B5A78 + cmp r0, 0x1 + bgt _080B59FC + cmp r0, 0 + beq _080B5A02 + b _080B5AA4 + .align 2, 0 +_080B59F8: .4byte gUnknown_3005090 +_080B59FC: + cmp r0, 0x2 + beq _080B5A9E + b _080B5AA4 +_080B5A02: + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x3 + ands r0, r1 + strh r0, [r4, 0x12] + cmp r0, 0x1 + bne _080B5A20 + ldrh r1, [r4, 0xC] + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080B5A20 + subs r0, r1, 0x1 + strh r0, [r4, 0xC] +_080B5A20: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + bne _080B5A36 + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080B5A36 + adds r0, r1, 0x1 + strh r0, [r4, 0xE] +_080B5A36: + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0xC] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r1, [r4, 0xC] + movs r0, 0x80 + lsls r0, 13 + cmp r1, r0 + bne _080B5AA4 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080B5AA4 + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080B5A74 @ =gUnknown_202063C + adds r0, r1 + bl sub_8076030 + movs r0, 0x1 + strh r0, [r4, 0x10] + b _080B5AA4 + .align 2, 0 +_080B5A74: .4byte gUnknown_202063C +_080B5A78: + ldrh r0, [r4, 0x14] + adds r0, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B5AA4 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + b _080B5AA4 +_080B5A9E: + adds r0, r2, 0 + bl sub_8072760 +_080B5AA4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B59D4 + + thumb_func_start sub_80B5AAC +sub_80B5AAC: @ 80B5AAC + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _080B5ACC @ =gUnknown_3005090 + adds r1, r2 + movs r2, 0 + strh r2, [r1, 0x26] + ldr r2, _080B5AD0 @ =sub_80B5AD4 + str r2, [r1] + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_080B5ACC: .4byte gUnknown_3005090 +_080B5AD0: .4byte sub_80B5AD4 + thumb_func_end sub_80B5AAC + + thumb_func_start sub_80B5AD4 +sub_80B5AD4: @ 80B5AD4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080B5B0C @ =gUnknown_3005090 + adds r5, r0, r1 + ldr r0, _080B5B10 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080B5B00 + b _080B5D22 +_080B5B00: + lsls r0, 2 + ldr r1, _080B5B14 @ =_080B5B18 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B5B0C: .4byte gUnknown_3005090 +_080B5B10: .4byte gUnknown_2037F1B +_080B5B14: .4byte _080B5B18 + .align 2, 0 +_080B5B18: + .4byte _080B5B2C + .4byte _080B5C2C + .4byte _080B5C70 + .4byte _080B5CD8 + .4byte _080B5D04 +_080B5B2C: + ldr r7, _080B5B64 @ =0x00002771 + adds r0, r7, 0 + bl sub_80089B8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + mov r8, r2 + strh r0, [r5, 0x24] + cmp r0, 0xFF + beq _080B5B5A + cmp r0, 0xF + beq _080B5B5A + movs r0, 0x1 + bl sub_8075FBC + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bge _080B5B68 + adds r0, r7, 0 + bl sub_8008A30 +_080B5B5A: + adds r0, r4, 0 + bl sub_8072760 + b _080B5D28 + .align 2, 0 +_080B5B64: .4byte 0x00002771 +_080B5B68: + ldr r4, _080B5C14 @ =gUnknown_202063C + movs r1, 0x8 + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r2, [r5, 0x24] + lsls r2, 4 + ldrb r3, [r1, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] + movs r2, 0x8 + ldrsh r0, [r5, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + movs r1, 0x8 + ldrsh r0, [r5, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldr r0, _080B5C18 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080B5C1C @ =gUnknown_2037F1B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 31 + adds r2, 0x3E + lsrs r1, 31 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + mov r2, r8 + strh r2, [r5, 0xA] + strh r2, [r5, 0xC] + movs r0, 0x10 + strh r0, [r5, 0xE] + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0x22 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r0, 4 + strh r0, [r5, 0x10] + cmp r6, 0x1 + bne _080B5C20 + movs r1, 0x80 + lsls r1, 2 + b _080B5C24 + .align 2, 0 +_080B5C14: .4byte gUnknown_202063C +_080B5C18: .4byte gUnknown_2024018 +_080B5C1C: .4byte gUnknown_2037F1B +_080B5C20: + movs r1, 0x80 + lsls r1, 3 +_080B5C24: + movs r0, 0 + bl sub_8000B14 + b _080B5D22 +_080B5C2C: + movs r1, 0x24 + ldrsh r0, [r5, r1] + adds r0, 0x10 + lsls r0, 4 + strh r0, [r5, 0x24] + movs r2, 0x10 + ldrsh r0, [r5, r2] + lsls r0, 1 + ldr r1, _080B5C60 @ =gUnknown_20371F8 + adds r0, r1 + movs r2, 0x24 + ldrsh r1, [r5, r2] + lsls r1, 1 + ldr r2, _080B5C64 @ =gUnknown_20375F8 + adds r1, r2 + ldr r2, _080B5C68 @ =0x04000008 + bl CpuSet + ldrh r0, [r5, 0x10] + ldr r3, _080B5C6C @ =0x00003c0d + movs r1, 0x10 + movs r2, 0xA + bl sub_8045274 + b _080B5D22 + .align 2, 0 +_080B5C60: .4byte gUnknown_20371F8 +_080B5C64: .4byte gUnknown_20375F8 +_080B5C68: .4byte 0x04000008 +_080B5C6C: .4byte 0x00003c0d +_080B5C70: + ldr r2, _080B5CAC @ =gUnknown_202063C + movs r0, 0x22 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + subs r1, 0x20 + lsls r1, 16 + lsrs r2, r1, 16 + cmp r1, 0 + bge _080B5C90 + movs r2, 0 +_080B5C90: + cmp r6, 0x1 + bne _080B5CB0 + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + str r2, [sp] + movs r2, 0x4 + str r2, [sp, 0x4] + str r6, [sp, 0x8] + b _080B5CC8 + .align 2, 0 +_080B5CAC: .4byte gUnknown_202063C +_080B5CB0: + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + str r2, [sp] + movs r2, 0x8 + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] +_080B5CC8: + movs r2, 0x2 + movs r3, 0x6 + bl sub_8088230 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x1C] + b _080B5D22 +_080B5CD8: + cmp r6, 0x1 + bne _080B5CEC + ldr r1, _080B5CE8 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + b _080B5CF4 + .align 2, 0 +_080B5CE8: .4byte 0x00003f42 +_080B5CEC: + ldr r1, _080B5D00 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 +_080B5CF4: + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + b _080B5D22 + .align 2, 0 +_080B5D00: .4byte 0x00003f44 +_080B5D04: + cmp r6, 0x1 + bne _080B5D14 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_8000AF4 + b _080B5D1E +_080B5D14: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl sub_8000AF4 +_080B5D1E: + ldr r0, _080B5D34 @ =sub_80B5D38 + str r0, [r5] +_080B5D22: + ldrh r0, [r5, 0x26] + adds r0, 0x1 + strh r0, [r5, 0x26] +_080B5D28: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B5D34: .4byte sub_80B5D38 + thumb_func_end sub_80B5AD4 + + thumb_func_start sub_80B5D38 +sub_80B5D38: @ 80B5D38 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B5DC0 @ =gUnknown_3005090 + adds r4, r0, r1 + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x1 + ands r0, r1 + strh r0, [r4, 0x12] + cmp r0, 0 + bne _080B5D70 + ldr r1, _080B5DC4 @ =gUnknown_825E074 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x12 + bl __divsi3 + strh r0, [r4, 0xC] +_080B5D70: + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bne _080B5D92 + ldr r1, _080B5DC4 @ =gUnknown_825E074 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x12 + bl __divsi3 + movs r1, 0x10 + subs r1, r0 + strh r1, [r4, 0xE] +_080B5D92: + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0xC] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0x80 + bne _080B5DBA + movs r0, 0 + strh r0, [r4, 0x26] + ldr r1, _080B5DC8 @ =sub_80B5DCC + str r1, [r4] + adds r0, r5, 0 + bl _call_via_r1 +_080B5DBA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B5DC0: .4byte gUnknown_3005090 +_080B5DC4: .4byte gUnknown_825E074 +_080B5DC8: .4byte sub_80B5DCC + thumb_func_end sub_80B5D38 + + thumb_func_start sub_80B5DCC +sub_80B5DCC: @ 80B5DCC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B5DFC @ =gUnknown_3005090 + adds r4, r0, r1 + ldr r0, _080B5E00 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0x26 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B5E38 + cmp r0, 0x1 + bgt _080B5E04 + cmp r0, 0 + beq _080B5E0A + b _080B5EB4 + .align 2, 0 +_080B5DFC: .4byte gUnknown_3005090 +_080B5E00: .4byte gUnknown_2037F1B +_080B5E04: + cmp r0, 0x2 + beq _080B5E4C + b _080B5EB4 +_080B5E0A: + ldr r1, _080B5E28 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] + movs r0, 0x1 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + cmp r6, 0x1 + bne _080B5E2C + movs r1, 0x80 + lsls r1, 2 + b _080B5E30 + .align 2, 0 +_080B5E28: .4byte gUnknown_2039600 +_080B5E2C: + movs r1, 0x80 + lsls r1, 3 +_080B5E30: + movs r0, 0 + bl sub_8000B14 + b _080B5EB4 +_080B5E38: + ldrh r0, [r4, 0x10] + ldr r3, _080B5E48 @ =0x00003c0d + movs r1, 0x10 + movs r2, 0 + bl sub_8045274 + b _080B5EB4 + .align 2, 0 +_080B5E48: .4byte 0x00003c0d +_080B5E4C: + ldr r3, _080B5E9C @ =gUnknown_202063C + movs r0, 0x24 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + bl sub_8076030 + ldr r0, _080B5EA0 @ =0x00002771 + bl sub_8008A30 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + cmp r6, 0x1 + bne _080B5EA4 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_8000AF4 + b _080B5EAE + .align 2, 0 +_080B5E9C: .4byte gUnknown_202063C +_080B5EA0: .4byte 0x00002771 +_080B5EA4: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl sub_8000AF4 +_080B5EAE: + adds r0, r5, 0 + bl sub_8072760 +_080B5EB4: + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B5DCC + + thumb_func_start sub_80B5EC0 +sub_80B5EC0: @ 80B5EC0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + ldr r0, _080B5EFC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B5F08 + ldr r4, _080B5F00 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xE0 + lsls r2, 13 + adds r0, r2 + lsrs r5, r0, 16 + ldr r4, _080B5F04 @ =gUnknown_2037F1B + b _080B5F2C + .align 2, 0 +_080B5EFC: .4byte gUnknown_2037F02 +_080B5F00: .4byte gUnknown_2037F1A +_080B5F04: .4byte gUnknown_2037F1B +_080B5F08: + ldr r4, _080B5FD0 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xE0 + lsls r2, 13 + adds r0, r2 + lsrs r5, r0, 16 + ldr r4, _080B5FD4 @ =gUnknown_2037F1A +_080B5F2C: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0xE0 + lsls r1, 13 + adds r0, r1 + lsrs r0, 16 + mov r9, r0 + mov r8, r5 + mov r2, r9 + subs r4, r2, r5 + lsls r4, 16 + lsrs r4, 16 + lsls r0, r6, 4 + strh r0, [r7, 0x2E] + lsls r0, r5, 4 + strh r0, [r7, 0x30] + mov r1, r10 + subs r0, r1, r6 + lsls r0, 4 + ldr r5, _080B5FD8 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r7, 0x32] + lsls r4, 16 + asrs r4, 12 + movs r0, 0x2 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl __divsi3 + strh r0, [r7, 0x34] + ldrh r0, [r5, 0x2] + strh r0, [r7, 0x36] + mov r1, r10 + strh r1, [r7, 0x38] + mov r2, r9 + strh r2, [r7, 0x3A] + movs r1, 0x36 + ldrsh r0, [r7, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r7, 0x3C] + ldrb r1, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r7, 0x5] + strh r6, [r7, 0x20] + mov r2, r8 + strh r2, [r7, 0x22] + ldr r0, _080B5FDC @ =sub_80B5FE0 + str r0, [r7, 0x1C] + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B5FD0: .4byte gUnknown_2037F1B +_080B5FD4: .4byte gUnknown_2037F1A +_080B5FD8: .4byte gUnknown_2037F02 +_080B5FDC: .4byte sub_80B5FE0 + thumb_func_end sub_80B5EC0 + + thumb_func_start sub_80B5FE0 +sub_80B5FE0: @ 80B5FE0 + push {r4,lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x36] + movs r1, 0x36 + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080B6018 + ldrh r0, [r2, 0x32] + ldrh r4, [r2, 0x2E] + adds r0, r4 + strh r0, [r2, 0x2E] + ldrh r1, [r2, 0x34] + ldrh r4, [r2, 0x30] + adds r1, r4 + strh r1, [r2, 0x30] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r2, 0x22] + subs r0, r3, 0x1 + strh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080B6018 + strh r0, [r2, 0x2E] +_080B6018: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B5FE0 + + thumb_func_start sub_80B6020 +sub_80B6020: @ 80B6020 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B6170 @ =gUnknown_3005090 + adds r1, r0 + str r1, [sp] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0 + ldr r1, [sp] + strh r0, [r1, 0x12] + strh r0, [r1, 0x14] + strh r0, [r1, 0x16] + strh r0, [r1, 0x18] + movs r0, 0x10 + strh r0, [r1, 0x1A] + ldr r2, _080B6174 @ =gUnknown_2037F02 + ldrh r0, [r2] + strh r0, [r1, 0x1C] + ldr r4, _080B6178 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8076B2C + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B6090 + b _080B618C +_080B6090: + movs r4, 0 +_080B6092: + lsls r1, r4, 16 + asrs r3, r1, 16 + ldr r0, _080B6178 @ =gUnknown_2037F1A + ldrb r2, [r0] + str r1, [sp, 0x10] + cmp r3, r2 + beq _080B615E + movs r0, 0x2 + eors r2, r0 + cmp r3, r2 + beq _080B615E + lsls r0, r4, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B615E + ldr r6, [sp, 0x4] + ldr r3, [sp, 0x8] + lsls r0, r3, 16 + asrs r7, r0, 16 + ldr r0, _080B617C @ =gUnknown_83E7668 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x37 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x40 + beq _080B615E + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8076B2C + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + mov r0, r8 + lsls r5, r0, 4 + add r5, r8 + lsls r5, 2 + ldr r1, _080B6180 @ =gUnknown_202063C + adds r4, r5, r1 + lsls r0, r6, 4 + strh r0, [r4, 0x2E] + lsls r0, r7, 4 + strh r0, [r4, 0x30] + mov r2, r10 + subs r0, r2, r6 + lsls r0, 4 + ldr r3, _080B6174 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r1, [r3, r2] + bl __divsi3 + strh r0, [r4, 0x32] + mov r3, r9 + lsls r0, r3, 16 + asrs r0, 16 + subs r0, r7 + lsls r0, 4 + ldr r2, _080B6174 @ =gUnknown_2037F02 + movs r3, 0x2 + ldrsh r1, [r2, r3] + bl __divsi3 + strh r0, [r4, 0x34] + ldr r1, _080B6174 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x36] + mov r2, r10 + strh r2, [r4, 0x38] + mov r3, r9 + strh r3, [r4, 0x3A] + ldr r0, _080B6184 @ =gUnknown_2020658 + adds r5, r0 + ldr r0, _080B6188 @ =sub_80B5FE0 + str r0, [r5] + ldr r2, [sp] + movs r3, 0x20 + ldrsh r1, [r2, r3] + adds r1, 0xD + lsls r1, 1 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1 + mov r1, r8 + strh r1, [r0] + ldrh r0, [r2, 0x20] + adds r0, 0x1 + strh r0, [r2, 0x20] +_080B615E: + ldr r2, [sp, 0x10] + movs r3, 0x80 + lsls r3, 9 + adds r0, r2, r3 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080B6092 + b _080B6210 + .align 2, 0 +_080B6170: .4byte gUnknown_3005090 +_080B6174: .4byte gUnknown_2037F02 +_080B6178: .4byte gUnknown_2037F1A +_080B617C: .4byte gUnknown_83E7668 +_080B6180: .4byte gUnknown_202063C +_080B6184: .4byte gUnknown_2020658 +_080B6188: .4byte sub_80B5FE0 +_080B618C: + ldr r0, _080B6228 @ =gUnknown_83E7668 + ldr r7, [sp, 0x4] + ldr r2, [sp, 0x8] + lsls r1, r2, 16 + asrs r1, 16 + str r1, [sp, 0xC] + adds r1, r7, 0 + ldr r2, [sp, 0xC] + movs r3, 0x37 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x40 + beq _080B6210 + movs r3, 0x30 + mov r10, r3 + movs r0, 0x28 + mov r9, r0 + ldr r6, _080B622C @ =gUnknown_202063C + mov r1, r8 + lsls r5, r1, 4 + add r5, r8 + lsls r5, 2 + adds r4, r5, r6 + lsls r0, r7, 4 + strh r0, [r4, 0x2E] + ldr r2, [sp, 0xC] + lsls r0, r2, 4 + strh r0, [r4, 0x30] + subs r0, r3, r7 + lsls r0, 4 + ldr r3, _080B6230 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r1, [r3, r2] + bl __divsi3 + strh r0, [r4, 0x32] + mov r3, r9 + ldr r1, [sp, 0xC] + subs r0, r3, r1 + lsls r0, 4 + ldr r2, _080B6230 @ =gUnknown_2037F02 + movs r3, 0x2 + ldrsh r1, [r2, r3] + bl __divsi3 + strh r0, [r4, 0x34] + ldr r1, _080B6230 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x36] + mov r2, r10 + strh r2, [r4, 0x38] + mov r3, r9 + strh r3, [r4, 0x3A] + adds r6, 0x1C + adds r5, r6 + ldr r0, _080B6234 @ =sub_80B5FE0 + str r0, [r5] + mov r1, r8 + ldr r0, [sp] + strh r1, [r0, 0x22] + movs r0, 0x1 + ldr r2, [sp] + strh r0, [r2, 0x20] +_080B6210: + ldr r0, _080B6238 @ =sub_80B623C + ldr r3, [sp] + str r0, [r3] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B6228: .4byte gUnknown_83E7668 +_080B622C: .4byte gUnknown_202063C +_080B6230: .4byte gUnknown_2037F02 +_080B6234: .4byte sub_80B5FE0 +_080B6238: .4byte sub_80B623C + thumb_func_end sub_80B6020 + + thumb_func_start sub_80B623C +sub_80B623C: @ 80B623C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B6260 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080B62F2 + cmp r1, 0x1 + bgt _080B6264 + cmp r1, 0 + beq _080B6272 + b _080B63AE + .align 2, 0 +_080B6260: .4byte gUnknown_3005090 +_080B6264: + cmp r1, 0x2 + bne _080B626A + b _080B6384 +_080B626A: + cmp r1, 0x3 + bne _080B6270 + b _080B6398 +_080B6270: + b _080B63AE +_080B6272: + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080B62D8 + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B62D8 + strh r1, [r4, 0x12] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B62A8 + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080B62B6 + adds r0, r1, 0x1 + strh r0, [r4, 0x18] + b _080B62B6 +_080B62A8: + ldrh r1, [r4, 0x1A] + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B62B6 + subs r0, r1, 0x1 + strh r0, [r4, 0x1A] +_080B62B6: + ldrh r1, [r4, 0x1A] + lsls r1, 8 + ldrh r0, [r4, 0x18] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0x17 + ble _080B62D8 + movs r0, 0 + strh r0, [r4, 0x16] + movs r0, 0x1 + strh r0, [r4, 0x14] +_080B62D8: + ldrh r1, [r4, 0x1C] + movs r2, 0x1C + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B62E8 + subs r0, r1, 0x1 + strh r0, [r4, 0x1C] + b _080B63AE +_080B62E8: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080B63AE + b _080B6390 +_080B62F2: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B63AE + movs r0, 0 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + ands r0, r1 + lsls r0, 16 + cmp r0, 0 + beq _080B6322 + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B6330 + subs r0, r1, 0x1 + strh r0, [r4, 0x18] + b _080B6330 +_080B6322: + ldrh r1, [r4, 0x1A] + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080B6330 + adds r0, r1, 0x1 + strh r0, [r4, 0x1A] +_080B6330: + ldrh r1, [r4, 0x1A] + lsls r1, 8 + ldrh r0, [r4, 0x18] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r1, [r4, 0x18] + movs r0, 0x80 + lsls r0, 13 + cmp r1, r0 + bne _080B63AE + movs r5, 0 + b _080B6374 +_080B6350: + adds r1, r5, 0 + adds r1, 0xD + lsls r1, 1 + adds r0, r4, 0 + adds r0, 0x8 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080B6380 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_080B6374: + movs r1, 0x20 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _080B6350 + b _080B6390 + .align 2, 0 +_080B6380: .4byte gUnknown_202063C +_080B6384: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + cmp r0, 0 + ble _080B63AE +_080B6390: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B63AE +_080B6398: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8072760 +_080B63AE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B623C + + thumb_func_start sub_80B63B4 +sub_80B63B4: @ 80B63B4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080B6400 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080B6404 @ =gUnknown_2022986 + strh r1, [r0] + ldr r1, _080B6408 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080B640C @ =0x00003f1f + movs r0, 0x4A + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xC8 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x10 + bl sub_8000A38 + ldr r0, _080B6410 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B63FC + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B6414 +_080B63FC: + movs r6, 0x28 + b _080B6416 + .align 2, 0 +_080B6400: .4byte gUnknown_2022984 +_080B6404: .4byte gUnknown_2022986 +_080B6408: .4byte 0x00003f3f +_080B640C: .4byte 0x00003f1f +_080B6410: .4byte gUnknown_2037F1A +_080B6414: + movs r6, 0xC8 +_080B6416: + ldr r1, _080B6454 @ =gUnknown_2022984 + lsls r3, r6, 16 + asrs r2, r3, 16 + lsls r0, r2, 8 + orrs r0, r2 + strh r0, [r1] + ldr r1, _080B6458 @ =gUnknown_2022986 + movs r5, 0x28 + ldr r0, _080B645C @ =0x00002828 + strh r0, [r1] + lsrs r3, 16 + movs r1, 0xF0 + subs r1, r2 + movs r4, 0x48 + ldr r2, _080B6460 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r2 + strh r3, [r0, 0xA] + strh r1, [r0, 0xC] + strh r5, [r0, 0xE] + strh r4, [r0, 0x10] + strh r6, [r0, 0x12] + strh r5, [r0, 0x14] + ldr r1, _080B6464 @ =sub_80B6468 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B6454: .4byte gUnknown_2022984 +_080B6458: .4byte gUnknown_2022986 +_080B645C: .4byte 0x00002828 +_080B6460: .4byte gUnknown_3005090 +_080B6464: .4byte sub_80B6468 + thumb_func_end sub_80B63B4 + + thumb_func_start sub_80B6468 +sub_80B6468: @ 80B6468 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B6588 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r1, [r4, 0x8] + adds r0, r1, 0x1 + strh r0, [r4, 0x8] + ldrh r5, [r4, 0xA] + ldrh r7, [r4, 0xC] + ldrh r0, [r4, 0xE] + mov r10, r0 + ldrh r2, [r4, 0x10] + str r2, [sp, 0xC] + ldrh r0, [r4, 0x12] + ldrh r2, [r4, 0x14] + mov r8, r2 + lsls r1, 16 + asrs r6, r1, 16 + cmp r6, 0xF + ble _080B64A4 + b _080B6594 +_080B64A4: + lsls r0, 16 + asrs r0, 16 + bl __floatsidf + str r0, [sp, 0x10] + str r1, [sp, 0x14] + lsls r0, r5, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080B658C @ =0x3fb00000 + ldr r3, _080B6590 @ =0x00000000 + bl __muldf3 + adds r5, r1, 0 + adds r4, r0, 0 + adds r0, r6, 0 + bl __floatsidf + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + adds r1, r5, 0 + adds r0, r4, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + bl __subdf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + lsls r0, r7, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080B658C @ =0x3fb00000 + ldr r3, _080B6590 @ =0x00000000 + bl __muldf3 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + bl __adddf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r7, r0, 16 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + bl __floatsidf + adds r5, r1, 0 + adds r4, r0, 0 + mov r2, r10 + lsls r0, r2, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080B658C @ =0x3fb00000 + ldr r3, _080B6590 @ =0x00000000 + bl __muldf3 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + adds r1, r5, 0 + adds r0, r4, 0 + bl __subdf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r6, r0, 16 + ldr r1, [sp, 0xC] + lsls r0, r1, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080B658C @ =0x3fb00000 + ldr r3, _080B6590 @ =0x00000000 + bl __muldf3 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + adds r1, r5, 0 + adds r0, r4, 0 + bl __adddf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r5, r0, 16 + b _080B65C2 + .align 2, 0 +_080B6588: .4byte gUnknown_3005090 +_080B658C: .4byte 0x3fb00000 +_080B6590: .4byte 0x00000000 +_080B6594: + movs r2, 0 + mov r9, r2 + movs r7, 0xF0 + movs r6, 0 + movs r5, 0x70 + str r6, [sp] + str r6, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r3, 0 + bl sub_8075BE8 + lsls r0, 16 + lsrs r0, 16 + str r6, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080B65E4 @ =sub_80B65F0 + str r0, [r4] +_080B65C2: + ldr r1, _080B65E8 @ =gUnknown_2022984 + mov r2, r9 + lsls r0, r2, 8 + orrs r7, r0 + strh r7, [r1] + ldr r1, _080B65EC @ =gUnknown_2022986 + lsls r0, r6, 8 + orrs r5, r0 + strh r5, [r1] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B65E4: .4byte sub_80B65F0 +_080B65E8: .4byte gUnknown_2022984 +_080B65EC: .4byte gUnknown_2022986 + thumb_func_end sub_80B6468 + + thumb_func_start sub_80B65F0 +sub_80B65F0: @ 80B65F0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080B663C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080B6636 + ldr r0, _080B6640 @ =gUnknown_2022984 + strh r1, [r0] + ldr r0, _080B6644 @ =gUnknown_2022986 + strh r1, [r0] + ldr r4, _080B6648 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8072760 +_080B6636: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B663C: .4byte gUnknown_2037AB8 +_080B6640: .4byte gUnknown_2022984 +_080B6644: .4byte gUnknown_2022986 +_080B6648: .4byte 0x00003f3f + thumb_func_end sub_80B65F0 + + thumb_func_start sub_80B664C +sub_80B664C: @ 80B664C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080B6678 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B6680 + movs r2, 0x18 + ldr r3, _080B667C @ =0x0000fffe + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r4, 0x3] + b _080B6684 + .align 2, 0 +_080B6678: .4byte gUnknown_2037F1A +_080B667C: .4byte 0x0000fffe +_080B6680: + ldr r2, _080B66A0 @ =0x0000ffe8 + movs r3, 0x2 +_080B6684: + lsls r0, r2, 16 + asrs r0, 16 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + strh r3, [r4, 0x30] + movs r0, 0x3C + strh r0, [r4, 0x2E] + ldr r0, _080B66A4 @ =sub_80B66A8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B66A0: .4byte 0x0000ffe8 +_080B66A4: .4byte sub_80B66A8 + thumb_func_end sub_80B664C + + thumb_func_start sub_80B66A8 +sub_80B66A8: @ 80B66A8 + push {r4,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + movs r2, 0x2E + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080B66BA + subs r0, r1, 0x1 + b _080B671E +_080B66BA: + ldrh r0, [r3, 0x30] + ldrh r4, [r3, 0x24] + adds r1, r0, r4 + strh r1, [r3, 0x24] + adds r0, r1, 0x7 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xE + bls _080B6720 + ldrh r0, [r3, 0x20] + adds r0, r1 + strh r0, [r3, 0x20] + movs r0, 0 + strh r0, [r3, 0x24] + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r4, _080B670C @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080B6710 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080B671C + movs r0, 0x1E + strh r0, [r3, 0x2E] + ldr r0, _080B6714 @ =sub_8074C44 + str r0, [r3, 0x1C] + ldr r1, _080B6718 @ =sub_80B6728 + adds r0, r3, 0 + bl sub_8074A68 + b _080B6720 + .align 2, 0 +_080B670C: .4byte 0x000003ff +_080B6710: .4byte 0xfffffc00 +_080B6714: .4byte sub_8074C44 +_080B6718: .4byte sub_80B6728 +_080B671C: + movs r0, 0x28 +_080B671E: + strh r0, [r3, 0x2E] +_080B6720: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B66A8 + + thumb_func_start sub_80B6728 +sub_80B6728: @ 80B6728 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0 + bne _080B6752 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] + b _080B6796 +_080B6752: + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bgt _080B6762 + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + b _080B6796 +_080B6762: + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + movs r1, 0x10 + subs r1, r0 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080B6796 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B679C @ =sub_80B67A0 + str r0, [r4, 0x1C] +_080B6796: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B679C: .4byte sub_80B67A0 + thumb_func_end sub_80B6728 + + thumb_func_start sub_80B67A0 +sub_80B67A0: @ 80B67A0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080B67CC @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080B67D0 @ =gUnknown_2022986 + strh r1, [r0] + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B67CC: .4byte gUnknown_2022984 +_080B67D0: .4byte gUnknown_2022986 + thumb_func_end sub_80B67A0 + + thumb_func_start sub_80B67D4 +sub_80B67D4: @ 80B67D4 + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + movs r1, 0xC + bl sub_8044E30 + strh r0, [r5, 0x24] + ldr r0, _080B683C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B67F8 + ldrh r0, [r5, 0x24] + negs r0, r0 + strh r0, [r5, 0x24] +_080B67F8: + ldrh r0, [r5, 0x2E] + adds r0, 0x6 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x2E] + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r5, 0x30] + adds r0, r1 + strh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080B6844 + ldr r0, _080B6840 @ =0x0000050b + strh r0, [r5, 0x3A] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r5, 0x3A] + movs r0, 0x52 + bl sub_8000A38 + b _080B689C + .align 2, 0 +_080B683C: .4byte gUnknown_2037F1A +_080B6840: .4byte 0x0000050b +_080B6844: + cmp r0, 0x1E + ble _080B689C + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] + ldrh r1, [r5, 0x3A] + lsls r0, r1, 16 + asrs r0, 24 + lsls r0, 16 + movs r6, 0xFF + ands r6, r1 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r7, r0, 16 + cmp r7, 0x10 + bls _080B6868 + movs r7, 0x10 +_080B6868: + subs r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r0, 0 + bge _080B6874 + movs r6, 0 +_080B6874: + lsls r4, r7, 8 + orrs r4, r6 + lsls r1, r4, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + strh r4, [r5, 0x3A] + cmp r7, 0x10 + bne _080B689C + cmp r6, 0 + bne _080B689C + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B68A4 @ =sub_80B68A8 + str r0, [r5, 0x1C] +_080B689C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B68A4: .4byte sub_80B68A8 + thumb_func_end sub_80B67D4 + + thumb_func_start sub_80B68A8 +sub_80B68A8: @ 80B68A8 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B68A8 + + thumb_func_start sub_80B68C8 +sub_80B68C8: @ 80B68C8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080B6960 @ =gUnknown_3005090 + adds r4, r0 + movs r6, 0 + strh r6, [r4, 0x8] + movs r0, 0x10 + mov r8, r0 + mov r0, r8 + strh r0, [r4, 0xA] + ldr r5, _080B6964 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + ldrb r0, [r5] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8076B2C + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + asrs r1, 1 + adds r1, 0x8 + strh r1, [r4, 0x1E] + strh r6, [r4, 0x16] + ldrb r0, [r5] + bl sub_8076884 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x12] + ldrb r0, [r5] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x2 + strh r0, [r4, 0x14] + strh r6, [r4, 0xE] + mov r0, r8 + strh r0, [r4, 0x10] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + strh r6, [r4, 0x18] + ldr r0, _080B6968 @ =sub_80B696C + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B6960: .4byte gUnknown_3005090 +_080B6964: .4byte gUnknown_2037F1A +_080B6968: .4byte sub_80B696C + thumb_func_end sub_80B68C8 + + thumb_func_start sub_80B696C +sub_80B696C: @ 80B696C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080B6990 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080B6986 + b _080B6AF2 +_080B6986: + lsls r0, 2 + ldr r1, _080B6994 @ =_080B6998 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B6990: .4byte gUnknown_3005090 +_080B6994: .4byte _080B6998 + .align 2, 0 +_080B6998: + .4byte _080B69B0 + .4byte _080B6A20 + .4byte _080B6A62 + .4byte _080B6A76 + .4byte _080B6ACC + .4byte _080B6ADC +_080B69B0: + movs r6, 0 +_080B69B2: + movs r2, 0x1A + ldrsh r1, [r4, r2] + movs r0, 0x1C + ldrsh r2, [r4, r0] + ldrb r3, [r4, 0x14] + ldr r0, _080B6A14 @ =gUnknown_83E76E0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080B6A06 + ldr r1, _080B6A18 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r5, r0, r1 + strh r7, [r5, 0x2E] + ldr r0, _080B6A1C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _080B69E8 + movs r1, 0x1 +_080B69E8: + strh r1, [r5, 0x30] + movs r0, 0x2A + muls r0, r6 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x1E] + strh r0, [r5, 0x34] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 1 + strh r0, [r5, 0x38] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080B6A06: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _080B69B2 + b _080B6AD4 + .align 2, 0 +_080B6A14: .4byte gUnknown_83E76E0 +_080B6A18: .4byte gUnknown_202063C +_080B6A1C: .4byte gUnknown_2037F1A +_080B6A20: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B6A3E + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0xD + bgt _080B6A4C + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080B6A4C +_080B6A3E: + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0x4 + ble _080B6A4C + subs r0, r1, 0x1 + strh r0, [r4, 0x10] +_080B6A4C: + movs r1, 0xE + ldrsh r0, [r4, r1] + ldrh r2, [r4, 0xE] + ldrh r1, [r4, 0x10] + cmp r0, 0xE + bne _080B6ABC + cmp r1, 0x4 + bne _080B6ABC + movs r0, 0 + strh r0, [r4, 0xA] + b _080B6AB6 +_080B6A62: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _080B6AF2 + movs r0, 0 + strh r0, [r4, 0xA] + b _080B6AD4 +_080B6A76: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B6A94 + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080B6AA2 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080B6AA2 +_080B6A94: + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080B6AA2 + adds r0, r1, 0x1 + strh r0, [r4, 0x10] +_080B6AA2: + movs r1, 0xE + ldrsh r0, [r4, r1] + ldrh r2, [r4, 0xE] + ldrh r1, [r4, 0x10] + cmp r0, 0 + bne _080B6ABC + cmp r1, 0x10 + bne _080B6ABC + movs r0, 0x1 + strh r0, [r4, 0x18] +_080B6AB6: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080B6ABC: + lsls r1, 8 + orrs r1, r2 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + b _080B6AF2 +_080B6ACC: + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080B6AF2 +_080B6AD4: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B6AF2 +_080B6ADC: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r7, 0 + bl sub_8072760 +_080B6AF2: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80B696C + + thumb_func_start sub_80B6AF8 +sub_80B6AF8: @ 80B6AF8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B6B0A + ldrh r0, [r4, 0x32] + adds r0, 0x2 + b _080B6B0E +_080B6B0A: + ldrh r0, [r4, 0x32] + subs r0, 0x2 +_080B6B0E: + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x32] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + subs r0, 0x41 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7E + bhi _080B6B50 + ldr r2, _080B6B4C @ =gUnknown_3005090 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x12] + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + b _080B6B64 + .align 2, 0 +_080B6B4C: .4byte gUnknown_3005090 +_080B6B50: + ldr r2, _080B6BB8 @ =gUnknown_3005090 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x3 + ldrb r1, [r0, 0x12] + ands r1, r2 +_080B6B64: + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + lsls r0, 3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + movs r1, 0x7 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldr r2, _080B6BB8 @ =gUnknown_3005090 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r2 + movs r2, 0x18 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080B6BB2 + ldrh r0, [r1, 0x16] + subs r0, 0x1 + strh r0, [r1, 0x16] + adds r0, r4, 0 + bl sub_8007280 +_080B6BB2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B6BB8: .4byte gUnknown_3005090 + thumb_func_end sub_80B6AF8 + + thumb_func_start sub_80B6BBC +sub_80B6BBC: @ 80B6BBC + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _080B6BDC @ =gUnknown_3005090 + adds r1, r2 + movs r2, 0 + strh r2, [r1, 0x26] + ldr r2, _080B6BE0 @ =sub_80B6BE4 + str r2, [r1] + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_080B6BDC: .4byte gUnknown_3005090 +_080B6BE0: .4byte sub_80B6BE4 + thumb_func_end sub_80B6BBC + + thumb_func_start sub_80B6BE4 +sub_80B6BE4: @ 80B6BE4 + push {r4-r6,lr} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B6C18 @ =gUnknown_3005090 + adds r6, r1, r0 + ldr r0, _080B6C1C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r1, 0x26 + ldrsh r0, [r6, r1] + cmp r0, 0x7 + bls _080B6C0C + b _080B6F1E +_080B6C0C: + lsls r0, 2 + ldr r1, _080B6C20 @ =_080B6C24 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B6C18: .4byte gUnknown_3005090 +_080B6C1C: .4byte gUnknown_2037F1A +_080B6C20: .4byte _080B6C24 + .align 2, 0 +_080B6C24: + .4byte _080B6C44 + .4byte _080B6CCC + .4byte _080B6D28 + .4byte _080B6D8C + .4byte _080B6E04 + .4byte _080B6E6C + .4byte _080B6E82 + .4byte _080B6EEC +_080B6C44: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0 + strh r0, [r6, 0xA] + strh r0, [r6, 0xC] + movs r0, 0x10 + strh r0, [r6, 0xE] + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x10] + ldr r3, _080B6CC8 @ =gUnknown_202063C + movs r2, 0x10 + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x5] + lsls r0, 28 + lsrs r0, 30 + strh r0, [r6, 0x12] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r0, 4 + strh r0, [r6, 0x14] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r2, [r0, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0, 0x1] + movs r0, 0x10 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + movs r0, 0x80 + strh r0, [r6, 0x16] + b _080B6F1E + .align 2, 0 +_080B6CC8: .4byte gUnknown_202063C +_080B6CCC: + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + movs r5, 0x1 + ands r5, r0 + cmp r5, 0 + beq _080B6CDC + b _080B6F24 +_080B6CDC: + ldrh r0, [r6, 0x14] + ldrb r2, [r6, 0xC] + ldr r4, _080B6D08 @ =0x000066e0 + movs r1, 0x10 + adds r3, r4, 0 + bl sub_8045274 + ldrh r0, [r6, 0x16] + ldrb r2, [r6, 0xC] + movs r1, 0x10 + adds r3, r4, 0 + bl sub_8045274 + ldrh r1, [r6, 0xC] + movs r2, 0xC + ldrsh r0, [r6, r2] + cmp r0, 0xB + bgt _080B6D0C + adds r0, r1, 0x1 + strh r0, [r6, 0xC] + b _080B6F24 + .align 2, 0 +_080B6D08: .4byte 0x000066e0 +_080B6D0C: + strh r5, [r6, 0xA] + strh r5, [r6, 0xC] + ldr r1, _080B6D24 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + b _080B6F1E + .align 2, 0 +_080B6D24: .4byte 0x00003f44 +_080B6D28: + movs r0, 0x2 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + ldr r0, _080B6D7C @ =gUnknown_202297C + movs r1, 0 + strh r1, [r0] + ldr r4, _080B6D80 @ =gUnknown_202297E + strh r1, [r4] + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x1A + bl sub_8000A38 + add r0, sp, 0xC + movs r1, 0x2 + bl sub_80752C8 + add r0, sp, 0xC + ldrb r0, [r0, 0x9] + ldr r1, _080B6D84 @ =gUnknown_8D24BCC + add r2, sp, 0xC + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080B6D88 @ =gUnknown_8D24BA4 + add r1, sp, 0xC + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + b _080B6F1E + .align 2, 0 +_080B6D7C: .4byte gUnknown_202297C +_080B6D80: .4byte gUnknown_202297E +_080B6D84: .4byte gUnknown_8D24BCC +_080B6D88: .4byte gUnknown_8D24BA4 +_080B6D8C: + add r0, sp, 0xC + movs r1, 0x2 + bl sub_80752C8 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002BB0 + adds r1, r0, 0 + ldr r5, _080B6DFC @ =gUnknown_202401C + ldr r0, [r5] + movs r4, 0xBE + lsls r4, 1 + adds r0, r4 + str r1, [r0] + ldr r0, _080B6E00 @ =gUnknown_8E7F4AC + bl sub_800EBB4 + add r0, sp, 0xC + ldrb r0, [r0, 0x8] + ldr r1, [r5] + adds r1, r4 + ldr r1, [r1] + movs r2, 0x80 + lsls r2, 1 + movs r3, 0 + bl sub_80730C0 + add r0, sp, 0xC + ldrb r0, [r0, 0x9] + ldr r1, [r5] + adds r1, r4 + ldr r1, [r1] + movs r2, 0x20 + str r2, [sp] + str r2, [sp, 0x4] + movs r2, 0x11 + str r2, [sp, 0x8] + movs r2, 0 + movs r3, 0 + bl sub_8002228 + movs r0, 0x2 + bl sub_80020BC + ldr r0, [r5] + adds r0, r4 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + str r1, [r0] + b _080B6F1E + .align 2, 0 +_080B6DFC: .4byte gUnknown_202401C +_080B6E00: .4byte gUnknown_8E7F4AC +_080B6E04: + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B6E14 + b _080B6F24 +_080B6E14: + ldrh r1, [r6, 0xC] + adds r1, 0x1 + strh r1, [r6, 0xC] + ldrh r0, [r6, 0xE] + subs r0, 0x1 + strh r0, [r6, 0xE] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xE + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080B6F24 + strh r0, [r6, 0xA] + strh r0, [r6, 0xC] + movs r0, 0x10 + strh r0, [r6, 0xE] + ldr r1, _080B6E68 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + b _080B6F1E + .align 2, 0 +_080B6E68: .4byte 0x00003f42 +_080B6E6C: + cmp r4, 0x1 + bne _080B6E76 + movs r1, 0x80 + lsls r1, 2 + b _080B6E7A +_080B6E76: + movs r1, 0x80 + lsls r1, 3 +_080B6E7A: + movs r0, 0 + bl sub_8000B14 + b _080B6F1E +_080B6E82: + ldr r2, _080B6EC0 @ =gUnknown_202063C + movs r0, 0x10 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + subs r1, 0x20 + lsls r1, 16 + lsrs r2, r1, 16 + cmp r1, 0 + bge _080B6EA2 + movs r2, 0 +_080B6EA2: + cmp r4, 0x1 + bne _080B6EC4 + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + str r2, [sp] + movs r2, 0x4 + str r2, [sp, 0x4] + str r4, [sp, 0x8] + b _080B6EDE + .align 2, 0 +_080B6EC0: .4byte gUnknown_202063C +_080B6EC4: + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + str r2, [sp] + movs r2, 0x8 + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] + movs r2, 0x4 +_080B6EDE: + movs r3, 0x8 + bl sub_8088230 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x1C] + b _080B6F1E +_080B6EEC: + ldrh r0, [r6, 0x16] + ldr r3, _080B6F08 @ =0x000077ff + movs r1, 0x10 + movs r2, 0xC + bl sub_8045274 + cmp r4, 0x1 + bne _080B6F0C + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_8000AF4 + b _080B6F16 + .align 2, 0 +_080B6F08: .4byte 0x000077ff +_080B6F0C: + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + bl sub_8000AF4 +_080B6F16: + ldr r0, _080B6F2C @ =sub_80B6F30 + str r0, [r6] + movs r0, 0 + strh r0, [r6, 0x26] +_080B6F1E: + ldrh r0, [r6, 0x26] + adds r0, 0x1 + strh r0, [r6, 0x26] +_080B6F24: + add sp, 0x1C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B6F2C: .4byte sub_80B6F30 + thumb_func_end sub_80B6BE4 + + thumb_func_start sub_80B6F30 +sub_80B6F30: @ 80B6F30 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B6FB8 @ =gUnknown_3005090 + adds r4, r0, r1 + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x1 + ands r0, r1 + strh r0, [r4, 0x18] + cmp r0, 0 + bne _080B6F68 + ldr r1, _080B6FBC @ =gUnknown_825E074 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x12 + bl __divsi3 + strh r0, [r4, 0xC] +_080B6F68: + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bne _080B6F8A + ldr r1, _080B6FBC @ =gUnknown_825E074 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x12 + bl __divsi3 + movs r1, 0x10 + subs r1, r0 + strh r1, [r4, 0xE] +_080B6F8A: + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0xC] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0x80 + bne _080B6FB2 + movs r0, 0 + strh r0, [r4, 0x26] + ldr r1, _080B6FC0 @ =sub_80B6FC4 + str r1, [r4] + adds r0, r5, 0 + bl _call_via_r1 +_080B6FB2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B6FB8: .4byte gUnknown_3005090 +_080B6FBC: .4byte gUnknown_825E074 +_080B6FC0: .4byte sub_80B6FC4 + thumb_func_end sub_80B6F30 + + thumb_func_start sub_80B6FC4 +sub_80B6FC4: @ 80B6FC4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080B6FE8 @ =gUnknown_3005090 + adds r6, r0, r1 + movs r1, 0x26 + ldrsh r0, [r6, r1] + cmp r0, 0x5 + bls _080B6FDE + b _080B7148 +_080B6FDE: + lsls r0, 2 + ldr r1, _080B6FEC @ =_080B6FF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B6FE8: .4byte gUnknown_3005090 +_080B6FEC: .4byte _080B6FF0 + .align 2, 0 +_080B6FF0: + .4byte _080B7008 + .4byte _080B7024 + .4byte _080B7044 + .4byte _080B707C + .4byte _080B709C + .4byte _080B70E8 +_080B7008: + ldr r1, _080B701C @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] + ldrh r0, [r6, 0x16] + ldr r3, _080B7020 @ =0x000066e0 + movs r1, 0x10 + movs r2, 0xC + bl sub_8045274 + b _080B7148 + .align 2, 0 +_080B701C: .4byte gUnknown_2039600 +_080B7020: .4byte 0x000066e0 +_080B7024: + ldr r1, _080B7040 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + movs r1, 0 + movs r0, 0x10 + strh r0, [r6, 0xC] + strh r1, [r6, 0xE] + b _080B7148 + .align 2, 0 +_080B7040: .4byte 0x00003f44 +_080B7044: + ldrh r1, [r6, 0xC] + subs r1, 0x1 + strh r1, [r6, 0xC] + ldrh r0, [r6, 0xE] + adds r0, 0x1 + strh r0, [r6, 0xE] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0xE + ldrsh r0, [r6, r2] + cmp r0, 0xF + ble _080B714E + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x2 + bl sub_80BC1F8 + b _080B7148 +_080B707C: + movs r0, 0x2 + bl sub_8075358 + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl sub_8070424 + movs r0, 0x2 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0xC + strh r0, [r6, 0xA] + b _080B7148 +_080B709C: + ldrh r0, [r6, 0x14] + ldrb r2, [r6, 0xA] + ldr r4, _080B70C8 @ =0x000066e0 + movs r1, 0x10 + adds r3, r4, 0 + bl sub_8045274 + ldrh r0, [r6, 0x16] + ldrb r2, [r6, 0xA] + movs r1, 0x10 + adds r3, r4, 0 + bl sub_8045274 + ldrh r0, [r6, 0xA] + movs r2, 0xA + ldrsh r1, [r6, r2] + cmp r1, 0 + beq _080B70CC + subs r0, 0x1 + strh r0, [r6, 0xA] + b _080B714E + .align 2, 0 +_080B70C8: .4byte 0x000066e0 +_080B70CC: + strh r1, [r6, 0xA] + ldr r1, _080B70E4 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + b _080B7148 + .align 2, 0 +_080B70E4: .4byte 0x00003f44 +_080B70E8: + ldr r5, _080B7154 @ =gUnknown_202063C + movs r1, 0x10 + ldrsh r0, [r6, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + movs r0, 0x3 + ldrb r2, [r6, 0x12] + ands r2, r0 + lsls r2, 2 + ldrb r4, [r1, 0x5] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r0, r4 + orrs r0, r2 + strb r0, [r1, 0x5] + movs r2, 0x10 + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0, 0x1] + ands r3, r1 + strb r3, [r0, 0x1] + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x2 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r7, 0 + bl sub_8072760 +_080B7148: + ldrh r0, [r6, 0x26] + adds r0, 0x1 + strh r0, [r6, 0x26] +_080B714E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B7154: .4byte gUnknown_202063C + thumb_func_end sub_80B6FC4 + + thumb_func_start sub_80B7158 +sub_80B7158: @ 80B7158 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r3] + ldr r2, _080B719C @ =gUnknown_2023D44 + ldr r1, _080B71A0 @ =gUnknown_2037F1A + ldrb r1, [r1] + adds r1, r2 + ldrb r1, [r1] + strh r1, [r0, 0x38] + movs r1, 0x80 + strh r1, [r0, 0x2E] + movs r1, 0xA + strh r1, [r0, 0x30] + ldr r2, _080B71A4 @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r0, 0x32] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x34] + ldr r1, _080B71A8 @ =sub_80B71B0 + str r1, [r0, 0x1C] + ldr r2, _080B71AC @ =gUnknown_202063C + movs r3, 0x38 + ldrsh r1, [r0, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + adds r1, 0x8 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_080B719C: .4byte gUnknown_2023D44 +_080B71A0: .4byte gUnknown_2037F1A +_080B71A4: .4byte gUnknown_2037F02 +_080B71A8: .4byte sub_80B71B0 +_080B71AC: .4byte gUnknown_202063C + thumb_func_end sub_80B7158 + + thumb_func_start sub_80B71B0 +sub_80B71B0: @ 80B71B0 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x34] + movs r1, 0x34 + ldrsh r3, [r5, r1] + cmp r3, 0 + beq _080B7218 + subs r0, 0x1 + strh r0, [r5, 0x34] + movs r2, 0x2E + ldrsh r0, [r5, r2] + movs r2, 0x30 + ldrsh r1, [r5, r2] + bl sub_8044E30 + ldr r4, _080B7210 @ =gUnknown_202063C + movs r1, 0x38 + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x24] + movs r2, 0x2E + ldrsh r0, [r5, r2] + movs r2, 0x30 + ldrsh r1, [r5, r2] + bl sub_8044E4C + movs r1, 0x38 + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x26] + ldrh r0, [r5, 0x32] + ldrh r2, [r5, 0x2E] + adds r1, r0, r2 + strh r1, [r5, 0x2E] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080B724C + ldr r2, _080B7214 @ =0xffffff00 + adds r0, r1, r2 + strh r0, [r5, 0x2E] + b _080B724C + .align 2, 0 +_080B7210: .4byte gUnknown_202063C +_080B7214: .4byte 0xffffff00 +_080B7218: + ldr r2, _080B7254 @ =gUnknown_202063C + movs r0, 0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x24] + movs r0, 0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x26] + movs r0, 0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x8 + strh r1, [r0, 0x22] + ldr r0, _080B7258 @ =sub_8074EE0 + str r0, [r5, 0x1C] +_080B724C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B7254: .4byte gUnknown_202063C +_080B7258: .4byte sub_8074EE0 + thumb_func_end sub_80B71B0 + + thumb_func_start sub_80B725C +sub_80B725C: @ 80B725C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B72A4 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B72AC + ldr r2, _080B72A8 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r2, 0x6] + negs r0, r0 + strh r0, [r2, 0x6] + ldrh r0, [r2, 0x8] + negs r0, r0 + strh r0, [r2, 0x8] + adds r1, r2, 0 + b _080B72B6 + .align 2, 0 +_080B72A4: .4byte gUnknown_2037F1A +_080B72A8: .4byte gUnknown_2037F02 +_080B72AC: + ldr r1, _080B72EC @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] +_080B72B6: + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x38] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080B72F0 @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + ldr r0, _080B72F4 @ =sub_8074E70 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B72EC: .4byte gUnknown_2037F02 +_080B72F0: .4byte sub_8074EE0 +_080B72F4: .4byte sub_8074E70 + thumb_func_end sub_80B725C + + thumb_func_start sub_80B72F8 +sub_80B72F8: @ 80B72F8 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8074FCC + ldr r4, _080B7350 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080B7354 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B735C + ldr r2, _080B7358 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x20] + ldrh r1, [r2, 0x2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r1, r0 + strh r1, [r5, 0x22] + ldrh r0, [r5, 0x32] + ldrh r1, [r2, 0x4] + subs r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r2, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + b _080B7386 + .align 2, 0 +_080B7350: .4byte gUnknown_2037F1B +_080B7354: .4byte gUnknown_2037F1A +_080B7358: .4byte gUnknown_2037F02 +_080B735C: + ldr r1, _080B73A0 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r0, [r1, 0x4] + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C +_080B7386: + ldr r0, _080B73A0 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x2E] + ldr r0, _080B73A4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080B73A8 @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B73A0: .4byte gUnknown_2037F02 +_080B73A4: .4byte sub_8075590 +_080B73A8: .4byte sub_8074EE0 + thumb_func_end sub_80B72F8 + + thumb_func_start sub_80B73AC +sub_80B73AC: @ 80B73AC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080B73C0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B73C8 + ldr r4, _080B73C4 @ =gUnknown_2037F1A + b _080B73CA + .align 2, 0 +_080B73C0: .4byte gUnknown_2037F02 +_080B73C4: .4byte gUnknown_2037F1A +_080B73C8: + ldr r4, _080B740C @ =gUnknown_2037F1B +_080B73CA: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080B7410 @ =gUnknown_2037F02 + movs r0, 0x2 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x4] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldr r0, _080B7414 @ =sub_8074F6C + str r0, [r5, 0x1C] + ldr r1, _080B7418 @ =sub_8074EE0 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B740C: .4byte gUnknown_2037F1B +_080B7410: .4byte gUnknown_2037F02 +_080B7414: .4byte sub_8074F6C +_080B7418: .4byte sub_8074EE0 + thumb_func_end sub_80B73AC + + thumb_func_start sub_80B741C +sub_80B741C: @ 80B741C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B7444 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B7436 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_080B7436: + adds r0, r4, 0 + bl sub_80B72F8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7444: .4byte gUnknown_2037F1A + thumb_func_end sub_80B741C + + thumb_func_start sub_80B7448 +sub_80B7448: @ 80B7448 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r4, _080B749C @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r6, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + strh r5, [r6, 0x36] + movs r0, 0x1 + strh r0, [r6, 0x38] + ldr r0, _080B74A0 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r6, 0x3A] + ldr r4, _080B74A4 @ =gUnknown_2023D6B + ldrb r0, [r4] + movs r1, 0 + bl sub_8076B2C + lsls r7, r0, 16 + lsrs r5, r7, 16 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8076B2C + lsls r1, r0, 16 + lsrs r0, r1, 16 + cmp r5, r0 + bls _080B74A8 + lsrs r0, r7, 17 + b _080B74AA + .align 2, 0 +_080B749C: .4byte gUnknown_2037F1A +_080B74A0: .4byte gUnknown_2037F02 +_080B74A4: .4byte gUnknown_2023D6B +_080B74A8: + lsrs r0, r1, 17 +_080B74AA: + strh r0, [r6, 0x3C] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x3C + ldrsh r1, [r6, r2] + bl sub_8044E4C + strh r0, [r6, 0x24] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x3C + ldrsh r1, [r6, r2] + bl sub_8044E30 + strh r0, [r6, 0x26] + ldr r0, _080B74D4 @ =sub_80B74D8 + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B74D4: .4byte sub_80B74D8 + thumb_func_end sub_80B7448 + + thumb_func_start sub_80B74D8 +sub_80B74D8: @ 80B74D8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0 + beq _080B74EA + cmp r5, 0x1 + beq _080B7556 + b _080B75DA +_080B74EA: + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x38] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080B753C + strh r5, [r4, 0x36] + ldrh r1, [r4, 0x38] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080B753C + adds r0, r1, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080B753C + movs r0, 0x10 + strh r0, [r4, 0x38] +_080B753C: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _080B75DA + movs r0, 0 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080B75DA +_080B7556: + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x38] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0x95 + bgt _080B757E + adds r0, r1, 0 + adds r0, 0x8 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x95 + ble _080B757E + movs r0, 0x96 + strh r0, [r4, 0x3C] +_080B757E: + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080B75C6 + movs r0, 0 + strh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080B75C6 + adds r0, r1, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080B75C6 + movs r0, 0x10 + strh r0, [r4, 0x38] +_080B75C6: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080B75DA + adds r0, r4, 0 + bl sub_8072740 +_080B75DA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B74D8 + + thumb_func_start sub_80B75E0 +sub_80B75E0: @ 80B75E0 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B760C @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r0, _080B7610 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B761C + ldr r0, _080B7614 @ =0x04000014 + str r0, [sp] + ldr r0, _080B7618 @ =gUnknown_2022978 + b _080B7622 + .align 2, 0 +_080B760C: .4byte gUnknown_3005090 +_080B7610: .4byte gUnknown_2037F1A +_080B7614: .4byte 0x04000014 +_080B7618: .4byte gUnknown_2022978 +_080B761C: + ldr r0, _080B7698 @ =0x04000018 + str r0, [sp] + ldr r0, _080B769C @ =gUnknown_202297C +_080B7622: + ldrh r0, [r0] + strh r0, [r4, 0xC] + ldr r0, _080B76A0 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r5, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r5, [r0, 0x9] + ldr r0, _080B76A4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0xE] + adds r0, 0x20 + strh r0, [r4, 0x10] + cmp r1, 0 + bge _080B7652 + strh r5, [r4, 0xE] +_080B7652: + ldrh r3, [r4, 0xE] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bgt _080B7680 + ldr r5, _080B76A8 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080B7664: + lsls r1, r3, 1 + adds r2, r1, r5 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r4, 0xC] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _080B7664 +_080B7680: + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldr r0, _080B76AC @ =sub_80B76B0 + str r0, [r4] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7698: .4byte 0x04000018 +_080B769C: .4byte gUnknown_202297C +_080B76A0: .4byte 0xa2600001 +_080B76A4: .4byte gUnknown_2037F1A +_080B76A8: .4byte gUnknown_2038700 +_080B76AC: .4byte sub_80B76B0 + thumb_func_end sub_80B75E0 + + thumb_func_start sub_80B76B0 +sub_80B76B0: @ 80B76B0 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080B76D4 @ =gUnknown_3005090 + adds r2, r0, r1 + movs r1, 0x8 + ldrsh r0, [r2, r1] + cmp r0, 0x4 + bhi _080B7766 + lsls r0, 2 + ldr r1, _080B76D8 @ =_080B76DC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B76D4: .4byte gUnknown_3005090 +_080B76D8: .4byte _080B76DC + .align 2, 0 +_080B76DC: + .4byte _080B76F0 + .4byte _080B7712 + .4byte _080B7722 + .4byte _080B774E + .4byte _080B7760 +_080B76F0: + ldrh r0, [r2, 0x16] + adds r0, 0x1 + strh r0, [r2, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B7746 + movs r0, 0 + strh r0, [r2, 0x16] + ldrh r0, [r2, 0x14] + adds r0, 0x1 + strh r0, [r2, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080B7746 + b _080B7740 +_080B7712: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _080B7746 + b _080B7740 +_080B7722: + ldrh r0, [r2, 0x16] + adds r0, 0x1 + strh r0, [r2, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B7746 + movs r0, 0 + strh r0, [r2, 0x16] + ldrh r0, [r2, 0x14] + subs r0, 0x1 + strh r0, [r2, 0x14] + lsls r0, 16 + cmp r0, 0 + bne _080B7746 +_080B7740: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] +_080B7746: + adds r0, r2, 0 + bl sub_80B776C + b _080B7766 +_080B774E: + ldr r1, _080B775C @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080B7766 + .align 2, 0 +_080B775C: .4byte gUnknown_2039600 +_080B7760: + adds r0, r3, 0 + bl sub_8072760 +_080B7766: + pop {r0} + bx r0 + thumb_func_end sub_80B76B0 + + thumb_func_start sub_80B776C +sub_80B776C: @ 80B776C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldrh r3, [r5, 0x12] + ldrh r4, [r5, 0xE] + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r4, r0 + bgt _080B77C2 + ldr r7, _080B77D8 @ =gUnknown_2038700 + mov r12, r7 + ldr r0, _080B77DC @ =gUnknown_825E074 + mov r8, r0 + ldr r6, _080B77E0 @ =gUnknown_2039600 +_080B778A: + lsls r2, r4, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r12 + lsls r0, r3, 1 + add r0, r8 + movs r7, 0 + ldrsh r1, [r0, r7] + movs r7, 0x14 + ldrsh r0, [r5, r7] + muls r0, r1 + asrs r0, 7 + ldrh r1, [r5, 0xC] + adds r0, r1 + strh r0, [r2] + adds r3, 0x8 + movs r0, 0xFF + ands r3, r0 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + movs r7, 0x10 + ldrsh r0, [r5, r7] + cmp r4, r0 + ble _080B778A +_080B77C2: + ldrh r0, [r5, 0x12] + adds r0, 0x9 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x12] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B77D8: .4byte gUnknown_2038700 +_080B77DC: .4byte gUnknown_825E074 +_080B77E0: .4byte gUnknown_2039600 + thumb_func_end sub_80B776C + + thumb_func_start sub_80B77E4 +sub_80B77E4: @ 80B77E4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + ldr r5, _080B7884 @ =gUnknown_2037F02 + movs r0, 0x4 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + movs r1, 0x5 + bl __divsi3 + adds r6, r0, 0 + ldr r1, _080B7888 @ =gUnknown_2037F1A + mov r8, r1 + ldrb r0, [r1] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + mov r2, r8 + ldrb r0, [r2] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r5, 0x8] + adds r0, r3 + strh r0, [r4, 0x22] + movs r1, 0x2 + ldrsh r0, [r5, r1] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl sub_8044E4C + strh r0, [r4, 0x30] + movs r3, 0x2 + ldrsh r0, [r5, r3] + lsls r6, 16 + asrs r6, 16 + adds r1, r6, 0 + bl sub_8044E30 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x30] + ldrh r2, [r5] + adds r3, r2, 0 + muls r3, r1 + adds r1, r3, 0 + ldrh r3, [r4, 0x20] + adds r1, r3 + strh r1, [r4, 0x20] + adds r1, r2, 0 + muls r1, r0 + adds r0, r1, 0 + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x34] + ldr r0, _080B788C @ =sub_80B7894 + str r0, [r4, 0x1C] + adds r4, 0x2E + ldr r2, _080B7890 @ =gUnknown_20399A4 + movs r1, 0x6 +_080B786C: + ldrh r0, [r4] + strh r0, [r2] + adds r4, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080B786C + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7884: .4byte gUnknown_2037F02 +_080B7888: .4byte gUnknown_2037F1A +_080B788C: .4byte sub_80B7894 +_080B7890: .4byte gUnknown_20399A4 + thumb_func_end sub_80B77E4 + + thumb_func_start sub_80B7894 +sub_80B7894: @ 80B7894 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080B78D8 + adds r0, r4, 0 + bl sub_8072740 +_080B78D8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B7894 + + thumb_func_start sub_80B78E0 +sub_80B78E0: @ 80B78E0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080B791C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080B7920 @ =gUnknown_2037F02 + ldrh r1, [r1] + strh r1, [r0, 0x8] + ldr r1, _080B7924 @ =gUnknown_2037F1A + ldrb r4, [r1] + movs r1, 0x10 + strh r1, [r0, 0xA] + movs r0, 0x52 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B792C + ldr r1, _080B7928 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + b _080B7934 + .align 2, 0 +_080B791C: .4byte gUnknown_3005090 +_080B7920: .4byte gUnknown_2037F02 +_080B7924: .4byte gUnknown_2037F1A +_080B7928: .4byte 0x00003f42 +_080B792C: + ldr r1, _080B7948 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 +_080B7934: + ldr r0, _080B794C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080B7950 @ =sub_80B7954 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B7948: .4byte 0x00003f44 +_080B794C: .4byte gUnknown_3005090 +_080B7950: .4byte sub_80B7954 + thumb_func_end sub_80B78E0 + + thumb_func_start sub_80B7954 +sub_80B7954: @ 80B7954 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080B79C0 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r6, r0, r1 + ldrh r0, [r6, 0xA] + lsrs r4, r0, 8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xC + ldrsh r0, [r6, r2] + ldrb r2, [r6, 0x8] + cmp r0, r2 + bne _080B79D0 + adds r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 8 + orrs r1, r0 + movs r5, 0 + strh r1, [r6, 0xA] + ldrh r1, [r6, 0xA] + movs r0, 0x52 + bl sub_8000A38 + strh r5, [r6, 0xC] + cmp r4, 0x10 + bne _080B79D6 + ldr r2, _080B79C4 @ =gUnknown_202063C + ldr r1, _080B79C8 @ =gUnknown_2023D44 + ldr r0, _080B79CC @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r7, 0 + bl sub_8072760 + b _080B79D6 + .align 2, 0 +_080B79C0: .4byte gUnknown_3005090 +_080B79C4: .4byte gUnknown_202063C +_080B79C8: .4byte gUnknown_2023D44 +_080B79CC: .4byte gUnknown_2037F1A +_080B79D0: + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] +_080B79D6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80B7954 + + thumb_func_start sub_80B79DC +sub_80B79DC: @ 80B79DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B7A08 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r1 + ldr r0, _080B7A0C @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r2, 0x8] + movs r1, 0x80 + lsls r1, 5 + strh r1, [r2, 0xA] + ldr r0, _080B7A10 @ =sub_80B7A14 + str r0, [r2] + movs r0, 0x52 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_080B7A08: .4byte gUnknown_3005090 +_080B7A0C: .4byte gUnknown_2037F02 +_080B7A10: .4byte sub_80B7A14 + thumb_func_end sub_80B79DC + + thumb_func_start sub_80B7A14 +sub_80B7A14: @ 80B7A14 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080B7A70 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r6, r0, r1 + ldrh r0, [r6, 0xA] + lsrs r4, r0, 8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xC + ldrsh r0, [r6, r2] + ldrb r2, [r6, 0x8] + cmp r0, r2 + bne _080B7A74 + subs r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 8 + orrs r1, r0 + movs r5, 0 + strh r1, [r6, 0xA] + ldrh r1, [r6, 0xA] + movs r0, 0x52 + bl sub_8000A38 + strh r5, [r6, 0xC] + cmp r4, 0 + bne _080B7A7A + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r7, 0 + bl sub_8072760 + b _080B7A7A + .align 2, 0 +_080B7A70: .4byte gUnknown_3005090 +_080B7A74: + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] +_080B7A7A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80B7A14 + + thumb_func_start sub_80B7A80 +sub_80B7A80: @ 80B7A80 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080B7AAC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B7AB4 + ldr r1, _080B7AB0 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + b _080B7ABC + .align 2, 0 +_080B7AAC: .4byte gUnknown_2037F1A +_080B7AB0: .4byte 0x00003f42 +_080B7AB4: + ldr r1, _080B7AC8 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 +_080B7ABC: + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7AC8: .4byte 0x00003f44 + thumb_func_end sub_80B7A80 + + thumb_func_start sub_80B7ACC +sub_80B7ACC: @ 80B7ACC + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080B7B38 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x30] + ldr r5, _080B7B3C @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + movs r0, 0x7E + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80754B8 + ldrh r0, [r4, 0x30] + negs r0, r0 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + negs r0, r0 + strh r0, [r4, 0x36] + ldr r0, _080B7B40 @ =0x0000ffd8 + strh r0, [r4, 0x3A] + ldr r1, _080B7B44 @ =sub_80B7B48 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7B38: .4byte gUnknown_2037F1B +_080B7B3C: .4byte gUnknown_2037F1A +_080B7B40: .4byte 0x0000ffd8 +_080B7B44: .4byte sub_80B7B48 + thumb_func_end sub_80B7ACC + + thumb_func_start sub_80B7B48 +sub_80B7B48: @ 80B7B48 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r5, [r4, 0x30] + ldrh r0, [r4, 0x34] + adds r2, r5, r0 + strh r2, [r4, 0x34] + ldrh r3, [r4, 0x32] + ldrh r6, [r4, 0x36] + adds r1, r3, r6 + strh r1, [r4, 0x36] + lsls r0, r2, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + movs r6, 0x3C + ldrsh r0, [r4, r6] + cmp r0, 0 + bne _080B7B8A + adds r0, r2, r5 + strh r0, [r4, 0x34] + adds r1, r3 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] +_080B7B8A: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x3A + ldrsh r1, [r4, r2] + bl sub_8044E30 + ldrh r6, [r4, 0x26] + adds r0, r6 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + cmp r0, 0x7F + ble _080B7BBA + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x3A] + adds r0, 0x14 + strh r0, [r4, 0x3A] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] +_080B7BBA: + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080B7BCC + adds r0, r4, 0 + bl sub_8072740 +_080B7BCC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B7B48 + + thumb_func_start sub_80B7BD4 +sub_80B7BD4: @ 80B7BD4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B7C08 @ =gUnknown_2037F02 + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl sub_800843C + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x32] + ldr r0, _080B7C0C @ =sub_80B7C10 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B7C08: .4byte gUnknown_2037F02 +_080B7C0C: .4byte sub_80B7C10 + thumb_func_end sub_80B7BD4 + + thumb_func_start sub_80B7C10 +sub_80B7C10: @ 80B7C10 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x38] + adds r1, r3 + strh r1, [r2, 0x38] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r2, 0x26] + ldrh r0, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + bne _080B7C46 + ldr r0, _080B7C4C @ =sub_80B7C50 + str r0, [r2, 0x1C] +_080B7C46: + pop {r0} + bx r0 + .align 2, 0 +_080B7C4C: .4byte sub_80B7C50 + thumb_func_end sub_80B7C10 + + thumb_func_start sub_80B7C50 +sub_80B7C50: @ 80B7C50 + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x36] + ldrh r0, [r3, 0x2E] + subs r1, r0 + strh r1, [r3, 0x36] + ldrh r0, [r3, 0x38] + ldrh r2, [r3, 0x30] + subs r0, r2 + strh r0, [r3, 0x38] + lsls r1, 16 + asrs r1, 24 + strh r1, [r3, 0x24] + lsls r0, 16 + asrs r0, 24 + strh r0, [r3, 0x26] + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080B7C82 + adds r0, r3, 0 + bl sub_8074EE0 +_080B7C82: + pop {r0} + bx r0 + thumb_func_end sub_80B7C50 + + thumb_func_start sub_80B7C88 +sub_80B7C88: @ 80B7C88 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080B7C9C @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080B7CA4 + ldr r0, _080B7CA0 @ =gUnknown_2037F1A + b _080B7CA6 + .align 2, 0 +_080B7C9C: .4byte gUnknown_2037F02 +_080B7CA0: .4byte gUnknown_2037F1A +_080B7CA4: + ldr r0, _080B7CD4 @ =gUnknown_2037F1B +_080B7CA6: + ldrb r5, [r0] + movs r6, 0x14 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x4 + ldr r7, _080B7CD8 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080B7CDC @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x2 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _080B7D04 + cmp r0, 0x1 + bgt _080B7CE0 + cmp r0, 0 + beq _080B7CEA + b _080B7D58 + .align 2, 0 +_080B7CD4: .4byte gUnknown_2037F1B +_080B7CD8: .4byte 0x000003ff +_080B7CDC: .4byte 0xfffffc00 +_080B7CE0: + cmp r0, 0x2 + beq _080B7D1E + cmp r0, 0x3 + beq _080B7D36 + b _080B7D58 +_080B7CEA: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x8 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r4, 0x22] + b _080B7D58 +_080B7D04: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0xE + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x10 + strh r0, [r4, 0x22] + b _080B7D58 +_080B7D1E: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x8 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x8 + b _080B7D4C +_080B7D36: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0xE + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x10 +_080B7D4C: + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + movs r6, 0xEC +_080B7D58: + movs r0, 0x20 + strh r0, [r4, 0x2E] + lsls r0, r6, 24 + asrs r0, 24 + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + adds r0, 0xC + strh r0, [r4, 0x36] + ldr r0, _080B7D80 @ =0x0000fff4 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080B7D84 @ =sub_80B7D88 + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B7D80: .4byte 0x0000fff4 +_080B7D84: .4byte sub_80B7D88 + thumb_func_end sub_80B7C88 + + thumb_func_start sub_80B7D88 +sub_80B7D88: @ 80B7D88 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B7D9C + adds r0, r4, 0 + bl sub_8074EE0 +_080B7D9C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B7D88 + + thumb_func_start sub_80B7DA4 +sub_80B7DA4: @ 80B7DA4 + push {r4-r7,lr} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B7E08 @ =gUnknown_3005090 + adds r5, r1, r0 + ldr r4, _080B7E0C @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + movs r6, 0 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + subs r0, 0x7 + strh r0, [r5, 0x14] + ldrh r1, [r5, 0x16] + strh r1, [r5, 0x12] + strh r0, [r5, 0x10] + subs r1, r0 + lsls r1, 8 + strh r1, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r5, 0x24] + adds r0, 0x20 + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B7E14 + ldr r0, _080B7E10 @ =0x0000fff4 + b _080B7E16 + .align 2, 0 +_080B7E08: .4byte gUnknown_3005090 +_080B7E0C: .4byte gUnknown_2037F1A +_080B7E10: .4byte 0x0000fff4 +_080B7E14: + ldr r0, _080B7E60 @ =0x0000ffc0 +_080B7E16: + strh r0, [r5, 0x18] + ldr r0, _080B7E64 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + cmp r0, 0x1 + bne _080B7E78 + add r4, sp, 0xC + adds r0, r4, 0 + bl sub_80752A0 + ldr r0, _080B7E68 @ =gUnknown_202297A + ldrh r0, [r0] + strh r0, [r5, 0x1C] + ldr r1, _080B7E6C @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + ldrb r1, [r4, 0x8] + lsls r1, 4 + movs r0, 0 + movs r2, 0x20 + bl sub_8070424 + ldr r0, _080B7E70 @ =0x04000016 + str r0, [sp] + movs r7, 0x2 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B7EA8 + ldr r1, _080B7E74 @ =gUnknown_202297C + b _080B7EA2 + .align 2, 0 +_080B7E60: .4byte 0x0000ffc0 +_080B7E64: .4byte gUnknown_2037F1A +_080B7E68: .4byte gUnknown_202297A +_080B7E6C: .4byte 0x00003f42 +_080B7E70: .4byte 0x04000016 +_080B7E74: .4byte gUnknown_202297C +_080B7E78: + ldr r0, _080B7F30 @ =gUnknown_202297E + ldrh r0, [r0] + strh r0, [r5, 0x1C] + ldr r1, _080B7F34 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl sub_8070424 + ldr r0, _080B7F38 @ =0x0400001a + str r0, [sp] + movs r7, 0x4 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B7EA8 + ldr r1, _080B7F3C @ =gUnknown_2022978 +_080B7EA2: + ldrh r0, [r1] + adds r0, 0xF0 + strh r0, [r1] +_080B7EA8: + ldr r0, _080B7F40 @ =0xa2600001 + str r0, [sp, 0x4] + mov r2, sp + movs r1, 0 + movs r0, 0x1 + strb r0, [r2, 0x8] + mov r0, sp + strb r1, [r0, 0x9] + strh r1, [r5, 0x1E] + movs r0, 0x10 + strh r0, [r5, 0x20] + strh r1, [r5, 0x8] + strh r1, [r5, 0xA] + strh r1, [r5, 0xC] + movs r0, 0x3 + bl sub_80B856C + movs r3, 0 + ldr r4, _080B7F44 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r4, r0 +_080B7ED4: + lsls r1, r3, 1 + adds r2, r1, r4 + ldrh r0, [r5, 0x1C] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r5, 0x1C] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x6F + bls _080B7ED4 + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + movs r0, 0x3F + eors r7, r0 + movs r1, 0xFC + lsls r1, 6 + adds r0, r1, 0 + orrs r7, r0 + movs r0, 0x4A + adds r1, r7, 0 + bl sub_8000A38 + ldr r1, _080B7F48 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r2, _080B7F4C @ =gUnknown_2022984 + ldrh r0, [r5, 0x24] + lsls r0, 8 + ldrh r1, [r5, 0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _080B7F50 @ =gUnknown_2022986 + movs r0, 0xA0 + strh r0, [r1] + ldr r0, _080B7F54 @ =sub_80B7F58 + str r0, [r5] + add sp, 0x1C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B7F30: .4byte gUnknown_202297E +_080B7F34: .4byte 0x00003f44 +_080B7F38: .4byte 0x0400001a +_080B7F3C: .4byte gUnknown_2022978 +_080B7F40: .4byte 0xa2600001 +_080B7F44: .4byte gUnknown_2038700 +_080B7F48: .4byte 0x00003f3f +_080B7F4C: .4byte gUnknown_2022984 +_080B7F50: .4byte gUnknown_2022986 +_080B7F54: .4byte sub_80B7F58 + thumb_func_end sub_80B7DA4 + + thumb_func_start sub_80B7F58 +sub_80B7F58: @ 80B7F58 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B7F7C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080B7F72 + b _080B806A +_080B7F72: + lsls r0, 2 + ldr r1, _080B7F80 @ =_080B7F84 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B7F7C: .4byte gUnknown_3005090 +_080B7F80: .4byte _080B7F84 + .align 2, 0 +_080B7F84: + .4byte _080B7F98 + .4byte _080B7FFA + .4byte _080B8014 + .4byte _080B8050 + .4byte _080B8064 +_080B7F98: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B806A + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B7FC8 + ldrh r1, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + cmp r0, 0xC + beq _080B7FD6 + adds r0, r1, 0x1 + strh r0, [r4, 0x1E] + b _080B7FD6 +_080B7FC8: + ldrh r1, [r4, 0x20] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + beq _080B7FD6 + subs r0, r1, 0x1 + strh r0, [r4, 0x20] +_080B7FD6: + ldrh r1, [r4, 0x20] + lsls r1, 8 + ldrh r0, [r4, 0x1E] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0xC + bne _080B806A + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + bne _080B806A + b _080B8056 +_080B7FFA: + ldrh r0, [r4, 0x10] + subs r0, 0x8 + strh r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_80B843C + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _080B806A + b _080B8056 +_080B8014: + ldrh r0, [r4, 0x10] + subs r0, 0x8 + strh r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_80B843C + ldrh r1, [r4, 0x24] + adds r1, 0x4 + strh r1, [r4, 0x24] + ldrh r0, [r4, 0x26] + subs r2, r0, 0x4 + strh r2, [r4, 0x26] + lsls r1, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _080B8036 + strh r2, [r4, 0x24] +_080B8036: + ldr r3, _080B804C @ =gUnknown_2022984 + ldrh r2, [r4, 0x24] + lsls r0, r2, 8 + ldrh r1, [r4, 0x26] + orrs r0, r1 + strh r0, [r3] + lsls r2, 16 + lsls r1, 16 + cmp r2, r1 + bne _080B806A + b _080B8056 + .align 2, 0 +_080B804C: .4byte gUnknown_2022984 +_080B8050: + ldr r1, _080B8060 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B8056: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B806A + .align 2, 0 +_080B8060: .4byte gUnknown_2039600 +_080B8064: + adds r0, r2, 0 + bl sub_8072760 +_080B806A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B7F58 + + thumb_func_start sub_80B8070 +sub_80B8070: @ 80B8070 + push {r4-r7,lr} + sub sp, 0x1C + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080B8098 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080B808C + b _080B829E +_080B808C: + lsls r0, 2 + ldr r1, _080B809C @ =_080B80A0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B8098: .4byte gUnknown_3005090 +_080B809C: .4byte _080B80A0 + .align 2, 0 +_080B80A0: + .4byte _080B80B4 + .4byte _080B8138 + .4byte _080B817C + .4byte _080B81E8 + .4byte _080B8250 +_080B80B4: + bl sub_8073788 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B80F0 + ldr r0, _080B80E4 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080B80E8 @ =gUnknown_2022986 + strh r1, [r0] + ldr r4, _080B80EC @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + adds r0, r6, 0 + bl sub_8072760 + b _080B829E + .align 2, 0 +_080B80E4: .4byte gUnknown_2022984 +_080B80E8: .4byte gUnknown_2022986 +_080B80EC: .4byte 0x00003f3f +_080B80F0: + ldr r0, _080B8110 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + cmp r0, 0x1 + bne _080B811C + ldr r1, _080B8114 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080B8118 @ =gUnknown_202297C + b _080B8126 + .align 2, 0 +_080B8110: .4byte gUnknown_2037F1B +_080B8114: .4byte 0x00003f42 +_080B8118: .4byte gUnknown_202297C +_080B811C: + ldr r1, _080B8130 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080B8134 @ =gUnknown_2022978 +_080B8126: + ldrh r0, [r1] + adds r0, 0xF0 + strh r0, [r1] + b _080B823C + .align 2, 0 +_080B8130: .4byte 0x00003f44 +_080B8134: .4byte gUnknown_2022978 +_080B8138: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080B8160 + mov r0, sp + bl sub_80752A0 + ldr r0, _080B815C @ =gUnknown_202297A + ldrh r0, [r0] + strh r0, [r5, 0x1C] + mov r0, sp + ldrb r1, [r0, 0x8] + lsls r1, 4 + movs r0, 0 + movs r2, 0x20 + bl sub_8070424 + b _080B8170 + .align 2, 0 +_080B815C: .4byte gUnknown_202297A +_080B8160: + ldr r0, _080B8178 @ =gUnknown_202297E + ldrh r0, [r0] + strh r0, [r5, 0x1C] + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl sub_8070424 +_080B8170: + movs r0, 0x3 + bl sub_80B856C + b _080B823C + .align 2, 0 +_080B8178: .4byte gUnknown_202297E +_080B817C: + ldr r4, _080B81C8 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + movs r6, 0 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + subs r0, 0x7 + strh r0, [r5, 0x14] + ldrh r1, [r5, 0x16] + subs r1, r0 + lsls r1, 8 + strh r1, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r1, r0, 0x4 + strh r1, [r5, 0x24] + adds r0, 0x4 + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080B81D0 + ldr r0, _080B81CC @ =0x0000fff4 + b _080B81D2 + .align 2, 0 +_080B81C8: .4byte gUnknown_2037F1B +_080B81CC: .4byte 0x0000fff4 +_080B81D0: + ldr r0, _080B81E4 @ =0x0000ffc0 +_080B81D2: + strh r0, [r5, 0x18] + ldrh r0, [r5, 0x18] + strh r0, [r5, 0x10] + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + movs r0, 0x8 + strh r0, [r5, 0x20] + b _080B823C + .align 2, 0 +_080B81E4: .4byte 0x0000ffc0 +_080B81E8: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080B81F8 + ldr r0, _080B81F4 @ =0x04000016 + b _080B81FA + .align 2, 0 +_080B81F4: .4byte 0x04000016 +_080B81F8: + ldr r0, _080B8244 @ =0x0400001a +_080B81FA: + str r0, [sp, 0x10] + movs r3, 0 + add r4, sp, 0x10 + ldr r6, _080B8248 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r7, r6, r0 +_080B8208: + lsls r1, r3, 1 + adds r2, r1, r6 + ldrh r0, [r5, 0x1C] + adds r0, 0x9F + subs r0, r3 + strh r0, [r2] + adds r1, r7 + ldrh r0, [r5, 0x1C] + adds r0, 0x9F + subs r0, r3 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x6F + bls _080B8208 + ldr r1, _080B824C @ =0xa2600001 + str r1, [r4, 0x4] + movs r2, 0 + movs r0, 0x1 + strb r0, [r4, 0x8] + strb r2, [r4, 0x9] + ldr r0, [sp, 0x10] + ldr r2, [r4, 0x8] + bl sub_8087EE4 +_080B823C: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080B829E + .align 2, 0 +_080B8244: .4byte 0x0400001a +_080B8248: .4byte gUnknown_2038700 +_080B824C: .4byte 0xa2600001 +_080B8250: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080B8268 + ldr r1, _080B8264 @ =0x00003f3d + movs r0, 0x4A + bl sub_8000A38 + b _080B8270 + .align 2, 0 +_080B8264: .4byte 0x00003f3d +_080B8268: + ldr r1, _080B82A8 @ =0x00003f3b + movs r0, 0x4A + bl sub_8000A38 +_080B8270: + ldr r1, _080B82AC @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r2, _080B82B0 @ =gUnknown_2022984 + ldrh r0, [r5, 0x24] + lsls r0, 8 + ldrh r1, [r5, 0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _080B82B4 @ =gUnknown_2022986 + movs r0, 0xA0 + strh r0, [r1] + movs r0, 0 + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] + strh r0, [r5, 0xC] + ldr r1, _080B82B8 @ =0x0000080c + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080B82BC @ =sub_80B82C0 + str r0, [r5] +_080B829E: + add sp, 0x1C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B82A8: .4byte 0x00003f3b +_080B82AC: .4byte 0x00003f3f +_080B82B0: .4byte gUnknown_2022984 +_080B82B4: .4byte gUnknown_2022986 +_080B82B8: .4byte 0x0000080c +_080B82BC: .4byte sub_80B82C0 + thumb_func_end sub_80B8070 + + thumb_func_start sub_80B82C0 +sub_80B82C0: @ 80B82C0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B82E4 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080B82DA + b _080B842A +_080B82DA: + lsls r0, 2 + ldr r1, _080B82E8 @ =_080B82EC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B82E4: .4byte gUnknown_3005090 +_080B82E8: .4byte _080B82EC + .align 2, 0 +_080B82EC: + .4byte _080B8300 + .4byte _080B832C + .4byte _080B8394 + .4byte _080B83F6 + .4byte _080B8408 +_080B8300: + ldrh r0, [r4, 0x12] + adds r0, 0x8 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0x16] + movs r3, 0x16 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080B8316 + strh r2, [r4, 0x12] +_080B8316: + adds r0, r4, 0 + bl sub_80B843C + movs r0, 0x12 + ldrsh r1, [r4, r0] + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080B832A + b _080B842A +_080B832A: + b _080B83FC +_080B832C: + movs r3, 0x26 + ldrsh r0, [r4, r3] + movs r2, 0x24 + ldrsh r1, [r4, r2] + subs r0, r1 + cmp r0, 0x3F + bgt _080B8348 + ldrh r0, [r4, 0x24] + subs r0, 0x4 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x26] + adds r0, 0x4 + strh r0, [r4, 0x26] + b _080B834C +_080B8348: + movs r0, 0x1 + strh r0, [r4, 0xA] +_080B834C: + ldr r2, _080B8390 @ =gUnknown_2022984 + ldrh r0, [r4, 0x24] + lsls r0, 8 + ldrh r1, [r4, 0x26] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x10] + adds r0, 0x8 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0x14] + movs r3, 0x14 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080B836E + strh r2, [r4, 0x10] +_080B836E: + adds r0, r4, 0 + bl sub_80B843C + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080B842A + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080B842A + movs r0, 0 + strh r0, [r4, 0xA] + b _080B83FC + .align 2, 0 +_080B8390: .4byte gUnknown_2022984 +_080B8394: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B842A + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080B83C4 + ldrh r1, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B83D2 + subs r0, r1, 0x1 + strh r0, [r4, 0x1E] + b _080B83D2 +_080B83C4: + ldrh r1, [r4, 0x20] + movs r3, 0x20 + ldrsh r0, [r4, r3] + cmp r0, 0xF + bgt _080B83D2 + adds r0, r1, 0x1 + strh r0, [r4, 0x20] +_080B83D2: + ldrh r1, [r4, 0x20] + lsls r1, 8 + ldrh r0, [r4, 0x1E] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B842A + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _080B842A + b _080B83FC +_080B83F6: + ldr r1, _080B8404 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B83FC: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B842A + .align 2, 0 +_080B8404: .4byte gUnknown_2039600 +_080B8408: + ldr r0, _080B8430 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080B8434 @ =gUnknown_2022986 + strh r1, [r0] + ldr r4, _080B8438 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8072760 +_080B842A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8430: .4byte gUnknown_2022984 +_080B8434: .4byte gUnknown_2022986 +_080B8438: .4byte 0x00003f3f + thumb_func_end sub_80B82C0 + + thumb_func_start sub_80B843C +sub_80B843C: @ 80B843C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldrh r0, [r6, 0x12] + ldrh r4, [r6, 0x10] + subs r0, r4 + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + beq _080B8530 + movs r2, 0x22 + ldrsh r0, [r6, r2] + bl __divsi3 + mov r8, r0 + movs r3, 0x14 + ldrsh r0, [r6, r3] + lsls r5, r0, 8 + lsls r0, r4, 16 + movs r4, 0 + cmp r0, 0 + ble _080B849C + ldr r0, _080B8528 @ =gUnknown_2038700 + mov r12, r0 + ldr r7, _080B852C @ =gUnknown_2039600 +_080B8470: + lsls r2, r4, 16 + asrs r2, 16 + lsls r3, r2, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r3, r0 + add r3, r12 + adds r1, r2, 0 + subs r1, 0x9F + ldrh r0, [r6, 0x1C] + subs r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r4, r2, 16 + asrs r2, 16 + movs r1, 0x10 + ldrsh r0, [r6, r1] + cmp r2, r0 + blt _080B8470 +_080B849C: + ldrh r4, [r6, 0x10] + lsls r3, r4, 16 + asrs r1, r3, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + bgt _080B84E6 + ldr r0, _080B8528 @ =gUnknown_2038700 + mov r12, r0 + ldr r7, _080B852C @ =gUnknown_2039600 +_080B84B0: + asrs r4, r3, 16 + cmp r4, 0 + blt _080B84D2 + asrs r1, r5, 8 + subs r1, r4 + lsls r3, r4, 1 + ldrb r2, [r7, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + add r3, r12 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r6, 0x1C] + adds r1, r2 + strh r1, [r3] +_080B84D2: + add r5, r8 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r3, r4, 16 + asrs r1, r3, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080B84B0 +_080B84E6: + movs r3, 0x1C + ldrsh r0, [r6, r3] + adds r0, 0x9F + lsls r2, r4, 16 + asrs r1, r2, 16 + subs r5, r0, r1 + movs r3, 0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + bge _080B855E + ldr r7, _080B8528 @ =gUnknown_2038700 + ldr r4, _080B852C @ =gUnknown_2039600 +_080B84FE: + asrs r3, r2, 16 + cmp r3, 0 + blt _080B8516 + lsls r2, r3, 1 + ldrb r1, [r4, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + strh r5, [r2] + subs r5, 0x1 +_080B8516: + adds r0, r3, 0x1 + lsls r2, r0, 16 + asrs r1, r2, 16 + movs r3, 0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + blt _080B84FE + b _080B855E + .align 2, 0 +_080B8528: .4byte gUnknown_2038700 +_080B852C: .4byte gUnknown_2039600 +_080B8530: + movs r1, 0x1C + ldrsh r0, [r6, r1] + adds r5, r0, 0 + adds r5, 0x9F + movs r4, 0 + ldr r3, _080B8568 @ =gUnknown_2038700 + movs r2, 0xF0 + lsls r2, 3 + adds r6, r3, r2 +_080B8542: + lsls r0, r4, 16 + asrs r0, 16 + lsls r2, r0, 1 + adds r1, r2, r3 + strh r5, [r1] + adds r2, r6 + strh r5, [r2] + subs r5, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x6F + ble _080B8542 +_080B855E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B8568: .4byte gUnknown_2038700 + thumb_func_end sub_80B843C + + thumb_func_start sub_80B856C +sub_80B856C: @ 80B856C + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + movs r4, 0 + ldr r7, _080B85B4 @ =gUnknown_202063C + movs r1, 0x3 + ands r0, r1 + lsls r5, r0, 2 + movs r0, 0xD + negs r0, r0 + adds r6, r0, 0 +_080B8582: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080B85A2 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r0, [r1, 0x5] + ands r0, r6 + orrs r0, r5 + strb r0, [r1, 0x5] +_080B85A2: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080B8582 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B85B4: .4byte gUnknown_202063C + thumb_func_end sub_80B856C + + thumb_func_start sub_80B85B8 +sub_80B85B8: @ 80B85B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r6, _080B8658 @ =gUnknown_2037F1A + ldrb r0, [r6] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + ldrb r0, [r6] + adds r1, r4, 0 + bl sub_8072E48 + ldr r0, _080B865C @ =gUnknown_202063C + mov r9, r0 + ldr r0, _080B8660 @ =gUnknown_2023D44 + mov r8, r0 + ldrb r0, [r6] + add r0, r8 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r9 + adds r1, 0x3E + ldrb r2, [r1] + movs r7, 0x5 + negs r7, r7 + adds r0, r7, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B8642 + ldrb r0, [r6] + eors r0, r5 + movs r1, 0x1 + eors r4, r1 + adds r1, r4, 0 + bl sub_8072E48 + ldrb r0, [r6] + eors r0, r5 + add r0, r8 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r9 + adds r0, 0x3E + ldrb r2, [r0] + adds r1, r7, 0 + ands r1, r2 + strb r1, [r0] +_080B8642: + mov r0, r10 + bl sub_8072760 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B8658: .4byte gUnknown_2037F1A +_080B865C: .4byte gUnknown_202063C +_080B8660: .4byte gUnknown_2023D44 + thumb_func_end sub_80B85B8 + + thumb_func_start sub_80B8664 +sub_80B8664: @ 80B8664 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _080B86AC @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r5, 0 + bl sub_8073128 + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B86A0 + movs r0, 0x1 + eors r5, r0 + adds r0, r5, 0 + bl sub_8073128 +_080B86A0: + adds r0, r6, 0 + bl sub_8072760 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B86AC: .4byte gUnknown_2037F1A + thumb_func_end sub_80B8664 + + thumb_func_start sub_80B86B0 +sub_80B86B0: @ 80B86B0 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080B86E0 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrb r1, [r1, 0x4] + adds r0, r4, 0 + bl sub_800838C + ldr r0, _080B86E4 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080B86E8 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B86E0: .4byte gUnknown_2037F02 +_080B86E4: .4byte sub_8074F6C +_080B86E8: .4byte sub_8072740 + thumb_func_end sub_80B86B0 + + thumb_func_start sub_80B86EC +sub_80B86EC: @ 80B86EC + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + ldr r0, _080B87EC @ =gUnknown_2022984 + strh r6, [r0] + ldr r0, _080B87F0 @ =gUnknown_2022986 + strh r6, [r0] + ldr r1, _080B87F4 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080B87F8 @ =0x00003f3d + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080B87FC @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080B8800 @ =0x00000c08 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B8750 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080B8750: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080B87CA + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B87CA + ldr r4, _080B8804 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080B8780 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + bne _080B87CA +_080B8780: + ldrb r0, [r4] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B87CA + ldr r3, _080B8808 @ =gUnknown_202063C + ldr r1, _080B880C @ =gUnknown_2023D44 + ldrb r0, [r4] + eors r0, r5 + adds r0, r1 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + movs r6, 0x1 +_080B87CA: + ldr r4, _080B8804 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B8818 + ldr r1, _080B8810 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080B8814 @ =gUnknown_202402C + b _080B8828 + .align 2, 0 +_080B87EC: .4byte gUnknown_2022984 +_080B87F0: .4byte gUnknown_2022986 +_080B87F4: .4byte 0x00003f3f +_080B87F8: .4byte 0x00003f3d +_080B87FC: .4byte 0x00003f42 +_080B8800: .4byte 0x00000c08 +_080B8804: .4byte gUnknown_2037F1A +_080B8808: .4byte gUnknown_202063C +_080B880C: .4byte gUnknown_2023D44 +_080B8810: .4byte gUnknown_2023BCE +_080B8814: .4byte gUnknown_202402C +_080B8818: + ldr r1, _080B88B8 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080B88BC @ =gUnknown_2024284 +_080B8828: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0 + bl sub_80749D4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080B88C0 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8076E34 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080B88C4 @ =gUnknown_8D1D388 + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080B88C8 @ =gUnknown_8D1D224 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080B88CC @ =gUnknown_8D1D360 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + ldr r2, _080B88D0 @ =gUnknown_2022978 + ldr r0, _080B88D4 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + negs r0, r0 + adds r0, 0x60 + strh r0, [r2] + ldr r2, _080B88D8 @ =gUnknown_202297A + ldrh r0, [r1, 0x22] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldrb r0, [r1, 0x5] + lsrs r0, 4 + adds r0, 0x10 + adds r1, r0, 0 + ldr r2, _080B88DC @ =gUnknown_2037F02 + movs r3, 0x2 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080B88E0 + adds r0, r1, 0 + movs r1, 0 + bl sub_8075B48 + b _080B88EC + .align 2, 0 +_080B88B8: .4byte gUnknown_2023BCE +_080B88BC: .4byte gUnknown_2024284 +_080B88C0: .4byte gUnknown_2037F1A +_080B88C4: .4byte gUnknown_8D1D388 +_080B88C8: .4byte gUnknown_8D1D224 +_080B88CC: .4byte gUnknown_8D1D360 +_080B88D0: .4byte gUnknown_2022978 +_080B88D4: .4byte gUnknown_202063C +_080B88D8: .4byte gUnknown_202297A +_080B88DC: .4byte gUnknown_2037F02 +_080B88E0: + lsls r0, r1, 4 + ldrh r3, [r2, 0x4] + movs r1, 0x10 + movs r2, 0xB + bl sub_8045274 +_080B88EC: + ldr r1, _080B8914 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + ldr r2, _080B8918 @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r0, 0xA] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xC] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0xE] + strh r6, [r0, 0x14] + ldr r1, _080B891C @ =sub_80B8920 + str r1, [r0] + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B8914: .4byte gUnknown_3005090 +_080B8918: .4byte gUnknown_2037F02 +_080B891C: .4byte sub_80B8920 + thumb_func_end sub_80B86EC + + thumb_func_start sub_80B8920 +sub_80B8920: @ 80B8920 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080B89E8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x1C] + adds r0, 0x4 + movs r5, 0 + strh r0, [r4, 0x1C] + ldr r2, _080B89EC @ =gUnknown_2022978 + ldrh r3, [r2] + subs r1, r3, 0x4 + strh r1, [r2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x80 + beq _080B894E + b _080B8A5E +_080B894E: + strh r5, [r4, 0x1C] + adds r0, r3, 0 + adds r0, 0x7C + strh r0, [r2] + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080B89FC + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080B89F0 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1, 0x5] + lsrs r0, 4 + adds r0, 0x10 + adds r1, r0, 0 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080B8990 + adds r0, r1, 0 + movs r1, 0x1 + bl sub_8075B48 +_080B8990: + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080B8A5E + ldr r2, _080B89F4 @ =gUnknown_2023D44 + ldr r0, _080B89F8 @ =gUnknown_2037F1A + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + adds r0, r2 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + b _080B8A5E + .align 2, 0 +_080B89E8: .4byte gUnknown_3005090 +_080B89EC: .4byte gUnknown_2022978 +_080B89F0: .4byte gUnknown_202063C +_080B89F4: .4byte gUnknown_2023D44 +_080B89F8: .4byte gUnknown_2037F1A +_080B89FC: + cmp r0, 0x3 + bne _080B8A5E + ldr r0, _080B8A68 @ =gUnknown_2022984 + strh r5, [r0] + ldr r0, _080B8A6C @ =gUnknown_2022986 + strh r5, [r0] + ldr r4, _080B8A70 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B8A2E + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080B8A2E: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r6, 0 + bl sub_8072760 +_080B8A5E: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8A68: .4byte gUnknown_2022984 +_080B8A6C: .4byte gUnknown_2022986 +_080B8A70: .4byte 0x00003f3f + thumb_func_end sub_80B8920 + + thumb_func_start sub_80B8A74 +sub_80B8A74: @ 80B8A74 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080B8A94 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r2, r0, 0 + cmp r1, 0x7 + bhi _080B8AD8 + lsls r0, r1, 2 + ldr r1, _080B8A98 @ =_080B8A9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B8A94: .4byte gUnknown_2037F02 +_080B8A98: .4byte _080B8A9C + .align 2, 0 +_080B8A9C: + .4byte _080B8ABC + .4byte _080B8ABC + .4byte _080B8ABC + .4byte _080B8ABC + .4byte _080B8AC8 + .4byte _080B8ACC + .4byte _080B8AD0 + .4byte _080B8AD4 +_080B8ABC: + ldrb r0, [r2] + bl sub_80749D4 + lsls r0, 24 + lsrs r2, r0, 24 + b _080B8ADA +_080B8AC8: + movs r4, 0 + b _080B8AE0 +_080B8ACC: + movs r4, 0x2 + b _080B8AE0 +_080B8AD0: + movs r4, 0x1 + b _080B8AE0 +_080B8AD4: + movs r4, 0x3 + b _080B8AE0 +_080B8AD8: + movs r2, 0xFF +_080B8ADA: + movs r0, 0 + cmp r0, 0 + beq _080B8B06 +_080B8AE0: + adds r0, r4, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B8B04 + ldr r0, _080B8B00 @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r2, [r0] + b _080B8B06 + .align 2, 0 +_080B8B00: .4byte gUnknown_2023D44 +_080B8B04: + movs r2, 0xFF +_080B8B06: + cmp r2, 0xFF + beq _080B8B22 + ldr r1, _080B8B30 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + ldr r1, _080B8B34 @ =gUnknown_2037F02 + ldrb r1, [r1, 0x2] + bl sub_8075B48 +_080B8B22: + adds r0, r5, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8B30: .4byte gUnknown_202063C +_080B8B34: .4byte gUnknown_2037F02 + thumb_func_end sub_80B8A74 + + thumb_func_start sub_80B8B38 +sub_80B8B38: @ 80B8B38 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080B8B64 @ =gUnknown_2037F16 + ldrb r0, [r2] + cmp r0, 0x1 + bhi _080B8B4C + ldr r1, _080B8B68 @ =gUnknown_2037F02 + movs r0, 0 + strh r0, [r1, 0xE] +_080B8B4C: + ldrb r0, [r2] + cmp r0, 0x2 + bne _080B8B58 + ldr r1, _080B8B68 @ =gUnknown_2037F02 + movs r0, 0x1 + strh r0, [r1, 0xE] +_080B8B58: + adds r0, r3, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080B8B64: .4byte gUnknown_2037F16 +_080B8B68: .4byte gUnknown_2037F02 + thumb_func_end sub_80B8B38 + + thumb_func_start sub_80B8B6C +sub_80B8B6C: @ 80B8B6C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B8BC4 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r5, _080B8BC8 @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080B8BCC @ =0x0000ffd8 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080B8BD0 @ =sub_80B8BD4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8BC4: .4byte gUnknown_2037F1A +_080B8BC8: .4byte gUnknown_2037F1B +_080B8BCC: .4byte 0x0000ffd8 +_080B8BD0: .4byte sub_80B8BD4 + thumb_func_end sub_80B8B6C + + thumb_func_start sub_80B8BD4 +sub_80B8BD4: @ 80B8BD4 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B8C28 + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + movs r0, 0x14 + strh r0, [r5, 0x2E] + ldr r4, _080B8C30 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + movs r0, 0x28 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080B8C34 @ =sub_80B8C38 + str r0, [r5, 0x1C] +_080B8C28: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8C30: .4byte gUnknown_2037F1A +_080B8C34: .4byte sub_80B8C38 + thumb_func_end sub_80B8BD4 + + thumb_func_start sub_80B8C38 +sub_80B8C38: @ 80B8C38 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B8C4C + adds r0, r4, 0 + bl sub_8072740 +_080B8C4C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B8C38 + + thumb_func_start sub_80B8C54 +sub_80B8C54: @ 80B8C54 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080B8CB4 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080B8C74 + ldr r1, _080B8CB8 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080B8C74: + ldr r4, _080B8CB8 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080B8CBC @ =gUnknown_2037F1B + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + ldr r0, _080B8CC0 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080B8CC4 @ =sub_8072740 + adds r0, r6, 0 + bl sub_8074A68 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8CB4: .4byte gUnknown_2037F1A +_080B8CB8: .4byte gUnknown_2037F02 +_080B8CBC: .4byte gUnknown_2037F1B +_080B8CC0: .4byte sub_8075590 +_080B8CC4: .4byte sub_8072740 + thumb_func_end sub_80B8C54 + + thumb_func_start sub_80B8CC8 +sub_80B8CC8: @ 80B8CC8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r4, _080B8D48 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074844 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8044EC8 + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + bl sub_8044EC8 + ands r4, r0 + adds r1, r5, 0 + cmp r1, 0x10 + ble _080B8D10 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 +_080B8D10: + lsls r0, r4, 16 + asrs r1, r0, 16 + cmp r1, 0x10 + ble _080B8D20 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080B8D20: + ldr r0, _080B8D4C @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r6, 0x2E] + mov r1, r8 + adds r0, r1, r5 + strh r0, [r6, 0x32] + adds r0, r7, r4 + strh r0, [r6, 0x36] + ldr r0, _080B8D50 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080B8D54 @ =sub_8074EE0 + adds r0, r6, 0 + bl sub_8074A68 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B8D48: .4byte gUnknown_2037F1B +_080B8D4C: .4byte gUnknown_2037F02 +_080B8D50: .4byte sub_8075590 +_080B8D54: .4byte sub_8074EE0 + thumb_func_end sub_80B8CC8 + + thumb_func_start sub_80B8D58 +sub_80B8D58: @ 80B8D58 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x1 + ldr r3, _080B8DB8 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080B8DBC @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r6, _080B8DC0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080B8DCC + ldr r4, _080B8DC4 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x2] + adds r0, r2 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r6, 0x4] + adds r0, r3 + strh r0, [r5, 0x22] + movs r1, 0x2 + ldrsh r0, [r6, r1] + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + ble _080B8DB2 + movs r1, 0x1 +_080B8DB2: + strh r1, [r5, 0x2E] + ldr r0, _080B8DC8 @ =sub_80B8DE8 + b _080B8DDA + .align 2, 0 +_080B8DB8: .4byte 0x000003ff +_080B8DBC: .4byte 0xfffffc00 +_080B8DC0: .4byte gUnknown_2037F02 +_080B8DC4: .4byte gUnknown_2037F1A +_080B8DC8: .4byte sub_80B8DE8 +_080B8DCC: + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x20] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x22] + negs r0, r0 + strh r0, [r5, 0x26] + ldr r0, _080B8DE4 @ =sub_80B8E24 +_080B8DDA: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8DE4: .4byte sub_80B8E24 + thumb_func_end sub_80B8D58 + + thumb_func_start sub_80B8DE8 +sub_80B8DE8: @ 80B8DE8 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B8E06 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] +_080B8E06: + ldrh r0, [r2, 0x22] + subs r0, 0x4 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x4 + negs r1, r1 + cmp r0, r1 + bge _080B8E1E + adds r0, r2, 0 + bl sub_8072740 +_080B8E1E: + pop {r0} + bx r0 + thumb_func_end sub_80B8DE8 + + thumb_func_start sub_80B8E24 +sub_80B8E24: @ 80B8E24 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080B8E36 + cmp r1, 0x1 + beq _080B8E4C + b _080B8E8E +_080B8E36: + ldrh r0, [r3, 0x26] + adds r0, 0x4 + strh r0, [r3, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080B8E8E + strh r1, [r3, 0x26] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080B8E8E +_080B8E4C: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + cmp r0, 0 + ble _080B8E8E + movs r0, 0 + strh r0, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080B8E8E + adds r0, r3, 0 + bl sub_8072740 +_080B8E8E: + pop {r0} + bx r0 + thumb_func_end sub_80B8E24 + + thumb_func_start sub_80B8E94 +sub_80B8E94: @ 80B8E94 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B8EB4 @ =gUnknown_3005090 + adds r1, r0, r1 + ldr r0, _080B8EB8 @ =gUnknown_2037F02 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080B8EC0 + ldr r0, _080B8EBC @ =sub_80B8ED4 + b _080B8EC2 + .align 2, 0 +_080B8EB4: .4byte gUnknown_3005090 +_080B8EB8: .4byte gUnknown_2037F02 +_080B8EBC: .4byte sub_80B8ED4 +_080B8EC0: + ldr r0, _080B8ED0 @ =sub_80B908C +_080B8EC2: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B8ED0: .4byte sub_80B908C + thumb_func_end sub_80B8E94 + + thumb_func_start sub_80B8ED4 +sub_80B8ED4: @ 80B8ED4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B8EF8 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080B8EEE + b _080B9082 +_080B8EEE: + lsls r0, 2 + ldr r1, _080B8EFC @ =_080B8F00 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B8EF8: .4byte gUnknown_3005090 +_080B8EFC: .4byte _080B8F00 + .align 2, 0 +_080B8F00: + .4byte _080B8F14 + .4byte _080B8F9C + .4byte _080B8FAC + .4byte _080B9050 + .4byte _080B9064 +_080B8F14: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080B8F3C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080B8F48 + ldr r0, _080B8F40 @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080B8F44 @ =gUnknown_202297A + b _080B8F50 + .align 2, 0 +_080B8F3C: .4byte gUnknown_2037F1A +_080B8F40: .4byte gUnknown_2022978 +_080B8F44: .4byte gUnknown_202297A +_080B8F48: + ldr r0, _080B8F8C @ =gUnknown_202297C + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080B8F90 @ =gUnknown_202297E +_080B8F50: + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080B8F94 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + cmp r1, 0 + bge _080B8F72 + movs r0, 0 + strh r0, [r4, 0x24] +_080B8F72: + ldr r2, _080B8F98 @ =gUnknown_202063C + movs r3, 0x1C + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _080B9056 + .align 2, 0 +_080B8F8C: .4byte gUnknown_202297C +_080B8F90: .4byte gUnknown_202297E +_080B8F94: .4byte gUnknown_2037F1A +_080B8F98: .4byte gUnknown_202063C +_080B8F9C: + ldrb r0, [r4, 0x1E] + movs r2, 0x24 + ldrsh r1, [r4, r2] + movs r3, 0x26 + ldrsh r2, [r4, r3] + bl sub_80B92B8 + b _080B9056 +_080B8FAC: + ldrh r0, [r4, 0xC] + adds r0, 0x6 + movs r1, 0x7F + ands r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080B8FCE + movs r0, 0 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080B8FCE: + ldr r1, _080B8FF0 @ =gUnknown_825E074 + movs r2, 0xC + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + ldrh r3, [r4, 0xE] + adds r2, r0, r3 + strh r2, [r4, 0x12] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080B8FF8 + ldr r1, _080B8FF4 @ =gUnknown_202297A + b _080B8FFA + .align 2, 0 +_080B8FF0: .4byte gUnknown_825E074 +_080B8FF4: .4byte gUnknown_202297A +_080B8FF8: + ldr r1, _080B901C @ =gUnknown_202297E +_080B8FFA: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x3F + ble _080B9082 + ldrh r0, [r4, 0x24] + movs r1, 0x78 + subs r2, r1, r0 + strh r2, [r4, 0x12] + movs r3, 0x1E + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080B9024 + ldr r1, _080B9020 @ =gUnknown_202297A + b _080B9026 + .align 2, 0 +_080B901C: .4byte gUnknown_202297E +_080B9020: .4byte gUnknown_202297A +_080B9024: + ldr r1, _080B9048 @ =gUnknown_202297E +_080B9026: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + ldr r2, _080B904C @ =gUnknown_202063C + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x20] + movs r3, 0x88 + lsls r3, 1 + adds r0, r3, 0 + subs r0, r2 + strh r0, [r1, 0x24] + b _080B9056 + .align 2, 0 +_080B9048: .4byte gUnknown_202297E +_080B904C: .4byte gUnknown_202063C +_080B9050: + ldr r1, _080B9060 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B9056: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B9082 + .align 2, 0 +_080B9060: .4byte gUnknown_2039600 +_080B9064: + adds r0, r2, 0 + bl sub_8072760 + ldr r2, _080B9088 @ =gUnknown_202063C + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080B9082: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9088: .4byte gUnknown_202063C + thumb_func_end sub_80B8ED4 + + thumb_func_start sub_80B908C +sub_80B908C: @ 80B908C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B90CC @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r3] + movs r4, 0 + strh r4, [r1, 0x24] + strh r4, [r1, 0x26] + ldr r0, _080B90D0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B90D8 + ldr r0, _080B90D4 @ =gUnknown_202297A + b _080B90DA + .align 2, 0 +_080B90CC: .4byte gUnknown_202063C +_080B90D0: .4byte gUnknown_2037F1A +_080B90D4: .4byte gUnknown_202297A +_080B90D8: + ldr r0, _080B90E8 @ =gUnknown_202297E +_080B90DA: + strh r4, [r0] + adds r0, r5, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B90E8: .4byte gUnknown_202297E + thumb_func_end sub_80B908C + + thumb_func_start sub_80B90EC +sub_80B90EC: @ 80B90EC + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B910C @ =gUnknown_3005090 + adds r1, r0, r1 + ldr r0, _080B9110 @ =gUnknown_2037F02 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080B9118 + ldr r0, _080B9114 @ =sub_80B912C + b _080B911A + .align 2, 0 +_080B910C: .4byte gUnknown_3005090 +_080B9110: .4byte gUnknown_2037F02 +_080B9114: .4byte sub_80B912C +_080B9118: + ldr r0, _080B9128 @ =sub_80B91B0 +_080B911A: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B9128: .4byte sub_80B91B0 + thumb_func_end sub_80B90EC + + thumb_func_start sub_80B912C +sub_80B912C: @ 80B912C + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B914C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0 + beq _080B9150 + cmp r5, 0x1 + beq _080B91A4 + b _080B91AA + .align 2, 0 +_080B914C: .4byte gUnknown_3005090 +_080B9150: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r3, _080B91A0 @ =gUnknown_202063C + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r5, [r0, 0x24] + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x22] + movs r0, 0xA0 + subs r0, r2 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B91AA + .align 2, 0 +_080B91A0: .4byte gUnknown_202063C +_080B91A4: + adds r0, r2, 0 + bl sub_8072760 +_080B91AA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B912C + + thumb_func_start sub_80B91B0 +sub_80B91B0: @ 80B91B0 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B91D4 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _080B92B2 + lsls r0, 2 + ldr r1, _080B91D8 @ =_080B91DC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B91D4: .4byte gUnknown_3005090 +_080B91D8: .4byte _080B91DC + .align 2, 0 +_080B91DC: + .4byte _080B91F0 + .4byte _080B9244 + .4byte _080B9252 + .4byte _080B926C + .4byte _080B92AC +_080B91F0: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080B9214 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080B921C + ldr r0, _080B9218 @ =gUnknown_2022978 + b _080B921E + .align 2, 0 +_080B9214: .4byte gUnknown_2037F1A +_080B9218: .4byte gUnknown_2022978 +_080B921C: + ldr r0, _080B923C @ =gUnknown_202297C +_080B921E: + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080B9240 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + b _080B929A + .align 2, 0 +_080B923C: .4byte gUnknown_202297C +_080B9240: .4byte gUnknown_2037F1A +_080B9244: + ldrb r0, [r4, 0x1E] + movs r1, 0x26 + ldrsh r2, [r4, r1] + movs r1, 0 + bl sub_80B92B8 + b _080B929A +_080B9252: + ldr r2, _080B9268 @ =gUnknown_202063C + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x60 + strh r1, [r0, 0x26] + b _080B929A + .align 2, 0 +_080B9268: .4byte gUnknown_202063C +_080B926C: + ldr r2, _080B92A4 @ =gUnknown_202063C + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x8 + strh r1, [r0, 0x26] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x26 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B92B2 + ldr r1, _080B92A8 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B929A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B92B2 + .align 2, 0 +_080B92A4: .4byte gUnknown_202063C +_080B92A8: .4byte gUnknown_2039600 +_080B92AC: + adds r0, r2, 0 + bl sub_8072760 +_080B92B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B91B0 + + thumb_func_start sub_80B92B8 +sub_80B92B8: @ 80B92B8 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + cmp r0, 0x1 + bne _080B92DC + ldr r0, _080B92D4 @ =gUnknown_2022978 + ldrh r3, [r0] + ldr r0, _080B92D8 @ =0x04000014 + b _080B92E2 + .align 2, 0 +_080B92D4: .4byte gUnknown_2022978 +_080B92D8: .4byte 0x04000014 +_080B92DC: + ldr r0, _080B9368 @ =gUnknown_202297C + ldrh r3, [r0] + ldr r0, _080B936C @ =0x04000018 +_080B92E2: + str r0, [sp] + lsls r0, r1, 16 + cmp r0, 0 + bge _080B92EC + movs r1, 0 +_080B92EC: + lsls r2, r1, 16 + lsls r0, r4, 16 + asrs r4, r0, 16 + cmp r2, r0 + bge _080B9318 + ldr r5, _080B9370 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080B92FE: + asrs r2, 16 + lsls r1, r2, 1 + adds r0, r1, r5 + strh r3, [r0] + adds r1, r6 + strh r3, [r1] + adds r2, 0x1 + lsls r2, 16 + lsrs r1, r2, 16 + lsls r2, r1, 16 + asrs r0, r2, 16 + cmp r0, r4 + blt _080B92FE +_080B9318: + lsls r1, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080B9346 + ldr r4, _080B9370 @ =gUnknown_2038700 + lsls r0, r3, 16 + asrs r0, 16 + adds r3, r0, 0 + adds r3, 0xF0 + movs r0, 0xF0 + lsls r0, 3 + adds r5, r4, r0 +_080B9330: + asrs r2, r1, 16 + lsls r1, r2, 1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + adds r2, 0x1 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080B9330 +_080B9346: + ldr r0, _080B9374 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9368: .4byte gUnknown_202297C +_080B936C: .4byte 0x04000018 +_080B9370: .4byte gUnknown_2038700 +_080B9374: .4byte 0xa2600001 + thumb_func_end sub_80B92B8 + + thumb_func_start sub_80B9378 +sub_80B9378: @ 80B9378 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080B938C @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r7, r0, 0 + cmp r1, 0 + bne _080B9394 + ldr r0, _080B9390 @ =gUnknown_2037F1A + b _080B9396 + .align 2, 0 +_080B938C: .4byte gUnknown_2037F02 +_080B9390: .4byte gUnknown_2037F1A +_080B9394: + ldr r0, _080B93F8 @ =gUnknown_2037F1B +_080B9396: + ldrb r4, [r0] + movs r6, 0x18 + adds r1, r7, 0 + movs r2, 0x2 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080B93B2 + negs r0, r6 + lsls r0, 16 + lsrs r6, r0, 16 + movs r2, 0x4 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x4] +_080B93B2: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + adds r0, r4, 0 + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1E + strh r0, [r5, 0x22] + ldrh r1, [r7, 0xA] + strh r1, [r5, 0x2E] + ldrh r1, [r7, 0x4] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x32] + ldrh r1, [r7, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080B93FC @ =sub_80B9400 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B93F8: .4byte gUnknown_2037F1B +_080B93FC: .4byte sub_80B9400 + thumb_func_end sub_80B9378 + + thumb_func_start sub_80B9400 +sub_80B9400: @ 80B9400 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080B9414 + adds r0, r4, 0 + bl sub_8072740 +_080B9414: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B9400 + + thumb_func_start sub_80B941C +sub_80B941C: @ 80B941C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080B9430 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B9438 + ldr r0, _080B9434 @ =gUnknown_2037F1A + b _080B943A + .align 2, 0 +_080B9430: .4byte gUnknown_2037F02 +_080B9434: .4byte gUnknown_2037F1A +_080B9438: + ldr r0, _080B9498 @ =gUnknown_2037F1B +_080B943A: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B949C @ =0x0000fff0 + adds r0, r2 + ldr r4, _080B94A0 @ =gUnknown_2037F02 + movs r3, 0x2 + ldrsh r1, [r4, r3] + lsls r1, 5 + adds r0, r1 + strh r0, [r6, 0x20] + adds r0, r5, 0 + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r6, 0x22] + ldrh r2, [r6, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x2 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r1, r0 + ldr r3, _080B94A4 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080B94A8 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080B94AC @ =sub_8072740 + adds r0, r6, 0 + bl sub_8074A68 + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x2E] + ldr r0, _080B94B0 @ =sub_8074C44 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9498: .4byte gUnknown_2037F1B +_080B949C: .4byte 0x0000fff0 +_080B94A0: .4byte gUnknown_2037F02 +_080B94A4: .4byte 0x000003ff +_080B94A8: .4byte 0xfffffc00 +_080B94AC: .4byte sub_8072740 +_080B94B0: .4byte sub_8074C44 + thumb_func_end sub_80B941C + + thumb_func_start sub_80B94B4 +sub_80B94B4: @ 80B94B4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B94D8 @ =gUnknown_3005090 + adds r4, r0, r1 + ldr r0, _080B94DC @ =gUnknown_2037F02 + ldrh r2, [r0, 0x2] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r6, r0, 0 + cmp r1, 0 + beq _080B94E0 + adds r0, r2, 0x3 + b _080B94EC + .align 2, 0 +_080B94D8: .4byte gUnknown_3005090 +_080B94DC: .4byte gUnknown_2037F02 +_080B94E0: + ldr r0, _080B950C @ =gUnknown_2037EEC + ldrh r0, [r0] + movs r1, 0xA + bl __udivsi3 + adds r0, 0x3 +_080B94EC: + strh r0, [r4, 0x26] + strh r0, [r4, 0x24] + adds r1, r6, 0 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xE] + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _080B9518 + cmp r0, 0x5 + bne _080B9558 + ldr r0, _080B9510 @ =gUnknown_2022980 + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080B9514 @ =sub_80B9584 + b _080B9576 + .align 2, 0 +_080B950C: .4byte gUnknown_2037EEC +_080B9510: .4byte gUnknown_2022980 +_080B9514: .4byte sub_80B9584 +_080B9518: + movs r0, 0 + strh r0, [r4, 0x22] + movs r5, 0 +_080B951E: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B9548 + movs r3, 0x22 + ldrsh r0, [r4, r3] + adds r0, 0x9 + lsls r0, 1 + adds r1, r4, 0 + adds r1, 0x8 + adds r1, r0 + ldr r0, _080B9554 @ =gUnknown_2023D44 + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r1] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080B9548: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _080B951E + b _080B9574 + .align 2, 0 +_080B9554: .4byte gUnknown_2023D44 +_080B9558: + ldrb r0, [r6] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + cmp r0, 0xFF + bne _080B9570 + adds r0, r5, 0 + bl sub_8072760 + b _080B9578 +_080B9570: + movs r0, 0x1 + strh r0, [r4, 0x22] +_080B9574: + ldr r0, _080B9580 @ =sub_80B967C +_080B9576: + str r0, [r4] +_080B9578: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9580: .4byte sub_80B967C + thumb_func_end sub_80B94B4 + + thumb_func_start sub_80B9584 +sub_80B9584: @ 80B9584 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B95A8 @ =gUnknown_3005090 + adds r3, r0, r1 + movs r0, 0x8 + ldrsh r1, [r3, r0] + cmp r1, 0x1 + beq _080B9608 + cmp r1, 0x1 + bgt _080B95AC + cmp r1, 0 + beq _080B95B2 + b _080B9674 + .align 2, 0 +_080B95A8: .4byte gUnknown_3005090 +_080B95AC: + cmp r1, 0x2 + beq _080B9668 + b _080B9674 +_080B95B2: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9674 + strh r1, [r3, 0xA] + ldrh r1, [r3, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080B95DC + ldr r1, _080B95D8 @ =gUnknown_2022980 + ldrh r0, [r3, 0x26] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080B95E6 + .align 2, 0 +_080B95D8: .4byte gUnknown_2022980 +_080B95DC: + ldr r0, _080B9604 @ =gUnknown_2022980 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x26] + subs r1, r2 + strh r1, [r0] +_080B95E6: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r3, r2] + cmp r0, r1 + bne _080B9674 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + b _080B965C + .align 2, 0 +_080B9604: .4byte gUnknown_2022980 +_080B9608: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9674 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r0, [r3, 0xC] + ands r1, r0 + cmp r1, 0 + bne _080B9634 + ldr r1, _080B9630 @ =gUnknown_2022980 + ldrh r0, [r3, 0x24] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080B963E + .align 2, 0 +_080B9630: .4byte gUnknown_2022980 +_080B9634: + ldr r0, _080B9664 @ =gUnknown_2022980 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x24] + subs r1, r2 + strh r1, [r0] +_080B963E: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B9674 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080B9674 +_080B965C: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080B9674 + .align 2, 0 +_080B9664: .4byte gUnknown_2022980 +_080B9668: + ldr r1, _080B9678 @ =gUnknown_2022980 + ldrh r0, [r3, 0x22] + strh r0, [r1] + adds r0, r2, 0 + bl sub_8072760 +_080B9674: + pop {r0} + bx r0 + .align 2, 0 +_080B9678: .4byte gUnknown_2022980 + thumb_func_end sub_80B9584 + + thumb_func_start sub_80B967C +sub_80B967C: @ 80B967C + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080B96A0 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080B96DC + cmp r5, 0x1 + bgt _080B96A4 + cmp r5, 0 + beq _080B96AA + b _080B9756 + .align 2, 0 +_080B96A0: .4byte gUnknown_3005090 +_080B96A4: + cmp r5, 0x2 + beq _080B9718 + b _080B9756 +_080B96AA: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9756 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80B9760 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080B9756 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + b _080B9710 +_080B96DC: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9756 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80B9760 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B9756 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080B9756 +_080B9710: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B9756 +_080B9718: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r4, r7] + cmp r2, r0 + bge _080B9750 + ldr r0, _080B975C @ =gUnknown_202063C + mov r12, r0 + adds r5, r4, 0 + adds r5, 0x8 + movs r6, 0 +_080B972C: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r12 + strh r6, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080B972C +_080B9750: + adds r0, r3, 0 + bl sub_8072760 +_080B9756: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B975C: .4byte gUnknown_202063C + thumb_func_end sub_80B967C + + thumb_func_start sub_80B9760 +sub_80B9760: @ 80B9760 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0xC] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080B9788 + movs r0, 0x24 + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r2, [r3, 0x24] + adds r0, r4, 0 + ands r0, r2 + adds r1, r0 + lsls r1, 16 + lsrs r4, r1, 16 + b _080B9798 +_080B9788: + movs r1, 0x24 + ldrsh r0, [r3, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + negs r0, r0 + lsls r0, 16 + lsrs r4, r0, 16 +_080B9798: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r3, r7] + cmp r2, r0 + bge _080B97CC + ldr r6, _080B97D4 @ =gUnknown_202063C + adds r5, r3, 0 + adds r5, 0x8 +_080B97A8: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r4, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r3, r1] + cmp r2, r0 + blt _080B97A8 +_080B97CC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B97D4: .4byte gUnknown_202063C + thumb_func_end sub_80B9760 + + thumb_func_start sub_80B97D8 +sub_80B97D8: @ 80B97D8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r3, _080B97F8 @ =gUnknown_2037F02 + movs r2, 0 + ldr r0, _080B97FC @ =gUnknown_2037EEC + ldrh r0, [r0] + cmp r0, 0x63 + bls _080B97EC + movs r2, 0x1 +_080B97EC: + strh r2, [r3, 0x1E] + adds r0, r1, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080B97F8: .4byte gUnknown_2037F02 +_080B97FC: .4byte gUnknown_2037EEC + thumb_func_end sub_80B97D8 + + thumb_func_start sub_80B9800 +sub_80B9800: @ 80B9800 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _080B9818 @ =gUnknown_2037F02 + ldrh r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _080B9820 + ldr r0, _080B981C @ =gUnknown_2037F1B + b _080B9822 + .align 2, 0 +_080B9818: .4byte gUnknown_2037F02 +_080B981C: .4byte gUnknown_2037F1B +_080B9820: + ldr r0, _080B9890 @ =gUnknown_2037F1A +_080B9822: + ldrb r0, [r0] + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + ble _080B9832 + movs r0, 0x2 + eors r5, r0 +_080B9832: + ldr r0, _080B9894 @ =sub_80B98A8 + ldrb r1, [r6, 0x2] + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080B9898 @ =gUnknown_3005090 + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x20 + subs r1, r0 + ldr r2, _080B989C @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + strh r1, [r4, 0xA] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x40 + subs r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r4, 0xC] + ldr r2, _080B98A0 @ =gUnknown_2022980 + ldrh r0, [r4, 0xA] + strh r0, [r2] + ldr r0, _080B98A4 @ =gUnknown_2022982 + strh r1, [r0] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0xE] + adds r0, r7, 0 + bl sub_8072760 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9890: .4byte gUnknown_2037F1A +_080B9894: .4byte sub_80B98A8 +_080B9898: .4byte gUnknown_3005090 +_080B989C: .4byte 0x000001ff +_080B98A0: .4byte gUnknown_2022980 +_080B98A4: .4byte gUnknown_2022982 + thumb_func_end sub_80B9800 + + thumb_func_start sub_80B98A8 +sub_80B98A8: @ 80B98A8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080B98D8 @ =gUnknown_3005090 + adds r2, r0, r1 + ldr r0, _080B98DC @ =gUnknown_2037F02 + movs r4, 0xE + ldrsh r1, [r0, r4] + movs r4, 0xE + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _080B98E8 + ldr r0, _080B98E0 @ =gUnknown_2022980 + movs r1, 0 + strh r1, [r0] + ldr r0, _080B98E4 @ =gUnknown_2022982 + strh r1, [r0] + adds r0, r3, 0 + bl sub_8077508 + b _080B98F4 + .align 2, 0 +_080B98D8: .4byte gUnknown_3005090 +_080B98DC: .4byte gUnknown_2037F02 +_080B98E0: .4byte gUnknown_2022980 +_080B98E4: .4byte gUnknown_2022982 +_080B98E8: + ldr r1, _080B98FC @ =gUnknown_2022980 + ldrh r0, [r2, 0xA] + strh r0, [r1] + ldr r1, _080B9900 @ =gUnknown_2022982 + ldrh r0, [r2, 0xC] + strh r0, [r1] +_080B98F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B98FC: .4byte gUnknown_2022980 +_080B9900: .4byte gUnknown_2022982 + thumb_func_end sub_80B98A8 + + thumb_func_start sub_80B9904 +sub_80B9904: @ 80B9904 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B993C @ =gUnknown_2037F02 + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080B9940 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080B9944 + ldrh r0, [r5, 0x6] + negs r0, r0 + strh r0, [r4, 0x30] + movs r0, 0x1 + strh r0, [r4, 0x36] + b _080B9952 + .align 2, 0 +_080B993C: .4byte gUnknown_2037F02 +_080B9940: .4byte gUnknown_2037F1A +_080B9944: + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + strh r1, [r4, 0x36] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C +_080B9952: + ldr r0, _080B9968 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x8] + strh r0, [r4, 0x34] + ldr r1, _080B996C @ =sub_80B9970 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9968: .4byte gUnknown_2037F02 +_080B996C: .4byte sub_80B9970 + thumb_func_end sub_80B9904 + + thumb_func_start sub_80B9970 +sub_80B9970: @ 80B9970 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x1E + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0xA + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + cmp r0, 0x7F + bhi _080B99A2 + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080B99AA +_080B99A2: + ldrb r0, [r4, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r4, 0x5] +_080B99AA: + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080B99CE + adds r0, r4, 0 + bl sub_8072740 +_080B99CE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B9970 + + thumb_func_start sub_80B99D4 +sub_80B99D4: @ 80B99D4 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldr r4, _080B9A0C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r4, r1] + bl sub_80B9A14 + movs r1, 0x2 + ldrsb r1, [r4, r1] + ldrb r2, [r4, 0x4] + ldrb r3, [r4, 0x6] + ldrh r4, [r4, 0x8] + str r4, [sp] + bl sub_8070588 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B9A10 @ =sub_80B9A5C + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9A0C: .4byte gUnknown_2037F02 +_080B9A10: .4byte sub_80B9A5C + thumb_func_end sub_80B99D4 + + thumb_func_start sub_80B9A14 +sub_80B9A14: @ 80B9A14 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + lsls r0, 16 + lsrs r0, 16 + movs r4, 0x1 + mov r8, r0 + mov r1, r8 + ands r1, r4 + mov r8, r1 + lsls r0, 16 + asrs r1, r0, 17 + ands r1, r4 + asrs r2, r0, 18 + ands r2, r4 + asrs r3, r0, 19 + ands r3, r4 + asrs r6, r0, 20 + ands r6, r4 + asrs r5, r0, 21 + ands r5, r4 + asrs r0, 22 + ands r0, r4 + str r6, [sp] + str r5, [sp, 0x4] + str r0, [sp, 0x8] + mov r0, r8 + bl sub_8075BE8 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80B9A14 + + thumb_func_start sub_80B9A5C +sub_80B9A5C: @ 80B9A5C + push {lr} + adds r2, r0, 0 + ldr r0, _080B9A78 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B9A72 + adds r0, r2, 0 + bl sub_8072740 +_080B9A72: + pop {r0} + bx r0 + .align 2, 0 +_080B9A78: .4byte gUnknown_2037AB8 + thumb_func_end sub_80B9A5C + + thumb_func_start sub_80B9A7C +sub_80B9A7C: @ 80B9A7C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B9AC8 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x2E] + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x34] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0x38] + ldrh r0, [r4, 0xC] + strh r0, [r5, 0x3A] + ldrh r0, [r4] + strh r0, [r5, 0x3C] + movs r1, 0x3C + ldrsh r0, [r5, r1] + bl sub_80B9A14 + ldrb r1, [r4, 0x8] + ldrh r2, [r4, 0x6] + bl sub_80714D4 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080B9ACC @ =sub_80B9AD0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9AC8: .4byte gUnknown_2037F02 +_080B9ACC: .4byte sub_80B9AD0 + thumb_func_end sub_80B9A7C + + thumb_func_start sub_80B9AD0 +sub_80B9AD0: @ 80B9AD0 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080B9AE4 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _080B9B54 +_080B9AE4: + ldr r0, _080B9B00 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B9B54 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B9B08 + ldr r0, _080B9B04 @ =sub_80B9B5C + str r0, [r4, 0x1C] + b _080B9B54 + .align 2, 0 +_080B9B00: .4byte gUnknown_2037AB8 +_080B9B04: .4byte sub_80B9B5C +_080B9B08: + movs r2, 0x3C + ldrsh r0, [r4, r2] + bl sub_80B9A14 + adds r3, r0, 0 + ldrh r1, [r4, 0x30] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080B9B2E + ldrh r1, [r4, 0x36] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x34] + adds r0, r3, 0 + bl sub_80714D4 + b _080B9B3C +_080B9B2E: + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x38] + adds r0, r3, 0 + bl sub_80714D4 +_080B9B3C: + ldrh r0, [r4, 0x30] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + eors r0, r1 + strh r0, [r4, 0x30] + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x32] + subs r0, 0x1 + strh r0, [r4, 0x32] +_080B9B54: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B9AD0 + + thumb_func_start sub_80B9B5C +sub_80B9B5C: @ 80B9B5C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B9B88 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B9B82 + movs r1, 0x3C + ldrsh r0, [r4, r1] + bl sub_80B9A14 + movs r1, 0 + movs r2, 0 + bl sub_80714D4 + adds r0, r4, 0 + bl sub_8072740 +_080B9B82: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9B88: .4byte gUnknown_2037AB8 + thumb_func_end sub_80B9B5C + + thumb_func_start sub_80B9B8C +sub_80B9B8C: @ 80B9B8C + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080B9BD0 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r2, [r4, 0x2E] + movs r0, 0xA + strh r0, [r4, 0x30] + movs r0, 0x8 + strh r0, [r4, 0x32] + movs r0, 0x28 + strh r0, [r4, 0x34] + movs r0, 0x70 + strh r0, [r4, 0x36] + strh r2, [r4, 0x38] + ldr r1, _080B9BD4 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r1, _080B9BD8 @ =sub_8074AE0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9BD0: .4byte gUnknown_2037F02 +_080B9BD4: .4byte sub_8074EE0 +_080B9BD8: .4byte sub_8074AE0 + thumb_func_end sub_80B9B8C + + thumb_func_start sub_80B9BDC +sub_80B9BDC: @ 80B9BDC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B9C20 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r3, _080B9C24 @ =gUnknown_2037F02 + ldrh r1, [r3] + movs r5, 0 + strh r1, [r4, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r4, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r4, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r4, 0xE] + ldrh r2, [r3, 0x8] + strh r2, [r4, 0x10] + ldrh r1, [r3, 0xA] + strh r1, [r4, 0x12] + strh r5, [r4, 0x18] + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + bl sub_80B9C2C + ldr r0, _080B9C28 @ =sub_80B9C7C + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9C20: .4byte gUnknown_3005090 +_080B9C24: .4byte gUnknown_2037F02 +_080B9C28: .4byte sub_80B9C7C + thumb_func_end sub_80B9BDC + + thumb_func_start sub_80B9C2C +sub_80B9C2C: @ 80B9C2C + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r1, _080B9C78 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + bl sub_80B9A14 + movs r1, 0xA + ldrsb r1, [r4, r1] + ldrh r2, [r4, 0x12] + str r2, [sp] + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8070588 + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x18] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x18] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9C78: .4byte gUnknown_3005090 + thumb_func_end sub_80B9C2C + + thumb_func_start sub_80B9C7C +sub_80B9C7C: @ 80B9C7C + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, r3, 0 + ldr r0, _080B9CB4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B9CDE + ldr r1, _080B9CB8 @ =gUnknown_3005090 + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0xC + ldrsh r0, [r3, r5] + adds r6, r1, 0 + adds r5, r2, 0 + cmp r0, 0 + ble _080B9CD8 + movs r1, 0x18 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080B9CBC + ldrb r1, [r3, 0xE] + ldrb r2, [r3, 0x10] + b _080B9CC0 + .align 2, 0 +_080B9CB4: .4byte gUnknown_2037AB8 +_080B9CB8: .4byte gUnknown_3005090 +_080B9CBC: + ldrb r1, [r3, 0x10] + ldrb r2, [r3, 0xE] +_080B9CC0: + adds r0, r5, r4 + lsls r0, 3 + adds r0, r6 + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0x1 + bne _080B9CD0 + movs r2, 0 +_080B9CD0: + adds r0, r4, 0 + bl sub_80B9C2C + b _080B9CDE +_080B9CD8: + adds r0, r4, 0 + bl sub_8072760 +_080B9CDE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B9C7C + + thumb_func_start sub_80B9CE4 +sub_80B9CE4: @ 80B9CE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r3, _080B9D88 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r3 + ldr r2, _080B9D8C @ =gUnknown_2037F02 + ldrh r1, [r2] + strh r1, [r0, 0x8] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xA] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0xC] + ldrh r1, [r2, 0x6] + strh r1, [r0, 0xE] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0x10] + ldrh r1, [r2, 0xA] + strh r1, [r0, 0x12] + strh r5, [r0, 0x18] + movs r4, 0 + ldr r0, _080B9D90 @ =gUnknown_2023BCC + ldrb r1, [r0] + mov r9, r3 + mov r8, r2 + cmp r5, r1 + bge _080B9D4C + ldr r0, _080B9D94 @ =gUnknown_2037F1A + ldrb r3, [r0] + ldr r7, _080B9D98 @ =gUnknown_2037F1B + movs r0, 0x1 + mov r12, r0 + adds r2, r1, 0 +_080B9D32: + cmp r4, r3 + beq _080B9D46 + ldrb r1, [r7] + cmp r4, r1 + beq _080B9D46 + adds r1, r4, 0 + adds r1, 0x10 + mov r0, r12 + lsls r0, r1 + orrs r5, r0 +_080B9D46: + adds r4, 0x1 + cmp r4, r2 + blt _080B9D32 +_080B9D4C: + mov r2, r8 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bne _080B9D5A + movs r0, 0xE + orrs r5, r0 +_080B9D5A: + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + add r4, r9 + lsrs r0, r5, 16 + strh r0, [r4, 0x1A] + movs r0, 0xFF + ands r5, r0 + strh r5, [r4, 0x1C] + ldrb r2, [r4, 0x10] + adds r0, r6, 0 + movs r1, 0 + bl sub_80B9DA0 + ldr r0, _080B9D9C @ =sub_80B9DF0 + str r0, [r4] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9D88: .4byte gUnknown_3005090 +_080B9D8C: .4byte gUnknown_2037F02 +_080B9D90: .4byte gUnknown_2023BCC +_080B9D94: .4byte gUnknown_2037F1A +_080B9D98: .4byte gUnknown_2037F1B +_080B9D9C: .4byte sub_80B9DF0 + thumb_func_end sub_80B9CE4 + + thumb_func_start sub_80B9DA0 +sub_80B9DA0: @ 80B9DA0 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r3, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _080B9DEC @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldrh r0, [r4, 0x1A] + lsls r0, 16 + ldrh r1, [r4, 0x1C] + orrs r0, r1 + movs r1, 0xA + ldrsb r1, [r4, r1] + ldrh r2, [r4, 0x12] + str r2, [sp] + adds r2, r5, 0 + bl sub_8070588 + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x18] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x18] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9DEC: .4byte gUnknown_3005090 + thumb_func_end sub_80B9DA0 + + thumb_func_start sub_80B9DF0 +sub_80B9DF0: @ 80B9DF0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, r3, 0 + ldr r0, _080B9E28 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B9E52 + ldr r1, _080B9E2C @ =gUnknown_3005090 + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0xC + ldrsh r0, [r3, r5] + adds r6, r1, 0 + adds r5, r2, 0 + cmp r0, 0 + ble _080B9E4C + movs r1, 0x18 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080B9E30 + ldrb r1, [r3, 0xE] + ldrb r2, [r3, 0x10] + b _080B9E34 + .align 2, 0 +_080B9E28: .4byte gUnknown_2037AB8 +_080B9E2C: .4byte gUnknown_3005090 +_080B9E30: + ldrb r1, [r3, 0x10] + ldrb r2, [r3, 0xE] +_080B9E34: + adds r0, r5, r4 + lsls r0, 3 + adds r0, r6 + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0x1 + bne _080B9E44 + movs r2, 0 +_080B9E44: + adds r0, r4, 0 + bl sub_80B9DA0 + b _080B9E52 +_080B9E4C: + adds r0, r4, 0 + bl sub_8072760 +_080B9E52: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B9DF0 + + thumb_func_start sub_80B9E58 +sub_80B9E58: @ 80B9E58 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B9E9C @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r3, _080B9EA0 @ =gUnknown_2037F02 + ldrh r1, [r3] + movs r5, 0 + strh r1, [r4, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r4, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r4, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r4, 0xE] + ldrh r2, [r3, 0x8] + strh r2, [r4, 0x10] + ldrh r1, [r3, 0xA] + strh r1, [r4, 0x12] + strh r5, [r4, 0x18] + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + bl sub_80B9EA8 + ldr r0, _080B9EA4 @ =sub_80B9F04 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9E9C: .4byte gUnknown_3005090 +_080B9EA0: .4byte gUnknown_2037F02 +_080B9EA4: .4byte sub_80B9F04 + thumb_func_end sub_80B9E58 + + thumb_func_start sub_80B9EA8 +sub_80B9EA8: @ 80B9EA8 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r1, _080B9F00 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldrh r0, [r4, 0x8] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r2, 0x1 + lsls r2, r0 + movs r1, 0xA + ldrsb r1, [r4, r1] + ldrh r0, [r4, 0x12] + str r0, [sp] + adds r0, r2, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8070588 + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x18] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x18] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9F00: .4byte gUnknown_3005090 + thumb_func_end sub_80B9EA8 + + thumb_func_start sub_80B9F04 +sub_80B9F04: @ 80B9F04 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, r3, 0 + ldr r0, _080B9F3C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B9F66 + ldr r1, _080B9F40 @ =gUnknown_3005090 + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0xC + ldrsh r0, [r3, r5] + adds r6, r1, 0 + adds r5, r2, 0 + cmp r0, 0 + ble _080B9F60 + movs r1, 0x18 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080B9F44 + ldrb r1, [r3, 0xE] + ldrb r2, [r3, 0x10] + b _080B9F48 + .align 2, 0 +_080B9F3C: .4byte gUnknown_2037AB8 +_080B9F40: .4byte gUnknown_3005090 +_080B9F44: + ldrb r1, [r3, 0x10] + ldrb r2, [r3, 0xE] +_080B9F48: + adds r0, r5, r4 + lsls r0, 3 + adds r0, r6 + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0x1 + bne _080B9F58 + movs r2, 0 +_080B9F58: + adds r0, r4, 0 + bl sub_80B9EA8 + b _080B9F66 +_080B9F60: + adds r0, r4, 0 + bl sub_8072760 +_080B9F66: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B9F04 + + thumb_func_start sub_80B9F6C +sub_80B9F6C: @ 80B9F6C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B9FCC @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r5, _080B9FD0 @ =gUnknown_2037F02 + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x8] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0xE] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x10] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x12] + ldrh r0, [r5, 0xC] + strh r0, [r4, 0x14] + ldrh r0, [r5] + strh r0, [r4, 0x16] + ldrh r0, [r5] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + ldrb r3, [r5, 0x8] + ldrh r0, [r5, 0x6] + str r0, [sp] + adds r0, r1, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8070588 + ldr r0, _080B9FD4 @ =sub_80B9FD8 + str r0, [r4] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9FCC: .4byte gUnknown_3005090 +_080B9FD0: .4byte gUnknown_2037F02 +_080B9FD4: .4byte sub_80B9FD8 + thumb_func_end sub_80B9F6C + + thumb_func_start sub_80B9FD8 +sub_80B9FD8: @ 80B9FD8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080B9FFC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x8] + movs r2, 0x8 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080BA000 + subs r0, r1, 0x1 + strh r0, [r4, 0x8] + b _080BA084 + .align 2, 0 +_080B9FFC: .4byte gUnknown_3005090 +_080BA000: + ldr r0, _080BA01C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080BA084 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080BA024 + ldr r0, _080BA020 @ =sub_80BA090 + str r0, [r4] + b _080BA084 + .align 2, 0 +_080BA01C: .4byte gUnknown_2037AB8 +_080BA020: .4byte sub_80BA090 +_080BA024: + ldrh r0, [r4, 0x16] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r2, 0x1 + lsls r2, r0 + ldrh r1, [r4, 0xA] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080BA052 + ldrb r3, [r4, 0x10] + ldrh r0, [r4, 0xE] + str r0, [sp] + adds r0, r2, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8070588 + b _080BA062 +_080BA052: + ldrb r3, [r4, 0x14] + ldrh r0, [r4, 0x12] + str r0, [sp] + adds r0, r2, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8070588 +_080BA062: + ldr r0, _080BA08C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xA] + movs r3, 0x80 + lsls r3, 1 + adds r2, r3, 0 + eors r0, r2 + strh r0, [r1, 0xA] + movs r2, 0xFF + ands r0, r2 + strh r0, [r1, 0x8] + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] +_080BA084: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA08C: .4byte gUnknown_3005090 + thumb_func_end sub_80B9FD8 + + thumb_func_start sub_80BA090 +sub_80BA090: @ 80BA090 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BA0E0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080BA0D6 + ldr r1, _080BA0E4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x16] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + str r5, [sp] + adds r0, r1, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8070588 + adds r0, r4, 0 + bl sub_8072760 +_080BA0D6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA0E0: .4byte gUnknown_2037AB8 +_080BA0E4: .4byte gUnknown_3005090 + thumb_func_end sub_80BA090 + + thumb_func_start sub_80BA0E8 +sub_80BA0E8: @ 80BA0E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r2, 0 + ldr r0, _080BA160 @ =gUnknown_2037F1A + ldrb r6, [r0] + ldr r0, _080BA164 @ =gUnknown_2037F1B + ldrb r7, [r0] + ldr r4, _080BA168 @ =gUnknown_2037F02 + ldrh r1, [r4] + movs r5, 0x80 + lsls r5, 1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA122 + str r2, [sp] + str r2, [sp, 0x4] + str r2, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r3, 0 + bl sub_8075BE8 + adds r2, r0, 0 +_080BA122: + ldrh r1, [r4, 0x2] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA134 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r6 + orrs r2, r0 +_080BA134: + ldrh r1, [r4, 0x4] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA146 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r7 + orrs r2, r0 +_080BA146: + adds r0, r2, 0 + bl sub_8070CCC + mov r0, r8 + bl sub_8072760 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BA160: .4byte gUnknown_2037F1A +_080BA164: .4byte gUnknown_2037F1B +_080BA168: .4byte gUnknown_2037F02 + thumb_func_end sub_80BA0E8 + + thumb_func_start sub_80BA16C +sub_80BA16C: @ 80BA16C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + ldr r1, _080BA260 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080BA1AE + ldr r1, _080BA264 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0xC] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xE] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x10] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0xA] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x12] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x14] + ldrh r0, [r1, 0xC] + strh r0, [r4, 0x16] +_080BA1AE: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldr r0, _080BA268 @ =gUnknown_2037F1A + ldrb r0, [r0] + mov r9, r0 + ldr r0, _080BA26C @ =gUnknown_2037F1B + ldrb r0, [r0] + mov r10, r0 + ldrh r1, [r4, 0xC] + movs r7, 0x80 + lsls r7, 1 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA1D0 + ldr r5, _080BA270 @ =0x0000ffff +_080BA1D0: + movs r6, 0x1 + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA200 + ldr r2, _080BA274 @ =gUnknown_202063C + ldr r0, _080BA278 @ =gUnknown_3004FF0 + add r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x14 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0, 0x2] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r6, 0 + lsls r1, r0 + lsls r1, 16 + orrs r5, r1 +_080BA200: + ldrh r1, [r4, 0xE] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA214 + adds r0, r6, 0 + mov r2, r9 + lsls r0, r2 + lsls r0, 16 + orrs r5, r0 +_080BA214: + ldrh r1, [r4, 0x10] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080BA228 + adds r0, r6, 0 + mov r1, r10 + lsls r0, r1 + lsls r0, 16 + orrs r5, r0 +_080BA228: + movs r1, 0x12 + ldrsb r1, [r4, r1] + movs r2, 0x14 + ldrsb r2, [r4, r2] + movs r3, 0x16 + ldrsb r3, [r4, r3] + adds r0, r5, 0 + bl sub_8070D14 + movs r2, 0x8 + ldrsh r1, [r4, r2] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080BA252 + adds r0, r5, 0 + bl sub_8070DE8 + mov r0, r8 + bl sub_8072760 +_080BA252: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BA260: .4byte gUnknown_3005090 +_080BA264: .4byte gUnknown_2037F02 +_080BA268: .4byte gUnknown_2037F1A +_080BA26C: .4byte gUnknown_2037F1B +_080BA270: .4byte 0x0000ffff +_080BA274: .4byte gUnknown_202063C +_080BA278: .4byte gUnknown_3004FF0 + thumb_func_end sub_80BA16C + + thumb_func_start sub_80BA27C +sub_80BA27C: @ 80BA27C + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080BA2B0 @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x34] + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _080BA2C4 + cmp r0, 0x1 + bgt _080BA2B4 + cmp r0, 0 + beq _080BA2BA + b _080BA2DC + .align 2, 0 +_080BA2B0: .4byte gUnknown_2037F02 +_080BA2B4: + cmp r0, 0x2 + beq _080BA2CC + b _080BA2DC +_080BA2BA: + ldr r1, _080BA2C0 @ =gUnknown_2022980 + b _080BA2CE + .align 2, 0 +_080BA2C0: .4byte gUnknown_2022980 +_080BA2C4: + ldr r1, _080BA2C8 @ =gUnknown_2022982 + b _080BA2CE + .align 2, 0 +_080BA2C8: .4byte gUnknown_2022982 +_080BA2CC: + ldr r1, _080BA2D8 @ =gUnknown_2021BC8 +_080BA2CE: + adds r0, r4, 0 + bl sub_8074A68 + b _080BA2E4 + .align 2, 0 +_080BA2D8: .4byte gUnknown_2021BC8 +_080BA2DC: + ldr r1, _080BA314 @ =gUnknown_2021BCA + adds r0, r4, 0 + bl sub_8074A68 +_080BA2E4: + movs r0, 0x3A + ldrsh r1, [r4, r0] + movs r2, 0x3C + ldrsh r0, [r4, r2] + lsls r0, 16 + orrs r1, r0 + ldrh r0, [r1] + strh r0, [r4, 0x36] + ldr r0, _080BA318 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x6] + strh r0, [r4, 0x38] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _080BA308 + bl sub_80BA3CC +_080BA308: + ldr r0, _080BA31C @ =sub_80BA320 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA314: .4byte gUnknown_2021BCA +_080BA318: .4byte gUnknown_2037F02 +_080BA31C: .4byte sub_80BA320 + thumb_func_end sub_80BA27C + + thumb_func_start sub_80BA320 +sub_80BA320: @ 80BA320 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x34] + movs r2, 0x34 + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080BA362 + subs r0, r1, 0x1 + strh r0, [r3, 0x34] + ldrh r1, [r3, 0x30] + movs r2, 0x30 + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080BA342 + subs r0, r1, 0x1 + strh r0, [r3, 0x30] + b _080BA3BA +_080BA342: + ldrh r0, [r3, 0x32] + strh r0, [r3, 0x30] + movs r0, 0x3A + ldrsh r1, [r3, r0] + movs r2, 0x3C + ldrsh r0, [r3, r2] + lsls r0, 16 + orrs r1, r0 + ldrh r0, [r3, 0x2E] + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + ldrh r0, [r3, 0x2E] + negs r0, r0 + strh r0, [r3, 0x2E] + b _080BA3BA +_080BA362: + movs r0, 0x3A + ldrsh r1, [r3, r0] + movs r2, 0x3C + ldrsh r0, [r3, r2] + lsls r0, 16 + orrs r1, r0 + ldrh r0, [r3, 0x36] + strh r0, [r1] + ldrh r0, [r3, 0x38] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _080BA3B4 + movs r4, 0 + ldr r5, _080BA3C0 @ =gUnknown_2023BCC + ldrb r0, [r5] + cmp r4, r0 + bcs _080BA3B4 + ldr r2, _080BA3C4 @ =gUnknown_202063C + mov r12, r2 + ldr r6, _080BA3C8 @ =gUnknown_2023D44 + movs r7, 0x3 + negs r7, r7 +_080BA392: + adds r0, r4, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r12 + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r7, 0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + cmp r4, r0 + bcc _080BA392 +_080BA3B4: + adds r0, r3, 0 + bl sub_8072740 +_080BA3BA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BA3C0: .4byte gUnknown_2023BCC +_080BA3C4: .4byte gUnknown_202063C +_080BA3C8: .4byte gUnknown_2023D44 + thumb_func_end sub_80BA320 + + thumb_func_start sub_80BA3CC +sub_80BA3CC: @ 80BA3CC + push {r4-r6,lr} + ldr r6, _080BA440 @ =gUnknown_202063C + ldr r4, _080BA444 @ =gUnknown_2023D44 + ldr r5, _080BA448 @ =gUnknown_2037F1A + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x3 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r3, _080BA44C @ =gUnknown_2037F1B + ldrb r0, [r3] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r0, _080BA450 @ =gUnknown_2037F02 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x2 + bne _080BA454 + ldrb r0, [r5] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r3] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + b _080BA470 + .align 2, 0 +_080BA440: .4byte gUnknown_202063C +_080BA444: .4byte gUnknown_2023D44 +_080BA448: .4byte gUnknown_2037F1A +_080BA44C: .4byte gUnknown_2037F1B +_080BA450: .4byte gUnknown_2037F02 +_080BA454: + cmp r0, 0 + bne _080BA45C + ldrb r0, [r5] + b _080BA45E +_080BA45C: + ldrb r0, [r3] +_080BA45E: + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x2 +_080BA470: + orrs r1, r2 + strb r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80BA3CC + + thumb_func_start sub_80BA47C +sub_80BA47C: @ 80BA47C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080BA4BC @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r1 + ldr r3, _080BA4C0 @ =gUnknown_2037F02 + ldrh r1, [r3] + strh r1, [r2, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r2, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r2, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r2, 0xE] + ldrh r1, [r3, 0x6] + strh r1, [r2, 0x18] + ldr r4, _080BA4C4 @ =gUnknown_2022980 + ldrh r1, [r3] + strh r1, [r4] + ldr r4, _080BA4C8 @ =gUnknown_2022982 + ldrh r1, [r3, 0x2] + strh r1, [r4] + ldr r1, _080BA4CC @ =sub_80BA4D0 + str r1, [r2] + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA4BC: .4byte gUnknown_3005090 +_080BA4C0: .4byte gUnknown_2037F02 +_080BA4C4: .4byte gUnknown_2022980 +_080BA4C8: .4byte gUnknown_2022982 +_080BA4CC: .4byte sub_80BA4D0 + thumb_func_end sub_80BA47C + + thumb_func_start sub_80BA4D0 +sub_80BA4D0: @ 80BA4D0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080BA500 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r1 + ldrh r2, [r3, 0xE] + movs r4, 0xE + ldrsh r0, [r3, r4] + mov r12, r1 + cmp r0, 0 + bne _080BA556 + ldr r0, _080BA504 @ =gUnknown_2022980 + ldrh r2, [r0] + movs r7, 0x8 + ldrsh r1, [r3, r7] + adds r6, r0, 0 + cmp r2, r1 + bne _080BA508 + ldrh r0, [r3, 0x8] + negs r0, r0 + b _080BA50A + .align 2, 0 +_080BA500: .4byte gUnknown_3005090 +_080BA504: .4byte gUnknown_2022980 +_080BA508: + ldrh r0, [r3, 0x8] +_080BA50A: + strh r0, [r6] + ldr r2, _080BA528 @ =gUnknown_2022982 + ldrh r3, [r2] + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + mov r7, r12 + adds r4, r0, r7 + movs r7, 0xA + ldrsh r0, [r4, r7] + cmn r3, r0 + bne _080BA52C + movs r0, 0 + b _080BA530 + .align 2, 0 +_080BA528: .4byte gUnknown_2022982 +_080BA52C: + ldrh r0, [r4, 0xA] + negs r0, r0 +_080BA530: + strh r0, [r2] + adds r0, r1, r5 + lsls r0, 3 + add r0, r12 + ldrh r1, [r0, 0x18] + strh r1, [r0, 0xE] + ldrh r1, [r0, 0xC] + subs r1, 0x1 + strh r1, [r0, 0xC] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0 + bne _080BA55A + strh r1, [r6] + strh r1, [r2] + adds r0, r5, 0 + bl sub_8072760 + b _080BA55A +_080BA556: + subs r0, r2, 0x1 + strh r0, [r3, 0xE] +_080BA55A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BA4D0 + + thumb_func_start sub_80BA560 +sub_80BA560: @ 80BA560 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080BA580 @ =gUnknown_2037F02 + ldrb r1, [r4, 0x6] + bl sub_800843C + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080BA584 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + b _080BA58C + .align 2, 0 +_080BA580: .4byte gUnknown_2037F02 +_080BA584: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075114 +_080BA58C: + ldr r0, _080BA5A0 @ =sub_8074F50 + str r0, [r5, 0x1C] + ldr r1, _080BA5A4 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA5A0: .4byte sub_8074F50 +_080BA5A4: .4byte sub_8072740 + thumb_func_end sub_80BA560 + + thumb_func_start sub_80BA5A8 +sub_80BA5A8: @ 80BA5A8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080BA5C8 @ =gUnknown_2037F02 + ldrb r1, [r4, 0x6] + bl sub_800843C + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080BA5CC + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + b _080BA5D4 + .align 2, 0 +_080BA5C8: .4byte gUnknown_2037F02 +_080BA5CC: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075114 +_080BA5D4: + ldr r0, _080BA5EC @ =gUnknown_2037F02 + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x2E] + ldr r0, _080BA5F0 @ =sub_8074F50 + str r0, [r5, 0x1C] + ldr r1, _080BA5F4 @ =sub_80B1D3C + adds r0, r5, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA5EC: .4byte gUnknown_2037F02 +_080BA5F0: .4byte sub_8074F50 +_080BA5F4: .4byte sub_80B1D3C + thumb_func_end sub_80BA5A8 + + thumb_func_start sub_80BA5F8 +sub_80BA5F8: @ 80BA5F8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080BA628 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080BA61C + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BA61C + ldr r1, _080BA62C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_080BA61C: + adds r0, r4, 0 + bl sub_80BA560 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA628: .4byte gUnknown_2037F1A +_080BA62C: .4byte gUnknown_2037F02 + thumb_func_end sub_80BA5F8 + + thumb_func_start sub_80BA630 +sub_80BA630: @ 80BA630 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080BA668 @ =gUnknown_2037F02 + movs r0, 0x2 + ldrsh r1, [r5, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080BA64C + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + strh r1, [r5, 0x2] +_080BA64C: + ldrb r1, [r5, 0x2] + adds r0, r4, 0 + bl sub_800843C + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080BA66C + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + b _080BA674 + .align 2, 0 +_080BA668: .4byte gUnknown_2037F02 +_080BA66C: + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 +_080BA674: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x30 + bl __umodsi3 + ldr r1, _080BA6B8 @ =0x0000ffe8 + adds r0, r1 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x18 + bl __umodsi3 + ldr r1, _080BA6BC @ =0x0000fff4 + adds r0, r1 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldr r1, _080BA6C0 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080BA6C4 @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA6B8: .4byte 0x0000ffe8 +_080BA6BC: .4byte 0x0000fff4 +_080BA6C0: .4byte sub_8074EE0 +_080BA6C4: .4byte sub_8074F50 + thumb_func_end sub_80BA630 + + thumb_func_start sub_80BA6C8 +sub_80BA6C8: @ 80BA6C8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080BA728 @ =gUnknown_2037F02 + ldrb r0, [r5] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x2E] + ldr r2, _080BA72C @ =gUnknown_202063C + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + ldrh r0, [r0, 0x20] + adds r1, r0 + strh r1, [r4, 0x20] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + strh r1, [r4, 0x22] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x26] + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl sub_800843C + ldr r1, _080BA730 @ =sub_8074EE0 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080BA734 @ =sub_8074F50 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA728: .4byte gUnknown_2037F02 +_080BA72C: .4byte gUnknown_202063C +_080BA730: .4byte sub_8074EE0 +_080BA734: .4byte sub_8074F50 + thumb_func_end sub_80BA6C8 + + thumb_func_start sub_80BA738 +sub_80BA738: @ 80BA738 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080BA750 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080BA754 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075160 + b _080BA75C + .align 2, 0 +_080BA750: .4byte gUnknown_2037F02 +_080BA754: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075114 +_080BA75C: + ldr r0, _080BA774 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x6] + strh r0, [r4, 0x2E] + ldr r1, _080BA778 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080BA77C @ =sub_8074C44 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA774: .4byte gUnknown_2037F02 +_080BA778: .4byte sub_8072740 +_080BA77C: .4byte sub_8074C44 + thumb_func_end sub_80BA738 + + thumb_func_start sub_80BA780 +sub_80BA780: @ 80BA780 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080BA7A0 @ =gUnknown_2037F02 + ldrb r1, [r4, 0x6] + bl sub_800843C + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080BA7A4 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075160 + b _080BA7AC + .align 2, 0 +_080BA7A0: .4byte gUnknown_2037F02 +_080BA7A4: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075114 +_080BA7AC: + ldr r0, _080BA7B8 @ =sub_80BA7BC + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BA7B8: .4byte sub_80BA7BC + thumb_func_end sub_80BA780 + + thumb_func_start sub_80BA7BC +sub_80BA7BC: @ 80BA7BC + push {lr} + adds r3, r0, 0 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x2E] + adds r1, r0, 0x1 + strh r1, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080BA7F2 + adds r0, r3, 0 + bl sub_8072740 +_080BA7F2: + pop {r0} + bx r0 + thumb_func_end sub_80BA7BC + + thumb_func_start sub_80BA7F8 +sub_80BA7F8: @ 80BA7F8 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _080BA838 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r4, r1] + bl sub_80B9A14 + adds r6, r0, 0 + ldrh r3, [r4] + lsls r3, 16 + asrs r0, r3, 23 + movs r4, 0x1 + ands r0, r4 + asrs r1, r3, 24 + ands r1, r4 + asrs r2, r3, 25 + ands r2, r4 + asrs r3, 26 + ands r3, r4 + bl sub_8075CB8 + orrs r6, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80BAA4C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BA838: .4byte gUnknown_2037F02 + thumb_func_end sub_80BA7F8 + + thumb_func_start sub_80BA83C +sub_80BA83C: @ 80BA83C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + mov r1, sp + movs r0, 0xFF + strb r0, [r1, 0x1] + movs r0, 0x1 + bl sub_80B9A14 + adds r5, r0, 0 + ldr r0, _080BA868 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x7 + bhi _080BA8E6 + lsls r0, 2 + ldr r1, _080BA86C @ =_080BA870 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BA868: .4byte gUnknown_2037F02 +_080BA86C: .4byte _080BA870 + .align 2, 0 +_080BA870: + .4byte _080BA892 + .4byte _080BA89E + .4byte _080BA890 + .4byte _080BA89C + .4byte _080BA8AC + .4byte _080BA8C4 + .4byte _080BA8CC + .4byte _080BA8D8 +_080BA890: + movs r5, 0 +_080BA892: + mov r0, sp + ldr r1, _080BA898 @ =gUnknown_2037F1A + b _080BA8A2 + .align 2, 0 +_080BA898: .4byte gUnknown_2037F1A +_080BA89C: + movs r5, 0 +_080BA89E: + mov r0, sp + ldr r1, _080BA8A8 @ =gUnknown_2037F1B +_080BA8A2: + ldrb r1, [r1] + strb r1, [r0] + b _080BA8E6 + .align 2, 0 +_080BA8A8: .4byte gUnknown_2037F1B +_080BA8AC: + mov r1, sp + ldr r0, _080BA8BC @ =gUnknown_2037F1A + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080BA8C0 @ =gUnknown_2037F1B + ldrb r0, [r0] + strb r0, [r1, 0x1] + b _080BA8E6 + .align 2, 0 +_080BA8BC: .4byte gUnknown_2037F1A +_080BA8C0: .4byte gUnknown_2037F1B +_080BA8C4: + mov r1, sp + movs r0, 0xFF + strb r0, [r1] + b _080BA8E6 +_080BA8CC: + movs r5, 0 + mov r2, sp + ldr r0, _080BA8D4 @ =gUnknown_2037F1A + b _080BA8DE + .align 2, 0 +_080BA8D4: .4byte gUnknown_2037F1A +_080BA8D8: + movs r5, 0 + mov r2, sp + ldr r0, _080BA930 @ =gUnknown_2037F1B +_080BA8DE: + ldrb r0, [r0] + movs r1, 0x2 + eors r0, r1 + strb r0, [r2] +_080BA8E6: + movs r4, 0 + mov r6, sp +_080BA8EA: + ldrb r0, [r6] + cmp r4, r0 + beq _080BA914 + ldrb r0, [r6, 0x1] + cmp r4, r0 + beq _080BA914 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080BA914 + adds r0, r4, 0 + bl sub_8075D80 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r0 + orrs r5, r1 +_080BA914: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080BA8EA + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80BAA4C + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BA930: .4byte gUnknown_2037F1B + thumb_func_end sub_80BA83C + + thumb_func_start sub_80BA934 +sub_80BA934: @ 80BA934 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BA958 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_80B9A14 + adds r2, r0, 0 + ldr r0, _080BA95C @ =gUnknown_2022B50 + ldrb r0, [r0] + cmp r0, 0x9 + bhi _080BAA0A + lsls r0, 2 + ldr r1, _080BA960 @ =_080BA964 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BA958: .4byte gUnknown_2037F02 +_080BA95C: .4byte gUnknown_2022B50 +_080BA960: .4byte _080BA964 + .align 2, 0 +_080BA964: + .4byte _080BA98C + .4byte _080BA99C + .4byte _080BA9A8 + .4byte _080BA9B8 + .4byte _080BA9C4 + .4byte _080BA9D4 + .4byte _080BA9E4 + .4byte _080BA9F4 + .4byte _080BAA04 + .4byte _080BAA04 +_080BA98C: + ldr r1, _080BA994 @ =gUnknown_2037F02 + ldr r0, _080BA998 @ =0x00000b0c + b _080BAA08 + .align 2, 0 +_080BA994: .4byte gUnknown_2037F02 +_080BA998: .4byte 0x00000b0c +_080BA99C: + ldr r1, _080BA9A4 @ =gUnknown_2037F02 + movs r0, 0x9E + lsls r0, 4 + b _080BAA08 + .align 2, 0 +_080BA9A4: .4byte gUnknown_2037F02 +_080BA9A8: + ldr r1, _080BA9B0 @ =gUnknown_2037F02 + ldr r0, _080BA9B4 @ =0x00002f1e + b _080BAA08 + .align 2, 0 +_080BA9B0: .4byte gUnknown_2037F02 +_080BA9B4: .4byte 0x00002f1e +_080BA9B8: + ldr r1, _080BA9C0 @ =gUnknown_2037F02 + movs r0, 0x90 + lsls r0, 7 + b _080BAA08 + .align 2, 0 +_080BA9C0: .4byte gUnknown_2037F02 +_080BA9C4: + ldr r1, _080BA9CC @ =gUnknown_2037F02 + ldr r0, _080BA9D0 @ =0x00007ecb + b _080BAA08 + .align 2, 0 +_080BA9CC: .4byte gUnknown_2037F02 +_080BA9D0: .4byte 0x00007ecb +_080BA9D4: + ldr r1, _080BA9DC @ =gUnknown_2037F02 + ldr r0, _080BA9E0 @ =0x00007ecb + b _080BAA08 + .align 2, 0 +_080BA9DC: .4byte gUnknown_2037F02 +_080BA9E0: .4byte 0x00007ecb +_080BA9E4: + ldr r1, _080BA9EC @ =gUnknown_2037F02 + ldr r0, _080BA9F0 @ =0x00002a16 + b _080BAA08 + .align 2, 0 +_080BA9EC: .4byte gUnknown_2037F02 +_080BA9F0: .4byte 0x00002a16 +_080BA9F4: + ldr r1, _080BA9FC @ =gUnknown_2037F02 + ldr r0, _080BAA00 @ =0x00000d2e + b _080BAA08 + .align 2, 0 +_080BA9FC: .4byte gUnknown_2037F02 +_080BAA00: .4byte 0x00000d2e +_080BAA04: + ldr r1, _080BAA18 @ =gUnknown_2037F02 + ldr r0, _080BAA1C @ =0x00007fff +_080BAA08: + strh r0, [r1, 0x8] +_080BAA0A: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80BAA4C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BAA18: .4byte gUnknown_2037F02 +_080BAA1C: .4byte 0x00007fff + thumb_func_end sub_80BA934 + + thumb_func_start sub_80BAA20 +sub_80BAA20: @ 80BAA20 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080BAA48 @ =gUnknown_2037F02 + ldrh r0, [r0] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + adds r0, r4, 0 + bl sub_80BAA4C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BAA48: .4byte gUnknown_2037F02 + thumb_func_end sub_80BAA20 + + thumb_func_start sub_80BAA4C +sub_80BAA4C: @ 80BAA4C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080BAA84 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r3 + strh r1, [r2, 0x8] + lsrs r1, 16 + strh r1, [r2, 0xA] + ldr r3, _080BAA88 @ =gUnknown_2037F02 + ldrh r1, [r3, 0x2] + strh r1, [r2, 0xC] + ldrh r1, [r3, 0x4] + strh r1, [r2, 0xE] + ldrh r1, [r3, 0x6] + strh r1, [r2, 0x10] + ldrh r1, [r3, 0x8] + strh r1, [r2, 0x12] + ldrh r1, [r3, 0x4] + strh r1, [r2, 0x1C] + ldr r1, _080BAA8C @ =sub_80BAA90 + str r1, [r2] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080BAA84: .4byte gUnknown_3005090 +_080BAA88: .4byte gUnknown_2037F02 +_080BAA8C: .4byte sub_80BAA90 + thumb_func_end sub_80BAA4C + + thumb_func_start sub_80BAA90 +sub_80BAA90: @ 80BAA90 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + ldr r2, _080BAB10 @ =gUnknown_3005090 + lsls r5, r7, 2 + adds r0, r5, r7 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x1A] + mov r8, r0 + movs r4, 0x1A + ldrsh r1, [r3, r4] + movs r4, 0xC + ldrsh r0, [r3, r4] + mov r9, r2 + cmp r1, r0 + bne _080BAB26 + strh r6, [r3, 0x1A] + movs r0, 0x8 + ldrsh r4, [r3, r0] + movs r1, 0xA + ldrsh r0, [r3, r1] + lsls r0, 16 + orrs r4, r0 + mov r8, r5 + cmp r4, 0 + beq _080BAAF2 + adds r5, r3, 0 +_080BAAD0: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080BAAE4 + ldrb r2, [r5, 0x1C] + ldrh r3, [r5, 0x12] + adds r0, r6, 0 + movs r1, 0x10 + bl sub_8045274 +_080BAAE4: + adds r0, r6, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + lsrs r4, 1 + cmp r4, 0 + bne _080BAAD0 +_080BAAF2: + mov r4, r8 + adds r0, r4, r7 + lsls r0, 3 + mov r1, r9 + adds r2, r0, r1 + ldrh r0, [r2, 0x1C] + movs r4, 0x1C + ldrsh r3, [r2, r4] + movs r4, 0x10 + ldrsh r1, [r2, r4] + cmp r3, r1 + bge _080BAB14 + adds r0, 0x1 + strh r0, [r2, 0x1C] + b _080BAB2C + .align 2, 0 +_080BAB10: .4byte gUnknown_3005090 +_080BAB14: + cmp r3, r1 + ble _080BAB1E + subs r0, 0x1 + strh r0, [r2, 0x1C] + b _080BAB2C +_080BAB1E: + adds r0, r7, 0 + bl sub_8072760 + b _080BAB2C +_080BAB26: + mov r0, r8 + adds r0, 0x1 + strh r0, [r3, 0x1A] +_080BAB2C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BAA90 + + thumb_func_start sub_80BAB38 +sub_80BAB38: @ 80BAB38 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _080BAB6C @ =gUnknown_2037F02 + ldrb r0, [r4] + ldrb r1, [r4, 0x2] + ldrb r2, [r4, 0x4] + ldrb r3, [r4, 0x6] + ldrb r4, [r4, 0x8] + str r4, [sp] + bl sub_8071264 + ldr r1, _080BAB70 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BAB74 @ =sub_80BAB78 + str r1, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BAB6C: .4byte gUnknown_2037F02 +_080BAB70: .4byte gUnknown_3005090 +_080BAB74: .4byte sub_80BAB78 + thumb_func_end sub_80BAB38 + + thumb_func_start sub_80BAB78 +sub_80BAB78: @ 80BAB78 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080BAB94 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080BAB90 + adds r0, r2, 0 + bl sub_8072760 +_080BAB90: + pop {r0} + bx r0 + .align 2, 0 +_080BAB94: .4byte gUnknown_2037AB8 + thumb_func_end sub_80BAB78 + + thumb_func_start sub_80BAB98 +sub_80BAB98: @ 80BAB98 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080BABC4 @ =gUnknown_3005090 + adds r1, r0 + ldr r2, _080BABC8 @ =gUnknown_2037F02 + ldrh r0, [r2] + movs r3, 0 + strh r0, [r1, 0x8] + strh r3, [r1, 0xA] + ldrh r0, [r2, 0x2] + strh r0, [r1, 0xC] + ldrh r0, [r2, 0x4] + strh r0, [r1, 0xE] + ldrh r0, [r2, 0x6] + strh r0, [r1, 0x10] + strh r3, [r1, 0x12] + ldr r0, _080BABCC @ =sub_80BABD0 + str r0, [r1] + bx lr + .align 2, 0 +_080BABC4: .4byte gUnknown_3005090 +_080BABC8: .4byte gUnknown_2037F02 +_080BABCC: .4byte sub_80BABD0 + thumb_func_end sub_80BAB98 + + thumb_func_start sub_80BABD0 +sub_80BABD0: @ 80BABD0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r2, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080BABFC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080BAC94 + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080BAC00 + subs r0, r1, 0x1 + strh r0, [r4, 0xA] + b _080BACA2 + .align 2, 0 +_080BABFC: .4byte gUnknown_3005090 +_080BAC00: + ldrb r0, [r4, 0x8] + bl sub_8075FBC + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + blt _080BAC7E + ldr r6, _080BAC8C @ =gUnknown_202063C + movs r1, 0x14 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r3, r1, r6 + movs r2, 0x8 + ldrsh r0, [r4, r2] + movs r2, 0x2 + cmp r0, 0 + beq _080BAC28 + movs r2, 0x1 +_080BAC28: + lsls r2, 2 + ldrb r1, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x5] + movs r0, 0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r4, 0xE] + strh r1, [r0, 0x2E] + movs r2, 0x14 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r5, [r0, 0x30] + movs r0, 0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x5 + strh r1, [r0, 0x32] + movs r2, 0x14 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r6, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080BAC90 @ =sub_80BACA8 + str r1, [r0] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] +_080BAC7E: + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xC] + strh r0, [r4, 0xA] + b _080BACA2 + .align 2, 0 +_080BAC8C: .4byte gUnknown_202063C +_080BAC90: .4byte sub_80BACA8 +_080BAC94: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080BACA2 + adds r0, r2, 0 + bl sub_8072760 +_080BACA2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80BABD0 + + thumb_func_start sub_80BACA8 +sub_80BACA8: @ 80BACA8 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080BACBC + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _080BACE0 +_080BACBC: + ldr r3, _080BACE8 @ =gUnknown_3005090 + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8076030 +_080BACE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BACE8: .4byte gUnknown_3005090 + thumb_func_end sub_80BACA8 + + thumb_func_start sub_80BACEC +sub_80BACEC: @ 80BACEC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r7, 0 + ldr r0, _080BAE20 @ =gUnknown_2022984 + strh r7, [r0] + ldr r0, _080BAE24 @ =gUnknown_2022986 + strh r7, [r0] + ldr r1, _080BAE28 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080BAE2C @ =0x00003f3d + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080BAE30 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080BAE34 @ =0x00000c08 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0xA + bl sub_8000AC4 + add r4, sp, 0x10 + strh r0, [r4] + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + mov r8, r0 + ands r0, r1 + strb r0, [r4] + mov r2, sp + adds r2, 0x11 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2] + ldrh r1, [r4] + movs r0, 0xA + bl sub_8000A38 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BAD7A + ldrb r1, [r4] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrh r1, [r4] + movs r0, 0xA + bl sub_8000A38 +_080BAD7A: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080BADFE + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BADFE + ldr r5, _080BAE38 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080BADAA + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + bne _080BADFE +_080BADAA: + ldrb r0, [r5] + movs r6, 0x2 + eors r0, r6 + bl sub_8072DF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BADFE + ldr r3, _080BAE3C @ =gUnknown_202063C + ldr r1, _080BAE40 @ =gUnknown_2023D44 + ldrb r0, [r5] + eors r0, r6 + adds r0, r1 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldrb r1, [r4] + mov r0, r8 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] + ldrh r1, [r4] + movs r0, 0xA + bl sub_8000A38 + movs r7, 0x1 +_080BADFE: + ldr r4, _080BAE38 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080BAE4C + ldr r1, _080BAE44 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BAE48 @ =gUnknown_202402C + b _080BAE5C + .align 2, 0 +_080BAE20: .4byte gUnknown_2022984 +_080BAE24: .4byte gUnknown_2022986 +_080BAE28: .4byte 0x00003f3f +_080BAE2C: .4byte 0x00003f3d +_080BAE30: .4byte 0x00003f42 +_080BAE34: .4byte 0x00000c08 +_080BAE38: .4byte gUnknown_2037F1A +_080BAE3C: .4byte gUnknown_202063C +_080BAE40: .4byte gUnknown_2023D44 +_080BAE44: .4byte gUnknown_2023BCE +_080BAE48: .4byte gUnknown_202402C +_080BAE4C: + ldr r1, _080BAF0C @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BAF10 @ =gUnknown_2024284 +_080BAE5C: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r0, _080BAF14 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8076E34 + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080BAF18 @ =gUnknown_8D20858 + bl sub_807543C + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080BAEAC + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080BAEAC: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080BAF1C @ =gUnknown_8D2083C + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080BAF20 @ =gUnknown_83E7CC8 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + adds r1, 0x1 + movs r2, 0x2 + bl sub_80703EC + ldr r2, _080BAF24 @ =gUnknown_2022978 + ldr r0, _080BAF28 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldr r2, _080BAF2C @ =gUnknown_202297A + ldrh r0, [r1, 0x22] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldr r1, _080BAF30 @ =gUnknown_3005090 + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0x8] + strh r7, [r0, 0x14] + ldr r1, _080BAF34 @ =sub_80BAF38 + str r1, [r0] + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BAF0C: .4byte gUnknown_2023BCE +_080BAF10: .4byte gUnknown_2024284 +_080BAF14: .4byte gUnknown_2037F1A +_080BAF18: .4byte gUnknown_8D20858 +_080BAF1C: .4byte gUnknown_8D2083C +_080BAF20: .4byte gUnknown_83E7CC8 +_080BAF24: .4byte gUnknown_2022978 +_080BAF28: .4byte gUnknown_202063C +_080BAF2C: .4byte gUnknown_202297A +_080BAF30: .4byte gUnknown_3005090 +_080BAF34: .4byte sub_80BAF38 + thumb_func_end sub_80BACEC + + thumb_func_start sub_80BAF38 +sub_80BAF38: @ 80BAF38 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080BB068 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x1C] + adds r0, 0x4 + movs r1, 0 + mov r8, r1 + strh r0, [r5, 0x1C] + ldr r7, _080BB06C @ =gUnknown_202297A + ldrh r2, [r7] + subs r1, r2, 0x4 + strh r1, [r7] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x40 + bne _080BB05A + mov r0, r8 + strh r0, [r5, 0x1C] + adds r0, r2, 0 + adds r0, 0x3C + strh r0, [r7] + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080BB05A + movs r0, 0 + bl sub_8073128 + ldr r0, _080BB070 @ =gUnknown_2022984 + mov r1, r8 + strh r1, [r0] + ldr r0, _080BB074 @ =gUnknown_2022986 + strh r1, [r0] + ldr r4, _080BB078 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BAFCA + movs r0, 0xA + bl sub_8000AC4 + add r1, sp, 0x10 + strh r0, [r1] + ldrb r2, [r1] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrh r1, [r1] + movs r0, 0xA + bl sub_8000A38 +_080BAFCA: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80749D4 + ldr r4, _080BB07C @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080BB050 + ldr r2, _080BB080 @ =gUnknown_2023D44 + ldr r0, _080BB084 @ =gUnknown_2037F1A + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + adds r0, r2 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] +_080BB050: + mov r2, r8 + strh r2, [r7] + adds r0, r6, 0 + bl sub_8072760 +_080BB05A: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BB068: .4byte gUnknown_3005090 +_080BB06C: .4byte gUnknown_202297A +_080BB070: .4byte gUnknown_2022984 +_080BB074: .4byte gUnknown_2022986 +_080BB078: .4byte 0x00003f3f +_080BB07C: .4byte gUnknown_202063C +_080BB080: .4byte gUnknown_2023D44 +_080BB084: .4byte gUnknown_2037F1A + thumb_func_end sub_80BAF38 + + thumb_func_start sub_80BB088 +sub_80BB088: @ 80BB088 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080BB0C8 @ =gUnknown_20399B4 + movs r0, 0x18 + bl sub_8002BB0 + str r0, [r4] + movs r2, 0 + ldr r3, _080BB0CC @ =gUnknown_2037F02 +_080BB09C: + ldr r1, [r4] + lsls r0, r2, 1 + adds r1, 0x4 + adds r1, r0 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _080BB09C + ldr r0, _080BB0D0 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080BB0D4 @ =sub_80BB0D8 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BB0C8: .4byte gUnknown_20399B4 +_080BB0CC: .4byte gUnknown_2037F02 +_080BB0D0: .4byte gUnknown_3005090 +_080BB0D4: .4byte sub_80BB0D8 + thumb_func_end sub_80BB088 + + thumb_func_start sub_80BB0D8 +sub_80BB0D8: @ 80BB0D8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080BB0F0 @ =gUnknown_20399B4 + ldr r1, [r0] + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080BB0F8 + ldr r0, _080BB0F4 @ =gUnknown_2037F1A + b _080BB0FA + .align 2, 0 +_080BB0F0: .4byte gUnknown_20399B4 +_080BB0F4: .4byte gUnknown_2037F1A +_080BB0F8: + ldr r0, _080BB230 @ =gUnknown_2037F1B +_080BB0FA: + ldrb r0, [r0] + strb r0, [r1] + ldr r4, _080BB234 @ =gUnknown_20399B4 + ldr r2, [r4] + ldrb r0, [r2] + movs r1, 0x2 + eors r0, r1 + strb r0, [r2, 0x1] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BB12A + ldr r1, [r4] + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080BB130 + ldrb r0, [r1, 0x1] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _080BB130 +_080BB12A: + ldr r1, [r4] + movs r0, 0 + strh r0, [r1, 0xA] +_080BB130: + ldr r0, _080BB238 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080BB23C @ =gUnknown_2022986 + strh r1, [r0] + ldr r1, _080BB240 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080BB244 @ =0x00003f3d + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080BB248 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BB18E + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080BB18E: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080BB20A + ldr r4, _080BB234 @ =gUnknown_20399B4 + ldr r1, [r4] + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080BB20A + ldrb r0, [r1] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080BB1C0 + ldr r0, [r4] + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + bne _080BB20A +_080BB1C0: + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8072DF0 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bne _080BB20A + ldr r3, _080BB24C @ =gUnknown_202063C + ldr r1, _080BB250 @ =gUnknown_2023D44 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + adds r0, r1 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + ldr r0, [r4] + strb r5, [r0, 0x2] +_080BB20A: + ldr r4, _080BB234 @ =gUnknown_20399B4 + ldr r0, [r4] + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080BB25C + ldr r1, _080BB254 @ =gUnknown_2023BCE + ldr r0, [r4] + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BB258 @ =gUnknown_202402C + b _080BB26E + .align 2, 0 +_080BB230: .4byte gUnknown_2037F1B +_080BB234: .4byte gUnknown_20399B4 +_080BB238: .4byte gUnknown_2022984 +_080BB23C: .4byte gUnknown_2022986 +_080BB240: .4byte 0x00003f3f +_080BB244: .4byte 0x00003f3d +_080BB248: .4byte 0x00003f42 +_080BB24C: .4byte gUnknown_202063C +_080BB250: .4byte gUnknown_2023D44 +_080BB254: .4byte gUnknown_2023BCE +_080BB258: .4byte gUnknown_202402C +_080BB25C: + ldr r1, _080BB290 @ =gUnknown_2023BCE + ldr r0, [r4] + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BB294 @ =gUnknown_2024284 +_080BB26E: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + ldr r1, [r4] + strh r0, [r1, 0x14] + ldr r0, _080BB298 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080BB29C @ =sub_80BB2A0 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB290: .4byte gUnknown_2023BCE +_080BB294: .4byte gUnknown_2024284 +_080BB298: .4byte gUnknown_3005090 +_080BB29C: .4byte sub_80BB2A0 + thumb_func_end sub_80BB0D8 + + thumb_func_start sub_80BB2A0 +sub_80BB2A0: @ 80BB2A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + mov r8, r0 + ldr r6, _080BB300 @ =gUnknown_2023D44 + ldr r4, _080BB304 @ =gUnknown_20399B4 + ldr r2, [r4] + ldrb r0, [r2] + adds r1, r0, r6 + ldrb r1, [r1] + ldrh r2, [r2, 0x14] + bl sub_8076E34 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, [r4] + movs r1, 0xA + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080BB2E2 + ldrb r0, [r2, 0x1] + adds r1, r0, r6 + ldrb r1, [r1] + ldrh r2, [r2, 0x14] + bl sub_8076E34 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 +_080BB2E2: + mov r0, sp + bl sub_80752A0 + ldr r0, [r4] + movs r4, 0x4 + ldrsh r0, [r0, r4] + cmp r0, 0 + bne _080BB30C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080BB308 @ =gUnknown_8D2DB04 + bl sub_807543C + b _080BB316 + .align 2, 0 +_080BB300: .4byte gUnknown_2023D44 +_080BB304: .4byte gUnknown_20399B4 +_080BB308: .4byte gUnknown_8D2DB04 +_080BB30C: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080BB354 @ =gUnknown_8D2DC20 + bl sub_807543C +_080BB316: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080BB32E + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080BB32E: + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080BB358 @ =gUnknown_8D2D8F4 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080BB35C @ =gUnknown_20399B4 + ldr r0, [r0] + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0x6 + bhi _080BB3C4 + lsls r0, 2 + ldr r1, _080BB360 @ =_080BB364 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BB354: .4byte gUnknown_8D2DC20 +_080BB358: .4byte gUnknown_8D2D8F4 +_080BB35C: .4byte gUnknown_20399B4 +_080BB360: .4byte _080BB364 + .align 2, 0 +_080BB364: + .4byte _080BB380 + .4byte _080BB388 + .4byte _080BB390 + .4byte _080BB398 + .4byte _080BB3A0 + .4byte _080BB3A8 + .4byte _080BB3B0 +_080BB380: + ldr r0, _080BB384 @ =gUnknown_8D2DD5C + b _080BB3B2 + .align 2, 0 +_080BB384: .4byte gUnknown_8D2DD5C +_080BB388: + ldr r0, _080BB38C @ =gUnknown_8D2DD3C + b _080BB3B2 + .align 2, 0 +_080BB38C: .4byte gUnknown_8D2DD3C +_080BB390: + ldr r0, _080BB394 @ =gUnknown_8D2DD7C + b _080BB3B2 + .align 2, 0 +_080BB394: .4byte gUnknown_8D2DD7C +_080BB398: + ldr r0, _080BB39C @ =gUnknown_8D2DD9C + b _080BB3B2 + .align 2, 0 +_080BB39C: .4byte gUnknown_8D2DD9C +_080BB3A0: + ldr r0, _080BB3A4 @ =gUnknown_8D2DDDC + b _080BB3B2 + .align 2, 0 +_080BB3A4: .4byte gUnknown_8D2DDDC +_080BB3A8: + ldr r0, _080BB3AC @ =gUnknown_8D2DDFC + b _080BB3B2 + .align 2, 0 +_080BB3AC: .4byte gUnknown_8D2DDFC +_080BB3B0: + ldr r0, _080BB3C0 @ =gUnknown_8D2DE1C +_080BB3B2: + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + b _080BB3D2 + .align 2, 0 +_080BB3C0: .4byte gUnknown_8D2DE1C +_080BB3C4: + ldr r0, _080BB3FC @ =gUnknown_8D2DDBC + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 +_080BB3D2: + ldr r3, _080BB400 @ =gUnknown_2022978 + movs r2, 0 + strh r2, [r3] + ldr r0, _080BB404 @ =gUnknown_202297A + strh r2, [r0] + ldr r1, _080BB408 @ =gUnknown_20399B4 + ldr r0, [r1] + movs r4, 0x4 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + cmp r0, 0x1 + bne _080BB414 + movs r0, 0x40 + strh r0, [r3] + ldr r2, _080BB40C @ =gUnknown_3005090 + lsls r3, r5, 2 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + ldr r1, _080BB410 @ =0x0000fffd + b _080BB420 + .align 2, 0 +_080BB3FC: .4byte gUnknown_8D2DDBC +_080BB400: .4byte gUnknown_2022978 +_080BB404: .4byte gUnknown_202297A +_080BB408: .4byte gUnknown_20399B4 +_080BB40C: .4byte gUnknown_3005090 +_080BB410: .4byte 0x0000fffd +_080BB414: + ldr r2, _080BB43C @ =gUnknown_3005090 + lsls r3, r5, 2 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0x3 +_080BB420: + strh r1, [r0, 0xA] + ldr r0, [r4] + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080BB440 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0xA + strh r1, [r0, 0x10] + movs r1, 0x14 + b _080BB44C + .align 2, 0 +_080BB43C: .4byte gUnknown_3005090 +_080BB440: + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0xD + strh r1, [r0, 0x10] + movs r1, 0x1E +_080BB44C: + strh r1, [r0, 0x12] + adds r1, r3, r5 + lsls r1, 3 + adds r1, r2 + strh r7, [r1, 0x8] + ldr r3, [r4] + ldrh r0, [r3, 0xA] + strh r0, [r1, 0xC] + mov r4, r8 + strh r4, [r1, 0xE] + ldrb r0, [r3, 0x2] + strh r0, [r1, 0x14] + ldr r2, _080BB490 @ =gUnknown_2023D44 + ldrb r0, [r3, 0x1] + adds r0, r2 + ldrb r0, [r0] + strh r0, [r1, 0x16] + ldr r0, _080BB494 @ =sub_80BB4B8 + str r0, [r1] + movs r1, 0x4 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080BB498 + movs r0, 0x40 + negs r0, r0 + bl sub_8073B08 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xE8 + bl sub_80722F4 + b _080BB4AC + .align 2, 0 +_080BB490: .4byte gUnknown_2023D44 +_080BB494: .4byte sub_80BB4B8 +_080BB498: + movs r0, 0x40 + negs r0, r0 + bl sub_8073B08 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xEE + bl sub_80722F4 +_080BB4AC: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BB2A0 + + thumb_func_start sub_80BB4B8 +sub_80BB4B8: @ 80BB4B8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _080BB4E4 @ =gUnknown_202297A + ldr r1, _080BB4E8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0xA] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + movs r0, 0x26 + ldrsh r2, [r5, r0] + cmp r2, 0x1 + beq _080BB52E + cmp r2, 0x1 + bgt _080BB4EC + cmp r2, 0 + beq _080BB4F6 + b _080BB644 + .align 2, 0 +_080BB4E4: .4byte gUnknown_202297A +_080BB4E8: .4byte gUnknown_3005090 +_080BB4EC: + cmp r2, 0x2 + beq _080BB544 + cmp r2, 0x3 + beq _080BB582 + b _080BB644 +_080BB4F6: + ldrh r0, [r5, 0x1E] + adds r1, r0, 0x1 + strh r1, [r5, 0x1E] + lsls r0, 16 + cmp r0, 0 + bgt _080BB504 + b _080BB644 +_080BB504: + strh r2, [r5, 0x1E] + ldrh r1, [r5, 0x20] + adds r1, 0x1 + strh r1, [r5, 0x20] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + beq _080BB52C + b _080BB644 +_080BB52C: + b _080BB57A +_080BB52E: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x12 + ldrsh r1, [r5, r2] + cmp r0, r1 + beq _080BB542 + b _080BB644 +_080BB542: + b _080BB57A +_080BB544: + ldrh r0, [r5, 0x1E] + adds r1, r0, 0x1 + strh r1, [r5, 0x1E] + lsls r0, 16 + cmp r0, 0 + ble _080BB644 + movs r0, 0 + strh r0, [r5, 0x1E] + ldrh r1, [r5, 0x20] + subs r1, 0x1 + strh r1, [r5, 0x20] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x20 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080BB644 + movs r0, 0 + bl sub_8073128 +_080BB57A: + ldrh r0, [r5, 0x26] + adds r0, 0x1 + strh r0, [r5, 0x26] + b _080BB644 +_080BB582: + ldr r0, _080BB64C @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080BB650 @ =gUnknown_2022986 + strh r1, [r0] + ldr r4, _080BB654 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BB5B2 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080BB5B2: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080BB658 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080BB606 + movs r2, 0xE + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 +_080BB606: + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080BB632 + movs r2, 0x16 + ldrsh r0, [r5, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] +_080BB632: + ldr r4, _080BB65C @ =gUnknown_20399B4 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + adds r0, r6, 0 + bl sub_8072760 +_080BB644: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB64C: .4byte gUnknown_2022984 +_080BB650: .4byte gUnknown_2022986 +_080BB654: .4byte 0x00003f3f +_080BB658: .4byte gUnknown_202063C +_080BB65C: .4byte gUnknown_20399B4 + thumb_func_end sub_80BB4B8 + + thumb_func_start sub_80BB660 +sub_80BB660: @ 80BB660 + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8075CB8 + adds r6, r0, 0 + movs r1, 0 + bl sub_80BB790 + ldr r0, _080BB6C0 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + lsrs r0, r6, 16 + movs r5, 0 + strh r0, [r4, 0x24] + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + adds r6, r0, 0 + ldr r1, _080BB6C4 @ =0x0000ffff + ands r6, r1 + adds r0, r6, 0 + bl sub_80BB790 + strh r6, [r4, 0x26] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + ldr r0, _080BB6C8 @ =sub_80BB6CC + str r0, [r4] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB6C0: .4byte gUnknown_3005090 +_080BB6C4: .4byte 0x0000ffff +_080BB6C8: .4byte sub_80BB6CC + thumb_func_end sub_80BB660 + + thumb_func_start sub_80BB6CC +sub_80BB6CC: @ 80BB6CC + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080BB6F0 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080BB710 + cmp r1, 0x1 + bgt _080BB6F4 + cmp r1, 0 + beq _080BB6FA + b _080BB78A + .align 2, 0 +_080BB6F0: .4byte gUnknown_3005090 +_080BB6F4: + cmp r1, 0x2 + beq _080BB784 + b _080BB78A +_080BB6FA: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080BB78A + strh r1, [r4, 0xA] + movs r0, 0x10 + strh r0, [r4, 0xC] + b _080BB778 +_080BB710: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080BB78A + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + movs r5, 0 + movs r6, 0x1 +_080BB72C: + movs r1, 0x26 + ldrsh r0, [r4, r1] + asrs r0, r5 + ands r0, r6 + cmp r0, 0 + beq _080BB746 + lsls r0, r5, 20 + lsrs r0, 16 + ldrb r2, [r4, 0xC] + movs r1, 0x10 + ldr r3, _080BB780 @ =0x0000ffff + bl sub_8045274 +_080BB746: + movs r1, 0x24 + ldrsh r0, [r4, r1] + asrs r0, r5 + ands r0, r6 + cmp r0, 0 + beq _080BB766 + lsls r0, r5, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + ldrb r2, [r4, 0xC] + movs r1, 0x10 + movs r3, 0 + bl sub_8045274 +_080BB766: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xF + bls _080BB72C + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080BB78A +_080BB778: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080BB78A + .align 2, 0 +_080BB780: .4byte 0x0000ffff +_080BB784: + adds r0, r2, 0 + bl sub_8072760 +_080BB78A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80BB6CC + + thumb_func_start sub_80BB790 +sub_80BB790: @ 80BB790 + push {r4-r6,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + movs r2, 0 +_080BB79A: + movs r0, 0x1 + ands r0, r3 + lsrs r4, r3, 1 + adds r5, r2, 0x1 + cmp r0, 0 + beq _080BB7C6 + lsls r0, r2, 20 + lsrs r2, r0, 16 + adds r0, r2, 0 + adds r0, 0x10 + cmp r2, r0 + bge _080BB7C6 + ldr r1, _080BB7D8 @ =gUnknown_20375F8 + adds r3, r0, 0 +_080BB7B6: + lsls r0, r2, 1 + adds r0, r1 + strh r6, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r3 + blt _080BB7B6 +_080BB7C6: + adds r3, r4, 0 + lsls r0, r5, 16 + lsrs r2, r0, 16 + cmp r2, 0x1F + bls _080BB79A + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB7D8: .4byte gUnknown_20375F8 + thumb_func_end sub_80BB790 + + thumb_func_start sub_80BB7DC +sub_80BB7DC: @ 80BB7DC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + movs r2, 0 + ldr r0, _080BB824 @ =gUnknown_2037F1A + ldrb r3, [r0] + movs r5, 0x1 +_080BB7EC: + cmp r3, r2 + beq _080BB7FA + adds r1, r2, 0 + adds r1, 0x10 + adds r0, r5, 0 + lsls r0, r1 + orrs r4, r0 +_080BB7FA: + adds r2, 0x1 + cmp r2, 0x3 + bls _080BB7EC + movs r2, 0x5 + ldr r0, _080BB828 @ =gUnknown_2037F02 + adds r1, r0, 0 + adds r1, 0x8 +_080BB808: + ldrh r0, [r1] + strh r0, [r1, 0x2] + subs r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080BB808 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80BAA4C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB824: .4byte gUnknown_2037F1A +_080BB828: .4byte gUnknown_2037F02 + thumb_func_end sub_80BB7DC + + thumb_func_start sub_80BB82C +sub_80BB82C: @ 80BB82C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_8075458 + ldr r0, _080BB894 @ =sub_80BB8A4 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080BB898 @ =gUnknown_2037F02 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080BB868 + ldr r0, _080BB89C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080BB868 + ldrh r0, [r4] + negs r0, r0 + strh r0, [r4] + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] +_080BB868: + ldr r0, _080BB8A0 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r2, _080BB898 @ =gUnknown_2037F02 + ldrh r0, [r2] + strh r0, [r1, 0xA] + ldrh r0, [r2, 0x2] + strh r0, [r1, 0xC] + ldrh r0, [r2, 0x6] + strh r0, [r1, 0xE] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + adds r0, r6, 0 + bl sub_8072760 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB894: .4byte sub_80BB8A4 +_080BB898: .4byte gUnknown_2037F02 +_080BB89C: .4byte gUnknown_2037F1A +_080BB8A0: .4byte gUnknown_3005090 + thumb_func_end sub_80BB82C + + thumb_func_start sub_80BB8A4 +sub_80BB8A4: @ 80BB8A4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080BB910 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r3, [r1, 0xA] + ldrh r0, [r1, 0x1C] + adds r3, r0 + movs r4, 0 + mov r12, r4 + strh r3, [r1, 0x1C] + ldrh r2, [r1, 0xC] + ldrh r7, [r1, 0x1E] + adds r2, r7 + strh r2, [r1, 0x1E] + ldr r6, _080BB914 @ =gUnknown_2022980 + lsls r0, r3, 16 + asrs r0, 24 + ldrh r4, [r6] + adds r0, r4 + strh r0, [r6] + ldr r4, _080BB918 @ =gUnknown_2022982 + lsls r0, r2, 16 + asrs r0, 24 + ldrh r7, [r4] + adds r0, r7 + strh r0, [r4] + movs r0, 0xFF + ands r3, r0 + strh r3, [r1, 0x1C] + ands r2, r0 + strh r2, [r1, 0x1E] + ldr r0, _080BB91C @ =gUnknown_2037F02 + movs r3, 0xE + ldrsh r2, [r0, r3] + movs r7, 0xE + ldrsh r0, [r1, r7] + cmp r2, r0 + bne _080BB90A + mov r0, r12 + strh r0, [r6] + strh r0, [r4] + movs r0, 0x1 + bl sub_8075458 + adds r0, r5, 0 + bl sub_8077508 +_080BB90A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BB910: .4byte gUnknown_3005090 +_080BB914: .4byte gUnknown_2022980 +_080BB918: .4byte gUnknown_2022982 +_080BB91C: .4byte gUnknown_2037F02 + thumb_func_end sub_80BB8A4 + + thumb_func_start sub_80BB920 +sub_80BB920: @ 80BB920 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080BB944 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + ldr r1, _080BB948 @ =gUnknown_2037F02 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0xE] + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BB944: .4byte gUnknown_2037F1A +_080BB948: .4byte gUnknown_2037F02 + thumb_func_end sub_80BB920 + + thumb_func_start sub_80BB94C +sub_80BB94C: @ 80BB94C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080BB970 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + ldr r1, _080BB974 @ =gUnknown_2037F02 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0xE] + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BB970: .4byte gUnknown_2037F1B +_080BB974: .4byte gUnknown_2037F02 + thumb_func_end sub_80BB94C + + thumb_func_start sub_80BB978 +sub_80BB978: @ 80BB978 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r5, _080BB9A4 @ =gUnknown_2037F02 + movs r4, 0 + ldr r0, _080BB9A8 @ =gUnknown_2037F1A + ldrb r2, [r0] + movs r0, 0x2 + ldr r1, _080BB9AC @ =gUnknown_2037F1B + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bne _080BB994 + movs r4, 0x1 +_080BB994: + strh r4, [r5, 0xE] + adds r0, r3, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BB9A4: .4byte gUnknown_2037F02 +_080BB9A8: .4byte gUnknown_2037F1A +_080BB9AC: .4byte gUnknown_2037F1B + thumb_func_end sub_80BB978 + + thumb_func_start sub_80BB9B0 +sub_80BB9B0: @ 80BB9B0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r6, _080BBA10 @ =gUnknown_202063C +_080BB9BA: + ldr r0, _080BBA14 @ =gUnknown_2037F1A + ldrb r0, [r0] + cmp r4, r0 + beq _080BB9F8 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080BB9F8 + ldr r0, _080BBA18 @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldr r1, _080BBA1C @ =gUnknown_2037F02 + adds r2, 0x3E + movs r0, 0x1 + ldrb r3, [r1] + ands r3, r0 + lsls r3, 2 + ldrb r0, [r2] + movs r7, 0x5 + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_080BB9F8: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080BB9BA + adds r0, r5, 0 + bl sub_8072760 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BBA10: .4byte gUnknown_202063C +_080BBA14: .4byte gUnknown_2037F1A +_080BBA18: .4byte gUnknown_2023D44 +_080BBA1C: .4byte gUnknown_2037F02 + thumb_func_end sub_80BB9B0 + + thumb_func_start sub_80BBA20 +sub_80BBA20: @ 80BBA20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + ldr r1, [sp, 0x44] + ldr r4, [sp, 0x48] + ldr r5, [sp, 0x4C] + ldr r6, [sp, 0x50] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x14] + lsls r3, 24 + lsrs r7, r3, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x18] + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x1C] + lsls r6, 24 + lsrs r6, 24 + mov r10, r6 + movs r0, 0 + str r0, [sp, 0x20] + movs r0, 0x2 + adds r6, r7, 0 + eors r6, r0 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BBA82 + mov r1, r8 + cmp r1, 0 + beq _080BBA86 + adds r0, r6, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _080BBA86 +_080BBA82: + movs r2, 0 + mov r8, r2 +_080BBA86: + ldr r0, _080BBB20 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080BBB24 @ =gUnknown_2022986 + strh r1, [r0] + ldr r1, _080BBB28 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080BBB2C @ =0x00003f3d + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080BBB30 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0xA + bl sub_8000AC4 + add r4, sp, 0x10 + strh r0, [r4] + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + mov r2, sp + adds r2, 0x11 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2] + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BBAFC + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080BBAFC: + ldrh r1, [r4] + movs r0, 0xA + bl sub_8000A38 + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080BBB3C + ldr r1, _080BBB34 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BBB38 @ =gUnknown_202402C + b _080BBB4A + .align 2, 0 +_080BBB20: .4byte gUnknown_2022984 +_080BBB24: .4byte gUnknown_2022986 +_080BBB28: .4byte 0x00003f3f +_080BBB2C: .4byte 0x00003f3d +_080BBB30: .4byte 0x00003f42 +_080BBB34: .4byte gUnknown_2023BCE +_080BBB38: .4byte gUnknown_202402C +_080BBB3C: + ldr r1, _080BBC10 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BBC14 @ =gUnknown_2024284 +_080BBB4A: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r5, _080BBC18 @ =gUnknown_2023D44 + adds r0, r7, r5 + ldrb r1, [r0] + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_8076E34 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r8 + cmp r0, 0 + beq _080BBB80 + adds r0, r6, r5 + ldrb r1, [r0] + adds r0, r6, 0 + adds r2, r4, 0 + bl sub_8076E34 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x20] +_080BBB80: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, [sp, 0x58] + bl sub_807543C + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080BBBA8 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080BBBA8: + mov r0, sp + ldrb r0, [r0, 0x9] + mov r1, sp + ldrh r2, [r1, 0xA] + ldr r1, [sp, 0x54] + bl sub_80753B4 + mov r0, sp + ldrb r1, [r0, 0x8] + lsls r1, 4 + ldr r0, [sp, 0x5C] + movs r2, 0x20 + bl sub_80703A8 + ldr r0, _080BBC1C @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080BBC20 @ =gUnknown_202297A + strh r1, [r0] + ldr r1, _080BBC24 @ =gUnknown_3005090 + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + mov r1, sp + ldrh r1, [r1, 0x14] + strh r1, [r0, 0xA] + mov r2, sp + ldrh r2, [r2, 0x18] + strh r2, [r0, 0x10] + mov r1, r10 + strh r1, [r0, 0x12] + mov r2, sp + ldrh r2, [r2, 0x1C] + strh r2, [r0, 0x14] + strh r7, [r0, 0x8] + mov r1, r8 + strh r1, [r0, 0xC] + mov r2, sp + ldrh r2, [r2, 0x20] + strh r2, [r0, 0xE] + ldr r1, _080BBC28 @ =sub_80BBC2C + str r1, [r0] + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BBC10: .4byte gUnknown_2023BCE +_080BBC14: .4byte gUnknown_2024284 +_080BBC18: .4byte gUnknown_2023D44 +_080BBC1C: .4byte gUnknown_2022978 +_080BBC20: .4byte gUnknown_202297A +_080BBC24: .4byte gUnknown_3005090 +_080BBC28: .4byte sub_80BBC2C + thumb_func_end sub_80BBA20 + + thumb_func_start sub_80BBC2C +sub_80BBC2C: @ 80BBC2C + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080BBC68 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r1 + movs r0, 0xA + ldrsh r2, [r3, r0] + adds r5, r1, 0 + cmp r2, 0 + bge _080BBC4A + negs r2, r2 +_080BBC4A: + ldrh r0, [r3, 0x22] + adds r4, r0, r2 + strh r4, [r3, 0x22] + movs r1, 0xA + ldrsh r0, [r3, r1] + cmp r0, 0 + bge _080BBC70 + ldr r2, _080BBC6C @ =gUnknown_202297A + lsls r1, r4, 16 + asrs r1, 24 + ldrh r0, [r2] + subs r0, r1 + strh r0, [r2] + b _080BBC7C + .align 2, 0 +_080BBC68: .4byte gUnknown_3005090 +_080BBC6C: .4byte gUnknown_202297A +_080BBC70: + ldr r1, _080BBCA0 @ =gUnknown_202297A + lsls r0, r4, 16 + asrs r0, 24 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] +_080BBC7C: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r5 + ldrh r1, [r5, 0x22] + movs r0, 0xFF + ands r0, r1 + movs r2, 0 + strh r0, [r5, 0x22] + movs r3, 0x26 + ldrsh r0, [r5, r3] + cmp r0, 0x1 + beq _080BBCE6 + cmp r0, 0x1 + bgt _080BBCA4 + cmp r0, 0 + beq _080BBCAA + b _080BBDD8 + .align 2, 0 +_080BBCA0: .4byte gUnknown_202297A +_080BBCA4: + cmp r0, 0x2 + beq _080BBD00 + b _080BBDD8 +_080BBCAA: + ldrh r0, [r5, 0x1E] + adds r1, r0, 0x1 + strh r1, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x14 + ldrsh r1, [r5, r3] + cmp r0, r1 + bge _080BBCBE + b _080BBDD8 +_080BBCBE: + strh r2, [r5, 0x1E] + ldrh r1, [r5, 0x20] + adds r1, 0x1 + strh r1, [r5, 0x20] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x20 + ldrsh r1, [r5, r0] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _080BBDD8 + b _080BBCF8 +_080BBCE6: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x12 + ldrsh r1, [r5, r3] + cmp r0, r1 + bne _080BBDD8 +_080BBCF8: + ldrh r0, [r5, 0x26] + adds r0, 0x1 + strh r0, [r5, 0x26] + b _080BBDD8 +_080BBD00: + ldrh r0, [r5, 0x1E] + adds r1, r0, 0x1 + strh r1, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x14 + ldrsh r1, [r5, r3] + cmp r0, r1 + blt _080BBDD8 + strh r2, [r5, 0x1E] + ldrh r1, [r5, 0x20] + subs r1, 0x1 + strh r1, [r5, 0x20] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x20 + ldrsh r4, [r5, r0] + cmp r4, 0 + bne _080BBDD8 + movs r0, 0 + bl sub_8073128 + ldr r0, _080BBDE0 @ =gUnknown_2022984 + strh r4, [r0] + ldr r0, _080BBDE4 @ =gUnknown_2022986 + strh r4, [r0] + ldr r4, _080BBDE8 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080BBD7E + movs r0, 0xA + bl sub_8000AC4 + mov r1, sp + strh r0, [r1] + mov r2, sp + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] + mov r0, sp + ldrh r1, [r0] + movs r0, 0xA + bl sub_8000A38 +_080BBD7E: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r3, 0x8 + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080BBDEC @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080BBDD2 + movs r2, 0xE + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 +_080BBDD2: + adds r0, r6, 0 + bl sub_8072760 +_080BBDD8: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BBDE0: .4byte gUnknown_2022984 +_080BBDE4: .4byte gUnknown_2022986 +_080BBDE8: .4byte 0x00003f3f +_080BBDEC: .4byte gUnknown_202063C + thumb_func_end sub_80BBC2C + + thumb_func_start sub_80BBDF0 +sub_80BBDF0: @ 80BBDF0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BBE08 @ =gUnknown_2037F02 + ldr r1, _080BBE0C @ =gUnknown_2022B50 + ldrb r1, [r1] + strh r1, [r2] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080BBE08: .4byte gUnknown_2037F02 +_080BBE0C: .4byte gUnknown_2022B50 + thumb_func_end sub_80BBDF0 + + thumb_func_start sub_80BBE10 +sub_80BBE10: @ 80BBE10 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002BB0 + ldr r1, _080BBE38 @ =gUnknown_202401C + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + str r0, [r1] + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BBE38: .4byte gUnknown_202401C + thumb_func_end sub_80BBE10 + + thumb_func_start sub_80BBE3C +sub_80BBE3C: @ 80BBE3C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _080BBE68 @ =gUnknown_202401C + ldr r0, [r6] + movs r5, 0xBE + lsls r5, 1 + adds r0, r5 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r6] + adds r0, r5 + movs r1, 0 + str r1, [r0] + adds r0, r4, 0 + bl sub_8072760 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BBE68: .4byte gUnknown_202401C + thumb_func_end sub_80BBE3C + + thumb_func_start sub_80BBE6C +sub_80BBE6C: @ 80BBE6C + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080BBEAC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080BBEB0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080BBEC8 + movs r2, 0x1 +_080BBE9E: + lsrs r1, 1 + adds r4, 0x1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080BBE9E + b _080BBEC8 + .align 2, 0 +_080BBEAC: .4byte gUnknown_2037F02 +_080BBEB0: + cmp r0, 0x1 + bne _080BBEBC + ldr r0, _080BBEB8 @ =gUnknown_2037F1A + b _080BBEC2 + .align 2, 0 +_080BBEB8: .4byte gUnknown_2037F1A +_080BBEBC: + cmp r0, 0x2 + bne _080BBEC8 + ldr r0, _080BBEF8 @ =gUnknown_2037F1B +_080BBEC2: + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 +_080BBEC8: + ldr r0, _080BBEFC @ =gUnknown_202401C + ldr r1, [r0] + ldr r0, _080BBF00 @ =gUnknown_2037F02 + movs r2, 0x2 + ldrsh r0, [r0, r2] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + lsls r0, 5 + adds r0, r1 + lsls r1, r4, 5 + ldr r2, _080BBF04 @ =gUnknown_20371F8 + adds r1, r2 + movs r2, 0x20 + bl memcpy + adds r0, r5, 0 + bl sub_8072760 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BBEF8: .4byte gUnknown_2037F1B +_080BBEFC: .4byte gUnknown_202401C +_080BBF00: .4byte gUnknown_2037F02 +_080BBF04: .4byte gUnknown_20371F8 + thumb_func_end sub_80BBE6C + + thumb_func_start sub_80BBF08 +sub_80BBF08: @ 80BBF08 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080BBF48 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080BBF4C + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080BBF64 + movs r2, 0x1 +_080BBF3A: + lsrs r1, 1 + adds r4, 0x1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080BBF3A + b _080BBF64 + .align 2, 0 +_080BBF48: .4byte gUnknown_2037F02 +_080BBF4C: + cmp r0, 0x1 + bne _080BBF58 + ldr r0, _080BBF54 @ =gUnknown_2037F1A + b _080BBF5E + .align 2, 0 +_080BBF54: .4byte gUnknown_2037F1A +_080BBF58: + cmp r0, 0x2 + bne _080BBF64 + ldr r0, _080BBF94 @ =gUnknown_2037F1B +_080BBF5E: + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 +_080BBF64: + lsls r0, r4, 5 + ldr r1, _080BBF98 @ =gUnknown_20371F8 + adds r0, r1 + ldr r1, _080BBF9C @ =gUnknown_202401C + ldr r2, [r1] + ldr r1, _080BBFA0 @ =gUnknown_2037F02 + movs r3, 0x2 + ldrsh r1, [r1, r3] + movs r3, 0xBE + lsls r3, 1 + adds r2, r3 + ldr r2, [r2] + lsls r1, 5 + adds r1, r2 + movs r2, 0x20 + bl memcpy + adds r0, r5, 0 + bl sub_8072760 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BBF94: .4byte gUnknown_2037F1B +_080BBF98: .4byte gUnknown_20371F8 +_080BBF9C: .4byte gUnknown_202401C +_080BBFA0: .4byte gUnknown_2037F02 + thumb_func_end sub_80BBF08 + + thumb_func_start sub_80BBFA4 +sub_80BBFA4: @ 80BBFA4 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080BBFE4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080BBFE8 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080BC000 + movs r2, 0x1 +_080BBFD6: + lsrs r1, 1 + adds r4, 0x1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080BBFD6 + b _080BC000 + .align 2, 0 +_080BBFE4: .4byte gUnknown_2037F02 +_080BBFE8: + cmp r0, 0x1 + bne _080BBFF4 + ldr r0, _080BBFF0 @ =gUnknown_2037F1A + b _080BBFFA + .align 2, 0 +_080BBFF0: .4byte gUnknown_2037F1A +_080BBFF4: + cmp r0, 0x2 + bne _080BC000 + ldr r0, _080BC020 @ =gUnknown_2037F1B +_080BBFFA: + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 +_080BC000: + lsls r1, r4, 5 + ldr r0, _080BC024 @ =gUnknown_20371F8 + adds r0, r1, r0 + ldr r2, _080BC028 @ =gUnknown_20375F8 + adds r1, r2 + movs r2, 0x20 + bl memcpy + adds r0, r5, 0 + bl sub_8072760 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BC020: .4byte gUnknown_2037F1B +_080BC024: .4byte gUnknown_20371F8 +_080BC028: .4byte gUnknown_20375F8 + thumb_func_end sub_80BBFA4 + + thumb_func_start sub_80BC02C +sub_80BC02C: @ 80BC02C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8073788 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080BC04C + ldr r1, _080BC048 @ =gUnknown_2037F02 + movs r0, 0x1 + strh r0, [r1, 0xE] + b _080BC050 + .align 2, 0 +_080BC048: .4byte gUnknown_2037F02 +_080BC04C: + ldr r0, _080BC05C @ =gUnknown_2037F02 + strh r1, [r0, 0xE] +_080BC050: + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BC05C: .4byte gUnknown_2037F02 + thumb_func_end sub_80BC02C + + thumb_func_start sub_80BC060 +sub_80BC060: @ 80BC060 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BC080 @ =gUnknown_2037F1A + ldr r1, _080BC084 @ =gUnknown_2023D6C + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _080BC088 @ =gUnknown_2037F1B + ldr r1, _080BC08C @ =gUnknown_2023D6E + ldrb r1, [r1] + strb r1, [r2] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080BC080: .4byte gUnknown_2037F1A +_080BC084: .4byte gUnknown_2023D6C +_080BC088: .4byte gUnknown_2037F1B +_080BC08C: .4byte gUnknown_2023D6E + thumb_func_end sub_80BC060 + + thumb_func_start sub_80BC090 +sub_80BC090: @ 80BC090 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080BC0B8 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + adds r4, r0, 0 + ldr r0, _080BC0BC @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080BC0C4 + ldr r1, _080BC0C0 @ =gUnknown_2037F02 + movs r0, 0x1 + b _080BC0C8 + .align 2, 0 +_080BC0B8: .4byte gUnknown_2037F1A +_080BC0BC: .4byte gUnknown_2037F1B +_080BC0C0: .4byte gUnknown_2037F02 +_080BC0C4: + ldr r1, _080BC0D8 @ =gUnknown_2037F02 + movs r0, 0 +_080BC0C8: + strh r0, [r1, 0xE] + adds r0, r5, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BC0D8: .4byte gUnknown_2037F02 + thumb_func_end sub_80BC090 + + thumb_func_start sub_80BC0DC +sub_80BC0DC: @ 80BC0DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BC0F4 @ =gUnknown_2037F1B + ldr r1, _080BC0F8 @ =gUnknown_2023D6C + ldrb r1, [r1] + strb r1, [r2] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080BC0F4: .4byte gUnknown_2037F1B +_080BC0F8: .4byte gUnknown_2023D6C + thumb_func_end sub_80BC0DC + + thumb_func_start sub_80BC0FC +sub_80BC0FC: @ 80BC0FC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BC11C @ =gUnknown_2037F1A + ldr r1, _080BC120 @ =gUnknown_2023D6B + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _080BC124 @ =gUnknown_2037F1B + ldr r1, _080BC128 @ =gUnknown_2023D6E + ldrb r1, [r1] + strb r1, [r2] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080BC11C: .4byte gUnknown_2037F1A +_080BC120: .4byte gUnknown_2023D6B +_080BC124: .4byte gUnknown_2037F1B +_080BC128: .4byte gUnknown_2023D6E + thumb_func_end sub_80BC0FC + + thumb_func_start sub_80BC12C +sub_80BC12C: @ 80BC12C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080BC144 + adds r0, r4, 0 + bl sub_8072760 + b _080BC180 +_080BC144: + ldr r0, _080BC188 @ =gUnknown_3005090 + lsls r3, r4, 2 + adds r3, r4 + lsls r3, 3 + adds r3, r0 + ldr r0, _080BC18C @ =gUnknown_2024018 + ldr r4, [r0] + ldr r2, _080BC190 @ =gUnknown_2037F1A + ldrb r0, [r2] + ldr r1, [r4] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 31 + lsrs r0, 31 + strh r0, [r3, 0x8] + ldrb r1, [r2] + ldr r0, [r4] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] + ldr r0, _080BC194 @ =sub_80BC19C + str r0, [r3] + ldr r1, _080BC198 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080BC180: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BC188: .4byte gUnknown_3005090 +_080BC18C: .4byte gUnknown_2024018 +_080BC190: .4byte gUnknown_2037F1A +_080BC194: .4byte sub_80BC19C +_080BC198: .4byte gUnknown_2037EE2 + thumb_func_end sub_80BC12C + + thumb_func_start sub_80BC19C +sub_80BC19C: @ 80BC19C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BC1E8 @ =gUnknown_2037F02 + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x80 + lsls r0, 5 + cmp r1, r0 + bne _080BC1E0 + ldr r0, _080BC1EC @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080BC1F0 @ =gUnknown_2037F1A + ldrb r3, [r0] + ldr r0, [r1] + lsls r3, 2 + adds r3, r0 + ldr r1, _080BC1F4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x8] + movs r1, 0x1 + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, 0 + bl sub_8077508 +_080BC1E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BC1E8: .4byte gUnknown_2037F02 +_080BC1EC: .4byte gUnknown_2024018 +_080BC1F0: .4byte gUnknown_2037F1A +_080BC1F4: .4byte gUnknown_3005090 + thumb_func_end sub_80BC19C + + thumb_func_start sub_80BC1F8 +sub_80BC1F8: @ 80BC1F8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + cmp r6, 0x3 + bls _080BC20C + b _080BC2FE +_080BC20C: + ldr r0, _080BC228 @ =gUnknown_83E7CCA + adds r0, r6, r0 + ldrb r0, [r0] + bl sub_8000AC4 + ldr r1, _080BC22C @ =gUnknown_20399B8 + strh r0, [r1] + cmp r5, 0x6 + bhi _080BC2F0 + lsls r0, r5, 2 + ldr r1, _080BC230 @ =_080BC234 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BC228: .4byte gUnknown_83E7CCA +_080BC22C: .4byte gUnknown_20399B8 +_080BC230: .4byte _080BC234 + .align 2, 0 +_080BC234: + .4byte _080BC250 + .4byte _080BC264 + .4byte _080BC27C + .4byte _080BC294 + .4byte _080BC2AC + .4byte _080BC2C8 + .4byte _080BC2DC +_080BC250: + ldr r2, _080BC260 @ =gUnknown_20399B8 + lsls r3, r4, 6 + ldrb r1, [r2, 0x1] + movs r0, 0x3F + ands r0, r1 + orrs r0, r3 + strb r0, [r2, 0x1] + b _080BC2F0 + .align 2, 0 +_080BC260: .4byte gUnknown_20399B8 +_080BC264: + ldr r3, _080BC278 @ =gUnknown_20399B8 + movs r0, 0x1 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 5 + ldrb r2, [r3, 0x1] + movs r0, 0x21 + negs r0, r0 + b _080BC2EA + .align 2, 0 +_080BC278: .4byte gUnknown_20399B8 +_080BC27C: + ldr r3, _080BC290 @ =gUnknown_20399B8 + movs r0, 0x1 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 6 + ldrb r2, [r3] + movs r0, 0x41 + negs r0, r0 + b _080BC2BA + .align 2, 0 +_080BC290: .4byte gUnknown_20399B8 +_080BC294: + ldr r3, _080BC2A8 @ =gUnknown_20399B8 + movs r0, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0xD + negs r0, r0 + b _080BC2BA + .align 2, 0 +_080BC2A8: .4byte gUnknown_20399B8 +_080BC2AC: + ldr r3, _080BC2C4 @ =gUnknown_20399B8 + movs r0, 0x3 + adds r1, r4, 0 + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x4 + negs r0, r0 +_080BC2BA: + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080BC2F0 + .align 2, 0 +_080BC2C4: .4byte gUnknown_20399B8 +_080BC2C8: + ldr r2, _080BC2D8 @ =gUnknown_20399B8 + lsls r3, r4, 7 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + b _080BC2F0 + .align 2, 0 +_080BC2D8: .4byte gUnknown_20399B8 +_080BC2DC: + ldr r3, _080BC304 @ =gUnknown_20399B8 + movs r0, 0x1F + adds r1, r4, 0 + ands r1, r0 + ldrb r2, [r3, 0x1] + movs r0, 0x20 + negs r0, r0 +_080BC2EA: + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] +_080BC2F0: + ldr r0, _080BC308 @ =gUnknown_83E7CCA + adds r0, r6, r0 + ldrb r0, [r0] + ldr r1, _080BC304 @ =gUnknown_20399B8 + ldrh r1, [r1] + bl sub_8000A38 +_080BC2FE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BC304: .4byte gUnknown_20399B8 +_080BC308: .4byte gUnknown_83E7CCA + thumb_func_end sub_80BC1F8 + + thumb_func_start sub_80BC30C +sub_80BC30C: @ 80BC30C + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r2, 0x3 + bhi _080BC394 + ldr r0, _080BC338 @ =gUnknown_83E7CCE + adds r0, r2, r0 + ldrb r0, [r0] + bl sub_8000AC4 + mov r1, sp + strh r0, [r1] + cmp r4, 0x6 + bhi _080BC394 + lsls r0, r4, 2 + ldr r1, _080BC33C @ =_080BC340 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BC338: .4byte gUnknown_83E7CCE +_080BC33C: .4byte _080BC340 + .align 2, 0 +_080BC340: + .4byte _080BC35C + .4byte _080BC364 + .4byte _080BC36C + .4byte _080BC374 + .4byte _080BC37C + .4byte _080BC384 + .4byte _080BC38C +_080BC35C: + ldr r0, [sp] + lsls r0, 16 + lsrs r0, 30 + b _080BC396 +_080BC364: + ldr r0, [sp] + lsls r0, 18 + lsrs r0, 31 + b _080BC396 +_080BC36C: + ldr r0, [sp] + lsls r0, 25 + lsrs r0, 31 + b _080BC396 +_080BC374: + ldr r0, [sp] + lsls r0, 28 + lsrs r0, 30 + b _080BC396 +_080BC37C: + ldr r0, [sp] + lsls r0, 30 + lsrs r0, 30 + b _080BC396 +_080BC384: + ldr r0, [sp] + lsls r0, 24 + lsrs r0, 31 + b _080BC396 +_080BC38C: + ldr r0, [sp] + lsls r0, 19 + lsrs r0, 27 + b _080BC396 +_080BC394: + movs r0, 0 +_080BC396: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BC30C + + thumb_func_start sub_80BC3A0 +sub_80BC3A0: @ 80BC3A0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BC3B8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BC3C0 + ldr r0, _080BC3BC @ =sub_80BCC4C + b _080BC3E8 + .align 2, 0 +_080BC3B8: .4byte gUnknown_2022B4C +_080BC3BC: .4byte sub_80BCC4C +_080BC3C0: + movs r0, 0x80 + lsls r0, 5 + ands r1, r0 + cmp r1, 0 + beq _080BC3E0 + ldr r0, _080BC3D8 @ =gUnknown_81E9F10 + ldrb r0, [r0] + cmp r0, 0x2 + beq _080BC3E0 + movs r4, 0x3 + ldr r0, _080BC3DC @ =sub_80BC6C8 + b _080BC3E8 + .align 2, 0 +_080BC3D8: .4byte gUnknown_81E9F10 +_080BC3DC: .4byte sub_80BC6C8 +_080BC3E0: + ldr r1, _080BC414 @ =gUnknown_83E7CD4 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] +_080BC3E8: + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080BC418 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0 + strh r0, [r1, 0x8] + strh r4, [r1, 0xA] + strh r0, [r1, 0xC] + strh r0, [r1, 0xE] + strh r0, [r1, 0x10] + strh r0, [r1, 0x12] + strh r0, [r1, 0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BC414: .4byte gUnknown_83E7CD4 +_080BC418: .4byte gUnknown_3005090 + thumb_func_end sub_80BC3A0 + + thumb_func_start sub_80BC41C +sub_80BC41C: @ 80BC41C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r0, _080BC468 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080BC46C @ =gUnknown_202297A + strh r1, [r0] + ldr r0, _080BC470 @ =gUnknown_202297C + strh r1, [r0] + ldr r0, _080BC474 @ =gUnknown_202297E + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r4, _080BC478 @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BC468: .4byte gUnknown_2022978 +_080BC46C: .4byte gUnknown_202297A +_080BC470: .4byte gUnknown_202297C +_080BC474: .4byte gUnknown_202297E +_080BC478: .4byte 0x00003f3f + thumb_func_end sub_80BC41C + + thumb_func_start sub_80BC47C +sub_80BC47C: @ 80BC47C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080BC4B4 @ =gUnknown_2022978 + ldrh r0, [r1] + adds r0, 0x6 + strh r0, [r1] + ldr r1, _080BC4B8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + mov r8, r1 + cmp r0, 0x4 + bls _080BC4A8 + b _080BC6BA +_080BC4A8: + lsls r0, 2 + ldr r1, _080BC4BC @ =_080BC4C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BC4B4: .4byte gUnknown_2022978 +_080BC4B8: .4byte gUnknown_3005090 +_080BC4BC: .4byte _080BC4C0 + .align 2, 0 +_080BC4C0: + .4byte _080BC4D4 + .4byte _080BC504 + .4byte _080BC52C + .4byte _080BC574 + .4byte _080BC6B4 +_080BC4D4: + ldr r0, _080BC4EC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BC4F0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r8 + movs r1, 0x10 + b _080BC4FA + .align 2, 0 +_080BC4EC: .4byte gUnknown_2022B4C +_080BC4F0: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r8 + movs r1, 0x1 +_080BC4FA: + strh r1, [r0, 0xC] + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _080BC6BA +_080BC504: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + mov r3, r8 + adds r1, r0, r3 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080BC51C + b _080BC6BA +_080BC51C: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + b _080BC6BA +_080BC52C: + ldr r1, _080BC568 @ =gUnknown_2022986 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080BC544 + b _080BC6BA +_080BC544: + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + add r1, r8 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + ldr r2, _080BC56C @ =gUnknown_2023F4C + ldrh r1, [r2] + ldr r0, _080BC570 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080BC6BA + .align 2, 0 +_080BC568: .4byte gUnknown_2022986 +_080BC56C: .4byte gUnknown_2023F4C +_080BC570: .4byte 0x0000fffe +_080BC574: + lsls r0, r4, 2 + adds r1, r0, r4 + lsls r1, 3 + mov r5, r8 + adds r2, r1, r5 + ldrh r3, [r2, 0xE] + movs r5, 0xE + ldrsh r1, [r2, r5] + mov r12, r0 + cmp r1, 0 + beq _080BC590 + subs r0, r3, 0x1 + strh r0, [r2, 0xE] + b _080BC5BE +_080BC590: + movs r1, 0xA + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bne _080BC5B0 + ldr r2, _080BC5A8 @ =gUnknown_202297A + ldrh r1, [r2] + ldr r0, _080BC5AC @ =0x0000ffb0 + cmp r1, r0 + beq _080BC5BE + subs r0, r1, 0x2 + b _080BC5BC + .align 2, 0 +_080BC5A8: .4byte gUnknown_202297A +_080BC5AC: .4byte 0x0000ffb0 +_080BC5B0: + ldr r2, _080BC690 @ =gUnknown_202297A + ldrh r1, [r2] + ldr r0, _080BC694 @ =0x0000ffc8 + cmp r1, r0 + beq _080BC5BE + subs r0, r1, 0x1 +_080BC5BC: + strh r0, [r2] +_080BC5BE: + ldr r2, _080BC698 @ =gUnknown_2022986 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080BC5D2 + ldr r3, _080BC69C @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080BC5D2: + mov r5, r12 + adds r0, r5, r4 + lsls r0, 3 + mov r2, r8 + adds r1, r0, r2 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080BC5EA + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080BC5EA: + movs r3, 0 + ldr r5, _080BC6A0 @ =gUnknown_2039600 + mov r9, r5 + ldr r7, _080BC6A4 @ =gUnknown_2038700 + mov r6, r9 + adds r5, r1, 0 +_080BC5F6: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r5, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080BC5F6 + cmp r3, 0x9F + bgt _080BC63A + ldr r7, _080BC6A4 @ =gUnknown_2038700 + ldr r6, _080BC6A0 @ =gUnknown_2039600 + ldr r1, _080BC6A8 @ =gUnknown_3005090 + mov r2, r12 + adds r0, r2, r4 + lsls r0, 3 + adds r5, r0, r1 +_080BC620: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r5, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080BC620 +_080BC63A: + mov r3, r12 + adds r0, r3, r4 + lsls r0, 3 + mov r5, r8 + adds r1, r0, r5 + movs r0, 0xC + ldrsh r2, [r1, r0] + cmp r2, 0 + bne _080BC6BA + movs r0, 0x3 + mov r3, r9 + strb r0, [r3, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r2, [sp] + ldr r1, _080BC6AC @ =0x0600e000 + ldr r2, _080BC6B0 @ =0x05000200 + mov r0, sp + bl CpuSet + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r1, 0x9C + lsls r1, 8 + movs r0, 0xA + bl sub_8000A38 + movs r1, 0xBC + lsls r1, 7 + movs r0, 0xC + bl sub_8000A38 + b _080BC6BA + .align 2, 0 +_080BC690: .4byte gUnknown_202297A +_080BC694: .4byte 0x0000ffc8 +_080BC698: .4byte gUnknown_2022986 +_080BC69C: .4byte 0xfffffc04 +_080BC6A0: .4byte gUnknown_2039600 +_080BC6A4: .4byte gUnknown_2038700 +_080BC6A8: .4byte gUnknown_3005090 +_080BC6AC: .4byte 0x0600e000 +_080BC6B0: .4byte 0x05000200 +_080BC6B4: + adds r0, r4, 0 + bl sub_80BC41C +_080BC6BA: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BC47C + + thumb_func_start sub_80BC6C8 +sub_80BC6C8: @ 80BC6C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080BC6F4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0xA + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x3 + beq _080BC708 + cmp r0, 0x3 + bgt _080BC6F8 + cmp r0, 0x2 + beq _080BC6FC + b _080BC710 + .align 2, 0 +_080BC6F4: .4byte gUnknown_3005090 +_080BC6F8: + cmp r0, 0x4 + bne _080BC710 +_080BC6FC: + ldr r1, _080BC704 @ =gUnknown_2022978 + ldrh r0, [r1] + adds r0, 0x8 + b _080BC70E + .align 2, 0 +_080BC704: .4byte gUnknown_2022978 +_080BC708: + ldr r1, _080BC74C @ =gUnknown_2022978 + ldrh r0, [r1] + adds r0, 0x6 +_080BC70E: + strh r0, [r1] +_080BC710: + lsls r0, r5, 2 + adds r1, r0, r5 + lsls r1, 3 + adds r4, r1, r2 + movs r3, 0xA + ldrsh r1, [r4, r3] + adds r6, r0, 0 + cmp r1, 0x4 + bne _080BC774 + ldr r7, _080BC750 @ =gUnknown_202297A + ldrh r0, [r4, 0x14] + bl sub_8044EB0 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080BC736 + ldr r1, _080BC754 @ =0x000001ff + adds r0, r1 +_080BC736: + asrs r0, 9 + subs r0, 0x8 + strh r0, [r7] + ldrh r1, [r4, 0x14] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0xB3 + bgt _080BC758 + adds r0, r1, 0x4 + b _080BC75A + .align 2, 0 +_080BC74C: .4byte gUnknown_2022978 +_080BC750: .4byte gUnknown_202297A +_080BC754: .4byte 0x000001ff +_080BC758: + adds r0, r1, 0x6 +_080BC75A: + strh r0, [r4, 0x14] + ldr r2, _080BC790 @ =gUnknown_3005090 + adds r0, r6, r5 + lsls r0, 3 + adds r3, r0, r2 + movs r0, 0x14 + ldrsh r1, [r3, r0] + movs r0, 0xB4 + lsls r0, 1 + cmp r1, r0 + bne _080BC774 + movs r0, 0 + strh r0, [r3, 0x14] +_080BC774: + adds r0, r6, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x4 + bls _080BC784 + b _080BC9AA +_080BC784: + lsls r0, 2 + ldr r1, _080BC794 @ =_080BC798 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BC790: .4byte gUnknown_3005090 +_080BC794: .4byte _080BC798 + .align 2, 0 +_080BC798: + .4byte _080BC7AC + .4byte _080BC7DC + .4byte _080BC808 + .4byte _080BC858 + .4byte _080BC9A4 +_080BC7AC: + ldr r1, _080BC7C8 @ =gUnknown_3005090 + adds r0, r6, r5 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0x10 + strh r3, [r2, 0x10] + ldr r0, _080BC7CC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BC7D0 + strh r3, [r2, 0xC] + b _080BC7D4 + .align 2, 0 +_080BC7C8: .4byte gUnknown_3005090 +_080BC7CC: .4byte gUnknown_2022B4C +_080BC7D0: + movs r0, 0x1 + strh r0, [r2, 0xC] +_080BC7D4: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080BC9AA +_080BC7DC: + ldr r0, _080BC804 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080BC7F2 + b _080BC9AA +_080BC7F2: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + b _080BC9AA + .align 2, 0 +_080BC804: .4byte gUnknown_3005090 +_080BC808: + ldr r1, _080BC848 @ =gUnknown_2022986 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080BC820 + b _080BC9AA +_080BC820: + ldr r0, _080BC84C @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + movs r0, 0x1 + strh r0, [r1, 0x12] + ldr r2, _080BC850 @ =gUnknown_2023F4C + ldrh r1, [r2] + ldr r0, _080BC854 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080BC9AA + .align 2, 0 +_080BC848: .4byte gUnknown_2022986 +_080BC84C: .4byte gUnknown_3005090 +_080BC850: .4byte gUnknown_2023F4C +_080BC854: .4byte 0x0000fffe +_080BC858: + ldr r0, _080BC890 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r2, [r1, 0xE] + movs r3, 0xE + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080BC898 + subs r0, r2, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080BC8B8 + ldr r1, _080BC894 @ =0x00001842 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0xF + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + b _080BC8B8 + .align 2, 0 +_080BC890: .4byte gUnknown_3005090 +_080BC894: .4byte 0x00001842 +_080BC898: + ldrh r2, [r1, 0x10] + movs r0, 0x1F + ands r0, r2 + cmp r0, 0 + beq _080BC8B8 + ldrh r0, [r1, 0x12] + subs r0, 0x1 + strh r0, [r1, 0x12] + lsls r0, 16 + cmp r0, 0 + bne _080BC8B8 + adds r0, r2, 0 + adds r0, 0xFF + strh r0, [r1, 0x10] + movs r0, 0x4 + strh r0, [r1, 0x12] +_080BC8B8: + ldr r2, _080BC988 @ =gUnknown_2022986 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080BC8CC + ldr r3, _080BC98C @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080BC8CC: + ldr r0, _080BC990 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080BC8E2 + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080BC8E2: + movs r3, 0 + ldr r0, _080BC994 @ =gUnknown_2039600 + mov r8, r0 + ldr r2, _080BC998 @ =gUnknown_2038700 + mov r12, r2 + mov r7, r8 + adds r4, r1, 0 +_080BC8F0: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r12 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080BC8F0 + cmp r3, 0x9F + bgt _080BC934 + ldr r0, _080BC998 @ =gUnknown_2038700 + mov r12, r0 + ldr r7, _080BC994 @ =gUnknown_2039600 + ldr r1, _080BC990 @ =gUnknown_3005090 + adds r0, r6, r5 + lsls r0, 3 + adds r4, r0, r1 +_080BC91A: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r12 + ldrh r0, [r4, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080BC91A +_080BC934: + ldr r1, _080BC990 @ =gUnknown_3005090 + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r3, 0xC + ldrsh r2, [r1, r3] + cmp r2, 0 + bne _080BC9AA + movs r0, 0x3 + mov r3, r8 + strb r0, [r3, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r2, [sp] + ldr r1, _080BC99C @ =0x0600e000 + ldr r2, _080BC9A0 @ =0x05000200 + mov r0, sp + bl CpuSet + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r1, 0x9C + lsls r1, 8 + movs r0, 0xA + bl sub_8000A38 + movs r1, 0xBC + lsls r1, 7 + movs r0, 0xC + bl sub_8000A38 + b _080BC9AA + .align 2, 0 +_080BC988: .4byte gUnknown_2022986 +_080BC98C: .4byte 0xfffffc04 +_080BC990: .4byte gUnknown_3005090 +_080BC994: .4byte gUnknown_2039600 +_080BC998: .4byte gUnknown_2038700 +_080BC99C: .4byte 0x0600e000 +_080BC9A0: .4byte 0x05000200 +_080BC9A4: + adds r0, r5, 0 + bl sub_80BC41C +_080BC9AA: + ldr r0, _080BC9D0 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _080BC9C2 + ldrh r1, [r1, 0x10] + movs r0, 0x52 + bl sub_8000A38 +_080BC9C2: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BC9D0: .4byte gUnknown_3005090 + thumb_func_end sub_80BC6C8 + + thumb_func_start sub_80BC9D4 +sub_80BC9D4: @ 80BC9D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080BCA08 @ =gUnknown_2022978 + ldrh r0, [r1] + adds r0, 0x8 + strh r0, [r1] + ldr r1, _080BCA0C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r4, r1, 0 + cmp r0, 0x4 + bls _080BC9FE + b _080BCC22 +_080BC9FE: + lsls r0, 2 + ldr r1, _080BCA10 @ =_080BCA14 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BCA08: .4byte gUnknown_2022978 +_080BCA0C: .4byte gUnknown_3005090 +_080BCA10: .4byte _080BCA14 + .align 2, 0 +_080BCA14: + .4byte _080BCA28 + .4byte _080BCA7C + .4byte _080BCAA8 + .4byte _080BCAF8 + .4byte _080BCC1C +_080BCA28: + ldr r1, _080BCA60 @ =0x00001842 + movs r0, 0x50 + bl sub_8000A38 + ldr r4, _080BCA64 @ =0x00000808 + movs r0, 0x52 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r1, _080BCA68 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r2, r0, r1 + strh r4, [r2, 0x10] + ldr r0, _080BCA6C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BCA70 + movs r0, 0x10 + b _080BCA72 + .align 2, 0 +_080BCA60: .4byte 0x00001842 +_080BCA64: .4byte 0x00000808 +_080BCA68: .4byte gUnknown_3005090 +_080BCA6C: .4byte gUnknown_2022B4C +_080BCA70: + movs r0, 0x1 +_080BCA72: + strh r0, [r2, 0xC] + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080BCC22 +_080BCA7C: + ldr r0, _080BCAA4 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080BCA94 + b _080BCC22 +_080BCA94: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + b _080BCC22 + .align 2, 0 +_080BCAA4: .4byte gUnknown_3005090 +_080BCAA8: + ldr r1, _080BCAE8 @ =gUnknown_2022986 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080BCAC0 + b _080BCC22 +_080BCAC0: + ldr r0, _080BCAEC @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + movs r0, 0x1 + strh r0, [r1, 0x12] + ldr r2, _080BCAF0 @ =gUnknown_2023F4C + ldrh r1, [r2] + ldr r0, _080BCAF4 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080BCC22 + .align 2, 0 +_080BCAE8: .4byte gUnknown_2022986 +_080BCAEC: .4byte gUnknown_3005090 +_080BCAF0: .4byte gUnknown_2023F4C +_080BCAF4: .4byte 0x0000fffe +_080BCAF8: + lsls r0, r5, 2 + adds r1, r0, r5 + lsls r1, 3 + adds r2, r1, r4 + ldrh r3, [r2, 0xE] + movs r6, 0xE + ldrsh r1, [r2, r6] + mov r12, r0 + cmp r1, 0 + beq _080BCB12 + subs r0, r3, 0x1 + strh r0, [r2, 0xE] + b _080BCB32 +_080BCB12: + ldrh r1, [r2, 0x10] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + beq _080BCB32 + ldrh r0, [r2, 0x12] + subs r0, 0x1 + strh r0, [r2, 0x12] + lsls r0, 16 + cmp r0, 0 + bne _080BCB32 + adds r0, r1, 0 + adds r0, 0xFF + strh r0, [r2, 0x10] + movs r0, 0x6 + strh r0, [r2, 0x12] +_080BCB32: + ldr r2, _080BCC00 @ =gUnknown_2022986 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080BCB46 + ldr r3, _080BCC04 @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080BCB46: + mov r6, r12 + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r4 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080BCB5C + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080BCB5C: + movs r3, 0 + ldr r6, _080BCC08 @ =gUnknown_2039600 + mov r8, r6 + ldr r7, _080BCC0C @ =gUnknown_2038700 + adds r4, r1, 0 +_080BCB66: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080BCB66 + cmp r3, 0x9F + bgt _080BCBAA + ldr r7, _080BCC0C @ =gUnknown_2038700 + ldr r6, _080BCC08 @ =gUnknown_2039600 + ldr r1, _080BCC10 @ =gUnknown_3005090 + mov r2, r12 + adds r0, r2, r5 + lsls r0, 3 + adds r4, r0, r1 +_080BCB90: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r4, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080BCB90 +_080BCBAA: + ldr r1, _080BCC10 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r3, 0xC + ldrsh r2, [r1, r3] + cmp r2, 0 + bne _080BCC22 + movs r0, 0x3 + mov r6, r8 + strb r0, [r6, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r2, [sp] + ldr r1, _080BCC14 @ =0x0600e000 + ldr r2, _080BCC18 @ =0x05000200 + mov r0, sp + bl CpuSet + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r1, 0x9C + lsls r1, 8 + movs r0, 0xA + bl sub_8000A38 + movs r1, 0xBC + lsls r1, 7 + movs r0, 0xC + bl sub_8000A38 + b _080BCC22 + .align 2, 0 +_080BCC00: .4byte gUnknown_2022986 +_080BCC04: .4byte 0xfffffc04 +_080BCC08: .4byte gUnknown_2039600 +_080BCC0C: .4byte gUnknown_2038700 +_080BCC10: .4byte gUnknown_3005090 +_080BCC14: .4byte 0x0600e000 +_080BCC18: .4byte 0x05000200 +_080BCC1C: + adds r0, r5, 0 + bl sub_80BC41C +_080BCC22: + ldr r0, _080BCC48 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _080BCC3C + ldrh r1, [r1, 0x10] + movs r0, 0x52 + bl sub_8000A38 +_080BCC3C: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BCC48: .4byte gUnknown_3005090 + thumb_func_end sub_80BC9D4 + + thumb_func_start sub_80BCC4C +sub_80BCC4C: @ 80BCC4C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080BCC98 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r7, r0, r1 + movs r1, 0x8 + ldrsh r0, [r7, r1] + cmp r0, 0x1 + ble _080BCCC2 + movs r2, 0x10 + ldrsh r0, [r7, r2] + cmp r0, 0 + bne _080BCCC2 + ldr r2, _080BCC9C @ =gUnknown_2022978 + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + bne _080BCC8A + cmp r1, 0x4F + bhi _080BCCA4 +_080BCC8A: + adds r0, r1, 0x3 + strh r0, [r2] + ldr r1, _080BCCA0 @ =gUnknown_202297C + ldrh r0, [r1] + subs r0, 0x3 + strh r0, [r1] + b _080BCCC2 + .align 2, 0 +_080BCC98: .4byte gUnknown_3005090 +_080BCC9C: .4byte gUnknown_2022978 +_080BCCA0: .4byte gUnknown_202297C +_080BCCA4: + str r5, [sp] + ldr r1, _080BCCE4 @ =0x0600e000 + ldr r4, _080BCCE8 @ =0x05000200 + mov r0, sp + adds r2, r4, 0 + bl CpuSet + str r5, [sp, 0x4] + add r0, sp, 0x4 + ldr r1, _080BCCEC @ =0x0600f000 + adds r2, r4, 0 + bl CpuSet + movs r0, 0x1 + strh r0, [r7, 0x10] +_080BCCC2: + ldr r0, _080BCCF0 @ =gUnknown_3005090 + lsls r2, r6, 2 + adds r1, r2, r6 + lsls r1, 3 + adds r1, r0 + movs r3, 0x8 + ldrsh r1, [r1, r3] + mov r9, r0 + adds r5, r2, 0 + cmp r1, 0x4 + bls _080BCCDA + b _080BCEE6 +_080BCCDA: + lsls r0, r1, 2 + ldr r1, _080BCCF4 @ =_080BCCF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BCCE4: .4byte 0x0600e000 +_080BCCE8: .4byte 0x05000200 +_080BCCEC: .4byte 0x0600f000 +_080BCCF0: .4byte gUnknown_3005090 +_080BCCF4: .4byte _080BCCF8 + .align 2, 0 +_080BCCF8: + .4byte _080BCD0C + .4byte _080BCD1E + .4byte _080BCDC4 + .4byte _080BCE08 + .4byte _080BCEE0 +_080BCD0C: + adds r0, r5, r6 + lsls r0, 3 + add r0, r9 + movs r1, 0x20 + strh r1, [r0, 0xC] + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _080BCEE6 +_080BCD1E: + adds r0, r5, r6 + lsls r0, 3 + mov r2, r9 + adds r1, r0, r2 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080BCD34 + b _080BCEE6 +_080BCD34: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r4, _080BCDB4 @ =gUnknown_202063C + ldr r5, _080BCDB8 @ =gUnknown_2023FE8 + ldr r0, [r5] + adds r0, 0x7D + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r3, [r1, 0x1] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + movs r3, 0x8 + mov r9, r3 + mov r3, r9 + orrs r0, r3 + strb r0, [r1, 0x1] + ldr r3, [r5] + adds r0, r3, 0 + adds r0, 0x7D + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + movs r1, 0x1C + adds r1, r4 + mov r8, r1 + add r0, r8 + ldr r6, _080BCDBC @ =sub_801182C + str r6, [r0] + adds r3, 0x7E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + ands r2, r1 + mov r3, r9 + orrs r2, r3 + strb r2, [r0, 0x1] + ldr r0, [r5] + adds r0, 0x7E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + str r6, [r0] + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + ldr r1, _080BCDC0 @ =0x00003f06 + movs r0, 0x4A + bl sub_8000A38 + b _080BCEE6 + .align 2, 0 +_080BCDB4: .4byte gUnknown_202063C +_080BCDB8: .4byte gUnknown_2023FE8 +_080BCDBC: .4byte sub_801182C +_080BCDC0: .4byte 0x00003f06 +_080BCDC4: + ldr r1, _080BCDFC @ =gUnknown_2022986 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080BCDDC + b _080BCEE6 +_080BCDDC: + adds r1, r5, r6 + lsls r1, 3 + add r1, r9 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + ldr r2, _080BCE00 @ =gUnknown_2023F4C + ldrh r1, [r2] + ldr r0, _080BCE04 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080BCEE6 + .align 2, 0 +_080BCDFC: .4byte gUnknown_2022986 +_080BCE00: .4byte gUnknown_2023F4C +_080BCE04: .4byte 0x0000fffe +_080BCE08: + ldr r2, _080BCECC @ =gUnknown_2022986 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080BCE1C + ldr r3, _080BCED0 @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080BCE1C: + adds r0, r5, r6 + lsls r0, 3 + mov r2, r9 + adds r1, r0, r2 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080BCE32 + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080BCE32: + movs r3, 0 + ldr r0, _080BCED4 @ =gUnknown_2039600 + mov r12, r0 + ldr r2, _080BCED8 @ =gUnknown_2038700 + mov r8, r2 + mov r7, r12 + adds r4, r1, 0 +_080BCE40: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r8 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080BCE40 + cmp r3, 0x9F + bgt _080BCE84 + ldr r0, _080BCED8 @ =gUnknown_2038700 + mov r8, r0 + ldr r7, _080BCED4 @ =gUnknown_2039600 + ldr r1, _080BCEDC @ =gUnknown_3005090 + adds r0, r5, r6 + lsls r0, 3 + adds r4, r0, r1 +_080BCE6A: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r8 + ldrh r0, [r4, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080BCE6A +_080BCE84: + adds r0, r5, r6 + lsls r0, 3 + mov r2, r9 + adds r1, r0, r2 + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080BCEE6 + movs r0, 0x3 + mov r2, r12 + strb r0, [r2, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r1, 0x9C + lsls r1, 8 + movs r0, 0xA + bl sub_8000A38 + movs r1, 0xBC + lsls r1, 7 + movs r0, 0xC + bl sub_8000A38 + b _080BCEE6 + .align 2, 0 +_080BCECC: .4byte gUnknown_2022986 +_080BCED0: .4byte 0xfffffc04 +_080BCED4: .4byte gUnknown_2039600 +_080BCED8: .4byte gUnknown_2038700 +_080BCEDC: .4byte gUnknown_3005090 +_080BCEE0: + adds r0, r6, 0 + bl sub_80BC41C +_080BCEE6: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BCC4C + + thumb_func_start sub_80BCEF4 +sub_80BCEF4: @ 80BCEF4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + adds r6, r2, 0 + adds r4, r3, 0 + ldr r0, [sp, 0x24] + ldr r7, [sp, 0x28] + ldr r2, [sp, 0x2C] + mov r9, r2 + ldr r5, [sp, 0x30] + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080BCFC4 @ =gUnknown_202401C + ldr r2, [r1] + lsls r4, 2 + adds r2, 0x4 + adds r2, r4 + ldr r1, _080BCFC8 @ =gUnknown_2024024 + adds r0, r1 + ldrb r1, [r0] + lsls r1, 11 + ldr r0, [r2] + adds r0, r1 + movs r2, 0x80 + lsls r2, 3 + adds r1, r7, 0 + bl CpuSet + ldr r1, [sp] + lsls r0, r1, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 5 + adds r1, r7, 0 + adds r3, r5, 0 + bl sub_80017D0 + adds r0, r6, 0 + adds r0, 0x8 + cmp r6, r0 + bge _080BCFA0 + mov r12, r0 + mov r2, r8 + lsls r7, r2, 1 +_080BCF72: + mov r1, r8 + adds r2, r1, 0 + adds r2, 0x8 + adds r4, r6, 0x1 + cmp r1, r2 + bge _080BCF9A + mov r0, r10 + lsls r3, r0, 12 + lsls r0, r6, 6 + add r0, r9 + adds r6, r7, r0 + subs r1, r2, r1 +_080BCF8A: + adds r0, r5, 0 + orrs r0, r3 + strh r0, [r6] + adds r5, 0x1 + adds r6, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _080BCF8A +_080BCF9A: + adds r6, r4, 0 + cmp r6, r12 + blt _080BCF72 +_080BCFA0: + ldr r1, [sp] + lsls r0, r1, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 4 + mov r1, r9 + movs r3, 0 + bl sub_8001888 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BCFC4: .4byte gUnknown_202401C +_080BCFC8: .4byte gUnknown_2024024 + thumb_func_end sub_80BCEF4 + + thumb_func_start sub_80BCFCC +sub_80BCFCC: @ 80BCFCC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + mov r8, r5 + ldr r5, [sp, 0x2C] + ldr r6, [sp, 0x30] + mov r9, r6 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r1, 24 + lsls r2, 24 + lsls r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + mov r7, r8 + lsls r7, 16 + lsrs r6, r7, 16 + lsls r5, 24 + lsrs r5, 24 + mov r0, r9 + lsls r0, 24 + mov r9, r0 + ldr r4, _080BD090 @ =0x040000d4 + ldr r0, _080BD094 @ =gUnknown_202401C + ldr r0, [r0] + lsrs r2, 22 + adds r0, 0x4 + adds r0, r2 + lsrs r3, 13 + ldr r0, [r0] + adds r0, r3 + str r0, [r4] + movs r0, 0xC0 + lsls r0, 19 + adds r6, r0 + str r6, [r4, 0x4] + ldr r0, _080BD098 @ =0x80000400 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r2, r7, 0 + lsrs r2, 21 + mov r6, r9 + lsrs r6, 15 + subs r4, r2, r6 + lsrs r0, r1, 24 + adds r1, r0, 0 + adds r1, 0x8 + cmp r0, r1 + bge _080BD080 + mov r9, r1 + mov r7, r12 + lsls r7, 1 + mov r8, r7 + lsls r5, 11 + str r5, [sp] +_080BD048: + mov r2, r12 + adds r3, r2, 0 + adds r3, 0x8 + adds r5, r0, 0x1 + cmp r2, r3 + bge _080BD07A + mov r1, r10 + lsls r6, r1, 12 + lsls r0, 6 + movs r7, 0xC0 + lsls r7, 19 + adds r0, r7 + ldr r1, [sp] + adds r0, r1, r0 + mov r7, r8 + adds r1, r7, r0 + subs r2, r3, r2 +_080BD06A: + adds r0, r4, 0 + orrs r0, r6 + strh r0, [r1] + adds r4, 0x1 + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080BD06A +_080BD07A: + adds r0, r5, 0 + cmp r0, r9 + blt _080BD048 +_080BD080: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BD090: .4byte 0x040000d4 +_080BD094: .4byte gUnknown_202401C +_080BD098: .4byte 0x80000400 + thumb_func_end sub_80BCFCC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80DE2C0.s b/asm/battle_anim_80DE2C0.s new file mode 100644 index 000000000..d079d0327 --- /dev/null +++ b/asm/battle_anim_80DE2C0.s @@ -0,0 +1,12857 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80DE2C0 +sub_80DE2C0: @ 80DE2C0 + push {lr} + adds r2, r0, 0 + ldr r1, _080DE2E4 @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r3, [r2, 0x20] + adds r0, r3 + strh r0, [r2, 0x20] + ldrh r0, [r1, 0x2] + ldrh r3, [r2, 0x22] + adds r0, r3 + strh r0, [r2, 0x22] + movs r3, 0x6 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080DE2E8 + ldrh r0, [r1, 0x4] + b _080DE2EC + .align 2, 0 +_080DE2E4: .4byte gUnknown_2037F02 +_080DE2E8: + ldrh r0, [r1, 0x4] + negs r0, r0 +_080DE2EC: + strh r0, [r2, 0x2E] + ldrh r0, [r1, 0x8] + strh r0, [r2, 0x30] + ldr r0, _080DE2FC @ =sub_80DE300 + str r0, [r2, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_080DE2FC: .4byte sub_80DE300 + thumb_func_end sub_80DE2C0 + + thumb_func_start sub_80DE300 +sub_80DE300: @ 80DE300 + push {lr} + adds r3, r0, 0 + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0 + ble _080DE340 + ldrh r1, [r3, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r3, 0x24] + ldrh r0, [r3, 0x2E] + adds r1, r0 + strh r1, [r3, 0x32] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x30] + subs r0, 0x1 + strh r0, [r3, 0x30] + b _080DE346 +_080DE340: + adds r0, r3, 0 + bl sub_8072740 +_080DE346: + pop {r0} + bx r0 + thumb_func_end sub_80DE300 + + thumb_func_start sub_80DE34C +sub_80DE34C: @ 80DE34C + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _080DE398 @ =gUnknown_2037F1B + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 8 + movs r0, 0x80 + lsls r0, 12 + adds r4, r0 + asrs r4, 16 + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 8 + movs r0, 0x80 + lsls r0, 12 + adds r1, r0 + asrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + bl sub_804A76C + adds r0, r5, 0 + bl sub_8072760 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DE398: .4byte gUnknown_2037F1B + thumb_func_end sub_80DE34C + + thumb_func_start sub_80DE39C +sub_80DE39C: @ 80DE39C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x5A + strh r0, [r4, 0x2E] + ldr r0, _080DE3D8 @ =sub_8074C44 + str r0, [r4, 0x1C] + movs r0, 0x7 + strh r0, [r4, 0x30] + ldr r1, _080DE3DC @ =sub_80DE3E0 + adds r0, r4, 0 + bl sub_8074A68 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r0, [r4, 0x30] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE3D8: .4byte sub_8074C44 +_080DE3DC: .4byte sub_80DE3E0 + thumb_func_end sub_80DE39C + + thumb_func_start sub_80DE3E0 +sub_80DE3E0: @ 80DE3E0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldrh r0, [r4, 0x30] + subs r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080DE414 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DE41C @ =sub_80DE420 + str r0, [r4, 0x1C] +_080DE414: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE41C: .4byte sub_80DE420 + thumb_func_end sub_80DE3E0 + + thumb_func_start sub_80DE420 +sub_80DE420: @ 80DE420 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DE420 + + thumb_func_start sub_80DE440 +sub_80DE440: @ 80DE440 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldr r4, _080DE4CC @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075114 + ldrh r0, [r5, 0x20] + subs r0, r7 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r5, 0x22] + subs r1, r6 + lsls r1, 16 + asrs r1, 16 + bl sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 23 + adds r0, r1 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080DE49E + movs r1, 0x80 + lsls r1, 7 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080DE49E: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r5, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8075A1C + ldr r0, _080DE4D0 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + strh r7, [r5, 0x32] + strh r6, [r5, 0x36] + ldr r0, _080DE4D4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _080DE4D8 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE4CC: .4byte gUnknown_2037F1B +_080DE4D0: .4byte gUnknown_2037F02 +_080DE4D4: .4byte sub_8075590 +_080DE4D8: .4byte sub_8072740 + thumb_func_end sub_80DE440 + + thumb_func_start sub_80DE4DC +sub_80DE4DC: @ 80DE4DC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x4 + strh r0, [r4, 0x2E] + ldr r0, _080DE504 @ =sub_80DE508 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE504: .4byte sub_80DE508 + thumb_func_end sub_80DE4DC + + thumb_func_start sub_80DE508 +sub_80DE508: @ 80DE508 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DE52E + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + b _080DE532 +_080DE52E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 +_080DE532: + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xF + beq _080DE540 + cmp r0, 0x4 + bne _080DE548 +_080DE540: + ldrh r0, [r4, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x30] +_080DE548: + ldrh r0, [r4, 0x32] + adds r1, r0, 0x1 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x46 + ble _080DE58C + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + movs r0, 0 + strh r0, [r4, 0x32] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DE594 @ =sub_80DE598 + str r0, [r4, 0x1C] +_080DE58C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE594: .4byte sub_80DE598 + thumb_func_end sub_80DE508 + + thumb_func_start sub_80DE598 +sub_80DE598: @ 80DE598 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x32] + adds r1, r0, 0x1 + strh r1, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _080DE5D4 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + adds r0, r3, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DE5D4 + ldr r0, _080DE5D8 @ =sub_80DE5DC + str r0, [r3, 0x1C] +_080DE5D4: + pop {r0} + bx r0 + .align 2, 0 +_080DE5D8: .4byte sub_80DE5DC + thumb_func_end sub_80DE598 + + thumb_func_start sub_80DE5DC +sub_80DE5DC: @ 80DE5DC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bhi _080DE634 + lsls r0, 2 + ldr r1, _080DE5F4 @ =_080DE5F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DE5F4: .4byte _080DE5F8 + .align 2, 0 +_080DE5F8: + .4byte _080DE614 + .4byte _080DE614 + .4byte _080DE61E + .4byte _080DE61E + .4byte _080DE62C + .4byte _080DE62C + .4byte _080DE634 +_080DE614: + movs r1, 0 + movs r0, 0x1 + strh r0, [r4, 0x24] + strh r1, [r4, 0x26] + b _080DE63C +_080DE61E: + ldr r0, _080DE628 @ =0x0000ffff + strh r0, [r4, 0x24] + movs r0, 0 + b _080DE63A + .align 2, 0 +_080DE628: .4byte 0x0000ffff +_080DE62C: + movs r0, 0 + strh r0, [r4, 0x24] + movs r0, 0x1 + b _080DE63A +_080DE634: + movs r0, 0 + strh r0, [r4, 0x24] + ldr r0, _080DE680 @ =0x0000ffff +_080DE63A: + strh r0, [r4, 0x26] +_080DE63C: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + movs r2, 0 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080DE64E + strh r2, [r4, 0x34] +_080DE64E: + ldrh r0, [r4, 0x36] + adds r1, r0, 0x1 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080DE678 + movs r0, 0x10 + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0x2E] + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _080DE684 @ =sub_80DE688 + str r0, [r4, 0x1C] +_080DE678: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE680: .4byte 0x0000ffff +_080DE684: .4byte sub_80DE688 + thumb_func_end sub_80DE5DC + + thumb_func_start sub_80DE688 +sub_80DE688: @ 80DE688 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldrh r0, [r4, 0x30] + adds r1, r0, 0x1 + strh r1, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DE6B8 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] +_080DE6B8: + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DE6CC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080DE6CC: + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080DE6EA + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 +_080DE6EA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DE688 + + thumb_func_start sub_80DE6F0 +sub_80DE6F0: @ 80DE6F0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DE70C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080DE710 @ =sub_80DE718 + str r0, [r1] + ldr r1, _080DE714 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_080DE70C: .4byte gUnknown_3005090 +_080DE710: .4byte sub_80DE718 +_080DE714: .4byte gUnknown_2037EE2 + thumb_func_end sub_80DE6F0 + + thumb_func_start sub_80DE718 +sub_80DE718: @ 80DE718 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8075454 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r7, _080DE7A4 @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r1, r5, r4 + lsls r1, 3 + adds r1, r7 + ldrh r0, [r1, 0x12] + adds r0, 0x1 + strh r0, [r1, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080DE788 + ldr r0, _080DE7A8 @ =gUnknown_20375F8 + lsls r2, r6, 4 + adds r1, r2, 0 + adds r1, 0xB + lsls r1, 1 + adds r1, r0 + ldrh r3, [r1] + mov r8, r3 + movs r3, 0xA + mov r9, r7 + adds r7, r5, 0 + mov r12, r0 + adds r5, r2, 0 + lsls r0, r6, 5 + add r0, r12 + adds r2, r0, 0 + adds r2, 0x14 +_080DE766: + ldrh r0, [r2] + strh r0, [r1] + subs r2, 0x2 + subs r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bgt _080DE766 + adds r0, r5, 0x1 + lsls r0, 1 + add r0, r12 + movs r1, 0 + mov r2, r8 + strh r2, [r0] + adds r0, r7, r4 + lsls r0, 3 + add r0, r9 + strh r1, [r0, 0x12] +_080DE788: + ldr r0, _080DE7AC @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080DE7B0 @ =0x0000ffff + cmp r1, r0 + bne _080DE798 + adds r0, r4, 0 + bl sub_8077508 +_080DE798: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE7A4: .4byte gUnknown_3005090 +_080DE7A8: .4byte gUnknown_20375F8 +_080DE7AC: .4byte gUnknown_2037F02 +_080DE7B0: .4byte 0x0000ffff + thumb_func_end sub_80DE718 + + thumb_func_start sub_80DE7B4 +sub_80DE7B4: @ 80DE7B4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DE7D0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080DE7D4 @ =sub_80DE7DC + str r0, [r1] + ldr r1, _080DE7D8 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_080DE7D0: .4byte gUnknown_3005090 +_080DE7D4: .4byte sub_80DE7DC +_080DE7D8: .4byte gUnknown_2037EE2 + thumb_func_end sub_80DE7B4 + + thumb_func_start sub_80DE7DC +sub_80DE7DC: @ 80DE7DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + bl sub_8075454 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r5, _080DE89C @ =gUnknown_3005090 + mov r0, r8 + lsls r3, r0, 2 + adds r1, r3, r0 + lsls r1, 3 + adds r1, r5 + ldrh r0, [r1, 0x12] + adds r0, 0x1 + strh r0, [r1, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080DE87E + ldr r0, _080DE8A0 @ =gUnknown_20375F8 + lsls r2, r7, 4 + adds r1, r2, 0 + adds r1, 0xB + lsls r1, 1 + adds r1, r0 + ldrh r6, [r1] + movs r4, 0xA + mov r10, r3 + mov r9, r0 + adds r5, r2, 0 + ldr r2, _080DE8A4 @ =gUnknown_20371F8 + mov r12, r2 + lsls r0, r7, 5 + add r0, r9 + adds r3, r0, 0 + adds r3, 0x14 +_080DE830: + ldrh r0, [r3] + strh r0, [r1] + subs r3, 0x2 + subs r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bgt _080DE830 + adds r0, r5, 0x1 + lsls r0, 1 + add r0, r9 + strh r6, [r0] + adds r1, r5, 0 + adds r1, 0xB + lsls r1, 1 + add r1, r12 + ldrh r6, [r1] + movs r4, 0xA + lsls r0, r7, 5 + add r0, r12 + adds r2, r0, 0 + adds r2, 0x14 +_080DE85A: + ldrh r0, [r2] + strh r0, [r1] + subs r2, 0x2 + subs r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bgt _080DE85A + adds r0, r5, 0x1 + lsls r0, 1 + add r0, r12 + movs r1, 0 + strh r6, [r0] + mov r0, r10 + add r0, r8 + lsls r0, 3 + ldr r2, _080DE89C @ =gUnknown_3005090 + adds r0, r2 + strh r1, [r0, 0x12] +_080DE87E: + ldr r0, _080DE8A8 @ =gUnknown_2037F02 + ldrh r1, [r0, 0xE] + ldr r0, _080DE8AC @ =0x0000ffff + cmp r1, r0 + bne _080DE88E + mov r0, r8 + bl sub_8077508 +_080DE88E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE89C: .4byte gUnknown_3005090 +_080DE8A0: .4byte gUnknown_20375F8 +_080DE8A4: .4byte gUnknown_20371F8 +_080DE8A8: .4byte gUnknown_2037F02 +_080DE8AC: .4byte 0x0000ffff + thumb_func_end sub_80DE7DC + + thumb_func_start sub_80DE8B0 +sub_80DE8B0: @ 80DE8B0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080DE914 @ =gUnknown_2037F1B + ldrb r0, [r0] + mov r5, sp + adds r5, 0x2 + movs r1, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8076D9C + ldr r0, _080DE918 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080DE8E4 + ldr r1, _080DE91C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080DE8E4: + ldr r1, _080DE91C @ =gUnknown_2037F02 + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x2E] + mov r2, sp + ldrh r0, [r1, 0x4] + ldrh r2, [r2] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x6] + ldrh r5, [r5] + adds r0, r5 + strh r0, [r4, 0x36] + ldr r0, _080DE920 @ =0x0000ffce + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080DE924 @ =sub_80DE928 + str r0, [r4, 0x1C] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DE914: .4byte gUnknown_2037F1B +_080DE918: .4byte gUnknown_2037F1A +_080DE91C: .4byte gUnknown_2037F02 +_080DE920: .4byte 0x0000ffce +_080DE924: .4byte sub_80DE928 + thumb_func_end sub_80DE8B0 + + thumb_func_start sub_80DE928 +sub_80DE928: @ 80DE928 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080DE94A + movs r1, 0 + movs r0, 0x1E + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + ldr r0, _080DE950 @ =sub_8074C44 + str r0, [r4, 0x1C] + ldr r1, _080DE954 @ =sub_80DE958 + adds r0, r4, 0 + bl sub_8074A68 +_080DE94A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE950: .4byte sub_8074C44 +_080DE954: .4byte sub_80DE958 + thumb_func_end sub_80DE928 + + thumb_func_start sub_80DE958 +sub_80DE958: @ 80DE958 + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x30] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DE984 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080DE984: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080DE998 + adds r0, r3, 0 + bl sub_8072740 +_080DE998: + pop {r0} + bx r0 + thumb_func_end sub_80DE958 + + thumb_func_start sub_80DE99C +sub_80DE99C: @ 80DE99C + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r5, _080DE9CC @ =gUnknown_2037F02 + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080DE9D0 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _080DE9D4 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DE9CC: .4byte gUnknown_2037F02 +_080DE9D0: .4byte sub_8074F6C +_080DE9D4: .4byte sub_8072740 + thumb_func_end sub_80DE99C + + thumb_func_start sub_80DE9D8 +sub_80DE9D8: @ 80DE9D8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DEA38 + adds r0, r4, 0 + bl sub_8074FCC + ldr r5, _080DEA14 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r5, r2] + adds r0, r4, 0 + bl sub_8074FF8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080DEA2C + ldr r0, _080DEA18 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080DEA1C + ldrh r0, [r5, 0x4] + b _080DEA32 + .align 2, 0 +_080DEA14: .4byte gUnknown_2037F02 +_080DEA18: .4byte gUnknown_2037F1A +_080DEA1C: + movs r1, 0x4 + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r4, 0x30] + movs r2, 0x6 + ldrsh r0, [r5, r2] + negs r0, r0 + b _080DEA36 +_080DEA2C: + movs r1, 0x4 + ldrsh r0, [r5, r1] + negs r0, r0 +_080DEA32: + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x6] +_080DEA36: + strh r0, [r4, 0x32] +_080DEA38: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r2, 0x2E + ldrsh r1, [r4, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + movs r3, 0xFF + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + movs r2, 0x34 + ldrsh r1, [r4, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + strh r1, [r4, 0x24] + ands r0, r3 + movs r1, 0x5 + bl sub_8044E30 + movs r2, 0x36 + ldrsh r1, [r4, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xF0 + bls _080DEA90 + adds r0, r4, 0 + bl sub_8072740 +_080DEA90: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DE9D8 + + thumb_func_start sub_80DEA98 +sub_80DEA98: @ 80DEA98 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DEAAE + adds r0, r2, 0 + bl sub_8072740 +_080DEAAE: + pop {r0} + bx r0 + thumb_func_end sub_80DEA98 + + thumb_func_start sub_80DEAB4 +sub_80DEAB4: @ 80DEAB4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080DEAD0 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DEAD8 + ldr r1, _080DEAD4 @ =gUnknown_2037F02 + movs r0, 0 + b _080DEADC + .align 2, 0 +_080DEAD0: .4byte gUnknown_2037F1B +_080DEAD4: .4byte gUnknown_2037F02 +_080DEAD8: + ldr r1, _080DEAEC @ =gUnknown_2037F02 + movs r0, 0x1 +_080DEADC: + strh r0, [r1, 0xE] + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DEAEC: .4byte gUnknown_2037F02 + thumb_func_end sub_80DEAB4 + + thumb_func_start sub_80DEAF0 +sub_80DEAF0: @ 80DEAF0 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080DEB04 @ =gUnknown_2037EE8 + ldr r0, [r0] + cmp r0, 0 + ble _080DEB0C + ldr r1, _080DEB08 @ =gUnknown_2037F02 + movs r0, 0 + b _080DEB10 + .align 2, 0 +_080DEB04: .4byte gUnknown_2037EE8 +_080DEB08: .4byte gUnknown_2037F02 +_080DEB0C: + ldr r1, _080DEB1C @ =gUnknown_2037F02 + movs r0, 0x1 +_080DEB10: + strh r0, [r1, 0xE] + adds r0, r2, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080DEB1C: .4byte gUnknown_2037F02 + thumb_func_end sub_80DEAF0 + + thumb_func_start sub_80DEB20 +sub_80DEB20: @ 80DEB20 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _080DEB7C @ =0x00001f3f + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r0, _080DEB80 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r4, _080DEB84 @ =gUnknown_2022986 + strh r1, [r4] + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x44 + bl sub_8000A38 + adds r0, r5, 0 + movs r1, 0 + bl sub_8075114 + ldrb r1, [r5, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r5, 0x1] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DEB88 @ =sub_80DEB8C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DEB7C: .4byte 0x00001f3f +_080DEB80: .4byte gUnknown_2022984 +_080DEB84: .4byte gUnknown_2022986 +_080DEB88: .4byte sub_80DEB8C + thumb_func_end sub_80DEB20 + + thumb_func_start sub_80DEB8C +sub_80DEB8C: @ 80DEB8C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bhi _080DEC4C + lsls r0, 2 + ldr r1, _080DEBA4 @ =_080DEBA8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DEBA4: .4byte _080DEBA8 + .align 2, 0 +_080DEBA8: + .4byte _080DEBC0 + .4byte _080DEBDE + .4byte _080DEBFE + .4byte _080DEBDE + .4byte _080DEC1E + .4byte _080DEC2E +_080DEBC0: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DEC4C + b _080DEC26 +_080DEBDE: + ldrh r0, [r4, 0x30] + adds r0, 0x75 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080DEC4C + movs r0, 0 + strh r0, [r4, 0x32] + b _080DEC26 +_080DEBFE: + ldrh r0, [r4, 0x30] + subs r0, 0x75 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x29 + bne _080DEC4C + movs r0, 0 + strh r0, [r4, 0x32] + b _080DEC26 +_080DEC1E: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800849C +_080DEC26: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DEC4C +_080DEC2E: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DEC4C + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DEC54 @ =sub_80DEC58 + str r0, [r4, 0x1C] +_080DEC4C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DEC54: .4byte sub_80DEC58 + thumb_func_end sub_80DEB8C + + thumb_func_start sub_80DEC58 +sub_80DEC58: @ 80DEC58 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080DEC8C @ =0x00003f3f + movs r0, 0x4A + bl sub_8000A38 + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DEC8C: .4byte 0x00003f3f + thumb_func_end sub_80DEC58 + + thumb_func_start sub_80DEC90 +sub_80DEC90: @ 80DEC90 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080DED04 @ =gUnknown_2037F02 + movs r1, 0x6 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080DECBC + ldr r4, _080DED08 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_080DECBC: + ldrh r0, [r6] + ldrh r2, [r5, 0x20] + adds r0, r2 + movs r3, 0 + strh r0, [r5, 0x20] + ldrh r0, [r6, 0x2] + ldrh r4, [r5, 0x22] + adds r0, r4 + strh r0, [r5, 0x22] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r4, _080DED0C @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080DED10 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080DED18 + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + ldr r0, _080DED14 @ =0x0000fff4 + strh r0, [r5, 0x24] + movs r0, 0x2 + b _080DED1E + .align 2, 0 +_080DED04: .4byte gUnknown_2037F02 +_080DED08: .4byte gUnknown_2037F1A +_080DED0C: .4byte 0x000003ff +_080DED10: .4byte 0xfffffc00 +_080DED14: .4byte 0x0000fff4 +_080DED18: + movs r0, 0xC + strh r0, [r5, 0x24] + ldr r0, _080DED3C @ =0x0000fffe +_080DED1E: + strh r0, [r5, 0x30] + ldr r1, _080DED40 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + movs r2, 0x34 + ldrsh r0, [r5, r2] + cmp r0, 0xFF + beq _080DED32 + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x34] +_080DED32: + ldr r0, _080DED44 @ =sub_80DED48 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DED3C: .4byte 0x0000fffe +_080DED40: .4byte gUnknown_2037F02 +_080DED44: .4byte sub_80DED48 + thumb_func_end sub_80DEC90 + + thumb_func_start sub_80DED48 +sub_80DED48: @ 80DED48 + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DED86 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080DEDA6 + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DEDA6 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xD7 + bl sub_8072348 + b _080DEDA6 +_080DED86: + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x30] + subs r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x24 + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080DED98 + negs r0, r0 +_080DED98: + cmp r0, 0xC + bne _080DEDA6 + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + subs r0, r2, 0x1 + strh r0, [r4, 0x32] +_080DEDA6: + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DEDB4 + adds r0, r4, 0 + bl sub_8072740 +_080DEDB4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DED48 + + thumb_func_start sub_80DEDBC +sub_80DEDBC: @ 80DEDBC + push {lr} + ldrb r2, [r0, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x1] + movs r1, 0xFF + strh r1, [r0, 0x34] + bl sub_80DEC90 + pop {r0} + bx r0 + thumb_func_end sub_80DEDBC + + thumb_func_start sub_80DEDD8 +sub_80DEDD8: @ 80DEDD8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080DEE2C + ldr r1, _080DEE14 @ =0x00001f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080DEE18 @ =gUnknown_2022988 + ldr r2, _080DEE1C @ =0x000098f0 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080DEE20 @ =gUnknown_202298A + movs r0, 0xA0 + strh r0, [r1] + ldr r0, _080DEE24 @ =gUnknown_2022984 + ldrh r1, [r0] + movs r0, 0x42 + bl sub_8000A38 + ldr r0, _080DEE28 @ =gUnknown_2022986 + ldrh r1, [r0] + movs r0, 0x46 + bl sub_8000A38 + b _080DEE5C + .align 2, 0 +_080DEE14: .4byte 0x00001f3f +_080DEE18: .4byte gUnknown_2022988 +_080DEE1C: .4byte 0x000098f0 +_080DEE20: .4byte gUnknown_202298A +_080DEE24: .4byte gUnknown_2022984 +_080DEE28: .4byte gUnknown_2022986 +_080DEE2C: + ldr r1, _080DEE68 @ =0x00001f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080DEE6C @ =gUnknown_2022988 + movs r0, 0xF0 + strh r0, [r1] + ldr r4, _080DEE70 @ =gUnknown_202298A + ldr r1, _080DEE74 @ =0x000078a0 + adds r0, r1, 0 + strh r0, [r4] + movs r0, 0x42 + movs r1, 0xF0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x46 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 7 + movs r0, 0 + bl sub_8000AF4 +_080DEE5C: + adds r0, r5, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DEE68: .4byte 0x00001f3f +_080DEE6C: .4byte gUnknown_2022988 +_080DEE70: .4byte gUnknown_202298A +_080DEE74: .4byte 0x000078a0 + thumb_func_end sub_80DEDD8 + + thumb_func_start sub_80DEE78 +sub_80DEE78: @ 80DEE78 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080DEEB0 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r0, _080DEEB4 @ =gUnknown_2022988 + movs r1, 0 + strh r1, [r0] + ldr r0, _080DEEB8 @ =gUnknown_202298A + strh r1, [r0] + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080DEEA4 + movs r1, 0x80 + lsls r1, 7 + movs r0, 0 + bl sub_8000B14 +_080DEEA4: + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DEEB0: .4byte 0x00003f3f +_080DEEB4: .4byte gUnknown_2022988 +_080DEEB8: .4byte gUnknown_202298A + thumb_func_end sub_80DEE78 + + thumb_func_start sub_80DEEBC +sub_80DEEBC: @ 80DEEBC + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080DEED0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080DEED8 + ldr r4, _080DEED4 @ =gUnknown_2037F1A + b _080DEEDA + .align 2, 0 +_080DEED0: .4byte gUnknown_2037F02 +_080DEED4: .4byte gUnknown_2037F1A +_080DEED8: + ldr r4, _080DEF2C @ =gUnknown_2037F1B +_080DEEDA: + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x2] + adds r0, r6 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r2, _080DEF30 @ =gUnknown_2037F02 + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x26] + movs r3, 0 + lsls r0, 16 + asrs r0, 16 + ldrh r4, [r2, 0x6] + movs r6, 0x6 + ldrsh r1, [r2, r6] + cmp r0, r1 + ble _080DEF12 + movs r3, 0x1 +_080DEF12: + strh r3, [r5, 0x2E] + movs r0, 0 + strh r0, [r5, 0x30] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x32] + ldrh r0, [r2, 0xA] + strh r0, [r5, 0x34] + strh r4, [r5, 0x36] + ldr r0, _080DEF34 @ =sub_80DEF38 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DEF2C: .4byte gUnknown_2037F1B +_080DEF30: .4byte gUnknown_2037F02 +_080DEF34: .4byte sub_80DEF38 + thumb_func_end sub_80DEEBC + + thumb_func_start sub_80DEF38 +sub_80DEF38: @ 80DEF38 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x30] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r2, 0x30] + ldr r1, _080DEF80 @ =gUnknown_825E074 + movs r3, 0x30 + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x34] + ldrh r3, [r2, 0x26] + adds r1, r0, r3 + strh r1, [r2, 0x26] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080DEF84 + lsls r0, r1, 16 + asrs r0, 16 + movs r3, 0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + bge _080DEF96 + adds r0, r2, 0 + bl sub_8072740 + b _080DEF96 + .align 2, 0 +_080DEF80: .4byte gUnknown_825E074 +_080DEF84: + lsls r0, r1, 16 + asrs r0, 16 + movs r3, 0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + ble _080DEF96 + adds r0, r2, 0 + bl sub_8072740 +_080DEF96: + pop {r0} + bx r0 + thumb_func_end sub_80DEF38 + + thumb_func_start sub_80DEF9C +sub_80DEF9C: @ 80DEF9C + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DEFBC @ =gUnknown_3005090 + adds r5, r1, r0 + ldr r0, _080DEFC0 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DEFC8 + ldr r4, _080DEFC4 @ =gUnknown_2037F1A + b _080DEFCA + .align 2, 0 +_080DEFBC: .4byte gUnknown_3005090 +_080DEFC0: .4byte gUnknown_2037F02 +_080DEFC4: .4byte gUnknown_2037F1A +_080DEFC8: + ldr r4, _080DF010 @ =gUnknown_2037F1B +_080DEFCA: + ldrb r0, [r4] + bl sub_807492C + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl sub_80768B0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r6, 0 + adds r1, r0, 0 + adds r1, 0x24 + movs r2, 0 + strh r1, [r5, 0x8] + strh r1, [r5, 0xA] + subs r0, 0x21 + strh r0, [r5, 0xC] + cmp r0, 0 + bge _080DEFF4 + strh r2, [r5, 0xC] +_080DEFF4: + ldrh r0, [r5, 0x8] + strh r0, [r5, 0xE] + movs r0, 0x8 + strh r0, [r5, 0x10] + ldr r1, _080DF014 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x12] + strh r2, [r5, 0x14] + strh r2, [r5, 0x16] + cmp r7, 0x1 + bne _080DF01C + ldr r0, _080DF018 @ =gUnknown_2022978 + b _080DF01E + .align 2, 0 +_080DF010: .4byte gUnknown_2037F1B +_080DF014: .4byte gUnknown_2037F02 +_080DF018: .4byte gUnknown_2022978 +_080DF01C: + ldr r0, _080DF03C @ =gUnknown_202297C +_080DF01E: + ldrh r2, [r0] + strh r2, [r5, 0x18] + adds r3, r2, 0 + adds r3, 0xF0 + strh r3, [r5, 0x1A] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x1C] + movs r4, 0x4 + ldrsh r0, [r1, r4] + cmp r0, 0 + bne _080DF040 + strh r3, [r5, 0x1E] + ldrh r3, [r5, 0x18] + b _080DF044 + .align 2, 0 +_080DF03C: .4byte gUnknown_202297C +_080DF040: + strh r2, [r5, 0x1E] + ldrh r3, [r5, 0x1A] +_080DF044: + movs r0, 0 + strh r0, [r5, 0x26] + ldrh r1, [r5, 0xC] + lsls r2, r1, 16 + asrs r1, r2, 16 + movs r6, 0xE + ldrsh r0, [r5, r6] + cmp r1, r0 + bgt _080DF07A + ldr r4, _080DF084 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r0, r4 + mov r12, r0 +_080DF060: + asrs r2, 16 + lsls r1, r2, 1 + adds r0, r1, r4 + strh r3, [r0] + add r1, r12 + strh r3, [r1] + adds r2, 0x1 + lsls r2, 16 + asrs r1, r2, 16 + movs r6, 0xE + ldrsh r0, [r5, r6] + cmp r1, r0 + ble _080DF060 +_080DF07A: + cmp r7, 0x1 + bne _080DF08C + ldr r0, _080DF088 @ =0x04000014 + b _080DF08E + .align 2, 0 +_080DF084: .4byte gUnknown_2038700 +_080DF088: .4byte 0x04000014 +_080DF08C: + ldr r0, _080DF0B8 @ =0x04000018 +_080DF08E: + str r0, [sp] + ldr r0, _080DF0BC @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldr r0, _080DF0C0 @ =sub_80DF0C4 + str r0, [r5] + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF0B8: .4byte 0x04000018 +_080DF0BC: .4byte 0xa2600001 +_080DF0C0: .4byte sub_80DF0C4 + thumb_func_end sub_80DEF9C + + thumb_func_start sub_80DF0C4 +sub_80DF0C4: @ 80DF0C4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080DF114 @ =gUnknown_3005090 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0xC] + movs r3, 0xC + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _080DF0EC + strh r2, [r4, 0x8] +_080DF0EC: + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DF118 + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0xC] + movs r3, 0xC + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _080DF11C + strh r2, [r4, 0xA] + movs r0, 0x1 + strh r0, [r4, 0x26] + b _080DF11C + .align 2, 0 +_080DF114: .4byte gUnknown_3005090 +_080DF118: + subs r0, r1, 0x1 + strh r0, [r4, 0x10] +_080DF11C: + ldrh r0, [r4, 0x14] + adds r0, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DF148 + movs r0, 0 + strh r0, [r4, 0x14] + movs r1, 0 + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DF13A + movs r1, 0x1 +_080DF13A: + strh r1, [r4, 0x16] + cmp r1, 0 + beq _080DF144 + ldrh r0, [r4, 0x18] + b _080DF146 +_080DF144: + ldrh r0, [r4, 0x1A] +_080DF146: + strh r0, [r4, 0x20] +_080DF148: + ldrh r1, [r4, 0x8] + lsls r3, r1, 16 + asrs r1, r3, 16 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _080DF17C + ldr r5, _080DF1D4 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080DF15E: + asrs r3, 16 + lsls r1, r3, 1 + adds r2, r1, r5 + ldrh r0, [r4, 0x20] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r4, 0x20] + strh r0, [r1] + adds r3, 0x1 + lsls r3, 16 + asrs r1, r3, 16 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080DF15E +_080DF17C: + ldrh r1, [r4, 0xA] + lsls r3, r1, 16 + asrs r1, r3, 16 + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r1, r0 + bgt _080DF1B0 + ldr r5, _080DF1D4 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080DF192: + asrs r3, 16 + lsls r1, r3, 1 + adds r2, r1, r5 + ldrh r0, [r4, 0x1E] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r4, 0x1E] + strh r0, [r1] + adds r3, 0x1 + lsls r3, 16 + asrs r1, r3, 16 + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _080DF192 +_080DF1B0: + movs r3, 0x26 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080DF1CC + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DF1C6 + ldr r1, _080DF1D8 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080DF1C6: + adds r0, r7, 0 + bl sub_8072760 +_080DF1CC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF1D4: .4byte gUnknown_2038700 +_080DF1D8: .4byte gUnknown_2039600 + thumb_func_end sub_80DF0C4 + + thumb_func_start sub_80DF1DC +sub_80DF1DC: @ 80DF1DC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080DF230 @ =gUnknown_3005090 + adds r4, r0 + movs r5, 0 + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + ldr r6, _080DF234 @ =gUnknown_2037F1A + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xC] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xE] + movs r0, 0x20 + strh r0, [r4, 0x10] + ldr r0, _080DF238 @ =0x0000ffec + strh r0, [r4, 0x12] + strh r5, [r4, 0x14] + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080DF23C @ =sub_80DF240 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DF230: .4byte gUnknown_3005090 +_080DF234: .4byte gUnknown_2037F1A +_080DF238: .4byte 0x0000ffec +_080DF23C: .4byte sub_80DF240 + thumb_func_end sub_80DF1DC + + thumb_func_start sub_80DF240 +sub_80DF240: @ 80DF240 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DF26C @ =gUnknown_3005090 + adds r6, r0, r1 + movs r1, 0x8 + ldrsh r0, [r6, r1] + cmp r0, 0x5 + bls _080DF260 + b _080DF41A +_080DF260: + lsls r0, 2 + ldr r1, _080DF270 @ =_080DF274 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DF26C: .4byte gUnknown_3005090 +_080DF270: .4byte _080DF274 + .align 2, 0 +_080DF274: + .4byte _080DF28C + .4byte _080DF34C + .4byte _080DF37A + .4byte _080DF38E + .4byte _080DF3A4 + .4byte _080DF40C +_080DF28C: + movs r0, 0xC + ldrsh r2, [r6, r0] + ldrh r1, [r6, 0xA] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DF2A2 + movs r1, 0x10 + ldrsh r0, [r6, r1] + subs r0, r2, r0 + b _080DF2A8 +_080DF2A2: + movs r1, 0x10 + ldrsh r0, [r6, r1] + adds r0, r2, r0 +_080DF2A8: + lsls r0, 16 + lsrs r1, r0, 16 + ldrh r2, [r6, 0x12] + ldrh r0, [r6, 0xE] + adds r2, r0 + ldr r0, _080DF33C @ =gUnknown_83E398C + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + ldrb r4, [r6, 0xA] + movs r3, 0x6 + subs r3, r4 + lsls r3, 24 + lsrs r3, 24 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xB3 + bl sub_80722F4 + cmp r4, 0x40 + beq _080DF30C + ldr r5, _080DF340 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r3, r1, r5 + ldrh r0, [r6, 0xA] + movs r2, 0x1 + ands r2, r0 + adds r3, 0x3F + ldrb r4, [r3] + movs r0, 0x2 + negs r0, r0 + ands r0, r4 + orrs r0, r2 + strb r0, [r3] + adds r5, 0x1C + adds r1, r5 + ldr r0, _080DF344 @ =nullsub_8 + str r0, [r1] +_080DF30C: + ldrh r1, [r6, 0xA] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080DF324 + ldrh r0, [r6, 0x10] + subs r0, 0x6 + strh r0, [r6, 0x10] + ldrh r0, [r6, 0x12] + subs r0, 0x6 + strh r0, [r6, 0x12] +_080DF324: + ldrh r1, [r6, 0x26] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF348 @ =gUnknown_83FF080 + adds r0, r6, 0 + bl sub_80762D0 + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + strh r4, [r6, 0x8] + b _080DF41A + .align 2, 0 +_080DF33C: .4byte gUnknown_83E398C +_080DF340: .4byte gUnknown_202063C +_080DF344: .4byte nullsub_8 +_080DF348: .4byte gUnknown_83FF080 +_080DF34C: + adds r0, r6, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080DF41A + movs r2, 0xA + ldrsh r1, [r6, r2] + cmp r1, 0x6 + bne _080DF36C + movs r0, 0x8 + strh r0, [r6, 0x14] + movs r0, 0x3 + strh r0, [r6, 0x8] + b _080DF41A +_080DF36C: + cmp r1, 0x2 + bgt _080DF372 + movs r0, 0xA +_080DF372: + strh r0, [r6, 0x14] + movs r0, 0x2 + strh r0, [r6, 0x8] + b _080DF41A +_080DF37A: + ldrh r0, [r6, 0x14] + movs r2, 0x14 + ldrsh r1, [r6, r2] + cmp r1, 0 + beq _080DF38A + subs r0, 0x1 + strh r0, [r6, 0x14] + b _080DF41A +_080DF38A: + strh r1, [r6, 0x8] + b _080DF41A +_080DF38E: + ldrh r1, [r6, 0x14] + movs r2, 0x14 + ldrsh r0, [r6, r2] + cmp r0, 0 + beq _080DF39E + subs r0, r1, 0x1 + strh r0, [r6, 0x14] + b _080DF41A +_080DF39E: + movs r0, 0x4 + strh r0, [r6, 0x8] + b _080DF41A +_080DF3A4: + movs r5, 0 + movs r7, 0 + ldr r3, _080DF400 @ =gUnknown_202063C + movs r0, 0x1C + adds r0, r3 + mov r8, r0 +_080DF3B0: + lsls r0, r5, 4 + adds r0, r5 + lsls r4, r0, 2 + adds r0, r3, 0 + adds r0, 0x14 + adds r0, r4, r0 + ldr r1, [r0] + ldr r0, _080DF404 @ =gUnknown_83E398C + cmp r1, r0 + bne _080DF3EC + adds r0, r4, r3 + strh r2, [r0, 0x2E] + movs r1, 0x6 + strh r1, [r0, 0x30] + movs r1, 0x2 + str r2, [sp] + str r3, [sp, 0x4] + bl sub_800838C + mov r0, r8 + adds r1, r4, r0 + ldr r0, _080DF408 @ =sub_80DF428 + str r0, [r1] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r2, [sp] + ldr r3, [sp, 0x4] + cmp r7, 0x6 + beq _080DF3F6 +_080DF3EC: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3F + bls _080DF3B0 +_080DF3F6: + strh r7, [r6, 0x14] + movs r0, 0x5 + strh r0, [r6, 0x8] + b _080DF41A + .align 2, 0 +_080DF400: .4byte gUnknown_202063C +_080DF404: .4byte gUnknown_83E398C +_080DF408: .4byte sub_80DF428 +_080DF40C: + movs r1, 0x14 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080DF41A + adds r0, r2, 0 + bl sub_8072760 +_080DF41A: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DF240 + + thumb_func_start sub_80DF428 +sub_80DF428: @ 80DF428 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DF45C + ldr r3, _080DF464 @ =gUnknown_3005090 + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x2E + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080DF45C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF464: .4byte gUnknown_3005090 + thumb_func_end sub_80DF428 + + thumb_func_start sub_80DF468 +sub_80DF468: @ 80DF468 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080DF47C + adds r0, r5, 0 + movs r1, 0 + bl sub_8075160 +_080DF47C: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x27 + bgt _080DF4AE + ldrh r0, [r5, 0x2E] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080DF4A0 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + b _080DF4AC +_080DF4A0: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 +_080DF4AC: + strb r0, [r2] +_080DF4AE: + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0x1E + ble _080DF4C4 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080DF4C4: + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x3D + bne _080DF510 + ldr r1, _080DF518 @ =sub_8072740 + adds r0, r5, 0 + bl sub_8074A68 + ldrh r0, [r5, 0x24] + ldrh r2, [r5, 0x20] + adds r0, r2 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x24] + strh r1, [r5, 0x26] + movs r0, 0x14 + strh r0, [r5, 0x2E] + ldr r4, _080DF51C @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080DF520 @ =sub_8075590 + str r0, [r5, 0x1C] +_080DF510: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF518: .4byte sub_8072740 +_080DF51C: .4byte gUnknown_2037F1B +_080DF520: .4byte sub_8075590 + thumb_func_end sub_80DF468 + + thumb_func_start sub_80DF524 +sub_80DF524: @ 80DF524 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080DF544 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DF548 + cmp r0, 0x1 + beq _080DF568 + b _080DF57A + .align 2, 0 +_080DF544: .4byte gUnknown_3005090 +_080DF548: + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF564 @ =gUnknown_83FF130 + adds r0, r4, 0 + bl sub_80762D0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DF57A + .align 2, 0 +_080DF564: .4byte gUnknown_83FF130 +_080DF568: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080DF57A + adds r0, r5, 0 + bl sub_8072760 +_080DF57A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DF524 + + thumb_func_start sub_80DF580 +sub_80DF580: @ 80DF580 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080DF5E0 + cmp r0, 0x1 + bgt _080DF5A0 + cmp r0, 0 + beq _080DF5AA + b _080DF682 +_080DF5A0: + cmp r0, 0x2 + beq _080DF610 + cmp r0, 0x3 + beq _080DF664 + b _080DF682 +_080DF5AA: + ldr r4, _080DF5DC @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + adds r0, r6, 0 + movs r1, 0 + bl sub_80758E0 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0x30] + strh r0, [r5, 0x32] + b _080DF658 + .align 2, 0 +_080DF5DC: .4byte gUnknown_2037F1A +_080DF5E0: + ldrh r0, [r5, 0x30] + adds r0, 0x60 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + subs r0, 0x1A + strh r0, [r5, 0x32] + movs r2, 0x30 + ldrsh r1, [r5, r2] + movs r0, 0x32 + ldrsh r2, [r5, r0] + adds r0, r6, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080DF610 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_080DF610: + ldrh r0, [r5, 0x30] + adds r0, 0x60 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x30 + strh r0, [r5, 0x32] + movs r2, 0x30 + ldrsh r1, [r5, r2] + movs r0, 0x32 + ldrsh r2, [r5, r0] + adds r0, r6, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _080DF682 + movs r0, 0 + strh r0, [r5, 0x34] + ldr r1, _080DF660 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r6, 0 + bl sub_8075980 +_080DF658: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080DF682 + .align 2, 0 +_080DF660: .4byte gUnknown_202063C +_080DF664: + ldrh r0, [r5, 0x26] + subs r0, 0x6 + strh r0, [r5, 0x26] + movs r1, 0x22 + ldrsh r0, [r5, r1] + movs r2, 0x26 + ldrsh r1, [r5, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080DF682 + adds r0, r5, 0 + bl sub_8072740 +_080DF682: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DF580 + + thumb_func_start sub_80DF688 +sub_80DF688: @ 80DF688 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080DF6A0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080DF6A8 + ldr r0, _080DF6A4 @ =0x0000fff0 + b _080DF6AC + .align 2, 0 +_080DF6A0: .4byte gUnknown_2037F1A +_080DF6A4: .4byte 0x0000fff0 +_080DF6A8: + movs r0, 0x80 + lsls r0, 1 +_080DF6AC: + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0x22] + ldr r0, _080DF6BC @ =sub_80DF6C0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF6BC: .4byte sub_80DF6C0 + thumb_func_end sub_80DF688 + + thumb_func_start sub_80DF6C0 +sub_80DF6C0: @ 80DF6C0 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x48 + strh r0, [r4, 0x2E] + ldr r0, _080DF6E0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080DF6E4 + ldrh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 20 + b _080DF6EC + .align 2, 0 +_080DF6E0: .4byte gUnknown_2037F1A +_080DF6E4: + ldrh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 20 + negs r0, r0 +_080DF6EC: + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x10 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r5, r0, r1 + strh r5, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080DF738 + ldr r0, _080DF758 @ =gUnknown_83FF180 + ldrh r1, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r4, 0x22] + adds r2, r5 + lsls r2, 16 + asrs r2, 16 + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + bl sub_80071EC +_080DF738: + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x20 + movs r1, 0x98 + lsls r1, 1 + cmp r0, r1 + bls _080DF752 + adds r0, r4, 0 + bl sub_8072740 +_080DF752: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF758: .4byte gUnknown_83FF180 + thumb_func_end sub_80DF6C0 + + thumb_func_start sub_80DF75C +sub_80DF75C: @ 80DF75C + push {r4,lr} + adds r4, r0, 0 + bl sub_8044EC8 + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _080DF776 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x4 + b _080DF77E +_080DF776: + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x5 +_080DF77E: + ldr r3, _080DF7B0 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080DF7B4 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + bl sub_8044EC8 + movs r1, 0x7 + ands r0, r1 + adds r1, r0, 0 + cmp r1, 0x3 + ble _080DF7A0 + negs r0, r1 + lsls r0, 24 + lsrs r0, 24 +_080DF7A0: + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080DF7B8 @ =sub_80DF7BC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF7B0: .4byte 0x000003ff +_080DF7B4: .4byte 0xfffffc00 +_080DF7B8: .4byte sub_80DF7BC + thumb_func_end sub_80DF75C + + thumb_func_start sub_80DF7BC +sub_80DF7BC: @ 80DF7BC + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1D + bgt _080DF7FE + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080DF832 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + movs r0, 0 + b _080DF830 +_080DF7FE: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0x2 + bne _080DF814 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080DF814: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0x3 + bne _080DF82C + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DF844 @ =0x0000ffff + strh r0, [r3, 0x30] +_080DF82C: + ldrh r0, [r3, 0x30] + adds r0, 0x1 +_080DF830: + strh r0, [r3, 0x30] +_080DF832: + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0x3C + ble _080DF840 + adds r0, r3, 0 + bl sub_8007280 +_080DF840: + pop {r0} + bx r0 + .align 2, 0 +_080DF844: .4byte 0x0000ffff + thumb_func_end sub_80DF7BC + + thumb_func_start sub_80DF848 +sub_80DF848: @ 80DF848 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DF880 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DF888 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF884 @ =gUnknown_83FF198 + adds r0, r4, 0 + bl sub_80762D0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DF89A + .align 2, 0 +_080DF880: .4byte gUnknown_3005090 +_080DF884: .4byte gUnknown_83FF198 +_080DF888: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080DF89A + adds r0, r5, 0 + bl sub_8072760 +_080DF89A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DF848 + + thumb_func_start sub_80DF8A0 +sub_80DF8A0: @ 80DF8A0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DF8D8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DF8E0 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF8DC @ =gUnknown_83FF1C0 + adds r0, r4, 0 + bl sub_80762D0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DF8F2 + .align 2, 0 +_080DF8D8: .4byte gUnknown_3005090 +_080DF8DC: .4byte gUnknown_83FF1C0 +_080DF8E0: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080DF8F2 + adds r0, r5, 0 + bl sub_8072760 +_080DF8F2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DF8A0 + + thumb_func_start sub_80DF8F8 +sub_80DF8F8: @ 80DF8F8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DF90A + cmp r0, 0x1 + beq _080DF934 + b _080DF95C +_080DF90A: + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + movs r0, 0x90 + lsls r0, 4 + strh r0, [r4, 0x30] + ldr r0, _080DF930 @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DF95C + .align 2, 0 +_080DF930: .4byte gUnknown_2037F1A +_080DF934: + ldrh r2, [r4, 0x30] + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x26] + subs r0, r1 + strh r0, [r4, 0x26] + subs r2, 0x60 + strh r2, [r4, 0x30] + movs r2, 0x22 + ldrsh r0, [r4, r2] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r2, 0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080DF95C + adds r0, r4, 0 + bl sub_8072740 +_080DF95C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DF8F8 + + thumb_func_start sub_80DF964 +sub_80DF964: @ 80DF964 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DF99C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DF9A4 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF9A0 @ =gUnknown_83FF210 + adds r0, r4, 0 + bl sub_80762D0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DF9B6 + .align 2, 0 +_080DF99C: .4byte gUnknown_3005090 +_080DF9A0: .4byte gUnknown_83FF210 +_080DF9A4: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080DF9B6 + adds r0, r5, 0 + bl sub_8072760 +_080DF9B6: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DF964 + + thumb_func_start sub_80DF9BC +sub_80DF9BC: @ 80DF9BC + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080DF9E4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r3, r1, 0 + cmp r0, 0x4 + bls _080DF9DA + b _080DFBCE +_080DF9DA: + lsls r0, 2 + ldr r1, _080DF9E8 @ =_080DF9EC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DF9E4: .4byte gUnknown_3005090 +_080DF9E8: .4byte _080DF9EC + .align 2, 0 +_080DF9EC: + .4byte _080DFA00 + .4byte _080DFA4C + .4byte _080DFA86 + .4byte _080DFB1C + .4byte _080DFB58 +_080DFA00: + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + ldr r0, _080DFA24 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DFA28 + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x1 + bl sub_80BC1F8 + b _080DFA32 + .align 2, 0 +_080DFA24: .4byte gUnknown_2037F1A +_080DFA28: + movs r0, 0x2 + movs r1, 0x2 + movs r2, 0x1 + bl sub_80BC1F8 +_080DFA32: + ldr r0, _080DFA44 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080DFA48 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r1, 0x1C] + b _080DFB00 + .align 2, 0 +_080DFA44: .4byte gUnknown_3005090 +_080DFA48: .4byte gUnknown_2037F02 +_080DFA4C: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r5, r0, r3 + ldrh r0, [r5, 0xC] + adds r1, r0, 0x1 + strh r1, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bgt _080DFA64 + b _080DFBCE +_080DFA64: + movs r0, 0 + strh r0, [r5, 0xC] + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + ldrh r4, [r5, 0xA] + lsls r1, r4, 4 + orrs r1, r4 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4C + bl sub_8000A38 + cmp r4, 0xF + beq _080DFA84 + b _080DFBCE +_080DFA84: + b _080DFB50 +_080DFA86: + ldr r6, _080DFAB4 @ =gUnknown_2037F1A + ldrb r0, [r6] + ldr r1, _080DFAB8 @ =gUnknown_2037F1B + ldrb r1, [r1] + lsls r4, r5, 2 + adds r2, r4, r5 + lsls r2, 3 + adds r2, r3 + ldrb r2, [r2, 0x1C] + bl sub_8034BF4 + ldrb r1, [r6] + mov r0, sp + bl sub_8075300 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080DFABC + movs r1, 0 + b _080DFAC6 + .align 2, 0 +_080DFAB4: .4byte gUnknown_2037F1A +_080DFAB8: .4byte gUnknown_2037F1B +_080DFABC: + ldrb r0, [r6] + bl sub_80751D8 + lsls r0, 24 + lsrs r1, r0, 24 +_080DFAC6: + ldr r0, _080DFB08 @ =gUnknown_202401C + ldr r2, [r0] + lsls r0, r1, 2 + adds r2, 0x4 + adds r2, r0 + ldr r1, _080DFB0C @ =gUnknown_2024024 + ldr r0, _080DFB10 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r1, 11 + ldr r0, [r2] + adds r0, r1 + ldr r1, [sp] + ldr r2, _080DFB14 @ =0x04000200 + bl CpuSet + ldr r1, [sp] + movs r2, 0x80 + lsls r2, 4 + mov r0, sp + ldrh r3, [r0, 0xA] + movs r0, 0x1 + bl sub_80017D0 + ldr r0, _080DFB18 @ =gUnknown_3005090 + adds r1, r4, r5 + lsls r1, 3 + adds r1, r0 +_080DFB00: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080DFBCE + .align 2, 0 +_080DFB08: .4byte gUnknown_202401C +_080DFB0C: .4byte gUnknown_2024024 +_080DFB10: .4byte gUnknown_2037F1A +_080DFB14: .4byte 0x04000200 +_080DFB18: .4byte gUnknown_3005090 +_080DFB1C: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r5, r0, r3 + ldrh r0, [r5, 0xC] + adds r1, r0, 0x1 + strh r1, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DFBCE + movs r0, 0 + strh r0, [r5, 0xC] + ldrh r0, [r5, 0xA] + subs r0, 0x1 + strh r0, [r5, 0xA] + ldrh r4, [r5, 0xA] + lsls r1, r4, 4 + orrs r1, r4 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4C + bl sub_8000A38 + cmp r4, 0 + bne _080DFBCE +_080DFB50: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080DFBCE +_080DFB58: + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + ldr r0, _080DFB7C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DFB80 + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + bl sub_80BC1F8 + b _080DFB8A + .align 2, 0 +_080DFB7C: .4byte gUnknown_2037F1A +_080DFB80: + movs r0, 0x2 + movs r1, 0x2 + movs r2, 0 + bl sub_80BC1F8 +_080DFB8A: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080DFBC8 + ldr r4, _080DFBD8 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DFBC8 + ldr r0, _080DFBDC @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x1C + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080DFBC8 + ldrb r0, [r4] + ldr r1, _080DFBE0 @ =gUnknown_2024018 + ldr r1, [r1] + ldr r2, [r1] + lsls r1, r0, 2 + adds r1, r2 + ldrh r1, [r1, 0x2] + bl sub_8035708 +_080DFBC8: + adds r0, r5, 0 + bl sub_8072760 +_080DFBCE: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DFBD8: .4byte gUnknown_2037F1A +_080DFBDC: .4byte gUnknown_3005090 +_080DFBE0: .4byte gUnknown_2024018 + thumb_func_end sub_80DF9BC + + thumb_func_start sub_80DFBE4 +sub_80DFBE4: @ 80DFBE4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080DFC14 @ =gUnknown_2037F02 + ldr r3, _080DFC18 @ =gUnknown_202063C + ldr r2, _080DFC1C @ =gUnknown_2023D44 + ldr r1, _080DFC20 @ =gUnknown_2037F1A + ldrb r1, [r1] + adds r1, r2 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + adds r1, 0x3E + ldrb r1, [r1] + lsls r1, 29 + lsrs r1, 31 + strh r1, [r4, 0xE] + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DFC14: .4byte gUnknown_2037F02 +_080DFC18: .4byte gUnknown_202063C +_080DFC1C: .4byte gUnknown_2023D44 +_080DFC20: .4byte gUnknown_2037F1A + thumb_func_end sub_80DFBE4 + + thumb_func_start sub_80DFC24 +sub_80DFC24: @ 80DFC24 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080DFC48 @ =gUnknown_2037F1A + ldrb r0, [r0] + ldr r1, _080DFC4C @ =gUnknown_2037F1B + ldrb r1, [r1] + movs r2, 0x1 + bl sub_8034BF4 + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DFC48: .4byte gUnknown_2037F1A +_080DFC4C: .4byte gUnknown_2037F1B + thumb_func_end sub_80DFC24 + + thumb_func_start sub_80DFC50 +sub_80DFC50: @ 80DFC50 + push {r4,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080DFC78 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bls _080DFC6E + b _080DFECA +_080DFC6E: + lsls r0, 2 + ldr r1, _080DFC7C @ =_080DFC80 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DFC78: .4byte gUnknown_3005090 +_080DFC7C: .4byte _080DFC80 + .align 2, 0 +_080DFC80: + .4byte _080DFC94 + .4byte _080DFD90 + .4byte _080DFDE0 + .4byte _080DFE4A + .4byte _080DFE7E +_080DFC94: + ldr r1, _080DFD18 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080DFCCE + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080DFCCE: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080DFD1C @ =gUnknown_8D2A8C0 + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080DFD20 @ =gUnknown_8D2A808 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080DFD24 @ =gUnknown_8D2A8A8 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080DFD30 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 + ldr r1, _080DFD28 @ =gUnknown_2022978 + ldr r3, _080DFD2C @ =0x0000ffc8 + b _080DFD58 + .align 2, 0 +_080DFD18: .4byte 0x00003f42 +_080DFD1C: .4byte gUnknown_8D2A8C0 +_080DFD20: .4byte gUnknown_8D2A808 +_080DFD24: .4byte gUnknown_8D2A8A8 +_080DFD28: .4byte gUnknown_2022978 +_080DFD2C: .4byte 0x0000ffc8 +_080DFD30: + ldr r0, _080DFD48 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080DFD54 + ldr r1, _080DFD4C @ =gUnknown_2022978 + ldr r2, _080DFD50 @ =0x0000ff79 + adds r0, r2, 0 + b _080DFD5A + .align 2, 0 +_080DFD48: .4byte gUnknown_2037F1A +_080DFD4C: .4byte gUnknown_2022978 +_080DFD50: .4byte 0x0000ff79 +_080DFD54: + ldr r1, _080DFD80 @ =gUnknown_2022978 + ldr r3, _080DFD84 @ =0x0000fff6 +_080DFD58: + adds r0, r3, 0 +_080DFD5A: + strh r0, [r1] + ldr r1, _080DFD88 @ =gUnknown_202297A + movs r0, 0 + strh r0, [r1] + ldr r0, _080DFD8C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080DFD80 @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r1, 0x1C] + ldr r0, _080DFD88 @ =gUnknown_202297A + ldrh r0, [r0] + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + b _080DFE66 + .align 2, 0 +_080DFD80: .4byte gUnknown_2022978 +_080DFD84: .4byte 0x0000fff6 +_080DFD88: .4byte gUnknown_202297A +_080DFD8C: .4byte gUnknown_3005090 +_080DFD90: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x10] + adds r1, r0, 0x1 + strh r1, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bgt _080DFDA6 + b _080DFECA +_080DFDA6: + movs r0, 0 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080DFDBC + movs r0, 0xC + strh r0, [r4, 0xA] +_080DFDBC: + ldrh r0, [r4, 0xA] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0xC + bne _080DFECA + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DFECA +_080DFDE0: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bge _080DFDF8 + movs r0, 0 + strh r0, [r4, 0xA] +_080DFDF8: + ldrh r0, [r4, 0xA] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DFECA + ldr r2, _080DFE3C @ =gUnknown_2022978 + ldr r1, _080DFE40 @ =gUnknown_83FF240 + movs r3, 0xC + ldrsh r0, [r4, r3] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080DFE44 + strh r0, [r4, 0x8] + b _080DFECA + .align 2, 0 +_080DFE3C: .4byte gUnknown_2022978 +_080DFE40: .4byte gUnknown_83FF240 +_080DFE44: + movs r0, 0x3 + strh r0, [r4, 0x8] + b _080DFECA +_080DFE4A: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0xE] + adds r0, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080DFECA + movs r0, 0 + strh r0, [r1, 0xE] + movs r0, 0x1 +_080DFE66: + strh r0, [r1, 0x8] + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xDD + bl sub_80722F4 + b _080DFECA +_080DFE7E: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080DFEA0 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080DFEA0: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + ldr r0, _080DFED4 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080DFED8 @ =gUnknown_202297A + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072760 +_080DFECA: + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DFED4: .4byte gUnknown_2022978 +_080DFED8: .4byte gUnknown_202297A + thumb_func_end sub_80DFC50 + + thumb_func_start sub_80DFEDC +sub_80DFEDC: @ 80DFEDC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r7, r0, 0 + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xFC + lsls r1, 14 + ands r1, r0 + lsrs r5, r1, 16 + adds r1, r5, 0 + cmp r1, 0x1F + ble _080DFF06 + movs r0, 0x20 + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 +_080DFF06: + ldr r4, _080E0000 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r5 + strh r0, [r7, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r7, 0x22] + ldr r1, _080E0004 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r7, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r7, 0x32] + ldr r4, _080E0008 @ =gUnknown_83FF26C + movs r0, 0x20 + ldrsh r1, [r7, r0] + movs r0, 0x22 + ldrsh r2, [r7, r0] + adds r5, r7, 0 + adds r5, 0x43 + ldrb r3, [r5] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + bl sub_8006F8C + mov r9, r0 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r0, 0x20 + ldrsh r1, [r7, r0] + movs r0, 0x22 + ldrsh r2, [r7, r0] + ldrb r3, [r5] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + bl sub_8006F8C + mov r8, r0 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r0, r9 + lsls r2, r0, 4 + add r2, r9 + lsls r2, 2 + ldr r1, _080E000C @ =gUnknown_202063C + mov r10, r1 + adds r5, r2, r1 + adds r0, r5, 0 + movs r1, 0x1 + str r2, [sp] + bl sub_800838C + mov r0, r8 + lsls r6, r0, 4 + add r6, r8 + lsls r6, 2 + mov r1, r10 + adds r4, r6, r1 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + ldr r1, _080E0004 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x32] + ldrh r0, [r1] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x32] + ldr r0, _080E0010 @ =0x0000ffff + strh r0, [r5, 0x3C] + movs r0, 0x1 + negs r0, r0 + strh r0, [r4, 0x3C] + adds r5, 0x3E + ldrb r0, [r5] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r5] + adds r4, 0x3E + ldrb r0, [r4] + orrs r0, r1 + strb r0, [r4] + movs r0, 0x1C + add r10, r0 + ldr r2, [sp] + add r2, r10 + ldr r0, _080E0014 @ =sub_80E0128 + str r0, [r2] + add r6, r10 + str r0, [r6] + mov r1, r9 + strh r1, [r7, 0x3A] + mov r0, r8 + strh r0, [r7, 0x3C] + ldr r0, _080E0018 @ =sub_80E001C + str r0, [r7, 0x1C] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0000: .4byte gUnknown_2037F1A +_080E0004: .4byte gUnknown_2037F02 +_080E0008: .4byte gUnknown_83FF26C +_080E000C: .4byte gUnknown_202063C +_080E0010: .4byte 0x0000ffff +_080E0014: .4byte sub_80E0128 +_080E0018: .4byte sub_80E001C + thumb_func_end sub_80DFEDC + + thumb_func_start sub_80E001C +sub_80E001C: @ 80E001C + push {lr} + adds r3, r0, 0 + ldrh r2, [r3, 0x32] + ldrh r0, [r3, 0x34] + adds r2, r0 + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r3, 0x26] + subs r1, r0 + strh r1, [r3, 0x26] + movs r0, 0xFF + ands r2, r0 + strh r2, [r3, 0x34] + movs r2, 0x36 + ldrsh r0, [r3, r2] + cmp r0, 0 + bne _080E006A + lsls r0, r1, 16 + asrs r0, 16 + movs r1, 0x8 + negs r1, r1 + cmp r0, r1 + bge _080E006A + ldr r2, _080E00C4 @ =gUnknown_202063C + movs r0, 0x3A + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldrh r0, [r3, 0x36] + adds r0, 0x1 + strh r0, [r3, 0x36] +_080E006A: + movs r1, 0x36 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + bne _080E009E + movs r2, 0x26 + ldrsh r1, [r3, r2] + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080E009E + ldr r2, _080E00C4 @ =gUnknown_202063C + movs r0, 0x3C + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldrh r0, [r3, 0x36] + adds r0, 0x1 + strh r0, [r3, 0x36] +_080E009E: + ldrh r0, [r3, 0x30] + subs r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080E00C0 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080E00C8 @ =sub_80E00CC + str r0, [r3, 0x1C] +_080E00C0: + pop {r0} + bx r0 + .align 2, 0 +_080E00C4: .4byte gUnknown_202063C +_080E00C8: .4byte sub_80E00CC + thumb_func_end sub_80E001C + + thumb_func_start sub_80E00CC +sub_80E00CC: @ 80E00CC + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080E0120 @ =gUnknown_202063C + movs r0, 0x3A + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r3, r0, 2 + adds r6, r5, 0 + adds r6, 0x1C + adds r0, r3, r6 + ldr r2, [r0] + ldr r0, _080E0124 @ =nullsub_8 + cmp r2, r0 + bne _080E0118 + movs r1, 0x3C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldr r0, [r1] + cmp r0, r2 + bne _080E0118 + adds r0, r3, r5 + bl sub_8007280 + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + adds r0, r4, 0 + bl sub_8072740 +_080E0118: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0120: .4byte gUnknown_202063C +_080E0124: .4byte nullsub_8 + thumb_func_end sub_80E00CC + + thumb_func_start sub_80E0128 +sub_80E0128: @ 80E0128 + push {lr} + adds r3, r0, 0 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080E0174 + ldrh r2, [r3, 0x32] + ldrh r1, [r3, 0x34] + adds r2, r1 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r3, 0x26] + subs r0, r1 + strh r0, [r3, 0x26] + movs r0, 0xFF + ands r2, r0 + strh r2, [r3, 0x34] + ldrh r0, [r3, 0x30] + subs r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080E0174 + mov r1, r12 + ldrb r0, [r1] + movs r1, 0x4 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldr r0, _080E0178 @ =nullsub_8 + str r0, [r3, 0x1C] +_080E0174: + pop {r0} + bx r0 + .align 2, 0 +_080E0178: .4byte nullsub_8 + thumb_func_end sub_80E0128 + + thumb_func_start sub_80E017C +sub_80E017C: @ 80E017C + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080E01A4 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r4, r1, 0 + cmp r0, 0x5 + bls _080E019A + b _080E0476 +_080E019A: + lsls r0, 2 + ldr r1, _080E01A8 @ =_080E01AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E01A4: .4byte gUnknown_3005090 +_080E01A8: .4byte _080E01AC + .align 2, 0 +_080E01AC: + .4byte _080E01C4 + .4byte _080E0304 + .4byte _080E038C + .4byte _080E03C2 + .4byte _080E03F0 + .4byte _080E042A +_080E01C4: + ldr r1, _080E0248 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080E024C @ =0x00000d03 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080E01FC + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 +_080E01FC: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080E0250 @ =gUnknown_8D2A8C0 + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080E0254 @ =gUnknown_8D2A808 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080E0258 @ =gUnknown_8D2A8A8 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080E0264 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 + ldr r1, _080E025C @ =gUnknown_2022978 + ldr r3, _080E0260 @ =0x0000ffc8 + adds r0, r3, 0 + b _080E02CE + .align 2, 0 +_080E0248: .4byte 0x00003f42 +_080E024C: .4byte 0x00000d03 +_080E0250: .4byte gUnknown_8D2A8C0 +_080E0254: .4byte gUnknown_8D2A808 +_080E0258: .4byte gUnknown_8D2A8A8 +_080E025C: .4byte gUnknown_2022978 +_080E0260: .4byte 0x0000ffc8 +_080E0264: + ldr r0, _080E02A4 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E02B8 + ldr r1, _080E02A8 @ =gUnknown_2022978 + cmp r4, 0x1 + bne _080E0288 + ldr r2, _080E02AC @ =0x0000ff65 + adds r0, r2, 0 + strh r0, [r1] +_080E0288: + cmp r4, 0x3 + bne _080E0292 + ldr r3, _080E02B0 @ =0x0000ff8d + adds r0, r3, 0 + strh r0, [r1] +_080E0292: + cmp r4, 0 + bne _080E029A + movs r0, 0xE + strh r0, [r1] +_080E029A: + cmp r4, 0x2 + bne _080E02D0 + ldr r1, _080E02A8 @ =gUnknown_2022978 + ldr r2, _080E02B4 @ =0x0000ffec + b _080E02CC + .align 2, 0 +_080E02A4: .4byte gUnknown_2037F1B +_080E02A8: .4byte gUnknown_2022978 +_080E02AC: .4byte 0x0000ff65 +_080E02B0: .4byte 0x0000ff8d +_080E02B4: .4byte 0x0000ffec +_080E02B8: + cmp r4, 0x1 + bne _080E02C4 + ldr r1, _080E02F0 @ =gUnknown_2022978 + ldr r3, _080E02F4 @ =0x0000ff79 + adds r0, r3, 0 + strh r0, [r1] +_080E02C4: + cmp r4, 0 + bne _080E02D0 + ldr r1, _080E02F0 @ =gUnknown_2022978 + ldr r2, _080E02F8 @ =0x0000fff6 +_080E02CC: + adds r0, r2, 0 +_080E02CE: + strh r0, [r1] +_080E02D0: + ldr r1, _080E02FC @ =gUnknown_202297A + movs r0, 0 + strh r0, [r1] + ldr r0, _080E0300 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080E02F0 @ =gUnknown_2022978 + ldrh r0, [r0] + strh r0, [r1, 0x1C] + ldr r0, _080E02FC @ =gUnknown_202297A + ldrh r0, [r0] + strh r0, [r1, 0x1E] + b _080E0384 + .align 2, 0 +_080E02F0: .4byte gUnknown_2022978 +_080E02F4: .4byte 0x0000ff79 +_080E02F8: .4byte 0x0000fff6 +_080E02FC: .4byte gUnknown_202297A +_080E0300: .4byte gUnknown_3005090 +_080E0304: + ldr r1, _080E0338 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r0, r4, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r0, 0 + strh r0, [r5, 0xE] + ldr r0, _080E033C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E0348 + ldr r2, _080E0340 @ =gUnknown_2022978 + ldr r1, _080E0344 @ =gUnknown_83FF284 + movs r3, 0xC + ldrsh r0, [r5, r3] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r5, [r5, 0x1C] + adds r0, r5 + b _080E035A + .align 2, 0 +_080E0338: .4byte gUnknown_3005090 +_080E033C: .4byte gUnknown_2037F1B +_080E0340: .4byte gUnknown_2022978 +_080E0344: .4byte gUnknown_83FF284 +_080E0348: + ldr r2, _080E0378 @ =gUnknown_2022978 + ldr r1, _080E037C @ =gUnknown_83FF284 + movs r3, 0xC + ldrsh r0, [r5, r3] + adds r0, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + ldrh r0, [r5, 0x1C] + subs r0, r1 +_080E035A: + strh r0, [r2] + ldr r0, _080E0380 @ =gUnknown_3005090 + adds r1, r4, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xC] + adds r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080E0384 + strh r0, [r1, 0x8] + b _080E0476 + .align 2, 0 +_080E0378: .4byte gUnknown_2022978 +_080E037C: .4byte gUnknown_83FF284 +_080E0380: .4byte gUnknown_3005090 +_080E0384: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080E0476 +_080E038C: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r4 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080E03A6 + movs r0, 0x5 + strh r0, [r4, 0xA] +_080E03A6: + ldrh r1, [r4, 0xA] + lsls r1, 8 + movs r0, 0x3 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bne _080E0476 + b _080E03E2 +_080E03C2: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r4 + ldrh r1, [r4, 0xE] + adds r1, 0x1 + strh r1, [r4, 0xE] + lsls r1, 16 + asrs r1, 16 + ldr r2, _080E03EC @ =gUnknown_83FF288 + movs r3, 0xC + ldrsh r0, [r4, r3] + adds r0, r2 + ldrb r0, [r0] + cmp r1, r0 + ble _080E0476 +_080E03E2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E0476 + .align 2, 0 +_080E03EC: .4byte gUnknown_83FF288 +_080E03F0: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r4 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + ble _080E040A + movs r0, 0xD + strh r0, [r4, 0xA] +_080E040A: + ldrh r1, [r4, 0xA] + lsls r1, 8 + movs r0, 0x3 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0xD + bne _080E0476 + movs r0, 0x1 + strh r0, [r4, 0x8] + b _080E0476 +_080E042A: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080E044C + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080E044C: + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80BC1F8 + ldr r0, _080E0480 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E0484 @ =gUnknown_202297A + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r6, 0 + bl sub_8072760 +_080E0476: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0480: .4byte gUnknown_2022978 +_080E0484: .4byte gUnknown_202297A + thumb_func_end sub_80E017C + + thumb_func_start sub_80E0488 +sub_80E0488: @ 80E0488 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080E04C0 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E04C8 + movs r0, 0 + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080E04C4 @ =gUnknown_83FF290 + adds r0, r4, 0 + bl sub_80762D0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E04DA + .align 2, 0 +_080E04C0: .4byte gUnknown_3005090 +_080E04C4: .4byte gUnknown_83FF290 +_080E04C8: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080E04DA + adds r0, r5, 0 + bl sub_8072760 +_080E04DA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E0488 + + thumb_func_start sub_80E04E0 +sub_80E04E0: @ 80E04E0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + movs r2, 0x2E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080E04FE + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080E0552 +_080E04FE: + adds r0, 0x1 + strh r0, [r4, 0x2E] + cmp r1, 0x14 + ble _080E0552 + ldrh r0, [r4, 0x30] + adds r0, 0xA0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + adds r0, 0x80 + strh r0, [r4, 0x32] + ldr r0, _080E052C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080E0530 + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + b _080E0536 + .align 2, 0 +_080E052C: .4byte gUnknown_2037F1A +_080E0530: + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 +_080E0536: + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x40 + ble _080E0552 + adds r0, r4, 0 + bl sub_8072740 +_080E0552: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E04E0 + + thumb_func_start sub_80E0558 +sub_80E0558: @ 80E0558 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E057C @ =gUnknown_3005090 + adds r4, r0, r1 + ldr r5, _080E0580 @ =gUnknown_2037F02 + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080E0584 + adds r0, r2, 0 + bl sub_8072760 + b _080E0618 + .align 2, 0 +_080E057C: .4byte gUnknown_3005090 +_080E0580: .4byte gUnknown_2037F02 +_080E0584: + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bge _080E0590 + movs r0, 0 + strh r0, [r5, 0x4] +_080E0590: + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0x2 + ble _080E059C + movs r0, 0x2 + strh r0, [r5, 0x4] +_080E059C: + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + movs r0, 0x4 + ldrsh r1, [r5, r0] + lsls r1, 1 + movs r0, 0x8 + subs r0, r1 + strh r0, [r4, 0xE] + movs r1, 0x4 + ldrsh r0, [r5, r1] + lsls r0, 7 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r4, 0x10] + ldrh r0, [r5, 0x4] + adds r0, 0x2 + strh r0, [r4, 0x12] + ldrh r0, [r5, 0x2] + subs r0, 0x1 + strh r0, [r4, 0x14] + ldrb r0, [r5] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080E05E8 + ldr r0, _080E05E4 @ =gUnknown_2037F1A + b _080E05EA + .align 2, 0 +_080E05E4: .4byte gUnknown_2037F1A +_080E05E8: + ldr r0, _080E0620 @ =gUnknown_2037F1B +_080E05EA: + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E0608 + movs r1, 0x10 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x10] + movs r1, 0x12 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x12] +_080E0608: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80758E0 + ldr r0, _080E0624 @ =sub_80E0628 + str r0, [r4] +_080E0618: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0620: .4byte gUnknown_2037F1B +_080E0624: .4byte sub_80E0628 + thumb_func_end sub_80E0558 + + thumb_func_start sub_80E0628 +sub_80E0628: @ 80E0628 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080E064C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r6, [r4, r0] + cmp r6, 0x1 + beq _080E06B0 + cmp r6, 0x1 + bgt _080E0650 + cmp r6, 0 + beq _080E065C + b _080E0788 + .align 2, 0 +_080E064C: .4byte gUnknown_3005090 +_080E0650: + cmp r6, 0x2 + beq _080E0708 + cmp r6, 0x3 + bne _080E065A + b _080E0778 +_080E065A: + b _080E0788 +_080E065C: + ldr r2, _080E06AC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + ldrh r0, [r4, 0xC] + ldrh r1, [r4, 0x10] + subs r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0xC] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080E0788 + strh r6, [r4, 0xA] + b _080E0770 + .align 2, 0 +_080E06AC: .4byte gUnknown_202063C +_080E06B0: + ldr r2, _080E0704 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + ldrh r2, [r4, 0x12] + subs r1, r2 + strh r1, [r0, 0x24] + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0xC] + adds r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0xC] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + lsls r1, 16 + asrs r1, 16 + movs r2, 0xE + ldrsh r0, [r4, r2] + lsls r0, 1 + cmp r1, r0 + blt _080E0788 + movs r0, 0 + strh r0, [r4, 0xA] + b _080E0770 + .align 2, 0 +_080E0704: .4byte gUnknown_202063C +_080E0708: + ldr r2, _080E076C @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r2, [r0, 0x24] + adds r1, r2 + movs r5, 0 + strh r1, [r0, 0x24] + ldrh r0, [r4, 0xC] + ldrh r1, [r4, 0x10] + subs r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0xC] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080E0788 + ldrh r1, [r4, 0x14] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080E0770 + subs r0, r1, 0x1 + strh r0, [r4, 0x14] + strh r5, [r4, 0xA] + strh r5, [r4, 0x8] + b _080E0788 + .align 2, 0 +_080E076C: .4byte gUnknown_202063C +_080E0770: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E0788 +_080E0778: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + adds r0, r5, 0 + bl sub_8072760 +_080E0788: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E0628 + + thumb_func_start sub_80E0790 +sub_80E0790: @ 80E0790 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E07AC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080E07B4 + strh r0, [r4, 0x20] + ldr r1, _080E07B0 @ =gUnknown_2037F02 + ldrh r0, [r1] + b _080E07BE + .align 2, 0 +_080E07AC: .4byte gUnknown_2037F1A +_080E07B0: .4byte gUnknown_2037F02 +_080E07B4: + movs r0, 0xF0 + strh r0, [r4, 0x20] + ldr r1, _080E07D8 @ =gUnknown_2037F02 + ldrh r0, [r1] + subs r0, 0x1E +_080E07BE: + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldrb r1, [r1, 0x2] + adds r0, r4, 0 + bl sub_800838C + ldr r0, _080E07DC @ =sub_80E07E0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E07D8: .4byte gUnknown_2037F02 +_080E07DC: .4byte sub_80E07E0 + thumb_func_end sub_80E0790 + + thumb_func_start sub_80E07E0 +sub_80E07E0: @ 80E07E0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x3 + strh r0, [r4, 0x2E] + ldr r0, _080E0820 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E0824 + ldrh r1, [r4, 0x20] + adds r1, 0x5 + strh r1, [r4, 0x20] + ldrh r0, [r4, 0x22] + subs r0, 0x1 + strh r0, [r4, 0x22] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0xF0 + ble _080E0812 + adds r0, r4, 0 + bl sub_8072740 +_080E0812: + ldrh r1, [r4, 0x2E] + movs r0, 0xFF + ands r0, r1 + movs r1, 0x10 + bl sub_8044E30 + b _080E0848 + .align 2, 0 +_080E0820: .4byte gUnknown_2037F1A +_080E0824: + ldrh r1, [r4, 0x20] + subs r1, 0x5 + strh r1, [r4, 0x20] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] + lsls r1, 16 + cmp r1, 0 + bge _080E083C + adds r0, r4, 0 + bl sub_8072740 +_080E083C: + ldrh r1, [r4, 0x2E] + movs r0, 0xFF + ands r0, r1 + movs r1, 0x10 + bl sub_8044E4C +_080E0848: + strh r0, [r4, 0x26] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E07E0 + + thumb_func_start sub_80E0850 +sub_80E0850: @ 80E0850 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080E0898 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + movs r0, 0x20 + strh r0, [r4, 0x20] + movs r0, 0x40 + strh r0, [r4, 0x22] + movs r0, 0x80 + lsls r0, 4 + strh r0, [r4, 0x24] + ldr r0, _080E089C @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + movs r1, 0 + bl sub_80758E0 + ldr r0, _080E08A0 @ =sub_80E08A4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0898: .4byte gUnknown_3005090 +_080E089C: .4byte gUnknown_2037F02 +_080E08A0: .4byte sub_80E08A4 + thumb_func_end sub_80E0850 + + thumb_func_start sub_80E08A4 +sub_80E08A4: @ 80E08A4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080E08D0 @ =gUnknown_3005090 + adds r7, r0, r1 + movs r1, 0x8 + ldrsh r0, [r7, r1] + mov r8, r0 + cmp r0, 0x1 + beq _080E0940 + cmp r0, 0x1 + bgt _080E08D4 + cmp r0, 0 + beq _080E08DC + b _080E09BA + .align 2, 0 +_080E08D0: .4byte gUnknown_3005090 +_080E08D4: + mov r2, r8 + cmp r2, 0x2 + beq _080E09A8 + b _080E09BA +_080E08DC: + movs r3, 0x80 + lsls r3, 2 + adds r0, r3, 0 + ldrh r1, [r7, 0xC] + adds r2, r0, r1 + strh r2, [r7, 0xC] + lsls r0, r2, 16 + asrs r0, 16 + ldrh r3, [r7, 0x24] + mov r8, r3 + movs r3, 0x24 + ldrsh r1, [r7, r3] + cmp r0, r1 + blt _080E09BA + mov r0, r8 + subs r5, r0, r2 + lsls r5, 16 + asrs r5, 16 + adds r6, r1, 0 + lsls r6, 1 + adds r0, r5, 0 + adds r1, r6, 0 + bl __divsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r6, 0 + bl __modsi3 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + asrs r4, 16 + movs r1, 0x1 + ands r4, r1 + cmp r4, 0 + bne _080E0934 + lsls r0, 16 + asrs r0, 16 + mov r2, r8 + subs r0, r2, r0 + b _080E0992 +_080E0934: + lsls r0, 16 + asrs r0, 16 + mov r3, r8 + subs r0, r3 + strh r0, [r7, 0xC] + b _080E09BA +_080E0940: + ldr r1, _080E0998 @ =0xfffffe00 + adds r0, r1, 0 + ldrh r2, [r7, 0xC] + adds r1, r0, r2 + strh r1, [r7, 0xC] + movs r3, 0xC + ldrsh r0, [r7, r3] + movs r2, 0x24 + ldrsh r6, [r7, r2] + cmn r0, r6 + bgt _080E09BA + ldrh r3, [r7, 0x24] + mov r9, r3 + mov r0, r9 + subs r4, r0, r1 + lsls r4, 16 + asrs r4, 16 + lsls r6, 1 + adds r0, r4, 0 + adds r1, r6, 0 + bl __divsi3 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + adds r1, r6, 0 + bl __modsi3 + lsls r0, 16 + lsrs r2, r0, 16 + mov r1, r8 + ands r1, r5 + lsls r0, r1, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _080E099C + lsls r0, r2, 16 + asrs r0, 16 + mov r2, r9 + subs r0, r2 +_080E0992: + strh r0, [r7, 0xC] + strh r1, [r7, 0x8] + b _080E09BA + .align 2, 0 +_080E0998: .4byte 0xfffffe00 +_080E099C: + lsls r0, r2, 16 + asrs r0, 16 + mov r3, r9 + subs r0, r3, r0 + strh r0, [r7, 0xC] + b _080E09BA +_080E09A8: + ldrh r0, [r7, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + adds r0, r4, 0 + bl sub_8072760 + b _080E0A30 +_080E09BA: + ldrh r0, [r7, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r7, 0xC] + adds r1, r2, 0 + bl sub_8075858 + ldrh r0, [r7, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + ldr r2, _080E0A28 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + movs r2, 0xC + ldrsh r0, [r7, r2] + cmp r0, 0 + bge _080E09EE + adds r0, 0x3F +_080E09EE: + asrs r0, 6 + negs r0, r0 + strh r0, [r1, 0x24] + ldrh r0, [r7, 0xA] + adds r0, 0x1 + strh r0, [r7, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080E0A30 + ldrh r1, [r7, 0x20] + movs r3, 0x20 + ldrsh r0, [r7, r3] + cmp r0, 0 + beq _080E0A2C + subs r0, r1, 0x1 + strh r0, [r7, 0x20] + ldrh r0, [r7, 0x24] + ldrh r1, [r7, 0x22] + subs r0, r1 + strh r0, [r7, 0x24] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _080E0A30 + movs r0, 0x10 + strh r0, [r7, 0x24] + b _080E0A30 + .align 2, 0 +_080E0A28: .4byte gUnknown_202063C +_080E0A2C: + movs r0, 0x2 + strh r0, [r7, 0x8] +_080E0A30: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E08A4 + + thumb_func_start sub_80E0A3C +sub_80E0A3C: @ 80E0A3C + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080E0A9C + ldr r6, _080E0A94 @ =gUnknown_2037F02 + movs r2, 0x4 + ldrsh r0, [r6, r2] + cmp r0, 0 + bne _080E0A70 + ldr r4, _080E0A98 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_080E0A70: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + ldrh r1, [r6, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r1, r2 + strh r0, [r5, 0x22] + movs r0, 0x80 + strh r0, [r5, 0x30] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r5, 0x32] + strh r1, [r5, 0x34] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080E0AFA + .align 2, 0 +_080E0A94: .4byte gUnknown_2037F02 +_080E0A98: .4byte gUnknown_2037F1A +_080E0A9C: + ldrh r1, [r5, 0x30] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r5, 0x26] + adds r0, r2 + strh r0, [r5, 0x26] + movs r2, 0x36 + ldrsh r0, [r5, r2] + adds r4, r1, 0 + cmp r0, 0 + bne _080E0ADA + movs r0, 0x26 + ldrsh r1, [r5, r0] + movs r2, 0x34 + ldrsh r0, [r5, r2] + cmn r1, r0 + ble _080E0ADA + movs r0, 0x1 + strh r0, [r5, 0x36] + movs r1, 0x32 + ldrsh r0, [r5, r1] + negs r0, r0 + movs r1, 0x3 + bl __divsi3 + lsls r0, 1 + strh r0, [r5, 0x32] +_080E0ADA: + adds r0, r4, 0 + adds r0, 0xC0 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x80 + strh r0, [r5, 0x32] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080E0AFA + adds r0, r5, 0 + bl sub_8072740 +_080E0AFA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E0A3C + + thumb_func_start sub_80E0B00 +sub_80E0B00: @ 80E0B00 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + ldr r1, _080E0B30 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r2, r0, r1 + movs r1, 0x8 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080E0C0C + ldr r0, _080E0B34 @ =gUnknown_2037F02 + movs r3, 0 + ldrsh r1, [r0, r3] + mov r8, r0 + cmp r1, 0 + bne _080E0B3C + ldr r0, _080E0B38 @ =gUnknown_2037F1A + b _080E0B3E + .align 2, 0 +_080E0B30: .4byte gUnknown_3005090 +_080E0B34: .4byte gUnknown_2037F02 +_080E0B38: .4byte gUnknown_2037F1A +_080E0B3C: + ldr r0, _080E0B78 @ =gUnknown_2037F1B +_080E0B3E: + ldrb r0, [r0] + strh r0, [r2, 0x1E] + mov r1, r8 + ldrb r0, [r1] + bl sub_80749D4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080E0B7C @ =gUnknown_3005090 + lsls r4, r7, 2 + adds r0, r4, r7 + lsls r0, 3 + adds r6, r0, r1 + strh r5, [r6, 0x1C] + adds r0, r5, 0 + movs r1, 0 + bl sub_80758E0 + mov r2, r8 + movs r3, 0x2 + ldrsh r0, [r2, r3] + cmp r0, 0x1 + beq _080E0BA0 + cmp r0, 0x1 + bgt _080E0B80 + cmp r0, 0 + beq _080E0B88 + lsls r2, r5, 4 + b _080E0BE8 + .align 2, 0 +_080E0B78: .4byte gUnknown_2037F1B +_080E0B7C: .4byte gUnknown_3005090 +_080E0B80: + cmp r0, 0x2 + beq _080E0BAA + lsls r2, r5, 4 + b _080E0BE8 +_080E0B88: + movs r2, 0xA0 + lsls r2, 1 + adds r0, r5, 0 + movs r1, 0xE0 + movs r3, 0 + bl sub_8075858 + adds r0, r5, 0 + bl sub_8076440 + lsls r2, r5, 4 + b _080E0BE8 +_080E0BA0: + movs r2, 0x98 + lsls r2, 1 + movs r3, 0xF0 + lsls r3, 4 + b _080E0BB2 +_080E0BAA: + movs r2, 0x98 + lsls r2, 1 + movs r3, 0xF1 + lsls r3, 8 +_080E0BB2: + adds r0, r5, 0 + movs r1, 0xD0 + bl sub_8075858 + adds r0, r5, 0 + bl sub_8076440 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080E0BD8 + ldrb r0, [r6, 0x1E] + bl sub_80751C4 + lsls r0, 24 + lsls r2, r5, 4 + cmp r0, 0 + bne _080E0BE8 +_080E0BD8: + ldr r0, _080E0C04 @ =gUnknown_202063C + lsls r2, r5, 4 + adds r1, r2, r5 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x10 + strh r0, [r1, 0x26] +_080E0BE8: + ldr r1, _080E0C04 @ =gUnknown_202063C + adds r0, r2, r5 + lsls r0, 2 + adds r0, r1 + movs r1, 0x2 + strh r1, [r0, 0x24] + ldr r0, _080E0C08 @ =gUnknown_3005090 + adds r1, r4, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080E0C58 + .align 2, 0 +_080E0C04: .4byte gUnknown_202063C +_080E0C08: .4byte gUnknown_3005090 +_080E0C0C: + ldrb r5, [r2, 0x1C] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + movs r4, 0 + strh r0, [r2, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080E0C30 + strh r4, [r2, 0xC] + ldr r0, _080E0C64 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x24] + negs r0, r0 + strh r0, [r1, 0x24] +_080E0C30: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bne _080E0C58 + adds r0, r5, 0 + bl sub_8075980 + ldr r1, _080E0C64 @ =gUnknown_202063C + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + strh r4, [r0, 0x24] + strh r4, [r0, 0x26] + adds r0, r7, 0 + bl sub_8072760 +_080E0C58: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0C64: .4byte gUnknown_202063C + thumb_func_end sub_80E0B00 + + thumb_func_start sub_80E0C68 +sub_80E0C68: @ 80E0C68 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xC + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, r0 + ldr r3, _080E0CB4 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E0CB8 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + bl sub_8044EC8 + ldr r5, _080E0CBC @ =0x000001ff + ands r5, r0 + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _080E0CC0 + movs r2, 0xBC + lsls r2, 3 + adds r0, r5, r2 + b _080E0CC8 + .align 2, 0 +_080E0CB4: .4byte 0x000003ff +_080E0CB8: .4byte 0xfffffc00 +_080E0CBC: .4byte 0x000001ff +_080E0CC0: + movs r3, 0xBC + lsls r3, 3 + adds r0, r3, 0 + subs r0, r5 +_080E0CC8: + strh r0, [r4, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E0CDA + movs r2, 0x90 + lsls r2, 3 + adds r0, r1, r2 + b _080E0CE2 +_080E0CDA: + movs r3, 0x90 + lsls r3, 3 + adds r0, r3, 0 + subs r0, r1 +_080E0CE2: + strh r0, [r4, 0x30] + ldr r0, _080E0CF4 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r4, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _080E0CFC + ldr r0, _080E0CF8 @ =0x0000fff8 + b _080E0CFE + .align 2, 0 +_080E0CF4: .4byte gUnknown_2037F02 +_080E0CF8: .4byte 0x0000fff8 +_080E0CFC: + movs r0, 0xF8 +_080E0CFE: + strh r0, [r4, 0x20] + movs r0, 0x68 + strh r0, [r4, 0x22] + ldr r0, _080E0D10 @ =sub_80E0D14 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0D10: .4byte sub_80E0D14 + thumb_func_end sub_80E0C68 + + thumb_func_start sub_80E0D14 +sub_80E0D14: @ 80E0D14 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E0D2C + ldrh r3, [r4, 0x2E] + lsls r0, r3, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + b _080E0D36 +_080E0D2C: + ldrh r3, [r4, 0x2E] + lsls r1, r3, 16 + asrs r1, 24 + ldrh r0, [r4, 0x24] + subs r0, r1 +_080E0D36: + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x30] + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x26] + subs r0, r1 + strh r0, [r4, 0x26] + adds r0, r3, 0 + subs r0, 0x16 + strh r0, [r4, 0x2E] + adds r1, r2, 0 + subs r1, 0x30 + strh r1, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080E0D5A + movs r0, 0 + strh r0, [r4, 0x2E] +_080E0D5A: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080E0D6E + adds r0, r4, 0 + bl sub_8072740 +_080E0D6E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E0D14 + + thumb_func_start sub_80E0D74 +sub_80E0D74: @ 80E0D74 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _080E0DD8 @ =0x00001f3f + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r0, _080E0DDC @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r4, _080E0DE0 @ =gUnknown_2022986 + strh r1, [r4] + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, _080E0DE4 @ =gUnknown_2037F02 + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + adds r0, r5, 0 + movs r1, 0 + bl sub_8075114 + ldrb r1, [r5, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r5, 0x1] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080E0DE8 @ =sub_80E0DEC + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0DD8: .4byte 0x00001f3f +_080E0DDC: .4byte gUnknown_2022984 +_080E0DE0: .4byte gUnknown_2022986 +_080E0DE4: .4byte gUnknown_2037F02 +_080E0DE8: .4byte sub_80E0DEC + thumb_func_end sub_80E0D74 + + thumb_func_start sub_80E0DEC +sub_80E0DEC: @ 80E0DEC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080E0E2A + cmp r0, 0x1 + bgt _080E0E02 + cmp r0, 0 + beq _080E0E0C + b _080E0E8A +_080E0E02: + cmp r0, 0x2 + beq _080E0E40 + cmp r0, 0x3 + beq _080E0E62 + b _080E0E8A +_080E0E0C: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080E0E8A + b _080E0E5A +_080E0E2A: + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080E0E8A + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800849C + b _080E0E5A +_080E0E40: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080E0E8A + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080E0E5A: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + b _080E0E8A +_080E0E62: + ldr r1, _080E0E90 @ =0x00003f3f + movs r0, 0x4A + bl sub_8000A38 + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8072740 +_080E0E8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0E90: .4byte 0x00003f3f + thumb_func_end sub_80E0DEC + + thumb_func_start sub_80E0E94 +sub_80E0E94: @ 80E0E94 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080E0ED0 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, _080E0ED4 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldr r1, _080E0ED8 @ =sub_80E0EDC + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0ED0: .4byte gUnknown_2037F1A +_080E0ED4: .4byte gUnknown_2037F02 +_080E0ED8: .4byte sub_80E0EDC + thumb_func_end sub_80E0E94 + + thumb_func_start sub_80E0EDC +sub_80E0EDC: @ 80E0EDC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r2, 0x30 + ldrsh r0, [r4, r2] + ldrh r1, [r4, 0x34] + lsls r1, 16 + asrs r1, 24 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x9 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + lsls r1, r0, 16 + cmp r0, 0x3F + bls _080E0F16 + asrs r0, r1, 16 + cmp r0, 0xC3 + ble _080E0F28 +_080E0F16: + ldr r0, _080E0F24 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + subs r0, 0x1 + b _080E0F32 + .align 2, 0 +_080E0F24: .4byte gUnknown_2037F1A +_080E0F28: + ldr r0, _080E0F74 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_807685C + adds r0, 0x1 +_080E0F32: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r3, 0x38 + ldrsh r2, [r4, r3] + cmp r2, 0 + bne _080E0F78 + movs r1, 0x80 + lsls r1, 3 + adds r0, r1, 0 + ldrh r3, [r4, 0x32] + adds r0, r3 + strh r0, [r4, 0x32] + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ldrh r3, [r4, 0x34] + adds r0, r3 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x2E + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080E0FA8 + strh r2, [r4, 0x36] + movs r0, 0x1 + strh r0, [r4, 0x38] + b _080E0FA8 + .align 2, 0 +_080E0F74: .4byte gUnknown_2037F1A +_080E0F78: + cmp r2, 0x1 + bne _080E0FA8 + ldr r1, _080E0FB0 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r4, 0x32] + adds r0, r2 + strh r0, [r4, 0x32] + ldr r3, _080E0FB4 @ =0xffffff00 + adds r0, r3, 0 + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x2E + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080E0FA8 + adds r0, r4, 0 + bl sub_8072740 +_080E0FA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0FB0: .4byte 0xfffffc00 +_080E0FB4: .4byte 0xffffff00 + thumb_func_end sub_80E0EDC + + thumb_func_start sub_80E0FB8 +sub_80E0FB8: @ 80E0FB8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x18] + movs r0, 0 + bl sub_80749D4 + ldr r0, _080E1040 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080E107C + movs r0, 0 + str r0, [sp, 0x1C] + ldr r6, _080E1044 @ =gUnknown_2023BCE + ldr r4, _080E1048 @ =gUnknown_2037F1B + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r7, _080E104C @ =gUnknown_2024284 + adds r0, r7 + movs r1, 0 + bl sub_803FBE8 + mov r10, r0 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r7 + movs r1, 0x1 + bl sub_803FBE8 + mov r9, r0 + ldr r0, _080E1050 @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080E1074 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E1054 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r7 + b _080E1062 + .align 2, 0 +_080E1040: .4byte gUnknown_2037F1A +_080E1044: .4byte gUnknown_2023BCE +_080E1048: .4byte gUnknown_2037F1B +_080E104C: .4byte gUnknown_2024284 +_080E1050: .4byte gUnknown_2024018 +_080E1054: + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + ldr r1, _080E1070 @ =gUnknown_202402C + adds r0, r1 +_080E1062: + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + b _080E1076 + .align 2, 0 +_080E1070: .4byte gUnknown_202402C +_080E1074: + ldrh r6, [r1, 0x2] +_080E1076: + movs r1, 0x14 + mov r8, r1 + b _080E1112 +_080E107C: + movs r2, 0x1 + str r2, [sp, 0x1C] + ldr r6, _080E10E0 @ =gUnknown_2023BCE + ldr r4, _080E10E4 @ =gUnknown_2037F1B + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r7, _080E10E8 @ =gUnknown_202402C + adds r0, r7 + movs r1, 0 + bl sub_803FBE8 + mov r10, r0 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r7 + movs r1, 0x1 + bl sub_803FBE8 + mov r9, r0 + ldr r0, _080E10EC @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080E110C + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E10F4 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + ldr r1, _080E10F0 @ =gUnknown_2024284 + adds r0, r1 + b _080E1100 + .align 2, 0 +_080E10E0: .4byte gUnknown_2023BCE +_080E10E4: .4byte gUnknown_2037F1B +_080E10E8: .4byte gUnknown_202402C +_080E10EC: .4byte gUnknown_2024018 +_080E10F0: .4byte gUnknown_2024284 +_080E10F4: + ldrb r0, [r4] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r7 +_080E1100: + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + b _080E110E +_080E110C: + ldrh r6, [r1, 0x2] +_080E110E: + ldr r3, _080E11FC @ =0x0000ffec + mov r8, r3 +_080E1112: + ldr r0, _080E1200 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_8076884 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r5, _080E1200 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + mov r2, r8 + lsls r1, r2, 16 + asrs r1, 16 + adds r4, r1 + lsls r4, 16 + asrs r4, 16 + lsrs r0, 24 + str r0, [sp] + movs r0, 0x5 + str r0, [sp, 0x4] + mov r3, r10 + str r3, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + ldr r0, _080E1204 @ =gUnknown_2037F1B + ldrb r0, [r0] + str r0, [sp, 0x10] + movs r0, 0x1 + str r0, [sp, 0x14] + adds r0, r6, 0 + ldr r1, [sp, 0x1C] + movs r2, 0 + adds r3, r4, 0 + bl sub_80768D0 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080E1208 @ =gUnknown_202063C + lsls r5, r6, 4 + adds r5, r6 + lsls r5, 2 + adds r5, r0 + movs r0, 0x3 + ands r7, r0 + lsls r7, 2 + mov r8, r7 + ldrb r0, [r5, 0x5] + movs r4, 0xD + negs r4, r4 + adds r1, r4, 0 + ands r1, r0 + mov r2, r8 + orrs r1, r2 + strb r1, [r5, 0x5] + ldrb r2, [r5, 0x1] + adds r0, r4, 0 + ands r0, r2 + movs r2, 0x4 + orrs r0, r2 + strb r0, [r5, 0x1] + ldr r0, _080E120C @ =0x00007fff + lsrs r1, 4 + lsls r1, 4 + movs r3, 0x80 + lsls r3, 1 + adds r2, r3, 0 + orrs r1, r2 + movs r2, 0x20 + bl sub_8070424 + ldrb r0, [r5, 0x5] + ands r4, r0 + mov r0, r8 + orrs r4, r0 + strb r4, [r5, 0x5] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldr r0, _080E1210 @ =gUnknown_3005090 + ldr r1, [sp, 0x18] + lsls r4, r1, 2 + adds r4, r1 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0xA] + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + strh r6, [r4, 0x8] + ldr r0, _080E1214 @ =sub_80E1218 + str r0, [r4] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E11FC: .4byte 0x0000ffec +_080E1200: .4byte gUnknown_2037F1A +_080E1204: .4byte gUnknown_2037F1B +_080E1208: .4byte gUnknown_202063C +_080E120C: .4byte 0x00007fff +_080E1210: .4byte gUnknown_3005090 +_080E1214: .4byte sub_80E1218 + thumb_func_end sub_80E0FB8 + + thumb_func_start sub_80E1218 +sub_80E1218: @ 80E1218 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E126C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x1C] + adds r1, r0, 0x1 + strh r1, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1266 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080E1266 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x1C] + strh r0, [r4, 0x1E] + ldr r0, _080E1270 @ =sub_80E1274 + str r0, [r4] +_080E1266: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E126C: .4byte gUnknown_3005090 +_080E1270: .4byte sub_80E1274 + thumb_func_end sub_80E1218 + + thumb_func_start sub_80E1274 +sub_80E1274: @ 80E1274 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E12EC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrb r2, [r5, 0x8] + ldrh r0, [r5, 0x1C] + subs r0, 0x10 + movs r4, 0 + strh r0, [r5, 0x1C] + ldrh r0, [r5, 0x1E] + adds r0, 0x80 + strh r0, [r5, 0x1E] + ldr r1, _080E12F0 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r6, r0, r1 + ldrb r2, [r6, 0x1] + lsls r1, r2, 30 + lsrs r1, 30 + movs r0, 0x2 + orrs r1, r0 + subs r0, 0x6 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x1] + movs r0, 0x1C + ldrsh r2, [r5, r0] + movs r0, 0x1E + ldrsh r3, [r5, r0] + str r4, [sp] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8075A1C + ldrh r0, [r5, 0x20] + adds r0, 0x1 + strh r0, [r5, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _080E12E2 + adds r0, r6, 0 + bl sub_8075AD8 + adds r0, r6, 0 + bl sub_8076B20 + ldr r0, _080E12F4 @ =sub_8074FA8 + str r0, [r5] +_080E12E2: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E12EC: .4byte gUnknown_3005090 +_080E12F0: .4byte gUnknown_202063C +_080E12F4: .4byte sub_8074FA8 + thumb_func_end sub_80E1274 + + thumb_func_start sub_80E12F8 +sub_80E12F8: @ 80E12F8 + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E1318 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r0, _080E131C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E1324 + ldr r0, _080E1320 @ =gUnknown_2037F1A + b _080E1326 + .align 2, 0 +_080E1318: .4byte gUnknown_3005090 +_080E131C: .4byte gUnknown_2037F02 +_080E1320: .4byte gUnknown_2037F1A +_080E1324: + ldr r0, _080E13A4 @ =gUnknown_2037F1B +_080E1326: + ldrb r5, [r0] + movs r6, 0 + strh r6, [r4, 0x8] + strh r6, [r4, 0xA] + strh r6, [r4, 0xC] + movs r0, 0x10 + strh r0, [r4, 0xE] + strh r6, [r4, 0x10] + strh r5, [r4, 0x12] + movs r0, 0x20 + strh r0, [r4, 0x14] + strh r6, [r4, 0x16] + movs r0, 0x18 + strh r0, [r4, 0x18] + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E1358 + movs r1, 0x18 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x18] +_080E1358: + adds r0, r5, 0 + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x22 + strh r0, [r4, 0x22] + cmp r0, 0 + bge _080E136C + strh r6, [r4, 0x22] +_080E136C: + ldrh r0, [r4, 0x22] + adds r0, 0x42 + strh r0, [r4, 0x24] + ldr r0, _080E13A8 @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + adds r0, r5, 0 + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E13BC + ldr r0, _080E13AC @ =0x04000014 + str r0, [sp] + ldr r1, _080E13B0 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + ldr r0, _080E13B4 @ =gUnknown_2022978 + ldrh r5, [r0] + ldr r0, _080E13B8 @ =gUnknown_202297A + b _080E13CE + .align 2, 0 +_080E13A4: .4byte gUnknown_2037F1B +_080E13A8: .4byte gUnknown_2037F02 +_080E13AC: .4byte 0x04000014 +_080E13B0: .4byte 0x00003f42 +_080E13B4: .4byte gUnknown_2022978 +_080E13B8: .4byte gUnknown_202297A +_080E13BC: + ldr r0, _080E1434 @ =0x04000018 + str r0, [sp] + ldr r1, _080E1438 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + ldr r0, _080E143C @ =gUnknown_202297C + ldrh r5, [r0] + ldr r0, _080E1440 @ =gUnknown_202297E +_080E13CE: + ldrh r3, [r0] + movs r7, 0 + movs r2, 0 + ldr r6, _080E1444 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r0, r6 + mov r12, r0 +_080E13DE: + lsls r2, 16 + asrs r2, 16 + lsls r1, r2, 1 + adds r0, r1, r6 + strh r5, [r0] + add r1, r12 + strh r5, [r1] + adds r0, r2, 0x1 + lsls r0, 1 + adds r1, r0, r6 + strh r3, [r1] + add r0, r12 + strh r3, [r0] + lsls r0, r7, 16 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + adds r2, 0x2 + lsls r2, 16 + lsrs r2, 16 + lsrs r7, r0, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080E13DE + ldr r0, _080E1448 @ =0xa6600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldr r0, _080E144C @ =sub_80E1450 + str r0, [r4] + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1434: .4byte 0x04000018 +_080E1438: .4byte 0x00003f44 +_080E143C: .4byte gUnknown_202297C +_080E1440: .4byte gUnknown_202297E +_080E1444: .4byte gUnknown_2038700 +_080E1448: .4byte 0xa6600001 +_080E144C: .4byte sub_80E1450 + thumb_func_end sub_80E12F8 + + thumb_func_start sub_80E1450 +sub_80E1450: @ 80E1450 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080E1484 @ =gUnknown_3005090 + adds r6, r0, r1 + ldrb r0, [r6, 0x12] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E1490 + ldr r0, _080E1488 @ =gUnknown_2022978 + ldrh r0, [r0] + str r0, [sp, 0x4] + ldr r0, _080E148C @ =gUnknown_202297A + b _080E1498 + .align 2, 0 +_080E1484: .4byte gUnknown_3005090 +_080E1488: .4byte gUnknown_2022978 +_080E148C: .4byte gUnknown_202297A +_080E1490: + ldr r0, _080E14B0 @ =gUnknown_202297C + ldrh r0, [r0] + str r0, [sp, 0x4] + ldr r0, _080E14B4 @ =gUnknown_202297E +_080E1498: + ldrh r0, [r0] + str r0, [sp, 0x8] + movs r1, 0x8 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + bne _080E14A6 + b _080E1684 +_080E14A6: + cmp r0, 0x1 + bgt _080E14B8 + cmp r0, 0 + beq _080E14C6 + b _080E16F4 + .align 2, 0 +_080E14B0: .4byte gUnknown_202297C +_080E14B4: .4byte gUnknown_202297E +_080E14B8: + cmp r0, 0x2 + bne _080E14BE + b _080E16A4 +_080E14BE: + cmp r0, 0x3 + bne _080E14C4 + b _080E16EE +_080E14C4: + b _080E16F4 +_080E14C6: + movs r2, 0x24 + ldrsh r0, [r6, r2] + lsls r0, 17 + lsrs r5, r0, 16 + movs r3, 0 + str r3, [sp] + mov r9, r3 + movs r4, 0 + ldrh r0, [r6, 0xA] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0xA] + ldrh r7, [r6, 0xA] + mov r8, r7 + movs r0, 0x14 + ldrsh r1, [r6, r0] + movs r0, 0xFC + lsls r0, 3 + bl __divsi3 + strh r0, [r6, 0x1A] + movs r1, 0x16 + ldrsh r0, [r6, r1] + lsls r0, 1 + movs r2, 0x1A + ldrsh r1, [r6, r2] + bl __divsi3 + negs r0, r0 + strh r0, [r6, 0x1C] + ldrh r0, [r6, 0x16] + strh r0, [r6, 0x1E] + lsls r0, 16 + asrs r0, 21 + lsls r0, 16 + lsrs r7, r0, 16 + strh r7, [r6, 0x20] + ldrh r2, [r6, 0x24] + lsls r3, r2, 16 + mov r12, r3 + asrs r1, r3, 16 + movs r3, 0x22 + ldrsh r0, [r6, r3] + cmp r1, r0 + ble _080E15E6 + ldr r0, _080E163C @ =gUnknown_2039600 + mov r10, r0 + ldr r1, [sp, 0x4] + lsls r0, r1, 16 + asrs r0, 16 + str r0, [sp, 0x10] + ldr r2, [sp, 0x8] + lsls r0, r2, 16 + asrs r0, 16 + str r0, [sp, 0xC] +_080E1536: + lsls r5, 16 + asrs r5, 16 + adds r2, r5, 0x1 + lsls r2, 1 + mov r3, r10 + ldrb r1, [r3, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + ldr r0, _080E1640 @ =gUnknown_2038700 + adds r2, r0 + lsls r4, 16 + asrs r4, 16 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + subs r0, r4, r0 + ldr r3, [sp, 0xC] + adds r0, r3, r0 + strh r0, [r2] + lsls r3, r5, 1 + mov r0, r10 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r3, r0 + ldr r1, _080E1640 @ =gUnknown_2038700 + adds r3, r1 + lsls r1, r7, 16 + asrs r1, 16 + ldr r2, [sp, 0x10] + adds r1, r2, r1 + mov r7, r8 + lsls r2, r7, 16 + asrs r2, 16 + lsls r0, r2, 1 + ldr r7, _080E1644 @ =gUnknown_825E074 + adds r0, r7 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 21 + adds r1, r0 + strh r1, [r3] + adds r2, 0xA + mov r8, r2 + movs r0, 0xFF + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldrh r0, [r6, 0x1C] + ldrh r2, [r6, 0x1E] + adds r0, r2 + strh r0, [r6, 0x1E] + lsls r0, 16 + asrs r0, 21 + lsls r0, 16 + lsrs r7, r0, 16 + strh r7, [r6, 0x20] + adds r4, 0x1 + lsls r4, 16 + lsrs r4, 16 + subs r5, 0x2 + lsls r5, 16 + lsrs r5, 16 + ldr r3, [sp] + lsls r0, r3, 16 + asrs r0, 16 + ldrh r1, [r6, 0x14] + adds r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + str r2, [sp] + asrs r0, 21 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + ldr r0, _080E1648 @ =0xffff0000 + add r0, r12 + lsrs r2, r0, 16 + lsls r3, r2, 16 + mov r12, r3 + asrs r1, r3, 16 + movs r3, 0x22 + ldrsh r0, [r6, r3] + cmp r1, r0 + bgt _080E1536 +_080E15E6: + lsls r1, r2, 17 + cmp r1, 0 + blt _080E1612 + ldr r4, _080E1640 @ =gUnknown_2038700 + ldr r7, [sp, 0x4] + lsls r0, r7, 16 + asrs r0, 16 + adds r3, r0, 0 + adds r3, 0xF0 + movs r0, 0xF0 + lsls r0, 3 + adds r5, r4, r0 +_080E15FE: + asrs r2, r1, 16 + lsls r1, r2, 1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + subs r2, 0x2 + lsls r1, r2, 16 + cmp r1, 0 + bge _080E15FE +_080E1612: + ldrh r0, [r6, 0x14] + adds r0, 0x1 + strh r0, [r6, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _080E167A + movs r0, 0x40 + strh r0, [r6, 0x14] + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E164C + ldrh r0, [r6, 0xE] + subs r0, 0x1 + strh r0, [r6, 0xE] + b _080E1652 + .align 2, 0 +_080E163C: .4byte gUnknown_2039600 +_080E1640: .4byte gUnknown_2038700 +_080E1644: .4byte gUnknown_825E074 +_080E1648: .4byte 0xffff0000 +_080E164C: + ldrh r0, [r6, 0x10] + adds r0, 0x1 + strh r0, [r6, 0x10] +_080E1652: + ldrh r1, [r6, 0x10] + lsls r1, 8 + ldrh r0, [r6, 0xE] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0xE + ldrsh r1, [r6, r2] + cmp r1, 0 + bne _080E16F4 + movs r3, 0x10 + ldrsh r0, [r6, r3] + cmp r0, 0x10 + bne _080E16F4 + strh r1, [r6, 0xC] + strh r1, [r6, 0xE] + b _080E16E6 +_080E167A: + ldrh r0, [r6, 0x18] + ldrh r7, [r6, 0x16] + adds r0, r7 + strh r0, [r6, 0x16] + b _080E16F4 +_080E1684: + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080E16F4 + ldr r1, _080E16A0 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] + movs r0, 0 + strh r0, [r6, 0xC] + b _080E16E6 + .align 2, 0 +_080E16A0: .4byte gUnknown_2039600 +_080E16A4: + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E16BA + ldrh r0, [r6, 0xE] + adds r0, 0x1 + strh r0, [r6, 0xE] + b _080E16C0 +_080E16BA: + ldrh r0, [r6, 0x10] + subs r0, 0x1 + strh r0, [r6, 0x10] +_080E16C0: + ldrh r1, [r6, 0x10] + lsls r1, 8 + ldrh r0, [r6, 0xE] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xE + ldrsh r0, [r6, r1] + cmp r0, 0x10 + bne _080E16F4 + movs r2, 0x10 + ldrsh r0, [r6, r2] + cmp r0, 0 + bne _080E16F4 + strh r0, [r6, 0xC] + strh r0, [r6, 0xE] +_080E16E6: + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080E16F4 +_080E16EE: + adds r0, r4, 0 + bl sub_8072760 +_080E16F4: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E1450 + + thumb_func_start sub_80E1704 +sub_80E1704: @ 80E1704 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080E173C @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + ldr r0, _080E1740 @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x26] + ldr r2, _080E1744 @ =gUnknown_83FF3D0 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080E1748 @ =sub_80E174C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E173C: .4byte gUnknown_3005090 +_080E1740: .4byte gUnknown_2037F02 +_080E1744: .4byte gUnknown_83FF3D0 +_080E1748: .4byte sub_80E174C + thumb_func_end sub_80E1704 + + thumb_func_start sub_80E174C +sub_80E174C: @ 80E174C + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r2, _080E17A4 @ =gUnknown_3005090 + adds r3, r0, r2 + ldrh r0, [r3, 0x8] + adds r1, r0, 0x1 + movs r5, 0 + strh r1, [r3, 0x8] + subs r0, 0x14 + lsls r0, 16 + lsrs r0, 16 + adds r6, r2, 0 + cmp r0, 0x16 + bhi _080E17B0 + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E17C0 + strh r5, [r3, 0xA] + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + movs r5, 0x1 + ands r0, r5 + cmp r0, 0 + bne _080E17B0 + ldr r2, _080E17A8 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080E17AC @ =0x0000ffff + strh r1, [r0, 0x24] + b _080E17C0 + .align 2, 0 +_080E17A4: .4byte gUnknown_3005090 +_080E17A8: .4byte gUnknown_202063C +_080E17AC: .4byte 0x0000ffff +_080E17B0: + ldr r2, _080E17E0 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] +_080E17C0: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r6 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080E17D8 + adds r0, r4, 0 + bl sub_8072760 +_080E17D8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E17E0: .4byte gUnknown_202063C + thumb_func_end sub_80E174C + + thumb_func_start sub_80E17E4 +sub_80E17E4: @ 80E17E4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r5, r2, 0 + adds r0, r3, 0 + ldr r4, [sp, 0x14] + ldr r6, [sp, 0x18] + lsls r1, 16 + lsrs r1, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r6, 16 + lsrs r6, 16 + mov r2, r8 + strh r1, [r2, 0x20] + strh r5, [r2, 0x22] + lsls r1, 16 + asrs r1, 16 + lsls r2, r1, 4 + mov r3, r8 + strh r2, [r3, 0x36] + lsls r5, 16 + asrs r5, 16 + lsls r2, r5, 4 + strh r2, [r3, 0x38] + lsls r0, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 4 + adds r1, r6, 0 + bl __divsi3 + mov r1, r8 + strh r0, [r1, 0x3A] + lsls r4, 16 + asrs r4, 16 + subs r4, r5 + lsls r4, 4 + adds r0, r4, 0 + adds r1, r6, 0 + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3C] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E17E4 + + thumb_func_start sub_80E184C +sub_80E184C: @ 80E184C + ldrh r1, [r0, 0x3A] + ldrh r2, [r0, 0x36] + adds r1, r2 + strh r1, [r0, 0x36] + ldrh r2, [r0, 0x3C] + ldrh r3, [r0, 0x38] + adds r2, r3 + strh r2, [r0, 0x38] + lsls r1, 16 + asrs r1, 20 + strh r1, [r0, 0x20] + lsls r2, 16 + asrs r2, 20 + strh r2, [r0, 0x22] + bx lr + thumb_func_end sub_80E184C + + thumb_func_start sub_80E186C +sub_80E186C: @ 80E186C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrh r6, [r4, 0x20] + ldrh r5, [r4, 0x22] + bl sub_8074FCC + ldr r0, _080E18B4 @ =gUnknown_2037F02 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_800843C + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r0, 0x22 + ldrsh r2, [r4, r0] + lsls r6, 16 + asrs r6, 16 + lsls r5, 16 + asrs r5, 16 + str r5, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80E17E4 + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080E18B8 @ =sub_80E18BC + str r0, [r4, 0x1C] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E18B4: .4byte gUnknown_2037F02 +_080E18B8: .4byte sub_80E18BC + thumb_func_end sub_80E186C + + thumb_func_start sub_80E18BC +sub_80E18BC: @ 80E18BC + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r0, 0x2E + ldrsh r4, [r5, r0] + lsls r4, 3 + movs r0, 0xFF + ands r4, r0 + adds r0, r5, 0 + bl sub_80E184C + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8044E30 + strh r0, [r5, 0x26] + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x3A + ble _080E1922 + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1922 + movs r0, 0 + strh r0, [r5, 0x30] + ldrh r1, [r5, 0x32] + adds r1, 0x1 + strh r1, [r5, 0x32] + movs r0, 0x1 + ands r1, r0 + adds r3, r5, 0 + adds r3, 0x3E + lsls r1, 2 + ldrb r2, [r3] + subs r0, 0x6 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0x3 + ble _080E1922 + adds r0, r5, 0 + bl sub_8074EE0 +_080E1922: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E18BC + + thumb_func_start sub_80E1928 +sub_80E1928: @ 80E1928 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080E1980 @ =gUnknown_2037F02 + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x2E] + ldrb r1, [r6] + adds r0, r5, 0 + bl sub_800843C + ldr r0, _080E1984 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080E194E + ldrh r0, [r6, 0x2] + negs r0, r0 + strh r0, [r6, 0x2] +_080E194E: + ldr r4, _080E1988 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x4] + adds r0, r6 + strh r0, [r5, 0x22] + ldr r0, _080E198C @ =sub_80B1D3C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1980: .4byte gUnknown_2037F02 +_080E1984: .4byte gUnknown_2037F1B +_080E1988: .4byte gUnknown_2037F1A +_080E198C: .4byte sub_80B1D3C + thumb_func_end sub_80E1928 + + thumb_func_start sub_80E1990 +sub_80E1990: @ 80E1990 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r7, 0 + ldr r2, _080E19E0 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x8] + subs r0, 0x1 + strh r0, [r3, 0x8] + movs r1, 0x14 + ldrsh r0, [r3, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _080E1A12 + ldrh r0, [r3, 0xA] + subs r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080E1A12 + movs r2, 0x1A + ldrsh r0, [r3, r2] + cmp r0, 0 + bne _080E19E4 + ldrh r0, [r3, 0x10] + strh r0, [r3, 0x1A] + negs r0, r0 + strh r0, [r3, 0x10] + b _080E19E6 + .align 2, 0 +_080E19E0: .4byte gUnknown_3005090 +_080E19E4: + strh r7, [r3, 0x1A] +_080E19E6: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + mov r2, r8 + adds r1, r0, r2 + movs r2, 0x1C + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080E1A02 + ldrh r0, [r1, 0x12] + strh r0, [r1, 0x1C] + negs r0, r0 + strh r0, [r1, 0x12] + b _080E1A06 +_080E1A02: + movs r0, 0 + strh r0, [r1, 0x1C] +_080E1A06: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + add r0, r8 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0xA] +_080E1A12: + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + mov r1, r8 + adds r4, r0, r1 + ldrh r6, [r4, 0x16] + ldrh r7, [r4, 0x18] + movs r1, 0xC + ldrsh r0, [r4, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + mov r12, r2 + cmp r0, 0 + beq _080E1A50 + ldr r3, _080E1A4C @ =gUnknown_202063C + movs r2, 0x26 + ldrsh r0, [r4, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + lsrs r2, r6, 8 + ldrh r0, [r4, 0x1A] + subs r0, r2 + strh r0, [r1, 0x24] + adds r2, r3, 0 + b _080E1A66 + .align 2, 0 +_080E1A4C: .4byte gUnknown_202063C +_080E1A50: + ldr r2, _080E1A94 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + lsrs r1, r6, 8 + ldrh r4, [r4, 0x1A] + adds r1, r4 + strh r1, [r0, 0x24] +_080E1A66: + mov r1, r12 + adds r0, r1, r5 + lsls r0, 3 + mov r1, r8 + adds r4, r0, r1 + movs r1, 0xE + ldrsh r0, [r4, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080E1A98 + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + lsrs r2, r7, 8 + ldrh r0, [r4, 0x1C] + subs r0, r2 + b _080E1AAA + .align 2, 0 +_080E1A94: .4byte gUnknown_202063C +_080E1A98: + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + lsrs r0, r7, 8 + ldrh r4, [r4, 0x1C] + adds r0, r4 +_080E1AAA: + strh r0, [r1, 0x26] + mov r2, r12 + adds r0, r2, r5 + lsls r0, 3 + add r0, r8 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0 + bgt _080E1ACA + adds r0, r5, 0 + bl sub_8077508 + ldr r1, _080E1AD4 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080E1ACA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1AD4: .4byte gUnknown_2037EE2 + thumb_func_end sub_80E1990 + + thumb_func_start sub_80E1AD8 +sub_80E1AD8: @ 80E1AD8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r7, 0 + ldr r2, _080E1B2C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x8] + subs r0, 0x1 + strh r0, [r3, 0x8] + movs r1, 0x14 + ldrsh r0, [r3, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _080E1B5E + ldrh r0, [r3, 0xA] + subs r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080E1B5E + movs r2, 0x1A + ldrsh r0, [r3, r2] + cmp r0, 0 + bne _080E1B30 + ldrh r0, [r3, 0x10] + strh r0, [r3, 0x1A] + negs r0, r0 + strh r0, [r3, 0x10] + b _080E1B32 + .align 2, 0 +_080E1B2C: .4byte gUnknown_3005090 +_080E1B30: + strh r7, [r3, 0x1A] +_080E1B32: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + mov r2, r8 + adds r1, r0, r2 + movs r2, 0x1C + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080E1B4E + ldrh r0, [r1, 0x12] + strh r0, [r1, 0x1C] + negs r0, r0 + strh r0, [r1, 0x12] + b _080E1B52 +_080E1B4E: + movs r0, 0 + strh r0, [r1, 0x1C] +_080E1B52: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + add r0, r8 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0xA] +_080E1B5E: + lsls r3, r6, 2 + adds r0, r3, r6 + lsls r0, 3 + mov r1, r8 + adds r4, r0, r1 + ldrh r2, [r4, 0xC] + ldr r1, _080E1BB0 @ =0x00007fff + adds r0, r1, 0 + ands r0, r2 + ldrh r2, [r4, 0x16] + adds r0, r2 + lsls r5, r0, 16 + lsrs r0, r5, 16 + mov r9, r0 + ldrh r0, [r4, 0xE] + ands r1, r0 + ldrh r2, [r4, 0x18] + adds r1, r2 + lsls r1, 16 + lsrs r7, r1, 16 + movs r1, 0xC + ldrsh r0, [r4, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + mov r12, r3 + cmp r0, 0 + beq _080E1BB8 + ldr r3, _080E1BB4 @ =gUnknown_202063C + movs r2, 0x26 + ldrsh r0, [r4, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + lsrs r2, r5, 24 + ldrh r0, [r4, 0x1A] + subs r0, r2 + strh r0, [r1, 0x24] + adds r2, r3, 0 + b _080E1BCE + .align 2, 0 +_080E1BB0: .4byte 0x00007fff +_080E1BB4: .4byte gUnknown_202063C +_080E1BB8: + ldr r2, _080E1BFC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + lsrs r1, r5, 24 + ldrh r4, [r4, 0x1A] + adds r1, r4 + strh r1, [r0, 0x24] +_080E1BCE: + mov r1, r12 + adds r0, r1, r6 + lsls r0, 3 + mov r1, r8 + adds r4, r0, r1 + movs r1, 0xE + ldrsh r0, [r4, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080E1C00 + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + lsrs r2, r7, 8 + ldrh r0, [r4, 0x1C] + subs r0, r2 + b _080E1C12 + .align 2, 0 +_080E1BFC: .4byte gUnknown_202063C +_080E1C00: + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + lsrs r0, r7, 8 + ldrh r4, [r4, 0x1C] + adds r0, r4 +_080E1C12: + strh r0, [r1, 0x26] + mov r2, r12 + adds r0, r2, r6 + lsls r0, 3 + mov r1, r8 + adds r2, r0, r1 + mov r0, r9 + strh r0, [r2, 0x16] + strh r7, [r2, 0x18] + movs r1, 0x8 + ldrsh r0, [r2, r1] + cmp r0, 0 + bgt _080E1C38 + movs r0, 0x1E + strh r0, [r2, 0x8] + movs r0, 0 + strh r0, [r2, 0x22] + ldr r0, _080E1C44 @ =sub_80E1990 + str r0, [r2] +_080E1C38: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1C44: .4byte sub_80E1990 + thumb_func_end sub_80E1AD8 + + thumb_func_start sub_80E1C48 +sub_80E1C48: @ 80E1C48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080E1CA8 @ =gUnknown_3005090 + mov r8, r0 + lsls r7, r6, 2 + adds r0, r7, r6 + lsls r0, 3 + mov r1, r8 + adds r4, r0, r1 + ldr r1, _080E1CAC @ =gUnknown_2023D44 + ldr r2, _080E1CB0 @ =gUnknown_2037F1A + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x26] + ldr r5, _080E1CB4 @ =gUnknown_2037F02 + ldrh r0, [r5] + strh r0, [r4, 0x24] + ldrh r0, [r5] + strh r0, [r4, 0x8] + ldrh r0, [r5, 0xC] + strh r0, [r4, 0x22] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _080E1C8C + ldrh r0, [r4, 0x14] + ldr r3, _080E1CB8 @ =0xffff8000 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r4, 0x14] +_080E1C8C: + ldrb r0, [r2] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080E1CBC + ldrh r0, [r5, 0x2] + strh r0, [r4, 0xC] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xE] + mov r3, r8 + adds r4, r7, 0 + b _080E1D2C + .align 2, 0 +_080E1CA8: .4byte gUnknown_3005090 +_080E1CAC: .4byte gUnknown_2023D44 +_080E1CB0: .4byte gUnknown_2037F1A +_080E1CB4: .4byte gUnknown_2037F02 +_080E1CB8: .4byte 0xffff8000 +_080E1CBC: + movs r7, 0x2 + ldrsh r0, [r5, r7] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080E1CD8 + ldrh r1, [r5, 0x2] + ldr r0, _080E1CD4 @ =0x00007fff + ands r0, r1 + b _080E1CE0 + .align 2, 0 +_080E1CD4: .4byte 0x00007fff +_080E1CD8: + ldrh r0, [r5, 0x2] + ldr r2, _080E1D08 @ =0xffff8000 + adds r1, r2, 0 + orrs r0, r1 +_080E1CE0: + strh r0, [r4, 0xC] + ldr r0, _080E1D0C @ =gUnknown_2037F02 + movs r3, 0x4 + ldrsh r1, [r0, r3] + movs r2, 0x80 + lsls r2, 8 + ands r1, r2 + adds r5, r0, 0 + cmp r1, 0 + beq _080E1D18 + ldr r3, _080E1D10 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r1, r4, r6 + lsls r1, 3 + adds r1, r3 + ldrh r2, [r5, 0x4] + ldr r0, _080E1D14 @ =0x00007fff + ands r0, r2 + b _080E1D2A + .align 2, 0 +_080E1D08: .4byte 0xffff8000 +_080E1D0C: .4byte gUnknown_2037F02 +_080E1D10: .4byte gUnknown_3005090 +_080E1D14: .4byte 0x00007fff +_080E1D18: + ldr r3, _080E1D50 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r1, r4, r6 + lsls r1, 3 + adds r1, r3 + ldrh r2, [r5, 0x4] + ldr r7, _080E1D54 @ =0xffff8000 + adds r0, r7, 0 + orrs r0, r2 +_080E1D2A: + strh r0, [r1, 0xE] +_080E1D2C: + adds r0, r4, r6 + lsls r0, 3 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x18] + strh r1, [r0, 0x16] + ldrh r1, [r5, 0x8] + strh r1, [r0, 0x10] + ldrh r1, [r5, 0xA] + strh r1, [r0, 0x12] + ldr r1, _080E1D58 @ =sub_80E1AD8 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1D50: .4byte gUnknown_3005090 +_080E1D54: .4byte 0xffff8000 +_080E1D58: .4byte sub_80E1AD8 + thumb_func_end sub_80E1C48 + + thumb_func_start sub_80E1D5C +sub_80E1D5C: @ 80E1D5C + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1D94 @ =gUnknown_3005090 + adds r5, r0, r1 + ldr r4, _080E1D98 @ =gUnknown_2037F02 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E1D7C + adds r0, r2, 0 + bl sub_8072760 +_080E1D7C: + movs r0, 0 + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] + strh r0, [r5, 0xC] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0xE] + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E1DA0 + ldr r0, _080E1D9C @ =gUnknown_2037F1A + b _080E1DA2 + .align 2, 0 +_080E1D94: .4byte gUnknown_3005090 +_080E1D98: .4byte gUnknown_2037F02 +_080E1D9C: .4byte gUnknown_2037F1A +_080E1DA0: + ldr r0, _080E1DF0 @ =gUnknown_2037F1B +_080E1DA2: + ldrb r4, [r0] + adds r0, r4, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + adds r0, r4, 0 + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldr r0, _080E1DF4 @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r5, 0x26] + ldr r2, _080E1DF8 @ =gUnknown_83FF52C + adds r0, r5, 0 + bl sub_80762D0 + ldr r0, _080E1DFC @ =sub_80E1E00 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1DF0: .4byte gUnknown_2037F1B +_080E1DF4: .4byte gUnknown_2037F02 +_080E1DF8: .4byte gUnknown_83FF52C +_080E1DFC: .4byte sub_80E1E00 + thumb_func_end sub_80E1D5C + + thumb_func_start sub_80E1E00 +sub_80E1E00: @ 80E1E00 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080E1E20 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E1E24 + cmp r0, 0x1 + beq _080E1E84 + b _080E1E92 + .align 2, 0 +_080E1E20: .4byte gUnknown_3005090 +_080E1E24: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080E1E3A + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80E1E98 +_080E1E3A: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x12 + bne _080E1E4A + adds r0, r5, 0 + movs r1, 0 + bl sub_80E1E98 +_080E1E4A: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080E1E92 + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080E1E6C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1E92 +_080E1E6C: + strh r1, [r4, 0xA] + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080E1E80 @ =gUnknown_83FF52C + adds r0, r4, 0 + bl sub_80762D0 + b _080E1E92 + .align 2, 0 +_080E1E80: .4byte gUnknown_83FF52C +_080E1E84: + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E1E92 + adds r0, r5, 0 + bl sub_8072760 +_080E1E92: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E1E00 + + thumb_func_start sub_80E1E98 +sub_80E1E98: @ 80E1E98 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r2, _080E1EBC @ =gUnknown_3005090 + adds r4, r0, r2 + cmp r1, 0 + bne _080E1EC0 + movs r1, 0x12 + movs r3, 0xEC + b _080E1EC4 + .align 2, 0 +_080E1EBC: .4byte gUnknown_3005090 +_080E1EC0: + movs r1, 0x1E + movs r3, 0x14 +_080E1EC4: + mov r2, sp + ldrh r0, [r4, 0x10] + subs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x10] + subs r0, r1 + subs r0, 0x4 + strh r0, [r2, 0x2] + ldrh r0, [r4, 0x10] + adds r0, r1 + strh r0, [r2, 0x4] + ldrh r0, [r4, 0x10] + adds r0, r1 + adds r0, 0x4 + strh r0, [r2, 0x6] + add r2, sp, 0x8 + lsls r1, r3, 24 + asrs r1, 24 + ldrh r0, [r4, 0x12] + adds r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x12] + adds r0, r1 + adds r0, 0x6 + strh r0, [r2, 0x2] + movs r5, 0 + mov r8, r2 + ldr r7, _080E1F68 @ =gUnknown_202063C +_080E1EFC: + lsls r0, r5, 1 + add r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0x1 + ands r0, r5 + lsls r0, 1 + add r0, r8 + movs r3, 0 + ldrsh r2, [r0, r3] + ldrb r3, [r4, 0x14] + subs r3, 0x5 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _080E1F6C @ =gUnknown_83FF54C + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080E1F50 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r7 + movs r0, 0 + strh r0, [r1, 0x2E] + movs r0, 0x2 + cmp r5, 0x1 + bhi _080E1F3E + movs r2, 0x2 + negs r2, r2 + adds r0, r2, 0 +_080E1F3E: + strh r0, [r1, 0x30] + ldr r0, _080E1F70 @ =0x0000ffff + strh r0, [r1, 0x32] + strh r6, [r1, 0x34] + movs r0, 0x2 + strh r0, [r1, 0x36] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_080E1F50: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _080E1EFC + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1F68: .4byte gUnknown_202063C +_080E1F6C: .4byte gUnknown_83FF54C +_080E1F70: .4byte 0x0000ffff + thumb_func_end sub_80E1E98 + + thumb_func_start sub_80E1F74 +sub_80E1F74: @ 80E1F74 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080E1FBA + ldr r3, _080E1FC0 @ =gUnknown_3005090 + movs r0, 0x36 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x34 + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080E1FBA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1FC0: .4byte gUnknown_3005090 + thumb_func_end sub_80E1F74 + + thumb_func_start sub_80E1FC4 +sub_80E1FC4: @ 80E1FC4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080E200C @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r0, 0 + strh r0, [r4, 0x8] + ldr r1, _080E2010 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xA] + ldrb r0, [r1] + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E2014 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x5] + lsrs r0, 4 + lsls r0, 4 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + adds r0, r1 + strh r0, [r4, 0xC] + ldr r0, _080E2018 @ =sub_80E201C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E200C: .4byte gUnknown_3005090 +_080E2010: .4byte gUnknown_2037F02 +_080E2014: .4byte gUnknown_202063C +_080E2018: .4byte sub_80E201C + thumb_func_end sub_80E1FC4 + + thumb_func_start sub_80E201C +sub_80E201C: @ 80E201C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080E2064 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E206C + ldrh r0, [r4, 0xC] + ldr r2, _080E2068 @ =gUnknown_83FF564 + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r1, 1 + adds r1, r2 + ldrh r3, [r1] + movs r1, 0x10 + movs r2, 0x8 + bl sub_8045274 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x17 + ble _080E205C + movs r0, 0 + strh r0, [r4, 0x8] +_080E205C: + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + b _080E207E + .align 2, 0 +_080E2064: .4byte gUnknown_3005090 +_080E2068: .4byte gUnknown_83FF564 +_080E206C: + ldrh r0, [r4, 0xC] + movs r1, 0x10 + movs r2, 0 + movs r3, 0 + bl sub_8045274 + adds r0, r5, 0 + bl sub_8072760 +_080E207E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E201C + + thumb_func_start sub_80E2084 +sub_80E2084: @ 80E2084 + push {lr} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xD0 + lsls r2, 1 + ldr r1, _080E20C0 @ =gUnknown_2037F1A + ldrb r3, [r1] + ldr r1, _080E20C4 @ =gUnknown_2037F02 + ldrb r1, [r1] + str r1, [sp] + movs r1, 0xA + str r1, [sp, 0x4] + movs r1, 0x2 + str r1, [sp, 0x8] + movs r1, 0x1E + str r1, [sp, 0xC] + ldr r1, _080E20C8 @ =gUnknown_8D2DE3C + str r1, [sp, 0x10] + ldr r1, _080E20CC @ =gUnknown_8D2DF98 + str r1, [sp, 0x14] + ldr r1, _080E20D0 @ =gUnknown_8D2DF78 + str r1, [sp, 0x18] + movs r1, 0 + bl sub_80BBA20 + add sp, 0x1C + pop {r0} + bx r0 + .align 2, 0 +_080E20C0: .4byte gUnknown_2037F1A +_080E20C4: .4byte gUnknown_2037F02 +_080E20C8: .4byte gUnknown_8D2DE3C +_080E20CC: .4byte gUnknown_8D2DF98 +_080E20D0: .4byte gUnknown_8D2DF78 + thumb_func_end sub_80E2084 + + thumb_func_start sub_80E20D4 +sub_80E20D4: @ 80E20D4 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080E212C @ =gUnknown_2037F1A + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E20F0 + ldr r1, _080E2130 @ =gUnknown_2037F02 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080E20F0: + ldrb r0, [r6] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r4, _080E2130 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r5, 0x22] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E2138 + movs r0, 0xA0 + lsls r0, 2 + strh r0, [r5, 0x2E] + ldr r0, _080E2134 @ =0x0000fd80 + strh r0, [r5, 0x30] + b _080E2160 + .align 2, 0 +_080E212C: .4byte gUnknown_2037F1A +_080E2130: .4byte gUnknown_2037F02 +_080E2134: .4byte 0x0000fd80 +_080E2138: + cmp r0, 0x1 + bne _080E2152 + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + movs r0, 0xA0 + lsls r0, 2 + strh r0, [r5, 0x2E] + strh r0, [r5, 0x30] + b _080E2160 +_080E2152: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C + movs r0, 0xA0 + lsls r0, 2 + strh r0, [r5, 0x2E] +_080E2160: + ldr r0, _080E218C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080E2180 + ldrh r0, [r5, 0x2E] + negs r0, r0 + strh r0, [r5, 0x2E] + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080E2180: + ldr r0, _080E2190 @ =sub_80E2194 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E218C: .4byte gUnknown_2037F1A +_080E2190: .4byte sub_80E2194 + thumb_func_end sub_80E20D4 + + thumb_func_start sub_80E2194 +sub_80E2194: @ 80E2194 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x3A] + adds r0, r1 + strh r0, [r2, 0x3A] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x3C] + adds r1, r3 + strh r1, [r2, 0x3C] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r2, 0x26] + ldrh r0, [r2, 0x38] + adds r0, 0x1 + strh r0, [r2, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xE + bne _080E21C8 + adds r0, r2, 0 + bl sub_8072740 +_080E21C8: + pop {r0} + bx r0 + thumb_func_end sub_80E2194 + + thumb_func_start sub_80E21CC +sub_80E21CC: @ 80E21CC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E221C @ =gUnknown_3005090 + adds r6, r1, r0 + movs r1, 0 + movs r0, 0xC + strh r0, [r6, 0x12] + movs r0, 0x3 + strh r0, [r6, 0x14] + strh r1, [r6, 0x16] + ldr r5, _080E2220 @ =gUnknown_2037F1A + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E2224 + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + ldrb r0, [r5] + movs r1, 0 + bl sub_8076B2C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080E2216 + adds r0, 0x3 +_080E2216: + asrs r0, 2 + adds r0, r4, r0 + b _080E2248 + .align 2, 0 +_080E221C: .4byte gUnknown_3005090 +_080E2220: .4byte gUnknown_2037F1A +_080E2224: + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + ldrb r0, [r5] + movs r1, 0 + bl sub_8076B2C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080E2244 + adds r0, 0x3 +_080E2244: + asrs r0, 2 + subs r0, r4, r0 +_080E2248: + strh r0, [r6, 0x1E] + ldr r5, _080E229C @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + adds r4, r0, 0 + ldrb r0, [r5] + movs r1, 0 + bl sub_8076B2C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080E226C + adds r0, 0x3 +_080E226C: + asrs r0, 2 + subs r0, r4, r0 + strh r0, [r6, 0x20] + ldr r4, _080E22A0 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x24] + ldr r0, _080E22A4 @ =sub_80E22A8 + str r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E229C: .4byte gUnknown_2037F1A +_080E22A0: .4byte gUnknown_2037F1B +_080E22A4: .4byte sub_80E22A8 + thumb_func_end sub_80E21CC + + thumb_func_start sub_80E22A8 +sub_80E22A8: @ 80E22A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080E22D0 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r0, 0x8 + ldrsh r1, [r5, r0] + cmp r1, 0 + beq _080E22D4 + cmp r1, 0x1 + bne _080E22CC + b _080E23CC +_080E22CC: + b _080E23DA + .align 2, 0 +_080E22D0: .4byte gUnknown_3005090 +_080E22D4: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080E23DA + strh r1, [r5, 0xA] + movs r1, 0x1E + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + movs r4, 0x24 + ldrsh r3, [r5, r4] + ldrb r4, [r5, 0x12] + str r4, [sp] + ldrb r4, [r5, 0xC] + str r4, [sp, 0x4] + add r4, sp, 0x10 + str r4, [sp, 0x8] + adds r4, 0x2 + str r4, [sp, 0xC] + bl sub_80E23E8 + movs r6, 0 + mov r8, r4 + ldr r4, _080E2348 @ =gUnknown_202063C +_080E230E: + add r0, sp, 0x10 + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + ldr r0, _080E234C @ =gUnknown_83FF5CC + movs r3, 0x23 + bl sub_8006F8C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x40 + beq _080E23A2 + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080E2362 + cmp r6, 0 + bne _080E2350 + lsls r2, r3, 4 + adds r1, r2, r3 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r5, 0x14] + negs r0, r0 + strh r0, [r1, 0x26] + strh r0, [r1, 0x24] + b _080E238A + .align 2, 0 +_080E2348: .4byte gUnknown_202063C +_080E234C: .4byte gUnknown_83FF5CC +_080E2350: + lsls r2, r3, 4 + adds r1, r2, r3 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r5, 0x14] + strh r0, [r1, 0x26] + ldrh r0, [r5, 0x14] + strh r0, [r1, 0x24] + b _080E238A +_080E2362: + cmp r6, 0 + bne _080E2378 + lsls r2, r3, 4 + adds r1, r2, r3 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r5, 0x14] + negs r0, r0 + strh r0, [r1, 0x24] + ldrh r0, [r5, 0x14] + b _080E2388 +_080E2378: + lsls r2, r3, 4 + adds r1, r2, r3 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r5, 0x14] + strh r0, [r1, 0x24] + ldrh r0, [r5, 0x14] + negs r0, r0 +_080E2388: + strh r0, [r1, 0x26] +_080E238A: + ldr r1, _080E23C8 @ =gUnknown_202063C + adds r0, r2, r3 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x2E] + strh r7, [r0, 0x30] + movs r1, 0xA + strh r1, [r0, 0x32] + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] +_080E23A2: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1 + bls _080E230E + ldrh r2, [r5, 0xC] + movs r3, 0xC + ldrsh r1, [r5, r3] + movs r4, 0x12 + ldrsh r0, [r5, r4] + cmp r1, r0 + bne _080E23C0 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080E23C0: + adds r0, r2, 0x1 + strh r0, [r5, 0xC] + b _080E23DA + .align 2, 0 +_080E23C8: .4byte gUnknown_202063C +_080E23CC: + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080E23DA + adds r0, r7, 0 + bl sub_8072760 +_080E23DA: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E22A8 + + thumb_func_start sub_80E23E8 +sub_80E23E8: @ 80E23E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + ldr r6, [sp, 0x30] + mov r9, r6 + ldr r6, [sp, 0x34] + mov r10, r6 + lsls r0, 16 + lsrs r0, 16 + mov r12, r0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + lsls r2, 16 + lsrs r2, 16 + adds r7, r2, 0 + lsls r3, 16 + lsrs r3, 16 + str r3, [sp, 0x4] + lsls r4, 24 + lsrs r6, r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + cmp r5, 0 + bne _080E2430 + mov r2, r9 + strh r0, [r2] + mov r6, r10 + strh r1, [r6] + b _080E248E +_080E2430: + cmp r5, r6 + bcc _080E243E + mov r0, r9 + strh r2, [r0] + mov r1, r10 + strh r3, [r1] + b _080E248E +_080E243E: + subs r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + mov r2, r12 + lsls r1, r2, 16 + asrs r1, 16 + lsls r5, r1, 8 + lsls r0, r7, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 8 + adds r1, r6, 0 + bl __divsi3 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r5, r0 + ldr r2, [sp] + lsls r1, r2, 16 + asrs r1, 16 + lsls r4, r1, 8 + ldr r2, [sp, 0x4] + lsls r0, r2, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 8 + adds r1, r6, 0 + bl __divsi3 + mov r6, r8 + muls r6, r0 + adds r0, r6, 0 + adds r4, r0 + asrs r5, 8 + mov r0, r9 + strh r5, [r0] + asrs r4, 8 + mov r1, r10 + strh r4, [r1] +_080E248E: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E23E8 + + thumb_func_start sub_80E24A0 +sub_80E24A0: @ 80E24A0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x24 + ble _080E24D6 + ldr r3, _080E24DC @ =gUnknown_3005090 + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8007280 +_080E24D6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E24DC: .4byte gUnknown_3005090 + thumb_func_end sub_80E24A0 + + thumb_func_start sub_80E24E0 +sub_80E24E0: @ 80E24E0 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080E250C @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x2E] + ldr r1, _080E2510 @ =sub_8072740 + adds r0, r4, 0 + bl sub_8074A68 + ldr r0, _080E2514 @ =sub_8075764 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E250C: .4byte gUnknown_2037F02 +_080E2510: .4byte sub_8072740 +_080E2514: .4byte sub_8075764 + thumb_func_end sub_80E24E0 + + thumb_func_start sub_80E2518 +sub_80E2518: @ 80E2518 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + ldr r1, _080E2638 @ =gUnknown_3005090 + adds r7, r0, r1 + ldr r0, _080E263C @ =gUnknown_2037F1A + mov r10, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x1E] + mov r1, r10 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x20] + ldr r0, _080E2640 @ =gUnknown_2037F1B + mov r8, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x22] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8074480 + adds r4, r0, 0 + mov r1, r8 + ldrb r0, [r1] + movs r1, 0 + bl sub_8076B2C + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080E258A + adds r0, 0x3 +_080E258A: + asrs r0, 2 + adds r0, r4, r0 + strh r0, [r7, 0x24] + ldr r4, _080E2644 @ =gUnknown_83FF62C + movs r0, 0x1E + ldrsh r5, [r7, r0] + movs r1, 0x20 + ldrsh r6, [r7, r1] + mov r1, r8 + ldrb r0, [r1] + bl sub_807685C + adds r3, r0, 0 + subs r3, 0x5 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x26] + cmp r0, 0x40 + beq _080E2654 + ldr r4, _080E2648 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x10 + strh r1, [r0, 0x2E] + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r7, 0x22] + strh r1, [r0, 0x32] + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r7, 0x24] + strh r1, [r0, 0x36] + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080E264C @ =0x0000ffe0 + strh r1, [r0, 0x38] + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8075068 + mov r1, r10 + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E2632 + movs r0, 0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_800843C +_080E2632: + ldr r0, _080E2650 @ =sub_80E2668 + str r0, [r7] + b _080E265A + .align 2, 0 +_080E2638: .4byte gUnknown_3005090 +_080E263C: .4byte gUnknown_2037F1A +_080E2640: .4byte gUnknown_2037F1B +_080E2644: .4byte gUnknown_83FF62C +_080E2648: .4byte gUnknown_202063C +_080E264C: .4byte 0x0000ffe0 +_080E2650: .4byte sub_80E2668 +_080E2654: + mov r0, r9 + bl sub_8072760 +_080E265A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E2518 + + thumb_func_start sub_80E2668 +sub_80E2668: @ 80E2668 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E268C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080E26D0 + cmp r1, 0x1 + bgt _080E2690 + cmp r1, 0 + beq _080E269A + b _080E276E + .align 2, 0 +_080E268C: .4byte gUnknown_3005090 +_080E2690: + cmp r1, 0x2 + beq _080E26F4 + cmp r1, 0x3 + beq _080E2768 + b _080E276E +_080E269A: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E276E + strh r1, [r4, 0xA] + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080E26CC @ =gUnknown_202063C + adds r0, r1 + bl sub_8075094 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080E276E + b _080E275A + .align 2, 0 +_080E26CC: .4byte gUnknown_202063C +_080E26D0: + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080E26F0 @ =gUnknown_202063C + adds r0, r1 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080E276E + movs r0, 0 + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + b _080E275A + .align 2, 0 +_080E26F0: .4byte gUnknown_202063C +_080E26F4: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E276E + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r2, [r4, 0xC] + adds r2, 0x1 + strh r2, [r4, 0xC] + ldr r5, _080E2764 @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + movs r0, 0x1 + ands r2, r0 + adds r1, 0x3E + lsls r2, 2 + ldrb r3, [r1] + subs r0, 0x6 + ands r0, r3 + orrs r0, r2 + strb r0, [r1] + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080E276E + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 +_080E275A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E276E + .align 2, 0 +_080E2764: .4byte gUnknown_202063C +_080E2768: + adds r0, r2, 0 + bl sub_8072760 +_080E276E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E2668 + + thumb_func_start sub_80E2774 +sub_80E2774: @ 80E2774 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, _080E2788 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r6, r0, 0 + cmp r1, 0 + bne _080E2790 + ldr r0, _080E278C @ =gUnknown_2037F1A + b _080E2792 + .align 2, 0 +_080E2788: .4byte gUnknown_2037F02 +_080E278C: .4byte gUnknown_2037F1A +_080E2790: + ldr r0, _080E27F8 @ =gUnknown_2037F1B +_080E2792: + ldrb r5, [r0] + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r3, _080E27FC @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E2800 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r1, r6, 0 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x3A] + movs r2, 0x2 + ldrsh r0, [r1, r2] + movs r1, 0x1 + cmp r0, 0 + bne _080E27C0 + movs r3, 0x1 + negs r3, r3 + adds r1, r3, 0 +_080E27C0: + strh r1, [r4, 0x3C] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080E2804 + ldrb r2, [r4, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r5, 0 + movs r1, 0x4 + bl sub_8076B2C + subs r0, 0x8 + b _080E280E + .align 2, 0 +_080E27F8: .4byte gUnknown_2037F1B +_080E27FC: .4byte 0x000003ff +_080E2800: .4byte 0xfffffc00 +_080E2804: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8076B2C + adds r0, 0x8 +_080E280E: + strh r0, [r4, 0x20] + ldr r0, _080E281C @ =sub_80E2820 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E281C: .4byte sub_80E2820 + thumb_func_end sub_80E2774 + + thumb_func_start sub_80E2820 +sub_80E2820: @ 80E2820 + push {lr} + adds r2, r0, 0 + movs r0, 0x2E + ldrsh r1, [r2, r0] + cmp r1, 0x1 + beq _080E2868 + cmp r1, 0x1 + bgt _080E2836 + cmp r1, 0 + beq _080E2840 + b _080E28D8 +_080E2836: + cmp r1, 0x2 + beq _080E2878 + cmp r1, 0x3 + beq _080E289E + b _080E28D8 +_080E2840: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E28D8 + strh r1, [r2, 0x30] + ldrh r0, [r2, 0x3C] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _080E28D8 + b _080E2896 +_080E2868: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bne _080E28D8 + b _080E2892 +_080E2878: + movs r0, 0x3C + ldrsh r1, [r2, r0] + lsls r1, 2 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080E28D8 +_080E2892: + movs r0, 0 + strh r0, [r2, 0x30] +_080E2896: + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + b _080E28D8 +_080E289E: + movs r0, 0x3C + ldrsh r1, [r2, r0] + lsls r0, r1, 1 + adds r0, r1 + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bne _080E28D8 + ldrh r0, [r2, 0x3A] + subs r0, 0x1 + strh r0, [r2, 0x3A] + lsls r0, 16 + cmp r0, 0 + beq _080E28D2 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + b _080E28D8 +_080E28D2: + adds r0, r2, 0 + bl sub_8072740 +_080E28D8: + pop {r0} + bx r0 + thumb_func_end sub_80E2820 + + thumb_func_start sub_80E28DC +sub_80E28DC: @ 80E28DC + push {r4,lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r2, _080E28F4 @ =gUnknown_2037F02 + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080E28F8 + adds r0, r1, 0 + bl sub_8072760 + b _080E2920 + .align 2, 0 +_080E28F4: .4byte gUnknown_2037F02 +_080E28F8: + ldr r0, _080E2928 @ =gUnknown_3005090 + lsls r4, r1, 2 + adds r4, r1 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r2, 0x2] + strh r0, [r4, 0x8] + ldrb r0, [r2] + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x26] + ldr r2, _080E292C @ =gUnknown_83FF65C + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080E2930 @ =sub_80E2934 + str r0, [r4] +_080E2920: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2928: .4byte gUnknown_3005090 +_080E292C: .4byte gUnknown_83FF65C +_080E2930: .4byte sub_80E2934 + thumb_func_end sub_80E28DC + + thumb_func_start sub_80E2934 +sub_80E2934: @ 80E2934 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080E2974 @ =gUnknown_3005090 + adds r4, r0, r1 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E298E + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r1, [r4, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E297C + ldr r2, _080E2978 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + b _080E298C + .align 2, 0 +_080E2974: .4byte gUnknown_3005090 +_080E2978: .4byte gUnknown_202063C +_080E297C: + ldr r2, _080E29D4 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080E29D8 @ =0x0000fffe +_080E298C: + strh r1, [r0, 0x24] +_080E298E: + adds r0, r4, 0 + bl sub_8076308 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080E29EA + ldr r2, _080E29D4 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] + ldrh r0, [r4, 0x8] + subs r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + cmp r0, 0 + beq _080E29E4 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080E29DC @ =gUnknown_3005090 + adds r0, r1 + ldrh r1, [r0, 0x26] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080E29E0 @ =gUnknown_83FF65C + bl sub_80762D0 + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + b _080E29EA + .align 2, 0 +_080E29D4: .4byte gUnknown_202063C +_080E29D8: .4byte 0x0000fffe +_080E29DC: .4byte gUnknown_3005090 +_080E29E0: .4byte gUnknown_83FF65C +_080E29E4: + adds r0, r6, 0 + bl sub_8072760 +_080E29EA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E2934 + + thumb_func_start sub_80E29F0 +sub_80E29F0: @ 80E29F0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080E2A04 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E2A0C + ldr r4, _080E2A08 @ =gUnknown_2037F1A + b _080E2A0E + .align 2, 0 +_080E2A04: .4byte gUnknown_2037F02 +_080E2A08: .4byte gUnknown_2037F1A +_080E2A0C: + ldr r4, _080E2A4C @ =gUnknown_2037F1B +_080E2A0E: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + strh r0, [r5, 0x22] + movs r1, 0x22 + ldrsh r0, [r5, r1] + cmp r0, 0x7 + bgt _080E2A32 + movs r0, 0x8 + strh r0, [r5, 0x22] +_080E2A32: + movs r2, 0 + strh r2, [r5, 0x2E] + ldr r1, _080E2A50 @ =gUnknown_2037F02 + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x30] + strh r2, [r5, 0x32] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x34] + ldr r0, _080E2A54 @ =sub_80E2A58 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E2A4C: .4byte gUnknown_2037F1B +_080E2A50: .4byte gUnknown_2037F02 +_080E2A54: .4byte sub_80E2A58 + thumb_func_end sub_80E29F0 + + thumb_func_start sub_80E2A58 +sub_80E2A58: @ 80E2A58 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r3, r2] + cmp r0, r1 + blt _080E2AAC + movs r0, 0 + strh r0, [r3, 0x2E] + ldrh r1, [r3, 0x32] + adds r1, 0x1 + movs r0, 0x1 + ands r1, r0 + strh r1, [r3, 0x32] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + lsls r1, 2 + ldrb r2, [r0] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + movs r2, 0x32 + ldrsh r0, [r3, r2] + cmp r0, 0 + beq _080E2AAC + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080E2AAC + adds r0, r3, 0 + bl sub_8072740 +_080E2AAC: + pop {r0} + bx r0 + thumb_func_end sub_80E2A58 + + thumb_func_start sub_80E2AB0 +sub_80E2AB0: @ 80E2AB0 + push {lr} + adds r3, r0, 0 + ldr r0, _080E2ADC @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E2AE0 + ldrb r2, [r3, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x3] + movs r0, 0x64 + strh r0, [r3, 0x20] + movs r0, 0x1 + b _080E2AE6 + .align 2, 0 +_080E2ADC: .4byte gUnknown_2037F02 +_080E2AE0: + movs r0, 0x8C + strh r0, [r3, 0x20] + ldr r0, _080E2AF4 @ =0x0000ffff +_080E2AE6: + strh r0, [r3, 0x3C] + movs r0, 0x38 + strh r0, [r3, 0x22] + ldr r0, _080E2AF8 @ =sub_80E2AFC + str r0, [r3, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_080E2AF4: .4byte 0x0000ffff +_080E2AF8: .4byte sub_80E2AFC + thumb_func_end sub_80E2AB0 + + thumb_func_start sub_80E2AFC +sub_80E2AFC: @ 80E2AFC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bls _080E2B0A + b _080E2CDC +_080E2B0A: + lsls r0, 2 + ldr r1, _080E2B14 @ =_080E2B18 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2B14: .4byte _080E2B18 + .align 2, 0 +_080E2B18: + .4byte _080E2B3C + .4byte _080E2B6E + .4byte _080E2B80 + .4byte _080E2BC0 + .4byte _080E2BD2 + .4byte _080E2C10 + .4byte _080E2C74 + .4byte _080E2C94 + .4byte _080E2CBA +_080E2B3C: + movs r3, 0x3C + ldrsh r0, [r4, r3] + lsls r0, 1 + ldrh r1, [r4, 0x22] + subs r1, r0 + strh r1, [r4, 0x22] + ldrh r2, [r4, 0x30] + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _080E2B5E + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x20] + subs r0, r1 + strh r0, [r4, 0x20] +_080E2B5E: + adds r0, r2, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + beq _080E2B6C + b _080E2CDC +_080E2B6C: + b _080E2CAE +_080E2B6E: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _080E2B7E + b _080E2CDC +_080E2B7E: + b _080E2CAE +_080E2B80: + ldrh r2, [r4, 0x30] + adds r2, 0x1 + strh r2, [r4, 0x30] + movs r3, 0x3C + ldrsh r1, [r4, r3] + lsls r0, r1, 1 + adds r0, r1 + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r3, _080E2BBC @ =gUnknown_825E074 + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + ldrh r1, [r4, 0x3C] + muls r0, r1 + strh r0, [r4, 0x24] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0xC + beq _080E2BB8 + b _080E2CDC +_080E2BB8: + b _080E2CAE + .align 2, 0 +_080E2BBC: .4byte gUnknown_825E074 +_080E2BC0: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + beq _080E2BD0 + b _080E2CDC +_080E2BD0: + b _080E2CAE +_080E2BD2: + ldrh r2, [r4, 0x30] + adds r2, 0x1 + strh r2, [r4, 0x30] + movs r1, 0x3C + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + ldrh r0, [r4, 0x22] + subs r0, r1 + strh r0, [r4, 0x22] + ldr r3, _080E2C0C @ =gUnknown_825E074 + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + ldrh r1, [r4, 0x3C] + muls r0, r1 + strh r0, [r4, 0x24] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0xC + bne _080E2CDC + b _080E2CB2 + .align 2, 0 +_080E2C0C: .4byte gUnknown_825E074 +_080E2C10: + ldrh r2, [r4, 0x30] + adds r2, 0x1 + strh r2, [r4, 0x30] + movs r3, 0x3C + ldrsh r1, [r4, r3] + lsls r0, r1, 1 + adds r0, r1 + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r3, _080E2C68 @ =gUnknown_825E074 + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + ldrh r1, [r4, 0x3C] + muls r0, r1 + strh r0, [r4, 0x24] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0xF + bne _080E2C5C + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x10 + ldr r3, _080E2C6C @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E2C70 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] +_080E2C5C: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x12 + bne _080E2CDC + b _080E2CAE + .align 2, 0 +_080E2C68: .4byte gUnknown_825E074 +_080E2C6C: .4byte 0x000003ff +_080E2C70: .4byte 0xfffffc00 +_080E2C74: + movs r3, 0x3C + ldrsh r0, [r4, r3] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x20] + adds r1, r0 + strh r1, [r4, 0x20] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _080E2CDC + b _080E2CAE +_080E2C94: + movs r1, 0x3C + ldrsh r0, [r4, r1] + lsls r0, 1 + ldrh r3, [r4, 0x20] + adds r0, r3 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080E2CDC +_080E2CAE: + movs r0, 0 + strh r0, [r4, 0x30] +_080E2CB2: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080E2CDC +_080E2CBA: + movs r1, 0x3C + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + ldrh r0, [r4, 0x20] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080E2CDC + adds r0, r4, 0 + bl sub_8072740 +_080E2CDC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E2AFC + + thumb_func_start sub_80E2CE4 +sub_80E2CE4: @ 80E2CE4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E2D34 @ =gUnknown_3005090 + adds r6, r1, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x26] + bl sub_8075290 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x1 + bne _080E2D44 + ldr r5, _080E2D38 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r1, [r5] + movs r0, 0x2 + eors r0, r1 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + ble _080E2D3C + strh r7, [r6, 0x24] + b _080E2D64 + .align 2, 0 +_080E2D34: .4byte gUnknown_3005090 +_080E2D38: .4byte gUnknown_2037F1A +_080E2D3C: + ldr r0, _080E2D40 @ =0x0000ffff + b _080E2D62 + .align 2, 0 +_080E2D40: .4byte 0x0000ffff +_080E2D44: + ldr r0, _080E2D58 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E2D60 + ldr r0, _080E2D5C @ =0x0000ffff + b _080E2D62 + .align 2, 0 +_080E2D58: .4byte gUnknown_2037F1A +_080E2D5C: .4byte 0x0000ffff +_080E2D60: + movs r0, 0x1 +_080E2D62: + strh r0, [r6, 0x24] +_080E2D64: + ldr r0, _080E2D70 @ =sub_80E2D74 + str r0, [r6] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E2D70: .4byte sub_80E2D74 + thumb_func_end sub_80E2CE4 + + thumb_func_start sub_80E2D74 +sub_80E2D74: @ 80E2D74 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080E2D98 @ =gUnknown_3005090 + adds r3, r0, r1 + movs r1, 0x8 + ldrsh r0, [r3, r1] + cmp r0, 0x8 + bls _080E2D8E + b _080E2F08 +_080E2D8E: + lsls r0, 2 + ldr r1, _080E2D9C @ =_080E2DA0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2D98: .4byte gUnknown_3005090 +_080E2D9C: .4byte _080E2DA0 + .align 2, 0 +_080E2DA0: + .4byte _080E2DC4 + .4byte _080E2DD6 + .4byte _080E2E08 + .4byte _080E2E38 + .4byte _080E2E5E + .4byte _080E2E88 + .4byte _080E2E98 + .4byte _080E2EB8 + .4byte _080E2EF0 +_080E2DC4: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + beq _080E2DD4 + b _080E2F08 +_080E2DD4: + b _080E2EE0 +_080E2DD6: + ldr r2, _080E2E04 @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0x24 + ldrsh r0, [r3, r2] + lsls r2, r0, 1 + adds r2, r0 + ldrh r0, [r1, 0x24] + subs r0, r2 + strh r0, [r1, 0x24] + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + beq _080E2E02 + b _080E2F08 +_080E2E02: + b _080E2EE0 + .align 2, 0 +_080E2E04: .4byte gUnknown_202063C +_080E2E08: + ldr r2, _080E2E34 @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x24 + ldrsh r2, [r3, r0] + lsls r0, r2, 1 + adds r0, r2 + ldrh r2, [r1, 0x24] + adds r0, r2 + strh r0, [r1, 0x24] + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080E2F08 + b _080E2EE0 + .align 2, 0 +_080E2E34: .4byte gUnknown_202063C +_080E2E38: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080E2F08 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r1, [r3, 0xC] + movs r2, 0xC + ldrsh r0, [r3, r2] + cmp r0, 0 + bne _080E2EE4 + adds r0, r1, 0x1 + strh r0, [r3, 0xC] + movs r0, 0x1 + strh r0, [r3, 0x8] + b _080E2F08 +_080E2E5E: + ldr r2, _080E2E84 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x24] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080E2F08 + b _080E2EE0 + .align 2, 0 +_080E2E84: .4byte gUnknown_202063C +_080E2E88: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080E2F08 + b _080E2EE0 +_080E2E98: + ldr r2, _080E2EB4 @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x24 + ldrsh r2, [r3, r0] + lsls r2, 2 + ldrh r0, [r1, 0x24] + subs r0, r2 + b _080E2ED0 + .align 2, 0 +_080E2EB4: .4byte gUnknown_202063C +_080E2EB8: + ldr r2, _080E2EEC @ =gUnknown_202063C + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0x24 + ldrsh r0, [r3, r2] + lsls r0, 2 + ldrh r2, [r1, 0x24] + adds r0, r2 +_080E2ED0: + strh r0, [r1, 0x24] + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080E2F08 +_080E2EE0: + movs r0, 0 + strh r0, [r3, 0xA] +_080E2EE4: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080E2F08 + .align 2, 0 +_080E2EEC: .4byte gUnknown_202063C +_080E2EF0: + ldr r2, _080E2F10 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x24] + adds r0, r4, 0 + bl sub_8072760 +_080E2F08: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2F10: .4byte gUnknown_202063C + thumb_func_end sub_80E2D74 + + thumb_func_start sub_80E2F14 +sub_80E2F14: @ 80E2F14 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E2F30 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E2F38 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _080E2F34 @ =gUnknown_2037F1A + b _080E2F3A + .align 2, 0 +_080E2F30: .4byte gUnknown_2037F02 +_080E2F34: .4byte gUnknown_2037F1A +_080E2F38: + ldr r0, _080E2F90 @ =gUnknown_2037F1B +_080E2F3A: + ldrb r0, [r0] + strh r0, [r4, 0x3C] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E2F5E + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r4, 0x3] +_080E2F5E: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076884 + movs r2, 0x3 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + adds r0, r1, 0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, 0x5] + ldrb r0, [r4, 0x1] + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] + ldr r0, _080E2F94 @ =sub_80E2F98 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2F90: .4byte gUnknown_2037F1B +_080E2F94: .4byte sub_80E2F98 + thumb_func_end sub_80E2F14 + + thumb_func_start sub_80E2F98 +sub_80E2F98: @ 80E2F98 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E2FA6 + b _080E3196 +_080E2FA6: + lsls r0, 2 + ldr r1, _080E2FB0 @ =_080E2FB4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2FB0: .4byte _080E2FB4 + .align 2, 0 +_080E2FB4: + .4byte _080E2FC8 + .4byte _080E30C8 + .4byte _080E3130 + .4byte _080E3144 + .4byte _080E3190 +_080E2FC8: + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0x5 + bhi _080E2FF8 + lsls r0, 2 + ldr r1, _080E2FDC @ =_080E2FE0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2FDC: .4byte _080E2FE0 + .align 2, 0 +_080E2FE0: + .4byte _080E2FFC + .4byte _080E3018 + .4byte _080E303A + .4byte _080E3056 + .4byte _080E2FFC + .4byte _080E307C +_080E2FF8: + movs r0, 0 + strh r0, [r4, 0x3A] +_080E2FFC: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + b _080E3070 +_080E3018: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x5 + bl sub_8076B2C + subs r0, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x4 + b _080E3076 +_080E303A: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + b _080E3070 +_080E3056: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x4 + bl sub_8076B2C + adds r0, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 +_080E3070: + bl sub_8076B2C + subs r0, 0x4 +_080E3076: + lsls r0, 16 + lsrs r1, r0, 16 + b _080E309C +_080E307C: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r1, r0, 24 +_080E309C: + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0x4 + bne _080E30A8 + movs r0, 0x18 + b _080E30B2 +_080E30A8: + cmp r0, 0x5 + bne _080E30B0 + movs r0, 0x6 + b _080E30B2 +_080E30B0: + movs r0, 0xC +_080E30B2: + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r5, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + strh r1, [r4, 0x36] + adds r0, r4, 0 + bl sub_80754F8 + b _080E3188 +_080E30C8: + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _080E3196 + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x4 + beq _080E3100 + cmp r0, 0x5 + beq _080E3120 + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _080E3118 +_080E3100: + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + strh r1, [r4, 0x38] +_080E3118: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + b _080E3196 +_080E3120: + movs r0, 0 + strh r0, [r4, 0x2E] + movs r1, 0x10 + strh r1, [r4, 0x30] + strh r0, [r4, 0x32] + movs r0, 0x3 + strh r0, [r4, 0x38] + b _080E3196 +_080E3130: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080E3196 + movs r0, 0 + strh r0, [r4, 0x38] + b _080E3196 +_080E3144: + ldrh r1, [r4, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E3156 + ldrh r0, [r4, 0x30] + subs r0, 0x1 + strh r0, [r4, 0x30] + b _080E315C +_080E3156: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] +_080E315C: + ldrh r1, [r4, 0x32] + lsls r1, 8 + ldrh r0, [r4, 0x30] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + bne _080E3196 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080E3188: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _080E3196 +_080E3190: + adds r0, r4, 0 + bl sub_8072740 +_080E3196: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E2F98 + + thumb_func_start sub_80E319C +sub_80E319C: @ 80E319C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x2E + ldrsh r1, [r4, r2] + subs r0, r1 + movs r2, 0x38 + ldrsh r1, [r4, r2] + muls r0, r1 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + adds r5, r0, 0 + strh r5, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + subs r0, r1 + movs r2, 0x38 + ldrsh r1, [r4, r2] + muls r0, r1 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + adds r3, r0, 0 + strh r3, [r4, 0x26] + ldrh r1, [r4, 0x38] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E31FA + ldr r0, _080E3218 @ =gUnknown_83FF180 + ldrh r1, [r4, 0x20] + adds r1, r5 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r4, 0x22] + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x5 + bl sub_8006F8C +_080E31FA: + movs r0, 0x38 + ldrsh r1, [r4, r0] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E320C + adds r0, r4, 0 + bl sub_8072740 +_080E320C: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3218: .4byte gUnknown_83FF180 + thumb_func_end sub_80E319C + + thumb_func_start sub_80E321C +sub_80E321C: @ 80E321C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E3250 @ =gUnknown_2037F1B + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E3258 + ldr r2, _080E3254 @ =gUnknown_2037F02 + ldrh r1, [r5, 0x20] + ldrh r0, [r2] + subs r0, r1, r0 + strh r0, [r5, 0x2E] + ldrh r0, [r2, 0x4] + subs r1, r0 + b _080E3266 + .align 2, 0 +_080E3250: .4byte gUnknown_2037F1B +_080E3254: .4byte gUnknown_2037F02 +_080E3258: + ldr r2, _080E328C @ =gUnknown_2037F02 + ldrh r1, [r5, 0x20] + ldrh r0, [r2] + adds r0, r1, r0 + strh r0, [r5, 0x2E] + ldrh r0, [r2, 0x4] + adds r1, r0 +_080E3266: + strh r1, [r5, 0x32] + adds r3, r2, 0 + ldrh r1, [r5, 0x22] + ldrh r2, [r3, 0x2] + adds r2, r1, r2 + strh r2, [r5, 0x30] + ldrh r0, [r3, 0x6] + adds r1, r0 + strh r1, [r5, 0x34] + ldrh r0, [r3, 0x8] + strh r0, [r5, 0x36] + ldrh r0, [r5, 0x2E] + strh r0, [r5, 0x20] + strh r2, [r5, 0x22] + ldr r0, _080E3290 @ =sub_80E319C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E328C: .4byte gUnknown_2037F02 +_080E3290: .4byte sub_80E319C + thumb_func_end sub_80E321C + + thumb_func_start sub_80E3294 +sub_80E3294: @ 80E3294 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r5, r0, 24 + adds r2, r5, 0 + ldr r0, _080E32D8 @ =gUnknown_3005090 + mov r9, r0 + lsls r7, r6, 2 + adds r0, r7, r6 + lsls r0, 3 + mov r8, r0 + mov r4, r8 + add r4, r9 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E32DC + adds r0, r5, 0 + movs r1, 0 + bl sub_80758E0 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + b _080E3328 + .align 2, 0 +_080E32D8: .4byte gUnknown_3005090 +_080E32DC: + cmp r0, 0x1 + bne _080E3334 + ldrh r0, [r4, 0xA] + adds r0, 0x60 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + subs r0, 0xD + strh r0, [r4, 0xC] + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r0, 0xC + ldrsh r2, [r4, r0] + adds r0, r5, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _080E3360 + movs r0, 0 + strh r0, [r4, 0xE] + adds r0, r5, 0 + bl sub_8075980 + ldr r1, _080E3330 @ =gUnknown_202063C + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080E3328: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E3360 + .align 2, 0 +_080E3330: .4byte gUnknown_202063C +_080E3334: + ldr r0, _080E336C @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0 + bl sub_80351A8 + adds r3, r7, 0 + mov r4, r9 + movs r1, 0xF + mov r2, r8 + adds r0, r4, r2 + adds r0, 0x26 + movs r2, 0 +_080E334C: + strh r2, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080E334C + adds r0, r3, r6 + lsls r0, 3 + adds r0, r4 + ldr r1, _080E3370 @ =sub_80E3374 + str r1, [r0] +_080E3360: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E336C: .4byte gUnknown_2037F1A +_080E3370: .4byte sub_80E3374 + thumb_func_end sub_80E3294 + + thumb_func_start sub_80E3374 +sub_80E3374: @ 80E3374 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _080E33A0 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080E33D8 + cmp r5, 0x1 + bgt _080E33A4 + cmp r5, 0 + beq _080E33AE + b _080E34C6 + .align 2, 0 +_080E33A0: .4byte gUnknown_3005090 +_080E33A4: + cmp r5, 0x2 + beq _080E3444 + cmp r5, 0x3 + beq _080E3480 + b _080E34C6 +_080E33AE: + ldr r0, _080E33D0 @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldr r0, _080E33D4 @ =0x0000ff38 + strh r0, [r1, 0x26] + movs r0, 0xC8 + strh r0, [r1, 0x24] + adds r1, 0x3E + ldrb r2, [r1] + subs r0, 0xCD + ands r0, r2 + strb r0, [r1] + strh r5, [r4, 0x1C] + b _080E3472 + .align 2, 0 +_080E33D0: .4byte gUnknown_202063C +_080E33D4: .4byte 0x0000ff38 +_080E33D8: + ldrh r1, [r4, 0x1C] + adds r1, 0x70 + movs r5, 0 + strh r1, [r4, 0x1C] + ldr r2, _080E343C @ =gUnknown_202063C + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r2 + lsls r1, 16 + asrs r1, 24 + ldrh r3, [r2, 0x26] + adds r1, r3 + strh r1, [r2, 0x26] + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + blt _080E3408 + strh r5, [r2, 0x24] +_080E3408: + movs r1, 0x26 + ldrsh r0, [r2, r1] + cmp r0, 0 + ble _080E3412 + strh r5, [r2, 0x26] +_080E3412: + movs r3, 0x26 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080E34C6 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl sub_80722F4 + ldr r1, _080E3440 @ =0xfffff800 + adds r0, r1, 0 + ldrh r2, [r4, 0x1C] + adds r0, r2 + strh r0, [r4, 0x1C] + b _080E3472 + .align 2, 0 +_080E343C: .4byte gUnknown_202063C +_080E3440: .4byte 0xfffff800 +_080E3444: + ldrh r0, [r4, 0x1C] + subs r0, 0x70 + strh r0, [r4, 0x1C] + lsls r0, 16 + cmp r0, 0 + bge _080E3454 + movs r0, 0 + strh r0, [r4, 0x1C] +_080E3454: + ldr r0, _080E347C @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrh r2, [r4, 0x1C] + lsls r2, 16 + asrs r2, 24 + ldrh r0, [r1, 0x26] + subs r0, r2 + strh r0, [r1, 0x26] + movs r3, 0x1C + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080E34C6 +_080E3472: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E34C6 + .align 2, 0 +_080E347C: .4byte gUnknown_202063C +_080E3480: + ldrh r0, [r4, 0x1C] + adds r0, 0x70 + strh r0, [r4, 0x1C] + ldr r2, _080E34CC @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r2 + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r1, 0x26] + adds r0, r2 + strh r0, [r1, 0x26] + lsls r0, 16 + cmp r0, 0 + ble _080E34A4 + movs r0, 0 + strh r0, [r1, 0x26] +_080E34A4: + movs r3, 0x26 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080E34C6 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl sub_80722F4 + adds r0, r6, 0 + bl sub_8072760 +_080E34C6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E34CC: .4byte gUnknown_202063C + thumb_func_end sub_80E3374 + + thumb_func_start sub_80E34D0 +sub_80E34D0: @ 80E34D0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E34F4 @ =gUnknown_2037F1B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E34FC + ldrb r0, [r4] + bl sub_807685C + subs r0, 0x2 + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldr r4, _080E34F8 @ =0x0000ff70 + b _080E350C + .align 2, 0 +_080E34F4: .4byte gUnknown_2037F1B +_080E34F8: .4byte 0x0000ff70 +_080E34FC: + ldrb r0, [r4] + bl sub_807685C + adds r0, 0x2 + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldr r4, _080E3528 @ =0x0000ffa0 +_080E350C: + ldr r0, _080E352C @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + strh r4, [r5, 0x26] + ldr r0, _080E3530 @ =sub_80E3534 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3528: .4byte 0x0000ffa0 +_080E352C: .4byte gUnknown_2037F1B +_080E3530: .4byte sub_80E3534 + thumb_func_end sub_80E34D0 + + thumb_func_start sub_80E3534 +sub_80E3534: @ 80E3534 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E3542 + b _080E365E +_080E3542: + lsls r0, 2 + ldr r1, _080E354C @ =_080E3550 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E354C: .4byte _080E3550 + .align 2, 0 +_080E3550: + .4byte _080E3564 + .4byte _080E3588 + .4byte _080E35C8 + .4byte _080E35F8 + .4byte _080E3624 +_080E3564: + ldrh r0, [r4, 0x26] + adds r0, 0xA + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080E365E + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC6 + bl sub_80722F4 + movs r0, 0 + strh r0, [r4, 0x26] + b _080E361C +_080E3588: + ldrh r1, [r4, 0x30] + adds r1, 0x4 + movs r5, 0 + strh r1, [r4, 0x30] + ldr r2, _080E35C4 @ =gUnknown_825E074 + movs r3, 0x30 + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + negs r0, r0 + strh r0, [r4, 0x26] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080E365E + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xC6 + bl sub_80722F4 + strh r5, [r4, 0x30] + strh r5, [r4, 0x26] + b _080E361C + .align 2, 0 +_080E35C4: .4byte gUnknown_825E074 +_080E35C8: + ldrh r1, [r4, 0x30] + adds r1, 0x6 + movs r3, 0 + strh r1, [r4, 0x30] + ldr r2, _080E35F4 @ =gUnknown_825E074 + movs r5, 0x30 + ldrsh r0, [r4, r5] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + negs r0, r0 + strh r0, [r4, 0x26] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080E365E + strh r3, [r4, 0x30] + strh r3, [r4, 0x26] + b _080E361C + .align 2, 0 +_080E35F4: .4byte gUnknown_825E074 +_080E35F8: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080E365E + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xB9 + bl sub_80722F4 + movs r0, 0 + strh r0, [r4, 0x30] +_080E361C: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080E365E +_080E3624: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080E365E + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x32] + adds r1, 0x1 + strh r1, [r4, 0x32] + movs r0, 0x1 + ands r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + lsls r1, 2 + ldrb r2, [r3] + subs r0, 0x6 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bne _080E365E + adds r0, r4, 0 + bl sub_8072740 +_080E365E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E3534 + + thumb_func_start sub_80E3664 +sub_80E3664: @ 80E3664 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x1 + bl sub_8075FBC + lsls r0, 16 + lsrs r1, r0, 16 + str r1, [sp] + asrs r6, r0, 16 + cmp r6, 0 + blt _080E36A6 + movs r0, 0x1 + bl sub_8075FBC + lsls r0, 16 + lsrs r1, r0, 16 + mov r9, r1 + asrs r1, r0, 16 + cmp r1, 0 + bge _080E36B4 + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, _080E36B0 @ =gUnknown_202063C + adds r0, r1 + bl sub_8076030 +_080E36A6: + adds r0, r7, 0 + bl sub_8072760 + b _080E37BA + .align 2, 0 +_080E36B0: .4byte gUnknown_202063C +_080E36B4: + ldr r4, _080E3744 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r5, r0, r4 + ldrh r0, [r5, 0x24] + adds r0, 0x18 + movs r1, 0 + strh r0, [r5, 0x24] + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r6, r0, r4 + ldrh r0, [r6, 0x24] + subs r0, 0x18 + strh r0, [r6, 0x24] + strh r1, [r5, 0x2E] + strh r1, [r6, 0x2E] + strh r1, [r5, 0x30] + strh r1, [r6, 0x30] + strh r1, [r5, 0x32] + strh r1, [r6, 0x32] + movs r0, 0x10 + strh r0, [r5, 0x34] + ldr r0, _080E3748 @ =0x0000fff0 + strh r0, [r6, 0x34] + strh r1, [r5, 0x36] + movs r0, 0x80 + strh r0, [r6, 0x36] + movs r0, 0x18 + strh r0, [r5, 0x38] + strh r0, [r6, 0x38] + strh r7, [r5, 0x3A] + strh r7, [r6, 0x3A] + strh r1, [r5, 0x3C] + strh r1, [r6, 0x3C] + ldr r2, _080E374C @ =gUnknown_3005090 + lsls r3, r7, 2 + adds r0, r3, r7 + lsls r0, 3 + adds r0, r2 + movs r1, 0x2 + strh r1, [r0, 0x8] + ldr r0, _080E3750 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080E3754 @ =gUnknown_2037F1B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + mov r12, r4 + mov r10, r2 + mov r8, r3 + cmp r0, 0 + bne _080E3758 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + b _080E376E + .align 2, 0 +_080E3744: .4byte gUnknown_202063C +_080E3748: .4byte 0x0000fff0 +_080E374C: .4byte gUnknown_3005090 +_080E3750: .4byte gUnknown_2024018 +_080E3754: .4byte gUnknown_2037F1B +_080E3758: + adds r1, r5, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + adds r1, r6, 0 + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] +_080E376E: + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + mov r0, r12 + adds r4, r2, r0 + ldrb r1, [r4, 0x1] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r0, r1 + strb r0, [r4, 0x1] + ldr r1, [sp] + lsls r0, r1, 16 + asrs r0, 16 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + mov r0, r12 + adds r4, r1, r0 + ldrb r0, [r4, 0x1] + ands r3, r0 + strb r3, [r4, 0x1] + mov r3, r12 + adds r3, 0x1C + adds r2, r3 + ldr r0, _080E37CC @ =sub_80E37FC + str r0, [r2] + adds r1, r3 + str r0, [r1] + mov r1, r8 + adds r0, r1, r7 + lsls r0, 3 + add r0, r10 + ldr r1, _080E37D0 @ =sub_80E37D4 + str r1, [r0] +_080E37BA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E37CC: .4byte sub_80E37FC +_080E37D0: .4byte sub_80E37D4 + thumb_func_end sub_80E3664 + + thumb_func_start sub_80E37D4 +sub_80E37D4: @ 80E37D4 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080E37F8 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E37F2 + adds r0, r2, 0 + bl sub_8072760 +_080E37F2: + pop {r0} + bx r0 + .align 2, 0 +_080E37F8: .4byte gUnknown_3005090 + thumb_func_end sub_80E37D4 + + thumb_func_start sub_80E37FC +sub_80E37FC: @ 80E37FC + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E3846 + movs r0, 0 + strh r0, [r4, 0x30] + ldr r0, _080E3870 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080E3874 @ =gUnknown_2037F1B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E3846 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r1, r2, 29 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080E3846: + ldrh r0, [r4, 0x34] + ldrh r1, [r4, 0x36] + adds r0, r1 + movs r5, 0 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E3878 + cmp r0, 0x1 + beq _080E3890 + b _080E38CE + .align 2, 0 +_080E3870: .4byte gUnknown_2024018 +_080E3874: .4byte gUnknown_2037F1B +_080E3878: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + bne _080E38CE + strh r5, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080E38CE +_080E3890: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + cmp r0, 0 + ble _080E38CE + strh r5, [r4, 0x32] + ldrh r0, [r4, 0x38] + subs r0, 0x2 + strh r0, [r4, 0x38] + lsls r0, 16 + cmp r0, 0 + bge _080E38CE + ldr r3, _080E38D4 @ =gUnknown_3005090 + movs r2, 0x3C + ldrsh r1, [r4, r2] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8076030 +_080E38CE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E38D4: .4byte gUnknown_3005090 + thumb_func_end sub_80E37FC + + thumb_func_start sub_80E38D8 +sub_80E38D8: @ 80E38D8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r3, _080E3924 @ =gUnknown_2037F02 + movs r2, 0 + strh r2, [r3, 0xE] + ldr r1, _080E3928 @ =gUnknown_2037EFE + ldrb r0, [r1] + ldrb r1, [r1] + adds r0, r1, 0 + subs r0, 0x3D + lsls r0, 24 + lsrs r0, 24 + adds r2, r1, 0 + cmp r0, 0x1E + bhi _080E38FC + movs r0, 0x1 + strh r0, [r3, 0xE] +_080E38FC: + adds r0, r2, 0 + subs r0, 0x5C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6C + bhi _080E390C + movs r0, 0x2 + strh r0, [r3, 0xE] +_080E390C: + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0xC8 + bls _080E3918 + movs r0, 0x3 + strh r0, [r3, 0xE] +_080E3918: + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E3924: .4byte gUnknown_2037F02 +_080E3928: .4byte gUnknown_2037EFE + thumb_func_end sub_80E38D8 + + thumb_func_start sub_80E392C +sub_80E392C: @ 80E392C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080E395C @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x4 + bls _080E3952 + b _080E3E6C +_080E3952: + lsls r0, 2 + ldr r1, _080E3960 @ =_080E3964 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E395C: .4byte gUnknown_3005090 +_080E3960: .4byte _080E3964 + .align 2, 0 +_080E3964: + .4byte _080E3978 + .4byte _080E3A2C + .4byte _080E3BEC + .4byte _080E3D0C + .4byte _080E3D90 +_080E3978: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080E39C4 @ =gUnknown_3005090 + mov r2, r8 + lsls r4, r2, 2 + adds r0, r4, r2 + lsls r0, 3 + adds r6, r0, r1 + movs r3, 0x80 + lsls r3, 4 + adds r0, r3, 0 + ldrh r1, [r6, 0xA] + adds r0, r1 + strh r0, [r6, 0xA] + ldr r0, _080E39C8 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + mov r9, r4 + cmp r0, 0 + bne _080E39D0 + ldr r2, _080E39CC @ =gUnknown_202063C + lsls r3, r7, 4 + adds r1, r3, r7 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 24 + ldrh r4, [r1, 0x24] + adds r0, r4 + strh r0, [r1, 0x24] + b _080E39EA + .align 2, 0 +_080E39C4: .4byte gUnknown_3005090 +_080E39C8: .4byte gUnknown_2037F1A +_080E39CC: .4byte gUnknown_202063C +_080E39D0: + ldr r3, _080E3A24 @ =gUnknown_202063C + lsls r4, r7, 4 + adds r2, r4, r7 + lsls r2, 2 + adds r2, r3 + ldrh r1, [r6, 0xA] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + adds r2, r3, 0 + adds r3, r4, 0 +_080E39EA: + ldr r1, _080E3A28 @ =gUnknown_3005090 + mov r0, r9 + add r0, r8 + lsls r0, 3 + adds r4, r0, r1 + ldrb r0, [r4, 0xA] + strh r0, [r4, 0xA] + adds r1, r3, r7 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x24] + ldrh r1, [r1, 0x20] + adds r0, r1 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 14 + adds r0, r1 + movs r1, 0x98 + lsls r1, 17 + cmp r0, r1 + bhi _080E3A16 + b _080E3E6C +_080E3A16: + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E3E6C + .align 2, 0 +_080E3A24: .4byte gUnknown_202063C +_080E3A28: .4byte gUnknown_3005090 +_080E3A2C: + ldr r4, _080E3A90 @ =gUnknown_2037F1A + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E3ACC + ldr r7, _080E3A94 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080E3A98 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + mov r10, r0 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0x1 + bl sub_803FBE8 + mov r9, r0 + ldr r0, _080E3A9C @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080E3AA0 + lsls r0, r2, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + b _080E3AA2 + .align 2, 0 +_080E3A90: .4byte gUnknown_2037F1A +_080E3A94: .4byte gUnknown_2023BCE +_080E3A98: .4byte gUnknown_2024284 +_080E3A9C: .4byte gUnknown_2024018 +_080E3AA0: + ldrh r5, [r1, 0x2] +_080E3AA2: + movs r0, 0x1 + bl sub_80749D4 + ldr r2, _080E3AC8 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + movs r7, 0 + movs r6, 0x88 + lsls r6, 1 + b _080E3B54 + .align 2, 0 +_080E3AC8: .4byte gUnknown_202063C +_080E3ACC: + ldr r7, _080E3B24 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080E3B28 @ =gUnknown_202402C + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + mov r10, r0 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0x1 + bl sub_803FBE8 + mov r9, r0 + ldr r0, _080E3B2C @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080E3B30 + lsls r0, r2, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + b _080E3B32 + .align 2, 0 +_080E3B24: .4byte gUnknown_2023BCE +_080E3B28: .4byte gUnknown_202402C +_080E3B2C: .4byte gUnknown_2024018 +_080E3B30: + ldrh r5, [r1, 0x2] +_080E3B32: + movs r0, 0x1 + bl sub_80749D4 + ldr r2, _080E3BD0 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + movs r7, 0x1 + ldr r6, _080E3BD4 @ =0x0000ffe0 +_080E3B54: + ldr r0, _080E3BD8 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + lsls r3, r6, 16 + asrs r3, 16 + str r0, [sp] + str r4, [sp, 0x4] + mov r2, r10 + str r2, [sp, 0x8] + mov r4, r9 + str r4, [sp, 0xC] + ldr r4, _080E3BDC @ =gUnknown_2037F1A + ldrb r0, [r4] + str r0, [sp, 0x10] + movs r0, 0 + str r0, [sp, 0x14] + adds r0, r5, 0 + adds r1, r7, 0 + movs r2, 0 + bl sub_80768D0 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080E3BE0 @ =gUnknown_2024018 + ldr r1, [r0] + ldrb r0, [r4] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _080E3BBE + ldr r1, _080E3BD0 @ =gUnknown_202063C + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + lsls r0, 4 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + orrs r0, r1 + ldr r3, _080E3BE4 @ =0x00007fff + movs r1, 0x10 + movs r2, 0x6 + bl sub_8045274 +_080E3BBE: + ldr r0, _080E3BE8 @ =gUnknown_3005090 + mov r3, r8 + lsls r1, r3, 2 + add r1, r8 + lsls r1, 3 + adds r1, r0 + strh r5, [r1, 0x26] + b _080E3D82 + .align 2, 0 +_080E3BD0: .4byte gUnknown_202063C +_080E3BD4: .4byte 0x0000ffe0 +_080E3BD8: .4byte gUnknown_2037F1B +_080E3BDC: .4byte gUnknown_2037F1A +_080E3BE0: .4byte gUnknown_2024018 +_080E3BE4: .4byte 0x00007fff +_080E3BE8: .4byte gUnknown_3005090 +_080E3BEC: + ldr r1, _080E3C38 @ =gUnknown_3005090 + mov r0, r8 + lsls r4, r0, 2 + adds r0, r4, r0 + lsls r0, 3 + adds r6, r0, r1 + ldrh r0, [r6, 0x26] + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x80 + lsls r1, 4 + adds r0, r1, 0 + ldrh r2, [r6, 0xA] + adds r0, r2 + strh r0, [r6, 0xA] + ldr r0, _080E3C3C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + mov r9, r4 + cmp r0, 0 + bne _080E3C44 + ldr r3, _080E3C40 @ =gUnknown_202063C + lsls r4, r5, 4 + adds r2, r4, r5 + lsls r2, 2 + adds r2, r3 + ldrh r1, [r6, 0xA] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + adds r2, r3, 0 + adds r3, r4, 0 + b _080E3C5A + .align 2, 0 +_080E3C38: .4byte gUnknown_3005090 +_080E3C3C: .4byte gUnknown_2037F1A +_080E3C40: .4byte gUnknown_202063C +_080E3C44: + ldr r2, _080E3CA8 @ =gUnknown_202063C + lsls r3, r5, 4 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 24 + ldrh r4, [r1, 0x24] + adds r0, r4 + strh r0, [r1, 0x24] +_080E3C5A: + ldr r1, _080E3CAC @ =gUnknown_3005090 + mov r0, r9 + add r0, r8 + lsls r0, 3 + adds r6, r0, r1 + ldrb r0, [r6, 0xA] + strh r0, [r6, 0xA] + adds r1, r3, r5 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x24] + ldrh r1, [r1, 0x20] + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + movs r1, 0x24 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080E3CDA + ldr r0, _080E3CB0 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E3CB8 + lsls r4, r5, 16 + asrs r4, 16 + ldr r0, _080E3CB4 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bge _080E3CDA + b _080E3CCE + .align 2, 0 +_080E3CA8: .4byte gUnknown_202063C +_080E3CAC: .4byte gUnknown_3005090 +_080E3CB0: .4byte gUnknown_2037F1A +_080E3CB4: .4byte gUnknown_2037F1B +_080E3CB8: + lsls r4, r5, 16 + asrs r4, 16 + ldr r0, _080E3CFC @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + ble _080E3CDA +_080E3CCE: + ldrh r0, [r6, 0x24] + adds r0, 0x1 + strh r0, [r6, 0x24] + ldr r1, _080E3D00 @ =gUnknown_2037F02 + ldr r0, _080E3D04 @ =0x0000ffff + strh r0, [r1, 0xE] +_080E3CDA: + lsls r0, r5, 16 + movs r2, 0x80 + lsls r2, 14 + adds r0, r2 + movs r1, 0x98 + lsls r1, 17 + cmp r0, r1 + bhi _080E3CEC + b _080E3E6C +_080E3CEC: + ldr r0, _080E3D08 @ =gUnknown_3005090 + mov r1, r9 + add r1, r8 + lsls r1, 3 + adds r1, r0 + movs r0, 0 + strh r0, [r1, 0xA] + b _080E3D82 + .align 2, 0 +_080E3CFC: .4byte gUnknown_2037F1B +_080E3D00: .4byte gUnknown_2037F02 +_080E3D04: .4byte 0x0000ffff +_080E3D08: .4byte gUnknown_3005090 +_080E3D0C: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080E3D58 @ =gUnknown_3005090 + mov r3, r8 + lsls r4, r3, 2 + adds r0, r4, r3 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x26] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r5, _080E3D5C @ =gUnknown_202063C + adds r0, r5 + bl sub_8076B20 + ldr r0, _080E3D60 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + mov r9, r4 + cmp r0, 0 + bne _080E3D64 + lsls r1, r7, 4 + adds r1, r7 + lsls r1, 2 + adds r1, r5 + ldrh r0, [r1, 0x20] + negs r0, r0 + subs r0, 0x20 + strh r0, [r1, 0x24] + b _080E3D78 + .align 2, 0 +_080E3D58: .4byte gUnknown_3005090 +_080E3D5C: .4byte gUnknown_202063C +_080E3D60: .4byte gUnknown_2037F1A +_080E3D64: + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + adds r0, r5 + ldrh r2, [r0, 0x20] + movs r4, 0x88 + lsls r4, 1 + adds r1, r4, 0 + subs r1, r2 + strh r1, [r0, 0x24] +_080E3D78: + ldr r0, _080E3D8C @ =gUnknown_3005090 + mov r1, r9 + add r1, r8 + lsls r1, 3 + adds r1, r0 +_080E3D82: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080E3E6C + .align 2, 0 +_080E3D8C: .4byte gUnknown_3005090 +_080E3D90: + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080E3E04 @ =gUnknown_3005090 + mov r0, r8 + lsls r4, r0, 2 + adds r0, r4, r0 + lsls r0, 3 + adds r2, r0, r1 + movs r1, 0x80 + lsls r1, 4 + adds r0, r1, 0 + ldrh r3, [r2, 0xA] + adds r0, r3 + strh r0, [r2, 0xA] + ldr r0, _080E3E08 @ =gUnknown_2037F1A + mov r10, r0 + ldrb r0, [r0] + str r2, [sp, 0x18] + bl sub_80751C4 + lsls r0, 24 + mov r9, r4 + ldr r2, [sp, 0x18] + cmp r0, 0 + bne _080E3E10 + ldr r1, _080E3E0C @ =gUnknown_202063C + lsls r5, r7, 4 + adds r0, r5, r7 + lsls r0, 2 + adds r6, r0, r1 + ldrh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r6, 0x24] + adds r0, r1 + strh r0, [r6, 0x24] + movs r2, 0x24 + ldrsh r4, [r6, r2] + movs r3, 0x20 + ldrsh r0, [r6, r3] + adds r4, r0 + mov r1, r10 + ldrb r0, [r1] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r3, r5, 0 + cmp r4, r0 + blt _080E3E48 + movs r2, 0 + strh r2, [r6, 0x24] + b _080E3E48 + .align 2, 0 +_080E3E04: .4byte gUnknown_3005090 +_080E3E08: .4byte gUnknown_2037F1A +_080E3E0C: .4byte gUnknown_202063C +_080E3E10: + ldr r1, _080E3E7C @ =gUnknown_202063C + lsls r5, r7, 4 + adds r0, r5, r7 + lsls r0, 2 + adds r6, r0, r1 + ldrh r1, [r2, 0xA] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r6, 0x24] + subs r0, r1 + strh r0, [r6, 0x24] + movs r3, 0x24 + ldrsh r4, [r6, r3] + movs r1, 0x20 + ldrsh r0, [r6, r1] + adds r4, r0 + mov r2, r10 + ldrb r0, [r2] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r3, r5, 0 + cmp r4, r0 + bgt _080E3E48 + movs r4, 0 + strh r4, [r6, 0x24] +_080E3E48: + ldr r1, _080E3E80 @ =gUnknown_3005090 + mov r0, r9 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0xA] + strh r1, [r0, 0xA] + ldr r1, _080E3E7C @ =gUnknown_202063C + adds r0, r3, r7 + lsls r0, 2 + adds r0, r1 + movs r1, 0x24 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E3E6C + mov r0, r8 + bl sub_8072760 +_080E3E6C: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E3E7C: .4byte gUnknown_202063C +_080E3E80: .4byte gUnknown_3005090 + thumb_func_end sub_80E392C + + thumb_func_start sub_80E3E84 +sub_80E3E84: @ 80E3E84 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E3E96 + cmp r0, 0x1 + beq _080E3F36 + b _080E3FB8 +_080E3E96: + ldr r0, _080E3F14 @ =gUnknown_2037F02 + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080E3F28 + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x73 + bl sub_80722F4 + ldr r0, _080E3F18 @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + strh r0, [r4, 0x22] + ldr r0, _080E3F1C @ =0x0000ffe0 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _080E3F20 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E3FB8 + movs r0, 0x1 + bl sub_80749D4 + ldr r2, _080E3F24 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + b _080E3FB8 + .align 2, 0 +_080E3F14: .4byte gUnknown_2037F02 +_080E3F18: .4byte gUnknown_2037F1B +_080E3F1C: .4byte 0x0000ffe0 +_080E3F20: .4byte gUnknown_2037F1A +_080E3F24: .4byte gUnknown_202063C +_080E3F28: + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _080E3FB8 +_080E3F36: + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x30] + adds r0, r2, 0x5 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + ble _080E3F6A + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + adds r0, r2, 0 + subs r0, 0x7A + strh r0, [r4, 0x30] +_080E3F6A: + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldr r0, _080E3F94 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E3F98 + ldrh r2, [r4, 0x32] + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x24] + subs r0, r1 + strh r0, [r4, 0x24] + adds r1, r2, 0 + b _080E3FA4 + .align 2, 0 +_080E3F94: .4byte gUnknown_2037F1A +_080E3F98: + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + ldrh r2, [r4, 0x24] + adds r0, r2 + strh r0, [r4, 0x24] +_080E3FA4: + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x2 + bne _080E3FB8 + adds r0, r4, 0 + bl sub_8072740 +_080E3FB8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E3E84 + + thumb_func_start sub_80E3FC0 +sub_80E3FC0: @ 80E3FC0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080E3FE8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x26 + ldrsh r0, [r0, r2] + adds r3, r1, 0 + cmp r0, 0x4 + bls _080E3FDC + b _080E412E +_080E3FDC: + lsls r0, 2 + ldr r1, _080E3FEC @ =_080E3FF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E3FE8: .4byte gUnknown_3005090 +_080E3FEC: .4byte _080E3FF0 + .align 2, 0 +_080E3FF0: + .4byte _080E4004 + .4byte _080E4054 + .4byte _080E40B0 + .4byte _080E40C8 + .4byte _080E412E +_080E4004: + ldr r0, _080E4048 @ =gUnknown_2037F1A + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r0, _080E404C @ =gUnknown_2037F1B + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + ldr r1, _080E4050 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + movs r0, 0x6 + strh r0, [r1, 0x8] + cmp r5, r2 + ble _080E403A + negs r0, r0 + strh r0, [r1, 0x8] +_080E403A: + strh r5, [r1, 0xA] + strh r2, [r1, 0xC] + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080E414C + .align 2, 0 +_080E4048: .4byte gUnknown_2037F1A +_080E404C: .4byte gUnknown_2037F1B +_080E4050: .4byte gUnknown_3005090 +_080E4054: + ldr r1, _080E4090 @ =gUnknown_2023D44 + ldr r0, _080E4094 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r1, _080E4098 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r1 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r3 + ldrh r0, [r2, 0x8] + ldrh r3, [r1, 0x24] + adds r0, r3 + strh r0, [r1, 0x24] + movs r3, 0x8 + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080E409C + movs r3, 0x20 + ldrsh r0, [r1, r3] + movs r3, 0x24 + ldrsh r1, [r1, r3] + adds r0, r1 + movs r3, 0xC + ldrsh r1, [r2, r3] + b _080E4122 + .align 2, 0 +_080E4090: .4byte gUnknown_2023D44 +_080E4094: .4byte gUnknown_2037F1A +_080E4098: .4byte gUnknown_202063C +_080E409C: + movs r3, 0x20 + ldrsh r0, [r1, r3] + movs r3, 0x24 + ldrsh r1, [r1, r3] + adds r0, r1 + movs r3, 0xC + ldrsh r1, [r2, r3] + cmp r0, r1 + bgt _080E414C + b _080E4126 +_080E40B0: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r3 + movs r2, 0x8 + ldrsh r1, [r0, r2] + negs r1, r1 + strh r1, [r0, 0x8] + ldrh r1, [r0, 0x26] + adds r1, 0x1 + strh r1, [r0, 0x26] + b _080E414C +_080E40C8: + ldr r1, _080E4108 @ =gUnknown_2023D44 + ldr r0, _080E410C @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r1, _080E4110 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r1 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r3 + ldrh r0, [r2, 0x8] + ldrh r3, [r1, 0x24] + adds r0, r3 + strh r0, [r1, 0x24] + movs r3, 0x8 + ldrsh r0, [r2, r3] + cmp r0, 0 + bge _080E4114 + movs r3, 0x20 + ldrsh r0, [r1, r3] + movs r3, 0x24 + ldrsh r1, [r1, r3] + adds r0, r1 + movs r3, 0xA + ldrsh r1, [r2, r3] + cmp r0, r1 + bgt _080E414C + b _080E4126 + .align 2, 0 +_080E4108: .4byte gUnknown_2023D44 +_080E410C: .4byte gUnknown_2037F1A +_080E4110: .4byte gUnknown_202063C +_080E4114: + movs r3, 0x20 + ldrsh r0, [r1, r3] + movs r3, 0x24 + ldrsh r1, [r1, r3] + adds r0, r1 + movs r3, 0xA + ldrsh r1, [r2, r3] +_080E4122: + cmp r0, r1 + blt _080E414C +_080E4126: + ldrh r0, [r2, 0x26] + adds r0, 0x1 + strh r0, [r2, 0x26] + b _080E414C +_080E412E: + ldr r1, _080E4154 @ =gUnknown_2023D44 + ldr r0, _080E4158 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r1, _080E415C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x24] + adds r0, r4, 0 + bl sub_8072760 +_080E414C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E4154: .4byte gUnknown_2023D44 +_080E4158: .4byte gUnknown_2037F1A +_080E415C: .4byte gUnknown_202063C + thumb_func_end sub_80E3FC0 + + thumb_func_start sub_80E4160 +sub_80E4160: @ 80E4160 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E41C8 @ =gUnknown_3005090 + adds r4, r1, r0 + movs r0, 0 + bl sub_80749D4 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0xE] + ldr r0, _080E41CC @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080E4194 + movs r1, 0x1 +_080E4194: + strh r1, [r4, 0x10] + ldr r2, _080E41D0 @ =gUnknown_202063C + movs r0, 0xE + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x14] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x20] + strh r0, [r4, 0x12] + strh r5, [r4, 0x1A] + strh r5, [r4, 0x1E] + movs r0, 0x1 + strh r0, [r4, 0x1C] + strh r5, [r4, 0x20] + ldr r0, _080E41D4 @ =sub_80E41D8 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E41C8: .4byte gUnknown_3005090 +_080E41CC: .4byte gUnknown_2037F1A +_080E41D0: .4byte gUnknown_202063C +_080E41D4: .4byte sub_80E41D8 + thumb_func_end sub_80E4160 + + thumb_func_start sub_80E41D8 +sub_80E41D8: @ 80E41D8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E41FC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080E4280 + cmp r0, 0x1 + bgt _080E4200 + cmp r0, 0 + beq _080E4206 + b _080E42D6 + .align 2, 0 +_080E41FC: .4byte gUnknown_3005090 +_080E4200: + cmp r0, 0x2 + beq _080E42D0 + b _080E42D6 +_080E4206: + ldrh r0, [r4, 0x1E] + adds r0, 0x8 + movs r2, 0xFF + ands r0, r2 + strh r0, [r4, 0x1E] + ldr r5, _080E4278 @ =gUnknown_202063C + movs r6, 0xE + ldrsh r0, [r4, r6] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldr r3, _080E427C @ =gUnknown_825E074 + movs r6, 0x1E + ldrsh r0, [r4, r6] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 21 + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x1A] + adds r0, 0x2 + ands r0, r2 + strh r0, [r4, 0x1A] + movs r1, 0xE + ldrsh r0, [r4, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + movs r6, 0x1A + ldrsh r0, [r4, r6] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + ldrh r1, [r4, 0x10] + muls r0, r1 + ldrh r1, [r4, 0x12] + adds r0, r1 + strh r0, [r2, 0x20] + movs r6, 0x1A + ldrsh r0, [r4, r6] + cmp r0, 0 + bne _080E42D6 + movs r0, 0xE + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r4, 0x12] + strh r1, [r0, 0x20] + b _080E42C0 + .align 2, 0 +_080E4278: .4byte gUnknown_202063C +_080E427C: .4byte gUnknown_825E074 +_080E4280: + ldrh r0, [r4, 0x1E] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x1E] + ldr r3, _080E42C8 @ =gUnknown_202063C + movs r1, 0xE + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldr r2, _080E42CC @ =gUnknown_825E074 + movs r5, 0x1E + ldrsh r0, [r4, r5] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 21 + strh r0, [r1, 0x24] + movs r6, 0x1E + ldrsh r2, [r4, r6] + cmp r2, 0 + bne _080E42D6 + movs r1, 0xE + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + strh r2, [r1, 0x24] +_080E42C0: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E42D6 + .align 2, 0 +_080E42C8: .4byte gUnknown_202063C +_080E42CC: .4byte gUnknown_825E074 +_080E42D0: + adds r0, r2, 0 + bl sub_8072760 +_080E42D6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E41D8 + + thumb_func_start sub_80E42DC +sub_80E42DC: @ 80E42DC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E4330 @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl sub_8044E30 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080E4322 + adds r0, r4, 0 + bl sub_8072740 +_080E4322: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4330: .4byte gUnknown_2037F1B + thumb_func_end sub_80E42DC + + thumb_func_start sub_80E4334 +sub_80E4334: @ 80E4334 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E436C @ =gUnknown_2037F1B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E4378 + ldr r2, _080E4370 @ =gUnknown_2037F02 + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080E4374 @ =0x0000fff5 + strh r0, [r4, 0x2E] + movs r0, 0xC0 + strh r0, [r4, 0x30] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + b _080E4392 + .align 2, 0 +_080E436C: .4byte gUnknown_2037F1B +_080E4370: .4byte gUnknown_2037F02 +_080E4374: .4byte 0x0000fff5 +_080E4378: + movs r0, 0xB + strh r0, [r4, 0x2E] + movs r0, 0xC0 + strh r0, [r4, 0x30] + ldr r1, _080E439C @ =gUnknown_2037F02 + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_080E4392: + ldr r0, _080E43A0 @ =sub_80E42DC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E439C: .4byte gUnknown_2037F02 +_080E43A0: .4byte sub_80E42DC + thumb_func_end sub_80E4334 + + thumb_func_start sub_80E43A4 +sub_80E43A4: @ 80E43A4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E43E8 @ =gUnknown_2037F1A + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _080E43CE + movs r0, 0x10 + strh r0, [r5, 0x22] +_080E43CE: + movs r0, 0 + strh r0, [r5, 0x3A] + movs r1, 0x10 + strh r1, [r5, 0x3C] + ldr r0, _080E43EC @ =sub_80E43F0 + str r0, [r5, 0x1C] + lsls r1, 8 + movs r0, 0x52 + bl sub_8000A38 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E43E8: .4byte gUnknown_2037F1A +_080E43EC: .4byte sub_80E43F0 + thumb_func_end sub_80E43A4 + + thumb_func_start sub_80E43F0 +sub_80E43F0: @ 80E43F0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080E4468 + cmp r1, 0x1 + bgt _080E4406 + cmp r1, 0 + beq _080E4410 + b _080E44E4 +_080E4406: + cmp r1, 0x2 + beq _080E447E + cmp r1, 0x3 + beq _080E44DE + b _080E44E4 +_080E4410: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E44E4 + strh r1, [r4, 0x2E] + ldrh r1, [r4, 0x30] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E443A + ldrh r2, [r4, 0x3A] + movs r3, 0x3A + ldrsh r0, [r4, r3] + cmp r0, 0xF + bgt _080E4448 + adds r0, r2, 0x1 + strh r0, [r4, 0x3A] + b _080E4448 +_080E443A: + ldrh r2, [r4, 0x3C] + movs r3, 0x3C + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080E4448 + subs r0, r2, 0x1 + strh r0, [r4, 0x3C] +_080E4448: + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E44E4 + b _080E44D6 +_080E4468: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080E44E4 + strh r1, [r4, 0x2E] + strh r1, [r4, 0x30] + b _080E44D6 +_080E447E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E44E4 + movs r0, 0 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E44AA + ldrh r2, [r4, 0x3A] + movs r3, 0x3A + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080E44B8 + subs r0, r2, 0x1 + strh r0, [r4, 0x3A] + b _080E44B8 +_080E44AA: + ldrh r2, [r4, 0x3C] + movs r3, 0x3C + ldrsh r0, [r4, r3] + cmp r0, 0xF + bgt _080E44B8 + adds r0, r2, 0x1 + strh r0, [r4, 0x3C] +_080E44B8: + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x3C] + lsls r1, 8 + ldrh r0, [r4, 0x3A] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080E44E4 +_080E44D6: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + b _080E44E4 +_080E44DE: + adds r0, r4, 0 + bl sub_8074EE0 +_080E44E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E43F0 + + thumb_func_start sub_80E44EC +sub_80E44EC: @ 80E44EC + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080E4508 @ =gUnknown_2037F02 + movs r0, 0 + strh r0, [r2, 0xE] + ldr r0, _080E450C @ =gUnknown_2037F00 + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _080E4510 + movs r0, 0x1 + b _080E4532 + .align 2, 0 +_080E4508: .4byte gUnknown_2037F02 +_080E450C: .4byte gUnknown_2037F00 +_080E4510: + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _080E451C + movs r0, 0x2 + b _080E4532 +_080E451C: + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _080E4528 + movs r0, 0x3 + b _080E4532 +_080E4528: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E4534 + movs r0, 0x4 +_080E4532: + strh r0, [r2, 0xE] +_080E4534: + adds r0, r3, 0 + bl sub_8072760 + pop {r0} + bx r0 + thumb_func_end sub_80E44EC + + thumb_func_start sub_80E4540 +sub_80E4540: @ 80E4540 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080E4578 @ =gUnknown_3005090 + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x8] + ldr r0, _080E457C @ =gUnknown_2037F02 + ldrb r0, [r0] + bl sub_80749D4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x26] + ldr r2, _080E4580 @ =gUnknown_83FF7A8 + adds r0, r4, 0 + bl sub_80762D0 + ldr r0, _080E4584 @ =sub_80E4588 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4578: .4byte gUnknown_3005090 +_080E457C: .4byte gUnknown_2037F02 +_080E4580: .4byte gUnknown_83FF7A8 +_080E4584: .4byte sub_80E4588 + thumb_func_end sub_80E4540 + + thumb_func_start sub_80E4588 +sub_80E4588: @ 80E4588 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r2, _080E45E0 @ =gUnknown_3005090 + adds r3, r0, r2 + ldrh r0, [r3, 0x8] + adds r1, r0, 0x1 + movs r5, 0 + strh r1, [r3, 0x8] + subs r0, 0x10 + lsls r0, 16 + lsrs r0, 16 + adds r6, r2, 0 + cmp r0, 0x16 + bhi _080E45EC + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080E45FC + strh r5, [r3, 0xA] + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + movs r5, 0x1 + ands r0, r5 + cmp r0, 0 + bne _080E45EC + ldr r2, _080E45E4 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080E45E8 @ =0x0000ffff + strh r1, [r0, 0x24] + b _080E45FC + .align 2, 0 +_080E45E0: .4byte gUnknown_3005090 +_080E45E4: .4byte gUnknown_202063C +_080E45E8: .4byte 0x0000ffff +_080E45EC: + ldr r2, _080E461C @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] +_080E45FC: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r6 + bl sub_8076308 + lsls r0, 24 + cmp r0, 0 + bne _080E4614 + adds r0, r4, 0 + bl sub_8072760 +_080E4614: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E461C: .4byte gUnknown_202063C + thumb_func_end sub_80E4588 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80EEC0C.s b/asm/battle_anim_80EEC0C.s new file mode 100644 index 000000000..6d609b65c --- /dev/null +++ b/asm/battle_anim_80EEC0C.s @@ -0,0 +1,6299 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80EEC0C +sub_80EEC0C: @ 80EEC0C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x10] + ldr r0, _080EEDB4 @ =gUnknown_2037F1A + ldrb r4, [r0] + ldr r0, _080EEDB8 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080EEDBC @ =gUnknown_2022986 + strh r1, [r0] + ldr r1, _080EEDC0 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _080EEDC4 @ =0x00003f3d + movs r0, 0x4A + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080EEDC8 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80BC1F8 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80BC1F8 + ldr r0, _080EEDCC @ =gUnknown_3004FF0 + adds r4, r0 + ldrb r0, [r4] + ldr r1, _080EEDD0 @ =gUnknown_202063C + mov r9, r1 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r9 + ldrb r7, [r4, 0x6] + ldrh r6, [r4, 0x38] + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080EEDD4 @ =nullsub_8 + bl sub_8044EF8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + ldr r0, _080EEDD4 @ =nullsub_8 + bl sub_8044EF8 + mov r10, r0 + mov r2, r10 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + ldrb r1, [r4, 0x5] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x4 + mov r8, r1 + mov r2, r8 + orrs r0, r2 + strb r0, [r4, 0x5] + lsls r5, r7, 4 + adds r5, r7 + lsls r5, 2 + add r5, r9 + ldrb r1, [r5, 0x5] + adds r0, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + add r1, r9 + ldrb r2, [r1, 0x5] + adds r0, r3, 0 + ands r0, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, 0x5] + ldr r0, [sp, 0x14] + lsls r6, r0, 4 + adds r6, r0 + lsls r6, 2 + mov r1, r9 + adds r7, r6, r1 + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0x44 + str r3, [sp, 0x18] + bl memcpy + mov r2, r10 + lsls r4, r2, 4 + add r4, r10 + lsls r4, 2 + adds r0, r4, 0 + add r0, r9 + mov r8, r0 + adds r1, r5, 0 + movs r2, 0x44 + bl memcpy + ldrb r1, [r7, 0x1] + ldr r3, [sp, 0x18] + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r7, 0x1] + mov r2, r8 + ldrb r0, [r2, 0x1] + ands r3, r0 + orrs r3, r1 + strb r3, [r2, 0x1] + movs r0, 0x1C + add r9, r0 + add r6, r9 + ldr r1, _080EEDD4 @ =nullsub_8 + str r1, [r6] + add r4, r9 + str r1, [r4] + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080EEDD8 @ =gUnknown_8D2EC70 + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080EEDDC @ =gUnknown_8D2EC24 + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080EEDE0 @ =gUnknown_8D2DF78 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl sub_80703A8 + ldr r1, _080EEDE4 @ =gUnknown_2022978 + ldrh r0, [r7, 0x20] + negs r0, r0 + adds r0, 0x20 + strh r0, [r1] + ldr r1, _080EEDE8 @ =gUnknown_202297A + ldrh r0, [r7, 0x22] + negs r0, r0 + subs r0, 0x20 + strh r0, [r1] + ldr r1, _080EEDEC @ =gUnknown_3005090 + ldr r2, [sp, 0x10] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0xA0 + lsls r1, 2 + strh r1, [r0, 0xA] + mov r1, sp + ldrh r1, [r1, 0x14] + strh r1, [r0, 0x8] + mov r2, r10 + strh r2, [r0, 0xC] + ldr r1, _080EEDF0 @ =sub_80EEDF4 + str r1, [r0] + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEDB4: .4byte gUnknown_2037F1A +_080EEDB8: .4byte gUnknown_2022984 +_080EEDBC: .4byte gUnknown_2022986 +_080EEDC0: .4byte 0x00003f3f +_080EEDC4: .4byte 0x00003f3d +_080EEDC8: .4byte 0x00003f42 +_080EEDCC: .4byte gUnknown_3004FF0 +_080EEDD0: .4byte gUnknown_202063C +_080EEDD4: .4byte nullsub_8 +_080EEDD8: .4byte gUnknown_8D2EC70 +_080EEDDC: .4byte gUnknown_8D2EC24 +_080EEDE0: .4byte gUnknown_8D2DF78 +_080EEDE4: .4byte gUnknown_2022978 +_080EEDE8: .4byte gUnknown_202297A +_080EEDEC: .4byte gUnknown_3005090 +_080EEDF0: .4byte sub_80EEDF4 + thumb_func_end sub_80EEC0C + + thumb_func_start sub_80EEDF4 +sub_80EEDF4: @ 80EEDF4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080EEE3C @ =gUnknown_2037F1A + ldrb r0, [r0] + mov r8, r0 + ldr r1, _080EEE40 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r5, r0, r1 + ldrh r1, [r5, 0xA] + ldrh r0, [r5, 0x22] + adds r1, r0 + movs r3, 0 + strh r1, [r5, 0x22] + ldr r2, _080EEE44 @ =gUnknown_202297A + lsls r0, r1, 16 + lsrs r0, 24 + ldrh r4, [r2] + adds r0, r4 + strh r0, [r2] + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x22] + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080EEE84 + cmp r0, 0x1 + bgt _080EEE48 + cmp r0, 0 + beq _080EEE4E + b _080EEFA8 + .align 2, 0 +_080EEE3C: .4byte gUnknown_2037F1A +_080EEE40: .4byte gUnknown_3005090 +_080EEE44: .4byte gUnknown_202297A +_080EEE48: + cmp r0, 0x2 + beq _080EEE9C + b _080EEFA8 +_080EEE4E: + ldrh r0, [r5, 0x1E] + adds r1, r0, 0x1 + strh r1, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bgt _080EEE5E + b _080EEFA8 +_080EEE5E: + strh r3, [r5, 0x1E] + ldrh r1, [r5, 0x20] + adds r1, 0x1 + strh r1, [r5, 0x20] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r2, 0x20 + ldrsh r0, [r5, r2] + cmp r0, 0x8 + beq _080EEE82 + b _080EEFA8 +_080EEE82: + b _080EEE94 +_080EEE84: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + beq _080EEE94 + b _080EEFA8 +_080EEE94: + ldrh r0, [r5, 0x26] + adds r0, 0x1 + strh r0, [r5, 0x26] + b _080EEFA8 +_080EEE9C: + ldrh r0, [r5, 0x1E] + adds r1, r0, 0x1 + strh r1, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080EEFA8 + strh r3, [r5, 0x1E] + ldrh r1, [r5, 0x20] + subs r1, 0x1 + strh r1, [r5, 0x20] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x20 + ldrsh r4, [r5, r0] + cmp r4, 0 + bne _080EEFA8 + movs r0, 0 + bl sub_8073128 + ldr r0, _080EEFB4 @ =gUnknown_2022984 + strh r4, [r0] + ldr r0, _080EEFB8 @ =gUnknown_2022986 + strh r4, [r0] + ldr r4, _080EEFBC @ =0x00003f3f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080EEF00 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_80BC1F8 +_080EEF00: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + eors r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r4, 0x8 + ldrsh r1, [r5, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r6, _080EEFC0 @ =gUnknown_202063C + adds r0, r6 + bl sub_8007280 + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80BC1F8 + ldr r0, _080EEFC4 @ =gUnknown_3004FF0 + add r0, r8 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r2, [r1, 0x6] + mov r8, r2 + ldrh r4, [r1, 0x38] + lsls r4, 24 + lsrs r4, 24 + ldrb r3, [r1, 0x5] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + movs r5, 0x4 + orrs r0, r5 + strb r0, [r1, 0x5] + mov r0, r8 + lsls r1, r0, 4 + add r1, r8 + lsls r1, 2 + adds r1, r6 + ldrb r3, [r1, 0x5] + adds r0, r2, 0 + ands r0, r3 + orrs r0, r5 + strb r0, [r1, 0x5] + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0, 0x5] + ands r2, r1 + orrs r2, r5 + strb r2, [r0, 0x5] + adds r0, r7, 0 + bl sub_8072760 +_080EEFA8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEFB4: .4byte gUnknown_2022984 +_080EEFB8: .4byte gUnknown_2022986 +_080EEFBC: .4byte 0x00003f3f +_080EEFC0: .4byte gUnknown_202063C +_080EEFC4: .4byte gUnknown_3004FF0 + thumb_func_end sub_80EEDF4 + + thumb_func_start sub_80EEFC8 +sub_80EEFC8: @ 80EEFC8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080EF0A0 @ =gUnknown_3004FF0 + adds r2, r0 + ldrb r0, [r2] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r0, _080EF0A4 @ =gUnknown_202063C + adds r5, r0 + ldrb r1, [r5, 0x6] + mov r10, r1 + ldrh r4, [r5, 0x38] + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080EF0A8 @ =0x0000d709 + bl sub_80089B8 + mov r2, r9 + strb r0, [r2] + ldr r0, _080EF0AC @ =0x0000d70a + bl sub_80089B8 + strb r0, [r7] + ldrb r0, [r5, 0x5] + lsrs r0, 4 + lsls r0, 4 + movs r1, 0x80 + lsls r1, 1 + adds r3, r1, 0 + orrs r0, r3 + lsls r6, r4, 4 + adds r6, r4 + lsls r6, 2 + ldr r2, _080EF0A4 @ =gUnknown_202063C + adds r6, r2 + ldrb r4, [r6, 0x5] + lsrs r4, 4 + lsls r4, 4 + orrs r4, r3 + lsls r0, 1 + ldr r1, _080EF0B0 @ =gUnknown_20371F8 + mov r8, r1 + add r0, r8 + mov r2, r9 + ldrb r1, [r2] + lsls r1, 4 + adds r1, r3, r1 + movs r2, 0x20 + str r3, [sp] + bl sub_80703EC + lsls r4, 1 + add r4, r8 + ldrb r0, [r7] + lsls r0, 4 + ldr r3, [sp] + adds r3, r0 + adds r0, r4, 0 + adds r1, r3, 0 + movs r2, 0x20 + bl sub_80703EC + mov r0, r9 + ldrb r1, [r0] + lsls r1, 4 + ldrb r2, [r5, 0x5] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r2, r10 + lsls r1, r2, 4 + add r1, r10 + lsls r1, 2 + ldr r0, _080EF0A4 @ =gUnknown_202063C + adds r1, r0 + mov r0, r9 + ldrb r2, [r0] + lsls r2, 4 + ldrb r4, [r1, 0x5] + adds r0, r3, 0 + ands r0, r4 + orrs r0, r2 + strb r0, [r1, 0x5] + ldrb r0, [r7] + lsls r0, 4 + ldrb r1, [r6, 0x5] + ands r3, r1 + orrs r3, r0 + strb r3, [r6, 0x5] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EF0A0: .4byte gUnknown_3004FF0 +_080EF0A4: .4byte gUnknown_202063C +_080EF0A8: .4byte 0x0000d709 +_080EF0AC: .4byte 0x0000d70a +_080EF0B0: .4byte gUnknown_20371F8 + thumb_func_end sub_80EEFC8 + + thumb_func_start sub_80EF0B4 +sub_80EF0B4: @ 80EF0B4 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, sp + adds r1, 0x1 + ldr r0, _080EF0DC @ =gUnknown_2037F1A + ldrb r2, [r0] + mov r0, sp + bl sub_80EEFC8 + adds r0, r4, 0 + bl sub_8072760 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF0DC: .4byte gUnknown_2037F1A + thumb_func_end sub_80EF0B4 + + thumb_func_start sub_80EF0E0 +sub_80EF0E0: @ 80EF0E0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080EF168 @ =gUnknown_3004FF0 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _080EF16C @ =gUnknown_202063C + mov r8, r1 + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + add r5, r8 + ldrb r0, [r5, 0x6] + mov r9, r0 + ldrh r6, [r5, 0x38] + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080EF170 @ =0x0000d709 + bl sub_8008A30 + ldr r0, _080EF174 @ =0x0000d70a + bl sub_8008A30 + ldr r0, _080EF178 @ =0x0000d6ff + bl sub_80089E8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080EF17C @ =0x0000d704 + bl sub_80089E8 + lsls r0, 24 + lsls r4, 4 + ldrb r2, [r5, 0x5] + movs r3, 0xF + adds r1, r3, 0 + ands r1, r2 + orrs r1, r4 + strb r1, [r5, 0x5] + mov r1, r9 + lsls r2, r1, 4 + add r2, r9 + lsls r2, 2 + add r2, r8 + ldrb r5, [r2, 0x5] + adds r1, r3, 0 + ands r1, r5 + orrs r1, r4 + strb r1, [r2, 0x5] + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + add r1, r8 + lsrs r0, 20 + ldrb r2, [r1, 0x5] + ands r3, r2 + orrs r3, r0 + strb r3, [r1, 0x5] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF168: .4byte gUnknown_3004FF0 +_080EF16C: .4byte gUnknown_202063C +_080EF170: .4byte 0x0000d709 +_080EF174: .4byte 0x0000d70a +_080EF178: .4byte 0x0000d6ff +_080EF17C: .4byte 0x0000d704 + thumb_func_end sub_80EF0E0 + + thumb_func_start sub_80EF180 +sub_80EF180: @ 80EF180 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080EF19C @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80EF0E0 + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF19C: .4byte gUnknown_2037F1A + thumb_func_end sub_80EF180 + + thumb_func_start sub_80EF1A0 +sub_80EF1A0: @ 80EF1A0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EF1C0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080EF1C4 @ =gUnknown_2037F02 + ldrh r0, [r2] + strh r0, [r1, 0x1C] + ldrh r0, [r2, 0x2] + strh r0, [r1, 0x1E] + ldr r0, _080EF1C8 @ =sub_80EF1CC + str r0, [r1] + bx lr + .align 2, 0 +_080EF1C0: .4byte gUnknown_3005090 +_080EF1C4: .4byte gUnknown_2037F02 +_080EF1C8: .4byte sub_80EF1CC + thumb_func_end sub_80EF1A0 + + thumb_func_start sub_80EF1CC +sub_80EF1CC: @ 80EF1CC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080EF218 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r6, 0 + adds r1, r0, 0x1 + strh r1, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080EF28C + strh r6, [r4, 0x8] + ldr r0, _080EF21C @ =0x0000d709 + bl sub_80089E8 + lsls r0, 24 + lsrs r2, r0, 24 + movs r3, 0x1C + ldrsh r0, [r4, r3] + movs r1, 0x2 + cmp r0, 0 + bne _080EF20A + movs r1, 0x6 +_080EF20A: + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080EF220 + cmp r0, 0x1 + beq _080EF25C + b _080EF28C + .align 2, 0 +_080EF218: .4byte gUnknown_3005090 +_080EF21C: .4byte 0x0000d709 +_080EF220: + ldrh r0, [r4, 0xC] + adds r0, 0x2 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080EF232 + movs r0, 0x10 + strh r0, [r4, 0xC] +_080EF232: + lsls r0, r2, 4 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2 + orrs r0, r1 + ldrb r2, [r4, 0xC] + ldr r3, _080EF258 @ =0x00007f74 + movs r1, 0x1 + bl sub_8045274 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0x10 + bne _080EF28C + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080EF28C + .align 2, 0 +_080EF258: .4byte 0x00007f74 +_080EF25C: + ldrh r0, [r4, 0xC] + subs r0, 0x2 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bge _080EF26A + strh r6, [r4, 0xC] +_080EF26A: + lsls r0, r2, 4 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2 + orrs r0, r1 + ldrb r2, [r4, 0xC] + ldr r3, _080EF294 @ =0x00007f74 + movs r1, 0x1 + bl sub_8045274 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080EF28C + adds r0, r5, 0 + bl sub_8072760 +_080EF28C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF294: .4byte 0x00007f74 + thumb_func_end sub_80EF1CC + + thumb_func_start sub_80EF298 +sub_80EF298: @ 80EF298 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080EF2C4 @ =gUnknown_2023D44 + ldr r0, _080EF2C8 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r5, [r0] + ldr r1, _080EF2CC @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080EF2E6 + cmp r0, 0x1 + bgt _080EF2D0 + cmp r0, 0 + beq _080EF2D6 + b _080EF338 + .align 2, 0 +_080EF2C4: .4byte gUnknown_2023D44 +_080EF2C8: .4byte gUnknown_2037F1A +_080EF2CC: .4byte gUnknown_3005090 +_080EF2D0: + cmp r0, 0x2 + beq _080EF318 + b _080EF338 +_080EF2D6: + adds r0, r5, 0 + movs r1, 0 + bl sub_80758E0 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x1C] + b _080EF30A +_080EF2E6: + ldrh r0, [r4, 0x1C] + adds r0, 0x30 + strh r0, [r4, 0x1C] + movs r0, 0x1C + ldrsh r2, [r4, r0] + adds r0, r5, 0 + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + adds r0, r5, 0 + bl sub_8076440 + movs r0, 0x1C + ldrsh r1, [r4, r0] + ldr r0, _080EF314 @ =0x000002cf + cmp r1, r0 + ble _080EF338 +_080EF30A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080EF338 + .align 2, 0 +_080EF314: .4byte 0x000002cf +_080EF318: + adds r0, r5, 0 + bl sub_8075980 + ldr r1, _080EF340 @ =gUnknown_202063C + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r6, 0 + bl sub_8072760 +_080EF338: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF340: .4byte gUnknown_202063C + thumb_func_end sub_80EF298 + + thumb_func_start sub_80EF344 +sub_80EF344: @ 80EF344 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080EF37C @ =gUnknown_2023D44 + ldr r4, _080EF380 @ =gUnknown_2037F1A + ldrb r0, [r4] + adds r1, r0, r1 + ldrb r1, [r1] + mov r9, r1 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080EF38C + ldr r1, _080EF384 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080EF388 @ =gUnknown_2024284 + b _080EF39C + .align 2, 0 +_080EF37C: .4byte gUnknown_2023D44 +_080EF380: .4byte gUnknown_2037F1A +_080EF384: .4byte gUnknown_2023BCE +_080EF388: .4byte gUnknown_2024284 +_080EF38C: + ldr r1, _080EF3CC @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080EF3D0 @ =gUnknown_202402C +_080EF39C: + adds r0, r1 + movs r1, 0x26 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80EF52C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r2, _080EF3D4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r6, r0, r2 + movs r0, 0x8 + ldrsh r7, [r6, r0] + cmp r7, 0 + beq _080EF3D8 + cmp r7, 0x1 + beq _080EF458 + b _080EF482 + .align 2, 0 +_080EF3CC: .4byte gUnknown_2023BCE +_080EF3D0: .4byte gUnknown_202402C +_080EF3D4: .4byte gUnknown_3005090 +_080EF3D8: + ldr r5, _080EF450 @ =gUnknown_2037F1A + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + adds r1, r0, 0 + lsls r1, 24 + ldr r2, _080EF454 @ =gUnknown_202063C + mov r3, r9 + lsls r0, r3, 4 + add r0, r9 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x5] + lsls r2, 28 + lsrs r2, 30 + adds r0, 0x43 + ldrb r3, [r0] + movs r0, 0x80 + lsls r0, 22 + adds r1, r0 + lsrs r1, 24 + mov r0, r8 + str r0, [sp] + adds r0, r4, 0 + bl sub_80F05EC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x1C] + str r7, [sp] + str r7, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8075BE8 + adds r2, r0, 0 + ldrb r1, [r5] + movs r0, 0 + mov r3, r8 + bl sub_80F1218 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x1E] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080EF482 + .align 2, 0 +_080EF450: .4byte gUnknown_2037F1A +_080EF454: .4byte gUnknown_202063C +_080EF458: + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0x4] + cmp r0, 0 + bne _080EF482 + movs r3, 0x1E + ldrsh r0, [r6, r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0x4] + cmp r0, 0 + bne _080EF482 + adds r0, r5, 0 + bl sub_8072760 +_080EF482: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80EF344 + + thumb_func_start sub_80EF490 +sub_80EF490: @ 80EF490 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080EF4B4 @ =gUnknown_2023D68 + ldrh r0, [r0] + bl sub_80EF52C + lsls r0, 24 + lsrs r0, 24 + bl sub_804BEF4 + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF4B4: .4byte gUnknown_2023D68 + thumb_func_end sub_80EF490 + + thumb_func_start sub_80EF4B8 +sub_80EF4B8: @ 80EF4B8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080EF4DC @ =gUnknown_2023D68 + ldrh r0, [r0] + bl sub_80EF52C + lsls r0, 24 + lsrs r0, 24 + bl sub_804BF64 + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF4DC: .4byte gUnknown_2023D68 + thumb_func_end sub_80EF4B8 + + thumb_func_start sub_80EF4E0 +sub_80EF4E0: @ 80EF4E0 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080EF4FC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r0, [r0, 0x8] + cmp r0, 0x5 + beq _080EF504 + cmp r0, 0x6 + beq _080EF514 + ldr r1, _080EF500 @ =gUnknown_2037F02 + movs r0, 0 + b _080EF518 + .align 2, 0 +_080EF4FC: .4byte gUnknown_2024018 +_080EF500: .4byte gUnknown_2037F02 +_080EF504: + ldr r1, _080EF50C @ =gUnknown_2037F02 + ldr r0, _080EF510 @ =0x0000ffff + b _080EF518 + .align 2, 0 +_080EF50C: .4byte gUnknown_2037F02 +_080EF510: .4byte 0x0000ffff +_080EF514: + ldr r1, _080EF524 @ =gUnknown_2037F02 + ldr r0, _080EF528 @ =0x0000fffe +_080EF518: + strh r0, [r1, 0xE] + adds r0, r2, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080EF524: .4byte gUnknown_2037F02 +_080EF528: .4byte 0x0000fffe + thumb_func_end sub_80EF4E0 + + thumb_func_start sub_80EF52C +sub_80EF52C: @ 80EF52C + push {lr} + lsls r0, 16 + lsrs r0, 16 + subs r0, 0x1 + cmp r0, 0xB + bhi _080EF5A4 + lsls r0, 2 + ldr r1, _080EF544 @ =_080EF548 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EF544: .4byte _080EF548 + .align 2, 0 +_080EF548: + .4byte _080EF578 + .4byte _080EF57C + .4byte _080EF580 + .4byte _080EF5A4 + .4byte _080EF584 + .4byte _080EF588 + .4byte _080EF58C + .4byte _080EF590 + .4byte _080EF594 + .4byte _080EF598 + .4byte _080EF59C + .4byte _080EF5A0 +_080EF578: + movs r0, 0x4 + b _080EF5A6 +_080EF57C: + movs r0, 0x3 + b _080EF5A6 +_080EF580: + movs r0, 0x1 + b _080EF5A6 +_080EF584: + movs r0, 0x2 + b _080EF5A6 +_080EF588: + movs r0, 0x5 + b _080EF5A6 +_080EF58C: + movs r0, 0x6 + b _080EF5A6 +_080EF590: + movs r0, 0x7 + b _080EF5A6 +_080EF594: + movs r0, 0x8 + b _080EF5A6 +_080EF598: + movs r0, 0x9 + b _080EF5A6 +_080EF59C: + movs r0, 0xA + b _080EF5A6 +_080EF5A0: + movs r0, 0xB + b _080EF5A6 +_080EF5A4: + movs r0, 0 +_080EF5A6: + pop {r1} + bx r1 + thumb_func_end sub_80EF52C + + thumb_func_start sub_80EF5AC +sub_80EF5AC: @ 80EF5AC + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + mov r10, r0 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _080EF674 @ =gUnknown_2023D68 + ldrh r0, [r0] + bl sub_80EF52C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r1, _080EF678 @ =gUnknown_82606F4 + adds r0, r1 + movs r1, 0x20 + movs r2, 0x50 + movs r3, 0x1D + bl sub_8006F8C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _080EF67C @ =gUnknown_202063C + mov r9, r1 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + adds r6, r4, r1 + movs r0, 0x22 + strh r0, [r6, 0x2E] + ldr r2, _080EF680 @ =gUnknown_2037F1B + mov r8, r2 + ldrb r0, [r2] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x30] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x10 + strh r0, [r6, 0x32] + mov r0, r9 + adds r0, 0x1C + adds r4, r0 + ldr r0, _080EF684 @ =sub_80EF8C0 + str r0, [r4] + ldr r0, _080EF688 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r3, [r0, 0x8] + ldr r1, _080EF68C @ =gUnknown_2023D44 + mov r2, r8 + ldrb r0, [r2] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r9 + adds r0, 0x3E + ldrb r1, [r0] + lsls r1, 29 + lsrs r1, 31 + lsls r1, 1 + ldrb r2, [r3, 0x9] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x9] + ldr r1, _080EF690 @ =gUnknown_3005090 + mov r2, r10 + lsls r0, r2, 2 + add r0, r10 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + ldr r1, _080EF694 @ =sub_80EF698 + str r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF674: .4byte gUnknown_2023D68 +_080EF678: .4byte gUnknown_82606F4 +_080EF67C: .4byte gUnknown_202063C +_080EF680: .4byte gUnknown_2037F1B +_080EF684: .4byte sub_80EF8C0 +_080EF688: .4byte gUnknown_2024018 +_080EF68C: .4byte gUnknown_2023D44 +_080EF690: .4byte gUnknown_3005090 +_080EF694: .4byte sub_80EF698 + thumb_func_end sub_80EF5AC + + thumb_func_start sub_80EF698 +sub_80EF698: @ 80EF698 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _080EF6C8 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0x8] + ldr r2, _080EF6CC @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x2E] + ldr r0, _080EF6D0 @ =0x0000ffff + cmp r1, r0 + bne _080EF6C2 + adds r0, r3, 0 + bl sub_8072760 +_080EF6C2: + pop {r0} + bx r0 + .align 2, 0 +_080EF6C8: .4byte gUnknown_3005090 +_080EF6CC: .4byte gUnknown_202063C +_080EF6D0: .4byte 0x0000ffff + thumb_func_end sub_80EF698 + + thumb_func_start sub_80EF6D4 +sub_80EF6D4: @ 80EF6D4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080EF6F4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _080EF6F8 + movs r5, 0x1C + movs r6, 0xB + b _080EF708 + .align 2, 0 +_080EF6F4: .4byte gUnknown_2022B4C +_080EF6F8: + movs r5, 0x17 + movs r6, 0xB + ldr r0, _080EF7C4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0x1 + bne _080EF708 + movs r6, 0xD +_080EF708: + ldr r0, _080EF7C8 @ =gUnknown_2023D68 + ldrh r0, [r0] + bl sub_80EF52C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_807685C + adds r3, r0, 0 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + ldr r1, _080EF7CC @ =gUnknown_82606F4 + adds r0, r1 + movs r1, 0x20 + orrs r5, r1 + movs r1, 0x50 + orrs r6, r1 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8006F8C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080EF7D0 @ =gUnknown_202063C + mov r9, r0 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + adds r6, r4, r0 + movs r0, 0x22 + strh r0, [r6, 0x2E] + ldr r1, _080EF7D4 @ =gUnknown_2037F1B + mov r8, r1 + ldrb r0, [r1] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x30] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x10 + strh r0, [r6, 0x32] + movs r0, 0x1C + add r9, r0 + add r4, r9 + ldr r0, _080EF7D8 @ =nullsub_8 + str r0, [r4] + movs r0, 0 + bl sub_80751E8 + ldr r1, _080EF7DC @ =gUnknown_2023D44 + lsls r0, 24 + lsrs r0, 24 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r9 + ldr r1, _080EF7E0 @ =sub_8012354 + str r1, [r0] + ldr r1, _080EF7E4 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + ldr r1, _080EF7E8 @ =sub_80EF7EC + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EF7C4: .4byte gUnknown_300500C +_080EF7C8: .4byte gUnknown_2023D68 +_080EF7CC: .4byte gUnknown_82606F4 +_080EF7D0: .4byte gUnknown_202063C +_080EF7D4: .4byte gUnknown_2037F1B +_080EF7D8: .4byte nullsub_8 +_080EF7DC: .4byte gUnknown_2023D44 +_080EF7E0: .4byte sub_8012354 +_080EF7E4: .4byte gUnknown_3005090 +_080EF7E8: .4byte sub_80EF7EC + thumb_func_end sub_80EF6D4 + + thumb_func_start sub_80EF7EC +sub_80EF7EC: @ 80EF7EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _080EF84C @ =gUnknown_202063C + movs r0, 0 + bl sub_80751E8 + ldr r1, _080EF850 @ =gUnknown_2023D44 + lsls r0, 24 + lsrs r0, 24 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0x1 + bne _080EF846 + movs r0, 0x36 + movs r1, 0 + bl sub_80722F4 + ldr r0, _080EF854 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r6, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080EF858 @ =sub_80EF8C0 + str r1, [r0] + ldr r0, _080EF85C @ =sub_80EF864 + movs r1, 0xA + bl sub_807741C + ldr r0, _080EF860 @ =sub_80EF698 + str r0, [r4] +_080EF846: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF84C: .4byte gUnknown_202063C +_080EF850: .4byte gUnknown_2023D44 +_080EF854: .4byte gUnknown_3005090 +_080EF858: .4byte sub_80EF8C0 +_080EF85C: .4byte sub_80EF864 +_080EF860: .4byte sub_80EF698 + thumb_func_end sub_80EF7EC + + thumb_func_start sub_80EF864 +sub_80EF864: @ 80EF864 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _080EF8B8 @ =gUnknown_202063C + movs r0, 0 + bl sub_80751E8 + ldr r4, _080EF8BC @ =gUnknown_2023D44 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + bge _080EF8B0 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0 + bl sub_800838C + adds r0, r5, 0 + bl sub_8077508 +_080EF8B0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF8B8: .4byte gUnknown_202063C +_080EF8BC: .4byte gUnknown_2023D44 + thumb_func_end sub_80EF864 + + thumb_func_start sub_80EF8C0 +sub_80EF8C0: @ 80EF8C0 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x32] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r1, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + strh r2, [r4, 0x36] + ldr r0, _080EF8E8 @ =0x0000ffd8 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080EF8EC @ =sub_80EF8F0 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF8E8: .4byte 0x0000ffd8 +_080EF8EC: .4byte sub_80EF8F0 + thumb_func_end sub_80EF8C0 + + thumb_func_start sub_80EF8F0 +sub_80EF8F0: @ 80EF8F0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080EF99E + ldr r0, _080EF914 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r0, [r0, 0x8] + cmp r0, 0x5 + bne _080EF91C + ldr r0, _080EF918 @ =sub_80F0478 + str r0, [r4, 0x1C] + b _080EF99E + .align 2, 0 +_080EF914: .4byte gUnknown_2024018 +_080EF918: .4byte sub_80F0478 +_080EF91C: + cmp r0, 0x6 + bne _080EF92C + ldr r0, _080EF928 @ =sub_80F052C + str r0, [r4, 0x1C] + b _080EF99E + .align 2, 0 +_080EF928: .4byte sub_80F052C +_080EF92C: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x24] + strh r1, [r4, 0x26] + adds r1, r4, 0 + adds r1, 0x2E + movs r2, 0 + adds r0, r4, 0 + adds r0, 0x3C +_080EF954: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _080EF954 + movs r0, 0 + strh r0, [r4, 0x38] + ldr r0, _080EF9A8 @ =sub_80EF9B4 + str r0, [r4, 0x1C] + ldr r0, _080EF9AC @ =gUnknown_2023D68 + ldrh r0, [r0] + bl sub_80EF52C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xB + bgt _080EF99E + cmp r5, 0 + blt _080EF99E + ldrh r0, [r4, 0x20] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + subs r1, 0x5 + lsls r1, 24 + lsrs r1, 24 + str r5, [sp] + movs r2, 0x1 + movs r3, 0x1C + bl sub_80F05EC + ldr r0, _080EF9B0 @ =gUnknown_2037F1B + ldrb r1, [r0] + movs r0, 0 + movs r2, 0xE + adds r3, r5, 0 + bl sub_80F1218 +_080EF99E: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EF9A8: .4byte sub_80EF9B4 +_080EF9AC: .4byte gUnknown_2023D68 +_080EF9B0: .4byte gUnknown_2037F1B + thumb_func_end sub_80EF8F0 + + thumb_func_start sub_80EF9B4 +sub_80EF9B4: @ 80EF9B4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080EF9F0 + ldr r0, _080EF9F8 @ =nullsub_43 + movs r1, 0x32 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x38] + ldr r0, _080EF9FC @ =sub_80EFA0C + str r0, [r4, 0x1C] + ldr r2, _080EFA00 @ =gUnknown_202063C + ldr r1, _080EFA04 @ =gUnknown_2023D44 + ldr r0, _080EFA08 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x30] +_080EF9F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF9F8: .4byte nullsub_43 +_080EF9FC: .4byte sub_80EFA0C +_080EFA00: .4byte gUnknown_202063C +_080EFA04: .4byte gUnknown_2023D44 +_080EFA08: .4byte gUnknown_2037F1B + thumb_func_end sub_80EF9B4 + + thumb_func_start sub_80EFA0C +sub_80EFA0C: @ 80EFA0C + push {r4-r7,lr} + adds r7, r0, 0 + ldr r1, _080EFA50 @ =gUnknown_2023D44 + ldr r0, _080EFA54 @ =gUnknown_2037F1B + ldrb r0, [r0] + adds r0, r1 + ldrb r4, [r0] + ldrh r0, [r7, 0x38] + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080EFA58 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _080EFA3E + movs r0, 0x35 + bl sub_80722CC +_080EFA3E: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080EFAB4 + cmp r0, 0x1 + bgt _080EFA5C + cmp r0, 0 + beq _080EFA62 + b _080EFB20 + .align 2, 0 +_080EFA50: .4byte gUnknown_2023D44 +_080EFA54: .4byte gUnknown_2037F1B +_080EFA58: .4byte gUnknown_3005090 +_080EFA5C: + cmp r0, 0x2 + beq _080EFAF8 + b _080EFB20 +_080EFA62: + adds r0, r4, 0 + movs r1, 0 + bl sub_80758E0 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0x1C] + ldr r1, _080EFAA4 @ =gUnknown_3005424 + movs r0, 0x1C + str r0, [r1] + ldr r2, _080EFAA8 @ =gUnknown_300542C + ldr r1, _080EFAAC @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + ldrh r0, [r7, 0x26] + ldrh r7, [r7, 0x22] + adds r0, r7 + subs r1, r0 + strh r1, [r2] + ldr r4, _080EFAB0 @ =gUnknown_3005428 + ldrh r0, [r2] + lsls r0, 8 + movs r1, 0x1C + bl __udivsi3 + strh r0, [r4] + strh r0, [r5, 0xC] + b _080EFB12 + .align 2, 0 +_080EFAA4: .4byte gUnknown_3005424 +_080EFAA8: .4byte gUnknown_300542C +_080EFAAC: .4byte gUnknown_202063C +_080EFAB0: .4byte gUnknown_3005428 +_080EFAB4: + ldrh r0, [r5, 0x1C] + adds r0, 0x20 + strh r0, [r5, 0x1C] + movs r0, 0x1C + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r1, r2, 0 + movs r3, 0 + bl sub_8075858 + ldrh r0, [r5, 0xC] + ldrh r1, [r5, 0xE] + adds r0, r1 + strh r0, [r5, 0xE] + ldr r0, _080EFAF0 @ =gUnknown_202063C + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + movs r2, 0xE + ldrsh r0, [r5, r2] + negs r0, r0 + asrs r0, 8 + strh r0, [r1, 0x26] + movs r0, 0x1C + ldrsh r1, [r5, r0] + ldr r0, _080EFAF4 @ =0x0000047f + cmp r1, r0 + ble _080EFB48 + b _080EFB12 + .align 2, 0 +_080EFAF0: .4byte gUnknown_202063C +_080EFAF4: .4byte 0x0000047f +_080EFAF8: + adds r0, r4, 0 + bl sub_8075980 + ldr r1, _080EFB1C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080EFB12: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080EFB48 + .align 2, 0 +_080EFB1C: .4byte gUnknown_202063C +_080EFB20: + ldr r0, _080EFB50 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0xA + ble _080EFB48 + adds r0, r6, 0 + bl sub_8077508 + adds r0, r7, 0 + movs r1, 0x2 + bl sub_800838C + movs r0, 0 + strh r0, [r7, 0x38] + ldr r0, _080EFB54 @ =sub_80EFB58 + str r0, [r7, 0x1C] +_080EFB48: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EFB50: .4byte gUnknown_3005090 +_080EFB54: .4byte sub_80EFB58 + thumb_func_end sub_80EFA0C + + thumb_func_start sub_80EFB58 +sub_80EFB58: @ 80EFB58 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EFB92 + movs r1, 0 + strh r1, [r4, 0x34] + movs r0, 0x28 + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + movs r0, 0 + movs r1, 0x28 + bl sub_8044E4C + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0x36 + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldr r0, _080EFB98 @ =sub_80EFB9C + str r0, [r4, 0x1C] +_080EFB92: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EFB98: .4byte sub_80EFB9C + thumb_func_end sub_80EFB58 + + thumb_func_start sub_80EFB9C +sub_80EFB9C: @ 80EFB9C + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0 + ldrh r0, [r4, 0x34] + movs r1, 0xFF + ands r1, r0 + cmp r1, 0 + beq _080EFBB2 + cmp r1, 0x1 + beq _080EFC26 + b _080EFC52 +_080EFBB2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r1, [r4, 0x38] + adds r1, 0x4 + ldrh r2, [r4, 0x34] + lsls r0, r2, 16 + asrs r0, 24 + adds r1, r0 + strh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x3F + ble _080EFC52 + ldrh r0, [r4, 0x36] + subs r0, 0xA + strh r0, [r4, 0x36] + ldr r1, _080EFBFC @ =0x00000101 + adds r0, r2, r1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + cmp r0, 0x4 + bne _080EFBEE + movs r5, 0x1 +_080EFBEE: + cmp r0, 0x2 + beq _080EFC0E + cmp r0, 0x2 + bgt _080EFC00 + cmp r0, 0x1 + beq _080EFC06 + b _080EFC1E + .align 2, 0 +_080EFBFC: .4byte 0x00000101 +_080EFC00: + cmp r0, 0x3 + beq _080EFC16 + b _080EFC1E +_080EFC06: + movs r0, 0x31 + bl sub_80722CC + b _080EFC52 +_080EFC0E: + movs r0, 0x32 + bl sub_80722CC + b _080EFC52 +_080EFC16: + movs r0, 0x33 + bl sub_80722CC + b _080EFC52 +_080EFC1E: + movs r0, 0x34 + bl sub_80722CC + b _080EFC52 +_080EFC26: + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r1, [r4, 0x38] + subs r1, 0x4 + ldrh r2, [r4, 0x34] + lsls r0, r2, 16 + asrs r0, 24 + subs r1, r0 + strh r1, [r4, 0x38] + lsls r1, 16 + cmp r1, 0 + bgt _080EFC52 + strh r5, [r4, 0x38] + ldr r0, _080EFC80 @ =0xffffff00 + ands r0, r2 + strh r0, [r4, 0x34] +_080EFC52: + cmp r5, 0 + beq _080EFC96 + movs r5, 0 + strh r5, [r4, 0x34] + movs r0, 0x40 + movs r1, 0x28 + bl sub_8044E4C + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x26] + ldr r0, _080EFC84 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _080EFC8C + strh r5, [r4, 0x38] + ldr r0, _080EFC88 @ =sub_80EFF80 + str r0, [r4, 0x1C] + b _080EFC96 + .align 2, 0 +_080EFC80: .4byte 0xffffff00 +_080EFC84: .4byte gUnknown_2024018 +_080EFC88: .4byte sub_80EFF80 +_080EFC8C: + ldr r0, _080EFC9C @ =sub_80EFCA0 + str r0, [r4, 0x1C] + movs r0, 0x1 + strh r0, [r4, 0x36] + strh r5, [r4, 0x38] +_080EFC96: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EFC9C: .4byte sub_80EFCA0 + thumb_func_end sub_80EFB9C + + thumb_func_start sub_80EFCA0 +sub_80EFCA0: @ 80EFCA0 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080EFCDC + strh r5, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _080EFCE4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + strh r5, [r0, 0xC] + ldr r0, _080EFCE8 @ =sub_80EFCEC + str r0, [r4, 0x1C] + movs r0, 0x17 + bl sub_80722CC +_080EFCDC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EFCE4: .4byte gUnknown_2024018 +_080EFCE8: .4byte sub_80EFCEC + thumb_func_end sub_80EFCA0 + + thumb_func_start sub_80EFCEC +sub_80EFCEC: @ 80EFCEC + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + movs r1, 0xFF + ands r1, r0 + cmp r1, 0x6 + bls _080EFCFC + b _080EFF34 +_080EFCFC: + lsls r0, r1, 2 + ldr r1, _080EFD08 @ =_080EFD0C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EFD08: .4byte _080EFD0C + .align 2, 0 +_080EFD0C: + .4byte _080EFD28 + .4byte _080EFD7A + .4byte _080EFDC0 + .4byte _080EFE20 + .4byte _080EFE70 + .4byte _080EFED4 + .4byte _080EFF34 +_080EFD28: + ldr r1, _080EFD4C @ =gUnknown_2024018 + ldr r5, [r1] + ldr r2, [r5, 0x8] + ldrh r3, [r2, 0xC] + movs r6, 0xC + ldrsh r0, [r2, r6] + adds r6, r1, 0 + cmp r0, 0xFF + ble _080EFD50 + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldr r1, [r5, 0x8] + ldrb r0, [r1, 0xC] + strh r0, [r1, 0xC] + b _080EFD56 + .align 2, 0 +_080EFD4C: .4byte gUnknown_2024018 +_080EFD50: + adds r0, r3, 0 + adds r0, 0xB0 + strh r0, [r2, 0xC] +_080EFD56: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + movs r3, 0 + strh r0, [r4, 0x38] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x38] + adds r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xE + bhi _080EFD78 + b _080EFF7A +_080EFD78: + b _080EFE10 +_080EFD7A: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080EFE2C + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x36] + negs r0, r0 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r6, 0x36 + ldrsh r0, [r4, r6] + cmp r0, 0 + bge _080EFDB6 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800849C + b _080EFF7A +_080EFDB6: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800849C + b _080EFF7A +_080EFDC0: + ldr r1, _080EFDE4 @ =gUnknown_2024018 + ldr r5, [r1] + ldr r2, [r5, 0x8] + ldrh r3, [r2, 0xC] + movs r6, 0xC + ldrsh r0, [r2, r6] + adds r6, r1, 0 + cmp r0, 0xFF + ble _080EFDE8 + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldr r1, [r5, 0x8] + ldrb r0, [r1, 0xC] + strh r0, [r1, 0xC] + b _080EFDEE + .align 2, 0 +_080EFDE4: .4byte gUnknown_2024018 +_080EFDE8: + adds r0, r3, 0 + adds r0, 0xB0 + strh r0, [r2, 0xC] +_080EFDEE: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + movs r3, 0 + strh r0, [r4, 0x38] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x38] + adds r0, 0xC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x18 + bhi _080EFE10 + b _080EFF7A +_080EFE10: + ldr r0, [r6] + ldr r0, [r0, 0x8] + strh r3, [r0, 0xC] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + strh r3, [r4, 0x38] + b _080EFF7A +_080EFE20: + ldrh r0, [r4, 0x38] + adds r1, r0, 0x1 + strh r1, [r4, 0x38] + lsls r0, 16 + cmp r0, 0 + bge _080EFE3A +_080EFE2C: + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + b _080EFF7A +_080EFE3A: + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x36] + negs r0, r0 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r6, 0x36 + ldrsh r0, [r4, r6] + cmp r0, 0 + bge _080EFE68 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800849C + b _080EFE70 +_080EFE68: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800849C +_080EFE70: + ldr r1, _080EFE94 @ =gUnknown_2024018 + ldr r5, [r1] + ldr r2, [r5, 0x8] + ldrh r3, [r2, 0xC] + movs r6, 0xC + ldrsh r0, [r2, r6] + adds r6, r1, 0 + cmp r0, 0xFF + ble _080EFE98 + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldr r1, [r5, 0x8] + ldrb r0, [r1, 0xC] + strh r0, [r1, 0xC] + b _080EFE9E + .align 2, 0 +_080EFE94: .4byte gUnknown_2024018 +_080EFE98: + adds r0, r3, 0 + adds r0, 0xB0 + strh r0, [r2, 0xC] +_080EFE9E: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + movs r3, 0 + strh r0, [r4, 0x38] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x38] + adds r0, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x8 + bls _080EFF7A + ldr r0, [r6] + ldr r0, [r0, 0x8] + strh r3, [r0, 0xC] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + strh r3, [r4, 0x38] + ldrh r0, [r4, 0x36] + negs r0, r0 + strh r0, [r4, 0x36] + b _080EFF7A +_080EFED4: + movs r6, 0x80 + lsls r6, 1 + adds r0, r6, 0 + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r1, r0, 24 + ldr r0, _080EFF04 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r0, [r0, 0x8] + cmp r1, r0 + bne _080EFF0C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080EFF08 @ =sub_80EFF80 + str r0, [r4, 0x1C] + b _080EFF7A + .align 2, 0 +_080EFF04: .4byte gUnknown_2024018 +_080EFF08: .4byte sub_80EFF80 +_080EFF0C: + cmp r0, 0x4 + bne _080EFF20 + cmp r1, 0x3 + bne _080EFF20 + ldr r0, _080EFF1C @ =sub_80EFFA4 + str r0, [r4, 0x1C] + b _080EFF26 + .align 2, 0 +_080EFF1C: .4byte sub_80EFFA4 +_080EFF20: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] +_080EFF26: + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + b _080EFF7A +_080EFF34: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080EFF7A + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r1, [r4, 0x34] + ldr r0, _080EFF68 @ =0xffffff00 + ands r0, r1 + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800843C + movs r6, 0x36 + ldrsh r0, [r4, r6] + cmp r0, 0 + bge _080EFF6C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800843C + b _080EFF74 + .align 2, 0 +_080EFF68: .4byte 0xffffff00 +_080EFF6C: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_080EFF74: + movs r0, 0x17 + bl sub_80722CC +_080EFF7A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80EFCEC + + thumb_func_start sub_80EFF80 +sub_80EFF80: @ 80EFF80 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x38] + adds r0, 0x1 + strh r0, [r1, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080EFF9A + movs r0, 0 + strh r0, [r1, 0x38] + ldr r0, _080EFFA0 @ =sub_80F02B0 + str r0, [r1, 0x1C] +_080EFF9A: + pop {r0} + bx r0 + .align 2, 0 +_080EFFA0: .4byte sub_80F02B0 + thumb_func_end sub_80EFF80 + + thumb_func_start sub_80EFFA4 +sub_80EFFA4: @ 80EFFA4 + adds r3, r0, 0 + adds r3, 0x2C + ldrb r1, [r3] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r3] + ldr r1, _080EFFC0 @ =sub_80EFFC4 + str r1, [r0, 0x1C] + movs r1, 0 + strh r1, [r0, 0x34] + strh r1, [r0, 0x36] + strh r1, [r0, 0x38] + bx lr + .align 2, 0 +_080EFFC0: .4byte sub_80EFFC4 + thumb_func_end sub_80EFFA4 + + thumb_func_start sub_80EFFC4 +sub_80EFFC4: @ 80EFFC4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r6, r0, 0 + ldr r7, _080F0004 @ =gUnknown_2037F1B + ldrh r0, [r6, 0x36] + adds r0, 0x1 + movs r1, 0 + mov r8, r1 + strh r0, [r6, 0x36] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0x28 + bne _080F0008 + movs r0, 0xF7 + bl sub_80722CC + ldrb r1, [r6, 0x5] + lsrs r1, 4 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r1 + movs r1, 0x6 + movs r2, 0 + bl sub_80714D4 + adds r0, r6, 0 + bl sub_80F01B8 + b _080F0088 + .align 2, 0 +_080F0004: .4byte gUnknown_2037F1B +_080F0008: + cmp r1, 0x3C + bne _080F0026 + ldrb r1, [r6, 0x5] + lsrs r1, 4 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r1 + mov r1, r8 + str r1, [sp] + movs r1, 0x2 + movs r2, 0x6 + movs r3, 0 + bl sub_8070588 + b _080F0088 +_080F0026: + cmp r1, 0x5F + bne _080F004C + ldr r0, _080F0044 @ =gUnknown_2024005 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + bl sub_804828C + bl m4aMPlayAllStop + ldr r0, _080F0048 @ =0x0000013f + bl sub_80722CC + b _080F0088 + .align 2, 0 +_080F0044: .4byte gUnknown_2024005 +_080F0048: .4byte 0x0000013f +_080F004C: + ldr r0, _080F0094 @ =0x0000013b + cmp r1, r0 + bne _080F0088 + ldr r5, _080F0098 @ =gUnknown_202063C + ldr r4, _080F009C @ =gUnknown_2023D44 + ldrb r0, [r7] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r0, [r7] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + mov r0, r8 + strh r0, [r6, 0x2E] + ldr r0, _080F00A0 @ =sub_80F00A4 + str r0, [r6, 0x1C] +_080F0088: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0094: .4byte 0x0000013b +_080F0098: .4byte gUnknown_202063C +_080F009C: .4byte gUnknown_2023D44 +_080F00A0: .4byte sub_80F00A4 + thumb_func_end sub_80EFFC4 + + thumb_func_start sub_80F00A4 +sub_80F00A4: @ 80F00A4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080F0110 + cmp r0, 0x1 + bgt _080F00BC + cmp r0, 0 + beq _080F00C2 + b _080F0156 +_080F00BC: + cmp r0, 0x2 + beq _080F0142 + b _080F0156 +_080F00C2: + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrb r1, [r4, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + ldr r0, [r4, 0x14] + ldrh r0, [r0, 0x2] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + ldr r0, _080F010C @ =0x00007fff + str r0, [sp] + adds r0, r1, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080F014E + .align 2, 0 +_080F010C: .4byte 0x00007fff +_080F0110: + ldrh r0, [r4, 0x30] + adds r1, r0, 0x1 + strh r1, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + ble _080F017C + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r2, [r4, 0x32] + adds r2, 0x1 + strh r2, [r4, 0x32] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080F017C + b _080F014E +_080F0142: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080F014E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080F017C +_080F0156: + ldr r0, _080F0184 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080F017C + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + strh r5, [r4, 0x2E] + ldr r0, _080F0188 @ =sub_80F018C + str r0, [r4, 0x1C] +_080F017C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F0184: .4byte gUnknown_2037AB8 +_080F0188: .4byte sub_80F018C + thumb_func_end sub_80F00A4 + + thumb_func_start sub_80F018C +sub_80F018C: @ 80F018C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080F01A4 + ldr r0, _080F01A0 @ =0x0000ffff + strh r0, [r4, 0x2E] + b _080F01B0 + .align 2, 0 +_080F01A0: .4byte 0x0000ffff +_080F01A4: + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 +_080F01B0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F018C + + thumb_func_start sub_80F01B8 +sub_80F01B8: @ 80F01B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + adds r1, r6, 0 + adds r1, 0x43 + ldrb r0, [r1] + cmp r0, 0 + beq _080F01D8 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + b _080F01E0 +_080F01D8: + movs r0, 0 + mov r8, r0 + movs r0, 0x1 + strb r0, [r1] +_080F01E0: + movs r0, 0x4 + bl sub_80F05B4 + movs r7, 0 + ldr r2, _080F0264 @ =gUnknown_202063C + mov r9, r2 + movs r0, 0x1C + add r0, r9 + mov r10, r0 +_080F01F2: + movs r2, 0x20 + ldrsh r1, [r6, r2] + movs r0, 0x22 + ldrsh r2, [r6, r0] + ldr r0, _080F0268 @ =gUnknown_840C104 + mov r3, r8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080F024E + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + mov r2, r9 + adds r5, r4, r2 + movs r0, 0x18 + strh r0, [r5, 0x2E] + ldr r0, _080F026C @ =gUnknown_840BF3C + lsls r1, r7, 2 + adds r1, r0 + movs r0, 0 + ldrsb r0, [r1, r0] + ldrh r2, [r6, 0x20] + adds r0, r2 + strh r0, [r5, 0x32] + movs r0, 0x1 + ldrsb r0, [r1, r0] + ldrh r2, [r6, 0x22] + adds r0, r2 + strh r0, [r5, 0x36] + movs r0, 0x2 + ldrsb r0, [r1, r0] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + add r4, r10 + ldr r0, _080F0270 @ =sub_80F0278 + str r0, [r4] + ldr r0, _080F0274 @ =gUnknown_840C068 + ldrb r1, [r0, 0x4] + adds r0, r5, 0 + bl sub_800838C +_080F024E: + adds r7, 0x1 + cmp r7, 0x2 + bls _080F01F2 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0264: .4byte gUnknown_202063C +_080F0268: .4byte gUnknown_840C104 +_080F026C: .4byte gUnknown_840BF3C +_080F0270: .4byte sub_80F0278 +_080F0274: .4byte gUnknown_840C068 + thumb_func_end sub_80F01B8 + + thumb_func_start sub_80F0278 +sub_80F0278: @ 80F0278 + push {r4,lr} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080F02A8 + adds r0, r4, 0 + bl sub_8007280 +_080F02A8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F0278 + + thumb_func_start sub_80F02B0 +sub_80F02B0: @ 80F02B0 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x1 + bl sub_800838C + adds r0, r4, 0 + movs r1, 0 + bl sub_800843C + ldr r0, _080F0364 @ =sub_80F0378 + str r0, [r4, 0x1C] + ldr r0, _080F0368 @ =gUnknown_2023D68 + ldrh r0, [r0] + bl sub_80EF52C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xB + bgt _080F0302 + cmp r5, 0 + blt _080F0302 + ldrh r0, [r4, 0x20] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + subs r1, 0x5 + lsls r1, 24 + lsrs r1, 24 + str r5, [sp] + movs r2, 0x1 + movs r3, 0x1C + bl sub_80F05EC + ldr r0, _080F036C @ =gUnknown_2037F1B + ldrb r1, [r0] + movs r0, 0x1 + movs r2, 0xE + adds r3, r5, 0 + bl sub_80F1218 +_080F0302: + ldr r6, _080F0370 @ =gUnknown_202063C + ldr r5, _080F0374 @ =gUnknown_2023D44 + ldr r4, _080F036C @ =gUnknown_2037F1B + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x1 + bl sub_800843C + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007824 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x80 + lsls r1, 5 + strh r1, [r0, 0x30] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F0364: .4byte sub_80F0378 +_080F0368: .4byte gUnknown_2023D68 +_080F036C: .4byte gUnknown_2037F1B +_080F0370: .4byte gUnknown_202063C +_080F0374: .4byte gUnknown_2023D44 + thumb_func_end sub_80F02B0 + + thumb_func_start sub_80F0378 +sub_80F0378: @ 80F0378 + push {r4-r7,lr} + adds r7, r0, 0 + movs r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080F0396 + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080F0396: + ldr r4, _080F03C4 @ =gUnknown_202063C + ldr r3, _080F03C8 @ =gUnknown_2023D44 + ldr r2, _080F03CC @ =gUnknown_2037F1B + ldrb r0, [r2] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r4 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _080F03D0 + adds r0, r1, 0 + movs r1, 0 + bl sub_800843C + movs r5, 0x1 + b _080F03F0 + .align 2, 0 +_080F03C4: .4byte gUnknown_202063C +_080F03C8: .4byte gUnknown_2023D44 +_080F03CC: .4byte gUnknown_2037F1B +_080F03D0: + ldr r6, _080F045C @ =0xfffffee0 + adds r0, r6, 0 + ldrh r6, [r1, 0x30] + adds r0, r6 + strh r0, [r1, 0x30] + ldrb r0, [r2] + adds r0, r3 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 24 + strh r0, [r1, 0x26] +_080F03F0: + adds r0, r7, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080F0456 + cmp r5, 0 + beq _080F0456 + ldr r4, _080F0460 @ =gUnknown_202063C + ldr r3, _080F0464 @ =gUnknown_2023D44 + ldr r2, _080F0468 @ =gUnknown_2037F1B + ldrb r0, [r2] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r6, 0 + movs r5, 0 + strh r5, [r0, 0x26] + ldrb r0, [r2] + adds r0, r3 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldr r0, _080F046C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r1, [r0, 0x9] + lsls r1, 30 + adds r2, 0x3E + lsrs r1, 31 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + strh r5, [r7, 0x2E] + ldr r0, _080F0470 @ =sub_80F018C + str r0, [r7, 0x1C] + ldr r0, _080F0474 @ =gUnknown_2024005 + strb r6, [r0] + movs r0, 0x1 + bl sub_804828C +_080F0456: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F045C: .4byte 0xfffffee0 +_080F0460: .4byte gUnknown_202063C +_080F0464: .4byte gUnknown_2023D44 +_080F0468: .4byte gUnknown_2037F1B +_080F046C: .4byte gUnknown_2024018 +_080F0470: .4byte sub_80F018C +_080F0474: .4byte gUnknown_2024005 + thumb_func_end sub_80F0378 + + thumb_func_start sub_80F0478 +sub_80F0478: @ 80F0478 + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x24] + ldrh r1, [r2, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r2, 0x20] + ldrh r0, [r2, 0x26] + ldrh r3, [r2, 0x22] + adds r0, r3 + strh r0, [r2, 0x22] + strh r1, [r2, 0x26] + strh r1, [r2, 0x24] + ldr r4, _080F04B0 @ =sub_80F04B4 + movs r3, 0 + movs r1, 0x5 + adds r0, r2, 0 + adds r0, 0x38 +_080F049C: + strh r3, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080F049C + str r4, [r2, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F04B0: .4byte sub_80F04B4 + thumb_func_end sub_80F0478 + + thumb_func_start sub_80F04B4 +sub_80F04B4: @ 80F04B4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x80 + lsls r0, 4 + adds r2, r0, 0 + ldrh r1, [r4, 0x2E] + adds r2, r1 + movs r0, 0xD0 + lsls r0, 3 + adds r3, r0, 0 + ldrh r1, [r4, 0x30] + adds r3, r1 + lsls r1, r3, 16 + asrs r1, 24 + ldrh r0, [r4, 0x24] + subs r0, r1 + strh r0, [r4, 0x24] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r0, 0xFF + ands r2, r0 + strh r2, [r4, 0x2E] + ands r3, r0 + strh r3, [r4, 0x30] + movs r2, 0x22 + ldrsh r0, [r4, r2] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0xA0 + bgt _080F050A + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x8 + negs r1, r1 + cmp r0, r1 + bge _080F051E +_080F050A: + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080F0524 @ =sub_80F018C + str r0, [r4, 0x1C] + ldr r1, _080F0528 @ =gUnknown_2024005 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + bl sub_804828C +_080F051E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F0524: .4byte sub_80F018C +_080F0528: .4byte gUnknown_2024005 + thumb_func_end sub_80F04B4 + + thumb_func_start sub_80F052C +sub_80F052C: @ 80F052C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x26] + strh r0, [r4, 0x24] + movs r0, 0x22 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + subs r1, 0x8 + strh r1, [r4, 0x32] + strh r2, [r4, 0x34] + movs r0, 0x90 + strh r0, [r4, 0x36] + movs r0, 0x20 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + adds r0, r4, 0 + bl sub_80750C8 + ldr r0, _080F0570 @ =sub_80F0574 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F0570: .4byte sub_80F0574 + thumb_func_end sub_80F052C + + thumb_func_start sub_80F0574 +sub_80F0574: @ 80F0574 + push {r4,lr} + adds r4, r0, 0 + bl sub_80750C8 + lsls r0, 24 + cmp r0, 0 + bne _080F0590 + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0x40 + ble _080F05A4 +_080F0590: + movs r1, 0 + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080F05AC @ =sub_80F018C + str r0, [r4, 0x1C] + ldr r0, _080F05B0 @ =gUnknown_2024005 + strb r1, [r0] + movs r0, 0x1 + bl sub_804828C +_080F05A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F05AC: .4byte sub_80F018C +_080F05B0: .4byte gUnknown_2024005 + thumb_func_end sub_80F0574 + + thumb_func_start sub_80F05B4 +sub_80F05B4: @ 80F05B4 + push {r4,r5,lr} + lsls r0, 24 + ldr r1, _080F05E0 @ =gUnknown_840BF48 + lsrs r5, r0, 21 + adds r4, r5, r1 + ldrh r0, [r4, 0x6] + bl sub_8008804 + lsls r0, 16 + ldr r1, _080F05E4 @ =0xffff0000 + cmp r0, r1 + bne _080F05DA + adds r0, r4, 0 + bl sub_800F034 + ldr r0, _080F05E8 @ =gUnknown_840BFA8 + adds r0, r5, r0 + bl sub_800F078 +_080F05DA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F05E0: .4byte gUnknown_840BF48 +_080F05E4: .4byte 0xffff0000 +_080F05E8: .4byte gUnknown_840BFA8 + thumb_func_end sub_80F05B4 + + thumb_func_start sub_80F05EC +sub_80F05EC: @ 80F05EC + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + mov r8, r1 + mov r9, r2 + mov r10, r3 + ldr r5, [sp, 0x1C] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r5, 0 + bl sub_80F05B4 + ldr r1, _080F066C @ =gUnknown_840C074 + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x5 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080F0670 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + strh r6, [r0, 0xA] + mov r1, r8 + strh r1, [r0, 0xC] + mov r1, r9 + strh r1, [r0, 0xE] + mov r1, r10 + strh r1, [r0, 0x10] + strh r5, [r0, 0x26] + movs r0, 0xF + bl sub_80722CC + adds r0, r4, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080F066C: .4byte gUnknown_840C074 +_080F0670: .4byte gUnknown_3005090 + thumb_func_end sub_80F05EC + + thumb_func_start sub_80F0674 +sub_80F0674: @ 80F0674 + push {lr} + ldr r0, _080F0698 @ =gUnknown_30030F0 + ldr r1, _080F069C @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080F0692 + ldr r0, _080F06A0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x8] + ldrb r0, [r1, 0xA] + adds r0, 0x1 + strb r0, [r1, 0xA] +_080F0692: + pop {r0} + bx r0 + .align 2, 0 +_080F0698: .4byte gUnknown_30030F0 +_080F069C: .4byte 0x00000439 +_080F06A0: .4byte gUnknown_2024018 + thumb_func_end sub_80F0674 + + thumb_func_start sub_80F06A4 +sub_80F06A4: @ 80F06A4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080F0780 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r6, r0, r1 + ldrh r0, [r6, 0x26] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r2, 0x8 + ldrsh r0, [r6, r2] + adds r2, r1, 0 + cmp r0, 0xF + bgt _080F079C + ldrb r1, [r6, 0xA] + ldrb r2, [r6, 0xC] + ldrb r4, [r6, 0xE] + mov r9, r4 + ldrb r3, [r6, 0x10] + ldr r4, [sp] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + ldr r4, _080F0784 @ =gUnknown_840C0A4 + adds r0, r4 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0x40 + beq _080F0740 + bl sub_80F0674 + mov r0, r10 + lsls r4, r0, 4 + add r4, r10 + lsls r4, 2 + ldr r5, _080F0788 @ =gUnknown_202063C + adds r7, r4, r5 + ldr r0, _080F078C @ =gUnknown_840C068 + ldr r1, [sp] + adds r0, r1, r0 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_800838C + adds r5, 0x1C + adds r4, r5 + ldr r0, _080F0790 @ =sub_80F07BC + str r0, [r4] + movs r0, 0x3 + mov r2, r9 + ands r2, r0 + lsls r2, 2 + ldrb r1, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r7, 0x5] + ldrb r0, [r6, 0x8] + cmp r0, 0x7 + bls _080F073C + subs r0, 0x8 + lsls r0, 24 + lsrs r0, 24 +_080F073C: + lsls r0, 5 + strh r0, [r7, 0x2E] +_080F0740: + ldr r0, _080F0780 @ =gUnknown_3005090 + mov r4, r8 + lsls r1, r4, 2 + add r1, r8 + lsls r1, 3 + adds r1, r0 + movs r2, 0x8 + ldrsh r1, [r1, r2] + adds r2, r0, 0 + cmp r1, 0xF + bne _080F079C + ldr r0, _080F0794 @ =gUnknown_30030F0 + ldr r4, _080F0798 @ =0x00000439 + adds r0, r4 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F0776 + ldr r0, _080F0788 @ =gUnknown_202063C + mov r2, r10 + lsls r1, r2, 4 + add r1, r10 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F0776: + mov r0, r8 + bl sub_8077508 + b _080F07AC + .align 2, 0 +_080F0780: .4byte gUnknown_3005090 +_080F0784: .4byte gUnknown_840C0A4 +_080F0788: .4byte gUnknown_202063C +_080F078C: .4byte gUnknown_840C068 +_080F0790: .4byte sub_80F07BC +_080F0794: .4byte gUnknown_30030F0 +_080F0798: .4byte 0x00000439 +_080F079C: + mov r4, r8 + lsls r0, r4, 2 + add r0, r8 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] +_080F07AC: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80F06A4 + + thumb_func_start sub_80F07BC +sub_80F07BC: @ 80F07BC + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x30] + movs r3, 0x30 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080F07D4 + ldr r0, _080F07D0 @ =sub_80F07DC + str r0, [r1, 0x1C] + b _080F07D8 + .align 2, 0 +_080F07D0: .4byte sub_80F07DC +_080F07D4: + subs r0, r2, 0x1 + strh r0, [r1, 0x30] +_080F07D8: + pop {r0} + bx r0 + thumb_func_end sub_80F07BC + + thumb_func_start sub_80F07DC +sub_80F07DC: @ 80F07DC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x2 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + bne _080F0810 + adds r0, r4, 0 + bl sub_80F1198 +_080F0810: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F07DC + + thumb_func_start sub_80F0818 +sub_80F0818: @ 80F0818 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _080F08FC @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r3, [r1, 0xA] + str r3, [sp] + ldrb r0, [r1, 0xC] + str r0, [sp, 0x4] + ldrb r2, [r1, 0xE] + str r2, [sp, 0x8] + ldrb r1, [r1, 0x10] + str r1, [sp, 0xC] + movs r7, 0 + ldr r3, _080F0900 @ =gUnknown_202063C + mov r10, r3 + mov r1, r8 + lsls r0, r1, 1 + add r0, r8 + lsls r0, 3 + str r0, [sp, 0x10] +_080F085E: + ldr r0, _080F0904 @ =gUnknown_840C0A4 + ldr r2, [sp, 0x10] + adds r0, r2, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F08BE + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r3, r10 + adds r5, r4, r3 + ldr r0, _080F0908 @ =gUnknown_840C068 + add r0, r8 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F090C @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F0910 @ =sub_80F0D5C + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 5 + strh r0, [r5, 0x2E] + movs r0, 0xA + strh r0, [r5, 0x36] + movs r0, 0x2 + strh r0, [r5, 0x38] + movs r0, 0x1 + strh r0, [r5, 0x3A] +_080F08BE: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _080F085E + ldr r0, _080F0914 @ =gUnknown_30030F0 + ldr r1, _080F0918 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F08E6 + ldr r0, _080F0900 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F08E6: + mov r0, r9 + bl sub_8077508 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F08FC: .4byte gUnknown_3005090 +_080F0900: .4byte gUnknown_202063C +_080F0904: .4byte gUnknown_840C0A4 +_080F0908: .4byte gUnknown_840C068 +_080F090C: .4byte gUnknown_2020658 +_080F0910: .4byte sub_80F0D5C +_080F0914: .4byte gUnknown_30030F0 +_080F0918: .4byte 0x00000439 + thumb_func_end sub_80F0818 + + thumb_func_start sub_80F091C +sub_80F091C: @ 80F091C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _080F0A00 @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r3, [r1, 0xA] + str r3, [sp] + ldrb r0, [r1, 0xC] + str r0, [sp, 0x4] + ldrb r2, [r1, 0xE] + str r2, [sp, 0x8] + ldrb r1, [r1, 0x10] + str r1, [sp, 0xC] + movs r7, 0 + ldr r3, _080F0A04 @ =gUnknown_202063C + mov r10, r3 + mov r1, r8 + lsls r0, r1, 1 + add r0, r8 + lsls r0, 3 + str r0, [sp, 0x10] +_080F0962: + ldr r0, _080F0A08 @ =gUnknown_840C0A4 + ldr r2, [sp, 0x10] + adds r0, r2, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F09C2 + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r3, r10 + adds r5, r4, r3 + ldr r0, _080F0A0C @ =gUnknown_840C068 + add r0, r8 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F0A10 @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F0A14 @ =sub_80F0D5C + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 5 + strh r0, [r5, 0x2E] + movs r0, 0xA + strh r0, [r5, 0x36] + movs r0, 0x1 + strh r0, [r5, 0x38] + movs r0, 0x2 + strh r0, [r5, 0x3A] +_080F09C2: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _080F0962 + ldr r0, _080F0A18 @ =gUnknown_30030F0 + ldr r1, _080F0A1C @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F09EA + ldr r0, _080F0A04 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F09EA: + mov r0, r9 + bl sub_8077508 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0A00: .4byte gUnknown_3005090 +_080F0A04: .4byte gUnknown_202063C +_080F0A08: .4byte gUnknown_840C0A4 +_080F0A0C: .4byte gUnknown_840C068 +_080F0A10: .4byte gUnknown_2020658 +_080F0A14: .4byte sub_80F0D5C +_080F0A18: .4byte gUnknown_30030F0 +_080F0A1C: .4byte 0x00000439 + thumb_func_end sub_80F091C + + thumb_func_start sub_80F0A20 +sub_80F0A20: @ 80F0A20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _080F0B00 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x26] + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0xA] + str r2, [sp] + ldrb r3, [r0, 0xC] + str r3, [sp, 0x4] + ldrb r2, [r0, 0xE] + str r2, [sp, 0x8] + ldrb r0, [r0, 0x10] + str r0, [sp, 0xC] + movs r7, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [sp, 0x10] + ldr r3, _080F0B04 @ =gUnknown_202063C + mov r8, r3 + ldr r0, _080F0B08 @ =gUnknown_840C068 + adds r1, r0 + mov r10, r1 +_080F0A66: + ldr r0, _080F0B0C @ =gUnknown_840C0A4 + ldr r1, [sp, 0x10] + adds r0, r1, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F0AC2 + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r2, r8 + adds r5, r4, r2 + mov r3, r10 + ldrb r1, [r3] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F0B10 @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F0B14 @ =sub_80F0D5C + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 5 + strh r0, [r5, 0x2E] + movs r0, 0x4 + strh r0, [r5, 0x36] + movs r0, 0x1 + strh r0, [r5, 0x38] + strh r0, [r5, 0x3A] +_080F0AC2: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _080F0A66 + ldr r0, _080F0B18 @ =gUnknown_30030F0 + ldr r1, _080F0B1C @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F0AEA + ldr r0, _080F0B04 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F0AEA: + mov r0, r9 + bl sub_8077508 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0B00: .4byte gUnknown_3005090 +_080F0B04: .4byte gUnknown_202063C +_080F0B08: .4byte gUnknown_840C068 +_080F0B0C: .4byte gUnknown_840C0A4 +_080F0B10: .4byte gUnknown_2020658 +_080F0B14: .4byte sub_80F0D5C +_080F0B18: .4byte gUnknown_30030F0 +_080F0B1C: .4byte 0x00000439 + thumb_func_end sub_80F0A20 + + thumb_func_start sub_80F0B20 +sub_80F0B20: @ 80F0B20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _080F0C08 @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r3, [r1, 0xA] + str r3, [sp] + ldrb r0, [r1, 0xC] + str r0, [sp, 0x4] + ldrb r2, [r1, 0xE] + str r2, [sp, 0x8] + ldrb r1, [r1, 0x10] + str r1, [sp, 0xC] + movs r7, 0 + ldr r3, _080F0C0C @ =gUnknown_202063C + mov r10, r3 + mov r1, r8 + lsls r0, r1, 1 + add r0, r8 + lsls r0, 3 + str r0, [sp, 0x10] +_080F0B66: + ldr r0, _080F0C10 @ =gUnknown_840C0A4 + ldr r2, [sp, 0x10] + adds r0, r2, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F0BCA + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r3, r10 + adds r5, r4, r3 + ldr r0, _080F0C14 @ =gUnknown_840C068 + add r0, r8 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F0C18 @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F0C1C @ =sub_80F0D5C + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + adds r0, r7 + strh r0, [r5, 0x2E] + movs r0, 0x5 + strh r0, [r5, 0x36] + movs r0, 0x1 + strh r0, [r5, 0x38] + strh r0, [r5, 0x3A] +_080F0BCA: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x9 + bls _080F0B66 + ldr r0, _080F0C20 @ =gUnknown_30030F0 + ldr r1, _080F0C24 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F0BF2 + ldr r0, _080F0C0C @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F0BF2: + mov r0, r9 + bl sub_8077508 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0C08: .4byte gUnknown_3005090 +_080F0C0C: .4byte gUnknown_202063C +_080F0C10: .4byte gUnknown_840C0A4 +_080F0C14: .4byte gUnknown_840C068 +_080F0C18: .4byte gUnknown_2020658 +_080F0C1C: .4byte sub_80F0D5C +_080F0C20: .4byte gUnknown_30030F0 +_080F0C24: .4byte 0x00000439 + thumb_func_end sub_80F0B20 + + thumb_func_start sub_80F0C28 +sub_80F0C28: @ 80F0C28 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080F0C54 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r0, r2, r0 + lsls r0, 3 + adds r3, r0, r1 + ldrh r1, [r3, 0x16] + movs r4, 0x16 + ldrsh r0, [r3, r4] + cmp r0, 0 + beq _080F0C58 + subs r0, r1, 0x1 + strh r0, [r3, 0x16] + b _080F0D2A + .align 2, 0 +_080F0C54: .4byte gUnknown_3005090 +_080F0C58: + ldrh r0, [r3, 0x26] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r3, 0xA] + str r1, [sp] + ldrb r4, [r3, 0xC] + str r4, [sp, 0x4] + ldrb r1, [r3, 0xE] + str r1, [sp, 0x8] + ldrb r3, [r3, 0x10] + str r3, [sp, 0xC] + movs r7, 0 + str r2, [sp, 0x14] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + str r1, [sp, 0x10] + ldr r3, _080F0D3C @ =gUnknown_202063C + mov r9, r3 + ldr r1, _080F0D40 @ =gUnknown_840C068 + adds r0, r1 + mov r10, r0 +_080F0C84: + ldr r0, _080F0D44 @ =gUnknown_840C0A4 + ldr r4, [sp, 0x10] + adds r0, r4, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F0CE0 + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r0, r9 + adds r5, r4, r0 + mov r3, r10 + ldrb r1, [r3] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F0D48 @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F0D4C @ =sub_80F0D5C + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 5 + strh r0, [r5, 0x2E] + movs r0, 0x8 + strh r0, [r5, 0x36] + movs r0, 0x2 + strh r0, [r5, 0x38] + strh r0, [r5, 0x3A] +_080F0CE0: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _080F0C84 + ldr r0, _080F0D50 @ =gUnknown_3005090 + ldr r1, [sp, 0x14] + add r1, r8 + lsls r1, 3 + adds r1, r0 + movs r0, 0x8 + strh r0, [r1, 0x16] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0x2 + bne _080F0D2A + ldr r0, _080F0D54 @ =gUnknown_30030F0 + ldr r4, _080F0D58 @ =0x00000439 + adds r0, r4 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080F0D24 + ldr r0, _080F0D3C @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F0D24: + mov r0, r8 + bl sub_8077508 +_080F0D2A: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0D3C: .4byte gUnknown_202063C +_080F0D40: .4byte gUnknown_840C068 +_080F0D44: .4byte gUnknown_840C0A4 +_080F0D48: .4byte gUnknown_2020658 +_080F0D4C: .4byte sub_80F0D5C +_080F0D50: .4byte gUnknown_3005090 +_080F0D54: .4byte gUnknown_30030F0 +_080F0D58: .4byte 0x00000439 + thumb_func_end sub_80F0C28 + + thumb_func_start sub_80F0D5C +sub_80F0D5C: @ 80F0D5C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x2E] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + ldrh r2, [r4, 0x30] + adds r0, r2 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080F0DAC + adds r0, r4, 0 + bl sub_80F1198 +_080F0DAC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F0D5C + + thumb_func_start sub_80F0DB4 +sub_80F0DB4: @ 80F0DB4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _080F0E90 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x26] + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0xA] + str r2, [sp] + ldrb r3, [r0, 0xC] + str r3, [sp, 0x4] + ldrb r2, [r0, 0xE] + str r2, [sp, 0x8] + ldrb r0, [r0, 0x10] + str r0, [sp, 0xC] + movs r7, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [sp, 0x10] + ldr r3, _080F0E94 @ =gUnknown_202063C + mov r8, r3 + ldr r0, _080F0E98 @ =gUnknown_840C068 + adds r1, r0 + mov r10, r1 +_080F0DFA: + ldr r0, _080F0E9C @ =gUnknown_840C0A4 + ldr r1, [sp, 0x10] + adds r0, r1, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F0E52 + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r2, r8 + adds r5, r4, r2 + mov r3, r10 + ldrb r1, [r3] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F0EA0 @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F0EA4 @ =sub_80F0EB0 + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 2 + adds r0, r7 + strh r0, [r5, 0x2E] +_080F0E52: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0xB + bls _080F0DFA + ldr r0, _080F0EA8 @ =gUnknown_30030F0 + ldr r1, _080F0EAC @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F0E7A + ldr r0, _080F0E94 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F0E7A: + mov r0, r9 + bl sub_8077508 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0E90: .4byte gUnknown_3005090 +_080F0E94: .4byte gUnknown_202063C +_080F0E98: .4byte gUnknown_840C068 +_080F0E9C: .4byte gUnknown_840C0A4 +_080F0EA0: .4byte gUnknown_2020658 +_080F0EA4: .4byte sub_80F0EB0 +_080F0EA8: .4byte gUnknown_30030F0 +_080F0EAC: .4byte 0x00000439 + thumb_func_end sub_80F0DB4 + + thumb_func_start sub_80F0EB0 +sub_80F0EB0: @ 80F0EB0 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + movs r2, 0x30 + ldrsh r1, [r5, r2] + bl sub_8044E30 + strh r0, [r5, 0x24] + movs r0, 0x2E + ldrsh r4, [r5, r0] + movs r2, 0x32 + ldrsh r1, [r5, r2] + adds r0, r4, 0 + bl sub_8044E30 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_8044E4C + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x2E] + adds r0, 0x6 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080F0F08 + adds r0, r5, 0 + bl sub_80F1198 +_080F0F08: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F0EB0 + + thumb_func_start sub_80F0F10 +sub_80F0F10: @ 80F0F10 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + ldr r0, _080F0FC4 @ =gUnknown_3005090 + ldr r2, [sp] + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r3, [r1, 0xA] + str r3, [sp, 0x4] + ldrb r0, [r1, 0xC] + str r0, [sp, 0x8] + ldrb r2, [r1, 0xE] + str r2, [sp, 0xC] + ldrb r1, [r1, 0x10] + str r1, [sp, 0x10] + movs r3, 0 + mov r8, r3 + mov r1, r9 + lsls r0, r1, 1 + add r0, r9 + lsls r0, 3 + str r0, [sp, 0x14] +_080F0F54: + movs r7, 0 + movs r2, 0x1 + add r2, r8 + mov r10, r2 +_080F0F5C: + ldr r0, _080F0FC8 @ =gUnknown_840C0A4 + ldr r3, [sp, 0x14] + adds r0, r3, r0 + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + ldr r3, [sp, 0x10] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F0FE4 + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + ldr r0, _080F0FCC @ =gUnknown_202063C + adds r5, r4, r0 + ldr r0, _080F0FD0 @ =gUnknown_840C068 + add r0, r9 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_800838C + ldr r1, _080F0FD4 @ =gUnknown_2020658 + adds r4, r1 + ldr r0, _080F0FD8 @ =sub_80F0D5C + str r0, [r4] + movs r0, 0x3 + ldr r1, [sp, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r2, r3, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + lsls r0, r7, 5 + strh r0, [r5, 0x2E] + movs r0, 0x8 + strh r0, [r5, 0x36] + mov r0, r8 + cmp r0, 0 + bne _080F0FDC + movs r0, 0x2 + strh r0, [r5, 0x38] + movs r0, 0x1 + b _080F0FE2 + .align 2, 0 +_080F0FC4: .4byte gUnknown_3005090 +_080F0FC8: .4byte gUnknown_840C0A4 +_080F0FCC: .4byte gUnknown_202063C +_080F0FD0: .4byte gUnknown_840C068 +_080F0FD4: .4byte gUnknown_2020658 +_080F0FD8: .4byte sub_80F0D5C +_080F0FDC: + movs r0, 0x1 + strh r0, [r5, 0x38] + movs r0, 0x2 +_080F0FE2: + strh r0, [r5, 0x3A] +_080F0FE4: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _080F0F5C + mov r1, r10 + lsls r0, r1, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x1 + bls _080F0F54 + ldr r0, _080F1030 @ =gUnknown_30030F0 + ldr r2, _080F1034 @ =0x00000439 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F1018 + ldr r0, _080F1038 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F1018: + ldr r0, [sp] + bl sub_8077508 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F1030: .4byte gUnknown_30030F0 +_080F1034: .4byte 0x00000439 +_080F1038: .4byte gUnknown_202063C + thumb_func_end sub_80F0F10 + + thumb_func_start sub_80F103C +sub_80F103C: @ 80F103C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _080F1114 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x26] + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0xA] + str r2, [sp] + ldrb r3, [r0, 0xC] + str r3, [sp, 0x4] + ldrb r2, [r0, 0xE] + str r2, [sp, 0x8] + ldrb r0, [r0, 0x10] + str r0, [sp, 0xC] + movs r7, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + str r0, [sp, 0x10] + ldr r3, _080F1118 @ =gUnknown_202063C + mov r8, r3 + ldr r0, _080F111C @ =gUnknown_840C068 + adds r1, r0 + mov r10, r1 +_080F1082: + ldr r0, _080F1120 @ =gUnknown_840C0A4 + ldr r1, [sp, 0x10] + adds r0, r1, r0 + ldr r1, [sp] + ldr r2, [sp, 0x4] + ldr r3, [sp, 0xC] + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _080F10D4 + bl sub_80F0674 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + mov r2, r8 + adds r5, r4, r2 + mov r3, r10 + ldrb r1, [r3] + adds r0, r5, 0 + bl sub_800838C + ldr r0, _080F1124 @ =gUnknown_2020658 + adds r4, r0 + ldr r0, _080F1128 @ =sub_80F1134 + str r0, [r4] + movs r0, 0x3 + ldr r2, [sp, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r0, [r5, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + lsls r0, r7, 5 + strh r0, [r5, 0x2E] +_080F10D4: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _080F1082 + ldr r0, _080F112C @ =gUnknown_30030F0 + ldr r1, _080F1130 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F10FC + ldr r0, _080F1118 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] +_080F10FC: + mov r0, r9 + bl sub_8077508 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F1114: .4byte gUnknown_3005090 +_080F1118: .4byte gUnknown_202063C +_080F111C: .4byte gUnknown_840C068 +_080F1120: .4byte gUnknown_840C0A4 +_080F1124: .4byte gUnknown_2020658 +_080F1128: .4byte sub_80F1134 +_080F112C: .4byte gUnknown_30030F0 +_080F1130: .4byte 0x00000439 + thumb_func_end sub_80F103C + + thumb_func_start sub_80F1134 +sub_80F1134: @ 80F1134 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + movs r2, 0x30 + ldrsh r1, [r5, r2] + bl sub_8044E30 + strh r0, [r5, 0x24] + movs r0, 0x2E + ldrsh r4, [r5, r0] + ldrh r1, [r5, 0x2E] + movs r0, 0x3F + ands r0, r1 + movs r2, 0x32 + ldrsh r1, [r5, r2] + bl sub_8044E30 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_8044E4C + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x2E] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080F1190 + adds r0, r5, 0 + bl sub_80F1198 +_080F1190: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F1134 + + thumb_func_start sub_80F1198 +sub_80F1198: @ 80F1198 + push {r4-r7,lr} + adds r7, r0, 0 + ldr r0, _080F11BC @ =gUnknown_30030F0 + ldr r1, _080F11C0 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080F11C4 + movs r1, 0x3C + ldrsh r0, [r7, r1] + cmp r0, 0x1 + bne _080F11F6 + adds r0, r7, 0 + bl sub_8007804 + b _080F1212 + .align 2, 0 +_080F11BC: .4byte gUnknown_30030F0 +_080F11C0: .4byte 0x00000439 +_080F11C4: + ldr r2, _080F1200 @ =gUnknown_2024018 + ldr r0, [r2] + ldr r1, [r0, 0x8] + ldrb r0, [r1, 0xA] + subs r0, 0x1 + strb r0, [r1, 0xA] + ldr r0, [r2] + ldr r0, [r0, 0x8] + ldrb r0, [r0, 0xA] + cmp r0, 0 + bne _080F120C + movs r6, 0 + ldr r5, _080F1204 @ =gUnknown_840BF48 + ldr r4, _080F1208 @ =gUnknown_840BFA8 +_080F11E0: + ldrh r0, [r5, 0x6] + bl sub_800874C + ldrh r0, [r4, 0x4] + bl sub_8008A30 + adds r5, 0x8 + adds r4, 0x8 + adds r6, 0x1 + cmp r6, 0xB + ble _080F11E0 +_080F11F6: + adds r0, r7, 0 + bl sub_8007280 + b _080F1212 + .align 2, 0 +_080F1200: .4byte gUnknown_2024018 +_080F1204: .4byte gUnknown_840BF48 +_080F1208: .4byte gUnknown_840BFA8 +_080F120C: + adds r0, r7, 0 + bl sub_8007280 +_080F1212: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80F1198 + + thumb_func_start sub_80F1218 +sub_80F1218: @ 80F1218 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + mov r9, r2 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r3, 24 + lsrs r7, r3, 24 + ldr r0, _080F127C @ =sub_80F12E0 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080F1280 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r5, r0, r1 + strh r7, [r5, 0x26] + strh r6, [r5, 0xE] + mov r0, r9 + strh r0, [r5, 0x1C] + mov r1, r9 + lsrs r0, r1, 16 + strh r0, [r5, 0x1E] + cmp r4, 0 + bne _080F1288 + lsls r0, r6, 20 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 16 + ldr r2, _080F1284 @ =gUnknown_840C1C4 + lsls r1, r7, 1 + adds r1, r2 + ldrh r3, [r1] + movs r1, 0x10 + movs r2, 0 + bl sub_8045274 + movs r0, 0x1 + strh r0, [r5, 0xA] + b _080F12AE + .align 2, 0 +_080F127C: .4byte sub_80F12E0 +_080F1280: .4byte gUnknown_3005090 +_080F1284: .4byte gUnknown_840C1C4 +_080F1288: + lsls r0, r6, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + ldr r2, _080F12D0 @ =gUnknown_840C1C4 + lsls r1, r7, 1 + adds r1, r2 + ldrh r3, [r1] + movs r1, 0x10 + movs r2, 0x10 + bl sub_8045274 + movs r0, 0x10 + strh r0, [r5, 0x8] + ldr r0, _080F12D4 @ =0x0000ffff + strh r0, [r5, 0xA] + ldr r0, _080F12D8 @ =sub_80F1370 + str r0, [r5] +_080F12AE: + ldr r0, _080F12DC @ =0x00007fff + str r0, [sp] + mov r0, r9 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + mov r0, r8 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F12D0: .4byte gUnknown_840C1C4 +_080F12D4: .4byte 0x0000ffff +_080F12D8: .4byte sub_80F1370 +_080F12DC: .4byte 0x00007fff + thumb_func_end sub_80F1218 + + thumb_func_start sub_80F12E0 +sub_80F12E0: @ 80F12E0 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080F1330 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bgt _080F1338 + movs r2, 0xE + ldrsh r0, [r4, r2] + lsls r0, 20 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 16 + ldrb r2, [r4, 0x8] + ldr r3, _080F1334 @ =gUnknown_840C1C4 + lsls r1, 1 + adds r1, r3 + ldrh r3, [r1] + movs r1, 0x10 + bl sub_8045274 + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x8] + adds r0, r1 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080F1360 + .align 2, 0 +_080F1330: .4byte gUnknown_3005090 +_080F1334: .4byte gUnknown_840C1C4 +_080F1338: + ldr r0, _080F1368 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F1360 + ldrh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + lsls r1, 16 + orrs r0, r1 + ldr r1, _080F136C @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + adds r0, r5, 0 + bl sub_8077508 +_080F1360: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F1368: .4byte gUnknown_2037AB8 +_080F136C: .4byte 0x00007fff + thumb_func_end sub_80F12E0 + + thumb_func_start sub_80F1370 +sub_80F1370: @ 80F1370 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080F13B0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F13A8 + ldr r0, _080F13B4 @ =gUnknown_3005090 + lsls r4, r2, 2 + adds r4, r2 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + lsls r1, 16 + orrs r0, r1 + ldr r1, _080F13B8 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080F13BC @ =sub_80F13C0 + str r0, [r4] +_080F13A8: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F13B0: .4byte gUnknown_2037AB8 +_080F13B4: .4byte gUnknown_3005090 +_080F13B8: .4byte 0x00007fff +_080F13BC: .4byte sub_80F13C0 + thumb_func_end sub_80F1370 + + thumb_func_start sub_80F13C0 +sub_80F13C0: @ 80F13C0 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080F140C @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r1, r0, 24 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0x10 + bgt _080F1414 + movs r2, 0xE + ldrsh r0, [r4, r2] + lsls r0, 20 + movs r3, 0x80 + lsls r3, 17 + adds r0, r3 + lsrs r0, 16 + ldrb r2, [r4, 0x8] + ldr r3, _080F1410 @ =gUnknown_840C1C4 + lsls r1, 1 + adds r1, r3 + ldrh r3, [r1] + movs r1, 0x10 + bl sub_8045274 + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x8] + adds r0, r1 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080F141A + .align 2, 0 +_080F140C: .4byte gUnknown_3005090 +_080F1410: .4byte gUnknown_840C1C4 +_080F1414: + adds r0, r2, 0 + bl sub_8077508 +_080F141A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F13C0 + + thumb_func_start sub_80F1420 +sub_80F1420: @ 80F1420 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0 + mov r8, r0 + ldr r0, _080F1454 @ =gUnknown_2023D44 + ldr r3, _080F1458 @ =gUnknown_2037F1A + ldrb r2, [r3] + adds r0, r2, r0 + ldrb r6, [r0] + ldr r1, _080F145C @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080F14F8 + cmp r0, 0x1 + bgt _080F1460 + cmp r0, 0 + beq _080F1466 + b _080F15BA + .align 2, 0 +_080F1454: .4byte gUnknown_2023D44 +_080F1458: .4byte gUnknown_2037F1A +_080F145C: .4byte gUnknown_3005090 +_080F1460: + cmp r0, 0x2 + beq _080F150A + b _080F15BA +_080F1466: + ldr r0, _080F14A0 @ =gUnknown_2037F02 + ldrh r0, [r0] + strh r0, [r5, 0x1E] + movs r2, 0xA0 + lsls r2, 3 + adds r0, r2, 0 + ldrh r4, [r5, 0x8] + adds r0, r4 + strh r0, [r5, 0x8] + ldrb r0, [r3] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080F14A8 + ldr r2, _080F14A4 @ =gUnknown_202063C + lsls r3, r6, 4 + adds r1, r3, r6 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 24 + ldrh r4, [r1, 0x24] + adds r0, r4 + strh r0, [r1, 0x24] + adds r4, r3, 0 + b _080F14C0 + .align 2, 0 +_080F14A0: .4byte gUnknown_2037F02 +_080F14A4: .4byte gUnknown_202063C +_080F14A8: + ldr r3, _080F14F0 @ =gUnknown_202063C + lsls r4, r6, 4 + adds r2, r4, r6 + lsls r2, 2 + adds r2, r3 + ldrh r1, [r5, 0x8] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + adds r2, r3, 0 +_080F14C0: + ldr r1, _080F14F4 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r3, r0, r1 + ldrb r0, [r3, 0x8] + strh r0, [r3, 0x8] + adds r0, r4, r6 + lsls r0, 2 + adds r0, r2 + movs r2, 0x20 + ldrsh r1, [r0, r2] + movs r4, 0x24 + ldrsh r0, [r0, r4] + adds r1, r0 + adds r1, 0x20 + movs r0, 0x98 + lsls r0, 1 + cmp r1, r0 + bls _080F15BA + ldrh r0, [r3, 0x1C] + adds r0, 0x1 + strh r0, [r3, 0x1C] + b _080F15BA + .align 2, 0 +_080F14F0: .4byte gUnknown_202063C +_080F14F4: .4byte gUnknown_3005090 +_080F14F8: + ldrb r1, [r5, 0x1E] + adds r0, r2, 0 + adds r2, r6, 0 + bl sub_80351A8 + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + b _080F15BA +_080F150A: + movs r1, 0xA0 + lsls r1, 3 + adds r0, r1, 0 + ldrh r2, [r5, 0x8] + adds r0, r2 + strh r0, [r5, 0x8] + ldrb r0, [r3] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080F1540 + ldr r0, _080F153C @ =gUnknown_202063C + lsls r3, r6, 4 + adds r2, r3, r6 + lsls r2, 2 + adds r2, r0 + ldrh r1, [r5, 0x8] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + adds r4, r3, 0 + b _080F1558 + .align 2, 0 +_080F153C: .4byte gUnknown_202063C +_080F1540: + ldr r0, _080F158C @ =gUnknown_202063C + lsls r2, r6, 4 + adds r1, r2, r6 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 24 + ldrh r3, [r1, 0x24] + adds r0, r3 + strh r0, [r1, 0x24] + adds r4, r2, 0 +_080F1558: + ldr r1, _080F1590 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0x8] + strh r1, [r0, 0x8] + ldr r0, _080F1594 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _080F1598 + ldr r0, _080F158C @ =gUnknown_202063C + adds r1, r4, r6 + lsls r1, 2 + adds r1, r0 + movs r4, 0x24 + ldrsh r0, [r1, r4] + cmp r0, 0 + bgt _080F15AE + movs r0, 0 + strh r0, [r1, 0x24] + b _080F15B4 + .align 2, 0 +_080F158C: .4byte gUnknown_202063C +_080F1590: .4byte gUnknown_3005090 +_080F1594: .4byte gUnknown_2037F1A +_080F1598: + ldr r0, _080F15C4 @ =gUnknown_202063C + adds r1, r4, r6 + lsls r1, 2 + adds r1, r0 + movs r3, 0x24 + ldrsh r0, [r1, r3] + cmp r0, 0 + blt _080F15AE + strh r2, [r1, 0x24] + movs r4, 0x1 + mov r8, r4 +_080F15AE: + mov r0, r8 + cmp r0, 0 + beq _080F15BA +_080F15B4: + adds r0, r7, 0 + bl sub_8072760 +_080F15BA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F15C4: .4byte gUnknown_202063C + thumb_func_end sub_80F1420 + + thumb_func_start sub_80F15C8 +sub_80F15C8: @ 80F15C8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080F15EC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x26 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080F1644 + cmp r0, 0x1 + bgt _080F15F0 + cmp r0, 0 + beq _080F15F6 + b _080F16B4 + .align 2, 0 +_080F15EC: .4byte gUnknown_3005090 +_080F15F0: + cmp r0, 0x2 + beq _080F167E + b _080F16B4 +_080F15F6: + ldr r0, _080F1610 @ =gUnknown_2037F1A + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080F1618 + ldr r1, _080F1614 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + b _080F1620 + .align 2, 0 +_080F1610: .4byte gUnknown_2037F1A +_080F1614: .4byte 0x00003f42 +_080F1618: + ldr r1, _080F163C @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 +_080F1620: + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + ldr r0, _080F1640 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080F16B4 + .align 2, 0 +_080F163C: .4byte 0x00003f44 +_080F1640: .4byte gUnknown_3005090 +_080F1644: + ldrh r0, [r4, 0xA] + adds r1, r0, 0x1 + strh r1, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080F16B4 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r2, [r4, 0x8] + adds r2, 0x1 + strh r2, [r4, 0x8] + lsls r1, r2, 8 + movs r0, 0x10 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + bne _080F16B4 + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + b _080F16B4 +_080F167E: + ldr r1, _080F16BC @ =gUnknown_2023D44 + ldr r4, _080F16C0 @ =gUnknown_2037F1A + ldrb r0, [r4] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _080F16C4 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r0, _080F16C8 @ =0x06010000 + adds r1, r0 + movs r2, 0x80 + lsls r2, 4 + movs r0, 0 + movs r3, 0x1 + bl sub_8000F44 + ldrb r0, [r4] + bl sub_8035228 + adds r0, r5, 0 + bl sub_8072760 +_080F16B4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F16BC: .4byte gUnknown_2023D44 +_080F16C0: .4byte gUnknown_2037F1A +_080F16C4: .4byte gUnknown_202063C +_080F16C8: .4byte 0x06010000 + thumb_func_end sub_80F15C8 + + thumb_func_start sub_80F16CC +sub_80F16CC: @ 80F16CC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080F16F4 @ =gUnknown_2037F02 + ldr r1, _080F16F8 @ =gUnknown_2024018 + ldr r2, [r1] + ldr r1, _080F16FC @ =gUnknown_2037F1A + ldrb r1, [r1] + ldr r2, [r2] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + lsls r1, 29 + lsrs r1, 31 + strh r1, [r3, 0xE] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080F16F4: .4byte gUnknown_2037F02 +_080F16F8: .4byte gUnknown_2024018 +_080F16FC: .4byte gUnknown_2037F1A + thumb_func_end sub_80F16CC + + thumb_func_start sub_80F1700 +sub_80F1700: @ 80F1700 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F1718 @ =gUnknown_2037F1B + ldr r1, _080F171C @ =gUnknown_2023D6E + ldrb r1, [r1] + strb r1, [r2] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080F1718: .4byte gUnknown_2037F1B +_080F171C: .4byte gUnknown_2023D6E + thumb_func_end sub_80F1700 + + thumb_func_start sub_80F1720 +sub_80F1720: @ 80F1720 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + mov r8, r0 + ldr r0, _080F17DC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r4, r0, 0 + adds r0, r6, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080F17F8 + lsrs r0, r5, 16 + ldr r7, _080F17E0 @ =0x0000ffff + ands r5, r7 + eors r0, r5 + lsrs r1, r4, 16 + eors r0, r1 + ands r4, r7 + eors r0, r4 + cmp r0, 0x7 + bhi _080F177E + movs r0, 0x1 + mov r8, r0 +_080F177E: + mov r0, r8 + cmp r0, 0 + beq _080F17F8 + ldr r0, _080F17E4 @ =0x000027f9 + bl sub_8008804 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r7 + bne _080F179E + ldr r0, _080F17E8 @ =gUnknown_83AD350 + bl sub_800F034 + ldr r0, _080F17EC @ =gUnknown_83ADC58 + bl sub_800F078 +_080F179E: + ldr r5, _080F17F0 @ =sub_80F181C + adds r0, r5, 0 + movs r1, 0xA + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080F17F4 @ =gUnknown_3005090 + lsls r2, r4, 2 + adds r2, r4 + lsls r2, 3 + adds r2, r3 + movs r4, 0 + strh r6, [r2, 0x8] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r3 + strh r6, [r1, 0x8] + strh r4, [r2, 0xA] + movs r0, 0x1 + strh r0, [r1, 0xA] + b _080F180E + .align 2, 0 +_080F17DC: .4byte gUnknown_2024018 +_080F17E0: .4byte 0x0000ffff +_080F17E4: .4byte 0x000027f9 +_080F17E8: .4byte gUnknown_83AD350 +_080F17EC: .4byte gUnknown_83ADC58 +_080F17F0: .4byte sub_80F181C +_080F17F4: .4byte gUnknown_3005090 +_080F17F8: + ldr r0, _080F1818 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x1] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x1] +_080F180E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F1818: .4byte gUnknown_2024018 + thumb_func_end sub_80F1720 + + thumb_func_start sub_80F181C +sub_80F181C: @ 80F181C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080F1844 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x22] + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r0, 0x3B + bgt _080F1848 + adds r0, r1, 0x1 + strh r0, [r4, 0x22] + b _080F19C0 + .align 2, 0 +_080F1844: .4byte gUnknown_3005090 +_080F1848: + ldr r0, _080F189C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r0, [r0, 0xA] + cmp r0, 0 + beq _080F1856 + b _080F19C0 +_080F1856: + ldrh r0, [r4, 0x1C] + adds r1, r0, 0x1 + strh r1, [r4, 0x1C] + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + cmp r1, 0 + beq _080F186A + b _080F19C0 +_080F186A: + ldrb r0, [r4, 0x8] + mov r8, r0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080F18A4 + ldr r0, _080F18A0 @ =gUnknown_83FF168 + adds r1, r5, 0 + movs r3, 0x5 + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + b _080F1906 + .align 2, 0 +_080F189C: .4byte gUnknown_2024018 +_080F18A0: .4byte gUnknown_83FF168 +_080F18A4: + cmp r0, 0 + blt _080F18D8 + cmp r0, 0x3 + bgt _080F18D8 + ldr r0, _080F18D0 @ =gUnknown_83FF180 + adds r1, r5, 0 + movs r3, 0x5 + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080F18D4 @ =gUnknown_202063C + lsls r2, r5, 4 + adds r2, r5 + lsls r2, 2 + adds r2, r0 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x4 + b _080F18F8 + .align 2, 0 +_080F18D0: .4byte gUnknown_83FF180 +_080F18D4: .4byte gUnknown_202063C +_080F18D8: + ldr r0, _080F1930 @ =gUnknown_83FF180 + adds r1, r5, 0 + movs r3, 0x5 + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080F1934 @ =gUnknown_202063C + lsls r2, r5, 4 + adds r2, r5 + lsls r2, 2 + adds r2, r0 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x5 +_080F18F8: + ldr r4, _080F1938 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080F193C @ =0xfffffc00 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] +_080F1906: + ldr r2, _080F1940 @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r0, r1, r7 + lsls r0, 3 + adds r6, r0, r2 + movs r2, 0xA + ldrsh r0, [r6, r2] + mov r9, r1 + cmp r0, 0 + bne _080F1948 + ldr r1, _080F1934 @ =gUnknown_202063C + lsls r2, r5, 4 + adds r0, r2, r5 + lsls r0, 2 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080F1944 @ =sub_80F1A2C + str r1, [r0] + adds r4, r2, 0 + b _080F1990 + .align 2, 0 +_080F1930: .4byte gUnknown_83FF180 +_080F1934: .4byte gUnknown_202063C +_080F1938: .4byte 0x000003ff +_080F193C: .4byte 0xfffffc00 +_080F1940: .4byte gUnknown_3005090 +_080F1944: .4byte sub_80F1A2C +_080F1948: + ldr r3, _080F19CC @ =gUnknown_202063C + lsls r4, r5, 4 + adds r1, r4, r5 + lsls r1, 2 + adds r0, r3, 0 + adds r0, 0x1C + adds r0, r1, r0 + ldr r2, _080F19D0 @ =sub_80F1A80 + str r2, [r0] + adds r1, r3 + ldr r0, _080F19D4 @ =0x0000ffe0 + strh r0, [r1, 0x24] + movs r0, 0x20 + strh r0, [r1, 0x26] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + movs r1, 0x1E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080F1990 + mov r0, r8 + bl sub_80751C4 + lsls r0, 24 + movs r1, 0x3F + cmp r0, 0 + bne _080F1986 + movs r1, 0xC0 +_080F1986: + lsls r1, 24 + asrs r1, 24 + movs r0, 0x5F + bl sub_80722F4 +_080F1990: + ldr r1, _080F19CC @ =gUnknown_202063C + adds r0, r4, r5 + lsls r0, 2 + adds r0, r1 + strh r7, [r0, 0x2E] + ldr r1, _080F19D8 @ =gUnknown_3005090 + mov r2, r9 + adds r0, r2, r7 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + cmp r5, 0x40 + beq _080F19B4 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] +_080F19B4: + movs r4, 0x1E + ldrsh r0, [r1, r4] + cmp r0, 0x5 + bne _080F19C0 + ldr r0, _080F19DC @ =sub_80F19E0 + str r0, [r1] +_080F19C0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F19CC: .4byte gUnknown_202063C +_080F19D0: .4byte sub_80F1A80 +_080F19D4: .4byte 0x0000ffe0 +_080F19D8: .4byte gUnknown_3005090 +_080F19DC: .4byte sub_80F19E0 + thumb_func_end sub_80F181C + + thumb_func_start sub_80F19E0 +sub_80F19E0: @ 80F19E0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r3, r0, 0 + ldr r1, _080F1A24 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0x20 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080F1A20 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080F1A1A + ldrb r1, [r1, 0x8] + ldr r0, _080F1A28 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x1] +_080F1A1A: + adds r0, r3, 0 + bl sub_8077508 +_080F1A20: + pop {r0} + bx r0 + .align 2, 0 +_080F1A24: .4byte gUnknown_3005090 +_080F1A28: .4byte gUnknown_2024018 + thumb_func_end sub_80F19E0 + + thumb_func_start sub_80F1A2C +sub_80F1A2C: @ 80F1A2C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x18 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x18 + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0xC + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080F1A76 + ldr r2, _080F1A7C @ =gUnknown_3005090 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x20] + subs r1, 0x1 + strh r1, [r0, 0x20] + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 +_080F1A76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1A7C: .4byte gUnknown_3005090 + thumb_func_end sub_80F1A2C + + thumb_func_start sub_80F1A80 +sub_80F1A80: @ 80F1A80 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + bgt _080F1A94 + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + b _080F1AD6 +_080F1A94: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrh r1, [r4, 0x24] + adds r1, 0x5 + strh r1, [r4, 0x24] + ldrh r0, [r4, 0x26] + subs r0, 0x5 + strh r0, [r4, 0x26] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x20 + ble _080F1AD6 + ldr r2, _080F1ADC @ =gUnknown_3005090 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x20] + subs r1, 0x1 + strh r1, [r0, 0x20] + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 +_080F1AD6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1ADC: .4byte gUnknown_3005090 + thumb_func_end sub_80F1A80 + + thumb_func_start sub_80F1AE0 +sub_80F1AE0: @ 80F1AE0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080F1B08 @ =gUnknown_83AD470 + bl sub_800F034 + ldr r0, _080F1B0C @ =gUnknown_83ADD78 + bl sub_800F078 + ldr r0, _080F1B10 @ =0x0000281d + bl sub_80089E8 + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1B08: .4byte gUnknown_83AD470 +_080F1B0C: .4byte gUnknown_83ADD78 +_080F1B10: .4byte 0x0000281d + thumb_func_end sub_80F1AE0 + + thumb_func_start sub_80F1B14 +sub_80F1B14: @ 80F1B14 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _080F1B38 @ =0x0000281d + adds r0, r5, 0 + bl sub_800874C + adds r0, r5, 0 + bl sub_8008A30 + adds r0, r4, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F1B38: .4byte 0x0000281d + thumb_func_end sub_80F1B14 + + thumb_func_start sub_80F1B3C +sub_80F1B3C: @ 80F1B3C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8075160 + movs r0, 0x1E + strh r0, [r4, 0x2E] + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + ldr r5, _080F1BB0 @ =gUnknown_2037F02 + lsrs r0, 24 + ldrh r1, [r5, 0x4] + adds r0, r1 + strh r0, [r4, 0x32] + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r4, 0x36] + ldr r0, _080F1BB4 @ =0x0000ffe0 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r2, _080F1BB8 @ =gUnknown_202063C + ldr r1, _080F1BBC @ =gUnknown_2023D44 + ldr r0, _080F1BC0 @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080F1BC4 @ =sub_8012354 + str r1, [r0] + ldr r0, _080F1BC8 @ =sub_80F1BCC + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F1BB0: .4byte gUnknown_2037F02 +_080F1BB4: .4byte 0x0000ffe0 +_080F1BB8: .4byte gUnknown_202063C +_080F1BBC: .4byte gUnknown_2023D44 +_080F1BC0: .4byte gUnknown_2037F1A +_080F1BC4: .4byte sub_8012354 +_080F1BC8: .4byte sub_80F1BCC + thumb_func_end sub_80F1B3C + + thumb_func_start sub_80F1BCC +sub_80F1BCC: @ 80F1BCC + push {lr} + adds r3, r0, 0 + ldr r2, _080F1BF4 @ =gUnknown_202063C + ldr r1, _080F1BF8 @ =gUnknown_2023D44 + ldr r0, _080F1BFC @ =gUnknown_2037F1A + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0x1 + bne _080F1BF0 + ldr r0, _080F1C00 @ =sub_80F1C04 + str r0, [r3, 0x1C] +_080F1BF0: + pop {r0} + bx r0 + .align 2, 0 +_080F1BF4: .4byte gUnknown_202063C +_080F1BF8: .4byte gUnknown_2023D44 +_080F1BFC: .4byte gUnknown_2037F1A +_080F1C00: .4byte sub_80F1C04 + thumb_func_end sub_80F1BCC + + thumb_func_start sub_80F1C04 +sub_80F1C04: @ 80F1C04 + push {r4,lr} + adds r4, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _080F1C26 + movs r0, 0 + strh r0, [r4, 0x2E] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080F1C2C @ =sub_80F1C30 + str r0, [r4, 0x1C] +_080F1C26: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1C2C: .4byte sub_80F1C30 + thumb_func_end sub_80F1C04 + + thumb_func_start sub_80F1C30 +sub_80F1C30: @ 80F1C30 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080F1C80 @ =gUnknown_202063C + ldr r3, _080F1C84 @ =gUnknown_2023D44 + ldr r2, _080F1C88 @ =gUnknown_2037F1A + ldrb r0, [r2] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + bge _080F1C78 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + ble _080F1C78 + ldrb r0, [r2] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0 + bl sub_800838C + adds r0, r4, 0 + bl sub_8072740 +_080F1C78: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F1C80: .4byte gUnknown_202063C +_080F1C84: .4byte gUnknown_2023D44 +_080F1C88: .4byte gUnknown_2037F1A + thumb_func_end sub_80F1C30 + + thumb_func_start sub_80F1C8C +sub_80F1C8C: @ 80F1C8C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080F1CA4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080F1CA8 + cmp r0, 0x1 + beq _080F1CBC + b _080F1CD0 + .align 2, 0 +_080F1CA4: .4byte gUnknown_2037F02 +_080F1CA8: + movs r0, 0 + bl sub_80751E8 + ldr r1, _080F1CB8 @ =gUnknown_2037F1A + strb r0, [r1] + movs r0, 0x1 + b _080F1CC8 + .align 2, 0 +_080F1CB8: .4byte gUnknown_2037F1A +_080F1CBC: + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _080F1CDC @ =gUnknown_2037F1A + strb r0, [r1] + movs r0, 0 +_080F1CC8: + bl sub_80751E8 + ldr r1, _080F1CE0 @ =gUnknown_2037F1B + strb r0, [r1] +_080F1CD0: + adds r0, r4, 0 + bl sub_8072760 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1CDC: .4byte gUnknown_2037F1A +_080F1CE0: .4byte gUnknown_2037F1B + thumb_func_end sub_80F1C8C + + thumb_func_start sub_80F1CE4 +sub_80F1CE4: @ 80F1CE4 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080F1CF8 @ =gUnknown_2023E82 + ldrb r0, [r2, 0x5] + cmp r0, 0x2 + bls _080F1D00 + ldr r1, _080F1CFC @ =gUnknown_2037F02 + movs r0, 0 + b _080F1D04 + .align 2, 0 +_080F1CF8: .4byte gUnknown_2023E82 +_080F1CFC: .4byte gUnknown_2037F02 +_080F1D00: + ldr r1, _080F1D10 @ =gUnknown_2037F02 + ldrb r0, [r2, 0x5] +_080F1D04: + strh r0, [r1, 0xE] + adds r0, r3, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080F1D10: .4byte gUnknown_2037F02 + thumb_func_end sub_80F1CE4 + + thumb_func_start sub_80F1D14 +sub_80F1D14: @ 80F1D14 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080F1D2C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrh r1, [r0] + cmp r1, 0x53 + bne _080F1D34 + ldr r1, _080F1D30 @ =gUnknown_2037F02 + movs r0, 0x1 + b _080F1D6C + .align 2, 0 +_080F1D2C: .4byte gUnknown_2024018 +_080F1D30: .4byte gUnknown_2037F02 +_080F1D34: + cmp r1, 0xFA + bne _080F1D44 + ldr r1, _080F1D40 @ =gUnknown_2037F02 + movs r0, 0x2 + b _080F1D6C + .align 2, 0 +_080F1D40: .4byte gUnknown_2037F02 +_080F1D44: + cmp r1, 0x80 + bne _080F1D54 + ldr r1, _080F1D50 @ =gUnknown_2037F02 + movs r0, 0x3 + b _080F1D6C + .align 2, 0 +_080F1D50: .4byte gUnknown_2037F02 +_080F1D54: + movs r0, 0xA4 + lsls r0, 1 + cmp r1, r0 + bne _080F1D68 + ldr r1, _080F1D64 @ =gUnknown_2037F02 + movs r0, 0x4 + b _080F1D6C + .align 2, 0 +_080F1D64: .4byte gUnknown_2037F02 +_080F1D68: + ldr r1, _080F1D78 @ =gUnknown_2037F02 + movs r0, 0 +_080F1D6C: + strh r0, [r1] + adds r0, r2, 0 + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080F1D78: .4byte gUnknown_2037F02 + thumb_func_end sub_80F1D14 + + thumb_func_start sub_80F1D7C +sub_80F1D7C: @ 80F1D7C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080F1DA0 @ =gUnknown_2037F1A + ldr r1, _080F1DA4 @ =gUnknown_2024018 + ldr r2, [r1] + ldr r1, [r2, 0x8] + ldrh r1, [r1] + strb r1, [r3] + ldr r3, _080F1DA8 @ =gUnknown_2037F1B + ldr r1, [r2, 0x8] + ldrh r1, [r1] + lsrs r1, 8 + strb r1, [r3] + bl sub_8072760 + pop {r0} + bx r0 + .align 2, 0 +_080F1DA0: .4byte gUnknown_2037F1A +_080F1DA4: .4byte gUnknown_2024018 +_080F1DA8: .4byte gUnknown_2037F1B + thumb_func_end sub_80F1D7C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s new file mode 100644 index 000000000..0af245c09 --- /dev/null +++ b/asm/battle_anim_sound_tasks.s @@ -0,0 +1,927 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80DCE10 +sub_80DCE10: @ 80DCE10 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080DCE6C @ =gUnknown_3005090 + lsls r6, r0, 2 + adds r6, r0 + lsls r6, 3 + adds r6, r1 + ldr r1, _080DCE70 @ =gUnknown_2037F02 + ldrh r0, [r1] + strh r0, [r6, 0x8] + ldrh r0, [r1, 0x2] + strh r0, [r6, 0xA] + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x3F + bl sub_8073A44 + adds r5, r0, 0 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_8073B88 + strh r4, [r6, 0xC] + strh r5, [r6, 0xE] + lsls r0, 24 + asrs r0, 24 + strh r0, [r6, 0x10] + movs r0, 0xA + strh r0, [r6, 0x1C] + ldr r0, _080DCE74 @ =sub_80DCE78 + str r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DCE6C: .4byte gUnknown_3005090 +_080DCE70: .4byte gUnknown_2037F02 +_080DCE74: .4byte sub_80DCE78 + thumb_func_end sub_80DCE10 + + thumb_func_start sub_80DCE78 +sub_80DCE78: @ 80DCE78 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DCEA8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r5, [r4, 0xC] + ldrb r6, [r4, 0x10] + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6F + bne _080DCEB0 + movs r0, 0x5 + strh r0, [r4, 0x1C] + strh r1, [r4, 0x1E] + ldr r0, _080DCEAC @ =sub_80DCEE4 + str r0, [r4] + b _080DCEDE + .align 2, 0 +_080DCEA8: .4byte gUnknown_3005090 +_080DCEAC: .4byte sub_80DCEE4 +_080DCEB0: + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _080DCECA + strh r1, [r4, 0x1C] + ldrh r0, [r4, 0x8] + lsls r1, r5, 24 + asrs r1, 24 + bl sub_80722F4 +_080DCECA: + lsls r1, r6, 24 + asrs r1, 24 + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + asrs r0, 16 + bl sub_8073B60 + strh r0, [r4, 0xC] +_080DCEDE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DCE78 + + thumb_func_start sub_80DCEE4 +sub_80DCEE4: @ 80DCEE4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080DCF34 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080DCF2C + movs r0, 0 + strh r0, [r4, 0x1C] + movs r0, 0x3F + bl sub_8073A44 + adds r1, r0, 0 + ldrh r0, [r4, 0xA] + lsls r1, 24 + asrs r1, 24 + bl sub_80722F4 + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080DCF2C + adds r0, r5, 0 + bl sub_807277C +_080DCF2C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DCF34: .4byte gUnknown_3005090 + thumb_func_end sub_80DCEE4 + + thumb_func_start sub_80DCF38 +sub_80DCF38: @ 80DCF38 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _080DCFDC @ =gUnknown_2037F02 + ldrh r1, [r0] + str r1, [sp] + ldrb r5, [r0, 0x4] + ldrb r6, [r0, 0x6] + ldrb r3, [r0, 0x8] + mov r10, r3 + ldrb r7, [r0, 0xA] + ldrb r1, [r0, 0xC] + mov r9, r1 + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + asrs r5, 24 + adds r0, r5, 0 + bl sub_8073A44 + adds r5, r0, 0 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8073B88 + ldr r2, _080DCFE0 @ =gUnknown_3005090 + mov r3, r8 + lsls r1, r3, 2 + add r1, r8 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + mov r6, sp + ldrh r6, [r6] + strh r6, [r1, 0x8] + strh r4, [r1, 0xA] + strh r5, [r1, 0xC] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1, 0xE] + mov r0, r10 + strh r0, [r1, 0x10] + strh r7, [r1, 0x12] + mov r3, r9 + strh r3, [r1, 0x14] + strh r2, [r1, 0x1C] + strh r4, [r1, 0x1E] + strh r3, [r1, 0x20] + ldr r2, _080DCFE4 @ =sub_80DCFE8 + str r2, [r1] + mov r0, r8 + bl _call_via_r2 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DCFDC: .4byte gUnknown_2037F02 +_080DCFE0: .4byte gUnknown_3005090 +_080DCFE4: .4byte sub_80DCFE8 + thumb_func_end sub_80DCF38 + + thumb_func_start sub_80DCFE8 +sub_80DCFE8: @ 80DCFE8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080DD02C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x20] + adds r1, r0, 0x1 + strh r1, [r4, 0x20] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x14 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080DD030 + movs r0, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x8] + movs r1, 0x1E + ldrsb r1, [r4, r1] + bl sub_80722F4 + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bne _080DD030 + adds r0, r5, 0 + bl sub_807277C + b _080DD062 + .align 2, 0 +_080DD02C: .4byte gUnknown_3005090 +_080DD030: + ldr r1, _080DD068 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x1C] + adds r1, r0, 0x1 + strh r1, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x12 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080DD062 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r0, [r4, 0xE] + ldrh r1, [r4, 0x1E] + adds r0, r1 + strh r0, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + bl sub_8073B60 + strh r0, [r4, 0x1E] +_080DD062: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD068: .4byte gUnknown_3005090 + thumb_func_end sub_80DCFE8 + + thumb_func_start sub_80DD06C +sub_80DD06C: @ 80DD06C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080DD090 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DD098 + ldr r0, _080DD094 @ =gUnknown_2037F1A + ldrb r4, [r0] + b _080DD0BE + .align 2, 0 +_080DD090: .4byte gUnknown_2037F02 +_080DD094: .4byte gUnknown_2037F1A +_080DD098: + cmp r0, 0x1 + bne _080DD0A8 + ldr r0, _080DD0A4 @ =gUnknown_2037F1B + ldrb r4, [r0] + b _080DD0BE + .align 2, 0 +_080DD0A4: .4byte gUnknown_2037F1B +_080DD0A8: + cmp r0, 0x2 + bne _080DD0B4 + ldr r0, _080DD0B0 @ =gUnknown_2037F1A + b _080DD0B6 + .align 2, 0 +_080DD0B0: .4byte gUnknown_2037F1A +_080DD0B4: + ldr r0, _080DD0E0 @ =gUnknown_2037F1B +_080DD0B6: + ldrb r1, [r0] + movs r0, 0x2 + adds r4, r0, 0 + eors r4, r1 +_080DD0BE: + ldr r0, _080DD0E4 @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080DD0CC + cmp r0, 0x3 + bne _080DD0E8 +_080DD0CC: + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _080DD0E8 + adds r0, r5, 0 + bl sub_8072760 + b _080DD13A + .align 2, 0 +_080DD0E0: .4byte gUnknown_2037F1B +_080DD0E4: .4byte gUnknown_2037F02 +_080DD0E8: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080DD10C + ldr r1, _080DD104 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080DD108 @ =gUnknown_202402C + b _080DD11A + .align 2, 0 +_080DD104: .4byte gUnknown_2023BCE +_080DD108: .4byte gUnknown_202402C +_080DD10C: + ldr r1, _080DD140 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080DD144 @ =gUnknown_2024284 +_080DD11A: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080DD134 + lsls r1, r6, 24 + asrs r1, 24 + movs r2, 0x3 + bl sub_8071E60 +_080DD134: + adds r0, r5, 0 + bl sub_8072760 +_080DD13A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DD140: .4byte gUnknown_2023BCE +_080DD144: .4byte gUnknown_2024284 + thumb_func_end sub_80DD06C + + thumb_func_start sub_80DD148 +sub_80DD148: @ 80DD148 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080DD16C @ =gUnknown_2037F02 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DD174 + ldr r0, _080DD170 @ =gUnknown_2037F1A + ldrb r4, [r0] + b _080DD19A + .align 2, 0 +_080DD16C: .4byte gUnknown_2037F02 +_080DD170: .4byte gUnknown_2037F1A +_080DD174: + cmp r0, 0x1 + bne _080DD184 + ldr r0, _080DD180 @ =gUnknown_2037F1B + ldrb r4, [r0] + b _080DD19A + .align 2, 0 +_080DD180: .4byte gUnknown_2037F1B +_080DD184: + cmp r0, 0x2 + bne _080DD190 + ldr r0, _080DD18C @ =gUnknown_2037F1A + b _080DD192 + .align 2, 0 +_080DD18C: .4byte gUnknown_2037F1A +_080DD190: + ldr r0, _080DD1BC @ =gUnknown_2037F1B +_080DD192: + ldrb r1, [r0] + movs r0, 0x2 + adds r4, r0, 0 + eors r4, r1 +_080DD19A: + ldr r0, _080DD1C0 @ =gUnknown_2037F02 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0x1 + beq _080DD1A8 + cmp r0, 0x3 + bne _080DD1C4 +_080DD1A8: + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _080DD1C4 + adds r0, r6, 0 + bl sub_8072760 + b _080DD26A + .align 2, 0 +_080DD1BC: .4byte gUnknown_2037F1B +_080DD1C0: .4byte gUnknown_2037F02 +_080DD1C4: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080DD1E8 + ldr r1, _080DD1E0 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080DD1E4 @ =gUnknown_202402C + b _080DD1F6 + .align 2, 0 +_080DD1E0: .4byte gUnknown_2023BCE +_080DD1E4: .4byte gUnknown_202402C +_080DD1E8: + ldr r1, _080DD234 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080DD238 @ =gUnknown_2024284 +_080DD1F6: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r1, _080DD23C @ =gUnknown_3005090 + lsls r2, r6, 2 + adds r0, r2, r6 + lsls r0, 3 + adds r0, r1 + ldr r4, _080DD240 @ =gUnknown_2037F02 + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x8] + strh r3, [r0, 0xA] + lsls r1, r5, 24 + asrs r1, 24 + strh r1, [r0, 0xC] + adds r5, r2, 0 + cmp r3, 0 + beq _080DD264 + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + bne _080DD244 + adds r0, r3, 0 + movs r2, 0x9 + bl sub_8071E60 + b _080DD24C + .align 2, 0 +_080DD234: .4byte gUnknown_2023BCE +_080DD238: .4byte gUnknown_2024284 +_080DD23C: .4byte gUnknown_3005090 +_080DD240: .4byte gUnknown_2037F02 +_080DD244: + adds r0, r3, 0 + movs r2, 0x7 + bl sub_8071E60 +_080DD24C: + ldr r0, _080DD25C @ =gUnknown_3005090 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080DD260 @ =sub_80DD270 + str r0, [r1] + b _080DD26A + .align 2, 0 +_080DD25C: .4byte gUnknown_3005090 +_080DD260: .4byte sub_80DD270 +_080DD264: + adds r0, r6, 0 + bl sub_8072760 +_080DD26A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DD148 + + thumb_func_start sub_80DD270 +sub_80DD270: @ 80DD270 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + mov r9, r4 + ldr r1, _080DD2A0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrh r6, [r1, 0xA] + mov r8, r6 + ldrb r5, [r1, 0xC] + adds r7, r5, 0 + ldrh r2, [r1, 0x1A] + movs r3, 0x1A + ldrsh r0, [r1, r3] + cmp r0, 0x1 + bgt _080DD2A4 + adds r0, r2, 0x1 + strh r0, [r1, 0x1A] + b _080DD2E6 + .align 2, 0 +_080DD2A0: .4byte gUnknown_3005090 +_080DD2A4: + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0xFF + bne _080DD2CA + bl sub_8072214 + lsls r0, 24 + cmp r0, 0 + bne _080DD2E6 + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0xA + bl sub_8071E60 + adds r0, r4, 0 + bl sub_8072760 + b _080DD2E6 +_080DD2CA: + bl sub_8072214 + lsls r0, 24 + cmp r0, 0 + bne _080DD2E6 + lsls r1, r7, 24 + asrs r1, 24 + mov r0, r8 + movs r2, 0x8 + bl sub_8071E60 + mov r0, r9 + bl sub_8072760 +_080DD2E6: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DD270 + + thumb_func_start sub_80DD2F4 +sub_80DD2F4: @ 80DD2F4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r1, _080DD318 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0x1A] + movs r3, 0x1A + ldrsh r0, [r1, r3] + cmp r0, 0x1 + bgt _080DD31C + adds r0, r2, 0x1 + strh r0, [r1, 0x1A] + b _080DD32C + .align 2, 0 +_080DD318: .4byte gUnknown_3005090 +_080DD31C: + bl sub_8072214 + lsls r0, 24 + cmp r0, 0 + bne _080DD32C + adds r0, r4, 0 + bl sub_8072760 +_080DD32C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DD2F4 + + thumb_func_start sub_80DD334 +sub_80DD334: @ 80DD334 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + ldr r2, _080DD374 @ =gUnknown_2037F1C + ldr r1, _080DD378 @ =gUnknown_2037F1A + ldrb r1, [r1] + lsls r1, 1 + adds r1, r2 + ldrh r3, [r1] + ldr r2, _080DD37C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r4, r1, r2 + strh r3, [r4, 0xA] + lsls r0, 24 + asrs r1, r0, 24 + strh r1, [r4, 0xC] + cmp r3, 0 + beq _080DD384 + adds r0, r3, 0 + movs r2, 0x4 + bl sub_8071E60 + ldr r0, _080DD380 @ =sub_80DD390 + str r0, [r4] + b _080DD38A + .align 2, 0 +_080DD374: .4byte gUnknown_2037F1C +_080DD378: .4byte gUnknown_2037F1A +_080DD37C: .4byte gUnknown_3005090 +_080DD380: .4byte sub_80DD390 +_080DD384: + adds r0, r5, 0 + bl sub_8072760 +_080DD38A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DD334 + + thumb_func_start sub_80DD390 +sub_80DD390: @ 80DD390 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DD3B4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x1A] + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bgt _080DD3B8 + adds r0, r1, 0x1 + strh r0, [r4, 0x1A] + b _080DD3D4 + .align 2, 0 +_080DD3B4: .4byte gUnknown_3005090 +_080DD3B8: + bl sub_8072214 + lsls r0, 24 + cmp r0, 0 + bne _080DD3D4 + ldrh r0, [r4, 0xA] + movs r1, 0xC + ldrsb r1, [r4, r1] + movs r2, 0x6 + bl sub_8071E60 + adds r0, r5, 0 + bl sub_8072760 +_080DD3D4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DD390 + + thumb_func_start sub_80DD3DC +sub_80DD3DC: @ 80DD3DC + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080DD40C @ =gUnknown_2037F02 + ldrh r5, [r0] + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl sub_8072348 + adds r0, r4, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD40C: .4byte gUnknown_2037F02 + thumb_func_end sub_80DD3DC + + thumb_func_start sub_80DD410 +sub_80DD410: @ 80DD410 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080DD440 @ =gUnknown_2037F02 + ldrh r5, [r0] + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + bl sub_8073A44 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl sub_807237C + adds r0, r4, 0 + bl sub_8072760 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD440: .4byte gUnknown_2037F02 + thumb_func_end sub_80DD410 + + thumb_func_start sub_80DD444 +sub_80DD444: @ 80DD444 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _080DD4C8 @ =gUnknown_2037F02 + ldrb r5, [r0, 0x2] + ldrb r6, [r0, 0x4] + ldrh r1, [r0, 0x6] + mov r9, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + asrs r5, 24 + adds r0, r5, 0 + bl sub_8073A44 + adds r5, r0, 0 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8073B88 + ldr r2, _080DD4CC @ =gUnknown_3005090 + mov r3, r8 + lsls r1, r3, 2 + add r1, r8 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + strh r4, [r1, 0xA] + strh r5, [r1, 0xC] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1, 0xE] + mov r0, r9 + strh r0, [r1, 0x12] + strh r2, [r1, 0x1C] + strh r4, [r1, 0x1E] + ldr r2, _080DD4D0 @ =sub_80DD4D4 + str r2, [r1] + mov r0, r8 + bl _call_via_r2 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DD4C8: .4byte gUnknown_2037F02 +_080DD4CC: .4byte gUnknown_3005090 +_080DD4D0: .4byte sub_80DD4D4 + thumb_func_end sub_80DD444 + + thumb_func_start sub_80DD4D4 +sub_80DD4D4: @ 80DD4D4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DD52C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r2, [r4, 0xE] + ldrh r0, [r4, 0x1C] + adds r1, r0, 0x1 + strh r1, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x12 + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080DD50E + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r0, r2, r1 + strh r0, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + bl sub_8073B60 + strh r0, [r4, 0x1E] +_080DD50E: + ldr r1, _080DD530 @ =gUnknown_2037F24 + ldrh r0, [r4, 0x1E] + strb r0, [r1] + movs r3, 0x1E + ldrsh r1, [r4, r3] + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080DD526 + adds r0, r5, 0 + bl sub_8072760 +_080DD526: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD52C: .4byte gUnknown_3005090 +_080DD530: .4byte gUnknown_2037F24 + thumb_func_end sub_80DD4D4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s new file mode 100644 index 000000000..82221a1a0 --- /dev/null +++ b/asm/battle_controller_link_opponent.s @@ -0,0 +1,6260 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_19 +nullsub_19: @ 803A664 + bx lr + thumb_func_end nullsub_19 + + thumb_func_start sub_803A668 +sub_803A668: @ 803A668 + ldr r1, _0803A678 @ =gUnknown_3004FE0 + ldr r0, _0803A67C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803A680 @ =sub_803A684 + str r1, [r0] + bx lr + .align 2, 0 +_0803A678: .4byte gUnknown_3004FE0 +_0803A67C: .4byte gUnknown_2023BC4 +_0803A680: .4byte sub_803A684 + thumb_func_end sub_803A668 + + thumb_func_start sub_803A684 +sub_803A684: @ 803A684 + push {lr} + ldr r2, _0803A6B8 @ =gUnknown_2023BC8 + ldr r1, _0803A6BC @ =gUnknown_825E45C + ldr r0, _0803A6C0 @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803A6D0 + ldr r0, _0803A6C4 @ =gUnknown_2022BC4 + lsls r1, r3, 9 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x38 + bhi _0803A6CC + ldr r0, _0803A6C8 @ =gUnknown_8250B20 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _0803A6D0 + .align 2, 0 +_0803A6B8: .4byte gUnknown_2023BC8 +_0803A6BC: .4byte gUnknown_825E45C +_0803A6C0: .4byte gUnknown_2023BC4 +_0803A6C4: .4byte gUnknown_2022BC4 +_0803A6C8: .4byte gUnknown_8250B20 +_0803A6CC: + bl sub_803B124 +_0803A6D0: + pop {r0} + bx r0 + thumb_func_end sub_803A684 + + thumb_func_start sub_803A6D4 +sub_803A6D4: @ 803A6D4 + push {lr} + ldr r2, _0803A6FC @ =gUnknown_202063C + ldr r1, _0803A700 @ =gUnknown_2023D44 + ldr r0, _0803A704 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0803A708 @ =nullsub_8 + cmp r1, r0 + bne _0803A6F8 + bl sub_803B124 +_0803A6F8: + pop {r0} + bx r0 + .align 2, 0 +_0803A6FC: .4byte gUnknown_202063C +_0803A700: .4byte gUnknown_2023D44 +_0803A704: .4byte gUnknown_2023BC4 +_0803A708: .4byte nullsub_8 + thumb_func_end sub_803A6D4 + + thumb_func_start sub_803A70C +sub_803A70C: @ 803A70C + push {r4-r6,lr} + ldr r4, _0803A784 @ =gUnknown_202063C + ldr r6, _0803A788 @ =gUnknown_2023D44 + ldr r5, _0803A78C @ =gUnknown_2023BC4 + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r2, r0, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _0803A790 @ =nullsub_8 + cmp r1, r0 + bne _0803A77C + adds r0, r2, r4 + ldrh r0, [r0, 0x6] + bl sub_803477C + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x38] + ldr r2, _0803A794 @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _0803A798 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + bl sub_803B124 +_0803A77C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803A784: .4byte gUnknown_202063C +_0803A788: .4byte gUnknown_2023D44 +_0803A78C: .4byte gUnknown_2023BC4 +_0803A790: .4byte nullsub_8 +_0803A794: .4byte 0x000003ff +_0803A798: .4byte 0xfffffc00 + thumb_func_end sub_803A70C + + thumb_func_start sub_803A79C +sub_803A79C: @ 803A79C + push {r4,lr} + ldr r4, _0803A7DC @ =gUnknown_2024018 + ldr r1, [r4] + ldr r3, _0803A7E0 @ =gUnknown_2023BC4 + ldrb r0, [r3] + ldr r2, [r1, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x9] + subs r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0803A7D4 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + bl sub_803B124 +_0803A7D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803A7DC: .4byte gUnknown_2024018 +_0803A7E0: .4byte gUnknown_2023BC4 + thumb_func_end sub_803A79C + + thumb_func_start sub_803A7E4 +sub_803A7E4: @ 803A7E4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0803A80C + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0803A840 + ldr r0, _0803A82C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803A840 +_0803A80C: + ldr r2, _0803A830 @ =gUnknown_202063C + ldr r1, _0803A834 @ =gUnknown_3004FF0 + ldr r0, _0803A838 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0803A83C @ =nullsub_8 + cmp r1, r0 + bne _0803A876 + b _0803A874 + .align 2, 0 +_0803A82C: .4byte gUnknown_2022B4C +_0803A830: .4byte gUnknown_202063C +_0803A834: .4byte gUnknown_3004FF0 +_0803A838: .4byte gUnknown_2023BC4 +_0803A83C: .4byte nullsub_8 +_0803A840: + ldr r2, _0803A95C @ =gUnknown_202063C + ldr r5, _0803A960 @ =gUnknown_3004FF0 + ldr r0, _0803A964 @ =gUnknown_2023BC4 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r4, [r0] + ldr r0, _0803A968 @ =nullsub_8 + cmp r4, r0 + bne _0803A876 + movs r0, 0x2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _0803A876 +_0803A874: + movs r6, 0x1 +_0803A876: + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + beq _0803A882 + movs r6, 0 +_0803A882: + cmp r6, 0 + bne _0803A888 + b _0803A9AA +_0803A888: + ldr r0, _0803A964 @ =gUnknown_2023BC4 + mov r8, r0 + ldrb r0, [r0] + bl sub_80751D8 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bne _0803A936 + ldr r7, _0803A96C @ =gUnknown_2024018 + ldr r0, [r7] + mov r1, r8 + ldrb r2, [r1] + ldr r5, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r5 + ldrb r1, [r4, 0x1] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A9AA + movs r6, 0x2 + adds r1, r6, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0, 0x1] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0803A9AA + ldrb r1, [r4] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r1 + strb r0, [r4] + ldr r0, [r7] + mov r1, r8 + ldrb r2, [r1] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldr r4, _0803A970 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 +_0803A936: + ldr r0, _0803A974 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803A97C + mov r1, r8 + ldrb r0, [r1] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803A988 + ldr r0, _0803A978 @ =gMPlay_BGM + bl m4aMPlayContinue + b _0803A988 + .align 2, 0 +_0803A95C: .4byte gUnknown_202063C +_0803A960: .4byte gUnknown_3004FF0 +_0803A964: .4byte gUnknown_2023BC4 +_0803A968: .4byte nullsub_8 +_0803A96C: .4byte gUnknown_2024018 +_0803A970: .4byte 0x000027f9 +_0803A974: .4byte gUnknown_2022B4C +_0803A978: .4byte gMPlay_BGM +_0803A97C: + ldr r0, _0803A9B4 @ =gMPlay_BGM + ldr r1, _0803A9B8 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl +_0803A988: + ldr r0, _0803A9BC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r3, _0803A9C0 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x9] + ldr r1, _0803A9C4 @ =gUnknown_3004FE0 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803A9C8 @ =sub_803A79C + str r1, [r0] +_0803A9AA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803A9B4: .4byte gMPlay_BGM +_0803A9B8: .4byte 0x0000ffff +_0803A9BC: .4byte gUnknown_2024018 +_0803A9C0: .4byte gUnknown_2023BC4 +_0803A9C4: .4byte gUnknown_3004FE0 +_0803A9C8: .4byte sub_803A79C + thumb_func_end sub_803A7E4 + + thumb_func_start sub_803A9CC +sub_803A9CC: @ 803A9CC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _0803ABEC @ =gUnknown_2024018 + mov r8, r0 + ldr r0, [r0] + ldr r7, _0803ABF0 @ =gUnknown_2023BC4 + ldrb r2, [r7] + ldr r3, [r0, 0x4] + lsls r5, r2, 1 + adds r0, r5, r2 + lsls r0, 2 + adds r0, r3 + ldrb r4, [r0] + movs r6, 0x8 + adds r0, r6, 0 + ands r0, r4 + cmp r0, 0 + beq _0803A9F8 + b _0803ABDC +_0803A9F8: + movs r1, 0x2 + mov r9, r1 + adds r1, r2, 0 + mov r0, r9 + eors r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0 + beq _0803AA1C + b _0803ABDC +_0803AA1C: + movs r6, 0x80 + adds r0, r6, 0 + ands r0, r4 + cmp r0, 0 + bne _0803AA3A + ldr r0, _0803ABF4 @ =gUnknown_2023BCE + adds r0, r5, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0803ABF8 @ =gUnknown_202402C + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0803AA3A: + mov r2, r8 + ldr r1, [r2] + ldrb r0, [r7] + mov r2, r9 + eors r2, r0 + ldr r1, [r1, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _0803AA6C + ldr r0, _0803ABF4 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0803ABF8 @ =gUnknown_202402C + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0803AA6C: + ldr r0, _0803ABFC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803AABA + ldrb r0, [r7] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0803AABA + mov r1, r8 + ldr r0, [r1] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x9] + adds r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803AAA6 + b _0803ABDC +_0803AAA6: + mov r2, r8 + ldr r0, [r2] + ldrb r1, [r7] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + mov r1, r10 + strb r1, [r0, 0x9] +_0803AABA: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0803AB50 + ldr r0, _0803ABFC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803AB50 + ldr r1, _0803AC00 @ =gUnknown_3004FFC + ldr r5, _0803ABF0 @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0803AC04 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r2, _0803AC08 @ =gUnknown_3004FF0 + mov r8, r2 + ldrb r0, [r5] + adds r1, r4, 0 + eors r1, r0 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r2, _0803ABF4 @ =gUnknown_2023BCE + mov r10, r2 + lsls r1, 1 + add r1, r10 + ldrh r1, [r1] + movs r2, 0x64 + mov r9, r2 + mov r2, r9 + muls r2, r1 + adds r1, r2, 0 + ldr r6, _0803ABF8 @ =gUnknown_202402C + adds r1, r6 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + eors r0, r4 + bl sub_804BD94 + ldrb r0, [r5] + eors r0, r4 + add r0, r8 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r0, [r5] + eors r4, r0 + lsls r0, r4, 1 + add r0, r10 + ldrh r0, [r0] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 +_0803AB50: + ldr r1, _0803AC00 @ =gUnknown_3004FFC + ldr r5, _0803ABF0 @ =gUnknown_2023BC4 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0803AC04 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _0803AC08 @ =gUnknown_3004FF0 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0803ABF4 @ =gUnknown_2023BCE + mov r9, r2 + lsls r1, 1 + add r1, r9 + ldrh r1, [r1] + movs r2, 0x64 + mov r8, r2 + mov r2, r8 + muls r2, r1 + adds r1, r2, 0 + ldr r6, _0803ABF8 @ =gUnknown_202402C + adds r1, r6 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + bl sub_804BD94 + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r4, [r5] + lsls r0, r4, 1 + add r0, r9 + ldrh r0, [r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + ldr r0, _0803ABEC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x8] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldr r1, _0803AC0C @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803AC10 @ =sub_803A7E4 + str r1, [r0] +_0803ABDC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803ABEC: .4byte gUnknown_2024018 +_0803ABF0: .4byte gUnknown_2023BC4 +_0803ABF4: .4byte gUnknown_2023BCE +_0803ABF8: .4byte gUnknown_202402C +_0803ABFC: .4byte gUnknown_2022B4C +_0803AC00: .4byte gUnknown_3004FFC +_0803AC04: .4byte gUnknown_202063C +_0803AC08: .4byte gUnknown_3004FF0 +_0803AC0C: .4byte gUnknown_3004FE0 +_0803AC10: .4byte sub_803A7E4 + thumb_func_end sub_803A9CC + + thumb_func_start sub_803AC14 +sub_803AC14: @ 803AC14 + push {r4-r7,lr} + ldr r2, _0803AC70 @ =gUnknown_202063C + ldr r0, _0803AC74 @ =gUnknown_2023D44 + ldr r7, _0803AC78 @ =gUnknown_2023BC4 + ldrb r3, [r7] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + lsrs r2, r0, 31 + cmp r2, 0x1 + bne _0803ACC0 + movs r4, 0x24 + ldrsh r0, [r1, r4] + cmp r0, 0 + bne _0803ACC0 + ldr r6, _0803AC7C @ =gUnknown_2024018 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r4, r3, 1 + adds r0, r4, r3 + lsls r0, 2 + adds r1, r0, r1 + ldrb r5, [r1] + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + bne _0803AC88 + ldr r0, _0803AC80 @ =gUnknown_2023BCE + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0803AC84 @ =gUnknown_202402C + adds r1, r0 + adds r0, r3, 0 + bl sub_80F1720 + b _0803ACC0 + .align 2, 0 +_0803AC70: .4byte gUnknown_202063C +_0803AC74: .4byte gUnknown_2023D44 +_0803AC78: .4byte gUnknown_2023BC4 +_0803AC7C: .4byte gUnknown_2024018 +_0803AC80: .4byte gUnknown_2023BCE +_0803AC84: .4byte gUnknown_202402C +_0803AC88: + ldrb r0, [r1, 0x1] + ands r2, r0 + cmp r2, 0 + beq _0803ACC0 + movs r0, 0x7F + ands r0, r5 + strb r0, [r1] + ldr r0, [r6] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _0803ACC8 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + bl sub_803B124 +_0803ACC0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803ACC8: .4byte 0x000027f9 + thumb_func_end sub_803AC14 + + thumb_func_start sub_803ACCC +sub_803ACCC: @ 803ACCC + push {r4-r6,lr} + ldr r6, _0803AD0C @ =gUnknown_2023BC4 + ldrb r0, [r6] + ldr r5, _0803AD10 @ =gUnknown_3004FF0 + adds r1, r0, r5 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r6] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + lsls r4, 16 + asrs r1, r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0803AD14 + ldrb r0, [r6] + adds r0, r5 + ldrb r0, [r0] + movs r2, 0 + bl sub_8048440 + b _0803AD18 + .align 2, 0 +_0803AD0C: .4byte gUnknown_2023BC4 +_0803AD10: .4byte gUnknown_3004FF0 +_0803AD14: + bl sub_803B124 +_0803AD18: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_803ACCC + + thumb_func_start sub_803AD20 +sub_803AD20: @ 803AD20 + push {lr} + ldr r2, _0803AD54 @ =gUnknown_202063C + ldr r0, _0803AD58 @ =gUnknown_2023D44 + ldr r1, _0803AD5C @ =gUnknown_2023BC4 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0803AD4E + ldr r0, _0803AD60 @ =gUnknown_3004FF0 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_8048188 + bl sub_803B124 +_0803AD4E: + pop {r0} + bx r0 + .align 2, 0 +_0803AD54: .4byte gUnknown_202063C +_0803AD58: .4byte gUnknown_2023D44 +_0803AD5C: .4byte gUnknown_2023BC4 +_0803AD60: .4byte gUnknown_3004FF0 + thumb_func_end sub_803AD20 + + thumb_func_start sub_803AD64 +sub_803AD64: @ 803AD64 + push {r4-r6,lr} + ldr r0, _0803ADC4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _0803ADC8 @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803ADBE + ldr r5, _0803ADCC @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0803ADD0 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldrb r0, [r6] + bl sub_8035794 + ldr r1, _0803ADD4 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_803B124 +_0803ADBE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803ADC4: .4byte gUnknown_2024018 +_0803ADC8: .4byte gUnknown_2023BC4 +_0803ADCC: .4byte gUnknown_2023D44 +_0803ADD0: .4byte gUnknown_202063C +_0803ADD4: .4byte gUnknown_3004FF0 + thumb_func_end sub_803AD64 + + thumb_func_start sub_803ADD8 +sub_803ADD8: @ 803ADD8 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0803ADEA + bl sub_803B124 +_0803ADEA: + pop {r0} + bx r0 + thumb_func_end sub_803ADD8 + + thumb_func_start sub_803ADF0 +sub_803ADF0: @ 803ADF0 + push {r4,lr} + ldr r1, _0803AE2C @ =gUnknown_2023D44 + ldr r0, _0803AE30 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _0803AE34 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x20 + bne _0803AE3C + movs r3, 0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + ldr r0, _0803AE38 @ =gUnknown_2024005 + strb r3, [r0] + bl sub_803B124 + b _0803AE66 + .align 2, 0 +_0803AE2C: .4byte gUnknown_2023D44 +_0803AE30: .4byte gUnknown_2023BC4 +_0803AE34: .4byte gUnknown_202063C +_0803AE38: .4byte gUnknown_2024005 +_0803AE3C: + ldrh r0, [r4, 0x30] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0803AE60 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0803AE60: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_0803AE66: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_803ADF0 + + thumb_func_start sub_803AE6C +sub_803AE6C: @ 803AE6C + push {r4,lr} + ldr r2, _0803AEC0 @ =gUnknown_202063C + ldr r0, _0803AEC4 @ =gUnknown_3004FF0 + ldr r4, _0803AEC8 @ =gUnknown_2023BC4 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0803AECC @ =nullsub_8 + cmp r1, r0 + bne _0803AEB8 + ldr r0, _0803AED0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803AEAC + adds r0, r3, 0 + adds r1, r3, 0 + adds r2, r3, 0 + movs r3, 0x6 + bl sub_80341D8 +_0803AEAC: + ldr r0, _0803AED4 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803AED8 @ =sub_803AEDC + str r0, [r1] +_0803AEB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803AEC0: .4byte gUnknown_202063C +_0803AEC4: .4byte gUnknown_3004FF0 +_0803AEC8: .4byte gUnknown_2023BC4 +_0803AECC: .4byte nullsub_8 +_0803AED0: .4byte gUnknown_2024018 +_0803AED4: .4byte gUnknown_3004FE0 +_0803AED8: .4byte sub_803AEDC + thumb_func_end sub_803AE6C + + thumb_func_start sub_803AEDC +sub_803AEDC: @ 803AEDC + push {lr} + ldr r0, _0803AF18 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _0803AF1C @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803AF14 + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + bne _0803AF14 + ldr r0, _0803AF20 @ =gMPlay_BGM + ldr r1, _0803AF24 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + bl sub_803B124 +_0803AF14: + pop {r0} + bx r0 + .align 2, 0 +_0803AF18: .4byte gUnknown_2024018 +_0803AF1C: .4byte gUnknown_2023BC4 +_0803AF20: .4byte gMPlay_BGM +_0803AF24: .4byte 0x0000ffff + thumb_func_end sub_803AEDC + + thumb_func_start sub_803AF28 +sub_803AF28: @ 803AF28 + push {r4,r5,lr} + ldr r3, _0803AFD4 @ =gUnknown_2024018 + ldr r0, [r3] + ldr r5, _0803AFD8 @ =gUnknown_2023BC4 + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + ldrb r1, [r2, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803AFCC + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r5] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _0803AFDC @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r1, _0803AFE0 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0803AFE4 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C + ldr r4, _0803AFE8 @ =gUnknown_3004FF0 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0803AFEC @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0803AFF0 @ =gUnknown_202402C + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + bl sub_804BD94 + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r0, [r5] + bl sub_8034BB4 + ldr r1, _0803AFF4 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803AFF8 @ =sub_803AE6C + str r1, [r0] +_0803AFCC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803AFD4: .4byte gUnknown_2024018 +_0803AFD8: .4byte gUnknown_2023BC4 +_0803AFDC: .4byte 0x000027f9 +_0803AFE0: .4byte gUnknown_2023D44 +_0803AFE4: .4byte gUnknown_202063C +_0803AFE8: .4byte gUnknown_3004FF0 +_0803AFEC: .4byte gUnknown_2023BCE +_0803AFF0: .4byte gUnknown_202402C +_0803AFF4: .4byte gUnknown_3004FE0 +_0803AFF8: .4byte sub_803AE6C + thumb_func_end sub_803AF28 + + thumb_func_start sub_803AFFC +sub_803AFFC: @ 803AFFC + push {r4-r6,lr} + ldr r6, _0803B0A0 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r5, _0803B0A4 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _0803B02E + ldr r0, _0803B0A8 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0803B0AC @ =gUnknown_202402C + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0803B02E: + ldr r4, _0803B0B0 @ =gUnknown_202063C + ldr r0, _0803B0B4 @ =gUnknown_3004FFC + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r3, r0, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _0803B0B8 @ =nullsub_8 + cmp r1, r0 + bne _0803B098 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0803B098 + adds r0, r3, r4 + bl sub_8007280 + ldrb r4, [r5] + ldr r1, _0803B0A8 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0803B0AC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + ldr r1, _0803B0BC @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803B0C0 @ =sub_803AF28 + str r1, [r0] +_0803B098: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803B0A0: .4byte gUnknown_2024018 +_0803B0A4: .4byte gUnknown_2023BC4 +_0803B0A8: .4byte gUnknown_2023BCE +_0803B0AC: .4byte gUnknown_202402C +_0803B0B0: .4byte gUnknown_202063C +_0803B0B4: .4byte gUnknown_3004FFC +_0803B0B8: .4byte nullsub_8 +_0803B0BC: .4byte gUnknown_3004FE0 +_0803B0C0: .4byte sub_803AF28 + thumb_func_end sub_803AFFC + + thumb_func_start sub_803B0C4 +sub_803B0C4: @ 803B0C4 + push {lr} + ldr r0, _0803B0EC @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _0803B0F0 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0803B0E6 + bl sub_803B124 +_0803B0E6: + pop {r0} + bx r0 + .align 2, 0 +_0803B0EC: .4byte gUnknown_2024018 +_0803B0F0: .4byte gUnknown_2023BC4 + thumb_func_end sub_803B0C4 + + thumb_func_start sub_803B0F4 +sub_803B0F4: @ 803B0F4 + push {lr} + ldr r0, _0803B11C @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _0803B120 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _0803B116 + bl sub_803B124 +_0803B116: + pop {r0} + bx r0 + .align 2, 0 +_0803B11C: .4byte gUnknown_2024018 +_0803B120: .4byte gUnknown_2023BC4 + thumb_func_end sub_803B0F4 + + thumb_func_start sub_803B124 +sub_803B124: @ 803B124 + push {r4,lr} + sub sp, 0x4 + ldr r1, _0803B164 @ =gUnknown_3004FE0 + ldr r4, _0803B168 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803B16C @ =sub_803A684 + str r1, [r0] + ldr r0, _0803B170 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803B178 + bl sub_800A404 + mov r1, sp + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + mov r2, sp + bl sub_800D9EC + ldr r1, _0803B174 @ =gUnknown_2022BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r1 + movs r1, 0x38 + strb r1, [r0] + b _0803B18A + .align 2, 0 +_0803B164: .4byte gUnknown_3004FE0 +_0803B168: .4byte gUnknown_2023BC4 +_0803B16C: .4byte sub_803A684 +_0803B170: .4byte gUnknown_2022B4C +_0803B174: .4byte gUnknown_2022BC4 +_0803B178: + ldr r2, _0803B194 @ =gUnknown_2023BC8 + ldr r1, _0803B198 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_0803B18A: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803B194: .4byte gUnknown_2023BC8 +_0803B198: .4byte gUnknown_825E45C + thumb_func_end sub_803B124 + + thumb_func_start sub_803B19C +sub_803B19C: @ 803B19C + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _0803B1C8 @ =gUnknown_2022BC4 + ldr r0, _0803B1CC @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _0803B1D4 + ldr r0, _0803B1D0 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_803B210 + adds r6, r0, 0 + b _0803B1F6 + .align 2, 0 +_0803B1C8: .4byte gUnknown_2022BC4 +_0803B1CC: .4byte gUnknown_2023BC4 +_0803B1D0: .4byte gUnknown_2023BCE +_0803B1D4: + ldrb r4, [r1] + movs r5, 0 +_0803B1D8: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0803B1EE + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl sub_803B210 + adds r6, r0 +_0803B1EE: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _0803B1D8 +_0803B1F6: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl sub_800E708 + bl sub_803B124 + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_803B19C + + thumb_func_start sub_803B210 +sub_803B210: @ 803B210 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x90 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _0803B244 @ =gUnknown_2022BC4 + ldr r3, _0803B248 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _0803B23A + bl _0803B9A6 +_0803B23A: + lsls r0, 2 + ldr r1, _0803B24C @ =_0803B250 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803B244: .4byte gUnknown_2022BC4 +_0803B248: .4byte gUnknown_2023BC4 +_0803B24C: .4byte _0803B250 + .align 2, 0 +_0803B250: + .4byte _0803B340 + .4byte _0803B564 + .4byte _0803B574 + .4byte _0803B584 + .4byte _0803B5EC + .4byte _0803B5EC + .4byte _0803B5EC + .4byte _0803B5EC + .4byte _0803B608 + .4byte _0803B644 + .4byte _0803B644 + .4byte _0803B644 + .4byte _0803B644 + .4byte _0803B9A6 + .4byte _0803B9A6 + .4byte _0803B9A6 + .4byte _0803B9A6 + .4byte _0803B660 + .4byte _0803B670 + .4byte _0803B6A0 + .4byte _0803B6B0 + .4byte _0803B6C0 + .4byte _0803B6D0 + .4byte _0803B6E0 + .4byte _0803B6F0 + .4byte _0803B700 + .4byte _0803B710 + .4byte _0803B720 + .4byte _0803B730 + .4byte _0803B740 + .4byte _0803B750 + .4byte _0803B760 + .4byte _0803B7B0 + .4byte _0803B7C0 + .4byte _0803B7D0 + .4byte _0803B7E0 + .4byte _0803B7F0 + .4byte _0803B800 + .4byte _0803B810 + .4byte _0803B820 + .4byte _0803B830 + .4byte _0803B864 + .4byte _0803B874 + .4byte _0803B884 + .4byte _0803B894 + .4byte _0803B8A4 + .4byte _0803B8B4 + .4byte _0803B8C4 + .4byte _0803B8D4 + .4byte _0803B8F4 + .4byte _0803B904 + .4byte _0803B914 + .4byte _0803B924 + .4byte _0803B934 + .4byte _0803B944 + .4byte _0803B954 + .4byte _0803B964 + .4byte _0803B974 + .4byte _0803B984 + .4byte _0803B994 +_0803B340: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803B554 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2E] + movs r6, 0 + add r0, sp, 0x24 + mov r9, r0 + movs r1, 0x3B + add r1, sp + mov r10, r1 + mov r2, sp + adds r2, 0x2B + str r2, [sp, 0x80] + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x8C] + adds r2, 0x5 + str r2, [sp, 0x84] + adds r0, 0x12 + str r0, [sp, 0x88] + mov r8, r4 + add r4, sp, 0xC +_0803B38C: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + bl sub_803FBE8 + strh r0, [r4] + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + bl sub_803FBE8 + mov r2, r9 + adds r1, r2, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0803B38C + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803B554 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r10 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + ldr r2, [sp, 0x80] + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x44] + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + mov r3, sp + movs r5, 0x1F + ands r0, r5 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r3, sp + movs r6, 0x1F + ands r0, r6 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _0803B558 @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _0803B55C @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + mov r3, sp + ands r0, r6 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _0803B560 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x48] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + str r0, [sp, 0x4C] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x54] + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, [sp, 0x8C] + bl sub_803FBE8 + ldr r0, [sp, 0x84] + ldr r1, [sp, 0x8C] + bl sub_8008CF4 + adds r0, r4, 0 + movs r1, 0x7 + ldr r2, [sp, 0x88] + bl sub_803FBE8 + mov r2, sp + movs r6, 0 +_0803B544: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0x57 + bls _0803B544 + b _0803B9A6 + .align 2, 0 +_0803B554: .4byte gUnknown_202402C +_0803B558: .4byte 0xfffffc1f +_0803B55C: .4byte 0xfff07fff +_0803B560: .4byte 0xfffffe0f +_0803B564: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B570 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + b _0803B8DE + .align 2, 0 +_0803B570: .4byte gUnknown_202402C +_0803B574: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B580 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xC + b _0803B8DE + .align 2, 0 +_0803B580: .4byte gUnknown_202402C +_0803B584: + movs r6, 0 + add r2, sp, 0x58 + mov r9, r2 + add r0, sp, 0x60 + mov r10, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0803B5E8 @ =gUnknown_202402C + adds r4, r1, r0 + mov r8, r9 +_0803B59A: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r4, 0 + bl sub_803FBE8 + mov r2, r10 + adds r1, r2, r6 + strb r0, [r1] + movs r0, 0x2 + add r8, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _0803B59A + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B5E8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1, 0xC] + mov r2, r9 + movs r6, 0 +_0803B5D8: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0xF + bls _0803B5D8 + b _0803B9A6 + .align 2, 0 +_0803B5E8: .4byte gUnknown_202402C +_0803B5EC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B604 @ =gUnknown_202402C + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x9 + b _0803B8DE + .align 2, 0 +_0803B604: .4byte gUnknown_202402C +_0803B608: + movs r6, 0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r2, _0803B640 @ =gUnknown_202402C + mov r8, r2 +_0803B614: + adds r1, r6, 0 + adds r1, 0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x3 + ble _0803B614 + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B640 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + b _0803B9A6 + .align 2, 0 +_0803B640: .4byte gUnknown_202402C +_0803B644: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B65C @ =gUnknown_202402C + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x8 + b _0803B99E + .align 2, 0 +_0803B65C: .4byte gUnknown_202402C +_0803B660: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B66C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1 + b _0803B67A + .align 2, 0 +_0803B66C: .4byte gUnknown_202402C +_0803B670: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B69C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x19 +_0803B67A: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r6, 0x3 + b _0803B9A6 + .align 2, 0 +_0803B69C: .4byte gUnknown_202402C +_0803B6A0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B6AC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1A + b _0803B99E + .align 2, 0 +_0803B6AC: .4byte gUnknown_202402C +_0803B6B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B6BC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1B + b _0803B99E + .align 2, 0 +_0803B6BC: .4byte gUnknown_202402C +_0803B6C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B6CC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1C + b _0803B99E + .align 2, 0 +_0803B6CC: .4byte gUnknown_202402C +_0803B6D0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B6DC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1D + b _0803B99E + .align 2, 0 +_0803B6DC: .4byte gUnknown_202402C +_0803B6E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B6EC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1E + b _0803B99E + .align 2, 0 +_0803B6EC: .4byte gUnknown_202402C +_0803B6F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B6FC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1F + b _0803B99E + .align 2, 0 +_0803B6FC: .4byte gUnknown_202402C +_0803B700: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B70C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x20 + b _0803B99E + .align 2, 0 +_0803B70C: .4byte gUnknown_202402C +_0803B710: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B71C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x22 + b _0803B99E + .align 2, 0 +_0803B71C: .4byte gUnknown_202402C +_0803B720: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B72C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x23 + b _0803B99E + .align 2, 0 +_0803B72C: .4byte gUnknown_202402C +_0803B730: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B73C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x24 + b _0803B99E + .align 2, 0 +_0803B73C: .4byte gUnknown_202402C +_0803B740: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B74C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x25 + b _0803B99E + .align 2, 0 +_0803B74C: .4byte gUnknown_202402C +_0803B750: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B75C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x26 + b _0803B99E + .align 2, 0 +_0803B75C: .4byte gUnknown_202402C +_0803B760: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803B7AC @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + strb r0, [r7, 0x1] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + strb r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + strb r0, [r7, 0x3] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + strb r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + strb r0, [r7, 0x5] + movs r6, 0x6 + b _0803B9A6 + .align 2, 0 +_0803B7AC: .4byte gUnknown_202402C +_0803B7B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B7BC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x27 + b _0803B99E + .align 2, 0 +_0803B7BC: .4byte gUnknown_202402C +_0803B7C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B7CC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x28 + b _0803B99E + .align 2, 0 +_0803B7CC: .4byte gUnknown_202402C +_0803B7D0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B7DC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x29 + b _0803B99E + .align 2, 0 +_0803B7DC: .4byte gUnknown_202402C +_0803B7E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B7EC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2A + b _0803B99E + .align 2, 0 +_0803B7EC: .4byte gUnknown_202402C +_0803B7F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B7FC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2B + b _0803B99E + .align 2, 0 +_0803B7FC: .4byte gUnknown_202402C +_0803B800: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B80C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2C + b _0803B99E + .align 2, 0 +_0803B80C: .4byte gUnknown_202402C +_0803B810: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B81C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0 + b _0803B83A + .align 2, 0 +_0803B81C: .4byte gUnknown_202402C +_0803B820: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B82C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x9 + b _0803B8DE + .align 2, 0 +_0803B82C: .4byte gUnknown_202402C +_0803B830: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B860 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x37 +_0803B83A: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r6, 0x4 + b _0803B9A6 + .align 2, 0 +_0803B860: .4byte gUnknown_202402C +_0803B864: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B870 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x38 + b _0803B99E + .align 2, 0 +_0803B870: .4byte gUnknown_202402C +_0803B874: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B880 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x39 + b _0803B8DE + .align 2, 0 +_0803B880: .4byte gUnknown_202402C +_0803B884: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B890 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3A + b _0803B8DE + .align 2, 0 +_0803B890: .4byte gUnknown_202402C +_0803B894: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B8A0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3B + b _0803B8DE + .align 2, 0 +_0803B8A0: .4byte gUnknown_202402C +_0803B8A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B8B0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3C + b _0803B8DE + .align 2, 0 +_0803B8B0: .4byte gUnknown_202402C +_0803B8B4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B8C0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3D + b _0803B8DE + .align 2, 0 +_0803B8C0: .4byte gUnknown_202402C +_0803B8C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B8D0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3E + b _0803B8DE + .align 2, 0 +_0803B8D0: .4byte gUnknown_202402C +_0803B8D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B8F0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3F +_0803B8DE: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r6, 0x2 + b _0803B9A6 + .align 2, 0 +_0803B8F0: .4byte gUnknown_202402C +_0803B8F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B900 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x16 + b _0803B99E + .align 2, 0 +_0803B900: .4byte gUnknown_202402C +_0803B904: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B910 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x17 + b _0803B99E + .align 2, 0 +_0803B910: .4byte gUnknown_202402C +_0803B914: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B920 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x18 + b _0803B99E + .align 2, 0 +_0803B920: .4byte gUnknown_202402C +_0803B924: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B930 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x21 + b _0803B99E + .align 2, 0 +_0803B930: .4byte gUnknown_202402C +_0803B934: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B940 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2F + b _0803B99E + .align 2, 0 +_0803B940: .4byte gUnknown_202402C +_0803B944: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B950 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x30 + b _0803B99E + .align 2, 0 +_0803B950: .4byte gUnknown_202402C +_0803B954: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B960 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x32 + b _0803B99E + .align 2, 0 +_0803B960: .4byte gUnknown_202402C +_0803B964: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B970 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x33 + b _0803B99E + .align 2, 0 +_0803B970: .4byte gUnknown_202402C +_0803B974: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B980 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x34 + b _0803B99E + .align 2, 0 +_0803B980: .4byte gUnknown_202402C +_0803B984: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B990 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x35 + b _0803B99E + .align 2, 0 +_0803B990: .4byte gUnknown_202402C +_0803B994: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803B9B8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x36 +_0803B99E: + bl sub_803FBE8 + strb r0, [r7] + movs r6, 0x1 +_0803B9A6: + adds r0, r6, 0 + add sp, 0x90 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803B9B8: .4byte gUnknown_202402C + thumb_func_end sub_803B210 + + thumb_func_start sub_803B9BC +sub_803B9BC: @ 803B9BC + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803B9BC + + thumb_func_start sub_803B9C8 +sub_803B9C8: @ 803B9C8 + push {r4,r5,lr} + ldr r1, _0803B9EC @ =gUnknown_2022BC4 + ldr r0, _0803B9F0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _0803B9F8 + ldr r0, _0803B9F4 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_803BA20 + b _0803BA16 + .align 2, 0 +_0803B9EC: .4byte gUnknown_2022BC4 +_0803B9F0: .4byte gUnknown_2023BC4 +_0803B9F4: .4byte gUnknown_2023BCE +_0803B9F8: + ldrb r4, [r1] + movs r5, 0 +_0803B9FC: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0803BA0A + adds r0, r5, 0 + bl sub_803BA20 +_0803BA0A: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _0803B9FC +_0803BA16: + bl sub_803B124 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_803B9C8 + + thumb_func_start sub_803BA20 +sub_803BA20: @ 803BA20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r3, _0803BA58 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + ldr r2, _0803BA5C @ =gUnknown_2022BC7 + adds r4, r0, r2 + adds r7, r4, 0 + subs r1, r2, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r6, r3, 0 + adds r3, r2, 0 + cmp r0, 0x3B + bls _0803BA4E + bl _0803C32C +_0803BA4E: + lsls r0, 2 + ldr r1, _0803BA60 @ =_0803BA64 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803BA58: .4byte gUnknown_2023BC4 +_0803BA5C: .4byte gUnknown_2022BC7 +_0803BA60: .4byte _0803BA64 + .align 2, 0 +_0803BA64: + .4byte _0803BB54 + .4byte _0803BCEC + .4byte _0803BD08 + .4byte _0803BD24 + .4byte _0803BD78 + .4byte _0803BD78 + .4byte _0803BD78 + .4byte _0803BD78 + .4byte _0803BD98 + .4byte _0803BE00 + .4byte _0803BE00 + .4byte _0803BE00 + .4byte _0803BE00 + .4byte _0803C32C + .4byte _0803C32C + .4byte _0803C32C + .4byte _0803C32C + .4byte _0803BE28 + .4byte _0803BE44 + .4byte _0803BE60 + .4byte _0803BE7C + .4byte _0803BE98 + .4byte _0803BEB4 + .4byte _0803BED0 + .4byte _0803BEEC + .4byte _0803BF08 + .4byte _0803BF24 + .4byte _0803BF40 + .4byte _0803BF5C + .4byte _0803BF78 + .4byte _0803BF94 + .4byte _0803BFB0 + .4byte _0803C024 + .4byte _0803C040 + .4byte _0803C05C + .4byte _0803C078 + .4byte _0803C094 + .4byte _0803C0B0 + .4byte _0803C0CC + .4byte _0803C0E8 + .4byte _0803C104 + .4byte _0803C120 + .4byte _0803C13C + .4byte _0803C158 + .4byte _0803C174 + .4byte _0803C190 + .4byte _0803C1AC + .4byte _0803C1C8 + .4byte _0803C1E4 + .4byte _0803C200 + .4byte _0803C21C + .4byte _0803C238 + .4byte _0803C254 + .4byte _0803C270 + .4byte _0803C28C + .4byte _0803C2A8 + .4byte _0803C2C4 + .4byte _0803C2E0 + .4byte _0803C2FC + .4byte _0803C318 +_0803BB54: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803BCE8 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + adds r2, r7, 0 + bl sub_804037C + adds r2, r7, 0 + adds r2, 0x2E + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + movs r0, 0 + mov r8, r0 + movs r0, 0x3B + adds r0, r7 + mov r10, r0 + adds r0, r7, 0 + adds r0, 0x2B + str r0, [sp, 0x20] + adds r0, 0x19 + str r0, [sp, 0x28] + adds r0, 0x4 + str r0, [sp, 0x2C] + adds r0, 0x4 + str r0, [sp, 0x30] + subs r0, 0x22 + str r0, [sp, 0x1C] + subs r0, 0x2 + str r0, [sp, 0x18] + adds r0, 0x4 + str r0, [sp, 0x24] + adds r0, r7, 0x2 + str r0, [sp, 0x4] + adds r0, r7, 0x4 + str r0, [sp, 0x8] + adds r0, r7, 0x6 + str r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x14] + mov r9, r4 + adds r6, r7, 0 + adds r6, 0x24 + adds r4, r7, 0 + adds r4, 0xC +_0803BBBA: + mov r1, r8 + adds r1, 0xD + mov r0, r9 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + mov r0, r9 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _0803BBBA + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803BCE8 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + mov r2, r10 + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x20 + ldr r2, [sp, 0x20] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x19 + ldr r2, [sp, 0x28] + bl sub_804037C + ldrb r0, [r7, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r7, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x28 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r7, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x29 + mov r2, sp + bl sub_804037C + mov r1, sp + ldr r0, [r7, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2A + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r7, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2B + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r7, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0 + ldr r2, [sp, 0x2C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x37 + ldr r2, [sp, 0x30] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x38 + ldr r2, [sp, 0x1C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + ldr r2, [sp, 0x18] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + ldr r2, [sp, 0x24] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3B + ldr r2, [sp, 0x4] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + ldr r2, [sp, 0x8] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + ldr r2, [sp, 0xC] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + ldr r2, [sp, 0x10] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + ldr r2, [sp, 0x14] + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BCE8: .4byte gUnknown_202402C +_0803BCEC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BD04 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0xB + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BD04: .4byte gUnknown_202402C +_0803BD08: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BD20 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0xC + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BD20: .4byte gUnknown_202402C +_0803BD24: + movs r0, 0 + mov r8, r0 + movs r0, 0xC + adds r0, r4 + mov r9, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0803BD74 @ =gUnknown_202402C + adds r7, r1, r0 + adds r6, r4, 0 + adds r6, 0x8 +_0803BD3C: + mov r1, r8 + adds r1, 0xD + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + adds r0, r7, 0 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _0803BD3C + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BD74 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BD74: .4byte gUnknown_202402C +_0803BD78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BD90 @ =gUnknown_202402C + adds r0, r1 + ldr r3, _0803BD94 @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x9 + b _0803BE16 + .align 2, 0 +_0803BD90: .4byte gUnknown_202402C +_0803BD94: .4byte gUnknown_2022BC4 +_0803BD98: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803BDFC @ =gUnknown_202402C + adds r4, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + adds r0, r4, 0 + movs r1, 0x11 + str r3, [sp, 0x34] + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x12 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x13 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x14 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BDFC: .4byte gUnknown_202402C +_0803BE00: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BE20 @ =gUnknown_202402C + adds r0, r1 + ldr r3, _0803BE24 @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x8 +_0803BE16: + adds r3, 0x3 + adds r2, r3 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BE20: .4byte gUnknown_202402C +_0803BE24: .4byte gUnknown_2022BC4 +_0803BE28: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BE40 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BE40: .4byte gUnknown_202402C +_0803BE44: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BE5C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x19 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BE5C: .4byte gUnknown_202402C +_0803BE60: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BE78 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1A + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BE78: .4byte gUnknown_202402C +_0803BE7C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BE94 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1B + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BE94: .4byte gUnknown_202402C +_0803BE98: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BEB0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1C + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BEB0: .4byte gUnknown_202402C +_0803BEB4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BECC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1D + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BECC: .4byte gUnknown_202402C +_0803BED0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BEE8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1E + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BEE8: .4byte gUnknown_202402C +_0803BEEC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BF04 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1F + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BF04: .4byte gUnknown_202402C +_0803BF08: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BF20 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x20 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BF20: .4byte gUnknown_202402C +_0803BF24: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BF3C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x22 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BF3C: .4byte gUnknown_202402C +_0803BF40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BF58 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x23 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BF58: .4byte gUnknown_202402C +_0803BF5C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BF74 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x24 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BF74: .4byte gUnknown_202402C +_0803BF78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BF90 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x25 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BF90: .4byte gUnknown_202402C +_0803BF94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803BFAC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x26 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803BFAC: .4byte gUnknown_202402C +_0803BFB0: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _0803C020 @ =gUnknown_202402C + adds r4, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + adds r0, r4, 0 + movs r1, 0x27 + str r3, [sp, 0x34] + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x28 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x29 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2A + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2B + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x5 + adds r2, r0 + adds r0, r4, 0 + b _0803C0BE + .align 2, 0 +_0803C020: .4byte gUnknown_202402C +_0803C024: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C03C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x27 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C03C: .4byte gUnknown_202402C +_0803C040: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C058 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x28 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C058: .4byte gUnknown_202402C +_0803C05C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C074 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x29 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C074: .4byte gUnknown_202402C +_0803C078: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C090 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2A + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C090: .4byte gUnknown_202402C +_0803C094: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C0AC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2B + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C0AC: .4byte gUnknown_202402C +_0803C0B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C0C8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 +_0803C0BE: + movs r1, 0x2C + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C0C8: .4byte gUnknown_202402C +_0803C0CC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C0E4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C0E4: .4byte gUnknown_202402C +_0803C0E8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C100 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x9 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C100: .4byte gUnknown_202402C +_0803C104: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C11C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x37 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C11C: .4byte gUnknown_202402C +_0803C120: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C138 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x38 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C138: .4byte gUnknown_202402C +_0803C13C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C154 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x39 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C154: .4byte gUnknown_202402C +_0803C158: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C170 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3A + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C170: .4byte gUnknown_202402C +_0803C174: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C18C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3B + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C18C: .4byte gUnknown_202402C +_0803C190: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C1A8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3C + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C1A8: .4byte gUnknown_202402C +_0803C1AC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C1C4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3D + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C1C4: .4byte gUnknown_202402C +_0803C1C8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C1E0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3E + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C1E0: .4byte gUnknown_202402C +_0803C1E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C1FC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3F + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C1FC: .4byte gUnknown_202402C +_0803C200: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C218 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x16 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C218: .4byte gUnknown_202402C +_0803C21C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C234 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x17 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C234: .4byte gUnknown_202402C +_0803C238: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C250 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x18 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C250: .4byte gUnknown_202402C +_0803C254: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C26C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x21 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C26C: .4byte gUnknown_202402C +_0803C270: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C288 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2F + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C288: .4byte gUnknown_202402C +_0803C28C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C2A4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x30 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C2A4: .4byte gUnknown_202402C +_0803C2A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C2C0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x32 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C2C0: .4byte gUnknown_202402C +_0803C2C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C2DC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x33 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C2DC: .4byte gUnknown_202402C +_0803C2E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C2F8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x34 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C2F8: .4byte gUnknown_202402C +_0803C2FC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C314 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x35 + bl sub_804037C + b _0803C32C + .align 2, 0 +_0803C314: .4byte gUnknown_202402C +_0803C318: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803C33C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x36 + bl sub_804037C +_0803C32C: + add sp, 0x38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803C33C: .4byte gUnknown_202402C + thumb_func_end sub_803BA20 + + thumb_func_start sub_803C340 +sub_803C340: @ 803C340 + push {r4-r7,lr} + ldr r1, _0803C3A4 @ =gUnknown_2023BCE + ldr r7, _0803C3A8 @ =gUnknown_2023BC4 + ldrb r2, [r7] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + adds r3, r1, 0 + muls r3, r0 + ldr r4, _0803C3AC @ =gUnknown_2022BC4 + lsls r2, 9 + adds r0, r4, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _0803C3B0 @ =gUnknown_202402C + adds r0, r1 + adds r5, r3, r0 + movs r3, 0 + adds r0, r4, 0x2 + adds r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bcs _0803C398 + adds r6, r4, 0 + adds r2, r7, 0 + adds r4, r0, 0 +_0803C376: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, 9 + adds r0, 0x3 + adds r0, r3, r0 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r2] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r3, r0 + bcc _0803C376 +_0803C398: + bl sub_803B124 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803C3A4: .4byte gUnknown_2023BCE +_0803C3A8: .4byte gUnknown_2023BC4 +_0803C3AC: .4byte gUnknown_2022BC4 +_0803C3B0: .4byte gUnknown_202402C + thumb_func_end sub_803C340 + + thumb_func_start sub_803C3B4 +sub_803C3B4: @ 803C3B4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r7, _0803C4DC @ =gUnknown_2023BCE + ldr r6, _0803C4E0 @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + movs r1, 0x64 + mov r10, r1 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + ldr r1, _0803C4E4 @ =gUnknown_202402C + mov r9, r1 + add r0, r9 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r1, [r6] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + add r0, r9 + bl sub_8034320 + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F7D4 + ldr r0, _0803C4E8 @ =gUnknown_20244DC + mov r8, r0 + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r6] + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _0803C4EC @ =gUnknown_2023D44 + ldrb r1, [r6] + adds r1, r4 + strb r0, [r1] + ldr r5, _0803C4F0 @ =gUnknown_202063C + ldrb r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0803C4F4 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x2E] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0803C4F8 @ =gUnknown_2024024 + adds r2, r1 + ldrb r1, [r2] + bl sub_800838C + ldrb r4, [r6] + lsls r0, r4, 1 + adds r0, r7 + ldrh r0, [r0] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + ldr r1, _0803C4FC @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803C500 @ =sub_803AC14 + str r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803C4DC: .4byte gUnknown_2023BCE +_0803C4E0: .4byte gUnknown_2023BC4 +_0803C4E4: .4byte gUnknown_202402C +_0803C4E8: .4byte gUnknown_20244DC +_0803C4EC: .4byte gUnknown_2023D44 +_0803C4F0: .4byte gUnknown_202063C +_0803C4F4: .4byte 0x0000ff10 +_0803C4F8: .4byte gUnknown_2024024 +_0803C4FC: .4byte gUnknown_3004FE0 +_0803C500: .4byte sub_803AC14 + thumb_func_end sub_803C3B4 + + thumb_func_start sub_803C504 +sub_803C504: @ 803C504 + push {r4,lr} + ldr r1, _0803C53C @ =gUnknown_2023BCE + ldr r4, _0803C540 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r2, r0, 1 + adds r2, r1 + ldr r3, _0803C544 @ =gUnknown_2022BC4 + lsls r0, 9 + adds r1, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldrb r0, [r4] + lsls r1, r0, 9 + adds r3, 0x2 + adds r1, r3 + ldrb r1, [r1] + bl sub_803C550 + ldr r1, _0803C548 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803C54C @ =sub_803AFFC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803C53C: .4byte gUnknown_2023BCE +_0803C540: .4byte gUnknown_2023BC4 +_0803C544: .4byte gUnknown_2022BC4 +_0803C548: .4byte gUnknown_3004FE0 +_0803C54C: .4byte sub_803AFFC + thumb_func_end sub_803C504 + + thumb_func_start sub_803C550 +sub_803C550: @ 803C550 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_803589C + ldr r0, _0803C6AC @ =gUnknown_2023BCE + lsls r4, r6, 1 + adds r4, r0 + ldr r0, _0803C6B0 @ =gUnknown_2022BC4 + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0x64 + mov r9, r1 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + ldr r5, _0803C6B4 @ =gUnknown_202402C + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _0803C6B8 @ =sub_8033E3C + bl sub_8044EF8 + ldr r1, _0803C6BC @ =gUnknown_3004FFC + mov r10, r1 + add r10, r6 + mov r1, r10 + strb r0, [r1] + ldrh r0, [r4] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + adds r0, r5 + adds r1, r6, 0 + bl sub_8034320 + adds r0, r6, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _0803C6C0 @ =gUnknown_20244DC + mov r9, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r9 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _0803C6C4 @ =gUnknown_2023D44 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _0803C6C8 @ =gUnknown_202063C + mov r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0803C6CC @ =gUnknown_2024024 + adds r6, r1 + ldrb r1, [r6] + bl sub_800838C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0803C6D0 @ =nullsub_8 + str r1, [r0] + movs r0, 0 + movs r1, 0xFE + bl sub_804A938 + mov r1, r10 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803C6AC: .4byte gUnknown_2023BCE +_0803C6B0: .4byte gUnknown_2022BC4 +_0803C6B4: .4byte gUnknown_202402C +_0803C6B8: .4byte sub_8033E3C +_0803C6BC: .4byte gUnknown_3004FFC +_0803C6C0: .4byte gUnknown_20244DC +_0803C6C4: .4byte gUnknown_2023D44 +_0803C6C8: .4byte gUnknown_202063C +_0803C6CC: .4byte gUnknown_2024024 +_0803C6D0: .4byte nullsub_8 + thumb_func_end sub_803C550 + + thumb_func_start sub_803C6D4 +sub_803C6D4: @ 803C6D4 + push {r4-r6,lr} + ldr r1, _0803C708 @ =gUnknown_2022BC4 + ldr r6, _0803C70C @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _0803C71C + ldr r0, _0803C710 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strb r3, [r0, 0x4] + ldr r1, _0803C714 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803C718 @ =sub_803C76C + str r1, [r0] + b _0803C758 + .align 2, 0 +_0803C708: .4byte gUnknown_2022BC4 +_0803C70C: .4byte gUnknown_2023BC4 +_0803C710: .4byte gUnknown_2024018 +_0803C714: .4byte gUnknown_3004FE0 +_0803C718: .4byte sub_803C76C +_0803C71C: + ldr r5, _0803C760 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0803C764 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldrb r0, [r6] + bl sub_8035794 + ldr r1, _0803C768 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_803B124 +_0803C758: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803C760: .4byte gUnknown_2023D44 +_0803C764: .4byte gUnknown_202063C +_0803C768: .4byte gUnknown_3004FF0 + thumb_func_end sub_803C6D4 + + thumb_func_start sub_803C76C +sub_803C76C: @ 803C76C + push {r4-r6,lr} + ldr r6, _0803C78C @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _0803C790 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r4, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x4] + cmp r0, 0 + beq _0803C794 + cmp r0, 0x1 + beq _0803C7C2 + b _0803C7EA + .align 2, 0 +_0803C78C: .4byte gUnknown_2024018 +_0803C790: .4byte gUnknown_2023BC4 +_0803C794: + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803C7AE + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_0803C7AE: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _0803C7EA +_0803C7C2: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0803C7EA + strb r0, [r3, 0x4] + ldrb r2, [r5] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x2 + bl sub_80341D8 + ldr r1, _0803C7F0 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803C7F4 @ =sub_803AD64 + str r1, [r0] +_0803C7EA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803C7F0: .4byte gUnknown_3004FE0 +_0803C7F4: .4byte sub_803AD64 + thumb_func_end sub_803C76C + + thumb_func_start sub_803C7F8 +sub_803C7F8: @ 803C7F8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0803C884 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803C8C0 + ldr r6, _0803C888 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80751D8 + movs r1, 0x2 + ands r1, r0 + movs r7, 0xC8 + cmp r1, 0 + beq _0803C820 + movs r7, 0x98 +_0803C820: + ldrb r0, [r6] + bl sub_8043658 + ldr r5, _0803C88C @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + movs r4, 0xFF + ldrb r0, [r1] + cmp r0, 0x2 + beq _0803C866 + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r1, [r1] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x1 + beq _0803C866 + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r0, [r1] + ands r4, r0 + cmp r4, 0x3 + bne _0803C8A0 +_0803C866: + ldr r4, _0803C88C @ =gUnknown_202273C + ldr r0, _0803C888 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x13] + cmp r0, 0 + beq _0803C894 + ldr r0, _0803C890 @ =gUnknown_82538A8 + adds r0, 0x3D + b _0803C990 + .align 2, 0 +_0803C884: .4byte gUnknown_2022B4C +_0803C888: .4byte gUnknown_2023BC4 +_0803C88C: .4byte gUnknown_202273C +_0803C890: .4byte gUnknown_82538A8 +_0803C894: + ldr r0, _0803C89C @ =gUnknown_82538A8 + adds r0, 0x3A + b _0803C990 + .align 2, 0 +_0803C89C: .4byte gUnknown_82538A8 +_0803C8A0: + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1, 0x13] + cmp r0, 0 + beq _0803C98C + ldr r0, _0803C8BC @ =gUnknown_82538A8 + adds r0, 0x87 + b _0803C990 + .align 2, 0 +_0803C8BC: .4byte gUnknown_82538A8 +_0803C8C0: + movs r7, 0xB0 + ldr r0, _0803C8D8 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + cmp r1, r0 + bne _0803C8DC + bl sub_80447AC + lsls r0, 16 + lsrs r0, 16 + b _0803C992 + .align 2, 0 +_0803C8D8: .4byte gUnknown_20386AE +_0803C8DC: + bl sub_800A404 + ldr r6, _0803C954 @ =gUnknown_202273C + movs r5, 0x1 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + movs r4, 0xFF + ldrb r0, [r1] + cmp r0, 0x2 + beq _0803C930 + bl sub_800A404 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrh r1, [r1] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x1 + beq _0803C930 + bl sub_800A404 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrh r0, [r1] + ands r4, r0 + cmp r4, 0x3 + bne _0803C968 +_0803C930: + ldr r4, _0803C954 @ =gUnknown_202273C + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x13] + cmp r0, 0 + beq _0803C95C + ldr r0, _0803C958 @ =gUnknown_82538A8 + adds r0, 0x3D + b _0803C990 + .align 2, 0 +_0803C954: .4byte gUnknown_202273C +_0803C958: .4byte gUnknown_82538A8 +_0803C95C: + ldr r0, _0803C964 @ =gUnknown_82538A8 + adds r0, 0x3A + b _0803C990 + .align 2, 0 +_0803C964: .4byte gUnknown_82538A8 +_0803C968: + bl sub_800A404 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1, 0x13] + cmp r0, 0 + beq _0803C98C + ldr r0, _0803C988 @ =gUnknown_82538A8 + adds r0, 0x87 + b _0803C990 + .align 2, 0 +_0803C988: .4byte gUnknown_82538A8 +_0803C98C: + ldr r0, _0803CAC8 @ =gUnknown_82538A8 + adds r0, 0x86 +_0803C990: + ldrb r0, [r0] +_0803C992: + mov r9, r0 + ldr r0, _0803CACC @ =gUnknown_2023BC4 + mov r8, r0 + ldrb r1, [r0] + mov r0, r9 + bl sub_80346C4 + mov r1, r8 + ldrb r0, [r1] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r9 + bl sub_803F864 + ldr r5, _0803CAD0 @ =gUnknown_20244DC + adds r6, r7, 0 + ldr r1, _0803CAD4 @ =gUnknown_823932C + mov r2, r9 + lsls r0, r2, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 14 + adds r4, r0 + asrs r4, 16 + mov r1, r8 + ldrb r0, [r1] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r5, _0803CAD8 @ =gUnknown_2023D44 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + strb r0, [r1] + ldr r4, _0803CADC @ =gUnknown_202063C + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _0803CAE0 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldr r0, _0803CAE4 @ =gUnknown_8239A1C + mov r1, r9 + lsls r6, r1, 3 + adds r0, r6, r0 + ldrh r0, [r0, 0x4] + bl sub_80089E8 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r4 + lsls r0, 4 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0x5] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r1, 0x38] + ldr r0, _0803CAE8 @ =gUnknown_823957C + adds r6, r0 + ldrh r0, [r6, 0x6] + bl sub_8008804 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldr r2, _0803CAEC @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _0803CAF0 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r2, r9 + strh r2, [r0, 0x6] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _0803CAF4 @ =sub_8033EEC + str r1, [r0] + ldr r1, _0803CAF8 @ =gUnknown_3004FE0 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803CAFC @ =sub_803A6D4 + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803CAC8: .4byte gUnknown_82538A8 +_0803CACC: .4byte gUnknown_2023BC4 +_0803CAD0: .4byte gUnknown_20244DC +_0803CAD4: .4byte gUnknown_823932C +_0803CAD8: .4byte gUnknown_2023D44 +_0803CADC: .4byte gUnknown_202063C +_0803CAE0: .4byte 0x0000ff10 +_0803CAE4: .4byte gUnknown_8239A1C +_0803CAE8: .4byte gUnknown_823957C +_0803CAEC: .4byte 0x000003ff +_0803CAF0: .4byte 0xfffffc00 +_0803CAF4: .4byte sub_8033EEC +_0803CAF8: .4byte gUnknown_3004FE0 +_0803CAFC: .4byte sub_803A6D4 + thumb_func_end sub_803C7F8 + + thumb_func_start sub_803CB00 +sub_803CB00: @ 803CB00 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CB00 + + thumb_func_start sub_803CB0C +sub_803CB0C: @ 803CB0C + push {r4-r6,lr} + ldr r6, _0803CB9C @ =gUnknown_2023D44 + ldr r4, _0803CBA0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0803CBA4 @ =gUnknown_202063C + adds r0, r5 + bl sub_80750FC + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x8C + lsls r1, 1 + strh r1, [r0, 0x32] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0803CBA8 @ =sub_8075590 + str r1, [r0] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0803CBAC @ =nullsub_8 + bl sub_8074A68 + ldr r1, _0803CBB0 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803CBB4 @ =sub_803A70C + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803CB9C: .4byte gUnknown_2023D44 +_0803CBA0: .4byte gUnknown_2023BC4 +_0803CBA4: .4byte gUnknown_202063C +_0803CBA8: .4byte sub_8075590 +_0803CBAC: .4byte nullsub_8 +_0803CBB0: .4byte gUnknown_3004FE0 +_0803CBB4: .4byte sub_803A70C + thumb_func_end sub_803CB0C + + thumb_func_start sub_803CBB8 +sub_803CBB8: @ 803CBB8 + push {r4-r6,lr} + ldr r6, _0803CC04 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _0803CC08 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, [r4, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _0803CC0C + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803CBEC + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_0803CBEC: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + adds r1, 0x1 + strb r1, [r0, 0x4] + b _0803CC48 + .align 2, 0 +_0803CC04: .4byte gUnknown_2024018 +_0803CC08: .4byte gUnknown_2023BC4 +_0803CC0C: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0803CC48 + strb r0, [r3, 0x4] + movs r0, 0x10 + movs r1, 0x3F + bl sub_80722F4 + ldr r2, _0803CC50 @ =gUnknown_202063C + ldr r1, _0803CC54 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0803CC58 @ =sub_8011EA0 + str r1, [r0] + ldr r1, _0803CC5C @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803CC60 @ =sub_803AD20 + str r1, [r0] +_0803CC48: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803CC50: .4byte gUnknown_202063C +_0803CC54: .4byte gUnknown_2023D44 +_0803CC58: .4byte sub_8011EA0 +_0803CC5C: .4byte gUnknown_3004FE0 +_0803CC60: .4byte sub_803AD20 + thumb_func_end sub_803CBB8 + + thumb_func_start sub_803CC64 +sub_803CC64: @ 803CC64 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CC64 + + thumb_func_start sub_803CC70 +sub_803CC70: @ 803CC70 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CC70 + + thumb_func_start sub_803CC7C +sub_803CC7C: @ 803CC7C + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CC7C + + thumb_func_start sub_803CC88 +sub_803CC88: @ 803CC88 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CC88 + + thumb_func_start sub_803CC94 +sub_803CC94: @ 803CC94 + push {r4-r6,lr} + ldr r6, _0803CD78 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + beq _0803CCA6 + b _0803CDBA +_0803CCA6: + ldr r0, _0803CD7C @ =gUnknown_2022BC4 + mov r12, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _0803CD80 @ =gUnknown_2037F16 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _0803CD84 @ =gUnknown_2037EEC + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _0803CD88 @ =gUnknown_2037EE8 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _0803CD8C @ =gUnknown_2037EFE + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _0803CD90 @ =gUnknown_2037F00 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _0803CD94 @ =gUnknown_2037EE4 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _0803CD98 @ =gUnknown_2024008 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_80342A0 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _0803CD9C + bl sub_803B124 + b _0803CDBA + .align 2, 0 +_0803CD78: .4byte gUnknown_2023BC4 +_0803CD7C: .4byte gUnknown_2022BC4 +_0803CD80: .4byte gUnknown_2037F16 +_0803CD84: .4byte gUnknown_2037EEC +_0803CD88: .4byte gUnknown_2037EE8 +_0803CD8C: .4byte gUnknown_2037EFE +_0803CD90: .4byte gUnknown_2037F00 +_0803CD94: .4byte gUnknown_2037EE4 +_0803CD98: .4byte gUnknown_2024008 +_0803CD9C: + ldr r0, _0803CDC0 @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x4] + ldr r1, _0803CDC4 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803CDC8 @ =sub_803CDCC + str r1, [r0] +_0803CDBA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803CDC0: .4byte gUnknown_2024018 +_0803CDC4: .4byte gUnknown_3004FE0 +_0803CDC8: .4byte sub_803CDCC + thumb_func_end sub_803CC94 + + thumb_func_start sub_803CDCC +sub_803CDCC: @ 803CDCC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _0803CE18 @ =gUnknown_2022BC4 + ldr r6, _0803CE1C @ =gUnknown_2023BC4 + ldrb r3, [r6] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r10, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, 0x2 + mov r9, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + adds r2, 0xB + adds r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _0803CE20 @ =gUnknown_2024018 + ldr r5, [r7] + ldr r1, [r5, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _0803CE64 + cmp r2, 0x1 + bgt _0803CE24 + cmp r2, 0 + beq _0803CE2E + b _0803CF40 + .align 2, 0 +_0803CE18: .4byte gUnknown_2022BC4 +_0803CE1C: .4byte gUnknown_2023BC4 +_0803CE20: .4byte gUnknown_2024018 +_0803CE24: + cmp r2, 0x2 + beq _0803CE8E + cmp r2, 0x3 + beq _0803CF04 + b _0803CF40 +_0803CE2E: + ldr r1, [r5] + lsls r0, r3, 2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, 0xC + ands r0, r2 + cmp r0, 0x4 + bne _0803CE50 + movs r0, 0x8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_0803CE50: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _0803CF40 +_0803CE64: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803CF40 + movs r0, 0 + bl sub_8035450 + adds r0, r4, 0 + bl sub_807259C + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x4] + b _0803CF40 +_0803CE8E: + ldr r0, _0803CEF4 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0803CEF8 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803CF40 + movs r0, 0x1 + bl sub_8035450 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803CEDC + mov r0, r8 + cmp r0, 0x1 + bhi _0803CEDC + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_0803CEDC: + ldr r0, _0803CEFC @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _0803CF00 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _0803CF40 + .align 2, 0 +_0803CEF4: .4byte gUnknown_2037EDC +_0803CEF8: .4byte gUnknown_2037EE1 +_0803CEFC: .4byte gUnknown_2024018 +_0803CF00: .4byte gUnknown_2023BC4 +_0803CF04: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0803CF40 + bl sub_8034B40 + ldrb r0, [r6] + lsls r2, r0, 9 + mov r3, r10 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r9 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_8035200 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x4] + bl sub_803B124 +_0803CF40: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803CDCC + + thumb_func_start sub_803CF50 +sub_803CF50: @ 803CF50 + push {r4,lr} + ldr r0, _0803CF84 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _0803CF88 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _0803CF8C @ =gUnknown_2023BC4 + ldrb r4, [r0] + lsls r4, 9 + ldr r0, _0803CF90 @ =gUnknown_2022BC6 + adds r4, r0 + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _0803CF98 + ldr r0, _0803CF94 @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _0803CFA0 + .align 2, 0 +_0803CF84: .4byte gUnknown_2022974 +_0803CF88: .4byte gUnknown_2022976 +_0803CF8C: .4byte gUnknown_2023BC4 +_0803CF90: .4byte gUnknown_2022BC6 +_0803CF94: .4byte gUnknown_202298C +_0803CF98: + ldr r0, _0803CFB4 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_0803CFA0: + ldr r1, _0803CFB8 @ =gUnknown_3004FE0 + ldr r0, _0803CFBC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803CFC0 @ =sub_803ADD8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803CFB4: .4byte gUnknown_202298C +_0803CFB8: .4byte gUnknown_3004FE0 +_0803CFBC: .4byte gUnknown_2023BC4 +_0803CFC0: .4byte sub_803ADD8 + thumb_func_end sub_803CF50 + + thumb_func_start sub_803CFC4 +sub_803CFC4: @ 803CFC4 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CFC4 + + thumb_func_start sub_803CFD0 +sub_803CFD0: @ 803CFD0 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CFD0 + + thumb_func_start sub_803CFDC +sub_803CFDC: @ 803CFDC + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CFDC + + thumb_func_start sub_803CFE8 +sub_803CFE8: @ 803CFE8 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CFE8 + + thumb_func_start sub_803CFF4 +sub_803CFF4: @ 803CFF4 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803CFF4 + + thumb_func_start sub_803D000 +sub_803D000: @ 803D000 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D000 + + thumb_func_start sub_803D00C +sub_803D00C: @ 803D00C + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D00C + + thumb_func_start sub_803D018 +sub_803D018: @ 803D018 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r0, 0 + bl sub_8034964 + ldr r3, _0803D090 @ =gUnknown_2022BC4 + ldr r0, _0803D094 @ =gUnknown_2023BC4 + mov r9, r0 + ldrb r4, [r0] + lsls r2, r4, 9 + adds r0, r3, 0x2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, 0x3 + adds r2, r3 + ldrb r0, [r2] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + asrs r7, r1, 16 + ldr r0, _0803D098 @ =0x00007fff + cmp r7, r0 + beq _0803D0A8 + ldr r6, _0803D09C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _0803D0A0 @ =gUnknown_202402C + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + mov r8, r0 + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _0803D0A4 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_8048150 + b _0803D0D2 + .align 2, 0 +_0803D090: .4byte gUnknown_2022BC4 +_0803D094: .4byte gUnknown_2023BC4 +_0803D098: .4byte 0x00007fff +_0803D09C: .4byte gUnknown_2023BCE +_0803D0A0: .4byte gUnknown_202402C +_0803D0A4: .4byte gUnknown_3004FF0 +_0803D0A8: + ldr r1, _0803D0F0 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0803D0F4 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _0803D0F8 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, 0 + bl sub_8048150 +_0803D0D2: + ldr r1, _0803D0FC @ =gUnknown_3004FE0 + ldr r0, _0803D100 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D104 @ =sub_803ACCC + str r1, [r0] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803D0F0: .4byte gUnknown_2023BCE +_0803D0F4: .4byte gUnknown_202402C +_0803D0F8: .4byte gUnknown_3004FF0 +_0803D0FC: .4byte gUnknown_3004FE0 +_0803D100: .4byte gUnknown_2023BC4 +_0803D104: .4byte sub_803ACCC + thumb_func_end sub_803D018 + + thumb_func_start sub_803D108 +sub_803D108: @ 803D108 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D108 + + thumb_func_start sub_803D114 +sub_803D114: @ 803D114 + push {r4,lr} + ldr r4, _0803D170 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _0803D168 + ldr r0, _0803D174 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0803D178 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0803D17C @ =gUnknown_202402C + adds r1, r2 + movs r2, 0x9 + bl sub_8049D98 + ldrb r2, [r4] + ldr r0, _0803D180 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0803D184 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D188 @ =sub_803B0C4 + str r1, [r0] +_0803D168: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D170: .4byte gUnknown_2023BC4 +_0803D174: .4byte gUnknown_3004FF0 +_0803D178: .4byte gUnknown_2023BCE +_0803D17C: .4byte gUnknown_202402C +_0803D180: .4byte gUnknown_2024018 +_0803D184: .4byte gUnknown_3004FE0 +_0803D188: .4byte sub_803B0C4 + thumb_func_end sub_803D114 + + thumb_func_start sub_803D18C +sub_803D18C: @ 803D18C + push {r4,r5,lr} + ldr r5, _0803D1E4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _0803D1DC + ldr r4, _0803D1E8 @ =gUnknown_2022BC4 + ldrb r3, [r5] + lsls r3, 9 + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, 0x2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + adds r2, r4, 0x4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 16 + orrs r1, r2 + adds r4, 0x5 + adds r3, r4 + ldrb r2, [r3] + lsls r2, 24 + orrs r1, r2 + bl sub_8033F1C + ldr r1, _0803D1EC @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D1F0 @ =sub_803B0C4 + str r1, [r0] +_0803D1DC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803D1E4: .4byte gUnknown_2023BC4 +_0803D1E8: .4byte gUnknown_2022BC4 +_0803D1EC: .4byte gUnknown_3004FE0 +_0803D1F0: .4byte sub_803B0C4 + thumb_func_end sub_803D18C + + thumb_func_start sub_803D1F4 +sub_803D1F4: @ 803D1F4 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D1F4 + + thumb_func_start sub_803D200 +sub_803D200: @ 803D200 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D200 + + thumb_func_start sub_803D20C +sub_803D20C: @ 803D20C + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D20C + + thumb_func_start sub_803D218 +sub_803D218: @ 803D218 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D218 + + thumb_func_start sub_803D224 +sub_803D224: @ 803D224 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D224 + + thumb_func_start sub_803D230 +sub_803D230: @ 803D230 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D230 + + thumb_func_start sub_803D23C +sub_803D23C: @ 803D23C + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D23C + + thumb_func_start sub_803D248 +sub_803D248: @ 803D248 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D248 + + thumb_func_start sub_803D254 +sub_803D254: @ 803D254 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D254 + + thumb_func_start sub_803D260 +sub_803D260: @ 803D260 + push {lr} + ldr r2, _0803D278 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x80 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D278: .4byte gUnknown_2022870 + thumb_func_end sub_803D260 + + thumb_func_start sub_803D27C +sub_803D27C: @ 803D27C + push {lr} + ldr r3, _0803D2A8 @ =gUnknown_2022870 + ldr r1, _0803D2AC @ =gUnknown_2022BC4 + ldr r0, _0803D2B0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x7F + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D2A8: .4byte gUnknown_2022870 +_0803D2AC: .4byte gUnknown_2022BC4 +_0803D2B0: .4byte gUnknown_2023BC4 + thumb_func_end sub_803D27C + + thumb_func_start sub_803D2B4 +sub_803D2B4: @ 803D2B4 + push {lr} + ldr r2, _0803D2C8 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D2C8: .4byte gUnknown_2022870 + thumb_func_end sub_803D2B4 + + thumb_func_start sub_803D2CC +sub_803D2CC: @ 803D2CC + push {lr} + ldr r3, _0803D2F0 @ =gUnknown_2022870 + ldr r1, [r3] + lsls r1, 24 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 7 + ldrb r2, [r3] + movs r0, 0x7F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D2F0: .4byte gUnknown_2022870 + thumb_func_end sub_803D2CC + + thumb_func_start sub_803D2F4 +sub_803D2F4: @ 803D2F4 + push {r4,lr} + ldr r3, _0803D31C @ =gUnknown_202063C + ldr r2, _0803D320 @ =gUnknown_2023D44 + ldr r4, _0803D324 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _0803D328 + bl sub_803B124 + b _0803D352 + .align 2, 0 +_0803D31C: .4byte gUnknown_202063C +_0803D320: .4byte gUnknown_2023D44 +_0803D324: .4byte gUnknown_2023BC4 +_0803D328: + ldr r1, _0803D358 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_804BE70 + ldr r1, _0803D35C @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D360 @ =sub_803ADF0 + str r1, [r0] +_0803D352: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D358: .4byte gUnknown_2024005 +_0803D35C: .4byte gUnknown_3004FE0 +_0803D360: .4byte sub_803ADF0 + thumb_func_end sub_803D2F4 + + thumb_func_start sub_803D364 +sub_803D364: @ 803D364 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D364 + + thumb_func_start sub_803D370 +sub_803D370: @ 803D370 + push {r4,lr} + ldr r4, _0803D3AC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r3, 0x3F + cmp r0, 0 + bne _0803D384 + movs r3, 0xC0 +_0803D384: + ldr r2, _0803D3B0 @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + lsls r1, r3, 24 + asrs r1, 24 + bl sub_80722F4 + bl sub_803B124 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D3AC: .4byte gUnknown_2023BC4 +_0803D3B0: .4byte gUnknown_2022BC4 + thumb_func_end sub_803D370 + + thumb_func_start sub_803D3B4 +sub_803D3B4: @ 803D3B4 + push {lr} + ldr r2, _0803D3DC @ =gUnknown_2022BC4 + ldr r0, _0803D3E0 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D3DC: .4byte gUnknown_2022BC4 +_0803D3E0: .4byte gUnknown_2023BC4 + thumb_func_end sub_803D3B4 + + thumb_func_start sub_803D3E4 +sub_803D3E4: @ 803D3E4 + push {lr} + ldr r1, _0803D414 @ =gUnknown_2023BCE + ldr r0, _0803D418 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0803D41C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + movs r2, 0x5 + bl sub_8071E60 + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D414: .4byte gUnknown_2023BCE +_0803D418: .4byte gUnknown_2023BC4 +_0803D41C: .4byte gUnknown_202402C + thumb_func_end sub_803D3E4 + + thumb_func_start sub_803D420 +sub_803D420: @ 803D420 + push {lr} + ldr r1, _0803D448 @ =gUnknown_2022BC4 + ldr r0, _0803D44C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _0803D450 @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D448: .4byte gUnknown_2022BC4 +_0803D44C: .4byte gUnknown_2023BC4 +_0803D450: .4byte gUnknown_2023F4C + thumb_func_end sub_803D420 + + thumb_func_start sub_803D454 +sub_803D454: @ 803D454 + push {r4-r6,lr} + ldr r5, _0803D534 @ =gUnknown_2023D44 + ldr r6, _0803D538 @ =gUnknown_2023BC4 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0803D53C @ =gUnknown_202063C + adds r0, r4 + bl sub_80750FC + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x8C + lsls r1, 1 + strh r1, [r0, 0x32] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0803D540 @ =sub_8075590 + str r1, [r0] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _0803D544 @ =sub_803D648 + bl sub_8074A68 + ldr r0, _0803D548 @ =sub_803D564 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _0803D54C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r6] + strh r0, [r1, 0x8] + ldr r3, _0803D550 @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803D516 + ldr r0, _0803D554 @ =gUnknown_2024000 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _0803D558 @ =sub_80491B0 + str r1, [r0] +_0803D516: + ldr r0, [r3] + ldr r2, [r0, 0x8] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _0803D55C @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D560 @ =nullsub_19 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803D534: .4byte gUnknown_2023D44 +_0803D538: .4byte gUnknown_2023BC4 +_0803D53C: .4byte gUnknown_202063C +_0803D540: .4byte sub_8075590 +_0803D544: .4byte sub_803D648 +_0803D548: .4byte sub_803D564 +_0803D54C: .4byte gUnknown_3005090 +_0803D550: .4byte gUnknown_2024018 +_0803D554: .4byte gUnknown_2024000 +_0803D558: .4byte sub_80491B0 +_0803D55C: .4byte gUnknown_3004FE0 +_0803D560: .4byte nullsub_19 + thumb_func_end sub_803D454 + + thumb_func_start sub_803D564 +sub_803D564: @ 803D564 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r7, _0803D5BC @ =gUnknown_2023BC4 + ldrb r0, [r7] + mov r9, r0 + ldr r1, _0803D5C0 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x8] + strb r0, [r7] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0803D59E + ldr r0, _0803D5C4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0803D5D0 +_0803D59E: + ldr r0, _0803D5C8 @ =gUnknown_2022BC4 + ldrb r1, [r7] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _0803D5CC @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, 0 + bl sub_803C550 + b _0803D610 + .align 2, 0 +_0803D5BC: .4byte gUnknown_2023BC4 +_0803D5C0: .4byte gUnknown_3005090 +_0803D5C4: .4byte gUnknown_2022B4C +_0803D5C8: .4byte gUnknown_2022BC4 +_0803D5CC: .4byte gUnknown_2023BCE +_0803D5D0: + ldr r4, _0803D634 @ =gUnknown_2022BC4 + ldrb r0, [r7] + lsls r1, r0, 9 + adds r4, 0x1 + adds r1, r4 + ldr r6, _0803D638 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_803C550 + ldrb r0, [r7] + movs r5, 0x2 + eors r0, r5 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, 9 + adds r1, r4 + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_803C550 + ldrb r0, [r7] + eors r0, r5 + strb r0, [r7] +_0803D610: + ldr r1, _0803D63C @ =gUnknown_3004FE0 + ldr r2, _0803D640 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D644 @ =sub_803A9CC + str r1, [r0] + mov r0, r9 + strb r0, [r2] + mov r0, r8 + bl sub_8077508 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803D634: .4byte gUnknown_2022BC4 +_0803D638: .4byte gUnknown_2023BCE +_0803D63C: .4byte gUnknown_3004FE0 +_0803D640: .4byte gUnknown_2023BC4 +_0803D644: .4byte sub_803A9CC + thumb_func_end sub_803D564 + + thumb_func_start sub_803D648 +sub_803D648: @ 803D648 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x6] + bl sub_803477C + ldrh r0, [r4, 0x38] + ldr r1, _0803D674 @ =0x000003ff + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _0803D678 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D674: .4byte 0x000003ff +_0803D678: .4byte 0xfffffc00 + thumb_func_end sub_803D648 + + thumb_func_start sub_803D67C +sub_803D67C: @ 803D67C + push {r4-r7,lr} + ldr r1, _0803D6A4 @ =gUnknown_2022BC4 + ldr r0, _0803D6A8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0803D6AC + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0803D6AC + bl sub_803B124 + b _0803D776 + .align 2, 0 +_0803D6A4: .4byte gUnknown_2022BC4 +_0803D6A8: .4byte gUnknown_2023BC4 +_0803D6AC: + ldr r4, _0803D704 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r3, _0803D708 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldr r1, _0803D70C @ =gUnknown_2022BC4 + ldrb r2, [r3] + lsls r0, r2, 9 + adds r1, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r7, r3, 0 + cmp r0, 0 + beq _0803D718 + ldr r0, [r4] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r2, [r3, 0x1] + lsls r1, r2, 26 + lsrs r0, r1, 27 + cmp r0, 0x1 + bhi _0803D710 + adds r0, 0x1 + movs r1, 0x1F + ands r0, r1 + lsls r0, 1 + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x1] + b _0803D776 + .align 2, 0 +_0803D704: .4byte gUnknown_2024018 +_0803D708: .4byte gUnknown_2023BC4 +_0803D70C: .4byte gUnknown_2022BC4 +_0803D710: + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + strb r0, [r3, 0x1] +_0803D718: + adds r5, r7, 0 + ldrb r0, [r5] + lsls r3, r0, 9 + ldr r4, _0803D77C @ =gUnknown_2022BC8 + adds r1, r3, r4 + subs r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, 0x2 + adds r3, r4 + ldrb r3, [r3] + bl sub_8048D14 + ldr r2, _0803D780 @ =gUnknown_2024000 + ldrb r1, [r5] + adds r1, r2 + movs r3, 0 + strb r0, [r1] + ldr r6, _0803D784 @ =gUnknown_2024018 + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x5] + ldrb r2, [r5] + lsls r0, r2, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0803D76A + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x5D + strb r1, [r0, 0x5] +_0803D76A: + ldr r0, _0803D788 @ =gUnknown_3004FE0 + ldrb r1, [r7] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803D78C @ =sub_803D790 + str r0, [r1] +_0803D776: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803D77C: .4byte gUnknown_2022BC8 +_0803D780: .4byte gUnknown_2024000 +_0803D784: .4byte gUnknown_2024018 +_0803D788: .4byte gUnknown_3004FE0 +_0803D78C: .4byte sub_803D790 + thumb_func_end sub_803D67C + + thumb_func_start sub_803D790 +sub_803D790: @ 803D790 + push {r4,lr} + ldr r4, _0803D7D0 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r3, _0803D7D4 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + adds r2, r1, 0x1 + strb r2, [r0, 0x5] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x5C + bls _0803D7C8 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x5] + bl sub_803B124 +_0803D7C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D7D0: .4byte gUnknown_2024018 +_0803D7D4: .4byte gUnknown_2023BC4 + thumb_func_end sub_803D790 + + thumb_func_start sub_803D7D8 +sub_803D7D8: @ 803D7D8 + push {lr} + ldr r0, _0803D814 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _0803D818 @ =gUnknown_2023BC4 + ldrb r3, [r0] + ldr r1, [r1, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803D80A + ldr r2, _0803D81C @ =gUnknown_3005090 + ldr r0, _0803D820 @ =gUnknown_2024000 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _0803D824 @ =sub_80491B0 + str r1, [r0] +_0803D80A: + bl sub_803B124 + pop {r0} + bx r0 + .align 2, 0 +_0803D814: .4byte gUnknown_2024018 +_0803D818: .4byte gUnknown_2023BC4 +_0803D81C: .4byte gUnknown_3005090 +_0803D820: .4byte gUnknown_2024000 +_0803D824: .4byte sub_80491B0 + thumb_func_end sub_803D7D8 + + thumb_func_start sub_803D828 +sub_803D828: @ 803D828 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D828 + + thumb_func_start sub_803D834 +sub_803D834: @ 803D834 + push {r4,lr} + ldr r4, _0803D884 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _0803D87A + ldr r3, _0803D888 @ =gUnknown_202063C + ldr r0, _0803D88C @ =gUnknown_2023D44 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldr r0, _0803D890 @ =gUnknown_2022BC4 + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + adds r2, 0x3E + movs r0, 0x1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_8034BB4 +_0803D87A: + bl sub_803B124 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D884: .4byte gUnknown_2023BC4 +_0803D888: .4byte gUnknown_202063C +_0803D88C: .4byte gUnknown_2023D44 +_0803D890: .4byte gUnknown_2022BC4 + thumb_func_end sub_803D834 + + thumb_func_start sub_803D894 +sub_803D894: @ 803D894 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _0803D8D8 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _0803D8EC + ldr r5, _0803D8DC @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _0803D8E0 + bl sub_803B124 + b _0803D8EC + .align 2, 0 +_0803D8D8: .4byte gUnknown_2023BC4 +_0803D8DC: .4byte gUnknown_2022BC4 +_0803D8E0: + ldr r0, _0803D8F4 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803D8F8 @ =sub_803B0F4 + str r0, [r1] +_0803D8EC: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803D8F4: .4byte gUnknown_3004FE0 +_0803D8F8: .4byte sub_803B0F4 + thumb_func_end sub_803D894 + + thumb_func_start sub_803D8FC +sub_803D8FC: @ 803D8FC + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D8FC + + thumb_func_start sub_803D908 +sub_803D908: @ 803D908 + push {lr} + bl sub_803B124 + pop {r0} + bx r0 + thumb_func_end sub_803D908 + + thumb_func_start sub_803D914 +sub_803D914: @ 803D914 + push {lr} + ldr r1, _0803D930 @ =gUnknown_2022BC4 + ldr r0, _0803D934 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r2, [r0] + cmp r2, 0x3 + bne _0803D93C + ldr r0, _0803D938 @ =gUnknown_2023E8A + strb r2, [r0] + b _0803D944 + .align 2, 0 +_0803D930: .4byte gUnknown_2022BC4 +_0803D934: .4byte gUnknown_2023BC4 +_0803D938: .4byte gUnknown_2023E8A +_0803D93C: + ldr r0, _0803D968 @ =gUnknown_2023E8A + movs r1, 0x3 + eors r1, r2 + strb r1, [r0] +_0803D944: + movs r0, 0x5 + bl sub_8071AB4 + movs r0, 0x3 + bl sub_8070E44 + bl sub_803B124 + ldr r1, _0803D96C @ =gUnknown_3004FE0 + ldr r0, _0803D970 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803D974 @ =sub_802F6A8 + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0803D968: .4byte gUnknown_2023E8A +_0803D96C: .4byte gUnknown_3004FE0 +_0803D970: .4byte gUnknown_2023BC4 +_0803D974: .4byte sub_802F6A8 + thumb_func_end sub_803D914 + + thumb_func_start nullsub_20 +nullsub_20: @ 803D978 + bx lr + thumb_func_end nullsub_20 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s new file mode 100644 index 000000000..04beb1afd --- /dev/null +++ b/asm/battle_controller_link_partner.s @@ -0,0 +1,5929 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_77 +nullsub_77: @ 80D4200 + bx lr + thumb_func_end nullsub_77 + + thumb_func_start sub_80D4204 +sub_80D4204: @ 80D4204 + ldr r1, _080D4214 @ =gUnknown_3004FE0 + ldr r0, _080D4218 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D421C @ =sub_80D4220 + str r1, [r0] + bx lr + .align 2, 0 +_080D4214: .4byte gUnknown_3004FE0 +_080D4218: .4byte gUnknown_2023BC4 +_080D421C: .4byte sub_80D4220 + thumb_func_end sub_80D4204 + + thumb_func_start sub_80D4220 +sub_80D4220: @ 80D4220 + push {lr} + ldr r2, _080D4254 @ =gUnknown_2023BC8 + ldr r1, _080D4258 @ =gUnknown_825E45C + ldr r0, _080D425C @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080D426C + ldr r0, _080D4260 @ =gUnknown_2022BC4 + lsls r1, r3, 9 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x38 + bhi _080D4268 + ldr r0, _080D4264 @ =gUnknown_83FB134 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _080D426C + .align 2, 0 +_080D4254: .4byte gUnknown_2023BC8 +_080D4258: .4byte gUnknown_825E45C +_080D425C: .4byte gUnknown_2023BC4 +_080D4260: .4byte gUnknown_2022BC4 +_080D4264: .4byte gUnknown_83FB134 +_080D4268: + bl sub_80D49E8 +_080D426C: + pop {r0} + bx r0 + thumb_func_end sub_80D4220 + + thumb_func_start sub_80D4270 +sub_80D4270: @ 80D4270 + push {lr} + ldr r2, _080D4298 @ =gUnknown_202063C + ldr r1, _080D429C @ =gUnknown_2023D44 + ldr r0, _080D42A0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080D42A4 @ =nullsub_8 + cmp r1, r0 + bne _080D4294 + bl sub_80D49E8 +_080D4294: + pop {r0} + bx r0 + .align 2, 0 +_080D4298: .4byte gUnknown_202063C +_080D429C: .4byte gUnknown_2023D44 +_080D42A0: .4byte gUnknown_2023BC4 +_080D42A4: .4byte nullsub_8 + thumb_func_end sub_80D4270 + + thumb_func_start sub_80D42A8 +sub_80D42A8: @ 80D42A8 + push {r4-r6,lr} + ldr r6, _080D4300 @ =gUnknown_202063C + ldr r5, _080D4304 @ =gUnknown_2023D44 + ldr r4, _080D4308 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r6, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, [r0] + ldr r0, _080D430C @ =nullsub_8 + cmp r1, r0 + bne _080D42F8 + movs r0, 0 + bl nullsub_16 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_80077D8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + bl sub_80D49E8 +_080D42F8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4300: .4byte gUnknown_202063C +_080D4304: .4byte gUnknown_2023D44 +_080D4308: .4byte gUnknown_2023BC4 +_080D430C: .4byte nullsub_8 + thumb_func_end sub_80D42A8 + + thumb_func_start sub_80D4310 +sub_80D4310: @ 80D4310 + push {r4,lr} + ldr r4, _080D4350 @ =gUnknown_2024018 + ldr r1, [r4] + ldr r3, _080D4354 @ =gUnknown_2023BC4 + ldrb r0, [r3] + ldr r2, [r1, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x9] + subs r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080D4348 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + bl sub_80D49E8 +_080D4348: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4350: .4byte gUnknown_2024018 +_080D4354: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D4310 + + thumb_func_start sub_80D4358 +sub_80D4358: @ 80D4358 + push {r4-r6,lr} + movs r6, 0 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080D437C + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080D43B0 + ldr r0, _080D439C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080D43B0 +_080D437C: + ldr r2, _080D43A0 @ =gUnknown_202063C + ldr r1, _080D43A4 @ =gUnknown_3004FF0 + ldr r0, _080D43A8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080D43AC @ =nullsub_8 + cmp r1, r0 + bne _080D43E8 + b _080D43E6 + .align 2, 0 +_080D439C: .4byte gUnknown_2022B4C +_080D43A0: .4byte gUnknown_202063C +_080D43A4: .4byte gUnknown_3004FF0 +_080D43A8: .4byte gUnknown_2023BC4 +_080D43AC: .4byte nullsub_8 +_080D43B0: + ldr r2, _080D4420 @ =gUnknown_202063C + ldr r5, _080D4424 @ =gUnknown_3004FF0 + ldr r0, _080D4428 @ =gUnknown_2023BC4 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r2, 0 + adds r4, 0x1C + adds r0, r4 + ldr r2, [r0] + ldr r0, _080D442C @ =nullsub_8 + cmp r2, r0 + bne _080D43E8 + movs r0, 0x2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + cmp r0, r2 + bne _080D43E8 +_080D43E6: + movs r6, 0x1 +_080D43E8: + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + beq _080D43F4 + movs r6, 0 +_080D43F4: + cmp r6, 0 + beq _080D441A + ldr r0, _080D4430 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r3, _080D4428 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x9] + ldr r1, _080D4434 @ =gUnknown_3004FE0 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D4438 @ =sub_80D4310 + str r1, [r0] +_080D441A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4420: .4byte gUnknown_202063C +_080D4424: .4byte gUnknown_3004FF0 +_080D4428: .4byte gUnknown_2023BC4 +_080D442C: .4byte nullsub_8 +_080D4430: .4byte gUnknown_2024018 +_080D4434: .4byte gUnknown_3004FE0 +_080D4438: .4byte sub_80D4310 + thumb_func_end sub_80D4358 + + thumb_func_start sub_80D443C +sub_80D443C: @ 80D443C + push {r4-r7,lr} + ldr r0, _080D4568 @ =gUnknown_2024018 + mov r12, r0 + ldr r0, [r0] + ldr r6, _080D456C @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r4, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r4 + ldrb r1, [r3] + movs r5, 0x8 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080D4460 + b _080D4562 +_080D4460: + movs r7, 0x2 + adds r1, r7, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + adds r0, r5, 0 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080D4562 + ldrb r0, [r3, 0x9] + adds r0, 0x1 + strb r0, [r3, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080D4562 + mov r1, r12 + ldr r0, [r1] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x9] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080D4500 + ldr r0, _080D4570 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080D4500 + ldr r1, _080D4574 @ =gUnknown_3004FFC + ldrb r0, [r6] + eors r0, r7 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080D4578 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _080D457C @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r1, r7, 0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _080D4580 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080D4584 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r6] + eors r0, r7 + bl sub_804BD94 + ldrb r0, [r6] + eors r0, r7 + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 +_080D4500: + ldr r1, _080D4574 @ =gUnknown_3004FFC + ldr r4, _080D456C @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080D4578 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r5, _080D457C @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _080D4580 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080D4584 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r4] + bl sub_804BD94 + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + ldr r0, _080D4568 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x8] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldr r1, _080D4588 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D458C @ =sub_80D4358 + str r1, [r0] +_080D4562: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D4568: .4byte gUnknown_2024018 +_080D456C: .4byte gUnknown_2023BC4 +_080D4570: .4byte gUnknown_2022B4C +_080D4574: .4byte gUnknown_3004FFC +_080D4578: .4byte gUnknown_202063C +_080D457C: .4byte gUnknown_3004FF0 +_080D4580: .4byte gUnknown_2023BCE +_080D4584: .4byte gUnknown_2024284 +_080D4588: .4byte gUnknown_3004FE0 +_080D458C: .4byte sub_80D4358 + thumb_func_end sub_80D443C + + thumb_func_start sub_80D4590 +sub_80D4590: @ 80D4590 + push {lr} + ldr r2, _080D45C4 @ =gUnknown_202063C + ldr r1, _080D45C8 @ =gUnknown_2023D44 + ldr r0, _080D45CC @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + bge _080D45BE + movs r2, 0x24 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080D45BE + bl sub_80D49E8 +_080D45BE: + pop {r0} + bx r0 + .align 2, 0 +_080D45C4: .4byte gUnknown_202063C +_080D45C8: .4byte gUnknown_2023D44 +_080D45CC: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D4590 + + thumb_func_start sub_80D45D0 +sub_80D45D0: @ 80D45D0 + push {r4-r6,lr} + ldr r5, _080D4610 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r6, _080D4614 @ =gUnknown_3004FF0 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + bl sub_80481D4 + lsls r4, 16 + asrs r1, r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080D4618 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + movs r2, 0 + bl sub_8048440 + b _080D4632 + .align 2, 0 +_080D4610: .4byte gUnknown_2023BC4 +_080D4614: .4byte gUnknown_3004FF0 +_080D4618: + ldr r2, _080D4638 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080D463C @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + bl sub_80D49E8 +_080D4632: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4638: .4byte gUnknown_2023BCE +_080D463C: .4byte gUnknown_2024284 + thumb_func_end sub_80D45D0 + + thumb_func_start sub_80D4640 +sub_80D4640: @ 80D4640 + push {r4-r6,lr} + ldr r6, _080D4698 @ =gUnknown_202063C + ldr r5, _080D469C @ =gUnknown_2023D44 + ldr r4, _080D46A0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r6 + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + cmp r0, 0xA0 + ble _080D4690 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + ldr r1, _080D46A4 @ =gUnknown_3004FF0 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_80D49E8 +_080D4690: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4698: .4byte gUnknown_202063C +_080D469C: .4byte gUnknown_2023D44 +_080D46A0: .4byte gUnknown_2023BC4 +_080D46A4: .4byte gUnknown_3004FF0 + thumb_func_end sub_80D4640 + + thumb_func_start sub_80D46A8 +sub_80D46A8: @ 80D46A8 + push {r4-r6,lr} + ldr r0, _080D4704 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _080D4708 @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080D46FC + ldr r5, _080D470C @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080D4710 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _080D4714 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_80D49E8 +_080D46FC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4704: .4byte gUnknown_2024018 +_080D4708: .4byte gUnknown_2023BC4 +_080D470C: .4byte gUnknown_2023D44 +_080D4710: .4byte gUnknown_202063C +_080D4714: .4byte gUnknown_3004FF0 + thumb_func_end sub_80D46A8 + + thumb_func_start sub_80D4718 +sub_80D4718: @ 80D4718 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080D472A + bl sub_80D49E8 +_080D472A: + pop {r0} + bx r0 + thumb_func_end sub_80D4718 + + thumb_func_start sub_80D4730 +sub_80D4730: @ 80D4730 + push {r4,lr} + ldr r1, _080D476C @ =gUnknown_2023D44 + ldr r0, _080D4770 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _080D4774 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x20 + bne _080D477C + movs r3, 0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + ldr r0, _080D4778 @ =gUnknown_2024005 + strb r3, [r0] + bl sub_80D49E8 + b _080D47A6 + .align 2, 0 +_080D476C: .4byte gUnknown_2023D44 +_080D4770: .4byte gUnknown_2023BC4 +_080D4774: .4byte gUnknown_202063C +_080D4778: .4byte gUnknown_2024005 +_080D477C: + ldrh r0, [r4, 0x30] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _080D47A0 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080D47A0: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_080D47A6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D4730 + + thumb_func_start sub_80D47AC +sub_80D47AC: @ 80D47AC + push {r4,lr} + ldr r2, _080D4800 @ =gUnknown_202063C + ldr r0, _080D4804 @ =gUnknown_3004FF0 + ldr r4, _080D4808 @ =gUnknown_2023BC4 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080D480C @ =nullsub_8 + cmp r1, r0 + bne _080D47F8 + ldr r0, _080D4810 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080D47EC + adds r0, r3, 0 + adds r1, r3, 0 + adds r2, r3, 0 + movs r3, 0x6 + bl sub_80341D8 +_080D47EC: + ldr r0, _080D4814 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _080D4818 @ =sub_80D481C + str r0, [r1] +_080D47F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4800: .4byte gUnknown_202063C +_080D4804: .4byte gUnknown_3004FF0 +_080D4808: .4byte gUnknown_2023BC4 +_080D480C: .4byte nullsub_8 +_080D4810: .4byte gUnknown_2024018 +_080D4814: .4byte gUnknown_3004FE0 +_080D4818: .4byte sub_80D481C + thumb_func_end sub_80D47AC + + thumb_func_start sub_80D481C +sub_80D481C: @ 80D481C + push {lr} + ldr r0, _080D4844 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080D4848 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080D483E + bl sub_80D49E8 +_080D483E: + pop {r0} + bx r0 + .align 2, 0 +_080D4844: .4byte gUnknown_2024018 +_080D4848: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D481C + + thumb_func_start sub_80D484C +sub_80D484C: @ 80D484C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r3, _080D4918 @ =gUnknown_2024018 + ldr r0, [r3] + ldr r7, _080D491C @ =gUnknown_2023BC4 + ldrb r1, [r7] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + ldrb r1, [r2, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D490E + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _080D4920 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, _080D4924 @ =sub_802FDF4 + movs r1, 0xA + bl sub_807741C + ldr r0, _080D4928 @ =gUnknown_2023BCE + mov r8, r0 + ldrb r1, [r7] + lsls r0, r1, 1 + add r0, r8 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080D492C @ =gUnknown_2024284 + adds r0, r5 + bl sub_8035244 + ldr r1, _080D4930 @ =gUnknown_2023D44 + ldrb r0, [r7] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080D4934 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C + ldr r4, _080D4938 @ =gUnknown_3004FF0 + ldrb r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r1, 1 + add r1, r8 + ldrh r1, [r1] + muls r1, r6 + adds r1, r5 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r7] + bl sub_804BD94 + ldrb r0, [r7] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r0, [r7] + bl sub_8034BB4 + ldr r1, _080D493C @ =gUnknown_3004FE0 + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D4940 @ =sub_80D47AC + str r1, [r0] +_080D490E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D4918: .4byte gUnknown_2024018 +_080D491C: .4byte gUnknown_2023BC4 +_080D4920: .4byte 0x000027f9 +_080D4924: .4byte sub_802FDF4 +_080D4928: .4byte gUnknown_2023BCE +_080D492C: .4byte gUnknown_2024284 +_080D4930: .4byte gUnknown_2023D44 +_080D4934: .4byte gUnknown_202063C +_080D4938: .4byte gUnknown_3004FF0 +_080D493C: .4byte gUnknown_3004FE0 +_080D4940: .4byte sub_80D47AC + thumb_func_end sub_80D484C + + thumb_func_start sub_80D4944 +sub_80D4944: @ 80D4944 + push {r4-r6,lr} + ldr r6, _080D49C4 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r4, _080D49C8 @ =gUnknown_2023BC4 + ldrb r2, [r4] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _080D4976 + ldr r0, _080D49CC @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080D49D0 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_080D4976: + ldr r5, _080D49D4 @ =gUnknown_202063C + ldr r0, _080D49D8 @ =gUnknown_3004FFC + ldrb r2, [r4] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r3, r0, 2 + adds r0, r5, 0 + adds r0, 0x1C + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _080D49DC @ =nullsub_8 + cmp r1, r0 + bne _080D49BC + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080D49BC + adds r0, r3, r5 + bl sub_8007280 + ldr r1, _080D49E0 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D49E4 @ =sub_80D484C + str r1, [r0] +_080D49BC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D49C4: .4byte gUnknown_2024018 +_080D49C8: .4byte gUnknown_2023BC4 +_080D49CC: .4byte gUnknown_2023BCE +_080D49D0: .4byte gUnknown_2024284 +_080D49D4: .4byte gUnknown_202063C +_080D49D8: .4byte gUnknown_3004FFC +_080D49DC: .4byte nullsub_8 +_080D49E0: .4byte gUnknown_3004FE0 +_080D49E4: .4byte sub_80D484C + thumb_func_end sub_80D4944 + + thumb_func_start sub_80D49E8 +sub_80D49E8: @ 80D49E8 + push {r4,lr} + sub sp, 0x4 + ldr r1, _080D4A28 @ =gUnknown_3004FE0 + ldr r4, _080D4A2C @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D4A30 @ =sub_80D4220 + str r1, [r0] + ldr r0, _080D4A34 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D4A3C + bl sub_800A404 + mov r1, sp + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + mov r2, sp + bl sub_800D9EC + ldr r1, _080D4A38 @ =gUnknown_2022BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r1 + movs r1, 0x38 + strb r1, [r0] + b _080D4A4E + .align 2, 0 +_080D4A28: .4byte gUnknown_3004FE0 +_080D4A2C: .4byte gUnknown_2023BC4 +_080D4A30: .4byte sub_80D4220 +_080D4A34: .4byte gUnknown_2022B4C +_080D4A38: .4byte gUnknown_2022BC4 +_080D4A3C: + ldr r2, _080D4A58 @ =gUnknown_2023BC8 + ldr r1, _080D4A5C @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_080D4A4E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4A58: .4byte gUnknown_2023BC8 +_080D4A5C: .4byte gUnknown_825E45C + thumb_func_end sub_80D49E8 + + thumb_func_start sub_80D4A60 +sub_80D4A60: @ 80D4A60 + push {lr} + ldr r0, _080D4A88 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080D4A8C @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080D4A82 + bl sub_80D49E8 +_080D4A82: + pop {r0} + bx r0 + .align 2, 0 +_080D4A88: .4byte gUnknown_2024018 +_080D4A8C: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D4A60 + + thumb_func_start sub_80D4A90 +sub_80D4A90: @ 80D4A90 + push {lr} + ldr r0, _080D4AB8 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080D4ABC @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080D4AB2 + bl sub_80D49E8 +_080D4AB2: + pop {r0} + bx r0 + .align 2, 0 +_080D4AB8: .4byte gUnknown_2024018 +_080D4ABC: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D4A90 + + thumb_func_start sub_80D4AC0 +sub_80D4AC0: @ 80D4AC0 + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _080D4AEC @ =gUnknown_2022BC4 + ldr r0, _080D4AF0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080D4AF8 + ldr r0, _080D4AF4 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_80D4B34 + adds r6, r0, 0 + b _080D4B1A + .align 2, 0 +_080D4AEC: .4byte gUnknown_2022BC4 +_080D4AF0: .4byte gUnknown_2023BC4 +_080D4AF4: .4byte gUnknown_2023BCE +_080D4AF8: + ldrb r4, [r1] + movs r5, 0 +_080D4AFC: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080D4B12 + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl sub_80D4B34 + adds r6, r0 +_080D4B12: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _080D4AFC +_080D4B1A: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl sub_800E708 + bl sub_80D49E8 + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D4AC0 + + thumb_func_start sub_80D4B34 +sub_80D4B34: @ 80D4B34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x90 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _080D4B68 @ =gUnknown_2022BC4 + ldr r3, _080D4B6C @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _080D4B5E + bl _080D52CA +_080D4B5E: + lsls r0, 2 + ldr r1, _080D4B70 @ =_080D4B74 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D4B68: .4byte gUnknown_2022BC4 +_080D4B6C: .4byte gUnknown_2023BC4 +_080D4B70: .4byte _080D4B74 + .align 2, 0 +_080D4B74: + .4byte _080D4C64 + .4byte _080D4E88 + .4byte _080D4E98 + .4byte _080D4EA8 + .4byte _080D4F10 + .4byte _080D4F10 + .4byte _080D4F10 + .4byte _080D4F10 + .4byte _080D4F2C + .4byte _080D4F68 + .4byte _080D4F68 + .4byte _080D4F68 + .4byte _080D4F68 + .4byte _080D52CA + .4byte _080D52CA + .4byte _080D52CA + .4byte _080D52CA + .4byte _080D4F84 + .4byte _080D4F94 + .4byte _080D4FC4 + .4byte _080D4FD4 + .4byte _080D4FE4 + .4byte _080D4FF4 + .4byte _080D5004 + .4byte _080D5014 + .4byte _080D5024 + .4byte _080D5034 + .4byte _080D5044 + .4byte _080D5054 + .4byte _080D5064 + .4byte _080D5074 + .4byte _080D5084 + .4byte _080D50D4 + .4byte _080D50E4 + .4byte _080D50F4 + .4byte _080D5104 + .4byte _080D5114 + .4byte _080D5124 + .4byte _080D5134 + .4byte _080D5144 + .4byte _080D5154 + .4byte _080D5188 + .4byte _080D5198 + .4byte _080D51A8 + .4byte _080D51B8 + .4byte _080D51C8 + .4byte _080D51D8 + .4byte _080D51E8 + .4byte _080D51F8 + .4byte _080D5218 + .4byte _080D5228 + .4byte _080D5238 + .4byte _080D5248 + .4byte _080D5258 + .4byte _080D5268 + .4byte _080D5278 + .4byte _080D5288 + .4byte _080D5298 + .4byte _080D52A8 + .4byte _080D52B8 +_080D4C64: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D4E78 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2E] + movs r6, 0 + add r0, sp, 0x24 + mov r9, r0 + movs r1, 0x3B + add r1, sp + mov r10, r1 + mov r2, sp + adds r2, 0x2B + str r2, [sp, 0x80] + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x8C] + adds r2, 0x5 + str r2, [sp, 0x84] + adds r0, 0x12 + str r0, [sp, 0x88] + mov r8, r4 + add r4, sp, 0xC +_080D4CB0: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + bl sub_803FBE8 + strh r0, [r4] + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + bl sub_803FBE8 + mov r2, r9 + adds r1, r2, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _080D4CB0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D4E78 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r10 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + ldr r2, [sp, 0x80] + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x44] + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + mov r3, sp + movs r5, 0x1F + ands r0, r5 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r3, sp + movs r6, 0x1F + ands r0, r6 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _080D4E7C @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _080D4E80 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + mov r3, sp + ands r0, r6 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _080D4E84 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x48] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + str r0, [sp, 0x4C] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x54] + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, [sp, 0x8C] + bl sub_803FBE8 + ldr r0, [sp, 0x84] + ldr r1, [sp, 0x8C] + bl sub_8008CF4 + adds r0, r4, 0 + movs r1, 0x7 + ldr r2, [sp, 0x88] + bl sub_803FBE8 + mov r2, sp + movs r6, 0 +_080D4E68: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0x57 + bls _080D4E68 + b _080D52CA + .align 2, 0 +_080D4E78: .4byte gUnknown_2024284 +_080D4E7C: .4byte 0xfffffc1f +_080D4E80: .4byte 0xfff07fff +_080D4E84: .4byte 0xfffffe0f +_080D4E88: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4E94 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + b _080D5202 + .align 2, 0 +_080D4E94: .4byte gUnknown_2024284 +_080D4E98: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4EA4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + b _080D5202 + .align 2, 0 +_080D4EA4: .4byte gUnknown_2024284 +_080D4EA8: + movs r6, 0 + add r2, sp, 0x58 + mov r9, r2 + add r0, sp, 0x60 + mov r10, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080D4F0C @ =gUnknown_2024284 + adds r4, r1, r0 + mov r8, r9 +_080D4EBE: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r4, 0 + bl sub_803FBE8 + mov r2, r10 + adds r1, r2, r6 + strb r0, [r1] + movs r0, 0x2 + add r8, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _080D4EBE + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4F0C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1, 0xC] + mov r2, r9 + movs r6, 0 +_080D4EFC: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0xF + bls _080D4EFC + b _080D52CA + .align 2, 0 +_080D4F0C: .4byte gUnknown_2024284 +_080D4F10: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4F28 @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x9 + b _080D5202 + .align 2, 0 +_080D4F28: .4byte gUnknown_2024284 +_080D4F2C: + movs r6, 0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r2, _080D4F64 @ =gUnknown_2024284 + mov r8, r2 +_080D4F38: + adds r1, r6, 0 + adds r1, 0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x3 + ble _080D4F38 + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4F64 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + b _080D52CA + .align 2, 0 +_080D4F64: .4byte gUnknown_2024284 +_080D4F68: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4F80 @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x8 + b _080D52C2 + .align 2, 0 +_080D4F80: .4byte gUnknown_2024284 +_080D4F84: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4F90 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1 + b _080D4F9E + .align 2, 0 +_080D4F90: .4byte gUnknown_2024284 +_080D4F94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4FC0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x19 +_080D4F9E: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r6, 0x3 + b _080D52CA + .align 2, 0 +_080D4FC0: .4byte gUnknown_2024284 +_080D4FC4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4FD0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1A + b _080D52C2 + .align 2, 0 +_080D4FD0: .4byte gUnknown_2024284 +_080D4FD4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4FE0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1B + b _080D52C2 + .align 2, 0 +_080D4FE0: .4byte gUnknown_2024284 +_080D4FE4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D4FF0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1C + b _080D52C2 + .align 2, 0 +_080D4FF0: .4byte gUnknown_2024284 +_080D4FF4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5000 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1D + b _080D52C2 + .align 2, 0 +_080D5000: .4byte gUnknown_2024284 +_080D5004: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5010 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1E + b _080D52C2 + .align 2, 0 +_080D5010: .4byte gUnknown_2024284 +_080D5014: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5020 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1F + b _080D52C2 + .align 2, 0 +_080D5020: .4byte gUnknown_2024284 +_080D5024: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5030 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x20 + b _080D52C2 + .align 2, 0 +_080D5030: .4byte gUnknown_2024284 +_080D5034: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5040 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x22 + b _080D52C2 + .align 2, 0 +_080D5040: .4byte gUnknown_2024284 +_080D5044: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5050 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x23 + b _080D52C2 + .align 2, 0 +_080D5050: .4byte gUnknown_2024284 +_080D5054: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5060 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x24 + b _080D52C2 + .align 2, 0 +_080D5060: .4byte gUnknown_2024284 +_080D5064: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5070 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x25 + b _080D52C2 + .align 2, 0 +_080D5070: .4byte gUnknown_2024284 +_080D5074: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5080 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x26 + b _080D52C2 + .align 2, 0 +_080D5080: .4byte gUnknown_2024284 +_080D5084: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D50D0 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + strb r0, [r7, 0x1] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + strb r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + strb r0, [r7, 0x3] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + strb r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + strb r0, [r7, 0x5] + movs r6, 0x6 + b _080D52CA + .align 2, 0 +_080D50D0: .4byte gUnknown_2024284 +_080D50D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D50E0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x27 + b _080D52C2 + .align 2, 0 +_080D50E0: .4byte gUnknown_2024284 +_080D50E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D50F0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x28 + b _080D52C2 + .align 2, 0 +_080D50F0: .4byte gUnknown_2024284 +_080D50F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5100 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x29 + b _080D52C2 + .align 2, 0 +_080D5100: .4byte gUnknown_2024284 +_080D5104: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5110 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2A + b _080D52C2 + .align 2, 0 +_080D5110: .4byte gUnknown_2024284 +_080D5114: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5120 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2B + b _080D52C2 + .align 2, 0 +_080D5120: .4byte gUnknown_2024284 +_080D5124: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5130 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2C + b _080D52C2 + .align 2, 0 +_080D5130: .4byte gUnknown_2024284 +_080D5134: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5140 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + b _080D515E + .align 2, 0 +_080D5140: .4byte gUnknown_2024284 +_080D5144: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5150 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x9 + b _080D5202 + .align 2, 0 +_080D5150: .4byte gUnknown_2024284 +_080D5154: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5184 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x37 +_080D515E: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r6, 0x4 + b _080D52CA + .align 2, 0 +_080D5184: .4byte gUnknown_2024284 +_080D5188: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5194 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + b _080D52C2 + .align 2, 0 +_080D5194: .4byte gUnknown_2024284 +_080D5198: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D51A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + b _080D5202 + .align 2, 0 +_080D51A4: .4byte gUnknown_2024284 +_080D51A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D51B4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + b _080D5202 + .align 2, 0 +_080D51B4: .4byte gUnknown_2024284 +_080D51B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D51C4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3B + b _080D5202 + .align 2, 0 +_080D51C4: .4byte gUnknown_2024284 +_080D51C8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D51D4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3C + b _080D5202 + .align 2, 0 +_080D51D4: .4byte gUnknown_2024284 +_080D51D8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D51E4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3D + b _080D5202 + .align 2, 0 +_080D51E4: .4byte gUnknown_2024284 +_080D51E8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D51F4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3E + b _080D5202 + .align 2, 0 +_080D51F4: .4byte gUnknown_2024284 +_080D51F8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5214 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3F +_080D5202: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r6, 0x2 + b _080D52CA + .align 2, 0 +_080D5214: .4byte gUnknown_2024284 +_080D5218: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5224 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x16 + b _080D52C2 + .align 2, 0 +_080D5224: .4byte gUnknown_2024284 +_080D5228: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5234 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x17 + b _080D52C2 + .align 2, 0 +_080D5234: .4byte gUnknown_2024284 +_080D5238: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5244 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x18 + b _080D52C2 + .align 2, 0 +_080D5244: .4byte gUnknown_2024284 +_080D5248: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5254 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x21 + b _080D52C2 + .align 2, 0 +_080D5254: .4byte gUnknown_2024284 +_080D5258: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5264 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2F + b _080D52C2 + .align 2, 0 +_080D5264: .4byte gUnknown_2024284 +_080D5268: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5274 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x30 + b _080D52C2 + .align 2, 0 +_080D5274: .4byte gUnknown_2024284 +_080D5278: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5284 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x32 + b _080D52C2 + .align 2, 0 +_080D5284: .4byte gUnknown_2024284 +_080D5288: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5294 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x33 + b _080D52C2 + .align 2, 0 +_080D5294: .4byte gUnknown_2024284 +_080D5298: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D52A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x34 + b _080D52C2 + .align 2, 0 +_080D52A4: .4byte gUnknown_2024284 +_080D52A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D52B4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x35 + b _080D52C2 + .align 2, 0 +_080D52B4: .4byte gUnknown_2024284 +_080D52B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D52DC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x36 +_080D52C2: + bl sub_803FBE8 + strb r0, [r7] + movs r6, 0x1 +_080D52CA: + adds r0, r6, 0 + add sp, 0x90 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D52DC: .4byte gUnknown_2024284 + thumb_func_end sub_80D4B34 + + thumb_func_start sub_80D52E0 +sub_80D52E0: @ 80D52E0 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D52E0 + + thumb_func_start sub_80D52EC +sub_80D52EC: @ 80D52EC + push {r4,r5,lr} + ldr r1, _080D5310 @ =gUnknown_2022BC4 + ldr r0, _080D5314 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080D531C + ldr r0, _080D5318 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_80D5344 + b _080D533A + .align 2, 0 +_080D5310: .4byte gUnknown_2022BC4 +_080D5314: .4byte gUnknown_2023BC4 +_080D5318: .4byte gUnknown_2023BCE +_080D531C: + ldrb r4, [r1] + movs r5, 0 +_080D5320: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080D532E + adds r0, r5, 0 + bl sub_80D5344 +_080D532E: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080D5320 +_080D533A: + bl sub_80D49E8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D52EC + + thumb_func_start sub_80D5344 +sub_80D5344: @ 80D5344 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080D537C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + ldr r2, _080D5380 @ =gUnknown_2022BC7 + adds r3, r0, r2 + adds r6, r3, 0 + subs r1, r2, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r7, r2, 0 + cmp r0, 0x3B + bls _080D5370 + bl _080D5D0A +_080D5370: + lsls r0, 2 + ldr r1, _080D5384 @ =_080D5388 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D537C: .4byte gUnknown_2023BC4 +_080D5380: .4byte gUnknown_2022BC7 +_080D5384: .4byte _080D5388 + .align 2, 0 +_080D5388: + .4byte _080D5478 + .4byte _080D5610 + .4byte _080D5630 + .4byte _080D5650 + .4byte _080D56A8 + .4byte _080D56A8 + .4byte _080D56A8 + .4byte _080D56A8 + .4byte _080D56D0 + .4byte _080D5734 + .4byte _080D5734 + .4byte _080D5734 + .4byte _080D5734 + .4byte _080D5D0A + .4byte _080D5D0A + .4byte _080D5D0A + .4byte _080D5D0A + .4byte _080D5764 + .4byte _080D5784 + .4byte _080D57A4 + .4byte _080D57C4 + .4byte _080D57E4 + .4byte _080D5804 + .4byte _080D5824 + .4byte _080D5844 + .4byte _080D5864 + .4byte _080D5884 + .4byte _080D58A4 + .4byte _080D58C4 + .4byte _080D58E4 + .4byte _080D5904 + .4byte _080D5924 + .4byte _080D5994 + .4byte _080D59B4 + .4byte _080D59D4 + .4byte _080D59F4 + .4byte _080D5A14 + .4byte _080D5A34 + .4byte _080D5A54 + .4byte _080D5A74 + .4byte _080D5A94 + .4byte _080D5AB4 + .4byte _080D5AD4 + .4byte _080D5AF4 + .4byte _080D5B14 + .4byte _080D5B34 + .4byte _080D5B54 + .4byte _080D5B74 + .4byte _080D5B94 + .4byte _080D5BB4 + .4byte _080D5BD4 + .4byte _080D5BF4 + .4byte _080D5C14 + .4byte _080D5C34 + .4byte _080D5C54 + .4byte _080D5C74 + .4byte _080D5C94 + .4byte _080D5CB4 + .4byte _080D5CD4 + .4byte _080D5CF4 +_080D5478: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D560C @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + adds r2, r6, 0 + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x2E + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + movs r0, 0 + mov r8, r0 + movs r0, 0x3B + adds r0, r6 + mov r10, r0 + adds r0, r6, 0 + adds r0, 0x2B + str r0, [sp, 0x20] + adds r0, 0x19 + str r0, [sp, 0x28] + adds r0, 0x4 + str r0, [sp, 0x2C] + adds r0, 0x4 + str r0, [sp, 0x30] + subs r0, 0x22 + str r0, [sp, 0x1C] + subs r0, 0x2 + str r0, [sp, 0x18] + adds r0, 0x4 + str r0, [sp, 0x24] + adds r0, r6, 0x2 + str r0, [sp, 0x4] + adds r0, r6, 0x4 + str r0, [sp, 0x8] + adds r0, r6, 0x6 + str r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x14] + mov r9, r4 + adds r7, r6, 0 + adds r7, 0x24 + adds r4, r6, 0 + adds r4, 0xC +_080D54DE: + mov r1, r8 + adds r1, 0xD + mov r0, r9 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + mov r0, r9 + adds r2, r7, 0 + bl sub_804037C + adds r7, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _080D54DE + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D560C @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + mov r2, r10 + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x20 + ldr r2, [sp, 0x20] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x19 + ldr r2, [sp, 0x28] + bl sub_804037C + ldrb r0, [r6, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r6, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x28 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r6, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x29 + mov r2, sp + bl sub_804037C + mov r1, sp + ldr r0, [r6, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2A + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r6, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2B + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r6, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0 + ldr r2, [sp, 0x2C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x37 + ldr r2, [sp, 0x30] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x38 + ldr r2, [sp, 0x1C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + ldr r2, [sp, 0x18] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + ldr r2, [sp, 0x24] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3B + ldr r2, [sp, 0x4] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + ldr r2, [sp, 0x8] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + ldr r2, [sp, 0xC] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + ldr r2, [sp, 0x10] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + ldr r2, [sp, 0x14] + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D560C: .4byte gUnknown_2024284 +_080D5610: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5628 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D562C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0xB + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5628: .4byte gUnknown_2024284 +_080D562C: .4byte gUnknown_2023BC4 +_080D5630: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5648 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D564C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0xC + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5648: .4byte gUnknown_2024284 +_080D564C: .4byte gUnknown_2023BC4 +_080D5650: + movs r0, 0 + mov r8, r0 + movs r0, 0xC + adds r0, r3 + mov r9, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080D56A4 @ =gUnknown_2024284 + adds r7, r1, r0 + adds r6, r3, 0 + adds r6, 0x8 + adds r4, r3, 0 +_080D566A: + mov r1, r8 + adds r1, 0xD + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + adds r0, r7, 0 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _080D566A + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D56A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D56A4: .4byte gUnknown_2024284 +_080D56A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D56C4 @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _080D56C8 @ =gUnknown_2022BC4 + ldr r1, _080D56CC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x9 + b _080D574C + .align 2, 0 +_080D56C4: .4byte gUnknown_2024284 +_080D56C8: .4byte gUnknown_2022BC4 +_080D56CC: .4byte gUnknown_2023BC4 +_080D56D0: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D572C @ =gUnknown_2024284 + adds r4, r0 + ldr r5, _080D5730 @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + adds r2, r7 + adds r0, r4, 0 + movs r1, 0x11 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x12 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x13 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x14 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D572C: .4byte gUnknown_2024284 +_080D5730: .4byte gUnknown_2023BC4 +_080D5734: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5758 @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _080D575C @ =gUnknown_2022BC4 + ldr r1, _080D5760 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x8 +_080D574C: + adds r3, 0x3 + adds r2, r3 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5758: .4byte gUnknown_2024284 +_080D575C: .4byte gUnknown_2022BC4 +_080D5760: .4byte gUnknown_2023BC4 +_080D5764: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D577C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5780 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D577C: .4byte gUnknown_2024284 +_080D5780: .4byte gUnknown_2023BC4 +_080D5784: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D579C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D57A0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x19 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D579C: .4byte gUnknown_2024284 +_080D57A0: .4byte gUnknown_2023BC4 +_080D57A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D57BC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D57C0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1A + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D57BC: .4byte gUnknown_2024284 +_080D57C0: .4byte gUnknown_2023BC4 +_080D57C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D57DC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D57E0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1B + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D57DC: .4byte gUnknown_2024284 +_080D57E0: .4byte gUnknown_2023BC4 +_080D57E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D57FC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5800 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1C + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D57FC: .4byte gUnknown_2024284 +_080D5800: .4byte gUnknown_2023BC4 +_080D5804: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D581C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5820 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1D + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D581C: .4byte gUnknown_2024284 +_080D5820: .4byte gUnknown_2023BC4 +_080D5824: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D583C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5840 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1E + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D583C: .4byte gUnknown_2024284 +_080D5840: .4byte gUnknown_2023BC4 +_080D5844: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D585C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5860 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1F + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D585C: .4byte gUnknown_2024284 +_080D5860: .4byte gUnknown_2023BC4 +_080D5864: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D587C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5880 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x20 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D587C: .4byte gUnknown_2024284 +_080D5880: .4byte gUnknown_2023BC4 +_080D5884: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D589C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D58A0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x22 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D589C: .4byte gUnknown_2024284 +_080D58A0: .4byte gUnknown_2023BC4 +_080D58A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D58BC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D58C0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x23 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D58BC: .4byte gUnknown_2024284 +_080D58C0: .4byte gUnknown_2023BC4 +_080D58C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D58DC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D58E0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x24 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D58DC: .4byte gUnknown_2024284 +_080D58E0: .4byte gUnknown_2023BC4 +_080D58E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D58FC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5900 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x25 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D58FC: .4byte gUnknown_2024284 +_080D5900: .4byte gUnknown_2023BC4 +_080D5904: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D591C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5920 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x26 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D591C: .4byte gUnknown_2024284 +_080D5920: .4byte gUnknown_2023BC4 +_080D5924: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080D598C @ =gUnknown_2024284 + adds r4, r0 + ldr r5, _080D5990 @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + adds r2, r7 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x28 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x29 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2A + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2B + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x5 + adds r2, r0 + adds r0, r4, 0 + b _080D5A44 + .align 2, 0 +_080D598C: .4byte gUnknown_2024284 +_080D5990: .4byte gUnknown_2023BC4 +_080D5994: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D59AC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D59B0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x27 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D59AC: .4byte gUnknown_2024284 +_080D59B0: .4byte gUnknown_2023BC4 +_080D59B4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D59CC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D59D0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x28 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D59CC: .4byte gUnknown_2024284 +_080D59D0: .4byte gUnknown_2023BC4 +_080D59D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D59EC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D59F0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x29 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D59EC: .4byte gUnknown_2024284 +_080D59F0: .4byte gUnknown_2023BC4 +_080D59F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5A0C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5A10 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2A + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5A0C: .4byte gUnknown_2024284 +_080D5A10: .4byte gUnknown_2023BC4 +_080D5A14: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5A2C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5A30 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2B + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5A2C: .4byte gUnknown_2024284 +_080D5A30: .4byte gUnknown_2023BC4 +_080D5A34: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5A4C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5A50 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 +_080D5A44: + movs r1, 0x2C + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5A4C: .4byte gUnknown_2024284 +_080D5A50: .4byte gUnknown_2023BC4 +_080D5A54: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5A6C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5A70 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5A6C: .4byte gUnknown_2024284 +_080D5A70: .4byte gUnknown_2023BC4 +_080D5A74: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5A8C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5A90 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x9 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5A8C: .4byte gUnknown_2024284 +_080D5A90: .4byte gUnknown_2023BC4 +_080D5A94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5AAC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5AB0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x37 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5AAC: .4byte gUnknown_2024284 +_080D5AB0: .4byte gUnknown_2023BC4 +_080D5AB4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5ACC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5AD0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x38 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5ACC: .4byte gUnknown_2024284 +_080D5AD0: .4byte gUnknown_2023BC4 +_080D5AD4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5AEC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5AF0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x39 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5AEC: .4byte gUnknown_2024284 +_080D5AF0: .4byte gUnknown_2023BC4 +_080D5AF4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5B0C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5B10 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3A + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5B0C: .4byte gUnknown_2024284 +_080D5B10: .4byte gUnknown_2023BC4 +_080D5B14: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5B2C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5B30 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3B + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5B2C: .4byte gUnknown_2024284 +_080D5B30: .4byte gUnknown_2023BC4 +_080D5B34: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5B4C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5B50 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3C + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5B4C: .4byte gUnknown_2024284 +_080D5B50: .4byte gUnknown_2023BC4 +_080D5B54: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5B6C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5B70 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3D + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5B6C: .4byte gUnknown_2024284 +_080D5B70: .4byte gUnknown_2023BC4 +_080D5B74: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5B8C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5B90 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3E + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5B8C: .4byte gUnknown_2024284 +_080D5B90: .4byte gUnknown_2023BC4 +_080D5B94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5BAC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5BB0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3F + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5BAC: .4byte gUnknown_2024284 +_080D5BB0: .4byte gUnknown_2023BC4 +_080D5BB4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5BCC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5BD0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x16 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5BCC: .4byte gUnknown_2024284 +_080D5BD0: .4byte gUnknown_2023BC4 +_080D5BD4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5BEC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5BF0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x17 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5BEC: .4byte gUnknown_2024284 +_080D5BF0: .4byte gUnknown_2023BC4 +_080D5BF4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5C0C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5C10 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x18 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5C0C: .4byte gUnknown_2024284 +_080D5C10: .4byte gUnknown_2023BC4 +_080D5C14: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5C2C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5C30 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x21 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5C2C: .4byte gUnknown_2024284 +_080D5C30: .4byte gUnknown_2023BC4 +_080D5C34: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5C4C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5C50 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2F + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5C4C: .4byte gUnknown_2024284 +_080D5C50: .4byte gUnknown_2023BC4 +_080D5C54: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5C6C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5C70 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x30 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5C6C: .4byte gUnknown_2024284 +_080D5C70: .4byte gUnknown_2023BC4 +_080D5C74: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5C8C @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5C90 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x32 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5C8C: .4byte gUnknown_2024284 +_080D5C90: .4byte gUnknown_2023BC4 +_080D5C94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5CAC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5CB0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x33 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5CAC: .4byte gUnknown_2024284 +_080D5CB0: .4byte gUnknown_2023BC4 +_080D5CB4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5CCC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5CD0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x34 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5CCC: .4byte gUnknown_2024284 +_080D5CD0: .4byte gUnknown_2023BC4 +_080D5CD4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5CEC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5CF0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x35 + bl sub_804037C + b _080D5D0A + .align 2, 0 +_080D5CEC: .4byte gUnknown_2024284 +_080D5CF0: .4byte gUnknown_2023BC4 +_080D5CF4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080D5D34 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D5D38 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x36 + bl sub_804037C +_080D5D0A: + ldr r2, _080D5D3C @ =gUnknown_2023BCE + ldr r0, _080D5D38 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080D5D34 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5D34: .4byte gUnknown_2024284 +_080D5D38: .4byte gUnknown_2023BC4 +_080D5D3C: .4byte gUnknown_2023BCE + thumb_func_end sub_80D5344 + + thumb_func_start sub_80D5D40 +sub_80D5D40: @ 80D5D40 + push {r4-r7,lr} + ldr r1, _080D5DA4 @ =gUnknown_2023BCE + ldr r7, _080D5DA8 @ =gUnknown_2023BC4 + ldrb r2, [r7] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + adds r3, r1, 0 + muls r3, r0 + ldr r4, _080D5DAC @ =gUnknown_2022BC4 + lsls r2, 9 + adds r0, r4, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _080D5DB0 @ =gUnknown_2024284 + adds r0, r1 + adds r5, r3, r0 + movs r3, 0 + adds r0, r4, 0x2 + adds r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bcs _080D5D98 + adds r6, r4, 0 + adds r2, r7, 0 + adds r4, r0, 0 +_080D5D76: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, 9 + adds r0, 0x3 + adds r0, r3, r0 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r2] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r3, r0 + bcc _080D5D76 +_080D5D98: + bl sub_80D49E8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5DA4: .4byte gUnknown_2023BCE +_080D5DA8: .4byte gUnknown_2023BC4 +_080D5DAC: .4byte gUnknown_2022BC4 +_080D5DB0: .4byte gUnknown_2024284 + thumb_func_end sub_80D5D40 + + thumb_func_start sub_80D5DB4 +sub_80D5DB4: @ 80D5DB4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _080D5EA8 @ =gUnknown_2023BCE + mov r8, r0 + ldr r6, _080D5EAC @ =gUnknown_2023BC4 + ldrb r1, [r6] + lsls r0, r1, 1 + add r0, r8 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _080D5EB0 @ =gUnknown_2024284 + adds r0, r4 + bl sub_8034498 + ldrb r0, [r6] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F7D4 + ldr r0, _080D5EB4 @ =gUnknown_20244DC + mov r8, r0 + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r6] + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _080D5EB8 @ =gUnknown_2023D44 + ldrb r1, [r6] + adds r1, r4 + strb r0, [r1] + ldr r5, _080D5EBC @ =gUnknown_202063C + ldrb r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080D5EC0 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x2E] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080D5EC4 @ =gUnknown_2024024 + adds r2, r1 + ldrb r1, [r2] + bl sub_800838C + ldr r1, _080D5EC8 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D5ECC @ =sub_80D4590 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D5EA8: .4byte gUnknown_2023BCE +_080D5EAC: .4byte gUnknown_2023BC4 +_080D5EB0: .4byte gUnknown_2024284 +_080D5EB4: .4byte gUnknown_20244DC +_080D5EB8: .4byte gUnknown_2023D44 +_080D5EBC: .4byte gUnknown_202063C +_080D5EC0: .4byte 0x0000ff10 +_080D5EC4: .4byte gUnknown_2024024 +_080D5EC8: .4byte gUnknown_3004FE0 +_080D5ECC: .4byte sub_80D4590 + thumb_func_end sub_80D5DB4 + + thumb_func_start sub_80D5ED0 +sub_80D5ED0: @ 80D5ED0 + push {r4-r6,lr} + ldr r5, _080D5F28 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r4, _080D5F2C @ =gUnknown_2022BC4 + lsls r1, r0, 9 + adds r6, r4, 0x2 + adds r1, r6 + ldrb r1, [r1] + bl sub_803589C + ldr r2, _080D5F30 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r2 + lsls r0, 9 + adds r4, 0x1 + adds r0, r4 + ldrb r0, [r0] + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080D5F34 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8034498 + ldrb r0, [r5] + lsls r1, r0, 9 + adds r1, r6 + ldrb r1, [r1] + bl sub_80D5F40 + ldr r1, _080D5F38 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D5F3C @ =sub_80D4944 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D5F28: .4byte gUnknown_2023BC4 +_080D5F2C: .4byte gUnknown_2022BC4 +_080D5F30: .4byte gUnknown_2023BCE +_080D5F34: .4byte gUnknown_2024284 +_080D5F38: .4byte gUnknown_3004FE0 +_080D5F3C: .4byte sub_80D4944 + thumb_func_end sub_80D5ED0 + + thumb_func_start sub_80D5F40 +sub_80D5F40: @ 80D5F40 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_803589C + ldr r0, _080D6084 @ =gUnknown_2023BCE + lsls r2, r6, 1 + adds r2, r0 + ldr r0, _080D6088 @ =gUnknown_2022BC4 + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D608C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080D6090 @ =sub_8033E3C + bl sub_8044EF8 + ldr r1, _080D6094 @ =gUnknown_3004FFC + mov r9, r1 + add r9, r6 + mov r1, r9 + strb r0, [r1] + adds r0, r6, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _080D6098 @ =gUnknown_20244DC + mov r10, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r10 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _080D609C @ =gUnknown_2023D44 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _080D60A0 @ =gUnknown_202063C + mov r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080D60A4 @ =gUnknown_2024024 + adds r6, r1 + ldrb r1, [r6] + bl sub_800838C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080D60A8 @ =nullsub_8 + str r1, [r0] + movs r0, 0 + movs r1, 0xFF + bl sub_804A938 + mov r1, r9 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6084: .4byte gUnknown_2023BCE +_080D6088: .4byte gUnknown_2022BC4 +_080D608C: .4byte gUnknown_2024284 +_080D6090: .4byte sub_8033E3C +_080D6094: .4byte gUnknown_3004FFC +_080D6098: .4byte gUnknown_20244DC +_080D609C: .4byte gUnknown_2023D44 +_080D60A0: .4byte gUnknown_202063C +_080D60A4: .4byte gUnknown_2024024 +_080D60A8: .4byte nullsub_8 + thumb_func_end sub_80D5F40 + + thumb_func_start sub_80D60AC +sub_80D60AC: @ 80D60AC + push {r4-r6,lr} + ldr r1, _080D60E0 @ =gUnknown_2022BC4 + ldr r6, _080D60E4 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _080D60F4 + ldr r0, _080D60E8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strb r3, [r0, 0x4] + ldr r1, _080D60EC @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D60F0 @ =sub_80D613C + str r1, [r0] + b _080D612A + .align 2, 0 +_080D60E0: .4byte gUnknown_2022BC4 +_080D60E4: .4byte gUnknown_2023BC4 +_080D60E8: .4byte gUnknown_2024018 +_080D60EC: .4byte gUnknown_3004FE0 +_080D60F0: .4byte sub_80D613C +_080D60F4: + ldr r5, _080D6130 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080D6134 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _080D6138 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_80D49E8 +_080D612A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6130: .4byte gUnknown_2023D44 +_080D6134: .4byte gUnknown_202063C +_080D6138: .4byte gUnknown_3004FF0 + thumb_func_end sub_80D60AC + + thumb_func_start sub_80D613C +sub_80D613C: @ 80D613C + push {r4-r6,lr} + ldr r6, _080D615C @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _080D6160 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r4, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x4] + cmp r0, 0 + beq _080D6164 + cmp r0, 0x1 + beq _080D6192 + b _080D61BA + .align 2, 0 +_080D615C: .4byte gUnknown_2024018 +_080D6160: .4byte gUnknown_2023BC4 +_080D6164: + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080D617E + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_080D617E: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _080D61BA +_080D6192: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080D61BA + strb r0, [r3, 0x4] + ldrb r2, [r5] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x1 + bl sub_80341D8 + ldr r1, _080D61C0 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D61C4 @ =sub_80D46A8 + str r1, [r0] +_080D61BA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D61C0: .4byte gUnknown_3004FE0 +_080D61C4: .4byte sub_80D46A8 + thumb_func_end sub_80D613C + + thumb_func_start sub_80D61C8 +sub_80D61C8: @ 80D61C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r6, _080D6240 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80751D8 + movs r1, 0x2 + ands r1, r0 + movs r7, 0x20 + cmp r1, 0 + beq _080D61E2 + movs r7, 0x5A +_080D61E2: + ldrb r0, [r6] + bl sub_8043658 + ldr r5, _080D6244 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + movs r4, 0xFF + ldrb r0, [r1] + cmp r0, 0x2 + beq _080D6228 + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r1, [r1] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x1 + beq _080D6228 + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r0, [r1] + ands r4, r0 + cmp r4, 0x3 + bne _080D6248 +_080D6228: + ldr r0, _080D6240 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8043658 + ldr r2, _080D6244 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x13] + adds r4, r0, 0x2 + b _080D6258 + .align 2, 0 +_080D6240: .4byte gUnknown_2023BC4 +_080D6244: .4byte gUnknown_202273C +_080D6248: + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r4, [r1, 0x13] +_080D6258: + ldr r5, _080D6318 @ =gUnknown_2023BC4 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_8034750 + ldrb r0, [r5] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F864 + ldr r6, _080D631C @ =gUnknown_20244DC + mov r8, r7 + ldr r0, _080D6320 @ =gUnknown_8239F8C + lsls r4, 2 + adds r4, r0 + ldrb r0, [r4] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 15 + adds r4, r0 + asrs r4, 16 + ldrb r0, [r5] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + mov r1, r8 + adds r2, r4, 0 + bl sub_8006F8C + ldr r6, _080D6324 @ =gUnknown_2023D44 + ldrb r1, [r5] + adds r1, r6 + strb r0, [r1] + ldr r4, _080D6328 @ =gUnknown_202063C + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xF0 + strh r1, [r0, 0x24] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080D632C @ =0x0000fffe + strh r1, [r0, 0x2E] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080D6330 @ =sub_8033EEC + str r1, [r0] + ldr r1, _080D6334 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6338 @ =sub_80D4270 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6318: .4byte gUnknown_2023BC4 +_080D631C: .4byte gUnknown_20244DC +_080D6320: .4byte gUnknown_8239F8C +_080D6324: .4byte gUnknown_2023D44 +_080D6328: .4byte gUnknown_202063C +_080D632C: .4byte 0x0000fffe +_080D6330: .4byte sub_8033EEC +_080D6334: .4byte gUnknown_3004FE0 +_080D6338: .4byte sub_80D4270 + thumb_func_end sub_80D61C8 + + thumb_func_start sub_80D633C +sub_80D633C: @ 80D633C + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D633C + + thumb_func_start sub_80D6348 +sub_80D6348: @ 80D6348 + push {r4-r6,lr} + ldr r6, _080D63D4 @ =gUnknown_2023D44 + ldr r4, _080D63D8 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _080D63DC @ =gUnknown_202063C + adds r0, r5 + bl sub_80750FC + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080D63E0 @ =0x0000ffd8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080D63E4 @ =sub_8075590 + str r1, [r0] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080D63E8 @ =nullsub_8 + bl sub_8074A68 + ldr r1, _080D63EC @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D63F0 @ =sub_80D42A8 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D63D4: .4byte gUnknown_2023D44 +_080D63D8: .4byte gUnknown_2023BC4 +_080D63DC: .4byte gUnknown_202063C +_080D63E0: .4byte 0x0000ffd8 +_080D63E4: .4byte sub_8075590 +_080D63E8: .4byte nullsub_8 +_080D63EC: .4byte gUnknown_3004FE0 +_080D63F0: .4byte sub_80D42A8 + thumb_func_end sub_80D6348 + + thumb_func_start sub_80D63F4 +sub_80D63F4: @ 80D63F4 + push {r4-r6,lr} + ldr r6, _080D6440 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _080D6444 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, [r4, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _080D6448 + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080D6428 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_080D6428: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + adds r1, 0x1 + strb r1, [r0, 0x4] + b _080D64BE + .align 2, 0 +_080D6440: .4byte gUnknown_2024018 +_080D6444: .4byte gUnknown_2023BC4 +_080D6448: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080D64BE + strb r4, [r3, 0x4] + ldr r2, _080D64C4 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080D64C8 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + movs r1, 0x40 + negs r1, r1 + movs r0, 0x10 + bl sub_80722F4 + ldr r2, _080D64CC @ =gUnknown_202063C + ldr r3, _080D64D0 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x30] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strh r1, [r0, 0x32] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080D64D4 @ =sub_8012110 + str r1, [r0] + ldr r1, _080D64D8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D64DC @ =sub_80D4640 + str r1, [r0] +_080D64BE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D64C4: .4byte gUnknown_2023BCE +_080D64C8: .4byte gUnknown_2024284 +_080D64CC: .4byte gUnknown_202063C +_080D64D0: .4byte gUnknown_2023D44 +_080D64D4: .4byte sub_8012110 +_080D64D8: .4byte gUnknown_3004FE0 +_080D64DC: .4byte sub_80D4640 + thumb_func_end sub_80D63F4 + + thumb_func_start sub_80D64E0 +sub_80D64E0: @ 80D64E0 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D64E0 + + thumb_func_start sub_80D64EC +sub_80D64EC: @ 80D64EC + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D64EC + + thumb_func_start sub_80D64F8 +sub_80D64F8: @ 80D64F8 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D64F8 + + thumb_func_start sub_80D6504 +sub_80D6504: @ 80D6504 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6504 + + thumb_func_start sub_80D6510 +sub_80D6510: @ 80D6510 + push {r4-r6,lr} + ldr r6, _080D65F4 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + beq _080D6522 + b _080D6636 +_080D6522: + ldr r0, _080D65F8 @ =gUnknown_2022BC4 + mov r12, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _080D65FC @ =gUnknown_2037F16 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _080D6600 @ =gUnknown_2037EEC + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _080D6604 @ =gUnknown_2037EE8 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _080D6608 @ =gUnknown_2037EFE + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _080D660C @ =gUnknown_2037F00 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _080D6610 @ =gUnknown_2037EE4 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _080D6614 @ =gUnknown_2024008 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_80342A0 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _080D6618 + bl sub_80D49E8 + b _080D6636 + .align 2, 0 +_080D65F4: .4byte gUnknown_2023BC4 +_080D65F8: .4byte gUnknown_2022BC4 +_080D65FC: .4byte gUnknown_2037F16 +_080D6600: .4byte gUnknown_2037EEC +_080D6604: .4byte gUnknown_2037EE8 +_080D6608: .4byte gUnknown_2037EFE +_080D660C: .4byte gUnknown_2037F00 +_080D6610: .4byte gUnknown_2037EE4 +_080D6614: .4byte gUnknown_2024008 +_080D6618: + ldr r0, _080D663C @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x4] + ldr r1, _080D6640 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6644 @ =sub_80D6648 + str r1, [r0] +_080D6636: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D663C: .4byte gUnknown_2024018 +_080D6640: .4byte gUnknown_3004FE0 +_080D6644: .4byte sub_80D6648 + thumb_func_end sub_80D6510 + + thumb_func_start sub_80D6648 +sub_80D6648: @ 80D6648 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _080D6694 @ =gUnknown_2022BC4 + ldr r6, _080D6698 @ =gUnknown_2023BC4 + ldrb r3, [r6] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r10, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, 0x2 + mov r9, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + adds r2, 0xB + adds r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _080D669C @ =gUnknown_2024018 + ldr r5, [r7] + ldr r1, [r5, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _080D66E0 + cmp r2, 0x1 + bgt _080D66A0 + cmp r2, 0 + beq _080D66AA + b _080D67BC + .align 2, 0 +_080D6694: .4byte gUnknown_2022BC4 +_080D6698: .4byte gUnknown_2023BC4 +_080D669C: .4byte gUnknown_2024018 +_080D66A0: + cmp r2, 0x2 + beq _080D670A + cmp r2, 0x3 + beq _080D6780 + b _080D67BC +_080D66AA: + ldr r1, [r5] + lsls r0, r3, 2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, 0xC + ands r0, r2 + cmp r0, 0x4 + bne _080D66CC + movs r0, 0x8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_080D66CC: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _080D67BC +_080D66E0: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080D67BC + movs r0, 0 + bl sub_8035450 + adds r0, r4, 0 + bl sub_807259C + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x4] + b _080D67BC +_080D670A: + ldr r0, _080D6770 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080D6774 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _080D67BC + movs r0, 0x1 + bl sub_8035450 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080D6758 + mov r0, r8 + cmp r0, 0x1 + bhi _080D6758 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_080D6758: + ldr r0, _080D6778 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080D677C @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _080D67BC + .align 2, 0 +_080D6770: .4byte gUnknown_2037EDC +_080D6774: .4byte gUnknown_2037EE1 +_080D6778: .4byte gUnknown_2024018 +_080D677C: .4byte gUnknown_2023BC4 +_080D6780: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080D67BC + bl sub_8034B40 + ldrb r0, [r6] + lsls r2, r0, 9 + mov r3, r10 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r9 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_8035200 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x4] + bl sub_80D49E8 +_080D67BC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D6648 + + thumb_func_start sub_80D67CC +sub_80D67CC: @ 80D67CC + push {r4,lr} + ldr r0, _080D6800 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _080D6804 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _080D6808 @ =gUnknown_2023BC4 + ldrb r4, [r0] + lsls r4, 9 + ldr r0, _080D680C @ =gUnknown_2022BC6 + adds r4, r0 + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _080D6814 + ldr r0, _080D6810 @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _080D681C + .align 2, 0 +_080D6800: .4byte gUnknown_2022974 +_080D6804: .4byte gUnknown_2022976 +_080D6808: .4byte gUnknown_2023BC4 +_080D680C: .4byte gUnknown_2022BC6 +_080D6810: .4byte gUnknown_202298C +_080D6814: + ldr r0, _080D6830 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_080D681C: + ldr r1, _080D6834 @ =gUnknown_3004FE0 + ldr r0, _080D6838 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D683C @ =sub_80D4718 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6830: .4byte gUnknown_202298C +_080D6834: .4byte gUnknown_3004FE0 +_080D6838: .4byte gUnknown_2023BC4 +_080D683C: .4byte sub_80D4718 + thumb_func_end sub_80D67CC + + thumb_func_start sub_80D6840 +sub_80D6840: @ 80D6840 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6840 + + thumb_func_start sub_80D684C +sub_80D684C: @ 80D684C + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D684C + + thumb_func_start sub_80D6858 +sub_80D6858: @ 80D6858 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6858 + + thumb_func_start sub_80D6864 +sub_80D6864: @ 80D6864 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6864 + + thumb_func_start sub_80D6870 +sub_80D6870: @ 80D6870 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6870 + + thumb_func_start sub_80D687C +sub_80D687C: @ 80D687C + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D687C + + thumb_func_start sub_80D6888 +sub_80D6888: @ 80D6888 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6888 + + thumb_func_start sub_80D6894 +sub_80D6894: @ 80D6894 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r0, 0 + bl sub_8034964 + ldr r3, _080D690C @ =gUnknown_2022BC4 + ldr r0, _080D6910 @ =gUnknown_2023BC4 + mov r9, r0 + ldrb r4, [r0] + lsls r2, r4, 9 + adds r0, r3, 0x2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, 0x3 + adds r2, r3 + ldrb r0, [r2] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + asrs r7, r1, 16 + ldr r0, _080D6914 @ =0x00007fff + cmp r7, r0 + beq _080D6924 + ldr r6, _080D6918 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _080D691C @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + mov r8, r0 + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _080D6920 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_8048150 + b _080D694E + .align 2, 0 +_080D690C: .4byte gUnknown_2022BC4 +_080D6910: .4byte gUnknown_2023BC4 +_080D6914: .4byte 0x00007fff +_080D6918: .4byte gUnknown_2023BCE +_080D691C: .4byte gUnknown_2024284 +_080D6920: .4byte gUnknown_3004FF0 +_080D6924: + ldr r1, _080D696C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D6970 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _080D6974 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, 0 + bl sub_8048150 +_080D694E: + ldr r1, _080D6978 @ =gUnknown_3004FE0 + ldr r0, _080D697C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6980 @ =sub_80D45D0 + str r1, [r0] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D696C: .4byte gUnknown_2023BCE +_080D6970: .4byte gUnknown_2024284 +_080D6974: .4byte gUnknown_3004FF0 +_080D6978: .4byte gUnknown_3004FE0 +_080D697C: .4byte gUnknown_2023BC4 +_080D6980: .4byte sub_80D45D0 + thumb_func_end sub_80D6894 + + thumb_func_start sub_80D6984 +sub_80D6984: @ 80D6984 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6984 + + thumb_func_start sub_80D6990 +sub_80D6990: @ 80D6990 + push {r4,lr} + ldr r4, _080D69EC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _080D69E4 + ldr r0, _080D69F0 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _080D69F4 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080D69F8 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0x9 + bl sub_8049D98 + ldrb r2, [r4] + ldr r0, _080D69FC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _080D6A00 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6A04 @ =sub_80D4A60 + str r1, [r0] +_080D69E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D69EC: .4byte gUnknown_2023BC4 +_080D69F0: .4byte gUnknown_3004FF0 +_080D69F4: .4byte gUnknown_2023BCE +_080D69F8: .4byte gUnknown_2024284 +_080D69FC: .4byte gUnknown_2024018 +_080D6A00: .4byte gUnknown_3004FE0 +_080D6A04: .4byte sub_80D4A60 + thumb_func_end sub_80D6990 + + thumb_func_start sub_80D6A08 +sub_80D6A08: @ 80D6A08 + push {r4,r5,lr} + ldr r5, _080D6A60 @ =gUnknown_2023BC4 + ldrb r0, [r5] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _080D6A58 + ldr r4, _080D6A64 @ =gUnknown_2022BC4 + ldrb r3, [r5] + lsls r3, 9 + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, 0x2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + adds r2, r4, 0x4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 16 + orrs r1, r2 + adds r4, 0x5 + adds r3, r4 + ldrb r2, [r3] + lsls r2, 24 + orrs r1, r2 + bl sub_8033F1C + ldr r1, _080D6A68 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6A6C @ =sub_80D4A60 + str r1, [r0] +_080D6A58: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6A60: .4byte gUnknown_2023BC4 +_080D6A64: .4byte gUnknown_2022BC4 +_080D6A68: .4byte gUnknown_3004FE0 +_080D6A6C: .4byte sub_80D4A60 + thumb_func_end sub_80D6A08 + + thumb_func_start sub_80D6A70 +sub_80D6A70: @ 80D6A70 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6A70 + + thumb_func_start sub_80D6A7C +sub_80D6A7C: @ 80D6A7C + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6A7C + + thumb_func_start sub_80D6A88 +sub_80D6A88: @ 80D6A88 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6A88 + + thumb_func_start sub_80D6A94 +sub_80D6A94: @ 80D6A94 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6A94 + + thumb_func_start sub_80D6AA0 +sub_80D6AA0: @ 80D6AA0 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6AA0 + + thumb_func_start sub_80D6AAC +sub_80D6AAC: @ 80D6AAC + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6AAC + + thumb_func_start sub_80D6AB8 +sub_80D6AB8: @ 80D6AB8 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6AB8 + + thumb_func_start sub_80D6AC4 +sub_80D6AC4: @ 80D6AC4 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6AC4 + + thumb_func_start sub_80D6AD0 +sub_80D6AD0: @ 80D6AD0 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6AD0 + + thumb_func_start sub_80D6ADC +sub_80D6ADC: @ 80D6ADC + push {lr} + ldr r2, _080D6AF4 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x80 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6AF4: .4byte gUnknown_2022870 + thumb_func_end sub_80D6ADC + + thumb_func_start sub_80D6AF8 +sub_80D6AF8: @ 80D6AF8 + push {lr} + ldr r3, _080D6B24 @ =gUnknown_2022870 + ldr r1, _080D6B28 @ =gUnknown_2022BC4 + ldr r0, _080D6B2C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x7F + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6B24: .4byte gUnknown_2022870 +_080D6B28: .4byte gUnknown_2022BC4 +_080D6B2C: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D6AF8 + + thumb_func_start sub_80D6B30 +sub_80D6B30: @ 80D6B30 + push {lr} + ldr r2, _080D6B44 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6B44: .4byte gUnknown_2022870 + thumb_func_end sub_80D6B30 + + thumb_func_start sub_80D6B48 +sub_80D6B48: @ 80D6B48 + push {lr} + ldr r3, _080D6B6C @ =gUnknown_2022870 + ldr r1, [r3] + lsls r1, 24 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 7 + ldrb r2, [r3] + movs r0, 0x7F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6B6C: .4byte gUnknown_2022870 + thumb_func_end sub_80D6B48 + + thumb_func_start sub_80D6B70 +sub_80D6B70: @ 80D6B70 + push {r4,lr} + ldr r3, _080D6B98 @ =gUnknown_202063C + ldr r2, _080D6B9C @ =gUnknown_2023D44 + ldr r4, _080D6BA0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080D6BA4 + bl sub_80D49E8 + b _080D6BCE + .align 2, 0 +_080D6B98: .4byte gUnknown_202063C +_080D6B9C: .4byte gUnknown_2023D44 +_080D6BA0: .4byte gUnknown_2023BC4 +_080D6BA4: + ldr r1, _080D6BD4 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_804BE70 + ldr r1, _080D6BD8 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6BDC @ =sub_80D4730 + str r1, [r0] +_080D6BCE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6BD4: .4byte gUnknown_2024005 +_080D6BD8: .4byte gUnknown_3004FE0 +_080D6BDC: .4byte sub_80D4730 + thumb_func_end sub_80D6B70 + + thumb_func_start sub_80D6BE0 +sub_80D6BE0: @ 80D6BE0 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D6BE0 + + thumb_func_start sub_80D6BEC +sub_80D6BEC: @ 80D6BEC + push {r4,lr} + ldr r4, _080D6C28 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r3, 0x3F + cmp r0, 0 + bne _080D6C00 + movs r3, 0xC0 +_080D6C00: + ldr r2, _080D6C2C @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + lsls r1, r3, 24 + asrs r1, 24 + bl sub_80722F4 + bl sub_80D49E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6C28: .4byte gUnknown_2023BC4 +_080D6C2C: .4byte gUnknown_2022BC4 + thumb_func_end sub_80D6BEC + + thumb_func_start sub_80D6C30 +sub_80D6C30: @ 80D6C30 + push {lr} + ldr r2, _080D6C58 @ =gUnknown_2022BC4 + ldr r0, _080D6C5C @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6C58: .4byte gUnknown_2022BC4 +_080D6C5C: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D6C30 + + thumb_func_start sub_80D6C60 +sub_80D6C60: @ 80D6C60 + push {lr} + ldr r1, _080D6C94 @ =gUnknown_2023BCE + ldr r0, _080D6C98 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D6C9C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + negs r1, r1 + movs r2, 0x5 + bl sub_8071E60 + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6C94: .4byte gUnknown_2023BCE +_080D6C98: .4byte gUnknown_2023BC4 +_080D6C9C: .4byte gUnknown_2024284 + thumb_func_end sub_80D6C60 + + thumb_func_start sub_80D6CA0 +sub_80D6CA0: @ 80D6CA0 + push {lr} + ldr r1, _080D6CC8 @ =gUnknown_2022BC4 + ldr r0, _080D6CCC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _080D6CD0 @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D6CC8: .4byte gUnknown_2022BC4 +_080D6CCC: .4byte gUnknown_2023BC4 +_080D6CD0: .4byte gUnknown_2023F4C + thumb_func_end sub_80D6CA0 + + thumb_func_start sub_80D6CD4 +sub_80D6CD4: @ 80D6CD4 + push {r4-r7,lr} + ldr r5, _080D6DDC @ =gUnknown_2023D44 + ldr r6, _080D6DE0 @ =gUnknown_2023BC4 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080D6DE4 @ =gUnknown_202063C + adds r0, r4 + bl sub_80750FC + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x32 + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080D6DE8 @ =0x0000ffd8 + strh r1, [r0, 0x32] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080D6DEC @ =sub_8075590 + str r1, [r0] + ldrb r2, [r6] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x38] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080D6DF0 @ =sub_80335F8 + bl sub_8074A68 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_800838C + ldr r0, _080D6DF4 @ =0x0000d6f9 + bl sub_80089B8 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r6] + bl sub_8043658 + ldr r4, _080D6DF8 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + movs r5, 0xFF + ldrb r0, [r1] + cmp r0, 0x2 + beq _080D6DC2 + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x1 + beq _080D6DC2 + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1] + ands r5, r0 + cmp r5, 0x3 + bne _080D6DFC +_080D6DC2: + ldr r0, _080D6DE0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8043658 + ldr r2, _080D6DF8 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x13] + adds r0, 0x2 + b _080D6E0C + .align 2, 0 +_080D6DDC: .4byte gUnknown_2023D44 +_080D6DE0: .4byte gUnknown_2023BC4 +_080D6DE4: .4byte gUnknown_202063C +_080D6DE8: .4byte 0x0000ffd8 +_080D6DEC: .4byte sub_8075590 +_080D6DF0: .4byte sub_80335F8 +_080D6DF4: .4byte 0x0000d6f9 +_080D6DF8: .4byte gUnknown_202273C +_080D6DFC: + ldrb r0, [r6] + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x13] +_080D6E0C: + ldr r1, _080D6EA4 @ =gUnknown_8239FD4 + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + lsls r4, r7, 4 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, r2 + movs r2, 0x20 + bl sub_80703A8 + ldr r2, _080D6EA8 @ =gUnknown_202063C + ldr r1, _080D6EAC @ =gUnknown_2023D44 + ldr r5, _080D6EB0 @ =gUnknown_2023BC4 + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r4 + strb r0, [r1, 0x5] + ldr r0, _080D6EB4 @ =sub_80D6ED0 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080D6EB8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r5] + strh r0, [r1, 0x8] + ldr r3, _080D6EBC @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D6E86 + ldr r0, _080D6EC0 @ =gUnknown_2024000 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _080D6EC4 @ =sub_80491B0 + str r1, [r0] +_080D6E86: + ldr r0, [r3] + ldr r2, [r0, 0x8] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _080D6EC8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6ECC @ =nullsub_77 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6EA4: .4byte gUnknown_8239FD4 +_080D6EA8: .4byte gUnknown_202063C +_080D6EAC: .4byte gUnknown_2023D44 +_080D6EB0: .4byte gUnknown_2023BC4 +_080D6EB4: .4byte sub_80D6ED0 +_080D6EB8: .4byte gUnknown_3005090 +_080D6EBC: .4byte gUnknown_2024018 +_080D6EC0: .4byte gUnknown_2024000 +_080D6EC4: .4byte sub_80491B0 +_080D6EC8: .4byte gUnknown_3004FE0 +_080D6ECC: .4byte nullsub_77 + thumb_func_end sub_80D6CD4 + + thumb_func_start sub_80D6ED0 +sub_80D6ED0: @ 80D6ED0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080D6EF8 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0x17 + bgt _080D6EFC + adds r0, r2, 0x1 + strh r0, [r1, 0xA] + b _080D6FB8 + .align 2, 0 +_080D6EF8: .4byte gUnknown_3005090 +_080D6EFC: + ldr r7, _080D6F3C @ =gUnknown_2023BC4 + ldrb r0, [r7] + mov r9, r0 + ldrh r0, [r1, 0x8] + strb r0, [r7] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080D6F1C + ldr r0, _080D6F40 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080D6F4C +_080D6F1C: + ldr r0, _080D6F44 @ =gUnknown_2022BC4 + ldrb r1, [r7] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _080D6F48 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, 0 + bl sub_80D5F40 + b _080D6FA0 + .align 2, 0 +_080D6F3C: .4byte gUnknown_2023BC4 +_080D6F40: .4byte gUnknown_2022B4C +_080D6F44: .4byte gUnknown_2022BC4 +_080D6F48: .4byte gUnknown_2023BCE +_080D6F4C: + ldr r4, _080D6FC4 @ =gUnknown_2022BC4 + ldrb r0, [r7] + lsls r1, r0, 9 + adds r4, 0x1 + adds r1, r4 + ldr r5, _080D6FC8 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_80D5F40 + ldrb r0, [r7] + movs r6, 0x2 + eors r0, r6 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, 9 + adds r1, r4 + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r7] + lsls r0, r1, 1 + adds r0, r5 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080D6FCC @ =gUnknown_2024284 + adds r0, r2 + bl sub_8034498 + ldrb r0, [r7] + movs r1, 0 + bl sub_80D5F40 + ldrb r0, [r7] + eors r0, r6 + strb r0, [r7] +_080D6FA0: + ldr r1, _080D6FD0 @ =gUnknown_3004FE0 + ldr r2, _080D6FD4 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D6FD8 @ =sub_80D443C + str r1, [r0] + mov r3, r9 + strb r3, [r2] + mov r0, r8 + bl sub_8077508 +_080D6FB8: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6FC4: .4byte gUnknown_2022BC4 +_080D6FC8: .4byte gUnknown_2023BCE +_080D6FCC: .4byte gUnknown_2024284 +_080D6FD0: .4byte gUnknown_3004FE0 +_080D6FD4: .4byte gUnknown_2023BC4 +_080D6FD8: .4byte sub_80D443C + thumb_func_end sub_80D6ED0 + + thumb_func_start sub_80D6FDC +sub_80D6FDC: @ 80D6FDC + push {r4-r6,lr} + ldr r1, _080D7004 @ =gUnknown_2022BC4 + ldr r0, _080D7008 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080D700C + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D700C + bl sub_80D49E8 + b _080D7080 + .align 2, 0 +_080D7004: .4byte gUnknown_2022BC4 +_080D7008: .4byte gUnknown_2023BC4 +_080D700C: + ldr r6, _080D7088 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r5, _080D708C @ =gUnknown_2023BC4 + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r3, r0, 9 + ldr r4, _080D7090 @ =gUnknown_2022BC8 + adds r1, r3, r4 + subs r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, 0x2 + adds r3, r4 + ldrb r3, [r3] + bl sub_8048D14 + ldr r2, _080D7094 @ =gUnknown_2024000 + ldrb r1, [r5] + adds r1, r2 + movs r3, 0 + strb r0, [r1] + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x5] + ldrb r2, [r5] + lsls r0, r2, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _080D7074 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x5D + strb r1, [r0, 0x5] +_080D7074: + ldr r0, _080D7098 @ =gUnknown_3004FE0 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r0 + ldr r0, _080D709C @ =sub_80D70A0 + str r0, [r1] +_080D7080: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D7088: .4byte gUnknown_2024018 +_080D708C: .4byte gUnknown_2023BC4 +_080D7090: .4byte gUnknown_2022BC8 +_080D7094: .4byte gUnknown_2024000 +_080D7098: .4byte gUnknown_3004FE0 +_080D709C: .4byte sub_80D70A0 + thumb_func_end sub_80D6FDC + + thumb_func_start sub_80D70A0 +sub_80D70A0: @ 80D70A0 + push {r4,lr} + ldr r4, _080D70E0 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r3, _080D70E4 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + adds r2, r1, 0x1 + strb r2, [r0, 0x5] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x5C + bls _080D70D8 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x5] + bl sub_80D49E8 +_080D70D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D70E0: .4byte gUnknown_2024018 +_080D70E4: .4byte gUnknown_2023BC4 + thumb_func_end sub_80D70A0 + + thumb_func_start sub_80D70E8 +sub_80D70E8: @ 80D70E8 + push {lr} + ldr r0, _080D7124 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080D7128 @ =gUnknown_2023BC4 + ldrb r3, [r0] + ldr r1, [r1, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D711A + ldr r2, _080D712C @ =gUnknown_3005090 + ldr r0, _080D7130 @ =gUnknown_2024000 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _080D7134 @ =sub_80491B0 + str r1, [r0] +_080D711A: + bl sub_80D49E8 + pop {r0} + bx r0 + .align 2, 0 +_080D7124: .4byte gUnknown_2024018 +_080D7128: .4byte gUnknown_2023BC4 +_080D712C: .4byte gUnknown_3005090 +_080D7130: .4byte gUnknown_2024000 +_080D7134: .4byte sub_80491B0 + thumb_func_end sub_80D70E8 + + thumb_func_start sub_80D7138 +sub_80D7138: @ 80D7138 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D7138 + + thumb_func_start sub_80D7144 +sub_80D7144: @ 80D7144 + push {r4,lr} + ldr r4, _080D7194 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _080D718A + ldr r3, _080D7198 @ =gUnknown_202063C + ldr r0, _080D719C @ =gUnknown_2023D44 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldr r0, _080D71A0 @ =gUnknown_2022BC4 + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + adds r2, 0x3E + movs r0, 0x1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_8034BB4 +_080D718A: + bl sub_80D49E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7194: .4byte gUnknown_2023BC4 +_080D7198: .4byte gUnknown_202063C +_080D719C: .4byte gUnknown_2023D44 +_080D71A0: .4byte gUnknown_2022BC4 + thumb_func_end sub_80D7144 + + thumb_func_start sub_80D71A4 +sub_80D71A4: @ 80D71A4 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _080D71E8 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _080D71FC + ldr r5, _080D71EC @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _080D71F0 + bl sub_80D49E8 + b _080D71FC + .align 2, 0 +_080D71E8: .4byte gUnknown_2023BC4 +_080D71EC: .4byte gUnknown_2022BC4 +_080D71F0: + ldr r0, _080D7204 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _080D7208 @ =sub_80D4A90 + str r0, [r1] +_080D71FC: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D7204: .4byte gUnknown_3004FE0 +_080D7208: .4byte sub_80D4A90 + thumb_func_end sub_80D71A4 + + thumb_func_start sub_80D720C +sub_80D720C: @ 80D720C + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D720C + + thumb_func_start sub_80D7218 +sub_80D7218: @ 80D7218 + push {lr} + bl sub_80D49E8 + pop {r0} + bx r0 + thumb_func_end sub_80D7218 + + thumb_func_start sub_80D7224 +sub_80D7224: @ 80D7224 + push {r4,lr} + ldr r2, _080D725C @ =gUnknown_2023E8A + ldr r1, _080D7260 @ =gUnknown_2022BC4 + ldr r4, _080D7264 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x5 + bl sub_8071AB4 + movs r0, 0x3 + bl sub_8070E44 + bl sub_80D49E8 + ldr r1, _080D7268 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080D726C @ =sub_802F6A8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D725C: .4byte gUnknown_2023E8A +_080D7260: .4byte gUnknown_2022BC4 +_080D7264: .4byte gUnknown_2023BC4 +_080D7268: .4byte gUnknown_3004FE0 +_080D726C: .4byte sub_802F6A8 + thumb_func_end sub_80D7224 + + thumb_func_start nullsub_78 +nullsub_78: @ 80D7270 + bx lr + thumb_func_end nullsub_78 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s new file mode 100644 index 000000000..bd2682218 --- /dev/null +++ b/asm/battle_controller_oak.s @@ -0,0 +1,7887 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_81 +nullsub_81: @ 80E75AC + bx lr + thumb_func_end nullsub_81 + + thumb_func_start sub_80E75B0 +sub_80E75B0: @ 80E75B0 + ldr r1, _080E75DC @ =gUnknown_3004FE0 + ldr r0, _080E75E0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E75E4 @ =sub_80E75EC + str r1, [r0] + ldr r2, _080E75E8 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0x94 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x95 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x96 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x97 + strb r1, [r0] + bx lr + .align 2, 0 +_080E75DC: .4byte gUnknown_3004FE0 +_080E75E0: .4byte gUnknown_2023BC4 +_080E75E4: .4byte sub_80E75EC +_080E75E8: .4byte gUnknown_2023FE8 + thumb_func_end sub_80E75B0 + + thumb_func_start sub_80E75EC +sub_80E75EC: @ 80E75EC + push {lr} + ldr r2, _080E7620 @ =gUnknown_2023BC8 + ldr r1, _080E7624 @ =gUnknown_825E45C + ldr r0, _080E7628 @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080E7638 + ldr r0, _080E762C @ =gUnknown_2022BC4 + lsls r1, r3, 9 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x38 + bhi _080E7634 + ldr r0, _080E7630 @ =gUnknown_84020F8 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _080E7638 + .align 2, 0 +_080E7620: .4byte gUnknown_2023BC8 +_080E7624: .4byte gUnknown_825E45C +_080E7628: .4byte gUnknown_2023BC4 +_080E762C: .4byte gUnknown_2022BC4 +_080E7630: .4byte gUnknown_84020F8 +_080E7634: + bl sub_80E8A9C +_080E7638: + pop {r0} + bx r0 + thumb_func_end sub_80E75EC + + thumb_func_start sub_80E763C +sub_80E763C: @ 80E763C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _080E769C @ =gUnknown_2022BC4 + ldr r4, _080E76A0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r2, r0, 9 + adds r1, r7, 0x2 + adds r1, r2, r1 + ldrb r5, [r1] + adds r1, r7, 0x3 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r5, r1 + movs r1, 0x1 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldr r0, _080E76A4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080E76D4 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080E76A8 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080E76BC + cmp r0, 0x1 + bgt _080E76AC + cmp r0, 0 + beq _080E76B6 + b _080E781A + .align 2, 0 +_080E769C: .4byte gUnknown_2022BC4 +_080E76A0: .4byte gUnknown_2023BC4 +_080E76A4: .4byte gUnknown_30030F0 +_080E76A8: .4byte gUnknown_2023FF8 +_080E76AC: + cmp r0, 0x2 + beq _080E76C2 + cmp r0, 0x3 + beq _080E76C8 + b _080E781A +_080E76B6: + movs r0, 0x1 + movs r1, 0 + b _080E7814 +_080E76BC: + movs r0, 0x1 + movs r1, 0x1 + b _080E7814 +_080E76C2: + movs r0, 0x1 + movs r1, 0x2 + b _080E7814 +_080E76C8: + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_800E848 + b _080E781A +_080E76D4: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080E770C + ldr r5, _080E7708 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080E76EE + b _080E7838 +_080E76EE: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + b _080E7794 + .align 2, 0 +_080E7708: .4byte gUnknown_2023FF8 +_080E770C: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080E7744 + ldr r5, _080E7740 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080E7726 + b _080E7838 +_080E7726: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + b _080E7794 + .align 2, 0 +_080E7740: .4byte gUnknown_2023FF8 +_080E7744: + movs r0, 0x40 + mov r8, r0 + ands r0, r1 + cmp r0, 0 + beq _080E7764 + ldr r5, _080E7760 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E7838 + b _080E777C + .align 2, 0 +_080E7760: .4byte gUnknown_2023FF8 +_080E7764: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E77AC + ldr r5, _080E77A8 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080E7838 +_080E777C: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x2 +_080E7794: + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + b _080E7838 + .align 2, 0 +_080E77A8: .4byte gUnknown_2023FF8 +_080E77AC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E782C + ldr r6, _080E7820 @ =gUnknown_2022B4C + ldr r0, [r6] + ands r0, r2 + cmp r0, 0 + beq _080E7838 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080E7838 + movs r0, 0 + bl sub_80751E8 + ldr r1, _080E7824 @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _080E7828 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080E7838 + ldr r0, [r6] + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _080E7838 + ldrb r0, [r4] + lsls r0, 9 + adds r1, r7, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080E780A + cmp r5, 0xC + bhi _080E7838 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_809A084 +_080E780A: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + movs r1, 0xC +_080E7814: + movs r2, 0 + bl sub_800E848 +_080E781A: + bl sub_80E8A9C + b _080E7838 + .align 2, 0 +_080E7820: .4byte gUnknown_2022B4C +_080E7824: .4byte gUnknown_2023D70 +_080E7828: .4byte gUnknown_825E45C +_080E782C: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080E7838 + bl sub_8048A4C +_080E7838: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E763C + + thumb_func_start sub_80E7844 +sub_80E7844: @ 80E7844 + push {r4,lr} + ldr r1, _080E7860 @ =gUnknown_2023FE8 + ldr r2, [r1] + adds r0, r2, 0 + adds r0, 0x94 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x1 + beq _080E787C + cmp r0, 0x1 + bgt _080E7864 + cmp r0, 0 + beq _080E786A + b _080E78D8 + .align 2, 0 +_080E7860: .4byte gUnknown_2023FE8 +_080E7864: + cmp r0, 0x2 + beq _080E78B4 + b _080E78D8 +_080E786A: + adds r1, r2, 0 + adds r1, 0x96 + movs r0, 0x40 + strb r0, [r1] + ldr r1, [r4] + adds r1, 0x94 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080E787C: + ldr r1, [r4] + adds r1, 0x96 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _080E78D8 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_8030A98 + movs r0, 0x1 + movs r1, 0 + bl sub_8030A54 + ldr r0, [r4] + adds r0, 0x96 + movs r1, 0x40 + strb r1, [r0] + ldr r1, [r4] + adds r1, 0x94 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080E78D8 +_080E78B4: + adds r1, r2, 0 + adds r1, 0x96 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _080E78D8 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_800E848 + bl sub_80E8A9C +_080E78D8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E7844 + + thumb_func_start sub_80E78E0 +sub_80E78E0: @ 80E78E0 + push {lr} + ldr r2, _080E7908 @ =gUnknown_202063C + ldr r1, _080E790C @ =gUnknown_2023D44 + ldr r0, _080E7910 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080E7914 @ =nullsub_8 + cmp r1, r0 + bne _080E7904 + bl sub_80E8A9C +_080E7904: + pop {r0} + bx r0 + .align 2, 0 +_080E7908: .4byte gUnknown_202063C +_080E790C: .4byte gUnknown_2023D44 +_080E7910: .4byte gUnknown_2023BC4 +_080E7914: .4byte nullsub_8 + thumb_func_end sub_80E78E0 + + thumb_func_start sub_80E7918 +sub_80E7918: @ 80E7918 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080E792A + bl sub_80E8A9C +_080E792A: + pop {r0} + bx r0 + thumb_func_end sub_80E7918 + + thumb_func_start sub_80E7930 +sub_80E7930: @ 80E7930 + push {lr} + ldr r0, _080E7960 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E795A + ldr r2, _080E7964 @ =gUnknown_30030F0 + ldr r0, _080E7968 @ =0x00000439 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r0, _080E796C @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, 0x8] + bl sub_8000544 +_080E795A: + pop {r0} + bx r0 + .align 2, 0 +_080E7960: .4byte gUnknown_2037AB8 +_080E7964: .4byte gUnknown_30030F0 +_080E7968: .4byte 0x00000439 +_080E796C: .4byte gUnknown_3004F80 + thumb_func_end sub_80E7930 + + thumb_func_start sub_80E7970 +sub_80E7970: @ 80E7970 + push {lr} + ldr r0, _080E7984 @ =gUnknown_2024005 + ldrb r0, [r0] + cmp r0, 0 + bne _080E797E + bl sub_80E8A9C +_080E797E: + pop {r0} + bx r0 + .align 2, 0 +_080E7984: .4byte gUnknown_2024005 + thumb_func_end sub_80E7970 + + thumb_func_start sub_80E7988 +sub_80E7988: @ 80E7988 + push {lr} + bl sub_802EA10 + ldr r2, _080E79AC @ =gUnknown_2023BC8 + ldr r1, _080E79B0 @ =gUnknown_825E45C + ldr r0, _080E79B4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080E79A8 + bl sub_80E8A9C +_080E79A8: + pop {r0} + bx r0 + .align 2, 0 +_080E79AC: .4byte gUnknown_2023BC8 +_080E79B0: .4byte gUnknown_825E45C +_080E79B4: .4byte gUnknown_2023BC4 + thumb_func_end sub_80E7988 + + thumb_func_start sub_80E79B8 +sub_80E79B8: @ 80E79B8 + push {r4,lr} + ldr r0, _080E79FC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E79F6 + ldr r1, _080E7A00 @ =gUnknown_3004FE0 + ldr r2, _080E7A04 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E7A08 @ =sub_80E7A14 + str r1, [r0] + ldr r3, _080E7A0C @ =gUnknown_3005090 + ldr r1, _080E7A10 @ =gUnknown_3004FFC + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r3 + ldrb r4, [r1, 0x8] + bl sub_8077508 + bl sub_8003ECC + adds r0, r4, 0 + bl sub_81278DC +_080E79F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E79FC: .4byte gUnknown_2037AB8 +_080E7A00: .4byte gUnknown_3004FE0 +_080E7A04: .4byte gUnknown_2023BC4 +_080E7A08: .4byte sub_80E7A14 +_080E7A0C: .4byte gUnknown_3005090 +_080E7A10: .4byte gUnknown_3004FFC + thumb_func_end sub_80E79B8 + + thumb_func_start sub_80E7A14 +sub_80E7A14: @ 80E7A14 + push {lr} + ldr r0, _080E7A44 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _080E7A48 @ =sub_8011100 + cmp r1, r0 + bne _080E7A6A + ldr r0, _080E7A4C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E7A6A + ldr r0, _080E7A50 @ =gUnknown_203B0C0 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080E7A5C + ldr r0, _080E7A54 @ =gUnknown_203B0C1 + ldrb r1, [r0] + ldr r2, _080E7A58 @ =gUnknown_203B0DC + movs r0, 0x1 + bl sub_800E874 + b _080E7A66 + .align 2, 0 +_080E7A44: .4byte gUnknown_30030F0 +_080E7A48: .4byte sub_8011100 +_080E7A4C: .4byte gUnknown_2037AB8 +_080E7A50: .4byte gUnknown_203B0C0 +_080E7A54: .4byte gUnknown_203B0C1 +_080E7A58: .4byte gUnknown_203B0DC +_080E7A5C: + movs r0, 0x1 + movs r1, 0x6 + movs r2, 0 + bl sub_800E874 +_080E7A66: + bl sub_80E8A9C +_080E7A6A: + pop {r0} + bx r0 + thumb_func_end sub_80E7A14 + + thumb_func_start sub_80E7A70 +sub_80E7A70: @ 80E7A70 + push {lr} + ldr r0, _080E7AA8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E7AC0 + ldr r1, _080E7AAC @ =gUnknown_3004FE0 + ldr r0, _080E7AB0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E7AB4 @ =sub_80E7AC4 + str r1, [r0] + bl nullsub_44 + bl sub_8003ECC + ldr r0, _080E7AB8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080E7ABC + bl sub_8107ECC + b _080E7AC0 + .align 2, 0 +_080E7AA8: .4byte gUnknown_2037AB8 +_080E7AAC: .4byte gUnknown_3004FE0 +_080E7AB0: .4byte gUnknown_2023BC4 +_080E7AB4: .4byte sub_80E7AC4 +_080E7AB8: .4byte gUnknown_2022B4C +_080E7ABC: + bl sub_810AF74 +_080E7AC0: + pop {r0} + bx r0 + thumb_func_end sub_80E7A70 + + thumb_func_start sub_80E7AC4 +sub_80E7AC4: @ 80E7AC4 + push {lr} + ldr r0, _080E7B14 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _080E7B18 @ =sub_8011100 + cmp r1, r0 + bne _080E7B42 + ldr r0, _080E7B1C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E7B42 + movs r0, 0x4 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _080E7B34 + ldr r0, _080E7B20 @ =gUnknown_203AD30 + ldrh r0, [r0] + cmp r0, 0xD + bne _080E7B34 + ldr r0, _080E7B24 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080E7B34 + movs r0, 0x4 + bl sub_80EB2F4 + ldr r1, _080E7B28 @ =gUnknown_3004FE0 + ldr r0, _080E7B2C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E7B30 @ =sub_80E8704 + str r1, [r0] + b _080E7B42 + .align 2, 0 +_080E7B14: .4byte gUnknown_30030F0 +_080E7B18: .4byte sub_8011100 +_080E7B1C: .4byte gUnknown_2037AB8 +_080E7B20: .4byte gUnknown_203AD30 +_080E7B24: .4byte gUnknown_2022B4C +_080E7B28: .4byte gUnknown_3004FE0 +_080E7B2C: .4byte gUnknown_2023BC4 +_080E7B30: .4byte sub_80E8704 +_080E7B34: + ldr r0, _080E7B48 @ =gUnknown_203AD30 + ldrh r1, [r0] + movs r0, 0x1 + bl sub_800E8AC + bl sub_80E8A9C +_080E7B42: + pop {r0} + bx r0 + .align 2, 0 +_080E7B48: .4byte gUnknown_203AD30 + thumb_func_end sub_80E7AC4 + + thumb_func_start sub_80E7B4C +sub_80E7B4C: @ 80E7B4C + push {r4-r7,lr} + ldr r4, _080E7CB0 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r5, _080E7CB4 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r7, 0x88 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080E7B80 + ldr r0, _080E7CB8 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080E7CBC @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_080E7B80: + ldr r1, [r4] + ldrb r0, [r5] + movs r6, 0x2 + adds r2, r6, 0 + eors r2, r0 + ldr r1, [r1, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080E7BB2 + ldr r0, _080E7CB8 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080E7CBC @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_080E7BB2: + ldr r0, [r4] + ldrb r2, [r5] + ldr r3, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + movs r4, 0x8 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080E7CA8 + adds r1, r6, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080E7CA8 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080E7C46 + ldr r0, _080E7CC0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080E7C46 + ldr r1, _080E7CC4 @ =gUnknown_3004FFC + ldrb r0, [r5] + eors r0, r6 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080E7CC8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _080E7CCC @ =gUnknown_3004FF0 + ldrb r0, [r5] + adds r1, r6, 0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _080E7CB8 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080E7CBC @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + eors r0, r6 + bl sub_804BD94 + ldrb r0, [r5] + eors r0, r6 + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 +_080E7C46: + ldr r1, _080E7CC4 @ =gUnknown_3004FFC + ldr r4, _080E7CB4 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080E7CC8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r5, _080E7CCC @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _080E7CB8 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080E7CBC @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r4] + bl sub_804BD94 + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + ldr r0, _080E7CB0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x8] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldr r1, _080E7CD0 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E7CD4 @ =sub_80E7CD8 + str r1, [r0] +_080E7CA8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7CB0: .4byte gUnknown_2024018 +_080E7CB4: .4byte gUnknown_2023BC4 +_080E7CB8: .4byte gUnknown_2023BCE +_080E7CBC: .4byte gUnknown_2024284 +_080E7CC0: .4byte gUnknown_2022B4C +_080E7CC4: .4byte gUnknown_3004FFC +_080E7CC8: .4byte gUnknown_202063C +_080E7CCC: .4byte gUnknown_3004FF0 +_080E7CD0: .4byte gUnknown_3004FE0 +_080E7CD4: .4byte sub_80E7CD8 + thumb_func_end sub_80E7B4C + + thumb_func_start sub_80E7CD8 +sub_80E7CD8: @ 80E7CD8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r4, 0 + ldr r2, _080E7DD8 @ =gUnknown_202063C + ldr r0, _080E7DDC @ =gUnknown_3004FF0 + ldr r1, _080E7DE0 @ =gUnknown_2023BC4 + mov r8, r1 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080E7DE4 @ =nullsub_8 + cmp r1, r0 + bne _080E7D02 + movs r4, 0x1 +_080E7D02: + cmp r4, 0 + beq _080E7DCE + ldr r7, _080E7DE8 @ =gUnknown_2024018 + ldr r0, [r7] + ldr r4, [r0, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r4 + ldrb r1, [r2, 0x1] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080E7DCE + movs r6, 0x2 + adds r1, r6, 0 + eors r1, r3 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080E7DCE + ldrb r1, [r2] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r7] + mov r1, r8 + ldrb r2, [r1] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldr r4, _080E7DEC @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, _080E7DF0 @ =sub_802FDF4 + movs r1, 0xA + bl sub_807741C + ldr r2, _080E7DF4 @ =gUnknown_2023BCE + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080E7DF8 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + ldr r1, _080E7DFC @ =gUnknown_3004FE0 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E7E00 @ =sub_80E835C + str r1, [r0] +_080E7DCE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7DD8: .4byte gUnknown_202063C +_080E7DDC: .4byte gUnknown_3004FF0 +_080E7DE0: .4byte gUnknown_2023BC4 +_080E7DE4: .4byte nullsub_8 +_080E7DE8: .4byte gUnknown_2024018 +_080E7DEC: .4byte 0x000027f9 +_080E7DF0: .4byte sub_802FDF4 +_080E7DF4: .4byte gUnknown_2023BCE +_080E7DF8: .4byte gUnknown_2024284 +_080E7DFC: .4byte gUnknown_3004FE0 +_080E7E00: .4byte sub_80E835C + thumb_func_end sub_80E7CD8 + + thumb_func_start sub_80E7E04 +sub_80E7E04: @ 80E7E04 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _080E7F04 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + mov r8, r0 + ldrb r0, [r0, 0x8] + mov r10, r0 + mov r1, r8 + ldrb r7, [r1, 0xC] + str r7, [sp, 0x8] + ldrh r2, [r1, 0xA] + str r2, [sp, 0xC] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080E7E4A + ldr r1, _080E7F08 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r10, r0 + bne _080E7E4A + b _080E7F60 +_080E7E4A: + movs r0, 0x64 + mov r1, r10 + muls r1, r0 + ldr r0, _080E7F0C @ =gUnknown_2024284 + adds r6, r1, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x4] + ldr r3, _080E7F10 @ =gUnknown_8253AE4 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _080E7F14 @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x13] + movs r1, 0xCA + lsls r1, 1 + muls r1, r2 + adds r4, r1 + adds r4, r3 + ldr r2, [r4] + str r2, [sp] + ldr r3, [sp, 0xC] + lsls r1, r3, 16 + asrs r1, 16 + adds r0, r1 + cmp r0, r2 + bcc _080E7F38 + adds r0, r6, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + adds r0, r6, 0 + bl sub_803E47C + ldr r2, [sp] + add r0, sp, 0x4 + ldrh r0, [r0] + subs r2, r0 + ldr r0, [sp, 0xC] + subs r2, r0, r2 + ldr r4, _080E7F18 @ =gUnknown_2023BC4 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0xB + bl sub_800E848 + strb r5, [r4] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E7F20 + ldr r2, _080E7F08 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r2 + mov r1, r10 + ldrh r0, [r0] + cmp r1, r0 + beq _080E7EFE + movs r0, 0x2 + eors r7, r0 + lsls r0, r7, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _080E7F20 +_080E7EFE: + ldr r0, _080E7F1C @ =sub_80E8190 + b _080E7F62 + .align 2, 0 +_080E7F04: .4byte gUnknown_3005090 +_080E7F08: .4byte gUnknown_2023BCE +_080E7F0C: .4byte gUnknown_2024284 +_080E7F10: .4byte gUnknown_8253AE4 +_080E7F14: .4byte gUnknown_8254784 +_080E7F18: .4byte gUnknown_2023BC4 +_080E7F1C: .4byte sub_80E8190 +_080E7F20: + ldr r0, _080E7F30 @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldr r0, _080E7F34 @ =sub_80E82A8 + b _080E7F64 + .align 2, 0 +_080E7F30: .4byte gUnknown_3005090 +_080E7F34: .4byte sub_80E82A8 +_080E7F38: + str r0, [sp, 0x4] + add r2, sp, 0x4 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_804037C + ldr r1, _080E7F58 @ =gUnknown_3004FE0 + ldr r3, [sp, 0x8] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, _080E7F5C @ =sub_80E8930 + str r1, [r0] + mov r0, r9 + bl sub_8077508 + b _080E7F66 + .align 2, 0 +_080E7F58: .4byte gUnknown_3004FE0 +_080E7F5C: .4byte sub_80E8930 +_080E7F60: + ldr r0, _080E7F78 @ =sub_80E7F7C +_080E7F62: + mov r1, r8 +_080E7F64: + str r0, [r1] +_080E7F66: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7F78: .4byte sub_80E7F7C + thumb_func_end sub_80E7E04 + + thumb_func_start sub_80E7F7C +sub_80E7F7C: @ 80E7F7C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080E8034 @ =gUnknown_3005090 + lsls r2, r0, 2 + mov r8, r2 + add r8, r0 + mov r0, r8 + lsls r0, 3 + mov r8, r0 + add r8, r1 + mov r2, r8 + ldrb r1, [r2, 0x8] + movs r0, 0xA + ldrsh r2, [r2, r0] + mov r9, r2 + mov r2, r8 + ldrb r2, [r2, 0xC] + mov r10, r2 + movs r0, 0x64 + adds r6, r1, 0 + muls r6, r0 + ldr r0, _080E8038 @ =gUnknown_2024284 + adds r6, r0 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + adds r3, r0, 0 + ldr r6, _080E803C @ =gUnknown_8253AE4 + lsls r1, r4, 2 + ldr r2, _080E8040 @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r2 + adds r1, r0 + adds r1, r6 + ldr r1, [r1] + subs r3, r1 + adds r4, 0x1 + lsls r4, 2 + adds r4, r0 + adds r4, r6 + ldr r2, [r4] + subs r2, r1 + ldr r0, _080E8044 @ =gUnknown_3004FF0 + add r0, r10 + ldrb r1, [r0] + mov r0, r9 + negs r0, r0 + str r0, [sp] + mov r0, r10 + bl sub_8048150 + movs r0, 0x1B + bl sub_80722CC + ldr r0, _080E8048 @ =sub_80E804C + mov r1, r8 + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E8034: .4byte gUnknown_3005090 +_080E8038: .4byte gUnknown_2024284 +_080E803C: .4byte gUnknown_8253AE4 +_080E8040: .4byte gUnknown_8254784 +_080E8044: .4byte gUnknown_3004FF0 +_080E8048: .4byte sub_80E804C + thumb_func_end sub_80E7F7C + + thumb_func_start sub_80E804C +sub_80E804C: @ 80E804C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080E8078 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r6, r0, r1 + ldrh r1, [r6, 0x1C] + movs r2, 0x1C + ldrsh r0, [r6, r2] + cmp r0, 0xC + bgt _080E807C + adds r0, r1, 0x1 + strh r0, [r6, 0x1C] + b _080E8178 + .align 2, 0 +_080E8078: .4byte gUnknown_3005090 +_080E807C: + ldrb r0, [r6, 0x8] + mov r9, r0 + ldrh r2, [r6, 0xA] + mov r10, r2 + ldrb r7, [r6, 0xC] + ldr r5, _080E8144 @ =gUnknown_3004FF0 + adds r5, r7, r5 + ldrb r1, [r5] + adds r0, r7, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + bl sub_80481D4 + lsls r4, 16 + asrs r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _080E8178 + movs r0, 0x1B + bl m4aSongNumStop + movs r0, 0x64 + mov r1, r9 + muls r1, r0 + ldr r0, _080E8148 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r3, _080E814C @ =gUnknown_8253AE4 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _080E8150 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r1 + adds r4, r0 + adds r4, r3 + ldr r1, [r4] + str r1, [sp] + mov r2, r10 + lsls r0, r2, 16 + asrs r4, r0, 16 + ldr r0, [sp, 0x4] + adds r0, r4 + cmp r0, r1 + blt _080E815C + adds r0, r5, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + adds r0, r5, 0 + bl sub_803E47C + ldr r2, [sp] + add r0, sp, 0x4 + ldrh r0, [r0] + subs r2, r0 + subs r2, r4, r2 + ldr r4, _080E8154 @ =gUnknown_2023BC4 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0xB + bl sub_800E848 + strb r5, [r4] + ldr r0, _080E8158 @ =sub_80E8190 + str r0, [r6] + b _080E8178 + .align 2, 0 +_080E8144: .4byte gUnknown_3004FF0 +_080E8148: .4byte gUnknown_2024284 +_080E814C: .4byte gUnknown_8253AE4 +_080E8150: .4byte gUnknown_8254784 +_080E8154: .4byte gUnknown_2023BC4 +_080E8158: .4byte sub_80E8190 +_080E815C: + str r0, [sp, 0x4] + add r2, sp, 0x4 + adds r0, r5, 0 + movs r1, 0x19 + bl sub_804037C + ldr r1, _080E8188 @ =gUnknown_3004FE0 + lsls r0, r7, 2 + adds r0, r1 + ldr r1, _080E818C @ =sub_80E8930 + str r1, [r0] + mov r0, r8 + bl sub_8077508 +_080E8178: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E8188: .4byte gUnknown_3004FE0 +_080E818C: .4byte sub_80E8930 + thumb_func_end sub_80E804C + + thumb_func_start sub_80E8190 +sub_80E8190: @ 80E8190 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080E81E4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrb r4, [r0, 0xC] + ldrb r6, [r0, 0x8] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E81C4 + ldr r1, _080E81E8 @ =gUnknown_2023BCE + movs r0, 0x2 + adds r2, r4, 0 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r6, r0 + bne _080E81C4 + adds r4, r2, 0 +_080E81C4: + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r4, 0 + movs r3, 0 + bl sub_80341D8 + ldr r0, _080E81E4 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080E81EC @ =sub_80E81F0 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E81E4: .4byte gUnknown_3005090 +_080E81E8: .4byte gUnknown_2023BCE +_080E81EC: .4byte sub_80E81F0 + thumb_func_end sub_80E8190 + + thumb_func_start sub_80E81F0 +sub_80E81F0: @ 80E81F0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080E825C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r2, r0, r1 + ldrb r5, [r2, 0xC] + ldr r0, _080E8260 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080E8292 + ldrb r4, [r2, 0x8] + movs r0, 0x64 + adds r1, r4, 0 + muls r1, r0 + ldr r0, _080E8264 @ =gUnknown_2024284 + adds r7, r1, r0 + adds r0, r7, 0 + movs r1, 0x38 + bl sub_803FBE8 + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E8270 + ldr r1, _080E8268 @ =gUnknown_2023BCE + movs r0, 0x2 + adds r2, r5, 0 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _080E8270 + ldr r0, _080E826C @ =gUnknown_3004FF0 + adds r0, r2, r0 + ldrb r0, [r0] + adds r1, r7, 0 + movs r2, 0 + bl sub_8049D98 + b _080E8284 + .align 2, 0 +_080E825C: .4byte gUnknown_3005090 +_080E8260: .4byte gUnknown_2024018 +_080E8264: .4byte gUnknown_2024284 +_080E8268: .4byte gUnknown_2023BCE +_080E826C: .4byte gUnknown_3004FF0 +_080E8270: + ldr r0, _080E8298 @ =gUnknown_3004FF0 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0x64 + muls r1, r4 + ldr r2, _080E829C @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 +_080E8284: + ldr r0, _080E82A0 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080E82A4 @ =sub_80E82A8 + str r0, [r1] +_080E8292: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E8298: .4byte gUnknown_3004FF0 +_080E829C: .4byte gUnknown_2024284 +_080E82A0: .4byte gUnknown_3005090 +_080E82A4: .4byte sub_80E82A8 + thumb_func_end sub_80E81F0 + + thumb_func_start sub_80E82A8 +sub_80E82A8: @ 80E82A8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080E82E4 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrb r1, [r4, 0x8] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E82E8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + bl sub_803FBE8 + ldrb r0, [r4, 0xC] + ldr r1, _080E82EC @ =gUnknown_3004FE0 + lsls r0, 2 + adds r0, r1 + ldr r1, _080E82F0 @ =sub_80E8930 + str r1, [r0] + adds r0, r5, 0 + bl sub_8077508 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E82E4: .4byte gUnknown_3005090 +_080E82E8: .4byte gUnknown_2024284 +_080E82EC: .4byte gUnknown_3004FE0 +_080E82F0: .4byte sub_80E8930 + thumb_func_end sub_80E82A8 + + thumb_func_start sub_80E82F4 +sub_80E82F4: @ 80E82F4 + push {r4-r6,lr} + ldr r6, _080E834C @ =gUnknown_202063C + ldr r5, _080E8350 @ =gUnknown_2023D44 + ldr r4, _080E8354 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r6 + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + cmp r0, 0xA0 + ble _080E8344 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + ldr r1, _080E8358 @ =gUnknown_3004FF0 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_80E8A9C +_080E8344: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E834C: .4byte gUnknown_202063C +_080E8350: .4byte gUnknown_2023D44 +_080E8354: .4byte gUnknown_2023BC4 +_080E8358: .4byte gUnknown_3004FF0 + thumb_func_end sub_80E82F4 + + thumb_func_start sub_80E835C +sub_80E835C: @ 80E835C + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _080E837C @ =gUnknown_2023FE8 + ldr r0, [r1] + adds r0, 0x94 + ldrb r0, [r0] + adds r7, r1, 0 + cmp r0, 0x8 + bls _080E8370 + b _080E855E +_080E8370: + lsls r0, 2 + ldr r1, _080E8380 @ =_080E8384 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E837C: .4byte gUnknown_2023FE8 +_080E8380: .4byte _080E8384 + .align 2, 0 +_080E8384: + .4byte _080E83A8 + .4byte _080E83F0 + .4byte _080E8408 + .4byte _080E8420 + .4byte _080E8468 + .4byte _080E8490 + .4byte _080E84D8 + .4byte _080E8500 + .4byte _080E8530 +_080E83A8: + ldr r0, _080E83EC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _080E83BA + b _080E855E +_080E83BA: + ldr r4, [r7] + adds r5, r4, 0 + adds r5, 0x95 + adds r4, 0x97 + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80EEFC8 + movs r0, 0x82 + negs r0, r0 + str r6, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + bl sub_8070588 + ldr r1, [r7] + b _080E8522 + .align 2, 0 +_080E83EC: .4byte gUnknown_2037AB8 +_080E83F0: + ldr r0, _080E8404 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E83FE + b _080E855E +_080E83FE: + bl sub_80EB30C + b _080E851E + .align 2, 0 +_080E8404: .4byte gUnknown_2037AB8 +_080E8408: + ldr r0, _080E8418 @ =gUnknown_83FDAE2 + bl sub_80D77F4 + ldr r0, _080E841C @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _080E851E + .align 2, 0 +_080E8418: .4byte gUnknown_83FDAE2 +_080E841C: .4byte gUnknown_202298C +_080E8420: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + beq _080E8430 + b _080E855E +_080E8430: + ldr r2, _080E8460 @ =gUnknown_825E45C + ldr r4, _080E8464 @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x95 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + adds r0, 0x97 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + lsls r0, r1, 16 + str r3, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 + bl sub_8070588 + ldr r1, [r4] + b _080E8522 + .align 2, 0 +_080E8460: .4byte gUnknown_825E45C +_080E8464: .4byte gUnknown_2023FE8 +_080E8468: + ldr r0, _080E8484 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E855E + ldr r0, _080E8488 @ =gUnknown_83FDB92 + bl sub_80D77F4 + ldr r0, _080E848C @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _080E851E + .align 2, 0 +_080E8484: .4byte gUnknown_2037AB8 +_080E8488: .4byte gUnknown_83FDB92 +_080E848C: .4byte gUnknown_202298C +_080E8490: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + bne _080E855E + ldr r2, _080E84D0 @ =gUnknown_825E45C + ldr r4, _080E84D4 @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x95 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + adds r0, 0x97 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + lsls r0, r1, 16 + str r3, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + bl sub_8070588 + ldr r1, [r4] + b _080E8522 + .align 2, 0 +_080E84D0: .4byte gUnknown_825E45C +_080E84D4: .4byte gUnknown_2023FE8 +_080E84D8: + ldr r0, _080E84F4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E855E + ldr r0, _080E84F8 @ =gUnknown_83FDBEF + bl sub_80D77F4 + ldr r0, _080E84FC @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _080E851E + .align 2, 0 +_080E84F4: .4byte gUnknown_2037AB8 +_080E84F8: .4byte gUnknown_83FDBEF +_080E84FC: .4byte gUnknown_202298C +_080E8500: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _080E855E + movs r0, 0x82 + negs r0, r0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 + bl sub_8070588 +_080E851E: + ldr r0, _080E852C @ =gUnknown_2023FE8 + ldr r1, [r0] +_080E8522: + adds r1, 0x94 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080E855E + .align 2, 0 +_080E852C: .4byte gUnknown_2023FE8 +_080E8530: + ldr r0, _080E8568 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080E855E + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80EF0E0 + bl sub_80EB524 + ldr r0, _080E856C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x94 + strb r4, [r0] + bl sub_80E8A9C +_080E855E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E8568: .4byte gUnknown_2037AB8 +_080E856C: .4byte gUnknown_2023FE8 + thumb_func_end sub_80E835C + + thumb_func_start sub_80E8570 +sub_80E8570: @ 80E8570 + push {lr} + ldr r0, _080E8580 @ =gUnknown_83FDC58 + movs r1, 0x1 + bl sub_80E85D4 + pop {r0} + bx r0 + .align 2, 0 +_080E8580: .4byte gUnknown_83FDC58 + thumb_func_end sub_80E8570 + + thumb_func_start sub_80E8584 +sub_80E8584: @ 80E8584 + push {lr} + ldr r0, _080E8594 @ =gUnknown_83FDC95 + movs r1, 0x40 + bl sub_80E85D4 + pop {r0} + bx r0 + .align 2, 0 +_080E8594: .4byte gUnknown_83FDC95 + thumb_func_end sub_80E8584 + + thumb_func_start sub_80E8598 +sub_80E8598: @ 80E8598 + push {lr} + ldr r0, _080E85A8 @ =gUnknown_83FDD23 + movs r1, 0x1 + bl sub_80E85D4 + pop {r0} + bx r0 + .align 2, 0 +_080E85A8: .4byte gUnknown_83FDD23 + thumb_func_end sub_80E8598 + + thumb_func_start sub_80E85AC +sub_80E85AC: @ 80E85AC + push {lr} + ldr r0, _080E85BC @ =gUnknown_83FDD64 + movs r1, 0x40 + bl sub_80E85D4 + pop {r0} + bx r0 + .align 2, 0 +_080E85BC: .4byte gUnknown_83FDD64 + thumb_func_end sub_80E85AC + + thumb_func_start sub_80E85C0 +sub_80E85C0: @ 80E85C0 + push {lr} + ldr r0, _080E85D0 @ =gUnknown_83FDDEB + movs r1, 0x40 + bl sub_80E85D4 + pop {r0} + bx r0 + .align 2, 0 +_080E85D0: .4byte gUnknown_83FDDEB + thumb_func_end sub_80E85C0 + + thumb_func_start sub_80E85D4 +sub_80E85D4: @ 80E85D4 + push {r4,r5,lr} + sub sp, 0x4 + adds r2, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r1, _080E85F8 @ =gUnknown_2023FE8 + ldr r0, [r1] + adds r0, 0x94 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0x5 + bls _080E85EE + b _080E86F2 +_080E85EE: + lsls r0, 2 + ldr r1, _080E85FC @ =_080E8600 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E85F8: .4byte gUnknown_2023FE8 +_080E85FC: .4byte _080E8600 + .align 2, 0 +_080E8600: + .4byte _080E8618 + .4byte _080E8634 + .4byte _080E865A + .4byte _080E8670 + .4byte _080E8684 + .4byte _080E86B4 +_080E8618: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080E86F2 + ldr r1, _080E8630 @ =gUnknown_2023FE8 + ldr r0, [r1] + adds r0, 0x97 + strb r4, [r0] + ldr r1, [r1] + b _080E86A6 + .align 2, 0 +_080E8630: .4byte gUnknown_2023FE8 +_080E8634: + ldr r1, [r5] + adds r1, 0x97 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080E86F2 + movs r0, 0x82 + negs r0, r0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + bl sub_8070588 + ldr r1, [r5] + b _080E86A6 +_080E865A: + ldr r0, _080E866C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E86F2 + bl sub_80EB30C + b _080E86A2 + .align 2, 0 +_080E866C: .4byte gUnknown_2037AB8 +_080E8670: + adds r0, r2, 0 + bl sub_80D77F4 + ldr r0, _080E8680 @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _080E86A2 + .align 2, 0 +_080E8680: .4byte gUnknown_202298C +_080E8684: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _080E86F2 + movs r0, 0x82 + negs r0, r0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 + bl sub_8070588 +_080E86A2: + ldr r0, _080E86B0 @ =gUnknown_2023FE8 + ldr r1, [r0] +_080E86A6: + adds r1, 0x94 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080E86F2 + .align 2, 0 +_080E86B0: .4byte gUnknown_2023FE8 +_080E86B4: + ldr r0, _080E86D8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E86F2 + bl sub_80EB524 + ldr r0, _080E86DC @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080E86E0 + bl sub_80E8A9C + b _080E86E4 + .align 2, 0 +_080E86D8: .4byte gUnknown_2037AB8 +_080E86DC: .4byte gUnknown_2023BC4 +_080E86E0: + bl sub_8036530 +_080E86E4: + ldr r0, _080E86FC @ =gUnknown_2023E82 + movs r1, 0 + strb r1, [r0, 0x7] + ldr r0, _080E8700 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x94 + strb r1, [r0] +_080E86F2: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E86FC: .4byte gUnknown_2023E82 +_080E8700: .4byte gUnknown_2023FE8 + thumb_func_end sub_80E85D4 + + thumb_func_start sub_80E8704 +sub_80E8704: @ 80E8704 + push {r4,r5,lr} + sub sp, 0x4 + ldr r1, _080E8724 @ =gUnknown_2023FE8 + ldr r0, [r1] + adds r0, 0x94 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0x6 + bls _080E8718 + b _080E88AA +_080E8718: + lsls r0, 2 + ldr r1, _080E8728 @ =_080E872C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E8724: .4byte gUnknown_2023FE8 +_080E8728: .4byte _080E872C + .align 2, 0 +_080E872C: + .4byte _080E8748 + .4byte _080E8788 + .4byte _080E87D0 + .4byte _080E87E8 + .4byte _080E8800 + .4byte _080E8848 + .4byte _080E8880 +_080E8748: + ldr r0, _080E8780 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080E875A + b _080E88AA +_080E875A: + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x95 + adds r1, 0x97 + ldr r2, _080E8784 @ =gUnknown_2023BC4 + ldrb r2, [r2] + bl sub_80EEFC8 + movs r0, 0x82 + negs r0, r0 + str r4, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + bl sub_8070588 + ldr r1, [r5] + b _080E886C + .align 2, 0 +_080E8780: .4byte gUnknown_2037AB8 +_080E8784: .4byte gUnknown_2023BC4 +_080E8788: + ldr r0, _080E87C8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _080E879A + b _080E88AA +_080E879A: + ldr r2, _080E87CC @ =gUnknown_825E45C + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x95 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + adds r0, 0x97 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + lsls r0, r1, 16 + str r3, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 + bl sub_8070588 + ldr r1, [r5] + b _080E886C + .align 2, 0 +_080E87C8: .4byte gUnknown_2037AB8 +_080E87CC: .4byte gUnknown_825E45C +_080E87D0: + ldr r0, _080E87E4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E88AA + bl sub_80EB30C + b _080E8868 + .align 2, 0 +_080E87E4: .4byte gUnknown_2037AB8 +_080E87E8: + ldr r0, _080E87F8 @ =gUnknown_83FDCD2 + bl sub_80D77F4 + ldr r0, _080E87FC @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _080E8868 + .align 2, 0 +_080E87F8: .4byte gUnknown_83FDCD2 +_080E87FC: .4byte gUnknown_202298C +_080E8800: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + bne _080E88AA + ldr r2, _080E8840 @ =gUnknown_825E45C + ldr r4, _080E8844 @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x95 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + adds r0, 0x97 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + lsls r0, r1, 16 + str r3, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + bl sub_8070588 + ldr r1, [r4] + b _080E886C + .align 2, 0 +_080E8840: .4byte gUnknown_825E45C +_080E8844: .4byte gUnknown_2023FE8 +_080E8848: + ldr r0, _080E8878 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080E88AA + movs r0, 0x82 + negs r0, r0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 + bl sub_8070588 +_080E8868: + ldr r0, _080E887C @ =gUnknown_2023FE8 + ldr r1, [r0] +_080E886C: + adds r1, 0x94 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080E88AA + .align 2, 0 +_080E8878: .4byte gUnknown_2037AB8 +_080E887C: .4byte gUnknown_2023FE8 +_080E8880: + ldr r0, _080E88B4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080E88AA + bl sub_80EB524 + ldr r0, _080E88B8 @ =gUnknown_203AD30 + ldrh r1, [r0] + movs r0, 0x1 + bl sub_800E8AC + bl sub_80E8A9C + ldr r0, _080E88BC @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x94 + strb r4, [r0] +_080E88AA: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E88B4: .4byte gUnknown_2037AB8 +_080E88B8: .4byte gUnknown_203AD30 +_080E88BC: .4byte gUnknown_2023FE8 + thumb_func_end sub_80E8704 + + thumb_func_start sub_80E88C0 +sub_80E88C0: @ 80E88C0 + push {r4-r6,lr} + ldr r5, _080E8900 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r6, _080E8904 @ =gUnknown_3004FF0 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + bl sub_80481D4 + lsls r4, 16 + asrs r1, r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080E8908 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + movs r2, 0 + bl sub_8048440 + b _080E8922 + .align 2, 0 +_080E8900: .4byte gUnknown_2023BC4 +_080E8904: .4byte gUnknown_3004FF0 +_080E8908: + ldr r2, _080E8928 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080E892C @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + bl sub_80E8A9C +_080E8922: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E8928: .4byte gUnknown_2023BCE +_080E892C: .4byte gUnknown_2024284 + thumb_func_end sub_80E88C0 + + thumb_func_start sub_80E8930 +sub_80E8930: @ 80E8930 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080E8942 + bl sub_80E8A9C +_080E8942: + pop {r0} + bx r0 + thumb_func_end sub_80E8930 + + thumb_func_start sub_80E8948 +sub_80E8948: @ 80E8948 + push {r4,lr} + ldr r1, _080E8984 @ =gUnknown_2023D44 + ldr r0, _080E8988 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _080E898C @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x20 + bne _080E8994 + movs r3, 0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + ldr r0, _080E8990 @ =gUnknown_2024005 + strb r3, [r0] + bl sub_80E8A9C + b _080E89BE + .align 2, 0 +_080E8984: .4byte gUnknown_2023D44 +_080E8988: .4byte gUnknown_2023BC4 +_080E898C: .4byte gUnknown_202063C +_080E8990: .4byte gUnknown_2024005 +_080E8994: + ldrh r0, [r4, 0x30] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _080E89B8 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080E89B8: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_080E89BE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E8948 + + thumb_func_start sub_80E89C4 +sub_80E89C4: @ 80E89C4 + push {r4-r6,lr} + ldr r0, _080E8A20 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _080E8A24 @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080E8A18 + ldr r5, _080E8A28 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080E8A2C @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _080E8A30 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_80E8A9C +_080E8A18: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E8A20: .4byte gUnknown_2024018 +_080E8A24: .4byte gUnknown_2023BC4 +_080E8A28: .4byte gUnknown_2023D44 +_080E8A2C: .4byte gUnknown_202063C +_080E8A30: .4byte gUnknown_3004FF0 + thumb_func_end sub_80E89C4 + + thumb_func_start sub_80E8A34 +sub_80E8A34: @ 80E8A34 + push {lr} + ldr r2, _080E8A5C @ =gUnknown_202063C + ldr r1, _080E8A60 @ =gUnknown_2023D44 + ldr r0, _080E8A64 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080E8A68 @ =nullsub_8 + cmp r1, r0 + bne _080E8A58 + bl sub_80E8A9C +_080E8A58: + pop {r0} + bx r0 + .align 2, 0 +_080E8A5C: .4byte gUnknown_202063C +_080E8A60: .4byte gUnknown_2023D44 +_080E8A64: .4byte gUnknown_2023BC4 +_080E8A68: .4byte nullsub_8 + thumb_func_end sub_80E8A34 + + thumb_func_start sub_80E8A6C +sub_80E8A6C: @ 80E8A6C + push {lr} + ldr r0, _080E8A94 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080E8A98 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080E8A8E + bl sub_80E8A9C +_080E8A8E: + pop {r0} + bx r0 + .align 2, 0 +_080E8A94: .4byte gUnknown_2024018 +_080E8A98: .4byte gUnknown_2023BC4 + thumb_func_end sub_80E8A6C + + thumb_func_start sub_80E8A9C +sub_80E8A9C: @ 80E8A9C + push {r4,lr} + sub sp, 0x4 + ldr r1, _080E8ADC @ =gUnknown_3004FE0 + ldr r4, _080E8AE0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E8AE4 @ =sub_80E75EC + str r1, [r0] + ldr r0, _080E8AE8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E8AF0 + bl sub_800A404 + mov r1, sp + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + mov r2, sp + bl sub_800D9EC + ldr r1, _080E8AEC @ =gUnknown_2022BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r1 + movs r1, 0x38 + strb r1, [r0] + b _080E8B02 + .align 2, 0 +_080E8ADC: .4byte gUnknown_3004FE0 +_080E8AE0: .4byte gUnknown_2023BC4 +_080E8AE4: .4byte sub_80E75EC +_080E8AE8: .4byte gUnknown_2022B4C +_080E8AEC: .4byte gUnknown_2022BC4 +_080E8AF0: + ldr r2, _080E8B0C @ =gUnknown_2023BC8 + ldr r1, _080E8B10 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_080E8B02: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E8B0C: .4byte gUnknown_2023BC8 +_080E8B10: .4byte gUnknown_825E45C + thumb_func_end sub_80E8A9C + + thumb_func_start sub_80E8B14 +sub_80E8B14: @ 80E8B14 + push {lr} + ldr r0, _080E8B3C @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080E8B40 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080E8B36 + bl sub_80E8A9C +_080E8B36: + pop {r0} + bx r0 + .align 2, 0 +_080E8B3C: .4byte gUnknown_2024018 +_080E8B40: .4byte gUnknown_2023BC4 + thumb_func_end sub_80E8B14 + + thumb_func_start sub_80E8B44 +sub_80E8B44: @ 80E8B44 + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _080E8B70 @ =gUnknown_2022BC4 + ldr r0, _080E8B74 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080E8B7C + ldr r0, _080E8B78 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_80E8BB8 + adds r6, r0, 0 + b _080E8B9E + .align 2, 0 +_080E8B70: .4byte gUnknown_2022BC4 +_080E8B74: .4byte gUnknown_2023BC4 +_080E8B78: .4byte gUnknown_2023BCE +_080E8B7C: + ldrb r4, [r1] + movs r5, 0 +_080E8B80: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080E8B96 + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl sub_80E8BB8 + adds r6, r0 +_080E8B96: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _080E8B80 +_080E8B9E: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl sub_800E708 + bl sub_80E8A9C + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E8B44 + + thumb_func_start sub_80E8BB8 +sub_80E8BB8: @ 80E8BB8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x90 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _080E8BEC @ =gUnknown_2022BC4 + ldr r3, _080E8BF0 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _080E8BE2 + bl _080E934E +_080E8BE2: + lsls r0, 2 + ldr r1, _080E8BF4 @ =_080E8BF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E8BEC: .4byte gUnknown_2022BC4 +_080E8BF0: .4byte gUnknown_2023BC4 +_080E8BF4: .4byte _080E8BF8 + .align 2, 0 +_080E8BF8: + .4byte _080E8CE8 + .4byte _080E8F0C + .4byte _080E8F1C + .4byte _080E8F2C + .4byte _080E8F94 + .4byte _080E8F94 + .4byte _080E8F94 + .4byte _080E8F94 + .4byte _080E8FB0 + .4byte _080E8FEC + .4byte _080E8FEC + .4byte _080E8FEC + .4byte _080E8FEC + .4byte _080E934E + .4byte _080E934E + .4byte _080E934E + .4byte _080E934E + .4byte _080E9008 + .4byte _080E9018 + .4byte _080E9048 + .4byte _080E9058 + .4byte _080E9068 + .4byte _080E9078 + .4byte _080E9088 + .4byte _080E9098 + .4byte _080E90A8 + .4byte _080E90B8 + .4byte _080E90C8 + .4byte _080E90D8 + .4byte _080E90E8 + .4byte _080E90F8 + .4byte _080E9108 + .4byte _080E9158 + .4byte _080E9168 + .4byte _080E9178 + .4byte _080E9188 + .4byte _080E9198 + .4byte _080E91A8 + .4byte _080E91B8 + .4byte _080E91C8 + .4byte _080E91D8 + .4byte _080E920C + .4byte _080E921C + .4byte _080E922C + .4byte _080E923C + .4byte _080E924C + .4byte _080E925C + .4byte _080E926C + .4byte _080E927C + .4byte _080E929C + .4byte _080E92AC + .4byte _080E92BC + .4byte _080E92CC + .4byte _080E92DC + .4byte _080E92EC + .4byte _080E92FC + .4byte _080E930C + .4byte _080E931C + .4byte _080E932C + .4byte _080E933C +_080E8CE8: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E8EFC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2E] + movs r6, 0 + add r0, sp, 0x24 + mov r9, r0 + movs r1, 0x3B + add r1, sp + mov r10, r1 + mov r2, sp + adds r2, 0x2B + str r2, [sp, 0x80] + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x8C] + adds r2, 0x5 + str r2, [sp, 0x84] + adds r0, 0x12 + str r0, [sp, 0x88] + mov r8, r4 + add r4, sp, 0xC +_080E8D34: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + bl sub_803FBE8 + strh r0, [r4] + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + bl sub_803FBE8 + mov r2, r9 + adds r1, r2, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _080E8D34 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E8EFC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r10 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + ldr r2, [sp, 0x80] + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x44] + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + mov r3, sp + movs r5, 0x1F + ands r0, r5 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r3, sp + movs r6, 0x1F + ands r0, r6 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _080E8F00 @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _080E8F04 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + mov r3, sp + ands r0, r6 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _080E8F08 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x48] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + str r0, [sp, 0x4C] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x54] + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, [sp, 0x8C] + bl sub_803FBE8 + ldr r0, [sp, 0x84] + ldr r1, [sp, 0x8C] + bl sub_8008CF4 + adds r0, r4, 0 + movs r1, 0x7 + ldr r2, [sp, 0x88] + bl sub_803FBE8 + mov r2, sp + movs r6, 0 +_080E8EEC: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0x57 + bls _080E8EEC + b _080E934E + .align 2, 0 +_080E8EFC: .4byte gUnknown_2024284 +_080E8F00: .4byte 0xfffffc1f +_080E8F04: .4byte 0xfff07fff +_080E8F08: .4byte 0xfffffe0f +_080E8F0C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E8F18 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + b _080E9286 + .align 2, 0 +_080E8F18: .4byte gUnknown_2024284 +_080E8F1C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E8F28 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + b _080E9286 + .align 2, 0 +_080E8F28: .4byte gUnknown_2024284 +_080E8F2C: + movs r6, 0 + add r2, sp, 0x58 + mov r9, r2 + add r0, sp, 0x60 + mov r10, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080E8F90 @ =gUnknown_2024284 + adds r4, r1, r0 + mov r8, r9 +_080E8F42: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r4, 0 + bl sub_803FBE8 + mov r2, r10 + adds r1, r2, r6 + strb r0, [r1] + movs r0, 0x2 + add r8, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _080E8F42 + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E8F90 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1, 0xC] + mov r2, r9 + movs r6, 0 +_080E8F80: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0xF + bls _080E8F80 + b _080E934E + .align 2, 0 +_080E8F90: .4byte gUnknown_2024284 +_080E8F94: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E8FAC @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x9 + b _080E9286 + .align 2, 0 +_080E8FAC: .4byte gUnknown_2024284 +_080E8FB0: + movs r6, 0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r2, _080E8FE8 @ =gUnknown_2024284 + mov r8, r2 +_080E8FBC: + adds r1, r6, 0 + adds r1, 0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x3 + ble _080E8FBC + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E8FE8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + b _080E934E + .align 2, 0 +_080E8FE8: .4byte gUnknown_2024284 +_080E8FEC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9004 @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x8 + b _080E9346 + .align 2, 0 +_080E9004: .4byte gUnknown_2024284 +_080E9008: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9014 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1 + b _080E9022 + .align 2, 0 +_080E9014: .4byte gUnknown_2024284 +_080E9018: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9044 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x19 +_080E9022: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r6, 0x3 + b _080E934E + .align 2, 0 +_080E9044: .4byte gUnknown_2024284 +_080E9048: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9054 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1A + b _080E9346 + .align 2, 0 +_080E9054: .4byte gUnknown_2024284 +_080E9058: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9064 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1B + b _080E9346 + .align 2, 0 +_080E9064: .4byte gUnknown_2024284 +_080E9068: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9074 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1C + b _080E9346 + .align 2, 0 +_080E9074: .4byte gUnknown_2024284 +_080E9078: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9084 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1D + b _080E9346 + .align 2, 0 +_080E9084: .4byte gUnknown_2024284 +_080E9088: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9094 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1E + b _080E9346 + .align 2, 0 +_080E9094: .4byte gUnknown_2024284 +_080E9098: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E90A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1F + b _080E9346 + .align 2, 0 +_080E90A4: .4byte gUnknown_2024284 +_080E90A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E90B4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x20 + b _080E9346 + .align 2, 0 +_080E90B4: .4byte gUnknown_2024284 +_080E90B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E90C4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x22 + b _080E9346 + .align 2, 0 +_080E90C4: .4byte gUnknown_2024284 +_080E90C8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E90D4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x23 + b _080E9346 + .align 2, 0 +_080E90D4: .4byte gUnknown_2024284 +_080E90D8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E90E4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x24 + b _080E9346 + .align 2, 0 +_080E90E4: .4byte gUnknown_2024284 +_080E90E8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E90F4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x25 + b _080E9346 + .align 2, 0 +_080E90F4: .4byte gUnknown_2024284 +_080E90F8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9104 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x26 + b _080E9346 + .align 2, 0 +_080E9104: .4byte gUnknown_2024284 +_080E9108: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E9154 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + strb r0, [r7, 0x1] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + strb r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + strb r0, [r7, 0x3] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + strb r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + strb r0, [r7, 0x5] + movs r6, 0x6 + b _080E934E + .align 2, 0 +_080E9154: .4byte gUnknown_2024284 +_080E9158: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9164 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x27 + b _080E9346 + .align 2, 0 +_080E9164: .4byte gUnknown_2024284 +_080E9168: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9174 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x28 + b _080E9346 + .align 2, 0 +_080E9174: .4byte gUnknown_2024284 +_080E9178: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9184 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x29 + b _080E9346 + .align 2, 0 +_080E9184: .4byte gUnknown_2024284 +_080E9188: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9194 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2A + b _080E9346 + .align 2, 0 +_080E9194: .4byte gUnknown_2024284 +_080E9198: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E91A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2B + b _080E9346 + .align 2, 0 +_080E91A4: .4byte gUnknown_2024284 +_080E91A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E91B4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2C + b _080E9346 + .align 2, 0 +_080E91B4: .4byte gUnknown_2024284 +_080E91B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E91C4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + b _080E91E2 + .align 2, 0 +_080E91C4: .4byte gUnknown_2024284 +_080E91C8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E91D4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x9 + b _080E9286 + .align 2, 0 +_080E91D4: .4byte gUnknown_2024284 +_080E91D8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9208 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x37 +_080E91E2: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r6, 0x4 + b _080E934E + .align 2, 0 +_080E9208: .4byte gUnknown_2024284 +_080E920C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9218 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + b _080E9346 + .align 2, 0 +_080E9218: .4byte gUnknown_2024284 +_080E921C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9228 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + b _080E9286 + .align 2, 0 +_080E9228: .4byte gUnknown_2024284 +_080E922C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9238 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + b _080E9286 + .align 2, 0 +_080E9238: .4byte gUnknown_2024284 +_080E923C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9248 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3B + b _080E9286 + .align 2, 0 +_080E9248: .4byte gUnknown_2024284 +_080E924C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9258 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3C + b _080E9286 + .align 2, 0 +_080E9258: .4byte gUnknown_2024284 +_080E925C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9268 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3D + b _080E9286 + .align 2, 0 +_080E9268: .4byte gUnknown_2024284 +_080E926C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9278 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3E + b _080E9286 + .align 2, 0 +_080E9278: .4byte gUnknown_2024284 +_080E927C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9298 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3F +_080E9286: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r6, 0x2 + b _080E934E + .align 2, 0 +_080E9298: .4byte gUnknown_2024284 +_080E929C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E92A8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x16 + b _080E9346 + .align 2, 0 +_080E92A8: .4byte gUnknown_2024284 +_080E92AC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E92B8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x17 + b _080E9346 + .align 2, 0 +_080E92B8: .4byte gUnknown_2024284 +_080E92BC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E92C8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x18 + b _080E9346 + .align 2, 0 +_080E92C8: .4byte gUnknown_2024284 +_080E92CC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E92D8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x21 + b _080E9346 + .align 2, 0 +_080E92D8: .4byte gUnknown_2024284 +_080E92DC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E92E8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2F + b _080E9346 + .align 2, 0 +_080E92E8: .4byte gUnknown_2024284 +_080E92EC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E92F8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x30 + b _080E9346 + .align 2, 0 +_080E92F8: .4byte gUnknown_2024284 +_080E92FC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9308 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x32 + b _080E9346 + .align 2, 0 +_080E9308: .4byte gUnknown_2024284 +_080E930C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9318 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x33 + b _080E9346 + .align 2, 0 +_080E9318: .4byte gUnknown_2024284 +_080E931C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9328 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x34 + b _080E9346 + .align 2, 0 +_080E9328: .4byte gUnknown_2024284 +_080E932C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9338 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x35 + b _080E9346 + .align 2, 0 +_080E9338: .4byte gUnknown_2024284 +_080E933C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9360 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x36 +_080E9346: + bl sub_803FBE8 + strb r0, [r7] + movs r6, 0x1 +_080E934E: + adds r0, r6, 0 + add sp, 0x90 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080E9360: .4byte gUnknown_2024284 + thumb_func_end sub_80E8BB8 + + thumb_func_start sub_80E9364 +sub_80E9364: @ 80E9364 + push {lr} + bl sub_80313B0 + pop {r0} + bx r0 + thumb_func_end sub_80E9364 + + thumb_func_start sub_80E9370 +sub_80E9370: @ 80E9370 + push {r4,r5,lr} + ldr r1, _080E9394 @ =gUnknown_2022BC4 + ldr r0, _080E9398 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080E93A0 + ldr r0, _080E939C @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_80E93C8 + b _080E93BE + .align 2, 0 +_080E9394: .4byte gUnknown_2022BC4 +_080E9398: .4byte gUnknown_2023BC4 +_080E939C: .4byte gUnknown_2023BCE +_080E93A0: + ldrb r4, [r1] + movs r5, 0 +_080E93A4: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080E93B2 + adds r0, r5, 0 + bl sub_80E93C8 +_080E93B2: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080E93A4 +_080E93BE: + bl sub_80E8A9C + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E9370 + + thumb_func_start sub_80E93C8 +sub_80E93C8: @ 80E93C8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080E9400 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + ldr r2, _080E9404 @ =gUnknown_2022BC7 + adds r3, r0, r2 + adds r6, r3, 0 + subs r1, r2, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r7, r2, 0 + cmp r0, 0x3B + bls _080E93F4 + bl _080E9D8E +_080E93F4: + lsls r0, 2 + ldr r1, _080E9408 @ =_080E940C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E9400: .4byte gUnknown_2023BC4 +_080E9404: .4byte gUnknown_2022BC7 +_080E9408: .4byte _080E940C + .align 2, 0 +_080E940C: + .4byte _080E94FC + .4byte _080E9694 + .4byte _080E96B4 + .4byte _080E96D4 + .4byte _080E972C + .4byte _080E972C + .4byte _080E972C + .4byte _080E972C + .4byte _080E9754 + .4byte _080E97B8 + .4byte _080E97B8 + .4byte _080E97B8 + .4byte _080E97B8 + .4byte _080E9D8E + .4byte _080E9D8E + .4byte _080E9D8E + .4byte _080E9D8E + .4byte _080E97E8 + .4byte _080E9808 + .4byte _080E9828 + .4byte _080E9848 + .4byte _080E9868 + .4byte _080E9888 + .4byte _080E98A8 + .4byte _080E98C8 + .4byte _080E98E8 + .4byte _080E9908 + .4byte _080E9928 + .4byte _080E9948 + .4byte _080E9968 + .4byte _080E9988 + .4byte _080E99A8 + .4byte _080E9A18 + .4byte _080E9A38 + .4byte _080E9A58 + .4byte _080E9A78 + .4byte _080E9A98 + .4byte _080E9AB8 + .4byte _080E9AD8 + .4byte _080E9AF8 + .4byte _080E9B18 + .4byte _080E9B38 + .4byte _080E9B58 + .4byte _080E9B78 + .4byte _080E9B98 + .4byte _080E9BB8 + .4byte _080E9BD8 + .4byte _080E9BF8 + .4byte _080E9C18 + .4byte _080E9C38 + .4byte _080E9C58 + .4byte _080E9C78 + .4byte _080E9C98 + .4byte _080E9CB8 + .4byte _080E9CD8 + .4byte _080E9CF8 + .4byte _080E9D18 + .4byte _080E9D38 + .4byte _080E9D58 + .4byte _080E9D78 +_080E94FC: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E9690 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + adds r2, r6, 0 + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x2E + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + movs r0, 0 + mov r8, r0 + movs r0, 0x3B + adds r0, r6 + mov r10, r0 + adds r0, r6, 0 + adds r0, 0x2B + str r0, [sp, 0x20] + adds r0, 0x19 + str r0, [sp, 0x28] + adds r0, 0x4 + str r0, [sp, 0x2C] + adds r0, 0x4 + str r0, [sp, 0x30] + subs r0, 0x22 + str r0, [sp, 0x1C] + subs r0, 0x2 + str r0, [sp, 0x18] + adds r0, 0x4 + str r0, [sp, 0x24] + adds r0, r6, 0x2 + str r0, [sp, 0x4] + adds r0, r6, 0x4 + str r0, [sp, 0x8] + adds r0, r6, 0x6 + str r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x14] + mov r9, r4 + adds r7, r6, 0 + adds r7, 0x24 + adds r4, r6, 0 + adds r4, 0xC +_080E9562: + mov r1, r8 + adds r1, 0xD + mov r0, r9 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + mov r0, r9 + adds r2, r7, 0 + bl sub_804037C + adds r7, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _080E9562 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E9690 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + mov r2, r10 + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x20 + ldr r2, [sp, 0x20] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x19 + ldr r2, [sp, 0x28] + bl sub_804037C + ldrb r0, [r6, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r6, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x28 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r6, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x29 + mov r2, sp + bl sub_804037C + mov r1, sp + ldr r0, [r6, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2A + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r6, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2B + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r6, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0 + ldr r2, [sp, 0x2C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x37 + ldr r2, [sp, 0x30] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x38 + ldr r2, [sp, 0x1C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + ldr r2, [sp, 0x18] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + ldr r2, [sp, 0x24] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3B + ldr r2, [sp, 0x4] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + ldr r2, [sp, 0x8] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + ldr r2, [sp, 0xC] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + ldr r2, [sp, 0x10] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + ldr r2, [sp, 0x14] + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9690: .4byte gUnknown_2024284 +_080E9694: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E96AC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E96B0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0xB + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E96AC: .4byte gUnknown_2024284 +_080E96B0: .4byte gUnknown_2023BC4 +_080E96B4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E96CC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E96D0 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0xC + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E96CC: .4byte gUnknown_2024284 +_080E96D0: .4byte gUnknown_2023BC4 +_080E96D4: + movs r0, 0 + mov r8, r0 + movs r0, 0xC + adds r0, r3 + mov r9, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080E9728 @ =gUnknown_2024284 + adds r7, r1, r0 + adds r6, r3, 0 + adds r6, 0x8 + adds r4, r3, 0 +_080E96EE: + mov r1, r8 + adds r1, 0xD + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + adds r0, r7, 0 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _080E96EE + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9728 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9728: .4byte gUnknown_2024284 +_080E972C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9748 @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _080E974C @ =gUnknown_2022BC4 + ldr r1, _080E9750 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x9 + b _080E97D0 + .align 2, 0 +_080E9748: .4byte gUnknown_2024284 +_080E974C: .4byte gUnknown_2022BC4 +_080E9750: .4byte gUnknown_2023BC4 +_080E9754: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E97B0 @ =gUnknown_2024284 + adds r4, r0 + ldr r5, _080E97B4 @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + adds r2, r7 + adds r0, r4, 0 + movs r1, 0x11 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x12 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x13 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x14 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E97B0: .4byte gUnknown_2024284 +_080E97B4: .4byte gUnknown_2023BC4 +_080E97B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E97DC @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _080E97E0 @ =gUnknown_2022BC4 + ldr r1, _080E97E4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x8 +_080E97D0: + adds r3, 0x3 + adds r2, r3 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E97DC: .4byte gUnknown_2024284 +_080E97E0: .4byte gUnknown_2022BC4 +_080E97E4: .4byte gUnknown_2023BC4 +_080E97E8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9800 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9804 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9800: .4byte gUnknown_2024284 +_080E9804: .4byte gUnknown_2023BC4 +_080E9808: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9820 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9824 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x19 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9820: .4byte gUnknown_2024284 +_080E9824: .4byte gUnknown_2023BC4 +_080E9828: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9840 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9844 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1A + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9840: .4byte gUnknown_2024284 +_080E9844: .4byte gUnknown_2023BC4 +_080E9848: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9860 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9864 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1B + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9860: .4byte gUnknown_2024284 +_080E9864: .4byte gUnknown_2023BC4 +_080E9868: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9880 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9884 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1C + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9880: .4byte gUnknown_2024284 +_080E9884: .4byte gUnknown_2023BC4 +_080E9888: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E98A0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E98A4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1D + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E98A0: .4byte gUnknown_2024284 +_080E98A4: .4byte gUnknown_2023BC4 +_080E98A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E98C0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E98C4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1E + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E98C0: .4byte gUnknown_2024284 +_080E98C4: .4byte gUnknown_2023BC4 +_080E98C8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E98E0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E98E4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1F + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E98E0: .4byte gUnknown_2024284 +_080E98E4: .4byte gUnknown_2023BC4 +_080E98E8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9900 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9904 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x20 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9900: .4byte gUnknown_2024284 +_080E9904: .4byte gUnknown_2023BC4 +_080E9908: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9920 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9924 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x22 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9920: .4byte gUnknown_2024284 +_080E9924: .4byte gUnknown_2023BC4 +_080E9928: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9940 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9944 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x23 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9940: .4byte gUnknown_2024284 +_080E9944: .4byte gUnknown_2023BC4 +_080E9948: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9960 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9964 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x24 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9960: .4byte gUnknown_2024284 +_080E9964: .4byte gUnknown_2023BC4 +_080E9968: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9980 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9984 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x25 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9980: .4byte gUnknown_2024284 +_080E9984: .4byte gUnknown_2023BC4 +_080E9988: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E99A0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E99A4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x26 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E99A0: .4byte gUnknown_2024284 +_080E99A4: .4byte gUnknown_2023BC4 +_080E99A8: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E9A10 @ =gUnknown_2024284 + adds r4, r0 + ldr r5, _080E9A14 @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + adds r2, r7 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x28 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x29 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2A + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2B + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x5 + adds r2, r0 + adds r0, r4, 0 + b _080E9AC8 + .align 2, 0 +_080E9A10: .4byte gUnknown_2024284 +_080E9A14: .4byte gUnknown_2023BC4 +_080E9A18: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9A30 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9A34 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x27 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9A30: .4byte gUnknown_2024284 +_080E9A34: .4byte gUnknown_2023BC4 +_080E9A38: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9A50 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9A54 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x28 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9A50: .4byte gUnknown_2024284 +_080E9A54: .4byte gUnknown_2023BC4 +_080E9A58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9A70 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9A74 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x29 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9A70: .4byte gUnknown_2024284 +_080E9A74: .4byte gUnknown_2023BC4 +_080E9A78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9A90 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9A94 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2A + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9A90: .4byte gUnknown_2024284 +_080E9A94: .4byte gUnknown_2023BC4 +_080E9A98: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9AB0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9AB4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2B + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9AB0: .4byte gUnknown_2024284 +_080E9AB4: .4byte gUnknown_2023BC4 +_080E9AB8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9AD0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9AD4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 +_080E9AC8: + movs r1, 0x2C + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9AD0: .4byte gUnknown_2024284 +_080E9AD4: .4byte gUnknown_2023BC4 +_080E9AD8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9AF0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9AF4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9AF0: .4byte gUnknown_2024284 +_080E9AF4: .4byte gUnknown_2023BC4 +_080E9AF8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9B10 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9B14 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x9 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9B10: .4byte gUnknown_2024284 +_080E9B14: .4byte gUnknown_2023BC4 +_080E9B18: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9B30 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9B34 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x37 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9B30: .4byte gUnknown_2024284 +_080E9B34: .4byte gUnknown_2023BC4 +_080E9B38: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9B50 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9B54 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x38 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9B50: .4byte gUnknown_2024284 +_080E9B54: .4byte gUnknown_2023BC4 +_080E9B58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9B70 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9B74 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x39 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9B70: .4byte gUnknown_2024284 +_080E9B74: .4byte gUnknown_2023BC4 +_080E9B78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9B90 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9B94 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3A + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9B90: .4byte gUnknown_2024284 +_080E9B94: .4byte gUnknown_2023BC4 +_080E9B98: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9BB0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9BB4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3B + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9BB0: .4byte gUnknown_2024284 +_080E9BB4: .4byte gUnknown_2023BC4 +_080E9BB8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9BD0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9BD4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3C + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9BD0: .4byte gUnknown_2024284 +_080E9BD4: .4byte gUnknown_2023BC4 +_080E9BD8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9BF0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9BF4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3D + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9BF0: .4byte gUnknown_2024284 +_080E9BF4: .4byte gUnknown_2023BC4 +_080E9BF8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9C10 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9C14 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3E + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9C10: .4byte gUnknown_2024284 +_080E9C14: .4byte gUnknown_2023BC4 +_080E9C18: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9C30 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9C34 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3F + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9C30: .4byte gUnknown_2024284 +_080E9C34: .4byte gUnknown_2023BC4 +_080E9C38: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9C50 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9C54 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x16 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9C50: .4byte gUnknown_2024284 +_080E9C54: .4byte gUnknown_2023BC4 +_080E9C58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9C70 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9C74 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x17 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9C70: .4byte gUnknown_2024284 +_080E9C74: .4byte gUnknown_2023BC4 +_080E9C78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9C90 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9C94 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x18 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9C90: .4byte gUnknown_2024284 +_080E9C94: .4byte gUnknown_2023BC4 +_080E9C98: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9CB0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9CB4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x21 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9CB0: .4byte gUnknown_2024284 +_080E9CB4: .4byte gUnknown_2023BC4 +_080E9CB8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9CD0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9CD4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2F + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9CD0: .4byte gUnknown_2024284 +_080E9CD4: .4byte gUnknown_2023BC4 +_080E9CD8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9CF0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9CF4 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x30 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9CF0: .4byte gUnknown_2024284 +_080E9CF4: .4byte gUnknown_2023BC4 +_080E9CF8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9D10 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9D14 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x32 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9D10: .4byte gUnknown_2024284 +_080E9D14: .4byte gUnknown_2023BC4 +_080E9D18: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9D30 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9D34 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x33 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9D30: .4byte gUnknown_2024284 +_080E9D34: .4byte gUnknown_2023BC4 +_080E9D38: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9D50 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9D54 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x34 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9D50: .4byte gUnknown_2024284 +_080E9D54: .4byte gUnknown_2023BC4 +_080E9D58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9D70 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9D74 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x35 + bl sub_804037C + b _080E9D8E + .align 2, 0 +_080E9D70: .4byte gUnknown_2024284 +_080E9D74: .4byte gUnknown_2023BC4 +_080E9D78: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E9DB8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E9DBC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x36 + bl sub_804037C +_080E9D8E: + ldr r2, _080E9DC0 @ =gUnknown_2023BCE + ldr r0, _080E9DBC @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080E9DB8 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E9DB8: .4byte gUnknown_2024284 +_080E9DBC: .4byte gUnknown_2023BC4 +_080E9DC0: .4byte gUnknown_2023BCE + thumb_func_end sub_80E93C8 + + thumb_func_start sub_80E9DC4 +sub_80E9DC4: @ 80E9DC4 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80E9DC4 + + thumb_func_start sub_80E9DD0 +sub_80E9DD0: @ 80E9DD0 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80E9DD0 + + thumb_func_start sub_80E9DDC +sub_80E9DDC: @ 80E9DDC + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80E9DDC + + thumb_func_start sub_80E9DE8 +sub_80E9DE8: @ 80E9DE8 + push {r4-r6,lr} + ldr r0, _080E9E14 @ =gUnknown_2022BC4 + ldr r6, _080E9E18 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _080E9E24 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x1 + bl sub_80341D8 + ldr r0, _080E9E1C @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _080E9E20 @ =sub_80E89C4 + str r0, [r1] + b _080E9E5A + .align 2, 0 +_080E9E14: .4byte gUnknown_2022BC4 +_080E9E18: .4byte gUnknown_2023BC4 +_080E9E1C: .4byte gUnknown_3004FE0 +_080E9E20: .4byte sub_80E89C4 +_080E9E24: + ldr r5, _080E9E60 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080E9E64 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _080E9E68 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_80E8A9C +_080E9E5A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9E60: .4byte gUnknown_2023D44 +_080E9E64: .4byte gUnknown_202063C +_080E9E68: .4byte gUnknown_3004FF0 + thumb_func_end sub_80E9DE8 + + thumb_func_start sub_80E9E6C +sub_80E9E6C: @ 80E9E6C + push {r4-r6,lr} + ldr r0, _080E9EC8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080E9EE0 + ldr r4, _080E9ECC @ =gUnknown_300500C + ldr r0, [r4] + ldrb r0, [r0, 0x8] + ldr r6, _080E9ED0 @ =gUnknown_2023BC4 + ldrb r1, [r6] + bl sub_8034750 + ldr r0, [r4] + ldrb r5, [r0, 0x8] + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_803F864 + ldr r0, _080E9ED4 @ =gUnknown_20244DC + ldr r2, _080E9ED8 @ =gUnknown_8239F8C + ldr r1, [r4] + ldrb r1, [r1, 0x8] + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r2, _080E9EDC @ =gUnknown_2023D44 + ldrb r1, [r6] + b _080E9F1C + .align 2, 0 +_080E9EC8: .4byte gUnknown_2022B4C +_080E9ECC: .4byte gUnknown_300500C +_080E9ED0: .4byte gUnknown_2023BC4 +_080E9ED4: .4byte gUnknown_20244DC +_080E9ED8: .4byte gUnknown_8239F8C +_080E9EDC: .4byte gUnknown_2023D44 +_080E9EE0: + ldr r4, _080E9F8C @ =gUnknown_2023BC4 + ldrb r1, [r4] + movs r0, 0x5 + bl sub_8034750 + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_803F864 + ldr r0, _080E9F90 @ =gUnknown_20244DC + ldr r1, _080E9F94 @ =gUnknown_8239F8C + ldrb r1, [r1, 0x14] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r2, _080E9F98 @ =gUnknown_2023D44 + ldrb r1, [r4] +_080E9F1C: + adds r1, r2 + strb r0, [r1] + ldr r4, _080E9F9C @ =gUnknown_202063C + ldr r5, _080E9F98 @ =gUnknown_2023D44 + ldr r6, _080E9F8C @ =gUnknown_2023BC4 + ldrb r3, [r6] + adds r0, r3, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xF0 + strh r1, [r0, 0x24] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080E9FA0 @ =0x0000fffe + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080E9FA4 @ =sub_8033EEC + str r1, [r0] + ldr r1, _080E9FA8 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080E9FAC @ =sub_80E78E0 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9F8C: .4byte gUnknown_2023BC4 +_080E9F90: .4byte gUnknown_20244DC +_080E9F94: .4byte gUnknown_8239F8C +_080E9F98: .4byte gUnknown_2023D44 +_080E9F9C: .4byte gUnknown_202063C +_080E9FA0: .4byte 0x0000fffe +_080E9FA4: .4byte sub_8033EEC +_080E9FA8: .4byte gUnknown_3004FE0 +_080E9FAC: .4byte sub_80E78E0 + thumb_func_end sub_80E9E6C + + thumb_func_start sub_80E9FB0 +sub_80E9FB0: @ 80E9FB0 + push {r4-r6,lr} + ldr r0, _080EA00C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EA024 + ldr r4, _080EA010 @ =gUnknown_300500C + ldr r0, [r4] + ldrb r0, [r0, 0x8] + ldr r6, _080EA014 @ =gUnknown_2023BC4 + ldrb r1, [r6] + bl sub_8034750 + ldr r0, [r4] + ldrb r5, [r0, 0x8] + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_803F864 + ldr r0, _080EA018 @ =gUnknown_20244DC + ldr r2, _080EA01C @ =gUnknown_8239F8C + ldr r1, [r4] + ldrb r1, [r1, 0x8] + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r2, _080EA020 @ =gUnknown_2023D44 + ldrb r1, [r6] + b _080EA060 + .align 2, 0 +_080EA00C: .4byte gUnknown_2022B4C +_080EA010: .4byte gUnknown_300500C +_080EA014: .4byte gUnknown_2023BC4 +_080EA018: .4byte gUnknown_20244DC +_080EA01C: .4byte gUnknown_8239F8C +_080EA020: .4byte gUnknown_2023D44 +_080EA024: + ldr r4, _080EA0D0 @ =gUnknown_2023BC4 + ldrb r1, [r4] + movs r0, 0x5 + bl sub_8034750 + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_803F864 + ldr r0, _080EA0D4 @ =gUnknown_20244DC + ldr r1, _080EA0D8 @ =gUnknown_8239F8C + ldrb r1, [r1, 0x14] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r2, _080EA0DC @ =gUnknown_2023D44 + ldrb r1, [r4] +_080EA060: + adds r1, r2 + strb r0, [r1] + ldr r4, _080EA0E0 @ =gUnknown_202063C + ldr r5, _080EA0DC @ =gUnknown_2023D44 + ldr r6, _080EA0D0 @ =gUnknown_2023BC4 + ldrb r3, [r6] + adds r0, r3, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080EA0E4 @ =0x0000ffa0 + strh r1, [r0, 0x24] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080EA0E8 @ =sub_8033EEC + str r1, [r0] + ldr r1, _080EA0EC @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA0F0 @ =sub_80E8A34 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA0D0: .4byte gUnknown_2023BC4 +_080EA0D4: .4byte gUnknown_20244DC +_080EA0D8: .4byte gUnknown_8239F8C +_080EA0DC: .4byte gUnknown_2023D44 +_080EA0E0: .4byte gUnknown_202063C +_080EA0E4: .4byte 0x0000ffa0 +_080EA0E8: .4byte sub_8033EEC +_080EA0EC: .4byte gUnknown_3004FE0 +_080EA0F0: .4byte sub_80E8A34 + thumb_func_end sub_80E9FB0 + + thumb_func_start sub_80EA0F4 +sub_80EA0F4: @ 80EA0F4 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EA0F4 + + thumb_func_start sub_80EA100 +sub_80EA100: @ 80EA100 + push {r4-r6,lr} + ldr r6, _080EA14C @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _080EA150 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, [r4, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _080EA154 + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080EA134 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_080EA134: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + adds r1, 0x1 + strb r1, [r0, 0x4] + b _080EA1CA + .align 2, 0 +_080EA14C: .4byte gUnknown_2024018 +_080EA150: .4byte gUnknown_2023BC4 +_080EA154: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080EA1CA + strb r4, [r3, 0x4] + ldr r2, _080EA1D0 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _080EA1D4 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + movs r1, 0x40 + negs r1, r1 + movs r0, 0x10 + bl sub_80722F4 + ldr r2, _080EA1D8 @ =gUnknown_202063C + ldr r3, _080EA1DC @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x30] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strh r1, [r0, 0x32] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080EA1E0 @ =sub_8012110 + str r1, [r0] + ldr r1, _080EA1E4 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA1E8 @ =sub_80E82F4 + str r1, [r0] +_080EA1CA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA1D0: .4byte gUnknown_2023BCE +_080EA1D4: .4byte gUnknown_2024284 +_080EA1D8: .4byte gUnknown_202063C +_080EA1DC: .4byte gUnknown_2023D44 +_080EA1E0: .4byte sub_8012110 +_080EA1E4: .4byte gUnknown_3004FE0 +_080EA1E8: .4byte sub_80E82F4 + thumb_func_end sub_80EA100 + + thumb_func_start sub_80EA1EC +sub_80EA1EC: @ 80EA1EC + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EA1EC + + thumb_func_start sub_80EA1F8 +sub_80EA1F8: @ 80EA1F8 + push {r4,r5,lr} + ldr r0, _080EA238 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x8] + movs r0, 0x4 + strb r0, [r1, 0x8] + ldr r1, _080EA23C @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldr r5, _080EA240 @ =gUnknown_2023BC4 + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x4 + bl sub_80341D8 + ldr r1, _080EA244 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA248 @ =sub_80E7970 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EA238: .4byte gUnknown_2024018 +_080EA23C: .4byte gUnknown_2024005 +_080EA240: .4byte gUnknown_2023BC4 +_080EA244: .4byte gUnknown_3004FE0 +_080EA248: .4byte sub_80E7970 + thumb_func_end sub_80EA1F8 + + thumb_func_start sub_80EA24C +sub_80EA24C: @ 80EA24C + push {r4,r5,lr} + ldr r1, _080EA294 @ =gUnknown_2022BC4 + ldr r5, _080EA298 @ =gUnknown_2023BC4 + ldrb r0, [r5] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r1, [r0] + ldr r0, _080EA29C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + strb r1, [r0, 0x8] + ldr r1, _080EA2A0 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x4 + bl sub_80341D8 + ldr r1, _080EA2A4 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA2A8 @ =sub_80E7970 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EA294: .4byte gUnknown_2022BC4 +_080EA298: .4byte gUnknown_2023BC4 +_080EA29C: .4byte gUnknown_2024018 +_080EA2A0: .4byte gUnknown_2024005 +_080EA2A4: .4byte gUnknown_3004FE0 +_080EA2A8: .4byte sub_80E7970 + thumb_func_end sub_80EA24C + + thumb_func_start sub_80EA2AC +sub_80EA2AC: @ 80EA2AC + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EA2AC + + thumb_func_start sub_80EA2B8 +sub_80EA2B8: @ 80EA2B8 + push {r4-r6,lr} + ldr r0, _080EA38C @ =gUnknown_2022BC4 + mov r12, r0 + ldr r6, _080EA390 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _080EA394 @ =gUnknown_2037F16 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _080EA398 @ =gUnknown_2037EEC + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _080EA39C @ =gUnknown_2037EE8 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _080EA3A0 @ =gUnknown_2037EFE + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _080EA3A4 @ =gUnknown_2037F00 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _080EA3A8 @ =gUnknown_2037EE4 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _080EA3AC @ =gUnknown_2024008 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_80342A0 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _080EA3B0 + bl sub_80E8A9C + b _080EA3CE + .align 2, 0 +_080EA38C: .4byte gUnknown_2022BC4 +_080EA390: .4byte gUnknown_2023BC4 +_080EA394: .4byte gUnknown_2037F16 +_080EA398: .4byte gUnknown_2037EEC +_080EA39C: .4byte gUnknown_2037EE8 +_080EA3A0: .4byte gUnknown_2037EFE +_080EA3A4: .4byte gUnknown_2037F00 +_080EA3A8: .4byte gUnknown_2037EE4 +_080EA3AC: .4byte gUnknown_2024008 +_080EA3B0: + ldr r0, _080EA3D4 @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x4] + ldr r1, _080EA3D8 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA3DC @ =sub_80EA3E0 + str r1, [r0] +_080EA3CE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA3D4: .4byte gUnknown_2024018 +_080EA3D8: .4byte gUnknown_3004FE0 +_080EA3DC: .4byte sub_80EA3E0 + thumb_func_end sub_80EA2B8 + + thumb_func_start sub_80EA3E0 +sub_80EA3E0: @ 80EA3E0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r2, _080EA424 @ =gUnknown_2022BC4 + ldr r6, _080EA428 @ =gUnknown_2023BC4 + ldrb r3, [r6] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r9, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r2, 0x2 + mov r8, r2 + add r1, r8 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + ldr r7, _080EA42C @ =gUnknown_2024018 + ldr r5, [r7] + ldr r1, [r5, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _080EA46A + cmp r2, 0x1 + bgt _080EA430 + cmp r2, 0 + beq _080EA43A + b _080EA520 + .align 2, 0 +_080EA424: .4byte gUnknown_2022BC4 +_080EA428: .4byte gUnknown_2023BC4 +_080EA42C: .4byte gUnknown_2024018 +_080EA430: + cmp r2, 0x2 + beq _080EA494 + cmp r2, 0x3 + beq _080EA4E4 + b _080EA520 +_080EA43A: + ldr r1, [r5] + lsls r0, r3, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080EA456 + adds r0, r3, 0 + adds r1, r3, 0 + adds r2, r3, 0 + movs r3, 0x5 + bl sub_80341D8 +_080EA456: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _080EA520 +_080EA46A: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080EA520 + movs r0, 0 + bl sub_8035450 + adds r0, r4, 0 + bl sub_807259C + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x4] + b _080EA520 +_080EA494: + ldr r0, _080EA4DC @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080EA4E0 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _080EA520 + movs r0, 0x1 + bl sub_8035450 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080EA4C8 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 +_080EA4C8: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _080EA520 + .align 2, 0 +_080EA4DC: .4byte gUnknown_2037EDC +_080EA4E0: .4byte gUnknown_2037EE1 +_080EA4E4: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080EA520 + bl sub_8034B40 + ldrb r0, [r6] + lsls r2, r0, 9 + mov r3, r9 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r8 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_8035200 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x4] + bl sub_80E8A9C +_080EA520: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80EA3E0 + + thumb_func_start sub_80EA52C +sub_80EA52C: @ 80EA52C + push {r4,lr} + ldr r0, _080EA55C @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _080EA560 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _080EA564 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + ldr r1, _080EA568 @ =gUnknown_2022BC6 + adds r4, r0, r1 + ldr r0, _080EA56C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _080EA570 + ldrh r0, [r4] + cmp r0, 0x1 + bne _080EA570 + bl sub_80E8A9C + b _080EA65A + .align 2, 0 +_080EA55C: .4byte gUnknown_2022974 +_080EA560: .4byte gUnknown_2022976 +_080EA564: .4byte gUnknown_2023BC4 +_080EA568: .4byte gUnknown_2022BC6 +_080EA56C: .4byte gUnknown_2022B4C +_080EA570: + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _080EA590 + ldr r0, _080EA58C @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _080EA598 + .align 2, 0 +_080EA58C: .4byte gUnknown_202298C +_080EA590: + ldr r0, _080EA5B4 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_080EA598: + ldr r0, _080EA5B8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EA64C + ldrh r1, [r4] + cmp r1, 0xD8 + beq _080EA5CC + cmp r1, 0xD8 + bgt _080EA5BC + cmp r1, 0x1E + beq _080EA5F8 + b _080EA64C + .align 2, 0 +_080EA5B4: .4byte gUnknown_202298C +_080EA5B8: .4byte gUnknown_2022B4C +_080EA5BC: + cmp r1, 0xE3 + beq _080EA630 + ldr r0, _080EA5C8 @ =0x0000017f + cmp r1, r0 + beq _080EA614 + b _080EA64C + .align 2, 0 +_080EA5C8: .4byte 0x0000017f +_080EA5CC: + movs r0, 0x2 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _080EA64C + movs r0, 0x2 + bl sub_80EB2F4 + ldr r1, _080EA5EC @ =gUnknown_3004FE0 + ldr r0, _080EA5F0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA5F4 @ =sub_80E8584 + b _080EA658 + .align 2, 0 +_080EA5EC: .4byte gUnknown_3004FE0 +_080EA5F0: .4byte gUnknown_2023BC4 +_080EA5F4: .4byte sub_80E8584 +_080EA5F8: + ldr r1, _080EA608 @ =gUnknown_3004FE0 + ldr r0, _080EA60C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA610 @ =sub_80E85AC + b _080EA658 + .align 2, 0 +_080EA608: .4byte gUnknown_3004FE0 +_080EA60C: .4byte gUnknown_2023BC4 +_080EA610: .4byte sub_80E85AC +_080EA614: + ldr r1, _080EA624 @ =gUnknown_3004FE0 + ldr r0, _080EA628 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA62C @ =sub_80E85C0 + b _080EA658 + .align 2, 0 +_080EA624: .4byte gUnknown_3004FE0 +_080EA628: .4byte gUnknown_2023BC4 +_080EA62C: .4byte sub_80E85C0 +_080EA630: + ldr r1, _080EA640 @ =gUnknown_3004FE0 + ldr r0, _080EA644 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA648 @ =sub_80E8598 + b _080EA658 + .align 2, 0 +_080EA640: .4byte gUnknown_3004FE0 +_080EA644: .4byte gUnknown_2023BC4 +_080EA648: .4byte sub_80E8598 +_080EA64C: + ldr r1, _080EA660 @ =gUnknown_3004FE0 + ldr r0, _080EA664 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA668 @ =sub_80E7918 +_080EA658: + str r1, [r0] +_080EA65A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EA660: .4byte gUnknown_3004FE0 +_080EA664: .4byte gUnknown_2023BC4 +_080EA668: .4byte sub_80E7918 + thumb_func_end sub_80EA52C + + thumb_func_start sub_80EA66C +sub_80EA66C: @ 80EA66C + push {lr} + ldr r0, _080EA684 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080EA688 + bl sub_80EA52C + b _080EA68C + .align 2, 0 +_080EA684: .4byte gUnknown_2023BC4 +_080EA688: + bl sub_80E8A9C +_080EA68C: + pop {r0} + bx r0 + thumb_func_end sub_80EA66C + + thumb_func_start sub_80EA690 +sub_80EA690: @ 80EA690 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080EA6EA + ldr r0, _080EA6C4 @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _080EA6C8 @ =gUnknown_2022976 + movs r0, 0xA0 + strh r0, [r1] + ldr r0, _080EA6CC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EA6DC + ldr r1, _080EA6D0 @ =gUnknown_3004FE0 + ldr r0, _080EA6D4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA6D8 @ =sub_80E763C + b _080EA6E8 + .align 2, 0 +_080EA6C4: .4byte gUnknown_2022974 +_080EA6C8: .4byte gUnknown_2022976 +_080EA6CC: .4byte gUnknown_2022B4C +_080EA6D0: .4byte gUnknown_3004FE0 +_080EA6D4: .4byte gUnknown_2023BC4 +_080EA6D8: .4byte sub_80E763C +_080EA6DC: + ldr r1, _080EA6F0 @ =gUnknown_3004FE0 + ldr r0, _080EA6F4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA6F8 @ =sub_80E7844 +_080EA6E8: + str r1, [r0] +_080EA6EA: + pop {r0} + bx r0 + .align 2, 0 +_080EA6F0: .4byte gUnknown_3004FE0 +_080EA6F4: .4byte gUnknown_2023BC4 +_080EA6F8: .4byte sub_80E7844 + thumb_func_end sub_80EA690 + + thumb_func_start sub_80EA6FC +sub_80EA6FC: @ 80EA6FC + push {r4,lr} + ldr r1, _080EA750 @ =gUnknown_3004FE0 + ldr r0, _080EA754 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA758 @ =sub_80EA690 + str r1, [r0] + ldr r0, _080EA75C @ =gUnknown_83FDA4C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080EA760 @ =gUnknown_83FE725 + movs r1, 0x2 + bl sub_80D87BC + movs r4, 0 +_080EA71E: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8030A98 + adds r4, 0x1 + cmp r4, 0x3 + ble _080EA71E + ldr r1, _080EA764 @ =gUnknown_2023FF8 + ldr r0, _080EA754 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + ldr r0, _080EA768 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EA770 + ldr r0, _080EA76C @ =gUnknown_83FE6D5 + bl sub_80D77F4 + b _080EA776 + .align 2, 0 +_080EA750: .4byte gUnknown_3004FE0 +_080EA754: .4byte gUnknown_2023BC4 +_080EA758: .4byte sub_80EA690 +_080EA75C: .4byte gUnknown_83FDA4C +_080EA760: .4byte gUnknown_83FE725 +_080EA764: .4byte gUnknown_2023FF8 +_080EA768: .4byte gUnknown_2022B4C +_080EA76C: .4byte gUnknown_83FE6D5 +_080EA770: + ldr r0, _080EA784 @ =gUnknown_83FE6FA + bl sub_80D77F4 +_080EA776: + ldr r0, _080EA788 @ =gUnknown_202298C + movs r1, 0x1 + bl sub_80D87BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EA784: .4byte gUnknown_83FE6FA +_080EA788: .4byte gUnknown_202298C + thumb_func_end sub_80EA6FC + + thumb_func_start sub_80EA78C +sub_80EA78C: @ 80EA78C + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EA78C + + thumb_func_start sub_80EA798 +sub_80EA798: @ 80EA798 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080EA7C2 + ldr r0, _080EA7C8 @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _080EA7CC @ =gUnknown_2022976 + movs r2, 0xA0 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080EA7D0 @ =gUnknown_3004FE0 + ldr r0, _080EA7D4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA7D8 @ =sub_80E7988 + str r1, [r0] +_080EA7C2: + pop {r0} + bx r0 + .align 2, 0 +_080EA7C8: .4byte gUnknown_2022974 +_080EA7CC: .4byte gUnknown_2022976 +_080EA7D0: .4byte gUnknown_3004FE0 +_080EA7D4: .4byte gUnknown_2023BC4 +_080EA7D8: .4byte sub_80E7988 + thumb_func_end sub_80EA798 + + thumb_func_start sub_80EA7DC +sub_80EA7DC: @ 80EA7DC + push {r4,lr} + ldr r0, _080EA800 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EA810 + bl sub_8032CB4 + ldr r1, _080EA804 @ =gUnknown_3004FE0 + ldr r0, _080EA808 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA80C @ =sub_80EA798 + str r1, [r0] + b _080EA866 + .align 2, 0 +_080EA800: .4byte gUnknown_2022B4C +_080EA804: .4byte gUnknown_3004FE0 +_080EA808: .4byte gUnknown_2023BC4 +_080EA80C: .4byte sub_80EA798 +_080EA810: + ldr r4, _080EA824 @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r0, 0x95 + ldrb r0, [r0] + cmp r0, 0 + beq _080EA828 + cmp r0, 0x1 + beq _080EA83E + b _080EA866 + .align 2, 0 +_080EA824: .4byte gUnknown_2023FE8 +_080EA828: + bl sub_8032CB4 + ldr r1, [r4] + adds r1, 0x95 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x97 + movs r1, 0x50 + strb r1, [r0] +_080EA83E: + ldr r0, _080EA86C @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, 0x97 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _080EA866 + movs r0, 0x5 + bl sub_80722CC + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 + bl sub_80E8A9C +_080EA866: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EA86C: .4byte gUnknown_2023FE8 + thumb_func_end sub_80EA7DC + + thumb_func_start sub_80EA870 +sub_80EA870: @ 80EA870 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _080EA8BC @ =gUnknown_3004FE0 + ldr r2, _080EA8C0 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA8C4 @ =sub_80E7A70 + str r1, [r0] + ldr r1, _080EA8C8 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + movs r3, 0 + ldr r5, _080EA8CC @ =gUnknown_203B0DC + ldr r4, _080EA8D0 @ =gUnknown_2022BC4 +_080EA89E: + adds r0, r3, r5 + ldrb r1, [r2] + lsls r1, 9 + adds r1, 0x1 + adds r1, r3, r1 + adds r1, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x2 + ble _080EA89E + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EA8BC: .4byte gUnknown_3004FE0 +_080EA8C0: .4byte gUnknown_2023BC4 +_080EA8C4: .4byte sub_80E7A70 +_080EA8C8: .4byte gUnknown_2024004 +_080EA8CC: .4byte gUnknown_203B0DC +_080EA8D0: .4byte gUnknown_2022BC4 + thumb_func_end sub_80EA870 + + thumb_func_start sub_80EA8D4 +sub_80EA8D4: @ 80EA8D4 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _080EA984 @ =nullsub_43 + movs r1, 0xFF + bl sub_807741C + ldr r3, _080EA988 @ =gUnknown_3004FFC + ldr r4, _080EA98C @ =gUnknown_2023BC4 + ldrb r1, [r4] + adds r1, r3 + strb r0, [r1] + ldr r5, _080EA990 @ =gUnknown_3005090 + ldrb r2, [r4] + adds r3, r2, r3 + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldr r5, _080EA994 @ =gUnknown_2022BC4 + lsls r2, 9 + adds r6, r5, 0x1 + adds r2, r6 + ldrb r2, [r2] + movs r0, 0xF + ands r0, r2 + strh r0, [r1, 0x8] + ldr r3, _080EA998 @ =gUnknown_2023FE8 + ldr r1, [r3] + adds r1, 0x49 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r6 + ldrb r0, [r0] + lsrs r0, 4 + strb r0, [r1] + ldr r2, [r3] + adds r2, 0x8B + ldrb r0, [r4] + lsls r0, 9 + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r2, [r3] + adds r2, 0xAC + ldrb r0, [r4] + lsls r0, 9 + adds r1, r5, 0x3 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r2, 0 + ldr r3, _080EA99C @ =gUnknown_203B0DC +_080EA940: + adds r0, r2, r3 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x2 + ble _080EA940 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _080EA9A0 @ =gUnknown_3004FE0 + ldr r2, _080EA98C @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EA9A4 @ =sub_80E79B8 + str r1, [r0] + ldr r1, _080EA9A8 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA984: .4byte nullsub_43 +_080EA988: .4byte gUnknown_3004FFC +_080EA98C: .4byte gUnknown_2023BC4 +_080EA990: .4byte gUnknown_3005090 +_080EA994: .4byte gUnknown_2022BC4 +_080EA998: .4byte gUnknown_2023FE8 +_080EA99C: .4byte gUnknown_203B0DC +_080EA9A0: .4byte gUnknown_3004FE0 +_080EA9A4: .4byte sub_80E79B8 +_080EA9A8: .4byte gUnknown_2024004 + thumb_func_end sub_80EA8D4 + + thumb_func_start sub_80EA9AC +sub_80EA9AC: @ 80EA9AC + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EA9AC + + thumb_func_start sub_80EA9B8 +sub_80EA9B8: @ 80EA9B8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r0, 0 + bl sub_8034964 + ldr r3, _080EAA30 @ =gUnknown_2022BC4 + ldr r0, _080EAA34 @ =gUnknown_2023BC4 + mov r9, r0 + ldrb r4, [r0] + lsls r2, r4, 9 + adds r0, r3, 0x2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, 0x3 + adds r2, r3 + ldrb r0, [r2] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + asrs r7, r1, 16 + ldr r0, _080EAA38 @ =0x00007fff + cmp r7, r0 + beq _080EAA48 + ldr r6, _080EAA3C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _080EAA40 @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + mov r8, r0 + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _080EAA44 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_8048150 + b _080EAA82 + .align 2, 0 +_080EAA30: .4byte gUnknown_2022BC4 +_080EAA34: .4byte gUnknown_2023BC4 +_080EAA38: .4byte 0x00007fff +_080EAA3C: .4byte gUnknown_2023BCE +_080EAA40: .4byte gUnknown_2024284 +_080EAA44: .4byte gUnknown_3004FF0 +_080EAA48: + ldr r1, _080EAAA0 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080EAAA4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r4, _080EAAA8 @ =gUnknown_3004FF0 + adds r1, r0, r4 + ldrb r1, [r1] + str r7, [sp] + movs r3, 0 + bl sub_8048150 + mov r1, r9 + ldrb r0, [r1] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_8048440 +_080EAA82: + ldr r1, _080EAAAC @ =gUnknown_3004FE0 + ldr r0, _080EAAB0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EAAB4 @ =sub_80E88C0 + str r1, [r0] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EAAA0: .4byte gUnknown_2023BCE +_080EAAA4: .4byte gUnknown_2024284 +_080EAAA8: .4byte gUnknown_3004FF0 +_080EAAAC: .4byte gUnknown_3004FE0 +_080EAAB0: .4byte gUnknown_2023BC4 +_080EAAB4: .4byte sub_80E88C0 + thumb_func_end sub_80EA9B8 + + thumb_func_start sub_80EAAB8 +sub_80EAAB8: @ 80EAAB8 + push {r4-r7,lr} + ldr r5, _080EAAE4 @ =gUnknown_2022BC4 + ldr r6, _080EAAE8 @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 9 + adds r1, r5, 0x1 + adds r0, r1 + ldrb r7, [r0] + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _080EAAEC @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x63 + bls _080EAAF0 + bl sub_80E8A9C + b _080EAB3C + .align 2, 0 +_080EAAE4: .4byte gUnknown_2022BC4 +_080EAAE8: .4byte gUnknown_2023BC4 +_080EAAEC: .4byte gUnknown_2024284 +_080EAAF0: + movs r0, 0x1 + bl sub_8034964 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + ldrb r1, [r6] + lsls r1, 9 + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r0, r5, 0x3 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + ldr r0, _080EAB44 @ =sub_80E7E04 + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EAB48 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r7, [r1, 0x8] + strh r4, [r1, 0xA] + ldrb r0, [r6] + strh r0, [r1, 0xC] + ldr r1, _080EAB4C @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EAB50 @ =nullsub_81 + str r1, [r0] +_080EAB3C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EAB44: .4byte sub_80E7E04 +_080EAB48: .4byte gUnknown_3005090 +_080EAB4C: .4byte gUnknown_3004FE0 +_080EAB50: .4byte nullsub_81 + thumb_func_end sub_80EAAB8 + + thumb_func_start sub_80EAB54 +sub_80EAB54: @ 80EAB54 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB54 + + thumb_func_start sub_80EAB60 +sub_80EAB60: @ 80EAB60 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB60 + + thumb_func_start sub_80EAB6C +sub_80EAB6C: @ 80EAB6C + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB6C + + thumb_func_start sub_80EAB78 +sub_80EAB78: @ 80EAB78 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB78 + + thumb_func_start sub_80EAB84 +sub_80EAB84: @ 80EAB84 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB84 + + thumb_func_start sub_80EAB90 +sub_80EAB90: @ 80EAB90 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB90 + + thumb_func_start sub_80EAB9C +sub_80EAB9C: @ 80EAB9C + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAB9C + + thumb_func_start sub_80EABA8 +sub_80EABA8: @ 80EABA8 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABA8 + + thumb_func_start sub_80EABB4 +sub_80EABB4: @ 80EABB4 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABB4 + + thumb_func_start sub_80EABC0 +sub_80EABC0: @ 80EABC0 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABC0 + + thumb_func_start sub_80EABCC +sub_80EABCC: @ 80EABCC + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABCC + + thumb_func_start sub_80EABD8 +sub_80EABD8: @ 80EABD8 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABD8 + + thumb_func_start sub_80EABE4 +sub_80EABE4: @ 80EABE4 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABE4 + + thumb_func_start sub_80EABF0 +sub_80EABF0: @ 80EABF0 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABF0 + + thumb_func_start sub_80EABFC +sub_80EABFC: @ 80EABFC + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EABFC + + thumb_func_start sub_80EAC08 +sub_80EAC08: @ 80EAC08 + push {r4,lr} + ldr r3, _080EAC30 @ =gUnknown_202063C + ldr r2, _080EAC34 @ =gUnknown_2023D44 + ldr r4, _080EAC38 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080EAC3C + bl sub_80E8A9C + b _080EAC66 + .align 2, 0 +_080EAC30: .4byte gUnknown_202063C +_080EAC34: .4byte gUnknown_2023D44 +_080EAC38: .4byte gUnknown_2023BC4 +_080EAC3C: + ldr r1, _080EAC6C @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_804BE70 + ldr r1, _080EAC70 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EAC74 @ =sub_80E8948 + str r1, [r0] +_080EAC66: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EAC6C: .4byte gUnknown_2024005 +_080EAC70: .4byte gUnknown_3004FE0 +_080EAC74: .4byte sub_80E8948 + thumb_func_end sub_80EAC08 + + thumb_func_start sub_80EAC78 +sub_80EAC78: @ 80EAC78 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EAC78 + + thumb_func_start sub_80EAC84 +sub_80EAC84: @ 80EAC84 + push {lr} + ldr r2, _080EACAC @ =gUnknown_2022BC4 + ldr r0, _080EACB0 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_80722CC + bl sub_80E8A9C + pop {r0} + bx r0 + .align 2, 0 +_080EACAC: .4byte gUnknown_2022BC4 +_080EACB0: .4byte gUnknown_2023BC4 + thumb_func_end sub_80EAC84 + + thumb_func_start sub_80EACB4 +sub_80EACB4: @ 80EACB4 + push {lr} + ldr r2, _080EACDC @ =gUnknown_2022BC4 + ldr r0, _080EACE0 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_80E8A9C + pop {r0} + bx r0 + .align 2, 0 +_080EACDC: .4byte gUnknown_2022BC4 +_080EACE0: .4byte gUnknown_2023BC4 + thumb_func_end sub_80EACB4 + + thumb_func_start sub_80EACE4 +sub_80EACE4: @ 80EACE4 + push {lr} + ldr r1, _080EAD14 @ =gUnknown_2023BCE + ldr r0, _080EAD18 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080EAD1C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl sub_8071DF0 + bl sub_80E8A9C + pop {r0} + bx r0 + .align 2, 0 +_080EAD14: .4byte gUnknown_2023BCE +_080EAD18: .4byte gUnknown_2023BC4 +_080EAD1C: .4byte gUnknown_2024284 + thumb_func_end sub_80EACE4 + + thumb_func_start sub_80EAD20 +sub_80EAD20: @ 80EAD20 + push {lr} + ldr r1, _080EAD48 @ =gUnknown_2022BC4 + ldr r0, _080EAD4C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _080EAD50 @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_80E8A9C + pop {r0} + bx r0 + .align 2, 0 +_080EAD48: .4byte gUnknown_2022BC4 +_080EAD4C: .4byte gUnknown_2023BC4 +_080EAD50: .4byte gUnknown_2023F4C + thumb_func_end sub_80EAD20 + + thumb_func_start sub_80EAD54 +sub_80EAD54: @ 80EAD54 + push {r4-r7,lr} + ldr r0, _080EAEA0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080EAD64 + b _080EAEE4 +_080EAD64: + ldr r6, _080EAEA4 @ =gUnknown_2023D44 + ldr r7, _080EAEA8 @ =gUnknown_2023BC4 + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _080EAEAC @ =gUnknown_202063C + adds r0, r5 + bl sub_80750FC + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x32 + strh r1, [r0, 0x2E] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080EAEB0 @ =0x0000ffd8 + strh r1, [r0, 0x32] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080EAEB4 @ =sub_8075590 + str r1, [r0] + ldrb r2, [r7] + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x38] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080EAEB8 @ =sub_80335F8 + bl sub_8074A68 + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x1 + bl sub_800838C + ldr r0, _080EAEBC @ =0x0000d6f8 + bl sub_80089B8 + adds r4, r0, 0 + lsls r4, 24 + ldr r1, _080EAEC0 @ =gUnknown_8239FD4 + ldr r0, _080EAEC4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + lsrs r4, 20 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, r2 + movs r2, 0x20 + bl sub_80703A8 + ldrb r0, [r7] + adds r0, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r4 + strb r0, [r1, 0x5] + ldr r0, _080EAEC8 @ =sub_80EB0A8 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080EAECC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r7] + strh r0, [r1, 0x8] + ldr r3, _080EAED0 @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r2, [r7] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080EAE84 + ldr r0, _080EAED4 @ =gUnknown_2024000 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _080EAED8 @ =sub_80491B0 + str r1, [r0] +_080EAE84: + ldr r0, [r3] + ldr r2, [r0, 0x8] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _080EAEDC @ =gUnknown_3004FE0 + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EAEE0 @ =nullsub_13 + str r1, [r0] + b _080EAF18 + .align 2, 0 +_080EAEA0: .4byte gUnknown_2022B4C +_080EAEA4: .4byte gUnknown_2023D44 +_080EAEA8: .4byte gUnknown_2023BC4 +_080EAEAC: .4byte gUnknown_202063C +_080EAEB0: .4byte 0x0000ffd8 +_080EAEB4: .4byte sub_8075590 +_080EAEB8: .4byte sub_80335F8 +_080EAEBC: .4byte 0x0000d6f8 +_080EAEC0: .4byte gUnknown_8239FD4 +_080EAEC4: .4byte gUnknown_300500C +_080EAEC8: .4byte sub_80EB0A8 +_080EAECC: .4byte gUnknown_3005090 +_080EAED0: .4byte gUnknown_2024018 +_080EAED4: .4byte gUnknown_2024000 +_080EAED8: .4byte sub_80491B0 +_080EAEDC: .4byte gUnknown_3004FE0 +_080EAEE0: .4byte nullsub_13 +_080EAEE4: + ldr r0, _080EAF20 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080EAF24 @ =gUnknown_2023BC4 + ldrb r3, [r0] + ldr r1, [r1, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080EAF14 + ldr r2, _080EAF28 @ =gUnknown_3005090 + ldr r0, _080EAF2C @ =gUnknown_2024000 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _080EAF30 @ =sub_80491B0 + str r1, [r0] +_080EAF14: + bl sub_80E8A9C +_080EAF18: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EAF20: .4byte gUnknown_2024018 +_080EAF24: .4byte gUnknown_2023BC4 +_080EAF28: .4byte gUnknown_3005090 +_080EAF2C: .4byte gUnknown_2024000 +_080EAF30: .4byte sub_80491B0 + thumb_func_end sub_80EAD54 + + thumb_func_start sub_80EAF34 +sub_80EAF34: @ 80EAF34 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080EB07C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x2] + ldr r0, _080EB080 @ =gUnknown_2023BCE + lsls r2, r6, 1 + adds r2, r0 + ldr r0, _080EB084 @ =gUnknown_2022BC4 + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080EB088 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080EB08C @ =sub_8033E3C + bl sub_8044EF8 + ldr r1, _080EB090 @ =gUnknown_3004FFC + mov r9, r1 + add r9, r6 + mov r1, r9 + strb r0, [r1] + adds r0, r6, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _080EB094 @ =gUnknown_20244DC + mov r10, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r10 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _080EB098 @ =gUnknown_2023D44 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _080EB09C @ =gUnknown_202063C + mov r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080EB0A0 @ =gUnknown_2024024 + adds r6, r1 + ldrb r1, [r6] + bl sub_800838C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080EB0A4 @ =nullsub_8 + str r1, [r0] + movs r0, 0 + movs r1, 0xFF + bl sub_804A938 + mov r1, r9 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EB07C: .4byte gUnknown_2024018 +_080EB080: .4byte gUnknown_2023BCE +_080EB084: .4byte gUnknown_2022BC4 +_080EB088: .4byte gUnknown_2024284 +_080EB08C: .4byte sub_8033E3C +_080EB090: .4byte gUnknown_3004FFC +_080EB094: .4byte gUnknown_20244DC +_080EB098: .4byte gUnknown_2023D44 +_080EB09C: .4byte gUnknown_202063C +_080EB0A0: .4byte gUnknown_2024024 +_080EB0A4: .4byte nullsub_8 + thumb_func_end sub_80EAF34 + + thumb_func_start sub_80EB0A8 +sub_80EB0A8: @ 80EB0A8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080EB0C8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0x1E + bgt _080EB0CC + adds r0, r2, 0x1 + strh r0, [r1, 0xA] + b _080EB102 + .align 2, 0 +_080EB0C8: .4byte gUnknown_3005090 +_080EB0CC: + ldr r4, _080EB108 @ =gUnknown_2023BC4 + ldrb r5, [r4] + ldrh r0, [r1, 0x8] + strb r0, [r4] + ldr r0, _080EB10C @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _080EB110 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r4] + bl sub_80EAF34 + ldr r1, _080EB114 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080EB118 @ =sub_80E7B4C + str r1, [r0] + strb r5, [r4] + adds r0, r6, 0 + bl sub_8077508 +_080EB102: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EB108: .4byte gUnknown_2023BC4 +_080EB10C: .4byte gUnknown_2022BC4 +_080EB110: .4byte gUnknown_2023BCE +_080EB114: .4byte gUnknown_3004FE0 +_080EB118: .4byte sub_80E7B4C + thumb_func_end sub_80EB0A8 + + thumb_func_start sub_80EB11C +sub_80EB11C: @ 80EB11C + push {r4,r5,lr} + ldr r1, _080EB144 @ =gUnknown_2022BC4 + ldr r0, _080EB148 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080EB14C + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080EB14C + bl sub_80E8A9C + b _080EB18A + .align 2, 0 +_080EB144: .4byte gUnknown_2022BC4 +_080EB148: .4byte gUnknown_2023BC4 +_080EB14C: + ldr r0, _080EB190 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r5, _080EB194 @ =gUnknown_2023BC4 + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r4, r0, 9 + ldr r3, _080EB198 @ =gUnknown_2022BC8 + adds r1, r4, r3 + subs r2, r3, 0x3 + adds r2, r4, r2 + ldrb r2, [r2] + subs r3, 0x2 + adds r4, r3 + ldrb r3, [r4] + bl sub_8048D14 + ldr r2, _080EB19C @ =gUnknown_2024000 + ldrb r1, [r5] + adds r1, r2 + strb r0, [r1] + bl sub_80E8A9C +_080EB18A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EB190: .4byte gUnknown_2024018 +_080EB194: .4byte gUnknown_2023BC4 +_080EB198: .4byte gUnknown_2022BC8 +_080EB19C: .4byte gUnknown_2024000 + thumb_func_end sub_80EB11C + + thumb_func_start sub_80EB1A0 +sub_80EB1A0: @ 80EB1A0 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EB1A0 + + thumb_func_start sub_80EB1AC +sub_80EB1AC: @ 80EB1AC + push {r4,lr} + ldr r4, _080EB1CC @ =gUnknown_2023BC4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 + bl sub_80E8A9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EB1CC: .4byte gUnknown_2023BC4 + thumb_func_end sub_80EB1AC + + thumb_func_start sub_80EB1D0 +sub_80EB1D0: @ 80EB1D0 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EB1D0 + + thumb_func_start sub_80EB1DC +sub_80EB1DC: @ 80EB1DC + push {r4-r6,lr} + sub sp, 0x4 + ldr r5, _080EB214 @ =gUnknown_2022BC4 + ldr r6, _080EB218 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _080EB21C + bl sub_80E8A9C + b _080EB228 + .align 2, 0 +_080EB214: .4byte gUnknown_2022BC4 +_080EB218: .4byte gUnknown_2023BC4 +_080EB21C: + ldr r0, _080EB230 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _080EB234 @ =sub_80E8A6C + str r0, [r1] +_080EB228: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EB230: .4byte gUnknown_3004FE0 +_080EB234: .4byte sub_80E8A6C + thumb_func_end sub_80EB1DC + + thumb_func_start sub_80EB238 +sub_80EB238: @ 80EB238 + push {r4,lr} + ldr r1, _080EB26C @ =gUnknown_2022BC4 + ldr r4, _080EB270 @ =gUnknown_2023BC4 + ldrb r2, [r4] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + blt _080EB260 + cmp r0, 0x1 + bgt _080EB260 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 +_080EB260: + bl sub_80E8A9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EB26C: .4byte gUnknown_2022BC4 +_080EB270: .4byte gUnknown_2023BC4 + thumb_func_end sub_80EB238 + + thumb_func_start sub_80EB274 +sub_80EB274: @ 80EB274 + push {lr} + bl sub_80E8A9C + pop {r0} + bx r0 + thumb_func_end sub_80EB274 + + thumb_func_start sub_80EB280 +sub_80EB280: @ 80EB280 + push {r4,lr} + ldr r2, _080EB2C4 @ =gUnknown_2023E8A + ldr r1, _080EB2C8 @ =gUnknown_2022BC4 + ldr r4, _080EB2CC @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x5 + bl sub_8071AB4 + movs r0, 0x3 + bl sub_8070E44 + bl sub_80E8A9C + ldr r0, _080EB2D0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x6 + ands r0, r1 + cmp r0, 0x2 + bne _080EB2BC + ldr r0, _080EB2D4 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _080EB2D8 @ =sub_80E7930 + str r0, [r1] +_080EB2BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EB2C4: .4byte gUnknown_2023E8A +_080EB2C8: .4byte gUnknown_2022BC4 +_080EB2CC: .4byte gUnknown_2023BC4 +_080EB2D0: .4byte gUnknown_2022B4C +_080EB2D4: .4byte gUnknown_3004FE0 +_080EB2D8: .4byte sub_80E7930 + thumb_func_end sub_80EB280 + + thumb_func_start nullsub_82 +nullsub_82: @ 80EB2DC + bx lr + thumb_func_end nullsub_82 + + thumb_func_start sub_80EB2E0 +sub_80EB2E0: @ 80EB2E0 + adds r1, r0, 0 + ldr r0, _080EB2F0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x96 + ldrb r0, [r0] + ands r0, r1 + bx lr + .align 2, 0 +_080EB2F0: .4byte gUnknown_2023FE8 + thumb_func_end sub_80EB2E0 + + thumb_func_start sub_80EB2F4 +sub_80EB2F4: @ 80EB2F4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080EB308 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r1, 0x96 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080EB308: .4byte gUnknown_2023FE8 + thumb_func_end sub_80EB2F4 + + thumb_func_start sub_80EB30C +sub_80EB30C: @ 80EB30C + push {r4-r6,lr} + sub sp, 0xC + movs r6, 0x1A + movs r5, 0x7 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x30 + movs r2, 0 + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x31 + movs r2, 0x1 + movs r3, 0xE + bl sub_8002554 + str r6, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x32 + movs r2, 0x2 + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x33 + movs r2, 0x1C + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x34 + movs r2, 0x1D + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x35 + movs r2, 0 + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x36 + movs r2, 0x1 + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x38 + movs r2, 0x1C + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x39 + movs r2, 0x1D + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x3A + movs r2, 0 + movs r3, 0x10 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x3B + movs r2, 0x1 + movs r3, 0x10 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x3C + movs r2, 0x1C + movs r3, 0x10 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x3D + movs r2, 0x1D + movs r3, 0x10 + bl sub_8002554 + ldr r1, _080EB4F4 @ =0x0000083a + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0 + movs r3, 0x11 + bl sub_8002554 + ldr r1, _080EB4F8 @ =0x0000083b + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1 + movs r3, 0x11 + bl sub_8002554 + ldr r1, _080EB4FC @ =0x0000083c + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1C + movs r3, 0x11 + bl sub_8002554 + ldr r1, _080EB500 @ =0x0000083d + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1D + movs r3, 0x11 + bl sub_8002554 + ldr r1, _080EB504 @ =0x00000835 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0 + movs r3, 0x12 + bl sub_8002554 + ldr r1, _080EB508 @ =0x00000836 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1 + movs r3, 0x12 + bl sub_8002554 + ldr r1, _080EB50C @ =0x00000838 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1C + movs r3, 0x12 + bl sub_8002554 + ldr r1, _080EB510 @ =0x00000839 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1D + movs r3, 0x12 + bl sub_8002554 + movs r1, 0x83 + lsls r1, 4 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0 + movs r3, 0x13 + bl sub_8002554 + ldr r1, _080EB514 @ =0x00000831 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1 + movs r3, 0x13 + bl sub_8002554 + ldr r1, _080EB518 @ =0x00000832 + str r6, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x2 + movs r3, 0x13 + bl sub_8002554 + ldr r1, _080EB51C @ =0x00000833 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1C + movs r3, 0x13 + bl sub_8002554 + ldr r1, _080EB520 @ =0x00000834 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0x1D + movs r3, 0x13 + bl sub_8002554 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EB4F4: .4byte 0x0000083a +_080EB4F8: .4byte 0x0000083b +_080EB4FC: .4byte 0x0000083c +_080EB500: .4byte 0x0000083d +_080EB504: .4byte 0x00000835 +_080EB508: .4byte 0x00000836 +_080EB50C: .4byte 0x00000838 +_080EB510: .4byte 0x00000839 +_080EB514: .4byte 0x00000831 +_080EB518: .4byte 0x00000832 +_080EB51C: .4byte 0x00000833 +_080EB520: .4byte 0x00000834 + thumb_func_end sub_80EB30C + + thumb_func_start sub_80EB524 +sub_80EB524: @ 80EB524 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + movs r5, 0 + movs r0, 0x1A + mov r8, r0 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0xE + bl sub_8002554 + movs r6, 0x4 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x4 + movs r2, 0x1 + movs r3, 0xE + bl sub_8002554 + mov r0, r8 + str r0, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x5 + movs r2, 0x2 + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x6 + movs r2, 0x1C + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x7 + movs r2, 0x1D + movs r3, 0xE + bl sub_8002554 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x8 + movs r2, 0 + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x9 + movs r2, 0x1 + movs r3, 0xF + bl sub_8002554 + mov r0, r8 + str r0, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0xA + movs r2, 0x2 + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0xB + movs r2, 0x1C + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0xC + movs r2, 0x1D + movs r3, 0xF + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0xD + movs r2, 0 + movs r3, 0x13 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0xE + movs r2, 0x1 + movs r3, 0x13 + bl sub_8002554 + mov r0, r8 + str r0, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0xF + movs r2, 0x2 + movs r3, 0x13 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x10 + movs r2, 0x1C + movs r3, 0x13 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x11 + movs r2, 0x1D + movs r3, 0x13 + bl sub_8002554 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80EB524 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s new file mode 100644 index 000000000..e422eedf8 --- /dev/null +++ b/asm/battle_controller_opponent.s @@ -0,0 +1,6736 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_17 +nullsub_17: @ 8035A78 + bx lr + thumb_func_end nullsub_17 + + thumb_func_start sub_8035A7C +sub_8035A7C: @ 8035A7C + ldr r1, _08035A8C @ =gUnknown_3004FE0 + ldr r0, _08035A90 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08035A94 @ =sub_8035A98 + str r1, [r0] + bx lr + .align 2, 0 +_08035A8C: .4byte gUnknown_3004FE0 +_08035A90: .4byte gUnknown_2023BC4 +_08035A94: .4byte sub_8035A98 + thumb_func_end sub_8035A7C + + thumb_func_start sub_8035A98 +sub_8035A98: @ 8035A98 + push {lr} + ldr r2, _08035ACC @ =gUnknown_2023BC8 + ldr r1, _08035AD0 @ =gUnknown_825E45C + ldr r0, _08035AD4 @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08035AE4 + ldr r0, _08035AD8 @ =gUnknown_2022BC4 + lsls r1, r3, 9 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x38 + bhi _08035AE0 + ldr r0, _08035ADC @ =gUnknown_8250A34 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _08035AE4 + .align 2, 0 +_08035ACC: .4byte gUnknown_2023BC8 +_08035AD0: .4byte gUnknown_825E45C +_08035AD4: .4byte gUnknown_2023BC4 +_08035AD8: .4byte gUnknown_2022BC4 +_08035ADC: .4byte gUnknown_8250A34 +_08035AE0: + bl sub_8036530 +_08035AE4: + pop {r0} + bx r0 + thumb_func_end sub_8035A98 + + thumb_func_start sub_8035AE8 +sub_8035AE8: @ 8035AE8 + push {lr} + ldr r2, _08035B10 @ =gUnknown_202063C + ldr r1, _08035B14 @ =gUnknown_2023D44 + ldr r0, _08035B18 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08035B1C @ =nullsub_8 + cmp r1, r0 + bne _08035B0C + bl sub_8036530 +_08035B0C: + pop {r0} + bx r0 + .align 2, 0 +_08035B10: .4byte gUnknown_202063C +_08035B14: .4byte gUnknown_2023D44 +_08035B18: .4byte gUnknown_2023BC4 +_08035B1C: .4byte nullsub_8 + thumb_func_end sub_8035AE8 + + thumb_func_start sub_8035B20 +sub_8035B20: @ 8035B20 + push {lr} + ldr r2, _08035B48 @ =gUnknown_202063C + ldr r1, _08035B4C @ =gUnknown_2023D44 + ldr r0, _08035B50 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08035B54 @ =nullsub_8 + cmp r1, r0 + bne _08035B44 + bl sub_8036530 +_08035B44: + pop {r0} + bx r0 + .align 2, 0 +_08035B48: .4byte gUnknown_202063C +_08035B4C: .4byte gUnknown_2023D44 +_08035B50: .4byte gUnknown_2023BC4 +_08035B54: .4byte nullsub_8 + thumb_func_end sub_8035B20 + + thumb_func_start sub_8035B58 +sub_8035B58: @ 8035B58 + push {r4-r6,lr} + ldr r4, _08035BD0 @ =gUnknown_202063C + ldr r6, _08035BD4 @ =gUnknown_2023D44 + ldr r5, _08035BD8 @ =gUnknown_2023BC4 + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r2, r0, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _08035BDC @ =nullsub_8 + cmp r1, r0 + bne _08035BC8 + adds r0, r2, r4 + ldrh r0, [r0, 0x6] + bl sub_803477C + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x38] + ldr r2, _08035BE0 @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _08035BE4 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + bl sub_8036530 +_08035BC8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08035BD0: .4byte gUnknown_202063C +_08035BD4: .4byte gUnknown_2023D44 +_08035BD8: .4byte gUnknown_2023BC4 +_08035BDC: .4byte nullsub_8 +_08035BE0: .4byte 0x000003ff +_08035BE4: .4byte 0xfffffc00 + thumb_func_end sub_8035B58 + + thumb_func_start sub_8035BE8 +sub_8035BE8: @ 8035BE8 + push {r4,lr} + ldr r4, _08035C28 @ =gUnknown_2024018 + ldr r1, [r4] + ldr r3, _08035C2C @ =gUnknown_2023BC4 + ldrb r0, [r3] + ldr r2, [r1, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x9] + subs r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08035C20 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + bl sub_8036530 +_08035C20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08035C28: .4byte gUnknown_2024018 +_08035C2C: .4byte gUnknown_2023BC4 + thumb_func_end sub_8035BE8 + + thumb_func_start sub_8035C30 +sub_8035C30: @ 8035C30 + push {r4-r7,lr} + movs r6, 0 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08035C54 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08035C88 + ldr r0, _08035C74 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08035C88 +_08035C54: + ldr r2, _08035C78 @ =gUnknown_202063C + ldr r1, _08035C7C @ =gUnknown_3004FF0 + ldr r0, _08035C80 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08035C84 @ =nullsub_8 + cmp r1, r0 + bne _08035CBE + b _08035CBC + .align 2, 0 +_08035C74: .4byte gUnknown_2022B4C +_08035C78: .4byte gUnknown_202063C +_08035C7C: .4byte gUnknown_3004FF0 +_08035C80: .4byte gUnknown_2023BC4 +_08035C84: .4byte nullsub_8 +_08035C88: + ldr r2, _08035D84 @ =gUnknown_202063C + ldr r5, _08035D88 @ =gUnknown_3004FF0 + ldr r0, _08035D8C @ =gUnknown_2023BC4 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r4, [r0] + ldr r0, _08035D90 @ =nullsub_8 + cmp r4, r0 + bne _08035CBE + movs r0, 0x2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _08035CBE +_08035CBC: + movs r6, 0x1 +_08035CBE: + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + beq _08035CCA + movs r6, 0 +_08035CCA: + cmp r6, 0 + bne _08035CD0 + b _08035DD2 +_08035CD0: + ldr r0, _08035D94 @ =gUnknown_2024018 + mov r12, r0 + ldr r0, [r0] + ldr r7, _08035D8C @ =gUnknown_2023BC4 + ldrb r2, [r7] + ldr r3, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r3 + ldrb r1, [r4, 0x1] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08035DD2 + movs r6, 0x2 + adds r1, r6, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x1] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08035DD2 + ldrb r1, [r4] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r1 + strb r0, [r4] + mov r1, r12 + ldr r0, [r1] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1, 0x1] + mov r0, r12 + ldr r2, [r0] + ldrb r0, [r7] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, r12 + ldr r2, [r1] + ldrb r0, [r7] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldr r4, _08035D98 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, _08035D9C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08035DA4 + ldr r0, _08035DA0 @ =gMPlay_BGM + bl m4aMPlayContinue + b _08035DB0 + .align 2, 0 +_08035D84: .4byte gUnknown_202063C +_08035D88: .4byte gUnknown_3004FF0 +_08035D8C: .4byte gUnknown_2023BC4 +_08035D90: .4byte nullsub_8 +_08035D94: .4byte gUnknown_2024018 +_08035D98: .4byte 0x000027f9 +_08035D9C: .4byte gUnknown_2022B4C +_08035DA0: .4byte gMPlay_BGM +_08035DA4: + ldr r0, _08035DD8 @ =gMPlay_BGM + ldr r1, _08035DDC @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl +_08035DB0: + ldr r0, _08035DE0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r3, _08035DE4 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x9] + ldr r1, _08035DE8 @ =gUnknown_3004FE0 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _08035DEC @ =sub_8035BE8 + str r1, [r0] +_08035DD2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035DD8: .4byte gMPlay_BGM +_08035DDC: .4byte 0x0000ffff +_08035DE0: .4byte gUnknown_2024018 +_08035DE4: .4byte gUnknown_2023BC4 +_08035DE8: .4byte gUnknown_3004FE0 +_08035DEC: .4byte sub_8035BE8 + thumb_func_end sub_8035C30 + + thumb_func_start sub_8035DF0 +sub_8035DF0: @ 8035DF0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, _08035FC0 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r1, _08035FC4 @ =gUnknown_2023BC4 + mov r9, r1 + ldrb r2, [r1] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r5, 0x88 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _08035E2C + ldr r0, _08035FC8 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08035FCC @ =gUnknown_202402C + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_08035E2C: + ldr r1, [r4] + mov r2, r9 + ldrb r0, [r2] + movs r7, 0x2 + adds r2, r7, 0 + eors r2, r0 + ldr r1, [r1, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _08035E60 + ldr r0, _08035FC8 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08035FCC @ =gUnknown_202402C + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_08035E60: + ldr r0, [r4] + mov r1, r9 + ldrb r2, [r1] + ldr r3, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + movs r4, 0x8 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08035E7E + b _08035FB4 +_08035E7E: + adds r1, r7, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08035E96 + b _08035FB4 +_08035E96: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08035F28 + ldr r0, _08035FD0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08035F28 + ldr r1, _08035FD4 @ =gUnknown_3004FFC + mov r2, r9 + ldrb r0, [r2] + eors r0, r7 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08035FD8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _08035FDC @ =gUnknown_3004FF0 + mov r1, r9 + ldrb r0, [r1] + adds r1, r7, 0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08035FC8 @ =gUnknown_2023BCE + mov r8, r2 + lsls r1, 1 + add r1, r8 + ldrh r1, [r1] + movs r6, 0x64 + muls r1, r6 + ldr r5, _08035FCC @ =gUnknown_202402C + adds r1, r5 + movs r2, 0 + bl sub_8049D98 + mov r1, r9 + ldrb r0, [r1] + eors r0, r7 + bl sub_804BD94 + mov r2, r9 + ldrb r0, [r2] + eors r0, r7 + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + mov r1, r9 + ldrb r0, [r1] + adds r4, r7, 0 + eors r4, r0 + lsls r0, r4, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 +_08035F28: + ldr r1, _08035FD4 @ =gUnknown_3004FFC + ldr r5, _08035FC4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08035FD8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _08035FDC @ =gUnknown_3004FF0 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08035FC8 @ =gUnknown_2023BCE + mov r9, r2 + lsls r1, 1 + add r1, r9 + ldrh r1, [r1] + movs r2, 0x64 + mov r8, r2 + mov r2, r8 + muls r2, r1 + adds r1, r2, 0 + ldr r6, _08035FCC @ =gUnknown_202402C + adds r1, r6 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + bl sub_804BD94 + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r4, [r5] + lsls r0, r4, 1 + add r0, r9 + ldrh r0, [r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + ldr r0, _08035FC0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x8] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldr r1, _08035FE0 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08035FE4 @ =sub_8035C30 + str r1, [r0] +_08035FB4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035FC0: .4byte gUnknown_2024018 +_08035FC4: .4byte gUnknown_2023BC4 +_08035FC8: .4byte gUnknown_2023BCE +_08035FCC: .4byte gUnknown_202402C +_08035FD0: .4byte gUnknown_2022B4C +_08035FD4: .4byte gUnknown_3004FFC +_08035FD8: .4byte gUnknown_202063C +_08035FDC: .4byte gUnknown_3004FF0 +_08035FE0: .4byte gUnknown_3004FE0 +_08035FE4: .4byte sub_8035C30 + thumb_func_end sub_8035DF0 + + thumb_func_start sub_8035FE8 +sub_8035FE8: @ 8035FE8 + push {r4-r7,lr} + ldr r2, _08036044 @ =gUnknown_202063C + ldr r0, _08036048 @ =gUnknown_2023D44 + ldr r7, _0803604C @ =gUnknown_2023BC4 + ldrb r3, [r7] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + lsrs r2, r0, 31 + cmp r2, 0x1 + bne _08036094 + movs r4, 0x24 + ldrsh r0, [r1, r4] + cmp r0, 0 + bne _08036094 + ldr r6, _08036050 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r4, r3, 1 + adds r0, r4, r3 + lsls r0, 2 + adds r1, r0, r1 + ldrb r5, [r1] + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + bne _0803605C + ldr r0, _08036054 @ =gUnknown_2023BCE + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08036058 @ =gUnknown_202402C + adds r1, r0 + adds r0, r3, 0 + bl sub_80F1720 + b _08036094 + .align 2, 0 +_08036044: .4byte gUnknown_202063C +_08036048: .4byte gUnknown_2023D44 +_0803604C: .4byte gUnknown_2023BC4 +_08036050: .4byte gUnknown_2024018 +_08036054: .4byte gUnknown_2023BCE +_08036058: .4byte gUnknown_202402C +_0803605C: + ldrb r0, [r1, 0x1] + ands r2, r0 + cmp r2, 0 + beq _08036094 + movs r0, 0x7F + ands r0, r5 + strb r0, [r1] + ldr r0, [r6] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _0803609C @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + bl sub_8036530 +_08036094: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803609C: .4byte 0x000027f9 + thumb_func_end sub_8035FE8 + + thumb_func_start sub_80360A0 +sub_80360A0: @ 80360A0 + push {r4-r6,lr} + ldr r6, _080360E0 @ =gUnknown_2023BC4 + ldrb r0, [r6] + ldr r5, _080360E4 @ =gUnknown_3004FF0 + adds r1, r0, r5 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r6] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + lsls r4, 16 + asrs r1, r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080360E8 + ldrb r0, [r6] + adds r0, r5 + ldrb r0, [r0] + movs r2, 0 + bl sub_8048440 + b _08036124 + .align 2, 0 +_080360E0: .4byte gUnknown_2023BC4 +_080360E4: .4byte gUnknown_3004FF0 +_080360E8: + movs r0, 0x1 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _08036120 + ldr r0, _08036114 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08036120 + movs r0, 0x1 + bl sub_80EB2F4 + ldr r0, _08036118 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803611C @ =sub_80E8570 + str r0, [r1] + b _08036124 + .align 2, 0 +_08036114: .4byte gUnknown_2022B4C +_08036118: .4byte gUnknown_3004FE0 +_0803611C: .4byte sub_80E8570 +_08036120: + bl sub_8036530 +_08036124: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80360A0 + + thumb_func_start sub_803612C +sub_803612C: @ 803612C + push {lr} + ldr r2, _08036160 @ =gUnknown_202063C + ldr r0, _08036164 @ =gUnknown_2023D44 + ldr r1, _08036168 @ =gUnknown_2023BC4 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0803615A + ldr r0, _0803616C @ =gUnknown_3004FF0 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8036530 +_0803615A: + pop {r0} + bx r0 + .align 2, 0 +_08036160: .4byte gUnknown_202063C +_08036164: .4byte gUnknown_2023D44 +_08036168: .4byte gUnknown_2023BC4 +_0803616C: .4byte gUnknown_3004FF0 + thumb_func_end sub_803612C + + thumb_func_start sub_8036170 +sub_8036170: @ 8036170 + push {r4-r6,lr} + ldr r0, _080361D0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _080361D4 @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080361CA + ldr r5, _080361D8 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080361DC @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldrb r0, [r6] + bl sub_8035794 + ldr r1, _080361E0 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8036530 +_080361CA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080361D0: .4byte gUnknown_2024018 +_080361D4: .4byte gUnknown_2023BC4 +_080361D8: .4byte gUnknown_2023D44 +_080361DC: .4byte gUnknown_202063C +_080361E0: .4byte gUnknown_3004FF0 + thumb_func_end sub_8036170 + + thumb_func_start sub_80361E4 +sub_80361E4: @ 80361E4 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080361F6 + bl sub_8036530 +_080361F6: + pop {r0} + bx r0 + thumb_func_end sub_80361E4 + + thumb_func_start sub_80361FC +sub_80361FC: @ 80361FC + push {r4,lr} + ldr r1, _08036238 @ =gUnknown_2023D44 + ldr r0, _0803623C @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _08036240 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x20 + bne _08036248 + movs r3, 0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + ldr r0, _08036244 @ =gUnknown_2024005 + strb r3, [r0] + bl sub_8036530 + b _08036272 + .align 2, 0 +_08036238: .4byte gUnknown_2023D44 +_0803623C: .4byte gUnknown_2023BC4 +_08036240: .4byte gUnknown_202063C +_08036244: .4byte gUnknown_2024005 +_08036248: + ldrh r0, [r4, 0x30] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0803626C + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0803626C: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_08036272: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80361FC + + thumb_func_start sub_8036278 +sub_8036278: @ 8036278 + push {r4,lr} + ldr r2, _080362CC @ =gUnknown_202063C + ldr r0, _080362D0 @ =gUnknown_3004FF0 + ldr r4, _080362D4 @ =gUnknown_2023BC4 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080362D8 @ =nullsub_8 + cmp r1, r0 + bne _080362C4 + ldr r0, _080362DC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080362B8 + adds r0, r3, 0 + adds r1, r3, 0 + adds r2, r3, 0 + movs r3, 0x6 + bl sub_80341D8 +_080362B8: + ldr r0, _080362E0 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _080362E4 @ =sub_80362E8 + str r0, [r1] +_080362C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080362CC: .4byte gUnknown_202063C +_080362D0: .4byte gUnknown_3004FF0 +_080362D4: .4byte gUnknown_2023BC4 +_080362D8: .4byte nullsub_8 +_080362DC: .4byte gUnknown_2024018 +_080362E0: .4byte gUnknown_3004FE0 +_080362E4: .4byte sub_80362E8 + thumb_func_end sub_8036278 + + thumb_func_start sub_80362E8 +sub_80362E8: @ 80362E8 + push {lr} + ldr r0, _08036324 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08036328 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08036320 + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + bne _08036320 + ldr r0, _0803632C @ =gMPlay_BGM + ldr r1, _08036330 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + bl sub_8036530 +_08036320: + pop {r0} + bx r0 + .align 2, 0 +_08036324: .4byte gUnknown_2024018 +_08036328: .4byte gUnknown_2023BC4 +_0803632C: .4byte gMPlay_BGM +_08036330: .4byte 0x0000ffff + thumb_func_end sub_80362E8 + + thumb_func_start sub_8036334 +sub_8036334: @ 8036334 + push {r4,r5,lr} + ldr r3, _080363E0 @ =gUnknown_2024018 + ldr r0, [r3] + ldr r5, _080363E4 @ =gUnknown_2023BC4 + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + ldrb r1, [r2, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080363D8 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r5] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _080363E8 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r1, _080363EC @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080363F0 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C + ldr r4, _080363F4 @ =gUnknown_3004FF0 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _080363F8 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080363FC @ =gUnknown_202402C + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + bl sub_804BD94 + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r0, [r5] + bl sub_8034BB4 + ldr r1, _08036400 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08036404 @ =sub_8036278 + str r1, [r0] +_080363D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080363E0: .4byte gUnknown_2024018 +_080363E4: .4byte gUnknown_2023BC4 +_080363E8: .4byte 0x000027f9 +_080363EC: .4byte gUnknown_2023D44 +_080363F0: .4byte gUnknown_202063C +_080363F4: .4byte gUnknown_3004FF0 +_080363F8: .4byte gUnknown_2023BCE +_080363FC: .4byte gUnknown_202402C +_08036400: .4byte gUnknown_3004FE0 +_08036404: .4byte sub_8036278 + thumb_func_end sub_8036334 + + thumb_func_start sub_8036408 +sub_8036408: @ 8036408 + push {r4-r6,lr} + ldr r6, _080364AC @ =gUnknown_2024018 + ldr r0, [r6] + ldr r5, _080364B0 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _0803643A + ldr r0, _080364B4 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080364B8 @ =gUnknown_202402C + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0803643A: + ldr r4, _080364BC @ =gUnknown_202063C + ldr r0, _080364C0 @ =gUnknown_3004FFC + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r3, r0, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _080364C4 @ =nullsub_8 + cmp r1, r0 + bne _080364A4 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080364A4 + adds r0, r3, r4 + bl sub_8007280 + ldrb r4, [r5] + ldr r1, _080364B4 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080364B8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + ldr r1, _080364C8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080364CC @ =sub_8036334 + str r1, [r0] +_080364A4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080364AC: .4byte gUnknown_2024018 +_080364B0: .4byte gUnknown_2023BC4 +_080364B4: .4byte gUnknown_2023BCE +_080364B8: .4byte gUnknown_202402C +_080364BC: .4byte gUnknown_202063C +_080364C0: .4byte gUnknown_3004FFC +_080364C4: .4byte nullsub_8 +_080364C8: .4byte gUnknown_3004FE0 +_080364CC: .4byte sub_8036334 + thumb_func_end sub_8036408 + + thumb_func_start sub_80364D0 +sub_80364D0: @ 80364D0 + push {lr} + ldr r0, _080364F8 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080364FC @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080364F2 + bl sub_8036530 +_080364F2: + pop {r0} + bx r0 + .align 2, 0 +_080364F8: .4byte gUnknown_2024018 +_080364FC: .4byte gUnknown_2023BC4 + thumb_func_end sub_80364D0 + + thumb_func_start sub_8036500 +sub_8036500: @ 8036500 + push {lr} + ldr r0, _08036528 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _0803652C @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08036522 + bl sub_8036530 +_08036522: + pop {r0} + bx r0 + .align 2, 0 +_08036528: .4byte gUnknown_2024018 +_0803652C: .4byte gUnknown_2023BC4 + thumb_func_end sub_8036500 + + thumb_func_start sub_8036530 +sub_8036530: @ 8036530 + ldr r1, _08036554 @ =gUnknown_3004FE0 + ldr r2, _08036558 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803655C @ =sub_8035A98 + str r1, [r0] + ldr r3, _08036560 @ =gUnknown_2023BC8 + ldr r1, _08036564 @ =gUnknown_825E45C + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + bx lr + .align 2, 0 +_08036554: .4byte gUnknown_3004FE0 +_08036558: .4byte gUnknown_2023BC4 +_0803655C: .4byte sub_8035A98 +_08036560: .4byte gUnknown_2023BC8 +_08036564: .4byte gUnknown_825E45C + thumb_func_end sub_8036530 + + thumb_func_start sub_8036568 +sub_8036568: @ 8036568 + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _08036594 @ =gUnknown_2022BC4 + ldr r0, _08036598 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _080365A0 + ldr r0, _0803659C @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_80365DC + adds r6, r0, 0 + b _080365C2 + .align 2, 0 +_08036594: .4byte gUnknown_2022BC4 +_08036598: .4byte gUnknown_2023BC4 +_0803659C: .4byte gUnknown_2023BCE +_080365A0: + ldrb r4, [r1] + movs r5, 0 +_080365A4: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080365BA + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl sub_80365DC + adds r6, r0 +_080365BA: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _080365A4 +_080365C2: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl sub_800E708 + bl sub_8036530 + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8036568 + + thumb_func_start sub_80365DC +sub_80365DC: @ 80365DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x90 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _08036610 @ =gUnknown_2022BC4 + ldr r3, _08036614 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _08036606 + bl _08036D72 +_08036606: + lsls r0, 2 + ldr r1, _08036618 @ =_0803661C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08036610: .4byte gUnknown_2022BC4 +_08036614: .4byte gUnknown_2023BC4 +_08036618: .4byte _0803661C + .align 2, 0 +_0803661C: + .4byte _0803670C + .4byte _08036930 + .4byte _08036940 + .4byte _08036950 + .4byte _080369B8 + .4byte _080369B8 + .4byte _080369B8 + .4byte _080369B8 + .4byte _080369D4 + .4byte _08036A10 + .4byte _08036A10 + .4byte _08036A10 + .4byte _08036A10 + .4byte _08036D72 + .4byte _08036D72 + .4byte _08036D72 + .4byte _08036D72 + .4byte _08036A2C + .4byte _08036A3C + .4byte _08036A6C + .4byte _08036A7C + .4byte _08036A8C + .4byte _08036A9C + .4byte _08036AAC + .4byte _08036ABC + .4byte _08036ACC + .4byte _08036ADC + .4byte _08036AEC + .4byte _08036AFC + .4byte _08036B0C + .4byte _08036B1C + .4byte _08036B2C + .4byte _08036B7C + .4byte _08036B8C + .4byte _08036B9C + .4byte _08036BAC + .4byte _08036BBC + .4byte _08036BCC + .4byte _08036BDC + .4byte _08036BEC + .4byte _08036BFC + .4byte _08036C30 + .4byte _08036C40 + .4byte _08036C50 + .4byte _08036C60 + .4byte _08036C70 + .4byte _08036C80 + .4byte _08036C90 + .4byte _08036CA0 + .4byte _08036CC0 + .4byte _08036CD0 + .4byte _08036CE0 + .4byte _08036CF0 + .4byte _08036D00 + .4byte _08036D10 + .4byte _08036D20 + .4byte _08036D30 + .4byte _08036D40 + .4byte _08036D50 + .4byte _08036D60 +_0803670C: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08036920 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2E] + movs r6, 0 + add r0, sp, 0x24 + mov r9, r0 + movs r1, 0x3B + add r1, sp + mov r10, r1 + mov r2, sp + adds r2, 0x2B + str r2, [sp, 0x80] + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x8C] + adds r2, 0x5 + str r2, [sp, 0x84] + adds r0, 0x12 + str r0, [sp, 0x88] + mov r8, r4 + add r4, sp, 0xC +_08036758: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + bl sub_803FBE8 + strh r0, [r4] + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + bl sub_803FBE8 + mov r2, r9 + adds r1, r2, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08036758 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08036920 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r10 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + ldr r2, [sp, 0x80] + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x44] + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + mov r3, sp + movs r5, 0x1F + ands r0, r5 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r3, sp + movs r6, 0x1F + ands r0, r6 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _08036924 @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _08036928 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + mov r3, sp + ands r0, r6 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _0803692C @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x48] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + str r0, [sp, 0x4C] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x54] + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, [sp, 0x8C] + bl sub_803FBE8 + ldr r0, [sp, 0x84] + ldr r1, [sp, 0x8C] + bl sub_8008CF4 + adds r0, r4, 0 + movs r1, 0x7 + ldr r2, [sp, 0x88] + bl sub_803FBE8 + mov r2, sp + movs r6, 0 +_08036910: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0x57 + bls _08036910 + b _08036D72 + .align 2, 0 +_08036920: .4byte gUnknown_202402C +_08036924: .4byte 0xfffffc1f +_08036928: .4byte 0xfff07fff +_0803692C: .4byte 0xfffffe0f +_08036930: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803693C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + b _08036CAA + .align 2, 0 +_0803693C: .4byte gUnknown_202402C +_08036940: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803694C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xC + b _08036CAA + .align 2, 0 +_0803694C: .4byte gUnknown_202402C +_08036950: + movs r6, 0 + add r2, sp, 0x58 + mov r9, r2 + add r0, sp, 0x60 + mov r10, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080369B4 @ =gUnknown_202402C + adds r4, r1, r0 + mov r8, r9 +_08036966: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r4, 0 + bl sub_803FBE8 + mov r2, r10 + adds r1, r2, r6 + strb r0, [r1] + movs r0, 0x2 + add r8, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _08036966 + movs r0, 0x64 + muls r0, r5 + ldr r1, _080369B4 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1, 0xC] + mov r2, r9 + movs r6, 0 +_080369A4: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0xF + bls _080369A4 + b _08036D72 + .align 2, 0 +_080369B4: .4byte gUnknown_202402C +_080369B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080369D0 @ =gUnknown_202402C + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x9 + b _08036CAA + .align 2, 0 +_080369D0: .4byte gUnknown_202402C +_080369D4: + movs r6, 0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r2, _08036A0C @ =gUnknown_202402C + mov r8, r2 +_080369E0: + adds r1, r6, 0 + adds r1, 0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x3 + ble _080369E0 + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A0C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + b _08036D72 + .align 2, 0 +_08036A0C: .4byte gUnknown_202402C +_08036A10: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A28 @ =gUnknown_202402C + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x8 + b _08036D6A + .align 2, 0 +_08036A28: .4byte gUnknown_202402C +_08036A2C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A38 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1 + b _08036A46 + .align 2, 0 +_08036A38: .4byte gUnknown_202402C +_08036A3C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A68 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x19 +_08036A46: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r6, 0x3 + b _08036D72 + .align 2, 0 +_08036A68: .4byte gUnknown_202402C +_08036A6C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A78 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1A + b _08036D6A + .align 2, 0 +_08036A78: .4byte gUnknown_202402C +_08036A7C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A88 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1B + b _08036D6A + .align 2, 0 +_08036A88: .4byte gUnknown_202402C +_08036A8C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036A98 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1C + b _08036D6A + .align 2, 0 +_08036A98: .4byte gUnknown_202402C +_08036A9C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036AA8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1D + b _08036D6A + .align 2, 0 +_08036AA8: .4byte gUnknown_202402C +_08036AAC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036AB8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1E + b _08036D6A + .align 2, 0 +_08036AB8: .4byte gUnknown_202402C +_08036ABC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036AC8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x1F + b _08036D6A + .align 2, 0 +_08036AC8: .4byte gUnknown_202402C +_08036ACC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036AD8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x20 + b _08036D6A + .align 2, 0 +_08036AD8: .4byte gUnknown_202402C +_08036ADC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036AE8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x22 + b _08036D6A + .align 2, 0 +_08036AE8: .4byte gUnknown_202402C +_08036AEC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036AF8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x23 + b _08036D6A + .align 2, 0 +_08036AF8: .4byte gUnknown_202402C +_08036AFC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036B08 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x24 + b _08036D6A + .align 2, 0 +_08036B08: .4byte gUnknown_202402C +_08036B0C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036B18 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x25 + b _08036D6A + .align 2, 0 +_08036B18: .4byte gUnknown_202402C +_08036B1C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036B28 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x26 + b _08036D6A + .align 2, 0 +_08036B28: .4byte gUnknown_202402C +_08036B2C: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08036B78 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + strb r0, [r7, 0x1] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + strb r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + strb r0, [r7, 0x3] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + strb r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + strb r0, [r7, 0x5] + movs r6, 0x6 + b _08036D72 + .align 2, 0 +_08036B78: .4byte gUnknown_202402C +_08036B7C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036B88 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x27 + b _08036D6A + .align 2, 0 +_08036B88: .4byte gUnknown_202402C +_08036B8C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036B98 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x28 + b _08036D6A + .align 2, 0 +_08036B98: .4byte gUnknown_202402C +_08036B9C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036BA8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x29 + b _08036D6A + .align 2, 0 +_08036BA8: .4byte gUnknown_202402C +_08036BAC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036BB8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2A + b _08036D6A + .align 2, 0 +_08036BB8: .4byte gUnknown_202402C +_08036BBC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036BC8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2B + b _08036D6A + .align 2, 0 +_08036BC8: .4byte gUnknown_202402C +_08036BCC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036BD8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2C + b _08036D6A + .align 2, 0 +_08036BD8: .4byte gUnknown_202402C +_08036BDC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036BE8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0 + b _08036C06 + .align 2, 0 +_08036BE8: .4byte gUnknown_202402C +_08036BEC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036BF8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x9 + b _08036CAA + .align 2, 0 +_08036BF8: .4byte gUnknown_202402C +_08036BFC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C2C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x37 +_08036C06: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r6, 0x4 + b _08036D72 + .align 2, 0 +_08036C2C: .4byte gUnknown_202402C +_08036C30: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C3C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x38 + b _08036D6A + .align 2, 0 +_08036C3C: .4byte gUnknown_202402C +_08036C40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C4C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x39 + b _08036CAA + .align 2, 0 +_08036C4C: .4byte gUnknown_202402C +_08036C50: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C5C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3A + b _08036CAA + .align 2, 0 +_08036C5C: .4byte gUnknown_202402C +_08036C60: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C6C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3B + b _08036CAA + .align 2, 0 +_08036C6C: .4byte gUnknown_202402C +_08036C70: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C7C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3C + b _08036CAA + .align 2, 0 +_08036C7C: .4byte gUnknown_202402C +_08036C80: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C8C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3D + b _08036CAA + .align 2, 0 +_08036C8C: .4byte gUnknown_202402C +_08036C90: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036C9C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3E + b _08036CAA + .align 2, 0 +_08036C9C: .4byte gUnknown_202402C +_08036CA0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036CBC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3F +_08036CAA: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r6, 0x2 + b _08036D72 + .align 2, 0 +_08036CBC: .4byte gUnknown_202402C +_08036CC0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036CCC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x16 + b _08036D6A + .align 2, 0 +_08036CCC: .4byte gUnknown_202402C +_08036CD0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036CDC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x17 + b _08036D6A + .align 2, 0 +_08036CDC: .4byte gUnknown_202402C +_08036CE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036CEC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x18 + b _08036D6A + .align 2, 0 +_08036CEC: .4byte gUnknown_202402C +_08036CF0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036CFC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x21 + b _08036D6A + .align 2, 0 +_08036CFC: .4byte gUnknown_202402C +_08036D00: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D0C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2F + b _08036D6A + .align 2, 0 +_08036D0C: .4byte gUnknown_202402C +_08036D10: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D1C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x30 + b _08036D6A + .align 2, 0 +_08036D1C: .4byte gUnknown_202402C +_08036D20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D2C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x32 + b _08036D6A + .align 2, 0 +_08036D2C: .4byte gUnknown_202402C +_08036D30: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D3C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x33 + b _08036D6A + .align 2, 0 +_08036D3C: .4byte gUnknown_202402C +_08036D40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D4C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x34 + b _08036D6A + .align 2, 0 +_08036D4C: .4byte gUnknown_202402C +_08036D50: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D5C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x35 + b _08036D6A + .align 2, 0 +_08036D5C: .4byte gUnknown_202402C +_08036D60: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08036D84 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x36 +_08036D6A: + bl sub_803FBE8 + strb r0, [r7] + movs r6, 0x1 +_08036D72: + adds r0, r6, 0 + add sp, 0x90 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08036D84: .4byte gUnknown_202402C + thumb_func_end sub_80365DC + + thumb_func_start sub_8036D88 +sub_8036D88: @ 8036D88 + push {r4-r7,lr} + sub sp, 0x58 + ldr r2, _08036E00 @ =gUnknown_2023BCE + ldr r5, _08036E04 @ =gUnknown_2023BC4 + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + adds r4, r2, 0 + muls r4, r0 + ldr r3, _08036E08 @ =gUnknown_2022BC4 + lsls r1, 9 + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r2, [r0] + ldr r0, _08036E0C @ =gUnknown_202402C + adds r0, r2, r0 + adds r6, r4, r0 + mov r0, sp + adds r4, r0, r2 + movs r2, 0 + adds r0, r3, 0x2 + adds r1, r0 + adds r7, r5, 0 + mov r12, r3 + ldrb r1, [r1] + cmp r2, r1 + bcs _08036DDE + adds r3, r0, 0 +_08036DC4: + adds r1, r4, r2 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r5] + lsls r0, 9 + adds r0, r3 + ldrb r0, [r0] + cmp r2, r0 + bcc _08036DC4 +_08036DDE: + ldrb r0, [r7] + lsls r0, 9 + mov r1, r12 + adds r1, 0x2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + adds r2, r4, 0 + bl sub_800E708 + bl sub_8036530 + add sp, 0x58 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08036E00: .4byte gUnknown_2023BCE +_08036E04: .4byte gUnknown_2023BC4 +_08036E08: .4byte gUnknown_2022BC4 +_08036E0C: .4byte gUnknown_202402C + thumb_func_end sub_8036D88 + + thumb_func_start sub_8036E10 +sub_8036E10: @ 8036E10 + push {r4,r5,lr} + ldr r1, _08036E34 @ =gUnknown_2022BC4 + ldr r0, _08036E38 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _08036E40 + ldr r0, _08036E3C @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_8036E68 + b _08036E5E + .align 2, 0 +_08036E34: .4byte gUnknown_2022BC4 +_08036E38: .4byte gUnknown_2023BC4 +_08036E3C: .4byte gUnknown_2023BCE +_08036E40: + ldrb r4, [r1] + movs r5, 0 +_08036E44: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08036E52 + adds r0, r5, 0 + bl sub_8036E68 +_08036E52: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08036E44 +_08036E5E: + bl sub_8036530 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8036E10 + + thumb_func_start sub_8036E68 +sub_8036E68: @ 8036E68 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r3, _08036EA0 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + ldr r2, _08036EA4 @ =gUnknown_2022BC7 + adds r4, r0, r2 + adds r7, r4, 0 + subs r1, r2, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r6, r3, 0 + adds r3, r2, 0 + cmp r0, 0x3B + bls _08036E96 + bl _08037774 +_08036E96: + lsls r0, 2 + ldr r1, _08036EA8 @ =_08036EAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08036EA0: .4byte gUnknown_2023BC4 +_08036EA4: .4byte gUnknown_2022BC7 +_08036EA8: .4byte _08036EAC + .align 2, 0 +_08036EAC: + .4byte _08036F9C + .4byte _08037134 + .4byte _08037150 + .4byte _0803716C + .4byte _080371C0 + .4byte _080371C0 + .4byte _080371C0 + .4byte _080371C0 + .4byte _080371E0 + .4byte _08037248 + .4byte _08037248 + .4byte _08037248 + .4byte _08037248 + .4byte _08037774 + .4byte _08037774 + .4byte _08037774 + .4byte _08037774 + .4byte _08037270 + .4byte _0803728C + .4byte _080372A8 + .4byte _080372C4 + .4byte _080372E0 + .4byte _080372FC + .4byte _08037318 + .4byte _08037334 + .4byte _08037350 + .4byte _0803736C + .4byte _08037388 + .4byte _080373A4 + .4byte _080373C0 + .4byte _080373DC + .4byte _080373F8 + .4byte _0803746C + .4byte _08037488 + .4byte _080374A4 + .4byte _080374C0 + .4byte _080374DC + .4byte _080374F8 + .4byte _08037514 + .4byte _08037530 + .4byte _0803754C + .4byte _08037568 + .4byte _08037584 + .4byte _080375A0 + .4byte _080375BC + .4byte _080375D8 + .4byte _080375F4 + .4byte _08037610 + .4byte _0803762C + .4byte _08037648 + .4byte _08037664 + .4byte _08037680 + .4byte _0803769C + .4byte _080376B8 + .4byte _080376D4 + .4byte _080376F0 + .4byte _0803770C + .4byte _08037728 + .4byte _08037744 + .4byte _08037760 +_08036F9C: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08037130 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + adds r2, r7, 0 + bl sub_804037C + adds r2, r7, 0 + adds r2, 0x2E + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + movs r0, 0 + mov r8, r0 + movs r0, 0x3B + adds r0, r7 + mov r10, r0 + adds r0, r7, 0 + adds r0, 0x2B + str r0, [sp, 0x20] + adds r0, 0x19 + str r0, [sp, 0x28] + adds r0, 0x4 + str r0, [sp, 0x2C] + adds r0, 0x4 + str r0, [sp, 0x30] + subs r0, 0x22 + str r0, [sp, 0x1C] + subs r0, 0x2 + str r0, [sp, 0x18] + adds r0, 0x4 + str r0, [sp, 0x24] + adds r0, r7, 0x2 + str r0, [sp, 0x4] + adds r0, r7, 0x4 + str r0, [sp, 0x8] + adds r0, r7, 0x6 + str r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x14] + mov r9, r4 + adds r6, r7, 0 + adds r6, 0x24 + adds r4, r7, 0 + adds r4, 0xC +_08037002: + mov r1, r8 + adds r1, 0xD + mov r0, r9 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + mov r0, r9 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _08037002 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08037130 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + mov r2, r10 + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x20 + ldr r2, [sp, 0x20] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x19 + ldr r2, [sp, 0x28] + bl sub_804037C + ldrb r0, [r7, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r7, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x28 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r7, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x29 + mov r2, sp + bl sub_804037C + mov r1, sp + ldr r0, [r7, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2A + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r7, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2B + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r7, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0 + ldr r2, [sp, 0x2C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x37 + ldr r2, [sp, 0x30] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x38 + ldr r2, [sp, 0x1C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + ldr r2, [sp, 0x18] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + ldr r2, [sp, 0x24] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3B + ldr r2, [sp, 0x4] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + ldr r2, [sp, 0x8] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + ldr r2, [sp, 0xC] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + ldr r2, [sp, 0x10] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + ldr r2, [sp, 0x14] + bl sub_804037C + b _08037774 + .align 2, 0 +_08037130: .4byte gUnknown_202402C +_08037134: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803714C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0xB + bl sub_804037C + b _08037774 + .align 2, 0 +_0803714C: .4byte gUnknown_202402C +_08037150: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037168 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0xC + bl sub_804037C + b _08037774 + .align 2, 0 +_08037168: .4byte gUnknown_202402C +_0803716C: + movs r0, 0 + mov r8, r0 + movs r0, 0xC + adds r0, r4 + mov r9, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080371BC @ =gUnknown_202402C + adds r7, r1, r0 + adds r6, r4, 0 + adds r6, 0x8 +_08037184: + mov r1, r8 + adds r1, 0xD + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + adds r0, r7, 0 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _08037184 + movs r0, 0x64 + muls r0, r5 + ldr r1, _080371BC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + b _08037774 + .align 2, 0 +_080371BC: .4byte gUnknown_202402C +_080371C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080371D8 @ =gUnknown_202402C + adds r0, r1 + ldr r3, _080371DC @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x9 + b _0803725E + .align 2, 0 +_080371D8: .4byte gUnknown_202402C +_080371DC: .4byte gUnknown_2022BC4 +_080371E0: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08037244 @ =gUnknown_202402C + adds r4, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + adds r0, r4, 0 + movs r1, 0x11 + str r3, [sp, 0x34] + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x12 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x13 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x14 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037244: .4byte gUnknown_202402C +_08037248: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037268 @ =gUnknown_202402C + adds r0, r1 + ldr r3, _0803726C @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x8 +_0803725E: + adds r3, 0x3 + adds r2, r3 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037268: .4byte gUnknown_202402C +_0803726C: .4byte gUnknown_2022BC4 +_08037270: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037288 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037288: .4byte gUnknown_202402C +_0803728C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080372A4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x19 + bl sub_804037C + b _08037774 + .align 2, 0 +_080372A4: .4byte gUnknown_202402C +_080372A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080372C0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1A + bl sub_804037C + b _08037774 + .align 2, 0 +_080372C0: .4byte gUnknown_202402C +_080372C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080372DC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1B + bl sub_804037C + b _08037774 + .align 2, 0 +_080372DC: .4byte gUnknown_202402C +_080372E0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080372F8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1C + bl sub_804037C + b _08037774 + .align 2, 0 +_080372F8: .4byte gUnknown_202402C +_080372FC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037314 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1D + bl sub_804037C + b _08037774 + .align 2, 0 +_08037314: .4byte gUnknown_202402C +_08037318: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037330 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1E + bl sub_804037C + b _08037774 + .align 2, 0 +_08037330: .4byte gUnknown_202402C +_08037334: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803734C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x1F + bl sub_804037C + b _08037774 + .align 2, 0 +_0803734C: .4byte gUnknown_202402C +_08037350: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037368 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x20 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037368: .4byte gUnknown_202402C +_0803736C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037384 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x22 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037384: .4byte gUnknown_202402C +_08037388: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080373A0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x23 + bl sub_804037C + b _08037774 + .align 2, 0 +_080373A0: .4byte gUnknown_202402C +_080373A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080373BC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x24 + bl sub_804037C + b _08037774 + .align 2, 0 +_080373BC: .4byte gUnknown_202402C +_080373C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080373D8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x25 + bl sub_804037C + b _08037774 + .align 2, 0 +_080373D8: .4byte gUnknown_202402C +_080373DC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080373F4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x26 + bl sub_804037C + b _08037774 + .align 2, 0 +_080373F4: .4byte gUnknown_202402C +_080373F8: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08037468 @ =gUnknown_202402C + adds r4, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + adds r0, r4, 0 + movs r1, 0x27 + str r3, [sp, 0x34] + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x28 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x29 + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2A + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2B + bl sub_804037C + ldrb r2, [r6] + lsls r2, 9 + ldr r3, [sp, 0x34] + adds r0, r3, 0x5 + adds r2, r0 + adds r0, r4, 0 + b _08037506 + .align 2, 0 +_08037468: .4byte gUnknown_202402C +_0803746C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037484 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x27 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037484: .4byte gUnknown_202402C +_08037488: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080374A0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x28 + bl sub_804037C + b _08037774 + .align 2, 0 +_080374A0: .4byte gUnknown_202402C +_080374A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080374BC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x29 + bl sub_804037C + b _08037774 + .align 2, 0 +_080374BC: .4byte gUnknown_202402C +_080374C0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080374D8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2A + bl sub_804037C + b _08037774 + .align 2, 0 +_080374D8: .4byte gUnknown_202402C +_080374DC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080374F4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2B + bl sub_804037C + b _08037774 + .align 2, 0 +_080374F4: .4byte gUnknown_202402C +_080374F8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037510 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 +_08037506: + movs r1, 0x2C + bl sub_804037C + b _08037774 + .align 2, 0 +_08037510: .4byte gUnknown_202402C +_08037514: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803752C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0 + bl sub_804037C + b _08037774 + .align 2, 0 +_0803752C: .4byte gUnknown_202402C +_08037530: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037548 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x9 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037548: .4byte gUnknown_202402C +_0803754C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037564 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x37 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037564: .4byte gUnknown_202402C +_08037568: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037580 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x38 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037580: .4byte gUnknown_202402C +_08037584: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803759C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x39 + bl sub_804037C + b _08037774 + .align 2, 0 +_0803759C: .4byte gUnknown_202402C +_080375A0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080375B8 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3A + bl sub_804037C + b _08037774 + .align 2, 0 +_080375B8: .4byte gUnknown_202402C +_080375BC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080375D4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3B + bl sub_804037C + b _08037774 + .align 2, 0 +_080375D4: .4byte gUnknown_202402C +_080375D8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080375F0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3C + bl sub_804037C + b _08037774 + .align 2, 0 +_080375F0: .4byte gUnknown_202402C +_080375F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803760C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3D + bl sub_804037C + b _08037774 + .align 2, 0 +_0803760C: .4byte gUnknown_202402C +_08037610: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037628 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3E + bl sub_804037C + b _08037774 + .align 2, 0 +_08037628: .4byte gUnknown_202402C +_0803762C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037644 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x3F + bl sub_804037C + b _08037774 + .align 2, 0 +_08037644: .4byte gUnknown_202402C +_08037648: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037660 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x16 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037660: .4byte gUnknown_202402C +_08037664: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803767C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x17 + bl sub_804037C + b _08037774 + .align 2, 0 +_0803767C: .4byte gUnknown_202402C +_08037680: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037698 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x18 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037698: .4byte gUnknown_202402C +_0803769C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080376B4 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x21 + bl sub_804037C + b _08037774 + .align 2, 0 +_080376B4: .4byte gUnknown_202402C +_080376B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080376D0 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x2F + bl sub_804037C + b _08037774 + .align 2, 0 +_080376D0: .4byte gUnknown_202402C +_080376D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080376EC @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x30 + bl sub_804037C + b _08037774 + .align 2, 0 +_080376EC: .4byte gUnknown_202402C +_080376F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037708 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x32 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037708: .4byte gUnknown_202402C +_0803770C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037724 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x33 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037724: .4byte gUnknown_202402C +_08037728: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037740 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x34 + bl sub_804037C + b _08037774 + .align 2, 0 +_08037740: .4byte gUnknown_202402C +_08037744: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0803775C @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x35 + bl sub_804037C + b _08037774 + .align 2, 0 +_0803775C: .4byte gUnknown_202402C +_08037760: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08037784 @ =gUnknown_202402C + adds r0, r1 + ldrb r2, [r6] + lsls r2, 9 + adds r2, r3 + movs r1, 0x36 + bl sub_804037C +_08037774: + add sp, 0x38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08037784: .4byte gUnknown_202402C + thumb_func_end sub_8036E68 + + thumb_func_start sub_8037788 +sub_8037788: @ 8037788 + push {r4-r7,lr} + ldr r1, _080377EC @ =gUnknown_2023BCE + ldr r7, _080377F0 @ =gUnknown_2023BC4 + ldrb r2, [r7] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + adds r3, r1, 0 + muls r3, r0 + ldr r4, _080377F4 @ =gUnknown_2022BC4 + lsls r2, 9 + adds r0, r4, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _080377F8 @ =gUnknown_202402C + adds r0, r1 + adds r5, r3, r0 + movs r3, 0 + adds r0, r4, 0x2 + adds r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bcs _080377E0 + adds r6, r4, 0 + adds r2, r7, 0 + adds r4, r0, 0 +_080377BE: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, 9 + adds r0, 0x3 + adds r0, r3, r0 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r2] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r3, r0 + bcc _080377BE +_080377E0: + bl sub_8036530 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080377EC: .4byte gUnknown_2023BCE +_080377F0: .4byte gUnknown_2023BC4 +_080377F4: .4byte gUnknown_2022BC4 +_080377F8: .4byte gUnknown_202402C + thumb_func_end sub_8037788 + + thumb_func_start sub_80377FC +sub_80377FC: @ 80377FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _0803787C @ =gUnknown_2023BCE + ldr r4, _08037880 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r6, _08037884 @ =gUnknown_202402C + adds r0, r6 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _08037888 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _08037890 + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r5 + adds r0, r6 + bl sub_8034658 + ldrb r0, [r4] + bl sub_8074900 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r3, _0803788C @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r1, [r4] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + ldrb r1, [r4] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x1] + b _080378AA + .align 2, 0 +_0803787C: .4byte gUnknown_2023BCE +_08037880: .4byte gUnknown_2023BC4 +_08037884: .4byte gUnknown_202402C +_08037888: .4byte gUnknown_2022B4C +_0803788C: .4byte gUnknown_2024018 +_08037890: + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r5 + adds r0, r6 + bl sub_8034320 + ldrb r0, [r4] + bl sub_80748A8 + lsls r0, 24 + lsrs r5, r0, 24 +_080378AA: + ldr r7, _0803799C @ =gUnknown_2023BC4 + ldrb r0, [r7] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r6, _080379A0 @ =gUnknown_20244DC + ldrb r0, [r7] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r7] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8006F8C + ldr r4, _080379A4 @ =gUnknown_2023D44 + ldrb r1, [r7] + adds r1, r4 + strb r0, [r1] + ldr r5, _080379A8 @ =gUnknown_202063C + ldrb r0, [r7] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080379AC @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r2, [r7] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x2E] + ldrb r0, [r7] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r3, [r7] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r2, [r7] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080379B0 @ =gUnknown_2024024 + adds r2, r1 + ldrb r1, [r2] + bl sub_800838C + ldr r0, _080379B4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _08037986 + ldrb r4, [r7] + ldr r1, _080379B8 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080379BC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 +_08037986: + ldr r0, _080379C0 @ =gUnknown_3004FE0 + ldrb r1, [r7] + lsls r1, 2 + adds r1, r0 + ldr r0, _080379C4 @ =sub_8035FE8 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803799C: .4byte gUnknown_2023BC4 +_080379A0: .4byte gUnknown_20244DC +_080379A4: .4byte gUnknown_2023D44 +_080379A8: .4byte gUnknown_202063C +_080379AC: .4byte 0x0000ff10 +_080379B0: .4byte gUnknown_2024024 +_080379B4: .4byte gUnknown_2022B4C +_080379B8: .4byte gUnknown_2023BCE +_080379BC: .4byte gUnknown_202402C +_080379C0: .4byte gUnknown_3004FE0 +_080379C4: .4byte sub_8035FE8 + thumb_func_end sub_80377FC + + thumb_func_start sub_80379C8 +sub_80379C8: @ 80379C8 + push {r4,lr} + ldr r4, _08037A10 @ =gUnknown_2023BC4 + ldrb r0, [r4] + ldr r1, _08037A14 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x5C + movs r1, 0x6 + strb r1, [r0] + ldr r1, _08037A18 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r2, r0, 1 + adds r2, r1 + ldr r3, _08037A1C @ =gUnknown_2022BC4 + lsls r0, 9 + adds r1, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldrb r0, [r4] + lsls r1, r0, 9 + adds r3, 0x2 + adds r1, r3 + ldrb r1, [r1] + bl sub_8037A28 + ldr r1, _08037A20 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08037A24 @ =sub_8036408 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08037A10: .4byte gUnknown_2023BC4 +_08037A14: .4byte gUnknown_2023FE8 +_08037A18: .4byte gUnknown_2023BCE +_08037A1C: .4byte gUnknown_2022BC4 +_08037A20: .4byte gUnknown_3004FE0 +_08037A24: .4byte sub_8036408 + thumb_func_end sub_80379C8 + + thumb_func_start sub_8037A28 +sub_8037A28: @ 8037A28 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_803589C + ldr r0, _08037B84 @ =gUnknown_2023BCE + lsls r4, r6, 1 + adds r4, r0 + ldr r0, _08037B88 @ =gUnknown_2022BC4 + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0x64 + mov r9, r1 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + ldr r5, _08037B8C @ =gUnknown_202402C + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _08037B90 @ =sub_8033E3C + bl sub_8044EF8 + ldr r1, _08037B94 @ =gUnknown_3004FFC + mov r10, r1 + add r10, r6 + mov r1, r10 + strb r0, [r1] + ldrh r0, [r4] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + adds r0, r5 + adds r1, r6, 0 + bl sub_8034320 + adds r0, r6, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _08037B98 @ =gUnknown_20244DC + mov r9, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r9 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _08037B9C @ =gUnknown_2023D44 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _08037BA0 @ =gUnknown_202063C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + mov r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08037BA4 @ =gUnknown_2024024 + adds r6, r1 + ldrb r1, [r6] + bl sub_800838C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08037BA8 @ =nullsub_8 + str r1, [r0] + movs r0, 0 + movs r1, 0xFE + bl sub_804A938 + mov r1, r10 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08037B84: .4byte gUnknown_2023BCE +_08037B88: .4byte gUnknown_2022BC4 +_08037B8C: .4byte gUnknown_202402C +_08037B90: .4byte sub_8033E3C +_08037B94: .4byte gUnknown_3004FFC +_08037B98: .4byte gUnknown_20244DC +_08037B9C: .4byte gUnknown_2023D44 +_08037BA0: .4byte gUnknown_202063C +_08037BA4: .4byte gUnknown_2024024 +_08037BA8: .4byte nullsub_8 + thumb_func_end sub_8037A28 + + thumb_func_start sub_8037BAC +sub_8037BAC: @ 8037BAC + push {r4-r6,lr} + ldr r1, _08037BE0 @ =gUnknown_2022BC4 + ldr r6, _08037BE4 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _08037BF4 + ldr r0, _08037BE8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strb r3, [r0, 0x4] + ldr r1, _08037BEC @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08037BF0 @ =sub_8037C44 + str r1, [r0] + b _08037C30 + .align 2, 0 +_08037BE0: .4byte gUnknown_2022BC4 +_08037BE4: .4byte gUnknown_2023BC4 +_08037BE8: .4byte gUnknown_2024018 +_08037BEC: .4byte gUnknown_3004FE0 +_08037BF0: .4byte sub_8037C44 +_08037BF4: + ldr r5, _08037C38 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08037C3C @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldrb r0, [r6] + bl sub_8035794 + ldr r1, _08037C40 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8036530 +_08037C30: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08037C38: .4byte gUnknown_2023D44 +_08037C3C: .4byte gUnknown_202063C +_08037C40: .4byte gUnknown_3004FF0 + thumb_func_end sub_8037BAC + + thumb_func_start sub_8037C44 +sub_8037C44: @ 8037C44 + push {r4-r6,lr} + ldr r6, _08037C64 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _08037C68 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r4, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x4] + cmp r0, 0 + beq _08037C6C + cmp r0, 0x1 + beq _08037C9A + b _08037CC2 + .align 2, 0 +_08037C64: .4byte gUnknown_2024018 +_08037C68: .4byte gUnknown_2023BC4 +_08037C6C: + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08037C86 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_08037C86: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _08037CC2 +_08037C9A: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08037CC2 + strb r0, [r3, 0x4] + ldrb r2, [r5] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x2 + bl sub_80341D8 + ldr r1, _08037CC8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08037CCC @ =sub_8036170 + str r1, [r0] +_08037CC2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08037CC8: .4byte gUnknown_3004FE0 +_08037CCC: .4byte sub_8036170 + thumb_func_end sub_8037C44 + + thumb_func_start sub_8037CD0 +sub_8037CD0: @ 8037CD0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r3, _08037CEC @ =gUnknown_20386AE + ldrh r1, [r3] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _08037CF0 + bl sub_8040EEC + b _08037D26 + .align 2, 0 +_08037CEC: .4byte gUnknown_20386AE +_08037CF0: + ldr r0, _08037D04 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _08037D08 + bl sub_80E6078 + b _08037D26 + .align 2, 0 +_08037D04: .4byte gUnknown_2022B4C +_08037D08: + movs r0, 0x80 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + beq _08037D18 + bl sub_815DA3C + b _08037D26 +_08037D18: + movs r0, 0x80 + lsls r0, 4 + ands r1, r0 + cmp r1, 0 + beq _08037D2C + bl sub_80E7420 +_08037D26: + lsls r0, 24 + lsrs r0, 24 + b _08037D3A +_08037D2C: + ldr r2, _08037E6C @ =gUnknown_823EAC8 + ldrh r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x3] +_08037D3A: + mov r9, r0 + ldr r0, _08037E70 @ =gUnknown_2023BC4 + mov r8, r0 + ldrb r1, [r0] + mov r0, r9 + bl sub_80346C4 + mov r1, r8 + ldrb r0, [r1] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r9 + bl sub_803F864 + ldr r5, _08037E74 @ =gUnknown_20244DC + ldr r1, _08037E78 @ =gUnknown_823932C + mov r2, r9 + lsls r0, r2, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 14 + adds r4, r0 + asrs r4, 16 + mov r1, r8 + ldrb r0, [r1] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + movs r1, 0xB0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r5, _08037E7C @ =gUnknown_2023D44 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + strb r0, [r1] + ldr r4, _08037E80 @ =gUnknown_202063C + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08037E84 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldr r0, _08037E88 @ =gUnknown_8239A1C + mov r1, r9 + lsls r6, r1, 3 + adds r0, r6, r0 + ldrh r0, [r0, 0x4] + bl sub_80089E8 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r4 + lsls r0, 4 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0x5] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r1, 0x38] + ldr r0, _08037E8C @ =gUnknown_823957C + adds r6, r0 + ldrh r0, [r6, 0x6] + bl sub_8008804 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldr r2, _08037E90 @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _08037E94 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r2, r9 + strh r2, [r0, 0x6] + mov r1, r8 + ldrb r0, [r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _08037E98 @ =sub_8033EEC + str r1, [r0] + ldr r1, _08037E9C @ =gUnknown_3004FE0 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08037EA0 @ =sub_8035AE8 + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08037E6C: .4byte gUnknown_823EAC8 +_08037E70: .4byte gUnknown_2023BC4 +_08037E74: .4byte gUnknown_20244DC +_08037E78: .4byte gUnknown_823932C +_08037E7C: .4byte gUnknown_2023D44 +_08037E80: .4byte gUnknown_202063C +_08037E84: .4byte 0x0000ff10 +_08037E88: .4byte gUnknown_8239A1C +_08037E8C: .4byte gUnknown_823957C +_08037E90: .4byte 0x000003ff +_08037E94: .4byte 0xfffffc00 +_08037E98: .4byte sub_8033EEC +_08037E9C: .4byte gUnknown_3004FE0 +_08037EA0: .4byte sub_8035AE8 + thumb_func_end sub_8037CD0 + + thumb_func_start sub_8037EA4 +sub_8037EA4: @ 8037EA4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r3, _08037EC0 @ =gUnknown_20386AE + ldrh r1, [r3] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _08037EC4 + bl sub_8040EEC + b _08037EFA + .align 2, 0 +_08037EC0: .4byte gUnknown_20386AE +_08037EC4: + ldr r0, _08037ED8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _08037EDC + bl sub_80E6078 + b _08037EFA + .align 2, 0 +_08037ED8: .4byte gUnknown_2022B4C +_08037EDC: + movs r0, 0x80 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + beq _08037EEC + bl sub_815DA3C + b _08037EFA +_08037EEC: + movs r0, 0x80 + lsls r0, 4 + ands r1, r0 + cmp r1, 0 + beq _08037F00 + bl sub_80E7420 +_08037EFA: + lsls r0, 24 + lsrs r0, 24 + b _08037F0E +_08037F00: + ldr r2, _08038040 @ =gUnknown_823EAC8 + ldrh r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x3] +_08037F0E: + mov r9, r0 + ldr r0, _08038044 @ =gUnknown_2023BC4 + mov r8, r0 + ldrb r1, [r0] + mov r0, r9 + bl sub_80346C4 + mov r1, r8 + ldrb r0, [r1] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r9 + bl sub_803F864 + ldr r0, _08038048 @ =gUnknown_20244DC + ldr r2, _0803804C @ =gUnknown_823932C + mov r3, r9 + lsls r1, r3, 2 + adds r1, r2 + ldrb r1, [r1] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 14 + adds r2, r1 + asrs r2, 16 + movs r1, 0xB0 + movs r3, 0x1E + bl sub_8006F8C + ldr r5, _08038050 @ =gUnknown_2023D44 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + strb r0, [r1] + ldr r4, _08038054 @ =gUnknown_202063C + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x60 + strh r1, [r0, 0x24] + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x20] + adds r1, 0x20 + strh r1, [r0, 0x20] + ldrb r0, [r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08038058 @ =0x0000fffe + strh r1, [r0, 0x2E] + ldr r0, _0803805C @ =gUnknown_8239A1C + mov r3, r9 + lsls r6, r3, 3 + adds r0, r6, r0 + ldrh r0, [r0, 0x4] + bl sub_80089E8 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r4 + lsls r0, 4 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0x5] + mov r3, r8 + ldrb r0, [r3] + adds r0, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r1, 0x38] + ldr r0, _08038060 @ =gUnknown_823957C + adds r6, r0 + ldrh r0, [r6, 0x6] + bl sub_8008804 + mov r2, r8 + ldrb r1, [r2] + adds r1, r5 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldr r2, _08038064 @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _08038068 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + mov r3, r8 + ldrb r0, [r3] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r1, r9 + strh r1, [r0, 0x6] + ldrb r0, [r3] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _0803806C @ =sub_8033EEC + str r1, [r0] + ldr r1, _08038070 @ =gUnknown_3004FE0 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038074 @ =sub_8035B20 + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08038040: .4byte gUnknown_823EAC8 +_08038044: .4byte gUnknown_2023BC4 +_08038048: .4byte gUnknown_20244DC +_0803804C: .4byte gUnknown_823932C +_08038050: .4byte gUnknown_2023D44 +_08038054: .4byte gUnknown_202063C +_08038058: .4byte 0x0000fffe +_0803805C: .4byte gUnknown_8239A1C +_08038060: .4byte gUnknown_823957C +_08038064: .4byte 0x000003ff +_08038068: .4byte 0xfffffc00 +_0803806C: .4byte sub_8033EEC +_08038070: .4byte gUnknown_3004FE0 +_08038074: .4byte sub_8035B20 + thumb_func_end sub_8037EA4 + + thumb_func_start sub_8038078 +sub_8038078: @ 8038078 + push {r4-r6,lr} + ldr r6, _08038108 @ =gUnknown_2023D44 + ldr r4, _0803810C @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08038110 @ =gUnknown_202063C + adds r0, r5 + bl sub_80750FC + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x8C + lsls r1, 1 + strh r1, [r0, 0x32] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08038114 @ =sub_8075590 + str r1, [r0] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08038118 @ =nullsub_8 + bl sub_8074A68 + ldr r1, _0803811C @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038120 @ =sub_8035B58 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08038108: .4byte gUnknown_2023D44 +_0803810C: .4byte gUnknown_2023BC4 +_08038110: .4byte gUnknown_202063C +_08038114: .4byte sub_8075590 +_08038118: .4byte nullsub_8 +_0803811C: .4byte gUnknown_3004FE0 +_08038120: .4byte sub_8035B58 + thumb_func_end sub_8038078 + + thumb_func_start sub_8038124 +sub_8038124: @ 8038124 + push {r4-r6,lr} + ldr r6, _08038170 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _08038174 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, [r4, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _08038178 + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08038158 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_08038158: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + adds r1, 0x1 + strb r1, [r0, 0x4] + b _080381B4 + .align 2, 0 +_08038170: .4byte gUnknown_2024018 +_08038174: .4byte gUnknown_2023BC4 +_08038178: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080381B4 + strb r0, [r3, 0x4] + movs r0, 0x10 + movs r1, 0x3F + bl sub_80722F4 + ldr r2, _080381BC @ =gUnknown_202063C + ldr r1, _080381C0 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080381C4 @ =sub_8011EA0 + str r1, [r0] + ldr r1, _080381C8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080381CC @ =sub_803612C + str r1, [r0] +_080381B4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080381BC: .4byte gUnknown_202063C +_080381C0: .4byte gUnknown_2023D44 +_080381C4: .4byte sub_8011EA0 +_080381C8: .4byte gUnknown_3004FE0 +_080381CC: .4byte sub_803612C + thumb_func_end sub_8038124 + + thumb_func_start sub_80381D0 +sub_80381D0: @ 80381D0 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_80381D0 + + thumb_func_start sub_80381DC +sub_80381DC: @ 80381DC + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_80381DC + + thumb_func_start sub_80381E8 +sub_80381E8: @ 80381E8 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_80381E8 + + thumb_func_start sub_80381F4 +sub_80381F4: @ 80381F4 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_80381F4 + + thumb_func_start sub_8038200 +sub_8038200: @ 8038200 + push {r4-r6,lr} + ldr r6, _080382E4 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + beq _08038212 + b _08038326 +_08038212: + ldr r0, _080382E8 @ =gUnknown_2022BC4 + mov r12, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _080382EC @ =gUnknown_2037F16 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _080382F0 @ =gUnknown_2037EEC + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _080382F4 @ =gUnknown_2037EE8 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _080382F8 @ =gUnknown_2037EFE + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _080382FC @ =gUnknown_2037F00 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _08038300 @ =gUnknown_2037EE4 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _08038304 @ =gUnknown_2024008 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_80342A0 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08038308 + bl sub_8036530 + b _08038326 + .align 2, 0 +_080382E4: .4byte gUnknown_2023BC4 +_080382E8: .4byte gUnknown_2022BC4 +_080382EC: .4byte gUnknown_2037F16 +_080382F0: .4byte gUnknown_2037EEC +_080382F4: .4byte gUnknown_2037EE8 +_080382F8: .4byte gUnknown_2037EFE +_080382FC: .4byte gUnknown_2037F00 +_08038300: .4byte gUnknown_2037EE4 +_08038304: .4byte gUnknown_2024008 +_08038308: + ldr r0, _0803832C @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x4] + ldr r1, _08038330 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038334 @ =sub_8038338 + str r1, [r0] +_08038326: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803832C: .4byte gUnknown_2024018 +_08038330: .4byte gUnknown_3004FE0 +_08038334: .4byte sub_8038338 + thumb_func_end sub_8038200 + + thumb_func_start sub_8038338 +sub_8038338: @ 8038338 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _08038384 @ =gUnknown_2022BC4 + ldr r6, _08038388 @ =gUnknown_2023BC4 + ldrb r3, [r6] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r10, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, 0x2 + mov r9, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + adds r2, 0xB + adds r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _0803838C @ =gUnknown_2024018 + ldr r5, [r7] + ldr r1, [r5, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _080383D0 + cmp r2, 0x1 + bgt _08038390 + cmp r2, 0 + beq _0803839A + b _080384AC + .align 2, 0 +_08038384: .4byte gUnknown_2022BC4 +_08038388: .4byte gUnknown_2023BC4 +_0803838C: .4byte gUnknown_2024018 +_08038390: + cmp r2, 0x2 + beq _080383FA + cmp r2, 0x3 + beq _08038470 + b _080384AC +_0803839A: + ldr r1, [r5] + lsls r0, r3, 2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, 0xC + ands r0, r2 + cmp r0, 0x4 + bne _080383BC + movs r0, 0x8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_080383BC: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _080384AC +_080383D0: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080384AC + movs r0, 0 + bl sub_8035450 + adds r0, r4, 0 + bl sub_807259C + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x4] + b _080384AC +_080383FA: + ldr r0, _08038460 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08038464 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _080384AC + movs r0, 0x1 + bl sub_8035450 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08038448 + mov r0, r8 + cmp r0, 0x1 + bhi _08038448 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_08038448: + ldr r0, _08038468 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _0803846C @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _080384AC + .align 2, 0 +_08038460: .4byte gUnknown_2037EDC +_08038464: .4byte gUnknown_2037EE1 +_08038468: .4byte gUnknown_2024018 +_0803846C: .4byte gUnknown_2023BC4 +_08038470: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080384AC + bl sub_8034B40 + ldrb r0, [r6] + lsls r2, r0, 9 + mov r3, r10 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r9 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_8035200 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x4] + bl sub_8036530 +_080384AC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8038338 + + thumb_func_start sub_80384BC +sub_80384BC: @ 80384BC + push {r4,lr} + ldr r0, _080384F0 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _080384F4 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _080384F8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + ldr r1, _080384FC @ =gUnknown_2022BC6 + adds r4, r0, r1 + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _08038504 + ldr r0, _08038500 @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _0803850C + .align 2, 0 +_080384F0: .4byte gUnknown_2022974 +_080384F4: .4byte gUnknown_2022976 +_080384F8: .4byte gUnknown_2023BC4 +_080384FC: .4byte gUnknown_2022BC6 +_08038500: .4byte gUnknown_202298C +_08038504: + ldr r0, _08038534 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_0803850C: + ldr r0, _08038538 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08038568 + ldrh r1, [r4] + cmp r1, 0xE3 + beq _0803854C + ldr r0, _0803853C @ =0x0000017f + cmp r1, r0 + bne _08038568 + ldr r1, _08038540 @ =gUnknown_3004FE0 + ldr r0, _08038544 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038548 @ =sub_80E85C0 + b _08038574 + .align 2, 0 +_08038534: .4byte gUnknown_202298C +_08038538: .4byte gUnknown_2022B4C +_0803853C: .4byte 0x0000017f +_08038540: .4byte gUnknown_3004FE0 +_08038544: .4byte gUnknown_2023BC4 +_08038548: .4byte sub_80E85C0 +_0803854C: + ldr r1, _0803855C @ =gUnknown_3004FE0 + ldr r0, _08038560 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038564 @ =sub_80E8598 + b _08038574 + .align 2, 0 +_0803855C: .4byte gUnknown_3004FE0 +_08038560: .4byte gUnknown_2023BC4 +_08038564: .4byte sub_80E8598 +_08038568: + ldr r1, _0803857C @ =gUnknown_3004FE0 + ldr r0, _08038580 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038584 @ =sub_80361E4 +_08038574: + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803857C: .4byte gUnknown_3004FE0 +_08038580: .4byte gUnknown_2023BC4 +_08038584: .4byte sub_80361E4 + thumb_func_end sub_80384BC + + thumb_func_start sub_8038588 +sub_8038588: @ 8038588 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038588 + + thumb_func_start sub_8038594 +sub_8038594: @ 8038594 + push {lr} + bl sub_8039C84 + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038594 + + thumb_func_start sub_80385A4 +sub_80385A4: @ 80385A4 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_80385A4 + + thumb_func_start sub_80385B0 +sub_80385B0: @ 80385B0 + push {r4-r6,lr} + ldr r6, _080385E4 @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 9 + ldr r1, _080385E8 @ =gUnknown_2022BC8 + adds r5, r0, r1 + ldr r0, _080385EC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x93 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _08038680 + bl sub_80C6DA0 + bl sub_80C6F44 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + beq _080385F0 + cmp r4, 0x5 + bne _080385FC + movs r0, 0x1 + movs r1, 0x4 + b _080385F4 + .align 2, 0 +_080385E4: .4byte gUnknown_2023BC4 +_080385E8: .4byte gUnknown_2022BC8 +_080385EC: .4byte gUnknown_2022B4C +_080385F0: + movs r0, 0x1 + movs r1, 0x3 +_080385F4: + movs r2, 0 + bl sub_800E848 + b _08038668 +_080385FC: + ldr r3, _08038670 @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r2, r5, r0 + ldrh r1, [r2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x6] + movs r0, 0x12 + ands r0, r1 + cmp r0, 0 + beq _0803861C + ldr r1, _08038674 @ =gUnknown_2023D6C + ldrb r0, [r6] + strb r0, [r1] +_0803861C: + ldrh r1, [r2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x6] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08038656 + movs r0, 0 + bl sub_80751E8 + ldr r5, _08038674 @ =gUnknown_2023D6C + strb r0, [r5] + ldr r0, _08038678 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0803867C @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08038656 + movs r0, 0x2 + bl sub_80751E8 + strb r0, [r5] +_08038656: + ldr r0, _08038674 @ =gUnknown_2023D6C + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + movs r0, 0x1 + movs r1, 0xA + adds r2, r4, 0 + bl sub_800E848 +_08038668: + bl sub_8036530 + b _08038712 + .align 2, 0 +_08038670: .4byte gUnknown_8250C04 +_08038674: .4byte gUnknown_2023D6C +_08038678: .4byte gUnknown_2023D70 +_0803867C: .4byte gUnknown_825E45C +_08038680: + movs r6, 0x3 +_08038682: + bl sub_8044EC8 + adds r4, r0, 0 + ands r4, r6 + lsls r0, r4, 1 + adds r0, r5, r0 + ldrh r2, [r0] + cmp r2, 0 + beq _08038682 + ldr r1, _080386BC @ =gUnknown_8250C04 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x6] + movs r0, 0x12 + ands r0, r1 + cmp r0, 0 + beq _080386C4 + ldr r0, _080386C0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + movs r0, 0x1 + movs r1, 0xA + adds r2, r4, 0 + bl sub_800E848 + b _0803870E + .align 2, 0 +_080386BC: .4byte gUnknown_8250C04 +_080386C0: .4byte gUnknown_2023BC4 +_080386C4: + ldr r0, _080386F4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080386F8 + bl sub_8044EC8 + movs r1, 0x2 + ands r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 16 + orrs r2, r4 + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 + b _0803870E + .align 2, 0 +_080386F4: .4byte gUnknown_2022B4C +_080386F8: + movs r0, 0 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 16 + orrs r2, r4 + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 +_0803870E: + bl sub_8036530 +_08038712: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80385B0 + + thumb_func_start sub_8038718 +sub_8038718: @ 8038718 + push {lr} + ldr r0, _0803873C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsrs r0, 1 + ldr r1, _08038740 @ =gUnknown_2023FE8 + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC0 + ldrb r1, [r0] + movs r0, 0x1 + bl sub_800E8AC + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_0803873C: .4byte gUnknown_2023BC4 +_08038740: .4byte gUnknown_2023FE8 + thumb_func_end sub_8038718 + + thumb_func_start sub_8038744 +sub_8038744: @ 8038744 + push {r4-r6,lr} + ldr r6, _08038788 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r5, _0803878C @ =gUnknown_2023FE8 + ldr r1, [r5] + adds r0, r1 + adds r0, 0x92 + ldrb r0, [r0] + cmp r0, 0x6 + bne _080387E4 + bl sub_8039E3C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bne _0803880A + ldr r0, _08038790 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08038794 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + b _080387A8 + .align 2, 0 +_08038788: .4byte gUnknown_2023BC4 +_0803878C: .4byte gUnknown_2023FE8 +_08038790: .4byte gUnknown_2022B4C +_08038794: + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 +_080387A8: + movs r4, 0 + b _080387AE +_080387AC: + adds r4, 0x1 +_080387AE: + cmp r4, 0x5 + bgt _0803880A + movs r0, 0x64 + muls r0, r4 + ldr r1, _080387DC @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _080387AC + ldr r1, _080387E0 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _080387AC + lsls r0, r5, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _080387AC + b _0803880A + .align 2, 0 +_080387DC: .4byte gUnknown_202402C +_080387E0: .4byte gUnknown_2023BCE +_080387E4: + ldrb r0, [r6] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, [r5] + adds r0, r1 + adds r0, 0x92 + ldrb r4, [r0] + ldrb r0, [r6] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 25 + ldr r1, [r5] + adds r0, r1 + adds r0, 0x92 + movs r1, 0x6 + strb r1, [r0] +_0803880A: + ldr r0, _08038830 @ =gUnknown_2023BC4 + ldrb r0, [r0] + ldr r1, _08038834 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x5C + strb r4, [r0] + lsls r1, r4, 24 + lsrs r1, 24 + movs r0, 0x1 + movs r2, 0 + bl sub_800E874 + bl sub_8036530 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08038830: .4byte gUnknown_2023BC4 +_08038834: .4byte gUnknown_2023FE8 + thumb_func_end sub_8038744 + + thumb_func_start sub_8038838 +sub_8038838: @ 8038838 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038838 + + thumb_func_start sub_8038844 +sub_8038844: @ 8038844 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r0, 0 + bl sub_8034964 + ldr r3, _080388BC @ =gUnknown_2022BC4 + ldr r0, _080388C0 @ =gUnknown_2023BC4 + mov r9, r0 + ldrb r4, [r0] + lsls r2, r4, 9 + adds r0, r3, 0x3 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r1, 8 + adds r3, 0x2 + adds r2, r3 + ldrb r0, [r2] + orrs r0, r1 + lsls r0, 16 + asrs r7, r0, 16 + ldr r0, _080388C4 @ =0x00007fff + cmp r7, r0 + beq _080388D4 + ldr r6, _080388C8 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _080388CC @ =gUnknown_202402C + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + mov r8, r0 + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _080388D0 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_8048150 + b _080388FE + .align 2, 0 +_080388BC: .4byte gUnknown_2022BC4 +_080388C0: .4byte gUnknown_2023BC4 +_080388C4: .4byte 0x00007fff +_080388C8: .4byte gUnknown_2023BCE +_080388CC: .4byte gUnknown_202402C +_080388D0: .4byte gUnknown_3004FF0 +_080388D4: + ldr r1, _0803891C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08038920 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _08038924 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, 0 + bl sub_8048150 +_080388FE: + ldr r1, _08038928 @ =gUnknown_3004FE0 + ldr r0, _0803892C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038930 @ =sub_80360A0 + str r1, [r0] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803891C: .4byte gUnknown_2023BCE +_08038920: .4byte gUnknown_202402C +_08038924: .4byte gUnknown_3004FF0 +_08038928: .4byte gUnknown_3004FE0 +_0803892C: .4byte gUnknown_2023BC4 +_08038930: .4byte sub_80360A0 + thumb_func_end sub_8038844 + + thumb_func_start sub_8038934 +sub_8038934: @ 8038934 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038934 + + thumb_func_start sub_8038940 +sub_8038940: @ 8038940 + push {r4,lr} + ldr r4, _0803899C @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08038994 + ldr r0, _080389A0 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _080389A4 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080389A8 @ =gUnknown_202402C + adds r1, r2 + movs r2, 0x9 + bl sub_8049D98 + ldrb r2, [r4] + ldr r0, _080389AC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _080389B0 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080389B4 @ =sub_80364D0 + str r1, [r0] +_08038994: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803899C: .4byte gUnknown_2023BC4 +_080389A0: .4byte gUnknown_3004FF0 +_080389A4: .4byte gUnknown_2023BCE +_080389A8: .4byte gUnknown_202402C +_080389AC: .4byte gUnknown_2024018 +_080389B0: .4byte gUnknown_3004FE0 +_080389B4: .4byte sub_80364D0 + thumb_func_end sub_8038940 + + thumb_func_start sub_80389B8 +sub_80389B8: @ 80389B8 + push {r4,r5,lr} + ldr r5, _08038A10 @ =gUnknown_2023BC4 + ldrb r0, [r5] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08038A08 + ldr r4, _08038A14 @ =gUnknown_2022BC4 + ldrb r3, [r5] + lsls r3, 9 + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, 0x2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + adds r2, r4, 0x4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 16 + orrs r1, r2 + adds r4, 0x5 + adds r3, r4 + ldrb r2, [r3] + lsls r2, 24 + orrs r1, r2 + bl sub_8033F1C + ldr r1, _08038A18 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038A1C @ =sub_80364D0 + str r1, [r0] +_08038A08: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08038A10: .4byte gUnknown_2023BC4 +_08038A14: .4byte gUnknown_2022BC4 +_08038A18: .4byte gUnknown_3004FE0 +_08038A1C: .4byte sub_80364D0 + thumb_func_end sub_80389B8 + + thumb_func_start sub_8038A20 +sub_8038A20: @ 8038A20 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A20 + + thumb_func_start sub_8038A2C +sub_8038A2C: @ 8038A2C + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A2C + + thumb_func_start sub_8038A38 +sub_8038A38: @ 8038A38 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A38 + + thumb_func_start sub_8038A44 +sub_8038A44: @ 8038A44 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A44 + + thumb_func_start sub_8038A50 +sub_8038A50: @ 8038A50 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A50 + + thumb_func_start sub_8038A5C +sub_8038A5C: @ 8038A5C + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A5C + + thumb_func_start sub_8038A68 +sub_8038A68: @ 8038A68 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A68 + + thumb_func_start sub_8038A74 +sub_8038A74: @ 8038A74 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A74 + + thumb_func_start sub_8038A80 +sub_8038A80: @ 8038A80 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038A80 + + thumb_func_start sub_8038A8C +sub_8038A8C: @ 8038A8C + push {lr} + ldr r2, _08038AA4 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x80 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038AA4: .4byte gUnknown_2022870 + thumb_func_end sub_8038A8C + + thumb_func_start sub_8038AA8 +sub_8038AA8: @ 8038AA8 + push {lr} + ldr r3, _08038AD4 @ =gUnknown_2022870 + ldr r1, _08038AD8 @ =gUnknown_2022BC4 + ldr r0, _08038ADC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x7F + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038AD4: .4byte gUnknown_2022870 +_08038AD8: .4byte gUnknown_2022BC4 +_08038ADC: .4byte gUnknown_2023BC4 + thumb_func_end sub_8038AA8 + + thumb_func_start sub_8038AE0 +sub_8038AE0: @ 8038AE0 + push {lr} + ldr r2, _08038AF4 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038AF4: .4byte gUnknown_2022870 + thumb_func_end sub_8038AE0 + + thumb_func_start sub_8038AF8 +sub_8038AF8: @ 8038AF8 + push {lr} + ldr r3, _08038B1C @ =gUnknown_2022870 + ldr r1, [r3] + lsls r1, 24 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 7 + ldrb r2, [r3] + movs r0, 0x7F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038B1C: .4byte gUnknown_2022870 + thumb_func_end sub_8038AF8 + + thumb_func_start sub_8038B20 +sub_8038B20: @ 8038B20 + push {r4,lr} + ldr r3, _08038B48 @ =gUnknown_202063C + ldr r2, _08038B4C @ =gUnknown_2023D44 + ldr r4, _08038B50 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _08038B54 + bl sub_8036530 + b _08038B7E + .align 2, 0 +_08038B48: .4byte gUnknown_202063C +_08038B4C: .4byte gUnknown_2023D44 +_08038B50: .4byte gUnknown_2023BC4 +_08038B54: + ldr r1, _08038B84 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_804BE70 + ldr r1, _08038B88 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038B8C @ =sub_80361FC + str r1, [r0] +_08038B7E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038B84: .4byte gUnknown_2024005 +_08038B88: .4byte gUnknown_3004FE0 +_08038B8C: .4byte sub_80361FC + thumb_func_end sub_8038B20 + + thumb_func_start sub_8038B90 +sub_8038B90: @ 8038B90 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8038B90 + + thumb_func_start sub_8038B9C +sub_8038B9C: @ 8038B9C + push {r4,lr} + ldr r4, _08038BD8 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r3, 0x3F + cmp r0, 0 + bne _08038BB0 + movs r3, 0xC0 +_08038BB0: + ldr r2, _08038BDC @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + lsls r1, r3, 24 + asrs r1, 24 + bl sub_80722F4 + bl sub_8036530 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038BD8: .4byte gUnknown_2023BC4 +_08038BDC: .4byte gUnknown_2022BC4 + thumb_func_end sub_8038B9C + + thumb_func_start sub_8038BE0 +sub_8038BE0: @ 8038BE0 + push {lr} + ldr r2, _08038C08 @ =gUnknown_2022BC4 + ldr r0, _08038C0C @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038C08: .4byte gUnknown_2022BC4 +_08038C0C: .4byte gUnknown_2023BC4 + thumb_func_end sub_8038BE0 + + thumb_func_start sub_8038C10 +sub_8038C10: @ 8038C10 + push {lr} + ldr r1, _08038C40 @ =gUnknown_2023BCE + ldr r0, _08038C44 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08038C48 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + movs r2, 0x5 + bl sub_8071E60 + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038C40: .4byte gUnknown_2023BCE +_08038C44: .4byte gUnknown_2023BC4 +_08038C48: .4byte gUnknown_202402C + thumb_func_end sub_8038C10 + + thumb_func_start sub_8038C4C +sub_8038C4C: @ 8038C4C + push {lr} + ldr r1, _08038C74 @ =gUnknown_2022BC4 + ldr r0, _08038C78 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _08038C7C @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08038C74: .4byte gUnknown_2022BC4 +_08038C78: .4byte gUnknown_2023BC4 +_08038C7C: .4byte gUnknown_2023F4C + thumb_func_end sub_8038C4C + + thumb_func_start sub_8038C80 +sub_8038C80: @ 8038C80 + push {r4-r6,lr} + ldr r5, _08038D60 @ =gUnknown_2023D44 + ldr r6, _08038D64 @ =gUnknown_2023BC4 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08038D68 @ =gUnknown_202063C + adds r0, r4 + bl sub_80750FC + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x23 + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x8C + lsls r1, 1 + strh r1, [r0, 0x32] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08038D6C @ =sub_8075590 + str r1, [r0] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08038D70 @ =sub_8038D90 + bl sub_8074A68 + ldr r0, _08038D74 @ =sub_8038DC4 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08038D78 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r6] + strh r0, [r1, 0x8] + ldr r3, _08038D7C @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08038D42 + ldr r0, _08038D80 @ =gUnknown_2024000 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _08038D84 @ =sub_80491B0 + str r1, [r0] +_08038D42: + ldr r0, [r3] + ldr r2, [r0, 0x8] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _08038D88 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038D8C @ =nullsub_17 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08038D60: .4byte gUnknown_2023D44 +_08038D64: .4byte gUnknown_2023BC4 +_08038D68: .4byte gUnknown_202063C +_08038D6C: .4byte sub_8075590 +_08038D70: .4byte sub_8038D90 +_08038D74: .4byte sub_8038DC4 +_08038D78: .4byte gUnknown_3005090 +_08038D7C: .4byte gUnknown_2024018 +_08038D80: .4byte gUnknown_2024000 +_08038D84: .4byte sub_80491B0 +_08038D88: .4byte gUnknown_3004FE0 +_08038D8C: .4byte nullsub_17 + thumb_func_end sub_8038C80 + + thumb_func_start sub_8038D90 +sub_8038D90: @ 8038D90 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x6] + bl sub_803477C + ldrh r0, [r4, 0x38] + ldr r1, _08038DBC @ =0x000003ff + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _08038DC0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038DBC: .4byte 0x000003ff +_08038DC0: .4byte 0xfffffc00 + thumb_func_end sub_8038D90 + + thumb_func_start sub_8038DC4 +sub_8038DC4: @ 8038DC4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r7, _08038E1C @ =gUnknown_2023BC4 + ldrb r0, [r7] + mov r9, r0 + ldr r1, _08038E20 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x8] + strb r0, [r7] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08038DFE + ldr r0, _08038E24 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08038E30 +_08038DFE: + ldr r0, _08038E28 @ =gUnknown_2022BC4 + ldrb r1, [r7] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _08038E2C @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, 0 + bl sub_8037A28 + b _08038E70 + .align 2, 0 +_08038E1C: .4byte gUnknown_2023BC4 +_08038E20: .4byte gUnknown_3005090 +_08038E24: .4byte gUnknown_2022B4C +_08038E28: .4byte gUnknown_2022BC4 +_08038E2C: .4byte gUnknown_2023BCE +_08038E30: + ldr r4, _08038E94 @ =gUnknown_2022BC4 + ldrb r0, [r7] + lsls r1, r0, 9 + adds r4, 0x1 + adds r1, r4 + ldr r6, _08038E98 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_8037A28 + ldrb r0, [r7] + movs r5, 0x2 + eors r0, r5 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, 9 + adds r1, r4 + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_8037A28 + ldrb r0, [r7] + eors r0, r5 + strb r0, [r7] +_08038E70: + ldr r1, _08038E9C @ =gUnknown_3004FE0 + ldr r2, _08038EA0 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08038EA4 @ =sub_8035DF0 + str r1, [r0] + mov r0, r9 + strb r0, [r2] + mov r0, r8 + bl sub_8077508 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08038E94: .4byte gUnknown_2022BC4 +_08038E98: .4byte gUnknown_2023BCE +_08038E9C: .4byte gUnknown_3004FE0 +_08038EA0: .4byte gUnknown_2023BC4 +_08038EA4: .4byte sub_8035DF0 + thumb_func_end sub_8038DC4 + + thumb_func_start sub_8038EA8 +sub_8038EA8: @ 8038EA8 + push {r4-r7,lr} + ldr r1, _08038ED0 @ =gUnknown_2022BC4 + ldr r0, _08038ED4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08038ED8 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08038ED8 + bl sub_8036530 + b _08038FA2 + .align 2, 0 +_08038ED0: .4byte gUnknown_2022BC4 +_08038ED4: .4byte gUnknown_2023BC4 +_08038ED8: + ldr r4, _08038F30 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r3, _08038F34 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldr r1, _08038F38 @ =gUnknown_2022BC4 + ldrb r2, [r3] + lsls r0, r2, 9 + adds r1, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r7, r3, 0 + cmp r0, 0 + beq _08038F44 + ldr r0, [r4] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r2, [r3, 0x1] + lsls r1, r2, 26 + lsrs r0, r1, 27 + cmp r0, 0x1 + bhi _08038F3C + adds r0, 0x1 + movs r1, 0x1F + ands r0, r1 + lsls r0, 1 + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x1] + b _08038FA2 + .align 2, 0 +_08038F30: .4byte gUnknown_2024018 +_08038F34: .4byte gUnknown_2023BC4 +_08038F38: .4byte gUnknown_2022BC4 +_08038F3C: + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + strb r0, [r3, 0x1] +_08038F44: + adds r5, r7, 0 + ldrb r0, [r5] + lsls r3, r0, 9 + ldr r4, _08038FA8 @ =gUnknown_2022BC8 + adds r1, r3, r4 + subs r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, 0x2 + adds r3, r4 + ldrb r3, [r3] + bl sub_8048D14 + ldr r2, _08038FAC @ =gUnknown_2024000 + ldrb r1, [r5] + adds r1, r2 + movs r3, 0 + strb r0, [r1] + ldr r6, _08038FB0 @ =gUnknown_2024018 + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x5] + ldrb r2, [r5] + lsls r0, r2, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _08038F96 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x5D + strb r1, [r0, 0x5] +_08038F96: + ldr r0, _08038FB4 @ =gUnknown_3004FE0 + ldrb r1, [r7] + lsls r1, 2 + adds r1, r0 + ldr r0, _08038FB8 @ =sub_8038FBC + str r0, [r1] +_08038FA2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08038FA8: .4byte gUnknown_2022BC8 +_08038FAC: .4byte gUnknown_2024000 +_08038FB0: .4byte gUnknown_2024018 +_08038FB4: .4byte gUnknown_3004FE0 +_08038FB8: .4byte sub_8038FBC + thumb_func_end sub_8038EA8 + + thumb_func_start sub_8038FBC +sub_8038FBC: @ 8038FBC + push {r4,lr} + ldr r4, _08038FFC @ =gUnknown_2024018 + ldr r0, [r4] + ldr r3, _08039000 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + adds r2, r1, 0x1 + strb r2, [r0, 0x5] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x5C + bls _08038FF4 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x5] + bl sub_8036530 +_08038FF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038FFC: .4byte gUnknown_2024018 +_08039000: .4byte gUnknown_2023BC4 + thumb_func_end sub_8038FBC + + thumb_func_start sub_8039004 +sub_8039004: @ 8039004 + push {lr} + ldr r0, _08039040 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _08039044 @ =gUnknown_2023BC4 + ldrb r3, [r0] + ldr r1, [r1, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08039036 + ldr r2, _08039048 @ =gUnknown_3005090 + ldr r0, _0803904C @ =gUnknown_2024000 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _08039050 @ =sub_80491B0 + str r1, [r0] +_08039036: + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08039040: .4byte gUnknown_2024018 +_08039044: .4byte gUnknown_2023BC4 +_08039048: .4byte gUnknown_3005090 +_0803904C: .4byte gUnknown_2024000 +_08039050: .4byte sub_80491B0 + thumb_func_end sub_8039004 + + thumb_func_start sub_8039054 +sub_8039054: @ 8039054 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8039054 + + thumb_func_start sub_8039060 +sub_8039060: @ 8039060 + push {r4,lr} + ldr r4, _080390B0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _080390A6 + ldr r3, _080390B4 @ =gUnknown_202063C + ldr r0, _080390B8 @ =gUnknown_2023D44 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldr r0, _080390BC @ =gUnknown_2022BC4 + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + adds r2, 0x3E + movs r0, 0x1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_8034BB4 +_080390A6: + bl sub_8036530 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080390B0: .4byte gUnknown_2023BC4 +_080390B4: .4byte gUnknown_202063C +_080390B8: .4byte gUnknown_2023D44 +_080390BC: .4byte gUnknown_2022BC4 + thumb_func_end sub_8039060 + + thumb_func_start sub_80390C0 +sub_80390C0: @ 80390C0 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _08039104 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08039118 + ldr r5, _08039108 @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _0803910C + bl sub_8036530 + b _08039118 + .align 2, 0 +_08039104: .4byte gUnknown_2023BC4 +_08039108: .4byte gUnknown_2022BC4 +_0803910C: + ldr r0, _08039120 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _08039124 @ =sub_8036500 + str r0, [r1] +_08039118: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08039120: .4byte gUnknown_3004FE0 +_08039124: .4byte sub_8036500 + thumb_func_end sub_80390C0 + + thumb_func_start sub_8039128 +sub_8039128: @ 8039128 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8039128 + + thumb_func_start sub_8039134 +sub_8039134: @ 8039134 + push {lr} + bl sub_8036530 + pop {r0} + bx r0 + thumb_func_end sub_8039134 + + thumb_func_start sub_8039140 +sub_8039140: @ 8039140 + push {lr} + ldr r0, _08039174 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x6 + ands r0, r1 + cmp r0, 0x2 + bne _0803916A + ldr r2, _08039178 @ =gUnknown_30030F0 + ldr r0, _0803917C @ =0x00000439 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r0, _08039180 @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, 0x8] + bl sub_8000544 +_0803916A: + bl sub_8036530 + pop {r0} + bx r0 + .align 2, 0 +_08039174: .4byte gUnknown_2022B4C +_08039178: .4byte gUnknown_30030F0 +_0803917C: .4byte 0x00000439 +_08039180: .4byte gUnknown_3004F80 + thumb_func_end sub_8039140 + + thumb_func_start nullsub_18 +nullsub_18: @ 8039184 + bx lr + thumb_func_end nullsub_18 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s new file mode 100644 index 000000000..3e97fc6e4 --- /dev/null +++ b/asm/battle_controller_player.s @@ -0,0 +1,11027 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_13 +nullsub_13: @ 802E310 + bx lr + thumb_func_end nullsub_13 + + thumb_func_start sub_802E314 +sub_802E314: @ 802E314 + ldr r1, _0802E32C @ =gUnknown_3004FE0 + ldr r0, _0802E330 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802E334 @ =sub_802E3B4 + str r1, [r0] + ldr r1, _0802E338 @ =gUnknown_2024005 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_0802E32C: .4byte gUnknown_3004FE0 +_0802E330: .4byte gUnknown_2023BC4 +_0802E334: .4byte sub_802E3B4 +_0802E338: .4byte gUnknown_2024005 + thumb_func_end sub_802E314 + + thumb_func_start sub_802E33C +sub_802E33C: @ 802E33C + push {r4,lr} + sub sp, 0x4 + ldr r1, _0802E37C @ =gUnknown_3004FE0 + ldr r4, _0802E380 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802E384 @ =sub_802E3B4 + str r1, [r0] + ldr r0, _0802E388 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802E390 + bl sub_800A404 + mov r1, sp + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + mov r2, sp + bl sub_800D9EC + ldr r1, _0802E38C @ =gUnknown_2022BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r1 + movs r1, 0x38 + strb r1, [r0] + b _0802E3A2 + .align 2, 0 +_0802E37C: .4byte gUnknown_3004FE0 +_0802E380: .4byte gUnknown_2023BC4 +_0802E384: .4byte sub_802E3B4 +_0802E388: .4byte gUnknown_2022B4C +_0802E38C: .4byte gUnknown_2022BC4 +_0802E390: + ldr r2, _0802E3AC @ =gUnknown_2023BC8 + ldr r1, _0802E3B0 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_0802E3A2: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802E3AC: .4byte gUnknown_2023BC8 +_0802E3B0: .4byte gUnknown_825E45C + thumb_func_end sub_802E33C + + thumb_func_start sub_802E3B4 +sub_802E3B4: @ 802E3B4 + push {lr} + ldr r2, _0802E3E8 @ =gUnknown_2023BC8 + ldr r1, _0802E3EC @ =gUnknown_825E45C + ldr r0, _0802E3F0 @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0802E400 + ldr r0, _0802E3F4 @ =gUnknown_2022BC4 + lsls r1, r3, 9 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x38 + bhi _0802E3FC + ldr r0, _0802E3F8 @ =gUnknown_825089C + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _0802E400 + .align 2, 0 +_0802E3E8: .4byte gUnknown_2023BC8 +_0802E3EC: .4byte gUnknown_825E45C +_0802E3F0: .4byte gUnknown_2023BC4 +_0802E3F4: .4byte gUnknown_2022BC4 +_0802E3F8: .4byte gUnknown_825089C +_0802E3FC: + bl sub_802E33C +_0802E400: + pop {r0} + bx r0 + thumb_func_end sub_802E3B4 + + thumb_func_start sub_802E404 +sub_802E404: @ 802E404 + push {lr} + ldr r2, _0802E42C @ =gUnknown_202063C + ldr r1, _0802E430 @ =gUnknown_2023D44 + ldr r0, _0802E434 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x24 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0802E426 + bl sub_802E33C +_0802E426: + pop {r0} + bx r0 + .align 2, 0 +_0802E42C: .4byte gUnknown_202063C +_0802E430: .4byte gUnknown_2023D44 +_0802E434: .4byte gUnknown_2023BC4 + thumb_func_end sub_802E404 + + thumb_func_start sub_802E438 +sub_802E438: @ 802E438 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _0802E498 @ =gUnknown_2022BC4 + ldr r4, _0802E49C @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r2, r0, 9 + adds r1, r7, 0x2 + adds r1, r2, r1 + ldrb r5, [r1] + adds r1, r7, 0x3 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r5, r1 + movs r1, 0x1 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldr r0, _0802E4A0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0802E4D0 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802E4A4 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0802E4B8 + cmp r0, 0x1 + bgt _0802E4A8 + cmp r0, 0 + beq _0802E4B2 + b _0802E616 + .align 2, 0 +_0802E498: .4byte gUnknown_2022BC4 +_0802E49C: .4byte gUnknown_2023BC4 +_0802E4A0: .4byte gUnknown_30030F0 +_0802E4A4: .4byte gUnknown_2023FF8 +_0802E4A8: + cmp r0, 0x2 + beq _0802E4BE + cmp r0, 0x3 + beq _0802E4C4 + b _0802E616 +_0802E4B2: + movs r0, 0x1 + movs r1, 0 + b _0802E610 +_0802E4B8: + movs r0, 0x1 + movs r1, 0x1 + b _0802E610 +_0802E4BE: + movs r0, 0x1 + movs r1, 0x2 + b _0802E610 +_0802E4C4: + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_800E848 + b _0802E616 +_0802E4D0: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0802E508 + ldr r5, _0802E504 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _0802E4EA + b _0802E634 +_0802E4EA: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + b _0802E590 + .align 2, 0 +_0802E504: .4byte gUnknown_2023FF8 +_0802E508: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802E540 + ldr r5, _0802E53C @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0802E522 + b _0802E634 +_0802E522: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + b _0802E590 + .align 2, 0 +_0802E53C: .4byte gUnknown_2023FF8 +_0802E540: + movs r0, 0x40 + mov r8, r0 + ands r0, r1 + cmp r0, 0 + beq _0802E560 + ldr r5, _0802E55C @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802E634 + b _0802E578 + .align 2, 0 +_0802E55C: .4byte gUnknown_2023FF8 +_0802E560: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802E5A8 + ldr r5, _0802E5A4 @ =gUnknown_2023FF8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0802E634 +_0802E578: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x2 +_0802E590: + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + b _0802E634 + .align 2, 0 +_0802E5A4: .4byte gUnknown_2023FF8 +_0802E5A8: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802E628 + ldr r6, _0802E61C @ =gUnknown_2022B4C + ldr r0, [r6] + ands r0, r2 + cmp r0, 0 + beq _0802E634 + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0802E634 + movs r0, 0 + bl sub_80751E8 + ldr r1, _0802E620 @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _0802E624 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802E634 + ldr r0, [r6] + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _0802E634 + ldrb r0, [r4] + lsls r0, 9 + adds r1, r7, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0802E606 + cmp r5, 0xC + bhi _0802E634 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_809A084 +_0802E606: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + movs r1, 0xC +_0802E610: + movs r2, 0 + bl sub_800E848 +_0802E616: + bl sub_802E33C + b _0802E634 + .align 2, 0 +_0802E61C: .4byte gUnknown_2022B4C +_0802E620: .4byte gUnknown_2023D70 +_0802E624: .4byte gUnknown_825E45C +_0802E628: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0802E634 + bl sub_8048A4C +_0802E634: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802E438 + + thumb_func_start sub_802E640 +sub_802E640: @ 802E640 + push {r4,lr} + ldr r4, _0802E668 @ =gUnknown_2023BC4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 + ldr r1, _0802E66C @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802E670 @ =sub_802E674 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802E668: .4byte gUnknown_2023BC4 +_0802E66C: .4byte gUnknown_3004FE0 +_0802E670: .4byte sub_802E674 + thumb_func_end sub_802E640 + + thumb_func_start sub_802E674 +sub_802E674: @ 802E674 + push {r4,r5,lr} + sub sp, 0x4 + ldr r1, _0802E708 @ =gUnknown_8250980 + mov r0, sp + movs r2, 0x4 + bl memcpy + ldr r0, _0802E70C @ =gUnknown_3004FF4 + ldrb r0, [r0] + movs r1, 0x1 + movs r2, 0xF + movs r3, 0x1 + bl sub_8012138 + movs r4, 0 + ldr r0, _0802E710 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r0, 0 + beq _0802E6B6 +_0802E69A: + ldr r0, _0802E70C @ =gUnknown_3004FF4 + ldrb r0, [r0] + cmp r4, r0 + beq _0802E6AC + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_8012258 +_0802E6AC: + adds r4, 0x1 + ldr r0, _0802E710 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _0802E69A +_0802E6B6: + ldr r0, _0802E714 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802E72C + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0802E718 @ =gUnknown_202063C + ldr r1, _0802E71C @ =gUnknown_2023D44 + ldr r4, _0802E70C @ =gUnknown_3004FF4 + ldrb r0, [r4] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0802E720 @ =sub_8012098 + str r1, [r0] + ldr r1, _0802E724 @ =gUnknown_2023FFC + ldr r0, _0802E728 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldrb r0, [r4] + lsls r0, 8 + orrs r2, r0 + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8012258 + bl sub_802E33C + b _0802E9DC + .align 2, 0 +_0802E708: .4byte gUnknown_8250980 +_0802E70C: .4byte gUnknown_3004FF4 +_0802E710: .4byte gUnknown_2023BCC +_0802E714: .4byte gUnknown_30030F0 +_0802E718: .4byte gUnknown_202063C +_0802E71C: .4byte gUnknown_2023D44 +_0802E720: .4byte sub_8012098 +_0802E724: .4byte gUnknown_2023FFC +_0802E728: .4byte gUnknown_2023BC4 +_0802E72C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802E7A0 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0802E784 @ =gUnknown_202063C + ldr r1, _0802E788 @ =gUnknown_2023D44 + ldr r5, _0802E78C @ =gUnknown_3004FF4 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0802E790 @ =sub_8012098 + str r1, [r0] + ldr r1, _0802E794 @ =gUnknown_3004FE0 + ldr r4, _0802E798 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802E79C @ =sub_802EA10 + str r1, [r0] + ldrb r0, [r4] + movs r1, 0x1 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8012258 + b _0802E9DC + .align 2, 0 +_0802E784: .4byte gUnknown_202063C +_0802E788: .4byte gUnknown_2023D44 +_0802E78C: .4byte gUnknown_3004FF4 +_0802E790: .4byte sub_8012098 +_0802E794: .4byte gUnknown_3004FE0 +_0802E798: .4byte gUnknown_2023BC4 +_0802E79C: .4byte sub_802EA10 +_0802E7A0: + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + bne _0802E7AA + b _0802E8C4 +_0802E7AA: + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0802E7DC @ =gUnknown_202063C + ldr r1, _0802E7E0 @ =gUnknown_2023D44 + ldr r3, _0802E7E4 @ =gUnknown_3004FF4 + ldrb r0, [r3] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0802E7E8 @ =sub_8012098 + str r1, [r0] + adds r5, r3, 0 +_0802E7CC: + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r4, 0 + mov r0, sp + b _0802E7F6 + .align 2, 0 +_0802E7DC: .4byte gUnknown_202063C +_0802E7E0: .4byte gUnknown_2023D44 +_0802E7E4: .4byte gUnknown_3004FF4 +_0802E7E8: .4byte sub_8012098 +_0802E7EC: + adds r4, 0x1 + cmp r4, 0x3 + bgt _0802E7FC + mov r2, sp + adds r0, r2, r4 +_0802E7F6: + ldrb r0, [r0] + cmp r1, r0 + bne _0802E7EC +_0802E7FC: + subs r4, 0x1 + cmp r4, 0 + bge _0802E804 + movs r4, 0x4 +_0802E804: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_80751E8 + strb r0, [r5] + ldr r1, _0802E838 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + beq _0802E7FC + movs r4, 0 + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0802E882 + cmp r0, 0x1 + bgt _0802E83C + cmp r0, 0 + beq _0802E846 + b _0802E884 + .align 2, 0 +_0802E838: .4byte gUnknown_2023BCC +_0802E83C: + cmp r0, 0x2 + beq _0802E846 + cmp r0, 0x3 + beq _0802E882 + b _0802E884 +_0802E846: + ldr r2, _0802E8A4 @ =gUnknown_2023BC4 + ldrb r0, [r2] + ldrb r1, [r5] + cmp r0, r1 + bne _0802E882 + ldr r1, _0802E8A8 @ =gUnknown_2023BCE + ldrb r2, [r2] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802E8AC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0802E8B0 @ =gUnknown_2023FFC + adds r2, r1 + ldrb r1, [r2] + adds r1, 0xD + bl sub_803FBE8 + ldr r2, _0802E8B4 @ =gUnknown_8250C04 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x6] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802E884 +_0802E882: + adds r4, 0x1 +_0802E884: + ldr r0, _0802E8B8 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0802E8BC @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + ldr r0, _0802E8C0 @ =gUnknown_3004FF4 + cmp r1, 0 + beq _0802E89C + movs r4, 0 +_0802E89C: + cmp r4, 0 + beq _0802E7CC + b _0802E9C4 + .align 2, 0 +_0802E8A4: .4byte gUnknown_2023BC4 +_0802E8A8: .4byte gUnknown_2023BCE +_0802E8AC: .4byte gUnknown_2024284 +_0802E8B0: .4byte gUnknown_2023FFC +_0802E8B4: .4byte gUnknown_8250C04 +_0802E8B8: .4byte gUnknown_2023D70 +_0802E8BC: .4byte gUnknown_825E45C +_0802E8C0: .4byte gUnknown_3004FF4 +_0802E8C4: + movs r0, 0x90 + ands r0, r1 + cmp r0, 0 + bne _0802E8CE + b _0802E9DC +_0802E8CE: + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0802E900 @ =gUnknown_202063C + ldr r1, _0802E904 @ =gUnknown_2023D44 + ldr r3, _0802E908 @ =gUnknown_3004FF4 + ldrb r0, [r3] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0802E90C @ =sub_8012098 + str r1, [r0] + adds r5, r3, 0 +_0802E8F0: + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r4, 0 + mov r0, sp + b _0802E91A + .align 2, 0 +_0802E900: .4byte gUnknown_202063C +_0802E904: .4byte gUnknown_2023D44 +_0802E908: .4byte gUnknown_3004FF4 +_0802E90C: .4byte sub_8012098 +_0802E910: + adds r4, 0x1 + cmp r4, 0x3 + bgt _0802E920 + mov r2, sp + adds r0, r2, r4 +_0802E91A: + ldrb r0, [r0] + cmp r1, r0 + bne _0802E910 +_0802E920: + adds r4, 0x1 + cmp r4, 0x3 + ble _0802E928 + movs r4, 0 +_0802E928: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_80751E8 + strb r0, [r5] + ldr r1, _0802E95C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + beq _0802E920 + movs r4, 0 + ldrb r0, [r5] + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0802E9A6 + cmp r0, 0x1 + bgt _0802E960 + cmp r0, 0 + beq _0802E96A + b _0802E9A8 + .align 2, 0 +_0802E95C: .4byte gUnknown_2023BCC +_0802E960: + cmp r0, 0x2 + beq _0802E96A + cmp r0, 0x3 + beq _0802E9A6 + b _0802E9A8 +_0802E96A: + ldr r2, _0802E9E4 @ =gUnknown_2023BC4 + ldrb r0, [r2] + ldrb r1, [r5] + cmp r0, r1 + bne _0802E9A6 + ldr r1, _0802E9E8 @ =gUnknown_2023BCE + ldrb r2, [r2] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802E9EC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0802E9F0 @ =gUnknown_2023FFC + adds r2, r1 + ldrb r1, [r2] + adds r1, 0xD + bl sub_803FBE8 + ldr r2, _0802E9F4 @ =gUnknown_8250C04 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x6] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802E9A8 +_0802E9A6: + adds r4, 0x1 +_0802E9A8: + ldr r0, _0802E9F8 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0802E9FC @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + ldr r0, _0802EA00 @ =gUnknown_3004FF4 + cmp r1, 0 + beq _0802E9C0 + movs r4, 0 +_0802E9C0: + cmp r4, 0 + beq _0802E8F0 +_0802E9C4: + ldr r2, _0802EA04 @ =gUnknown_202063C + ldr r1, _0802EA08 @ =gUnknown_2023D44 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0802EA0C @ =sub_8012044 + str r1, [r0] +_0802E9DC: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802E9E4: .4byte gUnknown_2023BC4 +_0802E9E8: .4byte gUnknown_2023BCE +_0802E9EC: .4byte gUnknown_2024284 +_0802E9F0: .4byte gUnknown_2023FFC +_0802E9F4: .4byte gUnknown_8250C04 +_0802E9F8: .4byte gUnknown_2023D70 +_0802E9FC: .4byte gUnknown_825E45C +_0802EA00: .4byte gUnknown_3004FF4 +_0802EA04: .4byte gUnknown_202063C +_0802EA08: .4byte gUnknown_2023D44 +_0802EA0C: .4byte sub_8012044 + thumb_func_end sub_802E674 + + thumb_func_start sub_802EA10 +sub_802EA10: @ 802EA10 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r0, 0 + mov r8, r0 + ldr r6, _0802EA6C @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 9 + ldr r1, _0802EA70 @ =gUnknown_2022BC8 + adds r7, r0, r1 + bl sub_8033AC8 + ldr r0, _0802EA74 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _0802EA3A + b _0802EC10 +_0802EA3A: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802EA78 @ =gUnknown_2023FFC + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 1 + adds r1, r7, r0 + ldrh r0, [r1] + cmp r0, 0xAE + bne _0802EA7C + ldrb r0, [r7, 0x12] + movs r4, 0 + cmp r0, 0x7 + beq _0802EA8A + ldrb r1, [r7, 0x13] + movs r0, 0x7 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + asrs r4, r0, 31 + movs r0, 0x10 + ands r4, r0 + b _0802EA8A + .align 2, 0 +_0802EA6C: .4byte gUnknown_2023BC4 +_0802EA70: .4byte gUnknown_2022BC8 +_0802EA74: .4byte gUnknown_30030F0 +_0802EA78: .4byte gUnknown_2023FFC +_0802EA7C: + ldr r2, _0802EA9C @ =gUnknown_8250C04 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r4, [r0, 0x6] +_0802EA8A: + movs r0, 0x10 + ands r0, r4 + cmp r0, 0 + beq _0802EAA8 + ldr r0, _0802EAA0 @ =gUnknown_3004FF4 + ldr r1, _0802EAA4 @ =gUnknown_2023BC4 + ldrb r1, [r1] + strb r1, [r0] + b _0802EAC2 + .align 2, 0 +_0802EA9C: .4byte gUnknown_8250C04 +_0802EAA0: .4byte gUnknown_3004FF4 +_0802EAA4: .4byte gUnknown_2023BC4 +_0802EAA8: + ldr r0, _0802EAEC @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + adds r1, r0, 0 + movs r2, 0x1 + movs r0, 0x1 + ands r0, r1 + eors r0, r2 + bl sub_80751E8 + ldr r1, _0802EAF0 @ =gUnknown_3004FF4 + strb r0, [r1] +_0802EAC2: + ldr r3, _0802EAF4 @ =gUnknown_2022BC4 + ldr r5, _0802EAEC @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r1, r2, 9 + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0 + bne _0802EAF8 + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _0802EB3A + adds r0, r3, 0x2 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0 + bne _0802EB3A + movs r0, 0x1 + add r8, r0 + b _0802EB3A + .align 2, 0 +_0802EAEC: .4byte gUnknown_2023BC4 +_0802EAF0: .4byte gUnknown_3004FF4 +_0802EAF4: .4byte gUnknown_2022BC4 +_0802EAF8: + movs r0, 0x7D + ands r0, r4 + cmp r0, 0 + bne _0802EB04 + movs r0, 0x1 + add r8, r0 +_0802EB04: + ldr r0, _0802EB78 @ =gUnknown_2023FFC + adds r0, r2, r0 + adds r1, r7, 0 + adds r1, 0x8 + ldrb r0, [r0] + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0802EB36 + movs r0, 0x12 + ands r0, r4 + cmp r0, 0 + bne _0802EB3A + movs r0, 0 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0802EB3A + ldrb r0, [r5] + bl sub_803F6A0 + ldr r1, _0802EB7C @ =gUnknown_3004FF4 + strb r0, [r1] +_0802EB36: + movs r0, 0 + mov r8, r0 +_0802EB3A: + bl sub_8070A84 + movs r0, 0xF0 + lsls r0, 12 + ldr r1, _0802EB80 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8070588 + mov r0, r8 + cmp r0, 0 + bne _0802EB88 + ldr r1, _0802EB78 @ =gUnknown_2023FFC + ldr r0, _0802EB84 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r0, _0802EB7C @ =gUnknown_3004FF4 + ldrb r0, [r0] + lsls r0, 8 + orrs r2, r0 + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 + bl sub_802E33C + b _0802EDBA + .align 2, 0 +_0802EB78: .4byte gUnknown_2023FFC +_0802EB7C: .4byte gUnknown_3004FF4 +_0802EB80: .4byte 0x00007fff +_0802EB84: .4byte gUnknown_2023BC4 +_0802EB88: + ldr r1, _0802EBA4 @ =gUnknown_3004FE0 + ldr r2, _0802EBA8 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802EBAC @ =sub_802E674 + str r1, [r0] + movs r0, 0x12 + ands r4, r0 + cmp r4, 0 + beq _0802EBB4 + ldr r1, _0802EBB0 @ =gUnknown_3004FF4 + ldrb r0, [r2] + b _0802EBE4 + .align 2, 0 +_0802EBA4: .4byte gUnknown_3004FE0 +_0802EBA8: .4byte gUnknown_2023BC4 +_0802EBAC: .4byte sub_802E674 +_0802EBB0: .4byte gUnknown_3004FF4 +_0802EBB4: + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _0802EBD4 @ =gUnknown_2023D70 + ldrb r1, [r1] + ldr r2, _0802EBD8 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0802EBDC + movs r0, 0x3 + b _0802EBDE + .align 2, 0 +_0802EBD4: .4byte gUnknown_2023D70 +_0802EBD8: .4byte gUnknown_825E45C +_0802EBDC: + movs r0, 0x1 +_0802EBDE: + bl sub_80751E8 + ldr r1, _0802EC00 @ =gUnknown_3004FF4 +_0802EBE4: + strb r0, [r1] + ldr r2, _0802EC04 @ =gUnknown_202063C + ldr r1, _0802EC08 @ =gUnknown_2023D44 + ldr r0, _0802EC00 @ =gUnknown_3004FF4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0802EC0C @ =sub_8012044 + b _0802EDB8 + .align 2, 0 +_0802EC00: .4byte gUnknown_3004FF4 +_0802EC04: .4byte gUnknown_202063C +_0802EC08: .4byte gUnknown_2023D44 +_0802EC0C: .4byte sub_8012044 +_0802EC10: + movs r7, 0x2 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _0802EC38 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0802EC34 @ =0x0000ffff + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 + bl sub_802E33C + bl sub_8070A84 + b _0802ED2C + .align 2, 0 +_0802EC34: .4byte 0x0000ffff +_0802EC38: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0802EC68 + ldr r4, _0802EC64 @ =gUnknown_2023FFC + ldrb r0, [r6] + adds r2, r0, r4 + ldrb r1, [r2] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _0802EC52 + b _0802EDBA +_0802EC52: + ldrb r0, [r2] + bl sub_8030A14 + ldrb r1, [r6] + adds r1, r4 + ldrb r0, [r1] + movs r2, 0x1 + eors r0, r2 + b _0802ED10 + .align 2, 0 +_0802EC64: .4byte gUnknown_2023FFC +_0802EC68: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802ECAC + ldr r4, _0802ECA4 @ =gUnknown_2023FFC + ldrb r0, [r6] + adds r3, r0, r4 + ldrb r2, [r3] + movs r7, 0x1 + adds r0, r5, 0 + ands r0, r2 + cmp r0, 0 + beq _0802EC84 + b _0802EDBA +_0802EC84: + ldr r1, _0802ECA8 @ =gUnknown_3004FF8 + adds r0, r7, 0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bcc _0802EC92 + b _0802EDBA +_0802EC92: + ldrb r0, [r3] + bl sub_8030A14 + ldrb r1, [r6] + adds r1, r4 + ldrb r0, [r1] + eors r0, r7 + b _0802ED10 + .align 2, 0 +_0802ECA4: .4byte gUnknown_2023FFC +_0802ECA8: .4byte gUnknown_3004FF8 +_0802ECAC: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802ECDC + ldr r4, _0802ECD8 @ =gUnknown_2023FFC + ldrb r0, [r6] + adds r2, r0, r4 + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _0802ECC6 + b _0802EDBA +_0802ECC6: + ldrb r0, [r2] + bl sub_8030A14 + ldrb r1, [r6] + adds r1, r4 + ldrb r0, [r1] + movs r2, 0x2 + eors r0, r2 + b _0802ED10 + .align 2, 0 +_0802ECD8: .4byte gUnknown_2023FFC +_0802ECDC: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802ED4C + ldr r4, _0802ED40 @ =gUnknown_2023FFC + ldrb r0, [r6] + adds r3, r0, r4 + ldrb r2, [r3] + movs r5, 0x2 + adds r0, r7, 0 + ands r0, r2 + cmp r0, 0 + bne _0802EDBA + ldr r1, _0802ED44 @ =gUnknown_3004FF8 + adds r0, r5, 0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bcs _0802EDBA + ldrb r0, [r3] + bl sub_8030A14 + ldrb r1, [r6] + adds r1, r4 + ldrb r0, [r1] + eors r0, r5 +_0802ED10: + strb r0, [r1] + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r6] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC + bl sub_80308CC + bl sub_8030940 +_0802ED2C: + movs r0, 0xF0 + lsls r0, 12 + ldr r1, _0802ED48 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8070588 + b _0802EDBA + .align 2, 0 +_0802ED40: .4byte gUnknown_2023FFC +_0802ED44: .4byte gUnknown_3004FF8 +_0802ED48: .4byte 0x00007fff +_0802ED4C: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0802EDBA + ldr r0, _0802ED84 @ =gUnknown_3004FF8 + ldrb r0, [r0] + cmp r0, 0x1 + bls _0802EDBA + ldr r0, _0802ED88 @ =gUnknown_2022B4C + ldr r5, [r0] + ands r5, r7 + cmp r5, 0 + bne _0802EDBA + ldr r4, _0802ED8C @ =gUnknown_2023FFC + ldrb r0, [r6] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x1D + bl sub_80309CC + ldrb r0, [r6] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0802ED94 + ldr r0, _0802ED90 @ =gUnknown_3004FF4 + strb r5, [r0] + b _0802ED9C + .align 2, 0 +_0802ED84: .4byte gUnknown_3004FF8 +_0802ED88: .4byte gUnknown_2022B4C +_0802ED8C: .4byte gUnknown_2023FFC +_0802ED90: .4byte gUnknown_3004FF4 +_0802ED94: + ldr r1, _0802EDC8 @ =gUnknown_3004FF4 + adds r0, 0x1 + strb r0, [r1] + adds r0, r1, 0 +_0802ED9C: + ldrb r0, [r0] + movs r1, 0x1B + bl sub_80309CC + ldr r0, _0802EDCC @ =gUnknown_83FE7A0 + movs r1, 0xB + bl sub_80D87BC + ldr r1, _0802EDD0 @ =gUnknown_3004FE0 + ldr r0, _0802EDD4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802EDD8 @ =sub_802EF58 +_0802EDB8: + str r1, [r0] +_0802EDBA: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802EDC8: .4byte gUnknown_3004FF4 +_0802EDCC: .4byte gUnknown_83FE7A0 +_0802EDD0: .4byte gUnknown_3004FE0 +_0802EDD4: .4byte gUnknown_2023BC4 +_0802EDD8: .4byte sub_802EF58 + thumb_func_end sub_802EA10 + + thumb_func_start sub_802EDDC +sub_802EDDC: @ 802EDDC + push {r4-r7,lr} + movs r7, 0 + ldr r4, _0802EF40 @ =gUnknown_30030F0 + ldrh r1, [r4, 0x2E] + movs r6, 0x1 + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0802EDF6 + movs r0, 0x5 + bl sub_80722CC + movs r7, 0x1 +_0802EDF6: + ldrh r1, [r4, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802EE18 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802EF44 @ =gUnknown_2022974 + movs r0, 0 + strh r0, [r1] + ldr r1, _0802EF48 @ =gUnknown_2022976 + movs r2, 0xA0 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + movs r7, 0xFF +_0802EE18: + ldrh r1, [r4, 0x2E] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0802EE58 + ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r4, _0802EF50 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0802EE58 + ldrb r0, [r2] + bl sub_8030A14 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + eors r0, r2 + strb r0, [r1] + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC +_0802EE58: + ldr r0, _0802EF40 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802EEA6 + ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r4, _0802EF50 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r3, r0, r5 + ldrb r2, [r3] + movs r6, 0x1 + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + bne _0802EEA6 + ldr r1, _0802EF54 @ =gUnknown_3004FF8 + adds r0, r6, 0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bcs _0802EEA6 + ldrb r0, [r3] + bl sub_8030A14 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + eors r0, r6 + strb r0, [r1] + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC +_0802EEA6: + ldr r0, _0802EF40 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802EEE8 + ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r4, _0802EF50 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802EEE8 + ldrb r0, [r2] + bl sub_8030A14 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x2 + eors r0, r2 + strb r0, [r1] + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC +_0802EEE8: + ldr r0, _0802EF40 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802EF36 + ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r4, _0802EF50 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r3, r0, r5 + ldrb r2, [r3] + movs r6, 0x2 + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + bne _0802EF36 + ldr r1, _0802EF54 @ =gUnknown_3004FF8 + adds r0, r6, 0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bcs _0802EF36 + ldrb r0, [r3] + bl sub_8030A14 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + eors r0, r6 + strb r0, [r1] + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC +_0802EF36: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0802EF40: .4byte gUnknown_30030F0 +_0802EF44: .4byte gUnknown_2022974 +_0802EF48: .4byte gUnknown_2022976 +_0802EF4C: .4byte gUnknown_2023FFC +_0802EF50: .4byte gUnknown_2023BC4 +_0802EF54: .4byte gUnknown_3004FF8 + thumb_func_end sub_802EDDC + + thumb_func_start sub_802EF58 +sub_802EF58: @ 802EF58 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + ldr r0, _0802F2E4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0 + bne _0802EF72 + b _0802F34C +_0802EF72: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0802F2E8 @ =gUnknown_2023FFC + mov r10, r0 + ldr r1, _0802F2EC @ =gUnknown_2023BC4 + mov r8, r1 + ldrb r1, [r1] + adds r2, r1, r0 + ldr r5, _0802F2F0 @ =gUnknown_3004FF4 + ldrb r0, [r2] + ldrb r3, [r5] + cmp r0, r3 + bne _0802EF90 + b _0802F2C8 +_0802EF90: + lsls r1, 9 + ldr r0, _0802F2F4 @ =gUnknown_2022BC8 + adds r1, r0 + mov r9, r1 + ldrb r1, [r2] + lsls r1, 1 + add r1, r9 + ldrh r6, [r1] + ldrb r0, [r5] + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + strh r0, [r1] + ldrb r0, [r5] + lsls r0, 1 + add r0, r9 + strh r6, [r0] + mov r1, r8 + ldrb r0, [r1] + add r0, r10 + ldrb r1, [r0] + mov r7, r9 + adds r7, 0x8 + adds r1, r7, r1 + ldrb r6, [r1] + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r5] + adds r0, r7, r0 + strb r6, [r0] + mov r2, r8 + ldrb r0, [r2] + add r0, r10 + ldrb r1, [r0] + mov r2, r9 + adds r2, 0xC + adds r1, r2, r1 + ldrb r6, [r1] + ldrb r0, [r5] + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r5] + adds r2, r0 + strb r6, [r2] + mov r3, r8 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r2, _0802F2F8 @ =gUnknown_2023E0C + adds r6, r0, r2 + ldrb r4, [r6, 0x18] + lsls r3, r4, 24 + lsrs r2, r3, 28 + ldr r0, _0802F2FC @ =gUnknown_825E45C + mov r12, r0 + add r1, r10 + ldrb r0, [r1] + lsls r0, 2 + add r0, r12 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + beq _0802F04A + lsrs r1, r3, 28 + bics r1, r0 + lsls r1, 4 + movs r2, 0xF + adds r0, r2, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r6, 0x18] + mov r1, r8 + ldrb r0, [r1] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + ldr r3, _0802F2F8 @ =gUnknown_2023E0C + adds r1, r3 + ldrb r4, [r1, 0x18] + lsrs r3, r4, 4 + ldrb r0, [r5] + lsls r0, 2 + add r0, r12 + ldr r0, [r0] + orrs r0, r3 + lsls r0, 4 + ands r2, r4 + orrs r2, r0 + strb r2, [r1, 0x18] +_0802F04A: + bl sub_8030830 + movs r6, 0 + mov r12, r7 + mov r5, sp + adds r5, 0x18 + str r5, [sp, 0x1C] + ldr r2, _0802F300 @ =gUnknown_2023BE4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r4, r0, 0 + adds r4, 0x3B + mov r7, r8 + mov r10, r2 + movs r5, 0x3 +_0802F06E: + mov r1, sp + adds r3, r1, r6 + ldrb r1, [r4] + lsls r2, r6, 1 + adds r0, r5, 0 + lsls r0, r2 + ands r1, r0 + asrs r1, r2 + strb r1, [r3] + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F06E + ldr r1, _0802F2E8 @ =gUnknown_2023FFC + ldrb r0, [r7] + adds r0, r1 + ldrb r0, [r0] + add r0, sp + ldrb r0, [r0] + ldr r2, [sp, 0x1C] + strb r0, [r2] + ldrb r0, [r7] + adds r0, r1 + ldrb r0, [r0] + mov r3, sp + adds r2, r3, r0 + ldr r1, _0802F2F0 @ =gUnknown_3004FF4 + ldrb r0, [r1] + add r0, sp + ldrb r0, [r0] + movs r3, 0 + strb r0, [r2] + ldrb r0, [r1] + mov r5, sp + adds r1, r5, r0 + ldr r2, [sp, 0x1C] + ldrb r0, [r2] + strb r0, [r1] + strb r3, [r2] + movs r6, 0 + ldr r2, [sp, 0x1C] +_0802F0BE: + mov r3, sp + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r6, 1 + lsls r1, r0 + ldrb r0, [r2] + orrs r0, r1 + strb r0, [r2] + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F0BE + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r10 + adds r0, 0x3B + ldr r5, [sp, 0x1C] + ldrb r1, [r5] + strb r1, [r0] + movs r6, 0 + adds r4, r7, 0 + movs r3, 0x58 + movs r0, 0x24 + add r0, r10 + mov r8, r0 + mov r2, r9 + mov r7, r10 + adds r7, 0xC + mov r5, r12 +_0802F0F8: + lsls r1, r6, 1 + ldrb r0, [r4] + muls r0, r3 + adds r1, r0 + adds r1, r7 + ldrh r0, [r2] + strh r0, [r1] + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r3 + adds r1, r6, r1 + add r1, r8 + adds r0, r5, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F0F8 + ldr r2, _0802F2EC @ =gUnknown_2023BC4 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + mov r1, r10 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + beq _0802F13A + b _0802F2C8 +_0802F13A: + movs r6, 0 + mov r1, sp + adds r1, 0x4 + str r1, [sp, 0x20] + add r3, sp, 0xC + mov r10, r3 + ldr r5, _0802F304 @ =gUnknown_2023BCE + mov r9, r5 + mov r8, r2 + movs r7, 0x64 + ldr r5, _0802F308 @ =gUnknown_2024284 + adds r4, r1, 0 +_0802F152: + mov r1, r8 + ldrb r0, [r1] + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + muls r0, r7 + adds r0, r5 + adds r1, r6, 0 + adds r1, 0xD + bl sub_803FBE8 + strh r0, [r4] + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + muls r0, r7 + adds r0, r5 + adds r1, r6, 0 + adds r1, 0x11 + bl sub_803FBE8 + mov r3, r10 + adds r1, r3, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F152 + ldr r1, _0802F304 @ =gUnknown_2023BCE + ldr r0, _0802F2EC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802F308 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + ldr r5, [sp, 0x1C] + strb r0, [r5] + movs r6, 0 + movs r5, 0x3 + ldr r4, [sp, 0x1C] +_0802F1B2: + mov r0, sp + adds r3, r0, r6 + lsls r2, r6, 1 + adds r1, r5, 0 + lsls r1, r2 + ldrb r0, [r4] + ands r0, r1 + asrs r0, r2 + strb r0, [r3] + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F1B2 + ldr r4, _0802F2E8 @ =gUnknown_2023FFC + ldr r3, _0802F2EC @ =gUnknown_2023BC4 + ldrb r0, [r3] + adds r0, r4 + ldrb r1, [r0] + lsls r1, 1 + ldr r2, [sp, 0x20] + adds r1, r2, r1 + ldrh r6, [r1] + ldr r2, _0802F2F0 @ =gUnknown_3004FF4 + ldrb r0, [r2] + lsls r0, 1 + ldr r5, [sp, 0x20] + adds r0, r5, r0 + ldrh r0, [r0] + movs r5, 0 + strh r0, [r1] + ldrb r0, [r2] + lsls r0, 1 + ldr r1, [sp, 0x20] + adds r0, r1, r0 + strh r6, [r0] + ldrb r0, [r3] + adds r0, r4 + ldrb r1, [r0] + add r1, r10 + ldrb r6, [r1] + ldrb r0, [r2] + add r0, r10 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + add r0, r10 + strb r6, [r0] + ldrb r0, [r3] + adds r0, r4 + ldrb r0, [r0] + add r0, sp + ldrb r0, [r0] + ldr r1, [sp, 0x1C] + strb r0, [r1] + ldrb r0, [r3] + adds r0, r4 + ldrb r0, [r0] + mov r3, sp + adds r1, r3, r0 + ldrb r0, [r2] + add r0, sp + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + adds r1, r3, r0 + ldr r2, [sp, 0x1C] + ldrb r0, [r2] + strb r0, [r1] + strb r5, [r2] + movs r6, 0 + ldr r2, [sp, 0x1C] +_0802F23E: + mov r3, sp + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r6, 1 + lsls r1, r0 + ldrb r0, [r2] + orrs r0, r1 + strb r0, [r2] + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F23E + movs r6, 0 + ldr r5, _0802F304 @ =gUnknown_2023BCE + mov r10, r5 + ldr r0, _0802F2EC @ =gUnknown_2023BC4 + mov r9, r0 + movs r1, 0x64 + mov r8, r1 + ldr r7, _0802F308 @ =gUnknown_2024284 + ldr r5, [sp, 0x20] + adds r5, 0x8 + ldr r4, [sp, 0x20] +_0802F26A: + mov r2, r9 + ldrb r0, [r2] + lsls r0, 1 + add r0, r10 + ldrh r0, [r0] + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + adds r0, r7 + adds r1, r6, 0 + adds r1, 0xD + adds r2, r4, 0 + bl sub_804037C + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + add r0, r10 + ldrh r0, [r0] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + adds r1, r6, 0 + adds r1, 0x11 + adds r2, r5, 0 + bl sub_804037C + adds r5, 0x1 + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0802F26A + ldr r1, _0802F304 @ =gUnknown_2023BCE + ldr r0, _0802F2EC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802F308 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + ldr r2, [sp, 0x1C] + bl sub_804037C +_0802F2C8: + ldr r0, _0802F30C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802F318 + ldr r1, _0802F310 @ =gUnknown_3004FE0 + ldr r2, _0802F2EC @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802F314 @ =sub_80E7988 + b _0802F324 + .align 2, 0 +_0802F2E4: .4byte gUnknown_30030F0 +_0802F2E8: .4byte gUnknown_2023FFC +_0802F2EC: .4byte gUnknown_2023BC4 +_0802F2F0: .4byte gUnknown_3004FF4 +_0802F2F4: .4byte gUnknown_2022BC8 +_0802F2F8: .4byte gUnknown_2023E0C +_0802F2FC: .4byte gUnknown_825E45C +_0802F300: .4byte gUnknown_2023BE4 +_0802F304: .4byte gUnknown_2023BCE +_0802F308: .4byte gUnknown_2024284 +_0802F30C: .4byte gUnknown_2022B4C +_0802F310: .4byte gUnknown_3004FE0 +_0802F314: .4byte sub_80E7988 +_0802F318: + ldr r1, _0802F390 @ =gUnknown_3004FE0 + ldr r2, _0802F394 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802F398 @ =sub_802EA10 +_0802F324: + str r1, [r0] + adds r7, r2, 0 + ldr r2, _0802F39C @ =gUnknown_2023FFC + ldrb r0, [r7] + adds r0, r2 + ldr r1, _0802F3A0 @ =gUnknown_3004FF4 + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r7] + adds r0, r2 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC + bl sub_80308A8 + bl sub_80308CC + bl sub_8030940 +_0802F34C: + ldr r0, _0802F3A4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802F3C8 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0802F3A0 @ =gUnknown_3004FF4 + ldrb r0, [r0] + bl sub_8030A14 + ldr r1, _0802F39C @ =gUnknown_2023FFC + ldr r4, _0802F394 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC + ldr r0, _0802F3A8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802F3B0 + ldr r0, _0802F390 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _0802F3AC @ =sub_80E7988 + b _0802F3BA + .align 2, 0 +_0802F390: .4byte gUnknown_3004FE0 +_0802F394: .4byte gUnknown_2023BC4 +_0802F398: .4byte sub_802EA10 +_0802F39C: .4byte gUnknown_2023FFC +_0802F3A0: .4byte gUnknown_3004FF4 +_0802F3A4: .4byte gUnknown_30030F0 +_0802F3A8: .4byte gUnknown_2022B4C +_0802F3AC: .4byte sub_80E7988 +_0802F3B0: + ldr r0, _0802F3F8 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _0802F3FC @ =sub_802EA10 +_0802F3BA: + str r0, [r1] + bl sub_80308A8 + bl sub_80308CC + bl sub_8030940 +_0802F3C8: + ldr r0, _0802F400 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0802F454 + ldr r3, _0802F404 @ =gUnknown_3004FF4 + ldrb r2, [r3] + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _0802F454 + ldr r0, _0802F408 @ =gUnknown_2023FFC + ldr r1, _0802F40C @ =gUnknown_2023BC4 + ldrb r1, [r1] + adds r1, r0 + ldrb r5, [r1] + cmp r2, r5 + bne _0802F410 + ldrb r0, [r1] + movs r1, 0x1D + bl sub_80309CC + b _0802F416 + .align 2, 0 +_0802F3F8: .4byte gUnknown_3004FE0 +_0802F3FC: .4byte sub_802EA10 +_0802F400: .4byte gUnknown_30030F0 +_0802F404: .4byte gUnknown_3004FF4 +_0802F408: .4byte gUnknown_2023FFC +_0802F40C: .4byte gUnknown_2023BC4 +_0802F410: + ldrb r0, [r3] + bl sub_8030A14 +_0802F416: + ldr r4, _0802F440 @ =gUnknown_3004FF4 + ldrb r0, [r4] + movs r1, 0x1 + eors r0, r1 + strb r0, [r4] + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802F444 @ =gUnknown_2023FFC + ldr r0, _0802F448 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bne _0802F44C + adds r0, r1, 0 + movs r1, 0 + bl sub_80309CC + b _0802F454 + .align 2, 0 +_0802F440: .4byte gUnknown_3004FF4 +_0802F444: .4byte gUnknown_2023FFC +_0802F448: .4byte gUnknown_2023BC4 +_0802F44C: + ldrb r0, [r4] + movs r1, 0x1B + bl sub_80309CC +_0802F454: + ldr r0, _0802F490 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802F4E8 + ldr r3, _0802F494 @ =gUnknown_3004FF4 + ldrb r2, [r3] + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + bne _0802F4E8 + ldr r1, _0802F498 @ =gUnknown_3004FF8 + movs r0, 0x1 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bcs _0802F4E8 + ldr r0, _0802F49C @ =gUnknown_2023FFC + ldr r1, _0802F4A0 @ =gUnknown_2023BC4 + ldrb r1, [r1] + adds r1, r0 + ldrb r0, [r1] + cmp r2, r0 + bne _0802F4A4 + ldrb r0, [r1] + movs r1, 0x1D + bl sub_80309CC + b _0802F4AA + .align 2, 0 +_0802F490: .4byte gUnknown_30030F0 +_0802F494: .4byte gUnknown_3004FF4 +_0802F498: .4byte gUnknown_3004FF8 +_0802F49C: .4byte gUnknown_2023FFC +_0802F4A0: .4byte gUnknown_2023BC4 +_0802F4A4: + ldrb r0, [r3] + bl sub_8030A14 +_0802F4AA: + ldr r4, _0802F4D4 @ =gUnknown_3004FF4 + ldrb r0, [r4] + movs r1, 0x1 + eors r0, r1 + strb r0, [r4] + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802F4D8 @ =gUnknown_2023FFC + ldr r0, _0802F4DC @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bne _0802F4E0 + adds r0, r1, 0 + movs r1, 0 + bl sub_80309CC + b _0802F4E8 + .align 2, 0 +_0802F4D4: .4byte gUnknown_3004FF4 +_0802F4D8: .4byte gUnknown_2023FFC +_0802F4DC: .4byte gUnknown_2023BC4 +_0802F4E0: + ldrb r0, [r4] + movs r1, 0x1B + bl sub_80309CC +_0802F4E8: + ldr r0, _0802F518 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802F56C + ldr r3, _0802F51C @ =gUnknown_3004FF4 + ldrb r2, [r3] + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0802F56C + ldr r0, _0802F520 @ =gUnknown_2023FFC + ldr r1, _0802F524 @ =gUnknown_2023BC4 + ldrb r1, [r1] + adds r1, r0 + ldrb r5, [r1] + cmp r2, r5 + bne _0802F528 + ldrb r0, [r1] + movs r1, 0x1D + bl sub_80309CC + b _0802F52E + .align 2, 0 +_0802F518: .4byte gUnknown_30030F0 +_0802F51C: .4byte gUnknown_3004FF4 +_0802F520: .4byte gUnknown_2023FFC +_0802F524: .4byte gUnknown_2023BC4 +_0802F528: + ldrb r0, [r3] + bl sub_8030A14 +_0802F52E: + ldr r4, _0802F558 @ =gUnknown_3004FF4 + ldrb r0, [r4] + movs r1, 0x2 + eors r0, r1 + strb r0, [r4] + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802F55C @ =gUnknown_2023FFC + ldr r0, _0802F560 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bne _0802F564 + adds r0, r1, 0 + movs r1, 0 + bl sub_80309CC + b _0802F56C + .align 2, 0 +_0802F558: .4byte gUnknown_3004FF4 +_0802F55C: .4byte gUnknown_2023FFC +_0802F560: .4byte gUnknown_2023BC4 +_0802F564: + ldrb r0, [r4] + movs r1, 0x1B + bl sub_80309CC +_0802F56C: + ldr r0, _0802F5A8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802F600 + ldr r3, _0802F5AC @ =gUnknown_3004FF4 + ldrb r2, [r3] + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + bne _0802F600 + ldr r1, _0802F5B0 @ =gUnknown_3004FF8 + movs r0, 0x2 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bcs _0802F600 + ldr r0, _0802F5B4 @ =gUnknown_2023FFC + ldr r1, _0802F5B8 @ =gUnknown_2023BC4 + ldrb r1, [r1] + adds r1, r0 + ldrb r0, [r1] + cmp r2, r0 + bne _0802F5BC + ldrb r0, [r1] + movs r1, 0x1D + bl sub_80309CC + b _0802F5C2 + .align 2, 0 +_0802F5A8: .4byte gUnknown_30030F0 +_0802F5AC: .4byte gUnknown_3004FF4 +_0802F5B0: .4byte gUnknown_3004FF8 +_0802F5B4: .4byte gUnknown_2023FFC +_0802F5B8: .4byte gUnknown_2023BC4 +_0802F5BC: + ldrb r0, [r3] + bl sub_8030A14 +_0802F5C2: + ldr r4, _0802F5EC @ =gUnknown_3004FF4 + ldrb r0, [r4] + movs r1, 0x2 + eors r0, r1 + strb r0, [r4] + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802F5F0 @ =gUnknown_2023FFC + ldr r0, _0802F5F4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bne _0802F5F8 + adds r0, r1, 0 + movs r1, 0 + bl sub_80309CC + b _0802F600 + .align 2, 0 +_0802F5EC: .4byte gUnknown_3004FF4 +_0802F5F0: .4byte gUnknown_2023FFC +_0802F5F4: .4byte gUnknown_2023BC4 +_0802F5F8: + ldrb r0, [r4] + movs r1, 0x1B + bl sub_80309CC +_0802F600: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802EF58 + + thumb_func_start sub_802F610 +sub_802F610: @ 802F610 + push {lr} + ldr r0, _0802F64C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0802F664 + ldr r0, _0802F650 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0802F694 + movs r0, 0x53 + bl m4aSongNumStop + ldr r3, _0802F654 @ =gUnknown_30030F0 + ldr r0, _0802F658 @ =0x00000439 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _0802F65C @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r3] + ldr r0, _0802F660 @ =sub_8011A1C + bl sub_8000544 + bl sub_8003ECC + b _0802F694 + .align 2, 0 +_0802F64C: .4byte gUnknown_3003F3C +_0802F650: .4byte gUnknown_3003F64 +_0802F654: .4byte gUnknown_30030F0 +_0802F658: .4byte 0x00000439 +_0802F65C: .4byte gUnknown_3004F80 +_0802F660: .4byte sub_8011A1C +_0802F664: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0802F694 + movs r0, 0x53 + bl m4aSongNumStop + ldr r3, _0802F698 @ =gUnknown_30030F0 + ldr r0, _0802F69C @ =0x00000439 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _0802F6A0 @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r3] + ldr r0, _0802F6A4 @ =sub_8011A1C + bl sub_8000544 + bl sub_8003ECC +_0802F694: + pop {r0} + bx r0 + .align 2, 0 +_0802F698: .4byte gUnknown_30030F0 +_0802F69C: .4byte 0x00000439 +_0802F6A0: .4byte gUnknown_3004F80 +_0802F6A4: .4byte sub_8011A1C + thumb_func_end sub_802F610 + + thumb_func_start sub_802F6A8 +sub_802F6A8: @ 802F6A8 + push {lr} + ldr r0, _0802F6D0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802F71E + ldr r0, _0802F6D4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802F6FC + ldr r0, _0802F6D8 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0802F6DC + bl sub_800AAC0 + b _0802F6E0 + .align 2, 0 +_0802F6D0: .4byte gUnknown_2037AB8 +_0802F6D4: .4byte gUnknown_2022B4C +_0802F6D8: .4byte gUnknown_3003F3C +_0802F6DC: + bl sub_800AB9C +_0802F6E0: + ldr r1, _0802F6F0 @ =gUnknown_3004FE0 + ldr r0, _0802F6F4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802F6F8 @ =sub_802F610 + str r1, [r0] + b _0802F71E + .align 2, 0 +_0802F6F0: .4byte gUnknown_3004FE0 +_0802F6F4: .4byte gUnknown_2023BC4 +_0802F6F8: .4byte sub_802F610 +_0802F6FC: + movs r0, 0x53 + bl m4aSongNumStop + ldr r2, _0802F724 @ =gUnknown_30030F0 + ldr r0, _0802F728 @ =0x00000439 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r0, _0802F72C @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, 0x8] + bl sub_8000544 +_0802F71E: + pop {r0} + bx r0 + .align 2, 0 +_0802F724: .4byte gUnknown_30030F0 +_0802F728: .4byte 0x00000439 +_0802F72C: .4byte gUnknown_3004F80 + thumb_func_end sub_802F6A8 + + thumb_func_start sub_802F730 +sub_802F730: @ 802F730 + push {lr} + ldr r2, _0802F758 @ =gUnknown_202063C + ldr r1, _0802F75C @ =gUnknown_2023D44 + ldr r0, _0802F760 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0802F764 @ =nullsub_8 + cmp r1, r0 + bne _0802F754 + bl sub_802E33C +_0802F754: + pop {r0} + bx r0 + .align 2, 0 +_0802F758: .4byte gUnknown_202063C +_0802F75C: .4byte gUnknown_2023D44 +_0802F760: .4byte gUnknown_2023BC4 +_0802F764: .4byte nullsub_8 + thumb_func_end sub_802F730 + + thumb_func_start sub_802F768 +sub_802F768: @ 802F768 + push {lr} + ldr r2, _0802F790 @ =gUnknown_202063C + ldr r1, _0802F794 @ =gUnknown_2023D44 + ldr r0, _0802F798 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0802F79C @ =nullsub_8 + cmp r1, r0 + bne _0802F78C + bl sub_802E33C +_0802F78C: + pop {r0} + bx r0 + .align 2, 0 +_0802F790: .4byte gUnknown_202063C +_0802F794: .4byte gUnknown_2023D44 +_0802F798: .4byte gUnknown_2023BC4 +_0802F79C: .4byte nullsub_8 + thumb_func_end sub_802F768 + + thumb_func_start sub_802F7A0 +sub_802F7A0: @ 802F7A0 + push {r4-r6,lr} + ldr r6, _0802F7FC @ =gUnknown_202063C + ldr r5, _0802F800 @ =gUnknown_2023D44 + ldr r4, _0802F804 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r6, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, [r0] + ldr r0, _0802F808 @ =nullsub_8 + cmp r1, r0 + bne _0802F7F4 + ldr r0, _0802F80C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + bl nullsub_16 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_80077D8 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + bl sub_802E33C +_0802F7F4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802F7FC: .4byte gUnknown_202063C +_0802F800: .4byte gUnknown_2023D44 +_0802F804: .4byte gUnknown_2023BC4 +_0802F808: .4byte nullsub_8 +_0802F80C: .4byte gUnknown_300500C + thumb_func_end sub_802F7A0 + + thumb_func_start sub_802F810 +sub_802F810: @ 802F810 + push {r4,lr} + ldr r4, _0802F850 @ =gUnknown_2024018 + ldr r1, [r4] + ldr r3, _0802F854 @ =gUnknown_2023BC4 + ldrb r0, [r3] + ldr r2, [r1, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x9] + subs r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0802F848 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + bl sub_802E33C +_0802F848: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802F850: .4byte gUnknown_2024018 +_0802F854: .4byte gUnknown_2023BC4 + thumb_func_end sub_802F810 + + thumb_func_start sub_802F858 +sub_802F858: @ 802F858 + push {r4-r7,lr} + movs r6, 0 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0802F87C + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0802F8B0 + ldr r0, _0802F89C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802F8B0 +_0802F87C: + ldr r2, _0802F8A0 @ =gUnknown_202063C + ldr r1, _0802F8A4 @ =gUnknown_3004FF0 + ldr r0, _0802F8A8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0802F8AC @ =nullsub_8 + cmp r1, r0 + bne _0802F8E6 + b _0802F8E4 + .align 2, 0 +_0802F89C: .4byte gUnknown_2022B4C +_0802F8A0: .4byte gUnknown_202063C +_0802F8A4: .4byte gUnknown_3004FF0 +_0802F8A8: .4byte gUnknown_2023BC4 +_0802F8AC: .4byte nullsub_8 +_0802F8B0: + ldr r2, _0802F9B0 @ =gUnknown_202063C + ldr r5, _0802F9B4 @ =gUnknown_3004FF0 + ldr r0, _0802F9B8 @ =gUnknown_2023BC4 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r4, [r0] + ldr r0, _0802F9BC @ =nullsub_8 + cmp r4, r0 + bne _0802F8E6 + movs r0, 0x2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _0802F8E6 +_0802F8E4: + movs r6, 0x1 +_0802F8E6: + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + beq _0802F8F2 + movs r6, 0 +_0802F8F2: + cmp r6, 0 + bne _0802F8F8 + b _0802FA32 +_0802F8F8: + ldr r0, _0802F9C0 @ =gUnknown_2024018 + mov r12, r0 + ldr r0, [r0] + ldr r7, _0802F9B8 @ =gUnknown_2023BC4 + ldrb r2, [r7] + ldr r3, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r3 + ldrb r1, [r4, 0x1] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _0802F91A + b _0802FA32 +_0802F91A: + movs r6, 0x2 + adds r1, r6, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x1] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _0802F934 + b _0802FA32 +_0802F934: + ldrb r1, [r4] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r1 + strb r0, [r4] + mov r1, r12 + ldr r0, [r1] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1, 0x1] + mov r0, r12 + ldr r2, [r0] + ldrb r0, [r7] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, r12 + ldr r2, [r1] + ldrb r0, [r7] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldr r4, _0802F9C4 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, _0802F9C8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802F9D0 + ldr r0, _0802F9CC @ =gMPlay_BGM + bl m4aMPlayContinue + b _0802F9DC + .align 2, 0 +_0802F9B0: .4byte gUnknown_202063C +_0802F9B4: .4byte gUnknown_3004FF0 +_0802F9B8: .4byte gUnknown_2023BC4 +_0802F9BC: .4byte nullsub_8 +_0802F9C0: .4byte gUnknown_2024018 +_0802F9C4: .4byte 0x000027f9 +_0802F9C8: .4byte gUnknown_2022B4C +_0802F9CC: .4byte gMPlay_BGM +_0802F9D0: + ldr r0, _0802FA38 @ =gMPlay_BGM + ldr r1, _0802FA3C @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl +_0802F9DC: + ldr r7, _0802FA40 @ =gUnknown_2023BCE + ldr r4, _0802FA44 @ =gUnknown_2023BC4 + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _0802FA48 @ =gUnknown_2024284 + adds r0, r5 + bl sub_8035244 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0802FA12 + ldrb r0, [r4] + movs r1, 0x2 + eors r1, r0 + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + bl sub_8035244 +_0802FA12: + ldr r0, _0802FA4C @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r4] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x9] + ldr r1, _0802FA50 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802FA54 @ =sub_802F810 + str r1, [r0] +_0802FA32: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802FA38: .4byte gMPlay_BGM +_0802FA3C: .4byte 0x0000ffff +_0802FA40: .4byte gUnknown_2023BCE +_0802FA44: .4byte gUnknown_2023BC4 +_0802FA48: .4byte gUnknown_2024284 +_0802FA4C: .4byte gUnknown_2024018 +_0802FA50: .4byte gUnknown_3004FE0 +_0802FA54: .4byte sub_802F810 + thumb_func_end sub_802F858 + + thumb_func_start sub_802FA58 +sub_802FA58: @ 802FA58 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0802FBCC @ =gUnknown_2024018 + mov r9, r0 + ldr r0, [r0] + ldr r1, _0802FBD0 @ =gUnknown_2023BC4 + mov r8, r1 + ldrb r2, [r1] + ldr r3, [r0, 0x4] + lsls r5, r2, 1 + adds r0, r5, r2 + lsls r0, 2 + adds r0, r3 + ldrb r4, [r0] + movs r6, 0x8 + adds r0, r6, 0 + ands r0, r4 + cmp r0, 0 + beq _0802FA84 + b _0802FBBE +_0802FA84: + movs r7, 0x2 + adds r1, r2, 0 + eors r1, r7 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0802FA9E + b _0802FBBE +_0802FA9E: + movs r6, 0x80 + adds r0, r6, 0 + ands r0, r4 + cmp r0, 0 + bne _0802FABC + ldr r0, _0802FBD4 @ =gUnknown_2023BCE + adds r0, r5, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0802FBD8 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0802FABC: + mov r2, r9 + ldr r1, [r2] + mov r2, r8 + ldrb r0, [r2] + adds r2, r7, 0 + eors r2, r0 + ldr r1, [r1, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _0802FAF0 + ldr r0, _0802FBD4 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0802FBD8 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0802FAF0: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0802FB5C + ldr r0, _0802FBDC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0802FB5C + ldr r1, _0802FBE0 @ =gUnknown_3004FFC + mov r2, r8 + ldrb r0, [r2] + eors r0, r7 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0802FBE4 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _0802FBE8 @ =gUnknown_3004FF0 + mov r1, r8 + ldrb r0, [r1] + adds r1, r7, 0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0802FBD4 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0802FBD8 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + mov r2, r8 + ldrb r0, [r2] + eors r0, r7 + bl sub_804BD94 + mov r1, r8 + ldrb r0, [r1] + eors r0, r7 + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 +_0802FB5C: + ldr r1, _0802FBE0 @ =gUnknown_3004FFC + ldr r4, _0802FBD0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0802FBE4 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r5, _0802FBE8 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _0802FBD4 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0802FBD8 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r4] + bl sub_804BD94 + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + ldr r0, _0802FBCC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x8] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldr r1, _0802FBEC @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802FBF0 @ =sub_802F858 + str r1, [r0] +_0802FBBE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802FBCC: .4byte gUnknown_2024018 +_0802FBD0: .4byte gUnknown_2023BC4 +_0802FBD4: .4byte gUnknown_2023BCE +_0802FBD8: .4byte gUnknown_2024284 +_0802FBDC: .4byte gUnknown_2022B4C +_0802FBE0: .4byte gUnknown_3004FFC +_0802FBE4: .4byte gUnknown_202063C +_0802FBE8: .4byte gUnknown_3004FF0 +_0802FBEC: .4byte gUnknown_3004FE0 +_0802FBF0: .4byte sub_802F858 + thumb_func_end sub_802FA58 + + thumb_func_start sub_802FBF4 +sub_802FBF4: @ 802FBF4 + push {r4-r6,lr} + ldr r2, _0802FC8C @ =gUnknown_202063C + ldr r0, _0802FC90 @ =gUnknown_3004FF0 + ldr r6, _0802FC94 @ =gUnknown_2023BC4 + ldrb r3, [r6] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0802FC98 @ =nullsub_8 + cmp r1, r0 + bne _0802FC84 + ldr r5, _0802FC9C @ =gUnknown_2024018 + ldr r0, [r5] + ldr r1, [r0, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r1 + ldrb r1, [r2, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802FC84 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldrb r2, [r6] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _0802FCA0 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, [r5] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0802FC78 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 +_0802FC78: + ldr r0, _0802FCA4 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _0802FCA8 @ =sub_802FCAC + str r0, [r1] +_0802FC84: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802FC8C: .4byte gUnknown_202063C +_0802FC90: .4byte gUnknown_3004FF0 +_0802FC94: .4byte gUnknown_2023BC4 +_0802FC98: .4byte nullsub_8 +_0802FC9C: .4byte gUnknown_2024018 +_0802FCA0: .4byte 0x000027f9 +_0802FCA4: .4byte gUnknown_3004FE0 +_0802FCA8: .4byte sub_802FCAC + thumb_func_end sub_802FBF4 + + thumb_func_start sub_802FCAC +sub_802FCAC: @ 802FCAC + push {r4,lr} + ldr r0, _0802FD00 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r4, _0802FD04 @ =gUnknown_2023BC4 + ldrb r1, [r4] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0802FCFA + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + bne _0802FCFA + ldr r0, _0802FD08 @ =gMPlay_BGM + ldr r1, _0802FD0C @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + ldr r2, _0802FD10 @ =gUnknown_2023BCE + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _0802FD14 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + bl sub_802E33C +_0802FCFA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802FD00: .4byte gUnknown_2024018 +_0802FD04: .4byte gUnknown_2023BC4 +_0802FD08: .4byte gMPlay_BGM +_0802FD0C: .4byte 0x0000ffff +_0802FD10: .4byte gUnknown_2023BCE +_0802FD14: .4byte gUnknown_2024284 + thumb_func_end sub_802FCAC + + thumb_func_start sub_802FD18 +sub_802FD18: @ 802FD18 + push {r4-r6,lr} + ldr r6, _0802FDCC @ =gUnknown_2024018 + ldr r0, [r6] + ldr r5, _0802FDD0 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _0802FD4A + ldr r0, _0802FDD4 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0802FDD8 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0802FD4A: + ldr r4, _0802FDDC @ =gUnknown_202063C + ldr r0, _0802FDE0 @ =gUnknown_3004FFC + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r3, r0, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _0802FDE4 @ =nullsub_8 + cmp r1, r0 + bne _0802FDC4 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0802FDC4 + adds r0, r3, r4 + bl sub_8007280 + ldr r4, _0802FDE8 @ =gUnknown_3004FF0 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0802FDD4 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _0802FDD8 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + bl sub_804BD94 + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r0, [r5] + bl sub_8034BB4 + ldr r1, _0802FDEC @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0802FDF0 @ =sub_802FBF4 + str r1, [r0] +_0802FDC4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802FDCC: .4byte gUnknown_2024018 +_0802FDD0: .4byte gUnknown_2023BC4 +_0802FDD4: .4byte gUnknown_2023BCE +_0802FDD8: .4byte gUnknown_2024284 +_0802FDDC: .4byte gUnknown_202063C +_0802FDE0: .4byte gUnknown_3004FFC +_0802FDE4: .4byte nullsub_8 +_0802FDE8: .4byte gUnknown_3004FF0 +_0802FDEC: .4byte gUnknown_3004FE0 +_0802FDF0: .4byte sub_802FBF4 + thumb_func_end sub_802FD18 + + thumb_func_start sub_802FDF4 +sub_802FDF4: @ 802FDF4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + bne _0802FE16 + ldr r0, _0802FE1C @ =gMPlay_BGM + ldr r1, _0802FE20 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + adds r0, r4, 0 + bl sub_8077508 +_0802FE16: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802FE1C: .4byte gMPlay_BGM +_0802FE20: .4byte 0x0000ffff + thumb_func_end sub_802FDF4 + + thumb_func_start sub_802FE24 +sub_802FE24: @ 802FE24 + push {r4-r6,lr} + ldr r5, _0802FE64 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r6, _0802FE68 @ =gUnknown_3004FF0 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + bl sub_80481D4 + lsls r4, 16 + asrs r1, r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0802FE6C + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + movs r2, 0 + bl sub_8048440 + b _0802FE86 + .align 2, 0 +_0802FE64: .4byte gUnknown_2023BC4 +_0802FE68: .4byte gUnknown_3004FF0 +_0802FE6C: + ldr r2, _0802FE8C @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _0802FE90 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + bl sub_802E33C +_0802FE86: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802FE8C: .4byte gUnknown_2023BCE +_0802FE90: .4byte gUnknown_2024284 + thumb_func_end sub_802FE24 + + thumb_func_start sub_802FE94 +sub_802FE94: @ 802FE94 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0802FEA6 + bl sub_802E33C +_0802FEA6: + pop {r0} + bx r0 + thumb_func_end sub_802FE94 + + thumb_func_start sub_802FEAC +sub_802FEAC: @ 802FEAC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _0802FFAC @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + mov r8, r0 + ldrb r0, [r0, 0x8] + mov r10, r0 + mov r1, r8 + ldrb r7, [r1, 0xC] + str r7, [sp, 0x8] + ldrh r2, [r1, 0xA] + str r2, [sp, 0xC] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0802FEF2 + ldr r1, _0802FFB0 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r10, r0 + bne _0802FEF2 + b _08030008 +_0802FEF2: + movs r0, 0x64 + mov r1, r10 + muls r1, r0 + ldr r0, _0802FFB4 @ =gUnknown_2024284 + adds r6, r1, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x4] + ldr r3, _0802FFB8 @ =gUnknown_8253AE4 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _0802FFBC @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x13] + movs r1, 0xCA + lsls r1, 1 + muls r1, r2 + adds r4, r1 + adds r4, r3 + ldr r2, [r4] + str r2, [sp] + ldr r3, [sp, 0xC] + lsls r1, r3, 16 + asrs r1, 16 + adds r0, r1 + cmp r0, r2 + bcc _0802FFE0 + adds r0, r6, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + adds r0, r6, 0 + bl sub_803E47C + ldr r2, [sp] + add r0, sp, 0x4 + ldrh r0, [r0] + subs r2, r0 + ldr r0, [sp, 0xC] + subs r2, r0, r2 + ldr r4, _0802FFC0 @ =gUnknown_2023BC4 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0xB + bl sub_800E848 + strb r5, [r4] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0802FFC8 + ldr r2, _0802FFB0 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r2 + mov r1, r10 + ldrh r0, [r0] + cmp r1, r0 + beq _0802FFA6 + movs r0, 0x2 + eors r7, r0 + lsls r0, r7, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _0802FFC8 +_0802FFA6: + ldr r0, _0802FFC4 @ =sub_8030238 + b _0803000A + .align 2, 0 +_0802FFAC: .4byte gUnknown_3005090 +_0802FFB0: .4byte gUnknown_2023BCE +_0802FFB4: .4byte gUnknown_2024284 +_0802FFB8: .4byte gUnknown_8253AE4 +_0802FFBC: .4byte gUnknown_8254784 +_0802FFC0: .4byte gUnknown_2023BC4 +_0802FFC4: .4byte sub_8030238 +_0802FFC8: + ldr r0, _0802FFD8 @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldr r0, _0802FFDC @ =sub_8030350 + b _0803000C + .align 2, 0 +_0802FFD8: .4byte gUnknown_3005090 +_0802FFDC: .4byte sub_8030350 +_0802FFE0: + str r0, [sp, 0x4] + add r2, sp, 0x4 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_804037C + ldr r1, _08030000 @ =gUnknown_3004FE0 + ldr r3, [sp, 0x8] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, _08030004 @ =sub_802FE94 + str r1, [r0] + mov r0, r9 + bl sub_8077508 + b _0803000E + .align 2, 0 +_08030000: .4byte gUnknown_3004FE0 +_08030004: .4byte sub_802FE94 +_08030008: + ldr r0, _08030020 @ =sub_8030024 +_0803000A: + mov r1, r8 +_0803000C: + str r0, [r1] +_0803000E: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08030020: .4byte sub_8030024 + thumb_func_end sub_802FEAC + + thumb_func_start sub_8030024 +sub_8030024: @ 8030024 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080300DC @ =gUnknown_3005090 + lsls r2, r0, 2 + mov r8, r2 + add r8, r0 + mov r0, r8 + lsls r0, 3 + mov r8, r0 + add r8, r1 + mov r2, r8 + ldrb r1, [r2, 0x8] + movs r0, 0xA + ldrsh r2, [r2, r0] + mov r9, r2 + mov r2, r8 + ldrb r2, [r2, 0xC] + mov r10, r2 + movs r0, 0x64 + adds r6, r1, 0 + muls r6, r0 + ldr r0, _080300E0 @ =gUnknown_2024284 + adds r6, r0 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + adds r3, r0, 0 + ldr r6, _080300E4 @ =gUnknown_8253AE4 + lsls r1, r4, 2 + ldr r2, _080300E8 @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r2 + adds r1, r0 + adds r1, r6 + ldr r1, [r1] + subs r3, r1 + adds r4, 0x1 + lsls r4, 2 + adds r4, r0 + adds r4, r6 + ldr r2, [r4] + subs r2, r1 + ldr r0, _080300EC @ =gUnknown_3004FF0 + add r0, r10 + ldrb r1, [r0] + mov r0, r9 + negs r0, r0 + str r0, [sp] + mov r0, r10 + bl sub_8048150 + movs r0, 0x1B + bl sub_80722CC + ldr r0, _080300F0 @ =sub_80300F4 + mov r1, r8 + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080300DC: .4byte gUnknown_3005090 +_080300E0: .4byte gUnknown_2024284 +_080300E4: .4byte gUnknown_8253AE4 +_080300E8: .4byte gUnknown_8254784 +_080300EC: .4byte gUnknown_3004FF0 +_080300F0: .4byte sub_80300F4 + thumb_func_end sub_8030024 + + thumb_func_start sub_80300F4 +sub_80300F4: @ 80300F4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _08030120 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r6, r0, r1 + ldrh r1, [r6, 0x1C] + movs r2, 0x1C + ldrsh r0, [r6, r2] + cmp r0, 0xC + bgt _08030124 + adds r0, r1, 0x1 + strh r0, [r6, 0x1C] + b _08030220 + .align 2, 0 +_08030120: .4byte gUnknown_3005090 +_08030124: + ldrb r0, [r6, 0x8] + mov r9, r0 + ldrh r2, [r6, 0xA] + mov r10, r2 + ldrb r7, [r6, 0xC] + ldr r5, _080301EC @ =gUnknown_3004FF0 + adds r5, r7, r5 + ldrb r1, [r5] + adds r0, r7, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + bl sub_80481D4 + lsls r4, 16 + asrs r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _08030220 + movs r0, 0x1B + bl m4aSongNumStop + movs r0, 0x64 + mov r1, r9 + muls r1, r0 + ldr r0, _080301F0 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r3, _080301F4 @ =gUnknown_8253AE4 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _080301F8 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r1 + adds r4, r0 + adds r4, r3 + ldr r1, [r4] + str r1, [sp] + mov r2, r10 + lsls r0, r2, 16 + asrs r4, r0, 16 + ldr r0, [sp, 0x4] + adds r0, r4 + cmp r0, r1 + blt _08030204 + adds r0, r5, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + adds r0, r5, 0 + bl sub_803E47C + ldr r2, [sp] + add r0, sp, 0x4 + ldrh r0, [r0] + subs r2, r0 + subs r2, r4, r2 + ldr r4, _080301FC @ =gUnknown_2023BC4 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0xB + bl sub_800E848 + strb r5, [r4] + ldr r0, _08030200 @ =sub_8030238 + str r0, [r6] + b _08030220 + .align 2, 0 +_080301EC: .4byte gUnknown_3004FF0 +_080301F0: .4byte gUnknown_2024284 +_080301F4: .4byte gUnknown_8253AE4 +_080301F8: .4byte gUnknown_8254784 +_080301FC: .4byte gUnknown_2023BC4 +_08030200: .4byte sub_8030238 +_08030204: + str r0, [sp, 0x4] + add r2, sp, 0x4 + adds r0, r5, 0 + movs r1, 0x19 + bl sub_804037C + ldr r1, _08030230 @ =gUnknown_3004FE0 + lsls r0, r7, 2 + adds r0, r1 + ldr r1, _08030234 @ =sub_802FE94 + str r1, [r0] + mov r0, r8 + bl sub_8077508 +_08030220: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08030230: .4byte gUnknown_3004FE0 +_08030234: .4byte sub_802FE94 + thumb_func_end sub_80300F4 + + thumb_func_start sub_8030238 +sub_8030238: @ 8030238 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0803028C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrb r4, [r0, 0xC] + ldrb r6, [r0, 0x8] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0803026C + ldr r1, _08030290 @ =gUnknown_2023BCE + movs r0, 0x2 + adds r2, r4, 0 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r6, r0 + bne _0803026C + adds r4, r2, 0 +_0803026C: + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r4, 0 + movs r3, 0 + bl sub_80341D8 + ldr r0, _0803028C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08030294 @ =sub_8030298 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803028C: .4byte gUnknown_3005090 +_08030290: .4byte gUnknown_2023BCE +_08030294: .4byte sub_8030298 + thumb_func_end sub_8030238 + + thumb_func_start sub_8030298 +sub_8030298: @ 8030298 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08030304 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r2, r0, r1 + ldrb r5, [r2, 0xC] + ldr r0, _08030308 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0803033A + ldrb r4, [r2, 0x8] + movs r0, 0x64 + adds r1, r4, 0 + muls r1, r0 + ldr r0, _0803030C @ =gUnknown_2024284 + adds r7, r1, r0 + adds r0, r7, 0 + movs r1, 0x38 + bl sub_803FBE8 + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08030318 + ldr r1, _08030310 @ =gUnknown_2023BCE + movs r0, 0x2 + adds r2, r5, 0 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _08030318 + ldr r0, _08030314 @ =gUnknown_3004FF0 + adds r0, r2, r0 + ldrb r0, [r0] + adds r1, r7, 0 + movs r2, 0 + bl sub_8049D98 + b _0803032C + .align 2, 0 +_08030304: .4byte gUnknown_3005090 +_08030308: .4byte gUnknown_2024018 +_0803030C: .4byte gUnknown_2024284 +_08030310: .4byte gUnknown_2023BCE +_08030314: .4byte gUnknown_3004FF0 +_08030318: + ldr r0, _08030340 @ =gUnknown_3004FF0 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0x64 + muls r1, r4 + ldr r2, _08030344 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 +_0803032C: + ldr r0, _08030348 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0803034C @ =sub_8030350 + str r0, [r1] +_0803033A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08030340: .4byte gUnknown_3004FF0 +_08030344: .4byte gUnknown_2024284 +_08030348: .4byte gUnknown_3005090 +_0803034C: .4byte sub_8030350 + thumb_func_end sub_8030298 + + thumb_func_start sub_8030350 +sub_8030350: @ 8030350 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08030380 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r0, 0xC + ldrsh r6, [r4, r0] + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08030388 + ldr r0, _08030384 @ =sub_80303A8 + str r0, [r4] + movs r0, 0 + strh r0, [r4, 0x26] + b _08030398 + .align 2, 0 +_08030380: .4byte gUnknown_3005090 +_08030384: .4byte sub_80303A8 +_08030388: + ldr r0, _080303A0 @ =gUnknown_3004FE0 + lsls r1, r6, 2 + adds r1, r0 + ldr r0, _080303A4 @ =sub_802FE94 + str r0, [r1] + adds r0, r5, 0 + bl sub_8077508 +_08030398: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080303A0: .4byte gUnknown_3004FE0 +_080303A4: .4byte sub_802FE94 + thumb_func_end sub_8030350 + + thumb_func_start sub_80303A8 +sub_80303A8: @ 80303A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _080303FC @ =gUnknown_3005098 + adds r5, r0, r1 + ldrb r7, [r5, 0x4] + adds r0, r7, 0 + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r6, r1, 31 + ldr r0, _08030400 @ =gUnknown_2023D44 + adds r0, r7, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08030404 @ =gUnknown_202063C + adds r4, r0, r1 + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0x6 + bls _080303F0 + b _0803051C +_080303F0: + lsls r0, 2 + ldr r1, _08030408 @ =_0803040C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080303FC: .4byte gUnknown_3005098 +_08030400: .4byte gUnknown_2023D44 +_08030404: .4byte gUnknown_202063C +_08030408: .4byte _0803040C + .align 2, 0 +_0803040C: + .4byte _08030428 + .4byte _0803047C + .4byte _08030486 + .4byte _080304C0 + .4byte _080304E0 + .4byte _080304DA + .4byte _080304E8 +_08030428: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0803051C + cmp r6, 0 + bne _0803044C + ldr r1, _08030444 @ =gUnknown_2022978 + ldrh r0, [r1] + strh r0, [r5, 0x1C] + ldr r2, _08030448 @ =gUnknown_202297A + b _08030454 + .align 2, 0 +_08030444: .4byte gUnknown_2022978 +_08030448: .4byte gUnknown_202297A +_0803044C: + ldr r1, _08030474 @ =gUnknown_202297C + ldrh r0, [r1] + strh r0, [r5, 0x1C] + ldr r2, _08030478 @ =gUnknown_202297E +_08030454: + ldrh r0, [r2] + strh r0, [r5, 0x1A] + ldrh r0, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r0, r3 + negs r0, r0 + adds r0, 0x20 + strh r0, [r1] + ldrh r0, [r4, 0x26] + ldrh r4, [r4, 0x22] + adds r0, r4 + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + b _080304E0 + .align 2, 0 +_08030474: .4byte gUnknown_202297C +_08030478: .4byte gUnknown_202297E +_0803047C: + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_8072E48 + b _080304E0 +_08030486: + movs r0, 0x58 + bl sub_80722CC + bl sub_802679C + cmp r0, 0 + beq _080304E0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4, 0x26] + ldrh r4, [r4, 0x22] + adds r1, r4 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _080304BC @ =0x00002710 + movs r2, 0x1 + str r2, [sp] + movs r2, 0 + str r2, [sp, 0x4] + adds r2, r3, 0 + bl sub_811E5B8 + b _080304E0 + .align 2, 0 +_080304BC: .4byte 0x00002710 +_080304C0: + bl sub_811E680 + lsls r0, 24 + cmp r0, 0 + bne _0803051C + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + b _080304E0 +_080304DA: + adds r0, r6, 0 + bl sub_8073128 +_080304E0: + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + b _0803051C +_080304E8: + cmp r6, 0 + bne _08030500 + ldr r1, _080304F8 @ =gUnknown_2022978 + ldrh r0, [r5, 0x1C] + strh r0, [r1] + ldr r1, _080304FC @ =gUnknown_202297A + b _08030508 + .align 2, 0 +_080304F8: .4byte gUnknown_2022978 +_080304FC: .4byte gUnknown_202297A +_08030500: + ldr r1, _08030528 @ =gUnknown_202297C + ldrh r0, [r5, 0x1C] + strh r0, [r1] + ldr r1, _0803052C @ =gUnknown_202297E +_08030508: + ldrh r0, [r5, 0x1A] + strh r0, [r1] + ldr r0, _08030530 @ =gUnknown_3004FE0 + lsls r1, r7, 2 + adds r1, r0 + ldr r0, _08030534 @ =sub_802FE94 + str r0, [r1] + mov r0, r8 + bl sub_8077508 +_0803051C: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08030528: .4byte gUnknown_202297C +_0803052C: .4byte gUnknown_202297E +_08030530: .4byte gUnknown_3004FE0 +_08030534: .4byte sub_802FE94 + thumb_func_end sub_80303A8 + + thumb_func_start sub_8030538 +sub_8030538: @ 8030538 + push {r4-r6,lr} + ldr r6, _08030590 @ =gUnknown_202063C + ldr r5, _08030594 @ =gUnknown_2023D44 + ldr r4, _08030598 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r6 + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + cmp r0, 0xA0 + ble _08030588 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + ldr r1, _0803059C @ =gUnknown_3004FF0 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_802E33C +_08030588: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08030590: .4byte gUnknown_202063C +_08030594: .4byte gUnknown_2023D44 +_08030598: .4byte gUnknown_2023BC4 +_0803059C: .4byte gUnknown_3004FF0 + thumb_func_end sub_8030538 + + thumb_func_start sub_80305A0 +sub_80305A0: @ 80305A0 + push {r4-r6,lr} + ldr r0, _080305FC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _08030600 @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080305F4 + ldr r5, _08030604 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08030608 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _0803060C @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_802E33C +_080305F4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080305FC: .4byte gUnknown_2024018 +_08030600: .4byte gUnknown_2023BC4 +_08030604: .4byte gUnknown_2023D44 +_08030608: .4byte gUnknown_202063C +_0803060C: .4byte gUnknown_3004FF0 + thumb_func_end sub_80305A0 + + thumb_func_start sub_8030610 +sub_8030610: @ 8030610 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _08030622 + bl sub_802E33C +_08030622: + pop {r0} + bx r0 + thumb_func_end sub_8030610 + + thumb_func_start sub_8030628 +sub_8030628: @ 8030628 + push {r4,lr} + ldr r0, _0803066C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08030666 + ldr r1, _08030670 @ =gUnknown_3004FE0 + ldr r2, _08030674 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08030678 @ =sub_8030684 + str r1, [r0] + ldr r3, _0803067C @ =gUnknown_3005090 + ldr r1, _08030680 @ =gUnknown_3004FFC + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r3 + ldrb r4, [r1, 0x8] + bl sub_8077508 + bl sub_8003ECC + adds r0, r4, 0 + bl sub_81278DC +_08030666: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803066C: .4byte gUnknown_2037AB8 +_08030670: .4byte gUnknown_3004FE0 +_08030674: .4byte gUnknown_2023BC4 +_08030678: .4byte sub_8030684 +_0803067C: .4byte gUnknown_3005090 +_08030680: .4byte gUnknown_3004FFC + thumb_func_end sub_8030628 + + thumb_func_start sub_8030684 +sub_8030684: @ 8030684 + push {lr} + ldr r0, _080306B4 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _080306B8 @ =sub_8011100 + cmp r1, r0 + bne _080306F4 + ldr r0, _080306BC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080306F4 + ldr r0, _080306C0 @ =gUnknown_203B0C0 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080306CC + ldr r0, _080306C4 @ =gUnknown_203B0C1 + ldrb r1, [r0] + ldr r2, _080306C8 @ =gUnknown_203B0DC + movs r0, 0x1 + bl sub_800E874 + b _080306D6 + .align 2, 0 +_080306B4: .4byte gUnknown_30030F0 +_080306B8: .4byte sub_8011100 +_080306BC: .4byte gUnknown_2037AB8 +_080306C0: .4byte gUnknown_203B0C0 +_080306C4: .4byte gUnknown_203B0C1 +_080306C8: .4byte gUnknown_203B0DC +_080306CC: + movs r0, 0x1 + movs r1, 0x6 + movs r2, 0 + bl sub_800E874 +_080306D6: + ldr r1, _080306F8 @ =gUnknown_2022BC4 + ldr r0, _080306FC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _080306F0 + bl sub_8030B5C +_080306F0: + bl sub_802E33C +_080306F4: + pop {r0} + bx r0 + .align 2, 0 +_080306F8: .4byte gUnknown_2022BC4 +_080306FC: .4byte gUnknown_2023BC4 + thumb_func_end sub_8030684 + + thumb_func_start sub_8030700 +sub_8030700: @ 8030700 + push {lr} + ldr r0, _0803072C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08030728 + ldr r1, _08030730 @ =gUnknown_3004FE0 + ldr r0, _08030734 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08030738 @ =sub_803073C + str r1, [r0] + bl nullsub_44 + bl sub_8003ECC + bl sub_8107ECC +_08030728: + pop {r0} + bx r0 + .align 2, 0 +_0803072C: .4byte gUnknown_2037AB8 +_08030730: .4byte gUnknown_3004FE0 +_08030734: .4byte gUnknown_2023BC4 +_08030738: .4byte sub_803073C + thumb_func_end sub_8030700 + + thumb_func_start sub_803073C +sub_803073C: @ 803073C + push {lr} + ldr r0, _08030768 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _0803076C @ =sub_8011100 + cmp r1, r0 + bne _08030762 + ldr r0, _08030770 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08030762 + ldr r0, _08030774 @ =gUnknown_203AD30 + ldrh r1, [r0] + movs r0, 0x1 + bl sub_800E8AC + bl sub_802E33C +_08030762: + pop {r0} + bx r0 + .align 2, 0 +_08030768: .4byte gUnknown_30030F0 +_0803076C: .4byte sub_8011100 +_08030770: .4byte gUnknown_2037AB8 +_08030774: .4byte gUnknown_203AD30 + thumb_func_end sub_803073C + + thumb_func_start sub_8030778 +sub_8030778: @ 8030778 + push {lr} + ldr r0, _080307A8 @ =gUnknown_2024005 + ldrb r0, [r0] + cmp r0, 0 + beq _0803079E + ldr r0, _080307AC @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080307B0 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080307A2 +_0803079E: + bl sub_802E33C +_080307A2: + pop {r0} + bx r0 + .align 2, 0 +_080307A8: .4byte gUnknown_2024005 +_080307AC: .4byte gUnknown_2024018 +_080307B0: .4byte gUnknown_2023BC4 + thumb_func_end sub_8030778 + + thumb_func_start sub_80307B4 +sub_80307B4: @ 80307B4 + push {r4,lr} + ldr r1, _080307F0 @ =gUnknown_2023D44 + ldr r0, _080307F4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _080307F8 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x20 + bne _08030800 + movs r3, 0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + ldr r0, _080307FC @ =gUnknown_2024005 + strb r3, [r0] + bl sub_802E33C + b _0803082A + .align 2, 0 +_080307F0: .4byte gUnknown_2023D44 +_080307F4: .4byte gUnknown_2023BC4 +_080307F8: .4byte gUnknown_202063C +_080307FC: .4byte gUnknown_2024005 +_08030800: + ldrh r0, [r4, 0x30] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08030824 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08030824: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_0803082A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80307B4 + + thumb_func_start sub_8030830 +sub_8030830: @ 8030830 + push {r4-r7,lr} + ldr r0, _08030890 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + ldr r3, _08030894 @ =gUnknown_2022BC8 + ldr r2, _08030898 @ =gUnknown_3004FF8 + movs r0, 0 + strb r0, [r2] + movs r5, 0 + ldr r6, _0803089C @ =gUnknown_202298C + adds r4, r1, r3 + adds r7, r2, 0 +_08030848: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8030A14 + adds r0, r6, 0 + ldr r1, _080308A0 @ =gUnknown_83FE770 + bl sub_8008D84 + ldrh r1, [r4] + movs r0, 0xD + muls r1, r0 + ldr r0, _080308A4 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r6, 0 + bl sub_8008DA4 + adds r1, r5, 0x3 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_80D87BC + ldrh r0, [r4] + cmp r0, 0 + beq _08030880 + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] +_08030880: + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08030848 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08030890: .4byte gUnknown_2023BC4 +_08030894: .4byte gUnknown_2022BC8 +_08030898: .4byte gUnknown_3004FF8 +_0803089C: .4byte gUnknown_202298C +_080308A0: .4byte gUnknown_83FE770 +_080308A4: .4byte gUnknown_8247094 + thumb_func_end sub_8030830 + + thumb_func_start sub_80308A8 +sub_80308A8: @ 80308A8 + push {r4,lr} + ldr r4, _080308C4 @ =gUnknown_202298C + ldr r1, _080308C8 @ =gUnknown_83FE766 + adds r0, r4, 0 + bl sub_8008D84 + adds r0, r4, 0 + movs r1, 0x7 + bl sub_80D87BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080308C4: .4byte gUnknown_202298C +_080308C8: .4byte gUnknown_83FE766 + thumb_func_end sub_80308A8 + + thumb_func_start sub_80308CC +sub_80308CC: @ 80308CC + push {r4-r7,lr} + ldr r5, _08030930 @ =gUnknown_2022BC4 + ldr r7, _08030934 @ =gUnknown_2023BC4 + ldrb r0, [r7] + lsls r0, 9 + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08030928 + bl sub_80D89DC + ldrb r1, [r7] + lsls r4, r1, 9 + adds r0, r5, 0x4 + adds r4, r0 + ldr r6, _08030938 @ =gUnknown_202298C + ldr r5, _0803093C @ =gUnknown_2023FFC + adds r1, r5 + adds r0, r4, 0 + adds r0, 0x8 + ldrb r1, [r1] + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + movs r1, 0xBA + strb r1, [r0] + adds r0, 0x1 + ldrb r1, [r7] + adds r1, r5 + adds r4, 0xC + ldrb r1, [r1] + adds r4, r1 + ldrb r1, [r4] + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + adds r0, r6, 0 + movs r1, 0x9 + bl sub_80D87BC +_08030928: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08030930: .4byte gUnknown_2022BC4 +_08030934: .4byte gUnknown_2023BC4 +_08030938: .4byte gUnknown_202298C +_0803093C: .4byte gUnknown_2023FFC + thumb_func_end sub_80308CC + + thumb_func_start sub_8030940 +sub_8030940: @ 8030940 + push {r4-r6,lr} + ldr r5, _080309AC @ =gUnknown_2023BC4 + ldrb r4, [r5] + lsls r4, 9 + ldr r0, _080309B0 @ =gUnknown_2022BC8 + adds r4, r0 + ldr r6, _080309B4 @ =gUnknown_202298C + ldr r1, _080309B8 @ =gUnknown_83FE76A + adds r0, r6, 0 + bl sub_8008D84 + adds r3, r0, 0 + movs r0, 0xFC + strb r0, [r3] + adds r3, 0x1 + movs r0, 0x6 + strb r0, [r3] + adds r3, 0x1 + movs r0, 0x1 + strb r0, [r3] + adds r3, 0x1 + ldr r1, _080309BC @ =gUnknown_83FE770 + adds r0, r3, 0 + bl sub_8008D84 + adds r3, r0, 0 + ldr r2, _080309C0 @ =gUnknown_8250C04 + ldr r1, _080309C4 @ =gUnknown_2023FFC + ldrb r0, [r5] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r0 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + lsls r1, r0, 3 + subs r1, r0 + ldr r0, _080309C8 @ =gUnknown_824F1A0 + adds r1, r0 + adds r0, r3, 0 + bl sub_8008D84 + adds r0, r6, 0 + movs r1, 0x8 + bl sub_80D87BC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080309AC: .4byte gUnknown_2023BC4 +_080309B0: .4byte gUnknown_2022BC8 +_080309B4: .4byte gUnknown_202298C +_080309B8: .4byte gUnknown_83FE76A +_080309BC: .4byte gUnknown_83FE770 +_080309C0: .4byte gUnknown_8250C04 +_080309C4: .4byte gUnknown_2023FFC +_080309C8: .4byte gUnknown_824F1A0 + thumb_func_end sub_8030940 + + thumb_func_start sub_80309CC +sub_80309CC: @ 80309CC + push {lr} + sub sp, 0x10 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + lsls r1, 24 + lsrs r1, 24 + add r2, sp, 0xC + adds r0, r1, 0x1 + strh r0, [r2] + adds r0, r2, 0 + adds r1, 0x2 + strh r1, [r0, 0x2] + movs r1, 0x1 + adds r0, r3, 0 + ands r0, r1 + lsls r2, r0, 3 + adds r2, r0 + adds r2, 0x1 + movs r0, 0x2 + ands r3, r0 + adds r3, 0x37 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + bl sub_8002228 + movs r0, 0 + bl sub_80020BC + add sp, 0x10 + pop {r0} + bx r0 + thumb_func_end sub_80309CC + + thumb_func_start sub_8030A14 +sub_8030A14: @ 8030A14 + push {lr} + sub sp, 0x10 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + add r0, sp, 0xC + movs r1, 0x20 + strh r1, [r0] + strh r1, [r0, 0x2] + movs r1, 0x1 + adds r0, r3, 0 + ands r0, r1 + lsls r2, r0, 3 + adds r2, r0 + adds r2, 0x1 + movs r0, 0x2 + ands r3, r0 + adds r3, 0x37 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + bl sub_8002228 + movs r0, 0 + bl sub_80020BC + add sp, 0x10 + pop {r0} + bx r0 + thumb_func_end sub_8030A14 + + thumb_func_start sub_8030A54 +sub_8030A54: @ 8030A54 + push {r4,lr} + sub sp, 0x10 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + add r0, sp, 0xC + movs r4, 0x1 + strh r4, [r0] + movs r1, 0x2 + strh r1, [r0, 0x2] + adds r0, r3, 0 + ands r0, r4 + lsls r2, r0, 3 + subs r2, r0 + adds r2, 0x10 + lsls r2, 24 + lsrs r2, 24 + ands r3, r1 + adds r3, 0x23 + str r4, [sp] + str r1, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + bl sub_8002228 + movs r0, 0 + bl sub_80020BC + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8030A54 + + thumb_func_start sub_8030A98 +sub_8030A98: @ 8030A98 + push {lr} + sub sp, 0x10 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + add r0, sp, 0xC + movs r1, 0x20 + strh r1, [r0] + strh r1, [r0, 0x2] + movs r1, 0x1 + adds r0, r3, 0 + ands r0, r1 + lsls r2, r0, 3 + subs r2, r0 + adds r2, 0x10 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x2 + ands r3, r0 + adds r3, 0x23 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + bl sub_8002228 + movs r0, 0 + bl sub_80020BC + add sp, 0x10 + pop {r0} + bx r0 + thumb_func_end sub_8030A98 + + thumb_func_start sub_8030ADC +sub_8030ADC: @ 8030ADC + push {lr} + ldr r0, _08030AE8 @ =sub_8077764 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_08030AE8: .4byte sub_8077764 + thumb_func_end sub_8030ADC + + thumb_func_start sub_8030AEC +sub_8030AEC: @ 8030AEC + push {lr} + ldr r0, _08030AF8 @ =sub_8077764 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_08030AF8: .4byte sub_8077764 + thumb_func_end sub_8030AEC + + thumb_func_start sub_8030AFC +sub_8030AFC: @ 8030AFC + push {lr} + ldr r0, _08030B24 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08030B28 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08030B1E + bl sub_802E33C +_08030B1E: + pop {r0} + bx r0 + .align 2, 0 +_08030B24: .4byte gUnknown_2024018 +_08030B28: .4byte gUnknown_2023BC4 + thumb_func_end sub_8030AFC + + thumb_func_start sub_8030B2C +sub_8030B2C: @ 8030B2C + push {lr} + ldr r0, _08030B54 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08030B58 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08030B4E + bl sub_802E33C +_08030B4E: + pop {r0} + bx r0 + .align 2, 0 +_08030B54: .4byte gUnknown_2024018 +_08030B58: .4byte gUnknown_2023BC4 + thumb_func_end sub_8030B2C + + thumb_func_start sub_8030B5C +sub_8030B5C: @ 8030B5C + push {lr} + ldr r0, _08030B80 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08030B7C + ldr r0, _08030B84 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _08030B88 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _08030B8C @ =gUnknown_83FE714 + movs r1, 0 + bl sub_80D87BC +_08030B7C: + pop {r0} + bx r0 + .align 2, 0 +_08030B80: .4byte gUnknown_2022B4C +_08030B84: .4byte gUnknown_2022974 +_08030B88: .4byte gUnknown_2022976 +_08030B8C: .4byte gUnknown_83FE714 + thumb_func_end sub_8030B5C + + thumb_func_start sub_8030B90 +sub_8030B90: @ 8030B90 + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _08030BBC @ =gUnknown_2022BC4 + ldr r0, _08030BC0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _08030BC8 + ldr r0, _08030BC4 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_8030C04 + adds r6, r0, 0 + b _08030BEA + .align 2, 0 +_08030BBC: .4byte gUnknown_2022BC4 +_08030BC0: .4byte gUnknown_2023BC4 +_08030BC4: .4byte gUnknown_2023BCE +_08030BC8: + ldrb r4, [r1] + movs r5, 0 +_08030BCC: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08030BE2 + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl sub_8030C04 + adds r6, r0 +_08030BE2: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _08030BCC +_08030BEA: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl sub_800E708 + bl sub_802E33C + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8030B90 + + thumb_func_start sub_8030C04 +sub_8030C04: @ 8030C04 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x90 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _08030C38 @ =gUnknown_2022BC4 + ldr r3, _08030C3C @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _08030C2E + bl _0803139A +_08030C2E: + lsls r0, 2 + ldr r1, _08030C40 @ =_08030C44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08030C38: .4byte gUnknown_2022BC4 +_08030C3C: .4byte gUnknown_2023BC4 +_08030C40: .4byte _08030C44 + .align 2, 0 +_08030C44: + .4byte _08030D34 + .4byte _08030F58 + .4byte _08030F68 + .4byte _08030F78 + .4byte _08030FE0 + .4byte _08030FE0 + .4byte _08030FE0 + .4byte _08030FE0 + .4byte _08030FFC + .4byte _08031038 + .4byte _08031038 + .4byte _08031038 + .4byte _08031038 + .4byte _0803139A + .4byte _0803139A + .4byte _0803139A + .4byte _0803139A + .4byte _08031054 + .4byte _08031064 + .4byte _08031094 + .4byte _080310A4 + .4byte _080310B4 + .4byte _080310C4 + .4byte _080310D4 + .4byte _080310E4 + .4byte _080310F4 + .4byte _08031104 + .4byte _08031114 + .4byte _08031124 + .4byte _08031134 + .4byte _08031144 + .4byte _08031154 + .4byte _080311A4 + .4byte _080311B4 + .4byte _080311C4 + .4byte _080311D4 + .4byte _080311E4 + .4byte _080311F4 + .4byte _08031204 + .4byte _08031214 + .4byte _08031224 + .4byte _08031258 + .4byte _08031268 + .4byte _08031278 + .4byte _08031288 + .4byte _08031298 + .4byte _080312A8 + .4byte _080312B8 + .4byte _080312C8 + .4byte _080312E8 + .4byte _080312F8 + .4byte _08031308 + .4byte _08031318 + .4byte _08031328 + .4byte _08031338 + .4byte _08031348 + .4byte _08031358 + .4byte _08031368 + .4byte _08031378 + .4byte _08031388 +_08030D34: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08030F48 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2E] + movs r6, 0 + add r0, sp, 0x24 + mov r9, r0 + movs r1, 0x3B + add r1, sp + mov r10, r1 + mov r2, sp + adds r2, 0x2B + str r2, [sp, 0x80] + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x8C] + adds r2, 0x5 + str r2, [sp, 0x84] + adds r0, 0x12 + str r0, [sp, 0x88] + mov r8, r4 + add r4, sp, 0xC +_08030D80: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + bl sub_803FBE8 + strh r0, [r4] + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + bl sub_803FBE8 + mov r2, r9 + adds r1, r2, r6 + strb r0, [r1] + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08030D80 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08030F48 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r10 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + ldr r2, [sp, 0x80] + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x44] + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + mov r3, sp + movs r5, 0x1F + ands r0, r5 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r3, sp + movs r6, 0x1F + ands r0, r6 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _08030F4C @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _08030F50 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + mov r3, sp + ands r0, r6 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _08030F54 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x48] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + str r0, [sp, 0x4C] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x54] + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, [sp, 0x8C] + bl sub_803FBE8 + ldr r0, [sp, 0x84] + ldr r1, [sp, 0x8C] + bl sub_8008CF4 + adds r0, r4, 0 + movs r1, 0x7 + ldr r2, [sp, 0x88] + bl sub_803FBE8 + mov r2, sp + movs r6, 0 +_08030F38: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0x57 + bls _08030F38 + b _0803139A + .align 2, 0 +_08030F48: .4byte gUnknown_2024284 +_08030F4C: .4byte 0xfffffc1f +_08030F50: .4byte 0xfff07fff +_08030F54: .4byte 0xfffffe0f +_08030F58: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08030F64 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + b _080312D2 + .align 2, 0 +_08030F64: .4byte gUnknown_2024284 +_08030F68: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08030F74 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + b _080312D2 + .align 2, 0 +_08030F74: .4byte gUnknown_2024284 +_08030F78: + movs r6, 0 + add r2, sp, 0x58 + mov r9, r2 + add r0, sp, 0x60 + mov r10, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08030FDC @ =gUnknown_2024284 + adds r4, r1, r0 + mov r8, r9 +_08030F8E: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r4, 0 + bl sub_803FBE8 + mov r2, r10 + adds r1, r2, r6 + strb r0, [r1] + movs r0, 0x2 + add r8, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _08030F8E + movs r0, 0x64 + muls r0, r5 + ldr r1, _08030FDC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1, 0xC] + mov r2, r9 + movs r6, 0 +_08030FCC: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, 0x1 + cmp r6, 0xF + bls _08030FCC + b _0803139A + .align 2, 0 +_08030FDC: .4byte gUnknown_2024284 +_08030FE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08030FF8 @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x9 + b _080312D2 + .align 2, 0 +_08030FF8: .4byte gUnknown_2024284 +_08030FFC: + movs r6, 0 + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r2, _08031034 @ =gUnknown_2024284 + mov r8, r2 +_08031008: + adds r1, r6, 0 + adds r1, 0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x3 + ble _08031008 + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031034 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r7, r6 + strb r0, [r1] + adds r6, 0x1 + b _0803139A + .align 2, 0 +_08031034: .4byte gUnknown_2024284 +_08031038: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031050 @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r3] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x8 + b _08031392 + .align 2, 0 +_08031050: .4byte gUnknown_2024284 +_08031054: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031060 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1 + b _0803106E + .align 2, 0 +_08031060: .4byte gUnknown_2024284 +_08031064: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031090 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x19 +_0803106E: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r6, 0x3 + b _0803139A + .align 2, 0 +_08031090: .4byte gUnknown_2024284 +_08031094: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080310A0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1A + b _08031392 + .align 2, 0 +_080310A0: .4byte gUnknown_2024284 +_080310A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080310B0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1B + b _08031392 + .align 2, 0 +_080310B0: .4byte gUnknown_2024284 +_080310B4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080310C0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1C + b _08031392 + .align 2, 0 +_080310C0: .4byte gUnknown_2024284 +_080310C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080310D0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1D + b _08031392 + .align 2, 0 +_080310D0: .4byte gUnknown_2024284 +_080310D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080310E0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1E + b _08031392 + .align 2, 0 +_080310E0: .4byte gUnknown_2024284 +_080310E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080310F0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1F + b _08031392 + .align 2, 0 +_080310F0: .4byte gUnknown_2024284 +_080310F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031100 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x20 + b _08031392 + .align 2, 0 +_08031100: .4byte gUnknown_2024284 +_08031104: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031110 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x22 + b _08031392 + .align 2, 0 +_08031110: .4byte gUnknown_2024284 +_08031114: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031120 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x23 + b _08031392 + .align 2, 0 +_08031120: .4byte gUnknown_2024284 +_08031124: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031130 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x24 + b _08031392 + .align 2, 0 +_08031130: .4byte gUnknown_2024284 +_08031134: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031140 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x25 + b _08031392 + .align 2, 0 +_08031140: .4byte gUnknown_2024284 +_08031144: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031150 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x26 + b _08031392 + .align 2, 0 +_08031150: .4byte gUnknown_2024284 +_08031154: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080311A0 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_803FBE8 + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x28 + bl sub_803FBE8 + strb r0, [r7, 0x1] + adds r0, r4, 0 + movs r1, 0x29 + bl sub_803FBE8 + strb r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x2A + bl sub_803FBE8 + strb r0, [r7, 0x3] + adds r0, r4, 0 + movs r1, 0x2B + bl sub_803FBE8 + strb r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x2C + bl sub_803FBE8 + strb r0, [r7, 0x5] + movs r6, 0x6 + b _0803139A + .align 2, 0 +_080311A0: .4byte gUnknown_2024284 +_080311A4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080311B0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x27 + b _08031392 + .align 2, 0 +_080311B0: .4byte gUnknown_2024284 +_080311B4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080311C0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x28 + b _08031392 + .align 2, 0 +_080311C0: .4byte gUnknown_2024284 +_080311C4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080311D0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x29 + b _08031392 + .align 2, 0 +_080311D0: .4byte gUnknown_2024284 +_080311D4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080311E0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2A + b _08031392 + .align 2, 0 +_080311E0: .4byte gUnknown_2024284 +_080311E4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080311F0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2B + b _08031392 + .align 2, 0 +_080311F0: .4byte gUnknown_2024284 +_080311F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031200 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2C + b _08031392 + .align 2, 0 +_08031200: .4byte gUnknown_2024284 +_08031204: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031210 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + b _0803122E + .align 2, 0 +_08031210: .4byte gUnknown_2024284 +_08031214: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031220 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x9 + b _080312D2 + .align 2, 0 +_08031220: .4byte gUnknown_2024284 +_08031224: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031254 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x37 +_0803122E: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r6, 0x4 + b _0803139A + .align 2, 0 +_08031254: .4byte gUnknown_2024284 +_08031258: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031264 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + b _08031392 + .align 2, 0 +_08031264: .4byte gUnknown_2024284 +_08031268: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031274 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + b _080312D2 + .align 2, 0 +_08031274: .4byte gUnknown_2024284 +_08031278: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031284 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + b _080312D2 + .align 2, 0 +_08031284: .4byte gUnknown_2024284 +_08031288: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031294 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3B + b _080312D2 + .align 2, 0 +_08031294: .4byte gUnknown_2024284 +_08031298: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080312A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3C + b _080312D2 + .align 2, 0 +_080312A4: .4byte gUnknown_2024284 +_080312A8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080312B4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3D + b _080312D2 + .align 2, 0 +_080312B4: .4byte gUnknown_2024284 +_080312B8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080312C4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3E + b _080312D2 + .align 2, 0 +_080312C4: .4byte gUnknown_2024284 +_080312C8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080312E4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3F +_080312D2: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r6, 0x2 + b _0803139A + .align 2, 0 +_080312E4: .4byte gUnknown_2024284 +_080312E8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080312F4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x16 + b _08031392 + .align 2, 0 +_080312F4: .4byte gUnknown_2024284 +_080312F8: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031304 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x17 + b _08031392 + .align 2, 0 +_08031304: .4byte gUnknown_2024284 +_08031308: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031314 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x18 + b _08031392 + .align 2, 0 +_08031314: .4byte gUnknown_2024284 +_08031318: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031324 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x21 + b _08031392 + .align 2, 0 +_08031324: .4byte gUnknown_2024284 +_08031328: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031334 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2F + b _08031392 + .align 2, 0 +_08031334: .4byte gUnknown_2024284 +_08031338: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031344 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x30 + b _08031392 + .align 2, 0 +_08031344: .4byte gUnknown_2024284 +_08031348: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031354 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x32 + b _08031392 + .align 2, 0 +_08031354: .4byte gUnknown_2024284 +_08031358: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031364 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x33 + b _08031392 + .align 2, 0 +_08031364: .4byte gUnknown_2024284 +_08031368: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031374 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x34 + b _08031392 + .align 2, 0 +_08031374: .4byte gUnknown_2024284 +_08031378: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031384 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x35 + b _08031392 + .align 2, 0 +_08031384: .4byte gUnknown_2024284 +_08031388: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080313AC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x36 +_08031392: + bl sub_803FBE8 + strb r0, [r7] + movs r6, 0x1 +_0803139A: + adds r0, r6, 0 + add sp, 0x90 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080313AC: .4byte gUnknown_2024284 + thumb_func_end sub_8030C04 + + thumb_func_start sub_80313B0 +sub_80313B0: @ 80313B0 + push {r4-r7,lr} + sub sp, 0x58 + ldr r2, _08031428 @ =gUnknown_2023BCE + ldr r5, _0803142C @ =gUnknown_2023BC4 + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + adds r4, r2, 0 + muls r4, r0 + ldr r3, _08031430 @ =gUnknown_2022BC4 + lsls r1, 9 + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r2, [r0] + ldr r0, _08031434 @ =gUnknown_2024284 + adds r0, r2, r0 + adds r6, r4, r0 + mov r0, sp + adds r4, r0, r2 + movs r2, 0 + adds r0, r3, 0x2 + adds r1, r0 + adds r7, r5, 0 + mov r12, r3 + ldrb r1, [r1] + cmp r2, r1 + bcs _08031406 + adds r3, r0, 0 +_080313EC: + adds r1, r4, r2 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r5] + lsls r0, 9 + adds r0, r3 + ldrb r0, [r0] + cmp r2, r0 + bcc _080313EC +_08031406: + ldrb r0, [r7] + lsls r0, 9 + mov r1, r12 + adds r1, 0x2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + adds r2, r4, 0 + bl sub_800E708 + bl sub_802E33C + add sp, 0x58 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08031428: .4byte gUnknown_2023BCE +_0803142C: .4byte gUnknown_2023BC4 +_08031430: .4byte gUnknown_2022BC4 +_08031434: .4byte gUnknown_2024284 + thumb_func_end sub_80313B0 + + thumb_func_start sub_8031438 +sub_8031438: @ 8031438 + push {r4,r5,lr} + ldr r1, _0803145C @ =gUnknown_2022BC4 + ldr r0, _08031460 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _08031468 + ldr r0, _08031464 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_8031490 + b _08031486 + .align 2, 0 +_0803145C: .4byte gUnknown_2022BC4 +_08031460: .4byte gUnknown_2023BC4 +_08031464: .4byte gUnknown_2023BCE +_08031468: + ldrb r4, [r1] + movs r5, 0 +_0803146C: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0803147A + adds r0, r5, 0 + bl sub_8031490 +_0803147A: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _0803146C +_08031486: + bl sub_802E33C + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8031438 + + thumb_func_start sub_8031490 +sub_8031490: @ 8031490 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080314C8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + ldr r2, _080314CC @ =gUnknown_2022BC7 + adds r3, r0, r2 + adds r6, r3, 0 + subs r1, r2, 0x2 + adds r0, r1 + ldrb r0, [r0] + adds r7, r2, 0 + cmp r0, 0x3B + bls _080314BC + bl _08031E56 +_080314BC: + lsls r0, 2 + ldr r1, _080314D0 @ =_080314D4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080314C8: .4byte gUnknown_2023BC4 +_080314CC: .4byte gUnknown_2022BC7 +_080314D0: .4byte _080314D4 + .align 2, 0 +_080314D4: + .4byte _080315C4 + .4byte _0803175C + .4byte _0803177C + .4byte _0803179C + .4byte _080317F4 + .4byte _080317F4 + .4byte _080317F4 + .4byte _080317F4 + .4byte _0803181C + .4byte _08031880 + .4byte _08031880 + .4byte _08031880 + .4byte _08031880 + .4byte _08031E56 + .4byte _08031E56 + .4byte _08031E56 + .4byte _08031E56 + .4byte _080318B0 + .4byte _080318D0 + .4byte _080318F0 + .4byte _08031910 + .4byte _08031930 + .4byte _08031950 + .4byte _08031970 + .4byte _08031990 + .4byte _080319B0 + .4byte _080319D0 + .4byte _080319F0 + .4byte _08031A10 + .4byte _08031A30 + .4byte _08031A50 + .4byte _08031A70 + .4byte _08031AE0 + .4byte _08031B00 + .4byte _08031B20 + .4byte _08031B40 + .4byte _08031B60 + .4byte _08031B80 + .4byte _08031BA0 + .4byte _08031BC0 + .4byte _08031BE0 + .4byte _08031C00 + .4byte _08031C20 + .4byte _08031C40 + .4byte _08031C60 + .4byte _08031C80 + .4byte _08031CA0 + .4byte _08031CC0 + .4byte _08031CE0 + .4byte _08031D00 + .4byte _08031D20 + .4byte _08031D40 + .4byte _08031D60 + .4byte _08031D80 + .4byte _08031DA0 + .4byte _08031DC0 + .4byte _08031DE0 + .4byte _08031E00 + .4byte _08031E20 + .4byte _08031E40 +_080315C4: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08031758 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + adds r2, r6, 0 + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x2E + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + movs r0, 0 + mov r8, r0 + movs r0, 0x3B + adds r0, r6 + mov r10, r0 + adds r0, r6, 0 + adds r0, 0x2B + str r0, [sp, 0x20] + adds r0, 0x19 + str r0, [sp, 0x28] + adds r0, 0x4 + str r0, [sp, 0x2C] + adds r0, 0x4 + str r0, [sp, 0x30] + subs r0, 0x22 + str r0, [sp, 0x1C] + subs r0, 0x2 + str r0, [sp, 0x18] + adds r0, 0x4 + str r0, [sp, 0x24] + adds r0, r6, 0x2 + str r0, [sp, 0x4] + adds r0, r6, 0x4 + str r0, [sp, 0x8] + adds r0, r6, 0x6 + str r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x14] + mov r9, r4 + adds r7, r6, 0 + adds r7, 0x24 + adds r4, r6, 0 + adds r4, 0xC +_0803162A: + mov r1, r8 + adds r1, 0xD + mov r0, r9 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + mov r0, r9 + adds r2, r7, 0 + bl sub_804037C + adds r7, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _0803162A + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08031758 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + mov r2, r10 + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x20 + ldr r2, [sp, 0x20] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x19 + ldr r2, [sp, 0x28] + bl sub_804037C + ldrb r0, [r6, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r6, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x28 + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r6, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x29 + mov r2, sp + bl sub_804037C + mov r1, sp + ldr r0, [r6, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2A + mov r2, sp + bl sub_804037C + mov r1, sp + ldrh r0, [r6, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2B + mov r2, sp + bl sub_804037C + mov r1, sp + ldrb r0, [r6, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0 + ldr r2, [sp, 0x2C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x37 + ldr r2, [sp, 0x30] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x38 + ldr r2, [sp, 0x1C] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + ldr r2, [sp, 0x18] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + ldr r2, [sp, 0x24] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3B + ldr r2, [sp, 0x4] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + ldr r2, [sp, 0x8] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + ldr r2, [sp, 0xC] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + ldr r2, [sp, 0x10] + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + ldr r2, [sp, 0x14] + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031758: .4byte gUnknown_2024284 +_0803175C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031774 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031778 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0xB + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031774: .4byte gUnknown_2024284 +_08031778: .4byte gUnknown_2023BC4 +_0803177C: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031794 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031798 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0xC + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031794: .4byte gUnknown_2024284 +_08031798: .4byte gUnknown_2023BC4 +_0803179C: + movs r0, 0 + mov r8, r0 + movs r0, 0xC + adds r0, r3 + mov r9, r0 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080317F0 @ =gUnknown_2024284 + adds r7, r1, r0 + adds r6, r3, 0 + adds r6, 0x8 + adds r4, r3, 0 +_080317B6: + mov r1, r8 + adds r1, 0xD + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_804037C + mov r1, r8 + adds r1, 0x11 + adds r0, r7, 0 + adds r2, r6, 0 + bl sub_804037C + adds r6, 0x1 + adds r4, 0x2 + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x3 + ble _080317B6 + movs r0, 0x64 + muls r0, r5 + ldr r1, _080317F0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + b _08031E56 + .align 2, 0 +_080317F0: .4byte gUnknown_2024284 +_080317F4: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031810 @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _08031814 @ =gUnknown_2022BC4 + ldr r1, _08031818 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x9 + b _08031898 + .align 2, 0 +_08031810: .4byte gUnknown_2024284 +_08031814: .4byte gUnknown_2022BC4 +_08031818: .4byte gUnknown_2023BC4 +_0803181C: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08031878 @ =gUnknown_2024284 + adds r4, r0 + ldr r5, _0803187C @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + adds r2, r7 + adds r0, r4, 0 + movs r1, 0x11 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x12 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x13 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x14 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x15 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031878: .4byte gUnknown_2024284 +_0803187C: .4byte gUnknown_2023BC4 +_08031880: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080318A4 @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _080318A8 @ =gUnknown_2022BC4 + ldr r1, _080318AC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r1, r3, 0x1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, 0x8 +_08031898: + adds r3, 0x3 + adds r2, r3 + bl sub_804037C + b _08031E56 + .align 2, 0 +_080318A4: .4byte gUnknown_2024284 +_080318A8: .4byte gUnknown_2022BC4 +_080318AC: .4byte gUnknown_2023BC4 +_080318B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080318C8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080318CC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1 + bl sub_804037C + b _08031E56 + .align 2, 0 +_080318C8: .4byte gUnknown_2024284 +_080318CC: .4byte gUnknown_2023BC4 +_080318D0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080318E8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080318EC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x19 + bl sub_804037C + b _08031E56 + .align 2, 0 +_080318E8: .4byte gUnknown_2024284 +_080318EC: .4byte gUnknown_2023BC4 +_080318F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031908 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0803190C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1A + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031908: .4byte gUnknown_2024284 +_0803190C: .4byte gUnknown_2023BC4 +_08031910: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031928 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0803192C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1B + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031928: .4byte gUnknown_2024284 +_0803192C: .4byte gUnknown_2023BC4 +_08031930: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031948 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0803194C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1C + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031948: .4byte gUnknown_2024284 +_0803194C: .4byte gUnknown_2023BC4 +_08031950: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031968 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0803196C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1D + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031968: .4byte gUnknown_2024284 +_0803196C: .4byte gUnknown_2023BC4 +_08031970: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031988 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0803198C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1E + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031988: .4byte gUnknown_2024284 +_0803198C: .4byte gUnknown_2023BC4 +_08031990: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080319A8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080319AC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x1F + bl sub_804037C + b _08031E56 + .align 2, 0 +_080319A8: .4byte gUnknown_2024284 +_080319AC: .4byte gUnknown_2023BC4 +_080319B0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080319C8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080319CC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x20 + bl sub_804037C + b _08031E56 + .align 2, 0 +_080319C8: .4byte gUnknown_2024284 +_080319CC: .4byte gUnknown_2023BC4 +_080319D0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080319E8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080319EC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x22 + bl sub_804037C + b _08031E56 + .align 2, 0 +_080319E8: .4byte gUnknown_2024284 +_080319EC: .4byte gUnknown_2023BC4 +_080319F0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031A08 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031A0C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x23 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031A08: .4byte gUnknown_2024284 +_08031A0C: .4byte gUnknown_2023BC4 +_08031A10: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031A28 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031A2C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x24 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031A28: .4byte gUnknown_2024284 +_08031A2C: .4byte gUnknown_2023BC4 +_08031A30: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031A48 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031A4C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x25 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031A48: .4byte gUnknown_2024284 +_08031A4C: .4byte gUnknown_2023BC4 +_08031A50: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031A68 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031A6C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x26 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031A68: .4byte gUnknown_2024284 +_08031A6C: .4byte gUnknown_2023BC4 +_08031A70: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _08031AD8 @ =gUnknown_2024284 + adds r4, r0 + ldr r5, _08031ADC @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + adds r2, r7 + adds r0, r4, 0 + movs r1, 0x27 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x1 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x28 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x2 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x29 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x3 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2A + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0x2B + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r7, 0x5 + adds r2, r0 + adds r0, r4, 0 + b _08031B90 + .align 2, 0 +_08031AD8: .4byte gUnknown_2024284 +_08031ADC: .4byte gUnknown_2023BC4 +_08031AE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031AF8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031AFC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x27 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031AF8: .4byte gUnknown_2024284 +_08031AFC: .4byte gUnknown_2023BC4 +_08031B00: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031B18 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031B1C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x28 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031B18: .4byte gUnknown_2024284 +_08031B1C: .4byte gUnknown_2023BC4 +_08031B20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031B38 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031B3C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x29 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031B38: .4byte gUnknown_2024284 +_08031B3C: .4byte gUnknown_2023BC4 +_08031B40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031B58 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031B5C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2A + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031B58: .4byte gUnknown_2024284 +_08031B5C: .4byte gUnknown_2023BC4 +_08031B60: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031B78 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031B7C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2B + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031B78: .4byte gUnknown_2024284 +_08031B7C: .4byte gUnknown_2023BC4 +_08031B80: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031B98 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031B9C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 +_08031B90: + movs r1, 0x2C + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031B98: .4byte gUnknown_2024284 +_08031B9C: .4byte gUnknown_2023BC4 +_08031BA0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031BB8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031BBC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031BB8: .4byte gUnknown_2024284 +_08031BBC: .4byte gUnknown_2023BC4 +_08031BC0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031BD8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031BDC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x9 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031BD8: .4byte gUnknown_2024284 +_08031BDC: .4byte gUnknown_2023BC4 +_08031BE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031BF8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031BFC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x37 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031BF8: .4byte gUnknown_2024284 +_08031BFC: .4byte gUnknown_2023BC4 +_08031C00: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031C18 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031C1C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x38 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031C18: .4byte gUnknown_2024284 +_08031C1C: .4byte gUnknown_2023BC4 +_08031C20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031C38 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031C3C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x39 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031C38: .4byte gUnknown_2024284 +_08031C3C: .4byte gUnknown_2023BC4 +_08031C40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031C58 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031C5C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3A + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031C58: .4byte gUnknown_2024284 +_08031C5C: .4byte gUnknown_2023BC4 +_08031C60: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031C78 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031C7C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3B + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031C78: .4byte gUnknown_2024284 +_08031C7C: .4byte gUnknown_2023BC4 +_08031C80: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031C98 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031C9C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3C + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031C98: .4byte gUnknown_2024284 +_08031C9C: .4byte gUnknown_2023BC4 +_08031CA0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031CB8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031CBC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3D + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031CB8: .4byte gUnknown_2024284 +_08031CBC: .4byte gUnknown_2023BC4 +_08031CC0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031CD8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031CDC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3E + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031CD8: .4byte gUnknown_2024284 +_08031CDC: .4byte gUnknown_2023BC4 +_08031CE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031CF8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031CFC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x3F + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031CF8: .4byte gUnknown_2024284 +_08031CFC: .4byte gUnknown_2023BC4 +_08031D00: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031D18 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031D1C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x16 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031D18: .4byte gUnknown_2024284 +_08031D1C: .4byte gUnknown_2023BC4 +_08031D20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031D38 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031D3C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x17 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031D38: .4byte gUnknown_2024284 +_08031D3C: .4byte gUnknown_2023BC4 +_08031D40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031D58 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031D5C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x18 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031D58: .4byte gUnknown_2024284 +_08031D5C: .4byte gUnknown_2023BC4 +_08031D60: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031D78 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031D7C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x21 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031D78: .4byte gUnknown_2024284 +_08031D7C: .4byte gUnknown_2023BC4 +_08031D80: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031D98 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031D9C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x2F + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031D98: .4byte gUnknown_2024284 +_08031D9C: .4byte gUnknown_2023BC4 +_08031DA0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031DB8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031DBC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x30 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031DB8: .4byte gUnknown_2024284 +_08031DBC: .4byte gUnknown_2023BC4 +_08031DC0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031DD8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031DDC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x32 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031DD8: .4byte gUnknown_2024284 +_08031DDC: .4byte gUnknown_2023BC4 +_08031DE0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031DF8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031DFC @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x33 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031DF8: .4byte gUnknown_2024284 +_08031DFC: .4byte gUnknown_2023BC4 +_08031E00: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031E18 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031E1C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x34 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031E18: .4byte gUnknown_2024284 +_08031E1C: .4byte gUnknown_2023BC4 +_08031E20: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031E38 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031E3C @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x35 + bl sub_804037C + b _08031E56 + .align 2, 0 +_08031E38: .4byte gUnknown_2024284 +_08031E3C: .4byte gUnknown_2023BC4 +_08031E40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08031E80 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08031E84 @ =gUnknown_2023BC4 + ldrb r2, [r1] + lsls r2, 9 + adds r2, r7 + movs r1, 0x36 + bl sub_804037C +_08031E56: + ldr r2, _08031E88 @ =gUnknown_2023BCE + ldr r0, _08031E84 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _08031E80 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08031E80: .4byte gUnknown_2024284 +_08031E84: .4byte gUnknown_2023BC4 +_08031E88: .4byte gUnknown_2023BCE + thumb_func_end sub_8031490 + + thumb_func_start sub_8031E8C +sub_8031E8C: @ 8031E8C + push {r4-r7,lr} + ldr r1, _08031EF0 @ =gUnknown_2023BCE + ldr r7, _08031EF4 @ =gUnknown_2023BC4 + ldrb r2, [r7] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + adds r3, r1, 0 + muls r3, r0 + ldr r4, _08031EF8 @ =gUnknown_2022BC4 + lsls r2, 9 + adds r0, r4, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _08031EFC @ =gUnknown_2024284 + adds r0, r1 + adds r5, r3, r0 + movs r3, 0 + adds r0, r4, 0x2 + adds r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bcs _08031EE4 + adds r6, r4, 0 + adds r2, r7, 0 + adds r4, r0, 0 +_08031EC2: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, 9 + adds r0, 0x3 + adds r0, r3, r0 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r2] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r3, r0 + bcc _08031EC2 +_08031EE4: + bl sub_802E33C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08031EF0: .4byte gUnknown_2023BCE +_08031EF4: .4byte gUnknown_2023BC4 +_08031EF8: .4byte gUnknown_2022BC4 +_08031EFC: .4byte gUnknown_2024284 + thumb_func_end sub_8031E8C + + thumb_func_start sub_8031F00 +sub_8031F00: @ 8031F00 + push {r4,lr} + ldr r2, _08031F4C @ =gUnknown_2023BCE + ldr r4, _08031F50 @ =gUnknown_2023BC4 + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _08031F54 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8034498 + ldr r2, _08031F58 @ =gUnknown_202063C + ldr r0, _08031F5C @ =gUnknown_2023D44 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldr r1, _08031F60 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08031F64 @ =sub_802E404 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031F4C: .4byte gUnknown_2023BCE +_08031F50: .4byte gUnknown_2023BC4 +_08031F54: .4byte gUnknown_2024284 +_08031F58: .4byte gUnknown_202063C +_08031F5C: .4byte gUnknown_2023D44 +_08031F60: .4byte gUnknown_3004FE0 +_08031F64: .4byte sub_802E404 + thumb_func_end sub_8031F00 + + thumb_func_start sub_8031F68 +sub_8031F68: @ 8031F68 + push {r4-r6,lr} + ldr r5, _08031FD4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r4, _08031FD8 @ =gUnknown_2022BC4 + lsls r1, r0, 9 + adds r6, r4, 0x2 + adds r1, r6 + ldrb r1, [r1] + bl sub_803589C + ldr r2, _08031FDC @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r2 + lsls r0, 9 + adds r4, 0x1 + adds r0, r4 + ldrb r0, [r0] + movs r4, 0 + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _08031FE0 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8034498 + ldr r1, _08031FE4 @ =gUnknown_2023FF8 + ldrb r0, [r5] + adds r0, r1 + strb r4, [r0] + ldr r1, _08031FE8 @ =gUnknown_2023FFC + ldrb r0, [r5] + adds r0, r1 + strb r4, [r0] + ldrb r0, [r5] + lsls r1, r0, 9 + adds r1, r6 + ldrb r1, [r1] + bl sub_8031FF4 + ldr r1, _08031FEC @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08031FF0 @ =sub_802FD18 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08031FD4: .4byte gUnknown_2023BC4 +_08031FD8: .4byte gUnknown_2022BC4 +_08031FDC: .4byte gUnknown_2023BCE +_08031FE0: .4byte gUnknown_2024284 +_08031FE4: .4byte gUnknown_2023FF8 +_08031FE8: .4byte gUnknown_2023FFC +_08031FEC: .4byte gUnknown_3004FE0 +_08031FF0: .4byte sub_802FD18 + thumb_func_end sub_8031F68 + + thumb_func_start sub_8031FF4 +sub_8031FF4: @ 8031FF4 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_803589C + ldr r0, _08032138 @ =gUnknown_2023BCE + lsls r2, r6, 1 + adds r2, r0 + ldr r0, _0803213C @ =gUnknown_2022BC4 + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08032140 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _08032144 @ =sub_8033E3C + bl sub_8044EF8 + ldr r1, _08032148 @ =gUnknown_3004FFC + mov r9, r1 + add r9, r6 + mov r1, r9 + strb r0, [r1] + adds r0, r6, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _0803214C @ =gUnknown_20244DC + mov r10, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r10 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _08032150 @ =gUnknown_2023D44 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _08032154 @ =gUnknown_202063C + mov r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08032158 @ =gUnknown_2024024 + adds r6, r1 + ldrb r1, [r6] + bl sub_800838C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0803215C @ =nullsub_8 + str r1, [r0] + movs r0, 0 + movs r1, 0xFF + bl sub_804A938 + mov r1, r9 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08032138: .4byte gUnknown_2023BCE +_0803213C: .4byte gUnknown_2022BC4 +_08032140: .4byte gUnknown_2024284 +_08032144: .4byte sub_8033E3C +_08032148: .4byte gUnknown_3004FFC +_0803214C: .4byte gUnknown_20244DC +_08032150: .4byte gUnknown_2023D44 +_08032154: .4byte gUnknown_202063C +_08032158: .4byte gUnknown_2024024 +_0803215C: .4byte nullsub_8 + thumb_func_end sub_8031FF4 + + thumb_func_start sub_8032160 +sub_8032160: @ 8032160 + push {r4-r6,lr} + ldr r1, _08032194 @ =gUnknown_2022BC4 + ldr r6, _08032198 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _080321A8 + ldr r0, _0803219C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strb r3, [r0, 0x4] + ldr r1, _080321A0 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _080321A4 @ =sub_80321F0 + str r1, [r0] + b _080321DE + .align 2, 0 +_08032194: .4byte gUnknown_2022BC4 +_08032198: .4byte gUnknown_2023BC4 +_0803219C: .4byte gUnknown_2024018 +_080321A0: .4byte gUnknown_3004FE0 +_080321A4: .4byte sub_80321F0 +_080321A8: + ldr r5, _080321E4 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080321E8 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _080321EC @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_802E33C +_080321DE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080321E4: .4byte gUnknown_2023D44 +_080321E8: .4byte gUnknown_202063C +_080321EC: .4byte gUnknown_3004FF0 + thumb_func_end sub_8032160 + + thumb_func_start sub_80321F0 +sub_80321F0: @ 80321F0 + push {r4-r6,lr} + ldr r6, _08032210 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _08032214 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r4, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x4] + cmp r0, 0 + beq _08032218 + cmp r0, 0x1 + beq _08032246 + b _0803226E + .align 2, 0 +_08032210: .4byte gUnknown_2024018 +_08032214: .4byte gUnknown_2023BC4 +_08032218: + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08032232 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_08032232: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _0803226E +_08032246: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0803226E + strb r0, [r3, 0x4] + ldrb r2, [r5] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x1 + bl sub_80341D8 + ldr r1, _08032274 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032278 @ =sub_80305A0 + str r1, [r0] +_0803226E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08032274: .4byte gUnknown_3004FE0 +_08032278: .4byte sub_80305A0 + thumb_func_end sub_80321F0 + + thumb_func_start sub_803227C +sub_803227C: @ 803227C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080322A4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080322AC + ldr r0, _080322A8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + movs r1, 0x2 + ands r1, r0 + movs r7, 0x20 + cmp r1, 0 + beq _080322AE + movs r7, 0x5A + b _080322AE + .align 2, 0 +_080322A4: .4byte gUnknown_2022B4C +_080322A8: .4byte gUnknown_2023BC4 +_080322AC: + movs r7, 0x50 +_080322AE: + ldr r0, _08032320 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0803233C + bl sub_800A404 + ldr r5, _08032324 @ =gUnknown_202273C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + movs r4, 0xFF + ldrb r0, [r1] + cmp r0, 0x2 + beq _08032306 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r1, [r1] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x1 + beq _08032306 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r0, [r1] + ands r4, r0 + cmp r4, 0x3 + bne _08032328 +_08032306: + bl sub_800A404 + ldr r2, _08032324 @ =gUnknown_202273C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x13] + adds r4, r0, 0x2 + b _08032342 + .align 2, 0 +_08032320: .4byte gUnknown_2022B4C +_08032324: .4byte gUnknown_202273C +_08032328: + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r4, [r1, 0x13] + b _08032342 +_0803233C: + ldr r0, _08032400 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r4, [r0, 0x8] +_08032342: + ldr r5, _08032404 @ =gUnknown_2023BC4 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_8034750 + ldrb r0, [r5] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F864 + ldr r6, _08032408 @ =gUnknown_20244DC + mov r8, r7 + ldr r0, _0803240C @ =gUnknown_8239F8C + lsls r4, 2 + adds r4, r0 + ldrb r0, [r4] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 15 + adds r4, r0 + asrs r4, 16 + ldrb r0, [r5] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + mov r1, r8 + adds r2, r4, 0 + bl sub_8006F8C + ldr r6, _08032410 @ =gUnknown_2023D44 + ldrb r1, [r5] + adds r1, r6 + strb r0, [r1] + ldr r4, _08032414 @ =gUnknown_202063C + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xF0 + strh r1, [r0, 0x24] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08032418 @ =0x0000fffe + strh r1, [r0, 0x2E] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _0803241C @ =sub_8033EEC + str r1, [r0] + ldr r1, _08032420 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032424 @ =sub_802F730 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08032400: .4byte gUnknown_300500C +_08032404: .4byte gUnknown_2023BC4 +_08032408: .4byte gUnknown_20244DC +_0803240C: .4byte gUnknown_8239F8C +_08032410: .4byte gUnknown_2023D44 +_08032414: .4byte gUnknown_202063C +_08032418: .4byte 0x0000fffe +_0803241C: .4byte sub_8033EEC +_08032420: .4byte gUnknown_3004FE0 +_08032424: .4byte sub_802F730 + thumb_func_end sub_803227C + + thumb_func_start sub_8032428 +sub_8032428: @ 8032428 + push {r4-r6,lr} + ldr r0, _0803249C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080324B8 + bl sub_800A404 + ldr r5, _080324A0 @ =gUnknown_202273C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + movs r4, 0xFF + ldrb r0, [r1] + cmp r0, 0x2 + beq _08032482 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r1, [r1] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x1 + beq _08032482 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r0, [r1] + ands r4, r0 + cmp r4, 0x3 + bne _080324A4 +_08032482: + bl sub_800A404 + ldr r2, _080324A0 @ =gUnknown_202273C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x13] + adds r4, r0, 0x2 + b _080324BE + .align 2, 0 +_0803249C: .4byte gUnknown_2022B4C +_080324A0: .4byte gUnknown_202273C +_080324A4: + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r4, [r1, 0x13] + b _080324BE +_080324B8: + ldr r0, _08032568 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r4, [r0, 0x8] +_080324BE: + ldr r5, _0803256C @ =gUnknown_2023BC4 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_8034750 + ldrb r0, [r5] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F864 + ldr r0, _08032570 @ =gUnknown_20244DC + ldr r1, _08032574 @ =gUnknown_8239F8C + lsls r4, 2 + adds r4, r1 + ldrb r1, [r4] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r6, _08032578 @ =gUnknown_2023D44 + ldrb r1, [r5] + adds r1, r6 + strb r0, [r1] + ldr r4, _0803257C @ =gUnknown_202063C + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08032580 @ =0x0000ffa0 + strh r1, [r0, 0x24] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _08032584 @ =sub_8033EEC + str r1, [r0] + ldr r1, _08032588 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803258C @ =sub_802F768 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08032568: .4byte gUnknown_300500C +_0803256C: .4byte gUnknown_2023BC4 +_08032570: .4byte gUnknown_20244DC +_08032574: .4byte gUnknown_8239F8C +_08032578: .4byte gUnknown_2023D44 +_0803257C: .4byte gUnknown_202063C +_08032580: .4byte 0x0000ffa0 +_08032584: .4byte sub_8033EEC +_08032588: .4byte gUnknown_3004FE0 +_0803258C: .4byte sub_802F768 + thumb_func_end sub_8032428 + + thumb_func_start sub_8032590 +sub_8032590: @ 8032590 + push {r4-r6,lr} + ldr r5, _08032630 @ =gUnknown_2023D44 + ldr r6, _08032634 @ =gUnknown_2023BC4 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08032638 @ =gUnknown_202063C + adds r0, r4 + bl sub_80750FC + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x32 + strh r1, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _0803263C @ =0x0000ffd8 + strh r1, [r0, 0x32] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08032640 @ =sub_8075590 + str r1, [r0] + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08032644 @ =nullsub_8 + bl sub_8074A68 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_800838C + ldr r1, _08032648 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803264C @ =sub_802F7A0 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08032630: .4byte gUnknown_2023D44 +_08032634: .4byte gUnknown_2023BC4 +_08032638: .4byte gUnknown_202063C +_0803263C: .4byte 0x0000ffd8 +_08032640: .4byte sub_8075590 +_08032644: .4byte nullsub_8 +_08032648: .4byte gUnknown_3004FE0 +_0803264C: .4byte sub_802F7A0 + thumb_func_end sub_8032590 + + thumb_func_start sub_8032650 +sub_8032650: @ 8032650 + push {r4-r6,lr} + ldr r6, _0803269C @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _080326A0 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, [r4, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _080326A4 + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08032684 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_08032684: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + adds r1, 0x1 + strb r1, [r0, 0x4] + b _0803271A + .align 2, 0 +_0803269C: .4byte gUnknown_2024018 +_080326A0: .4byte gUnknown_2023BC4 +_080326A4: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0803271A + strb r4, [r3, 0x4] + ldr r2, _08032720 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _08032724 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + movs r1, 0x40 + negs r1, r1 + movs r0, 0x10 + bl sub_80722F4 + ldr r2, _08032728 @ =gUnknown_202063C + ldr r3, _0803272C @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x30] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strh r1, [r0, 0x32] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08032730 @ =sub_8012110 + str r1, [r0] + ldr r1, _08032734 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032738 @ =sub_8030538 + str r1, [r0] +_0803271A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08032720: .4byte gUnknown_2023BCE +_08032724: .4byte gUnknown_2024284 +_08032728: .4byte gUnknown_202063C +_0803272C: .4byte gUnknown_2023D44 +_08032730: .4byte sub_8012110 +_08032734: .4byte gUnknown_3004FE0 +_08032738: .4byte sub_8030538 + thumb_func_end sub_8032650 + + thumb_func_start sub_803273C +sub_803273C: @ 803273C + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_802E33C + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_803273C + + thumb_func_start sub_803275C +sub_803275C: @ 803275C + push {r4,r5,lr} + ldr r0, _0803279C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x8] + movs r0, 0x4 + strb r0, [r1, 0x8] + ldr r1, _080327A0 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldr r5, _080327A4 @ =gUnknown_2023BC4 + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x3 + bl sub_80341D8 + ldr r1, _080327A8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080327AC @ =sub_8030778 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803279C: .4byte gUnknown_2024018 +_080327A0: .4byte gUnknown_2024005 +_080327A4: .4byte gUnknown_2023BC4 +_080327A8: .4byte gUnknown_3004FE0 +_080327AC: .4byte sub_8030778 + thumb_func_end sub_803275C + + thumb_func_start sub_80327B0 +sub_80327B0: @ 80327B0 + push {r4,r5,lr} + ldr r1, _080327F8 @ =gUnknown_2022BC4 + ldr r5, _080327FC @ =gUnknown_2023BC4 + ldrb r0, [r5] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r1, [r0] + ldr r0, _08032800 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + strb r1, [r0, 0x8] + ldr r1, _08032804 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x3 + bl sub_80341D8 + ldr r1, _08032808 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803280C @ =sub_8030778 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080327F8: .4byte gUnknown_2022BC4 +_080327FC: .4byte gUnknown_2023BC4 +_08032800: .4byte gUnknown_2024018 +_08032804: .4byte gUnknown_2024005 +_08032808: .4byte gUnknown_3004FE0 +_0803280C: .4byte sub_8030778 + thumb_func_end sub_80327B0 + + thumb_func_start sub_8032810 +sub_8032810: @ 8032810 + push {lr} + ldr r1, _08032838 @ =gUnknown_2022BC4 + ldr r0, _0803283C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0803282E +_08032824: + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08032824 +_0803282E: + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_08032838: .4byte gUnknown_2022BC4 +_0803283C: .4byte gUnknown_2023BC4 + thumb_func_end sub_8032810 + + thumb_func_start sub_8032840 +sub_8032840: @ 8032840 + push {r4-r6,lr} + ldr r6, _08032924 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + beq _08032852 + b _08032966 +_08032852: + ldr r0, _08032928 @ =gUnknown_2022BC4 + mov r12, r0 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _0803292C @ =gUnknown_2037F16 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _08032930 @ =gUnknown_2037EEC + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _08032934 @ =gUnknown_2037EE8 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _08032938 @ =gUnknown_2037EFE + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _0803293C @ =gUnknown_2037F00 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _08032940 @ =gUnknown_2037EE4 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _08032944 @ =gUnknown_2024008 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_80342A0 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08032948 + bl sub_802E33C + b _08032966 + .align 2, 0 +_08032924: .4byte gUnknown_2023BC4 +_08032928: .4byte gUnknown_2022BC4 +_0803292C: .4byte gUnknown_2037F16 +_08032930: .4byte gUnknown_2037EEC +_08032934: .4byte gUnknown_2037EE8 +_08032938: .4byte gUnknown_2037EFE +_0803293C: .4byte gUnknown_2037F00 +_08032940: .4byte gUnknown_2037EE4 +_08032944: .4byte gUnknown_2024008 +_08032948: + ldr r0, _0803296C @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x4] + ldr r1, _08032970 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032974 @ =sub_8032978 + str r1, [r0] +_08032966: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803296C: .4byte gUnknown_2024018 +_08032970: .4byte gUnknown_3004FE0 +_08032974: .4byte sub_8032978 + thumb_func_end sub_8032840 + + thumb_func_start sub_8032978 +sub_8032978: @ 8032978 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _080329C4 @ =gUnknown_2022BC4 + ldr r6, _080329C8 @ =gUnknown_2023BC4 + ldrb r3, [r6] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r10, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, 0x2 + mov r9, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, 8 + orrs r4, r0 + adds r2, 0xB + adds r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _080329CC @ =gUnknown_2024018 + ldr r5, [r7] + ldr r1, [r5, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _08032A10 + cmp r2, 0x1 + bgt _080329D0 + cmp r2, 0 + beq _080329DA + b _08032AEC + .align 2, 0 +_080329C4: .4byte gUnknown_2022BC4 +_080329C8: .4byte gUnknown_2023BC4 +_080329CC: .4byte gUnknown_2024018 +_080329D0: + cmp r2, 0x2 + beq _08032A3A + cmp r2, 0x3 + beq _08032AB0 + b _08032AEC +_080329DA: + ldr r1, [r5] + lsls r0, r3, 2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, 0xC + ands r0, r2 + cmp r0, 0x4 + bne _080329FC + movs r0, 0x8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_080329FC: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _08032AEC +_08032A10: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08032AEC + movs r0, 0 + bl sub_8035450 + adds r0, r4, 0 + bl sub_807259C + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x4] + b _08032AEC +_08032A3A: + ldr r0, _08032AA0 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08032AA4 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _08032AEC + movs r0, 0x1 + bl sub_8035450 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08032A88 + mov r0, r8 + cmp r0, 0x1 + bhi _08032A88 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_08032A88: + ldr r0, _08032AA8 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08032AAC @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _08032AEC + .align 2, 0 +_08032AA0: .4byte gUnknown_2037EDC +_08032AA4: .4byte gUnknown_2037EE1 +_08032AA8: .4byte gUnknown_2024018 +_08032AAC: .4byte gUnknown_2023BC4 +_08032AB0: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08032AEC + bl sub_8034B40 + ldrb r0, [r6] + lsls r2, r0, 9 + mov r3, r10 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r9 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_8035200 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x4] + bl sub_802E33C +_08032AEC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8032978 + + thumb_func_start sub_8032AFC +sub_8032AFC: @ 8032AFC + push {r4,lr} + ldr r0, _08032B30 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _08032B34 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _08032B38 @ =gUnknown_2023BC4 + ldrb r4, [r0] + lsls r4, 9 + ldr r0, _08032B3C @ =gUnknown_2022BC6 + adds r4, r0 + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _08032B44 + ldr r0, _08032B40 @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _08032B4C + .align 2, 0 +_08032B30: .4byte gUnknown_2022974 +_08032B34: .4byte gUnknown_2022976 +_08032B38: .4byte gUnknown_2023BC4 +_08032B3C: .4byte gUnknown_2022BC6 +_08032B40: .4byte gUnknown_202298C +_08032B44: + ldr r0, _08032B60 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_08032B4C: + ldr r1, _08032B64 @ =gUnknown_3004FE0 + ldr r0, _08032B68 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032B6C @ =sub_8030610 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08032B60: .4byte gUnknown_202298C +_08032B64: .4byte gUnknown_3004FE0 +_08032B68: .4byte gUnknown_2023BC4 +_08032B6C: .4byte sub_8030610 + thumb_func_end sub_8032AFC + + thumb_func_start sub_8032B70 +sub_8032B70: @ 8032B70 + push {lr} + ldr r0, _08032B88 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08032B8C + bl sub_8032AFC + b _08032B90 + .align 2, 0 +_08032B88: .4byte gUnknown_2023BC4 +_08032B8C: + bl sub_802E33C +_08032B90: + pop {r0} + bx r0 + thumb_func_end sub_8032B70 + + thumb_func_start sub_8032B94 +sub_8032B94: @ 8032B94 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08032BBA + ldr r0, _08032BC0 @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _08032BC4 @ =gUnknown_2022976 + movs r0, 0xA0 + strh r0, [r1] + ldr r1, _08032BC8 @ =gUnknown_3004FE0 + ldr r0, _08032BCC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032BD0 @ =sub_802E438 + str r1, [r0] +_08032BBA: + pop {r0} + bx r0 + .align 2, 0 +_08032BC0: .4byte gUnknown_2022974 +_08032BC4: .4byte gUnknown_2022976 +_08032BC8: .4byte gUnknown_3004FE0 +_08032BCC: .4byte gUnknown_2023BC4 +_08032BD0: .4byte sub_802E438 + thumb_func_end sub_8032B94 + + thumb_func_start sub_8032BD4 +sub_8032BD4: @ 8032BD4 + push {r4,lr} + ldr r1, _08032C28 @ =gUnknown_3004FE0 + ldr r0, _08032C2C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032C30 @ =sub_8032B94 + str r1, [r0] + ldr r0, _08032C34 @ =gUnknown_83FDA4C + movs r1, 0 + bl sub_80D87BC + ldr r0, _08032C38 @ =gUnknown_83FE725 + movs r1, 0x2 + bl sub_80D87BC + movs r4, 0 +_08032BF6: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8030A98 + adds r4, 0x1 + cmp r4, 0x3 + ble _08032BF6 + ldr r1, _08032C3C @ =gUnknown_2023FF8 + ldr r0, _08032C2C @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + ldr r0, _08032C40 @ =gUnknown_83FE6D5 + bl sub_80D77F4 + ldr r0, _08032C44 @ =gUnknown_202298C + movs r1, 0x1 + bl sub_80D87BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08032C28: .4byte gUnknown_3004FE0 +_08032C2C: .4byte gUnknown_2023BC4 +_08032C30: .4byte sub_8032B94 +_08032C34: .4byte gUnknown_83FDA4C +_08032C38: .4byte gUnknown_83FE725 +_08032C3C: .4byte gUnknown_2023FF8 +_08032C40: .4byte gUnknown_83FE6D5 +_08032C44: .4byte gUnknown_202298C + thumb_func_end sub_8032BD4 + + thumb_func_start nullsub_14 +nullsub_14: @ 8032C48 + bx lr + thumb_func_end nullsub_14 + + thumb_func_start sub_8032C4C +sub_8032C4C: @ 8032C4C + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08032C76 + ldr r0, _08032C7C @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _08032C80 @ =gUnknown_2022976 + movs r2, 0xA0 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08032C84 @ =gUnknown_3004FE0 + ldr r0, _08032C88 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032C8C @ =sub_802EA10 + str r1, [r0] +_08032C76: + pop {r0} + bx r0 + .align 2, 0 +_08032C7C: .4byte gUnknown_2022974 +_08032C80: .4byte gUnknown_2022976 +_08032C84: .4byte gUnknown_3004FE0 +_08032C88: .4byte gUnknown_2023BC4 +_08032C8C: .4byte sub_802EA10 + thumb_func_end sub_8032C4C + + thumb_func_start sub_8032C90 +sub_8032C90: @ 8032C90 + push {lr} + bl sub_8032CB4 + ldr r1, _08032CA8 @ =gUnknown_3004FE0 + ldr r0, _08032CAC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032CB0 @ =sub_8032C4C + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08032CA8: .4byte gUnknown_3004FE0 +_08032CAC: .4byte gUnknown_2023BC4 +_08032CB0: .4byte sub_8032C4C + thumb_func_end sub_8032C90 + + thumb_func_start sub_8032CB4 +sub_8032CB4: @ 8032CB4 + push {lr} + bl sub_8030830 + ldr r1, _08032CE0 @ =gUnknown_3004FF4 + movs r0, 0xFF + strb r0, [r1] + ldr r1, _08032CE4 @ =gUnknown_2023FFC + ldr r0, _08032CE8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC + bl sub_80308A8 + bl sub_80308CC + bl sub_8030940 + pop {r0} + bx r0 + .align 2, 0 +_08032CE0: .4byte gUnknown_3004FF4 +_08032CE4: .4byte gUnknown_2023FFC +_08032CE8: .4byte gUnknown_2023BC4 + thumb_func_end sub_8032CB4 + + thumb_func_start sub_8032CEC +sub_8032CEC: @ 8032CEC + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _08032D38 @ =gUnknown_3004FE0 + ldr r2, _08032D3C @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032D40 @ =sub_8030700 + str r1, [r0] + ldr r1, _08032D44 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + movs r3, 0 + ldr r5, _08032D48 @ =gUnknown_203B0DC + ldr r4, _08032D4C @ =gUnknown_2022BC4 +_08032D1A: + adds r0, r3, r5 + ldrb r1, [r2] + lsls r1, 9 + adds r1, 0x1 + adds r1, r3, r1 + adds r1, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x2 + ble _08032D1A + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08032D38: .4byte gUnknown_3004FE0 +_08032D3C: .4byte gUnknown_2023BC4 +_08032D40: .4byte sub_8030700 +_08032D44: .4byte gUnknown_2024004 +_08032D48: .4byte gUnknown_203B0DC +_08032D4C: .4byte gUnknown_2022BC4 + thumb_func_end sub_8032CEC + + thumb_func_start sub_8032D50 +sub_8032D50: @ 8032D50 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _08032E00 @ =nullsub_43 + movs r1, 0xFF + bl sub_807741C + ldr r3, _08032E04 @ =gUnknown_3004FFC + ldr r4, _08032E08 @ =gUnknown_2023BC4 + ldrb r1, [r4] + adds r1, r3 + strb r0, [r1] + ldr r5, _08032E0C @ =gUnknown_3005090 + ldrb r2, [r4] + adds r3, r2, r3 + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldr r5, _08032E10 @ =gUnknown_2022BC4 + lsls r2, 9 + adds r6, r5, 0x1 + adds r2, r6 + ldrb r2, [r2] + movs r0, 0xF + ands r0, r2 + strh r0, [r1, 0x8] + ldr r3, _08032E14 @ =gUnknown_2023FE8 + ldr r1, [r3] + adds r1, 0x49 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r6 + ldrb r0, [r0] + lsrs r0, 4 + strb r0, [r1] + ldr r2, [r3] + adds r2, 0x8B + ldrb r0, [r4] + lsls r0, 9 + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r2, [r3] + adds r2, 0xAC + ldrb r0, [r4] + lsls r0, 9 + adds r1, r5, 0x3 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r2, 0 + ldr r3, _08032E18 @ =gUnknown_203B0DC +_08032DBC: + adds r0, r2, r3 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x2 + ble _08032DBC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _08032E1C @ =gUnknown_3004FE0 + ldr r2, _08032E08 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032E20 @ =sub_8030628 + str r1, [r0] + ldr r1, _08032E24 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08032E00: .4byte nullsub_43 +_08032E04: .4byte gUnknown_3004FFC +_08032E08: .4byte gUnknown_2023BC4 +_08032E0C: .4byte gUnknown_3005090 +_08032E10: .4byte gUnknown_2022BC4 +_08032E14: .4byte gUnknown_2023FE8 +_08032E18: .4byte gUnknown_203B0DC +_08032E1C: .4byte gUnknown_3004FE0 +_08032E20: .4byte sub_8030628 +_08032E24: .4byte gUnknown_2024004 + thumb_func_end sub_8032D50 + + thumb_func_start sub_8032E28 +sub_8032E28: @ 8032E28 + push {lr} + sub sp, 0x4 + bl sub_8035314 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_802E33C + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8032E28 + + thumb_func_start sub_8032E4C +sub_8032E4C: @ 8032E4C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r0, 0 + bl sub_8034964 + ldr r3, _08032EC4 @ =gUnknown_2022BC4 + ldr r0, _08032EC8 @ =gUnknown_2023BC4 + mov r9, r0 + ldrb r4, [r0] + lsls r2, r4, 9 + adds r0, r3, 0x2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, 0x3 + adds r2, r3 + ldrb r0, [r2] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + asrs r7, r1, 16 + ldr r0, _08032ECC @ =0x00007fff + cmp r7, r0 + beq _08032EDC + ldr r6, _08032ED0 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + movs r5, 0x64 + muls r0, r5 + ldr r4, _08032ED4 @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + mov r8, r0 + mov r1, r9 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r1, _08032ED8 @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_8048150 + b _08032F16 + .align 2, 0 +_08032EC4: .4byte gUnknown_2022BC4 +_08032EC8: .4byte gUnknown_2023BC4 +_08032ECC: .4byte 0x00007fff +_08032ED0: .4byte gUnknown_2023BCE +_08032ED4: .4byte gUnknown_2024284 +_08032ED8: .4byte gUnknown_3004FF0 +_08032EDC: + ldr r1, _08032F34 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08032F38 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + mov r1, r9 + ldrb r0, [r1] + ldr r4, _08032F3C @ =gUnknown_3004FF0 + adds r1, r0, r4 + ldrb r1, [r1] + str r7, [sp] + movs r3, 0 + bl sub_8048150 + mov r1, r9 + ldrb r0, [r1] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_8048440 +_08032F16: + ldr r1, _08032F40 @ =gUnknown_3004FE0 + ldr r0, _08032F44 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032F48 @ =sub_802FE24 + str r1, [r0] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08032F34: .4byte gUnknown_2023BCE +_08032F38: .4byte gUnknown_2024284 +_08032F3C: .4byte gUnknown_3004FF0 +_08032F40: .4byte gUnknown_3004FE0 +_08032F44: .4byte gUnknown_2023BC4 +_08032F48: .4byte sub_802FE24 + thumb_func_end sub_8032E4C + + thumb_func_start sub_8032F4C +sub_8032F4C: @ 8032F4C + push {r4-r7,lr} + ldr r5, _08032F78 @ =gUnknown_2022BC4 + ldr r6, _08032F7C @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 9 + adds r1, r5, 0x1 + adds r0, r1 + ldrb r7, [r0] + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08032F80 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x63 + bls _08032F84 + bl sub_802E33C + b _08032FD0 + .align 2, 0 +_08032F78: .4byte gUnknown_2022BC4 +_08032F7C: .4byte gUnknown_2023BC4 +_08032F80: .4byte gUnknown_2024284 +_08032F84: + movs r0, 0x1 + bl sub_8034964 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + ldrb r1, [r6] + lsls r1, 9 + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r0, r5, 0x3 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + ldr r0, _08032FD8 @ =sub_802FEAC + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08032FDC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r7, [r1, 0x8] + strh r4, [r1, 0xA] + ldrb r0, [r6] + strh r0, [r1, 0xC] + ldr r1, _08032FE0 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08032FE4 @ =nullsub_13 + str r1, [r0] +_08032FD0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08032FD8: .4byte sub_802FEAC +_08032FDC: .4byte gUnknown_3005090 +_08032FE0: .4byte gUnknown_3004FE0 +_08032FE4: .4byte nullsub_13 + thumb_func_end sub_8032F4C + + thumb_func_start sub_8032FE8 +sub_8032FE8: @ 8032FE8 + push {r4,lr} + ldr r4, _08033044 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _0803303C + ldr r0, _08033048 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0803304C @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08033050 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0x9 + bl sub_8049D98 + ldrb r2, [r4] + ldr r0, _08033054 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _08033058 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0803305C @ =sub_8030AFC + str r1, [r0] +_0803303C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033044: .4byte gUnknown_2023BC4 +_08033048: .4byte gUnknown_3004FF0 +_0803304C: .4byte gUnknown_2023BCE +_08033050: .4byte gUnknown_2024284 +_08033054: .4byte gUnknown_2024018 +_08033058: .4byte gUnknown_3004FE0 +_0803305C: .4byte sub_8030AFC + thumb_func_end sub_8032FE8 + + thumb_func_start sub_8033060 +sub_8033060: @ 8033060 + push {r4,r5,lr} + ldr r5, _080330B8 @ =gUnknown_2023BC4 + ldrb r0, [r5] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _080330B0 + ldr r4, _080330BC @ =gUnknown_2022BC4 + ldrb r3, [r5] + lsls r3, 9 + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, 0x2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + adds r2, r4, 0x4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 16 + orrs r1, r2 + adds r4, 0x5 + adds r3, r4 + ldrb r2, [r3] + lsls r2, 24 + orrs r1, r2 + bl sub_8033F1C + ldr r1, _080330C0 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080330C4 @ =sub_8030AFC + str r1, [r0] +_080330B0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080330B8: .4byte gUnknown_2023BC4 +_080330BC: .4byte gUnknown_2022BC4 +_080330C0: .4byte gUnknown_3004FE0 +_080330C4: .4byte sub_8030AFC + thumb_func_end sub_8033060 + + thumb_func_start sub_80330C8 +sub_80330C8: @ 80330C8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + ldr r0, _08033124 @ =gUnknown_2023BCE + mov r8, r0 + ldr r4, _08033128 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _0803312C @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0x37 + bl sub_803FBE8 + ldr r2, _08033130 @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + eors r0, r1 + mov r1, sp + strb r0, [r1] + ldrb r0, [r4] + lsls r0, 1 + add r0, r8 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + bl sub_802E33C + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08033124: .4byte gUnknown_2023BCE +_08033128: .4byte gUnknown_2023BC4 +_0803312C: .4byte gUnknown_2024284 +_08033130: .4byte gUnknown_2022BC4 + thumb_func_end sub_80330C8 + + thumb_func_start sub_8033134 +sub_8033134: @ 8033134 + push {lr} + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_8033134 + + thumb_func_start sub_8033140 +sub_8033140: @ 8033140 + push {r4,r5,lr} + ldr r3, _080331A4 @ =gUnknown_2022BC4 + ldr r0, _080331A8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + adds r0, r3, 0x1 + adds r0, r2, r0 + ldrb r5, [r0] + adds r0, r3, 0x2 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, 8 + orrs r5, r0 + adds r0, r3, 0x3 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, 16 + orrs r5, r0 + adds r0, r3, 0x4 + adds r0, r2, r0 + ldrb r4, [r0] + lsls r4, 24 + adds r0, r3, 0x5 + adds r0, r2, r0 + ldrb r1, [r0] + adds r0, r3, 0x6 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + adds r3, 0x7 + adds r2, r3 + orrs r5, r4 + lsrs r4, r1, 16 + movs r0, 0x80 + lsls r0, 5 + cmp r4, r0 + bhi _080331B0 + ldr r0, _080331AC @ =0x040000d4 + str r2, [r0] + str r5, [r0, 0x4] + lsrs r1, 17 + movs r2, 0x80 + lsls r2, 24 + orrs r1, r2 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + b _080331DC + .align 2, 0 +_080331A4: .4byte gUnknown_2022BC4 +_080331A8: .4byte gUnknown_2023BC4 +_080331AC: .4byte 0x040000d4 +_080331B0: + ldr r3, _080331E8 @ =0x040000d4 + str r2, [r3] + str r5, [r3, 0x4] + ldr r0, _080331EC @ =0x80000800 + str r0, [r3, 0x8] + ldr r0, [r3, 0x8] + movs r0, 0x80 + lsls r0, 5 + adds r2, r0 + adds r5, r0 + ldr r1, _080331F0 @ =0xfffff000 + adds r4, r1 + cmp r4, r0 + bhi _080331B0 + str r2, [r3] + str r5, [r3, 0x4] + lsrs r0, r4, 1 + movs r1, 0x80 + lsls r1, 24 + orrs r0, r1 + str r0, [r3, 0x8] + ldr r0, [r3, 0x8] +_080331DC: + bl sub_802E33C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080331E8: .4byte 0x040000d4 +_080331EC: .4byte 0x80000800 +_080331F0: .4byte 0xfffff000 + thumb_func_end sub_8033140 + + thumb_func_start sub_80331F4 +sub_80331F4: @ 80331F4 + push {lr} + ldr r2, _0803321C @ =gUnknown_2022BC4 + ldr r0, _08033220 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_80722A0 + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_0803321C: .4byte gUnknown_2022BC4 +_08033220: .4byte gUnknown_2023BC4 + thumb_func_end sub_80331F4 + + thumb_func_start sub_8033224 +sub_8033224: @ 8033224 + push {lr} + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_8033224 + + thumb_func_start sub_8033230 +sub_8033230: @ 8033230 + push {lr} + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_800E848 + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_8033230 + + thumb_func_start sub_8033244 +sub_8033244: @ 8033244 + push {lr} + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_800E874 + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_8033244 + + thumb_func_start sub_8033258 +sub_8033258: @ 8033258 + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_800E8AC + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_8033258 + + thumb_func_start sub_803326C +sub_803326C: @ 803326C + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_800E8D8 + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_803326C + + thumb_func_start sub_8033280 +sub_8033280: @ 8033280 + push {lr} + ldr r2, _08033298 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x80 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_08033298: .4byte gUnknown_2022870 + thumb_func_end sub_8033280 + + thumb_func_start sub_803329C +sub_803329C: @ 803329C + push {lr} + ldr r3, _080332C8 @ =gUnknown_2022870 + ldr r1, _080332CC @ =gUnknown_2022BC4 + ldr r0, _080332D0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x7F + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_080332C8: .4byte gUnknown_2022870 +_080332CC: .4byte gUnknown_2022BC4 +_080332D0: .4byte gUnknown_2023BC4 + thumb_func_end sub_803329C + + thumb_func_start sub_80332D4 +sub_80332D4: @ 80332D4 + push {lr} + ldr r2, _080332E8 @ =gUnknown_2022870 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_080332E8: .4byte gUnknown_2022870 + thumb_func_end sub_80332D4 + + thumb_func_start sub_80332EC +sub_80332EC: @ 80332EC + push {lr} + ldr r3, _08033310 @ =gUnknown_2022870 + ldr r1, [r3] + lsls r1, 24 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 7 + ldrb r2, [r3] + movs r0, 0x7F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_08033310: .4byte gUnknown_2022870 + thumb_func_end sub_80332EC + + thumb_func_start sub_8033314 +sub_8033314: @ 8033314 + push {r4,lr} + ldr r3, _0803333C @ =gUnknown_202063C + ldr r2, _08033340 @ =gUnknown_2023D44 + ldr r4, _08033344 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _08033348 + bl sub_802E33C + b _08033372 + .align 2, 0 +_0803333C: .4byte gUnknown_202063C +_08033340: .4byte gUnknown_2023D44 +_08033344: .4byte gUnknown_2023BC4 +_08033348: + ldr r1, _08033378 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_804BE70 + ldr r1, _0803337C @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08033380 @ =sub_80307B4 + str r1, [r0] +_08033372: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033378: .4byte gUnknown_2024005 +_0803337C: .4byte gUnknown_3004FE0 +_08033380: .4byte sub_80307B4 + thumb_func_end sub_8033314 + + thumb_func_start sub_8033384 +sub_8033384: @ 8033384 + push {lr} + bl sub_802E33C + pop {r0} + bx r0 + thumb_func_end sub_8033384 + + thumb_func_start sub_8033390 +sub_8033390: @ 8033390 + push {r4,lr} + ldr r4, _080333CC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r3, 0x3F + cmp r0, 0 + bne _080333A4 + movs r3, 0xC0 +_080333A4: + ldr r2, _080333D0 @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + lsls r1, r3, 24 + asrs r1, 24 + bl sub_80722F4 + bl sub_802E33C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080333CC: .4byte gUnknown_2023BC4 +_080333D0: .4byte gUnknown_2022BC4 + thumb_func_end sub_8033390 + + thumb_func_start sub_80333D4 +sub_80333D4: @ 80333D4 + push {lr} + ldr r2, _080333FC @ =gUnknown_2022BC4 + ldr r0, _08033400 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_080333FC: .4byte gUnknown_2022BC4 +_08033400: .4byte gUnknown_2023BC4 + thumb_func_end sub_80333D4 + + thumb_func_start sub_8033404 +sub_8033404: @ 8033404 + push {lr} + ldr r1, _08033438 @ =gUnknown_2023BCE + ldr r0, _0803343C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08033440 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + negs r1, r1 + movs r2, 0x5 + bl sub_8071E60 + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_08033438: .4byte gUnknown_2023BCE +_0803343C: .4byte gUnknown_2023BC4 +_08033440: .4byte gUnknown_2024284 + thumb_func_end sub_8033404 + + thumb_func_start sub_8033444 +sub_8033444: @ 8033444 + push {lr} + ldr r1, _0803346C @ =gUnknown_2022BC4 + ldr r0, _08033470 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _08033474 @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_0803346C: .4byte gUnknown_2022BC4 +_08033470: .4byte gUnknown_2023BC4 +_08033474: .4byte gUnknown_2023F4C + thumb_func_end sub_8033444 + + thumb_func_start sub_8033478 +sub_8033478: @ 8033478 + push {r4-r7,lr} + ldr r6, _080335B8 @ =gUnknown_2023D44 + ldr r7, _080335BC @ =gUnknown_2023BC4 + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _080335C0 @ =gUnknown_202063C + adds r0, r5 + bl sub_80750FC + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x32 + strh r1, [r0, 0x2E] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080335C4 @ =0x0000ffd8 + strh r1, [r0, 0x32] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080335C8 @ =sub_80755B8 + str r1, [r0] + ldrb r2, [r7] + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x38] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080335CC @ =sub_80335F8 + bl sub_8074A68 + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x1 + bl sub_800838C + ldr r0, _080335D0 @ =0x0000d6f8 + bl sub_80089B8 + adds r4, r0, 0 + lsls r4, 24 + ldr r1, _080335D4 @ =gUnknown_8239FD4 + ldr r0, _080335D8 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + lsrs r4, 20 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, r2 + movs r2, 0x20 + bl sub_80703A8 + ldrb r0, [r7] + adds r0, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r4 + strb r0, [r1, 0x5] + ldr r0, _080335DC @ =sub_8033660 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080335E0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r7] + strh r0, [r1, 0x8] + ldr r3, _080335E4 @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r2, [r7] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803359A + ldr r0, _080335E8 @ =gUnknown_2024000 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _080335EC @ =sub_80491B0 + str r1, [r0] +_0803359A: + ldr r0, [r3] + ldr r2, [r0, 0x8] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _080335F0 @ =gUnknown_3004FE0 + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r1, _080335F4 @ =nullsub_13 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080335B8: .4byte gUnknown_2023D44 +_080335BC: .4byte gUnknown_2023BC4 +_080335C0: .4byte gUnknown_202063C +_080335C4: .4byte 0x0000ffd8 +_080335C8: .4byte sub_80755B8 +_080335CC: .4byte sub_80335F8 +_080335D0: .4byte 0x0000d6f8 +_080335D4: .4byte gUnknown_8239FD4 +_080335D8: .4byte gUnknown_300500C +_080335DC: .4byte sub_8033660 +_080335E0: .4byte gUnknown_3005090 +_080335E4: .4byte gUnknown_2024018 +_080335E8: .4byte gUnknown_2024000 +_080335EC: .4byte sub_80491B0 +_080335F0: .4byte gUnknown_3004FE0 +_080335F4: .4byte nullsub_13 + thumb_func_end sub_8033478 + + thumb_func_start sub_80335F8 +sub_80335F8: @ 80335F8 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r4, [r5, 0x38] + lsls r4, 24 + lsrs r4, 24 + bl sub_80077D8 + ldrb r0, [r5, 0x5] + lsrs r0, 4 + bl sub_8008A20 + lsls r0, 16 + lsrs r0, 16 + bl sub_8008A30 + adds r0, r5, 0 + bl sub_8007280 + ldr r1, _08033650 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08033654 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + bl sub_8034498 + ldr r0, _08033658 @ =gUnknown_2023D44 + adds r4, r0 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0803365C @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08033650: .4byte gUnknown_2023BCE +_08033654: .4byte gUnknown_2024284 +_08033658: .4byte gUnknown_2023D44 +_0803365C: .4byte gUnknown_202063C + thumb_func_end sub_80335F8 + + thumb_func_start sub_8033660 +sub_8033660: @ 8033660 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _08033688 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0x1E + bgt _0803368C + adds r0, r2, 0x1 + strh r0, [r1, 0xA] + b _08033748 + .align 2, 0 +_08033688: .4byte gUnknown_3005090 +_0803368C: + ldr r7, _080336CC @ =gUnknown_2023BC4 + ldrb r0, [r7] + mov r9, r0 + ldrh r0, [r1, 0x8] + strb r0, [r7] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _080336AC + ldr r0, _080336D0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080336DC +_080336AC: + ldr r0, _080336D4 @ =gUnknown_2022BC4 + ldrb r1, [r7] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _080336D8 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, 0 + bl sub_8031FF4 + b _08033730 + .align 2, 0 +_080336CC: .4byte gUnknown_2023BC4 +_080336D0: .4byte gUnknown_2022B4C +_080336D4: .4byte gUnknown_2022BC4 +_080336D8: .4byte gUnknown_2023BCE +_080336DC: + ldr r4, _08033754 @ =gUnknown_2022BC4 + ldrb r0, [r7] + lsls r1, r0, 9 + adds r4, 0x1 + adds r1, r4 + ldr r5, _08033758 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0 + bl sub_8031FF4 + ldrb r0, [r7] + movs r6, 0x2 + eors r0, r6 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, 9 + adds r1, r4 + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r7] + lsls r0, r1, 1 + adds r0, r5 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _0803375C @ =gUnknown_2024284 + adds r0, r2 + bl sub_8034498 + ldrb r0, [r7] + movs r1, 0 + bl sub_8031FF4 + ldrb r0, [r7] + eors r0, r6 + strb r0, [r7] +_08033730: + ldr r1, _08033760 @ =gUnknown_3004FE0 + ldr r2, _08033764 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08033768 @ =sub_802FA58 + str r1, [r0] + mov r3, r9 + strb r3, [r2] + mov r0, r8 + bl sub_8077508 +_08033748: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08033754: .4byte gUnknown_2022BC4 +_08033758: .4byte gUnknown_2023BCE +_0803375C: .4byte gUnknown_2024284 +_08033760: .4byte gUnknown_3004FE0 +_08033764: .4byte gUnknown_2023BC4 +_08033768: .4byte sub_802FA58 + thumb_func_end sub_8033660 + + thumb_func_start sub_803376C +sub_803376C: @ 803376C + push {r4-r6,lr} + ldr r1, _08033794 @ =gUnknown_2022BC4 + ldr r0, _08033798 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0803379C + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0803379C + bl sub_802E33C + b _08033810 + .align 2, 0 +_08033794: .4byte gUnknown_2022BC4 +_08033798: .4byte gUnknown_2023BC4 +_0803379C: + ldr r6, _08033818 @ =gUnknown_2024018 + ldr r0, [r6] + ldr r5, _0803381C @ =gUnknown_2023BC4 + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r3, r0, 9 + ldr r4, _08033820 @ =gUnknown_2022BC8 + adds r1, r3, r4 + subs r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, 0x2 + adds r3, r4 + ldrb r3, [r3] + bl sub_8048D14 + ldr r2, _08033824 @ =gUnknown_2024000 + ldrb r1, [r5] + adds r1, r2 + movs r3, 0 + strb r0, [r1] + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x5] + ldrb r2, [r5] + lsls r0, r2, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _08033804 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x5D + strb r1, [r0, 0x5] +_08033804: + ldr r0, _08033828 @ =gUnknown_3004FE0 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r0 + ldr r0, _0803382C @ =sub_8033830 + str r0, [r1] +_08033810: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08033818: .4byte gUnknown_2024018 +_0803381C: .4byte gUnknown_2023BC4 +_08033820: .4byte gUnknown_2022BC8 +_08033824: .4byte gUnknown_2024000 +_08033828: .4byte gUnknown_3004FE0 +_0803382C: .4byte sub_8033830 + thumb_func_end sub_803376C + + thumb_func_start sub_8033830 +sub_8033830: @ 8033830 + push {r4,lr} + ldr r4, _08033870 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r3, _08033874 @ =gUnknown_2023BC4 + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + adds r2, r1, 0x1 + strb r2, [r0, 0x5] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x5C + bls _08033868 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x5] + bl sub_802E33C +_08033868: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033870: .4byte gUnknown_2024018 +_08033874: .4byte gUnknown_2023BC4 + thumb_func_end sub_8033830 + + thumb_func_start sub_8033878 +sub_8033878: @ 8033878 + push {lr} + ldr r0, _080338B4 @ =gUnknown_2024018 + ldr r1, [r0] + ldr r0, _080338B8 @ =gUnknown_2023BC4 + ldrb r3, [r0] + ldr r1, [r1, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080338AA + ldr r2, _080338BC @ =gUnknown_3005090 + ldr r0, _080338C0 @ =gUnknown_2024000 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _080338C4 @ =sub_80491B0 + str r1, [r0] +_080338AA: + bl sub_802E33C + pop {r0} + bx r0 + .align 2, 0 +_080338B4: .4byte gUnknown_2024018 +_080338B8: .4byte gUnknown_2023BC4 +_080338BC: .4byte gUnknown_3005090 +_080338C0: .4byte gUnknown_2024000 +_080338C4: .4byte sub_80491B0 + thumb_func_end sub_8033878 + + thumb_func_start sub_80338C8 +sub_80338C8: @ 80338C8 + push {r4,lr} + ldr r4, _080338E8 @ =gUnknown_2023BC4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 + bl sub_802E33C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080338E8: .4byte gUnknown_2023BC4 + thumb_func_end sub_80338C8 + + thumb_func_start sub_80338EC +sub_80338EC: @ 80338EC + push {r4,lr} + ldr r4, _0803393C @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08033932 + ldr r3, _08033940 @ =gUnknown_202063C + ldr r0, _08033944 @ =gUnknown_2023D44 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldr r0, _08033948 @ =gUnknown_2022BC4 + lsls r1, 9 + adds r0, 0x1 + adds r1, r0 + adds r2, 0x3E + movs r0, 0x1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_8034BB4 +_08033932: + bl sub_802E33C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803393C: .4byte gUnknown_2023BC4 +_08033940: .4byte gUnknown_202063C +_08033944: .4byte gUnknown_2023D44 +_08033948: .4byte gUnknown_2022BC4 + thumb_func_end sub_80338EC + + thumb_func_start sub_803394C +sub_803394C: @ 803394C + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _08033990 @ =gUnknown_2023BC4 + ldrb r0, [r6] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _080339A4 + ldr r5, _08033994 @ =gUnknown_2022BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _08033998 + bl sub_802E33C + b _080339A4 + .align 2, 0 +_08033990: .4byte gUnknown_2023BC4 +_08033994: .4byte gUnknown_2022BC4 +_08033998: + ldr r0, _080339AC @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _080339B0 @ =sub_8030B2C + str r0, [r1] +_080339A4: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080339AC: .4byte gUnknown_3004FE0 +_080339B0: .4byte sub_8030B2C + thumb_func_end sub_803394C + + thumb_func_start sub_80339B4 +sub_80339B4: @ 80339B4 + push {r4,lr} + ldr r1, _080339D4 @ =gUnknown_2022BC4 + ldr r0, _080339D8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080339E6 + cmp r0, 0x1 + bgt _080339DC + cmp r0, 0 + beq _080339E2 + b _08033A04 + .align 2, 0 +_080339D4: .4byte gUnknown_2022BC4 +_080339D8: .4byte gUnknown_2023BC4 +_080339DC: + cmp r0, 0x2 + beq _08033A00 + b _08033A04 +_080339E2: + bl sub_8030B5C +_080339E6: + ldr r4, _080339FC @ =gUnknown_2023BC4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 + b _08033A04 + .align 2, 0 +_080339FC: .4byte gUnknown_2023BC4 +_08033A00: + bl sub_8030B5C +_08033A04: + bl sub_802E33C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80339B4 + + thumb_func_start sub_8033A10 +sub_8033A10: @ 8033A10 + push {r4,lr} + ldr r1, _08033A30 @ =gUnknown_2022BC4 + ldr r4, _08033A34 @ =gUnknown_2023BC4 + ldrb r3, [r4] + lsls r0, r3, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r2, [r0] + cmp r2, 0x1 + beq _08033A58 + cmp r2, 0x1 + bgt _08033A38 + cmp r2, 0 + beq _08033A3E + b _08033A68 + .align 2, 0 +_08033A30: .4byte gUnknown_2022BC4 +_08033A34: .4byte gUnknown_2023BC4 +_08033A38: + cmp r2, 0x2 + beq _08033A60 + b _08033A68 +_08033A3E: + ldr r0, _08033A50 @ =gUnknown_2023FF8 + adds r0, r3, r0 + strb r2, [r0] + ldr r1, _08033A54 @ =gUnknown_2023FFC + ldrb r0, [r4] + adds r0, r1 + strb r2, [r0] + b _08033A68 + .align 2, 0 +_08033A50: .4byte gUnknown_2023FF8 +_08033A54: .4byte gUnknown_2023FFC +_08033A58: + ldr r0, _08033A5C @ =gUnknown_2023FF8 + b _08033A62 + .align 2, 0 +_08033A5C: .4byte gUnknown_2023FF8 +_08033A60: + ldr r0, _08033A74 @ =gUnknown_2023FFC +_08033A62: + adds r0, r3, r0 + movs r1, 0 + strb r1, [r0] +_08033A68: + bl sub_802E33C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033A74: .4byte gUnknown_2023FFC + thumb_func_end sub_8033A10 + + thumb_func_start sub_8033A78 +sub_8033A78: @ 8033A78 + push {r4,lr} + ldr r2, _08033AB0 @ =gUnknown_2023E8A + ldr r1, _08033AB4 @ =gUnknown_2022BC4 + ldr r4, _08033AB8 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x5 + bl sub_8071AB4 + movs r0, 0x3 + bl sub_8070E44 + bl sub_802E33C + ldr r1, _08033ABC @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08033AC0 @ =sub_802F6A8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033AB0: .4byte gUnknown_2023E8A +_08033AB4: .4byte gUnknown_2022BC4 +_08033AB8: .4byte gUnknown_2023BC4 +_08033ABC: .4byte gUnknown_3004FE0 +_08033AC0: .4byte sub_802F6A8 + thumb_func_end sub_8033A78 + + thumb_func_start nullsub_15 +nullsub_15: @ 8033AC4 + bx lr + thumb_func_end nullsub_15 + + thumb_func_start sub_8033AC8 +sub_8033AC8: @ 8033AC8 + push {r4-r6,lr} + sub sp, 0x4 + movs r5, 0 + movs r6, 0 + ldr r0, _08033B14 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08033ADE + b _08033DA2 +_08033ADE: + ldr r3, _08033B18 @ =gUnknown_2023BC4 + ldrb r1, [r3] + lsls r2, r1, 9 + ldr r0, _08033B1C @ =gUnknown_2022BC8 + adds r2, r0 + ldr r0, _08033B20 @ =gUnknown_2023FFC + adds r1, r0 + ldrb r0, [r1] + lsls r0, 1 + adds r0, r2, r0 + ldrh r4, [r0] + cmp r4, 0xAE + bne _08033B24 + ldrb r0, [r2, 0x12] + movs r1, 0 + cmp r0, 0x7 + beq _08033B30 + ldrb r1, [r2, 0x13] + movs r0, 0x7 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + asrs r1, r0, 31 + movs r0, 0x10 + ands r1, r0 + b _08033B30 + .align 2, 0 +_08033B14: .4byte gUnknown_2022B4C +_08033B18: .4byte gUnknown_2023BC4 +_08033B1C: .4byte gUnknown_2022BC8 +_08033B20: .4byte gUnknown_2023FFC +_08033B24: + ldr r1, _08033B40 @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x6] +_08033B30: + cmp r1, 0x40 + bls _08033B36 + b _08033D92 +_08033B36: + lsls r0, r1, 2 + ldr r1, _08033B44 @ =_08033B48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08033B40: .4byte gUnknown_8250C04 +_08033B44: .4byte _08033B48 + .align 2, 0 +_08033B48: + .4byte _08033C4C + .4byte _08033C4C + .4byte _08033C4C + .4byte _08033D92 + .4byte _08033C4C + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033C54 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033C80 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D4C + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033D92 + .4byte _08033C54 +_08033C4C: + movs r5, 0xF0 + lsls r5, 12 + movs r6, 0 + b _08033D92 +_08033C54: + movs r0, 0x1 + bl sub_80751E8 + adds r4, r0, 0 + movs r0, 0x3 + bl sub_80751E8 + ldr r1, _08033C7C @ =gUnknown_825E45C + lsls r4, 24 + lsrs r4, 22 + adds r4, r1 + lsls r0, 24 + lsrs r0, 22 + adds r0, r1 + ldr r1, [r4] + ldr r0, [r0] + orrs r1, r0 + lsls r5, r1, 16 + b _08033D90 + .align 2, 0 +_08033C7C: .4byte gUnknown_825E45C +_08033C80: + cmp r4, 0xDB + beq _08033CEA + cmp r4, 0xDB + bgt _08033CB2 + cmp r4, 0x73 + beq _08033CEA + cmp r4, 0x73 + bgt _08033C9E + cmp r4, 0x71 + beq _08033CEA + cmp r4, 0x71 + bgt _08033CE4 + cmp r4, 0x36 + beq _08033CEA + b _08033D38 +_08033C9E: + cmp r4, 0xC9 + beq _08033CE4 + cmp r4, 0xC9 + bgt _08033CAC + cmp r4, 0xC3 + beq _08033CE4 + b _08033D38 +_08033CAC: + cmp r4, 0xD7 + beq _08033CEA + b _08033D38 +_08033CB2: + movs r0, 0x87 + lsls r0, 1 + cmp r4, r0 + beq _08033D14 + cmp r4, r0 + bgt _08033CC8 + cmp r4, 0xF0 + blt _08033D38 + cmp r4, 0xF1 + ble _08033CE4 + b _08033CD4 +_08033CC8: + movs r0, 0x9C + lsls r0, 1 + cmp r4, r0 + beq _08033CEA + cmp r4, r0 + bgt _08033CDC +_08033CD4: + subs r0, 0xC + cmp r4, r0 + beq _08033CE4 + b _08033D38 +_08033CDC: + movs r0, 0xAD + lsls r0, 1 + cmp r4, r0 + bne _08033D38 +_08033CE4: + movs r5, 0xF0 + lsls r5, 12 + b _08033D90 +_08033CEA: + movs r0, 0 + bl sub_80751E8 + adds r4, r0, 0 + movs r0, 0x2 + bl sub_80751E8 + ldr r1, _08033D10 @ =gUnknown_825E45C + lsls r4, 24 + lsrs r4, 22 + adds r4, r1 + lsls r0, 24 + lsrs r0, 22 + adds r0, r1 + ldr r1, [r4] + ldr r0, [r0] + orrs r1, r0 + lsls r5, r1, 16 + b _08033D90 + .align 2, 0 +_08033D10: .4byte gUnknown_825E45C +_08033D14: + ldrb r0, [r3] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r1, _08033D34 @ =gUnknown_825E45C + lsls r0, 24 + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + b _08033D42 + .align 2, 0 +_08033D34: .4byte gUnknown_825E45C +_08033D38: + ldr r0, _08033D48 @ =gUnknown_825E45C + ldrb r1, [r3] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_08033D42: + lsls r5, r0, 16 + b _08033D90 + .align 2, 0 +_08033D48: .4byte gUnknown_825E45C +_08033D4C: + movs r0, 0x1 + bl sub_80751E8 + adds r5, r0, 0 + ldr r0, _08033DAC @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + adds r4, r0, 0 + movs r0, 0x3 + bl sub_80751E8 + ldr r3, _08033DB0 @ =gUnknown_825E45C + lsls r5, 24 + lsrs r5, 22 + adds r5, r3 + lsls r4, 24 + lsrs r4, 22 + adds r4, r3 + ldr r2, [r5] + ldr r1, [r4] + orrs r2, r1 + lsls r0, 24 + lsrs r0, 22 + adds r0, r3 + ldr r0, [r0] + orrs r2, r0 + lsls r5, r2, 16 +_08033D90: + movs r6, 0x8 +_08033D92: + ldr r0, _08033DB4 @ =0x00007fff + str r0, [sp] + adds r0, r5, 0 + movs r1, 0x8 + adds r2, r6, 0 + movs r3, 0 + bl sub_8070588 +_08033DA2: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08033DAC: .4byte gUnknown_2023BC4 +_08033DB0: .4byte gUnknown_825E45C +_08033DB4: .4byte 0x00007fff + thumb_func_end sub_8033AC8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s new file mode 100644 index 000000000..101b232ba --- /dev/null +++ b/asm/battle_controller_pokedude.s @@ -0,0 +1,7632 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_99 +nullsub_99: @ 81560A0 + bx lr + thumb_func_end nullsub_99 + + thumb_func_start sub_81560A4 +sub_81560A4: @ 81560A4 + ldr r1, _081560C8 @ =gUnknown_3004FE0 + ldr r0, _081560CC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _081560D0 @ =sub_81560DC + str r1, [r0] + ldr r2, _081560D4 @ =gUnknown_2023FE8 + ldr r0, [r2] + adds r0, 0x96 + ldr r1, _081560D8 @ =gUnknown_20370C0 + ldrh r1, [r1] + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x97 + movs r1, 0 + strb r1, [r0] + bx lr + .align 2, 0 +_081560C8: .4byte gUnknown_3004FE0 +_081560CC: .4byte gUnknown_2023BC4 +_081560D0: .4byte sub_81560DC +_081560D4: .4byte gUnknown_2023FE8 +_081560D8: .4byte gUnknown_20370C0 + thumb_func_end sub_81560A4 + + thumb_func_start sub_81560DC +sub_81560DC: @ 81560DC + push {r4,r5,lr} + ldr r2, _08156120 @ =gUnknown_2023BC8 + ldr r1, _08156124 @ =gUnknown_825E45C + ldr r5, _08156128 @ =gUnknown_2023BC4 + ldrb r3, [r5] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08156138 + ldr r4, _0815612C @ =gUnknown_2022BC4 + lsls r0, r3, 9 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x38 + bhi _08156134 + bl sub_8159AB8 + lsls r0, 24 + cmp r0, 0 + bne _08156138 + ldr r1, _08156130 @ =gUnknown_8478F1C + ldrb r0, [r5] + lsls r0, 9 + adds r0, r4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _08156138 + .align 2, 0 +_08156120: .4byte gUnknown_2023BC8 +_08156124: .4byte gUnknown_825E45C +_08156128: .4byte gUnknown_2023BC4 +_0815612C: .4byte gUnknown_2022BC4 +_08156130: .4byte gUnknown_8478F1C +_08156134: + bl sub_8157084 +_08156138: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81560DC + + thumb_func_start sub_8156140 +sub_8156140: @ 8156140 + push {lr} + bl sub_8159824 + pop {r0} + bx r0 + thumb_func_end sub_8156140 + + thumb_func_start sub_815614C +sub_815614C: @ 815614C + push {lr} + ldr r2, _08156174 @ =gUnknown_202063C + ldr r1, _08156178 @ =gUnknown_2023D44 + ldr r0, _0815617C @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08156180 @ =nullsub_8 + cmp r1, r0 + bne _08156170 + bl sub_8157084 +_08156170: + pop {r0} + bx r0 + .align 2, 0 +_08156174: .4byte gUnknown_202063C +_08156178: .4byte gUnknown_2023D44 +_0815617C: .4byte gUnknown_2023BC4 +_08156180: .4byte nullsub_8 + thumb_func_end sub_815614C + + thumb_func_start sub_8156184 +sub_8156184: @ 8156184 + push {r4-r7,lr} + ldr r2, _081561E0 @ =gUnknown_202063C + ldr r0, _081561E4 @ =gUnknown_2023D44 + ldr r7, _081561E8 @ =gUnknown_2023BC4 + ldrb r3, [r7] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + lsrs r2, r0, 31 + cmp r2, 0x1 + bne _08156230 + movs r4, 0x24 + ldrsh r0, [r1, r4] + cmp r0, 0 + bne _08156230 + ldr r6, _081561EC @ =gUnknown_2024018 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r4, r3, 1 + adds r0, r4, r3 + lsls r0, 2 + adds r1, r0, r1 + ldrb r5, [r1] + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + bne _081561F8 + ldr r0, _081561F0 @ =gUnknown_2023BCE + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _081561F4 @ =gUnknown_202402C + adds r1, r0 + adds r0, r3, 0 + bl sub_80F1720 + b _08156230 + .align 2, 0 +_081561E0: .4byte gUnknown_202063C +_081561E4: .4byte gUnknown_2023D44 +_081561E8: .4byte gUnknown_2023BC4 +_081561EC: .4byte gUnknown_2024018 +_081561F0: .4byte gUnknown_2023BCE +_081561F4: .4byte gUnknown_202402C +_081561F8: + ldrb r0, [r1, 0x1] + ands r2, r0 + cmp r2, 0 + beq _08156230 + movs r0, 0x7F + ands r0, r5 + strb r0, [r1] + ldr r0, [r6] + ldrb r2, [r7] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _08156238 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + bl sub_8157084 +_08156230: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08156238: .4byte 0x000027f9 + thumb_func_end sub_8156184 + + thumb_func_start sub_815623C +sub_815623C: @ 815623C + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0815624E + bl sub_8157084 +_0815624E: + pop {r0} + bx r0 + thumb_func_end sub_815623C + + thumb_func_start sub_8156254 +sub_8156254: @ 8156254 + push {lr} + ldr r0, _08156284 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0815627E + ldr r2, _08156288 @ =gUnknown_30030F0 + ldr r0, _0815628C @ =0x00000439 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r0, _08156290 @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, 0x8] + bl sub_8000544 +_0815627E: + pop {r0} + bx r0 + .align 2, 0 +_08156284: .4byte gUnknown_2037AB8 +_08156288: .4byte gUnknown_30030F0 +_0815628C: .4byte 0x00000439 +_08156290: .4byte gUnknown_3004F80 + thumb_func_end sub_8156254 + + thumb_func_start sub_8156294 +sub_8156294: @ 8156294 + push {r4,lr} + ldr r0, _081562DC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r4, _081562E0 @ =gUnknown_2023BC4 + ldrb r1, [r4] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _081562D4 + ldr r0, _081562E4 @ =sub_802FDF4 + movs r1, 0xA + bl sub_807741C + ldr r2, _081562E8 @ =gUnknown_2023BCE + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _081562EC @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + bl sub_8157084 +_081562D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081562DC: .4byte gUnknown_2024018 +_081562E0: .4byte gUnknown_2023BC4 +_081562E4: .4byte sub_802FDF4 +_081562E8: .4byte gUnknown_2023BCE +_081562EC: .4byte gUnknown_2024284 + thumb_func_end sub_8156294 + + thumb_func_start sub_81562F0 +sub_81562F0: @ 81562F0 + push {r4-r6,lr} + ldr r2, _08156388 @ =gUnknown_202063C + ldr r0, _0815638C @ =gUnknown_3004FF0 + ldr r6, _08156390 @ =gUnknown_2023BC4 + ldrb r3, [r6] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08156394 @ =nullsub_8 + cmp r1, r0 + bne _08156380 + ldr r5, _08156398 @ =gUnknown_2024018 + ldr r0, [r5] + ldr r1, [r0, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r1 + ldrb r1, [r2, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08156380 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldrb r2, [r6] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r4, _0815639C @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, [r5] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08156374 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 +_08156374: + ldr r0, _081563A0 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _081563A4 @ =sub_8156294 + str r0, [r1] +_08156380: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08156388: .4byte gUnknown_202063C +_0815638C: .4byte gUnknown_3004FF0 +_08156390: .4byte gUnknown_2023BC4 +_08156394: .4byte nullsub_8 +_08156398: .4byte gUnknown_2024018 +_0815639C: .4byte 0x000027f9 +_081563A0: .4byte gUnknown_3004FE0 +_081563A4: .4byte sub_8156294 + thumb_func_end sub_81562F0 + + thumb_func_start sub_81563A8 +sub_81563A8: @ 81563A8 + push {r4-r6,lr} + ldr r6, _0815645C @ =gUnknown_2024018 + ldr r0, [r6] + ldr r5, _08156460 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _081563DA + ldr r0, _08156464 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08156468 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_081563DA: + ldr r4, _0815646C @ =gUnknown_202063C + ldr r0, _08156470 @ =gUnknown_3004FFC + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r3, r0, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _08156474 @ =nullsub_8 + cmp r1, r0 + bne _08156454 + ldr r0, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08156454 + adds r0, r3, r4 + bl sub_8007280 + ldr r4, _08156478 @ =gUnknown_3004FF0 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08156464 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08156468 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + bl sub_804BD94 + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 + ldrb r0, [r5] + bl sub_8034BB4 + ldr r1, _0815647C @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08156480 @ =sub_81562F0 + str r1, [r0] +_08156454: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815645C: .4byte gUnknown_2024018 +_08156460: .4byte gUnknown_2023BC4 +_08156464: .4byte gUnknown_2023BCE +_08156468: .4byte gUnknown_2024284 +_0815646C: .4byte gUnknown_202063C +_08156470: .4byte gUnknown_3004FFC +_08156474: .4byte nullsub_8 +_08156478: .4byte gUnknown_3004FF0 +_0815647C: .4byte gUnknown_3004FE0 +_08156480: .4byte sub_81562F0 + thumb_func_end sub_81563A8 + + thumb_func_start sub_8156484 +sub_8156484: @ 8156484 + push {lr} + ldr r0, _08156498 @ =gUnknown_2024005 + ldrb r0, [r0] + cmp r0, 0 + bne _08156492 + bl sub_8157084 +_08156492: + pop {r0} + bx r0 + .align 2, 0 +_08156498: .4byte gUnknown_2024005 + thumb_func_end sub_8156484 + + thumb_func_start sub_815649C +sub_815649C: @ 815649C + push {r4,lr} + ldr r4, _081564DC @ =gUnknown_2024018 + ldr r1, [r4] + ldr r3, _081564E0 @ =gUnknown_2023BC4 + ldrb r0, [r3] + ldr r2, [r1, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x9] + subs r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _081564D4 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + bl sub_8157084 +_081564D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081564DC: .4byte gUnknown_2024018 +_081564E0: .4byte gUnknown_2023BC4 + thumb_func_end sub_815649C + + thumb_func_start sub_81564E4 +sub_81564E4: @ 81564E4 + push {lr} + bl sub_8159998 + pop {r0} + bx r0 + thumb_func_end sub_81564E4 + + thumb_func_start sub_81564F0 +sub_81564F0: @ 81564F0 + push {lr} + ldr r0, _08156524 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08156520 + ldr r1, _08156528 @ =gUnknown_3004FE0 + ldr r2, _0815652C @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08156530 @ =sub_8156538 + str r1, [r0] + ldr r1, _08156534 @ =gUnknown_3004FFC + ldrb r0, [r2] + adds r0, r1 + ldrb r0, [r0] + bl sub_8077508 + bl sub_8003ECC + bl sub_8127968 +_08156520: + pop {r0} + bx r0 + .align 2, 0 +_08156524: .4byte gUnknown_2037AB8 +_08156528: .4byte gUnknown_3004FE0 +_0815652C: .4byte gUnknown_2023BC4 +_08156530: .4byte sub_8156538 +_08156534: .4byte gUnknown_3004FFC + thumb_func_end sub_81564F0 + + thumb_func_start sub_8156538 +sub_8156538: @ 8156538 + push {lr} + ldr r0, _08156568 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _0815656C @ =sub_8011100 + cmp r1, r0 + bne _0815658E + ldr r0, _08156570 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0815658E + ldr r0, _08156574 @ =gUnknown_203B0C0 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08156580 + ldr r0, _08156578 @ =gUnknown_203B0C1 + ldrb r1, [r0] + ldr r2, _0815657C @ =gUnknown_203B0DC + movs r0, 0x1 + bl sub_800E874 + b _0815658A + .align 2, 0 +_08156568: .4byte gUnknown_30030F0 +_0815656C: .4byte sub_8011100 +_08156570: .4byte gUnknown_2037AB8 +_08156574: .4byte gUnknown_203B0C0 +_08156578: .4byte gUnknown_203B0C1 +_0815657C: .4byte gUnknown_203B0DC +_08156580: + movs r0, 0x1 + movs r1, 0x6 + movs r2, 0 + bl sub_800E874 +_0815658A: + bl sub_8157084 +_0815658E: + pop {r0} + bx r0 + thumb_func_end sub_8156538 + + thumb_func_start sub_8156594 +sub_8156594: @ 8156594 + push {lr} + ldr r0, _081565C8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081565E2 + ldr r1, _081565CC @ =gUnknown_3004FE0 + ldr r0, _081565D0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _081565D4 @ =sub_81565E8 + str r1, [r0] + bl nullsub_44 + bl sub_8003ECC + ldr r0, _081565D8 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x1 + beq _081565C4 + cmp r0, 0x3 + beq _081565DC +_081565C4: + movs r0, 0x7 + b _081565DE + .align 2, 0 +_081565C8: .4byte gUnknown_2037AB8 +_081565CC: .4byte gUnknown_3004FE0 +_081565D0: .4byte gUnknown_2023BC4 +_081565D4: .4byte sub_81565E8 +_081565D8: .4byte gUnknown_20370C0 +_081565DC: + movs r0, 0x8 +_081565DE: + bl sub_810B108 +_081565E2: + pop {r0} + bx r0 + thumb_func_end sub_8156594 + + thumb_func_start sub_81565E8 +sub_81565E8: @ 81565E8 + push {lr} + ldr r0, _08156614 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _08156618 @ =sub_8011100 + cmp r1, r0 + bne _0815660E + ldr r0, _0815661C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0815660E + ldr r0, _08156620 @ =gUnknown_203AD30 + ldrh r1, [r0] + movs r0, 0x1 + bl sub_800E8AC + bl sub_8157084 +_0815660E: + pop {r0} + bx r0 + .align 2, 0 +_08156614: .4byte gUnknown_30030F0 +_08156618: .4byte sub_8011100 +_0815661C: .4byte gUnknown_2037AB8 +_08156620: .4byte gUnknown_203AD30 + thumb_func_end sub_81565E8 + + thumb_func_start sub_8156624 +sub_8156624: @ 8156624 + push {r4-r7,lr} + ldr r4, _08156788 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r5, _0815678C @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r1, [r0, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r7, 0x88 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _08156658 + ldr r0, _08156790 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08156794 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_08156658: + ldr r1, [r4] + ldrb r0, [r5] + movs r6, 0x2 + adds r2, r6, 0 + eors r2, r0 + ldr r1, [r1, 0x4] + lsls r3, r2, 1 + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _0815668A + ldr r0, _08156790 @ =gUnknown_2023BCE + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08156794 @ =gUnknown_2024284 + adds r1, r0 + adds r0, r2, 0 + bl sub_80F1720 +_0815668A: + ldr r0, [r4] + ldrb r2, [r5] + ldr r3, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + movs r4, 0x8 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _08156780 + adds r1, r6, 0 + eors r1, r2 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _08156780 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0815671E + ldr r0, _08156798 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0815671E + ldr r1, _0815679C @ =gUnknown_3004FFC + ldrb r0, [r5] + eors r0, r6 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081567A0 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r4, _081567A4 @ =gUnknown_3004FF0 + ldrb r0, [r5] + adds r1, r6, 0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08156790 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08156794 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r5] + eors r0, r6 + bl sub_804BD94 + ldrb r0, [r5] + eors r0, r6 + adds r0, r4 + ldrb r0, [r0] + bl sub_80481D4 +_0815671E: + ldr r1, _0815679C @ =gUnknown_3004FFC + ldr r4, _0815678C @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081567A0 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r5, _081567A4 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _08156790 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08156794 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + ldrb r0, [r4] + bl sub_804BD94 + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + ldr r0, _08156788 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x8] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldr r1, _081567A8 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _081567AC @ =sub_81567B0 + str r1, [r0] +_08156780: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08156788: .4byte gUnknown_2024018 +_0815678C: .4byte gUnknown_2023BC4 +_08156790: .4byte gUnknown_2023BCE +_08156794: .4byte gUnknown_2024284 +_08156798: .4byte gUnknown_2022B4C +_0815679C: .4byte gUnknown_3004FFC +_081567A0: .4byte gUnknown_202063C +_081567A4: .4byte gUnknown_3004FF0 +_081567A8: .4byte gUnknown_3004FE0 +_081567AC: .4byte sub_81567B0 + thumb_func_end sub_8156624 + + thumb_func_start sub_81567B0 +sub_81567B0: @ 81567B0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r4, 0 + ldr r2, _081568B0 @ =gUnknown_202063C + ldr r0, _081568B4 @ =gUnknown_3004FF0 + ldr r1, _081568B8 @ =gUnknown_2023BC4 + mov r8, r1 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _081568BC @ =nullsub_8 + cmp r1, r0 + bne _081567DA + movs r4, 0x1 +_081567DA: + cmp r4, 0 + beq _081568A6 + ldr r7, _081568C0 @ =gUnknown_2024018 + ldr r0, [r7] + ldr r4, [r0, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r4 + ldrb r1, [r2, 0x1] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _081568A6 + movs r6, 0x2 + adds r1, r6, 0 + eors r1, r3 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _081568A6 + ldrb r1, [r2] + movs r3, 0x7F + adds r0, r3, 0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r7] + mov r1, r8 + ldrb r2, [r1] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1, 0x1] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, 0 + eors r1, r0 + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + ands r4, r1 + strb r4, [r0, 0x1] + ldr r4, _081568C4 @ =0x000027f9 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + ldr r0, _081568C8 @ =sub_802FDF4 + movs r1, 0xA + bl sub_807741C + ldr r2, _081568CC @ =gUnknown_2023BCE + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _081568D0 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + ldr r1, _081568D4 @ =gUnknown_3004FE0 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _081568D8 @ =sub_815649C + str r1, [r0] +_081568A6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081568B0: .4byte gUnknown_202063C +_081568B4: .4byte gUnknown_3004FF0 +_081568B8: .4byte gUnknown_2023BC4 +_081568BC: .4byte nullsub_8 +_081568C0: .4byte gUnknown_2024018 +_081568C4: .4byte 0x000027f9 +_081568C8: .4byte sub_802FDF4 +_081568CC: .4byte gUnknown_2023BCE +_081568D0: .4byte gUnknown_2024284 +_081568D4: .4byte gUnknown_3004FE0 +_081568D8: .4byte sub_815649C + thumb_func_end sub_81567B0 + + thumb_func_start sub_81568DC +sub_81568DC: @ 81568DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _081569DC @ =gUnknown_3005090 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + mov r8, r0 + ldrb r0, [r0, 0x8] + mov r10, r0 + mov r1, r8 + ldrb r7, [r1, 0xC] + str r7, [sp, 0x8] + ldrh r2, [r1, 0xA] + str r2, [sp, 0xC] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08156922 + ldr r1, _081569E0 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r10, r0 + bne _08156922 + b _08156A38 +_08156922: + movs r0, 0x64 + mov r1, r10 + muls r1, r0 + ldr r0, _081569E4 @ =gUnknown_2024284 + adds r6, r1, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x4] + ldr r3, _081569E8 @ =gUnknown_8253AE4 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _081569EC @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x13] + movs r1, 0xCA + lsls r1, 1 + muls r1, r2 + adds r4, r1 + adds r4, r3 + ldr r2, [r4] + str r2, [sp] + ldr r3, [sp, 0xC] + lsls r1, r3, 16 + asrs r1, 16 + adds r0, r1 + cmp r0, r2 + bcc _08156A10 + adds r0, r6, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + adds r0, r6, 0 + bl sub_803E47C + ldr r2, [sp] + add r0, sp, 0x4 + ldrh r0, [r0] + subs r2, r0 + ldr r0, [sp, 0xC] + subs r2, r0, r2 + ldr r4, _081569F0 @ =gUnknown_2023BC4 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0xB + bl sub_800E848 + strb r5, [r4] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081569F8 + ldr r2, _081569E0 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r2 + mov r1, r10 + ldrh r0, [r0] + cmp r1, r0 + beq _081569D6 + movs r0, 0x2 + eors r7, r0 + lsls r0, r7, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _081569F8 +_081569D6: + ldr r0, _081569F4 @ =sub_8156C68 + b _08156A3A + .align 2, 0 +_081569DC: .4byte gUnknown_3005090 +_081569E0: .4byte gUnknown_2023BCE +_081569E4: .4byte gUnknown_2024284 +_081569E8: .4byte gUnknown_8253AE4 +_081569EC: .4byte gUnknown_8254784 +_081569F0: .4byte gUnknown_2023BC4 +_081569F4: .4byte sub_8156C68 +_081569F8: + ldr r0, _08156A08 @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldr r0, _08156A0C @ =sub_8156D80 + b _08156A3C + .align 2, 0 +_08156A08: .4byte gUnknown_3005090 +_08156A0C: .4byte sub_8156D80 +_08156A10: + str r0, [sp, 0x4] + add r2, sp, 0x4 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_804037C + ldr r1, _08156A30 @ =gUnknown_3004FE0 + ldr r3, [sp, 0x8] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, _08156A34 @ =sub_8156EE8 + str r1, [r0] + mov r0, r9 + bl sub_8077508 + b _08156A3E + .align 2, 0 +_08156A30: .4byte gUnknown_3004FE0 +_08156A34: .4byte sub_8156EE8 +_08156A38: + ldr r0, _08156A50 @ =sub_8156A54 +_08156A3A: + mov r1, r8 +_08156A3C: + str r0, [r1] +_08156A3E: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08156A50: .4byte sub_8156A54 + thumb_func_end sub_81568DC + + thumb_func_start sub_8156A54 +sub_8156A54: @ 8156A54 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08156B0C @ =gUnknown_3005090 + lsls r2, r0, 2 + mov r8, r2 + add r8, r0 + mov r0, r8 + lsls r0, 3 + mov r8, r0 + add r8, r1 + mov r2, r8 + ldrb r1, [r2, 0x8] + movs r0, 0xA + ldrsh r2, [r2, r0] + mov r9, r2 + mov r2, r8 + ldrb r2, [r2, 0xC] + mov r10, r2 + movs r0, 0x64 + adds r6, r1, 0 + muls r6, r0 + ldr r0, _08156B10 @ =gUnknown_2024284 + adds r6, r0 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + adds r3, r0, 0 + ldr r6, _08156B14 @ =gUnknown_8253AE4 + lsls r1, r4, 2 + ldr r2, _08156B18 @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r2 + adds r1, r0 + adds r1, r6 + ldr r1, [r1] + subs r3, r1 + adds r4, 0x1 + lsls r4, 2 + adds r4, r0 + adds r4, r6 + ldr r2, [r4] + subs r2, r1 + ldr r0, _08156B1C @ =gUnknown_3004FF0 + add r0, r10 + ldrb r1, [r0] + mov r0, r9 + negs r0, r0 + str r0, [sp] + mov r0, r10 + bl sub_8048150 + movs r0, 0x1B + bl sub_80722CC + ldr r0, _08156B20 @ =sub_8156B24 + mov r1, r8 + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08156B0C: .4byte gUnknown_3005090 +_08156B10: .4byte gUnknown_2024284 +_08156B14: .4byte gUnknown_8253AE4 +_08156B18: .4byte gUnknown_8254784 +_08156B1C: .4byte gUnknown_3004FF0 +_08156B20: .4byte sub_8156B24 + thumb_func_end sub_8156A54 + + thumb_func_start sub_8156B24 +sub_8156B24: @ 8156B24 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _08156B50 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r6, r0, r1 + ldrh r1, [r6, 0x1C] + movs r2, 0x1C + ldrsh r0, [r6, r2] + cmp r0, 0xC + bgt _08156B54 + adds r0, r1, 0x1 + strh r0, [r6, 0x1C] + b _08156C50 + .align 2, 0 +_08156B50: .4byte gUnknown_3005090 +_08156B54: + ldrb r0, [r6, 0x8] + mov r9, r0 + ldrh r2, [r6, 0xA] + mov r10, r2 + ldrb r7, [r6, 0xC] + ldr r5, _08156C1C @ =gUnknown_3004FF0 + adds r5, r7, r5 + ldrb r1, [r5] + adds r0, r7, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + bl sub_80481D4 + lsls r4, 16 + asrs r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _08156C50 + movs r0, 0x1B + bl m4aSongNumStop + movs r0, 0x64 + mov r1, r9 + muls r1, r0 + ldr r0, _08156C20 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r3, _08156C24 @ =gUnknown_8253AE4 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _08156C28 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r1 + adds r4, r0 + adds r4, r3 + ldr r1, [r4] + str r1, [sp] + mov r2, r10 + lsls r0, r2, 16 + asrs r4, r0, 16 + ldr r0, [sp, 0x4] + adds r0, r4 + cmp r0, r1 + blt _08156C34 + adds r0, r5, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + adds r0, r5, 0 + bl sub_803E47C + ldr r2, [sp] + add r0, sp, 0x4 + ldrh r0, [r0] + subs r2, r0 + subs r2, r4, r2 + ldr r4, _08156C2C @ =gUnknown_2023BC4 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0xB + bl sub_800E848 + strb r5, [r4] + ldr r0, _08156C30 @ =sub_8156C68 + str r0, [r6] + b _08156C50 + .align 2, 0 +_08156C1C: .4byte gUnknown_3004FF0 +_08156C20: .4byte gUnknown_2024284 +_08156C24: .4byte gUnknown_8253AE4 +_08156C28: .4byte gUnknown_8254784 +_08156C2C: .4byte gUnknown_2023BC4 +_08156C30: .4byte sub_8156C68 +_08156C34: + str r0, [sp, 0x4] + add r2, sp, 0x4 + adds r0, r5, 0 + movs r1, 0x19 + bl sub_804037C + ldr r1, _08156C60 @ =gUnknown_3004FE0 + lsls r0, r7, 2 + adds r0, r1 + ldr r1, _08156C64 @ =sub_8156EE8 + str r1, [r0] + mov r0, r8 + bl sub_8077508 +_08156C50: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08156C60: .4byte gUnknown_3004FE0 +_08156C64: .4byte sub_8156EE8 + thumb_func_end sub_8156B24 + + thumb_func_start sub_8156C68 +sub_8156C68: @ 8156C68 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08156CBC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrb r4, [r0, 0xC] + ldrb r6, [r0, 0x8] + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08156C9C + ldr r1, _08156CC0 @ =gUnknown_2023BCE + movs r0, 0x2 + adds r2, r4, 0 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r6, r0 + bne _08156C9C + adds r4, r2, 0 +_08156C9C: + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r4, 0 + movs r3, 0 + bl sub_80341D8 + ldr r0, _08156CBC @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08156CC4 @ =sub_8156CC8 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08156CBC: .4byte gUnknown_3005090 +_08156CC0: .4byte gUnknown_2023BCE +_08156CC4: .4byte sub_8156CC8 + thumb_func_end sub_8156C68 + + thumb_func_start sub_8156CC8 +sub_8156CC8: @ 8156CC8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08156D34 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r2, r0, r1 + ldrb r5, [r2, 0xC] + ldr r0, _08156D38 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08156D6A + ldrb r4, [r2, 0x8] + movs r0, 0x64 + adds r1, r4, 0 + muls r1, r0 + ldr r0, _08156D3C @ =gUnknown_2024284 + adds r7, r1, r0 + adds r0, r7, 0 + movs r1, 0x38 + bl sub_803FBE8 + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08156D48 + ldr r1, _08156D40 @ =gUnknown_2023BCE + movs r0, 0x2 + adds r2, r5, 0 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _08156D48 + ldr r0, _08156D44 @ =gUnknown_3004FF0 + adds r0, r2, r0 + ldrb r0, [r0] + adds r1, r7, 0 + movs r2, 0 + bl sub_8049D98 + b _08156D5C + .align 2, 0 +_08156D34: .4byte gUnknown_3005090 +_08156D38: .4byte gUnknown_2024018 +_08156D3C: .4byte gUnknown_2024284 +_08156D40: .4byte gUnknown_2023BCE +_08156D44: .4byte gUnknown_3004FF0 +_08156D48: + ldr r0, _08156D70 @ =gUnknown_3004FF0 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0x64 + muls r1, r4 + ldr r2, _08156D74 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 +_08156D5C: + ldr r0, _08156D78 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _08156D7C @ =sub_8156D80 + str r0, [r1] +_08156D6A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08156D70: .4byte gUnknown_3004FF0 +_08156D74: .4byte gUnknown_2024284 +_08156D78: .4byte gUnknown_3005090 +_08156D7C: .4byte sub_8156D80 + thumb_func_end sub_8156CC8 + + thumb_func_start sub_8156D80 +sub_8156D80: @ 8156D80 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08156DBC @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrb r1, [r4, 0x8] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08156DC0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + bl sub_803FBE8 + ldrb r0, [r4, 0xC] + ldr r1, _08156DC4 @ =gUnknown_3004FE0 + lsls r0, 2 + adds r0, r1 + ldr r1, _08156DC8 @ =sub_8156EE8 + str r1, [r0] + adds r0, r5, 0 + bl sub_8077508 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08156DBC: .4byte gUnknown_3005090 +_08156DC0: .4byte gUnknown_2024284 +_08156DC4: .4byte gUnknown_3004FE0 +_08156DC8: .4byte sub_8156EE8 + thumb_func_end sub_8156D80 + + thumb_func_start sub_8156DCC +sub_8156DCC: @ 8156DCC + push {r4-r6,lr} + ldr r4, _08156E2C @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08156E3C + ldr r6, _08156E30 @ =gUnknown_202063C + ldr r5, _08156E34 @ =gUnknown_2023D44 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r6 + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + cmp r0, 0xA0 + ble _08156E66 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + ldr r1, _08156E38 @ =gUnknown_3004FF0 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8157084 + b _08156E66 + .align 2, 0 +_08156E2C: .4byte gUnknown_2023BC4 +_08156E30: .4byte gUnknown_202063C +_08156E34: .4byte gUnknown_2023D44 +_08156E38: .4byte gUnknown_3004FF0 +_08156E3C: + ldr r2, _08156E6C @ =gUnknown_202063C + ldr r0, _08156E70 @ =gUnknown_2023D44 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _08156E66 + ldr r0, _08156E74 @ =gUnknown_3004FF0 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8157084 +_08156E66: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08156E6C: .4byte gUnknown_202063C +_08156E70: .4byte gUnknown_2023D44 +_08156E74: .4byte gUnknown_3004FF0 + thumb_func_end sub_8156DCC + + thumb_func_start sub_8156E78 +sub_8156E78: @ 8156E78 + push {r4-r6,lr} + ldr r5, _08156EB8 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r6, _08156EBC @ =gUnknown_3004FF0 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + bl sub_80481D4 + lsls r4, 16 + asrs r1, r4, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08156EC0 + ldrb r0, [r5] + adds r0, r6 + ldrb r0, [r0] + movs r2, 0 + bl sub_8048440 + b _08156EDA + .align 2, 0 +_08156EB8: .4byte gUnknown_2023BC4 +_08156EBC: .4byte gUnknown_3004FF0 +_08156EC0: + ldr r2, _08156EE0 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _08156EE4 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + bl sub_8157084 +_08156EDA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08156EE0: .4byte gUnknown_2023BCE +_08156EE4: .4byte gUnknown_2024284 + thumb_func_end sub_8156E78 + + thumb_func_start sub_8156EE8 +sub_8156EE8: @ 8156EE8 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _08156EFA + bl sub_8157084 +_08156EFA: + pop {r0} + bx r0 + thumb_func_end sub_8156EE8 + + thumb_func_start sub_8156F00 +sub_8156F00: @ 8156F00 + push {r4,lr} + ldr r1, _08156F3C @ =gUnknown_2023D44 + ldr r0, _08156F40 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + ldr r2, _08156F44 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x20 + bne _08156F4C + movs r3, 0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + ldr r0, _08156F48 @ =gUnknown_2024005 + strb r3, [r0] + bl sub_8157084 + b _08156F76 + .align 2, 0 +_08156F3C: .4byte gUnknown_2023D44 +_08156F40: .4byte gUnknown_2023BC4 +_08156F44: .4byte gUnknown_202063C +_08156F48: .4byte gUnknown_2024005 +_08156F4C: + ldrh r0, [r4, 0x30] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08156F70 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08156F70: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] +_08156F76: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8156F00 + + thumb_func_start sub_8156F7C +sub_8156F7C: @ 8156F7C + push {r4-r6,lr} + ldr r0, _08156FD8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _08156FDC @ =gUnknown_2023BC4 + ldrb r2, [r6] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08156FD0 + ldr r5, _08156FE0 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08156FE4 @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _08156FE8 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8157084 +_08156FD0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08156FD8: .4byte gUnknown_2024018 +_08156FDC: .4byte gUnknown_2023BC4 +_08156FE0: .4byte gUnknown_2023D44 +_08156FE4: .4byte gUnknown_202063C +_08156FE8: .4byte gUnknown_3004FF0 + thumb_func_end sub_8156F7C + + thumb_func_start sub_8156FEC +sub_8156FEC: @ 8156FEC + push {lr} + ldr r2, _08157014 @ =gUnknown_202063C + ldr r1, _08157018 @ =gUnknown_2023D44 + ldr r0, _0815701C @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08157020 @ =nullsub_8 + cmp r1, r0 + bne _08157010 + bl sub_8157084 +_08157010: + pop {r0} + bx r0 + .align 2, 0 +_08157014: .4byte gUnknown_202063C +_08157018: .4byte gUnknown_2023D44 +_0815701C: .4byte gUnknown_2023BC4 +_08157020: .4byte nullsub_8 + thumb_func_end sub_8156FEC + + thumb_func_start sub_8157024 +sub_8157024: @ 8157024 + push {lr} + ldr r0, _0815704C @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08157050 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08157046 + bl sub_8157084 +_08157046: + pop {r0} + bx r0 + .align 2, 0 +_0815704C: .4byte gUnknown_2024018 +_08157050: .4byte gUnknown_2023BC4 + thumb_func_end sub_8157024 + + thumb_func_start sub_8157054 +sub_8157054: @ 8157054 + push {lr} + ldr r0, _0815707C @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08157080 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08157076 + bl sub_8157084 +_08157076: + pop {r0} + bx r0 + .align 2, 0 +_0815707C: .4byte gUnknown_2024018 +_08157080: .4byte gUnknown_2023BC4 + thumb_func_end sub_8157054 + + thumb_func_start sub_8157084 +sub_8157084: @ 8157084 + push {r4,lr} + sub sp, 0x4 + ldr r1, _081570C4 @ =gUnknown_3004FE0 + ldr r4, _081570C8 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _081570CC @ =sub_81560DC + str r1, [r0] + ldr r0, _081570D0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081570D8 + bl sub_800A404 + mov r1, sp + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + mov r2, sp + bl sub_800D9EC + ldr r1, _081570D4 @ =gUnknown_2022BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r1 + movs r1, 0x38 + strb r1, [r0] + b _081570EA + .align 2, 0 +_081570C4: .4byte gUnknown_3004FE0 +_081570C8: .4byte gUnknown_2023BC4 +_081570CC: .4byte sub_81560DC +_081570D0: .4byte gUnknown_2022B4C +_081570D4: .4byte gUnknown_2022BC4 +_081570D8: + ldr r2, _081570F4 @ =gUnknown_2023BC8 + ldr r1, _081570F8 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_081570EA: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081570F4: .4byte gUnknown_2023BC8 +_081570F8: .4byte gUnknown_825E45C + thumb_func_end sub_8157084 + + thumb_func_start sub_81570FC +sub_81570FC: @ 81570FC + push {lr} + ldr r0, _08157124 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _08157128 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0815711E + bl sub_8157084 +_0815711E: + pop {r0} + bx r0 + .align 2, 0 +_08157124: .4byte gUnknown_2024018 +_08157128: .4byte gUnknown_2023BC4 + thumb_func_end sub_81570FC + + thumb_func_start sub_815712C +sub_815712C: @ 815712C + push {r4-r6,lr} + sub sp, 0x100 + movs r6, 0 + ldr r1, _08157158 @ =gUnknown_2022BC4 + ldr r0, _0815715C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _08157164 + ldr r0, _08157160 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_81571A0 + adds r6, r0, 0 + b _08157186 + .align 2, 0 +_08157158: .4byte gUnknown_2022BC4 +_0815715C: .4byte gUnknown_2023BC4 +_08157160: .4byte gUnknown_2023BCE +_08157164: + ldrb r4, [r1] + movs r5, 0 +_08157168: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0815717E + lsls r0, r5, 24 + lsrs r0, 24 + mov r2, sp + adds r1, r2, r6 + bl sub_81571A0 + adds r6, r0 +_0815717E: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x5 + ble _08157168 +_08157186: + lsls r1, r6, 16 + lsrs r1, 16 + movs r0, 0x1 + mov r2, sp + bl sub_800E708 + bl sub_8157084 + add sp, 0x100 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815712C + + thumb_func_start sub_81571A0 +sub_81571A0: @ 81571A0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8C + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _081571CC @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _081571D4 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _081571D0 @ =gUnknown_2024284 + b _081571DC + .align 2, 0 +_081571CC: .4byte gUnknown_2023BC4 +_081571D0: .4byte gUnknown_2024284 +_081571D4: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _081571FC @ =gUnknown_202402C +_081571DC: + adds r6, r1, r0 + ldr r3, _08157200 @ =gUnknown_2022BC4 + ldr r2, _08157204 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 9 + adds r1, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3B + bls _081571F2 + b _0815773C +_081571F2: + lsls r0, 2 + ldr r1, _08157208 @ =_0815720C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081571FC: .4byte gUnknown_202402C +_08157200: .4byte gUnknown_2022BC4 +_08157204: .4byte gUnknown_2023BC4 +_08157208: .4byte _0815720C + .align 2, 0 +_0815720C: + .4byte _081572FC + .4byte _08157508 + .4byte _0815750E + .4byte _08157514 + .4byte _08157564 + .4byte _08157564 + .4byte _08157564 + .4byte _08157564 + .4byte _08157574 + .4byte _0815759A + .4byte _0815759A + .4byte _0815759A + .4byte _0815759A + .4byte _0815773C + .4byte _0815773C + .4byte _0815773C + .4byte _0815773C + .4byte _081575AA + .4byte _081575B0 + .4byte _081575D4 + .4byte _081575DA + .4byte _081575E0 + .4byte _081575E6 + .4byte _081575EC + .4byte _081575F2 + .4byte _081575F8 + .4byte _081575FE + .4byte _08157604 + .4byte _0815760A + .4byte _08157610 + .4byte _08157616 + .4byte _0815761C + .4byte _0815765C + .4byte _08157662 + .4byte _08157668 + .4byte _0815766E + .4byte _08157674 + .4byte _0815767A + .4byte _08157680 + .4byte _08157686 + .4byte _0815768C + .4byte _081576B4 + .4byte _081576BA + .4byte _081576C0 + .4byte _081576C6 + .4byte _081576CC + .4byte _081576D2 + .4byte _081576D8 + .4byte _081576DE + .4byte _081576F4 + .4byte _081576FA + .4byte _08157700 + .4byte _08157706 + .4byte _0815770C + .4byte _08157712 + .4byte _08157718 + .4byte _0815771E + .4byte _08157724 + .4byte _0815772A + .4byte _08157730 +_081572FC: + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r0, r6, 0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2E] + movs r4, 0 + add r0, sp, 0x24 + mov r8, r0 + movs r1, 0x3B + add r1, sp + mov r9, r1 + movs r2, 0x2B + add r2, sp + mov r10, r2 + mov r0, sp + adds r0, 0x2A + str r0, [sp, 0x7C] + mov r1, sp + adds r1, 0x68 + str r1, [sp, 0x88] + mov r2, sp + adds r2, 0x30 + str r2, [sp, 0x80] + adds r0, 0x12 + str r0, [sp, 0x84] + add r5, sp, 0xC +_0815733E: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + strh r0, [r5] + adds r1, r4, 0 + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FBE8 + mov r2, r8 + adds r1, r2, r4 + strb r0, [r1] + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0815733E + adds r0, r6, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x20 + bl sub_803FBE8 + mov r2, r10 + strb r0, [r2] + adds r0, r6, 0 + movs r1, 0x19 + bl sub_803FBE8 + str r0, [sp, 0x44] + adds r0, r6, 0 + movs r1, 0x27 + bl sub_803FBE8 + mov r3, sp + movs r4, 0x1F + ands r0, r4 + ldrb r2, [r3, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x14] + adds r0, r6, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r3, sp + movs r5, 0x1F + ands r0, r5 + lsls r0, 5 + ldrh r2, [r3, 0x14] + ldr r1, _081574FC @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x14] + adds r0, r6, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r3, sp + ands r0, r4 + lsls r0, 2 + ldrb r2, [r3, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x15] + adds r0, r6, 0 + movs r1, 0x2A + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [sp, 0x14] + ldr r2, _08157500 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] + adds r0, r6, 0 + movs r1, 0x2B + bl sub_803FBE8 + mov r3, sp + ands r0, r5 + lsls r0, 4 + ldrh r2, [r3, 0x16] + ldr r1, _08157504 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x16] + adds r0, r6, 0 + movs r1, 0x2C + bl sub_803FBE8 + mov r3, sp + ands r0, r4 + lsls r0, 1 + ldrb r2, [r3, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r6, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x48] + adds r0, r6, 0 + movs r1, 0x37 + bl sub_803FBE8 + str r0, [sp, 0x4C] + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [sp, 0x7C] + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x28] + adds r0, r6, 0 + movs r1, 0x3A + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2C] + adds r0, r6, 0 + movs r1, 0x3B + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x2] + adds r0, r6, 0 + movs r1, 0x3C + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x4] + adds r0, r6, 0 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x6] + adds r0, r6, 0 + movs r1, 0x3E + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0x8] + adds r0, r6, 0 + movs r1, 0x3F + bl sub_803FBE8 + mov r1, sp + strh r0, [r1, 0xA] + adds r0, r6, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, sp + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r3, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r6, 0 + movs r1, 0x2E + bl sub_803FBE8 + mov r3, sp + lsls r0, 7 + ldrb r2, [r3, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x17] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x54] + adds r0, r6, 0 + movs r1, 0x2 + ldr r2, [sp, 0x88] + bl sub_803FBE8 + ldr r0, [sp, 0x80] + ldr r1, [sp, 0x88] + bl sub_8008CF4 + adds r0, r6, 0 + movs r1, 0x7 + ldr r2, [sp, 0x84] + bl sub_803FBE8 + mov r2, sp + movs r4, 0 +_081574EC: + adds r0, r7, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x57 + bls _081574EC + b _0815773C + .align 2, 0 +_081574FC: .4byte 0xfffffc1f +_08157500: .4byte 0xfff07fff +_08157504: .4byte 0xfffffe0f +_08157508: + adds r0, r6, 0 + movs r1, 0xB + b _081576E2 +_0815750E: + adds r0, r6, 0 + movs r1, 0xC + b _081576E2 +_08157514: + movs r4, 0 + add r2, sp, 0x58 + mov r8, r2 + add r0, sp, 0x60 + mov r9, r0 + mov r5, r8 +_08157520: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + strh r0, [r5] + adds r1, r4, 0 + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FBE8 + mov r2, r9 + adds r1, r2, r4 + strb r0, [r1] + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _08157520 + adds r0, r6, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r1, r8 + strb r0, [r1, 0xC] + mov r2, r8 + movs r4, 0 +_08157554: + adds r0, r7, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0xF + bls _08157554 + b _0815773C +_08157564: + ldrb r0, [r2] + lsls r0, 9 + adds r1, r3, 0x1 + adds r0, r1 + ldrb r1, [r0] + adds r1, 0x9 + adds r0, r6, 0 + b _081576E2 +_08157574: + movs r4, 0 +_08157576: + adds r1, r4, 0 + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FBE8 + adds r1, r7, r4 + strb r0, [r1] + adds r4, 0x1 + cmp r4, 0x3 + ble _08157576 + adds r0, r6, 0 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r7, r4 + strb r0, [r1] + adds r4, 0x1 + b _0815773C +_0815759A: + ldrb r0, [r2] + lsls r0, 9 + adds r1, r3, 0x1 + adds r0, r1 + ldrb r1, [r0] + adds r1, 0x8 + adds r0, r6, 0 + b _08157734 +_081575AA: + adds r0, r6, 0 + movs r1, 0x1 + b _081575B4 +_081575B0: + adds r0, r6, 0 + movs r1, 0x19 +_081575B4: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + movs r4, 0x3 + b _0815773C +_081575D4: + adds r0, r6, 0 + movs r1, 0x1A + b _08157734 +_081575DA: + adds r0, r6, 0 + movs r1, 0x1B + b _08157734 +_081575E0: + adds r0, r6, 0 + movs r1, 0x1C + b _08157734 +_081575E6: + adds r0, r6, 0 + movs r1, 0x1D + b _08157734 +_081575EC: + adds r0, r6, 0 + movs r1, 0x1E + b _08157734 +_081575F2: + adds r0, r6, 0 + movs r1, 0x1F + b _08157734 +_081575F8: + adds r0, r6, 0 + movs r1, 0x20 + b _08157734 +_081575FE: + adds r0, r6, 0 + movs r1, 0x22 + b _08157734 +_08157604: + adds r0, r6, 0 + movs r1, 0x23 + b _08157734 +_0815760A: + adds r0, r6, 0 + movs r1, 0x24 + b _08157734 +_08157610: + adds r0, r6, 0 + movs r1, 0x25 + b _08157734 +_08157616: + adds r0, r6, 0 + movs r1, 0x26 + b _08157734 +_0815761C: + adds r0, r6, 0 + movs r1, 0x27 + bl sub_803FBE8 + strb r0, [r7] + adds r0, r6, 0 + movs r1, 0x28 + bl sub_803FBE8 + strb r0, [r7, 0x1] + adds r0, r6, 0 + movs r1, 0x29 + bl sub_803FBE8 + strb r0, [r7, 0x2] + adds r0, r6, 0 + movs r1, 0x2A + bl sub_803FBE8 + strb r0, [r7, 0x3] + adds r0, r6, 0 + movs r1, 0x2B + bl sub_803FBE8 + strb r0, [r7, 0x4] + adds r0, r6, 0 + movs r1, 0x2C + bl sub_803FBE8 + strb r0, [r7, 0x5] + movs r4, 0x6 + b _0815773C +_0815765C: + adds r0, r6, 0 + movs r1, 0x27 + b _08157734 +_08157662: + adds r0, r6, 0 + movs r1, 0x28 + b _08157734 +_08157668: + adds r0, r6, 0 + movs r1, 0x29 + b _08157734 +_0815766E: + adds r0, r6, 0 + movs r1, 0x2A + b _08157734 +_08157674: + adds r0, r6, 0 + movs r1, 0x2B + b _08157734 +_0815767A: + adds r0, r6, 0 + movs r1, 0x2C + b _08157734 +_08157680: + adds r0, r6, 0 + movs r1, 0 + b _08157690 +_08157686: + adds r0, r6, 0 + movs r1, 0x9 + b _081576E2 +_0815768C: + adds r0, r6, 0 + movs r1, 0x37 +_08157690: + bl sub_803FBE8 + adds r1, r0, 0 + strb r1, [r7] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r7, 0x2] + lsrs r0, r1, 24 + strb r0, [r7, 0x3] + movs r4, 0x4 + b _0815773C +_081576B4: + adds r0, r6, 0 + movs r1, 0x38 + b _08157734 +_081576BA: + adds r0, r6, 0 + movs r1, 0x39 + b _081576E2 +_081576C0: + adds r0, r6, 0 + movs r1, 0x3A + b _081576E2 +_081576C6: + adds r0, r6, 0 + movs r1, 0x3B + b _081576E2 +_081576CC: + adds r0, r6, 0 + movs r1, 0x3C + b _081576E2 +_081576D2: + adds r0, r6, 0 + movs r1, 0x3D + b _081576E2 +_081576D8: + adds r0, r6, 0 + movs r1, 0x3E + b _081576E2 +_081576DE: + adds r0, r6, 0 + movs r1, 0x3F +_081576E2: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + strb r0, [r7] + lsrs r0, 8 + strb r0, [r7, 0x1] + movs r4, 0x2 + b _0815773C +_081576F4: + adds r0, r6, 0 + movs r1, 0x16 + b _08157734 +_081576FA: + adds r0, r6, 0 + movs r1, 0x17 + b _08157734 +_08157700: + adds r0, r6, 0 + movs r1, 0x18 + b _08157734 +_08157706: + adds r0, r6, 0 + movs r1, 0x21 + b _08157734 +_0815770C: + adds r0, r6, 0 + movs r1, 0x2F + b _08157734 +_08157712: + adds r0, r6, 0 + movs r1, 0x30 + b _08157734 +_08157718: + adds r0, r6, 0 + movs r1, 0x32 + b _08157734 +_0815771E: + adds r0, r6, 0 + movs r1, 0x33 + b _08157734 +_08157724: + adds r0, r6, 0 + movs r1, 0x34 + b _08157734 +_0815772A: + adds r0, r6, 0 + movs r1, 0x35 + b _08157734 +_08157730: + adds r0, r6, 0 + movs r1, 0x36 +_08157734: + bl sub_803FBE8 + strb r0, [r7] + movs r4, 0x1 +_0815773C: + adds r0, r4, 0 + add sp, 0x8C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81571A0 + + thumb_func_start sub_8157750 +sub_8157750: @ 8157750 + push {lr} + bl sub_80313B0 + pop {r0} + bx r0 + thumb_func_end sub_8157750 + + thumb_func_start sub_815775C +sub_815775C: @ 815775C + push {r4,r5,lr} + ldr r1, _08157780 @ =gUnknown_2022BC4 + ldr r0, _08157784 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + bne _0815778C + ldr r0, _08157788 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrb r0, [r1] + bl sub_81577B4 + b _081577AA + .align 2, 0 +_08157780: .4byte gUnknown_2022BC4 +_08157784: .4byte gUnknown_2023BC4 +_08157788: .4byte gUnknown_2023BCE +_0815778C: + ldrb r4, [r1] + movs r5, 0 +_08157790: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0815779E + adds r0, r5, 0 + bl sub_81577B4 +_0815779E: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08157790 +_081577AA: + bl sub_8157084 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_815775C + + thumb_func_start sub_81577B4 +sub_81577B4: @ 81577B4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081577E4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r2, r0, 9 + ldr r1, _081577E8 @ =gUnknown_2022BC7 + adds r5, r2, r1 + mov r8, r5 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _081577F0 + movs r0, 0x64 + adds r1, r4, 0 + muls r1, r0 + ldr r0, _081577EC @ =gUnknown_2024284 + b _081577F8 + .align 2, 0 +_081577E4: .4byte gUnknown_2023BC4 +_081577E8: .4byte gUnknown_2022BC7 +_081577EC: .4byte gUnknown_2024284 +_081577F0: + movs r0, 0x64 + adds r1, r4, 0 + muls r1, r0 + ldr r0, _0815781C @ =gUnknown_202402C +_081577F8: + adds r6, r1, r0 + ldr r2, _08157820 @ =gUnknown_2022BC4 + ldr r0, _08157824 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, r2, 0x1 + adds r0, r1 + ldrb r0, [r0] + adds r3, r2, 0 + cmp r0, 0x3B + bls _08157812 + bl _0815809A +_08157812: + lsls r0, 2 + ldr r1, _08157828 @ =_0815782C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815781C: .4byte gUnknown_202402C +_08157820: .4byte gUnknown_2022BC4 +_08157824: .4byte gUnknown_2023BC4 +_08157828: .4byte _0815782C + .align 2, 0 +_0815782C: + .4byte _0815791C + .4byte _08157AA4 + .4byte _08157AC0 + .4byte _08157ADC + .4byte _08157B16 + .4byte _08157B16 + .4byte _08157B16 + .4byte _08157B16 + .4byte _08157B2C + .4byte _08157B88 + .4byte _08157B88 + .4byte _08157B88 + .4byte _08157B88 + .4byte _0815809A + .4byte _0815809A + .4byte _0815809A + .4byte _0815809A + .4byte _08157BA8 + .4byte _08157BC4 + .4byte _08157BE0 + .4byte _08157BFC + .4byte _08157C18 + .4byte _08157C34 + .4byte _08157C50 + .4byte _08157C6C + .4byte _08157C88 + .4byte _08157CA4 + .4byte _08157CC0 + .4byte _08157CDC + .4byte _08157CF8 + .4byte _08157D14 + .4byte _08157D30 + .4byte _08157D94 + .4byte _08157DB0 + .4byte _08157DCC + .4byte _08157DE8 + .4byte _08157E04 + .4byte _08157E20 + .4byte _08157E3C + .4byte _08157E58 + .4byte _08157E74 + .4byte _08157E90 + .4byte _08157EAC + .4byte _08157EC8 + .4byte _08157EE4 + .4byte _08157F00 + .4byte _08157F1C + .4byte _08157F38 + .4byte _08157F54 + .4byte _08157F70 + .4byte _08157F8C + .4byte _08157FA8 + .4byte _08157FC4 + .4byte _08157FE0 + .4byte _08157FFC + .4byte _08158018 + .4byte _08158034 + .4byte _08158050 + .4byte _0815806C + .4byte _08158088 +_0815791C: + adds r0, r6, 0 + movs r1, 0xB + mov r2, r8 + bl sub_804037C + mov r2, r8 + adds r2, 0x2E + adds r0, r6, 0 + movs r1, 0xC + bl sub_804037C + movs r4, 0 + movs r0, 0x3B + add r0, r8 + mov r9, r0 + movs r1, 0x2B + add r1, r8 + mov r10, r1 + mov r2, r8 + adds r2, 0x44 + str r2, [sp, 0x10] + mov r0, r8 + adds r0, 0x48 + str r0, [sp, 0x14] + mov r1, r8 + adds r1, 0x4C + str r1, [sp, 0x18] + subs r2, 0x1A + str r2, [sp, 0x8] + subs r0, 0x20 + str r0, [sp, 0x4] + subs r1, 0x20 + str r1, [sp, 0xC] + subs r2, 0x28 + str r2, [sp, 0x1C] + subs r0, 0x24 + str r0, [sp, 0x20] + subs r1, 0x26 + str r1, [sp, 0x24] + adds r2, 0x6 + str r2, [sp, 0x28] + adds r0, 0x6 + str r0, [sp, 0x2C] + mov r7, r8 + adds r7, 0x24 + mov r5, r8 + adds r5, 0xC +_0815797A: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + adds r2, r5, 0 + bl sub_804037C + adds r1, r4, 0 + adds r1, 0x11 + adds r0, r6, 0 + adds r2, r7, 0 + bl sub_804037C + adds r7, 0x1 + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0815797A + adds r0, r6, 0 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x20 + mov r2, r10 + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x19 + ldr r2, [sp, 0x10] + bl sub_804037C + mov r1, r8 + ldrb r0, [r1, 0x14] + lsls r0, 27 + lsrs r0, 27 + mov r1, sp + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x27 + mov r2, sp + bl sub_804037C + mov r1, sp + mov r2, r8 + ldrh r0, [r2, 0x14] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x28 + mov r2, sp + bl sub_804037C + mov r1, sp + mov r2, r8 + ldrb r0, [r2, 0x15] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x29 + mov r2, sp + bl sub_804037C + mov r1, sp + mov r2, r8 + ldr r0, [r2, 0x14] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x2A + mov r2, sp + bl sub_804037C + mov r1, sp + mov r2, r8 + ldrh r0, [r2, 0x16] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x2B + mov r2, sp + bl sub_804037C + mov r1, sp + mov r2, r8 + ldrb r0, [r2, 0x17] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x2C + mov r2, sp + bl sub_804037C + adds r0, r6, 0 + movs r1, 0 + ldr r2, [sp, 0x14] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x37 + ldr r2, [sp, 0x18] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x38 + ldr r2, [sp, 0x8] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x39 + ldr r2, [sp, 0x4] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3A + ldr r2, [sp, 0xC] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3B + ldr r2, [sp, 0x1C] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3C + ldr r2, [sp, 0x20] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3D + ldr r2, [sp, 0x24] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3E + ldr r2, [sp, 0x28] + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3F + ldr r2, [sp, 0x2C] + bl sub_804037C + b _0815809A +_08157AA4: + ldr r0, _08157AB8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157ABC @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_804037C + b _0815809A + .align 2, 0 +_08157AB8: .4byte gUnknown_2023BC4 +_08157ABC: .4byte gUnknown_2022BC7 +_08157AC0: + ldr r0, _08157AD4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157AD8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0xC + bl sub_804037C + b _0815809A + .align 2, 0 +_08157AD4: .4byte gUnknown_2023BC4 +_08157AD8: .4byte gUnknown_2022BC7 +_08157ADC: + movs r4, 0 + movs r0, 0xC + adds r0, r5 + mov r8, r0 + adds r7, r5, 0 + adds r7, 0x8 +_08157AE8: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + adds r2, r5, 0 + bl sub_804037C + adds r1, r4, 0 + adds r1, 0x11 + adds r0, r6, 0 + adds r2, r7, 0 + bl sub_804037C + adds r7, 0x1 + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _08157AE8 + adds r0, r6, 0 + movs r1, 0x15 + mov r2, r8 + bl sub_804037C + b _0815809A +_08157B16: + ldr r0, _08157B28 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + adds r0, r3, 0x1 + adds r0, r2, r0 + ldrb r1, [r0] + adds r1, 0x9 + b _08157B96 + .align 2, 0 +_08157B28: .4byte gUnknown_2023BC4 +_08157B2C: + ldr r5, _08157B80 @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + ldr r4, _08157B84 @ =gUnknown_2022BC7 + adds r2, r4 + adds r0, r6, 0 + movs r1, 0x11 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x1 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x12 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x2 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x13 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x3 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x14 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r4, 0x4 + adds r2, r4 + adds r0, r6, 0 + movs r1, 0x15 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157B80: .4byte gUnknown_2023BC4 +_08157B84: .4byte gUnknown_2022BC7 +_08157B88: + ldr r0, _08157BA4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + adds r0, r3, 0x1 + adds r0, r2, r0 + ldrb r1, [r0] + adds r1, 0x8 +_08157B96: + adds r0, r3, 0x3 + adds r2, r0 + adds r0, r6, 0 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157BA4: .4byte gUnknown_2023BC4 +_08157BA8: + ldr r0, _08157BBC @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157BC0 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157BBC: .4byte gUnknown_2023BC4 +_08157BC0: .4byte gUnknown_2022BC7 +_08157BC4: + ldr r0, _08157BD8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157BDC @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x19 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157BD8: .4byte gUnknown_2023BC4 +_08157BDC: .4byte gUnknown_2022BC7 +_08157BE0: + ldr r0, _08157BF4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157BF8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1A + bl sub_804037C + b _0815809A + .align 2, 0 +_08157BF4: .4byte gUnknown_2023BC4 +_08157BF8: .4byte gUnknown_2022BC7 +_08157BFC: + ldr r0, _08157C10 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157C14 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1B + bl sub_804037C + b _0815809A + .align 2, 0 +_08157C10: .4byte gUnknown_2023BC4 +_08157C14: .4byte gUnknown_2022BC7 +_08157C18: + ldr r0, _08157C2C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157C30 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1C + bl sub_804037C + b _0815809A + .align 2, 0 +_08157C2C: .4byte gUnknown_2023BC4 +_08157C30: .4byte gUnknown_2022BC7 +_08157C34: + ldr r0, _08157C48 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157C4C @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1D + bl sub_804037C + b _0815809A + .align 2, 0 +_08157C48: .4byte gUnknown_2023BC4 +_08157C4C: .4byte gUnknown_2022BC7 +_08157C50: + ldr r0, _08157C64 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157C68 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1E + bl sub_804037C + b _0815809A + .align 2, 0 +_08157C64: .4byte gUnknown_2023BC4 +_08157C68: .4byte gUnknown_2022BC7 +_08157C6C: + ldr r0, _08157C80 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157C84 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x1F + bl sub_804037C + b _0815809A + .align 2, 0 +_08157C80: .4byte gUnknown_2023BC4 +_08157C84: .4byte gUnknown_2022BC7 +_08157C88: + ldr r0, _08157C9C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157CA0 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x20 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157C9C: .4byte gUnknown_2023BC4 +_08157CA0: .4byte gUnknown_2022BC7 +_08157CA4: + ldr r0, _08157CB8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157CBC @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x22 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157CB8: .4byte gUnknown_2023BC4 +_08157CBC: .4byte gUnknown_2022BC7 +_08157CC0: + ldr r0, _08157CD4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157CD8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x23 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157CD4: .4byte gUnknown_2023BC4 +_08157CD8: .4byte gUnknown_2022BC7 +_08157CDC: + ldr r0, _08157CF0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157CF4 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x24 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157CF0: .4byte gUnknown_2023BC4 +_08157CF4: .4byte gUnknown_2022BC7 +_08157CF8: + ldr r0, _08157D0C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157D10 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x25 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157D0C: .4byte gUnknown_2023BC4 +_08157D10: .4byte gUnknown_2022BC7 +_08157D14: + ldr r0, _08157D28 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157D2C @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x26 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157D28: .4byte gUnknown_2023BC4 +_08157D2C: .4byte gUnknown_2022BC7 +_08157D30: + ldr r5, _08157D8C @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r2, 9 + ldr r4, _08157D90 @ =gUnknown_2022BC7 + adds r2, r4 + adds r0, r6, 0 + movs r1, 0x27 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x1 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x28 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x2 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x29 + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x3 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x2A + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r0, r4, 0x4 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x2B + bl sub_804037C + ldrb r2, [r5] + lsls r2, 9 + adds r4, 0x5 + adds r2, r4 + b _08157E2A + .align 2, 0 +_08157D8C: .4byte gUnknown_2023BC4 +_08157D90: .4byte gUnknown_2022BC7 +_08157D94: + ldr r0, _08157DA8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157DAC @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x27 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157DA8: .4byte gUnknown_2023BC4 +_08157DAC: .4byte gUnknown_2022BC7 +_08157DB0: + ldr r0, _08157DC4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157DC8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x28 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157DC4: .4byte gUnknown_2023BC4 +_08157DC8: .4byte gUnknown_2022BC7 +_08157DCC: + ldr r0, _08157DE0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157DE4 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x29 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157DE0: .4byte gUnknown_2023BC4 +_08157DE4: .4byte gUnknown_2022BC7 +_08157DE8: + ldr r0, _08157DFC @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157E00 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x2A + bl sub_804037C + b _0815809A + .align 2, 0 +_08157DFC: .4byte gUnknown_2023BC4 +_08157E00: .4byte gUnknown_2022BC7 +_08157E04: + ldr r0, _08157E18 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157E1C @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x2B + bl sub_804037C + b _0815809A + .align 2, 0 +_08157E18: .4byte gUnknown_2023BC4 +_08157E1C: .4byte gUnknown_2022BC7 +_08157E20: + ldr r0, _08157E34 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157E38 @ =gUnknown_2022BC7 + adds r2, r0 +_08157E2A: + adds r0, r6, 0 + movs r1, 0x2C + bl sub_804037C + b _0815809A + .align 2, 0 +_08157E34: .4byte gUnknown_2023BC4 +_08157E38: .4byte gUnknown_2022BC7 +_08157E3C: + ldr r0, _08157E50 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157E54 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157E50: .4byte gUnknown_2023BC4 +_08157E54: .4byte gUnknown_2022BC7 +_08157E58: + ldr r0, _08157E6C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157E70 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x9 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157E6C: .4byte gUnknown_2023BC4 +_08157E70: .4byte gUnknown_2022BC7 +_08157E74: + ldr r0, _08157E88 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157E8C @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x37 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157E88: .4byte gUnknown_2023BC4 +_08157E8C: .4byte gUnknown_2022BC7 +_08157E90: + ldr r0, _08157EA4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157EA8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157EA4: .4byte gUnknown_2023BC4 +_08157EA8: .4byte gUnknown_2022BC7 +_08157EAC: + ldr r0, _08157EC0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157EC4 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x39 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157EC0: .4byte gUnknown_2023BC4 +_08157EC4: .4byte gUnknown_2022BC7 +_08157EC8: + ldr r0, _08157EDC @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157EE0 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x3A + bl sub_804037C + b _0815809A + .align 2, 0 +_08157EDC: .4byte gUnknown_2023BC4 +_08157EE0: .4byte gUnknown_2022BC7 +_08157EE4: + ldr r0, _08157EF8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157EFC @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x3B + bl sub_804037C + b _0815809A + .align 2, 0 +_08157EF8: .4byte gUnknown_2023BC4 +_08157EFC: .4byte gUnknown_2022BC7 +_08157F00: + ldr r0, _08157F14 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157F18 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x3C + bl sub_804037C + b _0815809A + .align 2, 0 +_08157F14: .4byte gUnknown_2023BC4 +_08157F18: .4byte gUnknown_2022BC7 +_08157F1C: + ldr r0, _08157F30 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157F34 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x3D + bl sub_804037C + b _0815809A + .align 2, 0 +_08157F30: .4byte gUnknown_2023BC4 +_08157F34: .4byte gUnknown_2022BC7 +_08157F38: + ldr r0, _08157F4C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157F50 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x3E + bl sub_804037C + b _0815809A + .align 2, 0 +_08157F4C: .4byte gUnknown_2023BC4 +_08157F50: .4byte gUnknown_2022BC7 +_08157F54: + ldr r0, _08157F68 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157F6C @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x3F + bl sub_804037C + b _0815809A + .align 2, 0 +_08157F68: .4byte gUnknown_2023BC4 +_08157F6C: .4byte gUnknown_2022BC7 +_08157F70: + ldr r0, _08157F84 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157F88 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x16 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157F84: .4byte gUnknown_2023BC4 +_08157F88: .4byte gUnknown_2022BC7 +_08157F8C: + ldr r0, _08157FA0 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157FA4 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x17 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157FA0: .4byte gUnknown_2023BC4 +_08157FA4: .4byte gUnknown_2022BC7 +_08157FA8: + ldr r0, _08157FBC @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157FC0 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x18 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157FBC: .4byte gUnknown_2023BC4 +_08157FC0: .4byte gUnknown_2022BC7 +_08157FC4: + ldr r0, _08157FD8 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157FDC @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x21 + bl sub_804037C + b _0815809A + .align 2, 0 +_08157FD8: .4byte gUnknown_2023BC4 +_08157FDC: .4byte gUnknown_2022BC7 +_08157FE0: + ldr r0, _08157FF4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08157FF8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x2F + bl sub_804037C + b _0815809A + .align 2, 0 +_08157FF4: .4byte gUnknown_2023BC4 +_08157FF8: .4byte gUnknown_2022BC7 +_08157FFC: + ldr r0, _08158010 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08158014 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x30 + bl sub_804037C + b _0815809A + .align 2, 0 +_08158010: .4byte gUnknown_2023BC4 +_08158014: .4byte gUnknown_2022BC7 +_08158018: + ldr r0, _0815802C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08158030 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x32 + bl sub_804037C + b _0815809A + .align 2, 0 +_0815802C: .4byte gUnknown_2023BC4 +_08158030: .4byte gUnknown_2022BC7 +_08158034: + ldr r0, _08158048 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _0815804C @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x33 + bl sub_804037C + b _0815809A + .align 2, 0 +_08158048: .4byte gUnknown_2023BC4 +_0815804C: .4byte gUnknown_2022BC7 +_08158050: + ldr r0, _08158064 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08158068 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x34 + bl sub_804037C + b _0815809A + .align 2, 0 +_08158064: .4byte gUnknown_2023BC4 +_08158068: .4byte gUnknown_2022BC7 +_0815806C: + ldr r0, _08158080 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _08158084 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x35 + bl sub_804037C + b _0815809A + .align 2, 0 +_08158080: .4byte gUnknown_2023BC4 +_08158084: .4byte gUnknown_2022BC7 +_08158088: + ldr r0, _081580C4 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r2, 9 + ldr r0, _081580C8 @ =gUnknown_2022BC7 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x36 + bl sub_804037C +_0815809A: + ldr r2, _081580CC @ =gUnknown_2023BCE + ldr r0, _081580C4 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _081580D0 @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081580C4: .4byte gUnknown_2023BC4 +_081580C8: .4byte gUnknown_2022BC7 +_081580CC: .4byte gUnknown_2023BCE +_081580D0: .4byte gUnknown_2024284 + thumb_func_end sub_81577B4 + + thumb_func_start sub_81580D4 +sub_81580D4: @ 81580D4 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_81580D4 + + thumb_func_start sub_81580E0 +sub_81580E0: @ 81580E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r6, _08158214 @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 1 + ldr r1, _08158218 @ =gUnknown_2023BCE + adds r0, r1 + ldrh r0, [r0] + movs r7, 0x64 + muls r0, r7 + ldr r2, _0815821C @ =gUnknown_202402C + mov r10, r2 + add r0, r10 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldrb r1, [r6] + lsls r0, r1, 1 + ldr r2, _08158218 @ =gUnknown_2023BCE + adds r0, r2 + ldrh r0, [r0] + muls r0, r7 + add r0, r10 + bl sub_8034320 + ldrb r0, [r6] + bl sub_80748A8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _08158220 @ =gUnknown_20244DC + mov r9, r0 + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r9 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8006F8C + ldr r4, _08158224 @ =gUnknown_2023D44 + ldrb r1, [r6] + adds r1, r4 + strb r0, [r1] + ldr r5, _08158228 @ =gUnknown_202063C + ldrb r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _0815822C @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x2E] + ldrb r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08158230 @ =gUnknown_2024024 + adds r2, r1 + ldrb r1, [r2] + bl sub_800838C + ldrb r4, [r6] + lsls r0, r4, 1 + ldr r2, _08158218 @ =gUnknown_2023BCE + adds r0, r2 + ldrh r0, [r0] + muls r0, r7 + add r0, r10 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + ldr r1, _08158234 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158238 @ =sub_8156184 + str r1, [r0] + bl sub_8157084 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08158214: .4byte gUnknown_2023BC4 +_08158218: .4byte gUnknown_2023BCE +_0815821C: .4byte gUnknown_202402C +_08158220: .4byte gUnknown_20244DC +_08158224: .4byte gUnknown_2023D44 +_08158228: .4byte gUnknown_202063C +_0815822C: .4byte 0x0000ff10 +_08158230: .4byte gUnknown_2024024 +_08158234: .4byte gUnknown_3004FE0 +_08158238: .4byte sub_8156184 + thumb_func_end sub_81580E0 + + thumb_func_start sub_815823C +sub_815823C: @ 815823C + push {r4,r5,lr} + ldr r5, _081582A0 @ =gUnknown_2023BC4 + ldrb r0, [r5] + ldr r4, _081582A4 @ =gUnknown_2022BC4 + lsls r1, r0, 9 + adds r2, r4, 0x2 + adds r1, r2 + ldrb r1, [r1] + bl sub_803589C + ldr r2, _081582A8 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r1, r0, 1 + adds r1, r2 + lsls r0, 9 + adds r4, 0x1 + adds r0, r4 + ldrb r0, [r0] + movs r4, 0 + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _081582AC @ =gUnknown_2024284 + adds r0, r2 + bl sub_8034498 + ldr r1, _081582B0 @ =gUnknown_2023FF8 + ldrb r0, [r5] + adds r0, r1 + strb r4, [r0] + ldr r1, _081582B4 @ =gUnknown_2023FFC + ldrb r0, [r5] + adds r0, r1 + strb r4, [r0] + ldrb r0, [r5] + bl sub_8159478 + ldr r1, _081582B8 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _081582BC @ =sub_81563A8 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081582A0: .4byte gUnknown_2023BC4 +_081582A4: .4byte gUnknown_2022BC4 +_081582A8: .4byte gUnknown_2023BCE +_081582AC: .4byte gUnknown_2024284 +_081582B0: .4byte gUnknown_2023FF8 +_081582B4: .4byte gUnknown_2023FFC +_081582B8: .4byte gUnknown_3004FE0 +_081582BC: .4byte sub_81563A8 + thumb_func_end sub_815823C + + thumb_func_start sub_81582C0 +sub_81582C0: @ 81582C0 + push {r4-r6,lr} + ldr r0, _081582EC @ =gUnknown_2022BC4 + ldr r6, _081582F0 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _081582FC + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x1 + bl sub_80341D8 + ldr r0, _081582F4 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _081582F8 @ =sub_8156F7C + str r0, [r1] + b _08158332 + .align 2, 0 +_081582EC: .4byte gUnknown_2022BC4 +_081582F0: .4byte gUnknown_2023BC4 +_081582F4: .4byte gUnknown_3004FE0 +_081582F8: .4byte sub_8156F7C +_081582FC: + ldr r5, _08158338 @ =gUnknown_2023D44 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0815833C @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + ldrb r0, [r6] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, _08158340 @ =gUnknown_3004FF0 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 + bl sub_8157084 +_08158332: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08158338: .4byte gUnknown_2023D44 +_0815833C: .4byte gUnknown_202063C +_08158340: .4byte gUnknown_3004FF0 + thumb_func_end sub_81582C0 + + thumb_func_start sub_8158344 +sub_8158344: @ 8158344 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _081583D8 @ =gUnknown_2023BC4 + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _081583F0 + ldrb r1, [r7] + movs r0, 0x4 + bl sub_8034750 + ldrb r0, [r7] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x4 + bl sub_803F864 + ldr r0, _081583DC @ =gUnknown_20244DC + ldr r1, _081583E0 @ =gUnknown_8239F8C + ldrb r1, [r1, 0x10] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r5, _081583E4 @ =gUnknown_2023D44 + ldrb r1, [r7] + adds r1, r5 + strb r0, [r1] + ldr r4, _081583E8 @ =gUnknown_202063C + ldrb r0, [r7] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xF0 + strh r1, [r0, 0x24] + ldrb r0, [r7] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _081583EC @ =0x0000fffe + strh r1, [r0, 0x2E] + ldrb r3, [r7] + adds r0, r3, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + b _081584E2 + .align 2, 0 +_081583D8: .4byte gUnknown_2023BC4 +_081583DC: .4byte gUnknown_20244DC +_081583E0: .4byte gUnknown_8239F8C +_081583E4: .4byte gUnknown_2023D44 +_081583E8: .4byte gUnknown_202063C +_081583EC: .4byte 0x0000fffe +_081583F0: + ldrb r1, [r7] + movs r0, 0x84 + bl sub_80346C4 + ldrb r0, [r7] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x84 + bl sub_803F864 + ldr r5, _08158510 @ =gUnknown_20244DC + ldr r0, _08158514 @ =gUnknown_823932C + movs r1, 0x84 + mov r8, r1 + movs r1, 0x84 + lsls r1, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 14 + adds r4, r0 + asrs r4, 16 + ldrb r0, [r7] + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + movs r1, 0xB0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r5, _08158518 @ =gUnknown_2023D44 + ldrb r1, [r7] + adds r1, r5 + strb r0, [r1] + ldr r4, _0815851C @ =gUnknown_202063C + ldrb r0, [r7] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08158520 @ =0x0000ff10 + strh r1, [r0, 0x24] + ldrb r0, [r7] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldr r0, _08158524 @ =gUnknown_8239A1C + mov r1, r8 + lsls r6, r1, 3 + adds r0, r6 + ldrh r0, [r0, 0x4] + bl sub_80089E8 + ldrb r1, [r7] + adds r1, r5 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r4 + lsls r0, 4 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0x5] + ldrb r0, [r7] + adds r0, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r1, 0x38] + ldr r0, _08158528 @ =gUnknown_823957C + adds r0, r6 + ldrh r0, [r0, 0x6] + bl sub_8008804 + ldrb r1, [r7] + adds r1, r5 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldr r2, _0815852C @ =0x000003ff + ands r2, r0 + ldrh r3, [r1, 0x4] + ldr r0, _08158530 @ =0xfffffc00 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, 0x4] + ldrb r0, [r7] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r1, r8 + strh r1, [r0, 0x6] +_081584E2: + ldrb r0, [r7] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _08158534 @ =sub_8033EEC + str r1, [r0] + ldr r1, _08158538 @ =gUnknown_3004FE0 + ldr r0, _0815853C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158540 @ =sub_815614C + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08158510: .4byte gUnknown_20244DC +_08158514: .4byte gUnknown_823932C +_08158518: .4byte gUnknown_2023D44 +_0815851C: .4byte gUnknown_202063C +_08158520: .4byte 0x0000ff10 +_08158524: .4byte gUnknown_8239A1C +_08158528: .4byte gUnknown_823957C +_0815852C: .4byte 0x000003ff +_08158530: .4byte 0xfffffc00 +_08158534: .4byte sub_8033EEC +_08158538: .4byte gUnknown_3004FE0 +_0815853C: .4byte gUnknown_2023BC4 +_08158540: .4byte sub_815614C + thumb_func_end sub_8158344 + + thumb_func_start sub_8158544 +sub_8158544: @ 8158544 + push {r4-r6,lr} + ldr r4, _081585EC @ =gUnknown_2023BC4 + ldrb r1, [r4] + movs r0, 0x4 + bl sub_8034750 + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x4 + bl sub_803F864 + ldr r0, _081585F0 @ =gUnknown_20244DC + ldr r1, _081585F4 @ =gUnknown_8239F8C + ldrb r1, [r1, 0x10] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r6, _081585F8 @ =gUnknown_2023D44 + ldrb r1, [r4] + adds r1, r6 + strb r0, [r1] + ldr r5, _081585FC @ =gUnknown_202063C + ldrb r3, [r4] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08158600 @ =0x0000ffa0 + strh r1, [r0, 0x24] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldrb r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r5, 0x1C + adds r0, r5 + ldr r1, _08158604 @ =sub_8033EEC + str r1, [r0] + ldr r1, _08158608 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0815860C @ =sub_8156FEC + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081585EC: .4byte gUnknown_2023BC4 +_081585F0: .4byte gUnknown_20244DC +_081585F4: .4byte gUnknown_8239F8C +_081585F8: .4byte gUnknown_2023D44 +_081585FC: .4byte gUnknown_202063C +_08158600: .4byte 0x0000ffa0 +_08158604: .4byte sub_8033EEC +_08158608: .4byte gUnknown_3004FE0 +_0815860C: .4byte sub_8156FEC + thumb_func_end sub_8158544 + + thumb_func_start sub_8158610 +sub_8158610: @ 8158610 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8158610 + + thumb_func_start sub_815861C +sub_815861C: @ 815861C + push {r4-r6,lr} + ldr r6, _08158668 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, _0815866C @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r0, [r4, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3, 0x4] + cmp r0, 0 + bne _08158670 + ldr r1, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08158650 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x5 + bl sub_80341D8 +_08158650: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + adds r1, 0x1 + strb r1, [r0, 0x4] + b _0815872A + .align 2, 0 +_08158668: .4byte gUnknown_2024018 +_0815866C: .4byte gUnknown_2023BC4 +_08158670: + ldrb r1, [r3] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0815872A + strb r0, [r3, 0x4] + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _081586FC + ldr r2, _081586E8 @ =gUnknown_2023BCE + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r2, _081586EC @ =gUnknown_2024284 + adds r0, r2 + bl sub_8035244 + movs r1, 0x40 + negs r1, r1 + movs r0, 0x10 + bl sub_80722F4 + ldr r2, _081586F0 @ =gUnknown_202063C + ldr r3, _081586F4 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x30] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strh r1, [r0, 0x32] + ldrb r0, [r5] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _081586F8 @ =sub_8012110 + b _0815871A + .align 2, 0 +_081586E8: .4byte gUnknown_2023BCE +_081586EC: .4byte gUnknown_2024284 +_081586F0: .4byte gUnknown_202063C +_081586F4: .4byte gUnknown_2023D44 +_081586F8: .4byte sub_8012110 +_081586FC: + movs r0, 0x10 + movs r1, 0x3F + bl sub_80722F4 + ldr r2, _08158730 @ =gUnknown_202063C + ldr r1, _08158734 @ =gUnknown_2023D44 + ldrb r0, [r5] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08158738 @ =sub_8011EA0 +_0815871A: + str r1, [r0] + ldr r1, _0815873C @ =gUnknown_3004FE0 + ldr r0, _08158740 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158744 @ =sub_8156DCC + str r1, [r0] +_0815872A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08158730: .4byte gUnknown_202063C +_08158734: .4byte gUnknown_2023D44 +_08158738: .4byte sub_8011EA0 +_0815873C: .4byte gUnknown_3004FE0 +_08158740: .4byte gUnknown_2023BC4 +_08158744: .4byte sub_8156DCC + thumb_func_end sub_815861C + + thumb_func_start sub_8158748 +sub_8158748: @ 8158748 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8158748 + + thumb_func_start sub_8158754 +sub_8158754: @ 8158754 + push {r4,r5,lr} + ldr r0, _08158794 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x8] + movs r0, 0x4 + strb r0, [r1, 0x8] + ldr r1, _08158798 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldr r5, _0815879C @ =gUnknown_2023BC4 + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x3 + bl sub_80341D8 + ldr r1, _081587A0 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _081587A4 @ =sub_8156484 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08158794: .4byte gUnknown_2024018 +_08158798: .4byte gUnknown_2024005 +_0815879C: .4byte gUnknown_2023BC4 +_081587A0: .4byte gUnknown_3004FE0 +_081587A4: .4byte sub_8156484 + thumb_func_end sub_8158754 + + thumb_func_start sub_81587A8 +sub_81587A8: @ 81587A8 + push {r4,r5,lr} + ldr r1, _081587F0 @ =gUnknown_2022BC4 + ldr r5, _081587F4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r1, [r0] + ldr r0, _081587F8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + strb r1, [r0, 0x8] + ldr r1, _081587FC @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x3 + bl sub_80341D8 + ldr r1, _08158800 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158804 @ =sub_8156484 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081587F0: .4byte gUnknown_2022BC4 +_081587F4: .4byte gUnknown_2023BC4 +_081587F8: .4byte gUnknown_2024018 +_081587FC: .4byte gUnknown_2024005 +_08158800: .4byte gUnknown_3004FE0 +_08158804: .4byte sub_8156484 + thumb_func_end sub_81587A8 + + thumb_func_start sub_8158808 +sub_8158808: @ 8158808 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8158808 + + thumb_func_start sub_8158814 +sub_8158814: @ 8158814 + push {r4-r6,lr} + ldr r0, _081588E8 @ =gUnknown_2022BC4 + mov r12, r0 + ldr r6, _081588EC @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r2, 9 + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, r12 + adds r1, 0x2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + ldr r5, _081588F0 @ =gUnknown_2037F16 + mov r1, r12 + adds r1, 0x3 + adds r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _081588F4 @ =gUnknown_2037EEC + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x5 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _081588F8 @ =gUnknown_2037EE8 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0x7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 8 + orrs r3, r1 + mov r1, r12 + adds r1, 0x8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, 16 + orrs r3, r1 + mov r1, r12 + adds r1, 0x9 + adds r2, r1 + ldrb r1, [r2] + lsls r1, 24 + orrs r3, r1 + str r3, [r4] + ldr r3, _081588FC @ =gUnknown_2037EFE + ldrb r1, [r6] + lsls r1, 9 + mov r2, r12 + adds r2, 0xA + adds r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _08158900 @ =gUnknown_2037F00 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0xC + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, r12 + adds r1, 0xD + adds r2, r1 + ldrb r1, [r2] + lsls r1, 8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _08158904 @ =gUnknown_2037EE4 + ldrb r2, [r6] + lsls r2, 9 + mov r1, r12 + adds r1, 0x10 + adds r2, r1 + str r2, [r3] + ldr r3, _08158908 @ =gUnknown_2024008 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_80342A0 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _0815890C + bl sub_8157084 + b _0815892A + .align 2, 0 +_081588E8: .4byte gUnknown_2022BC4 +_081588EC: .4byte gUnknown_2023BC4 +_081588F0: .4byte gUnknown_2037F16 +_081588F4: .4byte gUnknown_2037EEC +_081588F8: .4byte gUnknown_2037EE8 +_081588FC: .4byte gUnknown_2037EFE +_08158900: .4byte gUnknown_2037F00 +_08158904: .4byte gUnknown_2037EE4 +_08158908: .4byte gUnknown_2024008 +_0815890C: + ldr r0, _08158930 @ =gUnknown_2024018 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r3, [r0, 0x4] + ldr r1, _08158934 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158938 @ =sub_815893C + str r1, [r0] +_0815892A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08158930: .4byte gUnknown_2024018 +_08158934: .4byte gUnknown_3004FE0 +_08158938: .4byte sub_815893C + thumb_func_end sub_8158814 + + thumb_func_start sub_815893C +sub_815893C: @ 815893C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r2, _08158980 @ =gUnknown_2022BC4 + ldr r6, _08158984 @ =gUnknown_2023BC4 + ldrb r3, [r6] + lsls r1, r3, 9 + adds r0, r2, 0x1 + mov r9, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r2, 0x2 + mov r8, r2 + add r1, r8 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + ldr r7, _08158988 @ =gUnknown_2024018 + ldr r5, [r7] + ldr r1, [r5, 0x4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x4] + cmp r2, 0x1 + beq _081589C6 + cmp r2, 0x1 + bgt _0815898C + cmp r2, 0 + beq _08158996 + b _08158A7C + .align 2, 0 +_08158980: .4byte gUnknown_2022BC4 +_08158984: .4byte gUnknown_2023BC4 +_08158988: .4byte gUnknown_2024018 +_0815898C: + cmp r2, 0x2 + beq _081589F0 + cmp r2, 0x3 + beq _08158A40 + b _08158A7C +_08158996: + ldr r1, [r5] + lsls r0, r3, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _081589B2 + adds r0, r3, 0 + adds r1, r3, 0 + adds r2, r3, 0 + movs r3, 0x5 + bl sub_80341D8 +_081589B2: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0, 0x4] + b _08158A7C +_081589C6: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08158A7C + movs r0, 0 + bl sub_8035450 + adds r0, r4, 0 + bl sub_807259C + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x4] + b _08158A7C +_081589F0: + ldr r0, _08158A38 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08158A3C @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _08158A7C + movs r0, 0x1 + bl sub_8035450 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08158A24 + adds r0, r2, 0 + adds r1, r2, 0 + movs r3, 0x6 + bl sub_80341D8 +_08158A24: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strb r1, [r0, 0x4] + b _08158A7C + .align 2, 0 +_08158A38: .4byte gUnknown_2037EDC +_08158A3C: .4byte gUnknown_2037EE1 +_08158A40: + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08158A7C + bl sub_8034B40 + ldrb r0, [r6] + lsls r2, r0, 9 + mov r3, r9 + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r8 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + bl sub_8035200 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r4, [r0, 0x4] + bl sub_8157084 +_08158A7C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815893C + + thumb_func_start sub_8158A88 +sub_8158A88: @ 8158A88 + push {r4,lr} + ldr r0, _08158ABC @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _08158AC0 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _08158AC4 @ =gUnknown_2023BC4 + ldrb r4, [r0] + lsls r4, 9 + ldr r0, _08158AC8 @ =gUnknown_2022BC6 + adds r4, r0 + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _08158AD0 + ldr r0, _08158ACC @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _08158AD8 + .align 2, 0 +_08158ABC: .4byte gUnknown_2022974 +_08158AC0: .4byte gUnknown_2022976 +_08158AC4: .4byte gUnknown_2023BC4 +_08158AC8: .4byte gUnknown_2022BC6 +_08158ACC: .4byte gUnknown_202298C +_08158AD0: + ldr r0, _08158AEC @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_08158AD8: + ldr r1, _08158AF0 @ =gUnknown_3004FE0 + ldr r0, _08158AF4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158AF8 @ =sub_815623C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158AEC: .4byte gUnknown_202298C +_08158AF0: .4byte gUnknown_3004FE0 +_08158AF4: .4byte gUnknown_2023BC4 +_08158AF8: .4byte sub_815623C + thumb_func_end sub_8158A88 + + thumb_func_start sub_8158AFC +sub_8158AFC: @ 8158AFC + push {lr} + ldr r0, _08158B14 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08158B18 + bl sub_8158A88 + b _08158B1C + .align 2, 0 +_08158B14: .4byte gUnknown_2023BC4 +_08158B18: + bl sub_8157084 +_08158B1C: + pop {r0} + bx r0 + thumb_func_end sub_8158AFC + + thumb_func_start sub_8158B20 +sub_8158B20: @ 8158B20 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08158B46 + ldr r0, _08158B4C @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _08158B50 @ =gUnknown_2022976 + movs r0, 0xA0 + strh r0, [r1] + ldr r1, _08158B54 @ =gUnknown_3004FE0 + ldr r0, _08158B58 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158B5C @ =sub_8156140 + str r1, [r0] +_08158B46: + pop {r0} + bx r0 + .align 2, 0 +_08158B4C: .4byte gUnknown_2022974 +_08158B50: .4byte gUnknown_2022976 +_08158B54: .4byte gUnknown_3004FE0 +_08158B58: .4byte gUnknown_2023BC4 +_08158B5C: .4byte sub_8156140 + thumb_func_end sub_8158B20 + + thumb_func_start sub_8158B60 +sub_8158B60: @ 8158B60 + push {r4,lr} + ldr r4, _08158BBC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08158BDC + ldr r1, _08158BC0 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158BC4 @ =sub_8158B20 + str r1, [r0] + ldr r0, _08158BC8 @ =gUnknown_83FDA4C + movs r1, 0 + bl sub_80D87BC + ldr r0, _08158BCC @ =gUnknown_83FE725 + movs r1, 0x2 + bl sub_80D87BC + movs r4, 0 +_08158B8E: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8030A98 + adds r4, 0x1 + cmp r4, 0x3 + ble _08158B8E + ldr r1, _08158BD0 @ =gUnknown_2023FF8 + ldr r0, _08158BBC @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + ldr r0, _08158BD4 @ =gUnknown_83FE6D5 + bl sub_80D77F4 + ldr r0, _08158BD8 @ =gUnknown_202298C + movs r1, 0x1 + bl sub_80D87BC + b _08158BE8 + .align 2, 0 +_08158BBC: .4byte gUnknown_2023BC4 +_08158BC0: .4byte gUnknown_3004FE0 +_08158BC4: .4byte sub_8158B20 +_08158BC8: .4byte gUnknown_83FDA4C +_08158BCC: .4byte gUnknown_83FE725 +_08158BD0: .4byte gUnknown_2023FF8 +_08158BD4: .4byte gUnknown_83FE6D5 +_08158BD8: .4byte gUnknown_202298C +_08158BDC: + ldr r0, _08158BF0 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _08158BF4 @ =sub_8156140 + str r0, [r1] +_08158BE8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158BF0: .4byte gUnknown_3004FE0 +_08158BF4: .4byte sub_8156140 + thumb_func_end sub_8158B60 + + thumb_func_start sub_8158BF8 +sub_8158BF8: @ 8158BF8 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8158BF8 + + thumb_func_start sub_8158C04 +sub_8158C04: @ 8158C04 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08158C2E + ldr r0, _08158C34 @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _08158C38 @ =gUnknown_2022976 + movs r2, 0xA0 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08158C3C @ =gUnknown_3004FE0 + ldr r0, _08158C40 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158C44 @ =sub_81564E4 + str r1, [r0] +_08158C2E: + pop {r0} + bx r0 + .align 2, 0 +_08158C34: .4byte gUnknown_2022974 +_08158C38: .4byte gUnknown_2022976 +_08158C3C: .4byte gUnknown_3004FE0 +_08158C40: .4byte gUnknown_2023BC4 +_08158C44: .4byte sub_81564E4 + thumb_func_end sub_8158C04 + + thumb_func_start sub_8158C48 +sub_8158C48: @ 8158C48 + push {r4,lr} + ldr r4, _08158C68 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08158C74 + bl sub_8032CB4 + ldr r0, _08158C6C @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _08158C70 @ =sub_8158C04 + b _08158C7E + .align 2, 0 +_08158C68: .4byte gUnknown_2023BC4 +_08158C6C: .4byte gUnknown_3004FE0 +_08158C70: .4byte sub_8158C04 +_08158C74: + ldr r0, _08158C88 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _08158C8C @ =sub_81564E4 +_08158C7E: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158C88: .4byte gUnknown_3004FE0 +_08158C8C: .4byte sub_81564E4 + thumb_func_end sub_8158C48 + + thumb_func_start sub_8158C90 +sub_8158C90: @ 8158C90 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _08158CDC @ =gUnknown_3004FE0 + ldr r2, _08158CE0 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158CE4 @ =sub_8156594 + str r1, [r0] + ldr r1, _08158CE8 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + movs r3, 0 + ldr r5, _08158CEC @ =gUnknown_203B0DC + ldr r4, _08158CF0 @ =gUnknown_2022BC4 +_08158CBE: + adds r0, r3, r5 + ldrb r1, [r2] + lsls r1, 9 + adds r1, 0x1 + adds r1, r3, r1 + adds r1, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x2 + ble _08158CBE + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08158CDC: .4byte gUnknown_3004FE0 +_08158CE0: .4byte gUnknown_2023BC4 +_08158CE4: .4byte sub_8156594 +_08158CE8: .4byte gUnknown_2024004 +_08158CEC: .4byte gUnknown_203B0DC +_08158CF0: .4byte gUnknown_2022BC4 + thumb_func_end sub_8158C90 + + thumb_func_start sub_8158CF4 +sub_8158CF4: @ 8158CF4 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _08158DA4 @ =nullsub_43 + movs r1, 0xFF + bl sub_807741C + ldr r3, _08158DA8 @ =gUnknown_3004FFC + ldr r4, _08158DAC @ =gUnknown_2023BC4 + ldrb r1, [r4] + adds r1, r3 + strb r0, [r1] + ldr r5, _08158DB0 @ =gUnknown_3005090 + ldrb r2, [r4] + adds r3, r2, r3 + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldr r5, _08158DB4 @ =gUnknown_2022BC4 + lsls r2, 9 + adds r6, r5, 0x1 + adds r2, r6 + ldrb r2, [r2] + movs r0, 0xF + ands r0, r2 + strh r0, [r1, 0x8] + ldr r3, _08158DB8 @ =gUnknown_2023FE8 + ldr r1, [r3] + adds r1, 0x49 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r6 + ldrb r0, [r0] + lsrs r0, 4 + strb r0, [r1] + ldr r2, [r3] + adds r2, 0x8B + ldrb r0, [r4] + lsls r0, 9 + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r2, [r3] + adds r2, 0xAC + ldrb r0, [r4] + lsls r0, 9 + adds r1, r5, 0x3 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r2, 0 + ldr r3, _08158DBC @ =gUnknown_203B0DC +_08158D60: + adds r0, r2, r3 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x2 + ble _08158D60 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _08158DC0 @ =gUnknown_3004FE0 + ldr r2, _08158DAC @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158DC4 @ =sub_81564F0 + str r1, [r0] + ldr r1, _08158DC8 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08158DA4: .4byte nullsub_43 +_08158DA8: .4byte gUnknown_3004FFC +_08158DAC: .4byte gUnknown_2023BC4 +_08158DB0: .4byte gUnknown_3005090 +_08158DB4: .4byte gUnknown_2022BC4 +_08158DB8: .4byte gUnknown_2023FE8 +_08158DBC: .4byte gUnknown_203B0DC +_08158DC0: .4byte gUnknown_3004FE0 +_08158DC4: .4byte sub_81564F0 +_08158DC8: .4byte gUnknown_2024004 + thumb_func_end sub_8158CF4 + + thumb_func_start sub_8158DCC +sub_8158DCC: @ 8158DCC + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8158DCC + + thumb_func_start sub_8158DD8 +sub_8158DD8: @ 8158DD8 + push {r4-r7,lr} + sub sp, 0x4 + ldr r4, _08158DFC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08158E08 + ldr r1, _08158E00 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08158E04 @ =gUnknown_2024284 + b _08158E18 + .align 2, 0 +_08158DFC: .4byte gUnknown_2023BC4 +_08158E00: .4byte gUnknown_2023BCE +_08158E04: .4byte gUnknown_2024284 +_08158E08: + ldr r1, _08158E68 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08158E6C @ =gUnknown_202402C +_08158E18: + adds r5, r1, r0 + movs r0, 0 + bl sub_8034964 + ldr r3, _08158E70 @ =gUnknown_2022BC4 + ldr r7, _08158E74 @ =gUnknown_2023BC4 + ldrb r1, [r7] + lsls r1, 9 + adds r0, r3, 0x2 + adds r0, r1, r0 + ldrb r2, [r0] + adds r3, 0x3 + adds r1, r3 + ldrb r0, [r1] + lsls r0, 8 + orrs r2, r0 + lsls r2, 16 + asrs r6, r2, 16 + ldr r0, _08158E78 @ =0x00007fff + cmp r6, r0 + beq _08158E80 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + ldrb r0, [r7] + ldr r1, _08158E7C @ =gUnknown_3004FF0 + adds r1, r0, r1 + ldrb r1, [r1] + str r6, [sp] + adds r2, r4, 0 + bl sub_8048150 + b _08158EA8 + .align 2, 0 +_08158E68: .4byte gUnknown_2023BCE +_08158E6C: .4byte gUnknown_202402C +_08158E70: .4byte gUnknown_2022BC4 +_08158E74: .4byte gUnknown_2023BC4 +_08158E78: .4byte 0x00007fff +_08158E7C: .4byte gUnknown_3004FF0 +_08158E80: + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + ldrb r0, [r7] + ldr r4, _08158EC0 @ =gUnknown_3004FF0 + adds r1, r0, r4 + ldrb r1, [r1] + str r6, [sp] + movs r3, 0 + bl sub_8048150 + ldrb r0, [r7] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_8048440 +_08158EA8: + ldr r1, _08158EC4 @ =gUnknown_3004FE0 + ldr r0, _08158EC8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158ECC @ =sub_8156E78 + str r1, [r0] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08158EC0: .4byte gUnknown_3004FF0 +_08158EC4: .4byte gUnknown_3004FE0 +_08158EC8: .4byte gUnknown_2023BC4 +_08158ECC: .4byte sub_8156E78 + thumb_func_end sub_8158DD8 + + thumb_func_start sub_8158ED0 +sub_8158ED0: @ 8158ED0 + push {r4-r7,lr} + ldr r5, _08158EFC @ =gUnknown_2022BC4 + ldr r6, _08158F00 @ =gUnknown_2023BC4 + ldrb r0, [r6] + lsls r0, 9 + adds r1, r5, 0x1 + adds r0, r1 + ldrb r7, [r0] + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08158F04 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x63 + bls _08158F08 + bl sub_8157084 + b _08158F54 + .align 2, 0 +_08158EFC: .4byte gUnknown_2022BC4 +_08158F00: .4byte gUnknown_2023BC4 +_08158F04: .4byte gUnknown_2024284 +_08158F08: + movs r0, 0x1 + bl sub_8034964 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + ldrb r1, [r6] + lsls r1, 9 + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r0, r5, 0x3 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + ldr r0, _08158F5C @ =sub_81568DC + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08158F60 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r7, [r1, 0x8] + strh r4, [r1, 0xA] + ldrb r0, [r6] + strh r0, [r1, 0xC] + ldr r1, _08158F64 @ =gUnknown_3004FE0 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r1, _08158F68 @ =nullsub_99 + str r1, [r0] +_08158F54: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08158F5C: .4byte sub_81568DC +_08158F60: .4byte gUnknown_3005090 +_08158F64: .4byte gUnknown_3004FE0 +_08158F68: .4byte nullsub_99 + thumb_func_end sub_8158ED0 + + thumb_func_start sub_8158F6C +sub_8158F6C: @ 8158F6C + push {r4,lr} + ldr r4, _08158F9C @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08158FF2 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08158FA8 + ldr r1, _08158FA0 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08158FA4 @ =gUnknown_2024284 + b _08158FB8 + .align 2, 0 +_08158F9C: .4byte gUnknown_2023BC4 +_08158FA0: .4byte gUnknown_2023BCE +_08158FA4: .4byte gUnknown_2024284 +_08158FA8: + ldr r1, _08158FF8 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08158FFC @ =gUnknown_202402C +_08158FB8: + adds r2, r1, r0 + ldr r1, _08159000 @ =gUnknown_3004FF0 + ldr r4, _08159004 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + adds r1, r2, 0 + movs r2, 0x9 + bl sub_8049D98 + ldrb r2, [r4] + ldr r0, _08159008 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0815900C @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _08159010 @ =sub_8157054 + str r1, [r0] +_08158FF2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158FF8: .4byte gUnknown_2023BCE +_08158FFC: .4byte gUnknown_202402C +_08159000: .4byte gUnknown_3004FF0 +_08159004: .4byte gUnknown_2023BC4 +_08159008: .4byte gUnknown_2024018 +_0815900C: .4byte gUnknown_3004FE0 +_08159010: .4byte sub_8157054 + thumb_func_end sub_8158F6C + + thumb_func_start sub_8159014 +sub_8159014: @ 8159014 + push {r4,r5,lr} + ldr r5, _0815906C @ =gUnknown_2023BC4 + ldrb r0, [r5] + bl sub_80342A4 + lsls r0, 24 + cmp r0, 0 + bne _08159064 + ldr r4, _08159070 @ =gUnknown_2022BC4 + ldrb r3, [r5] + lsls r3, 9 + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, 0x2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, 0x3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 8 + orrs r1, r2 + adds r2, r4, 0x4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, 16 + orrs r1, r2 + adds r4, 0x5 + adds r3, r4 + ldrb r2, [r3] + lsls r2, 24 + orrs r1, r2 + bl sub_8033F1C + ldr r1, _08159074 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08159078 @ =sub_8157054 + str r1, [r0] +_08159064: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815906C: .4byte gUnknown_2023BC4 +_08159070: .4byte gUnknown_2022BC4 +_08159074: .4byte gUnknown_3004FE0 +_08159078: .4byte sub_8157054 + thumb_func_end sub_8159014 + + thumb_func_start sub_815907C +sub_815907C: @ 815907C + push {r4,lr} + sub sp, 0x4 + ldr r4, _081590A0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _081590AC + ldr r1, _081590A4 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _081590A8 @ =gUnknown_2024284 + b _081590BC + .align 2, 0 +_081590A0: .4byte gUnknown_2023BC4 +_081590A4: .4byte gUnknown_2023BCE +_081590A8: .4byte gUnknown_2024284 +_081590AC: + ldr r1, _081590F0 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _081590F4 @ =gUnknown_202402C +_081590BC: + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + ldr r2, _081590F8 @ =gUnknown_2022BC4 + ldr r1, _081590FC @ =gUnknown_2023BC4 + ldrb r1, [r1] + lsls r1, 9 + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + eors r0, r1 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + bl sub_8157084 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081590F0: .4byte gUnknown_2023BCE +_081590F4: .4byte gUnknown_202402C +_081590F8: .4byte gUnknown_2022BC4 +_081590FC: .4byte gUnknown_2023BC4 + thumb_func_end sub_815907C + + thumb_func_start sub_8159100 +sub_8159100: @ 8159100 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159100 + + thumb_func_start sub_815910C +sub_815910C: @ 815910C + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_815910C + + thumb_func_start sub_8159118 +sub_8159118: @ 8159118 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159118 + + thumb_func_start sub_8159124 +sub_8159124: @ 8159124 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159124 + + thumb_func_start sub_8159130 +sub_8159130: @ 8159130 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159130 + + thumb_func_start sub_815913C +sub_815913C: @ 815913C + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_815913C + + thumb_func_start sub_8159148 +sub_8159148: @ 8159148 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159148 + + thumb_func_start sub_8159154 +sub_8159154: @ 8159154 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159154 + + thumb_func_start sub_8159160 +sub_8159160: @ 8159160 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159160 + + thumb_func_start sub_815916C +sub_815916C: @ 815916C + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_815916C + + thumb_func_start sub_8159178 +sub_8159178: @ 8159178 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159178 + + thumb_func_start sub_8159184 +sub_8159184: @ 8159184 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159184 + + thumb_func_start sub_8159190 +sub_8159190: @ 8159190 + push {r4,lr} + ldr r3, _081591B8 @ =gUnknown_202063C + ldr r2, _081591BC @ =gUnknown_2023D44 + ldr r4, _081591C0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _081591C4 + bl sub_8157084 + b _081591EE + .align 2, 0 +_081591B8: .4byte gUnknown_202063C +_081591BC: .4byte gUnknown_2023D44 +_081591C0: .4byte gUnknown_2023BC4 +_081591C4: + ldr r1, _081591F4 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x30] + ldrb r0, [r4] + bl sub_804BE70 + ldr r1, _081591F8 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _081591FC @ =sub_8156F00 + str r1, [r0] +_081591EE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081591F4: .4byte gUnknown_2024005 +_081591F8: .4byte gUnknown_3004FE0 +_081591FC: .4byte sub_8156F00 + thumb_func_end sub_8159190 + + thumb_func_start sub_8159200 +sub_8159200: @ 8159200 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159200 + + thumb_func_start sub_815920C +sub_815920C: @ 815920C + push {lr} + ldr r2, _08159234 @ =gUnknown_2022BC4 + ldr r0, _08159238 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_80722CC + bl sub_8157084 + pop {r0} + bx r0 + .align 2, 0 +_08159234: .4byte gUnknown_2022BC4 +_08159238: .4byte gUnknown_2023BC4 + thumb_func_end sub_815920C + + thumb_func_start sub_815923C +sub_815923C: @ 815923C + push {lr} + ldr r2, _08159264 @ =gUnknown_2022BC4 + ldr r0, _08159268 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_8157084 + pop {r0} + bx r0 + .align 2, 0 +_08159264: .4byte gUnknown_2022BC4 +_08159268: .4byte gUnknown_2023BC4 + thumb_func_end sub_815923C + + thumb_func_start sub_815926C +sub_815926C: @ 815926C + push {r4,lr} + ldr r4, _08159290 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0815929C + ldr r1, _08159294 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08159298 @ =gUnknown_2024284 + b _081592AC + .align 2, 0 +_08159290: .4byte gUnknown_2023BC4 +_08159294: .4byte gUnknown_2023BCE +_08159298: .4byte gUnknown_2024284 +_0815929C: + ldr r1, _081592C8 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _081592CC @ =gUnknown_202402C +_081592AC: + adds r0, r1, r0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl sub_8071DF0 + bl sub_8157084 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081592C8: .4byte gUnknown_2023BCE +_081592CC: .4byte gUnknown_202402C + thumb_func_end sub_815926C + + thumb_func_start sub_81592D0 +sub_81592D0: @ 81592D0 + push {lr} + ldr r1, _081592F8 @ =gUnknown_2022BC4 + ldr r0, _081592FC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _08159300 @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_8157084 + pop {r0} + bx r0 + .align 2, 0 +_081592F8: .4byte gUnknown_2022BC4 +_081592FC: .4byte gUnknown_2023BC4 +_08159300: .4byte gUnknown_2023F4C + thumb_func_end sub_81592D0 + + thumb_func_start sub_8159304 +sub_8159304: @ 8159304 + push {r4-r7,lr} + ldr r6, _0815943C @ =gUnknown_2023D44 + ldr r7, _08159440 @ =gUnknown_2023BC4 + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08159444 @ =gUnknown_202063C + adds r0, r5 + bl sub_80750FC + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x32 + strh r1, [r0, 0x2E] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08159448 @ =0x0000ffd8 + strh r1, [r0, 0x32] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x22] + strh r1, [r0, 0x36] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0815944C @ =sub_8075590 + str r1, [r0] + ldrb r2, [r7] + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x38] + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08159450 @ =sub_80335F8 + bl sub_8074A68 + ldrb r0, [r7] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x1 + bl sub_800838C + ldr r0, _08159454 @ =0x0000d6f8 + bl sub_80089B8 + adds r4, r0, 0 + lsls r4, 24 + ldr r0, _08159458 @ =gUnknown_8239FD4 + ldr r0, [r0, 0x20] + lsrs r4, 20 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, r2 + movs r2, 0x20 + bl sub_80703A8 + ldrb r0, [r7] + adds r0, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r4 + strb r0, [r1, 0x5] + ldr r0, _0815945C @ =sub_81595EC + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08159460 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + ldrb r0, [r7] + strh r0, [r1, 0x8] + ldr r3, _08159464 @ =gUnknown_2024018 + ldr r0, [r3] + ldrb r2, [r7] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0815941C + ldr r0, _08159468 @ =gUnknown_2024000 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldr r1, _0815946C @ =sub_80491B0 + str r1, [r0] +_0815941C: + ldr r0, [r3] + ldr r2, [r0, 0x8] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r1, _08159470 @ =gUnknown_3004FE0 + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r1, _08159474 @ =nullsub_99 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815943C: .4byte gUnknown_2023D44 +_08159440: .4byte gUnknown_2023BC4 +_08159444: .4byte gUnknown_202063C +_08159448: .4byte 0x0000ffd8 +_0815944C: .4byte sub_8075590 +_08159450: .4byte sub_80335F8 +_08159454: .4byte 0x0000d6f8 +_08159458: .4byte gUnknown_8239FD4 +_0815945C: .4byte sub_81595EC +_08159460: .4byte gUnknown_3005090 +_08159464: .4byte gUnknown_2024018 +_08159468: .4byte gUnknown_2024000 +_0815946C: .4byte sub_80491B0 +_08159470: .4byte gUnknown_3004FE0 +_08159474: .4byte nullsub_99 + thumb_func_end sub_8159304 + + thumb_func_start sub_8159478 +sub_8159478: @ 8159478 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _081595C0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x2] + ldr r0, _081595C4 @ =gUnknown_2023BCE + lsls r2, r6, 1 + adds r2, r0 + ldr r0, _081595C8 @ =gUnknown_2022BC4 + lsls r1, r6, 9 + adds r0, 0x1 + adds r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081595CC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _081595D0 @ =sub_8033E3C + bl sub_8044EF8 + ldr r1, _081595D4 @ =gUnknown_3004FFC + mov r9, r1 + add r9, r6 + mov r1, r9 + strb r0, [r1] + adds r0, r6, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_803F7D4 + ldr r0, _081595D8 @ =gUnknown_20244DC + mov r10, r0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80748A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r10 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8006F8C + ldr r4, _081595DC @ =gUnknown_2023D44 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _081595E0 @ =gUnknown_202063C + mov r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r4] + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x2E] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r8 + strh r1, [r0, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r6, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _081595E4 @ =gUnknown_2024024 + adds r6, r1 + ldrb r1, [r6] + bl sub_800838C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _081595E8 @ =nullsub_8 + str r1, [r0] + movs r0, 0 + movs r1, 0xFF + bl sub_804A938 + mov r1, r9 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x2E] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081595C0: .4byte gUnknown_2024018 +_081595C4: .4byte gUnknown_2023BCE +_081595C8: .4byte gUnknown_2022BC4 +_081595CC: .4byte gUnknown_2024284 +_081595D0: .4byte sub_8033E3C +_081595D4: .4byte gUnknown_3004FFC +_081595D8: .4byte gUnknown_20244DC +_081595DC: .4byte gUnknown_2023D44 +_081595E0: .4byte gUnknown_202063C +_081595E4: .4byte gUnknown_2024024 +_081595E8: .4byte nullsub_8 + thumb_func_end sub_8159478 + + thumb_func_start sub_81595EC +sub_81595EC: @ 81595EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _0815960C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0x1E + bgt _08159610 + adds r0, r2, 0x1 + strh r0, [r1, 0xA] + b _08159646 + .align 2, 0 +_0815960C: .4byte gUnknown_3005090 +_08159610: + ldr r4, _0815964C @ =gUnknown_2023BC4 + ldrb r5, [r4] + ldrh r0, [r1, 0x8] + strb r0, [r4] + ldr r0, _08159650 @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r2, r1, 9 + adds r0, 0x1 + adds r2, r0 + ldr r0, _08159654 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r4] + bl sub_8159478 + ldr r1, _08159658 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _0815965C @ =sub_8156624 + str r1, [r0] + strb r5, [r4] + adds r0, r6, 0 + bl sub_8077508 +_08159646: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815964C: .4byte gUnknown_2023BC4 +_08159650: .4byte gUnknown_2022BC4 +_08159654: .4byte gUnknown_2023BCE +_08159658: .4byte gUnknown_3004FE0 +_0815965C: .4byte sub_8156624 + thumb_func_end sub_81595EC + + thumb_func_start sub_8159660 +sub_8159660: @ 8159660 + push {r4,r5,lr} + ldr r1, _08159688 @ =gUnknown_2022BC4 + ldr r0, _0815968C @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08159690 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08159690 + bl sub_8157084 + b _081596CE + .align 2, 0 +_08159688: .4byte gUnknown_2022BC4 +_0815968C: .4byte gUnknown_2023BC4 +_08159690: + ldr r0, _081596D4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r5, _081596D8 @ =gUnknown_2023BC4 + ldrb r1, [r5] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r4, r0, 9 + ldr r3, _081596DC @ =gUnknown_2022BC8 + adds r1, r4, r3 + subs r2, r3, 0x3 + adds r2, r4, r2 + ldrb r2, [r2] + subs r3, 0x2 + adds r4, r3 + ldrb r3, [r4] + bl sub_8048D14 + ldr r2, _081596E0 @ =gUnknown_2024000 + ldrb r1, [r5] + adds r1, r2 + strb r0, [r1] + bl sub_8157084 +_081596CE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081596D4: .4byte gUnknown_2024018 +_081596D8: .4byte gUnknown_2023BC4 +_081596DC: .4byte gUnknown_2022BC8 +_081596E0: .4byte gUnknown_2024000 + thumb_func_end sub_8159660 + + thumb_func_start sub_81596E4 +sub_81596E4: @ 81596E4 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_81596E4 + + thumb_func_start sub_81596F0 +sub_81596F0: @ 81596F0 + push {r4,lr} + ldr r4, _08159710 @ =gUnknown_2023BC4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 + bl sub_8157084 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08159710: .4byte gUnknown_2023BC4 + thumb_func_end sub_81596F0 + + thumb_func_start sub_8159714 +sub_8159714: @ 8159714 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_8159714 + + thumb_func_start sub_8159720 +sub_8159720: @ 8159720 + push {r4-r6,lr} + sub sp, 0x4 + ldr r5, _08159758 @ =gUnknown_2022BC4 + ldr r6, _0815975C @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _08159760 + bl sub_8157084 + b _0815976C + .align 2, 0 +_08159758: .4byte gUnknown_2022BC4 +_0815975C: .4byte gUnknown_2023BC4 +_08159760: + ldr r0, _08159774 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _08159778 @ =sub_8157024 + str r0, [r1] +_0815976C: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08159774: .4byte gUnknown_3004FE0 +_08159778: .4byte sub_8157024 + thumb_func_end sub_8159720 + + thumb_func_start sub_815977C +sub_815977C: @ 815977C + push {r4,lr} + ldr r1, _081597B0 @ =gUnknown_2022BC4 + ldr r4, _081597B4 @ =gUnknown_2023BC4 + ldrb r2, [r4] + lsls r0, r2, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + blt _081597A4 + cmp r0, 0x1 + bgt _081597A4 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8012258 + ldrb r0, [r4] + movs r1, 0 + bl sub_8012258 +_081597A4: + bl sub_8157084 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081597B0: .4byte gUnknown_2022BC4 +_081597B4: .4byte gUnknown_2023BC4 + thumb_func_end sub_815977C + + thumb_func_start sub_81597B8 +sub_81597B8: @ 81597B8 + push {lr} + bl sub_8157084 + pop {r0} + bx r0 + thumb_func_end sub_81597B8 + + thumb_func_start sub_81597C4 +sub_81597C4: @ 81597C4 + push {r4,lr} + ldr r2, _08159808 @ =gUnknown_2023E8A + ldr r1, _0815980C @ =gUnknown_2022BC4 + ldr r4, _08159810 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x5 + bl sub_8071AB4 + movs r0, 0x3 + bl sub_8070E44 + bl sub_8157084 + ldr r0, _08159814 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x6 + ands r0, r1 + cmp r0, 0x2 + bne _08159800 + ldr r0, _08159818 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _0815981C @ =sub_8156254 + str r0, [r1] +_08159800: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08159808: .4byte gUnknown_2023E8A +_0815980C: .4byte gUnknown_2022BC4 +_08159810: .4byte gUnknown_2023BC4 +_08159814: .4byte gUnknown_2022B4C +_08159818: .4byte gUnknown_3004FE0 +_0815981C: .4byte sub_8156254 + thumb_func_end sub_81597C4 + + thumb_func_start nullsub_100 +nullsub_100: @ 8159820 + bx lr + thumb_func_end nullsub_100 + + thumb_func_start sub_8159824 +sub_8159824: @ 8159824 + push {r4-r7,lr} + ldr r1, _081598B4 @ =gUnknown_8479060 + ldr r0, _081598B8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x96 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r7, [r0] + ldr r4, _081598BC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0815985C + ldrb r0, [r4] + movs r1, 0x1 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0x7 + movs r3, 0x1 + bl sub_8012138 +_0815985C: + ldr r6, _081598C0 @ =gUnknown_3005EE0 + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r6 + ldr r1, [r0] + ldrb r0, [r1] + lsls r0, 3 + adds r0, r7 + adds r3, r0, r2 + ldrb r0, [r3, 0x4] + ldrb r1, [r1, 0x2] + cmp r0, r1 + bne _0815992C + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08159888 + movs r0, 0x5 + bl sub_80722CC +_08159888: + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x2] + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 3 + adds r0, r7 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _081598D4 + cmp r0, 0x1 + bgt _081598C4 + cmp r0, 0 + beq _081598CE + b _081598F0 + .align 2, 0 +_081598B4: .4byte gUnknown_8479060 +_081598B8: .4byte gUnknown_2023FE8 +_081598BC: .4byte gUnknown_2023BC4 +_081598C0: .4byte gUnknown_3005EE0 +_081598C4: + cmp r0, 0x2 + beq _081598DA + cmp r0, 0x3 + beq _081598E6 + b _081598F0 +_081598CE: + movs r0, 0x1 + movs r1, 0 + b _081598DE +_081598D4: + movs r0, 0x1 + movs r1, 0x1 + b _081598DE +_081598DA: + movs r0, 0x1 + movs r1, 0x2 +_081598DE: + movs r2, 0 + bl sub_800E848 + b _081598F0 +_081598E6: + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl sub_800E848 +_081598F0: + bl sub_8157084 + ldr r3, _08159924 @ =gUnknown_3005EE0 + ldr r2, _08159928 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r3 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r3 + ldr r2, [r0] + ldrb r0, [r2] + lsls r0, 3 + adds r0, r7 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x4 + bne _08159984 + movs r0, 0 + strb r0, [r2] + b _08159984 + .align 2, 0 +_08159924: .4byte gUnknown_3005EE0 +_08159928: .4byte gUnknown_2023BC4 +_0815992C: + ldr r5, _0815998C @ =gUnknown_2023FF8 + adds r0, r2, r5 + ldrb r0, [r0] + ldrb r2, [r3] + cmp r0, r2 + beq _08159972 + ldrb r0, [r3, 0x4] + lsrs r0, 1 + cmp r0, r1 + bne _08159972 + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r2, r1, r5 + lsls r0, r1, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 3 + adds r0, r7 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 +_08159972: + ldr r1, _08159990 @ =gUnknown_3005EE0 + ldr r0, _08159994 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] +_08159984: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815998C: .4byte gUnknown_2023FF8 +_08159990: .4byte gUnknown_3005EE0 +_08159994: .4byte gUnknown_2023BC4 + thumb_func_end sub_8159824 + + thumb_func_start sub_8159998 +sub_8159998: @ 8159998 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _08159A38 @ =gUnknown_84790D8 + ldr r0, _08159A3C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x96 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r7, [r0] + ldr r0, _08159A40 @ =gUnknown_3005EE0 + mov r8, r0 + ldr r6, _08159A44 @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r0, r2, 2 + add r0, r8 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + lsls r0, 3 + adds r0, r7 + adds r3, r0, r2 + ldrb r0, [r3, 0x4] + ldrb r4, [r1, 0x2] + cmp r0, r4 + bne _08159A48 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _081599DE + movs r0, 0x5 + bl sub_80722CC +_081599DE: + ldrb r0, [r6] + lsls r0, 2 + add r0, r8 + ldr r0, [r0] + movs r4, 0 + strb r4, [r0, 0x2] + ldrb r1, [r6] + lsls r0, r1, 2 + add r0, r8 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + lsls r0, 3 + adds r0, r7 + adds r0, r1 + ldrb r2, [r0] + movs r0, 0x1 + eors r1, r0 + lsls r1, 8 + orrs r2, r1 + movs r0, 0x1 + movs r1, 0xA + bl sub_800E848 + bl sub_8157084 + ldrb r0, [r6] + lsls r0, 2 + add r0, r8 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + ldrb r1, [r6] + lsls r0, r1, 2 + add r0, r8 + ldr r2, [r0] + ldrb r0, [r2, 0x1] + lsls r0, 3 + adds r0, r7 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08159AA0 + strb r4, [r2, 0x1] + b _08159AA0 + .align 2, 0 +_08159A38: .4byte gUnknown_84790D8 +_08159A3C: .4byte gUnknown_2023FE8 +_08159A40: .4byte gUnknown_3005EE0 +_08159A44: .4byte gUnknown_2023BC4 +_08159A48: + ldr r5, _08159AAC @ =gUnknown_2023FFC + adds r1, r2, r5 + ldrb r0, [r3] + ldrb r1, [r1] + cmp r0, r1 + beq _08159A8E + ldrb r0, [r3, 0x4] + lsrs r0, 1 + cmp r0, r4 + bne _08159A8E + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r6] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A14 + ldrb r1, [r6] + adds r2, r1, r5 + lsls r0, r1, 2 + add r0, r8 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + lsls r0, 3 + adds r0, r7 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldrb r0, [r6] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_80309CC +_08159A8E: + ldr r1, _08159AB0 @ =gUnknown_3005EE0 + ldr r0, _08159AB4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] +_08159AA0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08159AAC: .4byte gUnknown_2023FFC +_08159AB0: .4byte gUnknown_3005EE0 +_08159AB4: .4byte gUnknown_2023BC4 + thumb_func_end sub_8159998 + + thumb_func_start sub_8159AB8 +sub_8159AB8: @ 8159AB8 + push {r4-r7,lr} + ldr r1, _08159B54 @ =gUnknown_8479198 + ldr r4, _08159B58 @ =gUnknown_2023FE8 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x96 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r6, [r0] + ldr r3, _08159B5C @ =gUnknown_2023BC4 + ldrb r5, [r3] + lsls r1, r5, 9 + ldr r0, _08159B60 @ =gUnknown_2022BC6 + adds r7, r1, r0 + mov r12, r7 + subs r0, 0x2 + adds r1, r0 + adds r2, 0x97 + ldrb r0, [r2] + lsls r0, 3 + adds r0, r6 + ldrb r1, [r1] + adds r7, r4, 0 + adds r4, r3, 0 + ldrb r2, [r0] + cmp r1, r2 + bne _08159B70 + ldrb r2, [r0, 0x1] + cmp r5, r2 + bne _08159B70 + cmp r1, 0x10 + bne _08159B04 + ldrh r0, [r0, 0x2] + mov r1, r12 + ldrh r1, [r1] + cmp r0, r1 + bne _08159B70 +_08159B04: + ldr r0, [r7] + adds r3, r0, 0 + adds r3, 0x97 + ldrb r1, [r3] + lsls r0, r1, 3 + adds r0, r6 + ldr r2, [r0, 0x4] + cmp r2, 0 + beq _08159B6C + ldr r1, _08159B64 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + str r2, [r0] + ldr r2, _08159B68 @ =gUnknown_3005EE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x2] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + ldr r0, [r7] + adds r0, 0x97 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r6 + ldrh r0, [r0, 0x2] + strb r0, [r1, 0x3] + ldr r1, [r7] + adds r1, 0x97 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0x1 + b _08159B72 + .align 2, 0 +_08159B54: .4byte gUnknown_8479198 +_08159B58: .4byte gUnknown_2023FE8 +_08159B5C: .4byte gUnknown_2023BC4 +_08159B60: .4byte gUnknown_2022BC6 +_08159B64: .4byte gUnknown_3004FE0 +_08159B68: .4byte gUnknown_3005EE0 +_08159B6C: + adds r0, r1, 0x1 + strb r0, [r3] +_08159B70: + movs r0, 0 +_08159B72: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8159AB8 + + thumb_func_start sub_8159B78 +sub_8159B78: @ 8159B78 + ldr r1, _08159B98 @ =gUnknown_3005EE0 + ldr r2, _08159B9C @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x2] + ldr r1, _08159BA0 @ =gUnknown_3004FE0 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _08159BA4 @ =sub_81560DC + str r1, [r0] + bx lr + .align 2, 0 +_08159B98: .4byte gUnknown_3005EE0 +_08159B9C: .4byte gUnknown_2023BC4 +_08159BA0: .4byte gUnknown_3004FE0 +_08159BA4: .4byte sub_81560DC + thumb_func_end sub_8159B78 + + thumb_func_start sub_8159BA8 +sub_8159BA8: @ 8159BA8 + push {r4,r5,lr} + sub sp, 0x4 + ldr r1, _08159BD0 @ =gUnknown_3005EE0 + ldr r2, _08159BD4 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + adds r5, r1, 0 + adds r4, r2, 0 + cmp r0, 0x4 + bls _08159BC4 + b _08159CEE +_08159BC4: + lsls r0, 2 + ldr r1, _08159BD8 @ =_08159BDC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08159BD0: .4byte gUnknown_3005EE0 +_08159BD4: .4byte gUnknown_2023BC4 +_08159BD8: .4byte _08159BDC + .align 2, 0 +_08159BDC: + .4byte _08159BF0 + .4byte _08159C14 + .4byte _08159C44 + .4byte _08159C64 + .4byte _08159CB4 +_08159BF0: + ldr r0, _08159C10 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08159CEE + movs r0, 0x81 + negs r0, r0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + b _08159C90 + .align 2, 0 +_08159C10: .4byte gUnknown_2037AB8 +_08159C14: + ldr r0, _08159C3C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08159CEE + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + ldr r0, _08159C40 @ =gUnknown_2022976 + ldrh r0, [r0] + strb r0, [r1, 0x4] + bl sub_80EB30C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + b _08159C9E + .align 2, 0 +_08159C3C: .4byte gUnknown_2037AB8 +_08159C40: .4byte gUnknown_2022976 +_08159C44: + ldr r1, _08159C5C @ =gUnknown_2022976 + movs r0, 0 + strh r0, [r1] + bl sub_8159EF0 + bl sub_80D77F4 + ldr r0, _08159C60 @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _08159C94 + .align 2, 0 +_08159C5C: .4byte gUnknown_2022976 +_08159C60: .4byte gUnknown_202298C +_08159C64: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _08159CEE + ldr r0, _08159CA8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08159CEE + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x81 + negs r0, r0 + str r4, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 +_08159C90: + bl sub_8070588 +_08159C94: + ldr r1, _08159CAC @ =gUnknown_3005EE0 + ldr r0, _08159CB0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 +_08159C9E: + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + b _08159CEE + .align 2, 0 +_08159CA8: .4byte gUnknown_30030F0 +_08159CAC: .4byte gUnknown_3005EE0 +_08159CB0: .4byte gUnknown_2023BC4 +_08159CB4: + ldr r0, _08159CF8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08159CEE + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0xD + bne _08159CD8 + bl sub_8035314 + ldr r0, _08159CFC @ =0x00000137 + bl sub_80722A0 +_08159CD8: + ldr r1, _08159D00 @ =gUnknown_2022976 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + strh r0, [r1] + bl sub_80EB524 + bl sub_8159B78 +_08159CEE: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08159CF8: .4byte gUnknown_2037AB8 +_08159CFC: .4byte 0x00000137 +_08159D00: .4byte gUnknown_2022976 + thumb_func_end sub_8159BA8 + + thumb_func_start sub_8159D04 +sub_8159D04: @ 8159D04 + push {r4-r6,lr} + sub sp, 0x4 + ldr r1, _08159D28 @ =gUnknown_3005EE0 + ldr r2, _08159D2C @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + adds r3, r1, 0 + cmp r0, 0x6 + bls _08159D1E + b _08159EDE +_08159D1E: + lsls r0, 2 + ldr r1, _08159D30 @ =_08159D34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08159D28: .4byte gUnknown_3005EE0 +_08159D2C: .4byte gUnknown_2023BC4 +_08159D30: .4byte _08159D34 + .align 2, 0 +_08159D34: + .4byte _08159D50 + .4byte _08159D98 + .4byte _08159DDC + .4byte _08159DF4 + .4byte _08159E0C + .4byte _08159E64 + .4byte _08159EA4 +_08159D50: + ldr r0, _08159D90 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _08159D62 + b _08159EDE +_08159D62: + ldr r0, _08159D94 @ =gUnknown_2023FE8 + ldr r4, [r0] + adds r5, r4, 0 + adds r5, 0x95 + adds r4, 0x94 + movs r0, 0 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80EEFC8 + movs r0, 0x81 + negs r0, r0 + str r6, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + b _08159E80 + .align 2, 0 +_08159D90: .4byte gUnknown_2037AB8 +_08159D94: .4byte gUnknown_2023FE8 +_08159D98: + ldr r0, _08159DD0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08159DAA + b _08159EDE +_08159DAA: + ldr r2, _08159DD4 @ =gUnknown_825E45C + ldr r0, _08159DD8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x95 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + adds r0, 0x94 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + lsls r0, r1, 16 + str r3, [sp] + b _08159E7A + .align 2, 0 +_08159DD0: .4byte gUnknown_2037AB8 +_08159DD4: .4byte gUnknown_825E45C +_08159DD8: .4byte gUnknown_2023FE8 +_08159DDC: + ldr r0, _08159DF0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08159DEA + b _08159EDE +_08159DEA: + bl sub_80EB30C + b _08159E84 + .align 2, 0 +_08159DF0: .4byte gUnknown_2037AB8 +_08159DF4: + bl sub_8159EF0 + bl sub_80D77F4 + ldr r0, _08159E08 @ =gUnknown_202298C + movs r1, 0x18 + bl sub_80D87BC + b _08159E84 + .align 2, 0 +_08159E08: .4byte gUnknown_202298C +_08159E0C: + movs r0, 0x18 + bl sub_8002E64 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _08159EDE + ldr r0, _08159E58 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08159EDE + movs r0, 0x5 + bl sub_80722CC + ldr r2, _08159E5C @ =gUnknown_825E45C + ldr r0, _08159E60 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x95 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + adds r0, 0x94 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + lsls r0, r1, 16 + str r4, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + b _08159E80 + .align 2, 0 +_08159E58: .4byte gUnknown_30030F0 +_08159E5C: .4byte gUnknown_825E45C +_08159E60: .4byte gUnknown_2023FE8 +_08159E64: + ldr r0, _08159E98 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08159EDE + movs r0, 0x81 + negs r0, r0 + str r1, [sp] +_08159E7A: + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 +_08159E80: + bl sub_8070588 +_08159E84: + ldr r1, _08159E9C @ =gUnknown_3005EE0 + ldr r0, _08159EA0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + b _08159EDE + .align 2, 0 +_08159E98: .4byte gUnknown_2037AB8 +_08159E9C: .4byte gUnknown_3005EE0 +_08159EA0: .4byte gUnknown_2023BC4 +_08159EA4: + ldr r0, _08159EE8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08159EDE + ldrb r0, [r2] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0xD + bne _08159EC8 + bl sub_8035314 + ldr r0, _08159EEC @ =0x00000137 + bl sub_80722A0 +_08159EC8: + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80EF0E0 + bl sub_80EB524 + bl sub_8159B78 +_08159EDE: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08159EE8: .4byte gUnknown_2037AB8 +_08159EEC: .4byte 0x00000137 + thumb_func_end sub_8159D04 + + thumb_func_start sub_8159EF0 +sub_8159EF0: @ 8159EF0 + push {lr} + ldr r0, _08159F10 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x96 + ldrb r1, [r1] + cmp r1, 0x1 + beq _08159F18 + cmp r1, 0x1 + ble _08159F0C + cmp r1, 0x2 + beq _08159F20 + cmp r1, 0x3 + beq _08159F28 +_08159F0C: + ldr r1, _08159F14 @ =gUnknown_84791A8 + b _08159F2A + .align 2, 0 +_08159F10: .4byte gUnknown_2023FE8 +_08159F14: .4byte gUnknown_84791A8 +_08159F18: + ldr r1, _08159F1C @ =gUnknown_84791B8 + b _08159F2A + .align 2, 0 +_08159F1C: .4byte gUnknown_84791B8 +_08159F20: + ldr r1, _08159F24 @ =gUnknown_84791CC + b _08159F2A + .align 2, 0 +_08159F24: .4byte gUnknown_84791CC +_08159F28: + ldr r1, _08159F3C @ =gUnknown_84791E8 +_08159F2A: + adds r0, 0x97 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_08159F3C: .4byte gUnknown_84791E8 + thumb_func_end sub_8159EF0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s new file mode 100644 index 000000000..8d88e7000 --- /dev/null +++ b/asm/battle_controller_safari.s @@ -0,0 +1,1534 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_79 +nullsub_79: @ 80DD534 + bx lr + thumb_func_end nullsub_79 + + thumb_func_start sub_80DD538 +sub_80DD538: @ 80DD538 + ldr r1, _080DD548 @ =gUnknown_3004FE0 + ldr r0, _080DD54C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DD550 @ =sub_80DD554 + str r1, [r0] + bx lr + .align 2, 0 +_080DD548: .4byte gUnknown_3004FE0 +_080DD54C: .4byte gUnknown_2023BC4 +_080DD550: .4byte sub_80DD554 + thumb_func_end sub_80DD538 + + thumb_func_start sub_80DD554 +sub_80DD554: @ 80DD554 + push {lr} + ldr r2, _080DD588 @ =gUnknown_2023BC8 + ldr r1, _080DD58C @ =gUnknown_825E45C + ldr r0, _080DD590 @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080DD5A0 + ldr r0, _080DD594 @ =gUnknown_2022BC4 + lsls r1, r3, 9 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x38 + bhi _080DD59C + ldr r0, _080DD598 @ =gUnknown_83FED00 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _080DD5A0 + .align 2, 0 +_080DD588: .4byte gUnknown_2023BC8 +_080DD58C: .4byte gUnknown_825E45C +_080DD590: .4byte gUnknown_2023BC4 +_080DD594: .4byte gUnknown_2022BC4 +_080DD598: .4byte gUnknown_83FED00 +_080DD59C: + bl sub_80DD8C8 +_080DD5A0: + pop {r0} + bx r0 + thumb_func_end sub_80DD554 + + thumb_func_start sub_80DD5A4 +sub_80DD5A4: @ 80DD5A4 + push {r4,r5,lr} + ldr r0, _080DD5D4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080DD612 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080DD5D8 @ =gUnknown_2023FF8 + ldr r0, _080DD5DC @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080DD5F0 + cmp r0, 0x1 + bgt _080DD5E0 + cmp r0, 0 + beq _080DD5EA + b _080DD60C + .align 2, 0 +_080DD5D4: .4byte gUnknown_30030F0 +_080DD5D8: .4byte gUnknown_2023FF8 +_080DD5DC: .4byte gUnknown_2023BC4 +_080DD5E0: + cmp r0, 0x2 + beq _080DD5F6 + cmp r0, 0x3 + beq _080DD602 + b _080DD60C +_080DD5EA: + movs r0, 0x1 + movs r1, 0x5 + b _080DD5FA +_080DD5F0: + movs r0, 0x1 + movs r1, 0x6 + b _080DD5FA +_080DD5F6: + movs r0, 0x1 + movs r1, 0x7 +_080DD5FA: + movs r2, 0 + bl sub_800E848 + b _080DD60C +_080DD602: + movs r0, 0x1 + movs r1, 0x8 + movs r2, 0 + bl sub_800E848 +_080DD60C: + bl sub_80DD8C8 + b _080DD71A +_080DD612: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DD650 + ldr r5, _080DD648 @ =gUnknown_2023FF8 + ldr r4, _080DD64C @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080DD71A + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + b _080DD6BE + .align 2, 0 +_080DD648: .4byte gUnknown_2023FF8 +_080DD64C: .4byte gUnknown_2023BC4 +_080DD650: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DD68C + ldr r5, _080DD684 @ =gUnknown_2023FF8 + ldr r4, _080DD688 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080DD71A + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + b _080DD6BE + .align 2, 0 +_080DD684: .4byte gUnknown_2023FF8 +_080DD688: .4byte gUnknown_2023BC4 +_080DD68C: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080DD6D8 + ldr r5, _080DD6D0 @ =gUnknown_2023FF8 + ldr r4, _080DD6D4 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DD71A + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x2 +_080DD6BE: + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + b _080DD71A + .align 2, 0 +_080DD6D0: .4byte gUnknown_2023FF8 +_080DD6D4: .4byte gUnknown_2023BC4 +_080DD6D8: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080DD71A + ldr r5, _080DD720 @ =gUnknown_2023FF8 + ldr r4, _080DD724 @ =gUnknown_2023BC4 + ldrb r0, [r4] + adds r0, r5 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080DD71A + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8030A98 + ldrb r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x2 + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 +_080DD71A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD720: .4byte gUnknown_2023FF8 +_080DD724: .4byte gUnknown_2023BC4 + thumb_func_end sub_80DD5A4 + + thumb_func_start sub_80DD728 +sub_80DD728: @ 80DD728 + push {lr} + ldr r2, _080DD750 @ =gUnknown_202063C + ldr r1, _080DD754 @ =gUnknown_2023D44 + ldr r0, _080DD758 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080DD75C @ =nullsub_8 + cmp r1, r0 + bne _080DD74C + bl sub_80DD8C8 +_080DD74C: + pop {r0} + bx r0 + .align 2, 0 +_080DD750: .4byte gUnknown_202063C +_080DD754: .4byte gUnknown_2023D44 +_080DD758: .4byte gUnknown_2023BC4 +_080DD75C: .4byte nullsub_8 + thumb_func_end sub_80DD728 + + thumb_func_start sub_80DD760 +sub_80DD760: @ 80DD760 + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080DD772 + bl sub_80DD8C8 +_080DD772: + pop {r0} + bx r0 + thumb_func_end sub_80DD760 + + thumb_func_start sub_80DD778 +sub_80DD778: @ 80DD778 + push {lr} + ldr r2, _080DD7A0 @ =gUnknown_202063C + ldr r1, _080DD7A4 @ =gUnknown_3004FF0 + ldr r0, _080DD7A8 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080DD7AC @ =nullsub_8 + cmp r1, r0 + bne _080DD79C + bl sub_80DD8C8 +_080DD79C: + pop {r0} + bx r0 + .align 2, 0 +_080DD7A0: .4byte gUnknown_202063C +_080DD7A4: .4byte gUnknown_3004FF0 +_080DD7A8: .4byte gUnknown_2023BC4 +_080DD7AC: .4byte nullsub_8 + thumb_func_end sub_80DD778 + + thumb_func_start sub_80DD7B0 +sub_80DD7B0: @ 80DD7B0 + push {lr} + ldr r0, _080DD7E0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080DD7DA + ldr r2, _080DD7E4 @ =gUnknown_30030F0 + ldr r0, _080DD7E8 @ =0x00000439 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldr r0, _080DD7EC @ =gUnknown_3004F80 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, 0x8] + bl sub_8000544 +_080DD7DA: + pop {r0} + bx r0 + .align 2, 0 +_080DD7E0: .4byte gUnknown_2037AB8 +_080DD7E4: .4byte gUnknown_30030F0 +_080DD7E8: .4byte 0x00000439 +_080DD7EC: .4byte gUnknown_3004F80 + thumb_func_end sub_80DD7B0 + + thumb_func_start sub_80DD7F0 +sub_80DD7F0: @ 80DD7F0 + push {lr} + ldr r0, _080DD820 @ =gUnknown_2024005 + ldrb r0, [r0] + cmp r0, 0 + beq _080DD816 + ldr r0, _080DD824 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080DD828 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080DD81A +_080DD816: + bl sub_80DD8C8 +_080DD81A: + pop {r0} + bx r0 + .align 2, 0 +_080DD820: .4byte gUnknown_2024005 +_080DD824: .4byte gUnknown_2024018 +_080DD828: .4byte gUnknown_2023BC4 + thumb_func_end sub_80DD7F0 + + thumb_func_start sub_80DD82C +sub_80DD82C: @ 80DD82C + push {lr} + ldr r0, _080DD84C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080DD848 + ldr r1, _080DD850 @ =gUnknown_3004FE0 + ldr r0, _080DD854 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DD858 @ =sub_80DD85C + str r1, [r0] +_080DD848: + pop {r0} + bx r0 + .align 2, 0 +_080DD84C: .4byte gUnknown_2037AB8 +_080DD850: .4byte gUnknown_3004FE0 +_080DD854: .4byte gUnknown_2023BC4 +_080DD858: .4byte sub_80DD85C + thumb_func_end sub_80DD82C + + thumb_func_start sub_80DD85C +sub_80DD85C: @ 80DD85C + push {lr} + ldr r0, _080DD888 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _080DD88C @ =sub_8011100 + cmp r1, r0 + bne _080DD882 + ldr r0, _080DD890 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080DD882 + ldr r0, _080DD894 @ =gUnknown_203AD30 + ldrh r1, [r0] + movs r0, 0x1 + bl sub_800E8AC + bl sub_80DD8C8 +_080DD882: + pop {r0} + bx r0 + .align 2, 0 +_080DD888: .4byte gUnknown_30030F0 +_080DD88C: .4byte sub_8011100 +_080DD890: .4byte gUnknown_2037AB8 +_080DD894: .4byte gUnknown_203AD30 + thumb_func_end sub_80DD85C + + thumb_func_start sub_80DD898 +sub_80DD898: @ 80DD898 + push {lr} + ldr r0, _080DD8C0 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080DD8C4 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080DD8BA + bl sub_80DD8C8 +_080DD8BA: + pop {r0} + bx r0 + .align 2, 0 +_080DD8C0: .4byte gUnknown_2024018 +_080DD8C4: .4byte gUnknown_2023BC4 + thumb_func_end sub_80DD898 + + thumb_func_start sub_80DD8C8 +sub_80DD8C8: @ 80DD8C8 + push {r4,lr} + sub sp, 0x4 + ldr r1, _080DD908 @ =gUnknown_3004FE0 + ldr r4, _080DD90C @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DD910 @ =sub_80DD554 + str r1, [r0] + ldr r0, _080DD914 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DD91C + bl sub_800A404 + mov r1, sp + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + mov r2, sp + bl sub_800D9EC + ldr r1, _080DD918 @ =gUnknown_2022BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r0, r1 + movs r1, 0x38 + strb r1, [r0] + b _080DD92E + .align 2, 0 +_080DD908: .4byte gUnknown_3004FE0 +_080DD90C: .4byte gUnknown_2023BC4 +_080DD910: .4byte sub_80DD554 +_080DD914: .4byte gUnknown_2022B4C +_080DD918: .4byte gUnknown_2022BC4 +_080DD91C: + ldr r2, _080DD938 @ =gUnknown_2023BC8 + ldr r1, _080DD93C @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_080DD92E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DD938: .4byte gUnknown_2023BC8 +_080DD93C: .4byte gUnknown_825E45C + thumb_func_end sub_80DD8C8 + + thumb_func_start sub_80DD940 +sub_80DD940: @ 80DD940 + push {lr} + ldr r0, _080DD968 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r0, _080DD96C @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080DD962 + bl sub_80DD8C8 +_080DD962: + pop {r0} + bx r0 + .align 2, 0 +_080DD968: .4byte gUnknown_2024018 +_080DD96C: .4byte gUnknown_2023BC4 + thumb_func_end sub_80DD940 + + thumb_func_start sub_80DD970 +sub_80DD970: @ 80DD970 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD970 + + thumb_func_start sub_80DD97C +sub_80DD97C: @ 80DD97C + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD97C + + thumb_func_start sub_80DD988 +sub_80DD988: @ 80DD988 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD988 + + thumb_func_start sub_80DD994 +sub_80DD994: @ 80DD994 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD994 + + thumb_func_start sub_80DD9A0 +sub_80DD9A0: @ 80DD9A0 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD9A0 + + thumb_func_start sub_80DD9AC +sub_80DD9AC: @ 80DD9AC + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD9AC + + thumb_func_start sub_80DD9B8 +sub_80DD9B8: @ 80DD9B8 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DD9B8 + + thumb_func_start sub_80DD9C4 +sub_80DD9C4: @ 80DD9C4 + push {r4-r6,lr} + ldr r4, _080DDA7C @ =gUnknown_300500C + ldr r0, [r4] + ldrb r0, [r0, 0x8] + ldr r5, _080DDA80 @ =gUnknown_2023BC4 + ldrb r1, [r5] + bl sub_8034750 + ldr r0, [r4] + ldrb r6, [r0, 0x8] + ldrb r0, [r5] + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_803F864 + ldr r0, _080DDA84 @ =gUnknown_20244DC + ldr r2, _080DDA88 @ =gUnknown_8239F8C + ldr r1, [r4] + ldrb r1, [r1, 0x8] + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1] + movs r2, 0x8 + subs r2, r1 + lsls r2, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r2, r1 + asrs r2, 16 + movs r1, 0x50 + movs r3, 0x1E + bl sub_8006F8C + ldr r6, _080DDA8C @ =gUnknown_2023D44 + ldrb r1, [r5] + adds r1, r6 + strb r0, [r1] + ldr r4, _080DDA90 @ =gUnknown_202063C + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + lsls r3, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xF0 + strh r1, [r0, 0x24] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080DDA94 @ =0x0000fffe + strh r1, [r0, 0x2E] + ldrb r0, [r5] + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080DDA98 @ =sub_8033EEC + str r1, [r0] + ldr r1, _080DDA9C @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDAA0 @ =sub_80DD728 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDA7C: .4byte gUnknown_300500C +_080DDA80: .4byte gUnknown_2023BC4 +_080DDA84: .4byte gUnknown_20244DC +_080DDA88: .4byte gUnknown_8239F8C +_080DDA8C: .4byte gUnknown_2023D44 +_080DDA90: .4byte gUnknown_202063C +_080DDA94: .4byte 0x0000fffe +_080DDA98: .4byte sub_8033EEC +_080DDA9C: .4byte gUnknown_3004FE0 +_080DDAA0: .4byte sub_80DD728 + thumb_func_end sub_80DD9C4 + + thumb_func_start sub_80DDAA4 +sub_80DDAA4: @ 80DDAA4 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDAA4 + + thumb_func_start sub_80DDAB0 +sub_80DDAB0: @ 80DDAB0 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDAB0 + + thumb_func_start sub_80DDABC +sub_80DDABC: @ 80DDABC + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDABC + + thumb_func_start sub_80DDAC8 +sub_80DDAC8: @ 80DDAC8 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDAC8 + + thumb_func_start sub_80DDAD4 +sub_80DDAD4: @ 80DDAD4 + push {r4,r5,lr} + ldr r0, _080DDB14 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x8] + movs r0, 0x4 + strb r0, [r1, 0x8] + ldr r1, _080DDB18 @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldr r5, _080DDB1C @ =gUnknown_2023BC4 + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x4 + bl sub_80341D8 + ldr r1, _080DDB20 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDB24 @ =sub_80DD7F0 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DDB14: .4byte gUnknown_2024018 +_080DDB18: .4byte gUnknown_2024005 +_080DDB1C: .4byte gUnknown_2023BC4 +_080DDB20: .4byte gUnknown_3004FE0 +_080DDB24: .4byte sub_80DD7F0 + thumb_func_end sub_80DDAD4 + + thumb_func_start sub_80DDB28 +sub_80DDB28: @ 80DDB28 + push {r4,r5,lr} + ldr r1, _080DDB70 @ =gUnknown_2022BC4 + ldr r5, _080DDB74 @ =gUnknown_2023BC4 + ldrb r0, [r5] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r1, [r0] + ldr r0, _080DDB78 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + strb r1, [r0, 0x8] + ldr r1, _080DDB7C @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, 0x1 + bl sub_80751E8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r4, 0 + movs r3, 0x4 + bl sub_80341D8 + ldr r1, _080DDB80 @ =gUnknown_3004FE0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDB84 @ =sub_80DD7F0 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DDB70: .4byte gUnknown_2022BC4 +_080DDB74: .4byte gUnknown_2023BC4 +_080DDB78: .4byte gUnknown_2024018 +_080DDB7C: .4byte gUnknown_2024005 +_080DDB80: .4byte gUnknown_3004FE0 +_080DDB84: .4byte sub_80DD7F0 + thumb_func_end sub_80DDB28 + + thumb_func_start sub_80DDB88 +sub_80DDB88: @ 80DDB88 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDB88 + + thumb_func_start sub_80DDB94 +sub_80DDB94: @ 80DDB94 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDB94 + + thumb_func_start sub_80DDBA0 +sub_80DDBA0: @ 80DDBA0 + push {r4,lr} + ldr r0, _080DDBD4 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _080DDBD8 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _080DDBDC @ =gUnknown_2023BC4 + ldrb r4, [r0] + lsls r4, 9 + ldr r0, _080DDBE0 @ =gUnknown_2022BC6 + adds r4, r0 + ldrh r0, [r4] + bl sub_80D7274 + ldrh r0, [r4] + bl sub_80D89B0 + lsls r0, 24 + cmp r0, 0 + beq _080DDBE8 + ldr r0, _080DDBE4 @ =gUnknown_202298C + movs r1, 0x40 + bl sub_80D87BC + b _080DDBF0 + .align 2, 0 +_080DDBD4: .4byte gUnknown_2022974 +_080DDBD8: .4byte gUnknown_2022976 +_080DDBDC: .4byte gUnknown_2023BC4 +_080DDBE0: .4byte gUnknown_2022BC6 +_080DDBE4: .4byte gUnknown_202298C +_080DDBE8: + ldr r0, _080DDC04 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC +_080DDBF0: + ldr r1, _080DDC08 @ =gUnknown_3004FE0 + ldr r0, _080DDC0C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDC10 @ =sub_80DD760 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDC04: .4byte gUnknown_202298C +_080DDC08: .4byte gUnknown_3004FE0 +_080DDC0C: .4byte gUnknown_2023BC4 +_080DDC10: .4byte sub_80DD760 + thumb_func_end sub_80DDBA0 + + thumb_func_start sub_80DDC14 +sub_80DDC14: @ 80DDC14 + push {lr} + ldr r0, _080DDC2C @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080DDC30 + bl sub_80DDBA0 + b _080DDC34 + .align 2, 0 +_080DDC2C: .4byte gUnknown_2023BC4 +_080DDC30: + bl sub_80DD8C8 +_080DDC34: + pop {r0} + bx r0 + thumb_func_end sub_80DDC14 + + thumb_func_start sub_80DDC38 +sub_80DDC38: @ 80DDC38 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080DDC5E + ldr r0, _080DDC64 @ =gUnknown_2022974 + strh r1, [r0] + ldr r1, _080DDC68 @ =gUnknown_2022976 + movs r0, 0xA0 + strh r0, [r1] + ldr r1, _080DDC6C @ =gUnknown_3004FE0 + ldr r0, _080DDC70 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDC74 @ =sub_80DD5A4 + str r1, [r0] +_080DDC5E: + pop {r0} + bx r0 + .align 2, 0 +_080DDC64: .4byte gUnknown_2022974 +_080DDC68: .4byte gUnknown_2022976 +_080DDC6C: .4byte gUnknown_3004FE0 +_080DDC70: .4byte gUnknown_2023BC4 +_080DDC74: .4byte sub_80DD5A4 + thumb_func_end sub_80DDC38 + + thumb_func_start sub_80DDC78 +sub_80DDC78: @ 80DDC78 + push {r4,lr} + ldr r1, _080DDCCC @ =gUnknown_3004FE0 + ldr r0, _080DDCD0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDCD4 @ =sub_80DDC38 + str r1, [r0] + ldr r0, _080DDCD8 @ =gUnknown_83FDA4C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080DDCDC @ =gUnknown_83FE747 + movs r1, 0x2 + bl sub_80D87BC + movs r4, 0 +_080DDC9A: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8030A98 + adds r4, 0x1 + cmp r4, 0x3 + ble _080DDC9A + ldr r1, _080DDCE0 @ =gUnknown_2023FF8 + ldr r0, _080DDCD0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + ldr r0, _080DDCE4 @ =gUnknown_83FE6E6 + bl sub_80D77F4 + ldr r0, _080DDCE8 @ =gUnknown_202298C + movs r1, 0x1 + bl sub_80D87BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDCCC: .4byte gUnknown_3004FE0 +_080DDCD0: .4byte gUnknown_2023BC4 +_080DDCD4: .4byte sub_80DDC38 +_080DDCD8: .4byte gUnknown_83FDA4C +_080DDCDC: .4byte gUnknown_83FE747 +_080DDCE0: .4byte gUnknown_2023FF8 +_080DDCE4: .4byte gUnknown_83FE6E6 +_080DDCE8: .4byte gUnknown_202298C + thumb_func_end sub_80DDC78 + + thumb_func_start sub_80DDCEC +sub_80DDCEC: @ 80DDCEC + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDCEC + + thumb_func_start sub_80DDCF8 +sub_80DDCF8: @ 80DDCF8 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDCF8 + + thumb_func_start sub_80DDD04 +sub_80DDD04: @ 80DDD04 + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _080DDD34 @ =gUnknown_3004FE0 + ldr r2, _080DDD38 @ =gUnknown_2023BC4 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDD3C @ =sub_80DD82C + str r1, [r0] + ldr r1, _080DDD40 @ =gUnknown_2024004 + ldrb r0, [r2] + strb r0, [r1] + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080DDD34: .4byte gUnknown_3004FE0 +_080DDD38: .4byte gUnknown_2023BC4 +_080DDD3C: .4byte sub_80DD82C +_080DDD40: .4byte gUnknown_2024004 + thumb_func_end sub_80DDD04 + + thumb_func_start sub_80DDD44 +sub_80DDD44: @ 80DDD44 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDD44 + + thumb_func_start sub_80DDD50 +sub_80DDD50: @ 80DDD50 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDD50 + + thumb_func_start sub_80DDD5C +sub_80DDD5C: @ 80DDD5C + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDD5C + + thumb_func_start sub_80DDD68 +sub_80DDD68: @ 80DDD68 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDD68 + + thumb_func_start sub_80DDD74 +sub_80DDD74: @ 80DDD74 + push {lr} + ldr r0, _080DDDA0 @ =gUnknown_3004FF0 + ldr r1, _080DDDA4 @ =gUnknown_2023BC4 + ldrb r1, [r1] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _080DDDA8 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080DDDAC @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0xB + bl sub_8049D98 + bl sub_80DD8C8 + pop {r0} + bx r0 + .align 2, 0 +_080DDDA0: .4byte gUnknown_3004FF0 +_080DDDA4: .4byte gUnknown_2023BC4 +_080DDDA8: .4byte gUnknown_2023BCE +_080DDDAC: .4byte gUnknown_2024284 + thumb_func_end sub_80DDD74 + + thumb_func_start sub_80DDDB0 +sub_80DDDB0: @ 80DDDB0 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDB0 + + thumb_func_start sub_80DDDBC +sub_80DDDBC: @ 80DDDBC + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDBC + + thumb_func_start sub_80DDDC8 +sub_80DDDC8: @ 80DDDC8 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDC8 + + thumb_func_start sub_80DDDD4 +sub_80DDDD4: @ 80DDDD4 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDD4 + + thumb_func_start sub_80DDDE0 +sub_80DDDE0: @ 80DDDE0 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDE0 + + thumb_func_start sub_80DDDEC +sub_80DDDEC: @ 80DDDEC + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDEC + + thumb_func_start sub_80DDDF8 +sub_80DDDF8: @ 80DDDF8 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDDF8 + + thumb_func_start sub_80DDE04 +sub_80DDE04: @ 80DDE04 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE04 + + thumb_func_start sub_80DDE10 +sub_80DDE10: @ 80DDE10 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE10 + + thumb_func_start sub_80DDE1C +sub_80DDE1C: @ 80DDE1C + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE1C + + thumb_func_start sub_80DDE28 +sub_80DDE28: @ 80DDE28 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE28 + + thumb_func_start sub_80DDE34 +sub_80DDE34: @ 80DDE34 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE34 + + thumb_func_start sub_80DDE40 +sub_80DDE40: @ 80DDE40 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE40 + + thumb_func_start sub_80DDE4C +sub_80DDE4C: @ 80DDE4C + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE4C + + thumb_func_start sub_80DDE58 +sub_80DDE58: @ 80DDE58 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE58 + + thumb_func_start sub_80DDE64 +sub_80DDE64: @ 80DDE64 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDE64 + + thumb_func_start sub_80DDE70 +sub_80DDE70: @ 80DDE70 + push {r4,lr} + ldr r4, _080DDEAC @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + movs r3, 0x3F + cmp r0, 0 + bne _080DDE84 + movs r3, 0xC0 +_080DDE84: + ldr r2, _080DDEB0 @ =gUnknown_2022BC4 + ldrb r1, [r4] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + lsls r1, r3, 24 + asrs r1, 24 + bl sub_80722F4 + bl sub_80DD8C8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDEAC: .4byte gUnknown_2023BC4 +_080DDEB0: .4byte gUnknown_2022BC4 + thumb_func_end sub_80DDE70 + + thumb_func_start sub_80DDEB4 +sub_80DDEB4: @ 80DDEB4 + push {lr} + ldr r2, _080DDEDC @ =gUnknown_2022BC4 + ldr r0, _080DDEE0 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r1, 9 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, 0x2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 8 + orrs r0, r1 + bl sub_8071C60 + bl sub_80DD8C8 + pop {r0} + bx r0 + .align 2, 0 +_080DDEDC: .4byte gUnknown_2022BC4 +_080DDEE0: .4byte gUnknown_2023BC4 + thumb_func_end sub_80DDEB4 + + thumb_func_start sub_80DDEE4 +sub_80DDEE4: @ 80DDEE4 + push {lr} + ldr r1, _080DDF14 @ =gUnknown_2023BCE + ldr r0, _080DDF18 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080DDF1C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl sub_8071DF0 + bl sub_80DD8C8 + pop {r0} + bx r0 + .align 2, 0 +_080DDF14: .4byte gUnknown_2023BCE +_080DDF18: .4byte gUnknown_2023BC4 +_080DDF1C: .4byte gUnknown_2024284 + thumb_func_end sub_80DDEE4 + + thumb_func_start sub_80DDF20 +sub_80DDF20: @ 80DDF20 + push {lr} + ldr r1, _080DDF48 @ =gUnknown_2022BC4 + ldr r0, _080DDF4C @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80BC3A0 + ldr r2, _080DDF50 @ =gUnknown_2023F4C + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + bl sub_80DD8C8 + pop {r0} + bx r0 + .align 2, 0 +_080DDF48: .4byte gUnknown_2022BC4 +_080DDF4C: .4byte gUnknown_2023BC4 +_080DDF50: .4byte gUnknown_2023F4C + thumb_func_end sub_80DDF20 + + thumb_func_start sub_80DDF54 +sub_80DDF54: @ 80DDF54 + push {r4,r5,lr} + ldr r5, _080DDF98 @ =gUnknown_3004FF0 + ldr r4, _080DDF9C @ =gUnknown_2023BC4 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _080DDFA0 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080DDFA4 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0xA + bl sub_8049D98 + ldrb r0, [r4] + bl sub_804BD94 + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_80481D4 + ldr r1, _080DDFA8 @ =gUnknown_3004FE0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, _080DDFAC @ =sub_80DD778 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DDF98: .4byte gUnknown_3004FF0 +_080DDF9C: .4byte gUnknown_2023BC4 +_080DDFA0: .4byte gUnknown_2023BCE +_080DDFA4: .4byte gUnknown_2024284 +_080DDFA8: .4byte gUnknown_3004FE0 +_080DDFAC: .4byte sub_80DD778 + thumb_func_end sub_80DDF54 + + thumb_func_start sub_80DDFB0 +sub_80DDFB0: @ 80DDFB0 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDFB0 + + thumb_func_start sub_80DDFBC +sub_80DDFBC: @ 80DDFBC + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDFBC + + thumb_func_start sub_80DDFC8 +sub_80DDFC8: @ 80DDFC8 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDFC8 + + thumb_func_start sub_80DDFD4 +sub_80DDFD4: @ 80DDFD4 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DDFD4 + + thumb_func_start sub_80DDFE0 +sub_80DDFE0: @ 80DDFE0 + push {r4-r6,lr} + sub sp, 0x4 + ldr r5, _080DE018 @ =gUnknown_2022BC4 + ldr r6, _080DE01C @ =gUnknown_2023BC4 + ldrb r2, [r6] + lsls r1, r2, 9 + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, 0x3 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, 0 + adds r1, r2, 0 + bl sub_803401C + lsls r0, 24 + cmp r0, 0 + beq _080DE020 + bl sub_80DD8C8 + b _080DE02C + .align 2, 0 +_080DE018: .4byte gUnknown_2022BC4 +_080DE01C: .4byte gUnknown_2023BC4 +_080DE020: + ldr r0, _080DE034 @ =gUnknown_3004FE0 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r0, _080DE038 @ =sub_80DD898 + str r0, [r1] +_080DE02C: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DE034: .4byte gUnknown_3004FE0 +_080DE038: .4byte sub_80DD898 + thumb_func_end sub_80DDFE0 + + thumb_func_start sub_80DE03C +sub_80DE03C: @ 80DE03C + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DE03C + + thumb_func_start sub_80DE048 +sub_80DE048: @ 80DE048 + push {lr} + bl sub_80DD8C8 + pop {r0} + bx r0 + thumb_func_end sub_80DE048 + + thumb_func_start sub_80DE054 +sub_80DE054: @ 80DE054 + push {r4,lr} + ldr r2, _080DE098 @ =gUnknown_2023E8A + ldr r1, _080DE09C @ =gUnknown_2022BC4 + ldr r4, _080DE0A0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0x5 + bl sub_8071AB4 + movs r0, 0x3 + bl sub_8070E44 + bl sub_80DD8C8 + ldr r0, _080DE0A4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x6 + ands r0, r1 + cmp r0, 0x2 + bne _080DE090 + ldr r0, _080DE0A8 @ =gUnknown_3004FE0 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r0 + ldr r0, _080DE0AC @ =sub_80DD7B0 + str r0, [r1] +_080DE090: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE098: .4byte gUnknown_2023E8A +_080DE09C: .4byte gUnknown_2022BC4 +_080DE0A0: .4byte gUnknown_2023BC4 +_080DE0A4: .4byte gUnknown_2022B4C +_080DE0A8: .4byte gUnknown_3004FE0 +_080DE0AC: .4byte sub_80DD7B0 + thumb_func_end sub_80DE054 + + thumb_func_start nullsub_80 +nullsub_80: @ 80DE0B0 + bx lr + thumb_func_end nullsub_80 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s new file mode 100644 index 000000000..265fcb37a --- /dev/null +++ b/asm/battle_controllers.s @@ -0,0 +1,3392 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800D230 +sub_800D230: @ 800D230 + push {lr} + ldr r0, _0800D268 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0800D262 + ldr r0, _0800D26C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0800D24A + bl sub_800B1F4 +_0800D24A: + ldr r0, _0800D270 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0800D256 + bl sub_8009804 +_0800D256: + ldr r0, _0800D274 @ =sub_8081A90 + movs r1, 0 + bl sub_807741C + bl sub_800D93C +_0800D262: + pop {r0} + bx r0 + .align 2, 0 +_0800D268: .4byte gUnknown_2022B4C +_0800D26C: .4byte gUnknown_3003F3C +_0800D270: .4byte gUnknown_3003F64 +_0800D274: .4byte sub_8081A90 + thumb_func_end sub_800D230 + + thumb_func_start sub_800D278 +sub_800D278: @ 800D278 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _0800D2E4 @ =gUnknown_3004F84 + ldr r0, _0800D2E8 @ =nullsub_12 + str r0, [r1] + movs r2, 0 + ldr r0, _0800D2EC @ =nullsub_13 + mov r8, r0 + movs r3, 0 + ldr r1, _0800D2F0 @ =gUnknown_3004FE0 + mov r12, r1 + ldr r7, _0800D2F4 @ =gUnknown_2023BD6 + movs r6, 0xFF + ldr r5, _0800D2F8 @ =gUnknown_2023FF8 + ldr r4, _0800D2FC @ =gUnknown_2023FFC +_0800D298: + mov r0, r8 + mov r1, r12 + adds r1, 0x4 + mov r12, r1 + subs r1, 0x4 + stm r1!, {r0} + adds r1, r2, r7 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + adds r0, r2, r5 + strb r3, [r0] + adds r0, r2, r4 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _0800D298 + bl sub_800D230 + ldr r0, _0800D300 @ =gUnknown_2023BC8 + movs r4, 0 + str r4, [r0] + bl sub_80724C0 + bl sub_8043FBC + bl sub_80C6D0C + ldr r0, _0800D304 @ =gUnknown_2022B54 + str r4, [r0] + ldr r0, _0800D308 @ =gUnknown_2023DDC + strb r4, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D2E4: .4byte gUnknown_3004F84 +_0800D2E8: .4byte nullsub_12 +_0800D2EC: .4byte nullsub_13 +_0800D2F0: .4byte gUnknown_3004FE0 +_0800D2F4: .4byte gUnknown_2023BD6 +_0800D2F8: .4byte gUnknown_2023FF8 +_0800D2FC: .4byte gUnknown_2023FFC +_0800D300: .4byte gUnknown_2023BC8 +_0800D304: .4byte gUnknown_2022B54 +_0800D308: .4byte gUnknown_2023DDC + thumb_func_end sub_800D278 + + thumb_func_start sub_800D30C +sub_800D30C: @ 800D30C + push {r4,r5,lr} + ldr r0, _0800D320 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0800D324 + bl sub_800D494 + b _0800D328 + .align 2, 0 +_0800D320: .4byte gUnknown_2022B4C +_0800D324: + bl sub_800D364 +_0800D328: + bl sub_800D768 + ldr r0, _0800D35C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0800D356 + movs r4, 0 + ldr r0, _0800D360 @ =gUnknown_2023BCC + ldrb r1, [r0] + cmp r4, r1 + bge _0800D356 + adds r5, r0, 0 +_0800D344: + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8127DA8 + adds r4, 0x1 + ldrb r0, [r5] + cmp r4, r0 + blt _0800D344 +_0800D356: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800D35C: .4byte gUnknown_2022B4C +_0800D360: .4byte gUnknown_2023BCC + thumb_func_end sub_800D30C + + thumb_func_start sub_800D364 +sub_800D364: @ 800D364 + push {r4,lr} + ldr r0, _0800D398 @ =gUnknown_2022B4C + ldr r2, [r0] + movs r4, 0x1 + adds r3, r2, 0 + ands r3, r4 + cmp r3, 0 + bne _0800D414 + ldr r1, _0800D39C @ =gUnknown_3004F84 + ldr r0, _0800D3A0 @ =sub_80123C0 + str r0, [r1] + movs r0, 0x80 + lsls r0, 9 + ands r0, r2 + cmp r0, 0 + beq _0800D3B4 + ldr r2, _0800D3A4 @ =gUnknown_3004FE0 + ldr r1, _0800D3A8 @ =sub_81560A4 + str r1, [r2] + ldr r0, _0800D3AC @ =gUnknown_2023BD6 + strb r3, [r0] + str r1, [r2, 0x4] + strb r4, [r0, 0x1] + ldr r1, _0800D3B0 @ =gUnknown_2023BCC + movs r0, 0x2 + b _0800D478 + .align 2, 0 +_0800D398: .4byte gUnknown_2022B4C +_0800D39C: .4byte gUnknown_3004F84 +_0800D3A0: .4byte sub_80123C0 +_0800D3A4: .4byte gUnknown_3004FE0 +_0800D3A8: .4byte sub_81560A4 +_0800D3AC: .4byte gUnknown_2023BD6 +_0800D3B0: .4byte gUnknown_2023BCC +_0800D3B4: + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _0800D3CC + ldr r1, _0800D3C4 @ =gUnknown_3004FE0 + ldr r0, _0800D3C8 @ =sub_80DD538 + b _0800D3E8 + .align 2, 0 +_0800D3C4: .4byte gUnknown_3004FE0 +_0800D3C8: .4byte sub_80DD538 +_0800D3CC: + movs r0, 0x84 + lsls r0, 2 + ands r2, r0 + cmp r2, 0 + beq _0800D3E4 + ldr r1, _0800D3DC @ =gUnknown_3004FE0 + ldr r0, _0800D3E0 @ =sub_80E75B0 + b _0800D3E8 + .align 2, 0 +_0800D3DC: .4byte gUnknown_3004FE0 +_0800D3E0: .4byte sub_80E75B0 +_0800D3E4: + ldr r1, _0800D400 @ =gUnknown_3004FE0 + ldr r0, _0800D404 @ =sub_802E314 +_0800D3E8: + str r0, [r1] + adds r2, r1, 0 + ldr r1, _0800D408 @ =gUnknown_2023BD6 + movs r0, 0 + strb r0, [r1] + ldr r0, _0800D40C @ =sub_8035A7C + str r0, [r2, 0x4] + movs r0, 0x1 + strb r0, [r1, 0x1] + ldr r1, _0800D410 @ =gUnknown_2023BCC + movs r0, 0x2 + b _0800D478 + .align 2, 0 +_0800D400: .4byte gUnknown_3004FE0 +_0800D404: .4byte sub_802E314 +_0800D408: .4byte gUnknown_2023BD6 +_0800D40C: .4byte sub_8035A7C +_0800D410: .4byte gUnknown_2023BCC +_0800D414: + ldr r1, _0800D444 @ =gUnknown_3004F84 + ldr r0, _0800D448 @ =sub_80123C0 + str r0, [r1] + movs r3, 0x80 + lsls r3, 9 + ands r3, r2 + cmp r3, 0 + beq _0800D458 + ldr r3, _0800D44C @ =gUnknown_3004FE0 + ldr r1, _0800D450 @ =sub_81560A4 + str r1, [r3] + ldr r2, _0800D454 @ =gUnknown_2023BD6 + movs r0, 0 + strb r0, [r2] + str r1, [r3, 0x4] + strb r4, [r2, 0x1] + str r1, [r3, 0x8] + movs r0, 0x2 + strb r0, [r2, 0x2] + str r1, [r3, 0xC] + movs r0, 0x3 + strb r0, [r2, 0x3] + b _0800D474 + .align 2, 0 +_0800D444: .4byte gUnknown_3004F84 +_0800D448: .4byte sub_80123C0 +_0800D44C: .4byte gUnknown_3004FE0 +_0800D450: .4byte sub_81560A4 +_0800D454: .4byte gUnknown_2023BD6 +_0800D458: + ldr r2, _0800D480 @ =gUnknown_3004FE0 + ldr r0, _0800D484 @ =sub_802E314 + str r0, [r2] + ldr r1, _0800D488 @ =gUnknown_2023BD6 + strb r3, [r1] + ldr r3, _0800D48C @ =sub_8035A7C + str r3, [r2, 0x4] + strb r4, [r1, 0x1] + str r0, [r2, 0x8] + movs r0, 0x2 + strb r0, [r1, 0x2] + str r3, [r2, 0xC] + movs r0, 0x3 + strb r0, [r1, 0x3] +_0800D474: + ldr r1, _0800D490 @ =gUnknown_2023BCC + movs r0, 0x4 +_0800D478: + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800D480: .4byte gUnknown_3004FE0 +_0800D484: .4byte sub_802E314 +_0800D488: .4byte gUnknown_2023BD6 +_0800D48C: .4byte sub_8035A7C +_0800D490: .4byte gUnknown_2023BCC + thumb_func_end sub_800D364 + + thumb_func_start sub_800D494 +sub_800D494: @ 800D494 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0800D4D0 @ =gUnknown_2022B4C + ldr r0, [r4] + movs r5, 0x1 + adds r3, r0, 0 + ands r3, r5 + cmp r3, 0 + bne _0800D51C + movs r4, 0x4 + ands r4, r0 + cmp r4, 0 + beq _0800D4F0 + ldr r1, _0800D4D4 @ =gUnknown_3004F84 + ldr r0, _0800D4D8 @ =sub_80123C0 + str r0, [r1] + ldr r2, _0800D4DC @ =gUnknown_3004FE0 + ldr r0, _0800D4E0 @ =sub_802E314 + str r0, [r2] + ldr r1, _0800D4E4 @ =gUnknown_2023BD6 + strb r3, [r1] + ldr r0, _0800D4E8 @ =sub_803A668 + str r0, [r2, 0x4] + strb r5, [r1, 0x1] + ldr r1, _0800D4EC @ =gUnknown_2023BCC + movs r0, 0x2 + b _0800D752 + .align 2, 0 +_0800D4D0: .4byte gUnknown_2022B4C +_0800D4D4: .4byte gUnknown_3004F84 +_0800D4D8: .4byte sub_80123C0 +_0800D4DC: .4byte gUnknown_3004FE0 +_0800D4E0: .4byte sub_802E314 +_0800D4E4: .4byte gUnknown_2023BD6 +_0800D4E8: .4byte sub_803A668 +_0800D4EC: .4byte gUnknown_2023BCC +_0800D4F0: + ldr r2, _0800D508 @ =gUnknown_3004FE0 + ldr r0, _0800D50C @ =sub_802E314 + str r0, [r2, 0x4] + ldr r1, _0800D510 @ =gUnknown_2023BD6 + strb r4, [r1, 0x1] + ldr r0, _0800D514 @ =sub_803A668 + str r0, [r2] + strb r5, [r1] + ldr r1, _0800D518 @ =gUnknown_2023BCC + movs r0, 0x2 + b _0800D752 + .align 2, 0 +_0800D508: .4byte gUnknown_3004FE0 +_0800D50C: .4byte sub_802E314 +_0800D510: .4byte gUnknown_2023BD6 +_0800D514: .4byte sub_803A668 +_0800D518: .4byte gUnknown_2023BCC +_0800D51C: + movs r5, 0x41 + ands r5, r0 + cmp r5, 0x1 + bne _0800D5A4 + movs r6, 0x4 + adds r3, r6, 0 + ands r3, r0 + cmp r3, 0 + beq _0800D56C + ldr r1, _0800D554 @ =gUnknown_3004F84 + ldr r0, _0800D558 @ =sub_80123C0 + str r0, [r1] + ldr r2, _0800D55C @ =gUnknown_3004FE0 + ldr r4, _0800D560 @ =sub_802E314 + str r4, [r2] + ldr r1, _0800D564 @ =gUnknown_2023BD6 + movs r0, 0 + strb r0, [r1] + ldr r3, _0800D568 @ =sub_803A668 + str r3, [r2, 0x4] + strb r5, [r1, 0x1] + str r4, [r2, 0x8] + movs r0, 0x2 + strb r0, [r1, 0x2] + str r3, [r2, 0xC] + movs r0, 0x3 + strb r0, [r1, 0x3] + b _0800D588 + .align 2, 0 +_0800D554: .4byte gUnknown_3004F84 +_0800D558: .4byte sub_80123C0 +_0800D55C: .4byte gUnknown_3004FE0 +_0800D560: .4byte sub_802E314 +_0800D564: .4byte gUnknown_2023BD6 +_0800D568: .4byte sub_803A668 +_0800D56C: + ldr r2, _0800D590 @ =gUnknown_3004FE0 + ldr r0, _0800D594 @ =sub_802E314 + str r0, [r2, 0x4] + ldr r1, _0800D598 @ =gUnknown_2023BD6 + strb r3, [r1, 0x1] + ldr r3, _0800D59C @ =sub_803A668 + str r3, [r2] + strb r5, [r1] + str r0, [r2, 0xC] + movs r0, 0x2 + strb r0, [r1, 0x3] + str r3, [r2, 0x8] + movs r0, 0x3 + strb r0, [r1, 0x2] +_0800D588: + ldr r0, _0800D5A0 @ =gUnknown_2023BCC + strb r6, [r0] + b _0800D754 + .align 2, 0 +_0800D590: .4byte gUnknown_3004FE0 +_0800D594: .4byte sub_802E314 +_0800D598: .4byte gUnknown_2023BD6 +_0800D59C: .4byte sub_803A668 +_0800D5A0: .4byte gUnknown_2023BCC +_0800D5A4: + bl sub_800A404 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [r4] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0800D5BC + ldr r1, _0800D5E4 @ =gUnknown_3004F84 + ldr r0, _0800D5E8 @ =sub_80123C0 + str r0, [r1] +_0800D5BC: + movs r0, 0 + mov r10, r0 + ldr r1, _0800D5EC @ =gUnknown_202273C + mov r12, r1 + ldr r7, _0800D5F0 @ =gUnknown_2023BD6 + mov r8, r0 + ldr r6, _0800D5F4 @ =gUnknown_2023BCE + movs r4, 0 + movs r2, 0x3 + mov r9, r2 +_0800D5D0: + mov r1, r12 + adds r0, r4, r1 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bgt _0800D5F8 + cmp r0, 0x1 + bge _0800D610 + cmp r0, 0 + beq _0800D5FC + b _0800D61A + .align 2, 0 +_0800D5E4: .4byte gUnknown_3004F84 +_0800D5E8: .4byte sub_80123C0 +_0800D5EC: .4byte gUnknown_202273C +_0800D5F0: .4byte gUnknown_2023BD6 +_0800D5F4: .4byte gUnknown_2023BCE +_0800D5F8: + cmp r0, 0x3 + bne _0800D61A +_0800D5FC: + ldr r0, _0800D60C @ =gUnknown_202273C + adds r0, r4, r0 + ldrb r0, [r0, 0x18] + movs r1, 0 + bl sub_8127DA8 + b _0800D61A + .align 2, 0 +_0800D60C: .4byte gUnknown_202273C +_0800D610: + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_8127DA8 +_0800D61A: + cmp r10, r5 + bne _0800D66A + ldr r0, _0800D640 @ =gUnknown_202273C + adds r3, r4, r0 + ldrh r1, [r3, 0x18] + lsls r1, 2 + ldr r2, _0800D644 @ =gUnknown_3004FE0 + adds r1, r2 + ldr r2, _0800D648 @ =sub_802E314 + str r2, [r1] + ldrh r1, [r3, 0x18] + mov r12, r0 + cmp r1, 0x2 + bgt _0800D64C + cmp r1, 0x1 + bge _0800D660 + cmp r1, 0 + beq _0800D650 + b _0800D740 + .align 2, 0 +_0800D640: .4byte gUnknown_202273C +_0800D644: .4byte gUnknown_3004FE0 +_0800D648: .4byte sub_802E314 +_0800D64C: + cmp r1, 0x3 + bne _0800D740 +_0800D650: + mov r1, r12 + adds r0, r4, r1 + ldrh r1, [r0, 0x18] + adds r1, r7 + mov r2, r8 + strb r2, [r1] + ldrh r0, [r0, 0x18] + b _0800D726 +_0800D660: + adds r1, r7 + movs r0, 0x2 + strb r0, [r1] + ldrh r0, [r3, 0x18] + b _0800D738 +_0800D66A: + ldr r2, _0800D690 @ =gUnknown_202273C + adds r0, r4, r2 + ldrh r1, [r0, 0x18] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + mov r12, r2 + cmp r0, 0 + bne _0800D694 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r12 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0800D6A6 + b _0800D6EC + .align 2, 0 +_0800D690: .4byte gUnknown_202273C +_0800D694: + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r12 + ldrh r1, [r0, 0x18] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0800D6EC +_0800D6A6: + mov r0, r12 + adds r2, r4, r0 + ldrh r0, [r2, 0x18] + lsls r0, 2 + ldr r1, _0800D6C8 @ =gUnknown_3004FE0 + adds r0, r1 + ldr r1, _0800D6CC @ =sub_80D4204 + str r1, [r0] + ldrh r1, [r2, 0x18] + cmp r1, 0x2 + bgt _0800D6D0 + cmp r1, 0x1 + bge _0800D6E4 + cmp r1, 0 + beq _0800D6D4 + b _0800D740 + .align 2, 0 +_0800D6C8: .4byte gUnknown_3004FE0 +_0800D6CC: .4byte sub_80D4204 +_0800D6D0: + cmp r1, 0x3 + bne _0800D740 +_0800D6D4: + mov r2, r12 + adds r0, r4, r2 + ldrh r1, [r0, 0x18] + adds r1, r7 + mov r2, r8 + strb r2, [r1] + ldrh r0, [r0, 0x18] + b _0800D726 +_0800D6E4: + adds r1, r7 + movs r0, 0x2 + strb r0, [r1] + b _0800D736 +_0800D6EC: + mov r0, r12 + adds r2, r4, r0 + ldrh r0, [r2, 0x18] + lsls r0, 2 + ldr r1, _0800D70C @ =gUnknown_3004FE0 + adds r0, r1 + ldr r1, _0800D710 @ =sub_803A668 + str r1, [r0] + ldrh r0, [r2, 0x18] + cmp r0, 0x2 + bgt _0800D714 + cmp r0, 0x1 + bge _0800D730 + cmp r0, 0 + beq _0800D718 + b _0800D740 + .align 2, 0 +_0800D70C: .4byte gUnknown_3004FE0 +_0800D710: .4byte sub_803A668 +_0800D714: + cmp r0, 0x3 + bne _0800D740 +_0800D718: + mov r0, r12 + adds r2, r4, r0 + ldrh r0, [r2, 0x18] + adds r0, r7 + movs r1, 0x1 + strb r1, [r0] + ldrh r0, [r2, 0x18] +_0800D726: + lsls r0, 1 + adds r0, r6 + mov r1, r8 + strh r1, [r0] + b _0800D740 +_0800D730: + adds r0, r7 + mov r1, r9 + strb r1, [r0] +_0800D736: + ldrh r0, [r2, 0x18] +_0800D738: + lsls r0, 1 + adds r0, r6 + mov r2, r9 + strh r2, [r0] +_0800D740: + adds r4, 0x1C + movs r0, 0x1 + add r10, r0 + mov r1, r10 + cmp r1, 0x3 + bgt _0800D74E + b _0800D5D0 +_0800D74E: + ldr r1, _0800D764 @ =gUnknown_2023BCC + movs r0, 0x4 +_0800D752: + strb r0, [r1] +_0800D754: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D764: .4byte gUnknown_2023BCC + thumb_func_end sub_800D494 + + thumb_func_start sub_800D768 +sub_800D768: @ 800D768 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _0800D788 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800D780 + b _0800D89C +_0800D780: + movs r0, 0 + mov r8, r0 + b _0800D892 + .align 2, 0 +_0800D788: .4byte gUnknown_2022B4C +_0800D78C: + movs r5, 0 + movs r0, 0x1 + add r0, r8 + mov r10, r0 + ldr r0, _0800D7B8 @ =gUnknown_2023BD6 + add r0, r8 + mov r9, r0 + mov r0, r8 + lsls r6, r0, 1 + movs r7, 0 +_0800D7A0: + mov r0, r8 + cmp r0, 0x1 + bgt _0800D808 + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0800D7C0 + ldr r0, _0800D7BC @ =gUnknown_2024284 + b _0800D7C2 + .align 2, 0 +_0800D7B8: .4byte gUnknown_2023BD6 +_0800D7BC: .4byte gUnknown_2024284 +_0800D7C0: + ldr r0, _0800D800 @ =gUnknown_202402C +_0800D7C2: + adds r4, r7, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0800D888 + ldr r0, _0800D804 @ =gUnknown_2023BCE + adds r0, r6, r0 + strh r5, [r0] + b _0800D890 + .align 2, 0 +_0800D800: .4byte gUnknown_202402C +_0800D804: .4byte gUnknown_2023BCE +_0800D808: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0800D830 + ldr r0, _0800D82C @ =gUnknown_2024284 + adds r4, r7, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0xB + b _0800D844 + .align 2, 0 +_0800D82C: .4byte gUnknown_2024284 +_0800D830: + ldr r0, _0800D880 @ =gUnknown_202402C + adds r4, r7, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0x41 +_0800D844: + bl sub_803FBE8 + cmp r0, 0 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0800D888 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0800D888 + ldr r1, _0800D884 @ =gUnknown_2023BCE + mov r0, r8 + subs r0, 0x2 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r5 + beq _0800D888 + adds r0, r6, r1 + strh r5, [r0] + b _0800D890 + .align 2, 0 +_0800D880: .4byte gUnknown_202402C +_0800D884: .4byte gUnknown_2023BCE +_0800D888: + adds r7, 0x64 + adds r5, 0x1 + cmp r5, 0x5 + ble _0800D7A0 +_0800D890: + mov r8, r10 +_0800D892: + ldr r0, _0800D8AC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r8, r0 + bge _0800D89C + b _0800D78C +_0800D89C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D8AC: .4byte gUnknown_2023BCC + thumb_func_end sub_800D768 + + thumb_func_start sub_800D8B0 +sub_800D8B0: @ 800D8B0 + push {r4-r6,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r3, r0, 24 + adds r5, r3, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _0800D8D8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0800D8DC + adds r0, r3, 0 + adds r1, r2, 0 + adds r2, r4, 0 + bl sub_800D9EC + b _0800D92E + .align 2, 0 +_0800D8D8: .4byte gUnknown_2022B4C +_0800D8DC: + cmp r5, 0 + beq _0800D8E6 + cmp r5, 0x1 + beq _0800D910 + b _0800D92E +_0800D8E6: + movs r3, 0 + cmp r3, r2 + bge _0800D92E + ldr r6, _0800D908 @ =gUnknown_2022BC4 + ldr r5, _0800D90C @ =gUnknown_2023BC4 +_0800D8F0: + ldrb r0, [r5] + lsls r0, 9 + adds r0, r3, r0 + adds r0, r6 + ldrb r1, [r4] + strb r1, [r0] + adds r4, 0x1 + adds r3, 0x1 + cmp r3, r2 + blt _0800D8F0 + b _0800D92E + .align 2, 0 +_0800D908: .4byte gUnknown_2022BC4 +_0800D90C: .4byte gUnknown_2023BC4 +_0800D910: + movs r3, 0 + cmp r3, r2 + bge _0800D92E + ldr r6, _0800D934 @ =gUnknown_20233C4 + ldr r5, _0800D938 @ =gUnknown_2023BC4 +_0800D91A: + ldrb r0, [r5] + lsls r0, 9 + adds r0, r3, r0 + adds r0, r6 + ldrb r1, [r4] + strb r1, [r0] + adds r4, 0x1 + adds r3, 0x1 + cmp r3, r2 + blt _0800D91A +_0800D92E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800D934: .4byte gUnknown_20233C4 +_0800D938: .4byte gUnknown_2023BC4 + thumb_func_end sub_800D8B0 + + thumb_func_start sub_800D93C +sub_800D93C: @ 800D93C + push {r4-r6,lr} + ldr r0, _0800D9D4 @ =sub_800DB6C + movs r1, 0 + bl sub_807741C + ldr r2, _0800D9D8 @ =gUnknown_202286C + strb r0, [r2] + ldr r5, _0800D9DC @ =gUnknown_3005090 + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r6, 0 + movs r4, 0 + strh r4, [r0, 0x1E] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x20] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x22] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x24] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x26] + ldr r0, _0800D9E0 @ =sub_800DE4C + movs r1, 0 + bl sub_807741C + ldr r2, _0800D9E4 @ =gUnknown_202286D + strb r0, [r2] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x20] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x22] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x24] + ldrb r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r4, [r0, 0x26] + ldr r0, _0800D9E8 @ =gUnknown_202286E + strb r6, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800D9D4: .4byte sub_800DB6C +_0800D9D8: .4byte gUnknown_202286C +_0800D9DC: .4byte gUnknown_3005090 +_0800D9E0: .4byte sub_800DE4C +_0800D9E4: .4byte gUnknown_202286D +_0800D9E8: .4byte gUnknown_202286E + thumb_func_end sub_800D93C + + thumb_func_start sub_800D9EC +sub_800D9EC: @ 800D9EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r2 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r1, 16 + mov r12, r1 + movs r1, 0x3 + mov r0, r12 + bics r0, r1 + adds r0, 0x4 + mov r8, r0 + ldr r2, _0800DB4C @ =gUnknown_3005090 + ldr r3, _0800DB50 @ =gUnknown_202286C + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r4, r0, r2 + movs r1, 0x24 + ldrsh r0, [r4, r1] + add r0, r8 + adds r0, 0x9 + movs r1, 0x80 + lsls r1, 5 + adds r5, r2, 0 + cmp r0, r1 + ble _0800DA3E + ldrh r0, [r4, 0x24] + movs r2, 0 + strh r0, [r4, 0x20] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + strh r2, [r0, 0x24] +_0800DA3E: + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r2, 0x24 + ldrsh r1, [r0, r2] + ldr r4, _0800DB54 @ =gUnknown_2023FEC + ldr r0, [r4] + adds r0, r1 + strb r6, [r0] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r7, 0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r0 + ldr r0, _0800DB58 @ =gUnknown_2023BC4 + ldrb r0, [r0] + strb r0, [r1, 0x1] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r2, 0x24 + ldrsh r1, [r0, r2] + ldr r0, [r4] + adds r1, r0 + ldr r0, _0800DB5C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r1, 0x2] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r7, 0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r0 + ldr r0, _0800DB60 @ =gUnknown_2023D6C + ldrb r0, [r0] + strb r0, [r1, 0x3] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r1, 0x24 + ldrsh r0, [r0, r1] + ldr r1, [r4] + adds r0, r1 + mov r2, r8 + strb r2, [r0, 0x4] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r7, 0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r0 + movs r0, 0xFF + lsls r0, 8 + mov r2, r8 + ands r0, r2 + asrs r0, 8 + strb r0, [r1, 0x5] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r7, 0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r0 + ldr r0, _0800DB64 @ =gUnknown_2023D70 + ldrb r0, [r0] + strb r0, [r1, 0x6] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r2, 0x24 + ldrsh r1, [r0, r2] + ldr r0, [r4] + adds r1, r0 + ldr r0, _0800DB68 @ =gUnknown_2023D6E + ldrb r0, [r0] + strb r0, [r1, 0x7] + movs r2, 0 + cmp r2, r12 + bge _0800DB2C + mov r10, r5 + adds r6, r3, 0 +_0800DB0A: + ldrb r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r10 + movs r7, 0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r2, r1 + adds r1, r0 + mov r7, r9 + adds r0, r7, r2 + ldrb r0, [r0] + strb r0, [r1, 0x8] + adds r2, 0x1 + cmp r2, r12 + blt _0800DB0A +_0800DB2C: + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldrh r0, [r1, 0x24] + add r0, r8 + adds r0, 0x8 + strh r0, [r1, 0x24] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800DB4C: .4byte gUnknown_3005090 +_0800DB50: .4byte gUnknown_202286C +_0800DB54: .4byte gUnknown_2023FEC +_0800DB58: .4byte gUnknown_2023BC4 +_0800DB5C: .4byte gUnknown_2023D6B +_0800DB60: .4byte gUnknown_2023D6C +_0800DB64: .4byte gUnknown_2023D70 +_0800DB68: .4byte gUnknown_2023D6E + thumb_func_end sub_800D9EC + + thumb_func_start sub_800DB6C +sub_800DB6C: @ 800DB6C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0800DB94 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x1E + ldrsh r0, [r0, r2] + adds r7, r1, 0 + cmp r0, 0x5 + bls _0800DB88 + b _0800DD20 +_0800DB88: + lsls r0, 2 + ldr r1, _0800DB98 @ =_0800DB9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800DB94: .4byte gUnknown_3005090 +_0800DB98: .4byte _0800DB9C + .align 2, 0 +_0800DB9C: + .4byte _0800DBB4 + .4byte _0800DBC8 + .4byte _0800DBF4 + .4byte _0800DC50 + .4byte _0800DCC6 + .4byte _0800DD04 +_0800DBB4: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r7 + movs r1, 0x64 + strh r1, [r0, 0x1C] + ldrh r1, [r0, 0x1E] + adds r1, 0x1 + strh r1, [r0, 0x1E] + b _0800DD20 +_0800DBC8: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r7 + ldrh r0, [r1, 0x1C] + subs r0, 0x1 + strh r0, [r1, 0x1C] + lsls r0, 16 + cmp r0, 0 + beq _0800DBDE + b _0800DD20 +_0800DBDE: + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + ldr r0, _0800DBF0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0800DBEE + b _0800DD20 +_0800DBEE: + b _0800DD1C + .align 2, 0 +_0800DBF0: .4byte gUnknown_3003F64 +_0800DBF4: + bl sub_800AA38 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0800DC10 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800DC14 + cmp r2, 0x3 + bgt _0800DC1A + b _0800DD20 + .align 2, 0 +_0800DC10: .4byte gUnknown_2022B4C +_0800DC14: + cmp r2, 0x1 + bgt _0800DC1A + b _0800DD20 +_0800DC1A: + bl sub_800AA48 + lsls r0, 24 + cmp r0, 0 + beq _0800DC3C + bl sub_800A5BC + ldr r0, _0800DC38 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + b _0800DD1E + .align 2, 0 +_0800DC38: .4byte gUnknown_3005090 +_0800DC3C: + ldr r0, _0800DC4C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + b _0800DD1E + .align 2, 0 +_0800DC4C: .4byte gUnknown_3005090 +_0800DC50: + lsls r1, r4, 2 + adds r0, r1, r4 + lsls r0, 3 + adds r2, r0, r7 + movs r3, 0x26 + ldrsh r5, [r2, r3] + movs r0, 0x24 + ldrsh r6, [r2, r0] + mov r12, r6 + cmp r5, r12 + beq _0800DD20 + ldrh r0, [r2, 0x22] + movs r6, 0x22 + ldrsh r3, [r2, r6] + cmp r3, 0 + bne _0800DCC0 + cmp r5, r12 + ble _0800DC80 + movs r6, 0x20 + ldrsh r0, [r2, r6] + cmp r5, r0 + bne _0800DC80 + strh r3, [r2, 0x20] + strh r3, [r2, 0x26] +_0800DC80: + adds r4, r1, r4 + lsls r4, 3 + adds r4, r7 + movs r0, 0x26 + ldrsh r1, [r4, r0] + ldr r5, _0800DCBC @ =gUnknown_2023FEC + ldr r0, [r5] + adds r1, r0 + ldrb r0, [r1, 0x4] + ldrb r1, [r1, 0x5] + lsls r1, 8 + orrs r0, r1 + adds r0, 0x8 + lsls r0, 16 + lsrs r6, r0, 16 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x26 + ldrsh r2, [r4, r1] + ldr r1, [r5] + adds r1, r2 + adds r2, r6, 0 + bl sub_800A448 + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + b _0800DD20 + .align 2, 0 +_0800DCBC: .4byte gUnknown_2023FEC +_0800DCC0: + subs r0, 0x1 + strh r0, [r2, 0x22] + b _0800DD20 +_0800DCC6: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0800DD20 + ldr r0, _0800DCFC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r3, 0x26 + ldrsh r2, [r1, r3] + ldr r0, _0800DD00 @ =gUnknown_2023FEC + ldr r0, [r0] + adds r2, r0 + ldrb r0, [r2, 0x4] + ldrb r2, [r2, 0x5] + lsls r2, 8 + movs r3, 0x5 + strh r3, [r1, 0x22] + orrs r0, r2 + ldrh r6, [r1, 0x26] + adds r0, r6 + adds r0, 0x8 + strh r0, [r1, 0x26] + b _0800DD1C + .align 2, 0 +_0800DCFC: .4byte gUnknown_3005090 +_0800DD00: .4byte gUnknown_2023FEC +_0800DD04: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r7 + ldrh r0, [r1, 0x22] + subs r0, 0x1 + strh r0, [r1, 0x22] + lsls r0, 16 + cmp r0, 0 + bne _0800DD20 + movs r0, 0x5 + strh r0, [r1, 0x22] +_0800DD1C: + movs r0, 0x3 +_0800DD1E: + strh r0, [r1, 0x1E] +_0800DD20: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800DB6C + + thumb_func_start sub_800DD28 +sub_800DD28: @ 800DD28 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _0800DD5C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _0800DE28 + ldr r0, _0800DD60 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0800DE28 + ldr r0, _0800DD64 @ =gUnknown_202273C + ldr r1, [r0, 0x14] + ldr r0, _0800DD68 @ =0x00002211 + cmp r1, r0 + bne _0800DE28 + bl sub_80FBB4C + movs r4, 0 + ldr r0, _0800DD6C @ =gUnknown_2022118 + mov r10, r0 + b _0800DE1C + .align 2, 0 +_0800DD5C: .4byte gUnknown_3003F64 +_0800DD60: .4byte gUnknown_2022B4C +_0800DD64: .4byte gUnknown_202273C +_0800DD68: .4byte 0x00002211 +_0800DD6C: .4byte gUnknown_2022118 +_0800DD70: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0800DE38 @ =gUnknown_825E45C + lsls r1, r4, 2 + adds r1, r2 + ldr r1, [r1] + ands r0, r1 + adds r1, r4, 0x1 + mov r9, r1 + cmp r0, 0 + beq _0800DE16 + adds r0, r4, 0 + bl sub_800A588 + lsls r0, r4, 8 + mov r4, r10 + adds r3, r0, r4 + ldr r1, _0800DE3C @ =gUnknown_202211C + adds r0, r1 + ldrh r6, [r0] + ldr r7, _0800DE40 @ =gUnknown_3005090 + ldr r4, _0800DE44 @ =gUnknown_202286D + mov r12, r4 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r2, r0, r7 + movs r0, 0x24 + ldrsh r1, [r2, r0] + adds r0, r6, 0 + adds r0, 0x9 + adds r1, r0 + movs r0, 0x80 + lsls r0, 5 + cmp r1, r0 + ble _0800DDD0 + ldrh r0, [r2, 0x24] + strh r0, [r2, 0x20] + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r7 + movs r1, 0 + strh r1, [r0, 0x24] +_0800DDD0: + ldr r2, _0800DE48 @ =gUnknown_2023FF0 + mov r4, r12 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r7 + movs r4, 0x24 + ldrsh r1, [r0, r4] + ldr r0, [r2] + adds r5, r0, r1 + adds r4, r3, 0 + movs r2, 0 + adds r3, r6, 0 + adds r3, 0x8 + mov r8, r7 + mov r7, r12 + cmp r2, r3 + bge _0800DE04 +_0800DDF6: + adds r0, r5, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r3 + blt _0800DDF6 +_0800DE04: + ldrb r0, [r7] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r8 + ldrh r0, [r1, 0x24] + adds r0, r6, r0 + adds r0, 0x8 + strh r0, [r1, 0x24] +_0800DE16: + mov r1, r9 + lsls r0, r1, 24 + lsrs r4, r0, 24 +_0800DE1C: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bcc _0800DD70 +_0800DE28: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800DE38: .4byte gUnknown_825E45C +_0800DE3C: .4byte gUnknown_202211C +_0800DE40: .4byte gUnknown_3005090 +_0800DE44: .4byte gUnknown_202286D +_0800DE48: .4byte gUnknown_2023FF0 + thumb_func_end sub_800DD28 + + thumb_func_start sub_800DE4C +sub_800DE4C: @ 800DE4C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _0800DEB4 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r3, r0, r1 + movs r0, 0x26 + ldrsh r2, [r3, r0] + movs r4, 0x24 + ldrsh r0, [r3, r4] + cmp r2, r0 + bne _0800DE70 + b _0800DF8C +_0800DE70: + cmp r2, r0 + ble _0800DE82 + movs r4, 0x20 + ldrsh r0, [r3, r4] + cmp r2, r0 + bne _0800DE82 + movs r0, 0 + strh r0, [r3, 0x20] + strh r0, [r3, 0x26] +_0800DE82: + lsls r2, r7, 2 + adds r0, r2, r7 + lsls r0, 3 + adds r5, r0, r1 + movs r0, 0x26 + ldrsh r1, [r5, r0] + ldr r3, _0800DEB8 @ =gUnknown_2023FF0 + mov r8, r3 + ldr r0, [r3] + adds r3, r1, r0 + ldrb r4, [r3, 0x1] + ldrb r6, [r3, 0x4] + ldrb r0, [r3, 0x5] + lsls r0, 8 + orrs r6, r0 + ldrb r0, [r3] + mov r9, r2 + cmp r0, 0x1 + beq _0800DF4C + cmp r0, 0x1 + bgt _0800DEBC + cmp r0, 0 + beq _0800DEC2 + b _0800DF7A + .align 2, 0 +_0800DEB4: .4byte gUnknown_3005090 +_0800DEB8: .4byte gUnknown_2023FF0 +_0800DEBC: + cmp r0, 0x2 + beq _0800DF64 + b _0800DF7A +_0800DEC2: + ldr r2, _0800DF2C @ =gUnknown_2023BC8 + ldr r1, _0800DF30 @ =gUnknown_825E45C + lsls r0, r4, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0800DF8C + lsls r0, r4, 9 + ldr r1, _0800DF34 @ =gUnknown_2022BC4 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x8 + adds r2, r6, 0 + bl memcpy + adds r0, r4, 0 + bl sub_8017298 + ldr r0, _0800DF38 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0800DF7A + ldr r2, _0800DF3C @ =gUnknown_2023D6B + movs r4, 0x26 + ldrsh r0, [r5, r4] + mov r3, r8 + ldr r1, [r3] + adds r0, r1 + ldrb r0, [r0, 0x2] + strb r0, [r2] + ldr r2, _0800DF40 @ =gUnknown_2023D6C + movs r4, 0x26 + ldrsh r0, [r5, r4] + adds r0, r1 + ldrb r0, [r0, 0x3] + strb r0, [r2] + ldr r2, _0800DF44 @ =gUnknown_2023D70 + movs r3, 0x26 + ldrsh r0, [r5, r3] + adds r0, r1 + ldrb r0, [r0, 0x6] + strb r0, [r2] + ldr r2, _0800DF48 @ =gUnknown_2023D6E + movs r4, 0x26 + ldrsh r0, [r5, r4] + adds r0, r1 + ldrb r0, [r0, 0x7] + strb r0, [r2] + b _0800DF7A + .align 2, 0 +_0800DF2C: .4byte gUnknown_2023BC8 +_0800DF30: .4byte gUnknown_825E45C +_0800DF34: .4byte gUnknown_2022BC4 +_0800DF38: .4byte gUnknown_2022B4C +_0800DF3C: .4byte gUnknown_2023D6B +_0800DF40: .4byte gUnknown_2023D6C +_0800DF44: .4byte gUnknown_2023D70 +_0800DF48: .4byte gUnknown_2023D6E +_0800DF4C: + lsls r0, r4, 9 + ldr r1, _0800DF60 @ =gUnknown_20233C4 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x8 + adds r2, r6, 0 + bl memcpy + b _0800DF7A + .align 2, 0 +_0800DF60: .4byte gUnknown_20233C4 +_0800DF64: + ldrb r2, [r3, 0x8] + ldr r3, _0800DF98 @ =gUnknown_2023BC8 + ldr r1, _0800DF9C @ =gUnknown_825E45C + lsls r0, r4, 2 + adds r0, r1 + lsls r2, 2 + ldr r1, [r0] + lsls r1, r2 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] +_0800DF7A: + ldr r0, _0800DFA0 @ =gUnknown_3005090 + mov r2, r9 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, r6, r0 + adds r0, 0x8 + strh r0, [r1, 0x26] +_0800DF8C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800DF98: .4byte gUnknown_2023BC8 +_0800DF9C: .4byte gUnknown_825E45C +_0800DFA0: .4byte gUnknown_3005090 + thumb_func_end sub_800DE4C + + thumb_func_start sub_800DFA4 +sub_800DFA4: @ 800DFA4 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800DFC4 @ =gUnknown_2022874 + movs r3, 0 + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + strb r3, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800DFC4: .4byte gUnknown_2022874 + thumb_func_end sub_800DFA4 + + thumb_func_start sub_800DFC8 +sub_800DFC8: @ 800DFC8 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800DFEC @ =gUnknown_2022874 + movs r4, 0 + movs r3, 0x1 + strb r3, [r1] + strb r5, [r1, 0x1] + strb r2, [r1, 0x2] + strb r4, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800DFEC: .4byte gUnknown_2022874 + thumb_func_end sub_800DFC8 + + thumb_func_start sub_800DFF0 +sub_800DFF0: @ 800DFF0 + push {r4-r6,lr} + ldr r4, [sp, 0x10] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r3, 24 + lsrs r5, r3, 24 + ldr r0, _0800E02C @ =gUnknown_2022874 + movs r3, 0x2 + strb r3, [r0] + strb r1, [r0, 0x1] + strb r2, [r0, 0x2] + adds r1, r0, 0 + cmp r5, 0 + beq _0800E01E + adds r3, r1, 0x3 + adds r2, r5, 0 +_0800E010: + ldrb r0, [r4] + strb r0, [r3] + adds r4, 0x1 + adds r3, 0x1 + subs r2, 0x1 + cmp r2, 0 + bne _0800E010 +_0800E01E: + adds r2, r5, 0x3 + adds r0, r6, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E02C: .4byte gUnknown_2022874 + thumb_func_end sub_800DFF0 + + thumb_func_start sub_800E030 +sub_800E030: @ 800E030 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 24 + lsrs r4, r2, 24 + ldr r0, _0800E06C @ =gUnknown_2022874 + movs r2, 0x3 + strb r2, [r0] + strb r1, [r0, 0x1] + strb r4, [r0, 0x2] + adds r5, r0, 0 + cmp r4, 0 + beq _0800E05C + adds r1, r5, 0x3 + adds r2, r4, 0 +_0800E04E: + ldrb r0, [r3] + strb r0, [r1] + adds r3, 0x1 + adds r1, 0x1 + subs r2, 0x1 + cmp r2, 0 + bne _0800E04E +_0800E05C: + adds r2, r4, 0x3 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E06C: .4byte gUnknown_2022874 + thumb_func_end sub_800E030 + + thumb_func_start sub_800E070 +sub_800E070: @ 800E070 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E08C @ =gUnknown_2022874 + movs r2, 0x4 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E08C: .4byte gUnknown_2022874 + thumb_func_end sub_800E070 + + thumb_func_start sub_800E090 +sub_800E090: @ 800E090 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E0B0 @ =gUnknown_2022874 + movs r3, 0x5 + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + strb r3, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E0B0: .4byte gUnknown_2022874 + thumb_func_end sub_800E090 + + thumb_func_start sub_800E0B4 +sub_800E0B4: @ 800E0B4 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E0D0 @ =gUnknown_2022874 + movs r2, 0x6 + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E0D0: .4byte gUnknown_2022874 + thumb_func_end sub_800E0B4 + + thumb_func_start sub_800E0D4 +sub_800E0D4: @ 800E0D4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E0F0 @ =gUnknown_2022874 + movs r2, 0x7 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E0F0: .4byte gUnknown_2022874 + thumb_func_end sub_800E0D4 + + thumb_func_start sub_800E0F4 +sub_800E0F4: @ 800E0F4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E110 @ =gUnknown_2022874 + movs r2, 0x8 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E110: .4byte gUnknown_2022874 + thumb_func_end sub_800E0F4 + + thumb_func_start sub_800E114 +sub_800E114: @ 800E114 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E130 @ =gUnknown_2022874 + movs r2, 0x9 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E130: .4byte gUnknown_2022874 + thumb_func_end sub_800E114 + + thumb_func_start sub_800E134 +sub_800E134: @ 800E134 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E150 @ =gUnknown_2022874 + movs r2, 0xA + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E150: .4byte gUnknown_2022874 + thumb_func_end sub_800E134 + + thumb_func_start sub_800E154 +sub_800E154: @ 800E154 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E170 @ =gUnknown_2022874 + movs r2, 0xB + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E170: .4byte gUnknown_2022874 + thumb_func_end sub_800E154 + + thumb_func_start sub_800E174 +sub_800E174: @ 800E174 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E190 @ =gUnknown_2022874 + movs r2, 0xC + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E190: .4byte gUnknown_2022874 + thumb_func_end sub_800E174 + + thumb_func_start sub_800E194 +sub_800E194: @ 800E194 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E1B0 @ =gUnknown_2022874 + movs r2, 0xD + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E1B0: .4byte gUnknown_2022874 + thumb_func_end sub_800E194 + + thumb_func_start sub_800E1B4 +sub_800E1B4: @ 800E1B4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r1, _0800E1F8 @ =gUnknown_2022874 + movs r0, 0xE + strb r0, [r1] + strb r4, [r1, 0x1] + lsls r0, r4, 1 + adds r0, r4 + adds r5, r1, 0 + cmp r0, 0 + beq _0800E1E2 + adds r1, r5, 0x2 + adds r3, r0, 0 +_0800E1D4: + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r1, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _0800E1D4 +_0800E1E2: + lsls r2, r4, 1 + adds r2, r4 + adds r2, 0x2 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E1F8: .4byte gUnknown_2022874 + thumb_func_end sub_800E1B4 + + thumb_func_start sub_800E1FC +sub_800E1FC: @ 800E1FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + lsls r3, 16 + lsrs r3, 16 + ldr r7, _0800E290 @ =gUnknown_2022874 + movs r0, 0 + mov r12, r0 + movs r0, 0xF + strb r0, [r7] + strb r1, [r7, 0x1] + lsrs r1, 8 + strb r1, [r7, 0x2] + strb r2, [r7, 0x3] + strb r3, [r7, 0x4] + movs r6, 0xFF + lsls r6, 8 + lsrs r3, 8 + strb r3, [r7, 0x5] + strb r4, [r7, 0x6] + adds r0, r4, 0 + ands r0, r6 + asrs r0, 8 + strb r0, [r7, 0x7] + movs r0, 0xFF + lsls r0, 16 + ands r0, r4 + asrs r0, 16 + strb r0, [r7, 0x8] + lsrs r4, 24 + strb r4, [r7, 0x9] + strb r5, [r7, 0xA] + ldr r0, _0800E294 @ =gUnknown_2023D72 + ldrb r0, [r0] + strb r0, [r7, 0xB] + mov r0, r12 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0800E29C + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0800E29C + ldr r0, _0800E298 @ =gUnknown_2023F1C + ldrh r0, [r0] + strb r0, [r7, 0xC] + ands r6, r0 + lsrs r0, r6, 8 + strb r0, [r7, 0xD] + adds r4, r7, 0 + b _0800E2A6 + .align 2, 0 +_0800E290: .4byte gUnknown_2022874 +_0800E294: .4byte gUnknown_2023D72 +_0800E298: .4byte gUnknown_2023F1C +_0800E29C: + ldr r0, _0800E2D0 @ =gUnknown_2022874 + movs r1, 0 + strb r1, [r0, 0xC] + strb r1, [r0, 0xD] + adds r4, r0, 0 +_0800E2A6: + movs r0, 0 + strb r0, [r4, 0xE] + strb r0, [r4, 0xF] + adds r0, r4, 0 + adds r0, 0x10 + ldr r1, [sp, 0x24] + movs r2, 0x1C + bl memcpy + mov r0, r8 + adds r1, r4, 0 + movs r2, 0x2C + bl sub_800D8B0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E2D0: .4byte gUnknown_2022874 + thumb_func_end sub_800E1FC + + thumb_func_start sub_800E2D4 +sub_800E2D4: @ 800E2D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _0800E3B4 @ =gUnknown_2022874 + movs r0, 0x10 + strb r0, [r2] + ldr r0, _0800E3B8 @ =gUnknown_2023E8A + ldrb r0, [r0] + strb r0, [r2, 0x1] + strb r1, [r2, 0x2] + lsrs r1, 8 + strb r1, [r2, 0x3] + adds r0, r2, 0x4 + mov r12, r0 + ldr r4, _0800E3BC @ =gUnknown_2023D4A + ldrh r0, [r4] + strh r0, [r2, 0x4] + ldr r0, _0800E3C0 @ =gUnknown_2023D4C + ldrh r0, [r0] + mov r1, r12 + strh r0, [r1, 0x2] + ldr r0, _0800E3C4 @ =gUnknown_2023D68 + ldrh r0, [r0] + strh r0, [r1, 0x4] + ldr r0, _0800E3C8 @ =gUnknown_2023D6A + ldrb r0, [r0] + strb r0, [r1, 0x6] + ldr r0, _0800E3CC @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + strb r0, [r1, 0x7] + ldr r0, _0800E3D0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x52 + ldrb r1, [r1] + mov r3, r12 + strb r1, [r3, 0x8] + adds r0, 0xAD + ldrb r0, [r0] + strb r0, [r3, 0x9] + ldr r0, _0800E3D4 @ =gUnknown_2023D6F + ldrb r0, [r0] + strb r0, [r3, 0xA] + ldr r3, _0800E3D8 @ =gUnknown_8250C04 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x2] + mov r7, r12 + strb r0, [r7, 0xB] + movs r3, 0 + mov r9, r2 + ldr r0, _0800E3DC @ =gUnknown_2022AD8 + mov r8, r0 + adds r2, 0x10 + ldr r0, _0800E3E0 @ =gUnknown_2023BE4 + adds r4, r0, 0 + adds r4, 0x20 +_0800E35A: + adds r1, r2, r3 + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x58 + adds r3, 0x1 + cmp r3, 0x3 + ble _0800E35A + movs r3, 0 + mov r5, r12 + adds r5, 0x10 + mov r4, r12 + adds r4, 0x20 + ldr r6, _0800E3E4 @ =gUnknown_2022AC8 + mov r2, r12 + adds r2, 0x30 +_0800E378: + adds r1, r5, r3 + ldr r7, _0800E3E8 @ =gUnknown_2022AB8 + adds r0, r3, r7 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r4, r3 + adds r0, r3, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r3 + mov r7, r8 + adds r0, r3, r7 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x1 + cmp r3, 0xF + ble _0800E378 + mov r0, r10 + mov r1, r9 + movs r2, 0x44 + bl sub_800D8B0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E3B4: .4byte gUnknown_2022874 +_0800E3B8: .4byte gUnknown_2023E8A +_0800E3BC: .4byte gUnknown_2023D4A +_0800E3C0: .4byte gUnknown_2023D4C +_0800E3C4: .4byte gUnknown_2023D68 +_0800E3C8: .4byte gUnknown_2023D6A +_0800E3CC: .4byte gUnknown_2023FC4 +_0800E3D0: .4byte gUnknown_2023FE8 +_0800E3D4: .4byte gUnknown_2023D6F +_0800E3D8: .4byte gUnknown_8250C04 +_0800E3DC: .4byte gUnknown_2022AD8 +_0800E3E0: .4byte gUnknown_2023BE4 +_0800E3E4: .4byte gUnknown_2022AC8 +_0800E3E8: .4byte gUnknown_2022AB8 + thumb_func_end sub_800E2D4 + + thumb_func_start sub_800E3EC +sub_800E3EC: @ 800E3EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _0800E4A8 @ =gUnknown_2022874 + movs r0, 0x11 + strb r0, [r2] + strb r0, [r2, 0x1] + strb r1, [r2, 0x2] + lsrs r1, 8 + strb r1, [r2, 0x3] + adds r0, r2, 0x4 + mov r12, r0 + ldr r0, _0800E4AC @ =gUnknown_2023D4A + ldrh r0, [r0] + strh r0, [r2, 0x4] + ldr r0, _0800E4B0 @ =gUnknown_2023D4C + ldrh r0, [r0] + mov r1, r12 + strh r0, [r1, 0x2] + ldr r0, _0800E4B4 @ =gUnknown_2023D68 + ldrh r0, [r0] + strh r0, [r1, 0x4] + ldr r0, _0800E4B8 @ =gUnknown_2023D6A + ldrb r0, [r0] + strb r0, [r1, 0x6] + ldr r0, _0800E4BC @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + strb r0, [r1, 0x7] + ldr r0, _0800E4C0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x52 + ldrb r0, [r0] + strb r0, [r1, 0x8] + movs r3, 0 + mov r9, r2 + ldr r7, _0800E4C4 @ =gUnknown_2022AD8 + mov r8, r7 + mov r4, r9 + adds r4, 0x10 + ldr r0, _0800E4C8 @ =gUnknown_2023BE4 + adds r2, r0, 0 + adds r2, 0x20 +_0800E44E: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x58 + adds r3, 0x1 + cmp r3, 0x3 + ble _0800E44E + movs r3, 0 + mov r5, r12 + adds r5, 0x10 + mov r4, r12 + adds r4, 0x20 + ldr r6, _0800E4CC @ =gUnknown_2022AC8 + mov r2, r12 + adds r2, 0x30 +_0800E46C: + adds r1, r5, r3 + ldr r7, _0800E4D0 @ =gUnknown_2022AB8 + adds r0, r3, r7 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r4, r3 + adds r0, r3, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r3 + mov r7, r8 + adds r0, r3, r7 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x1 + cmp r3, 0xF + ble _0800E46C + mov r0, r10 + mov r1, r9 + movs r2, 0x44 + bl sub_800D8B0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E4A8: .4byte gUnknown_2022874 +_0800E4AC: .4byte gUnknown_2023D4A +_0800E4B0: .4byte gUnknown_2023D4C +_0800E4B4: .4byte gUnknown_2023D68 +_0800E4B8: .4byte gUnknown_2023D6A +_0800E4BC: .4byte gUnknown_2023FC4 +_0800E4C0: .4byte gUnknown_2023FE8 +_0800E4C4: .4byte gUnknown_2022AD8 +_0800E4C8: .4byte gUnknown_2023BE4 +_0800E4CC: .4byte gUnknown_2022AC8 +_0800E4D0: .4byte gUnknown_2022AB8 + thumb_func_end sub_800E3EC + + thumb_func_start sub_800E4D4 +sub_800E4D4: @ 800E4D4 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r1, _0800E4FC @ =gUnknown_2022874 + movs r3, 0x12 + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + lsrs r2, 8 + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E4FC: .4byte gUnknown_2022874 + thumb_func_end sub_800E4D4 + + thumb_func_start sub_800E500 +sub_800E500: @ 800E500 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E51C @ =gUnknown_2022874 + movs r2, 0x13 + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E51C: .4byte gUnknown_2022874 + thumb_func_end sub_800E500 + + thumb_func_start sub_800E520 +sub_800E520: @ 800E520 + push {r4-r6,lr} + adds r5, r3, 0 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, _0800E558 @ =gUnknown_2022874 + movs r4, 0 + movs r0, 0x14 + strb r0, [r3] + strb r1, [r3, 0x1] + strb r2, [r3, 0x2] + strb r4, [r3, 0x3] + movs r2, 0 + adds r1, r3, 0 + adds r4, r1, 0x4 +_0800E53C: + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r4] + adds r4, 0x1 + adds r2, 0x1 + cmp r2, 0x13 + bls _0800E53C + adds r0, r6, 0 + movs r2, 0x18 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E558: .4byte gUnknown_2022874 + thumb_func_end sub_800E520 + + thumb_func_start sub_800E55C +sub_800E55C: @ 800E55C + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0800E58C @ =gUnknown_2022874 + movs r0, 0x15 + strb r0, [r1] + movs r2, 0 + adds r3, r1, 0x1 +_0800E56E: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + cmp r2, 0x2 + ble _0800E56E + adds r0, r5, 0 + movs r2, 0x4 + bl sub_800D8B0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800E58C: .4byte gUnknown_2022874 + thumb_func_end sub_800E55C + + thumb_func_start sub_800E590 +sub_800E590: @ 800E590 + push {r4-r6,lr} + ldr r6, [sp, 0x10] + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0800E5C8 @ =gUnknown_2022874 + movs r0, 0x16 + strb r0, [r4] + strb r1, [r4, 0x1] + strb r2, [r4, 0x2] + strb r3, [r4, 0x3] + movs r2, 0 + adds r1, r4, 0 + adds r3, r1, 0x4 +_0800E5AA: + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + cmp r2, 0x2 + ble _0800E5AA + adds r0, r5, 0 + movs r2, 0x8 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E5C8: .4byte gUnknown_2022874 + thumb_func_end sub_800E590 + + thumb_func_start sub_800E5CC +sub_800E5CC: @ 800E5CC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E5E8 @ =gUnknown_2022874 + movs r2, 0x17 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E5E8: .4byte gUnknown_2022874 + thumb_func_end sub_800E5CC + + thumb_func_start sub_800E5EC +sub_800E5EC: @ 800E5EC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _0800E620 @ =gUnknown_2022874 + movs r4, 0 + movs r2, 0x18 + strb r2, [r3] + strb r4, [r3, 0x1] + strb r1, [r3, 0x2] + lsls r1, 16 + asrs r1, 16 + movs r2, 0xFF + lsls r2, 8 + ands r1, r2 + asrs r1, 8 + strb r1, [r3, 0x3] + adds r1, r3, 0 + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E620: .4byte gUnknown_2022874 + thumb_func_end sub_800E5EC + + thumb_func_start sub_800E624 +sub_800E624: @ 800E624 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r1, _0800E654 @ =gUnknown_2022874 + movs r3, 0x19 + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + lsls r2, 16 + asrs r2, 16 + movs r3, 0xFF + lsls r3, 8 + ands r2, r3 + asrs r2, 8 + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E654: .4byte gUnknown_2022874 + thumb_func_end sub_800E624 + + thumb_func_start sub_800E658 +sub_800E658: @ 800E658 + push {r4-r6,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E6A8 @ =gUnknown_2022874 + movs r3, 0x1A + strb r3, [r1] + strb r4, [r1, 0x1] + movs r6, 0xFF + lsls r6, 8 + adds r3, r4, 0 + ands r3, r6 + lsrs r3, 8 + strb r3, [r1, 0x2] + movs r5, 0xFF + lsls r5, 16 + adds r3, r4, 0 + ands r3, r5 + lsrs r3, 16 + strb r3, [r1, 0x3] + lsrs r4, 24 + strb r4, [r1, 0x4] + strb r2, [r1, 0x5] + adds r3, r2, 0 + ands r3, r6 + lsrs r3, 8 + strb r3, [r1, 0x6] + adds r3, r2, 0 + ands r3, r5 + lsrs r3, 16 + strb r3, [r1, 0x7] + lsrs r2, 24 + strb r2, [r1, 0x8] + movs r2, 0x9 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E6A8: .4byte gUnknown_2022874 + thumb_func_end sub_800E658 + + thumb_func_start sub_800E6AC +sub_800E6AC: @ 800E6AC + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E6E4 @ =gUnknown_2022874 + movs r3, 0x1B + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + movs r3, 0xFF + lsls r3, 8 + ands r3, r2 + lsrs r3, 8 + strb r3, [r1, 0x3] + movs r3, 0xFF + lsls r3, 16 + ands r3, r2 + lsrs r3, 16 + strb r3, [r1, 0x4] + lsrs r2, 24 + strb r2, [r1, 0x5] + movs r2, 0x6 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E6E4: .4byte gUnknown_2022874 + thumb_func_end sub_800E6AC + + thumb_func_start sub_800E6E8 +sub_800E6E8: @ 800E6E8 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E704 @ =gUnknown_2022874 + movs r2, 0x1C + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E704: .4byte gUnknown_2022874 + thumb_func_end sub_800E6E8 + + thumb_func_start sub_800E708 +sub_800E708: @ 800E708 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + ldr r1, _0800E74C @ =gUnknown_2022874 + movs r0, 0x1D + strb r0, [r1] + strb r0, [r1, 0x1] + strb r4, [r1, 0x2] + lsrs r0, r4, 8 + strb r0, [r1, 0x3] + adds r5, r1, 0 + cmp r4, 0 + beq _0800E738 + adds r1, r5, 0x4 + adds r3, r4, 0 +_0800E72A: + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r1, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _0800E72A +_0800E738: + adds r2, r4, 0x4 + lsls r2, 16 + lsrs r2, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E74C: .4byte gUnknown_2022874 + thumb_func_end sub_800E708 + + thumb_func_start sub_800E750 +sub_800E750: @ 800E750 + push {r4-r6,lr} + adds r4, r3, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 16 + lsrs r5, r2, 16 + ldr r2, _0800E7B4 @ =gUnknown_2022874 + movs r0, 0x1E + strb r0, [r2] + strb r1, [r2, 0x1] + movs r3, 0xFF + lsls r3, 8 + adds r0, r1, 0 + ands r0, r3 + lsrs r0, 8 + strb r0, [r2, 0x2] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r0, 16 + strb r0, [r2, 0x3] + lsrs r1, 24 + strb r1, [r2, 0x4] + strb r5, [r2, 0x5] + adds r0, r5, 0 + ands r0, r3 + lsrs r0, 8 + strb r0, [r2, 0x6] + adds r1, r2, 0 + cmp r5, 0 + beq _0800E7A0 + adds r3, r1, 0x7 + adds r2, r5, 0 +_0800E792: + ldrb r0, [r4] + strb r0, [r3] + adds r4, 0x1 + adds r3, 0x1 + subs r2, 0x1 + cmp r2, 0 + bne _0800E792 +_0800E7A0: + adds r2, r5, 0x7 + lsls r2, 16 + lsrs r2, 16 + adds r0, r6, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E7B4: .4byte gUnknown_2022874 + thumb_func_end sub_800E750 + + thumb_func_start sub_800E7B8 +sub_800E7B8: @ 800E7B8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + ldr r1, _0800E7FC @ =gUnknown_2022874 + movs r0, 0x1F + strb r0, [r1] + strb r4, [r1, 0x1] + lsrs r0, r4, 8 + strb r0, [r1, 0x2] + adds r5, r1, 0 + cmp r4, 0 + beq _0800E7E6 + adds r1, r5, 0x3 + adds r3, r4, 0 +_0800E7D8: + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r1, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _0800E7D8 +_0800E7E6: + adds r2, r4, 0x3 + lsls r2, 16 + lsrs r2, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E7FC: .4byte gUnknown_2022874 + thumb_func_end sub_800E7B8 + + thumb_func_start sub_800E800 +sub_800E800: @ 800E800 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + ldr r1, _0800E844 @ =gUnknown_2022874 + movs r0, 0x20 + strb r0, [r1] + strb r4, [r1, 0x1] + lsrs r0, r4, 8 + strb r0, [r1, 0x2] + adds r5, r1, 0 + cmp r4, 0 + beq _0800E82E + adds r1, r5, 0x3 + adds r3, r4, 0 +_0800E820: + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r1, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _0800E820 +_0800E82E: + adds r2, r4, 0x3 + lsls r2, 16 + lsrs r2, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_800D8B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E844: .4byte gUnknown_2022874 + thumb_func_end sub_800E800 + + thumb_func_start sub_800E848 +sub_800E848: @ 800E848 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r1, _0800E870 @ =gUnknown_2022874 + movs r3, 0x21 + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + lsrs r2, 8 + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E870: .4byte gUnknown_2022874 + thumb_func_end sub_800E848 + + thumb_func_start sub_800E874 +sub_800E874: @ 800E874 + push {r4,r5,lr} + adds r4, r2, 0 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _0800E8A8 @ =gUnknown_2022874 + movs r0, 0x22 + strb r0, [r2] + strb r1, [r2, 0x1] + movs r3, 0 + adds r1, r2, 0x2 +_0800E888: + adds r0, r4, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r1, 0x1 + adds r3, 0x1 + cmp r3, 0x2 + ble _0800E888 + adds r0, r5, 0 + adds r1, r2, 0 + movs r2, 0x5 + bl sub_800D8B0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800E8A8: .4byte gUnknown_2022874 + thumb_func_end sub_800E874 + + thumb_func_start sub_800E8AC +sub_800E8AC: @ 800E8AC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _0800E8D4 @ =gUnknown_2022874 + movs r4, 0 + movs r2, 0x23 + strb r2, [r3] + strb r1, [r3, 0x1] + lsrs r1, 8 + strb r1, [r3, 0x2] + strb r4, [r3, 0x3] + adds r1, r3, 0 + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E8D4: .4byte gUnknown_2022874 + thumb_func_end sub_800E8AC + + thumb_func_start sub_800E8D8 +sub_800E8D8: @ 800E8D8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _0800E900 @ =gUnknown_2022874 + movs r4, 0 + movs r2, 0x24 + strb r2, [r3] + strb r1, [r3, 0x1] + lsrs r1, 8 + strb r1, [r3, 0x2] + strb r4, [r3, 0x3] + adds r1, r3, 0 + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E900: .4byte gUnknown_2022874 + thumb_func_end sub_800E8D8 + + thumb_func_start sub_800E904 +sub_800E904: @ 800E904 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E920 @ =gUnknown_2022874 + movs r2, 0x25 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E920: .4byte gUnknown_2022874 + thumb_func_end sub_800E904 + + thumb_func_start sub_800E924 +sub_800E924: @ 800E924 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E940 @ =gUnknown_2022874 + movs r2, 0x26 + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E940: .4byte gUnknown_2022874 + thumb_func_end sub_800E924 + + thumb_func_start sub_800E944 +sub_800E944: @ 800E944 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E960 @ =gUnknown_2022874 + movs r2, 0x27 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E960: .4byte gUnknown_2022874 + thumb_func_end sub_800E944 + + thumb_func_start sub_800E964 +sub_800E964: @ 800E964 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E980 @ =gUnknown_2022874 + movs r2, 0x28 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E980: .4byte gUnknown_2022874 + thumb_func_end sub_800E964 + + thumb_func_start sub_800E984 +sub_800E984: @ 800E984 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E9A0 @ =gUnknown_2022874 + movs r2, 0x29 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E9A0: .4byte gUnknown_2022874 + thumb_func_end sub_800E984 + + thumb_func_start sub_800E9A4 +sub_800E9A4: @ 800E9A4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800E9C0 @ =gUnknown_2022874 + movs r2, 0x2A + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800E9C0: .4byte gUnknown_2022874 + thumb_func_end sub_800E9A4 + + thumb_func_start sub_800E9C4 +sub_800E9C4: @ 800E9C4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _0800E9EC @ =gUnknown_2022874 + movs r4, 0 + movs r2, 0x2B + strb r2, [r3] + strb r1, [r3, 0x1] + lsrs r1, 8 + strb r1, [r3, 0x2] + strb r4, [r3, 0x3] + adds r1, r3, 0 + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E9EC: .4byte gUnknown_2022874 + thumb_func_end sub_800E9C4 + + thumb_func_start sub_800E9F0 +sub_800E9F0: @ 800E9F0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _0800EA18 @ =gUnknown_2022874 + movs r4, 0 + movs r2, 0x2C + strb r2, [r3] + strb r1, [r3, 0x1] + lsrs r1, 8 + strb r1, [r3, 0x2] + strb r4, [r3, 0x3] + adds r1, r3, 0 + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800EA18: .4byte gUnknown_2022874 + thumb_func_end sub_800E9F0 + + thumb_func_start sub_800EA1C +sub_800EA1C: @ 800EA1C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EA38 @ =gUnknown_2022874 + movs r2, 0x2D + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EA38: .4byte gUnknown_2022874 + thumb_func_end sub_800EA1C + + thumb_func_start sub_800EA3C +sub_800EA3C: @ 800EA3C + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EA58 @ =gUnknown_2022874 + movs r2, 0x2E + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EA58: .4byte gUnknown_2022874 + thumb_func_end sub_800EA3C + + thumb_func_start sub_800EA5C +sub_800EA5C: @ 800EA5C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EA78 @ =gUnknown_2022874 + movs r2, 0x2F + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EA78: .4byte gUnknown_2022874 + thumb_func_end sub_800EA5C + + thumb_func_start sub_800EA7C +sub_800EA7C: @ 800EA7C + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r1, _0800EAC0 @ =gUnknown_2022874 + movs r3, 0x30 + strb r3, [r1] + movs r0, 0x7F + ands r0, r2 + strb r0, [r1, 0x1] + movs r0, 0x80 + ands r0, r2 + lsls r0, 24 + lsrs r0, 31 + strb r0, [r1, 0x2] + strb r3, [r1, 0x3] + movs r2, 0 + adds r3, r1, 0x4 +_0800EAA4: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + cmp r2, 0x2F + ble _0800EAA4 + adds r0, r5, 0 + movs r2, 0x34 + bl sub_800D8B0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800EAC0: .4byte gUnknown_2022874 + thumb_func_end sub_800EA7C + + thumb_func_start sub_800EAC4 +sub_800EAC4: @ 800EAC4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EAE0 @ =gUnknown_2022874 + movs r2, 0x31 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EAE0: .4byte gUnknown_2022874 + thumb_func_end sub_800EAC4 + + thumb_func_start sub_800EAE4 +sub_800EAE4: @ 800EAE4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EB00 @ =gUnknown_2022874 + movs r2, 0x32 + strb r2, [r1] + strb r2, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EB00: .4byte gUnknown_2022874 + thumb_func_end sub_800EAE4 + + thumb_func_start sub_800EB04 +sub_800EB04: @ 800EB04 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EB24 @ =gUnknown_2022874 + movs r2, 0x33 + strb r2, [r1] + strb r3, [r1, 0x1] + strb r2, [r1, 0x2] + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EB24: .4byte gUnknown_2022874 + thumb_func_end sub_800EB04 + + thumb_func_start sub_800EB28 +sub_800EB28: @ 800EB28 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r1, _0800EB50 @ =gUnknown_2022874 + movs r3, 0x34 + strb r3, [r1] + strb r4, [r1, 0x1] + strb r2, [r1, 0x2] + lsrs r2, 8 + strb r2, [r1, 0x3] + movs r2, 0x4 + bl sub_800D8B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800EB50: .4byte gUnknown_2022874 + thumb_func_end sub_800EB28 + + thumb_func_start sub_800EB54 +sub_800EB54: @ 800EB54 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EB70 @ =gUnknown_2022874 + movs r2, 0x35 + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EB70: .4byte gUnknown_2022874 + thumb_func_end sub_800EB54 + + thumb_func_start sub_800EB74 +sub_800EB74: @ 800EB74 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EB90 @ =gUnknown_2022874 + movs r2, 0x36 + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EB90: .4byte gUnknown_2022874 + thumb_func_end sub_800EB74 + + thumb_func_start sub_800EB94 +sub_800EB94: @ 800EB94 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800EBB0 @ =gUnknown_2022874 + movs r2, 0x37 + strb r2, [r1] + strb r3, [r1, 0x1] + movs r2, 0x2 + bl sub_800D8B0 + pop {r0} + bx r0 + .align 2, 0 +_0800EBB0: .4byte gUnknown_2022874 + thumb_func_end sub_800EB94 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_dome_cards.s b/asm/battle_dome_cards.s new file mode 100644 index 000000000..82b4eddb3 --- /dev/null +++ b/asm/battle_dome_cards.s @@ -0,0 +1,1102 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_91 +nullsub_91: @ 810BB88 + bx lr + thumb_func_end nullsub_91 + + thumb_func_start sub_810BB8C +sub_810BB8C: @ 810BB8C + push {r4-r7,lr} + ldr r4, _0810BBAC @ =gUnknown_8453178 + ldr r3, _0810BBB0 @ =gUnknown_203AD58 + movs r2, 0x7 +_0810BB94: + adds r1, r3, 0 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0xC + subs r2, 0x1 + cmp r2, 0 + bge _0810BB94 + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810BBAC: .4byte gUnknown_8453178 +_0810BBB0: .4byte gUnknown_203AD58 + thumb_func_end sub_810BB8C + + thumb_func_start sub_810BBB4 +sub_810BBB4: @ 810BBB4 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r1, 0 + adds r5, r3, 0 + ldr r3, [sp, 0x18] + ldr r1, [sp, 0x1C] + lsls r0, 16 + lsrs r4, r0, 16 + adds r7, r4, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + cmp r3, 0 + bne _0810BC28 + cmp r2, 0 + beq _0810BBF4 + cmp r1, 0 + bne _0810BBE8 + lsls r0, r4, 3 + ldr r1, _0810BBE4 @ =gUnknown_82350AC + b _0810BBFC + .align 2, 0 +_0810BBE4: .4byte gUnknown_82350AC +_0810BBE8: + lsls r0, r4, 3 + ldr r1, _0810BBF0 @ =gUnknown_82350AC + b _0810BC14 + .align 2, 0 +_0810BBF0: .4byte gUnknown_82350AC +_0810BBF4: + cmp r0, 0 + bne _0810BC10 + lsls r0, r4, 3 + ldr r1, _0810BC0C @ =gUnknown_823654C +_0810BBFC: + adds r0, r1 + str r2, [sp] + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_800ECF0 + b _0810BC4E + .align 2, 0 +_0810BC0C: .4byte gUnknown_823654C +_0810BC10: + lsls r0, r4, 3 + ldr r1, _0810BC24 @ =gUnknown_823654C +_0810BC14: + adds r0, r1 + str r2, [sp] + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_800F134 + b _0810BC4E + .align 2, 0 +_0810BC24: .4byte gUnknown_823654C +_0810BC28: + cmp r2, 0 + beq _0810BC40 + lsls r0, r4, 3 + ldr r1, _0810BC3C @ =gUnknown_823957C + adds r0, r1 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_800EC8C + b _0810BC4E + .align 2, 0 +_0810BC3C: .4byte gUnknown_823957C +_0810BC40: + lsls r0, r7, 3 + ldr r1, _0810BC58 @ =gUnknown_8239FA4 + adds r0, r1 + adds r1, r5, 0 + adds r2, r7, 0 + bl sub_800EC8C +_0810BC4E: + movs r0, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810BC58: .4byte gUnknown_8239FA4 + thumb_func_end sub_810BBB4 + + thumb_func_start sub_810BC5C +sub_810BC5C: @ 810BC5C + push {r4,lr} + sub sp, 0x8 + ldr r4, [sp, 0x10] + lsls r0, 16 + lsrs r0, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + bl sub_810BBB4 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810BC5C + + thumb_func_start sub_810BC84 +sub_810BC84: @ 810BC84 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r1, 0 + mov r8, r2 + ldr r1, [sp, 0x18] + ldr r2, [sp, 0x1C] + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, r4, 0 + lsls r3, 24 + lsrs r5, r3, 24 + mov r12, r5 + lsls r1, 16 + lsrs r3, r1, 16 + adds r1, r3, 0 + lsls r2, 24 + cmp r2, 0 + bne _0810BCE8 + ldr r0, _0810BCC8 @ =0x0000ffff + cmp r3, r0 + bne _0810BCD0 + ldr r2, _0810BCCC @ =gUnknown_203AD40 + ldrh r1, [r2, 0x2] + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2, 0x2] + adds r0, r4, 0 + adds r1, r7, 0 + mov r2, r8 + bl sub_80440F4 + lsls r1, r5, 20 + b _0810BD04 + .align 2, 0 +_0810BCC8: .4byte 0x0000ffff +_0810BCCC: .4byte gUnknown_203AD40 +_0810BCD0: + ldr r0, _0810BCE4 @ =gUnknown_203AD40 + strh r3, [r0, 0x2] + adds r0, r4, 0 + adds r1, r7, 0 + mov r2, r8 + bl sub_8044180 + bl sub_800EC28 + b _0810BD2E + .align 2, 0 +_0810BCE4: .4byte gUnknown_203AD40 +_0810BCE8: + ldr r0, _0810BD14 @ =0x0000ffff + cmp r3, r0 + bne _0810BD20 + ldr r2, _0810BD18 @ =gUnknown_203AD40 + ldrh r1, [r2, 0x2] + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2, 0x2] + ldr r1, _0810BD1C @ =gUnknown_8239A1C + lsls r0, r4, 3 + adds r0, r1 + ldr r0, [r0] + mov r2, r12 + lsls r1, r2, 20 +_0810BD04: + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703A8 + b _0810BD2E + .align 2, 0 +_0810BD14: .4byte 0x0000ffff +_0810BD18: .4byte gUnknown_203AD40 +_0810BD1C: .4byte gUnknown_8239A1C +_0810BD20: + ldr r0, _0810BD38 @ =gUnknown_203AD40 + strh r1, [r0, 0x2] + lsls r0, r6, 3 + ldr r1, _0810BD3C @ =gUnknown_8239A1C + adds r0, r1 + bl sub_800EC28 +_0810BD2E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810BD38: .4byte gUnknown_203AD40 +_0810BD3C: .4byte gUnknown_8239A1C + thumb_func_end sub_810BC84 + + thumb_func_start sub_810BD40 +sub_810BD40: @ 810BD40 + push {r4,r5,lr} + adds r5, r1, 0 + ldr r1, [sp, 0xC] + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r4, r3, 24 + lsls r1, 24 + cmp r1, 0 + bne _0810BD64 + adds r1, r5, 0 + bl sub_80440F4 + lsls r1, r4, 4 + movs r2, 0x20 + bl sub_80703A8 + b _0810BD74 +_0810BD64: + ldr r1, _0810BD7C @ =gUnknown_8239A1C + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + lsls r1, r4, 4 + movs r2, 0x20 + bl sub_80703A8 +_0810BD74: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810BD7C: .4byte gUnknown_8239A1C + thumb_func_end sub_810BD40 + + thumb_func_start sub_810BD80 +sub_810BD80: @ 810BD80 + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _0810BD98 + ldr r1, _0810BD90 @ =gUnknown_203AD40 + ldr r0, _0810BD94 @ =gUnknown_82349BC + str r0, [r1, 0x8] + b _0810BDA0 + .align 2, 0 +_0810BD90: .4byte gUnknown_203AD40 +_0810BD94: .4byte gUnknown_82349BC +_0810BD98: + ldr r0, _0810BDA4 @ =gUnknown_203AD40 + ldr r1, _0810BDA8 @ =gUnknown_82390DC + ldr r1, [r1] + str r1, [r0, 0x8] +_0810BDA0: + pop {r0} + bx r0 + .align 2, 0 +_0810BDA4: .4byte gUnknown_203AD40 +_0810BDA8: .4byte gUnknown_82390DC + thumb_func_end sub_810BD80 + + thumb_func_start sub_810BDAC +sub_810BDAC: @ 810BDAC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + str r1, [sp, 0xC] + str r2, [sp, 0x10] + ldr r1, [sp, 0x50] + ldr r2, [sp, 0x54] + ldr r4, [sp, 0x58] + ldr r5, [sp, 0x5C] + ldr r6, [sp, 0x60] + ldr r7, [sp, 0x64] + mov r8, r7 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x18] + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x1C] + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x20] + lsls r5, 16 + lsrs r5, 16 + mov r10, r5 + lsls r6, 24 + lsrs r6, 24 + mov r9, r6 + mov r0, r8 + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r1, _0810BE44 @ =gUnknown_203AD58 + ldrb r0, [r1, 0xB] + cmp r0, 0 + beq _0810BE1C +_0810BE04: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bhi _0810BE1C + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0xB] + cmp r0, 0 + bne _0810BE04 +_0810BE1C: + cmp r4, 0x8 + beq _0810BE40 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002B9C + adds r7, r0, 0 + cmp r7, 0 + beq _0810BE40 + movs r0, 0x20 + bl sub_8002B9C + mov r8, r0 + cmp r0, 0 + bne _0810BE4C + adds r0, r7, 0 + bl sub_8002BC4 +_0810BE40: + ldr r0, _0810BE48 @ =0x0000ffff + b _0810BF16 + .align 2, 0 +_0810BE44: .4byte gUnknown_203AD58 +_0810BE48: .4byte 0x0000ffff +_0810BE4C: + mov r1, r9 + str r1, [sp] + str r5, [sp, 0x4] + ldr r0, [sp, 0x8] + ldr r1, [sp, 0x10] + ldr r2, [sp, 0x14] + adds r3, r7, 0 + bl sub_810BBB4 + lsls r0, 16 + cmp r0, 0 + bne _0810BE40 + lsls r2, r4, 1 + str r2, [sp, 0x2C] + ldr r5, _0810BF28 @ =gUnknown_203AD40 + ldr r0, _0810BF2C @ =gUnknown_8453184 + mov r12, r0 + ldr r1, [sp, 0x18] + lsls r1, 16 + str r1, [sp, 0x24] + ldr r2, [sp, 0x1C] + lsls r2, 16 + str r2, [sp, 0x28] + movs r3, 0x80 + lsls r3, 4 + mov r0, r8 + adds r1, r7, 0 + adds r6, r3, 0 + movs r2, 0x3 +_0810BE86: + str r1, [r0] + strh r3, [r0, 0x4] + adds r0, 0x8 + adds r1, r6 + subs r2, 0x1 + cmp r2, 0 + bge _0810BE86 + ldr r0, _0810BF30 @ =0x0000ffff + strh r0, [r5] + mov r0, r12 + str r0, [r5, 0x4] + mov r0, r9 + bl sub_810BD80 + mov r1, r8 + str r1, [r5, 0xC] + ldr r0, _0810BF34 @ =gUnknown_8231CFC + str r0, [r5, 0x10] + ldr r0, _0810BF38 @ =nullsub_91 + str r0, [r5, 0x14] + mov r2, r10 + str r2, [sp] + mov r0, r9 + str r0, [sp, 0x4] + ldr r0, [sp, 0x8] + ldr r1, [sp, 0xC] + ldr r2, [sp, 0x10] + ldr r3, [sp, 0x20] + bl sub_810BC84 + ldr r2, [sp, 0x24] + asrs r1, r2, 16 + ldr r0, [sp, 0x28] + asrs r2, r0, 16 + adds r0, r5, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + adds r6, r2, 0 + ldr r0, _0810BF30 @ =0x0000ffff + cmp r10, r0 + bne _0810BEF6 + ldr r0, _0810BF3C @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldr r2, [sp, 0x20] + lsls r3, r2, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] +_0810BEF6: + ldr r1, _0810BF40 @ =gUnknown_203AD58 + ldr r2, [sp, 0x2C] + adds r0, r2, r4 + lsls r0, 2 + adds r2, r0, r1 + str r7, [r2] + adds r1, 0x4 + adds r0, r1 + mov r7, r8 + str r7, [r0] + mov r0, r10 + strh r0, [r2, 0x8] + strb r6, [r2, 0xA] + movs r0, 0x1 + strb r0, [r2, 0xB] + adds r0, r6, 0 +_0810BF16: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810BF28: .4byte gUnknown_203AD40 +_0810BF2C: .4byte gUnknown_8453184 +_0810BF30: .4byte 0x0000ffff +_0810BF34: .4byte gUnknown_8231CFC +_0810BF38: .4byte nullsub_91 +_0810BF3C: .4byte gUnknown_202063C +_0810BF40: .4byte gUnknown_203AD58 + thumb_func_end sub_810BDAC + + thumb_func_start sub_810BF44 +sub_810BF44: @ 810BF44 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + ldr r4, [sp, 0x34] + ldr r5, [sp, 0x38] + ldr r6, [sp, 0x3C] + ldr r7, [sp, 0x40] + mov r8, r7 + ldr r7, [sp, 0x44] + mov r9, r7 + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r6, 24 + lsrs r6, 24 + mov r7, r8 + lsls r7, 16 + lsrs r7, 16 + mov r8, r7 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + str r6, [sp, 0x8] + mov r4, r8 + str r4, [sp, 0xC] + str r7, [sp, 0x10] + movs r4, 0 + str r4, [sp, 0x14] + bl sub_810BDAC + lsls r0, 16 + lsrs r0, 16 + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810BF44 + + thumb_func_start sub_810BFA4 +sub_810BFA4: @ 810BFA4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r4, r0, 16 + movs r2, 0 + ldr r0, _0810BFDC @ =gUnknown_203AD58 + ldrb r1, [r0, 0xA] + adds r3, r0, 0 + cmp r1, r4 + beq _0810BFD4 + adds r1, r3, 0 +_0810BFBC: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bhi _0810BFD4 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0xA] + cmp r0, r4 + bne _0810BFBC +_0810BFD4: + cmp r2, 0x8 + bne _0810BFE4 + ldr r0, _0810BFE0 @ =0x0000ffff + b _0810C03A + .align 2, 0 +_0810BFDC: .4byte gUnknown_203AD58 +_0810BFE0: .4byte 0x0000ffff +_0810BFE4: + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r5, r0, r3 + ldr r1, [r5] + mov r8, r1 + adds r1, r3, 0x4 + adds r0, r1 + ldr r7, [r0] + ldrh r1, [r5, 0x8] + ldr r0, _0810C044 @ =0x0000ffff + lsls r6, r4, 4 + cmp r1, r0 + beq _0810C018 + ldr r1, _0810C048 @ =gUnknown_202063C + adds r0, r6, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + bl sub_8008A20 + lsls r0, 16 + lsrs r0, 16 + bl sub_8008A30 +_0810C018: + adds r0, r6, r4 + lsls r0, 2 + ldr r1, _0810C048 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + mov r0, r8 + bl sub_8002BC4 + adds r0, r7, 0 + bl sub_8002BC4 + adds r1, r5, 0 + ldr r0, _0810C04C @ =gUnknown_8453178 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + movs r0, 0 +_0810C03A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810C044: .4byte 0x0000ffff +_0810C048: .4byte gUnknown_202063C +_0810C04C: .4byte gUnknown_8453178 + thumb_func_end sub_810BFA4 + + thumb_func_start sub_810C050 +sub_810C050: @ 810C050 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + mov r9, r1 + adds r7, r2, 0 + adds r4, r3, 0 + ldr r1, [sp, 0x20] + ldr r2, [sp, 0x24] + ldr r3, [sp, 0x28] + lsls r0, 16 + lsrs r5, r0, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r6, r3, 24 + adds r0, r2, 0 + movs r1, 0x7 + bl sub_8004950 + adds r3, r0, 0 + movs r0, 0 + str r0, [sp] + adds r0, r5, 0 + adds r1, r7, 0 + adds r2, r4, 0 + bl sub_810BC5C + lsls r0, 16 + cmp r0, 0 + bne _0810C0AC + str r6, [sp] + adds r0, r5, 0 + mov r1, r9 + adds r2, r7, 0 + mov r3, r8 + bl sub_810BD40 + movs r0, 0 + b _0810C0AE +_0810C0AC: + ldr r0, _0810C0BC @ =0x0000ffff +_0810C0AE: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810C0BC: .4byte 0x0000ffff + thumb_func_end sub_810C050 + + thumb_func_start sub_810C0C0 +sub_810C0C0: @ 810C0C0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + str r1, [sp, 0x18] + str r2, [sp, 0x1C] + ldr r1, [sp, 0x44] + ldr r2, [sp, 0x48] + ldr r4, [sp, 0x4C] + ldr r5, [sp, 0x50] + ldr r6, [sp, 0x54] + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x20] + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + beq _0810C156 + str r6, [sp] + mov r0, r9 + ldr r1, [sp, 0x1C] + adds r2, r7, 0 + adds r3, r4, 0 + bl sub_810BC5C + lsls r0, 16 + cmp r0, 0 + bne _0810C156 + movs r0, 0x40 + str r0, [sp] + str r0, [sp, 0x4] + mov r1, r10 + str r1, [sp, 0x8] + mov r1, r8 + str r1, [sp, 0xC] + str r0, [sp, 0x10] + str r0, [sp, 0x14] + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_80041F0 + str r6, [sp] + mov r0, r9 + ldr r1, [sp, 0x18] + ldr r2, [sp, 0x1C] + ldr r3, [sp, 0x20] + bl sub_810BD40 + adds r0, r4, 0 + bl sub_8002BC4 + movs r0, 0 + b _0810C158 +_0810C156: + ldr r0, _0810C168 @ =0x0000ffff +_0810C158: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810C168: .4byte 0x0000ffff + thumb_func_end sub_810C0C0 + + thumb_func_start sub_810C16C +sub_810C16C: @ 810C16C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + ldr r4, [sp, 0x34] + ldr r5, [sp, 0x38] + ldr r6, [sp, 0x3C] + ldr r7, [sp, 0x40] + mov r8, r7 + ldr r7, [sp, 0x44] + mov r9, r7 + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r6, 24 + lsrs r6, 24 + mov r7, r8 + lsls r7, 16 + lsrs r7, 16 + mov r8, r7 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + str r6, [sp, 0x8] + mov r4, r8 + str r4, [sp, 0xC] + movs r4, 0 + str r4, [sp, 0x10] + str r7, [sp, 0x14] + bl sub_810BDAC + lsls r0, 16 + lsrs r0, 16 + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810C16C + + thumb_func_start sub_810C1CC +sub_810C1CC: @ 810C1CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + ldr r6, [sp, 0x34] + ldr r7, [sp, 0x38] + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r7, 16 + lsrs r7, 16 + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + str r6, [sp, 0x8] + str r7, [sp, 0xC] + movs r4, 0 + str r4, [sp, 0x10] + bl sub_810C16C + lsls r0, 16 + lsrs r0, 16 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810C1CC + + thumb_func_start sub_810C214 +sub_810C214: @ 810C214 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_810BFA4 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_810C214 + + thumb_func_start sub_810C228 +sub_810C228: @ 810C228 + push {r4-r6,lr} + sub sp, 0x14 + ldr r5, [sp, 0x24] + ldr r6, [sp, 0x28] + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r6, [sp, 0xC] + str r4, [sp, 0x10] + bl sub_810C0C0 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x14 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_810C228 + + thumb_func_start sub_810C25C +sub_810C25C: @ 810C25C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + ldr r6, [sp, 0x34] + ldr r7, [sp, 0x38] + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + lsls r7, 24 + lsrs r7, 24 + str r4, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + str r7, [sp, 0xC] + movs r4, 0 + str r4, [sp, 0x10] + bl sub_810C0C0 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810C25C + + thumb_func_start sub_810C2A4 +sub_810C2A4: @ 810C2A4 + push {r4,r5,lr} + sub sp, 0x14 + adds r5, r1, 0 + ldr r1, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r0, 16 + lsrs r0, 16 + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r2, 16 + asrs r2, 16 + str r2, [sp] + lsls r3, 16 + asrs r3, 16 + str r3, [sp, 0x4] + str r1, [sp, 0x8] + str r4, [sp, 0xC] + movs r1, 0x1 + str r1, [sp, 0x10] + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_810BF44 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x14 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810C2A4 + + thumb_func_start sub_810C2E8 +sub_810C2E8: @ 810C2E8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_810BFA4 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_810C2E8 + + thumb_func_start sub_810C2FC +sub_810C2FC: @ 810C2FC + push {r4,lr} + sub sp, 0xC + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + str r2, [sp] + str r3, [sp, 0x4] + movs r1, 0x1 + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0 + adds r3, r4, 0 + bl sub_810C050 + lsls r0, 16 + lsrs r0, 16 + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810C2FC + + thumb_func_start sub_810C330 +sub_810C330: @ 810C330 + push {r4,r5,lr} + sub sp, 0x14 + adds r5, r1, 0 + ldr r1, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r0, 16 + lsrs r0, 16 + lsls r5, 24 + lsrs r5, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r1, 24 + lsrs r1, 24 + lsls r4, 24 + lsrs r4, 24 + str r2, [sp] + str r3, [sp, 0x4] + str r1, [sp, 0x8] + str r4, [sp, 0xC] + movs r1, 0x1 + str r1, [sp, 0x10] + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_810C0C0 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x14 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810C330 + + thumb_func_start sub_810C374 +sub_810C374: @ 810C374 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + bne _0810C39A + cmp r0, 0 + beq _0810C394 + ldr r0, _0810C390 @ =gUnknown_82538A8 + adds r0, 0x87 + ldrb r0, [r0] + b _0810C39A + .align 2, 0 +_0810C390: .4byte gUnknown_82538A8 +_0810C394: + ldr r0, _0810C3A0 @ =gUnknown_82538A8 + adds r0, 0x86 + ldrb r0, [r0] +_0810C39A: + pop {r1} + bx r1 + .align 2, 0 +_0810C3A0: .4byte gUnknown_82538A8 + thumb_func_end sub_810C374 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s new file mode 100644 index 000000000..6c2a427ae --- /dev/null +++ b/asm/battle_gfx_sfx_util.s @@ -0,0 +1,3606 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8033DB8 +sub_8033DB8: @ 8033DB8 + push {r4,lr} + ldr r4, _08033DF4 @ =gUnknown_2024018 + movs r0, 0x10 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0x10 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1] + movs r0, 0x30 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x4] + movs r0, 0x10 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x8] + movs r0, 0x50 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0xC] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033DF4: .4byte gUnknown_2024018 + thumb_func_end sub_8033DB8 + + thumb_func_start sub_8033DF8 +sub_8033DF8: @ 8033DF8 + push {r4,r5,lr} + ldr r5, _08033E38 @ =gUnknown_2024018 + ldr r0, [r5] + cmp r0, 0 + beq _08033E32 + ldr r0, [r0, 0xC] + bl sub_8002BC4 + ldr r0, [r5] + movs r4, 0 + str r4, [r0, 0xC] + ldr r0, [r0, 0x8] + bl sub_8002BC4 + ldr r0, [r5] + str r4, [r0, 0x8] + ldr r0, [r0, 0x4] + bl sub_8002BC4 + ldr r0, [r5] + str r4, [r0, 0x4] + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r5] + str r4, [r0] + bl sub_8002BC4 + str r4, [r5] +_08033E32: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08033E38: .4byte gUnknown_2024018 + thumb_func_end sub_8033DF8 + + thumb_func_start sub_8033E3C +sub_8033E3C: @ 8033E3C + push {r4-r7,lr} + adds r6, r0, 0 + ldrh r0, [r6, 0x30] + lsls r0, 24 + lsrs r0, 24 + ldr r7, _08033E80 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r5, r1, 2 + adds r3, r5, r7 + adds r0, r3, 0 + adds r0, 0x3F + ldrb r4, [r0] + lsls r0, r4, 26 + cmp r0, 0 + bge _08033EA0 + adds r0, r3, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + blt _08033EA0 + adds r1, r3, 0 + adds r1, 0x2C + ldrb r2, [r1] + lsls r0, r2, 25 + cmp r0, 0 + bge _08033E84 + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + b _08033EA0 + .align 2, 0 +_08033E80: .4byte gUnknown_202063C +_08033E84: + lsls r0, r4, 27 + cmp r0, 0 + bge _08033EA0 + adds r0, r7, 0 + adds r0, 0x1C + adds r0, r5, r0 + ldr r1, _08033EA8 @ =sub_8012100 + str r1, [r0] + adds r0, r3, 0 + movs r1, 0 + bl sub_800843C + ldr r0, _08033EAC @ =nullsub_8 + str r0, [r6, 0x1C] +_08033EA0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08033EA8: .4byte sub_8012100 +_08033EAC: .4byte nullsub_8 + thumb_func_end sub_8033E3C + + thumb_func_start sub_8033EB0 +sub_8033EB0: @ 8033EB0 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + adds r3, r4, 0 + adds r3, 0x2C + ldrb r0, [r3] + movs r2, 0x40 + orrs r0, r2 + strb r0, [r3] + ldr r0, _08033ED4 @ =nullsub_8 + str r0, [r4, 0x1C] + cmp r1, 0 + bne _08033ED8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + b _08033EE0 + .align 2, 0 +_08033ED4: .4byte nullsub_8 +_08033ED8: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_08033EE0: + adds r0, r4, 0 + bl sub_8007824 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8033EB0 + + thumb_func_start sub_8033EEC +sub_8033EEC: @ 8033EEC + push {lr} + adds r2, r0, 0 + ldr r0, _08033F14 @ =gUnknown_2023F4C + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08033F0E + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _08033F0E + ldr r0, _08033F18 @ =nullsub_8 + str r0, [r2, 0x1C] +_08033F0E: + pop {r0} + bx r0 + .align 2, 0 +_08033F14: .4byte gUnknown_2023F4C +_08033F18: .4byte nullsub_8 + thumb_func_end sub_8033EEC + + thumb_func_start sub_8033F1C +sub_8033F1C: @ 8033F1C + push {r4-r6,lr} + adds r4, r1, 0 + lsls r0, 24 + ldr r6, _08033F50 @ =gUnknown_2024018 + ldr r1, [r6] + ldr r5, _08033F54 @ =gUnknown_2023BC4 + ldrb r2, [r5] + ldr r3, [r1, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrb r2, [r1] + movs r3, 0x10 + orrs r2, r3 + strb r2, [r1] + cmp r0, 0 + bne _08033F9C + cmp r4, 0x20 + bne _08033F58 + ldrb r0, [r5] + movs r1, 0x6 + bl sub_807886C + b _08034016 + .align 2, 0 +_08033F50: .4byte gUnknown_2024018 +_08033F54: .4byte gUnknown_2023BC4 +_08033F58: + cmp r4, 0x8 + beq _08033F64 + movs r0, 0x80 + ands r0, r4 + cmp r0, 0 + beq _08033F6E +_08033F64: + ldrb r0, [r5] + movs r1, 0 + bl sub_807886C + b _08034016 +_08033F6E: + cmp r4, 0x10 + bne _08033F7C + ldrb r0, [r5] + movs r1, 0x2 + bl sub_807886C + b _08034016 +_08033F7C: + movs r0, 0x7 + ands r0, r4 + cmp r0, 0 + beq _08033F8E + ldrb r0, [r5] + movs r1, 0x4 + bl sub_807886C + b _08034016 +_08033F8E: + cmp r4, 0x40 + bne _08033FFE + ldrb r0, [r5] + movs r1, 0x5 + bl sub_807886C + b _08034016 +_08033F9C: + movs r0, 0xF0 + lsls r0, 12 + ands r0, r4 + cmp r0, 0 + beq _08033FB0 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_807886C + b _08034016 +_08033FB0: + movs r0, 0x7 + ands r0, r4 + cmp r0, 0 + beq _08033FC2 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_807886C + b _08034016 +_08033FC2: + movs r0, 0x80 + lsls r0, 21 + ands r0, r4 + cmp r0, 0 + beq _08033FD6 + ldrb r0, [r5] + movs r1, 0x7 + bl sub_807886C + b _08034016 +_08033FD6: + movs r0, 0x80 + lsls r0, 20 + ands r0, r4 + cmp r0, 0 + beq _08033FEA + ldrb r0, [r5] + movs r1, 0x8 + bl sub_807886C + b _08034016 +_08033FEA: + movs r0, 0xE0 + lsls r0, 8 + ands r0, r4 + cmp r0, 0 + beq _08033FFE + ldrb r0, [r5] + movs r1, 0x9 + bl sub_807886C + b _08034016 +_08033FFE: + ldr r0, [r6] + ldrb r2, [r5] + ldr r0, [r0, 0x4] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_08034016: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8033F1C + + thumb_func_start sub_803401C +sub_803401C: @ 803401C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsrs r5, r3, 24 + lsls r4, 16 + lsrs r7, r4, 16 + cmp r5, 0 + bne _08034064 + movs r0, 0x80 + ands r0, r7 + cmp r0, 0 + beq _08034064 + ldr r0, _08034060 @ =gUnknown_2024024 + adds r0, r6, r0 + movs r2, 0x7F + adds r1, r7, 0 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1 + b _08034132 + .align 2, 0 +_08034060: .4byte gUnknown_2024024 +_08034064: + ldr r0, _08034090 @ =gUnknown_2024018 + mov r9, r0 + ldr r0, [r0] + ldr r0, [r0] + lsls r4, r6, 2 + adds r0, r4, r0 + ldrb r1, [r0] + movs r2, 0x4 + mov r8, r2 + mov r0, r8 + ands r0, r1 + cmp r0, 0 + beq _080340E0 + adds r0, r5, 0 + bl sub_80341B4 + lsls r0, 24 + cmp r0, 0 + bne _08034094 + movs r0, 0x1 + b _08034132 + .align 2, 0 +_08034090: .4byte gUnknown_2024018 +_08034094: + mov r1, r9 + ldr r0, [r1] + ldr r0, [r0] + adds r0, r4, r0 + ldrb r1, [r0] + mov r0, r8 + ands r0, r1 + cmp r0, 0 + beq _080340E0 + cmp r5, 0x2 + bne _080340E0 + ldr r1, _080340D8 @ =gUnknown_202063C + ldr r0, _080340DC @ =gUnknown_2023D44 + adds r0, r6, r0 + ldrb r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080340E0 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_80351A8 + adds r0, r6, 0 + bl sub_8035228 + movs r0, 0x1 + b _08034132 + .align 2, 0 +_080340D8: .4byte gUnknown_202063C +_080340DC: .4byte gUnknown_2023D44 +_080340E0: + ldr r0, _08034144 @ =gUnknown_2037F1A + mov r2, r10 + strb r2, [r0] + ldr r0, _08034148 @ =gUnknown_2037F1B + mov r1, sp + ldrb r1, [r1] + strb r1, [r0] + ldr r4, _0803414C @ =gUnknown_2024018 + ldr r0, [r4] + ldr r0, [r0, 0x8] + strh r7, [r0] + ldr r0, _08034150 @ =gUnknown_81C6EA8 + adds r1, r5, 0 + movs r2, 0 + bl sub_80725D4 + ldr r0, _08034154 @ =sub_803415C + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08034158 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r6, [r1, 0x8] + ldr r0, [r4] + movs r2, 0x8 + ldrsh r1, [r1, r2] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + movs r0, 0 +_08034132: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08034144: .4byte gUnknown_2037F1A +_08034148: .4byte gUnknown_2037F1B +_0803414C: .4byte gUnknown_2024018 +_08034150: .4byte gUnknown_81C6EA8 +_08034154: .4byte sub_803415C +_08034158: .4byte gUnknown_3005090 + thumb_func_end sub_803401C + + thumb_func_start sub_803415C +sub_803415C: @ 803415C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080341A4 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080341A8 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803419E + ldr r0, _080341AC @ =gUnknown_2024018 + ldr r2, [r0] + ldr r1, _080341B0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + ldr r2, [r2, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_0803419E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080341A4: .4byte gUnknown_2037EDC +_080341A8: .4byte gUnknown_2037EE1 +_080341AC: .4byte gUnknown_2024018 +_080341B0: .4byte gUnknown_3005090 + thumb_func_end sub_803415C + + thumb_func_start sub_80341B4 +sub_80341B4: @ 80341B4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD + bgt _080341C8 + cmp r0, 0xA + bge _080341CC + cmp r0, 0x2 + beq _080341CC + b _080341D0 +_080341C8: + cmp r0, 0x11 + bne _080341D0 +_080341CC: + movs r0, 0x1 + b _080341D2 +_080341D0: + movs r0, 0 +_080341D2: + pop {r1} + bx r1 + thumb_func_end sub_80341B4 + + thumb_func_start sub_80341D8 +sub_80341D8: @ 80341D8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _08034230 @ =gUnknown_2037F1A + strb r1, [r0] + ldr r0, _08034234 @ =gUnknown_2037F1B + strb r2, [r0] + ldr r0, _08034238 @ =gUnknown_81C6F18 + adds r1, r3, 0 + movs r2, 0 + bl sub_80725D4 + ldr r0, _0803423C @ =sub_8034248 + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08034240 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + ldr r0, _08034244 @ =gUnknown_2024018 + ldr r0, [r0] + movs r2, 0x8 + ldrsh r1, [r1, r2] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08034230: .4byte gUnknown_2037F1A +_08034234: .4byte gUnknown_2037F1B +_08034238: .4byte gUnknown_81C6F18 +_0803423C: .4byte sub_8034248 +_08034240: .4byte gUnknown_3005090 +_08034244: .4byte gUnknown_2024018 + thumb_func_end sub_80341D8 + + thumb_func_start sub_8034248 +sub_8034248: @ 8034248 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08034290 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08034294 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803428A + ldr r0, _08034298 @ =gUnknown_2024018 + ldr r2, [r0] + ldr r1, _0803429C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + ldr r2, [r2, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1] + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_0803428A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08034290: .4byte gUnknown_2037EDC +_08034294: .4byte gUnknown_2037EE1 +_08034298: .4byte gUnknown_2024018 +_0803429C: .4byte gUnknown_3005090 + thumb_func_end sub_8034248 + + thumb_func_start sub_80342A0 +sub_80342A0: @ 80342A0 + movs r0, 0 + bx lr + thumb_func_end sub_80342A0 + + thumb_func_start sub_80342A4 +sub_80342A4: @ 80342A4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080342EC + ldr r2, _080342F4 @ =gUnknown_2024018 + ldr r0, [r2] + ldr r1, [r0, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + adds r1, 0x1 + strb r1, [r0, 0x8] + ldr r2, [r2] + ldr r0, _080342F8 @ =gUnknown_2023BC4 + ldrb r1, [r0] + ldr r2, [r2, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x8] + cmp r0, 0x1D + bls _080342F0 + ldr r0, _080342FC @ =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, _08034300 @ =gMPlay_SE2 + bl m4aMPlayStop +_080342EC: + cmp r5, 0 + beq _08034304 +_080342F0: + movs r0, 0x1 + b _08034316 + .align 2, 0 +_080342F4: .4byte gUnknown_2024018 +_080342F8: .4byte gUnknown_2023BC4 +_080342FC: .4byte gMPlay_SE1 +_08034300: .4byte gMPlay_SE2 +_08034304: + ldr r0, _0803431C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + strb r5, [r0, 0x8] + movs r0, 0 +_08034316: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0803431C: .4byte gUnknown_2024018 + thumb_func_end sub_80342A4 + + thumb_func_start sub_8034320 +sub_8034320: @ 8034320 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp] + ldr r0, _08034360 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, 2 + adds r2, r1, r0 + ldrh r0, [r2, 0x2] + cmp r0, 0 + bne _08034364 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r6, [sp] + b _0803436C + .align 2, 0 +_08034360: .4byte gUnknown_2024018 +_08034364: + ldrh r5, [r2, 0x2] + ldr r0, _080343C0 @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r6, [r0] +_0803436C: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + mov r10, r0 + mov r0, r8 + bl sub_80751D8 + lsls r0, 24 + lsls r2, r5, 3 + ldr r1, _080343C4 @ =gUnknown_82350AC + adds r2, r1 + ldr r1, _080343C8 @ =gUnknown_202401C + ldr r1, [r1] + lsrs r0, 22 + adds r1, 0x4 + adds r1, r0 + ldr r1, [r1] + adds r0, r2, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_800F108 + mov r3, r8 + lsls r2, r3, 4 + movs r0, 0x80 + lsls r0, 1 + adds r7, r2, r0 + ldr r0, _080343CC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r3, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + str r1, [sp, 0x4] + mov r9, r2 + cmp r0, 0 + bne _080343D0 + adds r0, r4, 0 + bl sub_80440BC + b _080343DA + .align 2, 0 +_080343C0: .4byte gUnknown_2024008 +_080343C4: .4byte gUnknown_82350AC +_080343C8: .4byte gUnknown_202401C +_080343CC: .4byte gUnknown_2024018 +_080343D0: + adds r0, r5, 0 + mov r1, r10 + ldr r2, [sp] + bl sub_80440F4 +_080343DA: + adds r6, r0, 0 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + adds r4, r0, 0 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_800EBB4 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0x20 + bl sub_80703EC + mov r1, r9 + adds r1, 0x80 + adds r0, r4, 0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + bl sub_8002BC4 + ldr r0, _08034478 @ =0x00000181 + cmp r5, r0 + bne _0803443C + movs r7, 0x80 + lsls r7, 1 + add r7, r9 + ldr r5, _0803447C @ =gUnknown_2023FE8 + ldr r1, [r5] + movs r4, 0x80 + lsls r4, 1 + adds r1, r4 + adds r0, r6, 0 + bl sub_800EBB4 + ldr r0, _08034480 @ =gUnknown_2024024 + add r0, r8 + ldrb r1, [r0] + lsls r1, 5 + adds r1, r4 + ldr r0, [r5] + adds r0, r1 + adds r1, r7, 0 + movs r2, 0x20 + bl sub_80703EC +_0803443C: + ldr r0, _08034484 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + ldr r1, [sp, 0x4] + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _08034468 + ldr r3, _08034488 @ =0x00007fff + adds r0, r7, 0 + movs r1, 0x10 + movs r2, 0x6 + bl sub_8045274 + lsls r1, r7, 1 + ldr r0, _0803448C @ =gUnknown_20375F8 + adds r0, r1, r0 + ldr r2, _08034490 @ =gUnknown_20371F8 + adds r1, r2 + ldr r2, _08034494 @ =0x04000008 + bl CpuSet +_08034468: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08034478: .4byte 0x00000181 +_0803447C: .4byte gUnknown_2023FE8 +_08034480: .4byte gUnknown_2024024 +_08034484: .4byte gUnknown_2024018 +_08034488: .4byte 0x00007fff +_0803448C: .4byte gUnknown_20375F8 +_08034490: .4byte gUnknown_20371F8 +_08034494: .4byte 0x04000008 + thumb_func_end sub_8034320 + + thumb_func_start sub_8034498 +sub_8034498: @ 8034498 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp] + ldr r0, _080344D8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, 2 + adds r2, r1, r0 + ldrh r0, [r2, 0x2] + cmp r0, 0 + bne _080344DC + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r4, [sp] + b _080344E4 + .align 2, 0 +_080344D8: .4byte gUnknown_2024018 +_080344DC: + ldrh r5, [r2, 0x2] + ldr r0, _08034538 @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r4, [r0] +_080344E4: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x4] + mov r0, r8 + bl sub_80751D8 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x1 + mov r1, r8 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + lsls r1, 2 + mov r10, r1 + cmp r0, 0x1 + beq _0803451C + ldr r0, _0803453C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + add r0, r10 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _08034548 +_0803451C: + lsls r0, r5, 3 + ldr r1, _08034540 @ =gUnknown_823654C + adds r0, r1 + ldr r1, _08034544 @ =gUnknown_202401C + ldr r1, [r1] + lsls r2, r7, 2 + adds r1, 0x4 + adds r1, r2 + ldr r1, [r1] + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_800F108 + b _08034562 + .align 2, 0 +_08034538: .4byte gUnknown_2024008 +_0803453C: .4byte gUnknown_2024018 +_08034540: .4byte gUnknown_823654C +_08034544: .4byte gUnknown_202401C +_08034548: + lsls r0, r5, 3 + ldr r1, _08034584 @ =gUnknown_823654C + adds r0, r1 + ldr r1, _08034588 @ =gUnknown_202401C + ldr r1, [r1] + lsls r2, r7, 2 + adds r1, 0x4 + adds r1, r2 + ldr r1, [r1] + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_800ECC4 +_08034562: + mov r2, r8 + lsls r1, r2, 4 + movs r0, 0x80 + lsls r0, 1 + adds r7, r1, r0 + ldr r0, _0803458C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + add r0, r10 + ldrh r0, [r0, 0x2] + mov r9, r1 + cmp r0, 0 + bne _08034590 + adds r0, r6, 0 + bl sub_80440BC + b _0803459A + .align 2, 0 +_08034584: .4byte gUnknown_823654C +_08034588: .4byte gUnknown_202401C +_0803458C: .4byte gUnknown_2024018 +_08034590: + adds r0, r5, 0 + ldr r1, [sp, 0x4] + ldr r2, [sp] + bl sub_80440F4 +_0803459A: + adds r6, r0, 0 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + adds r4, r0, 0 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_800EBB4 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0x20 + bl sub_80703EC + mov r1, r9 + adds r1, 0x80 + adds r0, r4, 0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + bl sub_8002BC4 + ldr r0, _08034638 @ =0x00000181 + cmp r5, r0 + bne _080345FC + movs r7, 0x80 + lsls r7, 1 + add r7, r9 + ldr r5, _0803463C @ =gUnknown_2023FE8 + ldr r1, [r5] + movs r4, 0x80 + lsls r4, 1 + adds r1, r4 + adds r0, r6, 0 + bl sub_800EBB4 + ldr r0, _08034640 @ =gUnknown_2024024 + add r0, r8 + ldrb r1, [r0] + lsls r1, 5 + adds r1, r4 + ldr r0, [r5] + adds r0, r1 + adds r1, r7, 0 + movs r2, 0x20 + bl sub_80703EC +_080345FC: + ldr r0, _08034644 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + add r0, r10 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _08034626 + ldr r3, _08034648 @ =0x00007fff + adds r0, r7, 0 + movs r1, 0x10 + movs r2, 0x6 + bl sub_8045274 + lsls r1, r7, 1 + ldr r0, _0803464C @ =gUnknown_20375F8 + adds r0, r1, r0 + ldr r2, _08034650 @ =gUnknown_20371F8 + adds r1, r2 + ldr r2, _08034654 @ =0x04000008 + bl CpuSet +_08034626: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08034638: .4byte 0x00000181 +_0803463C: .4byte gUnknown_2023FE8 +_08034640: .4byte gUnknown_2024024 +_08034644: .4byte gUnknown_2024018 +_08034648: .4byte 0x00007fff +_0803464C: .4byte gUnknown_20375F8 +_08034650: .4byte gUnknown_20371F8 +_08034654: .4byte 0x04000008 + thumb_func_end sub_8034498 + + thumb_func_start sub_8034658 +sub_8034658: @ 8034658 + push {r4-r6,lr} + lsls r4, r1, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80751D8 + lsls r0, 24 + ldr r2, _080346B8 @ =gUnknown_8E93B38 + ldr r1, _080346BC @ =gUnknown_202401C + ldr r1, [r1] + lsrs r0, 22 + adds r1, 0x4 + adds r1, r0 + ldr r1, [r1] + adds r0, r2, 0 + bl LZ77UnCompWram + lsls r4, 4 + movs r0, 0x80 + lsls r0, 1 + adds r6, r4, r0 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + adds r5, r0, 0 + ldr r0, _080346C0 @ =gUnknown_8E93B14 + adds r1, r5, 0 + bl sub_800EBB4 + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x20 + bl sub_80703EC + adds r4, 0x80 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r5, 0 + bl sub_8002BC4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080346B8: .4byte gUnknown_8E93B38 +_080346BC: .4byte gUnknown_202401C +_080346C0: .4byte gUnknown_8E93B14 + thumb_func_end sub_8034658 + + thumb_func_start sub_80346C4 +sub_80346C4: @ 80346C4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r5, r0, 0 + adds r0, r1, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + adds r4, r0, 0 + lsls r4, 24 + lsls r5, 3 + ldr r6, _0803473C @ =gUnknown_823957C + adds r6, r5, r6 + ldr r0, _08034740 @ =gUnknown_202401C + mov r8, r0 + ldr r0, [r0] + lsrs r4, 22 + adds r0, 0x4 + adds r0, r4 + ldr r1, [r0] + adds r0, r6, 0 + movs r2, 0 + bl sub_800EC8C + mov r1, r8 + ldr r0, [r1] + adds r0, 0x4 + adds r0, r4 + ldr r0, [r0] + str r0, [sp] + ldrh r2, [r6, 0x4] + ldr r0, _08034744 @ =0xffff0000 + ldr r1, [sp, 0x4] + ands r1, r0 + orrs r1, r2 + str r1, [sp, 0x4] + ldrh r2, [r6, 0x6] + lsls r2, 16 + ldr r0, _08034748 @ =0x0000ffff + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + mov r0, sp + bl sub_80086DC + ldr r0, _0803474C @ =gUnknown_8239A1C + adds r5, r0 + adds r0, r5, 0 + bl sub_800F078 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803473C: .4byte gUnknown_823957C +_08034740: .4byte gUnknown_202401C +_08034744: .4byte 0xffff0000 +_08034748: .4byte 0x0000ffff +_0803474C: .4byte gUnknown_8239A1C + thumb_func_end sub_80346C4 + + thumb_func_start sub_8034750 +sub_8034750: @ 8034750 + push {lr} + lsls r0, 16 + lsls r1, 24 + ldr r2, _08034774 @ =gUnknown_8239FD4 + lsrs r0, 13 + adds r0, r2 + ldr r0, [r0] + lsrs r1, 4 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703A8 + pop {r0} + bx r0 + .align 2, 0 +_08034774: .4byte gUnknown_8239FD4 + thumb_func_end sub_8034750 + + thumb_func_start nullsub_16 +nullsub_16: @ 8034778 + bx lr + thumb_func_end nullsub_16 + + thumb_func_start sub_803477C +sub_803477C: @ 803477C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + ldr r0, _080347A0 @ =gUnknown_8239A1C + lsrs r4, 13 + adds r0, r4, r0 + ldrh r0, [r0, 0x4] + bl sub_8008A30 + ldr r0, _080347A4 @ =gUnknown_823957C + adds r4, r0 + ldrh r0, [r4, 0x6] + bl sub_800874C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080347A0: .4byte gUnknown_8239A1C +_080347A4: .4byte gUnknown_823957C + thumb_func_end sub_803477C + + thumb_func_start sub_80347A8 +sub_80347A8: @ 80347A8 + push {r4-r7,lr} + ldr r4, _080347D4 @ =gUnknown_8260260 + adds r0, r4, 0 + bl sub_8008928 + adds r4, 0x8 + adds r0, r4, 0 + bl sub_8008928 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _080347E0 + ldr r0, _080347D8 @ =gUnknown_8260208 + bl sub_800F034 + ldr r0, _080347DC @ =gUnknown_8260210 + bl sub_800F034 + movs r5, 0x2 + b _08034802 + .align 2, 0 +_080347D4: .4byte gUnknown_8260260 +_080347D8: .4byte gUnknown_8260208 +_080347DC: .4byte gUnknown_8260210 +_080347E0: + ldr r4, _08034828 @ =gUnknown_8260218 + adds r0, r4, 0 + bl sub_800F034 + adds r4, 0x8 + adds r0, r4, 0 + bl sub_800F034 + ldr r4, _0803482C @ =gUnknown_8260228 + adds r0, r4, 0 + bl sub_800F034 + adds r4, 0x8 + adds r0, r4, 0 + bl sub_800F034 + movs r5, 0x4 +_08034802: + movs r4, 0 + cmp r4, r5 + bcs _08034822 + ldr r7, _08034830 @ =gUnknown_2023BD6 + ldr r6, _08034834 @ =gUnknown_8260240 +_0803480C: + adds r0, r4, r7 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r6 + bl sub_800F034 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _0803480C +_08034822: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08034828: .4byte gUnknown_8260218 +_0803482C: .4byte gUnknown_8260228 +_08034830: .4byte gUnknown_2023BD6 +_08034834: .4byte gUnknown_8260240 + thumb_func_end sub_80347A8 + + thumb_func_start sub_8034838 +sub_8034838: @ 8034838 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + movs r6, 0 + cmp r4, 0 + bne _08034848 + b _0803495A +_08034848: + cmp r4, 0x1 + bne _08034864 + ldr r4, _08034860 @ =gUnknown_8260260 + adds r0, r4, 0 + bl sub_8008928 + adds r4, 0x8 + adds r0, r4, 0 + bl sub_8008928 + b _0803495A + .align 2, 0 +_08034860: .4byte gUnknown_8260260 +_08034864: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _080348CC + cmp r4, 0x2 + bne _0803489C + ldr r0, _08034888 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08034890 + ldr r0, _0803488C @ =gUnknown_8260238 + bl sub_800F034 + b _0803495A + .align 2, 0 +_08034888: .4byte gUnknown_2022B4C +_0803488C: .4byte gUnknown_8260238 +_08034890: + ldr r0, _08034898 @ =gUnknown_8260208 + bl sub_800F034 + b _0803495A + .align 2, 0 +_08034898: .4byte gUnknown_8260208 +_0803489C: + cmp r4, 0x3 + bne _080348AC + ldr r0, _080348A8 @ =gUnknown_8260210 + bl sub_800F034 + b _0803495A + .align 2, 0 +_080348A8: .4byte gUnknown_8260210 +_080348AC: + cmp r4, 0x4 + bne _080348BC + ldr r0, _080348B8 @ =gUnknown_2023BD6 + ldrb r0, [r0] + b _08034944 + .align 2, 0 +_080348B8: .4byte gUnknown_2023BD6 +_080348BC: + cmp r4, 0x5 + bne _08034958 + ldr r0, _080348C8 @ =gUnknown_2023BD6 + ldrb r0, [r0, 0x1] + b _08034944 + .align 2, 0 +_080348C8: .4byte gUnknown_2023BD6 +_080348CC: + cmp r4, 0x2 + bne _080348DC + ldr r0, _080348D8 @ =gUnknown_8260218 + bl sub_800F034 + b _0803495A + .align 2, 0 +_080348D8: .4byte gUnknown_8260218 +_080348DC: + cmp r4, 0x3 + bne _080348EC + ldr r0, _080348E8 @ =gUnknown_8260220 + bl sub_800F034 + b _0803495A + .align 2, 0 +_080348E8: .4byte gUnknown_8260220 +_080348EC: + cmp r4, 0x4 + bne _080348FC + ldr r0, _080348F8 @ =gUnknown_8260228 + bl sub_800F034 + b _0803495A + .align 2, 0 +_080348F8: .4byte gUnknown_8260228 +_080348FC: + cmp r4, 0x5 + bne _0803490C + ldr r0, _08034908 @ =gUnknown_8260230 + bl sub_800F034 + b _0803495A + .align 2, 0 +_08034908: .4byte gUnknown_8260230 +_0803490C: + cmp r4, 0x6 + bne _0803491C + ldr r0, _08034918 @ =gUnknown_2023BD6 + ldrb r0, [r0] + b _08034944 + .align 2, 0 +_08034918: .4byte gUnknown_2023BD6 +_0803491C: + cmp r4, 0x7 + bne _0803492C + ldr r0, _08034928 @ =gUnknown_2023BD6 + ldrb r0, [r0, 0x1] + b _08034944 + .align 2, 0 +_08034928: .4byte gUnknown_2023BD6 +_0803492C: + cmp r4, 0x8 + bne _0803493C + ldr r0, _08034938 @ =gUnknown_2023BD6 + ldrb r0, [r0, 0x2] + b _08034944 + .align 2, 0 +_08034938: .4byte gUnknown_2023BD6 +_0803493C: + cmp r5, 0x9 + bne _08034958 + ldr r0, _08034950 @ =gUnknown_2023BD6 + ldrb r0, [r0, 0x3] +_08034944: + lsls r0, 3 + ldr r1, _08034954 @ =gUnknown_8260240 + adds r0, r1 + bl sub_800F034 + b _0803495A + .align 2, 0 +_08034950: .4byte gUnknown_2023BD6 +_08034954: .4byte gUnknown_8260240 +_08034958: + movs r6, 0x1 +_0803495A: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8034838 + + thumb_func_start sub_8034964 +sub_8034964: @ 8034964 + push {lr} + ldr r0, _0803497C @ =gUnknown_8D093D8 + ldr r1, _08034980 @ =gUnknown_202401C + ldr r1, [r1] + movs r2, 0xBA + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + bl sub_800EBB4 + pop {r0} + bx r0 + .align 2, 0 +_0803497C: .4byte gUnknown_8D093D8 +_08034980: .4byte gUnknown_202401C + thumb_func_end sub_8034964 + + thumb_func_start sub_8034984 +sub_8034984: @ 8034984 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r6, 0 + ldrb r0, [r5] + cmp r0, 0x6 + bls _08034994 + b _08034AF2 +_08034994: + lsls r0, 2 + ldr r1, _080349A0 @ =_080349A4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080349A0: .4byte _080349A4 + .align 2, 0 +_080349A4: + .4byte _080349C0 + .4byte _080349C6 + .4byte _08034AD0 + .4byte _080349DC + .4byte _08034A0C + .4byte _08034A48 + .4byte _08034AE8 +_080349C0: + bl sub_8034B24 + b _08034AD0 +_080349C6: + ldrb r0, [r4] + bl sub_8034838 + lsls r0, 24 + cmp r0, 0 + beq _080349D4 + b _08034ACC +_080349D4: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08034AF2 +_080349DC: + ldr r0, _080349F4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080349F8 + ldrb r0, [r4] + cmp r0, 0 + bne _080349F8 + bl sub_8048008 + b _080349FE + .align 2, 0 +_080349F4: .4byte gUnknown_2022B4C +_080349F8: + ldrb r0, [r4] + bl sub_8047CE0 +_080349FE: + ldr r2, _08034A08 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r1, r2 + strb r0, [r1] + b _08034ABA + .align 2, 0 +_08034A08: .4byte gUnknown_3004FF0 +_08034A0C: + ldrb r0, [r4] + bl sub_804831C + ldr r0, _08034A2C @ =gUnknown_2023BD6 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0x1 + bhi _08034A34 + ldr r0, _08034A30 @ =gUnknown_3004FF0 + adds r0, r1, r0 + ldrb r0, [r0] + movs r1, 0 + bl nullsub_21 + b _08034ABA + .align 2, 0 +_08034A2C: .4byte gUnknown_2023BD6 +_08034A30: .4byte gUnknown_3004FF0 +_08034A34: + ldr r0, _08034A44 @ =gUnknown_3004FF0 + adds r0, r1, r0 + ldrb r0, [r0] + movs r1, 0x1 + bl nullsub_21 + b _08034ABA + .align 2, 0 +_08034A44: .4byte gUnknown_3004FF0 +_08034A48: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08034A90 + ldr r0, _08034A80 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08034AAE + ldr r0, _08034A84 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08034A88 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08034A8C @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + b _08034AAE + .align 2, 0 +_08034A80: .4byte gUnknown_2022B4C +_08034A84: .4byte gUnknown_3004FF0 +_08034A88: .4byte gUnknown_2023BCE +_08034A8C: .4byte gUnknown_2024284 +_08034A90: + ldr r0, _08034AD8 @ =gUnknown_3004FF0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08034ADC @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08034AE0 @ =gUnknown_202402C + adds r1, r2 + movs r2, 0 + bl sub_8049D98 +_08034AAE: + ldr r1, _08034AD8 @ =gUnknown_3004FF0 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + bl sub_8048188 +_08034ABA: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _08034AE4 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _08034AF2 +_08034ACC: + movs r0, 0 + strb r0, [r4] +_08034AD0: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _08034AF2 + .align 2, 0 +_08034AD8: .4byte gUnknown_3004FF0 +_08034ADC: .4byte gUnknown_2023BCE +_08034AE0: .4byte gUnknown_202402C +_08034AE4: .4byte gUnknown_2023BCC +_08034AE8: + bl sub_8035538 + bl sub_8127CAC + movs r6, 0x1 +_08034AF2: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8034984 + + thumb_func_start sub_8034AFC +sub_8034AFC: @ 8034AFC + push {r4,lr} + ldr r4, _08034B20 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r0, [r0, 0x4] + movs r1, 0 + movs r2, 0x30 + bl memset + ldr r0, [r4] + ldr r0, [r0, 0x8] + movs r1, 0 + movs r2, 0x10 + bl memset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08034B20: .4byte gUnknown_2024018 + thumb_func_end sub_8034AFC + + thumb_func_start sub_8034B24 +sub_8034B24: @ 8034B24 + push {lr} + bl sub_8034AFC + ldr r0, _08034B3C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + movs r1, 0 + movs r2, 0x10 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_08034B3C: .4byte gUnknown_2024018 + thumb_func_end sub_8034B24 + + thumb_func_start sub_8034B40 +sub_8034B40: @ 8034B40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r4, 0 + ldr r5, _08034BA4 @ =gUnknown_2023BCC + ldrb r0, [r5] + cmp r4, r0 + bge _08034B96 + ldr r0, _08034BA8 @ =gUnknown_202063C + mov r9, r0 + movs r0, 0x1 + mov r12, r0 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ldr r7, _08034BAC @ =gUnknown_2024018 + ldr r6, _08034BB0 @ =gUnknown_2023D44 +_08034B64: + ldr r0, [r7] + ldr r0, [r0] + lsls r3, r4, 2 + adds r3, r0 + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r9 + adds r0, 0x3E + ldrb r1, [r0] + lsls r1, 29 + lsrs r1, 31 + mov r0, r12 + ands r1, r0 + ldrb r2, [r3] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r4, 0x1 + ldrb r0, [r5] + cmp r4, r0 + blt _08034B64 +_08034B96: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08034BA4: .4byte gUnknown_2023BCC +_08034BA8: .4byte gUnknown_202063C +_08034BAC: .4byte gUnknown_2024018 +_08034BB0: .4byte gUnknown_2023D44 + thumb_func_end sub_8034B40 + + thumb_func_start sub_8034BB4 +sub_8034BB4: @ 8034BB4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08034BE8 @ =gUnknown_2024018 + ldr r1, [r1] + ldr r1, [r1] + lsls r3, r0, 2 + adds r3, r1 + ldr r2, _08034BEC @ =gUnknown_202063C + ldr r1, _08034BF0 @ =gUnknown_2023D44 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + lsls r1, 29 + lsrs r1, 31 + ldrb r2, [r3] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bx lr + .align 2, 0 +_08034BE8: .4byte gUnknown_2024018 +_08034BEC: .4byte gUnknown_202063C +_08034BF0: .4byte gUnknown_2023D44 + thumb_func_end sub_8034BB4 + + thumb_func_start sub_8034BF4 +sub_8034BF4: @ 8034BF4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + lsls r2, 24 + lsrs r2, 24 + cmp r2, 0xFF + beq _08034C16 + b _08034D88 +_08034C16: + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _08034D58 @ =gUnknown_2023BCE + mov r1, r9 + lsls r1, 1 + adds r0, r1, r0 + str r0, [sp, 0xC] + ldrh r0, [r0] + movs r2, 0x64 + muls r0, r2 + ldr r3, _08034D5C @ =gUnknown_202402C + adds r0, r3 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r1, [sp, 0xC] + ldrh r0, [r1] + movs r2, 0x64 + muls r0, r2 + ldr r3, _08034D5C @ =gUnknown_202402C + adds r0, r3 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x4] + ldr r1, [sp, 0xC] + ldrh r0, [r1] + movs r2, 0x64 + muls r0, r2 + ldr r3, _08034D5C @ =gUnknown_202402C + adds r0, r3 + movs r1, 0x1 + bl sub_803FBE8 + adds r7, r0, 0 + mov r1, r8 + lsls r0, r1, 3 + ldr r1, _08034D60 @ =gUnknown_82350AC + adds r0, r1 + ldr r4, _08034D64 @ =gUnknown_202401C + ldr r1, [r4] + mov r2, r10 + lsls r5, r2, 2 + adds r1, 0x4 + adds r1, r5 + ldr r1, [r1] + mov r2, r8 + ldr r3, [sp, 0x4] + bl sub_800F108 + ldr r0, [r4] + adds r0, 0x4 + adds r0, r5 + ldr r2, [r0] + ldr r5, _08034D68 @ =gUnknown_202063C + ldr r4, _08034D6C @ =gUnknown_2023D44 + add r4, r9 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r0, [r0, 0x4] + lsls r0, 22 + lsrs r0, 17 + ldr r1, _08034D70 @ =0x06010000 + adds r0, r1 + ldr r1, _08034D74 @ =0x040000d4 + str r2, [r1] + str r0, [r1, 0x4] + ldr r0, _08034D78 @ =0x84000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + mov r3, r9 + lsls r0, r3, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + mov r10, r0 + mov r0, r8 + adds r1, r7, 0 + ldr r2, [sp, 0x4] + bl sub_80440F4 + adds r6, r0, 0 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + adds r7, r0, 0 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_800EBB4 + adds r0, r7, 0 + mov r1, r10 + movs r2, 0x20 + bl sub_80703EC + adds r0, r7, 0 + bl sub_8002BC4 + mov r0, r9 + bl sub_80748A8 + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x22] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08034D7C @ =gUnknown_2024024 + add r1, r9 + ldrb r1, [r1] + bl sub_800838C + ldr r2, [sp, 0xC] + ldrh r0, [r2] + movs r3, 0x64 + muls r0, r3 + ldr r1, _08034D5C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + mov r2, r8 + muls r2, r1 + ldr r1, _08034D80 @ =gUnknown_8245EE0 + adds r2, r1 + movs r1, 0x2 + bl sub_804037C + ldr r4, _08034D84 @ =gUnknown_3004FF0 + add r4, r9 + ldrb r0, [r4] + ldr r2, [sp, 0xC] + ldrh r1, [r2] + movs r3, 0x64 + muls r1, r3 + ldr r2, _08034D5C @ =gUnknown_202402C + adds r1, r2 + bl sub_80496C0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_804981C + b _08035062 + .align 2, 0 +_08034D58: .4byte gUnknown_2023BCE +_08034D5C: .4byte gUnknown_202402C +_08034D60: .4byte gUnknown_82350AC +_08034D64: .4byte gUnknown_202401C +_08034D68: .4byte gUnknown_202063C +_08034D6C: .4byte gUnknown_2023D44 +_08034D70: .4byte 0x06010000 +_08034D74: .4byte 0x040000d4 +_08034D78: .4byte 0x84000200 +_08034D7C: .4byte gUnknown_2024024 +_08034D80: .4byte gUnknown_8245EE0 +_08034D84: .4byte gUnknown_3004FF0 +_08034D88: + cmp r2, 0 + beq _08034E4C + ldr r0, _08034E28 @ =gUnknown_2023D44 + mov r3, r9 + adds r5, r3, r0 + ldrb r1, [r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r6, _08034E2C @ =gUnknown_202063C + adds r0, r6 + ldr r4, _08034E30 @ =gUnknown_2024018 + ldr r1, [r4] + ldr r1, [r1, 0x8] + ldrb r1, [r1] + bl sub_800838C + mov r1, r9 + lsls r0, r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 16 + mov r10, r0 + ldr r2, _08034E34 @ =gUnknown_2023FE8 + ldr r0, [r4] + ldr r0, [r0, 0x8] + ldrh r1, [r0] + lsls r1, 5 + movs r3, 0x80 + lsls r3, 1 + adds r1, r3 + ldr r0, [r2] + adds r0, r1 + mov r1, r10 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08034E38 @ =gUnknown_2024024 + add r1, r9 + ldr r0, [r4] + ldr r0, [r0, 0x8] + ldrh r0, [r0] + strb r0, [r1] + ldr r0, [r4] + ldr r1, [r0] + mov r2, r9 + lsls r0, r2, 2 + adds r0, r1 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _08034E0E + ldr r3, _08034E3C @ =0x00007fff + mov r0, r10 + movs r1, 0x10 + movs r2, 0x6 + bl sub_8045274 + mov r3, r10 + lsls r1, r3, 1 + ldr r0, _08034E40 @ =gUnknown_20375F8 + adds r0, r1, r0 + ldr r2, _08034E44 @ =gUnknown_20371F8 + adds r1, r2 + ldr r2, _08034E48 @ =0x04000008 + bl CpuSet +_08034E0E: + mov r0, r9 + bl sub_80748A8 + ldrb r2, [r5] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r6 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x22] + b _08035062 + .align 2, 0 +_08034E28: .4byte gUnknown_2023D44 +_08034E2C: .4byte gUnknown_202063C +_08034E30: .4byte gUnknown_2024018 +_08034E34: .4byte gUnknown_2023FE8 +_08034E38: .4byte gUnknown_2024024 +_08034E3C: .4byte 0x00007fff +_08034E40: .4byte gUnknown_20375F8 +_08034E44: .4byte gUnknown_20371F8 +_08034E48: .4byte 0x04000008 +_08034E4C: + mov r0, r9 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, [sp] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08034E80 + ldr r1, _08034E78 @ =gUnknown_2023BCE + ldr r2, [sp] + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08034E7C @ =gUnknown_202402C + b _08034E90 + .align 2, 0 +_08034E78: .4byte gUnknown_2023BCE +_08034E7C: .4byte gUnknown_202402C +_08034E80: + ldr r1, _08034EFC @ =gUnknown_2023BCE + ldr r3, [sp] + lsls r0, r3, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08034F00 @ =gUnknown_2024284 +_08034E90: + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r0, r9 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08034F10 + ldr r0, _08034EFC @ =gUnknown_2023BCE + mov r1, r9 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r7, 0x64 + muls r0, r7 + ldr r5, _08034F00 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x4] + ldrh r0, [r4] + muls r0, r7 + adds r0, r5 + movs r1, 0x1 + bl sub_803FBE8 + adds r7, r0, 0 + mov r2, r8 + lsls r0, r2, 3 + ldr r1, _08034F04 @ =gUnknown_823654C + adds r0, r1 + ldr r1, _08034F08 @ =gUnknown_202401C + ldr r1, [r1] + mov r3, r10 + lsls r5, r3, 2 + adds r1, 0x4 + adds r1, r5 + ldr r1, [r1] + ldr r2, _08034F0C @ =gUnknown_2024008 + mov r3, r9 + lsls r4, r3, 2 + adds r2, r4, r2 + ldr r3, [r2] + mov r2, r8 + bl sub_800F108 + b _08034F5E + .align 2, 0 +_08034EFC: .4byte gUnknown_2023BCE +_08034F00: .4byte gUnknown_2024284 +_08034F04: .4byte gUnknown_823654C +_08034F08: .4byte gUnknown_202401C +_08034F0C: .4byte gUnknown_2024008 +_08034F10: + ldr r0, _08035074 @ =gUnknown_2023BCE + mov r1, r9 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r7, 0x64 + muls r0, r7 + ldr r5, _08035078 @ =gUnknown_202402C + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x4] + ldrh r0, [r4] + muls r0, r7 + adds r0, r5 + movs r1, 0x1 + bl sub_803FBE8 + adds r7, r0, 0 + mov r2, r8 + lsls r0, r2, 3 + ldr r1, _0803507C @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _08035080 @ =gUnknown_202401C + ldr r1, [r1] + mov r3, r10 + lsls r5, r3, 2 + adds r1, 0x4 + adds r1, r5 + ldr r1, [r1] + ldr r2, _08035084 @ =gUnknown_2024008 + mov r3, r9 + lsls r4, r3, 2 + adds r2, r4, r2 + ldr r3, [r2] + mov r2, r8 + bl sub_800F108 +_08034F5E: + str r4, [sp, 0x14] + ldr r0, _08035080 @ =gUnknown_202401C + ldr r0, [r0] + adds r0, 0x4 + adds r0, r5 + ldr r2, [r0] + ldr r0, _08035088 @ =gUnknown_2023D44 + add r0, r9 + str r0, [sp, 0x10] + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0803508C @ =gUnknown_202063C + adds r0, r1 + ldrh r0, [r0, 0x4] + lsls r0, 22 + lsrs r0, 17 + ldr r1, _08035090 @ =0x06010000 + adds r0, r1 + ldr r1, _08035094 @ =0x040000d4 + str r2, [r1] + str r0, [r1, 0x4] + ldr r0, _08035098 @ =0x84000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + mov r2, r9 + lsls r0, r2, 20 + movs r3, 0x80 + lsls r3, 17 + adds r0, r3 + lsrs r0, 16 + mov r10, r0 + mov r0, r8 + adds r1, r7, 0 + ldr r2, [sp, 0x4] + bl sub_80440F4 + adds r6, r0, 0 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + adds r7, r0, 0 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_800EBB4 + adds r0, r7, 0 + mov r1, r10 + movs r2, 0x20 + bl sub_80703EC + adds r0, r7, 0 + bl sub_8002BC4 + ldr r0, _0803509C @ =0x00000181 + cmp r8, r0 + bne _08034FFC + ldr r5, _080350A0 @ =gUnknown_2023FE8 + ldr r1, [r5] + movs r4, 0x80 + lsls r4, 1 + adds r1, r4 + adds r0, r6, 0 + bl sub_800EBB4 + ldr r0, _080350A4 @ =gUnknown_2024024 + ldr r1, [sp] + adds r0, r1, r0 + ldrb r1, [r0] + lsls r1, 5 + adds r1, r4 + ldr r0, [r5] + adds r0, r1 + mov r1, r10 + movs r2, 0x20 + bl sub_80703EC +_08034FFC: + ldr r3, _080350A8 @ =0x00007fff + mov r0, r10 + movs r1, 0x10 + movs r2, 0x6 + bl sub_8045274 + mov r2, r10 + lsls r1, r2, 1 + ldr r0, _080350AC @ =gUnknown_20375F8 + adds r0, r1, r0 + ldr r2, _080350B0 @ =gUnknown_20371F8 + adds r1, r2 + ldr r2, _080350B4 @ =0x04000008 + bl CpuSet + ldr r0, _080350B8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + ldr r3, [sp, 0x14] + adds r0, r3, r0 + mov r1, r8 + strh r1, [r0, 0x2] + ldr r0, _080350A4 @ =gUnknown_2024024 + mov r2, r9 + adds r4, r2, r0 + ldr r3, [sp] + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r4] + mov r0, r9 + bl sub_80748A8 + ldr r1, [sp, 0x10] + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + ldr r2, _0803508C @ =gUnknown_202063C + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x22] + ldr r3, [sp, 0x10] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r4] + bl sub_800838C +_08035062: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035074: .4byte gUnknown_2023BCE +_08035078: .4byte gUnknown_202402C +_0803507C: .4byte gUnknown_82350AC +_08035080: .4byte gUnknown_202401C +_08035084: .4byte gUnknown_2024008 +_08035088: .4byte gUnknown_2023D44 +_0803508C: .4byte gUnknown_202063C +_08035090: .4byte 0x06010000 +_08035094: .4byte 0x040000d4 +_08035098: .4byte 0x84000200 +_0803509C: .4byte 0x00000181 +_080350A0: .4byte gUnknown_2023FE8 +_080350A4: .4byte gUnknown_2024024 +_080350A8: .4byte 0x00007fff +_080350AC: .4byte gUnknown_20375F8 +_080350B0: .4byte gUnknown_20371F8 +_080350B4: .4byte 0x04000008 +_080350B8: .4byte gUnknown_2024018 + thumb_func_end sub_8034BF4 + + thumb_func_start sub_80350BC +sub_80350BC: @ 80350BC + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + lsls r1, 24 + cmp r1, 0 + bne _08035158 + adds r0, r4, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080350FC + ldr r0, _080350F4 @ =gUnknown_8D2D0B4 + ldr r1, _080350F8 @ =gUnknown_202401C + ldr r1, [r1] + lsls r4, r5, 2 + adds r1, 0x4 + adds r1, r4 + ldr r1, [r1] + bl sub_800EBC0 + b _0803510E + .align 2, 0 +_080350F4: .4byte gUnknown_8D2D0B4 +_080350F8: .4byte gUnknown_202401C +_080350FC: + ldr r0, _08035144 @ =gUnknown_8D2D2F4 + ldr r1, _08035148 @ =gUnknown_202401C + ldr r1, [r1] + lsls r4, r5, 2 + adds r1, 0x4 + adds r1, r4 + ldr r1, [r1] + bl sub_800EBC0 +_0803510E: + movs r3, 0x1 + lsls r6, 4 + ldr r7, _0803514C @ =gUnknown_8D2D090 + ldr r0, _08035148 @ =gUnknown_202401C + ldr r0, [r0] + adds r0, 0x4 + adds r4, r0, r4 + ldr r2, _08035150 @ =0x040000d4 + ldr r5, _08035154 @ =0x84000200 +_08035120: + ldr r0, [r4] + lsls r1, r3, 11 + adds r1, r0, r1 + str r0, [r2] + str r1, [r2, 0x4] + str r5, [r2, 0x8] + ldr r0, [r2, 0x8] + adds r3, 0x1 + cmp r3, 0x3 + ble _08035120 + movs r0, 0x80 + lsls r0, 1 + adds r1, r6, r0 + adds r0, r7, 0 + movs r2, 0x20 + bl sub_80703A8 + b _0803519A + .align 2, 0 +_08035144: .4byte gUnknown_8D2D2F4 +_08035148: .4byte gUnknown_202401C +_0803514C: .4byte gUnknown_8D2D090 +_08035150: .4byte 0x040000d4 +_08035154: .4byte 0x84000200 +_08035158: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08035184 + ldr r1, _0803517C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08035180 @ =gUnknown_202402C + adds r0, r1 + adds r1, r4, 0 + bl sub_8034320 + b _0803519A + .align 2, 0 +_0803517C: .4byte gUnknown_2023BCE +_08035180: .4byte gUnknown_202402C +_08035184: + ldr r1, _080351A0 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080351A4 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r6, 0 + bl sub_8034498 +_0803519A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080351A0: .4byte gUnknown_2023BCE +_080351A4: .4byte gUnknown_2024284 + thumb_func_end sub_80350BC + + thumb_func_start sub_80351A8 +sub_80351A8: @ 80351A8 + push {r4-r6,lr} + adds r5, r1, 0 + adds r4, r2, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80350BC + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _080351E4 @ =gUnknown_202063C + adds r4, r0, r1 + ldr r0, _080351E8 @ =gUnknown_2024024 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_800838C + cmp r5, 0 + bne _080351EC + adds r0, r6, 0 + bl sub_80748BC + b _080351F2 + .align 2, 0 +_080351E4: .4byte gUnknown_202063C +_080351E8: .4byte gUnknown_2024024 +_080351EC: + adds r0, r6, 0 + bl sub_80748A8 +_080351F2: + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80351A8 + + thumb_func_start sub_8035200 +sub_8035200: @ 8035200 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0xA4 + bne _08035220 + ldr r0, _08035224 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r2, 2 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] +_08035220: + pop {r0} + bx r0 + .align 2, 0 +_08035224: .4byte gUnknown_2024018 + thumb_func_end sub_8035200 + + thumb_func_start sub_8035228 +sub_8035228: @ 8035228 + lsls r0, 24 + ldr r1, _08035240 @ =gUnknown_2024018 + ldr r1, [r1] + ldr r1, [r1] + lsrs r0, 22 + adds r0, r1 + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_08035240: .4byte gUnknown_2024018 + thumb_func_end sub_8035228 + + thumb_func_start sub_8035244 +sub_8035244: @ 8035244 + push {r4-r7,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + adds r7, r6, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r4, 16 + asrs r4, 16 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_804A614 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080352BC + ldr r7, _080352B8 @ =gUnknown_2024018 + ldr r0, [r7] + ldr r2, [r0] + lsls r4, r6, 2 + adds r0, r4, r2 + ldrb r1, [r0] + movs r5, 0x2 + movs r3, 0x2 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0803530E + adds r0, r6, 0 + eors r0, r5 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080352AA + movs r0, 0x53 + bl sub_80722CC +_080352AA: + ldr r0, [r7] + ldr r1, [r0] + adds r1, r4, r1 + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + b _0803530E + .align 2, 0 +_080352B8: .4byte gUnknown_2024018 +_080352BC: + ldr r4, _080352E4 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r0, [r0] + lsls r1, r6, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _080352E8 + movs r0, 0x53 + bl m4aSongNumStop + b _0803530E + .align 2, 0 +_080352E4: .4byte gUnknown_2024018 +_080352E8: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0803530E + ldr r1, [r4] + movs r0, 0x2 + eors r7, r0 + ldr r1, [r1] + lsls r0, r7, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0803530E + movs r0, 0x53 + bl m4aSongNumStop +_0803530E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8035244 + + thumb_func_start sub_8035314 +sub_8035314: @ 8035314 + push {r4-r6,lr} + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _08035364 @ =gUnknown_2024018 + ldr r0, [r5] + ldr r0, [r0] + lsls r1, r4, 2 + adds r1, r0 + ldrb r2, [r1] + movs r6, 0x3 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08035356 + ldr r2, [r5] + movs r0, 0x2 + adds r1, r4, 0 + eors r1, r0 + ldr r0, [r2] + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1] +_08035356: + movs r0, 0x53 + bl m4aSongNumStop + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08035364: .4byte gUnknown_2024018 + thumb_func_end sub_8035314 + + thumb_func_start sub_8035368 +sub_8035368: @ 8035368 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r4, 16 + asrs r4, 16 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_804A614 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8035368 + + thumb_func_start sub_803539C +sub_803539C: @ 803539C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08035440 @ =gUnknown_30030F0 + ldr r1, _08035444 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08035432 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r5, _08035448 @ =gUnknown_2023BCE + mov r1, r8 + lsls r0, r1, 1 + adds r0, r5 + ldrb r0, [r0] + bl sub_8128030 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r9 + lsls r0, r1, 1 + adds r0, r5 + ldrb r0, [r0] + bl sub_8128030 + lsls r0, 24 + lsrs r5, r0, 24 + movs r7, 0x64 + adds r0, r4, 0 + muls r0, r7 + ldr r6, _0803544C @ =gUnknown_2024284 + adds r4, r0, r6 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0803540E + adds r0, r4, 0 + mov r1, r8 + bl sub_8035244 +_0803540E: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08035432 + adds r0, r5, 0 + muls r0, r7 + adds r4, r0, r6 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08035432 + adds r0, r4, 0 + mov r1, r9 + bl sub_8035244 +_08035432: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035440: .4byte gUnknown_30030F0 +_08035444: .4byte 0x00000439 +_08035448: .4byte gUnknown_2023BCE +_0803544C: .4byte gUnknown_2024284 + thumb_func_end sub_803539C + + thumb_func_start sub_8035450 +sub_8035450: @ 8035450 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + ldr r0, _080354E0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _08035520 + movs r0, 0x3 + mov r10, r8 + mov r1, r10 + ands r1, r0 + mov r10, r1 + movs r6, 0 + movs r2, 0x3F + negs r2, r2 + mov r9, r2 +_0803547C: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08035514 + ldr r4, _080354E4 @ =gUnknown_202063C + ldr r0, _080354E8 @ =gUnknown_2023D44 + adds r3, r5, r0 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + movs r7, 0x4 + negs r7, r7 + adds r2, r7, 0 + ands r1, r2 + mov r2, r10 + orrs r1, r2 + strb r1, [r0, 0x1] + mov r7, r8 + cmp r7, 0 + bne _080354F0 + ldr r0, _080354EC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0, 0x4] + adds r2, r6, r2 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r2, 0x6] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x3] + mov r2, r9 + ands r1, r2 + strb r1, [r0, 0x3] + b _08035514 + .align 2, 0 +_080354E0: .4byte gUnknown_2023BCC +_080354E4: .4byte gUnknown_202063C +_080354E8: .4byte gUnknown_2023D44 +_080354EC: .4byte gUnknown_2024018 +_080354F0: + ldrb r0, [r3] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldr r0, _08035530 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + adds r0, r6, r0 + ldrb r1, [r0, 0x6] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r0, [r2, 0x3] + mov r3, r9 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x3] +_08035514: + adds r6, 0xC + adds r5, 0x1 + ldr r0, _08035534 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0803547C +_08035520: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035530: .4byte gUnknown_2024018 +_08035534: .4byte gUnknown_2023BCC + thumb_func_end sub_8035450 + + thumb_func_start sub_8035538 +sub_8035538: @ 8035538 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08035614 @ =gUnknown_8250A0C + bl sub_800F034 + movs r0, 0x1 + bl sub_80751E8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08035618 @ =gUnknown_8250A1C + mov r8, r0 + adds r0, r5, 0 + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8074480 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 8 + movs r0, 0xE8 + lsls r0, 13 + adds r2, r0 + asrs r2, 16 + mov r0, r8 + adds r1, r4, 0 + movs r3, 0xC8 + bl sub_8006F8C + ldr r6, _0803561C @ =gUnknown_2024018 + ldr r1, [r6] + ldr r2, [r1, 0x4] + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + adds r2, r1, r2 + strb r0, [r2, 0x7] + ldr r7, _08035620 @ =gUnknown_202063C + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r1, r0 + ldrb r1, [r1, 0x7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r5, [r0, 0x2E] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0803560A + movs r0, 0x3 + bl sub_80751E8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r5, 0 + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8074480 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 8 + movs r0, 0xE8 + lsls r0, 13 + adds r2, r0 + asrs r2, 16 + mov r0, r8 + adds r1, r4, 0 + movs r3, 0xC8 + bl sub_8006F8C + ldr r1, [r6] + ldr r2, [r1, 0x4] + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + adds r2, r1, r2 + strb r0, [r2, 0x7] + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r1, r0 + ldrb r1, [r1, 0x7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r5, [r0, 0x2E] +_0803560A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035614: .4byte gUnknown_8250A0C +_08035618: .4byte gUnknown_8250A1C +_0803561C: .4byte gUnknown_2024018 +_08035620: .4byte gUnknown_202063C + thumb_func_end sub_8035538 + + thumb_func_start sub_8035624 +sub_8035624: @ 8035624 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + movs r0, 0 + mov r8, r0 + ldrh r0, [r5, 0x2E] + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08035668 @ =gUnknown_2023D44 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0803566C @ =gUnknown_202063C + adds r7, r0, r1 + adds r6, r7, 0 + adds r6, 0x3E + ldrb r1, [r6] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08035660 + adds r0, r4, 0 + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + bne _08035674 +_08035660: + ldr r0, _08035670 @ =sub_80356FC + str r0, [r5, 0x1C] + b _080356EA + .align 2, 0 +_08035668: .4byte gUnknown_2023D44 +_0803566C: .4byte gUnknown_202063C +_08035670: .4byte sub_80356FC +_08035674: + ldr r0, _08035690 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _08035686 + ldrb r1, [r6] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08035698 +_08035686: + movs r0, 0x1 + mov r8, r0 + ldr r2, _08035694 @ =gUnknown_2024018 + lsls r4, 2 + b _080356BA + .align 2, 0 +_08035690: .4byte gUnknown_2037EE1 +_08035694: .4byte gUnknown_2024018 +_08035698: + ldr r2, _080356F4 @ =gUnknown_2024018 + ldr r0, [r2] + ldr r0, [r0] + lsls r1, r4, 2 + adds r3, r1, r0 + ldrh r0, [r3, 0x2] + adds r4, r1, 0 + cmp r0, 0 + beq _080356BA + ldr r0, _080356F8 @ =gUnknown_823A004 + ldrh r1, [r3, 0x2] + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _080356BA + movs r0, 0x1 + mov r8, r0 +_080356BA: + ldr r0, [r2] + ldr r0, [r0] + adds r0, r4, r0 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080356CE + movs r0, 0x1 + mov r8, r0 +_080356CE: + ldrh r0, [r7, 0x20] + strh r0, [r5, 0x20] + ldrh r0, [r7, 0x24] + strh r0, [r5, 0x24] + adds r2, r5, 0 + adds r2, 0x3E + mov r0, r8 + lsls r3, r0, 2 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_080356EA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080356F4: .4byte gUnknown_2024018 +_080356F8: .4byte gUnknown_823A004 + thumb_func_end sub_8035624 + + thumb_func_start sub_80356FC +sub_80356FC: @ 80356FC + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_80356FC + + thumb_func_start sub_8035708 +sub_8035708: @ 8035708 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + lsls r1, 16 + lsrs r5, r1, 16 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08035784 + ldr r0, _08035758 @ =gUnknown_2024018 + ldr r3, [r0] + ldr r1, [r3] + lsls r0, r4, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + beq _08035732 + adds r5, r0, 0 +_08035732: + ldr r0, _0803575C @ =gUnknown_823A004 + adds r0, r5, r0 + ldrb r0, [r0] + cmp r0, 0 + beq _08035768 + ldr r2, _08035760 @ =gUnknown_202063C + ldr r1, [r3, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08035764 @ =sub_8035624 + b _08035782 + .align 2, 0 +_08035758: .4byte gUnknown_2024018 +_0803575C: .4byte gUnknown_823A004 +_08035760: .4byte gUnknown_202063C +_08035764: .4byte sub_8035624 +_08035768: + ldr r2, _0803578C @ =gUnknown_202063C + ldr r1, [r3, 0x4] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08035790 @ =sub_80356FC +_08035782: + str r1, [r0] +_08035784: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803578C: .4byte gUnknown_202063C +_08035790: .4byte sub_80356FC + thumb_func_end sub_8035708 + + thumb_func_start sub_8035794 +sub_8035794: @ 8035794 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080357BC @ =gUnknown_202063C + ldr r1, _080357C0 @ =gUnknown_2024018 + ldr r1, [r1] + ldr r3, [r1, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r1, [r1, 0x7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080357C4 @ =sub_80356FC + str r1, [r0] + bx lr + .align 2, 0 +_080357BC: .4byte gUnknown_202063C +_080357C0: .4byte gUnknown_2024018 +_080357C4: .4byte sub_80356FC + thumb_func_end sub_8035794 + + thumb_func_start sub_80357C8 +sub_80357C8: @ 80357C8 + push {r4-r7,lr} + ldr r2, _08035894 @ =0x06000240 + movs r7, 0xF0 + lsls r7, 8 + movs r5, 0x8 +_080357D2: + movs r4, 0xF +_080357D4: + ldrh r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080357E4 + adds r0, r7, 0 + orrs r0, r1 + strh r0, [r2] +_080357E4: + ldrh r1, [r2] + movs r6, 0xF0 + lsls r6, 4 + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _080357F8 + adds r0, r6, 0 + orrs r0, r1 + strh r0, [r2] +_080357F8: + ldrh r1, [r2] + movs r3, 0xF0 + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + bne _0803580A + adds r0, r1, 0 + orrs r0, r3 + strh r0, [r2] +_0803580A: + ldrh r1, [r2] + movs r3, 0xF + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0803581C + adds r0, r1, 0 + orrs r0, r3 + strh r0, [r2] +_0803581C: + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080357D4 + subs r5, 0x1 + cmp r5, 0 + bge _080357D2 + ldr r2, _08035898 @ =0x06000600 + movs r5, 0 + movs r7, 0xF0 + lsls r7, 8 +_08035832: + adds r3, r5, 0x1 + movs r4, 0xF +_08035836: + ldrh r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _0803584A + movs r5, 0xC0 + lsls r5, 7 + adds r0, r5, 0 + orrs r0, r1 + strh r0, [r2] +_0803584A: + ldrh r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _0803585E + movs r5, 0xC0 + lsls r5, 3 + adds r0, r5, 0 + orrs r0, r1 + strh r0, [r2] +_0803585E: + ldrh r1, [r2] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + bne _0803586E + movs r0, 0x60 + orrs r0, r1 + strh r0, [r2] +_0803586E: + ldrh r1, [r2] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0803587E + movs r0, 0x6 + orrs r0, r1 + strh r0, [r2] +_0803587E: + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _08035836 + adds r5, r3, 0 + cmp r5, 0x11 + ble _08035832 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08035894: .4byte 0x06000240 +_08035898: .4byte 0x06000600 + thumb_func_end sub_80357C8 + + thumb_func_start sub_803589C +sub_803589C: @ 803589C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + ldr r0, _080358CC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r2, [r0] + lsls r0, r4, 2 + adds r0, r2 + movs r3, 0 + movs r2, 0 + strh r2, [r0, 0x2] + ldr r0, _080358D0 @ =gUnknown_2024024 + adds r0, r4, r0 + strb r3, [r0] + cmp r1, 0 + bne _080358C4 + adds r0, r4, 0 + bl sub_8035228 +_080358C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080358CC: .4byte gUnknown_2024018 +_080358D0: .4byte gUnknown_2024024 + thumb_func_end sub_803589C + + thumb_func_start sub_80358D4 +sub_80358D4: @ 80358D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + ldr r4, _080359A4 @ =gUnknown_202401C + str r6, [r4] + movs r0, 0xC0 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0x80 + lsls r0, 8 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1] +_080358FA: + ldr r0, _080359A4 @ =gUnknown_202401C + ldr r1, [r0] + lsls r4, r6, 2 + adds r2, r1, 0x4 + adds r2, r4 + lsls r3, r6, 13 + ldr r0, [r1] + adds r0, r3 + str r0, [r2] + lsls r3, r6, 1 + adds r0, r3, r6 + lsls r0, 3 + adds r1, r0, r1 + ldr r2, _080359A8 @ =gUnknown_825DEF0 + adds r1, 0x14 + adds r0, r2 + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + movs r5, 0 + mov r9, r3 + lsls r0, r6, 5 + mov r8, r0 + adds r1, r6, 0x1 + mov r10, r1 + mov r12, r8 + adds r7, r4, 0 +_08035932: + ldr r2, _080359A4 @ =gUnknown_202401C + ldr r1, [r2] + lsls r4, r5, 3 + add r4, r12 + adds r3, r1, 0 + adds r3, 0x74 + adds r3, r4 + adds r0, r1, 0x4 + adds r0, r7 + lsls r2, r5, 11 + ldr r0, [r0] + adds r0, r2 + str r0, [r3] + adds r1, r4 + adds r1, 0x78 + movs r0, 0x80 + lsls r0, 4 + strh r0, [r1] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _08035932 + ldr r1, _080359A4 @ =gUnknown_202401C + ldr r2, [r1] + mov r5, r9 + adds r0, r5, r6 + lsls r0, 3 + adds r1, r2, 0 + adds r1, 0x20 + adds r1, r0 + mov r0, r8 + adds r0, 0x74 + adds r2, r0 + str r2, [r1] + mov r7, r10 + lsls r0, r7, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _080358FA + movs r0, 0x80 + lsls r0, 5 + bl sub_8002BB0 + ldr r1, _080359A4 @ =gUnknown_202401C + ldr r1, [r1] + movs r2, 0xBA + lsls r2, 1 + adds r1, r2 + str r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080359A4: .4byte gUnknown_202401C +_080359A8: .4byte gUnknown_825DEF0 + thumb_func_end sub_80358D4 + + thumb_func_start sub_80359AC +sub_80359AC: @ 80359AC + push {r4-r6,lr} + ldr r6, _08035A24 @ =gUnknown_202401C + ldr r0, [r6] + cmp r0, 0 + beq _08035A1E + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080359D2 + bl sub_8002BC4 + ldr r0, [r6] + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + movs r1, 0 + str r1, [r0] +_080359D2: + ldr r0, [r6] + movs r1, 0xBC + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080359F0 + bl sub_8002BC4 + ldr r0, [r6] + movs r1, 0xBC + lsls r1, 1 + adds r0, r1 + movs r1, 0 + str r1, [r0] +_080359F0: + ldr r0, [r6] + movs r5, 0xBA + lsls r5, 1 + adds r0, r5 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r6] + adds r5, r0, r5 + movs r4, 0 + str r4, [r5] + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r6] + str r4, [r0] + str r4, [r0, 0x4] + str r4, [r0, 0x8] + str r4, [r0, 0xC] + str r4, [r0, 0x10] + bl sub_8002BC4 + str r4, [r6] +_08035A1E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08035A24: .4byte gUnknown_202401C + thumb_func_end sub_80359AC + + thumb_func_start sub_8035A28 +sub_8035A28: @ 8035A28 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x37 + bl sub_803FBE8 + ldr r1, _08035A6C @ =0x00000fff + ands r1, r0 + cmp r1, 0 + bne _08035A70 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r4, 16 + asrs r4, 16 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + bl sub_804A614 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + ble _08035A70 + movs r0, 0x1 + b _08035A72 + .align 2, 0 +_08035A6C: .4byte 0x00000fff +_08035A70: + movs r0, 0 +_08035A72: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8035A28 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_interface.s b/asm/battle_interface.s new file mode 100644 index 000000000..cfd0ca01a --- /dev/null +++ b/asm/battle_interface.s @@ -0,0 +1,5660 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8047B0C +sub_8047B0C: @ 8047B0C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r7, r1, 0 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + movs r3, 0 + movs r2, 0 +_08047B28: + lsls r0, r3, 24 + asrs r0, 24 + mov r3, sp + adds r1, r3, r0 + strb r2, [r1] + adds r0, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + asrs r0, 24 + cmp r0, 0x3 + ble _08047B28 + movs r3, 0x3 + movs r0, 0x1 + negs r0, r0 + mov r9, r0 + mov r8, sp +_08047B48: + lsls r0, r5, 16 + asrs r6, r0, 16 + cmp r6, 0 + ble _08047B76 + lsls r4, r3, 24 + asrs r4, 24 + mov r1, sp + adds r5, r1, r4 + adds r0, r6, 0 + movs r1, 0xA + bl __modsi3 + strb r0, [r5] + adds r0, r6, 0 + movs r1, 0xA + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + subs r4, 0x1 + lsls r4, 24 + lsrs r3, r4, 24 + b _08047B48 +_08047B76: + lsls r1, r3, 24 + asrs r0, r1, 24 + cmp r0, r9 + ble _08047B9A + movs r4, 0xFF + movs r3, 0x1 + negs r3, r3 +_08047B84: + asrs r2, r1, 24 + mov r5, sp + adds r1, r5, r2 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + subs r2, 0x1 + lsls r1, r2, 24 + asrs r0, r1, 24 + cmp r0, r3 + bgt _08047B84 +_08047B9A: + mov r1, r8 + ldrb r0, [r1, 0x3] + cmp r0, 0xFF + bne _08047BA6 + movs r0, 0 + strb r0, [r1, 0x3] +_08047BA6: + mov r2, r10 + cmp r2, 0 + bne _08047C36 + movs r3, 0 + movs r1, 0 + movs r6, 0xFC + lsls r6, 8 + movs r5, 0x1E + mov r12, r5 +_08047BB8: + lsls r1, 24 + asrs r2, r1, 24 + mov r0, sp + adds r5, r0, r2 + ldrb r0, [r5] + mov r8, r1 + cmp r0, 0xFF + bne _08047BEE + lsls r1, r2, 1 + adds r1, r7 + ldrh r2, [r1] + adds r0, r6, 0 + ands r0, r2 + mov r2, r12 + orrs r0, r2 + strh r0, [r1] + lsls r3, 24 + asrs r1, r3, 23 + adds r1, r7 + adds r1, 0x40 + ldrh r2, [r1] + adds r0, r6, 0 + ands r0, r2 + mov r5, r12 + orrs r0, r5 + strh r0, [r1] + b _08047C1E +_08047BEE: + lsls r2, 1 + adds r2, r7 + ldrh r0, [r2] + adds r1, r6, 0 + ands r1, r0 + ldrb r0, [r5] + adds r0, 0x14 + orrs r1, r0 + strh r1, [r2] + lsls r4, r3, 24 + asrs r3, r4, 24 + lsls r2, r3, 1 + adds r2, r7 + adds r2, 0x40 + ldrh r0, [r2] + adds r1, r6, 0 + ands r1, r0 + mov r5, sp + adds r0, r5, r3 + ldrb r0, [r0] + adds r0, 0x34 + orrs r1, r0 + strh r1, [r2] + adds r3, r4, 0 +_08047C1E: + movs r0, 0x80 + lsls r0, 17 + add r0, r8 + lsrs r1, r0, 24 + movs r2, 0x80 + lsls r2, 17 + adds r0, r3, r2 + lsrs r3, r0, 24 + asrs r0, 24 + cmp r0, 0x3 + ble _08047BB8 + b _08047C9A +_08047C36: + movs r3, 0 + movs r4, 0xFC + lsls r4, 8 + movs r6, 0x1E +_08047C3E: + lsls r1, r3, 24 + asrs r2, r1, 24 + mov r3, sp + adds r5, r3, r2 + ldrb r0, [r5] + adds r3, r1, 0 + cmp r0, 0xFF + bne _08047C6A + lsls r1, r2, 1 + adds r1, r7 + ldrh r2, [r1] + adds r0, r4, 0 + ands r0, r2 + orrs r0, r6 + strh r0, [r1] + adds r1, 0x40 + ldrh r2, [r1] + adds r0, r4, 0 + ands r0, r2 + orrs r0, r6 + strh r0, [r1] + b _08047C8C +_08047C6A: + lsls r2, 1 + adds r2, r7 + ldrh r0, [r2] + adds r1, r4, 0 + ands r1, r0 + ldrb r0, [r5] + adds r0, 0x14 + orrs r1, r0 + strh r1, [r2] + adds r2, 0x40 + ldrh r0, [r2] + adds r1, r4, 0 + ands r1, r0 + ldrb r0, [r5] + adds r0, 0x34 + orrs r1, r0 + strh r1, [r2] +_08047C8C: + movs r5, 0x80 + lsls r5, 17 + adds r0, r3, r5 + lsrs r3, r0, 24 + asrs r0, 24 + cmp r0, 0x3 + ble _08047C3E +_08047C9A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8047B0C + + thumb_func_start sub_8047CAC +sub_8047CAC: @ 8047CAC + push {r4,r5,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + movs r1, 0x1E + strh r1, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + adds r1, r5, 0 + movs r2, 0 + bl sub_8047B0C + lsls r4, 16 + asrs r4, 16 + adds r5, 0xA + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_8047B0C + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8047CAC + + thumb_func_start sub_8047CE0 +sub_8047CE0: @ 8047CE0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r0, 0 + str r0, [sp] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08047DF4 + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08047D78 + ldr r4, _08047D68 @ =gUnknown_8260278 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _08047D6C @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x1] + movs r3, 0x3F + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1, 0x1] + lsls r2, r7, 4 + adds r2, r7 + lsls r2, 2 + adds r2, r4 + ldrb r0, [r2, 0x1] + ands r3, r0 + strb r3, [r2, 0x1] + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x40 + ldr r4, _08047D70 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _08047D74 @ =0xfffffc00 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] + b _08047DBE + .align 2, 0 +_08047D68: .4byte gUnknown_8260278 +_08047D6C: .4byte gUnknown_202063C +_08047D70: .4byte 0x000003ff +_08047D74: .4byte 0xfffffc00 +_08047D78: + ldr r4, _08047DE0 @ =gUnknown_82602A8 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08047DE4 @ =gUnknown_202063C + lsls r2, r7, 4 + adds r2, r7 + lsls r2, 2 + adds r2, r0 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x20 + ldr r5, _08047DE8 @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _08047DEC @ =0xfffffc00 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] + movs r0, 0x2 + str r0, [sp] +_08047DBE: + ldr r2, _08047DE4 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r2 + strh r7, [r0, 0x6] + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + adds r1, r0, r2 + strh r6, [r1, 0x38] + adds r2, 0x1C + adds r0, r2 + ldr r1, _08047DF0 @ =sub_8048128 + str r1, [r0] + b _08047F1C + .align 2, 0 +_08047DE0: .4byte gUnknown_82602A8 +_08047DE4: .4byte gUnknown_202063C +_08047DE8: .4byte 0x000003ff +_08047DEC: .4byte 0xfffffc00 +_08047DF0: .4byte sub_8048128 +_08047DF4: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08047E98 + mov r0, r10 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 25 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r4, _08047E84 @ =gUnknown_8260278 + adds r0, r4 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + mov r0, r10 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 25 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _08047E88 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r4 + strh r7, [r0, 0x6] + lsls r2, r7, 4 + adds r2, r7 + lsls r2, 2 + adds r3, r2, r4 + strh r6, [r3, 0x38] + ldrh r1, [r3, 0x4] + mov r8, r1 + mov r5, r8 + lsls r1, r5, 22 + lsrs r1, 22 + adds r1, 0x20 + ldr r5, _08047E8C @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _08047E90 @ =0xfffffc00 + mov r5, r8 + ands r0, r5 + orrs r0, r1 + strh r0, [r3, 0x4] + adds r4, 0x1C + adds r2, r4 + ldr r0, _08047E94 @ =sub_8048128 + str r0, [r2] + movs r0, 0x1 + b _08047F1A + .align 2, 0 +_08047E84: .4byte gUnknown_8260278 +_08047E88: .4byte gUnknown_202063C +_08047E8C: .4byte 0x000003ff +_08047E90: .4byte 0xfffffc00 +_08047E94: .4byte sub_8048128 +_08047E98: + mov r0, r10 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 25 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r4, _08047FE0 @ =gUnknown_82602A8 + adds r0, r4 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + mov r0, r10 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 25 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _08047FE4 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r4 + strh r7, [r0, 0x6] + lsls r2, r7, 4 + adds r2, r7 + lsls r2, 2 + adds r3, r2, r4 + strh r6, [r3, 0x38] + ldrh r1, [r3, 0x4] + mov r8, r1 + mov r5, r8 + lsls r1, r5, 22 + lsrs r1, 22 + adds r1, 0x20 + ldr r5, _08047FE8 @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _08047FEC @ =0xfffffc00 + mov r5, r8 + ands r0, r5 + orrs r0, r1 + strh r0, [r3, 0x4] + adds r4, 0x1C + adds r2, r4 + ldr r0, _08047FF0 @ =sub_8048128 + str r0, [r2] + movs r0, 0x2 +_08047F1A: + str r0, [sp] +_08047F1C: + ldr r0, _08047FF4 @ =gUnknown_2023BD6 + add r0, r10 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r1, _08047FF8 @ =gUnknown_82602F8 + adds r0, r1 + movs r1, 0x8C + movs r2, 0x3C + movs r3, 0 + bl sub_8006FE0 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r1, _08047FE4 @ =gUnknown_202063C + mov r8, r1 + add r4, r8 + mov r0, r10 + bl sub_80751C4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 21 + ldr r0, _08047FFC @ =gUnknown_82603C4 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008A58 + adds r2, r4, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r2, 0x4 + mov r9, r2 + mov r1, r9 + orrs r0, r1 + strb r0, [r4, 0x5] + movs r0, 0x1 + bl sub_80480A8 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r2, _08048000 @ =0x06010000 + adds r1, r2 + ldr r2, _08048004 @ =0x04000010 + bl CpuSet + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + add r0, r8 + strh r5, [r0, 0x38] + mov r2, r10 + strh r2, [r0, 0x3A] + adds r0, 0x3E + ldrb r1, [r0] + mov r5, r9 + orrs r1, r5 + strb r1, [r0] + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + add r0, r8 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r5 + strb r1, [r0] + strh r6, [r4, 0x38] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x3A] + adds r4, 0x3E + ldrb r0, [r4] + orrs r0, r5 + strb r0, [r4] + adds r0, r6, 0 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08047FE0: .4byte gUnknown_82602A8 +_08047FE4: .4byte gUnknown_202063C +_08047FE8: .4byte 0x000003ff +_08047FEC: .4byte 0xfffffc00 +_08047FF0: .4byte sub_8048128 +_08047FF4: .4byte gUnknown_2023BD6 +_08047FF8: .4byte gUnknown_82602F8 +_08047FFC: .4byte gUnknown_82603C4 +_08048000: .4byte 0x06010000 +_08048004: .4byte 0x04000010 + thumb_func_end sub_8047CE0 + + thumb_func_start sub_8048008 +sub_8048008: @ 8048008 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, _08048094 @ =gUnknown_82602D8 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006F8C + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08048098 @ =gUnknown_202063C + mov r9, r1 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + add r4, r9 + ldrb r3, [r4, 0x1] + movs r2, 0x3F + adds r1, r2, 0 + ands r1, r3 + strb r1, [r4, 0x1] + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + mov r7, r9 + adds r5, r3, r7 + ldrb r1, [r5, 0x1] + ands r2, r1 + strb r2, [r5, 0x1] + ldrh r1, [r5, 0x4] + mov r8, r1 + mov r7, r8 + lsls r2, r7, 22 + lsrs r2, 22 + adds r2, 0x40 + ldr r7, _0804809C @ =0x000003ff + adds r1, r7, 0 + ands r2, r1 + ldr r1, _080480A0 @ =0xfffffc00 + mov r7, r8 + ands r1, r7 + orrs r1, r2 + strh r1, [r5, 0x4] + strh r0, [r4, 0x6] + strh r6, [r5, 0x38] + movs r0, 0x1C + add r9, r0 + add r3, r9 + ldr r0, _080480A4 @ =sub_8048128 + str r0, [r3] + adds r0, r6, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08048094: .4byte gUnknown_82602D8 +_08048098: .4byte gUnknown_202063C +_0804809C: .4byte 0x000003ff +_080480A0: .4byte 0xfffffc00 +_080480A4: .4byte sub_8048128 + thumb_func_end sub_8048008 + + thumb_func_start sub_80480A8 +sub_80480A8: @ 80480A8 + lsls r0, 24 + lsrs r0, 19 + ldr r1, _080480B4 @ =gUnknown_8D11BC4 + adds r0, r1 + bx lr + .align 2, 0 +_080480B4: .4byte gUnknown_8D11BC4 + thumb_func_end sub_80480A8 + + thumb_func_start sub_80480B8 +sub_80480B8: @ 80480B8 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080480E8 + cmp r0, 0x1 + bgt _080480FC + cmp r0, 0 + bne _080480FC + ldr r2, _080480E4 @ =gUnknown_202063C + lsls r3, r5, 4 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x20] + adds r0, 0x10 + b _0804810A + .align 2, 0 +_080480E4: .4byte gUnknown_202063C +_080480E8: + ldr r2, _080480F8 @ =gUnknown_202063C + lsls r3, r5, 4 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x20] + adds r0, 0x10 + b _0804810A + .align 2, 0 +_080480F8: .4byte gUnknown_202063C +_080480FC: + ldr r2, _08048124 @ =gUnknown_202063C + lsls r3, r5, 4 + adds r1, r3, r5 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x20] + adds r0, 0x8 +_0804810A: + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x22] + strh r0, [r4, 0x22] + adds r0, r3, r5 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + strh r1, [r4, 0x24] + ldrh r0, [r0, 0x26] + strh r0, [r4, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08048124: .4byte gUnknown_202063C + thumb_func_end sub_80480B8 + + thumb_func_start sub_8048128 +sub_8048128: @ 8048128 + ldrh r1, [r0, 0x38] + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0804814C @ =gUnknown_202063C + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r3 + ldrh r1, [r2, 0x20] + adds r1, 0x40 + strh r1, [r0, 0x20] + ldrh r1, [r2, 0x22] + strh r1, [r0, 0x22] + ldrh r1, [r2, 0x24] + strh r1, [r0, 0x24] + ldrh r1, [r2, 0x26] + strh r1, [r0, 0x26] + bx lr + .align 2, 0 +_0804814C: .4byte gUnknown_202063C + thumb_func_end sub_8048128 + + thumb_func_start sub_8048150 +sub_8048150: @ 8048150 + push {r4-r7,lr} + ldr r7, [sp, 0x14] + lsls r0, 24 + lsrs r0, 24 + ldr r6, _08048180 @ =gUnknown_2024018 + ldr r4, [r6] + ldr r5, [r4, 0xC] + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 2 + adds r5, r4, r5 + strb r1, [r5] + ldr r0, [r6] + ldr r0, [r0, 0xC] + adds r4, r0 + str r2, [r4, 0x4] + str r3, [r4, 0x8] + str r7, [r4, 0xC] + ldr r0, _08048184 @ =0xffff8000 + str r0, [r4, 0x10] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08048180: .4byte gUnknown_2024018 +_08048184: .4byte 0xffff8000 + thumb_func_end sub_8048150 + + thumb_func_start sub_8048188 +sub_8048188: @ 8048188 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080481D0 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + adds r1, r2, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r3, 0x4 + orrs r0, r3 + strb r0, [r1] + movs r0, 0x38 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + ldrh r1, [r2, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080481D0: .4byte gUnknown_202063C + thumb_func_end sub_8048188 + + thumb_func_start sub_80481D4 +sub_80481D4: @ 80481D4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08048224 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + adds r4, r2, 0 + adds r4, 0x3E + ldrb r1, [r4] + movs r3, 0x5 + negs r3, r3 + adds r0, r3, 0 + ands r0, r1 + strb r0, [r4] + movs r0, 0x38 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r4, [r0] + adds r1, r3, 0 + ands r1, r4 + strb r1, [r0] + ldrh r1, [r2, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08048224: .4byte gUnknown_202063C + thumb_func_end sub_80481D4 + + thumb_func_start sub_8048228 +sub_8048228: @ 8048228 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08048244 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r3, r4 + strh r1, [r3, 0x20] + strh r2, [r3, 0x22] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08048244: .4byte gUnknown_202063C + thumb_func_end sub_8048228 + + thumb_func_start sub_8048248 +sub_8048248: @ 8048248 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08048284 @ =gUnknown_202063C + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r5 + ldrh r1, [r4, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + movs r0, 0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + adds r0, r4, 0 + bl sub_8007280 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08048284: .4byte gUnknown_202063C + thumb_func_end sub_8048248 + + thumb_func_start nullsub_21 +nullsub_21: @ 8048288 + bx lr + thumb_func_end nullsub_21 + + thumb_func_start sub_804828C +sub_804828C: @ 804828C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + ldr r1, _08048310 @ =gUnknown_2023BCC + mov r8, r1 + ldrb r2, [r1] + cmp r6, r2 + bge _08048304 + ldr r1, _08048314 @ =gUnknown_202063C + mov r12, r1 + movs r1, 0x3 + ands r0, r1 + lsls r5, r0, 2 + movs r7, 0xD + negs r7, r7 + ldr r2, _08048318 @ =gUnknown_3004FF0 + mov r9, r2 +_080482B6: + mov r1, r9 + adds r0, r6, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r12 + ldrb r4, [r1, 0x6] + ldrh r3, [r1, 0x38] + lsls r3, 24 + lsrs r3, 24 + ldrb r2, [r1, 0x5] + adds r0, r7, 0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, 0x5] + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + add r1, r12 + ldrb r2, [r1, 0x5] + adds r0, r7, 0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, 0x5] + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + add r1, r12 + ldrb r2, [r1, 0x5] + adds r0, r7, 0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, 0x5] + adds r6, 0x1 + mov r2, r8 + ldrb r2, [r2] + cmp r6, r2 + blt _080482B6 +_08048304: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08048310: .4byte gUnknown_2023BCC +_08048314: .4byte gUnknown_202063C +_08048318: .4byte gUnknown_3004FF0 + thumb_func_end sub_804828C + + thumb_func_start sub_804831C +sub_804831C: @ 804831C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + movs r4, 0 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08048348 + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08048342 + movs r5, 0x2C + movs r4, 0x1E + b _08048380 +_08048342: + movs r5, 0x9E + movs r4, 0x58 + b _08048380 +_08048348: + adds r0, r6, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08048376 + cmp r0, 0x1 + bgt _08048360 + cmp r0, 0 + beq _0804836A + b _08048380 +_08048360: + cmp r0, 0x2 + beq _08048370 + cmp r0, 0x3 + beq _0804837C + b _08048380 +_0804836A: + movs r5, 0x9F + movs r4, 0x4B + b _08048380 +_08048370: + movs r5, 0xAB + movs r4, 0x64 + b _08048380 +_08048376: + movs r5, 0x2C + movs r4, 0x13 + b _08048380 +_0804837C: + movs r5, 0x20 + movs r4, 0x2C +_08048380: + ldr r0, _08048394 @ =gUnknown_3004FF0 + adds r0, r6, r0 + ldrb r0, [r0] + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8048228 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08048394: .4byte gUnknown_3004FF0 + thumb_func_end sub_804831C + + thumb_func_start sub_8048398 +sub_8048398: @ 8048398 + push {r4-r6,lr} + sub sp, 0x14 + adds r5, r0, 0 + adds r4, r1, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _08048410 @ =gUnknown_826051C + mov r0, sp + movs r2, 0x10 + bl memcpy + mov r0, sp + adds r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + adds r1, r0, 0 + subs r1, 0x2 + mov r0, sp + subs r1, r0 + movs r0, 0x3 + subs r0, r1 + lsls r1, r0, 2 + adds r1, r0 + add r3, sp, 0x10 + mov r0, sp + movs r2, 0x3 + bl sub_804A648 + adds r6, r0, 0 + ldr r0, _08048414 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r4, r0, 17 + ldrh r0, [r1, 0x3A] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08048420 + bl sub_8075290 + lsls r0, 24 + ldr r2, _08048418 @ =0x06010420 + adds r1, r4, r2 + cmp r0, 0 + bne _08048424 + ldr r0, _0804841C @ =0x06010820 + adds r1, r4, r0 + b _08048424 + .align 2, 0 +_08048410: .4byte gUnknown_826051C +_08048414: .4byte gUnknown_202063C +_08048418: .4byte 0x06010420 +_0804841C: .4byte 0x06010820 +_08048420: + ldr r2, _0804843C @ =0x06010400 + adds r1, r4, r2 +_08048424: + adds r0, r1, 0 + adds r1, r6, 0 + movs r2, 0x3 + bl sub_804A6E8 + ldr r0, [sp, 0x10] + bl sub_804A6D8 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804843C: .4byte 0x06010400 + thumb_func_end sub_8048398 + + thumb_func_start sub_8048440 +sub_8048440: @ 8048440 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldr r1, _080484B4 @ =gUnknown_202063C + lsls r0, 4 + add r0, r9 + lsls r0, 2 + adds r4, r0, r1 + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08048514 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08048514 + mov r0, r8 + cmp r0, 0 + beq _080484BC + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + add r0, sp, 0x10 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + add r3, sp, 0x2C + add r0, sp, 0x10 + movs r1, 0 + movs r2, 0x5 + bl sub_804A648 + adds r5, r0, 0 + ldrh r0, [r4, 0x4] + lsls r0, 22 + lsrs r0, 17 + ldr r1, _080484B8 @ =0x06010a40 + adds r0, r1 + adds r1, r5, 0 + b _080484FE + .align 2, 0 +_080484B4: .4byte gUnknown_202063C +_080484B8: .4byte 0x06010a40 +_080484BC: + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + add r0, sp, 0x10 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + movs r1, 0xBA + strb r1, [r0] + movs r1, 0xFF + strb r1, [r0, 0x1] + add r3, sp, 0x2C + add r0, sp, 0x10 + movs r1, 0x4 + movs r2, 0x5 + bl sub_804A648 + adds r5, r0, 0 + ldrh r4, [r4, 0x4] + lsls r4, 22 + lsrs r4, 17 + ldr r1, _0804850C @ =0x060102e0 + adds r0, r4, r1 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_804A6E8 + ldr r2, _08048510 @ =0x06010a00 + adds r4, r2 + adds r1, r5, 0 + adds r1, 0x20 + adds r0, r4, 0 +_080484FE: + movs r2, 0x2 + bl sub_804A6E8 + ldr r0, [sp, 0x2C] + bl sub_804A6D8 + b _080485F8 + .align 2, 0 +_0804850C: .4byte 0x060102e0 +_08048510: .4byte 0x06010a00 +_08048514: + add r5, sp, 0x18 + ldr r1, _0804855C @ =gUnknown_826052C + adds r0, r5, 0 + movs r2, 0x14 + bl memcpy + ldr r1, _08048560 @ =gUnknown_202063C + mov r0, r9 + lsls r4, r0, 4 + adds r0, r4, r0 + lsls r0, 2 + adds r7, r0, r1 + ldrh r0, [r7, 0x3A] + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0804854C + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08048564 +_0804854C: + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + mov r0, r9 + mov r2, r8 + bl sub_8048618 + b _080485F8 + .align 2, 0 +_0804855C: .4byte gUnknown_826052C +_08048560: .4byte gUnknown_202063C +_08048564: + ldrh r0, [r7, 0x3A] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08048580 + movs r6, 0x59 + mov r0, r8 + cmp r0, 0 + bne _0804858A + movs r6, 0x1D + b _0804858A +_08048580: + movs r6, 0x30 + mov r1, r8 + cmp r1, 0 + bne _0804858A + movs r6, 0x14 +_0804858A: + mov r0, sp + adds r0, 0x1E + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, _08048608 @ =gUnknown_202401C + ldr r0, [r0] + movs r1, 0xBA + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + str r1, [sp, 0x8] + str r1, [sp, 0xC] + adds r2, r5, 0 + movs r3, 0 + bl sub_8006124 + movs r5, 0 + ldr r1, _0804860C @ =gUnknown_202063C + mov r2, r9 + adds r0, r4, r2 + lsls r0, 2 + adds r4, r0, r1 +_080485C6: + ldr r0, _08048608 @ =gUnknown_202401C + ldr r0, [r0] + movs r1, 0xBA + lsls r1, 1 + adds r0, r1 + lsls r1, r5, 6 + adds r1, 0x20 + ldr r0, [r0] + adds r0, r1 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r1, r6 + adds r1, r5 + lsls r1, 5 + ldr r2, _08048610 @ =0x06010000 + adds r1, r2 + ldr r2, _08048614 @ =0x04000008 + bl CpuSet + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _080485C6 +_080485F8: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08048608: .4byte gUnknown_202401C +_0804860C: .4byte gUnknown_202063C +_08048610: .4byte 0x06010000 +_08048614: .4byte 0x04000008 + thumb_func_end sub_8048440 + + thumb_func_start sub_8048618 +sub_8048618: @ 8048618 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldr r1, _080486F8 @ =gUnknown_8260542 + add r0, sp, 0x10 + movs r2, 0x14 + bl memcpy + ldr r5, _080486FC @ =gUnknown_202063C + mov r1, r9 + lsls r0, r1, 4 + add r0, r9 + lsls r0, 2 + adds r2, r0, r5 + ldrh r0, [r2, 0x3A] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _08048700 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + mov r3, r10 + lsls r0, r3, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0804866A + b _080487DC +_0804866A: + movs r6, 0x4 + mov r1, r8 + negs r0, r1 + orrs r0, r1 + asrs r0, 31 + ands r6, r0 + ldrh r0, [r2, 0x38] + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, sp + adds r0, 0x16 + lsls r1, r4, 16 + asrs r1, 16 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + mov r2, r8 + cmp r2, 0 + bne _08048698 + ldr r1, _08048704 @ =gUnknown_8260540 + bl sub_8008D84 +_08048698: + ldr r0, _08048708 @ =gUnknown_202401C + ldr r0, [r0] + movs r3, 0xBA + lsls r3, 1 + adds r0, r3 + ldr r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + str r1, [sp, 0x8] + str r1, [sp, 0xC] + add r2, sp, 0x10 + movs r3, 0 + bl sub_8006124 + adds r4, r6, 0 + adds r0, r4, 0x3 + cmp r4, r0 + bge _08048748 + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + adds r5, r0, r5 +_080486C6: + cmp r4, 0x2 + bhi _08048714 + ldr r0, _08048708 @ =gUnknown_202401C + ldr r0, [r0] + movs r1, 0xBA + lsls r1, 1 + adds r0, r1 + subs r1, r4, r6 + lsls r1, 6 + adds r1, 0x20 + ldr r0, [r0] + adds r0, r1 + ldrh r1, [r5, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r4, 0x1 + adds r1, r4 + lsls r1, 5 + ldr r2, _0804870C @ =0x06010000 + adds r1, r2 + ldr r2, _08048710 @ =0x04000008 + bl CpuSet + b _0804873E + .align 2, 0 +_080486F8: .4byte gUnknown_8260542 +_080486FC: .4byte gUnknown_202063C +_08048700: .4byte gUnknown_2024018 +_08048704: .4byte gUnknown_8260540 +_08048708: .4byte gUnknown_202401C +_0804870C: .4byte 0x06010000 +_08048710: .4byte 0x04000008 +_08048714: + ldr r0, _08048790 @ =gUnknown_202401C + ldr r0, [r0] + movs r3, 0xBA + lsls r3, 1 + adds r0, r3 + subs r1, r4, r6 + lsls r1, 6 + adds r1, 0x20 + ldr r0, [r0] + adds r0, r1 + ldrh r1, [r5, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r1, r4, r1 + lsls r1, 5 + ldr r2, _08048794 @ =0x06010020 + adds r1, r2 + ldr r2, _08048798 @ =0x04000008 + bl CpuSet + adds r4, 0x1 +_0804873E: + lsls r0, r4, 24 + lsrs r4, r0, 24 + adds r0, r6, 0x3 + cmp r4, r0 + blt _080486C6 +_08048748: + mov r3, r8 + cmp r3, 0 + bne _080487A8 + ldr r0, _08048790 @ =gUnknown_202401C + ldr r0, [r0] + movs r1, 0xBA + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + adds r0, 0xE0 + ldr r1, _0804879C @ =gUnknown_202063C + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r1 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 17 + adds r1, 0x80 + ldr r5, _080487A0 @ =0x06010000 + adds r1, r5 + ldr r2, _08048798 @ =0x04000008 + bl CpuSet + mov r2, r8 + str r2, [sp, 0x24] + add r0, sp, 0x24 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 17 + adds r1, r5 + ldr r2, _080487A4 @ =0x05000008 + bl CpuSet + b _080487DC + .align 2, 0 +_08048790: .4byte gUnknown_202401C +_08048794: .4byte 0x06010020 +_08048798: .4byte 0x04000008 +_0804879C: .4byte gUnknown_202063C +_080487A0: .4byte 0x06010000 +_080487A4: .4byte 0x05000008 +_080487A8: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080487DC + movs r0, 0x74 + bl sub_80480A8 + ldr r2, _080487EC @ =gUnknown_202063C + mov r3, r9 + lsls r1, r3, 4 + add r1, r9 + lsls r1, 2 + adds r1, r2 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 17 + movs r2, 0xD0 + lsls r2, 3 + adds r1, r2 + ldr r2, _080487F0 @ =0x06010000 + adds r1, r2 + ldr r2, _080487F4 @ =0x04000008 + bl CpuSet +_080487DC: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080487EC: .4byte gUnknown_202063C +_080487F0: .4byte 0x06010000 +_080487F4: .4byte 0x04000008 + thumb_func_end sub_8048618 + + thumb_func_start sub_80487F8 +sub_80487F8: @ 80487F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] + ldr r1, _080488AC @ =gUnknown_826052C + add r0, sp, 0x10 + movs r2, 0x14 + bl memcpy + ldr r1, _080488B0 @ =gUnknown_202063C + ldr r2, [sp, 0x24] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x3A] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + ldr r1, _080488B4 @ =gUnknown_202401C + ldr r2, [r1] + movs r3, 0xBA + lsls r3, 1 + adds r2, r3 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 7 + movs r0, 0xA4 + lsls r0, 3 + adds r1, r0 + ldr r0, [r2] + adds r6, r0, r1 + movs r1, 0x5 + mov r8, r1 + adds r0, r4, 0 + bl sub_8042E9C + lsls r0, 24 + mov r4, sp + adds r4, 0x16 + ldr r1, _080488B8 @ =gUnknown_8463E60 + lsrs r0, 22 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008D84 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r6, 0 + movs r1, 0 + add r2, sp, 0x10 + movs r3, 0 + bl sub_8006124 + movs r7, 0x6 + movs r5, 0 + mov r2, sp + adds r2, 0x19 + str r2, [sp, 0x28] +_08048888: + mov r0, sp + adds r0, r7 + adds r0, 0x10 + ldrb r1, [r0] + adds r0, r1, 0 + subs r0, 0x37 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bls _080488A8 + adds r0, r1, 0 + adds r0, 0x79 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _080488BC +_080488A8: + movs r0, 0x2C + b _080488DA + .align 2, 0 +_080488AC: .4byte gUnknown_826052C +_080488B0: .4byte gUnknown_202063C +_080488B4: .4byte gUnknown_202401C +_080488B8: .4byte gUnknown_8463E60 +_080488BC: + adds r0, r1, 0 + subs r0, 0x4B + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bls _080488D4 + adds r0, r1, 0 + adds r0, 0x65 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _080488D8 +_080488D4: + movs r0, 0x2D + b _080488DA +_080488D8: + movs r0, 0x2B +_080488DA: + bl sub_80480A8 + lsls r1, r5, 6 + adds r1, r6, r1 + ldr r2, _080489F8 @ =0x04000008 + bl CpuSet + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, 0x1 + cmp r5, r8 + bcc _08048888 + movs r7, 0x1 + ldr r3, [sp, 0x24] + lsls r3, 4 + str r3, [sp, 0x2C] + movs r0, 0x1 + add r0, r8 + mov r9, r0 + cmp r7, r9 + bge _08048966 + ldr r1, _080489FC @ =gUnknown_202063C + ldr r2, _080489F8 @ =0x04000008 + mov r10, r2 + ldr r2, [sp, 0x24] + adds r0, r3, r2 + lsls r0, 2 + adds r0, r1 + mov r8, r0 +_08048916: + mov r3, r8 + ldrh r0, [r3, 0x4] + lsls r0, 22 + lsrs r0, 22 + adds r5, r7, 0 + cmp r7, 0 + bge _08048926 + adds r5, r7, 0x7 +_08048926: + asrs r5, 3 + lsls r4, r5, 3 + subs r4, r7, r4 + adds r0, r4 + lsls r5, 6 + adds r0, r5 + lsls r0, 5 + ldr r2, _08048A00 @ =0x06010000 + adds r1, r0, r2 + adds r0, r6, 0 + mov r2, r10 + bl CpuSet + adds r6, 0x20 + mov r3, r8 + ldrh r0, [r3, 0x4] + lsls r0, 22 + lsrs r0, 22 + adds r4, 0x8 + adds r0, r4 + adds r0, r5 + lsls r0, 5 + ldr r2, _08048A00 @ =0x06010000 + adds r1, r0, r2 + adds r0, r6, 0 + mov r2, r10 + bl CpuSet + adds r6, 0x20 + adds r7, 0x1 + cmp r7, r9 + blt _08048916 +_08048966: + ldr r6, _080489FC @ =gUnknown_202063C + ldr r3, [sp, 0x2C] + ldr r1, [sp, 0x24] + adds r0, r3, r1 + lsls r0, 2 + adds r0, r6 + ldrh r4, [r0, 0x38] + lsls r4, 24 + lsrs r4, 24 + ldr r5, _08048A04 @ =gUnknown_2023FE8 + ldr r0, [r5] + adds r0, 0x7C + ldrb r1, [r0] + mov r0, sp + adds r0, 0x16 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, [r5] + adds r0, 0x7B + ldrb r1, [r0] + ldr r0, [sp, 0x28] + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + add r0, sp, 0x10 + movs r1, 0 + strb r1, [r0, 0x5] + adds r2, r0, 0 + movs r0, 0xBA + strb r0, [r2, 0x8] + ldr r5, _08048A08 @ =gUnknown_202401C + ldr r0, [r5] + movs r2, 0xBA + lsls r2, 1 + adds r0, r2 + ldr r0, [r0] + str r1, [sp] + str r1, [sp, 0x4] + str r1, [sp, 0x8] + str r1, [sp, 0xC] + add r2, sp, 0x10 + movs r3, 0 + bl sub_8006124 + movs r7, 0 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r6, r0, r6 + movs r4, 0x20 +_080489D0: + cmp r7, 0x1 + bgt _08048A0C + ldr r0, [r5] + movs r3, 0xBA + lsls r3, 1 + adds r0, r3 + ldr r0, [r0] + adds r0, r4 + ldrh r1, [r6, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r2, r7, 0x2 + adds r1, r2 + lsls r1, 5 + ldr r2, _08048A00 @ =0x06010000 + adds r1, r2 + ldr r2, _080489F8 @ =0x04000008 + bl CpuSet + b _08048A2C + .align 2, 0 +_080489F8: .4byte 0x04000008 +_080489FC: .4byte gUnknown_202063C +_08048A00: .4byte 0x06010000 +_08048A04: .4byte gUnknown_2023FE8 +_08048A08: .4byte gUnknown_202401C +_08048A0C: + ldr r0, [r5] + movs r3, 0xBA + lsls r3, 1 + adds r0, r3 + ldr r0, [r0] + adds r0, r4 + ldrh r1, [r6, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r1, r7, r1 + lsls r1, 5 + ldr r2, _08048A44 @ =0x060100c0 + adds r1, r2 + ldr r2, _08048A48 @ =0x04000008 + bl CpuSet +_08048A2C: + adds r4, 0x40 + adds r7, 0x1 + cmp r7, 0x4 + ble _080489D0 + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08048A44: .4byte 0x060100c0 +_08048A48: .4byte 0x04000008 + thumb_func_end sub_80487F8 + + thumb_func_start sub_8048A4C +sub_8048A4C: @ 8048A4C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0 + mov r9, r0 + ldr r0, _08048B78 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r9, r0 + blt _08048A66 + b _08048CF2 +_08048A66: + ldr r1, _08048B7C @ =gUnknown_202063C + mov r10, r1 + ldr r2, _08048B80 @ =gUnknown_2023BCE + mov r8, r2 +_08048A6E: + ldr r0, _08048B84 @ =gUnknown_3004FF0 + mov r1, r9 + adds r6, r1, r0 + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + mov r1, r10 + adds r1, 0x1C + adds r0, r1 + ldr r1, [r0] + ldr r0, _08048B88 @ =nullsub_8 + cmp r1, r0 + beq _08048A8C + b _08048CE0 +_08048A8C: + mov r2, r9 + lsls r0, r2, 24 + lsrs r7, r0, 24 + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08048AA2 + b _08048CE0 +_08048AA2: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08048ABA + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08048ABA + b _08048CE0 +_08048ABA: + ldr r5, _08048B8C @ =gUnknown_2024018 + ldr r0, [r5] + ldr r3, [r0] + mov r0, r9 + lsls r4, r0, 2 + adds r3, r4, r3 + ldr r0, [r3] + lsls r0, 27 + lsrs r0, 31 + movs r2, 0x1 + eors r2, r0 + lsls r2, 4 + mov r12, r2 + ldrb r0, [r3] + movs r2, 0x11 + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + mov r1, r12 + orrs r0, r1 + strb r0, [r3] + ldr r0, [r5] + ldr r0, [r0] + adds r4, r0 + ldr r0, [r4] + lsls r0, 27 + lsrs r4, r0, 31 + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08048BE8 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08048B08 + b _08048CE0 +_08048B08: + ldr r0, _08048B90 @ =gUnknown_2022B4C + ldr r2, [r0] + movs r0, 0x80 + ands r2, r0 + cmp r2, 0 + beq _08048B16 + b _08048CE0 +_08048B16: + cmp r4, 0x1 + bne _08048BA0 + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r0, [r0, 0x38] + lsls r0, 24 + lsrs r1, r0, 24 + str r2, [sp] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r1, [r0, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r2, _08048B94 @ =0x06010000 + adds r1, r2 + mov r0, sp + ldr r2, _08048B98 @ =0x05000040 + bl CpuSet + ldrb r4, [r6] + mov r1, r8 + ldrh r0, [r1] + movs r2, 0x64 + muls r0, r2 + ldr r1, _08048B9C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + bl sub_8048618 + ldrb r4, [r6] + mov r2, r8 + ldrh r0, [r2] + movs r1, 0x64 + muls r0, r1 + ldr r2, _08048B9C @ =gUnknown_2024284 + b _08048C6E + .align 2, 0 +_08048B78: .4byte gUnknown_2023BCC +_08048B7C: .4byte gUnknown_202063C +_08048B80: .4byte gUnknown_2023BCE +_08048B84: .4byte gUnknown_3004FF0 +_08048B88: .4byte nullsub_8 +_08048B8C: .4byte gUnknown_2024018 +_08048B90: .4byte gUnknown_2022B4C +_08048B94: .4byte 0x06010000 +_08048B98: .4byte 0x05000040 +_08048B9C: .4byte gUnknown_2024284 +_08048BA0: + ldrb r0, [r6] + bl sub_8049934 + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + movs r2, 0x64 + muls r1, r2 + ldr r2, _08048BDC @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0x5 + bl sub_8049D98 + movs r0, 0x75 + bl sub_80480A8 + ldrb r2, [r6] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r10 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r2, _08048BE0 @ =0x06010680 + adds r1, r2 + ldr r2, _08048BE4 @ =0x04000008 + bl CpuSet + b _08048CCA + .align 2, 0 +_08048BDC: .4byte gUnknown_2024284 +_08048BE0: .4byte 0x06010680 +_08048BE4: .4byte 0x04000008 +_08048BE8: + cmp r4, 0x1 + bne _08048C94 + ldr r0, _08048C0C @ =gUnknown_2022B4C + ldr r2, [r0] + movs r0, 0x80 + ands r2, r0 + cmp r2, 0 + beq _08048C14 + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + movs r2, 0x64 + muls r1, r2 + ldr r2, _08048C10 @ =gUnknown_202402C + adds r1, r2 + bl sub_80487F8 + b _08048CCA + .align 2, 0 +_08048C0C: .4byte gUnknown_2022B4C +_08048C10: .4byte gUnknown_202402C +_08048C14: + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r0, [r0, 0x38] + lsls r0, 24 + lsrs r1, r0, 24 + str r2, [sp] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r1, [r0, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r0, _08048C88 @ =0x06010000 + adds r1, r0 + mov r0, sp + ldr r2, _08048C8C @ =0x05000040 + bl CpuSet + ldrb r4, [r6] + mov r1, r8 + ldrh r0, [r1] + movs r2, 0x64 + muls r0, r2 + ldr r1, _08048C90 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + bl sub_8048618 + ldrb r4, [r6] + mov r2, r8 + ldrh r0, [r2] + movs r1, 0x64 + muls r0, r1 + ldr r2, _08048C90 @ =gUnknown_202402C +_08048C6E: + adds r0, r2 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_8048618 + b _08048CCA + .align 2, 0 +_08048C88: .4byte 0x06010000 +_08048C8C: .4byte 0x05000040 +_08048C90: .4byte gUnknown_202402C +_08048C94: + ldrb r0, [r6] + bl sub_8049934 + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + movs r5, 0x64 + muls r1, r5 + ldr r4, _08048D04 @ =gUnknown_202402C + adds r1, r4 + movs r2, 0x5 + bl sub_8049D98 + ldr r0, _08048D08 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08048CCA + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + muls r1, r5 + adds r1, r4 + movs r2, 0x4 + bl sub_8049D98 +_08048CCA: + ldr r0, _08048D0C @ =gUnknown_3004FF0 + add r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r1, [r0, 0x3C] + movs r2, 0x1 + eors r1, r2 + strh r1, [r0, 0x3C] +_08048CE0: + movs r0, 0x2 + add r8, r0 + movs r1, 0x1 + add r9, r1 + ldr r0, _08048D10 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r9, r0 + bge _08048CF2 + b _08048A6E +_08048CF2: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08048D04: .4byte gUnknown_202402C +_08048D08: .4byte gUnknown_2022B4C +_08048D0C: .4byte gUnknown_3004FF0 +_08048D10: .4byte gUnknown_2023BCC + thumb_func_end sub_8048A4C + + thumb_func_start sub_8048D14 +sub_8048D14: @ 8048D14 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + str r1, [sp, 0xC] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + lsls r2, 24 + lsrs r2, 24 + adds r4, r2, 0 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x10] + cmp r4, 0 + beq _08048D44 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _08048D88 +_08048D44: + ldr r0, [sp, 0x8] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08048D64 + movs r7, 0 + movs r1, 0x88 + movs r2, 0x60 + movs r0, 0x64 + mov r8, r0 + ldr r5, _08048D60 @ =0x0000fffb + b _08048D94 + .align 2, 0 +_08048D60: .4byte 0x0000fffb +_08048D64: + movs r7, 0x1 + cmp r4, 0 + beq _08048D74 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08048D7A +_08048D74: + movs r1, 0x68 + movs r2, 0x28 + b _08048D7E +_08048D7A: + movs r1, 0x68 + movs r2, 0x10 +_08048D7E: + ldr r3, _08048D84 @ =0x0000ff9c + mov r8, r3 + b _08048D92 + .align 2, 0 +_08048D84: .4byte 0x0000ff9c +_08048D88: + movs r7, 0x1 + movs r1, 0x68 + movs r2, 0x28 + ldr r5, _08048E40 @ =0x0000ff9c + mov r8, r5 +_08048D92: + movs r5, 0x5 +_08048D94: + movs r6, 0 + str r6, [sp, 0x14] + lsls r4, r7, 3 + ldr r0, _08048E44 @ =gUnknown_826046C + mov r10, r0 + lsls r3, r7, 1 + mov r9, r3 + lsls r1, 16 + str r1, [sp, 0x20] + lsls r2, 16 + str r2, [sp, 0x24] + ldr r2, _08048E48 @ =0x0000ffff + ldr r1, [sp, 0xC] + movs r6, 0x5 +_08048DB0: + ldrh r0, [r1] + cmp r0, r2 + beq _08048DC4 + ldr r3, [sp, 0x14] + lsls r0, r3, 24 + movs r3, 0x80 + lsls r3, 17 + adds r0, r3 + lsrs r0, 24 + str r0, [sp, 0x14] +_08048DC4: + adds r1, 0x8 + subs r6, 0x1 + cmp r6, 0 + bge _08048DB0 + mov r6, r10 + adds r0, r4, r6 + bl sub_800F034 + ldr r0, _08048E4C @ =gUnknown_826049C + adds r0, r4, r0 + bl sub_80086DC + ldr r0, _08048E50 @ =gUnknown_826047C + adds r0, r4, r0 + bl sub_8008928 + ldr r0, _08048E54 @ =gUnknown_826048C + adds r0, r4, r0 + bl sub_8008928 + mov r1, r9 + adds r0, r1, r7 + lsls r0, 3 + ldr r1, _08048E58 @ =gUnknown_82604BC + adds r0, r1 + ldr r2, [sp, 0x20] + asrs r1, r2, 16 + ldr r3, [sp, 0x24] + asrs r2, r3, 16 + movs r3, 0xA + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x18] + lsls r0, 4 + ldr r6, [sp, 0x18] + adds r0, r6 + lsls r0, 2 + ldr r1, _08048E5C @ =gUnknown_202063C + adds r4, r0, r1 + ldr r1, _08048E60 @ =gUnknown_82603FC + adds r0, r4, 0 + bl sub_8008A58 + mov r0, r8 + strh r0, [r4, 0x24] + strh r5, [r4, 0x2E] + cmp r7, 0 + beq _08048E64 + ldrh r0, [r4, 0x20] + subs r0, 0x60 + strh r0, [r4, 0x20] + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4, 0x3] + b _08048E6A + .align 2, 0 +_08048E40: .4byte 0x0000ff9c +_08048E44: .4byte gUnknown_826046C +_08048E48: .4byte 0x0000ffff +_08048E4C: .4byte gUnknown_826049C +_08048E50: .4byte gUnknown_826047C +_08048E54: .4byte gUnknown_826048C +_08048E58: .4byte gUnknown_82604BC +_08048E5C: .4byte gUnknown_202063C +_08048E60: .4byte gUnknown_82603FC +_08048E64: + ldrh r0, [r4, 0x20] + adds r0, 0x60 + strh r0, [r4, 0x20] +_08048E6A: + movs r6, 0 + ldr r1, _08048F14 @ =gUnknown_202063C + mov r10, r1 + mov r4, sp + mov r2, r9 + adds r0, r2, r7 + lsls r0, 3 + str r0, [sp, 0x1C] + movs r3, 0xA + mov r9, r3 + mov r8, r6 +_08048E80: + ldr r0, _08048F18 @ =gUnknown_82604EC + ldr r5, [sp, 0x24] + ldr r1, _08048F1C @ =0xfffc0000 + adds r2, r5, r1 + ldr r3, [sp, 0x1C] + adds r0, r3, r0 + ldr r5, [sp, 0x20] + asrs r1, r5, 16 + asrs r2, 16 + movs r3, 0x9 + bl sub_8006FE0 + strb r0, [r4] + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _08048EB0 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r2, _08048F20 @ =gUnknown_2020658 + adds r1, r2 + ldr r0, _08048F24 @ =sub_80496A0 + str r0, [r1] +_08048EB0: + ldr r5, _08048F14 @ =gUnknown_202063C + cmp r7, 0 + bne _08048ECE + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + strh r7, [r0, 0x24] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + strh r7, [r0, 0x26] +_08048ECE: + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0 + mov r3, sp + ldrh r3, [r3, 0x18] + strh r3, [r0, 0x2E] + cmp r7, 0 + bne _08048F28 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrh r0, [r1, 0x20] + adds r0, 0x18 + add r0, r8 + strh r0, [r1, 0x20] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r9 + strh r1, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x78 + b _08048F66 + .align 2, 0 +_08048F14: .4byte gUnknown_202063C +_08048F18: .4byte gUnknown_82604EC +_08048F1C: .4byte 0xfffc0000 +_08048F20: .4byte gUnknown_2020658 +_08048F24: .4byte sub_80496A0 +_08048F28: + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + ldrh r3, [r2, 0x20] + subs r3, 0x18 + movs r1, 0x5 + subs r1, r6 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + subs r3, r0 + strh r3, [r2, 0x20] + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + movs r1, 0x6 + subs r1, r6 + lsls r0, r1, 3 + subs r0, r1 + adds r0, 0xA + strh r0, [r2, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08048FD4 @ =0x0000ff88 +_08048F66: + strh r1, [r0, 0x24] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r7, [r0, 0x32] + adds r4, 0x1 + movs r2, 0x7 + add r9, r2 + movs r3, 0xA + add r8, r3 + adds r6, 0x1 + cmp r6, 0x5 + bgt _08048F86 + b _08048E80 +_08048F86: + ldr r0, [sp, 0x8] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0804906E + movs r6, 0 + ldr r5, _08048FD8 @ =gUnknown_2022B4C + mov r10, r5 + ldr r0, _08048FDC @ =0x0000ffff + mov r9, r0 + ldr r7, _08048FE0 @ =gUnknown_202063C + ldr r1, _08048FE4 @ =0x000003ff + mov r12, r1 + ldr r2, _08048FE8 @ =0xfffffc00 + mov r8, r2 + mov r4, sp + ldr r5, [sp, 0xC] +_08048FAA: + mov r3, r10 + ldr r0, [r3] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08048FEC + ldrh r0, [r5] + cmp r0, r9 + beq _08048FF6 + cmp r0, 0 + bne _0804903E + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x3 + b _08049056 + .align 2, 0 +_08048FD4: .4byte 0x0000ff88 +_08048FD8: .4byte gUnknown_2022B4C +_08048FDC: .4byte 0x0000ffff +_08048FE0: .4byte gUnknown_202063C +_08048FE4: .4byte 0x000003ff +_08048FE8: .4byte 0xfffffc00 +_08048FEC: + ldr r1, [sp, 0x14] + lsls r0, r1, 24 + asrs r0, 24 + cmp r6, r0 + blt _08049024 +_08048FF6: + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x1 + mov r0, r12 + ands r1, r0 + mov r0, r8 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + movs r1, 0x1 + strh r1, [r0, 0x3C] + b _08049062 +_08049024: + ldrh r0, [r5] + cmp r0, 0 + bne _0804903E + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x3 + b _08049056 +_0804903E: + ldr r0, [r5, 0x4] + cmp r0, 0 + beq _08049062 + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x2 +_08049056: + mov r0, r12 + ands r1, r0 + mov r0, r8 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] +_08049062: + adds r4, 0x1 + adds r5, 0x8 + adds r6, 0x1 + cmp r6, 0x5 + ble _08048FAA + b _08049148 +_0804906E: + movs r6, 0 + ldr r1, _080490B4 @ =gUnknown_2022B4C + mov r10, r1 + ldr r2, _080490B8 @ =0x0000ffff + mov r9, r2 + ldr r7, _080490BC @ =gUnknown_202063C + ldr r3, _080490C0 @ =0x000003ff + mov r12, r3 + ldr r5, _080490C4 @ =0xfffffc00 + mov r8, r5 + ldr r5, [sp, 0xC] + mov r4, sp + adds r4, 0x5 +_08049088: + mov r1, r10 + ldr r0, [r1] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080490C8 + ldrh r0, [r5] + cmp r0, r9 + beq _080490D2 + cmp r0, 0 + bne _0804911A + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x3 + b _08049132 + .align 2, 0 +_080490B4: .4byte gUnknown_2022B4C +_080490B8: .4byte 0x0000ffff +_080490BC: .4byte gUnknown_202063C +_080490C0: .4byte 0x000003ff +_080490C4: .4byte 0xfffffc00 +_080490C8: + ldr r1, [sp, 0x14] + lsls r0, r1, 24 + asrs r0, 24 + cmp r6, r0 + blt _08049100 +_080490D2: + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x1 + mov r0, r12 + ands r1, r0 + mov r0, r8 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + movs r1, 0x1 + strh r1, [r0, 0x3C] + b _0804913E +_08049100: + ldrh r0, [r5] + cmp r0, 0 + bne _0804911A + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x3 + b _08049132 +_0804911A: + ldr r0, [r5, 0x4] + cmp r0, 0 + beq _0804913E + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrh r3, [r2, 0x4] + lsls r1, r3, 22 + lsrs r1, 22 + adds r1, 0x2 +_08049132: + mov r0, r12 + ands r1, r0 + mov r0, r8 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x4] +_0804913E: + subs r4, 0x1 + adds r5, 0x8 + adds r6, 0x1 + cmp r6, 0x5 + ble _08049088 +_08049148: + ldr r0, _080491A8 @ =nullsub_43 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _080491AC @ =gUnknown_3005090 + lsls r3, r4, 2 + adds r1, r3, r4 + lsls r1, 3 + adds r0, r1, r2 + mov r5, sp + ldrh r5, [r5, 0x8] + strh r5, [r0, 0x8] + mov r6, sp + ldrh r6, [r6, 0x18] + strh r6, [r0, 0xA] + movs r6, 0 + adds r0, r2, 0 + adds r0, 0xE + adds r1, r0 +_08049172: + mov r5, sp + adds r0, r5, r6 + ldrb r0, [r0] + strh r0, [r1] + adds r1, 0x2 + adds r6, 0x1 + cmp r6, 0x5 + ble _08049172 + adds r0, r3, r4 + lsls r0, 3 + adds r0, r2 + ldrh r6, [r5, 0x10] + strh r6, [r0, 0x1C] + movs r0, 0x6B + movs r1, 0 + bl sub_80722F4 + adds r0, r4, 0 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080491A8: .4byte nullsub_43 +_080491AC: .4byte gUnknown_3005090 + thumb_func_end sub_8048D14 + + thumb_func_start sub_80491B0 +sub_80491B0: @ 80491B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r2, _080492C0 @ =gUnknown_3005090 + lsls r3, r0, 2 + adds r1, r3, r0 + lsls r1, 3 + adds r0, r1, r2 + ldrb r7, [r0, 0x1C] + ldrb r4, [r0, 0xA] + mov r10, r4 + ldrb r0, [r0, 0x8] + str r0, [sp, 0x8] + movs r5, 0 + str r3, [sp, 0xC] + adds r2, 0xE + adds r2, r1, r2 +_080491DE: + mov r0, sp + adds r1, r0, r5 + ldrh r0, [r2] + strb r0, [r1] + adds r2, 0x2 + adds r5, 0x1 + cmp r5, 0x5 + ble _080491DE + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + ldr r1, _080492C0 @ =gUnknown_3005090 + ldr r0, [sp, 0xC] + add r0, r8 + lsls r0, 3 + adds r0, r1 + movs r1, 0x10 + strh r1, [r0, 0x26] + movs r5, 0 + mov r1, r10 + lsls r1, 4 + str r1, [sp, 0x10] + ldr r3, _080492C4 @ =gUnknown_202063C + movs r6, 0xD + negs r6, r6 + mov r12, r3 + movs r4, 0x4 +_08049220: + mov r2, sp + adds r0, r2, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r2, [r1, 0x1] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1, 0x1] + adds r5, 0x1 + cmp r5, 0x5 + ble _08049220 + ldr r2, [sp, 0x10] + add r2, r10 + lsls r2, 2 + add r2, r12 + ldrb r1, [r2, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x1] + cmp r7, 0 + bne _0804925A + b _08049360 +_0804925A: + movs r5, 0 + mov r6, r12 + mov r9, r5 + adds r3, r6, 0 + adds r3, 0x1C + mov r4, sp + movs r7, 0 +_08049268: + ldr r0, [sp, 0x8] + str r3, [sp, 0x14] + bl sub_80751C4 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r3, [sp, 0x14] + cmp r2, 0 + beq _080492CC + movs r0, 0x5 + subs r0, r5 + mov r1, sp + adds r2, r1, r0 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r7, [r0, 0x30] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r1, r9 + strh r1, [r0, 0x34] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r1, r9 + strh r1, [r0, 0x36] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldr r1, _080492C8 @ =sub_8049630 + str r1, [r0] + ldr r2, _080492C4 @ =gUnknown_202063C + mov r12, r2 + b _08049302 + .align 2, 0 +_080492C0: .4byte gUnknown_3005090 +_080492C4: .4byte gUnknown_202063C +_080492C8: .4byte sub_8049630 +_080492CC: + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r7, [r0, 0x30] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r2, [r0, 0x34] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r2, [r0, 0x36] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldr r1, _08049348 @ =sub_8049630 + str r1, [r0] + ldr r0, _0804934C @ =gUnknown_202063C + mov r12, r0 +_08049302: + adds r4, 0x1 + adds r7, 0x7 + adds r5, 0x1 + cmp r5, 0x5 + ble _08049268 + ldr r3, [sp, 0x10] + add r3, r10 + lsls r3, 2 + mov r1, r12 + adds r0, r3, r1 + movs r2, 0x2E + ldrsh r1, [r0, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + movs r2, 0 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + mov r1, r12 + adds r1, 0x1C + adds r3, r1 + ldr r1, _08049350 @ =sub_8049568 + str r1, [r3] + ldr r1, _08049354 @ =gUnknown_8260404 + bl sub_8008A58 + ldr r1, _08049358 @ =gUnknown_3005090 + ldr r0, [sp, 0xC] + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _0804935C @ =sub_8049388 + str r1, [r0] + b _0804936E + .align 2, 0 +_08049348: .4byte sub_8049630 +_0804934C: .4byte gUnknown_202063C +_08049350: .4byte sub_8049568 +_08049354: .4byte gUnknown_8260404 +_08049358: .4byte gUnknown_3005090 +_0804935C: .4byte sub_8049388 +_08049360: + ldr r0, _08049380 @ =gUnknown_3005090 + ldr r1, [sp, 0xC] + add r1, r8 + lsls r1, 3 + adds r1, r0 + ldr r0, _08049384 @ =sub_804948C + str r0, [r1] +_0804936E: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08049380: .4byte gUnknown_3005090 +_08049384: .4byte sub_804948C + thumb_func_end sub_80491B0 + + thumb_func_start sub_8049388 +sub_8049388: @ 8049388 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080493DC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x1E] + adds r1, r0, 0x1 + strh r1, [r4, 0x1E] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080493C8 + ldrh r0, [r4, 0x26] + subs r1, r0, 0x1 + strh r1, [r4, 0x26] + lsls r0, r1, 16 + cmp r0, 0 + blt _080493D4 + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_080493C8: + movs r1, 0x26 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080493D4 + ldr r0, _080493E0 @ =sub_80493E4 + str r0, [r4] +_080493D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080493DC: .4byte gUnknown_3005090 +_080493E0: .4byte sub_80493E4 + thumb_func_end sub_8049388 + + thumb_func_start sub_80493E4 +sub_80493E4: @ 80493E4 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r7, _0804945C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r6, r0, 3 + adds r1, r6, r7 + ldrh r0, [r1, 0x26] + subs r0, 0x1 + strh r0, [r1, 0x26] + lsls r0, 16 + asrs r2, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bne _08049464 + ldrb r3, [r1, 0xA] + movs r5, 0 + adds r0, r7, 0 + adds r0, 0xE + adds r2, r6, r0 +_08049412: + mov r0, sp + adds r1, r0, r5 + ldrh r0, [r2] + strb r0, [r1] + adds r2, 0x2 + adds r5, 0x1 + cmp r5, 0x5 + ble _08049412 + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + ldr r4, _08049460 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007804 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007804 + movs r5, 0x1 +_08049442: + mov r1, sp + adds r0, r1, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + adds r5, 0x1 + cmp r5, 0x5 + ble _08049442 + b _08049482 + .align 2, 0 +_0804945C: .4byte gUnknown_3005090 +_08049460: .4byte gUnknown_202063C +_08049464: + movs r0, 0x3 + negs r0, r0 + cmp r2, r0 + bne _08049482 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8077508 +_08049482: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80493E4 + + thumb_func_start sub_804948C +sub_804948C: @ 804948C + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r7, _080494C4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r6, r0, 3 + adds r3, r6, r7 + ldrh r0, [r3, 0x26] + subs r1, r0, 0x1 + strh r1, [r3, 0x26] + lsls r0, r1, 16 + asrs r2, r0, 16 + cmp r2, 0 + blt _080494C8 + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + b _08049546 + .align 2, 0 +_080494C4: .4byte gUnknown_3005090 +_080494C8: + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bne _08049528 + ldrb r3, [r3, 0xA] + movs r5, 0 + adds r0, r7, 0 + adds r0, 0xE + adds r2, r6, r0 +_080494DA: + mov r0, sp + adds r1, r0, r5 + ldrh r0, [r2] + strb r0, [r1] + adds r2, 0x2 + adds r5, 0x1 + cmp r5, 0x5 + ble _080494DA + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + ldr r4, _08049524 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007804 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007804 + movs r5, 0x1 +_0804950A: + mov r1, sp + adds r0, r1, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + adds r5, 0x1 + cmp r5, 0x5 + ble _0804950A + b _08049546 + .align 2, 0 +_08049524: .4byte gUnknown_202063C +_08049528: + movs r0, 0x3 + negs r0, r0 + cmp r2, r0 + bne _08049546 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_8077508 +_08049546: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804948C + + thumb_func_start sub_8049550 +sub_8049550: @ 8049550 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x24] + movs r3, 0x24 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _08049564 + ldrh r0, [r1, 0x2E] + adds r0, r2, r0 + strh r0, [r1, 0x24] +_08049564: + pop {r0} + bx r0 + thumb_func_end sub_8049550 + + thumb_func_start sub_8049568 +sub_8049568: @ 8049568 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r1, r0, 0 + adds r1, 0x20 + strh r1, [r2, 0x30] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _08049586 + lsls r0, r1, 16 + asrs r0, 20 + ldrh r1, [r2, 0x24] + adds r0, r1 + b _0804958E +_08049586: + lsls r1, 16 + asrs r1, 20 + ldrh r0, [r2, 0x24] + subs r0, r1 +_0804958E: + strh r0, [r2, 0x24] + ldrh r1, [r2, 0x30] + movs r0, 0xF + ands r0, r1 + strh r0, [r2, 0x30] + pop {r0} + bx r0 + thumb_func_end sub_8049568 + + thumb_func_start sub_804959C +sub_804959C: @ 804959C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080495B0 + subs r0, r1, 0x1 + strh r0, [r4, 0x30] + b _08049626 +_080495B0: + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r3, r0, 24 + ldrh r2, [r4, 0x34] + adds r0, r2, 0 + adds r0, 0x38 + lsls r1, r0, 16 + lsrs r2, r1, 16 + ldr r0, _080495E0 @ =0x0000fff0 + ands r2, r0 + strh r2, [r4, 0x34] + cmp r3, 0 + beq _080495E4 + lsrs r0, r1, 20 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _080495F4 + movs r0, 0 + strh r0, [r4, 0x24] + b _080495F4 + .align 2, 0 +_080495E0: .4byte 0x0000fff0 +_080495E4: + lsrs r1, 20 + ldrh r0, [r4, 0x24] + subs r0, r1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + bge _080495F4 + strh r3, [r4, 0x24] +_080495F4: + movs r2, 0x24 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08049626 + movs r1, 0x3F + cmp r3, 0 + beq _08049604 + movs r1, 0xC0 +_08049604: + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08049618 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x6D + bl sub_807237C + b _08049622 +_08049618: + lsls r1, 24 + asrs r1, 24 + movs r0, 0x6C + bl sub_8072348 +_08049622: + ldr r0, _0804962C @ =nullsub_8 + str r0, [r4, 0x1C] +_08049626: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804962C: .4byte nullsub_8 + thumb_func_end sub_804959C + + thumb_func_start sub_8049630 +sub_8049630: @ 8049630 + push {r4,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x30] + movs r2, 0x30 + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _08049644 + subs r0, r1, 0x1 + strh r0, [r3, 0x30] + b _08049694 +_08049644: + ldrh r0, [r3, 0x32] + lsls r0, 24 + ldrh r2, [r3, 0x34] + adds r1, r2, 0 + adds r1, 0x38 + lsls r4, r1, 16 + lsrs r2, r4, 16 + ldr r1, _08049664 @ =0x0000fff0 + ands r2, r1 + strh r2, [r3, 0x34] + cmp r0, 0 + beq _08049668 + lsrs r0, r4, 20 + ldrh r1, [r3, 0x24] + adds r0, r1 + b _0804966E + .align 2, 0 +_08049664: .4byte 0x0000fff0 +_08049668: + lsrs r1, r4, 20 + ldrh r0, [r3, 0x24] + subs r0, r1 +_0804966E: + strh r0, [r3, 0x24] + movs r2, 0x24 + ldrsh r0, [r3, r2] + movs r2, 0x20 + ldrsh r1, [r3, r2] + adds r0, r1 + adds r0, 0x8 + movs r1, 0x80 + lsls r1, 1 + cmp r0, r1 + bls _08049694 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0804969C @ =nullsub_8 + str r0, [r3, 0x1C] +_08049694: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804969C: .4byte nullsub_8 + thumb_func_end sub_8049630 + + thumb_func_start sub_80496A0 +sub_80496A0: @ 80496A0 + ldrh r2, [r0, 0x2E] + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080496BC @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x24] + strh r2, [r0, 0x24] + ldrh r1, [r1, 0x26] + strh r1, [r0, 0x26] + bx lr + .align 2, 0 +_080496BC: .4byte gUnknown_202063C + thumb_func_end sub_80496A0 + + thumb_func_start sub_80496C0 +sub_80496C0: @ 80496C0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r7, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08049760 @ =gUnknown_202298C + ldr r1, _08049764 @ =gUnknown_8260556 + bl sub_8008D84 + adds r5, r0, 0 + adds r0, r7, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + mov r0, sp + bl sub_8008D28 + adds r0, r5, 0 + mov r1, sp + bl sub_8008D84 + adds r5, r0, 0 + movs r0, 0xFC + strb r0, [r5] + adds r5, 0x1 + movs r0, 0x1 + strb r0, [r5] + adds r5, 0x1 + adds r0, r7, 0 + bl sub_803F720 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r7, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0x1D + beq _08049720 + cmp r0, 0x20 + bne _08049734 +_08049720: + movs r0, 0xB + muls r1, r0 + ldr r0, _08049768 @ =gUnknown_8245EE0 + adds r1, r0 + mov r0, sp + bl sub_8008E28 + cmp r0, 0 + bne _08049734 + movs r6, 0x64 +_08049734: + ldr r1, _0804976C @ =gUnknown_202063C + mov r0, r8 + lsls r4, r0, 4 + adds r0, r4, r0 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x3A] + lsls r1, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_80448F8 + lsls r0, 24 + cmp r0, 0 + beq _08049754 + movs r6, 0x64 +_08049754: + cmp r6, 0 + beq _08049770 + cmp r6, 0xFE + beq _0804977A + movs r0, 0xB + b _08049782 + .align 2, 0 +_08049760: .4byte gUnknown_202298C +_08049764: .4byte gUnknown_8260556 +_08049768: .4byte gUnknown_8245EE0 +_0804976C: .4byte gUnknown_202063C +_08049770: + movs r0, 0xB + strb r0, [r5] + adds r5, 0x1 + movs r0, 0xB5 + b _08049782 +_0804977A: + movs r0, 0xA + strb r0, [r5] + adds r5, 0x1 + movs r0, 0xB6 +_08049782: + strb r0, [r5] + movs r0, 0xFF + strb r0, [r5, 0x1] + ldr r0, _080497E4 @ =gUnknown_202298C + add r3, sp, 0xC + movs r1, 0 + movs r2, 0x3 + bl sub_804A648 + adds r6, r0, 0 + ldr r0, _080497E8 @ =gUnknown_202063C + mov r2, r8 + adds r1, r4, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x4] + lsls r0, 22 + lsrs r4, r0, 17 + ldrh r0, [r1, 0x3A] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080497F8 + ldr r1, _080497EC @ =0x06010040 + adds r0, r4, r1 + adds r1, r6, 0 + movs r2, 0x6 + bl sub_804A6E8 + bl sub_8075290 + lsls r0, 24 + ldr r2, _080497F0 @ =0x06010400 + adds r5, r4, r2 + cmp r0, 0 + bne _080497D4 + ldr r0, _080497F4 @ =0x06010800 + adds r5, r4, r0 +_080497D4: + adds r1, r6, 0 + adds r1, 0xC0 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_804A6E8 + b _08049804 + .align 2, 0 +_080497E4: .4byte gUnknown_202298C +_080497E8: .4byte gUnknown_202063C +_080497EC: .4byte 0x06010040 +_080497F0: .4byte 0x06010400 +_080497F4: .4byte 0x06010800 +_080497F8: + ldr r1, _08049818 @ =0x06010020 + adds r0, r4, r1 + adds r1, r6, 0 + movs r2, 0x7 + bl sub_804A6E8 +_08049804: + ldr r0, [sp, 0xC] + bl sub_804A6D8 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08049818: .4byte 0x06010020 + thumb_func_end sub_80496C0 + + thumb_func_start sub_804981C +sub_804981C: @ 804981C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + ldr r0, _080498DC @ =gUnknown_2022B4C + ldr r1, [r0] + ldr r0, _080498E0 @ =0x00010210 + ands r0, r1 + cmp r0, 0 + bne _0804991C + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + bne _0804991C + ldr r0, _080498E4 @ =gUnknown_202063C + mov r9, r0 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + add r0, r9 + mov r8, r0 + ldrh r0, [r0, 0x3A] + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0804991C + ldr r1, _080498E8 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r5, r0, r1 + ldrh r0, [r5] + movs r7, 0x64 + muls r0, r7 + ldr r6, _080498EC @ =gUnknown_202402C + adds r0, r6 + adds r1, r4, 0 + bl sub_80448F8 + lsls r0, 24 + cmp r0, 0 + bne _0804991C + ldrh r0, [r5] + muls r0, r7 + adds r0, r6 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _0804991C + mov r1, r8 + ldrh r0, [r1, 0x38] + lsls r0, 24 + lsrs r4, r0, 24 + mov r2, r10 + cmp r2, 0 + beq _080498F8 + movs r0, 0x46 + bl sub_80480A8 + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + add r1, r9 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 17 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2 + ldr r2, _080498F0 @ =0x06010000 + adds r1, r2 + ldr r2, _080498F4 @ =0x04000008 + bl CpuSet + b _0804991C + .align 2, 0 +_080498DC: .4byte gUnknown_2022B4C +_080498E0: .4byte 0x00010210 +_080498E4: .4byte gUnknown_202063C +_080498E8: .4byte gUnknown_2023BCE +_080498EC: .4byte gUnknown_202402C +_080498F0: .4byte 0x06010000 +_080498F4: .4byte 0x04000008 +_080498F8: + mov r0, r10 + str r0, [sp] + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + add r0, r9 + ldrh r1, [r0, 0x4] + lsls r1, 22 + lsrs r1, 17 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2 + ldr r0, _0804992C @ =0x06010000 + adds r1, r0 + ldr r2, _08049930 @ =0x05000008 + mov r0, sp + bl CpuSet +_0804991C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804992C: .4byte 0x06010000 +_08049930: .4byte 0x05000008 + thumb_func_end sub_804981C + + thumb_func_start sub_8049934 +sub_8049934: @ 8049934 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _08049998 @ =gUnknown_202063C + mov r2, r9 + lsls r1, r2, 4 + add r1, r9 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x3A] + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r0, [r1, 0x38] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080499A4 + ldr r1, _0804999C @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080499A0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x37 + bl sub_803FBE8 + adds r4, r0, 0 + bl sub_8075290 + lsls r0, 24 + movs r3, 0x12 + mov r8, r3 + cmp r0, 0 + bne _080499C0 + movs r0, 0x1A + mov r8, r0 + b _080499C0 + .align 2, 0 +_08049998: .4byte gUnknown_202063C +_0804999C: .4byte gUnknown_2023BCE +_080499A0: .4byte gUnknown_2024284 +_080499A4: + ldr r1, _080499E0 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080499E4 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x37 + bl sub_803FBE8 + adds r4, r0, 0 + movs r1, 0x11 + mov r8, r1 +_080499C0: + movs r0, 0x7 + ands r0, r4 + cmp r0, 0 + beq _080499E8 + movs r0, 0x1B + adds r1, r7, 0 + bl sub_8049BE4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80480A8 + adds r6, r0, 0 + movs r0, 0x2 + b _08049AF4 + .align 2, 0 +_080499E0: .4byte gUnknown_2023BCE +_080499E4: .4byte gUnknown_202402C +_080499E8: + movs r0, 0x88 + ands r0, r4 + cmp r0, 0 + beq _08049A06 + movs r0, 0x15 + adds r1, r7, 0 + bl sub_8049BE4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80480A8 + adds r6, r0, 0 + movs r0, 0 + b _08049AF4 +_08049A06: + movs r0, 0x10 + ands r0, r4 + cmp r0, 0 + beq _08049A24 + movs r0, 0x21 + adds r1, r7, 0 + bl sub_8049BE4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80480A8 + adds r6, r0, 0 + movs r0, 0x4 + b _08049AF4 +_08049A24: + movs r0, 0x20 + ands r0, r4 + cmp r0, 0 + beq _08049A42 + movs r0, 0x1E + adds r1, r7, 0 + bl sub_8049BE4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80480A8 + adds r6, r0, 0 + movs r0, 0x3 + b _08049AF4 +_08049A42: + movs r0, 0x40 + ands r0, r4 + cmp r0, 0 + beq _08049A60 + movs r0, 0x18 + adds r1, r7, 0 + bl sub_8049BE4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80480A8 + adds r6, r0, 0 + movs r0, 0x1 + b _08049AF4 +_08049A60: + movs r0, 0x27 + bl sub_80480A8 + adds r6, r0, 0 + movs r4, 0 + mov r2, r9 + lsls r0, r2, 4 + mov r3, r8 + lsls r3, 16 + mov r8, r3 + lsls r7, 2 + ldr r1, _08049AE0 @ =gUnknown_202063C + add r0, r9 + lsls r0, 2 + adds r5, r0, r1 +_08049A7E: + ldrh r1, [r5, 0x4] + lsls r1, 22 + lsrs r1, 22 + mov r2, r8 + asrs r0, r2, 16 + adds r1, r0 + adds r1, r4 + lsls r1, 5 + ldr r3, _08049AE4 @ =0x06010000 + adds r1, r3 + adds r0, r6, 0 + ldr r2, _08049AE8 @ =0x04000008 + bl CpuSet + adds r4, 0x1 + cmp r4, 0x2 + ble _08049A7E + ldr r0, _08049AEC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + adds r0, r7, r0 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08049AD4 + movs r0, 0x1 + bl sub_80480A8 + ldr r2, _08049AE0 @ =gUnknown_202063C + mov r3, r10 + lsls r1, r3, 4 + add r1, r10 + lsls r1, 2 + adds r1, r2 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r2, _08049AE4 @ =0x06010000 + adds r1, r2 + ldr r2, _08049AF0 @ =0x04000010 + bl CpuSet +_08049AD4: + mov r0, r9 + movs r1, 0x1 + bl sub_804981C + b _08049BB6 + .align 2, 0 +_08049AE0: .4byte gUnknown_202063C +_08049AE4: .4byte 0x06010000 +_08049AE8: .4byte 0x04000008 +_08049AEC: .4byte gUnknown_2024018 +_08049AF0: .4byte 0x04000010 +_08049AF4: + mov r1, r9 + lsls r5, r1, 4 + add r5, r9 + lsls r5, 2 + ldr r2, _08049BC4 @ =gUnknown_202063C + adds r5, r2 + ldrb r4, [r5, 0x5] + lsrs r4, 4 + lsls r4, 4 + adds r4, 0xC + adds r4, r7 + ldr r1, _08049BC8 @ =gUnknown_826055A + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + movs r3, 0x80 + lsls r3, 1 + adds r1, r4, r3 + movs r2, 0x2 + bl sub_8070424 + lsls r4, 1 + ldr r0, _08049BCC @ =gUnknown_20373F8 + adds r0, r4, r0 + ldr r1, _08049BD0 @ =0x05000200 + adds r4, r1 + adds r1, r4, 0 + movs r2, 0x1 + bl CpuSet + ldrh r1, [r5, 0x4] + lsls r1, 22 + lsrs r1, 22 + add r1, r8 + lsls r1, 5 + ldr r2, _08049BD4 @ =0x06010000 + mov r8, r2 + add r1, r8 + ldr r2, _08049BD8 @ =0x04000018 + adds r0, r6, 0 + bl CpuSet + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08049B62 + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08049BAE +_08049B62: + ldr r0, _08049BDC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r7, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08049BAE + movs r0, 0 + bl sub_80480A8 + mov r3, r10 + lsls r4, r3, 4 + add r4, r10 + lsls r4, 2 + ldr r1, _08049BC4 @ =gUnknown_202063C + adds r4, r1 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 17 + add r1, r8 + ldr r5, _08049BE0 @ =0x04000008 + adds r2, r5, 0 + bl CpuSet + movs r0, 0x41 + bl sub_80480A8 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 17 + adds r1, 0x20 + add r1, r8 + adds r2, r5, 0 + bl CpuSet +_08049BAE: + mov r0, r9 + movs r1, 0 + bl sub_804981C +_08049BB6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08049BC4: .4byte gUnknown_202063C +_08049BC8: .4byte gUnknown_826055A +_08049BCC: .4byte gUnknown_20373F8 +_08049BD0: .4byte 0x05000200 +_08049BD4: .4byte 0x06010000 +_08049BD8: .4byte 0x04000018 +_08049BDC: .4byte gUnknown_2024018 +_08049BE0: .4byte 0x04000008 + thumb_func_end sub_8049934 + + thumb_func_start sub_8049BE4 +sub_8049BE4: @ 8049BE4 + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsrs r2, r0, 24 + adds r0, r2, 0 + subs r0, 0x15 + cmp r0, 0xC + bhi _08049CA4 + lsls r0, 2 + ldr r1, _08049C00 @ =_08049C04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08049C00: .4byte _08049C04 + .align 2, 0 +_08049C04: + .4byte _08049C38 + .4byte _08049CA4 + .4byte _08049CA4 + .4byte _08049C4E + .4byte _08049CA4 + .4byte _08049CA4 + .4byte _08049C64 + .4byte _08049CA4 + .4byte _08049CA4 + .4byte _08049C7A + .4byte _08049CA4 + .4byte _08049CA4 + .4byte _08049C90 +_08049C38: + movs r2, 0x15 + cmp r3, 0 + beq _08049CA4 + movs r2, 0x47 + cmp r3, 0x1 + beq _08049CA4 + movs r2, 0x65 + cmp r3, 0x2 + bne _08049CA4 + movs r2, 0x56 + b _08049CA4 +_08049C4E: + movs r2, 0x18 + cmp r3, 0 + beq _08049CA4 + movs r2, 0x4A + cmp r3, 0x1 + beq _08049CA4 + movs r2, 0x68 + cmp r3, 0x2 + bne _08049CA4 + movs r2, 0x59 + b _08049CA4 +_08049C64: + movs r2, 0x1B + cmp r3, 0 + beq _08049CA4 + movs r2, 0x4D + cmp r3, 0x1 + beq _08049CA4 + movs r2, 0x6B + cmp r3, 0x2 + bne _08049CA4 + movs r2, 0x5C + b _08049CA4 +_08049C7A: + movs r2, 0x1E + cmp r3, 0 + beq _08049CA4 + movs r2, 0x50 + cmp r3, 0x1 + beq _08049CA4 + movs r2, 0x6E + cmp r3, 0x2 + bne _08049CA4 + movs r2, 0x5F + b _08049CA4 +_08049C90: + movs r2, 0x21 + cmp r3, 0 + beq _08049CA4 + movs r2, 0x53 + cmp r3, 0x1 + beq _08049CA4 + movs r2, 0x71 + cmp r3, 0x2 + bne _08049CA4 + movs r2, 0x62 +_08049CA4: + adds r0, r2, 0 + pop {r1} + bx r1 + thumb_func_end sub_8049BE4 + + thumb_func_start sub_8049CAC +sub_8049CAC: @ 8049CAC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08049D00 @ =gUnknown_83FE80C + movs r1, 0 + movs r2, 0x3 + mov r3, sp + bl sub_804A648 + adds r5, r0, 0 + ldr r1, _08049D04 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r4, [r0, 0x4] + lsls r4, 22 + lsrs r4, 17 + ldr r1, _08049D08 @ =0x06010040 + adds r0, r4, r1 + adds r1, r5, 0 + movs r2, 0x6 + bl sub_804A6E8 + ldr r0, _08049D0C @ =0x06010800 + adds r4, r0 + adds r5, 0xC0 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_804A6E8 + ldr r0, [sp] + bl sub_804A6D8 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08049D00: .4byte gUnknown_83FE80C +_08049D04: .4byte gUnknown_202063C +_08049D08: .4byte 0x06010040 +_08049D0C: .4byte 0x06010800 + thumb_func_end sub_8049CAC + + thumb_func_start sub_8049D10 +sub_8049D10: @ 8049D10 + push {r4,r5,lr} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _08049D84 @ =gUnknown_83FE81C + mov r0, sp + bl sub_8008D84 + ldr r1, _08049D88 @ =gUnknown_2039994 + ldrb r1, [r1] + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + movs r0, 0 + mov r1, sp + movs r2, 0 + bl sub_8005ED4 + movs r1, 0x2F + subs r1, r0 + add r3, sp, 0x10 + mov r0, sp + movs r2, 0x3 + bl sub_804A648 + adds r5, r0, 0 + ldr r1, _08049D8C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r4, [r0, 0x4] + lsls r4, 22 + lsrs r4, 17 + ldr r1, _08049D90 @ =0x060102c0 + adds r0, r4, r1 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_804A734 + ldr r0, _08049D94 @ =0x06010a00 + adds r4, r0 + adds r5, 0x40 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_804A734 + ldr r0, [sp, 0x10] + bl sub_804A6D8 + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08049D84: .4byte gUnknown_83FE81C +_08049D88: .4byte gUnknown_2039994 +_08049D8C: .4byte gUnknown_202063C +_08049D90: .4byte 0x060102c0 +_08049D94: .4byte 0x06010a00 + thumb_func_end sub_8049D10 + + thumb_func_start sub_8049D98 +sub_8049D98: @ 8049D98 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r1 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 24 + lsrs r7, r2, 24 + ldr r1, _08049F44 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x3A] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r7, 0 + bne _08049DD4 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08049DD4 + mov r0, r9 + bl sub_80751C4 +_08049DD4: + ldr r1, _08049F44 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x3A] + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08049DF0 + b _08049F50 +_08049DF0: + cmp r7, 0x3 + beq _08049DF8 + cmp r7, 0 + bne _08049E0C +_08049DF8: + mov r0, r8 + movs r1, 0x38 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8048398 +_08049E0C: + cmp r7, 0x1 + bhi _08049E26 + mov r0, r8 + movs r1, 0x39 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r6, 0 + movs r2, 0 + bl sub_8048440 +_08049E26: + cmp r7, 0x2 + beq _08049E2E + cmp r7, 0 + bne _08049E44 +_08049E2E: + mov r0, r8 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r6, 0 + movs r2, 0x1 + bl sub_8048440 +_08049E44: + cmp r7, 0x5 + beq _08049E4C + cmp r7, 0 + bne _08049E80 +_08049E4C: + movs r0, 0 + bl sub_8034964 + mov r0, r8 + movs r1, 0x3A + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + movs r0, 0 + str r0, [sp] + mov r0, r9 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_8048150 + mov r0, r9 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 +_08049E80: + bl sub_8075290 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0 + bne _08049F06 + cmp r7, 0x6 + beq _08049E96 + cmp r7, 0 + bne _08049F06 +_08049E96: + movs r0, 0x3 + bl sub_8034964 + mov r0, r8 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r0, r8 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r0, r8 + movs r1, 0x19 + bl sub_803FBE8 + adds r3, r0, 0 + ldr r0, _08049F48 @ =gUnknown_8253AE4 + mov r12, r0 + lsls r1, r4, 2 + ldr r2, _08049F4C @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r2 + adds r1, r0 + add r1, r12 + ldr r1, [r1] + subs r3, r1 + adds r4, 0x1 + lsls r4, 2 + adds r4, r0 + add r4, r12 + ldr r2, [r4] + subs r2, r1 + mov r0, r10 + str r0, [sp] + mov r0, r9 + adds r1, r6, 0 + bl sub_8048150 + mov r0, r9 + adds r1, r6, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8049FD8 +_08049F06: + cmp r7, 0x4 + beq _08049F0E + cmp r7, 0 + bne _08049F16 +_08049F0E: + adds r0, r6, 0 + mov r1, r8 + bl sub_80496C0 +_08049F16: + cmp r7, 0x9 + beq _08049F1E + cmp r7, 0 + bne _08049F24 +_08049F1E: + adds r0, r6, 0 + bl sub_8049934 +_08049F24: + cmp r7, 0xA + bne _08049F2E + adds r0, r6, 0 + bl sub_8049CAC +_08049F2E: + adds r0, r7, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08049FC6 + adds r0, r6, 0 + bl sub_8049D10 + b _08049FC6 + .align 2, 0 +_08049F44: .4byte gUnknown_202063C +_08049F48: .4byte gUnknown_8253AE4 +_08049F4C: .4byte gUnknown_8254784 +_08049F50: + cmp r7, 0x3 + beq _08049F58 + cmp r7, 0 + bne _08049F6C +_08049F58: + mov r0, r8 + movs r1, 0x38 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8048398 +_08049F6C: + cmp r7, 0x5 + beq _08049F74 + cmp r7, 0 + bne _08049FA8 +_08049F74: + movs r0, 0 + bl sub_8034964 + mov r0, r8 + movs r1, 0x3A + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + movs r0, 0 + str r0, [sp] + mov r0, r9 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_8048150 + mov r0, r9 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0 + bl sub_8049FD8 +_08049FA8: + cmp r7, 0x4 + beq _08049FB0 + cmp r7, 0 + bne _08049FB8 +_08049FB0: + adds r0, r6, 0 + mov r1, r8 + bl sub_80496C0 +_08049FB8: + cmp r7, 0x9 + beq _08049FC0 + cmp r7, 0 + bne _08049FC6 +_08049FC0: + adds r0, r6, 0 + bl sub_8049934 +_08049FC6: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8049D98 + + thumb_func_start sub_8049FD8 +sub_8049FD8: @ 8049FD8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + cmp r2, 0 + bne _0804A024 + ldr r0, _0804A020 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0xC] + mov r1, r8 + lsls r5, r1, 2 + adds r3, r5, r1 + lsls r3, 2 + adds r3, r0 + ldr r0, [r3, 0x4] + ldr r1, [r3, 0x8] + ldr r2, [r3, 0xC] + adds r3, 0x10 + movs r4, 0x6 + str r4, [sp] + movs r4, 0x1 + str r4, [sp, 0x4] + bl sub_804A2F0 + adds r4, r0, 0 + adds r7, r5, 0 + b _0804A080 + .align 2, 0 +_0804A020: .4byte gUnknown_2024018 +_0804A024: + ldr r2, _0804A0D0 @ =gUnknown_2024018 + mov r10, r2 + ldr r0, [r2] + ldr r2, [r0, 0xC] + mov r0, r8 + lsls r4, r0, 2 + adds r0, r4, r0 + lsls r6, r0, 2 + adds r2, r6, r2 + ldr r0, [r2, 0x8] + ldr r1, [r2, 0xC] + ldr r2, [r2, 0x4] + movs r3, 0x8 + bl sub_804A59C + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r4, 0 + cmp r5, 0 + bne _0804A04E + movs r5, 0x1 +_0804A04E: + mov r1, r10 + ldr r0, [r1] + ldr r0, [r0, 0xC] + adds r4, r6, r0 + ldr r6, [r4, 0xC] + adds r0, r6, 0 + adds r1, r5, 0 + bl __divsi3 + cmp r0, 0 + bge _0804A066 + negs r0, r0 +_0804A066: + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [r4, 0x4] + ldr r1, [r4, 0x8] + adds r3, r4, 0 + adds r3, 0x10 + movs r2, 0x8 + str r2, [sp] + str r5, [sp, 0x4] + adds r2, r6, 0 + bl sub_804A2F0 + adds r4, r0, 0 +_0804A080: + mov r2, r9 + cmp r2, 0x1 + beq _0804A09C + cmp r2, 0 + bne _0804A0A4 + ldr r0, _0804A0D0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + adds r0, r7, r0 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0804A0A4 +_0804A09C: + mov r0, r8 + mov r1, r9 + bl sub_804A0D4 +_0804A0A4: + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _0804A0BE + ldr r0, _0804A0D0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0xC] + mov r2, r8 + adds r0, r7, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + str r1, [r0, 0x10] +_0804A0BE: + adds r0, r4, 0 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0804A0D0: .4byte gUnknown_2024018 + thumb_func_end sub_8049FD8 + + thumb_func_start sub_804A0D4 +sub_804A0D4: @ 804A0D4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + beq _0804A0F0 + cmp r1, 0x1 + beq _0804A1D8 + b _0804A2D6 +_0804A0F0: + ldr r0, _0804A184 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0xC] + lsls r5, r6, 2 + adds r3, r5, r6 + lsls r3, 2 + adds r3, r0 + ldr r0, [r3, 0x4] + ldr r1, [r3, 0x8] + ldr r2, [r3, 0xC] + adds r3, 0x10 + add r4, sp, 0x8 + str r4, [sp] + movs r4, 0x6 + str r4, [sp, 0x4] + bl sub_804A3C4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + mov r9, r1 + adds r7, r5, 0 + cmp r0, 0x18 + bhi _0804A12C + movs r2, 0x38 + mov r9, r2 + cmp r0, 0x9 + bls _0804A12C + movs r4, 0x2F + mov r9, r4 +_0804A12C: + movs r5, 0 + ldr r0, _0804A188 @ =gUnknown_202063C + mov r8, r0 +_0804A132: + ldr r0, _0804A184 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0xC] + adds r0, r7, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r0, [r0, 0x38] + lsls r0, 24 + lsrs r4, r0, 24 + cmp r5, 0x1 + bhi _0804A194 + mov r0, r9 + bl sub_80480A8 + mov r1, sp + adds r1, r5 + adds r1, 0x8 + ldrb r1, [r1] + lsls r1, 5 + adds r0, r1 + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + add r1, r8 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r2, r5, 0x2 + adds r1, r2 + lsls r1, 5 + ldr r2, _0804A18C @ =0x06010000 + adds r1, r2 + ldr r2, _0804A190 @ =0x04000008 + bl CpuSet + b _0804A1C2 + .align 2, 0 +_0804A184: .4byte gUnknown_2024018 +_0804A188: .4byte gUnknown_202063C +_0804A18C: .4byte 0x06010000 +_0804A190: .4byte 0x04000008 +_0804A194: + mov r0, r9 + bl sub_80480A8 + mov r1, sp + adds r1, r5 + adds r1, 0x8 + ldrb r1, [r1] + lsls r1, 5 + adds r0, r1 + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + add r1, r8 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r1, r5, r1 + lsls r1, 5 + ldr r4, _0804A1D0 @ =0x06010040 + adds r1, r4 + ldr r2, _0804A1D4 @ =0x04000008 + bl CpuSet +_0804A1C2: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _0804A132 + b _0804A2D6 + .align 2, 0 +_0804A1D0: .4byte 0x06010040 +_0804A1D4: .4byte 0x04000008 +_0804A1D8: + ldr r0, _0804A27C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0xC] + lsls r5, r6, 2 + adds r3, r5, r6 + lsls r3, 2 + adds r3, r0 + ldr r0, [r3, 0x4] + ldr r1, [r3, 0x8] + ldr r2, [r3, 0xC] + adds r3, 0x10 + add r4, sp, 0x8 + str r4, [sp] + movs r4, 0x8 + str r4, [sp, 0x4] + bl sub_804A3C4 + ldr r1, _0804A280 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0804A284 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + adds r7, r5, 0 + cmp r0, 0x64 + bne _0804A230 + movs r5, 0 + movs r1, 0 +_0804A21E: + mov r0, sp + adds r0, r5 + adds r0, 0x8 + strb r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x7 + bls _0804A21E +_0804A230: + movs r5, 0 + ldr r0, _0804A288 @ =gUnknown_202063C + mov r8, r0 + adds r0, r7, r6 + lsls r4, r0, 2 +_0804A23A: + cmp r5, 0x3 + bhi _0804A294 + movs r0, 0xC + bl sub_80480A8 + mov r1, sp + adds r1, r5 + adds r1, 0x8 + ldrb r1, [r1] + lsls r1, 5 + adds r0, r1 + ldr r1, _0804A27C @ =gUnknown_2024018 + ldr r1, [r1] + ldr r1, [r1, 0xC] + adds r1, r4, r1 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r2, r5, 0 + adds r2, 0x24 + adds r1, r2 + lsls r1, 5 + ldr r2, _0804A28C @ =0x06010000 + adds r1, r2 + ldr r2, _0804A290 @ =0x04000008 + bl CpuSet + b _0804A2CC + .align 2, 0 +_0804A27C: .4byte gUnknown_2024018 +_0804A280: .4byte gUnknown_2023BCE +_0804A284: .4byte gUnknown_2024284 +_0804A288: .4byte gUnknown_202063C +_0804A28C: .4byte 0x06010000 +_0804A290: .4byte 0x04000008 +_0804A294: + movs r0, 0xC + bl sub_80480A8 + mov r1, sp + adds r1, r5 + adds r1, 0x8 + ldrb r1, [r1] + lsls r1, 5 + adds r0, r1 + ldr r1, _0804A2E4 @ =gUnknown_2024018 + ldr r1, [r1] + ldr r1, [r1, 0xC] + adds r1, r4, r1 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrh r1, [r1, 0x4] + lsls r1, 22 + lsrs r1, 22 + adds r1, r5, r1 + lsls r1, 5 + ldr r2, _0804A2E8 @ =0x06010b80 + adds r1, r2 + ldr r2, _0804A2EC @ =0x04000008 + bl CpuSet +_0804A2CC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x7 + bls _0804A23A +_0804A2D6: + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804A2E4: .4byte gUnknown_2024018 +_0804A2E8: .4byte 0x06010b80 +_0804A2EC: .4byte 0x04000008 + thumb_func_end sub_804A0D4 + + thumb_func_start sub_804A2F0 +sub_804A2F0: @ 804A2F0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r4, r1, 0 + mov r8, r2 + adds r5, r3, 0 + ldr r1, [sp, 0x18] + ldr r0, [sp, 0x1C] + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 27 + lsrs r2, r1, 24 + ldr r1, [r5] + ldr r0, _0804A31C @ =0xffff8000 + cmp r1, r0 + bne _0804A322 + cmp r7, r2 + bge _0804A320 + lsls r0, r4, 8 + str r0, [r5] + b _0804A322 + .align 2, 0 +_0804A31C: .4byte 0xffff8000 +_0804A320: + str r4, [r5] +_0804A322: + mov r0, r8 + subs r4, r0 + cmp r4, 0 + bge _0804A32E + movs r4, 0 + b _0804A334 +_0804A32E: + cmp r4, r7 + ble _0804A334 + adds r4, r7, 0 +_0804A334: + cmp r7, r2 + bge _0804A350 + ldr r0, [r5] + asrs r1, r0, 8 + adds r6, r0, 0 + cmp r4, r1 + bne _0804A35C + movs r0, 0xFF + ands r0, r6 + cmp r0, 0 + bne _0804A35C + movs r0, 0x1 + negs r0, r0 + b _0804A3B8 +_0804A350: + ldr r6, [r5] + cmp r4, r6 + bne _0804A35C + movs r0, 0x1 + negs r0, r0 + b _0804A3B8 +_0804A35C: + cmp r7, r2 + bge _0804A396 + lsls r0, r7, 8 + adds r1, r2, 0 + bl __divsi3 + mov r1, r8 + cmp r1, 0 + bge _0804A37A + adds r0, r6, r0 + str r0, [r5] + asrs r2, r0, 8 + cmp r2, r4 + blt _0804A3B6 + b _0804A38E +_0804A37A: + subs r0, r6, r0 + str r0, [r5] + asrs r2, r0, 8 + movs r1, 0xFF + ands r0, r1 + cmp r0, 0 + ble _0804A38A + adds r2, 0x1 +_0804A38A: + cmp r2, r4 + bgt _0804A3B6 +_0804A38E: + lsls r0, r4, 8 + str r0, [r5] + adds r2, r4, 0 + b _0804A3B6 +_0804A396: + mov r0, r8 + cmp r0, 0 + bge _0804A3A8 + ldr r0, [r5] + adds r0, r3 + str r0, [r5] + cmp r0, r4 + ble _0804A3B4 + b _0804A3B2 +_0804A3A8: + ldr r0, [r5] + subs r0, r3 + str r0, [r5] + cmp r0, r4 + bge _0804A3B4 +_0804A3B2: + str r4, [r5] +_0804A3B4: + ldr r2, [r5] +_0804A3B6: + adds r0, r2, 0 +_0804A3B8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804A2F0 + + thumb_func_start sub_804A3C4 +sub_804A3C4: @ 804A3C4 + push {r4-r7,lr} + adds r4, r0, 0 + mov r12, r3 + ldr r7, [sp, 0x14] + ldr r0, [sp, 0x18] + lsls r0, 24 + lsrs r6, r0, 24 + subs r5, r1, r2 + cmp r5, 0 + bge _0804A3DC + movs r5, 0 + b _0804A3E2 +_0804A3DC: + cmp r5, r4 + ble _0804A3E2 + adds r5, r4, 0 +_0804A3E2: + lsls r0, r6, 27 + lsrs r3, r0, 24 + movs r1, 0 + cmp r1, r6 + bcs _0804A3FC + movs r2, 0 +_0804A3EE: + adds r0, r7, r1 + strb r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r6 + bcc _0804A3EE +_0804A3FC: + cmp r4, r3 + bge _0804A410 + mov r1, r12 + ldr r0, [r1] + muls r0, r3 + adds r1, r4, 0 + bl __divsi3 + asrs r0, 8 + b _0804A41C +_0804A410: + mov r1, r12 + ldr r0, [r1] + muls r0, r3 + adds r1, r4, 0 + bl __divsi3 +_0804A41C: + lsls r0, 24 + lsrs r2, r0, 24 + adds r3, r2, 0 + cmp r3, 0 + bne _0804A432 + cmp r5, 0 + ble _0804A432 + movs r0, 0x1 + strb r0, [r7] + movs r3, 0x1 + b _0804A456 +_0804A432: + movs r1, 0 + movs r4, 0x8 +_0804A436: + cmp r1, r6 + bcs _0804A456 + cmp r2, 0x7 + bls _0804A452 + adds r0, r7, r1 + strb r4, [r0] + adds r0, r2, 0 + subs r0, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + b _0804A436 +_0804A452: + adds r0, r7, r1 + strb r2, [r0] +_0804A456: + adds r0, r3, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804A3C4 + + thumb_func_start sub_804A460 +sub_804A460: @ 804A460 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x8 + mov r9, r0 + mov r10, r1 + adds r6, r2, 0 + mov r8, r3 + ldr r5, [sp, 0x24] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r5, 24 + lsrs r5, 24 + mov r1, r9 + ldr r0, [r1] + ldr r1, [r1, 0x4] + mov r3, r9 + ldr r2, [r3, 0x8] + movs r3, 0x6 + str r3, [sp] + movs r3, 0x1 + str r3, [sp, 0x4] + mov r3, r10 + bl sub_804A2F0 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + str r5, [sp] + mov r0, r9 + mov r1, r10 + adds r2, r6, 0 + mov r3, r8 + bl sub_804A510 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_804A460 + + thumb_func_start sub_804A4C8 +sub_804A4C8: @ 804A4C8 + push {r4,lr} + sub sp, 0x8 + adds r3, r1, 0 + ldr r4, [r0] + ldr r1, [r0, 0x4] + ldr r2, [r0, 0x8] + movs r0, 0x6 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + adds r0, r4, 0 + bl sub_804A2F0 + lsls r0, 16 + asrs r0, 16 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_804A4C8 + + thumb_func_start sub_804A4F0 +sub_804A4F0: @ 804A4F0 + push {r4,lr} + sub sp, 0x4 + ldr r4, [sp, 0xC] + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + bl sub_804A510 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804A4F0 + + thumb_func_start sub_804A510 +sub_804A510: @ 804A510 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [sp, 0x40] + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, [r4] + ldr r1, [r4, 0x4] + ldr r2, [r4, 0x8] + add r3, sp, 0xC + str r3, [sp] + movs r3, 0x6 + str r3, [sp, 0x4] + adds r3, r5, 0 + bl sub_804A3C4 + movs r3, 0 + add r6, sp, 0x14 + adds r7, r6, 0 + ldrb r0, [r4, 0xC] + lsls r5, r0, 27 + ldr r4, [r4, 0x10] +_0804A554: + lsls r2, r3, 1 + adds r2, r7, r2 + lsrs r1, r5, 15 + mov r0, sp + adds r0, r3 + adds r0, 0xC + ldrb r0, [r0] + adds r0, r4, r0 + orrs r1, r0 + strh r1, [r2] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x5 + bls _0804A554 + movs r0, 0x6 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + mov r0, r9 + adds r1, r6, 0 + mov r2, r10 + mov r3, r8 + bl sub_8002228 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804A510 + + thumb_func_start sub_804A59C +sub_804A59C: @ 804A59C + push {r4-r7,lr} + adds r6, r2, 0 + lsls r3, 27 + lsrs r7, r3, 24 + subs r5, r0, r1 + cmp r5, 0 + bge _0804A5AE + movs r5, 0 + b _0804A5B4 +_0804A5AE: + cmp r5, r6 + ble _0804A5B4 + adds r5, r6, 0 +_0804A5B4: + muls r0, r7 + adds r1, r6, 0 + bl __divsi3 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + muls r0, r7 + adds r1, r6, 0 + bl __divsi3 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + subs r0, r4, r0 + cmp r0, 0 + bge _0804A5DC + negs r0, r0 +_0804A5DC: + lsls r0, 24 + lsrs r0, 24 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804A59C + + thumb_func_start sub_804A5E8 +sub_804A5E8: @ 804A5E8 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + lsls r0, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + muls r0, r2 + lsls r1, 16 + asrs r1, 16 + bl __divsi3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0804A60C + cmp r4, 0 + ble _0804A60C + movs r0, 0x1 +_0804A60C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_804A5E8 + + thumb_func_start sub_804A614 +sub_804A614: @ 804A614 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + cmp r0, r1 + bne _0804A626 + movs r0, 0x4 + b _0804A642 +_0804A626: + movs r2, 0x30 + bl sub_804A5E8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x3 + cmp r1, 0x18 + bhi _0804A642 + movs r0, 0x2 + cmp r1, 0x9 + bhi _0804A642 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_0804A642: + pop {r1} + bx r1 + thumb_func_end sub_804A614 + + thumb_func_start sub_804A648 +sub_804A648: @ 804A648 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x20 + mov r9, r0 + adds r6, r1, 0 + mov r8, r2 + mov r10, r3 + ldr r0, _0804A6D4 @ =gUnknown_8260564 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + add r0, sp, 0x18 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, r4, 24 + lsrs r5, 24 + adds r0, r5, 0 + movs r1, 0x22 + bl sub_800445C + add r1, sp, 0x14 + movs r2, 0 + movs r0, 0x2 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x3 + strb r0, [r1, 0x2] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + str r2, [sp] + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + mov r0, r9 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0 + adds r2, r6, 0 + mov r3, r8 + bl sub_812E5A4 + mov r0, r10 + str r4, [r0] + adds r0, r5, 0 + movs r1, 0x7 + bl sub_8004950 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0804A6D4: .4byte gUnknown_8260564 + thumb_func_end sub_804A648 + + thumb_func_start sub_804A6D8 +sub_804A6D8: @ 804A6D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8003E3C + pop {r0} + bx r0 + thumb_func_end sub_804A6D8 + + thumb_func_start sub_804A6E8 +sub_804A6E8: @ 804A6E8 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + movs r1, 0x80 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r6, r1 + lsls r2, r4, 3 + ldr r3, _0804A72C @ =0x001fffff + ands r2, r3 + movs r3, 0x80 + lsls r3, 19 + orrs r2, r3 + bl CpuSet + cmp r4, 0 + ble _0804A724 +_0804A70C: + adds r0, r5, 0 + adds r0, 0x14 + adds r1, r6, 0 + adds r1, 0x14 + ldr r2, _0804A730 @ =0x04000003 + bl CpuSet + adds r6, 0x20 + adds r5, 0x20 + subs r4, 0x1 + cmp r4, 0 + bne _0804A70C +_0804A724: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804A72C: .4byte 0x001fffff +_0804A730: .4byte 0x04000003 + thumb_func_end sub_804A6E8 + + thumb_func_start sub_804A734 +sub_804A734: @ 804A734 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + lsls r4, r2, 3 + ldr r0, _0804A768 @ =0x001fffff + ands r4, r0 + movs r0, 0x80 + lsls r0, 19 + orrs r4, r0 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl CpuSet + movs r0, 0x80 + lsls r0, 1 + adds r5, r0 + adds r6, r0 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl CpuSet + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804A768: .4byte 0x001fffff + thumb_func_end sub_804A734 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_message.s b/asm/battle_message.s new file mode 100644 index 000000000..8a0314044 --- /dev/null +++ b/asm/battle_message.s @@ -0,0 +1,3043 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D7274 +sub_80D7274: @ 80D7274 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r6, r0, 16 + movs r7, 0 + ldr r4, _080D7330 @ =gUnknown_2039A34 + ldr r0, _080D7334 @ =gUnknown_2023BC4 + mov r8, r0 + ldrb r1, [r0] + lsls r1, 9 + ldr r0, _080D7338 @ =gUnknown_2022BC8 + adds r1, r0 + str r1, [r4] + ldr r2, _080D733C @ =gUnknown_2023D68 + ldrh r0, [r1, 0x4] + strh r0, [r2] + ldr r2, _080D7340 @ =gUnknown_2023D6A + ldrb r0, [r1, 0x6] + strb r0, [r2] + ldr r5, _080D7344 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x7] + strb r0, [r5, 0x17] + ldr r3, _080D7348 @ =gUnknown_2023FE8 + ldr r0, [r3] + adds r0, 0x52 + ldrb r1, [r1, 0x8] + strb r1, [r0] + ldr r0, [r3] + adds r0, 0xAD + ldr r1, [r4] + ldrb r1, [r1, 0x9] + strb r1, [r0] + ldr r1, _080D734C @ =gUnknown_2023D6F + ldr r2, [r4] + ldrb r0, [r2, 0xA] + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x8E + ldrb r1, [r2, 0xB] + strb r1, [r0] + movs r2, 0 + mov r12, r8 + mov r10, r5 + ldr r1, _080D7350 @ =gUnknown_2022AB8 + mov r9, r1 + ldr r3, _080D7354 @ =gUnknown_2039A30 +_080D72D6: + adds r0, r2, r3 + ldr r1, [r4] + adds r1, 0xC + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _080D72D6 + movs r2, 0 + ldr r0, _080D7350 @ =gUnknown_2022AB8 + mov r8, r0 + ldr r3, _080D7330 @ =gUnknown_2039A34 + ldr r5, _080D7358 @ =gUnknown_2022AC8 + ldr r4, _080D735C @ =gUnknown_2022AD8 +_080D72F4: + mov r0, r8 + adds r1, r2, r0 + ldr r0, [r3] + adds r0, 0x10 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r5 + ldr r0, [r3] + adds r0, 0x20 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r4 + ldr r0, [r3] + adds r0, 0x30 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0xF + ble _080D72F4 + cmp r6, 0x5 + bls _080D7326 + b _080D77B8 +_080D7326: + lsls r0, r6, 2 + ldr r1, _080D7360 @ =_080D7364 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D7330: .4byte gUnknown_2039A34 +_080D7334: .4byte gUnknown_2023BC4 +_080D7338: .4byte gUnknown_2022BC8 +_080D733C: .4byte gUnknown_2023D68 +_080D7340: .4byte gUnknown_2023D6A +_080D7344: .4byte gUnknown_2023FC4 +_080D7348: .4byte gUnknown_2023FE8 +_080D734C: .4byte gUnknown_2023D6F +_080D7350: .4byte gUnknown_2022AB8 +_080D7354: .4byte gUnknown_2039A30 +_080D7358: .4byte gUnknown_2022AC8 +_080D735C: .4byte gUnknown_2022AD8 +_080D7360: .4byte _080D7364 + .align 2, 0 +_080D7364: + .4byte _080D737C + .4byte _080D7428 + .4byte _080D74C8 + .4byte _080D7558 + .4byte _080D75F0 + .4byte _080D7654 +_080D737C: + ldr r0, _080D739C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080D73C4 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D73B4 + movs r0, 0x40 + ands r1, r0 + cmp r1, 0 + beq _080D73A4 + ldr r7, _080D73A0 @ =gUnknown_83FD397 + b _080D77DC + .align 2, 0 +_080D739C: .4byte gUnknown_2022B4C +_080D73A0: .4byte gUnknown_83FD397 +_080D73A4: + ldr r0, _080D73B8 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + ldr r7, _080D73BC @ =gUnknown_83FD383 + cmp r1, r0 + beq _080D73B4 + b _080D77DC +_080D73B4: + ldr r7, _080D73C0 @ =gUnknown_83FD366 + b _080D77DC + .align 2, 0 +_080D73B8: .4byte gUnknown_20386AE +_080D73BC: .4byte gUnknown_83FD383 +_080D73C0: .4byte gUnknown_83FD366 +_080D73C4: + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080D73E8 + movs r0, 0x80 + lsls r0, 6 + ands r1, r0 + ldr r7, _080D73E0 @ =gUnknown_83FD2D9 + cmp r1, 0 + bne _080D73DC + b _080D77DC +_080D73DC: + ldr r7, _080D73E4 @ =gUnknown_83FD30D + b _080D77DC + .align 2, 0 +_080D73E0: .4byte gUnknown_83FD2D9 +_080D73E4: .4byte gUnknown_83FD30D +_080D73E8: + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _080D73FC + ldr r7, _080D73F8 @ =gUnknown_83FD297 + b _080D77DC + .align 2, 0 +_080D73F8: .4byte gUnknown_83FD297 +_080D73FC: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D740C + ldr r7, _080D7408 @ =gUnknown_83FD2BF + b _080D77DC + .align 2, 0 +_080D7408: .4byte gUnknown_83FD2BF +_080D740C: + movs r0, 0x80 + lsls r0, 2 + ands r1, r0 + ldr r7, _080D7420 @ =gUnknown_83FD284 + cmp r1, 0 + bne _080D741A + b _080D77DC +_080D741A: + ldr r7, _080D7424 @ =gUnknown_83FD2AA + b _080D77DC + .align 2, 0 +_080D7420: .4byte gUnknown_83FD284 +_080D7424: .4byte gUnknown_83FD2AA +_080D7428: + mov r1, r12 + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D7468 + ldr r0, _080D7454 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D7460 + movs r0, 0x40 + ands r1, r0 + ldr r7, _080D7458 @ =gUnknown_83FD466 + cmp r1, 0 + bne _080D744E + b _080D77DC +_080D744E: + ldr r7, _080D745C @ =gUnknown_83FD4B5 + b _080D77DC + .align 2, 0 +_080D7454: .4byte gUnknown_2022B4C +_080D7458: .4byte gUnknown_83FD466 +_080D745C: .4byte gUnknown_83FD4B5 +_080D7460: + ldr r7, _080D7464 @ =gUnknown_83FD45E + b _080D77DC + .align 2, 0 +_080D7464: .4byte gUnknown_83FD45E +_080D7468: + ldr r0, _080D7480 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D74A0 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080D7488 + ldr r7, _080D7484 @ =gUnknown_83FD41E + b _080D77DC + .align 2, 0 +_080D7480: .4byte gUnknown_2022B4C +_080D7484: .4byte gUnknown_83FD41E +_080D7488: + movs r0, 0x2 + ands r1, r0 + ldr r7, _080D7498 @ =gUnknown_83FD3C7 + cmp r1, 0 + bne _080D7494 + b _080D77DC +_080D7494: + ldr r7, _080D749C @ =gUnknown_83FD407 + b _080D77DC + .align 2, 0 +_080D7498: .4byte gUnknown_83FD3C7 +_080D749C: .4byte gUnknown_83FD407 +_080D74A0: + movs r0, 0x2 + ands r1, r0 + cmp r1, 0 + beq _080D74B8 + ldr r0, _080D74BC @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + ldr r7, _080D74C0 @ =gUnknown_83FD3F7 + cmp r1, r0 + beq _080D74B8 + b _080D77DC +_080D74B8: + ldr r7, _080D74C4 @ =gUnknown_83FD3B1 + b _080D77DC + .align 2, 0 +_080D74BC: .4byte gUnknown_20386AE +_080D74C0: .4byte gUnknown_83FD3F7 +_080D74C4: .4byte gUnknown_83FD3B1 +_080D74C8: + mov r1, r12 + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D7520 + ldr r0, _080D74E8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xAD + ldrb r2, [r0] + cmp r2, 0 + bne _080D74F0 + ldr r7, _080D74EC @ =gUnknown_83FD4CD + b _080D77DC + .align 2, 0 +_080D74E8: .4byte gUnknown_2023FE8 +_080D74EC: .4byte gUnknown_83FD4CD +_080D74F0: + cmp r2, 0x1 + beq _080D7500 + ldr r0, _080D7504 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D750C +_080D7500: + ldr r7, _080D7508 @ =gUnknown_83FD4EB + b _080D77DC + .align 2, 0 +_080D7504: .4byte gUnknown_2022B4C +_080D7508: .4byte gUnknown_83FD4EB +_080D750C: + ldr r7, _080D7518 @ =gUnknown_83FD50D + cmp r2, 0x2 + beq _080D7514 + b _080D77DC +_080D7514: + ldr r7, _080D751C @ =gUnknown_83FD4FA + b _080D77DC + .align 2, 0 +_080D7518: .4byte gUnknown_83FD50D +_080D751C: .4byte gUnknown_83FD4FA +_080D7520: + ldr r0, _080D7540 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 4 + cmp r1, r0 + bne _080D7550 + ldr r0, _080D7544 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + ldr r7, _080D7548 @ =gUnknown_83FD535 + cmp r0, 0 + bne _080D753C + b _080D77DC +_080D753C: + ldr r7, _080D754C @ =gUnknown_83FD545 + b _080D77DC + .align 2, 0 +_080D7540: .4byte gUnknown_20386AE +_080D7544: .4byte gUnknown_2022B4C +_080D7548: .4byte gUnknown_83FD535 +_080D754C: .4byte gUnknown_83FD545 +_080D7550: + ldr r7, _080D7554 @ =gUnknown_83FD522 + b _080D77DC + .align 2, 0 +_080D7554: .4byte gUnknown_83FD522 +_080D7558: + mov r1, r10 + ldrb r0, [r1, 0x17] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D75B0 + ldr r0, _080D7584 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xAD + ldrb r2, [r0] + cmp r2, 0 + beq _080D757E + ldr r0, _080D7588 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D7590 +_080D757E: + ldr r7, _080D758C @ =gUnknown_83FD475 + b _080D77DC + .align 2, 0 +_080D7584: .4byte gUnknown_2023FE8 +_080D7588: .4byte gUnknown_2022B4C +_080D758C: .4byte gUnknown_83FD475 +_080D7590: + cmp r2, 0x1 + bne _080D759C + ldr r7, _080D7598 @ =gUnknown_83FD47D + b _080D77DC + .align 2, 0 +_080D7598: .4byte gUnknown_83FD47D +_080D759C: + ldr r7, _080D75A8 @ =gUnknown_83FD497 + cmp r2, 0x2 + beq _080D75A4 + b _080D77DC +_080D75A4: + ldr r7, _080D75AC @ =gUnknown_83FD488 + b _080D77DC + .align 2, 0 +_080D75A8: .4byte gUnknown_83FD497 +_080D75AC: .4byte gUnknown_83FD488 +_080D75B0: + ldr r0, _080D75C8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D75E0 + movs r0, 0x40 + ands r1, r0 + cmp r1, 0 + beq _080D75D0 + ldr r7, _080D75CC @ =gUnknown_83FD44E + b _080D77DC + .align 2, 0 +_080D75C8: .4byte gUnknown_2022B4C +_080D75CC: .4byte gUnknown_83FD44E +_080D75D0: + ldr r0, _080D75E4 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + ldr r7, _080D75E8 @ =gUnknown_83FD43E + cmp r1, r0 + beq _080D75E0 + b _080D77DC +_080D75E0: + ldr r7, _080D75EC @ =gUnknown_83FD3E4 + b _080D77DC + .align 2, 0 +_080D75E4: .4byte gUnknown_20386AE +_080D75E8: .4byte gUnknown_83FD43E +_080D75EC: .4byte gUnknown_83FD3E4 +_080D75F0: + mov r0, r9 + bl sub_80D86C8 + ldr r0, _080D761C @ =gUnknown_2039A34 + ldr r2, [r0] + ldrh r1, [r2] + movs r0, 0xB1 + lsls r0, 1 + cmp r1, r0 + bls _080D762C + ldr r0, _080D7620 @ =gUnknown_2022AC8 + ldr r2, _080D7624 @ =gUnknown_83FEA28 + ldr r1, _080D7628 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r1, 0x8E + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + b _080D763C + .align 2, 0 +_080D761C: .4byte gUnknown_2039A34 +_080D7620: .4byte gUnknown_2022AC8 +_080D7624: .4byte gUnknown_83FEA28 +_080D7628: .4byte gUnknown_2023FE8 +_080D762C: + ldr r0, _080D7648 @ =gUnknown_2022AC8 + ldrh r2, [r2] + movs r1, 0xD + muls r1, r2 + ldr r2, _080D764C @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 +_080D763C: + ldr r0, _080D7648 @ =gUnknown_2022AC8 + bl sub_80D8720 + ldr r7, _080D7650 @ =gUnknown_83FD57B + b _080D77DC + .align 2, 0 +_080D7648: .4byte gUnknown_2022AC8 +_080D764C: .4byte gUnknown_8247094 +_080D7650: .4byte gUnknown_83FD57B +_080D7654: + ldr r4, _080D7694 @ =gUnknown_2022AB8 + ldrb r1, [r4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080D76D4 + movs r0, 0x7F + ands r0, r1 + strb r0, [r4] + mov r1, r12 + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D7682 + ldrb r1, [r4] + cmp r1, 0x3 + beq _080D7682 + movs r0, 0x3 + eors r0, r1 + strb r0, [r4] +_080D7682: + ldr r0, _080D7694 @ =gUnknown_2022AB8 + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080D769C + ldr r7, _080D7698 @ =gUnknown_83FCC8A + b _080D77DC + .align 2, 0 +_080D7694: .4byte gUnknown_2022AB8 +_080D7698: .4byte gUnknown_83FCC8A +_080D769C: + ldr r0, _080D76AC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080D76B4 + ldr r7, _080D76B0 @ =gUnknown_83FCD9F + b _080D77DC + .align 2, 0 +_080D76AC: .4byte gUnknown_2022B4C +_080D76B0: .4byte gUnknown_83FCD9F +_080D76B4: + ldr r0, _080D76C8 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + ldr r7, _080D76CC @ =gUnknown_83FCD92 + cmp r1, r0 + beq _080D76C4 + b _080D77DC +_080D76C4: + ldr r7, _080D76D0 @ =gUnknown_83FE9D4 + b _080D77DC + .align 2, 0 +_080D76C8: .4byte gUnknown_20386AE +_080D76CC: .4byte gUnknown_83FCD92 +_080D76D0: .4byte gUnknown_83FE9D4 +_080D76D4: + mov r1, r12 + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D76F0 + ldrb r1, [r4] + cmp r1, 0x3 + beq _080D76F0 + movs r0, 0x3 + eors r0, r1 + strb r0, [r4] +_080D76F0: + ldr r0, _080D7710 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080D7738 + ldr r0, _080D7714 @ =gUnknown_2022AB8 + ldrb r0, [r0] + cmp r0, 0x2 + beq _080D7728 + cmp r0, 0x2 + bgt _080D7718 + cmp r0, 0x1 + beq _080D771E + b _080D77DC + .align 2, 0 +_080D7710: .4byte gUnknown_2022B4C +_080D7714: .4byte gUnknown_2022AB8 +_080D7718: + cmp r0, 0x3 + beq _080D7730 + b _080D77DC +_080D771E: + ldr r7, _080D7724 @ =gUnknown_83FCCF8 + b _080D77DC + .align 2, 0 +_080D7724: .4byte gUnknown_83FCCF8 +_080D7728: + ldr r7, _080D772C @ =gUnknown_83FCD27 + b _080D77DC + .align 2, 0 +_080D772C: .4byte gUnknown_83FCD27 +_080D7730: + ldr r7, _080D7734 @ =gUnknown_83FCD66 + b _080D77DC + .align 2, 0 +_080D7734: .4byte gUnknown_83FCD66 +_080D7738: + ldr r0, _080D7758 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0xC0 + lsls r0, 4 + cmp r1, r0 + bne _080D7780 + ldr r0, _080D775C @ =gUnknown_2022AB8 + ldrb r0, [r0] + cmp r0, 0x2 + beq _080D7770 + cmp r0, 0x2 + bgt _080D7760 + cmp r0, 0x1 + beq _080D7766 + b _080D77DC + .align 2, 0 +_080D7758: .4byte gUnknown_20386AE +_080D775C: .4byte gUnknown_2022AB8 +_080D7760: + cmp r0, 0x3 + beq _080D7778 + b _080D77DC +_080D7766: + ldr r7, _080D776C @ =gUnknown_83FD1C7 + b _080D77DC + .align 2, 0 +_080D776C: .4byte gUnknown_83FD1C7 +_080D7770: + ldr r7, _080D7774 @ =gUnknown_83FE9E4 + b _080D77DC + .align 2, 0 +_080D7774: .4byte gUnknown_83FE9E4 +_080D7778: + ldr r7, _080D777C @ =gUnknown_83FE9FF + b _080D77DC + .align 2, 0 +_080D777C: .4byte gUnknown_83FE9FF +_080D7780: + ldr r0, _080D7794 @ =gUnknown_2022AB8 + ldrb r0, [r0] + cmp r0, 0x2 + beq _080D77A8 + cmp r0, 0x2 + bgt _080D7798 + cmp r0, 0x1 + beq _080D779E + b _080D77DC + .align 2, 0 +_080D7794: .4byte gUnknown_2022AB8 +_080D7798: + cmp r0, 0x3 + beq _080D77B0 + b _080D77DC +_080D779E: + ldr r7, _080D77A4 @ =gUnknown_83FCCE4 + b _080D77DC + .align 2, 0 +_080D77A4: .4byte gUnknown_83FCCE4 +_080D77A8: + ldr r7, _080D77AC @ =gUnknown_83FCD0F + b _080D77DC + .align 2, 0 +_080D77AC: .4byte gUnknown_83FCD0F +_080D77B0: + ldr r7, _080D77B4 @ =gUnknown_83FCD41 + b _080D77DC + .align 2, 0 +_080D77B4: .4byte gUnknown_83FCD41 +_080D77B8: + ldr r0, _080D77C8 @ =0x00000181 + cmp r6, r0 + bls _080D77D0 + ldr r1, _080D77CC @ =gUnknown_202298C + movs r0, 0xFF + strb r0, [r1] + b _080D77E2 + .align 2, 0 +_080D77C8: .4byte 0x00000181 +_080D77CC: .4byte gUnknown_202298C +_080D77D0: + ldr r1, _080D77F0 @ =gUnknown_83FDF3C + adds r0, r6, 0 + subs r0, 0xC + lsls r0, 2 + adds r0, r1 + ldr r7, [r0] +_080D77DC: + adds r0, r7, 0 + bl sub_80D77F4 +_080D77E2: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D77F0: .4byte gUnknown_83FDF3C + thumb_func_end sub_80D7274 + + thumb_func_start sub_80D77F4 +sub_80D77F4: @ 80D77F4 + push {lr} + ldr r1, _080D7800 @ =gUnknown_202298C + bl sub_80D7868 + pop {r1} + bx r1 + .align 2, 0 +_080D7800: .4byte gUnknown_202298C + thumb_func_end sub_80D77F4 + + thumb_func_start sub_80D7804 +sub_80D7804: @ 80D7804 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _080D781C @ =gUnknown_83FEB5C + mov r0, sp + movs r2, 0x8 + bl memcpy + mov r2, sp + movs r3, 0 + b _080D782C + .align 2, 0 +_080D781C: .4byte gUnknown_83FEB5C +_080D7820: + strb r1, [r2] + adds r4, 0x1 + adds r2, 0x1 + adds r3, 0x1 + cmp r3, 0x7 + bhi _080D7834 +_080D782C: + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7820 +_080D7834: + ldr r5, [sp] + ldr r4, [sp, 0x4] + movs r3, 0 + ldr r2, _080D7850 @ =gUnknown_82500CC +_080D783C: + ldr r1, [r2] + ldr r0, [r1] + cmp r5, r0 + bne _080D7854 + ldr r0, [r1, 0x4] + cmp r4, r0 + bne _080D7854 + ldr r0, [r2, 0x4] + b _080D785E + .align 2, 0 +_080D7850: .4byte gUnknown_82500CC +_080D7854: + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x6 + bls _080D783C + movs r0, 0 +_080D785E: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D7804 + + thumb_func_start sub_80D7868 +sub_80D7868: @ 80D7868 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x20 + mov r9, r0 + mov r8, r1 + movs r6, 0 + movs r4, 0 + bl sub_800A404 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r9 + ldrb r1, [r0] + bl _080D83F0 +_080D788A: + cmp r1, 0xFD + beq _080D7892 + bl _080D83E0 +_080D7892: + movs r1, 0x1 + add r9, r1 + mov r2, r9 + ldrb r0, [r2] + cmp r0, 0x30 + bls _080D78A2 + bl _080D8382 +_080D78A2: + lsls r0, 2 + ldr r1, _080D78AC @ =_080D78B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D78AC: .4byte _080D78B0 + .align 2, 0 +_080D78B0: + .4byte _080D7974 + .4byte _080D79A2 + .4byte _080D79DE + .4byte _080D79E8 + .4byte _080D79F4 + .4byte _080D7A00 + .4byte _080D7A24 + .4byte _080D7A48 + .4byte _080D7A6C + .4byte _080D7A90 + .4byte _080D7ABC + .4byte _080D7AEC + .4byte _080D7B1C + .4byte _080D7B4C + .4byte _080D7BE0 + .4byte _080D7C4C + .4byte _080D7CC0 + .4byte _080D7D34 + .4byte _080D7DA8 + .4byte _080D7E1C + .4byte _080D7E90 + .4byte _080D7EA8 + .4byte _080D7EE4 + .4byte _080D7FB0 + .4byte _080D7FB8 + .4byte _080D7FC8 + .4byte _080D7FD8 + .4byte _080D7FE8 + .4byte _080D8008 + .4byte _080D80A4 + .4byte _080D8162 + .4byte _080D8174 + .4byte _080D8188 + .4byte _080D819C + .4byte _080D81C0 + .4byte _080D81DC + .4byte _080D81E8 + .4byte _080D8214 + .4byte _080D8260 + .4byte _080D82F8 + .4byte _080D8340 + .4byte _080D8348 + .4byte _080D8318 + .4byte _080D8320 + .4byte _080D8368 + .4byte _080D8370 + .4byte _080D8240 + .4byte _080D8250 + .4byte _080D79B8 +_080D7974: + ldr r5, _080D7984 @ =gUnknown_2022AB8 + ldrb r0, [r5] + cmp r0, 0xFD + bne _080D798C + ldr r4, _080D7988 @ =gUnknown_2021CD0 + adds r0, r5, 0 + b _080D79C4 + .align 2, 0 +_080D7984: .4byte gUnknown_2022AB8 +_080D7988: .4byte gUnknown_2021CD0 +_080D798C: + adds r0, r5, 0 + bl sub_80D7804 + adds r4, r0, 0 + cmp r4, 0 + beq _080D799C + bl _080D8382 +_080D799C: + adds r4, r5, 0 + bl _080D8382 +_080D79A2: + ldr r1, _080D79B0 @ =gUnknown_2022AC8 + ldrb r0, [r1] + cmp r0, 0xFD + bne _080D79D8 + ldr r4, _080D79B4 @ =gUnknown_2021CF0 + b _080D79C2 + .align 2, 0 +_080D79B0: .4byte gUnknown_2022AC8 +_080D79B4: .4byte gUnknown_2021CF0 +_080D79B8: + ldr r1, _080D79D0 @ =gUnknown_2022AD8 + ldrb r0, [r1] + cmp r0, 0xFD + bne _080D79D8 + ldr r4, _080D79D4 @ =gUnknown_2021D04 +_080D79C2: + adds r0, r1, 0 +_080D79C4: + adds r1, r4, 0 + bl sub_80D8418 + bl _080D8382 + .align 2, 0 +_080D79D0: .4byte gUnknown_2022AD8 +_080D79D4: .4byte gUnknown_2021D04 +_080D79D8: + adds r4, r1, 0 + bl _080D8382 +_080D79DE: + ldr r4, _080D79E4 @ =gUnknown_2021CD0 + bl _080D8382 + .align 2, 0 +_080D79E4: .4byte gUnknown_2021CD0 +_080D79E8: + ldr r4, _080D79F0 @ =gUnknown_2021CF0 + bl _080D8382 + .align 2, 0 +_080D79F0: .4byte gUnknown_2021CF0 +_080D79F4: + ldr r4, _080D79FC @ =gUnknown_2021D04 + bl _080D8382 + .align 2, 0 +_080D79FC: .4byte gUnknown_2021D04 +_080D7A00: + movs r0, 0 + bl sub_80751E8 + ldr r1, _080D7A1C @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7A20 @ =gUnknown_2024284 + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7A1C: .4byte gUnknown_2023BCE +_080D7A20: .4byte gUnknown_2024284 +_080D7A24: + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _080D7A40 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7A44 @ =gUnknown_202402C + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7A40: .4byte gUnknown_2023BCE +_080D7A44: .4byte gUnknown_202402C +_080D7A48: + movs r0, 0x2 + bl sub_80751E8 + ldr r1, _080D7A64 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7A68 @ =gUnknown_2024284 + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7A64: .4byte gUnknown_2023BCE +_080D7A68: .4byte gUnknown_2024284 +_080D7A6C: + movs r0, 0x3 + bl sub_80751E8 + ldr r1, _080D7A88 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7A8C @ =gUnknown_202402C + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7A88: .4byte gUnknown_2023BCE +_080D7A8C: .4byte gUnknown_202402C +_080D7A90: + ldr r2, _080D7AB0 @ =gUnknown_2023BCE + ldr r1, _080D7AB4 @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x18] + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7AB8 @ =gUnknown_2024284 + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7AB0: .4byte gUnknown_2023BCE +_080D7AB4: .4byte gUnknown_202273C +_080D7AB8: .4byte gUnknown_2024284 +_080D7ABC: + ldr r2, _080D7AE0 @ =gUnknown_2023BCE + ldr r1, _080D7AE4 @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x18] + movs r0, 0x1 + eors r0, r1 + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7AE8 @ =gUnknown_202402C + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7AE0: .4byte gUnknown_2023BCE +_080D7AE4: .4byte gUnknown_202273C +_080D7AE8: .4byte gUnknown_202402C +_080D7AEC: + ldr r2, _080D7B10 @ =gUnknown_2023BCE + ldr r1, _080D7B14 @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x18] + movs r0, 0x2 + eors r0, r1 + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7B18 @ =gUnknown_2024284 + adds r0, r1 + bl _080D82AA + .align 2, 0 +_080D7B10: .4byte gUnknown_2023BCE +_080D7B14: .4byte gUnknown_202273C +_080D7B18: .4byte gUnknown_2024284 +_080D7B1C: + ldr r2, _080D7B40 @ =gUnknown_2023BCE + ldr r1, _080D7B44 @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0x18] + movs r0, 0x3 + eors r0, r1 + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7B48 @ =gUnknown_202402C + adds r0, r1 + b _080D82AA + .align 2, 0 +_080D7B40: .4byte gUnknown_2023BCE +_080D7B44: .4byte gUnknown_202273C +_080D7B48: .4byte gUnknown_202402C +_080D7B4C: + ldr r4, _080D7B70 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + adds r2, r4, 0 + cmp r0, 0 + beq _080D7BC0 + ldr r0, _080D7B74 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D7B78 @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D7B8A + ldr r4, _080D7B7C @ =gUnknown_83FD55B + b _080D7B8A + .align 2, 0 +_080D7B70: .4byte gUnknown_2023D6B +_080D7B74: .4byte gUnknown_2022B4C +_080D7B78: .4byte gUnknown_83FD555 +_080D7B7C: .4byte gUnknown_83FD55B +_080D7B80: + mov r3, r8 + adds r0, r3, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 +_080D7B8A: + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7B80 + ldrb r0, [r2] + bl sub_80751D8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + bl sub_80751E8 + ldr r1, _080D7BB8 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7BBC @ =gUnknown_202402C + adds r0, r1 + b _080D82AA + .align 2, 0 +_080D7BB8: .4byte gUnknown_2023BCE +_080D7BBC: .4byte gUnknown_202402C +_080D7BC0: + ldrb r0, [r2] + bl sub_80751D8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + bl sub_80751E8 + ldr r1, _080D7BDC @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r1, [r0] + b _080D82D4 + .align 2, 0 +_080D7BDC: .4byte gUnknown_2023BCE +_080D7BE0: + ldr r4, _080D7C14 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D7C20 + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + bl sub_80751E8 + ldr r1, _080D7C18 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, 0x4 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7C1C @ =gUnknown_2024284 + adds r0, r1 + b _080D82AA + .align 2, 0 +_080D7C14: .4byte gUnknown_2023D6B +_080D7C18: .4byte gUnknown_2023BCE +_080D7C1C: .4byte gUnknown_2024284 +_080D7C20: + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + bl sub_80751E8 + ldr r1, _080D7C44 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, 0x4 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D7C48 @ =gUnknown_202402C + b _080D82DA + .align 2, 0 +_080D7C44: .4byte gUnknown_2023BCE +_080D7C48: .4byte gUnknown_202402C +_080D7C4C: + ldr r5, _080D7C98 @ =gUnknown_2023D6B + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080D7CB0 + ldr r0, _080D7C9C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D7CA0 @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D7C6A + ldr r4, _080D7CA4 @ =gUnknown_83FD55B +_080D7C6A: + ldrb r1, [r4] + adds r0, r1, 0 + ldr r3, _080D7CA8 @ =gUnknown_2023BCE + ldr r2, _080D7CAC @ =gUnknown_202402C + mov r12, r2 + adds r2, r5, 0 + cmp r0, 0xFF + beq _080D7C8C +_080D7C7A: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7C7A +_080D7C8C: + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + b _080D82A4 + .align 2, 0 +_080D7C98: .4byte gUnknown_2023D6B +_080D7C9C: .4byte gUnknown_2022B4C +_080D7CA0: .4byte gUnknown_83FD555 +_080D7CA4: .4byte gUnknown_83FD55B +_080D7CA8: .4byte gUnknown_2023BCE +_080D7CAC: .4byte gUnknown_202402C +_080D7CB0: + ldr r1, _080D7CBC @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _080D82D4 + .align 2, 0 +_080D7CBC: .4byte gUnknown_2023BCE +_080D7CC0: + ldr r5, _080D7D0C @ =gUnknown_2023D6C + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080D7D24 + ldr r0, _080D7D10 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D7D14 @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D7CDE + ldr r4, _080D7D18 @ =gUnknown_83FD55B +_080D7CDE: + ldrb r1, [r4] + adds r0, r1, 0 + ldr r3, _080D7D1C @ =gUnknown_2023BCE + ldr r2, _080D7D20 @ =gUnknown_202402C + mov r12, r2 + adds r2, r5, 0 + cmp r0, 0xFF + beq _080D7D00 +_080D7CEE: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7CEE +_080D7D00: + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + b _080D82A4 + .align 2, 0 +_080D7D0C: .4byte gUnknown_2023D6C +_080D7D10: .4byte gUnknown_2022B4C +_080D7D14: .4byte gUnknown_83FD555 +_080D7D18: .4byte gUnknown_83FD55B +_080D7D1C: .4byte gUnknown_2023BCE +_080D7D20: .4byte gUnknown_202402C +_080D7D24: + ldr r1, _080D7D30 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _080D82D4 + .align 2, 0 +_080D7D30: .4byte gUnknown_2023BCE +_080D7D34: + ldr r5, _080D7D80 @ =gUnknown_2023D6E + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080D7D98 + ldr r0, _080D7D84 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D7D88 @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D7D52 + ldr r4, _080D7D8C @ =gUnknown_83FD55B +_080D7D52: + ldrb r1, [r4] + adds r0, r1, 0 + ldr r3, _080D7D90 @ =gUnknown_2023BCE + ldr r2, _080D7D94 @ =gUnknown_202402C + mov r12, r2 + adds r2, r5, 0 + cmp r0, 0xFF + beq _080D7D74 +_080D7D62: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7D62 +_080D7D74: + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + b _080D82A4 + .align 2, 0 +_080D7D80: .4byte gUnknown_2023D6E +_080D7D84: .4byte gUnknown_2022B4C +_080D7D88: .4byte gUnknown_83FD555 +_080D7D8C: .4byte gUnknown_83FD55B +_080D7D90: .4byte gUnknown_2023BCE +_080D7D94: .4byte gUnknown_202402C +_080D7D98: + ldr r1, _080D7DA4 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _080D82D4 + .align 2, 0 +_080D7DA4: .4byte gUnknown_2023BCE +_080D7DA8: + ldr r5, _080D7DF4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080D7E0C + ldr r0, _080D7DF8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D7DFC @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D7DC6 + ldr r4, _080D7E00 @ =gUnknown_83FD55B +_080D7DC6: + ldrb r1, [r4] + adds r0, r1, 0 + ldr r3, _080D7E04 @ =gUnknown_2023BCE + ldr r2, _080D7E08 @ =gUnknown_202402C + mov r12, r2 + adds r2, r5, 0 + cmp r0, 0xFF + beq _080D7DE8 +_080D7DD6: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7DD6 +_080D7DE8: + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + b _080D82A4 + .align 2, 0 +_080D7DF4: .4byte gUnknown_2023BC4 +_080D7DF8: .4byte gUnknown_2022B4C +_080D7DFC: .4byte gUnknown_83FD555 +_080D7E00: .4byte gUnknown_83FD55B +_080D7E04: .4byte gUnknown_2023BCE +_080D7E08: .4byte gUnknown_202402C +_080D7E0C: + ldr r1, _080D7E18 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _080D82D4 + .align 2, 0 +_080D7E18: .4byte gUnknown_2023BCE +_080D7E1C: + ldr r5, _080D7E68 @ =gUnknown_2023FC4 + ldrb r0, [r5, 0x17] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080D7E80 + ldr r0, _080D7E6C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D7E70 @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D7E3A + ldr r4, _080D7E74 @ =gUnknown_83FD55B +_080D7E3A: + ldrb r1, [r4] + adds r0, r1, 0 + ldr r3, _080D7E78 @ =gUnknown_2023BCE + ldr r2, _080D7E7C @ =gUnknown_202402C + mov r12, r2 + adds r2, r5, 0 + cmp r0, 0xFF + beq _080D7E5C +_080D7E4A: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D7E4A +_080D7E5C: + ldrb r0, [r2, 0x17] + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + b _080D82A4 + .align 2, 0 +_080D7E68: .4byte gUnknown_2023FC4 +_080D7E6C: .4byte gUnknown_2022B4C +_080D7E70: .4byte gUnknown_83FD555 +_080D7E74: .4byte gUnknown_83FD55B +_080D7E78: .4byte gUnknown_2023BCE +_080D7E7C: .4byte gUnknown_202402C +_080D7E80: + ldr r1, _080D7E8C @ =gUnknown_2023BCE + ldrb r0, [r5, 0x17] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _080D82D4 + .align 2, 0 +_080D7E8C: .4byte gUnknown_2023BCE +_080D7E90: + ldr r0, _080D7EA4 @ =gUnknown_2039A34 + ldr r2, [r0] + ldrh r1, [r2] + movs r0, 0xB1 + lsls r0, 1 + cmp r1, r0 + bhi _080D7EB6 + ldrh r1, [r2] + b _080D7ED6 + .align 2, 0 +_080D7EA4: .4byte gUnknown_2039A34 +_080D7EA8: + ldr r0, _080D7EC8 @ =gUnknown_2039A34 + ldr r2, [r0] + ldrh r1, [r2, 0x2] + movs r0, 0xB1 + lsls r0, 1 + cmp r1, r0 + bls _080D7ED4 +_080D7EB6: + ldr r0, _080D7ECC @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x8E + ldrb r0, [r0] + lsls r0, 2 + ldr r1, _080D7ED0 @ =gUnknown_83FEA28 + adds r4, r0, r1 + b _080D8382 + .align 2, 0 +_080D7EC8: .4byte gUnknown_2039A34 +_080D7ECC: .4byte gUnknown_2023FE8 +_080D7ED0: .4byte gUnknown_83FEA28 +_080D7ED4: + ldrh r1, [r2, 0x2] +_080D7ED6: + movs r0, 0xD + muls r1, r0 + ldr r0, _080D7EE0 @ =gUnknown_8247094 + adds r4, r1, r0 + b _080D8382 + .align 2, 0 +_080D7EE0: .4byte gUnknown_8247094 +_080D7EE4: + ldr r0, _080D7F1C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D7F9C + ldr r2, _080D7F20 @ =gUnknown_2023D68 + ldrh r0, [r2] + cmp r0, 0xAF + bne _080D7F98 + movs r0, 0x40 + ands r1, r0 + cmp r1, 0 + bne _080D7F44 + ldr r0, _080D7F24 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r0, [r0] + cmp r0, 0 + beq _080D7F2C + ldr r2, _080D7F28 @ =gUnknown_2023D6F + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080D7F38 + b _080D7F90 + .align 2, 0 +_080D7F1C: .4byte gUnknown_2022B4C +_080D7F20: .4byte gUnknown_2023D68 +_080D7F24: .4byte gUnknown_2023FE8 +_080D7F28: .4byte gUnknown_2023D6F +_080D7F2C: + ldr r2, _080D7F40 @ =gUnknown_2023D6F + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080D7F90 +_080D7F38: + ldrb r0, [r2] + lsls r1, r0, 3 + subs r1, r0 + b _080D7F64 + .align 2, 0 +_080D7F40: .4byte gUnknown_2023D6F +_080D7F44: + ldr r2, _080D7F7C @ =gUnknown_202273C + ldr r0, _080D7F80 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080D7F84 @ =gUnknown_2023D6F + ldrb r2, [r1] + ldrh r0, [r0, 0x18] + cmp r0, r2 + bne _080D7F90 + lsls r1, r2, 3 + subs r1, r2 +_080D7F64: + lsls r1, 2 + ldr r0, _080D7F88 @ =gUnknown_2023F54 + adds r1, r0 + mov r0, sp + bl sub_8008D84 + ldr r1, _080D7F8C @ =gUnknown_83FD8AF + mov r0, sp + bl sub_8008DA4 + mov r4, sp + b _080D8382 + .align 2, 0 +_080D7F7C: .4byte gUnknown_202273C +_080D7F80: .4byte gUnknown_2023FE8 +_080D7F84: .4byte gUnknown_2023D6F +_080D7F88: .4byte gUnknown_2023F54 +_080D7F8C: .4byte gUnknown_83FD8AF +_080D7F90: + ldr r4, _080D7F94 @ =gUnknown_83FD8A2 + b _080D8382 + .align 2, 0 +_080D7F94: .4byte gUnknown_83FD8A2 +_080D7F98: + ldrh r0, [r2] + b _080D7FA0 +_080D7F9C: + ldr r0, _080D7FAC @ =gUnknown_2023D68 + ldrh r0, [r0] +_080D7FA0: + mov r1, sp + bl sub_8099E90 + mov r4, sp + b _080D8382 + .align 2, 0 +_080D7FAC: .4byte gUnknown_2023D68 +_080D7FB0: + ldr r0, _080D7FB4 @ =gUnknown_2023D6A + b _080D7FF0 + .align 2, 0 +_080D7FB4: .4byte gUnknown_2023D6A +_080D7FB8: + ldr r1, _080D7FC0 @ =gUnknown_2039A30 + ldr r0, _080D7FC4 @ =gUnknown_2023D6B + b _080D7FEC + .align 2, 0 +_080D7FC0: .4byte gUnknown_2039A30 +_080D7FC4: .4byte gUnknown_2023D6B +_080D7FC8: + ldr r1, _080D7FD0 @ =gUnknown_2039A30 + ldr r0, _080D7FD4 @ =gUnknown_2023D6C + b _080D7FEC + .align 2, 0 +_080D7FD0: .4byte gUnknown_2039A30 +_080D7FD4: .4byte gUnknown_2023D6C +_080D7FD8: + ldr r1, _080D7FE0 @ =gUnknown_2039A30 + ldr r0, _080D7FE4 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + b _080D7FEE + .align 2, 0 +_080D7FE0: .4byte gUnknown_2039A30 +_080D7FE4: .4byte gUnknown_2023FC4 +_080D7FE8: + ldr r1, _080D7FFC @ =gUnknown_2039A30 + ldr r0, _080D8000 @ =gUnknown_2023D6E +_080D7FEC: + ldrb r0, [r0] +_080D7FEE: + adds r0, r1 +_080D7FF0: + ldrb r1, [r0] + movs r0, 0xD + muls r1, r0 + ldr r0, _080D8004 @ =gUnknown_824FC40 + adds r4, r1, r0 + b _080D8382 + .align 2, 0 +_080D7FFC: .4byte gUnknown_2039A30 +_080D8000: .4byte gUnknown_2023D6E +_080D8004: .4byte gUnknown_824FC40 +_080D8008: + ldr r3, _080D8020 @ =gUnknown_20386AE + ldrh r1, [r3] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _080D8024 + bl sub_8040F2C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xD + b _080D8094 + .align 2, 0 +_080D8020: .4byte gUnknown_20386AE +_080D8024: + movs r0, 0xC0 + lsls r0, 4 + cmp r1, r0 + bne _080D8038 + bl sub_80447F0 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + b _080D8094 +_080D8038: + ldr r0, _080D8054 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080D8058 + bl sub_80E60E4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xD + b _080D8094 + .align 2, 0 +_080D8054: .4byte gUnknown_2022B4C +_080D8058: + movs r0, 0x80 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + beq _080D806E + bl sub_815DA10 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xD + b _080D8094 +_080D806E: + movs r0, 0x80 + lsls r0, 4 + ands r1, r0 + cmp r1, 0 + beq _080D8084 + bl sub_80E7440 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xD + b _080D8094 +_080D8084: + ldr r2, _080D809C @ =gUnknown_823EAC8 + ldrh r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r0, 0xD +_080D8094: + muls r1, r0 + ldr r0, _080D80A0 @ =gUnknown_823E558 + adds r4, r1, r0 + b _080D8382 + .align 2, 0 +_080D809C: .4byte gUnknown_823EAC8 +_080D80A0: .4byte gUnknown_823E558 +_080D80A4: + ldr r0, _080D80E8 @ =gUnknown_20386AE + ldrh r2, [r0] + movs r1, 0x80 + lsls r1, 3 + adds r5, r0, 0 + cmp r2, r1 + bne _080D80D6 + movs r2, 0 + ldr r0, _080D80EC @ =gUnknown_2023FF4 + ldr r3, [r0] +_080D80B8: + mov r1, sp + adds r0, r1, r2 + ldr r1, [r3] + adds r1, 0x2 + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x6 + ble _080D80B8 + mov r3, sp + adds r1, r3, r2 + movs r0, 0xFF + strb r0, [r1] + mov r4, sp +_080D80D6: + ldrh r1, [r5] + movs r0, 0xC0 + lsls r0, 4 + cmp r1, r0 + bne _080D80F0 + movs r1, 0x1 + adds r0, r7, 0 + eors r0, r1 + b _080D81C8 + .align 2, 0 +_080D80E8: .4byte gUnknown_20386AE +_080D80EC: .4byte gUnknown_2023FF4 +_080D80F0: + ldr r0, _080D8108 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080D810C + mov r0, sp + bl sub_80E6150 + b _080D8382 + .align 2, 0 +_080D8108: .4byte gUnknown_2022B4C +_080D810C: + movs r0, 0x80 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + beq _080D8120 + mov r0, sp + bl sub_815DA28 + mov r4, sp + b _080D8382 +_080D8120: + movs r0, 0x80 + lsls r0, 4 + ands r1, r0 + cmp r1, 0 + beq _080D8134 + mov r0, sp + bl sub_80E7460 + mov r4, sp + b _080D8382 +_080D8134: + ldr r2, _080D8158 @ =gUnknown_823EAC8 + ldrh r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r0, r1, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0x51 + beq _080D814E + cmp r0, 0x59 + beq _080D814E + cmp r0, 0x5A + bne _080D815C +_080D814E: + movs r0, 0x6 + bl sub_80091E0 + adds r4, r0, 0 + b _080D8382 + .align 2, 0 +_080D8158: .4byte gUnknown_823EAC8 +_080D815C: + adds r0, r2, 0x4 + adds r4, r1, r0 + b _080D8382 +_080D8162: + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + ldr r1, _080D8170 @ =gUnknown_2022744 + adds r4, r0, r1 + b _080D8382 + .align 2, 0 +_080D8170: .4byte gUnknown_2022744 +_080D8174: + ldr r4, _080D8184 @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x18] + movs r0, 0x2 + b _080D81AA + .align 2, 0 +_080D8184: .4byte gUnknown_202273C +_080D8188: + ldr r4, _080D8198 @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x18] + movs r0, 0x1 + b _080D81AA + .align 2, 0 +_080D8198: .4byte gUnknown_202273C +_080D819C: + ldr r4, _080D81BC @ =gUnknown_202273C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x18] + movs r0, 0x3 +_080D81AA: + eors r0, r1 + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r4, 0x8 + adds r4, r1, r4 + b _080D8382 + .align 2, 0 +_080D81BC: .4byte gUnknown_202273C +_080D81C0: + ldr r0, _080D81D4 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + bl sub_8043658 +_080D81C8: + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + ldr r0, _080D81D8 @ =gUnknown_2022744 + adds r4, r1, r0 + b _080D8382 + .align 2, 0 +_080D81D4: .4byte gUnknown_2023FC4 +_080D81D8: .4byte gUnknown_2022744 +_080D81DC: + ldr r0, _080D81E4 @ =gUnknown_300500C + ldr r4, [r0] + b _080D8382 + .align 2, 0 +_080D81E4: .4byte gUnknown_300500C +_080D81E8: + ldr r0, _080D8204 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _080D820C + ldr r4, _080D8208 @ =gUnknown_2021D18 + adds r0, r4, 0 + movs r1, 0 + bl sub_815DC40 + b _080D8382 + .align 2, 0 +_080D8204: .4byte gUnknown_2022B4C +_080D8208: .4byte gUnknown_2021D18 +_080D820C: + bl sub_80806EC + adds r4, r0, 0 + b _080D8382 +_080D8214: + ldr r0, _080D8230 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _080D8238 + ldr r4, _080D8234 @ =gUnknown_2021D18 + adds r0, r4, 0 + movs r1, 0 + bl sub_815DBF4 + b _080D8382 + .align 2, 0 +_080D8230: .4byte gUnknown_2022B4C +_080D8234: .4byte gUnknown_2021D18 +_080D8238: + bl sub_8080710 + adds r4, r0, 0 + b _080D8382 +_080D8240: + ldr r4, _080D824C @ =gUnknown_2021D18 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_815DC40 + b _080D8382 + .align 2, 0 +_080D824C: .4byte gUnknown_2021D18 +_080D8250: + ldr r4, _080D825C @ =gUnknown_2021D18 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_815DBF4 + b _080D8382 + .align 2, 0 +_080D825C: .4byte gUnknown_2021D18 +_080D8260: + ldr r0, _080D82B4 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _080D82CC + ldr r0, _080D82B8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x8 + ands r1, r0 + ldr r4, _080D82BC @ =gUnknown_83FD555 + cmp r1, 0 + beq _080D827E + ldr r4, _080D82C0 @ =gUnknown_83FD55B +_080D827E: + ldrb r1, [r4] + adds r0, r1, 0 + ldr r5, _080D82C4 @ =gUnknown_202402C + mov r12, r5 + ldr r2, _080D82C8 @ =gUnknown_2023FE8 + cmp r0, 0xFF + beq _080D829E +_080D828C: + mov r3, r8 + adds r0, r3, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D828C +_080D829E: + ldr r0, [r2] + adds r0, 0x52 + ldrb r1, [r0] +_080D82A4: + movs r0, 0x64 + muls r0, r1 + add r0, r12 +_080D82AA: + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + b _080D82E4 + .align 2, 0 +_080D82B4: .4byte gUnknown_2023FC4 +_080D82B8: .4byte gUnknown_2022B4C +_080D82BC: .4byte gUnknown_83FD555 +_080D82C0: .4byte gUnknown_83FD55B +_080D82C4: .4byte gUnknown_202402C +_080D82C8: .4byte gUnknown_2023FE8 +_080D82CC: + ldr r0, _080D82F0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x52 + ldrb r1, [r0] +_080D82D4: + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D82F4 @ =gUnknown_2024284 +_080D82DA: + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 +_080D82E4: + mov r0, sp + bl sub_8008D28 + mov r4, sp + b _080D8382 + .align 2, 0 +_080D82F0: .4byte gUnknown_2023FE8 +_080D82F4: .4byte gUnknown_2024284 +_080D82F8: + ldr r0, _080D830C @ =0x00000834 + bl sub_806E6D0 + lsls r0, 24 + ldr r4, _080D8310 @ =gUnknown_83FD81A + cmp r0, 0 + beq _080D8382 + ldr r4, _080D8314 @ =gUnknown_83FD824 + b _080D8382 + .align 2, 0 +_080D830C: .4byte 0x00000834 +_080D8310: .4byte gUnknown_83FD81A +_080D8314: .4byte gUnknown_83FD824 +_080D8318: + ldr r0, _080D831C @ =gUnknown_2023D6B + b _080D8322 + .align 2, 0 +_080D831C: .4byte gUnknown_2023D6B +_080D8320: + ldr r0, _080D8334 @ =gUnknown_2023D6C +_080D8322: + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldr r4, _080D8338 @ =gUnknown_83FD569 + cmp r0, 0 + bne _080D8382 + ldr r4, _080D833C @ =gUnknown_83FD56D + b _080D8382 + .align 2, 0 +_080D8334: .4byte gUnknown_2023D6C +_080D8338: .4byte gUnknown_83FD569 +_080D833C: .4byte gUnknown_83FD56D +_080D8340: + ldr r0, _080D8344 @ =gUnknown_2023D6B + b _080D834A + .align 2, 0 +_080D8344: .4byte gUnknown_2023D6B +_080D8348: + ldr r0, _080D835C @ =gUnknown_2023D6C +_080D834A: + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldr r4, _080D8360 @ =gUnknown_83FD560 + cmp r0, 0 + bne _080D8382 + ldr r4, _080D8364 @ =gUnknown_83FD564 + b _080D8382 + .align 2, 0 +_080D835C: .4byte gUnknown_2023D6C +_080D8360: .4byte gUnknown_83FD560 +_080D8364: .4byte gUnknown_83FD564 +_080D8368: + ldr r0, _080D836C @ =gUnknown_2023D6B + b _080D8372 + .align 2, 0 +_080D836C: .4byte gUnknown_2023D6B +_080D8370: + ldr r0, _080D83D4 @ =gUnknown_2023D6C +_080D8372: + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldr r4, _080D83D8 @ =gUnknown_83FD572 + cmp r0, 0 + bne _080D8382 + ldr r4, _080D83DC @ =gUnknown_83FD576 +_080D8382: + ldrb r1, [r4] + adds r0, r1, 0 + mov r5, r9 + ldrb r2, [r5] + mov r3, r9 + adds r3, 0x1 + cmp r0, 0xFF + beq _080D83A4 +_080D8392: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, 0x1 + adds r4, 0x1 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080D8392 +_080D83A4: + adds r0, r2, 0 + subs r0, 0x24 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080D83BC + lsls r0, r2, 24 + lsrs r0, 24 + cmp r0, 0x2E + beq _080D83BC + cmp r0, 0x2F + bne _080D83EC +_080D83BC: + mov r0, r8 + adds r1, r0, r6 + movs r0, 0xFC + strb r0, [r1] + adds r6, 0x1 + mov r2, r8 + adds r1, r2, r6 + movs r0, 0x9 + strb r0, [r1] + adds r6, 0x1 + b _080D83EC + .align 2, 0 +_080D83D4: .4byte gUnknown_2023D6C +_080D83D8: .4byte gUnknown_83FD572 +_080D83DC: .4byte gUnknown_83FD576 +_080D83E0: + mov r3, r8 + adds r0, r3, r6 + strb r1, [r0] + adds r6, 0x1 + mov r3, r9 + adds r3, 0x1 +_080D83EC: + mov r9, r3 + ldrb r1, [r3] +_080D83F0: + adds r0, r1, 0 + cmp r0, 0xFF + beq _080D83FA + bl _080D788A +_080D83FA: + mov r5, r8 + adds r1, r5, r6 + mov r2, r9 + ldrb r0, [r2] + strb r0, [r1] + adds r6, 0x1 + adds r0, r6, 0 + add sp, 0x20 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D7868 + + thumb_func_start sub_80D8418 +sub_80D8418: @ 80D8418 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + adds r7, r0, 0 + adds r6, r1, 0 + movs r5, 0x1 + movs r0, 0 + mov r8, r0 + movs r0, 0xFF + strb r0, [r6] + ldrb r0, [r7, 0x1] + cmp r0, 0xFF + bne _080D8436 + b _080D86BA +_080D8436: + adds r0, r7, r5 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0xA + bls _080D8442 + b _080D86B0 +_080D8442: + lsls r0, r1, 2 + ldr r1, _080D844C @ =_080D8450 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D844C: .4byte _080D8450 + .align 2, 0 +_080D8450: + .4byte _080D847C + .4byte _080D8498 + .4byte _080D84EC + .4byte _080D8504 + .4byte _080D8514 + .4byte _080D858C + .4byte _080D85A0 + .4byte _080D85B2 + .4byte _080D85F8 + .4byte _080D860C + .4byte _080D8628 +_080D847C: + adds r0, r5, r7 + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r0, _080D8494 @ =gUnknown_83FDF3C + subs r1, 0xC + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + b _080D868E + .align 2, 0 +_080D8494: .4byte gUnknown_83FDF3C +_080D8498: + ldrb r0, [r4, 0x1] + cmp r0, 0x2 + beq _080D84B4 + cmp r0, 0x2 + bgt _080D84A8 + cmp r0, 0x1 + beq _080D84AE + b _080D84D6 +_080D84A8: + cmp r0, 0x4 + beq _080D84BC + b _080D84D6 +_080D84AE: + ldrb r4, [r4, 0x3] + mov r8, r4 + b _080D84D6 +_080D84B4: + ldrb r1, [r4, 0x3] + ldrb r0, [r4, 0x4] + lsls r0, 8 + b _080D84D2 +_080D84BC: + ldrb r0, [r4, 0x3] + mov r8, r0 + ldrb r0, [r4, 0x4] + lsls r0, 8 + mov r1, r8 + orrs r1, r0 + ldrb r0, [r4, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r4, 0x6] + lsls r0, 24 +_080D84D2: + orrs r1, r0 + mov r8, r1 +_080D84D6: + adds r4, r5, r7 + ldrb r3, [r4, 0x2] + adds r0, r6, 0 + mov r1, r8 + movs r2, 0 + bl sub_8008E78 + adds r0, r5, 0x3 + ldrb r4, [r4, 0x1] + adds r5, r0, r4 + b _080D86B0 +_080D84EC: + adds r0, r5, r7 + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0xD + muls r1, r0 + ldr r0, _080D8500 @ =gUnknown_8247094 + adds r1, r0 + b _080D868E + .align 2, 0 +_080D8500: .4byte gUnknown_8247094 +_080D8504: + adds r0, r5, r7 + ldrb r0, [r0, 0x1] + lsls r1, r0, 3 + subs r1, r0 + ldr r0, _080D8510 @ =gUnknown_824F1A0 + b _080D8616 + .align 2, 0 +_080D8510: .4byte gUnknown_824F1A0 +_080D8514: + ldrb r0, [r4, 0x1] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D8538 + ldrb r1, [r4, 0x2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D8534 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + b _080D8574 + .align 2, 0 +_080D8534: .4byte gUnknown_2024284 +_080D8538: + ldr r0, _080D8550 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080D8558 + ldr r1, _080D8554 @ =gUnknown_83FD55B + adds r0, r6, 0 + bl sub_8008DA4 + b _080D8560 + .align 2, 0 +_080D8550: .4byte gUnknown_2022B4C +_080D8554: .4byte gUnknown_83FD55B +_080D8558: + ldr r1, _080D8584 @ =gUnknown_83FD555 + adds r0, r6, 0 + bl sub_8008DA4 +_080D8560: + adds r0, r5, r7 + ldrb r1, [r0, 0x2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D8588 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 +_080D8574: + mov r0, sp + bl sub_8008D28 + adds r0, r6, 0 + mov r1, sp + bl sub_8008DA4 + b _080D86AE + .align 2, 0 +_080D8584: .4byte gUnknown_83FD555 +_080D8588: .4byte gUnknown_202402C +_080D858C: + ldr r1, _080D859C @ =gUnknown_83FD5D0 + adds r0, r5, r7 + ldrb r0, [r0, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + b _080D8618 + .align 2, 0 +_080D859C: .4byte gUnknown_83FD5D0 +_080D85A0: + adds r0, r5, r7 + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + adds r0, r6, 0 + bl sub_8040FD0 + b _080D86AE +_080D85B2: + adds r4, r5, r7 + ldrb r0, [r4, 0x1] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080D85D8 + ldrb r1, [r4, 0x2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D85D4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_803FBE8 + b _080D85EA + .align 2, 0 +_080D85D4: .4byte gUnknown_2024284 +_080D85D8: + ldrb r1, [r4, 0x2] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D85F4 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_803FBE8 +_080D85EA: + adds r0, r6, 0 + bl sub_8008D28 + b _080D86AE + .align 2, 0 +_080D85F4: .4byte gUnknown_202402C +_080D85F8: + ldr r1, _080D8608 @ =gUnknown_83FD63C + adds r0, r5, r7 + ldrb r0, [r0, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + b _080D8618 + .align 2, 0 +_080D8608: .4byte gUnknown_83FD63C +_080D860C: + adds r0, r5, r7 + ldrb r1, [r0, 0x1] + movs r0, 0xD + muls r1, r0 + ldr r0, _080D8624 @ =gUnknown_824FC40 +_080D8616: + adds r1, r0 +_080D8618: + adds r0, r6, 0 + bl sub_8008DA4 + adds r5, 0x2 + b _080D86B0 + .align 2, 0 +_080D8624: .4byte gUnknown_824FC40 +_080D8628: + adds r0, r5, r7 + ldrb r2, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r2, r0 + ldr r0, _080D8674 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D86A6 + cmp r2, 0xAF + bne _080D869C + ldr r2, _080D8678 @ =gUnknown_202273C + ldr r0, _080D867C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB5 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080D8680 @ =gUnknown_2023D6F + ldrb r2, [r1] + ldrh r0, [r0, 0x18] + cmp r0, r2 + bne _080D868C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + ldr r0, _080D8684 @ =gUnknown_2023F54 + adds r1, r0 + adds r0, r6, 0 + bl sub_8008D84 + ldr r1, _080D8688 @ =gUnknown_83FD8AF + b _080D868E + .align 2, 0 +_080D8674: .4byte gUnknown_2022B4C +_080D8678: .4byte gUnknown_202273C +_080D867C: .4byte gUnknown_2023FE8 +_080D8680: .4byte gUnknown_2023D6F +_080D8684: .4byte gUnknown_2023F54 +_080D8688: .4byte gUnknown_83FD8AF +_080D868C: + ldr r1, _080D8698 @ =gUnknown_83FD8A2 +_080D868E: + adds r0, r6, 0 + bl sub_8008DA4 + b _080D86AE + .align 2, 0 +_080D8698: .4byte gUnknown_83FD8A2 +_080D869C: + adds r0, r2, 0 + adds r1, r6, 0 + bl sub_8099E90 + b _080D86AE +_080D86A6: + adds r0, r2, 0 + adds r1, r6, 0 + bl sub_8099E90 +_080D86AE: + adds r5, 0x3 +_080D86B0: + adds r0, r7, r5 + ldrb r0, [r0] + cmp r0, 0xFF + beq _080D86BA + b _080D8436 +_080D86BA: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D8418 + + thumb_func_start sub_80D86C8 +sub_80D86C8: @ 80D86C8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r2, 0 + ldr r5, _080D86FC @ =gUnknown_2039A34 + ldr r3, _080D8700 @ =gUnknown_83FEA70 +_080D86D2: + cmp r2, 0x4 + beq _080D86E8 + ldrh r1, [r3] + cmp r1, 0 + bne _080D86DE + adds r2, 0x1 +_080D86DE: + ldr r0, [r5] + adds r3, 0x2 + ldrh r0, [r0] + cmp r1, r0 + bne _080D86D2 +_080D86E8: + cmp r2, 0 + blt _080D8714 + cmp r2, 0x2 + bgt _080D8708 + ldr r1, _080D8704 @ =gUnknown_83FE88B + adds r0, r4, 0 + bl sub_8008D84 + b _080D8714 + .align 2, 0 +_080D86FC: .4byte gUnknown_2039A34 +_080D8700: .4byte gUnknown_83FEA70 +_080D8704: .4byte gUnknown_83FE88B +_080D8708: + cmp r2, 0x4 + bgt _080D8714 + ldr r1, _080D871C @ =gUnknown_83FE88F + adds r0, r4, 0 + bl sub_8008D84 +_080D8714: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D871C: .4byte gUnknown_83FE88F + thumb_func_end sub_80D86C8 + + thumb_func_start sub_80D8720 +sub_80D8720: @ 80D8720 + push {r4,r5,lr} + adds r3, r0, 0 + movs r4, 0 + b _080D872A +_080D8728: + adds r3, 0x1 +_080D872A: + ldrb r0, [r3] + cmp r0, 0xFF + bne _080D8728 + ldr r1, _080D8760 @ =gUnknown_83FEA70 + ldr r5, _080D8764 @ =gUnknown_2039A34 + movs r0, 0 + lsls r0, 1 + adds r2, r0, r1 +_080D873A: + cmp r4, 0x4 + beq _080D8754 + ldrh r1, [r2] + cmp r1, 0 + bne _080D8746 + adds r4, 0x1 +_080D8746: + ldr r0, [r5] + adds r2, 0x2 + ldrh r0, [r0] + cmp r1, r0 + bne _080D873A + cmp r4, 0x4 + bhi _080D87B0 +_080D8754: + lsls r0, r4, 2 + ldr r1, _080D8768 @ =_080D876C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D8760: .4byte gUnknown_83FEA70 +_080D8764: .4byte gUnknown_2039A34 +_080D8768: .4byte _080D876C + .align 2, 0 +_080D876C: + .4byte _080D8780 + .4byte _080D8788 + .4byte _080D8790 + .4byte _080D8798 + .4byte _080D87A8 +_080D8780: + ldr r1, _080D8784 @ =gUnknown_83FD586 + b _080D879A + .align 2, 0 +_080D8784: .4byte gUnknown_83FD586 +_080D8788: + ldr r1, _080D878C @ =gUnknown_83FD588 + b _080D879A + .align 2, 0 +_080D878C: .4byte gUnknown_83FD588 +_080D8790: + ldr r1, _080D8794 @ =gUnknown_83FD58A + b _080D879A + .align 2, 0 +_080D8794: .4byte gUnknown_83FD58A +_080D8798: + ldr r1, _080D87A4 @ =gUnknown_83FD58C +_080D879A: + adds r0, r3, 0 + bl sub_8008D84 + b _080D87B0 + .align 2, 0 +_080D87A4: .4byte gUnknown_83FD58C +_080D87A8: + ldr r1, _080D87B8 @ =gUnknown_83FD58E + adds r0, r3, 0 + bl sub_8008D84 +_080D87B0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D87B8: .4byte gUnknown_83FD58E + thumb_func_end sub_80D8720 + + thumb_func_start sub_80D87BC +sub_80D87BC: @ 80D87BC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + movs r0, 0xC0 + mov r8, r0 + mov r1, r8 + ands r1, r7 + mov r8, r1 + movs r0, 0x3F + ands r7, r0 + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080D87F2 + ldr r0, _080D8814 @ =gUnknown_83FEB64 + lsls r1, r7, 1 + adds r1, r7 + lsls r1, 2 + adds r1, r0 + ldrb r1, [r1] + adds r0, r7, 0 + bl sub_800445C +_080D87F2: + movs r0, 0x40 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _080D881C + bl sub_80CBE00 + lsls r0, 24 + lsrs r0, 24 + mov r2, sp + ldr r1, _080D8818 @ =gUnknown_83FEC90 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2, 0x5] + lsls r6, r7, 1 + b _080D882E + .align 2, 0 +_080D8814: .4byte gUnknown_83FEB64 +_080D8818: .4byte gUnknown_83FEC90 +_080D881C: + mov r3, sp + ldr r1, _080D884C @ =gUnknown_83FEB64 + lsls r2, r7, 1 + adds r0, r2, r7 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strb r0, [r3, 0x5] + adds r6, r2, 0 +_080D882E: + cmp r7, 0xF + blt _080D8878 + cmp r7, 0x14 + bgt _080D8850 + ldr r0, _080D884C @ =gUnknown_83FEB64 + adds r1, r6, r7 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + ldrb r2, [r1, 0x4] + adds r1, r4, 0 + bl sub_8005ED4 + movs r1, 0x30 + b _080D8868 + .align 2, 0 +_080D884C: .4byte gUnknown_83FEB64 +_080D8850: + cmp r7, 0x17 + bgt _080D8878 + ldr r0, _080D8874 @ =gUnknown_83FEB64 + adds r1, r6, r7 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + ldrb r2, [r1, 0x4] + adds r1, r4, 0 + bl sub_8005ED4 + movs r1, 0x40 +_080D8868: + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + b _080D8882 + .align 2, 0 +_080D8874: .4byte gUnknown_83FEB64 +_080D8878: + ldr r1, _080D88F8 @ =gUnknown_83FEB64 + adds r0, r6, r7 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x2] +_080D8882: + cmp r1, 0 + bge _080D8888 + movs r1, 0 +_080D8888: + str r4, [sp] + mov r0, sp + strb r7, [r0, 0x4] + strb r1, [r0, 0x6] + mov r1, sp + ldr r0, _080D88F8 @ =gUnknown_83FEB64 + mov r12, r0 + adds r3, r6, r7 + lsls r3, 2 + add r3, r12 + ldrb r0, [r3, 0x3] + strb r0, [r1, 0x7] + mov r0, sp + ldrb r0, [r0, 0x6] + strb r0, [r1, 0x8] + mov r0, sp + ldrb r0, [r0, 0x7] + strb r0, [r1, 0x9] + ldrb r0, [r3, 0x4] + strb r0, [r1, 0xA] + ldrb r0, [r3, 0x5] + strb r0, [r1, 0xB] + mov r4, sp + ldrb r2, [r4, 0xC] + movs r1, 0x10 + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r4, 0xC] + mov r2, sp + ldrb r0, [r3, 0x7] + lsls r0, 4 + movs r5, 0xF + strb r0, [r2, 0xC] + ldrb r2, [r3, 0x8] + adds r0, r5, 0 + ands r0, r2 + ldrb r2, [r4, 0xD] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xD] + mov r2, sp + ldrb r0, [r3, 0x9] + lsls r0, 4 + ands r1, r5 + orrs r1, r0 + strb r1, [r2, 0xD] + mov r3, r12 + cmp r7, 0x18 + bne _080D8900 + ldr r0, _080D88FC @ =gUnknown_3003E50 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + b _080D8908 + .align 2, 0 +_080D88F8: .4byte gUnknown_83FEB64 +_080D88FC: .4byte gUnknown_3003E50 +_080D8900: + ldr r0, _080D8930 @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 +_080D8908: + strb r1, [r0] + adds r4, r0, 0 + ldr r1, _080D8934 @ =gUnknown_2022B4C + ldr r2, [r1] + movs r0, 0x2 + ands r0, r2 + adds r5, r1, 0 + cmp r0, 0 + bne _080D8928 + movs r0, 0x80 + lsls r0, 9 + ands r2, r0 + cmp r2, 0 + beq _080D8938 + cmp r7, 0x18 + beq _080D8938 +_080D8928: + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + b _080D8940 + .align 2, 0 +_080D8930: .4byte gUnknown_3003E50 +_080D8934: .4byte gUnknown_2022B4C +_080D8938: + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 +_080D8940: + strb r0, [r4] + cmp r7, 0 + beq _080D894A + cmp r7, 0x18 + bne _080D8970 +_080D894A: + ldr r0, [r5] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D8958 + movs r3, 0x1 + b _080D8960 +_080D8958: + bl sub_80F78A8 + lsls r0, 24 + lsrs r3, r0, 24 +_080D8960: + ldr r0, _080D896C @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _080D8982 + .align 2, 0 +_080D896C: .4byte gUnknown_3003E50 +_080D8970: + adds r0, r6, r7 + lsls r0, 2 + adds r0, r3 + ldrb r3, [r0, 0x6] + ldrb r1, [r4] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r4] +_080D8982: + mov r0, sp + adds r1, r3, 0 + movs r2, 0 + bl sub_8002CF4 + movs r0, 0x80 + mov r1, r8 + ands r1, r0 + cmp r1, 0 + bne _080D89A4 + adds r0, r7, 0 + bl sub_8003FA0 + adds r0, r7, 0 + movs r1, 0x3 + bl sub_8003F20 +_080D89A4: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D87BC + + thumb_func_start sub_80D89B0 +sub_80D89B0: @ 80D89B0 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xC + beq _080D89CC + ldr r0, _080D89D0 @ =0x00000177 + cmp r1, r0 + beq _080D89CC + adds r0, 0x8 + cmp r1, r0 + beq _080D89CC + subs r0, 0x7 + cmp r1, r0 + bne _080D89D4 +_080D89CC: + movs r0, 0x1 + b _080D89D6 + .align 2, 0 +_080D89D0: .4byte 0x00000177 +_080D89D4: + movs r0, 0 +_080D89D6: + pop {r1} + bx r1 + thumb_func_end sub_80D89B0 + + thumb_func_start sub_80D89DC +sub_80D89DC: @ 80D89DC + push {r4,r5,lr} + ldr r0, _080D8A38 @ =gUnknown_2023BC4 + ldrb r2, [r0] + lsls r1, r2, 9 + ldr r0, _080D8A3C @ =gUnknown_2022BC8 + adds r1, r0 + ldr r4, _080D8A40 @ =gUnknown_8D2FBB4 + ldr r0, _080D8A44 @ =gUnknown_2023FFC + adds r2, r0 + ldrb r2, [r2] + adds r0, r1, 0 + adds r0, 0x8 + adds r0, r2 + ldrb r0, [r0] + adds r1, 0xC + adds r1, r2 + ldrb r1, [r1] + bl sub_80D8A50 + lsls r0, 24 + ldr r5, _080D8A48 @ =gUnknown_20371F8 + lsrs r0, 22 + adds r0, r4 + ldrh r1, [r0] + adds r2, r5, 0 + adds r2, 0xB8 + strh r1, [r2] + ldrh r0, [r0, 0x2] + adds r5, 0xB6 + strh r0, [r5] + ldr r4, _080D8A4C @ =gUnknown_20376B0 + adds r0, r2, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl CpuSet + subs r4, 0x2 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl CpuSet + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D8A38: .4byte gUnknown_2023BC4 +_080D8A3C: .4byte gUnknown_2022BC8 +_080D8A40: .4byte gUnknown_8D2FBB4 +_080D8A44: .4byte gUnknown_2023FFC +_080D8A48: .4byte gUnknown_20371F8 +_080D8A4C: .4byte gUnknown_20376B0 + thumb_func_end sub_80D89DC + + thumb_func_start sub_80D8A50 +sub_80D8A50: @ 80D8A50 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + adds r3, r2, 0 + lsls r1, 24 + lsrs r0, r1, 24 + cmp r0, r2 + beq _080D8A98 + cmp r0, 0x2 + bhi _080D8A6A + cmp r2, 0x1 + bhi _080D8A98 + b _080D8A72 +_080D8A6A: + cmp r0, 0x7 + bhi _080D8A7C + cmp r2, 0x2 + bhi _080D8A98 +_080D8A72: + movs r0, 0x2 + subs r0, r2 + lsls r0, 24 + lsrs r0, 24 + b _080D8A9A +_080D8A7C: + cmp r2, 0 + bne _080D8A84 + movs r0, 0x2 + b _080D8A9A +_080D8A84: + lsrs r0, r1, 26 + cmp r2, r0 + bhi _080D8A8E + movs r0, 0x1 + b _080D8A9A +_080D8A8E: + lsrs r0, r1, 25 + cmp r3, r0 + bhi _080D8A98 + movs r0, 0 + b _080D8A9A +_080D8A98: + movs r0, 0x3 +_080D8A9A: + pop {r1} + bx r1 + thumb_func_end sub_80D8A50 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_records.s b/asm/battle_records.s new file mode 100644 index 000000000..c87b60bc1 --- /dev/null +++ b/asm/battle_records.s @@ -0,0 +1,1398 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80CD228 +sub_80CD228: @ 80CD228 + push {lr} + movs r0, 0 + bl sub_80006F4 + ldr r0, _080CD23C @ =sub_80CD240 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080CD23C: .4byte sub_80CD240 + thumb_func_end sub_80CD228 + + thumb_func_start sub_80CD240 +sub_80CD240: @ 80CD240 + push {r4,lr} + sub sp, 0x4 + ldr r0, _080CD260 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x7 + bls _080CD254 + b _080CD376 +_080CD254: + lsls r0, 2 + ldr r1, _080CD264 @ =_080CD268 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CD260: .4byte gUnknown_30030F0 +_080CD264: .4byte _080CD268 + .align 2, 0 +_080CD268: + .4byte _080CD288 + .4byte _080CD294 + .4byte _080CD29A + .4byte _080CD2CC + .4byte _080CD2E2 + .4byte _080CD302 + .4byte _080CD314 + .4byte _080CD338 +_080CD288: + movs r0, 0 + bl sub_80006F4 + bl sub_80CD4D0 + b _080CD324 +_080CD294: + bl sub_80CD608 + b _080CD324 +_080CD29A: + ldr r4, _080CD2C4 @ =gUnknown_2039A1C + movs r0, 0x80 + lsls r0, 4 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0 + bl sub_8001618 + ldr r1, _080CD2C8 @ =gUnknown_83F6C7C + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r1, [r4] + movs r0, 0x3 + bl sub_8001FA0 + bl sub_80CD638 + b _080CD324 + .align 2, 0 +_080CD2C4: .4byte gUnknown_2039A1C +_080CD2C8: .4byte gUnknown_83F6C7C +_080CD2CC: + movs r0, 0x3 + bl sub_80CDCD0 + movs r0, 0 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + b _080CD324 +_080CD2E2: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CD376 + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x3 + bl sub_80020BC + b _080CD324 +_080CD302: + ldr r0, _080CD310 @ =gUnknown_83F6C68 + bl sub_8003B24 + bl sub_8002C28 + b _080CD324 + .align 2, 0 +_080CD310: .4byte gUnknown_83F6C68 +_080CD314: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_080CD324: + ldr r1, _080CD334 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080CD376 + .align 2, 0 +_080CD334: .4byte gUnknown_30030F0 +_080CD338: + bl sub_80CD628 + ldr r0, _080CD350 @ =sub_80CD38C + bl sub_80006F4 + ldr r0, _080CD354 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + beq _080CD358 + bl sub_815EC8C + b _080CD35C + .align 2, 0 +_080CD350: .4byte sub_80CD38C +_080CD354: .4byte gUnknown_20370C0 +_080CD358: + bl sub_80CDBE4 +_080CD35C: + ldr r0, _080CD380 @ =sub_80CD3B8 + movs r1, 0x8 + bl sub_807741C + ldr r0, _080CD384 @ =sub_80CD3A0 + bl sub_8000544 + ldr r0, _080CD388 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_080CD376: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD380: .4byte sub_80CD3B8 +_080CD384: .4byte sub_80CD3A0 +_080CD388: .4byte gUnknown_30030F0 + thumb_func_end sub_80CD240 + + thumb_func_start sub_80CD38C +sub_80CD38C: @ 80CD38C + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80CD38C + + thumb_func_start sub_80CD3A0 +sub_80CD3A0: @ 80CD3A0 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80CD3A0 + + thumb_func_start sub_80CD3B8 +sub_80CD3B8: @ 80CD3B8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080CD3DC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080CD3D8 + ldr r0, _080CD3E0 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _080CD3E4 @ =sub_80CD3E8 + str r0, [r1] +_080CD3D8: + pop {r0} + bx r0 + .align 2, 0 +_080CD3DC: .4byte gUnknown_2037AB8 +_080CD3E0: .4byte gUnknown_3005090 +_080CD3E4: .4byte sub_80CD3E8 + thumb_func_end sub_80CD3B8 + + thumb_func_start sub_80CD3E8 +sub_80CD3E8: @ 80CD3E8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080CD41C @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r0, _080CD420 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080CD40C + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080CD416 +_080CD40C: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080CD424 @ =sub_80CD428 + str r0, [r4] +_080CD416: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD41C: .4byte gUnknown_3005090 +_080CD420: .4byte gUnknown_30030F0 +_080CD424: .4byte sub_80CD428 + thumb_func_end sub_80CD3E8 + + thumb_func_start sub_80CD428 +sub_80CD428: @ 80CD428 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _080CD458 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080CD45C @ =sub_80CD460 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD458: .4byte gUnknown_3005090 +_080CD45C: .4byte sub_80CD460 + thumb_func_end sub_80CD428 + + thumb_func_start sub_80CD460 +sub_80CD460: @ 80CD460 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080CD498 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080CD490 + ldr r0, _080CD49C @ =sub_80568E0 + bl sub_8000544 + ldr r0, _080CD4A0 @ =gUnknown_2039A1C + ldr r0, [r0] + bl sub_8002BC4 + movs r0, 0 + bl sub_80CD4A4 + bl sub_8003ECC + adds r0, r4, 0 + bl sub_8077508 +_080CD490: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD498: .4byte gUnknown_2037AB8 +_080CD49C: .4byte sub_80568E0 +_080CD4A0: .4byte gUnknown_2039A1C + thumb_func_end sub_80CD460 + + thumb_func_start sub_80CD4A4 +sub_80CD4A4: @ 80CD4A4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0 + bl sub_80040B8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8003F20 + adds r0, r4, 0 + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CD4A4 + + thumb_func_start sub_80CD4D0 +sub_80CD4D0: @ 80CD4D0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _080CD600 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _080CD604 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_080CD4F6: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _080CD4F6 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _080CD600 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0xE + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CD600: .4byte 0x040000d4 +_080CD604: .4byte 0x81000800 + thumb_func_end sub_80CD4D0 + + thumb_func_start sub_80CD608 +sub_80CD608: @ 80CD608 + push {lr} + bl sub_8087E64 + bl sub_80773BC + bl sub_8006B10 + bl sub_810BB8C + bl sub_8070528 + bl sub_80088F0 + pop {r0} + bx r0 + thumb_func_end sub_80CD608 + + thumb_func_start sub_80CD628 +sub_80CD628: @ 80CD628 + push {lr} + movs r1, 0x94 + lsls r1, 4 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80CD628 + + thumb_func_start sub_80CD638 +sub_80CD638: @ 80CD638 + push {lr} + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_80CD638 + + thumb_func_start sub_80CD690 +sub_80CD690: @ 80CD690 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r2, _080CD6BC @ =0x01000008 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + movs r0, 0xFF + strb r0, [r4] + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD6BC: .4byte 0x01000008 + thumb_func_end sub_80CD690 + + thumb_func_start sub_80CD6C0 +sub_80CD6C0: @ 80CD6C0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0x4 +_080CD6C6: + adds r0, r4, 0 + bl sub_80CD690 + adds r4, 0x10 + subs r5, 0x1 + cmp r5, 0 + bge _080CD6C6 + movs r0, 0x17 + movs r1, 0 + bl sub_8054F00 + movs r0, 0x18 + movs r1, 0 + bl sub_8054F00 + movs r0, 0x19 + movs r1, 0 + bl sub_8054F00 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80CD6C0 + + thumb_func_start sub_80CD6F4 +sub_80CD6F4: @ 80CD6F4 + adds r1, r0, 0 + ldrh r0, [r1, 0xA] + ldrh r2, [r1, 0xC] + adds r0, r2 + ldrh r1, [r1, 0xE] + adds r0, r1 + bx lr + thumb_func_end sub_80CD6F4 + + thumb_func_start sub_80CD704 +sub_80CD704: @ 80CD704 + push {r4-r7,lr} + adds r7, r1, 0 + lsls r2, 16 + lsrs r6, r2, 16 + movs r5, 0 + adds r4, r0, 0 +_080CD710: + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0x7 + bl sub_8008E4C + cmp r0, 0 + bne _080CD728 + ldrh r0, [r4, 0x8] + cmp r0, r6 + bne _080CD728 + adds r0, r5, 0 + b _080CD732 +_080CD728: + adds r4, 0x10 + adds r5, 0x1 + cmp r5, 0x4 + ble _080CD710 + movs r0, 0x5 +_080CD732: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80CD704 + + thumb_func_start sub_80CD738 +sub_80CD738: @ 80CD738 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r8, r0 + movs r0, 0x4 +_080CD746: + subs r2, r0, 0x1 + mov r9, r2 + cmp r2, 0 + blt _080CD7A0 + lsls r0, 4 + mov r1, r8 + adds r6, r1, r0 + lsls r0, r2, 4 + adds r5, r0, r1 +_080CD758: + adds r0, r6, 0 + str r2, [sp, 0x10] + bl sub_80CD6F4 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_80CD6F4 + ldr r2, [sp, 0x10] + cmp r4, r0 + ble _080CD792 + mov r1, sp + adds r0, r6, 0 + ldm r0!, {r3,r4,r7} + stm r1!, {r3,r4,r7} + ldr r0, [r0] + str r0, [r1] + adds r1, r6, 0 + adds r0, r5, 0 + ldm r0!, {r3,r4,r7} + stm r1!, {r3,r4,r7} + ldr r0, [r0] + str r0, [r1] + adds r1, r5, 0 + mov r0, sp + ldm r0!, {r3,r4,r7} + stm r1!, {r3,r4,r7} + ldr r0, [r0] + str r0, [r1] +_080CD792: + subs r5, 0x10 + movs r0, 0x1 + negs r0, r0 + add r9, r0 + mov r1, r9 + cmp r1, 0 + bge _080CD758 +_080CD7A0: + adds r0, r2, 0 + cmp r0, 0 + bgt _080CD746 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80CD738 + + thumb_func_start sub_80CD7B4 +sub_80CD7B4: @ 80CD7B4 + push {lr} + adds r2, r0, 0 + cmp r1, 0x2 + beq _080CD7E4 + cmp r1, 0x2 + bgt _080CD7C6 + cmp r1, 0x1 + beq _080CD7CC + b _080CD80E +_080CD7C6: + cmp r1, 0x3 + beq _080CD7FC + b _080CD80E +_080CD7CC: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080CD7E0 @ =0x0000270f + cmp r0, r1 + bls _080CD80E + strh r1, [r2, 0xA] + b _080CD80E + .align 2, 0 +_080CD7E0: .4byte 0x0000270f +_080CD7E4: + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080CD7F8 @ =0x0000270f + cmp r0, r1 + bls _080CD80E + strh r1, [r2, 0xC] + b _080CD80E + .align 2, 0 +_080CD7F8: .4byte 0x0000270f +_080CD7FC: + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080CD814 @ =0x0000270f + cmp r0, r1 + bls _080CD80E + strh r1, [r2, 0xE] +_080CD80E: + pop {r0} + bx r0 + .align 2, 0 +_080CD814: .4byte 0x0000270f + thumb_func_end sub_80CD7B4 + + thumb_func_start sub_80CD818 +sub_80CD818: @ 80CD818 + push {r4,lr} + cmp r0, 0x2 + beq _080CD832 + cmp r0, 0x2 + bgt _080CD828 + cmp r0, 0x1 + beq _080CD82E + b _080CD84A +_080CD828: + cmp r0, 0x3 + beq _080CD836 + b _080CD84A +_080CD82E: + movs r4, 0x17 + b _080CD838 +_080CD832: + movs r4, 0x18 + b _080CD838 +_080CD836: + movs r4, 0x19 +_080CD838: + adds r0, r4, 0 + bl sub_8054EC4 + ldr r1, _080CD850 @ =0x0000270e + cmp r0, r1 + bhi _080CD84A + adds r0, r4, 0 + bl sub_8054E90 +_080CD84A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD850: .4byte 0x0000270e + thumb_func_end sub_80CD818 + + thumb_func_start sub_80CD854 +sub_80CD854: @ 80CD854 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r6, r0, 0 + adds r4, r1, 0 + mov r8, r3 + ldr r0, [sp, 0x20] + lsls r2, 16 + lsrs r7, r2, 16 + cmp r0, 0x1 + bne _080CD882 + mov r1, sp + movs r0, 0xFC + strb r0, [r1] + movs r0, 0x15 + strb r0, [r1, 0x1] + mov r0, sp + adds r0, 0x2 + adds r1, r4, 0 + bl sub_8008D84 + b _080CD88A +_080CD882: + mov r0, sp + adds r1, r4, 0 + bl sub_8008D84 +_080CD88A: + mov r0, r8 + bl sub_80CD818 + adds r0, r6, 0 + bl sub_80CD738 + adds r0, r6, 0 + mov r1, sp + adds r2, r7, 0 + bl sub_80CD704 + adds r5, r0, 0 + cmp r5, 0x5 + bne _080CD8BE + movs r5, 0x4 + adds r4, r6, 0 + adds r4, 0x40 + adds r0, r4, 0 + bl sub_80CD690 + adds r0, r4, 0 + mov r1, sp + movs r2, 0x7 + bl sub_8008DBC + strh r7, [r4, 0x8] +_080CD8BE: + lsls r0, r5, 4 + adds r0, r6, r0 + mov r1, r8 + bl sub_80CD7B4 + adds r0, r6, 0 + bl sub_80CD738 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80CD854 + + thumb_func_start sub_80CD8DC +sub_80CD8DC: @ 80CD8DC + push {lr} + ldr r0, _080CD8F0 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080CD8F4 @ =0x00000a98 + adds r0, r1 + bl sub_80CD6C0 + pop {r0} + bx r0 + .align 2, 0 +_080CD8F0: .4byte gUnknown_300500C +_080CD8F4: .4byte 0x00000a98 + thumb_func_end sub_80CD8DC + + thumb_func_start sub_80CD8F8 +sub_80CD8F8: @ 80CD8F8 + push {lr} + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 5 + ldr r0, _080CD91C @ =gUnknown_2039638 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + ldr r2, _080CD920 @ =0x0000270f + cmp r0, r2 + bls _080CD916 + strh r2, [r1] +_080CD916: + pop {r0} + bx r0 + .align 2, 0 +_080CD91C: .4byte gUnknown_2039638 +_080CD920: .4byte 0x0000270f + thumb_func_end sub_80CD8F8 + + thumb_func_start sub_80CD924 +sub_80CD924: @ 80CD924 + push {lr} + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 5 + ldr r0, _080CD948 @ =gUnknown_203963A + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + ldr r2, _080CD94C @ =0x0000270f + cmp r0, r2 + bls _080CD942 + strh r2, [r1] +_080CD942: + pop {r0} + bx r0 + .align 2, 0 +_080CD948: .4byte gUnknown_203963A +_080CD94C: .4byte 0x0000270f + thumb_func_end sub_80CD924 + + thumb_func_start sub_80CD950 +sub_80CD950: @ 80CD950 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080CD964 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x1 + beq _080CD968 + cmp r0, 0x2 + beq _080CD976 + b _080CD984 + .align 2, 0 +_080CD964: .4byte gUnknown_2023E8A +_080CD968: + eors r0, r4 + bl sub_80CD8F8 + adds r0, r4, 0 + bl sub_80CD924 + b _080CD984 +_080CD976: + movs r0, 0x1 + eors r0, r4 + bl sub_80CD924 + adds r0, r4, 0 + bl sub_80CD8F8 +_080CD984: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CD950 + + thumb_func_start sub_80CD98C +sub_80CD98C: @ 80CD98C + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r0, _080CD9DC @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _080CD9D4 + adds r0, r6, 0 + bl sub_80CD950 + ldr r0, _080CD9E0 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080CD9E4 @ =0x00000a98 + adds r0, r1 + lsls r2, r6, 1 + adds r2, r6 + lsls r2, 5 + ldr r3, _080CD9E8 @ =gUnknown_2039654 + adds r1, r2, r3 + subs r3, 0x30 + adds r2, r3 + ldrh r2, [r2, 0xE] + ldr r3, _080CD9EC @ =gUnknown_2023E8A + ldrb r3, [r3] + ldr r5, _080CD9F0 @ =gUnknown_202273C + lsls r4, r6, 3 + subs r4, r6 + lsls r4, 2 + adds r4, r5 + ldrh r4, [r4, 0x1A] + str r4, [sp] + bl sub_80CD854 +_080CD9D4: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CD9DC: .4byte gUnknown_3005008 +_080CD9E0: .4byte gUnknown_300500C +_080CD9E4: .4byte 0x00000a98 +_080CD9E8: .4byte gUnknown_2039654 +_080CD9EC: .4byte gUnknown_2023E8A +_080CD9F0: .4byte gUnknown_202273C + thumb_func_end sub_80CD98C + + thumb_func_start sub_80CD9F4 +sub_80CD9F4: @ 80CD9F4 + push {r4-r7,lr} + sub sp, 0x14 + movs r0, 0x17 + bl sub_8054EC4 + adds r4, r0, 0 + movs r0, 0x18 + bl sub_8054EC4 + adds r5, r0, 0 + movs r0, 0x19 + bl sub_8054EC4 + adds r6, r0, 0 + ldr r0, _080CDAB0 @ =0x0000270f + cmp r4, r0 + bls _080CDA18 + adds r4, r0, 0 +_080CDA18: + cmp r5, r0 + bls _080CDA1E + adds r5, r0, 0 +_080CDA1E: + cmp r6, r0 + bls _080CDA24 + adds r6, r0, 0 +_080CDA24: + ldr r0, _080CDAB4 @ =gUnknown_2021CD0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + ldr r0, _080CDAB8 @ =gUnknown_2021CF0 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + ldr r0, _080CDABC @ =gUnknown_2021D04 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + movs r3, 0 + ldr r6, _080CDAC0 @ =gUnknown_83F6C84 + ldr r7, _080CDAC4 @ =gUnknown_2021D18 + ldr r0, _080CDAC8 @ =gUnknown_8418188 + mov r12, r0 + movs r5, 0 +_080CDA54: + lsls r0, r3, 2 + adds r0, r6 + ldr r2, [r0] + movs r1, 0 + adds r4, r3, 0x1 + movs r3, 0x3 +_080CDA60: + cmp r1, 0 + bne _080CDA70 + ldrb r0, [r2] + cmp r0, 0xFF + bne _080CDA6C + movs r1, 0x1 +_080CDA6C: + cmp r1, 0 + beq _080CDA72 +_080CDA70: + strb r5, [r2] +_080CDA72: + adds r2, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _080CDA60 + movs r0, 0xFF + strb r0, [r2] + adds r3, r4, 0 + cmp r3, 0x2 + bls _080CDA54 + adds r0, r7, 0 + mov r1, r12 + bl sub_8008FCC + movs r0, 0 + str r0, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + ldr r1, _080CDACC @ =gUnknown_83F6C78 + str r1, [sp, 0x8] + str r0, [sp, 0xC] + str r7, [sp, 0x10] + movs r1, 0x2 + movs r2, 0xC + movs r3, 0x18 + bl sub_812E5A4 + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CDAB0: .4byte 0x0000270f +_080CDAB4: .4byte gUnknown_2021CD0 +_080CDAB8: .4byte gUnknown_2021CF0 +_080CDABC: .4byte gUnknown_2021D04 +_080CDAC0: .4byte gUnknown_83F6C84 +_080CDAC4: .4byte gUnknown_2021D18 +_080CDAC8: .4byte gUnknown_8418188 +_080CDACC: .4byte gUnknown_83F6C78 + thumb_func_end sub_80CD9F4 + + thumb_func_start sub_80CDAD0 +sub_80CDAD0: @ 80CDAD0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r5, 0 + ldrh r0, [r6, 0xA] + cmp r0, 0 + bne _080CDB50 + ldr r0, [r6, 0xC] + cmp r0, 0 + bne _080CDB50 + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + ldr r0, _080CDB44 @ =gUnknown_83F6C78 + str r0, [sp, 0x8] + str r5, [sp, 0xC] + ldr r0, _080CDB48 @ =gUnknown_84181B6 + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + mov r3, r8 + bl sub_812E5A4 + movs r6, 0 +_080CDB0E: + movs r4, 0x54 + cmp r5, 0 + beq _080CDB1C + movs r4, 0xB4 + cmp r5, 0x1 + bne _080CDB1C + movs r4, 0x84 +_080CDB1C: + adds r2, r4, 0 + str r6, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + ldr r0, _080CDB44 @ =gUnknown_83F6C78 + str r0, [sp, 0x8] + str r6, [sp, 0xC] + ldr r0, _080CDB4C @ =gUnknown_84181BE + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + mov r3, r8 + bl sub_812E5A4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _080CDB0E + b _080CDBCE + .align 2, 0 +_080CDB44: .4byte gUnknown_83F6C78 +_080CDB48: .4byte gUnknown_84181B6 +_080CDB4C: .4byte gUnknown_84181BE +_080CDB50: + movs r5, 0 + ldr r7, _080CDB70 @ =gUnknown_2021CD0 + mov r9, r5 +_080CDB56: + cmp r5, 0 + bne _080CDB74 + movs r4, 0 + adds r0, r7, 0 + movs r1, 0x8 + bl sub_8009284 + adds r0, r7, 0 + adds r1, r6, 0 + movs r2, 0x7 + bl sub_8008DBC + b _080CDBA6 + .align 2, 0 +_080CDB70: .4byte gUnknown_2021CD0 +_080CDB74: + cmp r5, 0x1 + bne _080CDB7E + movs r4, 0x54 + ldrh r1, [r6, 0xA] + b _080CDB86 +_080CDB7E: + cmp r5, 0x2 + bne _080CDB98 + movs r4, 0x84 + ldrh r1, [r6, 0xC] +_080CDB86: + ldr r0, _080CDB94 @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 + b _080CDBA6 + .align 2, 0 +_080CDB94: .4byte gUnknown_2021CD0 +_080CDB98: + movs r4, 0xB4 + ldrh r1, [r6, 0xE] + ldr r0, _080CDBDC @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 +_080CDBA6: + adds r2, r4, 0 + mov r0, r9 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + ldr r0, _080CDBE0 @ =gUnknown_83F6C78 + str r0, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + str r7, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + mov r3, r8 + bl sub_812E5A4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _080CDB56 +_080CDBCE: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CDBDC: .4byte gUnknown_2021CD0 +_080CDBE0: .4byte gUnknown_83F6C78 + thumb_func_end sub_80CDAD0 + + thumb_func_start sub_80CDBE4 +sub_80CDBE4: @ 80CDBE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + movs r0, 0xD8 + str r0, [sp] + movs r0, 0x90 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + ldr r5, _080CDC9C @ =gUnknown_2021D18 + ldr r1, _080CDCA0 @ =gUnknown_8418174 + adds r0, r5, 0 + bl sub_8008FCC + movs r2, 0x1 + negs r2, r2 + movs r0, 0x2 + adds r1, r5, 0 + bl sub_8005ED4 + movs r2, 0xD0 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + movs r4, 0 + str r4, [sp] + movs r0, 0x2 + mov r9, r0 + str r0, [sp, 0x4] + ldr r6, _080CDCA4 @ =gUnknown_83F6C78 + str r6, [sp, 0x8] + str r4, [sp, 0xC] + str r5, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r3, 0x4 + bl sub_812E5A4 + ldr r5, _080CDCA8 @ =gUnknown_300500C + ldr r0, [r5] + ldr r1, _080CDCAC @ =0x00000a98 + mov r8, r1 + add r0, r8 + bl sub_80CD9F4 + str r4, [sp] + mov r0, r9 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + str r4, [sp, 0xC] + ldr r0, _080CDCB0 @ =gUnknown_84181A4 + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x54 + movs r3, 0x30 + bl sub_812E5A4 + adds r7, r5, 0 + movs r5, 0xF4 + lsls r5, 22 + mov r6, r8 + movs r4, 0x4 +_080CDC70: + ldr r0, [r7] + adds r0, r6 + lsrs r1, r5, 24 + bl sub_80CDAD0 + movs r1, 0xE0 + lsls r1, 20 + adds r5, r1 + adds r6, 0x10 + subs r4, 0x1 + cmp r4, 0 + bge _080CDC70 + movs r0, 0 + bl sub_80CDCB4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CDC9C: .4byte gUnknown_2021D18 +_080CDCA0: .4byte gUnknown_8418174 +_080CDCA4: .4byte gUnknown_83F6C78 +_080CDCA8: .4byte gUnknown_300500C +_080CDCAC: .4byte 0x00000a98 +_080CDCB0: .4byte gUnknown_84181A4 + thumb_func_end sub_80CDBE4 + + thumb_func_start sub_80CDCB4 +sub_80CDCB4: @ 80CDCB4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CDCB4 + + thumb_func_start sub_80CDCD0 +sub_80CDCD0: @ 80CDCD0 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080CDD0C @ =gUnknown_83F6388 + adds r0, r4, 0 + movs r2, 0xC0 + movs r3, 0 + bl sub_80017D0 + ldr r1, _080CDD10 @ =gUnknown_83F6468 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002124 + ldr r0, _080CDD14 @ =gUnknown_83F6448 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CDD0C: .4byte gUnknown_83F6388 +_080CDD10: .4byte gUnknown_83F6468 +_080CDD14: .4byte gUnknown_83F6448 + thumb_func_end sub_80CDCD0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s new file mode 100644 index 000000000..831a93b4e --- /dev/null +++ b/asm/battle_script_commands.s @@ -0,0 +1,33196 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_801D760 +sub_801D760: @ 801D760 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r0, _0801D77C @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0 + beq _0801D784 + ldr r1, _0801D780 @ =gUnknown_2023BE3 + movs r0, 0xC + strb r0, [r1] + b _0801DAFC + .align 2, 0 +_0801D77C: .4byte gUnknown_2023E8A +_0801D780: .4byte gUnknown_2023BE3 +_0801D784: + ldr r2, _0801D7B4 @ =gUnknown_2023BE4 + ldr r0, _0801D7B8 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801D7C8 + ldr r2, _0801D7BC @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + bne _0801D7C8 + movs r0, 0x80 + lsls r0, 12 + orrs r1, r0 + str r1, [r2] + ldr r1, _0801D7C0 @ =gUnknown_2023D74 + ldr r0, _0801D7C4 @ =gUnknown_81D694E + b _0801DAFA + .align 2, 0 +_0801D7B4: .4byte gUnknown_2023BE4 +_0801D7B8: .4byte gUnknown_2023D6B +_0801D7BC: .4byte gUnknown_2023DD0 +_0801D7C0: .4byte gUnknown_2023D74 +_0801D7C4: .4byte gUnknown_81D694E +_0801D7C8: + bl sub_80192D4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0801D7D6 + b _0801DAFC +_0801D7D6: + ldr r0, _0801D844 @ =gUnknown_2023D6C + ldrb r1, [r0] + str r2, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0801D7EE + b _0801DAFC +_0801D7EE: + ldr r4, _0801D848 @ =gUnknown_2023BE4 + ldr r0, _0801D84C @ =gUnknown_2023D48 + ldrb r1, [r0] + ldr r3, _0801D850 @ =gUnknown_2023D6B + ldrb r2, [r3] + movs r0, 0x58 + muls r2, r0 + adds r1, r2 + adds r0, r4, 0 + adds r0, 0x24 + adds r1, r0 + ldrb r0, [r1] + ldr r5, _0801D854 @ =gUnknown_2023DD0 + cmp r0, 0 + bne _0801D86C + ldr r0, _0801D858 @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xA5 + beq _0801D86C + ldr r0, [r5] + ldr r1, _0801D85C @ =0x00800200 + ands r0, r1 + cmp r0, 0 + bne _0801D86C + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _0801D86C + ldr r1, _0801D860 @ =gUnknown_2023D74 + ldr r0, _0801D864 @ =gUnknown_81D8EA8 + str r0, [r1] + ldr r2, _0801D868 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + b _0801DAFC + .align 2, 0 +_0801D844: .4byte gUnknown_2023D6C +_0801D848: .4byte gUnknown_2023BE4 +_0801D84C: .4byte gUnknown_2023D48 +_0801D850: .4byte gUnknown_2023D6B +_0801D854: .4byte gUnknown_2023DD0 +_0801D858: .4byte gUnknown_2023D4A +_0801D85C: .4byte 0x00800200 +_0801D860: .4byte gUnknown_2023D74 +_0801D864: .4byte gUnknown_81D8EA8 +_0801D868: .4byte gUnknown_2023DCC +_0801D86C: + ldr r0, [r5] + ldr r1, _0801D8B0 @ =0xff7fffff + ands r0, r1 + str r0, [r5] + movs r6, 0x80 + lsls r6, 18 + ands r0, r6 + cmp r0, 0 + bne _0801D8C4 + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r1, r4, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _0801D8C4 + bl sub_801D438 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0801D8C4 + cmp r2, 0x2 + bne _0801D8B4 + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + b _0801DAFC + .align 2, 0 +_0801D8B0: .4byte 0xff7fffff +_0801D8B4: + ldr r0, _0801D8C0 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _0801DAFC + .align 2, 0 +_0801D8C0: .4byte gUnknown_2023DCC +_0801D8C4: + ldr r2, _0801D928 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 18 + orrs r0, r1 + str r0, [r2] + ldr r2, _0801D92C @ =gUnknown_2023E8C + ldr r1, _0801D930 @ =gUnknown_2023D6C + ldrb r3, [r1] + lsls r0, r3, 4 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 27 + mov r8, r1 + mov r9, r2 + cmp r0, 0 + bge _0801D94C + ldr r2, _0801D934 @ =gUnknown_8250C04 + ldr r0, _0801D938 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801D94C + ldr r0, _0801D93C @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r2, _0801D940 @ =0x00000115 + adds r1, r3, 0 + bl sub_8016EC8 + mov r0, r8 + ldrb r1, [r0] + lsls r1, 4 + add r1, r9 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + bl sub_8017544 + ldr r1, _0801D944 @ =gUnknown_2023D74 + ldr r0, _0801D948 @ =gUnknown_81D8FAA + b _0801DAFA + .align 2, 0 +_0801D928: .4byte gUnknown_2023DD0 +_0801D92C: .4byte gUnknown_2023E8C +_0801D930: .4byte gUnknown_2023D6C +_0801D934: .4byte gUnknown_8250C04 +_0801D938: .4byte gUnknown_2023D4A +_0801D93C: .4byte gUnknown_2023D6B +_0801D940: .4byte 0x00000115 +_0801D944: .4byte gUnknown_2023D74 +_0801D948: .4byte gUnknown_81D8FAA +_0801D94C: + movs r2, 0 + ldr r0, _0801D9C8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r2, r0 + bge _0801D98E + ldr r6, _0801D9CC @ =gUnknown_2023E8C + ldr r1, _0801D9D0 @ =gUnknown_8250C04 + mov r12, r1 + adds r5, r0, 0 + ldr r7, _0801D9D4 @ =gUnknown_2023BDE +_0801D960: + adds r4, r2, r7 + ldrb r3, [r4] + lsls r0, r3, 4 + adds r0, r6 + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _0801D988 + ldr r0, _0801D9D8 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r1, [r0, 0x8] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801D988 + b _0801DAB4 +_0801D988: + adds r2, 0x1 + cmp r2, r5 + blt _0801D960 +_0801D98E: + ldr r0, _0801D9DC @ =gUnknown_2023ECC + mov r1, r8 + ldrb r2, [r1] + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r3, [r1] + lsls r0, r3, 30 + cmp r0, 0 + bge _0801D9EC + movs r0, 0x3 + negs r0, r0 + ands r0, r3 + strb r0, [r1] + ldr r4, _0801D9E0 @ =gUnknown_2023D6A + movs r0, 0x1F + strb r0, [r4] + bl sub_8017544 + ldr r1, _0801D9E4 @ =gUnknown_2023D74 + ldr r0, _0801D9E8 @ =gUnknown_81D938D + str r0, [r1] + mov r1, r8 + ldrb r0, [r1] + ldrb r1, [r4] + bl sub_80C71D0 + b _0801DAFC + .align 2, 0 +_0801D9C8: .4byte gUnknown_2023BCC +_0801D9CC: .4byte gUnknown_2023E8C +_0801D9D0: .4byte gUnknown_8250C04 +_0801D9D4: .4byte gUnknown_2023BDE +_0801D9D8: .4byte gUnknown_2023D4A +_0801D9DC: .4byte gUnknown_2023ECC +_0801D9E0: .4byte gUnknown_2023D6A +_0801D9E4: .4byte gUnknown_2023D74 +_0801D9E8: .4byte gUnknown_81D938D +_0801D9EC: + lsls r0, r2, 4 + add r0, r9 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0801D9FA + b _0801DAF4 +_0801D9FA: + ldr r1, _0801DA90 @ =gUnknown_8250C04 + ldr r2, _0801DA94 @ =gUnknown_2023D4A + ldrh r3, [r2] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x2 + ands r0, r1 + adds r4, r2, 0 + cmp r0, 0 + beq _0801DAF4 + cmp r3, 0xAE + bne _0801DA38 + ldr r2, _0801DA98 @ =gUnknown_2023BE4 + ldr r0, _0801DA9C @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x7 + beq _0801DA38 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x7 + bne _0801DAF4 +_0801DA38: + ldrh r0, [r4] + bl sub_802A1C0 + lsls r0, 24 + cmp r0, 0 + beq _0801DA5E + ldr r1, _0801DA98 @ =gUnknown_2023BE4 + ldr r0, _0801DA9C @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + beq _0801DAF4 +_0801DA5E: + ldr r0, _0801DA9C @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80172E8 + ldr r2, _0801DAA0 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801DAA4 @ =gUnknown_2023DA0 + ldr r3, _0801DAA8 @ =gUnknown_2023D6C + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801DAAC @ =gUnknown_2023DA8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldr r1, _0801DAB0 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x6] + b _0801DAF4 + .align 2, 0 +_0801DA90: .4byte gUnknown_8250C04 +_0801DA94: .4byte gUnknown_2023D4A +_0801DA98: .4byte gUnknown_2023BE4 +_0801DA9C: .4byte gUnknown_2023D6B +_0801DAA0: .4byte gUnknown_2023DCC +_0801DAA4: .4byte gUnknown_2023DA0 +_0801DAA8: .4byte gUnknown_2023D6C +_0801DAAC: .4byte gUnknown_2023DA8 +_0801DAB0: .4byte gUnknown_2023E82 +_0801DAB4: + ldr r0, _0801DAE0 @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r2, _0801DAE4 @ =0x00000121 + adds r1, r3, 0 + bl sub_8016EC8 + ldrb r1, [r4] + lsls r1, 4 + adds r1, r6 + ldrb r2, [r1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0801DAE8 @ =gUnknown_2023FC4 + ldrb r0, [r4] + strb r0, [r1, 0x17] + bl sub_8017544 + ldr r1, _0801DAEC @ =gUnknown_2023D74 + ldr r0, _0801DAF0 @ =gUnknown_81D8FC2 + b _0801DAFA + .align 2, 0 +_0801DAE0: .4byte gUnknown_2023D6B +_0801DAE4: .4byte 0x00000121 +_0801DAE8: .4byte gUnknown_2023FC4 +_0801DAEC: .4byte gUnknown_2023D74 +_0801DAF0: .4byte gUnknown_81D8FC2 +_0801DAF4: + ldr r1, _0801DB0C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 +_0801DAFA: + str r0, [r1] +_0801DAFC: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801DB0C: .4byte gUnknown_2023D74 + thumb_func_end sub_801D760 + + thumb_func_start sub_801DB10 +sub_801DB10: @ 801DB10 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r1, _0801DB5C @ =gUnknown_2023D74 + ldr r5, [r1] + adds r4, r5, r0 + ldr r0, _0801DB60 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801DB70 + ldr r1, _0801DB64 @ =gUnknown_2023DA0 + ldr r3, _0801DB68 @ =gUnknown_2023D6C + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801DB6C @ =gUnknown_2023DA8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldrb r4, [r5, 0x1] + ldrb r0, [r5, 0x2] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r5, 0x3] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r5, 0x4] + lsls r0, 24 + orrs r4, r0 + b _0801DB8A + .align 2, 0 +_0801DB5C: .4byte gUnknown_2023D74 +_0801DB60: .4byte gUnknown_2023DCC +_0801DB64: .4byte gUnknown_2023DA0 +_0801DB68: .4byte gUnknown_2023D6C +_0801DB6C: .4byte gUnknown_2023DA8 +_0801DB70: + bl sub_802A3F8 + ldr r0, _0801DB98 @ =gUnknown_2023D6C + ldrb r1, [r0] + str r6, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0801DB8E +_0801DB8A: + ldr r0, _0801DB9C @ =gUnknown_2023D74 + str r4, [r0] +_0801DB8E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801DB98: .4byte gUnknown_2023D6C +_0801DB9C: .4byte gUnknown_2023D74 + thumb_func_end sub_801DB10 + + thumb_func_start sub_801DBA0 +sub_801DBA0: @ 801DBA0 + push {lr} + ldr r1, _0801DBE8 @ =gUnknown_2023E8C + ldr r0, _0801DBEC @ =gUnknown_2023D6C + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0801DC00 + ldr r2, _0801DBF0 @ =gUnknown_8250C04 + ldr r0, _0801DBF4 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801DC00 + ldr r2, _0801DBF8 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x5 + movs r1, 0 + bl sub_801DB10 + ldr r1, _0801DBFC @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x6] + b _0801DC08 + .align 2, 0 +_0801DBE8: .4byte gUnknown_2023E8C +_0801DBEC: .4byte gUnknown_2023D6C +_0801DBF0: .4byte gUnknown_8250C04 +_0801DBF4: .4byte gUnknown_2023D4A +_0801DBF8: .4byte gUnknown_2023DCC +_0801DBFC: .4byte gUnknown_2023E82 +_0801DC00: + ldr r1, _0801DC0C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0801DC08: + pop {r0} + bx r0 + .align 2, 0 +_0801DC0C: .4byte gUnknown_2023D74 + thumb_func_end sub_801DBA0 + + thumb_func_start sub_801DC10 +sub_801DC10: @ 801DC10 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r4, 0 + ldr r1, _0801DC64 @ =gUnknown_2023E8C + ldr r0, _0801DC68 @ =gUnknown_2023D6C + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0801DC5C + ldr r2, _0801DC6C @ =gUnknown_8250C04 + ldr r0, _0801DC70 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801DC5C + ldr r2, _0801DC74 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x7 + adds r1, r3, 0 + bl sub_801DB10 + ldr r1, _0801DC78 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x6] + movs r4, 0x1 +_0801DC5C: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801DC64: .4byte gUnknown_2023E8C +_0801DC68: .4byte gUnknown_2023D6C +_0801DC6C: .4byte gUnknown_8250C04 +_0801DC70: .4byte gUnknown_2023D4A +_0801DC74: .4byte gUnknown_2023DCC +_0801DC78: .4byte gUnknown_2023E82 + thumb_func_end sub_801DC10 + + thumb_func_start sub_801DC7C +sub_801DC7C: @ 801DC7C + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r2, _0801DCDC @ =gUnknown_2023DFC + ldr r3, _0801DCE0 @ =gUnknown_2023D6C + ldrb r4, [r3] + lsls r0, r4, 2 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x18 + ands r1, r0 + adds r6, r2, 0 + cmp r1, 0 + beq _0801DCAE + ldr r1, _0801DCE4 @ =gUnknown_2023E0C + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldr r1, _0801DCE8 @ =gUnknown_2023D6B + ldrb r0, [r0, 0x15] + ldrb r1, [r1] + cmp r0, r1 + beq _0801DD98 +_0801DCAE: + ldr r0, _0801DCEC @ =gUnknown_2023DD0 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 9 + ands r1, r2 + adds r2, r0, 0 + cmp r1, 0 + bne _0801DCF4 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801DCF4 +_0801DCCE: + ldr r0, _0801DCF0 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _0801DD98 + .align 2, 0 +_0801DCDC: .4byte gUnknown_2023DFC +_0801DCE0: .4byte gUnknown_2023D6C +_0801DCE4: .4byte gUnknown_2023E0C +_0801DCE8: .4byte gUnknown_2023D6B +_0801DCEC: .4byte gUnknown_2023DD0 +_0801DCF0: .4byte gUnknown_2023DCC +_0801DCF4: + ldr r0, [r2] + ldr r1, _0801DDA4 @ =0xfffeffff + ands r0, r1 + str r0, [r2] + movs r1, 0x80 + lsls r1, 10 + ands r0, r1 + cmp r0, 0 + bne _0801DD16 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0801DCCE +_0801DD16: + ldr r0, [r2] + ldr r1, _0801DDA8 @ =0xfffdffff + ands r0, r1 + str r0, [r2] + movs r1, 0x80 + lsls r1, 11 + ands r0, r1 + cmp r0, 0 + bne _0801DD36 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + bne _0801DCCE +_0801DD36: + ldr r0, [r2] + ldr r1, _0801DDAC @ =0xfffbffff + ands r0, r1 + str r0, [r2] + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r5, 1 + cmp r0, 0 + bne _0801DD86 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0801DD86 + ldr r0, _0801DDB0 @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0801DD86 + ldr r0, _0801DDB4 @ =gUnknown_8250C04 + adds r1, r4, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x98 + beq _0801DD98 +_0801DD86: + ldr r1, _0801DDB4 @ =gUnknown_8250C04 + adds r0, r4, r5 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x11 + beq _0801DD98 + cmp r0, 0x4E + bne _0801DDB8 +_0801DD98: + movs r0, 0x7 + adds r1, r5, 0 + bl sub_801DB10 + movs r0, 0x1 + b _0801DDBA + .align 2, 0 +_0801DDA4: .4byte 0xfffeffff +_0801DDA8: .4byte 0xfffdffff +_0801DDAC: .4byte 0xfffbffff +_0801DDB0: .4byte gUnknown_2023F1C +_0801DDB4: .4byte gUnknown_8250C04 +_0801DDB8: + movs r0, 0 +_0801DDBA: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_801DC7C + + thumb_func_start sub_801DDC4 +sub_801DDC4: @ 801DDC4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _0801DE60 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r6, [r0, 0x5] + ldrb r0, [r0, 0x6] + lsls r0, 8 + orrs r6, r0 + ldr r0, _0801DE64 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801DE48 + movs r0, 0x1 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _0801DE12 + ldr r0, _0801DE68 @ =gUnknown_8250C04 + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801DE12 + ldr r0, _0801DE6C @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0801DE56 +_0801DE12: + ldr r0, _0801DE64 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801DE48 + movs r0, 0x2 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _0801DE48 + ldr r0, _0801DE68 @ =gUnknown_8250C04 + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0801DE48 + ldr r0, _0801DE6C @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0801DE56 +_0801DE48: + ldr r0, _0801DE64 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + beq _0801DE70 +_0801DE56: + movs r0, 0x7 + adds r1, r6, 0 + bl sub_801DB10 + b _0801E1C2 + .align 2, 0 +_0801DE60: .4byte gUnknown_2023D74 +_0801DE64: .4byte gUnknown_2022B4C +_0801DE68: .4byte gUnknown_8250C04 +_0801DE6C: .4byte gUnknown_2023D6B +_0801DE70: + adds r0, r6, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0801DF0C + ldr r2, _0801DED4 @ =gUnknown_2023DFC + ldr r3, _0801DED8 @ =gUnknown_2023D6C + ldrb r4, [r3] + lsls r0, r4, 2 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x18 + ands r1, r0 + cmp r1, 0 + beq _0801DEA8 + ldr r0, _0801DEDC @ =0x0000ffff + cmp r6, r0 + bne _0801DEA8 + ldr r1, _0801DEE0 @ =gUnknown_2023E0C + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldr r1, _0801DEE4 @ =gUnknown_2023D6B + ldrb r0, [r0, 0x15] + ldrb r1, [r1] + cmp r0, r1 + beq _0801DEFE +_0801DEA8: + ldrb r0, [r3] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldr r1, _0801DEE8 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _0801DEF0 + ldr r3, _0801DEEC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0801E1C2 + .align 2, 0 +_0801DED4: .4byte gUnknown_2023DFC +_0801DED8: .4byte gUnknown_2023D6C +_0801DEDC: .4byte 0x0000ffff +_0801DEE0: .4byte gUnknown_2023E0C +_0801DEE4: .4byte gUnknown_2023D6B +_0801DEE8: .4byte 0x000400c0 +_0801DEEC: .4byte gUnknown_2023D74 +_0801DEF0: + movs r0, 0 + bl sub_801DC10 + lsls r0, 24 + cmp r0, 0 + beq _0801DEFE + b _0801E1C2 +_0801DEFE: + ldr r1, _0801DF08 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x7 + str r0, [r1] + b _0801E1C2 + .align 2, 0 +_0801DF08: .4byte gUnknown_2023D74 +_0801DF0C: + cmp r6, 0 + bne _0801DF14 + ldr r0, _0801DF2C @ =gUnknown_2023D4A + ldrh r6, [r0] +_0801DF14: + ldr r0, _0801DF30 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _0801DF34 + movs r1, 0x3F + mov r10, r1 + mov r2, r10 + ands r2, r0 + mov r10, r2 + b _0801DF42 + .align 2, 0 +_0801DF2C: .4byte gUnknown_2023D4A +_0801DF30: .4byte gUnknown_2023FE8 +_0801DF34: + ldr r1, _0801DF88 @ =gUnknown_8250C04 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x2] + mov r10, r0 +_0801DF42: + adds r0, r6, 0 + bl sub_801DC10 + lsls r0, 24 + cmp r0, 0 + beq _0801DF50 + b _0801E1C2 +_0801DF50: + adds r0, r6, 0 + bl sub_801DC7C + lsls r0, 24 + cmp r0, 0 + beq _0801DF5E + b _0801E1C2 +_0801DF5E: + ldr r3, _0801DF8C @ =gUnknown_2023BE4 + ldr r0, _0801DF90 @ =gUnknown_2023D6C + ldrb r0, [r0] + movs r2, 0x58 + adds r4, r0, 0 + muls r4, r2 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r4, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801DF98 + ldr r0, _0801DF94 @ =gUnknown_2023D6B + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + ldrb r5, [r0, 0x1E] + b _0801DFAE + .align 2, 0 +_0801DF88: .4byte gUnknown_8250C04 +_0801DF8C: .4byte gUnknown_2023BE4 +_0801DF90: .4byte gUnknown_2023D6C +_0801DF94: .4byte gUnknown_2023D6B +_0801DF98: + ldr r0, _0801E0FC @ =gUnknown_2023D6B + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + ldrb r0, [r0, 0x1E] + adds r0, 0x6 + adds r1, r4, r3 + ldrb r1, [r1, 0x1F] + subs r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 +_0801DFAE: + lsls r0, r5, 24 + cmp r0, 0 + bge _0801DFB6 + movs r5, 0 +_0801DFB6: + lsls r0, r5, 24 + asrs r0, 24 + cmp r0, 0xC + ble _0801DFC0 + movs r5, 0xC +_0801DFC0: + ldr r1, _0801E100 @ =gUnknown_8250C04 + lsls r4, r6, 1 + adds r0, r4, r6 + lsls r0, 2 + adds r7, r0, r1 + ldrb r3, [r7, 0x3] + mov r8, r3 + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp, 0x4] + cmp r0, 0 + bne _0801E012 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0801E012 + ldr r0, _0801E104 @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0801E012 + ldrb r0, [r7] + cmp r0, 0x98 + bne _0801E012 + movs r0, 0x32 + mov r8, r0 +_0801E012: + ldr r1, _0801E108 @ =gUnknown_82504FC + lsls r0, r5, 24 + asrs r0, 22 + adds r0, r1 + ldrb r1, [r0] + mov r4, r8 + muls r4, r1 + ldrb r1, [r0, 0x1] + adds r0, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r7, _0801E10C @ =gUnknown_2023BE4 + ldr r0, _0801E0FC @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r5, 0x58 + muls r0, r5 + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0xE + bne _0801E050 + lsls r0, r4, 6 + adds r0, r4 + lsls r0, 1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801E050: + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0801E0A8 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0801E0A8 + ldr r0, _0801E110 @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r5 + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x8 + bne _0801E0A8 + ldr r0, _0801E104 @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _0801E0A8 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801E0A8: + ldr r2, _0801E10C @ =gUnknown_2023BE4 + ldr r0, _0801E0FC @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + mov r9, r2 + cmp r0, 0x37 + bne _0801E0D4 + mov r1, r10 + cmp r1, 0x8 + bhi _0801E0D4 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801E0D4: + ldr r2, _0801E110 @ =gUnknown_2023D6C + mov r8, r2 + ldrb r2, [r2] + movs r7, 0x58 + adds r0, r2, 0 + muls r0, r7 + mov r3, r9 + adds r1, r0, r3 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0801E118 + ldr r1, _0801E114 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x7] + ldrb r2, [r0, 0x1A] + b _0801E134 + .align 2, 0 +_0801E0FC: .4byte gUnknown_2023D6B +_0801E100: .4byte gUnknown_8250C04 +_0801E104: .4byte gUnknown_2023F1C +_0801E108: .4byte gUnknown_82504FC +_0801E10C: .4byte gUnknown_2023BE4 +_0801E110: .4byte gUnknown_2023D6C +_0801E114: .4byte gUnknown_2023F54 +_0801E118: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r5, r0, 24 + mov r1, r8 + ldrb r0, [r1] + muls r0, r7 + add r0, r9 + ldrh r0, [r0, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r2, r0, 24 +_0801E134: + ldr r0, _0801E198 @ =gUnknown_2023D6F + ldr r1, _0801E19C @ =gUnknown_2023D6C + ldrb r1, [r1] + strb r1, [r0] + cmp r5, 0x16 + bne _0801E150 + movs r0, 0x64 + subs r0, r2 + muls r0, r4 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801E150: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x1 + cmp r0, r4 + ble _0801E1BA + ldr r2, _0801E1A0 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0801E1A4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0801E1B0 + ldr r1, _0801E1A8 @ =gUnknown_8250C04 + ldr r2, [sp, 0x4] + adds r0, r2, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x6] + cmp r0, 0x8 + beq _0801E192 + cmp r0, 0x20 + bne _0801E1B0 +_0801E192: + ldr r1, _0801E1AC @ =gUnknown_2023E82 + movs r0, 0x2 + b _0801E1B4 + .align 2, 0 +_0801E198: .4byte gUnknown_2023D6F +_0801E19C: .4byte gUnknown_2023D6C +_0801E1A0: .4byte gUnknown_2023DCC +_0801E1A4: .4byte gUnknown_2022B4C +_0801E1A8: .4byte gUnknown_8250C04 +_0801E1AC: .4byte gUnknown_2023E82 +_0801E1B0: + ldr r1, _0801E1D4 @ =gUnknown_2023E82 + movs r0, 0 +_0801E1B4: + strb r0, [r1, 0x6] + bl sub_801EAB8 +_0801E1BA: + movs r0, 0x7 + adds r1, r6, 0 + bl sub_801DB10 +_0801E1C2: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801E1D4: .4byte gUnknown_2023E82 + thumb_func_end sub_801DDC4 + + thumb_func_start sub_801E1D8 +sub_801E1D8: @ 801E1D8 + push {r4,r5,lr} + ldr r0, _0801E218 @ =gUnknown_2023BC8 + ldr r5, [r0] + cmp r5, 0 + bne _0801E210 + ldr r4, _0801E21C @ =gUnknown_2023DD0 + ldr r0, [r4] + movs r1, 0xC0 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + bne _0801E204 + ldr r0, _0801E220 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x4 + bl sub_80173AC + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 3 + orrs r0, r1 + str r0, [r4] +_0801E204: + ldr r0, _0801E224 @ =gUnknown_2023D74 + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + ldr r0, _0801E228 @ =gUnknown_2023E82 + strb r5, [r0, 0x7] +_0801E210: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801E218: .4byte gUnknown_2023BC8 +_0801E21C: .4byte gUnknown_2023DD0 +_0801E220: .4byte gUnknown_2023D6B +_0801E224: .4byte gUnknown_2023D74 +_0801E228: .4byte gUnknown_2023E82 + thumb_func_end sub_801E1D8 + + thumb_func_start sub_801E22C +sub_801E22C: @ 801E22C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r6, 0x1 + ldr r0, _0801E27C @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0801E244 + b _0801E3DE +_0801E244: + ldr r1, _0801E280 @ =gUnknown_2023ECC + ldr r2, _0801E284 @ =gUnknown_2023D6B + ldrb r3, [r2] + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 26 + lsrs r4, r0, 31 + mov r9, r2 + cmp r4, 0 + bne _0801E2E6 + ldr r2, _0801E288 @ =gUnknown_8250C04 + ldr r0, _0801E28C @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + cmp r0, 0x20 + beq _0801E296 + cmp r0, 0x20 + bgt _0801E290 + cmp r0, 0x8 + beq _0801E2AC + b _0801E2C6 + .align 2, 0 +_0801E27C: .4byte gUnknown_2023BC8 +_0801E280: .4byte gUnknown_2023ECC +_0801E284: .4byte gUnknown_2023D6B +_0801E288: .4byte gUnknown_8250C04 +_0801E28C: .4byte gUnknown_2023D4A +_0801E290: + cmp r0, 0x40 + beq _0801E2AC + b _0801E2C6 +_0801E296: + str r4, [sp] + movs r0, 0x12 + adds r1, r3, 0 + movs r2, 0x2E + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0x1 + b _0801E2E6 +_0801E2AC: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x10 + movs r2, 0x2E + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0 + b _0801E2E6 +_0801E2C6: + ldr r1, _0801E348 @ =gUnknown_2023D6C + mov r2, r9 + ldrb r0, [r2] + ldrb r7, [r1] + cmp r0, r7 + beq _0801E2E6 + ldr r2, _0801E34C @ =gUnknown_2023BE4 + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2E + bne _0801E2E6 + adds r6, 0x1 +_0801E2E6: + ldr r0, _0801E350 @ =gUnknown_2023DD0 + ldr r4, [r0] + movs r0, 0xA0 + lsls r0, 4 + ands r4, r0 + cmp r4, 0 + bne _0801E3CC + ldr r2, _0801E34C @ =gUnknown_2023BE4 + ldr r3, _0801E354 @ =gUnknown_2023D48 + ldr r1, _0801E358 @ =gUnknown_2023D6B + ldrb r5, [r1] + movs r0, 0x58 + mov r8, r0 + mov r0, r8 + muls r0, r5 + ldrb r7, [r3] + adds r0, r7 + movs r7, 0x24 + adds r7, r2 + mov r12, r7 + add r0, r12 + ldrb r0, [r0] + mov r9, r1 + mov r10, r2 + adds r7, r3, 0 + cmp r0, 0 + beq _0801E3CC + ldr r0, _0801E35C @ =gUnknown_2023E8C + lsls r1, r5, 4 + adds r1, r0 + ldrb r0, [r1, 0x2] + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1, 0x2] + mov r1, r9 + ldrb r0, [r1] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + ldrb r1, [r7] + adds r0, r1 + mov r1, r12 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, r6 + ble _0801E360 + subs r0, r6 + strb r0, [r2] + b _0801E362 + .align 2, 0 +_0801E348: .4byte gUnknown_2023D6C +_0801E34C: .4byte gUnknown_2023BE4 +_0801E350: .4byte gUnknown_2023DD0 +_0801E354: .4byte gUnknown_2023D48 +_0801E358: .4byte gUnknown_2023D6B +_0801E35C: .4byte gUnknown_2023E8C +_0801E360: + strb r4, [r2] +_0801E362: + mov r2, r9 + ldrb r3, [r2] + movs r4, 0x58 + adds r0, r3, 0 + muls r0, r4 + mov r1, r10 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0801E3CC + ldr r1, _0801E3F0 @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _0801E3F4 @ =gUnknown_825E45C + ldrb r0, [r7] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0801E3CC + ldr r0, _0801E3F8 @ =gUnknown_2023BC4 + strb r3, [r0] + ldrb r1, [r7] + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + mov r2, r9 + ldrb r0, [r2] + muls r0, r4 + mov r2, r10 + adds r2, 0x24 + adds r0, r2 + ldrb r7, [r7] + adds r0, r7 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + mov r7, r9 + ldrb r0, [r7] + bl sub_8017248 +_0801E3CC: + ldr r2, _0801E3FC @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _0801E400 @ =0xfffff7ff + ands r0, r1 + str r0, [r2] + ldr r1, _0801E404 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801E3DE: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801E3F0: .4byte gUnknown_2023E0C +_0801E3F4: .4byte gUnknown_825E45C +_0801E3F8: .4byte gUnknown_2023BC4 +_0801E3FC: .4byte gUnknown_2023DD0 +_0801E400: .4byte 0xfffff7ff +_0801E404: .4byte gUnknown_2023D74 + thumb_func_end sub_801E22C + + thumb_func_start sub_801E408 +sub_801E408: @ 801E408 + push {r4-r7,lr} + ldr r1, _0801E42C @ =gUnknown_2023BE4 + ldr r0, _0801E430 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x2E] + cmp r0, 0xAF + bne _0801E438 + ldr r1, _0801E434 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x7] + b _0801E440 + .align 2, 0 +_0801E42C: .4byte gUnknown_2023BE4 +_0801E430: .4byte gUnknown_2023D6B +_0801E434: .4byte gUnknown_2023F54 +_0801E438: + bl sub_809A924 + lsls r0, 24 + lsrs r6, r0, 24 +_0801E440: + ldr r1, _0801E4CC @ =gUnknown_2023D6F + ldr r3, _0801E4D0 @ =gUnknown_2023D6B + ldrb r0, [r3] + strb r0, [r1] + ldr r4, _0801E4D4 @ =gUnknown_2023BE4 + ldrb r1, [r3] + movs r0, 0x58 + adds r7, r1, 0 + muls r7, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r7, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + negs r0, r0 + asrs r5, r0, 31 + movs r0, 0x2 + ands r5, r0 + ldr r2, _0801E4D8 @ =gUnknown_8250C04 + ldr r0, _0801E4DC @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + mov r12, r3 + cmp r1, 0x2B + bne _0801E480 + adds r5, 0x1 +_0801E480: + adds r0, r5, 0 + cmp r1, 0x4B + bne _0801E488 + adds r0, 0x1 +_0801E488: + cmp r1, 0xC8 + bne _0801E48E + adds r0, 0x1 +_0801E48E: + adds r2, r0, 0 + cmp r1, 0xD1 + bne _0801E496 + adds r2, 0x1 +_0801E496: + movs r1, 0 + cmp r6, 0x3F + bne _0801E4A6 + adds r0, r7, r4 + ldrh r0, [r0] + cmp r0, 0x71 + bne _0801E4A6 + movs r1, 0x1 +_0801E4A6: + lsls r5, r1, 1 + movs r3, 0 + cmp r6, 0x42 + bne _0801E4C0 + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0x53 + bne _0801E4C0 + movs r3, 0x1 +_0801E4C0: + lsls r1, r3, 1 + cmp r6, 0x29 + bne _0801E4E0 + adds r0, r5, 0x1 + adds r0, r2, r0 + b _0801E4E2 + .align 2, 0 +_0801E4CC: .4byte gUnknown_2023D6F +_0801E4D0: .4byte gUnknown_2023D6B +_0801E4D4: .4byte gUnknown_2023BE4 +_0801E4D8: .4byte gUnknown_8250C04 +_0801E4DC: .4byte gUnknown_2023D4A +_0801E4E0: + adds r0, r2, r5 +_0801E4E2: + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + adds r5, r0, 0 + cmp r5, 0x4 + bls _0801E4F0 + movs r5, 0x4 +_0801E4F0: + ldr r0, _0801E56C @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r4 + adds r0, 0x20 + ldrb r4, [r0] + cmp r4, 0x4 + beq _0801E580 + cmp r4, 0x4B + beq _0801E580 + ldr r1, _0801E570 @ =gUnknown_2023DFC + mov r2, r12 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _0801E580 + ldr r4, _0801E574 @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + bne _0801E580 + bl sub_8044EC8 + ldr r2, _0801E578 @ =gUnknown_8250530 + lsls r1, r5, 1 + adds r1, r2 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1] + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _0801E580 + ldr r0, [r4] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801E55A + movs r0, 0x1 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + beq _0801E580 +_0801E55A: + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + bne _0801E580 + ldr r1, _0801E57C @ =gUnknown_2023D71 + movs r0, 0x2 + b _0801E584 + .align 2, 0 +_0801E56C: .4byte gUnknown_2023D6C +_0801E570: .4byte gUnknown_2023DFC +_0801E574: .4byte gUnknown_2022B4C +_0801E578: .4byte gUnknown_8250530 +_0801E57C: .4byte gUnknown_2023D71 +_0801E580: + ldr r1, _0801E594 @ =gUnknown_2023D71 + movs r0, 0x1 +_0801E584: + strb r0, [r1] + ldr r1, _0801E598 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801E594: .4byte gUnknown_2023D71 +_0801E598: .4byte gUnknown_2023D74 + thumb_func_end sub_801E408 + + thumb_func_start sub_801E59C +sub_801E59C: @ 801E59C + push {r4-r7,lr} + sub sp, 0x10 + ldr r4, _0801E654 @ =gUnknown_2023DDE + ldr r5, _0801E658 @ =gUnknown_2023D6C + ldrb r0, [r5] + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + ldr r6, _0801E65C @ =gUnknown_2023D6B + ldrb r0, [r6] + movs r4, 0x58 + muls r0, r4 + ldr r2, _0801E660 @ =gUnknown_2023BE4 + adds r0, r2 + ldrb r1, [r5] + muls r1, r4 + adds r1, r2 + ldr r7, _0801E664 @ =gUnknown_2023D4A + ldrh r2, [r7] + ldr r4, _0801E668 @ =gUnknown_2023F50 + ldrh r4, [r4] + str r4, [sp] + ldr r4, _0801E66C @ =gUnknown_2023FE8 + ldr r4, [r4] + ldrb r4, [r4, 0x13] + str r4, [sp, 0x4] + ldrb r4, [r6] + str r4, [sp, 0x8] + ldrb r4, [r5] + str r4, [sp, 0xC] + bl sub_803ECEC + ldr r4, _0801E670 @ =gUnknown_2023D50 + ldr r1, _0801E674 @ =gUnknown_2023D71 + ldrb r1, [r1] + muls r1, r0 + ldr r0, _0801E678 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0xE] + adds r3, r1, 0 + muls r3, r0 + str r3, [r4] + ldr r1, _0801E67C @ =gUnknown_2023DFC + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _0801E620 + ldr r2, _0801E680 @ =gUnknown_8250C04 + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + cmp r0, 0xD + bne _0801E620 + lsls r0, r3, 1 + str r0, [r4] +_0801E620: + ldr r1, _0801E684 @ =gUnknown_2023E8C + ldr r0, _0801E65C @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _0801E642 + ldr r4, _0801E670 @ =gUnknown_2023D50 + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0801E642: + ldr r1, _0801E688 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801E654: .4byte gUnknown_2023DDE +_0801E658: .4byte gUnknown_2023D6C +_0801E65C: .4byte gUnknown_2023D6B +_0801E660: .4byte gUnknown_2023BE4 +_0801E664: .4byte gUnknown_2023D4A +_0801E668: .4byte gUnknown_2023F50 +_0801E66C: .4byte gUnknown_2023FE8 +_0801E670: .4byte gUnknown_2023D50 +_0801E674: .4byte gUnknown_2023D71 +_0801E678: .4byte gUnknown_2023FC4 +_0801E67C: .4byte gUnknown_2023DFC +_0801E680: .4byte gUnknown_8250C04 +_0801E684: .4byte gUnknown_2023E8C +_0801E688: .4byte gUnknown_2023D74 + thumb_func_end sub_801E59C + + thumb_func_start sub_801E68C +sub_801E68C: @ 801E68C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r5, r1, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _0801E744 @ =gUnknown_2023DDE + adds r0, r5, 0 + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x58 + adds r0, r7, 0 + muls r0, r1 + ldr r2, _0801E748 @ =gUnknown_2023BE4 + adds r0, r2 + muls r1, r5 + adds r1, r2 + ldr r2, _0801E74C @ =gUnknown_2023D4A + mov r8, r2 + ldrh r2, [r2] + ldr r6, _0801E750 @ =gUnknown_2023F50 + ldrh r4, [r6] + str r4, [sp] + ldr r4, _0801E754 @ =gUnknown_2023FE8 + ldr r4, [r4] + ldrb r4, [r4, 0x13] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + str r5, [sp, 0xC] + bl sub_803ECEC + ldr r4, _0801E758 @ =gUnknown_2023D50 + movs r1, 0 + strh r1, [r6] + ldr r1, _0801E75C @ =gUnknown_2023D71 + ldrb r1, [r1] + muls r1, r0 + ldr r0, _0801E760 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0xE] + adds r3, r1, 0 + muls r3, r0 + str r3, [r4] + ldr r1, _0801E764 @ =gUnknown_2023DFC + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _0801E71A + ldr r2, _0801E768 @ =gUnknown_8250C04 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + cmp r0, 0xD + bne _0801E71A + lsls r0, r3, 1 + str r0, [r4] +_0801E71A: + ldr r0, _0801E76C @ =gUnknown_2023E8C + lsls r1, r7, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 28 + cmp r0, 0 + bge _0801E738 + ldr r4, _0801E758 @ =gUnknown_2023D50 + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0801E738: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801E744: .4byte gUnknown_2023DDE +_0801E748: .4byte gUnknown_2023BE4 +_0801E74C: .4byte gUnknown_2023D4A +_0801E750: .4byte gUnknown_2023F50 +_0801E754: .4byte gUnknown_2023FE8 +_0801E758: .4byte gUnknown_2023D50 +_0801E75C: .4byte gUnknown_2023D71 +_0801E760: .4byte gUnknown_2023FC4 +_0801E764: .4byte gUnknown_2023DFC +_0801E768: .4byte gUnknown_8250C04 +_0801E76C: .4byte gUnknown_2023E8C + thumb_func_end sub_801E68C + + thumb_func_start sub_801E770 +sub_801E770: @ 801E770 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _0801E7A0 @ =gUnknown_2023D50 + ldr r0, [r5] + muls r0, r4 + movs r1, 0xA + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _0801E790 + cmp r4, 0 + beq _0801E790 + movs r0, 0x1 + str r0, [r5] +_0801E790: + cmp r4, 0x5 + beq _0801E7C0 + cmp r4, 0x5 + bgt _0801E7A4 + cmp r4, 0 + beq _0801E7AA + b _0801E842 + .align 2, 0 +_0801E7A0: .4byte gUnknown_2023D50 +_0801E7A4: + cmp r4, 0x14 + beq _0801E800 + b _0801E842 +_0801E7AA: + ldr r2, _0801E7BC @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0xFB + ands r0, r1 + movs r1, 0xFD + ands r0, r1 + b _0801E840 + .align 2, 0 +_0801E7BC: .4byte gUnknown_2023DCC +_0801E7C0: + ldr r2, _0801E7F0 @ =gUnknown_8250C04 + ldr r0, _0801E7F4 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801E842 + ldr r2, _0801E7F8 @ =gUnknown_2023DCC + ldrb r1, [r2] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801E842 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801E7FC + movs r0, 0xFD + ands r0, r1 + b _0801E840 + .align 2, 0 +_0801E7F0: .4byte gUnknown_8250C04 +_0801E7F4: .4byte gUnknown_2023D4A +_0801E7F8: .4byte gUnknown_2023DCC +_0801E7FC: + movs r0, 0x4 + b _0801E83E +_0801E800: + ldr r2, _0801E830 @ =gUnknown_8250C04 + ldr r0, _0801E834 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801E842 + ldr r2, _0801E838 @ =gUnknown_2023DCC + ldrb r1, [r2] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801E842 + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801E83C + movs r0, 0xFB + ands r0, r1 + b _0801E840 + .align 2, 0 +_0801E830: .4byte gUnknown_8250C04 +_0801E834: .4byte gUnknown_2023D4A +_0801E838: .4byte gUnknown_2023DCC +_0801E83C: + movs r0, 0x2 +_0801E83E: + orrs r0, r1 +_0801E840: + strb r0, [r2] +_0801E842: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_801E770 + + thumb_func_start sub_801E848 +sub_801E848: @ 801E848 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0 + ldr r1, _0801E870 @ =gUnknown_2023D4A + ldrh r0, [r1] + cmp r0, 0xA5 + bne _0801E85C + b _0801EA70 +_0801E85C: + ldr r0, _0801E874 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _0801E878 + movs r1, 0x3F + mov r8, r1 + ands r1, r0 + mov r8, r1 + b _0801E888 + .align 2, 0 +_0801E870: .4byte gUnknown_2023D4A +_0801E874: .4byte gUnknown_2023FE8 +_0801E878: + ldr r2, _0801E910 @ =gUnknown_8250C04 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r8, r0 +_0801E888: + ldr r2, _0801E914 @ =gUnknown_2023BE4 + ldr r0, _0801E918 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + adds r5, r2, 0 + cmp r0, r8 + beq _0801E8AA + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r8 + bne _0801E8C0 +_0801E8AA: + ldr r4, _0801E91C @ =gUnknown_2023D50 + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + str r0, [r4] + movs r1, 0xA + str r3, [sp, 0x4] + bl __divsi3 + str r0, [r4] + ldr r3, [sp, 0x4] +_0801E8C0: + ldr r2, _0801E920 @ =gUnknown_2023D6C + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r2, 0 + cmp r0, 0x1A + bne _0801E938 + mov r1, r8 + cmp r1, 0x4 + bne _0801E938 + ldr r3, _0801E924 @ =gUnknown_2023D6A + strb r0, [r3] + ldr r2, _0801E928 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x9 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801E92C @ =gUnknown_2023DA0 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801E930 @ =gUnknown_2023DA8 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldr r0, _0801E934 @ =gUnknown_2023E82 + mov r1, r8 + strb r1, [r0, 0x6] + ldrb r0, [r4] + ldrb r1, [r3] + bl sub_80C71D0 + b _0801E9D4 + .align 2, 0 +_0801E910: .4byte gUnknown_8250C04 +_0801E914: .4byte gUnknown_2023BE4 +_0801E918: .4byte gUnknown_2023D6B +_0801E91C: .4byte gUnknown_2023D50 +_0801E920: .4byte gUnknown_2023D6C +_0801E924: .4byte gUnknown_2023D6A +_0801E928: .4byte gUnknown_2023DCC +_0801E92C: .4byte gUnknown_2023DA0 +_0801E930: .4byte gUnknown_2023DA8 +_0801E934: .4byte gUnknown_2023E82 +_0801E938: + ldr r1, _0801E944 @ =gUnknown_824F050 + adds r0, r3, r1 + ldrb r0, [r0] + adds r2, r1, 0 + b _0801E9B4 + .align 2, 0 +_0801E944: .4byte gUnknown_824F050 +_0801E948: + adds r3, 0x3 + b _0801E9B0 +_0801E94C: + ldr r5, _0801EA84 @ =gUnknown_824F050 + adds r0, r3, r5 + ldrb r0, [r0] + cmp r0, r8 + bne _0801E9A8 + adds r1, r3, 0x1 + adds r1, r5 + ldr r2, _0801EA88 @ =gUnknown_2023BE4 + ldr r7, _0801EA8C @ =gUnknown_2023D6C + ldrb r0, [r7] + movs r6, 0x58 + muls r0, r6 + adds r0, r2 + adds r0, 0x21 + ldrb r4, [r1] + ldrb r0, [r0] + cmp r4, r0 + bne _0801E982 + adds r0, r3, 0x2 + adds r0, r5 + ldrb r0, [r0] + str r2, [sp] + str r3, [sp, 0x4] + bl sub_801E770 + ldr r3, [sp, 0x4] + ldr r2, [sp] +_0801E982: + ldrb r0, [r7] + muls r0, r6 + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r1, [r1] + cmp r4, r1 + bne _0801E9A8 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r4 + beq _0801E9A8 + adds r0, r3, 0x2 + adds r0, r5 + ldrb r0, [r0] + str r3, [sp, 0x4] + bl sub_801E770 + ldr r3, [sp, 0x4] +_0801E9A8: + adds r3, 0x3 + ldr r5, _0801EA88 @ =gUnknown_2023BE4 + ldr r4, _0801EA8C @ =gUnknown_2023D6C + ldr r2, _0801EA84 @ =gUnknown_824F050 +_0801E9B0: + adds r0, r3, r2 + ldrb r0, [r0] +_0801E9B4: + cmp r0, 0xFF + beq _0801E9D4 + cmp r0, 0xFE + bne _0801E94C + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r1, r5, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801E948 +_0801E9D4: + ldr r2, _0801EA88 @ =gUnknown_2023BE4 + ldr r5, _0801EA8C @ =gUnknown_2023D6C + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r6, [r0] + cmp r6, 0x19 + bne _0801EA52 + ldr r0, _0801EA90 @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r7, _0801EA94 @ =gUnknown_2023D4A + ldrh r1, [r7] + bl sub_802A224 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0801EA52 + ldr r1, _0801EA98 @ =gUnknown_2023DCC + mov r8, r1 + ldrb r4, [r1] + ands r0, r4 + cmp r0, 0 + beq _0801EA10 + movs r0, 0x6 + ands r0, r4 + cmp r0, 0x6 + bne _0801EA52 +_0801EA10: + ldr r2, _0801EA9C @ =gUnknown_8250C04 + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801EA52 + ldr r3, _0801EAA0 @ =gUnknown_2023D6A + strb r6, [r3] + movs r0, 0x1 + orrs r0, r4 + mov r1, r8 + strb r0, [r1] + ldr r1, _0801EAA4 @ =gUnknown_2023DA0 + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801EAA8 @ =gUnknown_2023DA8 + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldr r1, _0801EAAC @ =gUnknown_2023E82 + movs r0, 0x3 + strb r0, [r1, 0x6] + ldrb r0, [r5] + ldrb r1, [r3] + bl sub_80C71D0 +_0801EA52: + ldr r0, _0801EA98 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801EA70 + ldr r2, _0801EAB0 @ =gUnknown_2023E8C + ldr r0, _0801EA90 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 4 + adds r1, r2 + ldrb r0, [r1, 0x1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1, 0x1] +_0801EA70: + ldr r1, _0801EAB4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801EA84: .4byte gUnknown_824F050 +_0801EA88: .4byte gUnknown_2023BE4 +_0801EA8C: .4byte gUnknown_2023D6C +_0801EA90: .4byte gUnknown_2023D6B +_0801EA94: .4byte gUnknown_2023D4A +_0801EA98: .4byte gUnknown_2023DCC +_0801EA9C: .4byte gUnknown_8250C04 +_0801EAA0: .4byte gUnknown_2023D6A +_0801EAA4: .4byte gUnknown_2023DA0 +_0801EAA8: .4byte gUnknown_2023DA8 +_0801EAAC: .4byte gUnknown_2023E82 +_0801EAB0: .4byte gUnknown_2023E8C +_0801EAB4: .4byte gUnknown_2023D74 + thumb_func_end sub_801E848 + + thumb_func_start sub_801EAB8 +sub_801EAB8: @ 801EAB8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r6, 0 + movs r5, 0 + ldr r0, _0801EAF8 @ =gUnknown_2023D4A + ldrh r1, [r0] + mov r9, r0 + cmp r1, 0xA5 + bne _0801EAD0 + b _0801ED18 +_0801EAD0: + ldr r2, _0801EAFC @ =gUnknown_8250C04 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0801EAE2 + b _0801ED18 +_0801EAE2: + ldr r0, _0801EB00 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _0801EB04 + movs r1, 0x3F + mov r12, r1 + mov r2, r12 + ands r2, r0 + mov r12, r2 + b _0801EB08 + .align 2, 0 +_0801EAF8: .4byte gUnknown_2023D4A +_0801EAFC: .4byte gUnknown_8250C04 +_0801EB00: .4byte gUnknown_2023FE8 +_0801EB04: + ldrb r1, [r1, 0x2] + mov r12, r1 +_0801EB08: + ldr r2, _0801EB3C @ =gUnknown_2023BE4 + ldr r3, _0801EB40 @ =gUnknown_2023D6C + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r1, [r0] + adds r7, r2, 0 + mov r8, r3 + cmp r1, 0x1A + bne _0801EB4C + mov r0, r12 + cmp r0, 0x4 + bne _0801EB4C + ldr r0, _0801EB44 @ =gUnknown_2023D6A + strb r1, [r0] + ldr r0, _0801EB48 @ =gUnknown_2023E82 + mov r1, r12 + strb r1, [r0, 0x6] + ldrb r0, [r3] + movs r1, 0x1A + bl sub_80C71D0 + b _0801ED18 + .align 2, 0 +_0801EB3C: .4byte gUnknown_2023BE4 +_0801EB40: .4byte gUnknown_2023D6C +_0801EB44: .4byte gUnknown_2023D6A +_0801EB48: .4byte gUnknown_2023E82 +_0801EB4C: + ldr r1, _0801EB58 @ =gUnknown_824F050 + adds r0, r5, r1 + ldrb r0, [r0] + adds r4, r1, 0 + b _0801EC9E + .align 2, 0 +_0801EB58: .4byte gUnknown_824F050 +_0801EB5C: + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, r12 + beq _0801EB66 + b _0801EC98 +_0801EB66: + adds r2, r5, 0x1 + adds r3, r2, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x21 + ldrb r1, [r3] + adds r3, r2, 0 + ldrb r0, [r0] + cmp r1, r0 + bne _0801EBA6 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0801EBA6 + ldr r2, _0801ED24 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801ED28 @ =gUnknown_2023E8C + ldr r0, _0801ED2C @ =gUnknown_2023D6B + ldrb r2, [r0] + lsls r2, 4 + adds r2, r1 + ldrb r0, [r2, 0x1] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1] +_0801EBA6: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0801EBEC + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0801EBEC + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0801EBEC + ldr r2, _0801ED24 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801ED28 @ =gUnknown_2023E8C + ldr r0, _0801ED2C @ =gUnknown_2023D6B + ldrb r2, [r0] + lsls r2, 4 + adds r2, r1 + ldrb r0, [r2, 0x1] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1] +_0801EBEC: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x21 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _0801EC10 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x14 + bne _0801EC10 + movs r0, 0x1 + orrs r6, r0 +_0801EC10: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0801EC3E + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0801EC3E + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x14 + bne _0801EC3E + movs r0, 0x1 + orrs r6, r0 +_0801EC3E: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x21 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _0801EC66 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x5 + bne _0801EC66 + movs r0, 0x2 + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_0801EC66: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0801EC98 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0801EC98 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x5 + bne _0801EC98 + movs r0, 0x2 + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_0801EC98: + adds r5, 0x3 + adds r0, r5, r4 + ldrb r0, [r0] +_0801EC9E: + cmp r0, 0xFF + beq _0801ECC2 + cmp r0, 0xFE + beq _0801ECA8 + b _0801EB5C +_0801ECA8: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r1, r7, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801EC98 +_0801ECC2: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x20 + ldrb r4, [r0] + cmp r4, 0x19 + bne _0801ED18 + ldr r0, _0801ED2C @ =gUnknown_2023D6B + ldrb r0, [r0] + mov r2, r9 + ldrh r1, [r2] + bl sub_802A224 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0801ED18 + movs r0, 0x3 + ands r6, r0 + cmp r6, 0x1 + beq _0801ED18 + ldr r2, _0801ED30 @ =gUnknown_8250C04 + mov r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801ED18 + ldr r0, _0801ED34 @ =gUnknown_2023D6A + strb r4, [r0] + ldr r1, _0801ED38 @ =gUnknown_2023E82 + movs r0, 0x3 + strb r0, [r1, 0x6] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x19 + bl sub_80C71D0 +_0801ED18: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801ED24: .4byte gUnknown_2023DCC +_0801ED28: .4byte gUnknown_2023E8C +_0801ED2C: .4byte gUnknown_2023D6B +_0801ED30: .4byte gUnknown_8250C04 +_0801ED34: .4byte gUnknown_2023D6A +_0801ED38: .4byte gUnknown_2023E82 + thumb_func_end sub_801EAB8 + + thumb_func_start sub_801ED3C +sub_801ED3C: @ 801ED3C + push {r4-r7,lr} + adds r6, r2, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r7, _0801ED70 @ =gUnknown_2023D50 + ldr r0, [r7] + muls r0, r4 + movs r1, 0xA + bl __divsi3 + str r0, [r7] + cmp r0, 0 + bne _0801ED62 + cmp r4, 0 + beq _0801ED62 + movs r0, 0x1 + str r0, [r7] +_0801ED62: + cmp r4, 0x5 + beq _0801ED8A + cmp r4, 0x5 + bgt _0801ED74 + cmp r4, 0 + beq _0801ED7A + b _0801EDEE + .align 2, 0 +_0801ED70: .4byte gUnknown_2023D50 +_0801ED74: + cmp r4, 0x14 + beq _0801EDBC + b _0801EDEE +_0801ED7A: + ldrb r0, [r6] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0xFB + ands r0, r1 + movs r1, 0xFD + ands r0, r1 + b _0801EDEC +_0801ED8A: + ldr r0, _0801EDB4 @ =gUnknown_8250C04 + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801EDEE + ldrb r1, [r6] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801EDEE + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801EDB8 + movs r0, 0xFD + ands r0, r1 + b _0801EDEC + .align 2, 0 +_0801EDB4: .4byte gUnknown_8250C04 +_0801EDB8: + movs r0, 0x4 + b _0801EDEA +_0801EDBC: + ldr r0, _0801EDE4 @ =gUnknown_8250C04 + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801EDEE + ldrb r1, [r6] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801EDEE + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801EDE8 + movs r0, 0xFB + ands r0, r1 + b _0801EDEC + .align 2, 0 +_0801EDE4: .4byte gUnknown_8250C04 +_0801EDE8: + movs r0, 0x2 +_0801EDEA: + orrs r0, r1 +_0801EDEC: + strb r0, [r6] +_0801EDEE: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_801ED3C + + thumb_func_start sub_801EDF4 +sub_801EDF4: @ 801EDF4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x4] + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + movs r0, 0 + mov r8, r0 + mov r0, sp + mov r1, r8 + strb r1, [r0] + mov r2, r10 + cmp r2, 0xA5 + bne _0801EE26 + movs r0, 0 + b _0801EFAE +_0801EE26: + ldr r1, _0801EE94 @ =gUnknown_8250C04 + mov r3, r10 + lsls r2, r3, 1 + adds r0, r2, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x2] + str r0, [sp, 0x8] + ldr r1, _0801EE98 @ =gUnknown_2023BE4 + movs r0, 0x58 + ldr r3, [sp, 0x4] + muls r0, r3 + adds r3, r0, r1 + adds r0, r3, 0 + adds r0, 0x21 + ldrb r0, [r0] + str r2, [sp, 0xC] + adds r5, r1, 0 + ldr r1, [sp, 0x8] + cmp r0, r1 + beq _0801EE5A + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + bne _0801EE6C +_0801EE5A: + ldr r4, _0801EE9C @ =gUnknown_2023D50 + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + str r0, [r4] + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0801EE6C: + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + bne _0801EEA0 + ldr r3, [sp, 0x8] + cmp r3, 0x4 + bne _0801EEA0 + movs r1, 0x9 + mov r0, sp + ldrb r0, [r0] + orrs r0, r1 + mov r1, sp + strb r0, [r1] + b _0801EF50 + .align 2, 0 +_0801EE94: .4byte gUnknown_8250C04 +_0801EE98: .4byte gUnknown_2023BE4 +_0801EE9C: .4byte gUnknown_2023D50 +_0801EEA0: + ldr r1, _0801EEBC @ =gUnknown_824F050 + mov r2, r8 + adds r0, r2, r1 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0xFF + beq _0801EF50 + cmp r0, 0xFE + bne _0801EEC6 + movs r0, 0x58 + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + b _0801EF3E + .align 2, 0 +_0801EEBC: .4byte gUnknown_824F050 +_0801EEC0: + movs r0, 0x3 + add r8, r0 + b _0801EF28 +_0801EEC6: + ldr r7, _0801EFC0 @ =gUnknown_824F050 + mov r1, r8 + adds r0, r1, r7 + ldrb r0, [r0] + ldr r2, [sp, 0x8] + cmp r0, r2 + bne _0801EF20 + adds r1, 0x1 + adds r1, r7 + ldr r2, _0801EFC4 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + adds r5, r0, r2 + adds r6, r5, 0 + adds r6, 0x21 + ldrb r4, [r1] + ldrb r0, [r6] + cmp r4, r0 + bne _0801EF00 + mov r0, r8 + adds r0, 0x2 + adds r0, r7 + ldrb r0, [r0] + mov r1, r10 + mov r2, sp + bl sub_801ED3C +_0801EF00: + adds r0, r5, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r4, r0 + bne _0801EF20 + ldrb r0, [r6] + cmp r0, r4 + beq _0801EF20 + mov r0, r8 + adds r0, 0x2 + adds r0, r7 + ldrb r0, [r0] + mov r1, r10 + mov r2, sp + bl sub_801ED3C +_0801EF20: + movs r1, 0x3 + add r8, r1 + ldr r5, _0801EFC4 @ =gUnknown_2023BE4 + ldr r2, _0801EFC0 @ =gUnknown_824F050 +_0801EF28: + mov r3, r8 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0xFF + beq _0801EF50 + cmp r0, 0xFE + bne _0801EEC6 + movs r0, 0x58 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 +_0801EF3E: + adds r1, r5, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801EEC0 +_0801EF50: + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x19 + bne _0801EFAA + mov r0, sp + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801EFAA + ldr r0, [sp, 0x4] + mov r1, r10 + bl sub_802A224 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bne _0801EFAA + mov r0, sp + ldrb r3, [r0] + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _0801EF92 + movs r0, 0x6 + ands r0, r3 + cmp r0, 0x6 + bne _0801EFAA +_0801EF92: + ldr r0, _0801EFC8 @ =gUnknown_8250C04 + ldr r1, [sp, 0xC] + add r1, r10 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801EFAA + mov r0, sp + movs r1, 0x1 + orrs r1, r3 + strb r1, [r0] +_0801EFAA: + mov r0, sp + ldrb r0, [r0] +_0801EFAE: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801EFC0: .4byte gUnknown_824F050 +_0801EFC4: .4byte gUnknown_2023BE4 +_0801EFC8: .4byte gUnknown_8250C04 + thumb_func_end sub_801EDF4 + + thumb_func_start sub_801EFCC +sub_801EFCC: @ 801EFCC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x4] + movs r7, 0 + mov r0, sp + strb r7, [r0] + ldr r2, _0801F008 @ =gUnknown_8254784 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x6] + mov r9, r1 + ldrb r0, [r0, 0x7] + mov r8, r0 + cmp r6, 0xA5 + bne _0801F00C + movs r0, 0 + b _0801F0B0 + .align 2, 0 +_0801F008: .4byte gUnknown_8254784 +_0801F00C: + ldr r2, _0801F030 @ =gUnknown_8250C04 + lsls r1, r6, 1 + adds r0, r1, r6 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r10, r0 + str r1, [sp, 0x8] + ldr r3, [sp, 0x4] + cmp r3, 0x1A + bne _0801F034 + cmp r0, 0x4 + bne _0801F034 + movs r1, 0x9 + mov r0, sp + strb r1, [r0] + b _0801F07A + .align 2, 0 +_0801F030: .4byte gUnknown_8250C04 +_0801F034: + ldr r0, _0801F0C0 @ =gUnknown_824F050 + adds r1, r7, r0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0801F07A + adds r4, r1, 0 +_0801F040: + ldrb r0, [r4] + cmp r0, 0xFE + beq _0801F06C + cmp r0, r10 + bne _0801F06C + ldrb r5, [r4, 0x1] + cmp r5, r9 + bne _0801F05A + ldrb r0, [r4, 0x2] + adds r1, r6, 0 + mov r2, sp + bl sub_801ED3C +_0801F05A: + cmp r5, r8 + bne _0801F06C + cmp r9, r8 + beq _0801F06C + ldrb r0, [r4, 0x2] + adds r1, r6, 0 + mov r2, sp + bl sub_801ED3C +_0801F06C: + adds r4, 0x3 + adds r7, 0x3 + ldr r1, _0801F0C0 @ =gUnknown_824F050 + adds r0, r7, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0801F040 +_0801F07A: + ldr r3, [sp, 0x4] + cmp r3, 0x19 + bne _0801F0AC + mov r0, sp + ldrb r2, [r0] + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0801F094 + movs r0, 0x6 + ands r0, r2 + cmp r0, 0x6 + bne _0801F0AC +_0801F094: + ldr r0, _0801F0C4 @ =gUnknown_8250C04 + ldr r3, [sp, 0x8] + adds r1, r3, r6 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801F0AC + mov r0, sp + movs r1, 0x8 + orrs r1, r2 + strb r1, [r0] +_0801F0AC: + mov r0, sp + ldrb r0, [r0] +_0801F0B0: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801F0C0: .4byte gUnknown_824F050 +_0801F0C4: .4byte gUnknown_8250C04 + thumb_func_end sub_801EFCC + + thumb_func_start sub_801F0C8 +sub_801F0C8: @ 801F0C8 + push {r4,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _0801F100 @ =gUnknown_2023D50 + ldr r0, [r4] + cmp r0, 0 + beq _0801F0FA + muls r0, r1 + str r0, [r4] + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801F0FA + movs r0, 0x1 + str r0, [r4] +_0801F0FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801F100: .4byte gUnknown_2023D50 + thumb_func_end sub_801F0C8 + + thumb_func_start sub_801F104 +sub_801F104: @ 801F104 + push {r4-r7,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _0801F15C @ =gUnknown_2023D50 + ldr r0, [r4] + cmp r0, 0 + beq _0801F136 + muls r0, r1 + str r0, [r4] + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801F136 + movs r0, 0x1 + str r0, [r4] +_0801F136: + ldr r7, _0801F160 @ =gUnknown_2023BE4 + ldr r6, _0801F164 @ =gUnknown_2023D6C + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0801F16C + ldr r1, _0801F168 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _0801F186 + .align 2, 0 +_0801F15C: .4byte gUnknown_2023D50 +_0801F160: .4byte gUnknown_2023BE4 +_0801F164: .4byte gUnknown_2023D6C +_0801F168: .4byte gUnknown_2023F54 +_0801F16C: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r6, r0, 24 +_0801F186: + ldr r1, _0801F248 @ =gUnknown_2023D6F + ldr r5, _0801F24C @ =gUnknown_2023D6C + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _0801F1C4 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _0801F1C4 + ldrb r0, [r5] + movs r1, 0x27 + bl sub_80C7208 + ldr r2, _0801F250 @ =gUnknown_2023ECC + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_0801F1C4: + ldr r2, _0801F254 @ =gUnknown_2023BE4 + ldr r3, _0801F24C @ =gUnknown_2023D6C + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r1, r0 + adds r5, r2, 0 + cmp r1, 0 + bne _0801F294 + ldr r2, _0801F258 @ =gUnknown_8250C04 + ldr r0, _0801F25C @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x65 + beq _0801F216 + ldr r0, _0801F260 @ =gUnknown_2023E8C + lsls r1, r4, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _0801F216 + ldr r0, _0801F250 @ =gUnknown_2023ECC + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801F294 +_0801F216: + ldrb r0, [r3] + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r1, [r0, 0x28] + ldr r2, _0801F264 @ =gUnknown_2023D50 + ldr r0, [r2] + cmp r1, r0 + bgt _0801F294 + subs r0, r1, 0x1 + str r0, [r2] + ldr r1, _0801F260 @ =gUnknown_2023E8C + ldrb r3, [r3] + lsls r0, r3, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _0801F26C + ldr r0, _0801F268 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0801F294 + .align 2, 0 +_0801F248: .4byte gUnknown_2023D6F +_0801F24C: .4byte gUnknown_2023D6C +_0801F250: .4byte gUnknown_2023ECC +_0801F254: .4byte gUnknown_2023BE4 +_0801F258: .4byte gUnknown_8250C04 +_0801F25C: .4byte gUnknown_2023D4A +_0801F260: .4byte gUnknown_2023E8C +_0801F264: .4byte gUnknown_2023D50 +_0801F268: .4byte gUnknown_2023DCC +_0801F26C: + ldr r0, _0801F2A4 @ =gUnknown_2023ECC + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801F294 + ldr r2, _0801F2A8 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801F2AC @ =gUnknown_2023D68 + adds r0, r3, 0 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x2E] + strh r0, [r1] +_0801F294: + ldr r1, _0801F2B0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801F2A4: .4byte gUnknown_2023ECC +_0801F2A8: .4byte gUnknown_2023DCC +_0801F2AC: .4byte gUnknown_2023D68 +_0801F2B0: .4byte gUnknown_2023D74 + thumb_func_end sub_801F104 + + thumb_func_start sub_801F2B4 +sub_801F2B4: @ 801F2B4 + push {r4-r7,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _0801F30C @ =gUnknown_2023D50 + ldr r0, [r4] + cmp r0, 0 + beq _0801F2E6 + muls r0, r1 + str r0, [r4] + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801F2E6 + movs r0, 0x1 + str r0, [r4] +_0801F2E6: + ldr r7, _0801F310 @ =gUnknown_2023BE4 + ldr r6, _0801F314 @ =gUnknown_2023D6C + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0801F31C + ldr r1, _0801F318 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _0801F336 + .align 2, 0 +_0801F30C: .4byte gUnknown_2023D50 +_0801F310: .4byte gUnknown_2023BE4 +_0801F314: .4byte gUnknown_2023D6C +_0801F318: .4byte gUnknown_2023F54 +_0801F31C: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r6, r0, 24 +_0801F336: + ldr r1, _0801F3DC @ =gUnknown_2023D6F + ldr r5, _0801F3E0 @ =gUnknown_2023D6C + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _0801F374 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _0801F374 + ldrb r0, [r5] + movs r1, 0x27 + bl sub_80C7208 + ldr r2, _0801F3E4 @ =gUnknown_2023ECC + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_0801F374: + ldr r4, _0801F3E8 @ =gUnknown_2023BE4 + ldr r6, _0801F3E0 @ =gUnknown_2023D6C + ldrb r2, [r6] + movs r7, 0x58 + adds r3, r2, 0 + muls r3, r7 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + bne _0801F420 + ldr r5, _0801F3EC @ =gUnknown_2023E8C + lsls r0, r2, 4 + adds r0, r5 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + blt _0801F3B2 + ldr r0, _0801F3E4 @ =gUnknown_2023ECC + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801F420 +_0801F3B2: + adds r0, r3, r4 + ldrh r1, [r0, 0x28] + ldr r2, _0801F3F0 @ =gUnknown_2023D50 + ldr r0, [r2] + cmp r1, r0 + bgt _0801F420 + subs r0, r1, 0x1 + str r0, [r2] + ldrb r3, [r6] + lsls r0, r3, 4 + adds r0, r5 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _0801F3F8 + ldr r0, _0801F3F4 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0801F420 + .align 2, 0 +_0801F3DC: .4byte gUnknown_2023D6F +_0801F3E0: .4byte gUnknown_2023D6C +_0801F3E4: .4byte gUnknown_2023ECC +_0801F3E8: .4byte gUnknown_2023BE4 +_0801F3EC: .4byte gUnknown_2023E8C +_0801F3F0: .4byte gUnknown_2023D50 +_0801F3F4: .4byte gUnknown_2023DCC +_0801F3F8: + ldr r0, _0801F430 @ =gUnknown_2023ECC + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801F420 + ldr r2, _0801F434 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801F438 @ =gUnknown_2023D68 + adds r0, r3, 0 + muls r0, r7 + adds r0, r4 + ldrh r0, [r0, 0x2E] + strh r0, [r1] +_0801F420: + ldr r1, _0801F43C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801F430: .4byte gUnknown_2023ECC +_0801F434: .4byte gUnknown_2023DCC +_0801F438: .4byte gUnknown_2023D68 +_0801F43C: .4byte gUnknown_2023D74 + thumb_func_end sub_801F2B4 + + thumb_func_start sub_801F440 +sub_801F440: @ 801F440 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + ldr r0, _0801F488 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0801F452 + b _0801F572 +_0801F452: + ldr r0, _0801F48C @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + ldr r3, _0801F490 @ =gUnknown_2023D4A + cmp r0, 0 + beq _0801F4A0 + ldrh r0, [r3] + cmp r0, 0x90 + beq _0801F4A0 + cmp r0, 0xA4 + beq _0801F4A0 + ldr r4, _0801F494 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _0801F498 @ =gUnknown_81D89F1 + str r0, [r4] + ldr r1, _0801F49C @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x18] + adds r0, 0x1 + strb r0, [r1, 0x18] + ldrb r0, [r1, 0x19] + adds r0, 0x1 + strb r0, [r1, 0x19] + b _0801F572 + .align 2, 0 +_0801F488: .4byte gUnknown_2023BC8 +_0801F48C: .4byte gUnknown_2023DD0 +_0801F490: .4byte gUnknown_2023D4A +_0801F494: .4byte gUnknown_2023D74 +_0801F498: .4byte gUnknown_81D89F1 +_0801F49C: .4byte gUnknown_2023FC4 +_0801F4A0: + ldr r2, _0801F53C @ =gUnknown_8250C04 + ldrh r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x6] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0801F4C6 + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _0801F4C6 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0801F4CE +_0801F4C6: + ldr r0, _0801F540 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x19] + cmp r0, 0 + bne _0801F530 +_0801F4CE: + ldr r0, _0801F544 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801F564 + ldr r1, _0801F548 @ =gUnknown_2023BC4 + ldr r0, _0801F54C @ =gUnknown_2023D6B + mov r8, r0 + ldrb r0, [r0] + strb r0, [r1] + ldrh r1, [r3] + ldr r6, _0801F540 @ =gUnknown_2023FC4 + ldrb r2, [r6, 0x18] + ldr r0, _0801F550 @ =gUnknown_2024020 + ldrh r3, [r0] + ldr r0, _0801F554 @ =gUnknown_2023D50 + ldr r0, [r0] + str r0, [sp] + ldr r5, _0801F558 @ =gUnknown_2023BE4 + mov r0, r8 + ldrb r4, [r0] + movs r0, 0x58 + muls r0, r4 + adds r0, r5 + adds r0, 0x2B + ldrb r0, [r0] + str r0, [sp, 0x4] + mov r0, r8 + ldrb r4, [r0] + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r4, _0801F55C @ =gUnknown_2023E0C + adds r0, r4 + str r0, [sp, 0x8] + movs r0, 0 + bl sub_800E1FC + ldrb r0, [r6, 0x18] + adds r0, 0x1 + strb r0, [r6, 0x18] + ldrb r0, [r6, 0x19] + adds r0, 0x1 + strb r0, [r6, 0x19] + mov r1, r8 + ldrb r0, [r1] + bl sub_8017248 +_0801F530: + ldr r1, _0801F560 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + b _0801F572 + .align 2, 0 +_0801F53C: .4byte gUnknown_8250C04 +_0801F540: .4byte gUnknown_2023FC4 +_0801F544: .4byte gUnknown_2023DCC +_0801F548: .4byte gUnknown_2023BC4 +_0801F54C: .4byte gUnknown_2023D6B +_0801F550: .4byte gUnknown_2024020 +_0801F554: .4byte gUnknown_2023D50 +_0801F558: .4byte gUnknown_2023BE4 +_0801F55C: .4byte gUnknown_2023E0C +_0801F560: .4byte gUnknown_2023D74 +_0801F564: + ldr r4, _0801F580 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _0801F584 @ =gUnknown_81D89F1 + str r0, [r4] +_0801F572: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801F580: .4byte gUnknown_2023D74 +_0801F584: .4byte gUnknown_81D89F1 + thumb_func_end sub_801F440 + + thumb_func_start sub_801F588 +sub_801F588: @ 801F588 + push {lr} + ldr r0, _0801F5A0 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801F59A + ldr r1, _0801F5A4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801F59A: + pop {r0} + bx r0 + .align 2, 0 +_0801F5A0: .4byte gUnknown_2023BC8 +_0801F5A4: .4byte gUnknown_2023D74 + thumb_func_end sub_801F588 + + thumb_func_start sub_801F5A8 +sub_801F5A8: @ 801F5A8 + push {r4,lr} + ldr r0, _0801F60C @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801F66A + ldr r0, _0801F610 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801F662 + ldr r0, _0801F614 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r2, _0801F618 @ =gUnknown_2023BC4 + strb r0, [r2] + ldr r1, _0801F61C @ =gUnknown_2023BE4 + ldrb r2, [r2] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _0801F628 + ldr r0, _0801F620 @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + beq _0801F628 + ldr r0, _0801F624 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + bne _0801F628 + movs r0, 0x80 + adds r1, r2, 0 + bl sub_80173AC + b _0801F662 + .align 2, 0 +_0801F60C: .4byte gUnknown_2023BC8 +_0801F610: .4byte gUnknown_2023DCC +_0801F614: .4byte gUnknown_2023D74 +_0801F618: .4byte gUnknown_2023BC4 +_0801F61C: .4byte gUnknown_2023BE4 +_0801F620: .4byte gUnknown_2023E0C +_0801F624: .4byte gUnknown_2023DD0 +_0801F628: + ldr r0, _0801F670 @ =gUnknown_2023D50 + ldr r0, [r0] + ldr r1, _0801F674 @ =0x00002710 + cmp r0, r1 + bgt _0801F636 + lsls r0, 16 + lsrs r1, r0, 16 +_0801F636: + movs r0, 0 + bl sub_800E5EC + ldr r4, _0801F678 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_8017248 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0801F662 + ldr r0, _0801F670 @ =gUnknown_2023D50 + ldr r0, [r0] + cmp r0, 0 + ble _0801F662 + ldr r0, _0801F67C @ =gUnknown_3004F90 + ldrb r1, [r0, 0x5] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x5] +_0801F662: + ldr r1, _0801F680 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_0801F66A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801F670: .4byte gUnknown_2023D50 +_0801F674: .4byte 0x00002710 +_0801F678: .4byte gUnknown_2023BC4 +_0801F67C: .4byte gUnknown_3004F90 +_0801F680: .4byte gUnknown_2023D74 + thumb_func_end sub_801F5A8 + + thumb_func_start sub_801F684 +sub_801F684: @ 801F684 + push {r4-r7,lr} + sub sp, 0x4 + ldr r0, _0801F6AC @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0801F692 + b _0801FA62 +_0801F692: + ldr r0, _0801F6B0 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x13] + cmp r1, 0 + beq _0801F6B4 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0801F6B4 + movs r6, 0x3F + ands r6, r1 + b _0801F6C4 + .align 2, 0 +_0801F6AC: .4byte gUnknown_2023BC8 +_0801F6B0: .4byte gUnknown_2023FE8 +_0801F6B4: + ldr r2, _0801F750 @ =gUnknown_8250C04 + ldr r0, _0801F754 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r6, [r0, 0x2] +_0801F6C4: + ldr r0, _0801F758 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801F6D2 + b _0801FA34 +_0801F6D2: + ldr r0, _0801F75C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r7, _0801F760 @ =gUnknown_2023BC4 + strb r0, [r7] + ldr r1, _0801F764 @ =gUnknown_2023BE4 + ldrb r2, [r7] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _0801F7E8 + ldr r0, _0801F768 @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r4, r1, r0 + ldrb r1, [r4, 0xA] + mov r12, r0 + cmp r1, 0 + beq _0801F7E8 + ldr r0, _0801F76C @ =gUnknown_2023DD0 + ldr r3, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r3, r0 + cmp r3, 0 + bne _0801F7E8 + adds r5, r1, 0 + ldr r6, _0801F770 @ =gUnknown_2023D50 + ldr r4, [r6] + cmp r5, r4 + blt _0801F77C + ldr r0, _0801F774 @ =gUnknown_2023ECC + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + bne _0801F736 + str r4, [r1] +_0801F736: + ldrb r0, [r7] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r12 + ldr r2, [r6] + ldrb r0, [r1, 0xA] + subs r0, r2 + strb r0, [r1, 0xA] + ldr r1, _0801F778 @ =gUnknown_2023D54 + ldr r0, [r6] + str r0, [r1] + b _0801F7AC + .align 2, 0 +_0801F750: .4byte gUnknown_8250C04 +_0801F754: .4byte gUnknown_2023D4A +_0801F758: .4byte gUnknown_2023DCC +_0801F75C: .4byte gUnknown_2023D74 +_0801F760: .4byte gUnknown_2023BC4 +_0801F764: .4byte gUnknown_2023BE4 +_0801F768: .4byte gUnknown_2023E0C +_0801F76C: .4byte gUnknown_2023DD0 +_0801F770: .4byte gUnknown_2023D50 +_0801F774: .4byte gUnknown_2023ECC +_0801F778: .4byte gUnknown_2023D54 +_0801F77C: + ldr r0, _0801F7D4 @ =gUnknown_2023ECC + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + bne _0801F790 + str r5, [r1] +_0801F790: + ldr r2, _0801F7D8 @ =gUnknown_2023D54 + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xA] + str r0, [r2] + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + strb r3, [r0, 0xA] +_0801F7AC: + ldr r0, _0801F7DC @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xA] + cmp r0, 0 + beq _0801F7C0 + b _0801FA5A +_0801F7C0: + ldr r4, _0801F7E0 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + bl sub_8017544 + ldr r0, _0801F7E4 @ =gUnknown_81D9526 + str r0, [r4] + b _0801FA62 + .align 2, 0 +_0801F7D4: .4byte gUnknown_2023ECC +_0801F7D8: .4byte gUnknown_2023D54 +_0801F7DC: .4byte gUnknown_2023BC4 +_0801F7E0: .4byte gUnknown_2023D74 +_0801F7E4: .4byte gUnknown_81D9526 +_0801F7E8: + ldr r0, _0801F828 @ =gUnknown_2023DD0 + ldr r2, [r0] + ldr r1, _0801F82C @ =0xfffffeff + ands r2, r1 + str r2, [r0] + ldr r1, _0801F830 @ =gUnknown_2023D50 + ldr r5, [r1] + mov r12, r0 + adds r7, r1, 0 + cmp r5, 0 + bge _0801F83C + ldr r4, _0801F834 @ =gUnknown_2023BE4 + ldr r2, _0801F838 @ =gUnknown_2023BC4 + ldrb r0, [r2] + movs r3, 0x58 + adds r1, r0, 0 + muls r1, r3 + adds r1, r4 + ldrh r0, [r1, 0x28] + subs r0, r5 + strh r0, [r1, 0x28] + ldrb r0, [r2] + muls r0, r3 + adds r1, r0, r4 + ldrh r3, [r1, 0x2C] + ldrh r0, [r1, 0x28] + adds r5, r2, 0 + cmp r0, r3 + bhi _0801F824 + b _0801F9FA +_0801F824: + strh r3, [r1, 0x28] + b _0801F9FA + .align 2, 0 +_0801F828: .4byte gUnknown_2023DD0 +_0801F82C: .4byte 0xfffffeff +_0801F830: .4byte gUnknown_2023D50 +_0801F834: .4byte gUnknown_2023BE4 +_0801F838: .4byte gUnknown_2023BC4 +_0801F83C: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _0801F858 + movs r0, 0x21 + negs r0, r0 + ands r2, r0 + mov r0, r12 + str r2, [r0] + ldr r5, _0801F854 @ =gUnknown_2023BC4 + b _0801F8A0 + .align 2, 0 +_0801F854: .4byte gUnknown_2023BC4 +_0801F858: + ldr r0, _0801F880 @ =gUnknown_2023D58 + ldr r2, _0801F884 @ =gUnknown_2023BC4 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + adds r0, r5 + str r0, [r1] + ldr r0, _0801F888 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + adds r5, r2, 0 + cmp r0, 0 + bne _0801F894 + ldr r1, _0801F88C @ =gUnknown_2023DD8 + ldrb r0, [r5] + adds r0, r1 + ldr r1, _0801F890 @ =gUnknown_2023D6B + b _0801F89C + .align 2, 0 +_0801F880: .4byte gUnknown_2023D58 +_0801F884: .4byte gUnknown_2023BC4 +_0801F888: .4byte gUnknown_2023D74 +_0801F88C: .4byte gUnknown_2023DD8 +_0801F890: .4byte gUnknown_2023D6B +_0801F894: + ldr r1, _0801F8C0 @ =gUnknown_2023DD8 + ldrb r0, [r5] + adds r0, r1 + ldr r1, _0801F8C4 @ =gUnknown_2023D6C +_0801F89C: + ldrb r1, [r1] + strb r1, [r0] +_0801F8A0: + ldr r4, _0801F8C8 @ =gUnknown_2023BE4 + ldrb r0, [r5] + movs r3, 0x58 + muls r0, r3 + adds r2, r0, r4 + ldrh r0, [r2, 0x28] + ldr r1, [r7] + cmp r0, r1 + ble _0801F8D0 + subs r0, r1 + strh r0, [r2, 0x28] + ldr r0, _0801F8CC @ =gUnknown_2023D54 + str r1, [r0] + adds r7, r0, 0 + b _0801F8E0 + .align 2, 0 +_0801F8C0: .4byte gUnknown_2023DD8 +_0801F8C4: .4byte gUnknown_2023D6C +_0801F8C8: .4byte gUnknown_2023BE4 +_0801F8CC: .4byte gUnknown_2023D54 +_0801F8D0: + ldr r2, _0801F954 @ =gUnknown_2023D54 + str r0, [r2] + ldrb r0, [r5] + muls r0, r3 + adds r0, r4 + movs r1, 0 + strh r1, [r0, 0x28] + adds r7, r2, 0 +_0801F8E0: + ldr r2, _0801F958 @ =gUnknown_2023ECC + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0x4 + adds r3, r0, r1 + ldr r0, [r3] + adds r4, r2, 0 + cmp r0, 0 + bne _0801F908 + mov r1, r12 + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0801F908 + ldr r0, [r7] + str r0, [r3] +_0801F908: + cmp r6, 0x8 + bhi _0801F990 + mov r1, r12 + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0801F98C + ldr r0, _0801F95C @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xDC + beq _0801F98C + ldr r3, _0801F960 @ =gUnknown_2023E8C + ldrb r0, [r5] + lsls r0, 4 + adds r1, r3, 0x4 + adds r0, r1 + ldr r2, [r7] + str r2, [r0] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x8 + adds r0, r1 + str r2, [r0] + ldr r0, _0801F964 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0801F96C + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801F968 @ =gUnknown_2023D6B + b _0801F974 + .align 2, 0 +_0801F954: .4byte gUnknown_2023D54 +_0801F958: .4byte gUnknown_2023ECC +_0801F95C: .4byte gUnknown_2023D4A +_0801F960: .4byte gUnknown_2023E8C +_0801F964: .4byte gUnknown_2023D74 +_0801F968: .4byte gUnknown_2023D6B +_0801F96C: + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801F988 @ =gUnknown_2023D6C +_0801F974: + ldrb r1, [r2] + strb r1, [r0, 0xC] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r2] + strb r1, [r0, 0x10] + b _0801F9FA + .align 2, 0 +_0801F988: .4byte gUnknown_2023D6C +_0801F98C: + cmp r6, 0x8 + bls _0801F9FA +_0801F990: + mov r1, r12 + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0801F9FA + ldr r3, _0801F9D4 @ =gUnknown_2023E8C + ldrb r0, [r5] + lsls r0, 4 + adds r1, r3, 0 + adds r1, 0x8 + adds r0, r1 + ldr r2, [r7] + str r2, [r0] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r1 + str r2, [r0] + ldr r0, _0801F9D8 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0801F9E0 + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801F9DC @ =gUnknown_2023D6B + b _0801F9E8 + .align 2, 0 +_0801F9D4: .4byte gUnknown_2023E8C +_0801F9D8: .4byte gUnknown_2023D74 +_0801F9DC: .4byte gUnknown_2023D6B +_0801F9E0: + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801FA28 @ =gUnknown_2023D6C +_0801F9E8: + ldrb r1, [r2] + strb r1, [r0, 0xD] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r2] + strb r1, [r0, 0x11] +_0801F9FA: + mov r1, r12 + ldr r0, [r1] + ldr r1, _0801FA2C @ =0xffefffff + ands r0, r1 + mov r1, r12 + str r0, [r1] + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + ldr r1, _0801FA30 @ =gUnknown_2023C0C + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2A + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldrb r0, [r5] + bl sub_8017248 + b _0801FA5A + .align 2, 0 +_0801FA28: .4byte gUnknown_2023D6C +_0801FA2C: .4byte 0xffefffff +_0801FA30: .4byte gUnknown_2023C0C +_0801FA34: + ldr r0, _0801FA6C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _0801FA70 @ =gUnknown_2023BC4 + strb r0, [r1] + ldr r2, _0801FA74 @ =gUnknown_2023ECC + ldrb r1, [r1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x4 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, 0 + bne _0801FA5A + ldr r0, _0801FA78 @ =0x0000ffff + str r0, [r1] +_0801FA5A: + ldr r1, _0801FA6C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_0801FA62: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801FA6C: .4byte gUnknown_2023D74 +_0801FA70: .4byte gUnknown_2023BC4 +_0801FA74: .4byte gUnknown_2023ECC +_0801FA78: .4byte 0x0000ffff + thumb_func_end sub_801F684 + + thumb_func_start sub_801FA7C +sub_801FA7C: @ 801FA7C + push {lr} + ldr r0, _0801FAB8 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801FAB2 + ldr r0, _0801FABC @ =gUnknown_2023D71 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0801FAAA + ldr r0, _0801FAC0 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801FAAA + ldr r0, _0801FAC4 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0xD9 + bl sub_80173AC + ldr r1, _0801FAC8 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x7] +_0801FAAA: + ldr r1, _0801FACC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801FAB2: + pop {r0} + bx r0 + .align 2, 0 +_0801FAB8: .4byte gUnknown_2023BC8 +_0801FABC: .4byte gUnknown_2023D71 +_0801FAC0: .4byte gUnknown_2023DCC +_0801FAC4: .4byte gUnknown_2023D6B +_0801FAC8: .4byte gUnknown_2023E82 +_0801FACC: .4byte gUnknown_2023D74 + thumb_func_end sub_801FA7C + + thumb_func_start sub_801FAD0 +sub_801FAD0: @ 801FAD0 + push {r4,lr} + ldr r0, _0801FB08 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801FB90 + ldr r4, _0801FB0C @ =gUnknown_2023BC4 + ldr r0, _0801FB10 @ =gUnknown_2023D6C + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _0801FB14 @ =gUnknown_2023DCC + ldrb r2, [r1] + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + bne _0801FB88 + movs r0, 0xFE + ands r0, r2 + cmp r0, 0x10 + beq _0801FB42 + cmp r0, 0x10 + bgt _0801FB1E + cmp r0, 0x4 + beq _0801FB32 + cmp r0, 0x4 + bgt _0801FB18 + cmp r0, 0x2 + beq _0801FB2C + b _0801FB42 + .align 2, 0 +_0801FB08: .4byte gUnknown_2023BC8 +_0801FB0C: .4byte gUnknown_2023BC4 +_0801FB10: .4byte gUnknown_2023D6C +_0801FB14: .4byte gUnknown_2023DCC +_0801FB18: + cmp r0, 0x8 + beq _0801FB88 + b _0801FB42 +_0801FB1E: + cmp r0, 0x40 + beq _0801FB42 + cmp r0, 0x40 + bgt _0801FB42 + cmp r0, 0x20 + beq _0801FB88 + b _0801FB42 +_0801FB2C: + movs r0, 0 + movs r1, 0xE + b _0801FB36 +_0801FB32: + movs r0, 0 + movs r1, 0xC +_0801FB36: + bl sub_800E9C4 + ldrb r0, [r4] + bl sub_8017248 + b _0801FB88 +_0801FB42: + ldrb r1, [r1] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801FB52 + movs r0, 0 + movs r1, 0xE + b _0801FB5E +_0801FB52: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801FB70 + movs r0, 0 + movs r1, 0xC +_0801FB5E: + bl sub_800E9C4 + ldr r0, _0801FB6C @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + b _0801FB88 + .align 2, 0 +_0801FB6C: .4byte gUnknown_2023BC4 +_0801FB70: + movs r0, 0x28 + ands r0, r1 + cmp r0, 0 + bne _0801FB88 + movs r0, 0 + movs r1, 0xD + bl sub_800E9C4 + ldr r0, _0801FB98 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 +_0801FB88: + ldr r1, _0801FB9C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801FB90: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FB98: .4byte gUnknown_2023BC4 +_0801FB9C: .4byte gUnknown_2023D74 + thumb_func_end sub_801FAD0 + + thumb_func_start sub_801FBA0 +sub_801FBA0: @ 801FBA0 + push {r4-r7,lr} + movs r3, 0 + ldr r0, _0801FBDC @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0801FBAE + b _0801FD40 +_0801FBAE: + ldr r1, _0801FBE0 @ =gUnknown_2023DCC + ldrb r2, [r1] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r2 + adds r6, r1, 0 + ldr r7, _0801FBE4 @ =gUnknown_2023E82 + cmp r0, 0 + beq _0801FBEC + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _0801FBCE + ldrb r0, [r7, 0x6] + cmp r0, 0x2 + bls _0801FBEC +_0801FBCE: + ldr r1, _0801FBE8 @ =gUnknown_83FE514 + ldrb r0, [r7, 0x6] + lsls r0, 1 + adds r0, r1 + ldrh r3, [r0] + strb r4, [r7, 0x7] + b _0801FD2A + .align 2, 0 +_0801FBDC: .4byte gUnknown_2023BC8 +_0801FBE0: .4byte gUnknown_2023DCC +_0801FBE4: .4byte gUnknown_2023E82 +_0801FBE8: .4byte gUnknown_83FE514 +_0801FBEC: + movs r0, 0x1 + strb r0, [r7, 0x7] + ldrb r5, [r6] + movs r0, 0xFE + ands r0, r5 + cmp r0, 0x10 + beq _0801FC30 + cmp r0, 0x10 + bgt _0801FC12 + cmp r0, 0x4 + beq _0801FC2C + cmp r0, 0x4 + bgt _0801FC0C + cmp r0, 0x2 + beq _0801FC28 + b _0801FC78 +_0801FC0C: + cmp r0, 0x8 + beq _0801FC84 + b _0801FC78 +_0801FC12: + cmp r0, 0x40 + beq _0801FC34 + cmp r0, 0x40 + bgt _0801FC22 + cmp r0, 0x20 + bne _0801FC20 + b _0801FD24 +_0801FC20: + b _0801FC78 +_0801FC22: + cmp r0, 0x80 + beq _0801FC38 + b _0801FC78 +_0801FC28: + movs r3, 0xDE + b _0801FD2E +_0801FC2C: + movs r3, 0xDD + b _0801FD2E +_0801FC30: + movs r3, 0xDA + b _0801FD2E +_0801FC34: + movs r3, 0x99 + b _0801FD2E +_0801FC38: + ldr r4, _0801FC60 @ =gUnknown_2023D68 + ldr r2, _0801FC64 @ =gUnknown_2023BE4 + ldr r3, _0801FC68 @ =gUnknown_2023D6C + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2E] + strh r0, [r4] + ldr r1, _0801FC6C @ =gUnknown_2023D6F + ldrb r0, [r3] + strb r0, [r1] + movs r0, 0x3F + ands r0, r5 + strb r0, [r6] + bl sub_8017544 + ldr r1, _0801FC70 @ =gUnknown_2023D74 + ldr r0, _0801FC74 @ =gUnknown_81D9641 + b _0801FD3E + .align 2, 0 +_0801FC60: .4byte gUnknown_2023D68 +_0801FC64: .4byte gUnknown_2023BE4 +_0801FC68: .4byte gUnknown_2023D6C +_0801FC6C: .4byte gUnknown_2023D6F +_0801FC70: .4byte gUnknown_2023D74 +_0801FC74: .4byte gUnknown_81D9641 +_0801FC78: + adds r2, r6, 0 + ldrb r5, [r2] + movs r0, 0x8 + ands r0, r5 + cmp r0, 0 + beq _0801FC88 +_0801FC84: + movs r3, 0x1B + b _0801FD2E +_0801FC88: + movs r0, 0x10 + ands r0, r5 + cmp r0, 0 + beq _0801FCB0 + movs r0, 0xEF + ands r0, r5 + movs r1, 0xFD + ands r0, r1 + movs r1, 0xFB + ands r0, r1 + strb r0, [r2] + bl sub_8017544 + ldr r1, _0801FCA8 @ =gUnknown_2023D74 + ldr r0, _0801FCAC @ =gUnknown_81D8FE4 + b _0801FD3E + .align 2, 0 +_0801FCA8: .4byte gUnknown_2023D74 +_0801FCAC: .4byte gUnknown_81D8FE4 +_0801FCB0: + movs r0, 0x40 + ands r0, r5 + cmp r0, 0 + beq _0801FCD0 + movs r0, 0x3F + ands r0, r5 + strb r0, [r2] + bl sub_8017544 + ldr r1, _0801FCC8 @ =gUnknown_2023D74 + ldr r0, _0801FCCC @ =gUnknown_81D8FDD + b _0801FD3E + .align 2, 0 +_0801FCC8: .4byte gUnknown_2023D74 +_0801FCCC: .4byte gUnknown_81D8FDD +_0801FCD0: + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + beq _0801FD18 + ldr r4, _0801FD00 @ =gUnknown_2023D68 + ldr r2, _0801FD04 @ =gUnknown_2023BE4 + ldr r3, _0801FD08 @ =gUnknown_2023D6C + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2E] + strh r0, [r4] + ldr r1, _0801FD0C @ =gUnknown_2023D6F + ldrb r0, [r3] + strb r0, [r1] + movs r0, 0x3F + ands r0, r5 + strb r0, [r6] + bl sub_8017544 + ldr r1, _0801FD10 @ =gUnknown_2023D74 + ldr r0, _0801FD14 @ =gUnknown_81D9641 + b _0801FD3E + .align 2, 0 +_0801FD00: .4byte gUnknown_2023D68 +_0801FD04: .4byte gUnknown_2023BE4 +_0801FD08: .4byte gUnknown_2023D6C +_0801FD0C: .4byte gUnknown_2023D6F +_0801FD10: .4byte gUnknown_2023D74 +_0801FD14: .4byte gUnknown_81D9641 +_0801FD18: + movs r0, 0x20 + ands r0, r5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0801FD28 +_0801FD24: + movs r3, 0xE5 + b _0801FD2E +_0801FD28: + strb r0, [r7, 0x7] +_0801FD2A: + cmp r3, 0 + beq _0801FD38 +_0801FD2E: + adds r0, r3, 0 + ldr r1, _0801FD48 @ =gUnknown_2023D6B + ldrb r1, [r1] + bl sub_80173AC +_0801FD38: + ldr r1, _0801FD4C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 +_0801FD3E: + str r0, [r1] +_0801FD40: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801FD48: .4byte gUnknown_2023D6B +_0801FD4C: .4byte gUnknown_2023D74 + thumb_func_end sub_801FBA0 + + thumb_func_start sub_801FD50 +sub_801FD50: @ 801FD50 + push {r4,lr} + ldr r0, _0801FD80 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801FD7A + ldr r4, _0801FD84 @ =gUnknown_2023D74 + ldr r1, [r4] + ldrb r0, [r1, 0x1] + ldrb r1, [r1, 0x2] + lsls r1, 8 + orrs r0, r1 + ldr r1, _0801FD88 @ =gUnknown_2023D6B + ldrb r1, [r1] + bl sub_80173AC + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + ldr r1, _0801FD8C @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x7] +_0801FD7A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FD80: .4byte gUnknown_2023BC8 +_0801FD84: .4byte gUnknown_2023D74 +_0801FD88: .4byte gUnknown_2023D6B +_0801FD8C: .4byte gUnknown_2023E82 + thumb_func_end sub_801FD50 + + thumb_func_start sub_801FD90 +sub_801FD90: @ 801FD90 + push {r4,r5,lr} + ldr r5, _0801FDC4 @ =gUnknown_2023BC4 + ldr r0, _0801FDC8 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _0801FDCC @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0 + bl sub_800E3EC + ldrb r0, [r5] + bl sub_8017248 + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + ldr r1, _0801FDD0 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x7] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FDC4: .4byte gUnknown_2023BC4 +_0801FDC8: .4byte gUnknown_2023D6B +_0801FDCC: .4byte gUnknown_2023D74 +_0801FDD0: .4byte gUnknown_2023E82 + thumb_func_end sub_801FD90 + + thumb_func_start sub_801FDD4 +sub_801FDD4: @ 801FDD4 + push {r4-r6,lr} + ldr r0, _0801FDF0 @ =gUnknown_2023BC8 + ldr r4, [r0] + cmp r4, 0 + bne _0801FE22 + ldr r6, _0801FDF4 @ =gUnknown_2023E82 + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _0801FDFC + ldr r1, _0801FDF8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x3 + str r0, [r1] + b _0801FE22 + .align 2, 0 +_0801FDF0: .4byte gUnknown_2023BC8 +_0801FDF4: .4byte gUnknown_2023E82 +_0801FDF8: .4byte gUnknown_2023D74 +_0801FDFC: + ldr r5, _0801FE28 @ =gUnknown_2023D74 + ldr r2, [r5] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r3, _0801FE2C @ =gUnknown_2023E7C + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] + lsls r0, 16 + lsrs r0, 16 + cmp r0, r1 + bcc _0801FE22 + movs r1, 0 + strh r4, [r3] + adds r0, r2, 0x3 + str r0, [r5] + strb r1, [r6, 0x7] +_0801FE22: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801FE28: .4byte gUnknown_2023D74 +_0801FE2C: .4byte gUnknown_2023E7C + thumb_func_end sub_801FDD4 + + thumb_func_start sub_801FE30 +sub_801FE30: @ 801FE30 + push {r4,r5,lr} + ldr r0, _0801FE74 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801FE6E + ldr r4, _0801FE78 @ =gUnknown_2023D74 + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r5, _0801FE7C @ =gUnknown_2023E82 + ldrb r0, [r5, 0x5] + lsls r0, 1 + adds r1, r0 + ldrh r0, [r1] + ldr r1, _0801FE80 @ =gUnknown_2023D6B + ldrb r1, [r1] + bl sub_80173AC + ldr r0, [r4] + adds r0, 0x5 + str r0, [r4] + movs r0, 0x1 + strb r0, [r5, 0x7] +_0801FE6E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FE74: .4byte gUnknown_2023BC8 +_0801FE78: .4byte gUnknown_2023D74 +_0801FE7C: .4byte gUnknown_2023E82 +_0801FE80: .4byte gUnknown_2023D6B + thumb_func_end sub_801FE30 + + thumb_func_start sub_801FE84 +sub_801FE84: @ 801FE84 + push {r4-r6,lr} + ldr r0, _0801FED4 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801FECE + ldr r5, _0801FED8 @ =gUnknown_2023D74 + ldr r2, [r5] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r6, _0801FEDC @ =gUnknown_2023E82 + ldrb r0, [r6, 0x5] + lsls r0, 1 + adds r1, r0 + ldr r4, _0801FEE0 @ =gUnknown_2023BC4 + ldr r0, _0801FEE4 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r4] + ldrh r1, [r1] + movs r0, 0 + bl sub_800E3EC + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x5 + str r0, [r5] + movs r0, 0x1 + strb r0, [r6, 0x7] +_0801FECE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801FED4: .4byte gUnknown_2023BC8 +_0801FED8: .4byte gUnknown_2023D74 +_0801FEDC: .4byte gUnknown_2023E82 +_0801FEE0: .4byte gUnknown_2023BC4 +_0801FEE4: .4byte gUnknown_2023D6B + thumb_func_end sub_801FE84 + + thumb_func_start sub_801FEE8 +sub_801FEE8: @ 801FEE8 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0 + ldr r0, _0801FF18 @ =gUnknown_2023BCC + ldrb r3, [r0] + cmp r1, r3 + bge _0801FF0E + ldr r4, _0801FF1C @ =gUnknown_2023BDE + ldrb r0, [r4] + cmp r0, r2 + beq _0801FF0E +_0801FF00: + adds r1, 0x1 + cmp r1, r3 + bge _0801FF0E + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r2 + bne _0801FF00 +_0801FF0E: + lsls r0, r1, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801FF18: .4byte gUnknown_2023BCC +_0801FF1C: .4byte gUnknown_2023BDE + thumb_func_end sub_801FEE8 + + thumb_func_start sub_801FF20 +sub_801FF20: @ 801FF20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0 + mov r10, r0 + movs r7, 0 + movs r1, 0x1 + str r1, [sp, 0x4] + ldr r1, _0801FF64 @ =gUnknown_2023E82 + ldrb r3, [r1, 0x3] + movs r0, 0x40 + ands r0, r3 + adds r6, r1, 0 + cmp r0, 0 + beq _0801FF78 + ldr r2, _0801FF68 @ =gUnknown_2023D6E + ldr r0, _0801FF6C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0xBF + ands r0, r3 + strb r0, [r6, 0x3] + movs r7, 0x40 + ldr r1, _0801FF70 @ =gUnknown_2023FC4 + ldr r0, _0801FF74 @ =gUnknown_2023D6C + b _0801FF84 + .align 2, 0 +_0801FF64: .4byte gUnknown_2023E82 +_0801FF68: .4byte gUnknown_2023D6E +_0801FF6C: .4byte gUnknown_2023D6B +_0801FF70: .4byte gUnknown_2023FC4 +_0801FF74: .4byte gUnknown_2023D6C +_0801FF78: + ldr r2, _08020094 @ =gUnknown_2023D6E + ldr r0, _08020098 @ =gUnknown_2023D6C + ldrb r0, [r0] + strb r0, [r2] + ldr r1, _0802009C @ =gUnknown_2023FC4 + ldr r0, _080200A0 @ =gUnknown_2023D6B +_0801FF84: + ldrb r0, [r0] + strb r0, [r1, 0x17] + mov r9, r2 + ldr r0, _080200A4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + beq _0801FFB2 + ldrb r0, [r6, 0x3] + cmp r0, 0x1 + beq _0801FFB2 + mov r2, r9 + ldrb r0, [r2] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0801FFB2 + bl _080210EC +_0801FFB2: + ldr r3, _080200A8 @ =gUnknown_2023BE4 + ldr r2, _08020094 @ =gUnknown_2023D6E + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + mov r9, r2 + cmp r0, 0x13 + bne _0801FFE6 + ldr r0, _080200AC @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + bne _0801FFE6 + cmp r4, 0 + bne _0801FFE6 + ldr r0, _080200B0 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + cmp r0, 0x9 + bhi _0801FFE6 + bl _080210EC +_0801FFE6: + mov r3, r9 + ldrb r0, [r3] + bl sub_80751D8 + ldr r2, _080200B4 @ =gUnknown_2023DDE + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r2 + ldrh r1, [r1] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08020020 + ldr r0, _080200AC @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + bne _08020020 + cmp r4, 0 + bne _08020020 + ldr r0, _080200B0 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + cmp r0, 0x7 + bhi _08020020 + bl _080210EC +_08020020: + ldr r3, _080200A8 @ =gUnknown_2023BE4 + ldr r2, _08020094 @ =gUnknown_2023D6E + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x28] + mov r9, r2 + mov r8, r3 + cmp r0, 0 + bne _08020046 + ldr r0, _080200B0 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + cmp r0, 0xB + beq _08020046 + cmp r0, 0x1F + beq _08020046 + bl _080210EC +_08020046: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + mov r1, r8 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _08020068 + cmp r7, 0x40 + beq _08020068 + bl _080210EC +_08020068: + ldr r0, _080200B0 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x3] + adds r6, r0, 0 + cmp r1, 0x6 + bls _08020074 + b _080206A2 +_08020074: + ldr r1, _080200B8 @ =gUnknown_825053C + ldrb r0, [r6, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x10 + bne _08020084 + b _08020270 +_08020084: + cmp r0, 0x10 + bhi _080200BC + cmp r0, 0x7 + beq _080200D6 + cmp r0, 0x8 + bne _08020092 + b _0802018C +_08020092: + b _08020570 + .align 2, 0 +_08020094: .4byte gUnknown_2023D6E +_08020098: .4byte gUnknown_2023D6C +_0802009C: .4byte gUnknown_2023FC4 +_080200A0: .4byte gUnknown_2023D6B +_080200A4: .4byte gUnknown_2022B4C +_080200A8: .4byte gUnknown_2023BE4 +_080200AC: .4byte gUnknown_2023DD0 +_080200B0: .4byte gUnknown_2023E82 +_080200B4: .4byte gUnknown_2023DDE +_080200B8: .4byte gUnknown_825053C +_080200BC: + cmp r0, 0x40 + bne _080200C2 + b _080203E4 +_080200C2: + cmp r0, 0x40 + bhi _080200CE + cmp r0, 0x20 + bne _080200CC + b _08020346 +_080200CC: + b _08020570 +_080200CE: + cmp r0, 0x80 + bne _080200D4 + b _08020440 +_080200D4: + b _08020570 +_080200D6: + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2B + beq _08020138 + ldr r0, _08020130 @ =gUnknown_2023BC4 + movs r1, 0 + strb r1, [r0] + ldr r1, _08020134 @ =gUnknown_2023BCC + ldrb r3, [r1] + adds r7, r0, 0 + mov r12, r1 + cmp r3, 0 + beq _08020144 + mov r4, r8 + ldr r0, [r4, 0x50] + movs r1, 0x70 + ands r0, r1 + cmp r0, 0 + bne _08020144 + adds r1, r7, 0 + mov r6, r8 + adds r6, 0x50 + movs r5, 0x58 + movs r4, 0x70 +_08020110: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r3 + bcs _08020144 + ldrb r0, [r7] + muls r0, r5 + adds r0, r6 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _08020110 + b _08020144 + .align 2, 0 +_08020130: .4byte gUnknown_2023BC4 +_08020134: .4byte gUnknown_2023BCC +_08020138: + ldr r0, _08020184 @ =gUnknown_2023BC4 + ldr r2, _08020188 @ =gUnknown_2023BCC + ldrb r1, [r2] + strb r1, [r0] + adds r7, r0, 0 + mov r12, r2 +_08020144: + mov r0, r9 + ldrb r2, [r0] + movs r0, 0x58 + adds r1, r2, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802015C + b _08020570 +_0802015C: + ldrb r0, [r7] + mov r3, r12 + ldrb r3, [r3] + cmp r0, r3 + beq _08020168 + b _08020570 +_08020168: + mov r4, r8 + adds r0, r1, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x48 + bne _08020176 + b _08020570 +_08020176: + cmp r0, 0xF + bne _0802017C + b _08020570 +_0802017C: + adds r0, r2, 0 + bl sub_80172E8 + b _08020560 + .align 2, 0 +_08020184: .4byte gUnknown_2023BC4 +_08020188: .4byte gUnknown_2023BCC +_0802018C: + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + add r0, r8 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x11 + bne _080201E4 + cmp r4, 0x1 + beq _080201A6 + cmp r5, 0x80 + bne _080201E4 +_080201A6: + ldr r0, _080201D4 @ =gUnknown_2023D6A + strb r1, [r0] + mov r3, r9 + ldrb r0, [r3] + movs r1, 0x11 + bl sub_80C71D0 + ldr r4, _080201D8 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _080201DC @ =gUnknown_81D9438 +_080201C0: + str r0, [r4] + ldr r2, _080201E0 @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _080201D2 + b _08020484 +_080201D2: + b _080204A8 + .align 2, 0 +_080201D4: .4byte gUnknown_2023D6A +_080201D8: .4byte gUnknown_2023D74 +_080201DC: .4byte gUnknown_81D9438 +_080201E0: .4byte gUnknown_2023DD0 +_080201E4: + mov r1, r9 + ldrb r0, [r1] + movs r1, 0x58 + muls r0, r1 + add r0, r8 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r1, 0x3 + beq _08020208 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08020208 + cmp r1, 0x8 + beq _08020208 + cmp r0, 0x8 + bne _08020222 +_08020208: + ldr r0, _0802026C @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _08020222 + cmp r4, 0x1 + bne _0802021C + b _080204E8 +_0802021C: + cmp r5, 0x80 + bne _08020222 + b _080204E8 +_08020222: + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x58 + muls r1, r0 + mov r4, r8 + adds r3, r1, r4 + adds r0, r3, 0 + adds r0, 0x21 + ldrb r4, [r0] + cmp r4, 0x3 + bne _0802023A + b _08020570 +_0802023A: + adds r0, 0x1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _08020244 + b _08020570 +_08020244: + cmp r4, 0x8 + bne _0802024A + b _08020570 +_0802024A: + cmp r0, 0x8 + bne _08020250 + b _08020570 +_08020250: + mov r0, r8 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802025E + b _08020570 +_0802025E: + adds r0, r3, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x11 + bne _0802026A + b _08020570 +_0802026A: + b _08020560 + .align 2, 0 +_0802026C: .4byte gUnknown_2023DD0 +_08020270: + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + add r0, r8 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x29 + bne _080202B4 + cmp r4, 0x1 + beq _0802028A + cmp r5, 0x80 + bne _080202B4 +_0802028A: + ldr r0, _080202A8 @ =gUnknown_2023D6A + strb r1, [r0] + mov r3, r9 + ldrb r0, [r3] + movs r1, 0x29 + bl sub_80C71D0 + ldr r4, _080202AC @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _080202B0 @ =gUnknown_81D9420 + b _080201C0 + .align 2, 0 +_080202A8: .4byte gUnknown_2023D6A +_080202AC: .4byte gUnknown_2023D74 +_080202B0: .4byte gUnknown_81D9420 +_080202B4: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + mov r2, r8 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xA + beq _080202D4 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xA + bne _08020304 +_080202D4: + ldr r0, _080202F8 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _08020304 + cmp r4, 0x1 + beq _080202EA + cmp r5, 0x80 + bne _08020304 +_080202EA: + ldr r4, _080202FC @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020300 @ =gUnknown_81D9420 + b _080204F4 + .align 2, 0 +_080202F8: .4byte gUnknown_2023DD0 +_080202FC: .4byte gUnknown_2023D74 +_08020300: .4byte gUnknown_81D9420 +_08020304: + mov r3, r9 + ldrb r0, [r3] + movs r1, 0x58 + adds r2, r0, 0 + muls r2, r1 + mov r4, r8 + adds r1, r2, r4 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xA + bne _0802031E + b _08020570 +_0802031E: + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xA + bne _0802032A + b _08020570 +_0802032A: + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x29 + bne _08020336 + b _08020570 +_08020336: + mov r0, r8 + adds r0, 0x4C + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _08020344 + b _08020570 +_08020344: + b _08020560 +_08020346: + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08020382 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _08020382 + ldr r0, _080203D8 @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08020382 + movs r1, 0 + str r1, [sp, 0x4] +_08020382: + ldr r4, _080203DC @ =gUnknown_2023BE4 + ldr r0, _080203E0 @ =gUnknown_2023D6E + ldrb r3, [r0] + movs r0, 0x58 + adds r2, r3, 0 + muls r2, r0 + adds r1, r2, r4 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xF + bne _0802039C + b _08020570 +_0802039C: + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xF + bne _080203A8 + b _08020570 +_080203A8: + adds r0, r4, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _080203B6 + b _08020570 +_080203B6: + ldr r2, [sp, 0x4] + cmp r2, 0 + bne _080203BE + b _08020570 +_080203BE: + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x28 + bne _080203CA + b _08020570 +_080203CA: + adds r0, r3, 0 + bl sub_80172E8 + movs r3, 0x1 + mov r10, r3 + b _08020570 + .align 2, 0 +_080203D8: .4byte gUnknown_2023F1C +_080203DC: .4byte gUnknown_2023BE4 +_080203E0: .4byte gUnknown_2023D6E +_080203E4: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + mov r2, r8 + adds r0, r1, r2 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0x7 + bne _0802042C + cmp r4, 0x1 + beq _08020402 + cmp r5, 0x80 + beq _08020402 + b _08020570 +_08020402: + ldr r0, _08020420 @ =gUnknown_2023D6A + strb r2, [r0] + mov r3, r9 + ldrb r0, [r3] + movs r1, 0x7 + bl sub_80C71D0 + ldr r4, _08020424 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020428 @ =gUnknown_81D942C + b _080201C0 + .align 2, 0 +_08020420: .4byte gUnknown_2023D6A +_08020424: .4byte gUnknown_2023D74 +_08020428: .4byte gUnknown_81D942C +_0802042C: + mov r0, r8 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802043A + b _08020570 +_0802043A: + movs r4, 0x1 + mov r10, r4 + b _08020570 +_08020440: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + add r0, r8 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x11 + bne _080204AE + cmp r4, 0x1 + beq _0802045A + cmp r5, 0x80 + bne _080204AE +_0802045A: + ldr r0, _08020494 @ =gUnknown_2023D6A + strb r1, [r0] + mov r1, r9 + ldrb r0, [r1] + movs r1, 0x11 + bl sub_80C71D0 + ldr r4, _08020498 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _0802049C @ =gUnknown_81D9438 + str r0, [r4] + ldr r2, _080204A0 @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _080204A8 +_08020484: + movs r0, 0x1 + strb r0, [r6, 0x5] + ldr r0, _080204A4 @ =0xffffdfff + ands r1, r0 + str r1, [r2] + bl _0802110A + .align 2, 0 +_08020494: .4byte gUnknown_2023D6A +_08020498: .4byte gUnknown_2023D74 +_0802049C: .4byte gUnknown_81D9438 +_080204A0: .4byte gUnknown_2023DD0 +_080204A4: .4byte 0xffffdfff +_080204A8: + strb r0, [r6, 0x5] + bl _0802110A +_080204AE: + mov r2, r9 + ldrb r0, [r2] + movs r1, 0x58 + muls r0, r1 + add r0, r8 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r1, 0x3 + beq _080204D2 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x3 + beq _080204D2 + cmp r1, 0x8 + beq _080204D2 + cmp r0, 0x8 + bne _08020510 +_080204D2: + ldr r0, _08020500 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _08020510 + cmp r4, 0x1 + beq _080204E8 + cmp r5, 0x80 + bne _08020510 +_080204E8: + ldr r4, _08020504 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020508 @ =gUnknown_81D9438 +_080204F4: + str r0, [r4] + ldr r1, _0802050C @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + bl _0802110A + .align 2, 0 +_08020500: .4byte gUnknown_2023DD0 +_08020504: .4byte gUnknown_2023D74 +_08020508: .4byte gUnknown_81D9438 +_0802050C: .4byte gUnknown_2023E82 +_08020510: + mov r3, r9 + ldrb r0, [r3] + movs r6, 0x58 + muls r0, r6 + mov r2, r8 + adds r2, 0x4C + adds r5, r0, r2 + ldr r4, [r5] + cmp r4, 0 + bne _08020570 + mov r3, r8 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r3, [r0] + cmp r3, 0x3 + beq _08020566 + adds r0, 0x1 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08020566 + cmp r3, 0x8 + beq _08020566 + cmp r0, 0x8 + beq _08020566 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x11 + beq _08020570 + mov r4, r9 + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r6 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x9 + negs r2, r2 + ands r0, r2 + str r0, [r1] +_08020560: + movs r0, 0x1 + mov r10, r0 + b _08020570 +_08020566: + ldr r0, _080205B4 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] +_08020570: + mov r1, r10 + cmp r1, 0x1 + beq _08020578 + b _08020694 +_08020578: + ldr r0, _080205B8 @ =gUnknown_2023D74 + ldr r0, [r0] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _080205BC @ =gUnknown_825053C + ldr r0, _080205C0 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + cmp r3, 0x7 + bne _080205CC + bl sub_8044EC8 + ldr r2, _080205C4 @ =gUnknown_2023BE4 + ldr r1, _080205C8 @ =gUnknown_2023D6E + ldrb r3, [r1] + movs r1, 0x58 + muls r3, r1 + adds r2, 0x4C + adds r3, r2 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x2 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + b _080205E0 + .align 2, 0 +_080205B4: .4byte gUnknown_2023DCC +_080205B8: .4byte gUnknown_2023D74 +_080205BC: .4byte gUnknown_825053C +_080205C0: .4byte gUnknown_2023E82 +_080205C4: .4byte gUnknown_2023BE4 +_080205C8: .4byte gUnknown_2023D6E +_080205CC: + ldr r2, _08020630 @ =gUnknown_2023BE4 + ldr r0, _08020634 @ =gUnknown_2023D6E + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r2, 0x4C + adds r1, r2 + ldr r0, [r1] + orrs r0, r3 + str r0, [r1] +_080205E0: + ldr r2, _08020638 @ =gUnknown_2023D74 + ldr r1, _0802063C @ =gUnknown_825062C + ldr r5, _08020640 @ =gUnknown_2023E82 + ldrb r0, [r5, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r4, _08020644 @ =gUnknown_2023BC4 + ldr r1, _08020634 @ =gUnknown_2023D6E + ldrb r0, [r1] + strb r0, [r4] + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + ldr r1, _08020648 @ =gUnknown_2023C30 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + ldr r2, _0802064C @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _08020654 + movs r0, 0x1 + strb r0, [r5, 0x5] + ldr r0, _08020650 @ =0xffffdfff + ands r1, r0 + str r1, [r2] + b _08020656 + .align 2, 0 +_08020630: .4byte gUnknown_2023BE4 +_08020634: .4byte gUnknown_2023D6E +_08020638: .4byte gUnknown_2023D74 +_0802063C: .4byte gUnknown_825062C +_08020640: .4byte gUnknown_2023E82 +_08020644: .4byte gUnknown_2023BC4 +_08020648: .4byte gUnknown_2023C30 +_0802064C: .4byte gUnknown_2023DD0 +_08020650: .4byte 0xffffdfff +_08020654: + strb r0, [r5, 0x5] +_08020656: + ldr r0, _08020688 @ =gUnknown_2023E82 + ldrb r2, [r0, 0x3] + adds r6, r0, 0 + cmp r2, 0x2 + beq _08020670 + cmp r2, 0x6 + beq _08020670 + cmp r2, 0x5 + beq _08020670 + cmp r2, 0x3 + beq _08020670 + bl _0802110A +_08020670: + ldr r0, _0802068C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xB4 + ldrb r1, [r6, 0x3] + strb r1, [r0] + ldr r2, _08020690 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 7 + bl _08021008 + .align 2, 0 +_08020688: .4byte gUnknown_2023E82 +_0802068C: .4byte gUnknown_2023FE8 +_08020690: .4byte gUnknown_2023DD0 +_08020694: + mov r2, r10 + cmp r2, 0 + beq _0802069E + bl _0802110A +_0802069E: + bl _080210EC +_080206A2: + mov r3, r9 + ldrb r1, [r3] + movs r0, 0x58 + muls r1, r0 + mov r0, r8 + adds r0, 0x50 + adds r1, r0 + ldr r2, _080206DC @ =gUnknown_825053C + ldrb r3, [r6, 0x3] + lsls r0, r3, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080206C6 + bl _080210EC +_080206C6: + subs r0, r3, 0x7 + cmp r0, 0x34 + bls _080206D0 + bl _0802110A +_080206D0: + lsls r0, 2 + ldr r1, _080206E0 @ =_080206E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080206DC: .4byte gUnknown_825053C +_080206E0: .4byte _080206E4 + .align 2, 0 +_080206E4: + .4byte _080207B8 + .4byte _0802082C + .4byte _080209A0 + .4byte _080208B8 + .4byte _08020934 + .4byte _080209D8 + .4byte _08020A20 + .4byte _08020AEC + .4byte _08020B30 + .4byte _08020B30 + .4byte _08020B30 + .4byte _08020B30 + .4byte _08020B30 + .4byte _08020B30 + .4byte _08020B30 + .4byte _08020B74 + .4byte _08020B74 + .4byte _08020B74 + .4byte _08020B74 + .4byte _08020B74 + .4byte _08020B74 + .4byte _08020B74 + .4byte _08020C40 + .4byte _08020C88 + .4byte _08020CA8 + .4byte _08020E78 + .4byte _08020EB4 + .4byte _08020ED0 + .4byte _08020EE8 + .4byte _08020F00 + .4byte _08020F60 + .4byte _08020F78 + .4byte _08020BB8 + .4byte _08020BB8 + .4byte _08020BB8 + .4byte _08020BB8 + .4byte _08020BB8 + .4byte _08020BB8 + .4byte _08020BB8 + .4byte _08020BFC + .4byte _08020BFC + .4byte _08020BFC + .4byte _08020BFC + .4byte _08020BFC + .4byte _08020BFC + .4byte _08020BFC + .4byte _08020FBC + .4byte _08021018 + .4byte _0802110A + .4byte _0802110A + .4byte _0802110A + .4byte _0802110A + .4byte _080210FC +_080207B8: + mov r4, r9 + ldrb r0, [r4] + movs r5, 0x58 + adds r1, r0, 0 + muls r1, r5 + mov r2, r8 + adds r0, r1, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x14 + bne _080207D2 + bl _080210EC +_080207D2: + mov r4, r8 + adds r4, 0x50 + adds r0, r1, r4 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _080207E6 + bl _080210EC +_080207E6: + bl sub_8044EC8 + mov r3, r9 + ldrb r1, [r3] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + adds r1, 0x2 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r4, _08020820 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _08020824 @ =gUnknown_825062C + ldr r0, _08020828 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _08021108 + .align 2, 0 +_08020820: .4byte gUnknown_2023D74 +_08020824: .4byte gUnknown_825062C +_08020828: .4byte gUnknown_2023E82 +_0802082C: + mov r0, r9 + ldrb r2, [r0] + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + add r0, r8 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x27 + bne _08020870 + cmp r4, 0x1 + beq _0802084C + cmp r5, 0x80 + beq _0802084C + bl _080210EC +_0802084C: + ldr r0, _08020864 @ =gUnknown_2023D6A + strb r1, [r0] + mov r1, r9 + ldrb r0, [r1] + movs r1, 0x27 + bl sub_80C71D0 + ldr r1, _08020868 @ =gUnknown_2023D74 + ldr r0, _0802086C @ =gUnknown_81D9452 + str r0, [r1] + bl _0802110A + .align 2, 0 +_08020864: .4byte gUnknown_2023D6A +_08020868: .4byte gUnknown_2023D74 +_0802086C: .4byte gUnknown_81D9452 +_08020870: + adds r0, r2, 0 + bl sub_801FEE8 + ldr r1, _080208AC @ =gUnknown_2023BE2 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bhi _08020886 + bl _080210EC +_08020886: + mov r2, r9 + ldrb r0, [r2] + adds r2, r0, 0 + muls r2, r6 + mov r0, r8 + adds r0, 0x50 + adds r2, r0 + ldr r1, _080208B0 @ =gUnknown_825053C + ldr r0, _080208B4 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2] + bl _080210EC + .align 2, 0 +_080208AC: .4byte gUnknown_2023BE2 +_080208B0: .4byte gUnknown_825053C +_080208B4: .4byte gUnknown_2023E82 +_080208B8: + mov r3, r9 + ldrb r0, [r3] + movs r5, 0x58 + muls r0, r5 + mov r4, r8 + adds r4, 0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r0, 0x70 + ands r0, r1 + cmp r0, 0 + beq _080208D4 + bl _080210EC +_080208D4: + movs r0, 0x80 + lsls r0, 5 + orrs r1, r0 + str r1, [r2] + ldr r1, _08020920 @ =gUnknown_2023DB8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _08020924 @ =gUnknown_2023D4A + ldrh r1, [r1] + strh r1, [r0] + bl sub_8044EC8 + mov r2, r9 + ldrb r1, [r2] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x2 + lsls r1, 4 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r4, _08020928 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _0802092C @ =gUnknown_825062C + ldr r0, _08020930 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _08021108 + .align 2, 0 +_08020920: .4byte gUnknown_2023DB8 +_08020924: .4byte gUnknown_2023D4A +_08020928: .4byte gUnknown_2023D74 +_0802092C: .4byte gUnknown_825062C +_08020930: .4byte gUnknown_2023E82 +_08020934: + ldr r5, _08020984 @ =gUnknown_2023D6B + ldrb r0, [r5] + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _0802096C + ldr r4, _08020988 @ =gUnknown_2023E7E + ldrh r3, [r4] + ldr r2, _0802098C @ =gUnknown_2023BE4 + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + adds r0, r3, r0 + strh r0, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r3, r0 + bls _0802096C + ldr r3, _08020990 @ =0x0000ffff + adds r0, r3, 0 + strh r0, [r4] +_0802096C: + ldr r4, _08020994 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _08020998 @ =gUnknown_825062C + ldr r0, _0802099C @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + b _08021108 + .align 2, 0 +_08020984: .4byte gUnknown_2023D6B +_08020988: .4byte gUnknown_2023E7E +_0802098C: .4byte gUnknown_2023BE4 +_08020990: .4byte 0x0000ffff +_08020994: .4byte gUnknown_2023D74 +_08020998: .4byte gUnknown_825062C +_0802099C: .4byte gUnknown_2023E82 +_080209A0: + mov r4, r9 + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + mov r1, r8 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080209B6 + b _080210EC +_080209B6: + bl sub_8044EC8 + ldr r4, _080209D4 @ =gUnknown_2023E82 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + adds r0, 0x3 + strb r0, [r4, 0x3] + movs r0, 0 + movs r1, 0 + bl sub_801FF20 + b _0802110A + .align 2, 0 +_080209D4: .4byte gUnknown_2023E82 +_080209D8: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r8 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 5 + orrs r0, r1 + str r0, [r2] + ldr r1, _08020A14 @ =gUnknown_2023DB8 + mov r2, r9 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + ldr r1, _08020A18 @ =gUnknown_2023D4A + ldrh r1, [r1] + strh r1, [r0] + ldr r0, _08020A1C @ =gUnknown_2023E8C + ldrb r1, [r2] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1, 0x1] + b _080210EC + .align 2, 0 +_08020A14: .4byte gUnknown_2023DB8 +_08020A18: .4byte gUnknown_2023D4A +_08020A1C: .4byte gUnknown_2023E8C +_08020A20: + mov r3, r9 + ldrb r0, [r3] + movs r6, 0x58 + muls r0, r6 + mov r4, r8 + adds r4, 0x50 + adds r0, r4 + ldr r5, [r0] + movs r0, 0xE0 + lsls r0, 8 + ands r5, r0 + cmp r5, 0 + beq _08020A3C + b _080210EC +_08020A3C: + bl sub_8044EC8 + mov r2, r9 + ldrb r1, [r2] + adds r2, r1, 0 + muls r2, r6 + adds r2, r4 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x3 + lsls r1, 13 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + mov r3, r9 + ldrb r1, [r3] + ldr r2, _08020AD0 @ =gUnknown_2023FE8 + ldr r0, [r2] + lsls r1, 1 + adds r1, r0 + ldr r6, _08020AD4 @ =gUnknown_2023D4A + ldrh r0, [r6] + strb r0, [r1, 0x4] + ldrb r1, [r3] + ldr r0, [r2] + lsls r1, 1 + adds r1, r0 + ldrh r0, [r6] + lsrs r0, 8 + strb r0, [r1, 0x5] + ldrb r1, [r3] + ldr r0, [r2] + adds r1, r0 + ldr r0, _08020AD8 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r1, 0x14] + ldr r4, _08020ADC @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _08020AE0 @ =gUnknown_825062C + ldr r2, _08020AE4 @ =gUnknown_2023E82 + ldrb r0, [r2, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r4] + strb r5, [r2, 0x5] + ldr r3, _08020AE8 @ =gUnknown_83FE664 + ldrh r0, [r3] + ldrh r4, [r6] + cmp r0, r4 + bne _08020AAA + b _0802110A +_08020AAA: + adds r1, r2, 0 + adds r2, r6, 0 +_08020AAE: + ldrb r0, [r1, 0x5] + adds r0, 0x1 + strb r0, [r1, 0x5] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bls _08020ABE + b _0802110A +_08020ABE: + ldrb r0, [r1, 0x5] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + ldrh r4, [r2] + cmp r0, r4 + bne _08020AAE + b _0802110A + .align 2, 0 +_08020AD0: .4byte gUnknown_2023FE8 +_08020AD4: .4byte gUnknown_2023D4A +_08020AD8: .4byte gUnknown_2023D6B +_08020ADC: .4byte gUnknown_2023D74 +_08020AE0: .4byte gUnknown_825062C +_08020AE4: .4byte gUnknown_2023E82 +_08020AE8: .4byte gUnknown_83FE664 +_08020AEC: + ldr r1, _08020B1C @ =gUnknown_2023D50 + ldr r0, _08020B20 @ =gUnknown_2023D54 + ldr r0, [r0] + cmp r0, 0 + bge _08020AF8 + adds r0, 0x3 +_08020AF8: + asrs r0, 2 + str r0, [r1] + cmp r0, 0 + bne _08020B04 + movs r0, 0x1 + str r0, [r1] +_08020B04: + ldr r4, _08020B24 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _08020B28 @ =gUnknown_825062C + ldr r0, _08020B2C @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + b _08021108 + .align 2, 0 +_08020B1C: .4byte gUnknown_2023D50 +_08020B20: .4byte gUnknown_2023D54 +_08020B24: .4byte gUnknown_2023D74 +_08020B28: .4byte gUnknown_825062C +_08020B2C: .4byte gUnknown_2023E82 +_08020B30: + ldrb r1, [r6, 0x3] + adds r1, 0xF2 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x10 + adds r2, r7, 0 + movs r3, 0 + bl sub_8027BFC + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08020B4C + b _080210EC +_08020B4C: + ldr r2, _08020B68 @ =gUnknown_2023FC4 + ldrb r1, [r6, 0x3] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x10] + strb r3, [r2, 0x11] + ldr r4, _08020B6C @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020B70 @ =gUnknown_81D6BD1 + b _08021108 + .align 2, 0 +_08020B68: .4byte gUnknown_2023FC4 +_08020B6C: .4byte gUnknown_2023D74 +_08020B70: .4byte gUnknown_81D6BD1 +_08020B74: + movs r0, 0x70 + negs r0, r0 + ldrb r1, [r6, 0x3] + adds r1, 0xEB + lsls r1, 24 + lsrs r1, 24 + adds r2, r7, 0 + movs r3, 0 + bl sub_8027BFC + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08020B92 + b _080210EC +_08020B92: + ldr r2, _08020BAC @ =gUnknown_2023FC4 + ldrb r1, [r6, 0x3] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x10] + strb r3, [r2, 0x11] + ldr r4, _08020BB0 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020BB4 @ =gUnknown_81D6C62 + b _08021108 + .align 2, 0 +_08020BAC: .4byte gUnknown_2023FC4 +_08020BB0: .4byte gUnknown_2023D74 +_08020BB4: .4byte gUnknown_81D6C62 +_08020BB8: + ldrb r1, [r6, 0x3] + adds r1, 0xDA + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x20 + adds r2, r7, 0 + movs r3, 0 + bl sub_8027BFC + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08020BD4 + b _080210EC +_08020BD4: + ldr r2, _08020BF0 @ =gUnknown_2023FC4 + ldrb r1, [r6, 0x3] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x10] + strb r3, [r2, 0x11] + ldr r4, _08020BF4 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020BF8 @ =gUnknown_81D6BD1 + b _08021108 + .align 2, 0 +_08020BF0: .4byte gUnknown_2023FC4 +_08020BF4: .4byte gUnknown_2023D74 +_08020BF8: .4byte gUnknown_81D6BD1 +_08020BFC: + movs r0, 0x60 + negs r0, r0 + ldrb r1, [r6, 0x3] + adds r1, 0xD3 + lsls r1, 24 + lsrs r1, 24 + adds r2, r7, 0 + movs r3, 0 + bl sub_8027BFC + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08020C1A + b _080210EC +_08020C1A: + ldr r2, _08020C34 @ =gUnknown_2023FC4 + ldrb r1, [r6, 0x3] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x10] + strb r3, [r2, 0x11] + ldr r4, _08020C38 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020C3C @ =gUnknown_81D6C62 + b _08021108 + .align 2, 0 +_08020C34: .4byte gUnknown_2023FC4 +_08020C38: .4byte gUnknown_2023D74 +_08020C3C: .4byte gUnknown_81D6C62 +_08020C40: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r8 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 15 + orrs r0, r1 + str r0, [r2] + ldr r2, _08020C7C @ =gUnknown_2023E0C + mov r3, r9 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x19] + ldr r1, _08020C80 @ =gUnknown_2023DB8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _08020C84 @ =gUnknown_2023D4A + ldrh r1, [r1] + strh r1, [r0] + b _080210EC + .align 2, 0 +_08020C7C: .4byte gUnknown_2023E0C +_08020C80: .4byte gUnknown_2023DB8 +_08020C84: .4byte gUnknown_2023D4A +_08020C88: + ldr r0, _08020CA4 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r8 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 16 +_08020C9E: + orrs r0, r1 + str r0, [r2] + b _080210EC + .align 2, 0 +_08020CA4: .4byte gUnknown_2023D6B +_08020CA8: + ldr r5, _08020D64 @ =gUnknown_2022B4C + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _08020CB8 + b _080210EC +_08020CB8: + ldr r4, _08020D68 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08020CEA + ldr r0, [r5] + ldr r1, _08020D6C @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _08020D26 + ldr r0, _08020D70 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _08020CEA + b _080210EC +_08020CEA: + ldr r0, _08020D64 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08020D6C @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _08020D26 + ldr r0, _08020D70 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _08020D26 + ldr r0, _08020D74 @ =gUnknown_2023F20 + adds r0, 0x29 + adds r0, r6, r0 + ldrb r1, [r0] + ldr r3, _08020D78 @ =gUnknown_825E45C + ldr r2, _08020D7C @ =gUnknown_2023BCE + ldr r0, _08020D68 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08020D26 + b _080210EC +_08020D26: + ldr r2, _08020D80 @ =gUnknown_2023BE4 + ldr r1, _08020D84 @ =gUnknown_2023D6C + ldrb r0, [r1] + movs r3, 0x58 + muls r0, r3 + adds r4, r0, r2 + ldrh r0, [r4, 0x2E] + adds r7, r1, 0 + mov r8, r2 + cmp r0, 0 + beq _08020D94 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x3C + bne _08020D94 + ldr r1, _08020D88 @ =gUnknown_2023D74 + ldr r0, _08020D8C @ =gUnknown_81D948E + str r0, [r1] + ldr r1, _08020D90 @ =gUnknown_2023D6A + ldrb r0, [r7] + muls r0, r3 + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldrb r1, [r1] + bl sub_80C71D0 + b _0802110A + .align 2, 0 +_08020D64: .4byte gUnknown_2022B4C +_08020D68: .4byte gUnknown_2023D6B +_08020D6C: .4byte 0x00000902 +_08020D70: .4byte gUnknown_20386AE +_08020D74: .4byte gUnknown_2023F20 +_08020D78: .4byte gUnknown_825E45C +_08020D7C: .4byte gUnknown_2023BCE +_08020D80: .4byte gUnknown_2023BE4 +_08020D84: .4byte gUnknown_2023D6C +_08020D88: .4byte gUnknown_2023D74 +_08020D8C: .4byte gUnknown_81D948E +_08020D90: .4byte gUnknown_2023D6A +_08020D94: + ldr r4, _08020E60 @ =gUnknown_2023D6B + mov r10, r4 + ldrb r2, [r4] + movs r0, 0x58 + mov r9, r0 + mov r0, r9 + muls r0, r2 + add r0, r8 + ldrh r4, [r0, 0x2E] + cmp r4, 0 + beq _08020DAC + b _080210EC +_08020DAC: + ldrb r0, [r7] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + add r0, r8 + ldrh r3, [r0, 0x2E] + adds r1, r3, 0 + cmp r1, 0xAF + bne _08020DC0 + b _080210EC +_08020DC0: + adds r0, r3, 0 + subs r0, 0x79 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bhi _08020DCE + b _080210EC +_08020DCE: + cmp r1, 0 + bne _08020DD4 + b _080210EC +_08020DD4: + ldr r5, _08020E64 @ =gUnknown_2023FE8 + lsls r0, r2, 1 + adds r0, 0xD0 + ldr r1, [r5] + adds r1, r0 + ldr r2, _08020E68 @ =gUnknown_2023D68 + strh r3, [r1] + strh r3, [r2] + ldrb r0, [r7] + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + add r0, r8 + movs r6, 0 + strh r4, [r0, 0x2E] + ldr r4, _08020E6C @ =gUnknown_2023BC4 + mov r1, r10 + ldrb r0, [r1] + strb r0, [r4] + str r2, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + mov r2, r10 + ldrb r0, [r2] + bl sub_8017248 + ldrb r0, [r7] + strb r0, [r4] + ldrb r0, [r7] + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + mov r1, r8 + adds r1, 0x2E + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldrb r0, [r7] + bl sub_8017248 + ldr r4, _08020E70 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020E74 @ =gUnknown_81D9271 + str r0, [r4] + ldrb r0, [r7] + ldr r1, [r5] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + strb r6, [r0] + ldrb r0, [r7] + ldr r1, [r5] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r6, [r0] + b _0802110A + .align 2, 0 +_08020E60: .4byte gUnknown_2023D6B +_08020E64: .4byte gUnknown_2023FE8 +_08020E68: .4byte gUnknown_2023D68 +_08020E6C: .4byte gUnknown_2023BC4 +_08020E70: .4byte gUnknown_2023D74 +_08020E74: .4byte gUnknown_81D9271 +_08020E78: + ldr r3, _08020EA8 @ =gUnknown_2023D6C + ldrb r1, [r3] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r8 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 19 + orrs r0, r1 + str r0, [r2] + ldr r2, _08020EAC @ =gUnknown_2023E0C + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _08020EB0 @ =gUnknown_2023D6B + ldrb r1, [r1] + strb r1, [r0, 0x14] + b _080210EC + .align 2, 0 +_08020EA8: .4byte gUnknown_2023D6C +_08020EAC: .4byte gUnknown_2023E0C +_08020EB0: .4byte gUnknown_2023D6B +_08020EB4: + ldr r0, _08020ECC @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r8 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 20 + b _08020C9E + .align 2, 0 +_08020ECC: .4byte gUnknown_2023D6C +_08020ED0: + ldr r4, _08020EE0 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020EE4 @ =gUnknown_81D8D55 + b _08021108 + .align 2, 0 +_08020EE0: .4byte gUnknown_2023D74 +_08020EE4: .4byte gUnknown_81D8D55 +_08020EE8: + ldr r4, _08020EF8 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020EFC @ =gUnknown_81D8DF1 + b _08021108 + .align 2, 0 +_08020EF8: .4byte gUnknown_2023D74 +_08020EFC: .4byte gUnknown_81D8DF1 +_08020F00: + ldr r6, _08020F50 @ =gUnknown_2023D6C + ldrb r0, [r6] + movs r2, 0x58 + muls r0, r2 + mov r1, r8 + adds r1, 0x4C + adds r5, r0, r1 + ldr r4, [r5] + movs r0, 0x40 + ands r0, r4 + cmp r0, 0 + bne _08020F1A + b _080210EC +_08020F1A: + movs r0, 0x41 + negs r0, r0 + ands r4, r0 + str r4, [r5] + ldr r4, _08020F54 @ =gUnknown_2023BC4 + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r4] + muls r0, r2 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + ldr r4, _08020F58 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020F5C @ =gUnknown_81D9177 + b _08021108 + .align 2, 0 +_08020F50: .4byte gUnknown_2023D6C +_08020F54: .4byte gUnknown_2023BC4 +_08020F58: .4byte gUnknown_2023D74 +_08020F5C: .4byte gUnknown_81D9177 +_08020F60: + ldr r4, _08020F70 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08020F74 @ =gUnknown_81D8F35 + b _08021108 + .align 2, 0 +_08020F70: .4byte gUnknown_2023D74 +_08020F74: .4byte gUnknown_81D8F35 +_08020F78: + ldr r4, _08020FA8 @ =gUnknown_2023D50 + ldr r0, _08020FAC @ =gUnknown_2023D54 + ldr r0, [r0] + movs r1, 0x3 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _08020F8E + movs r0, 0x1 + str r0, [r4] +_08020F8E: + ldr r4, _08020FB0 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r1, _08020FB4 @ =gUnknown_825062C + ldr r0, _08020FB8 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + b _08021108 + .align 2, 0 +_08020FA8: .4byte gUnknown_2023D50 +_08020FAC: .4byte gUnknown_2023D54 +_08020FB0: .4byte gUnknown_2023D74 +_08020FB4: .4byte gUnknown_825062C +_08020FB8: .4byte gUnknown_2023E82 +_08020FBC: + mov r4, r9 + ldrb r0, [r4] + movs r5, 0x58 + muls r0, r5 + mov r4, r8 + adds r4, 0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r0, 0xC0 + lsls r0, 4 + ands r0, r1 + cmp r0, 0 + beq _08020FD8 + b _080210EC +_08020FD8: + movs r0, 0x80 + lsls r0, 5 + orrs r1, r0 + str r1, [r2] + ldr r1, _08021010 @ =gUnknown_2023DB8 + mov r2, r9 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + ldr r1, _08021014 @ =gUnknown_2023D4A + ldrh r1, [r1] + strh r1, [r0] + bl sub_8044EC8 + mov r3, r9 + ldrb r1, [r3] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + movs r1, 0x1 + ands r1, r0 + adds r1, 0x2 + lsls r1, 10 + ldr r0, [r2] +_08021008: + orrs r0, r1 + str r0, [r2] + b _0802110A + .align 2, 0 +_08021010: .4byte gUnknown_2023DB8 +_08021014: .4byte gUnknown_2023D4A +_08021018: + mov r5, r9 + ldrb r3, [r5] + movs r4, 0x58 + adds r0, r3, 0 + muls r0, r4 + mov r2, r8 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0x3C + bne _08021058 + ldrh r0, [r1, 0x2E] + cmp r0, 0 + beq _080210EC + ldr r0, _0802104C @ =gUnknown_2023D6A + strb r2, [r0] + ldr r1, _08021050 @ =gUnknown_2023D74 + ldr r0, _08021054 @ =gUnknown_81D948E + str r0, [r1] + ldrb r0, [r5] + movs r1, 0x3C + bl sub_80C71D0 + b _0802110A + .align 2, 0 +_0802104C: .4byte gUnknown_2023D6A +_08021050: .4byte gUnknown_2023D74 +_08021054: .4byte gUnknown_81D948E +_08021058: + ldrh r0, [r1, 0x2E] + cmp r0, 0 + beq _080210EC + adds r0, r3, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080210D0 @ =gUnknown_2023D68 + mov r3, r9 + ldrb r0, [r3] + muls r0, r4 + add r0, r8 + ldrh r0, [r0, 0x2E] + strh r0, [r1] + ldrb r0, [r3] + muls r0, r4 + add r0, r8 + movs r5, 0 + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r2, _080210D4 @ =gUnknown_2023F20 + adds r2, 0x29 + adds r2, r6, r2 + ldr r3, _080210D8 @ =gUnknown_825E45C + ldr r1, _080210DC @ =gUnknown_2023BCE + mov r4, r9 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r4, _080210E0 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _080210E4 @ =gUnknown_81D8F86 + str r0, [r4] + mov r1, r9 + ldrb r0, [r1] + ldr r2, _080210E8 @ =gUnknown_2023FE8 + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + strb r5, [r0] + mov r3, r9 + ldrb r0, [r3] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r5, [r0] + b _0802110A + .align 2, 0 +_080210D0: .4byte gUnknown_2023D68 +_080210D4: .4byte gUnknown_2023F20 +_080210D8: .4byte gUnknown_825E45C +_080210DC: .4byte gUnknown_2023BCE +_080210E0: .4byte gUnknown_2023D74 +_080210E4: .4byte gUnknown_81D8F86 +_080210E8: .4byte gUnknown_2023FE8 +_080210EC: + ldr r1, _080210F8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + b _0802110A + .align 2, 0 +_080210F8: .4byte gUnknown_2023D74 +_080210FC: + ldr r4, _0802111C @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08021120 @ =gUnknown_81D8FEB +_08021108: + str r0, [r4] +_0802110A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802111C: .4byte gUnknown_2023D74 +_08021120: .4byte gUnknown_81D8FEB + thumb_func_end sub_801FF20 + + thumb_func_start sub_8021124 +sub_8021124: @ 8021124 + push {r4,lr} + ldr r2, _08021150 @ =gUnknown_2023BE4 + ldr r0, _08021154 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x20 + bne _08021160 + ldr r2, _08021158 @ =gUnknown_8250C04 + ldr r0, _0802115C @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + lsls r4, r0, 1 + b _08021170 + .align 2, 0 +_08021150: .4byte gUnknown_2023BE4 +_08021154: .4byte gUnknown_2023D6B +_08021158: .4byte gUnknown_8250C04 +_0802115C: .4byte gUnknown_2023D4A +_08021160: + ldr r2, _08021190 @ =gUnknown_8250C04 + ldr r0, _08021194 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r4, [r0, 0x5] +_08021170: + ldr r3, _08021198 @ =gUnknown_2023E82 + ldrb r2, [r3, 0x3] + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _080211A0 + ldr r0, _0802119C @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _080211A0 + movs r0, 0x7F + ands r0, r2 + strb r0, [r3, 0x3] + b _080211CE + .align 2, 0 +_08021190: .4byte gUnknown_8250C04 +_08021194: .4byte gUnknown_2023D4A +_08021198: .4byte gUnknown_2023E82 +_0802119C: .4byte gUnknown_2023DCC +_080211A0: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bhi _080211EA + ldr r0, _080211D8 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _080211EA + ldr r0, _080211DC @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _080211EA + cmp r4, 0x63 + bls _080211E0 +_080211CE: + movs r0, 0 + movs r1, 0x80 + bl sub_801FF20 + b _080211F2 + .align 2, 0 +_080211D8: .4byte gUnknown_2023E82 +_080211DC: .4byte gUnknown_2023DCC +_080211E0: + movs r0, 0 + movs r1, 0 + bl sub_801FF20 + b _080211F2 +_080211EA: + ldr r1, _08021204 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080211F2: + ldr r0, _08021208 @ =gUnknown_2023E82 + movs r1, 0 + strb r1, [r0, 0x3] + ldr r0, _0802120C @ =gUnknown_2023FC4 + strb r1, [r0, 0x16] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08021204: .4byte gUnknown_2023D74 +_08021208: .4byte gUnknown_2023E82 +_0802120C: .4byte gUnknown_2023FC4 + thumb_func_end sub_8021124 + + thumb_func_start sub_8021210 +sub_8021210: @ 8021210 + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_801FF20 + pop {r0} + bx r0 + thumb_func_end sub_8021210 + + thumb_func_start sub_8021220 +sub_8021220: @ 8021220 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_801FF20 + pop {r0} + bx r0 + thumb_func_end sub_8021220 + + thumb_func_start sub_8021230 +sub_8021230: @ 8021230 + push {lr} + ldr r0, _08021254 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r2, _08021258 @ =gUnknown_2023BC4 + strb r0, [r2] + ldr r3, _0802125C @ =gUnknown_2023E82 + ldrb r0, [r3, 0x3] + cmp r0, 0x6 + bhi _08021264 + ldr r1, _08021260 @ =gUnknown_2023BE4 + ldrb r2, [r2] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x4C + b _0802126E + .align 2, 0 +_08021254: .4byte gUnknown_2023D74 +_08021258: .4byte gUnknown_2023BC4 +_0802125C: .4byte gUnknown_2023E82 +_08021260: .4byte gUnknown_2023BE4 +_08021264: + ldr r1, _08021298 @ =gUnknown_2023BE4 + ldrb r2, [r2] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x50 +_0802126E: + adds r2, r1 + ldr r1, _0802129C @ =gUnknown_825053C + ldrb r0, [r3, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + ldr r0, _080212A0 @ =gUnknown_2023E82 + movs r2, 0 + strb r2, [r0, 0x3] + ldr r1, _080212A4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + ldr r0, _080212A8 @ =gUnknown_2023FC4 + strb r2, [r0, 0x16] + pop {r0} + bx r0 + .align 2, 0 +_08021298: .4byte gUnknown_2023BE4 +_0802129C: .4byte gUnknown_825053C +_080212A0: .4byte gUnknown_2023E82 +_080212A4: .4byte gUnknown_2023D74 +_080212A8: .4byte gUnknown_2023FC4 + thumb_func_end sub_8021230 + + thumb_func_start sub_80212AC +sub_80212AC: @ 80212AC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r0, _08021318 @ =gUnknown_2023D74 + ldr r2, [r0] + ldrb r1, [r2, 0x2] + adds r6, r0, 0 + cmp r1, 0 + beq _08021330 + ldrb r0, [r2, 0x1] + bl sub_8016E24 + ldr r5, _0802131C @ =gUnknown_2023BC4 + strb r0, [r5] + ldr r2, _08021320 @ =gUnknown_2023DD0 + ldr r1, _08021324 @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + ands r0, r1 + cmp r0, 0 + bne _080212E4 + b _0802158C +_080212E4: + ldr r1, [r6] + ldrb r4, [r1, 0x3] + ldrb r0, [r1, 0x4] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r1, 0x5] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r1, 0x6] + lsls r0, 24 + orrs r4, r0 + bl sub_801756C + str r4, [r6] + ldrb r0, [r5] + bl sub_80751C4 + ldr r1, _08021328 @ =gUnknown_2023DDE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r2, [r0] + ldr r1, _0802132C @ =0x0000fdff + ands r1, r2 + strh r1, [r0] + b _08021592 + .align 2, 0 +_08021318: .4byte gUnknown_2023D74 +_0802131C: .4byte gUnknown_2023BC4 +_08021320: .4byte gUnknown_2023DD0 +_08021324: .4byte gUnknown_825E45C +_08021328: .4byte gUnknown_2023DDE +_0802132C: .4byte 0x0000fdff +_08021330: + ldrb r0, [r2, 0x1] + cmp r0, 0x1 + bne _08021358 + ldr r1, _08021348 @ =gUnknown_2023BC4 + ldr r0, _0802134C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _08021350 @ =gUnknown_2023D6C + ldrb r0, [r0] + mov r9, r0 + ldr r4, _08021354 @ =gUnknown_81D8674 + b _08021368 + .align 2, 0 +_08021348: .4byte gUnknown_2023BC4 +_0802134C: .4byte gUnknown_2023D6B +_08021350: .4byte gUnknown_2023D6C +_08021354: .4byte gUnknown_81D8674 +_08021358: + ldr r1, _080213D0 @ =gUnknown_2023BC4 + ldr r0, _080213D4 @ =gUnknown_2023D6C + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080213D8 @ =gUnknown_2023D6B + ldrb r0, [r0] + mov r9, r0 + ldr r4, _080213DC @ =gUnknown_81D8684 +_08021368: + mov r8, r1 + ldr r0, _080213E0 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _080213E4 @ =gUnknown_825E45C + mov r7, r8 + ldrb r3, [r7] + lsls r0, r3, 2 + adds r0, r2 + ldr r2, [r0] + ands r1, r2 + cmp r1, 0 + beq _08021382 + b _0802158C +_08021382: + ldr r1, _080213E8 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r3 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08021392 + b _0802158C +_08021392: + ldr r5, _080213EC @ =gUnknown_2023DD0 + lsls r1, r2, 28 + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] + ldr r0, [r6] + adds r0, 0x7 + bl sub_8017520 + str r4, [r6] + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080213F4 + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 15 + orrs r0, r1 + str r0, [r5] + ldr r1, _080213F0 @ =gUnknown_3004F90 + ldrb r0, [r1] + cmp r0, 0xFE + bhi _080213C8 + adds r0, 0x1 + strb r0, [r1] +_080213C8: + ldrb r0, [r7] + bl sub_802E228 + b _0802142C + .align 2, 0 +_080213D0: .4byte gUnknown_2023BC4 +_080213D4: .4byte gUnknown_2023D6C +_080213D8: .4byte gUnknown_2023D6B +_080213DC: .4byte gUnknown_81D8684 +_080213E0: .4byte gUnknown_2023D70 +_080213E4: .4byte gUnknown_825E45C +_080213E8: .4byte gUnknown_2023BE4 +_080213EC: .4byte gUnknown_2023DD0 +_080213F0: .4byte gUnknown_3004F90 +_080213F4: + ldr r4, _0802154C @ =gUnknown_3004F90 + ldrb r0, [r4, 0x1] + cmp r0, 0xFE + bhi _08021400 + adds r0, 0x1 + strb r0, [r4, 0x1] +_08021400: + ldr r1, _08021550 @ =gUnknown_2023BCE + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08021554 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + strh r0, [r4, 0x20] + ldr r0, _08021558 @ =gUnknown_2023FE8 + ldr r0, [r0] + movs r3, 0xC1 + lsls r3, 1 + adds r1, r0, r3 + ldr r0, _0802155C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r1] +_0802142C: + ldr r2, _08021560 @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802146A + ldr r6, _08021564 @ =gUnknown_2023BE4 + ldr r0, _0802155C @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r5, 0x58 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0802146A + movs r0, 0x41 + negs r0, r0 + ands r1, r0 + str r1, [r2] + ldr r4, _08021568 @ =gUnknown_2023D74 + ldr r0, [r4] + bl sub_8017520 + ldr r1, _0802156C @ =gUnknown_2023D50 + mov r0, r9 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x28] + str r0, [r1] + ldr r0, _08021570 @ =gUnknown_81D8C6C + str r0, [r4] +_0802146A: + ldr r1, _08021574 @ =gUnknown_2023DFC + ldr r6, _08021578 @ =gUnknown_2023D6C + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 7 + ands r0, r1 + cmp r0, 0 + bne _08021482 + b _08021592 +_08021482: + ldr r0, _08021560 @ =gUnknown_2023DD0 + ldr r5, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r5, r0 + cmp r5, 0 + beq _08021492 + b _08021592 +_08021492: + ldr r0, _0802155C @ =gUnknown_2023D6B + mov r8, r0 + ldrb r0, [r0] + bl sub_80751C4 + adds r4, r0, 0 + ldrb r0, [r6] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _08021592 + ldr r1, _08021564 @ =gUnknown_2023BE4 + mov r9, r1 + mov r2, r8 + ldrb r1, [r2] + movs r7, 0x58 + adds r2, r1, 0 + muls r2, r7 + mov r3, r9 + adds r0, r2, r3 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08021592 + ldr r0, _0802157C @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xA5 + beq _08021592 + ldr r0, _08021558 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, r1, r0 + adds r0, 0x80 + ldrb r4, [r0] + adds r0, r4, r2 + mov r6, r9 + adds r6, 0x24 + adds r0, r6 + strb r5, [r0] + ldr r5, _08021568 @ =gUnknown_2023D74 + ldr r0, [r5] + bl sub_8017520 + ldr r0, _08021580 @ =gUnknown_81D8FA3 + str r0, [r5] + ldr r5, _08021584 @ =gUnknown_2023BC4 + mov r1, r8 + ldrb r0, [r1] + strb r0, [r5] + adds r1, r4, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r5] + muls r0, r7 + adds r0, r6 + adds r0, r4 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + ldrb r0, [r5] + bl sub_8017248 + ldr r1, _08021588 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + lsls r4, 1 + mov r2, r8 + ldrb r0, [r2] + muls r0, r7 + adds r0, r4, r0 + mov r2, r9 + adds r2, 0xC + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x2] + mov r3, r8 + ldrb r0, [r3] + muls r0, r7 + adds r4, r0 + adds r4, r2 + ldrh r0, [r4] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + b _08021592 + .align 2, 0 +_0802154C: .4byte gUnknown_3004F90 +_08021550: .4byte gUnknown_2023BCE +_08021554: .4byte gUnknown_202402C +_08021558: .4byte gUnknown_2023FE8 +_0802155C: .4byte gUnknown_2023D6B +_08021560: .4byte gUnknown_2023DD0 +_08021564: .4byte gUnknown_2023BE4 +_08021568: .4byte gUnknown_2023D74 +_0802156C: .4byte gUnknown_2023D50 +_08021570: .4byte gUnknown_81D8C6C +_08021574: .4byte gUnknown_2023DFC +_08021578: .4byte gUnknown_2023D6C +_0802157C: .4byte gUnknown_2023D4A +_08021580: .4byte gUnknown_81D8FA3 +_08021584: .4byte gUnknown_2023BC4 +_08021588: .4byte gUnknown_2022AB8 +_0802158C: + ldr r0, [r6] + adds r0, 0x7 + str r0, [r6] +_08021592: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80212AC + + thumb_func_start sub_80215A0 +sub_80215A0: @ 80215A0 + push {r4,r5,lr} + ldr r0, _080215D0 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _080215CA + ldr r5, _080215D4 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _080215D8 @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + bl sub_800E134 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_080215CA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080215D0: .4byte gUnknown_2023BC8 +_080215D4: .4byte gUnknown_2023D74 +_080215D8: .4byte gUnknown_2023BC4 + thumb_func_end sub_80215A0 + + thumb_func_start sub_80215DC +sub_80215DC: @ 80215DC + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _08021630 @ =gUnknown_2023BC8 + ldr r6, [r0] + cmp r6, 0 + bne _08021628 + ldr r5, _08021634 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _08021638 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r1, _0802163C @ =gUnknown_2023BE4 + ldrb r0, [r4] + movs r2, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + str r6, [r0] + ldrb r0, [r4] + muls r0, r2 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + bl sub_8012BC8 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_08021628: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08021630: .4byte gUnknown_2023BC8 +_08021634: .4byte gUnknown_2023D74 +_08021638: .4byte gUnknown_2023BC4 +_0802163C: .4byte gUnknown_2023BE4 + thumb_func_end sub_80215DC + + thumb_func_start sub_8021640 +sub_8021640: @ 8021640 + push {r4,r5,lr} + ldr r5, _0802169C @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + ldrb r4, [r2, 0x2] + ldrb r1, [r2, 0x3] + lsls r1, 8 + adds r4, r1 + ldrb r1, [r2, 0x4] + lsls r1, 16 + adds r4, r1 + ldrb r1, [r2, 0x5] + lsls r1, 24 + adds r4, r1 + ldrb r3, [r2, 0x6] + ldrb r1, [r2, 0x7] + lsls r1, 8 + adds r3, r1 + ldrb r1, [r2, 0x8] + lsls r1, 16 + adds r3, r1 + ldrb r1, [r2, 0x9] + lsls r1, 24 + adds r3, r1 + ldr r2, _080216A0 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _080216A4 + adds r0, r1, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _080216A4 + str r3, [r5] + b _080216AC + .align 2, 0 +_0802169C: .4byte gUnknown_2023D74 +_080216A0: .4byte gUnknown_2023BE4 +_080216A4: + ldr r1, _080216B4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] +_080216AC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080216B4: .4byte gUnknown_2023D74 + thumb_func_end sub_8021640 + + thumb_func_start sub_80216B8 +sub_80216B8: @ 80216B8 + push {r4,r5,lr} + ldr r5, _08021714 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + ldrb r4, [r2, 0x2] + ldrb r1, [r2, 0x3] + lsls r1, 8 + adds r4, r1 + ldrb r1, [r2, 0x4] + lsls r1, 16 + adds r4, r1 + ldrb r1, [r2, 0x5] + lsls r1, 24 + adds r4, r1 + ldrb r3, [r2, 0x6] + ldrb r1, [r2, 0x7] + lsls r1, 8 + adds r3, r1 + ldrb r1, [r2, 0x8] + lsls r1, 16 + adds r3, r1 + ldrb r1, [r2, 0x9] + lsls r1, 24 + adds r3, r1 + ldr r2, _08021718 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r0 + adds r0, r2, 0 + adds r0, 0x50 + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _0802171C + adds r0, r1, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0802171C + str r3, [r5] + b _08021724 + .align 2, 0 +_08021714: .4byte gUnknown_2023D74 +_08021718: .4byte gUnknown_2023BE4 +_0802171C: + ldr r1, _0802172C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] +_08021724: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802172C: .4byte gUnknown_2023D74 + thumb_func_end sub_80216B8 + + thumb_func_start sub_8021730 +sub_8021730: @ 8021730 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r6, _08021784 @ =gUnknown_2023D74 + ldr r2, [r6] + ldrb r5, [r2, 0x2] + mov r8, r5 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + adds r7, r1, r0 + ldrb r0, [r2, 0x1] + cmp r0, 0x8 + bne _08021790 + ldr r0, _08021788 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0xD + adds r2, r5, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08021804 + ldr r1, _0802178C @ =gUnknown_2023D6A + strb r5, [r1] + str r7, [r6] + subs r4, 0x1 + lsls r0, r4, 24 + lsrs r0, 24 + ldrb r1, [r1] + b _080217EC + .align 2, 0 +_08021784: .4byte gUnknown_2023D74 +_08021788: .4byte gUnknown_2023D6B +_0802178C: .4byte gUnknown_2023D6A +_08021790: + cmp r0, 0x9 + bne _080217C8 + ldr r0, _080217C0 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0xC + adds r2, r5, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08021804 + ldr r1, _080217C4 @ =gUnknown_2023D6A + strb r5, [r1] + str r7, [r6] + subs r4, 0x1 + lsls r0, r4, 24 + lsrs r0, 24 + ldrb r1, [r1] + b _080217EC + .align 2, 0 +_080217C0: .4byte gUnknown_2023D6B +_080217C4: .4byte gUnknown_2023D6A +_080217C8: + ldrb r0, [r2, 0x1] + bl sub_8016E24 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080217F8 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, r8 + bne _08021804 + ldr r0, _080217FC @ =gUnknown_2023D6A + strb r1, [r0] + str r7, [r6] + ldrb r1, [r0] + adds r0, r4, 0 +_080217EC: + bl sub_80C71D0 + ldr r0, _08021800 @ =gUnknown_2023FC4 + strb r4, [r0, 0x15] + b _0802180A + .align 2, 0 +_080217F8: .4byte gUnknown_2023BE4 +_080217FC: .4byte gUnknown_2023D6A +_08021800: .4byte gUnknown_2023FC4 +_08021804: + ldr r0, [r6] + adds r0, 0x7 + str r0, [r6] +_0802180A: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8021730 + + thumb_func_start sub_8021818 +sub_8021818: @ 8021818 + push {r4-r6,lr} + ldr r0, _08021830 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r4, [r0, 0x1] + cmp r4, 0x1 + bne _08021838 + ldr r0, _08021834 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751D8 + b _08021842 + .align 2, 0 +_08021830: .4byte gUnknown_2023D74 +_08021834: .4byte gUnknown_2023D6B +_08021838: + ldr r0, _08021878 @ =gUnknown_2023D6C + ldrb r0, [r0] + bl sub_80751D8 + movs r4, 0x1 +_08021842: + ands r4, r0 + ldr r6, _0802187C @ =gUnknown_2023D74 + ldr r3, [r6] + ldrb r2, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r1, [r3, 0x4] + ldrb r0, [r3, 0x5] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x6] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x7] + lsls r0, 24 + adds r5, r1, r0 + ldr r1, _08021880 @ =gUnknown_2023DDE + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + ands r2, r0 + cmp r2, 0 + beq _08021884 + str r5, [r6] + b _0802188A + .align 2, 0 +_08021878: .4byte gUnknown_2023D6C +_0802187C: .4byte gUnknown_2023D74 +_08021880: .4byte gUnknown_2023DDE +_08021884: + adds r0, r3, 0 + adds r0, 0x8 + str r0, [r6] +_0802188A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8021818 + + thumb_func_start sub_8021890 +sub_8021890: @ 8021890 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _080218C4 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080218C8 @ =gUnknown_2023BE4 + ldr r3, [r4] + movs r1, 0x58 + muls r0, r1 + ldrb r1, [r3, 0x3] + adds r0, r1 + adds r2, 0x18 + adds r0, r2 + ldrb r2, [r0] + ldrb r0, [r3, 0x2] + cmp r0, 0x5 + bhi _0802194E + lsls r0, 2 + ldr r1, _080218CC @ =_080218D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080218C4: .4byte gUnknown_2023D74 +_080218C8: .4byte gUnknown_2023BE4 +_080218CC: .4byte _080218D0 + .align 2, 0 +_080218D0: + .4byte _080218E8 + .4byte _080218F8 + .4byte _08021908 + .4byte _08021918 + .4byte _08021928 + .4byte _0802193C +_080218E8: + ldr r0, _080218F4 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + bne _0802194E + b _08021948 + .align 2, 0 +_080218F4: .4byte gUnknown_2023D74 +_080218F8: + ldr r0, _08021904 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + beq _0802194E + b _08021948 + .align 2, 0 +_08021904: .4byte gUnknown_2023D74 +_08021908: + ldr r0, _08021914 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + bls _0802194E + b _08021948 + .align 2, 0 +_08021914: .4byte gUnknown_2023D74 +_08021918: + ldr r0, _08021924 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + bcs _0802194E + b _08021948 + .align 2, 0 +_08021924: .4byte gUnknown_2023D74 +_08021928: + ldr r0, _08021938 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + ands r2, r0 + cmp r2, 0 + beq _0802194E + b _08021948 + .align 2, 0 +_08021938: .4byte gUnknown_2023D74 +_0802193C: + ldr r0, _08021970 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + ands r2, r0 + cmp r2, 0 + bne _0802194E +_08021948: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0802194E: + cmp r5, 0 + beq _08021974 + ldr r3, _08021970 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + adds r1, r0 + str r1, [r3] + b _0802197C + .align 2, 0 +_08021970: .4byte gUnknown_2023D74 +_08021974: + ldr r1, _08021984 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x9 + str r0, [r1] +_0802197C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08021984: .4byte gUnknown_2023D74 + thumb_func_end sub_8021890 + + thumb_func_start sub_8021988 +sub_8021988: @ 8021988 + push {r4-r6,lr} + ldr r4, _080219DC @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r5, _080219E0 @ =gUnknown_2023BC4 + strb r0, [r5] + ldr r2, [r4] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + adds r6, r1, r0 + ldrb r1, [r2, 0x7] + ldrb r0, [r2, 0x8] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x9] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0xA] + lsls r0, 24 + adds r3, r1, r0 + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _080219E8 + ldr r0, _080219E4 @ =gUnknown_2023DFC + ldrb r1, [r5] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + ands r0, r6 + cmp r0, 0 + bne _08021A00 + b _080219F8 + .align 2, 0 +_080219DC: .4byte gUnknown_2023D74 +_080219E0: .4byte gUnknown_2023BC4 +_080219E4: .4byte gUnknown_2023DFC +_080219E8: + ldr r0, _080219FC @ =gUnknown_2023DFC + ldrb r1, [r5] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + ands r0, r6 + cmp r0, 0 + beq _08021A00 +_080219F8: + str r3, [r4] + b _08021A06 + .align 2, 0 +_080219FC: .4byte gUnknown_2023DFC +_08021A00: + adds r0, r2, 0 + adds r0, 0xB + str r0, [r4] +_08021A06: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8021988 + + thumb_func_start sub_8021A0C +sub_8021A0C: @ 8021A0C + push {r4-r6,lr} + ldr r4, _08021A54 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [r4] + ldrb r5, [r3, 0x2] + ldrb r2, [r3, 0x3] + ldrb r1, [r3, 0x4] + lsls r1, 8 + adds r2, r1 + ldrb r1, [r3, 0x5] + lsls r1, 16 + adds r2, r1 + ldrb r1, [r3, 0x6] + lsls r1, 24 + adds r6, r2, r1 + ldr r2, _08021A58 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r5 + beq _08021A50 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r5 + bne _08021A5C +_08021A50: + str r6, [r4] + b _08021A60 + .align 2, 0 +_08021A54: .4byte gUnknown_2023D74 +_08021A58: .4byte gUnknown_2023BE4 +_08021A5C: + adds r0, r3, 0x7 + str r0, [r4] +_08021A60: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8021A0C + + thumb_func_start sub_8021A68 +sub_8021A68: @ 8021A68 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r6, 0 + ldr r0, _08021AB0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x50 + mov r9, r0 + ldr r0, _08021AB4 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _08021AB8 @ =gUnknown_2023D6D + strb r0, [r1] + ldr r2, _08021ABC @ =gUnknown_2023F4E + movs r1, 0x2 + ands r1, r0 + lsls r1, 24 + lsrs r1, 25 + adds r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r0, _08021AC0 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x1C] + cmp r0, 0x6 + bls _08021AA4 + bl _080223DA +_08021AA4: + lsls r0, 2 + ldr r1, _08021AC4 @ =_08021AC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08021AB0: .4byte gUnknown_2023FE8 +_08021AB4: .4byte gUnknown_2023D74 +_08021AB8: .4byte gUnknown_2023D6D +_08021ABC: .4byte gUnknown_2023F4E +_08021AC0: .4byte gUnknown_2023FC4 +_08021AC4: .4byte _08021AC8 + .align 2, 0 +_08021AC8: + .4byte _08021AE4 + .4byte _08021B50 + .4byte _08021C6A + .4byte _08021F78 + .4byte _0802207C + .4byte _08022368 + .4byte _080223B0 +_08021AE4: + ldr r4, _08021B34 @ =gUnknown_2023D6D + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08021AF8 + bl _080223A4 +_08021AF8: + ldr r0, _08021B38 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08021B3C @ =0x00080982 + ands r0, r1 + cmp r0, 0 + beq _08021B08 + bl _080223A4 +_08021B08: + ldr r1, _08021B40 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1C] + adds r0, 0x1 + strb r0, [r1, 0x1C] + ldr r0, _08021B44 @ =gUnknown_2023FE8 + ldr r2, [r0] + adds r2, 0xDF + ldr r3, _08021B48 @ =gUnknown_825E45C + ldr r1, _08021B4C @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + bl _080223DA + .align 2, 0 +_08021B34: .4byte gUnknown_2023D6D +_08021B38: .4byte gUnknown_2022B4C +_08021B3C: .4byte 0x00080982 +_08021B40: .4byte gUnknown_2023FC4 +_08021B44: .4byte gUnknown_2023FE8 +_08021B48: .4byte gUnknown_825E45C +_08021B4C: .4byte gUnknown_2023BCE +_08021B50: + movs r5, 0 + movs r7, 0 +_08021B54: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08021BA4 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08021BC2 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08021BC2 + ldr r0, _08021BA8 @ =gUnknown_825E45C + lsls r1, r7, 2 + adds r1, r0 + ldr r0, [r1] + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _08021B88 + adds r5, 0x1 +_08021B88: + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08021BB4 + ldr r0, _08021BAC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _08021BB0 @ =0x0000311a + adds r0, r2 + ldrb r4, [r0] + b _08021BBC + .align 2, 0 +_08021BA4: .4byte gUnknown_2024284 +_08021BA8: .4byte gUnknown_825E45C +_08021BAC: .4byte gUnknown_3005008 +_08021BB0: .4byte 0x0000311a +_08021BB4: + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 +_08021BBC: + cmp r4, 0x19 + bne _08021BC2 + adds r6, 0x1 +_08021BC2: + adds r7, 0x1 + cmp r7, 0x5 + ble _08021B54 + ldr r3, _08021C28 @ =gUnknown_8254784 + ldr r2, _08021C2C @ =gUnknown_2023BE4 + ldr r0, _08021C30 @ =gUnknown_2023D6D + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r2, [r0, 0x9] + adds r1, 0x2A + ldrb r0, [r1] + muls r0, r2 + movs r1, 0x7 + bl __divsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r6, 0 + beq _08021C38 + lsrs r4, r0, 17 + adds r0, r4, 0 + adds r1, r5, 0 + bl __divsi3 + mov r1, r9 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _08021C0E + movs r0, 0x1 + strh r0, [r1] +_08021C0E: + ldr r5, _08021C34 @ =gUnknown_2023F52 + adds r0, r4, 0 + adds r1, r6, 0 + bl __divsi3 + strh r0, [r5] + lsls r0, 16 + cmp r0, 0 + bne _08021C52 + movs r0, 0x1 + strh r0, [r5] + b _08021C52 + .align 2, 0 +_08021C28: .4byte gUnknown_8254784 +_08021C2C: .4byte gUnknown_2023BE4 +_08021C30: .4byte gUnknown_2023D6D +_08021C34: .4byte gUnknown_2023F52 +_08021C38: + adds r0, r1, 0 + adds r1, r5, 0 + bl __divsi3 + mov r2, r9 + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + bne _08021C4E + movs r0, 0x1 + strh r0, [r2] +_08021C4E: + ldr r0, _08021C9C @ =gUnknown_2023F52 + strh r6, [r0] +_08021C52: + ldr r1, _08021CA0 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1C] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1, 0x1C] + ldr r1, _08021CA4 @ =gUnknown_2023FE8 + ldr r0, [r1] + strb r2, [r0, 0x10] + ldr r0, [r1] + adds r0, 0x53 + mov r4, r8 + strb r4, [r0] +_08021C6A: + ldr r0, _08021CA8 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _08021C74 + b _080223DA +_08021C74: + ldr r0, _08021CA4 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08021CAC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08021CB8 + ldr r0, _08021CB0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08021CB4 @ =0x0000311a + adds r0, r1 + ldrb r4, [r0] + b _08021CC0 + .align 2, 0 +_08021C9C: .4byte gUnknown_2023F52 +_08021CA0: .4byte gUnknown_2023FC4 +_08021CA4: .4byte gUnknown_2023FE8 +_08021CA8: .4byte gUnknown_2023BC8 +_08021CAC: .4byte gUnknown_2024284 +_08021CB0: .4byte gUnknown_3005008 +_08021CB4: .4byte 0x0000311a +_08021CB8: + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 +_08021CC0: + ldr r5, _08021CE0 @ =gUnknown_2023FE8 + cmp r4, 0x19 + beq _08021CE8 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x53 + ldrb r0, [r1] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + bne _08021CE8 + lsrs r0, 1 + strb r0, [r1] + ldr r1, _08021CE4 @ =gUnknown_2023FC4 + b _08021D0C + .align 2, 0 +_08021CE0: .4byte gUnknown_2023FE8 +_08021CE4: .4byte gUnknown_2023FC4 +_08021CE8: + ldr r0, [r5] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08021D18 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x64 + bne _08021D24 + ldr r1, [r5] + adds r1, 0x53 + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + ldr r1, _08021D1C @ =gUnknown_2023FC4 + movs r2, 0 +_08021D0C: + movs r0, 0x5 + strb r0, [r1, 0x1C] + ldr r0, _08021D20 @ =gUnknown_2023D50 + str r2, [r0] + b _080223DA + .align 2, 0 +_08021D18: .4byte gUnknown_2024284 +_08021D1C: .4byte gUnknown_2023FC4 +_08021D20: .4byte gUnknown_2023D50 +_08021D24: + ldr r0, _08021D88 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08021D8C @ =0x00010008 + ands r0, r1 + cmp r0, 0 + bne _08021D52 + ldr r0, _08021D90 @ =gUnknown_2023BE4 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08021D52 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + cmp r0, 0 + bne _08021D52 + bl sub_8035314 + ldr r0, _08021D94 @ =0x00000137 + bl sub_80722A0 + ldr r1, [r5] + ldrb r0, [r1, 0x12] + adds r0, 0x1 + strb r0, [r1, 0x12] +_08021D52: + ldr r5, _08021D98 @ =gUnknown_2023FE8 + ldr r0, [r5] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08021D9C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08021D6C + b _08021F4C +_08021D6C: + ldr r0, [r5] + adds r0, 0x53 + ldrb r0, [r0] + movs r3, 0x1 + ands r3, r0 + cmp r3, 0 + beq _08021DA4 + ldr r1, _08021DA0 @ =gUnknown_2023D50 + mov r2, r9 + ldrh r0, [r2] + str r0, [r1] + mov r9, r1 + b _08021DAA + .align 2, 0 +_08021D88: .4byte gUnknown_2022B4C +_08021D8C: .4byte 0x00010008 +_08021D90: .4byte gUnknown_2023BE4 +_08021D94: .4byte 0x00000137 +_08021D98: .4byte gUnknown_2023FE8 +_08021D9C: .4byte gUnknown_2024284 +_08021DA0: .4byte gUnknown_2023D50 +_08021DA4: + ldr r0, _08021E28 @ =gUnknown_2023D50 + str r3, [r0] + mov r9, r0 +_08021DAA: + cmp r4, 0x19 + bne _08021DBA + ldr r0, _08021E2C @ =gUnknown_2023F52 + ldrh r1, [r0] + mov r2, r9 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] +_08021DBA: + cmp r4, 0x28 + bne _08021DCE + mov r4, r9 + ldr r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] +_08021DCE: + ldr r5, _08021E30 @ =gUnknown_2022B4C + ldr r0, [r5] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08021DEA + ldr r4, _08021E28 @ =gUnknown_2023D50 + ldr r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] +_08021DEA: + ldr r0, _08021E34 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08021E38 @ =gUnknown_2024284 + adds r0, r1 + bl sub_804425C + lsls r0, 24 + cmp r0, 0 + beq _08021E3C + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + bne _08021E3C + ldr r4, _08021E28 @ =gUnknown_2023D50 + ldr r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + movs r7, 0xA5 + lsls r7, 1 + mov r9, r4 + b _08021E42 + .align 2, 0 +_08021E28: .4byte gUnknown_2023D50 +_08021E2C: .4byte gUnknown_2023F52 +_08021E30: .4byte gUnknown_2022B4C +_08021E34: .4byte gUnknown_2023FE8 +_08021E38: .4byte gUnknown_2024284 +_08021E3C: + ldr r7, _08021E78 @ =0x00000149 + ldr r0, _08021E7C @ =gUnknown_2023D50 + mov r9, r0 +_08021E42: + ldr r0, _08021E80 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08021EAE + ldr r0, _08021E84 @ =gUnknown_2023BCE + ldr r1, _08021E88 @ =gUnknown_2023FE8 + ldr r4, [r1] + ldrh r0, [r0, 0x4] + adds r5, r1, 0 + ldr r3, _08021E8C @ =gUnknown_825E45C + ldr r2, _08021E90 @ =gUnknown_2023D70 + ldrb r1, [r4, 0x10] + cmp r0, r1 + bne _08021E94 + ldrb r1, [r2] + ldr r0, [r3, 0x8] + ands r1, r0 + cmp r1, 0 + bne _08021E94 + adds r1, r4, 0 + adds r1, 0x8F + movs r0, 0x2 + strb r0, [r1] + b _08021EB6 + .align 2, 0 +_08021E78: .4byte 0x00000149 +_08021E7C: .4byte gUnknown_2023D50 +_08021E80: .4byte gUnknown_2022B4C +_08021E84: .4byte gUnknown_2023BCE +_08021E88: .4byte gUnknown_2023FE8 +_08021E8C: .4byte gUnknown_825E45C +_08021E90: .4byte gUnknown_2023D70 +_08021E94: + ldrb r2, [r2] + ldr r0, [r3] + ands r2, r0 + cmp r2, 0 + bne _08021EA6 + ldr r0, [r5] + adds r0, 0x8F + strb r2, [r0] + b _08021EB6 +_08021EA6: + ldr r0, [r5] + adds r0, 0x8F + movs r1, 0x2 + b _08021EB4 +_08021EAE: + ldr r0, _08021F5C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x8F +_08021EB4: + strb r1, [r0] +_08021EB6: + ldr r1, _08021F60 @ =gUnknown_2022AB8 + movs r2, 0 + mov r12, r2 + movs r3, 0xFD + strb r3, [r1] + movs r5, 0x4 + strb r5, [r1, 0x1] + ldr r6, _08021F5C @ =gUnknown_2023FE8 + ldr r2, [r6] + movs r4, 0x8F + adds r4, r2 + mov r8, r4 + ldrb r0, [r4] + strb r0, [r1, 0x2] + ldrb r0, [r2, 0x10] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08021F64 @ =gUnknown_2022AC8 + strb r3, [r1] + mov r0, r12 + strb r0, [r1, 0x1] + strb r7, [r1, 0x2] + movs r4, 0xFF + lsls r4, 8 + ands r7, r4 + asrs r0, r7, 8 + strb r0, [r1, 0x3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x4] + ldr r1, _08021F68 @ =gUnknown_2022AD8 + strb r3, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + strb r5, [r1, 0x2] + movs r0, 0x5 + strb r0, [r1, 0x3] + mov r0, r9 + ldr r2, [r0] + strb r2, [r1, 0x4] + adds r0, r2, 0 + ands r0, r4 + asrs r0, 8 + strb r0, [r1, 0x5] + movs r0, 0xFF + lsls r0, 16 + ands r0, r2 + asrs r0, 16 + strb r0, [r1, 0x6] + lsrs r2, 24 + strb r2, [r1, 0x7] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x8] + mov r2, r8 + ldrb r1, [r2] + movs r0, 0xD + bl sub_80173AC + ldr r0, [r6] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08021F6C @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _08021F70 @ =gUnknown_2023BE4 + ldr r1, _08021F74 @ =gUnknown_2023D6D + ldrb r2, [r1] + movs r1, 0x58 + muls r1, r2 + adds r1, r3 + ldrh r1, [r1] + bl sub_8043890 +_08021F4C: + ldr r0, _08021F5C @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, 0x53 + ldrb r0, [r1] + lsrs r0, 1 + strb r0, [r1] + b _08022052 + .align 2, 0 +_08021F5C: .4byte gUnknown_2023FE8 +_08021F60: .4byte gUnknown_2022AB8 +_08021F64: .4byte gUnknown_2022AC8 +_08021F68: .4byte gUnknown_2022AD8 +_08021F6C: .4byte gUnknown_2024284 +_08021F70: .4byte gUnknown_2023BE4 +_08021F74: .4byte gUnknown_2023D6D +_08021F78: + ldr r0, _0802205C @ =gUnknown_2023BC8 + ldr r2, [r0] + cmp r2, 0 + beq _08021F82 + b _080223DA +_08021F82: + ldr r1, _08022060 @ =gUnknown_20233C4 + ldr r7, _08022064 @ =gUnknown_2023FE8 + ldr r0, [r7] + adds r0, 0x8F + ldrb r0, [r0] + lsls r0, 9 + adds r0, r1 + strb r2, [r0] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08022068 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08022052 + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x64 + beq _08022052 + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x3A + bl sub_803FBE8 + ldr r4, _0802206C @ =gUnknown_2023FF4 + ldr r1, [r4] + ldr r1, [r1, 0x10] + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x3B + bl sub_803FBE8 + ldr r1, [r4] + ldr r1, [r1, 0x10] + strh r0, [r1, 0x2] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x3C + bl sub_803FBE8 + ldr r1, [r4] + ldr r1, [r1, 0x10] + strh r0, [r1, 0x4] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x3D + bl sub_803FBE8 + ldr r1, [r4] + ldr r1, [r1, 0x10] + strh r0, [r1, 0x6] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x3E + bl sub_803FBE8 + ldr r1, [r4] + ldr r1, [r1, 0x10] + strh r0, [r1, 0x8] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0x3F + bl sub_803FBE8 + ldr r1, [r4] + ldr r1, [r1, 0x10] + strh r0, [r1, 0xA] + ldr r4, _08022070 @ =gUnknown_2023BC4 + ldr r1, [r7] + adds r0, r1, 0 + adds r0, 0x8F + ldrb r0, [r0] + strb r0, [r4] + ldrb r1, [r1, 0x10] + ldr r0, _08022074 @ =gUnknown_2023D50 + ldrh r2, [r0] + movs r0, 0 + bl sub_800E624 + ldrb r0, [r4] + bl sub_8017248 +_08022052: + ldr r1, _08022078 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1C] + adds r0, 0x1 + strb r0, [r1, 0x1C] + b _080223DA + .align 2, 0 +_0802205C: .4byte gUnknown_2023BC8 +_08022060: .4byte gUnknown_20233C4 +_08022064: .4byte gUnknown_2023FE8 +_08022068: .4byte gUnknown_2024284 +_0802206C: .4byte gUnknown_2023FF4 +_08022070: .4byte gUnknown_2023BC4 +_08022074: .4byte gUnknown_2023D50 +_08022078: .4byte gUnknown_2023FC4 +_0802207C: + ldr r0, _08022314 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _08022086 + b _080223DA +_08022086: + ldr r1, _08022318 @ =gUnknown_2023BC4 + ldr r0, _0802231C @ =gUnknown_2023FE8 + ldr r4, [r0] + adds r0, r4, 0 + adds r0, 0x8F + ldrb r0, [r0] + strb r0, [r1] + ldr r3, _08022320 @ =gUnknown_20233C4 + ldrb r2, [r1] + lsls r1, r2, 9 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x21 + beq _080220A4 + b _08022350 +_080220A4: + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0xB + beq _080220B0 + b _08022350 +_080220B0: + ldr r0, _08022324 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080220DA + ldr r0, _08022328 @ =gUnknown_2023BCE + lsls r1, r2, 1 + adds r1, r0 + ldrh r0, [r1] + ldrb r4, [r4, 0x10] + cmp r0, r4 + bne _080220DA + adds r1, r0, 0 + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802232C @ =gUnknown_2024284 + adds r0, r1 + adds r1, r2, 0 + bl sub_8035244 +_080220DA: + ldr r1, _08022330 @ =gUnknown_2022AB8 + movs r3, 0xFD + strb r3, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r6, _08022318 @ =gUnknown_2023BC4 + ldrb r0, [r6] + strb r0, [r1, 0x2] + ldr r4, _0802231C @ =gUnknown_2023FE8 + mov r9, r4 + ldr r2, [r4] + ldrb r0, [r2, 0x10] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r4, _08022334 @ =gUnknown_2022AC8 + strb r3, [r4] + movs r0, 0x1 + strb r0, [r4, 0x1] + strb r0, [r4, 0x2] + movs r0, 0x3 + strb r0, [r4, 0x3] + ldrb r0, [r2, 0x10] + movs r1, 0x64 + mov r8, r1 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + ldr r7, _0802232C @ =gUnknown_2024284 + adds r0, r7 + movs r1, 0x38 + bl sub_803FBE8 + strb r0, [r4, 0x4] + movs r0, 0x1 + negs r0, r0 + strb r0, [r4, 0x5] + bl sub_8017544 + ldr r2, _08022338 @ =gUnknown_3004FD4 + ldr r1, _0802233C @ =gUnknown_825E45C + mov r4, r9 + ldr r5, [r4] + ldrb r0, [r5, 0x10] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r1, _08022340 @ =gUnknown_2023D74 + ldr r0, _08022344 @ =gUnknown_81D89F5 + str r0, [r1] + ldr r4, _08022348 @ =gUnknown_2023D50 + ldr r2, _08022320 @ =gUnknown_20233C4 + ldrb r1, [r6] + lsls r1, 9 + adds r0, r2, 0x2 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, 0x3 + adds r1, r2 + ldrb r0, [r1] + lsls r0, 8 + orrs r3, r0 + str r3, [r4] + ldrb r0, [r5, 0x10] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + movs r1, 0 + bl sub_80436F8 + ldr r1, _08022328 @ =gUnknown_2023BCE + mov r2, r9 + ldr r0, [r2] + ldrb r2, [r0, 0x10] + ldrh r0, [r1] + cmp r0, r2 + bne _08022246 + ldr r4, _0802234C @ =gUnknown_2023BE4 + ldrh r0, [r4, 0x28] + cmp r0, 0 + beq _08022246 + mov r0, r8 + muls r0, r2 + adds r0, r7 + movs r1, 0x38 + bl sub_803FBE8 + adds r1, r4, 0 + adds r1, 0x2A + strb r0, [r1] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r4, 0x28] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3A + bl sub_803FBE8 + strh r0, [r4, 0x2C] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3B + bl sub_803FBE8 + strh r0, [r4, 0x2] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3C + bl sub_803FBE8 + strh r0, [r4, 0x4] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3D + bl sub_803FBE8 + strh r0, [r4, 0x6] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3D + bl sub_803FBE8 + strh r0, [r4, 0x6] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3E + bl sub_803FBE8 + strh r0, [r4, 0x8] + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3F + bl sub_803FBE8 + strh r0, [r4, 0xA] +_08022246: + ldr r0, _08022328 @ =gUnknown_2023BCE + ldr r7, _0802231C @ =gUnknown_2023FE8 + ldr r1, [r7] + ldrb r2, [r1, 0x10] + ldrh r0, [r0, 0x4] + cmp r0, r2 + beq _08022256 + b _08022356 +_08022256: + ldr r6, _0802234C @ =gUnknown_2023BE4 + movs r4, 0xD8 + adds r4, r6 + mov r8, r4 + ldrh r0, [r4] + cmp r0, 0 + beq _08022356 + ldr r0, _08022324 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08022356 + movs r5, 0x64 + adds r0, r2, 0 + muls r0, r5 + ldr r4, _0802232C @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x38 + bl sub_803FBE8 + adds r1, r6, 0 + adds r1, 0xDA + strb r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r6, 0 + adds r1, 0xDC + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x3B + bl sub_803FBE8 + adds r1, r6, 0 + adds r1, 0xB2 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x3C + bl sub_803FBE8 + adds r1, r6, 0 + adds r1, 0xB4 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x3D + bl sub_803FBE8 + movs r2, 0xB6 + adds r2, r6 + mov r8, r2 + strh r0, [r2] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x3D + bl sub_803FBE8 + mov r1, r8 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + movs r1, 0x3E + bl sub_803FBE8 + adds r1, r6, 0 + adds r1, 0xB8 + strh r0, [r1] + b _08022356 + .align 2, 0 +_08022314: .4byte gUnknown_2023BC8 +_08022318: .4byte gUnknown_2023BC4 +_0802231C: .4byte gUnknown_2023FE8 +_08022320: .4byte gUnknown_20233C4 +_08022324: .4byte gUnknown_2022B4C +_08022328: .4byte gUnknown_2023BCE +_0802232C: .4byte gUnknown_2024284 +_08022330: .4byte gUnknown_2022AB8 +_08022334: .4byte gUnknown_2022AC8 +_08022338: .4byte gUnknown_3004FD4 +_0802233C: .4byte gUnknown_825E45C +_08022340: .4byte gUnknown_2023D74 +_08022344: .4byte gUnknown_81D89F5 +_08022348: .4byte gUnknown_2023D50 +_0802234C: .4byte gUnknown_2023BE4 +_08022350: + ldr r1, _08022360 @ =gUnknown_2023D50 + movs r0, 0 + str r0, [r1] +_08022356: + ldr r1, _08022364 @ =gUnknown_2023FC4 + movs r0, 0x5 + strb r0, [r1, 0x1C] + b _080223DA + .align 2, 0 +_08022360: .4byte gUnknown_2023D50 +_08022364: .4byte gUnknown_2023FC4 +_08022368: + ldr r0, _08022378 @ =gUnknown_2023D50 + ldr r0, [r0] + cmp r0, 0 + beq _08022380 + ldr r1, _0802237C @ =gUnknown_2023FC4 + movs r0, 0x3 + strb r0, [r1, 0x1C] + b _080223DA + .align 2, 0 +_08022378: .4byte gUnknown_2023D50 +_0802237C: .4byte gUnknown_2023FC4 +_08022380: + ldr r2, _0802239C @ =gUnknown_2023FE8 + ldr r1, [r2] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + ldr r0, [r2] + ldrb r0, [r0, 0x10] + cmp r0, 0x5 + bhi _080223A4 + ldr r1, _080223A0 @ =gUnknown_2023FC4 + movs r0, 0x2 + strb r0, [r1, 0x1C] + b _080223DA + .align 2, 0 +_0802239C: .4byte gUnknown_2023FE8 +_080223A0: .4byte gUnknown_2023FC4 +_080223A4: + ldr r1, _080223AC @ =gUnknown_2023FC4 + movs r0, 0x6 + strb r0, [r1, 0x1C] + b _080223DA + .align 2, 0 +_080223AC: .4byte gUnknown_2023FC4 +_080223B0: + ldr r0, _080223E8 @ =gUnknown_2023BC8 + ldr r5, [r0] + cmp r5, 0 + bne _080223DA + ldr r4, _080223EC @ =gUnknown_2023BE4 + ldr r2, _080223F0 @ =gUnknown_2023D6D + ldrb r0, [r2] + movs r1, 0x58 + muls r0, r1 + adds r0, r4 + movs r3, 0 + strh r5, [r0, 0x2E] + ldrb r0, [r2] + muls r0, r1 + adds r0, r4 + adds r0, 0x20 + strb r3, [r0] + ldr r1, _080223F4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_080223DA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080223E8: .4byte gUnknown_2023BC8 +_080223EC: .4byte gUnknown_2023BE4 +_080223F0: .4byte gUnknown_2023D6D +_080223F4: .4byte gUnknown_2023D74 + thumb_func_end sub_8021A68 + + thumb_func_start sub_80223F8 +sub_80223F8: @ 80223F8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + ldr r0, _08022534 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0802240A + b _0802258A +_0802240A: + movs r5, 0 +_0802240C: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08022538 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0802243C + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0802243C + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 +_0802243C: + adds r5, 0x1 + cmp r5, 0x5 + ble _0802240C + cmp r6, 0 + bne _08022450 + ldr r0, _0802253C @ =gUnknown_2023E8A + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] +_08022450: + movs r6, 0 + movs r5, 0 +_08022454: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08022540 @ =gUnknown_202402C + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08022484 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _08022484 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 +_08022484: + adds r5, 0x1 + cmp r5, 0x5 + ble _08022454 + ldr r2, _0802253C @ =gUnknown_2023E8A + cmp r6, 0 + bne _08022498 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_08022498: + ldrb r0, [r2] + cmp r0, 0 + bne _08022582 + ldr r0, _08022544 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0x2 + ands r1, r2 + mov r8, r0 + cmp r1, 0 + beq _08022582 + movs r3, 0 + movs r5, 0 + ldr r0, _08022548 @ =gUnknown_2023BCC + ldrb r1, [r0] + mov r12, r0 + ldr r7, _0802254C @ =gUnknown_2023D74 + cmp r3, r1 + bge _080224E4 + ldr r0, _08022550 @ =gUnknown_2023DD0 + movs r6, 0x80 + lsls r6, 21 + ldr r4, [r0] + adds r2, r1, 0 + ldr r1, _08022554 @ =gUnknown_2023ECC +_080224C8: + adds r0, r6, 0 + lsls r0, r5 + ands r0, r4 + cmp r0, 0 + beq _080224DC + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _080224DC + adds r3, 0x1 +_080224DC: + adds r1, 0x28 + adds r5, 0x2 + cmp r5, r2 + blt _080224C8 +_080224E4: + movs r2, 0 + movs r5, 0x1 + mov r0, r12 + ldrb r1, [r0] + cmp r5, r1 + bge _0802251E + ldr r0, _08022550 @ =gUnknown_2023DD0 + movs r4, 0x80 + lsls r4, 21 + mov r12, r4 + ldr r6, [r0] + ldr r0, _08022554 @ =gUnknown_2023ECC + adds r4, r1, 0 + adds r1, r0, 0 + adds r1, 0x14 +_08022502: + mov r0, r12 + lsls r0, r5 + ands r0, r6 + cmp r0, 0 + beq _08022516 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022516 + adds r2, 0x1 +_08022516: + adds r1, 0x28 + adds r5, 0x2 + cmp r5, r4 + blt _08022502 +_0802251E: + mov r1, r8 + ldr r0, [r1] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08022558 + adds r0, r2, r3 + cmp r0, 0x1 + bgt _08022560 + b _0802257A + .align 2, 0 +_08022534: .4byte gUnknown_2023BC8 +_08022538: .4byte gUnknown_2024284 +_0802253C: .4byte gUnknown_2023E8A +_08022540: .4byte gUnknown_202402C +_08022544: .4byte gUnknown_2022B4C +_08022548: .4byte gUnknown_2023BCC +_0802254C: .4byte gUnknown_2023D74 +_08022550: .4byte gUnknown_2023DD0 +_08022554: .4byte gUnknown_2023ECC +_08022558: + cmp r2, 0 + beq _0802257A + cmp r3, 0 + beq _0802257A +_08022560: + ldr r2, [r7] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + str r1, [r7] + b _0802258A +_0802257A: + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + b _0802258A +_08022582: + ldr r1, _08022594 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802258A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08022594: .4byte gUnknown_2023D74 + thumb_func_end sub_80223F8 + + thumb_func_start sub_8022598 +sub_8022598: @ 8022598 + ldr r1, _080225C0 @ =gUnknown_2023DCC + movs r0, 0 + strb r0, [r1] + ldr r0, _080225C4 @ =gUnknown_2023FC4 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0, 0xE] + ldr r0, _080225C8 @ =gUnknown_2023D71 + strb r1, [r0] + ldr r0, _080225CC @ =gUnknown_2023E82 + strb r2, [r0, 0x3] + strb r2, [r0, 0x6] + ldr r2, _080225D0 @ =gUnknown_2023DD0 + ldr r0, [r2] + subs r1, 0x42 + ands r0, r1 + ldr r1, _080225D4 @ =0xffffbfff + ands r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_080225C0: .4byte gUnknown_2023DCC +_080225C4: .4byte gUnknown_2023FC4 +_080225C8: .4byte gUnknown_2023D71 +_080225CC: .4byte gUnknown_2023E82 +_080225D0: .4byte gUnknown_2023DD0 +_080225D4: .4byte 0xffffbfff + thumb_func_end sub_8022598 + + thumb_func_start sub_80225D8 +sub_80225D8: @ 80225D8 + push {lr} + bl sub_8022598 + ldr r1, _080225EC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080225EC: .4byte gUnknown_2023D74 + thumb_func_end sub_80225D8 + + thumb_func_start sub_80225F0 +sub_80225F0: @ 80225F0 + ldr r3, _08022600 @ =gUnknown_2023D72 + ldr r2, _08022604 @ =gUnknown_2023D74 + ldr r0, [r2] + ldrb r1, [r0, 0x1] + strb r1, [r3] + adds r0, 0x2 + str r0, [r2] + bx lr + .align 2, 0 +_08022600: .4byte gUnknown_2023D72 +_08022604: .4byte gUnknown_2023D74 + thumb_func_end sub_80225F0 + + thumb_func_start sub_8022608 +sub_8022608: @ 8022608 + push {lr} + ldr r1, _08022624 @ =gUnknown_2023D72 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _0802262C + ldr r1, _08022628 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08022646 + .align 2, 0 +_08022624: .4byte gUnknown_2023D72 +_08022628: .4byte gUnknown_2023D74 +_0802262C: + ldr r3, _0802264C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + str r1, [r3] +_08022646: + pop {r0} + bx r0 + .align 2, 0 +_0802264C: .4byte gUnknown_2023D74 + thumb_func_end sub_8022608 + + thumb_func_start sub_8022650 +sub_8022650: @ 8022650 + ldr r3, _0802266C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_0802266C: .4byte gUnknown_2023D74 + thumb_func_end sub_8022650 + + thumb_func_start sub_8022670 +sub_8022670: @ 8022670 + push {r4-r6,lr} + ldr r3, _080226B4 @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r6, [r1, 0x1] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x6] + ldrb r2, [r1, 0x7] + ldrb r0, [r1, 0x8] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x9] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xA] + lsls r0, 24 + adds r2, r0 + adds r1, 0xB + str r1, [r3] + cmp r6, 0x5 + bhi _08022708 + lsls r0, r6, 2 + ldr r1, _080226B8 @ =_080226BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080226B4: .4byte gUnknown_2023D74 +_080226B8: .4byte _080226BC + .align 2, 0 +_080226BC: + .4byte _080226D4 + .4byte _080226DC + .4byte _080226E4 + .4byte _080226EC + .4byte _080226F4 + .4byte _080226FE +_080226D4: + ldrb r0, [r5] + cmp r0, r4 + bne _08022708 + b _08022706 +_080226DC: + ldrb r0, [r5] + cmp r0, r4 + beq _08022708 + b _08022706 +_080226E4: + ldrb r0, [r5] + cmp r0, r4 + bls _08022708 + b _08022706 +_080226EC: + ldrb r0, [r5] + cmp r0, r4 + bcs _08022708 + b _08022706 +_080226F4: + ldrb r0, [r5] + ands r4, r0 + cmp r4, 0 + beq _08022708 + b _08022706 +_080226FE: + ldrb r0, [r5] + ands r4, r0 + cmp r4, 0 + bne _08022708 +_08022706: + str r2, [r3] +_08022708: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8022670 + + thumb_func_start sub_8022710 +sub_8022710: @ 8022710 + push {r4-r6,lr} + ldr r3, _0802275C @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r6, [r1, 0x1] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x6] + ldrb r0, [r1, 0x7] + lsls r0, 8 + orrs r4, r0 + ldrb r2, [r1, 0x8] + ldrb r0, [r1, 0x9] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xA] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xB] + lsls r0, 24 + adds r2, r0 + adds r1, 0xC + str r1, [r3] + cmp r6, 0x5 + bhi _080227B0 + lsls r0, r6, 2 + ldr r1, _08022760 @ =_08022764 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802275C: .4byte gUnknown_2023D74 +_08022760: .4byte _08022764 + .align 2, 0 +_08022764: + .4byte _0802277C + .4byte _08022784 + .4byte _0802278C + .4byte _08022794 + .4byte _0802279C + .4byte _080227A6 +_0802277C: + ldrh r0, [r5] + cmp r0, r4 + bne _080227B0 + b _080227AE +_08022784: + ldrh r0, [r5] + cmp r0, r4 + beq _080227B0 + b _080227AE +_0802278C: + ldrh r0, [r5] + cmp r0, r4 + bls _080227B0 + b _080227AE +_08022794: + ldrh r0, [r5] + cmp r0, r4 + bcs _080227B0 + b _080227AE +_0802279C: + ldrh r0, [r5] + ands r4, r0 + cmp r4, 0 + beq _080227B0 + b _080227AE +_080227A6: + ldrh r0, [r5] + ands r4, r0 + cmp r4, 0 + bne _080227B0 +_080227AE: + str r2, [r3] +_080227B0: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8022710 + + thumb_func_start sub_80227B8 +sub_80227B8: @ 80227B8 + push {r4-r6,lr} + ldr r3, _08022810 @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r6, [r1, 0x1] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x6] + ldrb r0, [r1, 0x7] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r1, 0x8] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r1, 0x9] + lsls r0, 24 + orrs r4, r0 + ldrb r2, [r1, 0xA] + ldrb r0, [r1, 0xB] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xD] + lsls r0, 24 + adds r2, r0 + adds r1, 0xE + str r1, [r3] + cmp r6, 0x5 + bhi _08022864 + lsls r0, r6, 2 + ldr r1, _08022814 @ =_08022818 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022810: .4byte gUnknown_2023D74 +_08022814: .4byte _08022818 + .align 2, 0 +_08022818: + .4byte _08022830 + .4byte _08022838 + .4byte _08022840 + .4byte _08022848 + .4byte _08022850 + .4byte _0802285A +_08022830: + ldr r0, [r5] + cmp r0, r4 + bne _08022864 + b _08022862 +_08022838: + ldr r0, [r5] + cmp r0, r4 + beq _08022864 + b _08022862 +_08022840: + ldr r0, [r5] + cmp r0, r4 + bls _08022864 + b _08022862 +_08022848: + ldr r0, [r5] + cmp r0, r4 + bcs _08022864 + b _08022862 +_08022850: + ldr r0, [r5] + ands r0, r4 + cmp r0, 0 + beq _08022864 + b _08022862 +_0802285A: + ldr r0, [r5] + ands r0, r4 + cmp r0, 0 + bne _08022864 +_08022862: + str r2, [r3] +_08022864: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80227B8 + + thumb_func_start sub_802286C +sub_802286C: @ 802286C + push {r4-r7,lr} + ldr r2, _080228C4 @ =gUnknown_2023D74 + ldr r3, [r2] + ldrb r1, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 24 + adds r5, r1, r0 + ldrb r1, [r3, 0x5] + ldrb r0, [r3, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 24 + adds r4, r1, r0 + ldrb r6, [r3, 0x9] + ldrb r1, [r3, 0xA] + ldrb r0, [r3, 0xB] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0xC] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0xD] + lsls r0, 24 + adds r1, r0 + mov r12, r1 + movs r1, 0 + cmp r1, r6 + bcs _080228E4 + ldrb r0, [r5] + ldrb r7, [r4] + cmp r0, r7 + beq _080228C8 + adds r0, r3, 0 + b _080228E0 + .align 2, 0 +_080228C4: .4byte gUnknown_2023D74 +_080228C8: + adds r5, 0x1 + adds r4, 0x1 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r6 + bcs _080228E4 + ldrb r0, [r5] + ldrb r3, [r4] + cmp r0, r3 + beq _080228C8 + ldr r0, [r2] +_080228E0: + adds r0, 0xE + str r0, [r2] +_080228E4: + cmp r1, r6 + bne _080228EC + mov r7, r12 + str r7, [r2] +_080228EC: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802286C + + thumb_func_start sub_80228F4 +sub_80228F4: @ 80228F4 + push {r4-r7,lr} + movs r7, 0 + ldr r3, _08022968 @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + adds r5, r2, r0 + ldrb r2, [r1, 0x5] + ldrb r0, [r1, 0x6] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x7] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x8] + lsls r0, 24 + adds r4, r2, r0 + ldrb r6, [r1, 0x9] + ldrb r2, [r1, 0xA] + ldrb r0, [r1, 0xB] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xD] + lsls r0, 24 + adds r2, r0 + mov r12, r2 + movs r1, 0 + cmp r7, r6 + bcs _0802295E +_08022942: + ldrb r0, [r5] + ldrb r2, [r4] + cmp r0, r2 + bne _08022950 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_08022950: + adds r5, 0x1 + adds r4, 0x1 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r6 + bcc _08022942 +_0802295E: + cmp r7, r6 + beq _0802296C + mov r0, r12 + b _08022970 + .align 2, 0 +_08022968: .4byte gUnknown_2023D74 +_0802296C: + ldr r0, [r3] + adds r0, 0xE +_08022970: + str r0, [r3] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80228F4 + + thumb_func_start sub_8022978 +sub_8022978: @ 8022978 + ldr r3, _0802299C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r2, 0x5] + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_0802299C: .4byte gUnknown_2023D74 + thumb_func_end sub_8022978 + + thumb_func_start sub_80229A0 +sub_80229A0: @ 80229A0 + ldr r3, _080229C8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r2, 0x5] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_080229C8: .4byte gUnknown_2023D74 + thumb_func_end sub_80229A0 + + thumb_func_start sub_80229CC +sub_80229CC: @ 80229CC + ldr r3, _080229F4 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r1] + ldrb r2, [r2, 0x5] + subs r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_080229F4: .4byte gUnknown_2023D74 + thumb_func_end sub_80229CC + + thumb_func_start sub_80229F8 +sub_80229F8: @ 80229F8 + push {r4-r6,lr} + ldr r3, _08022A48 @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + adds r6, r2, r0 + ldrb r2, [r1, 0x5] + ldrb r0, [r1, 0x6] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x7] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x8] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x9] + movs r2, 0 + cmp r2, r4 + bge _08022A3C +_08022A2E: + adds r0, r6, r2 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r4 + blt _08022A2E +_08022A3C: + ldr r0, [r3] + adds r0, 0xA + str r0, [r3] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08022A48: .4byte gUnknown_2023D74 + thumb_func_end sub_80229F8 + + thumb_func_start sub_8022A4C +sub_8022A4C: @ 8022A4C + push {r4-r7,lr} + ldr r3, _08022AB4 @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + adds r7, r2, r0 + ldrb r2, [r1, 0x5] + ldrb r0, [r1, 0x6] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x7] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x8] + lsls r0, 24 + adds r6, r2, r0 + ldrb r2, [r1, 0x9] + ldrb r0, [r1, 0xA] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xB] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0xD] + movs r2, 0 + cmp r2, r4 + bge _08022AA8 +_08022A96: + adds r0, r7, r2 + ldrb r1, [r5] + adds r1, r2, r1 + adds r1, r6, r1 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r4 + blt _08022A96 +_08022AA8: + ldr r0, [r3] + adds r0, 0xE + str r0, [r3] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08022AB4: .4byte gUnknown_2023D74 + thumb_func_end sub_8022A4C + + thumb_func_start sub_8022AB8 +sub_8022AB8: @ 8022AB8 + ldr r3, _08022AE0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r1] + ldrb r2, [r2, 0x5] + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_08022AE0: .4byte gUnknown_2023D74 + thumb_func_end sub_8022AB8 + + thumb_func_start sub_8022AE4 +sub_8022AE4: @ 8022AE4 + push {r4,lr} + ldr r4, _08022B18 @ =gUnknown_2023D74 + ldr r3, [r4] + ldrb r2, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r3, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r3, 0x4] + lsls r0, 24 + adds r2, r0 + ldrb r1, [r3, 0x5] + ldrb r0, [r3, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrh r0, [r2] + orrs r1, r0 + strh r1, [r2] + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022B18: .4byte gUnknown_2023D74 + thumb_func_end sub_8022AE4 + + thumb_func_start sub_8022B1C +sub_8022B1C: @ 8022B1C + push {r4,lr} + ldr r4, _08022B5C @ =gUnknown_2023D74 + ldr r2, [r4] + ldrb r3, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r3, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r3, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r3, r0 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + adds r1, r0 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + ldr r0, [r4] + adds r0, 0x9 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022B5C: .4byte gUnknown_2023D74 + thumb_func_end sub_8022B1C + + thumb_func_start sub_8022B60 +sub_8022B60: @ 8022B60 + ldr r3, _08022B88 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r2, [r2, 0x5] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_08022B88: .4byte gUnknown_2023D74 + thumb_func_end sub_8022B60 + + thumb_func_start sub_8022B8C +sub_8022B8C: @ 8022B8C + push {r4,lr} + ldr r4, _08022BC0 @ =gUnknown_2023D74 + ldr r3, [r4] + ldrb r1, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r2, [r3, 0x5] + ldrb r0, [r3, 0x6] + lsls r0, 8 + orrs r2, r0 + ldrh r0, [r1] + bics r0, r2 + strh r0, [r1] + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022BC0: .4byte gUnknown_2023D74 + thumb_func_end sub_8022B8C + + thumb_func_start sub_8022BC4 +sub_8022BC4: @ 8022BC4 + push {r4,lr} + ldr r4, _08022C04 @ =gUnknown_2023D74 + ldr r2, [r4] + ldrb r3, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r3, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r3, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r3, r0 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + adds r1, r0 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + ldr r0, [r4] + adds r0, 0x9 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022C04: .4byte gUnknown_2023D74 + thumb_func_end sub_8022BC4 + + thumb_func_start sub_8022C08 +sub_8022C08: @ 8022C08 + push {r4,r5,lr} + ldr r0, _08022C3C @ =gUnknown_2023BC8 + ldr r4, [r0] + cmp r4, 0 + bne _08022C34 + ldr r5, _08022C40 @ =gUnknown_2023D74 + ldr r2, [r5] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r3, _08022C44 @ =gUnknown_2023E7C + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] + lsls r0, 16 + lsrs r0, 16 + cmp r0, r1 + bcc _08022C34 + strh r4, [r3] + adds r0, r2, 0x3 + str r0, [r5] +_08022C34: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08022C3C: .4byte gUnknown_2023BC8 +_08022C40: .4byte gUnknown_2023D74 +_08022C44: .4byte gUnknown_2023E7C + thumb_func_end sub_8022C08 + + thumb_func_start sub_8022C48 +sub_8022C48: @ 8022C48 + push {lr} + ldr r0, _08022C60 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08022C5A + ldr r1, _08022C64 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08022C5A: + pop {r0} + bx r0 + .align 2, 0 +_08022C60: .4byte gUnknown_2023BC8 +_08022C64: .4byte gUnknown_2023D74 + thumb_func_end sub_8022C48 + + thumb_func_start sub_8022C68 +sub_8022C68: @ 8022C68 + push {lr} + ldr r0, _08022C7C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _08022C88 + ldr r0, _08022C80 @ =gUnknown_2023BC4 + ldr r1, _08022C84 @ =gUnknown_2023D6C + b _08022C8C + .align 2, 0 +_08022C7C: .4byte gUnknown_2023D74 +_08022C80: .4byte gUnknown_2023BC4 +_08022C84: .4byte gUnknown_2023D6C +_08022C88: + ldr r0, _08022CB0 @ =gUnknown_2023BC4 + ldr r1, _08022CB4 @ =gUnknown_2023D6B +_08022C8C: + ldrb r1, [r1] + strb r1, [r0] + ldr r0, _08022CB8 @ =gUnknown_2023D50 + ldrh r1, [r0] + movs r0, 0 + bl sub_800E5EC + ldr r0, _08022CB0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _08022CBC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08022CB0: .4byte gUnknown_2023BC4 +_08022CB4: .4byte gUnknown_2023D6B +_08022CB8: .4byte gUnknown_2023D50 +_08022CBC: .4byte gUnknown_2023D74 + thumb_func_end sub_8022C68 + + thumb_func_start sub_8022CC0 +sub_8022CC0: @ 8022CC0 + push {lr} + bl sub_801756C + pop {r0} + bx r0 + thumb_func_end sub_8022CC0 + + thumb_func_start sub_8022CCC +sub_8022CCC: @ 8022CCC + ldr r0, _08022CE0 @ =gUnknown_2023DCC + movs r1, 0 + strb r1, [r0] + ldr r0, _08022CE4 @ =gUnknown_2023BC4 + strb r1, [r0] + ldr r1, _08022CE8 @ =gUnknown_2023BE3 + movs r0, 0xB + strb r0, [r1] + bx lr + .align 2, 0 +_08022CE0: .4byte gUnknown_2023DCC +_08022CE4: .4byte gUnknown_2023BC4 +_08022CE8: .4byte gUnknown_2023BE3 + thumb_func_end sub_8022CCC + + thumb_func_start sub_8022CEC +sub_8022CEC: @ 8022CEC + ldr r1, _08022CFC @ =gUnknown_2023BC4 + movs r0, 0 + strb r0, [r1] + ldr r1, _08022D00 @ =gUnknown_2023BE3 + movs r0, 0xB + strb r0, [r1] + bx lr + .align 2, 0 +_08022CFC: .4byte gUnknown_2023BC4 +_08022D00: .4byte gUnknown_2023BE3 + thumb_func_end sub_8022CEC + + thumb_func_start sub_8022D04 +sub_8022D04: @ 8022D04 + push {lr} + bl sub_801756C + ldr r3, _08022D38 @ =gUnknown_2023FF4 + ldr r0, [r3] + ldr r0, [r0, 0xC] + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0 + beq _08022D1E + subs r0, 0x1 + strb r0, [r1] +_08022D1E: + ldr r2, _08022D3C @ =gUnknown_3004F84 + ldr r0, [r3] + ldr r1, [r0, 0xC] + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_08022D38: .4byte gUnknown_2023FF4 +_08022D3C: .4byte gUnknown_3004F84 + thumb_func_end sub_8022D04 + + thumb_func_start sub_8022D40 +sub_8022D40: @ 8022D40 + push {r4,lr} + ldr r4, _08022D6C @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x5 + bl sub_8017520 + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022D6C: .4byte gUnknown_2023D74 + thumb_func_end sub_8022D40 + + thumb_func_start sub_8022D70 +sub_8022D70: @ 8022D70 + push {r4,lr} + ldr r4, _08022DB8 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [r4] + ldr r2, _08022DBC @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r0, r1 + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r2, [r3, 0x2] + ldrb r1, [r1] + cmp r2, r1 + beq _08022D9E + adds r0, 0x22 + ldrb r0, [r0] + cmp r2, r0 + bne _08022DC0 +_08022D9E: + ldrb r1, [r3, 0x3] + ldrb r0, [r3, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _08022DC4 + .align 2, 0 +_08022DB8: .4byte gUnknown_2023D74 +_08022DBC: .4byte gUnknown_2023BE4 +_08022DC0: + adds r0, r3, 0x7 + str r0, [r4] +_08022DC4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8022D70 + + thumb_func_start sub_8022DCC +sub_8022DCC: @ 8022DCC + push {r4,lr} + sub sp, 0x4 + ldr r4, _08022E04 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r2, [r0, 0x1] + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08022E08 + ldr r2, [r4] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _08022E0E + .align 2, 0 +_08022E04: .4byte gUnknown_2023D74 +_08022E08: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_08022E0E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8022DCC + + thumb_func_start sub_8022E18 +sub_8022E18: @ 8022E18 + ldr r0, _08022E2C @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r1, _08022E30 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x54 + movs r1, 0x1 + strb r1, [r0] + bx lr + .align 2, 0 +_08022E2C: .4byte gUnknown_2023D6B +_08022E30: .4byte gUnknown_2023FE8 + thumb_func_end sub_8022E18 + + thumb_func_start sub_8022E34 +sub_8022E34: @ 8022E34 + push {r4-r6,lr} + ldr r4, _08022E84 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r6, _08022E88 @ =gUnknown_2023BC4 + strb r0, [r6] + ldr r2, [r4] + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + adds r3, r1, r0 + ldrb r5, [r2, 0x2] + adds r0, r5, 0 + cmp r0, 0x1 + beq _08022E6E + cmp r0, 0x11 + beq _08022E6E + cmp r0, 0x2 + beq _08022E6E + cmp r0, 0x19 + bne _08022E8C +_08022E6E: + ldr r4, _08022E84 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r1, [r0, 0x2] + ldrh r2, [r3] + movs r0, 0 + bl sub_800EB28 + ldr r0, _08022E88 @ =gUnknown_2023BC4 + ldrb r0, [r0] + b _08022EE4 + .align 2, 0 +_08022E84: .4byte gUnknown_2023D74 +_08022E88: .4byte gUnknown_2023BC4 +_08022E8C: + ldr r0, _08022EA4 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08022EAC + adds r0, r2, 0x7 + bl sub_8017520 + ldr r0, _08022EA8 @ =gUnknown_81D89F1 + b _08022EEC + .align 2, 0 +_08022EA4: .4byte gUnknown_2023DD0 +_08022EA8: .4byte gUnknown_81D89F1 +_08022EAC: + adds r0, r5, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08022ED8 + ldr r1, _08022ED0 @ =gUnknown_2023DFC + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08022ED4 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08022ED8 + adds r0, r2, 0x7 + b _08022EEC + .align 2, 0 +_08022ED0: .4byte gUnknown_2023DFC +_08022ED4: .4byte 0x000400c0 +_08022ED8: + ldrb r1, [r2, 0x2] + ldrh r2, [r3] + movs r0, 0 + bl sub_800EB28 + ldrb r0, [r6] +_08022EE4: + bl sub_8017248 + ldr r0, [r4] + adds r0, 0x7 +_08022EEC: + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8022E34 + + thumb_func_start sub_8022EF4 +sub_8022EF4: @ 8022EF4 + push {r4-r7,lr} + ldr r6, _08022F5C @ =gUnknown_2023D74 + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r7, _08022F60 @ =gUnknown_2023BC4 + strb r0, [r7] + ldr r2, [r6] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + adds r3, r1, r0 + ldrb r1, [r2, 0x6] + ldrb r0, [r2, 0x7] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x9] + lsls r0, 24 + adds r4, r1, r0 + ldrb r5, [r3] + adds r0, r5, 0 + cmp r0, 0x1 + beq _08022F3E + cmp r0, 0x11 + beq _08022F3E + cmp r0, 0x2 + bne _08022F64 +_08022F3E: + ldrb r1, [r3] + ldrh r2, [r4] + movs r0, 0 + bl sub_800EB28 + ldr r0, _08022F60 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _08022F5C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] + b _08022FBA + .align 2, 0 +_08022F5C: .4byte gUnknown_2023D74 +_08022F60: .4byte gUnknown_2023BC4 +_08022F64: + ldr r0, _08022F74 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08022F78 + adds r0, r2, 0 + b _08022FB6 + .align 2, 0 +_08022F74: .4byte gUnknown_2023DD0 +_08022F78: + adds r0, r5, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08022FA4 + ldr r1, _08022F9C @ =gUnknown_2023DFC + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08022FA0 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08022FA4 + adds r0, r2, 0 + b _08022FB6 + .align 2, 0 +_08022F9C: .4byte gUnknown_2023DFC +_08022FA0: .4byte 0x000400c0 +_08022FA4: + ldrb r1, [r3] + ldrh r2, [r4] + movs r0, 0 + bl sub_800EB28 + ldrb r0, [r7] + bl sub_8017248 + ldr r0, [r6] +_08022FB6: + adds r0, 0xA + str r0, [r6] +_08022FBA: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8022EF4 + + thumb_func_start sub_8022FC0 +sub_8022FC0: @ 8022FC0 + push {r4,lr} + movs r3, 0 + ldr r1, _08022FDC @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1A] + movs r2, 0xF0 + ands r2, r0 + adds r4, r1, 0 + cmp r2, 0x20 + beq _08022FEE + cmp r2, 0x20 + bgt _08022FE0 + cmp r2, 0x10 + beq _08022FEA + b _08022FF8 + .align 2, 0 +_08022FDC: .4byte gUnknown_2023FC4 +_08022FE0: + cmp r2, 0x90 + beq _08022FF2 + cmp r2, 0xA0 + beq _08022FF6 + b _08022FF8 +_08022FEA: + movs r3, 0xF + b _08022FF8 +_08022FEE: + movs r3, 0x27 + b _08022FF8 +_08022FF2: + movs r3, 0x16 + b _08022FF8 +_08022FF6: + movs r3, 0x2E +_08022FF8: + ldrb r1, [r4, 0x1A] + movs r0, 0xF + ands r0, r1 + adds r0, r3, r0 + subs r0, 0x1 + movs r1, 0 + strb r0, [r4, 0x10] + strb r1, [r4, 0x11] + ldr r1, _08023018 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08023018: .4byte gUnknown_2023D74 + thumb_func_end sub_8022FC0 + + thumb_func_start sub_802301C +sub_802301C: @ 802301C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r7, 0 + movs r0, 0 + mov r8, r0 + movs r3, 0 + ldr r5, _08023090 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + str r3, [sp] + bl sub_8016E24 + ldr r2, _08023094 @ =gUnknown_2023BC4 + strb r0, [r2] + ldr r0, [r5] + ldrb r4, [r0, 0x2] + ldrb r1, [r0, 0x3] + movs r0, 0x1 + ands r0, r1 + ldr r3, [sp] + cmp r0, 0 + beq _08023130 + movs r0, 0x2 + ands r0, r1 + movs r1, 0x15 + cmp r0, 0 + beq _0802305C + movs r1, 0x2D +_0802305C: + cmp r4, 0 + beq _08023104 + movs r0, 0x1 + mov r10, r0 + ldr r0, _08023098 @ =gUnknown_2023BFC + mov r9, r0 + lsls r5, r1, 16 +_0802306A: + adds r0, r4, 0 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + beq _080230F6 + ldr r0, _08023090 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r1, [r0, 0x3] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0802309C + ldr r0, _08023094 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7, r0 + b _080230E4 + .align 2, 0 +_08023090: .4byte gUnknown_2023D74 +_08023094: .4byte gUnknown_2023BC4 +_08023098: .4byte gUnknown_2023BFC +_0802309C: + ldr r6, _08023120 @ =gUnknown_2023BC4 + ldrb r0, [r6] + str r3, [sp] + bl sub_80751D8 + mov r1, r10 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08023124 @ =gUnknown_2023DE4 + adds r0, r1 + ldrb r0, [r0, 0x4] + ldr r3, [sp] + cmp r0, 0 + bne _080230F6 + ldr r0, _08023128 @ =gUnknown_2023BE4 + ldrb r2, [r6] + movs r1, 0x58 + muls r2, r1 + adds r0, r2, r0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1D + beq _080230F6 + cmp r0, 0x49 + beq _080230F6 + cmp r0, 0x33 + bne _080230DA + cmp r7, 0x6 + beq _080230F6 +_080230DA: + cmp r0, 0x34 + bne _080230E2 + cmp r7, 0x1 + beq _080230F6 +_080230E2: + adds r0, r7, r2 +_080230E4: + add r0, r9 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + ble _080230F6 + lsrs r0, r5, 16 + mov r8, r0 + adds r3, 0x1 +_080230F6: + lsrs r4, 1 + movs r1, 0x80 + lsls r1, 9 + adds r5, r1 + adds r7, 0x1 + cmp r4, 0 + bne _0802306A +_08023104: + ldr r0, _0802312C @ =gUnknown_2023D74 + mov r9, r0 + cmp r3, 0x1 + ble _08023192 + ldr r0, [r0] + ldrb r1, [r0, 0x3] + movs r0, 0x2 + ands r0, r1 + movs r1, 0x39 + mov r8, r1 + cmp r0, 0 + beq _08023192 + movs r0, 0x3A + b _08023190 + .align 2, 0 +_08023120: .4byte gUnknown_2023BC4 +_08023124: .4byte gUnknown_2023DE4 +_08023128: .4byte gUnknown_2023BE4 +_0802312C: .4byte gUnknown_2023D74 +_08023130: + movs r0, 0x2 + ands r0, r1 + movs r1, 0xE + cmp r0, 0 + beq _0802313C + movs r1, 0x26 +_0802313C: + mov r9, r5 + cmp r4, 0 + beq _08023178 + ldr r6, _080231AC @ =gUnknown_2023BFC + adds r5, r2, 0 + lsls r2, r1, 16 +_08023148: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0802316A + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r7, r0 + adds r0, r6 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xB + bgt _0802316A + lsrs r1, r2, 16 + mov r8, r1 + adds r3, 0x1 +_0802316A: + lsrs r4, 1 + movs r0, 0x80 + lsls r0, 9 + adds r2, r0 + adds r7, 0x1 + cmp r4, 0 + bne _08023148 +_08023178: + cmp r3, 0x1 + ble _08023192 + mov r1, r9 + ldr r0, [r1] + ldrb r1, [r0, 0x3] + movs r0, 0x2 + ands r0, r1 + movs r1, 0x37 + mov r8, r1 + cmp r0, 0 + beq _08023192 + movs r0, 0x38 +_08023190: + mov r8, r0 +_08023192: + mov r1, r9 + ldr r2, [r1] + ldrb r1, [r2, 0x3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080231B0 + cmp r3, 0x1 + bgt _080231B0 + adds r0, r2, 0x4 + mov r1, r9 + b _080231FE + .align 2, 0 +_080231AC: .4byte gUnknown_2023BFC +_080231B0: + cmp r3, 0 + beq _080231F8 + ldr r4, _080231EC @ =gUnknown_2023FC4 + ldrb r0, [r4, 0x1B] + cmp r0, 0 + bne _080231F8 + movs r0, 0 + movs r1, 0x1 + mov r2, r8 + str r3, [sp] + bl sub_800EB28 + ldr r0, _080231F0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r0, _080231F4 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r1, [r0, 0x3] + movs r0, 0x4 + ands r0, r1 + ldr r3, [sp] + cmp r0, 0 + beq _080231E8 + cmp r3, 0x1 + ble _080231E8 + movs r0, 0x1 + strb r0, [r4, 0x1B] +_080231E8: + ldr r1, _080231F4 @ =gUnknown_2023D74 + b _080231FA + .align 2, 0 +_080231EC: .4byte gUnknown_2023FC4 +_080231F0: .4byte gUnknown_2023BC4 +_080231F4: .4byte gUnknown_2023D74 +_080231F8: + mov r1, r9 +_080231FA: + ldr r0, [r1] + adds r0, 0x4 +_080231FE: + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802301C + + thumb_func_start sub_8023210 +sub_8023210: @ 8023210 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + movs r0, 0 + mov r10, r0 + ldr r2, _08023260 @ =gUnknown_2023D4C + ldrh r1, [r2] + ldr r0, _08023264 @ =0x0000ffff + movs r3, 0 + str r3, [sp, 0x18] + cmp r1, r0 + beq _08023232 + ldrh r2, [r2] + str r2, [sp, 0x18] +_08023232: + ldr r0, _08023268 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r4, [r0, 0x1] + str r4, [sp, 0x10] + ldrb r0, [r0, 0x2] + str r0, [sp, 0x14] + ldr r1, _0802326C @ =gUnknown_2023BE4 + ldr r0, _08023270 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08023278 + ldr r1, _08023274 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x7] + b _08023282 + .align 2, 0 +_08023260: .4byte gUnknown_2023D4C +_08023264: .4byte 0x0000ffff +_08023268: .4byte gUnknown_2023D74 +_0802326C: .4byte gUnknown_2023BE4 +_08023270: .4byte gUnknown_2023D6B +_08023274: .4byte gUnknown_2023F54 +_08023278: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 +_08023282: + str r0, [sp, 0x8] + ldr r1, _080232A4 @ =gUnknown_2023FE8 + ldr r0, _080232A8 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 1 + adds r0, 0xC8 + ldr r1, [r1] + adds r0, r1, r0 + str r0, [sp, 0xC] + ldrb r0, [r1, 0x13] + cmp r0, 0 + beq _08023334 + movs r5, 0x3F + ands r5, r0 + str r5, [sp, 0x4] + b _08023346 + .align 2, 0 +_080232A4: .4byte gUnknown_2023FE8 +_080232A8: .4byte gUnknown_2023D6B +_080232AC: + ldr r4, _080232C0 @ =gUnknown_2023BC4 + strb r2, [r4] + movs r0, 0 + movs r1, 0x1 + bl sub_800EB04 + ldrb r0, [r4] + bl sub_8017248 + b _0802379E + .align 2, 0 +_080232C0: .4byte gUnknown_2023BC4 +_080232C4: + ldr r4, _080232E8 @ =gUnknown_2023BC4 + strb r2, [r4] + movs r0, 0 + movs r1, 0 + bl sub_800EB04 + ldrb r0, [r4] + bl sub_8017248 + ldrb r1, [r6] + lsls r1, 2 + adds r1, r5 + ldr r0, [r1] + ldr r2, _080232EC @ =0xfffbff3f + ands r0, r2 + str r0, [r1] + b _0802379E + .align 2, 0 +_080232E8: .4byte gUnknown_2023BC4 +_080232EC: .4byte 0xfffbff3f +_080232F0: + strb r2, [r7] + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + ldr r0, _08023324 @ =gUnknown_2023FC4 + strb r4, [r0, 0x14] + bl sub_8022598 + ldr r2, _08023328 @ =gUnknown_81D65A8 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r9 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + bl sub_8017520 + ldr r1, _0802332C @ =gUnknown_2023D74 + ldr r0, _08023330 @ =gUnknown_81D96A8 + bl _08023BFC + .align 2, 0 +_08023324: .4byte gUnknown_2023FC4 +_08023328: .4byte gUnknown_81D65A8 +_0802332C: .4byte gUnknown_2023D74 +_08023330: .4byte gUnknown_81D96A8 +_08023334: + ldr r2, _0802334C @ =gUnknown_8250C04 + ldr r0, _08023350 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + str r0, [sp, 0x4] +_08023346: + ldr r1, _08023354 @ =gUnknown_2023FC4 + mov r12, r1 + b _08023362 + .align 2, 0 +_0802334C: .4byte gUnknown_8250C04 +_08023350: .4byte gUnknown_2023D4A +_08023354: .4byte gUnknown_2023FC4 +_08023358: + mov r2, r10 + cmp r2, 0 + beq _08023362 + bl _08023BE8 +_08023362: + mov r3, r12 + ldrb r0, [r3, 0x14] + cmp r0, 0x11 + bls _0802336E + bl _08023BB4 +_0802336E: + lsls r0, 2 + ldr r1, _08023378 @ =_0802337C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08023378: .4byte _0802337C + .align 2, 0 +_0802337C: + .4byte _080233C4 + .4byte _080234A0 + .4byte _0802355C + .4byte _08023580 + .4byte _08023598 + .4byte _080235C0 + .4byte _080235E4 + .4byte _0802368C + .4byte _08023702 + .4byte _08023738 + .4byte _080237D8 + .4byte _080236CC + .4byte _080236EC + .4byte _0802381C + .4byte _08023860 + .4byte _08023A40 + .4byte _08023B28 + .4byte _08023BB4 +_080233C4: + ldr r6, _0802347C @ =gUnknown_2023BE4 + ldr r5, _08023480 @ =gUnknown_2023D6C + ldrb r3, [r5] + movs r7, 0x58 + adds r2, r3, 0 + muls r2, r7 + adds r0, r6, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 16 + ands r0, r1 + cmp r0, 0 + bne _080233E4 + b _080237C8 +_080233E4: + adds r0, r2, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _080233EE + b _080237C8 +_080233EE: + ldr r0, _08023484 @ =gUnknown_2023D6B + ldrb r1, [r0] + cmp r1, r3 + bne _080233F8 + b _080237C8 +_080233F8: + adds r0, r1, 0 + bl sub_80751C4 + adds r4, r0, 0 + ldrb r0, [r5] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _08023410 + b _080237C8 +_08023410: + ldr r0, _08023488 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0802341E + b _080237C8 +_0802341E: + ldr r2, _0802348C @ =gUnknown_2023ECC + ldrb r3, [r5] + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _08023442 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _08023442 + b _080237C8 +_08023442: + ldr r2, _08023490 @ =gUnknown_8250C04 + ldr r0, _08023494 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _08023458 + b _080237C8 +_08023458: + adds r0, r3, 0 + muls r0, r7 + adds r1, r0, r6 + ldrb r2, [r1, 0x19] + movs r0, 0x19 + ldrsb r0, [r1, r0] + cmp r0, 0xB + ble _0802346A + b _080237C8 +_0802346A: + adds r0, r2, 0x1 + strb r0, [r1, 0x19] + bl sub_8017544 + ldr r1, _08023498 @ =gUnknown_2023D74 + ldr r0, _0802349C @ =gUnknown_81D8C48 + str r0, [r1] + b _080236FC + .align 2, 0 +_0802347C: .4byte gUnknown_2023BE4 +_08023480: .4byte gUnknown_2023D6C +_08023484: .4byte gUnknown_2023D6B +_08023488: .4byte gUnknown_2023DCC +_0802348C: .4byte gUnknown_2023ECC +_08023490: .4byte gUnknown_8250C04 +_08023494: .4byte gUnknown_2023D4A +_08023498: .4byte gUnknown_2023D74 +_0802349C: .4byte gUnknown_81D8C48 +_080234A0: + ldr r4, _0802353C @ =gUnknown_2023BE4 + ldr r6, _08023540 @ =gUnknown_2023D6C + ldrb r2, [r6] + movs r5, 0x58 + mov r12, r5 + mov r1, r12 + muls r1, r2 + adds r7, r4, 0 + adds r7, 0x4C + adds r5, r1, r7 + ldr r3, [r5] + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + bne _080234C0 + b _080237C8 +_080234C0: + adds r0, r1, r4 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _080234CA + b _080237C8 +_080234CA: + ldr r0, _08023544 @ =gUnknown_2023D6B + ldrb r0, [r0] + cmp r0, r2 + bne _080234D4 + b _080237C8 +_080234D4: + ldr r0, _08023548 @ =gUnknown_2023ECC + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0xC + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + bne _080234E8 + b _080237C8 +_080234E8: + ldr r0, _0802354C @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _080234F6 + b _080237C8 +_080234F6: + ldr r0, [sp, 0x4] + cmp r0, 0xA + beq _080234FE + b _080237C8 +_080234FE: + movs r0, 0x21 + negs r0, r0 + ands r3, r0 + str r3, [r5] + ldr r4, _08023550 @ =gUnknown_2023BC4 + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r6] + mov r1, r12 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + bl sub_8017544 + ldr r1, _08023554 @ =gUnknown_2023D74 + ldr r0, _08023558 @ =gUnknown_81D9098 + str r0, [r1] + movs r2, 0x1 + mov r10, r2 + b _080237C8 + .align 2, 0 +_0802353C: .4byte gUnknown_2023BE4 +_08023540: .4byte gUnknown_2023D6C +_08023544: .4byte gUnknown_2023D6B +_08023548: .4byte gUnknown_2023ECC +_0802354C: .4byte gUnknown_2023DCC +_08023550: .4byte gUnknown_2023BC4 +_08023554: .4byte gUnknown_2023D74 +_08023558: .4byte gUnknown_81D9098 +_0802355C: + ldr r0, _0802357C @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x7 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _08023576 + b _080237C8 +_08023576: + movs r3, 0x1 + mov r10, r3 + b _080237C8 + .align 2, 0 +_0802357C: .4byte gUnknown_2023D6C +_08023580: + ldr r0, _08023594 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x4 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + b _080236F6 + .align 2, 0 +_08023594: .4byte gUnknown_2023D6C +_08023598: + movs r0, 0 + str r0, [sp] + movs r0, 0x5 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _080235B0 + b _080237C8 +_080235B0: + movs r5, 0x1 + mov r10, r5 + ldr r0, _080235BC @ =gUnknown_2023FC4 + mov r12, r0 + b _08023BB4 + .align 2, 0 +_080235BC: .4byte gUnknown_2023FC4 +_080235C0: + ldr r0, _080235E0 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _080235DA + b _080237C8 +_080235DA: + movs r1, 0x1 + mov r10, r1 + b _080237C8 + .align 2, 0 +_080235E0: .4byte gUnknown_2023D6B +_080235E4: + ldr r0, _08023674 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _08023628 + ldr r2, [sp, 0x8] + cmp r2, 0x1D + bne _08023628 + ldr r0, _08023678 @ =gUnknown_2023D4C + ldrh r2, [r0] + adds r3, r0, 0 + cmp r2, 0xA5 + beq _08023628 + ldr r4, [sp, 0xC] + ldrh r1, [r4] + cmp r1, 0 + beq _08023610 + ldr r0, _0802367C @ =0x0000ffff + cmp r1, r0 + bne _08023628 +_08023610: + cmp r2, 0xE2 + bne _08023622 + ldr r0, _08023680 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08023622 + b _08023AFA +_08023622: + ldrh r0, [r3] + ldr r1, [sp, 0xC] + strh r0, [r1] +_08023628: + movs r4, 0 + ldr r2, _08023684 @ =gUnknown_2023BE4 + ldr r3, _08023688 @ =gUnknown_2023D6B + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r2, 0xC + adds r0, r2 + ldrh r0, [r0] + ldr r5, [sp, 0xC] + ldrh r1, [r5] + mov r9, r3 + cmp r0, r1 + beq _08023660 + mov r6, r9 + movs r3, 0x58 + adds r5, r1, 0 +_0802364A: + adds r4, 0x1 + cmp r4, 0x3 + bgt _08023660 + lsls r0, r4, 1 + ldrb r1, [r6] + muls r1, r3 + adds r0, r1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r5 + bne _0802364A +_08023660: + cmp r4, 0x4 + bne _0802366A + movs r0, 0 + ldr r1, [sp, 0xC] + strh r0, [r1] +_0802366A: + mov r2, r12 + ldrb r0, [r2, 0x14] + adds r0, 0x1 + strb r0, [r2, 0x14] + b _08023BB4 + .align 2, 0 +_08023674: .4byte gUnknown_2023DD0 +_08023678: .4byte gUnknown_2023D4C +_0802367C: .4byte 0x0000ffff +_08023680: .4byte gUnknown_2023DCC +_08023684: .4byte gUnknown_2023BE4 +_08023688: .4byte gUnknown_2023D6B +_0802368C: + movs r4, 0 + ldr r0, _080236C0 @ =gUnknown_2023BCC + ldrb r3, [r0] + cmp r4, r3 + blt _08023698 + b _08023846 +_08023698: + ldr r7, _080236C4 @ =gUnknown_2023FE8 + movs r6, 0 + movs r3, 0xD0 + adds r5, r0, 0 + ldr r2, _080236C8 @ =gUnknown_2023BE4 +_080236A2: + ldr r0, [r7] + adds r0, r3 + ldrh r1, [r0] + cmp r1, 0 + beq _080236B0 + strh r1, [r2, 0x2E] + strh r6, [r0] +_080236B0: + adds r3, 0x2 + adds r2, 0x58 + adds r4, 0x1 + ldrb r0, [r5] + cmp r4, r0 + blt _080236A2 + b _08023846 + .align 2, 0 +_080236C0: .4byte gUnknown_2023BCC +_080236C4: .4byte gUnknown_2023FE8 +_080236C8: .4byte gUnknown_2023BE4 +_080236CC: + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_801BC68 + lsls r0, 24 + cmp r0, 0 + beq _080237C8 + movs r2, 0x1 + mov r10, r2 + ldr r3, _080236E8 @ =gUnknown_2023FC4 + mov r12, r3 + b _08023BB4 + .align 2, 0 +_080236E8: .4byte gUnknown_2023FC4 +_080236EC: + movs r0, 0x4 + movs r1, 0 + movs r2, 0 + bl sub_801BC68 +_080236F6: + lsls r0, 24 + cmp r0, 0 + beq _080237C8 +_080236FC: + movs r4, 0x1 + mov r10, r4 + b _080237C8 +_08023702: + ldr r1, _08023728 @ =gUnknown_2023DFC + ldr r0, _0802372C @ =gUnknown_2023D6B + ldrb r2, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08023730 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08023718 + b _08023AFA +_08023718: + ldr r0, _08023734 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08023726 + b _080232AC +_08023726: + b _08023AFA + .align 2, 0 +_08023728: .4byte gUnknown_2023DFC +_0802372C: .4byte gUnknown_2023D6B +_08023730: .4byte 0x000400c0 +_08023734: .4byte gUnknown_2023DD0 +_08023738: + ldr r0, _080237A8 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _08023764 + ldr r1, _080237AC @ =gUnknown_2023DFC + ldr r0, _080237B0 @ =gUnknown_2023D6B + ldrb r2, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080237B4 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08023764 + adds r0, r2, 0 + bl sub_8017354 + lsls r0, 24 + cmp r0, 0 + beq _080237C8 +_08023764: + ldr r4, _080237B8 @ =gUnknown_2023BC4 + ldr r5, _080237B0 @ =gUnknown_2023D6B + ldrb r0, [r5] + strb r0, [r4] + movs r0, 0 + movs r1, 0 + bl sub_800EB04 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, _080237AC @ =gUnknown_2023DFC + ldrb r2, [r5] + lsls r2, 2 + adds r2, r0 + ldr r0, [r2] + ldr r1, _080237BC @ =0xfffbff3f + ands r0, r1 + str r0, [r2] + ldr r2, _080237C0 @ =gUnknown_2023ECC + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_0802379E: + ldr r1, _080237C4 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x14] + adds r0, 0x1 + strb r0, [r1, 0x14] + b _08023BFE + .align 2, 0 +_080237A8: .4byte gUnknown_2023DCC +_080237AC: .4byte gUnknown_2023DFC +_080237B0: .4byte gUnknown_2023D6B +_080237B4: .4byte 0x000400c0 +_080237B8: .4byte gUnknown_2023BC4 +_080237BC: .4byte 0xfffbff3f +_080237C0: .4byte gUnknown_2023ECC +_080237C4: .4byte gUnknown_2023FC4 +_080237C8: + ldr r1, _080237D4 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x14] + adds r0, 0x1 + strb r0, [r1, 0x14] + mov r12, r1 + b _08023BB4 + .align 2, 0 +_080237D4: .4byte gUnknown_2023FC4 +_080237D8: + ldr r0, _08023808 @ =gUnknown_2023ECC + ldr r6, _0802380C @ =gUnknown_2023D6C + ldrb r2, [r6] + lsls r3, r2, 2 + adds r1, r3, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + blt _08023846 + ldr r0, _08023810 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r2, r0 + bcs _08023846 + ldr r5, _08023814 @ =gUnknown_2023DFC + adds r0, r3, r5 + ldr r0, [r0] + ldr r1, _08023818 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08023806 + b _080232C4 +_08023806: + b _08023846 + .align 2, 0 +_08023808: .4byte gUnknown_2023ECC +_0802380C: .4byte gUnknown_2023D6C +_08023810: .4byte gUnknown_2023BCC +_08023814: .4byte gUnknown_2023DFC +_08023818: .4byte 0x000400c0 +_0802381C: + movs r4, 0 + ldr r0, _08023850 @ =gUnknown_2023BCC + ldrb r2, [r0] + cmp r4, r2 + bge _08023846 + ldr r2, _08023854 @ =gUnknown_2023E0C + ldr r5, _08023858 @ =0xfeffffff + adds r3, r0, 0 + ldr r1, _0802385C @ =gUnknown_2023C34 +_0802382E: + ldrb r0, [r2, 0xA] + cmp r0, 0 + bne _0802383A + ldr r0, [r1] + ands r0, r5 + str r0, [r1] +_0802383A: + adds r2, 0x1C + adds r1, 0x58 + adds r4, 0x1 + ldrb r0, [r3] + cmp r4, r0 + blt _0802382E +_08023846: + mov r1, r12 + ldrb r0, [r1, 0x14] + adds r0, 0x1 + strb r0, [r1, 0x14] + b _08023BB4 + .align 2, 0 +_08023850: .4byte gUnknown_2023BCC +_08023854: .4byte gUnknown_2023E0C +_08023858: .4byte 0xfeffffff +_0802385C: .4byte gUnknown_2023C34 +_08023860: + ldr r1, _08023914 @ =gUnknown_2023DD0 + ldr r3, [r1] + movs r0, 0x80 + lsls r0, 5 + ands r0, r3 + ldr r2, _08023918 @ =gUnknown_2023D6B + mov r9, r2 + adds r5, r1, 0 + cmp r0, 0 + beq _0802388A + ldr r0, _0802391C @ =gUnknown_2023BC4 + ldrb r2, [r2] + strb r2, [r0] + ldr r1, _08023920 @ =gUnknown_2023D6C + ldrb r0, [r1] + mov r4, r9 + strb r0, [r4] + strb r2, [r1] + ldr r0, _08023924 @ =0xffffefff + ands r3, r0 + str r3, [r5] +_0802388A: + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _080238A6 + ldr r0, _08023928 @ =gUnknown_2023D90 + mov r2, r9 + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + ldr r0, _0802392C @ =gUnknown_2023D4C + ldrh r0, [r0] + strh r0, [r1] +_080238A6: + ldr r0, _08023930 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08023934 @ =gUnknown_825E45C + mov r3, r9 + ldrb r4, [r3] + lsls r0, r4, 2 + adds r0, r2 + ldr r3, [r0] + ands r1, r3 + adds r6, r2, 0 + cmp r1, 0 + beq _080238C0 + b _08023A2C +_080238C0: + ldr r0, _08023938 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, 0x91 + ldrb r1, [r1] + ands r1, r3 + adds r7, r0, 0 + cmp r1, 0 + beq _080238D2 + b _08023A2C +_080238D2: + ldr r0, _0802393C @ =gUnknown_8250C04 + ldr r2, [sp, 0x18] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r1, [r1] + mov r8, r0 + cmp r1, 0x7F + bne _080238E8 + b _08023A2C +_080238E8: + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _0802394C + ldr r0, _08023940 @ =gUnknown_2023D98 + lsls r1, r4, 1 + adds r1, r0 + ldr r0, _0802392C @ =gUnknown_2023D4C + ldrh r0, [r0] + strh r0, [r1] + ldr r0, _08023944 @ =gUnknown_2023DB0 + mov r3, r9 + ldrb r1, [r3] + lsls r1, 1 + adds r1, r0 + ldr r0, _08023948 @ =gUnknown_2023D4A + ldrh r0, [r0] + strh r0, [r1] + b _08023966 + .align 2, 0 +_08023914: .4byte gUnknown_2023DD0 +_08023918: .4byte gUnknown_2023D6B +_0802391C: .4byte gUnknown_2023BC4 +_08023920: .4byte gUnknown_2023D6C +_08023924: .4byte 0xffffefff +_08023928: .4byte gUnknown_2023D90 +_0802392C: .4byte gUnknown_2023D4C +_08023930: .4byte gUnknown_2023D70 +_08023934: .4byte gUnknown_825E45C +_08023938: .4byte gUnknown_2023FE8 +_0802393C: .4byte gUnknown_8250C04 +_08023940: .4byte gUnknown_2023D98 +_08023944: .4byte gUnknown_2023DB0 +_08023948: .4byte gUnknown_2023D4A +_0802394C: + ldr r1, _080239B4 @ =gUnknown_2023D98 + lsls r0, r4, 1 + adds r0, r1 + ldr r1, _080239B8 @ =0x0000ffff + strh r1, [r0] + ldr r1, _080239BC @ =gUnknown_2023DB0 + mov r4, r9 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + movs r1, 0x1 + negs r1, r1 + strh r1, [r0] +_08023966: + ldr r2, _080239C0 @ =gUnknown_2023D6C + ldrb r3, [r2] + lsls r0, r3, 2 + adds r0, r6 + ldr r0, [r0] + lsls r0, 28 + ldr r1, [r5] + ands r1, r0 + cmp r1, 0 + bne _08023984 + ldr r0, _080239C4 @ =gUnknown_2023DC0 + adds r0, r3, r0 + mov r3, r9 + ldrb r1, [r3] + strb r1, [r0] +_08023984: + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _08023A20 + ldr r0, _080239C8 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _08023A20 + ldr r0, _080239CC @ =gUnknown_2023D4C + ldrh r3, [r0] + ldr r0, _080239B8 @ =0x0000ffff + cmp r3, r0 + bne _080239D4 + ldr r1, _080239D0 @ =gUnknown_2023DA0 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + strh r3, [r0] + b _08023A2C + .align 2, 0 +_080239B4: .4byte gUnknown_2023D98 +_080239B8: .4byte 0x0000ffff +_080239BC: .4byte gUnknown_2023DB0 +_080239C0: .4byte gUnknown_2023D6C +_080239C4: .4byte gUnknown_2023DC0 +_080239C8: .4byte gUnknown_2023DCC +_080239CC: .4byte gUnknown_2023D4C +_080239D0: .4byte gUnknown_2023DA0 +_080239D4: + ldr r0, _080239F8 @ =gUnknown_2023DA0 + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + ldr r4, _080239FC @ =gUnknown_2023D4A + ldrh r0, [r4] + strh r0, [r1] + ldr r0, [r7] + ldrb r3, [r0, 0x13] + cmp r3, 0 + beq _08023A04 + ldr r0, _08023A00 @ =gUnknown_2023DA8 + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + movs r0, 0x3F + ands r0, r3 + b _08023A2A + .align 2, 0 +_080239F8: .4byte gUnknown_2023DA0 +_080239FC: .4byte gUnknown_2023D4A +_08023A00: .4byte gUnknown_2023DA8 +_08023A04: + ldr r0, _08023A1C @ =gUnknown_2023DA8 + ldrb r2, [r2] + lsls r2, 1 + adds r2, r0 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x2] + strh r0, [r2] + b _08023A2C + .align 2, 0 +_08023A1C: .4byte gUnknown_2023DA8 +_08023A20: + ldr r0, _08023A38 @ =gUnknown_2023DA0 + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + ldr r0, _08023A3C @ =0x0000ffff +_08023A2A: + strh r0, [r1] +_08023A2C: + mov r4, r12 + ldrb r0, [r4, 0x14] + adds r0, 0x1 + strb r0, [r4, 0x14] + b _08023BB4 + .align 2, 0 +_08023A38: .4byte gUnknown_2023DA0 +_08023A3C: .4byte 0x0000ffff +_08023A40: + ldr r0, _08023B04 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r7, _08023B08 @ =gUnknown_825E45C + ldr r2, _08023B0C @ =gUnknown_2023D6B + ldrb r3, [r2] + lsls r0, r3, 2 + adds r0, r7 + ldr r4, [r0] + ands r1, r4 + mov r9, r2 + cmp r1, 0 + bne _08023AFA + ldr r6, _08023B10 @ =gUnknown_2023FE8 + ldr r5, [r6] + adds r0, r5, 0 + adds r0, 0x91 + ldrb r0, [r0] + ands r0, r4 + cmp r0, 0 + bne _08023AFA + ldr r1, _08023B14 @ =gUnknown_8250C04 + ldr r2, [sp, 0x18] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08023AFA + ldr r0, _08023B18 @ =gUnknown_2023DD0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 18 + ands r0, r1 + cmp r0, 0 + beq _08023AFA + ldr r4, _08023B1C @ =gUnknown_2023D6C + ldrb r0, [r4] + cmp r3, r0 + beq _08023AFA + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + lsls r0, 28 + ands r1, r0 + cmp r1, 0 + bne _08023AFA + ldr r0, _08023B20 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _08023AFA + lsls r1, r2, 1 + adds r1, r5 + adds r1, 0x98 + ldr r3, _08023B24 @ =gUnknown_2023D4C + ldrh r0, [r3] + strb r0, [r1] + ldrb r1, [r4] + ldr r0, [r6] + lsls r1, 1 + adds r1, r0 + adds r1, 0x99 + ldrh r0, [r3] + lsrs r0, 8 + strb r0, [r1] + ldrb r0, [r4] + mov r2, r9 + ldrb r1, [r2] + ldr r2, [r6] + lsls r0, 3 + lsls r1, 1 + adds r0, r1 + adds r0, r2 + adds r0, 0xE0 + ldrh r1, [r3] + strb r1, [r0] + ldrb r1, [r4] + mov r4, r9 + ldrb r0, [r4] + ldr r2, [r6] + lsls r1, 3 + lsls r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0xE1 + ldrh r0, [r3] + lsrs r0, 8 + strb r0, [r1] +_08023AFA: + mov r5, r12 + ldrb r0, [r5, 0x14] + adds r0, 0x1 + strb r0, [r5, 0x14] + b _08023BB4 + .align 2, 0 +_08023B04: .4byte gUnknown_2023D70 +_08023B08: .4byte gUnknown_825E45C +_08023B0C: .4byte gUnknown_2023D6B +_08023B10: .4byte gUnknown_2023FE8 +_08023B14: .4byte gUnknown_8250C04 +_08023B18: .4byte gUnknown_2023DD0 +_08023B1C: .4byte gUnknown_2023D6C +_08023B20: .4byte gUnknown_2023DCC +_08023B24: .4byte gUnknown_2023D4C +_08023B28: + ldr r5, _08023C10 @ =gUnknown_2023DD0 + ldr r2, [r5] + movs r0, 0x80 + lsls r0, 12 + ands r0, r2 + cmp r0, 0 + bne _08023BAC + ldr r0, _08023C14 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08023BAC + ldr r1, _08023C18 @ =gUnknown_2023E8C + ldr r0, _08023C1C @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x1] + lsls r0, 29 + cmp r0, 0 + blt _08023BAC + ldr r0, _08023C20 @ =gUnknown_8250C04 + mov r9, r0 + ldr r1, _08023C24 @ =gUnknown_2023D4A + mov r8, r1 + ldrh r0, [r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r1, r9 + ldrb r0, [r1, 0x6] + cmp r0, 0x8 + bne _08023BAC + movs r6, 0x80 + lsls r6, 2 + adds r4, r6, 0 + ands r4, r2 + cmp r4, 0 + bne _08023BAC + ldr r7, _08023C28 @ =gUnknown_2023D6C + ldrb r0, [r7] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _08023C2C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08023BA2 + bl _080232F0 +_08023BA2: + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + ldr r2, _08023C30 @ =gUnknown_2023FC4 + mov r12, r2 +_08023BAC: + mov r3, r12 + ldrb r0, [r3, 0x14] + adds r0, 0x1 + strb r0, [r3, 0x14] +_08023BB4: + ldr r4, [sp, 0x10] + cmp r4, 0x1 + bne _08023BC6 + mov r5, r10 + cmp r5, 0 + bne _08023BC6 + movs r0, 0x11 + mov r1, r12 + strb r0, [r1, 0x14] +_08023BC6: + ldr r2, [sp, 0x10] + cmp r2, 0x2 + bne _08023BDC + ldr r4, [sp, 0x14] + mov r3, r12 + ldrb r3, [r3, 0x14] + cmp r4, r3 + bne _08023BDC + movs r0, 0x11 + mov r4, r12 + strb r0, [r4, 0x14] +_08023BDC: + mov r5, r12 + ldrb r0, [r5, 0x14] + cmp r0, 0x11 + beq _08023BE8 + bl _08023358 +_08023BE8: + mov r1, r12 + ldrb r0, [r1, 0x14] + cmp r0, 0x11 + bne _08023BFE + mov r2, r10 + cmp r2, 0 + bne _08023BFE + ldr r1, _08023C34 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x3 +_08023BFC: + str r0, [r1] +_08023BFE: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08023C10: .4byte gUnknown_2023DD0 +_08023C14: .4byte gUnknown_2022B4C +_08023C18: .4byte gUnknown_2023E8C +_08023C1C: .4byte gUnknown_2023D6B +_08023C20: .4byte gUnknown_8250C04 +_08023C24: .4byte gUnknown_2023D4A +_08023C28: .4byte gUnknown_2023D6C +_08023C2C: .4byte gUnknown_2023BE4 +_08023C30: .4byte gUnknown_2023FC4 +_08023C34: .4byte gUnknown_2023D74 + thumb_func_end sub_8023210 + + thumb_func_start sub_8023C38 +sub_8023C38: @ 8023C38 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r4, 0 + movs r5, 0 + ldr r2, _08023C9C @ =gUnknown_8250C04 + ldr r0, _08023CA0 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r8, r0 + ldr r2, _08023CA4 @ =gUnknown_2023BE4 + ldr r3, _08023CA8 @ =gUnknown_2023D6C + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + mov r12, r2 + adds r7, r3, 0 + cmp r0, 0x1A + bne _08023CCC + mov r1, r8 + cmp r1, 0x4 + bne _08023CCC + ldr r3, _08023CAC @ =gUnknown_2023D6A + strb r0, [r3] + ldr r2, _08023CB0 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x9 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08023CB4 @ =gUnknown_2023DA0 + ldrb r0, [r7] + lsls r0, 1 + adds r0, r1 + strh r4, [r0] + ldr r0, _08023CB8 @ =gUnknown_2023E82 + mov r2, r8 + strb r2, [r0, 0x6] + ldrb r0, [r7] + ldrb r1, [r3] + bl sub_80C71D0 + b _08023DAE + .align 2, 0 +_08023C9C: .4byte gUnknown_8250C04 +_08023CA0: .4byte gUnknown_2023D4A +_08023CA4: .4byte gUnknown_2023BE4 +_08023CA8: .4byte gUnknown_2023D6C +_08023CAC: .4byte gUnknown_2023D6A +_08023CB0: .4byte gUnknown_2023DCC +_08023CB4: .4byte gUnknown_2023DA0 +_08023CB8: .4byte gUnknown_2023E82 +_08023CBC: + ldr r0, _08023CC8 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] + b _08023DAE + .align 2, 0 +_08023CC8: .4byte gUnknown_2023DCC +_08023CCC: + ldr r1, _08023CD8 @ =gUnknown_824F050 + adds r0, r5, r1 + ldrb r0, [r0] + adds r6, r1, 0 + b _08023D8E + .align 2, 0 +_08023CD8: .4byte gUnknown_824F050 +_08023CDC: + adds r0, r5, r6 + ldrb r0, [r0] + cmp r0, r8 + bne _08023D88 + adds r2, r5, 0x1 + adds r3, r2, r6 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r0, 0x21 + ldrb r1, [r3] + adds r3, r2, 0 + ldrb r0, [r0] + cmp r1, r0 + bne _08023D1A + adds r0, r5, 0x2 + adds r0, r6 + ldrb r1, [r0] + cmp r1, 0 + beq _08023CBC + cmp r1, 0x5 + bne _08023D0E + movs r0, 0x4 + orrs r4, r0 +_08023D0E: + cmp r1, 0x14 + bne _08023D1A + movs r0, 0x2 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08023D1A: + adds r2, r3, r6 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _08023D88 + adds r0, 0x21 + ldrb r1, [r0] + cmp r1, r2 + beq _08023D42 + adds r0, r5, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _08023CBC +_08023D42: + cmp r1, r2 + beq _08023D58 + adds r0, r5, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x5 + bne _08023D58 + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08023D58: + adds r2, r3, r6 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _08023D88 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _08023D88 + adds r0, r5, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x14 + bne _08023D88 + movs r0, 0x2 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08023D88: + adds r5, 0x3 + adds r0, r5, r6 + ldrb r0, [r0] +_08023D8E: + cmp r0, 0xFF + beq _08023DAE + cmp r0, 0xFE + bne _08023CDC + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + mov r1, r12 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _08023D88 +_08023DAE: + ldr r2, _08023E5C @ =gUnknown_2023BE4 + ldr r0, _08023E60 @ =gUnknown_2023D6C + mov r8, r0 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r6, [r0] + cmp r6, 0x19 + bne _08023E2A + movs r5, 0x29 + ands r5, r4 + cmp r5, 0 + bne _08023E2A + ldr r0, _08023E64 @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r7, _08023E68 @ =gUnknown_2023D4A + ldrh r1, [r7] + bl sub_802A224 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bne _08023E2A + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08023DF0 + movs r0, 0x6 + ands r4, r0 + cmp r4, 0x6 + bne _08023E2A +_08023DF0: + ldr r2, _08023E6C @ =gUnknown_8250C04 + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _08023E2A + ldr r3, _08023E70 @ =gUnknown_2023D6A + strb r6, [r3] + ldr r2, _08023E74 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08023E78 @ =gUnknown_2023DA0 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + strh r5, [r0] + ldr r1, _08023E7C @ =gUnknown_2023E82 + movs r0, 0x3 + strb r0, [r1, 0x6] + ldrb r0, [r2] + ldrb r1, [r3] + bl sub_80C71D0 +_08023E2A: + ldr r0, _08023E74 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08023E48 + ldr r2, _08023E80 @ =gUnknown_2023E8C + ldr r0, _08023E64 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 4 + adds r1, r2 + ldrb r0, [r1, 0x1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1, 0x1] +_08023E48: + ldr r1, _08023E84 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08023E5C: .4byte gUnknown_2023BE4 +_08023E60: .4byte gUnknown_2023D6C +_08023E64: .4byte gUnknown_2023D6B +_08023E68: .4byte gUnknown_2023D4A +_08023E6C: .4byte gUnknown_8250C04 +_08023E70: .4byte gUnknown_2023D6A +_08023E74: .4byte gUnknown_2023DCC +_08023E78: .4byte gUnknown_2023DA0 +_08023E7C: .4byte gUnknown_2023E82 +_08023E80: .4byte gUnknown_2023E8C +_08023E84: .4byte gUnknown_2023D74 + thumb_func_end sub_8023C38 + + thumb_func_start sub_8023E88 +sub_8023E88: @ 8023E88 + push {r4,lr} + ldr r4, _08023EC4 @ =gUnknown_2023BC4 + ldr r0, _08023EC8 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r4] + ldr r2, _08023ECC @ =gUnknown_2023DD0 + ldr r1, _08023ED0 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + ands r0, r1 + cmp r0, 0 + bne _08023EB6 + movs r0, 0 + movs r1, 0 + bl sub_800E0B4 + ldrb r0, [r4] + bl sub_8017248 +_08023EB6: + ldr r1, _08023ED4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08023EC4: .4byte gUnknown_2023BC4 +_08023EC8: .4byte gUnknown_2023D6B +_08023ECC: .4byte gUnknown_2023DD0 +_08023ED0: .4byte gUnknown_825E45C +_08023ED4: .4byte gUnknown_2023D74 + thumb_func_end sub_8023E88 + + thumb_func_start sub_8023ED8 +sub_8023ED8: @ 8023ED8 + push {r4,r5,lr} + ldr r0, _08023F30 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08023F28 + ldr r5, _08023F34 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _08023F38 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r3, _08023F3C @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r2, r0, 1 + adds r2, r3 + ldr r1, _08023F40 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x5C + ldrb r0, [r0] + strh r0, [r2] + ldr r1, _08023F44 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0] + movs r0, 0 + movs r1, 0 + bl sub_800DFA4 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_08023F28: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08023F30: .4byte gUnknown_2023BC8 +_08023F34: .4byte gUnknown_2023D74 +_08023F38: .4byte gUnknown_2023BC4 +_08023F3C: .4byte gUnknown_2023BCE +_08023F40: .4byte gUnknown_2023FE8 +_08023F44: .4byte gUnknown_825E45C + thumb_func_end sub_8023ED8 + + thumb_func_start sub_8023F48 +sub_8023F48: @ 8023F48 + push {r4-r7,lr} + sub sp, 0x58 + ldr r0, _080240A0 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _08023F56 + b _08024098 +_08023F56: + ldr r0, _080240A4 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _080240A8 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r6, _080240AC @ =gUnknown_2023BE4 + ldrb r0, [r4] + movs r5, 0x58 + adds r1, r0, 0 + muls r1, r5 + adds r1, r6 + mov r0, sp + movs r2, 0x58 + bl memcpy + ldrb r0, [r4] + muls r0, r5 + adds r3, r0, r6 + movs r2, 0 + ldr r5, _080240B0 @ =gUnknown_20233C4 + adds r7, r4, 0 +_08023F84: + adds r0, r3, r2 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x57 + bls _08023F84 + ldr r4, _080240AC @ =gUnknown_2023BE4 + ldrb r0, [r7] + movs r6, 0x58 + adds r2, r0, 0 + muls r2, r6 + adds r2, r4 + ldr r3, _080240B4 @ =gUnknown_8254784 + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x6] + adds r2, 0x21 + strb r0, [r2] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + adds r1, r4 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x7] + adds r1, 0x22 + strb r0, [r1] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + adds r1, r4 + ldrh r0, [r1] + ldrb r1, [r1, 0x17] + lsrs r1, 7 + bl sub_8040D38 + ldrb r1, [r7] + muls r1, r6 + adds r1, r4 + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080240B8 @ =gUnknown_2023F20 + adds r0, 0x29 + adds r0, r2, r0 + ldrb r1, [r0] + ldr r3, _080240BC @ =gUnknown_825E45C + ldr r2, _080240C0 @ =gUnknown_2023BCE + ldrb r5, [r7] + lsls r0, r5, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + mov r12, r4 + cmp r1, 0 + beq _08024022 + adds r0, r5, 0 + muls r0, r6 + add r0, r12 + movs r1, 0 + strh r1, [r0, 0x2E] +_08024022: + ldr r2, _080240C4 @ =gUnknown_8250C04 + ldr r0, _080240C8 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x7F + bne _08024068 + movs r2, 0 + adds r4, r7, 0 + movs r6, 0x58 + mov r5, r12 + adds r5, 0x18 + add r3, sp, 0x18 +_08024042: + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r6 + adds r1, r2, r1 + adds r1, r5 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x7 + ble _08024042 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + mov r1, r12 + adds r1, 0x50 + adds r0, r1 + ldr r1, [sp, 0x50] + str r1, [r0] +_08024068: + bl sub_8012760 + ldr r0, _080240CC @ =gUnknown_2023FC4 + ldr r3, _080240A8 @ =gUnknown_2023BC4 + ldrb r2, [r3] + strb r2, [r0, 0x17] + ldr r1, _080240D0 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + ldr r2, _080240C0 @ =gUnknown_2023BCE + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _080240A4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08024098: + add sp, 0x58 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080240A0: .4byte gUnknown_2023BC8 +_080240A4: .4byte gUnknown_2023D74 +_080240A8: .4byte gUnknown_2023BC4 +_080240AC: .4byte gUnknown_2023BE4 +_080240B0: .4byte gUnknown_20233C4 +_080240B4: .4byte gUnknown_8254784 +_080240B8: .4byte gUnknown_2023F20 +_080240BC: .4byte gUnknown_825E45C +_080240C0: .4byte gUnknown_2023BCE +_080240C4: .4byte gUnknown_8250C04 +_080240C8: .4byte gUnknown_2023D4A +_080240CC: .4byte gUnknown_2023FC4 +_080240D0: .4byte gUnknown_2022AB8 + thumb_func_end sub_8023F48 + + thumb_func_start sub_80240D4 +sub_80240D4: @ 80240D4 + push {r4-r6,lr} + ldr r0, _08024168 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08024160 + ldr r0, _0802416C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r6, _08024170 @ =gUnknown_2023BC4 + strb r0, [r6] + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0802412A + ldr r0, _08024174 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08024178 @ =0x0001aa02 + ands r0, r1 + cmp r0, 0 + bne _0802412A + ldr r4, _0802417C @ =gUnknown_2023BE4 + ldrb r0, [r6] + movs r5, 0x58 + muls r0, r5 + adds r0, r4 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r6] + muls r1, r5 + adds r4, 0x48 + adds r1, r4 + ldr r2, [r1] + movs r1, 0x2 + bl sub_8044898 +_0802412A: + ldr r2, _08024180 @ =gUnknown_2023D70 + ldr r1, _08024184 @ =gUnknown_825E45C + ldr r5, _08024170 @ =gUnknown_2023BC4 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldr r1, _08024188 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrb r1, [r0] + ldr r4, _0802416C @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r2, [r0, 0x2] + movs r0, 0 + bl sub_800E090 + ldrb r0, [r5] + bl sub_8017248 + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] +_08024160: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08024168: .4byte gUnknown_2023BC8 +_0802416C: .4byte gUnknown_2023D74 +_08024170: .4byte gUnknown_2023BC4 +_08024174: .4byte gUnknown_2022B4C +_08024178: .4byte 0x0001aa02 +_0802417C: .4byte gUnknown_2023BE4 +_08024180: .4byte gUnknown_2023D70 +_08024184: .4byte gUnknown_825E45C +_08024188: .4byte gUnknown_2023BCE + thumb_func_end sub_80240D4 + + thumb_func_start sub_802418C +sub_802418C: @ 802418C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _080241F0 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r1, [r0, 0x1] + movs r0, 0x7F + ands r0, r1 + bl sub_8016E24 + ldr r3, _080241F4 @ =gUnknown_2023BC4 + strb r0, [r3] + ldr r2, [r4] + ldrb r1, [r2, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08024204 + ldr r1, _080241F8 @ =gUnknown_2023BE4 + ldrb r3, [r3] + movs r0, 0x58 + muls r0, r3 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080241FC @ =0x0400e000 + ands r0, r1 + cmp r0, 0 + bne _080241D8 + ldr r1, _08024200 @ =gUnknown_2023DFC + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _08024204 +_080241D8: + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _08024388 + .align 2, 0 +_080241F0: .4byte gUnknown_2023D74 +_080241F4: .4byte gUnknown_2023BC4 +_080241F8: .4byte gUnknown_2023BE4 +_080241FC: .4byte 0x0400e000 +_08024200: .4byte gUnknown_2023DFC +_08024204: + ldr r5, _08024290 @ =gUnknown_2022B4C + ldr r0, [r5] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080242A4 + ldr r4, _08024294 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08024298 @ =gUnknown_2024284 + mov r8, r1 + cmp r0, 0x1 + bne _08024228 + ldr r0, _0802429C @ =gUnknown_202402C + mov r8, r0 +_08024228: + movs r5, 0 + ldrb r0, [r4] + bl sub_8043658 + lsls r0, 24 + lsrs r0, 24 + bl sub_8043620 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _08024242 + movs r5, 0x3 +_08024242: + adds r6, r5, 0x3 + cmp r5, r6 + bge _0802428A + ldr r7, _080242A0 @ =gUnknown_2023BCE +_0802424A: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08024284 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _08024284 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08024284 + ldr r0, _08024294 @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + cmp r0, r5 + bne _0802428A +_08024284: + adds r5, 0x1 + cmp r5, r6 + blt _0802424A +_0802428A: + cmp r5, r6 + beq _08024358 + b _08024380 + .align 2, 0 +_08024290: .4byte gUnknown_2022B4C +_08024294: .4byte gUnknown_2023BC4 +_08024298: .4byte gUnknown_2024284 +_0802429C: .4byte gUnknown_202402C +_080242A0: .4byte gUnknown_2023BCE +_080242A4: + ldr r0, _080242D4 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _080242E4 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r5] + ands r0, r4 + cmp r0, 0 + beq _080242D8 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + b _080242DA + .align 2, 0 +_080242D4: .4byte gUnknown_2023BC4 +_080242D8: + adds r6, r7, 0 +_080242DA: + ldr r0, _080242E0 @ =gUnknown_202402C + mov r8, r0 + b _0802430A + .align 2, 0 +_080242E0: .4byte gUnknown_202402C +_080242E4: + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r5] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08024304 + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + b _08024306 +_08024304: + adds r6, r7, 0 +_08024306: + ldr r1, _08024374 @ =gUnknown_2024284 + mov r8, r1 +_0802430A: + movs r5, 0 +_0802430C: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0802434E + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0802434E + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0802434E + ldr r1, _08024378 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _0802434E + lsls r0, r6, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r5, r0 + bne _08024354 +_0802434E: + adds r5, 0x1 + cmp r5, 0x5 + ble _0802430C +_08024354: + cmp r5, 0x6 + bne _08024380 +_08024358: + ldr r3, _0802437C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _08024388 + .align 2, 0 +_08024374: .4byte gUnknown_2024284 +_08024378: .4byte gUnknown_2023BCE +_0802437C: .4byte gUnknown_2023D74 +_08024380: + ldr r1, _08024394 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] +_08024388: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024394: .4byte gUnknown_2023D74 + thumb_func_end sub_802418C + + thumb_func_start sub_8024398 +sub_8024398: @ 8024398 + push {r4,r5,lr} + sub sp, 0x4 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r4, _080243E0 @ =gUnknown_2023BC4 + ldrb r0, [r4] + ldr r5, _080243E4 @ =gUnknown_2023FE8 + ldr r1, [r5] + adds r1, r0, r1 + adds r1, 0x58 + ldr r3, _080243E8 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r4] + lsls r1, r0, 1 + adds r1, r0 + adds r1, 0x60 + ldr r0, [r5] + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x1 + movs r3, 0 + bl sub_800E590 + ldrb r0, [r4] + bl sub_8017248 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080243E0: .4byte gUnknown_2023BC4 +_080243E4: .4byte gUnknown_2023FE8 +_080243E8: .4byte gUnknown_2023BCE + thumb_func_end sub_8024398 + + thumb_func_start sub_80243EC +sub_80243EC: @ 80243EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r7, 0 + movs r0, 0 + mov r9, r0 + ldr r6, _08024498 @ =gUnknown_2023D74 + ldr r2, [r6] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + mov r8, r1 + ldrb r1, [r2, 0x1] + adds r0, r1, 0 + mov r12, r6 + cmp r0, 0x5 + beq _08024422 + b _080248B8 +_08024422: + ldr r0, _0802449C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x41 + ands r1, r0 + cmp r1, 0x1 + beq _08024510 + ldr r1, _080244A0 @ =gUnknown_2023BC4 + strb r7, [r1] + ldr r0, _080244A4 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r7, r0 + bcc _0802443C + b _080248A6 +_0802443C: + ldr r7, _080244A8 @ =gUnknown_2023DD0 + ldr r6, _080244AC @ =gUnknown_825E45C + adds r4, r1, 0 + ldr r2, _080244B0 @ =gUnknown_2023D70 + mov r8, r2 +_08024446: + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r7] + ands r0, r1 + cmp r0, 0 + beq _080244E8 + adds r0, r2, 0 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _080244B4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + mov r2, r8 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r7] + bics r0, r1 + str r0, [r7] + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 + b _080244F6 + .align 2, 0 +_08024498: .4byte gUnknown_2023D74 +_0802449C: .4byte gUnknown_2022B4C +_080244A0: .4byte gUnknown_2023BC4 +_080244A4: .4byte gUnknown_2023BCC +_080244A8: .4byte gUnknown_2023DD0 +_080244AC: .4byte gUnknown_825E45C +_080244B0: .4byte gUnknown_2023D70 +_080244B4: + ldr r5, _080244E4 @ =gUnknown_2023ECC + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _080244F6 + movs r0, 0x6 + bl sub_8024398 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _080244F6 + .align 2, 0 +_080244E4: .4byte gUnknown_2023ECC +_080244E8: + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 +_080244F6: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _0802450C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08024446 + b _080248A6 + .align 2, 0 +_0802450C: .4byte gUnknown_2023BCC +_08024510: + ands r0, r1 + cmp r0, 0 + bne _08024518 + b _080248A6 +_08024518: + ldr r0, _08024570 @ =gUnknown_2023DD0 + mov r8, r0 + ldr r0, [r0] + lsrs r5, r0, 28 + ldr r6, _08024574 @ =gUnknown_825E45C + ldr r0, [r6] + ands r0, r5 + cmp r0, 0 + beq _080245CE + ldr r4, _08024578 @ =gUnknown_2023BC4 + strb r7, [r4] + movs r0, 0 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _08024580 + ldr r2, _0802457C @ =gUnknown_2023D70 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + mov r2, r8 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl sub_800E9A4 + ldrb r0, [r4] + bl sub_8017248 + b _080245CE + .align 2, 0 +_08024570: .4byte gUnknown_2023DD0 +_08024574: .4byte gUnknown_825E45C +_08024578: .4byte gUnknown_2023BC4 +_0802457C: .4byte gUnknown_2023D70 +_08024580: + ldr r6, _080245B4 @ =gUnknown_2023ECC + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _080245BC + ldr r0, _080245B8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x5E + ldrb r0, [r0] + bl sub_8024398 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _080245CE + .align 2, 0 +_080245B4: .4byte gUnknown_2023ECC +_080245B8: .4byte gUnknown_2023FE8 +_080245BC: + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 + movs r0, 0x1 + mov r9, r0 +_080245CE: + ldr r6, _08024628 @ =gUnknown_825E45C + ldr r0, [r6, 0x8] + ands r0, r5 + cmp r0, 0 + beq _0802468C + ldr r0, [r6] + ands r0, r5 + cmp r0, 0 + bne _0802468C + ldr r4, _0802462C @ =gUnknown_2023BC4 + movs r0, 0x2 + strb r0, [r4] + movs r0, 0x2 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _08024638 + ldr r2, _08024630 @ =gUnknown_2023D70 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _08024634 @ =gUnknown_2023DD0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl sub_800E9A4 + ldrb r0, [r4] + bl sub_8017248 + b _0802468C + .align 2, 0 +_08024628: .4byte gUnknown_825E45C +_0802462C: .4byte gUnknown_2023BC4 +_08024630: .4byte gUnknown_2023D70 +_08024634: .4byte gUnknown_2023DD0 +_08024638: + ldr r6, _0802466C @ =gUnknown_2023ECC + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08024674 + ldr r0, _08024670 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x5C + ldrb r0, [r0] + bl sub_8024398 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0802468C + .align 2, 0 +_0802466C: .4byte gUnknown_2023ECC +_08024670: .4byte gUnknown_2023FE8 +_08024674: + movs r0, 0x1 + mov r1, r9 + ands r0, r1 + cmp r0, 0 + bne _0802468C + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 +_0802468C: + ldr r6, _080246DC @ =gUnknown_825E45C + ldr r0, [r6, 0x4] + ands r0, r5 + cmp r0, 0 + beq _0802473E + ldr r4, _080246E0 @ =gUnknown_2023BC4 + movs r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _080246EC + ldr r2, _080246E4 @ =gUnknown_2023D70 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _080246E8 @ =gUnknown_2023DD0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl sub_800E9A4 + ldrb r0, [r4] + bl sub_8017248 + b _0802473E + .align 2, 0 +_080246DC: .4byte gUnknown_825E45C +_080246E0: .4byte gUnknown_2023BC4 +_080246E4: .4byte gUnknown_2023D70 +_080246E8: .4byte gUnknown_2023DD0 +_080246EC: + ldr r6, _08024720 @ =gUnknown_2023ECC + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08024728 + ldr r0, _08024724 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x5F + ldrb r0, [r0] + bl sub_8024398 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0802473E + .align 2, 0 +_08024720: .4byte gUnknown_2023ECC +_08024724: .4byte gUnknown_2023FE8 +_08024728: + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 + movs r0, 0x2 + mov r2, r9 + orrs r2, r0 + mov r9, r2 +_0802473E: + ldr r6, _08024798 @ =gUnknown_825E45C + ldr r0, [r6, 0xC] + ands r0, r5 + cmp r0, 0 + beq _080247FC + ldr r0, [r6, 0x4] + ands r0, r5 + cmp r0, 0 + bne _080247FC + ldr r4, _0802479C @ =gUnknown_2023BC4 + movs r0, 0x3 + strb r0, [r4] + movs r0, 0x3 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _080247A8 + ldr r2, _080247A0 @ =gUnknown_2023D70 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _080247A4 @ =gUnknown_2023DD0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl sub_800E9A4 + ldrb r0, [r4] + bl sub_8017248 + b _080247FC + .align 2, 0 +_08024798: .4byte gUnknown_825E45C +_0802479C: .4byte gUnknown_2023BC4 +_080247A0: .4byte gUnknown_2023D70 +_080247A4: .4byte gUnknown_2023DD0 +_080247A8: + ldr r6, _080247DC @ =gUnknown_2023ECC + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _080247E4 + ldr r0, _080247E0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x5D + ldrb r0, [r0] + bl sub_8024398 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _080247FC + .align 2, 0 +_080247DC: .4byte gUnknown_2023ECC +_080247E0: .4byte gUnknown_2023FE8 +_080247E4: + movs r0, 0x2 + mov r1, r9 + ands r1, r0 + cmp r1, 0 + bne _080247FC + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 +_080247FC: + ldr r1, _0802482C @ =gUnknown_2023ECC + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08024850 + adds r0, r1, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + blt _08024850 + cmp r5, 0 + beq _08024850 + ldr r0, _08024830 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r0, _08024834 @ =gUnknown_825E45C + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0802483C + ldr r1, _08024838 @ =gUnknown_2023BC4 + movs r0, 0x2 + strb r0, [r1] + b _08024840 + .align 2, 0 +_0802482C: .4byte gUnknown_2023ECC +_08024830: .4byte gUnknown_2023D70 +_08024834: .4byte gUnknown_825E45C +_08024838: .4byte gUnknown_2023BC4 +_0802483C: + ldr r0, _08024880 @ =gUnknown_2023BC4 + strb r1, [r0] +_08024840: + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldr r0, _08024880 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 +_08024850: + ldr r1, _08024884 @ =gUnknown_2023ECC + ldrb r0, [r1, 0x14] + lsls r0, 25 + cmp r0, 0 + blt _080248A6 + adds r0, r1, 0 + adds r0, 0x3C + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + blt _080248A6 + cmp r5, 0 + beq _080248A6 + ldr r0, _08024888 @ =gUnknown_2023D70 + ldrb r0, [r0] + ldr r1, _0802488C @ =gUnknown_825E45C + ldr r1, [r1, 0x4] + ands r0, r1 + cmp r0, 0 + beq _08024890 + ldr r1, _08024880 @ =gUnknown_2023BC4 + movs r0, 0x3 + b _08024894 + .align 2, 0 +_08024880: .4byte gUnknown_2023BC4 +_08024884: .4byte gUnknown_2023ECC +_08024888: .4byte gUnknown_2023D70 +_0802488C: .4byte gUnknown_825E45C +_08024890: + ldr r1, _080248B0 @ =gUnknown_2023BC4 + movs r0, 0x1 +_08024894: + strb r0, [r1] + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldr r0, _080248B0 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 +_080248A6: + ldr r1, _080248B4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] + b _08024C2E + .align 2, 0 +_080248B0: .4byte gUnknown_2023BC4 +_080248B4: .4byte gUnknown_2023D74 +_080248B8: + cmp r0, 0x6 + beq _080248BE + b _08024AAC +_080248BE: + ldr r0, _08024934 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080248CC + b _08024A48 +_080248CC: + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + bne _080248D6 + b _08024A48 +_080248D6: + ldr r7, _08024938 @ =gUnknown_2023DD0 + ldr r0, [r7] + lsrs r5, r0, 28 + ldr r4, _0802493C @ =gUnknown_825E45C + ldr r0, [r4, 0x8] + ands r0, r5 + cmp r0, 0 + beq _0802497E + ldr r0, [r4] + ands r0, r5 + cmp r0, 0 + beq _0802497E + ldr r6, _08024940 @ =gUnknown_2023BC4 + movs r0, 0x2 + strb r0, [r6] + ldr r0, _08024944 @ =gUnknown_20233C4 + ldrb r1, [r0, 0x1] + movs r0, 0x2 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _0802494C + ldr r2, _08024948 @ =gUnknown_2023D70 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r7] + bics r0, r1 + str r0, [r7] + movs r0, 0 + bl sub_800E9A4 + ldrb r0, [r6] + bl sub_8017248 + b _0802497E + .align 2, 0 +_08024934: .4byte gUnknown_2022B4C +_08024938: .4byte gUnknown_2023DD0 +_0802493C: .4byte gUnknown_825E45C +_08024940: .4byte gUnknown_2023BC4 +_08024944: .4byte gUnknown_20233C4 +_08024948: .4byte gUnknown_2023D70 +_0802494C: + ldr r4, _080249DC @ =gUnknown_2023ECC + ldrb r0, [r6] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _0802497E + ldr r0, _080249E0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x5C + ldrb r0, [r0] + bl sub_8024398 + ldrb r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_0802497E: + ldr r4, _080249E4 @ =gUnknown_825E45C + ldr r0, [r4, 0xC] + ands r0, r5 + cmp r0, 0 + beq _08024A2E + ldr r0, [r4, 0x4] + ands r5, r0 + cmp r5, 0 + beq _08024A2E + ldr r5, _080249E8 @ =gUnknown_2023BC4 + movs r0, 0x3 + strb r0, [r5] + ldr r0, _080249EC @ =gUnknown_20233C4 + ldr r2, _080249F0 @ =0x00000201 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x3 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _080249FC + ldr r2, _080249F4 @ =gUnknown_2023D70 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _080249F8 @ =gUnknown_2023DD0 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl sub_800E9A4 + ldrb r0, [r5] + bl sub_8017248 + b _08024A2E + .align 2, 0 +_080249DC: .4byte gUnknown_2023ECC +_080249E0: .4byte gUnknown_2023FE8 +_080249E4: .4byte gUnknown_825E45C +_080249E8: .4byte gUnknown_2023BC4 +_080249EC: .4byte gUnknown_20233C4 +_080249F0: .4byte 0x00000201 +_080249F4: .4byte gUnknown_2023D70 +_080249F8: .4byte gUnknown_2023DD0 +_080249FC: + ldr r4, _08024A3C @ =gUnknown_2023ECC + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08024A2E + ldr r0, _08024A40 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x5D + ldrb r0, [r0] + bl sub_8024398 + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_08024A2E: + ldr r1, _08024A44 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] + mov r12, r1 + b _08024A4C + .align 2, 0 +_08024A3C: .4byte gUnknown_2023ECC +_08024A40: .4byte gUnknown_2023FE8 +_08024A44: .4byte gUnknown_2023D74 +_08024A48: + adds r0, r2, 0x6 + str r0, [r6] +_08024A4C: + ldr r0, _08024A9C @ =gUnknown_2023DD0 + ldr r0, [r0] + lsrs r5, r0, 28 + ldr r1, _08024AA0 @ =gUnknown_2023D6D + movs r0, 0 + strb r0, [r1] + ldr r4, _08024AA4 @ =gUnknown_825E45C + ldr r2, [r4] + ands r2, r5 + ldr r6, _08024AA8 @ =gUnknown_2023BCC + cmp r2, 0 + bne _08024A88 + adds r7, r6, 0 + ldrb r0, [r6] + cmp r2, r0 + bcs _08024A88 + adds r3, r1, 0 +_08024A6E: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + ldrb r2, [r3] + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + ands r0, r5 + cmp r0, 0 + bne _08024A88 + ldrb r0, [r7] + cmp r2, r0 + bcc _08024A6E +_08024A88: + ldrb r0, [r1] + ldrb r6, [r6] + cmp r0, r6 + beq _08024A92 + b _08024C2E +_08024A92: + mov r1, r8 + mov r2, r12 + str r1, [r2] + b _08024C2E + .align 2, 0 +_08024A9C: .4byte gUnknown_2023DD0 +_08024AA0: .4byte gUnknown_2023D6D +_08024AA4: .4byte gUnknown_825E45C +_08024AA8: .4byte gUnknown_2023BCC +_08024AAC: + movs r0, 0x80 + ands r0, r1 + movs r5, 0x1 + cmp r0, 0 + beq _08024AB8 + movs r5, 0 +_08024AB8: + movs r0, 0x7F + ands r0, r1 + bl sub_8016E24 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _08024AE0 @ =gUnknown_2023ECC + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + bge _08024AE4 + ldr r0, [r6] + adds r0, 0x6 + str r0, [r6] + b _08024C2E + .align 2, 0 +_08024AE0: .4byte gUnknown_2023ECC +_08024AE4: + adds r0, r7, 0 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + beq _08024B34 + ldr r2, _08024B24 @ =gUnknown_2023BC4 + strb r7, [r2] + ldr r3, _08024B28 @ =gUnknown_2023D70 + ldr r4, _08024B2C @ =gUnknown_825E45C + ldrb r0, [r2] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + ldr r3, _08024B30 @ =gUnknown_2023DD0 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + mov r0, r8 + str r0, [r6] + b _08024C2E + .align 2, 0 +_08024B24: .4byte gUnknown_2023BC4 +_08024B28: .4byte gUnknown_2023D70 +_08024B2C: .4byte gUnknown_825E45C +_08024B30: .4byte gUnknown_2023DD0 +_08024B34: + ldr r4, _08024BD8 @ =gUnknown_2023BC4 + strb r7, [r4] + ldrb r0, [r4] + ldr r3, _08024BDC @ =gUnknown_2023FE8 + ldr r1, [r3] + adds r1, r0, r1 + adds r1, 0x58 + ldr r2, _08024BE0 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + ldr r3, [r3] + adds r0, r3 + adds r0, 0x5C + ldrb r2, [r0] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + adds r0, 0x60 + adds r3, r0 + str r3, [sp] + movs r0, 0 + adds r1, r5, 0 + movs r3, 0 + bl sub_800E590 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r6] + adds r0, 0x6 + str r0, [r6] + ldrb r0, [r4] + bl sub_80751D8 + lsls r0, 24 + cmp r0, 0 + bne _08024B94 + ldr r1, _08024BE4 @ =gUnknown_3004F90 + ldrb r0, [r1, 0x2] + cmp r0, 0xFE + bhi _08024B94 + adds r0, 0x1 + strb r0, [r1, 0x2] +_08024B94: + ldr r0, _08024BE8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08024BF0 + ldr r1, _08024BD8 @ =gUnknown_2023BC4 + movs r0, 0 + strb r0, [r1] + ldr r0, _08024BEC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r0, 0 + beq _08024C2E + adds r4, r1, 0 +_08024BB0: + ldrb r0, [r4] + cmp r0, r7 + beq _08024BC4 + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 +_08024BC4: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _08024BEC @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08024BB0 + b _08024C2E + .align 2, 0 +_08024BD8: .4byte gUnknown_2023BC4 +_08024BDC: .4byte gUnknown_2023FE8 +_08024BE0: .4byte gUnknown_2023BCE +_08024BE4: .4byte gUnknown_3004F90 +_08024BE8: .4byte gUnknown_2022B4C +_08024BEC: .4byte gUnknown_2023BCC +_08024BF0: + adds r0, r7, 0 + bl sub_80751D8 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r4, _08024C3C @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r0, _08024C40 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08024C44 @ =gUnknown_825E45C + ldrb r3, [r4] + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08024C20 + movs r0, 0x2 + eors r3, r0 + strb r3, [r4] +_08024C20: + movs r0, 0 + movs r1, 0x2 + bl sub_800EB54 + ldrb r0, [r4] + bl sub_8017248 +_08024C2E: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024C3C: .4byte gUnknown_2023BC4 +_08024C40: .4byte gUnknown_2023D70 +_08024C44: .4byte gUnknown_825E45C + thumb_func_end sub_80243EC + + thumb_func_start sub_8024C48 +sub_8024C48: @ 8024C48 + push {r4-r7,lr} + ldr r0, _08024C74 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _08024C54 + b _08024E16 +_08024C54: + ldr r4, _08024C78 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r7, _08024C7C @ =gUnknown_2023BC4 + strb r0, [r7] + ldr r0, [r4] + ldrb r0, [r0, 0x2] + cmp r0, 0x1 + beq _08024CC4 + cmp r0, 0x1 + bgt _08024C80 + cmp r0, 0 + beq _08024C86 + b _08024E0E + .align 2, 0 +_08024C74: .4byte gUnknown_2023BC8 +_08024C78: .4byte gUnknown_2023D74 +_08024C7C: .4byte gUnknown_2023BC4 +_08024C80: + cmp r0, 0x2 + beq _08024CE0 + b _08024E0E +_08024C86: + movs r3, 0 + ldr r0, _08024CB8 @ =gUnknown_2023BCC + ldrb r1, [r0] + cmp r3, r1 + blt _08024C92 + b _08024E0E +_08024C92: + ldr r6, _08024CBC @ =gUnknown_2023FE8 + ldr r2, _08024CC0 @ =gUnknown_20233C4 + movs r5, 0x80 + lsls r5, 2 + adds r4, r0, 0 +_08024C9C: + ldrb r0, [r2] + cmp r0, 0x22 + bne _08024CAC + ldr r0, [r6] + adds r0, r3, r0 + adds r0, 0x5C + ldrb r1, [r2, 0x1] + strb r1, [r0] +_08024CAC: + adds r2, r5 + adds r3, 0x1 + ldrb r0, [r4] + cmp r3, r0 + blt _08024C9C + b _08024E0E + .align 2, 0 +_08024CB8: .4byte gUnknown_2023BCC +_08024CBC: .4byte gUnknown_2023FE8 +_08024CC0: .4byte gUnknown_20233C4 +_08024CC4: + ldr r0, _08024CDC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08024CD2 + b _08024E0E +_08024CD2: + ldrb r0, [r7] + bl sub_8013F6C + b _08024E0E + .align 2, 0 +_08024CDC: .4byte gUnknown_2022B4C +_08024CE0: + ldr r1, _08024DAC @ =gUnknown_2023E82 + ldr r4, _08024DB0 @ =gUnknown_20233C4 + ldrb r0, [r7] + lsls r0, 9 + adds r2, r4, 0x1 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldr r6, _08024DB4 @ =gUnknown_2023FE8 + ldr r1, [r6] + adds r1, r0, r1 + adds r1, 0x5C + lsls r0, 9 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _08024DB8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08024DBC + ldrb r0, [r7] + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r2, [r1] + movs r0, 0xF + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + lsls r0, 9 + adds r5, r4, 0x2 + adds r0, r5 + ldrb r2, [r0] + movs r3, 0xF0 + adds r0, r3, 0 + ands r0, r2 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + ldrb r1, [r7] + ldr r2, [r6] + lsls r0, r1, 1 + adds r0, r1 + adds r0, r2 + adds r0, 0x61 + lsls r1, 9 + adds r4, 0x3 + mov r12, r4 + add r1, r12 + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r7] + movs r4, 0x2 + eors r0, r4 + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r2, [r1] + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + eors r0, r4 + ldr r2, [r6] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r2 + adds r1, 0x60 + ldrb r0, [r7] + lsls r0, 9 + adds r0, r5 + ldrb r0, [r0] + ands r3, r0 + lsrs r3, 4 + ldrb r0, [r1] + orrs r3, r0 + strb r3, [r1] + ldrb r0, [r7] + eors r4, r0 + ldr r0, [r6] + lsls r1, r4, 1 + adds r1, r4 + adds r1, r0 + adds r1, 0x62 + ldrb r0, [r7] + lsls r0, 9 + add r0, r12 + ldrb r0, [r0] + strb r0, [r1] + b _08024DC2 + .align 2, 0 +_08024DAC: .4byte gUnknown_2023E82 +_08024DB0: .4byte gUnknown_20233C4 +_08024DB4: .4byte gUnknown_2023FE8 +_08024DB8: .4byte gUnknown_2022B4C +_08024DBC: + ldrb r0, [r7] + bl sub_8013F6C +_08024DC2: + ldr r1, _08024E1C @ =gUnknown_2022AB8 + movs r5, 0xFD + strb r5, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + ldr r4, _08024E20 @ =gUnknown_2023BE4 + ldr r3, _08024E24 @ =gUnknown_2023D6B + ldrb r0, [r3] + movs r2, 0x58 + muls r0, r2 + adds r0, r4 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r3] + muls r0, r2 + adds r0, r4 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r2, _08024E28 @ =gUnknown_2022AC8 + strb r5, [r2] + movs r0, 0x7 + strb r0, [r2, 0x1] + ldr r3, _08024E2C @ =gUnknown_2023BC4 + ldrb r0, [r3] + strb r0, [r2, 0x2] + ldr r1, _08024E30 @ =gUnknown_20233C4 + ldrb r0, [r3] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2, 0x3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r2, 0x4] +_08024E0E: + ldr r1, _08024E34 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x3 + str r0, [r1] +_08024E16: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024E1C: .4byte gUnknown_2022AB8 +_08024E20: .4byte gUnknown_2023BE4 +_08024E24: .4byte gUnknown_2023D6B +_08024E28: .4byte gUnknown_2022AC8 +_08024E2C: .4byte gUnknown_2023BC4 +_08024E30: .4byte gUnknown_20233C4 +_08024E34: .4byte gUnknown_2023D74 + thumb_func_end sub_8024C48 + + thumb_func_start sub_8024E38 +sub_8024E38: @ 8024E38 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r6, _08024F40 @ =gUnknown_2023D74 + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _08024F44 @ =gUnknown_2023BC4 + strb r0, [r4] + ldrb r0, [r4] + bl sub_80174B8 + ldr r2, _08024F48 @ =gUnknown_2023DD0 + ldr r1, _08024F4C @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + ldr r2, _08024F50 @ =gUnknown_2023ECC + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1] + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r4] + bl sub_80751C4 + ldr r5, _08024F54 @ =gUnknown_2023DDE + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + mov r8, r0 + ands r0, r1 + cmp r0, 0 + bne _08024F88 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08024F88 + ldr r1, _08024F58 @ =gUnknown_2023BE4 + mov r9, r1 + ldrb r2, [r4] + movs r7, 0x58 + adds r0, r2, 0 + muls r0, r7 + adds r1, r0, r1 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08024F88 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08024F88 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + beq _08024F88 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r2, [r0] + mov r1, r8 + orrs r1, r2 + strh r1, [r0] + ldrb r0, [r4] + bl sub_80751C4 + ldr r2, _08024F5C @ =gUnknown_2023DE4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0xA] + movs r1, 0x5 + subs r1, r0 + lsls r1, 25 + lsrs r1, 24 + ldr r5, _08024F60 @ =gUnknown_2023D50 + ldrb r0, [r4] + muls r0, r7 + add r0, r9 + ldrh r0, [r0, 0x2C] + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _08024F28 + movs r0, 0x1 + str r0, [r5] +_08024F28: + ldr r0, _08024F64 @ =gUnknown_2023FC4 + ldrb r1, [r4] + strb r1, [r0, 0x17] + bl sub_8017544 + ldr r0, [r6] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _08024F6C + ldr r0, _08024F68 @ =gUnknown_81D8CBE + str r0, [r6] + b _080250C6 + .align 2, 0 +_08024F40: .4byte gUnknown_2023D74 +_08024F44: .4byte gUnknown_2023BC4 +_08024F48: .4byte gUnknown_2023DD0 +_08024F4C: .4byte gUnknown_825E45C +_08024F50: .4byte gUnknown_2023ECC +_08024F54: .4byte gUnknown_2023DDE +_08024F58: .4byte gUnknown_2023BE4 +_08024F5C: .4byte gUnknown_2023DE4 +_08024F60: .4byte gUnknown_2023D50 +_08024F64: .4byte gUnknown_2023FC4 +_08024F68: .4byte gUnknown_81D8CBE +_08024F6C: + cmp r0, 0x1 + bne _08024F7C + ldr r0, _08024F78 @ =gUnknown_81D8C87 + str r0, [r6] + b _080250C6 + .align 2, 0 +_08024F78: .4byte gUnknown_81D8C87 +_08024F7C: + ldr r0, _08024F84 @ =gUnknown_81D8CF5 + str r0, [r6] + b _080250C6 + .align 2, 0 +_08024F84: .4byte gUnknown_81D8CF5 +_08024F88: + ldr r1, _08025064 @ =gUnknown_2023BE4 + ldr r5, _08025068 @ =gUnknown_2023BC4 + ldrb r2, [r5] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x36 + bne _08024FAE + ldr r1, _0802506C @ =gUnknown_2023E0C + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x18] +_08024FAE: + ldrb r1, [r5] + movs r0, 0 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08024FC4 + b _080250C6 +_08024FC4: + ldrb r1, [r5] + movs r0, 0 + movs r2, 0 + bl sub_801BC68 + lsls r0, 24 + cmp r0, 0 + bne _080250C6 + ldrb r0, [r5] + bl sub_80751C4 + ldr r1, _08025070 @ =gUnknown_2023DDE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r2, [r0] + ldr r1, _08025074 @ =0x0000fdff + ands r1, r2 + strh r1, [r0] + movs r4, 0 + ldr r0, _08025078 @ =gUnknown_2023BCC + ldrb r3, [r0] + cmp r4, r3 + bge _08025012 + ldr r6, _0802507C @ =gUnknown_2023BDE + ldr r3, _08025080 @ =gUnknown_2023BDA + movs r2, 0xC + adds r1, r0, 0 +_08024FFC: + adds r0, r4, r6 + ldrb r0, [r0] + ldrb r7, [r5] + cmp r0, r7 + bne _0802500A + adds r0, r4, r3 + strb r2, [r0] +_0802500A: + adds r4, 0x1 + ldrb r0, [r1] + cmp r4, r0 + blt _08024FFC +_08025012: + movs r4, 0 + ldr r0, _08025078 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bge _08025046 + ldr r6, _08025084 @ =gUnknown_2023FE8 + ldr r5, _08025064 @ =gUnknown_2023BE4 +_08025020: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 23 + adds r0, 0xA8 + ldr r1, [r6] + adds r1, r0 + movs r0, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x28] + strh r0, [r1] + adds r4, 0x1 + ldr r0, _08025078 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _08025020 +_08025046: + ldr r0, _08025088 @ =gUnknown_2023D74 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x5 + bne _080250C0 + ldr r0, _0802508C @ =gUnknown_2023DD0 + ldr r0, [r0] + lsrs r4, r0, 28 + ldr r1, _08025090 @ =gUnknown_2023D6D + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r2, _08025094 @ =gUnknown_825E45C + b _080250A6 + .align 2, 0 +_08025064: .4byte gUnknown_2023BE4 +_08025068: .4byte gUnknown_2023BC4 +_0802506C: .4byte gUnknown_2023E0C +_08025070: .4byte gUnknown_2023DDE +_08025074: .4byte 0x0000fdff +_08025078: .4byte gUnknown_2023BCC +_0802507C: .4byte gUnknown_2023BDE +_08025080: .4byte gUnknown_2023BDA +_08025084: .4byte gUnknown_2023FE8 +_08025088: .4byte gUnknown_2023D74 +_0802508C: .4byte gUnknown_2023DD0 +_08025090: .4byte gUnknown_2023D6D +_08025094: .4byte gUnknown_825E45C +_08025098: + ldr r0, _080250D4 @ =gUnknown_2023BCC + ldrb r3, [r1] + ldrb r0, [r0] + cmp r3, r0 + bcs _080250C0 + adds r0, r3, 0x1 + strb r0, [r1] +_080250A6: + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r3, [r0] + adds r0, r4, 0 + ands r0, r3 + cmp r0, 0 + beq _08025098 + ldr r0, _080250D8 @ =gUnknown_2023D70 + ldrb r0, [r0] + ands r0, r3 + cmp r0, 0 + bne _08025098 +_080250C0: + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_080250C6: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080250D4: .4byte gUnknown_2023BCC +_080250D8: .4byte gUnknown_2023D70 + thumb_func_end sub_8024E38 + + thumb_func_start sub_80250DC +sub_80250DC: @ 80250DC + push {lr} + ldr r0, _080250EC @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _080250F0 + movs r0, 0 + b _080250F2 + .align 2, 0 +_080250EC: .4byte gUnknown_2023D74 +_080250F0: + movs r0, 0x1 +_080250F2: + bl sub_80751E8 + ldr r1, _08025114 @ =gUnknown_2023BC4 + strb r0, [r1] + movs r0, 0 + bl sub_800E0F4 + ldr r0, _08025114 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _08025118 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08025114: .4byte gUnknown_2023BC4 +_08025118: .4byte gUnknown_2023D74 + thumb_func_end sub_80250DC + + thumb_func_start sub_802511C +sub_802511C: @ 802511C + push {r4,r5,lr} + ldr r5, _0802514C @ =gUnknown_2023BC4 + ldr r0, _08025150 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _08025154 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0 + bl sub_800E9C4 + ldrb r0, [r5] + bl sub_8017248 + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802514C: .4byte gUnknown_2023BC4 +_08025150: .4byte gUnknown_2023D6B +_08025154: .4byte gUnknown_2023D74 + thumb_func_end sub_802511C + + thumb_func_start sub_8025158 +sub_8025158: @ 8025158 + push {r4,r5,lr} + ldr r5, _08025188 @ =gUnknown_2023BC4 + ldr r0, _0802518C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _08025190 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0 + bl sub_800E9F0 + ldrb r0, [r5] + bl sub_8017248 + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025188: .4byte gUnknown_2023BC4 +_0802518C: .4byte gUnknown_2023D6B +_08025190: .4byte gUnknown_2023D74 + thumb_func_end sub_8025158 + + thumb_func_start sub_8025194 +sub_8025194: @ 8025194 + push {r4,r5,lr} + ldr r5, _080251BC @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _080251C0 @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + bl sub_800EA1C + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080251BC: .4byte gUnknown_2023D74 +_080251C0: .4byte gUnknown_2023BC4 + thumb_func_end sub_8025194 + + thumb_func_start sub_80251C4 +sub_80251C4: @ 80251C4 + push {r4,lr} + movs r0, 0 + bl sub_80751E8 + ldr r4, _080251F0 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r0, _080251F4 @ =gUnknown_2023E8A + ldrb r1, [r0] + movs r0, 0 + bl sub_800EB94 + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _080251F8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080251F0: .4byte gUnknown_2023BC4 +_080251F4: .4byte gUnknown_2023E8A +_080251F8: .4byte gUnknown_2023D74 + thumb_func_end sub_80251C4 + + thumb_func_start sub_80251FC +sub_80251FC: @ 80251FC + push {r4,r5,lr} + ldr r5, _08025228 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _0802522C @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + movs r1, 0x1 + bl sub_800E0B4 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025228: .4byte gUnknown_2023D74 +_0802522C: .4byte gUnknown_2023BC4 + thumb_func_end sub_80251FC + + thumb_func_start sub_8025230 +sub_8025230: @ 8025230 + push {r4-r7,lr} + ldr r0, _080252A4 @ =gUnknown_2023D74 + ldr r2, [r0] + ldrb r6, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r6, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r6, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r6, r0 + ldrb r4, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r4, r0 + ldr r0, _080252A8 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080252AC @ =gUnknown_2024284 + adds r0, r1 + ldrb r1, [r2, 0x9] + bl sub_803EA88 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080252B0 @ =0x0000fffe + cmp r5, r0 + bne _0802529A + adds r7, r5, 0 +_0802527E: + ldr r0, _080252A8 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080252AC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + bl sub_803EA88 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r7 + beq _0802527E +_0802529A: + cmp r5, 0 + bne _080252B4 + ldr r0, _080252A4 @ =gUnknown_2023D74 + str r4, [r0] + b _0802535C + .align 2, 0 +_080252A4: .4byte gUnknown_2023D74 +_080252A8: .4byte gUnknown_2023FE8 +_080252AC: .4byte gUnknown_2024284 +_080252B0: .4byte 0x0000fffe +_080252B4: + ldr r0, _080252C4 @ =0x0000ffff + cmp r5, r0 + bne _080252CC + ldr r1, _080252C8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] + b _0802535C + .align 2, 0 +_080252C4: .4byte 0x0000ffff +_080252C8: .4byte gUnknown_2023D74 +_080252CC: + movs r0, 0 + bl sub_80751E8 + ldr r1, _08025364 @ =gUnknown_2023BC4 + strb r0, [r1] + ldr r2, _08025368 @ =gUnknown_2023BCE + ldrb r3, [r1] + lsls r0, r3, 1 + adds r0, r2 + ldr r1, _0802536C @ =gUnknown_2023FE8 + ldr r1, [r1] + ldrh r0, [r0] + ldrb r1, [r1, 0x10] + cmp r0, r1 + bne _0802530C + ldr r4, _08025370 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r2, r3, 0 + muls r2, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0802530C + adds r0, r2, r4 + adds r1, r5, 0 + bl sub_803E920 +_0802530C: + ldr r0, _08025374 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08025358 + movs r0, 0x2 + bl sub_80751E8 + ldr r1, _08025364 @ =gUnknown_2023BC4 + strb r0, [r1] + ldr r2, _08025368 @ =gUnknown_2023BCE + ldrb r3, [r1] + lsls r0, r3, 1 + adds r0, r2 + ldr r1, _0802536C @ =gUnknown_2023FE8 + ldr r1, [r1] + ldrh r0, [r0] + ldrb r1, [r1, 0x10] + cmp r0, r1 + bne _08025358 + ldr r4, _08025370 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r2, r3, 0 + muls r2, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08025358 + adds r0, r2, r4 + adds r1, r5, 0 + bl sub_803E920 +_08025358: + ldr r0, _08025378 @ =gUnknown_2023D74 + str r6, [r0] +_0802535C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025364: .4byte gUnknown_2023BC4 +_08025368: .4byte gUnknown_2023BCE +_0802536C: .4byte gUnknown_2023FE8 +_08025370: .4byte gUnknown_2023BE4 +_08025374: .4byte gUnknown_2022B4C +_08025378: .4byte gUnknown_2023D74 + thumb_func_end sub_8025230 + + thumb_func_start sub_802537C +sub_802537C: @ 802537C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r0, _080253A0 @ =gUnknown_2023BC4 + movs r1, 0 + strb r1, [r0] + ldr r0, _080253A4 @ =gUnknown_2023FC4 + ldrb r1, [r0, 0x1F] + adds r2, r0, 0 + cmp r1, 0x5 + bls _08025396 + b _080256D0 +_08025396: + lsls r0, r1, 2 + ldr r1, _080253A8 @ =_080253AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080253A0: .4byte gUnknown_2023BC4 +_080253A4: .4byte gUnknown_2023FC4 +_080253A8: .4byte _080253AC + .align 2, 0 +_080253AC: + .4byte _080253C4 + .4byte _080253FC + .4byte _080254A8 + .4byte _08025500 + .4byte _080256A4 + .4byte _080256C4 +_080253C4: + movs r4, 0 + str r4, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r0, _080253F0 @ =gUnknown_83FE791 + movs r1, 0xE + bl sub_80D87BC + ldr r1, _080253F4 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1F] + adds r0, 0x1 + strb r0, [r1, 0x1F] + ldr r0, _080253F8 @ =gUnknown_2023E82 + strb r4, [r0, 0x1] + bl sub_802DCB8 + b _080256D0 + .align 2, 0 +_080253F0: .4byte gUnknown_83FE791 +_080253F4: .4byte gUnknown_2023FC4 +_080253F8: .4byte gUnknown_2023E82 +_080253FC: + ldr r0, _08025484 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08025422 + ldr r4, _08025488 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08025422 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_08025422: + ldr r0, _08025484 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08025448 + ldr r4, _08025488 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08025448 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_08025448: + ldr r0, _08025484 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0802548C + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08025488 @ =gUnknown_2023E82 + ldrb r4, [r0, 0x1] + cmp r4, 0 + bne _0802549C + str r5, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080254D8 + .align 2, 0 +_08025484: .4byte gUnknown_30030F0 +_08025488: .4byte gUnknown_2023E82 +_0802548C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08025496 + b _080256D0 +_08025496: + movs r0, 0x5 + bl sub_80722CC +_0802549C: + ldr r1, _080254A4 @ =gUnknown_2023FC4 + movs r0, 0x4 + strb r0, [r1, 0x1F] + b _080256D0 + .align 2, 0 +_080254A4: .4byte gUnknown_2023FC4 +_080254A8: + ldr r0, _080254E4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080254B6 + b _080256D0 +_080254B6: + bl sub_8003ECC + ldr r0, _080254E8 @ =gUnknown_2024284 + ldr r1, _080254EC @ =gUnknown_2023FE8 + ldr r1, [r1] + ldrb r1, [r1, 0x10] + ldr r2, _080254F0 @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080254F4 @ =sub_8077764 + ldr r4, _080254F8 @ =gUnknown_2024022 + ldrh r4, [r4] + str r4, [sp] + bl sub_8134738 +_080254D8: + ldr r1, _080254FC @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1F] + adds r0, 0x1 + strb r0, [r1, 0x1F] + b _080256D0 + .align 2, 0 +_080254E4: .4byte gUnknown_2037AB8 +_080254E8: .4byte gUnknown_2024284 +_080254EC: .4byte gUnknown_2023FE8 +_080254F0: .4byte gUnknown_2024029 +_080254F4: .4byte sub_8077764 +_080254F8: .4byte gUnknown_2024022 +_080254FC: .4byte gUnknown_2023FC4 +_08025500: + ldr r0, _0802552C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802550E + b _080256D0 +_0802550E: + ldr r0, _08025530 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _08025534 @ =sub_8011100 + cmp r1, r0 + beq _0802551A + b _080256D0 +_0802551A: + bl sub_8138B2C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bne _0802553C + ldr r0, _08025538 @ =gUnknown_2023FC4 + strb r5, [r0, 0x1F] + b _080256D0 + .align 2, 0 +_0802552C: .4byte gUnknown_2037AB8 +_08025530: .4byte gUnknown_30030F0 +_08025534: .4byte sub_8011100 +_08025538: .4byte gUnknown_2023FC4 +_0802553C: + ldr r6, _08025578 @ =gUnknown_2023FE8 + ldr r0, [r6] + ldrb r0, [r0, 0x10] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r7, _0802557C @ =gUnknown_2024284 + adds r0, r7 + adds r1, r5, 0 + adds r1, 0xD + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80441B8 + cmp r0, 0 + beq _0802558C + ldr r0, _08025580 @ =0x0000013f + ldr r1, _08025584 @ =gUnknown_2023BC4 + ldrb r1, [r1] + bl sub_80173AC + ldr r1, _08025588 @ =gUnknown_2023FC4 + movs r0, 0x5 + strb r0, [r1, 0x1F] + b _080256D0 + .align 2, 0 +_08025578: .4byte gUnknown_2023FE8 +_0802557C: .4byte gUnknown_2024284 +_08025580: .4byte 0x0000013f +_08025584: .4byte gUnknown_2023BC4 +_08025588: .4byte gUnknown_2023FC4 +_0802558C: + ldr r3, _08025680 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + ldr r1, _08025684 @ =gUnknown_2022AC8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + strb r4, [r1, 0x2] + lsrs r0, r4, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r0, [r6] + ldrb r0, [r0, 0x10] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + adds r1, r5, 0 + bl sub_8041064 + ldr r0, [r6] + ldrb r0, [r0, 0x10] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + ldr r7, _08025688 @ =gUnknown_2024022 + ldrh r1, [r7] + adds r2, r5, 0 + bl sub_803E964 + ldr r0, _0802568C @ =gUnknown_2023BCE + ldr r1, [r6] + ldrh r0, [r0] + ldrb r1, [r1, 0x10] + cmp r0, r1 + bne _08025622 + ldr r4, _08025690 @ =gUnknown_2023BE4 + ldr r0, [r4, 0x50] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08025622 + ldr r0, _08025694 @ =gUnknown_2023E0C + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _08025698 @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08025622 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80410A0 + ldrh r1, [r7] + adds r0, r4, 0 + adds r2, r5, 0 + bl sub_803E9A4 +_08025622: + ldr r0, _0802569C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080256D0 + ldr r2, _0802568C @ =gUnknown_2023BCE + ldr r0, _080256A0 @ =gUnknown_2023FE8 + ldr r1, [r0] + ldrh r0, [r2, 0x4] + ldrb r1, [r1, 0x10] + cmp r0, r1 + bne _080256D0 + ldr r4, _08025690 @ =gUnknown_2023BE4 + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _080256D0 + ldr r0, _08025694 @ =gUnknown_2023E0C + adds r0, 0x50 + ldrb r1, [r0] + lsrs r1, 4 + ldr r2, _08025698 @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080256D0 + adds r4, 0xB0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80410A0 + ldr r0, _08025688 @ =gUnknown_2024022 + ldrh r1, [r0] + adds r0, r4, 0 + adds r2, r5, 0 + bl sub_803E9A4 + b _080256D0 + .align 2, 0 +_08025680: .4byte gUnknown_2023D74 +_08025684: .4byte gUnknown_2022AC8 +_08025688: .4byte gUnknown_2024022 +_0802568C: .4byte gUnknown_2023BCE +_08025690: .4byte gUnknown_2023BE4 +_08025694: .4byte gUnknown_2023E0C +_08025698: .4byte gUnknown_825E45C +_0802569C: .4byte gUnknown_2022B4C +_080256A0: .4byte gUnknown_2023FE8 +_080256A4: + movs r0, 0x1 + str r0, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r1, _080256C0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _080256D0 + .align 2, 0 +_080256C0: .4byte gUnknown_2023D74 +_080256C4: + ldr r0, _080256DC @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _080256D0 + movs r0, 0x2 + strb r0, [r2, 0x1F] +_080256D0: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080256DC: .4byte gUnknown_2023BC8 + thumb_func_end sub_802537C + + thumb_func_start sub_80256E0 +sub_80256E0: @ 80256E0 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _080256F4 @ =gUnknown_2023FC4 + ldrb r4, [r5, 0x1F] + cmp r4, 0 + beq _080256F8 + cmp r4, 0x1 + beq _08025728 + b _0802580E + .align 2, 0 +_080256F4: .4byte gUnknown_2023FC4 +_080256F8: + str r4, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r0, _08025720 @ =gUnknown_83FE791 + movs r1, 0xE + bl sub_80D87BC + ldrb r0, [r5, 0x1F] + adds r0, 0x1 + strb r0, [r5, 0x1F] + ldr r0, _08025724 @ =gUnknown_2023E82 + strb r4, [r0, 0x1] + bl sub_802DCB8 + b _0802580E + .align 2, 0 +_08025720: .4byte gUnknown_83FE791 +_08025724: .4byte gUnknown_2023E82 +_08025728: + ldr r0, _080257AC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802574E + ldr r4, _080257B0 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _0802574E + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_0802574E: + ldr r0, _080257AC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08025774 + ldr r4, _080257B0 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08025774 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_08025774: + ldr r0, _080257AC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080257D8 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080257B0 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _080257B8 + ldr r3, _080257B4 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080257C0 + .align 2, 0 +_080257AC: .4byte gUnknown_30030F0 +_080257B0: .4byte gUnknown_2023E82 +_080257B4: .4byte gUnknown_2023D74 +_080257B8: + ldr r1, _080257D4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080257C0: + movs r0, 0x1 + str r0, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + b _0802580E + .align 2, 0 +_080257D4: .4byte gUnknown_2023D74 +_080257D8: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802580E + movs r0, 0x5 + bl sub_80722CC + ldr r3, _08025818 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + str r4, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C +_0802580E: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025818: .4byte gUnknown_2023D74 + thumb_func_end sub_80256E0 + + thumb_func_start sub_802581C +sub_802581C: @ 802581C + push {r4,lr} + ldr r4, _08025888 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r2, _0802588C @ =gUnknown_2023BC4 + strb r0, [r2] + ldr r0, _08025890 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _080258A0 + ldr r0, _08025894 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + beq _0802586E + ldr r1, _08025898 @ =gUnknown_2023BE4 + ldrb r2, [r2] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _0802586E + ldr r0, _0802589C @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _080258A0 +_0802586E: + movs r0, 0 + bl sub_800E984 + ldr r0, _0802588C @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _08025888 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + b _080258A6 + .align 2, 0 +_08025888: .4byte gUnknown_2023D74 +_0802588C: .4byte gUnknown_2023BC4 +_08025890: .4byte gUnknown_2023DCC +_08025894: .4byte gUnknown_2023DD0 +_08025898: .4byte gUnknown_2023BE4 +_0802589C: .4byte gUnknown_2023E0C +_080258A0: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] +_080258A6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_802581C + + thumb_func_start sub_80258AC +sub_80258AC: @ 80258AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + movs r5, 0 + ldr r0, _080258F0 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x1 + beq _080258C0 + b _080259FA +_080258C0: + ldr r0, _080258F4 @ =gUnknown_20386AE + ldrh r2, [r0] + movs r1, 0x80 + lsls r1, 3 + cmp r2, r1 + bne _08025904 + ldr r0, _080258F8 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0] + adds r0, 0x94 + ldrb r2, [r0] + ldr r0, _080258FC @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x4A + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r4, r2, 0 + muls r4, r0 + ldr r0, _08025900 @ =gUnknown_3005008 + mov r8, r0 + b _080259E8 + .align 2, 0 +_080258F0: .4byte gUnknown_2023E8A +_080258F4: .4byte gUnknown_20386AE +_080258F8: .4byte gUnknown_2023FF4 +_080258FC: .4byte gUnknown_2023FE8 +_08025900: .4byte gUnknown_3005008 +_08025904: + ldr r2, _08025920 @ =gUnknown_823EAC8 + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r3, r0, 3 + adds r4, r3, r2 + ldrb r1, [r4] + cmp r1, 0x1 + beq _0802595A + cmp r1, 0x1 + bgt _08025924 + cmp r1, 0 + beq _0802592E + b _08025970 + .align 2, 0 +_08025920: .4byte gUnknown_823EAC8 +_08025924: + cmp r1, 0x2 + beq _08025944 + cmp r1, 0x3 + beq _0802595A + b _08025970 +_0802592E: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r1 + subs r0, 0x8 + b _0802596E +_08025944: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r1 + subs r0, 0x8 + b _0802596E +_0802595A: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + subs r0, 0x10 +_0802596E: + ldrb r5, [r0, 0x2] +_08025970: + ldr r0, _080259CC @ =gUnknown_824F220 + lsls r1, r6, 2 + adds r3, r1, r0 + ldrb r1, [r3] + ldr r7, _080259D0 @ =gUnknown_2023FE8 + mov r12, r0 + lsls r4, r5, 2 + ldr r5, _080259D4 @ =gUnknown_2022B4C + ldr r0, _080259D8 @ =gUnknown_3005008 + mov r8, r0 + cmp r1, 0xFF + beq _080259AA + ldr r2, _080259DC @ =gUnknown_823EAC8 + ldr r0, _080259E0 @ =gUnknown_20386AE + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r2, [r0, 0x1] + adds r1, r3, 0 +_0802599A: + ldrb r0, [r1] + cmp r0, r2 + beq _080259AA + adds r1, 0x4 + adds r6, 0x1 + ldrb r0, [r1] + cmp r0, 0xFF + bne _0802599A +_080259AA: + ldr r0, [r7] + adds r0, 0x4A + ldrb r0, [r0] + adds r3, r4, 0 + muls r3, r0 + lsls r0, r6, 2 + add r0, r12 + ldrb r2, [r0, 0x1] + ldr r0, [r5] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080259E4 + lsls r0, r2, 1 + adds r4, r3, 0 + muls r4, r0 + b _080259E8 + .align 2, 0 +_080259CC: .4byte gUnknown_824F220 +_080259D0: .4byte gUnknown_2023FE8 +_080259D4: .4byte gUnknown_2022B4C +_080259D8: .4byte gUnknown_3005008 +_080259DC: .4byte gUnknown_823EAC8 +_080259E0: .4byte gUnknown_20386AE +_080259E4: + adds r4, r3, 0 + muls r4, r2 +_080259E8: + mov r1, r8 + ldr r0, [r1] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + adds r1, r4, 0 + bl sub_809FDA0 + b _08025A00 +_080259FA: + bl sub_8054C04 + adds r4, r0, 0 +_08025A00: + ldr r1, _08025A40 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x4 + strb r0, [r1, 0x2] + movs r0, 0x5 + strb r0, [r1, 0x3] + strb r4, [r1, 0x4] + movs r0, 0xFF + lsls r0, 8 + ands r0, r4 + lsrs r0, 8 + strb r0, [r1, 0x5] + movs r0, 0xFF + lsls r0, 16 + ands r0, r4 + lsrs r0, 16 + strb r0, [r1, 0x6] + lsrs r0, r4, 24 + strb r0, [r1, 0x7] + movs r0, 0xFF + strb r0, [r1, 0x8] + cmp r4, 0 + beq _08025A48 + ldr r1, _08025A44 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08025A62 + .align 2, 0 +_08025A40: .4byte gUnknown_2022AB8 +_08025A44: .4byte gUnknown_2023D74 +_08025A48: + ldr r3, _08025A6C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08025A62: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025A6C: .4byte gUnknown_2023D74 + thumb_func_end sub_80258AC + + thumb_func_start sub_8025A70 +sub_8025A70: @ 8025A70 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _08025A94 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r6, _08025A98 @ =gUnknown_2023BC4 + strb r0, [r6] + ldr r5, _08025A9C @ =gUnknown_2023E82 + ldrb r0, [r5] + mov r8, r4 + cmp r0, 0 + beq _08025AA0 + cmp r0, 0x1 + beq _08025AB8 + b _08025B0C + .align 2, 0 +_08025A94: .4byte gUnknown_2023D74 +_08025A98: .4byte gUnknown_2023BC4 +_08025A9C: .4byte gUnknown_2023E82 +_08025AA0: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_800DFA4 + ldrb r0, [r6] + bl sub_8017248 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _08025B0C +_08025AB8: + ldr r0, _08025B18 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08025B0C + ldrb r0, [r6] + lsls r0, 9 + ldr r1, _08025B1C @ =gUnknown_20233C8 + adds r0, r1 + mov r12, r0 + movs r2, 0 + adds r4, r6, 0 + movs r5, 0x58 + ldr r6, _08025B20 @ =gUnknown_2023C08 + adds r7, r6, 0 + subs r7, 0x18 + mov r3, r12 + adds r3, 0xC +_08025ADA: + lsls r1, r2, 1 + ldrb r0, [r4] + muls r0, r5 + adds r1, r0 + adds r1, r7 + ldrh r0, [r3] + strh r0, [r1] + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r5 + adds r1, r2, r1 + adds r1, r6 + mov r0, r12 + adds r0, 0x24 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + ble _08025ADA + mov r1, r8 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08025B0C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025B18: .4byte gUnknown_2023BC8 +_08025B1C: .4byte gUnknown_20233C8 +_08025B20: .4byte gUnknown_2023C08 + thumb_func_end sub_8025A70 + + thumb_func_start sub_8025B24 +sub_8025B24: @ 8025B24 + push {lr} + ldr r0, _08025B4C @ =gUnknown_2023BC4 + ldr r2, _08025B50 @ =gUnknown_2023D6B + ldrb r3, [r2] + strb r3, [r0] + ldr r1, _08025B54 @ =gUnknown_2023D6C + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + ldr r2, _08025B58 @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 5 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _08025B60 + ldr r0, _08025B5C @ =0xffffefff + ands r1, r0 + b _08025B62 + .align 2, 0 +_08025B4C: .4byte gUnknown_2023BC4 +_08025B50: .4byte gUnknown_2023D6B +_08025B54: .4byte gUnknown_2023D6C +_08025B58: .4byte gUnknown_2023DD0 +_08025B5C: .4byte 0xffffefff +_08025B60: + orrs r1, r3 +_08025B62: + str r1, [r2] + ldr r1, _08025B70 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08025B70: .4byte gUnknown_2023D74 + thumb_func_end sub_8025B24 + + thumb_func_start sub_8025B74 +sub_8025B74: @ 8025B74 + push {lr} + ldr r0, _08025B9C @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08025B8E + ldr r0, _08025BA0 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8054E90 +_08025B8E: + ldr r1, _08025BA0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08025B9C: .4byte gUnknown_2023D6B +_08025BA0: .4byte gUnknown_2023D74 + thumb_func_end sub_8025B74 + + thumb_func_start sub_8025BA4 +sub_8025BA4: @ 8025BA4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x30 + ldr r0, _08025C08 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08025C58 + ldr r0, _08025C0C @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _08025C10 @ =gUnknown_2023BC4 + strb r0, [r1] + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + ldr r1, _08025C14 @ =gUnknown_202402C + mov r8, r1 + cmp r0, 0 + bne _08025BD6 + ldr r0, _08025C18 @ =gUnknown_2024284 + mov r8, r0 +_08025BD6: + movs r7, 0 + add r6, sp, 0x4 + mov r5, sp +_08025BDC: + movs r0, 0x64 + muls r0, r7 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08025C00 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _08025C20 +_08025C00: + ldr r0, _08025C1C @ =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _08025C32 + .align 2, 0 +_08025C08: .4byte gUnknown_2023BC8 +_08025C0C: .4byte gUnknown_2023D74 +_08025C10: .4byte gUnknown_2023BC4 +_08025C14: .4byte gUnknown_202402C +_08025C18: .4byte gUnknown_2024284 +_08025C1C: .4byte 0x0000ffff +_08025C20: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 +_08025C32: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _08025BDC + movs r0, 0 + mov r1, sp + movs r2, 0x1 + bl sub_800EA7C + ldr r0, _08025C64 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _08025C68 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08025C58: + add sp, 0x30 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025C64: .4byte gUnknown_2023BC4 +_08025C68: .4byte gUnknown_2023D74 + thumb_func_end sub_8025BA4 + + thumb_func_start sub_8025C6C +sub_8025C6C: @ 8025C6C + push {r4,r5,lr} + ldr r5, _08025C94 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _08025C98 @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + bl sub_800EAC4 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025C94: .4byte gUnknown_2023D74 +_08025C98: .4byte gUnknown_2023BC4 + thumb_func_end sub_8025C6C + + thumb_func_start sub_8025C9C +sub_8025C9C: @ 8025C9C + push {r4,lr} + ldr r0, _08025CB4 @ =gUnknown_2023D74 + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0 + beq _08025CC0 + ldr r0, _08025CB8 @ =gUnknown_2023D4A + ldr r1, _08025CBC @ =gUnknown_2023D4E + ldrh r1, [r1] + strh r1, [r0] + b _08025CCE + .align 2, 0 +_08025CB4: .4byte gUnknown_2023D74 +_08025CB8: .4byte gUnknown_2023D4A +_08025CBC: .4byte gUnknown_2023D4E +_08025CC0: + ldr r2, _08025CEC @ =gUnknown_2023D4C + ldr r1, _08025CF0 @ =gUnknown_2023D4A + ldr r0, _08025CF4 @ =gUnknown_2023D4E + ldrh r0, [r0] + strh r0, [r1] + strh r0, [r2] + adds r0, r1, 0 +_08025CCE: + ldr r3, _08025CF8 @ =gUnknown_81D65A8 + ldr r2, _08025CFC @ =gUnknown_8250C04 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08025CEC: .4byte gUnknown_2023D4C +_08025CF0: .4byte gUnknown_2023D4A +_08025CF4: .4byte gUnknown_2023D4E +_08025CF8: .4byte gUnknown_81D65A8 +_08025CFC: .4byte gUnknown_8250C04 + thumb_func_end sub_8025C9C + + thumb_func_start sub_8025D00 +sub_8025D00: @ 8025D00 + push {r4,lr} + ldr r0, _08025D70 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08025D68 + ldr r0, _08025D74 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _08025D78 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r1, _08025D7C @ =gUnknown_2023DFC + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08025D80 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08025D60 + ldr r0, _08025D84 @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _08025D60 + ldr r0, _08025D88 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08025D60 + ldr r1, _08025D8C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + ldr r2, [r0] + movs r0, 0 + movs r1, 0 + bl sub_800E6AC + ldrb r0, [r4] + bl sub_8017248 +_08025D60: + ldr r1, _08025D74 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08025D68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08025D70: .4byte gUnknown_2023BC8 +_08025D74: .4byte gUnknown_2023D74 +_08025D78: .4byte gUnknown_2023BC4 +_08025D7C: .4byte gUnknown_2023DFC +_08025D80: .4byte 0x000400c0 +_08025D84: .4byte gUnknown_2023E0C +_08025D88: .4byte gUnknown_2023DD0 +_08025D8C: .4byte gUnknown_2023BE4 + thumb_func_end sub_8025D00 + + thumb_func_start sub_8025D90 +sub_8025D90: @ 8025D90 + push {r4,r5,lr} + ldr r0, _08025E18 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08025E10 + ldr r4, _08025E1C @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r5, _08025E20 @ =gUnknown_2023BC4 + strb r0, [r5] + ldr r1, [r4] + ldrb r3, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + orrs r3, r0 + ldr r1, _08025E24 @ =gUnknown_2023DFC + ldrb r2, [r5] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08025E28 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08025E08 + ldr r0, _08025E2C @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _08025E08 + ldr r0, _08025E30 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08025E08 + ldr r1, _08025E34 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r2, [r0] + ands r2, r3 + movs r0, 0 + movs r1, 0x1 + bl sub_800E6AC + ldrb r0, [r5] + bl sub_8017248 +_08025E08: + ldr r1, _08025E1C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] +_08025E10: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025E18: .4byte gUnknown_2023BC8 +_08025E1C: .4byte gUnknown_2023D74 +_08025E20: .4byte gUnknown_2023BC4 +_08025E24: .4byte gUnknown_2023DFC +_08025E28: .4byte 0x000400c0 +_08025E2C: .4byte gUnknown_2023E0C +_08025E30: .4byte gUnknown_2023DD0 +_08025E34: .4byte gUnknown_2023BE4 + thumb_func_end sub_8025D90 + + thumb_func_start sub_8025E38 +sub_8025E38: @ 8025E38 + push {r4,r5,lr} + ldr r0, _08025EB0 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _08025EAA + ldr r4, _08025EB4 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r5, _08025EB8 @ =gUnknown_2023BC4 + strb r0, [r5] + ldr r4, [r4] + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x4] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r4, 0x5] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r4, 0x6] + lsls r0, 24 + orrs r2, r0 + ldr r1, _08025EBC @ =gUnknown_2023DFC + ldrb r3, [r5] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08025EC0 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08025EA2 + ldr r0, _08025EC4 @ =gUnknown_2023E0C + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _08025EA2 + ldr r0, _08025EC8 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08025EA2 + ldrb r1, [r4, 0x2] + movs r0, 0 + bl sub_800E6AC + ldrb r0, [r5] + bl sub_8017248 +_08025EA2: + ldr r1, _08025EB4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x7 + str r0, [r1] +_08025EAA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025EB0: .4byte gUnknown_2023BC8 +_08025EB4: .4byte gUnknown_2023D74 +_08025EB8: .4byte gUnknown_2023BC4 +_08025EBC: .4byte gUnknown_2023DFC +_08025EC0: .4byte 0x000400c0 +_08025EC4: .4byte gUnknown_2023E0C +_08025EC8: .4byte gUnknown_2023DD0 + thumb_func_end sub_8025E38 + + thumb_func_start sub_8025ECC +sub_8025ECC: @ 8025ECC + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _08025EE0 @ =gUnknown_2023E82 + ldrb r4, [r5] + cmp r4, 0 + beq _08025EE4 + cmp r4, 0x1 + beq _08025F0C + b _08025F9A + .align 2, 0 +_08025EE0: .4byte gUnknown_2023E82 +_08025EE4: + str r4, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r0, _08025F08 @ =gUnknown_83FE791 + movs r1, 0xE + bl sub_80D87BC + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + strb r4, [r5, 0x1] + bl sub_802DCB8 + b _08025F9A + .align 2, 0 +_08025F08: .4byte gUnknown_83FE791 +_08025F0C: + ldr r0, _08025F6C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08025F30 + ldrb r0, [r5, 0x1] + cmp r0, 0 + beq _08025F30 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0 + strb r0, [r5, 0x1] + bl sub_802DCB8 +_08025F30: + ldr r0, _08025F6C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08025F56 + ldr r4, _08025F70 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08025F56 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_08025F56: + ldr r0, _08025F6C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08025F74 + ldr r0, _08025F70 @ =gUnknown_2023E82 + movs r4, 0x1 + strb r4, [r0, 0x1] + b _08025F7E + .align 2, 0 +_08025F6C: .4byte gUnknown_30030F0 +_08025F70: .4byte gUnknown_2023E82 +_08025F74: + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08025F9A +_08025F7E: + movs r0, 0x5 + bl sub_80722CC + str r4, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r1, _08025FA4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08025F9A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025FA4: .4byte gUnknown_2023D74 + thumb_func_end sub_8025ECC + + thumb_func_start sub_8025FA8 +sub_8025FA8: @ 8025FA8 + push {r4,r5,lr} + movs r1, 0 + ldr r2, _08025FD4 @ =gUnknown_2023BCC + ldr r5, _08025FD8 @ =gUnknown_2023D74 + ldrb r0, [r2] + cmp r1, r0 + bge _08025FC6 + ldr r4, _08025FDC @ =gUnknown_2023BDA + movs r3, 0xC +_08025FBA: + adds r0, r1, r4 + strb r3, [r0] + adds r1, 0x1 + ldrb r0, [r2] + cmp r1, r0 + blt _08025FBA +_08025FC6: + ldr r0, [r5] + adds r0, 0x1 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025FD4: .4byte gUnknown_2023BCC +_08025FD8: .4byte gUnknown_2023D74 +_08025FDC: .4byte gUnknown_2023BDA + thumb_func_end sub_8025FA8 + + thumb_func_start sub_8025FE0 +sub_8025FE0: @ 8025FE0 + push {r4-r7,lr} + ldr r7, _08026008 @ =gUnknown_2023BE4 + ldr r6, _0802600C @ =gUnknown_2023D6C + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08026014 + ldr r1, _08026010 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _0802602E + .align 2, 0 +_08026008: .4byte gUnknown_2023BE4 +_0802600C: .4byte gUnknown_2023D6C +_08026010: .4byte gUnknown_2023F54 +_08026014: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r6, r0, 24 +_0802602E: + ldr r1, _080260F0 @ =gUnknown_2023D6F + ldr r5, _080260F4 @ =gUnknown_2023D6C + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _0802606C + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _0802606C + ldrb r0, [r5] + movs r1, 0x27 + bl sub_80C7208 + ldr r2, _080260F8 @ =gUnknown_2023ECC + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_0802606C: + ldr r2, _080260FC @ =gUnknown_2023BE4 + ldr r3, _080260F4 @ =gUnknown_2023D6C + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r1, r0 + adds r5, r2, 0 + cmp r1, 0 + bne _0802613C + ldr r2, _08026100 @ =gUnknown_8250C04 + ldr r0, _08026104 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x65 + beq _080260BE + ldr r0, _08026108 @ =gUnknown_2023E8C + lsls r1, r4, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _080260BE + ldr r0, _080260F8 @ =gUnknown_2023ECC + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0802613C +_080260BE: + ldrb r0, [r3] + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r1, [r0, 0x28] + ldr r2, _0802610C @ =gUnknown_2023D50 + ldr r0, [r2] + cmp r1, r0 + bgt _0802613C + subs r0, r1, 0x1 + str r0, [r2] + ldr r1, _08026108 @ =gUnknown_2023E8C + ldrb r3, [r3] + lsls r0, r3, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _08026114 + ldr r0, _08026110 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0802613C + .align 2, 0 +_080260F0: .4byte gUnknown_2023D6F +_080260F4: .4byte gUnknown_2023D6C +_080260F8: .4byte gUnknown_2023ECC +_080260FC: .4byte gUnknown_2023BE4 +_08026100: .4byte gUnknown_8250C04 +_08026104: .4byte gUnknown_2023D4A +_08026108: .4byte gUnknown_2023E8C +_0802610C: .4byte gUnknown_2023D50 +_08026110: .4byte gUnknown_2023DCC +_08026114: + ldr r0, _0802614C @ =gUnknown_2023ECC + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0802613C + ldr r2, _08026150 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08026154 @ =gUnknown_2023D68 + adds r0, r3, 0 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x2E] + strh r0, [r1] +_0802613C: + ldr r1, _08026158 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802614C: .4byte gUnknown_2023ECC +_08026150: .4byte gUnknown_2023DCC +_08026154: .4byte gUnknown_2023D68 +_08026158: .4byte gUnknown_2023D74 + thumb_func_end sub_8025FE0 + + thumb_func_start sub_802615C +sub_802615C: @ 802615C + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _080261BC @ =gUnknown_2023D74 + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r5, _080261C0 @ =gUnknown_2023BC4 + strb r0, [r5] + ldr r1, _080261C4 @ =gUnknown_2023FE8 + ldrb r4, [r5] + lsls r0, r4, 1 + adds r0, 0xB8 + ldr r1, [r1] + adds r1, r0 + ldr r2, _080261C8 @ =gUnknown_2023BE4 + movs r3, 0x58 + adds r0, r4, 0 + muls r0, r3 + adds r0, r2 + ldrh r0, [r0, 0x2E] + strh r0, [r1] + ldrb r0, [r5] + muls r0, r3 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x2E] + ldrb r0, [r5] + muls r0, r3 + adds r2, 0x2E + adds r0, r2 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldrb r0, [r5] + bl sub_8017248 + ldr r0, [r6] + adds r0, 0x2 + str r0, [r6] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080261BC: .4byte gUnknown_2023D74 +_080261C0: .4byte gUnknown_2023BC4 +_080261C4: .4byte gUnknown_2023FE8 +_080261C8: .4byte gUnknown_2023BE4 + thumb_func_end sub_802615C + + thumb_func_start sub_80261CC +sub_80261CC: @ 80261CC + ldr r1, _080261F8 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + ldr r2, _080261FC @ =gUnknown_2023D6B + ldrb r0, [r2] + strb r0, [r1, 0x2] + ldr r3, _08026200 @ =gUnknown_2023BCE + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08026204 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080261F8: .4byte gUnknown_2022AB8 +_080261FC: .4byte gUnknown_2023D6B +_08026200: .4byte gUnknown_2023BCE +_08026204: .4byte gUnknown_2023D74 + thumb_func_end sub_80261CC + + thumb_func_start sub_8026208 +sub_8026208: @ 8026208 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08026224 @ =gUnknown_2023FC4 + ldrb r1, [r0, 0x1E] + adds r4, r0, 0 + cmp r1, 0 + bne _0802622C + bl sub_802679C + cmp r0, 0 + beq _08026228 + movs r0, 0x3 + b _0802622A + .align 2, 0 +_08026224: .4byte gUnknown_2023FC4 +_08026228: + movs r0, 0x1 +_0802622A: + strb r0, [r4, 0x1E] +_0802622C: + ldrb r0, [r4, 0x1E] + subs r0, 0x1 + cmp r0, 0x9 + bls _08026236 + b _080263F6 +_08026236: + lsls r0, 2 + ldr r1, _08026240 @ =_08026244 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026240: .4byte _08026244 + .align 2, 0 +_08026244: + .4byte _0802626C + .4byte _08026298 + .4byte _080262B0 + .4byte _08026304 + .4byte _08026318 + .4byte _08026330 + .4byte _08026318 + .4byte _08026350 + .4byte _08026380 + .4byte _080263C4 +_0802626C: + ldr r1, _08026290 @ =gUnknown_202297E + movs r0, 0x60 + strh r0, [r1] + movs r0, 0x2 + movs r1, 0x7 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x2 + bl sub_80019BC + bl sub_8026480 + ldr r1, _08026294 @ =gUnknown_2023FC4 + movs r0, 0x2 + strb r0, [r1, 0x1E] + b _080263F6 + .align 2, 0 +_08026290: .4byte gUnknown_202297E +_08026294: .4byte gUnknown_2023FC4 +_08026298: + bl sub_80264D0 + lsls r0, 24 + cmp r0, 0 + beq _080262A4 + b _080263F6 +_080262A4: + ldr r1, _080262AC @ =gUnknown_2023FC4 + movs r0, 0x3 + strb r0, [r1, 0x1E] + b _080263F6 + .align 2, 0 +_080262AC: .4byte gUnknown_2023FC4 +_080262B0: + ldr r1, _080262F8 @ =gUnknown_2022978 + movs r0, 0 + strh r0, [r1] + ldr r1, _080262FC @ =gUnknown_202297A + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + movs r1, 0x7 + movs r2, 0x1 + bl sub_80019E4 + movs r0, 0x1 + movs r1, 0x7 + movs r2, 0 + bl sub_80019E4 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x80 + str r0, [sp] + movs r0, 0x12 + movs r1, 0x7 + movs r2, 0x1D + movs r3, 0x13 + bl sub_802DB7C + ldr r1, _08026300 @ =gUnknown_2023FC4 + movs r0, 0x4 + strb r0, [r1, 0x1E] + b _080263F6 + .align 2, 0 +_080262F8: .4byte gUnknown_2022978 +_080262FC: .4byte gUnknown_202297A +_08026300: .4byte gUnknown_2023FC4 +_08026304: + bl sub_8026404 + movs r0, 0xC + bl sub_8003FA0 + movs r0, 0xC + movs r1, 0x3 + bl sub_8003F20 + b _0802636E +_08026318: + bl sub_8001960 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080263F6 + ldr r0, _0802632C @ =gUnknown_202297A + strh r1, [r0] + b _0802636E + .align 2, 0 +_0802632C: .4byte gUnknown_202297A +_08026330: + ldr r0, _0802634C @ =gUnknown_30030F0 + ldrh r0, [r0, 0x2E] + cmp r0, 0 + beq _080263F6 + movs r0, 0x5 + bl sub_80722CC + bl sub_8026448 + movs r0, 0xC + movs r1, 0x2 + bl sub_8003F20 + b _0802636E + .align 2, 0 +_0802634C: .4byte gUnknown_30030F0 +_08026350: + ldr r0, _08026378 @ =gUnknown_30030F0 + ldrh r0, [r0, 0x2E] + cmp r0, 0 + beq _080263F6 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x81 + str r0, [sp] + movs r0, 0x12 + movs r1, 0x7 + movs r2, 0x1D + movs r3, 0x13 + bl sub_802DB7C +_0802636E: + ldr r1, _0802637C @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x1E] + adds r0, 0x1 + strb r0, [r1, 0x1E] + b _080263F6 + .align 2, 0 +_08026378: .4byte gUnknown_30030F0 +_0802637C: .4byte gUnknown_2023FC4 +_08026380: + bl sub_8026648 + lsls r0, 24 + cmp r0, 0 + bne _080263F6 + movs r0, 0xD + bl sub_80040B8 + movs r0, 0xD + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0xC + bl sub_80040B8 + movs r0, 0xC + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x7 + movs r2, 0x2 + bl sub_80019E4 + movs r0, 0x2 + bl sub_80019BC + ldr r1, _080263C0 @ =gUnknown_2023FC4 + movs r0, 0xA + strb r0, [r1, 0x1E] + b _080263F6 + .align 2, 0 +_080263C0: .4byte gUnknown_2023FC4 +_080263C4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080263F6 + movs r0, 0 + movs r1, 0x7 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x1 + movs r1, 0x7 + movs r2, 0x1 + bl sub_80019E4 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r1, _08026400 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080263F6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08026400: .4byte gUnknown_2023D74 + thumb_func_end sub_8026208 + + thumb_func_start sub_8026404 +sub_8026404: @ 8026404 + push {lr} + sub sp, 0x14 + ldr r0, _0802643C @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08026440 @ =gUnknown_2024284 + adds r0, r1 + add r1, sp, 0x8 + bl sub_811D130 + ldr r0, _08026444 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x10] + movs r0, 0xD + str r0, [sp] + movs r0, 0xF + str r0, [sp, 0x4] + movs r0, 0xC + add r2, sp, 0x8 + movs r3, 0xE + bl sub_811E7F0 + add sp, 0x14 + pop {r0} + bx r0 + .align 2, 0 +_0802643C: .4byte gUnknown_2023FE8 +_08026440: .4byte gUnknown_2024284 +_08026444: .4byte gUnknown_2023FF4 + thumb_func_end sub_8026404 + + thumb_func_start sub_8026448 +sub_8026448: @ 8026448 + push {lr} + sub sp, 0x10 + ldr r0, _08026478 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802647C @ =gUnknown_2024284 + adds r0, r1 + add r1, sp, 0x4 + bl sub_811D130 + movs r0, 0xF + str r0, [sp] + movs r0, 0xC + add r1, sp, 0x4 + movs r2, 0xE + movs r3, 0xD + bl sub_811E93C + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_08026478: .4byte gUnknown_2023FE8 +_0802647C: .4byte gUnknown_2024284 + thumb_func_end sub_8026448 + + thumb_func_start sub_8026480 +sub_8026480: @ 8026480 + push {lr} + ldr r1, _080264C0 @ =gUnknown_202297E + movs r0, 0 + strh r0, [r1] + ldr r1, _080264C4 @ =gUnknown_202297C + movs r2, 0xD0 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080264C8 @ =gUnknown_82506D0 + movs r1, 0x60 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080264CC @ =gUnknown_82506F0 + movs r0, 0xD + movs r2, 0 + movs r3, 0 + bl sub_8004404 + movs r0, 0xD + bl sub_8003FA0 + movs r0, 0xD + movs r1, 0x3 + bl sub_8003F20 + bl sub_8026688 + pop {r0} + bx r0 + .align 2, 0 +_080264C0: .4byte gUnknown_202297E +_080264C4: .4byte gUnknown_202297C +_080264C8: .4byte gUnknown_82506D0 +_080264CC: .4byte gUnknown_82506F0 + thumb_func_end sub_8026480 + + thumb_func_start sub_80264D0 +sub_80264D0: @ 80264D0 + push {r4,r5,lr} + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _080264E0 + movs r0, 0x1 + b _0802651A +_080264E0: + ldr r4, _080264F0 @ =gUnknown_202297C + ldrh r1, [r4] + movs r5, 0x80 + lsls r5, 2 + cmp r1, r5 + bne _080264F4 + movs r0, 0 + b _0802651A + .align 2, 0 +_080264F0: .4byte gUnknown_202297C +_080264F4: + movs r0, 0xD0 + lsls r0, 1 + cmp r1, r0 + bne _08026500 + bl sub_8026524 +_08026500: + ldrh r0, [r4] + adds r0, 0x8 + strh r0, [r4] + lsls r0, 16 + ldr r1, _08026520 @ =0x01ff0000 + cmp r0, r1 + bls _08026510 + strh r5, [r4] +_08026510: + ldrh r1, [r4] + eors r1, r5 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_0802651A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08026520: .4byte 0x01ff0000 + thumb_func_end sub_80264D0 + + thumb_func_start sub_8026524 +sub_8026524: @ 8026524 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r6, _080265F8 @ =gUnknown_2023FE8 + ldr r0, [r6] + ldrb r0, [r0, 0x10] + movs r5, 0x64 + muls r0, r5 + ldr r4, _080265FC @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x38 + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, [r6] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + bl sub_803F720 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r6] + ldrb r0, [r0, 0x10] + muls r0, r5 + adds r0, r4 + ldr r6, _08026600 @ =gUnknown_2021D18 + adds r1, r6, 0 + bl sub_81202E0 + str r6, [sp] + mov r1, sp + movs r4, 0 + movs r0, 0xD + strb r0, [r1, 0x4] + mov r0, sp + strb r4, [r0, 0x5] + movs r5, 0x20 + strb r5, [r0, 0x6] + strb r4, [r0, 0x7] + strb r5, [r0, 0x8] + strb r4, [r0, 0x9] + strb r4, [r0, 0xA] + strb r4, [r0, 0xB] + mov r3, sp + ldrb r2, [r3, 0xC] + movs r1, 0x10 + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0xC] + mov r2, sp + movs r0, 0x10 + strb r0, [r2, 0xC] + ldrb r0, [r2, 0xD] + ands r1, r0 + strb r1, [r2, 0xD] + mov r0, sp + strb r5, [r0, 0xD] + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 + movs r0, 0xF9 + strb r0, [r6] + adds r6, 0x1 + movs r0, 0x5 + strb r0, [r6] + adds r6, 0x1 + strb r4, [r6] + adds r6, 0x1 + adds r4, r6, 0 + adds r0, r4, 0 + mov r1, r8 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + adds r6, r0, 0 + movs r1, 0 + movs r2, 0x5 + bl sub_8009204 + adds r6, r4, 0x4 + cmp r7, 0xFF + beq _08026624 + cmp r7, 0 + bne _08026604 + adds r0, r6, 0 + movs r1, 0 + movs r2, 0xC + bl sub_80092F4 + adds r6, r0, 0 + movs r1, 0x1 + movs r2, 0xD + bl sub_80092F4 + adds r6, r0, 0 + movs r0, 0xB5 + b _0802661C + .align 2, 0 +_080265F8: .4byte gUnknown_2023FE8 +_080265FC: .4byte gUnknown_2024284 +_08026600: .4byte gUnknown_2021D18 +_08026604: + adds r0, r6, 0 + movs r1, 0 + movs r2, 0xE + bl sub_80092F4 + adds r6, r0, 0 + movs r1, 0x1 + movs r2, 0xF + bl sub_80092F4 + adds r6, r0, 0 + movs r0, 0xB6 +_0802661C: + strb r0, [r6] + adds r6, 0x1 + movs r0, 0xFF + strb r0, [r6] +_08026624: + mov r0, sp + movs r1, 0xA + strb r1, [r0, 0x7] + strb r1, [r0, 0x9] + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 + movs r0, 0xD + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8026524 + + thumb_func_start sub_8026648 +sub_8026648: @ 8026648 + push {lr} + ldr r0, _0802665C @ =gUnknown_202297C + ldrh r1, [r0] + movs r3, 0xD0 + lsls r3, 1 + adds r2, r0, 0 + cmp r1, r3 + bne _08026660 + movs r0, 0 + b _08026684 + .align 2, 0 +_0802665C: .4byte gUnknown_202297C +_08026660: + ldrh r0, [r2] + adds r1, r0, 0 + subs r1, 0x10 + ldr r0, _08026670 @ =0x0000019f + cmp r1, r0 + bgt _08026674 + strh r3, [r2] + b _08026676 + .align 2, 0 +_08026670: .4byte 0x0000019f +_08026674: + strh r1, [r2] +_08026676: + ldrh r1, [r2] + movs r0, 0xD0 + lsls r0, 1 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_08026684: + pop {r1} + bx r1 + thumb_func_end sub_8026648 + + thumb_func_start sub_8026688 +sub_8026688: @ 8026688 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + ldr r0, _08026730 @ =gUnknown_2023FE8 + mov r8, r0 + ldr r0, [r0] + ldrb r0, [r0, 0x10] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08026734 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + muls r0, r6 + adds r0, r5 + movs r1, 0 + bl sub_803FBE8 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_8097054 + str r0, [sp] + ldr r5, _08026738 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r5 + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + ldr r1, _0802673C @ =0x0000ffff + ands r0, r1 + ldr r1, _08026740 @ =0xd75a0000 + orrs r0, r1 + str r0, [sp, 0x4] + adds r0, r4, 0 + bl sub_80971CC + str r0, [sp, 0x8] + add r4, sp, 0x8 + ldr r0, [r4, 0x4] + ands r0, r5 + ldr r1, _08026744 @ =0x0000d75a + orrs r0, r1 + str r0, [r4, 0x4] + mov r0, sp + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + ldr r0, _08026748 @ =gUnknown_82507C8 + movs r1, 0x80 + lsls r1, 1 + movs r2, 0xA + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0802674C @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, _08026750 @ =gUnknown_202297C + ldrh r0, [r0] + strh r0, [r1, 0x30] + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08026730: .4byte gUnknown_2023FE8 +_08026734: .4byte gUnknown_2024284 +_08026738: .4byte 0xffff0000 +_0802673C: .4byte 0x0000ffff +_08026740: .4byte 0xd75a0000 +_08026744: .4byte 0x0000d75a +_08026748: .4byte gUnknown_82507C8 +_0802674C: .4byte gUnknown_202063C +_08026750: .4byte gUnknown_202297C + thumb_func_end sub_8026688 + + thumb_func_start sub_8026754 +sub_8026754: @ 8026754 + push {r4,lr} + adds r2, r0, 0 + ldr r0, _08026770 @ =gUnknown_202297C + ldrh r1, [r2, 0x30] + ldrh r0, [r0] + subs r1, r0 + strh r1, [r2, 0x24] + lsls r1, 16 + cmp r1, 0 + beq _08026774 + movs r0, 0x1 + strh r0, [r2, 0x2E] + b _08026790 + .align 2, 0 +_08026770: .4byte gUnknown_202297C +_08026774: + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _08026790 + adds r0, r2, 0 + bl sub_8007280 + ldr r4, _08026798 @ =0x0000d75a + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 +_08026790: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08026798: .4byte 0x0000d75a + thumb_func_end sub_8026754 + + thumb_func_start sub_802679C +sub_802679C: @ 802679C + push {lr} + ldr r3, _080267C4 @ =gUnknown_2023BCE + ldr r0, _080267C8 @ =gUnknown_2023FE8 + ldr r0, [r0] + ldrh r1, [r3] + ldrb r2, [r0, 0x10] + cmp r1, r2 + beq _080267BE + ldr r0, _080267CC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080267D0 + ldrh r0, [r3, 0x4] + cmp r0, r2 + bne _080267D0 +_080267BE: + movs r0, 0x1 + b _080267D2 + .align 2, 0 +_080267C4: .4byte gUnknown_2023BCE +_080267C8: .4byte gUnknown_2023FE8 +_080267CC: .4byte gUnknown_2022B4C +_080267D0: + movs r0, 0 +_080267D2: + pop {r1} + bx r1 + thumb_func_end sub_802679C + + thumb_func_start sub_80267D8 +sub_80267D8: @ 80267D8 + push {lr} + bl sub_80173D0 + ldr r1, _080267EC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080267EC: .4byte gUnknown_2023D74 + thumb_func_end sub_80267D8 + + thumb_func_start sub_80267F0 +sub_80267F0: @ 80267F0 + push {lr} + movs r0, 0 + bl sub_80751E8 + ldr r1, _08026808 @ =gUnknown_2023D6B + strb r0, [r1] + ldr r1, _0802680C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08026808: .4byte gUnknown_2023D6B +_0802680C: .4byte gUnknown_2023D74 + thumb_func_end sub_80267F0 + + thumb_func_start sub_8026810 +sub_8026810: @ 8026810 + push {r4,r5,lr} + ldr r5, _0802683C @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _08026840 @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + movs r1, 0 + bl sub_800EB04 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802683C: .4byte gUnknown_2023D74 +_08026840: .4byte gUnknown_2023BC4 + thumb_func_end sub_8026810 + + thumb_func_start sub_8026844 +sub_8026844: @ 8026844 + push {r4,lr} + ldr r4, _0802686C @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _08026870 @ =gUnknown_2023BC4 + strb r0, [r1] + ldrb r0, [r1] + ldr r1, _08026874 @ =gUnknown_2023D6A + ldrb r1, [r1] + bl sub_80C71D0 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802686C: .4byte gUnknown_2023D74 +_08026870: .4byte gUnknown_2023BC4 +_08026874: .4byte gUnknown_2023D6A + thumb_func_end sub_8026844 + + thumb_func_start sub_8026878 +sub_8026878: @ 8026878 + ldr r2, _08026898 @ =gUnknown_2022AC8 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x2 + strb r0, [r2, 0x1] + ldr r0, _0802689C @ =gUnknown_2024022 + ldrh r1, [r0] + strb r1, [r2, 0x2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r2, 0x3] + movs r0, 0xFF + strb r0, [r2, 0x4] + bx lr + .align 2, 0 +_08026898: .4byte gUnknown_2022AC8 +_0802689C: .4byte gUnknown_2024022 + thumb_func_end sub_8026878 + + thumb_func_start sub_80268A0 +sub_80268A0: @ 80268A0 + push {lr} + bl sub_8026878 + ldr r1, _080268B4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080268B4: .4byte gUnknown_2023D74 + thumb_func_end sub_80268A0 + + thumb_func_start sub_80268B8 +sub_80268B8: @ 80268B8 + push {lr} + ldr r0, _080268E4 @ =gUnknown_2023D6D + ldrb r0, [r0] + bl sub_8016748 + lsls r0, 24 + cmp r0, 0 + beq _080268EC + ldr r3, _080268E8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080268F4 + .align 2, 0 +_080268E4: .4byte gUnknown_2023D6D +_080268E8: .4byte gUnknown_2023D74 +_080268EC: + ldr r1, _080268F8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080268F4: + pop {r0} + bx r0 + .align 2, 0 +_080268F8: .4byte gUnknown_2023D74 + thumb_func_end sub_80268B8 + + thumb_func_start sub_80268FC +sub_80268FC: @ 80268FC + push {r4-r6,lr} + ldr r0, _0802694C @ =gUnknown_2022B4C + ldr r4, [r0] + movs r6, 0x1 + ands r4, r6 + cmp r4, 0 + bne _08026992 + ldr r0, _08026950 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _08026954 @ =gUnknown_2023BC4 + strb r0, [r1] + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08026958 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r5, [r1, 0x28] + movs r0, 0x64 + muls r0, r5 + ldrh r1, [r1, 0x2C] + bl __divsi3 + cmp r0, 0 + bne _0802693A + movs r0, 0x1 +_0802693A: + cmp r0, 0x45 + bgt _08026942 + cmp r5, 0 + bne _08026960 +_08026942: + ldr r0, _0802695C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xAD + strb r4, [r0] + b _08026992 + .align 2, 0 +_0802694C: .4byte gUnknown_2022B4C +_08026950: .4byte gUnknown_2023D74 +_08026954: .4byte gUnknown_2023BC4 +_08026958: .4byte gUnknown_2023BE4 +_0802695C: .4byte gUnknown_2023FE8 +_08026960: + cmp r0, 0x27 + ble _08026974 + ldr r0, _08026970 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xAD + strb r6, [r0] + b _08026992 + .align 2, 0 +_08026970: .4byte gUnknown_2023FE8 +_08026974: + cmp r0, 0x9 + ble _08026988 + ldr r0, _08026984 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xAD + movs r1, 0x2 + b _08026990 + .align 2, 0 +_08026984: .4byte gUnknown_2023FE8 +_08026988: + ldr r0, _080269A0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xAD + movs r1, 0x3 +_08026990: + strb r1, [r0] +_08026992: + ldr r1, _080269A4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080269A0: .4byte gUnknown_2023FE8 +_080269A4: .4byte gUnknown_2023D74 + thumb_func_end sub_80268FC + + thumb_func_start sub_80269A8 +sub_80269A8: @ 80269A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08026A0C @ =gUnknown_2022B4C + ldr r7, [r0] + movs r0, 0x1 + mov r8, r0 + ands r7, r0 + cmp r7, 0 + bne _08026A42 + ldr r0, _08026A10 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + adds r4, r0, 0 + ldr r0, _08026A14 @ =gUnknown_2023BC4 + strb r4, [r0] + movs r0, 0x1 + eors r4, r0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + ldr r1, _08026A18 @ =gUnknown_2023FE8 + ldr r6, [r1] + lsrs r0, 23 + adds r0, r6 + adds r0, 0xA8 + ldrb r5, [r0] + ldr r1, _08026A1C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r4, [r0, 0x28] + subs r1, r5, r4 + movs r0, 0x64 + muls r0, r1 + adds r1, r5, 0 + bl __divsi3 + adds r1, r0, 0 + cmp r4, r5 + bcc _08026A20 + adds r0, r6, 0 + adds r0, 0xAD + strb r7, [r0] + b _08026A42 + .align 2, 0 +_08026A0C: .4byte gUnknown_2022B4C +_08026A10: .4byte gUnknown_2023D74 +_08026A14: .4byte gUnknown_2023BC4 +_08026A18: .4byte gUnknown_2023FE8 +_08026A1C: .4byte gUnknown_2023BE4 +_08026A20: + cmp r0, 0x1D + bgt _08026A2E + adds r0, r6, 0 + adds r0, 0xAD + mov r1, r8 + strb r1, [r0] + b _08026A42 +_08026A2E: + cmp r1, 0x45 + bgt _08026A3A + adds r1, r6, 0 + adds r1, 0xAD + movs r0, 0x2 + b _08026A40 +_08026A3A: + adds r1, r6, 0 + adds r1, 0xAD + movs r0, 0x3 +_08026A40: + strb r0, [r1] +_08026A42: + ldr r1, _08026A54 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08026A54: .4byte gUnknown_2023D74 + thumb_func_end sub_80269A8 + + thumb_func_start sub_8026A58 +sub_8026A58: @ 8026A58 + push {lr} + sub sp, 0x4 + ldr r2, _08026A98 @ =gUnknown_2024004 + ldr r1, _08026A9C @ =gUnknown_2023D6B + ldrb r0, [r1] + strb r0, [r2] + ldr r2, _08026AA0 @ =gUnknown_2023BCE + ldrb r0, [r1] + lsls r0, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r1, _08026AA4 @ =gUnknown_202402C + adds r0, r1 + ldr r1, _08026AA8 @ =gUnknown_2023D68 + ldrh r1, [r1] + lsls r2, 24 + lsrs r2, 24 + movs r3, 0x1 + str r3, [sp] + movs r3, 0 + bl sub_80413E4 + ldr r1, _08026AAC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08026A98: .4byte gUnknown_2024004 +_08026A9C: .4byte gUnknown_2023D6B +_08026AA0: .4byte gUnknown_2023BCE +_08026AA4: .4byte gUnknown_202402C +_08026AA8: .4byte gUnknown_2023D68 +_08026AAC: .4byte gUnknown_2023D74 + thumb_func_end sub_8026A58 + + thumb_func_start sub_8026AB0 +sub_8026AB0: @ 8026AB0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + ldr r4, _08026ADC @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _08026AE0 @ =gUnknown_2023BC4 + strb r0, [r1] + ldr r0, [r4] + ldrb r0, [r0, 0x2] + cmp r0, 0xC + bls _08026AD2 + b _08026F4E +_08026AD2: + lsls r0, 2 + ldr r1, _08026AE4 @ =_08026AE8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026ADC: .4byte gUnknown_2023D74 +_08026AE0: .4byte gUnknown_2023BC4 +_08026AE4: .4byte _08026AE8 + .align 2, 0 +_08026AE8: + .4byte _08026B1C + .4byte _08026B2C + .4byte _08026B8C + .4byte _08026B9C + .4byte _08026BB4 + .4byte _08026BF0 + .4byte _08026C28 + .4byte _08026CB4 + .4byte _08026CF4 + .4byte _08026D50 + .4byte _08026D64 + .4byte _08026DA0 + .4byte _08026F44 +_08026B1C: + ldr r0, _08026B28 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80172E8 + b _08026F4E + .align 2, 0 +_08026B28: .4byte gUnknown_2023BC4 +_08026B2C: + ldr r1, _08026B68 @ =gUnknown_2023D6B + ldr r4, _08026B6C @ =gUnknown_2023D6C + ldrb r0, [r4] + strb r0, [r1] + ldrb r0, [r1] + bl sub_80751C4 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08026B70 @ =gUnknown_2023DE4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r2, r1, r2 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _08026B78 + ldr r1, _08026B74 @ =gUnknown_2023BE4 + ldrb r2, [r2, 0x9] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08026B78 + strb r2, [r4] + b _08026F4E + .align 2, 0 +_08026B68: .4byte gUnknown_2023D6B +_08026B6C: .4byte gUnknown_2023D6C +_08026B70: .4byte gUnknown_2023DE4 +_08026B74: .4byte gUnknown_2023BE4 +_08026B78: + ldr r0, _08026B84 @ =gUnknown_2023D6C + ldr r1, _08026B88 @ =gUnknown_2023BC4 + ldrb r1, [r1] + strb r1, [r0] + b _08026F4E + .align 2, 0 +_08026B84: .4byte gUnknown_2023D6C +_08026B88: .4byte gUnknown_2023BC4 +_08026B8C: + bl sub_8013D54 + ldr r1, _08026B98 @ =gUnknown_2023E82 + strb r0, [r1] + b _08026F4E + .align 2, 0 +_08026B98: .4byte gUnknown_2023E82 +_08026B9C: + ldr r0, _08026BAC @ =gUnknown_2023D4A + ldrh r0, [r0] + movs r1, 0 + bl sub_801D05C + ldr r1, _08026BB0 @ =gUnknown_2023D6C + strb r0, [r1] + b _08026F4E + .align 2, 0 +_08026BAC: .4byte gUnknown_2023D4A +_08026BB0: .4byte gUnknown_2023D6C +_08026BB4: + ldr r2, _08026BD4 @ =gUnknown_2023DD0 + ldr r1, _08026BD8 @ =gUnknown_825E45C + ldr r0, _08026BDC @ =gUnknown_2023BC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 28 + ldr r2, [r2] + ands r2, r0 + cmp r2, 0 + beq _08026BE4 + ldr r1, _08026BE0 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1] + b _08026F4E + .align 2, 0 +_08026BD4: .4byte gUnknown_2023DD0 +_08026BD8: .4byte gUnknown_825E45C +_08026BDC: .4byte gUnknown_2023BC4 +_08026BE0: .4byte gUnknown_2023E82 +_08026BE4: + ldr r0, _08026BEC @ =gUnknown_2023E82 + strb r2, [r0] + b _08026F4E + .align 2, 0 +_08026BEC: .4byte gUnknown_2023E82 +_08026BF0: + ldr r4, _08026C20 @ =gUnknown_2023ECC + ldr r3, _08026C24 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + b _08026F4E + .align 2, 0 +_08026C20: .4byte gUnknown_2023ECC +_08026C24: .4byte gUnknown_2023BC4 +_08026C28: + ldr r4, _08026C4C @ =gUnknown_2023BCE + ldr r1, _08026C50 @ =gUnknown_2023FE8 + ldr r0, [r1] + ldrh r3, [r4] + ldrb r2, [r0, 0x10] + adds r5, r1, 0 + cmp r3, r2 + beq _08026C44 + ldrh r0, [r4, 0x4] + cmp r0, r2 + beq _08026C40 + b _08026F4E +_08026C40: + cmp r3, r0 + bne _08026C58 +_08026C44: + ldr r1, _08026C54 @ =gUnknown_2023BC4 + movs r0, 0 + b _08026C5C + .align 2, 0 +_08026C4C: .4byte gUnknown_2023BCE +_08026C50: .4byte gUnknown_2023FE8 +_08026C54: .4byte gUnknown_2023BC4 +_08026C58: + ldr r1, _08026CAC @ =gUnknown_2023BC4 + movs r0, 0x2 +_08026C5C: + strb r0, [r1] + mov r8, r1 + mov r0, r8 + ldrb r2, [r0] + lsls r0, r2, 1 + adds r0, 0xC8 + ldr r1, [r5] + adds r3, r1, r0 + movs r7, 0 + ldr r1, _08026CB0 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + ldrh r2, [r3] + cmp r0, r2 + beq _08026C9E + mov r5, r8 + movs r4, 0x58 + adds r2, r1, 0 +_08026C86: + adds r7, 0x1 + cmp r7, 0x3 + bgt _08026C9E + lsls r1, r7, 1 + ldrb r0, [r5] + muls r0, r4 + adds r1, r0 + adds r1, r2 + ldrh r0, [r1] + ldrh r1, [r3] + cmp r0, r1 + bne _08026C86 +_08026C9E: + cmp r7, 0x4 + beq _08026CA4 + b _08026F4E +_08026CA4: + movs r0, 0 + strh r0, [r3] + b _08026F4E + .align 2, 0 +_08026CAC: .4byte gUnknown_2023BC4 +_08026CB0: .4byte gUnknown_2023BE4 +_08026CB4: + ldr r0, _08026CE4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xB + ands r0, r1 + cmp r0, 0x8 + beq _08026CC2 + b _08026F4E +_08026CC2: + ldr r1, _08026CE8 @ =gUnknown_2023BE4 + ldrh r0, [r1, 0x28] + cmp r0, 0 + bne _08026CCC + b _08026F4E +_08026CCC: + adds r0, r1, 0 + adds r0, 0x80 + ldrh r0, [r0] + cmp r0, 0 + bne _08026CD8 + b _08026F4E +_08026CD8: + ldr r0, _08026CEC @ =gUnknown_2023DD0 + ldr r1, [r0] + ldr r2, _08026CF0 @ =0xffbfffff + ands r1, r2 + str r1, [r0] + b _08026F4E + .align 2, 0 +_08026CE4: .4byte gUnknown_2022B4C +_08026CE8: .4byte gUnknown_2023BE4 +_08026CEC: .4byte gUnknown_2023DD0 +_08026CF0: .4byte 0xffbfffff +_08026CF4: + movs r7, 0 + ldr r2, _08026D3C @ =gUnknown_2023E82 + strb r7, [r2, 0x5] + ldr r1, _08026D40 @ =gUnknown_2023BC4 + movs r0, 0x1 + strb r0, [r1] + mov r8, r1 + ldr r0, _08026D44 @ =gUnknown_2023BCC + mov r4, r8 + ldrb r5, [r0] + ldr r6, _08026D48 @ =gUnknown_2023BE4 + ldr r3, _08026D4C @ =gUnknown_825E45C +_08026D0C: + ldrb r0, [r4] + cmp r0, r5 + bcs _08026D2A + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08026D2A + ldr r0, [r3] + ldrb r1, [r2, 0x5] + orrs r0, r1 + strb r0, [r2, 0x5] +_08026D2A: + adds r3, 0x4 + ldrb r0, [r4] + adds r0, 0x2 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08026D0C + b _08026F4E + .align 2, 0 +_08026D3C: .4byte gUnknown_2023E82 +_08026D40: .4byte gUnknown_2023BC4 +_08026D44: .4byte gUnknown_2023BCC +_08026D48: .4byte gUnknown_2023BE4 +_08026D4C: .4byte gUnknown_825E45C +_08026D50: + ldr r4, _08026D5C @ =gUnknown_2023BC4 + movs r0, 0x1 + strb r0, [r4] + ldr r0, _08026D60 @ =gUnknown_2023BE4 + adds r0, 0x58 + b _08026D7C + .align 2, 0 +_08026D5C: .4byte gUnknown_2023BC4 +_08026D60: .4byte gUnknown_2023BE4 +_08026D64: + ldr r0, _08026D94 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r0, 0x3 + bhi _08026D6E + b _08026F4E +_08026D6E: + ldr r4, _08026D98 @ =gUnknown_2023BC4 + movs r0, 0x3 + strb r0, [r4] + ldr r0, _08026D9C @ =gUnknown_2023BE4 + movs r1, 0x84 + lsls r1, 1 + adds r0, r1 +_08026D7C: + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08026D84 + b _08026F4E +_08026D84: + movs r0, 0 + movs r1, 0 + bl sub_800E0B4 + ldrb r0, [r4] + bl sub_8017248 + b _08026F4E + .align 2, 0 +_08026D94: .4byte gUnknown_2023BCC +_08026D98: .4byte gUnknown_2023BC4 +_08026D9C: .4byte gUnknown_2023BE4 +_08026DA0: + ldr r0, _08026F28 @ =gUnknown_2023E82 + movs r1, 0 + strb r1, [r0, 0x5] + mov r8, r1 + movs r7, 0 + ldr r0, _08026F2C @ =gUnknown_2023BCC + mov r12, r0 + ldrb r2, [r0] + cmp r8, r2 + bge _08026DEE + ldr r4, _08026F30 @ =gUnknown_2023BE4 + adds r3, r4, 0 + adds r3, 0x50 + adds r6, r4, 0 + adds r6, 0x20 + movs r5, 0 +_08026DC0: + ldrb r0, [r6] + cmp r0, 0x2B + beq _08026DDE + adds r2, r4, 0 + adds r2, 0x4C + adds r2, r5, r2 + ldr r0, [r2] + movs r1, 0x8 + negs r1, r1 + ands r0, r1 + str r0, [r2] + ldr r0, [r3] + ldr r1, _08026F34 @ =0xf7ffffff + ands r0, r1 + str r0, [r3] +_08026DDE: + adds r3, 0x58 + adds r6, 0x58 + adds r5, 0x58 + adds r7, 0x1 + mov r0, r12 + ldrb r0, [r0] + cmp r7, r0 + blt _08026DC0 +_08026DEE: + movs r7, 0 + movs r1, 0xCE + lsls r1, 1 + mov r9, r1 +_08026DF6: + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _08026F38 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + adds r1, r0, 0 + str r1, [sp, 0x4] + cmp r5, 0 + beq _08026E4E + cmp r5, r9 + beq _08026E4E + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _08026E4E + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8040D38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2B + beq _08026E4E + movs r0, 0x1 + lsls r0, r7 + mov r2, r8 + orrs r2, r0 + mov r8, r2 +_08026E4E: + adds r7, 0x1 + cmp r7, 0x5 + ble _08026DF6 + mov r0, r8 + cmp r0, 0 + beq _08026E88 + movs r0, 0 + bl sub_80751E8 + ldr r4, _08026F3C @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + str r0, [sp, 0x4] + mov r1, r8 + lsls r2, r1, 24 + lsrs r2, 24 + add r0, sp, 0x4 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _08026F28 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] +_08026E88: + movs r1, 0 + mov r8, r1 + movs r7, 0 + movs r2, 0xCE + lsls r2, 1 + mov r9, r2 +_08026E94: + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _08026F40 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + adds r1, r0, 0 + str r1, [sp, 0x4] + cmp r5, 0 + beq _08026EEC + cmp r5, r9 + beq _08026EEC + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _08026EEC + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8040D38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2B + beq _08026EEC + movs r0, 0x1 + lsls r0, r7 + mov r1, r8 + orrs r1, r0 + mov r8, r1 +_08026EEC: + adds r7, 0x1 + cmp r7, 0x5 + ble _08026E94 + mov r2, r8 + cmp r2, 0 + beq _08026F4E + movs r0, 0x1 + bl sub_80751E8 + ldr r4, _08026F3C @ =gUnknown_2023BC4 + strb r0, [r4] + movs r0, 0 + str r0, [sp, 0x4] + mov r0, r8 + lsls r2, r0, 24 + lsrs r2, 24 + add r1, sp, 0x4 + str r1, [sp] + movs r0, 0 + movs r1, 0x28 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _08026F28 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08026F4E + .align 2, 0 +_08026F28: .4byte gUnknown_2023E82 +_08026F2C: .4byte gUnknown_2023BCC +_08026F30: .4byte gUnknown_2023BE4 +_08026F34: .4byte 0xf7ffffff +_08026F38: .4byte gUnknown_2024284 +_08026F3C: .4byte gUnknown_2023BC4 +_08026F40: .4byte gUnknown_202402C +_08026F44: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _08026F56 +_08026F4E: + ldr r1, _08026F64 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x3 + str r0, [r1] +_08026F56: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08026F64: .4byte gUnknown_2023D74 + thumb_func_end sub_8026AB0 + + thumb_func_start sub_8026F68 +sub_8026F68: @ 8026F68 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0x1 + ldr r2, _08027034 @ =gUnknown_2023DB0 + ldr r1, _08027038 @ =gUnknown_2023D6B + ldrb r3, [r1] + lsls r0, r3, 1 + adds r0, r2 + ldrh r0, [r0] + mov r8, r1 + ldr r7, _0802703C @ =gUnknown_2023E0C + cmp r0, 0xB6 + beq _08026F98 + cmp r0, 0xC5 + beq _08026F98 + cmp r0, 0xCB + beq _08026F98 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r7 + movs r1, 0 + strb r1, [r0, 0x8] +_08026F98: + ldr r0, _08027040 @ =gUnknown_2023BE2 + ldrb r1, [r0] + ldr r0, _08027044 @ =gUnknown_2023BCC + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _08026FA8 + movs r6, 0 +_08026FA8: + ldr r2, _08027048 @ =gUnknown_82507E0 + mov r5, r8 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r4, [r0, 0x8] + lsls r4, 1 + adds r4, r2 + bl sub_8044EC8 + ldrh r1, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bcc _0802705C + cmp r6, 0 + beq _0802705C + ldr r4, _0802704C @ =gUnknown_8250C04 + ldr r3, _08027050 @ =gUnknown_2023D4A + ldrh r0, [r3] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + cmp r0, 0x6F + bne _08026FF8 + ldr r0, _08027054 @ =gUnknown_2023E8C + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] + ldr r1, _08027058 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] +_08026FF8: + ldrh r0, [r3] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + cmp r0, 0x74 + bne _0802701E + ldr r0, _08027054 @ =gUnknown_2023E8C + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + ldr r1, _08027058 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] +_0802701E: + mov r1, r8 + ldrb r0, [r1] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] + b _0802707E + .align 2, 0 +_08027034: .4byte gUnknown_2023DB0 +_08027038: .4byte gUnknown_2023D6B +_0802703C: .4byte gUnknown_2023E0C +_08027040: .4byte gUnknown_2023BE2 +_08027044: .4byte gUnknown_2023BCC +_08027048: .4byte gUnknown_82507E0 +_0802704C: .4byte gUnknown_8250C04 +_08027050: .4byte gUnknown_2023D4A +_08027054: .4byte gUnknown_2023E8C +_08027058: .4byte gUnknown_2023E82 +_0802705C: + ldr r2, _08027090 @ =gUnknown_2023E0C + ldr r0, _08027094 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x8] + ldr r1, _08027098 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + ldr r2, _0802709C @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_0802707E: + ldr r1, _080270A0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027090: .4byte gUnknown_2023E0C +_08027094: .4byte gUnknown_2023D6B +_08027098: .4byte gUnknown_2023E82 +_0802709C: .4byte gUnknown_2023DCC +_080270A0: .4byte gUnknown_2023D74 + thumb_func_end sub_8026F68 + + thumb_func_start sub_80270A4 +sub_80270A4: @ 80270A4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08027160 @ =gUnknown_2023BC8 + ldr r2, [r0] + cmp r2, 0 + bne _080271A8 + ldr r1, _08027164 @ =gUnknown_2023D6C + strb r2, [r1] + ldr r0, _08027168 @ =gUnknown_2023BCC + ldrb r3, [r0] + adds r5, r1, 0 + mov r8, r0 + ldr r6, _0802716C @ =gUnknown_2023BE4 + cmp r2, r3 + bcs _080270F0 + adds r0, r6, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x6 + beq _080270F0 + adds r2, r3, 0 + adds r4, r6, 0 + movs r3, 0x58 +_080270D4: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r2 + bcs _080270F0 + ldrb r0, [r5] + muls r0, r3 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x6 + bne _080270D4 +_080270F0: + ldrb r0, [r5] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bne _0802718C + ldr r4, _08027170 @ =gUnknown_2023BC4 + ldr r7, _08027174 @ =gUnknown_2023D6B + ldrb r0, [r7] + strb r0, [r4] + ldr r2, _08027178 @ =gUnknown_2023D50 + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r0, r6 + ldrh r0, [r0, 0x28] + str r0, [r2] + ldr r1, _0802717C @ =0x00007fff + movs r0, 0 + bl sub_800E5EC + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _08027180 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + movs r0, 0 + strb r0, [r5] + mov r2, r8 + ldrb r0, [r2] + cmp r0, 0 + beq _080271A8 + adds r3, r5, 0 + ldrb r5, [r7] + ldr r7, _08027184 @ =gUnknown_825E45C + adds r4, r0, 0 + ldr r6, _08027188 @ =gUnknown_2023D70 +_0802713C: + ldrb r2, [r3] + cmp r2, r5 + beq _08027152 + ldrb r0, [r6] + ldrb r1, [r3] + lsls r1, 2 + adds r1, r7 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + beq _080271A8 +_08027152: + adds r0, r2, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcc _0802713C + b _080271A8 + .align 2, 0 +_08027160: .4byte gUnknown_2023BC8 +_08027164: .4byte gUnknown_2023D6C +_08027168: .4byte gUnknown_2023BCC +_0802716C: .4byte gUnknown_2023BE4 +_08027170: .4byte gUnknown_2023BC4 +_08027174: .4byte gUnknown_2023D6B +_08027178: .4byte gUnknown_2023D50 +_0802717C: .4byte 0x00007fff +_08027180: .4byte gUnknown_2023D74 +_08027184: .4byte gUnknown_825E45C +_08027188: .4byte gUnknown_2023D70 +_0802718C: + ldr r1, _080271B4 @ =gUnknown_2023D6A + movs r0, 0x6 + strb r0, [r1] + ldrb r0, [r5] + movs r1, 0x58 + muls r1, r0 + adds r1, r6 + adds r1, 0x20 + ldrb r1, [r1] + bl sub_80C71D0 + ldr r1, _080271B8 @ =gUnknown_2023D74 + ldr r0, _080271BC @ =gUnknown_81D93AF + str r0, [r1] +_080271A8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080271B4: .4byte gUnknown_2023D6A +_080271B8: .4byte gUnknown_2023D74 +_080271BC: .4byte gUnknown_81D93AF + thumb_func_end sub_80270A4 + + thumb_func_start sub_80271C0 +sub_80271C0: @ 80271C0 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0802720C @ =gUnknown_2023BC8 + ldr r3, [r0] + cmp r3, 0 + bne _08027204 + ldr r4, _08027210 @ =gUnknown_2023BC4 + ldr r0, _08027214 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _08027218 @ =gUnknown_2023BE4 + ldrb r0, [r4] + movs r2, 0x58 + muls r0, r2 + adds r0, r1 + strh r3, [r0, 0x28] + ldrb r0, [r4] + muls r0, r2 + adds r1, 0x28 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2A + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _0802721C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08027204: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802720C: .4byte gUnknown_2023BC8 +_08027210: .4byte gUnknown_2023BC4 +_08027214: .4byte gUnknown_2023D6B +_08027218: .4byte gUnknown_2023BE4 +_0802721C: .4byte gUnknown_2023D74 + thumb_func_end sub_80271C0 + + thumb_func_start sub_8027220 +sub_8027220: @ 8027220 + push {r4-r7,lr} + ldr r3, _08027298 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r4, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r4, r0 + ldr r0, _0802729C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + adds r7, r3, 0 + cmp r0, 0 + beq _080272B8 + ldr r0, _080272A0 @ =gUnknown_2023D6C + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r2, _080272A4 @ =gUnknown_2023D6B + lsls r1, 24 + lsrs r1, 24 + adds r3, r0, 0 + ldr r6, _080272A8 @ =gUnknown_2023D70 + ldr r5, _080272AC @ =gUnknown_825E45C + ldr r0, _080272B0 @ =gUnknown_2023BCC + mov r12, r0 + ldrb r0, [r2] + cmp r1, r0 + bne _08027276 +_08027266: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r2] + cmp r0, r1 + beq _08027266 +_08027276: + ldrb r0, [r6] + ldrb r1, [r3] + lsls r1, 2 + adds r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + bne _08027266 + ldrb r0, [r3] + mov r2, r12 + ldrb r2, [r2] + cmp r0, r2 + bcc _080272B4 + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + b _080272BC + .align 2, 0 +_08027298: .4byte gUnknown_2023D74 +_0802729C: .4byte gUnknown_2022B4C +_080272A0: .4byte gUnknown_2023D6C +_080272A4: .4byte gUnknown_2023D6B +_080272A8: .4byte gUnknown_2023D70 +_080272AC: .4byte gUnknown_825E45C +_080272B0: .4byte gUnknown_2023BCC +_080272B4: + str r4, [r7] + b _080272BC +_080272B8: + adds r0, r2, 0x5 + str r0, [r3] +_080272BC: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8027220 + + thumb_func_start sub_80272C4 +sub_80272C4: @ 80272C4 + push {r4-r6,lr} + ldr r4, _08027320 @ =gUnknown_2023D74 + ldr r1, [r4] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r2, r0 + ldrb r0, [r1, 0x5] + ldr r3, _08027324 @ =gUnknown_2023D6C + cmp r0, 0x1 + bne _080272EC + ldr r0, _08027328 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r3] +_080272EC: + ldr r1, _0802732C @ =gUnknown_2023D50 + ldr r6, _08027330 @ =gUnknown_2023BE4 + ldrb r0, [r3] + movs r5, 0x58 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _08027306 + movs r0, 0x1 + str r0, [r1] +_08027306: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + ldrb r0, [r3] + muls r0, r5 + adds r0, r6 + ldrh r1, [r0, 0x28] + ldrh r0, [r0, 0x2C] + cmp r1, r0 + bne _08027334 + str r2, [r4] + b _0802733A + .align 2, 0 +_08027320: .4byte gUnknown_2023D74 +_08027324: .4byte gUnknown_2023D6C +_08027328: .4byte gUnknown_2023D6B +_0802732C: .4byte gUnknown_2023D50 +_08027330: .4byte gUnknown_2023BE4 +_08027334: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_0802733A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80272C4 + + thumb_func_start sub_8027340 +sub_8027340: @ 8027340 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r2, _080273E0 @ =gUnknown_2023BCC + ldr r0, _080273E4 @ =gUnknown_2023FE8 + mov r10, r0 + movs r1, 0 + add r0, sp, 0x4 +_08027356: + strh r1, [r0] + subs r0, 0x2 + cmp r0, sp + bge _08027356 + movs r1, 0 + mov r8, r1 + movs r5, 0 + ldrb r1, [r2] + cmp r5, r1 + bge _080273AC + ldr r0, _080273E8 @ =gUnknown_2023D6B + ldrb r6, [r0] + ldr r2, _080273EC @ =0x0000ffff + mov r9, r2 + lsls r4, r6, 3 + mov r2, sp + ldr r0, _080273E4 @ =gUnknown_2023FE8 + mov r12, r0 + adds r7, r1, 0 +_0802737C: + cmp r5, r6 + beq _080273A4 + mov r1, r12 + ldr r0, [r1] + adds r0, r4, r0 + adds r1, r0, 0 + adds r1, 0xE0 + ldrb r3, [r1] + adds r0, 0xE1 + ldrb r0, [r0] + lsls r0, 8 + orrs r3, r0 + cmp r3, 0 + beq _080273A4 + cmp r3, r9 + beq _080273A4 + strh r3, [r2] + adds r2, 0x2 + movs r0, 0x1 + add r8, r0 +_080273A4: + adds r4, 0x2 + adds r5, 0x1 + cmp r5, r7 + blt _0802737C +_080273AC: + ldr r1, _080273E8 @ =gUnknown_2023D6B + ldrb r0, [r1] + mov r2, r10 + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r1, r0, 0 + adds r1, 0x98 + ldrb r3, [r1] + adds r0, 0x99 + ldrb r0, [r0] + lsls r0, 8 + orrs r3, r0 + cmp r3, 0 + beq _080273FC + ldr r0, _080273EC @ =0x0000ffff + cmp r3, r0 + beq _080273FC + ldr r2, _080273F0 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _080273F4 @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _080273F8 @ =gUnknown_2023D4A + strh r3, [r4] + b _08027426 + .align 2, 0 +_080273E0: .4byte gUnknown_2023BCC +_080273E4: .4byte gUnknown_2023FE8 +_080273E8: .4byte gUnknown_2023D6B +_080273EC: .4byte 0x0000ffff +_080273F0: .4byte gUnknown_2023DD0 +_080273F4: .4byte 0xfffffbff +_080273F8: .4byte gUnknown_2023D4A +_080273FC: + mov r0, r8 + cmp r0, 0 + beq _0802746C + ldr r2, _08027450 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08027454 @ =0xfffffbff + ands r0, r1 + str r0, [r2] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + mov r1, r8 + bl __modsi3 + adds r5, r0, 0 + ldr r4, _08027458 @ =gUnknown_2023D4A + lsls r0, r5, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4] +_08027426: + ldrh r0, [r4] + movs r1, 0 + bl sub_801D05C + ldr r1, _0802745C @ =gUnknown_2023D6C + strb r0, [r1] + ldr r5, _08027460 @ =gUnknown_2023D74 + ldr r3, _08027464 @ =gUnknown_81D65A8 + ldr r2, _08027468 @ =gUnknown_8250C04 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r5] + b _0802748A + .align 2, 0 +_08027450: .4byte gUnknown_2023DD0 +_08027454: .4byte 0xfffffbff +_08027458: .4byte gUnknown_2023D4A +_0802745C: .4byte gUnknown_2023D6C +_08027460: .4byte gUnknown_2023D74 +_08027464: .4byte gUnknown_81D65A8 +_08027468: .4byte gUnknown_8250C04 +_0802746C: + ldr r2, _0802749C @ =gUnknown_2023ECC + ldr r0, _080274A0 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r1, _080274A4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0802748A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802749C: .4byte gUnknown_2023ECC +_080274A0: .4byte gUnknown_2023D6B +_080274A4: .4byte gUnknown_2023D74 + thumb_func_end sub_8027340 + + thumb_func_start sub_80274A8 +sub_80274A8: @ 80274A8 + push {lr} + ldr r2, _080274C8 @ =gUnknown_2023F1C + ldrh r0, [r2] + movs r1, 0x7 + ands r1, r0 + cmp r1, 0 + beq _080274D4 + ldr r2, _080274CC @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080274D0 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _080274E4 + .align 2, 0 +_080274C8: .4byte gUnknown_2023F1C +_080274CC: .4byte gUnknown_2023DCC +_080274D0: .4byte gUnknown_2023E82 +_080274D4: + movs r0, 0x1 + strh r0, [r2] + ldr r0, _080274F0 @ =gUnknown_2023E82 + strb r1, [r0, 0x5] + ldr r0, _080274F4 @ =gUnknown_2023F20 + adds r0, 0x28 + movs r1, 0x5 + strb r1, [r0] +_080274E4: + ldr r1, _080274F8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080274F0: .4byte gUnknown_2023E82 +_080274F4: .4byte gUnknown_2023F20 +_080274F8: .4byte gUnknown_2023D74 + thumb_func_end sub_80274A8 + + thumb_func_start sub_80274FC +sub_80274FC: @ 80274FC + push {r4-r6,lr} + ldr r6, _0802752C @ =gUnknown_2023D6B + ldrb r0, [r6] + bl sub_80751D8 + ldr r4, _08027530 @ =gUnknown_2023DDE + movs r5, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r1, [r1] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0802753C + ldr r2, _08027534 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08027538 @ =gUnknown_2023E82 + movs r0, 0 + b _080275B0 + .align 2, 0 +_0802752C: .4byte gUnknown_2023D6B +_08027530: .4byte gUnknown_2023DDE +_08027534: .4byte gUnknown_2023DCC +_08027538: .4byte gUnknown_2023E82 +_0802753C: + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r6] + bl sub_80751D8 + ldr r4, _080275A0 @ =gUnknown_2023DE4 + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x5 + strb r1, [r0] + ldrb r0, [r6] + bl sub_80751D8 + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r6] + strb r1, [r0, 0x1] + ldr r0, _080275A4 @ =gUnknown_2022B4C + ldr r0, [r0] + ands r0, r5 + cmp r0, 0 + beq _080275AC + movs r0, 0x1 + bl sub_803F5B4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bne _080275AC + ldr r0, _080275A8 @ =gUnknown_2023E82 + strb r1, [r0, 0x5] + b _080275B2 + .align 2, 0 +_080275A0: .4byte gUnknown_2023DE4 +_080275A4: .4byte gUnknown_2022B4C +_080275A8: .4byte gUnknown_2023E82 +_080275AC: + ldr r1, _080275C0 @ =gUnknown_2023E82 + movs r0, 0x1 +_080275B0: + strb r0, [r1, 0x5] +_080275B2: + ldr r1, _080275C4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080275C0: .4byte gUnknown_2023E82 +_080275C4: .4byte gUnknown_2023D74 + thumb_func_end sub_80274FC + + thumb_func_start sub_80275C8 +sub_80275C8: @ 80275C8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r7, _08027608 @ =gUnknown_2023DCC + ldrb r5, [r7] + movs r0, 0x29 + ands r0, r5 + cmp r0, 0 + bne _080275FA + ldr r0, _0802760C @ =gUnknown_2023DFC + mov r9, r0 + ldr r1, _08027610 @ =gUnknown_2023D6C + mov r8, r1 + ldrb r4, [r1] + lsls r0, r4, 2 + mov r2, r9 + adds r6, r0, r2 + ldr r2, [r6] + movs r0, 0x4 + mov r12, r0 + adds r3, r2, 0 + ands r3, r0 + cmp r3, 0 + beq _08027618 +_080275FA: + movs r0, 0x1 + orrs r0, r5 + strb r0, [r7] + ldr r1, _08027614 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08027668 + .align 2, 0 +_08027608: .4byte gUnknown_2023DCC +_0802760C: .4byte gUnknown_2023DFC +_08027610: .4byte gUnknown_2023D6C +_08027614: .4byte gUnknown_2023E82 +_08027618: + ldr r1, _08027644 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, r0, r1 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xC + beq _08027634 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xC + bne _0802764C +_08027634: + movs r0, 0x1 + orrs r0, r5 + strb r0, [r7] + ldr r1, _08027648 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _08027668 + .align 2, 0 +_08027644: .4byte gUnknown_2023BE4 +_08027648: .4byte gUnknown_2023E82 +_0802764C: + ldr r0, _0802767C @ =gUnknown_2023D6B + ldrb r0, [r0] + orrs r2, r0 + str r2, [r6] + mov r2, r8 + ldrb r1, [r2] + lsls r1, 2 + add r1, r9 + ldr r0, [r1] + mov r2, r12 + orrs r0, r2 + str r0, [r1] + ldr r0, _08027680 @ =gUnknown_2023E82 + strb r3, [r0, 0x5] +_08027668: + ldr r1, _08027684 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802767C: .4byte gUnknown_2023D6B +_08027680: .4byte gUnknown_2023E82 +_08027684: .4byte gUnknown_2023D74 + thumb_func_end sub_80275C8 + + thumb_func_start sub_8027688 +sub_8027688: @ 8027688 + push {r4,lr} + ldr r1, _080276A0 @ =gUnknown_2023D74 + ldr r0, [r1] + ldrb r2, [r0, 0x1] + adds r4, r1, 0 + cmp r2, 0x1 + beq _080276B8 + cmp r2, 0x1 + bgt _080276A4 + cmp r2, 0 + beq _080276AA + b _080276F8 + .align 2, 0 +_080276A0: .4byte gUnknown_2023D74 +_080276A4: + cmp r2, 0x2 + beq _080276F0 + b _080276F8 +_080276AA: + ldr r1, _080276B4 @ =gUnknown_2023D50 + ldr r0, [r1] + negs r0, r0 + b _080276F6 + .align 2, 0 +_080276B4: .4byte gUnknown_2023D50 +_080276B8: + ldr r3, _080276E4 @ =gUnknown_2023D50 + ldr r0, [r3] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + str r0, [r3] + cmp r0, 0 + bne _080276CA + str r2, [r3] +_080276CA: + ldr r2, _080276E8 @ =gUnknown_2023BE4 + ldr r0, _080276EC @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2C] + lsrs r1, r0, 1 + ldr r0, [r3] + cmp r1, r0 + bge _080276F8 + str r1, [r3] + b _080276F8 + .align 2, 0 +_080276E4: .4byte gUnknown_2023D50 +_080276E8: .4byte gUnknown_2023BE4 +_080276EC: .4byte gUnknown_2023D6C +_080276F0: + ldr r1, _08027704 @ =gUnknown_2023D50 + ldr r0, [r1] + lsls r0, 1 +_080276F6: + str r0, [r1] +_080276F8: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08027704: .4byte gUnknown_2023D50 + thumb_func_end sub_8027688 + + thumb_func_start sub_8027708 +sub_8027708: @ 8027708 + push {r4-r7,lr} + sub sp, 0x4 + ldr r0, _08027760 @ =gUnknown_2023D74 + mov r12, r0 + ldr r1, [r0] + ldrb r6, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r6, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r6, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r6, r0 + ldr r5, _08027764 @ =gUnknown_2023BC4 + ldr r2, _08027768 @ =gUnknown_2023D6C + ldr r0, _0802776C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r2] + strb r0, [r5] + ldr r4, _08027770 @ =gUnknown_2023D50 + ldr r1, _08027774 @ =gUnknown_2023BE4 + ldrb r0, [r2] + movs r3, 0x58 + muls r0, r3 + adds r0, r1 + ldrh r0, [r0, 0x2C] + negs r0, r0 + str r0, [r4] + ldrb r0, [r2] + adds r4, r0, 0 + muls r4, r3 + adds r0, r4, r1 + ldrh r3, [r0, 0x28] + adds r7, r5, 0 + adds r5, r2, 0 + adds r2, r1, 0 + ldrh r0, [r0, 0x2C] + cmp r3, r0 + bne _08027778 + mov r0, r12 + str r6, [r0] + b _080277C8 + .align 2, 0 +_08027760: .4byte gUnknown_2023D74 +_08027764: .4byte gUnknown_2023BC4 +_08027768: .4byte gUnknown_2023D6C +_0802776C: .4byte gUnknown_2023D6B +_08027770: .4byte gUnknown_2023D50 +_08027774: .4byte gUnknown_2023BE4 +_08027778: + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r4, r0 + ldr r1, [r0] + movs r0, 0xF8 + ands r1, r0 + cmp r1, 0 + beq _08027794 + ldr r1, _08027790 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08027798 + .align 2, 0 +_08027790: .4byte gUnknown_2023E82 +_08027794: + ldr r0, _080277D0 @ =gUnknown_2023E82 + strb r1, [r0, 0x5] +_08027798: + ldrb r0, [r5] + movs r3, 0x58 + muls r0, r3 + adds r2, 0x4C + adds r0, r2 + movs r1, 0x3 + str r1, [r0] + ldrb r0, [r7] + muls r0, r3 + adds r0, r2 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r7] + bl sub_8017248 + ldr r1, _080277D4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080277C8: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080277D0: .4byte gUnknown_2023E82 +_080277D4: .4byte gUnknown_2023D74 + thumb_func_end sub_8027708 + + thumb_func_start sub_80277D8 +sub_80277D8: @ 80277D8 + push {r4,r5,lr} + ldr r5, _0802780C @ =gUnknown_2023D74 + ldr r4, [r5] + ldrb r3, [r4, 0x1] + ldrb r0, [r4, 0x2] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r4, 0x3] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r4, 0x4] + lsls r0, 24 + orrs r3, r0 + ldr r2, _08027810 @ =gUnknown_2023E0C + ldr r0, _08027814 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x16] + cmp r0, 0 + beq _08027818 + adds r0, r4, 0x5 + str r0, [r5] + b _0802781A + .align 2, 0 +_0802780C: .4byte gUnknown_2023D74 +_08027810: .4byte gUnknown_2023E0C +_08027814: .4byte gUnknown_2023D6B +_08027818: + str r3, [r5] +_0802781A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80277D8 + + thumb_func_start sub_8027820 +sub_8027820: @ 8027820 + ldr r1, _0802782C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802782C: .4byte gUnknown_2023D74 + thumb_func_end sub_8027820 + + thumb_func_start sub_8027830 +sub_8027830: @ 8027830 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r0, _08027888 @ =gUnknown_2023BCC + ldrb r1, [r0] + mov r8, r0 + cmp r2, r1 + bge _080278A4 + ldr r0, _0802788C @ =gUnknown_2023BE4 + mov r12, r0 + movs r0, 0x58 + muls r0, r3 + add r0, r12 + adds r5, r0, 0 + adds r5, 0x20 + adds r4, r1, 0 + movs r3, 0 + ldr r6, _08027890 @ =gUnknown_2023FC4 + ldr r7, _08027894 @ =gUnknown_2023E82 +_0802785C: + mov r0, r12 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x70 + ands r0, r1 + cmp r0, 0 + beq _0802789C + ldrb r0, [r5] + cmp r0, 0x2B + beq _0802789C + movs r3, 0 + strb r2, [r6, 0x17] + ldr r1, _08027898 @ =gUnknown_2023D6C + ldrb r0, [r1] + cmp r0, 0xFF + beq _080278BC + cmp r0, r2 + beq _080278B0 + movs r0, 0x1 + strb r0, [r7, 0x5] + b _080278A4 + .align 2, 0 +_08027888: .4byte gUnknown_2023BCC +_0802788C: .4byte gUnknown_2023BE4 +_08027890: .4byte gUnknown_2023FC4 +_08027894: .4byte gUnknown_2023E82 +_08027898: .4byte gUnknown_2023D6C +_0802789C: + adds r3, 0x58 + adds r2, 0x1 + cmp r2, r4 + blt _0802785C +_080278A4: + mov r1, r8 + ldrb r1, [r1] + cmp r2, r1 + beq _080278C0 + movs r0, 0x1 + b _080278C2 +_080278B0: + ldr r0, _080278B8 @ =gUnknown_2023E82 + strb r3, [r0, 0x5] + b _080278A4 + .align 2, 0 +_080278B8: .4byte gUnknown_2023E82 +_080278BC: + strb r2, [r1] + b _080278A4 +_080278C0: + movs r0, 0 +_080278C2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8027830 + + thumb_func_start sub_80278CC +sub_80278CC: @ 80278CC + push {r4-r6,lr} + ldr r5, _080278F8 @ =gUnknown_2023D74 + ldr r1, [r5] + ldrb r4, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r4, r0 + ldr r6, _080278FC @ =gUnknown_2023D6C + ldrb r0, [r6] + bl sub_8027830 + lsls r0, 24 + cmp r0, 0 + beq _08027900 + str r4, [r5] + b _08027942 + .align 2, 0 +_080278F8: .4byte gUnknown_2023D74 +_080278FC: .4byte gUnknown_2023D6C +_08027900: + ldr r1, _08027930 @ =gUnknown_2023BE4 + ldrb r3, [r6] + movs r0, 0x58 + muls r0, r3 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + adds r1, r0, 0 + cmp r1, 0xF + beq _08027918 + cmp r1, 0x48 + bne _0802793C +_08027918: + ldr r2, _08027934 @ =gUnknown_2023D6A + strb r0, [r2] + ldr r1, _08027938 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + str r4, [r5] + ldrb r1, [r2] + adds r0, r3, 0 + bl sub_80C71D0 + b _08027942 + .align 2, 0 +_08027930: .4byte gUnknown_2023BE4 +_08027934: .4byte gUnknown_2023D6A +_08027938: .4byte gUnknown_2023E82 +_0802793C: + ldr r0, [r5] + adds r0, 0x5 + str r0, [r5] +_08027942: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80278CC + + thumb_func_start sub_8027948 +sub_8027948: @ 8027948 + push {r4,r5,lr} + ldr r5, _08027970 @ =gUnknown_2023E0C + ldr r4, _08027974 @ =gUnknown_2023D6B + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1, 0x9] + cmp r0, 0x3 + bne _08027980 + ldr r2, _08027978 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802797C @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _080279AA + .align 2, 0 +_08027970: .4byte gUnknown_2023E0C +_08027974: .4byte gUnknown_2023D6B +_08027978: .4byte gUnknown_2023DCC +_0802797C: .4byte gUnknown_2023E82 +_08027980: + adds r0, 0x1 + movs r3, 0 + strb r0, [r1, 0x9] + ldr r2, _080279B8 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x1 + strb r0, [r2, 0x1] + strb r0, [r2, 0x2] + strb r0, [r2, 0x3] + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x9] + strb r0, [r2, 0x4] + movs r0, 0xFF + strb r0, [r2, 0x5] + ldr r0, _080279BC @ =gUnknown_2023E82 + strb r3, [r0, 0x5] +_080279AA: + ldr r1, _080279C0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080279B8: .4byte gUnknown_2022AB8 +_080279BC: .4byte gUnknown_2023E82 +_080279C0: .4byte gUnknown_2023D74 + thumb_func_end sub_8027948 + + thumb_func_start sub_80279C4 +sub_80279C4: @ 80279C4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r3, _080279FC @ =gUnknown_2023D74 + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r2, r0 + ldr r7, _08027A00 @ =gUnknown_2023E0C + ldr r6, _08027A04 @ =gUnknown_2023D6B + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _08027A08 + str r2, [r3] + b _08027AAA + .align 2, 0 +_080279FC: .4byte gUnknown_2023D74 +_08027A00: .4byte gUnknown_2023E0C +_08027A04: .4byte gUnknown_2023D6B +_08027A08: + ldr r0, _08027AB8 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + beq _08027A90 + ldr r0, _08027ABC @ =gUnknown_2023D50 + mov r8, r0 + ldr r4, _08027AC0 @ =gUnknown_2023DDE + ldr r5, _08027AC4 @ =gUnknown_2023D6C + ldrb r0, [r5] + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + ldrb r0, [r6] + movs r4, 0x58 + muls r0, r4 + ldr r2, _08027AC8 @ =gUnknown_2023BE4 + adds r0, r2 + ldrb r1, [r5] + muls r1, r4 + adds r1, r2 + ldr r2, _08027ACC @ =gUnknown_2023D4A + ldrh r2, [r2] + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + ldrb r4, [r6] + str r4, [sp, 0x8] + ldrb r4, [r5] + str r4, [sp, 0xC] + bl sub_803ECEC + ldrb r2, [r6] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r7 + ldrb r1, [r1, 0x9] + adds r3, r0, 0 + muls r3, r1 + mov r1, r8 + str r3, [r1] + ldr r2, _08027AD0 @ =gUnknown_2023FC4 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0, 0x9] + strb r0, [r2, 0x18] + ldr r1, _08027AD4 @ =gUnknown_2023E8C + ldrb r0, [r6] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _08027A90 + lsls r0, r3, 4 + subs r0, r3 + movs r1, 0xA + bl __divsi3 + mov r1, r8 + str r0, [r1] +_08027A90: + ldr r2, _08027AD8 @ =gUnknown_2023E0C + ldr r0, _08027ADC @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + ldr r1, _08027AE0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08027AAA: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027AB8: .4byte gUnknown_2023E82 +_08027ABC: .4byte gUnknown_2023D50 +_08027AC0: .4byte gUnknown_2023DDE +_08027AC4: .4byte gUnknown_2023D6C +_08027AC8: .4byte gUnknown_2023BE4 +_08027ACC: .4byte gUnknown_2023D4A +_08027AD0: .4byte gUnknown_2023FC4 +_08027AD4: .4byte gUnknown_2023E8C +_08027AD8: .4byte gUnknown_2023E0C +_08027ADC: .4byte gUnknown_2023D6B +_08027AE0: .4byte gUnknown_2023D74 + thumb_func_end sub_80279C4 + + thumb_func_start sub_8027AE4 +sub_8027AE4: @ 8027AE4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _08027B24 @ =gUnknown_2023D74 + ldr r1, [r7] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r2, r0 + ldr r0, _08027B28 @ =gUnknown_2023E0C + mov r8, r0 + ldr r6, _08027B2C @ =gUnknown_2023D6B + ldrb r3, [r6] + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + mov r1, r8 + adds r4, r0, r1 + ldrb r1, [r4, 0x9] + cmp r1, 0 + bne _08027B34 + str r2, [r7] + ldr r0, _08027B30 @ =gUnknown_2023E82 + strb r1, [r0, 0x5] + b _08027BB0 + .align 2, 0 +_08027B24: .4byte gUnknown_2023D74 +_08027B28: .4byte gUnknown_2023E0C +_08027B2C: .4byte gUnknown_2023D6B +_08027B30: .4byte gUnknown_2023E82 +_08027B34: + ldr r1, _08027B58 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r3 + adds r1, r0, r1 + ldrh r0, [r1, 0x2C] + ldrh r3, [r1, 0x28] + cmp r0, r3 + bne _08027B64 + movs r0, 0 + strb r0, [r4, 0x9] + str r2, [r7] + ldr r1, _08027B5C @ =gUnknown_2023D6C + ldrb r0, [r6] + strb r0, [r1] + ldr r1, _08027B60 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08027BB0 + .align 2, 0 +_08027B58: .4byte gUnknown_2023BE4 +_08027B5C: .4byte gUnknown_2023D6C +_08027B60: .4byte gUnknown_2023E82 +_08027B64: + ldr r5, _08027BBC @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + ldrb r1, [r4, 0x9] + movs r2, 0x3 + subs r2, r1 + movs r4, 0x1 + adds r1, r4, 0 + lsls r1, r2 + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _08027B80 + str r4, [r5] +_08027B80: + ldr r0, [r5] + negs r0, r0 + str r0, [r5] + ldr r3, _08027BC0 @ =gUnknown_2023FC4 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x9] + movs r2, 0 + strb r0, [r3, 0x18] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + strb r2, [r0, 0x9] + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + ldr r1, _08027BC4 @ =gUnknown_2023D6C + ldrb r0, [r6] + strb r0, [r1] +_08027BB0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027BBC: .4byte gUnknown_2023D50 +_08027BC0: .4byte gUnknown_2023FC4 +_08027BC4: .4byte gUnknown_2023D6C + thumb_func_end sub_8027AE4 + + thumb_func_start sub_8027BC8 +sub_8027BC8: @ 8027BC8 + push {lr} + ldr r2, _08027BF0 @ =gUnknown_2023D50 + ldr r0, _08027BF4 @ =gUnknown_2023D54 + ldr r0, [r0] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + negs r0, r0 + str r0, [r2] + cmp r0, 0 + bne _08027BE4 + movs r0, 0x1 + negs r0, r0 + str r0, [r2] +_08027BE4: + ldr r1, _08027BF8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08027BF0: .4byte gUnknown_2023D50 +_08027BF4: .4byte gUnknown_2023D54 +_08027BF8: .4byte gUnknown_2023D74 + thumb_func_end sub_8027BC8 + + thumb_func_start sub_8027BFC +sub_8027BFC: @ 8027BFC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r3 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r0, 0 + mov r9, r0 + mov r10, r0 + movs r0, 0x40 + ands r0, r5 + cmp r0, 0 + beq _08027C30 + ldr r0, _08027C28 @ =gUnknown_2023BC4 + ldr r1, _08027C2C @ =gUnknown_2023D6B + b _08027C34 + .align 2, 0 +_08027C28: .4byte gUnknown_2023BC4 +_08027C2C: .4byte gUnknown_2023D6B +_08027C30: + ldr r0, _08027CD4 @ =gUnknown_2023BC4 + ldr r1, _08027CD8 @ =gUnknown_2023D6C +_08027C34: + ldrb r1, [r1] + strb r1, [r0] + movs r0, 0xBF + ands r5, r0 + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + beq _08027C4E + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08027C4E: + movs r0, 0x7F + ands r5, r0 + movs r0, 0x20 + ands r0, r5 + cmp r0, 0 + beq _08027C64 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_08027C64: + movs r0, 0xDF + ands r5, r0 + ldr r1, _08027CDC @ =gUnknown_2022AB8 + movs r4, 0 + movs r2, 0xFD + strb r2, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + strb r7, [r1, 0x2] + movs r3, 0x1 + negs r3, r3 + mov r12, r3 + movs r0, 0xFF + strb r0, [r1, 0x3] + lsls r0, r6, 24 + cmp r0, 0 + blt _08027C88 + b _08027F6C +_08027C88: + ldr r4, _08027CE0 @ =gUnknown_2023DE4 + ldr r1, _08027CD4 @ =gUnknown_2023BC4 + ldrb r0, [r1] + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08027D28 + mov r2, r9 + cmp r2, 0 + bne _08027D28 + ldr r0, _08027CE4 @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xAE + beq _08027D58 + cmp r5, 0x1 + bne _08027D48 + ldr r4, _08027CE8 @ =gUnknown_2023ECC + ldr r3, _08027CD4 @ =gUnknown_2023BC4 + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08027CF0 + ldr r0, _08027CEC @ =gUnknown_2023D74 + mov r4, r8 + str r4, [r0] + b _08027D48 + .align 2, 0 +_08027CD4: .4byte gUnknown_2023BC4 +_08027CD8: .4byte gUnknown_2023D6C +_08027CDC: .4byte gUnknown_2022AB8 +_08027CE0: .4byte gUnknown_2023DE4 +_08027CE4: .4byte gUnknown_2023D4A +_08027CE8: .4byte gUnknown_2023ECC +_08027CEC: .4byte gUnknown_2023D74 +_08027CF0: + mov r0, r8 + bl sub_8017520 + ldr r1, _08027D18 @ =gUnknown_2023FC4 + ldr r6, _08027D1C @ =gUnknown_2023BC4 + ldrb r0, [r6] + strb r0, [r1, 0x17] + ldr r1, _08027D20 @ =gUnknown_2023D74 + ldr r0, _08027D24 @ =gUnknown_81D8C3E + str r0, [r1] + ldrb r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _08027D48 + .align 2, 0 +_08027D18: .4byte gUnknown_2023FC4 +_08027D1C: .4byte gUnknown_2023BC4 +_08027D20: .4byte gUnknown_2023D74 +_08027D24: .4byte gUnknown_81D8C3E +_08027D28: + ldr r0, _08027D4C @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xAE + beq _08027D58 + mov r0, r10 + cmp r0, 0x1 + beq _08027D58 + movs r0, 0 + bl sub_801DC10 + lsls r0, 24 + cmp r0, 0 + beq _08027D58 + ldr r1, _08027D50 @ =gUnknown_2023D74 + ldr r0, _08027D54 @ =gUnknown_81D7DF2 + str r0, [r1] +_08027D48: + movs r0, 0x1 + b _08028060 + .align 2, 0 +_08027D4C: .4byte gUnknown_2023D4A +_08027D50: .4byte gUnknown_2023D74 +_08027D54: .4byte gUnknown_81D7DF2 +_08027D58: + ldr r2, _08027DA0 @ =gUnknown_2023BE4 + ldr r1, _08027DA4 @ =gUnknown_2023BC4 + ldrb r3, [r1] + movs r4, 0x58 + adds r0, r3, 0 + muls r0, r4 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + mov r10, r2 + cmp r0, 0x1D + beq _08027D74 + cmp r0, 0x49 + bne _08027E0C +_08027D74: + mov r0, r9 + cmp r0, 0 + bne _08027E0C + ldr r0, _08027DA8 @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xAE + beq _08027E0C + cmp r5, 0x1 + bne _08027D48 + ldr r4, _08027DAC @ =gUnknown_2023ECC + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _08027DB4 + ldr r0, _08027DB0 @ =gUnknown_2023D74 + mov r1, r8 + str r1, [r0] + b _08027D48 + .align 2, 0 +_08027DA0: .4byte gUnknown_2023BE4 +_08027DA4: .4byte gUnknown_2023BC4 +_08027DA8: .4byte gUnknown_2023D4A +_08027DAC: .4byte gUnknown_2023ECC +_08027DB0: .4byte gUnknown_2023D74 +_08027DB4: + mov r0, r8 + bl sub_8017520 + ldr r1, _08027DF8 @ =gUnknown_2023FC4 + ldr r2, _08027DFC @ =gUnknown_2023BC4 + ldrb r0, [r2] + strb r0, [r1, 0x17] + ldr r1, _08027E00 @ =gUnknown_2023D74 + ldr r0, _08027E04 @ =gUnknown_81D9416 + str r0, [r1] + ldr r1, _08027E08 @ =gUnknown_2023D6A + ldrb r0, [r2] + movs r3, 0x58 + muls r0, r3 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + ldrb r1, [r1] + bl sub_80C71D0 + ldr r6, _08027DFC @ =gUnknown_2023BC4 + ldrb r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _08027D48 + .align 2, 0 +_08027DF8: .4byte gUnknown_2023FC4 +_08027DFC: .4byte gUnknown_2023BC4 +_08027E00: .4byte gUnknown_2023D74 +_08027E04: .4byte gUnknown_81D9416 +_08027E08: .4byte gUnknown_2023D6A +_08027E0C: + ldr r1, _08027E58 @ =gUnknown_2023BC4 + ldrb r0, [r1] + movs r4, 0x58 + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x33 + bne _08027E6C + mov r2, r9 + cmp r2, 0 + bne _08027E6C + cmp r7, 0x6 + bne _08027E6C + cmp r5, 0x1 + bne _08027D48 + mov r0, r8 + bl sub_8017520 + ldr r1, _08027E5C @ =gUnknown_2023FC4 + ldr r3, _08027E58 @ =gUnknown_2023BC4 + ldrb r0, [r3] + strb r0, [r1, 0x17] + ldr r1, _08027E60 @ =gUnknown_2023D74 + ldr r0, _08027E64 @ =gUnknown_81D947E + str r0, [r1] + ldr r1, _08027E68 @ =gUnknown_2023D6A + ldrb r0, [r3] + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r3] + ldrb r1, [r1] + bl sub_80C71D0 + b _08027D48 + .align 2, 0 +_08027E58: .4byte gUnknown_2023BC4 +_08027E5C: .4byte gUnknown_2023FC4 +_08027E60: .4byte gUnknown_2023D74 +_08027E64: .4byte gUnknown_81D947E +_08027E68: .4byte gUnknown_2023D6A +_08027E6C: + ldr r4, _08027EBC @ =gUnknown_2023BC4 + ldrb r0, [r4] + movs r4, 0x58 + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x34 + bne _08027ED0 + mov r0, r9 + cmp r0, 0 + bne _08027ED0 + cmp r7, 0x1 + bne _08027ED0 + cmp r5, 0x1 + beq _08027E8E + b _08027D48 +_08027E8E: + mov r0, r8 + bl sub_8017520 + ldr r1, _08027EC0 @ =gUnknown_2023FC4 + ldr r2, _08027EBC @ =gUnknown_2023BC4 + ldrb r0, [r2] + strb r0, [r1, 0x17] + ldr r1, _08027EC4 @ =gUnknown_2023D74 + ldr r0, _08027EC8 @ =gUnknown_81D947E + str r0, [r1] + ldr r1, _08027ECC @ =gUnknown_2023D6A + ldrb r0, [r2] + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + ldrb r1, [r1] + bl sub_80C71D0 + b _08027D48 + .align 2, 0 +_08027EBC: .4byte gUnknown_2023BC4 +_08027EC0: .4byte gUnknown_2023FC4 +_08027EC4: .4byte gUnknown_2023D74 +_08027EC8: .4byte gUnknown_81D947E +_08027ECC: .4byte gUnknown_2023D6A +_08027ED0: + ldr r3, _08027F5C @ =gUnknown_2023BC4 + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x13 + bne _08027EE8 + cmp r5, 0 + bne _08027EE8 + b _08027D48 +_08027EE8: + lsls r0, r6, 24 + asrs r0, 28 + movs r1, 0x7 + ands r0, r1 + negs r0, r0 + lsls r0, 24 + ldr r3, _08027F60 @ =gUnknown_2022AC8 + movs r4, 0 + movs r1, 0xFD + strb r1, [r3] + movs r2, 0x1 + lsrs r6, r0, 24 + asrs r0, 24 + subs r1, 0xFF + cmp r0, r1 + bne _08027F12 + strb r4, [r3, 0x1] + movs r0, 0xD3 + strb r0, [r3, 0x2] + strb r4, [r3, 0x3] + movs r2, 0x4 +_08027F12: + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + movs r0, 0xD4 + strb r0, [r1] + adds r2, 0x1 + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + movs r0, 0xFF + strb r0, [r1] + ldr r4, _08027F5C @ =gUnknown_2023BC4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r0, r7, r0 + mov r1, r10 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08027FC2 + movs r1, 0 + ldr r0, _08027F64 @ =gUnknown_2023D6C + ldrb r0, [r0] + ldr r3, _08027F68 @ =gUnknown_2023E82 + mov r8, r3 + cmp r0, r2 + bne _08027F56 + movs r1, 0x1 +_08027F56: + mov r4, r8 + strb r1, [r4, 0x5] + b _08027FF0 + .align 2, 0 +_08027F5C: .4byte gUnknown_2023BC4 +_08027F60: .4byte gUnknown_2022AC8 +_08027F64: .4byte gUnknown_2023D6C +_08027F68: .4byte gUnknown_2023E82 +_08027F6C: + asrs r6, r0, 28 + movs r0, 0x7 + ands r6, r0 + ldr r3, _08027FCC @ =gUnknown_2022AC8 + strb r2, [r3] + movs r2, 0x1 + cmp r6, 0x2 + bne _08027F86 + strb r4, [r3, 0x1] + movs r0, 0xD1 + strb r0, [r3, 0x2] + strb r4, [r3, 0x3] + movs r2, 0x4 +_08027F86: + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + movs r0, 0xD2 + strb r0, [r1] + adds r2, 0x1 + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + ldrb r0, [r1] + mov r2, r12 + orrs r0, r2 + strb r0, [r1] + ldr r2, _08027FD0 @ =gUnknown_2023BE4 + ldr r4, _08027FD4 @ =gUnknown_2023BC4 + ldrb r3, [r4] + movs r0, 0x58 + muls r0, r3 + adds r0, r7, r0 + adds r1, r2, 0 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + mov r10, r2 + cmp r0, 0xC + bne _08027FDC +_08027FC2: + ldr r1, _08027FD8 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + mov r8, r1 + b _08027FF0 + .align 2, 0 +_08027FCC: .4byte gUnknown_2022AC8 +_08027FD0: .4byte gUnknown_2023BE4 +_08027FD4: .4byte gUnknown_2023BC4 +_08027FD8: .4byte gUnknown_2023E82 +_08027FDC: + movs r1, 0 + ldr r0, _08028070 @ =gUnknown_2023D6C + ldrb r0, [r0] + ldr r2, _08028074 @ =gUnknown_2023E82 + mov r8, r2 + cmp r0, r3 + bne _08027FEC + movs r1, 0x1 +_08027FEC: + mov r3, r8 + strb r1, [r3, 0x5] +_08027FF0: + ldr r2, _08028078 @ =gUnknown_2023BC4 + ldrb r0, [r2] + movs r4, 0x58 + adds r1, r0, 0 + muls r1, r4 + adds r1, r7, r1 + mov r3, r10 + adds r3, 0x18 + adds r1, r3 + lsls r0, r6, 24 + asrs r0, 24 + ldrb r6, [r1] + adds r0, r6 + strb r0, [r1] + ldrb r0, [r2] + muls r0, r4 + adds r0, r7, r0 + adds r1, r0, r3 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0 + bge _08028020 + movs r0, 0 + strb r0, [r1] +_08028020: + ldr r1, _08028078 @ =gUnknown_2023BC4 + ldrb r0, [r1] + muls r0, r4 + adds r0, r7, r0 + adds r1, r0, r3 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0xC + ble _08028036 + movs r0, 0xC + strb r0, [r1] +_08028036: + mov r2, r8 + ldrb r0, [r2, 0x5] + cmp r0, 0x2 + bne _0802805E + movs r3, 0x1 + ands r3, r5 + cmp r3, 0 + beq _08028050 + ldr r0, _0802807C @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] +_08028050: + mov r4, r8 + ldrb r0, [r4, 0x5] + cmp r0, 0x2 + bne _0802805E + cmp r3, 0 + bne _0802805E + b _08027D48 +_0802805E: + movs r0, 0 +_08028060: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08028070: .4byte gUnknown_2023D6C +_08028074: .4byte gUnknown_2023E82 +_08028078: .4byte gUnknown_2023BC4 +_0802807C: .4byte gUnknown_2023DCC + thumb_func_end sub_8027BFC + + thumb_func_start sub_8028080 +sub_8028080: @ 8028080 + push {r4,r5,lr} + ldr r5, _080280C4 @ =gUnknown_2023D74 + ldr r2, [r5] + ldrb r3, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r3, r0 + ldr r0, _080280C8 @ =gUnknown_2023FC4 + ldrb r4, [r0, 0x1A] + movs r0, 0xF0 + ands r0, r4 + lsls r0, 24 + asrs r0, 24 + movs r1, 0xF + ands r1, r4 + ldrb r2, [r2, 0x1] + bl sub_8027BFC + lsls r0, 24 + cmp r0, 0 + bne _080280BC + ldr r0, [r5] + adds r0, 0x6 + str r0, [r5] +_080280BC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080280C4: .4byte gUnknown_2023D74 +_080280C8: .4byte gUnknown_2023FC4 + thumb_func_end sub_8028080 + + thumb_func_start sub_80280CC +sub_80280CC: @ 80280CC + push {r4-r7,lr} + movs r2, 0 + ldr r0, _08028114 @ =gUnknown_2023BCC + ldrb r1, [r0] + ldr r0, _08028118 @ =gUnknown_2023D74 + mov r12, r0 + cmp r2, r1 + bge _08028104 + ldr r0, _0802811C @ =gUnknown_2023BE4 + movs r4, 0x6 + adds r5, r1, 0 + movs r7, 0x58 + adds r6, r0, 0 + adds r6, 0x18 +_080280E8: + adds r3, r2, 0x1 + movs r1, 0x7 + adds r0, r2, 0 + muls r0, r7 + adds r0, r6 + adds r0, 0x7 +_080280F4: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080280F4 + adds r2, r3, 0 + cmp r2, r5 + blt _080280E8 +_08028104: + mov r1, r12 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028114: .4byte gUnknown_2023BCC +_08028118: .4byte gUnknown_2023D74 +_0802811C: .4byte gUnknown_2023BE4 + thumb_func_end sub_80280CC + + thumb_func_start sub_8028120 +sub_8028120: @ 8028120 + push {r4,r5,lr} + ldr r4, _08028178 @ =gUnknown_2023BE4 + ldr r3, _0802817C @ =gUnknown_2023D6B + ldrb r0, [r3] + movs r5, 0x58 + adds r2, r0, 0 + muls r2, r5 + adds r4, 0x50 + adds r2, r4 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 5 + orrs r0, r1 + str r0, [r2] + ldr r1, _08028180 @ =gUnknown_2023DB8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _08028184 @ =gUnknown_2023D4A + ldrh r1, [r1] + movs r2, 0 + strh r1, [r0] + ldr r1, _08028188 @ =gUnknown_2023D58 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + str r2, [r0] + ldrb r0, [r3] + adds r1, r0, 0 + muls r1, r5 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 2 + orrs r0, r2 + str r0, [r1] + ldr r1, _0802818C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08028178: .4byte gUnknown_2023BE4 +_0802817C: .4byte gUnknown_2023D6B +_08028180: .4byte gUnknown_2023DB8 +_08028184: .4byte gUnknown_2023D4A +_08028188: .4byte gUnknown_2023D58 +_0802818C: .4byte gUnknown_2023D74 + thumb_func_end sub_8028120 + + thumb_func_start sub_8028190 +sub_8028190: @ 8028190 + push {lr} + ldr r1, _080281C0 @ =gUnknown_2023BE4 + ldr r0, _080281C4 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 4 + ands r0, r1 + cmp r0, 0 + bne _080281B2 + ldr r1, _080281C8 @ =gUnknown_2023E82 + movs r0, 0x75 + strb r0, [r1, 0x3] +_080281B2: + ldr r1, _080281CC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080281C0: .4byte gUnknown_2023BE4 +_080281C4: .4byte gUnknown_2023D6B +_080281C8: .4byte gUnknown_2023E82 +_080281CC: .4byte gUnknown_2023D74 + thumb_func_end sub_8028190 + + thumb_func_start sub_80281D0 +sub_80281D0: @ 80281D0 + push {r4,r5,lr} + ldr r0, _080281E4 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + cmp r1, 0 + beq _080281EC + ldr r0, _080281E8 @ =gUnknown_2023D72 + strb r1, [r0] + b _08028206 + .align 2, 0 +_080281E4: .4byte gUnknown_2023D74 +_080281E8: .4byte gUnknown_2023D72 +_080281EC: + ldr r4, _08028214 @ =gUnknown_2023D72 + bl sub_8044EC8 + movs r5, 0x3 + ands r0, r5 + strb r0, [r4] + cmp r0, 0x1 + bls _08028202 + bl sub_8044EC8 + ands r0, r5 +_08028202: + adds r0, 0x2 + strb r0, [r4] +_08028206: + ldr r1, _08028218 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08028214: .4byte gUnknown_2023D72 +_08028218: .4byte gUnknown_2023D74 + thumb_func_end sub_80281D0 + + thumb_func_start sub_802821C +sub_802821C: @ 802821C + ldr r1, _0802823C @ =gUnknown_2023FC4 + movs r2, 0 + movs r0, 0xFD + strb r0, [r1, 0x8] + movs r0, 0x1 + strb r0, [r1, 0x9] + strb r0, [r1, 0xA] + strb r0, [r1, 0xB] + strb r2, [r1, 0xC] + movs r0, 0xFF + strb r0, [r1, 0xD] + ldr r1, _08028240 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802823C: .4byte gUnknown_2023FC4 +_08028240: .4byte gUnknown_2023D74 + thumb_func_end sub_802821C + + thumb_func_start sub_8028244 +sub_8028244: @ 8028244 + push {r4-r7,lr} + ldr r6, _08028278 @ =gUnknown_2023BE4 + ldr r7, _0802827C @ =gUnknown_2023D6B + ldrb r0, [r7] + movs r5, 0x58 + adds r1, r0, 0 + muls r1, r5 + adds r1, r6 + adds r1, 0x2A + ldr r4, _08028280 @ =gUnknown_2023D6C + ldrb r3, [r4] + adds r0, r3, 0 + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bcc _0802828C + ldr r0, _08028284 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, r3, r1 + adds r1, 0x58 + ldr r2, _08028288 @ =gUnknown_2023BCE + lsls r0, r3, 1 + b _080282E8 + .align 2, 0 +_08028278: .4byte gUnknown_2023BE4 +_0802827C: .4byte gUnknown_2023D6B +_08028280: .4byte gUnknown_2023D6C +_08028284: .4byte gUnknown_2023FE8 +_08028288: .4byte gUnknown_2023BCE +_0802828C: + bl sub_8044EC8 + movs r3, 0xFF + ands r3, r0 + ldrb r0, [r7] + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r2, [r0] + ldrb r4, [r4] + adds r0, r4, 0 + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r1, [r0] + adds r2, r1 + adds r0, r3, 0 + muls r0, r2 + asrs r0, 8 + adds r0, 0x1 + lsrs r1, 2 + cmp r0, r1 + bhi _080282DC + ldr r3, _080282D8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + movs r0, 0 + b _080282F6 + .align 2, 0 +_080282D8: .4byte gUnknown_2023D74 +_080282DC: + ldr r0, _080282FC @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, r4, r1 + adds r1, 0x58 + ldr r2, _08028300 @ =gUnknown_2023BCE + lsls r0, r4, 1 +_080282E8: + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r1, _08028304 @ =gUnknown_2023D74 + ldr r0, _08028308 @ =gUnknown_81D8C10 + str r0, [r1] + movs r0, 0x1 +_080282F6: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080282FC: .4byte gUnknown_2023FE8 +_08028300: .4byte gUnknown_2023BCE +_08028304: .4byte gUnknown_2023D74 +_08028308: .4byte gUnknown_81D8C10 + thumb_func_end sub_8028244 + + thumb_func_start sub_802830C +sub_802830C: @ 802830C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _080283A4 @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08028320 + b _080285F4 +_08028320: + ldr r5, _080283A8 @ =gUnknown_2023D6C + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + ldr r1, _080283AC @ =gUnknown_202402C + mov r8, r1 + cmp r0, 0 + bne _08028336 + ldr r0, _080283B0 @ =gUnknown_2024284 + mov r8, r0 +_08028336: + ldr r0, [r4] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080283B4 + movs r7, 0 + movs r6, 0 + ldrb r0, [r5] + bl sub_8043658 + lsls r0, 24 + lsrs r0, 24 + bl sub_8043620 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _0802835C + movs r6, 0x3 +_0802835C: + adds r5, r6, 0 + adds r0, r5, 0x3 + cmp r5, r0 + bge _080283F4 +_08028364: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08028396 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _08028396 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08028396 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_08028396: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0x3 + cmp r5, r0 + blt _08028364 + b _080283F4 + .align 2, 0 +_080283A4: .4byte gUnknown_2022B4C +_080283A8: .4byte gUnknown_2023D6C +_080283AC: .4byte gUnknown_202402C +_080283B0: .4byte gUnknown_2024284 +_080283B4: + movs r7, 0 + movs r5, 0 +_080283B8: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _080283EA + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _080283EA + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _080283EA + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_080283EA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080283B8 +_080283F4: + cmp r7, 0x1 + bhi _08028404 + ldr r0, _08028438 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x41 + ands r0, r1 + cmp r0, 0x1 + bne _0802841C +_08028404: + cmp r7, 0x2 + bhi _08028440 + ldr r0, _08028438 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08028440 + movs r0, 0x40 + ands r1, r0 + cmp r1, 0 + bne _08028440 +_0802841C: + ldr r3, _0802843C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _080285F8 + .align 2, 0 +_08028438: .4byte gUnknown_2022B4C +_0802843C: .4byte gUnknown_2023D74 +_08028440: + bl sub_8028244 + lsls r0, 24 + cmp r0, 0 + bne _0802844C + b _080285F8 +_0802844C: + ldr r0, _0802848C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080284F0 +_08028458: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08028490 @ =gUnknown_2023D6C + ldrb r0, [r0] + bl sub_8043658 + lsls r0, 24 + lsrs r0, 24 + bl sub_8043620 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _08028494 + adds r0, r6, 0x3 + lsls r0, 24 + lsrs r5, r0, 24 + b _08028496 + .align 2, 0 +_0802848C: .4byte gUnknown_2022B4C +_08028490: .4byte gUnknown_2023D6C +_08028494: + adds r5, r6, 0 +_08028496: + ldr r4, _080284E8 @ =gUnknown_2023BCE + ldr r0, _080284EC @ =gUnknown_2023D6C + ldrb r2, [r0] + lsls r1, r2, 1 + adds r1, r4 + lsls r0, r5, 16 + lsrs r3, r0, 16 + ldrh r1, [r1] + cmp r3, r1 + beq _08028458 + movs r0, 0x2 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r4 + ldrh r0, [r0] + cmp r3, r0 + beq _08028458 + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08028458 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _08028458 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08028458 + b _080285AE + .align 2, 0 +_080284E8: .4byte gUnknown_2023BCE +_080284EC: .4byte gUnknown_2023D6C +_080284F0: + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08028560 + ldr r6, _08028558 @ =gUnknown_2023BCE +_080284FA: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0802855C @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r6 + adds r2, r5, 0 + ldrh r0, [r0] + cmp r2, r0 + beq _080284FA + movs r0, 0x2 + eors r1, r0 + lsls r0, r1, 1 + adds r0, r6 + ldrh r0, [r0] + cmp r2, r0 + beq _080284FA + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _080284FA + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _080284FA + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _080284FA + b _080285AE + .align 2, 0 +_08028558: .4byte gUnknown_2023BCE +_0802855C: .4byte gUnknown_2023D6C +_08028560: + ldr r6, _080285E8 @ =gUnknown_2023BCE +_08028562: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080285EC @ =gUnknown_2023D6C + ldrb r0, [r0] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + cmp r5, r0 + beq _08028562 + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08028562 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _08028562 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08028562 +_080285AE: + ldr r4, _080285EC @ =gUnknown_2023D6C + ldrb r0, [r4] + ldr r1, _080285F0 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + adds r0, 0x5C + strb r5, [r0] + bl sub_811FA20 + lsls r0, 24 + cmp r0, 0 + bne _080285CC + ldrb r0, [r4] + bl sub_8013F6C +_080285CC: + ldrb r0, [r4] + adds r1, r5, 0 + movs r2, 0 + bl sub_8127EC4 + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_8127EC4 + b _080285F8 + .align 2, 0 +_080285E8: .4byte gUnknown_2023BCE +_080285EC: .4byte gUnknown_2023D6C +_080285F0: .4byte gUnknown_2023FE8 +_080285F4: + bl sub_8028244 +_080285F8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802830C + + thumb_func_start sub_8028604 +sub_8028604: @ 8028604 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + ldr r2, _08028698 @ =gUnknown_2023BE4 + ldr r3, _0802869C @ =gUnknown_2023D6B + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r1, r2, 0 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + mov r8, r2 + cmp r0, 0 + beq _08028646 + movs r5, 0x58 + adds r2, r1, 0 +_0802862C: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bhi _08028646 + lsls r1, r6, 1 + ldrb r0, [r3] + muls r0, r5 + adds r1, r0 + adds r1, r2 + ldrh r0, [r1] + cmp r0, 0 + bne _0802862C +_08028646: + movs r3, 0 + cmp r3, r6 + bcs _080286C8 + ldr r0, _080286A0 @ =gUnknown_8250C04 + mov r10, r0 + ldr r5, _08028698 @ =gUnknown_2023BE4 + mov r12, r5 + ldr r7, _0802869C @ =gUnknown_2023D6B + ldrb r0, [r7] + movs r4, 0x58 + adds r5, r0, 0 + muls r5, r4 + movs r0, 0xC + add r0, r12 + mov r9, r0 +_08028664: + lsls r0, r3, 1 + adds r0, r5 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r2, [r0, 0x2] + cmp r2, 0x9 + bne _080286A6 + mov r0, r8 + adds r1, r5, r0 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x7 + beq _08028692 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x7 + bne _080286A4 +_08028692: + movs r2, 0x7 + b _080286A6 + .align 2, 0 +_08028698: .4byte gUnknown_2023BE4 +_0802869C: .4byte gUnknown_2023D6B +_080286A0: .4byte gUnknown_8250C04 +_080286A4: + movs r2, 0 +_080286A6: + ldrb r0, [r7] + muls r0, r4 + add r0, r12 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r2, r1 + beq _080286BE + adds r0, 0x22 + ldrb r0, [r0] + cmp r2, r0 + bne _080286C8 +_080286BE: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r6 + bcc _08028664 +_080286C8: + cmp r3, r6 + bne _080286EC + ldr r3, _080286E8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _08028790 + .align 2, 0 +_080286E8: .4byte gUnknown_2023D74 +_080286EC: + movs r7, 0x3 + ldr r5, _08028744 @ =gUnknown_8250C04 + mov r9, r5 +_080286F2: + bl sub_8044EC8 + adds r3, r0, 0 + ands r3, r7 + cmp r3, r6 + bcs _080286F2 + ldr r4, _08028748 @ =gUnknown_2023BE4 + lsls r1, r3, 1 + ldr r3, _0802874C @ =gUnknown_2023D6B + ldrb r2, [r3] + movs r0, 0x58 + adds r5, r2, 0 + muls r5, r0 + adds r1, r5 + adds r0, r4, 0 + adds r0, 0xC + adds r1, r0 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r9 + ldrb r2, [r0, 0x2] + mov r8, r4 + adds r4, r3, 0 + cmp r2, 0x9 + bne _08028752 + mov r0, r8 + adds r2, r5, r0 + adds r0, r2, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x7 + beq _08028740 + adds r0, r2, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x7 + bne _08028750 +_08028740: + movs r2, 0x7 + b _08028752 + .align 2, 0 +_08028744: .4byte gUnknown_8250C04 +_08028748: .4byte gUnknown_2023BE4 +_0802874C: .4byte gUnknown_2023D6B +_08028750: + movs r2, 0 +_08028752: + ldrb r0, [r4] + movs r3, 0x58 + muls r0, r3 + add r0, r8 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r5, [r1] + cmp r2, r5 + beq _080286F2 + adds r0, 0x22 + ldrb r0, [r0] + cmp r2, r0 + beq _080286F2 + strb r2, [r1] + ldrb r0, [r4] + muls r0, r3 + add r0, r8 + adds r0, 0x22 + strb r2, [r0] + ldr r1, _080287A0 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r1, _080287A4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08028790: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080287A0: .4byte gUnknown_2022AB8 +_080287A4: .4byte gUnknown_2023D74 + thumb_func_end sub_8028604 + + thumb_func_start sub_80287A8 +sub_80287A8: @ 80287A8 + push {r4,r5,lr} + ldr r0, _0802880C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r5, 0x2 + ands r0, r5 + cmp r0, 0 + bne _08028828 + ldr r1, _08028810 @ =gUnknown_2023E7E + ldrh r0, [r1] + cmp r0, 0 + beq _08028828 + adds r1, r0, 0 + ldr r0, _08028814 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x4A + ldrb r0, [r0] + adds r4, r1, 0 + muls r4, r0 + ldr r0, _08028818 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + adds r1, r4, 0 + bl sub_809FDA0 + ldr r1, _0802881C @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + strb r5, [r1, 0x2] + movs r0, 0x5 + strb r0, [r1, 0x3] + strb r4, [r1, 0x4] + movs r0, 0xFF + lsls r0, 8 + ands r4, r0 + lsrs r4, 8 + strb r4, [r1, 0x5] + movs r0, 0xFF + strb r0, [r1, 0x6] + ldr r4, _08028820 @ =gUnknown_2023D74 + ldr r0, [r4] + adds r0, 0x1 + bl sub_8017520 + ldr r0, _08028824 @ =gUnknown_81D911D + str r0, [r4] + b _08028830 + .align 2, 0 +_0802880C: .4byte gUnknown_2022B4C +_08028810: .4byte gUnknown_2023E7E +_08028814: .4byte gUnknown_2023FE8 +_08028818: .4byte gUnknown_3005008 +_0802881C: .4byte gUnknown_2022AB8 +_08028820: .4byte gUnknown_2023D74 +_08028824: .4byte gUnknown_81D911D +_08028828: + ldr r1, _08028838 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08028830: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08028838: .4byte gUnknown_2023D74 + thumb_func_end sub_80287A8 + + thumb_func_start sub_802883C +sub_802883C: @ 802883C + push {r4-r6,lr} + ldr r5, _0802886C @ =gUnknown_2023D6B + ldrb r0, [r5] + bl sub_80751D8 + ldr r4, _08028870 @ =gUnknown_2023DDE + movs r6, 0x1 + adds r1, r6, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r1, [r1] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802887C + ldr r2, _08028874 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08028878 @ =gUnknown_2023E82 + movs r0, 0 + b _080288F0 + .align 2, 0 +_0802886C: .4byte gUnknown_2023D6B +_08028870: .4byte gUnknown_2023DDE +_08028874: .4byte gUnknown_2023DCC +_08028878: .4byte gUnknown_2023E82 +_0802887C: + ldrb r0, [r5] + bl sub_80751D8 + adds r1, r6, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r5] + bl sub_80751D8 + ldr r4, _080288E0 @ =gUnknown_2023DE4 + adds r1, r6, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x5 + strb r1, [r0, 0x2] + ldrb r0, [r5] + bl sub_80751D8 + adds r1, r6, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r5] + strb r1, [r0, 0x3] + ldr r0, _080288E4 @ =gUnknown_2022B4C + ldr r0, [r0] + ands r0, r6 + cmp r0, 0 + beq _080288EC + movs r0, 0x1 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080288EC + ldr r1, _080288E8 @ =gUnknown_2023E82 + movs r0, 0x4 + b _080288F0 + .align 2, 0 +_080288E0: .4byte gUnknown_2023DE4 +_080288E4: .4byte gUnknown_2022B4C +_080288E8: .4byte gUnknown_2023E82 +_080288EC: + ldr r1, _08028900 @ =gUnknown_2023E82 + movs r0, 0x3 +_080288F0: + strb r0, [r1, 0x5] + ldr r1, _08028904 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08028900: .4byte gUnknown_2023E82 +_08028904: .4byte gUnknown_2023D74 + thumb_func_end sub_802883C + + thumb_func_start sub_8028908 +sub_8028908: @ 8028908 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r7, _08028934 @ =gUnknown_2023BE4 + ldr r6, _08028938 @ =gUnknown_2023D6C + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08028940 + ldr r1, _0802893C @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _0802895A + .align 2, 0 +_08028934: .4byte gUnknown_2023BE4 +_08028938: .4byte gUnknown_2023D6C +_0802893C: .4byte gUnknown_2023F54 +_08028940: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r6, r0, 24 +_0802895A: + ldr r1, _080289D4 @ =gUnknown_2023D6F + ldr r5, _080289D8 @ =gUnknown_2023D6C + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _08028998 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _08028998 + ldrb r0, [r5] + movs r1, 0x27 + bl sub_80C7208 + ldr r2, _080289DC @ =gUnknown_2023ECC + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_08028998: + ldr r1, _080289E0 @ =gUnknown_2023BE4 + ldr r2, _080289D8 @ =gUnknown_2023D6C + ldrb r3, [r2] + movs r6, 0x58 + adds r0, r3, 0 + muls r0, r6 + adds r5, r0, r1 + adds r0, r5, 0 + adds r0, 0x20 + ldrb r4, [r0] + mov r8, r1 + mov r9, r2 + cmp r4, 0x5 + bne _080289F4 + ldr r2, _080289E4 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080289E8 @ =gUnknown_2023D6A + strb r4, [r0] + ldr r1, _080289EC @ =gUnknown_2023D74 + ldr r0, _080289F0 @ =gUnknown_81D93A1 + str r0, [r1] + mov r1, r9 + ldrb r0, [r1] + movs r1, 0x5 + bl sub_80C71D0 + b _08028C48 + .align 2, 0 +_080289D4: .4byte gUnknown_2023D6F +_080289D8: .4byte gUnknown_2023D6C +_080289DC: .4byte gUnknown_2023ECC +_080289E0: .4byte gUnknown_2023BE4 +_080289E4: .4byte gUnknown_2023DCC +_080289E8: .4byte gUnknown_2023D6A +_080289EC: .4byte gUnknown_2023D74 +_080289F0: .4byte gUnknown_81D93A1 +_080289F4: + ldr r1, _08028A68 @ =gUnknown_2023DFC + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x18 + ands r0, r1 + cmp r0, 0 + bne _08028A78 + ldr r1, _08028A6C @ =gUnknown_8250C04 + ldr r0, _08028A70 @ =gUnknown_2023D4A + ldrh r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldr r7, _08028A74 @ =gUnknown_2023D6B + ldrb r0, [r7] + muls r0, r6 + add r0, r8 + adds r0, 0x2A + ldrb r0, [r0] + adds r1, r5, 0 + adds r1, 0x2A + ldrb r1, [r1] + subs r0, r1 + ldrb r2, [r2, 0x3] + adds r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x1 + cmp r0, r4 + blt _08028A48 + b _08028BE0 +_08028A48: + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + add r1, r8 + adds r1, 0x2A + mov r2, r9 + ldrb r0, [r2] + muls r0, r6 + add r0, r8 + adds r0, 0x2A + ldrb r1, [r1] + movs r4, 0x1 + ldrb r0, [r0] + cmp r1, r0 + bcs _08028B0E + b _08028BE0 + .align 2, 0 +_08028A68: .4byte gUnknown_2023DFC +_08028A6C: .4byte gUnknown_8250C04 +_08028A70: .4byte gUnknown_2023D4A +_08028A74: .4byte gUnknown_2023D6B +_08028A78: + ldr r1, _08028B44 @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldr r1, _08028B48 @ =gUnknown_2023D6B + ldrb r0, [r0, 0x15] + adds r7, r1, 0 + ldrb r3, [r7] + cmp r0, r3 + bne _08028AA2 + ldrb r0, [r7] + muls r0, r6 + add r0, r8 + adds r0, 0x2A + adds r1, r5, 0 + adds r1, 0x2A + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcs _08028B1A +_08028AA2: + ldr r1, _08028B4C @ =gUnknown_8250C04 + ldr r0, _08028B50 @ =gUnknown_2023D4A + ldrh r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldr r6, _08028B54 @ =gUnknown_2023BE4 + ldrb r0, [r7] + movs r5, 0x58 + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, _08028B58 @ =gUnknown_2023D6C + mov r8, r0 + ldrb r0, [r0] + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r0, [r0] + subs r1, r0 + ldrb r2, [r2, 0x3] + adds r1, r2 + lsls r1, 16 + lsrs r4, r1, 16 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x1 + cmp r0, r4 + bge _08028B0C + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r5 + adds r1, r6 + adds r1, 0x2A + mov r2, r8 + ldrb r0, [r2] + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r1, [r1] + movs r4, 0x1 + ldrb r0, [r0] + cmp r1, r0 + bcs _08028B0E +_08028B0C: + movs r4, 0 +_08028B0E: + ldr r3, _08028B54 @ =gUnknown_2023BE4 + mov r8, r3 + ldr r0, _08028B58 @ =gUnknown_2023D6C + mov r9, r0 + cmp r4, 0 + beq _08028BE0 +_08028B1A: + ldr r0, _08028B5C @ =gUnknown_2023E8C + mov r1, r9 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + bge _08028B68 + ldr r1, _08028B60 @ =gUnknown_2023D50 + movs r0, 0x58 + muls r0, r2 + add r0, r8 + ldrh r0, [r0, 0x28] + subs r0, 0x1 + str r0, [r1] + ldr r2, _08028B64 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x40 + b _08028BC6 + .align 2, 0 +_08028B44: .4byte gUnknown_2023E0C +_08028B48: .4byte gUnknown_2023D6B +_08028B4C: .4byte gUnknown_8250C04 +_08028B50: .4byte gUnknown_2023D4A +_08028B54: .4byte gUnknown_2023BE4 +_08028B58: .4byte gUnknown_2023D6C +_08028B5C: .4byte gUnknown_2023E8C +_08028B60: .4byte gUnknown_2023D50 +_08028B64: .4byte gUnknown_2023DCC +_08028B68: + ldr r0, _08028BA4 @ =gUnknown_2023ECC + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _08028BB4 + ldr r1, _08028BA8 @ =gUnknown_2023D50 + movs r3, 0x58 + adds r0, r2, 0 + muls r0, r3 + add r0, r8 + ldrh r0, [r0, 0x28] + subs r0, 0x1 + str r0, [r1] + ldr r2, _08028BAC @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08028BB0 @ =gUnknown_2023D68 + mov r2, r9 + ldrb r0, [r2] + muls r0, r3 + add r0, r8 + ldrh r0, [r0, 0x2E] + strh r0, [r1] + b _08028BCA + .align 2, 0 +_08028BA4: .4byte gUnknown_2023ECC +_08028BA8: .4byte gUnknown_2023D50 +_08028BAC: .4byte gUnknown_2023DCC +_08028BB0: .4byte gUnknown_2023D68 +_08028BB4: + ldr r1, _08028BD4 @ =gUnknown_2023D50 + movs r0, 0x58 + muls r0, r2 + add r0, r8 + ldrh r0, [r0, 0x28] + str r0, [r1] + ldr r2, _08028BD8 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x10 +_08028BC6: + orrs r0, r1 + strb r0, [r2] +_08028BCA: + ldr r1, _08028BDC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08028C48 + .align 2, 0 +_08028BD4: .4byte gUnknown_2023D50 +_08028BD8: .4byte gUnknown_2023DCC +_08028BDC: .4byte gUnknown_2023D74 +_08028BE0: + ldr r2, _08028C14 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r3, _08028C18 @ =gUnknown_2023BE4 + ldr r0, _08028C1C @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r2, 0x58 + adds r1, r0, 0 + muls r1, r2 + adds r1, r3 + adds r1, 0x2A + ldr r0, _08028C20 @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bcc _08028C28 + ldr r1, _08028C24 @ =gUnknown_2023E82 + movs r0, 0 + b _08028C2C + .align 2, 0 +_08028C14: .4byte gUnknown_2023DCC +_08028C18: .4byte gUnknown_2023BE4 +_08028C1C: .4byte gUnknown_2023D6B +_08028C20: .4byte gUnknown_2023D6C +_08028C24: .4byte gUnknown_2023E82 +_08028C28: + ldr r1, _08028C54 @ =gUnknown_2023E82 + movs r0, 0x1 +_08028C2C: + strb r0, [r1, 0x5] + ldr r3, _08028C58 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08028C48: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028C54: .4byte gUnknown_2023E82 +_08028C58: .4byte gUnknown_2023D74 + thumb_func_end sub_8028908 + + thumb_func_start sub_8028C5C +sub_8028C5C: @ 8028C5C + push {lr} + ldr r3, _08028C88 @ =gUnknown_2023D50 + ldr r2, _08028C8C @ =gUnknown_2023BE4 + ldr r0, _08028C90 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + lsrs r0, 1 + str r0, [r3] + cmp r0, 0 + bne _08028C7A + movs r0, 0x1 + str r0, [r3] +_08028C7A: + ldr r1, _08028C94 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08028C88: .4byte gUnknown_2023D50 +_08028C8C: .4byte gUnknown_2023BE4 +_08028C90: .4byte gUnknown_2023D6C +_08028C94: .4byte gUnknown_2023D74 + thumb_func_end sub_8028C5C + + thumb_func_start sub_8028C98 +sub_8028C98: @ 8028C98 + push {lr} + ldr r2, _08028CB8 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _08028CC4 + ldr r2, _08028CBC @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08028CC0 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _08028CD6 + .align 2, 0 +_08028CB8: .4byte gUnknown_2023F1C +_08028CBC: .4byte gUnknown_2023DCC +_08028CC0: .4byte gUnknown_2023E82 +_08028CC4: + movs r0, 0x8 + strh r0, [r2] + ldr r1, _08028CE4 @ =gUnknown_2023E82 + movs r0, 0x3 + strb r0, [r1, 0x5] + ldr r0, _08028CE8 @ =gUnknown_2023F20 + adds r0, 0x28 + movs r1, 0x5 + strb r1, [r0] +_08028CD6: + ldr r1, _08028CEC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08028CE4: .4byte gUnknown_2023E82 +_08028CE8: .4byte gUnknown_2023F20 +_08028CEC: .4byte gUnknown_2023D74 + thumb_func_end sub_8028C98 + + thumb_func_start sub_8028CF0 +sub_8028CF0: @ 8028CF0 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _08028DBC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xA0 + lsls r1, 8 + ands r0, r1 + movs r1, 0x80 + lsls r1, 8 + cmp r0, r1 + bne _08028D18 + ldr r0, _08028DC0 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08028D18 + b _08028E64 +_08028D18: + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08028D32 + b _08028E48 +_08028D32: + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08028D48 + b _08028E48 +_08028D48: + ldr r2, _08028DC4 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x18 + ands r0, r1 + ldr r5, _08028DC0 @ =gUnknown_2023D6B + adds r4, r2, 0 + cmp r0, 0 + beq _08028DDA + ldr r0, _08028DC8 @ =gUnknown_2023BE4 + ldrb r2, [r5] + movs r1, 0x58 + muls r1, r2 + adds r3, r1, r0 + adds r0, r3, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x5 + beq _08028DD4 + cmp r0, 0x8 + beq _08028DD4 + cmp r0, 0x4 + beq _08028DD4 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x5 + beq _08028DD4 + cmp r0, 0x8 + beq _08028DD4 + cmp r0, 0x4 + beq _08028DD4 + adds r0, r3, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x8 + beq _08028DD4 + ldr r0, _08028DCC @ =gUnknown_2023DFC + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08028DD4 + movs r0, 0x80 + lsls r0, 11 + ands r1, r0 + cmp r1, 0 + bne _08028DD4 + ldr r1, _08028DD0 @ =gUnknown_2023D50 + ldrh r0, [r3, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _08028DDA + movs r0, 0x1 + b _08028DD8 + .align 2, 0 +_08028DBC: .4byte gUnknown_2022B4C +_08028DC0: .4byte gUnknown_2023D6B +_08028DC4: .4byte gUnknown_2023F1C +_08028DC8: .4byte gUnknown_2023BE4 +_08028DCC: .4byte gUnknown_2023DFC +_08028DD0: .4byte gUnknown_2023D50 +_08028DD4: + ldr r1, _08028E30 @ =gUnknown_2023D50 + movs r0, 0 +_08028DD8: + str r0, [r1] +_08028DDA: + ldrh r1, [r4] + movs r4, 0x80 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08028E50 + ldr r1, _08028E34 @ =gUnknown_2023BE4 + ldrb r3, [r5] + movs r0, 0x58 + muls r0, r3 + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xF + beq _08028E3C + adds r0, r2, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xF + beq _08028E3C + ldr r0, _08028E38 @ =gUnknown_2023DFC + lsls r1, r3, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r1, 0 + ands r0, r4 + cmp r0, 0 + bne _08028E3C + movs r0, 0x80 + lsls r0, 11 + ands r1, r0 + cmp r1, 0 + bne _08028E3C + ldr r1, _08028E30 @ =gUnknown_2023D50 + ldrh r0, [r2, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _08028E50 + movs r0, 0x1 + str r0, [r1] + b _08028E50 + .align 2, 0 +_08028E30: .4byte gUnknown_2023D50 +_08028E34: .4byte gUnknown_2023BE4 +_08028E38: .4byte gUnknown_2023DFC +_08028E3C: + ldr r1, _08028E44 @ =gUnknown_2023D50 + movs r0, 0 + str r0, [r1] + b _08028E50 + .align 2, 0 +_08028E44: .4byte gUnknown_2023D50 +_08028E48: + ldr r1, _08028E7C @ =gUnknown_2023D50 + movs r0, 0 + str r0, [r1] + ldr r5, _08028E80 @ =gUnknown_2023D6B +_08028E50: + ldr r0, _08028E84 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08028E88 @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08028E6A +_08028E64: + ldr r1, _08028E7C @ =gUnknown_2023D50 + movs r0, 0 + str r0, [r1] +_08028E6A: + ldr r1, _08028E8C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08028E7C: .4byte gUnknown_2023D50 +_08028E80: .4byte gUnknown_2023D6B +_08028E84: .4byte gUnknown_2023D70 +_08028E88: .4byte gUnknown_825E45C +_08028E8C: .4byte gUnknown_2023D74 + thumb_func_end sub_8028CF0 + + thumb_func_start sub_8028E90 +sub_8028E90: @ 8028E90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08028EBC @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08028EC8 + ldr r1, _08028EC0 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08028EC4 @ =gUnknown_2024284 + b _08028ED8 + .align 2, 0 +_08028EBC: .4byte gUnknown_2023D6B +_08028EC0: .4byte gUnknown_2023BCE +_08028EC4: .4byte gUnknown_2024284 +_08028EC8: + ldr r1, _08028EFC @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08028F00 @ =gUnknown_202402C +_08028ED8: + adds r5, r1, r0 + ldr r4, _08028F04 @ =gUnknown_2023D6C + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08028F0C + ldr r1, _08028EFC @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08028F08 @ =gUnknown_2024284 + b _08028F1C + .align 2, 0 +_08028EFC: .4byte gUnknown_2023BCE +_08028F00: .4byte gUnknown_202402C +_08028F04: .4byte gUnknown_2023D6C +_08028F08: .4byte gUnknown_2024284 +_08028F0C: + ldr r1, _08028F78 @ =gUnknown_2023BCE + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08028F7C @ =gUnknown_202402C +_08028F1C: + adds r4, r1, r0 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + adds r0, r5, 0 + movs r1, 0 + bl sub_803FBE8 + mov r9, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r7, r0, 0 + ldr r5, _08028F80 @ =gUnknown_2023D6C + ldrb r0, [r5] + movs r6, 0x58 + muls r0, r6 + ldr r1, _08028F84 @ =gUnknown_2023BE4 + adds r0, r1 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0xC + bne _08028F94 + ldr r1, _08028F88 @ =gUnknown_2023D74 + ldr r0, _08028F8C @ =gUnknown_81D9444 + str r0, [r1] + ldr r0, _08028F90 @ =gUnknown_2023D6A + strb r2, [r0] + ldrb r0, [r5] + movs r1, 0xC + bl sub_80C71D0 + b _0802902C + .align 2, 0 +_08028F78: .4byte gUnknown_2023BCE +_08028F7C: .4byte gUnknown_202402C +_08028F80: .4byte gUnknown_2023D6C +_08028F84: .4byte gUnknown_2023BE4 +_08028F88: .4byte gUnknown_2023D74 +_08028F8C: .4byte gUnknown_81D9444 +_08028F90: .4byte gUnknown_2023D6A +_08028F94: + mov r0, r10 + mov r1, r9 + bl sub_803F78C + adds r4, r0, 0 + mov r0, r8 + adds r1, r7, 0 + bl sub_803F78C + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _08028FE4 + ldrb r0, [r5] + muls r0, r6 + ldr r4, _08029000 @ =gUnknown_2023BE4 + adds r4, 0x50 + adds r0, r4 + ldr r0, [r0] + movs r1, 0xF0 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + bne _08028FE4 + mov r0, r10 + mov r1, r9 + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08028FE4 + mov r0, r8 + adds r1, r7, 0 + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08029008 +_08028FE4: + ldr r3, _08029004 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802902C + .align 2, 0 +_08029000: .4byte gUnknown_2023BE4 +_08029004: .4byte gUnknown_2023D74 +_08029008: + ldrb r0, [r5] + adds r2, r0, 0 + muls r2, r6 + adds r2, r4 + ldr r1, _0802903C @ =gUnknown_825E45C + ldr r0, _08029040 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 16 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r1, _08029044 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802902C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802903C: .4byte gUnknown_825E45C +_08029040: .4byte gUnknown_2023D6B +_08029044: .4byte gUnknown_2023D74 + thumb_func_end sub_8028E90 + + thumb_func_start sub_8029048 +sub_8029048: @ 8029048 + push {r4-r7,lr} + ldr r0, _080290B8 @ =gUnknown_2023BC8 + ldr r1, [r0] + cmp r1, 0 + beq _08029054 + b _080291C0 +_08029054: + ldr r5, _080290BC @ =gUnknown_2023D74 + ldr r2, [r5] + ldrb r0, [r2, 0x1] + cmp r0, 0xD + bne _080290D4 + ldr r2, _080290C0 @ =gUnknown_2023BC4 + strb r1, [r2] + ldr r0, _080290C4 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bcs _08029164 + ldr r7, _080290C8 @ =gUnknown_825E45C + adds r4, r2, 0 + ldr r5, _080290CC @ =gUnknown_2023BE4 + adds r6, r5, 0 + adds r6, 0x50 +_08029074: + ldr r0, _080290D0 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080290A2 + movs r0, 0x58 + muls r2, r0 + adds r0, r5, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r2, r6 + ldr r2, [r2] + movs r0, 0 + bl sub_800E658 + ldrb r0, [r4] + bl sub_8017248 +_080290A2: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _080290C4 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08029074 + b _08029164 + .align 2, 0 +_080290B8: .4byte gUnknown_2023BC8 +_080290BC: .4byte gUnknown_2023D74 +_080290C0: .4byte gUnknown_2023BC4 +_080290C4: .4byte gUnknown_2023BCC +_080290C8: .4byte gUnknown_825E45C +_080290CC: .4byte gUnknown_2023BE4 +_080290D0: .4byte gUnknown_2023D70 +_080290D4: + cmp r0, 0x4 + bne _0802918C + ldr r4, _08029170 @ =gUnknown_2023BC4 + ldr r5, _08029174 @ =gUnknown_2023D6B + ldrb r0, [r5] + strb r0, [r4] + ldr r6, _08029178 @ =gUnknown_2023D70 + ldrb r1, [r6] + ldr r7, _0802917C @ =gUnknown_825E45C + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08029114 + ldr r3, _08029180 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r3, 0x50 + adds r2, r3 + ldr r2, [r2] + movs r0, 0 + bl sub_800E658 + ldrb r0, [r4] + bl sub_8017248 +_08029114: + ldr r0, _08029184 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08029164 + ldrb r0, [r5] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + strb r0, [r4] + ldrb r1, [r6] + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08029164 + ldr r3, _08029180 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r3, 0x50 + adds r2, r3 + ldr r2, [r2] + movs r0, 0 + bl sub_800E658 + ldrb r0, [r4] + bl sub_8017248 +_08029164: + ldr r1, _08029188 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + b _080291C0 + .align 2, 0 +_08029170: .4byte gUnknown_2023BC4 +_08029174: .4byte gUnknown_2023D6B +_08029178: .4byte gUnknown_2023D70 +_0802917C: .4byte gUnknown_825E45C +_08029180: .4byte gUnknown_2023BE4 +_08029184: .4byte gUnknown_2022B4C +_08029188: .4byte gUnknown_2023D74 +_0802918C: + ldrb r0, [r2, 0x1] + bl sub_8016E24 + ldr r4, _080291C8 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r3, _080291CC @ =gUnknown_2023BE4 + ldrb r1, [r4] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r3, 0x50 + adds r2, r3 + ldr r2, [r2] + movs r0, 0 + bl sub_800E658 + ldrb r0, [r4] + bl sub_8017248 + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_080291C0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080291C8: .4byte gUnknown_2023BC4 +_080291CC: .4byte gUnknown_2023BE4 + thumb_func_end sub_8029048 + + thumb_func_start sub_80291D0 +sub_80291D0: @ 80291D0 + push {r4-r6,lr} + ldr r6, _08029200 @ =gUnknown_2023DE4 + ldr r4, _08029204 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751D8 + movs r5, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08029210 + ldr r2, _08029208 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0802920C @ =gUnknown_2023E82 + strb r5, [r0, 0x5] + b _0802925E + .align 2, 0 +_08029200: .4byte gUnknown_2023DE4 +_08029204: .4byte gUnknown_2023D6B +_08029208: .4byte gUnknown_2023DCC +_0802920C: .4byte gUnknown_2023E82 +_08029210: + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x5 + strb r1, [r0, 0x4] + ldrb r0, [r4] + bl sub_80751D8 + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r4] + strb r1, [r0, 0x5] + ldrb r0, [r4] + bl sub_80751D8 + ldr r2, _0802926C @ =gUnknown_2023DDE + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r3, 0x80 + lsls r3, 1 + adds r0, r3, 0 + movs r3, 0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _08029270 @ =gUnknown_2023E82 + strb r3, [r0, 0x5] +_0802925E: + ldr r1, _08029274 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802926C: .4byte gUnknown_2023DDE +_08029270: .4byte gUnknown_2023E82 +_08029274: .4byte gUnknown_2023D74 + thumb_func_end sub_80291D0 + + thumb_func_start sub_8029278 +sub_8029278: @ 8029278 + push {lr} + ldr r1, _080292A8 @ =gUnknown_2023BE4 + ldr r0, _080292AC @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r3, 0x80 + lsls r3, 13 + adds r2, r1, 0 + ands r2, r3 + cmp r2, 0 + beq _080292B8 + ldr r2, _080292B0 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080292B4 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _080292C0 + .align 2, 0 +_080292A8: .4byte gUnknown_2023BE4 +_080292AC: .4byte gUnknown_2023D6B +_080292B0: .4byte gUnknown_2023DCC +_080292B4: .4byte gUnknown_2023E82 +_080292B8: + orrs r1, r3 + str r1, [r0] + ldr r0, _080292CC @ =gUnknown_2023E82 + strb r2, [r0, 0x5] +_080292C0: + ldr r1, _080292D0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080292CC: .4byte gUnknown_2023E82 +_080292D0: .4byte gUnknown_2023D74 + thumb_func_end sub_8029278 + + thumb_func_start sub_80292D4 +sub_80292D4: @ 80292D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _0802932C @ =gUnknown_2023D4C + ldr r2, _08029330 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08029334 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r7, _08029338 @ =gUnknown_2023BE4 + ldr r0, _0802933C @ =gUnknown_2023D6C + mov r12, r0 + ldrb r1, [r0] + movs r6, 0x58 + adds r0, r1, 0 + muls r0, r6 + adds r5, r7, 0 + adds r5, 0x50 + adds r0, r5 + ldr r0, [r0] + movs r4, 0x80 + lsls r4, 14 + ands r0, r4 + cmp r0, 0 + bne _0802931A + ldr r0, _08029340 @ =gUnknown_2023DFC + lsls r1, 2 + adds r1, r0 + ldr r2, [r1] + ldr r0, _08029344 @ =0x000400c0 + ands r2, r0 + cmp r2, 0 + beq _08029350 +_0802931A: + ldr r2, _08029348 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802934C @ =gUnknown_2023E82 + movs r0, 0x1 + b _08029464 + .align 2, 0 +_0802932C: .4byte gUnknown_2023D4C +_08029330: .4byte 0x0000ffff +_08029334: .4byte gUnknown_2023D74 +_08029338: .4byte gUnknown_2023BE4 +_0802933C: .4byte gUnknown_2023D6C +_08029340: .4byte gUnknown_2023DFC +_08029344: .4byte 0x000400c0 +_08029348: .4byte gUnknown_2023DCC +_0802934C: .4byte gUnknown_2023E82 +_08029350: + ldr r3, _08029424 @ =gUnknown_2023D6B + ldrb r0, [r3] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + ldr r0, [r1] + orrs r0, r4 + str r0, [r1] + ldr r4, _08029428 @ =gUnknown_2023E0C + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x4] + ldrb r0, [r3] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0xB] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0xB] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + mov r2, r12 + ldrb r1, [r2] + muls r1, r6 + adds r2, r7, 0 + adds r2, 0x48 + adds r1, r2 + ldr r1, [r1] + str r1, [r0] + ldrb r0, [r3] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x18] + movs r0, 0xF + ands r0, r2 + strb r0, [r1, 0x18] + ldr r1, _0802942C @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + mov r2, r12 + ldrb r0, [r2] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r2] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r0, [r3] + muls r0, r6 + adds r5, r0, r7 + ldrb r0, [r2] + muls r0, r6 + adds r2, r0, r7 + movs r4, 0 + adds r6, r3, 0 + ldr r0, _08029430 @ =gUnknown_2023BC4 + mov r8, r0 +_080293E8: + adds r0, r5, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x23 + bls _080293E8 + movs r4, 0 + ldr r7, _08029434 @ =gUnknown_8250C04 + ldr r3, _08029438 @ =gUnknown_2023BF0 + adds r5, r3, 0 + adds r5, 0x18 +_08029400: + lsls r1, r4, 1 + ldrb r2, [r6] + movs r0, 0x58 + muls r2, r0 + adds r1, r2 + adds r1, r3 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r1, [r0, 0x4] + cmp r1, 0x4 + bhi _0802943C + adds r0, r4, r2 + adds r0, r5 + b _08029442 + .align 2, 0 +_08029424: .4byte gUnknown_2023D6B +_08029428: .4byte gUnknown_2023E0C +_0802942C: .4byte gUnknown_2022AB8 +_08029430: .4byte gUnknown_2023BC4 +_08029434: .4byte gUnknown_8250C04 +_08029438: .4byte gUnknown_2023BF0 +_0802943C: + adds r0, r4, r2 + adds r0, r5 + movs r1, 0x5 +_08029442: + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x3 + ble _08029400 + ldrb r0, [r6] + mov r1, r8 + strb r0, [r1] + movs r0, 0 + movs r1, 0x2 + bl sub_800EB74 + mov r2, r8 + ldrb r0, [r2] + bl sub_8017248 + ldr r1, _08029470 @ =gUnknown_2023E82 + movs r0, 0 +_08029464: + strb r0, [r1, 0x5] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029470: .4byte gUnknown_2023E82 + thumb_func_end sub_80292D4 + + thumb_func_start sub_8029474 +sub_8029474: @ 8029474 + push {r4-r7,lr} + ldr r7, _080294A4 @ =gUnknown_2023BE4 + ldr r6, _080294A8 @ =gUnknown_2023D6B + ldrb r0, [r6] + movs r5, 0x58 + muls r0, r5 + adds r3, r0, r7 + ldrh r0, [r3, 0x2C] + lsrs r1, r0, 2 + adds r2, r1, 0 + cmp r1, 0 + bne _0802948E + movs r2, 0x1 +_0802948E: + ldrh r0, [r3, 0x28] + cmp r0, r2 + bhi _080294B4 + ldr r1, _080294AC @ =gUnknown_2023D50 + movs r0, 0 + str r0, [r1] + ldr r1, _080294B0 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08029508 + .align 2, 0 +_080294A4: .4byte gUnknown_2023BE4 +_080294A8: .4byte gUnknown_2023D6B +_080294AC: .4byte gUnknown_2023D50 +_080294B0: .4byte gUnknown_2023E82 +_080294B4: + ldr r4, _08029518 @ =gUnknown_2023D50 + str r1, [r4] + cmp r1, 0 + bne _080294C0 + movs r0, 0x1 + str r0, [r4] +_080294C0: + ldrb r0, [r6] + adds r2, r0, 0 + muls r2, r5 + adds r3, r7, 0 + adds r3, 0x50 + adds r2, r3 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 17 + orrs r0, r1 + str r0, [r2] + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r5 + adds r1, r3 + ldr r0, [r1] + ldr r2, _0802951C @ =0xffff1fff + ands r0, r2 + str r0, [r1] + ldr r2, _08029520 @ =gUnknown_2023E0C + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r4] + movs r2, 0 + strb r1, [r0, 0xA] + ldr r0, _08029524 @ =gUnknown_2023E82 + strb r2, [r0, 0x5] + ldr r2, _08029528 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 1 + orrs r0, r1 + str r0, [r2] +_08029508: + ldr r1, _0802952C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029518: .4byte gUnknown_2023D50 +_0802951C: .4byte 0xffff1fff +_08029520: .4byte gUnknown_2023E0C +_08029524: .4byte gUnknown_2023E82 +_08029528: .4byte gUnknown_2023DD0 +_0802952C: .4byte gUnknown_2023D74 + thumb_func_end sub_8029474 + + thumb_func_start sub_8029530 +sub_8029530: @ 8029530 + push {r4,r5,lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r3, 0 + ldr r0, _08029570 @ =gUnknown_82507E8 + ldrh r1, [r0] + ldr r4, _08029574 @ =0x0000fffe + adds r5, r0, 0 + cmp r1, r4 + beq _08029558 + cmp r1, r2 + beq _08029558 + adds r1, r5, 0 +_0802954A: + adds r1, 0x2 + adds r3, 0x1 + ldrh r0, [r1] + cmp r0, r4 + beq _08029558 + cmp r0, r2 + bne _0802954A +_08029558: + lsls r0, r3, 1 + adds r0, r5 + ldrh r1, [r0] + ldr r0, _08029574 @ =0x0000fffe + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08029570: .4byte gUnknown_82507E8 +_08029574: .4byte 0x0000fffe + thumb_func_end sub_8029530 + + thumb_func_start sub_8029578 +sub_8029578: @ 8029578 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080295F0 @ =gUnknown_2023D4C + ldr r1, _080295F4 @ =0x0000ffff + adds r7, r1, 0 + strh r7, [r0] + ldr r5, _080295F8 @ =gUnknown_2023D98 + ldr r6, _080295FC @ =gUnknown_2023D6C + ldrb r0, [r6] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + bl sub_8029530 + lsls r0, 24 + cmp r0, 0 + bne _080295D2 + ldr r3, _08029600 @ =gUnknown_2023BE4 + ldr r2, _08029604 @ =gUnknown_2023D6B + ldrb r1, [r2] + movs r0, 0x58 + adds r4, r1, 0 + muls r4, r0 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 14 + ands r1, r0 + mov r12, r3 + mov r9, r2 + cmp r1, 0 + bne _080295D2 + ldrb r0, [r6] + lsls r0, 1 + adds r0, r5 + ldrh r1, [r0] + cmp r1, 0 + beq _080295D2 + cmp r1, r7 + bne _0802960C +_080295D2: + ldr r3, _08029608 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _08029744 + .align 2, 0 +_080295F0: .4byte gUnknown_2023D4C +_080295F4: .4byte 0x0000ffff +_080295F8: .4byte gUnknown_2023D98 +_080295FC: .4byte gUnknown_2023D6C +_08029600: .4byte gUnknown_2023BE4 +_08029604: .4byte gUnknown_2023D6B +_08029608: .4byte gUnknown_2023D74 +_0802960C: + movs r2, 0 + mov r3, r12 + adds r3, 0xC + adds r0, r4, r3 + ldrh r0, [r0] + ldr r4, _0802969C @ =gUnknown_2023D74 + mov r10, r4 + cmp r0, r1 + beq _08029646 + mov r8, r3 + adds r7, r5, 0 + adds r5, r6, 0 + mov r4, r9 + movs r3, 0x58 +_08029628: + adds r2, 0x1 + cmp r2, 0x3 + bgt _08029646 + lsls r1, r2, 1 + ldrb r0, [r4] + muls r0, r3 + adds r1, r0 + add r1, r8 + ldrb r0, [r5] + lsls r0, 1 + adds r0, r7 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + bne _08029628 +_08029646: + cmp r2, 0x4 + bne _08029728 + ldr r5, _080296A0 @ =gUnknown_2023D48 + ldrb r1, [r5] + lsls r1, 1 + mov r2, r9 + ldrb r0, [r2] + movs r6, 0x58 + muls r0, r6 + adds r1, r0 + mov r0, r12 + adds r0, 0xC + adds r1, r0 + ldr r2, _080296A4 @ =gUnknown_2023D98 + ldr r3, _080296A8 @ =gUnknown_2023D6C + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + ldr r4, _080296AC @ =gUnknown_8250C04 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r4, [r0, 0x4] + cmp r4, 0x4 + bhi _080296B0 + mov r1, r9 + ldrb r0, [r1] + muls r0, r6 + ldrb r1, [r5] + adds r0, r1 + mov r1, r12 + adds r1, 0x24 + adds r0, r1 + strb r4, [r0] + b _080296C4 + .align 2, 0 +_0802969C: .4byte gUnknown_2023D74 +_080296A0: .4byte gUnknown_2023D48 +_080296A4: .4byte gUnknown_2023D98 +_080296A8: .4byte gUnknown_2023D6C +_080296AC: .4byte gUnknown_8250C04 +_080296B0: + mov r4, r9 + ldrb r0, [r4] + muls r0, r6 + ldrb r1, [r5] + adds r0, r1 + mov r1, r12 + adds r1, 0x24 + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] +_080296C4: + ldr r1, _0802971C @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08029720 @ =gUnknown_2023E0C + mov r2, r9 + ldrb r0, [r2] + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r4, [r2, 0x18] + lsrs r3, r4, 4 + ldr r1, _08029724 @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + orrs r1, r3 + lsls r1, 4 + movs r0, 0xF + ands r0, r4 + orrs r0, r1 + strb r0, [r2, 0x18] + mov r4, r10 + ldr r0, [r4] + adds r0, 0x5 + str r0, [r4] + b _08029744 + .align 2, 0 +_0802971C: .4byte gUnknown_2022AB8 +_08029720: .4byte gUnknown_2023E0C +_08029724: .4byte gUnknown_825E45C +_08029728: + mov r0, r10 + ldr r2, [r0] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + mov r2, r10 + str r1, [r2] +_08029744: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8029578 + + thumb_func_start sub_8029754 +sub_8029754: @ 8029754 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _080297D4 @ =gUnknown_2023D4A + movs r6, 0xB1 + lsls r6, 1 + ldr r5, _080297D8 @ =gUnknown_82507E8 + ldr r0, _080297DC @ =gUnknown_2023D74 + mov r8, r0 +_08029766: + bl sub_8044EC8 + ldr r2, _080297E0 @ =0x000001ff + adds r1, r2, 0 + ands r0, r1 + adds r0, 0x1 + strh r0, [r7] + cmp r0, r6 + bhi _08029766 + movs r0, 0x3 +_0802977A: + subs r0, 0x1 + cmp r0, 0 + bge _0802977A + ldr r4, _080297D4 @ =gUnknown_2023D4A + ldrh r2, [r4] + ldr r3, _080297E4 @ =0x0000ffff + subs r0, r5, 0x2 +_08029788: + adds r0, 0x2 + ldrh r1, [r0] + cmp r1, r2 + beq _08029794 + cmp r1, r3 + bne _08029788 +_08029794: + ldr r0, _080297E4 @ =0x0000ffff + cmp r1, r0 + bne _08029766 + ldr r2, _080297E8 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _080297EC @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r3, _080297F0 @ =gUnknown_81D65A8 + ldr r2, _080297F4 @ =gUnknown_8250C04 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + mov r1, r8 + str r0, [r1] + ldrh r0, [r4] + movs r1, 0 + bl sub_801D05C + ldr r1, _080297F8 @ =gUnknown_2023D6C + strb r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080297D4: .4byte gUnknown_2023D4A +_080297D8: .4byte gUnknown_82507E8 +_080297DC: .4byte gUnknown_2023D74 +_080297E0: .4byte 0x000001ff +_080297E4: .4byte 0x0000ffff +_080297E8: .4byte gUnknown_2023DD0 +_080297EC: .4byte 0xfffffbff +_080297F0: .4byte gUnknown_81D65A8 +_080297F4: .4byte gUnknown_8250C04 +_080297F8: .4byte gUnknown_2023D6C + thumb_func_end sub_8029754 + + thumb_func_start sub_80297FC +sub_80297FC: @ 80297FC + ldr r3, _0802981C @ =gUnknown_2023D50 + ldr r2, _08029820 @ =gUnknown_2023BE4 + ldr r0, _08029824 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r0, [r0] + str r0, [r3] + ldr r1, _08029828 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802981C: .4byte gUnknown_2023D50 +_08029820: .4byte gUnknown_2023BE4 +_08029824: .4byte gUnknown_2023D6B +_08029828: .4byte gUnknown_2023D74 + thumb_func_end sub_80297FC + + thumb_func_start sub_802982C +sub_802982C: @ 802982C + push {r4,lr} + movs r4, 0xF +_08029830: + bl sub_8044EC8 + adds r3, r4, 0 + ands r3, r0 + cmp r3, 0xA + bgt _08029830 + lsls r0, r3, 2 + adds r0, r3 + lsls r3, r0, 1 + ldr r4, _08029870 @ =gUnknown_2023D50 + ldr r2, _08029874 @ =gUnknown_2023BE4 + ldr r0, _08029878 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r0] + adds r0, r3, 0 + adds r0, 0x32 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + ldr r1, _0802987C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08029870: .4byte gUnknown_2023D50 +_08029874: .4byte gUnknown_2023BE4 +_08029878: .4byte gUnknown_2023D6B +_0802987C: .4byte gUnknown_2023D74 + thumb_func_end sub_802982C + + thumb_func_start sub_8029880 +sub_8029880: @ 8029880 + push {r4-r6,lr} + ldr r4, _080298F0 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080298F4 @ =gUnknown_2023E8C + ldrb r0, [r4] + lsls r0, 4 + adds r0, r5 + ldrb r0, [r0, 0xC] + bl sub_80751C4 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r0, r5, 0x4 + adds r0, r1, r0 + ldr r3, [r0] + cmp r3, 0 + beq _08029934 + cmp r6, r2 + beq _08029934 + ldr r6, _080298F8 @ =gUnknown_2023BE4 + adds r0, r1, r5 + ldrb r0, [r0, 0xC] + movs r4, 0x58 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08029934 + ldr r1, _080298FC @ =gUnknown_2023D50 + lsls r0, r3, 1 + str r0, [r1] + ldr r1, _08029900 @ =gUnknown_2023DE4 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x8] + cmp r0, 0 + beq _08029908 + ldrb r1, [r1, 0x9] + adds r0, r1, 0 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08029908 + ldr r0, _08029904 @ =gUnknown_2023D6C + strb r1, [r0] + b _08029918 + .align 2, 0 +_080298F0: .4byte gUnknown_2023D6B +_080298F4: .4byte gUnknown_2023E8C +_080298F8: .4byte gUnknown_2023BE4 +_080298FC: .4byte gUnknown_2023D50 +_08029900: .4byte gUnknown_2023DE4 +_08029904: .4byte gUnknown_2023D6C +_08029908: + ldr r2, _08029924 @ =gUnknown_2023D6C + ldr r1, _08029928 @ =gUnknown_2023E8C + ldr r0, _0802992C @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0xC] + strb r0, [r2] +_08029918: + ldr r1, _08029930 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029964 + .align 2, 0 +_08029924: .4byte gUnknown_2023D6C +_08029928: .4byte gUnknown_2023E8C +_0802992C: .4byte gUnknown_2023D6B +_08029930: .4byte gUnknown_2023D74 +_08029934: + ldr r2, _0802996C @ =gUnknown_2023ECC + ldr r0, _08029970 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _08029974 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08029964: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802996C: .4byte gUnknown_2023ECC +_08029970: .4byte gUnknown_2023D6B +_08029974: .4byte gUnknown_2023D74 + thumb_func_end sub_8029880 + + thumb_func_start sub_8029978 +sub_8029978: @ 8029978 + push {r4-r6,lr} + ldr r4, _080299E8 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080299EC @ =gUnknown_2023E8C + ldrb r0, [r4] + lsls r0, 4 + adds r0, r5 + ldrb r0, [r0, 0xD] + bl sub_80751C4 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r3, [r0] + cmp r3, 0 + beq _08029A2C + cmp r6, r2 + beq _08029A2C + ldr r6, _080299F0 @ =gUnknown_2023BE4 + adds r0, r1, r5 + ldrb r0, [r0, 0xD] + movs r4, 0x58 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08029A2C + ldr r1, _080299F4 @ =gUnknown_2023D50 + lsls r0, r3, 1 + str r0, [r1] + ldr r1, _080299F8 @ =gUnknown_2023DE4 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x8] + cmp r0, 0 + beq _08029A00 + ldrb r1, [r1, 0x9] + adds r0, r1, 0 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08029A00 + ldr r0, _080299FC @ =gUnknown_2023D6C + strb r1, [r0] + b _08029A10 + .align 2, 0 +_080299E8: .4byte gUnknown_2023D6B +_080299EC: .4byte gUnknown_2023E8C +_080299F0: .4byte gUnknown_2023BE4 +_080299F4: .4byte gUnknown_2023D50 +_080299F8: .4byte gUnknown_2023DE4 +_080299FC: .4byte gUnknown_2023D6C +_08029A00: + ldr r2, _08029A1C @ =gUnknown_2023D6C + ldr r1, _08029A20 @ =gUnknown_2023E8C + ldr r0, _08029A24 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0xD] + strb r0, [r2] +_08029A10: + ldr r1, _08029A28 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029A5C + .align 2, 0 +_08029A1C: .4byte gUnknown_2023D6C +_08029A20: .4byte gUnknown_2023E8C +_08029A24: .4byte gUnknown_2023D6B +_08029A28: .4byte gUnknown_2023D74 +_08029A2C: + ldr r2, _08029A64 @ =gUnknown_2023ECC + ldr r0, _08029A68 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _08029A6C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08029A5C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08029A64: .4byte gUnknown_2023ECC +_08029A68: .4byte gUnknown_2023D6B +_08029A6C: .4byte gUnknown_2023D74 + thumb_func_end sub_8029978 + + thumb_func_start sub_8029A70 +sub_8029A70: @ 8029A70 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r4, 0 + ldr r2, _08029B70 @ =gUnknown_2023BE4 + ldr r3, _08029B74 @ =gUnknown_2023D6C + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r7, r2, 0 + adds r7, 0xC + adds r0, r7 + ldr r5, _08029B78 @ =gUnknown_2023D98 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r0] + mov r9, r2 + adds r6, r3, 0 + ldr r2, _08029B7C @ =gUnknown_2023E0C + mov r8, r2 + ldrh r1, [r1] + cmp r0, r1 + beq _08029AC4 + mov r12, r6 + movs r3, 0x58 +_08029AA4: + adds r4, 0x1 + cmp r4, 0x3 + bgt _08029AC4 + lsls r2, r4, 1 + mov r0, r12 + ldrb r1, [r0] + adds r0, r1, 0 + muls r0, r3 + adds r2, r0 + adds r2, r7 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _08029AA4 +_08029AC4: + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r0, [r0, 0x4] + cmp r0, 0 + bne _08029B88 + cmp r4, 0x4 + beq _08029B88 + movs r5, 0x58 + adds r0, r1, 0 + muls r0, r5 + adds r0, r4, r0 + mov r1, r9 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08029B88 + ldr r1, _08029B80 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + lsls r2, r4, 1 + ldrb r0, [r6] + muls r0, r5 + adds r0, r2, r0 + mov r3, r9 + adds r3, 0xC + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r6] + muls r0, r5 + adds r0, r2, r0 + adds r0, r3 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + muls r1, r5 + adds r2, r1 + adds r2, r3 + ldrh r1, [r2] + strh r1, [r0, 0x4] + bl sub_8044EC8 + ldrb r2, [r6] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + add r1, r8 + movs r2, 0x3 + ands r2, r0 + adds r2, 0x2 + ldrb r3, [r1, 0xB] + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xB] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r3, [r1, 0xB] + lsls r2, r3, 28 + lsrs r2, 24 + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xB] + ldr r1, _08029B84 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029BA2 + .align 2, 0 +_08029B70: .4byte gUnknown_2023BE4 +_08029B74: .4byte gUnknown_2023D6C +_08029B78: .4byte gUnknown_2023D98 +_08029B7C: .4byte gUnknown_2023E0C +_08029B80: .4byte gUnknown_2022AB8 +_08029B84: .4byte gUnknown_2023D74 +_08029B88: + ldr r3, _08029BB0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08029BA2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029BB0: .4byte gUnknown_2023D74 + thumb_func_end sub_8029A70 + + thumb_func_start sub_8029BB4 +sub_8029BB4: @ 8029BB4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r5, 0 + ldr r3, _08029CA8 @ =gUnknown_2023BE4 + ldr r4, _08029CAC @ =gUnknown_2023D6C + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r6, r3, 0 + adds r6, 0xC + adds r0, r6 + ldr r2, _08029CB0 @ =gUnknown_2023D98 + lsls r1, 1 + adds r1, r2 + ldrh r0, [r0] + mov r10, r3 + mov r8, r2 + ldr r2, _08029CB4 @ =gUnknown_2023E0C + mov r9, r2 + ldrh r1, [r1] + cmp r0, r1 + beq _08029C0E + mov r12, r4 + adds r7, r6, 0 + mov r6, r8 + movs r3, 0x58 +_08029BEE: + adds r5, 0x1 + cmp r5, 0x3 + bgt _08029C0E + lsls r2, r5, 1 + mov r0, r12 + ldrb r1, [r0] + adds r0, r1, 0 + muls r0, r3 + adds r2, r0 + adds r2, r7 + lsls r1, 1 + adds r1, r6 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _08029BEE +_08029C0E: + ldrb r0, [r4] + lsls r0, 1 + add r0, r8 + ldrh r2, [r0] + cmp r2, 0xA5 + beq _08029C22 + cmp r2, 0xE3 + beq _08029C22 + cmp r2, 0x77 + bne _08029C24 +_08029C22: + movs r5, 0x4 +_08029C24: + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r2, r9 + adds r3, r0, r2 + ldrh r0, [r3, 0x6] + cmp r0, 0 + bne _08029CBC + cmp r5, 0x4 + beq _08029CBC + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + adds r0, r5, r2 + mov r1, r10 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08029CBC + lsls r0, r5, 1 + adds r0, r2 + subs r1, 0x18 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r3, 0x6] + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + strb r5, [r0, 0xC] + bl sub_8044EC8 + ldrb r2, [r4] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + add r1, r9 + movs r2, 0x3 + ands r2, r0 + adds r2, 0x3 + ldrb r3, [r1, 0xE] + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xE] + ldrb r0, [r4] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r9 + ldrb r3, [r1, 0xE] + lsls r2, r3, 28 + lsrs r2, 24 + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xE] + ldr r1, _08029CB8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029CD6 + .align 2, 0 +_08029CA8: .4byte gUnknown_2023BE4 +_08029CAC: .4byte gUnknown_2023D6C +_08029CB0: .4byte gUnknown_2023D98 +_08029CB4: .4byte gUnknown_2023E0C +_08029CB8: .4byte gUnknown_2023D74 +_08029CBC: + ldr r3, _08029CE4 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08029CD6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029CE4: .4byte gUnknown_2023D74 + thumb_func_end sub_8029BB4 + + thumb_func_start sub_8029CE8 +sub_8029CE8: @ 8029CE8 + push {r4-r7,lr} + ldr r6, _08029D68 @ =gUnknown_2023BE4 + ldr r0, _08029D6C @ =gUnknown_2023D6C + mov r12, r0 + ldrb r0, [r0] + movs r7, 0x58 + adds r2, r0, 0 + muls r2, r7 + adds r0, r6, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + bne _08029D88 + ldr r5, _08029D70 @ =gUnknown_2023D6B + ldrb r0, [r5] + muls r0, r7 + adds r0, r6 + ldrh r3, [r0, 0x28] + adds r0, r2, r6 + ldrh r1, [r0, 0x28] + adds r3, r1 + asrs r3, 1 + ldr r4, _08029D74 @ =gUnknown_2023D50 + subs r1, r3 + str r1, [r4] + ldr r2, _08029D78 @ =gUnknown_2023FC4 + strb r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + asrs r0, 8 + strb r0, [r2, 0x1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + asrs r0, 16 + strb r0, [r2, 0x2] + lsrs r1, 24 + strb r1, [r2, 0x3] + ldrb r0, [r5] + muls r0, r7 + adds r0, r6 + ldrh r0, [r0, 0x28] + subs r0, r3 + str r0, [r4] + ldr r2, _08029D7C @ =gUnknown_2023ECC + mov r0, r12 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x4 + adds r0, r2 + ldr r1, _08029D80 @ =0x0000ffff + str r1, [r0] + ldr r1, _08029D84 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029DA2 + .align 2, 0 +_08029D68: .4byte gUnknown_2023BE4 +_08029D6C: .4byte gUnknown_2023D6C +_08029D70: .4byte gUnknown_2023D6B +_08029D74: .4byte gUnknown_2023D50 +_08029D78: .4byte gUnknown_2023FC4 +_08029D7C: .4byte gUnknown_2023ECC +_08029D80: .4byte 0x0000ffff +_08029D84: .4byte gUnknown_2023D74 +_08029D88: + ldr r3, _08029DA8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08029DA2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029DA8: .4byte gUnknown_2023D74 + thumb_func_end sub_8029CE8 + + thumb_func_start sub_8029DAC +sub_8029DAC: @ 8029DAC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r1, _08029E14 @ =gUnknown_2023DA0 + ldr r4, _08029E18 @ =gUnknown_2023D6B + ldrb r0, [r4] + lsls r0, 1 + adds r2, r0, r1 + ldrh r1, [r2] + cmp r1, 0 + beq _08029DF6 + ldr r0, _08029E1C @ =0x0000ffff + cmp r1, r0 + beq _08029DF6 + ldrh r0, [r2] + bl sub_802A1C0 + lsls r0, 24 + cmp r0, 0 + beq _08029E94 + ldr r1, _08029E20 @ =gUnknown_2023BE4 + ldr r2, _08029E24 @ =gUnknown_2023DC0 + ldrb r0, [r4] + adds r0, r2 + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + beq _08029E94 +_08029DF6: + ldr r3, _08029E28 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _08029F80 + .align 2, 0 +_08029E14: .4byte gUnknown_2023DA0 +_08029E18: .4byte gUnknown_2023D6B +_08029E1C: .4byte 0x0000ffff +_08029E20: .4byte gUnknown_2023BE4 +_08029E24: .4byte gUnknown_2023DC0 +_08029E28: .4byte gUnknown_2023D74 +_08029E2C: + mov r0, r12 + strb r5, [r0] + mov r1, r10 + ldrb r0, [r1] + muls r0, r2 + adds r0, r7 + adds r0, 0x22 + strb r5, [r0] + ldr r1, _08029E50 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r5, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r1, _08029E54 @ =gUnknown_2023D74 + b _08029E82 + .align 2, 0 +_08029E50: .4byte gUnknown_2022AB8 +_08029E54: .4byte gUnknown_2023D74 +_08029E58: + mov r0, r8 + adds r0, 0x1 + adds r0, r3 + ldrb r2, [r0] + strb r2, [r4] + mov r4, r10 + ldrb r0, [r4] + muls r0, r6 + ldr r7, _08029E8C @ =gUnknown_2023BE4 + adds r0, r7 + adds r0, 0x22 + strb r2, [r0] + ldr r1, _08029E90 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + mov r1, r12 +_08029E82: + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029F80 + .align 2, 0 +_08029E8C: .4byte gUnknown_2023BE4 +_08029E90: .4byte gUnknown_2022AB8 +_08029E94: + movs r4, 0 + mov r8, r4 + movs r7, 0x7F + mov r9, r7 +_08029E9C: + bl sub_8044EC8 + mov r4, r9 + ands r4, r0 + cmp r4, 0x70 + bhi _08029E9C + lsls r0, r4, 1 + adds r4, r0, r4 + ldr r6, _08029F90 @ =gUnknown_824F050 + adds r3, r4, r6 + ldr r1, _08029F94 @ =gUnknown_2023DA8 + ldr r2, _08029F98 @ =gUnknown_2023D6B + ldrb r5, [r2] + lsls r0, r5, 1 + adds r0, r1 + ldrb r1, [r3] + mov r10, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _08029EF8 + adds r0, r4, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _08029EF8 + ldr r7, _08029F9C @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r0, r5, 0 + muls r0, r2 + adds r3, r0, r7 + movs r0, 0x21 + adds r0, r3 + mov r12, r0 + adds r0, r4, 0x1 + adds r0, r6 + ldrb r5, [r0] + mov r1, r12 + ldrb r0, [r1] + adds r1, r5, 0 + cmp r0, r1 + beq _08029EF8 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + bne _08029E2C +_08029EF8: + movs r7, 0x1 + add r8, r7 + ldr r0, _08029FA0 @ =0x000003e7 + cmp r8, r0 + ble _08029E9C + movs r0, 0 + mov r8, r0 + ldr r1, _08029FA4 @ =gUnknown_2023D74 + mov r12, r1 + ldr r3, _08029F90 @ =gUnknown_824F050 + adds r0, r4, 0x1 + adds r0, r3 + mov r9, r0 + adds r5, r3, 0 +_08029F14: + ldrb r1, [r5] + cmp r1, 0xFF + bgt _08029F1E + cmp r1, 0xFE + bge _08029F58 +_08029F1E: + mov r4, r10 + ldrb r2, [r4] + lsls r0, r2, 1 + ldr r7, _08029F94 @ =gUnknown_2023DA8 + adds r0, r7 + ldrh r0, [r0] + cmp r1, r0 + bne _08029F58 + ldrb r0, [r5, 0x2] + cmp r0, 0x5 + bhi _08029F58 + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + ldr r1, _08029F9C @ =gUnknown_2023BE4 + adds r2, r0, r1 + adds r4, r2, 0 + adds r4, 0x21 + ldrb r0, [r4] + mov r7, r9 + ldrb r1, [r7] + cmp r0, r1 + beq _08029F58 + adds r0, r2, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + beq _08029F58 + b _08029E58 +_08029F58: + adds r5, 0x3 + movs r0, 0x3 + add r8, r0 + ldr r0, _08029FA8 @ =0x0000014f + cmp r8, r0 + bls _08029F14 + mov r1, r12 + ldr r2, [r1] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + mov r4, r12 + str r1, [r4] +_08029F80: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029F90: .4byte gUnknown_824F050 +_08029F94: .4byte gUnknown_2023DA8 +_08029F98: .4byte gUnknown_2023D6B +_08029F9C: .4byte gUnknown_2023BE4 +_08029FA0: .4byte 0x000003e7 +_08029FA4: .4byte gUnknown_2023D74 +_08029FA8: .4byte 0x0000014f + thumb_func_end sub_8029DAC + + thumb_func_start sub_8029FAC +sub_8029FAC: @ 8029FAC + push {r4,lr} + ldr r4, _08029FF0 @ =gUnknown_2023DFC + ldr r3, _08029FF4 @ =gUnknown_2023D6C + ldrb r1, [r3] + lsls r1, 2 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x19 + negs r2, r2 + ands r0, r2 + str r0, [r1] + ldrb r1, [r3] + lsls r1, 2 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x10 + orrs r0, r2 + str r0, [r1] + ldr r2, _08029FF8 @ =gUnknown_2023E0C + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _08029FFC @ =gUnknown_2023D6B + ldrb r1, [r1] + strb r1, [r0, 0x15] + ldr r1, _0802A000 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08029FF0: .4byte gUnknown_2023DFC +_08029FF4: .4byte gUnknown_2023D6C +_08029FF8: .4byte gUnknown_2023E0C +_08029FFC: .4byte gUnknown_2023D6B +_0802A000: .4byte gUnknown_2023D74 + thumb_func_end sub_8029FAC + + thumb_func_start sub_802A004 +sub_802A004: @ 802A004 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + ldr r0, _0802A164 @ =gUnknown_2023D4C + ldr r1, _0802A168 @ =0x0000ffff + adds r5, r1, 0 + strh r5, [r0] + ldr r3, _0802A16C @ =gUnknown_2023BE4 + ldr r2, _0802A170 @ =gUnknown_2023D6B + ldrb r1, [r2] + movs r0, 0x58 + adds r4, r1, 0 + muls r4, r0 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 14 + ands r1, r0 + mov r12, r3 + mov r10, r2 + cmp r1, 0 + beq _0802A03C + b _0802A190 +_0802A03C: + ldr r0, _0802A174 @ =gUnknown_2023D90 + ldr r2, _0802A178 @ =gUnknown_2023D6C + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + mov r9, r0 + mov r8, r2 + cmp r1, 0xA5 + bne _0802A052 + b _0802A190 +_0802A052: + cmp r1, 0 + bne _0802A058 + b _0802A190 +_0802A058: + cmp r1, r5 + bne _0802A05E + b _0802A190 +_0802A05E: + cmp r1, 0xA6 + bne _0802A064 + b _0802A190 +_0802A064: + movs r7, 0 + mov r5, r9 + mov r0, r12 + adds r0, 0xC + adds r1, r4, r0 + mov r3, r8 +_0802A070: + ldrh r2, [r1] + cmp r2, 0xA6 + beq _0802A082 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r2, r0 + beq _0802A08A +_0802A082: + adds r1, 0x2 + adds r7, 0x1 + cmp r7, 0x3 + ble _0802A070 +_0802A08A: + cmp r7, 0x4 + beq _0802A090 + b _0802A190 +_0802A090: + ldr r4, _0802A17C @ =gUnknown_2023D48 + ldrb r1, [r4] + lsls r1, 1 + mov r2, r10 + ldrb r0, [r2] + movs r3, 0x58 + muls r0, r3 + adds r1, r0 + mov r6, r12 + adds r6, 0xC + adds r1, r6 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + strh r0, [r1] + mov r1, r10 + ldrb r0, [r1] + adds r2, r0, 0 + muls r2, r3 + ldrb r4, [r4] + adds r2, r4 + mov r5, r12 + adds r5, 0x24 + adds r2, r5 + ldr r4, _0802A180 @ =gUnknown_8250C04 + mov r1, r8 + ldrb r0, [r1] + lsls r0, 1 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x4] + strb r0, [r2] + ldr r1, _0802A184 @ =gUnknown_2023BC4 + mov r2, r10 + ldrb r0, [r2] + strb r0, [r1] + movs r7, 0 + ldrb r0, [r2] + muls r0, r3 + adds r4, r0, r5 + adds r3, r0, 0 + add r2, sp, 0x4 + add r5, sp, 0xC +_0802A0F2: + adds r0, r3, r6 + ldrh r0, [r0] + strh r0, [r2] + adds r1, r5, r7 + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x1 + adds r3, 0x2 + adds r2, 0x2 + adds r7, 0x1 + cmp r7, 0x3 + ble _0802A0F2 + add r2, sp, 0x4 + mov r0, r10 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r0, 0x3B + ldrb r0, [r0] + strb r0, [r2, 0xC] + str r2, [sp] + movs r0, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0x10 + bl sub_800DFF0 + ldr r0, _0802A184 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _0802A188 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldr r3, _0802A174 @ =gUnknown_2023D90 + ldr r2, _0802A178 @ =gUnknown_2023D6C + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _0802A18C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A1AA + .align 2, 0 +_0802A164: .4byte gUnknown_2023D4C +_0802A168: .4byte 0x0000ffff +_0802A16C: .4byte gUnknown_2023BE4 +_0802A170: .4byte gUnknown_2023D6B +_0802A174: .4byte gUnknown_2023D90 +_0802A178: .4byte gUnknown_2023D6C +_0802A17C: .4byte gUnknown_2023D48 +_0802A180: .4byte gUnknown_8250C04 +_0802A184: .4byte gUnknown_2023BC4 +_0802A188: .4byte gUnknown_2022AB8 +_0802A18C: .4byte gUnknown_2023D74 +_0802A190: + ldr r3, _0802A1BC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802A1AA: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A1BC: .4byte gUnknown_2023D74 + thumb_func_end sub_802A004 + + thumb_func_start sub_802A1C0 +sub_802A1C0: @ 802A1C0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r2, _0802A1F0 @ =gUnknown_8250C04 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + cmp r0, 0x91 + beq _0802A1EA + cmp r0, 0x27 + beq _0802A1EA + cmp r0, 0x4B + beq _0802A1EA + cmp r0, 0x97 + beq _0802A1EA + cmp r0, 0x9B + beq _0802A1EA + cmp r0, 0x1A + bne _0802A1F4 +_0802A1EA: + movs r0, 0x1 + b _0802A1F6 + .align 2, 0 +_0802A1F0: .4byte gUnknown_8250C04 +_0802A1F4: + movs r0, 0 +_0802A1F6: + pop {r1} + bx r1 + thumb_func_end sub_802A1C0 + + thumb_func_start sub_802A1FC +sub_802A1FC: @ 802A1FC + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _0802A21A + cmp r1, 0xD6 + beq _0802A21A + movs r0, 0x89 + lsls r0, 1 + cmp r1, r0 + beq _0802A21A + cmp r1, 0x77 + beq _0802A21A + cmp r1, 0x76 + bne _0802A21E +_0802A21A: + movs r0, 0x1 + b _0802A220 +_0802A21E: + movs r0, 0 +_0802A220: + pop {r1} + bx r1 + thumb_func_end sub_802A1FC + + thumb_func_start sub_802A224 +sub_802A224: @ 802A224 + push {lr} + lsls r1, 16 + lsrs r2, r1, 16 + ldr r1, _0802A27C @ =gUnknown_8250C04 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + adds r3, r1, 0 + cmp r0, 0x97 + bne _0802A248 + ldr r0, _0802A280 @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + bne _0802A288 +_0802A248: + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0x91 + beq _0802A26A + cmp r0, 0x27 + beq _0802A26A + cmp r0, 0x4B + beq _0802A26A + cmp r0, 0x97 + beq _0802A26A + cmp r0, 0x9B + beq _0802A26A + cmp r0, 0x1A + bne _0802A288 +_0802A26A: + ldr r0, _0802A284 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 20 + ands r0, r1 + cmp r0, 0 + beq _0802A288 + movs r0, 0x1 + b _0802A28A + .align 2, 0 +_0802A27C: .4byte gUnknown_8250C04 +_0802A280: .4byte gUnknown_2023F1C +_0802A284: .4byte gUnknown_2023DD0 +_0802A288: + movs r0, 0x2 +_0802A28A: + pop {r1} + bx r1 + thumb_func_end sub_802A224 + + thumb_func_start sub_802A290 +sub_802A290: @ 802A290 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + movs r5, 0 + ldr r0, _0802A320 @ =gUnknown_2023D6B + mov r9, r0 + movs r1, 0x58 + mov r8, r1 + ldr r7, _0802A324 @ =gUnknown_2023BF0 + movs r0, 0x84 + lsls r0, 1 + mov r10, r0 +_0802A2AE: + lsls r4, r5, 1 + mov r1, r9 + ldrb r0, [r1] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r4, r0 + adds r0, r7 + ldrh r0, [r0] + bl sub_802A1FC + lsls r0, 24 + cmp r0, 0 + bne _0802A2EE + mov r1, r9 + ldrb r0, [r1] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r4, r0 + adds r0, r7 + ldrh r1, [r0] + cmp r1, r10 + beq _0802A2EE + cmp r1, 0xFD + beq _0802A2EE + adds r0, r1, 0 + bl sub_802A1C0 + lsls r0, 24 + cmp r0, 0 + beq _0802A2FC +_0802A2EE: + ldr r1, _0802A328 @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_0802A2FC: + adds r5, 0x1 + cmp r5, 0x3 + ble _0802A2AE + ldr r0, _0802A320 @ =gUnknown_2023D6B + ldrb r0, [r0] + adds r1, r6, 0 + movs r2, 0xFD + bl sub_801779C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bne _0802A330 + ldr r1, _0802A32C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A394 + .align 2, 0 +_0802A320: .4byte gUnknown_2023D6B +_0802A324: .4byte gUnknown_2023BF0 +_0802A328: .4byte gUnknown_825E45C +_0802A32C: .4byte gUnknown_2023D74 +_0802A330: + movs r7, 0x3 + ldr r4, _0802A3A4 @ =gUnknown_825E45C +_0802A334: + bl sub_8044EC8 + adds r5, r7, 0 + ands r5, r0 + lsls r0, r5, 2 + adds r0, r4 + ldr r0, [r0] + ands r0, r6 + cmp r0, 0 + bne _0802A334 + ldr r4, _0802A3A8 @ =gUnknown_2023D4E + ldr r2, _0802A3AC @ =gUnknown_2023BE4 + lsls r1, r5, 1 + ldr r0, _0802A3B0 @ =gUnknown_2023D6B + ldrb r3, [r0] + movs r0, 0x58 + muls r0, r3 + adds r1, r0 + adds r2, 0xC + adds r1, r2 + ldrh r0, [r1] + strh r0, [r4] + ldr r0, _0802A3B4 @ =gUnknown_2023D48 + strb r5, [r0] + ldr r2, _0802A3B8 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _0802A3BC @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldrh r0, [r4] + movs r1, 0 + bl sub_801D05C + ldr r1, _0802A3C0 @ =gUnknown_2023D6C + strb r0, [r1] + ldr r3, _0802A3C4 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802A394: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A3A4: .4byte gUnknown_825E45C +_0802A3A8: .4byte gUnknown_2023D4E +_0802A3AC: .4byte gUnknown_2023BE4 +_0802A3B0: .4byte gUnknown_2023D6B +_0802A3B4: .4byte gUnknown_2023D48 +_0802A3B8: .4byte gUnknown_2023DD0 +_0802A3BC: .4byte 0xfffffbff +_0802A3C0: .4byte gUnknown_2023D6C +_0802A3C4: .4byte gUnknown_2023D74 + thumb_func_end sub_802A290 + + thumb_func_start sub_802A3C8 +sub_802A3C8: @ 802A3C8 + ldr r1, _0802A3EC @ =gUnknown_2023BE4 + ldr r0, _0802A3F0 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 18 + orrs r0, r1 + str r0, [r2] + ldr r1, _0802A3F4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802A3EC: .4byte gUnknown_2023BE4 +_0802A3F0: .4byte gUnknown_2023D6B +_0802A3F4: .4byte gUnknown_2023D74 + thumb_func_end sub_802A3C8 + + thumb_func_start sub_802A3F8 +sub_802A3F8: @ 802A3F8 + push {r4,r5,lr} + ldr r0, _0802A448 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0802A44C @ =gUnknown_2023D6C + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _0802A450 @ =gUnknown_2023BE4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _0802A442 + cmp r5, r3 + beq _0802A442 + ldr r2, _0802A454 @ =gUnknown_2023DD0 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + bne _0802A442 + movs r0, 0x40 + orrs r1, r0 + str r1, [r2] +_0802A442: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802A448: .4byte gUnknown_2023D6B +_0802A44C: .4byte gUnknown_2023D6C +_0802A450: .4byte gUnknown_2023BE4 +_0802A454: .4byte gUnknown_2023DD0 + thumb_func_end sub_802A3F8 + + thumb_func_start sub_802A458 +sub_802A458: @ 802A458 + push {lr} + bl sub_802A3F8 + ldr r1, _0802A46C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802A46C: .4byte gUnknown_2023D74 + thumb_func_end sub_802A458 + + thumb_func_start sub_802A470 +sub_802A470: @ 802A470 + push {lr} + ldr r2, _0802A4C4 @ =gUnknown_2023BE4 + ldr r0, _0802A4C8 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + movs r2, 0x28 + ldrsh r0, [r1, r2] + movs r2, 0x2C + ldrsh r1, [r1, r2] + movs r2, 0x30 + bl sub_804A5E8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r3, 0 + ldr r0, _0802A4CC @ =gUnknown_8250810 + ldrb r2, [r0] + cmp r1, r2 + ble _0802A4AA + adds r2, r0, 0 +_0802A49C: + adds r3, 0x2 + cmp r3, 0xB + bgt _0802A4AA + adds r0, r3, r2 + ldrb r0, [r0] + cmp r1, r0 + bgt _0802A49C +_0802A4AA: + ldr r2, _0802A4D0 @ =gUnknown_2023F50 + ldr r1, _0802A4CC @ =gUnknown_8250810 + adds r0, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldr r1, _0802A4D4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802A4C4: .4byte gUnknown_2023BE4 +_0802A4C8: .4byte gUnknown_2023D6B +_0802A4CC: .4byte gUnknown_8250810 +_0802A4D0: .4byte gUnknown_2023F50 +_0802A4D4: .4byte gUnknown_2023D74 + thumb_func_end sub_802A470 + + thumb_func_start sub_802A4D8 +sub_802A4D8: @ 802A4D8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, _0802A658 @ =gUnknown_2023D98 + ldr r1, _0802A65C @ =gUnknown_2023D6C + ldrb r3, [r1] + lsls r0, r3, 1 + adds r0, r4 + ldrh r2, [r0] + mov r8, r1 + cmp r2, 0 + bne _0802A4F8 + b _0802A680 +_0802A4F8: + ldr r0, _0802A660 @ =0x0000ffff + cmp r2, r0 + bne _0802A500 + b _0802A680 +_0802A500: + movs r7, 0 + ldr r0, _0802A664 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r3 + adds r3, r0, 0 + adds r3, 0xC + adds r1, r3 + ldrh r1, [r1] + cmp r2, r1 + beq _0802A538 + adds r6, r4, 0 + mov r5, r8 + adds r4, r3, 0 + movs r3, 0x58 +_0802A51C: + adds r7, 0x1 + cmp r7, 0x3 + bgt _0802A538 + ldrb r0, [r5] + lsls r2, r0, 1 + adds r2, r6 + lsls r1, r7, 1 + muls r0, r3 + adds r1, r0 + adds r1, r4 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _0802A51C +_0802A538: + cmp r7, 0x4 + bne _0802A53E + b _0802A680 +_0802A53E: + mov r4, r8 + ldrb r0, [r4] + movs r1, 0x58 + mov r9, r1 + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + adds r0, r7, r0 + ldr r1, _0802A664 @ =gUnknown_2023BE4 + adds r1, 0x24 + mov r10, r1 + add r0, r10 + ldrb r0, [r0] + cmp r0, 0x1 + bhi _0802A55E + b _0802A680 +_0802A55E: + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + adds r6, r1, 0x2 + ldrb r0, [r4] + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + adds r0, r7, r0 + add r0, r10 + ldrb r0, [r0] + cmp r0, r6 + bge _0802A57C + adds r6, r0, 0 +_0802A57C: + ldr r1, _0802A668 @ =gUnknown_2022AB8 + movs r5, 0xFD + strb r5, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldr r2, _0802A658 @ =gUnknown_2023D98 + mov r3, r8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r4, _0802A66C @ =gUnknown_2022AC8 + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + strb r5, [r4] + movs r0, 0x1 + strb r0, [r4, 0x1] + strb r0, [r4, 0x2] + strb r0, [r4, 0x3] + strb r6, [r4, 0x4] + subs r0, 0x2 + strb r0, [r4, 0x5] + mov r1, r8 + ldrb r0, [r1] + mov r1, r9 + muls r1, r0 + adds r1, r7, r1 + add r1, r10 + ldrb r0, [r1] + subs r0, r6 + strb r0, [r1] + ldr r4, _0802A670 @ =gUnknown_2023BC4 + mov r3, r8 + ldrb r0, [r3] + strb r0, [r4] + ldr r1, _0802A674 @ =gUnknown_2023E0C + ldrb r3, [r4] + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _0802A678 @ =gUnknown_825E45C + lsls r0, r7, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802A630 + mov r2, r9 + muls r2, r3 + ldr r0, _0802A664 @ =gUnknown_2023BE4 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0802A630 + adds r1, r7, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + mov r3, r10 + adds r0, r2, r3 + adds r0, r7 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_0802A630: + ldr r1, _0802A67C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r1, _0802A664 @ =gUnknown_2023BE4 + ldr r0, _0802A65C @ =gUnknown_2023D6C + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r7, r0 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0802A69A + adds r0, r2, 0 + bl sub_80172E8 + b _0802A69A + .align 2, 0 +_0802A658: .4byte gUnknown_2023D98 +_0802A65C: .4byte gUnknown_2023D6C +_0802A660: .4byte 0x0000ffff +_0802A664: .4byte gUnknown_2023BE4 +_0802A668: .4byte gUnknown_2022AB8 +_0802A66C: .4byte gUnknown_2022AC8 +_0802A670: .4byte gUnknown_2023BC4 +_0802A674: .4byte gUnknown_2023E0C +_0802A678: .4byte gUnknown_825E45C +_0802A67C: .4byte gUnknown_2023D74 +_0802A680: + ldr r3, _0802A6AC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802A69A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A6AC: .4byte gUnknown_2023D74 + thumb_func_end sub_802A4D8 + + thumb_func_start sub_802A6B0 +sub_802A6B0: @ 802A6B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r4, 0 + str r4, [sp, 0x4] + mov r8, r4 + ldr r0, _0802A720 @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xD7 + beq _0802A6CC + b _0802A8B6 +_0802A6CC: + ldr r6, _0802A724 @ =gUnknown_2023E82 + mov r0, r8 + strb r0, [r6, 0x5] + ldr r5, _0802A728 @ =gUnknown_2023D6B + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + ldr r1, _0802A72C @ =gUnknown_202402C + mov r10, r1 + cmp r0, 0 + bne _0802A6E8 + ldr r2, _0802A730 @ =gUnknown_2024284 + mov r10, r2 +_0802A6E8: + ldr r4, _0802A734 @ =gUnknown_2023BE4 + ldrb r3, [r5] + movs r7, 0x58 + adds r2, r3, 0 + muls r2, r7 + adds r0, r2, r4 + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0x2B + beq _0802A73C + adds r0, r4, 0 + adds r0, 0x4C + adds r0, r2, r0 + mov r1, r8 + str r1, [r0] + ldrb r0, [r5] + adds r2, r0, 0 + muls r2, r7 + adds r0, r4, 0 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + ldr r1, _0802A738 @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + b _0802A74C + .align 2, 0 +_0802A720: .4byte gUnknown_2023D4A +_0802A724: .4byte gUnknown_2023E82 +_0802A728: .4byte gUnknown_2023D6B +_0802A72C: .4byte gUnknown_202402C +_0802A730: .4byte gUnknown_2024284 +_0802A734: .4byte gUnknown_2023BE4 +_0802A738: .4byte 0xf7ffffff +_0802A73C: + ldrb r1, [r1] + adds r0, r3, 0 + bl sub_80C71D0 + ldrb r0, [r6, 0x5] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r6, 0x5] +_0802A74C: + ldr r7, _0802A7C0 @ =gUnknown_2023BC4 + ldr r0, _0802A7C4 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751D8 + movs r2, 0x2 + mov r9, r2 + mov r1, r9 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r1, _0802A7C8 @ =gUnknown_2023FC4 + strb r0, [r1, 0x17] + strb r0, [r7] + ldr r0, _0802A7CC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802A7F2 + ldr r0, _0802A7D0 @ =gUnknown_2023D70 + ldrb r2, [r0] + ldr r1, _0802A7D4 @ =gUnknown_825E45C + ldrb r3, [r7] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + bne _0802A7F2 + ldr r5, _0802A7D8 @ =gUnknown_2023BE4 + movs r6, 0x58 + adds r4, r3, 0 + muls r4, r6 + adds r0, r4, r5 + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0x2B + beq _0802A7E0 + adds r0, r5, 0 + adds r0, 0x4C + adds r0, r4, r0 + str r2, [r0] + ldrb r0, [r7] + adds r2, r0, 0 + muls r2, r6 + adds r0, r5, 0 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + ldr r1, _0802A7DC @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + b _0802A7F2 + .align 2, 0 +_0802A7C0: .4byte gUnknown_2023BC4 +_0802A7C4: .4byte gUnknown_2023D6B +_0802A7C8: .4byte gUnknown_2023FC4 +_0802A7CC: .4byte gUnknown_2022B4C +_0802A7D0: .4byte gUnknown_2023D70 +_0802A7D4: .4byte gUnknown_825E45C +_0802A7D8: .4byte gUnknown_2023BE4 +_0802A7DC: .4byte 0xf7ffffff +_0802A7E0: + ldrb r1, [r1] + adds r0, r3, 0 + bl sub_80C71D0 + ldr r1, _0802A838 @ =gUnknown_2023E82 + ldrb r0, [r1, 0x5] + mov r2, r9 + orrs r0, r2 + strb r0, [r1, 0x5] +_0802A7F2: + movs r6, 0 + ldr r7, _0802A83C @ =gUnknown_2023BE4 +_0802A7F6: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + add r4, r10 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r5, 0 + beq _0802A8AE + movs r0, 0xCE + lsls r0, 1 + cmp r5, r0 + beq _0802A8AE + ldr r2, _0802A840 @ =gUnknown_2023BCE + ldr r0, _0802A844 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _0802A848 + movs r0, 0x58 + muls r0, r1 + b _0802A878 + .align 2, 0 +_0802A838: .4byte gUnknown_2023E82 +_0802A83C: .4byte gUnknown_2023BE4 +_0802A840: .4byte gUnknown_2023BCE +_0802A844: .4byte gUnknown_2023D6B +_0802A848: + ldr r0, _0802A880 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802A890 + ldr r0, _0802A884 @ =gUnknown_2023BC4 + ldrb r3, [r0] + lsls r0, r3, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _0802A890 + ldr r0, _0802A888 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0802A88C @ =gUnknown_825E45C + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802A890 + movs r0, 0x58 + muls r0, r3 +_0802A878: + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + b _0802A89C + .align 2, 0 +_0802A880: .4byte gUnknown_2022B4C +_0802A884: .4byte gUnknown_2023BC4 +_0802A888: .4byte gUnknown_2023D70 +_0802A88C: .4byte gUnknown_825E45C +_0802A890: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8040D38 + lsls r0, 24 + lsrs r0, 24 +_0802A89C: + cmp r0, 0x2B + beq _0802A8AE + movs r0, 0x1 + lsls r0, r6 + mov r1, r8 + orrs r1, r0 + lsls r0, r1, 24 + lsrs r0, 24 + mov r8, r0 +_0802A8AE: + adds r6, 0x1 + cmp r6, 0x5 + ble _0802A7F6 + b _0802A934 +_0802A8B6: + ldr r1, _0802A970 @ =gUnknown_2023E82 + movs r0, 0x4 + strb r0, [r1, 0x5] + movs r2, 0x3F + mov r8, r2 + ldr r3, _0802A974 @ =gUnknown_2023BE4 + ldr r2, _0802A978 @ =gUnknown_2023D6B + ldrb r0, [r2] + movs r5, 0x58 + muls r0, r5 + movs r1, 0x4C + adds r1, r3 + mov r9, r1 + add r0, r9 + str r4, [r0] + ldrb r0, [r2] + adds r1, r0, 0 + muls r1, r5 + adds r7, r3, 0 + adds r7, 0x50 + adds r1, r7 + ldr r0, [r1] + ldr r6, _0802A97C @ =0xf7ffffff + ands r0, r6 + str r0, [r1] + ldrb r0, [r2] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r4, _0802A980 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r0, _0802A984 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802A934 + ldr r0, _0802A988 @ =gUnknown_2023D70 + ldrb r2, [r0] + ldr r1, _0802A98C @ =gUnknown_825E45C + ldrb r3, [r4] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + bne _0802A934 + adds r0, r3, 0 + muls r0, r5 + add r0, r9 + str r2, [r0] + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r5 + adds r1, r7 + ldr r0, [r1] + ands r0, r6 + str r0, [r1] +_0802A934: + mov r2, r8 + cmp r2, 0 + beq _0802A956 + ldr r4, _0802A980 @ =gUnknown_2023BC4 + ldr r0, _0802A978 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r4] + add r0, sp, 0x4 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_0802A956: + ldr r1, _0802A990 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A970: .4byte gUnknown_2023E82 +_0802A974: .4byte gUnknown_2023BE4 +_0802A978: .4byte gUnknown_2023D6B +_0802A97C: .4byte 0xf7ffffff +_0802A980: .4byte gUnknown_2023BC4 +_0802A984: .4byte gUnknown_2022B4C +_0802A988: .4byte gUnknown_2023D70 +_0802A98C: .4byte gUnknown_825E45C +_0802A990: .4byte gUnknown_2023D74 + thumb_func_end sub_802A6B0 + + thumb_func_start sub_802A994 +sub_802A994: @ 802A994 + push {r4,r5,lr} + ldr r5, _0802A9D4 @ =gUnknown_2023BE4 + ldr r0, _0802A9D8 @ =gUnknown_2023D6C + ldrb r0, [r0] + movs r4, 0x58 + adds r1, r0, 0 + muls r1, r4 + adds r0, r5, 0 + adds r0, 0x50 + adds r1, r0 + ldr r2, [r1] + movs r3, 0x80 + lsls r3, 21 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _0802A9E0 + ldr r3, _0802A9DC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802AA04 + .align 2, 0 +_0802A9D4: .4byte gUnknown_2023BE4 +_0802A9D8: .4byte gUnknown_2023D6C +_0802A9DC: .4byte gUnknown_2023D74 +_0802A9E0: + orrs r2, r3 + str r2, [r1] + ldr r1, _0802AA0C @ =gUnknown_2023D50 + ldr r0, _0802AA10 @ =gUnknown_2023D6B + ldrb r0, [r0] + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _0802A9FC + movs r0, 0x1 + str r0, [r1] +_0802A9FC: + ldr r1, _0802AA14 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802AA04: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802AA0C: .4byte gUnknown_2023D50 +_0802AA10: .4byte gUnknown_2023D6B +_0802AA14: .4byte gUnknown_2023D74 + thumb_func_end sub_802A994 + + thumb_func_start sub_802AA18 +sub_802AA18: @ 802AA18 + push {r4,lr} + ldr r4, _0802AA6C @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0802AA70 @ =gUnknown_2023DE4 + lsls r2, r0, 1 + adds r0, r2, r0 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0xA] + cmp r0, 0x3 + bne _0802AA7C + ldr r2, _0802AA74 @ =gUnknown_2023ECC + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _0802AA78 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802AA96 + .align 2, 0 +_0802AA6C: .4byte gUnknown_2023D6B +_0802AA70: .4byte gUnknown_2023DE4 +_0802AA74: .4byte gUnknown_2023ECC +_0802AA78: .4byte gUnknown_2023D74 +_0802AA7C: + ldr r1, _0802AA9C @ =gUnknown_2023DDE + adds r1, r2, r1 + ldrh r2, [r1] + movs r0, 0x10 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r3, 0xA] + adds r0, 0x1 + strb r0, [r3, 0xA] + ldr r1, _0802AAA0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802AA96: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AA9C: .4byte gUnknown_2023DDE +_0802AAA0: .4byte gUnknown_2023D74 + thumb_func_end sub_802AA18 + + thumb_func_start sub_802AAA4 +sub_802AAA4: @ 802AAA4 + ldr r1, _0802AAC8 @ =gUnknown_2023BE4 + ldr r0, _0802AACC @ =gUnknown_2023D6C + ldrb r2, [r0] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 22 + orrs r0, r1 + str r0, [r2] + ldr r1, _0802AAD0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802AAC8: .4byte gUnknown_2023BE4 +_0802AACC: .4byte gUnknown_2023D6C +_0802AAD0: .4byte gUnknown_2023D74 + thumb_func_end sub_802AAA4 + + thumb_func_start sub_802AAD4 +sub_802AAD4: @ 802AAD4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r6, 0 + movs r3, 0 + ldr r0, _0802AB18 @ =gUnknown_2023BCC + adds r7, r0, 0 + ldr r0, _0802AB1C @ =gUnknown_2023D6B + mov r8, r0 + ldrb r1, [r7] + cmp r6, r1 + bge _0802AB40 + movs r5, 0x20 + ldr r0, _0802AB20 @ =gUnknown_2023BE4 + mov r12, r0 + ldr r0, _0802AB24 @ =gUnknown_2023E0C + adds r4, r0, 0 + adds r4, 0xF + ldr r2, _0802AB28 @ =gUnknown_2023DFC +_0802AAFC: + ldr r1, [r2] + adds r0, r1, 0 + ands r0, r5 + cmp r0, 0 + bne _0802AB14 + movs r0, 0x58 + muls r0, r3 + add r0, r12 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2B + bne _0802AB2C +_0802AB14: + adds r6, 0x1 + b _0802AB34 + .align 2, 0 +_0802AB18: .4byte gUnknown_2023BCC +_0802AB1C: .4byte gUnknown_2023D6B +_0802AB20: .4byte gUnknown_2023BE4 +_0802AB24: .4byte gUnknown_2023E0C +_0802AB28: .4byte gUnknown_2023DFC +_0802AB2C: + orrs r1, r5 + str r1, [r2] + movs r0, 0x33 + strb r0, [r4] +_0802AB34: + adds r4, 0x1C + adds r2, 0x4 + adds r3, 0x1 + ldrb r0, [r7] + cmp r3, r0 + blt _0802AAFC +_0802AB40: + mov r1, r8 + ldrb r0, [r1] + bl sub_80170C4 + ldr r0, _0802AB6C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r6, r0 + bne _0802AB74 + ldr r3, _0802AB70 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802AB7C + .align 2, 0 +_0802AB6C: .4byte gUnknown_2023BCC +_0802AB70: .4byte gUnknown_2023D74 +_0802AB74: + ldr r1, _0802AB88 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802AB7C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802AB88: .4byte gUnknown_2023D74 + thumb_func_end sub_802AAD4 + + thumb_func_start sub_802AB8C +sub_802AB8C: @ 802AB8C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0802ABB0 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0802ABC0 + ldr r0, _0802ABB4 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80172E8 + ldr r1, _0802ABB8 @ =gUnknown_2023D74 + ldr r0, _0802ABBC @ =gUnknown_81D6960 + str r0, [r1] + b _0802ACD8 + .align 2, 0 +_0802ABB0: .4byte gUnknown_2023DCC +_0802ABB4: .4byte gUnknown_2023D6B +_0802ABB8: .4byte gUnknown_2023D74 +_0802ABBC: .4byte gUnknown_81D6960 +_0802ABC0: + ldr r2, _0802ACE4 @ =gUnknown_2023BE4 + ldr r1, _0802ACE8 @ =gUnknown_2023D6B + ldrb r3, [r1] + movs r5, 0x58 + adds r0, r3, 0 + muls r0, r5 + adds r4, r2, 0 + adds r4, 0x50 + adds r0, r4 + ldr r0, [r0] + movs r7, 0x80 + lsls r7, 5 + ands r0, r7 + adds r6, r1, 0 + mov r9, r2 + ldr r1, _0802ACEC @ =gUnknown_2023E0C + mov r12, r1 + ldr r2, _0802ACF0 @ =gUnknown_2023D4A + mov r8, r2 + cmp r0, 0 + bne _0802AC32 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + add r0, r12 + ldrb r2, [r0, 0x11] + movs r1, 0x10 + negs r1, r1 + ands r1, r2 + movs r2, 0x5 + orrs r1, r2 + strb r1, [r0, 0x11] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r2, [r0, 0x11] + movs r1, 0xF + ands r1, r2 + movs r2, 0x50 + orrs r1, r2 + strb r1, [r0, 0x11] + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r5 + adds r1, r4 + ldr r0, [r1] + orrs r0, r7 + str r0, [r1] + ldr r1, _0802ACF4 @ =gUnknown_2023DB8 + ldrb r0, [r6] + lsls r0, 1 + adds r0, r1 + mov r2, r8 + ldrh r1, [r2] + strh r1, [r0] +_0802AC32: + ldrb r0, [r6] + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + add r2, r12 + ldrb r3, [r2, 0x11] + lsls r1, r3, 28 + lsrs r1, 28 + subs r1, 0x1 + movs r0, 0xF + ands r1, r0 + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x11] + cmp r1, 0 + bne _0802AC66 + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r5 + adds r1, r4 + ldr r0, [r1] + ldr r2, _0802ACF8 @ =0xffffefff + ands r0, r2 + str r0, [r1] +_0802AC66: + ldr r3, _0802ACFC @ =gUnknown_2023F50 + ldr r2, _0802AD00 @ =gUnknown_8250C04 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + strh r0, [r3] + movs r2, 0x1 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r1, r12 + adds r4, r0, r1 + ldrb r0, [r4, 0x11] + lsls r0, 28 + lsrs r0, 28 + movs r1, 0x5 + subs r1, r0 + ldr r7, _0802AD04 @ =gUnknown_2023D74 + adds r5, r3, 0 + cmp r2, r1 + bge _0802ACB4 + adds r1, r5, 0 + adds r3, r4, 0 + movs r4, 0x5 +_0802ACA0: + ldrh r0, [r1] + lsls r0, 1 + strh r0, [r1] + adds r2, 0x1 + ldrb r0, [r3, 0x11] + lsls r0, 28 + lsrs r0, 28 + subs r0, r4, r0 + cmp r2, r0 + blt _0802ACA0 +_0802ACB4: + ldrb r1, [r6] + movs r0, 0x58 + muls r0, r1 + mov r1, r9 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 23 + ands r0, r1 + cmp r0, 0 + beq _0802ACD2 + ldrh r0, [r5] + lsls r0, 1 + strh r0, [r5] +_0802ACD2: + ldr r0, [r7] + adds r0, 0x1 + str r0, [r7] +_0802ACD8: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802ACE4: .4byte gUnknown_2023BE4 +_0802ACE8: .4byte gUnknown_2023D6B +_0802ACEC: .4byte gUnknown_2023E0C +_0802ACF0: .4byte gUnknown_2023D4A +_0802ACF4: .4byte gUnknown_2023DB8 +_0802ACF8: .4byte 0xffffefff +_0802ACFC: .4byte gUnknown_2023F50 +_0802AD00: .4byte gUnknown_8250C04 +_0802AD04: .4byte gUnknown_2023D74 + thumb_func_end sub_802AB8C + + thumb_func_start sub_802AD08 +sub_802AD08: @ 802AD08 + push {r4,r5,lr} + ldr r5, _0802AD58 @ =gUnknown_2023BE4 + ldr r0, _0802AD5C @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + adds r3, r1, 0 + muls r3, r0 + adds r0, r5, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + ldr r4, _0802AD60 @ =gUnknown_2023D74 + cmp r0, 0 + beq _0802AD64 + ldr r2, [r4] + ldrb r0, [r2, 0x1] + adds r0, r3 + adds r1, r5, 0 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xC + bne _0802AD64 + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _0802AD6A + .align 2, 0 +_0802AD58: .4byte gUnknown_2023BE4 +_0802AD5C: .4byte gUnknown_2023D6C +_0802AD60: .4byte gUnknown_2023D74 +_0802AD64: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_0802AD6A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_802AD08 + + thumb_func_start sub_802AD70 +sub_802AD70: @ 802AD70 + push {r4,r5,lr} + ldr r0, _0802AD98 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0802ADAC + ldr r2, _0802AD9C @ =gUnknown_2023E0C + ldr r0, _0802ADA0 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x10] + ldr r1, _0802ADA4 @ =gUnknown_2023D74 + ldr r0, _0802ADA8 @ =gUnknown_81D6960 + str r0, [r1] + b _0802AE04 + .align 2, 0 +_0802AD98: .4byte gUnknown_2023DCC +_0802AD9C: .4byte gUnknown_2023E0C +_0802ADA0: .4byte gUnknown_2023D6B +_0802ADA4: .4byte gUnknown_2023D74 +_0802ADA8: .4byte gUnknown_81D6960 +_0802ADAC: + ldr r5, _0802AE0C @ =gUnknown_2023E0C + ldr r4, _0802AE10 @ =gUnknown_2023D6B + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1, 0x10] + cmp r0, 0x5 + beq _0802ADC4 + adds r0, 0x1 + strb r0, [r1, 0x10] +_0802ADC4: + ldr r3, _0802AE14 @ =gUnknown_2023F50 + ldr r2, _0802AE18 @ =gUnknown_8250C04 + ldr r0, _0802AE1C @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + strh r0, [r3] + movs r2, 0x1 + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r4, _0802AE20 @ =gUnknown_2023D74 + ldrb r1, [r0, 0x10] + cmp r2, r1 + bge _0802ADFE + adds r1, r3, 0 + adds r3, r0, 0 +_0802ADF0: + ldrh r0, [r1] + lsls r0, 1 + strh r0, [r1] + adds r2, 0x1 + ldrb r0, [r3, 0x10] + cmp r2, r0 + blt _0802ADF0 +_0802ADFE: + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] +_0802AE04: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802AE0C: .4byte gUnknown_2023E0C +_0802AE10: .4byte gUnknown_2023D6B +_0802AE14: .4byte gUnknown_2023F50 +_0802AE18: .4byte gUnknown_8250C04 +_0802AE1C: .4byte gUnknown_2023D4A +_0802AE20: .4byte gUnknown_2023D74 + thumb_func_end sub_802AD70 + + thumb_func_start sub_802AE24 +sub_802AE24: @ 802AE24 + push {r4,lr} + ldr r2, _0802AE50 @ =gUnknown_8250C04 + ldr r0, _0802AE54 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x79 + bne _0802AE64 + ldr r4, _0802AE58 @ =gUnknown_2023F50 + ldr r2, _0802AE5C @ =gUnknown_2023BE4 + ldr r0, _0802AE60 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2B + ldrb r1, [r0] + b _0802AE7A + .align 2, 0 +_0802AE50: .4byte gUnknown_8250C04 +_0802AE54: .4byte gUnknown_2023D4A +_0802AE58: .4byte gUnknown_2023F50 +_0802AE5C: .4byte gUnknown_2023BE4 +_0802AE60: .4byte gUnknown_2023D6B +_0802AE64: + ldr r4, _0802AE98 @ =gUnknown_2023F50 + ldr r2, _0802AE9C @ =gUnknown_2023BE4 + ldr r0, _0802AEA0 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2B + ldrb r0, [r0] + movs r1, 0xFF + subs r1, r0 +_0802AE7A: + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + movs r1, 0x19 + bl __divsi3 + strh r0, [r4] + ldr r1, _0802AEA4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AE98: .4byte gUnknown_2023F50 +_0802AE9C: .4byte gUnknown_2023BE4 +_0802AEA0: .4byte gUnknown_2023D6B +_0802AEA4: .4byte gUnknown_2023D74 + thumb_func_end sub_802AE24 + + thumb_func_start sub_802AEA8 +sub_802AEA8: @ 802AEA8 + push {r4,lr} + bl sub_8044EC8 + movs r4, 0xFF + ands r4, r0 + cmp r4, 0x65 + bgt _0802AEC4 + ldr r1, _0802AEC0 @ =gUnknown_2023F50 + movs r0, 0x28 + strh r0, [r1] + b _0802AF06 + .align 2, 0 +_0802AEC0: .4byte gUnknown_2023F50 +_0802AEC4: + cmp r4, 0xB1 + bgt _0802AED4 + ldr r1, _0802AED0 @ =gUnknown_2023F50 + movs r0, 0x50 + strh r0, [r1] + b _0802AF06 + .align 2, 0 +_0802AED0: .4byte gUnknown_2023F50 +_0802AED4: + cmp r4, 0xCB + bgt _0802AEE4 + ldr r1, _0802AEE0 @ =gUnknown_2023F50 + movs r0, 0x78 + strh r0, [r1] + b _0802AF06 + .align 2, 0 +_0802AEE0: .4byte gUnknown_2023F50 +_0802AEE4: + ldr r3, _0802AF10 @ =gUnknown_2023D50 + ldr r2, _0802AF14 @ =gUnknown_2023BE4 + ldr r0, _0802AF18 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2C] + lsrs r0, 2 + str r0, [r3] + cmp r0, 0 + bne _0802AF00 + movs r0, 0x1 + str r0, [r3] +_0802AF00: + ldr r0, [r3] + negs r0, r0 + str r0, [r3] +_0802AF06: + cmp r4, 0xCB + bgt _0802AF24 + ldr r1, _0802AF1C @ =gUnknown_2023D74 + ldr r0, _0802AF20 @ =gUnknown_81D6930 + b _0802AF5E + .align 2, 0 +_0802AF10: .4byte gUnknown_2023D50 +_0802AF14: .4byte gUnknown_2023BE4 +_0802AF18: .4byte gUnknown_2023D6C +_0802AF1C: .4byte gUnknown_2023D74 +_0802AF20: .4byte gUnknown_81D6930 +_0802AF24: + ldr r2, _0802AF40 @ =gUnknown_2023BE4 + ldr r0, _0802AF44 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r1, [r0, 0x2C] + ldrh r0, [r0, 0x28] + cmp r1, r0 + bne _0802AF50 + ldr r1, _0802AF48 @ =gUnknown_2023D74 + ldr r0, _0802AF4C @ =gUnknown_81D7DD1 + b _0802AF5E + .align 2, 0 +_0802AF40: .4byte gUnknown_2023BE4 +_0802AF44: .4byte gUnknown_2023D6C +_0802AF48: .4byte gUnknown_2023D74 +_0802AF4C: .4byte gUnknown_81D7DD1 +_0802AF50: + ldr r2, _0802AF68 @ =gUnknown_2023DCC + ldrb r1, [r2] + movs r0, 0xF7 + ands r0, r1 + strb r0, [r2] + ldr r1, _0802AF6C @ =gUnknown_2023D74 + ldr r0, _0802AF70 @ =gUnknown_81D7DB7 +_0802AF5E: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AF68: .4byte gUnknown_2023DCC +_0802AF6C: .4byte gUnknown_2023D74 +_0802AF70: .4byte gUnknown_81D7DB7 + thumb_func_end sub_802AEA8 + + thumb_func_start sub_802AF74 +sub_802AF74: @ 802AF74 + push {r4-r7,lr} + ldr r7, _0802AFA8 @ =gUnknown_2023D6B + ldrb r0, [r7] + bl sub_80751D8 + ldr r4, _0802AFAC @ =gUnknown_2023DDE + movs r6, 0x1 + adds r1, r6, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r1, [r1] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0802AFB8 + ldr r2, _0802AFB0 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802AFB4 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + b _0802B000 + .align 2, 0 +_0802AFA8: .4byte gUnknown_2023D6B +_0802AFAC: .4byte gUnknown_2023DDE +_0802AFB0: .4byte gUnknown_2023DCC +_0802AFB4: .4byte gUnknown_2023E82 +_0802AFB8: + ldrb r0, [r7] + bl sub_80751D8 + adds r1, r6, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r0, [r1] + movs r2, 0x20 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r7] + bl sub_80751D8 + ldr r5, _0802B010 @ =gUnknown_2023DE4 + adds r1, r6, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r4, 0x5 + strb r4, [r0, 0x6] + ldrb r0, [r7] + bl sub_80751D8 + adds r1, r6, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r7] + strb r1, [r0, 0x7] + ldr r0, _0802B014 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] +_0802B000: + ldr r1, _0802B018 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B010: .4byte gUnknown_2023DE4 +_0802B014: .4byte gUnknown_2023E82 +_0802B018: .4byte gUnknown_2023D74 + thumb_func_end sub_802AF74 + + thumb_func_start sub_802B01C +sub_802B01C: @ 802B01C + push {r4-r7,lr} + mov r7, r8 + push {r7} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x4 + bgt _0802B048 + ldr r1, _0802B044 @ =gUnknown_2023F50 + movs r0, 0xA + strh r0, [r1] + movs r3, 0x4 + b _0802B0B4 + .align 2, 0 +_0802B044: .4byte gUnknown_2023F50 +_0802B048: + cmp r3, 0xE + bgt _0802B05C + ldr r1, _0802B058 @ =gUnknown_2023F50 + movs r0, 0x1E + strh r0, [r1] + movs r3, 0x5 + b _0802B0B4 + .align 2, 0 +_0802B058: .4byte gUnknown_2023F50 +_0802B05C: + cmp r3, 0x22 + bgt _0802B070 + ldr r1, _0802B06C @ =gUnknown_2023F50 + movs r0, 0x32 + strh r0, [r1] + movs r3, 0x6 + b _0802B0B4 + .align 2, 0 +_0802B06C: .4byte gUnknown_2023F50 +_0802B070: + cmp r3, 0x40 + bgt _0802B084 + ldr r1, _0802B080 @ =gUnknown_2023F50 + movs r0, 0x46 + strh r0, [r1] + movs r3, 0x7 + b _0802B0B4 + .align 2, 0 +_0802B080: .4byte gUnknown_2023F50 +_0802B084: + cmp r3, 0x54 + bgt _0802B098 + ldr r1, _0802B094 @ =gUnknown_2023F50 + movs r0, 0x5A + strh r0, [r1] + movs r3, 0x8 + b _0802B0B4 + .align 2, 0 +_0802B094: .4byte gUnknown_2023F50 +_0802B098: + cmp r3, 0x5E + bgt _0802B0AC + ldr r1, _0802B0A8 @ =gUnknown_2023F50 + movs r0, 0x6E + strh r0, [r1] + movs r3, 0x9 + b _0802B0B4 + .align 2, 0 +_0802B0A8: .4byte gUnknown_2023F50 +_0802B0AC: + ldr r1, _0802B120 @ =gUnknown_2023F50 + movs r0, 0x96 + strh r0, [r1] + movs r3, 0xA +_0802B0B4: + ldr r1, _0802B124 @ =gUnknown_2022AB8 + movs r2, 0 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + movs r0, 0x2 + strb r0, [r1, 0x3] + strb r3, [r1, 0x4] + movs r0, 0xFF + strb r0, [r1, 0x5] + ldr r1, _0802B128 @ =gUnknown_2023D6C + strb r2, [r1] + ldr r0, _0802B12C @ =gUnknown_2023BCC + ldrb r3, [r0] + adds r6, r1, 0 + ldr r0, _0802B130 @ =gUnknown_2023D74 + mov r8, r0 + cmp r2, r3 + bcs _0802B10C + adds r4, r6, 0 + ldr r0, _0802B134 @ =gUnknown_2023D6B + ldrb r5, [r0] + ldr r1, _0802B138 @ =gUnknown_825E45C + mov r12, r1 + ldr r7, _0802B13C @ =gUnknown_2023D70 +_0802B0EA: + ldrb r2, [r4] + cmp r2, r5 + beq _0802B100 + ldrb r0, [r7] + ldrb r1, [r6] + lsls r1, 2 + add r1, r12 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + beq _0802B10C +_0802B100: + adds r0, r2, 0x1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r3 + bcc _0802B0EA +_0802B10C: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B120: .4byte gUnknown_2023F50 +_0802B124: .4byte gUnknown_2022AB8 +_0802B128: .4byte gUnknown_2023D6C +_0802B12C: .4byte gUnknown_2023BCC +_0802B130: .4byte gUnknown_2023D74 +_0802B134: .4byte gUnknown_2023D6B +_0802B138: .4byte gUnknown_825E45C +_0802B13C: .4byte gUnknown_2023D70 + thumb_func_end sub_802B01C + + thumb_func_start sub_802B140 +sub_802B140: @ 802B140 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _0802B164 @ =gUnknown_2023D72 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0802B170 + ldr r0, _0802B168 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0802B16C + movs r0, 0x1 + b _0802B18A + .align 2, 0 +_0802B164: .4byte gUnknown_2023D72 +_0802B168: .4byte gUnknown_2023D6B +_0802B16C: + movs r0, 0 + b _0802B18A +_0802B170: + ldr r0, _0802B184 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0802B188 + movs r0, 0x3 + b _0802B18A + .align 2, 0 +_0802B184: .4byte gUnknown_2023D6B +_0802B188: + movs r0, 0x2 +_0802B18A: + bl sub_80751E8 + ldr r1, _0802B264 @ =gUnknown_2023D6C + strb r0, [r1] + ldr r0, _0802B268 @ =gUnknown_2023D7C + ldr r1, _0802B264 @ =gUnknown_2023D6C + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, 0 + beq _0802B1A2 + b _0802B2A8 +_0802B1A2: + ldr r5, _0802B26C @ =gUnknown_2023D6B + ldr r0, _0802B270 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, r3, r1 + ldrb r2, [r5] + ldrb r1, [r1, 0xC] + cmp r2, r1 + bne _0802B2A8 + ldr r4, _0802B274 @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r0, r3, 0 + muls r0, r2 + adds r1, r4, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x27 + ands r0, r1 + cmp r0, 0 + bne _0802B2A8 + ldrb r0, [r5] + muls r0, r2 + adds r0, r4 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0802B2A8 + ldr r0, _0802B278 @ =gUnknown_2023E0C + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x18] + lsls r0, 31 + cmp r0, 0 + bne _0802B2A8 + ldr r0, _0802B27C @ =gUnknown_2023DC4 + lsls r1, r3, 1 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0xE4 + bne _0802B2A8 + movs r1, 0 + ldr r0, _0802B280 @ =gUnknown_2023BCC + ldr r2, _0802B284 @ =gUnknown_2023D4A + mov r8, r2 + ldr r7, _0802B288 @ =gUnknown_2023D48 + mov r10, r7 + ldr r2, _0802B28C @ =gUnknown_2023D49 + mov r9, r2 + ldr r7, _0802B290 @ =gUnknown_2023DD0 + mov r12, r7 + ldrb r2, [r0] + cmp r1, r2 + bge _0802B22E + ldr r6, _0802B294 @ =gUnknown_2023BDE + ldr r5, _0802B264 @ =gUnknown_2023D6C + ldr r4, _0802B298 @ =gUnknown_2023BDA + movs r3, 0xB + adds r2, r0, 0 +_0802B218: + adds r0, r1, r6 + ldrb r0, [r0] + ldrb r7, [r5] + cmp r0, r7 + bne _0802B226 + adds r0, r1, r4 + strb r3, [r0] +_0802B226: + adds r1, 0x1 + ldrb r0, [r2] + cmp r1, r0 + blt _0802B218 +_0802B22E: + movs r0, 0xE4 + mov r1, r8 + strh r0, [r1] + ldr r2, _0802B264 @ =gUnknown_2023D6C + ldrb r0, [r2] + ldr r7, _0802B270 @ =gUnknown_2023FE8 + ldr r1, [r7] + adds r0, r1 + adds r0, 0x80 + ldrb r0, [r0] + mov r1, r9 + strb r0, [r1] + mov r2, r10 + strb r0, [r2] + ldr r7, _0802B29C @ =gUnknown_2023D74 + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + movs r0, 0x1 + ldr r1, _0802B2A0 @ =gUnknown_2023FC4 + strb r0, [r1, 0x18] + mov r2, r12 + ldr r0, [r2] + ldr r1, _0802B2A4 @ =0xfffffbff + ands r0, r1 + str r0, [r2] + b _0802B2C2 + .align 2, 0 +_0802B264: .4byte gUnknown_2023D6C +_0802B268: .4byte gUnknown_2023D7C +_0802B26C: .4byte gUnknown_2023D6B +_0802B270: .4byte gUnknown_2023FE8 +_0802B274: .4byte gUnknown_2023BE4 +_0802B278: .4byte gUnknown_2023E0C +_0802B27C: .4byte gUnknown_2023DC4 +_0802B280: .4byte gUnknown_2023BCC +_0802B284: .4byte gUnknown_2023D4A +_0802B288: .4byte gUnknown_2023D48 +_0802B28C: .4byte gUnknown_2023D49 +_0802B290: .4byte gUnknown_2023DD0 +_0802B294: .4byte gUnknown_2023BDE +_0802B298: .4byte gUnknown_2023BDA +_0802B29C: .4byte gUnknown_2023D74 +_0802B2A0: .4byte gUnknown_2023FC4 +_0802B2A4: .4byte 0xfffffbff +_0802B2A8: + ldr r3, _0802B2D0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802B2C2: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B2D0: .4byte gUnknown_2023D74 + thumb_func_end sub_802B140 + + thumb_func_start sub_802B2D4 +sub_802B2D4: @ 802B2D4 + push {lr} + ldr r2, _0802B2F4 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0802B300 + ldr r2, _0802B2F8 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802B2FC @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _0802B312 + .align 2, 0 +_0802B2F4: .4byte gUnknown_2023F1C +_0802B2F8: .4byte gUnknown_2023DCC +_0802B2FC: .4byte gUnknown_2023E82 +_0802B300: + movs r0, 0x20 + strh r0, [r2] + ldr r1, _0802B320 @ =gUnknown_2023E82 + movs r0, 0x4 + strb r0, [r1, 0x5] + ldr r0, _0802B324 @ =gUnknown_2023F20 + adds r0, 0x28 + movs r1, 0x5 + strb r1, [r0] +_0802B312: + ldr r1, _0802B328 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802B320: .4byte gUnknown_2023E82 +_0802B324: .4byte gUnknown_2023F20 +_0802B328: .4byte gUnknown_2023D74 + thumb_func_end sub_802B2D4 + + thumb_func_start sub_802B32C +sub_802B32C: @ 802B32C + push {r4,r5,lr} + ldr r5, _0802B378 @ =gUnknown_2023BE4 + ldr r4, _0802B37C @ =gUnknown_2023D6B + ldrb r0, [r4] + movs r3, 0x58 + muls r0, r3 + adds r2, r0, r5 + ldrh r0, [r2, 0x2C] + lsrs r1, r0, 1 + cmp r1, 0 + bne _0802B344 + movs r1, 0x1 +_0802B344: + movs r0, 0x19 + ldrsb r0, [r2, r0] + cmp r0, 0xB + bgt _0802B388 + ldrh r0, [r2, 0x28] + cmp r0, r1 + bls _0802B388 + movs r0, 0xC + strb r0, [r2, 0x19] + ldr r1, _0802B380 @ =gUnknown_2023D50 + ldrb r0, [r4] + muls r0, r3 + adds r0, r5 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _0802B36C + movs r0, 0x1 + str r0, [r1] +_0802B36C: + ldr r1, _0802B384 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802B3A2 + .align 2, 0 +_0802B378: .4byte gUnknown_2023BE4 +_0802B37C: .4byte gUnknown_2023D6B +_0802B380: .4byte gUnknown_2023D50 +_0802B384: .4byte gUnknown_2023D74 +_0802B388: + ldr r3, _0802B3A8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802B3A2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802B3A8: .4byte gUnknown_2023D74 + thumb_func_end sub_802B32C + + thumb_func_start sub_802B3AC +sub_802B3AC: @ 802B3AC + push {r4-r7,lr} + movs r2, 0 + ldr r7, _0802B3E4 @ =gUnknown_2023D74 + ldr r6, _0802B3E8 @ =gUnknown_2023D6B + movs r4, 0x58 + ldr r3, _0802B3EC @ =gUnknown_2023BFC + ldr r5, _0802B3F0 @ =gUnknown_2023D6C +_0802B3BA: + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r4 + adds r1, r2, r1 + adds r1, r3 + ldrb r0, [r5] + muls r0, r4 + adds r0, r2, r0 + adds r0, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x7 + ble _0802B3BA + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B3E4: .4byte gUnknown_2023D74 +_0802B3E8: .4byte gUnknown_2023D6B +_0802B3EC: .4byte gUnknown_2023BFC +_0802B3F0: .4byte gUnknown_2023D6C + thumb_func_end sub_802B3AC + + thumb_func_start sub_802B3F4 +sub_802B3F4: @ 802B3F4 + push {r4-r6,lr} + ldr r1, _0802B464 @ =gUnknown_2023BE4 + ldr r5, _0802B468 @ =gUnknown_2023D6B + ldrb r2, [r5] + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + adds r4, r1, 0 + adds r4, 0x50 + adds r0, r4 + ldr r0, [r0] + movs r1, 0xE0 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _0802B488 + ldr r1, _0802B46C @ =gUnknown_2023FC4 + ldr r3, _0802B470 @ =gUnknown_2023D6C + ldrb r0, [r3] + strb r0, [r1, 0x17] + ldrb r0, [r5] + adds r1, r0, 0 + muls r1, r6 + adds r1, r4 + ldr r0, [r1] + ldr r2, _0802B474 @ =0xffff1fff + ands r0, r2 + str r0, [r1] + ldrb r0, [r5] + ldr r1, _0802B478 @ =gUnknown_2023FE8 + ldr r2, [r1] + adds r0, r2 + ldrb r0, [r0, 0x14] + strb r0, [r3] + ldr r1, _0802B47C @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldrb r0, [r5] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0, 0x4] + strb r0, [r1, 0x2] + ldrb r0, [r5] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0, 0x5] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + bl sub_8017544 + ldr r1, _0802B480 @ =gUnknown_2023D74 + ldr r0, _0802B484 @ =gUnknown_81D8DF3 + b _0802B532 + .align 2, 0 +_0802B464: .4byte gUnknown_2023BE4 +_0802B468: .4byte gUnknown_2023D6B +_0802B46C: .4byte gUnknown_2023FC4 +_0802B470: .4byte gUnknown_2023D6C +_0802B474: .4byte 0xffff1fff +_0802B478: .4byte gUnknown_2023FE8 +_0802B47C: .4byte gUnknown_2022AB8 +_0802B480: .4byte gUnknown_2023D74 +_0802B484: .4byte gUnknown_81D8DF3 +_0802B488: + ldr r4, _0802B4BC @ =gUnknown_2023DFC + lsls r0, r2, 2 + adds r3, r0, r4 + ldr r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0802B4C8 + movs r0, 0x5 + negs r0, r0 + ands r1, r0 + str r1, [r3] + ldrb r1, [r5] + lsls r1, 2 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x4 + negs r2, r2 + ands r0, r2 + str r0, [r1] + bl sub_8017544 + ldr r1, _0802B4C0 @ =gUnknown_2023D74 + ldr r0, _0802B4C4 @ =gUnknown_81D8E04 + b _0802B532 + .align 2, 0 +_0802B4BC: .4byte gUnknown_2023DFC +_0802B4C0: .4byte gUnknown_2023D74 +_0802B4C4: .4byte gUnknown_81D8E04 +_0802B4C8: + adds r0, r2, 0 + bl sub_80751C4 + ldr r4, _0802B518 @ =gUnknown_2023DDE + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802B52C + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrh r2, [r0] + ldr r1, _0802B51C @ =0x0000ffef + ands r1, r2 + movs r4, 0 + strh r1, [r0] + ldrb r0, [r5] + bl sub_80751C4 + ldr r2, _0802B520 @ =gUnknown_2023DE4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + strb r4, [r1, 0xA] + bl sub_8017544 + ldr r1, _0802B524 @ =gUnknown_2023D74 + ldr r0, _0802B528 @ =gUnknown_81D8E0B + b _0802B532 + .align 2, 0 +_0802B518: .4byte gUnknown_2023DDE +_0802B51C: .4byte 0x0000ffef +_0802B520: .4byte gUnknown_2023DE4 +_0802B524: .4byte gUnknown_2023D74 +_0802B528: .4byte gUnknown_81D8E0B +_0802B52C: + ldr r1, _0802B53C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 +_0802B532: + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802B53C: .4byte gUnknown_2023D74 + thumb_func_end sub_802B3F4 + + thumb_func_start sub_802B540 +sub_802B540: @ 802B540 + ldr r1, _0802B564 @ =gUnknown_2023BE4 + ldr r0, _0802B568 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 23 + orrs r0, r1 + str r0, [r2] + ldr r1, _0802B56C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802B564: .4byte gUnknown_2023BE4 +_0802B568: .4byte gUnknown_2023D6B +_0802B56C: .4byte gUnknown_2023D74 + thumb_func_end sub_802B540 + + thumb_func_start sub_802B570 +sub_802B570: @ 802B570 + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _0802B5DC @ =gUnknown_2023D6C + ldr r5, _0802B5E0 @ =gUnknown_2023D6B + ldrb r0, [r5] + strb r0, [r1] + ldr r7, _0802B5E4 @ =gUnknown_2023BE4 + ldrb r0, [r5] + movs r6, 0x58 + muls r0, r6 + adds r0, r7 + ldrh r1, [r0, 0x28] + ldrh r0, [r0, 0x2C] + cmp r1, r0 + beq _0802B650 + ldr r4, _0802B5E8 @ =gUnknown_2023F1C + ldrh r0, [r4] + cmp r0, 0 + beq _0802B5C2 + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0802B5C2 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0802B5F0 +_0802B5C2: + ldr r3, _0802B5EC @ =gUnknown_2023D50 + ldr r2, _0802B5E4 @ =gUnknown_2023BE4 + ldr r0, _0802B5E0 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r3] + adds r1, r3, 0 + b _0802B62A + .align 2, 0 +_0802B5DC: .4byte gUnknown_2023D6C +_0802B5E0: .4byte gUnknown_2023D6B +_0802B5E4: .4byte gUnknown_2023BE4 +_0802B5E8: .4byte gUnknown_2023F1C +_0802B5EC: .4byte gUnknown_2023D50 +_0802B5F0: + ldrh r1, [r4] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0802B61C + ldr r4, _0802B618 @ =gUnknown_2023D50 + ldrb r0, [r5] + muls r0, r6 + adds r0, r7 + ldrh r1, [r0, 0x2C] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + movs r1, 0x1E + bl __divsi3 + str r0, [r4] + adds r1, r4, 0 + b _0802B62A + .align 2, 0 +_0802B618: .4byte gUnknown_2023D50 +_0802B61C: + ldr r1, _0802B648 @ =gUnknown_2023D50 + ldrb r0, [r5] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0, 0x2C] + lsrs r0, 2 + str r0, [r1] +_0802B62A: + adds r2, r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _0802B636 + movs r0, 0x1 + str r0, [r2] +_0802B636: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + ldr r1, _0802B64C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802B66A + .align 2, 0 +_0802B648: .4byte gUnknown_2023D50 +_0802B64C: .4byte gUnknown_2023D74 +_0802B650: + ldr r3, _0802B674 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802B66A: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B674: .4byte gUnknown_2023D74 + thumb_func_end sub_802B570 + + thumb_func_start sub_802B678 +sub_802B678: @ 802B678 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r2, _0802B760 @ =gUnknown_2023BE4 + ldr r0, _0802B764 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrb r0, [r1, 0x14] + mov r9, r0 + mov r7, r9 + lsls r7, 27 + adds r0, r7, 0 + lsrs r0, 27 + mov r9, r0 + movs r4, 0x2 + mov r2, r9 + ands r2, r4 + asrs r2, 1 + ldrh r7, [r1, 0x14] + mov r8, r7 + mov r0, r8 + lsls r0, 22 + lsrs r0, 27 + mov r8, r0 + ands r0, r4 + orrs r2, r0 + ldrb r6, [r1, 0x15] + lsls r6, 25 + lsrs r6, 27 + adds r0, r6, 0 + ands r0, r4 + lsls r0, 1 + orrs r2, r0 + ldr r5, [r1, 0x14] + lsls r5, 12 + lsrs r5, 27 + adds r0, r5, 0 + ands r0, r4 + lsls r0, 2 + orrs r2, r0 + ldrh r3, [r1, 0x16] + lsls r3, 23 + lsrs r3, 27 + adds r0, r3, 0 + ands r0, r4 + lsls r0, 3 + orrs r2, r0 + ldrb r1, [r1, 0x17] + lsls r1, 26 + lsrs r1, 27 + adds r0, r1, 0 + ands r0, r4 + lsls r0, 4 + orrs r2, r0 + movs r0, 0x1 + adds r4, r0, 0 + mov r7, r9 + ands r4, r7 + mov r7, r8 + ands r7, r0 + lsls r7, 1 + orrs r4, r7 + ands r6, r0 + lsls r6, 2 + orrs r4, r6 + ands r5, r0 + lsls r5, 3 + orrs r4, r5 + ands r3, r0 + lsls r3, 4 + orrs r4, r3 + ands r1, r0 + lsls r1, 5 + orrs r4, r1 + ldr r5, _0802B768 @ =gUnknown_2023F50 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + movs r1, 0x3F + bl __divsi3 + adds r0, 0x1E + strh r0, [r5] + ldr r6, _0802B76C @ =gUnknown_2023FE8 + ldr r5, [r6] + lsls r0, r4, 4 + subs r0, r4 + movs r1, 0x3F + bl __divsi3 + adds r0, 0x1 + strb r0, [r5, 0x13] + ldr r1, [r6] + ldrb r0, [r1, 0x13] + cmp r0, 0x8 + bls _0802B742 + adds r0, 0x1 + strb r0, [r1, 0x13] +_0802B742: + ldr r2, [r6] + ldrb r0, [r2, 0x13] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r2, 0x13] + ldr r1, _0802B770 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B760: .4byte gUnknown_2023BE4 +_0802B764: .4byte gUnknown_2023D6B +_0802B768: .4byte gUnknown_2023F50 +_0802B76C: .4byte gUnknown_2023FE8 +_0802B770: .4byte gUnknown_2023D74 + thumb_func_end sub_802B678 + + thumb_func_start sub_802B774 +sub_802B774: @ 802B774 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0802B7D0 @ =gUnknown_2023D6C + movs r1, 0 + strb r1, [r0] + ldr r1, _0802B7D4 @ =gUnknown_2023BCC + ldrb r1, [r1] + adds r6, r0, 0 + ldr r0, _0802B7D8 @ =gUnknown_2023D74 + mov r8, r0 + cmp r1, 0 + beq _0802B7BE + adds r3, r6, 0 + ldr r0, _0802B7DC @ =gUnknown_2023D6B + ldrb r5, [r0] + ldr r0, _0802B7E0 @ =gUnknown_825E45C + mov r12, r0 + adds r4, r1, 0 + ldr r7, _0802B7E4 @ =gUnknown_2023D70 +_0802B79C: + ldrb r2, [r3] + cmp r2, r5 + beq _0802B7B2 + ldrb r0, [r7] + ldrb r1, [r6] + lsls r1, 2 + add r1, r12 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + beq _0802B7BE +_0802B7B2: + adds r0, r2, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcc _0802B79C +_0802B7BE: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B7D0: .4byte gUnknown_2023D6C +_0802B7D4: .4byte gUnknown_2023BCC +_0802B7D8: .4byte gUnknown_2023D74 +_0802B7DC: .4byte gUnknown_2023D6B +_0802B7E0: .4byte gUnknown_825E45C +_0802B7E4: .4byte gUnknown_2023D70 + thumb_func_end sub_802B774 + + thumb_func_start sub_802B7E8 +sub_802B7E8: @ 802B7E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r0, _0802B820 @ =gUnknown_2023F20 + mov r8, r0 + ldr r7, _0802B824 @ =gUnknown_2023D6C + ldrb r1, [r7] + adds r0, r1, r0 + ldrb r6, [r0] + cmp r6, 0 + beq _0802B82C + ldr r3, _0802B828 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802B8F6 + .align 2, 0 +_0802B820: .4byte gUnknown_2023F20 +_0802B824: .4byte gUnknown_2023D6C +_0802B828: .4byte gUnknown_2023D74 +_0802B82C: + lsls r1, 1 + mov r0, r8 + adds r0, 0x18 + adds r1, r0 + ldr r2, _0802B8CC @ =gUnknown_2023D4A + mov r9, r2 + ldrh r0, [r2] + strh r0, [r1] + mov r0, r8 + adds r0, 0x4 + ldrb r4, [r7] + adds r0, r4 + ldr r5, _0802B8D0 @ =gUnknown_2023D6B + ldrb r1, [r5] + strb r1, [r0] + ldrb r0, [r7] + add r0, r8 + movs r1, 0x3 + strb r1, [r0] + ldr r4, _0802B8D4 @ =gUnknown_2023DDE + ldrb r0, [r7] + bl sub_80751D8 + movs r1, 0x1 + mov r10, r1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + ldr r2, _0802B8D8 @ =gUnknown_2023BE4 + adds r0, r2 + ldrb r1, [r7] + muls r1, r4 + adds r1, r2 + mov r4, r9 + ldrh r2, [r4] + str r6, [sp] + str r6, [sp, 0x4] + ldrb r4, [r5] + str r4, [sp, 0x8] + ldrb r4, [r7] + str r4, [sp, 0xC] + bl sub_803ECEC + ldrb r1, [r7] + lsls r1, 2 + mov r2, r8 + adds r2, 0x8 + adds r1, r2 + str r0, [r1] + ldr r1, _0802B8DC @ =gUnknown_2023E8C + ldrb r0, [r5] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _0802B8BA + ldrb r4, [r7] + lsls r4, 2 + adds r4, r2 + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0802B8BA: + mov r0, r9 + ldrh r1, [r0] + ldr r0, _0802B8E0 @ =0x00000161 + cmp r1, r0 + bne _0802B8E8 + ldr r0, _0802B8E4 @ =gUnknown_2023E82 + mov r1, r10 + strb r1, [r0, 0x5] + b _0802B8EE + .align 2, 0 +_0802B8CC: .4byte gUnknown_2023D4A +_0802B8D0: .4byte gUnknown_2023D6B +_0802B8D4: .4byte gUnknown_2023DDE +_0802B8D8: .4byte gUnknown_2023BE4 +_0802B8DC: .4byte gUnknown_2023E8C +_0802B8E0: .4byte 0x00000161 +_0802B8E4: .4byte gUnknown_2023E82 +_0802B8E8: + ldr r1, _0802B908 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] +_0802B8EE: + ldr r1, _0802B90C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802B8F6: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B908: .4byte gUnknown_2023E82 +_0802B90C: .4byte gUnknown_2023D74 + thumb_func_end sub_802B7E8 + + thumb_func_start sub_802B910 +sub_802B910: @ 802B910 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0802B954 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + ldr r7, _0802B958 @ =gUnknown_202402C + cmp r0, 0 + bne _0802B92A + ldr r7, _0802B95C @ =gUnknown_2024284 +_0802B92A: + ldr r2, _0802B960 @ =gUnknown_2023BE4 + ldr r0, _0802B964 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0802B96C + ldr r3, _0802B968 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + b _0802BB08 + .align 2, 0 +_0802B954: .4byte gUnknown_2023D6B +_0802B958: .4byte gUnknown_202402C +_0802B95C: .4byte gUnknown_2024284 +_0802B960: .4byte gUnknown_2023BE4 +_0802B964: .4byte gUnknown_2023D6C +_0802B968: .4byte gUnknown_2023D74 +_0802B96C: + ldr r6, _0802BAA8 @ =gUnknown_2023E82 + ldrb r0, [r6] + mov r8, r0 + cmp r0, 0x5 + bls _0802B978 + b _0802BAD4 +_0802B978: + adds r4, r6, 0 + movs r5, 0x64 +_0802B97C: + ldrb r0, [r4] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0802B9C0 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _0802B9C0 + ldrb r0, [r4] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0802B9C0 + ldrb r0, [r4] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x37 + bl sub_803FBE8 + cmp r0, 0 + beq _0802B9D0 +_0802B9C0: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + adds r6, r4, 0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bls _0802B97C +_0802B9D0: + ldr r1, _0802BAA8 @ =gUnknown_2023E82 + mov r9, r1 + ldrb r2, [r1] + cmp r2, 0x5 + bhi _0802BAD4 + ldr r1, _0802BAAC @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r6, _0802BAB0 @ =gUnknown_2023D6B + ldrb r0, [r6] + strb r0, [r1, 0x2] + strb r2, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _0802BAB4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x9 + str r0, [r1] + ldr r2, _0802BAB8 @ =gUnknown_2023D50 + mov r8, r2 + ldr r5, _0802BABC @ =gUnknown_8254784 + mov r1, r9 + ldrb r0, [r1] + movs r4, 0x64 + muls r0, r4 + adds r0, r7, r0 + movs r1, 0xB + bl sub_803FBE8 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r3, [r1, 0x1] + mov r2, r8 + str r3, [r2] + ldr r2, _0802BAC0 @ =gUnknown_8250C04 + ldr r0, _0802BAC4 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + muls r0, r3 + mov r1, r8 + str r0, [r1] + mov r2, r9 + ldrb r0, [r2] + muls r0, r4 + adds r0, r7, r0 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 1 + movs r1, 0x5 + bl __udivsi3 + adds r0, 0x2 + mov r2, r8 + ldr r1, [r2] + muls r0, r1 + str r0, [r2] + ldr r3, _0802BAC8 @ =gUnknown_2023BE4 + ldr r1, _0802BACC @ =gUnknown_2023D6C + ldrb r2, [r1] + movs r1, 0x58 + muls r1, r2 + adds r1, r3 + ldrh r2, [r1] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r5 + ldrb r1, [r1, 0x2] + bl __divsi3 + mov r1, r8 + str r0, [r1] + movs r1, 0x32 + bl __divsi3 + adds r2, r0, 0x2 + mov r0, r8 + str r2, [r0] + ldr r1, _0802BAD0 @ =gUnknown_2023E8C + ldrb r0, [r6] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _0802BA9C + lsls r0, r2, 4 + subs r0, r2 + movs r1, 0xA + bl __divsi3 + mov r1, r8 + str r0, [r1] +_0802BA9C: + mov r2, r9 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + b _0802BB0E + .align 2, 0 +_0802BAA8: .4byte gUnknown_2023E82 +_0802BAAC: .4byte gUnknown_2022AB8 +_0802BAB0: .4byte gUnknown_2023D6B +_0802BAB4: .4byte gUnknown_2023D74 +_0802BAB8: .4byte gUnknown_2023D50 +_0802BABC: .4byte gUnknown_8254784 +_0802BAC0: .4byte gUnknown_8250C04 +_0802BAC4: .4byte gUnknown_2023D4A +_0802BAC8: .4byte gUnknown_2023BE4 +_0802BACC: .4byte gUnknown_2023D6C +_0802BAD0: .4byte gUnknown_2023E8C +_0802BAD4: + mov r0, r8 + cmp r0, 0 + beq _0802BAF4 + ldr r3, _0802BAF0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + b _0802BB08 + .align 2, 0 +_0802BAF0: .4byte gUnknown_2023D74 +_0802BAF4: + ldr r3, _0802BB1C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x8] +_0802BB08: + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802BB0E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802BB1C: .4byte gUnknown_2023D74 + thumb_func_end sub_802B910 + + thumb_func_start sub_802BB20 +sub_802BB20: @ 802BB20 + push {lr} + ldr r0, _0802BB34 @ =gUnknown_2023D4A + ldrh r1, [r0] + cmp r1, 0x5B + beq _0802BB60 + cmp r1, 0x5B + bgt _0802BB38 + cmp r1, 0x13 + beq _0802BB44 + b _0802BB8C + .align 2, 0 +_0802BB34: .4byte gUnknown_2023D4A +_0802BB38: + ldr r0, _0802BB54 @ =0x00000123 + cmp r1, r0 + beq _0802BB78 + adds r0, 0x31 + cmp r1, r0 + bne _0802BB8C +_0802BB44: + ldr r2, _0802BB58 @ =gUnknown_2023DFC + ldr r0, _0802BB5C @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x40 + b _0802BB88 + .align 2, 0 +_0802BB54: .4byte 0x00000123 +_0802BB58: .4byte gUnknown_2023DFC +_0802BB5C: .4byte gUnknown_2023D6B +_0802BB60: + ldr r2, _0802BB70 @ =gUnknown_2023DFC + ldr r0, _0802BB74 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x80 + b _0802BB88 + .align 2, 0 +_0802BB70: .4byte gUnknown_2023DFC +_0802BB74: .4byte gUnknown_2023D6B +_0802BB78: + ldr r2, _0802BB98 @ =gUnknown_2023DFC + ldr r0, _0802BB9C @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 11 +_0802BB88: + orrs r0, r2 + str r0, [r1] +_0802BB8C: + ldr r1, _0802BBA0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802BB98: .4byte gUnknown_2023DFC +_0802BB9C: .4byte gUnknown_2023D6B +_0802BBA0: .4byte gUnknown_2023D74 + thumb_func_end sub_802BB20 + + thumb_func_start sub_802BBA4 +sub_802BBA4: @ 802BBA4 + push {lr} + ldr r0, _0802BBB8 @ =gUnknown_2023D4A + ldrh r1, [r0] + cmp r1, 0x5B + beq _0802BBE8 + cmp r1, 0x5B + bgt _0802BBBC + cmp r1, 0x13 + beq _0802BBC8 + b _0802BC16 + .align 2, 0 +_0802BBB8: .4byte gUnknown_2023D4A +_0802BBBC: + ldr r0, _0802BBDC @ =0x00000123 + cmp r1, r0 + beq _0802BC04 + adds r0, 0x31 + cmp r1, r0 + bne _0802BC16 +_0802BBC8: + ldr r2, _0802BBE0 @ =gUnknown_2023DFC + ldr r0, _0802BBE4 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x41 + negs r2, r2 + b _0802BC12 + .align 2, 0 +_0802BBDC: .4byte 0x00000123 +_0802BBE0: .4byte gUnknown_2023DFC +_0802BBE4: .4byte gUnknown_2023D6B +_0802BBE8: + ldr r2, _0802BBFC @ =gUnknown_2023DFC + ldr r0, _0802BC00 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x81 + negs r2, r2 + b _0802BC12 + .align 2, 0 +_0802BBFC: .4byte gUnknown_2023DFC +_0802BC00: .4byte gUnknown_2023D6B +_0802BC04: + ldr r2, _0802BC24 @ =gUnknown_2023DFC + ldr r0, _0802BC28 @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + ldr r2, _0802BC2C @ =0xfffbffff +_0802BC12: + ands r0, r2 + str r0, [r1] +_0802BC16: + ldr r1, _0802BC30 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802BC24: .4byte gUnknown_2023DFC +_0802BC28: .4byte gUnknown_2023D6B +_0802BC2C: .4byte 0xfffbffff +_0802BC30: .4byte gUnknown_2023D74 + thumb_func_end sub_802BBA4 + + thumb_func_start sub_802BC34 +sub_802BC34: @ 802BC34 + push {lr} + ldr r0, _0802BC64 @ =gUnknown_2023DD0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _0802BC58 + ldr r2, _0802BC68 @ =gUnknown_2023DFC + ldr r0, _0802BC6C @ =gUnknown_2023D6B + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 1 + orrs r0, r2 + str r0, [r1] +_0802BC58: + ldr r1, _0802BC70 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802BC64: .4byte gUnknown_2023DD0 +_0802BC68: .4byte gUnknown_2023DFC +_0802BC6C: .4byte gUnknown_2023D6B +_0802BC70: .4byte gUnknown_2023D74 + thumb_func_end sub_802BC34 + + thumb_func_start sub_802BC74 +sub_802BC74: @ 802BC74 + push {lr} + ldr r3, _0802BC98 @ =gUnknown_2023F1C + ldrh r1, [r3] + movs r2, 0x80 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0802BCA4 + ldr r2, _0802BC9C @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802BCA0 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _0802BCB2 + .align 2, 0 +_0802BC98: .4byte gUnknown_2023F1C +_0802BC9C: .4byte gUnknown_2023DCC +_0802BCA0: .4byte gUnknown_2023E82 +_0802BCA4: + strh r2, [r3] + ldr r0, _0802BCC0 @ =gUnknown_2023E82 + movs r1, 0x5 + strb r1, [r0, 0x5] + ldr r0, _0802BCC4 @ =gUnknown_2023F20 + adds r0, 0x28 + strb r1, [r0] +_0802BCB2: + ldr r1, _0802BCC8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802BCC0: .4byte gUnknown_2023E82 +_0802BCC4: .4byte gUnknown_2023F20 +_0802BCC8: .4byte gUnknown_2023D74 + thumb_func_end sub_802BC74 + + thumb_func_start sub_802BCCC +sub_802BCCC: @ 802BCCC + push {r4,lr} + ldr r2, _0802BD10 @ =gUnknown_2023BE4 + ldr r0, _0802BD14 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + movs r0, 0x19 + ldrsb r0, [r1, r0] + adds r3, r2, 0 + cmp r0, 0 + bne _0802BD20 + movs r0, 0x1C + ldrsb r0, [r1, r0] + cmp r0, 0 + bne _0802BD20 + ldr r0, _0802BD18 @ =gUnknown_2023E82 + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + beq _0802BD20 + ldr r3, _0802BD1C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802BD4C + .align 2, 0 +_0802BD10: .4byte gUnknown_2023BE4 +_0802BD14: .4byte gUnknown_2023D6C +_0802BD18: .4byte gUnknown_2023E82 +_0802BD1C: .4byte gUnknown_2023D74 +_0802BD20: + ldr r4, _0802BD54 @ =gUnknown_2023BC4 + ldr r0, _0802BD58 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r4] + ldr r2, _0802BD5C @ =gUnknown_2023D50 + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x28] + str r0, [r2] + ldr r1, _0802BD60 @ =0x00007fff + movs r0, 0 + bl sub_800E5EC + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _0802BD64 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802BD4C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802BD54: .4byte gUnknown_2023BC4 +_0802BD58: .4byte gUnknown_2023D6B +_0802BD5C: .4byte gUnknown_2023D50 +_0802BD60: .4byte 0x00007fff +_0802BD64: .4byte gUnknown_2023D74 + thumb_func_end sub_802BCCC + + thumb_func_start sub_802BD68 +sub_802BD68: @ 802BD68 + push {r4,r5,lr} + ldr r4, _0802BDA8 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + ldr r5, _0802BDAC @ =gUnknown_2023DE4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + movs r0, 0x1 + strb r0, [r1, 0x8] + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r4] + strb r0, [r1, 0x9] + ldr r1, _0802BDB0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802BDA8: .4byte gUnknown_2023D6B +_0802BDAC: .4byte gUnknown_2023DE4 +_0802BDB0: .4byte gUnknown_2023D74 + thumb_func_end sub_802BD68 + + thumb_func_start sub_802BDB4 +sub_802BDB4: @ 802BDB4 + push {r4,lr} + ldr r0, _0802BE08 @ =gUnknown_2023DFC + ldr r3, _0802BE0C @ =gUnknown_2023D6B + ldrb r1, [r3] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 2 + orrs r0, r2 + str r0, [r1] + ldr r4, _0802BE10 @ =gUnknown_2023E0C + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r2, [r0, 0x12] + movs r1, 0x10 + negs r1, r1 + ands r1, r2 + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0, 0x12] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r2, [r0, 0x12] + movs r1, 0xF + ands r1, r2 + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0, 0x12] + ldr r1, _0802BE14 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802BE08: .4byte gUnknown_2023DFC +_0802BE0C: .4byte gUnknown_2023D6B +_0802BE10: .4byte gUnknown_2023E0C +_0802BE14: .4byte gUnknown_2023D74 + thumb_func_end sub_802BDB4 + + thumb_func_start sub_802BE18 +sub_802BE18: @ 802BE18 + push {r4,lr} + ldr r2, _0802BE68 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _0802BE6C @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _0802BE70 @ =gUnknown_2023D4A + ldr r1, _0802BE74 @ =gUnknown_825081C + ldr r0, _0802BE78 @ =gUnknown_2022B50 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0 + bl sub_801D05C + ldr r1, _0802BE7C @ =gUnknown_2023D6C + strb r0, [r1] + ldr r3, _0802BE80 @ =gUnknown_81D65A8 + ldr r2, _0802BE84 @ =gUnknown_8250C04 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + bl sub_8017520 + ldr r1, _0802BE88 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802BE68: .4byte gUnknown_2023DD0 +_0802BE6C: .4byte 0xfffffbff +_0802BE70: .4byte gUnknown_2023D4A +_0802BE74: .4byte gUnknown_825081C +_0802BE78: .4byte gUnknown_2022B50 +_0802BE7C: .4byte gUnknown_2023D6C +_0802BE80: .4byte gUnknown_81D65A8 +_0802BE84: .4byte gUnknown_8250C04 +_0802BE88: .4byte gUnknown_2023D74 + thumb_func_end sub_802BE18 + + thumb_func_start sub_802BE8C +sub_802BE8C: @ 802BE8C + push {r4-r6,lr} + sub sp, 0x4 + ldr r1, _0802BED8 @ =gUnknown_2023BE4 + ldr r3, _0802BEDC @ =gUnknown_2023D6B + ldrb r0, [r3] + movs r6, 0x58 + muls r0, r6 + adds r5, r1, 0 + adds r5, 0x4C + adds r2, r0, r5 + ldr r0, [r2] + movs r1, 0xD8 + ands r0, r1 + cmp r0, 0 + beq _0802BEE8 + movs r0, 0 + str r0, [r2] + ldr r1, _0802BEE0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r4, _0802BEE4 @ =gUnknown_2023BC4 + ldrb r0, [r3] + strb r0, [r4] + ldrb r0, [r4] + muls r0, r6 + adds r0, r5 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + b _0802BF02 + .align 2, 0 +_0802BED8: .4byte gUnknown_2023BE4 +_0802BEDC: .4byte gUnknown_2023D6B +_0802BEE0: .4byte gUnknown_2023D74 +_0802BEE4: .4byte gUnknown_2023BC4 +_0802BEE8: + ldr r3, _0802BF0C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802BF02: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802BF0C: .4byte gUnknown_2023D74 + thumb_func_end sub_802BE8C + + thumb_func_start sub_802BF10 +sub_802BF10: @ 802BF10 + push {lr} + ldr r1, _0802BF48 @ =gUnknown_2023BE4 + ldr r0, _0802BF4C @ =gUnknown_2023D6C + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 24 + cmp r1, 0 + bge _0802BF54 + ldr r3, _0802BF50 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802BF60 + .align 2, 0 +_0802BF48: .4byte gUnknown_2023BE4 +_0802BF4C: .4byte gUnknown_2023D6C +_0802BF50: .4byte gUnknown_2023D74 +_0802BF54: + orrs r1, r2 + str r1, [r0] + ldr r1, _0802BF64 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802BF60: + pop {r0} + bx r0 + .align 2, 0 +_0802BF64: .4byte gUnknown_2023D74 + thumb_func_end sub_802BF10 + + thumb_func_start sub_802BF68 +sub_802BF68: @ 802BF68 + push {lr} + ldr r2, _0802BF94 @ =gUnknown_2023E8C + ldr r0, _0802BF98 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r1, r0, 4 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0802BF88 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802BFA0 +_0802BF88: + ldr r1, _0802BF9C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802BFBA + .align 2, 0 +_0802BF94: .4byte gUnknown_2023E8C +_0802BF98: .4byte gUnknown_2023D6B +_0802BF9C: .4byte gUnknown_2023D74 +_0802BFA0: + ldr r3, _0802BFC0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802BFBA: + pop {r0} + bx r0 + .align 2, 0 +_0802BFC0: .4byte gUnknown_2023D74 + thumb_func_end sub_802BF68 + + thumb_func_start sub_802BFC4 +sub_802BFC4: @ 802BFC4 + push {r4,lr} + ldr r4, _0802C008 @ =gUnknown_2023E0C + ldr r3, _0802C00C @ =gUnknown_2023D6C + ldrb r0, [r3] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r2, r1, r4 + ldrb r1, [r2, 0x13] + lsls r0, r1, 28 + cmp r0, 0 + bne _0802C014 + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x13] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r2, [r0, 0x13] + movs r1, 0xF + ands r1, r2 + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0, 0x13] + ldr r1, _0802C010 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802C02E + .align 2, 0 +_0802C008: .4byte gUnknown_2023E0C +_0802C00C: .4byte gUnknown_2023D6C +_0802C010: .4byte gUnknown_2023D74 +_0802C014: + ldr r3, _0802C034 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802C02E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802C034: .4byte gUnknown_2023D74 + thumb_func_end sub_802BFC4 + + thumb_func_start sub_802C038 +sub_802C038: @ 802C038 + push {r4,lr} + ldr r4, _0802C0A0 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r3, _0802C0A4 @ =gUnknown_2023D6C + strb r0, [r3] + ldr r0, _0802C0A8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802C0BC + ldr r0, _0802C0AC @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0802C0B0 @ =gUnknown_825E45C + ldrb r3, [r3] + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802C0BC + ldr r1, _0802C0B4 @ =gUnknown_2023E8C + ldrb r0, [r4] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + blt _0802C0BC + lsls r0, r3, 4 + adds r2, r0, r1 + ldrb r1, [r2] + lsls r0, r1, 28 + cmp r0, 0 + blt _0802C0BC + movs r0, 0x8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802C0B8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802C0D6 + .align 2, 0 +_0802C0A0: .4byte gUnknown_2023D6B +_0802C0A4: .4byte gUnknown_2023D6C +_0802C0A8: .4byte gUnknown_2022B4C +_0802C0AC: .4byte gUnknown_2023D70 +_0802C0B0: .4byte gUnknown_825E45C +_0802C0B4: .4byte gUnknown_2023E8C +_0802C0B8: .4byte gUnknown_2023D74 +_0802C0BC: + ldr r3, _0802C0DC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802C0D6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802C0DC: .4byte gUnknown_2023D74 + thumb_func_end sub_802C038 + + thumb_func_start sub_802C0E0 +sub_802C0E0: @ 802C0E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, _0802C1FC @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + bne _0802C1DE + ldr r0, _0802C200 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0802C120 + ldr r0, [r4] + ldr r1, _0802C204 @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _0802C120 + ldr r0, _0802C208 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _0802C1DE +_0802C120: + ldr r6, _0802C200 @ =gUnknown_2023D6B + ldrb r0, [r6] + bl sub_80751C4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r7, _0802C20C @ =gUnknown_2023D6C + ldrb r0, [r7] + bl sub_80751C4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0802C1FC @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0802C204 @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _0802C18A + ldr r0, _0802C208 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0802C18A + ldr r0, _0802C210 @ =gUnknown_2023F20 + adds r2, r0, 0 + adds r2, 0x29 + adds r0, r4, r2 + ldrb r1, [r0] + ldr r4, _0802C214 @ =gUnknown_825E45C + ldr r3, _0802C218 @ =gUnknown_2023BCE + ldrb r0, [r6] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802C1DE + adds r0, r5, r2 + ldrb r1, [r0] + ldrb r0, [r7] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802C1DE +_0802C18A: + ldr r0, _0802C21C @ =gUnknown_2023BE4 + mov r8, r0 + ldr r1, _0802C200 @ =gUnknown_2023D6B + ldrb r4, [r1] + movs r5, 0x58 + adds r0, r4, 0 + muls r0, r5 + add r0, r8 + mov r9, r0 + ldrh r3, [r0, 0x2E] + adds r1, r3, 0 + cmp r1, 0 + bne _0802C1B2 + ldr r0, _0802C20C @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r5 + add r0, r8 + ldrh r0, [r0, 0x2E] + cmp r0, 0 + beq _0802C1DE +_0802C1B2: + cmp r1, 0xAF + beq _0802C1DE + ldr r7, _0802C20C @ =gUnknown_2023D6C + ldrb r0, [r7] + muls r0, r5 + mov r2, r8 + adds r1, r0, r2 + ldrh r2, [r1, 0x2E] + cmp r2, 0xAF + beq _0802C1DE + adds r0, r3, 0 + subs r0, 0x79 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bls _0802C1DE + adds r0, r2, 0 + subs r0, 0x79 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bhi _0802C224 +_0802C1DE: + ldr r3, _0802C220 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802C37A + .align 2, 0 +_0802C1FC: .4byte gUnknown_2022B4C +_0802C200: .4byte gUnknown_2023D6B +_0802C204: .4byte 0x00000902 +_0802C208: .4byte gUnknown_20386AE +_0802C20C: .4byte gUnknown_2023D6C +_0802C210: .4byte gUnknown_2023F20 +_0802C214: .4byte gUnknown_825E45C +_0802C218: .4byte gUnknown_2023BCE +_0802C21C: .4byte gUnknown_2023BE4 +_0802C220: .4byte gUnknown_2023D74 +_0802C224: + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x3C + bne _0802C258 + ldr r1, _0802C24C @ =gUnknown_2023D74 + ldr r0, _0802C250 @ =gUnknown_81D948E + str r0, [r1] + ldr r1, _0802C254 @ =gUnknown_2023D6A + ldrb r0, [r7] + muls r0, r5 + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldrb r1, [r1] + bl sub_80C71D0 + b _0802C37A + .align 2, 0 +_0802C24C: .4byte gUnknown_2023D74 +_0802C250: .4byte gUnknown_81D948E +_0802C254: .4byte gUnknown_2023D6A +_0802C258: + ldr r3, _0802C344 @ =gUnknown_2023FE8 + mov r10, r3 + lsls r0, r4, 1 + adds r0, 0xD0 + ldr r1, [r3] + adds r6, r1, r0 + mov r0, r9 + ldrh r0, [r0, 0x2E] + mov r9, r0 + strh r2, [r6] + ldr r1, _0802C348 @ =gUnknown_2023D6B + ldrb r0, [r1] + muls r0, r5 + add r0, r8 + movs r1, 0 + strh r1, [r0, 0x2E] + ldrb r0, [r7] + muls r0, r5 + add r0, r8 + mov r2, r9 + strh r2, [r0, 0x2E] + ldr r4, _0802C34C @ =gUnknown_2023BC4 + ldr r3, _0802C348 @ =gUnknown_2023D6B + ldrb r0, [r3] + strb r0, [r4] + str r6, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldr r1, _0802C348 @ =gUnknown_2023D6B + ldrb r0, [r1] + bl sub_8017248 + ldrb r0, [r7] + strb r0, [r4] + ldrb r0, [r7] + muls r0, r5 + mov r1, r8 + adds r1, 0x2E + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldrb r0, [r7] + bl sub_8017248 + ldrb r0, [r7] + mov r2, r10 + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + movs r3, 0 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + strb r3, [r0] + ldr r1, _0802C348 @ =gUnknown_2023D6B + ldrb r0, [r1] + ldr r1, [r2] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC8 + strb r3, [r0] + ldr r2, _0802C348 @ =gUnknown_2023D6B + ldrb r0, [r2] + mov r3, r10 + ldr r1, [r3] + lsls r0, 1 + adds r0, r1 + adds r0, 0xC9 + movs r1, 0 + strb r1, [r0] + ldr r1, _0802C350 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r1, _0802C354 @ =gUnknown_2022AB8 + movs r3, 0xFD + strb r3, [r1] + movs r2, 0xA + strb r2, [r1, 0x1] + ldrh r0, [r6] + strb r0, [r1, 0x2] + ldrh r0, [r6] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _0802C358 @ =gUnknown_2022AC8 + strb r3, [r1] + strb r2, [r1, 0x1] + mov r2, r9 + strb r2, [r1, 0x2] + mov r3, r9 + lsrs r0, r3, 8 + strb r0, [r1, 0x3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x4] + cmp r3, 0 + beq _0802C360 + ldrh r0, [r6] + cmp r0, 0 + beq _0802C374 + ldr r1, _0802C35C @ =gUnknown_2023E82 + movs r0, 0x2 + b _0802C378 + .align 2, 0 +_0802C344: .4byte gUnknown_2023FE8 +_0802C348: .4byte gUnknown_2023D6B +_0802C34C: .4byte gUnknown_2023BC4 +_0802C350: .4byte gUnknown_2023D74 +_0802C354: .4byte gUnknown_2022AB8 +_0802C358: .4byte gUnknown_2022AC8 +_0802C35C: .4byte gUnknown_2023E82 +_0802C360: + ldrh r0, [r6] + cmp r0, 0 + beq _0802C374 + ldr r0, _0802C370 @ =gUnknown_2023E82 + movs r1, 0 + strb r1, [r0, 0x5] + b _0802C37A + .align 2, 0 +_0802C370: .4byte gUnknown_2023E82 +_0802C374: + ldr r1, _0802C38C @ =gUnknown_2023E82 + movs r0, 0x1 +_0802C378: + strb r0, [r1, 0x5] +_0802C37A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802C38C: .4byte gUnknown_2023E82 + thumb_func_end sub_802C0E0 + + thumb_func_start sub_802C390 +sub_802C390: @ 802C390 + push {r4,lr} + ldr r3, _0802C3D0 @ =gUnknown_2023BE4 + ldr r4, _0802C3D4 @ =gUnknown_2023D6C + ldrb r0, [r4] + movs r2, 0x58 + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r1, [r0] + adds r0, r1, 0 + cmp r0, 0 + beq _0802C3E4 + cmp r0, 0x19 + beq _0802C3E4 + ldr r0, _0802C3D8 @ =gUnknown_2023D6B + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + strb r1, [r0] + ldr r1, _0802C3DC @ =gUnknown_2023D6A + ldrb r0, [r4] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _0802C3E0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802C3FE + .align 2, 0 +_0802C3D0: .4byte gUnknown_2023BE4 +_0802C3D4: .4byte gUnknown_2023D6C +_0802C3D8: .4byte gUnknown_2023D6B +_0802C3DC: .4byte gUnknown_2023D6A +_0802C3E0: .4byte gUnknown_2023D74 +_0802C3E4: + ldr r3, _0802C404 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802C3FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802C404: .4byte gUnknown_2023D74 + thumb_func_end sub_802C390 + + thumb_func_start sub_802C408 +sub_802C408: @ 802C408 + push {r4-r7,lr} + ldr r7, _0802C41C @ =gUnknown_2023D74 + ldr r2, [r7] + ldrb r3, [r2, 0x1] + cmp r3, 0 + beq _0802C420 + cmp r3, 0x1 + beq _0802C458 + b _0802C4D4 + .align 2, 0 +_0802C41C: .4byte gUnknown_2023D74 +_0802C420: + ldr r1, _0802C44C @ =gUnknown_2023F20 + ldr r4, _0802C450 @ =gUnknown_2023D6B + adds r0, r1, 0 + adds r0, 0x20 + ldrb r5, [r4] + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, 0 + bne _0802C4A4 + movs r0, 0x2 + strb r0, [r3] + ldrb r0, [r4] + adds r1, 0x24 + adds r1, r0, r1 + ldr r2, _0802C454 @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x6 + b _0802C4D2 + .align 2, 0 +_0802C44C: .4byte gUnknown_2023F20 +_0802C450: .4byte gUnknown_2023D6B +_0802C454: .4byte gUnknown_2023BCE +_0802C458: + ldr r1, _0802C4BC @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r4, _0802C4C0 @ =gUnknown_2023D6C + ldrb r0, [r4] + strb r0, [r1, 0x2] + ldr r0, _0802C4C4 @ =gUnknown_2023F20 + adds r0, 0x24 + ldrb r5, [r4] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _0802C4C8 @ =gUnknown_2023D50 + ldr r6, _0802C4CC @ =gUnknown_2023BE4 + ldrb r0, [r4] + movs r5, 0x58 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _0802C490 + str r3, [r1] +_0802C490: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + ldrb r0, [r4] + muls r0, r5 + adds r0, r6 + ldrh r1, [r0, 0x28] + ldrh r0, [r0, 0x2C] + cmp r1, r0 + bne _0802C4D0 +_0802C4A4: + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r7] + b _0802C4D4 + .align 2, 0 +_0802C4BC: .4byte gUnknown_2022AB8 +_0802C4C0: .4byte gUnknown_2023D6C +_0802C4C4: .4byte gUnknown_2023F20 +_0802C4C8: .4byte gUnknown_2023D50 +_0802C4CC: .4byte gUnknown_2023BE4 +_0802C4D0: + adds r0, r2, 0x6 +_0802C4D2: + str r0, [r7] +_0802C4D4: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802C408 + + thumb_func_start sub_802C4DC +sub_802C4DC: @ 802C4DC + push {lr} + ldr r1, _0802C514 @ =gUnknown_2023DFC + ldr r0, _0802C518 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 3 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _0802C520 + ldr r3, _0802C51C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802C52C + .align 2, 0 +_0802C514: .4byte gUnknown_2023DFC +_0802C518: .4byte gUnknown_2023D6B +_0802C51C: .4byte gUnknown_2023D74 +_0802C520: + orrs r1, r3 + str r1, [r2] + ldr r1, _0802C530 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802C52C: + pop {r0} + bx r0 + .align 2, 0 +_0802C530: .4byte gUnknown_2023D74 + thumb_func_end sub_802C4DC + + thumb_func_start sub_802C534 +sub_802C534: @ 802C534 + push {lr} + ldr r3, _0802C580 @ =gUnknown_2023E8C + ldr r0, _0802C584 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r2, r0, 4 + adds r0, r3, 0x4 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802C554 + adds r0, r2, r3 + ldr r1, _0802C588 @ =gUnknown_2023D6C + ldrb r0, [r0, 0xC] + ldrb r1, [r1] + cmp r0, r1 + beq _0802C56C +_0802C554: + adds r0, r3, 0 + adds r0, 0x8 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802C572 + adds r0, r2, r3 + ldr r1, _0802C588 @ =gUnknown_2023D6C + ldrb r0, [r0, 0xD] + ldrb r1, [r1] + cmp r0, r1 + bne _0802C572 +_0802C56C: + ldr r1, _0802C58C @ =gUnknown_2023FC4 + movs r0, 0x2 + strb r0, [r1, 0xE] +_0802C572: + ldr r1, _0802C590 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802C580: .4byte gUnknown_2023E8C +_0802C584: .4byte gUnknown_2023D6B +_0802C588: .4byte gUnknown_2023D6C +_0802C58C: .4byte gUnknown_2023FC4 +_0802C590: .4byte gUnknown_2023D74 + thumb_func_end sub_802C534 + + thumb_func_start sub_802C594 +sub_802C594: @ 802C594 + push {r4,lr} + ldr r1, _0802C5D8 @ =gUnknown_2023DFC + ldr r0, _0802C5DC @ =gUnknown_2023D6C + ldrb r3, [r0] + lsls r0, r3, 2 + adds r4, r0, r1 + ldr r2, [r4] + movs r0, 0xC0 + lsls r0, 5 + ands r0, r2 + cmp r0, 0 + bne _0802C5BC + ldr r1, _0802C5E0 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r3 + adds r1, 0x4C + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0802C5E8 +_0802C5BC: + ldr r3, _0802C5E4 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802C5F8 + .align 2, 0 +_0802C5D8: .4byte gUnknown_2023DFC +_0802C5DC: .4byte gUnknown_2023D6C +_0802C5E0: .4byte gUnknown_2023BE4 +_0802C5E4: .4byte gUnknown_2023D74 +_0802C5E8: + movs r0, 0x80 + lsls r0, 5 + orrs r2, r0 + str r2, [r4] + ldr r1, _0802C600 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802C5F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802C600: .4byte gUnknown_2023D74 + thumb_func_end sub_802C594 + + thumb_func_start sub_802C604 +sub_802C604: @ 802C604 + push {lr} + ldr r2, _0802C640 @ =gUnknown_2023BE4 + ldr r0, _0802C644 @ =gUnknown_2023D6C + ldrb r0, [r0] + movs r1, 0x58 + muls r0, r1 + adds r3, r0, r2 + ldr r0, _0802C648 @ =gUnknown_2023D6B + ldrb r0, [r0] + muls r0, r1 + adds r1, r0, r2 + ldrh r0, [r3, 0x28] + ldrh r2, [r1, 0x28] + cmp r0, r2 + bhi _0802C650 + ldr r3, _0802C64C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802C662 + .align 2, 0 +_0802C640: .4byte gUnknown_2023BE4 +_0802C644: .4byte gUnknown_2023D6C +_0802C648: .4byte gUnknown_2023D6B +_0802C64C: .4byte gUnknown_2023D74 +_0802C650: + ldr r2, _0802C668 @ =gUnknown_2023D50 + ldrh r0, [r3, 0x28] + ldrh r1, [r1, 0x28] + subs r0, r1 + str r0, [r2] + ldr r1, _0802C66C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802C662: + pop {r0} + bx r0 + .align 2, 0 +_0802C668: .4byte gUnknown_2023D50 +_0802C66C: .4byte gUnknown_2023D74 + thumb_func_end sub_802C604 + + thumb_func_start sub_802C670 +sub_802C670: @ 802C670 + push {r4,lr} + ldr r4, _0802C6BC @ =gUnknown_2023F50 + ldrh r0, [r4] + cmp r0, 0 + bne _0802C6AC + ldr r2, _0802C6C0 @ =gUnknown_8250C04 + ldr r0, _0802C6C4 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r3, [r0, 0x1] + ldr r2, _0802C6C8 @ =gUnknown_2023BE4 + ldr r0, _0802C6CC @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r0, [r1, 0x28] + muls r0, r3 + ldrh r1, [r1, 0x2C] + bl __divsi3 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + bne _0802C6AC + movs r0, 0x1 + strh r0, [r4] +_0802C6AC: + ldr r1, _0802C6D0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802C6BC: .4byte gUnknown_2023F50 +_0802C6C0: .4byte gUnknown_8250C04 +_0802C6C4: .4byte gUnknown_2023D4A +_0802C6C8: .4byte gUnknown_2023BE4 +_0802C6CC: .4byte gUnknown_2023D6B +_0802C6D0: .4byte gUnknown_2023D74 + thumb_func_end sub_802C670 + + thumb_func_start sub_802C6D4 +sub_802C6D4: @ 802C6D4 + push {r4-r6,lr} + ldr r5, _0802C738 @ =gUnknown_2023BE4 + ldr r0, _0802C73C @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + adds r2, r0, 0 + adds r2, 0x20 + ldrb r1, [r2] + cmp r1, 0 + bne _0802C6FC + ldr r0, _0802C740 @ =gUnknown_2023D6C + ldrb r0, [r0] + muls r0, r4 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _0802C71C +_0802C6FC: + cmp r1, 0x19 + beq _0802C71C + ldr r6, _0802C740 @ =gUnknown_2023D6C + ldrb r0, [r6] + muls r0, r4 + adds r0, r5 + adds r0, 0x20 + ldrb r3, [r0] + cmp r3, 0x19 + beq _0802C71C + ldr r0, _0802C744 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0802C74C +_0802C71C: + ldr r3, _0802C748 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802C762 + .align 2, 0 +_0802C738: .4byte gUnknown_2023BE4 +_0802C73C: .4byte gUnknown_2023D6B +_0802C740: .4byte gUnknown_2023D6C +_0802C744: .4byte gUnknown_2023DCC +_0802C748: .4byte gUnknown_2023D74 +_0802C74C: + ldrb r1, [r2] + strb r3, [r2] + ldrb r0, [r6] + muls r0, r4 + adds r0, r5 + adds r0, 0x20 + strb r1, [r0] + ldr r1, _0802C768 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802C762: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802C768: .4byte gUnknown_2023D74 + thumb_func_end sub_802C6D4 + + thumb_func_start sub_802C76C +sub_802C76C: @ 802C76C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r1, _0802C78C @ =gUnknown_2023DFC + ldr r4, _0802C790 @ =gUnknown_2023D6B + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _0802C7BC + b _0802C83E + .align 2, 0 +_0802C78C: .4byte gUnknown_2023DFC +_0802C790: .4byte gUnknown_2023D6B +_0802C794: + ldr r0, _0802C7B4 @ =gUnknown_2023DFC + mov r2, r9 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 6 + orrs r0, r2 + str r0, [r1] + ldr r1, _0802C7B8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802C836 + .align 2, 0 +_0802C7B4: .4byte gUnknown_2023DFC +_0802C7B8: .4byte gUnknown_2023D74 +_0802C7BC: + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + bl sub_8016F90 + movs r6, 0 + b _0802C82E +_0802C7D2: + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r8, r0 + beq _0802C828 + movs r4, 0 + ldr r7, _0802C864 @ =gUnknown_2023D6B + mov r9, r7 + ldr r0, _0802C868 @ =gUnknown_2023BE4 + mov r12, r0 + mov r1, r9 + ldrb r0, [r1] + mov r2, r12 + adds r2, 0xC + movs r1, 0x58 + muls r0, r1 + adds r3, r0, r2 + adds r5, r6, 0 + muls r5, r1 +_0802C7FC: + movs r2, 0 + ldrh r1, [r3] + mov r0, r12 + adds r0, 0xC + adds r0, r5, r0 +_0802C806: + ldrh r7, [r0] + cmp r1, r7 + bne _0802C810 + cmp r1, 0 + bne _0802C818 +_0802C810: + adds r0, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + ble _0802C806 +_0802C818: + cmp r2, 0x4 + bne _0802C824 + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0802C7FC +_0802C824: + cmp r4, 0x4 + bne _0802C794 +_0802C828: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0802C82E: + ldr r0, _0802C86C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r6, r0 + bcc _0802C7D2 +_0802C836: + ldr r0, _0802C86C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r6, r0 + bne _0802C858 +_0802C83E: + ldr r3, _0802C870 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802C858: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802C864: .4byte gUnknown_2023D6B +_0802C868: .4byte gUnknown_2023BE4 +_0802C86C: .4byte gUnknown_2023BCC +_0802C870: .4byte gUnknown_2023D74 + thumb_func_end sub_802C76C + + thumb_func_start sub_802C874 +sub_802C874: @ 802C874 + push {lr} + ldr r1, _0802C8AC @ =gUnknown_2023DFC + ldr r0, _0802C8B0 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 7 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _0802C8B8 + ldr r3, _0802C8B4 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802C8C4 + .align 2, 0 +_0802C8AC: .4byte gUnknown_2023DFC +_0802C8B0: .4byte gUnknown_2023D6B +_0802C8B4: .4byte gUnknown_2023D74 +_0802C8B8: + orrs r1, r3 + str r1, [r2] + ldr r1, _0802C8C8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802C8C4: + pop {r0} + bx r0 + .align 2, 0 +_0802C8C8: .4byte gUnknown_2023D74 + thumb_func_end sub_802C874 + + thumb_func_start sub_802C8CC +sub_802C8CC: @ 802C8CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r5, 0 + ldr r2, _0802C930 @ =gUnknown_8250830 + ldrh r0, [r2] + ldr r1, _0802C934 @ =0x0000ffff + cmp r0, r1 + beq _0802C944 + adds r6, r2, 0 + ldr r0, _0802C938 @ =gUnknown_2023BE4 + mov r8, r0 + adds r7, r1, 0 + adds r4, r6, 0 +_0802C8E8: + ldr r0, _0802C93C @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + add r0, r8 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E38 + ldrh r1, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0802C916 + adds r4, 0x4 + adds r5, 0x2 + ldrh r0, [r4] + cmp r0, r7 + bne _0802C8E8 +_0802C916: + lsls r0, r5, 1 + adds r0, r6 + ldrh r1, [r0] + ldr r0, _0802C934 @ =0x0000ffff + cmp r1, r0 + beq _0802C944 + ldr r0, _0802C940 @ =gUnknown_2023F50 + adds r1, r5, 0x1 + lsls r1, 1 + adds r1, r6 + ldrh r1, [r1] + strh r1, [r0] + b _0802C94A + .align 2, 0 +_0802C930: .4byte gUnknown_8250830 +_0802C934: .4byte 0x0000ffff +_0802C938: .4byte gUnknown_2023BE4 +_0802C93C: .4byte gUnknown_2023D6C +_0802C940: .4byte gUnknown_2023F50 +_0802C944: + ldr r1, _0802C95C @ =gUnknown_2023F50 + movs r0, 0x78 + strh r0, [r1] +_0802C94A: + ldr r1, _0802C960 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802C95C: .4byte gUnknown_2023F50 +_0802C960: .4byte gUnknown_2023D74 + thumb_func_end sub_802C8CC + + thumb_func_start sub_802C964 +sub_802C964: @ 802C964 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r0, 0 + mov r10, r0 + ldr r0, _0802CA84 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x18 + str r0, [sp, 0x4] + ldr r0, _0802CA88 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751D8 + movs r1, 0x1 + ands r1, r0 + ldr r0, _0802CA8C @ =gUnknown_2024284 + str r0, [sp] + cmp r1, 0 + beq _0802C994 + ldr r1, _0802CA90 @ =gUnknown_202402C + str r1, [sp] +_0802C994: + movs r2, 0 +_0802C996: + ldr r1, _0802CA94 @ =gUnknown_2023BCE + ldr r0, _0802CA88 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + adds r1, r2, 0x1 + str r1, [sp, 0x8] + ldrh r0, [r0] + cmp r2, r0 + beq _0802CA3C + movs r0, 0x64 + adds r6, r2, 0 + muls r6, r0 + ldr r0, [sp] + adds r4, r0, r6 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _0802CA3C + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0802CA3C + movs r5, 0 + ldr r1, _0802CA98 @ =0x0000ffff + mov r8, r1 + mov r9, r6 + mov r1, r10 + lsls r0, r1, 1 + ldr r1, [sp, 0x4] + adds r6, r0, r1 +_0802C9E0: + movs r7, 0 + adds r1, r5, 0 + adds r1, 0xD + ldr r0, [sp] + add r0, r9 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_802A1FC + lsls r0, 24 + adds r1, r5, 0x1 + cmp r0, 0 + bne _0802CA36 + ldr r0, _0802CA9C @ =gUnknown_82507E8 + ldrh r2, [r0] + adds r3, r0, 0 + cmp r2, r8 + beq _0802CA2A + cmp r4, r2 + beq _0802CA20 + ldr r5, _0802CA98 @ =0x0000ffff + adds r2, r3, 0 +_0802CA12: + adds r2, 0x2 + adds r7, 0x1 + ldrh r0, [r2] + cmp r0, r5 + beq _0802CA2A + cmp r4, r0 + bne _0802CA12 +_0802CA20: + lsls r0, r7, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r8 + bne _0802CA36 +_0802CA2A: + cmp r4, 0 + beq _0802CA36 + strh r4, [r6] + adds r6, 0x2 + movs r0, 0x1 + add r10, r0 +_0802CA36: + adds r5, r1, 0 + cmp r5, 0x3 + ble _0802C9E0 +_0802CA3C: + ldr r2, [sp, 0x8] + cmp r2, 0x5 + ble _0802C996 + mov r1, r10 + cmp r1, 0 + beq _0802CAB4 + ldr r2, _0802CAA0 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _0802CAA4 @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _0802CAA8 @ =gUnknown_2023D4E + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + mov r0, r10 + muls r0, r1 + asrs r0, 8 + lsls r0, 1 + ldr r1, [sp, 0x4] + adds r0, r1 + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0 + bl sub_801D05C + ldr r1, _0802CAAC @ =gUnknown_2023D6C + strb r0, [r1] + ldr r1, _0802CAB0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802CACE + .align 2, 0 +_0802CA84: .4byte gUnknown_2023FE8 +_0802CA88: .4byte gUnknown_2023D6B +_0802CA8C: .4byte gUnknown_2024284 +_0802CA90: .4byte gUnknown_202402C +_0802CA94: .4byte gUnknown_2023BCE +_0802CA98: .4byte 0x0000ffff +_0802CA9C: .4byte gUnknown_82507E8 +_0802CAA0: .4byte gUnknown_2023DD0 +_0802CAA4: .4byte 0xfffffbff +_0802CAA8: .4byte gUnknown_2023D4E +_0802CAAC: .4byte gUnknown_2023D6C +_0802CAB0: .4byte gUnknown_2023D74 +_0802CAB4: + ldr r3, _0802CAE0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802CACE: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802CAE0: .4byte gUnknown_2023D74 + thumb_func_end sub_802C964 + + thumb_func_start sub_802CAE4 +sub_802CAE4: @ 802CAE4 + push {lr} + ldr r1, _0802CB2C @ =gUnknown_2023D6C + ldr r3, _0802CB30 @ =gUnknown_2023D6B + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _0802CB34 @ =gUnknown_2023ECC + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r0, _0802CB38 @ =gUnknown_2023BE2 + ldrb r1, [r0] + ldr r0, _0802CB3C @ =gUnknown_2023BCC + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _0802CB44 + ldr r3, _0802CB40 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802CB5C + .align 2, 0 +_0802CB2C: .4byte gUnknown_2023D6C +_0802CB30: .4byte gUnknown_2023D6B +_0802CB34: .4byte gUnknown_2023ECC +_0802CB38: .4byte gUnknown_2023BE2 +_0802CB3C: .4byte gUnknown_2023BCC +_0802CB40: .4byte gUnknown_2023D74 +_0802CB44: + ldr r0, _0802CB60 @ =gUnknown_2023E8C + ldrb r1, [r3] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x10 + orrs r0, r2 + strb r0, [r1] + ldr r1, _0802CB64 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802CB5C: + pop {r0} + bx r0 + .align 2, 0 +_0802CB60: .4byte gUnknown_2023E8C +_0802CB64: .4byte gUnknown_2023D74 + thumb_func_end sub_802CAE4 + + thumb_func_start sub_802CB68 +sub_802CB68: @ 802CB68 + push {lr} + ldr r2, _0802CBAC @ =gUnknown_2023ECC + ldr r3, _0802CBB0 @ =gUnknown_2023D6B + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r0, _0802CBB4 @ =gUnknown_2023BE2 + ldrb r1, [r0] + ldr r0, _0802CBB8 @ =gUnknown_2023BCC + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _0802CBC0 + ldr r3, _0802CBBC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802CBD6 + .align 2, 0 +_0802CBAC: .4byte gUnknown_2023ECC +_0802CBB0: .4byte gUnknown_2023D6B +_0802CBB4: .4byte gUnknown_2023BE2 +_0802CBB8: .4byte gUnknown_2023BCC +_0802CBBC: .4byte gUnknown_2023D74 +_0802CBC0: + ldr r0, _0802CBDC @ =gUnknown_2023E8C + ldrb r1, [r3] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + ldr r1, _0802CBE0 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802CBD6: + pop {r0} + bx r0 + .align 2, 0 +_0802CBDC: .4byte gUnknown_2023E8C +_0802CBE0: .4byte gUnknown_2023D74 + thumb_func_end sub_802CB68 + + thumb_func_start sub_802CBE4 +sub_802CBE4: @ 802CBE4 + push {r4-r6,lr} + ldr r4, _0802CC88 @ =gUnknown_2023FC4 + ldr r0, _0802CC8C @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xD8 + ldrb r0, [r0] + strb r0, [r4, 0x17] + ldrb r0, [r4, 0x17] + bl sub_80751C4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _0802CC90 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x9 + strb r0, [r2, 0x1] + ldr r3, _0802CC94 @ =gUnknown_2023BE4 + ldrb r1, [r4, 0x17] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r2, 0x2] + movs r0, 0xFF + strb r0, [r2, 0x3] + ldr r2, _0802CC98 @ =gUnknown_2023D6C + ldr r1, _0802CC9C @ =gUnknown_2023BCC + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bcs _0802CC6A + adds r4, r2, 0 + ldr r6, _0802CCA0 @ =gUnknown_825E45C +_0802CC2A: + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + beq _0802CC4C + ldr r0, _0802CCA4 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ands r1, r0 + ldr r2, _0802CC9C @ =gUnknown_2023BCC + cmp r1, 0 + beq _0802CC60 +_0802CC4C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _0802CC9C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + adds r2, r1, 0 + ldrb r1, [r2] + cmp r0, r1 + bcc _0802CC2A +_0802CC60: + ldr r0, _0802CC98 @ =gUnknown_2023D6C + ldrb r0, [r0] + ldrb r2, [r2] + cmp r0, r2 + bcc _0802CCAC +_0802CC6A: + ldr r3, _0802CCA8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802CCB4 + .align 2, 0 +_0802CC88: .4byte gUnknown_2023FC4 +_0802CC8C: .4byte gUnknown_2023FE8 +_0802CC90: .4byte gUnknown_2022AB8 +_0802CC94: .4byte gUnknown_2023BE4 +_0802CC98: .4byte gUnknown_2023D6C +_0802CC9C: .4byte gUnknown_2023BCC +_0802CCA0: .4byte gUnknown_825E45C +_0802CCA4: .4byte gUnknown_2023D70 +_0802CCA8: .4byte gUnknown_2023D74 +_0802CCAC: + ldr r1, _0802CCBC @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802CCB4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802CCBC: .4byte gUnknown_2023D74 + thumb_func_end sub_802CBE4 + + thumb_func_start sub_802CCC0 +sub_802CCC0: @ 802CCC0 + push {r4-r6,lr} + sub sp, 0x4 + ldr r5, _0802CD28 @ =gUnknown_2023D74 + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r4, _0802CD2C @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r3, _0802CD30 @ =gUnknown_2023BE4 + ldrb r0, [r4] + movs r6, 0x58 + adds r1, r0, 0 + muls r1, r6 + adds r0, r1, r3 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1E + bne _0802CD1A + adds r3, 0x4C + adds r1, r3 + movs r0, 0 + str r0, [r1] + ldr r2, _0802CD34 @ =gUnknown_825E45C + ldrb r1, [r4] + ldr r0, _0802CD38 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, r1, r0 + adds r0, 0x58 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0] + adds r0, r1, 0 + muls r0, r6 + adds r0, r3 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_0802CD1A: + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802CD28: .4byte gUnknown_2023D74 +_0802CD2C: .4byte gUnknown_2023BC4 +_0802CD30: .4byte gUnknown_2023BE4 +_0802CD34: .4byte gUnknown_825E45C +_0802CD38: .4byte gUnknown_2023FE8 + thumb_func_end sub_802CCC0 + + thumb_func_start sub_802CD3C +sub_802CD3C: @ 802CD3C + push {r4,lr} + ldr r4, _0802CD78 @ =gUnknown_2023D74 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8016E24 + ldr r1, _0802CD7C @ =gUnknown_2023BC4 + strb r0, [r1] + ldr r2, _0802CD80 @ =gUnknown_2023BE4 + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0802CD84 + ldr r2, [r4] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _0802CD8A + .align 2, 0 +_0802CD78: .4byte gUnknown_2023D74 +_0802CD7C: .4byte gUnknown_2023BC4 +_0802CD80: .4byte gUnknown_2023BE4 +_0802CD84: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_0802CD8A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_802CD3C + + thumb_func_start sub_802CD90 +sub_802CD90: @ 802CD90 + push {lr} + ldr r0, _0802CDA4 @ =gUnknown_2022B50 + ldrb r0, [r0] + cmp r0, 0x7 + bhi _0802CE2C + lsls r0, 2 + ldr r1, _0802CDA8 @ =_0802CDAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802CDA4: .4byte gUnknown_2022B50 +_0802CDA8: .4byte _0802CDAC + .align 2, 0 +_0802CDAC: + .4byte _0802CDCC + .4byte _0802CDD8 + .4byte _0802CDE4 + .4byte _0802CDF0 + .4byte _0802CDFC + .4byte _0802CE08 + .4byte _0802CE14 + .4byte _0802CE20 +_0802CDCC: + ldr r1, _0802CDD4 @ =gUnknown_2023E82 + movs r0, 0x2 + b _0802CE30 + .align 2, 0 +_0802CDD4: .4byte gUnknown_2023E82 +_0802CDD8: + ldr r1, _0802CDE0 @ =gUnknown_2023E82 + movs r0, 0x1 + b _0802CE30 + .align 2, 0 +_0802CDE0: .4byte gUnknown_2023E82 +_0802CDE4: + ldr r1, _0802CDEC @ =gUnknown_2023E82 + movs r0, 0x1B + b _0802CE30 + .align 2, 0 +_0802CDEC: .4byte gUnknown_2023E82 +_0802CDF0: + ldr r1, _0802CDF8 @ =gUnknown_2023E82 + movs r0, 0x17 + b _0802CE30 + .align 2, 0 +_0802CDF8: .4byte gUnknown_2023E82 +_0802CDFC: + ldr r1, _0802CE04 @ =gUnknown_2023E82 + movs r0, 0x16 + b _0802CE30 + .align 2, 0 +_0802CE04: .4byte gUnknown_2023E82 +_0802CE08: + ldr r1, _0802CE10 @ =gUnknown_2023E82 + movs r0, 0x18 + b _0802CE30 + .align 2, 0 +_0802CE10: .4byte gUnknown_2023E82 +_0802CE14: + ldr r1, _0802CE1C @ =gUnknown_2023E82 + movs r0, 0x7 + b _0802CE30 + .align 2, 0 +_0802CE1C: .4byte gUnknown_2023E82 +_0802CE20: + ldr r1, _0802CE28 @ =gUnknown_2023E82 + movs r0, 0x8 + b _0802CE30 + .align 2, 0 +_0802CE28: .4byte gUnknown_2023E82 +_0802CE2C: + ldr r1, _0802CE40 @ =gUnknown_2023E82 + movs r0, 0x5 +_0802CE30: + strb r0, [r1, 0x3] + ldr r1, _0802CE44 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802CE40: .4byte gUnknown_2023E82 +_0802CE44: .4byte gUnknown_2023D74 + thumb_func_end sub_802CD90 + + thumb_func_start sub_802CE48 +sub_802CE48: @ 802CE48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r7, 0 + ldr r0, _0802CE90 @ =gUnknown_8254784 + mov r8, r0 +_0802CE54: + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _0802CE94 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x2E + bl sub_803FBE8 + cmp r0, 0 + beq _0802CE98 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x17] + b _0802CEA2 + .align 2, 0 +_0802CE90: .4byte gUnknown_8254784 +_0802CE94: .4byte gUnknown_2024284 +_0802CE98: + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x16] +_0802CEA2: + adds r4, r7, 0x1 + cmp r0, 0x35 + bne _0802CF0A + cmp r5, 0 + beq _0802CF0A + movs r0, 0xCE + lsls r0, 1 + cmp r5, r0 + beq _0802CF0A + cmp r6, 0 + bne _0802CF0A + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _0802CF0A + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r1, _0802CEE4 @ =gUnknown_8250848 + b _0802CEF0 + .align 2, 0 +_0802CEE4: .4byte gUnknown_8250848 +_0802CEE8: + adds r1, 0x4 + adds r2, 0x1 + cmp r2, 0xE + bhi _0802CEF6 +_0802CEF0: + ldrb r0, [r1, 0x2] + cmp r0, r3 + ble _0802CEE8 +_0802CEF6: + movs r0, 0x64 + muls r0, r7 + ldr r1, _0802CF24 @ =gUnknown_2024284 + adds r0, r1 + lsls r2, 2 + ldr r1, _0802CF28 @ =gUnknown_8250848 + adds r2, r1 + movs r1, 0xC + bl sub_804037C +_0802CF0A: + adds r7, r4, 0 + cmp r7, 0x5 + ble _0802CE54 + ldr r1, _0802CF2C @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802CF24: .4byte gUnknown_2024284 +_0802CF28: .4byte gUnknown_8250848 +_0802CF2C: .4byte gUnknown_2023D74 + thumb_func_end sub_802CE48 + + thumb_func_start sub_802CF30 +sub_802CF30: @ 802CF30 + push {r4,lr} + ldr r4, _0802CF84 @ =gUnknown_2023BC4 + ldr r0, _0802CF88 @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + strb r0, [r4] + ldr r1, _0802CF8C @ =gUnknown_2023BE4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + ldr r3, _0802CF90 @ =gUnknown_2023FE8 + cmp r0, 0 + beq _0802CF60 + ldr r0, [r3] + adds r0, 0x7F + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_0802CF60: + ldr r0, [r3] + adds r0, 0x7F + ldrb r2, [r0] + movs r0, 0 + movs r1, 0 + bl sub_800EB28 + ldrb r0, [r4] + bl sub_8017248 + ldr r1, _0802CF94 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802CF84: .4byte gUnknown_2023BC4 +_0802CF88: .4byte gUnknown_2023FC4 +_0802CF8C: .4byte gUnknown_2023BE4 +_0802CF90: .4byte gUnknown_2023FE8 +_0802CF94: .4byte gUnknown_2023D74 + thumb_func_end sub_802CF30 + + thumb_func_start sub_802CF98 +sub_802CF98: @ 802CF98 + push {r4,lr} + ldr r1, _0802CFC8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r0, _0802CFCC @ =gUnknown_2023FC4 + ldrb r0, [r0, 0x17] + bl sub_8019DAC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0802CFC2 + ldr r0, _0802CFD0 @ =gUnknown_81D92F8 + bl sub_801BC24 + ldr r0, _0802CFD4 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x7F + subs r1, r4, 0x1 + strb r1, [r0] +_0802CFC2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802CFC8: .4byte gUnknown_2023D74 +_0802CFCC: .4byte gUnknown_2023FC4 +_0802CFD0: .4byte gUnknown_81D92F8 +_0802CFD4: .4byte gUnknown_2023FE8 + thumb_func_end sub_802CF98 + + thumb_func_start sub_802CFD8 +sub_802CFD8: @ 802CFD8 + push {r4,lr} + movs r4, 0 + ldr r2, _0802D014 @ =gUnknown_8250C04 + ldr r0, _0802D018 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0xC9 + bne _0802D028 + ldr r1, _0802D01C @ =gUnknown_2023DFC + ldr r0, _0802D020 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 9 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + bne _0802D04C + orrs r1, r3 + str r1, [r2] + ldr r0, _0802D024 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + b _0802D050 + .align 2, 0 +_0802D014: .4byte gUnknown_8250C04 +_0802D018: .4byte gUnknown_2023D4A +_0802D01C: .4byte gUnknown_2023DFC +_0802D020: .4byte gUnknown_2023D6B +_0802D024: .4byte gUnknown_2023E82 +_0802D028: + ldr r1, _0802D05C @ =gUnknown_2023DFC + ldr r0, _0802D060 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 10 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + bne _0802D04C + orrs r1, r3 + str r1, [r2] + ldr r1, _0802D064 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + movs r4, 0x1 +_0802D04C: + cmp r4, 0 + beq _0802D06C +_0802D050: + ldr r1, _0802D068 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802D086 + .align 2, 0 +_0802D05C: .4byte gUnknown_2023DFC +_0802D060: .4byte gUnknown_2023D6B +_0802D064: .4byte gUnknown_2023E82 +_0802D068: .4byte gUnknown_2023D74 +_0802D06C: + ldr r3, _0802D08C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802D086: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802D08C: .4byte gUnknown_2023D74 + thumb_func_end sub_802CFD8 + + thumb_func_start sub_802D090 +sub_802D090: @ 802D090 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0802D130 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0802D130 + ldr r2, _0802D0E0 @ =gUnknown_2023F1C + ldrb r0, [r2] + cmp r0, 0 + beq _0802D0CE + ldr r1, _0802D0E4 @ =gUnknown_2023FC4 + movs r0, 0x2 + strb r0, [r1, 0xE] +_0802D0CE: + ldrh r1, [r2] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0802D0EC + ldr r0, _0802D0E8 @ =gUnknown_2023FE8 + ldr r1, [r0] + movs r0, 0x8B + b _0802D12E + .align 2, 0 +_0802D0E0: .4byte gUnknown_2023F1C +_0802D0E4: .4byte gUnknown_2023FC4 +_0802D0E8: .4byte gUnknown_2023FE8 +_0802D0EC: + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _0802D100 + ldr r0, _0802D0FC @ =gUnknown_2023FE8 + ldr r1, [r0] + movs r0, 0x85 + b _0802D12E + .align 2, 0 +_0802D0FC: .4byte gUnknown_2023FE8 +_0802D100: + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0802D114 + ldr r0, _0802D110 @ =gUnknown_2023FE8 + ldr r1, [r0] + movs r0, 0x8A + b _0802D12E + .align 2, 0 +_0802D110: .4byte gUnknown_2023FE8 +_0802D114: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802D128 + ldr r0, _0802D124 @ =gUnknown_2023FE8 + ldr r1, [r0] + movs r0, 0x8F + b _0802D12E + .align 2, 0 +_0802D124: .4byte gUnknown_2023FE8 +_0802D128: + ldr r0, _0802D140 @ =gUnknown_2023FE8 + ldr r1, [r0] + movs r0, 0x80 +_0802D12E: + strb r0, [r1, 0x13] +_0802D130: + ldr r1, _0802D144 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0802D140: .4byte gUnknown_2023FE8 +_0802D144: .4byte gUnknown_2023D74 + thumb_func_end sub_802D090 + + thumb_func_start sub_802D148 +sub_802D148: @ 802D148 + push {r4-r7,lr} + sub sp, 0x4 + ldr r7, _0802D1B0 @ =gUnknown_2023BC4 + ldr r0, _0802D1B4 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r7] + ldr r1, _0802D1B8 @ =gUnknown_2023FE8 + ldrb r2, [r7] + lsls r0, r2, 1 + adds r0, 0xB8 + ldr r1, [r1] + adds r6, r1, r0 + ldrh r5, [r6] + cmp r5, 0 + beq _0802D1C8 + ldr r4, _0802D1BC @ =gUnknown_2023BE4 + movs r3, 0x58 + adds r0, r2, 0 + muls r0, r3 + adds r0, r4 + ldrh r0, [r0, 0x2E] + cmp r0, 0 + bne _0802D1C8 + ldr r1, _0802D1C0 @ =gUnknown_2023D68 + strh r5, [r1] + strh r0, [r6] + ldrb r0, [r7] + muls r0, r3 + adds r0, r4 + ldrh r1, [r1] + strh r1, [r0, 0x2E] + ldrb r0, [r7] + muls r0, r3 + adds r1, r4, 0 + adds r1, 0x2E + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_800DFF0 + ldrb r0, [r7] + bl sub_8017248 + ldr r1, _0802D1C4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802D1E2 + .align 2, 0 +_0802D1B0: .4byte gUnknown_2023BC4 +_0802D1B4: .4byte gUnknown_2023D6B +_0802D1B8: .4byte gUnknown_2023FE8 +_0802D1BC: .4byte gUnknown_2023BE4 +_0802D1C0: .4byte gUnknown_2023D68 +_0802D1C4: .4byte gUnknown_2023D74 +_0802D1C8: + ldr r3, _0802D1EC @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802D1E2: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802D1EC: .4byte gUnknown_2023D74 + thumb_func_end sub_802D148 + + thumb_func_start sub_802D1F0 +sub_802D1F0: @ 802D1F0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0802D260 @ =gUnknown_2023BE4 + mov r8, r0 + ldr r7, _0802D264 @ =gUnknown_2023D6B + ldrb r0, [r7] + movs r6, 0x58 + muls r0, r6 + mov r1, r8 + adds r3, r0, r1 + movs r0, 0x21 + adds r0, r3 + mov r12, r0 + ldr r5, _0802D268 @ =gUnknown_8250888 + ldr r4, _0802D26C @ =gUnknown_2022B50 + ldrb r0, [r4] + adds r0, r5 + ldrb r2, [r0] + mov r1, r12 + ldrb r0, [r1] + adds r1, r2, 0 + cmp r0, r1 + beq _0802D278 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + beq _0802D278 + mov r0, r12 + strb r2, [r0] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + add r1, r8 + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + adds r1, 0x22 + strb r0, [r1] + ldr r1, _0802D270 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + ldrb r0, [r4] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r1, _0802D274 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802D292 + .align 2, 0 +_0802D260: .4byte gUnknown_2023BE4 +_0802D264: .4byte gUnknown_2023D6B +_0802D268: .4byte gUnknown_8250888 +_0802D26C: .4byte gUnknown_2022B50 +_0802D270: .4byte gUnknown_2022AB8 +_0802D274: .4byte gUnknown_2023D74 +_0802D278: + ldr r3, _0802D29C @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802D292: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802D29C: .4byte gUnknown_2023D74 + thumb_func_end sub_802D1F0 + + thumb_func_start sub_802D2A0 +sub_802D2A0: @ 802D2A0 + push {r4-r6,lr} + ldr r5, _0802D314 @ =gUnknown_2023D6B + ldrb r0, [r5] + bl sub_80751D8 + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r4, _0802D318 @ =gUnknown_2023BC4 + strb r0, [r4] + ldr r0, _0802D31C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r6, 0x1 + ands r0, r6 + cmp r0, 0 + beq _0802D340 + ldr r0, _0802D320 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0802D324 @ =gUnknown_825E45C + ldrb r3, [r4] + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802D340 + ldr r0, _0802D328 @ =gUnknown_2023D7C + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, 0 + bne _0802D340 + ldr r1, _0802D32C @ =gUnknown_2023DC4 + lsls r0, r3, 1 + adds r0, r1 + ldrh r2, [r0] + cmp r2, 0xE4 + bne _0802D340 + ldr r0, _0802D330 @ =gUnknown_2023BDA + adds r0, r3, r0 + movs r1, 0xB + strb r1, [r0] + ldr r0, _0802D334 @ =gUnknown_2023D4A + strh r2, [r0] + ldr r1, _0802D338 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r0, _0802D33C @ =gUnknown_2023FC4 + strb r6, [r0, 0x18] + ldrb r1, [r5] + adds r0, 0x20 + strb r1, [r0] + ldrb r0, [r4] + strb r0, [r5] + b _0802D35A + .align 2, 0 +_0802D314: .4byte gUnknown_2023D6B +_0802D318: .4byte gUnknown_2023BC4 +_0802D31C: .4byte gUnknown_2022B4C +_0802D320: .4byte gUnknown_2023D70 +_0802D324: .4byte gUnknown_825E45C +_0802D328: .4byte gUnknown_2023D7C +_0802D32C: .4byte gUnknown_2023DC4 +_0802D330: .4byte gUnknown_2023BDA +_0802D334: .4byte gUnknown_2023D4A +_0802D338: .4byte gUnknown_2023D74 +_0802D33C: .4byte gUnknown_2023FC4 +_0802D340: + ldr r3, _0802D360 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802D35A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802D360: .4byte gUnknown_2023D74 + thumb_func_end sub_802D2A0 + + thumb_func_start sub_802D364 +sub_802D364: @ 802D364 + push {r4,lr} + ldr r1, _0802D388 @ =gUnknown_2023D6E + ldr r3, _0802D38C @ =gUnknown_2023D6B + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _0802D390 @ =gUnknown_2023D6C + lsls r0, 24 + lsrs r0, 24 + adds r4, r1, 0 + ldrb r1, [r2] + cmp r0, r1 + bne _0802D398 + ldr r1, _0802D394 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x17] + strb r0, [r2] + strb r0, [r3] + b _0802D39E + .align 2, 0 +_0802D388: .4byte gUnknown_2023D6E +_0802D38C: .4byte gUnknown_2023D6B +_0802D390: .4byte gUnknown_2023D6C +_0802D394: .4byte gUnknown_2023FC4 +_0802D398: + ldr r1, _0802D3B0 @ =gUnknown_2023FC4 + ldrb r0, [r1, 0x17] + strb r0, [r2] +_0802D39E: + ldrb r0, [r4] + strb r0, [r1, 0x17] + ldr r1, _0802D3B4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802D3B0: .4byte gUnknown_2023FC4 +_0802D3B4: .4byte gUnknown_2023D74 + thumb_func_end sub_802D364 + + thumb_func_start sub_802D3B8 +sub_802D3B8: @ 802D3B8 + push {r4,lr} + ldr r0, _0802D400 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0802D404 @ =gUnknown_2023DE4 + lsls r3, r0, 1 + adds r0, r3, r0 + lsls r0, 2 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + bne _0802D3E0 + ldrb r1, [r4, 0x2] + cmp r1, 0 + beq _0802D418 +_0802D3E0: + ldr r2, _0802D408 @ =gUnknown_2023DDE + adds r2, r3, r2 + ldrh r1, [r2] + ldr r0, _0802D40C @ =0x0000fffe + ands r0, r1 + movs r3, 0 + ldr r1, _0802D410 @ =0x0000fffd + ands r0, r1 + strh r0, [r2] + strb r3, [r4] + strb r3, [r4, 0x2] + ldr r1, _0802D414 @ =gUnknown_2023FC4 + movs r0, 0x1 + strb r0, [r1, 0x18] + strb r0, [r1, 0x19] + b _0802D41E + .align 2, 0 +_0802D400: .4byte gUnknown_2023D6B +_0802D404: .4byte gUnknown_2023DE4 +_0802D408: .4byte gUnknown_2023DDE +_0802D40C: .4byte 0x0000fffe +_0802D410: .4byte 0x0000fffd +_0802D414: .4byte gUnknown_2023FC4 +_0802D418: + ldr r0, _0802D42C @ =gUnknown_2023FC4 + strb r1, [r0, 0x18] + strb r1, [r0, 0x19] +_0802D41E: + ldr r1, _0802D430 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802D42C: .4byte gUnknown_2023FC4 +_0802D430: .4byte gUnknown_2023D74 + thumb_func_end sub_802D3B8 + + thumb_func_start sub_802D434 +sub_802D434: @ 802D434 + push {r4-r6,lr} + movs r4, 0 + ldr r0, _0802D474 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + beq _0802D442 + b _0802D7EE +_0802D442: + ldr r5, _0802D478 @ =gUnknown_2023BC4 + ldr r0, _0802D47C @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r5] + ldr r6, _0802D480 @ =gUnknown_2023D6C + movs r1, 0x1 + eors r0, r1 + strb r0, [r6] + ldr r0, _0802D484 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _0802D490 + movs r0, 0 + movs r1, 0x6 + bl sub_800E194 + ldrb r0, [r5] + bl sub_8017248 + ldr r1, _0802D488 @ =gUnknown_2023D74 + ldr r0, _0802D48C @ =gUnknown_81D9AD1 + b _0802D7EC + .align 2, 0 +_0802D474: .4byte gUnknown_2023BC8 +_0802D478: .4byte gUnknown_2023BC4 +_0802D47C: .4byte gUnknown_2023D6B +_0802D480: .4byte gUnknown_2023D6C +_0802D484: .4byte gUnknown_2022B4C +_0802D488: .4byte gUnknown_2023D74 +_0802D48C: .4byte gUnknown_81D9AD1 +_0802D490: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0802D4B4 + movs r0, 0 + movs r1, 0x5 + bl sub_800E194 + ldrb r0, [r5] + bl sub_8017248 + ldr r1, _0802D4AC @ =gUnknown_2023D74 + ldr r0, _0802D4B0 @ =gUnknown_81D9AC1 + b _0802D7EC + .align 2, 0 +_0802D4AC: .4byte gUnknown_2023D74 +_0802D4B0: .4byte gUnknown_81D9AC1 +_0802D4B4: + movs r0, 0x81 + lsls r0, 9 + ands r1, r0 + cmp r1, 0 + beq _0802D4DC + movs r0, 0 + movs r1, 0x4 + bl sub_800E194 + ldrb r0, [r5] + bl sub_8017248 + ldr r1, _0802D4D4 @ =gUnknown_2023D74 + ldr r0, _0802D4D8 @ =gUnknown_81D9A88 + b _0802D7EC + .align 2, 0 +_0802D4D4: .4byte gUnknown_2023D74 +_0802D4D8: .4byte gUnknown_81D9A88 +_0802D4DC: + ldr r0, _0802D500 @ =gUnknown_2023D68 + ldrh r0, [r0] + cmp r0, 0x5 + bne _0802D508 + ldr r0, _0802D504 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x7C + ldrb r0, [r0] + lsls r1, r0, 2 + adds r1, r0 + lsls r0, r1, 8 + subs r0, r1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 24 + lsrs r5, r0, 24 + b _0802D520 + .align 2, 0 +_0802D500: .4byte gUnknown_2023D68 +_0802D504: .4byte gUnknown_2023FE8 +_0802D508: + ldr r3, _0802D53C @ =gUnknown_8254784 + ldr r2, _0802D540 @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r5, [r0, 0x8] +_0802D520: + ldr r2, _0802D544 @ =gUnknown_2023D68 + ldrh r0, [r2] + cmp r0, 0x5 + bhi _0802D52A + b _0802D620 +_0802D52A: + subs r0, 0x6 + cmp r0, 0x6 + bls _0802D532 + b _0802D62A +_0802D532: + lsls r0, 2 + ldr r1, _0802D548 @ =_0802D54C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802D53C: .4byte gUnknown_8254784 +_0802D540: .4byte gUnknown_2023BE4 +_0802D544: .4byte gUnknown_2023D68 +_0802D548: .4byte _0802D54C + .align 2, 0 +_0802D54C: + .4byte _0802D568 + .4byte _0802D598 + .4byte _0802D5AA + .4byte _0802D5D8 + .4byte _0802D608 + .4byte _0802D5CA + .4byte _0802D5CA +_0802D568: + ldr r2, _0802D590 @ =gUnknown_2023BE4 + ldr r0, _0802D594 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r1, 0xB + beq _0802D5FC + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xB + beq _0802D5FC + cmp r1, 0x6 + beq _0802D5FC + cmp r0, 0x6 + beq _0802D5FC + b _0802D5CA + .align 2, 0 +_0802D590: .4byte gUnknown_2023BE4 +_0802D594: .4byte gUnknown_2023D6C +_0802D598: + bl sub_8056188 + lsls r0, 24 + lsrs r0, 24 + movs r4, 0xA + cmp r0, 0x5 + bne _0802D62A + movs r4, 0x23 + b _0802D62A +_0802D5AA: + ldr r2, _0802D5D0 @ =gUnknown_2023BE4 + ldr r0, _0802D5D4 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r0] + cmp r1, 0x27 + bhi _0802D5CA + movs r0, 0x28 + subs r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bhi _0802D62A +_0802D5CA: + movs r4, 0xA + b _0802D62A + .align 2, 0 +_0802D5D0: .4byte gUnknown_2023BE4 +_0802D5D4: .4byte gUnknown_2023D6C +_0802D5D8: + ldr r2, _0802D600 @ =gUnknown_2023BE4 + ldr r0, _0802D604 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + movs r4, 0xA + cmp r0, 0 + beq _0802D62A +_0802D5FC: + movs r4, 0x1E + b _0802D62A + .align 2, 0 +_0802D600: .4byte gUnknown_2023BE4 +_0802D604: .4byte gUnknown_2023D6C +_0802D608: + ldr r0, _0802D61C @ =gUnknown_3004F90 + ldrb r0, [r0, 0x13] + adds r0, 0xA + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x28 + bls _0802D62A + movs r4, 0x28 + b _0802D62A + .align 2, 0 +_0802D61C: .4byte gUnknown_3004F90 +_0802D620: + ldr r1, _0802D694 @ =gUnknown_8250892 + ldrh r0, [r2] + subs r0, 0x2 + adds r0, r1 + ldrb r4, [r0] +_0802D62A: + adds r0, r5, 0 + muls r0, r4 + movs r1, 0xA + bl __divsi3 + ldr r5, _0802D698 @ =gUnknown_2023BE4 + ldr r1, _0802D69C @ =gUnknown_2023D6C + ldrb r2, [r1] + movs r1, 0x58 + adds r4, r2, 0 + muls r4, r1 + adds r3, r4, r5 + ldrh r2, [r3, 0x2C] + lsls r1, r2, 1 + adds r1, r2 + ldrh r2, [r3, 0x28] + lsls r2, 1 + subs r2, r1, r2 + muls r0, r2 + bl __divsi3 + adds r6, r0, 0 + adds r5, 0x4C + adds r4, r5 + ldr r4, [r4] + movs r0, 0x27 + ands r0, r4 + cmp r0, 0 + beq _0802D666 + lsls r6, 1 +_0802D666: + movs r0, 0xD8 + ands r4, r0 + cmp r4, 0 + beq _0802D67A + lsls r0, r6, 4 + subs r0, r6 + movs r1, 0xA + bl __udivsi3 + adds r6, r0, 0 +_0802D67A: + ldr r1, _0802D6A0 @ =gUnknown_2023D68 + ldrh r0, [r1] + cmp r0, 0x5 + beq _0802D6BC + cmp r0, 0x1 + bne _0802D6A8 + ldr r0, _0802D6A4 @ =gUnknown_3004F90 + ldrb r1, [r0, 0x5] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0, 0x5] + b _0802D6BC + .align 2, 0 +_0802D694: .4byte gUnknown_8250892 +_0802D698: .4byte gUnknown_2023BE4 +_0802D69C: .4byte gUnknown_2023D6C +_0802D6A0: .4byte gUnknown_2023D68 +_0802D6A4: .4byte gUnknown_3004F90 +_0802D6A8: + ldr r0, _0802D700 @ =gUnknown_3004F90 + ldrh r1, [r1] + adds r0, r1 + adds r1, r0, 0 + adds r1, 0x34 + ldrb r0, [r1] + cmp r0, 0xFE + bhi _0802D6BC + adds r0, 0x1 + strb r0, [r1] +_0802D6BC: + cmp r6, 0xFE + bls _0802D720 + movs r0, 0 + movs r1, 0x4 + bl sub_800E194 + ldr r0, _0802D704 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + ldr r1, _0802D708 @ =gUnknown_2023D74 + ldr r0, _0802D70C @ =gUnknown_81D9A42 + str r0, [r1] + ldr r1, _0802D710 @ =gUnknown_2023BCE + ldr r0, _0802D714 @ =gUnknown_2023D6C + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802D718 @ =gUnknown_202402C + adds r0, r1 + ldr r2, _0802D71C @ =gUnknown_2023D68 + movs r1, 0x26 + bl sub_804037C + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + beq _0802D7AE + b _0802D7D8 + .align 2, 0 +_0802D700: .4byte gUnknown_3004F90 +_0802D704: .4byte gUnknown_2023BC4 +_0802D708: .4byte gUnknown_2023D74 +_0802D70C: .4byte gUnknown_81D9A42 +_0802D710: .4byte gUnknown_2023BCE +_0802D714: .4byte gUnknown_2023D6C +_0802D718: .4byte gUnknown_202402C +_0802D71C: .4byte gUnknown_2023D68 +_0802D720: + movs r0, 0xFF + lsls r0, 16 + adds r1, r6, 0 + bl __udivsi3 + bl Sqrt + lsls r0, 16 + lsrs r0, 16 + bl Sqrt + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _0802D748 @ =0x000ffff0 + adds r1, r6, 0 + bl __udivsi3 + adds r6, r0, 0 + movs r4, 0 + b _0802D752 + .align 2, 0 +_0802D748: .4byte 0x000ffff0 +_0802D74C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0802D752: + cmp r4, 0x3 + bhi _0802D762 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcc _0802D74C +_0802D762: + ldr r5, _0802D7B8 @ =gUnknown_2023D68 + ldrh r0, [r5] + cmp r0, 0x1 + bne _0802D76C + movs r4, 0x4 +_0802D76C: + movs r0, 0 + adds r1, r4, 0 + bl sub_800E194 + ldr r0, _0802D7BC @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + cmp r4, 0x4 + bne _0802D7E4 + ldr r1, _0802D7C0 @ =gUnknown_2023D74 + ldr r0, _0802D7C4 @ =gUnknown_81D9A42 + str r0, [r1] + ldr r1, _0802D7C8 @ =gUnknown_2023BCE + ldr r0, _0802D7CC @ =gUnknown_2023D6C + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802D7D0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x26 + adds r2, r5, 0 + bl sub_804037C + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bne _0802D7D8 +_0802D7AE: + ldr r1, _0802D7D4 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + b _0802D7EE + .align 2, 0 +_0802D7B8: .4byte gUnknown_2023D68 +_0802D7BC: .4byte gUnknown_2023BC4 +_0802D7C0: .4byte gUnknown_2023D74 +_0802D7C4: .4byte gUnknown_81D9A42 +_0802D7C8: .4byte gUnknown_2023BCE +_0802D7CC: .4byte gUnknown_2023D6C +_0802D7D0: .4byte gUnknown_202402C +_0802D7D4: .4byte gUnknown_2023E82 +_0802D7D8: + ldr r1, _0802D7E0 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _0802D7EE + .align 2, 0 +_0802D7E0: .4byte gUnknown_2023E82 +_0802D7E4: + ldr r0, _0802D7F4 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + ldr r1, _0802D7F8 @ =gUnknown_2023D74 + ldr r0, _0802D7FC @ =gUnknown_81D9A93 +_0802D7EC: + str r0, [r1] +_0802D7EE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802D7F4: .4byte gUnknown_2023E82 +_0802D7F8: .4byte gUnknown_2023D74 +_0802D7FC: .4byte gUnknown_81D9A93 + thumb_func_end sub_802D434 + + thumb_func_start sub_802D800 +sub_802D800: @ 802D800 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0802D870 @ =gUnknown_2023BCE + mov r9, r0 + ldr r5, _0802D874 @ =gUnknown_2023D6B + ldrb r0, [r5] + movs r6, 0x1 + eors r0, r6 + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + movs r7, 0x64 + muls r0, r7 + ldr r1, _0802D878 @ =gUnknown_202402C + mov r8, r1 + add r0, r8 + bl sub_8040B14 + lsls r0, 24 + cmp r0, 0 + beq _0802D8EA + bl sub_80CC7B4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0802D88C + ldr r0, _0802D87C @ =gUnknown_2023E82 + strb r1, [r0, 0x5] + ldr r4, _0802D880 @ =gUnknown_2021CD0 + ldr r0, _0802D884 @ =0x00004037 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldrb r0, [r5] + eors r0, r6 + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + muls r0, r7 + add r0, r8 + ldr r2, _0802D888 @ =gUnknown_2021CF0 + movs r1, 0x2 + bl sub_803FBE8 + b _0802D8D6 + .align 2, 0 +_0802D870: .4byte gUnknown_2023BCE +_0802D874: .4byte gUnknown_2023D6B +_0802D878: .4byte gUnknown_202402C +_0802D87C: .4byte gUnknown_2023E82 +_0802D880: .4byte gUnknown_2021CD0 +_0802D884: .4byte 0x00004037 +_0802D888: .4byte gUnknown_2021CF0 +_0802D88C: + ldr r4, _0802D92C @ =gUnknown_2021CD0 + ldr r0, _0802D930 @ =0x00004037 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldrb r0, [r5] + eors r0, r6 + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + muls r0, r7 + add r0, r8 + ldr r2, _0802D934 @ =gUnknown_2021CF0 + movs r1, 0x2 + bl sub_803FBE8 + ldr r4, _0802D938 @ =gUnknown_2021D04 + bl sub_80CC7A8 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, _0802D93C @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] +_0802D8D6: + ldr r0, _0802D940 @ =0x00000834 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0802D8EA + ldr r1, _0802D93C @ =gUnknown_2023E82 + ldrb r0, [r1, 0x5] + adds r0, 0x1 + strb r0, [r1, 0x5] +_0802D8EA: + ldr r2, _0802D944 @ =gUnknown_3004F90 + ldr r3, _0802D948 @ =gUnknown_2023BE4 + ldr r0, _0802D94C @ =gUnknown_2023D6B + ldrb r0, [r0] + movs r1, 0x1 + eors r1, r0 + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x28] + ldr r0, _0802D950 @ =gUnknown_2023BCE + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802D954 @ =gUnknown_202402C + adds r0, r1 + adds r2, 0x2A + movs r1, 0x2 + bl sub_803FBE8 + ldr r1, _0802D958 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802D92C: .4byte gUnknown_2021CD0 +_0802D930: .4byte 0x00004037 +_0802D934: .4byte gUnknown_2021CF0 +_0802D938: .4byte gUnknown_2021D04 +_0802D93C: .4byte gUnknown_2023E82 +_0802D940: .4byte 0x00000834 +_0802D944: .4byte gUnknown_3004F90 +_0802D948: .4byte gUnknown_2023BE4 +_0802D94C: .4byte gUnknown_2023D6B +_0802D950: .4byte gUnknown_2023BCE +_0802D954: .4byte gUnknown_202402C +_0802D958: .4byte gUnknown_2023D74 + thumb_func_end sub_802D800 + + thumb_func_start sub_802D95C +sub_802D95C: @ 802D95C + push {r4,r5,lr} + ldr r4, _0802D9AC @ =gUnknown_202402C + adds r0, r4, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _0802D9B4 + ldr r3, _0802D9B0 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _0802D9CE + .align 2, 0 +_0802D9AC: .4byte gUnknown_202402C +_0802D9B0: .4byte gUnknown_2023D74 +_0802D9B4: + adds r0, r5, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + adds r2, r4, 0 + bl sub_8044898 + ldr r1, _0802D9D4 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802D9CE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802D9D4: .4byte gUnknown_2023D74 + thumb_func_end sub_802D95C + + thumb_func_start sub_802D9D8 +sub_802D9D8: @ 802D9D8 + push {r4,r5,lr} + sub sp, 0x18 + ldr r0, _0802DA00 @ =gUnknown_202402C + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _0802DA04 @ =gUnknown_2023E82 + ldrb r0, [r0] + cmp r0, 0x5 + bls _0802D9F4 + b _0802DB6C +_0802D9F4: + lsls r0, 2 + ldr r1, _0802DA08 @ =_0802DA0C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802DA00: .4byte gUnknown_202402C +_0802DA04: .4byte gUnknown_2023E82 +_0802DA08: .4byte _0802DA0C + .align 2, 0 +_0802DA0C: + .4byte _0802DA24 + .4byte _0802DA3C + .4byte _0802DA64 + .4byte _0802DAC8 + .4byte _0802DAE0 + .4byte _0802DB58 +_0802DA24: + movs r0, 0x1 + negs r0, r0 + ldr r1, _0802DA38 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _0802DB34 + .align 2, 0 +_0802DA38: .4byte 0x00007fff +_0802DA3C: + ldr r0, _0802DA5C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802DA4A + b _0802DB6C +_0802DA4A: + bl sub_8003ECC + adds r0, r5, 0 + bl sub_8106B60 + ldr r1, _0802DA60 @ =gUnknown_2023E82 + strb r0, [r1, 0x1] + b _0802DB36 + .align 2, 0 +_0802DA5C: .4byte gUnknown_2037AB8 +_0802DA60: .4byte gUnknown_2023E82 +_0802DA64: + ldr r0, _0802DAAC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802DA72 + b _0802DB6C +_0802DA72: + ldr r0, _0802DAB0 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _0802DAB4 @ =sub_8011100 + cmp r1, r0 + bne _0802DB6C + ldr r2, _0802DAB8 @ =gUnknown_3005090 + ldr r4, _0802DABC @ =gUnknown_2023E82 + ldrb r1, [r4, 0x1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x4] + cmp r0, 0 + bne _0802DB6C + str r0, [sp, 0x10] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _0802DAC0 @ =0x05006000 + add r0, sp, 0x10 + bl CpuSet + ldr r0, _0802DAC4 @ =sub_80116F4 + bl sub_80006F4 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0802DB6C + .align 2, 0 +_0802DAAC: .4byte gUnknown_2037AB8 +_0802DAB0: .4byte gUnknown_30030F0 +_0802DAB4: .4byte sub_8011100 +_0802DAB8: .4byte gUnknown_3005090 +_0802DABC: .4byte gUnknown_2023E82 +_0802DAC0: .4byte 0x05006000 +_0802DAC4: .4byte sub_80116F4 +_0802DAC8: + bl sub_800F34C + bl sub_800F420 + ldr r1, _0802DADC @ =gUnknown_2022980 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + b _0802DB34 + .align 2, 0 +_0802DADC: .4byte gUnknown_2022980 +_0802DAE0: + bl sub_8001960 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0802DB6C + ldr r0, _0802DB40 @ =gUnknown_2023BE4 + adds r1, r0, 0 + adds r1, 0xAC + ldr r1, [r1] + adds r0, 0xA0 + ldr r2, [r0] + movs r0, 0x78 + str r0, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + ldr r0, _0802DB44 @ =0x0000ffff + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r3, 0x1 + bl sub_810C1CC + str r4, [sp, 0x14] + add r0, sp, 0x14 + ldr r1, _0802DB48 @ =gUnknown_20375F8 + ldr r2, _0802DB4C @ =0x05000080 + bl CpuSet + ldr r0, _0802DB50 @ =0x0001ffff + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC +_0802DB34: + ldr r1, _0802DB54 @ =gUnknown_2023E82 +_0802DB36: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0802DB6C + .align 2, 0 +_0802DB40: .4byte gUnknown_2023BE4 +_0802DB44: .4byte 0x0000ffff +_0802DB48: .4byte gUnknown_20375F8 +_0802DB4C: .4byte 0x05000080 +_0802DB50: .4byte 0x0001ffff +_0802DB54: .4byte gUnknown_2023E82 +_0802DB58: + ldr r0, _0802DB74 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802DB6C + ldr r1, _0802DB78 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0802DB6C: + add sp, 0x18 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802DB74: .4byte gUnknown_2037AB8 +_0802DB78: .4byte gUnknown_2023D74 + thumb_func_end sub_802D9D8 + + thumb_func_start sub_802DB7C +sub_802DB7C: @ 802DB7C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x10] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x1C] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + movs r1, 0 + add r0, sp, 0xC + strh r1, [r0] + ldr r6, [sp, 0x10] + cmp r6, r3 + ble _0802DBB6 + b _0802DCA2 +_0802DBB6: + mov r4, r8 + adds r0, r6, 0x1 + str r0, [sp, 0x18] + ldr r2, [sp, 0x1C] + cmp r4, r2 + bgt _0802DC98 + add r5, sp, 0xC + lsls r7, r6, 24 + mov r9, r7 +_0802DBC8: + ldr r0, [sp, 0x10] + cmp r6, r0 + bne _0802DBF4 + cmp r4, r8 + bne _0802DBDC + ldr r0, _0802DBD8 @ =0x00001022 + b _0802DC3E + .align 2, 0 +_0802DBD8: .4byte 0x00001022 +_0802DBDC: + ldr r2, [sp, 0x1C] + cmp r4, r2 + bne _0802DBEC + ldr r0, _0802DBE8 @ =0x00001024 + b _0802DC3E + .align 2, 0 +_0802DBE8: .4byte 0x00001024 +_0802DBEC: + ldr r0, _0802DBF0 @ =0x00001023 + b _0802DC3E + .align 2, 0 +_0802DBF0: .4byte 0x00001023 +_0802DBF4: + ldr r7, [sp, 0x14] + cmp r6, r7 + bne _0802DC20 + cmp r4, r8 + bne _0802DC08 + ldr r0, _0802DC04 @ =0x00001028 + b _0802DC3E + .align 2, 0 +_0802DC04: .4byte 0x00001028 +_0802DC08: + ldr r0, [sp, 0x1C] + cmp r4, r0 + bne _0802DC18 + ldr r0, _0802DC14 @ =0x0000102a + b _0802DC3E + .align 2, 0 +_0802DC14: .4byte 0x0000102a +_0802DC18: + ldr r0, _0802DC1C @ =0x00001029 + b _0802DC3E + .align 2, 0 +_0802DC1C: .4byte 0x00001029 +_0802DC20: + cmp r4, r8 + bne _0802DC2C + ldr r0, _0802DC28 @ =0x00001025 + b _0802DC3E + .align 2, 0 +_0802DC28: .4byte 0x00001025 +_0802DC2C: + ldr r2, [sp, 0x1C] + cmp r4, r2 + bne _0802DC3C + ldr r0, _0802DC38 @ =0x00001027 + b _0802DC3E + .align 2, 0 +_0802DC38: .4byte 0x00001027 +_0802DC3C: + ldr r0, _0802DC74 @ =0x00001026 +_0802DC3E: + strh r0, [r5] + movs r1, 0x1 + mov r0, r10 + ands r0, r1 + cmp r0, 0 + beq _0802DC4E + movs r0, 0 + strh r0, [r5] +_0802DC4E: + movs r0, 0x80 + mov r7, r10 + ands r0, r7 + cmp r0, 0 + beq _0802DC78 + lsls r2, r4, 24 + lsrs r2, 24 + str r1, [sp] + str r1, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x1 + add r1, sp, 0xC + mov r7, r9 + lsrs r3, r7, 24 + bl sub_8002228 + b _0802DC90 + .align 2, 0 +_0802DC74: .4byte 0x00001026 +_0802DC78: + lsls r2, r4, 24 + lsrs r2, 24 + str r1, [sp] + str r1, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + mov r7, r9 + lsrs r3, r7, 24 + bl sub_8002228 +_0802DC90: + adds r4, 0x1 + ldr r0, [sp, 0x1C] + cmp r4, r0 + ble _0802DBC8 +_0802DC98: + ldr r6, [sp, 0x18] + ldr r2, [sp, 0x14] + cmp r6, r2 + bgt _0802DCA2 + b _0802DBB6 +_0802DCA2: + movs r0, 0x1 + bl sub_80020BC + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802DB7C + + thumb_func_start sub_802DCB8 +sub_802DCB8: @ 802DCB8 + push {lr} + sub sp, 0x10 + add r0, sp, 0xC + movs r2, 0x1 + strh r2, [r0] + movs r1, 0x2 + strh r1, [r0, 0x2] + ldr r0, _0802DCF4 @ =gUnknown_2023E82 + ldrb r3, [r0, 0x1] + lsls r3, 25 + movs r0, 0x90 + lsls r0, 20 + adds r3, r0 + lsrs r3, 24 + str r2, [sp] + str r1, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + movs r2, 0x18 + bl sub_8002228 + movs r0, 0 + bl sub_80020BC + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0802DCF4: .4byte gUnknown_2023E82 + thumb_func_end sub_802DCB8 + + thumb_func_start sub_802DCF8 +sub_802DCF8: @ 802DCF8 + push {lr} + sub sp, 0x10 + add r0, sp, 0xC + movs r1, 0x20 + strh r1, [r0] + strh r1, [r0, 0x2] + ldr r0, _0802DD34 @ =gUnknown_2023E82 + ldrb r3, [r0, 0x1] + lsls r3, 25 + movs r0, 0x90 + lsls r0, 20 + adds r3, r0 + lsrs r3, 24 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + add r1, sp, 0xC + movs r2, 0x18 + bl sub_8002228 + movs r0, 0 + bl sub_80020BC + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0802DD34: .4byte gUnknown_2023E82 + thumb_func_end sub_802DCF8 + + thumb_func_start sub_802DD38 +sub_802DD38: @ 802DD38 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _0802DD5C @ =gUnknown_2023E82 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x4 + bls _0802DD50 + b _0802DFA6 +_0802DD50: + lsls r0, r1, 2 + ldr r1, _0802DD60 @ =_0802DD64 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802DD5C: .4byte gUnknown_2023E82 +_0802DD60: .4byte _0802DD64 + .align 2, 0 +_0802DD64: + .4byte _0802DD78 + .4byte _0802DDA8 + .4byte _0802DE40 + .4byte _0802DF18 + .4byte _0802DF70 +_0802DD78: + movs r4, 0 + str r4, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r0, _0802DDA0 @ =gUnknown_83FE791 + movs r1, 0xE + bl sub_80D87BC + ldr r1, _0802DDA4 @ =gUnknown_2023E82 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + strb r4, [r1, 0x1] + bl sub_802DCB8 + b _0802DFA6 + .align 2, 0 +_0802DDA0: .4byte gUnknown_83FE791 +_0802DDA4: .4byte gUnknown_2023E82 +_0802DDA8: + ldr r0, _0802DE1C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802DDCC + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _0802DDCC + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_0802DDCC: + ldr r0, _0802DE1C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802DDF2 + ldr r4, _0802DE20 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _0802DDF2 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_0802DDF2: + ldr r0, _0802DE1C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802DE24 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802DE20 @ =gUnknown_2023E82 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0802DE36 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0x3 + bl sub_8070E44 + b _0802DFA6 + .align 2, 0 +_0802DE1C: .4byte gUnknown_30030F0 +_0802DE20: .4byte gUnknown_2023E82 +_0802DE24: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0802DE2E + b _0802DFA6 +_0802DE2E: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0802DE3C @ =gUnknown_2023E82 +_0802DE36: + movs r0, 0x4 + strb r0, [r1] + b _0802DFA6 + .align 2, 0 +_0802DE3C: .4byte gUnknown_2023E82 +_0802DE40: + ldr r0, _0802DEFC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802DE4E + b _0802DFA6 +_0802DE4E: + ldr r7, _0802DF00 @ =gUnknown_2023BCE + ldr r0, _0802DF04 @ =gUnknown_2023D6B + mov r10, r0 + ldrb r0, [r0] + movs r4, 0x1 + eors r0, r4 + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + movs r1, 0x64 + mov r9, r1 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + ldr r1, _0802DF08 @ =gUnknown_202402C + mov r8, r1 + add r0, r8 + ldr r1, _0802DF0C @ =gUnknown_2023FE8 + ldr r2, [r1] + adds r2, 0x6D + movs r1, 0x2 + bl sub_803FBE8 + bl sub_8003ECC + mov r2, r10 + ldrb r0, [r2] + eors r0, r4 + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + add r0, r8 + movs r1, 0xB + bl sub_803FBE8 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + mov r2, r10 + ldrb r0, [r2] + eors r0, r4 + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + add r0, r8 + bl sub_803F720 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + mov r2, r10 + ldrb r0, [r2] + eors r4, r0 + lsls r4, 1 + adds r4, r7 + ldrh r0, [r4] + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + add r0, r8 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + ldr r2, _0802DF0C @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0x6D + str r0, [sp] + ldr r0, _0802DF10 @ =sub_8011100 + str r0, [sp, 0x4] + movs r0, 0x2 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_809D954 + ldr r1, _0802DF14 @ =gUnknown_2023E82 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0802DFA6 + .align 2, 0 +_0802DEFC: .4byte gUnknown_2037AB8 +_0802DF00: .4byte gUnknown_2023BCE +_0802DF04: .4byte gUnknown_2023D6B +_0802DF08: .4byte gUnknown_202402C +_0802DF0C: .4byte gUnknown_2023FE8 +_0802DF10: .4byte sub_8011100 +_0802DF14: .4byte gUnknown_2023E82 +_0802DF18: + ldr r0, _0802DF54 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _0802DF58 @ =sub_8011100 + cmp r1, r0 + bne _0802DFA6 + ldr r0, _0802DF5C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802DFA6 + ldr r2, _0802DF60 @ =gUnknown_2023BCE + ldr r0, _0802DF64 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x1 + eors r0, r1 + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802DF68 @ =gUnknown_202402C + adds r0, r1 + ldr r1, _0802DF6C @ =gUnknown_2023FE8 + ldr r2, [r1] + adds r2, 0x6D + movs r1, 0x2 + bl sub_804037C + b _0802DF8C + .align 2, 0 +_0802DF54: .4byte gUnknown_30030F0 +_0802DF58: .4byte sub_8011100 +_0802DF5C: .4byte gUnknown_2037AB8 +_0802DF60: .4byte gUnknown_2023BCE +_0802DF64: .4byte gUnknown_2023D6B +_0802DF68: .4byte gUnknown_202402C +_0802DF6C: .4byte gUnknown_2023FE8 +_0802DF70: + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bne _0802DF8C + ldr r1, _0802DF88 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802DFA6 + .align 2, 0 +_0802DF88: .4byte gUnknown_2023D74 +_0802DF8C: + ldr r3, _0802DFB8 @ =gUnknown_2023D74 + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_0802DFA6: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802DFB8: .4byte gUnknown_2023D74 + thumb_func_end sub_802DD38 + + thumb_func_start sub_802DFBC +sub_802DFBC: @ 802DFBC + ldr r2, _0802DFDC @ =gUnknown_2023BE4 + ldr r0, _0802DFE0 @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldr r0, _0802DFE4 @ =gUnknown_2023D50 + ldr r2, [r0] + ldrh r0, [r1, 0x28] + subs r0, r2 + strh r0, [r1, 0x28] + ldr r1, _0802DFE8 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802DFDC: .4byte gUnknown_2023BE4 +_0802DFE0: .4byte gUnknown_2023D6B +_0802DFE4: .4byte gUnknown_2023D50 +_0802DFE8: .4byte gUnknown_2023D74 + thumb_func_end sub_802DFBC + + thumb_func_start sub_802DFEC +sub_802DFEC: @ 802DFEC + ldr r1, _0802E008 @ =gUnknown_2023BE4 + ldr r0, _0802E00C @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + movs r1, 0 + str r1, [r0] + ldr r1, _0802E010 @ =gUnknown_2023D74 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802E008: .4byte gUnknown_2023BE4 +_0802E00C: .4byte gUnknown_2023D6B +_0802E010: .4byte gUnknown_2023D74 + thumb_func_end sub_802DFEC + + thumb_func_start sub_802E014 +sub_802E014: @ 802E014 + ldr r1, _0802E01C @ =gUnknown_2023BE3 + movs r0, 0xC + strb r0, [r1] + bx lr + .align 2, 0 +_0802E01C: .4byte gUnknown_2023BE3 + thumb_func_end sub_802E014 + + thumb_func_start sub_802E020 +sub_802E020: @ 802E020 + ldr r1, _0802E030 @ =gUnknown_2023BE3 + movs r0, 0xC + strb r0, [r1] + ldr r1, _0802E034 @ =gUnknown_2023BE2 + ldr r0, _0802E038 @ =gUnknown_2023BCC + ldrb r0, [r0] + strb r0, [r1] + bx lr + .align 2, 0 +_0802E030: .4byte gUnknown_2023BE3 +_0802E034: .4byte gUnknown_2023BE2 +_0802E038: .4byte gUnknown_2023BCC + thumb_func_end sub_802E020 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_setup.s b/asm/battle_setup.s new file mode 100644 index 000000000..65a21ef76 --- /dev/null +++ b/asm/battle_setup.s @@ -0,0 +1,2180 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_807F620 +sub_807F620: @ 807F620 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807F640 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0807F644 + cmp r0, 0x1 + beq _0807F65E + b _0807F686 + .align 2, 0 +_0807F640: .4byte gUnknown_3005098 +_0807F644: + bl sub_80A0E60 + cmp r0, 0 + bne _0807F686 + bl sub_812B478 + ldrb r0, [r4, 0x2] + bl sub_80D08B8 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807F686 +_0807F65E: + bl sub_80D08F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807F686 + bl sub_812B484 + bl sub_80563F0 + ldr r0, _0807F68C @ =sub_800FD9C + bl sub_8000544 + bl sub_806D7E8 + bl sub_806D788 + adds r0, r5, 0 + bl sub_8077508 +_0807F686: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807F68C: .4byte sub_800FD9C + thumb_func_end sub_807F620 + + thumb_func_start sub_807F690 +sub_807F690: @ 807F690 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _0807F6C4 @ =sub_807F620 + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0807F6C8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + adds r0, r5, 0 + bl sub_8044090 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807F6C4: .4byte sub_807F620 +_0807F6C8: .4byte gUnknown_3005090 + thumb_func_end sub_807F690 + + thumb_func_start sub_807F6CC +sub_807F6CC: @ 807F6CC + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + cmp r0, 0x1 + bne _0807F6FC + adds r0, r1, 0 + subs r0, 0x58 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x6 + bhi _0807F6FC + ldr r0, _0807F6F8 @ =0x00000167 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + cmp r0, 0 + bne _0807F6FC + movs r0, 0x1 + b _0807F6FE + .align 2, 0 +_0807F6F8: .4byte 0x00000167 +_0807F6FC: + movs r0, 0 +_0807F6FE: + pop {r1} + bx r1 + thumb_func_end sub_807F6CC + + thumb_func_start sub_807F704 +sub_807F704: @ 807F704 + push {lr} + bl sub_80A0E90 + cmp r0, 0 + beq _0807F714 + bl sub_807F7D8 + b _0807F744 +_0807F714: + ldr r0, _0807F73C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_807F6CC + lsls r0, 24 + cmp r0, 0 + beq _0807F740 + bl sub_807F810 + b _0807F744 + .align 2, 0 +_0807F73C: .4byte gUnknown_3005008 +_0807F740: + bl sub_807F748 +_0807F744: + pop {r0} + bx r0 + thumb_func_end sub_807F704 + + thumb_func_start sub_807F748 +sub_807F748: @ 807F748 + push {lr} + bl sub_8069940 + bl sub_8068974 + bl sub_805C780 + ldr r1, _0807F780 @ =gUnknown_30030F0 + ldr r0, _0807F784 @ =sub_807FB40 + str r0, [r1, 0x8] + ldr r1, _0807F788 @ =gUnknown_2022B4C + movs r0, 0 + str r0, [r1] + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + .align 2, 0 +_0807F780: .4byte gUnknown_30030F0 +_0807F784: .4byte sub_807FB40 +_0807F788: .4byte gUnknown_2022B4C + thumb_func_end sub_807F748 + + thumb_func_start sub_807F78C +sub_807F78C: @ 807F78C + push {lr} + bl sub_8069940 + bl sub_8068974 + bl sub_805C780 + ldr r1, _0807F7C8 @ =gUnknown_30030F0 + ldr r0, _0807F7CC @ =sub_807FB40 + str r0, [r1, 0x8] + ldr r1, _0807F7D0 @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 3 + str r0, [r1] + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0807F7D4 @ =0x00000155 + bl sub_807F690 + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + .align 2, 0 +_0807F7C8: .4byte gUnknown_30030F0 +_0807F7CC: .4byte sub_807FB40 +_0807F7D0: .4byte gUnknown_2022B4C +_0807F7D4: .4byte 0x00000155 + thumb_func_end sub_807F78C + + thumb_func_start sub_807F7D8 +sub_807F7D8: @ 807F7D8 + push {lr} + bl sub_8069940 + bl sub_8068974 + bl sub_805C780 + ldr r1, _0807F804 @ =gUnknown_30030F0 + ldr r0, _0807F808 @ =sub_80A0F4C + str r0, [r1, 0x8] + ldr r1, _0807F80C @ =gUnknown_2022B4C + movs r0, 0x80 + str r0, [r1] + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + pop {r0} + bx r0 + .align 2, 0 +_0807F804: .4byte gUnknown_30030F0 +_0807F808: .4byte sub_80A0F4C +_0807F80C: .4byte gUnknown_2022B4C + thumb_func_end sub_807F7D8 + + thumb_func_start sub_807F810 +sub_807F810: @ 807F810 + push {lr} + bl sub_8069940 + bl sub_8068974 + bl sub_805C780 + ldr r1, _0807F854 @ =gUnknown_30030F0 + ldr r0, _0807F858 @ =sub_807FB40 + str r0, [r1, 0x8] + ldr r1, _0807F85C @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 8 + str r0, [r1] + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + ldr r0, _0807F860 @ =gUnknown_202402C + ldr r2, _0807F864 @ =gUnknown_841D148 + movs r1, 0x2 + bl sub_804037C + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + .align 2, 0 +_0807F854: .4byte gUnknown_30030F0 +_0807F858: .4byte sub_807FB40 +_0807F85C: .4byte gUnknown_2022B4C +_0807F860: .4byte gUnknown_202402C +_0807F864: .4byte gUnknown_841D148 + thumb_func_end sub_807F810 + + thumb_func_start sub_807F868 +sub_807F868: @ 807F868 + push {lr} + bl sub_807FF80 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x9 + bl sub_8054E90 + pop {r0} + bx r0 + thumb_func_end sub_807F868 + + thumb_func_start sub_807F888 +sub_807F888: @ 807F888 + push {lr} + ldr r0, _0807F8B4 @ =gUnknown_202402C + movs r1, 0xD + movs r2, 0x5 + bl sub_803DF00 + bl sub_8069940 + ldr r1, _0807F8B8 @ =gUnknown_30030F0 + ldr r0, _0807F8BC @ =sub_80568E0 + str r0, [r1, 0x8] + ldr r1, _0807F8C0 @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 2 + str r0, [r1] + movs r0, 0x8 + movs r1, 0 + bl sub_807F690 + pop {r0} + bx r0 + .align 2, 0 +_0807F8B4: .4byte gUnknown_202402C +_0807F8B8: .4byte gUnknown_30030F0 +_0807F8BC: .4byte sub_80568E0 +_0807F8C0: .4byte gUnknown_2022B4C + thumb_func_end sub_807F888 + + thumb_func_start sub_807F8C4 +sub_807F8C4: @ 807F8C4 + push {lr} + bl sub_8069940 + ldr r1, _0807F8F8 @ =gUnknown_30030F0 + ldr r0, _0807F8FC @ =sub_807FBA0 + str r0, [r1, 0x8] + ldr r1, _0807F900 @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 10 + str r0, [r1] + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + .align 2, 0 +_0807F8F8: .4byte gUnknown_30030F0 +_0807F8FC: .4byte sub_807FBA0 +_0807F900: .4byte gUnknown_2022B4C + thumb_func_end sub_807F8C4 + + thumb_func_start sub_807F904 +sub_807F904: @ 807F904 + push {lr} + sub sp, 0xC + bl sub_8069940 + ldr r1, _0807F944 @ =gUnknown_30030F0 + ldr r0, _0807F948 @ =sub_807FBF0 + str r0, [r1, 0x8] + ldr r0, _0807F94C @ =0x00000167 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + cmp r0, 0 + beq _0807F958 + ldr r1, _0807F950 @ =gUnknown_2022B4C + movs r0, 0xA0 + lsls r0, 8 + str r0, [r1] + ldr r0, _0807F954 @ =gUnknown_202402C + movs r1, 0xFE + str r1, [sp] + movs r1, 0xC + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x69 + movs r2, 0x1E + movs r3, 0x1F + bl sub_803DE00 + b _0807F960 + .align 2, 0 +_0807F944: .4byte gUnknown_30030F0 +_0807F948: .4byte sub_807FBF0 +_0807F94C: .4byte 0x00000167 +_0807F950: .4byte gUnknown_2022B4C +_0807F954: .4byte gUnknown_202402C +_0807F958: + ldr r1, _0807F98C @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 8 + str r0, [r1] +_0807F960: + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + ldr r0, _0807F990 @ =gUnknown_202402C + ldr r2, _0807F994 @ =gUnknown_841D148 + movs r1, 0x2 + bl sub_804037C + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0807F98C: .4byte gUnknown_2022B4C +_0807F990: .4byte gUnknown_202402C +_0807F994: .4byte gUnknown_841D148 + thumb_func_end sub_807F904 + + thumb_func_start sub_807F998 +sub_807F998: @ 807F998 + push {lr} + bl sub_8069940 + ldr r1, _0807F9CC @ =gUnknown_30030F0 + ldr r0, _0807F9D0 @ =sub_807FBA0 + str r0, [r1, 0x8] + ldr r1, _0807F9D4 @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 6 + str r0, [r1] + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + .align 2, 0 +_0807F9CC: .4byte gUnknown_30030F0 +_0807F9D0: .4byte sub_807FBA0 +_0807F9D4: .4byte gUnknown_2022B4C + thumb_func_end sub_807F998 + + thumb_func_start sub_807F9D8 +sub_807F9D8: @ 807F9D8 + push {lr} + bl sub_8069940 + ldr r1, _0807FA0C @ =gUnknown_30030F0 + ldr r0, _0807FA10 @ =sub_807FBA0 + str r0, [r1, 0x8] + ldr r1, _0807FA14 @ =gUnknown_2022B4C + movs r0, 0x84 + lsls r0, 11 + str r0, [r1] + ldr r0, _0807FA18 @ =gUnknown_202402C + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0x96 + beq _0807FA2E + cmp r0, 0x96 + bgt _0807FA1C + cmp r0, 0x92 + bgt _0807FA4C + cmp r0, 0x90 + blt _0807FA4C + b _0807FA3C + .align 2, 0 +_0807FA0C: .4byte gUnknown_30030F0 +_0807FA10: .4byte sub_807FBA0 +_0807FA14: .4byte gUnknown_2022B4C +_0807FA18: .4byte gUnknown_202402C +_0807FA1C: + cmp r1, 0xF9 + blt _0807FA4C + cmp r1, 0xFA + ble _0807FA3C + movs r0, 0xCD + lsls r0, 1 + cmp r1, r0 + beq _0807FA34 + b _0807FA4C +_0807FA2E: + movs r1, 0xAA + lsls r1, 1 + b _0807FA3E +_0807FA34: + ldr r1, _0807FA38 @ =0x00000153 + b _0807FA3E + .align 2, 0 +_0807FA38: .4byte 0x00000153 +_0807FA3C: + ldr r1, _0807FA48 @ =0x00000155 +_0807FA3E: + movs r0, 0 + bl sub_807F690 + b _0807FA56 + .align 2, 0 +_0807FA48: .4byte 0x00000155 +_0807FA4C: + movs r1, 0x85 + lsls r1, 1 + movs r0, 0 + bl sub_807F690 +_0807FA56: + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + thumb_func_end sub_807F9D8 + + thumb_func_start sub_807FA68 +sub_807FA68: @ 807FA68 + push {lr} + bl sub_8069940 + ldr r1, _0807FA90 @ =gUnknown_30030F0 + ldr r0, _0807FA94 @ =sub_807FBA0 + str r0, [r1, 0x8] + ldr r1, _0807FA98 @ =gUnknown_2022B4C + movs r0, 0xC0 + lsls r0, 6 + str r0, [r1] + ldr r0, _0807FA9C @ =gUnknown_81E9F10 + ldrb r0, [r0] + cmp r0, 0x4 + bne _0807FAA0 + movs r1, 0x85 + lsls r1, 1 + movs r0, 0xB + bl sub_807F690 + b _0807FAAA + .align 2, 0 +_0807FA90: .4byte gUnknown_30030F0 +_0807FA94: .4byte sub_807FBA0 +_0807FA98: .4byte gUnknown_2022B4C +_0807FA9C: .4byte gUnknown_81E9F10 +_0807FAA0: + movs r1, 0x85 + lsls r1, 1 + movs r0, 0xB + bl sub_807F690 +_0807FAAA: + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + thumb_func_end sub_807FA68 + + thumb_func_start sub_807FABC +sub_807FABC: @ 807FABC + push {lr} + bl sub_8069940 + ldr r1, _0807FAEC @ =gUnknown_30030F0 + ldr r0, _0807FAF0 @ =sub_807FBA0 + str r0, [r1, 0x8] + ldr r1, _0807FAF4 @ =gUnknown_2022B4C + movs r0, 0xC0 + lsls r0, 7 + str r0, [r1] + movs r1, 0x85 + lsls r1, 1 + movs r0, 0 + bl sub_807F690 + movs r0, 0x7 + bl sub_8054E90 + movs r0, 0x8 + bl sub_8054E90 + pop {r0} + bx r0 + .align 2, 0 +_0807FAEC: .4byte gUnknown_30030F0 +_0807FAF0: .4byte sub_807FBA0 +_0807FAF4: .4byte gUnknown_2022B4C + thumb_func_end sub_807FABC + + thumb_func_start sub_807FAF8 +sub_807FAF8: @ 807FAF8 + push {lr} + bl sub_804C230 + bl sub_807FB40 + pop {r0} + bx r0 + thumb_func_end sub_807FAF8 + + thumb_func_start sub_807FB08 +sub_807FB08: @ 807FB08 + push {lr} + bl sub_8069940 + bl sub_8068974 + bl sub_805C780 + ldr r1, _0807FB38 @ =gUnknown_30030F0 + ldr r0, _0807FB3C @ =sub_807FAF8 + str r0, [r1, 0x8] + bl sub_804C1F0 + bl sub_8159F40 + bl sub_807FF34 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_807F690 + pop {r0} + bx r0 + .align 2, 0 +_0807FB38: .4byte gUnknown_30030F0 +_0807FB3C: .4byte sub_807FAF8 + thumb_func_end sub_807FB08 + + thumb_func_start sub_807FB40 +sub_807FB40: @ 807FB40 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _0807FB74 @ =0x01000100 + mov r0, sp + bl CpuSet + movs r0, 0 + movs r1, 0x80 + bl sub_80072E8 + ldr r0, _0807FB78 @ =gUnknown_2023E8A + ldrb r0, [r0] + bl sub_80800D0 + cmp r0, 0x1 + bne _0807FB80 + ldr r0, _0807FB7C @ =sub_80566A4 + bl sub_8000544 + b _0807FB8C + .align 2, 0 +_0807FB74: .4byte 0x01000100 +_0807FB78: .4byte gUnknown_2023E8A +_0807FB7C: .4byte sub_80566A4 +_0807FB80: + ldr r0, _0807FB94 @ =sub_80567DC + bl sub_8000544 + ldr r1, _0807FB98 @ =gUnknown_3005020 + ldr r0, _0807FB9C @ =sub_807E3EC + str r0, [r1] +_0807FB8C: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0807FB94: .4byte sub_80567DC +_0807FB98: .4byte gUnknown_3005020 +_0807FB9C: .4byte sub_807E3EC + thumb_func_end sub_807FB40 + + thumb_func_start sub_807FBA0 +sub_807FBA0: @ 807FBA0 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _0807FBD4 @ =0x01000100 + mov r0, sp + bl CpuSet + movs r0, 0 + movs r1, 0x80 + bl sub_80072E8 + ldr r0, _0807FBD8 @ =gUnknown_2023E8A + ldrb r0, [r0] + bl sub_80800D0 + cmp r0, 0x1 + bne _0807FBE0 + ldr r0, _0807FBDC @ =sub_80566A4 + bl sub_8000544 + b _0807FBE6 + .align 2, 0 +_0807FBD4: .4byte 0x01000100 +_0807FBD8: .4byte gUnknown_2023E8A +_0807FBDC: .4byte sub_80566A4 +_0807FBE0: + ldr r0, _0807FBEC @ =sub_80568E0 + bl sub_8000544 +_0807FBE6: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0807FBEC: .4byte sub_80568E0 + thumb_func_end sub_807FBA0 + + thumb_func_start sub_807FBF0 +sub_807FBF0: @ 807FBF0 + push {r4,lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _0807FC24 @ =0x01000100 + mov r0, sp + bl CpuSet + movs r0, 0 + movs r1, 0x80 + bl sub_80072E8 + ldr r4, _0807FC28 @ =gUnknown_2023E8A + ldrb r0, [r4] + bl sub_80800D0 + adds r1, r0, 0 + cmp r1, 0 + beq _0807FC30 + ldr r0, _0807FC2C @ =sub_80566A4 + bl sub_8000544 + b _0807FC4C + .align 2, 0 +_0807FC24: .4byte 0x01000100 +_0807FC28: .4byte gUnknown_2023E8A +_0807FC2C: .4byte sub_80566A4 +_0807FC30: + ldrb r0, [r4] + cmp r0, 0x1 + bne _0807FC40 + ldr r0, _0807FC3C @ =gUnknown_20370D0 + strh r1, [r0] + b _0807FC46 + .align 2, 0 +_0807FC3C: .4byte gUnknown_20370D0 +_0807FC40: + ldr r1, _0807FC54 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] +_0807FC46: + ldr r0, _0807FC58 @ =sub_80568E0 + bl sub_8000544 +_0807FC4C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807FC54: .4byte gUnknown_20370D0 +_0807FC58: .4byte sub_80568E0 + thumb_func_end sub_807FBF0 + + thumb_func_start sub_807FC5C +sub_807FC5C: @ 807FC5C + push {r4,r5,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059F34 + lsls r0, 24 + cmp r0, 0 + beq _0807FC92 + movs r0, 0 + b _0807FD88 +_0807FC92: + adds r0, r4, 0 + bl sub_8059F4C + lsls r0, 24 + cmp r0, 0 + beq _0807FCA2 + movs r0, 0x1 + b _0807FD88 +_0807FCA2: + adds r0, r4, 0 + bl sub_8059B74 + lsls r0, 24 + cmp r0, 0 + beq _0807FCB2 + movs r0, 0x2 + b _0807FD88 +_0807FCB2: + ldr r0, _0807FCC8 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + subs r0, 0x1 + cmp r0, 0x8 + bhi _0807FD2C + lsls r0, 2 + ldr r1, _0807FCCC @ =_0807FCD0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807FCC8: .4byte gUnknown_2036DFC +_0807FCCC: .4byte _0807FCD0 + .align 2, 0 +_0807FCD0: + .4byte _0807FD2C + .4byte _0807FD2C + .4byte _0807FD2C + .4byte _0807FCF4 + .4byte _0807FD18 + .4byte _0807FD1C + .4byte _0807FD2C + .4byte _0807FD04 + .4byte _0807FD04 +_0807FCF4: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059F88 + lsls r0, 24 + cmp r0, 0 + beq _0807FD08 +_0807FD04: + movs r0, 0x8 + b _0807FD88 +_0807FD08: + adds r0, r4, 0 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _0807FD70 + movs r0, 0x7 + b _0807FD88 +_0807FD18: + movs r0, 0x3 + b _0807FD88 +_0807FD1C: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _0807FD82 + b _0807FD86 +_0807FD2C: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_805A01C + lsls r0, 24 + cmp r0, 0 + bne _0807FD82 + adds r0, r4, 0 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _0807FD70 + adds r0, r4, 0 + bl sub_8059F9C + lsls r0, 24 + cmp r0, 0 + beq _0807FD58 + movs r0, 0x6 + b _0807FD88 +_0807FD58: + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _0807FD86 + adds r0, r4, 0 + bl sub_8059F5C + lsls r0, 24 + cmp r0, 0 + beq _0807FD74 +_0807FD70: + movs r0, 0x5 + b _0807FD88 +_0807FD74: + adds r0, r4, 0 + bl sub_8059F58 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807FD86 +_0807FD82: + movs r0, 0x4 + b _0807FD88 +_0807FD86: + movs r0, 0x9 +_0807FD88: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_807FC5C + + thumb_func_start sub_807FD90 +sub_807FD90: @ 807FD90 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8055D30 + lsls r0, 24 + cmp r0, 0 + beq _0807FDC0 + movs r0, 0x2 + b _0807FDEA +_0807FDC0: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _0807FDE8 + ldr r0, _0807FDE0 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x4 + beq _0807FDE4 + cmp r0, 0x5 + beq _0807FDE8 + movs r0, 0 + b _0807FDEA + .align 2, 0 +_0807FDE0: .4byte gUnknown_2036DFC +_0807FDE4: + movs r0, 0x1 + b _0807FDEA +_0807FDE8: + movs r0, 0x3 +_0807FDEA: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807FD90 + + thumb_func_start sub_807FDF4 +sub_807FDF4: @ 807FDF4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r7, 0 + movs r6, 0 +_0807FDFE: + movs r0, 0x64 + adds r1, r6, 0 + muls r1, r0 + ldr r0, _0807FE50 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + adds r1, r0, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0807FE42 + cmp r1, 0 + beq _0807FE42 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0807FE42 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r0, r7, r0 + lsls r0, 24 + lsrs r7, r0, 24 + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _0807FE48 +_0807FE42: + adds r6, 0x1 + cmp r6, 0x5 + ble _0807FDFE +_0807FE48: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0807FE50: .4byte gUnknown_2024284 + thumb_func_end sub_807FDF4 + + thumb_func_start sub_807FE54 +sub_807FE54: @ 807FE54 + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r5, _0807FE88 @ =gUnknown_823EAC8 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r2, r1, r5 + adds r0, r2, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r4 + bcs _0807FE74 + adds r4, r0, 0 +_0807FE74: + movs r3, 0 + ldrb r0, [r2] + cmp r0, 0x1 + beq _0807FEBC + cmp r0, 0x1 + bgt _0807FE8C + cmp r0, 0 + beq _0807FE96 + b _0807FF2C + .align 2, 0 +_0807FE88: .4byte gUnknown_823EAC8 +_0807FE8C: + cmp r0, 0x2 + beq _0807FEE2 + cmp r0, 0x3 + beq _0807FF08 + b _0807FF2C +_0807FE96: + adds r0, r5, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r1, [r0] + movs r2, 0 + cmp r3, r4 + bcs _0807FF2C +_0807FEA4: + lsls r0, r2, 3 + adds r0, r1 + ldrb r0, [r0, 0x2] + adds r0, r3, r0 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r4 + bcc _0807FEA4 + b _0807FF2C +_0807FEBC: + adds r0, r5, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r1, [r0] + movs r2, 0 + cmp r3, r4 + bcs _0807FF2C +_0807FECA: + lsls r0, r2, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + adds r0, r3, r0 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r4 + bcc _0807FECA + b _0807FF2C +_0807FEE2: + adds r0, r5, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r1, [r0] + movs r2, 0 + cmp r3, r4 + bcs _0807FF2C +_0807FEF0: + lsls r0, r2, 3 + adds r0, r1 + ldrb r0, [r0, 0x2] + adds r0, r3, r0 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r4 + bcc _0807FEF0 + b _0807FF2C +_0807FF08: + adds r0, r5, 0 + adds r0, 0x24 + adds r0, r1, r0 + ldr r1, [r0] + movs r2, 0 + cmp r3, r4 + bcs _0807FF2C +_0807FF16: + lsls r0, r2, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + adds r0, r3, r0 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r4 + bcc _0807FF16 +_0807FF2C: + adds r0, r3, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_807FE54 + + thumb_func_start sub_807FF34 +sub_807FF34: @ 807FF34 + push {r4,r5,lr} + bl sub_807FD90 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0807FF64 @ =gUnknown_202402C + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_807FDF4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bcc _0807FF6C + ldr r0, _0807FF68 @ =gUnknown_83C68F0 + lsls r1, r5, 1 + adds r0, 0x1 + b _0807FF70 + .align 2, 0 +_0807FF64: .4byte gUnknown_202402C +_0807FF68: .4byte gUnknown_83C68F0 +_0807FF6C: + ldr r0, _0807FF7C @ =gUnknown_83C68F0 + lsls r1, r5, 1 +_0807FF70: + adds r1, r0 + ldrb r0, [r1] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0807FF7C: .4byte gUnknown_83C68F0 + thumb_func_end sub_807FF34 + + thumb_func_start sub_807FF80 +sub_807FF80: @ 807FF80 + push {r4-r6,lr} + ldr r4, _0807FFB4 @ =gUnknown_20386AE + ldrh r1, [r4] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0808000C + ldr r1, _0807FFB8 @ =gUnknown_823EAC8 + ldrh r2, [r4] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0x1] + cmp r1, 0x57 + bne _08080008 + adds r1, r2, 0 + movs r0, 0xCD + lsls r0, 1 + cmp r1, r0 + beq _0807FFB0 + ldr r0, _0807FFBC @ =0x000002df + cmp r1, r0 + bne _0807FFC0 +_0807FFB0: + movs r0, 0xC + b _08080054 + .align 2, 0 +_0807FFB4: .4byte gUnknown_20386AE +_0807FFB8: .4byte gUnknown_823EAC8 +_0807FFBC: .4byte 0x000002df +_0807FFC0: + ldr r0, _0807FFD4 @ =0x0000019b + cmp r1, r0 + beq _0807FFCE + movs r0, 0xB8 + lsls r0, 2 + cmp r1, r0 + bne _0807FFD8 +_0807FFCE: + movs r0, 0xD + b _08080054 + .align 2, 0 +_0807FFD4: .4byte 0x0000019b +_0807FFD8: + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0807FFE6 + ldr r0, _0807FFEC @ =0x000002e1 + cmp r1, r0 + bne _0807FFF0 +_0807FFE6: + movs r0, 0xE + b _08080054 + .align 2, 0 +_0807FFEC: .4byte 0x000002e1 +_0807FFF0: + ldr r0, _08080000 @ =0x0000019d + cmp r1, r0 + beq _0807FFFC + ldr r0, _08080004 @ =0x000002e2 + cmp r1, r0 + bne _0808000C +_0807FFFC: + movs r0, 0xF + b _08080054 + .align 2, 0 +_08080000: .4byte 0x0000019d +_08080004: .4byte 0x000002e2 +_08080008: + cmp r1, 0x5A + bne _08080010 +_0808000C: + movs r0, 0x10 + b _08080054 +_08080010: + ldrb r0, [r0, 0x18] + movs r5, 0x1 + cmp r0, 0x1 + bne _0808001A + movs r5, 0x2 +_0808001A: + bl sub_807FD90 + lsls r0, 24 + lsrs r6, r0, 24 + ldrh r0, [r4] + adds r1, r5, 0 + bl sub_807FE54 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + bl sub_807FDF4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bcc _0808004C + ldr r0, _08080048 @ =gUnknown_83C68F8 + lsls r1, r6, 1 + adds r0, 0x1 + b _08080050 + .align 2, 0 +_08080048: .4byte gUnknown_83C68F8 +_0808004C: + ldr r0, _0808005C @ =gUnknown_83C68F8 + lsls r1, r6, 1 +_08080050: + adds r1, r0 + ldrb r0, [r1] +_08080054: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0808005C: .4byte gUnknown_83C68F8 + thumb_func_end sub_807FF80 + + thumb_func_start sub_8080060 +sub_8080060: @ 8080060 + push {r4,lr} + ldr r0, _08080084 @ =gUnknown_202402C + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_807FDF4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bcc _08080088 + movs r0, 0x3 + b _0808008A + .align 2, 0 +_08080084: .4byte gUnknown_202402C +_08080088: + movs r0, 0x4 +_0808008A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8080060 + + thumb_func_start sub_8080090 +sub_8080090: @ 8080090 + adds r2, r0, 0 + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + orrs r0, r1 + ldrb r1, [r2, 0x2] + lsls r1, 16 + orrs r0, r1 + ldrb r1, [r2, 0x3] + lsls r1, 24 + orrs r0, r1 + bx lr + thumb_func_end sub_8080090 + + thumb_func_start sub_80800A8 +sub_80800A8: @ 80800A8 + adds r1, r0, 0 + ldrb r0, [r1] + ldrb r1, [r1, 0x1] + lsls r1, 8 + orrs r0, r1 + bx lr + thumb_func_end sub_80800A8 + + thumb_func_start sub_80800B4 +sub_80800B4: @ 80800B4 + ldrb r0, [r0] + bx lr + thumb_func_end sub_80800B4 + + thumb_func_start sub_80800B8 +sub_80800B8: @ 80800B8 + ldr r1, _080800CC @ =gUnknown_20386AE + movs r2, 0xA0 + lsls r2, 3 + adds r0, r2, 0 + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_080800CC: .4byte gUnknown_20386AE + thumb_func_end sub_80800B8 + + thumb_func_start sub_80800D0 +sub_80800D0: @ 80800D0 + push {lr} + subs r0, 0x1 + cmp r0, 0x6 + bhi _08080108 + lsls r0, 2 + ldr r1, _080800E4 @ =_080800E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080800E4: .4byte _080800E8 + .align 2, 0 +_080800E8: + .4byte _08080108 + .4byte _08080104 + .4byte _08080104 + .4byte _08080108 + .4byte _08080108 + .4byte _08080108 + .4byte _08080108 +_08080104: + movs r0, 0x1 + b _0808010A +_08080108: + movs r0, 0 +_0808010A: + pop {r1} + bx r1 + thumb_func_end sub_80800D0 + + thumb_func_start sub_8080110 +sub_8080110: @ 8080110 + ldr r0, _08080140 @ =gUnknown_20386AC + movs r1, 0 + strh r1, [r0] + ldr r0, _08080144 @ =gUnknown_20386AE + strh r1, [r0] + ldr r0, _08080148 @ =gUnknown_20386B0 + strh r1, [r0] + ldr r0, _0808014C @ =gUnknown_20386B4 + movs r1, 0 + str r1, [r0] + ldr r0, _08080150 @ =gUnknown_20386B8 + str r1, [r0] + ldr r0, _08080154 @ =gUnknown_20386BC + str r1, [r0] + ldr r0, _08080158 @ =gUnknown_20386C0 + str r1, [r0] + ldr r0, _0808015C @ =gUnknown_20386C4 + str r1, [r0] + ldr r0, _08080160 @ =gUnknown_20386C8 + str r1, [r0] + ldr r0, _08080164 @ =gUnknown_20386CC + strh r1, [r0] + bx lr + .align 2, 0 +_08080140: .4byte gUnknown_20386AC +_08080144: .4byte gUnknown_20386AE +_08080148: .4byte gUnknown_20386B0 +_0808014C: .4byte gUnknown_20386B4 +_08080150: .4byte gUnknown_20386B8 +_08080154: .4byte gUnknown_20386BC +_08080158: .4byte gUnknown_20386C0 +_0808015C: .4byte gUnknown_20386C4 +_08080160: .4byte gUnknown_20386C8 +_08080164: .4byte gUnknown_20386CC + thumb_func_end sub_8080110 + + thumb_func_start sub_8080168 +sub_8080168: @ 8080168 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 +_0808016E: + ldrb r0, [r4, 0x4] + cmp r0, 0x6 + bhi _080801E0 + lsls r0, 2 + ldr r1, _08080180 @ =_08080184 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080180: .4byte _08080184 + .align 2, 0 +_08080184: + .4byte _080801A0 + .4byte _080801AE + .4byte _080801BC + .4byte _080801CA + .4byte _080801D2 + .4byte _080801DA + .4byte _080801E4 +_080801A0: + adds r0, r5, 0 + bl sub_80800B4 + ldr r1, [r4] + strb r0, [r1] + adds r5, 0x1 + b _080801E0 +_080801AE: + adds r0, r5, 0 + bl sub_80800A8 + ldr r1, [r4] + strh r0, [r1] + adds r5, 0x2 + b _080801E0 +_080801BC: + adds r0, r5, 0 + bl sub_8080090 + ldr r1, [r4] + str r0, [r1] + adds r5, 0x4 + b _080801E0 +_080801CA: + ldr r1, [r4] + movs r0, 0 + strb r0, [r1] + b _080801E0 +_080801D2: + ldr r1, [r4] + movs r0, 0 + strh r0, [r1] + b _080801E0 +_080801DA: + ldr r1, [r4] + movs r0, 0 + str r0, [r1] +_080801E0: + adds r4, 0x8 + b _0808016E +_080801E4: + ldr r0, [r4] + str r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8080168 + + thumb_func_start sub_80801F0 +sub_80801F0: @ 80801F0 + push {lr} + ldr r0, _08080218 @ =gUnknown_20386B0 + ldrh r1, [r0] + cmp r1, 0 + beq _08080212 + ldr r0, _0808021C @ =gUnknown_20370D2 + strh r1, [r0] + lsls r0, r1, 24 + lsrs r0, 24 + ldr r1, _08080220 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805DF60 + ldr r1, _08080224 @ =gUnknown_3005074 + strb r0, [r1] +_08080212: + pop {r0} + bx r0 + .align 2, 0 +_08080218: .4byte gUnknown_20386B0 +_0808021C: .4byte gUnknown_20370D2 +_08080220: .4byte gUnknown_3005008 +_08080224: .4byte gUnknown_3005074 + thumb_func_end sub_80801F0 + + thumb_func_start sub_8080228 +sub_8080228: @ 8080228 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8080110 + ldr r4, _08080250 @ =gUnknown_20386AC + adds r0, r5, 0 + bl sub_80800B4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + ldrh r0, [r4] + subs r0, 0x1 + cmp r0, 0x8 + bhi _08080318 + lsls r0, 2 + ldr r1, _08080254 @ =_08080258 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080250: .4byte gUnknown_20386AC +_08080254: .4byte _08080258 + .align 2, 0 +_08080258: + .4byte _0808028C + .4byte _0808028C + .4byte _0808027C + .4byte _08080284 + .4byte _080802D8 + .4byte _08080294 + .4byte _080802AC + .4byte _08080294 + .4byte _08080304 +_0808027C: + ldr r0, _08080280 @ =gUnknown_83C69D8 + b _08080306 + .align 2, 0 +_08080280: .4byte gUnknown_83C69D8 +_08080284: + ldr r0, _08080288 @ =gUnknown_83C6990 + b _08080296 + .align 2, 0 +_08080288: .4byte gUnknown_83C6990 +_0808028C: + ldr r0, _08080290 @ =gUnknown_83C6948 + b _0808031A + .align 2, 0 +_08080290: .4byte gUnknown_83C6948 +_08080294: + ldr r0, _080802A4 @ =gUnknown_83C6A68 +_08080296: + adds r1, r5, 0 + bl sub_8080168 + bl sub_80801F0 + ldr r0, _080802A8 @ =gUnknown_81A4EE9 + b _08080326 + .align 2, 0 +_080802A4: .4byte gUnknown_83C6A68 +_080802A8: .4byte gUnknown_81A4EE9 +_080802AC: + bl sub_811231C + ldr r0, _080802CC @ =gUnknown_83C6990 + adds r1, r5, 0 + bl sub_8080168 + bl sub_80801F0 + ldr r4, _080802D0 @ =gUnknown_20386AE + ldrh r0, [r4] + bl sub_810CE64 + strh r0, [r4] + ldr r0, _080802D4 @ =gUnknown_81A4F73 + b _08080326 + .align 2, 0 +_080802CC: .4byte gUnknown_83C6990 +_080802D0: .4byte gUnknown_20386AE +_080802D4: .4byte gUnknown_81A4F73 +_080802D8: + bl sub_811231C + ldr r0, _080802F8 @ =gUnknown_83C6900 + adds r1, r5, 0 + bl sub_8080168 + bl sub_80801F0 + ldr r4, _080802FC @ =gUnknown_20386AE + ldrh r0, [r4] + bl sub_810CE64 + strh r0, [r4] + ldr r0, _08080300 @ =gUnknown_81A4F3E + b _08080326 + .align 2, 0 +_080802F8: .4byte gUnknown_83C6900 +_080802FC: .4byte gUnknown_20386AE +_08080300: .4byte gUnknown_81A4F3E +_08080304: + ldr r0, _08080310 @ =gUnknown_83C6A20 +_08080306: + adds r1, r5, 0 + bl sub_8080168 + ldr r0, _08080314 @ =gUnknown_81A4F21 + b _08080326 + .align 2, 0 +_08080310: .4byte gUnknown_83C6A20 +_08080314: .4byte gUnknown_81A4F21 +_08080318: + ldr r0, _0808032C @ =gUnknown_83C6900 +_0808031A: + adds r1, r5, 0 + bl sub_8080168 + bl sub_80801F0 + ldr r0, _08080330 @ =gUnknown_81A4EC1 +_08080326: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808032C: .4byte gUnknown_83C6900 +_08080330: .4byte gUnknown_81A4EC1 + thumb_func_end sub_8080228 + + thumb_func_start sub_8080334 +sub_8080334: @ 8080334 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08080368 @ =gUnknown_3005074 + strb r0, [r2] + ldr r4, _0808036C @ =gUnknown_20370D2 + ldr r3, _08080370 @ =gUnknown_2036E38 + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r0, [r2, 0x8] + strh r0, [r4] + adds r1, 0x1 + adds r0, r1, 0 + bl sub_8080228 + ldr r0, _08080374 @ =gUnknown_81A4EB4 + bl sub_8069AE4 + bl sub_8069940 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08080368: .4byte gUnknown_3005074 +_0808036C: .4byte gUnknown_20370D2 +_08080370: .4byte gUnknown_2036E38 +_08080374: .4byte gUnknown_81A4EB4 + thumb_func_end sub_8080334 + + thumb_func_start sub_8080378 +sub_8080378: @ 8080378 + push {lr} + adds r0, 0x2 + bl sub_80800A8 + lsls r0, 16 + movs r1, 0xA0 + lsls r1, 19 + adds r0, r1 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8080378 + + thumb_func_start sub_8080398 +sub_8080398: @ 8080398 + push {r4,lr} + ldr r0, _080803C4 @ =gUnknown_3005074 + ldrb r0, [r0] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080803C8 @ =gUnknown_2036E38 + adds r4, r0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806365C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063610 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080803C4: .4byte gUnknown_3005074 +_080803C8: .4byte gUnknown_2036E38 + thumb_func_end sub_8080398 + + thumb_func_start sub_80803CC +sub_80803CC: @ 80803CC + ldr r0, _080803D4 @ =gUnknown_20386AC + ldrb r0, [r0] + bx lr + .align 2, 0 +_080803D4: .4byte gUnknown_20386AC + thumb_func_end sub_80803CC + + thumb_func_start sub_80803D8 +sub_80803D8: @ 80803D8 + ldr r0, _080803E0 @ =gUnknown_20386CC + ldrh r0, [r0] + bx lr + .align 2, 0 +_080803E0: .4byte gUnknown_20386CC + thumb_func_end sub_80803D8 + + thumb_func_start sub_80803E4 +sub_80803E4: @ 80803E4 + push {lr} + bl sub_80800B8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80803E4 + + thumb_func_start sub_80803FC +sub_80803FC: @ 80803FC + push {lr} + bl sub_80800B8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E680 + pop {r0} + bx r0 + thumb_func_end sub_80803FC + + thumb_func_start sub_8080410 +sub_8080410: @ 8080410 + push {lr} + bl sub_80800B8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E680 + pop {r0} + bx r0 + thumb_func_end sub_8080410 + + thumb_func_start sub_8080424 +sub_8080424: @ 8080424 + push {lr} + lsls r0, 16 + movs r1, 0xA0 + lsls r1, 19 + adds r0, r1 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8080424 + + thumb_func_start sub_808043C +sub_808043C: @ 808043C + push {lr} + lsls r0, 16 + movs r1, 0xA0 + lsls r1, 19 + adds r0, r1 + lsrs r0, 16 + bl sub_806E680 + pop {r0} + bx r0 + thumb_func_end sub_808043C + + thumb_func_start sub_8080450 +sub_8080450: @ 8080450 + push {lr} + lsls r0, 16 + movs r1, 0xA0 + lsls r1, 19 + adds r0, r1 + lsrs r0, 16 + bl sub_806E6A8 + pop {r0} + bx r0 + thumb_func_end sub_8080450 + + thumb_func_start sub_8080464 +sub_8080464: @ 8080464 + push {r4,lr} + ldr r4, _080804A0 @ =gUnknown_2022B4C + movs r0, 0x8 + str r0, [r4] + bl sub_80803CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bne _0808048C + bl sub_80803D8 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0 + beq _0808048C + ldr r0, [r4] + movs r1, 0x10 + orrs r0, r1 + str r0, [r4] +_0808048C: + ldr r1, _080804A4 @ =gUnknown_30030F0 + ldr r0, _080804A8 @ =sub_80804AC + str r0, [r1, 0x8] + bl sub_807F868 + bl sub_8069B28 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080804A0: .4byte gUnknown_2022B4C +_080804A4: .4byte gUnknown_30030F0 +_080804A8: .4byte sub_80804AC + thumb_func_end sub_8080464 + + thumb_func_start sub_80804AC +sub_80804AC: @ 80804AC + push {lr} + ldr r0, _080804D8 @ =gUnknown_20386AC + ldrh r0, [r0] + cmp r0, 0x9 + bne _08080508 + ldr r0, _080804DC @ =gUnknown_2023E8A + ldrb r0, [r0] + bl sub_80800D0 + adds r1, r0, 0 + cmp r1, 0x1 + bne _080804E8 + ldr r0, _080804E0 @ =gUnknown_20370D0 + strh r1, [r0] + ldr r0, _080804E4 @ =gUnknown_20386CC + ldrh r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08080530 + bl sub_80A0058 + b _080804EE + .align 2, 0 +_080804D8: .4byte gUnknown_20386AC +_080804DC: .4byte gUnknown_2023E8A +_080804E0: .4byte gUnknown_20370D0 +_080804E4: .4byte gUnknown_20386CC +_080804E8: + ldr r0, _08080500 @ =gUnknown_20370D0 + movs r1, 0 + strh r1, [r0] +_080804EE: + ldr r0, _08080504 @ =sub_80568E0 + bl sub_8000544 + bl sub_80803FC + bl sub_81139BC + b _0808054E + .align 2, 0 +_08080500: .4byte gUnknown_20370D0 +_08080504: .4byte sub_80568E0 +_08080508: + ldr r0, _0808051C @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _08080524 + ldr r0, _08080520 @ =sub_80568E0 + bl sub_8000544 + b _0808054E + .align 2, 0 +_0808051C: .4byte gUnknown_20386AE +_08080520: .4byte sub_80568E0 +_08080524: + ldr r0, _08080538 @ =gUnknown_2023E8A + ldrb r0, [r0] + bl sub_80800D0 + cmp r0, 0x1 + bne _08080540 +_08080530: + ldr r0, _0808053C @ =sub_80566A4 + bl sub_8000544 + b _0808054E + .align 2, 0 +_08080538: .4byte gUnknown_2023E8A +_0808053C: .4byte sub_80566A4 +_08080540: + ldr r0, _08080554 @ =sub_80568E0 + bl sub_8000544 + bl sub_80803FC + bl sub_81139BC +_0808054E: + pop {r0} + bx r0 + .align 2, 0 +_08080554: .4byte sub_80568E0 + thumb_func_end sub_80804AC + + thumb_func_start sub_8080558 +sub_8080558: @ 8080558 + push {lr} + ldr r0, _08080570 @ =gUnknown_20386AE + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _08080578 + ldr r0, _08080574 @ =sub_80568E0 + bl sub_8000544 + b _080805A6 + .align 2, 0 +_08080570: .4byte gUnknown_20386AE +_08080574: .4byte sub_80568E0 +_08080578: + ldr r0, _0808058C @ =gUnknown_2023E8A + ldrb r0, [r0] + bl sub_80800D0 + cmp r0, 0x1 + bne _08080594 + ldr r0, _08080590 @ =sub_80566A4 + bl sub_8000544 + b _080805A6 + .align 2, 0 +_0808058C: .4byte gUnknown_2023E8A +_08080590: .4byte sub_80566A4 +_08080594: + ldr r0, _080805AC @ =sub_80568E0 + bl sub_8000544 + bl sub_80803FC + bl sub_810CDE8 + bl sub_81138F8 +_080805A6: + pop {r0} + bx r0 + .align 2, 0 +_080805AC: .4byte sub_80568E0 + thumb_func_end sub_8080558 + + thumb_func_start sub_80805B0 +sub_80805B0: @ 80805B0 + push {lr} + ldr r1, _080805CC @ =gUnknown_2022B4C + movs r0, 0x8 + str r0, [r1] + ldr r1, _080805D0 @ =gUnknown_30030F0 + ldr r0, _080805D4 @ =sub_8080558 + str r0, [r1, 0x8] + bl sub_807F868 + bl sub_8069B28 + pop {r0} + bx r0 + .align 2, 0 +_080805CC: .4byte gUnknown_2022B4C +_080805D0: .4byte gUnknown_30030F0 +_080805D4: .4byte sub_8080558 + thumb_func_end sub_80805B0 + + thumb_func_start sub_80805D8 +sub_80805D8: @ 80805D8 + push {lr} + bl sub_80806D8 + bl sub_806943C + pop {r0} + bx r0 + thumb_func_end sub_80805D8 + + thumb_func_start sub_80805E8 +sub_80805E8: @ 80805E8 + push {lr} + ldr r0, _080805F8 @ =gUnknown_20386C4 + ldr r0, [r0] + cmp r0, 0 + bne _080805F4 + ldr r0, _080805FC @ =gUnknown_81C555B +_080805F4: + pop {r1} + bx r1 + .align 2, 0 +_080805F8: .4byte gUnknown_20386C4 +_080805FC: .4byte gUnknown_81C555B + thumb_func_end sub_80805E8 + + thumb_func_start sub_8080600 +sub_8080600: @ 8080600 + push {lr} + ldr r0, _08080610 @ =gUnknown_20386C8 + ldr r0, [r0] + cmp r0, 0 + bne _0808060C + ldr r0, _08080614 @ =gUnknown_81C555B +_0808060C: + pop {r1} + bx r1 + .align 2, 0 +_08080610: .4byte gUnknown_20386C8 +_08080614: .4byte gUnknown_81C555B + thumb_func_end sub_8080600 + + thumb_func_start sub_8080618 +sub_8080618: @ 8080618 + push {lr} + bl sub_8080734 + bl sub_806943C + pop {r0} + bx r0 + thumb_func_end sub_8080618 + + thumb_func_start sub_8080628 +sub_8080628: @ 8080628 + push {lr} + ldr r0, _08080660 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080806BE + ldr r0, _08080664 @ =gUnknown_20386AC + ldrh r0, [r0] + cmp r0, 0x1 + beq _080806BE + cmp r0, 0x8 + beq _080806BE + ldr r0, _08080668 @ =gUnknown_20386AE + ldrh r0, [r0] + bl sub_804367C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD + bhi _080806B8 + lsls r0, 2 + ldr r1, _0808066C @ =_08080670 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080660: .4byte gUnknown_203ADFA +_08080664: .4byte gUnknown_20386AC +_08080668: .4byte gUnknown_20386AE +_0808066C: .4byte _08080670 + .align 2, 0 +_08080670: + .4byte _080806AE + .4byte _080806A8 + .4byte _080806A8 + .4byte _080806B8 + .4byte _080806AE + .4byte _080806AE + .4byte _080806B8 + .4byte _080806B8 + .4byte _080806AE + .4byte _080806A8 + .4byte _080806AE + .4byte _080806AE + .4byte _080806AE + .4byte _080806AE +_080806A8: + movs r0, 0x8E + lsls r0, 1 + b _080806BA +_080806AE: + ldr r0, _080806B4 @ =0x0000011d + b _080806BA + .align 2, 0 +_080806B4: .4byte 0x0000011d +_080806B8: + ldr r0, _080806C4 @ =0x0000011b +_080806BA: + bl sub_8071A74 +_080806BE: + pop {r0} + bx r0 + .align 2, 0 +_080806C4: .4byte 0x0000011b + thumb_func_end sub_8080628 + + thumb_func_start sub_80806C8 +sub_80806C8: @ 80806C8 + push {lr} + cmp r0, 0 + bne _080806D0 + ldr r0, _080806D4 @ =gUnknown_84161CD +_080806D0: + pop {r1} + bx r1 + .align 2, 0 +_080806D4: .4byte gUnknown_84161CD + thumb_func_end sub_80806C8 + + thumb_func_start sub_80806D8 +sub_80806D8: @ 80806D8 + push {lr} + ldr r0, _080806E8 @ =gUnknown_20386B4 + ldr r0, [r0] + bl sub_80806C8 + pop {r1} + bx r1 + .align 2, 0 +_080806E8: .4byte gUnknown_20386B4 + thumb_func_end sub_80806D8 + + thumb_func_start sub_80806EC +sub_80806EC: @ 80806EC + push {r4,lr} + ldr r0, _08080708 @ =gUnknown_20386B8 + ldr r0, [r0] + ldr r4, _0808070C @ =gUnknown_2021D18 + bl sub_80806C8 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08080708: .4byte gUnknown_20386B8 +_0808070C: .4byte gUnknown_2021D18 + thumb_func_end sub_80806EC + + thumb_func_start sub_8080710 +sub_8080710: @ 8080710 + push {r4,lr} + ldr r4, _0808072C @ =gUnknown_2021D18 + ldr r0, _08080730 @ =gUnknown_20386BC + ldr r0, [r0] + bl sub_80806C8 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808072C: .4byte gUnknown_2021D18 +_08080730: .4byte gUnknown_20386BC + thumb_func_end sub_8080710 + + thumb_func_start sub_8080734 +sub_8080734: @ 8080734 + push {lr} + ldr r0, _08080744 @ =gUnknown_20386C0 + ldr r0, [r0] + bl sub_80806C8 + pop {r1} + bx r1 + .align 2, 0 +_08080744: .4byte gUnknown_20386C0 + thumb_func_end sub_8080734 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_tower.s b/asm/battle_tower.s new file mode 100644 index 000000000..852934e2e --- /dev/null +++ b/asm/battle_tower.s @@ -0,0 +1,3664 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80E5970 +sub_80E5970: @ 80E5970 + push {r4,r5,lr} + movs r4, 0 + movs r5, 0 +_080E5976: + ldr r0, _080E5990 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E5994 @ =0x0000055e + adds r0, r1 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x6 + bhi _080E59B8 + lsls r0, 2 + ldr r1, _080E5998 @ =_080E599C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E5990: .4byte gUnknown_300500C +_080E5994: .4byte 0x0000055e +_080E5998: .4byte _080E599C + .align 2, 0 +_080E599C: + .4byte _080E59B8 + .4byte _080E59D0 + .4byte _080E59F0 + .4byte _080E5A00 + .4byte _080E59E0 + .4byte _080E59E8 + .4byte _080E5A00 +_080E59B8: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80E5A38 + cmp r4, 0 + bne _080E5A00 + movs r0, 0x80 + lsls r0, 7 + movs r1, 0x5 + bl sub_806E584 + b _080E5A00 +_080E59D0: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80E5A38 + movs r0, 0x80 + lsls r0, 7 + movs r1, 0x1 + b _080E59F6 +_080E59E0: + movs r0, 0x80 + lsls r0, 7 + movs r1, 0x2 + b _080E59F6 +_080E59E8: + movs r0, 0x80 + lsls r0, 7 + movs r1, 0x3 + b _080E59F6 +_080E59F0: + movs r0, 0x80 + lsls r0, 7 + movs r1, 0x4 +_080E59F6: + bl sub_806E584 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080E5A00: + adds r5, 0x1 + cmp r5, 0x1 + ble _080E5976 + ldr r0, _080E5A2C @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E5A30 @ =0x0000055e + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080E5A34 @ =0x00000303 + cmp r1, r0 + bne _080E5A20 + movs r0, 0x80 + lsls r0, 7 + movs r1, 0x5 + bl sub_806E584 +_080E5A20: + bl sub_80E7064 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E5A2C: .4byte gUnknown_300500C +_080E5A30: .4byte 0x0000055e +_080E5A34: .4byte 0x00000303 + thumb_func_end sub_80E5970 + + thumb_func_start sub_80E5A38 +sub_80E5A38: @ 80E5A38 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080E5A64 @ =gUnknown_300500C + ldr r1, [r3] + ldr r2, _080E5A68 @ =0x0000055e + adds r1, r2 + adds r1, r0 + movs r2, 0 + strb r2, [r1] + ldr r2, [r3] + lsls r0, 1 + movs r3, 0xAC + lsls r3, 3 + adds r1, r2, r3 + adds r1, r0 + movs r3, 0x1 + strh r3, [r1] + ldr r1, _080E5A6C @ =0x00000564 + adds r2, r1 + adds r2, r0 + strh r3, [r2] + bx lr + .align 2, 0 +_080E5A64: .4byte gUnknown_300500C +_080E5A68: .4byte 0x0000055e +_080E5A6C: .4byte 0x00000564 + thumb_func_end sub_80E5A38 + + thumb_func_start sub_80E5A70 +sub_80E5A70: @ 80E5A70 + push {r4-r7,lr} + sub sp, 0x2C + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r6, r1, 16 + add r4, sp, 0x28 + movs r0, 0 + strb r0, [r4] + bl sub_80E7490 + ldr r0, _080E5AA4 @ =gUnknown_20370D0 + ldrh r0, [r0] + adds r7, r4, 0 + cmp r0, 0 + bne _080E5A9E + ldr r0, _080E5AA8 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E5AAC @ =0x000004a2 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r6 + beq _080E5AB0 +_080E5A9E: + movs r0, 0 + b _080E5B02 + .align 2, 0 +_080E5AA4: .4byte gUnknown_20370D0 +_080E5AA8: .4byte gUnknown_300500C +_080E5AAC: .4byte 0x000004a2 +_080E5AB0: + movs r6, 0x32 + cmp r5, 0 + beq _080E5AB8 + movs r6, 0x64 +_080E5AB8: + movs r4, 0 +_080E5ABA: + ldr r0, _080E5B0C @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0x2C + muls r0, r4 + adds r1, r0 + movs r2, 0x9C + lsls r2, 3 + adds r0, r1, r2 + ldrb r2, [r0] + cmp r2, r6 + bne _080E5A9E + ldr r3, _080E5B10 @ =0x000004d4 + adds r0, r1, r3 + ldrh r0, [r0] + adds r3, 0x2 + adds r1, r3 + ldrh r1, [r1] + str r2, [sp] + add r2, sp, 0x10 + str r2, [sp, 0x4] + add r2, sp, 0x1C + str r2, [sp, 0x8] + str r7, [sp, 0xC] + movs r2, 0x1 + adds r3, r5, 0 + bl sub_80E6564 + adds r4, 0x1 + cmp r4, 0x2 + ble _080E5ABA + movs r1, 0 + ldrb r0, [r7] + cmp r0, 0x3 + bne _080E5B00 + movs r1, 0x1 +_080E5B00: + adds r0, r1, 0 +_080E5B02: + add sp, 0x2C + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080E5B0C: .4byte gUnknown_300500C +_080E5B10: .4byte 0x000004d4 + thumb_func_end sub_80E5A70 + + thumb_func_start sub_80E5B14 +sub_80E5B14: @ 80E5B14 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + movs r0, 0 + str r0, [sp, 0x14] + ldr r4, _080E5B58 @ =gUnknown_300500C + ldr r0, [r4] + ldr r1, _080E5B5C @ =0x0000055c + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + mov r8, r0 + bl sub_80E7188 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + mov r0, r8 + mov r1, r9 + bl sub_80E5A70 + lsls r0, 24 + cmp r0, 0 + beq _080E5B64 + ldr r0, [r4] + ldr r2, _080E5B60 @ =0x0000056c + adds r0, r2 + movs r1, 0xC8 + strb r1, [r0] + b _080E5C0C + .align 2, 0 +_080E5B58: .4byte gUnknown_300500C +_080E5B5C: .4byte 0x0000055c +_080E5B60: .4byte 0x0000056c +_080E5B64: + movs r6, 0 + movs r3, 0xA4 + mov r10, r3 + movs r7, 0xAA + lsls r7, 1 + mov r12, r7 + ldr r0, _080E5BE8 @ =gUnknown_300500C + ldr r0, [r0] + str r0, [sp, 0x18] + mov r1, sp + str r1, [sp, 0x1C] +_080E5B7A: + mov r0, r10 + muls r0, r6 + add r0, r12 + movs r4, 0 + movs r5, 0 + movs r1, 0 + adds r2, r6, 0x1 + str r2, [sp, 0x20] + ldr r3, [sp, 0x18] + adds r2, r3, r0 +_080E5B8E: + ldm r2!, {r0} + orrs r4, r0 + adds r5, r0 + adds r1, 0x1 + cmp r1, 0x27 + bls _080E5B8E + ldr r7, _080E5BE8 @ =gUnknown_300500C + ldr r2, [r7] + mov r3, r10 + muls r3, r6 + adds r1, r2, r3 + movs r7, 0xAB + lsls r7, 1 + adds r0, r1, r7 + ldrh r0, [r0] + cmp r0, r9 + bne _080E5BD8 + mov r7, r12 + adds r0, r1, r7 + ldrb r0, [r0] + cmp r0, r8 + bne _080E5BD8 + cmp r4, 0 + beq _080E5BD8 + movs r1, 0xFA + lsls r1, 1 + adds r0, r2, r1 + adds r0, r3 + ldr r0, [r0] + cmp r0, r5 + bne _080E5BD8 + ldr r2, [sp, 0x1C] + stm r2!, {r6} + str r2, [sp, 0x1C] + ldr r3, [sp, 0x14] + adds r3, 0x1 + str r3, [sp, 0x14] +_080E5BD8: + ldr r6, [sp, 0x20] + cmp r6, 0x4 + ble _080E5B7A + ldr r7, [sp, 0x14] + cmp r7, 0 + bne _080E5BEC + movs r0, 0 + b _080E5C0E + .align 2, 0 +_080E5BE8: .4byte gUnknown_300500C +_080E5BEC: + bl sub_8044EC8 + ldr r1, _080E5C20 @ =gUnknown_300500C + ldr r4, [r1] + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp, 0x14] + bl __modsi3 + lsls r0, 2 + add r0, sp + ldr r0, [r0] + adds r0, 0x64 + ldr r1, _080E5C24 @ =0x0000056c + adds r4, r1 + strb r0, [r4] +_080E5C0C: + movs r0, 0x1 +_080E5C0E: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080E5C20: .4byte gUnknown_300500C +_080E5C24: .4byte 0x0000056c + thumb_func_end sub_80E5B14 + + thumb_func_start sub_80E5C28 +sub_80E5C28: @ 80E5C28 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r5, _080E5C6C @ =gUnknown_300500C + ldr r0, [r5] + ldr r1, _080E5C70 @ =0x0000055c + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + lsrs r6, r0, 31 + bl sub_80E5B14 + lsls r0, 24 + cmp r0, 0 + beq _080E5C7C + ldr r0, [r5] + ldr r4, _080E5C74 @ =0x0000056c + adds r0, r4 + ldrb r0, [r0] + bl sub_80E5E5C + ldr r1, [r5] + lsls r2, r6, 1 + movs r3, 0xAC + lsls r3, 3 + adds r0, r1, r3 + adds r0, r2 + ldrh r0, [r0] + adds r0, r1, r0 + ldr r2, _080E5C78 @ =0x00000571 + adds r0, r2 + adds r1, r4 + b _080E5E3E + .align 2, 0 +_080E5C6C: .4byte gUnknown_300500C +_080E5C70: .4byte 0x0000055c +_080E5C74: .4byte 0x0000056c +_080E5C78: .4byte 0x00000571 +_080E5C7C: + ldr r2, [r5] + lsls r0, r6, 1 + ldr r3, _080E5D1C @ =0x00000564 + adds r1, r2, r3 + adds r1, r0 + ldrh r1, [r1] + adds r6, r0, 0 + cmp r1, 0x7 + bls _080E5C90 + b _080E5DB8 +_080E5C90: + movs r1, 0xAC + lsls r1, 3 + adds r0, r2, r1 + adds r0, r6 + ldrh r0, [r0] + cmp r0, 0x7 + bne _080E5D2C + adds r7, r6, 0 + mov r8, r5 +_080E5CA2: + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + lsls r2, r1, 2 + adds r2, r1 + mov r3, r8 + ldr r4, [r3] + ldr r1, _080E5D1C @ =0x00000564 + adds r0, r4, r1 + adds r0, r7 + ldrh r1, [r0] + subs r1, 0x1 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, 0x14 + lsrs r2, 7 + adds r2, r0 + lsls r2, 16 + lsrs r5, r2, 16 + movs r3, 0 + movs r0, 0xAC + lsls r0, 3 + adds r2, r4, r0 + adds r0, r2, r7 + ldrh r0, [r0] + subs r0, 0x1 + cmp r3, r0 + bge _080E5CFC + ldr r0, _080E5D20 @ =0x00000572 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, r5 + beq _080E5CFC + adds r0, r2, r6 + ldrh r0, [r0] + subs r4, r0, 0x1 +_080E5CEE: + adds r3, 0x1 + cmp r3, r4 + bge _080E5CFC + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r5 + bne _080E5CEE +_080E5CFC: + mov r1, r8 + ldr r0, [r1] + movs r2, 0xAC + lsls r2, 3 + adds r0, r2 + adds r0, r6 + ldrh r0, [r0] + subs r0, 0x1 + ldr r4, _080E5D24 @ =gUnknown_300500C + cmp r3, r0 + bne _080E5CA2 + ldr r0, [r4] + ldr r3, _080E5D28 @ =0x0000056c + adds r0, r3 + b _080E5E16 + .align 2, 0 +_080E5D1C: .4byte 0x00000564 +_080E5D20: .4byte 0x00000572 +_080E5D24: .4byte gUnknown_300500C +_080E5D28: .4byte 0x0000056c +_080E5D2C: + adds r7, r6, 0 + mov r8, r5 +_080E5D30: + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + lsls r0, r1, 2 + adds r0, r1 + lsrs r5, r0, 6 + mov r0, r8 + ldr r4, [r0] + ldr r1, _080E5DA8 @ =0x00000564 + adds r0, r4, r1 + adds r0, r7 + ldrh r1, [r0] + subs r1, 0x1 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + movs r3, 0 + movs r0, 0xAC + lsls r0, 3 + adds r2, r4, r0 + adds r0, r2, r7 + ldrh r0, [r0] + subs r0, 0x1 + cmp r3, r0 + bge _080E5D88 + ldr r0, _080E5DAC @ =0x00000572 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, r5 + beq _080E5D88 + adds r0, r2, r6 + ldrh r0, [r0] + subs r4, r0, 0x1 +_080E5D7A: + adds r3, 0x1 + cmp r3, r4 + bge _080E5D88 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r5 + bne _080E5D7A +_080E5D88: + mov r1, r8 + ldr r0, [r1] + movs r2, 0xAC + lsls r2, 3 + adds r0, r2 + adds r0, r6 + ldrh r0, [r0] + subs r0, 0x1 + ldr r4, _080E5DB0 @ =gUnknown_300500C + cmp r3, r0 + bne _080E5D30 + ldr r0, [r4] + ldr r3, _080E5DB4 @ =0x0000056c + adds r0, r3 + b _080E5E16 + .align 2, 0 +_080E5DA8: .4byte 0x00000564 +_080E5DAC: .4byte 0x00000572 +_080E5DB0: .4byte gUnknown_300500C +_080E5DB4: .4byte 0x0000056c +_080E5DB8: + adds r7, r5, 0 +_080E5DBA: + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 1 + asrs r0, 8 + adds r0, 0x46 + lsls r0, 16 + lsrs r5, r0, 16 + movs r3, 0 + ldr r1, [r7] + movs r2, 0xAC + lsls r2, 3 + adds r0, r1, r2 + adds r0, r6 + ldrh r0, [r0] + subs r4, r0, 0x1 + cmp r3, r4 + bge _080E5DFC + ldr r0, _080E5E4C @ =0x00000572 + adds r1, r0 + ldrb r0, [r1] + cmp r0, r5 + beq _080E5DFC +_080E5DEE: + adds r3, 0x1 + cmp r3, r4 + bge _080E5DFC + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r5 + bne _080E5DEE +_080E5DFC: + ldr r0, [r7] + movs r1, 0xAC + lsls r1, 3 + adds r0, r1 + adds r0, r6 + ldrh r0, [r0] + subs r0, 0x1 + ldr r4, _080E5E50 @ =gUnknown_300500C + cmp r3, r0 + bne _080E5DBA + ldr r0, [r4] + ldr r2, _080E5E54 @ =0x0000056c + adds r0, r2 +_080E5E16: + strb r5, [r0] + ldr r0, [r4] + ldr r3, _080E5E54 @ =0x0000056c + adds r0, r3 + ldrb r0, [r0] + bl sub_80E5E5C + ldr r1, [r4] + movs r2, 0xAC + lsls r2, 3 + adds r0, r1, r2 + adds r2, r0, r6 + ldrh r0, [r2] + cmp r0, 0x6 + bhi _080E5E42 + adds r0, r1, r0 + ldr r3, _080E5E58 @ =0x00000571 + adds r0, r3 + ldr r2, _080E5E54 @ =0x0000056c + adds r1, r2 +_080E5E3E: + ldrb r1, [r1] + strb r1, [r0] +_080E5E42: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E5E4C: .4byte 0x00000572 +_080E5E50: .4byte gUnknown_300500C +_080E5E54: .4byte 0x0000056c +_080E5E58: .4byte 0x00000571 + thumb_func_end sub_80E5C28 + + thumb_func_start sub_80E5E5C +sub_80E5E5C: @ 80E5E5C + push {lr} + ldr r0, _080E5E6C @ =0x00004010 + movs r1, 0x12 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_080E5E6C: .4byte 0x00004010 + thumb_func_end sub_80E5E5C + + thumb_func_start sub_80E5E70 +sub_80E5E70: @ 80E5E70 + push {lr} + movs r0, 0xC8 + bl sub_80E5E5C + pop {r0} + bx r0 + thumb_func_end sub_80E5E70 + + thumb_func_start sub_80E5E7C +sub_80E5E7C: @ 80E5E7C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + movs r1, 0 + mov r8, r1 + mov r10, r0 + movs r5, 0 + ldr r2, _080E5F08 @ =gUnknown_300500C + ldr r0, [r2] + mov r4, r10 + ldrb r4, [r4, 0xC] + str r4, [sp, 0x18] + mov r9, r5 + movs r7, 0x4 + str r7, [sp, 0x1C] + movs r1, 0xB0 + lsls r1, 1 + adds r1, r0 + mov r12, r1 +_080E5EA8: + movs r6, 0 + movs r3, 0 + mov r2, r12 + ldrb r0, [r2] + ldr r4, [sp, 0x18] + cmp r0, r4 + bne _080E5EDA + mov r4, r9 + mov r2, r10 + adds r2, 0xC +_080E5EBC: + adds r3, 0x1 + cmp r3, 0x3 + bgt _080E5EDA + ldr r7, _080E5F08 @ =gUnknown_300500C + ldr r0, [r7] + adds r1, r3, r4 + movs r7, 0xB0 + lsls r7, 1 + adds r0, r7 + adds r0, r1 + adds r1, r2, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _080E5EBC +_080E5EDA: + cmp r3, 0x4 + bne _080E5F20 + movs r6, 0 + ldr r1, _080E5F08 @ =gUnknown_300500C + ldr r0, [r1] + movs r3, 0xAC + lsls r3, 1 + adds r0, r3 + ldr r2, [sp, 0x1C] + adds r0, r2 + ldrb r0, [r0] + mov r4, r10 + ldrb r4, [r4, 0x8] + cmp r0, r4 + bne _080E5F20 + adds r1, r0, 0 + mov r2, r9 + adds r2, 0x4 +_080E5EFE: + cmp r1, 0xFF + bne _080E5F0C + movs r6, 0x7 + b _080E5F20 + .align 2, 0 +_080E5F08: .4byte gUnknown_300500C +_080E5F0C: + adds r6, 0x1 + cmp r6, 0x6 + bgt _080E5F20 + ldr r7, _080E5F4C @ =gUnknown_300500C + ldr r0, [r7] + adds r0, r3 + adds r0, r2 + ldrb r0, [r0] + cmp r0, r1 + beq _080E5EFE +_080E5F20: + cmp r6, 0x7 + beq _080E5F36 + movs r0, 0xA4 + add r9, r0 + ldr r1, [sp, 0x1C] + adds r1, 0xA4 + str r1, [sp, 0x1C] + add r12, r0 + adds r5, 0x1 + cmp r5, 0x4 + ble _080E5EA8 +_080E5F36: + cmp r5, 0x4 + bgt _080E5F50 + ldr r2, _080E5F4C @ =gUnknown_300500C + ldr r0, [r2] + movs r1, 0xA4 + muls r1, r5 + adds r0, r1 + movs r4, 0xAA + lsls r4, 1 + adds r0, r4 + b _080E5F90 + .align 2, 0 +_080E5F4C: .4byte gUnknown_300500C +_080E5F50: + movs r5, 0 + ldr r7, _080E5F9C @ =gUnknown_300500C + ldr r0, [r7] + movs r1, 0xAB + lsls r1, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _080E5F7C + adds r3, r7, 0 + adds r2, r1, 0 + movs r1, 0 +_080E5F68: + adds r1, 0xA4 + adds r5, 0x1 + cmp r5, 0x4 + bgt _080E5FA0 + ldr r0, [r3] + adds r0, r1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, 0 + bne _080E5F68 +_080E5F7C: + cmp r5, 0x4 + bgt _080E5FA0 + ldr r1, _080E5F9C @ =gUnknown_300500C + ldr r0, [r1] + movs r1, 0xA4 + muls r1, r5 + adds r0, r1 + movs r2, 0xAA + lsls r2, 1 + adds r0, r2 +_080E5F90: + mov r1, r10 + movs r2, 0xA4 + bl memcpy + b _080E6062 + .align 2, 0 +_080E5F9C: .4byte gUnknown_300500C +_080E5FA0: + mov r2, sp + ldr r4, _080E5FF8 @ =gUnknown_300500C + ldr r0, [r4] + movs r3, 0xAB + lsls r3, 1 + adds r0, r3 + ldrh r0, [r0] + movs r1, 0 + strh r0, [r2] + add r0, sp, 0xC + strh r1, [r0] + movs r7, 0x1 + add r8, r7 + movs r5, 0x1 + add r0, sp, 0xC + mov r9, r0 + mov r12, r3 +_080E5FC2: + movs r3, 0 + adds r7, r5, 0x1 + cmp r3, r8 + bge _080E6006 + ldr r1, _080E5FF8 @ =gUnknown_300500C + ldr r0, [r1] + movs r2, 0xA4 + adds r1, r5, 0 + muls r1, r2 + adds r0, r1 + mov r1, r12 + adds r4, r0, r1 + mov r6, sp +_080E5FDC: + lsls r0, r3, 1 + add r0, sp + ldrh r2, [r4] + adds r1, r2, 0 + ldrh r0, [r0] + cmp r1, r0 + bcs _080E5FFC + movs r3, 0 + movs r4, 0x1 + mov r8, r4 + strh r2, [r6] + mov r0, r9 + strh r5, [r0] + b _080E6006 + .align 2, 0 +_080E5FF8: .4byte gUnknown_300500C +_080E5FFC: + cmp r1, r0 + bhi _080E6006 + adds r3, 0x1 + cmp r3, r8 + blt _080E5FDC +_080E6006: + cmp r3, r8 + bne _080E602C + mov r1, r8 + lsls r2, r1, 1 + mov r4, sp + adds r3, r4, r2 + ldr r1, _080E6074 @ =gUnknown_300500C + ldr r0, [r1] + movs r4, 0xA4 + adds r1, r5, 0 + muls r1, r4 + adds r0, r1 + add r0, r12 + ldrh r0, [r0] + strh r0, [r3] + add r2, r9 + strh r5, [r2] + movs r0, 0x1 + add r8, r0 +_080E602C: + adds r5, r7, 0 + cmp r5, 0x4 + ble _080E5FC2 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + mov r1, r8 + bl __modsi3 + adds r5, r0, 0 + ldr r0, _080E6074 @ =gUnknown_300500C + ldr r0, [r0] + lsls r1, r5, 1 + add r1, sp + adds r1, 0xC + ldrh r2, [r1] + movs r1, 0xA4 + muls r1, r2 + adds r0, r1 + movs r1, 0xAA + lsls r1, 1 + adds r0, r1 + mov r1, r10 + movs r2, 0xA4 + bl memcpy +_080E6062: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E6074: .4byte gUnknown_300500C + thumb_func_end sub_80E5E7C + + thumb_func_start sub_80E6078 +sub_80E6078: @ 80E6078 + push {lr} + ldr r0, _080E6094 @ =gUnknown_300500C + ldr r3, [r0] + ldr r0, _080E6098 @ =0x0000056c + adds r1, r3, r0 + ldrb r0, [r1] + cmp r0, 0xC8 + bne _080E60A4 + ldr r1, _080E609C @ =gUnknown_82538A8 + ldr r2, _080E60A0 @ =0x000004a1 + adds r0, r3, r2 + ldrb r0, [r0] + adds r0, r1 + b _080E60D6 + .align 2, 0 +_080E6094: .4byte gUnknown_300500C +_080E6098: .4byte 0x0000056c +_080E609C: .4byte gUnknown_82538A8 +_080E60A0: .4byte 0x000004a1 +_080E60A4: + cmp r0, 0x63 + bls _080E60C4 + ldr r2, _080E60C0 @ =gUnknown_82538A8 + ldrb r0, [r1] + subs r0, 0x64 + movs r1, 0xA4 + muls r0, r1 + adds r0, r3, r0 + adds r1, 0xB1 + adds r0, r1 + ldrb r0, [r0] + adds r0, r2 + b _080E60D6 + .align 2, 0 +_080E60C0: .4byte gUnknown_82538A8 +_080E60C4: + ldr r3, _080E60DC @ =gUnknown_82538A8 + ldr r2, _080E60E0 @ =gUnknown_83FFAC4 + ldrb r1, [r1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + adds r0, r3 +_080E60D6: + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080E60DC: .4byte gUnknown_82538A8 +_080E60E0: .4byte gUnknown_83FFAC4 + thumb_func_end sub_80E6078 + + thumb_func_start sub_80E60E4 +sub_80E60E4: @ 80E60E4 + push {lr} + ldr r0, _080E6100 @ =gUnknown_300500C + ldr r3, [r0] + ldr r0, _080E6104 @ =0x0000056c + adds r1, r3, r0 + ldrb r0, [r1] + cmp r0, 0xC8 + bne _080E6110 + ldr r1, _080E6108 @ =gUnknown_825393E + ldr r2, _080E610C @ =0x000004a1 + adds r0, r3, r2 + ldrb r0, [r0] + adds r0, r1 + b _080E6144 + .align 2, 0 +_080E6100: .4byte gUnknown_300500C +_080E6104: .4byte 0x0000056c +_080E6108: .4byte gUnknown_825393E +_080E610C: .4byte 0x000004a1 +_080E6110: + cmp r0, 0x63 + bhi _080E6130 + ldr r3, _080E6128 @ =gUnknown_825393E + ldr r2, _080E612C @ =gUnknown_83FFAC4 + ldrb r1, [r1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + adds r0, r3 + b _080E6144 + .align 2, 0 +_080E6128: .4byte gUnknown_825393E +_080E612C: .4byte gUnknown_83FFAC4 +_080E6130: + ldr r2, _080E614C @ =gUnknown_825393E + ldrb r0, [r1] + subs r0, 0x64 + movs r1, 0xA4 + muls r0, r1 + adds r0, r3, r0 + adds r1, 0xB1 + adds r0, r1 + ldrb r0, [r0] + adds r0, r2 +_080E6144: + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080E614C: .4byte gUnknown_825393E + thumb_func_end sub_80E60E4 + + thumb_func_start sub_80E6150 +sub_80E6150: @ 80E6150 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, _080E6178 @ =gUnknown_300500C + ldr r1, [r0] + ldr r2, _080E617C @ =0x0000056c + adds r0, r1, r2 + ldrb r2, [r0] + cmp r2, 0xC8 + bne _080E6184 + movs r3, 0 + ldr r0, _080E6180 @ =0x000004a4 + adds r2, r1, r0 +_080E6168: + adds r0, r4, r3 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x6 + ble _080E6168 + b _080E61CE + .align 2, 0 +_080E6178: .4byte gUnknown_300500C +_080E617C: .4byte 0x0000056c +_080E6180: .4byte 0x000004a4 +_080E6184: + cmp r2, 0x63 + bhi _080E61AC + movs r3, 0 + adds r5, r0, 0 + ldr r6, _080E61A8 @ =gUnknown_83FFAC5 +_080E618E: + adds r2, r4, r3 + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r3, r0 + adds r0, r6 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0x2 + ble _080E618E + b _080E61CE + .align 2, 0 +_080E61A8: .4byte gUnknown_83FFAC5 +_080E61AC: + movs r3, 0 + adds r5, r0, 0 + movs r0, 0xAC + lsls r0, 1 + adds r2, r1, r0 + movs r6, 0xA4 +_080E61B8: + adds r1, r4, r3 + ldrb r0, [r5] + subs r0, 0x64 + muls r0, r6 + adds r0, r3, r0 + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x1 + cmp r3, 0x6 + ble _080E61B8 +_080E61CE: + adds r1, r4, r3 + movs r0, 0xFF + strb r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E6150 + + thumb_func_start sub_80E61DC +sub_80E61DC: @ 80E61DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + movs r0, 0 + str r0, [sp, 0x18] + movs r1, 0x3C + str r1, [sp, 0x1C] + add r4, sp, 0xC + movs r0, 0xFF + strb r0, [r4] + bl sub_803DA34 + ldr r1, _080E6210 @ =gUnknown_300500C + ldr r0, [r1] + ldr r2, _080E6214 @ =0x0000056c + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x13 + bhi _080E6218 + movs r3, 0x6 + str r3, [sp, 0x14] + b _080E62F4 + .align 2, 0 +_080E6210: .4byte gUnknown_300500C +_080E6214: .4byte 0x0000056c +_080E6218: + cmp r0, 0x1D + bhi _080E6226 + movs r0, 0x9 + str r0, [sp, 0x14] + movs r1, 0x1E + str r1, [sp, 0x18] + b _080E62F4 +_080E6226: + cmp r0, 0x27 + bhi _080E6234 + movs r2, 0xC + str r2, [sp, 0x14] + movs r3, 0x3C + str r3, [sp, 0x18] + b _080E62F4 +_080E6234: + cmp r0, 0x31 + bhi _080E6242 + movs r0, 0xF + str r0, [sp, 0x14] + movs r1, 0x5A + str r1, [sp, 0x18] + b _080E62F4 +_080E6242: + cmp r0, 0x3B + bhi _080E6250 + movs r2, 0x12 + str r2, [sp, 0x14] + movs r3, 0x78 + str r3, [sp, 0x18] + b _080E62F4 +_080E6250: + cmp r0, 0x45 + bhi _080E625E + movs r0, 0x15 + str r0, [sp, 0x14] + movs r1, 0x96 + str r1, [sp, 0x18] + b _080E62F4 +_080E625E: + cmp r0, 0x4F + bhi _080E626C + movs r2, 0x1F + str r2, [sp, 0x14] + movs r3, 0xB4 + str r3, [sp, 0x18] + b _080E62F4 +_080E626C: + cmp r0, 0x63 + bhi _080E627E + movs r0, 0x1F + str r0, [sp, 0x14] + movs r1, 0xC8 + str r1, [sp, 0x18] + movs r2, 0x64 + str r2, [sp, 0x1C] + b _080E62F4 +_080E627E: + cmp r0, 0xC8 + bne _080E62B0 + movs r6, 0 + adds r4, r1, 0 +_080E6286: + movs r0, 0x64 + muls r0, r6 + ldr r1, _080E62A8 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2C + adds r2, r6, 0 + muls r2, r1 + ldr r3, _080E62AC @ =0x000004d4 + adds r2, r3 + ldr r1, [r4] + adds r1, r2 + bl sub_803E0A4 + adds r6, 0x1 + cmp r6, 0x2 + ble _080E6286 + b _080E64A6 + .align 2, 0 +_080E62A8: .4byte gUnknown_202402C +_080E62AC: .4byte 0x000004d4 +_080E62B0: + movs r6, 0 +_080E62B2: + movs r0, 0x64 + muls r0, r6 + ldr r1, _080E62E4 @ =gUnknown_202402C + adds r0, r1 + ldr r1, _080E62E8 @ =gUnknown_300500C + ldr r1, [r1] + ldr r3, _080E62EC @ =0x0000056c + adds r2, r1, r3 + ldrb r3, [r2] + movs r2, 0xA4 + muls r2, r3 + ldr r3, _080E62F0 @ =0xffffc144 + adds r2, r3 + adds r1, r2 + movs r2, 0x2C + muls r2, r6 + adds r2, 0x1C + adds r1, r2 + bl sub_803E0A4 + adds r6, 0x1 + cmp r6, 0x2 + ble _080E62B2 + b _080E64A6 + .align 2, 0 +_080E62E4: .4byte gUnknown_202402C +_080E62E8: .4byte gUnknown_300500C +_080E62EC: .4byte 0x0000056c +_080E62F0: .4byte 0xffffc144 +_080E62F4: + ldr r2, _080E6314 @ =gUnknown_300500C + ldr r0, [r2] + ldr r1, _080E6318 @ =0x0000055c + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + adds r1, r2, 0 + cmp r0, 0 + beq _080E6320 + ldr r2, _080E631C @ =gUnknown_8400E04 + mov r10, r2 + movs r3, 0x64 + str r3, [sp, 0x10] + b _080E6328 + .align 2, 0 +_080E6314: .4byte gUnknown_300500C +_080E6318: .4byte 0x0000055c +_080E631C: .4byte gUnknown_8400E04 +_080E6320: + ldr r0, _080E6378 @ =gUnknown_83FFB44 + mov r10, r0 + movs r2, 0x32 + str r2, [sp, 0x10] +_080E6328: + ldr r2, _080E637C @ =gUnknown_83FFAC4 + ldr r0, [r1] + ldr r3, _080E6380 @ =0x0000056c + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x4] + str r0, [sp, 0x20] + movs r6, 0 +_080E6340: + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + ldr r2, [sp, 0x1C] + adds r0, r1, 0 + muls r0, r2 + asrs r0, 8 + ldr r3, [sp, 0x18] + adds r7, r0, r3 + ldr r0, [sp, 0x20] + cmp r0, 0 + beq _080E636A + lsls r0, r7, 4 + add r0, r10 + ldrb r0, [r0, 0x3] + ldr r1, [sp, 0x20] + ands r0, r1 + cmp r0, r1 + beq _080E636A + b _080E64A0 +_080E636A: + movs r5, 0 + lsls r0, r7, 4 + mov r2, r10 + adds r3, r0, r2 + movs r4, 0 + b _080E6388 + .align 2, 0 +_080E6378: .4byte gUnknown_83FFB44 +_080E637C: .4byte gUnknown_83FFAC4 +_080E6380: .4byte 0x0000056c +_080E6384: + adds r4, 0x64 + adds r5, 0x1 +_080E6388: + cmp r5, r6 + bge _080E63A2 + ldr r1, _080E64B8 @ =gUnknown_202402C + adds r0, r4, r1 + movs r1, 0xB + movs r2, 0 + str r3, [sp, 0x24] + bl sub_803FBE8 + ldr r3, [sp, 0x24] + ldrh r2, [r3] + cmp r0, r2 + bne _080E6384 +_080E63A2: + cmp r5, r6 + bne _080E64A0 + movs r5, 0 + cmp r5, r6 + bge _080E63F0 + ldr r3, _080E64BC @ =gUnknown_83FFAC4 + mov r9, r3 + lsls r0, r7, 4 + add r0, r10 + mov r8, r0 + movs r3, 0 +_080E63B8: + ldr r0, _080E64B8 @ =gUnknown_202402C + adds r4, r3, r0 + adds r0, r4, 0 + movs r1, 0xC + movs r2, 0 + str r3, [sp, 0x24] + bl sub_803FBE8 + ldr r3, [sp, 0x24] + cmp r0, 0 + beq _080E63E8 + adds r0, r4, 0 + movs r1, 0xC + movs r2, 0 + bl sub_803FBE8 + mov r2, r8 + ldrb r1, [r2, 0x2] + lsls r1, 1 + add r1, r9 + ldr r3, [sp, 0x24] + ldrh r1, [r1] + cmp r0, r1 + beq _080E63F0 +_080E63E8: + adds r3, 0x64 + adds r5, 0x1 + cmp r5, r6 + blt _080E63B8 +_080E63F0: + cmp r5, r6 + bne _080E64A0 + movs r5, 0 + cmp r5, r6 + bge _080E6412 + add r0, sp, 0x4 + ldrh r0, [r0] + cmp r0, r7 + beq _080E6412 + add r1, sp, 0x4 +_080E6404: + adds r1, 0x2 + adds r5, 0x1 + cmp r5, r6 + bge _080E6412 + ldrh r0, [r1] + cmp r0, r7 + bne _080E6404 +_080E6412: + cmp r5, r6 + bne _080E64A0 + lsls r0, r6, 1 + add r0, sp + adds r0, 0x4 + strh r7, [r0] + movs r3, 0x64 + adds r0, r6, 0 + muls r0, r3 + ldr r1, _080E64B8 @ =gUnknown_202402C + adds r0, r1 + lsls r4, r7, 4 + mov r3, r10 + adds r2, r4, r3 + ldrh r1, [r2] + ldrb r2, [r2, 0xC] + str r2, [sp] + ldr r2, [sp, 0x10] + ldr r3, [sp, 0x14] + bl sub_803E01C + movs r5, 0 + adds r0, r6, 0x1 + mov r9, r0 + mov r8, r4 + movs r0, 0x64 + adds r7, r6, 0 + muls r7, r0 + mov r0, r10 + adds r0, 0x4 + adds r4, r0 + ldr r3, _080E64B8 @ =gUnknown_202402C +_080E6452: + ldrh r1, [r4] + lsls r2, r5, 24 + lsrs r2, 24 + adds r0, r7, r3 + str r3, [sp, 0x24] + bl sub_803E964 + ldrh r0, [r4] + ldr r3, [sp, 0x24] + cmp r0, 0xDA + bne _080E646E + movs r0, 0 + mov r1, sp + strb r0, [r1, 0xC] +_080E646E: + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _080E6452 + movs r2, 0x64 + adds r4, r6, 0 + muls r4, r2 + ldr r3, _080E64B8 @ =gUnknown_202402C + adds r4, r3 + adds r0, r4, 0 + movs r1, 0x20 + add r2, sp, 0xC + bl sub_804037C + mov r0, r8 + add r0, r10 + ldrb r2, [r0, 0x2] + lsls r2, 1 + ldr r0, _080E64BC @ =gUnknown_83FFAC4 + adds r2, r0 + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + mov r6, r9 +_080E64A0: + cmp r6, 0x3 + beq _080E64A6 + b _080E6340 +_080E64A6: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E64B8: .4byte gUnknown_202402C +_080E64BC: .4byte gUnknown_83FFAC4 + thumb_func_end sub_80E61DC + + thumb_func_start sub_80E64C0 +sub_80E64C0: @ 80E64C0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r0, 16 + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _080E6554 + cmp r4, 0 + bne _080E64EC + ldr r0, _080E6514 @ =gUnknown_2021CD0 + ldr r1, _080E6518 @ =gUnknown_83FE859 + bl sub_8008DA4 +_080E64EC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r6, _080E6514 @ =gUnknown_2021CD0 + movs r0, 0xB + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080E651C @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r6, 0 + bl sub_8008DA4 + cmp r4, 0x5 + beq _080E6538 + cmp r4, 0x5 + bgt _080E6520 + cmp r4, 0x2 + beq _080E652A + b _080E654C + .align 2, 0 +_080E6514: .4byte gUnknown_2021CD0 +_080E6518: .4byte gUnknown_83FE859 +_080E651C: .4byte gUnknown_8245EE0 +_080E6520: + cmp r4, 0x8 + beq _080E6538 + cmp r4, 0xB + beq _080E6538 + b _080E654C +_080E652A: + ldr r1, _080E6534 @ =gUnknown_83FE85E + adds r0, r6, 0 + bl sub_8008DA4 + b _080E6554 + .align 2, 0 +_080E6534: .4byte gUnknown_83FE85E +_080E6538: + ldr r0, _080E6544 @ =gUnknown_2021CD0 + ldr r1, _080E6548 @ =gUnknown_83FE85C + bl sub_8008DA4 + b _080E6554 + .align 2, 0 +_080E6544: .4byte gUnknown_2021CD0 +_080E6548: .4byte gUnknown_83FE85C +_080E654C: + ldr r0, _080E655C @ =gUnknown_2021CD0 + ldr r1, _080E6560 @ =gUnknown_83FE859 + bl sub_8008DA4 +_080E6554: + adds r0, r4, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080E655C: .4byte gUnknown_2021CD0 +_080E6560: .4byte gUnknown_83FE859 + thumb_func_end sub_80E64C0 + + thumb_func_start sub_80E6564 +sub_80E6564: @ 80E6564 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, [sp, 0x20] + ldr r4, [sp, 0x24] + mov r9, r4 + ldr r4, [sp, 0x28] + mov r10, r4 + ldr r7, [sp, 0x2C] + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r3, 24 + lsrs r3, 24 + mov r12, r3 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + movs r2, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + beq _080E6632 + cmp r4, 0 + beq _080E6632 + ldr r0, _080E6640 @ =gUnknown_84020C4 + ldrh r1, [r0] + ldr r5, _080E6644 @ =0x0000ffff + adds r3, r0, 0 + cmp r1, r5 + beq _080E65C8 + cmp r1, r4 + beq _080E65BC + adds r1, r3, 0 +_080E65AE: + adds r1, 0x2 + adds r2, 0x1 + ldrh r0, [r1] + cmp r0, r5 + beq _080E65C8 + cmp r0, r4 + bne _080E65AE +_080E65BC: + lsls r0, r2, 1 + adds r0, r3 + ldrh r1, [r0] + ldr r0, _080E6644 @ =0x0000ffff + cmp r1, r0 + bne _080E6632 +_080E65C8: + mov r0, r12 + cmp r0, 0 + bne _080E65D4 + mov r1, r8 + cmp r1, 0x32 + bhi _080E6632 +_080E65D4: + movs r2, 0 + ldrb r3, [r7] + cmp r2, r3 + bge _080E65F4 + mov r1, r9 + ldrh r0, [r1] + cmp r0, r4 + beq _080E65F4 + adds r5, r3, 0 +_080E65E6: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, r5 + bge _080E65F4 + ldrh r0, [r1] + cmp r0, r4 + bne _080E65E6 +_080E65F4: + cmp r2, r3 + bne _080E6632 + cmp r6, 0 + beq _080E661E + movs r2, 0 + cmp r2, r3 + bge _080E661A + mov r1, r10 + ldrh r0, [r1] + cmp r0, r6 + beq _080E661A + adds r5, r3, 0 +_080E660C: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, r5 + bge _080E661A + ldrh r0, [r1] + cmp r0, r6 + bne _080E660C +_080E661A: + cmp r2, r3 + bne _080E6632 +_080E661E: + lsls r0, r3, 1 + add r0, r9 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, 1 + add r0, r10 + strh r6, [r0] + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] +_080E6632: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E6640: .4byte gUnknown_84020C4 +_080E6644: .4byte 0x0000ffff + thumb_func_end sub_80E6564 + + thumb_func_start sub_80E6648 +sub_80E6648: @ 80E6648 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + add r1, sp, 0x28 + movs r0, 0 + strb r0, [r1] + movs r7, 0 + mov r9, r1 + add r0, sp, 0x1C + mov r10, r0 +_080E6662: + movs r0, 0x64 + adds r5, r7, 0 + muls r5, r0 + ldr r0, _080E6724 @ =gUnknown_2024284 + adds r5, r0 + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + mov r8, r0 + mov r1, r8 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + adds r0, r5, 0 + movs r1, 0xC + bl sub_803FBE8 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + adds r0, r5, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r5, _080E6728 @ =gUnknown_20370D0 + ldrb r3, [r5] + str r4, [sp] + add r0, sp, 0x10 + str r0, [sp, 0x4] + mov r1, r10 + str r1, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + mov r0, r8 + adds r1, r6, 0 + bl sub_80E6564 + adds r7, 0x1 + cmp r7, 0x5 + ble _080E6662 + mov r1, r9 + ldrb r0, [r1] + cmp r0, 0x2 + bhi _080E6750 + ldr r1, _080E672C @ =gUnknown_2021CD0 + movs r0, 0xFF + strb r0, [r1] + ldr r1, _080E6730 @ =gUnknown_20370C0 + movs r0, 0x1 + strh r0, [r1] + movs r0, 0 + mov r1, r9 + strb r0, [r1] + ldr r2, _080E6734 @ =gUnknown_84020C4 + ldrh r0, [r2] + ldr r1, _080E6738 @ =0x0000ffff + cmp r0, r1 + beq _080E6704 + mov r5, r9 + adds r6, r1, 0 + adds r4, r2, 0 +_080E66F2: + ldrh r0, [r4] + ldrb r1, [r5] + bl sub_80E64C0 + strb r0, [r5] + adds r4, 0x2 + ldrh r0, [r4] + cmp r0, r6 + bne _080E66F2 +_080E6704: + ldr r4, _080E672C @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r7, r0, 16 + subs r0, r7, 0x1 + adds r0, r4 + movs r1, 0xFF + strb r1, [r0] + mov r1, r9 + ldrb r0, [r1] + cmp r0, 0x2 + bhi _080E6740 + ldr r1, _080E673C @ =gUnknown_83FE860 + b _080E6742 + .align 2, 0 +_080E6724: .4byte gUnknown_2024284 +_080E6728: .4byte gUnknown_20370D0 +_080E672C: .4byte gUnknown_2021CD0 +_080E6730: .4byte gUnknown_20370C0 +_080E6734: .4byte gUnknown_84020C4 +_080E6738: .4byte 0x0000ffff +_080E673C: .4byte gUnknown_83FE860 +_080E6740: + ldr r1, _080E674C @ =gUnknown_83FE864 +_080E6742: + adds r0, r4, 0 + bl sub_8008DA4 + b _080E6770 + .align 2, 0 +_080E674C: .4byte gUnknown_83FE864 +_080E6750: + ldr r1, _080E6780 @ =gUnknown_20370C0 + movs r0, 0 + strh r0, [r1] + ldr r0, _080E6784 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r0, [r5] + ldr r1, _080E6788 @ =0x0000055c + adds r2, r1 + movs r1, 0x1 + ands r1, r0 + ldrb r3, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_080E6770: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E6780: .4byte gUnknown_20370C0 +_080E6784: .4byte gUnknown_300500C +_080E6788: .4byte 0x0000055c + thumb_func_end sub_80E6648 + + thumb_func_start sub_80E678C +sub_80E678C: @ 80E678C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0x12 + bl sub_80BD974 + lsls r0, 24 + cmp r0, 0 + beq _080E67E4 + ldr r5, _080E67E0 @ =gUnknown_2021D18 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_80BD89C + ldrb r0, [r5] + movs r1, 0x1 + cmp r0, 0xFE + beq _080E67C2 + adds r2, r5, 0 +_080E67B8: + adds r0, r1, r2 + ldrb r0, [r0] + adds r1, 0x1 + cmp r0, 0xFE + bne _080E67B8 +_080E67C2: + ldr r2, _080E67E0 @ =gUnknown_2021D18 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r2, 0 + cmp r0, 0xFE + beq _080E67D8 +_080E67CE: + adds r1, 0x1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0xFE + bne _080E67CE +_080E67D8: + adds r1, r3 + movs r0, 0xFA + strb r0, [r1] + b _080E67F0 + .align 2, 0 +_080E67E0: .4byte gUnknown_2021D18 +_080E67E4: + ldr r0, _080E67F8 @ =gUnknown_2021D18 + adds r1, r4, 0 + movs r2, 0x3 + movs r3, 0x2 + bl sub_80BD89C +_080E67F0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E67F8: .4byte gUnknown_2021D18 + thumb_func_end sub_80E678C + + thumb_func_start sub_80E67FC +sub_80E67FC: @ 80E67FC + push {lr} + ldr r0, _080E6818 @ =gUnknown_300500C + ldr r2, [r0] + ldr r1, _080E681C @ =0x0000056c + adds r0, r2, r1 + ldrb r1, [r0] + cmp r1, 0xC8 + bne _080E6820 + movs r1, 0x96 + lsls r1, 3 + adds r0, r2, r1 + bl sub_80E678C + b _080E684C + .align 2, 0 +_080E6818: .4byte gUnknown_300500C +_080E681C: .4byte 0x0000056c +_080E6820: + cmp r1, 0x63 + bhi _080E683C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + ldr r1, _080E6838 @ =gUnknown_83FFACA + adds r0, r1 + bl sub_80E678C + b _080E684C + .align 2, 0 +_080E6838: .4byte gUnknown_83FFACA +_080E683C: + ldrb r1, [r0] + movs r0, 0xA4 + muls r0, r1 + adds r0, r2 + ldr r1, _080E6850 @ =0xffffc154 + adds r0, r1 + bl sub_80E678C +_080E684C: + pop {r0} + bx r0 + .align 2, 0 +_080E6850: .4byte 0xffffc154 + thumb_func_end sub_80E67FC + + thumb_func_start sub_80E6854 +sub_80E6854: @ 80E6854 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _080E686C @ =gUnknown_203AAB8 + ldrh r0, [r0] + cmp r0, 0x1 + beq _080E6870 + cmp r0, 0x1 + ble _080E68B0 + cmp r0, 0x2 + beq _080E68AC + b _080E68B0 + .align 2, 0 +_080E686C: .4byte gUnknown_203AAB8 +_080E6870: + movs r5, 0 + ldr r6, _080E68A4 @ =gUnknown_3005008 +_080E6874: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + adds r1, r4, 0 + adds r1, 0x38 + ldr r0, [r6] + adds r0, r1 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + ldr r0, _080E68A8 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xC + mov r2, sp + bl sub_804037C + adds r5, 0x1 + cmp r5, 0x5 + ble _080E6874 + b _080E68B0 + .align 2, 0 +_080E68A4: .4byte gUnknown_3005008 +_080E68A8: .4byte gUnknown_2024284 +_080E68AC: + bl sub_80E7550 +_080E68B0: + ldr r0, _080E68C0 @ =sub_80568E0 + bl sub_8000544 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E68C0: .4byte sub_80568E0 + thumb_func_end sub_80E6854 + + thumb_func_start sub_80E68C4 +sub_80E68C4: @ 80E68C4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80D08F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E68EC + ldr r0, _080E68F4 @ =gUnknown_30030F0 + ldr r1, _080E68F8 @ =sub_80E6854 + str r1, [r0, 0x8] + bl sub_80563F0 + ldr r0, _080E68FC @ =sub_800FD9C + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_080E68EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E68F4: .4byte gUnknown_30030F0 +_080E68F8: .4byte sub_80E6854 +_080E68FC: .4byte sub_800FD9C + thumb_func_end sub_80E68C4 + + thumb_func_start sub_80E6900 +sub_80E6900: @ 80E6900 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _080E691C @ =gUnknown_203AAB8 + ldr r1, _080E6920 @ =gUnknown_20370C0 + ldrh r1, [r1] + strh r1, [r0] + ldrh r2, [r0] + cmp r2, 0x1 + beq _080E6944 + cmp r2, 0x1 + bgt _080E6924 + cmp r2, 0 + beq _080E692A + b _080E69E6 + .align 2, 0 +_080E691C: .4byte gUnknown_203AAB8 +_080E6920: .4byte gUnknown_20370C0 +_080E6924: + cmp r2, 0x2 + beq _080E6998 + b _080E69E6 +_080E692A: + ldr r1, _080E693C @ =gUnknown_2022B4C + movs r0, 0x84 + lsls r0, 1 + str r0, [r1] + ldr r0, _080E6940 @ =gUnknown_20386AE + strh r2, [r0] + bl sub_80E61DC + b _080E6970 + .align 2, 0 +_080E693C: .4byte gUnknown_2022B4C +_080E6940: .4byte gUnknown_20386AE +_080E6944: + movs r5, 0 + ldr r6, _080E698C @ =gUnknown_3005008 +_080E6948: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080E6990 @ =gUnknown_2024284 + adds r0, r4, r0 + movs r1, 0xC + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r4, 0x38 + ldr r0, [r6] + adds r0, r4 + movs r1, 0xC + mov r2, sp + bl sub_804037C + adds r5, 0x1 + cmp r5, 0x5 + ble _080E6948 +_080E6970: + ldr r0, _080E6994 @ =sub_80E68C4 + movs r1, 0x1 + bl sub_807741C + movs r0, 0 + bl sub_8044090 + bl sub_8080060 + lsls r0, 24 + lsrs r0, 24 + bl sub_80D08B8 + b _080E69E6 + .align 2, 0 +_080E698C: .4byte gUnknown_3005008 +_080E6990: .4byte gUnknown_2024284 +_080E6994: .4byte sub_80E68C4 +_080E6998: + bl sub_803DA34 + movs r5, 0 + ldr r4, _080E69F0 @ =gUnknown_300500C +_080E69A0: + movs r0, 0x64 + muls r0, r5 + ldr r1, _080E69F4 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2C + adds r2, r5, 0 + muls r2, r1 + ldr r1, _080E69F8 @ =0x000004d4 + adds r2, r1 + ldr r1, [r4] + adds r1, r2 + bl sub_803E0A4 + adds r5, 0x1 + cmp r5, 0x2 + ble _080E69A0 + ldr r1, _080E69FC @ =gUnknown_2022B4C + ldr r0, _080E6A00 @ =0x00000808 + str r0, [r1] + ldr r1, _080E6A04 @ =gUnknown_20386AE + movs r0, 0 + strh r0, [r1] + ldr r0, _080E6A08 @ =sub_80E68C4 + movs r1, 0x1 + bl sub_807741C + movs r0, 0 + bl sub_8044090 + bl sub_8080060 + lsls r0, 24 + lsrs r0, 24 + bl sub_80D08B8 +_080E69E6: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E69F0: .4byte gUnknown_300500C +_080E69F4: .4byte gUnknown_202402C +_080E69F8: .4byte 0x000004d4 +_080E69FC: .4byte gUnknown_2022B4C +_080E6A00: .4byte 0x00000808 +_080E6A04: .4byte gUnknown_20386AE +_080E6A08: .4byte sub_80E68C4 + thumb_func_end sub_80E6900 + + thumb_func_start sub_80E6A0C +sub_80E6A0C: @ 80E6A0C + push {r4-r6,lr} + ldr r1, _080E6A34 @ =gUnknown_300500C + ldr r0, [r1] + ldr r2, _080E6A38 @ =0x0000055c + adds r0, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r5, r0, 31 + ldr r0, _080E6A3C @ =gUnknown_20370C0 + ldrh r0, [r0] + adds r6, r1, 0 + cmp r0, 0xE + bls _080E6A28 + b _080E6C80 +_080E6A28: + lsls r0, 2 + ldr r1, _080E6A40 @ =_080E6A44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E6A34: .4byte gUnknown_300500C +_080E6A38: .4byte 0x0000055c +_080E6A3C: .4byte gUnknown_20370C0 +_080E6A40: .4byte _080E6A44 + .align 2, 0 +_080E6A44: + .4byte _080E6A80 + .4byte _080E6AAC + .4byte _080E6AD0 + .4byte _080E6AE4 + .4byte _080E6AFC + .4byte _080E6B14 + .4byte _080E6B3C + .4byte _080E6BA4 + .4byte _080E6BD8 + .4byte _080E6C80 + .4byte _080E6C00 + .4byte _080E6C14 + .4byte _080E6C30 + .4byte _080E6C4C + .4byte _080E6C6C +_080E6A80: + ldr r0, _080E6AA0 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r1, 0xDA + ldr r0, [r6] + ldr r2, _080E6AA4 @ =0x0000055e + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, [r6] + adds r0, r2 + adds r0, r5 + ldr r1, _080E6AA8 @ =gUnknown_20370C2 + ldrh r1, [r1] + strb r1, [r0] + b _080E6C80 + .align 2, 0 +_080E6AA0: .4byte gUnknown_2023FE8 +_080E6AA4: .4byte 0x0000055e +_080E6AA8: .4byte gUnknown_20370C2 +_080E6AAC: + ldr r2, [r6] + ldr r0, _080E6AC8 @ =gUnknown_20370C2 + ldrb r0, [r0] + ldr r3, _080E6ACC @ =0x0000055c + adds r2, r3 + movs r1, 0x1 + ands r1, r0 + ldrb r3, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _080E6C80 + .align 2, 0 +_080E6AC8: .4byte gUnknown_20370C2 +_080E6ACC: .4byte 0x0000055c +_080E6AD0: + ldr r0, [r6] + lsls r1, r5, 1 + movs r2, 0xAC + lsls r2, 3 + adds r0, r2 + adds r0, r1 + ldr r1, _080E6AE0 @ =gUnknown_20370C2 + b _080E6BC6 + .align 2, 0 +_080E6AE0: .4byte gUnknown_20370C2 +_080E6AE4: + ldr r0, [r6] + lsls r1, r5, 1 + ldr r3, _080E6AF4 @ =0x00000564 + adds r0, r3 + adds r0, r1 + ldr r1, _080E6AF8 @ =gUnknown_20370C2 + b _080E6BC6 + .align 2, 0 +_080E6AF4: .4byte 0x00000564 +_080E6AF8: .4byte gUnknown_20370C2 +_080E6AFC: + ldr r0, [r6] + ldr r1, _080E6B0C @ =gUnknown_20370C2 + ldrh r1, [r1] + ldr r2, _080E6B10 @ =0x0000056c + adds r0, r2 + strb r1, [r0] + b _080E6C80 + .align 2, 0 +_080E6B0C: .4byte gUnknown_20370C2 +_080E6B10: .4byte 0x0000056c +_080E6B14: + movs r2, 0 + ldr r5, _080E6B30 @ =gUnknown_300500C + ldr r4, _080E6B34 @ =0x0000056d + ldr r3, _080E6B38 @ =gUnknown_203B0D4 +_080E6B1C: + ldr r0, [r5] + adds r0, r4 + adds r0, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x2 + ble _080E6B1C + b _080E6C80 + .align 2, 0 +_080E6B30: .4byte gUnknown_300500C +_080E6B34: .4byte 0x0000056d +_080E6B38: .4byte gUnknown_203B0D4 +_080E6B3C: + ldr r1, [r6] + ldr r3, _080E6B94 @ =0x0000056c + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0xC8 + bne _080E6B52 + movs r2, 0x94 + lsls r2, 3 + adds r0, r1, r2 + bl sub_80E7524 +_080E6B52: + ldr r0, [r6] + movs r3, 0xAF + lsls r3, 3 + adds r2, r0, r3 + ldrh r1, [r2] + ldr r0, _080E6B98 @ =0x0000270e + cmp r1, r0 + bhi _080E6B66 + adds r0, r1, 0x1 + strh r0, [r2] +_080E6B66: + ldr r1, [r6] + lsls r5, 1 + movs r4, 0xAC + lsls r4, 3 + adds r1, r4 + adds r1, r5 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + bl sub_80E6E48 + ldr r1, _080E6B9C @ =gUnknown_20370D0 + ldr r0, [r6] + adds r0, r4 + adds r0, r5 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080E6BA0 @ =gUnknown_2021CD0 + adds r0, 0xA1 + strb r0, [r1] + movs r0, 0xFF + strb r0, [r1, 0x1] + b _080E6C80 + .align 2, 0 +_080E6B94: .4byte 0x0000056c +_080E6B98: .4byte 0x0000270e +_080E6B9C: .4byte gUnknown_20370D0 +_080E6BA0: .4byte gUnknown_2021CD0 +_080E6BA4: + ldr r0, [r6] + lsls r5, 1 + ldr r4, _080E6BCC @ =0x00000564 + adds r0, r4 + adds r2, r0, r5 + ldrh r1, [r2] + ldr r0, _080E6BD0 @ =0x00000595 + cmp r1, r0 + bhi _080E6BBA + adds r0, r1, 0x1 + strh r0, [r2] +_080E6BBA: + bl sub_80E6E48 + ldr r0, _080E6BD4 @ =gUnknown_20370D0 + ldr r1, [r6] + adds r1, r4 + adds r1, r5 +_080E6BC6: + ldrh r1, [r1] + strh r1, [r0] + b _080E6C80 + .align 2, 0 +_080E6BCC: .4byte 0x00000564 +_080E6BD0: .4byte 0x00000595 +_080E6BD4: .4byte gUnknown_20370D0 +_080E6BD8: + ldr r3, [r6] + ldr r0, _080E6BF8 @ =gUnknown_20370C2 + ldrb r0, [r0] + ldr r1, _080E6BFC @ =0x0000055c + adds r3, r1 + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080E6C80 + .align 2, 0 +_080E6BF8: .4byte gUnknown_20370C2 +_080E6BFC: .4byte 0x0000055c +_080E6C00: + ldr r0, [r6] + ldr r2, _080E6C10 @ =0x0000057a + adds r0, r2 + ldrh r1, [r0] + movs r0, 0x20 + bl sub_8054F00 + b _080E6C80 + .align 2, 0 +_080E6C10: .4byte 0x0000057a +_080E6C14: + ldr r0, [r6] + ldr r3, _080E6C2C @ =0x0000055e + adds r0, r3 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x3 + beq _080E6C80 + adds r0, r5, 0 + bl sub_80E5A38 + b _080E6C80 + .align 2, 0 +_080E6C2C: .4byte 0x0000055e +_080E6C30: + ldr r1, [r6] + ldr r0, _080E6C44 @ =0x0000055e + adds r1, r0 + adds r1, r5 + ldr r0, _080E6C48 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xDA + ldrb r0, [r0] + b _080E6C7E + .align 2, 0 +_080E6C44: .4byte 0x0000055e +_080E6C48: .4byte gUnknown_2023FE8 +_080E6C4C: + adds r0, r5, 0 + bl sub_80E7188 + ldr r1, _080E6C64 @ =gUnknown_300500C + ldr r1, [r1] + lsls r2, r5, 1 + ldr r3, _080E6C68 @ =0x0000057c + adds r1, r3 + adds r1, r2 + strh r0, [r1] + b _080E6C80 + .align 2, 0 +_080E6C64: .4byte gUnknown_300500C +_080E6C68: .4byte 0x0000057c +_080E6C6C: + ldr r1, [r6] + ldr r2, _080E6C88 @ =0x0000055c + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + movs r3, 0xB0 + lsls r3, 3 + adds r1, r3 +_080E6C7E: + strb r0, [r1] +_080E6C80: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E6C88: .4byte 0x0000055c + thumb_func_end sub_80E6A0C + + thumb_func_start sub_80E6C8C +sub_80E6C8C: @ 80E6C8C + push {r4,lr} + ldr r1, _080E6CB4 @ =gUnknown_300500C + ldr r0, [r1] + ldr r2, _080E6CB8 @ =0x0000055c + adds r0, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r4, r0, 31 + ldr r0, _080E6CBC @ =gUnknown_20370C0 + ldrh r0, [r0] + adds r3, r1, 0 + cmp r0, 0xE + bls _080E6CA8 + b _080E6E08 +_080E6CA8: + lsls r0, 2 + ldr r1, _080E6CC0 @ =_080E6CC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E6CB4: .4byte gUnknown_300500C +_080E6CB8: .4byte 0x0000055c +_080E6CBC: .4byte gUnknown_20370C0 +_080E6CC0: .4byte _080E6CC4 + .align 2, 0 +_080E6CC4: + .4byte _080E6D00 + .4byte _080E6D14 + .4byte _080E6D2C + .4byte _080E6D3C + .4byte _080E6D58 + .4byte _080E6E08 + .4byte _080E6E08 + .4byte _080E6E08 + .4byte _080E6D70 + .4byte _080E6D8C + .4byte _080E6D9C + .4byte _080E6DB0 + .4byte _080E6DB8 + .4byte _080E6DD4 + .4byte _080E6DF4 +_080E6D00: + ldr r0, _080E6D0C @ =gUnknown_20370D0 + ldr r1, [r3] + ldr r3, _080E6D10 @ =0x0000055e + adds r1, r3 + adds r1, r4 + b _080E6D60 + .align 2, 0 +_080E6D0C: .4byte gUnknown_20370D0 +_080E6D10: .4byte 0x0000055e +_080E6D14: + ldr r0, _080E6D24 @ =gUnknown_20370D0 + ldr r1, [r3] + ldr r2, _080E6D28 @ =0x0000055c + adds r1, r2 + ldrb r1, [r1] + lsls r1, 31 + b _080E6D7C + .align 2, 0 +_080E6D24: .4byte gUnknown_20370D0 +_080E6D28: .4byte 0x0000055c +_080E6D2C: + ldr r2, _080E6D38 @ =gUnknown_20370D0 + ldr r0, [r3] + lsls r1, r4, 1 + movs r3, 0xAC + lsls r3, 3 + b _080E6D44 + .align 2, 0 +_080E6D38: .4byte gUnknown_20370D0 +_080E6D3C: + ldr r2, _080E6D50 @ =gUnknown_20370D0 + ldr r0, [r3] + lsls r1, r4, 1 + ldr r3, _080E6D54 @ =0x00000564 +_080E6D44: + adds r0, r3 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + b _080E6E08 + .align 2, 0 +_080E6D50: .4byte gUnknown_20370D0 +_080E6D54: .4byte 0x00000564 +_080E6D58: + ldr r0, _080E6D68 @ =gUnknown_20370D0 + ldr r1, [r3] + ldr r2, _080E6D6C @ =0x0000056c + adds r1, r2 +_080E6D60: + ldrb r1, [r1] + strh r1, [r0] + b _080E6E08 + .align 2, 0 +_080E6D68: .4byte gUnknown_20370D0 +_080E6D6C: .4byte 0x0000056c +_080E6D70: + ldr r0, _080E6D84 @ =gUnknown_20370D0 + ldr r1, [r3] + ldr r3, _080E6D88 @ =0x0000055c + adds r1, r3 + ldrb r1, [r1] + lsls r1, 30 +_080E6D7C: + lsrs r1, 31 + strh r1, [r0] + b _080E6E08 + .align 2, 0 +_080E6D84: .4byte gUnknown_20370D0 +_080E6D88: .4byte 0x0000055c +_080E6D8C: + adds r0, r4, 0 + bl sub_80E7188 + ldr r1, _080E6D98 @ =gUnknown_20370D0 + strh r0, [r1] + b _080E6E08 + .align 2, 0 +_080E6D98: .4byte gUnknown_20370D0 +_080E6D9C: + ldr r0, [r3] + ldr r1, _080E6DAC @ =0x0000057a + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x20 + bl sub_8054F00 + b _080E6E08 + .align 2, 0 +_080E6DAC: .4byte 0x0000057a +_080E6DB0: + adds r0, r4, 0 + bl sub_80E5A38 + b _080E6E08 +_080E6DB8: + ldr r1, [r3] + ldr r2, _080E6DCC @ =0x0000055e + adds r1, r2 + adds r1, r4 + ldr r0, _080E6DD0 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xDA + ldrb r0, [r0] + b _080E6E06 + .align 2, 0 +_080E6DCC: .4byte 0x0000055e +_080E6DD0: .4byte gUnknown_2023FE8 +_080E6DD4: + adds r0, r4, 0 + bl sub_80E7188 + ldr r1, _080E6DEC @ =gUnknown_300500C + ldr r1, [r1] + lsls r2, r4, 1 + ldr r3, _080E6DF0 @ =0x0000057c + adds r1, r3 + adds r1, r2 + strh r0, [r1] + b _080E6E08 + .align 2, 0 +_080E6DEC: .4byte gUnknown_300500C +_080E6DF0: .4byte 0x0000057c +_080E6DF4: + ldr r1, [r3] + ldr r2, _080E6E10 @ =0x0000055c + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + movs r3, 0xB0 + lsls r3, 3 + adds r1, r3 +_080E6E06: + strb r0, [r1] +_080E6E08: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E6E10: .4byte 0x0000055c + thumb_func_end sub_80E6C8C + + thumb_func_start sub_80E6E14 +sub_80E6E14: @ 80E6E14 + push {r4,r5,lr} + movs r2, 0 + ldr r5, _080E6E3C @ =gUnknown_203B0D4 + ldr r4, _080E6E40 @ =gUnknown_300500C + ldr r3, _080E6E44 @ =0x0000056d +_080E6E1E: + adds r0, r2, r5 + ldr r1, [r4] + adds r1, r3 + adds r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x2 + ble _080E6E1E + bl sub_80A03D8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E6E3C: .4byte gUnknown_203B0D4 +_080E6E40: .4byte gUnknown_300500C +_080E6E44: .4byte 0x0000056d + thumb_func_end sub_80E6E14 + + thumb_func_start sub_80E6E48 +sub_80E6E48: @ 80E6E48 + push {r4-r6,lr} + ldr r6, _080E6E98 @ =gUnknown_300500C + ldr r0, [r6] + ldr r1, _080E6E9C @ =0x0000055c + adds r0, r1 + ldrb r4, [r0] + lsls r4, 31 + lsrs r4, 31 + adds r0, r4, 0 + bl sub_80E7188 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [r6] + lsls r4, 1 + movs r2, 0xAD + lsls r2, 3 + adds r0, r2 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, r5 + bcs _080E6E76 + strh r5, [r1] +_080E6E76: + ldr r0, [r6] + adds r2, r0, r2 + ldr r3, _080E6EA0 @ =0x0000056a + adds r1, r0, r3 + ldrh r0, [r2] + ldrh r3, [r1] + cmp r0, r3 + bls _080E6EA8 + adds r5, r0, 0 + movs r0, 0x20 + adds r1, r5, 0 + bl sub_8054F00 + ldr r1, _080E6EA4 @ =0x0000270f + cmp r5, r1 + bhi _080E6EB8 + b _080E6ECC + .align 2, 0 +_080E6E98: .4byte gUnknown_300500C +_080E6E9C: .4byte 0x0000055c +_080E6EA0: .4byte 0x0000056a +_080E6EA4: .4byte 0x0000270f +_080E6EA8: + ldrh r5, [r1] + movs r0, 0x20 + adds r1, r5, 0 + bl sub_8054F00 + ldr r1, _080E6EC4 @ =0x0000270f + cmp r5, r1 + bls _080E6ECC +_080E6EB8: + ldr r0, [r6] + ldr r2, _080E6EC8 @ =0x0000057a + adds r0, r2 + strh r1, [r0] + b _080E6ED4 + .align 2, 0 +_080E6EC4: .4byte 0x0000270f +_080E6EC8: .4byte 0x0000057a +_080E6ECC: + ldr r0, [r6] + ldr r3, _080E6EDC @ =0x0000057a + adds r0, r3 + strh r5, [r0] +_080E6ED4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E6EDC: .4byte 0x0000057a + thumb_func_end sub_80E6E48 + + thumb_func_start sub_80E6EE0 +sub_80E6EE0: @ 80E6EE0 + push {r4-r6,lr} + ldr r0, _080E6F00 @ =gUnknown_300500C + ldr r2, [r0] + adds r5, r2, 0 + adds r5, 0xB0 + ldr r1, _080E6F04 @ =0x0000055c + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, 31 + lsrs r6, r0, 31 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _080E6F0C + ldr r4, _080E6F08 @ =gUnknown_84020C4 + b _080E6F0E + .align 2, 0 +_080E6F00: .4byte gUnknown_300500C +_080E6F04: .4byte 0x0000055c +_080E6F08: .4byte gUnknown_84020C4 +_080E6F0C: + ldr r4, _080E6FA0 @ =gUnknown_84020C4 +_080E6F0E: + ldrb r0, [r2, 0xA] + ldrb r1, [r2, 0xB] + adds r0, r1 + ldrb r1, [r2, 0xC] + adds r0, r1 + ldrb r1, [r2, 0xD] + adds r0, r1 + movs r1, 0 + bl __umodsi3 + adds r0, r4 + ldrb r0, [r0] + strb r6, [r5] + strb r0, [r5, 0x1] + adds r0, r5, 0 + adds r0, 0xC + ldr r4, _080E6FA4 @ =gUnknown_300500C + ldr r1, [r4] + adds r1, 0xA + bl sub_805490C + adds r0, r5, 0x4 + ldr r1, [r4] + bl sub_8008D54 + adds r0, r6, 0 + bl sub_80E7188 + strh r0, [r5, 0x2] + movs r4, 0 + ldr r6, _080E6FA8 @ =gUnknown_3005008 + ldr r3, _080E6FAC @ =0x00002cac + adds r2, r5, 0 + adds r2, 0x10 +_080E6F52: + lsls r0, r4, 1 + ldr r1, [r6] + adds r1, r3 + adds r1, r0 + ldrh r0, [r1] + strh r0, [r2] + adds r2, 0x2 + adds r4, 0x1 + cmp r4, 0x5 + ble _080E6F52 + movs r4, 0 +_080E6F68: + ldr r6, _080E6FA4 @ =gUnknown_300500C + ldr r0, [r6] + ldr r1, _080E6FB0 @ =0x0000056d + adds r0, r1 + adds r0, r4 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E6FB4 @ =gUnknown_2024220 + adds r0, r1 + movs r1, 0x2C + muls r1, r4 + adds r1, 0x1C + adds r1, r5, r1 + bl sub_803E23C + adds r4, 0x1 + cmp r4, 0x2 + ble _080E6F68 + ldr r0, [r6] + adds r0, 0xB0 + bl sub_80E70F4 + bl sub_80E6E48 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E6FA0: .4byte gUnknown_84020C4 +_080E6FA4: .4byte gUnknown_300500C +_080E6FA8: .4byte gUnknown_3005008 +_080E6FAC: .4byte 0x00002cac +_080E6FB0: .4byte 0x0000056d +_080E6FB4: .4byte gUnknown_2024220 + thumb_func_end sub_80E6EE0 + + thumb_func_start sub_80E6FB8 +sub_80E6FB8: @ 80E6FB8 + push {r4,r5,lr} + ldr r0, _080E703C @ =gUnknown_300500C + ldr r1, [r0] + ldr r2, _080E7040 @ =0x0000055c + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r5, r0, 31 + ldr r0, _080E7044 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x3 + beq _080E6FD4 + cmp r0, 0 + bne _080E6FF2 +_080E6FD4: + lsls r2, r5, 1 + ldr r3, _080E7048 @ =0x00000564 + adds r0, r1, r3 + adds r0, r2 + ldrh r0, [r0] + cmp r0, 0x1 + bhi _080E6FEE + subs r3, 0x4 + adds r0, r1, r3 + adds r0, r2 + ldrh r0, [r0] + cmp r0, 0x1 + bls _080E6FF2 +_080E6FEE: + bl sub_80E6EE0 +_080E6FF2: + bl sub_80E712C + ldr r4, _080E703C @ =gUnknown_300500C + ldr r0, [r4] + ldr r1, _080E704C @ =gUnknown_2023E8A + ldrb r1, [r1] + ldr r2, _080E7050 @ =0x0000055d + adds r0, r2 + strb r1, [r0] + ldr r0, _080E7044 @ =gUnknown_20370C0 + ldrh r1, [r0] + cmp r1, 0x3 + beq _080E7016 + ldr r0, [r4] + ldr r3, _080E7054 @ =0x0000055e + adds r0, r3 + adds r0, r5 + strb r1, [r0] +_080E7016: + movs r0, 0x80 + lsls r0, 7 + movs r1, 0 + bl sub_806E584 + ldr r1, [r4] + ldr r0, _080E7040 @ =0x0000055c + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + movs r0, 0x2 + bl sub_80DA364 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E703C: .4byte gUnknown_300500C +_080E7040: .4byte 0x0000055c +_080E7044: .4byte gUnknown_20370C0 +_080E7048: .4byte 0x00000564 +_080E704C: .4byte gUnknown_2023E8A +_080E7050: .4byte 0x0000055d +_080E7054: .4byte 0x0000055e + thumb_func_end sub_80E6FB8 + + thumb_func_start sub_80E7058 +sub_80E7058: @ 80E7058 + push {lr} + bl sub_80008D8 + pop {r0} + bx r0 + thumb_func_end sub_80E7058 + + thumb_func_start sub_80E7064 +sub_80E7064: @ 80E7064 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080E70F0 @ =gUnknown_300500C + ldr r0, [r0] + movs r3, 0 + movs r2, 0 + adds r1, r0, 0 + adds r1, 0xB0 +_080E7076: + ldm r1!, {r0} + adds r3, r0 + adds r2, 0x1 + cmp r2, 0x27 + bls _080E7076 + ldr r5, _080E70F0 @ =gUnknown_300500C + ldr r1, [r5] + movs r2, 0xA8 + lsls r2, 1 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, r3 + beq _080E7098 + adds r0, r1, 0 + adds r0, 0xB0 + bl sub_80E7118 +_080E7098: + movs r4, 0 + adds r7, r5, 0 + movs r6, 0xA4 + mov r8, r7 +_080E70A0: + adds r0, r4, 0 + muls r0, r6 + movs r3, 0xAA + lsls r3, 1 + adds r0, r3 + ldr r1, [r7] + movs r3, 0 + movs r2, 0 + adds r5, r4, 0x1 + adds r1, r0 +_080E70B4: + ldm r1!, {r0} + adds r3, r0 + adds r2, 0x1 + cmp r2, 0x27 + bls _080E70B4 + mov r0, r8 + ldr r2, [r0] + adds r1, r4, 0 + muls r1, r6 + movs r4, 0xFA + lsls r4, 1 + adds r0, r2, r4 + adds r0, r1 + ldr r0, [r0] + cmp r0, r3 + beq _080E70E0 + movs r3, 0xAA + lsls r3, 1 + adds r0, r1, r3 + adds r0, r2, r0 + bl sub_80E7118 +_080E70E0: + adds r4, r5, 0 + cmp r4, 0x4 + ble _080E70A0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E70F0: .4byte gUnknown_300500C + thumb_func_end sub_80E7064 + + thumb_func_start sub_80E70F4 +sub_80E70F4: @ 80E70F4 + push {r4,lr} + adds r2, r0, 0 + adds r2, 0xA0 + movs r1, 0 + str r1, [r2] + movs r3, 0 + adds r4, r0, 0 +_080E7102: + ldr r0, [r2] + ldm r4!, {r1} + adds r0, r1 + str r0, [r2] + adds r3, 0x1 + cmp r3, 0x27 + bls _080E7102 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E70F4 + + thumb_func_start sub_80E7118 +sub_80E7118: @ 80E7118 + push {lr} + movs r1, 0 + movs r2, 0 +_080E711E: + stm r0!, {r2} + adds r1, 0x1 + cmp r1, 0x28 + bls _080E711E + pop {r0} + bx r0 + thumb_func_end sub_80E7118 + + thumb_func_start sub_80E712C +sub_80E712C: @ 80E712C + push {r4,r5,lr} + ldr r4, _080E7174 @ =gUnknown_300500C + ldr r0, [r4] + ldr r1, _080E7178 @ =0x0000048c + adds r0, r1 + bl sub_80E6150 + ldr r1, [r4] + ldr r3, _080E717C @ =gUnknown_2023BE4 + adds r0, r3, 0 + adds r0, 0x58 + ldrh r2, [r0] + ldr r5, _080E7180 @ =0x0000048a + adds r0, r1, r5 + strh r2, [r0] + ldrh r0, [r3] + movs r2, 0x91 + lsls r2, 3 + adds r1, r2 + strh r0, [r1] + movs r2, 0 + adds r5, r4, 0 + ldr r4, _080E7184 @ =0x00000494 + adds r3, 0x30 +_080E715C: + ldr r0, [r5] + adds r0, r4 + adds r0, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x9 + ble _080E715C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E7174: .4byte gUnknown_300500C +_080E7178: .4byte 0x0000048c +_080E717C: .4byte gUnknown_2023BE4 +_080E7180: .4byte 0x0000048a +_080E7184: .4byte 0x00000494 + thumb_func_end sub_80E712C + + thumb_func_start sub_80E7188 +sub_80E7188: @ 80E7188 + push {lr} + lsls r0, 24 + ldr r1, _080E71C0 @ =gUnknown_300500C + ldr r3, [r1] + lsrs r0, 23 + ldr r2, _080E71C4 @ =0x00000564 + adds r1, r3, r2 + adds r1, r0 + ldrh r2, [r1] + subs r2, 0x1 + lsls r1, r2, 3 + subs r1, r2 + movs r2, 0xAC + lsls r2, 3 + adds r3, r2 + adds r3, r0 + ldr r0, _080E71C8 @ =0x0000ffff + adds r1, r0 + ldrh r3, [r3] + adds r1, r3 + lsls r1, 16 + lsrs r0, r1, 16 + ldr r1, _080E71CC @ =0x0000270f + cmp r0, r1 + bls _080E71BC + adds r0, r1, 0 +_080E71BC: + pop {r1} + bx r1 + .align 2, 0 +_080E71C0: .4byte gUnknown_300500C +_080E71C4: .4byte 0x00000564 +_080E71C8: .4byte 0x0000ffff +_080E71CC: .4byte 0x0000270f + thumb_func_end sub_80E7188 + + thumb_func_start sub_80E71D0 +sub_80E71D0: @ 80E71D0 + push {r4,r5,lr} + ldr r4, _080E7214 @ =gUnknown_300500C + ldr r1, [r4] + ldr r2, _080E7218 @ =0x0000055c + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + lsls r0, 1 + adds r2, 0x8 + adds r1, r2 + adds r1, r0 + ldrh r0, [r1] + subs r0, 0x1 + cmp r0, 0x5 + ble _080E7220 + bl sub_8044EC8 + ldr r4, [r4] + ldr r5, _080E721C @ =gUnknown_84020E6 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x9 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 15 + adds r0, r5 + ldrh r0, [r0] + movs r1, 0xAE + lsls r1, 3 + adds r4, r1 + b _080E7240 + .align 2, 0 +_080E7214: .4byte gUnknown_300500C +_080E7218: .4byte 0x0000055c +_080E721C: .4byte gUnknown_84020E6 +_080E7220: + bl sub_8044EC8 + ldr r4, [r4] + ldr r5, _080E7248 @ =gUnknown_84020DA + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 15 + adds r0, r5 + ldrh r0, [r0] + movs r2, 0xAE + lsls r2, 3 + adds r4, r2 +_080E7240: + strh r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E7248: .4byte gUnknown_84020DA + thumb_func_end sub_80E71D0 + + thumb_func_start sub_80E724C +sub_80E724C: @ 80E724C + push {r4-r6,lr} + ldr r5, _080E7288 @ =gUnknown_300500C + ldr r1, [r5] + ldr r2, _080E728C @ =0x0000055c + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 31 + lsrs r6, r0, 31 + movs r0, 0xAE + lsls r0, 3 + adds r1, r0 + ldrh r0, [r1] + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _080E7298 + ldr r0, [r5] + movs r1, 0xAE + lsls r1, 3 + adds r0, r1 + ldrh r0, [r0] + ldr r1, _080E7290 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r0, _080E7294 @ =gUnknown_20370D0 + strh r4, [r0] + b _080E72AA + .align 2, 0 +_080E7288: .4byte gUnknown_300500C +_080E728C: .4byte 0x0000055c +_080E7290: .4byte gUnknown_2021CD0 +_080E7294: .4byte gUnknown_20370D0 +_080E7298: + ldr r1, _080E72B0 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + ldr r0, [r5] + ldr r2, _080E72B4 @ =0x0000055e + adds r0, r2 + adds r0, r6 + movs r1, 0x6 + strb r1, [r0] +_080E72AA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E72B0: .4byte gUnknown_20370D0 +_080E72B4: .4byte 0x0000055e + thumb_func_end sub_80E724C + + thumb_func_start sub_80E72B8 +sub_80E72B8: @ 80E72B8 + push {r4-r7,lr} + ldr r0, _080E7334 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E7338 @ =0x0000055c + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + adds r1, r0, 0 + movs r7, 0x44 + cmp r1, 0 + beq _080E72D2 + movs r7, 0x45 +_080E72D2: + ldr r4, _080E733C @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r4] + adds r0, r1, 0 + bl sub_80E7188 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x37 + bls _080E7320 + movs r5, 0 + adds r6, r4, 0 +_080E72EA: + ldr r0, _080E7334 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E7340 @ =0x0000056d + adds r0, r1 + adds r0, r5 + ldrb r0, [r0] + subs r0, 0x1 + movs r1, 0x64 + muls r1, r0 + ldr r0, _080E7344 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _080E731A + movs r0, 0x1 + strh r0, [r6] + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_804037C +_080E731A: + adds r5, 0x1 + cmp r5, 0x2 + ble _080E72EA +_080E7320: + ldr r0, _080E733C @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0 + beq _080E732E + movs r0, 0x2A + bl sub_8054E90 +_080E732E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7334: .4byte gUnknown_300500C +_080E7338: .4byte 0x0000055c +_080E733C: .4byte gUnknown_20370D0 +_080E7340: .4byte 0x0000056d +_080E7344: .4byte gUnknown_2024284 + thumb_func_end sub_80E72B8 + + thumb_func_start sub_80E7348 +sub_80E7348: @ 80E7348 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r1, _080E7368 @ =gUnknown_300500C + ldr r2, [r1] + movs r0, 0x94 + lsls r0, 3 + adds r7, r2, r0 + ldrb r0, [r2, 0x8] + adds r5, r1, 0 + cmp r0, 0 + beq _080E7370 + ldr r4, _080E736C @ =gUnknown_84020C4 + b _080E7372 + .align 2, 0 +_080E7368: .4byte gUnknown_300500C +_080E736C: .4byte gUnknown_84020C4 +_080E7370: + ldr r4, _080E7410 @ =gUnknown_84020C4 +_080E7372: + ldrb r0, [r2, 0xA] + ldrb r1, [r2, 0xB] + adds r0, r1 + ldrb r1, [r2, 0xC] + adds r0, r1 + ldrb r1, [r2, 0xD] + adds r0, r1 + movs r1, 0 + bl __umodsi3 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r7, 0x1] + adds r0, r7, 0 + adds r0, 0xC + ldr r1, [r5] + adds r1, 0xA + bl sub_805490C + adds r0, r7, 0x4 + ldr r1, [r5] + bl sub_8008D54 + movs r0, 0x1 + strh r0, [r7, 0x2] + movs r6, 0x7 + movs r4, 0 + ldr r0, _080E7414 @ =gUnknown_3005008 + mov r8, r0 + adds r5, r7, 0 + adds r5, 0x10 + ldr r1, _080E7418 @ =0x00002cac + mov r12, r1 + adds r3, r7, 0 + adds r3, 0x28 + adds r2, r7, 0 + adds r2, 0x1C +_080E73BC: + lsls r0, r4, 1 + mov r9, r0 + mov r1, r8 + ldr r0, [r1] + add r0, r12 + add r0, r9 + ldrh r0, [r0] + strh r0, [r5] + strh r6, [r2] + adds r0, r6, 0x6 + strh r0, [r3] + adds r6, 0x1 + adds r5, 0x2 + adds r3, 0x2 + adds r2, 0x2 + adds r4, 0x1 + cmp r4, 0x5 + ble _080E73BC + movs r4, 0 +_080E73E2: + movs r0, 0x64 + muls r0, r4 + ldr r1, _080E741C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2C + muls r1, r4 + adds r1, 0x34 + adds r1, r7, r1 + bl sub_803E23C + adds r4, 0x1 + cmp r4, 0x2 + ble _080E73E2 + adds r0, r7, 0 + bl sub_80E7500 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7410: .4byte gUnknown_84020C4 +_080E7414: .4byte gUnknown_3005008 +_080E7418: .4byte 0x00002cac +_080E741C: .4byte gUnknown_2024284 + thumb_func_end sub_80E7348 + + thumb_func_start sub_80E7420 +sub_80E7420: @ 80E7420 + ldr r1, _080E7434 @ =gUnknown_82538A8 + ldr r0, _080E7438 @ =gUnknown_300500C + ldr r0, [r0] + ldr r2, _080E743C @ =0x000004a1 + adds r0, r2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080E7434: .4byte gUnknown_82538A8 +_080E7438: .4byte gUnknown_300500C +_080E743C: .4byte 0x000004a1 + thumb_func_end sub_80E7420 + + thumb_func_start sub_80E7440 +sub_80E7440: @ 80E7440 + ldr r1, _080E7454 @ =gUnknown_825393E + ldr r0, _080E7458 @ =gUnknown_300500C + ldr r0, [r0] + ldr r2, _080E745C @ =0x000004a1 + adds r0, r2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080E7454: .4byte gUnknown_825393E +_080E7458: .4byte gUnknown_300500C +_080E745C: .4byte 0x000004a1 + thumb_func_end sub_80E7440 + + thumb_func_start sub_80E7460 +sub_80E7460: @ 80E7460 + push {r4,lr} + adds r3, r0, 0 + movs r2, 0 + ldr r0, _080E7488 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E748C @ =0x000004a4 + adds r4, r0, r1 +_080E746E: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x4 + ble _080E746E + adds r1, r3, r2 + movs r0, 0xFF + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E7488: .4byte gUnknown_300500C +_080E748C: .4byte 0x000004a4 + thumb_func_end sub_80E7460 + + thumb_func_start sub_80E7490 +sub_80E7490: @ 80E7490 + push {r4-r6,lr} + ldr r2, _080E74C0 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r2] + ldr r1, _080E74C4 @ =gUnknown_300500C + ldr r0, [r1] + movs r3, 0x94 + lsls r3, 3 + adds r5, r0, r3 + movs r4, 0 + movs r3, 0 + adds r6, r1, 0 + adds r1, r5, 0 +_080E74AA: + ldm r1!, {r0} + orrs r4, r0 + adds r3, 0x1 + cmp r3, 0x2D + bls _080E74AA + cmp r4, 0 + bne _080E74C8 + movs r0, 0x1 + strh r0, [r2] + b _080E74F6 + .align 2, 0 +_080E74C0: .4byte gUnknown_20370D0 +_080E74C4: .4byte gUnknown_300500C +_080E74C8: + movs r4, 0 + movs r3, 0 + adds r2, r5, 0 +_080E74CE: + ldm r2!, {r0} + adds r4, r0 + adds r3, 0x1 + cmp r3, 0x2D + bls _080E74CE + ldr r1, [r6] + movs r2, 0xAB + lsls r2, 3 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, r4 + beq _080E74F6 + movs r3, 0x94 + lsls r3, 3 + adds r0, r1, r3 + bl sub_80E7524 + ldr r1, _080E74FC @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] +_080E74F6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E74FC: .4byte gUnknown_20370D0 + thumb_func_end sub_80E7490 + + thumb_func_start sub_80E7500 +sub_80E7500: @ 80E7500 + push {r4,lr} + adds r2, r0, 0 + adds r2, 0xB8 + movs r1, 0 + str r1, [r2] + movs r3, 0 + adds r4, r0, 0 +_080E750E: + ldr r0, [r2] + ldm r4!, {r1} + adds r0, r1 + str r0, [r2] + adds r3, 0x1 + cmp r3, 0x2D + bls _080E750E + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E7500 + + thumb_func_start sub_80E7524 +sub_80E7524: @ 80E7524 + push {lr} + movs r1, 0 + movs r2, 0 +_080E752A: + stm r0!, {r2} + adds r1, 0x1 + cmp r1, 0x2E + bls _080E752A + pop {r0} + bx r0 + thumb_func_end sub_80E7524 + + thumb_func_start sub_80E7538 +sub_80E7538: @ 80E7538 + push {lr} + ldr r0, _080E754C @ =gUnknown_300500C + ldr r0, [r0] + movs r1, 0x96 + lsls r1, 3 + adds r0, r1 + bl sub_80E678C + pop {r0} + bx r0 + .align 2, 0 +_080E754C: .4byte gUnknown_300500C + thumb_func_end sub_80E7538 + + thumb_func_start sub_80E7550 +sub_80E7550: @ 80E7550 + push {lr} + ldr r0, _080E7564 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x3 + bne _080E756C + ldr r1, _080E7568 @ =gUnknown_2021D18 + movs r0, 0xFF + strb r0, [r1] + b _080E7590 + .align 2, 0 +_080E7564: .4byte gUnknown_2023E8A +_080E7568: .4byte gUnknown_2021D18 +_080E756C: + cmp r0, 0x1 + bne _080E7584 + ldr r0, _080E7580 @ =gUnknown_300500C + ldr r0, [r0] + movs r1, 0x99 + lsls r1, 3 + adds r0, r1 + bl sub_80E678C + b _080E7590 + .align 2, 0 +_080E7580: .4byte gUnknown_300500C +_080E7584: + ldr r0, _080E7594 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _080E7598 @ =0x000004bc + adds r0, r1 + bl sub_80E678C +_080E7590: + pop {r0} + bx r0 + .align 2, 0 +_080E7594: .4byte gUnknown_300500C +_080E7598: .4byte 0x000004bc + thumb_func_end sub_80E7550 + + thumb_func_start sub_80E759C +sub_80E759C: @ 80E759C + push {lr} + movs r0, 0x1 +_080E75A0: + subs r0, 0x1 + cmp r0, 0 + bge _080E75A0 + pop {r0} + bx r0 + thumb_func_end sub_80E759C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_transition.s b/asm/battle_transition.s new file mode 100644 index 000000000..e1efd07cb --- /dev/null +++ b/asm/battle_transition.s @@ -0,0 +1,7480 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D08B8 +sub_80D08B8: @ 80D08B8 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _080D08DC @ =gUnknown_2039A2C + movs r0, 0x3C + bl sub_8002BB0 + str r0, [r5] + ldr r1, _080D08E0 @ =gUnknown_30030F0 + ldr r0, _080D08E4 @ =sub_80565A8 + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_80D0948 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D08DC: .4byte gUnknown_2039A2C +_080D08E0: .4byte gUnknown_30030F0 +_080D08E4: .4byte sub_80565A8 + thumb_func_end sub_80D08B8 + + thumb_func_start sub_80D08E8 +sub_80D08E8: @ 80D08E8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80D0948 + pop {r0} + bx r0 + thumb_func_end sub_80D08E8 + + thumb_func_start sub_80D08F8 +sub_80D08F8: @ 80D08F8 + push {r4,r5,lr} + ldr r0, _080D091C @ =sub_80D0978 + bl sub_8077688 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080D0920 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x26 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D0924 + movs r0, 0 + b _080D093C + .align 2, 0 +_080D091C: .4byte sub_80D0978 +_080D0920: .4byte gUnknown_3005090 +_080D0924: + bl sub_80D3DD0 + ldr r4, _080D0944 @ =gUnknown_2039A2C + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + adds r0, r5, 0 + bl sub_8077508 + movs r0, 0x1 +_080D093C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D0944: .4byte gUnknown_2039A2C + thumb_func_end sub_80D08F8 + + thumb_func_start sub_80D0948 +sub_80D0948: @ 80D0948 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080D0970 @ =sub_80D0978 + movs r1, 0x2 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D0974 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D0970: .4byte sub_80D0978 +_080D0974: .4byte gUnknown_3005090 + thumb_func_end sub_80D0948 + + thumb_func_start sub_80D0978 +sub_80D0978: @ 80D0978 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D09A8 @ =gUnknown_83FA3B0 + ldr r2, _080D09AC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D098A: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D098A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D09A8: .4byte gUnknown_83FA3B0 +_080D09AC: .4byte gUnknown_3005090 + thumb_func_end sub_80D0978 + + thumb_func_start sub_80D09B0 +sub_80D09B0: @ 80D09B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_807B05C + ldr r0, _080D09DC @ =gUnknown_20375F8 + ldr r1, _080D09E0 @ =gUnknown_20371F8 + ldr r2, _080D09E4 @ =0x04000100 + bl CpuSet + ldr r1, _080D09E8 @ =gUnknown_83FA320 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _080D09EC + movs r0, 0x2 + strh r0, [r4, 0x8] + movs r0, 0x1 + b _080D09FA + .align 2, 0 +_080D09DC: .4byte gUnknown_20375F8 +_080D09E0: .4byte gUnknown_20371F8 +_080D09E4: .4byte 0x04000100 +_080D09E8: .4byte gUnknown_83FA320 +_080D09EC: + movs r1, 0x4 + bl sub_807741C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 +_080D09FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D09B0 + + thumb_func_start sub_80D0A00 +sub_80D0A00: @ 80D0A00 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080D0A20 @ =gUnknown_83FA320 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080D0A24 + movs r0, 0 + b _080D0A2C + .align 2, 0 +_080D0A20: .4byte gUnknown_83FA320 +_080D0A24: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 +_080D0A2C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D0A00 + + thumb_func_start sub_80D0A34 +sub_80D0A34: @ 80D0A34 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080D0A58 @ =gUnknown_83FA368 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_807741C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D0A58: .4byte gUnknown_83FA368 + thumb_func_end sub_80D0A34 + + thumb_func_start sub_80D0A5C +sub_80D0A5C: @ 80D0A5C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + strh r0, [r4, 0x26] + ldr r1, _080D0A88 @ =gUnknown_83FA368 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080D0A80 + movs r0, 0x1 + strh r0, [r4, 0x26] +_080D0A80: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D0A88: .4byte gUnknown_83FA368 + thumb_func_end sub_80D0A5C + + thumb_func_start sub_80D0A8C +sub_80D0A8C: @ 80D0A8C + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r1, _080D0AC0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0x8] + movs r3, 0x8 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080D0AC4 + adds r0, r2, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_80D3C40 + b _080D0AD4 + .align 2, 0 +_080D0AC0: .4byte gUnknown_3005090 +_080D0AC4: + bl sub_80D3CA4 + lsls r0, 24 + cmp r0, 0 + beq _080D0AD4 + adds r0, r4, 0 + bl sub_8077508 +_080D0AD4: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D0A8C + + thumb_func_start sub_80D0ADC +sub_80D0ADC: @ 80D0ADC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D0B0C @ =gUnknown_83FA3C0 + ldr r2, _080D0B10 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D0AEE: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D0AEE + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D0B0C: .4byte gUnknown_83FA3C0 +_080D0B10: .4byte gUnknown_3005090 + thumb_func_end sub_80D0ADC + + thumb_func_start sub_80D0B14 +sub_80D0B14: @ 80D0B14 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0x40 + bl sub_8000AF4 + movs r0, 0xC + movs r1, 0x40 + bl sub_8000AF4 + movs r0, 0xE + movs r1, 0x40 + bl sub_8000AF4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D0B14 + + thumb_func_start sub_80D0B48 +sub_80D0B48: @ 80D0B48 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0xA] + movs r1, 0xA + ldrsh r2, [r4, r1] + cmp r2, 0 + beq _080D0B5E + subs r0, 0x1 + strh r0, [r4, 0xA] + b _080D0B9E +_080D0B5E: + movs r0, 0x2 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080D0B80 + movs r1, 0x1 + negs r1, r1 + str r2, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080D0B80: + ldrh r1, [r4, 0xC] + movs r0, 0xF + ands r0, r1 + lsls r1, r0, 4 + orrs r1, r0 + movs r0, 0x4C + bl sub_8000A38 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0xE + ble _080D0B9E + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D0B9E: + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D0B48 + + thumb_func_start sub_80D0BA8 +sub_80D0BA8: @ 80D0BA8 + push {lr} + ldr r0, _080D0BCC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080D0BC4 + ldr r0, _080D0BD0 @ =sub_80D0ADC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D0BC4: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D0BCC: .4byte gUnknown_2037AB8 +_080D0BD0: .4byte sub_80D0ADC + thumb_func_end sub_80D0BA8 + + thumb_func_start sub_80D0BD4 +sub_80D0BD4: @ 80D0BD4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D0C04 @ =gUnknown_83FA3CC + ldr r2, _080D0C08 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D0BE6: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D0BE6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D0C04: .4byte gUnknown_83FA3CC +_080D0C08: .4byte gUnknown_3005090 + thumb_func_end sub_80D0BD4 + + thumb_func_start sub_80D0C0C +sub_80D0C0C: @ 80D0C0C + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + movs r0, 0x1 + negs r0, r0 + movs r4, 0 + str r4, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080D0C68 @ =gUnknown_2038E80 + ldr r1, _080D0C6C @ =gUnknown_2039A2C + ldr r1, [r1] + movs r2, 0x14 + ldrsh r1, [r1, r2] + str r4, [sp] + movs r2, 0xA0 + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0x2 + bl sub_80D3E74 + ldr r0, _080D0C70 @ =sub_80D0CF0 + bl sub_80006F4 + ldr r0, _080D0C74 @ =sub_80D0D28 + bl sub_8000700 + movs r0, 0x3 + bl sub_8000B68 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D0C68: .4byte gUnknown_2038E80 +_080D0C6C: .4byte gUnknown_2039A2C +_080D0C70: .4byte sub_80D0CF0 +_080D0C74: .4byte sub_80D0D28 + thumb_func_end sub_80D0C0C + + thumb_func_start sub_80D0C78 +sub_80D0C78: @ 80D0C78 + push {r4,r5,lr} + sub sp, 0x8 + ldr r4, _080D0CE0 @ =gUnknown_2039A2C + ldr r2, [r4] + ldrb r1, [r2] + movs r1, 0 + strb r1, [r2] + ldrh r1, [r0, 0xA] + adds r1, 0x4 + strh r1, [r0, 0xA] + ldrh r1, [r0, 0xC] + adds r1, 0x8 + strh r1, [r0, 0xC] + ldr r3, _080D0CE4 @ =gUnknown_2038700 + ldr r1, [r4] + movs r2, 0x14 + ldrsh r1, [r1, r2] + movs r5, 0xA + ldrsh r2, [r0, r5] + movs r5, 0xC + ldrsh r0, [r0, r5] + str r0, [sp] + movs r0, 0xA0 + str r0, [sp, 0x4] + adds r0, r3, 0 + movs r3, 0x2 + bl sub_80D3E74 + ldr r0, _080D0CE8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080D0CCA + ldr r0, _080D0CEC @ =sub_80D0BD4 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D0CCA: + ldr r0, [r4] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D0CE0: .4byte gUnknown_2039A2C +_080D0CE4: .4byte gUnknown_2038700 +_080D0CE8: .4byte gUnknown_2037AB8 +_080D0CEC: .4byte sub_80D0BD4 + thumb_func_end sub_80D0C78 + + thumb_func_start sub_80D0CF0 +sub_80D0CF0: @ 80D0CF0 + push {lr} + bl sub_80D3DF4 + ldr r0, _080D0D18 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + beq _080D0D14 + ldr r1, _080D0D1C @ =0x040000d4 + ldr r0, _080D0D20 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D0D24 @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D0D14: + pop {r0} + bx r0 + .align 2, 0 +_080D0D18: .4byte gUnknown_2039A2C +_080D0D1C: .4byte 0x040000d4 +_080D0D20: .4byte gUnknown_2038700 +_080D0D24: .4byte 0x800000a0 + thumb_func_end sub_80D0CF0 + + thumb_func_start sub_80D0D28 +sub_80D0D28: @ 80D0D28 + ldr r1, _080D0D48 @ =gUnknown_2038700 + ldr r0, _080D0D4C @ =0x04000006 + ldrh r0, [r0] + lsls r0, 1 + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080D0D50 @ =0x04000014 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + bx lr + .align 2, 0 +_080D0D48: .4byte gUnknown_2038700 +_080D0D4C: .4byte 0x04000006 +_080D0D50: .4byte 0x04000014 + thumb_func_end sub_80D0D28 + + thumb_func_start sub_80D0D54 +sub_80D0D54: @ 80D0D54 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D0D84 @ =gUnknown_83FA3D4 + ldr r2, _080D0D88 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D0D66: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D0D66 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D0D84: .4byte gUnknown_83FA3D4 +_080D0D88: .4byte gUnknown_3005090 + thumb_func_end sub_80D0D54 + + thumb_func_start sub_80D0D8C +sub_80D0D8C: @ 80D0D8C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080D0DE0 @ =gUnknown_2039A2C + ldr r1, [r0] + ldr r0, _080D0DE4 @ =gUnknown_2038E80 + movs r2, 0x16 + ldrsh r1, [r1, r2] + movs r2, 0xA0 + lsls r2, 1 + bl memset + ldr r0, _080D0DE8 @ =sub_80D0E80 + bl sub_80006F4 + ldr r0, _080D0DEC @ =sub_80D0EB8 + bl sub_8000700 + movs r0, 0x3 + bl sub_8000B68 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D0DE0: .4byte gUnknown_2039A2C +_080D0DE4: .4byte gUnknown_2038E80 +_080D0DE8: .4byte sub_80D0E80 +_080D0DEC: .4byte sub_80D0EB8 + thumb_func_end sub_80D0D8C + + thumb_func_start sub_80D0DF0 +sub_80D0DF0: @ 80D0DF0 + push {r4-r7,lr} + ldr r1, _080D0E70 @ =gUnknown_2039A2C + ldr r2, [r1] + ldrb r1, [r2] + movs r1, 0 + strb r1, [r2] + ldrh r4, [r0, 0xA] + ldrh r2, [r0, 0xC] + lsls r3, r2, 16 + asrs r3, 24 + movs r5, 0x84 + lsls r5, 5 + adds r1, r4, r5 + strh r1, [r0, 0xA] + movs r1, 0xC0 + lsls r1, 1 + adds r2, r1 + strh r2, [r0, 0xC] + movs r5, 0 + lsls r7, r3, 16 +_080D0E18: + lsrs r0, r4, 8 + asrs r1, r7, 16 + bl sub_8044E30 + ldr r1, _080D0E74 @ =gUnknown_2038700 + lsls r2, r5, 1 + adds r2, r1 + ldr r6, _080D0E70 @ =gUnknown_2039A2C + ldr r1, [r6] + ldrh r1, [r1, 0x16] + adds r0, r1 + strh r0, [r2] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x84 + lsls r1, 5 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r5, 0x9F + bls _080D0E18 + ldr r0, _080D0E78 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080D0E5E + ldr r0, _080D0E7C @ =sub_80D0D54 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D0E5E: + ldr r0, [r6] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D0E70: .4byte gUnknown_2039A2C +_080D0E74: .4byte gUnknown_2038700 +_080D0E78: .4byte gUnknown_2037AB8 +_080D0E7C: .4byte sub_80D0D54 + thumb_func_end sub_80D0DF0 + + thumb_func_start sub_80D0E80 +sub_80D0E80: @ 80D0E80 + push {lr} + bl sub_80D3DF4 + ldr r0, _080D0EA8 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + beq _080D0EA4 + ldr r1, _080D0EAC @ =0x040000d4 + ldr r0, _080D0EB0 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D0EB4 @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D0EA4: + pop {r0} + bx r0 + .align 2, 0 +_080D0EA8: .4byte gUnknown_2039A2C +_080D0EAC: .4byte 0x040000d4 +_080D0EB0: .4byte gUnknown_2038700 +_080D0EB4: .4byte 0x800000a0 + thumb_func_end sub_80D0E80 + + thumb_func_start sub_80D0EB8 +sub_80D0EB8: @ 80D0EB8 + ldr r1, _080D0ED8 @ =gUnknown_2038700 + ldr r0, _080D0EDC @ =0x04000006 + ldrh r0, [r0] + lsls r0, 1 + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080D0EE0 @ =0x04000016 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + bx lr + .align 2, 0 +_080D0ED8: .4byte gUnknown_2038700 +_080D0EDC: .4byte 0x04000006 +_080D0EE0: .4byte 0x04000016 + thumb_func_end sub_80D0EB8 + + thumb_func_start sub_80D0EE4 +sub_80D0EE4: @ 80D0EE4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D0F14 @ =gUnknown_83FA3DC + ldr r2, _080D0F18 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D0EF6: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D0EF6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D0F14: .4byte gUnknown_83FA3DC +_080D0F18: .4byte gUnknown_3005090 + thumb_func_end sub_80D0EE4 + + thumb_func_start sub_80D0F1C +sub_80D0F1C: @ 80D0F1C + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + movs r1, 0 + movs r0, 0x10 + strh r0, [r4, 0xA] + strh r1, [r4, 0xC] + strh r1, [r4, 0x10] + movs r0, 0x80 + lsls r0, 7 + strh r0, [r4, 0x12] + ldr r0, _080D0FB8 @ =gUnknown_2039A2C + ldr r2, [r0] + movs r0, 0x3F + strh r0, [r2, 0x2] + strh r1, [r2, 0x4] + movs r0, 0xF0 + strh r0, [r2, 0x6] + movs r0, 0xA0 + strh r0, [r2, 0x8] + ldr r0, _080D0FBC @ =0x00003f41 + strh r0, [r2, 0xE] + ldrh r0, [r4, 0xA] + lsls r0, 8 + ldrh r1, [r4, 0xC] + orrs r0, r1 + strh r0, [r2, 0x10] + movs r1, 0 + add r5, sp, 0x4 + add r6, sp, 0x8 + ldr r3, _080D0FC0 @ =gUnknown_2038E80 + movs r2, 0xF0 +_080D0F64: + lsls r0, r1, 1 + adds r0, r3 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x9F + bls _080D0F64 + ldr r0, _080D0FC4 @ =sub_80D1370 + bl sub_80006F4 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80D3E28 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, [sp, 0x4] + ldr r2, _080D0FC8 @ =0x01000400 + mov r0, sp + bl CpuSet + ldr r0, _080D0FCC @ =gUnknown_83F87A0 + ldr r1, [sp, 0x8] + movs r2, 0xB0 + lsls r2, 2 + bl CpuSet + ldr r0, _080D0FD0 @ =gUnknown_83FA638 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D0FB8: .4byte gUnknown_2039A2C +_080D0FBC: .4byte 0x00003f41 +_080D0FC0: .4byte gUnknown_2038E80 +_080D0FC4: .4byte sub_80D1370 +_080D0FC8: .4byte 0x01000400 +_080D0FCC: .4byte gUnknown_83F87A0 +_080D0FD0: .4byte gUnknown_83FA638 + thumb_func_end sub_80D0F1C + + thumb_func_start sub_80D0FD4 +sub_80D0FD4: @ 80D0FD4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + adds r7, r0, 0 + ldr r5, _080D105C @ =gUnknown_83FA784 + add r1, sp, 0xC + add r0, sp, 0x8 + bl sub_80D3E28 + movs r1, 0 + ldr r0, [sp, 0x8] + mov r9, r0 + ldr r6, _080D1060 @ =gUnknown_2038700 + mov r8, r6 + movs r0, 0xF0 + lsls r0, 8 + mov r12, r0 +_080D0FFA: + movs r0, 0 + lsls r3, r1, 16 + asrs r4, r3, 11 +_080D1000: + lsls r2, r0, 16 + asrs r2, 16 + adds r1, r4, r2 + lsls r1, 1 + add r1, r9 + ldrh r0, [r5] + mov r6, r12 + orrs r0, r6 + strh r0, [r1] + adds r2, 0x1 + lsls r2, 16 + adds r5, 0x2 + lsrs r0, r2, 16 + asrs r2, 16 + cmp r2, 0x1D + ble _080D1000 + movs r1, 0x80 + lsls r1, 9 + adds r0, r3, r1 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080D0FFA + movs r6, 0x10 + ldrsh r2, [r7, r6] + movs r1, 0x12 + ldrsh r0, [r7, r1] + str r0, [sp] + movs r0, 0xA0 + str r0, [sp, 0x4] + mov r0, r8 + movs r1, 0 + movs r3, 0x84 + bl sub_80D3E74 + ldrh r0, [r7, 0x8] + adds r0, 0x1 + strh r0, [r7, 0x8] + movs r0, 0x1 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D105C: .4byte gUnknown_83FA784 +_080D1060: .4byte gUnknown_2038700 + thumb_func_end sub_80D0FD4 + + thumb_func_start sub_80D1064 +sub_80D1064: @ 80D1064 + push {r4,r5,lr} + sub sp, 0x8 + adds r3, r0, 0 + ldr r2, _080D10EC @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldrh r1, [r3, 0xE] + movs r4, 0xE + ldrsh r0, [r3, r4] + adds r4, r2, 0 + cmp r0, 0 + beq _080D108A + subs r0, r1, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080D1094 +_080D108A: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + movs r0, 0x1 + strh r0, [r3, 0xE] +_080D1094: + ldr r2, [r4] + ldrh r0, [r3, 0xA] + lsls r0, 8 + ldrh r1, [r3, 0xC] + orrs r0, r1 + strh r0, [r2, 0x10] + movs r5, 0xC + ldrsh r0, [r3, r5] + cmp r0, 0xF + ble _080D10AE + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_080D10AE: + ldrh r0, [r3, 0x10] + adds r0, 0xC + strh r0, [r3, 0x10] + ldr r0, _080D10F0 @ =0xfffffe80 + adds r1, r0, 0 + ldrh r5, [r3, 0x12] + adds r1, r5 + strh r1, [r3, 0x12] + ldr r0, _080D10F4 @ =gUnknown_2038700 + movs r5, 0x10 + ldrsh r2, [r3, r5] + lsls r1, 16 + asrs r1, 24 + str r1, [sp] + movs r1, 0xA0 + str r1, [sp, 0x4] + movs r1, 0 + movs r3, 0x84 + bl sub_80D3E74 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D10EC: .4byte gUnknown_2039A2C +_080D10F0: .4byte 0xfffffe80 +_080D10F4: .4byte gUnknown_2038700 + thumb_func_end sub_80D1064 + + thumb_func_start sub_80D10F8 +sub_80D10F8: @ 80D10F8 + push {r4,lr} + sub sp, 0x8 + adds r3, r0, 0 + ldr r2, _080D1158 @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldrh r1, [r3, 0xE] + movs r4, 0xE + ldrsh r0, [r3, r4] + cmp r0, 0 + beq _080D111C + subs r0, r1, 0x1 + strh r0, [r3, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080D1126 +_080D111C: + ldrh r0, [r3, 0xA] + subs r0, 0x1 + strh r0, [r3, 0xA] + movs r0, 0x2 + strh r0, [r3, 0xE] +_080D1126: + ldr r2, [r2] + ldrh r0, [r3, 0xA] + lsls r0, 8 + ldrh r1, [r3, 0xC] + orrs r0, r1 + strh r0, [r2, 0x10] + movs r1, 0xA + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080D1140 + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_080D1140: + ldrh r1, [r3, 0x12] + movs r2, 0x12 + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080D1160 + ldrh r0, [r3, 0x10] + adds r0, 0xC + strh r0, [r3, 0x10] + ldr r4, _080D115C @ =0xfffffe80 + adds r0, r1, r4 + b _080D1162 + .align 2, 0 +_080D1158: .4byte gUnknown_2039A2C +_080D115C: .4byte 0xfffffe80 +_080D1160: + movs r0, 0 +_080D1162: + strh r0, [r3, 0x12] + ldr r0, _080D1194 @ =gUnknown_2038700 + movs r1, 0x10 + ldrsh r2, [r3, r1] + ldrh r1, [r3, 0x12] + lsls r1, 16 + asrs r1, 24 + str r1, [sp] + movs r1, 0xA0 + str r1, [sp, 0x4] + movs r1, 0 + movs r3, 0x84 + bl sub_80D3E74 + ldr r0, _080D1198 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D1194: .4byte gUnknown_2038700 +_080D1198: .4byte gUnknown_2039A2C + thumb_func_end sub_80D10F8 + + thumb_func_start sub_80D119C +sub_80D119C: @ 80D119C + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r0, _080D11C4 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrb r1, [r0] + movs r2, 0 + strb r2, [r0] + ldrh r1, [r4, 0x12] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r0, 0 + ble _080D11CC + ldrh r0, [r4, 0x10] + adds r0, 0xC + strh r0, [r4, 0x10] + ldr r2, _080D11C8 @ =0xfffffe80 + adds r0, r1, r2 + strh r0, [r4, 0x12] + b _080D11CE + .align 2, 0 +_080D11C4: .4byte gUnknown_2039A2C +_080D11C8: .4byte 0xfffffe80 +_080D11CC: + strh r2, [r4, 0x12] +_080D11CE: + ldr r0, _080D1218 @ =gUnknown_2038700 + movs r3, 0x10 + ldrsh r2, [r4, r3] + ldrh r1, [r4, 0x12] + lsls r1, 16 + asrs r1, 24 + str r1, [sp] + movs r5, 0xA0 + str r5, [sp, 0x4] + movs r1, 0 + movs r3, 0x84 + bl sub_80D3E74 + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bgt _080D1202 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x8] + strh r5, [r4, 0xA] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0xC] + strh r1, [r4, 0xE] +_080D1202: + ldr r0, _080D121C @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D1218: .4byte gUnknown_2038700 +_080D121C: .4byte gUnknown_2039A2C + thumb_func_end sub_80D119C + + thumb_func_start sub_80D1220 +sub_80D1220: @ 80D1220 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D12C4 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrb r1, [r0] + movs r3, 0 + strb r3, [r0] + ldrh r2, [r4, 0xC] + movs r0, 0xC + ldrsh r1, [r4, r0] + ldr r0, _080D12C8 @ =0x000007ff + cmp r1, r0 + bgt _080D1242 + movs r1, 0x80 + lsls r1, 1 + adds r0, r2, r1 + strh r0, [r4, 0xC] +_080D1242: + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080D125E + ldrh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 24 + subs r0, r1, r0 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bge _080D125E + strh r3, [r4, 0xA] +_080D125E: + ldr r0, _080D12CC @ =gUnknown_2038700 + movs r1, 0xA + ldrsh r3, [r4, r1] + movs r1, 0x78 + movs r2, 0x50 + bl sub_80D3EF0 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080D129A + ldr r1, _080D12D0 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D12D4 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D12D8 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3E60 + ldr r0, _080D12DC @ =sub_80D0EE4 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D129A: + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080D12AE + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + ldr r0, _080D12E0 @ =sub_80D139C + bl sub_80006F4 +_080D12AE: + ldr r0, _080D12C4 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D12C4: .4byte gUnknown_2039A2C +_080D12C8: .4byte 0x000007ff +_080D12CC: .4byte gUnknown_2038700 +_080D12D0: .4byte 0x040000b0 +_080D12D4: .4byte 0x0000c5ff +_080D12D8: .4byte 0x00007fff +_080D12DC: .4byte sub_80D0EE4 +_080D12E0: .4byte sub_80D139C + thumb_func_end sub_80D1220 + + thumb_func_start sub_80D12E4 +sub_80D12E4: @ 80D12E4 + push {r4,lr} + ldr r1, _080D1354 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D1358 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D135C @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3DF4 + ldr r4, _080D1360 @ =gUnknown_2039A2C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _080D131C + ldr r1, _080D1364 @ =0x040000d4 + ldr r0, _080D1368 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D136C @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D131C: + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0xE] + movs r0, 0x50 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x10] + movs r0, 0x52 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D1354: .4byte 0x040000b0 +_080D1358: .4byte 0x0000c5ff +_080D135C: .4byte 0x00007fff +_080D1360: .4byte gUnknown_2039A2C +_080D1364: .4byte 0x040000d4 +_080D1368: .4byte gUnknown_2038700 +_080D136C: .4byte 0x800000a0 + thumb_func_end sub_80D12E4 + + thumb_func_start sub_80D1370 +sub_80D1370: @ 80D1370 + push {lr} + bl sub_80D12E4 + ldr r1, _080D138C @ =0x040000b0 + ldr r0, _080D1390 @ =gUnknown_2038E80 + str r0, [r1] + ldr r0, _080D1394 @ =0x04000010 + str r0, [r1, 0x4] + ldr r0, _080D1398 @ =0xa2400001 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_080D138C: .4byte 0x040000b0 +_080D1390: .4byte gUnknown_2038E80 +_080D1394: .4byte 0x04000010 +_080D1398: .4byte 0xa2400001 + thumb_func_end sub_80D1370 + + thumb_func_start sub_80D139C +sub_80D139C: @ 80D139C + push {lr} + bl sub_80D12E4 + ldr r1, _080D13B8 @ =0x040000b0 + ldr r0, _080D13BC @ =gUnknown_2038E80 + str r0, [r1] + ldr r0, _080D13C0 @ =0x04000040 + str r0, [r1, 0x4] + ldr r0, _080D13C4 @ =0xa2400001 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_080D13B8: .4byte 0x040000b0 +_080D13BC: .4byte gUnknown_2038E80 +_080D13C0: .4byte 0x04000040 +_080D13C4: .4byte 0xa2400001 + thumb_func_end sub_80D139C + + thumb_func_start sub_80D13C8 +sub_80D13C8: @ 80D13C8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D13F8 @ =gUnknown_83FA3F4 + ldr r2, _080D13FC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D13DA: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D13DA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D13F8: .4byte gUnknown_83FA3F4 +_080D13FC: .4byte gUnknown_3005090 + thumb_func_end sub_80D13C8 + + thumb_func_start sub_80D1400 +sub_80D1400: @ 80D1400 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + add r0, sp, 0x4 + add r1, sp, 0x8 + bl sub_80D3E28 + ldr r0, _080D1440 @ =gUnknown_83F8D20 + ldr r1, [sp, 0x8] + movs r2, 0x20 + bl CpuSet + movs r0, 0 + str r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, _080D1444 @ =0x05000200 + mov r0, sp + bl CpuSet + ldr r0, _080D1448 @ =gUnknown_83FA638 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D1440: .4byte gUnknown_83F8D20 +_080D1444: .4byte 0x05000200 +_080D1448: .4byte gUnknown_83FA638 + thumb_func_end sub_80D1400 + + thumb_func_start sub_80D144C +sub_80D144C: @ 80D144C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r7, r0, 0 + ldr r1, _080D14CC @ =gUnknown_83FA400 + mov r0, sp + movs r2, 0x4 + bl memcpy + add r4, sp, 0x4 + ldr r1, _080D14D0 @ =gUnknown_83FA404 + adds r0, r4, 0 + movs r2, 0xA + bl memcpy + bl sub_8044EC8 + movs r5, 0x1 + ands r5, r0 + movs r1, 0 + mov r8, r4 + ldr r6, _080D14D4 @ =gUnknown_20386E0 +_080D147A: + lsls r5, 16 + asrs r5, 16 + lsls r0, r5, 1 + add r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + str r0, [r6] + lsls r4, r1, 16 + asrs r4, 16 + lsls r0, r4, 5 + adds r0, 0x10 + str r0, [r6, 0x4] + str r5, [r6, 0x8] + lsls r0, r4, 1 + add r0, r8 + movs r1, 0 + ldrsh r0, [r0, r1] + str r0, [r6, 0xC] + movs r0, 0x2D + bl sub_8083444 + adds r4, 0x1 + lsls r4, 16 + movs r0, 0x1 + eors r5, r0 + lsls r5, 16 + lsrs r5, 16 + lsrs r1, r4, 16 + asrs r4, 16 + cmp r4, 0x4 + ble _080D147A + ldrh r0, [r7, 0x8] + adds r0, 0x1 + strh r0, [r7, 0x8] + movs r0, 0 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D14CC: .4byte gUnknown_83FA400 +_080D14D0: .4byte gUnknown_83FA404 +_080D14D4: .4byte gUnknown_20386E0 + thumb_func_end sub_80D144C + + thumb_func_start sub_80D14D8 +sub_80D14D8: @ 80D14D8 + push {lr} + movs r0, 0x2D + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _080D14F8 + bl sub_80D3E60 + ldr r0, _080D1500 @ =sub_80D13C8 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D14F8: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D1500: .4byte sub_80D13C8 + thumb_func_end sub_80D14D8 + + thumb_func_start sub_80D1504 +sub_80D1504: @ 80D1504 + push {r4,r5,lr} + ldr r0, _080D1560 @ =gUnknown_83FA5CC + ldr r5, _080D1564 @ =gUnknown_20386E0 + movs r2, 0 + ldrsh r1, [r5, r2] + movs r3, 0x4 + ldrsh r2, [r5, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080D1568 @ =gUnknown_202063C + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r1 + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x5] + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r0, [r5, 0x8] + strh r0, [r4, 0x2E] + ldr r0, [r5, 0xC] + strh r0, [r4, 0x30] + ldr r0, _080D156C @ =0x0000ffff + strh r0, [r4, 0x32] + adds r0, r4, 0 + bl sub_800860C + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + bl sub_800843C + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D1560: .4byte gUnknown_83FA5CC +_080D1564: .4byte gUnknown_20386E0 +_080D1568: .4byte gUnknown_202063C +_080D156C: .4byte 0x0000ffff + thumb_func_end sub_80D1504 + + thumb_func_start sub_80D1570 +sub_80D1570: @ 80D1570 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r1, _080D1590 @ =gUnknown_83FA40E + mov r0, sp + movs r2, 0x4 + bl memcpy + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080D1594 + subs r0, r1, 0x1 + strh r0, [r4, 0x30] + b _080D162A + .align 2, 0 +_080D1590: .4byte gUnknown_83FA40E +_080D1594: + ldrh r0, [r4, 0x20] + lsls r1, r0, 16 + lsrs r0, r1, 16 + cmp r0, 0xF0 + bhi _080D1606 + asrs r0, r1, 19 + lsls r0, 16 + ldrh r1, [r4, 0x22] + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r6, r1, 16 + lsrs r1, r0, 16 + asrs r5, r0, 16 + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r5, r0 + beq _080D1606 + strh r1, [r4, 0x32] + movs r0, 0x8 + bl sub_8000AC4 + lsls r0, 16 + lsrs r0, 24 + movs r1, 0x1F + ands r0, r1 + lsls r0, 11 + movs r1, 0xC0 + lsls r1, 19 + adds r0, r1 + lsls r2, r6, 16 + asrs r2, 16 + subs r1, r2, 0x2 + lsls r1, 5 + adds r1, r5 + lsls r1, 1 + adds r1, r0 + ldr r6, _080D1634 @ =0x0000f001 + adds r3, r6, 0 + strh r3, [r1] + subs r1, r2, 0x1 + lsls r1, 5 + adds r1, r5 + lsls r1, 1 + adds r1, r0 + strh r3, [r1] + lsls r1, r2, 5 + adds r1, r5 + lsls r1, 1 + adds r1, r0 + strh r3, [r1] + adds r2, 0x1 + lsls r2, 5 + adds r2, r5 + lsls r2, 1 + adds r2, r0 + strh r3, [r2] +_080D1606: + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, 0xF + lsls r0, 16 + movs r1, 0x87 + lsls r1, 17 + cmp r0, r1 + bls _080D162A + adds r0, r4, 0 + movs r1, 0x2D + bl sub_80836D8 +_080D162A: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D1634: .4byte 0x0000f001 + thumb_func_end sub_80D1570 + + thumb_func_start sub_80D1638 +sub_80D1638: @ 80D1638 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D1668 @ =gUnknown_83FA414 + ldr r2, _080D166C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D164A: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D164A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1668: .4byte gUnknown_83FA414 +_080D166C: .4byte gUnknown_3005090 + thumb_func_end sub_80D1638 + + thumb_func_start sub_80D1670 +sub_80D1670: @ 80D1670 + push {r4,lr} + adds r4, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + ldr r0, _080D16C4 @ =gUnknown_2039A2C + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x2] + movs r0, 0x3F + strh r0, [r1, 0x4] + ldr r0, _080D16C8 @ =0x0000f0f1 + strh r0, [r1, 0x6] + movs r0, 0xA0 + strh r0, [r1, 0x8] + movs r1, 0 + ldr r3, _080D16CC @ =gUnknown_2038E80 + ldr r2, _080D16D0 @ =0x0000f3f4 +_080D1696: + lsls r0, r1, 1 + adds r0, r3 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x9F + bls _080D1696 + ldr r0, _080D16D4 @ =sub_80D1ABC + bl sub_80006F4 + ldr r0, _080D16C4 @ =gUnknown_2039A2C + ldr r1, [r0] + movs r0, 0x78 + strh r0, [r1, 0x2C] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D16C4: .4byte gUnknown_2039A2C +_080D16C8: .4byte 0x0000f0f1 +_080D16CC: .4byte gUnknown_2038E80 +_080D16D0: .4byte 0x0000f3f4 +_080D16D4: .4byte sub_80D1ABC + thumb_func_end sub_80D1670 + + thumb_func_start sub_80D16D8 +sub_80D16D8: @ 80D16D8 + push {r4-r7,lr} + sub sp, 0xC + adds r6, r0, 0 + ldr r2, _080D1760 @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0x24 + movs r2, 0x2C + ldrsh r3, [r1, r2] + movs r1, 0x1 + negs r1, r1 + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x78 + movs r2, 0x50 + bl sub_80D4088 + ldr r5, _080D1764 @ =gUnknown_2038700 +_080D1708: + ldr r4, _080D1760 @ =gUnknown_2039A2C + ldr r0, [r4] + movs r7, 0x2A + ldrsh r3, [r0, r7] + lsls r3, 1 + adds r3, r5 + ldrh r1, [r0, 0x28] + adds r1, 0x1 + movs r7, 0xF0 + lsls r7, 7 + adds r2, r7, 0 + orrs r1, r2 + strh r1, [r3] + adds r0, 0x24 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80D4104 + lsls r0, 24 + cmp r0, 0 + beq _080D1708 + ldr r1, [r4] + ldrh r0, [r1, 0x2C] + adds r0, 0x20 + strh r0, [r1, 0x2C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xEF + ble _080D174C + movs r0, 0 + strh r0, [r1, 0x2E] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_080D174C: + ldr r0, [r4] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + add sp, 0xC + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1760: .4byte gUnknown_2039A2C +_080D1764: .4byte gUnknown_2038700 + thumb_func_end sub_80D16D8 + + thumb_func_start sub_80D1768 +sub_80D1768: @ 80D1768 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + mov r8, r0 + add r1, sp, 0xC + movs r0, 0 + strb r0, [r1] + ldr r4, _080D17EC @ =gUnknown_2039A2C + ldr r1, [r4] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x24 + movs r2, 0x2E + ldrsh r1, [r1, r2] + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0xF0 + bl sub_80D4088 + mov r9, r4 + mov r7, r9 + add r5, sp, 0xC +_080D17A6: + movs r1, 0x78 + ldr r3, [r7] + ldrh r0, [r3, 0x28] + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + movs r2, 0x2E + ldrsh r0, [r3, r2] + cmp r0, 0x4F + ble _080D17BE + ldrh r1, [r3, 0x28] + movs r4, 0xF0 +_080D17BE: + ldr r6, _080D17F0 @ =gUnknown_2038700 + movs r0, 0x2A + ldrsh r2, [r3, r0] + lsls r2, 1 + adds r2, r6 + lsls r1, 16 + asrs r1, 8 + lsls r0, r4, 16 + asrs r4, r0, 16 + orrs r4, r1 + strh r4, [r2] + ldrb r0, [r5] + cmp r0, 0 + bne _080D17F4 + adds r0, r3, 0 + adds r0, 0x24 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80D4104 + strb r0, [r5] + b _080D17A6 + .align 2, 0 +_080D17EC: .4byte gUnknown_2039A2C +_080D17F0: .4byte gUnknown_2038700 +_080D17F4: + ldr r1, [r7] + ldrh r0, [r1, 0x2E] + adds r0, 0x10 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0x9F + ble _080D1812 + movs r0, 0xF0 + strh r0, [r1, 0x2C] + mov r1, r8 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080D183A +_080D1812: + movs r3, 0x2A + ldrsh r0, [r1, r3] + cmp r0, r2 + bge _080D183A + adds r3, r4, 0 + ldr r5, _080D1858 @ =gUnknown_2039A2C +_080D181E: + ldr r2, [r5] + ldrh r0, [r2, 0x2A] + adds r0, 0x1 + strh r0, [r2, 0x2A] + lsls r0, 16 + asrs r0, 15 + adds r0, r6 + strh r3, [r0] + movs r4, 0x2A + ldrsh r1, [r2, r4] + movs r4, 0x2E + ldrsh r0, [r2, r4] + cmp r1, r0 + blt _080D181E +_080D183A: + mov r1, r9 + ldr r0, [r1] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1858: .4byte gUnknown_2039A2C + thumb_func_end sub_80D1768 + + thumb_func_start sub_80D185C +sub_80D185C: @ 80D185C + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + ldr r2, _080D18DC @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0x24 + movs r2, 0x2C + ldrsh r3, [r1, r2] + movs r1, 0xA0 + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x78 + movs r2, 0x50 + bl sub_80D4088 + ldr r5, _080D18E0 @ =gUnknown_2038700 +_080D188A: + ldr r4, _080D18DC @ =gUnknown_2039A2C + ldr r0, [r4] + movs r1, 0x2A + ldrsh r3, [r0, r1] + lsls r3, 1 + adds r3, r5 + ldrh r1, [r0, 0x28] + lsls r1, 8 + movs r2, 0xF0 + orrs r1, r2 + strh r1, [r3] + adds r0, 0x24 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80D4104 + lsls r0, 24 + cmp r0, 0 + beq _080D188A + ldr r1, [r4] + ldrh r0, [r1, 0x2C] + subs r0, 0x20 + strh r0, [r1, 0x2C] + lsls r0, 16 + cmp r0, 0 + bgt _080D18C8 + movs r0, 0xA0 + strh r0, [r1, 0x2E] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_080D18C8: + ldr r0, [r4] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D18DC: .4byte gUnknown_2039A2C +_080D18E0: .4byte gUnknown_2038700 + thumb_func_end sub_80D185C + + thumb_func_start sub_80D18E4 +sub_80D18E4: @ 80D18E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + mov r9, r0 + add r1, sp, 0xC + movs r0, 0 + strb r0, [r1] + ldr r4, _080D196C @ =gUnknown_2039A2C + ldr r1, [r4] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x24 + movs r2, 0x2E + ldrsh r1, [r1, r2] + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0 + bl sub_80D4088 + ldr r7, _080D1970 @ =gUnknown_2038700 + mov r10, r7 + ldr r0, _080D196C @ =gUnknown_2039A2C + mov r8, r0 + add r6, sp, 0xC +_080D1928: + mov r1, r8 + ldr r4, [r1] + movs r2, 0x2A + ldrsh r0, [r4, r2] + lsls r0, 1 + mov r7, r10 + adds r5, r0, r7 + ldrb r1, [r5] + ldrh r2, [r4, 0x28] + adds r3, r2, 0 + movs r7, 0x2E + ldrsh r0, [r4, r7] + cmp r0, 0x50 + bgt _080D1948 + movs r2, 0x78 + adds r1, r3, 0 +_080D1948: + lsls r0, r2, 16 + asrs r0, 8 + lsls r1, 16 + asrs r1, 16 + orrs r1, r0 + movs r7, 0 + strh r1, [r5] + ldrb r0, [r6] + cmp r0, 0 + bne _080D1974 + adds r0, r4, 0 + adds r0, 0x24 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80D4104 + strb r0, [r6] + b _080D1928 + .align 2, 0 +_080D196C: .4byte gUnknown_2039A2C +_080D1970: .4byte gUnknown_2038700 +_080D1974: + mov r0, r8 + ldr r2, [r0] + ldrh r0, [r2, 0x2E] + subs r0, 0x10 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + bgt _080D1992 + strh r7, [r2, 0x2C] + mov r1, r9 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080D19BC +_080D1992: + movs r4, 0x2A + ldrsh r0, [r2, r4] + cmp r0, r3 + ble _080D19BC + ldr r6, _080D19DC @ =gUnknown_2038700 + adds r3, r1, 0 + ldr r5, _080D19E0 @ =gUnknown_2039A2C +_080D19A0: + ldr r2, [r5] + ldrh r0, [r2, 0x2A] + subs r0, 0x1 + strh r0, [r2, 0x2A] + lsls r0, 16 + asrs r0, 15 + adds r0, r6 + strh r3, [r0] + movs r7, 0x2A + ldrsh r1, [r2, r7] + movs r4, 0x2E + ldrsh r0, [r2, r4] + cmp r1, r0 + bgt _080D19A0 +_080D19BC: + ldr r7, _080D19E0 @ =gUnknown_2039A2C + ldr r0, [r7] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D19DC: .4byte gUnknown_2038700 +_080D19E0: .4byte gUnknown_2039A2C + thumb_func_end sub_80D18E4 + + thumb_func_start sub_80D19E4 +sub_80D19E4: @ 80D19E4 + push {r4-r7,lr} + sub sp, 0xC + adds r7, r0, 0 + ldr r1, _080D1A74 @ =gUnknown_2039A2C + ldr r0, [r1] + ldrb r2, [r0] + movs r2, 0 + strb r2, [r0] + ldr r1, [r1] + adds r0, r1, 0 + adds r0, 0x24 + movs r4, 0x2C + ldrsh r3, [r1, r4] + str r2, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x78 + movs r2, 0x50 + bl sub_80D4088 + ldr r6, _080D1A78 @ =gUnknown_2038700 +_080D1A10: + movs r2, 0x78 + ldr r5, _080D1A74 @ =gUnknown_2039A2C + ldr r3, [r5] + ldrh r4, [r3, 0x28] + movs r1, 0x28 + ldrsh r0, [r3, r1] + cmp r0, 0x77 + ble _080D1A24 + movs r2, 0 + movs r4, 0xF0 +_080D1A24: + movs r0, 0x2A + ldrsh r1, [r3, r0] + lsls r1, 1 + adds r1, r6 + lsls r2, 8 + lsls r0, r4, 16 + asrs r0, 16 + orrs r0, r2 + strh r0, [r1] + adds r0, r3, 0 + adds r0, 0x24 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80D4104 + lsls r0, 24 + cmp r0, 0 + beq _080D1A10 + ldr r0, [r5] + ldrh r1, [r0, 0x2C] + adds r1, 0x20 + strh r1, [r0, 0x2C] + movs r1, 0x28 + ldrsh r0, [r0, r1] + cmp r0, 0x78 + ble _080D1A5E + ldrh r0, [r7, 0x8] + adds r0, 0x1 + strh r0, [r7, 0x8] +_080D1A5E: + ldr r0, [r5] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + add sp, 0xC + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1A74: .4byte gUnknown_2039A2C +_080D1A78: .4byte gUnknown_2038700 + thumb_func_end sub_80D19E4 + + thumb_func_start sub_80D1A7C +sub_80D1A7C: @ 80D1A7C + push {lr} + ldr r1, _080D1AAC @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D1AB0 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D1AB4 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3E60 + ldr r0, _080D1AB8 @ =sub_80D1638 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D1AAC: .4byte 0x040000b0 +_080D1AB0: .4byte 0x0000c5ff +_080D1AB4: .4byte 0x00007fff +_080D1AB8: .4byte sub_80D1638 + thumb_func_end sub_80D1A7C + + thumb_func_start sub_80D1ABC +sub_80D1ABC: @ 80D1ABC + push {r4,r5,lr} + ldr r5, _080D1B34 @ =0x040000b0 + ldrh r1, [r5, 0xA] + ldr r0, _080D1B38 @ =0x0000c5ff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r1, [r5, 0xA] + ldr r0, _080D1B3C @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0xA] + bl sub_80D3DF4 + ldr r4, _080D1B40 @ =gUnknown_2039A2C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _080D1AF4 + ldr r1, _080D1B44 @ =0x040000d4 + ldr r0, _080D1B48 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D1B4C @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D1AF4: + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r4, _080D1B48 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r4, r0 + ldrh r1, [r4] + movs r0, 0x40 + bl sub_8000A38 + str r4, [r5] + ldr r0, _080D1B50 @ =0x04000040 + str r0, [r5, 0x4] + ldr r0, _080D1B54 @ =0xa2400001 + str r0, [r5, 0x8] + ldr r0, [r5, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1B34: .4byte 0x040000b0 +_080D1B38: .4byte 0x0000c5ff +_080D1B3C: .4byte 0x00007fff +_080D1B40: .4byte gUnknown_2039A2C +_080D1B44: .4byte 0x040000d4 +_080D1B48: .4byte gUnknown_2038700 +_080D1B4C: .4byte 0x800000a0 +_080D1B50: .4byte 0x04000040 +_080D1B54: .4byte 0xa2400001 + thumb_func_end sub_80D1ABC + + thumb_func_start sub_80D1B58 +sub_80D1B58: @ 80D1B58 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D1B88 @ =gUnknown_83FA430 + ldr r2, _080D1B8C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D1B6A: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D1B6A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1B88: .4byte gUnknown_83FA430 +_080D1B8C: .4byte gUnknown_3005090 + thumb_func_end sub_80D1B58 + + thumb_func_start sub_80D1B90 +sub_80D1B90: @ 80D1B90 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + movs r2, 0 + ldr r4, _080D1BD8 @ =gUnknown_2038E80 + ldr r3, _080D1BDC @ =gUnknown_2039A2C +_080D1BA2: + lsls r1, r2, 1 + adds r1, r4 + ldr r0, [r3] + ldrh r0, [r0, 0x16] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x9F + bls _080D1BA2 + ldr r0, _080D1BE0 @ =sub_80D1CC8 + bl sub_80006F4 + ldr r0, _080D1BE4 @ =sub_80D1D00 + bl sub_8000700 + movs r0, 0x2 + bl sub_8000B68 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D1BD8: .4byte gUnknown_2038E80 +_080D1BDC: .4byte gUnknown_2039A2C +_080D1BE0: .4byte sub_80D1CC8 +_080D1BE4: .4byte sub_80D1D00 + thumb_func_end sub_80D1B90 + + thumb_func_start sub_80D1BE8 +sub_80D1BE8: @ 80D1BE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r6, r0, 0 + ldr r0, _080D1CB4 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldrh r2, [r6, 0xC] + lsls r1, r2, 16 + asrs r0, r1, 24 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r4, [r6, 0xA] + movs r0, 0xC0 + lsls r0, 1 + mov r8, r0 + movs r5, 0x80 + lsls r5, 3 + adds r0, r4, r5 + strh r0, [r6, 0xA] + ldr r0, _080D1CB8 @ =0x1fff0000 + cmp r1, r0 + bgt _080D1C24 + movs r1, 0xC0 + lsls r1, 1 + adds r0, r2, r1 + strh r0, [r6, 0xC] +_080D1C24: + movs r5, 0 + lsls r7, r3, 16 +_080D1C28: + lsrs r0, r4, 8 + asrs r1, r7, 16 + bl sub_8044E30 + ldr r1, _080D1CBC @ =gUnknown_2038700 + lsls r2, r5, 1 + adds r2, r1 + ldr r1, _080D1CB4 @ =gUnknown_2039A2C + ldr r1, [r1] + ldrh r1, [r1, 0x16] + adds r0, r1 + strh r0, [r2] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r1, r8 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r5, 0x9F + bls _080D1C28 + ldrh r0, [r6, 0xE] + adds r0, 0x1 + strh r0, [r6, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x29 + bne _080D1C78 + ldrh r0, [r6, 0x10] + adds r0, 0x1 + strh r0, [r6, 0x10] + movs r0, 0x1 + negs r0, r0 + movs r1, 0x8 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 +_080D1C78: + movs r5, 0x10 + ldrsh r0, [r6, r5] + cmp r0, 0 + beq _080D1C9A + ldr r0, _080D1CC0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080D1C9A + ldr r0, _080D1CC4 @ =sub_80D1B58 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D1C9A: + ldr r0, _080D1CB4 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1CB4: .4byte gUnknown_2039A2C +_080D1CB8: .4byte 0x1fff0000 +_080D1CBC: .4byte gUnknown_2038700 +_080D1CC0: .4byte gUnknown_2037AB8 +_080D1CC4: .4byte sub_80D1B58 + thumb_func_end sub_80D1BE8 + + thumb_func_start sub_80D1CC8 +sub_80D1CC8: @ 80D1CC8 + push {lr} + bl sub_80D3DF4 + ldr r0, _080D1CF0 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + beq _080D1CEC + ldr r1, _080D1CF4 @ =0x040000d4 + ldr r0, _080D1CF8 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D1CFC @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D1CEC: + pop {r0} + bx r0 + .align 2, 0 +_080D1CF0: .4byte gUnknown_2039A2C +_080D1CF4: .4byte 0x040000d4 +_080D1CF8: .4byte gUnknown_2038700 +_080D1CFC: .4byte 0x800000a0 + thumb_func_end sub_80D1CC8 + + thumb_func_start sub_80D1D00 +sub_80D1D00: @ 80D1D00 + ldr r1, _080D1D20 @ =gUnknown_2038700 + ldr r0, _080D1D24 @ =0x04000006 + ldrh r0, [r0] + lsls r0, 1 + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080D1D28 @ =0x04000016 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + bx lr + .align 2, 0 +_080D1D20: .4byte gUnknown_2038700 +_080D1D24: .4byte 0x04000006 +_080D1D28: .4byte 0x04000016 + thumb_func_end sub_80D1D00 + + thumb_func_start sub_80D1D2C +sub_80D1D2C: @ 80D1D2C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D1D5C @ =gUnknown_83FA438 + ldr r2, _080D1D60 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D1D3E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D1D3E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1D5C: .4byte gUnknown_83FA438 +_080D1D60: .4byte gUnknown_3005090 + thumb_func_end sub_80D1D2C + + thumb_func_start sub_80D1D64 +sub_80D1D64: @ 80D1D64 + push {r4,lr} + adds r4, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + ldr r0, _080D1DB0 @ =gUnknown_2039A2C + ldr r1, [r0] + movs r2, 0 + movs r0, 0x3F + strh r0, [r1, 0x2] + strh r2, [r1, 0x4] + movs r0, 0xF0 + strh r0, [r1, 0x6] + movs r0, 0xA0 + strh r0, [r1, 0x8] + movs r1, 0 + ldr r3, _080D1DB4 @ =gUnknown_2038E80 + movs r2, 0xF2 +_080D1D8A: + lsls r0, r1, 1 + adds r0, r3 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x9F + bls _080D1D8A + ldr r0, _080D1DB8 @ =sub_80D1E98 + bl sub_80006F4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D1DB0: .4byte gUnknown_2039A2C +_080D1DB4: .4byte gUnknown_2038E80 +_080D1DB8: .4byte sub_80D1E98 + thumb_func_end sub_80D1D64 + + thumb_func_start sub_80D1DBC +sub_80D1DBC: @ 80D1DBC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + ldr r0, _080D1E50 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r7, _080D1E54 @ =gUnknown_2038700 + ldrh r0, [r4, 0xC] + ldrb r5, [r4, 0xC] + adds r0, 0x10 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0xA] + adds r0, 0x8 + strh r0, [r4, 0xA] + movs r6, 0 + movs r0, 0x1 + mov r8, r0 +_080D1DE4: + adds r0, r5, 0 + movs r1, 0x28 + bl sub_8044E30 + ldrh r1, [r4, 0xA] + adds r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r0, 0 + bge _080D1DFA + movs r1, 0 +_080D1DFA: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xF0 + ble _080D1E04 + movs r1, 0xF0 +_080D1E04: + lsls r0, r1, 16 + asrs r0, 16 + lsls r1, r0, 8 + movs r2, 0xF1 + orrs r1, r2 + strh r1, [r7] + cmp r0, 0xEF + bgt _080D1E18 + movs r0, 0 + mov r8, r0 +_080D1E18: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, 0x2 + cmp r6, 0x9F + bls _080D1DE4 + mov r1, r8 + cmp r1, 0 + beq _080D1E36 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D1E36: + ldr r0, _080D1E50 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1E50: .4byte gUnknown_2039A2C +_080D1E54: .4byte gUnknown_2038700 + thumb_func_end sub_80D1DBC + + thumb_func_start sub_80D1E58 +sub_80D1E58: @ 80D1E58 + push {lr} + ldr r1, _080D1E88 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D1E8C @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D1E90 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3E60 + ldr r0, _080D1E94 @ =sub_80D1D2C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D1E88: .4byte 0x040000b0 +_080D1E8C: .4byte 0x0000c5ff +_080D1E90: .4byte 0x00007fff +_080D1E94: .4byte sub_80D1D2C + thumb_func_end sub_80D1E58 + + thumb_func_start sub_80D1E98 +sub_80D1E98: @ 80D1E98 + push {r4,r5,lr} + ldr r4, _080D1F04 @ =0x040000b0 + ldrh r1, [r4, 0xA] + ldr r0, _080D1F08 @ =0x0000c5ff + ands r0, r1 + strh r0, [r4, 0xA] + ldrh r1, [r4, 0xA] + ldr r0, _080D1F0C @ =0x00007fff + ands r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xA] + bl sub_80D3DF4 + ldr r5, _080D1F10 @ =gUnknown_2039A2C + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, 0 + beq _080D1ED0 + ldr r1, _080D1F14 @ =0x040000d4 + ldr r0, _080D1F18 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D1F1C @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D1ED0: + ldr r0, [r5] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r5] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r5] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, _080D1F20 @ =gUnknown_2038E80 + str r0, [r4] + ldr r0, _080D1F24 @ =0x04000040 + str r0, [r4, 0x4] + ldr r0, _080D1F28 @ =0xa2400001 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1F04: .4byte 0x040000b0 +_080D1F08: .4byte 0x0000c5ff +_080D1F0C: .4byte 0x00007fff +_080D1F10: .4byte gUnknown_2039A2C +_080D1F14: .4byte 0x040000d4 +_080D1F18: .4byte gUnknown_2038700 +_080D1F1C: .4byte 0x800000a0 +_080D1F20: .4byte gUnknown_2038E80 +_080D1F24: .4byte 0x04000040 +_080D1F28: .4byte 0xa2400001 + thumb_func_end sub_80D1E98 + + thumb_func_start sub_80D1F2C +sub_80D1F2C: @ 80D1F2C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D1F5C @ =gUnknown_83FA464 + ldr r2, _080D1F60 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D1F3E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D1F3E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1F5C: .4byte gUnknown_83FA464 +_080D1F60: .4byte gUnknown_3005090 + thumb_func_end sub_80D1F2C + + thumb_func_start sub_80D1F64 +sub_80D1F64: @ 80D1F64 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x4] + movs r0, 0 + mov r10, r0 + movs r1, 0xA0 + lsls r1, 17 + ldr r4, _080D1FD8 @ =gUnknown_2038E80 + ldr r3, _080D1FDC @ =0x000003bf + movs r2, 0x78 +_080D1F8E: + asrs r0, r1, 16 + lsls r1, r0, 1 + adds r1, r4 + strh r2, [r1] + adds r0, 0x1 + lsls r1, r0, 16 + asrs r0, r1, 16 + cmp r0, r3 + ble _080D1F8E + lsls r0, r5, 16 + movs r1, 0 + mov r9, r1 + str r0, [sp, 0xC] + cmp r0, 0 + bgt _080D1FAE + b _080D221A +_080D1FAE: + mov r3, r10 + lsrs r2, r3, 3 + ldr r4, [sp] + adds r0, r2, r4 + lsls r0, 16 + lsrs r3, r0, 16 + mov r0, r10 + adds r0, 0x1 + asrs r1, r0, 3 + str r0, [sp, 0x8] + cmp r2, r1 + beq _080D1FE0 + lsls r1, r3, 16 + movs r6, 0x80 + lsls r6, 9 + adds r0, r1, r6 + lsrs r0, 16 + mov r8, r0 + adds r0, r1, 0 + b _080D1FE6 + .align 2, 0 +_080D1FD8: .4byte gUnknown_2038E80 +_080D1FDC: .4byte 0x000003bf +_080D1FE0: + lsls r0, r3, 16 + lsrs r1, r0, 16 + mov r8, r1 +_080D1FE6: + asrs r4, r0, 16 + mov r0, r10 + adds r1, r4, 0 + bl sub_8044E30 + movs r5, 0x50 + subs r0, r5, r0 + lsls r0, 16 + lsrs r2, r0, 16 + mov r0, r10 + adds r1, r4, 0 + str r2, [sp, 0x10] + bl sub_8044E4C + adds r0, 0x78 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r6, [sp, 0x8] + mov r3, r8 + lsls r4, r3, 16 + asrs r4, 16 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8044E30 + subs r5, r0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8044E4C + adds r0, 0x78 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r2, [sp, 0x10] + lsls r0, r2, 16 + asrs r1, r0, 16 + cmp r1, 0 + bge _080D203E + lsls r0, r5, 16 + cmp r0, 0 + bge _080D203E + b _080D21F8 +_080D203E: + cmp r1, 0x9F + ble _080D204C + lsls r0, r5, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080D204C + b _080D21F8 +_080D204C: + cmp r1, 0 + bge _080D2052 + movs r2, 0 +_080D2052: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080D205C + movs r2, 0x9F +_080D205C: + lsls r0, r7, 16 + cmp r0, 0 + bge _080D2064 + movs r7, 0 +_080D2064: + lsls r0, r7, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080D206E + movs r7, 0xFF +_080D206E: + lsls r0, r5, 16 + cmp r0, 0 + bge _080D2076 + movs r5, 0 +_080D2076: + lsls r0, r5, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080D2080 + movs r5, 0x9F +_080D2080: + lsls r0, r3, 16 + cmp r0, 0 + bge _080D2088 + movs r3, 0 +_080D2088: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080D2092 + movs r3, 0xFF +_080D2092: + lsls r0, r5, 16 + asrs r0, 16 + lsls r1, r2, 16 + asrs r2, r1, 16 + subs r0, r2 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, r10 + subs r0, 0x40 + lsls r0, 24 + adds r6, r1, 0 + cmp r0, 0 + blt _080D2158 + movs r4, 0xA0 + lsls r4, 1 + adds r0, r2, r4 + lsls r0, 1 + ldr r1, _080D20E8 @ =gUnknown_2038E80 + adds r0, r1 + strh r7, [r0] + lsls r0, r5, 16 + adds r4, r0, 0 + cmp r4, 0 + bne _080D20C4 + b _080D21F8 +_080D20C4: + lsls r0, r3, 16 + asrs r0, 16 + lsls r1, r7, 16 + asrs r2, r1, 16 + subs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + asrs r0, 16 + mov r8, r0 + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + bge _080D20EC + cmp r2, 0x1 + ble _080D20EC + subs r0, r2, 0x1 + b _080D20FC + .align 2, 0 +_080D20E8: .4byte gUnknown_2038E80 +_080D20EC: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D2100 + asrs r0, r1, 16 + cmp r0, 0xFE + bgt _080D2100 + adds r0, 0x1 +_080D20FC: + lsls r0, 16 + lsrs r7, r0, 16 +_080D2100: + adds r0, r4, 0 + asrs r1, r0, 16 + cmp r1, 0 + bge _080D212C + asrs r2, r6, 16 + ldr r3, _080D2128 @ =gUnknown_2038E80 +_080D210C: + asrs r1, r0, 16 + adds r0, r2, r1 + movs r4, 0xA0 + lsls r4, 1 + adds r0, r4 + lsls r0, 1 + adds r0, r3 + strh r7, [r0] + adds r1, 0x1 + lsls r0, r1, 16 + cmp r0, 0 + blt _080D210C + b _080D21F8 + .align 2, 0 +_080D2128: .4byte gUnknown_2038E80 +_080D212C: + cmp r1, 0 + ble _080D21F8 + asrs r2, r6, 16 + ldr r3, _080D2154 @ =gUnknown_2038E80 +_080D2134: + lsls r1, r5, 16 + asrs r1, 16 + adds r0, r2, r1 + movs r6, 0xA0 + lsls r6, 1 + adds r0, r6 + lsls r0, 1 + adds r0, r3 + strh r7, [r0] + subs r1, 0x1 + lsls r1, 16 + lsrs r5, r1, 16 + cmp r1, 0 + bgt _080D2134 + b _080D21F8 + .align 2, 0 +_080D2154: .4byte gUnknown_2038E80 +_080D2158: + movs r1, 0xF0 + lsls r1, 1 + adds r0, r2, r1 + lsls r0, 1 + ldr r2, _080D2190 @ =gUnknown_2038E80 + adds r0, r2 + strh r7, [r0] + lsls r0, r5, 16 + adds r4, r0, 0 + cmp r4, 0 + beq _080D21F8 + lsls r0, r3, 16 + asrs r0, 16 + lsls r1, r7, 16 + asrs r2, r1, 16 + subs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + asrs r0, 16 + mov r8, r0 + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + bge _080D2194 + cmp r2, 0x1 + ble _080D2194 + subs r0, r2, 0x1 + b _080D21A4 + .align 2, 0 +_080D2190: .4byte gUnknown_2038E80 +_080D2194: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D21A8 + asrs r0, r1, 16 + cmp r0, 0xFE + bgt _080D21A8 + adds r0, 0x1 +_080D21A4: + lsls r0, 16 + lsrs r7, r0, 16 +_080D21A8: + adds r0, r4, 0 + asrs r1, r0, 16 + cmp r1, 0 + bge _080D21D4 + asrs r2, r6, 16 + ldr r3, _080D21D0 @ =gUnknown_2038E80 +_080D21B4: + asrs r1, r0, 16 + adds r0, r2, r1 + movs r4, 0xF0 + lsls r4, 1 + adds r0, r4 + lsls r0, 1 + adds r0, r3 + strh r7, [r0] + adds r1, 0x1 + lsls r0, r1, 16 + cmp r0, 0 + blt _080D21B4 + b _080D21F8 + .align 2, 0 +_080D21D0: .4byte gUnknown_2038E80 +_080D21D4: + cmp r1, 0 + ble _080D21F8 + asrs r2, r6, 16 + ldr r3, _080D2270 @ =gUnknown_2038E80 +_080D21DC: + lsls r1, r5, 16 + asrs r1, 16 + adds r0, r2, r1 + movs r6, 0xF0 + lsls r6, 1 + adds r0, r6 + lsls r0, 1 + adds r0, r3 + strh r7, [r0] + subs r1, 0x1 + lsls r1, 16 + lsrs r5, r1, 16 + cmp r1, 0 + bgt _080D21DC +_080D21F8: + mov r1, r9 + lsls r0, r1, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + ldr r3, [sp, 0x8] + lsls r1, r3, 24 + lsrs r1, 24 + mov r10, r1 + lsrs r4, r0, 16 + mov r9, r4 + asrs r0, 16 + ldr r6, [sp, 0xC] + asrs r1, r6, 12 + cmp r0, r1 + bge _080D221A + b _080D1FAE +_080D221A: + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _080D222C + movs r0, 0xC0 + lsls r0, 10 + ldr r1, [sp, 0xC] + ands r0, r1 + cmp r0, 0 + bne _080D2274 +_080D222C: + movs r2, 0 + mov r9, r2 + ldr r4, _080D2270 @ =gUnknown_2038E80 + movs r5, 0xA0 + lsls r5, 1 +_080D2236: + mov r3, r9 + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldr r6, [sp, 0x4] + adds r3, r6 + lsls r3, 1 + adds r3, r4 + adds r0, r1, r5 + lsls r0, 1 + adds r0, r4 + ldrh r2, [r0] + lsls r2, 8 + movs r6, 0xF0 + lsls r6, 1 + adds r0, r1, r6 + lsls r0, 1 + adds r0, r4 + ldrh r0, [r0] + orrs r2, r0 + strh r2, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r0, r1, 16 + mov r9, r0 + asrs r1, 16 + cmp r1, 0x9F + ble _080D2236 + b _080D251C + .align 2, 0 +_080D2270: .4byte gUnknown_2038E80 +_080D2274: + ldr r1, [sp, 0xC] + asrs r4, r1, 16 + lsls r0, r4, 20 + asrs r0, 16 + lsls r5, r4, 1 + ldr r2, [sp] + lsls r1, r2, 16 + asrs r1, 16 + adds r1, r5 + lsls r1, 16 + asrs r1, 16 + bl sub_8044E30 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r4, 0 + bge _080D2298 + adds r4, 0x3 +_080D2298: + asrs r0, r4, 2 + cmp r0, 0x1 + beq _080D234C + cmp r0, 0x1 + bgt _080D22A8 + cmp r0, 0 + beq _080D22B6 + b _080D24DA +_080D22A8: + cmp r0, 0x2 + bne _080D22AE + b _080D23CC +_080D22AE: + cmp r0, 0x3 + bne _080D22B4 + b _080D2466 +_080D22B4: + b _080D24DA +_080D22B6: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x50 + ble _080D22C0 + movs r2, 0x50 +_080D22C0: + mov r9, r2 + lsls r1, r2, 16 + cmp r1, 0 + bgt _080D22CA + b _080D24DA +_080D22CA: + ldr r0, _080D2320 @ =gUnknown_83FA444 + adds r0, r5, r0 + movs r3, 0 + ldrsh r4, [r0, r3] + ldr r6, _080D2324 @ =gUnknown_2038E80 +_080D22D4: + ldr r0, _080D2328 @ =gUnknown_2039A2C + ldr r5, [r0] + asrs r2, r1, 16 + adds r0, r2, 0 + muls r0, r4 + asrs r0, 8 + adds r0, 0x78 + lsls r1, r0, 16 + lsrs r7, r1, 16 + strh r0, [r5, 0x28] + lsls r1, r7, 16 + lsrs r0, r1, 16 + cmp r0, 0xFF + bhi _080D2334 + movs r3, 0xC8 + lsls r3, 1 + adds r0, r3, 0 + subs r0, r2 + strh r0, [r5, 0x14] + adds r0, r3, 0 + subs r0, r2 + lsls r0, 1 + adds r3, r0, r6 + ldrh r0, [r3] + strh r0, [r5, 0x38] + movs r0, 0x8C + lsls r0, 2 + subs r0, r2 + lsls r0, 1 + adds r2, r0, r6 + ldrh r0, [r2] + asrs r1, 16 + cmp r0, r1 + bge _080D232C + movs r0, 0x78 + strh r0, [r2] + b _080D2334 + .align 2, 0 +_080D2320: .4byte gUnknown_83FA444 +_080D2324: .4byte gUnknown_2038E80 +_080D2328: .4byte gUnknown_2039A2C +_080D232C: + ldrh r0, [r3] + cmp r0, r1 + bge _080D2334 + strh r7, [r3] +_080D2334: + mov r1, r9 + lsls r0, r1, 16 + ldr r2, _080D2348 @ =0xffff0000 + adds r0, r2 + lsrs r0, 16 + mov r9, r0 + lsls r1, r0, 16 + cmp r1, 0 + bgt _080D22D4 + b _080D24DA + .align 2, 0 +_080D2348: .4byte 0xffff0000 +_080D234C: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x50 + ble _080D2356 + movs r2, 0x50 +_080D2356: + mov r9, r2 + lsls r1, r2, 16 + cmp r1, 0 + bgt _080D2360 + b _080D24DA +_080D2360: + ldr r0, _080D23BC @ =gUnknown_83FA444 + adds r0, r5, r0 + movs r3, 0 + ldrsh r4, [r0, r3] + ldr r6, _080D23C0 @ =gUnknown_2038E80 +_080D236A: + ldr r0, _080D23C4 @ =gUnknown_2039A2C + ldr r3, [r0] + asrs r2, r1, 16 + adds r0, r2, 0 + muls r0, r4 + asrs r0, 8 + adds r0, 0x78 + lsls r1, r0, 16 + lsrs r7, r1, 16 + strh r0, [r3, 0x28] + lsls r5, r7, 16 + lsrs r0, r5, 16 + cmp r0, 0xFF + bhi _080D23A6 + movs r1, 0xC8 + lsls r1, 1 + adds r0, r1, 0 + subs r0, r2 + strh r0, [r3, 0x14] + adds r0, r1, 0 + subs r0, r2 + lsls r0, 1 + adds r2, r0, r6 + ldrh r0, [r2] + strh r0, [r3, 0x38] + ldrh r1, [r2] + asrs r0, r5, 16 + cmp r1, r0 + bge _080D23A6 + strh r7, [r2] +_080D23A6: + mov r2, r9 + lsls r0, r2, 16 + ldr r3, _080D23C8 @ =0xffff0000 + adds r0, r3 + lsrs r0, 16 + mov r9, r0 + lsls r1, r0, 16 + cmp r1, 0 + bgt _080D236A + b _080D24DA + .align 2, 0 +_080D23BC: .4byte gUnknown_83FA444 +_080D23C0: .4byte gUnknown_2038E80 +_080D23C4: .4byte gUnknown_2039A2C +_080D23C8: .4byte 0xffff0000 +_080D23CC: + lsls r0, r2, 16 + asrs r0, 16 + movs r1, 0x4F + negs r1, r1 + cmp r0, r1 + bge _080D23DA + ldr r2, _080D2438 @ =0x0000ffb1 +_080D23DA: + mov r9, r2 + lsls r1, r2, 16 + cmp r1, 0 + bgt _080D24DA + ldr r0, _080D243C @ =gUnknown_83FA444 + adds r0, r5, r0 + movs r6, 0 + ldrsh r4, [r0, r6] + ldr r6, _080D2440 @ =gUnknown_2038E80 +_080D23EC: + ldr r0, _080D2444 @ =gUnknown_2039A2C + ldr r5, [r0] + asrs r2, r1, 16 + adds r0, r2, 0 + muls r0, r4 + asrs r0, 8 + adds r0, 0x78 + lsls r1, r0, 16 + lsrs r7, r1, 16 + strh r0, [r5, 0x28] + lsls r1, r7, 16 + lsrs r0, r1, 16 + cmp r0, 0xFF + bhi _080D2450 + movs r3, 0x8C + lsls r3, 2 + adds r0, r3, 0 + subs r0, r2 + strh r0, [r5, 0x14] + adds r0, r3, 0 + subs r0, r2 + lsls r0, 1 + adds r3, r0, r6 + ldrh r0, [r3] + strh r0, [r5, 0x38] + movs r0, 0xC8 + lsls r0, 1 + subs r0, r2 + lsls r0, 1 + adds r2, r0, r6 + ldrh r0, [r2] + asrs r1, 16 + cmp r0, r1 + blt _080D2448 + movs r0, 0x78 + strh r0, [r2] + b _080D2450 + .align 2, 0 +_080D2438: .4byte 0x0000ffb1 +_080D243C: .4byte gUnknown_83FA444 +_080D2440: .4byte gUnknown_2038E80 +_080D2444: .4byte gUnknown_2039A2C +_080D2448: + ldrh r0, [r3] + cmp r0, r1 + ble _080D2450 + strh r7, [r3] +_080D2450: + mov r1, r9 + lsls r0, r1, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r0, 16 + mov r9, r0 + lsls r1, r0, 16 + cmp r1, 0 + ble _080D23EC + b _080D24DA +_080D2466: + lsls r0, r2, 16 + asrs r0, 16 + movs r1, 0x4F + negs r1, r1 + cmp r0, r1 + bge _080D2474 + ldr r2, _080D252C @ =0x0000ffb1 +_080D2474: + mov r9, r2 + lsls r1, r2, 16 + cmp r1, 0 + bgt _080D24DA + ldr r0, _080D2530 @ =gUnknown_83FA444 + adds r0, r5, r0 + movs r3, 0 + ldrsh r4, [r0, r3] + ldr r6, _080D2534 @ =gUnknown_2039A2C + mov r8, r6 + ldr r6, _080D2538 @ =gUnknown_2038E80 +_080D248A: + mov r0, r8 + ldr r3, [r0] + asrs r2, r1, 16 + adds r0, r2, 0 + muls r0, r4 + asrs r0, 8 + adds r0, 0x78 + lsls r1, r0, 16 + lsrs r7, r1, 16 + strh r0, [r3, 0x28] + lsls r5, r7, 16 + lsrs r0, r5, 16 + cmp r0, 0xFF + bhi _080D24C6 + movs r1, 0x8C + lsls r1, 2 + adds r0, r1, 0 + subs r0, r2 + strh r0, [r3, 0x14] + adds r0, r1, 0 + subs r0, r2 + lsls r0, 1 + adds r2, r0, r6 + ldrh r0, [r2] + strh r0, [r3, 0x38] + ldrh r1, [r2] + asrs r0, r5, 16 + cmp r1, r0 + ble _080D24C6 + strh r7, [r2] +_080D24C6: + mov r2, r9 + lsls r0, r2, 16 + movs r3, 0x80 + lsls r3, 9 + adds r0, r3 + lsrs r0, 16 + mov r9, r0 + lsls r1, r0, 16 + cmp r1, 0 + ble _080D248A +_080D24DA: + movs r4, 0 + mov r9, r4 + ldr r4, _080D2538 @ =gUnknown_2038E80 + movs r5, 0xA0 + lsls r5, 1 +_080D24E4: + mov r6, r9 + lsls r1, r6, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldr r0, [sp, 0x4] + adds r3, r0 + lsls r3, 1 + adds r3, r4 + adds r0, r1, r5 + lsls r0, 1 + adds r0, r4 + ldrh r2, [r0] + lsls r2, 8 + movs r6, 0xF0 + lsls r6, 1 + adds r0, r1, r6 + lsls r0, 1 + adds r0, r4 + ldrh r0, [r0] + orrs r2, r0 + strh r2, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r0, r1, 16 + mov r9, r0 + asrs r1, 16 + cmp r1, 0x9F + ble _080D24E4 +_080D251C: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D252C: .4byte 0x0000ffb1 +_080D2530: .4byte gUnknown_83FA444 +_080D2534: .4byte gUnknown_2039A2C +_080D2538: .4byte gUnknown_2038E80 + thumb_func_end sub_80D1F64 + + thumb_func_start sub_80D253C +sub_80D253C: @ 80D253C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + ldr r0, _080D25A0 @ =gUnknown_2039A2C + ldr r1, [r0] + movs r4, 0 + strh r4, [r1, 0x2] + movs r0, 0x3F + strh r0, [r1, 0x4] + ldr r0, _080D25A4 @ =0x00007878 + strh r0, [r1, 0x6] + ldr r0, _080D25A8 @ =0x00003070 + strh r0, [r1, 0x8] + ldr r0, _080D25AC @ =0x00001090 + strh r0, [r1, 0xC] + strh r4, [r1, 0x20] + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80D1F64 + movs r0, 0 + movs r1, 0 + movs r2, 0x1 + bl sub_80D1F64 + ldr r1, _080D25B0 @ =0x040000d4 + ldr r0, _080D25B4 @ =gUnknown_2038E80 + str r0, [r1] + ldr r2, _080D25B8 @ =0xfffff880 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D25BC @ =0x80000140 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r0, _080D25C0 @ =sub_80D2698 + bl sub_80006F4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + strh r4, [r5, 0xA] + strh r4, [r5, 0xC] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D25A0: .4byte gUnknown_2039A2C +_080D25A4: .4byte 0x00007878 +_080D25A8: .4byte 0x00003070 +_080D25AC: .4byte 0x00001090 +_080D25B0: .4byte 0x040000d4 +_080D25B4: .4byte gUnknown_2038E80 +_080D25B8: .4byte 0xfffff880 +_080D25BC: .4byte 0x80000140 +_080D25C0: .4byte sub_80D2698 + thumb_func_end sub_80D253C + + thumb_func_start sub_80D25C4 +sub_80D25C4: @ 80D25C4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + movs r1, 0xC + ldrsh r0, [r4, r1] + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r2, 0x1 + bl sub_80D1F64 + ldr r5, _080D2694 @ =gUnknown_2039A2C + ldr r1, [r5] + ldrb r0, [r1] + movs r2, 0x1 + mov r8, r2 + ldrb r2, [r1] + movs r7, 0 + mov r2, r8 + orrs r0, r2 + strb r0, [r1] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + bne _080D2686 + movs r1, 0xC + ldrsh r0, [r4, r1] + movs r1, 0x10 + movs r2, 0 + bl sub_80D1F64 + ldrh r1, [r4, 0xC] + movs r6, 0x30 + subs r0, r6, r1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r0, 0 + bge _080D2618 + movs r3, 0 +_080D2618: + adds r0, r1, 0 + adds r0, 0x70 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080D2628 + movs r2, 0xFF +_080D2628: + ldr r0, [r5] + orrs r2, r3 + strh r2, [r0, 0x8] + ldrh r0, [r4, 0xC] + adds r0, 0x20 + strh r0, [r4, 0xC] + movs r0, 0 + strh r0, [r4, 0xA] + movs r2, 0xC + ldrsh r0, [r4, r2] + movs r1, 0 + movs r2, 0x1 + bl sub_80D1F64 + ldrh r1, [r4, 0xC] + subs r0, r6, r1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r0, 0 + bge _080D2652 + movs r3, 0 +_080D2652: + adds r0, r1, 0 + adds r0, 0x70 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080D2662 + movs r2, 0xFF +_080D2662: + ldr r1, [r5] + orrs r2, r3 + strh r2, [r1, 0xC] + ldrb r0, [r1] + mov r2, r8 + orrs r0, r2 + ldrb r2, [r1] + orrs r0, r7 + strb r0, [r1] + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x9F + ble _080D2686 + ldr r1, [r5] + movs r0, 0x1 + strh r0, [r1, 0x20] + bl sub_80D3E60 +_080D2686: + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2694: .4byte gUnknown_2039A2C + thumb_func_end sub_80D25C4 + + thumb_func_start sub_80D2698 +sub_80D2698: @ 80D2698 + push {r4-r6,lr} + ldr r5, _080D26D0 @ =0x040000b0 + ldrh r1, [r5, 0xA] + ldr r0, _080D26D4 @ =0x0000c5ff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r1, [r5, 0xA] + ldr r0, _080D26D8 @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0xA] + bl sub_80D3DF4 + ldr r4, _080D26DC @ =gUnknown_2039A2C + ldr r2, [r4] + movs r0, 0x20 + ldrsh r3, [r2, r0] + cmp r3, 0 + beq _080D26E4 + ldr r0, _080D26E0 @ =sub_80D1F2C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + b _080D2746 + .align 2, 0 +_080D26D0: .4byte 0x040000b0 +_080D26D4: .4byte 0x0000c5ff +_080D26D8: .4byte 0x00007fff +_080D26DC: .4byte gUnknown_2039A2C +_080D26E0: .4byte sub_80D1F2C +_080D26E4: + ldrb r0, [r2] + cmp r0, 0 + beq _080D2700 + ldr r1, _080D274C @ =0x040000d4 + ldr r0, _080D2750 @ =gUnknown_2038E80 + str r0, [r1] + ldr r6, _080D2754 @ =0xfffff880 + adds r0, r6 + str r0, [r1, 0x4] + ldr r0, _080D2758 @ =0x80000140 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldrb r0, [r2] + strb r3, [r2] +_080D2700: + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0xC] + movs r0, 0x46 + bl sub_8000A38 + ldr r4, _080D275C @ =gUnknown_2038700 + ldrh r1, [r4] + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4, 0x2] + movs r0, 0x42 + bl sub_8000A38 + str r4, [r5] + ldr r0, _080D2760 @ =0x04000040 + str r0, [r5, 0x4] + ldr r0, _080D2764 @ =0xa6400001 + str r0, [r5, 0x8] + ldr r0, [r5, 0x8] +_080D2746: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D274C: .4byte 0x040000d4 +_080D2750: .4byte gUnknown_2038E80 +_080D2754: .4byte 0xfffff880 +_080D2758: .4byte 0x80000140 +_080D275C: .4byte gUnknown_2038700 +_080D2760: .4byte 0x04000040 +_080D2764: .4byte 0xa6400001 + thumb_func_end sub_80D2698 + + thumb_func_start sub_80D2768 +sub_80D2768: @ 80D2768 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D2784 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + strh r2, [r1, 0x26] + bl sub_80D2808 + pop {r0} + bx r0 + .align 2, 0 +_080D2784: .4byte gUnknown_3005090 + thumb_func_end sub_80D2768 + + thumb_func_start sub_80D2788 +sub_80D2788: @ 80D2788 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D27A4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x1 + strh r2, [r1, 0x26] + bl sub_80D2808 + pop {r0} + bx r0 + .align 2, 0 +_080D27A4: .4byte gUnknown_3005090 + thumb_func_end sub_80D2788 + + thumb_func_start sub_80D27A8 +sub_80D27A8: @ 80D27A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D27C4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x2 + strh r2, [r1, 0x26] + bl sub_80D2808 + pop {r0} + bx r0 + .align 2, 0 +_080D27C4: .4byte gUnknown_3005090 + thumb_func_end sub_80D27A8 + + thumb_func_start sub_80D27C8 +sub_80D27C8: @ 80D27C8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D27E4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x3 + strh r2, [r1, 0x26] + bl sub_80D2808 + pop {r0} + bx r0 + .align 2, 0 +_080D27E4: .4byte gUnknown_3005090 + thumb_func_end sub_80D27C8 + + thumb_func_start sub_80D27E8 +sub_80D27E8: @ 80D27E8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D2804 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x4 + strh r2, [r1, 0x26] + bl sub_80D2808 + pop {r0} + bx r0 + .align 2, 0 +_080D2804: .4byte gUnknown_3005090 + thumb_func_end sub_80D27E8 + + thumb_func_start sub_80D2808 +sub_80D2808: @ 80D2808 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D2838 @ =gUnknown_83FA46C + ldr r2, _080D283C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D281A: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D281A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2838: .4byte gUnknown_83FA46C +_080D283C: .4byte gUnknown_3005090 + thumb_func_end sub_80D2808 + + thumb_func_start sub_80D2840 +sub_80D2840: @ 80D2840 + push {r4,lr} + adds r4, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + adds r0, r4, 0 + bl sub_80D2EA4 + movs r0, 0 + strh r0, [r4, 0xA] + movs r0, 0x1 + strh r0, [r4, 0xC] + movs r0, 0xEF + strh r0, [r4, 0xE] + ldr r0, _080D2898 @ =gUnknown_2039A2C + ldr r1, [r0] + movs r0, 0x3F + strh r0, [r1, 0x2] + movs r0, 0x3E + strh r0, [r1, 0x4] + movs r0, 0xA0 + strh r0, [r1, 0x8] + movs r1, 0 + ldr r3, _080D289C @ =gUnknown_2038E80 + ldr r2, _080D28A0 @ =0x0000f0f1 +_080D2874: + lsls r0, r1, 1 + adds r0, r3 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x9F + bls _080D2874 + ldr r0, _080D28A4 @ =sub_80D2D50 + bl sub_80006F4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D2898: .4byte gUnknown_2039A2C +_080D289C: .4byte gUnknown_2038E80 +_080D28A0: .4byte 0x0000f0f1 +_080D28A4: .4byte sub_80D2D50 + thumb_func_end sub_80D2840 + + thumb_func_start sub_80D28A8 +sub_80D28A8: @ 80D28A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + mov r8, r0 + ldr r6, _080D2950 @ =gUnknown_83FAC34 + add r1, sp, 0x4 + mov r0, sp + bl sub_80D3E28 + ldr r0, _080D2954 @ =gUnknown_83F8F60 + ldr r1, [sp, 0x4] + movs r2, 0xF0 + bl CpuSet + ldr r1, _080D2958 @ =gUnknown_83FA740 + mov r2, r8 + movs r3, 0x26 + ldrsh r0, [r2, r3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080D295C @ =gUnknown_83FA754 + ldr r0, _080D2960 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xFA + movs r2, 0xC + bl sub_80703EC + movs r1, 0 + ldr r5, [sp] + movs r0, 0xF0 + lsls r0, 8 + adds r7, r0, 0 +_080D28FC: + movs r0, 0 + lsls r3, r1, 16 + asrs r4, r3, 11 +_080D2902: + lsls r2, r0, 16 + asrs r2, 16 + adds r1, r4, r2 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r6] + orrs r0, r7 + strh r0, [r1] + adds r2, 0x1 + lsls r2, 16 + adds r6, 0x2 + lsrs r0, r2, 16 + asrs r2, 16 + cmp r2, 0x1F + ble _080D2902 + movs r1, 0x80 + lsls r1, 9 + adds r0, r3, r1 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080D28FC + movs r0, 0x2 + bl sub_8000B68 + ldr r0, _080D2964 @ =sub_80D2E6C + bl sub_8000700 + mov r2, r8 + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + movs r0, 0 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2950: .4byte gUnknown_83FAC34 +_080D2954: .4byte gUnknown_83F8F60 +_080D2958: .4byte gUnknown_83FA740 +_080D295C: .4byte gUnknown_83FA754 +_080D2960: .4byte gUnknown_300500C +_080D2964: .4byte sub_80D2E6C + thumb_func_end sub_80D28A8 + + thumb_func_start sub_80D2968 +sub_80D2968: @ 80D2968 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080D2A4C @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r7, _080D2A50 @ =gUnknown_2038700 + ldrh r0, [r4, 0xA] + ldrb r5, [r4, 0xA] + adds r0, 0x10 + strh r0, [r4, 0xA] + movs r6, 0 +_080D2982: + adds r0, r5, 0 + movs r1, 0x10 + bl sub_8044E30 + ldrh r1, [r4, 0xC] + adds r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r0, 0 + bge _080D2998 + movs r2, 0x1 +_080D2998: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xF0 + ble _080D29A2 + movs r2, 0xF0 +_080D29A2: + strh r2, [r7] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r7, 0x2 + adds r0, r5, 0 + adds r0, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r6, 0x4F + bls _080D2982 + cmp r6, 0x9F + bhi _080D29FA +_080D29BC: + adds r0, r5, 0 + movs r1, 0x10 + bl sub_8044E30 + ldrh r1, [r4, 0xE] + subs r1, r0 + lsls r1, 16 + lsrs r2, r1, 16 + cmp r1, 0 + bge _080D29D2 + movs r2, 0 +_080D29D2: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xEF + ble _080D29DC + movs r2, 0xEF +_080D29DC: + lsls r0, r2, 16 + asrs r0, 8 + movs r1, 0xF0 + orrs r0, r1 + strh r0, [r7] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r7, 0x2 + adds r0, r5, 0 + adds r0, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r6, 0x9F + bls _080D29BC +_080D29FA: + ldrh r1, [r4, 0xC] + adds r1, 0x8 + strh r1, [r4, 0xC] + ldrh r0, [r4, 0xE] + subs r0, 0x8 + strh r0, [r4, 0xE] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0xF0 + ble _080D2A12 + movs r0, 0xF0 + strh r0, [r4, 0xC] +_080D2A12: + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080D2A1E + movs r0, 0 + strh r0, [r4, 0xE] +_080D2A1E: + ldr r0, [r4, 0xC] + cmp r0, 0xF0 + bne _080D2A2A + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D2A2A: + ldr r0, _080D2A4C @ =gUnknown_2039A2C + ldr r1, [r0] + ldrh r0, [r1, 0x18] + subs r0, 0x8 + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x1A] + adds r0, 0x8 + strh r0, [r1, 0x1A] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2A4C: .4byte gUnknown_2039A2C +_080D2A50: .4byte gUnknown_2038700 + thumb_func_end sub_80D2968 + + thumb_func_start sub_80D2A54 +sub_80D2A54: @ 80D2A54 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r2, _080D2AC8 @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r1, _080D2ACC @ =gUnknown_2038700 + adds r5, r2, 0 + movs r2, 0xF0 +_080D2A68: + strh r2, [r1] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + adds r1, 0x2 + cmp r0, 0x9F + bls _080D2A68 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + strh r1, [r4, 0xC] + strh r1, [r4, 0xE] + ldr r1, [r5] + ldrh r0, [r1, 0x18] + subs r0, 0x8 + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x1A] + adds r0, 0x8 + strh r0, [r1, 0x1A] + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r1, 0 + bl sub_80D3120 + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r1, 0x1 + bl sub_80D3120 + movs r1, 0x22 + ldrsh r0, [r4, r1] + bl sub_80D3138 + movs r0, 0x61 + bl sub_80722CC + ldr r1, [r5] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D2AC8: .4byte gUnknown_2039A2C +_080D2ACC: .4byte gUnknown_2038700 + thumb_func_end sub_80D2A54 + + thumb_func_start sub_80D2AD0 +sub_80D2AD0: @ 80D2AD0 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D2B08 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrh r0, [r1, 0x18] + subs r0, 0x8 + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x1A] + adds r0, 0x8 + strh r0, [r1, 0x1A] + movs r1, 0x22 + ldrsh r0, [r4, r1] + bl sub_80D3154 + lsls r0, 16 + cmp r0, 0 + beq _080D2B00 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0x24 + ldrsh r0, [r4, r1] + bl sub_80D3138 +_080D2B00: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D2B08: .4byte gUnknown_2039A2C + thumb_func_end sub_80D2AD0 + + thumb_func_start sub_80D2B0C +sub_80D2B0C: @ 80D2B0C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r7, _080D2BAC @ =gUnknown_2039A2C + ldr r1, [r7] + ldrh r0, [r1, 0x18] + subs r0, 0x8 + movs r2, 0 + mov r8, r2 + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x1A] + adds r0, 0x8 + strh r0, [r1, 0x1A] + movs r1, 0x24 + ldrsh r0, [r6, r1] + bl sub_80D3154 + lsls r0, 16 + cmp r0, 0 + beq _080D2BA0 + ldr r1, [r7] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + movs r0, 0 + bl sub_80006F4 + ldr r1, _080D2BB0 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D2BB4 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D2BB8 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + ldr r4, _080D2BBC @ =gUnknown_2038700 + movs r5, 0xA0 + lsls r5, 1 + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + bl memset + movs r2, 0xF0 + lsls r2, 3 + adds r4, r2 + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + bl memset + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + mov r0, r8 + strh r0, [r6, 0xE] + strh r0, [r6, 0x10] + ldr r1, [r7] + movs r0, 0xBF + strh r0, [r1, 0xE] + ldr r0, _080D2BC0 @ =sub_80D2DEC + bl sub_80006F4 +_080D2BA0: + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2BAC: .4byte gUnknown_2039A2C +_080D2BB0: .4byte 0x040000b0 +_080D2BB4: .4byte 0x0000c5ff +_080D2BB8: .4byte 0x00007fff +_080D2BBC: .4byte gUnknown_2038700 +_080D2BC0: .4byte sub_80D2DEC + thumb_func_end sub_80D2B0C + + thumb_func_start sub_80D2BC4 +sub_80D2BC4: @ 80D2BC4 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r2, _080D2C84 @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + movs r6, 0x1 + ldr r1, [r2] + ldrh r0, [r1, 0x18] + subs r0, 0x8 + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x1A] + adds r0, 0x8 + strh r0, [r1, 0x1A] + ldrh r1, [r4, 0x10] + movs r3, 0x10 + ldrsh r0, [r4, r3] + mov r12, r2 + cmp r0, 0x4F + bgt _080D2BF2 + adds r0, r1, 0x2 + strh r0, [r4, 0x10] +_080D2BF2: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080D2BFE + movs r0, 0x50 + strh r0, [r4, 0x10] +_080D2BFE: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + movs r1, 0x1 + ands r0, r1 + ldrh r3, [r4, 0x10] + cmp r0, 0 + beq _080D2C60 + movs r2, 0 + lsls r0, r3, 16 + movs r6, 0 + cmp r0, 0 + blt _080D2C60 + movs r7, 0x50 + ldr r5, _080D2C88 @ =gUnknown_2038700 +_080D2C1C: + lsls r0, r2, 16 + asrs r3, r0, 16 + subs r1, r7, r3 + adds r0, r3, 0 + adds r0, 0x50 + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 16 + asrs r1, 15 + adds r1, r5 + ldrh r0, [r1] + cmp r0, 0xF + bhi _080D2C3C + movs r6, 0x1 + adds r0, 0x1 + strh r0, [r1] +_080D2C3C: + lsls r0, r2, 16 + asrs r0, 15 + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, 0xF + bhi _080D2C4E + movs r6, 0x1 + adds r0, 0x1 + strh r0, [r1] +_080D2C4E: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + movs r3, 0x10 + ldrsh r1, [r4, r3] + ldrh r3, [r4, 0x10] + cmp r0, r1 + ble _080D2C1C +_080D2C60: + cmp r3, 0x50 + bne _080D2C6E + cmp r6, 0 + bne _080D2C6E + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D2C6E: + mov r1, r12 + ldr r0, [r1] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2C84: .4byte gUnknown_2039A2C +_080D2C88: .4byte gUnknown_2038700 + thumb_func_end sub_80D2BC4 + + thumb_func_start sub_80D2C8C +sub_80D2C8C: @ 80D2C8C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080D2CBC @ =gUnknown_2039A2C + ldr r0, [r5] + ldrb r1, [r0] + movs r6, 0 + strb r6, [r0] + movs r0, 0x1 + negs r0, r0 + ldr r2, _080D2CC0 @ =0x00007fff + movs r1, 0x10 + bl sub_80714D4 + ldr r1, [r5] + movs r0, 0xFF + strh r0, [r1, 0xE] + strh r6, [r4, 0xE] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D2CBC: .4byte gUnknown_2039A2C +_080D2CC0: .4byte 0x00007fff + thumb_func_end sub_80D2C8C + + thumb_func_start sub_80D2CC4 +sub_80D2CC4: @ 80D2CC4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D2D08 @ =gUnknown_2039A2C + ldr r1, [r5] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + ldr r0, _080D2D0C @ =gUnknown_2038700 + movs r2, 0xE + ldrsh r1, [r4, r2] + movs r2, 0xA0 + lsls r2, 1 + bl memset + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0xF + ble _080D2CF4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D2CF4: + ldr r0, [r5] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D2D08: .4byte gUnknown_2039A2C +_080D2D0C: .4byte gUnknown_2038700 + thumb_func_end sub_80D2CC4 + + thumb_func_start sub_80D2D10 +sub_80D2D10: @ 80D2D10 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080D2D44 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D2D48 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D2D4C @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3E60 + ldr r0, [r4] + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D2D44: .4byte 0x040000b0 +_080D2D48: .4byte 0x0000c5ff +_080D2D4C: .4byte 0x00007fff + thumb_func_end sub_80D2D10 + + thumb_func_start sub_80D2D50 +sub_80D2D50: @ 80D2D50 + push {r4,r5,lr} + ldr r4, _080D2DC4 @ =0x040000b0 + ldrh r1, [r4, 0xA] + ldr r0, _080D2DC8 @ =0x0000c5ff + ands r0, r1 + strh r0, [r4, 0xA] + ldrh r1, [r4, 0xA] + ldr r0, _080D2DCC @ =0x00007fff + ands r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xA] + bl sub_80D3DF4 + ldr r5, _080D2DD0 @ =gUnknown_2039A2C + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, 0 + beq _080D2D88 + ldr r1, _080D2DD4 @ =0x040000d4 + ldr r0, _080D2DD8 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D2DDC @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D2D88: + ldr r0, [r5] + ldrh r1, [r0, 0x1C] + movs r0, 0x12 + bl sub_8000A38 + ldr r0, [r5] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r5] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r5] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, _080D2DE0 @ =gUnknown_2038E80 + str r0, [r4] + ldr r0, _080D2DE4 @ =0x04000040 + str r0, [r4, 0x4] + ldr r0, _080D2DE8 @ =0xa2400001 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2DC4: .4byte 0x040000b0 +_080D2DC8: .4byte 0x0000c5ff +_080D2DCC: .4byte 0x00007fff +_080D2DD0: .4byte gUnknown_2039A2C +_080D2DD4: .4byte 0x040000d4 +_080D2DD8: .4byte gUnknown_2038700 +_080D2DDC: .4byte 0x800000a0 +_080D2DE0: .4byte gUnknown_2038E80 +_080D2DE4: .4byte 0x04000040 +_080D2DE8: .4byte 0xa2400001 + thumb_func_end sub_80D2D50 + + thumb_func_start sub_80D2DEC +sub_80D2DEC: @ 80D2DEC + push {r4,lr} + ldr r4, _080D2E44 @ =0x040000b0 + ldrh r1, [r4, 0xA] + ldr r0, _080D2E48 @ =0x0000c5ff + ands r0, r1 + strh r0, [r4, 0xA] + ldrh r1, [r4, 0xA] + ldr r0, _080D2E4C @ =0x00007fff + ands r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xA] + bl sub_80D3DF4 + ldr r2, _080D2E50 @ =gUnknown_2039A2C + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, 0 + beq _080D2E24 + ldr r1, _080D2E54 @ =0x040000d4 + ldr r0, _080D2E58 @ =gUnknown_2038700 + str r0, [r1] + movs r3, 0xF0 + lsls r3, 3 + adds r0, r3 + str r0, [r1, 0x4] + ldr r0, _080D2E5C @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D2E24: + ldr r0, [r2] + ldrh r1, [r0, 0xE] + movs r0, 0x50 + bl sub_8000A38 + ldr r0, _080D2E60 @ =gUnknown_2038E80 + str r0, [r4] + ldr r0, _080D2E64 @ =0x04000054 + str r0, [r4, 0x4] + ldr r0, _080D2E68 @ =0xa2400001 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D2E44: .4byte 0x040000b0 +_080D2E48: .4byte 0x0000c5ff +_080D2E4C: .4byte 0x00007fff +_080D2E50: .4byte gUnknown_2039A2C +_080D2E54: .4byte 0x040000d4 +_080D2E58: .4byte gUnknown_2038700 +_080D2E5C: .4byte 0x800000a0 +_080D2E60: .4byte gUnknown_2038E80 +_080D2E64: .4byte 0x04000054 +_080D2E68: .4byte 0xa2400001 + thumb_func_end sub_80D2DEC + + thumb_func_start sub_80D2E6C +sub_80D2E6C: @ 80D2E6C + push {lr} + ldr r0, _080D2E80 @ =0x04000006 + ldrh r0, [r0] + cmp r0, 0x4F + bhi _080D2E8C + ldr r1, _080D2E84 @ =0x04000010 + ldr r0, _080D2E88 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrh r0, [r0, 0x18] + b _080D2E94 + .align 2, 0 +_080D2E80: .4byte 0x04000006 +_080D2E84: .4byte 0x04000010 +_080D2E88: .4byte gUnknown_2039A2C +_080D2E8C: + ldr r1, _080D2E9C @ =0x04000010 + ldr r0, _080D2EA0 @ =gUnknown_2039A2C + ldr r0, [r0] + ldrh r0, [r0, 0x1A] +_080D2E94: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080D2E9C: .4byte 0x04000010 +_080D2EA0: .4byte gUnknown_2039A2C + thumb_func_end sub_80D2E6C + + thumb_func_start sub_80D2EA4 +sub_80D2EA4: @ 80D2EA4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r4, r0, 0 + ldr r6, _080D2FF8 @ =gUnknown_3003E58 + movs r0, 0xA + strb r0, [r6] + ldr r0, _080D2FFC @ =gUnknown_83FA494 + movs r2, 0x26 + ldrsh r1, [r4, r2] + mov r9, r1 + add r0, r9 + ldrb r0, [r0] + ldr r2, _080D3000 @ =gUnknown_83FA4AE + lsls r1, 2 + mov r9, r1 + adds r1, r2 + ldrh r1, [r1] + subs r1, 0x20 + lsls r1, 16 + asrs r1, 16 + adds r2, 0x2 + add r2, r9 + ldrh r2, [r2] + adds r2, 0x2A + lsls r2, 16 + asrs r2, 16 + ldr r5, _080D3004 @ =gUnknown_201C000 + str r5, [sp] + movs r3, 0 + bl sub_8083858 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r0, _080D3008 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + movs r1, 0x1 + bl sub_810C374 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x88 + lsls r1, 1 + str r5, [sp] + movs r2, 0x6A + movs r3, 0 + bl sub_8083858 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + movs r0, 0xC + strb r0, [r6] + movs r3, 0x22 + ldrsh r0, [r4, r3] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r1, _080D300C @ =gUnknown_202063C + adds r5, r1 + movs r2, 0x24 + ldrsh r0, [r4, r2] + lsls r6, r0, 4 + adds r6, r0 + lsls r6, 2 + adds r6, r1 + ldr r0, _080D3010 @ =sub_80D301C + str r0, [r5, 0x1C] + str r0, [r6, 0x1C] + ldrb r0, [r5, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r5, 0x1] + ldrb r0, [r6, 0x1] + orrs r0, r1 + strb r0, [r6, 0x1] + bl sub_8008594 + lsls r0, 24 + lsrs r0, 24 + movs r3, 0x1F + mov r8, r3 + mov r4, r8 + ands r0, r4 + lsls r0, 1 + ldrb r2, [r5, 0x3] + movs r4, 0x3F + negs r4, r4 + adds r1, r4, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x3] + bl sub_8008594 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + ands r0, r1 + lsls r0, 1 + ldrb r1, [r6, 0x3] + ands r4, r1 + orrs r4, r0 + strb r4, [r6, 0x3] + ldrb r2, [r5, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + movs r2, 0x40 + orrs r0, r2 + strb r0, [r5, 0x1] + ldrb r0, [r6, 0x1] + ands r1, r0 + orrs r1, r2 + strb r1, [r6, 0x1] + ldrb r0, [r5, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrb r0, [r6, 0x3] + orrs r0, r1 + strb r0, [r6, 0x3] + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x3 + bl sub_80073F0 + adds r0, r6, 0 + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x3 + bl sub_80073F0 + ldrb r0, [r5, 0x3] + lsls r0, 26 + lsrs r0, 27 + ldr r2, _080D3014 @ =gUnknown_83FA49A + mov r3, r9 + adds r1, r3, r2 + movs r4, 0 + ldrsh r1, [r1, r4] + adds r2, 0x2 + add r9, r2 + mov r3, r9 + movs r4, 0 + ldrsh r2, [r3, r4] + movs r3, 0 + bl sub_800865C + ldrb r0, [r6, 0x3] + lsls r0, 26 + lsrs r0, 27 + ldr r1, _080D3018 @ =0xfffffe00 + movs r2, 0x80 + lsls r2, 2 + movs r3, 0 + bl sub_800865C + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D2FF8: .4byte gUnknown_3003E58 +_080D2FFC: .4byte gUnknown_83FA494 +_080D3000: .4byte gUnknown_83FA4AE +_080D3004: .4byte gUnknown_201C000 +_080D3008: .4byte gUnknown_300500C +_080D300C: .4byte gUnknown_202063C +_080D3010: .4byte sub_80D301C +_080D3014: .4byte gUnknown_83FA49A +_080D3018: .4byte 0xfffffe00 + thumb_func_end sub_80D2EA4 + + thumb_func_start sub_80D301C +sub_80D301C: @ 80D301C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D3040 @ =gUnknown_83FA4C4 +_080D3022: + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D3022 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3040: .4byte gUnknown_83FA4C4 + thumb_func_end sub_80D301C + + thumb_func_start sub_80D3044 +sub_80D3044: @ 80D3044 + movs r0, 0 + bx lr + thumb_func_end sub_80D3044 + + thumb_func_start sub_80D3048 +sub_80D3048: @ 80D3048 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + ldr r1, _080D308C @ =gUnknown_83FA4E0 + mov r0, sp + movs r2, 0x4 + bl memcpy + add r4, sp, 0x4 + ldr r1, _080D3090 @ =gUnknown_83FA4E4 + adds r0, r4, 0 + movs r2, 0x4 + bl memcpy + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r1, 0x3C + ldrsh r0, [r5, r1] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x30] + movs r1, 0x3C + ldrsh r0, [r5, r1] + lsls r0, 1 + adds r4, r0 + ldrh r0, [r4] + strh r0, [r5, 0x32] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D308C: .4byte gUnknown_83FA4E0 +_080D3090: .4byte gUnknown_83FA4E4 + thumb_func_end sub_80D3048 + + thumb_func_start sub_80D3094 +sub_80D3094: @ 80D3094 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + ldrh r3, [r1, 0x20] + adds r2, r0, r3 + strh r2, [r1, 0x20] + movs r3, 0x3C + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080D30B2 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x84 + bgt _080D30C0 + b _080D30BA +_080D30B2: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x67 + ble _080D30C0 +_080D30BA: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] +_080D30C0: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80D3094 + + thumb_func_start sub_80D30C8 +sub_80D30C8: @ 80D30C8 + push {lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x32] + ldrh r0, [r2, 0x30] + adds r1, r3, r0 + strh r1, [r2, 0x30] + ldrh r0, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] + lsls r1, 16 + cmp r1, 0 + bne _080D30EE + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + negs r0, r3 + strh r0, [r2, 0x32] + movs r0, 0x1 + strh r0, [r2, 0x3A] +_080D30EE: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80D30C8 + + thumb_func_start sub_80D30F4 +sub_80D30F4: @ 80D30F4 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x30] + adds r0, r1 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x20] + adds r1, r0 + strh r1, [r2, 0x20] + adds r1, 0x1F + lsls r1, 16 + movs r0, 0x97 + lsls r0, 17 + cmp r1, r0 + bls _080D3118 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_080D3118: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80D30F4 + + thumb_func_start sub_80D3120 +sub_80D3120: @ 80D3120 + ldr r3, _080D3134 @ =gUnknown_202063C + lsls r0, 16 + asrs r0, 16 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + strh r1, [r2, 0x3C] + bx lr + .align 2, 0 +_080D3134: .4byte gUnknown_202063C + thumb_func_end sub_80D3120 + + thumb_func_start sub_80D3138 +sub_80D3138: @ 80D3138 + ldr r2, _080D3150 @ =gUnknown_202063C + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + bx lr + .align 2, 0 +_080D3150: .4byte gUnknown_202063C + thumb_func_end sub_80D3138 + + thumb_func_start sub_80D3154 +sub_80D3154: @ 80D3154 + ldr r2, _080D3168 @ =gUnknown_202063C + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0x3A + ldrsh r0, [r1, r2] + bx lr + .align 2, 0 +_080D3168: .4byte gUnknown_202063C + thumb_func_end sub_80D3154 + + thumb_func_start sub_80D316C +sub_80D316C: @ 80D316C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D319C @ =gUnknown_83FA4E8 + ldr r2, _080D31A0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D317E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D317E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D319C: .4byte gUnknown_83FA4E8 +_080D31A0: .4byte gUnknown_3005090 + thumb_func_end sub_80D316C + + thumb_func_start sub_80D31A4 +sub_80D31A4: @ 80D31A4 + push {r4-r6,lr} + adds r5, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + movs r3, 0 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0xC] + movs r0, 0x1 + strh r0, [r5, 0xE] + ldr r2, _080D3210 @ =gUnknown_2039A2C + ldr r1, [r2] + movs r0, 0x3F + strh r0, [r1, 0x2] + strh r3, [r1, 0x4] + movs r0, 0xA0 + strh r0, [r1, 0x8] + ldr r4, _080D3214 @ =gUnknown_2038E80 + adds r6, r2, 0 + movs r2, 0xF0 +_080D31D0: + lsls r1, r3, 1 + adds r1, r4 + ldr r0, [r6] + ldrh r0, [r0, 0x14] + strh r0, [r1] + adds r0, r3, 0 + adds r0, 0xA0 + lsls r0, 1 + adds r0, r4 + strh r2, [r0] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x9F + bls _080D31D0 + movs r0, 0x2 + bl sub_8000B68 + ldr r0, _080D3218 @ =sub_80D332C + bl sub_80006F4 + ldr r0, _080D321C @ =sub_80D33C0 + bl sub_8000700 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D3210: .4byte gUnknown_2039A2C +_080D3214: .4byte gUnknown_2038E80 +_080D3218: .4byte sub_80D332C +_080D321C: .4byte sub_80D33C0 + thumb_func_end sub_80D31A4 + + thumb_func_start sub_80D3220 +sub_80D3220: @ 80D3220 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r3, r0, 0 + ldr r2, _080D329C @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldrh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r3, 0xA] + adds r0, r1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + mov r8, r2 + cmp r0, 0xF0 + ble _080D324C + movs r0, 0xF0 + strh r0, [r3, 0xA] +_080D324C: + ldrh r4, [r3, 0xC] + movs r0, 0xC + ldrsh r1, [r3, r0] + ldr r0, _080D32A0 @ =0x00000fff + ldrh r2, [r3, 0xE] + cmp r1, r0 + bgt _080D325E + adds r0, r4, r2 + strh r0, [r3, 0xC] +_080D325E: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x7F + bgt _080D326A + lsls r0, r2, 1 + strh r0, [r3, 0xE] +_080D326A: + movs r5, 0 + ldr r7, _080D32A4 @ =gUnknown_2038700 + movs r1, 0xA0 + lsls r1, 1 + adds r1, r7 + mov r12, r1 + mov r6, r8 +_080D3278: + lsls r0, r5, 1 + adds r2, r0, r7 + mov r1, r12 + adds r4, r0, r1 + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _080D32A8 + ldr r1, [r6] + ldrh r0, [r3, 0xA] + ldrh r1, [r1, 0x14] + adds r0, r1 + strh r0, [r2] + ldrh r1, [r3, 0xA] + movs r0, 0xF0 + subs r0, r1 + b _080D32BA + .align 2, 0 +_080D329C: .4byte gUnknown_2039A2C +_080D32A0: .4byte 0x00000fff +_080D32A4: .4byte gUnknown_2038700 +_080D32A8: + ldr r0, [r6] + ldrh r0, [r0, 0x14] + ldrh r1, [r3, 0xA] + subs r0, r1 + strh r0, [r2] + ldrh r0, [r3, 0xA] + lsls r0, 8 + movs r1, 0xF1 + orrs r0, r1 +_080D32BA: + strh r0, [r4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x9F + bls _080D3278 + movs r1, 0xA + ldrsh r0, [r3, r1] + cmp r0, 0xEF + ble _080D32D4 + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_080D32D4: + mov r1, r8 + ldr r0, [r1] + ldrb r1, [r0] + adds r1, 0x1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D3220 + + thumb_func_start sub_80D32EC +sub_80D32EC: @ 80D32EC + push {lr} + ldr r1, _080D331C @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D3320 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D3324 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3E60 + ldr r0, _080D3328 @ =sub_80D316C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D331C: .4byte 0x040000b0 +_080D3320: .4byte 0x0000c5ff +_080D3324: .4byte 0x00007fff +_080D3328: .4byte sub_80D316C + thumb_func_end sub_80D32EC + + thumb_func_start sub_80D332C +sub_80D332C: @ 80D332C + push {r4,r5,lr} + ldr r5, _080D3398 @ =0x040000b0 + ldrh r1, [r5, 0xA] + ldr r0, _080D339C @ =0x0000c5ff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r1, [r5, 0xA] + ldr r0, _080D33A0 @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0xA] + bl sub_80D3DF4 + ldr r4, _080D33A4 @ =gUnknown_2039A2C + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _080D3382 + ldr r1, _080D33A8 @ =0x040000d4 + ldr r0, _080D33AC @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D33B0 @ =0x80000140 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D3382: + ldr r0, _080D33B4 @ =gUnknown_2038FC0 + str r0, [r5] + ldr r0, _080D33B8 @ =0x04000040 + str r0, [r5, 0x4] + ldr r0, _080D33BC @ =0xa2400001 + str r0, [r5, 0x8] + ldr r0, [r5, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3398: .4byte 0x040000b0 +_080D339C: .4byte 0x0000c5ff +_080D33A0: .4byte 0x00007fff +_080D33A4: .4byte gUnknown_2039A2C +_080D33A8: .4byte 0x040000d4 +_080D33AC: .4byte gUnknown_2038700 +_080D33B0: .4byte 0x80000140 +_080D33B4: .4byte gUnknown_2038FC0 +_080D33B8: .4byte 0x04000040 +_080D33BC: .4byte 0xa2400001 + thumb_func_end sub_80D332C + + thumb_func_start sub_80D33C0 +sub_80D33C0: @ 80D33C0 + ldr r1, _080D33E0 @ =gUnknown_2038700 + ldr r0, _080D33E4 @ =0x04000006 + ldrh r0, [r0] + lsls r0, 1 + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080D33E8 @ =0x04000014 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + adds r0, 0x4 + strh r1, [r0] + bx lr + .align 2, 0 +_080D33E0: .4byte gUnknown_2038700 +_080D33E4: .4byte 0x04000006 +_080D33E8: .4byte 0x04000014 + thumb_func_end sub_80D33C0 + + thumb_func_start sub_80D33EC +sub_80D33EC: @ 80D33EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D341C @ =gUnknown_83FA4F4 + ldr r2, _080D3420 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D33FE: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D33FE + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D341C: .4byte gUnknown_83FA4F4 +_080D3420: .4byte gUnknown_3005090 + thumb_func_end sub_80D33EC + + thumb_func_start sub_80D3424 +sub_80D3424: @ 80D3424 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + ldr r0, _080D348C @ =gUnknown_2039A2C + ldr r1, [r0] + movs r2, 0 + movs r0, 0xBF + strh r0, [r1, 0xE] + strh r2, [r1, 0x12] + movs r0, 0x1E + strh r0, [r1, 0x2] + movs r0, 0x3F + strh r0, [r1, 0x4] + movs r0, 0xA0 + strh r0, [r1, 0x8] + movs r1, 0 + ldr r2, _080D3490 @ =gUnknown_2038E80 + movs r4, 0 + movs r3, 0xF0 +_080D3450: + lsls r0, r1, 1 + adds r0, r2 + strh r4, [r0] + adds r0, r1, 0 + adds r0, 0xA0 + lsls r0, 1 + adds r0, r2 + strh r3, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x9F + bls _080D3450 + movs r0, 0x2 + bl sub_8000B68 + ldr r0, _080D3494 @ =sub_80D36E0 + bl sub_8000700 + ldr r0, _080D3498 @ =sub_80D35F4 + bl sub_80006F4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D348C: .4byte gUnknown_2039A2C +_080D3490: .4byte gUnknown_2038E80 +_080D3494: .4byte sub_80D36E0 +_080D3498: .4byte sub_80D35F4 + thumb_func_end sub_80D3424 + + thumb_func_start sub_80D349C +sub_80D349C: @ 80D349C + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + ldr r1, _080D3504 @ =gUnknown_83FA508 + mov r0, sp + movs r2, 0xC + bl memcpy + movs r5, 0 + movs r4, 0 +_080D34B0: + ldr r0, _080D3508 @ =sub_80D3720 + bl sub_800704C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080D350C @ =gUnknown_202063C + adds r2, r1, r0 + movs r0, 0xF0 + strh r0, [r2, 0x20] + strh r4, [r2, 0x22] + lsls r1, r5, 16 + asrs r1, 16 + lsls r0, r1, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r2, 0x38] + adds r1, 0x1 + lsls r1, 16 + lsls r0, r4, 16 + movs r3, 0xD8 + lsls r3, 13 + adds r0, r3 + lsrs r4, r0, 16 + lsrs r5, r1, 16 + asrs r1, 16 + cmp r1, 0x5 + ble _080D34B0 + ldrh r0, [r2, 0x3A] + adds r0, 0x1 + strh r0, [r2, 0x3A] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + movs r0, 0 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D3504: .4byte gUnknown_83FA508 +_080D3508: .4byte sub_80D3720 +_080D350C: .4byte gUnknown_202063C + thumb_func_end sub_80D349C + + thumb_func_start sub_80D3510 +sub_80D3510: @ 80D3510 + push {r4,lr} + adds r4, r0, 0 + ldr r2, _080D3544 @ =gUnknown_2039A2C + ldr r1, [r2] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r0, [r2] + movs r1, 0x20 + ldrsh r0, [r0, r1] + cmp r0, 0x5 + ble _080D353A + movs r0, 0x1 + negs r0, r0 + ldr r2, _080D3548 @ =0x00007fff + movs r1, 0x10 + bl sub_80714D4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D353A: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D3544: .4byte gUnknown_2039A2C +_080D3548: .4byte 0x00007fff + thumb_func_end sub_80D3510 + + thumb_func_start sub_80D354C +sub_80D354C: @ 80D354C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080D35A0 @ =gUnknown_2039A2C + ldr r0, [r5] + ldrb r1, [r0] + movs r4, 0 + strb r4, [r0] + ldr r1, _080D35A4 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D35A8 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D35AC @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + ldr r1, [r5] + movs r0, 0xF0 + strh r0, [r1, 0x6] + strh r4, [r1, 0x12] + movs r0, 0xFF + strh r0, [r1, 0xE] + movs r0, 0x3F + strh r0, [r1, 0x2] + strh r4, [r1, 0x20] + ldr r0, _080D35B0 @ =sub_80D3690 + bl sub_80006F4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D35A0: .4byte gUnknown_2039A2C +_080D35A4: .4byte 0x040000b0 +_080D35A8: .4byte 0x0000c5ff +_080D35AC: .4byte 0x00007fff +_080D35B0: .4byte sub_80D3690 + thumb_func_end sub_80D354C + + thumb_func_start sub_80D35B4 +sub_80D35B4: @ 80D35B4 + push {lr} + ldr r0, _080D35EC @ =gUnknown_2039A2C + ldr r1, [r0] + movs r2, 0xF0 + lsls r2, 1 + adds r0, r2, 0 + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + lsls r0, 16 + asrs r0, 24 + strh r0, [r1, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x10 + bls _080D35E6 + bl sub_80D3E60 + ldr r0, _080D35F0 @ =sub_80D33EC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D35E6: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D35EC: .4byte gUnknown_2039A2C +_080D35F0: .4byte sub_80D33EC + thumb_func_end sub_80D35B4 + + thumb_func_start sub_80D35F4 +sub_80D35F4: @ 80D35F4 + push {r4,r5,lr} + ldr r5, _080D3668 @ =0x040000b0 + ldrh r1, [r5, 0xA] + ldr r0, _080D366C @ =0x0000c5ff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r1, [r5, 0xA] + ldr r0, _080D3670 @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0xA] + bl sub_80D3DF4 + ldr r4, _080D3674 @ =gUnknown_2039A2C + ldr r0, [r4] + ldrh r1, [r0, 0xE] + movs r0, 0x50 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x6] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _080D3654 + ldr r1, _080D3678 @ =0x040000d4 + ldr r0, _080D367C @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D3680 @ =0x80000140 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D3654: + ldr r0, _080D3684 @ =gUnknown_2038FC0 + str r0, [r5] + ldr r0, _080D3688 @ =0x04000040 + str r0, [r5, 0x4] + ldr r0, _080D368C @ =0xa2400001 + str r0, [r5, 0x8] + ldr r0, [r5, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3668: .4byte 0x040000b0 +_080D366C: .4byte 0x0000c5ff +_080D3670: .4byte 0x00007fff +_080D3674: .4byte gUnknown_2039A2C +_080D3678: .4byte 0x040000d4 +_080D367C: .4byte gUnknown_2038700 +_080D3680: .4byte 0x80000140 +_080D3684: .4byte gUnknown_2038FC0 +_080D3688: .4byte 0x04000040 +_080D368C: .4byte 0xa2400001 + thumb_func_end sub_80D35F4 + + thumb_func_start sub_80D3690 +sub_80D3690: @ 80D3690 + push {r4,lr} + bl sub_80D3DF4 + ldr r4, _080D36DC @ =gUnknown_2039A2C + ldr r0, [r4] + ldrh r1, [r0, 0x12] + movs r0, 0x54 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0xE] + movs r0, 0x50 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x6] + movs r0, 0x40 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D36DC: .4byte gUnknown_2039A2C + thumb_func_end sub_80D3690 + + thumb_func_start sub_80D36E0 +sub_80D36E0: @ 80D36E0 + push {lr} + sub sp, 0x4 + mov r1, sp + ldr r0, _080D3714 @ =0x04000006 + ldrh r0, [r0] + strh r0, [r1] + mov r0, sp + ldrh r0, [r0] + cmp r0, 0xE3 + bne _080D36F8 + movs r0, 0 + strh r0, [r1] +_080D36F8: + ldr r2, _080D3718 @ =0x04000054 + ldr r1, _080D371C @ =gUnknown_2038700 + mov r0, sp + ldrh r0, [r0] + lsls r0, 1 + movs r3, 0xF0 + lsls r3, 3 + adds r1, r3 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080D3714: .4byte 0x04000006 +_080D3718: .4byte 0x04000054 +_080D371C: .4byte gUnknown_2038700 + thumb_func_end sub_80D36E0 + + thumb_func_start sub_80D3720 +sub_80D3720: @ 80D3720 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x38] + movs r2, 0x38 + ldrsh r0, [r3, r2] + cmp r0, 0 + beq _080D374C + subs r0, r1, 0x1 + strh r0, [r3, 0x38] + movs r1, 0x3A + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _080D380A + ldr r0, _080D3748 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, 0x1 + strb r0, [r1] + b _080D380A + .align 2, 0 +_080D3748: .4byte gUnknown_2039A2C +_080D374C: + movs r2, 0x22 + ldrsh r0, [r3, r2] + lsls r0, 1 + ldr r1, _080D3810 @ =gUnknown_2038700 + adds r7, r0, r1 + movs r2, 0xA0 + lsls r2, 1 + adds r1, r2 + adds r6, r0, r1 + movs r1, 0x3A + ldrsh r0, [r3, r1] + movs r5, 0x1B + cmp r0, 0 + beq _080D376A + movs r5, 0x19 +_080D376A: + movs r4, 0 + cmp r4, r5 + bcs _080D3790 +_080D3770: + lsls r1, r4, 1 + adds r2, r1, r7 + ldrh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2] + adds r1, r6 + ldrh r0, [r3, 0x20] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r5 + bcc _080D3770 +_080D3790: + movs r2, 0x20 + ldrsh r0, [r3, r2] + ldrh r2, [r3, 0x20] + cmp r0, 0 + bne _080D37AA + movs r0, 0x2E + ldrsh r1, [r3, r0] + movs r0, 0x80 + lsls r0, 5 + cmp r1, r0 + bne _080D37AA + movs r0, 0x1 + strh r0, [r3, 0x30] +_080D37AA: + adds r1, r2, 0 + subs r1, 0x18 + strh r1, [r3, 0x20] + ldrh r0, [r3, 0x2E] + adds r0, 0xC0 + strh r0, [r3, 0x2E] + lsls r1, 16 + cmp r1, 0 + bge _080D37C0 + movs r0, 0 + strh r0, [r3, 0x20] +_080D37C0: + movs r1, 0x2E + ldrsh r0, [r3, r1] + movs r1, 0x80 + lsls r1, 5 + cmp r0, r1 + ble _080D37CE + strh r1, [r3, 0x2E] +_080D37CE: + movs r2, 0x3A + ldrsh r0, [r3, r2] + cmp r0, 0 + beq _080D37E0 + ldr r0, _080D3814 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, 0x1 + strb r0, [r1] +_080D37E0: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _080D380A + movs r2, 0x3A + ldrsh r0, [r3, r2] + ldr r1, _080D3814 @ =gUnknown_2039A2C + cmp r0, 0 + beq _080D37FC + ldr r0, [r1] + movs r2, 0x20 + ldrsh r0, [r0, r2] + cmp r0, 0x4 + ble _080D380A +_080D37FC: + ldr r1, [r1] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + adds r0, r3, 0 + bl sub_8007280 +_080D380A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3810: .4byte gUnknown_2038700 +_080D3814: .4byte gUnknown_2039A2C + thumb_func_end sub_80D3720 + + thumb_func_start sub_80D3818 +sub_80D3818: @ 80D3818 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D3848 @ =gUnknown_83FA514 + ldr r2, _080D384C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D382A: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D382A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3848: .4byte gUnknown_83FA514 +_080D384C: .4byte gUnknown_3005090 + thumb_func_end sub_80D3818 + + thumb_func_start sub_80D3850 +sub_80D3850: @ 80D3850 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + add r0, sp, 0x4 + add r1, sp, 0x8 + bl sub_80D3E28 + ldr r0, _080D3898 @ =gUnknown_83FA140 + ldr r1, [sp, 0x8] + movs r2, 0x10 + bl CpuSet + mov r1, sp + movs r2, 0xF0 + lsls r2, 8 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, [sp, 0x4] + ldr r2, _080D389C @ =0x01000400 + mov r0, sp + bl CpuSet + ldr r0, _080D38A0 @ =gUnknown_83FA638 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D3898: .4byte gUnknown_83FA140 +_080D389C: .4byte 0x01000400 +_080D38A0: .4byte gUnknown_83FA638 + thumb_func_end sub_80D3850 + + thumb_func_start sub_80D38A4 +sub_80D38A4: @ 80D38A4 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D38E6 + mov r0, sp + bl sub_80D3E08 + movs r0, 0x3 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0xC + ldrsh r0, [r4, r1] + lsls r0, 5 + ldr r1, _080D38F8 @ =gUnknown_83FA140 + adds r0, r1 + ldr r1, [sp] + movs r2, 0x10 + bl CpuSet + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0xD + ble _080D38E6 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x10 + strh r0, [r4, 0xA] +_080D38E6: + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D38F8: .4byte gUnknown_83FA140 + thumb_func_end sub_80D38A4 + + thumb_func_start sub_80D38FC +sub_80D38FC: @ 80D38FC + push {lr} + ldrh r1, [r0, 0xA] + subs r1, 0x1 + strh r1, [r0, 0xA] + lsls r1, 16 + cmp r1, 0 + bne _080D391C + bl sub_80D3E60 + ldr r0, _080D3924 @ =sub_80D3818 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080D391C: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D3924: .4byte sub_80D3818 + thumb_func_end sub_80D38FC + + thumb_func_start sub_80D3928 +sub_80D3928: @ 80D3928 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D3958 @ =gUnknown_83FA520 + ldr r2, _080D395C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D393A: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D393A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3958: .4byte gUnknown_83FA520 +_080D395C: .4byte gUnknown_3005090 + thumb_func_end sub_80D3928 + + thumb_func_start sub_80D3960 +sub_80D3960: @ 80D3960 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80D3DD0 + bl sub_8087EA4 + ldr r0, _080D39B8 @ =gUnknown_2039A2C + ldr r1, [r0] + movs r2, 0 + movs r0, 0x3F + strh r0, [r1, 0x2] + strh r2, [r1, 0x4] + movs r0, 0xA0 + strh r0, [r1, 0x8] + movs r1, 0 + ldr r2, _080D39BC @ =gUnknown_2038700 + movs r3, 0xF0 + adds r4, r2, 0 +_080D3984: + lsls r0, r1, 1 + adds r0, r2 + strh r3, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x9F + bls _080D3984 + movs r0, 0xF0 + lsls r0, 3 + adds r1, r4, r0 + adds r0, r4, 0 + movs r2, 0xA0 + bl CpuSet + ldr r0, _080D39C0 @ =sub_80D3BA4 + bl sub_80006F4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D39B8: .4byte gUnknown_2039A2C +_080D39BC: .4byte gUnknown_2038700 +_080D39C0: .4byte sub_80D3BA4 + thumb_func_end sub_80D3960 + + thumb_func_start sub_80D39C4 +sub_80D39C4: @ 80D39C4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + mov r8, r0 + ldr r0, _080D3A38 @ =gUnknown_2039A2C + ldr r0, [r0] + adds r0, 0x24 + ldr r6, _080D3A3C @ =gUnknown_83FA534 + mov r2, r8 + movs r3, 0xA + ldrsh r1, [r2, r3] + lsls r4, r1, 2 + adds r4, r1 + lsls r4, 1 + adds r1, r4, r6 + movs r5, 0 + ldrsh r1, [r1, r5] + adds r2, r6, 0x2 + adds r2, r4, r2 + movs r3, 0 + ldrsh r2, [r2, r3] + adds r3, r6, 0x4 + adds r3, r4, r3 + movs r5, 0 + ldrsh r3, [r3, r5] + adds r5, r6, 0x6 + adds r4, r5 + movs r5, 0 + ldrsh r4, [r4, r5] + str r4, [sp] + movs r4, 0x1 + str r4, [sp, 0x4] + str r4, [sp, 0x8] + bl sub_80D4088 + mov r0, r8 + movs r2, 0xA + ldrsh r1, [r0, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r6, 0x8 + adds r0, r6 + ldrh r0, [r0] + mov r3, r8 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + movs r0, 0x1 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D3A38: .4byte gUnknown_2039A2C +_080D3A3C: .4byte gUnknown_83FA534 + thumb_func_end sub_80D39C4 + + thumb_func_start sub_80D3A40 +sub_80D3A40: @ 80D3A40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + ldr r0, _080D3A90 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + mov r8, r0 + movs r7, 0 + ldr r0, _080D3A94 @ =gUnknown_2038700 + mov r9, r0 +_080D3A5C: + ldr r1, _080D3A94 @ =gUnknown_2038700 + ldr r0, _080D3A90 @ =gUnknown_2039A2C + ldr r2, [r0] + movs r3, 0x2A + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsrs r3, r0, 8 + movs r5, 0xFF + ands r5, r0 + movs r4, 0xC + ldrsh r0, [r6, r4] + cmp r0, 0 + bne _080D3A98 + movs r1, 0x28 + ldrsh r0, [r2, r1] + cmp r3, r0 + bge _080D3A84 + ldrh r3, [r2, 0x28] +_080D3A84: + lsls r0, r3, 16 + lsls r1, r5, 16 + cmp r0, r1 + ble _080D3AB0 + lsrs r3, r1, 16 + b _080D3AB0 + .align 2, 0 +_080D3A90: .4byte gUnknown_2039A2C +_080D3A94: .4byte gUnknown_2038700 +_080D3A98: + lsls r0, r5, 16 + asrs r0, 16 + movs r4, 0x28 + ldrsh r1, [r2, r4] + cmp r0, r1 + ble _080D3AA6 + ldrh r5, [r2, 0x28] +_080D3AA6: + lsls r0, r5, 16 + lsls r1, r3, 16 + cmp r0, r1 + bgt _080D3AB0 + lsrs r5, r1, 16 +_080D3AB0: + ldr r0, _080D3AD4 @ =gUnknown_2039A2C + ldr r4, [r0] + movs r0, 0x2A + ldrsh r2, [r4, r0] + lsls r2, 1 + add r2, r9 + lsls r1, r3, 16 + asrs r1, 8 + lsls r0, r5, 16 + asrs r0, 16 + orrs r0, r1 + strh r0, [r2] + cmp r7, 0 + beq _080D3AD8 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080D3AFC + .align 2, 0 +_080D3AD4: .4byte gUnknown_2039A2C +_080D3AD8: + adds r0, r4, 0 + adds r0, 0x24 + movs r1, 0x1 + movs r2, 0x1 + bl sub_80D4104 + lsls r0, 24 + lsrs r7, r0, 24 + mov r1, r8 + lsls r0, r1, 16 + movs r3, 0x80 + lsls r3, 9 + adds r0, r3 + lsrs r4, r0, 16 + mov r8, r4 + asrs r0, 16 + cmp r0, 0xF + ble _080D3A5C +_080D3AFC: + ldr r0, _080D3B18 @ =gUnknown_2039A2C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D3B18: .4byte gUnknown_2039A2C + thumb_func_end sub_80D3A40 + + thumb_func_start sub_80D3B1C +sub_80D3B1C: @ 80D3B1C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080D3B68 + ldr r1, _080D3B58 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _080D3B5C @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _080D3B60 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bl sub_80D3E60 + ldr r0, _080D3B64 @ =sub_80D3928 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + b _080D3B80 + .align 2, 0 +_080D3B58: .4byte 0x040000b0 +_080D3B5C: .4byte 0x0000c5ff +_080D3B60: .4byte 0x00007fff +_080D3B64: .4byte sub_80D3928 +_080D3B68: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + ldr r1, _080D3B84 @ =gUnknown_83FA57A + movs r3, 0xA + ldrsh r0, [r2, r3] + subs r0, 0x1 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2, 0xE] + movs r0, 0x1 +_080D3B80: + pop {r1} + bx r1 + .align 2, 0 +_080D3B84: .4byte gUnknown_83FA57A + thumb_func_end sub_80D3B1C + + thumb_func_start sub_80D3B88 +sub_80D3B88: @ 80D3B88 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0xE] + subs r0, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + cmp r0, 0 + beq _080D3B9C + movs r0, 0 + b _080D3BA0 +_080D3B9C: + movs r0, 0x1 + strh r0, [r1, 0x8] +_080D3BA0: + pop {r1} + bx r1 + thumb_func_end sub_80D3B88 + + thumb_func_start sub_80D3BA4 +sub_80D3BA4: @ 80D3BA4 + push {r4,r5,lr} + ldr r5, _080D3C1C @ =0x040000b0 + ldrh r1, [r5, 0xA] + ldr r0, _080D3C20 @ =0x0000c5ff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r1, [r5, 0xA] + ldr r0, _080D3C24 @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0xA] + bl sub_80D3DF4 + ldr r4, _080D3C28 @ =gUnknown_2039A2C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _080D3BDC + ldr r1, _080D3C2C @ =0x040000d4 + ldr r0, _080D3C30 @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _080D3C34 @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_080D3BDC: + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x44 + bl sub_8000A38 + ldr r4, _080D3C30 @ =gUnknown_2038700 + movs r0, 0xF0 + lsls r0, 3 + adds r4, r0 + ldrh r1, [r4] + movs r0, 0x40 + bl sub_8000A38 + str r4, [r5] + ldr r0, _080D3C38 @ =0x04000040 + str r0, [r5, 0x4] + ldr r0, _080D3C3C @ =0xa2400001 + str r0, [r5, 0x8] + ldr r0, [r5, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3C1C: .4byte 0x040000b0 +_080D3C20: .4byte 0x0000c5ff +_080D3C24: .4byte 0x00007fff +_080D3C28: .4byte gUnknown_2039A2C +_080D3C2C: .4byte 0x040000d4 +_080D3C30: .4byte gUnknown_2038700 +_080D3C34: .4byte 0x800000a0 +_080D3C38: .4byte 0x04000040 +_080D3C3C: .4byte 0xa2400001 + thumb_func_end sub_80D3BA4 + + thumb_func_start sub_80D3C40 +sub_80D3C40: @ 80D3C40 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + mov r8, r0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r3, [sp, 0x18] + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + lsls r3, 16 + lsrs r3, 16 + ldr r0, _080D3C9C @ =sub_80D3CC4 + movs r1, 0x3 + str r3, [sp] + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D3CA0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + mov r0, r8 + strh r0, [r1, 0xA] + strh r4, [r1, 0xC] + strh r5, [r1, 0xE] + strh r6, [r1, 0x10] + ldr r3, [sp] + strh r3, [r1, 0x12] + strh r0, [r1, 0x14] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D3C9C: .4byte sub_80D3CC4 +_080D3CA0: .4byte gUnknown_3005090 + thumb_func_end sub_80D3C40 + + thumb_func_start sub_80D3CA4 +sub_80D3CA4: @ 80D3CA4 + push {lr} + ldr r0, _080D3CB8 @ =sub_80D3CC4 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080D3CBC + movs r0, 0 + b _080D3CBE + .align 2, 0 +_080D3CB8: .4byte sub_80D3CC4 +_080D3CBC: + movs r0, 0x1 +_080D3CBE: + pop {r1} + bx r1 + thumb_func_end sub_80D3CA4 + + thumb_func_start sub_80D3CC4 +sub_80D3CC4: @ 80D3CC4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080D3CF4 @ =gUnknown_83FA588 + ldr r2, _080D3CF8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080D3CD6: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080D3CD6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3CF4: .4byte gUnknown_83FA588 +_080D3CF8: .4byte gUnknown_3005090 + thumb_func_end sub_80D3CC4 + + thumb_func_start sub_80D3CFC +sub_80D3CFC: @ 80D3CFC + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x14] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080D3D14 + subs r0, r1, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bne _080D3D38 +_080D3D14: + ldrh r0, [r4, 0xA] + strh r0, [r4, 0x14] + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x16] + adds r0, r1 + strh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080D3D2C + movs r0, 0x10 + strh r0, [r4, 0x16] +_080D3D2C: + movs r0, 0x1 + negs r0, r0 + ldrb r1, [r4, 0x16] + ldr r2, _080D3D54 @ =0x00002d6b + bl sub_80714D4 +_080D3D38: + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0xF + ble _080D3D4A + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xC] + strh r0, [r4, 0x14] +_080D3D4A: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D3D54: .4byte 0x00002d6b + thumb_func_end sub_80D3CFC + + thumb_func_start sub_80D3D58 +sub_80D3D58: @ 80D3D58 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x14] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080D3D70 + subs r0, r1, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bne _080D3D92 +_080D3D70: + ldrh r0, [r4, 0xC] + strh r0, [r4, 0x14] + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x16] + lsls r0, 16 + cmp r0, 0 + bge _080D3D86 + movs r0, 0 + strh r0, [r4, 0x16] +_080D3D86: + movs r0, 0x1 + negs r0, r0 + ldrb r1, [r4, 0x16] + ldr r2, _080D3DB8 @ =0x00002d6b + bl sub_80714D4 +_080D3D92: + movs r0, 0x16 + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _080D3DC6 + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080D3DC0 + ldr r0, _080D3DBC @ =sub_80D3CC4 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + b _080D3DC6 + .align 2, 0 +_080D3DB8: .4byte 0x00002d6b +_080D3DBC: .4byte sub_80D3CC4 +_080D3DC0: + ldrh r0, [r4, 0xA] + strh r0, [r4, 0x14] + strh r1, [r4, 0x8] +_080D3DC6: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D3D58 + + thumb_func_start sub_80D3DD0 +sub_80D3DD0: @ 80D3DD0 + push {r4,lr} + ldr r4, _080D3DF0 @ =gUnknown_2039A2C + ldr r0, [r4] + movs r1, 0 + movs r2, 0x3C + bl memset + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x14 + adds r1, 0x16 + bl sub_805A658 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D3DF0: .4byte gUnknown_2039A2C + thumb_func_end sub_80D3DD0 + + thumb_func_start sub_80D3DF4 +sub_80D3DF4: @ 80D3DF4 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80D3DF4 + + thumb_func_start sub_80D3E08 +sub_80D3E08: @ 80D3E08 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x8 + bl sub_8000AC4 + lsls r0, 16 + lsrs r0, 18 + lsls r0, 30 + lsrs r0, 16 + movs r1, 0xC0 + lsls r1, 19 + adds r0, r1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D3E08 + + thumb_func_start sub_80D3E28 +sub_80D3E28: @ 80D3E28 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0x8 + bl sub_8000AC4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 24 + movs r0, 0x1F + ands r4, r0 + movs r0, 0x8 + bl sub_8000AC4 + lsls r0, 16 + lsrs r0, 18 + lsls r4, 11 + lsls r0, 30 + lsrs r0, 16 + movs r1, 0xC0 + lsls r1, 19 + adds r4, r1 + str r4, [r5] + adds r0, r1 + str r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D3E28 + + thumb_func_start sub_80D3E60 +sub_80D3E60: @ 80D3E60 + push {lr} + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + pop {r0} + bx r0 + thumb_func_end sub_80D3E60 + + thumb_func_start sub_80D3E74 +sub_80D3E74: @ 80D3E74 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r10, r0 + ldr r0, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r4, 16 + movs r6, 0 + lsrs r5, r4, 16 + cmp r4, 0 + ble _080D3EDC + lsls r0, r7, 16 + asrs r0, 16 + mov r9, r0 + lsls r1, 16 + mov r8, r1 + lsls r0, r3, 16 + asrs r7, r0, 16 +_080D3EAC: + lsls r4, r2, 16 + asrs r4, 16 + movs r0, 0xFF + ands r0, r4 + mov r2, r8 + asrs r1, r2, 16 + bl sub_8044E30 + lsls r1, r6, 1 + add r1, r10 + add r0, r9 + strh r0, [r1] + lsls r1, r5, 16 + ldr r0, _080D3EEC @ =0xffff0000 + adds r1, r0 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, r7 + lsls r4, 16 + lsrs r2, r4, 16 + lsrs r5, r1, 16 + cmp r1, 0 + bgt _080D3EAC +_080D3EDC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3EEC: .4byte 0xffff0000 + thumb_func_end sub_80D3E74 + + thumb_func_start sub_80D3EF0 +sub_80D3EF0: @ 80D3EF0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r9, r0 + adds r5, r2, 0 + adds r4, r3, 0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + lsrs r4, 16 + movs r2, 0xA0 + lsls r2, 1 + movs r1, 0xA + bl memset + movs r1, 0 + lsls r4, 16 + asrs r4, 16 + str r4, [sp, 0x4] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x8] +_080D3F28: + lsls r5, r1, 16 + asrs r0, r5, 16 + mov r10, r0 + ldr r1, [sp, 0x4] + bl sub_8044E30 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r10 + ldr r1, [sp, 0x4] + bl sub_8044E4C + ldr r2, [sp] + lsls r1, r2, 16 + asrs r1, 16 + lsls r4, 16 + asrs r4, 16 + subs r2, r1, r4 + lsls r2, 16 + adds r1, r4 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r0, 16 + asrs r0, 16 + ldr r3, [sp, 0x8] + subs r1, r3, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r0, r3, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsrs r1, r2, 16 + str r5, [sp, 0x10] + cmp r2, 0 + bge _080D3F74 + movs r1, 0 +_080D3F74: + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, 0xF0 + ble _080D3F7E + movs r6, 0xF0 +_080D3F7E: + lsls r0, r7, 16 + cmp r0, 0 + bge _080D3F86 + movs r7, 0 +_080D3F86: + mov r2, r8 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080D3F94 + movs r3, 0x9F + mov r8, r3 +_080D3F94: + lsls r0, r1, 24 + lsrs r0, 16 + orrs r6, r0 + lsls r0, r7, 16 + asrs r0, 16 + str r0, [sp, 0xC] + lsls r0, 1 + add r0, r9 + strh r6, [r0] + mov r0, r8 + lsls r4, r0, 16 + asrs r0, r4, 15 + add r0, r9 + strh r6, [r0] + mov r0, r10 + adds r0, 0x1 + lsls r0, 16 + asrs r0, 16 + ldr r1, [sp, 0x4] + bl sub_8044E4C + lsls r0, 16 + asrs r0, 16 + ldr r2, [sp, 0x8] + subs r1, r2, r0 + lsls r1, 16 + adds r0, r2, r0 + lsls r0, 16 + lsrs r2, r0, 16 + lsrs r3, r1, 16 + cmp r1, 0 + bge _080D3FD6 + movs r3, 0 +_080D3FD6: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080D3FE0 + movs r2, 0x9F +_080D3FE0: + lsls r0, r3, 16 + asrs r1, r0, 16 + adds r3, r0, 0 + lsls r5, r2, 16 + ldr r0, [sp, 0xC] + cmp r0, r1 + ble _080D4004 + adds r2, r1, 0 +_080D3FF0: + lsls r1, r7, 16 + ldr r0, _080D4084 @ =0xffff0000 + adds r1, r0 + asrs r0, r1, 15 + add r0, r9 + strh r6, [r0] + lsrs r7, r1, 16 + asrs r1, 16 + cmp r1, r2 + bgt _080D3FF0 +_080D4004: + lsls r1, r7, 16 + asrs r0, r3, 16 + cmp r1, r3 + bge _080D4022 + adds r2, r0, 0 +_080D400E: + movs r3, 0x80 + lsls r3, 9 + adds r0, r1, r3 + asrs r1, r0, 15 + add r1, r9 + strh r6, [r1] + adds r1, r0, 0 + asrs r0, r1, 16 + cmp r0, r2 + blt _080D400E +_080D4022: + asrs r0, r5, 16 + cmp r4, r5 + ble _080D4040 + adds r1, r0, 0 +_080D402A: + ldr r2, _080D4084 @ =0xffff0000 + adds r0, r4, r2 + lsrs r3, r0, 16 + mov r8, r3 + asrs r0, 15 + add r0, r9 + strh r6, [r0] + lsls r4, r3, 16 + asrs r0, r4, 16 + cmp r0, r1 + bgt _080D402A +_080D4040: + mov r0, r8 + lsls r4, r0, 16 + asrs r0, r5, 16 + cmp r4, r5 + bge _080D4060 + adds r2, r0, 0 +_080D404C: + movs r1, 0x80 + lsls r1, 9 + adds r0, r4, r1 + asrs r1, r0, 15 + add r1, r9 + strh r6, [r1] + adds r4, r0, 0 + asrs r0, r4, 16 + cmp r0, r2 + blt _080D404C +_080D4060: + ldr r2, [sp, 0x10] + movs r3, 0x80 + lsls r3, 9 + adds r0, r2, r3 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x3F + bgt _080D4072 + b _080D3F28 +_080D4072: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D4084: .4byte 0xffff0000 + thumb_func_end sub_80D3EF0 + + thumb_func_start sub_80D4088 +sub_80D4088: @ 80D4088 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, [sp, 0x14] + ldr r5, [sp, 0x18] + ldr r4, [sp, 0x1C] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r0, 16 + adds r7, r0, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + lsrs r4, 16 + strh r1, [r6] + strh r2, [r6, 0x2] + strh r1, [r6, 0x4] + strh r2, [r6, 0x6] + strh r3, [r6, 0x8] + strh r7, [r6, 0xA] + strh r5, [r6, 0xC] + strh r4, [r6, 0xE] + lsls r3, 16 + asrs r3, 16 + lsls r1, 16 + asrs r1, 16 + subs r3, r1 + strh r3, [r6, 0x10] + lsls r0, r3, 16 + cmp r0, 0 + bge _080D40DA + negs r0, r3 + strh r0, [r6, 0x10] + lsls r0, r5, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r6, 0xC] +_080D40DA: + lsls r0, r7, 16 + asrs r0, 16 + lsls r1, r2, 16 + asrs r1, 16 + subs r1, r0, r1 + strh r1, [r6, 0x12] + lsls r0, r1, 16 + cmp r0, 0 + bge _080D40F8 + negs r0, r1 + strh r0, [r6, 0x12] + lsls r0, r4, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r6, 0xE] +_080D40F8: + movs r0, 0 + strh r0, [r6, 0x14] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D4088 + + thumb_func_start sub_80D4104 +sub_80D4104: @ 80D4104 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r3, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + ldrh r0, [r3, 0x10] + mov r8, r0 + movs r1, 0x10 + ldrsh r6, [r3, r1] + ldrh r2, [r3, 0x12] + mov r12, r2 + movs r4, 0x12 + ldrsh r5, [r3, r4] + cmp r6, r5 + ble _080D4154 + ldrh r0, [r3, 0xC] + ldrh r2, [r3, 0x4] + adds r1, r0, r2 + strh r1, [r3, 0x4] + ldrh r2, [r3, 0x14] + add r2, r12 + strh r2, [r3, 0x14] + lsls r1, r2, 16 + asrs r1, 16 + adds r4, r0, 0 + ldrh r7, [r3, 0xE] + cmp r1, r6 + ble _080D417A + ldrh r1, [r3, 0x6] + adds r0, r7, r1 + strh r0, [r3, 0x6] + mov r1, r8 + b _080D4176 +_080D4154: + ldrh r0, [r3, 0xE] + ldrh r2, [r3, 0x6] + adds r1, r0, r2 + strh r1, [r3, 0x6] + ldrh r2, [r3, 0x14] + add r2, r8 + strh r2, [r3, 0x14] + lsls r1, r2, 16 + asrs r1, 16 + ldrh r4, [r3, 0xC] + adds r7, r0, 0 + cmp r1, r5 + ble _080D417A + ldrh r1, [r3, 0x4] + adds r0, r4, r1 + strh r0, [r3, 0x4] + mov r1, r12 +_080D4176: + subs r0, r2, r1 + strh r0, [r3, 0x14] +_080D417A: + movs r5, 0 + lsls r0, r4, 16 + asrs r2, r0, 16 + cmp r2, 0 + ble _080D4192 + movs r4, 0x4 + ldrsh r1, [r3, r4] + movs r4, 0x8 + ldrsh r0, [r3, r4] + ldrh r4, [r3, 0x8] + cmp r1, r0 + bge _080D41A4 +_080D4192: + cmp r2, 0 + bge _080D41B2 + movs r0, 0x4 + ldrsh r1, [r3, r0] + movs r2, 0x8 + ldrsh r0, [r3, r2] + ldrh r4, [r3, 0x8] + cmp r1, r0 + bgt _080D41B2 +_080D41A4: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r9 + cmp r0, 0 + beq _080D41B2 + strh r4, [r3, 0x4] +_080D41B2: + lsls r0, r7, 16 + asrs r2, r0, 16 + cmp r2, 0 + ble _080D41C8 + movs r4, 0x6 + ldrsh r1, [r3, r4] + movs r4, 0xA + ldrsh r0, [r3, r4] + ldrh r4, [r3, 0xA] + cmp r1, r0 + bge _080D41DA +_080D41C8: + cmp r2, 0 + bge _080D41E8 + movs r0, 0x6 + ldrsh r1, [r3, r0] + movs r2, 0xA + ldrsh r0, [r3, r2] + ldrh r4, [r3, 0xA] + cmp r1, r0 + bgt _080D41E8 +_080D41DA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r10 + cmp r0, 0 + beq _080D41E8 + strh r4, [r3, 0x6] +_080D41E8: + cmp r5, 0x2 + beq _080D41F0 + movs r0, 0 + b _080D41F2 +_080D41F0: + movs r0, 0x1 +_080D41F2: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D4104 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_util.s b/asm/battle_util.s new file mode 100644 index 000000000..89255c1e5 --- /dev/null +++ b/asm/battle_util.s @@ -0,0 +1,12796 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8016E24 +sub_8016E24: @ 8016E24 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + cmp r0, 0xC + bhi _08016EC2 + lsls r0, 2 + ldr r1, _08016E3C @ =_08016E40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08016E3C: .4byte _08016E40 + .align 2, 0 +_08016E40: + .4byte _08016E74 + .4byte _08016E80 + .4byte _08016E8C + .4byte _08016EA8 + .4byte _08016EC2 + .4byte _08016EA8 + .4byte _08016EC2 + .4byte _08016E98 + .4byte _08016EC2 + .4byte _08016EC2 + .4byte _08016E9C + .4byte _08016EB4 + .4byte _08016EB8 +_08016E74: + ldr r0, _08016E7C @ =gUnknown_2023D6C + ldrb r2, [r0] + b _08016EC2 + .align 2, 0 +_08016E7C: .4byte gUnknown_2023D6C +_08016E80: + ldr r0, _08016E88 @ =gUnknown_2023D6B + ldrb r2, [r0] + b _08016EC2 + .align 2, 0 +_08016E88: .4byte gUnknown_2023D6B +_08016E8C: + ldr r0, _08016E94 @ =gUnknown_2023D6E + ldrb r2, [r0] + b _08016EC2 + .align 2, 0 +_08016E94: .4byte gUnknown_2023D6E +_08016E98: + movs r2, 0 + b _08016EC2 +_08016E9C: + ldr r0, _08016EA4 @ =gUnknown_2023FC4 + ldrb r2, [r0, 0x17] + b _08016EC2 + .align 2, 0 +_08016EA4: .4byte gUnknown_2023FC4 +_08016EA8: + ldr r0, _08016EB0 @ =gUnknown_2023D6D + ldrb r2, [r0] + b _08016EC2 + .align 2, 0 +_08016EB0: .4byte gUnknown_2023D6D +_08016EB4: + movs r0, 0 + b _08016EBA +_08016EB8: + movs r0, 0x1 +_08016EBA: + bl sub_80751E8 + lsls r0, 24 + lsrs r2, r0, 24 +_08016EC2: + adds r0, r2, 0 + pop {r1} + bx r1 + thumb_func_end sub_8016E24 + + thumb_func_start sub_8016EC8 +sub_8016EC8: @ 8016EC8 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r1, _08016EF8 @ =gUnknown_2023BE4 + movs r4, 0x58 + muls r0, r4 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + mov r12, r1 + cmp r0, 0x2E + bne _08016F7A + movs r3, 0 + adds r0, r5, 0 + muls r0, r4 + adds r1, 0xC + adds r1, r0, r1 + b _08016F04 + .align 2, 0 +_08016EF8: .4byte gUnknown_2023BE4 +_08016EFC: + adds r1, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + bgt _08016F0A +_08016F04: + ldrh r0, [r1] + cmp r0, r2 + bne _08016EFC +_08016F0A: + cmp r3, 0x4 + beq _08016F7A + movs r7, 0x58 + adds r2, r5, 0 + muls r2, r7 + adds r0, r3, r2 + mov r6, r12 + adds r6, 0x24 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, 0 + beq _08016F26 + subs r0, 0x1 + strb r0, [r1] +_08016F26: + mov r0, r12 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08016F7A + ldr r1, _08016F84 @ =gUnknown_2023E0C + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _08016F88 @ =gUnknown_825E45C + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08016F7A + ldr r4, _08016F8C @ =gUnknown_2023BC4 + strb r5, [r4] + adds r1, r3, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + muls r0, r7 + adds r0, r6 + adds r0, r3 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_08016F7A: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08016F84: .4byte gUnknown_2023E0C +_08016F88: .4byte gUnknown_825E45C +_08016F8C: .4byte gUnknown_2023BC4 + thumb_func_end sub_8016EC8 + + thumb_func_start sub_8016F90 +sub_8016F90: @ 8016F90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x4 + mov r8, r0 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r4, 0 + ldr r0, _080170B0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bge _08017038 + ldr r1, _080170B4 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r7, r5, 0 + muls r7, r0 + adds r1, 0xC + mov r10, r1 +_08016FC6: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + adds r6, r4, 0x1 + cmp r9, r0 + beq _0801702E + ldr r0, _080170B4 @ =gUnknown_2023BE4 + movs r3, 0x58 + adds r1, r4, 0 + muls r1, r3 + adds r1, r0 + adds r1, 0x20 + ldrb r1, [r1] + adds r4, r0, 0 + cmp r1, 0x2E + bne _0801702E + movs r2, 0 + adds r0, r5, 0 + muls r0, r3 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + movs r1, 0x8F + lsls r1, 1 + cmp r0, r1 + beq _08017016 + adds r3, r1, 0 + mov r0, r10 + adds r1, r7, r0 +_08017008: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + bgt _08017016 + ldrh r0, [r1] + cmp r0, r3 + bne _08017008 +_08017016: + cmp r2, 0x4 + beq _0801702E + mov r8, r2 + adds r1, r2, r7 + adds r0, r4, 0 + adds r0, 0x24 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0801702E + subs r0, 0x1 + strb r0, [r1] +_0801702E: + adds r4, r6, 0 + ldr r0, _080170B0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _08016FC6 +_08017038: + mov r1, r8 + cmp r1, 0x4 + beq _080170A0 + ldr r6, _080170B4 @ =gUnknown_2023BE4 + movs r3, 0x58 + adds r0, r5, 0 + muls r0, r3 + adds r1, r6, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _080170A0 + ldr r1, _080170B8 @ =gUnknown_2023E0C + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _080170BC @ =gUnknown_825E45C + mov r4, r8 + lsls r0, r4, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080170A0 + ldr r4, _080170C0 @ =gUnknown_2023BC4 + strb r5, [r4] + mov r1, r8 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + muls r0, r3 + adds r2, r6, 0 + adds r2, 0x24 + adds r0, r2 + add r0, r8 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_080170A0: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080170B0: .4byte gUnknown_2023BCC +_080170B4: .4byte gUnknown_2023BE4 +_080170B8: .4byte gUnknown_2023E0C +_080170BC: .4byte gUnknown_825E45C +_080170C0: .4byte gUnknown_2023BC4 + thumb_func_end sub_8016F90 + + thumb_func_start sub_80170C4 +sub_80170C4: @ 80170C4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r3, r0, 24 + movs r6, 0x4 + movs r1, 0 + ldr r0, _080171BC @ =gUnknown_2023BCC + mov r8, r0 + ldrb r0, [r0] + cmp r1, r0 + bge _08017146 + ldr r7, _080171C0 @ =gUnknown_2023BE4 + movs r2, 0x58 + mov r12, r2 + mov r5, r12 + muls r5, r3 + adds r0, r7, 0 + adds r0, 0xC + adds r2, r5, r0 + mov r10, r2 + mov r9, r5 +_080170F6: + mov r0, r12 + muls r0, r1 + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r1, 0x1 + cmp r0, 0x2E + bne _0801713C + cmp r1, r3 + beq _0801713C + movs r2, 0 + mov r1, r10 + ldrh r0, [r1] + cmp r0, 0xC3 + beq _08017126 + ldr r1, _080171C4 @ =gUnknown_2023BF0 + add r1, r9 +_08017118: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + bgt _08017126 + ldrh r0, [r1] + cmp r0, 0xC3 + bne _08017118 +_08017126: + cmp r2, 0x4 + beq _0801713C + adds r6, r2, 0 + adds r0, r6, r5 + ldr r2, _080171C8 @ =gUnknown_2023C08 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _0801713C + subs r0, 0x1 + strb r0, [r1] +_0801713C: + adds r1, r4, 0 + mov r0, r8 + ldrb r0, [r0] + cmp r1, r0 + blt _080170F6 +_08017146: + cmp r6, 0x4 + beq _080171AA + ldr r7, _080171C0 @ =gUnknown_2023BE4 + movs r5, 0x58 + adds r0, r3, 0 + muls r0, r5 + adds r1, r7, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _080171AA + ldr r1, _080171CC @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _080171D0 @ =gUnknown_825E45C + lsls r0, r6, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080171AA + ldr r4, _080171D4 @ =gUnknown_2023BC4 + strb r3, [r4] + adds r1, r6, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + muls r0, r5 + adds r2, r7, 0 + adds r2, 0x24 + adds r0, r2 + adds r0, r6 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_080171AA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080171BC: .4byte gUnknown_2023BCC +_080171C0: .4byte gUnknown_2023BE4 +_080171C4: .4byte gUnknown_2023BF0 +_080171C8: .4byte gUnknown_2023C08 +_080171CC: .4byte gUnknown_2023E0C +_080171D0: .4byte gUnknown_825E45C +_080171D4: .4byte gUnknown_2023BC4 + thumb_func_end sub_80170C4 + + thumb_func_start sub_80171D8 +sub_80171D8: @ 80171D8 + push {r4,r5,lr} + ldr r0, _08017208 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08017218 + movs r2, 0 + ldr r4, _0801720C @ =gUnknown_2023BCC + ldrb r0, [r4] + cmp r2, r0 + bge _08017236 + ldr r3, _08017210 @ =gUnknown_2023BC8 + ldr r5, _08017214 @ =gUnknown_825E45C +_080171F4: + ldm r5!, {r1} + lsls r1, 28 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r2, 0x1 + ldrb r0, [r4] + cmp r2, r0 + blt _080171F4 + b _08017236 + .align 2, 0 +_08017208: .4byte gUnknown_2022B4C +_0801720C: .4byte gUnknown_2023BCC +_08017210: .4byte gUnknown_2023BC8 +_08017214: .4byte gUnknown_825E45C +_08017218: + movs r2, 0 + ldr r4, _0801723C @ =gUnknown_2023BCC + ldrb r0, [r4] + cmp r2, r0 + bge _08017236 + ldr r3, _08017240 @ =gUnknown_2023BC8 + ldr r5, _08017244 @ =gUnknown_825E45C +_08017226: + ldr r0, [r3] + ldm r5!, {r1} + orrs r0, r1 + str r0, [r3] + adds r2, 0x1 + ldrb r0, [r4] + cmp r2, r0 + blt _08017226 +_08017236: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801723C: .4byte gUnknown_2023BCC +_08017240: .4byte gUnknown_2023BC8 +_08017244: .4byte gUnknown_825E45C + thumb_func_end sub_80171D8 + + thumb_func_start sub_8017248 +sub_8017248: @ 8017248 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _08017270 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801727C + ldr r2, _08017274 @ =gUnknown_2023BC8 + ldr r1, _08017278 @ =gUnknown_825E45C + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + b _0801728C + .align 2, 0 +_08017270: .4byte gUnknown_2022B4C +_08017274: .4byte gUnknown_2023BC8 +_08017278: .4byte gUnknown_825E45C +_0801727C: + ldr r2, _08017290 @ =gUnknown_2023BC8 + ldr r1, _08017294 @ =gUnknown_825E45C + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2] +_0801728C: + pop {r0} + bx r0 + .align 2, 0 +_08017290: .4byte gUnknown_2023BC8 +_08017294: .4byte gUnknown_825E45C + thumb_func_end sub_8017248 + + thumb_func_start sub_8017298 +sub_8017298: @ 8017298 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0 + ldr r5, _080172AC @ =gUnknown_2023BC8 + ldr r1, _080172B0 @ =gUnknown_825E45C + lsls r0, r7, 2 + adds r6, r0, r1 + b _080172C2 + .align 2, 0 +_080172AC: .4byte gUnknown_2023BC8 +_080172B0: .4byte gUnknown_825E45C +_080172B4: + lsls r0, r4, 2 + ldr r1, [r6] + lsls r1, r0 + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] + adds r4, 0x1 +_080172C2: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _080172B4 + ldr r2, _080172E4 @ =gUnknown_2023BC8 + movs r1, 0x80 + lsls r1, 21 + lsls r1, r7 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080172E4: .4byte gUnknown_2023BC8 + thumb_func_end sub_8017298 + + thumb_func_start sub_80172E8 +sub_80172E8: @ 80172E8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08017338 @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r3, r0, 0 + muls r3, r2 + adds r1, 0x50 + adds r3, r1 + ldr r1, [r3] + ldr r2, _0801733C @ =0xffffefff + ands r1, r2 + ldr r2, _08017340 @ =0xfffff3ff + ands r1, r2 + movs r2, 0x71 + negs r2, r2 + ands r1, r2 + ldr r2, _08017344 @ =0xfffffcff + ands r1, r2 + str r1, [r3] + ldr r1, _08017348 @ =gUnknown_2023DFC + lsls r2, r0, 2 + adds r2, r1 + ldr r1, [r2] + ldr r3, _0801734C @ =0xfffbff3f + ands r1, r3 + str r1, [r2] + ldr r2, _08017350 @ =gUnknown_2023E0C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x11] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x11] + movs r0, 0 + strb r0, [r1, 0x10] + bx lr + .align 2, 0 +_08017338: .4byte gUnknown_2023BE4 +_0801733C: .4byte 0xffffefff +_08017340: .4byte 0xfffff3ff +_08017344: .4byte 0xfffffcff +_08017348: .4byte gUnknown_2023DFC +_0801734C: .4byte 0xfffbff3f +_08017350: .4byte gUnknown_2023E0C + thumb_func_end sub_80172E8 + + thumb_func_start sub_8017354 +sub_8017354: @ 8017354 + push {lr} + lsls r0, 24 + ldr r1, _080173A0 @ =gUnknown_2023E8C + lsrs r0, 20 + adds r1, r0, r1 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + bne _0801739A + ldrb r2, [r1, 0x1] + lsls r0, r2, 30 + cmp r0, 0 + blt _0801739A + lsls r0, r2, 26 + cmp r0, 0 + blt _0801739A + lsls r0, r2, 25 + cmp r0, 0 + blt _0801739A + lsrs r0, r2, 7 + cmp r0, 0 + bne _0801739A + ldrb r1, [r1, 0x2] + lsls r0, r1, 31 + cmp r0, 0 + bne _0801739A + lsls r0, r1, 30 + cmp r0, 0 + blt _0801739A + lsls r0, r1, 29 + cmp r0, 0 + blt _0801739A + lsls r0, r2, 31 + cmp r0, 0 + beq _080173A4 +_0801739A: + movs r0, 0x1 + b _080173A6 + .align 2, 0 +_080173A0: .4byte gUnknown_2023E8C +_080173A4: + movs r0, 0 +_080173A6: + pop {r1} + bx r1 + thumb_func_end sub_8017354 + + thumb_func_start sub_80173AC +sub_80173AC: @ 80173AC + push {r4,lr} + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r4, _080173CC @ =gUnknown_2023BC4 + strb r1, [r4] + movs r0, 0 + adds r1, r2, 0 + bl sub_800E2D4 + ldrb r0, [r4] + bl sub_8017248 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080173CC: .4byte gUnknown_2023BC4 + thumb_func_end sub_80173AC + + thumb_func_start sub_80173D0 +sub_80173D0: @ 80173D0 + push {r4-r6,lr} + movs r3, 0 + ldr r0, _08017424 @ =gUnknown_2023F4E + strb r3, [r0] + strb r3, [r0, 0x1] + movs r1, 0 + ldr r0, _08017428 @ =gUnknown_2023BCC + ldrb r2, [r0] + adds r6, r0, 0 + cmp r1, r2 + bge _080173FE + ldr r5, _0801742C @ =gUnknown_825E45C + adds r4, r2, 0 + ldr r2, _08017430 @ =gUnknown_2023BCE +_080173EC: + ldrh r0, [r2] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + orrs r3, r0 + adds r2, 0x4 + adds r1, 0x2 + cmp r1, r4 + blt _080173EC +_080173FE: + movs r1, 0x1 + adds r2, r6, 0 + ldrb r0, [r2] + cmp r1, r0 + bge _0801741E + ldr r5, _08017424 @ =gUnknown_2023F4E + movs r4, 0x2 +_0801740C: + adds r0, r1, 0 + ands r0, r4 + asrs r0, 1 + adds r0, r5 + strb r3, [r0] + adds r1, 0x2 + ldrb r0, [r2] + cmp r1, r0 + blt _0801740C +_0801741E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08017424: .4byte gUnknown_2023F4E +_08017428: .4byte gUnknown_2023BCC +_0801742C: .4byte gUnknown_825E45C +_08017430: .4byte gUnknown_2023BCE + thumb_func_end sub_80173D0 + + thumb_func_start sub_8017434 +sub_8017434: @ 8017434 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08017498 + movs r0, 0x2 + ands r0, r5 + lsls r0, 24 + lsrs r0, 25 + mov r12, r0 + ldr r1, _080174A4 @ =gUnknown_2023F4E + adds r0, r1 + strb r4, [r0] + adds r5, r4, 0 + ldr r0, _080174A8 @ =gUnknown_2023BCC + ldrb r2, [r0] + mov r8, r1 + cmp r4, r2 + bge _08017492 + ldr r0, _080174AC @ =gUnknown_2023D70 + ldrb r7, [r0] + ldr r1, _080174B0 @ =gUnknown_825E45C + adds r6, r2, 0 + ldr r3, _080174B4 @ =gUnknown_2023BCE + adds r2, r1, 0 +_08017476: + ldr r0, [r2] + ands r0, r7 + cmp r0, 0 + bne _08017488 + ldrh r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r4, r0 +_08017488: + adds r3, 0x4 + adds r2, 0x8 + adds r5, 0x2 + cmp r5, r6 + blt _08017476 +_08017492: + mov r0, r12 + add r0, r8 + strb r4, [r0] +_08017498: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080174A4: .4byte gUnknown_2023F4E +_080174A8: .4byte gUnknown_2023BCC +_080174AC: .4byte gUnknown_2023D70 +_080174B0: .4byte gUnknown_825E45C +_080174B4: .4byte gUnknown_2023BCE + thumb_func_end sub_8017434 + + thumb_func_start sub_80174B8 +sub_80174B8: @ 80174B8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080174D4 + adds r0, r4, 0 + bl sub_8017434 + b _0801750A +_080174D4: + movs r3, 0x1 + ldr r5, _08017510 @ =gUnknown_2023BCC + ldrb r0, [r5] + cmp r3, r0 + bge _0801750A + ldr r0, _08017514 @ =gUnknown_2023F4E + mov r12, r0 + movs r7, 0x2 + ldr r6, _08017518 @ =gUnknown_825E45C + ldr r1, _0801751C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r4, r0, r1 +_080174EC: + adds r2, r3, 0 + ands r2, r7 + asrs r2, 1 + add r2, r12 + ldrh r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r3, 0x1 + ldrb r0, [r5] + cmp r3, r0 + blt _080174EC +_0801750A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08017510: .4byte gUnknown_2023BCC +_08017514: .4byte gUnknown_2023F4E +_08017518: .4byte gUnknown_825E45C +_0801751C: .4byte gUnknown_2023BCE + thumb_func_end sub_80174B8 + + thumb_func_start sub_8017520 +sub_8017520: @ 8017520 + push {r4,lr} + ldr r1, _08017540 @ =gUnknown_2023FF4 + ldr r1, [r1] + ldr r3, [r1, 0x8] + adds r4, r3, 0 + adds r4, 0x20 + ldrb r1, [r4] + adds r2, r1, 0x1 + strb r2, [r4] + lsls r1, 24 + lsrs r1, 22 + adds r3, r1 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08017540: .4byte gUnknown_2023FF4 + thumb_func_end sub_8017520 + + thumb_func_start sub_8017544 +sub_8017544: @ 8017544 + ldr r0, _08017564 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0x8] + adds r3, r2, 0 + adds r3, 0x20 + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 22 + adds r2, r0 + ldr r0, _08017568 @ =gUnknown_2023D74 + ldr r0, [r0] + str r0, [r2] + bx lr + .align 2, 0 +_08017564: .4byte gUnknown_2023FF4 +_08017568: .4byte gUnknown_2023D74 + thumb_func_end sub_8017544 + + thumb_func_start sub_801756C +sub_801756C: @ 801756C + ldr r3, _0801758C @ =gUnknown_2023D74 + ldr r0, _08017590 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r1, [r0, 0x8] + adds r2, r1, 0 + adds r2, 0x20 + ldrb r0, [r2] + subs r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 22 + adds r1, r0 + ldr r0, [r1] + str r0, [r3] + bx lr + .align 2, 0 +_0801758C: .4byte gUnknown_2023D74 +_08017590: .4byte gUnknown_2023FF4 + thumb_func_end sub_801756C + + thumb_func_start sub_8017594 +sub_8017594: @ 8017594 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + ldr r2, _080176AC @ =gUnknown_2023BE4 + ldr r1, _080176B0 @ =gUnknown_20233C4 + ldr r5, _080176B4 @ =gUnknown_2023BC4 + ldrb r3, [r5] + lsls r0, r3, 9 + adds r1, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x58 + muls r1, r3 + adds r0, r1 + adds r2, 0xC + adds r0, r2 + ldrh r4, [r0] + ldr r1, _080176B8 @ =gUnknown_2023FE8 + lsls r0, r3, 1 + adds r0, 0xC8 + ldr r1, [r1] + adds r1, r0 + mov r8, r1 + ldr r1, _080176BC @ =gUnknown_2023E0C + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x4] + cmp r0, r4 + bne _080175F0 + cmp r4, 0 + beq _080175F0 + ldr r0, _080176C0 @ =gUnknown_2023FC4 + strb r3, [r0, 0x17] + ldr r0, _080176C4 @ =gUnknown_2023D4A + strh r4, [r0] + ldr r1, _080176C8 @ =gUnknown_2023D80 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080176CC @ =gUnknown_81D8C5A + str r1, [r0] + movs r6, 0x1 +_080175F0: + ldr r1, _080176D0 @ =gUnknown_2023D98 + ldr r5, _080176B4 @ =gUnknown_2023BC4 + ldrb r2, [r5] + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _0801762C + cmp r4, 0xA5 + beq _0801762C + ldr r1, _080176AC @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bge _0801762C + adds r0, r2, 0 + bl sub_80172E8 + ldr r1, _080176C8 @ =gUnknown_2023D80 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080176D4 @ =gUnknown_81D8EB7 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0801762C: + ldr r2, _080176BC @ =gUnknown_2023E0C + ldr r3, _080176B4 @ =gUnknown_2023BC4 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x13] + lsls r0, 28 + cmp r0, 0 + beq _08017668 + ldr r0, _080176D8 @ =gUnknown_8250C04 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _08017668 + ldr r0, _080176C4 @ =gUnknown_2023D4A + strh r4, [r0] + ldr r1, _080176C8 @ =gUnknown_2023D80 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, _080176DC @ =gUnknown_81D8EC6 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08017668: + ldr r5, _080176B4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + adds r1, r4, 0 + bl sub_8017A64 + lsls r0, 24 + cmp r0, 0 + beq _0801768E + ldr r0, _080176C4 @ =gUnknown_2023D4A + strh r4, [r0] + ldr r1, _080176C8 @ =gUnknown_2023D80 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _080176E0 @ =gUnknown_81D8F9F + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0801768E: + ldr r1, _080176AC @ =gUnknown_2023BE4 + ldrb r2, [r5] + movs r0, 0x58 + muls r0, r2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _080176E8 + ldr r1, _080176E4 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r3, [r0, 0x7] + b _080176F2 + .align 2, 0 +_080176AC: .4byte gUnknown_2023BE4 +_080176B0: .4byte gUnknown_20233C4 +_080176B4: .4byte gUnknown_2023BC4 +_080176B8: .4byte gUnknown_2023FE8 +_080176BC: .4byte gUnknown_2023E0C +_080176C0: .4byte gUnknown_2023FC4 +_080176C4: .4byte gUnknown_2023D4A +_080176C8: .4byte gUnknown_2023D80 +_080176CC: .4byte gUnknown_81D8C5A +_080176D0: .4byte gUnknown_2023D98 +_080176D4: .4byte gUnknown_81D8EB7 +_080176D8: .4byte gUnknown_8250C04 +_080176DC: .4byte gUnknown_81D8EC6 +_080176E0: .4byte gUnknown_81D8F9F +_080176E4: .4byte gUnknown_2023F54 +_080176E8: + ldrh r0, [r1, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r3, r0, 24 +_080176F2: + ldr r2, _08017774 @ =gUnknown_2023D6F + ldr r1, _08017778 @ =gUnknown_2023BC4 + ldrb r0, [r1] + strb r0, [r2] + ldr r7, _0801777C @ =gUnknown_2023BE4 + adds r5, r1, 0 + cmp r3, 0x1D + bne _0801773A + mov r0, r8 + ldrh r1, [r0] + adds r2, r1, 0 + cmp r2, 0 + beq _0801773A + ldr r0, _08017780 @ =0x0000ffff + cmp r2, r0 + beq _0801773A + cmp r2, r4 + beq _0801773A + ldr r0, _08017784 @ =gUnknown_2023D4A + strh r1, [r0] + ldr r2, _08017788 @ =gUnknown_2023D68 + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + ldrh r0, [r0, 0x2E] + strh r0, [r2] + ldr r1, _0801778C @ =gUnknown_2023D80 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08017790 @ =gUnknown_81D963D + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0801773A: + ldr r0, _08017794 @ =gUnknown_20233C4 + ldrb r2, [r5] + lsls r1, r2, 9 + adds r0, 0x2 + adds r1, r0 + movs r0, 0x58 + muls r0, r2 + ldrb r1, [r1] + adds r0, r1 + adds r1, r7, 0 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08017768 + ldr r1, _0801778C @ =gUnknown_2023D80 + lsls r0, r2, 2 + adds r0, r1 + ldr r1, _08017798 @ =gUnknown_81D8EA4 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08017768: + adds r0, r6, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08017774: .4byte gUnknown_2023D6F +_08017778: .4byte gUnknown_2023BC4 +_0801777C: .4byte gUnknown_2023BE4 +_08017780: .4byte 0x0000ffff +_08017784: .4byte gUnknown_2023D4A +_08017788: .4byte gUnknown_2023D68 +_0801778C: .4byte gUnknown_2023D80 +_08017790: .4byte gUnknown_81D963D +_08017794: .4byte gUnknown_20233C4 +_08017798: .4byte gUnknown_81D8EA4 + thumb_func_end sub_8017594 + + thumb_func_start sub_801779C +sub_801779C: @ 801779C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r3, r2, 24 + ldr r1, _080177E0 @ =gUnknown_2023FE8 + lsls r0, r7, 1 + adds r0, 0xC8 + ldr r1, [r1] + adds r1, r0 + str r1, [sp, 0x4] + ldr r1, _080177E4 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _080177EC + ldr r2, _080177E8 @ =gUnknown_2023F54 + lsls r1, r7, 3 + subs r0, r1, r7 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x7] + str r0, [sp] + b _080177FE + .align 2, 0 +_080177E0: .4byte gUnknown_2023FE8 +_080177E4: .4byte gUnknown_2023BE4 +_080177E8: .4byte gUnknown_2023F54 +_080177EC: + ldrh r0, [r1, 0x2E] + str r3, [sp, 0x14] + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + lsls r1, r7, 3 + ldr r3, [sp, 0x14] +_080177FE: + ldr r0, _08017978 @ =gUnknown_2023D6F + strb r7, [r0] + movs r0, 0 + mov r9, r0 + lsls r2, r7, 1 + str r2, [sp, 0xC] + ldr r5, _0801797C @ =gUnknown_2023E0C + mov r12, r5 + ldr r0, _08017980 @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r6, r7, 0 + muls r6, r2 + str r6, [sp, 0x8] + ldr r2, _08017984 @ =gUnknown_2023BF0 + adds r5, r6, r2 + movs r6, 0 + str r6, [sp, 0x10] + mov r10, r0 + subs r0, r1, r7 + lsls r0, 2 + mov r8, r0 + ldr r6, _08017988 @ =gUnknown_825E45C +_0801782A: + ldrh r0, [r5] + cmp r0, 0 + bne _08017840 + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08017840 + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08017840: + ldr r0, [sp, 0x8] + add r0, r9 + mov r1, r10 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08017860 + movs r0, 0x2 + ands r0, r3 + cmp r0, 0 + beq _08017860 + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08017860: + mov r1, r8 + add r1, r12 + ldrh r0, [r5] + ldrh r1, [r1, 0x4] + cmp r0, r1 + bne _0801787C + movs r0, 0x4 + ands r0, r3 + cmp r0, 0 + beq _0801787C + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0801787C: + movs r0, 0x58 + adds r2, r7, 0 + muls r2, r0 + ldr r1, [sp, 0x10] + adds r0, r1, r2 + ldr r1, _08017984 @ =gUnknown_2023BF0 + adds r0, r1 + mov r12, r0 + ldr r1, _0801798C @ =gUnknown_2023D98 + ldr r0, [sp, 0xC] + adds r1, r0, r1 + str r1, [sp, 0x18] + mov r1, r12 + ldrh r1, [r1] + mov r12, r1 + ldr r0, [sp, 0x18] + ldrh r0, [r0] + cmp r12, r0 + bne _080178BE + movs r0, 0x8 + ands r0, r3 + cmp r0, 0 + beq _080178BE + mov r0, r10 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + bge _080178BE + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080178BE: + ldr r0, _0801797C @ =gUnknown_2023E0C + add r0, r8 + ldrb r0, [r0, 0x13] + lsls r0, 28 + cmp r0, 0 + beq _080178EC + movs r0, 0x10 + ands r0, r3 + cmp r0, 0 + beq _080178EC + ldr r2, _08017990 @ =gUnknown_8250C04 + ldrh r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _080178EC + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080178EC: + ldrh r1, [r5] + adds r0, r7, 0 + str r3, [sp, 0x14] + bl sub_8017A64 + lsls r0, 24 + ldr r3, [sp, 0x14] + cmp r0, 0 + beq _0801790E + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _0801790E + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0801790E: + ldr r1, _0801797C @ =gUnknown_2023E0C + mov r0, r8 + adds r2, r0, r1 + ldrb r0, [r2, 0xE] + lsls r0, 28 + mov r12, r1 + cmp r0, 0 + beq _0801792E + ldrh r0, [r2, 0x6] + ldrh r1, [r5] + cmp r0, r1 + beq _0801792E + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0801792E: + ldr r2, [sp] + cmp r2, 0x1D + bne _08017950 + ldr r0, [sp, 0x4] + ldrh r1, [r0] + cmp r1, 0 + beq _08017950 + ldr r0, _08017994 @ =0x0000ffff + cmp r1, r0 + beq _08017950 + ldrh r2, [r5] + cmp r1, r2 + beq _08017950 + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08017950: + adds r6, 0x4 + adds r5, 0x2 + ldr r0, [sp, 0x10] + adds r0, 0x2 + str r0, [sp, 0x10] + movs r1, 0x1 + add r9, r1 + mov r2, r9 + cmp r2, 0x3 + bgt _08017966 + b _0801782A +_08017966: + adds r0, r4, 0 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08017978: .4byte gUnknown_2023D6F +_0801797C: .4byte gUnknown_2023E0C +_08017980: .4byte gUnknown_2023BE4 +_08017984: .4byte gUnknown_2023BF0 +_08017988: .4byte gUnknown_825E45C +_0801798C: .4byte gUnknown_2023D98 +_08017990: .4byte gUnknown_8250C04 +_08017994: .4byte 0x0000ffff + thumb_func_end sub_801779C + + thumb_func_start sub_8017998 +sub_8017998: @ 8017998 + push {r4-r6,lr} + ldr r5, _08017A04 @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r1, 0 + movs r2, 0xFF + bl sub_801779C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bne _08017A40 + ldr r0, _08017A08 @ =gUnknown_2023E8C + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r1, _08017A0C @ =gUnknown_2023D80 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, _08017A10 @ =gUnknown_81D8EA0 + str r1, [r0] + ldr r0, _08017A14 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08017A1C + ldrb r0, [r5] + bl sub_80751D8 + adds r4, r0, 0 + bl sub_8044EC8 + movs r1, 0x1 + eors r4, r1 + movs r1, 0x2 + ands r1, r0 + orrs r4, r1 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80751E8 + ldr r2, _08017A18 @ =gUnknown_20233C4 + ldrb r1, [r5] + lsls r1, 9 + adds r2, 0x3 + adds r1, r2 + b _08017A50 + .align 2, 0 +_08017A04: .4byte gUnknown_2023BC4 +_08017A08: .4byte gUnknown_2023E8C +_08017A0C: .4byte gUnknown_2023D80 +_08017A10: .4byte gUnknown_81D8EA0 +_08017A14: .4byte gUnknown_2022B4C +_08017A18: .4byte gUnknown_20233C4 +_08017A1C: + ldrb r0, [r5] + bl sub_80751D8 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751E8 + ldr r2, _08017A3C @ =gUnknown_20233C4 + ldrb r1, [r5] + lsls r1, 9 + adds r2, 0x3 + adds r1, r2 + b _08017A50 + .align 2, 0 +_08017A3C: .4byte gUnknown_20233C4 +_08017A40: + ldr r0, _08017A60 @ =gUnknown_2023E8C + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 +_08017A50: + strb r0, [r1] + movs r0, 0 + cmp r6, 0xF + bne _08017A5A + movs r0, 0x1 +_08017A5A: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08017A60: .4byte gUnknown_2023E8C + thumb_func_end sub_8017998 + + thumb_func_start sub_8017A64 +sub_8017A64: @ 8017A64 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + movs r6, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r4, 0 + ldr r0, _08017AF8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r6, r0 + bge _08017AE8 + ldr r7, _08017AFC @ =gUnknown_2023BF0 + mov r8, r7 +_08017A8E: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + adds r3, r4, 0x1 + cmp r9, r0 + beq _08017ADE + ldr r1, _08017B00 @ =gUnknown_2023DFC + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _08017ADE + movs r2, 0 + movs r0, 0x58 + adds r1, r4, 0 + muls r1, r0 + adds r0, r1, r7 + ldrh r0, [r0] + cmp r5, r0 + beq _08017AD4 + mov r4, r8 + adds r0, r1, r4 +_08017AC6: + adds r0, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + bgt _08017ADE + ldrh r1, [r0] + cmp r5, r1 + bne _08017AC6 +_08017AD4: + cmp r2, 0x3 + bgt _08017ADE + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08017ADE: + adds r4, r3, 0 + ldr r0, _08017AF8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _08017A8E +_08017AE8: + adds r0, r6, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08017AF8: .4byte gUnknown_2023BCC +_08017AFC: .4byte gUnknown_2023BF0 +_08017B00: .4byte gUnknown_2023DFC + thumb_func_end sub_8017A64 + + thumb_func_start sub_8017B04 +sub_8017B04: @ 8017B04 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + mov r9, r0 + ldr r1, _08017BA8 @ =gUnknown_2023D6B + mov r2, r9 + strb r2, [r1] + ldr r0, _08017BAC @ =gUnknown_2023BCC + ldrb r4, [r0] + adds r6, r1, 0 + mov r10, r0 + ldr r7, _08017BB0 @ =gUnknown_2023D6C + ldr r3, _08017BB4 @ =gUnknown_2023FE8 + mov r12, r3 + cmp r9, r4 + bcs _08017B58 + ldr r2, _08017BB8 @ =gUnknown_2023D70 + ldrb r1, [r2] + ldr r5, _08017BBC @ =gUnknown_825E45C + ldr r0, [r5] + ands r1, r0 + cmp r1, 0 + beq _08017B58 + adds r3, r6, 0 +_08017B3A: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcs _08017B58 + ldrb r0, [r2] + ldrb r1, [r6] + lsls r1, 2 + adds r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + bne _08017B3A +_08017B58: + movs r0, 0 + strb r0, [r7] + mov r0, r10 + ldrb r4, [r0] + cmp r4, 0 + beq _08017B92 + ldr r2, _08017BB8 @ =gUnknown_2023D70 + ldrb r1, [r2] + ldr r5, _08017BBC @ =gUnknown_825E45C + ldr r0, [r5] + ands r1, r0 + cmp r1, 0 + beq _08017B92 + adds r3, r7, 0 +_08017B74: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcs _08017B92 + ldrb r0, [r2] + ldrb r1, [r7] + lsls r1, 2 + adds r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + bne _08017B74 +_08017B92: + mov r1, r12 + ldr r0, [r1] + ldrb r0, [r0, 0x3] + cmp r0, 0xA + bls _08017B9E + b _0801822A +_08017B9E: + lsls r0, 2 + ldr r1, _08017BC0 @ =_08017BC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08017BA8: .4byte gUnknown_2023D6B +_08017BAC: .4byte gUnknown_2023BCC +_08017BB0: .4byte gUnknown_2023D6C +_08017BB4: .4byte gUnknown_2023FE8 +_08017BB8: .4byte gUnknown_2023D70 +_08017BBC: .4byte gUnknown_825E45C +_08017BC0: .4byte _08017BC4 + .align 2, 0 +_08017BC4: + .4byte _08017BF0 + .4byte _08017C76 + .4byte _08017D3C + .4byte _08017E08 + .4byte _08017EE4 + .4byte _08017F9C + .4byte _08018050 + .4byte _080180D4 + .4byte _08018144 + .4byte _0801819C + .4byte _08018220 +_08017BF0: + movs r5, 0 + ldr r1, _08017C10 @ =gUnknown_2023BCC + mov r10, r1 + ldrb r2, [r1] + cmp r5, r2 + bge _08017C0A + ldr r2, _08017C14 @ =gUnknown_2023BDE +_08017BFE: + adds r0, r5, r2 + strb r5, [r0] + adds r5, 0x1 + ldrb r3, [r1] + cmp r5, r3 + blt _08017BFE +_08017C0A: + movs r5, 0 + b _08017C58 + .align 2, 0 +_08017C10: .4byte gUnknown_2023BCC +_08017C14: .4byte gUnknown_2023BDE +_08017C18: + adds r4, r5, 0x1 + adds r6, r4, 0 + ldrb r1, [r1] + cmp r6, r1 + bge _08017C56 + ldr r7, _08017D14 @ =gUnknown_2023BDE + ldr r0, _08017D18 @ =gUnknown_2023BCC + mov r10, r0 + lsls r1, r5, 24 + mov r8, r1 +_08017C2C: + adds r0, r5, r7 + ldrb r0, [r0] + adds r1, r4, r7 + ldrb r1, [r1] + movs r2, 0 + bl sub_8014CD8 + lsls r0, 24 + cmp r0, 0 + beq _08017C4C + lsls r1, r4, 24 + lsrs r1, 24 + mov r2, r8 + lsrs r0, r2, 24 + bl sub_8014CA4 +_08017C4C: + adds r4, 0x1 + ldr r0, _08017D18 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + blt _08017C2C +_08017C56: + adds r5, r6, 0 +_08017C58: + mov r1, r10 + ldrb r0, [r1] + subs r0, 0x1 + cmp r5, r0 + blt _08017C18 + ldr r2, _08017D1C @ =gUnknown_2023FE8 + ldr r1, [r2] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + ldr r0, [r2] + adds r0, 0xDB + movs r1, 0 + strb r1, [r0] + mov r12, r2 +_08017C76: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bls _08017C84 + b _08017F60 +_08017C84: + ldr r3, _08017D20 @ =gUnknown_2023BC4 + mov r8, r3 + movs r7, 0 + ldr r6, _08017D24 @ =gUnknown_2023D6B + ldr r5, _08017D28 @ =gUnknown_2022AB8 +_08017C8E: + ldr r0, [r1] + adds r0, 0xDB + ldrb r4, [r0] + ldr r2, _08017D2C @ =gUnknown_2023DE4 + lsls r1, r4, 1 + adds r0, r1, r4 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2, 0x1] + strb r0, [r6] + mov r3, r8 + strb r0, [r3] + ldr r0, _08017D30 @ =gUnknown_2023DDE + adds r3, r1, r0 + ldrh r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08017CF0 + ldrb r0, [r2] + subs r0, 0x1 + strb r0, [r2] + movs r4, 0xFF + lsls r0, 24 + cmp r0, 0 + bne _08017CF0 + ldrh r0, [r3] + ldr r2, _08017D34 @ =0x0000fffe + adds r1, r2, 0 + ands r0, r1 + strh r0, [r3] + ldr r0, _08017D38 @ =gUnknown_81D8B32 + bl sub_801BBE4 + movs r0, 0xFD + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, 0x1] + movs r0, 0x73 + strb r0, [r5, 0x2] + strb r7, [r5, 0x3] + ldrb r0, [r5, 0x4] + orrs r0, r4 + strb r0, [r5, 0x4] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08017CF0: + ldr r2, _08017D1C @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0xDB + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r12, r2 + mov r3, r9 + cmp r3, 0 + beq _08017D06 + b _08018232 +_08017D06: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bls _08017C8E + b _08017F60 + .align 2, 0 +_08017D14: .4byte gUnknown_2023BDE +_08017D18: .4byte gUnknown_2023BCC +_08017D1C: .4byte gUnknown_2023FE8 +_08017D20: .4byte gUnknown_2023BC4 +_08017D24: .4byte gUnknown_2023D6B +_08017D28: .4byte gUnknown_2022AB8 +_08017D2C: .4byte gUnknown_2023DE4 +_08017D30: .4byte gUnknown_2023DDE +_08017D34: .4byte 0x0000fffe +_08017D38: .4byte gUnknown_81D8B32 +_08017D3C: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bls _08017D4A + b _08017EA4 +_08017D4A: + movs r0, 0x2 + mov r10, r0 + movs r2, 0 + mov r8, r2 + ldr r7, _08017DE4 @ =gUnknown_2023D6B + ldr r5, _08017DE8 @ =gUnknown_2022AB8 +_08017D56: + ldr r0, [r1] + adds r0, 0xDB + ldrb r4, [r0] + ldr r2, _08017DEC @ =gUnknown_2023DE4 + lsls r1, r4, 1 + adds r0, r1, r4 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2, 0x3] + strb r0, [r7] + ldr r3, _08017DF0 @ =gUnknown_2023BC4 + strb r0, [r3] + ldr r0, _08017DF4 @ =gUnknown_2023DDE + adds r3, r1, r0 + ldrh r1, [r3] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08017DBE + ldrb r0, [r2, 0x2] + subs r0, 0x1 + strb r0, [r2, 0x2] + movs r6, 0xFF + lsls r0, 24 + cmp r0, 0 + bne _08017DBE + ldrh r0, [r3] + ldr r2, _08017DF8 @ =0x0000fffd + adds r1, r2, 0 + ands r0, r1 + strh r0, [r3] + ldr r0, _08017DFC @ =gUnknown_81D8B32 + bl sub_801BBE4 + ldr r0, _08017E00 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + movs r0, 0xFD + strb r0, [r5] + mov r3, r10 + strb r3, [r5, 0x1] + movs r0, 0x71 + strb r0, [r5, 0x2] + mov r0, r8 + strb r0, [r5, 0x3] + ldrb r0, [r5, 0x4] + orrs r0, r6 + strb r0, [r5, 0x4] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08017DBE: + ldr r2, _08017E04 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0xDB + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r12, r2 + mov r1, r9 + cmp r1, 0 + beq _08017DD4 + b _08018232 +_08017DD4: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bls _08017D56 + b _08017EA4 + .align 2, 0 +_08017DE4: .4byte gUnknown_2023D6B +_08017DE8: .4byte gUnknown_2022AB8 +_08017DEC: .4byte gUnknown_2023DE4 +_08017DF0: .4byte gUnknown_2023BC4 +_08017DF4: .4byte gUnknown_2023DDE +_08017DF8: .4byte 0x0000fffd +_08017DFC: .4byte gUnknown_81D8B32 +_08017E00: .4byte gUnknown_2023E82 +_08017E04: .4byte gUnknown_2023FE8 +_08017E08: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bhi _08017EA4 + ldr r0, _08017EC0 @ =gUnknown_2023BC4 + mov r10, r0 + movs r2, 0 + mov r8, r2 + ldr r7, _08017EC4 @ =gUnknown_2023D6B + ldr r5, _08017EC8 @ =gUnknown_2022AB8 +_08017E20: + ldr r0, [r1] + adds r0, 0xDB + ldrb r4, [r0] + ldr r1, _08017ECC @ =gUnknown_2023DE4 + lsls r3, r4, 1 + adds r0, r3, r4 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x5] + strb r0, [r7] + mov r2, r10 + strb r0, [r2] + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _08017E82 + subs r0, 0x1 + strb r0, [r1, 0x4] + movs r6, 0xFF + lsls r0, 24 + cmp r0, 0 + bne _08017E82 + ldr r2, _08017ED0 @ =gUnknown_2023DDE + adds r2, r3, r2 + ldrh r0, [r2] + ldr r3, _08017ED4 @ =0x0000feff + adds r1, r3, 0 + ands r0, r1 + strh r0, [r2] + ldr r0, _08017ED8 @ =gUnknown_81D8B32 + bl sub_801BBE4 + ldr r0, _08017EDC @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + movs r0, 0xFD + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, 0x1] + movs r0, 0x36 + strb r0, [r5, 0x2] + mov r0, r8 + strb r0, [r5, 0x3] + ldrb r0, [r5, 0x4] + orrs r0, r6 + strb r0, [r5, 0x4] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08017E82: + ldr r2, _08017EE0 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0xDB + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r12, r2 + mov r1, r9 + cmp r1, 0 + beq _08017E98 + b _08018232 +_08017E98: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bls _08017E20 +_08017EA4: + mov r2, r9 + cmp r2, 0 + beq _08017EAC + b _08018232 +_08017EAC: + mov r3, r12 + ldr r0, [r3] + ldrb r1, [r0, 0x3] + adds r1, 0x1 + strb r1, [r0, 0x3] + ldr r0, [r3] + adds r0, 0xDB + strb r2, [r0] + b _0801822A + .align 2, 0 +_08017EC0: .4byte gUnknown_2023BC4 +_08017EC4: .4byte gUnknown_2023D6B +_08017EC8: .4byte gUnknown_2022AB8 +_08017ECC: .4byte gUnknown_2023DE4 +_08017ED0: .4byte gUnknown_2023DDE +_08017ED4: .4byte 0x0000feff +_08017ED8: .4byte gUnknown_81D8B32 +_08017EDC: .4byte gUnknown_2023E82 +_08017EE0: .4byte gUnknown_2023FE8 +_08017EE4: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bhi _08017F60 + ldr r6, _08017F80 @ =gUnknown_2023BC4 + ldr r5, _08017F84 @ =gUnknown_2023D6B +_08017EF4: + ldr r0, [r1] + adds r0, 0xDB + ldrb r4, [r0] + ldr r2, _08017F88 @ =gUnknown_2023DE4 + lsls r1, r4, 1 + adds r0, r1, r4 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2, 0x7] + strb r0, [r5] + strb r0, [r6] + ldr r0, _08017F8C @ =gUnknown_2023DDE + adds r3, r1, r0 + ldrh r1, [r3] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08017F3E + ldrb r0, [r2, 0x6] + subs r0, 0x1 + strb r0, [r2, 0x6] + lsls r0, 24 + cmp r0, 0 + bne _08017F3E + ldrh r0, [r3] + ldr r2, _08017F90 @ =0x0000ffdf + adds r1, r2, 0 + ands r0, r1 + strh r0, [r3] + ldr r0, _08017F94 @ =gUnknown_81D8B43 + bl sub_801BBE4 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08017F3E: + ldr r2, _08017F98 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0xDB + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r12, r2 + mov r3, r9 + cmp r3, 0 + beq _08017F54 + b _08018232 +_08017F54: + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDB + ldrb r0, [r0] + cmp r0, 0x1 + bls _08017EF4 +_08017F60: + mov r0, r9 + cmp r0, 0 + beq _08017F68 + b _08018232 +_08017F68: + mov r1, r12 + ldr r0, [r1] + ldrb r1, [r0, 0x3] + adds r1, 0x1 + strb r1, [r0, 0x3] + mov r2, r12 + ldr r0, [r2] + adds r0, 0xDB + mov r3, r9 + strb r3, [r0] + b _0801822A + .align 2, 0 +_08017F80: .4byte gUnknown_2023BC4 +_08017F84: .4byte gUnknown_2023D6B +_08017F88: .4byte gUnknown_2023DE4 +_08017F8C: .4byte gUnknown_2023DDE +_08017F90: .4byte 0x0000ffdf +_08017F94: .4byte gUnknown_81D8B43 +_08017F98: .4byte gUnknown_2023FE8 +_08017F9C: + mov r2, r12 + ldr r0, [r2] + adds r0, 0xDB + ldr r1, _08018030 @ =gUnknown_2023BCC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcs _0801801C + ldr r4, _08018034 @ =gUnknown_2023BC4 + ldr r5, _08018038 @ =gUnknown_2023BDE +_08017FB0: + ldr r0, [r2] + adds r0, 0xDB + ldrb r0, [r0] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, _0801803C @ =gUnknown_2023F20 + adds r0, 0x20 + ldrb r2, [r4] + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _08017FF8 + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _08017FF8 + ldr r1, _08018040 @ =gUnknown_2023BE4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08017FF8 + ldr r0, _08018044 @ =gUnknown_2023D6C + strb r2, [r0] + ldr r0, _08018048 @ =gUnknown_81D8ED5 + bl sub_801BBE4 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08017FF8: + ldr r2, _0801804C @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0xDB + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r12, r2 + mov r3, r9 + cmp r3, 0 + beq _0801800E + b _08018232 +_0801800E: + ldr r0, [r2] + adds r0, 0xDB + ldr r1, _08018030 @ =gUnknown_2023BCC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcc _08017FB0 +_0801801C: + mov r0, r9 + cmp r0, 0 + beq _08018024 + b _08018232 +_08018024: + mov r2, r12 + ldr r1, [r2] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + b _0801822A + .align 2, 0 +_08018030: .4byte gUnknown_2023BCC +_08018034: .4byte gUnknown_2023BC4 +_08018038: .4byte gUnknown_2023BDE +_0801803C: .4byte gUnknown_2023F20 +_08018040: .4byte gUnknown_2023BE4 +_08018044: .4byte gUnknown_2023D6C +_08018048: .4byte gUnknown_81D8ED5 +_0801804C: .4byte gUnknown_2023FE8 +_08018050: + ldr r3, _08018088 @ =gUnknown_2023F1C + ldrh r2, [r3] + movs r0, 0x7 + ands r0, r2 + cmp r0, 0 + bne _0801805E + b _080181FC +_0801805E: + movs r0, 0x4 + ands r0, r2 + cmp r0, 0 + bne _080180AA + ldr r1, _0801808C @ =gUnknown_2023F20 + adds r1, 0x28 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _0801809C + ldr r0, _08018090 @ =0x0000fffe + ands r0, r2 + ldr r1, _08018094 @ =0x0000fffd + ands r0, r1 + strh r0, [r3] + ldr r1, _08018098 @ =gUnknown_2023E82 + movs r0, 0x2 + strb r0, [r1, 0x5] + b _080180C8 + .align 2, 0 +_08018088: .4byte gUnknown_2023F1C +_0801808C: .4byte gUnknown_2023F20 +_08018090: .4byte 0x0000fffe +_08018094: .4byte 0x0000fffd +_08018098: .4byte gUnknown_2023E82 +_0801809C: + movs r0, 0x2 + ands r0, r2 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _080180B6 + b _080180C4 +_080180AA: + movs r0, 0x2 + ands r0, r2 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080180C4 +_080180B6: + ldr r1, _080180C0 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _080180C8 + .align 2, 0 +_080180C0: .4byte gUnknown_2023E82 +_080180C4: + ldr r0, _080180CC @ =gUnknown_2023E82 + strb r1, [r0, 0x5] +_080180C8: + ldr r0, _080180D0 @ =gUnknown_81D8A64 + b _080181EE + .align 2, 0 +_080180CC: .4byte gUnknown_2023E82 +_080180D0: .4byte gUnknown_81D8A64 +_080180D4: + ldr r3, _08018108 @ =gUnknown_2023F1C + ldrh r2, [r3] + movs r0, 0x18 + ands r0, r2 + cmp r0, 0 + bne _080180E2 + b _080181FC +_080180E2: + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + bne _0801811C + ldr r1, _0801810C @ =gUnknown_2023F20 + adds r1, 0x28 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _0801811C + ldr r0, _08018110 @ =0x0000fff7 + ands r0, r2 + strh r0, [r3] + ldr r1, _08018114 @ =gUnknown_2023D74 + ldr r0, _08018118 @ =gUnknown_81D8B01 + b _08018120 + .align 2, 0 +_08018108: .4byte gUnknown_2023F1C +_0801810C: .4byte gUnknown_2023F20 +_08018110: .4byte 0x0000fff7 +_08018114: .4byte gUnknown_2023D74 +_08018118: .4byte gUnknown_81D8B01 +_0801811C: + ldr r1, _08018134 @ =gUnknown_2023D74 + ldr r0, _08018138 @ =gUnknown_81D8A7F +_08018120: + str r0, [r1] + adds r3, r1, 0 + ldr r1, _0801813C @ =gUnknown_2023FC4 + movs r2, 0 + movs r0, 0xC + strb r0, [r1, 0x10] + ldr r0, _08018140 @ =gUnknown_2023E82 + strb r2, [r0, 0x5] + b _080181EC + .align 2, 0 +_08018134: .4byte gUnknown_2023D74 +_08018138: .4byte gUnknown_81D8A7F +_0801813C: .4byte gUnknown_2023FC4 +_08018140: .4byte gUnknown_2023E82 +_08018144: + ldr r3, _08018174 @ =gUnknown_2023F1C + ldrh r2, [r3] + movs r0, 0x60 + ands r0, r2 + cmp r0, 0 + beq _080181FC + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _08018188 + ldr r1, _08018178 @ =gUnknown_2023F20 + adds r1, 0x28 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _08018188 + ldr r0, _0801817C @ =0x0000ffdf + ands r0, r2 + strh r0, [r3] + ldr r1, _08018180 @ =gUnknown_2023D74 + ldr r0, _08018184 @ =gUnknown_81D8B18 + b _0801818C + .align 2, 0 +_08018174: .4byte gUnknown_2023F1C +_08018178: .4byte gUnknown_2023F20 +_0801817C: .4byte 0x0000ffdf +_08018180: .4byte gUnknown_2023D74 +_08018184: .4byte gUnknown_81D8B18 +_08018188: + ldr r1, _08018194 @ =gUnknown_2023D74 + ldr r0, _08018198 @ =gUnknown_81D8B0A +_0801818C: + str r0, [r1] + adds r3, r1, 0 + b _080181EC + .align 2, 0 +_08018194: .4byte gUnknown_2023D74 +_08018198: .4byte gUnknown_81D8B0A +_0801819C: + ldr r3, _080181C4 @ =gUnknown_2023F1C + ldrh r2, [r3] + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _080181FC + ldr r1, _080181C8 @ =gUnknown_2023F20 + adds r1, 0x28 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _080181D8 + ldr r0, _080181CC @ =0x0000ff7f + ands r0, r2 + strh r0, [r3] + ldr r1, _080181D0 @ =gUnknown_2023D74 + ldr r0, _080181D4 @ =gUnknown_81D8B01 + b _080181DC + .align 2, 0 +_080181C4: .4byte gUnknown_2023F1C +_080181C8: .4byte gUnknown_2023F20 +_080181CC: .4byte 0x0000ff7f +_080181D0: .4byte gUnknown_2023D74 +_080181D4: .4byte gUnknown_81D8B01 +_080181D8: + ldr r1, _0801820C @ =gUnknown_2023D74 + ldr r0, _08018210 @ =gUnknown_81D8A7F +_080181DC: + str r0, [r1] + adds r3, r1, 0 + ldr r1, _08018214 @ =gUnknown_2023FC4 + movs r0, 0xD + strb r0, [r1, 0x10] + ldr r1, _08018218 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] +_080181EC: + ldr r0, [r3] +_080181EE: + bl sub_801BBE4 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_080181FC: + ldr r2, _0801821C @ =gUnknown_2023FE8 + ldr r1, [r2] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + mov r12, r2 + b _0801822A + .align 2, 0 +_0801820C: .4byte gUnknown_2023D74 +_08018210: .4byte gUnknown_81D8A7F +_08018214: .4byte gUnknown_2023FC4 +_08018218: .4byte gUnknown_2023E82 +_0801821C: .4byte gUnknown_2023FE8 +_08018220: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801822A: + mov r3, r9 + cmp r3, 0 + bne _08018232 + b _08017B92 +_08018232: + ldr r0, _08018250 @ =gUnknown_3004F84 + ldr r1, [r0] + ldr r0, _08018254 @ =sub_8013BD4 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08018250: .4byte gUnknown_3004F84 +_08018254: .4byte sub_8013BD4 + thumb_func_end sub_8017B04 + + thumb_func_start sub_8018258 +sub_8018258: @ 8018258 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0 + mov r9, r0 + ldr r2, _0801828C @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08018290 @ =0x01000020 + orrs r0, r1 + str r0, [r2] + ldr r5, _08018294 @ =gUnknown_2023FE8 + ldr r2, [r5] + ldr r0, _08018298 @ =gUnknown_2023BCC + ldrb r1, [r2, 0x1] + adds r7, r5, 0 + mov r8, r0 + ldrb r3, [r0] + cmp r1, r3 + bcc _08018288 + bl _08018C6C +_08018288: + bl _08018C62 + .align 2, 0 +_0801828C: .4byte gUnknown_2023DD0 +_08018290: .4byte 0x01000020 +_08018294: .4byte gUnknown_2023FE8 +_08018298: .4byte gUnknown_2023BCC +_0801829C: + ldr r3, _080182D0 @ =gUnknown_2023BC4 + ldr r4, _080182D4 @ =gUnknown_2023D6B + ldr r1, _080182D8 @ =gUnknown_2023BDE + ldr r5, [r5] + ldrb r0, [r5, 0x1] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4] + strb r0, [r3] + ldr r0, _080182DC @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _080182E0 @ =gUnknown_825E45C + ldrb r0, [r3] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + adds r6, r3, 0 + cmp r1, 0 + beq _080182E4 + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] + bl _08018C50 + .align 2, 0 +_080182D0: .4byte gUnknown_2023BC4 +_080182D4: .4byte gUnknown_2023D6B +_080182D8: .4byte gUnknown_2023BDE +_080182DC: .4byte gUnknown_2023D70 +_080182E0: .4byte gUnknown_825E45C +_080182E4: + ldrb r0, [r5] + cmp r0, 0x13 + bls _080182EE + bl _08018C46 +_080182EE: + lsls r0, 2 + ldr r1, _080182F8 @ =_080182FC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080182F8: .4byte _080182FC + .align 2, 0 +_080182FC: + .4byte _0801834C + .4byte _080183AC + .4byte _080183CA + .4byte _080183FA + .4byte _08018478 + .4byte _080184C0 + .4byte _08018540 + .4byte _08018588 + .4byte _080185EC + .4byte _08018634 + .4byte _08018794 + .4byte _080188B0 + .4byte _08018958 + .4byte _08018A1C + .4byte _08018AD0 + .4byte _08018AF0 + .4byte _08018B3C + .4byte _08018B6C + .4byte _080183E2 + .4byte _08018C38 +_0801834C: + ldr r1, _0801839C @ =gUnknown_2023DFC + ldrb r3, [r6] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + bne _08018364 + bl _08018C12 +_08018364: + ldr r0, _080183A0 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r3 + adds r0, r1, r0 + ldrh r2, [r0, 0x28] + ldrh r5, [r0, 0x2C] + cmp r2, r5 + bne _08018378 + bl _08018C12 +_08018378: + cmp r2, 0 + bne _08018380 + bl _08018C12 +_08018380: + ldr r1, _080183A4 @ =gUnknown_2023D50 + ldrh r0, [r0, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _08018390 + movs r0, 0x1 + str r0, [r1] +_08018390: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + ldr r0, _080183A8 @ =gUnknown_81D8F0C + bl _08018C04 + .align 2, 0 +_0801839C: .4byte gUnknown_2023DFC +_080183A0: .4byte gUnknown_2023BE4 +_080183A4: .4byte gUnknown_2023D50 +_080183A8: .4byte gUnknown_81D8F0C +_080183AC: + ldrb r1, [r6] + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _080183C6 + bl _08018C12 +_080183C6: + bl _08018C08 +_080183CA: + ldrb r1, [r6] + movs r0, 0x1 + movs r2, 0 + bl sub_801BC68 + lsls r0, 24 + cmp r0, 0 + bne _080183DE + bl _08018C12 +_080183DE: + bl _08018C08 +_080183E2: + ldrb r1, [r6] + movs r0, 0x1 + movs r2, 0x1 + bl sub_801BC68 + lsls r0, 24 + cmp r0, 0 + bne _080183F6 + bl _08018C12 +_080183F6: + bl _08018C08 +_080183FA: + ldr r0, _08018460 @ =gUnknown_2023DFC + ldrb r2, [r6] + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08018410 + bl _08018C12 +_08018410: + ldr r3, _08018464 @ =gUnknown_2023BE4 + movs r5, 0x3 + ands r5, r1 + movs r1, 0x58 + adds r0, r5, 0 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08018428 + bl _08018C12 +_08018428: + adds r0, r2, 0 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08018438 + bl _08018C12 +_08018438: + ldr r0, _08018468 @ =gUnknown_2023D6C + strb r5, [r0] + ldr r2, _0801846C @ =gUnknown_2023D50 + ldrb r0, [r6] + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x2C] + lsrs r0, 3 + str r0, [r2] + cmp r0, 0 + bne _08018452 + movs r0, 0x1 + str r0, [r2] +_08018452: + ldr r1, _08018470 @ =gUnknown_2023FC4 + strb r5, [r1, 0x10] + ldrb r0, [r4] + strb r0, [r1, 0x11] + ldr r0, _08018474 @ =gUnknown_81D8B4D + b _08018C04 + .align 2, 0 +_08018460: .4byte gUnknown_2023DFC +_08018464: .4byte gUnknown_2023BE4 +_08018468: .4byte gUnknown_2023D6C +_0801846C: .4byte gUnknown_2023D50 +_08018470: .4byte gUnknown_2023FC4 +_08018474: .4byte gUnknown_81D8B4D +_08018478: + ldr r2, _080184B4 @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + adds r3, r1, 0 + muls r3, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08018494 + b _08018C12 +_08018494: + adds r1, r3, r2 + ldrh r0, [r1, 0x28] + cmp r0, 0 + bne _0801849E + b _08018C12 +_0801849E: + ldr r2, _080184B8 @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + lsrs r0, 3 + str r0, [r2] + cmp r0, 0 + bne _080184AE + movs r0, 0x1 + str r0, [r2] +_080184AE: + ldr r0, _080184BC @ =gUnknown_81D9053 + b _08018C04 + .align 2, 0 +_080184B4: .4byte gUnknown_2023BE4 +_080184B8: .4byte gUnknown_2023D50 +_080184BC: .4byte gUnknown_81D9053 +_080184C0: + ldr r4, _08018534 @ =gUnknown_2023BE4 + ldrb r0, [r6] + movs r7, 0x58 + mov r8, r7 + mov r2, r8 + muls r2, r0 + adds r3, r4, 0 + adds r3, 0x4C + adds r0, r2, r3 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080184DE + b _08018C12 +_080184DE: + adds r1, r2, r4 + ldrh r0, [r1, 0x28] + cmp r0, 0 + bne _080184E8 + b _08018C12 +_080184E8: + ldr r5, _08018538 @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + lsrs r0, 4 + str r0, [r5] + cmp r0, 0 + bne _080184F8 + movs r0, 0x1 + str r0, [r5] +_080184F8: + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r2, r0, r3 + ldr r1, [r2] + movs r4, 0xF0 + lsls r4, 4 + adds r0, r1, 0 + ands r0, r4 + cmp r0, r4 + beq _08018518 + movs r7, 0x80 + lsls r7, 1 + adds r0, r1, r7 + str r0, [r2] +_08018518: + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r3 + ldr r0, [r0] + ands r0, r4 + lsrs r0, 8 + ldr r1, [r5] + muls r0, r1 + str r0, [r5] + ldr r0, _0801853C @ =gUnknown_81D9053 + b _08018C04 + .align 2, 0 +_08018534: .4byte gUnknown_2023BE4 +_08018538: .4byte gUnknown_2023D50 +_0801853C: .4byte gUnknown_81D9053 +_08018540: + ldr r2, _0801857C @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + adds r3, r1, 0 + muls r3, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0801855C + b _08018C12 +_0801855C: + adds r1, r3, r2 + ldrh r0, [r1, 0x28] + cmp r0, 0 + bne _08018566 + b _08018C12 +_08018566: + ldr r2, _08018580 @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + lsrs r0, 3 + str r0, [r2] + cmp r0, 0 + bne _08018576 + movs r0, 0x1 + str r0, [r2] +_08018576: + ldr r0, _08018584 @ =gUnknown_81D9075 + b _08018C04 + .align 2, 0 +_0801857C: .4byte gUnknown_2023BE4 +_08018580: .4byte gUnknown_2023D50 +_08018584: .4byte gUnknown_81D9075 +_08018588: + ldr r4, _080185D4 @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + muls r1, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r5, r1, r0 + ldr r2, [r5] + movs r0, 0x80 + lsls r0, 20 + ands r0, r2 + cmp r0, 0 + bne _080185A4 + b _08018C12 +_080185A4: + adds r3, r1, r4 + ldrh r0, [r3, 0x28] + cmp r0, 0 + bne _080185AE + b _08018C12 +_080185AE: + adds r0, r4, 0 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _080185E0 + ldr r1, _080185D8 @ =gUnknown_2023D50 + ldrh r0, [r3, 0x2C] + lsrs r0, 2 + str r0, [r1] + cmp r0, 0 + bne _080185CE + movs r0, 0x1 + str r0, [r1] +_080185CE: + ldr r0, _080185DC @ =gUnknown_81D9155 + b _08018C04 + .align 2, 0 +_080185D4: .4byte gUnknown_2023BE4 +_080185D8: .4byte gUnknown_2023D50 +_080185DC: .4byte gUnknown_81D9155 +_080185E0: + ldr r0, _080185E8 @ =0xf7ffffff + ands r2, r0 + str r2, [r5] + b _08018C12 + .align 2, 0 +_080185E8: .4byte 0xf7ffffff +_080185EC: + ldr r2, _08018628 @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + adds r3, r1, 0 + muls r3, r0 + adds r0, r2, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 21 + ands r0, r1 + cmp r0, 0 + bne _0801860A + b _08018C12 +_0801860A: + adds r1, r3, r2 + ldrh r0, [r1, 0x28] + cmp r0, 0 + bne _08018614 + b _08018C12 +_08018614: + ldr r2, _0801862C @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + lsrs r0, 2 + str r0, [r2] + cmp r0, 0 + bne _08018624 + movs r0, 0x1 + str r0, [r2] +_08018624: + ldr r0, _08018630 @ =gUnknown_81D9166 + b _08018C04 + .align 2, 0 +_08018628: .4byte gUnknown_2023BE4 +_0801862C: .4byte gUnknown_2023D50 +_08018630: .4byte gUnknown_81D9166 +_08018634: + ldr r3, _080186D4 @ =gUnknown_2023BE4 + mov r8, r3 + ldrb r0, [r6] + movs r3, 0x58 + adds r1, r0, 0 + muls r1, r3 + movs r5, 0x50 + add r5, r8 + mov r10, r5 + adds r4, r1, r5 + ldr r2, [r4] + movs r5, 0xE0 + lsls r5, 8 + adds r0, r2, 0 + ands r0, r5 + cmp r0, 0 + bne _08018658 + b _08018C12 +_08018658: + mov r7, r8 + adds r0, r1, r7 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08018664 + b _08018C12 +_08018664: + ldr r1, _080186D8 @ =0xffffe000 + adds r0, r2, r1 + str r0, [r4] + ldrb r4, [r6] + adds r0, r4, 0 + muls r0, r3 + add r0, r10 + ldr r0, [r0] + ands r0, r5 + cmp r0, 0 + beq _080186F4 + ldr r1, _080186DC @ =gUnknown_2023FC4 + ldr r0, _080186E0 @ =gUnknown_2023FE8 + ldr r2, [r0] + lsls r0, r4, 1 + adds r0, r2 + ldrb r0, [r0, 0x4] + strb r0, [r1, 0x10] + ldrb r0, [r6] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0, 0x5] + strb r0, [r1, 0x11] + ldr r1, _080186E4 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldrb r0, [r6] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0, 0x4] + strb r0, [r1, 0x2] + ldrb r0, [r6] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0, 0x5] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _080186E8 @ =gUnknown_2023D74 + ldr r0, _080186EC @ =gUnknown_81D9124 + str r0, [r1] + ldr r2, _080186F0 @ =gUnknown_2023D50 + ldrb r0, [r6] + muls r0, r3 + add r0, r8 + ldrh r0, [r0, 0x2C] + lsrs r0, 4 + str r0, [r2] + cmp r0, 0 + bne _08018720 + movs r0, 0x1 + str r0, [r2] + b _08018720 + .align 2, 0 +_080186D4: .4byte gUnknown_2023BE4 +_080186D8: .4byte 0xffffe000 +_080186DC: .4byte gUnknown_2023FC4 +_080186E0: .4byte gUnknown_2023FE8 +_080186E4: .4byte gUnknown_2022AB8 +_080186E8: .4byte gUnknown_2023D74 +_080186EC: .4byte gUnknown_81D9124 +_080186F0: .4byte gUnknown_2023D50 +_080186F4: + ldr r2, _08018724 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x2 + strb r0, [r2, 0x1] + ldrb r1, [r6] + ldr r0, _08018728 @ =gUnknown_2023FE8 + ldr r3, [r0] + lsls r1, 1 + adds r1, r3 + ldrb r0, [r1, 0x4] + strb r0, [r2, 0x2] + ldrb r0, [r6] + lsls r0, 1 + adds r0, r3 + ldrb r0, [r0, 0x5] + strb r0, [r2, 0x3] + movs r0, 0xFF + strb r0, [r2, 0x4] + ldr r1, _0801872C @ =gUnknown_2023D74 + ldr r0, _08018730 @ =gUnknown_81D9136 + str r0, [r1] +_08018720: + ldr r0, [r1] + b _08018C04 + .align 2, 0 +_08018724: .4byte gUnknown_2022AB8 +_08018728: .4byte gUnknown_2023FE8 +_0801872C: .4byte gUnknown_2023D74 +_08018730: .4byte gUnknown_81D9136 +_08018734: + movs r0, 0x8 + negs r0, r0 + ands r3, r0 + str r3, [r2] + ldrb r0, [r6] + mov r2, r8 + muls r2, r0 + mov r0, r10 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + ldr r1, _08018784 @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + ldr r1, _08018788 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + ldr r0, _0801878C @ =gUnknown_81D904A + bl sub_801BBE4 + ldr r4, _08018790 @ =gUnknown_2023BC4 + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r4] + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + add r0, r9 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + b _080187FC + .align 2, 0 +_08018784: .4byte 0xf7ffffff +_08018788: .4byte gUnknown_2023E82 +_0801878C: .4byte gUnknown_81D904A +_08018790: .4byte gUnknown_2023BC4 +_08018794: + ldr r2, _08018810 @ =gUnknown_2023BE4 + ldrb r1, [r6] + movs r0, 0x58 + muls r0, r1 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x70 + ands r1, r0 + adds r7, r2, 0 + cmp r1, 0 + beq _0801889E + movs r0, 0 + strb r0, [r4] + mov r5, r8 + ldrb r0, [r5] + cmp r0, 0 + beq _080187FC + mov r10, r7 + adds r6, r4, 0 + movs r1, 0x58 + mov r8, r1 + movs r3, 0x4C + adds r3, r7 + mov r9, r3 + str r0, [sp, 0x4] + movs r5, 0x7 + mov r12, r5 +_080187CE: + ldrb r4, [r6] + mov r1, r8 + muls r1, r4 + mov r0, r9 + adds r2, r1, r0 + ldr r3, [r2] + adds r0, r3, 0 + mov r5, r12 + ands r0, r5 + cmp r0, 0 + beq _080187EE + adds r0, r1, r7 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2B + bne _08018734 +_080187EE: + adds r0, r4, 0x1 + strb r0, [r6] + lsls r0, 24 + lsrs r0, 24 + ldr r1, [sp, 0x4] + cmp r0, r1 + bcc _080187CE +_080187FC: + ldr r2, _08018814 @ =gUnknown_2023D6B + ldr r1, _08018818 @ =gUnknown_2023BCC + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _0801881C + movs r3, 0x2 + mov r9, r3 + b _08018C4C + .align 2, 0 +_08018810: .4byte gUnknown_2023BE4 +_08018814: .4byte gUnknown_2023D6B +_08018818: .4byte gUnknown_2023BCC +_0801881C: + ldr r5, _08018854 @ =gUnknown_2023BC4 + ldrb r0, [r5] + strb r0, [r2] + ldr r2, _08018858 @ =gUnknown_2023BE4 + ldrb r0, [r5] + movs r7, 0x58 + adds r1, r0, 0 + muls r1, r7 + adds r6, r2, 0 + adds r6, 0x50 + adds r1, r6 + ldr r0, [r1] + subs r0, 0x10 + str r0, [r1] + ldrb r0, [r5] + bl sub_8017354 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08018860 + ldrb r0, [r5] + bl sub_80172E8 + ldr r1, _0801885C @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08018894 + .align 2, 0 +_08018854: .4byte gUnknown_2023BC4 +_08018858: .4byte gUnknown_2023BE4 +_0801885C: .4byte gUnknown_2023E82 +_08018860: + ldrb r3, [r5] + adds r0, r3, 0 + muls r0, r7 + adds r2, r0, r6 + ldr r0, [r2] + movs r1, 0x70 + ands r0, r1 + cmp r0, 0 + beq _08018888 + ldr r0, _08018884 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 5 + orrs r0, r1 + str r0, [r2] + b _08018894 + .align 2, 0 +_08018884: .4byte gUnknown_2023E82 +_08018888: + ldr r1, _080188A8 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + adds r0, r3, 0 + bl sub_80172E8 +_08018894: + ldr r0, _080188AC @ =gUnknown_81D90BC + bl sub_801BBE4 + movs r5, 0x1 + mov r9, r5 +_0801889E: + mov r7, r9 + cmp r7, 0x2 + bne _080188A6 + b _08018C46 +_080188A6: + b _08018C12 + .align 2, 0 +_080188A8: .4byte gUnknown_2023E82 +_080188AC: .4byte gUnknown_81D90BC +_080188B0: + ldr r1, _080188E8 @ =gUnknown_2023BE4 + ldrb r0, [r6] + movs r7, 0x58 + muls r0, r7 + adds r5, r1, 0 + adds r5, 0x50 + adds r2, r0, r5 + ldr r1, [r2] + movs r4, 0xC0 + lsls r4, 4 + adds r0, r1, 0 + ands r0, r4 + cmp r0, 0 + bne _080188CE + b _08018C12 +_080188CE: + ldr r3, _080188EC @ =0xfffffc00 + adds r0, r1, r3 + str r0, [r2] + ldrb r0, [r6] + bl sub_8017354 + lsls r0, 24 + cmp r0, 0 + beq _080188F0 + ldrb r0, [r6] + bl sub_80172E8 + b _08018C12 + .align 2, 0 +_080188E8: .4byte gUnknown_2023BE4 +_080188EC: .4byte 0xfffffc00 +_080188F0: + ldrb r0, [r6] + muls r0, r7 + adds r2, r0, r5 + ldr r1, [r2] + adds r0, r1, 0 + ands r0, r4 + cmp r0, 0 + beq _08018902 + b _08018C12 +_08018902: + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _0801890E + b _08018C12 +_0801890E: + ldr r0, _0801894C @ =0xffffefff + ands r1, r0 + str r1, [r2] + ldrb r0, [r6] + muls r0, r7 + adds r0, r5 + ldr r0, [r0] + movs r4, 0x7 + ands r0, r4 + cmp r0, 0 + beq _08018926 + b _08018C12 +_08018926: + ldr r1, _08018950 @ =gUnknown_2023E82 + movs r0, 0x47 + strb r0, [r1, 0x3] + movs r0, 0x1 + movs r1, 0 + bl sub_801FF20 + ldrb r0, [r6] + muls r0, r7 + adds r0, r5 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + bne _08018944 + b _08018C08 +_08018944: + ldr r0, _08018954 @ =gUnknown_81D90C5 + bl sub_801BBE4 + b _08018C08 + .align 2, 0 +_0801894C: .4byte 0xffffefff +_08018950: .4byte gUnknown_2023E82 +_08018954: .4byte gUnknown_81D90C5 +_08018958: + ldr r0, _080189D8 @ =gUnknown_2023E0C + ldrb r3, [r6] + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r5, r1, r0 + ldrb r1, [r5, 0xB] + lsls r1, 28 + adds r7, r0, 0 + cmp r1, 0 + bne _08018970 + b _08018C12 +_08018970: + movs r4, 0 + ldr r2, _080189DC @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r1, r3, 0 + muls r1, r0 + adds r2, 0xC + adds r1, r2 + ldrh r0, [r5, 0x4] + ldrh r1, [r1] + cmp r0, r1 + beq _080189AE + mov r12, r7 + mov r8, r2 + adds r5, r6, 0 + movs r3, 0x58 +_0801898E: + adds r4, 0x1 + cmp r4, 0x3 + bgt _080189AE + ldrb r2, [r5] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + add r1, r12 + lsls r0, r4, 1 + muls r2, r3 + adds r0, r2 + add r0, r8 + ldrh r1, [r1, 0x4] + ldrh r0, [r0] + cmp r1, r0 + bne _0801898E +_080189AE: + cmp r4, 0x4 + bne _080189E0 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + movs r1, 0 + strh r1, [r0, 0x4] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r2, [r1, 0xB] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0xB] + b _08018C12 + .align 2, 0 +_080189D8: .4byte gUnknown_2023E0C +_080189DC: .4byte gUnknown_2023BE4 +_080189E0: + ldrb r0, [r6] + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + adds r2, r7 + ldrb r3, [r2, 0xB] + lsls r1, r3, 28 + lsrs r1, 28 + subs r1, 0x1 + movs r0, 0xF + ands r1, r0 + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0xB] + adds r2, r1, 0 + cmp r2, 0 + beq _08018A08 + b _08018C12 +_08018A08: + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x4] + ldr r0, _08018A18 @ =gUnknown_81D8C5E + b _08018C04 + .align 2, 0 +_08018A18: .4byte gUnknown_81D8C5E +_08018A1C: + ldr r3, _08018A68 @ =gUnknown_2023E0C + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r2, r0, r3 + ldrb r5, [r2, 0xE] + lsls r4, r5, 28 + cmp r4, 0 + bne _08018A32 + b _08018C12 +_08018A32: + ldr r7, _08018A6C @ =gUnknown_2023BE4 + mov r8, r7 + ldrb r0, [r2, 0xC] + lsls r0, 1 + movs r7, 0x58 + muls r1, r7 + adds r0, r1 + mov r1, r8 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + ldrh r1, [r2, 0x6] + cmp r0, r1 + beq _08018A70 + movs r0, 0 + strh r0, [r2, 0x6] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r2, [r1, 0xE] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0xE] + b _08018C12 + .align 2, 0 +_08018A68: .4byte gUnknown_2023E0C +_08018A6C: .4byte gUnknown_2023BE4 +_08018A70: + lsrs r1, r4, 28 + subs r1, 0x1 + movs r0, 0xF + ands r1, r0 + movs r4, 0x10 + negs r4, r4 + adds r0, r4, 0 + ands r0, r5 + orrs r0, r1 + strb r0, [r2, 0xE] + cmp r1, 0 + beq _08018AA6 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3 + muls r1, r7 + ldrb r0, [r0, 0xC] + adds r1, r0 + mov r0, r8 + adds r0, 0x24 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _08018AA6 + b _08018C12 +_08018AA6: + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x6] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r2, [r1, 0xE] + adds r0, r4, 0 + ands r0, r2 + strb r0, [r1, 0xE] + ldr r0, _08018ACC @ =gUnknown_81D8C65 + b _08018C04 + .align 2, 0 +_08018ACC: .4byte gUnknown_81D8C65 +_08018AD0: + ldr r0, _08018AEC @ =gUnknown_2023DFC + ldrb r1, [r6] + lsls r1, 2 + adds r1, r0 + ldr r2, [r1] + movs r0, 0x18 + ands r0, r2 + cmp r0, 0 + beq _08018AE8 + adds r0, r2, 0 + subs r0, 0x8 + str r0, [r1] +_08018AE8: + ldr r1, [r7] + b _08018C16 + .align 2, 0 +_08018AEC: .4byte gUnknown_2023DFC +_08018AF0: + ldr r2, _08018B30 @ =gUnknown_2023E0C + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r3, r0, r2 + ldrb r2, [r3, 0x12] + lsls r1, r2, 28 + cmp r1, 0 + beq _08018B2A + lsrs r1, 28 + subs r1, 0x1 + movs r0, 0xF + ands r1, r0 + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x12] + cmp r1, 0 + bne _08018B2A + ldr r0, _08018B34 @ =gUnknown_2023DFC + ldrb r2, [r6] + lsls r2, 2 + adds r2, r0 + ldr r0, [r2] + ldr r1, _08018B38 @ =0xfffffdff + ands r0, r1 + str r0, [r2] +_08018B2A: + ldr r1, [r7] + b _08018C16 + .align 2, 0 +_08018B30: .4byte gUnknown_2023E0C +_08018B34: .4byte gUnknown_2023DFC +_08018B38: .4byte 0xfffffdff +_08018B3C: + ldr r2, _08018B68 @ =gUnknown_2023E0C + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r3, r0, r2 + ldrb r2, [r3, 0x13] + lsls r1, r2, 28 + cmp r1, 0 + beq _08018B62 + lsrs r1, 28 + subs r1, 0x1 + movs r0, 0xF + ands r1, r0 + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x13] +_08018B62: + ldr r1, [r7] + b _08018C16 + .align 2, 0 +_08018B68: .4byte gUnknown_2023E0C +_08018B6C: + ldr r4, _08018C20 @ =gUnknown_2023DFC + ldrb r0, [r6] + lsls r0, 2 + adds r2, r0, r4 + ldr r1, [r2] + movs r3, 0xC0 + lsls r3, 5 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _08018C12 + ldr r5, _08018C24 @ =0xfffff800 + adds r0, r1, r5 + str r0, [r2] + ldrb r2, [r6] + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + ands r0, r3 + cmp r0, 0 + bne _08018C12 + ldr r3, _08018C28 @ =gUnknown_2023BE4 + movs r5, 0x58 + adds r1, r2, 0 + muls r1, r5 + adds r4, r3, 0 + adds r4, 0x4C + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _08018C12 + adds r0, r1, r3 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x48 + beq _08018C12 + cmp r0, 0xF + beq _08018C12 + adds r0, r2, 0 + bl sub_8027830 + lsls r0, 24 + cmp r0, 0 + bne _08018C12 + ldrb r0, [r6] + bl sub_80172E8 + bl sub_8044EC8 + ldrb r1, [r6] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x2 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r6] + bl sub_8017248 + ldr r1, _08018C2C @ =gUnknown_2023D6E + ldrb r0, [r6] + strb r0, [r1] + ldr r0, _08018C30 @ =gUnknown_81D91C7 +_08018C04: + bl sub_801BBE4 +_08018C08: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08018C12: + ldr r0, _08018C34 @ =gUnknown_2023FE8 + ldr r1, [r0] +_08018C16: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08018C46 + .align 2, 0 +_08018C20: .4byte gUnknown_2023DFC +_08018C24: .4byte 0xfffff800 +_08018C28: .4byte gUnknown_2023BE4 +_08018C2C: .4byte gUnknown_2023D6E +_08018C30: .4byte gUnknown_81D91C7 +_08018C34: .4byte gUnknown_2023FE8 +_08018C38: + ldr r1, [r7] + movs r0, 0 + strb r0, [r1] + ldr r1, [r7] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_08018C46: + mov r7, r9 + cmp r7, 0 + beq _08018C50 +_08018C4C: + mov r0, r9 + b _08018C78 +_08018C50: + ldr r5, _08018C88 @ =gUnknown_2023FE8 + ldr r2, [r5] + ldr r0, _08018C8C @ =gUnknown_2023BCC + ldrb r1, [r2, 0x1] + adds r7, r5, 0 + mov r8, r0 + ldrb r0, [r0] + cmp r1, r0 + bcs _08018C6C +_08018C62: + ldrb r0, [r2] + cmp r0, 0x13 + bhi _08018C6C + bl _0801829C +_08018C6C: + ldr r0, _08018C90 @ =gUnknown_2023DD0 + ldr r1, [r0] + ldr r2, _08018C94 @ =0xfeffffdf + ands r1, r2 + str r1, [r0] + movs r0, 0 +_08018C78: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08018C88: .4byte gUnknown_2023FE8 +_08018C8C: .4byte gUnknown_2023BCC +_08018C90: .4byte gUnknown_2023DD0 +_08018C94: .4byte 0xfeffffdf + thumb_func_end sub_8018258 + + thumb_func_start sub_8018C98 +sub_8018C98: @ 8018C98 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _08018CC8 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08018CCC @ =0x01000020 + orrs r0, r1 + str r0, [r2] + ldr r1, _08018CD0 @ =gUnknown_2023FE8 + ldr r3, [r1] + movs r4, 0xC0 + lsls r4, 1 + adds r0, r3, r4 + ldrb r0, [r0] + adds r7, r1, 0 + cmp r0, 0 + beq _08018CD4 + cmp r0, 0x1 + bne _08018CC4 + b _08018E2C +_08018CC4: + b _08018F68 + .align 2, 0 +_08018CC8: .4byte gUnknown_2023DD0 +_08018CCC: .4byte 0x01000020 +_08018CD0: .4byte gUnknown_2023FE8 +_08018CD4: + ldr r2, _08018D20 @ =0x00000181 + adds r0, r3, r2 + ldr r1, _08018D24 @ =gUnknown_2023BCC + ldrb r0, [r0] + mov r8, r1 + ldrb r6, [r1] + cmp r0, r6 + bcc _08018CE6 + b _08018E16 +_08018CE6: + ldr r4, _08018D28 @ =gUnknown_2023BC4 + ldr r5, _08018D2C @ =gUnknown_2022AB8 + ldr r6, _08018D30 @ =gUnknown_2023F20 + movs r0, 0x8 + adds r0, r6 + mov r10, r0 + movs r1, 0x18 + adds r1, r6 + mov r12, r1 + ldr r3, _08018D34 @ =gUnknown_2023D6C + mov r9, r3 +_08018CFC: + ldr r0, [r7] + adds r3, r0, r2 + ldrb r0, [r3] + strb r0, [r4] + ldr r0, _08018D38 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08018D3C @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08018D40 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + b _08018E04 + .align 2, 0 +_08018D20: .4byte 0x00000181 +_08018D24: .4byte gUnknown_2023BCC +_08018D28: .4byte gUnknown_2023BC4 +_08018D2C: .4byte gUnknown_2022AB8 +_08018D30: .4byte gUnknown_2023F20 +_08018D34: .4byte gUnknown_2023D6C +_08018D38: .4byte gUnknown_2023D70 +_08018D3C: .4byte gUnknown_825E45C +_08018D40: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + ldr r1, _08018D80 @ =gUnknown_2023F20 + ldrb r0, [r4] + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + beq _08018E04 + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + bne _08018E04 + ldr r1, _08018D84 @ =gUnknown_2023BE4 + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08018E04 + lsls r0, r2, 1 + add r0, r12 + ldrh r0, [r0] + cmp r0, 0xF8 + bne _08018D8C + ldr r0, _08018D88 @ =gUnknown_2023E82 + strb r3, [r0, 0x5] + b _08018D92 + .align 2, 0 +_08018D80: .4byte gUnknown_2023F20 +_08018D84: .4byte gUnknown_2023BE4 +_08018D88: .4byte gUnknown_2023E82 +_08018D8C: + ldr r1, _08018DEC @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] +_08018D92: + movs r0, 0xFD + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, 0x1] + ldrb r0, [r4] + lsls r0, 1 + add r0, r12 + ldrh r0, [r0] + strb r0, [r5, 0x2] + ldrb r0, [r4] + lsls r0, 1 + add r0, r12 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r5, 0x3] + movs r0, 0xFF + strb r0, [r5, 0x4] + ldrb r0, [r4] + mov r1, r9 + strb r0, [r1] + ldr r1, _08018DF0 @ =gUnknown_2023D6B + adds r0, r6, 0x4 + ldrb r2, [r4] + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _08018DF4 @ =gUnknown_2023D50 + ldrb r0, [r4] + lsls r0, 2 + add r0, r10 + ldr r0, [r0] + str r0, [r1] + ldr r2, _08018DF8 @ =gUnknown_2023ECC + mov r3, r9 + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x4 + adds r0, r2 + ldr r1, _08018DFC @ =0x0000ffff + str r1, [r0] + ldr r0, _08018E00 @ =gUnknown_81D8E12 + b _08018F44 + .align 2, 0 +_08018DEC: .4byte gUnknown_2023E82 +_08018DF0: .4byte gUnknown_2023D6B +_08018DF4: .4byte gUnknown_2023D50 +_08018DF8: .4byte gUnknown_2023ECC +_08018DFC: .4byte 0x0000ffff +_08018E00: .4byte gUnknown_81D8E12 +_08018E04: + ldr r0, [r7] + ldr r2, _08018E7C @ =0x00000181 + adds r0, r2 + ldrb r0, [r0] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bcs _08018E16 + b _08018CFC +_08018E16: + ldr r0, [r7] + movs r2, 0xC0 + lsls r2, 1 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r7] + ldr r3, _08018E7C @ =0x00000181 + adds r1, r0, r3 + movs r0, 0 + strb r0, [r1] +_08018E2C: + adds r3, r7, 0 + ldr r0, [r3] + ldr r2, _08018E7C @ =0x00000181 + adds r0, r2 + ldr r1, _08018E80 @ =gUnknown_2023BCC + ldrb r0, [r0] + mov r8, r1 + ldrb r4, [r1] + cmp r0, r4 + bcc _08018E42 + b _08018F68 +_08018E42: + ldr r5, _08018E84 @ =gUnknown_2023BC4 + ldr r4, _08018E88 @ =gUnknown_2022AB8 + ldr r6, _08018E8C @ =gUnknown_2023E0C + mov r12, r6 + ldr r0, _08018E90 @ =gUnknown_2023D6B + mov r9, r0 +_08018E4E: + ldr r1, _08018E94 @ =gUnknown_2023BDE + ldr r0, [r3] + adds r3, r0, r2 + ldrb r0, [r3] + adds r0, r1 + ldrb r0, [r0] + mov r1, r9 + strb r0, [r1] + strb r0, [r5] + ldr r0, _08018E98 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08018E9C @ =gUnknown_825E45C + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08018EA0 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + b _08018F54 + .align 2, 0 +_08018E7C: .4byte 0x00000181 +_08018E80: .4byte gUnknown_2023BCC +_08018E84: .4byte gUnknown_2023BC4 +_08018E88: .4byte gUnknown_2022AB8 +_08018E8C: .4byte gUnknown_2023E0C +_08018E90: .4byte gUnknown_2023D6B +_08018E94: .4byte gUnknown_2023BDE +_08018E98: .4byte gUnknown_2023D70 +_08018E9C: .4byte gUnknown_825E45C +_08018EA0: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + ldr r6, _08018F14 @ =gUnknown_2023DFC + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08018F54 + movs r0, 0xFD + strb r0, [r4] + movs r0, 0x1 + strb r0, [r4, 0x1] + strb r0, [r4, 0x2] + strb r0, [r4, 0x3] + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xF] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r4, 0x4] + movs r0, 0xFF + strb r0, [r4, 0x5] + ldrb r2, [r5] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + mov r3, r12 + adds r4, r0, r3 + ldrb r3, [r4, 0xF] + lsls r1, r3, 28 + cmp r1, 0 + bne _08018F28 + lsls r2, 2 + adds r2, r6 + ldr r0, [r2] + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + str r0, [r2] + ldr r3, _08018F18 @ =gUnknown_2023D50 + ldr r2, _08018F1C @ =gUnknown_2023BE4 + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + str r0, [r3] + ldr r1, _08018F20 @ =gUnknown_2023D74 + ldr r0, _08018F24 @ =gUnknown_81D8D33 + b _08018F40 + .align 2, 0 +_08018F14: .4byte gUnknown_2023DFC +_08018F18: .4byte gUnknown_2023D50 +_08018F1C: .4byte gUnknown_2023BE4 +_08018F20: .4byte gUnknown_2023D74 +_08018F24: .4byte gUnknown_81D8D33 +_08018F28: + lsrs r1, 28 + subs r1, 0x1 + movs r0, 0xF + ands r1, r0 + movs r6, 0x10 + negs r6, r6 + adds r0, r6, 0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, 0xF] + ldr r1, _08018F4C @ =gUnknown_2023D74 + ldr r0, _08018F50 @ =gUnknown_81D8D4E +_08018F40: + str r0, [r1] + ldr r0, [r1] +_08018F44: + bl sub_801BBE4 + movs r0, 0x1 + b _08018F74 + .align 2, 0 +_08018F4C: .4byte gUnknown_2023D74 +_08018F50: .4byte gUnknown_81D8D4E +_08018F54: + adds r3, r7, 0 + ldr r0, [r3] + ldr r2, _08018F84 @ =0x00000181 + adds r0, r2 + ldrb r0, [r0] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bcs _08018F68 + b _08018E4E +_08018F68: + ldr r2, _08018F88 @ =gUnknown_2023DD0 + ldr r0, [r2] + ldr r1, _08018F8C @ =0xfeffffdf + ands r0, r1 + str r0, [r2] + movs r0, 0 +_08018F74: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08018F84: .4byte 0x00000181 +_08018F88: .4byte gUnknown_2023DD0 +_08018F8C: .4byte 0xfeffffdf + thumb_func_end sub_8018C98 + + thumb_func_start sub_8018F90 +sub_8018F90: @ 8018F90 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r0, _08018FA8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08018FD8 + b _08019272 + .align 2, 0 +_08018FA8: .4byte gUnknown_2022B4C +_08018FAC: + ldr r0, _08018FBC @ =gUnknown_81D8694 + bl sub_801BBE4 + ldr r0, [r5] + adds r0, 0x4D + movs r1, 0x2 + b _08018FCC + .align 2, 0 +_08018FBC: .4byte gUnknown_81D8694 +_08018FC0: + ldr r0, _08018FD4 @ =gUnknown_81D869D + bl sub_801BBE4 + ldr r0, [r5] + adds r0, 0x4D + movs r1, 0x5 +_08018FCC: + strb r1, [r0] +_08018FCE: + movs r0, 0x1 + b _08019274 + .align 2, 0 +_08018FD4: .4byte gUnknown_81D869D +_08018FD8: + ldr r0, _08018FF4 @ =gUnknown_2023FE8 + mov r8, r0 +_08018FDC: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x4D + ldrb r0, [r0] + cmp r0, 0x7 + bls _08018FEA + b _08019264 +_08018FEA: + lsls r0, 2 + ldr r1, _08018FF8 @ =_08018FFC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08018FF4: .4byte gUnknown_2023FE8 +_08018FF8: .4byte _08018FFC + .align 2, 0 +_08018FFC: + .4byte _0801901C + .4byte _0801906E + .4byte _08019108 + .4byte _0801914A + .4byte _0801915E + .4byte _080191C8 + .4byte _080191FC + .4byte _08019264 +_0801901C: + mov r4, r8 + ldr r0, [r4] + adds r0, 0x4E + movs r1, 0 + strb r1, [r0] + ldr r1, [r4] + adds r1, 0x4D + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r5, 0 + ldr r0, _080190E8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _0801906E + ldr r6, _080190EC @ =gUnknown_2023D70 +_0801903C: + ldrb r0, [r6] + ldr r2, _080190F0 @ =gUnknown_825E45C + lsls r1, r5, 2 + adds r1, r2 + ldr r4, [r1] + ands r0, r4 + cmp r0, 0 + beq _08019064 + lsls r0, r5, 24 + lsrs r0, 24 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8019C10 + lsls r0, 24 + cmp r0, 0 + bne _08019064 + ldrb r0, [r6] + bics r0, r4 + strb r0, [r6] +_08019064: + adds r5, 0x1 + ldr r0, _080190E8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801903C +_0801906E: + ldr r0, _080190F4 @ =gUnknown_2023FE8 + mov r8, r0 + ldr r1, _080190F8 @ =gUnknown_2023D6D + mov r12, r1 + ldr r2, _080190FC @ =gUnknown_2023D6C + mov r5, r8 + ldr r7, _08019100 @ =gUnknown_2023BE4 + ldr r6, _08019104 @ =gUnknown_2023BCE +_0801907E: + ldr r3, [r5] + adds r1, r3, 0 + adds r1, 0x4E + ldrb r0, [r1] + strb r0, [r2] + mov r4, r12 + strb r0, [r4] + ldrb r4, [r1] + movs r0, 0x58 + muls r0, r4 + adds r0, r7 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _080190C6 + adds r0, r3, 0 + adds r0, 0xDF + ldrb r1, [r0] + ldr r3, _080190F0 @ =gUnknown_825E45C + lsls r0, r4, 1 + adds r0, r6 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080190C6 + ldr r0, _080190EC @ =gUnknown_2023D70 + ldrb r1, [r0] + lsls r0, r4, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080190C6 + b _08018FAC +_080190C6: + ldr r0, [r5] + adds r0, 0x4E + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r0, _080190E8 @ =gUnknown_2023BCC + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r0] + cmp r1, r0 + bne _0801907E + mov r1, r8 + ldr r0, [r1] + adds r0, 0x4D + movs r1, 0x3 + strb r1, [r0] + b _08019264 + .align 2, 0 +_080190E8: .4byte gUnknown_2023BCC +_080190EC: .4byte gUnknown_2023D70 +_080190F0: .4byte gUnknown_825E45C +_080190F4: .4byte gUnknown_2023FE8 +_080190F8: .4byte gUnknown_2023D6D +_080190FC: .4byte gUnknown_2023D6C +_08019100: .4byte gUnknown_2023BE4 +_08019104: .4byte gUnknown_2023BCE +_08019108: + ldr r0, _08019134 @ =gUnknown_2023D6D + ldrb r0, [r0] + bl sub_8017434 + ldr r2, _08019138 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0x4E + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, _0801913C @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _08019140 + ldr r0, [r2] + adds r0, 0x4D + movs r1, 0x3 + strb r1, [r0] + b _08019262 + .align 2, 0 +_08019134: .4byte gUnknown_2023D6D +_08019138: .4byte gUnknown_2023FE8 +_0801913C: .4byte gUnknown_2023BCC +_08019140: + ldr r0, [r2] + adds r0, 0x4D + movs r1, 0x1 + strb r1, [r0] + b _08019262 +_0801914A: + mov r4, r8 + ldr r0, [r4] + adds r0, 0x4E + movs r1, 0 + strb r1, [r0] + ldr r1, [r4] + adds r1, 0x4D + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0801915E: + ldr r0, _080191AC @ =gUnknown_2023D6D + mov r12, r0 + ldr r7, _080191B0 @ =gUnknown_2023D6C + ldr r5, _080191B4 @ =gUnknown_2023FE8 + ldr r2, _080191B8 @ =gUnknown_2023BE4 + ldr r6, _080191BC @ =gUnknown_825E45C +_0801916A: + ldr r0, [r5] + adds r4, r0, 0 + adds r4, 0x4E + ldrb r0, [r4] + strb r0, [r7] + mov r1, r12 + strb r0, [r1] + ldrb r3, [r4] + movs r0, 0x58 + muls r0, r3 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08019198 + ldr r0, _080191C0 @ =gUnknown_2023D70 + ldrb r1, [r0] + lsls r0, r3, 2 + adds r0, r6 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08019198 + b _08018FC0 +_08019198: + adds r0, r3, 0x1 + strb r0, [r4] + ldr r1, _080191C4 @ =gUnknown_2023BCC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _0801916A + b _080191E0 + .align 2, 0 +_080191AC: .4byte gUnknown_2023D6D +_080191B0: .4byte gUnknown_2023D6C +_080191B4: .4byte gUnknown_2023FE8 +_080191B8: .4byte gUnknown_2023BE4 +_080191BC: .4byte gUnknown_825E45C +_080191C0: .4byte gUnknown_2023D70 +_080191C4: .4byte gUnknown_2023BCC +_080191C8: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x4E + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r0, _080191EC @ =gUnknown_2023BCC + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r0] + cmp r1, r0 + bne _080191F0 +_080191E0: + mov r4, r8 + ldr r0, [r4] + adds r0, 0x4D + movs r1, 0x6 + strb r1, [r0] + b _08019264 + .align 2, 0 +_080191EC: .4byte gUnknown_2023BCC +_080191F0: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x4D + movs r1, 0x4 + strb r1, [r0] + b _08019264 +_080191FC: + movs r0, 0 + str r0, [sp] + movs r0, 0x9 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08019216 + b _08018FCE +_08019216: + str r0, [sp] + movs r0, 0xB + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0801922C + b _08018FCE +_0801922C: + movs r0, 0x1 + movs r1, 0 + movs r2, 0x1 + bl sub_801BC68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08019240 + b _08018FCE +_08019240: + str r0, [sp] + movs r0, 0x6 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08019256 + b _08018FCE +_08019256: + ldr r2, _08019280 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0x4D + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08019262: + mov r8, r2 +_08019264: + mov r4, r8 + ldr r0, [r4] + adds r0, 0x4D + ldrb r0, [r0] + cmp r0, 0x7 + beq _08019272 + b _08018FDC +_08019272: + movs r0, 0 +_08019274: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08019280: .4byte gUnknown_2023FE8 + thumb_func_end sub_8018F90 + + thumb_func_start sub_8019284 +sub_8019284: @ 8019284 + push {r4-r6,lr} + movs r3, 0 + ldr r0, _080192C4 @ =gUnknown_2023BCC + adds r5, r0, 0 + ldrb r0, [r5] + cmp r3, r0 + bge _080192BC + ldr r4, _080192C8 @ =gUnknown_2023DC4 + movs r6, 0x80 + lsls r6, 16 + ldr r2, _080192CC @ =gUnknown_2023C34 +_0801929A: + ldr r1, [r2] + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + beq _080192B0 + ldrh r0, [r4] + cmp r0, 0x63 + beq _080192B0 + ldr r0, _080192D0 @ =0xff7fffff + ands r1, r0 + str r1, [r2] +_080192B0: + adds r4, 0x2 + adds r2, 0x58 + adds r3, 0x1 + ldrb r0, [r5] + cmp r3, r0 + blt _0801929A +_080192BC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080192C4: .4byte gUnknown_2023BCC +_080192C8: .4byte gUnknown_2023DC4 +_080192CC: .4byte gUnknown_2023C34 +_080192D0: .4byte 0xff7fffff + thumb_func_end sub_8019284 + + thumb_func_start sub_80192D4 +sub_80192D4: @ 80192D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + movs r0, 0 + mov r9, r0 + ldr r1, _080192F0 @ =gUnknown_2023FC8 + mov r10, r1 + ldr r2, _080192F4 @ =gUnknown_2023FE8 + mov r8, r2 + b _08019302 + .align 2, 0 +_080192F0: .4byte gUnknown_2023FC8 +_080192F4: .4byte gUnknown_2023FE8 +_080192F8: + mov r4, r9 + cmp r4, 0 + beq _08019302 + bl _08019BA8 +_08019302: + mov r7, r8 + ldr r0, [r7] + adds r0, 0xB7 + ldrb r0, [r0] + cmp r0, 0xF + bls _08019312 + bl _08019B98 +_08019312: + lsls r0, 2 + ldr r1, _0801931C @ =_08019320 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801931C: .4byte _08019320 + .align 2, 0 +_08019320: + .4byte _08019360 + .4byte _080193A4 + .4byte _080194E0 + .4byte _08019598 + .4byte _0801960C + .4byte _08019678 + .4byte _080196E0 + .4byte _08019754 + .4byte _080197B8 + .4byte _08019814 + .4byte _080198F8 + .4byte _08019974 + .4byte _080199C8 + .4byte _08019A60 + .4byte _08019B40 + .4byte _08019B98 +_08019360: + ldr r1, _08019390 @ =gUnknown_2023BE4 + ldr r3, _08019394 @ =gUnknown_2023D6B + ldrb r2, [r3] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + ldr r1, _08019398 @ =0xfdffffff + ands r0, r1 + str r0, [r2] + ldr r0, _0801939C @ =gUnknown_2023DFC + ldrb r2, [r3] + lsls r2, 2 + adds r2, r0 + ldr r0, [r2] + ldr r1, _080193A0 @ =0xffffbfff + ands r0, r1 + str r0, [r2] + mov r0, r8 + ldr r1, [r0] + bl _08019B90 + .align 2, 0 +_08019390: .4byte gUnknown_2023BE4 +_08019394: .4byte gUnknown_2023D6B +_08019398: .4byte 0xfdffffff +_0801939C: .4byte gUnknown_2023DFC +_080193A0: .4byte 0xffffbfff +_080193A4: + ldr r7, _0801940C @ =gUnknown_2023BE4 + ldr r4, _08019410 @ =gUnknown_2023D6B + ldrb r1, [r4] + movs r5, 0x58 + adds r0, r1, 0 + muls r0, r5 + adds r6, r7, 0 + adds r6, 0x4C + adds r0, r6 + ldr r0, [r0] + movs r2, 0x7 + mov r8, r2 + ands r0, r2 + cmp r0, 0 + bne _080193C4 + b _08019946 +_080193C4: + adds r0, r1, 0 + bl sub_8027830 + lsls r0, 24 + cmp r0, 0 + beq _08019424 + ldrb r0, [r4] + adds r2, r0, 0 + muls r2, r5 + adds r2, r6 + ldr r0, [r2] + movs r1, 0x8 + negs r1, r1 + ands r0, r1 + str r0, [r2] + ldrb r0, [r4] + adds r2, r0, 0 + muls r2, r5 + adds r0, r7, 0 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + ldr r1, _08019414 @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + bl sub_8017544 + ldr r1, _08019418 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] + ldr r1, _0801941C @ =gUnknown_2023D74 + ldr r0, _08019420 @ =gUnknown_81D9036 + str r0, [r1] + movs r4, 0x2 + mov r9, r4 + b _08019946 + .align 2, 0 +_0801940C: .4byte gUnknown_2023BE4 +_08019410: .4byte gUnknown_2023D6B +_08019414: .4byte 0xf7ffffff +_08019418: .4byte gUnknown_2023E82 +_0801941C: .4byte gUnknown_2023D74 +_08019420: .4byte gUnknown_81D9036 +_08019424: + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r5 + adds r0, r1, r7 + adds r0, 0x20 + ldrb r0, [r0] + movs r3, 0x1 + cmp r0, 0x30 + bne _08019438 + movs r3, 0x2 +_08019438: + adds r2, r1, r6 + ldr r1, [r2] + adds r0, r1, 0 + mov r7, r8 + ands r0, r7 + cmp r0, r3 + bcs _08019450 + movs r0, 0x8 + negs r0, r0 + ands r1, r0 + str r1, [r2] + b _08019454 +_08019450: + subs r0, r1, r3 + str r0, [r2] +_08019454: + ldr r2, _08019498 @ =gUnknown_2023BE4 + ldr r0, _0801949C @ =gUnknown_2023D6B + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r1, r0 + ldr r4, [r0] + movs r0, 0x7 + ands r4, r0 + cmp r4, 0 + beq _080194B0 + ldr r0, _080194A0 @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0xAD + bne _08019478 + b _08019946 +_08019478: + cmp r0, 0xD6 + bne _0801947E + b _08019946 +_0801947E: + ldr r1, _080194A4 @ =gUnknown_2023D74 + ldr r0, _080194A8 @ =gUnknown_81D9029 + str r0, [r1] + ldr r2, _080194AC @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + movs r0, 0x2 + mov r9, r0 + b _08019946 + .align 2, 0 +_08019498: .4byte gUnknown_2023BE4 +_0801949C: .4byte gUnknown_2023D6B +_080194A0: .4byte gUnknown_2023D4A +_080194A4: .4byte gUnknown_2023D74 +_080194A8: .4byte gUnknown_81D9029 +_080194AC: .4byte gUnknown_2023DD0 +_080194B0: + adds r2, 0x50 + adds r2, r1, r2 + ldr r0, [r2] + ldr r1, _080194D0 @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + bl sub_8017544 + ldr r0, _080194D4 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + ldr r1, _080194D8 @ =gUnknown_2023D74 + ldr r0, _080194DC @ =gUnknown_81D9036 + str r0, [r1] + movs r1, 0x2 + mov r9, r1 + b _08019946 + .align 2, 0 +_080194D0: .4byte 0xf7ffffff +_080194D4: .4byte gUnknown_2023E82 +_080194D8: .4byte gUnknown_2023D74 +_080194DC: .4byte gUnknown_81D9036 +_080194E0: + ldr r1, _0801953C @ =gUnknown_2023BE4 + ldr r7, _08019540 @ =gUnknown_2023D6B + ldrb r0, [r7] + movs r6, 0x58 + muls r0, r6 + adds r5, r1, 0 + adds r5, 0x4C + adds r0, r5 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08019580 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08019558 + ldr r2, _08019544 @ =gUnknown_8250C04 + ldr r0, _08019548 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x7D + bne _08019526 + b _08019946 +_08019526: + ldr r1, _0801954C @ =gUnknown_2023D74 + ldr r0, _08019550 @ =gUnknown_81D9080 + str r0, [r1] + ldr r2, _08019554 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + str r0, [r2] + b _08019578 + .align 2, 0 +_0801953C: .4byte gUnknown_2023BE4 +_08019540: .4byte gUnknown_2023D6B +_08019544: .4byte gUnknown_8250C04 +_08019548: .4byte gUnknown_2023D4A +_0801954C: .4byte gUnknown_2023D74 +_08019550: .4byte gUnknown_81D9080 +_08019554: .4byte gUnknown_2023DD0 +_08019558: + ldrb r0, [r7] + adds r2, r0, 0 + muls r2, r6 + adds r2, r5 + ldr r0, [r2] + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + str r0, [r2] + bl sub_8017544 + ldr r1, _08019588 @ =gUnknown_2023D74 + ldr r0, _0801958C @ =gUnknown_81D908D + str r0, [r1] + ldr r0, _08019590 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] +_08019578: + movs r2, 0x2 + mov r9, r2 + ldr r4, _08019594 @ =gUnknown_2023FE8 + mov r8, r4 +_08019580: + mov r7, r8 + ldr r1, [r7] + b _08019B90 + .align 2, 0 +_08019588: .4byte gUnknown_2023D74 +_0801958C: .4byte gUnknown_81D908D +_08019590: .4byte gUnknown_2023E82 +_08019594: .4byte gUnknown_2023FE8 +_08019598: + ldr r1, _080195EC @ =gUnknown_2023BE4 + ldr r0, _080195F0 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x36 + beq _080195AE + b _08019946 +_080195AE: + ldr r0, _080195F4 @ =gUnknown_2023E0C + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x18] + lsls r0, 31 + cmp r0, 0 + bne _080195C2 + b _08019946 +_080195C2: + adds r0, r2, 0 + bl sub_80172E8 + ldr r2, _080195F8 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + ldr r1, _080195FC @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + ldr r1, _08019600 @ =gUnknown_2023D74 + ldr r0, _08019604 @ =gUnknown_81D94F2 + str r0, [r1] + ldr r2, _08019608 @ =gUnknown_2023DCC + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + b _080197F4 + .align 2, 0 +_080195EC: .4byte gUnknown_2023BE4 +_080195F0: .4byte gUnknown_2023D6B +_080195F4: .4byte gUnknown_2023E0C +_080195F8: .4byte gUnknown_2023DD0 +_080195FC: .4byte gUnknown_2023E82 +_08019600: .4byte gUnknown_2023D74 +_08019604: .4byte gUnknown_81D94F2 +_08019608: .4byte gUnknown_2023DCC +_0801960C: + ldr r1, _0801965C @ =gUnknown_2023BE4 + ldr r3, _08019660 @ =gUnknown_2023D6B + ldrb r2, [r3] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 15 + ands r0, r1 + cmp r0, 0 + bne _08019628 + b _08019946 +_08019628: + ldr r0, _08019664 @ =0xffbfffff + ands r1, r0 + str r1, [r2] + ldr r2, _08019668 @ =gUnknown_2023E0C + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x19] + ldrb r0, [r3] + bl sub_80172E8 + ldr r1, _0801966C @ =gUnknown_2023D74 + ldr r0, _08019670 @ =gUnknown_81D7342 + str r0, [r1] + ldr r2, _08019674 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + movs r1, 0x1 + mov r9, r1 + b _08019946 + .align 2, 0 +_0801965C: .4byte gUnknown_2023BE4 +_08019660: .4byte gUnknown_2023D6B +_08019664: .4byte 0xffbfffff +_08019668: .4byte gUnknown_2023E0C +_0801966C: .4byte gUnknown_2023D74 +_08019670: .4byte gUnknown_81D7342 +_08019674: .4byte gUnknown_2023DD0 +_08019678: + ldr r1, _080196C8 @ =gUnknown_2023BE4 + ldr r3, _080196CC @ =gUnknown_2023D6B + ldrb r2, [r3] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08019692 + b _08019946 +_08019692: + movs r0, 0x9 + negs r0, r0 + ands r1, r0 + str r1, [r2] + ldr r0, _080196D0 @ =gUnknown_2023E8C + ldrb r2, [r3] + lsls r2, 4 + adds r2, r0 + ldrb r0, [r2, 0x2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x2] + ldrb r0, [r3] + bl sub_80172E8 + ldr r1, _080196D4 @ =gUnknown_2023D74 + ldr r0, _080196D8 @ =gUnknown_81D90B1 + str r0, [r1] + ldr r2, _080196DC @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + movs r2, 0x1 + mov r9, r2 + b _08019946 + .align 2, 0 +_080196C8: .4byte gUnknown_2023BE4 +_080196CC: .4byte gUnknown_2023D6B +_080196D0: .4byte gUnknown_2023E8C +_080196D4: .4byte gUnknown_2023D74 +_080196D8: .4byte gUnknown_81D90B1 +_080196DC: .4byte gUnknown_2023DD0 +_080196E0: + ldr r0, _08019734 @ =gUnknown_2023E0C + ldr r3, _08019738 @ =gUnknown_2023D6B + ldrb r2, [r3] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldr r0, _0801973C @ =gUnknown_2023D4A + ldrh r1, [r1, 0x4] + ldrh r0, [r0] + cmp r1, r0 + beq _080196FA + b _08019946 +_080196FA: + cmp r1, 0 + bne _08019700 + b _08019946 +_08019700: + ldr r0, _08019740 @ =gUnknown_2023E8C + lsls r2, 4 + adds r2, r0 + ldrb r0, [r2, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x1] + ldr r1, _08019744 @ =gUnknown_2023FC4 + ldrb r0, [r3] + strb r0, [r1, 0x17] + ldrb r0, [r3] + bl sub_80172E8 + ldr r1, _08019748 @ =gUnknown_2023D74 + ldr r0, _0801974C @ =gUnknown_81D8C4F + str r0, [r1] + ldr r2, _08019750 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + movs r4, 0x1 + mov r9, r4 + b _08019946 + .align 2, 0 +_08019734: .4byte gUnknown_2023E0C +_08019738: .4byte gUnknown_2023D6B +_0801973C: .4byte gUnknown_2023D4A +_08019740: .4byte gUnknown_2023E8C +_08019744: .4byte gUnknown_2023FC4 +_08019748: .4byte gUnknown_2023D74 +_0801974C: .4byte gUnknown_81D8C4F +_08019750: .4byte gUnknown_2023DD0 +_08019754: + ldr r0, _0801979C @ =gUnknown_2023E0C + ldr r4, _080197A0 @ =gUnknown_2023D6B + ldrb r3, [r4] + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x13] + lsls r0, 28 + cmp r0, 0 + bne _0801976C + b _08019946 +_0801976C: + ldr r2, _080197A4 @ =gUnknown_8250C04 + ldr r0, _080197A8 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _08019782 + b _08019946 +_08019782: + ldr r0, _080197AC @ =gUnknown_2023E8C + lsls r2, r3, 4 + adds r2, r0 + ldrb r0, [r2, 0x2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x2] + ldrb r0, [r4] + bl sub_80172E8 + ldr r1, _080197B0 @ =gUnknown_2023D74 + ldr r0, _080197B4 @ =gUnknown_81D8ECA + b _08019934 + .align 2, 0 +_0801979C: .4byte gUnknown_2023E0C +_080197A0: .4byte gUnknown_2023D6B +_080197A4: .4byte gUnknown_8250C04 +_080197A8: .4byte gUnknown_2023D4A +_080197AC: .4byte gUnknown_2023E8C +_080197B0: .4byte gUnknown_2023D74 +_080197B4: .4byte gUnknown_81D8ECA +_080197B8: + ldr r4, _080197FC @ =gUnknown_2023D6B + ldrb r0, [r4] + ldr r1, _08019800 @ =gUnknown_2023D4A + ldrh r1, [r1] + bl sub_8017A64 + lsls r0, 24 + cmp r0, 0 + bne _080197CC + b _08019946 +_080197CC: + ldr r0, _08019804 @ =gUnknown_2023E8C + ldrb r2, [r4] + lsls r2, 4 + adds r2, r0 + ldrb r0, [r2, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0x1] + ldrb r0, [r4] + bl sub_80172E8 + ldr r1, _08019808 @ =gUnknown_2023D74 + ldr r0, _0801980C @ =gUnknown_81D8F94 + str r0, [r1] + ldr r2, _08019810 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] +_080197F4: + movs r0, 0x1 + mov r9, r0 + b _08019946 + .align 2, 0 +_080197FC: .4byte gUnknown_2023D6B +_08019800: .4byte gUnknown_2023D4A +_08019804: .4byte gUnknown_2023E8C +_08019808: .4byte gUnknown_2023D74 +_0801980C: .4byte gUnknown_81D8F94 +_08019810: .4byte gUnknown_2023DD0 +_08019814: + ldr r7, _0801985C @ =gUnknown_2023BE4 + ldr r5, _08019860 @ =gUnknown_2023D6B + ldrb r0, [r5] + movs r6, 0x58 + muls r0, r6 + adds r4, r7, 0 + adds r4, 0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r3, 0x7 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _080198E6 + subs r0, r1, 0x1 + str r0, [r2] + ldrb r0, [r5] + muls r0, r6 + adds r0, r4 + ldr r0, [r0] + ands r0, r3 + cmp r0, 0 + beq _080198D4 + bl sub_8044EC8 + movs r1, 0x1 + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + beq _08019868 + ldr r1, _08019864 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + bl sub_8017544 + b _080198B2 + .align 2, 0 +_0801985C: .4byte gUnknown_2023BE4 +_08019860: .4byte gUnknown_2023D6B +_08019864: .4byte gUnknown_2023E82 +_08019868: + ldr r0, _080198B8 @ =gUnknown_2023E82 + movs r4, 0x1 + strb r1, [r0, 0x5] + ldr r1, _080198BC @ =gUnknown_2023D6C + ldrb r0, [r5] + strb r0, [r1] + ldrb r0, [r5] + adds r1, r0, 0 + muls r1, r6 + adds r1, r7 + movs r0, 0x28 + str r0, [sp] + str r2, [sp, 0x4] + ldrb r0, [r5] + str r0, [sp, 0x8] + ldrb r0, [r5] + str r0, [sp, 0xC] + adds r0, r1, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_803ECEC + ldr r1, _080198C0 @ =gUnknown_2023D50 + str r0, [r1] + ldr r0, _080198C4 @ =gUnknown_2023E8C + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + orrs r0, r4 + strb r0, [r1, 0x1] + ldr r2, _080198C8 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] +_080198B2: + ldr r1, _080198CC @ =gUnknown_2023D74 + ldr r0, _080198D0 @ =gUnknown_81D90D3 + b _080198DC + .align 2, 0 +_080198B8: .4byte gUnknown_2023E82 +_080198BC: .4byte gUnknown_2023D6C +_080198C0: .4byte gUnknown_2023D50 +_080198C4: .4byte gUnknown_2023E8C +_080198C8: .4byte gUnknown_2023DD0 +_080198CC: .4byte gUnknown_2023D74 +_080198D0: .4byte gUnknown_81D90D3 +_080198D4: + bl sub_8017544 + ldr r1, _080198EC @ =gUnknown_2023D74 + ldr r0, _080198F0 @ =gUnknown_81D9116 +_080198DC: + str r0, [r1] + movs r1, 0x1 + mov r9, r1 + ldr r2, _080198F4 @ =gUnknown_2023FE8 + mov r8, r2 +_080198E6: + mov r4, r8 + ldr r1, [r4] + b _08019B90 + .align 2, 0 +_080198EC: .4byte gUnknown_2023D74 +_080198F0: .4byte gUnknown_81D9116 +_080198F4: .4byte gUnknown_2023FE8 +_080198F8: + ldr r1, _08019958 @ =gUnknown_2023BE4 + ldr r4, _0801995C @ =gUnknown_2023D6B + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08019946 + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + cmp r1, 0 + bne _08019946 + ldr r0, _08019960 @ =gUnknown_2023E8C + ldrb r2, [r4] + lsls r2, 4 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08019964 @ =gUnknown_2023D74 + ldr r0, _08019968 @ =gUnknown_81D90A1 +_08019934: + str r0, [r1] + ldr r2, _0801996C @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + movs r7, 0x1 + mov r9, r7 +_08019946: + ldr r2, _08019970 @ =gUnknown_2023FE8 + ldr r1, [r2] + adds r1, 0xB7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r8, r2 + b _08019B98 + .align 2, 0 +_08019958: .4byte gUnknown_2023BE4 +_0801995C: .4byte gUnknown_2023D6B +_08019960: .4byte gUnknown_2023E8C +_08019964: .4byte gUnknown_2023D74 +_08019968: .4byte gUnknown_81D90A1 +_0801996C: .4byte gUnknown_2023DD0 +_08019970: .4byte gUnknown_2023FE8 +_08019974: + ldr r0, _0801999C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0xA0 + lsls r0, 8 + ands r1, r0 + movs r0, 0x80 + lsls r0, 8 + cmp r1, r0 + beq _08019988 + b _08019B8C +_08019988: + ldr r0, _080199A0 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _080199AC + ldr r1, _080199A4 @ =gUnknown_2023D74 + ldr r0, _080199A8 @ =gUnknown_81D9180 + b _080199B0 + .align 2, 0 +_0801999C: .4byte gUnknown_2022B4C +_080199A0: .4byte gUnknown_2023D6B +_080199A4: .4byte gUnknown_2023D74 +_080199A8: .4byte gUnknown_81D9180 +_080199AC: + ldr r1, _080199BC @ =gUnknown_2023D74 + ldr r0, _080199C0 @ =gUnknown_81D9192 +_080199B0: + str r0, [r1] + ldr r1, _080199C4 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + movs r0, 0x1 + b _08019B86 + .align 2, 0 +_080199BC: .4byte gUnknown_2023D74 +_080199C0: .4byte gUnknown_81D9192 +_080199C4: .4byte gUnknown_2023E82 +_080199C8: + ldr r1, _08019A00 @ =gUnknown_2023BE4 + ldr r4, _08019A04 @ =gUnknown_2023D6B + ldrb r2, [r4] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0xF0 + lsls r0, 12 + ands r1, r0 + cmp r1, 0 + beq _08019A42 + lsrs r0, r1, 16 + bl sub_8045190 + ldr r1, _08019A08 @ =gUnknown_2023FC4 + strb r0, [r1, 0x17] + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08019A0C + bl sub_8017544 + b _08019A34 + .align 2, 0 +_08019A00: .4byte gUnknown_2023BE4 +_08019A04: .4byte gUnknown_2023D6B +_08019A08: .4byte gUnknown_2023FC4 +_08019A0C: + ldr r0, _08019A48 @ =gUnknown_81D914A + bl sub_8017520 + ldr r2, _08019A4C @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r2] + ldr r0, _08019A50 @ =gUnknown_2023E8C + ldrb r2, [r4] + lsls r2, 4 + adds r2, r0 + ldrb r0, [r2, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2, 0x1] + ldrb r0, [r4] + bl sub_80172E8 +_08019A34: + ldr r1, _08019A54 @ =gUnknown_2023D74 + ldr r0, _08019A58 @ =gUnknown_81D913D + str r0, [r1] + movs r4, 0x1 + mov r9, r4 + ldr r7, _08019A5C @ =gUnknown_2023FE8 + mov r8, r7 +_08019A42: + mov r0, r8 + ldr r1, [r0] + b _08019B90 + .align 2, 0 +_08019A48: .4byte gUnknown_81D914A +_08019A4C: .4byte gUnknown_2023DD0 +_08019A50: .4byte gUnknown_2023E8C +_08019A54: .4byte gUnknown_2023D74 +_08019A58: .4byte gUnknown_81D913D +_08019A5C: .4byte gUnknown_2023FE8 +_08019A60: + ldr r1, _08019A98 @ =gUnknown_2023BE4 + ldr r6, _08019A9C @ =gUnknown_2023D6B + ldrb r0, [r6] + movs r5, 0x58 + muls r0, r5 + adds r1, 0x50 + adds r3, r0, r1 + ldr r2, [r3] + movs r4, 0xC0 + lsls r4, 2 + adds r0, r2, 0 + ands r0, r4 + cmp r0, 0 + beq _08019B32 + ldr r7, _08019AA0 @ =0xffffff00 + adds r0, r2, r7 + str r0, [r3] + ldrb r2, [r6] + adds r0, r2, 0 + muls r0, r5 + adds r0, r1 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _08019AAC + ldr r1, _08019AA4 @ =gUnknown_2023D74 + ldr r0, _08019AA8 @ =gUnknown_81D8BA9 + b _08019B2C + .align 2, 0 +_08019A98: .4byte gUnknown_2023BE4 +_08019A9C: .4byte gUnknown_2023D6B +_08019AA0: .4byte 0xffffff00 +_08019AA4: .4byte gUnknown_2023D74 +_08019AA8: .4byte gUnknown_81D8BA9 +_08019AAC: + ldr r3, _08019B04 @ =gUnknown_2023D58 + lsls r0, r2, 2 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0 + beq _08019B28 + ldr r1, _08019B08 @ =gUnknown_2023D4A + movs r0, 0x75 + strh r0, [r1] + ldrb r0, [r6] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + lsls r0, 1 + mov r1, r10 + str r0, [r1] + ldr r4, _08019B0C @ =gUnknown_2023D6C + ldr r1, _08019B10 @ =gUnknown_2023DD8 + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, _08019B14 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _08019B18 @ =gUnknown_825E45C + ldrb r0, [r4] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08019AF6 + movs r0, 0x75 + movs r1, 0x1 + bl sub_801D05C + strb r0, [r4] +_08019AF6: + ldr r1, _08019B1C @ =gUnknown_2023D74 + ldr r0, _08019B20 @ =gUnknown_81D8BB4 + str r0, [r1] + ldr r2, _08019B24 @ =gUnknown_2023FE8 + mov r8, r2 + b _08019B2E + .align 2, 0 +_08019B04: .4byte gUnknown_2023D58 +_08019B08: .4byte gUnknown_2023D4A +_08019B0C: .4byte gUnknown_2023D6C +_08019B10: .4byte gUnknown_2023DD8 +_08019B14: .4byte gUnknown_2023D70 +_08019B18: .4byte gUnknown_825E45C +_08019B1C: .4byte gUnknown_2023D74 +_08019B20: .4byte gUnknown_81D8BB4 +_08019B24: .4byte gUnknown_2023FE8 +_08019B28: + ldr r1, _08019B38 @ =gUnknown_2023D74 + ldr r0, _08019B3C @ =gUnknown_81D8BFC +_08019B2C: + str r0, [r1] +_08019B2E: + movs r4, 0x1 + mov r9, r4 +_08019B32: + mov r7, r8 + ldr r1, [r7] + b _08019B90 + .align 2, 0 +_08019B38: .4byte gUnknown_2023D74 +_08019B3C: .4byte gUnknown_81D8BFC +_08019B40: + ldr r1, _08019BE8 @ =gUnknown_2023BE4 + ldr r0, _08019BEC @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r4, r0, r1 + ldr r3, [r4] + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _08019B8C + ldr r2, _08019BF0 @ =gUnknown_8250C04 + ldr r0, _08019BF4 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x7D + bne _08019B84 + movs r0, 0x21 + negs r0, r0 + ands r3, r0 + str r3, [r4] + bl sub_8017544 + ldr r1, _08019BF8 @ =gUnknown_2023D74 + ldr r0, _08019BFC @ =gUnknown_81D908D + str r0, [r1] + ldr r1, _08019C00 @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x5] +_08019B84: + movs r0, 0x2 +_08019B86: + mov r9, r0 + ldr r1, _08019C04 @ =gUnknown_2023FE8 + mov r8, r1 +_08019B8C: + mov r2, r8 + ldr r1, [r2] +_08019B90: + adds r1, 0xB7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08019B98: + mov r4, r8 + ldr r0, [r4] + adds r0, 0xB7 + ldrb r0, [r0] + cmp r0, 0xF + beq _08019BA8 + bl _080192F8 +_08019BA8: + mov r7, r9 + cmp r7, 0x2 + bne _08019BD4 + ldr r4, _08019C08 @ =gUnknown_2023BC4 + ldr r0, _08019BEC @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r4] + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + ldr r1, _08019C0C @ =gUnknown_2023C30 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 +_08019BD4: + mov r0, r9 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08019BE8: .4byte gUnknown_2023BE4 +_08019BEC: .4byte gUnknown_2023D6B +_08019BF0: .4byte gUnknown_8250C04 +_08019BF4: .4byte gUnknown_2023D4A +_08019BF8: .4byte gUnknown_2023D74 +_08019BFC: .4byte gUnknown_81D908D +_08019C00: .4byte gUnknown_2023E82 +_08019C04: .4byte gUnknown_2023FE8 +_08019C08: .4byte gUnknown_2023BC4 +_08019C0C: .4byte gUnknown_2023C30 + thumb_func_end sub_80192D4 + + thumb_func_start sub_8019C10 +sub_8019C10: @ 8019C10 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + adds r3, r4, 0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + ldr r0, _08019C3C @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08019C40 + movs r0, 0 + b _08019D90 + .align 2, 0 +_08019C3C: .4byte gUnknown_2022B4C +_08019C40: + movs r0, 0x40 + ands r1, r0 + cmp r1, 0 + beq _08019CCC + adds r0, r4, 0 + bl sub_8043658 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + ldr r1, _08019CC4 @ =gUnknown_202402C + mov r8, r1 + cmp r0, 0 + bne _08019C66 + ldr r0, _08019CC8 @ =gUnknown_2024284 + mov r8, r0 +_08019C66: + adds r0, r7, 0 + bl sub_8043620 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 1 + adds r5, r0, r6 + adds r0, r5, 0x3 + cmp r5, r0 + bge _08019CB2 + adds r7, r0, 0 +_08019C7C: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08019CAC + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08019CAC + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _08019CB2 +_08019CAC: + adds r5, 0x1 + cmp r5, r7 + blt _08019C7C +_08019CB2: + movs r1, 0 + lsls r0, r6, 1 + adds r0, r6 + adds r0, 0x3 + cmp r5, r0 + bne _08019CC0 + movs r1, 0x1 +_08019CC0: + adds r0, r1, 0 + b _08019D90 + .align 2, 0 +_08019CC4: .4byte gUnknown_202402C +_08019CC8: .4byte gUnknown_2024284 +_08019CCC: + adds r0, r3, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08019CF8 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08019CF4 @ =gUnknown_202402C + mov r8, r0 + b _08019D10 + .align 2, 0 +_08019CF4: .4byte gUnknown_202402C +_08019CF8: + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08019DA0 @ =gUnknown_2024284 + mov r8, r1 +_08019D10: + mov r0, r10 + cmp r0, 0x6 + bne _08019D20 + ldr r1, _08019DA4 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrb r0, [r0] + mov r10, r0 +_08019D20: + mov r1, r9 + cmp r1, 0x6 + bne _08019D30 + ldr r1, _08019DA4 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrb r0, [r0] + mov r9, r0 +_08019D30: + movs r5, 0 +_08019D32: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08019D82 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0 + beq _08019D82 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _08019D82 + cmp r5, r10 + beq _08019D82 + cmp r5, r9 + beq _08019D82 + ldr r0, _08019DA8 @ =gUnknown_2023FE8 + ldr r1, [r0] + adds r0, r7, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r5, r0 + beq _08019D82 + adds r0, r6, r1 + adds r0, 0x5C + ldrb r0, [r0] + cmp r5, r0 + bne _08019D88 +_08019D82: + adds r5, 0x1 + cmp r5, 0x5 + ble _08019D32 +_08019D88: + movs r0, 0 + cmp r5, 0x6 + bne _08019D90 + movs r0, 0x1 +_08019D90: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08019DA0: .4byte gUnknown_2024284 +_08019DA4: .4byte gUnknown_2023BCE +_08019DA8: .4byte gUnknown_2023FE8 + thumb_func_end sub_8019C10 + + thumb_func_start sub_8019DAC +sub_8019DAC: @ 8019DAC + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r1, _08019E1C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r6 + adds r4, r0, r1 + ldrh r1, [r4] + ldr r0, _08019E20 @ =0x00000181 + cmp r1, r0 + bne _08019E50 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x3B + bne _08019E50 + ldrh r0, [r4, 0x28] + cmp r0, 0 + beq _08019E50 + str r5, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _08019DFE + str r5, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08019E24 +_08019DFE: + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0 + beq _08019E24 + adds r1, r4, 0 + adds r1, 0x22 + ldrb r0, [r1] + cmp r0, 0 + beq _08019E24 + strb r5, [r2] + strb r5, [r1] + movs r0, 0x1 + b _08019F08 + .align 2, 0 +_08019E1C: .4byte gUnknown_2023BE4 +_08019E20: .4byte 0x00000181 +_08019E24: + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08019E50 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _08019E54 +_08019E50: + movs r0, 0 + b _08019F08 +_08019E54: + ldr r1, _08019F10 @ =gUnknown_2023F1C + ldrh r0, [r1] + movs r2, 0xE7 + ands r2, r0 + adds r4, r1, 0 + cmp r2, 0 + bne _08019E82 + ldr r1, _08019F14 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r6 + adds r1, r0, r1 + adds r3, r1, 0 + adds r3, 0x21 + ldrb r0, [r3] + cmp r0, 0 + beq _08019E82 + adds r1, 0x22 + ldrb r0, [r1] + cmp r0, 0 + beq _08019E82 + strb r2, [r3] + strb r2, [r1] + movs r5, 0x1 +_08019E82: + ldrh r1, [r4] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08019EAE + ldr r1, _08019F14 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r6 + adds r1, r0, r1 + adds r2, r1, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0xA + beq _08019EAE + adds r1, 0x22 + ldrb r0, [r1] + cmp r0, 0xA + beq _08019EAE + movs r0, 0xA + strb r0, [r2] + strb r0, [r1] + movs r5, 0x2 +_08019EAE: + ldrh r1, [r4] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _08019EDA + ldr r1, _08019F14 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r6 + adds r1, r0, r1 + adds r2, r1, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0xB + beq _08019EDA + adds r1, 0x22 + ldrb r0, [r1] + cmp r0, 0xB + beq _08019EDA + movs r0, 0xB + strb r0, [r2] + strb r0, [r1] + movs r5, 0x3 +_08019EDA: + ldrh r1, [r4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08019F06 + ldr r1, _08019F14 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r6 + adds r1, r0, r1 + adds r2, r1, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0xF + beq _08019F06 + adds r1, 0x22 + ldrb r0, [r1] + cmp r0, 0xF + beq _08019F06 + movs r0, 0xF + strb r0, [r2] + strb r0, [r1] + movs r5, 0x4 +_08019F06: + adds r0, r5, 0 +_08019F08: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08019F10: .4byte gUnknown_2023F1C +_08019F14: .4byte gUnknown_2023BE4 + thumb_func_end sub_8019DAC + + thumb_func_start sub_8019F18 +sub_8019F18: @ 8019F18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + ldr r4, [sp, 0x48] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0 + mov r9, r0 + ldr r5, _08019F74 @ =gUnknown_2023D6B + ldr r1, _08019F78 @ =gUnknown_2023BCC + ldrb r0, [r5] + ldrb r1, [r1] + cmp r0, r1 + bcc _08019F54 + mov r1, r10 + strb r1, [r5] +_08019F54: + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08019F84 + ldr r1, _08019F7C @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08019F80 @ =gUnknown_2024284 + b _08019F94 + .align 2, 0 +_08019F74: .4byte gUnknown_2023D6B +_08019F78: .4byte gUnknown_2023BCC +_08019F7C: .4byte gUnknown_2023BCE +_08019F80: .4byte gUnknown_2024284 +_08019F84: + ldr r1, _08019FC4 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08019FC8 @ =gUnknown_202402C +_08019F94: + adds r6, r1, r0 + ldr r5, _08019FCC @ =gUnknown_2023D6C + ldr r1, _08019FD0 @ =gUnknown_2023BCC + ldrb r0, [r5] + ldrb r1, [r1] + cmp r0, r1 + bcc _08019FA6 + mov r2, r10 + strb r2, [r5] +_08019FA6: + ldrb r0, [r5] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08019FD8 + ldr r1, _08019FC4 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08019FD4 @ =gUnknown_2024284 + b _08019FE8 + .align 2, 0 +_08019FC4: .4byte gUnknown_2023BCE +_08019FC8: .4byte gUnknown_202402C +_08019FCC: .4byte gUnknown_2023D6C +_08019FD0: .4byte gUnknown_2023BCC +_08019FD4: .4byte gUnknown_2024284 +_08019FD8: + ldr r1, _0801A038 @ =gUnknown_2023BCE + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0801A03C @ =gUnknown_202402C +_08019FE8: + adds r5, r1, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [sp, 0x14] + ldr r0, _0801A040 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0801A02A + bl _0801BBC6 +_0801A02A: + mov r3, r8 + cmp r3, 0 + beq _0801A048 + ldr r0, _0801A044 @ =gUnknown_2023D6A + strb r3, [r0] + mov r8, r0 + b _0801A05E + .align 2, 0 +_0801A038: .4byte gUnknown_2023BCE +_0801A03C: .4byte gUnknown_202402C +_0801A040: .4byte gUnknown_2022B4C +_0801A044: .4byte gUnknown_2023D6A +_0801A048: + ldr r2, _0801A078 @ =gUnknown_2023D6A + ldr r1, _0801A07C @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r3, r10 + muls r3, r0 + adds r0, r3, 0 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r2] + mov r8, r2 +_0801A05E: + cmp r4, 0 + bne _0801A066 + ldr r0, _0801A080 @ =gUnknown_2023D4A + ldrh r4, [r0] +_0801A066: + ldr r1, _0801A084 @ =gUnknown_2023FE8 + ldr r0, [r1] + ldrb r0, [r0, 0x13] + adds r6, r1, 0 + cmp r0, 0 + beq _0801A088 + movs r5, 0x3F + ands r5, r0 + b _0801A094 + .align 2, 0 +_0801A078: .4byte gUnknown_2023D6A +_0801A07C: .4byte gUnknown_2023BE4 +_0801A080: .4byte gUnknown_2023D4A +_0801A084: .4byte gUnknown_2023FE8 +_0801A088: + ldr r1, _0801A0D0 @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x2] +_0801A094: + ldr r0, _0801A0D4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xA0 + lsls r1, 8 + ands r0, r1 + movs r1, 0x80 + lsls r1, 8 + cmp r0, r1 + bne _0801A0BA + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0x16 + bne _0801A0B2 + bl _0801BBC6 +_0801A0B2: + cmp r0, 0x24 + bne _0801A0BA + bl _0801BBC6 +_0801A0BA: + ldr r2, [sp, 0x4] + cmp r2, 0x13 + bls _0801A0C4 + bl _0801BBAA +_0801A0C4: + lsls r0, r2, 2 + ldr r1, _0801A0D8 @ =_0801A0DC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801A0D0: .4byte gUnknown_8250C04 +_0801A0D4: .4byte gUnknown_2022B4C +_0801A0D8: .4byte _0801A0DC + .align 2, 0 +_0801A0DC: + .4byte _0801A12C + .4byte _0801A3E0 + .4byte _0801A600 + .4byte _0801A698 + .4byte _0801A8B8 + .4byte _0801B010 + .4byte _0801B374 + .4byte _0801B3C8 + .4byte _0801B450 + .4byte _0801B4D4 + .4byte _0801B6FC + .4byte _0801B518 + .4byte _0801B740 + .4byte _0801B79C + .4byte _0801B7F8 + .4byte _0801B90C + .4byte _0801B9A8 + .4byte _0801BA04 + .4byte _0801BB78 + .4byte _0801B8B4 +_0801A12C: + ldr r2, _0801A160 @ =gUnknown_2023D6B + ldr r0, _0801A164 @ =gUnknown_2023BCC + ldrb r1, [r2] + adds r3, r0, 0 + ldrb r4, [r3] + cmp r1, r4 + bcc _0801A13E + mov r0, r10 + strb r0, [r2] +_0801A13E: + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0x2D + bne _0801A148 + b _0801A2AC +_0801A148: + cmp r0, 0x2D + bgt _0801A178 + cmp r0, 0xD + bne _0801A152 + b _0801A3A8 +_0801A152: + cmp r0, 0xD + bgt _0801A168 + cmp r0, 0x2 + bne _0801A15C + b _0801A27C +_0801A15C: + bl _0801BBAA + .align 2, 0 +_0801A160: .4byte gUnknown_2023D6B +_0801A164: .4byte gUnknown_2023BCC +_0801A168: + cmp r0, 0x16 + bne _0801A16E + b _0801A30C +_0801A16E: + cmp r0, 0x24 + bne _0801A174 + b _0801A36C +_0801A174: + bl _0801BBAA +_0801A178: + cmp r0, 0x46 + bne _0801A17E + b _0801A2DC +_0801A17E: + cmp r0, 0x46 + bgt _0801A18C + cmp r0, 0x3B + bne _0801A188 + b _0801A340 +_0801A188: + bl _0801BBAA +_0801A18C: + cmp r0, 0x4D + bne _0801A192 + b _0801A3A8 +_0801A192: + cmp r0, 0xFF + beq _0801A19A + bl _0801BBAA +_0801A19A: + bl sub_807AF98 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x3 + cmp r0, 0xA + bhi _0801A250 + lsls r0, 2 + ldr r1, _0801A1B4 @ =_0801A1B8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801A1B4: .4byte _0801A1B8 + .align 2, 0 +_0801A1B8: + .4byte _0801A1E4 + .4byte _0801A250 + .4byte _0801A1E4 + .4byte _0801A250 + .4byte _0801A250 + .4byte _0801A208 + .4byte _0801A250 + .4byte _0801A250 + .4byte _0801A250 + .4byte _0801A22C + .4byte _0801A1E4 +_0801A1E4: + ldr r2, _0801A200 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801A250 + movs r0, 0x5 + strh r0, [r2] + ldr r1, _0801A204 @ =gUnknown_2023FC4 + movs r0, 0xA + strb r0, [r1, 0x10] + mov r2, r10 + strb r2, [r1, 0x17] + b _0801A246 + .align 2, 0 +_0801A200: .4byte gUnknown_2023F1C +_0801A204: .4byte gUnknown_2023FC4 +_0801A208: + ldr r3, _0801A224 @ =gUnknown_2023F1C + ldrh r1, [r3] + movs r2, 0x18 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _0801A250 + strh r2, [r3] + ldr r1, _0801A228 @ =gUnknown_2023FC4 + movs r0, 0xC + strb r0, [r1, 0x10] + mov r3, r10 + strb r3, [r1, 0x17] + b _0801A246 + .align 2, 0 +_0801A224: .4byte gUnknown_2023F1C +_0801A228: .4byte gUnknown_2023FC4 +_0801A22C: + ldr r3, _0801A26C @ =gUnknown_2023F1C + ldrh r1, [r3] + movs r2, 0x60 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _0801A250 + strh r2, [r3] + ldr r1, _0801A270 @ =gUnknown_2023FC4 + movs r0, 0xB + strb r0, [r1, 0x10] + mov r4, r10 + strb r4, [r1, 0x17] +_0801A246: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801A250: + mov r0, r9 + cmp r0, 0 + bne _0801A25A + bl _0801BBC6 +_0801A25A: + bl sub_807AF98 + ldr r1, _0801A274 @ =gUnknown_2023E82 + strb r0, [r1, 0x5] + ldr r0, _0801A278 @ =gUnknown_81D8B1F + bl sub_801BC24 + bl _0801BBAA + .align 2, 0 +_0801A26C: .4byte gUnknown_2023F1C +_0801A270: .4byte gUnknown_2023FC4 +_0801A274: .4byte gUnknown_2023E82 +_0801A278: .4byte gUnknown_81D8B1F +_0801A27C: + ldr r2, _0801A2A0 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801A28C + bl _0801BBAA +_0801A28C: + movs r0, 0x5 + strh r0, [r2] + ldr r0, _0801A2A4 @ =gUnknown_81D927F + bl sub_801BC24 + ldr r0, _0801A2A8 @ =gUnknown_2023FC4 + mov r1, r10 + strb r1, [r0, 0x17] + bl _0801BB5A + .align 2, 0 +_0801A2A0: .4byte gUnknown_2023F1C +_0801A2A4: .4byte gUnknown_81D927F +_0801A2A8: .4byte gUnknown_2023FC4 +_0801A2AC: + ldr r2, _0801A2D0 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801A2BC + bl _0801BBAA +_0801A2BC: + movs r0, 0x18 + strh r0, [r2] + ldr r0, _0801A2D4 @ =gUnknown_81D92BF + bl sub_801BC24 + ldr r0, _0801A2D8 @ =gUnknown_2023FC4 + mov r2, r10 + strb r2, [r0, 0x17] + bl _0801BB5A + .align 2, 0 +_0801A2D0: .4byte gUnknown_2023F1C +_0801A2D4: .4byte gUnknown_81D92BF +_0801A2D8: .4byte gUnknown_2023FC4 +_0801A2DC: + ldr r2, _0801A300 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801A2EC + bl _0801BBAA +_0801A2EC: + movs r0, 0x60 + strh r0, [r2] + ldr r0, _0801A304 @ =gUnknown_81D9379 + bl sub_801BC24 + ldr r0, _0801A308 @ =gUnknown_2023FC4 + mov r3, r10 + strb r3, [r0, 0x17] + bl _0801BB5A + .align 2, 0 +_0801A300: .4byte gUnknown_2023F1C +_0801A304: .4byte gUnknown_81D9379 +_0801A308: .4byte gUnknown_2023FC4 +_0801A30C: + ldr r0, _0801A338 @ =gUnknown_2023ECC + mov r4, r10 + lsls r2, r4, 2 + adds r1, r2, r4 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3] + lsls r0, 28 + cmp r0, 0 + bge _0801A324 + bl _0801BBAA +_0801A324: + ldr r1, _0801A33C @ =gUnknown_2023DFC + adds r1, r2, r1 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 12 + orrs r0, r2 + str r0, [r1] + ldrb r0, [r3] + movs r1, 0x8 + b _0801A396 + .align 2, 0 +_0801A338: .4byte gUnknown_2023ECC +_0801A33C: .4byte gUnknown_2023DFC +_0801A340: + mov r0, r10 + bl sub_8019DAC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0 + bne _0801A354 + bl _0801BBC6 +_0801A354: + ldr r0, _0801A364 @ =gUnknown_81D92F8 + bl sub_801BC24 + ldr r0, _0801A368 @ =gUnknown_2023FC4 + mov r1, r10 + strb r1, [r0, 0x17] + bl _0801BA6A + .align 2, 0 +_0801A364: .4byte gUnknown_81D92F8 +_0801A368: .4byte gUnknown_2023FC4 +_0801A36C: + ldr r0, _0801A3A0 @ =gUnknown_2023ECC + mov r3, r10 + lsls r2, r3, 2 + adds r1, r2, r3 + lsls r1, 2 + adds r3, r1, r0 + ldrb r0, [r3] + lsls r0, 27 + cmp r0, 0 + bge _0801A384 + bl _0801BBAA +_0801A384: + ldr r1, _0801A3A4 @ =gUnknown_2023DFC + adds r1, r2, r1 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 13 + orrs r0, r2 + str r0, [r1] + ldrb r0, [r3] + movs r1, 0x10 +_0801A396: + orrs r0, r1 + strb r0, [r3] + bl _0801BBAA + .align 2, 0 +_0801A3A0: .4byte gUnknown_2023ECC +_0801A3A4: .4byte gUnknown_2023DFC +_0801A3A8: + movs r4, 0 + ldrb r3, [r3] + cmp r4, r3 + bcc _0801A3B4 + bl _0801BBAA +_0801A3B4: + adds r0, r4, 0 + bl sub_8019DAC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0 + beq _0801A3C8 + bl _0801BA60 +_0801A3C8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0801A3DC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bcc _0801A3B4 + bl _0801BBAA + .align 2, 0 +_0801A3DC: .4byte gUnknown_2023BCC +_0801A3E0: + ldr r7, _0801A410 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r6, r10 + muls r6, r0 + adds r4, r6, r7 + ldrh r0, [r4, 0x28] + cmp r0, 0 + bne _0801A3F4 + bl _0801BBAA +_0801A3F4: + ldr r0, _0801A414 @ =gUnknown_2023D6B + mov r1, r10 + strb r1, [r0] + mov r2, r8 + ldrb r5, [r2] + cmp r5, 0x2C + beq _0801A426 + cmp r5, 0x2C + bgt _0801A418 + cmp r5, 0x3 + bne _0801A40C + b _0801A58C +_0801A40C: + bl _0801BBAA + .align 2, 0 +_0801A410: .4byte gUnknown_2023BE4 +_0801A414: .4byte gUnknown_2023D6B +_0801A418: + cmp r5, 0x36 + bne _0801A41E + b _0801A5D8 +_0801A41E: + cmp r5, 0x3D + beq _0801A4A8 + bl _0801BBAA +_0801A426: + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0801A442 + bl _0801BBAA +_0801A442: + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0801A45A + bl _0801BBAA +_0801A45A: + ldr r0, _0801A49C @ =gUnknown_2023F1C + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801A46A + bl _0801BBAA +_0801A46A: + ldrh r0, [r4, 0x2C] + ldrh r3, [r4, 0x28] + cmp r0, r3 + bhi _0801A476 + bl _0801BBAA +_0801A476: + mov r0, r8 + strb r5, [r0] + ldr r0, _0801A4A0 @ =gUnknown_81D92AB + bl sub_801BC24 + ldr r1, _0801A4A4 @ =gUnknown_2023D50 + ldrh r0, [r4, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _0801A490 + movs r0, 0x1 + str r0, [r1] +_0801A490: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + bl _0801BB5A + .align 2, 0 +_0801A49C: .4byte gUnknown_2023F1C +_0801A4A0: .4byte gUnknown_81D92AB +_0801A4A4: .4byte gUnknown_2023D50 +_0801A4A8: + adds r0, r7, 0 + adds r0, 0x4C + adds r5, r6, r0 + ldrb r0, [r5] + cmp r0, 0 + bne _0801A4B8 + bl _0801BBAA +_0801A4B8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _0801A4D2 + bl _0801BBAA +_0801A4D2: + ldr r0, [r5] + movs r1, 0x88 + ands r0, r1 + cmp r0, 0 + beq _0801A4E4 + ldr r0, _0801A564 @ =gUnknown_2022AB8 + ldr r1, _0801A568 @ =gUnknown_8250094 + bl sub_8008D84 +_0801A4E4: + ldr r0, [r5] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0801A4F6 + ldr r0, _0801A564 @ =gUnknown_2022AB8 + ldr r1, _0801A56C @ =gUnknown_825009C + bl sub_8008D84 +_0801A4F6: + ldr r0, [r5] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801A508 + ldr r0, _0801A564 @ =gUnknown_2022AB8 + ldr r1, _0801A570 @ =gUnknown_82500A4 + bl sub_8008D84 +_0801A508: + ldr r0, [r5] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801A51A + ldr r0, _0801A564 @ =gUnknown_2022AB8 + ldr r1, _0801A574 @ =gUnknown_82500AC + bl sub_8008D84 +_0801A51A: + ldr r0, [r5] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0801A52C + ldr r0, _0801A564 @ =gUnknown_2022AB8 + ldr r1, _0801A578 @ =gUnknown_82500B4 + bl sub_8008D84 +_0801A52C: + str r4, [r5] + adds r1, r7, 0 + adds r1, 0x50 + adds r1, r6, r1 + ldr r0, [r1] + ldr r2, _0801A57C @ =0xf7ffffff + ands r0, r2 + str r0, [r1] + ldr r0, _0801A580 @ =gUnknown_2023FC4 + ldr r4, _0801A584 @ =gUnknown_2023BC4 + mov r1, r10 + strb r1, [r4] + strb r1, [r0, 0x17] + ldr r0, _0801A588 @ =gUnknown_81D92D3 + bl sub_801BC24 + str r5, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + bl _0801BB5A + .align 2, 0 +_0801A564: .4byte gUnknown_2022AB8 +_0801A568: .4byte gUnknown_8250094 +_0801A56C: .4byte gUnknown_825009C +_0801A570: .4byte gUnknown_82500A4 +_0801A574: .4byte gUnknown_82500AC +_0801A578: .4byte gUnknown_82500B4 +_0801A57C: .4byte 0xf7ffffff +_0801A580: .4byte gUnknown_2023FC4 +_0801A584: .4byte gUnknown_2023BC4 +_0801A588: .4byte gUnknown_81D92D3 +_0801A58C: + ldrb r2, [r4, 0x1B] + movs r0, 0x1B + ldrsb r0, [r4, r0] + cmp r0, 0xB + ble _0801A59A + bl _0801BBAA +_0801A59A: + ldr r0, _0801A5CC @ =gUnknown_2023E0C + mov r3, r10 + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x16] + cmp r0, 0x2 + bne _0801A5B0 + bl _0801BBAA +_0801A5B0: + adds r0, r2, 0x1 + movs r1, 0 + strb r0, [r4, 0x1B] + ldr r4, _0801A5D0 @ =gUnknown_2023FC4 + movs r0, 0x11 + strb r0, [r4, 0x10] + strb r1, [r4, 0x11] + ldr r0, _0801A5D4 @ =gUnknown_81D9293 + bl sub_801BC24 + mov r0, r10 + strb r0, [r4, 0x17] + bl _0801BB5A + .align 2, 0 +_0801A5CC: .4byte gUnknown_2023E0C +_0801A5D0: .4byte gUnknown_2023FC4 +_0801A5D4: .4byte gUnknown_81D9293 +_0801A5D8: + ldr r2, _0801A5FC @ =gUnknown_2023E0C + ldrb r0, [r0] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r3, [r1, 0x18] + lsls r0, r3, 31 + lsrs r0, 31 + movs r2, 0x1 + eors r2, r0 + movs r0, 0x2 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x18] + bl _0801BBAA + .align 2, 0 +_0801A5FC: .4byte gUnknown_2023E0C +_0801A600: + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0x2B + beq _0801A60C + bl _0801BBAA +_0801A60C: + movs r5, 0 + ldr r0, _0801A67C @ =gUnknown_8250104 + ldrh r2, [r0] + ldr r3, _0801A680 @ =0x0000ffff + adds r1, r0, 0 + cmp r2, r3 + bne _0801A61E + bl _0801BBAA +_0801A61E: + cmp r2, r4 + beq _0801A636 + adds r2, r1, 0 +_0801A624: + adds r2, 0x2 + adds r5, 0x1 + ldrh r0, [r2] + cmp r0, r3 + bne _0801A632 + bl _0801BBAA +_0801A632: + cmp r0, r4 + bne _0801A624 +_0801A636: + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _0801A680 @ =0x0000ffff + cmp r1, r0 + bne _0801A646 + bl _0801BBAA +_0801A646: + ldr r1, _0801A684 @ =gUnknown_2023BE4 + ldr r0, _0801A688 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + beq _0801A66C + ldr r0, _0801A68C @ =gUnknown_2023DD0 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 4 + orrs r1, r2 + str r1, [r0] +_0801A66C: + ldr r1, _0801A690 @ =gUnknown_2023D74 + ldr r0, _0801A694 @ =gUnknown_81D946E + str r0, [r1] + movs r2, 0x1 + mov r9, r2 + bl _0801BBB0 + .align 2, 0 +_0801A67C: .4byte gUnknown_8250104 +_0801A680: .4byte 0x0000ffff +_0801A684: .4byte gUnknown_2023BE4 +_0801A688: .4byte gUnknown_2023D6B +_0801A68C: .4byte gUnknown_2023DD0 +_0801A690: .4byte gUnknown_2023D74 +_0801A694: .4byte gUnknown_81D946E +_0801A698: + cmp r4, 0 + bne _0801A6A0 + bl _0801BBAA +_0801A6A0: + mov r3, r8 + ldrb r0, [r3] + cmp r0, 0xB + beq _0801A710 + cmp r0, 0xB + bgt _0801A6B2 + cmp r0, 0xA + beq _0801A6B8 + b _0801A832 +_0801A6B2: + cmp r0, 0x12 + beq _0801A768 + b _0801A832 +_0801A6B8: + cmp r5, 0xD + beq _0801A6BE + b _0801A832 +_0801A6BE: + ldr r0, _0801A6E8 @ =gUnknown_8250C04 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0801A6D0 + b _0801A832 +_0801A6D0: + ldr r1, _0801A6EC @ =gUnknown_2023E8C + ldr r0, _0801A6F0 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + lsls r0, 28 + cmp r0, 0 + bge _0801A6FC + ldr r1, _0801A6F4 @ =gUnknown_2023D74 + ldr r0, _0801A6F8 @ =gUnknown_81D93BE + b _0801A700 + .align 2, 0 +_0801A6E8: .4byte gUnknown_8250C04 +_0801A6EC: .4byte gUnknown_2023E8C +_0801A6F0: .4byte gUnknown_2023D6B +_0801A6F4: .4byte gUnknown_2023D74 +_0801A6F8: .4byte gUnknown_81D93BE +_0801A6FC: + ldr r1, _0801A708 @ =gUnknown_2023D74 + ldr r0, _0801A70C @ =gUnknown_81D93BD +_0801A700: + str r0, [r1] + movs r4, 0x1 + mov r9, r4 + b _0801A832 + .align 2, 0 +_0801A708: .4byte gUnknown_2023D74 +_0801A70C: .4byte gUnknown_81D93BD +_0801A710: + cmp r5, 0xB + beq _0801A716 + b _0801A832 +_0801A716: + ldr r0, _0801A740 @ =gUnknown_8250C04 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0801A728 + b _0801A832 +_0801A728: + ldr r1, _0801A744 @ =gUnknown_2023E8C + ldr r0, _0801A748 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + lsls r0, 28 + cmp r0, 0 + bge _0801A754 + ldr r1, _0801A74C @ =gUnknown_2023D74 + ldr r0, _0801A750 @ =gUnknown_81D93BE + b _0801A758 + .align 2, 0 +_0801A740: .4byte gUnknown_8250C04 +_0801A744: .4byte gUnknown_2023E8C +_0801A748: .4byte gUnknown_2023D6B +_0801A74C: .4byte gUnknown_2023D74 +_0801A750: .4byte gUnknown_81D93BE +_0801A754: + ldr r1, _0801A760 @ =gUnknown_2023D74 + ldr r0, _0801A764 @ =gUnknown_81D93BD +_0801A758: + str r0, [r1] + movs r0, 0x1 + b _0801A830 + .align 2, 0 +_0801A760: .4byte gUnknown_2023D74 +_0801A764: .4byte gUnknown_81D93BD +_0801A768: + cmp r5, 0xA + bne _0801A832 + ldr r1, _0801A7B8 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + bne _0801A832 + ldr r2, _0801A7BC @ =gUnknown_2023FF4 + ldr r0, [r2] + ldr r0, [r0, 0x4] + mov r3, r10 + lsls r1, r3, 2 + adds r0, r1 + ldr r3, [r0] + movs r4, 0x1 + ands r3, r4 + adds r5, r1, 0 + cmp r3, 0 + bne _0801A7F8 + ldr r0, _0801A7C0 @ =gUnknown_2023E82 + strb r3, [r0, 0x5] + ldr r1, _0801A7C4 @ =gUnknown_2023E8C + ldr r0, _0801A7C8 @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + lsls r0, 28 + cmp r0, 0 + bge _0801A7D4 + ldr r1, _0801A7CC @ =gUnknown_2023D74 + ldr r0, _0801A7D0 @ =gUnknown_81D93F7 + b _0801A7D8 + .align 2, 0 +_0801A7B8: .4byte gUnknown_2023BE4 +_0801A7BC: .4byte gUnknown_2023FF4 +_0801A7C0: .4byte gUnknown_2023E82 +_0801A7C4: .4byte gUnknown_2023E8C +_0801A7C8: .4byte gUnknown_2023D6B +_0801A7CC: .4byte gUnknown_2023D74 +_0801A7D0: .4byte gUnknown_81D93F7 +_0801A7D4: + ldr r1, _0801A7F0 @ =gUnknown_2023D74 + ldr r0, _0801A7F4 @ =gUnknown_81D93F6 +_0801A7D8: + str r0, [r1] + ldr r0, [r2] + ldr r1, [r0, 0x4] + adds r1, r5 + ldr r0, [r1] + movs r2, 0x1 + orrs r0, r2 + str r0, [r1] + movs r4, 0x2 + mov r9, r4 + b _0801A832 + .align 2, 0 +_0801A7F0: .4byte gUnknown_2023D74 +_0801A7F4: .4byte gUnknown_81D93F6 +_0801A7F8: + ldr r0, _0801A814 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + ldr r1, _0801A818 @ =gUnknown_2023E8C + ldr r0, _0801A81C @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + lsls r0, 28 + cmp r0, 0 + bge _0801A828 + ldr r1, _0801A820 @ =gUnknown_2023D74 + ldr r0, _0801A824 @ =gUnknown_81D93F7 + b _0801A82C + .align 2, 0 +_0801A814: .4byte gUnknown_2023E82 +_0801A818: .4byte gUnknown_2023E8C +_0801A81C: .4byte gUnknown_2023D6B +_0801A820: .4byte gUnknown_2023D74 +_0801A824: .4byte gUnknown_81D93F7 +_0801A828: + ldr r1, _0801A86C @ =gUnknown_2023D74 + ldr r0, _0801A870 @ =gUnknown_81D93F6 +_0801A82C: + str r0, [r1] + movs r0, 0x2 +_0801A830: + mov r9, r0 +_0801A832: + mov r1, r9 + cmp r1, 0x1 + beq _0801A83C + bl _0801BBAA +_0801A83C: + ldr r1, _0801A874 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + adds r1, r0, r1 + ldrh r0, [r1, 0x2C] + ldrh r3, [r1, 0x28] + cmp r0, r3 + bne _0801A898 + ldr r1, _0801A878 @ =gUnknown_2023E8C + ldr r0, _0801A87C @ =gUnknown_2023D6B + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x2] + lsls r0, 28 + cmp r0, 0 + bge _0801A884 + ldr r1, _0801A86C @ =gUnknown_2023D74 + ldr r0, _0801A880 @ =gUnknown_81D93E1 + str r0, [r1] + bl _0801BBAA + .align 2, 0 +_0801A86C: .4byte gUnknown_2023D74 +_0801A870: .4byte gUnknown_81D93F6 +_0801A874: .4byte gUnknown_2023BE4 +_0801A878: .4byte gUnknown_2023E8C +_0801A87C: .4byte gUnknown_2023D6B +_0801A880: .4byte gUnknown_81D93E1 +_0801A884: + ldr r1, _0801A890 @ =gUnknown_2023D74 + ldr r0, _0801A894 @ =gUnknown_81D93E0 + str r0, [r1] + bl _0801BBAA + .align 2, 0 +_0801A890: .4byte gUnknown_2023D74 +_0801A894: .4byte gUnknown_81D93E0 +_0801A898: + ldr r2, _0801A8B4 @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + lsrs r0, 2 + str r0, [r2] + cmp r0, 0 + bne _0801A8A8 + mov r4, r9 + str r4, [r2] +_0801A8A8: + ldr r0, [r2] + negs r0, r0 + str r0, [r2] + bl _0801BBAA + .align 2, 0 +_0801A8B4: .4byte gUnknown_2023D50 +_0801A8B8: + mov r1, r8 + ldrb r0, [r1] + subs r0, 0x9 + cmp r0, 0x2F + bls _0801A8C6 + bl _0801BBAA +_0801A8C6: + lsls r0, 2 + ldr r1, _0801A8D0 @ =_0801A8D4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801A8D0: .4byte _0801A8D4 + .align 2, 0 +_0801A8D4: + .4byte _0801ACF0 + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801A994 + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801AA5C + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801AB1C + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801AC14 + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801ADCC + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801BBAA + .4byte _0801AEA8 +_0801A994: + ldr r0, _0801AA3C @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801A9A4 + bl _0801BBAA +_0801A9A4: + cmp r4, 0xA5 + bne _0801A9AC + bl _0801BBAA +_0801A9AC: + ldr r0, _0801AA40 @ =gUnknown_8250C04 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0801A9C0 + bl _0801BBAA +_0801A9C0: + ldr r2, _0801AA44 @ =gUnknown_2023ECC + ldr r0, _0801AA48 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801A9E8 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801A9E8 + bl _0801BBAA +_0801A9E8: + ldr r1, _0801AA4C @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + adds r1, r0, r1 + adds r3, r1, 0 + adds r3, 0x21 + ldrb r0, [r3] + cmp r0, r5 + bne _0801AA02 + bl _0801BBAA +_0801AA02: + adds r2, r1, 0 + adds r2, 0x22 + ldrb r0, [r2] + cmp r0, r5 + bne _0801AA10 + bl _0801BBAA +_0801AA10: + ldrh r0, [r1, 0x28] + cmp r0, 0 + bne _0801AA1A + bl _0801BBAA +_0801AA1A: + strb r5, [r3] + strb r5, [r2] + ldr r1, _0801AA50 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r5, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + bl sub_8017544 + ldr r1, _0801AA54 @ =gUnknown_2023D74 + ldr r0, _0801AA58 @ =gUnknown_81D949C + str r0, [r1] + bl _0801BB5A + .align 2, 0 +_0801AA3C: .4byte gUnknown_2023DCC +_0801AA40: .4byte gUnknown_8250C04 +_0801AA44: .4byte gUnknown_2023ECC +_0801AA48: .4byte gUnknown_2023D6C +_0801AA4C: .4byte gUnknown_2023BE4 +_0801AA50: .4byte gUnknown_2022AB8 +_0801AA54: .4byte gUnknown_2023D74 +_0801AA58: .4byte gUnknown_81D949C +_0801AA5C: + ldr r0, _0801AAF4 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801AA6C + bl _0801BBAA +_0801AA6C: + ldr r1, _0801AAF8 @ =gUnknown_2023BE4 + ldr r0, _0801AAFC @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r3, r0, r1 + ldrh r0, [r3, 0x28] + cmp r0, 0 + bne _0801AA82 + bl _0801BBAA +_0801AA82: + ldr r0, _0801AB00 @ =gUnknown_2023E8C + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 31 + cmp r0, 0 + beq _0801AA94 + bl _0801BBAA +_0801AA94: + ldr r2, _0801AB04 @ =gUnknown_2023ECC + ldr r0, _0801AB08 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AABC + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AABC + bl _0801BBAA +_0801AABC: + ldr r1, _0801AB0C @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _0801AAD6 + bl _0801BBAA +_0801AAD6: + ldr r1, _0801AB10 @ =gUnknown_2023D50 + ldrh r0, [r3, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _0801AAE4 + str r2, [r1] +_0801AAE4: + bl sub_8017544 + ldr r1, _0801AB14 @ =gUnknown_2023D74 + ldr r0, _0801AB18 @ =gUnknown_81D94A3 + str r0, [r1] + bl _0801BB5A + .align 2, 0 +_0801AAF4: .4byte gUnknown_2023DCC +_0801AAF8: .4byte gUnknown_2023BE4 +_0801AAFC: .4byte gUnknown_2023D6B +_0801AB00: .4byte gUnknown_2023E8C +_0801AB04: .4byte gUnknown_2023ECC +_0801AB08: .4byte gUnknown_2023D6C +_0801AB0C: .4byte gUnknown_8250C04 +_0801AB10: .4byte gUnknown_2023D50 +_0801AB14: .4byte gUnknown_2023D74 +_0801AB18: .4byte gUnknown_81D94A3 +_0801AB1C: + ldr r0, _0801ABE8 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801AB2C + bl _0801BBAA +_0801AB2C: + ldr r1, _0801ABEC @ =gUnknown_2023BE4 + ldr r0, _0801ABF0 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801AB42 + bl _0801BBAA +_0801AB42: + ldr r0, _0801ABF4 @ =gUnknown_2023E8C + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 31 + cmp r0, 0 + beq _0801AB54 + bl _0801BBAA +_0801AB54: + ldr r2, _0801ABF8 @ =gUnknown_2023ECC + ldr r0, _0801ABFC @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AB7C + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AB7C + bl _0801BBAA +_0801AB7C: + ldr r1, _0801AC00 @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801AB94 + bl _0801BBAA +_0801AB94: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _0801ABAC + bl _0801BBAA +_0801ABAC: + ldr r5, _0801AC04 @ =gUnknown_2023E82 + movs r4, 0x3 +_0801ABB0: + bl sub_8044EC8 + ands r0, r4 + strb r0, [r5, 0x3] + cmp r0, 0 + beq _0801ABB0 + ldr r1, _0801AC04 @ =gUnknown_2023E82 + ldrb r0, [r1, 0x3] + cmp r0, 0x3 + bne _0801ABC8 + adds r0, 0x2 + strb r0, [r1, 0x3] +_0801ABC8: + ldrb r0, [r1, 0x3] + adds r0, 0x40 + strb r0, [r1, 0x3] + bl sub_8017544 + ldr r1, _0801AC08 @ =gUnknown_2023D74 + ldr r0, _0801AC0C @ =gUnknown_81D94CB + str r0, [r1] + ldr r2, _0801AC10 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 6 + orrs r0, r1 + str r0, [r2] + bl _0801BB5A + .align 2, 0 +_0801ABE8: .4byte gUnknown_2023DCC +_0801ABEC: .4byte gUnknown_2023BE4 +_0801ABF0: .4byte gUnknown_2023D6B +_0801ABF4: .4byte gUnknown_2023E8C +_0801ABF8: .4byte gUnknown_2023ECC +_0801ABFC: .4byte gUnknown_2023D6C +_0801AC00: .4byte gUnknown_8250C04 +_0801AC04: .4byte gUnknown_2023E82 +_0801AC08: .4byte gUnknown_2023D74 +_0801AC0C: .4byte gUnknown_81D94CB +_0801AC10: .4byte gUnknown_2023DD0 +_0801AC14: + ldr r0, _0801ACC4 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801AC24 + bl _0801BBAA +_0801AC24: + ldr r1, _0801ACC8 @ =gUnknown_2023BE4 + ldr r0, _0801ACCC @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801AC3A + bl _0801BBAA +_0801AC3A: + ldr r0, _0801ACD0 @ =gUnknown_2023E8C + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 31 + cmp r0, 0 + beq _0801AC4C + bl _0801BBAA +_0801AC4C: + ldr r2, _0801ACD4 @ =gUnknown_2023ECC + ldr r0, _0801ACD8 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AC74 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AC74 + bl _0801BBAA +_0801AC74: + ldr r1, _0801ACDC @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801AC8C + bl _0801BBAA +_0801AC8C: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _0801ACA4 + bl _0801BBAA +_0801ACA4: + ldr r1, _0801ACE0 @ =gUnknown_2023E82 + movs r0, 0x42 + strb r0, [r1, 0x3] + bl sub_8017544 + ldr r1, _0801ACE4 @ =gUnknown_2023D74 + ldr r0, _0801ACE8 @ =gUnknown_81D94CB + str r0, [r1] + ldr r2, _0801ACEC @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 6 + orrs r0, r1 + str r0, [r2] + bl _0801BB5A + .align 2, 0 +_0801ACC4: .4byte gUnknown_2023DCC +_0801ACC8: .4byte gUnknown_2023BE4 +_0801ACCC: .4byte gUnknown_2023D6B +_0801ACD0: .4byte gUnknown_2023E8C +_0801ACD4: .4byte gUnknown_2023ECC +_0801ACD8: .4byte gUnknown_2023D6C +_0801ACDC: .4byte gUnknown_8250C04 +_0801ACE0: .4byte gUnknown_2023E82 +_0801ACE4: .4byte gUnknown_2023D74 +_0801ACE8: .4byte gUnknown_81D94CB +_0801ACEC: .4byte gUnknown_2023DD0 +_0801ACF0: + ldr r0, _0801ADA0 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801AD00 + bl _0801BBAA +_0801AD00: + ldr r1, _0801ADA4 @ =gUnknown_2023BE4 + ldr r0, _0801ADA8 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801AD16 + bl _0801BBAA +_0801AD16: + ldr r0, _0801ADAC @ =gUnknown_2023E8C + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 31 + cmp r0, 0 + beq _0801AD28 + bl _0801BBAA +_0801AD28: + ldr r2, _0801ADB0 @ =gUnknown_2023ECC + ldr r0, _0801ADB4 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AD50 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AD50 + bl _0801BBAA +_0801AD50: + ldr r1, _0801ADB8 @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801AD68 + bl _0801BBAA +_0801AD68: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _0801AD80 + bl _0801BBAA +_0801AD80: + ldr r1, _0801ADBC @ =gUnknown_2023E82 + movs r0, 0x45 + strb r0, [r1, 0x3] + bl sub_8017544 + ldr r1, _0801ADC0 @ =gUnknown_2023D74 + ldr r0, _0801ADC4 @ =gUnknown_81D94CB + str r0, [r1] + ldr r2, _0801ADC8 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 6 + orrs r0, r1 + str r0, [r2] + bl _0801BB5A + .align 2, 0 +_0801ADA0: .4byte gUnknown_2023DCC +_0801ADA4: .4byte gUnknown_2023BE4 +_0801ADA8: .4byte gUnknown_2023D6B +_0801ADAC: .4byte gUnknown_2023E8C +_0801ADB0: .4byte gUnknown_2023ECC +_0801ADB4: .4byte gUnknown_2023D6C +_0801ADB8: .4byte gUnknown_8250C04 +_0801ADBC: .4byte gUnknown_2023E82 +_0801ADC0: .4byte gUnknown_2023D74 +_0801ADC4: .4byte gUnknown_81D94CB +_0801ADC8: .4byte gUnknown_2023DD0 +_0801ADCC: + ldr r0, _0801AE7C @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801ADDC + bl _0801BBAA +_0801ADDC: + ldr r1, _0801AE80 @ =gUnknown_2023BE4 + ldr r0, _0801AE84 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801ADF2 + bl _0801BBAA +_0801ADF2: + ldr r0, _0801AE88 @ =gUnknown_2023E8C + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 31 + cmp r0, 0 + beq _0801AE04 + bl _0801BBAA +_0801AE04: + ldr r1, _0801AE8C @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801AE1C + bl _0801BBAA +_0801AE1C: + ldr r2, _0801AE90 @ =gUnknown_2023ECC + ldr r0, _0801AE94 @ =gUnknown_2023D6C + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AE44 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AE44 + bl _0801BBAA +_0801AE44: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _0801AE5C + bl _0801BBAA +_0801AE5C: + ldr r1, _0801AE98 @ =gUnknown_2023E82 + movs r0, 0x43 + strb r0, [r1, 0x3] + bl sub_8017544 + ldr r1, _0801AE9C @ =gUnknown_2023D74 + ldr r0, _0801AEA0 @ =gUnknown_81D94CB + str r0, [r1] + ldr r2, _0801AEA4 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 6 + orrs r0, r1 + str r0, [r2] + bl _0801BB5A + .align 2, 0 +_0801AE7C: .4byte gUnknown_2023DCC +_0801AE80: .4byte gUnknown_2023BE4 +_0801AE84: .4byte gUnknown_2023D6B +_0801AE88: .4byte gUnknown_2023E8C +_0801AE8C: .4byte gUnknown_8250C04 +_0801AE90: .4byte gUnknown_2023ECC +_0801AE94: .4byte gUnknown_2023D6C +_0801AE98: .4byte gUnknown_2023E82 +_0801AE9C: .4byte gUnknown_2023D74 +_0801AEA0: .4byte gUnknown_81D94CB +_0801AEA4: .4byte gUnknown_2023DD0 +_0801AEA8: + ldr r0, _0801AFE8 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801AEB8 + bl _0801BBAA +_0801AEB8: + ldr r5, _0801AFEC @ =gUnknown_2023BE4 + ldr r7, _0801AFF0 @ =gUnknown_2023D6B + ldrb r1, [r7] + movs r6, 0x58 + adds r0, r1, 0 + muls r0, r6 + adds r0, r5 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801AED0 + bl _0801BBAA +_0801AED0: + ldr r0, _0801AFF4 @ =gUnknown_2023E8C + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + lsls r0, 31 + cmp r0, 0 + beq _0801AEE2 + bl _0801BBAA +_0801AEE2: + ldr r1, _0801AFF8 @ =gUnknown_8250C04 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801AEFA + bl _0801BBAA +_0801AEFA: + ldr r3, _0801AFFC @ =gUnknown_2023ECC + ldr r4, _0801B000 @ =gUnknown_2023D6C + mov r8, r4 + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r2, r0, 2 + adds r0, r3, 0 + adds r0, 0x8 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AF24 + adds r0, r3, 0 + adds r0, 0xC + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801AF24 + bl _0801BBAA +_0801AF24: + adds r0, r1, 0 + muls r0, r6 + adds r0, r5 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801AF34 + bl _0801BBAA +_0801AF34: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _0801AF4C + bl _0801BBAA +_0801AF4C: + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0xC + bne _0801AF5E + bl _0801BBAA +_0801AF5E: + ldr r0, [sp, 0x8] + ldr r1, [sp, 0x10] + bl sub_803F78C + adds r4, r0, 0 + ldr r0, [sp, 0xC] + ldr r1, [sp, 0x14] + bl sub_803F78C + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _0801AF7C + bl _0801BBAA +_0801AF7C: + ldrb r0, [r7] + muls r0, r6 + adds r4, r5, 0 + adds r4, 0x50 + adds r0, r4 + ldr r0, [r0] + movs r1, 0xF0 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _0801AF96 + bl _0801BBAA +_0801AF96: + ldr r0, [sp, 0x8] + ldr r1, [sp, 0x10] + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0801AFAA + bl _0801BBAA +_0801AFAA: + ldr r0, [sp, 0xC] + ldr r1, [sp, 0x14] + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0801AFBE + bl _0801BBAA +_0801AFBE: + ldrb r0, [r7] + adds r2, r0, 0 + muls r2, r6 + adds r2, r4 + ldr r1, _0801B004 @ =gUnknown_825E45C + mov r3, r8 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 16 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + bl sub_8017544 + ldr r1, _0801B008 @ =gUnknown_2023D74 + ldr r0, _0801B00C @ =gUnknown_81D94BE + str r0, [r1] + bl _0801BB5A + .align 2, 0 +_0801AFE8: .4byte gUnknown_2023DCC +_0801AFEC: .4byte gUnknown_2023BE4 +_0801AFF0: .4byte gUnknown_2023D6B +_0801AFF4: .4byte gUnknown_2023E8C +_0801AFF8: .4byte gUnknown_8250C04 +_0801AFFC: .4byte gUnknown_2023ECC +_0801B000: .4byte gUnknown_2023D6C +_0801B004: .4byte gUnknown_825E45C +_0801B008: .4byte gUnknown_2023D74 +_0801B00C: .4byte gUnknown_81D94BE +_0801B010: + movs r4, 0 + mov r10, r4 + ldr r0, _0801B044 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r10, r0 + bcc _0801B020 + bl _0801BBAA +_0801B020: + ldr r1, _0801B048 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r0, r2, 0 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + subs r0, 0x7 + adds r2, r1, 0 + cmp r0, 0x41 + bls _0801B03A + b _0801B29E +_0801B03A: + lsls r0, 2 + ldr r1, _0801B04C @ =_0801B050 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B044: .4byte gUnknown_2023BCC +_0801B048: .4byte gUnknown_2023BE4 +_0801B04C: .4byte _0801B050 + .align 2, 0 +_0801B050: + .4byte _0801B1B4 + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B278 + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B1DC + .4byte _0801B29E + .4byte _0801B158 + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B184 + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B248 + .4byte _0801B218 + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B29E + .4byte _0801B1DC +_0801B158: + movs r0, 0x58 + mov r3, r10 + muls r3, r0 + adds r0, r3, 0 + adds r1, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + ldr r1, _0801B178 @ =0x00000f88 + ands r0, r1 + cmp r0, 0 + bne _0801B172 + b _0801B29E +_0801B172: + ldr r0, _0801B17C @ =gUnknown_2022AB8 + ldr r1, _0801B180 @ =gUnknown_8250094 + b _0801B264 + .align 2, 0 +_0801B178: .4byte 0x00000f88 +_0801B17C: .4byte gUnknown_2022AB8 +_0801B180: .4byte gUnknown_8250094 +_0801B184: + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801B19E + b _0801B29E +_0801B19E: + ldr r0, _0801B1AC @ =gUnknown_2022AB8 + ldr r1, _0801B1B0 @ =gUnknown_82500BC + bl sub_8008D84 + movs r2, 0x2 + mov r9, r2 + b _0801B2A4 + .align 2, 0 +_0801B1AC: .4byte gUnknown_2022AB8 +_0801B1B0: .4byte gUnknown_82500BC +_0801B1B4: + movs r0, 0x58 + mov r3, r10 + muls r3, r0 + adds r0, r3, 0 + adds r1, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801B29E + ldr r0, _0801B1D4 @ =gUnknown_2022AB8 + ldr r1, _0801B1D8 @ =gUnknown_82500A4 + b _0801B264 + .align 2, 0 +_0801B1D4: .4byte gUnknown_2022AB8 +_0801B1D8: .4byte gUnknown_82500A4 +_0801B1DC: + movs r0, 0x58 + mov r3, r10 + muls r3, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0801B29E + adds r2, 0x50 + adds r2, r3, r2 + ldr r0, [r2] + ldr r1, _0801B20C @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + ldr r0, _0801B210 @ =gUnknown_2022AB8 + ldr r1, _0801B214 @ =gUnknown_825009C + bl sub_8008D84 + movs r0, 0x1 + mov r9, r0 + b _0801B2A4 + .align 2, 0 +_0801B20C: .4byte 0xf7ffffff +_0801B210: .4byte gUnknown_2022AB8 +_0801B214: .4byte gUnknown_825009C +_0801B218: + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801B29E + ldr r0, _0801B240 @ =gUnknown_2022AB8 + ldr r1, _0801B244 @ =gUnknown_82500AC + bl sub_8008D84 + movs r2, 0x1 + mov r9, r2 + b _0801B2A4 + .align 2, 0 +_0801B240: .4byte gUnknown_2022AB8 +_0801B244: .4byte gUnknown_82500AC +_0801B248: + movs r0, 0x58 + mov r3, r10 + muls r3, r0 + adds r0, r3, 0 + adds r1, r2, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0801B29E + ldr r0, _0801B270 @ =gUnknown_2022AB8 + ldr r1, _0801B274 @ =gUnknown_82500B4 +_0801B264: + bl sub_8008D84 + movs r4, 0x1 + mov r9, r4 + b _0801B2A4 + .align 2, 0 +_0801B270: .4byte gUnknown_2022AB8 +_0801B274: .4byte gUnknown_82500B4 +_0801B278: + movs r0, 0x58 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xF0 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _0801B29E + ldr r0, _0801B2B4 @ =gUnknown_2022AB8 + ldr r1, _0801B2B8 @ =gUnknown_82500C4 + bl sub_8008D84 + movs r2, 0x3 + mov r9, r2 +_0801B29E: + mov r3, r9 + cmp r3, 0 + beq _0801B358 +_0801B2A4: + mov r4, r9 + cmp r4, 0x2 + beq _0801B2D8 + cmp r4, 0x2 + bgt _0801B2BC + cmp r4, 0x1 + beq _0801B2C4 + b _0801B304 + .align 2, 0 +_0801B2B4: .4byte gUnknown_2022AB8 +_0801B2B8: .4byte gUnknown_82500C4 +_0801B2BC: + mov r0, r9 + cmp r0, 0x3 + beq _0801B2F0 + b _0801B304 +_0801B2C4: + ldr r1, _0801B2D4 @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r1, 0x4C + adds r2, r1 + movs r0, 0 + b _0801B302 + .align 2, 0 +_0801B2D4: .4byte gUnknown_2023BE4 +_0801B2D8: + ldr r1, _0801B2EC @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + movs r1, 0x8 + negs r1, r1 + b _0801B300 + .align 2, 0 +_0801B2EC: .4byte gUnknown_2023BE4 +_0801B2F0: + ldr r1, _0801B33C @ =gUnknown_2023BE4 + movs r0, 0x58 + mov r2, r10 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + ldr r1, _0801B340 @ =0xfff0ffff +_0801B300: + ands r0, r1 +_0801B302: + str r0, [r2] +_0801B304: + bl sub_8017544 + ldr r1, _0801B344 @ =gUnknown_2023D74 + ldr r0, _0801B348 @ =gUnknown_81D94D1 + str r0, [r1] + ldr r0, _0801B34C @ =gUnknown_2023FC4 + mov r1, r10 + strb r1, [r0, 0x17] + ldr r4, _0801B350 @ =gUnknown_2023BC4 + strb r1, [r4] + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + ldr r1, _0801B354 @ =gUnknown_2023C30 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + bl _0801BBC6 + .align 2, 0 +_0801B33C: .4byte gUnknown_2023BE4 +_0801B340: .4byte 0xfff0ffff +_0801B344: .4byte gUnknown_2023D74 +_0801B348: .4byte gUnknown_81D94D1 +_0801B34C: .4byte gUnknown_2023FC4 +_0801B350: .4byte gUnknown_2023BC4 +_0801B354: .4byte gUnknown_2023C30 +_0801B358: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _0801B370 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r10, r0 + bcs _0801B36C + b _0801B020 +_0801B36C: + bl _0801BBAA + .align 2, 0 +_0801B370: .4byte gUnknown_2023BCC +_0801B374: + movs r2, 0 + mov r10, r2 + ldr r0, _0801B3C0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r10, r0 + bcc _0801B384 + bl _0801BBAA +_0801B384: + ldr r4, _0801B3C4 @ =gUnknown_2023BE4 +_0801B386: + movs r0, 0x58 + mov r3, r10 + muls r3, r0 + adds r0, r3, 0 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x3B + bne _0801B3AA + mov r0, r10 + bl sub_8019DAC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0 + beq _0801B3AA + b _0801BA84 +_0801B3AA: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _0801B3C0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r10, r0 + bcc _0801B386 + bl _0801BBAA + .align 2, 0 +_0801B3C0: .4byte gUnknown_2023BCC +_0801B3C4: .4byte gUnknown_2023BE4 +_0801B3C8: + mov r4, r8 + ldrb r0, [r4] + cmp r0, 0x1C + beq _0801B3D4 + bl _0801BBAA +_0801B3D4: + ldr r4, _0801B434 @ =gUnknown_2023DD0 + ldr r1, [r4] + movs r0, 0x80 + lsls r0, 7 + ands r0, r1 + cmp r0, 0 + bne _0801B3E6 + bl _0801BBAA +_0801B3E6: + ldr r0, _0801B438 @ =0xffffbfff + ands r1, r0 + str r1, [r4] + ldr r1, [r6] + adds r1, 0xB4 + ldrb r2, [r1] + movs r0, 0x3F + ands r0, r2 + strb r0, [r1] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0xB4 + ldrb r0, [r1] + cmp r0, 0x6 + bne _0801B408 + movs r0, 0x2 + strb r0, [r1] +_0801B408: + ldr r1, _0801B43C @ =gUnknown_2023E82 + ldr r0, [r6] + adds r0, 0xB4 + ldrb r0, [r0] + adds r0, 0x40 + strb r0, [r1, 0x3] + ldr r1, _0801B440 @ =gUnknown_2023FC4 + ldr r0, _0801B444 @ =gUnknown_2023D6C + ldrb r0, [r0] + strb r0, [r1, 0x17] + bl sub_8017544 + ldr r1, _0801B448 @ =gUnknown_2023D74 + ldr r0, _0801B44C @ =gUnknown_81D94CE + str r0, [r1] + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 6 + orrs r0, r1 + str r0, [r4] + b _0801BB5A + .align 2, 0 +_0801B434: .4byte gUnknown_2023DD0 +_0801B438: .4byte 0xffffbfff +_0801B43C: .4byte gUnknown_2023E82 +_0801B440: .4byte gUnknown_2023FC4 +_0801B444: .4byte gUnknown_2023D6C +_0801B448: .4byte gUnknown_2023D74 +_0801B44C: .4byte gUnknown_81D94CE +_0801B450: + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0x1C + beq _0801B45A + b _0801BBAA +_0801B45A: + ldr r4, _0801B4B8 @ =gUnknown_2023DD0 + ldr r1, [r4] + movs r0, 0x80 + lsls r0, 7 + ands r0, r1 + cmp r0, 0 + bne _0801B46A + b _0801BBAA +_0801B46A: + ldr r0, _0801B4BC @ =0xffffbfff + ands r1, r0 + str r1, [r4] + adds r3, r6, 0 + ldr r1, [r3] + adds r1, 0xB4 + ldrb r2, [r1] + movs r0, 0x3F + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r1, r0, 0 + adds r1, 0xB4 + ldrb r0, [r1] + cmp r0, 0x6 + bne _0801B48E + movs r0, 0x2 + strb r0, [r1] +_0801B48E: + ldr r1, _0801B4C0 @ =gUnknown_2023E82 + ldr r0, [r6] + adds r0, 0xB4 + ldrb r0, [r0] + strb r0, [r1, 0x3] + ldr r1, _0801B4C4 @ =gUnknown_2023FC4 + ldr r0, _0801B4C8 @ =gUnknown_2023D6B + ldrb r0, [r0] + strb r0, [r1, 0x17] + bl sub_8017544 + ldr r1, _0801B4CC @ =gUnknown_2023D74 + ldr r0, _0801B4D0 @ =gUnknown_81D94CE + str r0, [r1] + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 6 + orrs r0, r1 + str r0, [r4] + b _0801BB5A + .align 2, 0 +_0801B4B8: .4byte gUnknown_2023DD0 +_0801B4BC: .4byte 0xffffbfff +_0801B4C0: .4byte gUnknown_2023E82 +_0801B4C4: .4byte gUnknown_2023FC4 +_0801B4C8: .4byte gUnknown_2023D6B +_0801B4CC: .4byte gUnknown_2023D74 +_0801B4D0: .4byte gUnknown_81D94CE +_0801B4D4: + movs r5, 0 + ldr r0, _0801B50C @ =gUnknown_2023BCC + ldrb r1, [r0] + cmp r5, r1 + blt _0801B4E0 + b _0801BBAA +_0801B4E0: + ldr r0, _0801B510 @ =gUnknown_2023BE4 + adds r4, r1, 0 + ldr r2, _0801B514 @ =gUnknown_2023DFC + adds r3, r0, 0 + adds r3, 0x20 + movs r6, 0x80 + lsls r6, 12 +_0801B4EE: + ldrb r1, [r3] + cmp r1, 0x16 + bne _0801B4FE + ldr r0, [r2] + ands r0, r6 + cmp r0, 0 + beq _0801B4FE + b _0801BAAC +_0801B4FE: + adds r2, 0x4 + adds r3, 0x58 + adds r5, 0x1 + cmp r5, r4 + blt _0801B4EE + b _0801BBAA + .align 2, 0 +_0801B50C: .4byte gUnknown_2023BCC +_0801B510: .4byte gUnknown_2023BE4 +_0801B514: .4byte gUnknown_2023DFC +_0801B518: + movs r5, 0 + ldr r0, _0801B5F4 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B524 + b _0801BBAA +_0801B524: + ldr r2, _0801B5F8 @ =gUnknown_2023BC4 + mov r8, r2 + ldr r3, _0801B5FC @ =gUnknown_2023BE4 + adds r3, 0x20 + str r3, [sp, 0x1C] + movs r4, 0 + str r4, [sp, 0x20] +_0801B532: + ldr r1, [sp, 0x1C] + ldrb r0, [r1] + cmp r0, 0x24 + beq _0801B53C + b _0801B6D6 +_0801B53C: + ldr r0, _0801B600 @ =gUnknown_2023DFC + ldr r2, [sp, 0x20] + adds r0, r2, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 13 + ands r1, r0 + str r2, [sp, 0x18] + cmp r1, 0 + bne _0801B552 + b _0801B6D6 +_0801B552: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751D8 + movs r1, 0x1 + adds r6, r0, 0 + eors r6, r1 + ands r6, r1 + adds r0, r6, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0801B604 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r2, 0x1 + ands r0, r2 + cmp r0, 0 + bne _0801B584 + b _0801B69C +_0801B584: + movs r3, 0x58 + adds r0, r4, 0 + muls r0, r3 + ldr r3, _0801B5FC @ =gUnknown_2023BE4 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _0801B658 + ldrh r0, [r1, 0x28] + cmp r0, 0 + beq _0801B60C + movs r1, 0x58 + adds r0, r7, 0 + muls r0, r1 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _0801B60C + ldrh r0, [r1, 0x28] + cmp r0, 0 + beq _0801B60C + str r2, [sp, 0x24] + bl sub_8044EC8 + ldr r2, [sp, 0x24] + adds r1, r2, 0 + ands r1, r0 + lsls r1, 1 + orrs r6, r1 + adds r0, r6, 0 + bl sub_80751E8 + mov r2, r8 + strb r0, [r2] + ldrb r0, [r2] + movs r3, 0x58 + muls r0, r3 + ldr r4, _0801B5FC @ =gUnknown_2023BE4 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + ldr r1, [sp, 0x1C] + strb r0, [r1] + ldrb r0, [r2] + muls r0, r3 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + ldr r2, _0801B608 @ =gUnknown_2023D6A + strb r0, [r2] + b _0801B6C4 + .align 2, 0 +_0801B5F4: .4byte gUnknown_2023BCC +_0801B5F8: .4byte gUnknown_2023BC4 +_0801B5FC: .4byte gUnknown_2023BE4 +_0801B600: .4byte gUnknown_2023DFC +_0801B604: .4byte gUnknown_2022B4C +_0801B608: .4byte gUnknown_2023D6A +_0801B60C: + ldr r3, _0801B650 @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r0, r4, 0 + muls r0, r2 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _0801B658 + ldrh r0, [r1, 0x28] + cmp r0, 0 + beq _0801B658 + mov r0, r8 + strb r4, [r0] + adds r1, r5, 0 + muls r1, r2 + adds r1, r3 + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + adds r1, 0x20 + strb r0, [r1] + mov r1, r8 + ldrb r0, [r1] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + ldr r2, _0801B654 @ =gUnknown_2023D6A + strb r0, [r2] + b _0801B6C4 + .align 2, 0 +_0801B650: .4byte gUnknown_2023BE4 +_0801B654: .4byte gUnknown_2023D6A +_0801B658: + ldr r3, _0801B698 @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r0, r7, 0 + muls r0, r2 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _0801B6CE + ldrh r0, [r1, 0x28] + cmp r0, 0 + beq _0801B6CE + mov r4, r8 + strb r7, [r4] + adds r1, r5, 0 + muls r1, r2 + adds r1, r3 + ldrb r0, [r4] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r4] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + b _0801B6C0 + .align 2, 0 +_0801B698: .4byte gUnknown_2023BE4 +_0801B69C: + mov r2, r8 + strb r4, [r2] + movs r3, 0x58 + adds r0, r4, 0 + muls r0, r3 + ldr r4, _0801B6F0 @ =gUnknown_2023BE4 + adds r0, r4 + adds r2, r0, 0 + adds r2, 0x20 + ldrb r1, [r2] + cmp r1, 0 + beq _0801B6CE + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801B6CE + ldr r0, [sp, 0x1C] + strb r1, [r0] + ldrb r0, [r2] +_0801B6C0: + ldr r1, _0801B6F4 @ =gUnknown_2023D6A + strb r0, [r1] +_0801B6C4: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801B6CE: + mov r2, r9 + cmp r2, 0 + beq _0801B6D6 + b _0801BAC8 +_0801B6D6: + ldr r3, [sp, 0x1C] + adds r3, 0x58 + str r3, [sp, 0x1C] + ldr r4, [sp, 0x20] + adds r4, 0x4 + str r4, [sp, 0x20] + adds r5, 0x1 + ldr r0, _0801B6F8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _0801B6EE + b _0801B532 +_0801B6EE: + b _0801BBAA + .align 2, 0 +_0801B6F0: .4byte gUnknown_2023BE4 +_0801B6F4: .4byte gUnknown_2023D6A +_0801B6F8: .4byte gUnknown_2023BCC +_0801B6FC: + movs r5, 0 + ldr r0, _0801B734 @ =gUnknown_2023BCC + ldrb r1, [r0] + cmp r5, r1 + blt _0801B708 + b _0801BBAA +_0801B708: + ldr r0, _0801B738 @ =gUnknown_2023BE4 + adds r4, r1, 0 + ldr r2, _0801B73C @ =gUnknown_2023DFC + adds r3, r0, 0 + adds r3, 0x20 + movs r6, 0x80 + lsls r6, 12 +_0801B716: + ldrb r1, [r3] + cmp r1, 0x16 + bne _0801B726 + ldr r0, [r2] + ands r0, r6 + cmp r0, 0 + beq _0801B726 + b _0801BB3C +_0801B726: + adds r2, 0x4 + adds r3, 0x58 + adds r5, 0x1 + cmp r5, r4 + blt _0801B716 + b _0801BBAA + .align 2, 0 +_0801B734: .4byte gUnknown_2023BCC +_0801B738: .4byte gUnknown_2023BE4 +_0801B73C: .4byte gUnknown_2023DFC +_0801B740: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _0801B790 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B756 + b _0801BBAA +_0801B756: + ldr r0, _0801B794 @ =gUnknown_2023BE4 + mov r8, r0 +_0801B75A: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + adds r4, r5, 0x1 + cmp r0, r6 + beq _0801B784 + movs r0, 0x58 + muls r0, r5 + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r7 + bne _0801B784 + ldr r0, _0801B798 @ =gUnknown_2023D6A + strb r7, [r0] + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B784: + adds r5, r4, 0 + ldr r0, _0801B790 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B75A + b _0801BBAA + .align 2, 0 +_0801B790: .4byte gUnknown_2023BCC +_0801B794: .4byte gUnknown_2023BE4 +_0801B798: .4byte gUnknown_2023D6A +_0801B79C: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _0801B7EC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B7B2 + b _0801BBAA +_0801B7B2: + ldr r1, _0801B7F0 @ =gUnknown_2023BE4 + mov r8, r1 +_0801B7B6: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + adds r4, r5, 0x1 + cmp r0, r6 + bne _0801B7E0 + movs r0, 0x58 + muls r0, r5 + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r7 + bne _0801B7E0 + ldr r0, _0801B7F4 @ =gUnknown_2023D6A + strb r7, [r0] + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B7E0: + adds r5, r4, 0 + ldr r0, _0801B7EC @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B7B6 + b _0801BBAA + .align 2, 0 +_0801B7EC: .4byte gUnknown_2023BCC +_0801B7F0: .4byte gUnknown_2023BE4 +_0801B7F4: .4byte gUnknown_2023D6A +_0801B7F8: + mov r2, r8 + ldrb r0, [r2] + cmp r0, 0xFD + beq _0801B820 + cmp r0, 0xFE + beq _0801B858 + movs r5, 0 + ldr r0, _0801B818 @ =gUnknown_2023BCC + adds r3, r0, 0 + ldrb r4, [r3] + cmp r5, r4 + blt _0801B812 + b _0801BBAA +_0801B812: + ldr r2, _0801B81C @ =gUnknown_2023BE4 + b _0801B890 + .align 2, 0 +_0801B818: .4byte gUnknown_2023BCC +_0801B81C: .4byte gUnknown_2023BE4 +_0801B820: + movs r5, 0 + ldr r0, _0801B850 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B82C + b _0801BBAA +_0801B82C: + ldr r3, _0801B854 @ =gUnknown_2023DFC + movs r2, 0x80 + lsls r2, 9 + adds r1, r0, 0 +_0801B834: + lsls r0, r5, 2 + adds r0, r3 + ldr r0, [r0] + ands r0, r2 + adds r4, r5, 0x1 + cmp r0, 0 + beq _0801B848 + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B848: + adds r5, r4, 0 + cmp r5, r1 + blt _0801B834 + b _0801BBAA + .align 2, 0 +_0801B850: .4byte gUnknown_2023BCC +_0801B854: .4byte gUnknown_2023DFC +_0801B858: + movs r5, 0 + ldr r0, _0801B888 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B864 + b _0801BBAA +_0801B864: + ldr r3, _0801B88C @ =gUnknown_2023DFC + movs r2, 0x80 + lsls r2, 10 + adds r1, r0, 0 +_0801B86C: + lsls r0, r5, 2 + adds r0, r3 + ldr r0, [r0] + ands r0, r2 + adds r4, r5, 0x1 + cmp r0, 0 + beq _0801B880 + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B880: + adds r5, r4, 0 + cmp r5, r1 + blt _0801B86C + b _0801BBAA + .align 2, 0 +_0801B888: .4byte gUnknown_2023BCC +_0801B88C: .4byte gUnknown_2023DFC +_0801B890: + movs r0, 0x58 + muls r0, r5 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r5, 0x1 + cmp r0, r7 + bne _0801B8AA + mov r0, r8 + strb r7, [r0] + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B8AA: + adds r5, r4, 0 + ldrb r1, [r3] + cmp r5, r1 + blt _0801B890 + b _0801BBAA +_0801B8B4: + movs r5, 0 + ldr r0, _0801B8F0 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B8C0 + b _0801BBAA +_0801B8C0: + ldr r6, _0801B8F4 @ =gUnknown_2023BE4 + adds r2, r0, 0 + movs r3, 0x58 +_0801B8C6: + adds r0, r5, 0 + muls r0, r3 + adds r1, r0, r6 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r5, 0x1 + cmp r0, r7 + bne _0801B8E8 + ldrh r0, [r1, 0x28] + cmp r0, 0 + beq _0801B8E8 + mov r0, r8 + strb r7, [r0] + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B8E8: + adds r5, r4, 0 + cmp r5, r2 + blt _0801B8C6 + b _0801BBAA + .align 2, 0 +_0801B8F0: .4byte gUnknown_2023BCC +_0801B8F4: .4byte gUnknown_2023BE4 +_0801B8F8: + ldr r0, _0801B908 @ =gUnknown_2023D6A + strb r7, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + b _0801B94A + .align 2, 0 +_0801B908: .4byte gUnknown_2023D6A +_0801B90C: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _0801B99C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bge _0801B94A + ldr r4, _0801B9A0 @ =gUnknown_2023BE4 +_0801B922: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r6 + beq _0801B940 + movs r0, 0x58 + muls r0, r5 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r7 + beq _0801B8F8 +_0801B940: + adds r5, 0x1 + ldr r0, _0801B99C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B922 +_0801B94A: + mov r1, r9 + cmp r1, 0 + beq _0801B952 + b _0801BBB0 +_0801B952: + movs r5, 0 + ldr r0, _0801B99C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r9, r0 + blt _0801B95E + b _0801BBAA +_0801B95E: + ldr r2, _0801B9A0 @ =gUnknown_2023BE4 + mov r8, r2 +_0801B962: + movs r0, 0x58 + muls r0, r5 + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r5, 0x1 + cmp r0, r7 + bne _0801B990 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r6 + bne _0801B990 + cmp r5, r10 + beq _0801B990 + ldr r0, _0801B9A4 @ =gUnknown_2023D6A + strb r7, [r0] + lsls r0, r4, 24 + lsrs r0, 24 + mov r9, r0 +_0801B990: + adds r5, r4, 0 + ldr r0, _0801B99C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B962 + b _0801BBAA + .align 2, 0 +_0801B99C: .4byte gUnknown_2023BCC +_0801B9A0: .4byte gUnknown_2023BE4 +_0801B9A4: .4byte gUnknown_2023D6A +_0801B9A8: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _0801B9F8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B9BE + b _0801BBAA +_0801B9BE: + ldr r4, _0801B9FC @ =gUnknown_2023BE4 +_0801B9C0: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r6 + beq _0801B9EC + movs r0, 0x58 + muls r0, r5 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r7 + bne _0801B9EC + ldr r0, _0801BA00 @ =gUnknown_2023D6A + strb r7, [r0] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801B9EC: + adds r5, 0x1 + ldr r0, _0801B9F8 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801B9C0 + b _0801BBAA + .align 2, 0 +_0801B9F8: .4byte gUnknown_2023BCC +_0801B9FC: .4byte gUnknown_2023BE4 +_0801BA00: .4byte gUnknown_2023D6A +_0801BA04: + mov r0, r10 + bl sub_80751C4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _0801BA54 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801BA1A + b _0801BBAA +_0801BA1A: + ldr r4, _0801BA58 @ =gUnknown_2023BE4 +_0801BA1C: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r6 + bne _0801BA48 + movs r0, 0x58 + muls r0, r5 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, r7 + bne _0801BA48 + ldr r0, _0801BA5C @ =gUnknown_2023D6A + strb r7, [r0] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801BA48: + adds r5, 0x1 + ldr r0, _0801BA54 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + blt _0801BA1C + b _0801BBAA + .align 2, 0 +_0801BA54: .4byte gUnknown_2023BCC +_0801BA58: .4byte gUnknown_2023BE4 +_0801BA5C: .4byte gUnknown_2023D6A +_0801BA60: + ldr r0, _0801BA78 @ =gUnknown_81D92F8 + bl sub_801BC24 + ldr r0, _0801BA7C @ =gUnknown_2023FC4 + strb r4, [r0, 0x17] +_0801BA6A: + ldr r0, _0801BA80 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x7F + mov r1, r9 + subs r1, 0x1 + strb r1, [r0] + b _0801BBAA + .align 2, 0 +_0801BA78: .4byte gUnknown_81D92F8 +_0801BA7C: .4byte gUnknown_2023FC4 +_0801BA80: .4byte gUnknown_2023FE8 +_0801BA84: + ldr r0, _0801BAA0 @ =gUnknown_81D92F8 + bl sub_801BC24 + ldr r0, _0801BAA4 @ =gUnknown_2023FC4 + mov r3, r10 + strb r3, [r0, 0x17] + ldr r0, _0801BAA8 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x7F + mov r1, r9 + subs r1, 0x1 + strb r1, [r0] + b _0801BBC6 + .align 2, 0 +_0801BAA0: .4byte gUnknown_81D92F8 +_0801BAA4: .4byte gUnknown_2023FC4 +_0801BAA8: .4byte gUnknown_2023FE8 +_0801BAAC: + mov r4, r8 + strb r1, [r4] + ldr r0, [r2] + ldr r1, _0801BAC0 @ =0xfff7ffff + ands r0, r1 + str r0, [r2] + ldr r0, _0801BAC4 @ =gUnknown_81D9307 + bl sub_801BC24 + b _0801BB52 + .align 2, 0 +_0801BAC0: .4byte 0xfff7ffff +_0801BAC4: .4byte gUnknown_81D9307 +_0801BAC8: + ldr r0, _0801BB18 @ =gUnknown_81D92A1 + bl sub_801BC24 + ldr r1, _0801BB1C @ =gUnknown_2023DFC + ldr r0, [sp, 0x18] + adds r1, r0, r1 + ldr r0, [r1] + ldr r2, _0801BB20 @ =0xffefffff + ands r0, r2 + str r0, [r1] + ldr r0, _0801BB24 @ =gUnknown_2023FC4 + strb r5, [r0, 0x17] + ldr r1, _0801BB28 @ =gUnknown_2022AB8 + movs r4, 0xFD + strb r4, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r2, _0801BB2C @ =gUnknown_2023BC4 + ldrb r0, [r2] + strb r0, [r1, 0x2] + ldr r3, _0801BB30 @ =gUnknown_2023BCE + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _0801BB34 @ =gUnknown_2022AC8 + strb r4, [r1] + movs r0, 0x9 + strb r0, [r1, 0x1] + ldr r0, _0801BB38 @ =gUnknown_2023D6A + ldrb r0, [r0] + strb r0, [r1, 0x2] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x3] + b _0801BBAA + .align 2, 0 +_0801BB18: .4byte gUnknown_81D92A1 +_0801BB1C: .4byte gUnknown_2023DFC +_0801BB20: .4byte 0xffefffff +_0801BB24: .4byte gUnknown_2023FC4 +_0801BB28: .4byte gUnknown_2022AB8 +_0801BB2C: .4byte gUnknown_2023BC4 +_0801BB30: .4byte gUnknown_2023BCE +_0801BB34: .4byte gUnknown_2022AC8 +_0801BB38: .4byte gUnknown_2023D6A +_0801BB3C: + mov r3, r8 + strb r1, [r3] + ldr r0, [r2] + ldr r1, _0801BB68 @ =0xfff7ffff + ands r0, r1 + str r0, [r2] + bl sub_8017544 + ldr r1, _0801BB6C @ =gUnknown_2023D74 + ldr r0, _0801BB70 @ =gUnknown_81D9310 + str r0, [r1] +_0801BB52: + ldr r0, _0801BB74 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0xD8 + strb r5, [r0] +_0801BB5A: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + b _0801BBAA + .align 2, 0 +_0801BB68: .4byte 0xfff7ffff +_0801BB6C: .4byte gUnknown_2023D74 +_0801BB70: .4byte gUnknown_81D9310 +_0801BB74: .4byte gUnknown_2023FE8 +_0801BB78: + movs r5, 0 + ldr r0, _0801BBD8 @ =gUnknown_2023BCC + ldrb r1, [r0] + cmp r5, r1 + bge _0801BBAA + ldr r0, _0801BBDC @ =gUnknown_2023BE4 + adds r2, r1, 0 + adds r1, r0, 0 + adds r1, 0x20 + ldr r3, _0801BBE0 @ =gUnknown_2023D6A +_0801BB8C: + ldrb r0, [r1] + cmp r0, r7 + bne _0801BBA2 + cmp r5, r10 + beq _0801BBA2 + strb r7, [r3] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0801BBA2: + adds r1, 0x58 + adds r5, 0x1 + cmp r5, r2 + blt _0801BB8C +_0801BBAA: + mov r4, r9 + cmp r4, 0 + beq _0801BBC6 +_0801BBB0: + ldr r0, [sp, 0x4] + cmp r0, 0xB + bhi _0801BBC6 + ldr r1, _0801BBE0 @ =gUnknown_2023D6A + ldrb r0, [r1] + cmp r0, 0xFF + beq _0801BBC6 + adds r1, r0, 0 + mov r0, r10 + bl sub_80C71D0 +_0801BBC6: + mov r0, r9 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801BBD8: .4byte gUnknown_2023BCC +_0801BBDC: .4byte gUnknown_2023BE4 +_0801BBE0: .4byte gUnknown_2023D6A + thumb_func_end sub_8019F18 + + thumb_func_start sub_801BBE4 +sub_801BBE4: @ 801BBE4 + ldr r1, _0801BC10 @ =gUnknown_2023D74 + str r0, [r1] + ldr r0, _0801BC14 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0xC] + adds r3, r2, 0 + adds r3, 0x20 + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 22 + adds r2, r0 + ldr r1, _0801BC18 @ =gUnknown_3004F84 + ldr r0, [r1] + str r0, [r2] + ldr r0, _0801BC1C @ =sub_8015C00 + str r0, [r1] + ldr r1, _0801BC20 @ =gUnknown_2023BE3 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_0801BC10: .4byte gUnknown_2023D74 +_0801BC14: .4byte gUnknown_2023FF4 +_0801BC18: .4byte gUnknown_3004F84 +_0801BC1C: .4byte sub_8015C00 +_0801BC20: .4byte gUnknown_2023BE3 + thumb_func_end sub_801BBE4 + + thumb_func_start sub_801BC24 +sub_801BC24: @ 801BC24 + push {r4,lr} + adds r4, r0, 0 + bl sub_8017544 + ldr r0, _0801BC58 @ =gUnknown_2023D74 + str r4, [r0] + ldr r0, _0801BC5C @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r2, [r0, 0xC] + adds r3, r2, 0 + adds r3, 0x20 + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 22 + adds r2, r0 + ldr r1, _0801BC60 @ =gUnknown_3004F84 + ldr r0, [r1] + str r0, [r2] + ldr r0, _0801BC64 @ =sub_8015C74 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801BC58: .4byte gUnknown_2023D74 +_0801BC5C: .4byte gUnknown_2023FF4 +_0801BC60: .4byte gUnknown_3004F84 +_0801BC64: .4byte sub_8015C74 + thumb_func_end sub_801BC24 + + thumb_func_start sub_801BC68 +sub_801BC68: @ 801BC68 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + movs r0, 0 + mov r10, r0 + movs r1, 0 + str r1, [sp, 0xC] + add r0, sp, 0x4 + strb r1, [r0] + ldr r4, _0801BCB4 @ =gUnknown_2023D68 + ldr r1, _0801BCB8 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r0, r1 + ldrh r0, [r0, 0x2E] + strh r0, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _0801BCC0 + ldr r1, _0801BCBC @ =gUnknown_2023F54 + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x7] + ldrb r0, [r0, 0x1A] + b _0801BCD4 + .align 2, 0 +_0801BCB4: .4byte gUnknown_2023D68 +_0801BCB8: .4byte gUnknown_2023BE4 +_0801BCBC: .4byte gUnknown_2023F54 +_0801BCC0: + ldrh r0, [r4] + bl sub_809A924 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4] + bl sub_809A948 + lsls r0, 24 + lsrs r0, 24 +_0801BCD4: + mov r9, r0 + ldr r1, _0801BCFC @ =gUnknown_2023BE4 + ldr r0, _0801BD00 @ =gUnknown_2023D6B + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x2E] + str r0, [sp, 0x14] + cmp r0, 0xAF + bne _0801BD08 + ldr r1, _0801BD04 @ =gUnknown_2023F54 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r3, [r0, 0x7] + mov r8, r3 + ldrb r0, [r0, 0x1A] + b _0801BD1E + .align 2, 0 +_0801BCFC: .4byte gUnknown_2023BE4 +_0801BD00: .4byte gUnknown_2023D6B +_0801BD04: .4byte gUnknown_2023F54 +_0801BD08: + ldr r0, [sp, 0x14] + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, [sp, 0x14] + bl sub_809A948 + lsls r0, 24 + lsrs r0, 24 +_0801BD1E: + str r0, [sp, 0x10] + ldr r2, _0801BD54 @ =gUnknown_2023BE4 + ldr r0, _0801BD58 @ =gUnknown_2023D6C + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r4, [r0, 0x2E] + cmp r4, 0xAF + beq _0801BD3E + adds r0, r4, 0 + bl sub_809A924 + adds r0, r4, 0 + bl sub_809A948 +_0801BD3E: + ldr r0, [sp, 0x8] + cmp r0, 0x4 + bls _0801BD48 + bl _0801CFA6 +_0801BD48: + lsls r0, 2 + ldr r1, _0801BD5C @ =_0801BD60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BD54: .4byte gUnknown_2023BE4 +_0801BD58: .4byte gUnknown_2023D6C +_0801BD5C: .4byte _0801BD60 + .align 2, 0 +_0801BD60: + .4byte _0801BD74 + .4byte _0801BE04 + .4byte _0801CFA6 + .4byte _0801C9FC + .4byte _0801CE4C +_0801BD74: + cmp r5, 0x17 + beq _0801BD94 + cmp r5, 0x20 + beq _0801BD80 + bl _0801CFA6 +_0801BD80: + ldr r0, _0801BD90 @ =gUnknown_2023FE8 + ldr r0, [r0] + adds r0, 0x4A + movs r1, 0x2 + strb r1, [r0] + bl _0801CFA6 + .align 2, 0 +_0801BD90: .4byte gUnknown_2023FE8 +_0801BD94: + ldr r1, _0801BDEC @ =gUnknown_2023BE4 + mov r8, r1 + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x18 + adds r1, r0 + movs r2, 0x6 + movs r3, 0x7 + mov r10, r3 +_0801BDAA: + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _0801BDB8 + strb r2, [r1] + movs r5, 0x5 + str r5, [sp, 0xC] +_0801BDB8: + adds r1, 0x1 + movs r0, 0x1 + negs r0, r0 + add r10, r0 + mov r3, r10 + cmp r3, 0 + bge _0801BDAA + ldr r5, [sp, 0xC] + cmp r5, 0 + bne _0801BDD0 + bl _0801CFA6 +_0801BDD0: + ldr r0, _0801BDF0 @ =gUnknown_2023FC4 + strb r7, [r0, 0x17] + ldr r0, _0801BDF4 @ =gUnknown_2023D6F + strb r7, [r0] + ldr r1, _0801BDF8 @ =gUnknown_2023BC4 + ldr r0, _0801BDFC @ =gUnknown_2023D6B + strb r7, [r0] + strb r7, [r1] + ldr r0, _0801BE00 @ =gUnknown_81D95D9 + bl sub_801BBE4 + bl _0801CFA6 + .align 2, 0 +_0801BDEC: .4byte gUnknown_2023BE4 +_0801BDF0: .4byte gUnknown_2023FC4 +_0801BDF4: .4byte gUnknown_2023D6F +_0801BDF8: .4byte gUnknown_2023BC4 +_0801BDFC: .4byte gUnknown_2023D6B +_0801BE00: .4byte gUnknown_81D95D9 +_0801BE04: + ldr r1, _0801BE2C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r0, r1 + ldrh r0, [r0, 0x28] + mov r8, r1 + cmp r0, 0 + bne _0801BE18 + bl _0801CFA6 +_0801BE18: + subs r0, r5, 0x1 + cmp r0, 0x2A + bls _0801BE22 + bl _0801C952 +_0801BE22: + lsls r0, 2 + ldr r1, _0801BE30 @ =_0801BE34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BE2C: .4byte gUnknown_2023BE4 +_0801BE30: .4byte _0801BE34 + .align 2, 0 +_0801BE34: + .4byte _0801BEE0 + .4byte _0801C6C0 + .4byte _0801C784 + .4byte _0801C6F0 + .4byte _0801C724 + .4byte _0801C754 + .4byte _0801BF2C + .4byte _0801C7C0 + .4byte _0801C7F0 + .4byte _0801C0F8 + .4byte _0801C178 + .4byte _0801C1F4 + .4byte _0801C288 + .4byte _0801C31C + .4byte _0801C3B0 + .4byte _0801C418 + .4byte _0801C46C + .4byte _0801C4C0 + .4byte _0801C528 + .4byte _0801C58C + .4byte _0801C5D8 + .4byte _0801C952 + .4byte _0801C02C + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C91C + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C952 + .4byte _0801C098 +_0801BEE0: + movs r0, 0x58 + muls r0, r7 + mov r1, r8 + adds r2, r0, r1 + ldrh r0, [r2, 0x2C] + ldrh r1, [r2, 0x28] + lsrs r0, 1 + cmp r1, r0 + bls _0801BEF6 + bl _0801C952 +_0801BEF6: + cmp r6, 0 + beq _0801BEFE + bl _0801C952 +_0801BEFE: + ldr r4, _0801BF24 @ =gUnknown_2023D50 + mov r3, r9 + str r3, [r4] + ldrh r3, [r2, 0x28] + mov r5, r9 + adds r0, r3, r5 + ldrh r1, [r2, 0x2C] + cmp r0, r1 + ble _0801BF14 + subs r0, r1, r3 + str r0, [r4] +_0801BF14: + ldr r0, [r4] + negs r0, r0 + str r0, [r4] + ldr r0, _0801BF28 @ =gUnknown_81D95EF + bl sub_801BBE4 + b _0801C27E + .align 2, 0 +_0801BF24: .4byte gUnknown_2023D50 +_0801BF28: .4byte gUnknown_81D95EF +_0801BF2C: + cmp r6, 0 + beq _0801BF34 + bl _0801C952 +_0801BF34: + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0801BF58 + ldr r1, _0801BF50 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0801BF54 @ =gUnknown_2024284 + b _0801BF66 + .align 2, 0 +_0801BF50: .4byte gUnknown_2023BCE +_0801BF54: .4byte gUnknown_2024284 +_0801BF58: + ldr r1, _0801BFD4 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0801BFD8 @ =gUnknown_202402C +_0801BF66: + adds r4, r1, r0 + movs r1, 0 + mov r10, r1 + add r5, sp, 0x4 +_0801BF6E: + mov r1, r10 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + mov r1, r10 + adds r1, 0x11 + adds r0, r4, 0 + bl sub_803FBE8 + strb r0, [r5] + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r6, 0 + beq _0801BF9E + ldrb r0, [r5] + cmp r0, 0 + beq _0801BFA8 +_0801BF9E: + movs r2, 0x1 + add r10, r2 + mov r3, r10 + cmp r3, 0x3 + ble _0801BF6E +_0801BFA8: + mov r5, r10 + cmp r5, 0x4 + bne _0801BFB2 + bl _0801C952 +_0801BFB2: + lsls r2, r5, 24 + lsrs r2, 24 + adds r0, r6, 0 + bl sub_804101C + lsls r0, 24 + lsrs r2, r0, 24 + add r0, sp, 0x4 + ldrb r0, [r0] + mov r3, r9 + adds r1, r0, r3 + cmp r1, r2 + ble _0801BFDC + add r0, sp, 0x4 + strb r2, [r0] + b _0801BFE0 + .align 2, 0 +_0801BFD4: .4byte gUnknown_2023BCE +_0801BFD8: .4byte gUnknown_202402C +_0801BFDC: + add r0, sp, 0x4 + strb r1, [r0] +_0801BFE0: + ldr r1, _0801C020 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + strb r6, [r1, 0x2] + lsrs r0, r6, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r0, _0801C024 @ =gUnknown_81D960C + bl sub_801BBE4 + mov r1, r10 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + add r5, sp, 0x4 + str r5, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_800DFF0 + ldr r0, _0801C028 @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_8017248 + movs r0, 0x3 + str r0, [sp, 0xC] + bl _0801C95A + .align 2, 0 +_0801C020: .4byte gUnknown_2022AB8 +_0801C024: .4byte gUnknown_81D960C +_0801C028: .4byte gUnknown_2023BC4 +_0801C02C: + ldr r0, _0801C080 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r7 + adds r0, 0x18 + adds r1, r0 + movs r2, 0x6 + movs r3, 0x7 + mov r10, r3 +_0801C03C: + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _0801C04A + strb r2, [r1] + movs r5, 0x5 + str r5, [sp, 0xC] +_0801C04A: + adds r1, 0x1 + movs r0, 0x1 + negs r0, r0 + add r10, r0 + mov r3, r10 + cmp r3, 0 + bge _0801C03C + movs r5, 0x8 + mov r10, r5 + ldr r0, [sp, 0xC] + cmp r0, 0 + bne _0801C066 + bl _0801CFA6 +_0801C066: + ldr r0, _0801C084 @ =gUnknown_2023FC4 + strb r7, [r0, 0x17] + ldr r0, _0801C088 @ =gUnknown_2023D6F + strb r7, [r0] + ldr r1, _0801C08C @ =gUnknown_2023BC4 + ldr r0, _0801C090 @ =gUnknown_2023D6B + strb r7, [r0] + strb r7, [r1] + ldr r0, _0801C094 @ =gUnknown_81D95D9 + bl sub_801BBE4 + bl _0801C952 + .align 2, 0 +_0801C080: .4byte gUnknown_2023BE4 +_0801C084: .4byte gUnknown_2023FC4 +_0801C088: .4byte gUnknown_2023D6F +_0801C08C: .4byte gUnknown_2023BC4 +_0801C090: .4byte gUnknown_2023D6B +_0801C094: .4byte gUnknown_81D95D9 +_0801C098: + movs r0, 0x58 + muls r0, r7 + mov r2, r8 + adds r1, r0, r2 + ldrh r0, [r1, 0x28] + ldrh r3, [r1, 0x2C] + cmp r0, r3 + bcc _0801C0AC + bl _0801C952 +_0801C0AC: + cmp r6, 0 + beq _0801C0B4 + bl _0801C952 +_0801C0B4: + ldr r3, _0801C0F0 @ =gUnknown_2023D50 + ldrh r0, [r1, 0x2C] + lsrs r0, 4 + str r0, [r3] + cmp r0, 0 + bne _0801C0C4 + movs r0, 0x1 + str r0, [r3] +_0801C0C4: + ldrh r2, [r1, 0x28] + ldr r0, [r3] + adds r0, r2, r0 + ldrh r1, [r1, 0x2C] + cmp r0, r1 + ble _0801C0D4 + subs r0, r1, r2 + str r0, [r3] +_0801C0D4: + ldr r0, [r3] + negs r0, r0 + str r0, [r3] + ldr r0, _0801C0F4 @ =gUnknown_81D961C + bl sub_801BBE4 + movs r0, 0x4 + str r0, [sp, 0xC] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80C7208 + bl _0801C952 + .align 2, 0 +_0801C0F0: .4byte gUnknown_2023D50 +_0801C0F4: .4byte gUnknown_81D961C +_0801C0F8: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + str r1, [sp, 0x18] + adds r4, r1, 0 + add r4, r8 + ldrh r0, [r4, 0x2C] + ldrh r1, [r4, 0x28] + lsrs r0, 1 + cmp r1, r0 + bls _0801C112 + bl _0801C952 +_0801C112: + cmp r6, 0 + beq _0801C11A + bl _0801C952 +_0801C11A: + ldr r1, _0801C170 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x8 + strb r0, [r1, 0x1] + strb r6, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r5, _0801C174 @ =gUnknown_2023D50 + ldrh r0, [r4, 0x2C] + mov r1, r9 + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _0801C13E + movs r0, 0x1 + str r0, [r5] +_0801C13E: + ldrh r2, [r4, 0x28] + ldr r0, [r5] + adds r0, r2, r0 + ldrh r1, [r4, 0x2C] + cmp r0, r1 + ble _0801C14E + subs r0, r1, r2 + str r0, [r5] +_0801C14E: + ldr r0, [r5] + negs r0, r0 + str r0, [r5] + mov r0, r8 + adds r0, 0x48 + ldr r2, [sp, 0x18] + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0 + bl sub_8044234 + lsls r0, 24 + cmp r0, 0 + bge _0801C16C + b _0801C2F8 +_0801C16C: + b _0801C30C + .align 2, 0 +_0801C170: .4byte gUnknown_2022AB8 +_0801C174: .4byte gUnknown_2023D50 +_0801C178: + movs r0, 0x58 + adds r5, r7, 0 + muls r5, r0 + str r5, [sp, 0x1C] + add r5, r8 + ldrh r0, [r5, 0x2C] + ldrh r1, [r5, 0x28] + lsrs r0, 1 + cmp r1, r0 + bls _0801C190 + bl _0801C952 +_0801C190: + cmp r6, 0 + beq _0801C198 + bl _0801C952 +_0801C198: + ldr r1, _0801C1EC @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x8 + strb r0, [r1, 0x1] + movs r6, 0x1 + strb r6, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r4, _0801C1F0 @ =gUnknown_2023D50 + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801C1BC + str r6, [r4] +_0801C1BC: + ldrh r2, [r5, 0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, 0x2C] + cmp r0, r1 + ble _0801C1CC + subs r0, r1, r2 + str r0, [r4] +_0801C1CC: + ldr r0, [r4] + negs r0, r0 + str r0, [r4] + mov r0, r8 + adds r0, 0x48 + ldr r1, [sp, 0x1C] + adds r0, r1, r0 + ldr r0, [r0] + movs r1, 0x1 + bl sub_8044234 + lsls r0, 24 + cmp r0, 0 + bge _0801C1EA + b _0801C38A +_0801C1EA: + b _0801C3A0 + .align 2, 0 +_0801C1EC: .4byte gUnknown_2022AB8 +_0801C1F0: .4byte gUnknown_2023D50 +_0801C1F4: + movs r0, 0x58 + adds r3, r7, 0 + muls r3, r0 + str r3, [sp, 0x20] + adds r5, r3, 0 + add r5, r8 + ldrh r0, [r5, 0x2C] + ldrh r1, [r5, 0x28] + lsrs r0, 1 + cmp r1, r0 + bls _0801C20C + b _0801C952 +_0801C20C: + cmp r6, 0 + beq _0801C212 + b _0801C952 +_0801C212: + ldr r1, _0801C26C @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x8 + strb r0, [r1, 0x1] + movs r0, 0x2 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r4, _0801C270 @ =gUnknown_2023D50 + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801C238 + movs r0, 0x1 + str r0, [r4] +_0801C238: + ldrh r2, [r5, 0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, 0x2C] + cmp r0, r1 + ble _0801C248 + subs r0, r1, r2 + str r0, [r4] +_0801C248: + ldr r0, [r4] + negs r0, r0 + str r0, [r4] + mov r0, r8 + adds r0, 0x48 + ldr r5, [sp, 0x20] + adds r0, r5, r0 + ldr r0, [r0] + movs r1, 0x2 + bl sub_8044234 + lsls r0, 24 + cmp r0, 0 + bge _0801C278 + ldr r0, _0801C274 @ =gUnknown_81D964F + bl sub_801BBE4 + b _0801C27E + .align 2, 0 +_0801C26C: .4byte gUnknown_2022AB8 +_0801C270: .4byte gUnknown_2023D50 +_0801C274: .4byte gUnknown_81D964F +_0801C278: + ldr r0, _0801C284 @ =gUnknown_81D95EF + bl sub_801BBE4 +_0801C27E: + movs r0, 0x4 + str r0, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C284: .4byte gUnknown_81D95EF +_0801C288: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + str r1, [sp, 0x24] + adds r5, r1, 0 + add r5, r8 + ldrh r0, [r5, 0x2C] + ldrh r1, [r5, 0x28] + lsrs r0, 1 + cmp r1, r0 + bls _0801C2A0 + b _0801C952 +_0801C2A0: + cmp r6, 0 + beq _0801C2A6 + b _0801C952 +_0801C2A6: + ldr r1, _0801C300 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x8 + strb r0, [r1, 0x1] + movs r0, 0x3 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r4, _0801C304 @ =gUnknown_2023D50 + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801C2CC + movs r0, 0x1 + str r0, [r4] +_0801C2CC: + ldrh r2, [r5, 0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, 0x2C] + cmp r0, r1 + ble _0801C2DC + subs r0, r1, r2 + str r0, [r4] +_0801C2DC: + ldr r0, [r4] + negs r0, r0 + str r0, [r4] + mov r0, r8 + adds r0, 0x48 + ldr r2, [sp, 0x24] + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x3 + bl sub_8044234 + lsls r0, 24 + cmp r0, 0 + bge _0801C30C +_0801C2F8: + ldr r0, _0801C308 @ =gUnknown_81D964F + bl sub_801BBE4 + b _0801C312 + .align 2, 0 +_0801C300: .4byte gUnknown_2022AB8 +_0801C304: .4byte gUnknown_2023D50 +_0801C308: .4byte gUnknown_81D964F +_0801C30C: + ldr r0, _0801C318 @ =gUnknown_81D95EF + bl sub_801BBE4 +_0801C312: + movs r3, 0x4 + str r3, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C318: .4byte gUnknown_81D95EF +_0801C31C: + movs r0, 0x58 + adds r5, r7, 0 + muls r5, r0 + str r5, [sp, 0x28] + add r5, r8 + ldrh r0, [r5, 0x2C] + ldrh r1, [r5, 0x28] + lsrs r0, 1 + cmp r1, r0 + bls _0801C332 + b _0801C952 +_0801C332: + cmp r6, 0 + beq _0801C338 + b _0801C952 +_0801C338: + ldr r1, _0801C394 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x8 + strb r0, [r1, 0x1] + movs r0, 0x4 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r4, _0801C398 @ =gUnknown_2023D50 + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801C35E + movs r0, 0x1 + str r0, [r4] +_0801C35E: + ldrh r2, [r5, 0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, 0x2C] + cmp r0, r1 + ble _0801C36E + subs r0, r1, r2 + str r0, [r4] +_0801C36E: + ldr r0, [r4] + negs r0, r0 + str r0, [r4] + mov r0, r8 + adds r0, 0x48 + ldr r1, [sp, 0x28] + adds r0, r1, r0 + ldr r0, [r0] + movs r1, 0x4 + bl sub_8044234 + lsls r0, 24 + cmp r0, 0 + bge _0801C3A0 +_0801C38A: + ldr r0, _0801C39C @ =gUnknown_81D964F + bl sub_801BBE4 + b _0801C3A6 + .align 2, 0 +_0801C394: .4byte gUnknown_2022AB8 +_0801C398: .4byte gUnknown_2023D50 +_0801C39C: .4byte gUnknown_81D964F +_0801C3A0: + ldr r0, _0801C3AC @ =gUnknown_81D95EF + bl sub_801BBE4 +_0801C3A6: + movs r2, 0x4 + str r2, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C3AC: .4byte gUnknown_81D95EF +_0801C3B0: + movs r0, 0x58 + muls r0, r7 + mov r3, r8 + adds r5, r0, r3 + ldrh r4, [r5, 0x28] + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C3C8 + b _0801C952 +_0801C3C8: + cmp r6, 0 + beq _0801C3CE + b _0801C952 +_0801C3CE: + movs r0, 0x19 + ldrsb r0, [r5, r0] + cmp r0, 0xB + ble _0801C3D8 + b _0801C952 +_0801C3D8: + ldr r1, _0801C408 @ =gUnknown_2022AB8 + movs r2, 0xFD + strb r2, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + movs r0, 0x1 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r1, _0801C40C @ =gUnknown_2022AC8 + strb r2, [r1] + strb r6, [r1, 0x1] + movs r0, 0xD2 + strb r0, [r1, 0x2] + strb r6, [r1, 0x3] + subs r0, 0xD3 + strb r0, [r1, 0x4] + ldr r0, _0801C410 @ =gUnknown_2023D6E + strb r7, [r0] + ldr r1, _0801C414 @ =gUnknown_2023FC4 + movs r0, 0x11 + strb r0, [r1, 0x1A] + movs r0, 0xF + b _0801C56C + .align 2, 0 +_0801C408: .4byte gUnknown_2022AB8 +_0801C40C: .4byte gUnknown_2022AC8 +_0801C410: .4byte gUnknown_2023D6E +_0801C414: .4byte gUnknown_2023FC4 +_0801C418: + movs r0, 0x58 + muls r0, r7 + mov r1, r8 + adds r5, r0, r1 + ldrh r4, [r5, 0x28] + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C430 + b _0801C952 +_0801C430: + cmp r6, 0 + beq _0801C436 + b _0801C952 +_0801C436: + movs r0, 0x1A + ldrsb r0, [r5, r0] + cmp r0, 0xB + ble _0801C440 + b _0801C952 +_0801C440: + ldr r1, _0801C460 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + movs r0, 0x2 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r0, _0801C464 @ =gUnknown_2023D6E + strb r7, [r0] + ldr r1, _0801C468 @ =gUnknown_2023FC4 + movs r0, 0x12 + strb r0, [r1, 0x1A] + movs r0, 0x10 + b _0801C506 + .align 2, 0 +_0801C460: .4byte gUnknown_2022AB8 +_0801C464: .4byte gUnknown_2023D6E +_0801C468: .4byte gUnknown_2023FC4 +_0801C46C: + movs r0, 0x58 + muls r0, r7 + mov r3, r8 + adds r5, r0, r3 + ldrh r4, [r5, 0x28] + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C484 + b _0801C952 +_0801C484: + cmp r6, 0 + beq _0801C48A + b _0801C952 +_0801C48A: + movs r0, 0x1B + ldrsb r0, [r5, r0] + cmp r0, 0xB + ble _0801C494 + b _0801C952 +_0801C494: + ldr r1, _0801C4B4 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + movs r0, 0x3 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r0, _0801C4B8 @ =gUnknown_2023D6E + strb r7, [r0] + ldr r1, _0801C4BC @ =gUnknown_2023FC4 + movs r0, 0x13 + strb r0, [r1, 0x1A] + movs r0, 0x11 + b _0801C56C + .align 2, 0 +_0801C4B4: .4byte gUnknown_2022AB8 +_0801C4B8: .4byte gUnknown_2023D6E +_0801C4BC: .4byte gUnknown_2023FC4 +_0801C4C0: + movs r0, 0x58 + muls r0, r7 + mov r1, r8 + adds r5, r0, r1 + ldrh r4, [r5, 0x28] + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C4D8 + b _0801C952 +_0801C4D8: + cmp r6, 0 + beq _0801C4DE + b _0801C952 +_0801C4DE: + movs r0, 0x1C + ldrsb r0, [r5, r0] + cmp r0, 0xB + ble _0801C4E8 + b _0801C952 +_0801C4E8: + ldr r1, _0801C518 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + movs r0, 0x4 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r0, _0801C51C @ =gUnknown_2023D6E + strb r7, [r0] + ldr r1, _0801C520 @ =gUnknown_2023FC4 + movs r0, 0x14 + strb r0, [r1, 0x1A] + movs r0, 0x12 +_0801C506: + strb r0, [r1, 0x10] + strb r6, [r1, 0x11] + ldr r0, _0801C524 @ =gUnknown_81D9679 + bl sub_801BBE4 + movs r2, 0x5 + str r2, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C518: .4byte gUnknown_2022AB8 +_0801C51C: .4byte gUnknown_2023D6E +_0801C520: .4byte gUnknown_2023FC4 +_0801C524: .4byte gUnknown_81D9679 +_0801C528: + movs r0, 0x58 + muls r0, r7 + mov r3, r8 + adds r5, r0, r3 + ldrh r4, [r5, 0x28] + ldrh r0, [r5, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C540 + b _0801C952 +_0801C540: + cmp r6, 0 + beq _0801C546 + b _0801C952 +_0801C546: + movs r0, 0x1D + ldrsb r0, [r5, r0] + cmp r0, 0xB + ble _0801C550 + b _0801C952 +_0801C550: + ldr r1, _0801C57C @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r0, _0801C580 @ =gUnknown_2023D6E + strb r7, [r0] + ldr r1, _0801C584 @ =gUnknown_2023FC4 + movs r0, 0x15 + strb r0, [r1, 0x1A] + movs r0, 0x13 +_0801C56C: + strb r0, [r1, 0x10] + strb r6, [r1, 0x11] + ldr r0, _0801C588 @ =gUnknown_81D9679 + bl sub_801BBE4 + movs r5, 0x5 + str r5, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C57C: .4byte gUnknown_2022AB8 +_0801C580: .4byte gUnknown_2023D6E +_0801C584: .4byte gUnknown_2023FC4 +_0801C588: .4byte gUnknown_81D9679 +_0801C58C: + movs r0, 0x58 + adds r5, r7, 0 + muls r5, r0 + mov r1, r8 + adds r0, r5, r1 + ldrh r4, [r0, 0x28] + ldrh r0, [r0, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C5A6 + b _0801C952 +_0801C5A6: + cmp r6, 0 + beq _0801C5AC + b _0801C952 +_0801C5AC: + mov r0, r8 + adds r0, 0x50 + adds r1, r5, r0 + ldr r2, [r1] + movs r3, 0x80 + lsls r3, 13 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _0801C5C2 + b _0801C952 +_0801C5C2: + orrs r2, r3 + str r2, [r1] + ldr r0, _0801C5D4 @ =gUnknown_81D9694 + bl sub_801BBE4 + movs r2, 0x2 + str r2, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C5D4: .4byte gUnknown_81D9694 +_0801C5D8: + cmp r6, 0 + beq _0801C5DE + b _0801C952 +_0801C5DE: + movs r0, 0x58 + adds r5, r7, 0 + muls r5, r0 + mov r3, r8 + adds r0, r5, r3 + ldrh r4, [r0, 0x28] + ldrh r0, [r0, 0x2C] + mov r1, r9 + bl __divsi3 + cmp r4, r0 + ble _0801C5F8 + b _0801C952 +_0801C5F8: + movs r0, 0 + mov r10, r0 + adds r0, r5, 0x1 + mov r1, r8 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xB + ble _0801C628 + mov r0, r8 + adds r0, 0x19 + adds r1, r5, r0 +_0801C614: + adds r1, 0x1 + movs r2, 0x1 + add r10, r2 + mov r3, r10 + cmp r3, 0x4 + bgt _0801C628 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0xB + bgt _0801C614 +_0801C628: + mov r5, r10 + cmp r5, 0x5 + bne _0801C630 + b _0801C952 +_0801C630: + movs r0, 0x58 + muls r0, r7 + adds r4, r0, 0x1 + ldr r5, _0801C6A8 @ =gUnknown_2023BFC +_0801C638: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + adds r0, r4 + adds r0, r5 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xC + beq _0801C638 + ldr r1, _0801C6AC @ =gUnknown_2022AB8 + movs r2, 0 + movs r3, 0xFD + strb r3, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + mov r0, r10 + adds r0, 0x1 + strb r0, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r0, _0801C6B0 @ =gUnknown_2022AC8 + strb r3, [r0] + strb r2, [r0, 0x1] + movs r1, 0xD1 + strb r1, [r0, 0x2] + strb r2, [r0, 0x3] + strb r2, [r0, 0x4] + movs r1, 0xD2 + strb r1, [r0, 0x5] + strb r2, [r0, 0x6] + subs r1, 0xD3 + strb r1, [r0, 0x7] + ldr r0, _0801C6B4 @ =gUnknown_2023D6E + strb r7, [r0] + ldr r1, _0801C6B8 @ =gUnknown_2023FC4 + mov r0, r10 + adds r0, 0x21 + strb r0, [r1, 0x1A] + adds r0, 0x6 + strb r0, [r1, 0x10] + strb r2, [r1, 0x11] + ldr r0, _0801C6BC @ =gUnknown_81D9679 + bl sub_801BBE4 + movs r0, 0x5 + str r0, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C6A8: .4byte gUnknown_2023BFC +_0801C6AC: .4byte gUnknown_2022AB8 +_0801C6B0: .4byte gUnknown_2022AC8 +_0801C6B4: .4byte gUnknown_2023D6E +_0801C6B8: .4byte gUnknown_2023FC4 +_0801C6BC: .4byte gUnknown_81D9679 +_0801C6C0: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x4C + adds r1, r0 + ldr r2, [r1] + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _0801C6D8 + b _0801C952 +_0801C6D8: + movs r0, 0x41 + negs r0, r0 + ands r2, r0 + str r2, [r1] + ldr r0, _0801C6EC @ =gUnknown_81D9531 + bl sub_801BBE4 + movs r1, 0x1 + str r1, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C6EC: .4byte gUnknown_81D9531 +_0801C6F0: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x4C + adds r1, r0 + ldr r2, [r1] + movs r0, 0x88 + ands r0, r2 + cmp r0, 0 + bne _0801C708 + b _0801C952 +_0801C708: + ldr r0, _0801C71C @ =0xfffff077 + ands r2, r0 + str r2, [r1] + ldr r0, _0801C720 @ =gUnknown_81D9549 + bl sub_801BBE4 + movs r2, 0x1 + str r2, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C71C: .4byte 0xfffff077 +_0801C720: .4byte gUnknown_81D9549 +_0801C724: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x4C + adds r1, r0 + ldr r2, [r1] + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + bne _0801C73C + b _0801C952 +_0801C73C: + movs r0, 0x11 + negs r0, r0 + ands r2, r0 + str r2, [r1] + ldr r0, _0801C750 @ =gUnknown_81D9561 + bl sub_801BBE4 + movs r3, 0x1 + str r3, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C750: .4byte gUnknown_81D9561 +_0801C754: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x4C + adds r1, r0 + ldr r2, [r1] + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _0801C76C + b _0801C952 +_0801C76C: + movs r0, 0x21 + negs r0, r0 + ands r2, r0 + str r2, [r1] + ldr r0, _0801C780 @ =gUnknown_81D9579 + bl sub_801BBE4 + movs r5, 0x1 + str r5, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C780: .4byte gUnknown_81D9579 +_0801C784: + movs r0, 0x58 + adds r3, r7, 0 + muls r3, r0 + mov r0, r8 + adds r0, 0x4C + adds r2, r3, r0 + ldr r1, [r2] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801C79C + b _0801C952 +_0801C79C: + movs r0, 0x8 + negs r0, r0 + ands r1, r0 + str r1, [r2] + mov r1, r8 + adds r1, 0x50 + adds r1, r3, r1 + ldr r0, [r1] + ldr r2, _0801C7B8 @ =0xf7ffffff + ands r0, r2 + str r0, [r1] + ldr r0, _0801C7BC @ =gUnknown_81D9591 + b _0801C906 + .align 2, 0 +_0801C7B8: .4byte 0xf7ffffff +_0801C7BC: .4byte gUnknown_81D9591 +_0801C7C0: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x50 + adds r1, r0 + ldr r2, [r1] + movs r0, 0x7 + ands r0, r2 + cmp r0, 0 + bne _0801C7D8 + b _0801C952 +_0801C7D8: + movs r0, 0x8 + negs r0, r0 + ands r2, r0 + str r2, [r1] + ldr r0, _0801C7EC @ =gUnknown_81D95A9 + bl sub_801BBE4 + movs r1, 0x2 + str r1, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C7EC: .4byte gUnknown_81D95A9 +_0801C7F0: + movs r0, 0x58 + adds r5, r7, 0 + muls r5, r0 + mov r0, r8 + adds r0, 0x4C + adds r4, r5, r0 + ldr r2, [r4] + ldrb r0, [r4] + cmp r0, 0 + bne _0801C816 + mov r0, r8 + adds r0, 0x50 + adds r0, r5, r0 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801C816 + b _0801C952 +_0801C816: + movs r3, 0 + mov r10, r3 + movs r0, 0x88 + ands r2, r0 + cmp r2, 0 + beq _0801C82E + ldr r0, _0801C8BC @ =gUnknown_2022AB8 + ldr r1, _0801C8C0 @ =gUnknown_8250094 + bl sub_8008D84 + movs r0, 0x1 + mov r10, r0 +_0801C82E: + ldr r0, [r4] + movs r1, 0x7 + mov r9, r1 + ands r0, r1 + mov r6, r8 + adds r6, 0x50 + cmp r0, 0 + beq _0801C854 + adds r2, r5, r6 + ldr r0, [r2] + ldr r1, _0801C8C4 @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + ldr r0, _0801C8BC @ =gUnknown_2022AB8 + ldr r1, _0801C8C8 @ =gUnknown_825009C + bl sub_8008D84 + movs r2, 0x1 + add r10, r2 +_0801C854: + ldr r0, [r4] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801C86A + ldr r0, _0801C8BC @ =gUnknown_2022AB8 + ldr r1, _0801C8CC @ =gUnknown_82500A4 + bl sub_8008D84 + movs r3, 0x1 + add r10, r3 +_0801C86A: + ldr r0, [r4] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801C880 + ldr r0, _0801C8BC @ =gUnknown_2022AB8 + ldr r1, _0801C8D0 @ =gUnknown_82500AC + bl sub_8008D84 + movs r0, 0x1 + add r10, r0 +_0801C880: + ldr r0, [r4] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0801C896 + ldr r0, _0801C8BC @ =gUnknown_2022AB8 + ldr r1, _0801C8D4 @ =gUnknown_82500B4 + bl sub_8008D84 + movs r1, 0x1 + add r10, r1 +_0801C896: + adds r0, r5, r6 + ldr r0, [r0] + mov r2, r9 + ands r0, r2 + cmp r0, 0 + beq _0801C8AE + ldr r0, _0801C8BC @ =gUnknown_2022AB8 + ldr r1, _0801C8D8 @ =gUnknown_82500BC + bl sub_8008D84 + movs r3, 0x1 + add r10, r3 +_0801C8AE: + mov r5, r10 + cmp r5, 0x1 + bgt _0801C8E0 + ldr r1, _0801C8DC @ =gUnknown_2023E82 + movs r0, 0 + b _0801C8E4 + .align 2, 0 +_0801C8BC: .4byte gUnknown_2022AB8 +_0801C8C0: .4byte gUnknown_8250094 +_0801C8C4: .4byte 0xf7ffffff +_0801C8C8: .4byte gUnknown_825009C +_0801C8CC: .4byte gUnknown_82500A4 +_0801C8D0: .4byte gUnknown_82500AC +_0801C8D4: .4byte gUnknown_82500B4 +_0801C8D8: .4byte gUnknown_82500BC +_0801C8DC: .4byte gUnknown_2023E82 +_0801C8E0: + ldr r1, _0801C910 @ =gUnknown_2023E82 + movs r0, 0x1 +_0801C8E4: + strb r0, [r1, 0x5] + ldr r2, _0801C914 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r3, r7, 0 + muls r3, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r3, r0 + movs r1, 0 + str r1, [r0] + adds r2, 0x50 + adds r3, r2 + ldr r0, [r3] + subs r1, 0x8 + ands r0, r1 + str r0, [r3] + ldr r0, _0801C918 @ =gUnknown_81D95BF +_0801C906: + bl sub_801BBE4 + movs r0, 0x1 + str r0, [sp, 0xC] + b _0801C95A + .align 2, 0 +_0801C910: .4byte gUnknown_2023E82 +_0801C914: .4byte gUnknown_2023BE4 +_0801C918: .4byte gUnknown_81D95BF +_0801C91C: + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x50 + adds r1, r0 + ldr r2, [r1] + movs r0, 0xF0 + lsls r0, 12 + ands r0, r2 + cmp r0, 0 + beq _0801C952 + ldr r0, _0801C978 @ =0xfff0ffff + ands r2, r0 + str r2, [r1] + ldr r0, _0801C97C @ =gUnknown_2022AB8 + ldr r1, _0801C980 @ =gUnknown_82500C4 + bl sub_8008D84 + ldr r0, _0801C984 @ =gUnknown_81D95BF + bl sub_801BBE4 + ldr r1, _0801C988 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + movs r1, 0x2 + str r1, [sp, 0xC] +_0801C952: + ldr r2, [sp, 0xC] + cmp r2, 0 + bne _0801C95A + b _0801CFA6 +_0801C95A: + ldr r0, _0801C98C @ =gUnknown_2023FC4 + strb r7, [r0, 0x17] + ldr r0, _0801C990 @ =gUnknown_2023D6F + strb r7, [r0] + ldr r4, _0801C994 @ =gUnknown_2023BC4 + ldr r0, _0801C998 @ =gUnknown_2023D6B + strb r7, [r0] + strb r7, [r4] + ldr r3, [sp, 0xC] + cmp r3, 0x1 + beq _0801C99C + cmp r3, 0x3 + beq _0801C9A2 + b _0801CFA6 + .align 2, 0 +_0801C978: .4byte 0xfff0ffff +_0801C97C: .4byte gUnknown_2022AB8 +_0801C980: .4byte gUnknown_82500C4 +_0801C984: .4byte gUnknown_81D95BF +_0801C988: .4byte gUnknown_2023E82 +_0801C98C: .4byte gUnknown_2023FC4 +_0801C990: .4byte gUnknown_2023D6F +_0801C994: .4byte gUnknown_2023BC4 +_0801C998: .4byte gUnknown_2023D6B +_0801C99C: + movs r0, 0x58 + muls r0, r7 + b _0801CE08 +_0801C9A2: + ldr r4, _0801C9F0 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r3, r7, 0 + muls r3, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + beq _0801C9BE + b _0801CFA6 +_0801C9BE: + ldr r1, _0801C9F4 @ =gUnknown_2023E0C + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _0801C9F8 @ =gUnknown_825E45C + mov r5, r10 + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801C9DE + b _0801CFA6 +_0801C9DE: + adds r1, r5, r3 + adds r0, r4, 0 + adds r0, 0x24 + adds r1, r0 + add r0, sp, 0x4 + ldrb r0, [r0] + strb r0, [r1] + b _0801CFA6 + .align 2, 0 +_0801C9F0: .4byte gUnknown_2023BE4 +_0801C9F4: .4byte gUnknown_2023E0C +_0801C9F8: .4byte gUnknown_825E45C +_0801C9FC: + movs r7, 0 + ldr r0, _0801CA2C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r7, r0 + bcc _0801CA08 + b _0801CFA6 +_0801CA08: + ldr r4, _0801CA30 @ =gUnknown_2023D68 + ldr r1, _0801CA34 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r0, r1 + ldrh r0, [r0, 0x2E] + strh r0, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _0801CA3C + ldr r1, _0801CA38 @ =gUnknown_2023F54 + lsls r0, r7, 3 + subs r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x7] + b _0801CA4C + .align 2, 0 +_0801CA2C: .4byte gUnknown_2023BCC +_0801CA30: .4byte gUnknown_2023D68 +_0801CA34: .4byte gUnknown_2023BE4 +_0801CA38: .4byte gUnknown_2023F54 +_0801CA3C: + ldrh r0, [r4] + bl sub_809A924 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4] + bl sub_809A948 +_0801CA4C: + subs r0, r5, 0x2 + cmp r0, 0x1A + bls _0801CA54 + b _0801CDF0 +_0801CA54: + lsls r0, 2 + ldr r1, _0801CA60 @ =_0801CA64 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801CA60: .4byte _0801CA64 + .align 2, 0 +_0801CA64: + .4byte _0801CAD0 + .4byte _0801CBC0 + .4byte _0801CB0C + .4byte _0801CB48 + .4byte _0801CB84 + .4byte _0801CDF0 + .4byte _0801CC08 + .4byte _0801CC9C + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CD90 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CDF0 + .4byte _0801CC44 +_0801CAD0: + ldr r1, _0801CB00 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, 0x4C + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0801CAE6 + b _0801CDF0 +_0801CAE6: + movs r0, 0x41 + negs r0, r0 + ands r1, r0 + str r1, [r2] + bl sub_8017544 + ldr r1, _0801CB04 @ =gUnknown_2023D74 + ldr r0, _0801CB08 @ =gUnknown_81D9537 + str r0, [r1] + movs r0, 0x1 + str r0, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CB00: .4byte gUnknown_2023BE4 +_0801CB04: .4byte gUnknown_2023D74 +_0801CB08: .4byte gUnknown_81D9537 +_0801CB0C: + ldr r1, _0801CB38 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, 0x4C + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _0801CB22 + b _0801CDF0 +_0801CB22: + ldr r0, _0801CB3C @ =0xfffff077 + ands r1, r0 + str r1, [r2] + bl sub_8017544 + ldr r1, _0801CB40 @ =gUnknown_2023D74 + ldr r0, _0801CB44 @ =gUnknown_81D954F + str r0, [r1] + movs r1, 0x1 + str r1, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CB38: .4byte gUnknown_2023BE4 +_0801CB3C: .4byte 0xfffff077 +_0801CB40: .4byte gUnknown_2023D74 +_0801CB44: .4byte gUnknown_81D954F +_0801CB48: + ldr r1, _0801CB78 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, 0x4C + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0801CB5E + b _0801CDF0 +_0801CB5E: + movs r0, 0x11 + negs r0, r0 + ands r1, r0 + str r1, [r2] + bl sub_8017544 + ldr r1, _0801CB7C @ =gUnknown_2023D74 + ldr r0, _0801CB80 @ =gUnknown_81D9567 + str r0, [r1] + movs r2, 0x1 + str r2, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CB78: .4byte gUnknown_2023BE4 +_0801CB7C: .4byte gUnknown_2023D74 +_0801CB80: .4byte gUnknown_81D9567 +_0801CB84: + ldr r1, _0801CBB4 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, 0x4C + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _0801CB9A + b _0801CDF0 +_0801CB9A: + movs r0, 0x21 + negs r0, r0 + ands r1, r0 + str r1, [r2] + bl sub_8017544 + ldr r1, _0801CBB8 @ =gUnknown_2023D74 + ldr r0, _0801CBBC @ =gUnknown_81D957F + str r0, [r1] + movs r3, 0x1 + str r3, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CBB4: .4byte gUnknown_2023BE4 +_0801CBB8: .4byte gUnknown_2023D74 +_0801CBBC: .4byte gUnknown_81D957F +_0801CBC0: + ldr r2, _0801CBF8 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r4, r7, 0 + muls r4, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r3, r4, r0 + ldr r1, [r3] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801CBDA + b _0801CDF0 +_0801CBDA: + movs r0, 0x8 + negs r0, r0 + ands r1, r0 + str r1, [r3] + adds r2, 0x50 + adds r2, r4, r2 + ldr r0, [r2] + ldr r1, _0801CBFC @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + bl sub_8017544 + ldr r1, _0801CC00 @ =gUnknown_2023D74 + ldr r0, _0801CC04 @ =gUnknown_81D9597 + b _0801CD58 + .align 2, 0 +_0801CBF8: .4byte gUnknown_2023BE4 +_0801CBFC: .4byte 0xf7ffffff +_0801CC00: .4byte gUnknown_2023D74 +_0801CC04: .4byte gUnknown_81D9597 +_0801CC08: + ldr r1, _0801CC38 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801CC1E + b _0801CDF0 +_0801CC1E: + movs r0, 0x8 + negs r0, r0 + ands r1, r0 + str r1, [r2] + bl sub_8017544 + ldr r1, _0801CC3C @ =gUnknown_2023D74 + ldr r0, _0801CC40 @ =gUnknown_81D95AF + str r0, [r1] + movs r0, 0x2 + str r0, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CC38: .4byte gUnknown_2023BE4 +_0801CC3C: .4byte gUnknown_2023D74 +_0801CC40: .4byte gUnknown_81D95AF +_0801CC44: + ldr r1, _0801CC80 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r7 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0xF0 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + bne _0801CC5C + b _0801CDF0 +_0801CC5C: + ldr r0, _0801CC84 @ =0xfff0ffff + ands r1, r0 + str r1, [r2] + ldr r0, _0801CC88 @ =gUnknown_2022AB8 + ldr r1, _0801CC8C @ =gUnknown_82500C4 + bl sub_8008D84 + bl sub_8017544 + ldr r1, _0801CC90 @ =gUnknown_2023E82 + movs r0, 0 + strb r0, [r1, 0x5] + ldr r1, _0801CC94 @ =gUnknown_2023D74 + ldr r0, _0801CC98 @ =gUnknown_81D95C5 + str r0, [r1] + movs r1, 0x2 + str r1, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CC80: .4byte gUnknown_2023BE4 +_0801CC84: .4byte 0xfff0ffff +_0801CC88: .4byte gUnknown_2022AB8 +_0801CC8C: .4byte gUnknown_82500C4 +_0801CC90: .4byte gUnknown_2023E82 +_0801CC94: .4byte gUnknown_2023D74 +_0801CC98: .4byte gUnknown_81D95C5 +_0801CC9C: + ldr r4, _0801CD60 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r5, r7, 0 + muls r5, r0 + adds r0, r4, 0 + adds r0, 0x4C + adds r6, r5, r0 + ldr r2, [r6] + ldrb r0, [r6] + cmp r0, 0 + bne _0801CCC4 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r5, r0 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0801CCC4 + b _0801CDF0 +_0801CCC4: + movs r0, 0x88 + ands r2, r0 + cmp r2, 0 + beq _0801CCD4 + ldr r0, _0801CD64 @ =gUnknown_2022AB8 + ldr r1, _0801CD68 @ =gUnknown_8250094 + bl sub_8008D84 +_0801CCD4: + ldr r0, [r6] + movs r2, 0x7 + mov r8, r2 + ands r0, r2 + adds r4, 0x50 + cmp r0, 0 + beq _0801CCF4 + adds r2, r5, r4 + ldr r0, [r2] + ldr r1, _0801CD6C @ =0xf7ffffff + ands r0, r1 + str r0, [r2] + ldr r0, _0801CD64 @ =gUnknown_2022AB8 + ldr r1, _0801CD70 @ =gUnknown_825009C + bl sub_8008D84 +_0801CCF4: + ldr r0, [r6] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801CD06 + ldr r0, _0801CD64 @ =gUnknown_2022AB8 + ldr r1, _0801CD74 @ =gUnknown_82500A4 + bl sub_8008D84 +_0801CD06: + ldr r0, [r6] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801CD18 + ldr r0, _0801CD64 @ =gUnknown_2022AB8 + ldr r1, _0801CD78 @ =gUnknown_82500AC + bl sub_8008D84 +_0801CD18: + ldr r0, [r6] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0801CD2A + ldr r0, _0801CD64 @ =gUnknown_2022AB8 + ldr r1, _0801CD7C @ =gUnknown_82500B4 + bl sub_8008D84 +_0801CD2A: + adds r5, r4 + ldr r0, [r5] + mov r3, r8 + ands r0, r3 + cmp r0, 0 + beq _0801CD3E + ldr r0, _0801CD64 @ =gUnknown_2022AB8 + ldr r1, _0801CD80 @ =gUnknown_82500BC + bl sub_8008D84 +_0801CD3E: + movs r4, 0 + str r4, [r6] + ldr r0, [r5] + movs r1, 0x8 + negs r1, r1 + ands r0, r1 + str r0, [r5] + bl sub_8017544 + ldr r0, _0801CD84 @ =gUnknown_2023E82 + strb r4, [r0, 0x5] + ldr r1, _0801CD88 @ =gUnknown_2023D74 + ldr r0, _0801CD8C @ =gUnknown_81D95C5 +_0801CD58: + str r0, [r1] + movs r5, 0x1 + str r5, [sp, 0xC] + b _0801CDF6 + .align 2, 0 +_0801CD60: .4byte gUnknown_2023BE4 +_0801CD64: .4byte gUnknown_2022AB8 +_0801CD68: .4byte gUnknown_8250094 +_0801CD6C: .4byte 0xf7ffffff +_0801CD70: .4byte gUnknown_825009C +_0801CD74: .4byte gUnknown_82500A4 +_0801CD78: .4byte gUnknown_82500AC +_0801CD7C: .4byte gUnknown_82500B4 +_0801CD80: .4byte gUnknown_82500BC +_0801CD84: .4byte gUnknown_2023E82 +_0801CD88: .4byte gUnknown_2023D74 +_0801CD8C: .4byte gUnknown_81D95C5 +_0801CD90: + ldr r0, _0801CDDC @ =gUnknown_2023BE4 + mov r8, r0 + movs r0, 0x58 + adds r1, r7, 0 + muls r1, r0 + mov r0, r8 + adds r0, 0x18 + adds r1, r0 + movs r2, 0x6 + movs r3, 0x7 + mov r10, r3 +_0801CDA6: + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _0801CDB4 + strb r2, [r1] + movs r5, 0x5 + str r5, [sp, 0xC] +_0801CDB4: + adds r1, 0x1 + movs r0, 0x1 + negs r0, r0 + add r10, r0 + mov r3, r10 + cmp r3, 0 + bge _0801CDA6 + ldr r5, [sp, 0xC] + cmp r5, 0 + beq _0801CE34 + ldr r0, _0801CDE0 @ =gUnknown_2023FC4 + strb r7, [r0, 0x17] + ldr r0, _0801CDE4 @ =gUnknown_2023D6F + strb r7, [r0] + bl sub_8017544 + ldr r1, _0801CDE8 @ =gUnknown_2023D74 + ldr r0, _0801CDEC @ =gUnknown_81D95DF + str r0, [r1] + b _0801CFA6 + .align 2, 0 +_0801CDDC: .4byte gUnknown_2023BE4 +_0801CDE0: .4byte gUnknown_2023FC4 +_0801CDE4: .4byte gUnknown_2023D6F +_0801CDE8: .4byte gUnknown_2023D74 +_0801CDEC: .4byte gUnknown_81D95DF +_0801CDF0: + ldr r0, [sp, 0xC] + cmp r0, 0 + beq _0801CE34 +_0801CDF6: + ldr r0, _0801CE24 @ =gUnknown_2023FC4 + strb r7, [r0, 0x17] + ldr r0, _0801CE28 @ =gUnknown_2023D6F + strb r7, [r0] + ldr r4, _0801CE2C @ =gUnknown_2023BC4 + strb r7, [r4] + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 +_0801CE08: + ldr r1, _0801CE30 @ =gUnknown_2023C30 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl sub_800DFF0 + ldrb r0, [r4] + bl sub_8017248 + b _0801CFA6 + .align 2, 0 +_0801CE24: .4byte gUnknown_2023FC4 +_0801CE28: .4byte gUnknown_2023D6F +_0801CE2C: .4byte gUnknown_2023BC4 +_0801CE30: .4byte gUnknown_2023C30 +_0801CE34: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0801CE48 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r7, r0 + bcs _0801CE44 + b _0801CA08 +_0801CE44: + b _0801CFA6 + .align 2, 0 +_0801CE48: .4byte gUnknown_2023BCC +_0801CE4C: + ldr r7, _0801CE64 @ =gUnknown_2023D50 + ldr r0, [r7] + cmp r0, 0 + bne _0801CE56 + b _0801CFA6 +_0801CE56: + mov r1, r8 + cmp r1, 0x1E + beq _0801CE68 + cmp r1, 0x3E + beq _0801CF10 + b _0801CFA6 + .align 2, 0 +_0801CE64: .4byte gUnknown_2023D50 +_0801CE68: + ldr r0, _0801CEF4 @ =gUnknown_2023DCC + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801CE76 + b _0801CFA6 +_0801CE76: + ldr r2, _0801CEF8 @ =gUnknown_2023ECC + ldr r4, _0801CEFC @ =gUnknown_2023D6C + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801CE9C + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0801CE9C + b _0801CFA6 +_0801CE9C: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r9 + bcs _0801CFA6 + ldr r2, _0801CF00 @ =gUnknown_8250C04 + ldr r0, _0801CF04 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0801CFA6 + ldr r2, _0801CF08 @ =gUnknown_2023BE4 + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801CFA6 + ldr r1, _0801CF0C @ =gUnknown_2023E82 + movs r0, 0x8 + strb r0, [r1, 0x3] + bl sub_8017544 + movs r0, 0 + movs r1, 0 + bl sub_801FF20 + bl sub_801756C + b _0801CFA6 + .align 2, 0 +_0801CEF4: .4byte gUnknown_2023DCC +_0801CEF8: .4byte gUnknown_2023ECC +_0801CEFC: .4byte gUnknown_2023D6C +_0801CF00: .4byte gUnknown_8250C04 +_0801CF04: .4byte gUnknown_2023D4A +_0801CF08: .4byte gUnknown_2023BE4 +_0801CF0C: .4byte gUnknown_2023E82 +_0801CF10: + ldr r0, _0801CFB8 @ =gUnknown_2023DCC + ldrb r0, [r0] + movs r5, 0x29 + ands r5, r0 + cmp r5, 0 + bne _0801CFA6 + ldr r1, _0801CFBC @ =gUnknown_2023ECC + ldr r4, _0801CFC0 @ =gUnknown_2023D6C + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r6, r1, 0x4 + adds r0, r6 + ldr r1, [r0] + cmp r1, 0 + beq _0801CFA6 + ldr r0, _0801CFC4 @ =0x0000ffff + cmp r1, r0 + beq _0801CFA6 + ldr r0, _0801CFC8 @ =gUnknown_2023D6B + ldrb r3, [r0] + cmp r3, r2 + beq _0801CFA6 + ldr r2, _0801CFCC @ =gUnknown_2023BE4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r1, [r0, 0x28] + ldrh r0, [r0, 0x2C] + cmp r1, r0 + beq _0801CFA6 + cmp r1, 0 + beq _0801CFA6 + ldr r0, _0801CFD0 @ =gUnknown_2023D68 + mov r2, sp + ldrh r2, [r2, 0x14] + strh r2, [r0] + ldr r0, _0801CFD4 @ =gUnknown_2023D6F + strb r3, [r0] + ldr r0, _0801CFD8 @ =gUnknown_2023FC4 + strb r3, [r0, 0x17] + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldr r1, [sp, 0x10] + bl __divsi3 + negs r0, r0 + str r0, [r7] + ldrb r1, [r4] + cmp r0, 0 + bne _0801CF88 + movs r0, 0x1 + negs r0, r0 + str r0, [r7] +_0801CF88: + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + str r5, [r0] + bl sub_8017544 + ldr r1, _0801CFDC @ =gUnknown_2023D74 + ldr r0, _0801CFE0 @ =gUnknown_81D9622 + str r0, [r1] + ldr r0, [sp, 0xC] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] +_0801CFA6: + ldr r0, [sp, 0xC] + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801CFB8: .4byte gUnknown_2023DCC +_0801CFBC: .4byte gUnknown_2023ECC +_0801CFC0: .4byte gUnknown_2023D6C +_0801CFC4: .4byte 0x0000ffff +_0801CFC8: .4byte gUnknown_2023D6B +_0801CFCC: .4byte gUnknown_2023BE4 +_0801CFD0: .4byte gUnknown_2023D68 +_0801CFD4: .4byte gUnknown_2023D6F +_0801CFD8: .4byte gUnknown_2023FC4 +_0801CFDC: .4byte gUnknown_2023D74 +_0801CFE0: .4byte gUnknown_81D9622 + thumb_func_end sub_801BC68 + + thumb_func_start sub_801CFE4 +sub_801CFE4: @ 801CFE4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0801D01C @ =gUnknown_2023E0C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0 + strb r2, [r1, 0x10] + ldr r1, _0801D020 @ =gUnknown_2023BE4 + movs r2, 0x58 + adds r3, r0, 0 + muls r3, r2 + adds r1, 0x50 + adds r3, r1 + ldr r1, [r3] + ldr r2, _0801D024 @ =0xfdffffff + ands r1, r2 + str r1, [r3] + ldr r1, _0801D028 @ =gUnknown_2023DFC + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r2, _0801D02C @ =0xffffbfff + ands r1, r2 + str r1, [r0] + bx lr + .align 2, 0 +_0801D01C: .4byte gUnknown_2023E0C +_0801D020: .4byte gUnknown_2023BE4 +_0801D024: .4byte 0xfdffffff +_0801D028: .4byte gUnknown_2023DFC +_0801D02C: .4byte 0xffffbfff + thumb_func_end sub_801CFE4 + + thumb_func_start sub_801D030 +sub_801D030: @ 801D030 + push {lr} + ldr r0, _0801D050 @ =gUnknown_2023BC8 + ldr r0, [r0] + cmp r0, 0 + bne _0801D04C + ldr r1, _0801D054 @ =gUnknown_825011C + ldr r0, _0801D058 @ =gUnknown_2023D74 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0801D04C: + pop {r0} + bx r0 + .align 2, 0 +_0801D050: .4byte gUnknown_2023BC8 +_0801D054: .4byte gUnknown_825011C +_0801D058: .4byte gUnknown_2023D74 + thumb_func_end sub_801D030 + + thumb_func_start sub_801D05C +sub_801D05C: @ 801D05C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 24 + lsrs r0, r1, 24 + movs r5, 0 + cmp r0, 0 + beq _0801D07A + subs r0, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + b _0801D086 +_0801D07A: + ldr r1, _0801D098 @ =gUnknown_8250C04 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x6] +_0801D086: + cmp r6, 0x40 + bls _0801D08C + b _0801D39C +_0801D08C: + lsls r0, r6, 2 + ldr r1, _0801D09C @ =_0801D0A0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801D098: .4byte gUnknown_8250C04 +_0801D09C: .4byte _0801D0A0 + .align 2, 0 +_0801D0A0: + .4byte _0801D1A4 + .4byte _0801D2A4 + .4byte _0801D398 + .4byte _0801D39C + .4byte _0801D2BC + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D2A4 + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D398 + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D2A4 + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D39C + .4byte _0801D2A4 +_0801D1A4: + ldr r0, _0801D284 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0801D288 @ =gUnknown_2023DE4 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r2, r0, r1 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0801D1D6 + ldr r1, _0801D28C @ =gUnknown_2023BE4 + ldrb r4, [r2, 0x9] + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801D1D6 + b _0801D2EC +_0801D1D6: + ldr r0, _0801D284 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r7, 1 + mov r8, r0 +_0801D1E6: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0801D290 @ =gUnknown_2023BCC + ldrb r1, [r1] + bl __modsi3 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _0801D284 @ =gUnknown_2023D6B + ldrb r3, [r6] + cmp r5, r3 + beq _0801D1E6 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _0801D1E6 + ldr r0, _0801D294 @ =gUnknown_2023D70 + ldrb r2, [r0] + ldr r1, _0801D298 @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + bne _0801D1E6 + ldr r0, _0801D29C @ =gUnknown_8250C04 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x2] + cmp r0, 0xD + beq _0801D234 + b _0801D39C +_0801D234: + ldrb r1, [r6] + str r2, [sp] + movs r0, 0x10 + movs r2, 0x1F + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0801D24A + b _0801D39C +_0801D24A: + ldr r2, _0801D28C @ =gUnknown_2023BE4 + movs r1, 0x58 + adds r0, r5, 0 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1F + bne _0801D25E + b _0801D39C +_0801D25E: + movs r4, 0x2 + eors r5, r4 + adds r0, r5, 0 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_80C71D0 + ldr r1, _0801D2A0 @ =gUnknown_2023ECC + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0] + orrs r1, r4 + strb r1, [r0] + b _0801D39C + .align 2, 0 +_0801D284: .4byte gUnknown_2023D6B +_0801D288: .4byte gUnknown_2023DE4 +_0801D28C: .4byte gUnknown_2023BE4 +_0801D290: .4byte gUnknown_2023BCC +_0801D294: .4byte gUnknown_2023D70 +_0801D298: .4byte gUnknown_825E45C +_0801D29C: .4byte gUnknown_8250C04 +_0801D2A0: .4byte gUnknown_2023ECC +_0801D2A4: + ldr r0, _0801D2B8 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751D8 + adds r1, r0, 0 + movs r2, 0x1 + movs r0, 0x1 + ands r0, r1 + eors r0, r2 + b _0801D34E + .align 2, 0 +_0801D2B8: .4byte gUnknown_2023D6B +_0801D2BC: + ldr r0, _0801D2F0 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0801D2F4 @ =gUnknown_2023DE4 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r2, r0, r1 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0801D2FC + ldr r1, _0801D2F8 @ =gUnknown_2023BE4 + ldrb r4, [r2, 0x9] + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801D2FC +_0801D2EC: + adds r5, r4, 0 + b _0801D39C + .align 2, 0 +_0801D2F0: .4byte gUnknown_2023D6B +_0801D2F4: .4byte gUnknown_2023DE4 +_0801D2F8: .4byte gUnknown_2023BE4 +_0801D2FC: + ldr r0, _0801D330 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r4, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0801D378 + movs r0, 0x4 + ands r6, r0 + cmp r6, 0 + beq _0801D378 + ldr r0, _0801D334 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0801D33C + bl sub_8044EC8 + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _0801D338 + movs r0, 0x1 + b _0801D34E + .align 2, 0 +_0801D330: .4byte gUnknown_2022B4C +_0801D334: .4byte gUnknown_2023D6B +_0801D338: + movs r0, 0x3 + b _0801D34E +_0801D33C: + bl sub_8044EC8 + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _0801D34C + movs r0, 0 + b _0801D34E +_0801D34C: + movs r0, 0x2 +_0801D34E: + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0801D370 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0801D374 @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801D39C + movs r0, 0x2 + eors r5, r0 + b _0801D39C + .align 2, 0 +_0801D370: .4byte gUnknown_2023D70 +_0801D374: .4byte gUnknown_825E45C +_0801D378: + ldr r0, _0801D394 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751D8 + adds r1, r0, 0 + movs r2, 0x1 + movs r0, 0x1 + ands r0, r1 + eors r0, r2 + bl sub_80751E8 + lsls r0, 24 + lsrs r5, r0, 24 + b _0801D39C + .align 2, 0 +_0801D394: .4byte gUnknown_2023D6B +_0801D398: + ldr r0, _0801D3B8 @ =gUnknown_2023D6B + ldrb r5, [r0] +_0801D39C: + ldr r0, _0801D3B8 @ =gUnknown_2023D6B + ldrb r0, [r0] + ldr r1, _0801D3BC @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r0, r1 + strb r5, [r0, 0xC] + adds r0, r5, 0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801D3B8: .4byte gUnknown_2023D6B +_0801D3BC: .4byte gUnknown_2023FE8 + thumb_func_end sub_801D05C + + thumb_func_start sub_801D3C0 +sub_801D3C0: @ 801D3C0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0801D406 + ldr r0, _0801D40C @ =gUnknown_2023BCE + lsls r4, 1 + adds r5, r4, r0 + ldrh r0, [r5] + movs r7, 0x64 + muls r0, r7 + ldr r6, _0801D410 @ =gUnknown_2024284 + adds r0, r6 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xCD + lsls r1, 1 + cmp r0, r1 + beq _0801D414 + ldrh r0, [r5] + muls r0, r7 + adds r0, r6 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x97 + beq _0801D414 +_0801D406: + movs r0, 0x1 + b _0801D42A + .align 2, 0 +_0801D40C: .4byte gUnknown_2023BCE +_0801D410: .4byte gUnknown_2024284 +_0801D414: + ldr r0, _0801D430 @ =gUnknown_2023BCE + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0801D434 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x50 + movs r2, 0 + bl sub_803FBE8 +_0801D42A: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801D430: .4byte gUnknown_2023BCE +_0801D434: .4byte gUnknown_2024284 + thumb_func_end sub_801D3C0 + + thumb_func_start sub_801D438 +sub_801D438: @ 801D438 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + movs r6, 0 + ldr r0, _0801D4F8 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0801D4FC @ =0x00010002 + ands r0, r1 + cmp r0, 0 + bne _0801D4F4 + ldr r4, _0801D500 @ =gUnknown_2023D6B + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0801D4F4 + ldrb r0, [r4] + bl sub_801D3C0 + cmp r0, 0 + beq _0801D4BE + ldr r2, _0801D504 @ =gUnknown_2023BE4 + ldrb r1, [r4] + movs r0, 0x58 + muls r1, r0 + adds r0, r2, 0 + adds r0, 0x54 + adds r0, r1, r0 + ldr r0, [r0] + adds r2, 0x3C + adds r1, r2 + bl sub_8044288 + lsls r0, 24 + cmp r0, 0 + beq _0801D4F4 + ldr r0, _0801D508 @ =0x00000827 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _0801D4F4 + movs r6, 0xA + ldr r0, _0801D50C @ =0x00000821 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0801D4A2 + movs r6, 0x1E +_0801D4A2: + ldr r0, _0801D510 @ =0x00000823 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0801D4B0 + movs r6, 0x32 +_0801D4B0: + ldr r0, _0801D514 @ =0x00000825 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0801D4BE + movs r6, 0x46 +_0801D4BE: + ldr r5, _0801D504 @ =gUnknown_2023BE4 + ldr r0, _0801D500 @ =gUnknown_2023D6B + mov r8, r0 + ldrb r0, [r0] + movs r7, 0x58 + muls r0, r7 + adds r0, r5 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, r6 + bls _0801D4F4 + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + mov r2, r8 + ldrb r0, [r2] + adds r2, r0, 0 + muls r2, r7 + adds r0, r2, r5 + adds r0, 0x2A + ldrb r0, [r0] + adds r0, r6 + muls r0, r1 + asrs r4, r0, 8 + cmp r4, r6 + bge _0801D518 +_0801D4F4: + movs r0, 0 + b _0801D738 + .align 2, 0 +_0801D4F8: .4byte gUnknown_2022B4C +_0801D4FC: .4byte 0x00010002 +_0801D500: .4byte gUnknown_2023D6B +_0801D504: .4byte gUnknown_2023BE4 +_0801D508: .4byte 0x00000827 +_0801D50C: .4byte 0x00000821 +_0801D510: .4byte 0x00000823 +_0801D514: .4byte 0x00000825 +_0801D518: + ldr r3, _0801D554 @ =gUnknown_2023D4A + ldrh r0, [r3] + cmp r0, 0x63 + bne _0801D52E + adds r0, r5, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r1, [r0] + ldr r2, _0801D558 @ =0xff7fffff + ands r1, r2 + str r1, [r0] +_0801D52E: + mov r1, r8 + ldrb r0, [r1] + muls r0, r7 + adds r1, r5, 0 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0801D564 + ldrh r0, [r3] + cmp r0, 0xAD + beq _0801D54E + cmp r0, 0xD6 + bne _0801D564 +_0801D54E: + ldr r1, _0801D55C @ =gUnknown_2023D74 + ldr r0, _0801D560 @ =gUnknown_81D94DA + b _0801D6E2 + .align 2, 0 +_0801D554: .4byte gUnknown_2023D4A +_0801D558: .4byte 0xff7fffff +_0801D55C: .4byte gUnknown_2023D74 +_0801D560: .4byte gUnknown_81D94DA +_0801D564: + bl sub_8044EC8 + movs r1, 0xFF + ands r1, r0 + ldr r2, _0801D608 @ =gUnknown_2023BE4 + ldr r0, _0801D60C @ =gUnknown_2023D6B + ldrb r3, [r0] + movs r0, 0x58 + muls r0, r3 + adds r0, r2 + adds r0, 0x2A + ldrb r0, [r0] + adds r0, r6 + muls r0, r1 + asrs r4, r0, 8 + cmp r4, r6 + bge _0801D634 + ldr r0, _0801D610 @ =gUnknown_2023D4A + ldrh r1, [r0] + movs r0, 0x84 + lsls r0, 1 + cmp r1, r0 + beq _0801D634 + ldr r6, _0801D614 @ =gUnknown_825E45C + ldr r5, _0801D618 @ =gUnknown_2023D48 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + adds r0, r3, 0 + movs r2, 0xFF + bl sub_801779C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bne _0801D5B0 + b _0801D6D2 +_0801D5B0: + ldr r2, _0801D61C @ =gUnknown_2023D49 + mov r8, r2 + movs r7, 0x3 +_0801D5B6: + bl sub_8044EC8 + ands r0, r7 + mov r1, r8 + strb r0, [r1] + strb r0, [r5] + ldrb r0, [r5] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + bne _0801D5B6 + ldr r4, _0801D620 @ =gUnknown_2023D4E + ldr r3, _0801D608 @ =gUnknown_2023BE4 + ldr r0, _0801D618 @ =gUnknown_2023D48 + ldrb r0, [r0] + lsls r0, 1 + ldr r1, _0801D60C @ =gUnknown_2023D6B + ldrb r2, [r1] + movs r1, 0x58 + muls r1, r2 + adds r0, r1 + adds r3, 0xC + adds r0, r3 + ldrh r0, [r0] + strh r0, [r4] + ldr r1, _0801D624 @ =gUnknown_2023D74 + ldr r0, _0801D628 @ =gUnknown_81D94EA + str r0, [r1] + ldrh r0, [r4] + movs r1, 0 + bl sub_801D05C + ldr r1, _0801D62C @ =gUnknown_2023D6C + strb r0, [r1] + ldr r2, _0801D630 @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 14 + b _0801D732 + .align 2, 0 +_0801D608: .4byte gUnknown_2023BE4 +_0801D60C: .4byte gUnknown_2023D6B +_0801D610: .4byte gUnknown_2023D4A +_0801D614: .4byte gUnknown_825E45C +_0801D618: .4byte gUnknown_2023D48 +_0801D61C: .4byte gUnknown_2023D49 +_0801D620: .4byte gUnknown_2023D4E +_0801D624: .4byte gUnknown_2023D74 +_0801D628: .4byte gUnknown_81D94EA +_0801D62C: .4byte gUnknown_2023D6C +_0801D630: .4byte gUnknown_2023DD0 +_0801D634: + ldr r5, _0801D6B8 @ =gUnknown_2023BE4 + ldr r2, _0801D6BC @ =gUnknown_2023D6B + mov r8, r2 + ldrb r0, [r2] + movs r7, 0x58 + muls r0, r7 + adds r0, r5 + adds r0, 0x2A + ldrb r0, [r0] + subs r0, r6 + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_8044EC8 + movs r2, 0xFF + adds r4, r2, 0 + ands r4, r0 + cmp r4, r6 + bge _0801D6CC + mov r1, r8 + ldrb r0, [r1] + adds r1, r0, 0 + muls r1, r7 + adds r0, r5, 0 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r2 + cmp r0, 0 + bne _0801D6CC + adds r0, r1, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x48 + beq _0801D6CC + cmp r0, 0xF + beq _0801D6CC + movs r2, 0 + ldr r0, _0801D6C0 @ =gUnknown_2023BCC + ldrb r3, [r0] + adds r7, r0, 0 + cmp r2, r3 + bge _0801D6AA + ldr r0, [r5, 0x50] + movs r1, 0x70 + ands r0, r1 + cmp r0, 0 + bne _0801D6AA + adds r1, r5, 0 + adds r1, 0x50 + movs r5, 0x70 +_0801D69A: + adds r1, 0x58 + adds r2, 0x1 + cmp r2, r3 + bge _0801D6AA + ldr r0, [r1] + ands r0, r5 + cmp r0, 0 + beq _0801D69A +_0801D6AA: + ldrb r7, [r7] + cmp r2, r7 + bne _0801D6CC + ldr r1, _0801D6C4 @ =gUnknown_2023D74 + ldr r0, _0801D6C8 @ =gUnknown_81D9504 + b _0801D6E2 + .align 2, 0 +_0801D6B8: .4byte gUnknown_2023BE4 +_0801D6BC: .4byte gUnknown_2023D6B +_0801D6C0: .4byte gUnknown_2023BCC +_0801D6C4: .4byte gUnknown_2023D74 +_0801D6C8: .4byte gUnknown_81D9504 +_0801D6CC: + subs r4, r6 + cmp r4, r6 + blt _0801D6F4 +_0801D6D2: + bl sub_8044EC8 + ldr r2, _0801D6E8 @ =gUnknown_2023E82 + movs r1, 0x3 + ands r1, r0 + strb r1, [r2, 0x5] + ldr r1, _0801D6EC @ =gUnknown_2023D74 + ldr r0, _0801D6F0 @ =gUnknown_81D94F2 +_0801D6E2: + str r0, [r1] + movs r0, 0x1 + b _0801D738 + .align 2, 0 +_0801D6E8: .4byte gUnknown_2023E82 +_0801D6EC: .4byte gUnknown_2023D74 +_0801D6F0: .4byte gUnknown_81D94F2 +_0801D6F4: + ldr r4, _0801D744 @ =gUnknown_2023D6B + ldrb r1, [r4] + movs r0, 0x58 + muls r1, r0 + ldr r0, _0801D748 @ =gUnknown_2023BE4 + adds r1, r0 + movs r0, 0x28 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldrb r0, [r4] + str r0, [sp, 0x8] + ldrb r0, [r4] + str r0, [sp, 0xC] + adds r0, r1, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_803ECEC + ldr r1, _0801D74C @ =gUnknown_2023D50 + str r0, [r1] + ldr r1, _0801D750 @ =gUnknown_2023D6C + ldrb r0, [r4] + strb r0, [r1] + ldr r1, _0801D754 @ =gUnknown_2023D74 + ldr r0, _0801D758 @ =gUnknown_81D951B + str r0, [r1] + ldr r2, _0801D75C @ =gUnknown_2023DD0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 12 +_0801D732: + orrs r0, r1 + str r0, [r2] + movs r0, 0x2 +_0801D738: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801D744: .4byte gUnknown_2023D6B +_0801D748: .4byte gUnknown_2023BE4 +_0801D74C: .4byte gUnknown_2023D50 +_0801D750: .4byte gUnknown_2023D6C +_0801D754: .4byte gUnknown_2023D74 +_0801D758: .4byte gUnknown_81D951B +_0801D75C: .4byte gUnknown_2023DD0 + thumb_func_end sub_801D438 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_util2.s b/asm/battle_util2.s new file mode 100644 index 000000000..5e1fb8c3b --- /dev/null +++ b/asm/battle_util2.s @@ -0,0 +1,333 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_802E03C +sub_802E03C: @ 802E03C + push {r4,r5,lr} + ldr r4, _0802E118 @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _0802E050 + bl sub_815DA54 +_0802E050: + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + beq _0802E06E + ldr r5, _0802E11C @ =gUnknown_3005EE0 + movs r4, 0x3 +_0802E060: + movs r0, 0x8 + bl sub_8002BB0 + stm r5!, {r0} + subs r4, 0x1 + cmp r4, 0 + bge _0802E060 +_0802E06E: + ldr r4, _0802E120 @ =gUnknown_2023FE8 + movs r0, 0x80 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r4] + ldr r4, _0802E124 @ =gUnknown_2023FF4 + movs r0, 0x20 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0xA0 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1] + movs r0, 0x10 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x4] + movs r0, 0x24 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x8] + movs r0, 0x24 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0xC] + movs r0, 0xC + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x10] + movs r0, 0x1C + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x14] + movs r0, 0x30 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x18] + movs r0, 0x24 + bl sub_8002BB0 + ldr r1, [r4] + str r0, [r1, 0x1C] + ldr r4, _0802E128 @ =gUnknown_2023FEC + movs r5, 0x80 + lsls r5, 5 + adds r0, r5, 0 + bl sub_8002BB0 + str r0, [r4] + ldr r4, _0802E12C @ =gUnknown_2023FF0 + adds r0, r5, 0 + bl sub_8002BB0 + str r0, [r4] + ldr r4, _0802E130 @ =gUnknown_2022BB8 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002BB0 + str r0, [r4] + ldr r4, _0802E134 @ =gUnknown_2022BBC + adds r0, r5, 0 + bl sub_8002BB0 + adds r1, r0, 0 + str r1, [r4] + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + movs r0, 0x2 + bl sub_8001FA0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802E118: .4byte gUnknown_2022B4C +_0802E11C: .4byte gUnknown_3005EE0 +_0802E120: .4byte gUnknown_2023FE8 +_0802E124: .4byte gUnknown_2023FF4 +_0802E128: .4byte gUnknown_2023FEC +_0802E12C: .4byte gUnknown_2023FF0 +_0802E130: .4byte gUnknown_2022BB8 +_0802E134: .4byte gUnknown_2022BBC + thumb_func_end sub_802E03C + + thumb_func_start sub_802E138 +sub_802E138: @ 802E138 + push {r4-r6,lr} + ldr r4, _0802E208 @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _0802E14C + bl sub_815DBDC +_0802E14C: + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + beq _0802E16C + ldr r5, _0802E20C @ =gUnknown_3005EE0 + movs r6, 0 + movs r4, 0x3 +_0802E15E: + ldr r0, [r5] + bl sub_8002BC4 + stm r5!, {r6} + subs r4, 0x1 + cmp r4, 0 + bge _0802E15E +_0802E16C: + ldr r6, _0802E210 @ =gUnknown_2023FF4 + ldr r0, [r6] + cmp r0, 0 + beq _0802E200 + ldr r4, _0802E214 @ =gUnknown_2023FE8 + ldr r0, [r4] + bl sub_8002BC4 + movs r5, 0 + str r5, [r4] + ldr r0, [r6] + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0] + ldr r0, [r0, 0x4] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0x4] + ldr r0, [r0, 0x8] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0x8] + ldr r0, [r0, 0xC] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0xC] + ldr r0, [r0, 0x10] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0x10] + ldr r0, [r0, 0x14] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0x14] + ldr r0, [r0, 0x18] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0x18] + ldr r0, [r0, 0x1C] + bl sub_8002BC4 + ldr r0, [r6] + str r5, [r0, 0x1C] + bl sub_8002BC4 + str r5, [r6] + ldr r4, _0802E218 @ =gUnknown_2023FEC + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + ldr r4, _0802E21C @ =gUnknown_2023FF0 + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + ldr r4, _0802E220 @ =gUnknown_2022BB8 + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + ldr r4, _0802E224 @ =gUnknown_2022BBC + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] +_0802E200: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802E208: .4byte gUnknown_2022B4C +_0802E20C: .4byte gUnknown_3005EE0 +_0802E210: .4byte gUnknown_2023FF4 +_0802E214: .4byte gUnknown_2023FE8 +_0802E218: .4byte gUnknown_2023FEC +_0802E21C: .4byte gUnknown_2023FF0 +_0802E220: .4byte gUnknown_2022BB8 +_0802E224: .4byte gUnknown_2022BBC + thumb_func_end sub_802E138 + + thumb_func_start sub_802E228 +sub_802E228: @ 802E228 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0802E26C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802E274 + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _0802E270 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r1, r3, 0 + muls r1, r0 + adds r1, r2 + adds r1, 0x2A + muls r0, r4 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bls _0802E27E + adds r4, r3, 0 + b _0802E27E + .align 2, 0 +_0802E26C: .4byte gUnknown_2022B4C +_0802E270: .4byte gUnknown_2023BE4 +_0802E274: + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 +_0802E27E: + ldr r2, _0802E2C0 @ =gUnknown_2023BE4 + movs r1, 0x58 + adds r0, r4, 0 + muls r0, r1 + adds r0, r2 + adds r3, r0, 0 + adds r3, 0x2A + adds r0, r5, 0 + muls r0, r1 + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x2A + ldrb r0, [r3] + ldrb r2, [r1] + cmp r0, r2 + bls _0802E2EC + ldrb r1, [r1] + subs r0, r1 + cmp r0, 0x1D + ble _0802E2CC + ldr r1, _0802E2C4 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802E2C8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x9 + bl sub_80436F8 + b _0802E302 + .align 2, 0 +_0802E2C0: .4byte gUnknown_2023BE4 +_0802E2C4: .4byte gUnknown_2023BCE +_0802E2C8: .4byte gUnknown_2024284 +_0802E2CC: + ldr r1, _0802E2E4 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802E2E8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x7 + bl sub_80436F8 + b _0802E302 + .align 2, 0 +_0802E2E4: .4byte gUnknown_2023BCE +_0802E2E8: .4byte gUnknown_2024284 +_0802E2EC: + ldr r1, _0802E308 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802E30C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x7 + bl sub_80436F8 +_0802E302: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802E308: .4byte gUnknown_2023BCE +_0802E30C: .4byte gUnknown_2024284 + thumb_func_end sub_802E228 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/berry.s b/asm/berry.s new file mode 100644 index 000000000..ea5414836 --- /dev/null +++ b/asm/berry.s @@ -0,0 +1,311 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_809C718 +sub_809C718: @ 809C718 + push {r4,r5,lr} + ldr r2, _0809C778 @ =gUnknown_3005008 + ldr r1, [r2] + ldr r0, _0809C77C @ =gUnknown_83DF7E8 + ldr r3, _0809C780 @ =0x000030ec + adds r1, r3 + movs r4, 0x93 + lsls r4, 3 + adds r0, r4 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, [r0] + str r0, [r1] + movs r1, 0 + adds r4, r2, 0 + adds r5, r4, 0 + ldr r3, _0809C784 @ =0x00003108 + movs r2, 0 +_0809C740: + ldr r0, [r5] + adds r0, r3 + adds r0, r1 + strb r2, [r0] + adds r1, 0x1 + cmp r1, 0x11 + ble _0809C740 + ldr r0, [r4] + ldr r5, _0809C788 @ =0x0000311a + adds r0, r5 + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _0809C78C @ =0x0000311b + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + ldr r3, _0809C780 @ =0x000030ec + adds r0, r3 + bl sub_809C838 + ldr r1, [r4] + ldr r4, _0809C790 @ =0x0000311c + adds r1, r4 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C778: .4byte gUnknown_3005008 +_0809C77C: .4byte gUnknown_83DF7E8 +_0809C780: .4byte 0x000030ec +_0809C784: .4byte 0x00003108 +_0809C788: .4byte 0x0000311a +_0809C78C: .4byte 0x0000311b +_0809C790: .4byte 0x0000311c + thumb_func_end sub_809C718 + + thumb_func_start sub_809C794 +sub_809C794: @ 809C794 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r0, _0809C7B8 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _0809C7BC @ =0x000030ec + adds r1, r0 + ldr r2, _0809C7C0 @ =0x0100001a + mov r0, sp + bl CpuSet + bl sub_809C718 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0809C7B8: .4byte gUnknown_3005008 +_0809C7BC: .4byte 0x000030ec +_0809C7C0: .4byte 0x0100001a + thumb_func_end sub_809C794 + + thumb_func_start sub_809C7C4 +sub_809C7C4: @ 809C7C4 + push {r4-r7,lr} + adds r4, r0, 0 + bl sub_809C794 + adds r5, r4, 0 + ldr r0, _0809C824 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r0, _0809C828 @ =0x000030ec + adds r4, r2, r0 + adds r1, r4, 0 + adds r0, r5, 0 + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldr r0, [r0] + str r0, [r1] + movs r3, 0 + ldr r0, _0809C82C @ =0x00003108 + adds r6, r2, r0 + ldr r1, _0809C830 @ =0x00000516 + adds r2, r5, r1 +_0809C7F0: + adds r0, r6, r3 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0x11 + ble _0809C7F0 + movs r3, 0xA5 + lsls r3, 3 + adds r0, r5, r3 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x2E + strb r0, [r1] + ldr r6, _0809C834 @ =0x00000529 + adds r0, r5, r6 + ldrb r0, [r0] + adds r1, 0x1 + strb r0, [r1] + adds r0, r4, 0 + bl sub_809C838 + str r0, [r4, 0x30] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809C824: .4byte gUnknown_3005008 +_0809C828: .4byte 0x000030ec +_0809C82C: .4byte 0x00003108 +_0809C830: .4byte 0x00000516 +_0809C834: .4byte 0x00000529 + thumb_func_end sub_809C7C4 + + thumb_func_start sub_809C838 +sub_809C838: @ 809C838 + push {lr} + adds r3, r0, 0 + movs r2, 0 + movs r1, 0 +_0809C840: + adds r0, r3, r1 + ldrb r0, [r0] + adds r2, r0 + adds r1, 0x1 + cmp r1, 0x2F + bls _0809C840 + adds r0, r2, 0 + pop {r1} + bx r1 + thumb_func_end sub_809C838 + + thumb_func_start sub_809C854 +sub_809C854: @ 809C854 + push {r4,lr} + ldr r4, _0809C888 @ =gUnknown_3005008 + ldr r1, [r4] + movs r2, 0xC4 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0809C898 + ldr r2, _0809C88C @ =0x000030f6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0809C898 + ldr r2, _0809C890 @ =0x000030ec + adds r0, r1, r2 + bl sub_809C838 + ldr r1, [r4] + ldr r2, _0809C894 @ =0x0000311c + adds r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _0809C898 + movs r0, 0x1 + b _0809C89A + .align 2, 0 +_0809C888: .4byte gUnknown_3005008 +_0809C88C: .4byte 0x000030f6 +_0809C890: .4byte 0x000030ec +_0809C894: .4byte 0x0000311c +_0809C898: + movs r0, 0 +_0809C89A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809C854 + + thumb_func_start sub_809C8A0 +sub_809C8A0: @ 809C8A0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2B + bne _0809C8C4 + bl sub_809C854 + cmp r0, 0 + beq _0809C8C4 + ldr r0, _0809C8BC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0809C8C0 @ =0x000030ec + b _0809C8D8 + .align 2, 0 +_0809C8BC: .4byte gUnknown_3005008 +_0809C8C0: .4byte 0x000030ec +_0809C8C4: + subs r0, r4, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2A + bls _0809C8D0 + movs r4, 0x1 +_0809C8D0: + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r1, _0809C8E0 @ =gUnknown_83DF7CC +_0809C8D8: + adds r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809C8E0: .4byte gUnknown_83DF7CC + thumb_func_end sub_809C8A0 + + thumb_func_start sub_809C8E4 +sub_809C8E4: @ 809C8E4 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r2, _0809C900 @ =0xff7b0000 + adds r0, r2 + lsrs r0, 16 + cmp r0, 0x2A + bhi _0809C904 + adds r0, r1, 0 + adds r0, 0x7C + lsls r0, 24 + lsrs r0, 24 + b _0809C906 + .align 2, 0 +_0809C900: .4byte 0xff7b0000 +_0809C904: + movs r0, 0x1 +_0809C906: + pop {r1} + bx r1 + thumb_func_end sub_809C8E4 + + thumb_func_start sub_809C90C +sub_809C90C: @ 809C90C + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r2, _0809C928 @ =0xffff0000 + adds r0, r2 + lsrs r0, 16 + cmp r0, 0x2A + bhi _0809C92C + adds r0, r1, 0 + adds r0, 0x84 + lsls r0, 16 + lsrs r0, 16 + b _0809C92E + .align 2, 0 +_0809C928: .4byte 0xffff0000 +_0809C92C: + movs r0, 0x85 +_0809C92E: + pop {r1} + bx r1 + thumb_func_end sub_809C90C + + thumb_func_start sub_809C934 +sub_809C934: @ 809C934 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + bl sub_809C8A0 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0x6 + bl memcpy + movs r0, 0xFF + strb r0, [r4, 0x6] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809C934 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/berry_fix_program.s b/asm/berry_fix_program.s new file mode 100644 index 000000000..c0bb99e39 --- /dev/null +++ b/asm/berry_fix_program.s @@ -0,0 +1,344 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815F6E0 +sub_815F6E0: @ 815F6E0 + push {r4-r6,lr} + movs r6, 0x80 + lsls r6, 19 + movs r2, 0 + strh r2, [r6] + ldr r1, _0815F73C @ =0x04000010 + strh r2, [r1] + adds r1, 0x2 + strh r2, [r1] + adds r1, 0x3E + strh r2, [r1] + ldr r5, _0815F740 @ =gUnknown_847A890 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r0, r4, r5 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 19 + bl LZ77UnCompVram + adds r0, r5, 0x4 + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _0815F744 @ =0x0600f800 + bl LZ77UnCompVram + adds r5, 0x8 + adds r4, r5 + ldr r0, [r4] + movs r1, 0xA0 + lsls r1, 19 + movs r4, 0x80 + lsls r4, 1 + adds r2, r4, 0 + bl CpuSet + ldr r1, _0815F748 @ =0x04000008 + movs r2, 0xF8 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + strh r4, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F73C: .4byte 0x04000010 +_0815F740: .4byte gUnknown_847A890 +_0815F744: .4byte 0x0600f800 +_0815F748: .4byte 0x04000008 + thumb_func_end sub_815F6E0 + + thumb_func_start sub_815F74C +sub_815F74C: @ 815F74C + push {r4,lr} + sub sp, 0x4 + ldr r0, _0815F7C4 @ =0x0000ffff + bl sub_8000B94 + movs r0, 0x1 + bl sub_8000B68 + bl m4aSoundVSyncOff + movs r0, 0 + bl sub_80006F4 + movs r4, 0 + str r4, [sp] + ldr r0, _0815F7C8 @ =0x040000d4 + mov r1, sp + str r1, [r0] + movs r1, 0xC0 + lsls r1, 19 + str r1, [r0, 0x4] + ldr r1, _0815F7CC @ =0x85006000 + str r1, [r0, 0x8] + ldr r1, [r0, 0x8] + str r4, [sp] + mov r1, sp + str r1, [r0] + movs r1, 0xA0 + lsls r1, 19 + str r1, [r0, 0x4] + ldr r1, _0815F7D0 @ =0x85000100 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + bl sub_8006B10 + bl sub_80773BC + bl sub_8087E64 + ldr r0, _0815F7D4 @ =gUnknown_3005ECC + strb r4, [r0] + ldr r0, _0815F7D8 @ =sub_815F7F0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0815F7DC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + ldr r0, _0815F7E0 @ =sub_815F7E4 + bl sub_8000544 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815F7C4: .4byte 0x0000ffff +_0815F7C8: .4byte 0x040000d4 +_0815F7CC: .4byte 0x85006000 +_0815F7D0: .4byte 0x85000100 +_0815F7D4: .4byte gUnknown_3005ECC +_0815F7D8: .4byte sub_815F7F0 +_0815F7DC: .4byte gUnknown_3005090 +_0815F7E0: .4byte sub_815F7E4 + thumb_func_end sub_815F74C + + thumb_func_start sub_815F7E4 +sub_815F7E4: @ 815F7E4 + push {lr} + bl sub_8077578 + pop {r0} + bx r0 + thumb_func_end sub_815F7E4 + + thumb_func_start sub_815F7F0 +sub_815F7F0: @ 815F7F0 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _0815F818 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0xA + bls _0815F80C + b _0815F9A6 +_0815F80C: + lsls r0, 2 + ldr r1, _0815F81C @ =_0815F820 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815F818: .4byte gUnknown_3005098 +_0815F81C: .4byte _0815F820 + .align 2, 0 +_0815F820: + .4byte _0815F84C + .4byte _0815F856 + .4byte _0815F874 + .4byte _0815F9A6 + .4byte _0815F890 + .4byte _0815F8C8 + .4byte _0815F934 + .4byte _0815F96A + .4byte _0815F96E + .4byte _0815F98C + .4byte _0815F996 +_0815F84C: + movs r0, 0x5 + bl sub_815F6E0 + movs r0, 0x1 + b _0815F9A4 +_0815F856: + ldr r0, _0815F870 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0815F864 + b _0815F9A6 +_0815F864: + movs r0, 0 + bl sub_815F6E0 + movs r0, 0x2 + b _0815F9A4 + .align 2, 0 +_0815F870: .4byte gUnknown_30030F0 +_0815F874: + ldr r0, _0815F88C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0815F882 + b _0815F9A6 +_0815F882: + movs r0, 0x1 + bl sub_815F6E0 + movs r0, 0x4 + b _0815F9A4 + .align 2, 0 +_0815F88C: .4byte gUnknown_30030F0 +_0815F890: + ldr r0, _0815F8B4 @ =gUnknown_3005EF0 + ldr r1, _0815F8B8 @ =gMultiBootProgram_BerryGlitchFix_Start + str r1, [r0] + ldr r2, _0815F8BC @ =gUnknown_3005EF8 + ldr r0, _0815F8C0 @ =gMultiBootProgram_BerryGlitchFix_End + subs r0, r1 + str r0, [r2] + ldr r0, _0815F8C4 @ =gUnknown_3005F00 + str r1, [r0, 0x28] + adds r1, r0, 0 + adds r1, 0x4B + movs r4, 0 + strb r4, [r1] + bl sub_800BC20 + strh r4, [r5, 0x2] + movs r0, 0x5 + b _0815F9A4 + .align 2, 0 +_0815F8B4: .4byte gUnknown_3005EF0 +_0815F8B8: .4byte gMultiBootProgram_BerryGlitchFix_Start +_0815F8BC: .4byte gUnknown_3005EF8 +_0815F8C0: .4byte gMultiBootProgram_BerryGlitchFix_End +_0815F8C4: .4byte gUnknown_3005F00 +_0815F8C8: + ldr r0, _0815F910 @ =gUnknown_3005F00 + ldrb r6, [r0, 0x18] + adds r4, r0, 0 + cmp r6, 0 + bne _0815F920 + ldr r0, [r4, 0x1C] + ldr r1, _0815F914 @ =0x00020200 + ands r0, r1 + cmp r0, r1 + bne _0815F920 + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB4 + ble _0815F924 + movs r0, 0x2 + bl sub_815F6E0 + ldr r0, _0815F918 @ =gUnknown_3005EF0 + ldr r1, [r0] + adds r1, 0xC0 + ldr r0, _0815F91C @ =gUnknown_3005EF8 + ldr r2, [r0] + subs r2, 0xC0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r3, 0x4 + bl sub_800C0BC + strh r6, [r5, 0x2] + movs r0, 0x6 + b _0815F9A4 + .align 2, 0 +_0815F910: .4byte gUnknown_3005F00 +_0815F914: .4byte 0x00020200 +_0815F918: .4byte gUnknown_3005EF0 +_0815F91C: .4byte gUnknown_3005EF8 +_0815F920: + movs r0, 0 + strh r0, [r5, 0x2] +_0815F924: + adds r0, r4, 0 + bl sub_800BC5C + ldr r1, _0815F930 @ =gUnknown_3005EF4 + str r0, [r1] + b _0815F9A6 + .align 2, 0 +_0815F930: .4byte gUnknown_3005EF4 +_0815F934: + ldr r4, _0815F954 @ =gUnknown_3005F00 + adds r0, r4, 0 + bl sub_800BC5C + ldr r1, _0815F958 @ =gUnknown_3005EF4 + str r0, [r1] + adds r0, r4, 0 + bl sub_800C180 + cmp r0, 0 + beq _0815F95C + movs r0, 0x3 + bl sub_815F6E0 + movs r0, 0x7 + b _0815F9A4 + .align 2, 0 +_0815F954: .4byte gUnknown_3005F00 +_0815F958: .4byte gUnknown_3005EF4 +_0815F95C: + ldrb r1, [r4, 0x1E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0815F9A6 + movs r0, 0x9 + b _0815F9A4 +_0815F96A: + movs r0, 0x8 + b _0815F9A4 +_0815F96E: + ldr r0, _0815F988 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0815F9A6 + adds r0, r2, 0 + bl sub_8077508 + bl sub_80008D8 + b _0815F9A6 + .align 2, 0 +_0815F988: .4byte gUnknown_30030F0 +_0815F98C: + movs r0, 0x4 + bl sub_815F6E0 + movs r0, 0xA + b _0815F9A4 +_0815F996: + ldr r0, _0815F9B0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0815F9A6 + movs r0, 0 +_0815F9A4: + strh r0, [r5] +_0815F9A6: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F9B0: .4byte gUnknown_30030F0 + thumb_func_end sub_815F7F0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s new file mode 100644 index 000000000..42f1cf835 --- /dev/null +++ b/asm/berry_pouch.s @@ -0,0 +1,3819 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813CD50 +sub_813CD50: @ 813CD50 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r7, _0813CD78 @ =gUnknown_203F36C + ldr r0, _0813CD7C @ =0x00000814 + bl sub_8002B9C + str r0, [r7] + cmp r0, 0 + bne _0813CD80 + adds r0, r4, 0 + bl sub_8000544 + b _0813CDE2 + .align 2, 0 +_0813CD78: .4byte gUnknown_203F36C +_0813CD7C: .4byte 0x00000814 +_0813CD80: + cmp r5, 0x6 + beq _0813CD88 + ldr r0, _0813CDEC @ =gUnknown_203F370 + strb r5, [r0, 0x4] +_0813CD88: + cmp r6, 0xFF + beq _0813CD90 + ldr r0, _0813CDEC @ =gUnknown_203F370 + strb r6, [r0, 0x5] +_0813CD90: + cmp r4, 0 + beq _0813CD98 + ldr r0, _0813CDEC @ =gUnknown_203F370 + str r4, [r0] +_0813CD98: + ldr r1, [r7] + movs r0, 0 + str r0, [r1] + strb r0, [r1, 0x9] + ldr r1, [r7] + movs r0, 0xFF + strb r0, [r1, 0x6] + movs r2, 0 + ldr r6, _0813CDF0 @ =gUnknown_3003E50 + ldr r0, _0813CDF4 @ =gUnknown_203AD30 + mov r12, r0 + ldr r1, _0813CDF8 @ =sub_813CE30 + mov r8, r1 + adds r5, r7, 0 + ldr r4, _0813CDFC @ =0x0000080c + movs r3, 0 +_0813CDB8: + ldr r0, [r5] + lsls r1, r2, 1 + adds r0, r4 + adds r0, r1 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0813CDB8 + ldrb r0, [r6] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r6] + movs r0, 0 + mov r1, r12 + strh r0, [r1] + mov r0, r8 + bl sub_8000544 +_0813CDE2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813CDEC: .4byte gUnknown_203F370 +_0813CDF0: .4byte gUnknown_3003E50 +_0813CDF4: .4byte gUnknown_203AD30 +_0813CDF8: .4byte sub_813CE30 +_0813CDFC: .4byte 0x0000080c + thumb_func_end sub_813CD50 + + thumb_func_start sub_813CE00 +sub_813CE00: @ 813CE00 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80F67B8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_813CE00 + + thumb_func_start sub_813CE1C +sub_813CE1C: @ 813CE1C + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_813CE1C + + thumb_func_start sub_813CE30 +sub_813CE30: @ 813CE30 + push {lr} +_0813CE32: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813CE56 + bl sub_813CE5C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813CE56 + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813CE32 +_0813CE56: + pop {r0} + bx r0 + thumb_func_end sub_813CE30 + + thumb_func_start sub_813CE5C +sub_813CE5C: @ 813CE5C + push {r4,lr} + sub sp, 0x4 + ldr r0, _0813CE7C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x12 + bls _0813CE70 + b _0813CFE8 +_0813CE70: + lsls r0, 2 + ldr r1, _0813CE80 @ =_0813CE84 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813CE7C: .4byte gUnknown_30030F0 +_0813CE80: .4byte _0813CE84 + .align 2, 0 +_0813CE84: + .4byte _0813CED0 + .4byte _0813CEDA + .4byte _0813CEE0 + .4byte _0813CEE6 + .4byte _0813CEEC + .4byte _0813CEF2 + .4byte _0813CEF8 + .4byte _0813CF08 + .4byte _0813CF24 + .4byte _0813CF30 + .4byte _0813CF36 + .4byte _0813CF44 + .4byte _0813CF56 + .4byte _0813CF5C + .4byte _0813CF62 + .4byte _0813CFA4 + .4byte _0813CFAA + .4byte _0813CFB0 + .4byte _0813CFBE +_0813CED0: + bl sub_80BF768 + bl sub_80F6790 + b _0813CFD2 +_0813CEDA: + bl sub_8087E64 + b _0813CFD2 +_0813CEE0: + bl sub_80088F0 + b _0813CFD2 +_0813CEE6: + bl sub_8070528 + b _0813CFD2 +_0813CEEC: + bl sub_8006B10 + b _0813CFD2 +_0813CEF2: + bl sub_80984D8 + b _0813CFD2 +_0813CEF8: + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _0813CFD2 + bl sub_80773BC + b _0813CFD2 +_0813CF08: + bl sub_813D07C + ldr r0, _0813CF1C @ =gUnknown_203F36C + ldr r0, [r0] + ldr r1, _0813CF20 @ =0x0000080c + adds r0, r1 + movs r1, 0 + strh r1, [r0] + b _0813CFD2 + .align 2, 0 +_0813CF1C: .4byte gUnknown_203F36C +_0813CF20: .4byte 0x0000080c +_0813CF24: + bl sub_813D0E4 + lsls r0, 24 + cmp r0, 0 + beq _0813D000 + b _0813CFD2 +_0813CF30: + bl sub_813E910 + b _0813CFD2 +_0813CF36: + bl sub_813D8AC + bl sub_813D6F4 + bl sub_813D754 + b _0813CFD2 +_0813CF44: + bl sub_813D1C0 + lsls r0, 24 + cmp r0, 0 + bne _0813CFD2 + bl sub_813D00C + movs r0, 0x1 + b _0813D002 +_0813CF56: + bl sub_813D204 + b _0813CFD2 +_0813CF5C: + bl sub_813D6A4 + b _0813CFD2 +_0813CF62: + ldr r0, _0813CF94 @ =sub_813DA68 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0813CF98 @ =gUnknown_3005E70 + ldr r2, _0813CF9C @ =gUnknown_203F370 + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0x8] + bl sub_8106FF8 + ldr r2, _0813CFA0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + strh r0, [r1, 0x8] + strh r2, [r1, 0x18] + b _0813CFD2 + .align 2, 0 +_0813CF94: .4byte sub_813DA68 +_0813CF98: .4byte gUnknown_3005E70 +_0813CF9C: .4byte gUnknown_203F370 +_0813CFA0: .4byte gUnknown_3005090 +_0813CFA4: + bl sub_813EC08 + b _0813CFD2 +_0813CFAA: + bl sub_813D5BC + b _0813CFD2 +_0813CFB0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _0813CFD2 +_0813CFBE: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_0813CFD2: + ldr r1, _0813CFE4 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0813D000 + .align 2, 0 +_0813CFE4: .4byte gUnknown_30030F0 +_0813CFE8: + ldr r0, _0813CFF8 @ =sub_813CE1C + bl sub_80006F4 + ldr r0, _0813CFFC @ =sub_813CE00 + bl sub_8000544 + movs r0, 0x1 + b _0813D002 + .align 2, 0 +_0813CFF8: .4byte sub_813CE1C +_0813CFFC: .4byte sub_813CE00 +_0813D000: + movs r0, 0 +_0813D002: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_813CE5C + + thumb_func_start sub_813D00C +sub_813D00C: @ 813D00C + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0813D03C @ =sub_813D048 + movs r1, 0 + bl sub_807741C + ldr r0, _0813D040 @ =sub_813CE1C + bl sub_80006F4 + ldr r0, _0813D044 @ =sub_813CE00 + bl sub_8000544 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0813D03C: .4byte sub_813D048 +_0813D040: .4byte sub_813CE1C +_0813D044: .4byte sub_813CE00 + thumb_func_end sub_813D00C + + thumb_func_start sub_813D048 +sub_813D048: @ 813D048 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813D074 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0813D06C + ldr r0, _0813D078 @ =gUnknown_203F370 + ldr r0, [r0] + bl sub_8000544 + bl sub_813D7CC + adds r0, r4, 0 + bl sub_8077508 +_0813D06C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D074: .4byte gUnknown_2037AB8 +_0813D078: .4byte gUnknown_203F370 + thumb_func_end sub_813D048 + + thumb_func_start sub_813D07C +sub_813D07C: @ 813D07C + push {r4,lr} + bl sub_80BF7C8 + ldr r4, _0813D0DC @ =gUnknown_203F36C + ldr r0, [r4] + adds r0, 0xC + movs r2, 0x80 + lsls r2, 4 + movs r1, 0 + bl memset + movs r0, 0 + bl sub_8001618 + ldr r1, _0813D0E0 @ =gUnknown_846434C + movs r0, 0 + movs r2, 0x3 + bl sub_8001658 + ldr r1, [r4] + adds r1, 0xC + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D0DC: .4byte gUnknown_203F36C +_0813D0E0: .4byte gUnknown_846434C + thumb_func_end sub_813D07C + + thumb_func_start sub_813D0E4 +sub_813D0E4: @ 813D0E4 + push {r4-r6,lr} + sub sp, 0x4 + ldr r5, _0813D104 @ =gUnknown_203F36C + ldr r0, [r5] + ldr r6, _0813D108 @ =0x0000080c + adds r0, r6 + movs r1, 0 + ldrsh r4, [r0, r1] + cmp r4, 0x1 + beq _0813D130 + cmp r4, 0x1 + bgt _0813D10C + cmp r4, 0 + beq _0813D116 + b _0813D190 + .align 2, 0 +_0813D104: .4byte gUnknown_203F36C +_0813D108: .4byte 0x0000080c +_0813D10C: + cmp r4, 0x2 + beq _0813D14C + cmp r4, 0x3 + beq _0813D178 + b _0813D190 +_0813D116: + bl sub_80F6808 + ldr r1, _0813D12C @ =gUnknown_8E859D0 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _0813D17E + .align 2, 0 +_0813D12C: .4byte gUnknown_8E859D0 +_0813D130: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813D1B4 + ldr r0, _0813D148 @ =gUnknown_8E85C44 + ldr r1, [r5] + adds r1, 0xC + bl sub_800EBB4 + b _0813D17E + .align 2, 0 +_0813D148: .4byte gUnknown_8E85C44 +_0813D14C: + ldr r0, _0813D16C @ =gUnknown_8E85BA4 + movs r1, 0 + movs r2, 0x60 + bl sub_80703A8 + ldr r0, _0813D170 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + beq _0813D17E + ldr r0, _0813D174 @ =gUnknown_8E85BF4 + movs r1, 0 + movs r2, 0x20 + bl sub_80703A8 + b _0813D17E + .align 2, 0 +_0813D16C: .4byte gUnknown_8E85BA4 +_0813D170: .4byte gUnknown_300500C +_0813D174: .4byte gUnknown_8E85BF4 +_0813D178: + ldr r0, _0813D18C @ =gUnknown_84644A8 + bl sub_800EBCC +_0813D17E: + ldr r1, [r5] + adds r1, r6 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0813D1B4 + .align 2, 0 +_0813D18C: .4byte gUnknown_84644A8 +_0813D190: + ldr r0, _0813D1A8 @ =gUnknown_84644B0 + bl sub_800EC28 + ldr r0, _0813D1AC @ =gUnknown_203F36C + ldr r0, [r0] + ldr r1, _0813D1B0 @ =0x0000080c + adds r0, r1 + movs r1, 0 + strh r1, [r0] + movs r0, 0x1 + b _0813D1B6 + .align 2, 0 +_0813D1A8: .4byte gUnknown_84644B0 +_0813D1AC: .4byte gUnknown_203F36C +_0813D1B0: .4byte 0x0000080c +_0813D1B4: + movs r0, 0 +_0813D1B6: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_813D0E4 + + thumb_func_start sub_813D1C0 +sub_813D1C0: @ 813D1C0 + push {r4,lr} + ldr r4, _0813D1F0 @ =gUnknown_203F37C + movs r0, 0xB0 + lsls r0, 1 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0813D1FC + ldr r4, _0813D1F4 @ =gUnknown_203F380 + ldr r0, _0813D1F8 @ =gUnknown_203F36C + ldr r0, [r0] + ldrb r1, [r0, 0x7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + subs r0, r1 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0813D1FC + movs r0, 0x1 + b _0813D1FE + .align 2, 0 +_0813D1F0: .4byte gUnknown_203F37C +_0813D1F4: .4byte gUnknown_203F380 +_0813D1F8: .4byte gUnknown_203F36C +_0813D1FC: + movs r0, 0 +_0813D1FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_813D1C0 + + thumb_func_start sub_813D204 +sub_813D204: @ 813D204 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0813D280 @ =gUnknown_20398AC + mov r8, r0 + movs r6, 0 + ldr r0, _0813D284 @ =gUnknown_203F36C + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r6, r0 + bcs _0813D254 + ldr r7, _0813D288 @ =gUnknown_203F380 +_0813D21C: + lsls r5, r6, 3 + subs r4, r5, r6 + lsls r4, 2 + subs r4, r6 + ldr r0, [r7] + adds r0, r4 + mov r1, r8 + ldr r2, [r1] + lsls r1, r6, 2 + adds r1, r2 + ldrh r1, [r1] + bl sub_813D31C + ldr r0, _0813D28C @ =gUnknown_203F37C + ldr r0, [r0] + adds r5, r0 + ldr r0, [r7] + adds r0, r4 + str r0, [r5] + str r6, [r5, 0x4] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _0813D284 @ =gUnknown_203F36C + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r6, r0 + bcc _0813D21C +_0813D254: + ldr r0, _0813D28C @ =gUnknown_203F37C + ldr r2, [r0] + lsls r0, r6, 3 + adds r0, r2 + ldr r1, _0813D290 @ =gUnknown_84166DB + str r1, [r0] + str r6, [r0, 0x4] + ldr r1, _0813D294 @ =gUnknown_3005E70 + str r2, [r1] + ldr r0, _0813D298 @ =gUnknown_203F370 + ldrb r0, [r0, 0x4] + adds r5, r1, 0 + cmp r0, 0x5 + beq _0813D29C + ldr r1, _0813D284 @ =gUnknown_203F36C + ldr r0, [r1] + ldrb r0, [r0, 0x7] + adds r0, 0x1 + strh r0, [r5, 0xC] + adds r2, r1, 0 + b _0813D2A6 + .align 2, 0 +_0813D280: .4byte gUnknown_20398AC +_0813D284: .4byte gUnknown_203F36C +_0813D288: .4byte gUnknown_203F380 +_0813D28C: .4byte gUnknown_203F37C +_0813D290: .4byte gUnknown_84166DB +_0813D294: .4byte gUnknown_3005E70 +_0813D298: .4byte gUnknown_203F370 +_0813D29C: + ldr r0, _0813D310 @ =gUnknown_203F36C + ldr r1, [r0] + ldrb r1, [r1, 0x7] + strh r1, [r5, 0xC] + adds r2, r0, 0 +_0813D2A6: + movs r0, 0 + strb r0, [r5, 0x10] + strb r0, [r5, 0x11] + movs r0, 0x9 + strb r0, [r5, 0x12] + movs r0, 0x1 + strb r0, [r5, 0x13] + ldrb r0, [r5, 0x16] + movs r3, 0x8 + negs r3, r3 + ands r3, r0 + movs r0, 0x39 + negs r0, r0 + ands r3, r0 + movs r0, 0x10 + orrs r3, r0 + strb r3, [r5, 0x16] + ldrb r1, [r5, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r4, 0x2 + orrs r0, r4 + strb r0, [r5, 0x14] + ldr r1, [r2] + ldrb r1, [r1, 0x8] + strh r1, [r5, 0xE] + ldrb r1, [r5, 0x17] + movs r2, 0x40 + negs r2, r2 + ands r2, r1 + orrs r2, r4 + movs r1, 0xF + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5, 0x14] + movs r0, 0x30 + strb r0, [r5, 0x15] + ldr r0, _0813D314 @ =sub_813D3C0 + str r0, [r5, 0x4] + ldr r0, _0813D318 @ =sub_813D430 + str r0, [r5, 0x8] + movs r0, 0x3F + ands r2, r0 + strb r2, [r5, 0x17] + ands r3, r0 + strb r3, [r5, 0x16] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813D310: .4byte gUnknown_203F36C +_0813D314: .4byte sub_813D3C0 +_0813D318: .4byte sub_813D430 + thumb_func_end sub_813D204 + + thumb_func_start sub_813D31C +sub_813D31C: @ 813D31C + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + lsls r5, r1, 16 + lsrs r5, 16 + ldr r4, _0813D384 @ =gUnknown_2021D18 + ldr r1, _0813D388 @ =gUnknown_84166FF + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, _0813D38C @ =gUnknown_8416226 + adds r0, r4, 0 + bl sub_8008DA4 + ldr r6, _0813D390 @ =gUnknown_2021CD0 + adds r1, r5, 0 + subs r1, 0x84 + adds r0, r6, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8008DA4 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8099E90 + ldr r1, _0813D394 @ =gUnknown_84643B4 + adds r0, r4, 0 + bl sub_8008DA4 + ldr r1, _0813D398 @ =gUnknown_8416703 + adds r0, r4, 0 + bl sub_8008DA4 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8008DA4 + mov r0, r8 + adds r1, r4, 0 + bl sub_8008D84 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813D384: .4byte gUnknown_2021D18 +_0813D388: .4byte gUnknown_84166FF +_0813D38C: .4byte gUnknown_8416226 +_0813D390: .4byte gUnknown_2021CD0 +_0813D394: .4byte gUnknown_84643B4 +_0813D398: .4byte gUnknown_8416703 + thumb_func_end sub_813D31C + + thumb_func_start sub_813D39C +sub_813D39C: @ 813D39C + push {lr} + adds r3, r1, 0 + ldr r1, _0813D3BC @ =gUnknown_203F380 + lsls r0, 16 + asrs r0, 16 + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + subs r2, r0 + ldr r1, [r1] + adds r1, r2 + adds r0, r3, 0 + bl sub_8008D84 + pop {r0} + bx r0 + .align 2, 0 +_0813D3BC: .4byte gUnknown_203F380 + thumb_func_end sub_813D39C + + thumb_func_start sub_813D3C0 +sub_813D3C0: @ 813D3C0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + beq _0813D3D6 + movs r0, 0xF5 + bl sub_80722CC + bl sub_813EC28 +_0813D3D6: + ldr r4, _0813D404 @ =gUnknown_203F36C + ldr r0, [r4] + ldrb r1, [r0, 0x9] + movs r0, 0x1 + eors r0, r1 + bl sub_8098940 + ldr r1, [r4] + ldrb r0, [r1, 0x7] + cmp r0, r5 + beq _0813D408 + lsls r1, r5, 16 + lsrs r1, 16 + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [r4] + ldrb r1, [r1, 0x9] + bl sub_80989A0 + b _0813D410 + .align 2, 0 +_0813D404: .4byte gUnknown_203F36C +_0813D408: + ldr r0, _0813D428 @ =0x00000177 + ldrb r1, [r1, 0x9] + bl sub_80989A0 +_0813D410: + ldr r0, _0813D42C @ =gUnknown_203F36C + ldr r2, [r0] + ldrb r0, [r2, 0x9] + movs r1, 0x1 + eors r0, r1 + strb r0, [r2, 0x9] + adds r0, r5, 0 + bl sub_813D538 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813D428: .4byte 0x00000177 +_0813D42C: .4byte gUnknown_203F36C + thumb_func_end sub_813D3C0 + + thumb_func_start sub_813D430 +sub_813D430: @ 813D430 + push {r4-r6,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _0813D498 + ldr r0, _0813D4A0 @ =gUnknown_203F36C + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r0, r1 + beq _0813D498 + lsls r4, r1, 16 + lsrs r4, 16 + movs r0, 0x5 + adds r1, r4, 0 + bl sub_809A798 + movs r0, 0x5 + adds r1, r4, 0 + bl sub_809A7B4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _0813D4A4 @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0813D4A8 @ =gUnknown_2021D18 + ldr r1, _0813D4AC @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x6E + bl sub_813E9A0 +_0813D498: + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813D4A0: .4byte gUnknown_203F36C +_0813D4A4: .4byte gUnknown_2021CD0 +_0813D4A8: .4byte gUnknown_2021D18 +_0813D4AC: .4byte gUnknown_84162B9 + thumb_func_end sub_813D430 + + thumb_func_start sub_813D4B0 +sub_813D4B0: @ 813D4B0 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_8107300 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_813D4D0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813D4B0 + + thumb_func_start sub_813D4D0 +sub_813D4D0: @ 813D4D0 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0xFF + bne _0813D514 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0x1 + adds r3, r5, 0 + bl sub_8004378 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + b _0813D52A +_0813D514: + ldr r2, _0813D534 @ =gUnknown_841623B + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r3, 0x1 + bl sub_813E9A0 +_0813D52A: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813D534: .4byte gUnknown_841623B + thumb_func_end sub_813D4D0 + + thumb_func_start sub_813D538 +sub_813D538: @ 813D538 + push {r4,lr} + sub sp, 0x14 + adds r1, r0, 0 + ldr r0, _0813D560 @ =gUnknown_203F36C + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r1, r0 + beq _0813D564 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A96C + adds r4, r0, 0 + b _0813D566 + .align 2, 0 +_0813D560: .4byte gUnknown_203F36C +_0813D564: + ldr r4, _0813D590 @ =gUnknown_8416716 +_0813D566: + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x2 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_813E9A0 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D590: .4byte gUnknown_8416716 + thumb_func_end sub_813D538 + + thumb_func_start sub_813D594 +sub_813D594: @ 813D594 + push {lr} + sub sp, 0x8 + movs r1, 0x4 + str r1, [sp] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x10 + movs r3, 0x1E + bl sub_80F6B08 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813D594 + + thumb_func_start sub_813D5BC +sub_813D5BC: @ 813D5BC + push {r4,lr} + sub sp, 0x10 + ldr r2, _0813D5D8 @ =gUnknown_203F370 + ldrb r0, [r2, 0x4] + cmp r0, 0x5 + beq _0813D5E0 + ldr r4, _0813D5DC @ =gUnknown_203F36C + ldr r1, [r4] + ldrb r0, [r1, 0x7] + ldrb r1, [r1, 0x8] + subs r0, r1 + adds r0, 0x1 + b _0813D5EA + .align 2, 0 +_0813D5D8: .4byte gUnknown_203F370 +_0813D5DC: .4byte gUnknown_203F36C +_0813D5E0: + ldr r4, _0813D610 @ =gUnknown_203F36C + ldr r1, [r4] + ldrb r0, [r1, 0x7] + ldrb r1, [r1, 0x8] + subs r0, r1 +_0813D5EA: + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r2, 0 + adds r0, 0xA + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xA0 + movs r2, 0x8 + movs r3, 0x78 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x6] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D610: .4byte gUnknown_203F36C + thumb_func_end sub_813D5BC + + thumb_func_start sub_813D614 +sub_813D614: @ 813D614 + push {r4,lr} + sub sp, 0x10 + ldr r4, _0813D648 @ =gUnknown_203F36C + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0x4] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r1, 0x4 + str r1, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xD4 + movs r2, 0x78 + movs r3, 0x98 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x6] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D648: .4byte gUnknown_203F36C + thumb_func_end sub_813D614 + + thumb_func_start sub_813D64C +sub_813D64C: @ 813D64C + push {r4,lr} + sub sp, 0x10 + ldr r4, _0813D680 @ =gUnknown_203F36C + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0x4] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r1, 0x4 + str r1, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x98 + movs r2, 0x48 + movs r3, 0x68 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x6] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D680: .4byte gUnknown_203F36C + thumb_func_end sub_813D64C + + thumb_func_start sub_813D684 +sub_813D684: @ 813D684 + push {r4,lr} + ldr r4, _0813D6A0 @ =gUnknown_203F36C + ldr r1, [r4] + ldrb r0, [r1, 0x6] + cmp r0, 0xFF + beq _0813D69A + bl sub_8133C30 + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1, 0x6] +_0813D69A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D6A0: .4byte gUnknown_203F36C + thumb_func_end sub_813D684 + + thumb_func_start sub_813D6A4 +sub_813D6A4: @ 813D6A4 + push {r4,lr} + sub sp, 0x14 + ldr r4, _0813D6E0 @ =gUnknown_841670A + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r3, 0x48 + subs r3, r0 + lsrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x2 + movs r1, 0x1 + adds r2, r4, 0 + bl sub_813E9A0 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D6E0: .4byte gUnknown_841670A + thumb_func_end sub_813D6A4 + + thumb_func_start sub_813D6E4 +sub_813D6E4: @ 813D6E4 + ldr r1, _0813D6F0 @ =gUnknown_203F370 + movs r0, 0 + strh r0, [r1, 0x8] + strh r0, [r1, 0xA] + bx lr + .align 2, 0 +_0813D6F0: .4byte gUnknown_203F370 + thumb_func_end sub_813D6E4 + + thumb_func_start sub_813D6F4 +sub_813D6F4: @ 813D6F4 + push {r4,lr} + ldr r0, _0813D70C @ =gUnknown_203F370 + ldrb r1, [r0, 0x4] + adds r4, r0, 0 + cmp r1, 0x5 + beq _0813D714 + ldr r0, _0813D710 @ =gUnknown_203F36C + ldr r1, [r0] + ldrb r1, [r1, 0x7] + adds r2, r1, 0x1 + adds r1, r0, 0 + b _0813D71A + .align 2, 0 +_0813D70C: .4byte gUnknown_203F370 +_0813D710: .4byte gUnknown_203F36C +_0813D714: + ldr r1, _0813D744 @ =gUnknown_203F36C + ldr r0, [r1] + ldrb r2, [r0, 0x7] +_0813D71A: + ldrh r0, [r4, 0xA] + cmp r0, 0 + beq _0813D72E + ldr r1, [r1] + ldrb r1, [r1, 0x8] + adds r0, r1 + cmp r0, r2 + ble _0813D72E + subs r0, r2, r1 + strh r0, [r4, 0xA] +_0813D72E: + adds r3, r4, 0 + ldrh r0, [r3, 0xA] + ldrh r1, [r3, 0x8] + adds r0, r1 + cmp r0, r2 + blt _0813D74C + cmp r2, 0x1 + bhi _0813D748 + movs r0, 0 + strh r0, [r3, 0x8] + b _0813D74C + .align 2, 0 +_0813D744: .4byte gUnknown_203F36C +_0813D748: + subs r0, r2, 0x1 + strh r0, [r4, 0x8] +_0813D74C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813D6F4 + + thumb_func_start sub_813D754 +sub_813D754: @ 813D754 + push {r4-r6,lr} + ldr r0, _0813D770 @ =gUnknown_203F370 + ldrb r1, [r0, 0x4] + adds r5, r0, 0 + cmp r1, 0x5 + beq _0813D778 + ldr r1, _0813D774 @ =gUnknown_203F36C + ldr r0, [r1] + ldrb r0, [r0, 0x7] + adds r0, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + b _0813D77E + .align 2, 0 +_0813D770: .4byte gUnknown_203F370 +_0813D774: .4byte gUnknown_203F36C +_0813D778: + ldr r1, _0813D7C8 @ =gUnknown_203F36C + ldr r0, [r1] + ldrb r4, [r0, 0x7] +_0813D77E: + adds r6, r1, 0 + ldrh r0, [r5, 0x8] + cmp r0, 0x4 + bls _0813D7C2 + movs r3, 0 + subs r0, 0x4 + cmp r3, r0 + bgt _0813D7C2 + ldrh r0, [r5, 0xA] + ldr r1, [r6] + ldrb r1, [r1, 0x8] + adds r0, r1 + cmp r0, r4 + beq _0813D7C2 + adds r2, r5, 0 +_0813D79C: + ldrh r0, [r2, 0x8] + subs r0, 0x1 + strh r0, [r2, 0x8] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrh r0, [r2, 0x8] + subs r0, 0x4 + cmp r3, r0 + bgt _0813D7C2 + ldrh r0, [r5, 0xA] + ldr r1, [r6] + ldrb r1, [r1, 0x8] + adds r0, r1 + cmp r0, r4 + bne _0813D79C +_0813D7C2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813D7C8: .4byte gUnknown_203F36C + thumb_func_end sub_813D754 + + thumb_func_start sub_813D7CC +sub_813D7CC: @ 813D7CC + push {lr} + ldr r0, _0813D7FC @ =gUnknown_203F36C + ldr r0, [r0] + cmp r0, 0 + beq _0813D7DA + bl sub_8002BC4 +_0813D7DA: + ldr r0, _0813D800 @ =gUnknown_203F37C + ldr r0, [r0] + cmp r0, 0 + beq _0813D7E6 + bl sub_8002BC4 +_0813D7E6: + ldr r0, _0813D804 @ =gUnknown_203F380 + ldr r0, [r0] + cmp r0, 0 + beq _0813D7F2 + bl sub_8002BC4 +_0813D7F2: + bl sub_8003ECC + pop {r0} + bx r0 + .align 2, 0 +_0813D7FC: .4byte gUnknown_203F36C +_0813D800: .4byte gUnknown_203F37C +_0813D804: .4byte gUnknown_203F380 + thumb_func_end sub_813D7CC + + thumb_func_start sub_813D808 +sub_813D808: @ 813D808 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0813D83C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0813D840 @ =sub_813D844 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D83C: .4byte gUnknown_3005090 +_0813D840: .4byte sub_813D844 + thumb_func_end sub_813D808 + + thumb_func_start sub_813D844 +sub_813D844: @ 813D844 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0813D87C @ =gUnknown_3005098 + adds r2, r0, r1 + ldr r0, _0813D880 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0813D8A4 + ldrb r0, [r2] + ldr r4, _0813D884 @ =gUnknown_203F37A + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + ldr r0, _0813D888 @ =gUnknown_203F36C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _0813D88C + bl sub_8000544 + b _0813D896 + .align 2, 0 +_0813D87C: .4byte gUnknown_3005098 +_0813D880: .4byte gUnknown_2037AB8 +_0813D884: .4byte gUnknown_203F37A +_0813D888: .4byte gUnknown_203F36C +_0813D88C: + adds r0, r4, 0 + subs r0, 0xA + ldr r0, [r0] + bl sub_8000544 +_0813D896: + bl sub_813D684 + bl sub_813D7CC + adds r0, r5, 0 + bl sub_8077508 +_0813D8A4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813D844 + + thumb_func_start sub_813D8AC +sub_813D8AC: @ 813D8AC + push {r4,lr} + ldr r4, _0813D904 @ =gUnknown_20398AC + adds r0, r4, 0 + bl sub_809A720 + ldr r3, _0813D908 @ =gUnknown_203F36C + ldr r1, [r3] + movs r0, 0 + strb r0, [r1, 0x7] + movs r2, 0 + ldrb r0, [r4, 0x4] + cmp r2, r0 + bcs _0813D8EE + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _0813D8EE +_0813D8CE: + ldr r0, [r3] + ldrb r1, [r0, 0x7] + adds r1, 0x1 + strb r1, [r0, 0x7] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrb r0, [r4, 0x4] + cmp r2, r0 + bcs _0813D8EE + ldr r0, [r4] + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _0813D8CE +_0813D8EE: + ldr r0, _0813D90C @ =gUnknown_203F370 + ldrb r0, [r0, 0x4] + cmp r0, 0x5 + beq _0813D910 + ldr r0, _0813D908 @ =gUnknown_203F36C + ldr r1, [r0] + ldrb r1, [r1, 0x7] + adds r2, r1, 0x1 + adds r1, r0, 0 + b _0813D916 + .align 2, 0 +_0813D904: .4byte gUnknown_20398AC +_0813D908: .4byte gUnknown_203F36C +_0813D90C: .4byte gUnknown_203F370 +_0813D910: + ldr r1, _0813D924 @ =gUnknown_203F36C + ldr r0, [r1] + ldrb r2, [r0, 0x7] +_0813D916: + cmp r2, 0x7 + bls _0813D928 + ldr r1, [r1] + movs r0, 0x7 + strb r0, [r1, 0x8] + b _0813D92C + .align 2, 0 +_0813D924: .4byte gUnknown_203F36C +_0813D928: + ldr r0, [r1] + strb r2, [r0, 0x8] +_0813D92C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813D8AC + + thumb_func_start sub_813D934 +sub_813D934: @ 813D934 + ldr r1, _0813D93C @ =gUnknown_203F36C + ldr r1, [r1] + str r0, [r1] + bx lr + .align 2, 0 +_0813D93C: .4byte gUnknown_203F36C + thumb_func_end sub_813D934 + + thumb_func_start sub_813D940 +sub_813D940: @ 813D940 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x14 + adds r6, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0813D9E8 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x8 + bl sub_813EA08 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0x2 + ldrsh r0, [r4, r1] + ldr r1, _0813D9EC @ =gUnknown_2021CD0 + mov r10, r1 + bl sub_813D39C + ldr r0, _0813D9F0 @ =gUnknown_2021D18 + mov r9, r0 + adds r1, r6, 0 + bl sub_8008FCC + movs r0, 0x2 + str r0, [sp] + movs r6, 0x1 + str r6, [sp, 0x4] + str r0, [sp, 0x8] + movs r1, 0 + mov r8, r1 + str r1, [sp, 0xC] + str r6, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + mov r2, r9 + movs r3, 0 + bl sub_813E9A0 + movs r0, 0 + bl sub_813EA08 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r0, r10 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x3 + bl sub_8008E78 + ldr r1, _0813D9F4 @ =gUnknown_84162B9 + mov r0, r9 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + str r6, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r6, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0 + mov r2, r9 + movs r3, 0x4 + bl sub_813E9A0 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813D9E8: .4byte gUnknown_3005098 +_0813D9EC: .4byte gUnknown_2021CD0 +_0813D9F0: .4byte gUnknown_2021D18 +_0813D9F4: .4byte gUnknown_84162B9 + thumb_func_end sub_813D940 + + thumb_func_start sub_813D9F8 +sub_813D9F8: @ 813D9F8 + push {r4-r6,lr} + sub sp, 0x14 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + bl sub_813EB10 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + adds r0, r6, 0 + movs r1, 0x11 + bl sub_800445C + ldr r0, _0813DA5C @ =gUnknown_2021CD0 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + movs r2, 0x2 + adds r3, r5, 0 + bl sub_8008E78 + ldr r4, _0813DA60 @ =gUnknown_2021D18 + ldr r1, _0813DA64 @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x4 + bl sub_813E9A0 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813DA5C: .4byte gUnknown_2021CD0 +_0813DA60: .4byte gUnknown_2021D18 +_0813DA64: .4byte gUnknown_84162B9 + thumb_func_end sub_813D9F8 + + thumb_func_start sub_813DA68 +sub_813DA68: @ 813DA68 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0813DAD8 @ =gUnknown_3005098 + adds r7, r0, r1 + ldr r0, _0813DADC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0 + beq _0813DA90 + b _0813DB9E +_0813DA90: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813DA9E + b _0813DB9E +_0813DA9E: + ldrb r0, [r7] + bl sub_8107078 + adds r5, r0, 0 + ldrb r0, [r7] + ldr r4, _0813DAE0 @ =gUnknown_203F37A + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_81072D4 + ldr r0, _0813DAE4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0813DAEC + adds r0, r4, 0 + subs r0, 0xA + ldrb r0, [r0, 0x5] + cmp r0, 0x1 + bne _0813DAEC + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0813DAE8 @ =gUnknown_203AD30 + mov r1, r8 + strh r1, [r0] + b _0813DB48 + .align 2, 0 +_0813DAD8: .4byte gUnknown_3005098 +_0813DADC: .4byte gUnknown_2037AB8 +_0813DAE0: .4byte gUnknown_203F37A +_0813DAE4: .4byte gUnknown_30030F0 +_0813DAE8: .4byte gUnknown_203AD30 +_0813DAEC: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _0813DAFC + adds r0, 0x1 + cmp r5, r0 + bne _0813DB10 + b _0813DB9E +_0813DAFC: + ldr r0, _0813DB0C @ =gUnknown_203F370 + ldrb r0, [r0, 0x4] + cmp r0, 0x5 + beq _0813DB9E + movs r0, 0x5 + bl sub_80722CC + b _0813DB42 + .align 2, 0 +_0813DB0C: .4byte gUnknown_203F370 +_0813DB10: + movs r0, 0x5 + bl sub_80722CC + ldr r3, _0813DB30 @ =gUnknown_203F370 + mov r8, r3 + ldrb r0, [r3, 0x4] + cmp r0, 0x5 + bne _0813DB38 + lsls r1, r5, 16 + lsrs r1, 16 + movs r0, 0x5 + bl sub_809A798 + ldr r1, _0813DB34 @ =gUnknown_203AD30 + b _0813DB46 + .align 2, 0 +_0813DB30: .4byte gUnknown_203F370 +_0813DB34: .4byte gUnknown_203AD30 +_0813DB38: + ldr r0, _0813DB50 @ =gUnknown_203F36C + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r5, r0 + bne _0813DB58 +_0813DB42: + ldr r1, _0813DB54 @ =gUnknown_203AD30 + movs r0, 0 +_0813DB46: + strh r0, [r1] +_0813DB48: + adds r0, r6, 0 + bl sub_813D808 + b _0813DB9E + .align 2, 0 +_0813DB50: .4byte gUnknown_203F36C +_0813DB54: .4byte gUnknown_203AD30 +_0813DB58: + bl sub_813D684 + movs r0, 0x1 + bl sub_813D594 + ldrb r0, [r7] + movs r1, 0x2 + bl sub_813D4B0 + strh r5, [r7, 0x2] + lsls r4, r5, 16 + lsrs r4, 16 + movs r0, 0x5 + adds r1, r4, 0 + bl sub_809A7B4 + strh r0, [r7, 0x4] + movs r0, 0x5 + adds r1, r4, 0 + bl sub_809A798 + ldr r1, _0813DBA8 @ =gUnknown_203AD30 + strh r0, [r1] + ldr r0, _0813DBAC @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r2, _0813DBB0 @ =gUnknown_8464358 + mov r3, r8 + ldrb r0, [r3, 0x4] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] +_0813DB9E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813DBA8: .4byte gUnknown_203AD30 +_0813DBAC: .4byte gUnknown_3005090 +_0813DBB0: .4byte gUnknown_8464358 + thumb_func_end sub_813DA68 + + thumb_func_start sub_813DBB4 +sub_813DBB4: @ 813DBB4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + bl sub_813D594 + bl sub_813D5BC + ldr r1, _0813DBDC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0813DBE0 @ =sub_813DA68 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813DBDC: .4byte gUnknown_3005090 +_0813DBE0: .4byte sub_813DA68 + thumb_func_end sub_813DBB4 + + thumb_func_start sub_813DBE4 +sub_813DBE4: @ 813DBE4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813DC10 @ =gUnknown_3005098 + adds r7, r1, r0 + ldr r0, _0813DC14 @ =gUnknown_203F370 + ldrb r0, [r0, 0x4] + cmp r0, 0x4 + bne _0813DC24 + ldr r1, _0813DC18 @ =gUnknown_203F384 + ldr r0, _0813DC1C @ =gUnknown_84643B0 + str r0, [r1] + ldr r1, _0813DC20 @ =gUnknown_203F388 + movs r0, 0x3 + b _0813DC86 + .align 2, 0 +_0813DC10: .4byte gUnknown_3005098 +_0813DC14: .4byte gUnknown_203F370 +_0813DC18: .4byte gUnknown_203F384 +_0813DC1C: .4byte gUnknown_84643B0 +_0813DC20: .4byte gUnknown_203F388 +_0813DC24: + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813DC38 + bl sub_811B0D0 + cmp r0, 0x1 + bne _0813DC7C +_0813DC38: + ldr r0, _0813DC54 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_80BF6A8 + lsls r0, 24 + cmp r0, 0 + bne _0813DC64 + ldr r1, _0813DC58 @ =gUnknown_203F384 + ldr r0, _0813DC5C @ =gUnknown_84643AC + str r0, [r1] + ldr r1, _0813DC60 @ =gUnknown_203F388 + movs r0, 0x1 + b _0813DC86 + .align 2, 0 +_0813DC54: .4byte gUnknown_203AD30 +_0813DC58: .4byte gUnknown_203F384 +_0813DC5C: .4byte gUnknown_84643AC +_0813DC60: .4byte gUnknown_203F388 +_0813DC64: + ldr r1, _0813DC70 @ =gUnknown_203F384 + ldr r0, _0813DC74 @ =gUnknown_84643A8 + str r0, [r1] + ldr r1, _0813DC78 @ =gUnknown_203F388 + movs r0, 0x2 + b _0813DC86 + .align 2, 0 +_0813DC70: .4byte gUnknown_203F384 +_0813DC74: .4byte gUnknown_84643A8 +_0813DC78: .4byte gUnknown_203F388 +_0813DC7C: + ldr r1, _0813DD58 @ =gUnknown_203F384 + ldr r0, _0813DD5C @ =gUnknown_84643A4 + str r0, [r1] + ldr r1, _0813DD60 @ =gUnknown_203F388 + movs r0, 0x4 +_0813DC86: + strb r0, [r1] + mov r8, r1 + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + bl sub_813EA08 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x2 + movs r1, 0x2 + bl sub_80F79D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + mov r1, r8 + ldrb r0, [r1] + str r0, [sp, 0x8] + ldr r0, _0813DD64 @ =gUnknown_846437C + str r0, [sp, 0xC] + ldr r0, _0813DD58 @ =gUnknown_203F384 + ldr r0, [r0] + str r0, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0x2 + bl sub_810FCD0 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + mov r1, r8 + ldrb r0, [r1] + str r0, [sp, 0x4] + movs r0, 0 + mov r8, r0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0x6 + bl sub_813EA08 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, _0813DD68 @ =gUnknown_2021CD0 + bl sub_813D39C + ldr r5, _0813DD6C @ =gUnknown_2021D18 + ldr r1, _0813DD70 @ =gUnknown_84162FF + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x2 + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + str r0, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_813E9A0 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813DD58: .4byte gUnknown_203F384 +_0813DD5C: .4byte gUnknown_84643A4 +_0813DD60: .4byte gUnknown_203F388 +_0813DD64: .4byte gUnknown_846437C +_0813DD68: .4byte gUnknown_2021CD0 +_0813DD6C: .4byte gUnknown_2021D18 +_0813DD70: .4byte gUnknown_84162FF + thumb_func_end sub_813DBE4 + + thumb_func_start sub_813DD74 +sub_813DD74: @ 813DD74 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_813DBE4 + ldr r1, _0813DD98 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0813DD9C @ =sub_813DDA0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813DD98: .4byte gUnknown_3005090 +_0813DD9C: .4byte sub_813DDA0 + thumb_func_end sub_813DD74 + + thumb_func_start sub_813DDA0 +sub_813DDA0: @ 813DDA0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813DDFE + bl sub_810FA04 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0813DDFE + adds r0, 0x1 + cmp r4, r0 + bne _0813DDE0 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0813DDDC @ =gUnknown_846437C + ldr r1, [r0, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + b _0813DDFE + .align 2, 0 +_0813DDDC: .4byte gUnknown_846437C +_0813DDE0: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0813DE04 @ =gUnknown_846437C + ldr r0, _0813DE08 @ =gUnknown_203F384 + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + adds r0, r6, 0 + bl _call_via_r1 +_0813DDFE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813DE04: .4byte gUnknown_846437C +_0813DE08: .4byte gUnknown_203F384 + thumb_func_end sub_813DDA0 + + thumb_func_start sub_813DE0C +sub_813DE0C: @ 813DE0C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0813DE5C @ =gUnknown_203F388 + ldrb r0, [r0] + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + bl sub_813EA98 + movs r0, 0x6 + bl sub_813EA98 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + ldr r0, _0813DE60 @ =gUnknown_203F370 + ldrb r0, [r0, 0x4] + cmp r0, 0x4 + bne _0813DE78 + ldr r4, _0813DE64 @ =gUnknown_203AD30 + ldrh r0, [r4] + bl sub_809AA68 + cmp r0, 0 + bne _0813DE68 + adds r0, r5, 0 + bl sub_80A2238 + b _0813DEB0 + .align 2, 0 +_0813DE5C: .4byte gUnknown_203F388 +_0813DE60: .4byte gUnknown_203F370 +_0813DE64: .4byte gUnknown_203AD30 +_0813DE68: + ldrh r0, [r4] + bl sub_809AA68 + adds r1, r0, 0 + adds r0, r5, 0 + bl _call_via_r1 + b _0813DEB0 +_0813DE78: + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _0813DEA0 + ldr r0, _0813DE9C @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A9FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813DEA0 + adds r0, r5, 0 + bl sub_813E274 + b _0813DEB0 + .align 2, 0 +_0813DE9C: .4byte gUnknown_203AD30 +_0813DEA0: + ldr r0, _0813DEB8 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809AA20 + adds r1, r0, 0 + adds r0, r5, 0 + bl _call_via_r1 +_0813DEB0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813DEB8: .4byte gUnknown_203AD30 + thumb_func_end sub_813DE0C + + thumb_func_start sub_813DEBC +sub_813DEBC: @ 813DEBC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r7, r0, 3 + ldr r0, _0813DF24 @ =gUnknown_3005098 + mov r8, r0 + adds r5, r7, r0 + ldr r4, _0813DF28 @ =gUnknown_203F388 + ldrb r0, [r4] + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + bl sub_813EB10 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + movs r0, 0x6 + bl sub_813EB10 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + ldrb r0, [r4] + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + bl sub_813EA98 + movs r0, 0x6 + bl sub_813EA98 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + strh r0, [r5, 0x10] + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _0813DF2C + adds r0, r6, 0 + bl sub_813DF54 + b _0813DF42 + .align 2, 0 +_0813DF24: .4byte gUnknown_3005098 +_0813DF28: .4byte gUnknown_203F388 +_0813DF2C: + ldr r1, _0813DF4C @ =gUnknown_84163DB + adds r0, r6, 0 + bl sub_813D940 + bl sub_813D614 + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0813DF50 @ =sub_813E010 + str r1, [r0] +_0813DF42: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813DF4C: .4byte gUnknown_84163DB +_0813DF50: .4byte sub_813E010 + thumb_func_end sub_813DEBC + + thumb_func_start sub_813DF54 +sub_813DF54: @ 813DF54 + push {r4,r5,lr} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + ldr r0, _0813DFB4 @ =gUnknown_3005098 + adds r1, r0 + ldr r0, _0813DFB8 @ =gUnknown_2021CF0 + movs r2, 0x10 + ldrsh r1, [r1, r2] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r5, _0813DFBC @ =gUnknown_2021D18 + ldr r1, _0813DFC0 @ =gUnknown_8416409 + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x7 + bl sub_813EA08 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + str r1, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0 + str r1, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_813E9A0 + ldr r1, _0813DFC4 @ =gUnknown_846436C + adds r0, r4, 0 + bl sub_813EB7C + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813DFB4: .4byte gUnknown_3005098 +_0813DFB8: .4byte gUnknown_2021CF0 +_0813DFBC: .4byte gUnknown_2021D18 +_0813DFC0: .4byte gUnknown_8416409 +_0813DFC4: .4byte gUnknown_846436C + thumb_func_end sub_813DF54 + + thumb_func_start sub_813DFC8 +sub_813DFC8: @ 813DFC8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0813E00C @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x7 + bl sub_813EA98 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_813D4B0 + adds r0, r5, 0 + bl sub_813DBB4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813E00C: .4byte gUnknown_3005098 + thumb_func_end sub_813DFC8 + + thumb_func_start sub_813E010 +sub_813E010: @ 813E010 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0813E044 @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x10 + ldrh r1, [r4, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813E048 + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r0, 0 + movs r2, 0x3 + bl sub_813D9F8 + b _0813E0D4 + .align 2, 0 +_0813E044: .4byte gUnknown_3005098 +_0813E048: + ldr r0, _0813E08C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E090 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x8 + bl sub_813EB10 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + movs r0, 0x8 + bl sub_813EA98 + movs r0, 0 + bl sub_813EA98 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + bl sub_813D684 + adds r0, r5, 0 + bl sub_813DF54 + b _0813E0D4 + .align 2, 0 +_0813E08C: .4byte gUnknown_30030F0 +_0813E090: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0813E0D4 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x8 + bl sub_813EA98 + movs r0, 0 + bl sub_813EA98 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_813D4B0 + bl sub_813D684 + adds r0, r6, 0 + bl sub_813DBB4 +_0813E0D4: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813E010 + + thumb_func_start sub_813E0DC +sub_813E0DC: @ 813E0DC + push {r4-r6,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r6, _0813E14C @ =gUnknown_3005098 + adds r5, r4, r6 + movs r0, 0x7 + bl sub_813EA98 + movs r1, 0x2 + ldrsh r0, [r5, r1] + ldr r1, _0813E150 @ =gUnknown_2021CD0 + bl sub_813D39C + ldr r0, _0813E154 @ =gUnknown_2021CF0 + movs r2, 0x10 + ldrsh r1, [r5, r2] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r5, _0813E158 @ =gUnknown_2021D18 + ldr r1, _0813E15C @ =gUnknown_84163F4 + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x9 + bl sub_813EA08 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + str r1, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0 + str r1, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_813E9A0 + subs r6, 0x8 + adds r4, r6 + ldr r0, _0813E160 @ =sub_813E164 + str r0, [r4] + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E14C: .4byte gUnknown_3005098 +_0813E150: .4byte gUnknown_2021CD0 +_0813E154: .4byte gUnknown_2021CF0 +_0813E158: .4byte gUnknown_2021D18 +_0813E15C: .4byte gUnknown_84163F4 +_0813E160: .4byte sub_813E164 + thumb_func_end sub_813E0DC + + thumb_func_start sub_813E164 +sub_813E164: @ 813E164 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0813E1EC @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _0813E1F0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0813E18A + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0813E1E4 +_0813E18A: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0813E1F4 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldrh r1, [r5, 0x10] + bl sub_809A1D8 + movs r0, 0x9 + bl sub_813EA98 + ldrb r0, [r5] + ldr r4, _0813E1F8 @ =gUnknown_203F37A + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + bl sub_813D8AC + bl sub_813D6F4 + bl sub_813D204 + ldr r0, _0813E1FC @ =gUnknown_3005E70 + subs r4, 0xA + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0x8] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_813D4B0 + adds r0, r6, 0 + bl sub_813DBB4 +_0813E1E4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E1EC: .4byte gUnknown_3005098 +_0813E1F0: .4byte gUnknown_30030F0 +_0813E1F4: .4byte gUnknown_203AD30 +_0813E1F8: .4byte gUnknown_203F37A +_0813E1FC: .4byte gUnknown_3005E70 + thumb_func_end sub_813E164 + + thumb_func_start sub_813E200 +sub_813E200: @ 813E200 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813E244 @ =gUnknown_203F388 + ldrb r0, [r0] + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + bl sub_813EA98 + movs r0, 0x6 + bl sub_813EA98 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _0813E248 + adds r0, r4, 0 + bl sub_813E274 + b _0813E25E + .align 2, 0 +_0813E244: .4byte gUnknown_203F388 +_0813E248: + ldr r0, _0813E264 @ =gUnknown_203F36C + ldr r1, [r0] + ldr r0, _0813E268 @ =sub_8126EDC + str r0, [r1] + ldr r1, _0813E26C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0813E270 @ =sub_813D808 + str r1, [r0] +_0813E25E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E264: .4byte gUnknown_203F36C +_0813E268: .4byte sub_8126EDC +_0813E26C: .4byte gUnknown_3005090 +_0813E270: .4byte sub_813D808 + thumb_func_end sub_813E200 + + thumb_func_start sub_813E274 +sub_813E274: @ 813E274 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0813E288 @ =gUnknown_841632A + ldr r3, _0813E28C @ =sub_813E290 + movs r1, 0x2 + bl sub_813EB20 + pop {r0} + bx r0 + .align 2, 0 +_0813E288: .4byte gUnknown_841632A +_0813E28C: .4byte sub_813E290 + thumb_func_end sub_813E274 + + thumb_func_start sub_813E290 +sub_813E290: @ 813E290 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813E2B4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E2AE + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_813E2B8 +_0813E2AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E2B4: .4byte gUnknown_30030F0 + thumb_func_end sub_813E290 + + thumb_func_start sub_813E2B8 +sub_813E2B8: @ 813E2B8 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r5, r6, 2 + adds r5, r6 + lsls r5, 3 + ldr r0, _0813E314 @ =gUnknown_3005098 + adds r5, r0 + movs r0, 0x5 + bl sub_813EACC + ldrb r0, [r5] + ldr r4, _0813E318 @ =gUnknown_203F37A + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + bl sub_813D8AC + bl sub_813D6F4 + bl sub_813D204 + ldr r0, _0813E31C @ =gUnknown_3005E70 + subs r4, 0xA + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0x8] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_813D4B0 + adds r0, r6, 0 + bl sub_813DBB4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E314: .4byte gUnknown_3005098 +_0813E318: .4byte gUnknown_203F37A +_0813E31C: .4byte gUnknown_3005E70 + thumb_func_end sub_813E2B8 + + thumb_func_start sub_813E320 +sub_813E320: @ 813E320 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0813E374 @ =gUnknown_203F388 + ldrb r0, [r0] + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + bl sub_813EA98 + movs r0, 0x6 + bl sub_813EA98 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _0813E378 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x8] + movs r1, 0x1 + bl sub_813D4B0 + adds r0, r4, 0 + bl sub_813DBB4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E374: .4byte gUnknown_203F388 +_0813E378: .4byte gUnknown_3005090 + thumb_func_end sub_813E320 + + thumb_func_start sub_813E37C +sub_813E37C: @ 813E37C + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + ldr r7, _0813E3C4 @ =gUnknown_3005098 + adds r0, r6, r7 + ldrh r1, [r0, 0x2] + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80BF6A8 + lsls r0, 24 + cmp r0, 0 + bne _0813E3D8 + ldr r1, _0813E3C8 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r4, _0813E3CC @ =gUnknown_2021D18 + ldr r1, _0813E3D0 @ =gUnknown_8416374 + adds r0, r4, 0 + bl sub_8008FCC + ldr r3, _0813E3D4 @ =sub_813E290 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_813EB20 + b _0813E3EA + .align 2, 0 +_0813E3C4: .4byte gUnknown_3005098 +_0813E3C8: .4byte gUnknown_2021CD0 +_0813E3CC: .4byte gUnknown_2021D18 +_0813E3D0: .4byte gUnknown_8416374 +_0813E3D4: .4byte sub_813E290 +_0813E3D8: + ldr r0, _0813E3F0 @ =gUnknown_203F36C + ldr r1, [r0] + ldr r0, _0813E3F4 @ =sub_8123744 + str r0, [r1] + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0813E3F8 @ =sub_813D808 + str r1, [r0] +_0813E3EA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E3F0: .4byte gUnknown_203F36C +_0813E3F4: .4byte sub_8123744 +_0813E3F8: .4byte sub_813D808 + thumb_func_end sub_813E37C + + thumb_func_start sub_813E3FC +sub_813E3FC: @ 813E3FC + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813E418 @ =gUnknown_203F36C + ldr r2, [r1] + ldr r1, _0813E41C @ =sub_808CE60 + str r1, [r2] + ldr r2, _0813E420 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _0813E424 @ =sub_813D808 + str r0, [r1] + bx lr + .align 2, 0 +_0813E418: .4byte gUnknown_203F36C +_0813E41C: .4byte sub_808CE60 +_0813E420: .4byte gUnknown_3005090 +_0813E424: .4byte sub_813D808 + thumb_func_end sub_813E3FC + + thumb_func_start sub_813E428 +sub_813E428: @ 813E428 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0813E470 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r6, _0813E474 @ =gUnknown_203AD30 + ldrh r0, [r6] + bl sub_809A900 + lsls r0, 16 + cmp r0, 0 + bne _0813E488 + ldrh r0, [r6] + ldr r1, _0813E478 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r4, _0813E47C @ =gUnknown_2021D18 + ldr r1, _0813E480 @ =gUnknown_84168F1 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0813E484 @ =sub_813E2B8 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_813EB20 + b _0813E4CE + .align 2, 0 +_0813E470: .4byte gUnknown_3005098 +_0813E474: .4byte gUnknown_203AD30 +_0813E478: .4byte gUnknown_2021CD0 +_0813E47C: .4byte gUnknown_2021D18 +_0813E480: .4byte gUnknown_84168F1 +_0813E484: .4byte sub_813E2B8 +_0813E488: + movs r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _0813E4A0 + bl sub_813EBD4 + adds r0, r5, 0 + bl sub_813E4E4 + b _0813E4CE +_0813E4A0: + cmp r0, 0x63 + ble _0813E4A8 + movs r0, 0x63 + strh r0, [r4, 0x4] +_0813E4A8: + ldrh r0, [r6] + ldr r1, _0813E4D4 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r4, _0813E4D8 @ =gUnknown_2021D18 + ldr r1, _0813E4DC @ =gUnknown_8416911 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0813E4E0 @ =sub_813E5B8 + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_813EB20 +_0813E4CE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E4D4: .4byte gUnknown_2021CD0 +_0813E4D8: .4byte gUnknown_2021D18 +_0813E4DC: .4byte gUnknown_8416911 +_0813E4E0: .4byte sub_813E5B8 + thumb_func_end sub_813E428 + + thumb_func_start sub_813E4E4 +sub_813E4E4: @ 813E4E4 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0813E540 @ =gUnknown_3005098 + adds r4, r0 + ldr r6, _0813E544 @ =gUnknown_2021D04 + ldrh r1, [r4, 0x2] + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r4, r2] + muls r1, r0 + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _0813E548 @ =gUnknown_2021D18 + ldr r1, _0813E54C @ =gUnknown_8416936 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0813E550 @ =sub_813E554 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_813EB20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E540: .4byte gUnknown_3005098 +_0813E544: .4byte gUnknown_2021D04 +_0813E548: .4byte gUnknown_2021D18 +_0813E54C: .4byte gUnknown_8416936 +_0813E550: .4byte sub_813E554 + thumb_func_end sub_813E4E4 + + thumb_func_start sub_813E554 +sub_813E554: @ 813E554 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813E564 @ =gUnknown_8464374 + bl sub_813EBA8 + pop {r0} + bx r0 + .align 2, 0 +_0813E564: .4byte gUnknown_8464374 + thumb_func_end sub_813E554 + + thumb_func_start sub_813E568 +sub_813E568: @ 813E568 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0813E5B4 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x2 + bl sub_813EA98 + movs r0, 0x5 + bl sub_813EACC + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_813D4B0 + adds r0, r5, 0 + bl sub_813DBB4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813E5B4: .4byte gUnknown_3005098 + thumb_func_end sub_813E568 + + thumb_func_start sub_813E5B8 +sub_813E5B8: @ 813E5B8 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r5, r0, 2 + adds r5, r0 + lsls r5, 3 + ldr r6, _0813E654 @ =gUnknown_3005098 + adds r0, r5, r6 + mov r9, r0 + movs r0, 0x1 + bl sub_813EA08 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0813E658 @ =gUnknown_2021CD0 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r2, _0813E65C @ =gUnknown_2021D18 + mov r8, r2 + ldr r1, _0813E660 @ =gUnknown_84162B9 + mov r0, r8 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0 + mov r2, r8 + movs r3, 0x4 + bl sub_813E9A0 + mov r3, r9 + ldrh r1, [r3, 0x2] + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + mov r2, r9 + movs r3, 0x10 + ldrsh r1, [r2, r3] + muls r0, r1 + bl sub_813E668 + bl sub_813EBD4 + bl sub_813D64C + subs r6, 0x8 + adds r5, r6 + ldr r0, _0813E664 @ =sub_813E690 + str r0, [r5] + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E654: .4byte gUnknown_3005098 +_0813E658: .4byte gUnknown_2021CD0 +_0813E65C: .4byte gUnknown_2021D18 +_0813E660: .4byte gUnknown_84162B9 +_0813E664: .4byte sub_813E690 + thumb_func_end sub_813E5B8 + + thumb_func_start sub_813E668 +sub_813E668: @ 813E668 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r0, 0x1 + bl sub_813EB10 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + str r1, [sp] + movs r1, 0x38 + movs r2, 0xA + adds r3, r4, 0 + bl sub_809FEC4 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813E668 + + thumb_func_start sub_813E690 +sub_813E690: @ 813E690 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0813E6E0 @ =gUnknown_3005098 + adds r5, r0, r1 + adds r0, r5, 0 + adds r0, 0x10 + ldrh r1, [r5, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813E6E4 + movs r0, 0x10 + ldrsh r1, [r5, r0] + movs r0, 0x1 + movs r2, 0x2 + bl sub_813D9F8 + ldrh r1, [r5, 0x2] + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r5, r2] + muls r0, r1 + bl sub_813E668 + b _0813E762 + .align 2, 0 +_0813E6E0: .4byte gUnknown_3005098 +_0813E6E4: + ldr r0, _0813E714 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E718 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_813EA98 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + bl sub_813D684 + adds r0, r4, 0 + bl sub_813E4E4 + b _0813E762 + .align 2, 0 +_0813E714: .4byte gUnknown_30030F0 +_0813E718: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0813E762 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_813EA98 + movs r0, 0x2 + bl sub_813EA98 + movs r0, 0x5 + bl sub_813EACC + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + bl sub_813D684 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_813D4B0 + adds r0, r6, 0 + bl sub_813DBB4 +_0813E762: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813E690 + + thumb_func_start sub_813E768 +sub_813E768: @ 813E768 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0813E7D4 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldr r0, _0813E7D8 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldr r1, _0813E7DC @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r6, _0813E7E0 @ =gUnknown_2021D04 + ldrh r1, [r4, 0x2] + movs r0, 0x5 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r4, r2] + muls r1, r0 + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _0813E7E4 @ =gUnknown_2021D18 + ldr r1, _0813E7E8 @ =gUnknown_8416959 + adds r0, r4, 0 + bl sub_8008FCC + ldr r3, _0813E7EC @ =sub_813E7F0 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_813EB20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E7D4: .4byte gUnknown_3005098 +_0813E7D8: .4byte gUnknown_203AD30 +_0813E7DC: .4byte gUnknown_2021CD0 +_0813E7E0: .4byte gUnknown_2021D04 +_0813E7E4: .4byte gUnknown_2021D18 +_0813E7E8: .4byte gUnknown_8416959 +_0813E7EC: .4byte sub_813E7F0 + thumb_func_end sub_813E768 + + thumb_func_start sub_813E7F0 +sub_813E7F0: @ 813E7F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + lsls r6, r0, 2 + adds r6, r0 + lsls r6, 3 + ldr r0, _0813E8BC @ =gUnknown_3005098 + mov r9, r0 + adds r1, r6, 0 + add r1, r9 + mov r8, r1 + movs r0, 0xF8 + bl sub_80722CC + ldr r5, _0813E8C0 @ =gUnknown_203AD30 + ldrh r0, [r5] + mov r2, r8 + ldrh r1, [r2, 0x10] + bl sub_809A1D8 + ldr r7, _0813E8C4 @ =gUnknown_3005008 + ldr r4, [r7] + movs r3, 0xA4 + lsls r3, 2 + mov r10, r3 + add r4, r10 + ldrh r0, [r5] + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + mov r2, r8 + movs r3, 0x10 + ldrsh r1, [r2, r3] + muls r1, r0 + adds r0, r4, 0 + bl sub_809FDA0 + ldrh r0, [r5] + mov r2, r8 + ldrh r1, [r2, 0x10] + movs r2, 0x2 + bl sub_809C09C + mov r3, r8 + ldrb r0, [r3] + ldr r4, _0813E8C8 @ =gUnknown_203F37A + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + bl sub_813D8AC + bl sub_813D6F4 + bl sub_813D204 + ldr r0, _0813E8CC @ =gUnknown_3005E70 + subs r4, 0xA + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0x8] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + strh r0, [r1] + movs r1, 0x2 + bl sub_813D4B0 + movs r0, 0x2 + bl sub_813EB10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, [r7] + add r0, r10 + bl sub_809FD58 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + bl sub_809FE40 + movs r2, 0x8 + negs r2, r2 + add r9, r2 + add r6, r9 + ldr r0, _0813E8D0 @ =sub_813E8D4 + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E8BC: .4byte gUnknown_3005098 +_0813E8C0: .4byte gUnknown_203AD30 +_0813E8C4: .4byte gUnknown_3005008 +_0813E8C8: .4byte gUnknown_203F37A +_0813E8CC: .4byte gUnknown_3005E70 +_0813E8D0: .4byte sub_813E8D4 + thumb_func_end sub_813E7F0 + + thumb_func_start sub_813E8D4 +sub_813E8D4: @ 813E8D4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813E90C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0813E8EE + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0813E906 +_0813E8EE: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x2 + bl sub_813EA98 + movs r0, 0x2 + bl sub_8003FA0 + adds r0, r4, 0 + bl sub_813E2B8 +_0813E906: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E90C: .4byte gUnknown_30030F0 + thumb_func_end sub_813E8D4 + + thumb_func_start sub_813E910 +sub_813E910: @ 813E910 + push {r4,lr} + ldr r0, _0813E994 @ =gUnknown_84643B8 + bl sub_8003B24 + bl sub_8002C28 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xE0 + bl sub_815001C + movs r0, 0 + movs r1, 0x13 + movs r2, 0xD0 + bl sub_814FEAC + movs r0, 0 + movs r1, 0xA + movs r2, 0xC0 + bl sub_814FF2C + ldr r0, _0813E998 @ =gUnknown_841F408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r4, 0 +_0813E946: + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0813E946 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r4, 0 + ldr r3, _0813E99C @ =gUnknown_203F38C + movs r2, 0xFF +_0813E97C: + adds r0, r4, r3 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xD + bls _0813E97C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E994: .4byte gUnknown_84643B8 +_0813E998: .4byte gUnknown_841F408 +_0813E99C: .4byte gUnknown_203F38C + thumb_func_end sub_813E910 + + thumb_func_start sub_813E9A0 +sub_813E9A0: @ 813E9A0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r3 + ldr r3, [sp, 0x30] + ldr r4, [sp, 0x34] + ldr r6, [sp, 0x38] + ldr r5, [sp, 0x3C] + mov r8, r5 + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + mov r9, r7 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r6, [sp, 0x4] + lsls r4, r5, 1 + adds r4, r5 + ldr r5, _0813EA04 @ =gUnknown_8464448 + adds r4, r5 + str r4, [sp, 0x8] + mov r4, r8 + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + str r2, [sp, 0x10] + mov r2, r9 + bl sub_812E5A4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813EA04: .4byte gUnknown_8464448 + thumb_func_end sub_813E9A0 + + thumb_func_start sub_813EA08 +sub_813EA08: @ 813EA08 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813EA4C @ =gUnknown_203F38C + adds r5, r4, r0 + ldrb r0, [r5] + cmp r0, 0xFF + bne _0813EA6C + lsls r0, r4, 3 + ldr r1, _0813EA50 @ =gUnknown_84643D8 + adds r0, r1 + bl sub_8003CE4 + strb r0, [r5] + cmp r4, 0x2 + beq _0813EA38 + cmp r4, 0x6 + beq _0813EA38 + cmp r4, 0x7 + beq _0813EA38 + cmp r4, 0x8 + beq _0813EA38 + cmp r4, 0x9 + bne _0813EA54 +_0813EA38: + ldr r0, _0813EA4C @ =gUnknown_203F38C + adds r0, r4, r0 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0xA + movs r3, 0xC + bl sub_810F2E8 + b _0813EA60 + .align 2, 0 +_0813EA4C: .4byte gUnknown_203F38C +_0813EA50: .4byte gUnknown_84643D8 +_0813EA54: + ldrb r0, [r5] + movs r1, 0 + movs r2, 0x1 + movs r3, 0xE + bl sub_810F2E8 +_0813EA60: + movs r0, 0x2 + bl sub_80F67A4 + ldr r0, _0813EA74 @ =gUnknown_203F38C + adds r0, r4, r0 + ldrb r0, [r0] +_0813EA6C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0813EA74: .4byte gUnknown_203F38C + thumb_func_end sub_813EA08 + + thumb_func_start sub_813EA78 +sub_813EA78: @ 813EA78 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813EA94 @ =gUnknown_203F38C + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0x1 + movs r3, 0xE + bl sub_810F2E8 + pop {r0} + bx r0 + .align 2, 0 +_0813EA94: .4byte gUnknown_203F38C + thumb_func_end sub_813EA78 + + thumb_func_start sub_813EA98 +sub_813EA98: @ 813EA98 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0813EAC8 @ =gUnknown_203F38C + adds r4, r0 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0xFF + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EAC8: .4byte gUnknown_203F38C + thumb_func_end sub_813EA98 + + thumb_func_start sub_813EACC +sub_813EACC: @ 813EACC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813EB0C @ =gUnknown_203F38C + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0xFF + beq _0813EB04 + movs r1, 0 + bl sub_810F260 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0xFF + strb r0, [r4] +_0813EB04: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EB0C: .4byte gUnknown_203F38C + thumb_func_end sub_813EACC + + thumb_func_start sub_813EB10 +sub_813EB10: @ 813EB10 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813EB1C @ =gUnknown_203F38C + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0813EB1C: .4byte gUnknown_203F38C + thumb_func_end sub_813EB10 + + thumb_func_start sub_813EB20 +sub_813EB20: @ 813EB20 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r7, r2, 0 + mov r8, r3 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r4, _0813EB74 @ =gUnknown_203F38C + ldrb r0, [r4, 0x5] + cmp r0, 0xFF + bne _0813EB44 + ldr r0, _0813EB78 @ =gUnknown_8464400 + bl sub_8003CE4 + strb r0, [r4, 0x5] +_0813EB44: + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4, 0x5] + str r5, [sp] + str r0, [sp, 0x4] + str r7, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + adds r0, r6, 0 + movs r2, 0x13 + movs r3, 0xD + bl sub_80BF474 + movs r0, 0x2 + bl sub_80F67A4 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813EB74: .4byte gUnknown_203F38C +_0813EB78: .4byte gUnknown_8464400 + thumb_func_end sub_813EB20 + + thumb_func_start sub_813EB7C +sub_813EB7C: @ 813EB7C + push {lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813EBA4 @ =gUnknown_84643F0 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0xE + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r2, 0x2 + movs r3, 0 + bl sub_80BF5D0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0813EBA4: .4byte gUnknown_84643F0 + thumb_func_end sub_813EB7C + + thumb_func_start sub_813EBA8 +sub_813EBA8: @ 813EBA8 + push {lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813EBD0 @ =gUnknown_84643F8 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0xE + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r2, 0x2 + movs r3, 0 + bl sub_80BF5D0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0813EBD0: .4byte gUnknown_84643F8 + thumb_func_end sub_813EBA8 + + thumb_func_start sub_813EBD4 +sub_813EBD4: @ 813EBD4 + push {r4,lr} + movs r0, 0x2 + bl sub_813EA08 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0813EC04 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + adds r3, r0, 0 + adds r0, r4, 0 + movs r1, 0xA + movs r2, 0xC + bl sub_809FF48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EC04: .4byte gUnknown_3005008 + thumb_func_end sub_813EBD4 + + thumb_func_start sub_813EC08 +sub_813EC08: @ 813EC08 + push {lr} + ldr r0, _0813EC20 @ =gUnknown_84644B8 + movs r1, 0x28 + movs r2, 0x4C + movs r3, 0 + bl sub_8006F8C + ldr r1, _0813EC24 @ =gUnknown_203F39C + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0813EC20: .4byte gUnknown_84644B8 +_0813EC24: .4byte gUnknown_203F39C + thumb_func_end sub_813EC08 + + thumb_func_start sub_813EC28 +sub_813EC28: @ 813EC28 + push {r4,lr} + ldr r0, _0813EC58 @ =gUnknown_203F39C + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0813EC5C @ =gUnknown_202063C + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0813EC52 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _0813EC60 @ =sub_813EC64 + str r0, [r4, 0x1C] +_0813EC52: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EC58: .4byte gUnknown_203F39C +_0813EC5C: .4byte gUnknown_202063C +_0813EC60: .4byte sub_813EC64 + thumb_func_end sub_813EC28 + + thumb_func_start sub_813EC64 +sub_813EC64: @ 813EC64 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0813EC80 + adds r0, r4, 0 + movs r1, 0 + bl sub_800843C + ldr r0, _0813EC88 @ =nullsub_8 + str r0, [r4, 0x1C] +_0813EC80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EC88: .4byte nullsub_8 + thumb_func_end sub_813EC64 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/bg.s b/asm/bg.s new file mode 100644 index 000000000..654286ae1 --- /dev/null +++ b/asm/bg.s @@ -0,0 +1,3421 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8001028 +sub_8001028: @ 8001028 + push {lr} + bl sub_800106C + ldr r1, _0800103C @ =gUnknown_30008D0 + movs r0, 0 + strh r0, [r1, 0x10] + bl sub_80013F4 + pop {r0} + bx r0 + .align 2, 0 +_0800103C: .4byte gUnknown_30008D0 + thumb_func_end sub_8001028 + + thumb_func_start sub_8001040 +sub_8001040: @ 8001040 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08001054 @ =gUnknown_30008D0 + ldrh r2, [r3, 0x10] + ldr r1, _08001058 @ =0x0000fff8 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x10] + bx lr + .align 2, 0 +_08001054: .4byte gUnknown_30008D0 +_08001058: .4byte 0x0000fff8 + thumb_func_end sub_8001040 + + thumb_func_start sub_800105C +sub_800105C: @ 800105C + ldr r0, _08001068 @ =gUnknown_30008D0 + ldrb r1, [r0, 0x10] + movs r0, 0x7 + ands r0, r1 + bx lr + .align 2, 0 +_08001068: .4byte gUnknown_30008D0 + thumb_func_end sub_800105C + + thumb_func_start sub_800106C +sub_800106C: @ 800106C + push {lr} + ldr r2, _08001084 @ =gUnknown_30008D0 + ldr r0, _08001088 @ =gUnknown_81E9F64 + ldr r0, [r0] + adds r1, r2, 0 + adds r1, 0xC +_08001078: + str r0, [r1] + subs r1, 0x4 + cmp r1, r2 + bge _08001078 + pop {r0} + bx r0 + .align 2, 0 +_08001084: .4byte gUnknown_30008D0 +_08001088: .4byte gUnknown_81E9F64 + thumb_func_end sub_800106C + + thumb_func_start sub_800108C +sub_800108C: @ 800108C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80014DC + lsls r0, 24 + cmp r0, 0 + bne _080010AA + ldr r1, _080010B0 @ =gUnknown_30008D0 + lsls r0, r4, 2 + adds r0, r1 + ldr r1, _080010B4 @ =gUnknown_81E9F64 + ldr r1, [r1] + str r1, [r0] +_080010AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080010B0: .4byte gUnknown_30008D0 +_080010B4: .4byte gUnknown_81E9F64 + thumb_func_end sub_800108C + + thumb_func_start sub_80010B8 +sub_80010B8: @ 80010B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r4, [sp, 0x30] + ldr r5, [sp, 0x34] + ldr r6, [sp, 0x38] + mov r12, r6 + ldr r6, [sp, 0x3C] + mov r8, r6 + lsls r0, 24 + lsrs r7, r0, 24 + str r7, [sp] + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + lsls r5, 24 + lsrs r5, 24 + mov r0, r12 + lsls r0, 24 + lsrs r4, r0, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0xC] + adds r0, r7, 0 + bl sub_80014DC + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + cmp r0, 0 + bne _080011D0 + ldr r2, _080011E0 @ =gUnknown_30008D0 + mov r8, r2 + mov r0, r10 + cmp r0, 0xFF + beq _0800112C + lsls r2, r7, 2 + add r2, r8 + movs r1, 0x3 + ands r1, r0 + ldrb r3, [r2, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x1] +_0800112C: + cmp r6, 0xFF + beq _08001144 + lsls r1, r7, 2 + add r1, r8 + movs r0, 0x1F + ands r6, r0 + lsls r3, r6, 2 + ldrb r2, [r1, 0x1] + subs r0, 0x9C + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x1] +_08001144: + mov r1, r9 + cmp r1, 0xFF + beq _08001160 + lsls r1, r7, 2 + add r1, r8 + movs r0, 0x3 + mov r2, r9 + ands r2, r0 + lsls r3, r2, 2 + ldrb r2, [r1] + subs r0, 0x10 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_08001160: + ldr r6, [sp, 0x4] + cmp r6, 0xFF + beq _08001176 + lsls r1, r7, 2 + add r1, r8 + lsls r3, r6, 7 + ldrb r2, [r1, 0x1] + movs r0, 0x7F + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x1] +_08001176: + cmp r5, 0xFF + beq _0800118E + lsls r1, r7, 2 + add r1, r8 + movs r0, 0x3 + ands r5, r0 + lsls r3, r5, 4 + ldrb r2, [r1] + subs r0, 0x34 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_0800118E: + cmp r4, 0xFF + beq _080011A6 + lsls r1, r7, 2 + add r1, r8 + movs r0, 0x1 + ands r4, r0 + lsls r3, r4, 6 + ldrb r2, [r1] + subs r0, 0x42 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_080011A6: + ldr r0, [sp, 0xC] + cmp r0, 0xFF + beq _080011BC + lsls r1, r7, 2 + add r1, r8 + lsls r3, r0, 7 + ldrb r2, [r1] + movs r0, 0x7F + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_080011BC: + ldr r1, [sp] + lsls r0, r1, 2 + add r0, r8 + mov r2, r12 + strb r2, [r0, 0x2] + strb r2, [r0, 0x3] + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] +_080011D0: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080011E0: .4byte gUnknown_30008D0 + thumb_func_end sub_80010B8 + + thumb_func_start sub_80011E4 +sub_80011E4: @ 80011E4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r4, 0 + bl sub_80014DC + lsls r0, 24 + cmp r0, 0 + bne _08001290 + ldr r1, _0800121C @ =gUnknown_30008D0 + lsls r2, r4, 2 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, 31 + adds r3, r1, 0 + cmp r0, 0 + beq _08001290 + subs r0, r5, 0x1 + cmp r0, 0x7 + bhi _08001290 + lsls r0, 2 + ldr r1, _08001220 @ =_08001224 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800121C: .4byte gUnknown_30008D0 +_08001220: .4byte _08001224 + .align 2, 0 +_08001224: + .4byte _08001244 + .4byte _0800124E + .4byte _08001258 + .4byte _08001262 + .4byte _0800126C + .4byte _08001274 + .4byte _0800127E + .4byte _08001288 +_08001244: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + b _08001292 +_0800124E: + adds r0, r2, r3 + ldrb r0, [r0, 0x1] + lsls r0, 30 + lsrs r0, 30 + b _08001292 +_08001258: + adds r0, r2, r3 + ldrb r0, [r0, 0x1] + lsls r0, 25 + lsrs r0, 27 + b _08001292 +_08001262: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 28 + lsrs r0, 30 + b _08001292 +_0800126C: + adds r0, r2, r3 + ldrb r0, [r0, 0x1] + lsrs r0, 7 + b _08001292 +_08001274: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 26 + lsrs r0, 30 + b _08001292 +_0800127E: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 25 + lsrs r0, 31 + b _08001292 +_08001288: + adds r0, r2, r3 + ldrb r0, [r0] + lsrs r0, 7 + b _08001292 +_08001290: + movs r0, 0xFF +_08001292: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80011E4 + + thumb_func_start sub_8001298 +sub_8001298: @ 8001298 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + ldr r1, [sp, 0x18] + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 16 + lsrs r6, r3, 16 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r4, 0 + bl sub_80014DC + lsls r0, 24 + cmp r0, 0 + bne _08001310 + ldr r1, _080012D8 @ =gUnknown_30008D0 + lsls r0, r4, 2 + adds r1, r0, r1 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08001310 + cmp r5, 0x1 + beq _080012DC + cmp r5, 0x2 + beq _080012E4 + movs r2, 0xFF + b _08001314 + .align 2, 0 +_080012D8: .4byte gUnknown_30008D0 +_080012DC: + ldrb r0, [r1, 0x1] + lsls r0, 30 + lsrs r0, 16 + b _080012EC +_080012E4: + ldrb r0, [r1, 0x1] + lsls r0, 25 + lsrs r0, 27 + lsls r0, 11 +_080012EC: + adds r0, r6, r0 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xC0 + lsls r1, 19 + adds r1, r0, r1 + mov r0, r8 + adds r2, r7, 0 + movs r3, 0 + bl sub_8000EAC + lsls r0, 24 + lsrs r2, r0, 24 + asrs r0, 24 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _08001314 +_08001310: + movs r0, 0xFF + b _08001316 +_08001314: + adds r0, r2, 0 +_08001316: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8001298 + + thumb_func_start sub_8001320 +sub_8001320: @ 8001320 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80014DC + lsls r0, 24 + cmp r0, 0 + bne _0800138E + ldr r5, _08001394 @ =gUnknown_30008D0 + lsls r0, r4, 2 + adds r2, r0, r5 + ldrb r3, [r2] + lsls r0, r3, 31 + cmp r0, 0 + beq _0800138E + lsls r1, r3, 26 + lsrs r1, 30 + ldrb r2, [r2, 0x1] + lsls r0, r2, 30 + lsrs r0, 28 + orrs r1, r0 + movs r0, 0x40 + ands r0, r3 + orrs r1, r0 + lsrs r0, r2, 7 + lsls r0, 7 + orrs r1, r0 + lsls r2, 25 + lsrs r2, 27 + lsls r2, 8 + orrs r1, r2 + lsrs r0, r3, 7 + lsls r0, 13 + orrs r1, r0 + lsls r0, r3, 28 + lsrs r0, 30 + lsls r0, 14 + orrs r1, r0 + lsls r0, r4, 25 + movs r2, 0x80 + lsls r2, 20 + adds r0, r2 + lsrs r0, 24 + bl sub_8000A38 + adds r1, r4, 0 + adds r1, 0x8 + movs r0, 0x1 + lsls r0, r1 + ldrh r1, [r5, 0x10] + orrs r0, r1 + ldr r1, _08001398 @ =0x00000f07 + ands r0, r1 + strh r0, [r5, 0x10] +_0800138E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08001394: .4byte gUnknown_30008D0 +_08001398: .4byte 0x00000f07 + thumb_func_end sub_8001320 + + thumb_func_start sub_800139C +sub_800139C: @ 800139C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80014DC + lsls r0, 24 + cmp r0, 0 + bne _080013C2 + ldr r2, _080013C8 @ =gUnknown_30008D0 + adds r0, r4, 0 + adds r0, 0x8 + movs r1, 0x1 + lsls r1, r0 + ldrh r0, [r2, 0x10] + bics r0, r1 + ldr r1, _080013CC @ =0x00000f07 + ands r0, r1 + strh r0, [r2, 0x10] +_080013C2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080013C8: .4byte gUnknown_30008D0 +_080013CC: .4byte 0x00000f07 + thumb_func_end sub_800139C + + thumb_func_start sub_80013D0 +sub_80013D0: @ 80013D0 + push {lr} + movs r0, 0 + bl sub_8000AC4 + ldr r1, _080013EC @ =0x0000f0f8 + ands r1, r0 + ldr r0, _080013F0 @ =gUnknown_30008D0 + ldrh r0, [r0, 0x10] + orrs r1, r0 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_080013EC: .4byte 0x0000f0f8 +_080013F0: .4byte gUnknown_30008D0 + thumb_func_end sub_80013D0 + + thumb_func_start sub_80013F4 +sub_80013F4: @ 80013F4 + push {lr} + movs r0, 0 + bl sub_8000AC4 + ldr r1, _0800140C @ =0x0000f0f8 + ands r1, r0 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0800140C: .4byte 0x0000f0f8 + thumb_func_end sub_80013F4 + + thumb_func_start sub_8001410 +sub_8001410: @ 8001410 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x24 + mov r12, r1 + mov r8, r2 + ldr r1, [sp, 0x3C] + ldr r2, [sp, 0x40] + ldr r4, [sp, 0x44] + ldr r5, [sp, 0x48] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r3, 16 + lsrs r3, 16 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r2, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _08001454 @ =gUnknown_30008D0 + ldrh r0, [r0, 0x10] + movs r1, 0x7 + ands r1, r0 + cmp r1, 0x1 + beq _08001458 + cmp r1, 0x1 + ble _080014CE + cmp r1, 0x2 + beq _0800145E + b _080014CE + .align 2, 0 +_08001454: .4byte gUnknown_30008D0 +_08001458: + cmp r6, 0x2 + bne _080014CE + b _08001468 +_0800145E: + subs r0, r6, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080014CE +_08001468: + mov r0, r12 + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + mov r0, sp + strh r3, [r0, 0x8] + strh r7, [r0, 0xA] + strh r2, [r0, 0xC] + strh r4, [r0, 0xE] + strh r5, [r0, 0x10] + add r4, sp, 0x14 + adds r1, r4, 0 + movs r2, 0x1 + bl BgAffineSet + ldrh r1, [r4] + movs r0, 0x20 + bl sub_8000A38 + ldrh r1, [r4, 0x2] + movs r0, 0x22 + bl sub_8000A38 + ldrh r1, [r4, 0x4] + movs r0, 0x24 + bl sub_8000A38 + ldrh r1, [r4, 0x6] + movs r0, 0x26 + bl sub_8000A38 + ldrh r1, [r4] + movs r0, 0x20 + bl sub_8000A38 + ldrh r1, [r4, 0x8] + movs r0, 0x28 + bl sub_8000A38 + ldrh r1, [r4, 0xA] + movs r0, 0x2A + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x2C + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x2E + bl sub_8000A38 +_080014CE: + add sp, 0x24 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8001410 + + thumb_func_start sub_80014DC +sub_80014DC: @ 80014DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _080014EA + movs r0, 0 + b _080014EC +_080014EA: + movs r0, 0x1 +_080014EC: + pop {r1} + bx r1 + thumb_func_end sub_80014DC + + thumb_func_start sub_80014F0 +sub_80014F0: @ 80014F0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r1, 0 + mov r8, r2 + cmp r3, 0x1 + beq _08001582 + cmp r3, 0x1 + bgt _08001508 + cmp r3, 0 + beq _0800150E + b _08001606 +_08001508: + cmp r3, 0x2 + beq _080015C8 + b _08001606 +_0800150E: + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_80011E4 + lsls r0, 16 + lsrs r0, 7 + movs r1, 0x80 + lsls r1, 3 + adds r4, r0, r1 + movs r1, 0x80 + lsls r1, 4 + cmp r4, r1 + ble _0800152C + adds r4, r1, 0 +_0800152C: + movs r2, 0 + movs r6, 0 + adds r3, r0, 0 + movs r5, 0 + cmp r3, r4 + bge _0800157C + ldr r7, _08001568 @ =gUnknown_3000938 + mov r12, r7 +_0800153C: + adds r0, r3, 0 + cmp r3, 0 + bge _08001544 + adds r0, r3, 0x7 +_08001544: + asrs r0, 3 + mov r7, r12 + adds r1, r0, r7 + ldrb r1, [r1] + lsls r0, 3 + subs r0, r3, r0 + asrs r1, r0 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + bne _08001572 + cmp r2, 0 + beq _0800156C + adds r2, 0x1 + cmp r2, r8 + bne _08001574 + adds r0, r6, 0 + b _08001608 + .align 2, 0 +_08001568: .4byte gUnknown_3000938 +_0800156C: + adds r6, r5, 0 + movs r2, 0x1 + b _08001574 +_08001572: + movs r2, 0 +_08001574: + adds r3, 0x1 + adds r5, 0x1 + cmp r3, r4 + blt _0800153C +_0800157C: + movs r0, 0x1 + negs r0, r0 + b _08001608 +_08001582: + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_80011E4 + lsls r0, 16 + lsrs r0, 7 + adds r0, r5 + mov r1, r8 + adds r4, r0, r1 + adds r3, r0, 0 + cmp r3, r4 + bge _08001606 + ldr r5, _080015C4 @ =gUnknown_3000938 + movs r6, 0x1 +_080015A0: + adds r1, r3, 0 + cmp r3, 0 + bge _080015A8 + adds r1, r3, 0x7 +_080015A8: + asrs r1, 3 + adds r2, r1, r5 + lsls r1, 3 + subs r1, r3, r1 + adds r0, r6, 0 + lsls r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r3, 0x1 + cmp r3, r4 + blt _080015A0 + b _08001606 + .align 2, 0 +_080015C4: .4byte gUnknown_3000938 +_080015C8: + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_80011E4 + lsls r0, 16 + lsrs r0, 7 + adds r0, r5 + mov r7, r8 + adds r4, r0, r7 + adds r3, r0, 0 + cmp r3, r4 + bge _08001606 + ldr r5, _08001614 @ =gUnknown_3000938 + movs r6, 0x1 +_080015E6: + adds r0, r3, 0 + cmp r3, 0 + bge _080015EE + adds r0, r3, 0x7 +_080015EE: + asrs r0, 3 + adds r2, r0, r5 + lsls r0, 3 + subs r0, r3, r0 + adds r1, r6, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r3, 0x1 + cmp r3, r4 + blt _080015E6 +_08001606: + movs r0, 0 +_08001608: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08001614: .4byte gUnknown_3000938 + thumb_func_end sub_80014F0 + + thumb_func_start sub_8001618 +sub_8001618: @ 8001618 + push {r4,lr} + adds r4, r0, 0 + bl sub_8001028 + ldr r1, _0800164C @ =gUnknown_3000928 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0xC +_08001628: + str r2, [r0] + subs r0, 0x4 + cmp r0, r1 + bge _08001628 + ldr r0, _08001650 @ =gUnknown_3003D8C + str r4, [r0] + ldr r1, _08001654 @ =gUnknown_3000938 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0xFF +_0800163C: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0800163C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800164C: .4byte gUnknown_3000928 +_08001650: .4byte gUnknown_3003D8C +_08001654: .4byte gUnknown_3000938 + thumb_func_end sub_8001618 + + thumb_func_start sub_8001658 +sub_8001658: @ 8001658 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r5, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r4, r2, 24 + bl sub_8001040 + bl sub_800106C + cmp r4, 0 + beq _08001712 + movs r7, 0 + ldr r0, _08001724 @ =gUnknown_30008E8 + mov r9, r0 + adds r6, r5, 0 + ldr r2, _08001728 @ =gUnknown_3000938 + mov r10, r2 + mov r8, r4 +_08001688: + ldr r4, [r6] + lsls r0, r4, 30 + lsrs r5, r0, 30 + cmp r5, 0x3 + bhi _08001704 + lsls r1, r4, 28 + lsrs r1, 30 + lsls r2, r4, 23 + lsrs r2, 27 + lsls r3, r4, 21 + lsrs r3, 30 + lsls r0, r4, 20 + lsrs r0, 31 + str r0, [sp] + lsls r0, r4, 18 + lsrs r0, 30 + str r0, [sp, 0x4] + str r7, [sp, 0x8] + str r7, [sp, 0xC] + adds r0, r5, 0 + bl sub_80010B8 + lsls r4, r5, 4 + mov r5, r9 + adds r3, r4, r5 + ldr r2, [r6] + lsls r2, 8 + lsrs r2, 22 + ldrh r0, [r3] + ldr r5, _0800172C @ =0xfffffc00 + adds r1, r5, 0 + ands r0, r1 + orrs r0, r2 + strh r0, [r3] + ldrb r0, [r3, 0x1] + movs r2, 0x3D + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r3, 0x1] + ldr r0, [r3] + ldr r1, _08001730 @ =0x00003fff + ands r0, r1 + str r0, [r3] + mov r0, r9 + adds r0, 0x4 + adds r0, r4, r0 + str r7, [r0] + mov r0, r9 + adds r0, 0x8 + adds r0, r4, r0 + str r7, [r0] + ldr r5, _08001734 @ =gUnknown_30008F4 + adds r4, r5 + str r7, [r4] + ldr r0, [r6] + lsls r0, 28 + lsrs r0, 30 + lsls r0, 6 + add r0, r10 + movs r1, 0x1 + strb r1, [r0] +_08001704: + adds r6, 0x4 + movs r0, 0x1 + negs r0, r0 + add r8, r0 + mov r2, r8 + cmp r2, 0 + bne _08001688 +_08001712: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08001724: .4byte gUnknown_30008E8 +_08001728: .4byte gUnknown_3000938 +_0800172C: .4byte 0xfffffc00 +_08001730: .4byte 0x00003fff +_08001734: .4byte gUnknown_30008F4 + thumb_func_end sub_8001658 + + thumb_func_start sub_8001738 +sub_8001738: @ 8001738 + push {r4-r7,lr} + sub sp, 0x10 + adds r7, r0, 0 + ldr r4, [r7] + lsls r0, r4, 30 + lsrs r5, r0, 30 + cmp r5, 0x3 + bhi _080017B8 + lsls r1, r4, 28 + lsrs r1, 30 + lsls r2, r4, 23 + lsrs r2, 27 + lsls r3, r4, 21 + lsrs r3, 30 + lsls r0, r4, 20 + lsrs r0, 31 + str r0, [sp] + lsls r0, r4, 18 + lsrs r0, 30 + str r0, [sp, 0x4] + movs r6, 0 + str r6, [sp, 0x8] + str r6, [sp, 0xC] + adds r0, r5, 0 + bl sub_80010B8 + ldr r4, _080017C0 @ =gUnknown_30008E8 + lsls r5, 4 + adds r3, r5, r4 + ldr r1, [r7] + lsls r1, 8 + lsrs r1, 22 + ldrh r2, [r3] + ldr r0, _080017C4 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3] + ldrb r1, [r3, 0x1] + movs r0, 0x3D + negs r0, r0 + ands r0, r1 + strb r0, [r3, 0x1] + ldr r0, [r3] + ldr r1, _080017C8 @ =0x00003fff + ands r0, r1 + str r0, [r3] + adds r0, r4, 0x4 + adds r0, r5, r0 + str r6, [r0] + adds r0, r4, 0 + adds r0, 0x8 + adds r0, r5, r0 + str r6, [r0] + adds r4, 0xC + adds r5, r4 + str r6, [r5] + ldr r1, _080017CC @ =gUnknown_3000938 + ldr r0, [r7] + lsls r0, 28 + lsrs r0, 30 + lsls r0, 6 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_080017B8: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080017C0: .4byte gUnknown_30008E8 +_080017C4: .4byte 0xfffffc00 +_080017C8: .4byte 0x00003fff +_080017CC: .4byte gUnknown_3000938 + thumb_func_end sub_8001738 + + thumb_func_start sub_80017D0 +sub_80017D0: @ 80017D0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + lsls r3, 16 + lsrs r4, r3, 16 + adds r0, r5, 0 + movs r1, 0x5 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + bne _0800180C + ldr r1, _08001808 @ =gUnknown_30008E8 + lsls r0, r5, 4 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 22 + lsrs r0, 22 + adds r0, r4 + lsls r0, 21 + b _0800181C + .align 2, 0 +_08001808: .4byte gUnknown_30008E8 +_0800180C: + ldr r1, _0800183C @ =gUnknown_30008E8 + lsls r0, r5, 4 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 22 + lsrs r0, 22 + adds r0, r4 + lsls r0, 22 +_0800181C: + lsrs r4, r0, 16 + movs r6, 0x1 + str r6, [sp] + adds r0, r5, 0 + adds r1, r7, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_8001298 + lsls r2, r0, 24 + lsrs r1, r2, 24 + adds r7, r1, 0 + cmp r1, 0xFF + bne _08001844 + ldr r0, _08001840 @ =0x0000ffff + b _08001872 + .align 2, 0 +_0800183C: .4byte gUnknown_30008E8 +_08001840: .4byte 0x0000ffff +_08001844: + ldr r0, _08001880 @ =gUnknown_3000928 + lsrs r2, 29 + lsls r2, 2 + adds r2, r0 + movs r0, 0x1F + ands r0, r1 + adds r1, r6, 0 + lsls r1, r0 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r0, _08001884 @ =gUnknown_3003D8C + ldr r0, [r0] + cmp r0, 0x1 + bne _08001870 + lsrs r1, r4, 5 + mov r0, r8 + lsrs r2, r0, 5 + adds r0, r5, 0 + movs r3, 0x1 + bl sub_80014F0 +_08001870: + adds r0, r7, 0 +_08001872: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08001880: .4byte gUnknown_3000928 +_08001884: .4byte gUnknown_3003D8C + thumb_func_end sub_80017D0 + + thumb_func_start sub_8001888 +sub_8001888: @ 8001888 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 21 + lsrs r3, 16 + movs r4, 0x2 + str r4, [sp] + bl sub_8001298 + lsls r2, r0, 24 + lsrs r3, r2, 24 + cmp r3, 0xFF + beq _080018C8 + ldr r0, _080018C4 @ =gUnknown_3000928 + lsrs r2, 29 + lsls r2, 2 + adds r2, r0 + movs r0, 0x1F + ands r0, r3 + movs r1, 0x1 + lsls r1, r0 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + adds r0, r3, 0 + b _080018CA + .align 2, 0 +_080018C4: .4byte gUnknown_3000928 +_080018C8: + ldr r0, _080018D4 @ =0x0000ffff +_080018CA: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080018D4: .4byte 0x0000ffff + thumb_func_end sub_8001888 + + thumb_func_start sub_80018D8 +sub_80018D8: @ 80018D8 + push {r4-r7,lr} + adds r7, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 16 + lsrs r5, r3, 16 + adds r0, r4, 0 + bl sub_80028EC + cmp r0, 0 + bne _08001924 + ldr r1, _08001928 @ =gUnknown_30008E8 + lsls r0, r4, 4 + adds r0, r1 + ldrb r1, [r0, 0x1] + lsls r1, 26 + lsrs r1, 28 + lsls r1, 5 + lsls r0, r5, 1 + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0xA0 + lsls r0, 19 + adds r1, r0 + adds r0, r7, 0 + adds r2, r6, 0 + movs r3, 0 + bl sub_8000EAC + lsls r3, r0, 24 + asrs r1, r3, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _08001930 +_08001924: + ldr r0, _0800192C @ =0x0000ffff + b _08001954 + .align 2, 0 +_08001928: .4byte gUnknown_30008E8 +_0800192C: .4byte 0x0000ffff +_08001930: + ldr r4, _0800195C @ =gUnknown_3000928 + adds r0, r1, 0 + cmp r1, 0 + bge _0800193A + adds r0, 0x1F +_0800193A: + asrs r0, 5 + lsls r2, r0, 2 + adds r2, r4 + lsls r0, 5 + subs r0, r1, r0 + lsls r0, 24 + asrs r0, 24 + movs r1, 0x1 + lsls r1, r0 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + lsrs r0, r3, 24 +_08001954: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800195C: .4byte gUnknown_3000928 + thumb_func_end sub_80018D8 + + thumb_func_start sub_8001960 +sub_8001960: @ 8001960 + push {r4-r7,lr} + movs r5, 0 + movs r7, 0x1 + negs r7, r7 +_08001968: + adds r0, r5, 0 + cmp r5, 0 + bge _08001970 + adds r0, 0x1F +_08001970: + asrs r0, 5 + lsls r2, r0, 24 + lsls r0, 5 + subs r0, r5, r0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080019A4 @ =gUnknown_3000928 + lsrs r2, 22 + adds r4, r2, r1 + movs r6, 0x1 + lsls r6, r0 + ldr r0, [r4] + ands r0, r6 + cmp r0, 0 + beq _080019AE + lsls r0, r5, 16 + asrs r0, 16 + bl sub_8000FE8 + lsls r0, 24 + asrs r0, 24 + cmp r0, r7 + bne _080019A8 + movs r0, 0x1 + b _080019B6 + .align 2, 0 +_080019A4: .4byte gUnknown_3000928 +_080019A8: + ldr r0, [r4] + bics r0, r6 + str r0, [r4] +_080019AE: + adds r5, 0x1 + cmp r5, 0x7F + ble _08001968 + movs r0, 0 +_080019B6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8001960 + + thumb_func_start sub_80019BC +sub_80019BC: @ 80019BC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8001320 + bl sub_80013D0 + pop {r0} + bx r0 + thumb_func_end sub_80019BC + + thumb_func_start sub_80019D0 +sub_80019D0: @ 80019D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_800139C + bl sub_80013D0 + pop {r0} + bx r0 + thumb_func_end sub_80019D0 + + thumb_func_start sub_80019E4 +sub_80019E4: @ 80019E4 + push {r4,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r3, r2, 24 + subs r0, r1, 0x1 + cmp r0, 0x6 + bhi _08001A9E + lsls r0, 2 + ldr r1, _08001A04 @ =_08001A08 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001A04: .4byte _08001A08 + .align 2, 0 +_08001A08: + .4byte _08001A24 + .4byte _08001A34 + .4byte _08001A46 + .4byte _08001A5C + .4byte _08001A70 + .4byte _08001A88 + .4byte _08001A66 +_08001A24: + movs r0, 0xFF + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r4, 0 + adds r1, r3, 0 + b _08001A7E +_08001A34: + movs r0, 0xFF + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0xFF + adds r2, r3, 0 + b _08001A80 +_08001A46: + movs r0, 0xFF + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0xFF + bl sub_80010B8 + b _08001A9E +_08001A5C: + str r3, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r0, [sp, 0x8] + b _08001A78 +_08001A66: + movs r0, 0xFF + str r0, [sp] + str r3, [sp, 0x4] + str r0, [sp, 0x8] + b _08001A78 +_08001A70: + movs r0, 0xFF + str r0, [sp] + str r0, [sp, 0x4] + str r3, [sp, 0x8] +_08001A78: + str r0, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0xFF +_08001A7E: + movs r2, 0xFF +_08001A80: + movs r3, 0xFF + bl sub_80010B8 + b _08001A9E +_08001A88: + movs r0, 0xFF + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r3, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0xFF + movs r3, 0xFF + bl sub_80010B8 +_08001A9E: + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80019E4 + + thumb_func_start sub_8001AA8 +sub_8001AA8: @ 8001AA8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x9 + bhi _08001B84 + lsls r0, 2 + ldr r1, _08001AC4 @ =_08001AC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001AC4: .4byte _08001AC8 + .align 2, 0 +_08001AC8: + .4byte _08001AF0 + .4byte _08001AFA + .4byte _08001B04 + .4byte _08001B0E + .4byte _08001B22 + .4byte _08001B2C + .4byte _08001B18 + .4byte _08001B36 + .4byte _08001B64 + .4byte _08001B70 +_08001AF0: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80011E4 + b _08001B6A +_08001AFA: + adds r0, r4, 0 + movs r1, 0x3 + bl sub_80011E4 + b _08001B6A +_08001B04: + adds r0, r4, 0 + movs r1, 0x4 + bl sub_80011E4 + b _08001B6A +_08001B0E: + adds r0, r4, 0 + movs r1, 0x5 + bl sub_80011E4 + b _08001B6A +_08001B18: + adds r0, r4, 0 + movs r1, 0x6 + bl sub_80011E4 + b _08001B6A +_08001B22: + adds r0, r4, 0 + movs r1, 0x7 + bl sub_80011E4 + b _08001B6A +_08001B2C: + adds r0, r4, 0 + movs r1, 0x8 + bl sub_80011E4 + b _08001B6A +_08001B36: + adds r0, r4, 0 + bl sub_8002898 + cmp r0, 0 + beq _08001B48 + cmp r0, 0x1 + beq _08001B56 + movs r0, 0 + b _08001B86 +_08001B48: + adds r0, r4, 0 + movs r1, 0 + bl sub_800273C + lsls r0, 27 + lsrs r0, 16 + b _08001B86 +_08001B56: + adds r0, r4, 0 + movs r1, 0 + bl sub_80027AC + lsls r0, 24 + lsrs r0, 16 + b _08001B86 +_08001B64: + adds r0, r4, 0 + bl sub_8002898 +_08001B6A: + lsls r0, 16 + lsrs r0, 16 + b _08001B86 +_08001B70: + ldr r0, _08001B80 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r1, r0 + ldrh r0, [r1] + lsls r0, 22 + lsrs r0, 22 + b _08001B86 + .align 2, 0 +_08001B80: .4byte gUnknown_30008E8 +_08001B84: + ldr r0, _08001B8C @ =0x0000ffff +_08001B86: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08001B8C: .4byte 0x0000ffff + thumb_func_end sub_8001AA8 + + thumb_func_start sub_8001B90 +sub_8001B90: @ 8001B90 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r4, 0 + bl sub_80028EC + cmp r0, 0 + bne _08001BB4 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + bne _08001BBA +_08001BB4: + movs r0, 0x1 + negs r0, r0 + b _08001CC0 +_08001BBA: + cmp r5, 0x1 + beq _08001BD8 + cmp r5, 0x1 + ble _08001BC6 + cmp r5, 0x2 + beq _08001BEC +_08001BC6: + ldr r0, _08001BD4 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x8 + adds r0, r1, r0 + str r6, [r0] + adds r5, r1, 0 + b _08001BFC + .align 2, 0 +_08001BD4: .4byte gUnknown_30008E8 +_08001BD8: + ldr r0, _08001BE8 @ =gUnknown_30008E8 + lsls r2, r4, 4 + adds r0, 0x8 + adds r0, r2, r0 + ldr r1, [r0] + adds r1, r6 + b _08001BF8 + .align 2, 0 +_08001BE8: .4byte gUnknown_30008E8 +_08001BEC: + ldr r0, _08001C14 @ =gUnknown_30008E8 + lsls r2, r4, 4 + adds r0, 0x8 + adds r0, r2, r0 + ldr r1, [r0] + subs r1, r6 +_08001BF8: + str r1, [r0] + adds r5, r2, 0 +_08001BFC: + bl sub_800105C + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0x1 + beq _08001C38 + cmp r4, 0x1 + bgt _08001C18 + cmp r4, 0 + beq _08001C22 + b _08001CB8 + .align 2, 0 +_08001C14: .4byte gUnknown_30008E8 +_08001C18: + cmp r4, 0x2 + beq _08001C4C + cmp r4, 0x3 + beq _08001C84 + b _08001CB8 +_08001C22: + ldr r0, _08001C34 @ =gUnknown_30008E8 + ldr r0, [r0, 0x8] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x10 + bl sub_8000A38 + b _08001CB8 + .align 2, 0 +_08001C34: .4byte gUnknown_30008E8 +_08001C38: + ldr r0, _08001C48 @ =gUnknown_30008E8 + ldr r0, [r0, 0x18] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x14 + bl sub_8000A38 + b _08001CB8 + .align 2, 0 +_08001C48: .4byte gUnknown_30008E8 +_08001C4C: + cmp r0, 0 + bne _08001C64 + ldr r0, _08001C60 @ =gUnknown_30008E8 + ldr r0, [r0, 0x28] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x18 + bl sub_8000A38 + b _08001CB8 + .align 2, 0 +_08001C60: .4byte gUnknown_30008E8 +_08001C64: + ldr r0, _08001C80 @ =gUnknown_30008E8 + ldr r0, [r0, 0x28] + lsrs r1, r0, 16 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x2A + bl sub_8000A38 + movs r0, 0x28 + adds r1, r4, 0 + bl sub_8000A38 + b _08001CB8 + .align 2, 0 +_08001C80: .4byte gUnknown_30008E8 +_08001C84: + cmp r0, 0 + bne _08001C9C + ldr r0, _08001C98 @ =gUnknown_30008E8 + ldr r0, [r0, 0x38] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x1C + bl sub_8000A38 + b _08001CB8 + .align 2, 0 +_08001C98: .4byte gUnknown_30008E8 +_08001C9C: + cmp r0, 0x2 + bne _08001CB8 + ldr r0, _08001CC8 @ =gUnknown_30008E8 + ldr r0, [r0, 0x38] + lsrs r1, r0, 16 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x3A + bl sub_8000A38 + movs r0, 0x38 + adds r1, r4, 0 + bl sub_8000A38 +_08001CB8: + ldr r0, _08001CC8 @ =gUnknown_30008E8 + adds r0, 0x8 + adds r0, r5, r0 + ldr r0, [r0] +_08001CC0: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08001CC8: .4byte gUnknown_30008E8 + thumb_func_end sub_8001B90 + + thumb_func_start sub_8001CCC +sub_8001CCC: @ 8001CCC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sub_80028EC + cmp r0, 0 + bne _08001CFC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + beq _08001CFC + ldr r0, _08001CF8 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x8 + adds r1, r0 + ldr r0, [r1] + b _08001D00 + .align 2, 0 +_08001CF8: .4byte gUnknown_30008E8 +_08001CFC: + movs r0, 0x1 + negs r0, r0 +_08001D00: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8001CCC + + thumb_func_start sub_8001D08 +sub_8001D08: @ 8001D08 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r4, 0 + bl sub_80028EC + cmp r0, 0 + bne _08001D2C + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + bne _08001D32 +_08001D2C: + movs r0, 0x1 + negs r0, r0 + b _08001E38 +_08001D32: + cmp r5, 0x1 + beq _08001D50 + cmp r5, 0x1 + ble _08001D3E + cmp r5, 0x2 + beq _08001D64 +_08001D3E: + ldr r0, _08001D4C @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0xC + adds r0, r1, r0 + str r6, [r0] + adds r5, r1, 0 + b _08001D74 + .align 2, 0 +_08001D4C: .4byte gUnknown_30008E8 +_08001D50: + ldr r0, _08001D60 @ =gUnknown_30008E8 + lsls r2, r4, 4 + adds r0, 0xC + adds r0, r2, r0 + ldr r1, [r0] + adds r1, r6 + b _08001D70 + .align 2, 0 +_08001D60: .4byte gUnknown_30008E8 +_08001D64: + ldr r0, _08001D8C @ =gUnknown_30008E8 + lsls r2, r4, 4 + adds r0, 0xC + adds r0, r2, r0 + ldr r1, [r0] + subs r1, r6 +_08001D70: + str r1, [r0] + adds r5, r2, 0 +_08001D74: + bl sub_800105C + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0x1 + beq _08001DB0 + cmp r4, 0x1 + bgt _08001D90 + cmp r4, 0 + beq _08001D9A + b _08001E30 + .align 2, 0 +_08001D8C: .4byte gUnknown_30008E8 +_08001D90: + cmp r4, 0x2 + beq _08001DC4 + cmp r4, 0x3 + beq _08001DFC + b _08001E30 +_08001D9A: + ldr r0, _08001DAC @ =gUnknown_30008E8 + ldr r0, [r0, 0xC] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x12 + bl sub_8000A38 + b _08001E30 + .align 2, 0 +_08001DAC: .4byte gUnknown_30008E8 +_08001DB0: + ldr r0, _08001DC0 @ =gUnknown_30008E8 + ldr r0, [r0, 0x1C] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x16 + bl sub_8000A38 + b _08001E30 + .align 2, 0 +_08001DC0: .4byte gUnknown_30008E8 +_08001DC4: + cmp r0, 0 + bne _08001DDC + ldr r0, _08001DD8 @ =gUnknown_30008E8 + ldr r0, [r0, 0x2C] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x1A + bl sub_8000A38 + b _08001E30 + .align 2, 0 +_08001DD8: .4byte gUnknown_30008E8 +_08001DDC: + ldr r0, _08001DF8 @ =gUnknown_30008E8 + ldr r0, [r0, 0x2C] + lsrs r1, r0, 16 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x2E + bl sub_8000A38 + movs r0, 0x2C + adds r1, r4, 0 + bl sub_8000A38 + b _08001E30 + .align 2, 0 +_08001DF8: .4byte gUnknown_30008E8 +_08001DFC: + cmp r0, 0 + bne _08001E14 + ldr r0, _08001E10 @ =gUnknown_30008E8 + ldr r0, [r0, 0x3C] + lsls r0, 8 + lsrs r1, r0, 16 + movs r0, 0x1E + bl sub_8000A38 + b _08001E30 + .align 2, 0 +_08001E10: .4byte gUnknown_30008E8 +_08001E14: + cmp r0, 0x2 + bne _08001E30 + ldr r0, _08001E40 @ =gUnknown_30008E8 + ldr r0, [r0, 0x3C] + lsrs r1, r0, 16 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x3E + bl sub_8000A38 + movs r0, 0x3C + adds r1, r4, 0 + bl sub_8000A38 +_08001E30: + ldr r0, _08001E40 @ =gUnknown_30008E8 + adds r0, 0xC + adds r0, r5, r0 + ldr r0, [r0] +_08001E38: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08001E40: .4byte gUnknown_30008E8 + thumb_func_end sub_8001D08 + + thumb_func_start sub_8001E44 +sub_8001E44: @ 8001E44 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sub_80028EC + cmp r0, 0 + bne _08001E74 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + beq _08001E74 + ldr r0, _08001E70 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0xC + adds r1, r0 + ldr r0, [r1] + b _08001E78 + .align 2, 0 +_08001E70: .4byte gUnknown_30008E8 +_08001E74: + movs r0, 0x1 + negs r0, r0 +_08001E78: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8001E44 + + thumb_func_start sub_8001E80 +sub_8001E80: @ 8001E80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + ldr r6, [sp, 0x30] + ldr r7, [sp, 0x34] + lsls r0, 24 + lsrs r0, 24 + lsls r7, 16 + lsrs r7, 16 + lsls r3, 16 + asrs r3, 16 + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + lsls r6, 16 + asrs r6, 16 + str r6, [sp, 0x8] + str r7, [sp, 0xC] + bl sub_8001410 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8001E80 + + thumb_func_start sub_8001EC0 +sub_8001EC0: @ 8001EC0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + movs r0, 0x4C + bl sub_8000AC4 + lsls r0, 16 + lsrs r5, r0, 16 + movs r1, 0xF + movs r3, 0xF + ands r3, r5 + lsrs r2, r0, 20 + ands r2, r1 + movs r0, 0xFF + lsls r0, 8 + ands r5, r0 + cmp r6, 0x6 + bhi _08001F14 + lsls r0, r6, 2 + ldr r1, _08001EF4 @ =_08001EF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001EF4: .4byte _08001EF8 + .align 2, 0 +_08001EF8: + .4byte _08001F14 + .4byte _08001F1C + .4byte _08001F22 + .4byte _08001F34 + .4byte _08001F4A + .4byte _08001F50 + .4byte _08001F62 +_08001F14: + movs r3, 0xF + ands r3, r4 + lsrs r2, r4, 4 + b _08001F76 +_08001F1C: + movs r3, 0xF + ands r3, r4 + b _08001F76 +_08001F22: + lsls r0, r3, 16 + asrs r0, 16 + adds r0, r4 + cmp r0, 0xF + ble _08001F30 + movs r3, 0xF + b _08001F76 +_08001F30: + adds r0, r3, r4 + b _08001F44 +_08001F34: + lsls r0, r3, 16 + asrs r0, 16 + subs r0, r4 + cmp r0, 0 + bge _08001F42 + movs r3, 0 + b _08001F76 +_08001F42: + subs r0, r3, r4 +_08001F44: + lsls r0, 16 + lsrs r3, r0, 16 + b _08001F76 +_08001F4A: + movs r2, 0xF + ands r2, r4 + b _08001F76 +_08001F50: + lsls r0, r2, 16 + asrs r0, 16 + adds r0, r4 + cmp r0, 0xF + ble _08001F5E + movs r2, 0xF + b _08001F76 +_08001F5E: + adds r0, r2, r4 + b _08001F72 +_08001F62: + lsls r0, r2, 16 + asrs r0, 16 + subs r0, r4 + cmp r0, 0 + bge _08001F70 + movs r2, 0 + b _08001F76 +_08001F70: + subs r0, r2, r4 +_08001F72: + lsls r0, 16 + lsrs r2, r0, 16 +_08001F76: + lsls r0, r2, 16 + asrs r0, 12 + movs r1, 0xF0 + ands r0, r1 + orrs r5, r0 + lsls r0, r3, 16 + asrs r0, 16 + movs r1, 0xF + ands r0, r1 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r5, r0, 16 + movs r0, 0x4C + adds r1, r5, 0 + bl sub_8000A38 + lsls r0, r5, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8001EC0 + + thumb_func_start sub_8001FA0 +sub_8001FA0: @ 8001FA0 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80028EC + cmp r0, 0 + bne _08001FCA + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + beq _08001FCA + ldr r0, _08001FD0 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x4 + adds r1, r0 + str r5, [r1] +_08001FCA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08001FD0: .4byte gUnknown_30008E8 + thumb_func_end sub_8001FA0 + + thumb_func_start sub_8001FD4 +sub_8001FD4: @ 8001FD4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80028EC + adds r5, r0, 0 + cmp r5, 0 + bne _08001FFE + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + beq _08001FFE + ldr r0, _08002004 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x4 + adds r1, r0 + str r5, [r1] +_08001FFE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08002004: .4byte gUnknown_30008E8 + thumb_func_end sub_8001FD4 + + thumb_func_start sub_8002008 +sub_8002008: @ 8002008 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sub_80028EC + cmp r0, 0 + bne _08002038 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80011E4 + lsls r0, 16 + cmp r0, 0 + beq _08002038 + ldr r0, _08002034 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + b _0800203A + .align 2, 0 +_08002034: .4byte gUnknown_30008E8 +_08002038: + movs r0, 0 +_0800203A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8002008 + + thumb_func_start sub_8002040 +sub_8002040: @ 8002040 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r10, r1 + lsls r0, 24 + lsrs r4, r0, 24 + mov r9, r4 + lsls r7, r2, 16 + lsrs r6, r7, 16 + lsls r3, 16 + lsrs r5, r3, 16 + mov r8, r5 + adds r0, r4, 0 + bl sub_80028EC + cmp r0, 0 + bne _080020A8 + adds r0, r4, 0 + bl sub_8002900 + cmp r0, 0 + bne _080020A8 + cmp r6, 0 + beq _08002090 + ldr r0, _0800208C @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x4 + adds r1, r0 + lsls r0, r5, 5 + ldr r1, [r1] + adds r1, r0 + lsrs r2, r7, 17 + mov r0, r10 + bl CpuSet + b _080020A8 + .align 2, 0 +_0800208C: .4byte gUnknown_30008E8 +_08002090: + ldr r0, _080020B8 @ =gUnknown_30008E8 + mov r2, r9 + lsls r1, r2, 4 + adds r0, 0x4 + adds r1, r0 + mov r2, r8 + lsls r0, r2, 5 + ldr r1, [r1] + adds r1, r0 + mov r0, r10 + bl LZ77UnCompWram +_080020A8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080020B8: .4byte gUnknown_30008E8 + thumb_func_end sub_8002040 + + thumb_func_start sub_80020BC +sub_80020BC: @ 80020BC + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80028EC + cmp r0, 0 + bne _08002118 + adds r0, r4, 0 + bl sub_8002900 + cmp r0, 0 + bne _08002118 + adds r0, r4, 0 + bl sub_8002898 + cmp r0, 0 + beq _080020EA + cmp r0, 0x1 + beq _080020F6 + movs r2, 0 + b _08002102 +_080020EA: + adds r0, r4, 0 + movs r1, 0 + bl sub_800273C + lsls r0, 27 + b _08002100 +_080020F6: + adds r0, r4, 0 + movs r1, 0 + bl sub_80027AC + lsls r0, 24 +_08002100: + lsrs r2, r0, 16 +_08002102: + ldr r0, _08002120 @ =gUnknown_30008E8 + lsls r1, r4, 4 + adds r0, 0x4 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r3, 0 + bl sub_8001298 +_08002118: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08002120: .4byte gUnknown_30008E8 + thumb_func_end sub_80020BC + + thumb_func_start sub_8002124 +sub_8002124: @ 8002124 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r1 + ldr r1, [sp, 0x24] + ldr r4, [sp, 0x28] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r4, 24 + lsrs r6, r4, 24 + adds r0, r5, 0 + bl sub_80028EC + cmp r0, 0 + bne _08002214 + adds r0, r5, 0 + bl sub_8002900 + cmp r0, 0 + bne _08002214 + adds r0, r5, 0 + bl sub_8002898 + cmp r0, 0 + beq _08002172 + cmp r0, 0x1 + beq _080021C0 + b _08002214 +_08002172: + mov r4, r8 + adds r3, r7, 0 + adds r0, r3, r6 + cmp r3, r0 + bge _08002214 + mov r12, r0 + lsls r1, r5, 4 + ldr r0, _080021BC @ =gUnknown_30008EC + adds r1, r0 + mov r8, r1 +_08002186: + mov r2, r10 + mov r1, r9 + adds r0, r2, r1 + adds r7, r3, 0x1 + cmp r2, r0 + bge _080021B0 + mov r1, r8 + ldr r6, [r1] + lsls r5, r3, 5 + adds r3, r0, 0 +_0800219A: + adds r0, r5, r2 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r4] + strh r1, [r0] + adds r4, 0x2 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r3 + blt _0800219A +_080021B0: + lsls r0, r7, 16 + lsrs r3, r0, 16 + cmp r3, r12 + blt _08002186 + b _08002214 + .align 2, 0 +_080021BC: .4byte gUnknown_30008EC +_080021C0: + mov r4, r8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80027AC + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + adds r3, r7, 0 + adds r0, r3, r6 + cmp r3, r0 + bge _08002214 + mov r12, r0 + lsls r5, 4 + mov r8, r5 +_080021DE: + mov r2, r10 + mov r1, r9 + adds r0, r2, r1 + adds r7, r3, 0x1 + cmp r2, r0 + bge _0800220C + ldr r6, _08002224 @ =gUnknown_30008EC + add r6, r8 + ldr r1, [sp] + adds r5, r3, 0 + muls r5, r1 + adds r3, r0, 0 +_080021F6: + ldr r1, [r6] + adds r0, r5, r2 + adds r1, r0 + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x1 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r3 + blt _080021F6 +_0800220C: + lsls r0, r7, 16 + lsrs r3, r0, 16 + cmp r3, r12 + blt _080021DE +_08002214: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002224: .4byte gUnknown_30008EC + thumb_func_end sub_8002124 + + thumb_func_start sub_8002228 +sub_8002228: @ 8002228 + push {r4-r6,lr} + sub sp, 0x24 + ldr r4, [sp, 0x34] + ldr r5, [sp, 0x38] + ldr r6, [sp, 0x3C] + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + str r4, [sp] + str r5, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + str r4, [sp, 0x10] + str r5, [sp, 0x14] + str r6, [sp, 0x18] + movs r2, 0 + str r2, [sp, 0x1C] + str r2, [sp, 0x20] + movs r3, 0 + bl sub_800226C + add sp, 0x24 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8002228 + + thumb_func_start sub_800226C +sub_800226C: @ 800226C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + str r1, [sp, 0x8] + ldr r1, [sp, 0x60] + ldr r4, [sp, 0x68] + ldr r5, [sp, 0x6C] + ldr r6, [sp, 0x70] + ldr r7, [sp, 0x74] + mov r8, r7 + ldr r7, [sp, 0x78] + mov r9, r7 + ldr r7, [sp, 0x7C] + mov r10, r7 + ldr r7, [sp, 0x80] + mov r12, r7 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0xC] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x10] + lsls r1, 24 + lsrs r7, r1, 24 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x14] + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0x18] + mov r0, r8 + lsls r0, 24 + lsrs r4, r0, 24 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x1C] + mov r2, r10 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x20] + mov r0, r12 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x24] + ldr r0, [sp, 0x4] + bl sub_80028EC + cmp r0, 0 + beq _080022E2 + b _0800243E +_080022E2: + ldr r0, [sp, 0x4] + bl sub_8002900 + cmp r0, 0 + beq _080022EE + b _0800243E +_080022EE: + ldr r0, [sp, 0x4] + movs r1, 0x4 + bl sub_80011E4 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x30] + ldr r0, [sp, 0x4] + movs r1, 0x1 + bl sub_800273C + lsls r0, 21 + lsrs r0, 16 + str r0, [sp, 0x28] + ldr r0, [sp, 0x4] + movs r1, 0x2 + bl sub_800273C + lsls r0, 21 + lsrs r0, 16 + str r0, [sp, 0x2C] + ldr r0, [sp, 0x4] + bl sub_8002898 + cmp r0, 0 + beq _08002328 + cmp r0, 0x1 + beq _080023C4 + b _0800243E +_08002328: + ldr r1, [sp, 0x10] + adds r0, r1, 0 + muls r0, r7 + ldr r2, [sp, 0xC] + adds r0, r2 + lsls r0, 1 + ldr r1, [sp, 0x8] + adds r6, r1, r0 + adds r0, r5, r4 + cmp r5, r0 + blt _08002340 + b _0800243E +_08002340: + ldr r2, [sp, 0x18] + subs r2, r7, r2 + str r2, [sp, 0x34] + str r0, [sp, 0x38] +_08002348: + ldr r4, [sp, 0x14] + ldr r7, [sp, 0x18] + adds r0, r4, r7 + adds r1, r5, 0x1 + str r1, [sp, 0x3C] + cmp r4, r0 + bge _080023AA + ldr r2, [sp, 0x4] + lsls r0, r2, 4 + ldr r1, _080023C0 @ =gUnknown_30008EC + adds r0, r1 + mov r10, r0 + ldr r7, [sp, 0x20] + lsls r7, 16 + mov r9, r7 + ldr r1, [sp, 0x24] + lsls r0, r1, 16 + asrs r0, 16 + mov r8, r0 +_0800236E: + ldr r2, [sp, 0x2C] + str r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + ldr r2, [sp, 0x30] + ldr r3, [sp, 0x28] + bl sub_8002804 + lsls r0, 16 + lsrs r0, 15 + mov r7, r10 + ldr r1, [r7] + adds r1, r0 + mov r0, r8 + str r0, [sp] + adds r0, r6, 0 + ldr r2, [sp, 0x1C] + mov r7, r9 + asrs r3, r7, 16 + bl sub_800283C + adds r6, 0x2 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r1, [sp, 0x14] + ldr r2, [sp, 0x18] + adds r0, r1, r2 + cmp r4, r0 + blt _0800236E +_080023AA: + ldr r5, [sp, 0x34] + lsls r0, r5, 1 + adds r6, r0 + ldr r7, [sp, 0x3C] + lsls r0, r7, 16 + lsrs r5, r0, 16 + ldr r0, [sp, 0x38] + cmp r5, r0 + blt _08002348 + b _0800243E + .align 2, 0 +_080023C0: .4byte gUnknown_30008EC +_080023C4: + ldr r1, [sp, 0x10] + adds r0, r1, 0 + muls r0, r7 + ldr r2, [sp, 0xC] + adds r0, r2 + ldr r1, [sp, 0x8] + adds r6, r1, r0 + ldr r0, [sp, 0x4] + movs r1, 0x1 + bl sub_80027AC + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + adds r0, r5, r4 + cmp r5, r0 + bge _0800243E + ldr r2, [sp, 0x18] + subs r2, r7, r2 + str r2, [sp, 0x34] + str r0, [sp, 0x38] + ldr r7, _08002450 @ =gUnknown_30008EC + mov r10, r7 + ldr r0, [sp, 0x4] + lsls r0, 4 + mov r8, r0 +_080023F8: + ldr r4, [sp, 0x14] + ldr r1, [sp, 0x18] + adds r0, r4, r1 + adds r2, r5, 0x1 + str r2, [sp, 0x3C] + cmp r4, r0 + bge _0800242E + mov r3, r8 + add r3, r10 + mov r7, r9 + muls r7, r5 + mov r12, r7 + adds r2, r0, 0 +_08002412: + ldr r1, [r3] + mov r5, r12 + adds r0, r5, r4 + adds r1, r0 + ldrb r0, [r6] + ldr r7, [sp, 0x20] + adds r0, r7 + strb r0, [r1] + adds r6, 0x1 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r2 + blt _08002412 +_0800242E: + ldr r0, [sp, 0x34] + adds r6, r0 + ldr r1, [sp, 0x3C] + lsls r0, r1, 16 + lsrs r5, r0, 16 + ldr r2, [sp, 0x38] + cmp r5, r2 + blt _080023F8 +_0800243E: + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002450: .4byte gUnknown_30008EC + thumb_func_end sub_800226C + + thumb_func_start sub_8002454 +sub_8002454: @ 8002454 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + bl sub_80028EC + cmp r0, 0 + bne _08002540 + adds r0, r6, 0 + bl sub_8002900 + cmp r0, 0 + bne _08002540 + adds r0, r6, 0 + bl sub_8002898 + cmp r0, 0 + beq _080024A6 + cmp r0, 0x1 + beq _080024F0 + b _08002540 +_080024A6: + adds r3, r7, 0 + adds r5, r3, r5 + cmp r3, r5 + bge _08002540 + adds r7, r5, 0 + lsls r1, r6, 4 + ldr r0, _080024EC @ =gUnknown_30008EC + adds r1, r0 + mov r12, r1 +_080024B8: + mov r2, r10 + mov r1, r9 + adds r0, r2, r1 + adds r6, r3, 0x1 + cmp r2, r0 + bge _080024E0 + mov r5, r12 + ldr r4, [r5] + lsls r3, 5 + adds r1, r0, 0 +_080024CC: + adds r0, r3, r2 + lsls r0, 1 + adds r0, r4 + mov r5, r8 + strh r5, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r1 + blt _080024CC +_080024E0: + lsls r0, r6, 16 + lsrs r3, r0, 16 + cmp r3, r7 + blt _080024B8 + b _08002540 + .align 2, 0 +_080024EC: .4byte gUnknown_30008EC +_080024F0: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_80027AC + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + adds r3, r7, 0 + adds r5, r3, r5 + cmp r3, r5 + bge _08002540 + adds r7, r5, 0 + lsls r6, 4 + mov r12, r6 +_0800250C: + mov r2, r10 + mov r1, r9 + adds r0, r2, r1 + adds r6, r3, 0x1 + cmp r2, r0 + bge _08002538 + ldr r5, _08002550 @ =gUnknown_30008EC + add r5, r12 + ldr r1, [sp] + adds r4, r3, 0 + muls r4, r1 + adds r3, r0, 0 +_08002524: + ldr r0, [r5] + adds r1, r4, r2 + adds r0, r1 + mov r1, r8 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r3 + blt _08002524 +_08002538: + lsls r0, r6, 16 + lsrs r3, r0, 16 + cmp r3, r7 + blt _0800250C +_08002540: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002550: .4byte gUnknown_30008EC + thumb_func_end sub_8002454 + + thumb_func_start sub_8002554 +sub_8002554: @ 8002554 + push {r4-r6,lr} + sub sp, 0x10 + ldr r4, [sp, 0x20] + ldr r5, [sp, 0x24] + ldr r6, [sp, 0x28] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + str r4, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r4, 0 + str r4, [sp, 0xC] + bl sub_8002590 + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8002554 + + thumb_func_start sub_8002590 +sub_8002590: @ 8002590 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + ldr r4, [sp, 0x4C] + ldr r5, [sp, 0x50] + ldr r6, [sp, 0x54] + ldr r7, [sp, 0x58] + mov r8, r7 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + add r0, sp, 0x4 + strh r1, [r0] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x8] + lsls r3, 24 + lsrs r7, r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + lsls r5, 24 + lsrs r4, r5, 24 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0xC] + mov r0, r8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x10] + mov r0, r9 + bl sub_80028EC + cmp r0, 0 + beq _080025DE + b _08002724 +_080025DE: + mov r0, r9 + bl sub_8002900 + cmp r0, 0 + beq _080025EA + b _08002724 +_080025EA: + mov r0, r9 + movs r1, 0x4 + bl sub_80011E4 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x1C] + mov r0, r9 + movs r1, 0x1 + bl sub_800273C + lsls r0, 21 + lsrs r0, 16 + str r0, [sp, 0x14] + mov r0, r9 + movs r1, 0x2 + bl sub_800273C + lsls r0, 21 + lsrs r0, 16 + str r0, [sp, 0x18] + mov r0, r9 + bl sub_8002898 + cmp r0, 0 + beq _08002624 + cmp r0, 0x1 + beq _080026AC + b _08002724 +_08002624: + adds r5, r7, 0 + adds r0, r5, r4 + cmp r5, r0 + bge _08002724 + str r0, [sp, 0x24] + add r7, sp, 0x4 +_08002630: + ldr r4, [sp, 0x8] + mov r1, r10 + adds r0, r4, r1 + adds r2, r5, 0x1 + mov r8, r2 + cmp r4, r0 + bge _08002694 + mov r3, r9 + lsls r1, r3, 4 + ldr r0, _080026A4 @ =gUnknown_30008EC + adds r6, r1, r0 +_08002646: + ldr r0, [sp, 0x18] + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + ldr r2, [sp, 0x1C] + ldr r3, [sp, 0x14] + bl sub_8002804 + lsls r0, 16 + lsrs r0, 15 + ldr r1, [r6] + adds r1, r0 + movs r0, 0 + str r0, [sp] + add r0, sp, 0x4 + ldr r2, [sp, 0xC] + movs r3, 0 + bl sub_800283C + ldrh r0, [r7] + movs r2, 0xFC + lsls r2, 8 + adds r1, r2, 0 + adds r2, r0, 0 + ands r2, r1 + ldr r3, [sp, 0x10] + adds r0, r3 + ldr r3, _080026A8 @ =0x000003ff + adds r1, r3, 0 + ands r0, r1 + adds r2, r0 + strh r2, [r7] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, [sp, 0x8] + add r0, r10 + cmp r4, r0 + blt _08002646 +_08002694: + mov r1, r8 + lsls r0, r1, 16 + lsrs r5, r0, 16 + ldr r2, [sp, 0x24] + cmp r5, r2 + blt _08002630 + b _08002724 + .align 2, 0 +_080026A4: .4byte gUnknown_30008EC +_080026A8: .4byte 0x000003ff +_080026AC: + mov r0, r9 + movs r1, 0x1 + bl sub_80027AC + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x20] + adds r5, r7, 0 + adds r0, r5, r4 + cmp r5, r0 + bge _08002724 + str r0, [sp, 0x24] + mov r3, r9 + lsls r3, 4 + mov r12, r3 +_080026CA: + ldr r4, [sp, 0x8] + mov r7, r10 + adds r0, r4, r7 + adds r1, r5, 0x1 + mov r8, r1 + cmp r4, r0 + bge _08002718 + ldr r2, _08002734 @ =gUnknown_30008EC + add r2, r12 + str r2, [sp, 0x28] + ldr r7, [sp, 0x20] + adds r3, r5, 0 + muls r3, r7 + add r2, sp, 0x4 + movs r1, 0xFC + lsls r1, 8 + mov r9, r1 + ldr r7, _08002738 @ =0x000003ff + adds r5, r7, 0 + adds r6, r0, 0 +_080026F2: + ldr r0, [sp, 0x28] + ldr r1, [r0] + adds r0, r3, r4 + adds r1, r0 + ldrh r0, [r2] + strb r0, [r1] + ldrh r0, [r2] + mov r1, r9 + ands r1, r0 + ldr r7, [sp, 0x10] + adds r0, r7 + ands r0, r5 + adds r1, r0 + strh r1, [r2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r6 + blt _080026F2 +_08002718: + mov r1, r8 + lsls r0, r1, 16 + lsrs r5, r0, 16 + ldr r2, [sp, 0x24] + cmp r5, r2 + blt _080026CA +_08002724: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002734: .4byte gUnknown_30008EC +_08002738: .4byte 0x000003ff + thumb_func_end sub_8002590 + + thumb_func_start sub_800273C +sub_800273C: @ 800273C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + movs r1, 0x4 + bl sub_80011E4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0x1 + beq _0800277C + cmp r4, 0x1 + bgt _08002760 + cmp r4, 0 + beq _08002766 + b _080027A2 +_08002760: + cmp r5, 0x2 + beq _0800278E + b _080027A2 +_08002766: + cmp r0, 0x2 + bgt _08002774 + cmp r0, 0x1 + bge _0800279E +_0800276E: + cmp r0, 0 + beq _08002796 + b _080027A2 +_08002774: + cmp r0, 0x3 + bne _080027A2 + movs r0, 0x4 + b _080027A4 +_0800277C: + cmp r0, 0x1 + beq _0800279E + cmp r0, 0x1 + ble _0800276E + cmp r0, 0x2 + beq _08002796 + cmp r0, 0x3 + bne _080027A2 + b _0800279E +_0800278E: + cmp r0, 0 + blt _080027A2 + cmp r0, 0x1 + bgt _0800279A +_08002796: + movs r0, 0x1 + b _080027A4 +_0800279A: + cmp r0, 0x3 + bgt _080027A2 +_0800279E: + movs r0, 0x2 + b _080027A4 +_080027A2: + movs r0, 0 +_080027A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800273C + + thumb_func_start sub_80027AC +sub_80027AC: @ 80027AC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + movs r1, 0x4 + bl sub_80011E4 + lsls r0, 24 + lsrs r1, r0, 24 + adds r0, r1, 0 + cmp r4, 0 + beq _080027D4 + cmp r4, 0 + blt _080027FC + cmp r4, 0x2 + bgt _080027FC + movs r0, 0x10 + lsls r0, r1 + b _080027FE +_080027D4: + cmp r1, 0x1 + beq _080027F0 + cmp r1, 0x1 + bgt _080027E2 + cmp r1, 0 + beq _080027EC + b _080027FC +_080027E2: + cmp r0, 0x2 + beq _080027F4 + cmp r0, 0x3 + beq _080027F8 + b _080027FC +_080027EC: + movs r0, 0x1 + b _080027FE +_080027F0: + movs r0, 0x4 + b _080027FE +_080027F4: + movs r0, 0x10 + b _080027FE +_080027F8: + movs r0, 0x40 + b _080027FE +_080027FC: + movs r0, 0 +_080027FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80027AC + + thumb_func_start sub_8002804 +sub_8002804: @ 8002804 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [sp, 0x8] + subs r3, 0x1 + ands r4, r3 + subs r0, 0x1 + ands r1, r0 + cmp r2, 0x1 + beq _08002828 + cmp r2, 0x1 + ble _08002830 + cmp r2, 0x2 + beq _08002830 + cmp r2, 0x3 + bne _08002830 + cmp r1, 0x1F + ble _08002828 + adds r1, 0x20 +_08002828: + cmp r4, 0x1F + ble _08002830 + subs r4, 0x20 + adds r1, 0x20 +_08002830: + lsls r0, r1, 5 + adds r0, r4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8002804 + + thumb_func_start sub_800283C +sub_800283C: @ 800283C + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + ldr r5, [sp, 0x10] + cmp r2, 0x10 + beq _08002864 + cmp r2, 0x10 + bgt _08002884 + cmp r2, 0 + blt _08002884 + ldrh r0, [r4] + adds r0, r3 + ldr r3, _08002860 @ =0x00000fff + adds r1, r3, 0 + ands r0, r1 + adds r1, r2, r5 + lsls r1, 12 + b _0800288A + .align 2, 0 +_08002860: .4byte 0x00000fff +_08002864: + ldrh r1, [r6] + movs r0, 0xFC + lsls r0, 8 + ands r1, r0 + lsls r2, r5, 12 + adds r2, r1, r2 + ldrh r0, [r4] + adds r0, r3 + ldr r3, _08002880 @ =0x000003ff + adds r1, r3, 0 + ands r0, r1 + orrs r0, r2 + b _0800288C + .align 2, 0 +_08002880: .4byte 0x000003ff +_08002884: + ldrh r0, [r4] + adds r0, r3 + lsls r1, r5, 12 +_0800288A: + adds r0, r1 +_0800288C: + lsls r0, 16 + lsrs r1, r0, 16 + strh r1, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_800283C + + thumb_func_start sub_8002898 +sub_8002898: @ 8002898 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_800105C + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0x2 + beq _080028C6 + cmp r4, 0x2 + ble _080028B6 + cmp r4, 0x3 + beq _080028D6 + b _080028DE +_080028B6: + cmp r5, 0 + blt _080028DE + cmp r0, 0x1 + bgt _080028DE + cmp r0, 0 + blt _080028DE +_080028C2: + movs r0, 0 + b _080028E0 +_080028C6: + cmp r0, 0 + beq _080028C2 + cmp r0, 0 + blt _080028DE + cmp r0, 0x2 + bgt _080028DE +_080028D2: + movs r0, 0x1 + b _080028E0 +_080028D6: + cmp r0, 0 + beq _080028C2 + cmp r0, 0x2 + beq _080028D2 +_080028DE: + ldr r0, _080028E8 @ =0x0000ffff +_080028E0: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080028E8: .4byte 0x0000ffff + thumb_func_end sub_8002898 + + thumb_func_start sub_80028EC +sub_80028EC: @ 80028EC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _080028FA + movs r0, 0 + b _080028FC +_080028FA: + movs r0, 0x1 +_080028FC: + pop {r1} + bx r1 + thumb_func_end sub_80028EC + + thumb_func_start sub_8002900 +sub_8002900: @ 8002900 + push {lr} + lsls r0, 24 + ldr r1, _0800291C @ =gUnknown_30008E8 + lsrs r0, 20 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + ldr r0, _08002920 @ =0x03008000 + cmp r1, r0 + bhi _08002924 + cmp r1, 0 + beq _08002924 + movs r0, 0 + b _08002926 + .align 2, 0 +_0800291C: .4byte gUnknown_30008E8 +_08002920: .4byte 0x03008000 +_08002924: + movs r0, 0x1 +_08002926: + pop {r1} + bx r1 + thumb_func_end sub_8002900 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/bike.s b/asm/bike.s new file mode 100644 index 000000000..141da61eb --- /dev/null +++ b/asm/bike.s @@ -0,0 +1,897 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BD09C +sub_80BD09C: @ 80BD09C + push {r4,lr} + sub sp, 0x4 + mov r3, sp + strb r0, [r3] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r4, _080BD0D0 @ =gUnknown_83E7CFC + mov r0, sp + bl sub_80BD0D4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + mov r1, sp + ldrb r1, [r1] + ldr r2, [r0] + adds r0, r1, 0 + bl _call_via_r2 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BD0D0: .4byte gUnknown_83E7CFC + thumb_func_end sub_80BD09C + + thumb_func_start sub_80BD0D4 +sub_80BD0D4: @ 80BD0D4 + push {r4,lr} + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r4, _080BD0F8 @ =gUnknown_83E7D10 + ldr r3, _080BD0FC @ =gUnknown_2037078 + ldrb r3, [r3, 0x8] + lsls r3, 2 + adds r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080BD0F8: .4byte gUnknown_83E7D10 +_080BD0FC: .4byte gUnknown_2037078 + thumb_func_end sub_80BD0D4 + + thumb_func_start sub_80BD100 +sub_80BD100: @ 80BD100 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + ldr r5, _080BD15C @ =gUnknown_2037078 + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080BD160 @ =gUnknown_2036E38 + adds r4, r0 + bl sub_805C6E4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0 + mov r8, r0 + mov r0, r8 + strb r0, [r5, 0xA] + ldrb r0, [r4, 0x1E] + bl sub_805A1DC + cmp r0, 0x1 + bne _080BD176 + ldr r0, _080BD164 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r2, 0x2 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080BD168 + strb r2, [r5, 0x8] + strb r2, [r5, 0x2] + ldrb r0, [r6] + cmp r0, 0x1 + bhi _080BD172 + movs r0, 0x3 + b _080BD1B6 + .align 2, 0 +_080BD15C: .4byte gUnknown_2037078 +_080BD160: .4byte gUnknown_2036E38 +_080BD164: .4byte gUnknown_30030F0 +_080BD168: + ldrb r0, [r6] + cmp r0, 0 + beq _080BD17E + strb r2, [r5, 0x8] + strb r2, [r5, 0x2] +_080BD172: + movs r0, 0x4 + b _080BD1B6 +_080BD176: + ldrb r1, [r6] + adds r0, r1, 0 + cmp r0, 0 + bne _080BD18C +_080BD17E: + strb r7, [r6] + ldr r1, _080BD188 @ =gUnknown_2037078 + movs r0, 0 + b _080BD1B4 + .align 2, 0 +_080BD188: .4byte gUnknown_2037078 +_080BD18C: + cmp r0, r7 + beq _080BD1B0 + ldrb r0, [r5, 0x2] + cmp r0, 0x2 + beq _080BD1B0 + movs r0, 0x1 + strb r0, [r5, 0x8] + strb r1, [r5, 0x9] + mov r0, r8 + strb r0, [r5, 0x2] + adds r0, r6, 0 + mov r1, r10 + mov r2, r9 + bl sub_80BD0D4 + lsls r0, 24 + lsrs r0, 24 + b _080BD1B6 +_080BD1B0: + ldr r1, _080BD1C4 @ =gUnknown_2037078 + movs r0, 0x2 +_080BD1B4: + strb r0, [r1, 0x2] +_080BD1B6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080BD1C4: .4byte gUnknown_2037078 + thumb_func_end sub_80BD100 + + thumb_func_start sub_80BD1C8 +sub_80BD1C8: @ 80BD1C8 + push {lr} + ldr r2, _080BD1E4 @ =gUnknown_2037078 + ldrb r1, [r2, 0x9] + strb r1, [r0] + movs r1, 0 + movs r0, 0x1 + strb r0, [r2, 0x2] + strb r1, [r2, 0x8] + bl sub_80BD664 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_080BD1E4: .4byte gUnknown_2037078 + thumb_func_end sub_80BD1C8 + + thumb_func_start sub_80BD1E8 +sub_80BD1E8: @ 80BD1E8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + bl sub_805C6E4 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r5, 0 + ldr r4, _080BD240 @ =gUnknown_2037078 + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BD244 @ =gUnknown_2036E38 + adds r0, r1 + ldrb r0, [r0, 0x1E] + bl sub_805A1DC + adds r2, r0, 0 + cmp r2, 0x1 + bne _080BD25A + ldrb r1, [r6] + cmp r1, r5 + beq _080BD248 + movs r0, 0 + strb r2, [r4, 0x8] + strb r1, [r4, 0x9] + strb r0, [r4, 0x2] + adds r0, r6, 0 + mov r1, r9 + mov r2, r8 + bl sub_80BD0D4 + lsls r0, 24 + lsrs r0, 24 + b _080BD270 + .align 2, 0 +_080BD240: .4byte gUnknown_2037078 +_080BD244: .4byte gUnknown_2036E38 +_080BD248: + movs r0, 0x2 + strb r0, [r4, 0x2] + strb r0, [r4, 0x8] + cmp r5, 0x1 + bhi _080BD256 + movs r0, 0x3 + b _080BD270 +_080BD256: + movs r0, 0x4 + b _080BD270 +_080BD25A: + movs r0, 0 + strb r0, [r4, 0x8] + ldrb r0, [r6] + cmp r0, 0 + beq _080BD26A + movs r0, 0x2 + strb r0, [r4, 0x2] + b _080BD270 +_080BD26A: + strb r7, [r6] + strb r0, [r4, 0x2] + movs r0, 0 +_080BD270: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80BD1E8 + + thumb_func_start sub_80BD27C +sub_80BD27C: @ 80BD27C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_805C1F4 + pop {r0} + bx r0 + thumb_func_end sub_80BD27C + + thumb_func_start sub_80BD28C +sub_80BD28C: @ 80BD28C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BD2C0 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BD2C4 @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrb r1, [r5, 0x1E] + adds r0, r4, 0 + bl sub_80BD4F0 + lsls r0, 24 + cmp r0, 0 + bne _080BD2B2 + ldrb r0, [r5, 0x18] + lsrs r4, r0, 4 +_080BD2B2: + adds r0, r4, 0 + bl sub_805C1F4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BD2C0: .4byte gUnknown_2037078 +_080BD2C4: .4byte gUnknown_2036E38 + thumb_func_end sub_80BD28C + + thumb_func_start sub_80BD2C8 +sub_80BD2C8: @ 80BD2C8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + ldr r0, _080BD2F8 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BD2FC @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrb r1, [r5, 0x1E] + adds r0, r4, 0 + bl sub_80BD4F0 + lsls r0, 24 + cmp r0, 0 + bne _080BD300 + ldrb r0, [r5, 0x18] + lsrs r0, 4 + bl sub_80BD27C + b _080BD350 + .align 2, 0 +_080BD2F8: .4byte gUnknown_2037078 +_080BD2FC: .4byte gUnknown_2036E38 +_080BD300: + adds r0, r4, 0 + bl sub_80BD3A0 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xFF + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0xA + bhi _080BD334 + cmp r1, 0x6 + bne _080BD322 + adds r0, r4, 0 + bl sub_805C23C + b _080BD350 +_080BD322: + subs r0, r1, 0x5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _080BD350 + adds r0, r4, 0 + bl sub_805C1AC + b _080BD350 +_080BD334: + cmp r1, 0xE + beq _080BD342 + adds r0, r4, 0 + bl sub_805BAAC + cmp r0, 0 + beq _080BD34A +_080BD342: + adds r0, r4, 0 + bl sub_805C11C + b _080BD350 +_080BD34A: + adds r0, r6, 0 + bl sub_805C14C +_080BD350: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80BD2C8 + + thumb_func_start sub_80BD358 +sub_80BD358: @ 80BD358 + push {lr} + movs r0, 0x1 + bl sub_80BD3A0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080BD370 + movs r0, 0x1 + bl sub_805C164 + b _080BD37A +_080BD370: + cmp r0, 0x6 + bne _080BD37A + movs r0, 0x1 + bl sub_805C23C +_080BD37A: + pop {r0} + bx r0 + thumb_func_end sub_80BD358 + + thumb_func_start sub_80BD380 +sub_80BD380: @ 80BD380 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80BD3A0 + lsls r0, 24 + cmp r0, 0 + bne _080BD398 + adds r0, r4, 0 + bl sub_805C104 +_080BD398: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80BD380 + + thumb_func_start sub_80BD3A0 +sub_80BD3A0: @ 80BD3A0 + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080BD404 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080BD408 @ =gUnknown_2036E38 + adds r4, r0 + ldrh r1, [r4, 0x10] + add r0, sp, 0x4 + strh r1, [r0] + ldrh r0, [r4, 0x12] + mov r5, sp + adds r5, 0x6 + strh r0, [r5] + adds r0, r6, 0 + add r1, sp, 0x4 + adds r2, r5, 0 + bl sub_8063A20 + add r0, sp, 0x4 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + add r1, sp, 0x4 + movs r3, 0 + ldrsh r1, [r1, r3] + movs r3, 0 + ldrsh r2, [r5, r3] + str r0, [sp] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80BD40C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080BD404: .4byte gUnknown_2037078 +_080BD408: .4byte gUnknown_2036E38 + thumb_func_end sub_80BD3A0 + + thumb_func_start sub_80BD40C +sub_80BD40C: @ 80BD40C + push {r4-r6,lr} + sub sp, 0x4 + ldr r4, [sp, 0x14] + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r5, r4, 24 + adds r6, r5, 0 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + str r5, [sp] + bl sub_805BBA8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bhi _080BD456 + adds r0, r5, 0 + bl sub_805A008 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BD444 + movs r0, 0xE + b _080BD458 +_080BD444: + cmp r4, 0 + bne _080BD456 + adds r0, r6, 0 + bl sub_80BD4B8 + lsls r0, 24 + cmp r0, 0 + beq _080BD456 + movs r4, 0x2 +_080BD456: + adds r0, r4, 0 +_080BD458: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80BD40C + + thumb_func_start sub_80BD460 +sub_80BD460: @ 80BD460 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80BD4B8 + lsls r0, 24 + cmp r0, 0 + bne _080BD478 + ldr r0, _080BD47C @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x8 + bne _080BD480 +_080BD478: + movs r0, 0x1 + b _080BD482 + .align 2, 0 +_080BD47C: .4byte gUnknown_2036DFC +_080BD480: + movs r0, 0 +_080BD482: + pop {r1} + bx r1 + thumb_func_end sub_80BD460 + + thumb_func_start sub_80BD488 +sub_80BD488: @ 80BD488 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080BD4AC @ =gUnknown_2036DFC + ldrb r1, [r0, 0x19] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BD4A8 + adds r0, r2, 0 + bl sub_80BD4B8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BD4B0 +_080BD4A8: + movs r0, 0x1 + b _080BD4B2 + .align 2, 0 +_080BD4AC: .4byte gUnknown_2036DFC +_080BD4B0: + movs r0, 0 +_080BD4B2: + pop {r1} + bx r1 + thumb_func_end sub_80BD488 + + thumb_func_start sub_80BD4B8 +sub_80BD4B8: @ 80BD4B8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_805A234 + lsls r0, 24 + cmp r0, 0 + bne _080BD4E2 + adds r0, r4, 0 + bl sub_805A118 + lsls r0, 24 + cmp r0, 0 + beq _080BD4E6 + bl sub_805C700 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _080BD4E6 +_080BD4E2: + movs r0, 0x1 + b _080BD4E8 +_080BD4E6: + movs r0, 0 +_080BD4E8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BD4B8 + + thumb_func_start sub_80BD4F0 +sub_80BD4F0: @ 80BD4F0 + push {r4,r5,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + movs r1, 0xFD + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080BD51A + adds r0, r4, 0 + bl sub_805A210 + lsls r0, 24 + cmp r0, 0 + bne _080BD532 + adds r0, r4, 0 + bl sub_805A218 + b _080BD52C +_080BD51A: + adds r0, r5, 0 + bl sub_805A214 + lsls r0, 24 + cmp r0, 0 + bne _080BD532 + adds r0, r5, 0 + bl sub_805A21C +_080BD52C: + lsls r0, 24 + cmp r0, 0 + beq _080BD536 +_080BD532: + movs r0, 0 + b _080BD538 +_080BD536: + movs r0, 0x1 +_080BD538: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80BD4F0 + + thumb_func_start sub_80BD540 +sub_80BD540: @ 80BD540 + push {r4,lr} + sub sp, 0x4 + ldr r0, _080BD57C @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + bne _080BD580 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80BD4B8 + lsls r0, 24 + cmp r0, 0 + bne _080BD580 + movs r0, 0 + b _080BD582 + .align 2, 0 +_080BD57C: .4byte gUnknown_2037078 +_080BD580: + movs r0, 0x1 +_080BD582: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BD540 + + thumb_func_start sub_80BD58C +sub_80BD58C: @ 80BD58C + push {lr} + movs r0, 0x4 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _080BD5C0 + ldr r2, _080BD5B8 @ =gUnknown_2036E38 + ldr r0, _080BD5BC @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1E] + bl sub_805A20C + lsls r0, 24 + cmp r0, 0 + beq _080BD5C0 + movs r0, 0 + b _080BD5C2 + .align 2, 0 +_080BD5B8: .4byte gUnknown_2036E38 +_080BD5BC: .4byte gUnknown_2037078 +_080BD5C0: + movs r0, 0x1 +_080BD5C2: + pop {r1} + bx r1 + thumb_func_end sub_80BD58C + + thumb_func_start sub_80BD5C8 +sub_80BD5C8: @ 80BD5C8 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080BD5F0 @ =gUnknown_2036E2C + movs r0, 0 + strb r0, [r1] + ldr r0, _080BD5F4 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x6 + ands r0, r1 + cmp r0, 0 + beq _080BD5F8 + movs r0, 0x1 + bl sub_805BDEC + bl sub_8055E84 + bl sub_8055DC4 + b _080BD618 + .align 2, 0 +_080BD5F0: .4byte gUnknown_2036E2C +_080BD5F4: .4byte gUnknown_2037078 +_080BD5F8: + adds r0, r2, 0 + bl sub_805BDEC + movs r4, 0x8D + lsls r4, 1 + adds r0, r4, 0 + bl sub_8056124 + cmp r0, 0 + beq _080BD618 + adds r0, r4, 0 + bl sub_8055E78 + adds r0, r4, 0 + bl sub_8055F48 +_080BD618: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80BD5C8 + + thumb_func_start sub_80BD620 +sub_80BD620: @ 80BD620 + push {lr} + ldr r2, _080BD64C @ =gUnknown_2037078 + movs r3, 0 + strb r3, [r2, 0x8] + strb r3, [r2, 0x9] + strb r3, [r2, 0xA] + strb r3, [r2, 0xB] + str r0, [r2, 0xC] + str r1, [r2, 0x10] + strh r3, [r2, 0x1C] + movs r1, 0 + adds r2, 0x14 +_080BD638: + adds r0, r1, r2 + strb r3, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x7 + bls _080BD638 + pop {r0} + bx r0 + .align 2, 0 +_080BD64C: .4byte gUnknown_2037078 + thumb_func_end sub_80BD620 + + thumb_func_start sub_80BD650 +sub_80BD650: @ 80BD650 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BD660 @ =gUnknown_2037078 + strb r0, [r2, 0xA] + lsrs r1, r0, 1 + adds r0, r1 + strb r0, [r2, 0xB] + bx lr + .align 2, 0 +_080BD660: .4byte gUnknown_2037078 + thumb_func_end sub_80BD650 + + thumb_func_start sub_80BD664 +sub_80BD664: @ 80BD664 + ldr r1, _080BD670 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0xA] + strb r0, [r1, 0xB] + bx lr + .align 2, 0 +_080BD670: .4byte gUnknown_2037078 + thumb_func_end sub_80BD664 + + thumb_func_start sub_80BD674 +sub_80BD674: @ 80BD674 + push {lr} + sub sp, 0x8 + ldr r1, _080BD69C @ =gUnknown_83E7D1C + mov r0, sp + movs r2, 0x6 + bl memcpy + ldr r2, _080BD6A0 @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BD6A4 + ldrb r0, [r2, 0xA] + lsls r0, 1 + add r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + b _080BD6BE + .align 2, 0 +_080BD69C: .4byte gUnknown_83E7D1C +_080BD6A0: .4byte gUnknown_2037078 +_080BD6A4: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080BD6B0 + movs r0, 0x3 + b _080BD6BE +_080BD6B0: + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + bne _080BD6BC + movs r0, 0x1 + b _080BD6BE +_080BD6BC: + movs r0, 0x2 +_080BD6BE: + add sp, 0x8 + pop {r1} + bx r1 + thumb_func_end sub_80BD674 + + thumb_func_start sub_80BD6C4 +sub_80BD6C4: @ 80BD6C4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _080BD714 @ =gUnknown_2037078 + ldrb r1, [r5] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080BD70C + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_805A20C + lsls r0, 24 + cmp r0, 0 + beq _080BD70C + movs r0, 0x2 + strb r0, [r5, 0x8] + bl sub_805C6E4 + lsls r0, 24 + lsrs r0, 24 + bl nullsub_24 +_080BD70C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BD714: .4byte gUnknown_2037078 + thumb_func_end sub_80BD6C4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/blend_palette.s b/asm/blend_palette.s new file mode 100644 index 000000000..d80e9b5ed --- /dev/null +++ b/asm/blend_palette.s @@ -0,0 +1,186 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8045274 +sub_8045274: @ 8045274 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + mov r12, r1 + lsls r2, 24 + lsrs r7, r2, 24 + mov r0, sp + strh r3, [r0] + movs r6, 0 + cmp r6, r12 + bcs _080452FA + ldr r0, _0804530C @ =gUnknown_20371F8 + mov r10, r0 + ldr r1, _08045310 @ =gUnknown_20375F8 + mov r9, r1 +_080452A2: + mov r0, r8 + adds r5, r6, r0 + lsls r5, 16 + lsrs r5, 15 + mov r1, r10 + adds r0, r5, r1 + ldr r3, [r0] + lsls r4, r3, 27 + lsls r2, r3, 22 + lsls r3, 17 + add r5, r9 + lsrs r4, 27 + ldr r1, [sp] + lsls r0, r1, 27 + lsrs r0, 27 + subs r0, r4 + muls r0, r7 + asrs r0, 4 + adds r4, r0 + lsrs r2, 27 + lsls r0, r1, 22 + lsrs r0, 27 + subs r0, r2 + muls r0, r7 + asrs r0, 4 + adds r2, r0 + lsls r2, 5 + orrs r4, r2 + lsrs r3, 27 + lsls r1, 17 + lsrs r1, 27 + subs r1, r3 + adds r0, r1, 0 + muls r0, r7 + asrs r0, 4 + adds r3, r0 + lsls r3, 10 + orrs r4, r3 + strh r4, [r5] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r12 + bcc _080452A2 +_080452FA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804530C: .4byte gUnknown_20371F8 +_08045310: .4byte gUnknown_20375F8 + thumb_func_end sub_8045274 + + thumb_func_start sub_8045314 +sub_8045314: @ 8045314 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + adds r6, r2, 0 + adds r4, r3, 0 + lsls r1, 16 + lsrs r2, r1, 16 + cmp r6, 0x10 + bne _08045342 + subs r4, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _080453B2 +_08045336: + strh r2, [r5] + adds r5, 0x2 + subs r4, 0x1 + cmp r4, r0 + bne _08045336 + b _080453B2 +_08045342: + movs r0, 0x1F + movs r3, 0x1F + mov r9, r3 + mov r7, r9 + ands r7, r2 + mov r9, r7 + lsrs r2, r1, 21 + ands r2, r0 + mov r12, r2 + lsrs r1, 26 + mov r10, r1 + mov r3, r10 + ands r3, r0 + mov r10, r3 + subs r4, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _080453B2 + movs r7, 0x1F + mov r8, r7 +_0804536C: + ldrh r2, [r5] + movs r3, 0x1F + ands r3, r2 + lsls r2, 16 + lsrs r1, r2, 21 + mov r0, r8 + ands r1, r0 + lsrs r2, 26 + ands r2, r0 + mov r7, r9 + subs r0, r7, r3 + muls r0, r6 + lsrs r0, 4 + adds r3, r0 + mov r7, r12 + subs r0, r7, r1 + muls r0, r6 + lsrs r0, 4 + adds r1, r0 + lsls r1, 5 + orrs r3, r1 + mov r1, r10 + subs r0, r1, r2 + muls r0, r6 + lsrs r0, 4 + adds r2, r0 + lsls r2, 10 + orrs r3, r2 + strh r3, [r5] + adds r5, 0x2 + subs r4, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _0804536C +_080453B2: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8045314 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/blit.s b/asm/blit.s new file mode 100644 index 000000000..e8b8ff81e --- /dev/null +++ b/asm/blit.s @@ -0,0 +1,813 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8004A60 +sub_8004A60: @ 8004A60 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + ldr r6, [sp, 0x34] + ldr r7, [sp, 0x38] + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + lsls r7, 16 + lsrs r7, 16 + str r4, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + str r7, [sp, 0xC] + movs r4, 0xFF + str r4, [sp, 0x10] + bl sub_8004AA4 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004A60 + + thumb_func_start sub_8004AA4 +sub_8004AA4: @ 8004AA4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + str r0, [sp] + str r1, [sp, 0x4] + ldr r0, [sp, 0x4C] + ldr r1, [sp, 0x50] + ldr r4, [sp, 0x54] + ldr r5, [sp, 0x58] + ldr r6, [sp, 0x5C] + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x8] + lsls r3, 16 + lsrs r7, r3, 16 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0x10] + ldr r0, [sp, 0x4] + ldrh r3, [r0, 0x4] + ldr r1, [sp, 0xC] + subs r0, r3, r1 + adds r2, r4 + mov r8, r2 + cmp r0, r4 + bge _08004AF8 + ldr r2, [sp, 0x8] + adds r0, r2 + mov r8, r0 +_08004AF8: + ldr r4, [sp, 0x4] + ldrh r0, [r4, 0x6] + mov r1, r9 + subs r0, r1 + adds r2, r5, r7 + str r2, [sp, 0x14] + cmp r0, r5 + bge _08004B0C + adds r0, r7 + str r0, [sp, 0x14] +_08004B0C: + ldr r4, [sp] + ldrh r1, [r4, 0x4] + movs r2, 0x7 + adds r0, r1, 0 + ands r0, r2 + adds r1, r0 + asrs r1, 3 + str r1, [sp, 0x18] + adds r0, r3, 0 + ands r0, r2 + adds r0, r3, r0 + asrs r0, 3 + str r0, [sp, 0x1C] + ldr r0, [sp, 0x10] + cmp r0, 0xFF + bne _08004BCA + adds r3, r7, 0 + mov r1, r9 + ldr r2, [sp, 0x14] + cmp r3, r2 + blt _08004B38 + b _08004C72 +_08004B38: + ldr r5, [sp, 0x8] + ldr r6, [sp, 0xC] + adds r4, r3, 0x1 + str r4, [sp, 0x24] + adds r0, r1, 0x1 + str r0, [sp, 0x28] + cmp r5, r8 + bge _08004BBE + movs r7, 0x3 + asrs r0, r3, 3 + ldr r2, [sp, 0x18] + muls r0, r2 + lsls r0, 5 + mov r10, r0 + lsls r0, r3, 29 + lsrs r0, 27 + mov r9, r0 + asrs r0, r1, 3 + ldr r4, [sp, 0x1C] + muls r0, r4 + lsls r0, 5 + mov r12, r0 + lsls r0, r1, 29 + lsrs r3, r0, 27 +_08004B68: + asrs r0, r5, 1 + ands r0, r7 + ldr r2, [sp] + ldr r1, [r2] + adds r1, r0 + asrs r0, r5, 3 + lsls r0, 5 + adds r1, r0 + add r1, r10 + mov r4, r9 + adds r2, r1, r4 + asrs r0, r6, 1 + ands r0, r7 + ldr r4, [sp, 0x4] + ldr r1, [r4] + adds r1, r0 + asrs r0, r6, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r3 + ldrb r2, [r2] + adds r0, r5, 0 + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + asrs r2, r0 + movs r0, 0xF + ands r2, r0 + adds r0, r6, 0 + ands r0, r1 + lsls r1, r0, 2 + lsls r2, r1 + movs r0, 0xF0 + asrs r0, r1 + ldrb r1, [r4] + ands r0, r1 + orrs r2, r0 + strb r2, [r4] + adds r5, 0x1 + adds r6, 0x1 + cmp r5, r8 + blt _08004B68 +_08004BBE: + ldr r3, [sp, 0x24] + ldr r1, [sp, 0x28] + ldr r2, [sp, 0x14] + cmp r3, r2 + blt _08004B38 + b _08004C72 +_08004BCA: + adds r3, r7, 0 + mov r1, r9 + ldr r4, [sp, 0x14] + cmp r3, r4 + bge _08004C72 +_08004BD4: + ldr r5, [sp, 0x8] + ldr r6, [sp, 0xC] + adds r0, r3, 0x1 + str r0, [sp, 0x24] + adds r2, r1, 0x1 + str r2, [sp, 0x28] + cmp r5, r8 + bge _08004C68 + movs r4, 0x3 + mov r9, r4 + asrs r0, r3, 3 + ldr r2, [sp, 0x18] + muls r0, r2 + lsls r0, 5 + str r0, [sp, 0x20] + lsls r0, r3, 29 + lsrs r0, 27 + mov r10, r0 + movs r3, 0x1 + asrs r0, r1, 3 + ldr r4, [sp, 0x1C] + muls r0, r4 + lsls r0, 5 + mov r12, r0 + lsls r0, r1, 29 + lsrs r7, r0, 27 +_08004C08: + asrs r0, r5, 1 + mov r1, r9 + ands r0, r1 + ldr r2, [sp] + ldr r1, [r2] + adds r1, r0 + asrs r0, r5, 3 + lsls r0, 5 + adds r1, r0 + ldr r4, [sp, 0x20] + adds r1, r4 + mov r0, r10 + adds r2, r1, r0 + asrs r0, r6, 1 + mov r1, r9 + ands r0, r1 + ldr r4, [sp, 0x4] + ldr r1, [r4] + adds r1, r0 + asrs r0, r6, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r7 + ldrb r2, [r2] + adds r0, r5, 0 + ands r0, r3 + lsls r0, 2 + asrs r2, r0 + movs r0, 0xF + ands r2, r0 + ldr r0, [sp, 0x10] + cmp r2, r0 + beq _08004C60 + adds r0, r6, 0 + ands r0, r3 + lsls r1, r0, 2 + lsls r2, r1 + movs r0, 0xF0 + asrs r0, r1 + ldrb r1, [r4] + ands r0, r1 + orrs r2, r0 + strb r2, [r4] +_08004C60: + adds r5, 0x1 + adds r6, 0x1 + cmp r5, r8 + blt _08004C08 +_08004C68: + ldr r3, [sp, 0x24] + ldr r1, [sp, 0x28] + ldr r2, [sp, 0x14] + cmp r3, r2 + blt _08004BD4 +_08004C72: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004AA4 + + thumb_func_start sub_8004C84 +sub_8004C84: @ 8004C84 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r0 + ldr r0, [sp, 0x24] + ldr r4, [sp, 0x28] + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + adds r5, r2, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r7, r4, 24 + adds r4, r1, r3 + mov r3, r9 + ldrh r1, [r3, 0x4] + cmp r4, r1 + ble _08004CBA + adds r4, r1, 0 +_08004CBA: + adds r2, r0 + mov r12, r2 + mov r2, r9 + ldrh r0, [r2, 0x6] + cmp r12, r0 + ble _08004CC8 + mov r12, r0 +_08004CC8: + movs r0, 0x7 + ands r0, r1 + adds r0, r1, r0 + asrs r0, 3 + str r0, [sp] + adds r1, r5, 0 + cmp r1, r12 + bge _08004D30 +_08004CD8: + mov r3, r10 + adds r0, r1, 0x1 + mov r8, r0 + cmp r3, r4 + bge _08004D2A + asrs r0, r1, 3 + ldr r2, [sp] + muls r0, r2 + lsls r6, r0, 5 + lsls r0, r1, 29 + lsrs r5, r0, 27 +_08004CEE: + asrs r2, r3, 1 + movs r0, 0x3 + ands r2, r0 + mov r0, r9 + ldr r1, [r0] + adds r1, r2 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r6 + adds r2, r1, r5 + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08004D1A + ldrb r0, [r2] + movs r1, 0xF + ands r1, r0 + lsls r0, r7, 4 + orrs r1, r0 + strb r1, [r2] + b _08004D24 +_08004D1A: + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + orrs r0, r7 + strb r0, [r2] +_08004D24: + adds r3, 0x1 + cmp r3, r4 + blt _08004CEE +_08004D2A: + mov r1, r8 + cmp r1, r12 + blt _08004CD8 +_08004D30: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004C84 + + thumb_func_start sub_8004D40 +sub_8004D40: @ 8004D40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + str r0, [sp] + str r1, [sp, 0x4] + ldr r0, [sp, 0x5C] + ldr r1, [sp, 0x60] + ldr r5, [sp, 0x64] + ldr r4, [sp, 0x68] + ldr r6, [sp, 0x6C] + ldr r7, [sp, 0x70] + mov r8, r7 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x8] + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + lsls r1, 16 + lsrs r7, r1, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0x10] + mov r0, r8 + lsls r0, 28 + lsrs r0, 24 + str r0, [sp, 0x14] + lsls r0, r6, 28 + lsrs r0, 24 + str r0, [sp, 0x28] + ldr r1, [sp, 0x4] + ldrh r0, [r1, 0x4] + ldr r2, [sp, 0xC] + subs r0, r2 + ldr r1, [sp, 0x8] + adds r1, r5, r1 + str r1, [sp, 0x18] + cmp r0, r5 + bge _08004DA6 + ldr r2, [sp, 0x8] + adds r0, r2 + str r0, [sp, 0x18] +_08004DA6: + ldr r5, [sp, 0x4] + ldrh r1, [r5, 0x6] + subs r0, r1, r7 + cmp r0, r4 + bge _08004DB8 + adds r0, r3, r1 + subs r0, r7 + str r0, [sp, 0x1C] + b _08004DBC +_08004DB8: + adds r4, r3, r4 + str r4, [sp, 0x1C] +_08004DBC: + ldr r0, [sp] + ldrh r1, [r0, 0x4] + movs r2, 0x7 + adds r0, r1, 0 + ands r0, r2 + adds r1, r0 + asrs r1, 3 + str r1, [sp, 0x20] + ldr r5, [sp, 0x4] + ldrh r1, [r5, 0x4] + adds r0, r1, 0 + ands r0, r2 + adds r1, r0 + asrs r1, 3 + str r1, [sp, 0x24] + ldr r0, [sp, 0x10] + cmp r0, 0xFF + bne _08004E9C + adds r2, r3, 0 + adds r5, r7, 0 + ldr r1, [sp, 0x1C] + cmp r2, r1 + blt _08004DEC + b _08004F7E +_08004DEC: + ldr r3, [sp, 0x8] + lsrs r3, 1 + str r3, [sp, 0x2C] + movs r0, 0x3 + ands r3, r0 + str r3, [sp, 0x2C] + ldr r7, [sp, 0x8] + lsrs r0, r7, 3 + lsls r0, 5 + str r0, [sp, 0x30] +_08004E00: + ldr r0, [sp] + ldr r1, [r0] + ldr r3, [sp, 0x2C] + adds r1, r3 + ldr r7, [sp, 0x30] + adds r1, r7 + asrs r0, r2, 3 + ldr r3, [sp, 0x20] + muls r0, r3 + lsls r0, 5 + mov r8, r0 + add r1, r8 + lsls r0, r2, 29 + lsrs r7, r0, 27 + adds r6, r1, r7 + ldr r3, [sp, 0x8] + ldr r4, [sp, 0xC] + adds r2, 0x1 + mov r10, r2 + adds r0, r5, 0x1 + str r0, [sp, 0x38] + ldr r1, [sp, 0x18] + cmp r3, r1 + bge _08004E90 + asrs r0, r5, 3 + ldr r2, [sp, 0x24] + muls r0, r2 + lsls r0, 6 + mov r12, r0 + lsls r0, r5, 29 + lsrs r0, 26 + mov r9, r0 +_08004E40: + movs r0, 0x7 + ands r0, r4 + ldr r5, [sp, 0x4] + ldr r1, [r5] + adds r1, r0 + asrs r0, r4, 3 + lsls r0, 6 + adds r1, r0 + add r1, r12 + mov r0, r9 + adds r5, r1, r0 + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08004E64 + ldrb r0, [r6] + lsrs r0, 4 + b _08004E80 +_08004E64: + asrs r2, r3, 1 + movs r0, 0x3 + ands r2, r0 + ldr r0, [sp] + ldr r1, [r0] + adds r1, r2 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r8 + adds r6, r1, r7 + ldrb r1, [r6] + movs r0, 0xF + ands r0, r1 +_08004E80: + ldr r1, [sp, 0x14] + adds r0, r1, r0 + strb r0, [r5] + adds r3, 0x1 + adds r4, 0x1 + ldr r2, [sp, 0x18] + cmp r3, r2 + blt _08004E40 +_08004E90: + mov r2, r10 + ldr r5, [sp, 0x38] + ldr r3, [sp, 0x1C] + cmp r2, r3 + blt _08004E00 + b _08004F7E +_08004E9C: + adds r2, r3, 0 + adds r5, r7, 0 + ldr r7, [sp, 0x1C] + cmp r2, r7 + bge _08004F7E + ldr r0, [sp, 0x8] + lsrs r0, 1 + str r0, [sp, 0x34] + movs r0, 0x3 + ldr r1, [sp, 0x34] + ands r1, r0 + str r1, [sp, 0x34] +_08004EB4: + ldr r3, [sp] + ldr r1, [r3] + ldr r7, [sp, 0x34] + adds r1, r7 + ldr r3, [sp, 0x8] + lsrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + asrs r0, r2, 3 + ldr r7, [sp, 0x20] + muls r0, r7 + lsls r0, 5 + mov r8, r0 + add r1, r8 + lsls r0, r2, 29 + lsrs r7, r0, 27 + adds r6, r1, r7 + ldr r4, [sp, 0xC] + adds r2, 0x1 + mov r10, r2 + adds r0, r5, 0x1 + str r0, [sp, 0x38] + ldr r1, [sp, 0x18] + cmp r3, r1 + bge _08004F74 + asrs r0, r5, 3 + ldr r2, [sp, 0x24] + muls r0, r2 + lsls r0, 6 + mov r9, r0 + lsls r0, r5, 29 + lsrs r0, 26 + mov r12, r0 +_08004EF6: + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08004F2A + ldrb r2, [r6] + movs r0, 0xF0 + ands r0, r2 + ldr r5, [sp, 0x28] + cmp r0, r5 + beq _08004F6A + adds r0, r4, 0 + movs r1, 0x7 + ands r0, r1 + ldr r5, [sp, 0x4] + ldr r1, [r5] + adds r1, r0 + asrs r0, r4, 3 + lsls r0, 6 + adds r1, r0 + add r1, r9 + mov r0, r12 + adds r5, r1, r0 + lsrs r0, r2, 4 + ldr r1, [sp, 0x14] + adds r0, r1, r0 + b _08004F68 +_08004F2A: + asrs r2, r3, 1 + movs r0, 0x3 + ands r2, r0 + ldr r5, [sp] + ldr r1, [r5] + adds r1, r2 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r8 + adds r6, r1, r7 + ldrb r0, [r6] + movs r2, 0xF + ands r2, r0 + ldr r0, [sp, 0x10] + cmp r2, r0 + beq _08004F6A + adds r0, r4, 0 + movs r1, 0x7 + ands r0, r1 + ldr r5, [sp, 0x4] + ldr r1, [r5] + adds r1, r0 + asrs r0, r4, 3 + lsls r0, 6 + adds r1, r0 + add r1, r9 + mov r0, r12 + adds r5, r1, r0 + ldr r1, [sp, 0x14] + adds r0, r1, r2 +_08004F68: + strb r0, [r5] +_08004F6A: + adds r3, 0x1 + adds r4, 0x1 + ldr r2, [sp, 0x18] + cmp r3, r2 + blt _08004EF6 +_08004F74: + mov r2, r10 + ldr r5, [sp, 0x38] + ldr r3, [sp, 0x1C] + cmp r2, r3 + blt _08004EB4 +_08004F7E: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004D40 + + thumb_func_start sub_8004F90 +sub_8004F90: @ 8004F90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r8, r0 + ldr r0, [sp, 0x28] + ldr r4, [sp, 0x2C] + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + adds r6, r2, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + adds r5, r1, r3 + mov r3, r8 + ldrh r1, [r3, 0x4] + cmp r5, r1 + ble _08004FC8 + adds r5, r1, 0 +_08004FC8: + adds r7, r2, r0 + mov r2, r8 + ldrh r0, [r2, 0x6] + cmp r7, r0 + ble _08004FD4 + adds r7, r0, 0 +_08004FD4: + movs r0, 0x7 + ands r0, r1 + adds r0, r1, r0 + asrs r0, 3 + str r0, [sp] + adds r1, r6, 0 + cmp r1, r7 + bge _08005024 +_08004FE4: + mov r3, r10 + adds r6, r1, 0x1 + str r6, [sp, 0x4] + cmp r3, r5 + bge _0800501E + movs r0, 0x7 + mov r12, r0 + asrs r0, r1, 3 + ldr r2, [sp] + muls r0, r2 + lsls r4, r0, 6 + lsls r0, r1, 29 + lsrs r2, r0, 26 +_08004FFE: + adds r0, r3, 0 + mov r6, r12 + ands r0, r6 + mov r6, r8 + ldr r1, [r6] + adds r1, r0 + asrs r0, r3, 3 + lsls r0, 6 + adds r1, r0 + adds r1, r4 + adds r1, r2 + mov r0, r9 + strb r0, [r1] + adds r3, 0x1 + cmp r3, r5 + blt _08004FFE +_0800501E: + ldr r1, [sp, 0x4] + cmp r1, r7 + blt _08004FE4 +_08005024: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004F90 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/box_party_pokemon_dropdown.s b/asm/box_party_pokemon_dropdown.s new file mode 100644 index 000000000..0222195c2 --- /dev/null +++ b/asm/box_party_pokemon_dropdown.s @@ -0,0 +1,690 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F7AD8 +sub_80F7AD8: @ 80F7AD8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r6, _080F7B24 @ =gUnknown_203ABE4 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 4 + bl sub_8002B9C + str r0, [r6] + ldr r5, _080F7B28 @ =gUnknown_203ABE8 + movs r1, 0 + cmp r0, 0 + beq _080F7AF6 + adds r1, r4, 0 +_080F7AF6: + strh r1, [r5] + movs r2, 0 + cmp r2, r1 + bcs _080F7B1E + movs r3, 0 + adds r4, r5, 0 +_080F7B02: + ldr r0, [r6] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 4 + adds r1, r0 + str r3, [r1, 0x18] + adds r1, 0x2C + strb r3, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r4] + cmp r2, r0 + bcc _080F7B02 +_080F7B1E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7B24: .4byte gUnknown_203ABE4 +_080F7B28: .4byte gUnknown_203ABE8 + thumb_func_end sub_80F7AD8 + + thumb_func_start sub_80F7B2C +sub_80F7B2C: @ 80F7B2C + push {lr} + ldr r0, _080F7B3C @ =gUnknown_203ABE4 + ldr r0, [r0] + bl sub_8002BC4 + pop {r0} + bx r0 + .align 2, 0 +_080F7B3C: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7B2C + + thumb_func_start sub_80F7B40 +sub_80F7B40: @ 80F7B40 + push {r4,r5,lr} + movs r4, 0 + ldr r0, _080F7B78 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r4, r0 + bge _080F7B70 + movs r5, 0 +_080F7B4E: + ldr r0, _080F7B7C @ =gUnknown_203ABE4 + ldr r0, [r0] + adds r0, r5, r0 + adds r0, 0x2C + ldrb r0, [r0] + cmp r0, 0x1 + bne _080F7B64 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80F7E54 +_080F7B64: + adds r5, 0x30 + adds r4, 0x1 + ldr r0, _080F7B78 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r4, r0 + blt _080F7B4E +_080F7B70: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F7B78: .4byte gUnknown_203ABE8 +_080F7B7C: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7B40 + + thumb_func_start sub_80F7B80 +sub_80F7B80: @ 80F7B80 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r2, 0 + ldr r2, [sp, 0x24] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp] + ldr r0, _080F7C18 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r6, r0 + bcs _080F7C68 + ldr r0, _080F7C1C @ =gUnknown_203ABE4 + mov r9, r0 + ldr r0, [r0] + lsls r1, r6, 1 + mov r8, r1 + adds r5, r1, r6 + lsls r5, 4 + adds r0, r5, r0 + movs r1, 0 + str r1, [r0, 0x18] + str r4, [r0, 0x1C] + adds r0, 0x2B + strb r7, [r0] + mov r2, r9 + ldr r0, [r2] + adds r0, r5, r0 + mov r3, r10 + strh r3, [r0, 0x24] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, 0x26] + adds r0, r7, 0 + movs r1, 0x3 + bl sub_8001AA8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + movs r1, 0x9 + bl sub_8001AA8 + lsls r0, 16 + lsrs r0, 16 + mov r2, r9 + ldr r1, [r2] + adds r5, r1 + ldr r2, _080F7C20 @ =gUnknown_841F4B4 + lsls r4, 2 + lsls r1, r0, 4 + adds r4, r1 + adds r4, r2 + ldrh r1, [r4] + strh r1, [r5, 0x20] + ldrh r1, [r4, 0x2] + strh r1, [r5, 0x22] + mov r2, r8 + cmp r0, 0 + beq _080F7C24 + adds r1, r5, 0 + adds r1, 0x2A + movs r0, 0x1 + b _080F7C2A + .align 2, 0 +_080F7C18: .4byte gUnknown_203ABE8 +_080F7C1C: .4byte gUnknown_203ABE4 +_080F7C20: .4byte gUnknown_841F4B4 +_080F7C24: + adds r1, r5, 0 + adds r1, 0x2A + movs r0, 0x2 +_080F7C2A: + strb r0, [r1] + ldr r4, _080F7C78 @ =gUnknown_203ABE4 + ldr r1, [r4] + adds r2, r6 + lsls r2, 4 + adds r1, r2, r1 + adds r0, r1, 0 + adds r0, 0x2A + ldrb r0, [r0] + mov r3, r10 + muls r3, r0 + movs r0, 0 + strh r3, [r1, 0x28] + mov r3, r10 + strh r3, [r1, 0x10] + mov r5, sp + ldrh r5, [r5] + strh r5, [r1, 0x12] + strh r0, [r1, 0xC] + strh r0, [r1, 0xE] + strh r0, [r1, 0x14] + strh r0, [r1, 0x16] + adds r0, r1, 0 + adds r0, 0xC + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldr r0, [r4] + adds r2, r0 + adds r2, 0x2C + movs r0, 0x1 + strb r0, [r2] +_080F7C68: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7C78: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7B80 + + thumb_func_start sub_80F7C7C +sub_80F7C7C: @ 80F7C7C + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080F7CA4 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r2, r0 + bcs _080F7CA0 + ldr r0, _080F7CA8 @ =gUnknown_203ABE4 + ldr r1, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 4 + adds r0, r1 + str r3, [r0, 0x18] + adds r0, 0x2C + movs r1, 0x1 + strb r1, [r0] +_080F7CA0: + pop {r0} + bx r0 + .align 2, 0 +_080F7CA4: .4byte gUnknown_203ABE8 +_080F7CA8: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7C7C + + thumb_func_start sub_80F7CAC +sub_80F7CAC: @ 80F7CAC + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _080F7CE0 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r3, r0 + bcs _080F7CD8 + ldr r0, _080F7CE4 @ =gUnknown_203ABE4 + ldr r1, [r0] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 4 + adds r0, r1 + strh r4, [r0, 0x14] + strh r2, [r0, 0x16] + adds r0, 0x2C + movs r1, 0x1 + strb r1, [r0] +_080F7CD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F7CE0: .4byte gUnknown_203ABE8 +_080F7CE4: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7CAC + + thumb_func_start sub_80F7CE8 +sub_80F7CE8: @ 80F7CE8 + push {r4-r6,lr} + ldr r4, [sp, 0x10] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _080F7D28 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r5, r0 + bcs _080F7D22 + ldr r0, _080F7D2C @ =gUnknown_203ABE4 + ldr r1, [r0] + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 4 + adds r0, r1 + strh r6, [r0, 0xC] + strh r2, [r0, 0xE] + strh r3, [r0, 0x10] + strh r4, [r0, 0x12] + adds r0, 0x2C + movs r1, 0x1 + strb r1, [r0] +_080F7D22: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7D28: .4byte gUnknown_203ABE8 +_080F7D2C: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7CE8 + + thumb_func_start sub_80F7D30 +sub_80F7D30: @ 80F7D30 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _080F7D5C @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r5, r0 + bcc _080F7D48 + b _080F7E4A +_080F7D48: + ldr r4, _080F7D60 @ =gUnknown_203ABE4 + lsls r2, r5, 1 + cmp r1, 0x5 + bls _080F7D52 + b _080F7E3C +_080F7D52: + lsls r0, r1, 2 + ldr r1, _080F7D64 @ =_080F7D68 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F7D5C: .4byte gUnknown_203ABE8 +_080F7D60: .4byte gUnknown_203ABE4 +_080F7D64: .4byte _080F7D68 + .align 2, 0 +_080F7D68: + .4byte _080F7D80 + .4byte _080F7DA0 + .4byte _080F7DC4 + .4byte _080F7DE4 + .4byte _080F7E08 + .4byte _080F7E24 +_080F7D80: + ldr r4, _080F7D9C @ =gUnknown_203ABE4 + ldr r0, [r4] + lsls r3, r5, 1 + adds r1, r3, r5 + lsls r1, 4 + adds r1, r0 + lsls r2, r6, 24 + asrs r2, 24 + ldrh r0, [r1, 0x14] + adds r0, r2 + strh r0, [r1, 0x14] + ldrh r0, [r1, 0x10] + subs r0, r2 + b _080F7DBA + .align 2, 0 +_080F7D9C: .4byte gUnknown_203ABE4 +_080F7DA0: + ldr r4, _080F7DC0 @ =gUnknown_203ABE4 + ldr r0, [r4] + lsls r3, r5, 1 + adds r1, r3, r5 + lsls r1, 4 + adds r1, r0 + lsls r2, r6, 24 + asrs r2, 24 + ldrh r0, [r1, 0xC] + adds r0, r2 + strh r0, [r1, 0xC] + ldrh r0, [r1, 0x10] + adds r0, r2 +_080F7DBA: + strh r0, [r1, 0x10] + adds r2, r3, 0 + b _080F7E3C + .align 2, 0 +_080F7DC0: .4byte gUnknown_203ABE4 +_080F7DC4: + ldr r4, _080F7DE0 @ =gUnknown_203ABE4 + ldr r0, [r4] + lsls r3, r5, 1 + adds r1, r3, r5 + lsls r1, 4 + adds r1, r0 + lsls r2, r6, 24 + asrs r2, 24 + ldrh r0, [r1, 0x16] + adds r0, r2 + strh r0, [r1, 0x16] + ldrh r0, [r1, 0x12] + subs r0, r2 + b _080F7DFE + .align 2, 0 +_080F7DE0: .4byte gUnknown_203ABE4 +_080F7DE4: + ldr r4, _080F7E04 @ =gUnknown_203ABE4 + ldr r0, [r4] + lsls r3, r5, 1 + adds r1, r3, r5 + lsls r1, 4 + adds r1, r0 + lsls r2, r6, 24 + asrs r2, 24 + ldrh r0, [r1, 0xE] + subs r0, r2 + strh r0, [r1, 0xE] + ldrh r0, [r1, 0x12] + adds r0, r2 +_080F7DFE: + strh r0, [r1, 0x12] + adds r2, r3, 0 + b _080F7E3C + .align 2, 0 +_080F7E04: .4byte gUnknown_203ABE4 +_080F7E08: + ldr r3, _080F7E20 @ =gUnknown_203ABE4 + ldr r0, [r3] + lsls r2, r5, 1 + adds r1, r2, r5 + lsls r1, 4 + adds r1, r0 + lsls r0, r6, 24 + asrs r0, 24 + ldrh r4, [r1, 0x14] + adds r0, r4 + strh r0, [r1, 0x14] + b _080F7E3A + .align 2, 0 +_080F7E20: .4byte gUnknown_203ABE4 +_080F7E24: + ldr r3, _080F7E50 @ =gUnknown_203ABE4 + ldr r0, [r3] + lsls r2, r5, 1 + adds r1, r2, r5 + lsls r1, 4 + adds r1, r0 + lsls r0, r6, 24 + asrs r0, 24 + ldrh r4, [r1, 0x16] + adds r0, r4 + strh r0, [r1, 0x16] +_080F7E3A: + adds r4, r3, 0 +_080F7E3C: + ldr r0, [r4] + adds r1, r2, r5 + lsls r1, 4 + adds r1, r0 + adds r1, 0x2C + movs r0, 0x1 + strb r0, [r1] +_080F7E4A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7E50: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7D30 + + thumb_func_start sub_80F7E54 +sub_80F7E54: @ 80F7E54 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + adds r6, r2, 0 + ldr r0, _080F7E94 @ =gUnknown_203ABE8 + ldrh r0, [r0] + cmp r2, r0 + bcs _080F7E8E + ldr r5, _080F7E98 @ =gUnknown_203ABE4 + ldr r0, [r5] + lsls r1, r2, 1 + adds r1, r2 + lsls r4, r1, 4 + adds r0, r4, r0 + ldr r0, [r0, 0x18] + cmp r0, 0 + beq _080F7E7C + adds r0, r2, 0 + bl sub_80F7E9C +_080F7E7C: + adds r0, r6, 0 + bl sub_80F7F34 + ldr r1, [r5] + adds r1, r4, r1 + adds r0, r1, 0 + adds r0, 0xC + ldm r0!, {r2-r4} + stm r1!, {r2-r4} +_080F7E8E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7E94: .4byte gUnknown_203ABE8 +_080F7E98: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7E54 + + thumb_func_start sub_80F7E9C +sub_80F7E9C: @ 80F7E9C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, _080F7F30 @ =gUnknown_203ABE4 + ldr r1, [r4] + lsls r5, r0, 1 + adds r0, r5, r0 + lsls r0, 4 + adds r0, r1 + adds r1, r0, 0 + adds r1, 0x2A + ldrb r3, [r1] + ldrh r1, [r0, 0x20] + adds r2, r3, 0 + muls r2, r1 + mov r9, r2 + movs r6, 0xA + ldrsh r1, [r0, r6] + mov r2, r9 + muls r2, r1 + ldr r1, [r0, 0x18] + adds r1, r2 + movs r6, 0x8 + ldrsh r2, [r0, r6] + muls r2, r3 + adds r7, r1, r2 + movs r6, 0 + ldrh r0, [r0, 0x6] + cmp r6, r0 + bge _080F7F20 + mov r10, r4 +_080F7EE6: + mov r0, r10 + ldr r1, [r0] + mov r2, r8 + adds r4, r5, r2 + lsls r4, 4 + adds r1, r4, r1 + adds r0, r1, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldrb r2, [r1, 0x8] + ldrb r3, [r1, 0xA] + adds r3, r6 + lsls r3, 24 + lsrs r3, 24 + ldrb r1, [r1, 0x4] + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + adds r1, r7, 0 + bl sub_8002124 + add r7, r9 + adds r6, 0x1 + mov r1, r10 + ldr r0, [r1] + adds r4, r0 + ldrh r4, [r4, 0x6] + cmp r6, r4 + blt _080F7EE6 +_080F7F20: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7F30: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7E9C + + thumb_func_start sub_80F7F34 +sub_80F7F34: @ 80F7F34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, _080F7FC8 @ =gUnknown_203ABE4 + ldr r1, [r4] + lsls r5, r0, 1 + adds r0, r5, r0 + lsls r0, 4 + adds r0, r1 + adds r1, r0, 0 + adds r1, 0x2A + ldrb r3, [r1] + ldrh r1, [r0, 0x24] + adds r2, r3, 0 + muls r2, r1 + mov r9, r2 + movs r6, 0xE + ldrsh r1, [r0, r6] + mov r2, r9 + muls r2, r1 + ldr r1, [r0, 0x1C] + adds r1, r2 + movs r6, 0xC + ldrsh r2, [r0, r6] + muls r2, r3 + adds r7, r1, r2 + movs r6, 0 + ldrh r0, [r0, 0x12] + cmp r6, r0 + bge _080F7FB8 + mov r10, r4 +_080F7F7E: + mov r0, r10 + ldr r1, [r0] + mov r2, r8 + adds r4, r5, r2 + lsls r4, 4 + adds r1, r4, r1 + adds r0, r1, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldrb r2, [r1, 0x14] + ldrb r3, [r1, 0x16] + adds r3, r6 + lsls r3, 24 + lsrs r3, 24 + ldrb r1, [r1, 0x10] + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + adds r1, r7, 0 + bl sub_8002124 + add r7, r9 + adds r6, 0x1 + mov r1, r10 + ldr r0, [r1] + adds r4, r0 + ldrh r4, [r4, 0x12] + cmp r6, r4 + blt _080F7F7E +_080F7FB8: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7FC8: .4byte gUnknown_203ABE4 + thumb_func_end sub_80F7F34 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/braille_text.s b/asm/braille_text.s new file mode 100644 index 000000000..e9b1244f1 --- /dev/null +++ b/asm/braille_text.s @@ -0,0 +1,595 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814F884 +sub_814F884: @ 814F884 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r6, 0 + adds r4, 0x14 + ldrb r0, [r6, 0x1C] + cmp r0, 0x6 + bls _0814F894 + b _0814FC94 +_0814F894: + lsls r0, 2 + ldr r1, _0814F8A0 @ =_0814F8A4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F8A0: .4byte _0814F8A4 + .align 2, 0 +_0814F8A4: + .4byte _0814F8C0 + .4byte _0814FB88 + .4byte _0814FB9A + .4byte _0814FBC4 + .4byte _0814FBFC + .4byte _0814FC70 + .4byte _0814FC82 +_0814F8C0: + ldr r2, _0814F914 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0814F8DA + ldrb r1, [r4] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0814F8DA + movs r0, 0 + strb r0, [r6, 0x1E] +_0814F8DA: + ldrb r1, [r6, 0x1E] + cmp r1, 0 + beq _0814F91C + ldrb r0, [r6, 0x1D] + cmp r0, 0 + beq _0814F91C + subs r0, r1, 0x1 + strb r0, [r6, 0x1E] + ldr r0, _0814F918 @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0814F8F8 + b _0814FB42 +_0814F8F8: + ldrh r1, [r2, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0814F904 + b _0814FB42 +_0814F904: + ldrb r0, [r4] + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4] + movs r0, 0 + strb r0, [r6, 0x1E] + b _0814FB42 + .align 2, 0 +_0814F914: .4byte gUnknown_30030F0 +_0814F918: .4byte gUnknown_3003E50 +_0814F91C: + ldr r2, _0814F92C @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0814F930 + movs r0, 0x1 + b _0814F932 + .align 2, 0 +_0814F92C: .4byte gUnknown_3003E50 +_0814F930: + ldrb r0, [r6, 0x1D] +_0814F932: + strb r0, [r6, 0x1E] + ldr r0, [r6] + ldrb r3, [r0] + adds r0, 0x1 + str r0, [r6] + adds r0, r3, 0 + subs r0, 0xF8 + cmp r0, 0x7 + bls _0814F946 + b _0814FB62 +_0814F946: + lsls r0, 2 + ldr r1, _0814F950 @ =_0814F954 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F950: .4byte _0814F954 + .align 2, 0 +_0814F954: + .4byte _0814FB58 + .4byte _0814FB46 + .4byte _0814FB38 + .4byte _0814FB34 + .4byte _0814F9A2 + .4byte _0814F99C + .4byte _0814F974 + .4byte _0814FC94 +_0814F974: + ldrb r0, [r6, 0x6] + strb r0, [r6, 0x8] + ldrb r1, [r6, 0x5] + ldr r0, _0814F998 @ =gUnknown_3003D90 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r6, 0xB] + ldrb r0, [r0, 0x5] + adds r1, r0 + ldrb r0, [r6, 0x9] + adds r0, r1 + strb r0, [r6, 0x9] +_0814F992: + movs r0, 0x2 + b _0814FC96 + .align 2, 0 +_0814F998: .4byte gUnknown_3003D90 +_0814F99C: + ldr r0, [r6] + adds r0, 0x1 + b _0814FAF8 +_0814F9A2: + ldr r0, [r6] + ldrb r3, [r0] + adds r0, 0x1 + str r0, [r6] + subs r0, r3, 0x1 + cmp r0, 0xF + bls _0814F9B2 + b _0814FB62 +_0814F9B2: + lsls r0, 2 + ldr r1, _0814F9BC @ =_0814F9C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F9BC: .4byte _0814F9C0 + .align 2, 0 +_0814F9C0: + .4byte _0814FA00 + .4byte _0814FA22 + .4byte _0814FA46 + .4byte _0814FA60 + .4byte _0814FAAC + .4byte _0814FAB2 + .4byte _0814F992 + .4byte _0814FACC + .4byte _0814FADC + .4byte _0814FAF0 + .4byte _0814FAF4 + .4byte _0814FAFC + .4byte _0814FB06 + .4byte _0814FB12 + .4byte _0814FB22 + .4byte _0814FAF4 +_0814FA00: + ldr r2, [r6] + ldrb r1, [r2] + lsls r1, 4 + ldrb r3, [r6, 0xC] + movs r0, 0xF + ands r0, r3 + orrs r0, r1 + strb r0, [r6, 0xC] + adds r2, 0x1 + str r2, [r6] + lsls r0, 24 + lsrs r0, 28 + ldrb r2, [r6, 0xD] + lsls r1, r2, 28 + lsrs r1, 28 + lsrs r2, 4 + b _0814FAA6 +_0814FA22: + ldr r1, [r6] + ldrb r2, [r1] + movs r0, 0xF + ands r0, r2 + ldrb r3, [r6, 0xD] + movs r2, 0x10 + negs r2, r2 + ands r2, r3 + orrs r2, r0 + strb r2, [r6, 0xD] + adds r1, 0x1 + str r1, [r6] + ldrb r0, [r6, 0xC] + lsrs r0, 4 + lsls r1, r2, 28 + lsrs r1, 28 + lsrs r2, 4 + b _0814FAA6 +_0814FA46: + ldr r1, [r6] + ldrb r0, [r1] + lsls r0, 4 + ldrb r3, [r6, 0xD] + movs r2, 0xF + ands r2, r3 + orrs r2, r0 + strb r2, [r6, 0xD] + adds r1, 0x1 + str r1, [r6] + ldrb r0, [r6, 0xC] + lsrs r0, 4 + b _0814FA9E +_0814FA60: + ldr r3, [r6] + ldrb r1, [r3] + lsls r1, 4 + ldrb r4, [r6, 0xC] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r6, 0xC] + adds r5, r3, 0x1 + str r5, [r6] + ldrb r3, [r3, 0x1] + adds r1, r2, 0 + ands r1, r3 + ldrb r4, [r6, 0xD] + movs r3, 0x10 + negs r3, r3 + ands r3, r4 + orrs r3, r1 + strb r3, [r6, 0xD] + adds r4, r5, 0x1 + str r4, [r6] + ldrb r1, [r5, 0x1] + lsls r1, 4 + ands r2, r3 + orrs r2, r1 + strb r2, [r6, 0xD] + adds r4, 0x1 + str r4, [r6] + lsls r0, 24 + lsrs r0, 28 +_0814FA9E: + lsls r1, r2, 28 + lsrs r1, 28 + lsls r2, 24 + lsrs r2, 28 +_0814FAA6: + bl sub_8002EA8 + b _0814F992 +_0814FAAC: + ldr r0, [r6] + adds r0, 0x1 + b _0814FAF8 +_0814FAB2: + ldr r0, [r6] + ldrb r0, [r0] + movs r1, 0xF + ands r1, r0 + ldrb r2, [r4] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldr r0, [r6] + adds r0, 0x1 + b _0814FAF8 +_0814FACC: + ldr r0, [r6] + ldrb r1, [r0] + strb r1, [r6, 0x1E] + adds r0, 0x1 + str r0, [r6] + movs r0, 0x6 + strb r0, [r6, 0x1C] + b _0814F992 +_0814FADC: + movs r0, 0x1 + strb r0, [r6, 0x1C] + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0814FB42 + movs r0, 0 + strb r0, [r4, 0x2] + b _0814FB42 +_0814FAF0: + movs r0, 0x5 + b _0814FC7E +_0814FAF4: + ldr r0, [r6] + adds r0, 0x2 +_0814FAF8: + str r0, [r6] + b _0814F992 +_0814FAFC: + ldr r1, [r6] + adds r0, r1, 0x1 + str r0, [r6] + ldrb r3, [r1, 0x1] + b _0814FB62 +_0814FB06: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, 0x6] + adds r0, r2 + strb r0, [r6, 0x8] + b _0814FB1C +_0814FB12: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, 0x7] + adds r0, r2 + strb r0, [r6, 0x9] +_0814FB1C: + adds r1, 0x1 + str r1, [r6] + b _0814F992 +_0814FB22: + ldrb r0, [r6, 0x4] + ldrb r2, [r6, 0xD] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + b _0814F992 +_0814FB34: + movs r0, 0x2 + b _0814FB3A +_0814FB38: + movs r0, 0x3 +_0814FB3A: + strb r0, [r6, 0x1C] + adds r0, r6, 0 + bl sub_80054C8 +_0814FB42: + movs r0, 0x3 + b _0814FC96 +_0814FB46: + ldr r0, [r6] + ldrb r3, [r0] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + orrs r3, r1 + adds r0, 0x1 + str r0, [r6] + b _0814FB62 +_0814FB58: + ldr r0, [r6] + adds r0, 0x1 + str r0, [r6] + movs r0, 0 + b _0814FC96 +_0814FB62: + adds r0, r3, 0 + bl sub_814FC9C + adds r0, r6, 0 + bl sub_8003014 + ldr r0, _0814FB84 @ =gUnknown_3003DA0 + adds r0, 0x80 + ldrb r1, [r6, 0xA] + ldrb r0, [r0] + adds r1, r0 + ldrb r0, [r6, 0x8] + adds r0, r1 + strb r0, [r6, 0x8] + movs r0, 0 + b _0814FC96 + .align 2, 0 +_0814FB84: .4byte gUnknown_3003DA0 +_0814FB88: + adds r0, r6, 0 + bl sub_8005680 + lsls r0, 16 + cmp r0, 0 + beq _0814FB42 + movs r0, 0 + strb r0, [r6, 0x1C] + b _0814FB42 +_0814FB9A: + adds r0, r6, 0 + bl sub_8005634 + lsls r0, 16 + cmp r0, 0 + beq _0814FB42 + ldrb r0, [r6, 0x4] + ldrb r2, [r6, 0xD] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + ldrb r0, [r6, 0x6] + movs r1, 0 + strb r0, [r6, 0x8] + ldrb r0, [r6, 0x7] + strb r0, [r6, 0x9] + strb r1, [r6, 0x1C] + b _0814FB42 +_0814FBC4: + adds r0, r6, 0 + bl sub_8005634 + lsls r0, 16 + cmp r0, 0 + beq _0814FB42 + adds r0, r6, 0 + bl sub_80055D4 + ldrb r1, [r6, 0x5] + ldr r0, _0814FBF8 @ =gUnknown_3003D90 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r6, 0xB] + ldrb r0, [r0, 0x5] + adds r1, r0 + strb r1, [r6, 0x1F] + ldrb r0, [r6, 0x6] + strb r0, [r6, 0x8] + movs r0, 0x4 + strb r0, [r6, 0x1C] + b _0814FB42 + .align 2, 0 +_0814FBF8: .4byte gUnknown_3003D90 +_0814FBFC: + ldrb r2, [r6, 0x1F] + cmp r2, 0 + beq _0814FC6C + ldr r4, _0814FC30 @ =gUnknown_846FB08 + ldr r5, _0814FC34 @ =gUnknown_300500C + ldr r0, [r5] + ldrb r0, [r0, 0x14] + lsls r1, r0, 29 + lsrs r0, r1, 29 + adds r0, r4 + ldrb r0, [r0] + cmp r2, r0 + bcs _0814FC38 + ldrb r0, [r6, 0x4] + ldrb r1, [r6, 0xD] + lsls r1, 28 + lsrs r3, r1, 4 + orrs r3, r1 + lsrs r3, 24 + movs r1, 0 + bl sub_80044A8 + movs r0, 0 + strb r0, [r6, 0x1F] + b _0814FC62 + .align 2, 0 +_0814FC30: .4byte gUnknown_846FB08 +_0814FC34: .4byte gUnknown_300500C +_0814FC38: + ldrb r0, [r6, 0x4] + lsrs r1, 29 + adds r1, r4 + ldrb r2, [r1] + ldrb r1, [r6, 0xD] + lsls r1, 28 + lsrs r3, r1, 4 + orrs r3, r1 + lsrs r3, 24 + movs r1, 0 + bl sub_80044A8 + ldr r0, [r5] + ldrb r0, [r0, 0x14] + lsls r0, 29 + lsrs r0, 29 + adds r0, r4 + ldrb r1, [r6, 0x1F] + ldrb r0, [r0] + subs r1, r0 + strb r1, [r6, 0x1F] +_0814FC62: + ldrb r0, [r6, 0x4] + movs r1, 0x2 + bl sub_8003F20 + b _0814FB42 +_0814FC6C: + strb r2, [r6, 0x1C] + b _0814FB42 +_0814FC70: + bl sub_80723E0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0814FC7E + b _0814FB42 +_0814FC7E: + strb r0, [r6, 0x1C] + b _0814FB42 +_0814FC82: + ldrb r0, [r6, 0x1E] + adds r1, r0, 0 + cmp r1, 0 + beq _0814FC90 + subs r0, 0x1 + strb r0, [r6, 0x1E] + b _0814FB42 +_0814FC90: + strb r1, [r6, 0x1C] + b _0814FB42 +_0814FC94: + movs r0, 0x1 +_0814FC96: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_814F884 + + thumb_func_start sub_814FC9C +sub_814FC9C: @ 814FC9C + push {r4,r5,lr} + lsls r0, 16 + lsrs r2, r0, 19 + lsls r2, 9 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + lsrs r1, 11 + ldr r0, _0814FCF8 @ =gUnknown_846FB0C + adds r1, r0 + adds r5, r2, r1 + ldr r4, _0814FCFC @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8002F8C + adds r0, r5, 0 + adds r0, 0x10 + adds r1, r4, 0 + adds r1, 0x20 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r4, 0 + adds r1, 0x40 + bl sub_8002F8C + movs r1, 0x88 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r4, 0 + adds r1, 0x60 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x80 + movs r1, 0x10 + strb r1, [r0] + adds r0, 0x1 + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FCF8: .4byte gUnknown_846FB0C +_0814FCFC: .4byte gUnknown_3003DA0 + thumb_func_end sub_814FC9C + + thumb_func_start sub_814FD00 +sub_814FD00: @ 814FD00 + movs r0, 0x10 + bx lr + thumb_func_end sub_814FD00 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/buy_menu_helpers.s b/asm/buy_menu_helpers.s new file mode 100644 index 000000000..8614d7d51 --- /dev/null +++ b/asm/buy_menu_helpers.s @@ -0,0 +1,220 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813F66C +sub_813F66C: @ 813F66C + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0x1 + beq _0813F680 + ldr r0, _0813F67C @ =gUnknown_8464804 + bl sub_8003B24 + b _0813F686 + .align 2, 0 +_0813F67C: .4byte gUnknown_8464804 +_0813F680: + ldr r0, _0813F6CC @ =gUnknown_846483C + bl sub_8003B24 +_0813F686: + bl sub_8002C28 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xD0 + bl sub_815001C + movs r0, 0 + movs r1, 0x13 + movs r2, 0xE0 + bl sub_814FEAC + movs r0, 0 + movs r1, 0xA + movs r2, 0xF0 + bl sub_814FF2C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + cmp r4, 0x1 + bne _0813F6C4 + movs r0, 0x6 + bl sub_8003FA0 +_0813F6C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813F6CC: .4byte gUnknown_846483C + thumb_func_end sub_813F66C + + thumb_func_start sub_813F6D0 +sub_813F6D0: @ 813F6D0 + push {lr} + ldr r0, _0813F6F0 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + adds r3, r0, 0 + movs r0, 0 + movs r1, 0xA + movs r2, 0xF + bl sub_809FF48 + pop {r0} + bx r0 + .align 2, 0 +_0813F6F0: .4byte gUnknown_3005008 + thumb_func_end sub_813F6D0 + + thumb_func_start sub_813F6F4 +sub_813F6F4: @ 813F6F4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r3 + ldr r3, [sp, 0x30] + ldr r4, [sp, 0x34] + ldr r6, [sp, 0x38] + ldr r5, [sp, 0x3C] + mov r8, r5 + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + mov r9, r7 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r6, [sp, 0x4] + lsls r4, r5, 1 + adds r4, r5 + ldr r5, _0813F758 @ =gUnknown_8464884 + adds r4, r5 + str r4, [sp, 0x8] + mov r4, r8 + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + str r2, [sp, 0x10] + mov r2, r9 + bl sub_812E5A4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813F758: .4byte gUnknown_8464884 + thumb_func_end sub_813F6F4 + + thumb_func_start sub_813F75C +sub_813F75C: @ 813F75C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + lsls r5, 24 + lsrs r5, 24 + bl sub_809B56C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0x13 + movs r3, 0xE + bl sub_80BF474 + movs r0, 0 + bl sub_80F67A4 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813F75C + + thumb_func_start sub_813F7A8 +sub_813F7A8: @ 813F7A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x1 + movs r3, 0xD + bl sub_810F2E8 + pop {r0} + bx r0 + thumb_func_end sub_813F7A8 + + thumb_func_start sub_813F7C0 +sub_813F7C0: @ 813F7C0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xA + movs r3, 0xF + bl sub_810F2E8 + pop {r0} + bx r0 + thumb_func_end sub_813F7C0 + + thumb_func_start sub_813F7D8 +sub_813F7D8: @ 813F7D8 + push {lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813F800 @ =gUnknown_846487C + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0xD + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r2, 0x2 + movs r3, 0 + bl sub_80BF5D0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0813F800: .4byte gUnknown_846487C + thumb_func_end sub_813F7D8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/cable_car_util.s b/asm/cable_car_util.s new file mode 100644 index 000000000..4a8f99176 --- /dev/null +++ b/asm/cable_car_util.s @@ -0,0 +1,162 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D9614 +sub_80D9614: @ 80D9614 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + ldr r0, [sp, 0x24] + ldr r4, [sp, 0x28] + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + movs r0, 0 + lsrs r4, r3, 24 + cmp r0, r8 + bcs _080D968E +_080D9646: + ldr r2, [sp] + movs r3, 0 + adds r6, r4, 0x1 + adds r0, 0x1 + mov r12, r0 + cmp r3, r7 + bcs _080D9678 + lsls r5, r4, 6 +_080D9656: + lsls r0, r2, 1 + adds r0, r5 + add r0, r10 + mov r1, r9 + strh r1, [r0] + adds r1, r2, 0x1 + adds r0, r1, 0 + asrs r0, 5 + lsls r0, 5 + subs r0, r1, r0 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r7 + bcc _080D9656 +_080D9678: + adds r0, r6, 0 + asrs r0, 5 + lsls r0, 5 + subs r0, r6, r0 + lsls r0, 24 + lsrs r4, r0, 24 + mov r1, r12 + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, r8 + bcc _080D9646 +_080D968E: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D9614 + + thumb_func_start sub_80D96A0 +sub_80D96A0: @ 80D96A0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + ldr r0, [sp, 0x24] + ldr r4, [sp, 0x28] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + movs r0, 0 + adds r5, r1, 0 + lsrs r4, r3, 24 + cmp r0, r9 + bcs _080D971A +_080D96D0: + ldr r2, [sp] + movs r3, 0 + adds r7, r4, 0x1 + adds r0, 0x1 + mov r8, r0 + cmp r3, r12 + bcs _080D9704 + lsls r6, r4, 6 +_080D96E0: + lsls r0, r2, 1 + adds r0, r6 + add r0, r10 + ldrh r1, [r5] + strh r1, [r0] + adds r5, 0x2 + adds r1, r2, 0x1 + adds r0, r1, 0 + asrs r0, 5 + lsls r0, 5 + subs r0, r1, r0 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r12 + bcc _080D96E0 +_080D9704: + adds r0, r7, 0 + asrs r0, 5 + lsls r0, 5 + subs r0, r7, r0 + lsls r0, 24 + lsrs r4, r0, 24 + mov r1, r8 + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, r9 + bcc _080D96D0 +_080D971A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D96A0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/cable_club.s b/asm/cable_club.s new file mode 100644 index 000000000..c3fa3292d --- /dev/null +++ b/asm/cable_club.s @@ -0,0 +1,2526 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8080748 +sub_8080748: @ 8080748 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r4, _08080784 @ =sub_80809F8 + adds r0, r4, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0808077C + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08080788 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r6, [r1, 0xA] + strh r5, [r1, 0xC] +_0808077C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08080784: .4byte sub_80809F8 +_08080788: .4byte gUnknown_3005090 + thumb_func_end sub_8080748 + + thumb_func_start sub_808078C +sub_808078C: @ 808078C + push {r4,r5,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _080807DC @ =gUnknown_2021CD0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_80F7750 + ldr r5, _080807E0 @ =gUnknown_2021D18 + ldr r1, _080807E4 @ =gUnknown_841DF82 + adds r0, r5, 0 + bl sub_8008FCC + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_8002C48 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080807DC: .4byte gUnknown_2021CD0 +_080807E0: .4byte gUnknown_2021D18 +_080807E4: .4byte gUnknown_841DF82 + thumb_func_end sub_808078C + + thumb_func_start sub_80807E8 +sub_80807E8: @ 80807E8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_80F6F9C + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80807E8 + + thumb_func_start sub_8080808 +sub_8080808: @ 8080808 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08080830 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r5, r0 + beq _0808083E + cmp r5, 0x1 + bhi _08080834 + ldrh r0, [r4, 0xA] + bl sub_80807E8 + b _0808083C + .align 2, 0 +_08080830: .4byte gUnknown_3005098 +_08080834: + ldrh r0, [r4, 0xA] + adds r1, r5, 0 + bl sub_808078C +_0808083C: + strh r5, [r4, 0x6] +_0808083E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8080808 + + thumb_func_start sub_8080844 +sub_8080844: @ 8080844 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + bl sub_800A0D0 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x5 + bhi _080808B4 + lsls r0, 2 + ldr r1, _08080868 @ =_0808086C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080868: .4byte _0808086C + .align 2, 0 +_0808086C: + .4byte _08080884 + .4byte _080808B4 + .4byte _08080888 + .4byte _0808088C + .4byte _08080890 + .4byte _08080894 +_08080884: + movs r0, 0x1 + b _080808B6 +_08080888: + movs r0, 0x3 + b _080808B6 +_0808088C: + movs r0, 0x7 + b _080808B6 +_08080890: + movs r0, 0x9 + b _080808B6 +_08080894: + ldr r4, _080808B0 @ =gUnknown_2021CD0 + bl sub_800AA38 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + movs r0, 0x4 + b _080808B6 + .align 2, 0 +_080808B0: .4byte gUnknown_2021CD0 +_080808B4: + movs r0, 0 +_080808B6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8080844 + + thumb_func_start sub_80808BC +sub_80808BC: @ 80808BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_800B0A8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080808D2 + movs r0, 0 + b _080808E2 +_080808D2: + ldr r0, _080808E8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080808EC @ =sub_8080FF0 + str r0, [r1] + movs r0, 0x1 +_080808E2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080808E8: .4byte gUnknown_3005090 +_080808EC: .4byte sub_8080FF0 + thumb_func_end sub_80808BC + + thumb_func_start sub_80808F0 +sub_80808F0: @ 80808F0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08080924 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08080934 + bl sub_800B08C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08080934 + ldr r0, _08080928 @ =gUnknown_202271A + strh r1, [r0] + ldr r1, _0808092C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08080930 @ =sub_8080FB4 + str r1, [r0] + movs r0, 0x1 + b _08080936 + .align 2, 0 +_08080924: .4byte gUnknown_30030F0 +_08080928: .4byte gUnknown_202271A +_0808092C: .4byte gUnknown_3005090 +_08080930: .4byte sub_8080FB4 +_08080934: + movs r0, 0 +_08080936: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80808F0 + + thumb_func_start sub_808093C +sub_808093C: @ 808093C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_800B08C + lsls r0, 24 + cmp r0, 0 + beq _08080952 + movs r0, 0x1 + bl sub_800B09C +_08080952: + ldr r0, _08080964 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08080968 + movs r0, 0 + b _0808097E + .align 2, 0 +_08080964: .4byte gUnknown_30030F0 +_08080968: + ldr r1, _08080984 @ =gUnknown_202271A + movs r0, 0 + strh r0, [r1] + ldr r1, _08080988 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0808098C @ =sub_8080FB4 + str r1, [r0] + movs r0, 0x1 +_0808097E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08080984: .4byte gUnknown_202271A +_08080988: .4byte gUnknown_3005090 +_0808098C: .4byte sub_8080FB4 + thumb_func_end sub_808093C + + thumb_func_start sub_8080990 +sub_8080990: @ 8080990 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_800B054 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080809A6 + movs r0, 0 + b _080809B6 +_080809A6: + ldr r0, _080809BC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080809C0 @ =sub_8080FF0 + str r0, [r1] + movs r0, 0x1 +_080809B6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080809BC: .4byte gUnknown_3005090 +_080809C0: .4byte sub_8080FF0 + thumb_func_end sub_8080990 + + thumb_func_start sub_80809C4 +sub_80809C4: @ 80809C4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080809F4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080809EE + movs r0, 0x2 + bl sub_800A474 + adds r0, r4, 0 + bl sub_8077508 +_080809EE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080809F4: .4byte gUnknown_3005090 + thumb_func_end sub_80809C4 + + thumb_func_start sub_80809F8 +sub_80809F8: @ 80809F8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08080A28 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r3, 0 + ldrsh r2, [r4, r3] + cmp r2, 0 + bne _08080A30 + bl sub_800A0B4 + bl sub_800AA24 + bl sub_800A270 + ldr r0, _08080A2C @ =gUnknown_83C6AB0 + bl sub_8003CE4 + strh r0, [r4, 0xA] + b _08080A3C + .align 2, 0 +_08080A28: .4byte gUnknown_3005098 +_08080A2C: .4byte gUnknown_83C6AB0 +_08080A30: + cmp r2, 0x9 + ble _08080A3C + subs r0, 0x8 + adds r0, r1, r0 + ldr r1, _08080A48 @ =sub_8080A4C + str r1, [r0] +_08080A3C: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08080A48: .4byte sub_8080A4C + thumb_func_end sub_80809F8 + + thumb_func_start sub_8080A4C +sub_8080A4C: @ 8080A4C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_800AA38 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + bl sub_80808F0 + cmp r0, 0x1 + beq _08080AC0 + adds r0, r4, 0 + bl sub_808093C + cmp r0, 0x1 + beq _08080AC0 + cmp r5, 0x1 + bls _08080AC0 + movs r0, 0x1 + bl sub_800B09C + ldr r1, _08080AA4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r1 + movs r0, 0 + strh r0, [r4, 0xE] + bl sub_800AA48 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08080AB0 + movs r0, 0x15 + bl sub_80722CC + ldr r0, _08080AA8 @ =gUnknown_81BC4CE + bl sub_8069464 + ldr r0, _08080AAC @ =sub_8080AD0 + b _08080ABE + .align 2, 0 +_08080AA4: .4byte gUnknown_3005090 +_08080AA8: .4byte gUnknown_81BC4CE +_08080AAC: .4byte sub_8080AD0 +_08080AB0: + movs r0, 0x16 + bl sub_80722CC + ldr r0, _08080AC8 @ =gUnknown_81BC54C + bl sub_8069464 + ldr r0, _08080ACC @ =sub_8080CDC +_08080ABE: + str r0, [r4] +_08080AC0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08080AC8: .4byte gUnknown_81BC54C +_08080ACC: .4byte sub_8080CDC + thumb_func_end sub_8080A4C + + thumb_func_start sub_8080AD0 +sub_8080AD0: @ 8080AD0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80808F0 + cmp r0, 0x1 + beq _08080B10 + adds r0, r4, 0 + bl sub_8080990 + cmp r0, 0x1 + beq _08080B10 + adds r0, r4, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080B10 + bl sub_8069510 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _08080B10 + ldr r0, _08080B18 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + strh r2, [r1, 0xE] + ldr r0, _08080B1C @ =sub_8080B20 + str r0, [r1] +_08080B10: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08080B18: .4byte gUnknown_3005090 +_08080B1C: .4byte sub_8080B20 + thumb_func_end sub_8080AD0 + + thumb_func_start sub_8080B20 +sub_8080B20: @ 8080B20 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + mov r8, r0 + ldr r0, _08080BB4 @ =gUnknown_3005098 + mov r9, r0 + mov r7, r8 + add r7, r9 + bl sub_800AA38 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + bl sub_80808F0 + cmp r0, 0x1 + beq _08080BA8 + adds r0, r4, 0 + bl sub_8080990 + cmp r0, 0x1 + beq _08080BA8 + adds r0, r4, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080BA8 + adds r6, r5, 0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8080808 + ldr r0, _08080BB8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08080BA8 + movs r1, 0x2 + ldrsh r0, [r7, r1] + cmp r5, r0 + blt _08080BA8 + adds r0, r6, 0 + bl sub_800A900 + ldrh r0, [r7, 0xA] + bl sub_80807E8 + ldr r0, _08080BBC @ =gUnknown_2021CD0 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + ldr r0, _08080BC0 @ =gUnknown_81BC50D + bl sub_8069464 + mov r0, r9 + subs r0, 0x8 + add r0, r8 + ldr r1, _08080BC4 @ =sub_8080BC8 + str r1, [r0] +_08080BA8: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08080BB4: .4byte gUnknown_3005098 +_08080BB8: .4byte gUnknown_30030F0 +_08080BBC: .4byte gUnknown_2021CD0 +_08080BC0: .4byte gUnknown_81BC50D +_08080BC4: .4byte sub_8080BC8 + thumb_func_end sub_8080B20 + + thumb_func_start sub_8080BC8 +sub_8080BC8: @ 8080BC8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + adds r0, r5, 0 + bl sub_80808F0 + cmp r0, 0x1 + beq _08080C5C + adds r0, r5, 0 + bl sub_8080990 + cmp r0, 0x1 + beq _08080C5C + adds r0, r5, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080C5C + bl sub_8069510 + lsls r0, 24 + cmp r0, 0 + bne _08080C5C + bl sub_800A944 + adds r4, r0, 0 + bl sub_800AA38 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _08080C16 + ldr r0, _08080C2C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08080C3C +_08080C16: + ldr r0, _08080C30 @ =gUnknown_81BC4CE + bl sub_8069464 + ldr r1, _08080C34 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08080C38 @ =sub_8080AD0 + str r1, [r0] + b _08080C5C + .align 2, 0 +_08080C2C: .4byte gUnknown_30030F0 +_08080C30: .4byte gUnknown_81BC4CE +_08080C34: .4byte gUnknown_3005090 +_08080C38: .4byte sub_8080AD0 +_08080C3C: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08080C5C + movs r0, 0x5 + bl sub_80722CC + bl sub_800A5BC + ldr r0, _08080C64 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _08080C68 @ =sub_8080C6C + str r0, [r1] +_08080C5C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08080C64: .4byte gUnknown_3005090 +_08080C68: .4byte sub_8080C6C + thumb_func_end sub_8080BC8 + + thumb_func_start sub_8080C6C +sub_8080C6C: @ 8080C6C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08080CB0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + ldrb r7, [r5, 0xA] + ldrb r6, [r5, 0xC] + adds r0, r4, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080CCE + adds r0, r4, 0 + bl sub_808102C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08080CCE + bl sub_800AA38 + adds r4, r0, 0 + bl sub_800A944 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _08080CB8 + ldr r0, _08080CB4 @ =sub_8080FF0 + b _08080CCC + .align 2, 0 +_08080CB0: .4byte gUnknown_3005090 +_08080CB4: .4byte sub_8080FF0 +_08080CB8: + ldr r4, _08080CD4 @ =gUnknown_20370D0 + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_8080844 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + beq _08080CCE + ldr r0, _08080CD8 @ =sub_8080DC0 +_08080CCC: + str r0, [r5] +_08080CCE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08080CD4: .4byte gUnknown_20370D0 +_08080CD8: .4byte sub_8080DC0 + thumb_func_end sub_8080C6C + + thumb_func_start sub_8080CDC +sub_8080CDC: @ 8080CDC + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08080D30 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + ldrb r7, [r5, 0xA] + ldrb r6, [r5, 0xC] + adds r0, r4, 0 + bl sub_80808F0 + cmp r0, 0x1 + beq _08080D74 + adds r0, r4, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080D74 + ldr r4, _08080D34 @ =gUnknown_20370D0 + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_8080844 + adds r1, r0, 0 + strh r1, [r4] + lsls r0, r1, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08080D74 + subs r0, r1, 0x3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08080D3C + bl sub_800AAC0 + bl sub_80694F4 + ldr r0, _08080D38 @ =sub_8080F78 + b _08080D72 + .align 2, 0 +_08080D30: .4byte gUnknown_3005090 +_08080D34: .4byte gUnknown_20370D0 +_08080D38: .4byte sub_8080F78 +_08080D3C: + cmp r2, 0x7 + beq _08080D44 + cmp r2, 0x9 + bne _08080D54 +_08080D44: + bl sub_80098B8 + bl sub_80694F4 + ldr r0, _08080D50 @ =sub_8080F78 + b _08080D72 + .align 2, 0 +_08080D50: .4byte sub_8080F78 +_08080D54: + bl sub_800AA38 + ldr r4, _08080D7C @ =gUnknown_3005030 + strb r0, [r4] + bl sub_800A404 + ldr r1, _08080D80 @ =gUnknown_300502C + strb r0, [r1] + ldrb r0, [r4] + bl sub_800A900 + ldr r0, _08080D84 @ =gUnknown_2022618 + bl sub_80898E8 + ldr r0, _08080D88 @ =sub_8080E6C +_08080D72: + str r0, [r5] +_08080D74: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08080D7C: .4byte gUnknown_3005030 +_08080D80: .4byte gUnknown_300502C +_08080D84: .4byte gUnknown_2022618 +_08080D88: .4byte sub_8080E6C + thumb_func_end sub_8080CDC + + thumb_func_start sub_8080D8C +sub_8080D8C: @ 8080D8C + push {r4,r5,lr} + movs r5, 0 + ldr r4, _08080D94 @ =gUnknown_202273C + b _08080DAC + .align 2, 0 +_08080D94: .4byte gUnknown_202273C +_08080D98: + ldrb r0, [r4] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08080DA8 + movs r0, 0x1 + b _08080DBA +_08080DA8: + adds r4, 0x1C + adds r5, 0x1 +_08080DAC: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + blt _08080D98 + movs r0, 0 +_08080DBA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8080D8C + + thumb_func_start sub_8080DC0 +sub_8080DC0: @ 8080DC0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080E50 + ldr r0, _08080DE8 @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0x4 + bne _08080DEC + bl sub_8080D8C + cmp r0, 0x1 + beq _08080DFE + bl sub_800AAC0 + b _08080E02 + .align 2, 0 +_08080DE8: .4byte gUnknown_20370D0 +_08080DEC: + cmp r0, 0x3 + bne _08080DF6 + bl sub_800AAC0 + b _08080E02 +_08080DF6: + cmp r0, 0x7 + beq _08080DFE + cmp r0, 0x9 + bne _08080E20 +_08080DFE: + bl sub_80098B8 +_08080E02: + bl sub_80694F4 + ldr r0, _08080E18 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08080E1C @ =sub_8080F78 + str r0, [r1] + b _08080E50 + .align 2, 0 +_08080E18: .4byte gUnknown_3005090 +_08080E1C: .4byte sub_8080F78 +_08080E20: + bl sub_800AA38 + ldr r4, _08080E58 @ =gUnknown_3005030 + strb r0, [r4] + bl sub_800A404 + ldr r1, _08080E5C @ =gUnknown_300502C + strb r0, [r1] + ldrb r0, [r4] + bl sub_800A900 + ldr r0, _08080E60 @ =gUnknown_2022618 + bl sub_80898E8 + ldr r1, _08080E64 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08080E68 @ =sub_8080E6C + str r1, [r0] + movs r0, 0x2 + bl sub_800A474 +_08080E50: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08080E58: .4byte gUnknown_3005030 +_08080E5C: .4byte gUnknown_300502C +_08080E60: .4byte gUnknown_2022618 +_08080E64: .4byte gUnknown_3005090 +_08080E68: .4byte sub_8080E6C + thumb_func_end sub_8080DC0 + + thumb_func_start sub_8080E6C +sub_8080E6C: @ 8080E6C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r7, 0 + bl sub_80808BC + cmp r0, 0x1 + beq _08080F66 + bl sub_800A4EC + adds r4, r0, 0 + bl sub_800A8A4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _08080F66 + movs r5, 0 + lsls r0, r7, 2 + mov r8, r0 + b _08080EF8 +_08080E9A: + ldr r1, _08080ED0 @ =gUnknown_202273C + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r6, r0, r1 + ldrb r0, [r6] + subs r0, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _08080EDC + lsls r1, r5, 8 + ldr r0, _08080ED4 @ =gUnknown_2022118 + adds r1, r0 + ldr r0, _08080ED8 @ =gUnknown_2039624 + lsls r4, r5, 1 + adds r4, r5 + lsls r4, 5 + adds r4, r0 + adds r0, r4, 0 + movs r2, 0x38 + bl memcpy + ldrh r0, [r6] + adds r4, 0x38 + strb r0, [r4] + b _08080EF2 + .align 2, 0 +_08080ED0: .4byte gUnknown_202273C +_08080ED4: .4byte gUnknown_2022118 +_08080ED8: .4byte gUnknown_2039624 +_08080EDC: + lsls r1, r5, 8 + ldr r0, _08080F3C @ =gUnknown_2022118 + adds r1, r0 + ldr r2, _08080F40 @ =gUnknown_2039624 + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 5 + adds r0, r2 + movs r2, 0x60 + bl memcpy +_08080EF2: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08080EF8: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bcc _08080E9A + movs r0, 0 + bl sub_800B09C + bl sub_800A550 + bl sub_80694F4 + ldr r0, _08080F44 @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0x1 + bne _08080F54 + ldr r0, _08080F48 @ =gUnknown_202271A + ldrh r1, [r0] + ldr r0, _08080F4C @ =0x00004411 + ldr r0, _08080F50 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x12] + bl sub_80807E8 + bl sub_8069B34 + adds r0, r7, 0 + bl sub_8077508 + b _08080F66 + .align 2, 0 +_08080F3C: .4byte gUnknown_2022118 +_08080F40: .4byte gUnknown_2039624 +_08080F44: .4byte gUnknown_20370D0 +_08080F48: .4byte gUnknown_202271A +_08080F4C: .4byte 0x00004411 +_08080F50: .4byte gUnknown_3005090 +_08080F54: + bl sub_800AAC0 + ldr r0, _08080F70 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08080F74 @ =sub_8080F78 + str r0, [r1] +_08080F66: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08080F70: .4byte gUnknown_3005090 +_08080F74: .4byte sub_8080F78 + thumb_func_end sub_8080E6C + + thumb_func_start sub_8080F78 +sub_8080F78: @ 8080F78 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08080FAC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08080FA6 + ldr r0, _08080FB0 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0x12] + bl sub_80807E8 + bl sub_8069B34 + ldrb r0, [r4, 0x12] + bl sub_8003E3C + adds r0, r5, 0 + bl sub_8077508 +_08080FA6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08080FAC: .4byte gUnknown_3003F64 +_08080FB0: .4byte gUnknown_3005090 + thumb_func_end sub_8080F78 + + thumb_func_start sub_8080FB4 +sub_8080FB4: @ 8080FB4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _08080FE8 @ =gUnknown_20370D0 + movs r0, 0x5 + strh r0, [r1] + ldr r1, _08080FEC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x12] + bl sub_80807E8 + bl sub_80694F4 + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08080FE8: .4byte gUnknown_20370D0 +_08080FEC: .4byte gUnknown_3005090 + thumb_func_end sub_8080FB4 + + thumb_func_start sub_8080FF0 +sub_8080FF0: @ 8080FF0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _08081024 @ =gUnknown_20370D0 + movs r0, 0x6 + strh r0, [r1] + ldr r1, _08081028 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x12] + bl sub_80807E8 + bl sub_80694F4 + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081024: .4byte gUnknown_20370D0 +_08081028: .4byte gUnknown_3005090 + thumb_func_end sub_8080FF0 + + thumb_func_start sub_808102C +sub_808102C: @ 808102C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08081050 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r2, r1, r2 + ldrh r0, [r2, 0x10] + adds r0, 0x1 + strh r0, [r2, 0x10] + lsls r0, 16 + movs r1, 0x96 + lsls r1, 18 + cmp r0, r1 + bgt _08081054 + movs r0, 0 + b _0808105A + .align 2, 0 +_08081050: .4byte gUnknown_3005090 +_08081054: + ldr r0, _08081060 @ =sub_8080FF0 + str r0, [r2] + movs r0, 0x1 +_0808105A: + pop {r1} + bx r1 + .align 2, 0 +_08081060: .4byte sub_8080FF0 + thumb_func_end sub_808102C + + thumb_func_start sub_8081064 +sub_8081064: @ 8081064 + push {r4,lr} + movs r3, 0x2 + movs r2, 0x2 + ldr r0, _0808107C @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x2 + beq _08081098 + cmp r0, 0x2 + bgt _08081080 + cmp r0, 0x1 + beq _08081086 + b _080810B4 + .align 2, 0 +_0808107C: .4byte gUnknown_20370C0 +_08081080: + cmp r0, 0x5 + beq _080810A8 + b _080810B4 +_08081086: + movs r3, 0x2 + ldr r1, _08081090 @ =gUnknown_202271A + ldr r4, _08081094 @ =0x00002233 + b _080810B0 + .align 2, 0 +_08081090: .4byte gUnknown_202271A +_08081094: .4byte 0x00002233 +_08081098: + movs r3, 0x2 + ldr r1, _080810A0 @ =gUnknown_202271A + ldr r4, _080810A4 @ =0x00002244 + b _080810B0 + .align 2, 0 +_080810A0: .4byte gUnknown_202271A +_080810A4: .4byte 0x00002244 +_080810A8: + movs r3, 0x4 + movs r2, 0x4 + ldr r1, _080810C4 @ =gUnknown_202271A + ldr r4, _080810C8 @ =0x00002255 +_080810B0: + adds r0, r4, 0 + strh r0, [r1] +_080810B4: + adds r0, r3, 0 + adds r1, r2, 0 + bl sub_8080748 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080810C4: .4byte gUnknown_202271A +_080810C8: .4byte 0x00002255 + thumb_func_end sub_8081064 + + thumb_func_start sub_80810CC +sub_80810CC: @ 80810CC + push {lr} + ldr r1, _080810E8 @ =gUnknown_202271A + ldr r2, _080810EC @ =0x00001133 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080810F0 @ =gUnknown_2022B4C + movs r0, 0 + str r0, [r1] + movs r0, 0x2 + movs r1, 0x2 + bl sub_8080748 + pop {r0} + bx r0 + .align 2, 0 +_080810E8: .4byte gUnknown_202271A +_080810EC: .4byte 0x00001133 +_080810F0: .4byte gUnknown_2022B4C + thumb_func_end sub_80810CC + + thumb_func_start sub_80810F4 +sub_80810F4: @ 80810F4 + push {lr} + ldr r1, _08081118 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + ldr r1, _0808111C @ =gUnknown_202271A + ldr r2, _08081120 @ =0x00003311 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08081124 @ =gUnknown_2022B4C + movs r0, 0 + str r0, [r1] + movs r0, 0x2 + movs r1, 0x4 + bl sub_8080748 + pop {r0} + bx r0 + .align 2, 0 +_08081118: .4byte gUnknown_20370D0 +_0808111C: .4byte gUnknown_202271A +_08081120: .4byte 0x00003311 +_08081124: .4byte gUnknown_2022B4C + thumb_func_end sub_80810F4 + + thumb_func_start sub_8081128 +sub_8081128: @ 8081128 + push {lr} + ldr r1, _08081144 @ =gUnknown_202271A + ldr r2, _08081148 @ =0x00006601 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _0808114C @ =gUnknown_2022B4C + movs r0, 0 + str r0, [r1] + movs r0, 0x4 + movs r1, 0x4 + bl sub_8080748 + pop {r0} + bx r0 + .align 2, 0 +_08081144: .4byte gUnknown_202271A +_08081148: .4byte 0x00006601 +_0808114C: .4byte gUnknown_2022B4C + thumb_func_end sub_8081128 + + thumb_func_start sub_8081150 +sub_8081150: @ 8081150 + push {lr} + ldr r0, _08081164 @ =sub_80811FC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08081168 + movs r0, 0xFF + b _080811EC + .align 2, 0 +_08081164: .4byte sub_80811FC +_08081168: + ldr r0, _0808117C @ =gUnknown_20370C0 + ldrh r0, [r0] + subs r0, 0x1 + cmp r0, 0x4 + bhi _080811E0 + lsls r0, 2 + ldr r1, _08081180 @ =_08081184 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808117C: .4byte gUnknown_20370C0 +_08081180: .4byte _08081184 + .align 2, 0 +_08081184: + .4byte _08081198 + .4byte _080811A8 + .4byte _080811C8 + .4byte _080811D8 + .4byte _080811B8 +_08081198: + ldr r1, _080811A0 @ =gUnknown_202271A + ldr r2, _080811A4 @ =0x00002233 + b _080811DC + .align 2, 0 +_080811A0: .4byte gUnknown_202271A +_080811A4: .4byte 0x00002233 +_080811A8: + ldr r1, _080811B0 @ =gUnknown_202271A + ldr r2, _080811B4 @ =0x00002244 + b _080811DC + .align 2, 0 +_080811B0: .4byte gUnknown_202271A +_080811B4: .4byte 0x00002244 +_080811B8: + ldr r1, _080811C0 @ =gUnknown_202271A + ldr r2, _080811C4 @ =0x00002255 + b _080811DC + .align 2, 0 +_080811C0: .4byte gUnknown_202271A +_080811C4: .4byte 0x00002255 +_080811C8: + ldr r1, _080811D0 @ =gUnknown_202271A + ldr r2, _080811D4 @ =0x00001111 + b _080811DC + .align 2, 0 +_080811D0: .4byte gUnknown_202271A +_080811D4: .4byte 0x00001111 +_080811D8: + ldr r1, _080811F0 @ =gUnknown_202271A + ldr r2, _080811F4 @ =0x00003322 +_080811DC: + adds r0, r2, 0 + strh r0, [r1] +_080811E0: + ldr r0, _080811F8 @ =sub_80811FC + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 +_080811EC: + pop {r1} + bx r1 + .align 2, 0 +_080811F0: .4byte gUnknown_202271A +_080811F4: .4byte 0x00003322 +_080811F8: .4byte sub_80811FC + thumb_func_end sub_8081150 + + thumb_func_start sub_80811FC +sub_80811FC: @ 80811FC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08081228 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r3, 0 + ldrsh r2, [r4, r3] + cmp r2, 0 + bne _08081230 + bl sub_8009804 + bl sub_800A270 + ldr r0, _0808122C @ =sub_8081A90 + movs r1, 0x50 + bl sub_807741C + b _0808123C + .align 2, 0 +_08081228: .4byte gUnknown_3005098 +_0808122C: .4byte sub_8081A90 +_08081230: + cmp r2, 0x9 + ble _0808123C + subs r0, 0x8 + adds r0, r1, r0 + ldr r1, _08081248 @ =sub_808124C + str r1, [r0] +_0808123C: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081248: .4byte sub_808124C + thumb_func_end sub_80811FC + + thumb_func_start sub_808124C +sub_808124C: @ 808124C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08081292 + bl sub_800AA48 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08081284 + ldr r0, _0808127C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08081280 @ =sub_80812A0 + b _08081290 + .align 2, 0 +_0808127C: .4byte gUnknown_3005090 +_08081280: .4byte sub_80812A0 +_08081284: + ldr r0, _08081298 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _0808129C @ =sub_80812D8 +_08081290: + str r0, [r1] +_08081292: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081298: .4byte gUnknown_3005090 +_0808129C: .4byte sub_80812D8 + thumb_func_end sub_808124C + + thumb_func_start sub_80812A0 +sub_80812A0: @ 80812A0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_800A944 + adds r4, r0, 0 + bl sub_800AA38 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080812CA + bl sub_800A5BC + ldr r0, _080812D0 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080812D4 @ =sub_80812D8 + str r0, [r1] +_080812CA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080812D0: .4byte gUnknown_3005090 +_080812D4: .4byte sub_80812D8 + thumb_func_end sub_80812A0 + + thumb_func_start sub_80812D8 +sub_80812D8: @ 80812D8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08081308 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08081300 + bl sub_800A1F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08081300 + bl sub_800A9A4 + bl sub_8009FE8 + adds r0, r4, 0 + bl sub_8077508 +_08081300: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081308: .4byte gUnknown_3003F64 + thumb_func_end sub_80812D8 + + thumb_func_start sub_808130C +sub_808130C: @ 808130C + push {lr} + bl sub_806F67C + pop {r0} + bx r0 + thumb_func_end sub_808130C + + thumb_func_start sub_8081318 +sub_8081318: @ 8081318 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0808133C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _08081332 + b _0808143A +_08081332: + lsls r0, 2 + ldr r1, _08081340 @ =_08081344 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808133C: .4byte gUnknown_3005090 +_08081340: .4byte _08081344 + .align 2, 0 +_08081344: + .4byte _0808135C + .4byte _0808137C + .4byte _0808138C + .4byte _0808139C + .4byte _080813A2 + .4byte _080813B8 +_0808135C: + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r1, _08081374 @ =gUnknown_202271A + ldr r2, _08081378 @ =0x00002211 + adds r0, r2, 0 + strh r0, [r1] + bl sub_800A068 + b _080813AA + .align 2, 0 +_08081374: .4byte gUnknown_202271A +_08081378: .4byte 0x00002211 +_0808137C: + ldr r0, _08081388 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + b _080813A6 + .align 2, 0 +_08081388: .4byte gUnknown_2037AB8 +_0808138C: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _0808143A + b _080813AA +_0808139C: + bl sub_800AAC0 + b _080813AA +_080813A2: + ldr r0, _080813B4 @ =gUnknown_3003F64 + ldrb r0, [r0] +_080813A6: + cmp r0, 0 + bne _0808143A +_080813AA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0808143A + .align 2, 0 +_080813B4: .4byte gUnknown_3003F64 +_080813B8: + ldr r0, _080813CC @ =gUnknown_202273C + ldr r0, [r0, 0x4] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080813D4 + ldr r0, _080813D0 @ =0x00000109 + bl sub_8044090 + b _080813DC + .align 2, 0 +_080813CC: .4byte gUnknown_202273C +_080813D0: .4byte 0x00000109 +_080813D4: + movs r0, 0x85 + lsls r0, 1 + bl sub_8044090 +_080813DC: + ldr r0, _080813F0 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x2 + beq _08081404 + cmp r0, 0x2 + bgt _080813F4 + cmp r0, 0x1 + beq _080813FA + b _0808141A + .align 2, 0 +_080813F0: .4byte gUnknown_20370C0 +_080813F4: + cmp r0, 0x5 + beq _08081410 + b _0808141A +_080813FA: + ldr r1, _08081400 @ =gUnknown_2022B4C + movs r0, 0xA + b _08081418 + .align 2, 0 +_08081400: .4byte gUnknown_2022B4C +_08081404: + ldr r1, _0808140C @ =gUnknown_2022B4C + movs r0, 0xB + b _08081418 + .align 2, 0 +_0808140C: .4byte gUnknown_2022B4C +_08081410: + bl sub_80A03D8 + ldr r1, _08081440 @ =gUnknown_2022B4C + movs r0, 0x4B +_08081418: + str r0, [r1] +_0808141A: + bl sub_80563F0 + ldr r1, _08081444 @ =gUnknown_20386AE + movs r2, 0x80 + lsls r2, 4 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _08081448 @ =sub_800FD9C + bl sub_8000544 + ldr r1, _0808144C @ =gUnknown_30030F0 + ldr r0, _08081450 @ =sub_8081668 + str r0, [r1, 0x8] + adds r0, r5, 0 + bl sub_8077508 +_0808143A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081440: .4byte gUnknown_2022B4C +_08081444: .4byte gUnknown_20386AE +_08081448: .4byte sub_800FD9C +_0808144C: .4byte gUnknown_30030F0 +_08081450: .4byte sub_8081668 + thumb_func_end sub_8081318 + + thumb_func_start sub_8081454 +sub_8081454: @ 8081454 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08081478 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x7 + bls _0808146E + b _0808160A +_0808146E: + lsls r0, 2 + ldr r1, _0808147C @ =_08081480 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08081478: .4byte gUnknown_3005098 +_0808147C: .4byte _08081480 + .align 2, 0 +_08081480: + .4byte _080814A0 + .4byte _080814C4 + .4byte _080814DC + .4byte _080814F0 + .4byte _0808154C + .4byte _08081560 + .4byte _0808156A + .4byte _0808157A +_080814A0: + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080814BC @ =gUnknown_202271A + ldr r2, _080814C0 @ =0x00002211 + adds r1, r2, 0 + strh r1, [r0] + bl sub_800A068 + movs r0, 0x1 + strh r0, [r6] + b _0808160A + .align 2, 0 +_080814BC: .4byte gUnknown_202271A +_080814C0: .4byte 0x00002211 +_080814C4: + ldr r0, _080814D8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080814D2 + b _0808160A +_080814D2: + movs r0, 0x2 + strh r0, [r6] + b _0808160A + .align 2, 0 +_080814D8: .4byte gUnknown_2037AB8 +_080814DC: + ldr r1, _080814EC @ =gUnknown_2022720 + movs r0, 0 + movs r2, 0x1C + bl sub_800A448 + movs r0, 0x3 + strh r0, [r6] + b _0808160A + .align 2, 0 +_080814EC: .4byte gUnknown_2022720 +_080814F0: + bl sub_800A4EC + adds r4, r0, 0 + bl sub_800A8D4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _08081504 + b _0808160A +_08081504: + movs r4, 0 + ldr r5, _0808150C @ =gUnknown_202273C + b _08081536 + .align 2, 0 +_0808150C: .4byte gUnknown_202273C +_08081510: + lsls r1, r4, 8 + ldr r2, _08081548 @ =gUnknown_2022118 + adds r0, r5, 0 + adds r1, r2 + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + ldr r1, [r1] + str r1, [r0] + adds r0, r5, 0 + bl sub_800B284 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_800A588 + adds r5, 0x1C + adds r4, 0x1 +_08081536: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _08081510 + movs r0, 0x4 + strh r0, [r6] + b _0808160A + .align 2, 0 +_08081548: .4byte gUnknown_2022118 +_0808154C: + ldrh r0, [r6, 0x2] + adds r0, 0x1 + strh r0, [r6, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _0808160A + movs r0, 0x5 + strh r0, [r6] + b _0808160A +_08081560: + bl sub_800AB9C + movs r0, 0x6 + strh r0, [r6] + b _0808160A +_0808156A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0808160A + movs r0, 0x7 + strh r0, [r6] + b _0808160A +_0808157A: + ldr r0, _08081590 @ =gUnknown_202273C + ldr r0, [r0, 0x4] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08081598 + ldr r0, _08081594 @ =0x00000109 + bl sub_8044090 + b _080815A0 + .align 2, 0 +_08081590: .4byte gUnknown_202273C +_08081594: .4byte 0x00000109 +_08081598: + movs r0, 0x85 + lsls r0, 1 + bl sub_8044090 +_080815A0: + ldr r0, _080815B8 @ =gUnknown_202273C + ldr r1, _080815BC @ =0x00002211 + str r1, [r0, 0x14] + ldr r0, _080815C0 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x2 + beq _080815D4 + cmp r0, 0x2 + bgt _080815C4 + cmp r0, 0x1 + beq _080815CA + b _080815EA + .align 2, 0 +_080815B8: .4byte gUnknown_202273C +_080815BC: .4byte 0x00002211 +_080815C0: .4byte gUnknown_20370C0 +_080815C4: + cmp r0, 0x5 + beq _080815E0 + b _080815EA +_080815CA: + ldr r1, _080815D0 @ =gUnknown_2022B4C + movs r0, 0xA + b _080815E8 + .align 2, 0 +_080815D0: .4byte gUnknown_2022B4C +_080815D4: + ldr r1, _080815DC @ =gUnknown_2022B4C + movs r0, 0xB + b _080815E8 + .align 2, 0 +_080815DC: .4byte gUnknown_2022B4C +_080815E0: + bl sub_80A03D8 + ldr r1, _08081610 @ =gUnknown_2022B4C + movs r0, 0x4B +_080815E8: + str r0, [r1] +_080815EA: + bl sub_80563F0 + ldr r1, _08081614 @ =gUnknown_20386AE + movs r3, 0x80 + lsls r3, 4 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _08081618 @ =sub_800FD9C + bl sub_8000544 + ldr r1, _0808161C @ =gUnknown_30030F0 + ldr r0, _08081620 @ =sub_8081668 + str r0, [r1, 0x8] + adds r0, r4, 0 + bl sub_8077508 +_0808160A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08081610: .4byte gUnknown_2022B4C +_08081614: .4byte gUnknown_20386AE +_08081618: .4byte sub_800FD9C +_0808161C: .4byte gUnknown_30030F0 +_08081620: .4byte sub_8081668 + thumb_func_end sub_8081454 + + thumb_func_start sub_8081624 +sub_8081624: @ 8081624 + push {r4,lr} + ldr r0, _0808163C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _08081640 + cmp r0, 0x1 + beq _0808164C + b _0808165C + .align 2, 0 +_0808163C: .4byte gUnknown_30030F0 +_08081640: + bl sub_800AAC0 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0808165C +_0808164C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0808165C + ldr r0, _08081664 @ =sub_80567DC + bl sub_8000544 +_0808165C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081664: .4byte sub_80567DC + thumb_func_end sub_8081624 + + thumb_func_start sub_8081668 +sub_8081668: @ 8081668 + push {r4,r5,lr} + ldr r2, _080816B0 @ =gUnknown_2022B4C + ldr r0, [r2] + ldr r1, _080816B4 @ =0x0000ffdf + ands r0, r1 + str r0, [r2] + bl sub_8055DB8 + bl sub_804C230 + bl sub_804C440 + bl sub_81134B8 + ldr r0, _080816B8 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x5 + beq _0808170A + ldr r0, _080816BC @ =gUnknown_300502C + ldrb r0, [r0] + movs r5, 0x1 + eors r0, r5 + bl sub_80CD98C + ldr r0, _080816C0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0808170A + ldr r0, _080816C4 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x1 + beq _080816C8 + cmp r0, 0x2 + beq _080816EC + b _0808170A + .align 2, 0 +_080816B0: .4byte gUnknown_2022B4C +_080816B4: .4byte 0x0000ffdf +_080816B8: .4byte gUnknown_20370C0 +_080816BC: .4byte gUnknown_300502C +_080816C0: .4byte gUnknown_3003F3C +_080816C4: .4byte gUnknown_2023E8A +_080816C8: + ldr r4, _080816E8 @ =gUnknown_202273C + bl sub_800A404 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r4, 0x4 + adds r1, r4 + ldr r1, [r1] + movs r0, 0 + bl sub_8144714 + b _0808170A + .align 2, 0 +_080816E8: .4byte gUnknown_202273C +_080816EC: + ldr r4, _08081718 @ =gUnknown_202273C + bl sub_800A404 + eors r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r4, 0x4 + adds r1, r4 + ldr r1, [r1] + movs r0, 0x1 + bl sub_8144714 +_0808170A: + bl sub_811B0D0 + cmp r0, 0x1 + bne _08081724 + ldr r1, _0808171C @ =gUnknown_30030F0 + ldr r0, _08081720 @ =sub_8081624 + b _08081728 + .align 2, 0 +_08081718: .4byte gUnknown_202273C +_0808171C: .4byte gUnknown_30030F0 +_08081720: .4byte sub_8081624 +_08081724: + ldr r1, _08081738 @ =gUnknown_30030F0 + ldr r0, _0808173C @ =sub_8056854 +_08081728: + str r0, [r1, 0x8] + ldr r0, _08081740 @ =sub_806FB7C + bl sub_8000544 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081738: .4byte gUnknown_30030F0 +_0808173C: .4byte sub_8056854 +_08081740: .4byte sub_806FB7C + thumb_func_end sub_8081668 + + thumb_func_start sub_8081744 +sub_8081744: @ 8081744 + push {lr} + ldr r0, _0808176C @ =gUnknown_20370C0 + ldrh r1, [r0] + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _08081758 + cmp r1, 0x5 + bne _08081760 +_08081758: + bl sub_804C230 + bl sub_804C440 +_08081760: + movs r0, 0x7F + bl sub_8055454 + pop {r0} + bx r0 + .align 2, 0 +_0808176C: .4byte gUnknown_20370C0 + thumb_func_end sub_8081744 + + thumb_func_start sub_8081770 +sub_8081770: @ 8081770 + push {lr} + bl sub_8057F5C + pop {r0} + bx r0 + thumb_func_end sub_8081770 + + thumb_func_start sub_808177C +sub_808177C: @ 808177C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080817A0 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080817C0 + cmp r0, 0x1 + bgt _080817A4 + cmp r0, 0 + beq _080817AE + b _08081820 + .align 2, 0 +_080817A0: .4byte gUnknown_3005090 +_080817A4: + cmp r0, 0x2 + beq _080817E0 + cmp r0, 0x3 + beq _0808180C + b _08081820 +_080817AE: + ldr r0, _080817BC @ =gUnknown_81BC4AC + bl sub_806943C + movs r0, 0x1 + strh r0, [r5, 0x8] + b _08081820 + .align 2, 0 +_080817BC: .4byte gUnknown_81BC4AC +_080817C0: + bl sub_806951C + lsls r0, 24 + cmp r0, 0 + beq _08081820 + bl sub_8057F34 + ldr r0, _080817DC @ =gUnknown_20370C2 + ldrb r0, [r0] + bl sub_80096F8 + movs r0, 0x2 + strh r0, [r5, 0x8] + b _08081820 + .align 2, 0 +_080817DC: .4byte gUnknown_20370C2 +_080817E0: + bl sub_8057EC0 + cmp r0, 0x1 + beq _080817F2 + cmp r0, 0x1 + bcc _08081820 + cmp r0, 0x2 + beq _08081806 + b _08081820 +_080817F2: + bl sub_80694F4 + movs r0, 0 + strh r0, [r5, 0x8] + bl sub_8057F70 + adds r0, r4, 0 + bl sub_807761C + b _08081820 +_08081806: + movs r0, 0x3 + strh r0, [r5, 0x8] + b _08081820 +_0808180C: + bl sub_8057F48 + movs r0, 0x1 + bl sub_80F771C + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 +_08081820: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808177C + + thumb_func_start sub_8081828 +sub_8081828: @ 8081828 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _0808184C @ =sub_808177C + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80775E8 + bl sub_8069B28 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808184C: .4byte sub_808177C + thumb_func_end sub_8081828 + + thumb_func_start sub_8081850 +sub_8081850: @ 8081850 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08081874 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08081894 + cmp r0, 0x1 + bgt _08081878 + cmp r0, 0 + beq _08081882 + b _080818D8 + .align 2, 0 +_08081874: .4byte gUnknown_3005090 +_08081878: + cmp r0, 0x2 + beq _080818A8 + cmp r0, 0x3 + beq _080818C4 + b _080818D8 +_08081882: + bl sub_8069940 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + bl sub_800A068 + b _080818B8 +_08081894: + ldr r0, _080818A4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080818D8 + b _080818B8 + .align 2, 0 +_080818A4: .4byte gUnknown_2037AB8 +_080818A8: + ldr r1, _080818C0 @ =gUnknown_2031DA4 + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + bl m4aMPlayAllStop + bl sub_800AAC0 +_080818B8: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080818D8 + .align 2, 0 +_080818C0: .4byte gUnknown_2031DA4 +_080818C4: + ldr r0, _080818E0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _080818D8 + ldr r0, _080818E4 @ =sub_804C718 + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_080818D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080818E0: .4byte gUnknown_3003F64 +_080818E4: .4byte sub_804C718 + thumb_func_end sub_8081850 + + thumb_func_start sub_80818E8 +sub_80818E8: @ 80818E8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0808190C @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0808192C + cmp r0, 0x1 + bgt _08081910 + cmp r0, 0 + beq _0808191A + b _08081970 + .align 2, 0 +_0808190C: .4byte gUnknown_3005098 +_08081910: + cmp r0, 0x2 + beq _08081940 + cmp r0, 0x3 + beq _0808195C + b _08081970 +_0808191A: + bl sub_8069940 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + bl sub_80F985C + b _08081950 +_0808192C: + ldr r0, _0808193C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08081970 + b _08081950 + .align 2, 0 +_0808193C: .4byte gUnknown_2037AB8 +_08081940: + ldr r1, _08081958 @ =gUnknown_2031DA4 + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + bl m4aMPlayAllStop + bl sub_800AB9C +_08081950: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _08081970 + .align 2, 0 +_08081958: .4byte gUnknown_2031DA4 +_0808195C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08081970 + bl sub_8117118 + adds r0, r5, 0 + bl sub_8077508 +_08081970: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80818E8 + + thumb_func_start sub_8081978 +sub_8081978: @ 8081978 + push {lr} + ldr r0, _0808198C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08081994 + ldr r0, _08081990 @ =sub_80818E8 + bl sub_8081828 + b _0808199A + .align 2, 0 +_0808198C: .4byte gUnknown_3003F3C +_08081990: .4byte sub_80818E8 +_08081994: + ldr r0, _080819A0 @ =sub_8081850 + bl sub_8081828 +_0808199A: + pop {r0} + bx r0 + .align 2, 0 +_080819A0: .4byte sub_8081850 + thumb_func_end sub_8081978 + + thumb_func_start sub_80819A4 +sub_80819A4: @ 80819A4 + push {lr} + ldr r0, _080819B4 @ =sub_8081850 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080819B4: .4byte sub_8081850 + thumb_func_end sub_80819A4 + + thumb_func_start sub_80819B8 +sub_80819B8: @ 80819B8 + push {lr} + bl sub_80819A4 + bl sub_8069B28 + pop {r0} + bx r0 + thumb_func_end sub_80819B8 + + thumb_func_start sub_80819C8 +sub_80819C8: @ 80819C8 + push {lr} + ldr r1, _080819E4 @ =gUnknown_202271A + ldr r2, _080819E8 @ =0x00002211 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080819EC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _080819F4 + ldr r0, _080819F0 @ =sub_8081454 + bl sub_8081828 + b _080819FA + .align 2, 0 +_080819E4: .4byte gUnknown_202271A +_080819E8: .4byte 0x00002211 +_080819EC: .4byte gUnknown_3003F3C +_080819F0: .4byte sub_8081454 +_080819F4: + ldr r0, _08081A00 @ =sub_8081318 + bl sub_8081828 +_080819FA: + pop {r0} + bx r0 + .align 2, 0 +_08081A00: .4byte sub_8081318 + thumb_func_end sub_80819C8 + + thumb_func_start sub_8081A04 +sub_8081A04: @ 8081A04 + push {lr} + ldr r0, _08081A18 @ =sub_808177C + movs r1, 0x50 + bl sub_807741C + bl sub_8069B28 + pop {r0} + bx r0 + .align 2, 0 +_08081A18: .4byte sub_808177C + thumb_func_end sub_8081A04 + + thumb_func_start sub_8081A1C +sub_8081A1C: @ 8081A1C + push {lr} + ldr r0, _08081A2C @ =gUnknown_20370C4 + ldrb r0, [r0] + ldr r1, _08081A30 @ =sub_80568E0 + bl sub_808B700 + pop {r0} + bx r0 + .align 2, 0 +_08081A2C: .4byte gUnknown_20370C4 +_08081A30: .4byte sub_80568E0 + thumb_func_end sub_8081A1C + + thumb_func_start sub_8081A34 +sub_8081A34: @ 8081A34 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08081A74 @ =gUnknown_20370C4 + strh r4, [r0] + ldr r0, _08081A78 @ =gUnknown_2021CD0 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + ldr r2, _08081A7C @ =gUnknown_2022744 + adds r1, r2 + bl sub_8008D84 + adds r0, r4, 0 + bl sub_808B1BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08081A88 + ldr r0, _08081A80 @ =gUnknown_2021CF0 + ldr r2, _08081A84 @ =gUnknown_83C6AB8 + subs r1, 0x1 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + movs r0, 0x1 + b _08081A8A + .align 2, 0 +_08081A74: .4byte gUnknown_20370C4 +_08081A78: .4byte gUnknown_2021CD0 +_08081A7C: .4byte gUnknown_2022744 +_08081A80: .4byte gUnknown_2021CF0 +_08081A84: .4byte gUnknown_83C6AB8 +_08081A88: + movs r0, 0 +_08081A8A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8081A34 + + thumb_func_start sub_8081A90 +sub_8081A90: @ 8081A90 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08081AD8 @ =gUnknown_3005090 + adds r0, r1 + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + movs r0, 0x96 + lsls r0, 17 + cmp r1, r0 + ble _08081AC2 + bl sub_80098B8 + ldr r0, _08081ADC @ =sub_800ACD4 + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_08081AC2: + ldr r0, _08081AE0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08081AD0 + adds r0, r5, 0 + bl sub_8077508 +_08081AD0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081AD8: .4byte gUnknown_3005090 +_08081ADC: .4byte sub_800ACD4 +_08081AE0: .4byte gUnknown_3003F64 + thumb_func_end sub_8081A90 + + thumb_func_start sub_8081AE4 +sub_8081AE4: @ 8081AE4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08081B04 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08081AFC + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 +_08081AFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081B04: .4byte gUnknown_3003F64 + thumb_func_end sub_8081AE4 + + thumb_func_start sub_8081B08 +sub_8081B08: @ 8081B08 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_800AAC0 + ldr r1, _08081B28 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08081B2C @ =sub_8081AE4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081B28: .4byte gUnknown_3005090 +_08081B2C: .4byte sub_8081AE4 + thumb_func_end sub_8081B08 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/calculate_base_damage.s b/asm/calculate_base_damage.s new file mode 100644 index 000000000..bfbf9df3f --- /dev/null +++ b/asm/calculate_base_damage.s @@ -0,0 +1,1123 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_803ECEC +sub_803ECEC: @ 803ECEC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + adds r6, r0, 0 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + ldr r0, [sp, 0x4C] + ldr r1, [sp, 0x50] + ldr r2, [sp, 0x54] + ldr r4, [sp, 0x58] + lsls r3, 16 + lsrs r3, 16 + str r3, [sp, 0xC] + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r4, 24 + lsrs r4, 24 + movs r5, 0 + cmp r3, 0 + bne _0803ED40 + ldr r2, _0803ED38 @ =gUnknown_2024020 + ldr r1, _0803ED3C @ =gUnknown_8250C04 + ldr r3, [sp, 0x8] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strh r0, [r2] + b _0803ED44 + .align 2, 0 +_0803ED38: .4byte gUnknown_2024020 +_0803ED3C: .4byte gUnknown_8250C04 +_0803ED40: + ldr r0, _0803ED5C @ =gUnknown_2024020 + strh r3, [r0] +_0803ED44: + cmp r7, 0 + bne _0803ED64 + ldr r1, _0803ED60 @ =gUnknown_8250C04 + ldr r7, [sp, 0x8] + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x2] + mov r9, r0 + b _0803ED6E + .align 2, 0 +_0803ED5C: .4byte gUnknown_2024020 +_0803ED60: .4byte gUnknown_8250C04 +_0803ED64: + movs r0, 0x3F + mov r9, r0 + mov r1, r9 + ands r1, r7 + mov r9, r1 +_0803ED6E: + ldrh r7, [r6, 0x2] + ldr r2, [sp, 0x4] + ldrh r2, [r2, 0x4] + str r2, [sp, 0x14] + ldrh r3, [r6, 0x8] + mov r8, r3 + ldr r0, [sp, 0x4] + ldrh r0, [r0, 0xA] + str r0, [sp, 0x18] + ldrh r0, [r6, 0x2E] + cmp r0, 0xAF + bne _0803EDA0 + ldr r1, _0803ED9C @ =gUnknown_2023F54 + ldr r2, [sp, 0x10] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r3, [r0, 0x7] + mov r10, r3 + ldrb r0, [r0, 0x1A] + b _0803EDB6 + .align 2, 0 +_0803ED9C: .4byte gUnknown_2023F54 +_0803EDA0: + ldrh r0, [r6, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrh r0, [r6, 0x2E] + bl sub_809A948 + lsls r0, 24 + lsrs r0, 24 +_0803EDB6: + str r0, [sp, 0x20] + ldr r1, [sp, 0x4] + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0803EDE6 + ldr r1, _0803EDD0 @ =gUnknown_2023F54 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x7] + str r0, [sp, 0x1C] + b _0803EDFC + .align 2, 0 +_0803EDD0: .4byte gUnknown_2023F54 +_0803EDD4: + ldr r0, [sp, 0x20] + adds r0, 0x64 + muls r0, r7 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + b _0803EF44 +_0803EDE6: + ldr r2, [sp, 0x4] + ldrh r0, [r2, 0x2E] + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x1C] + ldr r3, [sp, 0x4] + ldrh r0, [r3, 0x2E] + bl sub_809A948 +_0803EDFC: + adds r0, r6, 0 + adds r0, 0x20 + ldrb r1, [r0] + str r0, [sp, 0x24] + cmp r1, 0x25 + beq _0803EE0C + cmp r1, 0x4A + bne _0803EE10 +_0803EE0C: + lsls r0, r7, 17 + lsrs r7, r0, 16 +_0803EE10: + ldr r0, _0803EF28 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0803EF2C @ =0x00000802 + ands r0, r1 + cmp r0, 0 + bne _0803EEE8 + movs r0, 0x82 + lsls r0, 4 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0803EE44 + ldr r0, [sp, 0x10] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0803EE44 + movs r0, 0x6E + muls r0, r7 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 +_0803EE44: + ldr r0, _0803EF28 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0803EF2C @ =0x00000802 + ands r0, r1 + cmp r0, 0 + bne _0803EEE8 + ldr r0, _0803EF30 @ =0x00000824 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0803EE7A + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0803EE7A + movs r0, 0x6E + ldr r1, [sp, 0x14] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x14] +_0803EE7A: + ldr r0, _0803EF28 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0803EF2C @ =0x00000802 + ands r0, r1 + cmp r0, 0 + bne _0803EEE8 + ldr r0, _0803EF34 @ =0x00000826 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0803EEB2 + ldr r0, [sp, 0x10] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0803EEB2 + movs r0, 0x6E + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803EEB2: + ldr r0, _0803EF28 @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _0803EF2C @ =0x00000802 + ands r0, r1 + cmp r0, 0 + bne _0803EEE8 + ldr r0, _0803EF34 @ =0x00000826 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0803EEE8 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0803EEE8 + movs r0, 0x6E + ldr r3, [sp, 0x18] + muls r0, r3 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] +_0803EEE8: + movs r2, 0 + ldr r4, _0803EF38 @ =gUnknown_825DECC + ldr r0, [sp, 0x4] + adds r0, 0x20 + str r0, [sp, 0x28] + adds r3, r4, 0 +_0803EEF4: + lsls r1, r2, 1 + ldrb r0, [r3] + cmp r10, r0 + bne _0803EF3C + adds r0, r4, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r9, r0 + bne _0803EF3C + mov r1, r9 + cmp r1, 0x8 + bhi _0803EF0E + b _0803EDD4 +_0803EF0E: + ldr r0, [sp, 0x20] + adds r0, 0x64 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + b _0803EF44 + .align 2, 0 +_0803EF28: .4byte gUnknown_2022B4C +_0803EF2C: .4byte 0x00000802 +_0803EF30: .4byte 0x00000824 +_0803EF34: .4byte 0x00000826 +_0803EF38: .4byte gUnknown_825DECC +_0803EF3C: + adds r3, 0x2 + adds r2, 0x1 + cmp r2, 0x10 + bls _0803EEF4 +_0803EF44: + mov r3, r10 + cmp r3, 0x1D + bne _0803EF58 + movs r0, 0x96 + muls r0, r7 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 +_0803EF58: + mov r0, r10 + cmp r0, 0x22 + bne _0803EF90 + ldr r0, _0803F244 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + bne _0803EF90 + ldr r1, _0803F248 @ =0xfffffe69 + adds r0, r1, 0 + ldrh r2, [r6] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803EF90 + movs r0, 0x96 + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803EF90: + ldr r0, [sp, 0x1C] + cmp r0, 0x22 + bne _0803EFC8 + ldr r0, _0803F244 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + bne _0803EFC8 + ldr r1, _0803F248 @ =0xfffffe69 + adds r0, r1, 0 + ldr r2, [sp, 0x4] + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803EFC8 + movs r0, 0x96 + ldr r3, [sp, 0x18] + muls r0, r3 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] +_0803EFC8: + mov r0, r10 + cmp r0, 0x23 + bne _0803EFDE + ldrh r1, [r6] + ldr r0, _0803F24C @ =0x00000175 + cmp r1, r0 + bne _0803EFDE + mov r1, r8 + lsls r0, r1, 17 + lsrs r0, 16 + mov r8, r0 +_0803EFDE: + ldr r2, [sp, 0x1C] + cmp r2, 0x24 + bne _0803EFF6 + ldr r3, [sp, 0x4] + ldrh r1, [r3] + ldr r0, _0803F24C @ =0x00000175 + cmp r1, r0 + bne _0803EFF6 + ldr r1, [sp, 0x18] + lsls r0, r1, 17 + lsrs r0, 16 + str r0, [sp, 0x18] +_0803EFF6: + mov r2, r10 + cmp r2, 0x2D + bne _0803F00A + ldrh r0, [r6] + cmp r0, 0x19 + bne _0803F00A + mov r3, r8 + lsls r0, r3, 17 + lsrs r0, 16 + mov r8, r0 +_0803F00A: + ldr r0, [sp, 0x1C] + cmp r0, 0x40 + bne _0803F020 + ldr r1, [sp, 0x4] + ldrh r0, [r1] + cmp r0, 0x84 + bne _0803F020 + ldr r2, [sp, 0x14] + lsls r0, r2, 17 + lsrs r0, 16 + str r0, [sp, 0x14] +_0803F020: + mov r3, r10 + cmp r3, 0x41 + bne _0803F036 + ldrh r0, [r6] + subs r0, 0x68 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803F036 + lsls r0, r7, 17 + lsrs r7, r0, 16 +_0803F036: + ldr r1, [sp, 0x28] + ldrb r0, [r1] + cmp r0, 0x2F + bne _0803F04E + mov r2, r9 + cmp r2, 0xA + beq _0803F048 + cmp r2, 0xF + bne _0803F04E +_0803F048: + mov r3, r8 + lsrs r3, 1 + mov r8, r3 +_0803F04E: + ldr r0, [sp, 0x24] + ldrb r4, [r0] + cmp r4, 0x37 + bne _0803F064 + movs r0, 0x96 + muls r0, r7 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 +_0803F064: + cmp r4, 0x39 + bne _0803F092 + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x3A + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0803F092 + movs r0, 0x96 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803F092: + ldr r2, [sp, 0x24] + ldrb r0, [r2] + cmp r0, 0x3A + bne _0803F0C4 + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x39 + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0803F0C4 + movs r0, 0x96 + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803F0C4: + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x3E + bne _0803F0E0 + ldr r0, [r6, 0x4C] + cmp r0, 0 + beq _0803F0E0 + movs r0, 0x96 + muls r0, r7 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 +_0803F0E0: + ldr r2, [sp, 0x28] + ldrb r0, [r2] + cmp r0, 0x3F + bne _0803F102 + ldr r3, [sp, 0x4] + ldr r0, [r3, 0x4C] + cmp r0, 0 + beq _0803F102 + movs r0, 0x96 + ldr r1, [sp, 0x14] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x14] +_0803F102: + mov r2, r9 + cmp r2, 0xD + bne _0803F126 + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0 + movs r3, 0xFD + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0803F126 + ldr r1, _0803F250 @ =gUnknown_2024020 + ldrh r0, [r1] + lsrs r0, 1 + strh r0, [r1] +_0803F126: + mov r3, r9 + cmp r3, 0xA + bne _0803F14A + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0 + movs r3, 0xFE + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + beq _0803F14A + ldr r1, _0803F250 @ =gUnknown_2024020 + ldrh r0, [r1] + lsrs r0, 1 + strh r0, [r1] +_0803F14A: + mov r0, r9 + cmp r0, 0xC + bne _0803F17A + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x41 + bne _0803F17A + ldrh r0, [r6, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r6, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803F17A + ldr r4, _0803F250 @ =gUnknown_2024020 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803F17A: + mov r2, r9 + cmp r2, 0xA + bne _0803F1AA + ldr r3, [sp, 0x24] + ldrb r0, [r3] + cmp r0, 0x42 + bne _0803F1AA + ldrh r0, [r6, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r6, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803F1AA + ldr r4, _0803F250 @ =gUnknown_2024020 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803F1AA: + mov r0, r9 + cmp r0, 0xB + bne _0803F1DA + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x43 + bne _0803F1DA + ldrh r0, [r6, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r6, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803F1DA + ldr r4, _0803F250 @ =gUnknown_2024020 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803F1DA: + mov r2, r9 + cmp r2, 0x6 + bne _0803F20A + ldr r3, [sp, 0x24] + ldrb r0, [r3] + cmp r0, 0x44 + bne _0803F20A + ldrh r0, [r6, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r6, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803F20A + ldr r4, _0803F250 @ =gUnknown_2024020 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803F20A: + ldr r2, _0803F254 @ =gUnknown_8250C04 + ldr r0, _0803F258 @ =gUnknown_2023D4A + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x7 + bne _0803F224 + ldr r0, [sp, 0x14] + lsrs r0, 1 + str r0, [sp, 0x14] +_0803F224: + mov r1, r9 + cmp r1, 0x8 + bls _0803F22C + b _0803F38A +_0803F22C: + ldr r0, _0803F25C @ =gUnknown_2023D71 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x2 + bne _0803F268 + movs r0, 0x19 + ldrsb r0, [r6, r0] + cmp r0, 0x6 + ble _0803F264 + ldr r2, _0803F260 @ =gUnknown_825DEAD + b _0803F26E + .align 2, 0 +_0803F244: .4byte gUnknown_2022B4C +_0803F248: .4byte 0xfffffe69 +_0803F24C: .4byte 0x00000175 +_0803F250: .4byte gUnknown_2024020 +_0803F254: .4byte gUnknown_8250C04 +_0803F258: .4byte gUnknown_2023D4A +_0803F25C: .4byte gUnknown_2023D71 +_0803F260: .4byte gUnknown_825DEAD +_0803F264: + adds r5, r7, 0 + b _0803F286 +_0803F268: + ldr r2, _0803F2B8 @ =gUnknown_825DEAD + movs r0, 0x19 + ldrsb r0, [r6, r0] +_0803F26E: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + adds r5, r7, 0 + muls r5, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r5, 0 + bl __divsi3 + adds r5, r0, 0 +_0803F286: + ldr r0, _0803F2BC @ =gUnknown_2024020 + ldrh r0, [r0] + muls r5, r0 + adds r0, r6, 0 + adds r0, 0x2A + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x5 + bl __divsi3 + adds r0, 0x2 + muls r5, r0 + ldrb r0, [r4] + cmp r0, 0x2 + bne _0803F2C4 + ldr r2, [sp, 0x4] + movs r0, 0x1A + ldrsb r0, [r2, r0] + cmp r0, 0x5 + bgt _0803F2C0 + ldr r2, _0803F2B8 @ =gUnknown_825DEAD + ldr r3, [sp, 0x4] + movs r0, 0x1A + ldrsb r0, [r3, r0] + b _0803F2CC + .align 2, 0 +_0803F2B8: .4byte gUnknown_825DEAD +_0803F2BC: .4byte gUnknown_2024020 +_0803F2C0: + ldr r3, [sp, 0x14] + b _0803F2E6 +_0803F2C4: + ldr r2, _0803F344 @ =gUnknown_825DEAD + ldr r1, [sp, 0x4] + movs r0, 0x1A + ldrsb r0, [r1, r0] +_0803F2CC: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r7, [sp, 0x14] + adds r3, r7, 0 + muls r3, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + bl __divsi3 + adds r3, r0, 0 +_0803F2E6: + adds r0, r5, 0 + adds r1, r3, 0 + bl __divsi3 + adds r5, r0, 0 + movs r1, 0x32 + bl __divsi3 + adds r5, r0, 0 + ldr r0, [r6, 0x4C] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0803F310 + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x3E + beq _0803F310 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F310: + movs r0, 0x1 + ldr r2, [sp, 0xC] + ands r0, r2 + cmp r0, 0 + beq _0803F352 + ldrb r1, [r4] + cmp r1, 0x1 + bne _0803F352 + ldr r0, _0803F348 @ =gUnknown_2022B4C + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + beq _0803F34C + movs r0, 0x2 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803F34C + adds r0, r5, 0 + movs r1, 0x3 + bl __divsi3 + lsls r5, r0, 1 + b _0803F352 + .align 2, 0 +_0803F344: .4byte gUnknown_825DEAD +_0803F348: .4byte gUnknown_2022B4C +_0803F34C: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F352: + ldr r0, _0803F3B0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803F384 + ldr r0, _0803F3B4 @ =gUnknown_8250C04 + ldr r3, [sp, 0x8] + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x6] + cmp r0, 0x8 + bne _0803F384 + movs r0, 0x2 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803F384 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F384: + cmp r5, 0 + bne _0803F38A + movs r5, 0x1 +_0803F38A: + mov r7, r9 + cmp r7, 0x9 + bne _0803F392 + movs r5, 0 +_0803F392: + mov r0, r9 + cmp r0, 0x9 + bhi _0803F39A + b _0803F59C +_0803F39A: + ldr r0, _0803F3B8 @ =gUnknown_2023D71 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x2 + bne _0803F3C4 + movs r0, 0x1C + ldrsb r0, [r6, r0] + cmp r0, 0x6 + ble _0803F3C0 + ldr r2, _0803F3BC @ =gUnknown_825DEAD + b _0803F3CA + .align 2, 0 +_0803F3B0: .4byte gUnknown_2022B4C +_0803F3B4: .4byte gUnknown_8250C04 +_0803F3B8: .4byte gUnknown_2023D71 +_0803F3BC: .4byte gUnknown_825DEAD +_0803F3C0: + mov r5, r8 + b _0803F3E2 +_0803F3C4: + ldr r2, _0803F410 @ =gUnknown_825DEAD + movs r0, 0x1C + ldrsb r0, [r6, r0] +_0803F3CA: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + mov r5, r8 + muls r5, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r5, 0 + bl __divsi3 + adds r5, r0, 0 +_0803F3E2: + ldr r0, _0803F414 @ =gUnknown_2024020 + ldrh r0, [r0] + muls r5, r0 + adds r0, r6, 0 + adds r0, 0x2A + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x5 + bl __divsi3 + adds r0, 0x2 + muls r5, r0 + ldrb r0, [r4] + cmp r0, 0x2 + bne _0803F41C + ldr r1, [sp, 0x4] + movs r0, 0x1D + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _0803F418 + ldr r2, _0803F410 @ =gUnknown_825DEAD + b _0803F424 + .align 2, 0 +_0803F410: .4byte gUnknown_825DEAD +_0803F414: .4byte gUnknown_2024020 +_0803F418: + ldr r3, [sp, 0x18] + b _0803F43E +_0803F41C: + ldr r2, _0803F484 @ =gUnknown_825DEAD + ldr r7, [sp, 0x4] + movs r0, 0x1D + ldrsb r0, [r7, r0] +_0803F424: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r6, [sp, 0x18] + adds r3, r6, 0 + muls r3, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + bl __divsi3 + adds r3, r0, 0 +_0803F43E: + adds r0, r5, 0 + adds r1, r3, 0 + bl __divsi3 + adds r5, r0, 0 + movs r1, 0x32 + bl __divsi3 + adds r5, r0, 0 + movs r0, 0x2 + ldr r7, [sp, 0xC] + ands r0, r7 + cmp r0, 0 + beq _0803F492 + ldrb r1, [r4] + cmp r1, 0x1 + bne _0803F492 + ldr r0, _0803F488 @ =gUnknown_2022B4C + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + beq _0803F48C + movs r0, 0x2 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803F48C + adds r0, r5, 0 + movs r1, 0x3 + bl __divsi3 + lsls r5, r0, 1 + b _0803F492 + .align 2, 0 +_0803F484: .4byte gUnknown_825DEAD +_0803F488: .4byte gUnknown_2022B4C +_0803F48C: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F492: + ldr r0, _0803F50C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803F4C4 + ldr r0, _0803F510 @ =gUnknown_8250C04 + ldr r2, [sp, 0x8] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x6] + cmp r0, 0x8 + bne _0803F4C4 + movs r0, 0x2 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803F4C4 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F4C4: + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0803F574 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8019F18 + lsls r0, 24 + cmp r0, 0 + bne _0803F574 + ldr r2, _0803F514 @ =gUnknown_2023F1C + ldrh r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r4, r2, 0 + cmp r0, 0 + beq _0803F52C + mov r3, r9 + cmp r3, 0xA + beq _0803F518 + cmp r3, 0xB + beq _0803F520 + b _0803F52C + .align 2, 0 +_0803F50C: .4byte gUnknown_2022B4C +_0803F510: .4byte gUnknown_8250C04 +_0803F514: .4byte gUnknown_2023F1C +_0803F518: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 + b _0803F52C +_0803F520: + lsls r0, r5, 4 + subs r0, r5 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 +_0803F52C: + ldrh r1, [r4] + movs r0, 0x9F + ands r0, r1 + cmp r0, 0 + beq _0803F544 + ldr r0, _0803F55C @ =gUnknown_2023D4A + ldrh r0, [r0] + cmp r0, 0x4C + bne _0803F544 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F544: + ldrh r1, [r4] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0803F574 + mov r6, r9 + cmp r6, 0xA + beq _0803F560 + cmp r6, 0xB + beq _0803F56E + b _0803F574 + .align 2, 0 +_0803F55C: .4byte gUnknown_2023D4A +_0803F560: + lsls r0, r5, 4 + subs r0, r5 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 + b _0803F574 +_0803F56E: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803F574: + ldr r0, _0803F5B0 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r0, [r0, 0x4] + ldr r7, [sp, 0x10] + lsls r1, r7, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803F59C + mov r0, r9 + cmp r0, 0xA + bne _0803F59C + lsls r0, r5, 4 + subs r0, r5 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 +_0803F59C: + adds r0, r5, 0x2 + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803F5B0: .4byte gUnknown_2023FF4 + thumb_func_end sub_803ECEC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/cereader_tool.s b/asm/cereader_tool.s new file mode 100644 index 000000000..2c0042933 --- /dev/null +++ b/asm/cereader_tool.s @@ -0,0 +1,196 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815D654 +sub_815D654: @ 815D654 + push {lr} + ldr r0, _0815D674 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0815D678 @ =0x00003d41 + adds r0, r1 + ldrb r1, [r0] + adds r2, r1, 0x1 + adds r0, r2, 0 + asrs r0, 8 + lsls r0, 8 + subs r0, r2, r0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0815D674: .4byte gUnknown_3005008 +_0815D678: .4byte 0x00003d41 + thumb_func_end sub_815D654 + + thumb_func_start sub_815D67C +sub_815D67C: @ 815D67C + push {r4,r5,lr} + adds r5, r0, 0 + ldrb r0, [r5, 0x1] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x7 + bhi _0815D6AA + ldrb r0, [r5, 0x2] + cmp r0, 0x2 + bhi _0815D6AA + movs r4, 0xF7 + lsls r4, 2 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8045254 + adds r4, r5, r4 + ldr r1, [r4] + cmp r0, r1 + bne _0815D6AA + movs r0, 0x1 + b _0815D6AC +_0815D6AA: + movs r0, 0 +_0815D6AC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815D67C + + thumb_func_start sub_815D6B4 +sub_815D6B4: @ 815D6B4 + push {r4-r7,lr} + adds r7, r0, 0 + ldrb r6, [r7] + subs r0, r6, 0x1 + cmp r0, 0x7 + bhi _0815D6F8 + movs r5, 0 + cmp r5, r6 + bcs _0815D6E0 + adds r4, r7, 0 + adds r4, 0x8 +_0815D6CA: + adds r0, r4, 0 + bl sub_815D67C + cmp r0, 0 + beq _0815D6F8 + movs r0, 0xF8 + lsls r0, 2 + adds r4, r0 + adds r5, 0x1 + cmp r5, r6 + bcc _0815D6CA +_0815D6E0: + adds r0, r7, 0 + adds r0, 0x8 + lsls r1, r6, 5 + subs r1, r6 + lsls r1, 5 + bl sub_8045254 + ldr r1, [r7, 0x4] + cmp r0, r1 + bne _0815D6F8 + movs r0, 0x1 + b _0815D6FA +_0815D6F8: + movs r0, 0 +_0815D6FA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_815D6B4 + + thumb_func_start sub_815D700 +sub_815D700: @ 815D700 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrh r0, [r5, 0x2] + cmp r0, 0 + beq _0815D718 + ldr r0, _0815D77C @ =gUnknown_8479CD8 + ldr r2, _0815D780 @ =gUnknown_8479D10 + movs r1, 0xC6 + movs r3, 0x1 + bl AGBAssert +_0815D718: + ldrb r0, [r5, 0x1] + cmp r0, 0 + beq _0815D72A + ldr r0, _0815D77C @ =gUnknown_8479CD8 + ldr r2, _0815D784 @ =gUnknown_8479D24 + movs r1, 0xC7 + movs r3, 0x1 + bl AGBAssert +_0815D72A: + movs r6, 0x80 + lsls r6, 5 + adds r0, r4, 0 + movs r1, 0 + adds r2, r6, 0 + bl memset + ldr r2, _0815D788 @ =0x00000f88 + adds r0, r4, 0 + adds r1, r5, 0 + bl memcpy + bl sub_815D654 + strb r0, [r4, 0x1] + movs r0, 0x1E + adds r1, r4, 0 + bl sub_80DA5E0 + cmp r0, 0x1 + bne _0815D78C + adds r0, r4, 0 + movs r1, 0 + adds r2, r6, 0 + bl memset + ldr r0, _0815D788 @ =0x00000f88 + adds r1, r5, r0 + movs r2, 0xF8 + lsls r2, 4 + adds r0, r4, 0 + bl memcpy + movs r0, 0x1F + adds r1, r4, 0 + bl sub_80DA5E0 + cmp r0, 0x1 + bne _0815D78C + movs r0, 0x1 + b _0815D78E + .align 2, 0 +_0815D77C: .4byte gUnknown_8479CD8 +_0815D780: .4byte gUnknown_8479D10 +_0815D784: .4byte gUnknown_8479D24 +_0815D788: .4byte 0x00000f88 +_0815D78C: + movs r0, 0 +_0815D78E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_815D700 + + thumb_func_start sub_815D794 +sub_815D794: @ 815D794 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x80 + lsls r0, 5 + bl sub_8002BB0 + adds r5, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_815D700 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_8002BC4 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815D794 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s new file mode 100644 index 000000000..34005c5c1 --- /dev/null +++ b/asm/clear_save_data_screen.s @@ -0,0 +1,474 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F5574 +sub_80F5574: @ 80F5574 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80F5574 + + thumb_func_start sub_80F558C +sub_80F558C: @ 80F558C + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80F558C + + thumb_func_start sub_80F55A0 +sub_80F55A0: @ 80F55A0 + push {r4,lr} + ldr r4, _080F55D0 @ =gUnknown_203AB54 + movs r0, 0x4 + bl sub_8002BB0 + str r0, [r4] + movs r1, 0 + strb r1, [r0, 0x1] + ldr r0, [r4] + strb r1, [r0] + ldr r0, [r4] + strb r1, [r0, 0x2] + bl sub_80F580C + ldr r0, _080F55D4 @ =sub_80F55DC + movs r1, 0 + bl sub_807741C + ldr r0, _080F55D8 @ =sub_80F5574 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F55D0: .4byte gUnknown_203AB54 +_080F55D4: .4byte sub_80F55DC +_080F55D8: .4byte sub_80F5574 + thumb_func_end sub_80F55A0 + + thumb_func_start sub_80F55DC +sub_80F55DC: @ 80F55DC + push {r4,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080F55F8 @ =gUnknown_203AB54 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x5 + bhi _080F56C0 + lsls r0, 2 + ldr r1, _080F55FC @ =_080F5600 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F55F8: .4byte gUnknown_203AB54 +_080F55FC: .4byte _080F5600 + .align 2, 0 +_080F5600: + .4byte _080F5618 + .4byte _080F562A + .4byte _080F5644 + .4byte _080F564A + .4byte _080F5660 + .4byte _080F569C +_080F5618: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080F56E2 +_080F562A: + ldr r0, _080F5640 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F56EC + movs r0, 0 + bl sub_80006F4 + b _080F56E2 + .align 2, 0 +_080F5640: .4byte gUnknown_2037AB8 +_080F5644: + bl sub_80F5820 + b _080F56E2 +_080F564A: + movs r0, 0 + movs r1, 0x1 + movs r2, 0xF0 + bl sub_814FF2C + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0xF0 + bl sub_814FF2C + b _080F56E2 +_080F5660: + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0xF + bl sub_810F2E8 + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + ldr r0, _080F5694 @ =gUnknown_841EE80 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _080F5698 @ =gUnknown_841B69E + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x3 + bl sub_812E5A4 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + b _080F56E2 + .align 2, 0 +_080F5694: .4byte gUnknown_841EE80 +_080F5698: .4byte gUnknown_841B69E +_080F569C: + ldr r0, _080F56BC @ =gUnknown_841EE68 + movs r2, 0x1 + str r2, [sp] + movs r1, 0xF + str r1, [sp, 0x4] + str r2, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + movs r0, 0 + bl sub_80020BC + b _080F56E2 + .align 2, 0 +_080F56BC: .4byte gUnknown_841EE68 +_080F56C0: + ldr r0, _080F56F4 @ =0x0000ffff + str r0, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080F56F8 @ =sub_80F558C + bl sub_80006F4 + ldr r1, _080F56FC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080F5700 @ =sub_80F5708 + str r1, [r0] +_080F56E2: + ldr r0, _080F5704 @ =gUnknown_203AB54 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_080F56EC: + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F56F4: .4byte 0x0000ffff +_080F56F8: .4byte sub_80F558C +_080F56FC: .4byte gUnknown_3005090 +_080F5700: .4byte sub_80F5708 +_080F5704: .4byte gUnknown_203AB54 + thumb_func_end sub_80F55DC + + thumb_func_start sub_80F5708 +sub_80F5708: @ 80F5708 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r5, _080F5740 @ =gUnknown_203AB54 + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, 0 + bne _080F578C + bl sub_81100C8 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _080F5736 + cmp r4, r0 + ble _080F5792 + cmp r4, 0 + beq _080F5744 + cmp r4, 0x1 + bne _080F5792 +_080F5736: + movs r0, 0x5 + bl sub_80722CC + b _080F577A + .align 2, 0 +_080F5740: .4byte gUnknown_203AB54 +_080F5744: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + ldr r0, _080F5784 @ =gUnknown_841EE80 + str r0, [sp, 0x8] + str r4, [sp, 0xC] + ldr r0, _080F5788 @ =gUnknown_841B6B9 + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x3 + bl sub_812E5A4 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + bl sub_80D972C +_080F577A: + ldr r1, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080F5792 + .align 2, 0 +_080F5784: .4byte gUnknown_841EE80 +_080F5788: .4byte gUnknown_841B6B9 +_080F578C: + adds r0, r1, 0 + bl sub_80F579C +_080F5792: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F5708 + + thumb_func_start sub_80F579C +sub_80F579C: @ 80F579C + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080F57B4 @ =gUnknown_203AB54 + ldr r0, [r5] + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _080F57B8 + cmp r0, 0x1 + beq _080F57D4 + b _080F57FE + .align 2, 0 +_080F57B4: .4byte gUnknown_203AB54 +_080F57B8: + ldr r0, _080F57D0 @ =0x0000ffff + str r0, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r5] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + b _080F57FE + .align 2, 0 +_080F57D0: .4byte 0x0000ffff +_080F57D4: + ldr r0, _080F5808 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080F57FE + bl sub_81100E8 + adds r0, r6, 0 + bl sub_8077508 + bl sub_8003ECC + ldr r0, [r5] + bl sub_8002BC4 + str r4, [r5] + bl sub_80008D8 +_080F57FE: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F5808: .4byte gUnknown_2037AB8 + thumb_func_end sub_80F579C + + thumb_func_start sub_80F580C +sub_80F580C: @ 80F580C + push {lr} + bl sub_8006B10 + bl sub_8070528 + bl sub_80773BC + pop {r0} + bx r0 + thumb_func_end sub_80F580C + + thumb_func_start sub_80F5820 +sub_80F5820: @ 80F5820 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _080F593C @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _080F5940 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_080F5846: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _080F5846 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _080F593C @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _080F5944 @ =gUnknown_841EE64 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _080F5948 @ =gUnknown_841EE68 + bl sub_8003B24 + bl sub_8002C28 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F593C: .4byte 0x040000d4 +_080F5940: .4byte 0x81000800 +_080F5944: .4byte gUnknown_841EE64 +_080F5948: .4byte gUnknown_841EE68 + thumb_func_end sub_80F5820 + + thumb_func_start nullsub_85 +nullsub_85: @ 80F594C + bx lr + thumb_func_end nullsub_85 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/coins.s b/asm/coins.s new file mode 100644 index 000000000..35cff05ea --- /dev/null +++ b/asm/coins.s @@ -0,0 +1,346 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D0554 +sub_80D0554: @ 80D0554 + ldr r0, _080D0574 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0xA5 + lsls r0, 2 + adds r1, r0 + ldr r0, _080D0578 @ =gUnknown_300500C + ldr r0, [r0] + movs r2, 0xF2 + lsls r2, 4 + adds r0, r2 + ldr r0, [r0] + ldrh r1, [r1] + eors r0, r1 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_080D0574: .4byte gUnknown_3005008 +_080D0578: .4byte gUnknown_300500C + thumb_func_end sub_80D0554 + + thumb_func_start sub_80D057C +sub_80D057C: @ 80D057C + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080D059C @ =gUnknown_3005008 + ldr r2, [r1] + ldr r1, _080D05A0 @ =gUnknown_300500C + ldr r1, [r1] + movs r3, 0xF2 + lsls r3, 4 + adds r1, r3 + ldr r1, [r1] + eors r0, r1 + movs r1, 0xA5 + lsls r1, 2 + adds r2, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_080D059C: .4byte gUnknown_3005008 +_080D05A0: .4byte gUnknown_300500C + thumb_func_end sub_80D057C + + thumb_func_start sub_80D05A4 +sub_80D05A4: @ 80D05A4 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_80D0554 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080D05BC @ =0x0000270e + cmp r1, r0 + bls _080D05C0 + movs r0, 0 + b _080D05DA + .align 2, 0 +_080D05BC: .4byte 0x0000270e +_080D05C0: + adds r0, r1, r4 + cmp r1, r0 + bgt _080D05D0 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080D05E0 @ =0x0000270f + cmp r1, r0 + bls _080D05D2 +_080D05D0: + ldr r1, _080D05E0 @ =0x0000270f +_080D05D2: + adds r0, r1, 0 + bl sub_80D057C + movs r0, 0x1 +_080D05DA: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D05E0: .4byte 0x0000270f + thumb_func_end sub_80D05A4 + + thumb_func_start sub_80D05E4 +sub_80D05E4: @ 80D05E4 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_80D0554 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bcs _080D05FA + movs r0, 0 + b _080D0606 +_080D05FA: + subs r0, r4 + lsls r0, 16 + lsrs r0, 16 + bl sub_80D057C + movs r0, 0x1 +_080D0606: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D05E4 + + thumb_func_start sub_80D060C +sub_80D060C: @ 80D060C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0xC + adds r6, r0, 0 + mov r8, r2 + adds r4, r3, 0 + ldr r5, [sp, 0x24] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080D0668 @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 + ldr r0, _080D066C @ =gUnknown_2021D18 + mov r9, r0 + ldr r1, _080D0670 @ =gUnknown_84162C4 + bl sub_8008FCC + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + mov r2, r9 + mov r3, r8 + bl sub_8002C48 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D0668: .4byte gUnknown_2021CD0 +_080D066C: .4byte gUnknown_2021D18 +_080D0670: .4byte gUnknown_84162C4 + thumb_func_end sub_80D060C + + thumb_func_start sub_80D0674 +sub_80D0674: @ 80D0674 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + mov r8, r3 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_810F2E8 + ldr r2, _080D06CC @ =gUnknown_8417C2D + movs r4, 0 + str r4, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + str r4, [sp] + adds r0, r6, 0 + mov r1, r8 + movs r2, 0x10 + movs r3, 0xC + bl sub_80D060C + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D06CC: .4byte gUnknown_8417C2D + thumb_func_end sub_80D0674 + + thumb_func_start sub_80D06D0 +sub_80D06D0: @ 80D06D0 + push {r4,lr} + sub sp, 0xC + adds r1, r0, 0 + ldr r0, _080D071C @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 + ldr r4, _080D0720 @ =gUnknown_2021D18 + ldr r1, _080D0724 @ =gUnknown_84162C4 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + ldr r1, _080D0728 @ =gUnknown_2039A28 + ldrb r1, [r1] + movs r3, 0x40 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0xC + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_8002C48 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D071C: .4byte gUnknown_2021CD0 +_080D0720: .4byte gUnknown_2021D18 +_080D0724: .4byte gUnknown_84162C4 +_080D0728: .4byte gUnknown_2039A28 + thumb_func_end sub_80D06D0 + + thumb_func_start sub_80D072C +sub_80D072C: @ 80D072C + push {r4-r6,lr} + sub sp, 0x20 + adds r6, r0, 0 + adds r4, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsls r3, 24 + movs r0, 0x80 + lsls r0, 17 + adds r4, r0 + lsrs r4, 24 + adds r3, r0 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0x20 + str r0, [sp, 0xC] + add r0, sp, 0x10 + movs r1, 0 + adds r2, r4, 0 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + ldr r4, _080D07BC @ =gUnknown_2039A28 + add r0, sp, 0x18 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl sub_800445C + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + ldr r5, _080D07C0 @ =0x0000021d + adds r1, r5, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r0, [r4] + movs r1, 0 + adds r2, r5, 0 + movs r3, 0xD + bl sub_810F2E8 + ldrb r0, [r4] + ldr r2, _080D07C4 @ =gUnknown_8417C2D + movs r3, 0 + str r3, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r3, [sp, 0x8] + movs r1, 0x2 + bl sub_8002C48 + adds r0, r6, 0 + bl sub_80D06D0 + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D07BC: .4byte gUnknown_2039A28 +_080D07C0: .4byte 0x0000021d +_080D07C4: .4byte gUnknown_8417C2D + thumb_func_end sub_80D072C + + thumb_func_start sub_80D07C8 +sub_80D07C8: @ 80D07C8 + push {r4,lr} + ldr r4, _080D07E8 @ =gUnknown_2039A28 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D07E8: .4byte gUnknown_2039A28 + thumb_func_end sub_80D07C8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/coord_event_weather.s b/asm/coord_event_weather.s new file mode 100644 index 000000000..db305e8a0 --- /dev/null +++ b/asm/coord_event_weather.s @@ -0,0 +1,105 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_27 +nullsub_27: @ 806E7A8 + bx lr + thumb_func_end nullsub_27 + + thumb_func_start nullsub_28 +nullsub_28: @ 806E7AC + bx lr + thumb_func_end nullsub_28 + + thumb_func_start nullsub_29 +nullsub_29: @ 806E7B0 + bx lr + thumb_func_end nullsub_29 + + thumb_func_start nullsub_30 +nullsub_30: @ 806E7B4 + bx lr + thumb_func_end nullsub_30 + + thumb_func_start nullsub_31 +nullsub_31: @ 806E7B8 + bx lr + thumb_func_end nullsub_31 + + thumb_func_start nullsub_32 +nullsub_32: @ 806E7BC + bx lr + thumb_func_end nullsub_32 + + thumb_func_start nullsub_33 +nullsub_33: @ 806E7C0 + bx lr + thumb_func_end nullsub_33 + + thumb_func_start nullsub_34 +nullsub_34: @ 806E7C4 + bx lr + thumb_func_end nullsub_34 + + thumb_func_start nullsub_35 +nullsub_35: @ 806E7C8 + bx lr + thumb_func_end nullsub_35 + + thumb_func_start nullsub_36 +nullsub_36: @ 806E7CC + bx lr + thumb_func_end nullsub_36 + + thumb_func_start nullsub_37 +nullsub_37: @ 806E7D0 + bx lr + thumb_func_end nullsub_37 + + thumb_func_start nullsub_38 +nullsub_38: @ 806E7D4 + bx lr + thumb_func_end nullsub_38 + + thumb_func_start nullsub_39 +nullsub_39: @ 806E7D8 + bx lr + thumb_func_end nullsub_39 + + thumb_func_start sub_806E7DC +sub_806E7DC: @ 806E7DC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r2, 0 + ldr r3, _0806E7FC @ =gUnknown_83A72A8 +_0806E7E6: + lsls r1, r2, 3 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r4 + bne _0806E800 + adds r0, r3, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + bl _call_via_r0 + b _0806E80A + .align 2, 0 +_0806E7FC: .4byte gUnknown_83A72A8 +_0806E800: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xC + bls _0806E7E6 +_0806E80A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806E7DC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/credits.s b/asm/credits.s new file mode 100644 index 000000000..62ea02002 --- /dev/null +++ b/asm/credits.s @@ -0,0 +1,2222 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F39B4 +sub_80F39B4: @ 80F39B4 + push {r4,lr} + ldr r4, _080F39E0 @ =gUnknown_203AB40 + movs r0, 0x20 + bl sub_8002BB0 + str r0, [r4] + bl sub_80773BC + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1, 0x2] + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x1D] + bl sub_8006B10 + ldr r0, _080F39E4 @ =sub_80F39E8 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F39E0: .4byte gUnknown_203AB40 +_080F39E4: .4byte sub_80F39E8 + thumb_func_end sub_80F39B4 + + thumb_func_start sub_80F39E8 +sub_80F39E8: @ 80F39E8 + push {lr} + bl sub_80F3BD0 + adds r1, r0, 0 + cmp r1, 0x1 + beq _080F3A16 + cmp r1, 0x1 + bgt _080F39FE + cmp r1, 0 + beq _080F3A04 + b _080F3A68 +_080F39FE: + cmp r1, 0x2 + beq _080F3A4C + b _080F3A68 +_080F3A04: + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + b _080F3A68 +_080F3A16: + ldr r0, _080F3A28 @ =gUnknown_203AB40 + ldr r0, [r0] + ldrb r0, [r0, 0x1D] + ands r1, r0 + cmp r1, 0 + beq _080F3A2C + bl sub_80574A4 + b _080F3A3C + .align 2, 0 +_080F3A28: .4byte gUnknown_203AB40 +_080F3A2C: + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 +_080F3A3C: + ldr r0, _080F3A48 @ =gUnknown_203AB40 + ldr r1, [r0] + ldrb r0, [r1, 0x1D] + adds r0, 0x1 + strb r0, [r1, 0x1D] + b _080F3A68 + .align 2, 0 +_080F3A48: .4byte gUnknown_203AB40 +_080F3A4C: + movs r0, 0x80 + lsls r0, 7 + bl sub_806E6A8 + ldr r1, _080F3A6C @ =gUnknown_2031DD8 + movs r0, 0 + strb r0, [r1] + ldr r0, _080F3A70 @ =gUnknown_203AB40 + ldr r0, [r0] + bl sub_8002BC4 + movs r0, 0xFF + bl SoftReset +_080F3A68: + pop {r0} + bx r0 + .align 2, 0 +_080F3A6C: .4byte gUnknown_2031DD8 +_080F3A70: .4byte gUnknown_203AB40 + thumb_func_end sub_80F39E8 + + thumb_func_start sub_80F3A74 +sub_80F3A74: @ 80F3A74 + push {lr} + movs r1, 0x80 + lsls r1, 7 + movs r0, 0 + bl sub_8000B14 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080F3AA0 @ =0x00001f3f + movs r0, 0x48 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0xE + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_080F3AA0: .4byte 0x00001f3f + thumb_func_end sub_80F3A74 + + thumb_func_start sub_80F3AA4 +sub_80F3AA4: @ 80F3AA4 + push {lr} + movs r0, 0x50 + movs r1, 0xCE + bl sub_8000A38 + movs r1, 0x82 + lsls r1, 3 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0xA + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80F3AA4 + + thumb_func_start sub_80F3AC4 +sub_80F3AC4: @ 80F3AC4 + push {r4,lr} + ldr r0, _080F3AFC @ =gUnknown_8410E08 + bl sub_8003CE4 + ldr r4, _080F3B00 @ =gUnknown_203AB40 + ldr r1, [r4] + strb r0, [r1, 0xA] + ldr r0, [r4] + ldrb r0, [r0, 0xA] + movs r1, 0 + bl sub_800445C + ldr r0, [r4] + ldrb r0, [r0, 0xA] + bl sub_8003FA0 + ldr r0, [r4] + ldrb r0, [r0, 0xA] + movs r1, 0x3 + bl sub_8003F20 + ldr r1, [r4] + movs r0, 0x1 + strb r0, [r1, 0xB] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F3AFC: .4byte gUnknown_8410E08 +_080F3B00: .4byte gUnknown_203AB40 + thumb_func_end sub_80F3AC4 + + thumb_func_start sub_80F3B04 +sub_80F3B04: @ 80F3B04 + push {r4,lr} + ldr r4, _080F3B28 @ =gUnknown_203AB40 + ldr r1, [r4] + ldrb r0, [r1, 0xB] + cmp r0, 0 + beq _080F3B20 + ldrb r0, [r1, 0xA] + bl sub_8003E3C + bl sub_80563F0 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0xB] +_080F3B20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F3B28: .4byte gUnknown_203AB40 + thumb_func_end sub_80F3B04 + + thumb_func_start sub_80F3B2C +sub_80F3B2C: @ 80F3B2C + push {r4,r5,lr} + ldr r5, _080F3B40 @ =gUnknown_203AB40 + ldr r0, [r5] + ldrb r4, [r0, 0x1] + cmp r4, 0 + beq _080F3B44 + cmp r4, 0x1 + beq _080F3B5E +_080F3B3C: + movs r0, 0 + b _080F3BB0 + .align 2, 0 +_080F3B40: .4byte gUnknown_203AB40 +_080F3B44: + movs r0, 0x80 + lsls r0, 7 + bl sub_806E680 + ldr r1, _080F3BB8 @ =gUnknown_2031DD8 + movs r0, 0x2 + strb r0, [r1] + ldr r0, [r5] + strb r4, [r0, 0x1C] + ldr r1, [r5] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_080F3B5E: + ldr r0, _080F3BBC @ =gUnknown_203AB40 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x1C + ldr r2, _080F3BC0 @ =gUnknown_8414588 + ldrb r1, [r1, 0x9] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + bl sub_805750C + cmp r0, 0 + beq _080F3B3C + bl sub_80F3AC4 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r1, _080F3BC4 @ =0x0000247c + movs r0, 0x44 + bl sub_8000A38 + bl sub_80F3A74 + bl sub_80F3AA4 + movs r0, 0xF0 + bl sub_80F77CC + ldr r0, _080F3BC8 @ =gUnknown_20371F8 + movs r2, 0xFF + lsls r2, 1 + adds r0, r2 + movs r1, 0 + strh r1, [r0] + ldr r0, _080F3BCC @ =gUnknown_20375F8 + adds r0, r2 + strh r1, [r0] + movs r0, 0x1 +_080F3BB0: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080F3BB8: .4byte gUnknown_2031DD8 +_080F3BBC: .4byte gUnknown_203AB40 +_080F3BC0: .4byte gUnknown_8414588 +_080F3BC4: .4byte 0x0000247c +_080F3BC8: .4byte gUnknown_20371F8 +_080F3BCC: .4byte gUnknown_20375F8 + thumb_func_end sub_80F3B2C + + thumb_func_start sub_80F3BD0 +sub_80F3BD0: @ 80F3BD0 + push {r4-r7,lr} + sub sp, 0x24 + ldr r1, _080F3BEC @ =gUnknown_203AB40 + ldr r0, [r1] + ldrb r0, [r0] + adds r7, r1, 0 + cmp r0, 0x12 + bls _080F3BE2 + b _080F4180 +_080F3BE2: + lsls r0, 2 + ldr r1, _080F3BF0 @ =_080F3BF4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3BEC: .4byte gUnknown_203AB40 +_080F3BF0: .4byte _080F3BF4 + .align 2, 0 +_080F3BF4: + .4byte _080F3C40 + .4byte _080F3C64 + .4byte _080F3C98 + .4byte _080F3CEE + .4byte _080F3D0A + .4byte _080F3D48 + .4byte _080F3D6A + .4byte _080F3EB4 + .4byte _080F3F24 + .4byte _080F3F84 + .4byte _080F3FC4 + .4byte _080F3FF0 + .4byte _080F400A + .4byte _080F4084 + .4byte _080F40B8 + .4byte _080F40D0 + .4byte _080F4100 + .4byte _080F4118 + .4byte _080F4170 +_080F3C40: + bl sub_80F3A74 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r1, _080F3C5C @ =0x00004f51 + movs r0, 0x44 + bl sub_8000A38 + ldr r0, _080F3C60 @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x1 + b _080F413C + .align 2, 0 +_080F3C5C: .4byte 0x00004f51 +_080F3C60: .4byte gUnknown_203AB40 +_080F3C64: + bl sub_80F3AA4 + bl sub_80F3AC4 + movs r0, 0xF0 + bl sub_80F77CC + ldr r0, _080F3C8C @ =gUnknown_20371F8 + movs r2, 0xFF + lsls r2, 1 + adds r0, r2 + movs r1, 0 + strh r1, [r0] + ldr r0, _080F3C90 @ =gUnknown_20375F8 + adds r0, r2 + strh r1, [r0] + ldr r0, _080F3C94 @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x2 + b _080F413C + .align 2, 0 +_080F3C8C: .4byte gUnknown_20371F8 +_080F3C90: .4byte gUnknown_20375F8 +_080F3C94: .4byte gUnknown_203AB40 +_080F3C98: + movs r0, 0x44 + bl sub_8000AC4 + add r1, sp, 0x14 + lsls r0, 16 + lsrs r0, 24 + strh r0, [r1] + movs r0, 0x44 + bl sub_8000AC4 + add r2, sp, 0x14 + movs r1, 0xFF + ands r1, r0 + strh r1, [r2, 0x2] + adds r0, r2, 0 + ldrh r0, [r0] + cmp r0, 0x24 + bne _080F3CCC + ldr r0, _080F3CC8 @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x4] + movs r0, 0x3 + b _080F413C + .align 2, 0 +_080F3CC8: .4byte gUnknown_203AB40 +_080F3CCC: + add r1, sp, 0x14 + subs r0, 0x1 + strh r0, [r1] + adds r2, r1, 0 + adds r0, r1, 0 + ldrh r1, [r0, 0x2] + adds r1, 0x1 + strh r1, [r2, 0x2] + ldrh r0, [r0] + lsls r0, 8 + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + b _080F3D06 +_080F3CEE: + ldr r1, [r7] + ldrh r0, [r1, 0x4] + cmp r0, 0 + bne _080F3D52 + movs r0, 0 + bl sub_80F4930 + ldr r0, [r7] + movs r1, 0x64 + strh r1, [r0, 0x4] + movs r1, 0x4 + strb r1, [r0] +_080F3D06: + movs r0, 0 + b _080F4182 +_080F3D0A: + ldr r1, [r7] + ldrh r0, [r1, 0x4] + adds r2, r0, 0 + cmp r2, 0 + bne _080F3D52 + movs r0, 0xB4 + lsls r0, 1 + strh r0, [r1, 0x4] + ldrb r0, [r1, 0xA] + movs r1, 0x1 + str r1, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + ldr r1, _080F3D40 @ =gUnknown_8410E00 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _080F3D44 @ =gUnknown_841D198 + str r1, [sp, 0x10] + movs r1, 0x1 + movs r2, 0x8 + movs r3, 0x29 + bl sub_812E5A4 + ldr r1, [r7] + movs r0, 0x5 + b _080F413C + .align 2, 0 +_080F3D40: .4byte gUnknown_8410E00 +_080F3D44: .4byte gUnknown_841D198 +_080F3D48: + ldr r1, [r7] + ldrh r0, [r1, 0x4] + adds r4, r0, 0 + cmp r4, 0 + beq _080F3D58 +_080F3D52: + subs r0, 0x1 + strh r0, [r1, 0x4] + b _080F3D06 +_080F3D58: + bl sub_80F3B04 + ldr r0, [r7] + movs r1, 0x6 + strb r1, [r0] + ldr r0, [r7] + strh r4, [r0, 0x4] + strh r4, [r0, 0x6] + b _080F3D06 +_080F3D6A: + ldr r2, [r7] + ldrh r0, [r2, 0x4] + cmp r0, 0 + beq _080F3D7A + subs r0, 0x1 + strh r0, [r2, 0x4] + ldrb r0, [r2, 0x8] + b _080F4182 +_080F3D7A: + ldr r1, _080F3D94 @ =gUnknown_8410CF4 + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x5 + bls _080F3D8A + b _080F3E94 +_080F3D8A: + lsls r0, 2 + ldr r1, _080F3D98 @ =_080F3D9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3D94: .4byte gUnknown_8410CF4 +_080F3D98: .4byte _080F3D9C + .align 2, 0 +_080F3D9C: + .4byte _080F3DB4 + .4byte _080F3DE0 + .4byte _080F3E10 + .4byte _080F3E30 + .4byte _080F3E58 + .4byte _080F3E8C +_080F3DB4: + movs r0, 0x80 + lsls r0, 8 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r4, _080F3DDC @ =gUnknown_203AB40 + ldr r1, [r4] + movs r0, 0x7 + strb r0, [r1] + ldr r0, [r4] + ldrb r0, [r0, 0xA] + movs r1, 0 + bl sub_800445C + ldr r0, [r4] + ldrb r0, [r0, 0x8] + b _080F4182 + .align 2, 0 +_080F3DDC: .4byte gUnknown_203AB40 +_080F3DE0: + ldr r2, _080F3E04 @ =gUnknown_203AB40 + ldr r1, [r2] + movs r0, 0xA + strb r0, [r1] + ldr r2, [r2] + ldr r1, _080F3E08 @ =gUnknown_8410CF4 + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strb r0, [r2, 0x9] + ldr r2, _080F3E0C @ =0x3fffffff + movs r0, 0x1 + movs r1, 0 + bl sub_807A944 + b _080F3E94 + .align 2, 0 +_080F3E04: .4byte gUnknown_203AB40 +_080F3E08: .4byte gUnknown_8410CF4 +_080F3E0C: .4byte 0x3fffffff +_080F3E10: + ldr r2, _080F3E28 @ =gUnknown_203AB40 + ldr r1, [r2] + movs r0, 0xC + strb r0, [r1] + ldr r2, [r2] + ldr r1, _080F3E2C @ =gUnknown_8410CF4 + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strb r0, [r2, 0x9] + b _080F3E94 + .align 2, 0 +_080F3E28: .4byte gUnknown_203AB40 +_080F3E2C: .4byte gUnknown_8410CF4 +_080F3E30: + ldr r2, _080F3E50 @ =gUnknown_203AB40 + ldr r1, [r2] + movs r0, 0xD + strb r0, [r1] + ldr r2, [r2] + ldr r1, _080F3E54 @ =gUnknown_8410CF4 + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strb r0, [r2, 0x9] + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + b _080F3E94 + .align 2, 0 +_080F3E50: .4byte gUnknown_203AB40 +_080F3E54: .4byte gUnknown_8410CF4 +_080F3E58: + ldr r2, _080F3E84 @ =gUnknown_203AB40 + ldr r1, [r2] + movs r3, 0 + movs r0, 0xF + strb r0, [r1] + ldr r2, [r2] + ldr r1, _080F3E88 @ =gUnknown_8410CF4 + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strb r0, [r2, 0x9] + movs r0, 0x1 + negs r0, r0 + str r3, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080F3E94 + .align 2, 0 +_080F3E84: .4byte gUnknown_203AB40 +_080F3E88: .4byte gUnknown_8410CF4 +_080F3E8C: + ldr r0, _080F3EAC @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x11 + strb r0, [r1] +_080F3E94: + ldr r0, _080F3EAC @ =gUnknown_203AB40 + ldr r1, [r0] + ldr r2, _080F3EB0 @ =gUnknown_8410CF4 + ldrh r0, [r1, 0x6] + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x2] + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _080F3D06 + .align 2, 0 +_080F3EAC: .4byte gUnknown_203AB40 +_080F3EB0: .4byte gUnknown_8410CF4 +_080F3EB4: + ldr r0, _080F3F14 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _080F3FBA + add r3, sp, 0x14 + ldr r5, _080F3F18 @ =gUnknown_84145BC + ldr r4, _080F3F1C @ =gUnknown_8410CF4 + ldr r2, [r7] + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x8] + strh r0, [r3] + ldrb r0, [r2, 0xA] + str r6, [sp] + str r6, [sp, 0x4] + ldr r1, _080F3F20 @ =gUnknown_8410E00 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + ldrh r1, [r2, 0x6] + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x6 + bl sub_812E5A4 + ldr r1, [r7] + movs r0, 0x8 + b _080F3FB8 + .align 2, 0 +_080F3F14: .4byte gUnknown_2037AB8 +_080F3F18: .4byte gUnknown_84145BC +_080F3F1C: .4byte gUnknown_8410CF4 +_080F3F20: .4byte gUnknown_8410E00 +_080F3F24: + add r4, sp, 0x14 + ldr r3, _080F3F78 @ =gUnknown_84145BC + ldr r5, _080F3F7C @ =gUnknown_8410CF4 + ldr r2, [r7] + ldrh r0, [r2, 0x6] + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x8] + movs r1, 0 + strh r0, [r4] + ldrb r0, [r2, 0xA] + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _080F3F80 @ =gUnknown_8410E04 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + ldrh r1, [r2, 0x6] + lsls r1, 2 + adds r1, r5 + ldrb r2, [r1, 0x1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r3, 0x4 + adds r1, r3 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x8 + movs r3, 0x6 + bl sub_812E5A4 + ldr r1, [r7] + movs r0, 0x9 + b _080F3FB8 + .align 2, 0 +_080F3F78: .4byte gUnknown_84145BC +_080F3F7C: .4byte gUnknown_8410CF4 +_080F3F80: .4byte gUnknown_8410E04 +_080F3F84: + ldr r0, [r7] + ldrb r0, [r0, 0xA] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r7] + ldr r2, _080F3FC0 @ =gUnknown_8410CF4 + ldrh r0, [r1, 0x6] + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x2] + movs r2, 0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + movs r0, 0x80 + lsls r0, 8 + str r2, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, [r7] + movs r0, 0x6 +_080F3FB8: + strb r0, [r1] +_080F3FBA: + ldr r0, [r7] + ldrb r0, [r0, 0x8] + b _080F4182 + .align 2, 0 +_080F3FC0: .4byte gUnknown_8410CF4 +_080F3FC4: + ldr r0, _080F3FE8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080F3FD6 + b _080F3D06 +_080F3FD6: + bl sub_80F3B04 + ldr r1, _080F3FEC @ =gUnknown_203AB40 + ldr r0, [r1] + strb r4, [r0, 0x1] + ldr r1, [r1] + movs r0, 0xB + b _080F413C + .align 2, 0 +_080F3FE8: .4byte gUnknown_2037AB8 +_080F3FEC: .4byte gUnknown_203AB40 +_080F3FF0: + ldr r0, [r7] + ldrb r0, [r0, 0x9] + bl sub_80F3B2C + cmp r0, 0 + bne _080F3FFE + b _080F3D06 +_080F3FFE: + ldr r1, [r7] + movs r0, 0x1 + strb r0, [r1, 0x8] + ldr r1, [r7] + movs r0, 0x6 + b _080F413C +_080F400A: + ldr r0, _080F4050 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080F401C + b _080F3D06 +_080F401C: + bl sub_80F3B04 + ldr r1, _080F4054 @ =gUnknown_203AB40 + ldr r0, [r1] + strb r4, [r0, 0x1] + adds r4, r1, 0 +_080F4028: + ldr r0, [r4] + ldrb r0, [r0, 0x9] + bl sub_80F3B2C + cmp r0, 0 + beq _080F4028 + ldr r0, _080F4054 @ =gUnknown_203AB40 + ldr r0, [r0] + ldrb r0, [r0, 0x9] + cmp r0, 0x6 + beq _080F4058 + cmp r0, 0x6 + ble _080F404A + cmp r0, 0x9 + beq _080F405E + cmp r0, 0xC + beq _080F4064 +_080F404A: + add r1, sp, 0x14 + movs r0, 0x1 + b _080F4068 + .align 2, 0 +_080F4050: .4byte gUnknown_2037AB8 +_080F4054: .4byte gUnknown_203AB40 +_080F4058: + add r1, sp, 0x14 + movs r0, 0x2 + b _080F4068 +_080F405E: + add r1, sp, 0x14 + movs r0, 0x3 + b _080F4068 +_080F4064: + add r1, sp, 0x14 + movs r0, 0x4 +_080F4068: + strh r0, [r1] + add r0, sp, 0x14 + ldrb r0, [r0] + bl sub_80F4930 + ldr r2, _080F4080 @ =gUnknown_203AB40 + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x8] + ldr r1, [r2] + movs r0, 0x6 + b _080F413C + .align 2, 0 +_080F4080: .4byte gUnknown_203AB40 +_080F4084: + ldr r0, _080F40B0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080F4096 + b _080F3D06 +_080F4096: + bl sub_80F48D0 + bl sub_80F3B04 + ldr r1, _080F40B4 @ =gUnknown_203AB40 + ldr r0, [r1] + strb r4, [r0, 0x1] + ldr r0, [r1] + strb r4, [r0, 0x8] + ldr r1, [r1] + movs r0, 0xE + b _080F413C + .align 2, 0 +_080F40B0: .4byte gUnknown_2037AB8 +_080F40B4: .4byte gUnknown_203AB40 +_080F40B8: + bl sub_80F4328 + cmp r0, 0 + bne _080F40C2 + b _080F3D06 +_080F40C2: + ldr r0, _080F40CC @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x6 + b _080F413C + .align 2, 0 +_080F40CC: .4byte gUnknown_203AB40 +_080F40D0: + ldr r0, _080F40F8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080F40E2 + b _080F3D06 +_080F40E2: + bl sub_80F3B04 + ldr r1, _080F40FC @ =gUnknown_203AB40 + ldr r0, [r1] + strb r4, [r0, 0x1] + ldr r0, [r1] + strb r4, [r0, 0x8] + ldr r1, [r1] + movs r0, 0x10 + b _080F413C + .align 2, 0 +_080F40F8: .4byte gUnknown_2037AB8 +_080F40FC: .4byte gUnknown_203AB40 +_080F4100: + bl sub_80F4674 + cmp r0, 0 + bne _080F410A + b _080F3D06 +_080F410A: + ldr r0, _080F4114 @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x6 + b _080F413C + .align 2, 0 +_080F4114: .4byte gUnknown_203AB40 +_080F4118: + ldr r0, _080F4140 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F414C + movs r0, 0x1 + negs r0, r0 + ldr r1, _080F4144 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080F4148 @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x12 +_080F413C: + strb r0, [r1] + b _080F3D06 + .align 2, 0 +_080F4140: .4byte gUnknown_30030F0 +_080F4144: .4byte 0x00007fff +_080F4148: .4byte gUnknown_203AB40 +_080F414C: + ldr r1, [r7] + ldrh r0, [r1, 0x4] + cmp r0, 0 + beq _080F4156 + b _080F3D52 +_080F4156: + movs r0, 0x12 + strb r0, [r1] + subs r0, 0x13 + ldr r1, _080F416C @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080F3D06 + .align 2, 0 +_080F416C: .4byte 0x00007fff +_080F4170: + ldr r0, _080F418C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F4180 + bl sub_80F3B04 +_080F4180: + movs r0, 0x2 +_080F4182: + add sp, 0x24 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F418C: .4byte gUnknown_2037AB8 + thumb_func_end sub_80F3BD0 + + thumb_func_start sub_80F4190 +sub_80F4190: @ 80F4190 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80F4190 + + thumb_func_start sub_80F41A4 +sub_80F41A4: @ 80F41A4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + beq _080F4200 + cmp r4, 0x1 + bgt _080F41BA + cmp r4, 0 + beq _080F41C4 + b _080F42C2 +_080F41BA: + cmp r4, 0x2 + beq _080F4240 + cmp r4, 0x3 + beq _080F4288 + b _080F42C2 +_080F41C4: + ldr r0, _080F41F4 @ =gUnknown_840C5B0 + bl sub_8003B24 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0xA + str r0, [sp] + str r4, [sp, 0x4] + movs r0, 0x6 + movs r1, 0x8 + movs r2, 0 + movs r3, 0x1 + bl sub_810C228 + ldr r1, _080F41F8 @ =gUnknown_840CB8C + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r1, _080F41FC @ =gUnknown_840D228 + b _080F4270 + .align 2, 0 +_080F41F4: .4byte gUnknown_840C5B0 +_080F41F8: .4byte gUnknown_840CB8C +_080F41FC: .4byte gUnknown_840D228 +_080F4200: + ldr r0, _080F4234 @ =gUnknown_840C5D0 + bl sub_8003B24 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0xA + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x8 + movs r2, 0 + movs r3, 0x1 + bl sub_810C228 + ldr r1, _080F4238 @ =gUnknown_840E158 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r1, _080F423C @ =gUnknown_840E904 + b _080F4270 + .align 2, 0 +_080F4234: .4byte gUnknown_840C5D0 +_080F4238: .4byte gUnknown_840E158 +_080F423C: .4byte gUnknown_840E904 +_080F4240: + ldr r0, _080F427C @ =gUnknown_840C5F0 + bl sub_8003B24 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0xA + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r0, 0x9 + movs r1, 0x8 + movs r2, 0 + movs r3, 0x1 + bl sub_810C228 + ldr r1, _080F4280 @ =gUnknown_840F240 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r1, _080F4284 @ =gUnknown_840F944 +_080F4270: + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + b _080F42C2 + .align 2, 0 +_080F427C: .4byte gUnknown_840C5F0 +_080F4280: .4byte gUnknown_840F240 +_080F4284: .4byte gUnknown_840F944 +_080F4288: + ldr r0, _080F42E4 @ =gUnknown_840C610 + bl sub_8003B24 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0xA + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r0, 0x19 + movs r1, 0x8 + movs r2, 0 + movs r3, 0x1 + bl sub_810C228 + ldr r1, _080F42E8 @ =gUnknown_8410198 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r1, _080F42EC @ =gUnknown_84105B4 + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8004404 +_080F42C2: + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F42E4: .4byte gUnknown_840C610 +_080F42E8: .4byte gUnknown_8410198 +_080F42EC: .4byte gUnknown_84105B4 + thumb_func_end sub_80F41A4 + + thumb_func_start sub_80F42F0 +sub_80F42F0: @ 80F42F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x1 + beq _080F4314 + cmp r0, 0x1 + bgt _080F4306 + cmp r0, 0 + beq _080F4310 + b _080F4320 +_080F4306: + cmp r1, 0x2 + beq _080F4318 + cmp r1, 0x3 + beq _080F431C + b _080F4320 +_080F4310: + movs r0, 0x6 + b _080F4322 +_080F4314: + movs r0, 0x3 + b _080F4322 +_080F4318: + movs r0, 0x9 + b _080F4322 +_080F431C: + movs r0, 0x19 + b _080F4322 +_080F4320: + movs r0, 0 +_080F4322: + pop {r1} + bx r1 + thumb_func_end sub_80F42F0 + + thumb_func_start sub_80F4328 +sub_80F4328: @ 80F4328 + push {r4-r6,lr} + sub sp, 0x10 + ldr r1, _080F4344 @ =gUnknown_203AB40 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0x9 + bls _080F433A + b _080F4668 +_080F433A: + lsls r0, 2 + ldr r1, _080F4348 @ =_080F434C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F4344: .4byte gUnknown_203AB40 +_080F4348: .4byte _080F434C + .align 2, 0 +_080F434C: + .4byte _080F4374 + .4byte _080F44CC + .4byte _080F4504 + .4byte _080F4530 + .4byte _080F453A + .4byte _080F4558 + .4byte _080F4582 + .4byte _080F45D6 + .4byte _080F460E + .4byte _080F4638 +_080F4374: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + movs r1, 0xC0 + lsls r1, 7 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + bl sub_8070528 + bl sub_8006B10 + bl sub_80773BC + movs r0, 0x1 + bl sub_8001618 + ldr r1, _080F44A8 @ =gUnknown_840C5A4 + movs r0, 0x1 + movs r2, 0x3 + bl sub_8001658 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r6, _080F44AC @ =gUnknown_203AB40 + ldr r1, [r6] + movs r4, 0 + strh r4, [r1, 0xC] + strh r4, [r1, 0xE] + movs r2, 0x80 + lsls r2, 8 + movs r0, 0x50 + str r0, [sp] + movs r3, 0xC + ldrsh r0, [r1, r3] + str r0, [sp, 0x4] + movs r3, 0xC + ldrsh r0, [r1, r3] + str r0, [sp, 0x8] + str r4, [sp, 0xC] + movs r0, 0x2 + adds r1, r2, 0 + movs r3, 0x78 + bl sub_8001E80 + ldr r1, _080F44B0 @ =gUnknown_8EAAB98 + movs r5, 0x80 + lsls r5, 6 + str r4, [sp] + movs r0, 0x1 + adds r2, r5, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _080F44B4 @ =gUnknown_840C650 + str r4, [sp] + movs r0, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _080F44B8 @ =gUnknown_8EAB30C + movs r2, 0xA0 + lsls r2, 3 + movs r4, 0x1 + str r4, [sp] + movs r0, 0x1 + movs r3, 0 + bl sub_80F696C + ldr r1, _080F44BC @ =gUnknown_840CA54 + movs r2, 0x80 + lsls r2, 3 + str r4, [sp] + movs r0, 0x2 + movs r3, 0 + bl sub_80F696C + ldr r0, [r6] + ldrb r0, [r0, 0x9] + lsls r0, 5 + ldr r1, _080F44C0 @ =gUnknown_8EAAB18 + adds r0, r1 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080F44C4 @ =gUnknown_840C630 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, [r6] + ldrb r0, [r0, 0x9] + bl sub_80F41A4 + ldr r0, _080F44C8 @ =sub_80F4190 + bl sub_80006F4 + movs r0, 0x1 + bl sub_8000B68 + ldr r1, [r6] + b _080F4630 + .align 2, 0 +_080F44A8: .4byte gUnknown_840C5A4 +_080F44AC: .4byte gUnknown_203AB40 +_080F44B0: .4byte gUnknown_8EAAB98 +_080F44B4: .4byte gUnknown_840C650 +_080F44B8: .4byte gUnknown_8EAB30C +_080F44BC: .4byte gUnknown_840CA54 +_080F44C0: .4byte gUnknown_8EAAB18 +_080F44C4: .4byte gUnknown_840C630 +_080F44C8: .4byte sub_80F4190 +_080F44CC: + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _080F4500 @ =gUnknown_203AB40 + ldr r1, [r0] + b _080F4630 + .align 2, 0 +_080F4500: .4byte gUnknown_203AB40 +_080F4504: + movs r0, 0x2 + bl sub_80019BC + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080F452C @ =gUnknown_203AB40 + ldr r1, [r0] + movs r0, 0x28 + strh r0, [r1, 0xC] + b _080F4630 + .align 2, 0 +_080F452C: .4byte gUnknown_203AB40 +_080F4530: + ldr r1, [r4] + ldrh r0, [r1, 0xC] + cmp r0, 0 + bne _080F45DE + b _080F4630 +_080F453A: + ldr r0, _080F4554 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080F4548 + b _080F4668 +_080F4548: + ldr r1, [r4] + movs r0, 0x8 + strh r0, [r1, 0xC] + movs r0, 0x1 + strh r0, [r1, 0xE] + b _080F4630 + .align 2, 0 +_080F4554: .4byte gUnknown_2037AB8 +_080F4558: + ldr r1, [r4] + ldrh r0, [r1, 0xC] + cmp r0, 0 + bne _080F45DE + ldrh r0, [r1, 0xE] + cmp r0, 0x2 + bhi _080F4630 + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + movs r0, 0 + bl sub_80020BC + ldr r1, [r4] + movs r0, 0x4 + strh r0, [r1, 0xC] + ldrh r0, [r1, 0xE] + adds r0, 0x1 + strh r0, [r1, 0xE] + b _080F4668 +_080F4582: + ldr r3, [r4] + ldrh r0, [r3, 0xC] + cmp r0, 0xFF + bhi _080F45B2 + adds r0, 0x10 + movs r1, 0 + strh r0, [r3, 0xC] + movs r2, 0x80 + lsls r2, 8 + movs r0, 0x50 + str r0, [sp] + movs r4, 0xC + ldrsh r0, [r3, r4] + str r0, [sp, 0x4] + movs r4, 0xC + ldrsh r0, [r3, r4] + str r0, [sp, 0x8] + str r1, [sp, 0xC] + movs r0, 0x2 + adds r1, r2, 0 + movs r3, 0x78 + bl sub_8001E80 + b _080F4668 +_080F45B2: + movs r2, 0x80 + lsls r2, 8 + movs r0, 0x50 + str r0, [sp] + adds r0, 0xB0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + movs r0, 0x2 + adds r1, r2, 0 + movs r3, 0x78 + bl sub_8001E80 + ldr r1, [r4] + movs r0, 0x20 + strh r0, [r1, 0xC] + b _080F4630 +_080F45D6: + ldr r1, [r4] + ldrh r0, [r1, 0xC] + cmp r0, 0 + beq _080F45E4 +_080F45DE: + subs r0, 0x1 + strh r0, [r1, 0xC] + b _080F4668 +_080F45E4: + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019BC + ldr r0, [r4] + ldrb r0, [r0, 0x9] + bl sub_80F42F0 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + movs r2, 0x7D + movs r3, 0xA + bl sub_8071E3C + ldr r1, [r4] + movs r0, 0x80 + strh r0, [r1, 0xC] + b _080F4630 +_080F460E: + ldr r2, [r4] + ldrh r0, [r2, 0xC] + adds r1, r0, 0 + cmp r1, 0 + beq _080F461E + subs r0, 0x1 + strh r0, [r2, 0xC] + b _080F4668 +_080F461E: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] +_080F4630: + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _080F4668 +_080F4638: + ldr r0, _080F4660 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080F4668 + bl sub_8003ECC + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 + ldr r0, _080F4664 @ =gUnknown_203AB40 + ldr r0, [r0] + strb r4, [r0, 0x1] + movs r0, 0x1 + b _080F466A + .align 2, 0 +_080F4660: .4byte gUnknown_2037AB8 +_080F4664: .4byte gUnknown_203AB40 +_080F4668: + movs r0, 0 +_080F466A: + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80F4328 + + thumb_func_start sub_80F4674 +sub_80F4674: @ 80F4674 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _080F4690 @ =gUnknown_203AB40 + ldr r2, [r6] + ldrb r5, [r2, 0x1] + cmp r5, 0x1 + bne _080F4684 + b _080F4784 +_080F4684: + cmp r5, 0x1 + bgt _080F4694 + cmp r5, 0 + beq _080F46A0 + b _080F47EC + .align 2, 0 +_080F4690: .4byte gUnknown_203AB40 +_080F4694: + cmp r5, 0x2 + beq _080F478E + cmp r5, 0x3 + bne _080F469E + b _080F47D0 +_080F469E: + b _080F47EC +_080F46A0: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + movs r1, 0xC0 + lsls r1, 7 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + bl sub_8070528 + bl sub_8006B10 + bl sub_80773BC + movs r0, 0x1 + bl sub_8001618 + ldr r1, _080F4778 @ =gUnknown_840C5A4 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r4, _080F477C @ =gUnknown_8410CDC + ldr r0, [r6] + ldrb r1, [r0, 0x9] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 6 + str r5, [sp] + movs r0, 0 + movs r3, 0 + bl sub_80F696C + ldr r0, [r6] + ldrb r1, [r0, 0x9] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0x4 + adds r0, r1 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 4 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + movs r3, 0 + bl sub_80F696C + ldr r0, [r6] + ldrb r1, [r0, 0x9] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r4, 0x8 + adds r0, r4 + ldr r0, [r0] + movs r2, 0x80 + lsls r2, 2 + movs r1, 0 + bl sub_80703EC + ldr r0, _080F4780 @ =sub_80F4190 + bl sub_80006F4 + movs r0, 0x1 + bl sub_8000B68 + ldr r1, [r6] + b _080F47C2 + .align 2, 0 +_080F4778: .4byte gUnknown_840C5A4 +_080F477C: .4byte gUnknown_8410CDC +_080F4780: .4byte sub_80F4190 +_080F4784: + movs r0, 0 + bl sub_80020BC + ldr r1, [r6] + b _080F47C2 +_080F478E: + movs r0, 0 + bl sub_80019BC + ldr r0, [r6] + ldrb r1, [r0, 0x9] + cmp r1, 0 + beq _080F47AE + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl sub_8070588 + b _080F47BE +_080F47AE: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_080F47BE: + ldr r0, _080F47CC @ =gUnknown_203AB40 + ldr r1, [r0] +_080F47C2: + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _080F47EC + .align 2, 0 +_080F47CC: .4byte gUnknown_203AB40 +_080F47D0: + ldr r0, _080F47E8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080F47EC + strb r0, [r2, 0x1] + movs r0, 0x1 + b _080F47EE + .align 2, 0 +_080F47E8: .4byte gUnknown_2037AB8 +_080F47EC: + movs r0, 0 +_080F47EE: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80F4674 + + thumb_func_start sub_80F47F8 +sub_80F47F8: @ 80F47F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080F481C @ =gUnknown_3005098 + adds r3, r1, r0 + ldrb r0, [r3] + cmp r0, 0x1 + beq _080F4820 + cmp r0, 0x1 + ble _080F48C2 + cmp r0, 0x2 + beq _080F484C + cmp r0, 0x3 + beq _080F4896 + b _080F48C2 + .align 2, 0 +_080F481C: .4byte gUnknown_3005098 +_080F4820: + ldr r4, _080F4848 @ =gUnknown_202063C + ldrb r0, [r3, 0x1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r2, [r1, 0x20] + movs r5, 0x20 + ldrsh r0, [r1, r5] + cmp r0, 0xD0 + beq _080F4890 + subs r0, r2, 0x1 + strh r0, [r1, 0x20] + ldrb r1, [r3, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + b _080F48BC + .align 2, 0 +_080F4848: .4byte gUnknown_202063C +_080F484C: + ldr r0, _080F4888 @ =gUnknown_203AB40 + ldr r0, [r0] + ldrb r1, [r0, 0x1D] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F48C2 + ldr r4, _080F488C @ =gUnknown_202063C + ldrb r0, [r3, 0x1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r2, [r1, 0x22] + movs r5, 0x22 + ldrsh r0, [r1, r5] + cmp r0, 0x50 + beq _080F4890 + subs r0, r2, 0x1 + strh r0, [r1, 0x22] + ldrb r1, [r3, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] + b _080F48C2 + .align 2, 0 +_080F4888: .4byte gUnknown_203AB40 +_080F488C: .4byte gUnknown_202063C +_080F4890: + movs r0, 0 + strb r0, [r3] + b _080F48C2 +_080F4896: + ldr r0, _080F48C8 @ =gUnknown_203AB40 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xF + bne _080F48C2 + ldr r2, _080F48CC @ =gUnknown_202063C + ldrb r1, [r3, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x20] + subs r1, 0x1 + strh r1, [r0, 0x20] + ldrb r1, [r3, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 +_080F48BC: + ldrh r1, [r0, 0x20] + subs r1, 0x1 + strh r1, [r0, 0x20] +_080F48C2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F48C8: .4byte gUnknown_203AB40 +_080F48CC: .4byte gUnknown_202063C + thumb_func_end sub_80F47F8 + + thumb_func_start sub_80F48D0 +sub_80F48D0: @ 80F48D0 + push {r4-r6,lr} + ldr r6, _080F4924 @ =gUnknown_203AB40 + ldr r1, [r6] + ldrb r0, [r1, 0x2] + cmp r0, 0xFF + beq _080F491E + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080F4928 @ =gUnknown_3005098 + adds r4, r0 + ldrh r0, [r4, 0x2] + bl sub_800874C + ldrb r1, [r4, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _080F492C @ =gUnknown_202063C + adds r0, r5 + bl sub_8007280 + ldrh r0, [r4, 0x8] + bl sub_800874C + ldrb r1, [r4, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + ldr r0, [r6] + ldrb r0, [r0, 0x2] + bl sub_8077508 + ldr r1, [r6] + movs r0, 0xFF + strb r0, [r1, 0x2] +_080F491E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F4924: .4byte gUnknown_203AB40 +_080F4928: .4byte gUnknown_3005098 +_080F492C: .4byte gUnknown_202063C + thumb_func_end sub_80F48D0 + + thumb_func_start sub_80F4930 +sub_80F4930: @ 80F4930 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _080F4988 @ =gUnknown_203AB40 + ldr r0, [r4] + ldrb r0, [r0, 0x2] + cmp r0, 0xFF + beq _080F494A + b _080F4BDE +_080F494A: + ldr r0, _080F498C @ =sub_80F47F8 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _080F4990 @ =gUnknown_3005098 + adds r6, r1, r2 + ldr r1, [r4] + strb r0, [r1, 0x2] + ldr r1, _080F4994 @ =gUnknown_841431C + lsls r2, r7, 1 + adds r0, r2, r7 + lsls r0, 1 + adds r1, 0x4 + adds r0, r1 + ldrh r0, [r0] + mov r8, r2 + cmp r0, 0x1 + beq _080F4998 + cmp r0, 0x1 + ble _080F4980 + cmp r0, 0x2 + beq _080F49A2 +_080F4980: + movs r4, 0xD0 + movs r0, 0x50 + mov r9, r0 + b _080F49A8 + .align 2, 0 +_080F4988: .4byte gUnknown_203AB40 +_080F498C: .4byte sub_80F47F8 +_080F4990: .4byte gUnknown_3005098 +_080F4994: .4byte gUnknown_841431C +_080F4998: + movs r4, 0x88 + lsls r4, 1 + movs r2, 0x50 + mov r9, r2 + b _080F49A8 +_080F49A2: + movs r4, 0xD0 + movs r3, 0xA0 + mov r9, r3 +_080F49A8: + ldr r2, _080F49D0 @ =gUnknown_841431C + mov r5, r8 + adds r1, r5, r7 + lsls r1, 1 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldrh r0, [r0] + strb r0, [r6] + movs r0, 0x80 + lsls r0, 6 + strh r0, [r6, 0x2] + ldr r0, _080F49D4 @ =0x0000ffff + strh r0, [r6, 0x4] + adds r1, r2 + ldrh r0, [r1] + cmp r0, 0 + beq _080F49D8 + cmp r0, 0x1 + beq _080F4A4C + b _080F4A6C + .align 2, 0 +_080F49D0: .4byte gUnknown_841431C +_080F49D4: .4byte 0x0000ffff +_080F49D8: + ldr r0, _080F4A0C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _080F4A20 + ldr r0, _080F4A10 @ =gUnknown_8410E30 + str r0, [sp, 0x18] + ldr r1, _080F4A14 @ =0xffff0000 + add r0, sp, 0x18 + ldr r3, [r0, 0x4] + ands r3, r1 + movs r1, 0xC0 + lsls r1, 6 + orrs r3, r1 + str r3, [r0, 0x4] + ldrh r2, [r6, 0x2] + lsls r2, 16 + ldr r1, _080F4A18 @ =0x0000ffff + ands r1, r3 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_800EBCC + ldr r0, _080F4A1C @ =gUnknown_8410E10 + b _080F4A36 + .align 2, 0 +_080F4A0C: .4byte gUnknown_300500C +_080F4A10: .4byte gUnknown_8410E30 +_080F4A14: .4byte 0xffff0000 +_080F4A18: .4byte 0x0000ffff +_080F4A1C: .4byte gUnknown_8410E10 +_080F4A20: + ldr r0, _080F4A44 @ =gUnknown_8411C18 + str r0, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xC0 + lsls r1, 6 + strh r1, [r0, 0x4] + ldrh r1, [r6, 0x2] + strh r1, [r0, 0x6] + bl sub_800EBCC + ldr r0, _080F4A48 @ =gUnknown_8411BF8 +_080F4A36: + movs r1, 0xF8 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC + b _080F4A6C + .align 2, 0 +_080F4A44: .4byte gUnknown_8411C18 +_080F4A48: .4byte gUnknown_8411BF8 +_080F4A4C: + ldr r0, _080F4AD8 @ =gUnknown_84129C0 + str r0, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xC0 + lsls r1, 6 + strh r1, [r0, 0x4] + ldrh r1, [r6, 0x2] + strh r1, [r0, 0x6] + bl sub_800EBCC + ldr r0, _080F4ADC @ =gUnknown_84129A0 + movs r1, 0xF8 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC +_080F4A6C: + mov r1, sp + ldr r0, _080F4AE0 @ =gUnknown_8414364 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + mov r1, sp + ldrh r0, [r6, 0x2] + movs r5, 0 + strh r0, [r1] + lsls r4, 16 + asrs r1, r4, 16 + mov r2, r9 + mov r0, sp + movs r3, 0 + bl sub_8006F8C + strb r0, [r6, 0x1] + ldr r3, _080F4AE4 @ =gUnknown_202063C + ldrb r1, [r6, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x5] + movs r2, 0xF0 + orrs r1, r2 + strb r1, [r0, 0x5] + ldrb r1, [r6, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x43 + strb r5, [r0] + ldr r0, _080F4AE8 @ =0x00002001 + strh r0, [r6, 0x8] + ldr r0, _080F4AEC @ =0x0000ffff + strh r0, [r6, 0xA] + ldr r1, _080F4AF0 @ =gUnknown_841431C + mov r2, r8 + adds r0, r2, r7 + lsls r0, 1 + adds r1, 0x2 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0x1 + beq _080F4B20 + cmp r0, 0x1 + bgt _080F4AF4 + cmp r0, 0 + beq _080F4AFE + b _080F4BA0 + .align 2, 0 +_080F4AD8: .4byte gUnknown_84129C0 +_080F4ADC: .4byte gUnknown_84129A0 +_080F4AE0: .4byte gUnknown_8414364 +_080F4AE4: .4byte gUnknown_202063C +_080F4AE8: .4byte 0x00002001 +_080F4AEC: .4byte 0x0000ffff +_080F4AF0: .4byte gUnknown_841431C +_080F4AF4: + cmp r0, 0x2 + beq _080F4B54 + cmp r0, 0x3 + beq _080F4B74 + b _080F4BA0 +_080F4AFE: + ldr r0, _080F4B18 @ =gUnknown_8413338 + str r0, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xC0 + lsls r1, 6 + strh r1, [r0, 0x4] + ldrh r1, [r6, 0x8] + strh r1, [r0, 0x6] + bl sub_800EBCC + ldr r0, _080F4B1C @ =gUnknown_8413318 + b _080F4B8A + .align 2, 0 +_080F4B18: .4byte gUnknown_8413338 +_080F4B1C: .4byte gUnknown_8413318 +_080F4B20: + ldr r0, _080F4B48 @ =gUnknown_8413338 + str r0, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xC0 + lsls r1, 6 + strh r1, [r0, 0x4] + ldrh r1, [r6, 0x8] + strh r1, [r0, 0x6] + bl sub_800EBCC + ldr r0, _080F4B4C @ =gUnknown_8413318 + movs r1, 0xF0 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC + mov r1, sp + ldr r0, _080F4B50 @ =gUnknown_84143D0 + b _080F4B98 + .align 2, 0 +_080F4B48: .4byte gUnknown_8413338 +_080F4B4C: .4byte gUnknown_8413318 +_080F4B50: .4byte gUnknown_84143D0 +_080F4B54: + ldr r0, _080F4B6C @ =gUnknown_8413874 + str r0, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xC0 + lsls r1, 6 + strh r1, [r0, 0x4] + ldrh r1, [r6, 0x8] + strh r1, [r0, 0x6] + bl sub_800EBCC + ldr r0, _080F4B70 @ =gUnknown_8413854 + b _080F4B8A + .align 2, 0 +_080F4B6C: .4byte gUnknown_8413874 +_080F4B70: .4byte gUnknown_8413854 +_080F4B74: + ldr r0, _080F4BEC @ =gUnknown_8413DB8 + str r0, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xC0 + lsls r1, 6 + strh r1, [r0, 0x4] + ldrh r1, [r6, 0x8] + strh r1, [r0, 0x6] + bl sub_800EBCC + ldr r0, _080F4BF0 @ =gUnknown_8413D98 +_080F4B8A: + movs r1, 0xF0 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC + mov r1, sp + ldr r0, _080F4BF4 @ =gUnknown_84143B8 +_080F4B98: + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_080F4BA0: + mov r1, sp + ldrh r0, [r6, 0x8] + strh r0, [r1] + asrs r1, r4, 16 + mov r2, r9 + adds r2, 0x26 + mov r0, sp + movs r3, 0 + bl sub_8006F8C + strb r0, [r6, 0x6] + ldr r3, _080F4BF8 @ =gUnknown_202063C + ldrb r1, [r6, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r2, [r0, 0x5] + movs r1, 0xF + ands r1, r2 + movs r2, 0xE0 + orrs r1, r2 + strb r1, [r0, 0x5] + ldrb r1, [r6, 0x6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x43 + movs r1, 0x1 + strb r1, [r0] +_080F4BDE: + add sp, 0x20 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F4BEC: .4byte gUnknown_8413DB8 +_080F4BF0: .4byte gUnknown_8413D98 +_080F4BF4: .4byte gUnknown_84143B8 +_080F4BF8: .4byte gUnknown_202063C + thumb_func_end sub_80F4930 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/crt0.s b/asm/crt0.s new file mode 100644 index 000000000..37c7ef502 --- /dev/null +++ b/asm/crt0.s @@ -0,0 +1,227 @@ + .include "constants/gba_constants.inc" + + .syntax unified + + .global Start + + .text + + .arm + +Start: @ 8000000 + b Init + + .include "asm/rom_header.inc" + +@ 80000C0 + .word 0 + + .global GPIOPortData +GPIOPortData: @ 80000C4 + .hword 0 + + .global GPIOPortDirection +GPIOPortDirection: @ 80000C6 + .hword 0 + + .global GPIOPortReadEnable +GPIOPortReadEnable: @ 80000C8 + .hword 0 + + .space 6 + +@ 80000D0 + +@ TODO: figure out what this data is + + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 4 + .4byte 2 + .ascii "pokemon red version" + .space 13 + .4byte 0x82350AC @ gMonFrontPicTable + .4byte 0x823654C @ gMonBackPicTable + .4byte 0x823730C @ gMonPaletteTable + .4byte 0x82380CC @ gMonShinyPaletteTable + .4byte 0x83D37A0 @ gMonIconTable + .4byte 0x83D3E80 @ gMonIconPaletteIndices + .4byte 0x83D4038 @ gMonIconPaletteTable + .4byte 0x8245EE0 @ gSpeciesNames + .4byte 0x8247094 @ gMoveNames + .4byte 0x84556F8 @ gDecorations + .4byte 0xEE0 + .4byte 0x1000 + .4byte 0x18 + .4byte 0x5F8 + .4byte 0x3A18 + .4byte 0x3C + .4byte 0x838 + .4byte 0x839 + .4byte 0x182 + .4byte 0xA0A0A07 + .4byte 0xC060C0C + .4byte 0xC121006 + .4byte 0x8010B0F + .4byte 0xC + .4byte 0xF24 + .4byte 0x3D68 + .4byte 0x34 + .4byte 0x38 + .4byte 9 + .4byte 0xA + .4byte 0 + .4byte 8 + .4byte 0xAD + .4byte 0xAD + .4byte 0x30BB + .4byte 0x30A7 + .4byte 0 + .4byte 0x8254784 + .4byte 0x824FC40 + .4byte 0x824FB08 + .4byte 0x83DB028 + .4byte 0x8250C04 + .4byte 0x826056C + .4byte 0x82605CC + .4byte 0xA8 + .4byte 0x82C + .4byte 0x83B + .4byte 0x3A0D1E2A + .4byte 0x1E2B + .4byte 0x298 + .4byte 0x309C + .4byte 0x30EC + .4byte 0x34 + .4byte 0 + .4byte 0xFFFFFFFF + + .arm + .align 2, 0 + .global Init +Init: + mov r0, PSR_IRQ_MODE + msr cpsr_cf, r0 + ldr sp, sp_irq + mov r0, PSR_SYS_MODE + msr cpsr_cf, r0 + ldr sp, sp_sys + ldr r1, =INTR_VECTOR + adr r0, IntrMain + str r0, [r1] + ldr r1, =AgbMain + mov lr, pc + bx r1 + b Init + + .align 2, 0 +sp_sys: .word IWRAM_END - 0x1C0 +sp_irq: .word IWRAM_END - 0x60 + + .pool + + .arm + .align 2, 0 + .global IntrMain +IntrMain: + mov r3, REG_BASE + add r3, r3, 0x200 + ldr r2, [r3, OFFSET_REG_IE - 0x200] + ldrh r1, [r3, OFFSET_REG_IME - 0x200] + mrs r0, spsr + stmdb sp!, {r0-r3,lr} + mov r0, 0 + strh r0, [r3, OFFSET_REG_IME - 0x200] + and r1, r2, r2, lsr 16 + mov r12, 0 + ands r0, r1, INTR_FLAG_VCOUNT + bne IntrMain_FoundIntr + add r12, r12, 0x4 + mov r0, 0x1 + strh r0, [r3, OFFSET_REG_IME - 0x200] + ands r0, r1, INTR_FLAG_SERIAL + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER3 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_HBLANK + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_VBLANK + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER0 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER1 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER2 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA0 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA1 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA2 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA3 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_KEYPAD + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_GAMEPAK + strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200] + bne . @ spin +IntrMain_FoundIntr: + strh r0, [r3, OFFSET_REG_IF - 0x200] + bic r2, r2, r0 + ldr r0, =gRfuState + ldr r0, [r0] + ldrb r0, [r0, 0xA] + mov r1, 0x8 + mov r0, r1, lsl r0 + orr r0, r0, INTR_FLAG_GAMEPAK + orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK + and r1, r1, r2 + strh r1, [r3, OFFSET_REG_IE - 0x200] + mrs r3, cpsr + bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, PSR_SYS_MODE + msr cpsr_cf, r3 + ldr r1, =gIntrTable + add r1, r1, r12 + ldr r0, [r1] + stmdb sp!, {lr} + adr lr, IntrMain_RetAddr + bx r0 +IntrMain_RetAddr: + ldmia sp!, {lr} + mrs r3, cpsr + bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE + msr cpsr_cf, r3 + ldmia sp!, {r0-r3,lr} + strh r2, [r3, OFFSET_REG_IE - 0x200] + strh r1, [r3, OFFSET_REG_IME - 0x200] + msr spsr_cf, r0 + bx lr + + .pool + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/daycare.s b/asm/daycare.s new file mode 100644 index 000000000..5ba9669c9 --- /dev/null +++ b/asm/daycare.s @@ -0,0 +1,3216 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80453C0 +sub_80453C0: @ 80453C0 + push {r4,lr} + sub sp, 0x14 + adds r4, r1, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + adds r0, r4, 0 + mov r1, sp + bl sub_8008CF4 + add sp, 0x14 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80453C0 + + thumb_func_start sub_80453E0 +sub_80453E0: @ 80453E0 + push {r4,lr} + sub sp, 0x14 + adds r4, r1, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FD44 + adds r0, r4, 0 + mov r1, sp + bl sub_8008CF4 + add sp, 0x14 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80453E0 + + thumb_func_start sub_8045400 +sub_8045400: @ 8045400 + push {r4-r6,lr} + adds r6, r0, 0 + movs r5, 0 + movs r4, 0 +_08045408: + movs r0, 0x8C + muls r0, r4 + adds r0, r6, r0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + beq _0804541E + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0804541E: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bls _08045408 + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8045400 + + thumb_func_start sub_8045430 +sub_8045430: @ 8045430 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + mov r10, r1 + movs r7, 0 + movs r5, 0 + mov r6, r10 + adds r6, 0x74 + movs r0, 0x1 + mov r8, r0 +_0804544A: + movs r0, 0x8C + muls r0, r5 + mov r1, r9 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + beq _08045478 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FD44 + adds r1, r0, 0 + cmp r1, 0 + bne _08045478 + lsls r0, r5, 1 + adds r0, r6, r0 + b _0804547E +_08045478: + lsls r0, r5, 1 + adds r0, r6, r0 + mov r1, r8 +_0804547E: + strh r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _0804544A + mov r0, r10 + str r7, [r0, 0x70] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8045430 + + thumb_func_start sub_804549C +sub_804549C: @ 804549C + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 +_080454A2: + movs r0, 0x8C + muls r0, r4 + adds r0, r5, r0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + bne _080454B8 + lsls r0, r4, 24 + asrs r0, 24 + b _080454C6 +_080454B8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bls _080454A2 + movs r0, 0x1 + negs r0, r0 +_080454C6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_804549C + + thumb_func_start sub_80454CC +sub_80454CC: @ 80454CC + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8097D08 + lsls r0, 24 + cmp r0, 0 + beq _08045524 + adds r0, r4, 0 + adds r0, 0x74 + ldr r1, _08045550 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + adds r1, r4, 0 + adds r1, 0x7C + adds r0, r5, 0 + bl sub_80453C0 + adds r0, r5, 0 + movs r1, 0x40 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08045554 @ =gUnknown_3005008 + ldr r1, [r1] + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r1, r2 + adds r0, r4, 0 + adds r0, 0x50 + ldr r2, _08045558 @ =0x00002cd0 + adds r1, r2 + ldm r1!, {r2,r3,r6} + stm r0!, {r2,r3,r6} + ldm r1!, {r2,r3,r6} + stm r0!, {r2,r3,r6} + ldm r1!, {r2,r3,r6} + stm r0!, {r2,r3,r6} + adds r0, r5, 0 + bl sub_8097FB8 +_08045524: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x50 + bl memcpy + adds r0, r4, 0 + bl sub_80442E4 + adds r1, r4, 0 + adds r1, 0x88 + movs r0, 0 + str r0, [r1] + adds r0, r5, 0 + bl sub_803D994 + bl sub_80937DC + bl sub_8040C3C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08045550: .4byte gUnknown_300500C +_08045554: .4byte gUnknown_3005008 +_08045558: .4byte 0x00002cd0 + thumb_func_end sub_80454CC + + thumb_func_start sub_804555C +sub_804555C: @ 804555C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_804549C + lsls r0, 24 + asrs r0, 24 + movs r1, 0x8C + muls r0, r1 + adds r4, r0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80454CC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_804555C + + thumb_func_start sub_8045580 +sub_8045580: @ 8045580 + push {lr} + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _080455A4 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080455A8 @ =gUnknown_3005008 + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 6 + adds r1, r2 + bl sub_804555C + pop {r0} + bx r0 + .align 2, 0 +_080455A4: .4byte gUnknown_2024284 +_080455A8: .4byte gUnknown_3005008 + thumb_func_end sub_8045580 + + thumb_func_start sub_80455AC +sub_80455AC: @ 80455AC + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r5, 0 + adds r4, 0x8C + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + beq _08045602 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FD44 + adds r6, r0, 0 + cmp r6, 0 + bne _08045602 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x50 + bl memcpy + adds r0, r4, 0 + bl sub_803D97C + adds r4, 0x50 + adds r0, r5, 0 + adds r0, 0x50 + adds r1, r4, 0 + movs r2, 0x38 + bl memcpy + adds r2, r5, 0 + adds r2, 0x88 + movs r0, 0x8A + lsls r0, 1 + adds r1, r5, r0 + ldr r0, [r1] + str r0, [r2] + str r6, [r1] + adds r0, r4, 0 + bl sub_80458E8 +_08045602: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80455AC + + thumb_func_start sub_8045608 +sub_8045608: @ 8045608 + push {r4-r7,lr} + adds r4, r0, 0 + movs r5, 0 + ldr r7, _08045624 @ =0x0000ffff +_08045610: + adds r0, r4, 0 + bl sub_8043B90 + lsls r0, 24 + cmp r0, 0 + beq _0804564C + movs r6, 0x1 + adds r5, 0x1 + b _08045638 + .align 2, 0 +_08045624: .4byte 0x0000ffff +_08045628: + movs r6, 0 + cmp r0, r7 + bne _08045638 + ldr r0, _08045658 @ =gUnknown_2024022 + ldrh r1, [r0] + adds r0, r4, 0 + bl sub_803EB94 +_08045638: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_803EA88 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08045628 + cmp r5, 0x63 + ble _08045610 +_0804564C: + adds r0, r4, 0 + bl sub_803E47C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08045658: .4byte gUnknown_2024022 + thumb_func_end sub_8045608 + + thumb_func_start sub_804565C +sub_804565C: @ 804565C + push {r4-r7,lr} + sub sp, 0x68 + adds r5, r0, 0 + ldr r1, _080456F8 @ =gUnknown_2021CD0 + bl sub_80453E0 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FD44 + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r5, 0 + mov r1, sp + bl sub_803E774 + mov r0, sp + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x64 + beq _080456AA + mov r0, sp + movs r1, 0x19 + bl sub_803FBE8 + adds r1, r5, 0 + adds r1, 0x88 + ldr r1, [r1] + adds r0, r1 + str r0, [sp, 0x64] + add r2, sp, 0x64 + mov r0, sp + movs r1, 0x19 + bl sub_804037C + mov r0, sp + bl sub_8045608 +_080456AA: + ldr r0, _080456FC @ =gUnknown_2024284 + movs r1, 0xFA + lsls r1, 1 + adds r6, r0, r1 + adds r0, r6, 0 + mov r1, sp + movs r2, 0x64 + bl memcpy + adds r0, r5, 0 + adds r0, 0x70 + ldrh r0, [r0] + cmp r0, 0 + beq _080456D8 + adds r4, r5, 0 + adds r4, 0x50 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8097F44 + adds r0, r4, 0 + bl sub_80458E8 +_080456D8: + adds r0, r5, 0 + bl sub_803D97C + adds r1, r5, 0 + adds r1, 0x88 + movs r0, 0 + str r0, [r1] + bl sub_80937DC + bl sub_8040C3C + adds r0, r7, 0 + add sp, 0x68 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080456F8: .4byte gUnknown_2021CD0 +_080456FC: .4byte gUnknown_2024284 + thumb_func_end sub_804565C + + thumb_func_start sub_8045700 +sub_8045700: @ 8045700 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x8C + muls r0, r1 + adds r0, r5, r0 + bl sub_804565C + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80455AC + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8045700 + + thumb_func_start sub_8045728 +sub_8045728: @ 8045728 + push {lr} + ldr r0, _08045744 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + ldr r1, _08045748 @ =gUnknown_20370C0 + ldrb r1, [r1] + bl sub_8045700 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08045744: .4byte gUnknown_3005008 +_08045748: .4byte gUnknown_20370C0 + thumb_func_end sub_8045728 + + thumb_func_start sub_804574C +sub_804574C: @ 804574C + push {r4,r5,lr} + sub sp, 0x54 + adds r4, r0, 0 + adds r5, r1, 0 + mov r0, sp + adds r1, r4, 0 + movs r2, 0x50 + bl memcpy + adds r0, r4, 0 + movs r1, 0x19 + bl sub_803FD44 + adds r0, r5 + str r0, [sp, 0x50] + add r2, sp, 0x50 + mov r0, sp + movs r1, 0x19 + bl sub_80404D0 + mov r0, sp + bl sub_803E830 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x54 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_804574C + + thumb_func_start sub_8045788 +sub_8045788: @ 8045788 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_803E830 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r0, 0x88 + ldr r1, [r0] + adds r0, r5, 0 + bl sub_804574C + lsls r0, 24 + lsrs r0, 24 + subs r0, r4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8045788 + + thumb_func_start sub_80457B4 +sub_80457B4: @ 80457B4 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8045788 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080457E0 @ =gUnknown_2021CF0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + ldr r1, _080457E4 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_80453E0 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080457E0: .4byte gUnknown_2021CF0 +_080457E4: .4byte gUnknown_2021CD0 + thumb_func_end sub_80457B4 + + thumb_func_start sub_80457E8 +sub_80457E8: @ 80457E8 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8045788 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _08045818 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_80453E0 + movs r0, 0x64 + muls r4, r0 + adds r4, 0x64 + ldr r0, _0804581C @ =gUnknown_2021CF0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x5 + bl sub_8008E78 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08045818: .4byte gUnknown_2021CD0 +_0804581C: .4byte gUnknown_2021CF0 + thumb_func_end sub_80457E8 + + thumb_func_start sub_8045820 +sub_8045820: @ 8045820 + push {lr} + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x8C + muls r1, r2 + adds r0, r1 + bl sub_80457E8 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8045820 + + thumb_func_start sub_8045838 +sub_8045838: @ 8045838 + push {lr} + ldr r0, _08045854 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + ldr r1, _08045858 @ =gUnknown_20370C0 + ldrb r1, [r1] + bl sub_8045820 + ldr r1, _0804585C @ =gUnknown_20370C2 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08045854: .4byte gUnknown_3005008 +_08045858: .4byte gUnknown_20370C0 +_0804585C: .4byte gUnknown_20370C2 + thumb_func_end sub_8045838 + + thumb_func_start sub_8045860 +sub_8045860: @ 8045860 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08045888 @ =gUnknown_3005008 + ldr r2, [r1] + ldr r1, _0804588C @ =0x00003008 + adds r3, r2, r1 + ldr r1, [r3] + adds r1, r0 + str r1, [r3] + ldr r1, _08045890 @ =0x00003094 + adds r3, r2, r1 + ldr r1, [r3] + adds r1, r0 + str r1, [r3] + ldr r1, _08045894 @ =0x00003d20 + adds r2, r1 + ldr r1, [r2] + adds r1, r0 + str r1, [r2] + bx lr + .align 2, 0 +_08045888: .4byte gUnknown_3005008 +_0804588C: .4byte 0x00003008 +_08045890: .4byte 0x00003094 +_08045894: .4byte 0x00003d20 + thumb_func_end sub_8045860 + + thumb_func_start sub_8045898 +sub_8045898: @ 8045898 + push {r4-r6,lr} + ldr r6, _080458C0 @ =gUnknown_3005008 + ldr r5, _080458C4 @ =gUnknown_20370C0 + ldrh r0, [r5] + movs r4, 0x8C + adds r1, r0, 0 + muls r1, r4 + movs r0, 0xBE + lsls r0, 6 + adds r1, r0 + ldr r0, [r6] + adds r0, r1 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + bne _080458C8 + movs r0, 0 + b _080458E0 + .align 2, 0 +_080458C0: .4byte gUnknown_3005008 +_080458C4: .4byte gUnknown_20370C0 +_080458C8: + ldrh r0, [r5] + adds r1, r0, 0 + muls r1, r4 + movs r0, 0xBE + lsls r0, 6 + adds r1, r0 + ldr r0, [r6] + adds r0, r1 + bl sub_80457B4 + lsls r0, 24 + lsrs r0, 24 +_080458E0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8045898 + + thumb_func_start sub_80458E8 +sub_80458E8: @ 80458E8 + push {lr} + movs r3, 0 + movs r2, 0x7 + adds r1, r0, 0 + adds r1, 0x2B +_080458F2: + strb r3, [r1] + subs r1, 0x1 + subs r2, 0x1 + cmp r2, 0 + bge _080458F2 + adds r2, r0, 0 + adds r2, 0x2C + movs r3, 0 + adds r1, r0, 0 + adds r1, 0x36 +_08045906: + strb r3, [r1] + subs r1, 0x1 + cmp r1, r2 + bge _08045906 + bl sub_8097CB4 + pop {r0} + bx r0 + thumb_func_end sub_80458E8 + + thumb_func_start sub_8045918 +sub_8045918: @ 8045918 + push {r4,lr} + adds r4, r0, 0 + bl sub_803D97C + adds r1, r4, 0 + adds r1, 0x88 + movs r0, 0 + str r0, [r1] + adds r4, 0x50 + adds r0, r4, 0 + bl sub_80458E8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8045918 + + thumb_func_start sub_8045938 +sub_8045938: @ 8045938 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + movs r6, 0x8C +_08045940: + adds r0, r4, 0 + muls r0, r6 + adds r0, r5, r0 + bl sub_8045918 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bls _08045940 + movs r1, 0x8C + lsls r1, 1 + adds r0, r5, r1 + movs r2, 0 + movs r1, 0 + strh r1, [r0] + movs r1, 0x8D + lsls r1, 1 + adds r0, r5, r1 + strb r2, [r0] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8045938 + + thumb_func_start sub_8045970 +sub_8045970: @ 8045970 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r2, r0, 16 + movs r0, 0 + mov r8, r0 + ldr r0, _0804599C @ =gUnknown_8259754 + mov r12, r0 +_08045982: + movs r7, 0 + movs r6, 0x1 + movs r4, 0x80 + lsls r4, 9 + movs r5, 0x28 + mov r3, r12 + adds r3, 0x28 +_08045990: + movs r1, 0 + ldrh r0, [r3, 0x4] + cmp r0, r2 + bne _080459A0 + lsrs r2, r4, 16 + b _080459CC + .align 2, 0 +_0804599C: .4byte gUnknown_8259754 +_080459A0: + adds r1, 0x1 + cmp r1, 0x4 + bgt _080459B6 + lsls r0, r1, 3 + adds r0, r5 + add r0, r12 + ldrh r0, [r0, 0x4] + cmp r0, r2 + bne _080459A0 + lsrs r2, r4, 16 + movs r7, 0x1 +_080459B6: + cmp r7, 0 + bne _080459CC + movs r0, 0x80 + lsls r0, 9 + adds r4, r0 + adds r5, 0x28 + adds r3, 0x28 + adds r6, 0x1 + ldr r0, _080459EC @ =0x0000019b + cmp r6, r0 + ble _08045990 +_080459CC: + movs r0, 0xCE + lsls r0, 1 + cmp r6, r0 + beq _080459DE + movs r0, 0x1 + add r8, r0 + mov r0, r8 + cmp r0, 0x4 + ble _08045982 +_080459DE: + adds r0, r2, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080459EC: .4byte 0x0000019b + thumb_func_end sub_8045970 + + thumb_func_start sub_80459F0 +sub_80459F0: @ 80459F0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08045A18 @ =0x0000fffe + bl __umodsi3 + adds r0, 0x1 + movs r1, 0x8C + lsls r1, 1 + adds r4, r1 + strh r0, [r4] + ldr r0, _08045A1C @ =0x00000266 + bl sub_806E680 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08045A18: .4byte 0x0000fffe +_08045A1C: .4byte 0x00000266 + thumb_func_end sub_80459F0 + + thumb_func_start sub_8045A20 +sub_8045A20: @ 8045A20 + push {r4,lr} + adds r4, r0, 0 + bl sub_8044EC8 + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + movs r2, 0x8C + lsls r2, 1 + adds r4, r2 + orrs r1, r0 + strh r1, [r4] + ldr r0, _08045A44 @ =0x00000266 + bl sub_806E680 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08045A44: .4byte 0x00000266 + thumb_func_end sub_8045A20 + + thumb_func_start sub_8045A48 +sub_8045A48: @ 8045A48 + push {lr} + ldr r0, _08045A5C @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_80459F0 + pop {r0} + bx r0 + .align 2, 0 +_08045A5C: .4byte gUnknown_3005008 + thumb_func_end sub_8045A48 + + thumb_func_start sub_8045A60 +sub_8045A60: @ 8045A60 + push {lr} + ldr r0, _08045A74 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_8045A20 + pop {r0} + bx r0 + .align 2, 0 +_08045A74: .4byte gUnknown_3005008 + thumb_func_end sub_8045A60 + + thumb_func_start sub_8045A78 +sub_8045A78: @ 8045A78 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r1, r4, r1 + movs r0, 0xFF + strb r0, [r1] + movs r2, 0 +_08045A8A: + mov r1, sp + adds r0, r1, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x5 + ble _08045A8A + movs r3, 0 + movs r2, 0 +_08045A9E: + mov r1, sp + adds r0, r1, r2 + ldrb r1, [r0] + adds r0, r1, 0 + cmp r0, 0xFF + beq _08045AB0 + adds r0, r4, r3 + strb r1, [r0] + adds r3, 0x1 +_08045AB0: + adds r2, 0x1 + cmp r2, 0x5 + ble _08045A9E + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8045A78 + + thumb_func_start sub_8045AC0 +sub_8045AC0: @ 8045AC0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r0 + mov r8, r1 + movs r5, 0 + add r1, sp, 0x4 + add r7, sp, 0xC + adds r2, r1, 0 +_08045AD6: + adds r0, r2, r5 + strb r5, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08045AD6 + movs r5, 0 + adds r6, r1, 0 +_08045AE8: + bl sub_8044EC8 + mov r1, sp + adds r4, r1, r5 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + subs r1, r5 + bl __modsi3 + adds r0, r6, r0 + ldrb r0, [r0] + strb r0, [r4] + ldrb r1, [r4] + adds r0, r6, 0 + bl sub_8045A78 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _08045AE8 + movs r5, 0 + movs r4, 0x1 +_08045B18: + bl sub_8044EC8 + adds r1, r7, r5 + lsls r0, 16 + lsrs r0, 16 + ands r0, r4 + strb r0, [r1] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _08045B18 + movs r5, 0 +_08045B32: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _08045C0E + lsls r0, 2 + ldr r1, _08045B48 @ =_08045B4C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08045B48: .4byte _08045B4C + .align 2, 0 +_08045B4C: + .4byte _08045B64 + .4byte _08045B82 + .4byte _08045B9C + .4byte _08045BB6 + .4byte _08045BD0 + .4byte _08045BF0 +_08045B64: + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + movs r1, 0x27 + bl sub_803FD44 + add r2, sp, 0x10 + strb r0, [r2] + mov r0, r9 + movs r1, 0x27 + bl sub_804037C + b _08045C0E +_08045B82: + add r4, sp, 0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + movs r1, 0x28 + bl sub_803FD44 + strb r0, [r4] + mov r0, r9 + movs r1, 0x28 + b _08045BE8 +_08045B9C: + add r4, sp, 0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + movs r1, 0x29 + bl sub_803FD44 + strb r0, [r4] + mov r0, r9 + movs r1, 0x29 + b _08045BE8 +_08045BB6: + add r4, sp, 0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + movs r1, 0x2A + bl sub_803FD44 + strb r0, [r4] + mov r0, r9 + movs r1, 0x2A + b _08045BE8 +_08045BD0: + add r4, sp, 0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + movs r1, 0x2B + bl sub_803FD44 + strb r0, [r4] + mov r0, r9 + movs r1, 0x2B +_08045BE8: + adds r2, r4, 0 + bl sub_804037C + b _08045C0E +_08045BF0: + add r4, sp, 0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + movs r1, 0x2C + bl sub_803FD44 + strb r0, [r4] + mov r0, r9 + movs r1, 0x2C + adds r2, r4, 0 + bl sub_804037C +_08045C0E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _08045B32 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8045AC0 + + thumb_func_start sub_8045C28 +sub_8045C28: @ 8045C28 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + movs r6, 0 + movs r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r5, _08045C50 @ =gUnknown_825EF0C + ldrh r1, [r5] + ldr r7, _08045C54 @ =0x00004e20 + adds r0, r3, r7 + cmp r1, r0 + bne _08045C58 + movs r4, 0x1 + b _08045C7A + .align 2, 0 +_08045C50: .4byte gUnknown_825EF0C +_08045C54: .4byte 0x00004e20 +_08045C58: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08045CC4 @ =0x00000471 + ldr r5, _08045CC8 @ =gUnknown_825EF0C + cmp r2, r0 + bhi _08045C7A + lsls r0, r2, 1 + adds r0, r5 + ldrh r1, [r0] + ldr r7, _08045CCC @ =0x00004e20 + adds r0, r3, r7 + cmp r1, r0 + bne _08045C58 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_08045C7A: + movs r2, 0 + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + ldr r1, _08045CCC @ =0x00004e20 + cmp r0, r1 + bhi _08045CB6 + adds r7, r5, 0 + adds r3, r1, 0 +_08045C8C: + lsls r1, r2, 1 + add r1, r8 + adds r0, r4, r2 + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x9 + bhi _08045CB6 + adds r0, r4, r2 + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r0, r3 + bls _08045C8C +_08045CB6: + lsls r0, r6, 24 + lsrs r0, 24 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08045CC4: .4byte 0x00000471 +_08045CC8: .4byte gUnknown_825EF0C +_08045CCC: .4byte 0x00004e20 + thumb_func_end sub_8045C28 + + thumb_func_start sub_8045CD0 +sub_8045CD0: @ 8045CD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r7, r0, 0 + mov r10, r1 + mov r9, r2 + movs r0, 0 + str r0, [sp] + movs r6, 0 + ldr r5, _08045DD4 @ =gUnknown_2024580 + movs r2, 0 + ldr r4, _08045DD8 @ =gUnknown_202455C + ldr r3, _08045DDC @ =gUnknown_2024564 +_08045CF0: + lsls r1, r6, 1 + adds r0, r1, r5 + strh r2, [r0] + adds r0, r1, r4 + strh r2, [r0] + adds r1, r3 + strh r2, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bls _08045CF0 + movs r6, 0 + ldr r2, _08045DE0 @ =gUnknown_202456C + movs r1, 0 +_08045D0E: + lsls r0, r6, 1 + adds r0, r2 + strh r1, [r0] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x9 + bls _08045D0E + movs r6, 0 + ldr r2, _08045DE4 @ =gUnknown_20244F8 + movs r1, 0 +_08045D24: + lsls r0, r6, 1 + adds r0, r2 + strh r1, [r0] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x31 + bls _08045D24 + adds r0, r7, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08045DE4 @ =gUnknown_20244F8 + bl sub_8043DD4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r6, 0 + ldr r1, _08045DD8 @ =gUnknown_202455C + mov r8, r1 +_08045D52: + adds r5, r6, 0 + adds r5, 0xD + mov r0, r10 + adds r1, r5, 0 + bl sub_803FD44 + lsls r4, r6, 1 + mov r2, r8 + adds r1, r4, r2 + strh r0, [r1] + mov r0, r9 + adds r1, r5, 0 + bl sub_803FD44 + ldr r1, _08045DD4 @ =gUnknown_2024580 + adds r4, r1 + strh r0, [r4] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bls _08045D52 + ldr r1, _08045DE0 @ =gUnknown_202456C + adds r0, r7, 0 + bl sub_8045C28 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r6, 0 +_08045D8E: + ldr r0, _08045DD8 @ =gUnknown_202455C + lsls r1, r6, 1 + adds r2, r1, r0 + ldrh r1, [r2] + mov r9, r0 + cmp r1, 0 + beq _08045E04 + movs r5, 0 + cmp r5, r8 + bcs _08045DF6 + adds r4, r2, 0 + ldr r2, _08045DE8 @ =0x0000ffff +_08045DA6: + ldr r0, _08045DE0 @ =gUnknown_202456C + lsls r1, r5, 1 + adds r1, r0 + ldrh r0, [r4] + ldrh r1, [r1] + cmp r0, r1 + bne _08045DEC + adds r1, r0, 0 + adds r0, r7, 0 + str r2, [sp, 0x8] + bl sub_803E89C + lsls r0, 16 + lsrs r0, 16 + ldr r2, [sp, 0x8] + cmp r0, r2 + bne _08045DF6 + ldrh r1, [r4] + adds r0, r7, 0 + bl sub_803EB94 + b _08045DF6 + .align 2, 0 +_08045DD4: .4byte gUnknown_2024580 +_08045DD8: .4byte gUnknown_202455C +_08045DDC: .4byte gUnknown_2024564 +_08045DE0: .4byte gUnknown_202456C +_08045DE4: .4byte gUnknown_20244F8 +_08045DE8: .4byte 0x0000ffff +_08045DEC: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r8 + bcc _08045DA6 +_08045DF6: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r3, _08045F20 @ =gUnknown_202455C + mov r9, r3 + cmp r6, 0x3 + bls _08045D8E +_08045E04: + movs r6, 0 +_08045E06: + lsls r0, r6, 1 + mov r2, r9 + adds r1, r0, r2 + ldrh r1, [r1] + adds r2, r0, 0 + adds r6, 0x1 + mov r8, r6 + cmp r1, 0 + beq _08045E68 + movs r5, 0 + ldr r0, _08045F20 @ =gUnknown_202455C + adds r4, r2, r0 + ldr r6, _08045F24 @ =0x0000ffff + mov r9, r0 +_08045E22: + ldr r3, _08045F28 @ =0x00000121 + adds r0, r5, r3 + lsls r0, 16 + lsrs r0, 16 + bl sub_8125A78 + ldrh r1, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bne _08045E5E + lsls r1, r5, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_8043C2C + cmp r0, 0 + beq _08045E5E + ldrh r1, [r4] + adds r0, r7, 0 + bl sub_803E89C + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bne _08045E5E + ldrh r1, [r4] + adds r0, r7, 0 + bl sub_803EB94 +_08045E5E: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x39 + bls _08045E22 +_08045E68: + mov r1, r8 + lsls r0, r1, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bls _08045E06 + movs r6, 0 + mov r2, r9 + ldrh r0, [r2] + ldr r3, _08045F2C @ =gUnknown_2024564 + mov r10, r3 + cmp r0, 0 + beq _08045ED2 + mov r4, r9 + ldr r0, _08045F30 @ =gUnknown_2024580 + mov r9, r0 + mov r12, r10 +_08045E88: + movs r5, 0 + lsls r2, r6, 1 + adds r6, 0x1 + mov r8, r6 + adds r3, r2, r4 +_08045E92: + lsls r0, r5, 1 + add r0, r9 + ldrh r2, [r3] + adds r1, r2, 0 + ldrh r0, [r0] + cmp r1, r0 + bne _08045EB4 + cmp r1, 0 + beq _08045EB4 + ldr r1, [sp] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + lsls r1, 1 + add r1, r12 + strh r2, [r1] +_08045EB4: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _08045E92 + mov r1, r8 + lsls r0, r1, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bhi _08045ED2 + lsls r0, r6, 1 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0 + bne _08045E88 +_08045ED2: + movs r6, 0 + mov r2, r10 + ldrh r0, [r2] + cmp r0, 0 + beq _08045F5C +_08045EDC: + movs r5, 0 + adds r3, r6, 0x1 + mov r8, r3 + ldr r0, [sp, 0x4] + cmp r5, r0 + bcs _08045F44 + ldr r2, _08045F24 @ =0x0000ffff +_08045EEA: + ldr r1, _08045F34 @ =gUnknown_20244F8 + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + cmp r1, 0 + beq _08045F38 + lsls r0, r6, 1 + mov r3, r10 + adds r4, r0, r3 + ldrh r0, [r4] + cmp r0, r1 + bne _08045F38 + adds r1, r0, 0 + adds r0, r7, 0 + str r2, [sp, 0x8] + bl sub_803E89C + lsls r0, 16 + lsrs r0, 16 + ldr r2, [sp, 0x8] + cmp r0, r2 + bne _08045F44 + ldrh r1, [r4] + adds r0, r7, 0 + bl sub_803EB94 + b _08045F44 + .align 2, 0 +_08045F20: .4byte gUnknown_202455C +_08045F24: .4byte 0x0000ffff +_08045F28: .4byte 0x00000121 +_08045F2C: .4byte gUnknown_2024564 +_08045F30: .4byte gUnknown_2024580 +_08045F34: .4byte gUnknown_20244F8 +_08045F38: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [sp, 0x4] + cmp r5, r0 + bcc _08045EEA +_08045F44: + mov r1, r8 + lsls r0, r1, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bhi _08045F5C + ldr r0, _08045F6C @ =gUnknown_2024564 + lsls r1, r6, 1 + adds r1, r0 + ldrh r1, [r1] + mov r10, r0 + cmp r1, 0 + bne _08045EDC +_08045F5C: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08045F6C: .4byte gUnknown_2024564 + thumb_func_end sub_8045CD0 + + thumb_func_start sub_8045F70 +sub_8045F70: @ 8045F70 + adds r3, r0, 0 + movs r1, 0x8C + lsls r1, 1 + adds r0, r3, r1 + movs r2, 0 + movs r1, 0 + strh r1, [r0] + movs r1, 0x8D + lsls r1, 1 + adds r0, r3, r1 + strb r2, [r0] + bx lr + thumb_func_end sub_8045F70 + + thumb_func_start sub_8045F88 +sub_8045F88: @ 8045F88 + push {lr} + ldr r0, _08045F9C @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_8045F70 + pop {r0} + bx r0 + .align 2, 0 +_08045F9C: .4byte gUnknown_3005008 + thumb_func_end sub_8045F88 + + thumb_func_start sub_8045FA0 +sub_8045FA0: @ 8045FA0 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrh r1, [r4] + movs r7, 0xB4 + lsls r7, 1 + cmp r1, r7 + beq _08045FB8 + movs r0, 0xAF + lsls r0, 1 + cmp r1, r0 + bne _08045FFA +_08045FB8: + adds r0, r5, 0 + movs r1, 0xC + bl sub_803FD44 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r5, 0 + adds r0, 0x8C + movs r1, 0xC + bl sub_803FD44 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r4] + cmp r0, r7 + bne _08045FE4 + cmp r6, 0xDD + beq _08045FE4 + cmp r2, 0xDD + beq _08045FE4 + movs r0, 0xCA + strh r0, [r4] +_08045FE4: + ldrh r1, [r4] + movs r0, 0xAF + lsls r0, 1 + cmp r1, r0 + bne _08045FFA + cmp r6, 0xDC + beq _08045FFA + cmp r2, 0xDC + beq _08045FFA + movs r0, 0xB7 + strh r0, [r4] +_08045FFA: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8045FA0 + + thumb_func_start sub_8046000 +sub_8046000: @ 8046000 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r6, r1, 0 + movs r4, 0 + movs r7, 0x1 +_08046010: + movs r0, 0x8C + muls r0, r4 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FD44 + lsls r1, r4, 1 + add r1, sp + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x84 + bne _08046038 + adds r0, r4, 0 + eors r0, r7 + strb r0, [r6] + strb r4, [r6, 0x1] + b _0804604E +_08046038: + adds r0, r5, 0 + bl sub_803F730 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFE + bne _0804604E + strb r4, [r6] + adds r0, r4, 0 + eors r0, r7 + strb r0, [r6, 0x1] +_0804604E: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _08046010 + ldrb r0, [r6] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + bl sub_8045970 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bne _08046080 + movs r0, 0x8C + lsls r0, 1 + add r0, r8 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _08046080 + movs r4, 0x20 +_08046080: + ldr r0, _080460D0 @ =0x00000183 + cmp r4, r0 + bne _0804609A + subs r0, 0x6B + add r0, r8 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _0804609A + movs r4, 0xC1 + lsls r4, 1 +_0804609A: + ldrb r0, [r6, 0x1] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + cmp r0, 0x84 + bne _080460C2 + ldrb r1, [r6] + movs r0, 0x8C + muls r0, r1 + add r0, r8 + bl sub_803F730 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFE + beq _080460C2 + ldrb r1, [r6, 0x1] + ldrb r0, [r6] + strb r0, [r6, 0x1] + strb r1, [r6] +_080460C2: + adds r0, r4, 0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080460D0: .4byte 0x00000183 + thumb_func_end sub_8046000 + + thumb_func_start sub_80460D4 +sub_80460D4: @ 80460D4 + push {r4-r6,lr} + sub sp, 0x6C + adds r5, r0, 0 + add r6, sp, 0x64 + adds r1, r6, 0 + bl sub_8046000 + add r4, sp, 0x68 + strh r0, [r4] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8045FA0 + ldrh r1, [r4] + mov r0, sp + adds r2, r5, 0 + bl sub_8046208 + mov r0, sp + adds r1, r5, 0 + bl sub_8045AC0 + ldrb r0, [r6, 0x1] + movs r2, 0x8C + adds r1, r0, 0 + muls r1, r2 + adds r1, r5, r1 + ldrb r0, [r6] + muls r2, r0 + adds r2, r5, r2 + mov r0, sp + bl sub_8045CD0 + mov r2, sp + adds r2, 0x6A + movs r0, 0x1 + strb r0, [r2] + mov r0, sp + movs r1, 0x2D + bl sub_804037C + ldr r0, _0804614C @ =gUnknown_2024284 + movs r1, 0xFA + lsls r1, 1 + adds r0, r1 + mov r1, sp + movs r2, 0x64 + bl memcpy + bl sub_80937DC + bl sub_8040C3C + adds r0, r5, 0 + bl sub_8045F70 + add sp, 0x6C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804614C: .4byte gUnknown_2024284 + thumb_func_end sub_80460D4 + + thumb_func_start sub_8046150 +sub_8046150: @ 8046150 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + adds r7, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + str r4, [sp, 0xC] + adds r1, r5, 0 + movs r2, 0x5 + movs r3, 0x20 + bl sub_803DA54 + movs r0, 0x12 + add r0, sp + mov r8, r0 + strb r4, [r0] + movs r1, 0x4 + add r0, sp, 0x10 + strh r1, [r0] + mov r4, sp + adds r4, 0x13 + movs r0, 0x1 + mov r9, r0 + mov r0, r9 + strb r0, [r4] + adds r0, r7, 0 + movs r1, 0x26 + add r2, sp, 0x10 + bl sub_804037C + ldr r2, _08046200 @ =gUnknown_825F83E + adds r0, r7, 0 + movs r1, 0x2 + bl sub_804037C + lsls r2, r5, 3 + subs r2, r5 + lsls r2, 2 + ldr r0, _08046204 @ =gUnknown_8254795 + adds r2, r0 + adds r0, r7, 0 + movs r1, 0x20 + bl sub_804037C + adds r0, r7, 0 + movs r1, 0x24 + mov r2, r8 + bl sub_804037C + adds r0, r7, 0 + movs r1, 0x3 + adds r2, r4, 0 + bl sub_804037C + cmp r6, 0 + beq _080461E2 + add r2, sp, 0x14 + movs r0, 0xFD + strb r0, [r2] + adds r0, r7, 0 + movs r1, 0x23 + bl sub_804037C +_080461E2: + mov r2, sp + adds r2, 0x15 + mov r0, r9 + strb r0, [r2] + adds r0, r7, 0 + movs r1, 0x2D + bl sub_804037C + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08046200: .4byte gUnknown_825F83E +_08046204: .4byte gUnknown_8254795 + thumb_func_end sub_8046150 + + thumb_func_start sub_8046208 +sub_8046208: @ 8046208 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x14 + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + lsls r5, 16 + lsrs r5, 16 + bl sub_8044EC8 + movs r1, 0x8C + lsls r1, 1 + adds r4, r1 + ldrh r1, [r4] + lsls r0, 16 + orrs r1, r0 + movs r0, 0x1 + mov r8, r0 + str r0, [sp] + str r1, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + str r4, [sp, 0xC] + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x5 + movs r3, 0x20 + bl sub_803DA54 + movs r1, 0x12 + add r1, sp + mov r9, r1 + strb r4, [r1] + movs r1, 0x4 + add r0, sp, 0x10 + strh r1, [r0] + mov r4, sp + adds r4, 0x13 + mov r0, r8 + strb r0, [r4] + adds r0, r6, 0 + movs r1, 0x26 + add r2, sp, 0x10 + bl sub_804037C + ldr r2, _080462A4 @ =gUnknown_825F83E + adds r0, r6, 0 + movs r1, 0x2 + bl sub_804037C + lsls r2, r5, 3 + subs r2, r5 + lsls r2, 2 + ldr r0, _080462A8 @ =gUnknown_8254795 + adds r2, r0 + adds r0, r6, 0 + movs r1, 0x20 + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x24 + mov r2, r9 + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x3 + adds r2, r4, 0 + bl sub_804037C + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080462A4: .4byte gUnknown_825F83E +_080462A8: .4byte gUnknown_8254795 + thumb_func_end sub_8046208 + + thumb_func_start sub_80462AC +sub_80462AC: @ 80462AC + push {lr} + ldr r0, _080462C0 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_80460D4 + pop {r0} + bx r0 + .align 2, 0 +_080462C0: .4byte gUnknown_3005008 + thumb_func_end sub_80462AC + + thumb_func_start sub_80462C4 +sub_80462C4: @ 80462C4 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + movs r7, 0 + movs r5, 0 +_080462CE: + movs r0, 0x8C + adds r4, r5, 0 + muls r4, r0 + adds r0, r6, r4 + movs r1, 0x5 + bl sub_803FD44 + cmp r0, 0 + beq _080462EE + adds r1, r6, 0 + adds r1, 0x88 + adds r1, r4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + adds r7, 0x1 +_080462EE: + adds r5, 0x1 + cmp r5, 0x1 + bls _080462CE + movs r1, 0x8C + lsls r1, 1 + adds r0, r6, r1 + ldrh r0, [r0] + cmp r0, 0 + bne _08046334 + cmp r7, 0x2 + bne _08046334 + subs r1, 0x4 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08046334 + adds r0, r6, 0 + bl sub_804654C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + muls r0, r1 + ldr r1, _0804634C @ =0x0000ffff + bl __udivsi3 + cmp r4, r0 + bls _08046334 + bl sub_8045A48 +_08046334: + movs r0, 0x8D + lsls r0, 1 + adds r1, r6, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080463A8 + movs r5, 0 + b _080463A0 + .align 2, 0 +_0804634C: .4byte 0x0000ffff +_08046350: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08046388 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + beq _0804639E + adds r0, r4, 0 + movs r1, 0x4 + bl sub_803FBE8 + cmp r0, 0 + bne _0804639E + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + str r0, [sp] + cmp r0, 0 + bne _08046390 + ldr r0, _0804638C @ =gUnknown_20370C0 + strh r5, [r0] + movs r0, 0x1 + b _080463AA + .align 2, 0 +_08046388: .4byte gUnknown_2024284 +_0804638C: .4byte gUnknown_20370C0 +_08046390: + subs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x20 + mov r2, sp + bl sub_804037C +_0804639E: + adds r5, 0x1 +_080463A0: + ldr r0, _080463B4 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r5, r0 + bcc _08046350 +_080463A8: + movs r0, 0 +_080463AA: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080463B4: .4byte gUnknown_2024029 + thumb_func_end sub_80462C4 + + thumb_func_start sub_80463B8 +sub_80463B8: @ 80463B8 + push {r4,lr} + ldr r4, _080463F0 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r1, _080463F4 @ =0x00003c98 + adds r0, r1 + movs r1, 0x5 + bl sub_803FD44 + cmp r0, 0 + beq _080463D8 + ldr r1, [r4] + ldr r0, _080463F8 @ =0x00003d20 + adds r1, r0 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080463D8: + ldr r0, [r4] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_80462C4 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080463F0: .4byte gUnknown_3005008 +_080463F4: .4byte 0x00003c98 +_080463F8: .4byte 0x00003d20 + thumb_func_end sub_80463B8 + + thumb_func_start sub_80463FC +sub_80463FC: @ 80463FC + movs r1, 0x8C + lsls r1, 1 + adds r0, r1 + ldrh r1, [r0] + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + bx lr + thumb_func_end sub_80463FC + + thumb_func_start sub_804640C +sub_804640C: @ 804640C + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + beq _08046436 + ldr r1, _08046454 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_80453E0 + adds r0, r4, 0 + movs r1, 0x7 + mov r2, sp + bl sub_803FD44 + ldr r0, _08046458 @ =gUnknown_2021D04 + mov r1, sp + bl sub_8008D84 +_08046436: + adds r4, 0x8C + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + beq _0804644C + ldr r1, _0804645C @ =gUnknown_2021CF0 + adds r0, r4, 0 + bl sub_80453E0 +_0804644C: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08046454: .4byte gUnknown_2021CD0 +_08046458: .4byte gUnknown_2021D04 +_0804645C: .4byte gUnknown_2021CF0 + thumb_func_end sub_804640C + + thumb_func_start sub_8046460 +sub_8046460: @ 8046460 + push {r4,r5,lr} + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r5, 0x64 + muls r0, r5 + ldr r4, _08046494 @ =gUnknown_2024284 + adds r0, r4 + ldr r1, _08046498 @ =gUnknown_2021CD0 + bl sub_80453E0 + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + muls r0, r5 + adds r0, r4 + movs r1, 0xB + bl sub_803FD44 + lsls r0, 16 + lsrs r0, 16 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08046494: .4byte gUnknown_2024284 +_08046498: .4byte gUnknown_2021CD0 + thumb_func_end sub_8046460 + + thumb_func_start sub_804649C +sub_804649C: @ 804649C + push {lr} + ldr r0, _080464B0 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_804640C + pop {r0} + bx r0 + .align 2, 0 +_080464B0: .4byte gUnknown_3005008 + thumb_func_end sub_804649C + + thumb_func_start sub_80464B4 +sub_80464B4: @ 80464B4 + push {r4,lr} + ldr r4, _080464D0 @ =gUnknown_3005008 + ldr r0, [r4] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_80463FC + lsls r0, 24 + cmp r0, 0 + beq _080464D4 + movs r0, 0x1 + b _080464F2 + .align 2, 0 +_080464D0: .4byte gUnknown_3005008 +_080464D4: + ldr r0, [r4] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_8045400 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080464EC + movs r0, 0 + b _080464F2 +_080464EC: + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 +_080464F2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80464B4 + + thumb_func_start sub_80464F8 +sub_80464F8: @ 80464F8 + push {lr} + ldr r0, _08046518 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_8045400 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08046512 + movs r0, 0 +_08046512: + pop {r1} + bx r1 + .align 2, 0 +_08046518: .4byte gUnknown_3005008 + thumb_func_end sub_80464F8 + + thumb_func_start sub_804651C +sub_804651C: @ 804651C + push {r4-r6,lr} + adds r5, r1, 0 + movs r4, 0 + adds r1, r0, 0 +_08046524: + movs r3, 0 + ldrh r0, [r1] + adds r2, r5, 0 +_0804652A: + ldrh r6, [r2] + cmp r0, r6 + bne _08046534 + movs r0, 0x1 + b _08046546 +_08046534: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x1 + ble _0804652A + adds r1, 0x2 + adds r4, 0x1 + cmp r4, 0x1 + ble _08046524 + movs r0, 0 +_08046546: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_804651C + + thumb_func_start sub_804654C +sub_804654C: @ 804654C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + str r0, [sp, 0x1C] + movs r7, 0 + mov r0, sp + adds r0, 0x8 + str r0, [sp, 0x20] + add r1, sp, 0xC + mov r9, r1 + mov r2, sp + adds r2, 0x14 + str r2, [sp, 0x24] + subs r0, 0x6 + ldr r1, _08046600 @ =gUnknown_8254784 + mov r10, r1 + ldr r5, [sp, 0x20] + mov r8, r0 + mov r6, sp + str r2, [sp, 0x28] + mov r2, r9 + str r2, [sp, 0x2C] +_0804657E: + movs r0, 0x8C + adds r4, r7, 0 + muls r4, r0 + ldr r0, [sp, 0x1C] + adds r4, r0, r4 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FD44 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FD44 + ldr r1, [sp, 0x2C] + stm r1!, {r0} + str r1, [sp, 0x2C] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FD44 + adds r1, r0, 0 + ldrh r0, [r5] + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [sp, 0x28] + stm r2!, {r0} + str r2, [sp, 0x28] + ldrh r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r0, [r0, 0x14] + strh r0, [r6] + ldrh r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r0, [r0, 0x15] + mov r1, r8 + strh r0, [r1] + adds r5, 0x2 + movs r2, 0x4 + add r8, r2 + adds r6, 0x4 + adds r7, 0x1 + cmp r7, 0x1 + bls _0804657E + mov r0, sp + ldrh r1, [r0] + cmp r1, 0xF + beq _080465FC + ldrh r0, [r0, 0x4] + cmp r0, 0xF + beq _080465FC + cmp r1, 0xD + bne _08046604 + cmp r0, 0xD + bne _08046608 +_080465FC: + movs r0, 0 + b _0804665C + .align 2, 0 +_08046600: .4byte gUnknown_8254784 +_08046604: + cmp r0, 0xD + bne _08046614 +_08046608: + ldr r1, [sp, 0xC] + mov r2, r9 + ldr r0, [r2, 0x4] + cmp r1, r0 + beq _08046656 + b _0804665A +_08046614: + ldr r0, [sp, 0x14] + ldr r2, [sp, 0x24] + ldr r1, [r2, 0x4] + cmp r0, r1 + beq _080465FC + cmp r0, 0xFF + beq _080465FC + cmp r1, 0xFF + beq _080465FC + add r1, sp, 0x4 + mov r0, sp + bl sub_804651C + lsls r0, 24 + cmp r0, 0 + beq _080465FC + ldr r0, [sp, 0x20] + ldrh r1, [r0, 0x2] + ldrh r0, [r0] + cmp r0, r1 + bne _0804664C + ldr r1, [sp, 0xC] + mov r2, r9 + ldr r0, [r2, 0x4] + cmp r1, r0 + beq _0804665A + movs r0, 0x46 + b _0804665C +_0804664C: + ldr r1, [sp, 0xC] + mov r2, r9 + ldr r0, [r2, 0x4] + cmp r1, r0 + bne _0804665A +_08046656: + movs r0, 0x14 + b _0804665C +_0804665A: + movs r0, 0x32 +_0804665C: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804654C + + thumb_func_start sub_804666C +sub_804666C: @ 804666C + push {lr} + ldr r0, _08046684 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + bl sub_804654C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08046684: .4byte gUnknown_3005008 + thumb_func_end sub_804666C + + thumb_func_start sub_8046688 +sub_8046688: @ 8046688 + push {lr} + bl sub_804666C + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + movs r1, 0 + cmp r0, 0 + bne _0804669C + movs r1, 0x3 +_0804669C: + cmp r0, 0x14 + bne _080466A2 + movs r1, 0x2 +_080466A2: + cmp r0, 0x32 + bne _080466A8 + movs r1, 0x1 +_080466A8: + cmp r2, 0x46 + bne _080466AE + movs r1, 0 +_080466AE: + ldr r0, _080466C0 @ =gUnknown_2021D18 + ldr r2, _080466C4 @ =gUnknown_825F82C + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + pop {r0} + bx r0 + .align 2, 0 +_080466C0: .4byte gUnknown_2021D18 +_080466C4: .4byte gUnknown_825F82C + thumb_func_end sub_8046688 + + thumb_func_start sub_80466C8 +sub_80466C8: @ 80466C8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + mov r2, sp + mov r1, sp + movs r0, 0 + strb r0, [r1, 0x1] + strb r0, [r2] + movs r3, 0 + ldrb r0, [r4] + cmp r0, 0xFF + beq _0804670C +_080466E4: + adds r1, r4, r3 + ldrb r0, [r1] + cmp r0, 0xB5 + bne _080466F2 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] +_080466F2: + ldrb r0, [r1] + cmp r0, 0xB6 + bne _080466FE + ldrb r0, [r2, 0x1] + adds r0, 0x1 + strb r0, [r2, 0x1] +_080466FE: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r4, r3 + ldrb r0, [r0] + cmp r0, 0xFF + bne _080466E4 +_0804670C: + cmp r5, 0 + bne _08046720 + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + beq _08046720 + mov r0, sp + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _08046734 +_08046720: + cmp r5, 0xFE + bne _08046738 + mov r0, sp + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _08046738 + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08046738 +_08046734: + movs r0, 0x1 + b _0804673A +_08046738: + movs r0, 0 +_0804673A: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80466C8 + + thumb_func_start sub_8046744 +sub_8046744: @ 8046744 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + bne _08046764 + movs r1, 0 + bl sub_80466C8 + lsls r0, 24 + cmp r0, 0 + bne _08046780 + ldr r1, _08046760 @ =gUnknown_8261EC1 + b _08046782 + .align 2, 0 +_08046760: .4byte gUnknown_8261EC1 +_08046764: + cmp r1, 0xFE + bne _08046780 + adds r0, r4, 0 + movs r1, 0xFE + bl sub_80466C8 + lsls r0, 24 + cmp r0, 0 + bne _08046780 + ldr r1, _0804677C @ =gUnknown_8261EC3 + b _08046782 + .align 2, 0 +_0804677C: .4byte gUnknown_8261EC3 +_08046780: + ldr r1, _08046790 @ =gUnknown_8261EC5 +_08046782: + adds r0, r4, 0 + bl sub_8008DA4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08046790: .4byte gUnknown_8261EC5 + thumb_func_end sub_8046744 + + thumb_func_start sub_8046794 +sub_8046794: @ 8046794 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + bl sub_803F730 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8046744 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8046794 + + thumb_func_start sub_80467B0 +sub_80467B0: @ 80467B0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x28 + mov r8, r0 + adds r7, r1, 0 + movs r0, 0xFF + strb r0, [r7] + movs r6, 0 + add r0, sp, 0x14 + mov r9, r0 +_080467C8: + movs r0, 0x8C + adds r4, r6, 0 + muls r4, r0 + add r4, r8 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 2 + mov r1, sp + adds r5, r1, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80453E0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8046794 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1 + bls _080467C8 + adds r0, r7, 0 + mov r1, sp + bl sub_8008D84 + ldr r4, _0804682C @ =gUnknown_825F83C + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8008DA4 + adds r0, r7, 0 + mov r1, r9 + bl sub_8008DA4 + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8008DA4 + ldr r1, _08046830 @ =gUnknown_84161C8 + adds r0, r7, 0 + bl sub_8008DA4 + add sp, 0x28 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804682C: .4byte gUnknown_825F83C +_08046830: .4byte gUnknown_84161C8 + thumb_func_end sub_80467B0 + + thumb_func_start sub_8046834 +sub_8046834: @ 8046834 + push {r4-r6,lr} + sub sp, 0x14 + adds r6, r0, 0 + adds r4, r1, 0 + movs r0, 0xFF + strb r0, [r4] + movs r5, 0 +_08046842: + adds r0, r4, 0 + ldr r1, _08046890 @ =gUnknown_8416223 + bl sub_8008DA4 + movs r0, 0x8C + adds r2, r5, 0 + muls r2, r0 + adds r0, r6, r2 + adds r1, r6, 0 + adds r1, 0x88 + adds r1, r2 + ldr r1, [r1] + bl sub_804574C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, sp + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + adds r0, r4, 0 + mov r1, sp + bl sub_8008DA4 + adds r0, r4, 0 + ldr r1, _08046894 @ =gUnknown_825F83C + bl sub_8008DA4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _08046842 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08046890: .4byte gUnknown_8416223 +_08046894: .4byte gUnknown_825F83C + thumb_func_end sub_8046834 + + thumb_func_start sub_8046898 +sub_8046898: @ 8046898 + push {r4,r5,lr} + sub sp, 0x10 + str r1, [sp] + mov r1, sp + strb r0, [r1, 0x4] + movs r0, 0x3 + strb r0, [r1, 0x5] + mov r0, sp + strb r2, [r0, 0x6] + strb r3, [r0, 0x7] + strb r2, [r0, 0x8] + strb r3, [r0, 0x9] + mov r3, sp + ldrb r1, [r3, 0xC] + movs r2, 0x10 + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + strb r0, [r3, 0xC] + ldr r3, _08046908 @ =gUnknown_3003E50 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + mov r0, sp + movs r5, 0x1 + movs r1, 0x1 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r3, sp + ldrb r1, [r3, 0xC] + movs r4, 0xF + adds r0, r4, 0 + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r3, 0xC] + mov r1, sp + ldrb r0, [r1, 0xD] + ands r2, r0 + orrs r2, r5 + strb r2, [r1, 0xD] + ands r2, r4 + movs r0, 0x30 + orrs r2, r0 + strb r2, [r1, 0xD] + mov r0, sp + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08046908: .4byte gUnknown_3003E50 + thumb_func_end sub_8046898 + + thumb_func_start sub_804690C +sub_804690C: @ 804690C + push {r4-r6,lr} + sub sp, 0x14 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r3, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x8C + muls r0, r2 + adds r5, r0 + adds r0, r5, 0 + mov r1, sp + bl sub_80453E0 + mov r0, sp + adds r1, r5, 0 + bl sub_8046794 + adds r0, r4, 0 + mov r1, sp + movs r2, 0x8 + adds r3, r6, 0 + bl sub_8046898 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_804690C + + thumb_func_start sub_8046944 +sub_8046944: @ 8046944 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x14 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _080469B0 @ =gUnknown_8416223 + mov r0, sp + bl strcpy + movs r0, 0x8C + adds r1, r6, 0 + muls r1, r0 + adds r0, r4, r1 + adds r4, 0x88 + adds r4, r1 + ldr r1, [r4] + bl sub_804574C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + add r4, sp, 0xC + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + mov r0, sp + adds r1, r4, 0 + bl sub_8008DA4 + movs r0, 0x3 + mov r1, sp + movs r2, 0 + bl sub_8005ED4 + movs r2, 0x84 + subs r2, r0 + adds r0, r5, 0 + mov r1, sp + mov r3, r8 + bl sub_8046898 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080469B0: .4byte gUnknown_8416223 + thumb_func_end sub_8046944 + + thumb_func_start sub_80469B4 +sub_80469B4: @ 80469B4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r1, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + cmp r6, 0x1 + bhi _080469EE + ldr r0, _080469F8 @ =gUnknown_3005008 + mov r8, r0 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 6 + adds r0, r4 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_804690C + mov r1, r8 + ldr r0, [r1] + adds r0, r4 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_8046944 +_080469EE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080469F8: .4byte gUnknown_3005008 + thumb_func_end sub_80469B4 + + thumb_func_start sub_80469FC +sub_80469FC: @ 80469FC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _08046A2C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrb r0, [r4, 0x8] + bl sub_8107078 + adds r1, r0, 0 + ldr r0, _08046A30 @ =gUnknown_30030F0 + ldrh r2, [r0, 0x2E] + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _08046A7C + cmp r1, 0x1 + bls _08046A34 + cmp r1, 0x5 + beq _08046A40 + b _08046A46 + .align 2, 0 +_08046A2C: .4byte gUnknown_3005090 +_08046A30: .4byte gUnknown_30030F0 +_08046A34: + ldr r0, _08046A3C @ =gUnknown_20370D0 + strh r1, [r0] + b _08046A46 + .align 2, 0 +_08046A3C: .4byte gUnknown_20370D0 +_08046A40: + ldr r1, _08046A74 @ =gUnknown_20370D0 + movs r0, 0x2 + strh r0, [r1] +_08046A46: + ldr r0, _08046A78 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldrb r0, [r4, 0x8] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r4, 0xA] + movs r1, 0x1 + bl sub_80F6F9C + ldrb r0, [r4, 0xA] + bl sub_8003E3C + adds r0, r5, 0 + bl sub_8077508 + bl sub_8069B34 + b _08046AAC + .align 2, 0 +_08046A74: .4byte gUnknown_20370D0 +_08046A78: .4byte gUnknown_3005090 +_08046A7C: + movs r1, 0x2 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _08046AAC + ldr r0, _08046AB4 @ =gUnknown_20370D0 + strh r1, [r0] + ldrb r0, [r4, 0x8] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r4, 0xA] + movs r1, 0x1 + bl sub_80F6F9C + ldrb r0, [r4, 0xA] + bl sub_8003E3C + adds r0, r5, 0 + bl sub_8077508 + bl sub_8069B34 +_08046AAC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08046AB4: .4byte gUnknown_20370D0 + thumb_func_end sub_80469FC + + thumb_func_start sub_8046AB8 +sub_8046AB8: @ 8046AB8 + push {r4,r5,lr} + sub sp, 0x18 + ldr r0, _08046B18 @ =gUnknown_825F7F4 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_80F6F1C + mov r1, sp + ldr r0, _08046B1C @ =gUnknown_825F814 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + mov r0, sp + strb r4, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _08046B20 @ =sub_80469FC + movs r1, 0x3 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08046B24 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + strh r4, [r1, 0xA] + add sp, 0x18 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08046B18: .4byte gUnknown_825F7F4 +_08046B1C: .4byte gUnknown_825F814 +_08046B20: .4byte sub_80469FC +_08046B24: .4byte gUnknown_3005090 + thumb_func_end sub_8046AB8 + + thumb_func_start sub_8046B28 +sub_8046B28: @ 8046B28 + push {lr} + bl sub_8128370 + ldr r1, _08046B38 @ =gUnknown_30030F0 + ldr r0, _08046B3C @ =sub_80567DC + str r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_08046B38: .4byte gUnknown_30030F0 +_08046B3C: .4byte sub_80567DC + thumb_func_end sub_8046B28 + + thumb_func_start sub_8046B40 +sub_8046B40: @ 8046B40 + push {lr} + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _08046B64 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08046B68 @ =gUnknown_3005008 + ldr r1, [r1] + ldr r2, _08046B6C @ =0x00003c98 + adds r1, r2 + bl sub_80454CC + pop {r0} + bx r0 + .align 2, 0 +_08046B64: .4byte gUnknown_2024284 +_08046B68: .4byte gUnknown_3005008 +_08046B6C: .4byte 0x00003c98 + thumb_func_end sub_8046B40 + + thumb_func_start sub_8046B70 +sub_8046B70: @ 8046B70 + push {lr} + ldr r0, _08046B88 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08046B8C @ =0x00003c98 + adds r0, r1 + bl sub_80457E8 + ldr r1, _08046B90 @ =gUnknown_20370C2 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08046B88: .4byte gUnknown_3005008 +_08046B8C: .4byte 0x00003c98 +_08046B90: .4byte gUnknown_20370C2 + thumb_func_end sub_8046B70 + + thumb_func_start sub_8046B94 +sub_8046B94: @ 8046B94 + push {lr} + ldr r0, _08046BAC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08046BB0 @ =0x00003c98 + adds r0, r1 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + bne _08046BB4 + movs r0, 0 + b _08046BB6 + .align 2, 0 +_08046BAC: .4byte gUnknown_3005008 +_08046BB0: .4byte 0x00003c98 +_08046BB4: + movs r0, 0x1 +_08046BB6: + pop {r1} + bx r1 + thumb_func_end sub_8046B94 + + thumb_func_start sub_8046BBC +sub_8046BBC: @ 8046BBC + push {lr} + ldr r0, _08046BD4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08046BD8 @ =0x00003c98 + adds r0, r1 + bl sub_80457B4 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08046BD4: .4byte gUnknown_3005008 +_08046BD8: .4byte 0x00003c98 + thumb_func_end sub_8046BBC + + thumb_func_start sub_8046BDC +sub_8046BDC: @ 8046BDC + push {lr} + ldr r0, _08046BF4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08046BF8 @ =0x00003c98 + adds r0, r1 + bl sub_804565C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08046BF4: .4byte gUnknown_3005008 +_08046BF8: .4byte 0x00003c98 + thumb_func_end sub_8046BDC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/decompress.s b/asm/decompress.s new file mode 100644 index 000000000..69de99179 --- /dev/null +++ b/asm/decompress.s @@ -0,0 +1,887 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800EBB4 +sub_800EBB4: @ 800EBB4 + push {lr} + bl LZ77UnCompWram + pop {r0} + bx r0 + thumb_func_end sub_800EBB4 + + thumb_func_start sub_800EBC0 +sub_800EBC0: @ 800EBC0 + push {lr} + bl LZ77UnCompVram + pop {r0} + bx r0 + thumb_func_end sub_800EBC0 + + thumb_func_start sub_800EBCC +sub_800EBCC: @ 800EBCC + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r0, [r4] + ldr r5, _0800EBFC @ =gUnknown_201C000 + adds r1, r5, 0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, 0x6] + lsls r1, 16 + ldrh r0, [r4, 0x4] + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_80086DC + lsls r0, 16 + lsrs r0, 16 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0800EBFC: .4byte gUnknown_201C000 + thumb_func_end sub_800EBCC + + thumb_func_start sub_800EC00 +sub_800EC00: @ 800EC00 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [r4] + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, 0x6] + lsls r1, 16 + ldrh r0, [r4, 0x4] + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_80086DC + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800EC00 + + thumb_func_start sub_800EC28 +sub_800EC28: @ 800EC28 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + ldr r0, [r5] + ldr r4, _0800EC54 @ =gUnknown_201C000 + adds r1, r4, 0 + bl LZ77UnCompWram + str r4, [sp] + ldrh r2, [r5, 0x4] + ldr r1, _0800EC58 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8008928 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800EC54: .4byte gUnknown_201C000 +_0800EC58: .4byte 0xffff0000 + thumb_func_end sub_800EC28 + + thumb_func_start sub_800EC5C +sub_800EC5C: @ 800EC5C + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r0, [r5] + bl LZ77UnCompWram + str r4, [sp] + ldrh r2, [r5, 0x4] + ldr r1, _0800EC88 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8008928 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800EC88: .4byte 0xffff0000 + thumb_func_end sub_800EC5C + + thumb_func_start sub_800EC8C +sub_800EC8C: @ 800EC8C + push {r4,r5,lr} + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r5, r0 + ble _0800ECAC + ldr r0, _0800ECA8 @ =gUnknown_82350AC + ldr r0, [r0] + bl LZ77UnCompWram + b _0800ECB4 + .align 2, 0 +_0800ECA8: .4byte gUnknown_82350AC +_0800ECAC: + ldr r0, [r3] + adds r1, r4, 0 + bl LZ77UnCompWram +_0800ECB4: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800EDAC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800EC8C + + thumb_func_start sub_800ECC4 +sub_800ECC4: @ 800ECC4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r2, 3 + ldr r1, _0800ECEC @ =gUnknown_82350AC + adds r0, r1 + movs r1, 0 + cmp r4, r0 + bne _0800ECDA + movs r1, 0x1 +_0800ECDA: + str r1, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800ECF0 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800ECEC: .4byte gUnknown_82350AC + thumb_func_end sub_800ECC4 + + thumb_func_start sub_800ECF0 +sub_800ECF0: @ 800ECF0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r4, r1, 0 + adds r7, r2, 0 + adds r5, r3, 0 + ldr r0, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r7, 0xC9 + bne _0800ED6C + movs r0, 0xC0 + lsls r0, 18 + ands r0, r5 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r5 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r5 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r5 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _0800ED3E + movs r1, 0xC9 + b _0800ED48 +_0800ED3E: + movs r2, 0xCE + lsls r2, 1 + adds r0, r1, r2 + lsls r0, 16 + lsrs r1, r0, 16 +_0800ED48: + mov r0, r8 + cmp r0, 0 + bne _0800ED5C + ldr r0, _0800ED58 @ =gUnknown_823654C + lsls r1, 3 + adds r1, r0 + ldr r0, [r1] + b _0800ED78 + .align 2, 0 +_0800ED58: .4byte gUnknown_823654C +_0800ED5C: + ldr r0, _0800ED68 @ =gUnknown_82350AC + lsls r1, 3 + adds r1, r0 + ldr r0, [r1] + b _0800ED78 + .align 2, 0 +_0800ED68: .4byte gUnknown_82350AC +_0800ED6C: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + ble _0800ED84 + ldr r0, _0800ED80 @ =gUnknown_82350AC + ldr r0, [r0] +_0800ED78: + adds r1, r4, 0 + bl LZ77UnCompWram + b _0800ED8C + .align 2, 0 +_0800ED80: .4byte gUnknown_82350AC +_0800ED84: + ldr r0, [r6] + adds r1, r4, 0 + bl LZ77UnCompWram +_0800ED8C: + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_800EDAC + lsls r0, r7, 16 + lsrs r0, 16 + adds r1, r5, 0 + adds r2, r4, 0 + mov r3, r8 + bl sub_8043458 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800ECF0 + + thumb_func_start sub_800EDAC +sub_800EDAC: @ 800EDAC + push {lr} + adds r3, r0, 0 + movs r0, 0xCD + lsls r0, 1 + cmp r1, r0 + bne _0800EDC6 + movs r1, 0x80 + lsls r1, 4 + adds r0, r3, r1 + ldr r2, _0800EDCC @ =0x04000200 + adds r1, r3, 0 + bl CpuSet +_0800EDC6: + pop {r0} + bx r0 + .align 2, 0 +_0800EDCC: .4byte 0x04000200 + thumb_func_end sub_800EDAC + + thumb_func_start sub_800EDD0 +sub_800EDD0: @ 800EDD0 + push {lr} + ldr r0, [r0] + bl LZ77UnCompWram + pop {r0} + bx r0 + thumb_func_end sub_800EDD0 + + thumb_func_start sub_800EDDC +sub_800EDDC: @ 800EDDC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + mov r9, r0 + str r1, [sp] + str r2, [sp, 0x4] + adds r5, r3, 0 + movs r0, 0x1 + mov r1, r9 + ands r0, r1 + cmp r0, 0 + bne _0800EDFC + b _0800EF94 +_0800EDFC: + asrs r0, r1, 1 + adds r0, 0x4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + movs r0, 0 + ldr r2, [sp] + cmp r0, r2 + blt _0800EE10 + b _0800F024 +_0800EE10: + movs r4, 0x8 + subs r1, r4, r1 + str r1, [sp, 0x10] +_0800EE16: + movs r7, 0 + adds r0, 0x1 + str r0, [sp, 0x14] + ldr r0, [sp, 0x10] + cmp r7, r0 + bge _0800EE92 + ldr r1, [sp, 0x8] + lsls r1, 8 + str r1, [sp, 0x18] + movs r2, 0 + mov r10, r2 + mov r0, r9 + movs r4, 0x8 + subs r0, r4, r0 + str r0, [sp, 0xC] +_0800EE34: + movs r3, 0 + asrs r0, r7, 1 + adds r1, r7, 0 + movs r2, 0x1 + ands r1, r2 + str r1, [sp, 0x20] + lsls r0, 8 + mov r8, r0 + mov r12, r5 +_0800EE46: + lsls r1, r3, 5 + ldr r4, [sp, 0x18] + adds r0, r5, r4 + adds r0, r1 + mov r1, r8 + adds r2, r0, r1 + mov r1, r12 + add r1, r8 + movs r6, 0xF +_0800EE58: + ldr r4, [sp, 0x20] + cmp r4, 0 + bne _0800EE68 + strb r4, [r1] + add r4, sp, 0x20 + ldrb r4, [r4] + strb r4, [r2, 0x10] + b _0800EE76 +_0800EE68: + mov r0, r10 + strb r0, [r1, 0x10] + movs r4, 0x80 + lsls r4, 1 + adds r4, r2, r4 + str r4, [sp, 0x1C] + strb r0, [r4] +_0800EE76: + adds r2, 0x1 + adds r1, 0x1 + subs r6, 0x1 + cmp r6, 0 + bge _0800EE58 + movs r0, 0x20 + add r12, r0 + adds r3, 0x1 + cmp r3, 0x7 + ble _0800EE46 + adds r7, 0x1 + ldr r1, [sp, 0xC] + cmp r7, r1 + blt _0800EE34 +_0800EE92: + movs r7, 0 + movs r2, 0 +_0800EE96: + movs r6, 0 + adds r4, r7, 0x1 + mov r8, r4 + lsls r4, r7, 5 +_0800EE9E: + adds r0, r6, 0x1 + mov r10, r0 + lsls r1, r6, 8 + adds r0, r1, 0 + adds r0, 0xC0 + adds r0, r5, r0 + adds r0, r4 + adds r1, r5, r1 + adds r1, r4 + movs r3, 0x1F +_0800EEB2: + strb r2, [r1] + strb r2, [r0] + adds r0, 0x1 + adds r1, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _0800EEB2 + mov r6, r10 + cmp r6, 0x7 + ble _0800EE9E + mov r7, r8 + cmp r7, 0x1 + ble _0800EE96 + mov r1, r9 + cmp r1, 0x5 + bne _0800EED8 + movs r2, 0x90 + lsls r2, 1 + adds r5, r2 +_0800EED8: + movs r7, 0 + cmp r7, r9 + bge _0800EF6E +_0800EEDE: + movs r3, 0 + adds r7, 0x1 + mov r8, r7 + cmp r3, r9 + bge _0800EF4E +_0800EEE8: + adds r3, 0x1 + mov r10, r3 + ldr r4, [sp, 0x4] + adds r4, 0x20 + adds r7, r5, 0 + adds r7, 0x20 + movs r0, 0x12 + adds r0, r5 + mov r12, r0 + ldr r2, [sp, 0x4] + adds r3, r5, 0 + movs r6, 0x3 +_0800EF00: + ldrb r0, [r2] + mov r1, r12 + strb r0, [r1] + ldrb r0, [r2, 0x1] + strb r0, [r1, 0x1] + ldrb r0, [r2, 0x2] + strb r0, [r1, 0x1E] + ldrb r0, [r2, 0x3] + strb r0, [r1, 0x1F] + movs r0, 0x81 + lsls r0, 1 + adds r1, r3, r0 + ldrb r0, [r2, 0x10] + strb r0, [r1] + ldr r0, _0800EF58 @ =0x00000103 + adds r1, r3, r0 + ldrb r0, [r2, 0x11] + strb r0, [r1] + movs r0, 0x90 + lsls r0, 1 + adds r1, r3, r0 + ldrb r0, [r2, 0x12] + strb r0, [r1] + ldr r0, _0800EF5C @ =0x00000121 + adds r1, r3, r0 + ldrb r0, [r2, 0x13] + strb r0, [r1] + movs r1, 0x4 + add r12, r1 + adds r2, 0x4 + adds r3, 0x4 + subs r6, 0x1 + cmp r6, 0 + bge _0800EF00 + str r4, [sp, 0x4] + adds r5, r7, 0 + mov r3, r10 + cmp r3, r9 + blt _0800EEE8 +_0800EF4E: + mov r2, r9 + cmp r2, 0x7 + bne _0800EF60 + adds r5, 0x20 + b _0800EF68 + .align 2, 0 +_0800EF58: .4byte 0x00000103 +_0800EF5C: .4byte 0x00000121 +_0800EF60: + mov r4, r9 + cmp r4, 0x5 + bne _0800EF68 + adds r5, 0x60 +_0800EF68: + mov r7, r8 + cmp r7, r9 + blt _0800EEDE +_0800EF6E: + mov r0, r9 + cmp r0, 0x7 + bne _0800EF7C + movs r1, 0x80 + lsls r1, 1 + adds r5, r1 + b _0800EF88 +_0800EF7C: + mov r2, r9 + cmp r2, 0x5 + bne _0800EF88 + movs r4, 0xF0 + lsls r4, 1 + adds r5, r4 +_0800EF88: + ldr r0, [sp, 0x14] + ldr r1, [sp] + cmp r0, r1 + bge _0800EF92 + b _0800EE16 +_0800EF92: + b _0800F024 +_0800EF94: + movs r6, 0 + ldr r2, [sp] + cmp r6, r2 + bge _0800F024 +_0800EF9C: + adds r6, 0x1 + mov r10, r6 + mov r4, r9 + cmp r4, 0x6 + bne _0800EFB4 + movs r0, 0 + movs r3, 0xFF +_0800EFAA: + strb r0, [r5] + adds r5, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _0800EFAA +_0800EFB4: + movs r7, 0 + cmp r7, r9 + bge _0800F008 +_0800EFBA: + adds r7, 0x1 + mov r8, r7 + mov r1, r9 + lsls r0, r1, 5 + cmp r1, 0x6 + bne _0800EFD4 + movs r1, 0 + movs r3, 0x1F +_0800EFCA: + strb r1, [r5] + adds r5, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _0800EFCA +_0800EFD4: + adds r1, r0, 0 + cmp r1, 0 + ble _0800EFEE + adds r3, r1, 0 +_0800EFDC: + ldr r2, [sp, 0x4] + ldrb r0, [r2] + strb r0, [r5] + adds r2, 0x1 + str r2, [sp, 0x4] + adds r5, 0x1 + subs r3, 0x1 + cmp r3, 0 + bne _0800EFDC +_0800EFEE: + mov r4, r9 + cmp r4, 0x6 + bne _0800F002 + movs r0, 0 + movs r3, 0x1F +_0800EFF8: + strb r0, [r5] + adds r5, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _0800EFF8 +_0800F002: + mov r7, r8 + cmp r7, r9 + blt _0800EFBA +_0800F008: + mov r0, r9 + cmp r0, 0x6 + bne _0800F01C + movs r0, 0 + movs r3, 0xFF +_0800F012: + strb r0, [r5] + adds r5, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _0800F012 +_0800F01C: + mov r6, r10 + ldr r1, [sp] + cmp r6, r1 + blt _0800EF9C +_0800F024: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800EDDC + + thumb_func_start sub_800F034 +sub_800F034: @ 800F034 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r0, [r4] + ldr r0, [r0] + lsrs r0, 8 + bl sub_8002BB0 + adds r5, r0, 0 + cmp r5, 0 + beq _0800F06E + ldr r0, [r4] + adds r1, r5, 0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, 0x6] + lsls r1, 16 + ldrh r0, [r4, 0x4] + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_80086DC + adds r0, r5, 0 + bl sub_8002BC4 + movs r0, 0 + b _0800F070 +_0800F06E: + movs r0, 0x1 +_0800F070: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800F034 + + thumb_func_start sub_800F078 +sub_800F078: @ 800F078 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r0, [r4] + ldr r0, [r0] + lsrs r0, 8 + bl sub_8002BB0 + adds r5, r0, 0 + cmp r5, 0 + beq _0800F0B8 + ldr r0, [r4] + adds r1, r5, 0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r2, [r4, 0x4] + ldr r1, _0800F0B4 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8008928 + adds r0, r5, 0 + bl sub_8002BC4 + movs r0, 0 + b _0800F0BA + .align 2, 0 +_0800F0B4: .4byte 0xffff0000 +_0800F0B8: + movs r0, 0x1 +_0800F0BA: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800F078 + + thumb_func_start sub_800F0C4 +sub_800F0C4: @ 800F0C4 + sub sp, 0x4 + mov r3, sp + ldrb r2, [r0, 0x1] + mov r1, sp + strb r2, [r1] + ldrb r1, [r0, 0x2] + strb r1, [r3, 0x1] + ldrb r0, [r0, 0x3] + strb r0, [r3, 0x2] + movs r0, 0 + strb r0, [r3, 0x3] + ldr r0, [sp] + add sp, 0x4 + bx lr + thumb_func_end sub_800F0C4 + + thumb_func_start sub_800F0E0 +sub_800F0E0: @ 800F0E0 + push {lr} + adds r3, r0, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r2, r0 + ble _0800F0FC + ldr r0, _0800F0F8 @ =gUnknown_82350AC + ldr r0, [r0] + bl LZ77UnCompWram + b _0800F102 + .align 2, 0 +_0800F0F8: .4byte gUnknown_82350AC +_0800F0FC: + ldr r0, [r3] + bl LZ77UnCompWram +_0800F102: + pop {r0} + bx r0 + thumb_func_end sub_800F0E0 + + thumb_func_start sub_800F108 +sub_800F108: @ 800F108 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r2, 3 + ldr r1, _0800F130 @ =gUnknown_82350AC + adds r0, r1 + movs r1, 0 + cmp r4, r0 + bne _0800F11E + movs r1, 0x1 +_0800F11E: + str r1, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800F134 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F130: .4byte gUnknown_82350AC + thumb_func_end sub_800F108 + + thumb_func_start sub_800F134 +sub_800F134: @ 800F134 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + adds r4, r3, 0 + ldr r0, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r7, 0xC9 + bne _0800F1B0 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r4 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r4 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r4 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r4 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _0800F182 + movs r1, 0xC9 + b _0800F18C +_0800F182: + movs r2, 0xCE + lsls r2, 1 + adds r0, r1, r2 + lsls r0, 16 + lsrs r1, r0, 16 +_0800F18C: + mov r0, r8 + cmp r0, 0 + bne _0800F1A0 + ldr r0, _0800F19C @ =gUnknown_823654C + lsls r1, 3 + adds r1, r0 + ldr r0, [r1] + b _0800F1BC + .align 2, 0 +_0800F19C: .4byte gUnknown_823654C +_0800F1A0: + ldr r0, _0800F1AC @ =gUnknown_82350AC + lsls r1, 3 + adds r1, r0 + ldr r0, [r1] + b _0800F1BC + .align 2, 0 +_0800F1AC: .4byte gUnknown_82350AC +_0800F1B0: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + ble _0800F1C8 + ldr r0, _0800F1C4 @ =gUnknown_82350AC + ldr r0, [r0] +_0800F1BC: + adds r1, r5, 0 + bl LZ77UnCompWram + b _0800F1D0 + .align 2, 0 +_0800F1C4: .4byte gUnknown_82350AC +_0800F1C8: + ldr r0, [r6] + adds r1, r5, 0 + bl LZ77UnCompWram +_0800F1D0: + lsls r0, r7, 16 + lsrs r0, 16 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_8043458 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800F134 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/diploma.s b/asm/diploma.s new file mode 100644 index 000000000..d014cd4ca --- /dev/null +++ b/asm/diploma.s @@ -0,0 +1,607 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F4BFC +sub_80F4BFC: @ 80F4BFC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80F4BFC + + thumb_func_start sub_80F4C10 +sub_80F4C10: @ 80F4C10 + push {r4,lr} + ldr r4, _080F4C40 @ =gUnknown_203AB48 + ldr r0, _080F4C44 @ =0x00001004 + bl sub_8002BB0 + str r0, [r4] + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + strb r1, [r0, 0x1] + ldr r0, [r4] + strb r1, [r0, 0x2] + bl sub_80F4E24 + ldr r0, _080F4C48 @ =sub_80F4C68 + movs r1, 0 + bl sub_807741C + ldr r0, _080F4C4C @ =sub_80F4C50 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F4C40: .4byte gUnknown_203AB48 +_080F4C44: .4byte 0x00001004 +_080F4C48: .4byte sub_80F4C68 +_080F4C4C: .4byte sub_80F4C50 + thumb_func_end sub_80F4C10 + + thumb_func_start sub_80F4C50 +sub_80F4C50: @ 80F4C50 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80F4C50 + + thumb_func_start sub_80F4C68 +sub_80F4C68: @ 80F4C68 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080F4C84 @ =gUnknown_203AB48 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + cmp r0, 0x8 + bhi _080F4D30 + lsls r0, 2 + ldr r1, _080F4C88 @ =_080F4C8C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F4C84: .4byte gUnknown_203AB48 +_080F4C88: .4byte _080F4C8C + .align 2, 0 +_080F4C8C: + .4byte _080F4CB0 + .4byte _080F4CB8 + .4byte _080F4CBE + .4byte _080F4CCA + .4byte _080F4CDC + .4byte _080F4CFC + .4byte _080F4D02 + .4byte _080F4D10 + .4byte _080F4D22 +_080F4CB0: + movs r0, 0 + bl sub_80006F4 + b _080F4D50 +_080F4CB8: + bl sub_80F4E40 + b _080F4D50 +_080F4CBE: + bl sub_80F4F9C + lsls r0, 24 + cmp r0, 0 + beq _080F4D5A + b _080F4D50 +_080F4CCA: + ldr r1, _080F4CD8 @ =gUnknown_84154E8 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _080F4D50 + .align 2, 0 +_080F4CD8: .4byte gUnknown_84154E8 +_080F4CDC: + bl sub_8088F84 + lsls r0, 16 + cmp r0, 0 + beq _080F4CF2 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0x14 + bl sub_8000A38 + b _080F4D50 +_080F4CF2: + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + b _080F4D50 +_080F4CFC: + bl sub_80F5018 + b _080F4D50 +_080F4D02: + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + b _080F4D50 +_080F4D10: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _080F4D50 +_080F4D22: + ldr r0, _080F4D2C @ =sub_80F4BFC + bl sub_80006F4 + b _080F4D50 + .align 2, 0 +_080F4D2C: .4byte sub_80F4BFC +_080F4D30: + ldr r0, _080F4D64 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F4D50 + movs r0, 0x5 + bl sub_8071BC4 + ldr r0, _080F4D68 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080F4D6C @ =sub_80F4D74 + str r0, [r1] +_080F4D50: + ldr r0, _080F4D70 @ =gUnknown_203AB48 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] +_080F4D5A: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F4D64: .4byte gUnknown_2037AB8 +_080F4D68: .4byte gUnknown_3005090 +_080F4D6C: .4byte sub_80F4D74 +_080F4D70: .4byte gUnknown_203AB48 + thumb_func_end sub_80F4C68 + + thumb_func_start sub_80F4D74 +sub_80F4D74: @ 80F4D74 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r4, _080F4D90 @ =gUnknown_203AB48 + ldr r0, [r4] + ldrb r1, [r0] + cmp r1, 0x1 + beq _080F4DA8 + cmp r1, 0x1 + bgt _080F4D94 + cmp r1, 0 + beq _080F4D9A + b _080F4DD6 + .align 2, 0 +_080F4D90: .4byte gUnknown_203AB48 +_080F4D94: + cmp r1, 0x2 + beq _080F4DD0 + b _080F4DD6 +_080F4D9A: + movs r0, 0 + bl sub_8071C10 + lsls r0, 24 + cmp r0, 0 + beq _080F4DD6 + b _080F4DC2 +_080F4DA8: + ldr r0, _080F4DCC @ =gUnknown_30030F0 + ldrh r0, [r0, 0x2E] + ands r1, r0 + cmp r1, 0 + beq _080F4DD6 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080F4DC2: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080F4DD6 + .align 2, 0 +_080F4DCC: .4byte gUnknown_30030F0 +_080F4DD0: + adds r0, r2, 0 + bl sub_80F4DE0 +_080F4DD6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F4D74 + + thumb_func_start sub_80F4DE0 +sub_80F4DE0: @ 80F4DE0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080F4E18 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080F4E10 + adds r0, r2, 0 + bl sub_8077508 + bl sub_8003ECC + ldr r4, _080F4E1C @ =gUnknown_203AB48 + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + ldr r0, _080F4E20 @ =sub_80568FC + bl sub_8000544 +_080F4E10: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F4E18: .4byte gUnknown_2037AB8 +_080F4E1C: .4byte gUnknown_203AB48 +_080F4E20: .4byte sub_80568FC + thumb_func_end sub_80F4DE0 + + thumb_func_start sub_80F4E24 +sub_80F4E24: @ 80F4E24 + push {lr} + bl sub_8006B10 + bl sub_8070528 + bl sub_80088F0 + bl sub_80773BC + bl sub_8087E64 + pop {r0} + bx r0 + thumb_func_end sub_80F4E24 + + thumb_func_start sub_80F4E40 +sub_80F4E40: @ 80F4E40 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0xC + mov r8, r0 + add r2, sp, 0x8 + movs r6, 0 + ldr r1, _080F4F88 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _080F4F8C @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_080F4E66: + strh r6, [r2] + add r0, sp, 0x8 + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _080F4E66 + strh r6, [r2] + add r2, sp, 0x8 + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0xC] + ldr r2, _080F4F88 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + add r0, sp, 0x8 + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _080F4F90 @ =gUnknown_8415A08 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _080F4F94 @ =gUnknown_8415A10 + bl sub_8003B24 + bl sub_8002C28 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080F4F98 @ =gUnknown_203AB48 + ldr r1, [r0] + adds r1, 0x4 + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F4F88: .4byte 0x040000d4 +_080F4F8C: .4byte 0x81000800 +_080F4F90: .4byte gUnknown_8415A08 +_080F4F94: .4byte gUnknown_8415A10 +_080F4F98: .4byte gUnknown_203AB48 + thumb_func_end sub_80F4E40 + + thumb_func_start sub_80F4F9C +sub_80F4F9C: @ 80F4F9C + push {lr} + sub sp, 0x4 + ldr r0, _080F4FB4 @ =gUnknown_203AB48 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + beq _080F4FC8 + cmp r0, 0x1 + bgt _080F4FB8 + cmp r0, 0 + beq _080F4FC2 + b _080F4FF8 + .align 2, 0 +_080F4FB4: .4byte gUnknown_203AB48 +_080F4FB8: + cmp r0, 0x2 + beq _080F4FE0 + cmp r0, 0x3 + beq _080F4FEE + b _080F4FF8 +_080F4FC2: + bl sub_80F6808 + b _080F5000 +_080F4FC8: + ldr r1, _080F4FDC @ =gUnknown_84147C0 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _080F5000 + .align 2, 0 +_080F4FDC: .4byte gUnknown_84147C0 +_080F4FE0: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080F5000 + b _080F500A +_080F4FEE: + ldr r0, _080F4FFC @ =gUnknown_8415954 + movs r1, 0 + movs r2, 0x40 + bl sub_80703EC +_080F4FF8: + movs r0, 0x1 + b _080F500C + .align 2, 0 +_080F4FFC: .4byte gUnknown_8415954 +_080F5000: + ldr r0, _080F5014 @ =gUnknown_203AB48 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_080F500A: + movs r0, 0 +_080F500C: + add sp, 0x4 + pop {r1} + bx r1 + .align 2, 0 +_080F5014: .4byte gUnknown_203AB48 + thumb_func_end sub_80F4F9C + + thumb_func_start sub_80F5018 +sub_80F5018: @ 80F5018 + push {r4-r6,lr} + sub sp, 0xAC + bl sub_813CC90 + ldr r0, _080F5040 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + bl sub_8088F84 + lsls r0, 16 + cmp r0, 0 + beq _080F5048 + ldr r1, _080F5044 @ =gUnknown_841B68F + movs r0, 0x1 + bl sub_813CCAC + b _080F5050 + .align 2, 0 +_080F5040: .4byte gUnknown_300500C +_080F5044: .4byte gUnknown_841B68F +_080F5048: + ldr r1, _080F50E0 @ =gUnknown_841B698 + movs r0, 0x1 + bl sub_813CCAC +_080F5050: + movs r0, 0 + movs r1, 0 + bl sub_800445C + ldr r1, _080F50E4 @ =gUnknown_841B60E + add r0, sp, 0xC + bl sub_813CCC8 + movs r5, 0x1 + negs r5, r5 + movs r0, 0x2 + add r1, sp, 0xC + adds r2, r5, 0 + bl sub_8005ED4 + lsrs r2, r0, 1 + movs r4, 0x78 + subs r2, r4, r2 + lsls r2, 24 + lsrs r2, 24 + ldr r6, _080F50E8 @ =gUnknown_8415A04 + str r6, [sp] + str r5, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r3, 0x4 + bl sub_812E51C + ldr r1, _080F50EC @ =gUnknown_841B619 + add r0, sp, 0xC + bl sub_813CCC8 + movs r0, 0x2 + add r1, sp, 0xC + adds r2, r5, 0 + bl sub_8005ED4 + lsrs r0, 1 + subs r4, r0 + lsls r4, 24 + lsrs r4, 24 + str r6, [sp] + str r5, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0x1E + bl sub_812E51C + str r6, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, _080F50F0 @ =gUnknown_841B684 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x78 + movs r3, 0x69 + bl sub_812E51C + movs r0, 0 + bl sub_8003FA0 + add sp, 0xAC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F50E0: .4byte gUnknown_841B698 +_080F50E4: .4byte gUnknown_841B60E +_080F50E8: .4byte gUnknown_8415A04 +_080F50EC: .4byte gUnknown_841B619 +_080F50F0: .4byte gUnknown_841B684 + thumb_func_end sub_80F5018 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/dma3_manager.s b/asm/dma3_manager.s new file mode 100644 index 000000000..46f711d79 --- /dev/null +++ b/asm/dma3_manager.s @@ -0,0 +1,578 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8000BFC +sub_8000BFC: @ 8000BFC + push {lr} + ldr r2, _08000C28 @ =gUnknown_30008C8 + movs r0, 0x1 + strb r0, [r2] + ldr r1, _08000C2C @ =gUnknown_30008C9 + movs r0, 0 + strb r0, [r1] + movs r3, 0 + ldr r0, _08000C30 @ =gUnknown_30000C8 + movs r1, 0x7F +_08000C10: + strh r3, [r0, 0x8] + str r3, [r0] + str r3, [r0, 0x4] + adds r0, 0x10 + subs r1, 0x1 + cmp r1, 0 + bge _08000C10 + movs r0, 0 + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_08000C28: .4byte gUnknown_30008C8 +_08000C2C: .4byte gUnknown_30008C9 +_08000C30: .4byte gUnknown_30000C8 + thumb_func_end sub_8000BFC + + thumb_func_start sub_8000C34 +sub_8000C34: @ 8000C34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldr r0, _08000CB0 @ =gUnknown_30008C8 + ldrb r0, [r0] + cmp r0, 0 + beq _08000C4A + b _08000E8A +_08000C4A: + movs r0, 0 + str r0, [sp, 0x8] + ldr r1, _08000CB4 @ =gUnknown_30000C8 + ldr r2, _08000CB8 @ =gUnknown_30008C9 + ldrb r0, [r2] + lsls r0, 4 + adds r0, r1 + ldrh r0, [r0, 0x8] + mov r12, r2 + cmp r0, 0 + bne _08000C62 + b _08000E8A +_08000C62: + mov r8, r1 + adds r1, 0x4 + mov r10, r1 + movs r6, 0x80 + lsls r6, 5 + ldr r7, _08000CBC @ =0x040000d4 + movs r2, 0 + mov r9, r2 +_08000C72: + mov r3, r12 + ldrb r0, [r3] + lsls r5, r0, 4 + mov r0, r8 + adds r1, r5, r0 + ldrh r0, [r1, 0x8] + ldr r2, [sp, 0x8] + adds r0, r2, r0 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + movs r0, 0xA0 + lsls r0, 8 + ldr r3, [sp, 0x8] + cmp r3, r0 + bls _08000C94 + b _08000E8A +_08000C94: + ldr r0, _08000CC0 @ =0x04000006 + ldrb r0, [r0] + cmp r0, 0xE0 + bls _08000C9E + b _08000E8A +_08000C9E: + ldrh r0, [r1, 0xA] + cmp r0, 0x2 + beq _08000D14 + cmp r0, 0x2 + bgt _08000CC4 + cmp r0, 0x1 + beq _08000CD0 + b _08000E34 + .align 2, 0 +_08000CB0: .4byte gUnknown_30008C8 +_08000CB4: .4byte gUnknown_30000C8 +_08000CB8: .4byte gUnknown_30008C9 +_08000CBC: .4byte 0x040000d4 +_08000CC0: .4byte 0x04000006 +_08000CC4: + cmp r0, 0x3 + beq _08000D80 + cmp r0, 0x4 + bne _08000CCE + b _08000DCC +_08000CCE: + b _08000E34 +_08000CD0: + ldr r3, [r1] + mov r2, r10 + adds r0, r5, r2 + ldr r2, [r0] + ldrh r1, [r1, 0x8] + cmp r1, r6 + bhi _08000CEA + str r3, [r7] + str r2, [r7, 0x4] + lsrs r0, r1, 2 + movs r1, 0x84 + lsls r1, 24 + b _08000DEE +_08000CEA: + ldr r4, _08000D0C @ =0x040000d4 + str r3, [r4] + str r2, [r4, 0x4] + ldr r0, _08000D10 @ =0x84000400 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r3, r6 + adds r2, r6 + subs r1, r6 + cmp r1, r6 + bhi _08000CEA + str r3, [r4] + str r2, [r4, 0x4] + lsrs r0, r1, 2 + movs r1, 0x84 + lsls r1, 24 + b _08000DBA + .align 2, 0 +_08000D0C: .4byte 0x040000d4 +_08000D10: .4byte 0x84000400 +_08000D14: + mov r3, r10 + adds r0, r5, r3 + ldr r4, [r0] + ldrh r1, [r1, 0x8] + cmp r1, r6 + bhi _08000D38 + mov r0, r8 + adds r0, 0xC + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp] + mov r5, sp + str r5, [r7] + str r4, [r7, 0x4] + lsrs r0, r1, 2 + movs r1, 0x85 + lsls r1, 24 + b _08000DEE +_08000D38: + mov r2, r12 + ldrb r0, [r2] + lsls r0, 4 + mov r5, r8 + adds r5, 0xC + adds r0, r5 + ldr r0, [r0] + str r0, [sp] + ldr r3, _08000D78 @ =0x040000d4 + mov r0, sp + str r0, [r3] + str r4, [r3, 0x4] + ldr r0, _08000D7C @ =0x85000400 + str r0, [r3, 0x8] + ldr r0, [r3, 0x8] + adds r4, r6 + subs r1, r6 + cmp r1, r6 + bhi _08000D38 + ldrb r0, [r2] + lsls r0, 4 + adds r0, r5 + ldr r0, [r0] + str r0, [sp] + mov r2, sp + str r2, [r3] + str r4, [r3, 0x4] + lsrs r0, r1, 2 + movs r1, 0x85 + lsls r1, 24 + b _08000E2E + .align 2, 0 +_08000D78: .4byte 0x040000d4 +_08000D7C: .4byte 0x85000400 +_08000D80: + ldr r3, [r1] + mov r2, r10 + adds r0, r5, r2 + ldr r2, [r0] + ldrh r1, [r1, 0x8] + cmp r1, r6 + bhi _08000D9A + str r3, [r7] + str r2, [r7, 0x4] + lsrs r0, r1, 1 + movs r1, 0x80 + lsls r1, 24 + b _08000DEE +_08000D9A: + ldr r4, _08000DC4 @ =0x040000d4 + str r3, [r4] + str r2, [r4, 0x4] + ldr r0, _08000DC8 @ =0x80000800 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r3, r6 + adds r2, r6 + subs r1, r6 + cmp r1, r6 + bhi _08000D9A + str r3, [r4] + str r2, [r4, 0x4] + lsrs r0, r1, 1 + movs r1, 0x80 + lsls r1, 24 +_08000DBA: + orrs r0, r1 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + b _08000E34 + .align 2, 0 +_08000DC4: .4byte 0x040000d4 +_08000DC8: .4byte 0x80000800 +_08000DCC: + mov r3, r10 + adds r0, r5, r3 + ldr r2, [r0] + ldrh r4, [r1, 0x8] + add r1, sp, 0x4 + cmp r4, r6 + bhi _08000DF6 + mov r0, r8 + adds r0, 0xC + adds r0, r5, r0 + ldr r0, [r0] + strh r0, [r1] + str r1, [r7] + str r2, [r7, 0x4] + lsrs r0, r4, 1 + movs r1, 0x81 + lsls r1, 24 +_08000DEE: + orrs r0, r1 + str r0, [r7, 0x8] + ldr r0, [r7, 0x8] + b _08000E34 +_08000DF6: + mov r5, r12 + ldrb r0, [r5] + lsls r0, 4 + ldr r3, _08000E9C @ =gUnknown_30000D4 + adds r0, r3 + ldr r0, [r0] + strh r0, [r1] + ldr r3, _08000EA0 @ =0x040000d4 + str r1, [r3] + str r2, [r3, 0x4] + ldr r0, _08000EA4 @ =0x81000800 + str r0, [r3, 0x8] + ldr r0, [r3, 0x8] + adds r2, r6 + subs r4, r6 + cmp r4, r6 + bhi _08000DF6 + ldrb r0, [r5] + lsls r0, 4 + ldr r5, _08000E9C @ =gUnknown_30000D4 + adds r0, r5 + ldr r0, [r0] + strh r0, [r1] + str r1, [r3] + str r2, [r3, 0x4] + lsrs r0, r4, 1 + movs r1, 0x81 + lsls r1, 24 +_08000E2E: + orrs r0, r1 + str r0, [r3, 0x8] + ldr r0, [r3, 0x8] +_08000E34: + ldr r1, _08000EA8 @ =gUnknown_30000C8 + mov r3, r12 + ldrb r0, [r3] + lsls r0, 4 + adds r0, r1 + mov r2, r9 + str r2, [r0] + ldrb r0, [r3] + lsls r0, 4 + add r0, r10 + str r2, [r0] + ldrb r0, [r3] + lsls r0, 4 + adds r0, r1 + movs r4, 0 + strh r2, [r0, 0x8] + ldrb r0, [r3] + lsls r0, 4 + adds r0, r1 + mov r5, r9 + strh r5, [r0, 0xA] + ldrb r0, [r3] + lsls r0, 4 + adds r1, 0xC + adds r0, r1 + mov r1, r9 + str r1, [r0] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + cmp r0, 0 + bge _08000E78 + strb r4, [r3] +_08000E78: + mov r2, r12 + ldrb r0, [r2] + lsls r0, 4 + ldr r3, _08000EA8 @ =gUnknown_30000C8 + adds r0, r3 + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _08000E8A + b _08000C72 +_08000E8A: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08000E9C: .4byte gUnknown_30000D4 +_08000EA0: .4byte 0x040000d4 +_08000EA4: .4byte 0x81000800 +_08000EA8: .4byte gUnknown_30000C8 + thumb_func_end sub_8000C34 + + thumb_func_start sub_8000EAC +sub_8000EAC: @ 8000EAC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r12, r0 + mov r8, r1 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 24 + lsrs r4, r3, 24 + movs r5, 0 + ldr r1, _08000EF8 @ =gUnknown_30008C8 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _08000EFC @ =gUnknown_30008C9 + ldrb r2, [r0] + mov r10, r1 + ldr r6, _08000F00 @ =gUnknown_30000C8 + mov r9, r6 + lsls r0, r2, 4 + adds r1, r0, r6 +_08000ED8: + lsls r3, r2, 4 + ldrh r0, [r1, 0x8] + cmp r0, 0 + bne _08000F18 + mov r0, r12 + str r0, [r1] + mov r0, r9 + adds r0, 0x4 + adds r0, r3, r0 + mov r3, r8 + str r3, [r0] + strh r7, [r1, 0x8] + cmp r4, 0x1 + bne _08000F04 + strh r4, [r1, 0xA] + b _08000F08 + .align 2, 0 +_08000EF8: .4byte gUnknown_30008C8 +_08000EFC: .4byte gUnknown_30008C9 +_08000F00: .4byte gUnknown_30000C8 +_08000F04: + movs r0, 0x3 + strh r0, [r1, 0xA] +_08000F08: + movs r0, 0 + ldr r1, _08000F14 @ =gUnknown_30008C8 + strb r0, [r1] + lsls r0, r2, 16 + asrs r0, 16 + b _08000F34 + .align 2, 0 +_08000F14: .4byte gUnknown_30008C8 +_08000F18: + adds r1, 0x10 + adds r2, 0x1 + cmp r2, 0x7F + ble _08000F24 + adds r1, r6, 0 + movs r2, 0 +_08000F24: + adds r5, 0x1 + cmp r5, 0x7F + ble _08000ED8 + movs r0, 0 + mov r3, r10 + strb r0, [r3] + movs r0, 0x1 + negs r0, r0 +_08000F34: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8000EAC + + thumb_func_start sub_8000F44 +sub_8000F44: @ 8000F44 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + mov r8, r1 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 24 + lsrs r5, r3, 24 + movs r6, 0 + ldr r0, _08000F9C @ =gUnknown_30008C9 + ldrb r2, [r0] + ldr r1, _08000FA0 @ =gUnknown_30008C8 + movs r0, 0x1 + strb r0, [r1] + mov r10, r1 + ldr r0, _08000FA4 @ =gUnknown_30000C8 + mov r12, r0 + mov r4, r12 + lsls r0, r2, 4 + adds r0, 0x8 + adds r1, r0, r4 +_08000F74: + lsls r3, r2, 4 + ldrh r0, [r1] + cmp r0, 0 + bne _08000FBC + adds r0, r4, 0x4 + adds r0, r3, r0 + mov r6, r8 + str r6, [r0] + strh r7, [r1] + strh r5, [r1, 0x2] + adds r0, r4, 0 + adds r0, 0xC + adds r0, r3, r0 + mov r3, r9 + str r3, [r0] + cmp r5, 0x1 + bne _08000FA8 + movs r0, 0x2 + b _08000FAA + .align 2, 0 +_08000F9C: .4byte gUnknown_30008C9 +_08000FA0: .4byte gUnknown_30008C8 +_08000FA4: .4byte gUnknown_30000C8 +_08000FA8: + movs r0, 0x4 +_08000FAA: + strh r0, [r1, 0x2] + movs r0, 0 + ldr r6, _08000FB8 @ =gUnknown_30008C8 + strb r0, [r6] + lsls r0, r2, 16 + asrs r0, 16 + b _08000FDA + .align 2, 0 +_08000FB8: .4byte gUnknown_30008C8 +_08000FBC: + adds r1, 0x10 + adds r2, 0x1 + cmp r2, 0x7F + ble _08000FCA + mov r1, r12 + adds r1, 0x8 + movs r2, 0 +_08000FCA: + adds r6, 0x1 + cmp r6, 0x7F + ble _08000F74 + movs r0, 0 + mov r1, r10 + strb r0, [r1] + movs r0, 0x1 + negs r0, r0 +_08000FDA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8000F44 + + thumb_func_start sub_8000FE8 +sub_8000FE8: @ 8000FE8 + push {lr} + movs r2, 0 + lsls r0, 16 + asrs r1, r0, 16 + movs r3, 0x1 + negs r3, r3 + cmp r1, r3 + bne _08001010 + ldr r1, _0800100C @ =gUnknown_30000C8 +_08000FFA: + ldrh r0, [r1, 0x8] + cmp r0, 0 + bne _0800101C + adds r1, 0x10 + adds r2, 0x1 + cmp r2, 0x7F + ble _08000FFA +_08001008: + movs r0, 0 + b _08001020 + .align 2, 0 +_0800100C: .4byte gUnknown_30000C8 +_08001010: + ldr r0, _08001024 @ =gUnknown_30000C8 + lsls r1, 4 + adds r1, r0 + ldrh r0, [r1, 0x8] + cmp r0, 0 + beq _08001008 +_0800101C: + movs r0, 0x1 + negs r0, r0 +_08001020: + pop {r1} + bx r1 + .align 2, 0 +_08001024: .4byte gUnknown_30000C8 + thumb_func_end sub_8000FE8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/easy_chat.s b/asm/easy_chat.s new file mode 100644 index 000000000..a267c6b61 --- /dev/null +++ b/asm/easy_chat.s @@ -0,0 +1,1863 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BD718 +sub_80BD718: @ 80BD718 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x14 + beq _080BD73E + cmp r0, 0x14 + bgt _080BD738 + cmp r0, 0x11 + blt _080BD74C + ldr r0, _080BD734 @ =0x0000082c + bl sub_806E6D0 + b _080BD746 + .align 2, 0 +_080BD734: .4byte 0x0000082c +_080BD738: + cmp r1, 0x15 + beq _080BD742 + b _080BD74C +_080BD73E: + movs r0, 0 + b _080BD74E +_080BD742: + bl sub_80BDCA8 +_080BD746: + lsls r0, 24 + lsrs r0, 24 + b _080BD74E +_080BD74C: + movs r0, 0x1 +_080BD74E: + pop {r1} + bx r1 + thumb_func_end sub_80BD718 + + thumb_func_start sub_80BD754 +sub_80BD754: @ 80BD754 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + cmp r0, 0x15 + bne _080BD76C + movs r0, 0 + bl sub_8088E8C + lsls r0, 16 + lsrs r0, 16 + b _080BD782 +_080BD76C: + bl sub_80BD718 + lsls r0, 24 + cmp r0, 0 + bne _080BD77A + movs r0, 0 + b _080BD782 +_080BD77A: + ldr r0, _080BD788 @ =gUnknown_83ECED4 + lsls r1, r4, 3 + adds r1, r0 + ldrh r0, [r1, 0x6] +_080BD782: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080BD788: .4byte gUnknown_83ECED4 + thumb_func_end sub_80BD754 + + thumb_func_start sub_80BD78C +sub_80BD78C: @ 80BD78C + push {r4,r5,lr} + lsls r2, r0, 16 + lsrs r1, r2, 16 + ldr r0, _080BD7B8 @ =0x0000ffff + cmp r1, r0 + beq _080BD7EC + lsrs r3, r2, 25 + ldr r5, _080BD7BC @ =0x000001ff + ands r5, r1 + cmp r3, 0x15 + bhi _080BD7F0 + ldr r0, _080BD7C0 @ =gUnknown_83ECED4 + lsls r2, r3, 3 + adds r1, r2, r0 + ldrh r4, [r1, 0x4] + cmp r3, 0x13 + bgt _080BD7C4 + cmp r3, 0x12 + bge _080BD7C8 + cmp r3, 0 + beq _080BD7C8 + b _080BD7E8 + .align 2, 0 +_080BD7B8: .4byte 0x0000ffff +_080BD7BC: .4byte 0x000001ff +_080BD7C0: .4byte gUnknown_83ECED4 +_080BD7C4: + cmp r3, 0x15 + bne _080BD7E8 +_080BD7C8: + adds r0, r2, r0 + ldr r2, [r0] + movs r1, 0 + cmp r1, r4 + bcs _080BD7F0 +_080BD7D2: + lsls r0, r1, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r5, r0 + beq _080BD7EC + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + bcc _080BD7D2 + b _080BD7F0 +_080BD7E8: + cmp r5, r4 + bcs _080BD7F0 +_080BD7EC: + movs r0, 0 + b _080BD7F2 +_080BD7F0: + movs r0, 0x1 +_080BD7F2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80BD78C + + thumb_func_start sub_80BD7F8 +sub_80BD7F8: @ 80BD7F8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r2, r1, 16 + cmp r0, 0x13 + bgt _080BD810 + cmp r0, 0x12 + bge _080BD824 + cmp r0, 0 + beq _080BD814 + b _080BD834 +_080BD810: + cmp r0, 0x15 + bne _080BD834 +_080BD814: + movs r0, 0xB + muls r0, r2 + ldr r1, _080BD820 @ =gUnknown_8245EE0 + adds r0, r1 + b _080BD846 + .align 2, 0 +_080BD820: .4byte gUnknown_8245EE0 +_080BD824: + movs r0, 0xD + muls r0, r2 + ldr r1, _080BD830 @ =gUnknown_8247094 + adds r0, r1 + b _080BD846 + .align 2, 0 +_080BD830: .4byte gUnknown_8247094 +_080BD834: + ldr r1, _080BD84C @ =gUnknown_83ECED4 + lsls r0, 3 + adds r0, r1 + ldr r1, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] +_080BD846: + pop {r1} + bx r1 + .align 2, 0 +_080BD84C: .4byte gUnknown_83ECED4 + thumb_func_end sub_80BD7F8 + + thumb_func_start sub_80BD850 +sub_80BD850: @ 80BD850 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r6, r1, 16 + lsrs r0, r6, 16 + adds r4, r0, 0 + bl sub_80BD78C + lsls r0, 24 + cmp r0, 0 + beq _080BD86C + ldr r1, _080BD868 @ =gUnknown_841E093 + b _080BD87E + .align 2, 0 +_080BD868: .4byte gUnknown_841E093 +_080BD86C: + ldr r0, _080BD888 @ =0x0000ffff + cmp r4, r0 + beq _080BD890 + ldr r1, _080BD88C @ =0x000001ff + ands r1, r4 + lsrs r0, r6, 25 + bl sub_80BD7F8 + adds r1, r0, 0 +_080BD87E: + adds r0, r5, 0 + bl sub_8008D84 + b _080BD896 + .align 2, 0 +_080BD888: .4byte 0x0000ffff +_080BD88C: .4byte 0x000001ff +_080BD890: + movs r0, 0xFF + strb r0, [r5] + adds r0, r5, 0 +_080BD896: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80BD850 + + thumb_func_start sub_80BD89C +sub_80BD89C: @ 80BD89C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 16 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + ldr r0, _080BD924 @ =0xffff0000 + adds r2, r0 + lsrs r7, r2, 16 + movs r0, 0 + cmp r0, r9 + bcs _080BD90C +_080BD8BE: + movs r6, 0 + adds r0, 0x1 + mov r8, r0 + cmp r6, r7 + bcs _080BD8F0 + ldr r2, _080BD928 @ =0x0000ffff +_080BD8CA: + ldrh r1, [r5] + adds r0, r4, 0 + str r2, [sp] + bl sub_80BD850 + adds r4, r0, 0 + ldrh r0, [r5] + ldr r2, [sp] + cmp r0, r2 + beq _080BD8E4 + movs r0, 0 + strb r0, [r4] + adds r4, 0x1 +_080BD8E4: + adds r5, 0x2 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r7 + bcc _080BD8CA +_080BD8F0: + ldrh r1, [r5] + adds r5, 0x2 + adds r0, r4, 0 + bl sub_80BD850 + adds r4, r0, 0 + movs r0, 0xFE + strb r0, [r4] + adds r4, 0x1 + mov r1, r8 + lsls r0, r1, 16 + lsrs r0, 16 + cmp r0, r9 + bcc _080BD8BE +_080BD90C: + subs r4, 0x1 + movs r0, 0xFF + strb r0, [r4] + adds r0, r4, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080BD924: .4byte 0xffff0000 +_080BD928: .4byte 0x0000ffff + thumb_func_end sub_80BD89C + + thumb_func_start sub_80BD92C +sub_80BD92C: @ 80BD92C + push {r4,r5,lr} + lsls r5, r0, 16 + lsrs r0, r5, 16 + adds r4, r0, 0 + ldr r0, _080BD940 @ =0x0000ffff + cmp r4, r0 + bne _080BD944 + movs r0, 0 + b _080BD96A + .align 2, 0 +_080BD940: .4byte 0x0000ffff +_080BD944: + adds r0, r4, 0 + bl sub_80BD78C + lsls r0, 24 + cmp r0, 0 + bne _080BD960 + ldr r1, _080BD95C @ =0x000001ff + ands r1, r4 + lsrs r0, r5, 25 + bl sub_80BD7F8 + b _080BD962 + .align 2, 0 +_080BD95C: .4byte 0x000001ff +_080BD960: + ldr r0, _080BD970 @ =gUnknown_841E093 +_080BD962: + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 +_080BD96A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080BD970: .4byte gUnknown_841E093 + thumb_func_end sub_80BD92C + + thumb_func_start sub_80BD974 +sub_80BD974: @ 80BD974 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + movs r7, 0 + cmp r7, r8 + bcs _080BD9D6 + subs r0, r1, 0x1 + lsls r0, 16 + mov r9, r0 +_080BD99E: + mov r0, r9 + lsrs r4, r0, 16 + movs r5, 0 + cmp r5, r1 + bcs _080BD9C4 +_080BD9A8: + ldrh r0, [r6] + adds r6, 0x2 + str r1, [sp] + bl sub_80BD92C + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, [sp] + cmp r5, r1 + bcc _080BD9A8 +_080BD9C4: + cmp r4, r10 + bls _080BD9CC + movs r0, 0x1 + b _080BD9D8 +_080BD9CC: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, r8 + bcc _080BD99E +_080BD9D6: + movs r0, 0 +_080BD9D8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80BD974 + + thumb_func_start sub_80BD9E8 +sub_80BD9E8: @ 80BD9E8 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8044EC8 + ldr r2, _080BDA38 @ =gUnknown_83ECED4 + lsls r1, r4, 3 + adds r1, r2 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1, 0x4] + bl __umodsi3 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r4, 0 + beq _080BDA16 + cmp r4, 0x15 + beq _080BDA16 + cmp r4, 0x12 + beq _080BDA16 + cmp r4, 0x13 + bne _080BDA24 +_080BDA16: + ldr r1, _080BDA38 @ =gUnknown_83ECED4 + lsls r0, r4, 3 + adds r0, r1 + ldr r1, [r0] + lsls r0, r2, 1 + adds r0, r1 + ldrh r2, [r0] +_080BDA24: + movs r0, 0x7F + ands r0, r4 + lsls r0, 9 + ldr r1, _080BDA3C @ =0x000001ff + ands r2, r1 + orrs r0, r2 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080BDA38: .4byte gUnknown_83ECED4 +_080BDA3C: .4byte 0x000001ff + thumb_func_end sub_80BD9E8 + + thumb_func_start sub_80BDA40 +sub_80BDA40: @ 80BDA40 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + adds r4, r0, 0 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80BD718 + lsls r0, 24 + cmp r0, 0 + bne _080BDA60 + ldr r0, _080BDA5C @ =0x0000ffff + b _080BDA74 + .align 2, 0 +_080BDA5C: .4byte 0x0000ffff +_080BDA60: + cmp r4, 0x15 + beq _080BDA6C + adds r0, r4, 0 + bl sub_80BD9E8 + b _080BDA70 +_080BDA6C: + bl sub_80BDCB8 +_080BDA70: + lsls r0, 16 + lsrs r0, 16 +_080BDA74: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BDA40 + + thumb_func_start sub_80BDA7C +sub_80BDA7C: @ 80BDA7C + push {r4,r5,lr} + ldr r0, _080BDA90 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x1 + beq _080BDAB4 + cmp r0, 0x1 + bgt _080BDA94 + cmp r0, 0 + beq _080BDA9E + b _080BDB08 + .align 2, 0 +_080BDA90: .4byte gUnknown_20370C0 +_080BDA94: + cmp r0, 0x2 + beq _080BDADC + cmp r0, 0x3 + beq _080BDAEC + b _080BDB08 +_080BDA9E: + ldr r0, _080BDAAC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _080BDAB0 @ =0x00002ca0 + adds r5, r0, r1 + movs r2, 0x2 + b _080BDAF6 + .align 2, 0 +_080BDAAC: .4byte gUnknown_3005008 +_080BDAB0: .4byte 0x00002ca0 +_080BDAB4: + ldr r0, _080BDAD4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _080BDAD8 @ =0x00002cac + adds r5, r0, r1 + adds r0, r5, 0 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0x12 + bl sub_80BD974 + lsls r0, 24 + cmp r0, 0 + beq _080BDAF4 + movs r2, 0x2 + movs r3, 0x3 + b _080BDAF8 + .align 2, 0 +_080BDAD4: .4byte gUnknown_3005008 +_080BDAD8: .4byte 0x00002cac +_080BDADC: + ldr r0, _080BDAE4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _080BDAE8 @ =0x00002cb8 + b _080BDAF2 + .align 2, 0 +_080BDAE4: .4byte gUnknown_3005008 +_080BDAE8: .4byte 0x00002cb8 +_080BDAEC: + ldr r0, _080BDB10 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _080BDB14 @ =0x00002cc4 +_080BDAF2: + adds r5, r0, r1 +_080BDAF4: + movs r2, 0x3 +_080BDAF6: + movs r3, 0x2 +_080BDAF8: + ldr r4, _080BDB18 @ =gUnknown_2021D18 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80BD89C + adds r0, r4, 0 + bl sub_8069464 +_080BDB08: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BDB10: .4byte gUnknown_3005008 +_080BDB14: .4byte 0x00002cc4 +_080BDB18: .4byte gUnknown_2021D18 + thumb_func_end sub_80BDA7C + + thumb_func_start sub_80BDB1C +sub_80BDB1C: @ 80BDB1C + push {lr} + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + movs r0, 0xC + cmp r1, 0 + beq _080BDB2E + movs r0, 0xD +_080BDB2E: + bl sub_80BDA40 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _080BDB44 @ =gUnknown_2021CF0 + bl sub_80BD850 + pop {r0} + bx r0 + .align 2, 0 +_080BDB44: .4byte gUnknown_2021CF0 + thumb_func_end sub_80BDB1C + + thumb_func_start sub_80BDB48 +sub_80BDB48: @ 80BDB48 + lsls r0, 24 + lsrs r2, r0, 27 + movs r1, 0xE0 + lsls r1, 19 + ands r1, r0 + lsrs r1, 24 + ldr r0, _080BDB68 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r3, _080BDB6C @ =0x00002f10 + adds r0, r3 + adds r0, r2 + ldrb r0, [r0] + asrs r0, r1 + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_080BDB68: .4byte gUnknown_3005008 +_080BDB6C: .4byte 0x00002f10 + thumb_func_end sub_80BDB48 + + thumb_func_start sub_80BDB70 +sub_80BDB70: @ 80BDB70 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x20 + bhi _080BDB94 + lsrs r3, r0, 27 + movs r2, 0x7 + ands r2, r1 + ldr r0, _080BDB98 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _080BDB9C @ =0x00002f10 + adds r1, r0 + adds r1, r3 + movs r0, 0x1 + lsls r0, r2 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] +_080BDB94: + pop {r0} + bx r0 + .align 2, 0 +_080BDB98: .4byte gUnknown_3005008 +_080BDB9C: .4byte 0x00002f10 + thumb_func_end sub_80BDB70 + + thumb_func_start sub_80BDBA0 +sub_80BDBA0: @ 80BDBA0 + push {r4,r5,lr} + movs r4, 0 + movs r5, 0 +_080BDBA6: + adds r0, r4, 0 + bl sub_80BDB48 + lsls r0, 24 + cmp r0, 0 + beq _080BDBB8 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_080BDBB8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x20 + bls _080BDBA6 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80BDBA0 + + thumb_func_start sub_80BDBCC +sub_80BDBCC: @ 80BDBCC + push {r4-r6,lr} + bl sub_80BDBA0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x21 + bne _080BDBF8 + b _080BDC32 +_080BDBDC: + adds r0, r5, 0 + bl sub_80BDB70 + ldr r0, _080BDBF4 @ =0x000001ff + ands r4, r0 + movs r1, 0xA0 + lsls r1, 6 + adds r0, r1, 0 + orrs r4, r0 + adds r0, r4, 0 + b _080BDC34 + .align 2, 0 +_080BDBF4: .4byte 0x000001ff +_080BDBF8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x21 + subs r1, r4 + bl __modsi3 + lsls r0, 16 + lsrs r6, r0, 16 + movs r4, 0 +_080BDC0E: + lsls r0, r4, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_80BDB48 + lsls r0, 24 + cmp r0, 0 + bne _080BDC28 + cmp r6, 0 + beq _080BDBDC + subs r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 +_080BDC28: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x20 + bls _080BDC0E +_080BDC32: + ldr r0, _080BDC3C @ =0x0000ffff +_080BDC34: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080BDC3C: .4byte 0x0000ffff + thumb_func_end sub_80BDBCC + + thumb_func_start sub_80BDC40 +sub_80BDC40: @ 80BDC40 + push {r4,r5,lr} + bl sub_80BDBA0 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080BDC64 + b _080BDC9A +_080BDC50: + ldr r0, _080BDC60 @ =0x000001ff + ands r4, r0 + movs r1, 0xA0 + lsls r1, 6 + adds r0, r1, 0 + orrs r4, r0 + adds r0, r4, 0 + b _080BDC9C + .align 2, 0 +_080BDC60: .4byte 0x000001ff +_080BDC64: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + bl __umodsi3 + lsls r0, 16 + lsrs r5, r0, 16 + movs r4, 0 +_080BDC78: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80BDB48 + lsls r0, 24 + cmp r0, 0 + beq _080BDC90 + cmp r5, 0 + beq _080BDC50 + subs r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_080BDC90: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x20 + bls _080BDC78 +_080BDC9A: + ldr r0, _080BDCA4 @ =0x0000ffff +_080BDC9C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080BDCA4: .4byte 0x0000ffff + thumb_func_end sub_80BDC40 + + thumb_func_start sub_80BDCA8 +sub_80BDCA8: @ 80BDCA8 + push {lr} + bl sub_806E25C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80BDCA8 + + thumb_func_start sub_80BDCB8 +sub_80BDCB8: @ 80BDCB8 + push {r4-r7,lr} + movs r0, 0 + bl sub_80BD754 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _080BDCD8 + b _080BDD22 +_080BDCCA: + ldrh r1, [r5] + ldr r0, _080BDCD4 @ =0x000001ff + ands r0, r1 + b _080BDD24 + .align 2, 0 +_080BDCD4: .4byte 0x000001ff +_080BDCD8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080BDD2C @ =gUnknown_83ECED4 + ldr r5, [r0] + ldrh r7, [r0, 0x4] + movs r6, 0 + cmp r6, r7 + bcs _080BDD22 +_080BDCF6: + ldrh r0, [r5] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _080BDD16 + cmp r4, 0 + beq _080BDCCA + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_080BDD16: + adds r5, 0x2 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r7 + bcc _080BDCF6 +_080BDD22: + ldr r0, _080BDD30 @ =0x0000ffff +_080BDD24: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080BDD2C: .4byte gUnknown_83ECED4 +_080BDD30: .4byte 0x0000ffff + thumb_func_end sub_80BDCB8 + + thumb_func_start sub_80BDD34 +sub_80BDD34: @ 80BDD34 + push {r4-r7,lr} + movs r4, 0 + ldr r5, _080BDE00 @ =gUnknown_3005008 + ldr r3, _080BDE04 @ =0x00002ca0 + ldr r2, _080BDE08 @ =gUnknown_83EDFF0 +_080BDD3E: + ldr r1, [r5] + lsls r0, r4, 1 + adds r1, r3 + adds r1, r0 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080BDD3E + movs r4, 0 + ldr r5, _080BDE00 @ =gUnknown_3005008 + ldr r3, _080BDE0C @ =0x00002cac + ldr r2, _080BDE10 @ =gUnknown_83EDFF8 +_080BDD5E: + ldr r1, [r5] + lsls r0, r4, 1 + adds r1, r3 + adds r1, r0 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x5 + bls _080BDD5E + movs r4, 0 + ldr r0, _080BDE00 @ =gUnknown_3005008 + mov r12, r0 + ldr r7, _080BDE14 @ =0x00002cb8 + ldr r0, _080BDE18 @ =0x0000ffff + adds r5, r0, 0 + ldr r6, _080BDE1C @ =0x00002cc4 +_080BDD84: + mov r0, r12 + ldr r2, [r0] + lsls r3, r4, 1 + adds r1, r2, r7 + adds r1, r3 + ldrh r0, [r1] + orrs r0, r5 + strh r0, [r1] + adds r2, r6 + adds r2, r3 + ldrh r0, [r2] + orrs r0, r5 + strh r0, [r2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x5 + bls _080BDD84 + movs r4, 0 + ldr r7, _080BDE00 @ =gUnknown_3005008 + ldr r6, _080BDE20 @ =0x00002cd0 + ldr r0, _080BDE18 @ =0x0000ffff + adds r5, r0, 0 +_080BDDB2: + movs r2, 0 + lsls r0, r4, 3 + adds r0, r4 + lsls r3, r0, 2 +_080BDDBA: + ldr r1, [r7] + lsls r0, r2, 1 + adds r0, r3 + adds r1, r6 + adds r1, r0 + ldrh r0, [r1] + orrs r0, r5 + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x8 + bls _080BDDBA + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xF + bls _080BDDB2 + movs r4, 0 + ldr r3, _080BDE00 @ =gUnknown_3005008 + ldr r2, _080BDE24 @ =0x00002f10 + movs r1, 0 +_080BDDE6: + ldr r0, [r3] + adds r0, r2 + adds r0, r4 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3F + bls _080BDDE6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BDE00: .4byte gUnknown_3005008 +_080BDE04: .4byte 0x00002ca0 +_080BDE08: .4byte gUnknown_83EDFF0 +_080BDE0C: .4byte 0x00002cac +_080BDE10: .4byte gUnknown_83EDFF8 +_080BDE14: .4byte 0x00002cb8 +_080BDE18: .4byte 0x0000ffff +_080BDE1C: .4byte 0x00002cc4 +_080BDE20: .4byte 0x00002cd0 +_080BDE24: .4byte 0x00002f10 + thumb_func_end sub_80BDD34 + + thumb_func_start sub_80BDE28 +sub_80BDE28: @ 80BDE28 + push {lr} + bl sub_8143DA8 + ldr r1, _080BDE40 @ =0x0000ffff + adds r2, r1, 0 + adds r1, r0, 0x6 +_080BDE34: + strh r2, [r1] + subs r1, 0x2 + cmp r1, r0 + bge _080BDE34 + pop {r0} + bx r0 + .align 2, 0 +_080BDE40: .4byte 0x0000ffff + thumb_func_end sub_80BDE28 + + thumb_func_start sub_80BDE44 +sub_80BDE44: @ 80BDE44 + push {r4,lr} + ldr r4, _080BDE60 @ =gUnknown_20399BC + ldr r0, _080BDE64 @ =0x00003ba4 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _080BDE68 + bl sub_80BDE88 + bl sub_80BDFF8 + movs r0, 0x1 + b _080BDE6A + .align 2, 0 +_080BDE60: .4byte gUnknown_20399BC +_080BDE64: .4byte 0x00003ba4 +_080BDE68: + movs r0, 0 +_080BDE6A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BDE44 + + thumb_func_start sub_80BDE70 +sub_80BDE70: @ 80BDE70 + push {lr} + ldr r0, _080BDE84 @ =gUnknown_20399BC + ldr r0, [r0] + cmp r0, 0 + beq _080BDE7E + bl sub_8002BC4 +_080BDE7E: + pop {r0} + bx r0 + .align 2, 0 +_080BDE84: .4byte gUnknown_20399BC + thumb_func_end sub_80BDE70 + + thumb_func_start sub_80BDE88 +sub_80BDE88: @ 80BDE88 + push {r4,lr} + ldr r4, _080BDF30 @ =gUnknown_20399BC + ldr r1, [r4] + movs r0, 0 + strh r0, [r1] + bl sub_8088E8C + lsls r0, 16 + cmp r0, 0 + beq _080BDEB0 + ldr r0, [r4] + ldrh r1, [r0] + adds r2, r1, 0x1 + strh r2, [r0] + lsls r1, 16 + lsrs r1, 15 + adds r0, 0x2 + adds r0, r1 + movs r1, 0x15 + strh r1, [r0] +_080BDEB0: + movs r3, 0x1 +_080BDEB2: + ldr r0, [r4] + ldrh r2, [r0] + adds r1, r2, 0x1 + strh r1, [r0] + lsls r2, 16 + lsrs r2, 15 + adds r0, 0x2 + adds r0, r2 + strh r3, [r0] + adds r3, 0x1 + cmp r3, 0x10 + ble _080BDEB2 + ldr r0, _080BDF34 @ =0x0000082c + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080BDF0C + ldr r0, _080BDF30 @ =gUnknown_20399BC + ldr r2, [r0] + ldrh r0, [r2] + adds r1, r0, 0x1 + strh r1, [r2] + lsls r0, 16 + lsrs r0, 15 + adds r3, r2, 0x2 + adds r0, r3, r0 + movs r1, 0x11 + strh r1, [r0] + ldrh r0, [r2] + adds r1, r0, 0x1 + strh r1, [r2] + lsls r0, 16 + lsrs r0, 15 + adds r0, r3, r0 + movs r1, 0x12 + strh r1, [r0] + ldrh r0, [r2] + adds r1, r0, 0x1 + strh r1, [r2] + lsls r0, 16 + lsrs r0, 15 + adds r3, r0 + movs r0, 0x13 + strh r0, [r3] +_080BDF0C: + bl sub_806E25C + cmp r0, 0 + beq _080BDF2A + ldr r0, _080BDF30 @ =gUnknown_20399BC + ldr r0, [r0] + ldrh r1, [r0] + adds r2, r1, 0x1 + strh r2, [r0] + lsls r1, 16 + lsrs r1, 15 + adds r0, 0x2 + adds r0, r1 + movs r1, 0 + strh r1, [r0] +_080BDF2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BDF30: .4byte gUnknown_20399BC +_080BDF34: .4byte 0x0000082c + thumb_func_end sub_80BDE88 + + thumb_func_start sub_80BDF38 +sub_80BDF38: @ 80BDF38 + ldr r0, _080BDF40 @ =gUnknown_20399BC + ldr r0, [r0] + ldrb r0, [r0] + bx lr + .align 2, 0 +_080BDF40: .4byte gUnknown_20399BC + thumb_func_end sub_80BDF38 + + thumb_func_start sub_80BDF44 +sub_80BDF44: @ 80BDF44 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080BDF60 @ =gUnknown_20399BC + ldr r1, [r0] + ldrh r0, [r1] + cmp r2, r0 + bcs _080BDF64 + lsls r0, r2, 1 + adds r1, 0x2 + adds r1, r0 + ldrb r0, [r1] + b _080BDF66 + .align 2, 0 +_080BDF60: .4byte gUnknown_20399BC +_080BDF64: + movs r0, 0x16 +_080BDF66: + pop {r1} + bx r1 + thumb_func_end sub_80BDF44 + + thumb_func_start sub_80BDF6C +sub_80BDF6C: @ 80BDF6C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsls r2, 16 + lsrs r5, r2, 16 + ldr r0, _080BDFAC @ =gUnknown_83EDF98 + lsrs r1, 22 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl sub_8008D84 + adds r1, r0, 0 + subs r4, r1, r4 + lsls r4, 16 + lsrs r0, r4, 16 + cmp r0, r5 + bcs _080BDFA0 + movs r2, 0 +_080BDF92: + strb r2, [r1] + adds r1, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080BDF92 +_080BDFA0: + movs r0, 0xFF + strb r0, [r1] + adds r0, r1, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080BDFAC: .4byte gUnknown_83EDF98 + thumb_func_end sub_80BDF6C + + thumb_func_start sub_80BDFB0 +sub_80BDFB0: @ 80BDFB0 + lsls r0, 24 + ldr r1, _080BDFBC @ =gUnknown_83EDF98 + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_080BDFBC: .4byte gUnknown_83EDF98 + thumb_func_end sub_80BDFB0 + + thumb_func_start sub_80BDFC0 +sub_80BDFC0: @ 80BDFC0 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + bl sub_80BD850 + adds r1, r0, 0 + subs r4, r1, r4 + lsls r4, 16 + lsrs r0, r4, 16 + cmp r0, r5 + bcs _080BDFEC + movs r2, 0 +_080BDFDE: + strb r2, [r1] + adds r1, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080BDFDE +_080BDFEC: + movs r0, 0xFF + strb r0, [r1] + adds r0, r1, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80BDFC0 + + thumb_func_start sub_80BDFF8 +sub_80BDFF8: @ 80BDFF8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r1, _080BE06C @ =gUnknown_300116C + movs r0, 0 + str r0, [r1] + mov r10, r0 +_080BE00A: + ldr r3, _080BE070 @ =gUnknown_83EDEC0 + ldr r2, [r1] + lsls r1, r2, 3 + adds r0, r3, 0x4 + adds r0, r1, r0 + ldr r4, [r0] + ldr r0, _080BE074 @ =gUnknown_300117C + str r4, [r0] + adds r1, r3 + ldr r0, [r1] + ldr r1, _080BE078 @ =gUnknown_3001184 + str r0, [r1] + ldr r0, _080BE07C @ =gUnknown_20399BC + ldr r0, [r0] + lsls r2, 1 + adds r0, 0x2E + adds r0, r2 + mov r2, r10 + strh r2, [r0] + ldr r5, _080BE080 @ =gUnknown_3001178 + mov r3, r10 + str r3, [r5] + ldr r0, _080BE084 @ =gUnknown_3001170 + str r3, [r0] + cmp r10, r4 + blt _080BE040 + b _080BE13C +_080BE040: + ldr r1, _080BE088 @ =gUnknown_3001180 + mov r9, r1 + adds r2, r0, 0 + mov r8, r2 +_080BE048: + ldr r3, _080BE078 @ =gUnknown_3001184 + ldr r2, [r3] + ldrh r0, [r2] + ldr r1, _080BE08C @ =0x0000ffff + cmp r0, r1 + bne _080BE0E4 + adds r1, r2, 0x2 + str r1, [r3] + ldrh r0, [r2, 0x2] + mov r2, r9 + str r0, [r2] + adds r1, 0x2 + str r1, [r3] + mov r3, r8 + ldr r0, [r3] + adds r0, 0x2 + str r0, [r3] + b _080BE0EA + .align 2, 0 +_080BE06C: .4byte gUnknown_300116C +_080BE070: .4byte gUnknown_83EDEC0 +_080BE074: .4byte gUnknown_300117C +_080BE078: .4byte gUnknown_3001184 +_080BE07C: .4byte gUnknown_20399BC +_080BE080: .4byte gUnknown_3001178 +_080BE084: .4byte gUnknown_3001170 +_080BE088: .4byte gUnknown_3001180 +_080BE08C: .4byte 0x0000ffff +_080BE090: + ldr r0, _080BE0D4 @ =gUnknown_20399BC + ldr r4, [r0] + ldr r0, _080BE0D8 @ =gUnknown_3001178 + ldr r5, [r0] + lsls r1, r5, 1 + ldr r0, _080BE0DC @ =gUnknown_300116C + ldr r3, [r0] + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 3 + subs r0, r3 + lsls r0, 2 + adds r1, r0 + adds r2, r4, 0 + adds r2, 0x64 + adds r2, r1 + ldr r0, [r6] + ldr r1, [r7] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + adds r5, 0x1 + ldr r1, _080BE0D8 @ =gUnknown_3001178 + str r5, [r1] + lsls r3, 1 + adds r4, 0x2E + adds r4, r3 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldr r4, _080BE0E0 @ =gUnknown_3001180 + b _080BE120 + .align 2, 0 +_080BE0D4: .4byte gUnknown_20399BC +_080BE0D8: .4byte gUnknown_3001178 +_080BE0DC: .4byte gUnknown_300116C +_080BE0E0: .4byte gUnknown_3001180 +_080BE0E4: + movs r0, 0x1 + mov r2, r9 + str r0, [r2] +_080BE0EA: + ldr r4, _080BE158 @ =gUnknown_3001180 + ldr r1, _080BE15C @ =gUnknown_3001174 + mov r3, r10 + str r3, [r1] + ldr r0, [r4] + cmp r10, r0 + bge _080BE120 + adds r6, r1, 0 + ldr r7, _080BE160 @ =gUnknown_3001184 + ldr r4, _080BE158 @ =gUnknown_3001180 +_080BE0FE: + ldr r0, [r6] + ldr r1, [r7] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_80BE440 + lsls r0, 24 + cmp r0, 0 + bne _080BE090 + ldr r1, [r6] + adds r1, 0x1 + str r1, [r6] + mov r2, r9 + ldr r0, [r2] + cmp r1, r0 + blt _080BE0FE +_080BE120: + ldr r2, [r4] + lsls r1, r2, 1 + ldr r3, _080BE160 @ =gUnknown_3001184 + ldr r0, [r3] + adds r0, r1 + str r0, [r3] + mov r0, r8 + ldr r1, [r0] + adds r1, r2 + str r1, [r0] + ldr r0, _080BE164 @ =gUnknown_300117C + ldr r0, [r0] + cmp r1, r0 + blt _080BE048 +_080BE13C: + ldr r1, _080BE168 @ =gUnknown_300116C + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + cmp r0, 0x1A + bgt _080BE14A + b _080BE00A +_080BE14A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BE158: .4byte gUnknown_3001180 +_080BE15C: .4byte gUnknown_3001174 +_080BE160: .4byte gUnknown_3001184 +_080BE164: .4byte gUnknown_300117C +_080BE168: .4byte gUnknown_300116C + thumb_func_end sub_80BDFF8 + + thumb_func_start sub_80BE16C +sub_80BE16C: @ 80BE16C + push {lr} + lsls r1, 16 + lsrs r1, 16 + cmp r0, 0 + bne _080BE17E + adds r0, r1, 0 + bl sub_80BE1E8 + b _080BE184 +_080BE17E: + adds r0, r1, 0 + bl sub_80BE2F8 +_080BE184: + ldr r1, _080BE194 @ =gUnknown_20399BC + ldr r1, [r1] + ldr r2, _080BE198 @ =0x00003ba0 + adds r1, r2 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080BE194: .4byte gUnknown_20399BC +_080BE198: .4byte 0x00003ba0 + thumb_func_end sub_80BE16C + + thumb_func_start sub_80BE19C +sub_80BE19C: @ 80BE19C + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _080BE1BC @ =gUnknown_20399BC + ldr r1, [r0] + ldr r3, _080BE1C0 @ =0x00003ba0 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r2, r0 + bcs _080BE1C8 + lsls r0, r2, 1 + ldr r2, _080BE1C4 @ =0x00003984 + adds r1, r2 + adds r1, r0 + ldrh r0, [r1] + b _080BE1CA + .align 2, 0 +_080BE1BC: .4byte gUnknown_20399BC +_080BE1C0: .4byte 0x00003ba0 +_080BE1C4: .4byte 0x00003984 +_080BE1C8: + ldr r0, _080BE1D0 @ =0x0000ffff +_080BE1CA: + pop {r1} + bx r1 + .align 2, 0 +_080BE1D0: .4byte 0x0000ffff + thumb_func_end sub_80BE19C + + thumb_func_start sub_80BE1D4 +sub_80BE1D4: @ 80BE1D4 + ldr r0, _080BE1E0 @ =gUnknown_20399BC + ldr r0, [r0] + ldr r1, _080BE1E4 @ =0x00003ba0 + adds r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_080BE1E0: .4byte gUnknown_20399BC +_080BE1E4: .4byte 0x00003ba0 + thumb_func_end sub_80BE1D4 + + thumb_func_start sub_80BE1E8 +sub_80BE1E8: @ 80BE1E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _080BE270 @ =gUnknown_83ECED4 + lsls r0, r2, 3 + adds r0, r1 + ldrh r7, [r0, 0x4] + cmp r2, 0 + beq _080BE20E + cmp r2, 0x15 + beq _080BE20E + cmp r2, 0x12 + beq _080BE20E + cmp r2, 0x13 + bne _080BE280 +_080BE20E: + lsls r0, r2, 3 + adds r0, r1 + ldr r0, [r0] + mov r10, r0 + movs r5, 0 + movs r6, 0 + cmp r6, r7 + bcs _080BE2DC + movs r0, 0x7F + ands r0, r2 + lsls r0, 9 + mov r9, r0 + lsls r2, 24 + mov r8, r2 +_080BE22A: + lsls r0, r5, 1 + mov r1, r10 + adds r4, r0, r1 + ldrh r0, [r4] + mov r2, r8 + lsrs r1, r2, 24 + bl sub_80BE3A4 + lsls r0, 24 + cmp r0, 0 + beq _080BE262 + ldr r0, _080BE274 @ =gUnknown_20399BC + ldr r2, [r0] + adds r1, r6, 0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 1 + ldr r3, _080BE278 @ =0x00003984 + adds r2, r3 + adds r2, r1 + ldrh r0, [r4] + ldr r3, _080BE27C @ =0x000001ff + adds r1, r3, 0 + ands r0, r1 + mov r1, r9 + orrs r0, r1 + strh r0, [r2] +_080BE262: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r7 + bcc _080BE22A + b _080BE2DC + .align 2, 0 +_080BE270: .4byte gUnknown_83ECED4 +_080BE274: .4byte gUnknown_20399BC +_080BE278: .4byte 0x00003984 +_080BE27C: .4byte 0x000001ff +_080BE280: + ldr r0, [r0] + mov r10, r0 + movs r5, 0 + movs r6, 0 + cmp r6, r7 + bcs _080BE2DC + movs r0, 0x7F + ands r0, r2 + lsls r0, 9 + mov r9, r0 + lsls r2, 24 + mov r8, r2 +_080BE298: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + add r0, r10 + ldrh r4, [r0, 0x4] + adds r0, r4, 0 + mov r2, r8 + lsrs r1, r2, 24 + bl sub_80BE3A4 + lsls r0, 24 + cmp r0, 0 + beq _080BE2D2 + ldr r0, _080BE2EC @ =gUnknown_20399BC + ldr r2, [r0] + adds r1, r6, 0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 1 + ldr r3, _080BE2F0 @ =0x00003984 + adds r2, r3 + adds r2, r1 + ldr r1, _080BE2F4 @ =0x000001ff + adds r0, r1, 0 + ands r4, r0 + mov r3, r9 + orrs r4, r3 + strh r4, [r2] +_080BE2D2: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r7 + bcc _080BE298 +_080BE2DC: + adds r0, r6, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080BE2EC: .4byte gUnknown_20399BC +_080BE2F0: .4byte 0x00003984 +_080BE2F4: .4byte 0x000001ff + thumb_func_end sub_80BE1E8 + + thumb_func_start sub_80BE2F8 +sub_80BE2F8: @ 80BE2F8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r1, r0, 16 + movs r4, 0 + movs r6, 0 + ldr r3, _080BE364 @ =gUnknown_20399BC + ldr r0, [r3] + lsls r5, r1, 1 + adds r0, 0x2E + adds r0, r5 + ldrh r0, [r0] + cmp r6, r0 + bcs _080BE358 + mov r8, r3 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 3 + subs r0, r1 + lsls r7, r0, 2 + ldr r0, _080BE368 @ =0x00003984 + mov r12, r0 +_080BE326: + mov r0, r8 + ldr r3, [r0] + adds r1, r6, 0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 1 + mov r0, r12 + adds r2, r3, r0 + adds r2, r1 + lsls r1, r4, 1 + adds r1, r7 + adds r0, r3, 0 + adds r0, 0x64 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r3, 0x2E + adds r3, r5 + ldrh r3, [r3] + cmp r4, r3 + bcc _080BE326 +_080BE358: + adds r0, r6, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080BE364: .4byte gUnknown_20399BC +_080BE368: .4byte 0x00003984 + thumb_func_end sub_80BE2F8 + + thumb_func_start sub_80BE36C +sub_80BE36C: @ 80BE36C + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r0, _080BE390 @ =gUnknown_20399BC + ldr r0, [r0] + ldrh r1, [r0] + cmp r2, r1 + bge _080BE39C + adds r4, r3, 0 + adds r3, r1, 0 + adds r1, r0, 0x2 +_080BE384: + ldrh r0, [r1] + cmp r0, r4 + bne _080BE394 + movs r0, 0x1 + b _080BE39E + .align 2, 0 +_080BE390: .4byte gUnknown_20399BC +_080BE394: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, r3 + blt _080BE384 +_080BE39C: + movs r0, 0 +_080BE39E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BE36C + + thumb_func_start sub_80BE3A4 +sub_80BE3A4: @ 80BE3A4 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r0, r1, 24 + cmp r0, 0x13 + bgt _080BE3BC + cmp r0, 0x12 + bge _080BE3F6 + cmp r0, 0 + beq _080BE3D6 + b _080BE3FA +_080BE3BC: + cmp r0, 0x15 + bne _080BE3FA + adds r0, r4, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8088E74 + lsls r0, 24 + lsrs r0, 24 + b _080BE40C +_080BE3D6: + adds r0, r4, 0 + bl sub_80BE418 + cmp r0, 0 + beq _080BE3F6 + adds r0, r4, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8088E74 + lsls r0, 24 + lsrs r0, 24 + b _080BE40C +_080BE3F6: + movs r0, 0x1 + b _080BE40C +_080BE3FA: + ldr r1, _080BE414 @ =gUnknown_83ECED4 + lsls r0, 3 + adds r0, r1 + ldr r1, [r0] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x8] +_080BE40C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080BE414: .4byte gUnknown_83ECED4 + thumb_func_end sub_80BE3A4 + + thumb_func_start sub_80BE418 +sub_80BE418: @ 80BE418 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r1, _080BE42C @ =gUnknown_83EE004 +_080BE422: + ldrh r0, [r1] + cmp r0, r3 + bne _080BE430 + movs r0, 0x1 + b _080BE43A + .align 2, 0 +_080BE42C: .4byte gUnknown_83EE004 +_080BE430: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0 + beq _080BE422 + movs r0, 0 +_080BE43A: + pop {r1} + bx r1 + thumb_func_end sub_80BE418 + + thumb_func_start sub_80BE440 +sub_80BE440: @ 80BE440 + push {r4,r5,lr} + lsls r0, 16 + lsrs r5, r0, 25 + lsls r0, 7 + lsrs r4, r0, 23 + adds r0, r5, 0 + bl sub_80BE36C + lsls r0, 24 + cmp r0, 0 + beq _080BE464 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80BE3A4 + lsls r0, 24 + lsrs r0, 24 + b _080BE466 +_080BE464: + movs r0, 0 +_080BE466: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80BE440 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s new file mode 100644 index 000000000..2e1a8341b --- /dev/null +++ b/asm/egg_hatch.s @@ -0,0 +1,1820 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8046BFC +sub_8046BFC: @ 8046BFC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x50 + adds r6, r0, 0 + adds r5, r1, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x3C] + movs r4, 0 + add r7, sp, 0x18 + movs r0, 0x31 + add r0, sp + mov r10, r0 + mov r1, sp + adds r1, 0x32 + str r1, [sp, 0x40] + mov r0, sp + adds r0, 0x34 + str r0, [sp, 0x48] + add r1, sp, 0x30 + mov r9, r1 + subs r0, 0x1 + str r0, [sp, 0x44] + mov r1, sp + adds r1, 0x38 + str r1, [sp, 0x4C] +_08046C3C: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + lsls r1, r4, 1 + add r1, sp + adds r1, 0x10 + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08046C3C + adds r0, r6, 0 + movs r1, 0 + bl sub_803FBE8 + mov r8, r0 + movs r4, 0 +_08046C64: + adds r1, r4, 0 + adds r1, 0x27 + adds r0, r6, 0 + bl sub_803FBE8 + lsls r1, r4, 2 + adds r1, r7, r1 + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _08046C64 + adds r0, r6, 0 + movs r1, 0x25 + bl sub_803FBE8 + mov r1, r10 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x8 + bl sub_803FBE8 + ldr r1, [sp, 0x40] + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x22 + bl sub_803FBE8 + str r0, [sp, 0x38] + adds r0, r6, 0 + movs r1, 0x50 + bl sub_803FBE8 + ldr r1, [sp, 0x48] + strb r0, [r1] + movs r0, 0x1 + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r5, 0 + ldr r1, [sp, 0x3C] + movs r2, 0x5 + movs r3, 0x20 + bl sub_803DA54 + movs r4, 0 +_08046CC8: + adds r1, r4, 0 + adds r1, 0xD + lsls r0, r4, 1 + mov r2, sp + adds r2, r0 + adds r2, 0x10 + adds r0, r5, 0 + bl sub_804037C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08046CC8 + movs r4, 0 +_08046CE6: + adds r1, r4, 0 + adds r1, 0x27 + lsls r2, r4, 2 + adds r2, r7, r2 + adds r0, r5, 0 + bl sub_804037C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _08046CE6 + movs r0, 0x2 + mov r1, r9 + strb r0, [r1] + adds r0, r5, 0 + movs r1, 0x3 + mov r2, r9 + bl sub_804037C + adds r0, r5, 0 + movs r1, 0x25 + mov r2, r10 + bl sub_804037C + adds r0, r5, 0 + movs r1, 0x8 + ldr r2, [sp, 0x40] + bl sub_804037C + movs r0, 0x78 + ldr r1, [sp, 0x44] + strb r0, [r1] + adds r0, r5, 0 + movs r1, 0x20 + ldr r2, [sp, 0x44] + bl sub_804037C + adds r0, r5, 0 + movs r1, 0x22 + ldr r2, [sp, 0x4C] + bl sub_804037C + adds r0, r5, 0 + movs r1, 0x50 + ldr r2, [sp, 0x48] + bl sub_804037C + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + add sp, 0x50 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8046BFC + + thumb_func_start sub_8046D60 +sub_8046D60: @ 8046D60 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + add r4, sp, 0xC + movs r1, 0x46 + strb r1, [r4] + movs r1, 0x64 + adds r5, r0, 0 + muls r5, r1 + ldr r0, _08046E14 @ =gUnknown_2024284 + adds r5, r0 + ldr r1, _08046E18 @ =gUnknown_202402C + adds r0, r5, 0 + bl sub_8046BFC + adds r0, r5, 0 + movs r1, 0x2D + adds r2, r4, 0 + bl sub_804037C + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, sp + adds r1, r4, 0 + bl sub_8040FD0 + adds r0, r5, 0 + movs r1, 0x2 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + bl sub_8043298 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8088E74 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8088E74 + ldr r1, _08046E1C @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_80453C0 + mov r2, sp + adds r2, 0xE + movs r0, 0x4 + strh r0, [r2] + adds r0, r5, 0 + movs r1, 0x26 + bl sub_804037C + add r2, sp, 0x10 + movs r0, 0 + strh r0, [r2] + adds r0, r5, 0 + movs r1, 0x24 + bl sub_804037C + bl sub_8056260 + mov r2, sp + adds r2, 0x12 + strb r0, [r2] + adds r0, r5, 0 + movs r1, 0x23 + bl sub_804037C + adds r0, r5, 0 + bl sub_80442D8 + adds r0, r5, 0 + bl sub_803E47C + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08046E14: .4byte gUnknown_2024284 +_08046E18: .4byte gUnknown_202402C +_08046E1C: .4byte gUnknown_2021CD0 + thumb_func_end sub_8046D60 + + thumb_func_start sub_8046E20 +sub_8046E20: @ 8046E20 + push {lr} + ldr r0, _08046E30 @ =gUnknown_20370C0 + ldrb r0, [r0] + bl sub_8046D60 + pop {r0} + bx r0 + .align 2, 0 +_08046E30: .4byte gUnknown_20370C0 + thumb_func_end sub_8046E20 + + thumb_func_start sub_8046E34 +sub_8046E34: @ 8046E34 + push {r4,r5,lr} + sub sp, 0x20 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x8C + muls r1, r2 + adds r4, r0, r1 + adds r0, r4, 0 + mov r1, sp + bl sub_80453E0 + adds r0, r4, 0 + adds r0, 0x70 + ldrh r0, [r0] + cmp r0, 0 + beq _08046EA0 + adds r5, r4, 0 + adds r5, 0x7C + mov r0, sp + adds r1, r5, 0 + bl sub_8008E28 + adds r4, 0x74 + cmp r0, 0 + bne _08046E74 + ldr r0, _08046E90 @ =gUnknown_300500C + ldr r0, [r0] + adds r1, r4, 0 + bl sub_8008E28 + cmp r0, 0 + beq _08046EA0 +_08046E74: + ldr r0, _08046E94 @ =gUnknown_2021CD0 + mov r1, sp + bl sub_8008D84 + ldr r0, _08046E98 @ =gUnknown_2021CF0 + adds r1, r4, 0 + bl sub_8008D84 + ldr r0, _08046E9C @ =gUnknown_2021D04 + adds r1, r5, 0 + bl sub_8008D84 + movs r0, 0x1 + b _08046EA2 + .align 2, 0 +_08046E90: .4byte gUnknown_300500C +_08046E94: .4byte gUnknown_2021CD0 +_08046E98: .4byte gUnknown_2021CF0 +_08046E9C: .4byte gUnknown_2021D04 +_08046EA0: + movs r0, 0 +_08046EA2: + add sp, 0x20 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8046E34 + + thumb_func_start sub_8046EAC +sub_8046EAC: @ 8046EAC + push {lr} + ldr r0, _08046EC8 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 6 + adds r0, r1 + ldr r1, _08046ECC @ =gUnknown_20370C0 + ldrb r1, [r1] + bl sub_8046E34 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08046EC8: .4byte gUnknown_3005008 +_08046ECC: .4byte gUnknown_20370C0 + thumb_func_end sub_8046EAC + + thumb_func_start sub_8046ED0 +sub_8046ED0: @ 8046ED0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r3 + lsls r0, 24 + lsrs r3, r0, 24 + mov r8, r3 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r1, r2, 24 + adds r2, r1, 0 + movs r4, 0 + movs r7, 0 + movs r5, 0 + cmp r3, 0 + bne _08046EFE + movs r0, 0x64 + muls r1, r0 + ldr r0, _08046F18 @ =gUnknown_2024284 + adds r5, r1, r0 + movs r4, 0x1 +_08046EFE: + cmp r3, 0x1 + bne _08046F0E + movs r0, 0x64 + adds r1, r2, 0 + muls r1, r0 + ldr r0, _08046F18 @ =gUnknown_2024284 + adds r5, r1, r0 + movs r4, 0x3 +_08046F0E: + cmp r6, 0 + beq _08046F1C + cmp r6, 0x1 + beq _08046F6C + b _08046FA6 + .align 2, 0 +_08046F18: .4byte gUnknown_2024284 +_08046F1C: + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0 + bl sub_803FBE8 + adds r3, r0, 0 + lsls r0, r4, 3 + ldr r1, _08046F64 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _08046F68 @ =gUnknown_202401C + ldr r2, [r1] + mov r6, r8 + lsls r1, r6, 1 + adds r1, 0x1 + lsls r1, 2 + adds r2, 0x4 + adds r2, r1 + ldr r1, [r2] + adds r2, r4, 0 + bl sub_800ECC4 + adds r0, r5, 0 + bl sub_8044148 + bl sub_800EC28 + mov r0, r9 + strh r4, [r0] + b _08046FA6 + .align 2, 0 +_08046F64: .4byte gUnknown_82350AC +_08046F68: .4byte gUnknown_202401C +_08046F6C: + adds r0, r5, 0 + bl sub_8044148 + ldrh r0, [r0, 0x4] + adds r1, r4, 0 + bl sub_803F7D4 + ldr r0, _08046FB4 @ =gUnknown_20244DC + movs r1, 0x78 + movs r2, 0x46 + movs r3, 0x6 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _08046FB8 @ =gUnknown_202063C + lsls r1, r7, 4 + adds r1, r7 + lsls r1, 2 + adds r2, r1, r4 + adds r2, 0x3E + ldrb r0, [r2] + movs r3, 0x4 + orrs r0, r3 + strb r0, [r2] + adds r4, 0x1C + adds r1, r4 + ldr r0, _08046FBC @ =nullsub_8 + str r0, [r1] +_08046FA6: + adds r0, r7, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08046FB4: .4byte gUnknown_20244DC +_08046FB8: .4byte gUnknown_202063C +_08046FBC: .4byte nullsub_8 + thumb_func_end sub_8046ED0 + + thumb_func_start sub_8046FC0 +sub_8046FC0: @ 8046FC0 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_8046FC0 + + thumb_func_start sub_8046FD4 +sub_8046FD4: @ 8046FD4 + push {lr} + sub sp, 0x4 + bl sub_8069940 + ldr r0, _08047000 @ =sub_8047004 + movs r1, 0xA + bl sub_807741C + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_812B478 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08047000: .4byte sub_8047004 + thumb_func_end sub_8046FD4 + + thumb_func_start sub_8047004 +sub_8047004: @ 8047004 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08047034 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0804702C + bl sub_80563F0 + ldr r0, _08047038 @ =sub_8047044 + bl sub_8000544 + ldr r1, _0804703C @ =gUnknown_3005020 + ldr r0, _08047040 @ =sub_807DD24 + str r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_0804702C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08047034: .4byte gUnknown_2037AB8 +_08047038: .4byte sub_8047044 +_0804703C: .4byte gUnknown_3005020 +_08047040: .4byte sub_807DD24 + thumb_func_end sub_8047004 + + thumb_func_start sub_8047044 +sub_8047044: @ 8047044 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08047064 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x8 + bls _08047058 + b _0804727A +_08047058: + lsls r0, 2 + ldr r1, _08047068 @ =_0804706C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08047064: .4byte gUnknown_30030F0 +_08047068: .4byte _0804706C + .align 2, 0 +_0804706C: + .4byte _08047090 + .4byte _0804715C + .4byte _08047174 + .4byte _080471A8 + .4byte _080471C8 + .4byte _080471E0 + .4byte _080471F8 + .4byte _08047214 + .4byte _0804726C +_08047090: + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r4, _08047148 @ =gUnknown_3000E74 + movs r0, 0x14 + bl sub_8002B9C + str r0, [r4] + bl sub_80358D4 + ldr r2, [r4] + ldr r0, _0804714C @ =gUnknown_20370C0 + ldrh r0, [r0] + movs r1, 0 + strb r0, [r2, 0x4] + ldr r0, [r4] + strb r1, [r0, 0x7] + ldr r0, _08047150 @ =sub_8046FC0 + bl sub_80006F4 + bl sub_8071A68 + ldr r1, _08047154 @ =gUnknown_20370C2 + strh r0, [r1] + bl sub_80F6808 + movs r0, 0 + bl sub_8001618 + ldr r1, _08047158 @ =gUnknown_826019C + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0x7 + movs r2, 0x2 + bl sub_80019E4 + movs r0, 0x80 + lsls r0, 5 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + bl sub_8002C28 + bl sub_8070528 + bl sub_80088F0 + bl sub_8006B10 + bl sub_80773BC + bl sub_8087E64 + bl m4aSoundVSyncOn + b _0804724A + .align 2, 0 +_08047148: .4byte gUnknown_3000E74 +_0804714C: .4byte gUnknown_20370C0 +_08047150: .4byte sub_8046FC0 +_08047154: .4byte gUnknown_20370C2 +_08047158: .4byte gUnknown_826019C +_0804715C: + ldr r0, _0804716C @ =gUnknown_82601A4 + bl sub_8003B24 + ldr r0, _08047170 @ =gUnknown_3000E74 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x8] + b _0804724A + .align 2, 0 +_0804716C: .4byte gUnknown_82601A4 +_08047170: .4byte gUnknown_3000E74 +_08047174: + ldr r1, _0804719C @ =gUnknown_8D00000 + movs r0, 0 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _080471A0 @ =gUnknown_8D0051C + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r0, _080471A4 @ =gUnknown_8D004D8 + movs r1, 0 + movs r2, 0x20 + bl sub_80703A8 + b _0804724A + .align 2, 0 +_0804719C: .4byte gUnknown_8D00000 +_080471A0: .4byte gUnknown_8D0051C +_080471A4: .4byte gUnknown_8D004D8 +_080471A8: + ldr r0, _080471BC @ =gUnknown_826011C + bl sub_80086DC + ldr r0, _080471C0 @ =gUnknown_8260124 + bl sub_80086DC + ldr r0, _080471C4 @ =gUnknown_826012C + bl sub_8008928 + b _0804724A + .align 2, 0 +_080471BC: .4byte gUnknown_826011C +_080471C0: .4byte gUnknown_8260124 +_080471C4: .4byte gUnknown_826012C +_080471C8: + movs r0, 0 + bl sub_80020BC + ldr r0, _080471DC @ =gUnknown_3000E74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + bl sub_8046D60 + b _0804724A + .align 2, 0 +_080471DC: .4byte gUnknown_3000E74 +_080471E0: + ldr r0, _080471F4 @ =gUnknown_3000E74 + ldr r3, [r0] + ldrb r2, [r3, 0x4] + adds r3, 0xC + movs r0, 0 + movs r1, 0 + bl sub_8046ED0 + b _0804724A + .align 2, 0 +_080471F4: .4byte gUnknown_3000E74 +_080471F8: + ldr r4, _08047210 @ =gUnknown_3000E74 + ldr r3, [r4] + ldrb r2, [r3, 0x4] + adds r3, 0xC + movs r0, 0 + movs r1, 0x1 + bl sub_8046ED0 + ldr r1, [r4] + strb r0, [r1, 0x1] + b _0804724A + .align 2, 0 +_08047210: .4byte gUnknown_3000E74 +_08047214: + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _0804725C @ =gUnknown_8EAEA20 + movs r1, 0x10 + movs r2, 0xA0 + bl sub_80703EC + ldr r1, _08047260 @ =gUnknown_8EAEA80 + movs r2, 0xA1 + lsls r2, 5 + movs r0, 0x1 + movs r3, 0 + bl sub_80017D0 + ldr r1, _08047264 @ =gUnknown_826601C + movs r2, 0x80 + lsls r2, 5 + movs r0, 0x1 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC +_0804724A: + ldr r1, _08047268 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0804727A + .align 2, 0 +_0804725C: .4byte gUnknown_8EAEA20 +_08047260: .4byte gUnknown_8EAEA80 +_08047264: .4byte gUnknown_826601C +_08047268: .4byte gUnknown_30030F0 +_0804726C: + ldr r0, _08047298 @ =sub_8047338 + bl sub_8000544 + ldr r0, _0804729C @ =gUnknown_3000E74 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x2] +_0804727A: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08047298: .4byte sub_8047338 +_0804729C: .4byte gUnknown_3000E74 + thumb_func_end sub_8047044 + + thumb_func_start sub_80472A0 +sub_80472A0: @ 80472A0 + push {lr} + ldr r0, _080472D0 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080472D4 @ =gUnknown_2024284 + adds r0, r1 + ldr r2, _080472D8 @ =gUnknown_2021D04 + movs r1, 0x2 + bl sub_804037C + bl sub_80359AC + ldr r0, _080472DC @ =gUnknown_3000E74 + ldr r0, [r0] + bl sub_8002BC4 + bl sub_812B484 + ldr r0, _080472E0 @ =sub_80567DC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080472D0: .4byte gUnknown_20370C0 +_080472D4: .4byte gUnknown_2024284 +_080472D8: .4byte gUnknown_2021D04 +_080472DC: .4byte gUnknown_3000E74 +_080472E0: .4byte sub_80567DC + thumb_func_end sub_80472A0 + + thumb_func_start sub_80472E4 +sub_80472E4: @ 80472E4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08047330 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08047300 + bl sub_8071A94 +_08047300: + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _0804730E + ldr r0, _08047334 @ =0x00000107 + bl sub_80722A0 +_0804730E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x3C + ble _08047324 + movs r0, 0x84 + lsls r0, 1 + bl sub_80722A0 + adds r0, r5, 0 + bl sub_8077508 +_08047324: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08047330: .4byte gUnknown_3005090 +_08047334: .4byte 0x00000107 + thumb_func_end sub_80472E4 + + thumb_func_start sub_8047338 +sub_8047338: @ 8047338 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0xC + ldr r1, _0804735C @ =gUnknown_3000E74 + ldr r0, [r1] + ldrb r0, [r0, 0x2] + adds r5, r1, 0 + cmp r0, 0xC + bls _08047352 + b _08047684 +_08047352: + lsls r0, 2 + ldr r1, _08047360 @ =_08047364 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804735C: .4byte gUnknown_3000E74 +_08047360: .4byte _08047364 + .align 2, 0 +_08047364: + .4byte _08047398 + .4byte _080473E4 + .4byte _0804740C + .4byte _08047444 + .4byte _08047474 + .4byte _08047482 + .4byte _080474E8 + .4byte _080474F6 + .4byte _08047504 + .4byte _08047548 + .4byte _08047588 + .4byte _08047634 + .4byte _08047654 +_08047398: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080473D8 @ =gUnknown_8260134 + movs r1, 0x78 + movs r2, 0x4B + movs r3, 0x5 + bl sub_8006F8C + ldr r4, _080473DC @ =gUnknown_3000E74 + ldr r1, [r4] + strb r0, [r1] + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r1, [r4] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + ldr r0, _080473E0 @ =sub_80472E4 + movs r1, 0x5 + bl sub_807741C + b _08047684 + .align 2, 0 +_080473D8: .4byte gUnknown_8260134 +_080473DC: .4byte gUnknown_3000E74 +_080473E0: .4byte sub_80472E4 +_080473E4: + ldr r0, _08047408 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080473F6 + b _08047684 +_080473F6: + ldr r0, [r5] + ldrb r0, [r0, 0x8] + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + strb r4, [r0, 0x3] + ldr r1, [r5] + b _08047648 + .align 2, 0 +_08047408: .4byte gUnknown_2037AB8 +_0804740C: + ldr r1, [r5] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1E + bhi _0804741E + b _08047684 +_0804741E: + ldr r1, [r5] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + ldr r2, _0804743C @ =gUnknown_202063C + ldr r0, [r5] + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08047440 @ =sub_80476B0 + str r1, [r0] + b _08047684 + .align 2, 0 +_0804743C: .4byte gUnknown_202063C +_08047440: .4byte sub_80476B0 +_08047444: + ldr r2, _0804746C @ =gUnknown_202063C + ldr r3, [r5] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08047470 @ =nullsub_8 + cmp r1, r0 + beq _0804745E + b _08047684 +_0804745E: + ldrh r0, [r3, 0xC] + movs r1, 0 + bl sub_8071DF0 + ldr r1, [r5] + b _08047648 + .align 2, 0 +_0804746C: .4byte gUnknown_202063C +_08047470: .4byte nullsub_8 +_08047474: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _08047480 + b _08047684 +_08047480: + b _08047644 +_08047482: + ldr r0, [r5] + ldrb r1, [r0, 0x4] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080474D4 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080474D8 @ =gUnknown_2021CD0 + bl sub_80453C0 + ldr r4, _080474DC @ =gUnknown_2021D18 + ldr r1, _080474E0 @ =gUnknown_841B6FD + adds r0, r4, 0 + bl sub_8008FCC + ldr r0, [r5] + ldrb r0, [r0, 0x8] + movs r1, 0xFF + str r1, [sp] + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8047A9C + ldr r0, _080474E4 @ =0x00000103 + bl sub_8071C60 + ldr r1, [r5] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + ldr r0, [r5] + ldrb r0, [r0, 0x8] + bl sub_8003FA0 + ldr r0, [r5] + ldrb r0, [r0, 0x8] + movs r1, 0x3 + bl sub_8003F20 + b _08047684 + .align 2, 0 +_080474D4: .4byte gUnknown_2024284 +_080474D8: .4byte gUnknown_2021CD0 +_080474DC: .4byte gUnknown_2021D18 +_080474E0: .4byte gUnknown_841B6FD +_080474E4: .4byte 0x00000103 +_080474E8: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + bne _080474F4 + b _08047684 +_080474F4: + b _08047644 +_080474F6: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + bne _08047502 + b _08047684 +_08047502: + b _08047644 +_08047504: + ldr r0, [r5] + ldrb r1, [r0, 0x4] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08047538 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0804753C @ =gUnknown_2021CD0 + bl sub_80453C0 + ldr r4, _08047540 @ =gUnknown_2021D18 + ldr r1, _08047544 @ =gUnknown_841B716 + adds r0, r4, 0 + bl sub_8008FCC + ldr r0, [r5] + ldrb r0, [r0, 0x8] + movs r1, 0x1 + str r1, [sp] + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8047A9C + ldr r1, [r5] + b _08047648 + .align 2, 0 +_08047538: .4byte gUnknown_2024284 +_0804753C: .4byte gUnknown_2021CD0 +_08047540: .4byte gUnknown_2021D18 +_08047544: .4byte gUnknown_841B716 +_08047548: + ldr r0, [r5] + ldrb r0, [r0, 0x8] + bl sub_8002E64 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0 + beq _0804755A + b _08047684 +_0804755A: + ldr r0, [r5] + ldrb r0, [r0, 0x8] + movs r4, 0xA0 + lsls r4, 1 + adds r1, r4, 0 + movs r2, 0xE0 + bl sub_814FE40 + ldr r0, _08047584 @ =gUnknown_82601B4 + str r4, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + str r6, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r1, [r5] + b _08047648 + .align 2, 0 +_08047584: .4byte gUnknown_82601B4 +_08047588: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080475A8 + cmp r1, 0 + bgt _080475A2 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08047644 + b _08047684 +_080475A2: + cmp r1, 0x1 + beq _08047644 + b _08047684 +_080475A8: + ldr r0, _08047624 @ =gUnknown_3000E74 + mov r9, r0 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r6, _08047628 @ =gUnknown_2024284 + adds r0, r6 + ldr r1, _0804762C @ =gUnknown_2021D04 + mov r10, r1 + bl sub_80453C0 + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x4] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x4] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + bl sub_803F720 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r9 + ldr r0, [r1] + ldrb r0, [r0, 0x4] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + ldr r0, _08047630 @ =sub_80472A0 + str r0, [sp, 0x4] + movs r0, 0x3 + mov r1, r10 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_809D954 + b _08047684 + .align 2, 0 +_08047624: .4byte gUnknown_3000E74 +_08047628: .4byte gUnknown_2024284 +_0804762C: .4byte gUnknown_2021D04 +_08047630: .4byte sub_80472A0 +_08047634: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_08047644: + ldr r0, _08047650 @ =gUnknown_3000E74 + ldr r1, [r0] +_08047648: + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + b _08047684 + .align 2, 0 +_08047650: .4byte gUnknown_3000E74 +_08047654: + ldr r0, _080476A8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08047684 + ldr r0, [r5] + ldrb r0, [r0, 0x8] + bl sub_8003E3C + movs r0, 0 + bl sub_8001FD4 + movs r0, 0x1 + bl sub_8001FD4 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, _080476AC @ =sub_80567DC + bl sub_8000544 + bl sub_812B484 +_08047684: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080476A8: .4byte gUnknown_2037AB8 +_080476AC: .4byte sub_80567DC + thumb_func_end sub_8047338 + + thumb_func_start sub_80476B0 +sub_80476B0: @ 80476B0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080476D0 + ldr r0, _080476CC @ =sub_8047708 + str r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r4, 0x2E] + b _08047700 + .align 2, 0 +_080476CC: .4byte sub_8047708 +_080476D0: + ldrh r0, [r4, 0x30] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x1 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xF + bne _08047700 + movs r0, 0x17 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + bl sub_80479C8 +_08047700: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80476B0 + + thumb_func_start sub_8047708 +sub_8047708: @ 8047708 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _08047764 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _08047738 + ldr r0, _08047734 @ =sub_804776C + str r0, [r4, 0x1C] + strh r1, [r4, 0x2E] + strh r1, [r4, 0x32] + b _08047764 + .align 2, 0 +_08047734: .4byte sub_804776C +_08047738: + ldrh r0, [r4, 0x30] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x2 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xF + bne _08047764 + movs r0, 0x17 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C +_08047764: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8047708 + + thumb_func_start sub_804776C +sub_804776C: @ 804776C + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x32] + adds r0, 0x1 + movs r6, 0 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _08047826 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x26 + ble _080477E4 + ldr r0, _080477D0 @ =sub_804782C + str r0, [r4, 0x1C] + strh r6, [r4, 0x2E] + ldr r5, _080477D4 @ =gUnknown_3000E74 + ldr r0, [r5] + ldrb r1, [r0, 0x4] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080477D8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + ldr r4, _080477DC @ =gUnknown_202063C + ldr r3, [r5] + ldrb r2, [r3, 0x1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r6, [r1, 0x24] + ldrb r2, [r3, 0x1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldr r2, _080477E0 @ =gUnknown_82349CC + lsrs r0, 14 + adds r0, r2 + ldrb r0, [r0, 0x1] + strh r0, [r1, 0x26] + b _08047826 + .align 2, 0 +_080477D0: .4byte sub_804782C +_080477D4: .4byte gUnknown_3000E74 +_080477D8: .4byte gUnknown_2024284 +_080477DC: .4byte gUnknown_202063C +_080477E0: .4byte gUnknown_82349CC +_080477E4: + ldrh r0, [r4, 0x30] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x2 + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xF + bne _08047818 + movs r0, 0x17 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + bl sub_80479C8 + bl sub_80479C8 +_08047818: + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1E + bne _08047826 + movs r0, 0x17 + bl sub_80722CC +_08047826: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_804776C + + thumb_func_start sub_804782C +sub_804782C: @ 804782C + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + ble _08047846 + ldr r0, _0804784C @ =sub_8047850 + str r0, [r1, 0x1C] + movs r0, 0 + strh r0, [r1, 0x2E] +_08047846: + pop {r0} + bx r0 + .align 2, 0 +_0804784C: .4byte sub_8047850 + thumb_func_end sub_804782C + + thumb_func_start sub_8047850 +sub_8047850: @ 8047850 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08047870 + movs r1, 0x1 + negs r1, r1 + ldr r0, _080478C4 @ =0x0000ffff + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_08047870: + ldrh r0, [r5, 0x2E] + cmp r0, 0x3 + bhi _0804788C + movs r4, 0 +_08047878: + bl sub_80479C8 + lsls r0, r4, 16 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _08047878 +_0804788C: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + ldr r0, _080478C8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080478BA + movs r0, 0x6A + bl sub_80722CC + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080478CC @ =sub_80478D0 + str r0, [r5, 0x1C] + strh r4, [r5, 0x2E] +_080478BA: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080478C4: .4byte 0x0000ffff +_080478C8: .4byte gUnknown_2037AB8 +_080478CC: .4byte sub_80478D0 + thumb_func_end sub_8047850 + + thumb_func_start sub_80478D0 +sub_80478D0: @ 80478D0 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0804790C + ldr r4, _08047960 @ =gUnknown_202063C + ldr r3, _08047964 @ =gUnknown_3000E74 + ldr r0, [r3] + ldrb r1, [r0, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_800843C +_0804790C: + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0x8 + bne _08047926 + movs r1, 0x1 + negs r1, r1 + ldr r0, _08047968 @ =0x0000ffff + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_08047926: + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x9 + bgt _08047944 + ldr r2, _08047960 @ =gUnknown_202063C + ldr r0, _08047964 @ =gUnknown_3000E74 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] +_08047944: + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0x28 + ble _08047952 + ldr r0, _0804796C @ =nullsub_8 + str r0, [r5, 0x1C] +_08047952: + adds r0, r1, 0x1 + strh r0, [r5, 0x2E] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08047960: .4byte gUnknown_202063C +_08047964: .4byte gUnknown_3000E74 +_08047968: .4byte 0x0000ffff +_0804796C: .4byte nullsub_8 + thumb_func_end sub_80478D0 + + thumb_func_start sub_8047970 +sub_8047970: @ 8047970 + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x32] + ldrh r3, [r2, 0x38] + adds r0, r1, r3 + strh r0, [r2, 0x38] + movs r4, 0x36 + ldrsh r0, [r2, r4] + cmp r0, 0 + bge _0804798E + adds r0, 0xFF +_0804798E: + asrs r0, 8 + strh r0, [r2, 0x24] + movs r3, 0x38 + ldrsh r0, [r2, r3] + cmp r0, 0 + bge _0804799C + adds r0, 0xFF +_0804799C: + asrs r0, 8 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x34] + adds r3, r1, r0 + strh r3, [r2, 0x32] + movs r4, 0x22 + ldrsh r1, [r2, r4] + movs r4, 0x26 + ldrsh r0, [r2, r4] + adds r0, r1, r0 + adds r1, 0x14 + cmp r0, r1 + ble _080479C2 + lsls r0, r3, 16 + cmp r0, 0 + ble _080479C2 + adds r0, r2, 0 + bl sub_8007280 +_080479C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8047970 + + thumb_func_start sub_80479C8 +sub_80479C8: @ 80479C8 + push {r4-r6,lr} + sub sp, 0x8 + ldr r2, _08047A14 @ =gUnknown_82601BC + ldr r0, _08047A18 @ =gUnknown_3000E74 + ldr r6, [r0] + ldrb r3, [r6, 0x7] + lsls r0, r3, 2 + adds r1, r0, r2 + ldrh r5, [r1] + adds r2, 0x2 + adds r0, r2 + ldrh r4, [r0] + adds r3, 0x1 + strb r3, [r6, 0x7] + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsls r5, 16 + asrs r5, 16 + lsls r4, 16 + asrs r4, 16 + movs r0, 0x64 + str r0, [sp] + lsrs r1, 16 + str r1, [sp, 0x4] + movs r0, 0x78 + movs r1, 0x3C + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8047A1C + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08047A14: .4byte gUnknown_82601BC +_08047A18: .4byte gUnknown_3000E74 + thumb_func_end sub_80479C8 + + thumb_func_start sub_8047A1C +sub_8047A1C: @ 8047A1C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + mov r8, r3 + ldr r0, [sp, 0x1C] + mov r9, r0 + ldr r1, [sp, 0x20] + mov r10, r1 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 16 + lsrs r6, 16 + mov r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r1, r9 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _08047A94 @ =gUnknown_8260184 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x4 + bl sub_8006F8C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08047A98 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x30] + mov r1, r8 + strh r1, [r0, 0x32] + mov r1, r9 + strh r1, [r0, 0x34] + mov r1, r10 + bl sub_800838C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08047A94: .4byte gUnknown_8260184 +_08047A98: .4byte gUnknown_202063C + thumb_func_end sub_8047A1C + + thumb_func_start sub_8047A9C +sub_8047A9C: @ 8047A9C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x18 + adds r5, r0, 0 + mov r8, r1 + adds r6, r2, 0 + ldr r4, [sp, 0x2C] + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0xFF + str r3, [sp, 0x14] + bl sub_800445C + ldr r2, _08047B08 @ =gUnknown_3000E74 + ldr r1, [r2] + movs r0, 0 + strb r0, [r1, 0xE] + ldr r1, [r2] + movs r0, 0x5 + strb r0, [r1, 0xF] + ldr r1, [r2] + movs r0, 0x6 + strb r0, [r1, 0x10] + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + ldr r0, [r2] + adds r0, 0xE + str r0, [sp, 0x8] + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + mov r0, r8 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x3 + adds r2, r6, 0 + ldr r3, [sp, 0x14] + bl sub_812E5A4 + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08047B08: .4byte gUnknown_3000E74 + thumb_func_end sub_8047A9C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/event_data.s b/asm/event_data.s new file mode 100644 index 000000000..2de62371c --- /dev/null +++ b/asm/event_data.s @@ -0,0 +1,867 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_806E0D0 +sub_806E0D0: @ 806E0D0 + push {r4,lr} + ldr r4, _0806E108 @ =gUnknown_3005008 + ldr r0, [r4] + movs r1, 0xEE + lsls r1, 4 + adds r0, r1 + movs r2, 0x90 + lsls r2, 1 + movs r1, 0 + bl memset + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 5 + adds r0, r1 + movs r2, 0x80 + lsls r2, 2 + movs r1, 0 + bl memset + ldr r0, _0806E10C @ =gUnknown_20370E0 + movs r1, 0 + movs r2, 0x10 + bl memset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806E108: .4byte gUnknown_3005008 +_0806E10C: .4byte gUnknown_20370E0 + thumb_func_end sub_806E0D0 + + thumb_func_start sub_806E110 +sub_806E110: @ 806E110 + push {lr} + ldr r0, _0806E150 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xEE + lsls r1, 4 + adds r2, r0, r1 + movs r1, 0 + str r1, [r2] + movs r1, 0x80 + lsls r1, 5 + adds r0, r1 + movs r1, 0 + movs r2, 0x20 + bl memset + ldr r0, _0806E154 @ =0x00000803 + bl sub_806E6A8 + ldr r0, _0806E158 @ =0x00000804 + bl sub_806E6A8 + ldr r0, _0806E15C @ =0x00000805 + bl sub_806E6A8 + ldr r0, _0806E160 @ =0x00000807 + bl sub_806E6A8 + ldr r0, _0806E164 @ =0x00000842 + bl sub_806E6A8 + pop {r0} + bx r0 + .align 2, 0 +_0806E150: .4byte gUnknown_3005008 +_0806E154: .4byte 0x00000803 +_0806E158: .4byte 0x00000804 +_0806E15C: .4byte 0x00000805 +_0806E160: .4byte 0x00000807 +_0806E164: .4byte 0x00000842 + thumb_func_end sub_806E110 + + thumb_func_start sub_806E168 +sub_806E168: @ 806E168 + push {lr} + ldr r0, _0806E184 @ =0x0000403c + bl sub_806E454 + ldr r1, _0806E188 @ =gUnknown_300500C + ldr r2, [r1] + movs r1, 0 + strb r1, [r2, 0x1A] + strh r1, [r0] + ldr r0, _0806E18C @ =0x00000838 + bl sub_806E6A8 + pop {r0} + bx r0 + .align 2, 0 +_0806E184: .4byte 0x0000403c +_0806E188: .4byte gUnknown_300500C +_0806E18C: .4byte 0x00000838 + thumb_func_end sub_806E168 + + thumb_func_start sub_806E190 +sub_806E190: @ 806E190 + push {lr} + ldr r0, _0806E1B0 @ =0x0000403c + bl sub_806E454 + ldr r1, _0806E1B4 @ =gUnknown_300500C + ldr r2, [r1] + movs r1, 0xDA + strb r1, [r2, 0x1A] + ldr r2, _0806E1B8 @ =0x00000302 + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _0806E1BC @ =0x00000838 + bl sub_806E680 + pop {r0} + bx r0 + .align 2, 0 +_0806E1B0: .4byte 0x0000403c +_0806E1B4: .4byte gUnknown_300500C +_0806E1B8: .4byte 0x00000302 +_0806E1BC: .4byte 0x00000838 + thumb_func_end sub_806E190 + + thumb_func_start sub_806E1C0 +sub_806E1C0: @ 806E1C0 + push {lr} + ldr r0, _0806E1EC @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x1A] + cmp r0, 0xDA + bne _0806E1FC + ldr r0, _0806E1F0 @ =0x0000403c + bl sub_806E568 + lsls r0, 16 + ldr r1, _0806E1F4 @ =0x03020000 + cmp r0, r1 + bne _0806E1FC + ldr r0, _0806E1F8 @ =0x00000838 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0806E1FC + movs r0, 0x1 + b _0806E1FE + .align 2, 0 +_0806E1EC: .4byte gUnknown_300500C +_0806E1F0: .4byte 0x0000403c +_0806E1F4: .4byte 0x03020000 +_0806E1F8: .4byte 0x00000838 +_0806E1FC: + movs r0, 0 +_0806E1FE: + pop {r1} + bx r1 + thumb_func_end sub_806E1C0 + + thumb_func_start sub_806E204 +sub_806E204: @ 806E204 + push {lr} + ldr r0, _0806E224 @ =0x0000404e + bl sub_806E454 + ldr r1, _0806E228 @ =gUnknown_300500C + ldr r2, [r1] + movs r1, 0 + strb r1, [r2, 0x1B] + strh r1, [r0] + movs r0, 0x84 + lsls r0, 4 + bl sub_806E6A8 + pop {r0} + bx r0 + .align 2, 0 +_0806E224: .4byte 0x0000404e +_0806E228: .4byte gUnknown_300500C + thumb_func_end sub_806E204 + + thumb_func_start sub_806E22C +sub_806E22C: @ 806E22C + push {lr} + ldr r0, _0806E250 @ =0x0000404e + bl sub_806E454 + ldr r1, _0806E254 @ =gUnknown_300500C + ldr r2, [r1] + movs r1, 0xB9 + strb r1, [r2, 0x1B] + ldr r2, _0806E258 @ =0x00006258 + adds r1, r2, 0 + strh r1, [r0] + movs r0, 0x84 + lsls r0, 4 + bl sub_806E680 + pop {r0} + bx r0 + .align 2, 0 +_0806E250: .4byte 0x0000404e +_0806E254: .4byte gUnknown_300500C +_0806E258: .4byte 0x00006258 + thumb_func_end sub_806E22C + + thumb_func_start sub_806E25C +sub_806E25C: @ 806E25C + push {lr} + ldr r0, _0806E288 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x1B] + cmp r0, 0xB9 + bne _0806E294 + ldr r0, _0806E28C @ =0x0000404e + bl sub_806E568 + lsls r0, 16 + ldr r1, _0806E290 @ =0x62580000 + cmp r0, r1 + bne _0806E294 + movs r0, 0x84 + lsls r0, 4 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0806E294 + movs r0, 0x1 + b _0806E296 + .align 2, 0 +_0806E288: .4byte gUnknown_300500C +_0806E28C: .4byte 0x0000404e +_0806E290: .4byte 0x62580000 +_0806E294: + movs r0, 0 +_0806E296: + pop {r1} + bx r1 + thumb_func_end sub_806E25C + + thumb_func_start sub_806E29C +sub_806E29C: @ 806E29C + push {lr} + ldr r0, _0806E2A8 @ =0x00000839 + bl sub_806E6A8 + pop {r0} + bx r0 + .align 2, 0 +_0806E2A8: .4byte 0x00000839 + thumb_func_end sub_806E29C + + thumb_func_start sub_806E2AC +sub_806E2AC: @ 806E2AC + push {lr} + ldr r0, _0806E2B8 @ =0x00000839 + bl sub_806E680 + pop {r0} + bx r0 + .align 2, 0 +_0806E2B8: .4byte 0x00000839 + thumb_func_end sub_806E2AC + + thumb_func_start sub_806E2BC +sub_806E2BC: @ 806E2BC + push {lr} + ldr r0, _0806E2CC @ =0x00000839 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0806E2CC: .4byte 0x00000839 + thumb_func_end sub_806E2BC + + thumb_func_start sub_806E2D0 +sub_806E2D0: @ 806E2D0 + push {lr} + movs r0, 0xF6 + lsls r0, 2 + bl sub_806E6A8 + ldr r0, _0806E340 @ =0x000003d9 + bl sub_806E6A8 + ldr r0, _0806E344 @ =0x000003da + bl sub_806E6A8 + ldr r0, _0806E348 @ =0x000003db + bl sub_806E6A8 + movs r0, 0xF7 + lsls r0, 2 + bl sub_806E6A8 + ldr r0, _0806E34C @ =0x000003dd + bl sub_806E6A8 + ldr r0, _0806E350 @ =0x000003de + bl sub_806E6A8 + ldr r0, _0806E354 @ =0x000003df + bl sub_806E6A8 + movs r0, 0xF8 + lsls r0, 2 + bl sub_806E6A8 + ldr r0, _0806E358 @ =0x000003e1 + bl sub_806E6A8 + ldr r0, _0806E35C @ =0x000003e2 + bl sub_806E6A8 + ldr r0, _0806E360 @ =0x000003e3 + bl sub_806E6A8 + movs r0, 0xF9 + lsls r0, 2 + bl sub_806E6A8 + ldr r0, _0806E364 @ =0x000003e5 + bl sub_806E6A8 + ldr r0, _0806E368 @ =0x000003e6 + bl sub_806E6A8 + ldr r0, _0806E36C @ =0x000003e7 + bl sub_806E6A8 + pop {r0} + bx r0 + .align 2, 0 +_0806E340: .4byte 0x000003d9 +_0806E344: .4byte 0x000003da +_0806E348: .4byte 0x000003db +_0806E34C: .4byte 0x000003dd +_0806E350: .4byte 0x000003de +_0806E354: .4byte 0x000003df +_0806E358: .4byte 0x000003e1 +_0806E35C: .4byte 0x000003e2 +_0806E360: .4byte 0x000003e3 +_0806E364: .4byte 0x000003e5 +_0806E368: .4byte 0x000003e6 +_0806E36C: .4byte 0x000003e7 + thumb_func_end sub_806E2D0 + + thumb_func_start sub_806E370 +sub_806E370: @ 806E370 + push {lr} + ldr r0, _0806E3C0 @ =0x000040b5 + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3C4 @ =0x000040b6 + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3C8 @ =0x000040b7 + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3CC @ =0x000040b8 + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3D0 @ =0x000040b9 + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3D4 @ =0x000040ba + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3D8 @ =0x000040bb + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3DC @ =0x000040bc + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3E0 @ =0x00004024 + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_0806E3C0: .4byte 0x000040b5 +_0806E3C4: .4byte 0x000040b6 +_0806E3C8: .4byte 0x000040b7 +_0806E3CC: .4byte 0x000040b8 +_0806E3D0: .4byte 0x000040b9 +_0806E3D4: .4byte 0x000040ba +_0806E3D8: .4byte 0x000040bb +_0806E3DC: .4byte 0x000040bc +_0806E3E0: .4byte 0x00004024 + thumb_func_end sub_806E370 + + thumb_func_start sub_806E3E4 +sub_806E3E4: @ 806E3E4 + push {lr} + ldr r0, _0806E3F8 @ =0x00004032 + movs r1, 0 + bl sub_806E584 + ldr r0, _0806E3FC @ =0x00000837 + bl sub_806E6A8 + pop {r0} + bx r0 + .align 2, 0 +_0806E3F8: .4byte 0x00004032 +_0806E3FC: .4byte 0x00000837 + thumb_func_end sub_806E3E4 + + thumb_func_start sub_806E400 +sub_806E400: @ 806E400 + push {lr} + ldr r0, _0806E418 @ =0x00004032 + movs r1, 0x92 + lsls r1, 4 + bl sub_806E584 + ldr r0, _0806E41C @ =0x00000837 + bl sub_806E680 + pop {r0} + bx r0 + .align 2, 0 +_0806E418: .4byte 0x00004032 +_0806E41C: .4byte 0x00000837 + thumb_func_end sub_806E400 + + thumb_func_start sub_806E420 +sub_806E420: @ 806E420 + push {lr} + ldr r0, _0806E444 @ =0x00000837 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0806E44C + ldr r0, _0806E448 @ =0x00004032 + bl sub_806E568 + lsls r0, 16 + movs r1, 0x92 + lsls r1, 20 + cmp r0, r1 + bne _0806E44C + movs r0, 0x1 + b _0806E44E + .align 2, 0 +_0806E444: .4byte 0x00000837 +_0806E448: .4byte 0x00004032 +_0806E44C: + movs r0, 0 +_0806E44E: + pop {r1} + bx r1 + thumb_func_end sub_806E420 + + thumb_func_start sub_806E454 +sub_806E454: @ 806E454 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, r4, 0 + ldr r0, _0806E468 @ =0x00003fff + cmp r4, r0 + bhi _0806E46C + movs r0, 0 + b _0806E518 + .align 2, 0 +_0806E468: .4byte 0x00003fff +_0806E46C: + lsls r0, r4, 16 + cmp r0, 0 + blt _0806E50C + ldr r0, _0806E484 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806E488 + cmp r0, 0x1 + ble _0806E4EE + cmp r0, 0x2 + beq _0806E4B8 + b _0806E4EE + .align 2, 0 +_0806E484: .4byte gUnknown_3005E88 +_0806E488: + movs r0, 0 + adds r1, r4, 0 + bl sub_8112D40 + adds r2, r0, 0 + cmp r2, 0 + beq _0806E4EE + ldr r0, _0806E4B0 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r3, _0806E4B4 @ =0xffffc000 + adds r0, r4, r3 + lsls r0, 1 + movs r3, 0x80 + lsls r3, 5 + adds r1, r3 + adds r1, r0 + ldrh r0, [r2] + strh r0, [r1] + b _0806E4EE + .align 2, 0 +_0806E4B0: .4byte gUnknown_3005008 +_0806E4B4: .4byte 0xffffc000 +_0806E4B8: + ldr r0, _0806E4FC @ =0xffffc000 + adds r5, r4, r0 + lsls r0, r5, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_806E528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E4EE + ldr r0, _0806E500 @ =gUnknown_300507C + strh r5, [r0] + ldr r0, _0806E504 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0806E4FC @ =0xffffc000 + adds r0, r4, r2 + lsls r0, 1 + movs r3, 0x80 + lsls r3, 5 + adds r1, r3 + adds r1, r0 + ldrh r2, [r1] + movs r0, 0 + adds r1, r4, 0 + bl sub_8112DB0 +_0806E4EE: + ldr r0, _0806E504 @ =gUnknown_3005008 + lsls r1, r6, 1 + ldr r2, _0806E508 @ =0xffff9000 + adds r1, r2 + ldr r0, [r0] + adds r0, r1 + b _0806E518 + .align 2, 0 +_0806E4FC: .4byte 0xffffc000 +_0806E500: .4byte gUnknown_300507C +_0806E504: .4byte gUnknown_3005008 +_0806E508: .4byte 0xffff9000 +_0806E50C: + ldr r0, _0806E520 @ =gUnknown_815FD0C + ldr r3, _0806E524 @ =0xffff8000 + adds r1, r6, r3 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_0806E518: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806E520: .4byte gUnknown_815FD0C +_0806E524: .4byte 0xffff8000 + thumb_func_end sub_806E454 + + thumb_func_start sub_806E528 +sub_806E528: @ 806E528 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + adds r0, r2, 0 + lsls r1, 24 + cmp r1, 0 + bne _0806E554 + ldr r0, _0806E54C @ =0x0000022f + cmp r2, r0 + bls _0806E548 + ldr r1, _0806E550 @ =0xfffff800 + adds r0, r2, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1F + bhi _0806E562 +_0806E548: + movs r0, 0 + b _0806E564 + .align 2, 0 +_0806E54C: .4byte 0x0000022f +_0806E550: .4byte 0xfffff800 +_0806E554: + cmp r2, 0x2F + bls _0806E548 + subs r0, 0x50 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x63 + bls _0806E548 +_0806E562: + movs r0, 0x1 +_0806E564: + pop {r1} + bx r1 + thumb_func_end sub_806E528 + + thumb_func_start sub_806E568 +sub_806E568: @ 806E568 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_806E454 + cmp r0, 0 + beq _0806E57C + ldrh r0, [r0] + b _0806E57E +_0806E57C: + adds r0, r4, 0 +_0806E57E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806E568 + + thumb_func_start sub_806E584 +sub_806E584: @ 806E584 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + bl sub_806E454 + cmp r0, 0 + beq _0806E59C + strh r4, [r0] + movs r0, 0x1 + b _0806E59E +_0806E59C: + movs r0, 0 +_0806E59E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806E584 + + thumb_func_start sub_806E5A4 +sub_806E5A4: @ 806E5A4 + push {lr} + lsls r0, 24 + lsrs r0, 8 + ldr r1, _0806E5BC @ =0x40100000 + adds r0, r1 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0806E5BC: .4byte 0x40100000 + thumb_func_end sub_806E5A4 + + thumb_func_start sub_806E5C0 +sub_806E5C0: @ 806E5C0 + push {r4-r6,lr} + lsls r5, r0, 16 + lsrs r4, r5, 16 + adds r6, r4, 0 + cmp r4, 0 + bne _0806E5D0 + movs r0, 0 + b _0806E66E +_0806E5D0: + ldr r0, _0806E5E8 @ =0x00003fff + cmp r4, r0 + bhi _0806E65C + ldr r0, _0806E5EC @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806E5F0 + cmp r0, 0x1 + ble _0806E644 + cmp r0, 0x2 + beq _0806E618 + b _0806E644 + .align 2, 0 +_0806E5E8: .4byte 0x00003fff +_0806E5EC: .4byte gUnknown_3005E88 +_0806E5F0: + movs r0, 0x1 + adds r1, r4, 0 + bl sub_8112D40 + adds r2, r0, 0 + cmp r2, 0 + beq _0806E644 + ldr r0, _0806E614 @ =gUnknown_3005008 + ldr r0, [r0] + lsrs r1, r5, 19 + movs r3, 0xEE + lsls r3, 4 + adds r0, r3 + adds r0, r1 + ldrb r1, [r2] + strb r1, [r0] + b _0806E644 + .align 2, 0 +_0806E614: .4byte gUnknown_3005008 +_0806E618: + adds r0, r4, 0 + movs r1, 0 + bl sub_806E528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E644 + ldr r0, _0806E654 @ =gUnknown_300507C + strh r4, [r0] + ldr r0, _0806E658 @ =gUnknown_3005008 + ldr r0, [r0] + lsrs r1, r5, 19 + movs r2, 0xEE + lsls r2, 4 + adds r0, r2 + adds r0, r1 + ldrb r2, [r0] + movs r0, 0x1 + adds r1, r4, 0 + bl sub_8112DB0 +_0806E644: + ldr r0, _0806E658 @ =gUnknown_3005008 + lsrs r1, r6, 3 + movs r3, 0xEE + lsls r3, 4 + adds r1, r3 + ldr r0, [r0] + b _0806E66C + .align 2, 0 +_0806E654: .4byte gUnknown_300507C +_0806E658: .4byte gUnknown_3005008 +_0806E65C: + ldr r1, _0806E674 @ =0xffffc000 + adds r0, r6, r1 + cmp r0, 0 + bge _0806E668 + ldr r2, _0806E678 @ =0xffffc007 + adds r0, r6, r2 +_0806E668: + asrs r0, 3 + ldr r1, _0806E67C @ =gUnknown_20370E0 +_0806E66C: + adds r0, r1 +_0806E66E: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806E674: .4byte 0xffffc000 +_0806E678: .4byte 0xffffc007 +_0806E67C: .4byte gUnknown_20370E0 + thumb_func_end sub_806E5C0 + + thumb_func_start sub_806E680 +sub_806E680: @ 806E680 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_806E5C0 + adds r2, r0, 0 + cmp r2, 0 + beq _0806E6A0 + movs r0, 0x7 + ands r0, r4 + movs r1, 0x1 + lsls r1, r0 + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] +_0806E6A0: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806E680 + + thumb_func_start sub_806E6A8 +sub_806E6A8: @ 806E6A8 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_806E5C0 + adds r2, r0, 0 + cmp r2, 0 + beq _0806E6C8 + movs r0, 0x7 + ands r0, r4 + movs r1, 0x1 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] +_0806E6C8: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806E6A8 + + thumb_func_start sub_806E6D0 +sub_806E6D0: @ 806E6D0 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_806E5C0 + cmp r0, 0 + beq _0806E6F4 + ldrb r0, [r0] + movs r1, 0x7 + ands r1, r4 + asrs r0, r1 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806E6F4 + movs r0, 0x1 + b _0806E6F6 +_0806E6F4: + movs r0, 0 +_0806E6F6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806E6D0 + + thumb_func_start sub_806E6FC +sub_806E6FC: @ 806E6FC + ldr r1, _0806E754 @ =gUnknown_20370B8 + movs r0, 0 + strh r0, [r1] + ldr r1, _0806E758 @ =gUnknown_20370BA + strh r0, [r1] + ldr r1, _0806E75C @ =gUnknown_20370BC + strh r0, [r1] + ldr r1, _0806E760 @ =gUnknown_20370BE + strh r0, [r1] + ldr r1, _0806E764 @ =gUnknown_20370C0 + strh r0, [r1] + ldr r1, _0806E768 @ =gUnknown_20370C2 + strh r0, [r1] + ldr r1, _0806E76C @ =gUnknown_20370C4 + strh r0, [r1] + ldr r1, _0806E770 @ =gUnknown_20370C6 + strh r0, [r1] + ldr r1, _0806E774 @ =gUnknown_20370C8 + strh r0, [r1] + ldr r1, _0806E778 @ =gUnknown_20370CA + strh r0, [r1] + ldr r1, _0806E77C @ =gUnknown_20370CC + strh r0, [r1] + ldr r1, _0806E780 @ =gUnknown_20370CE + strh r0, [r1] + ldr r1, _0806E784 @ =gUnknown_20370D4 + strh r0, [r1] + ldr r1, _0806E788 @ =gUnknown_20370D0 + strh r0, [r1] + ldr r1, _0806E78C @ =gUnknown_203AD30 + strh r0, [r1] + ldr r1, _0806E790 @ =gUnknown_20370D2 + strh r0, [r1] + ldr r1, _0806E794 @ =gUnknown_20370D6 + strh r0, [r1] + ldr r1, _0806E798 @ =gUnknown_20370D8 + strh r0, [r1] + ldr r1, _0806E79C @ =gUnknown_20370DA + strh r0, [r1] + ldr r1, _0806E7A0 @ =gUnknown_20370DC + strh r0, [r1] + ldr r1, _0806E7A4 @ =gUnknown_20370DE + strh r0, [r1] + bx lr + .align 2, 0 +_0806E754: .4byte gUnknown_20370B8 +_0806E758: .4byte gUnknown_20370BA +_0806E75C: .4byte gUnknown_20370BC +_0806E760: .4byte gUnknown_20370BE +_0806E764: .4byte gUnknown_20370C0 +_0806E768: .4byte gUnknown_20370C2 +_0806E76C: .4byte gUnknown_20370C4 +_0806E770: .4byte gUnknown_20370C6 +_0806E774: .4byte gUnknown_20370C8 +_0806E778: .4byte gUnknown_20370CA +_0806E77C: .4byte gUnknown_20370CC +_0806E780: .4byte gUnknown_20370CE +_0806E784: .4byte gUnknown_20370D4 +_0806E788: .4byte gUnknown_20370D0 +_0806E78C: .4byte gUnknown_203AD30 +_0806E790: .4byte gUnknown_20370D2 +_0806E794: .4byte gUnknown_20370D6 +_0806E798: .4byte gUnknown_20370D8 +_0806E79C: .4byte gUnknown_20370DA +_0806E7A0: .4byte gUnknown_20370DC +_0806E7A4: .4byte gUnknown_20370DE + thumb_func_end sub_806E6FC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s new file mode 100644 index 000000000..4ad9b08b6 --- /dev/null +++ b/asm/evolution_graphics.s @@ -0,0 +1,1825 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F5950 +sub_80F5950: @ 80F5950 + push {r4,r5,lr} + sub sp, 0x4 + movs r4, 0 + ldr r5, _080F5984 @ =gUnknown_841EF10 +_080F5958: + adds r0, r4, 0 + adds r0, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 1 + adds r1, r5 + ldrh r1, [r1] + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl sub_80073BC + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xB + bls _080F5958 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F5984: .4byte gUnknown_841EF10 + thumb_func_end sub_80F5950 + + thumb_func_start sub_80F5988 +sub_80F5988: @ 80F5988 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + ble _080F5A36 + movs r2, 0x3C + ldrsh r0, [r4, r2] + adds r1, r0, 0 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0x50 + bl __divsi3 + movs r1, 0x58 + subs r1, r0 + strh r1, [r4, 0x22] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080F59C2 + adds r0, 0x3 +_080F59C2: + asrs r0, 2 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x3A] + adds r0, 0x4 + strh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F59EC + ldrh r0, [r4, 0x38] + subs r0, 0x1 + strh r0, [r4, 0x38] +_080F59EC: + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x26 + ldrsh r0, [r4, r1] + cmp r0, 0 + ble _080F5A02 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1 + b _080F5A08 +_080F5A02: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x14 +_080F5A08: + strb r0, [r1] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0 + bge _080F5A14 + adds r0, 0x3 +_080F5A14: + asrs r0, 2 + adds r0, 0x14 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _080F5A22 + movs r2, 0x1F +_080F5A22: + movs r0, 0x1F + ands r2, r0 + lsls r2, 1 + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x3] + b _080F5A3C +_080F5A36: + adds r0, r4, 0 + bl sub_8007280 +_080F5A3C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F5988 + + thumb_func_start sub_80F5A44 +sub_80F5A44: @ 80F5A44 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080F5A94 @ =gUnknown_841EEF8 + movs r1, 0x78 + movs r2, 0x58 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080F5A8E + ldr r4, _080F5A98 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r2, r3, r4 + movs r1, 0 + movs r0, 0x30 + strh r0, [r2, 0x38] + strh r5, [r2, 0x3A] + strh r1, [r2, 0x3C] + ldrb r1, [r2, 0x1] + subs r0, 0x34 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1] + ldrb r0, [r2, 0x3] + movs r1, 0x3E + orrs r0, r1 + strb r0, [r2, 0x3] + adds r4, 0x1C + adds r3, r4 + ldr r0, _080F5A9C @ =sub_80F5988 + str r0, [r3] +_080F5A8E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F5A94: .4byte gUnknown_841EEF8 +_080F5A98: .4byte gUnknown_202063C +_080F5A9C: .4byte sub_80F5988 + thumb_func_end sub_80F5A44 + + thumb_func_start sub_80F5AA0 +sub_80F5AA0: @ 80F5AA0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r0, 0x57 + bgt _080F5B06 + movs r2, 0x3C + ldrsh r0, [r4, r2] + adds r1, r0, 0 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0x5 + bl __divsi3 + adds r0, 0x8 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080F5AD8 + adds r0, 0x3 +_080F5AD8: + asrs r0, 2 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + lsls r0, 26 + lsrs r0, 24 + movs r1, 0x28 + bl sub_8044E30 + adds r0, 0x8 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + b _080F5B0C +_080F5B06: + adds r0, r4, 0 + bl sub_8007280 +_080F5B0C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F5AA0 + + thumb_func_start sub_80F5B14 +sub_80F5B14: @ 80F5B14 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080F5B70 @ =gUnknown_841EEF8 + movs r1, 0x78 + movs r2, 0x8 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080F5B6A + ldr r4, _080F5B74 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r2, r3, r4 + movs r1, 0 + movs r0, 0x8 + strh r0, [r2, 0x38] + strh r5, [r2, 0x3A] + strh r1, [r2, 0x3C] + ldrb r1, [r2, 0x1] + subs r0, 0xC + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1] + ldrb r1, [r2, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x32 + orrs r0, r1 + strb r0, [r2, 0x3] + adds r2, 0x43 + movs r0, 0x1 + strb r0, [r2] + adds r4, 0x1C + adds r3, r4 + ldr r0, _080F5B78 @ =sub_80F5AA0 + str r0, [r3] +_080F5B6A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F5B70: .4byte gUnknown_841EEF8 +_080F5B74: .4byte gUnknown_202063C +_080F5B78: .4byte sub_80F5AA0 + thumb_func_end sub_80F5B14 + + thumb_func_start sub_80F5B7C +sub_80F5B7C: @ 80F5B7C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + ble _080F5BB8 + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x38] + ldrh r1, [r4, 0x34] + subs r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x3A] + adds r0, 0x4 + strh r0, [r4, 0x3A] + b _080F5BBE +_080F5BB8: + adds r0, r4, 0 + bl sub_8007280 +_080F5BBE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F5B7C + + thumb_func_start sub_80F5BC4 +sub_80F5BC4: @ 80F5BC4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080F5C20 @ =gUnknown_841EEF8 + movs r1, 0x78 + movs r2, 0x38 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080F5C1A + ldr r4, _080F5C24 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r2, r3, r4 + movs r1, 0 + strh r5, [r2, 0x34] + movs r0, 0x78 + strh r0, [r2, 0x38] + strh r6, [r2, 0x3A] + strh r1, [r2, 0x3C] + ldrb r1, [r2, 0x1] + subs r0, 0x7C + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1] + ldrb r0, [r2, 0x3] + movs r1, 0x3E + orrs r0, r1 + strb r0, [r2, 0x3] + adds r2, 0x43 + movs r0, 0x1 + strb r0, [r2] + adds r4, 0x1C + adds r3, r4 + ldr r0, _080F5C28 @ =sub_80F5B7C + str r0, [r3] +_080F5C1A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F5C20: .4byte gUnknown_841EEF8 +_080F5C24: .4byte gUnknown_202063C +_080F5C28: .4byte sub_80F5B7C + thumb_func_end sub_80F5BC4 + + thumb_func_start sub_80F5C2C +sub_80F5C2C: @ 80F5C2C + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x3C] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _080F5C40 + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080F5C40: + ldrh r1, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + cmp r0, 0x7F + bgt _080F5CF0 + lsls r0, r1, 24 + lsrs r0, 24 + movs r5, 0x38 + ldrsh r1, [r4, r5] + bl sub_8044E30 + negs r0, r0 + strh r0, [r4, 0x26] + movs r0, 0x34 + ldrsh r1, [r4, r0] + movs r2, 0x3C + ldrsh r0, [r4, r2] + muls r0, r1 + movs r1, 0x3 + bl __divsi3 + adds r0, 0x78 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x3A] + adds r3, r0, 0x1 + strh r3, [r4, 0x3A] + movs r5, 0x3A + ldrsh r1, [r4, r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + cmp r0, 0 + bge _080F5C84 + adds r0, 0x7F +_080F5C84: + asrs r0, 7 + movs r1, 0x1F + subs r1, r0 + lsls r1, 24 + lsrs r2, r1, 24 + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0x40 + ble _080F5CA0 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1 + strb r0, [r1] + b _080F5CD0 +_080F5CA0: + adds r3, r4, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x14 + strb r0, [r1] + ldrh r1, [r4, 0x3A] + movs r5, 0x3A + ldrsh r0, [r4, r5] + cmp r0, 0x70 + ble _080F5CD0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F5CD0 + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] +_080F5CD0: + cmp r2, 0x13 + bhi _080F5CD6 + movs r2, 0x14 +_080F5CD6: + movs r0, 0x1F + ands r2, r0 + lsls r2, 1 + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x3] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + b _080F5CF6 +_080F5CF0: + adds r0, r4, 0 + bl sub_8007280 +_080F5CF6: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F5C2C + + thumb_func_start sub_80F5CFC +sub_80F5CFC: @ 80F5CFC + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _080F5D78 @ =gUnknown_841EEF8 + movs r1, 0x78 + movs r2, 0x38 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x40 + beq _080F5D6C + bl sub_8044EC8 + ldr r6, _080F5D7C @ =gUnknown_202063C + lsls r5, r4, 4 + adds r5, r4 + lsls r5, 2 + adds r4, r5, r6 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x7 + bl __umodsi3 + movs r1, 0x3 + subs r1, r0 + movs r0, 0 + mov r8, r0 + strh r1, [r4, 0x34] + bl sub_8044EC8 + movs r1, 0x3F + ands r1, r0 + adds r1, 0x30 + strh r1, [r4, 0x38] + mov r0, r8 + strh r0, [r4, 0x3C] + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0x3E + orrs r0, r1 + strb r0, [r4, 0x3] + adds r4, 0x43 + movs r0, 0x14 + strb r0, [r4] + adds r6, 0x1C + adds r5, r6 + ldr r0, _080F5D80 @ =sub_80F5C2C + str r0, [r5] +_080F5D6C: + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F5D78: .4byte gUnknown_841EEF8 +_080F5D7C: .4byte gUnknown_202063C +_080F5D80: .4byte sub_80F5C2C + thumb_func_end sub_80F5CFC + + thumb_func_start sub_80F5D84 +sub_80F5D84: @ 80F5D84 + push {lr} + ldr r0, _080F5D98 @ =gUnknown_841EEC4 + bl sub_800F034 + ldr r0, _080F5D9C @ =gUnknown_841EED4 + bl sub_8008974 + pop {r0} + bx r0 + .align 2, 0 +_080F5D98: .4byte gUnknown_841EEC4 +_080F5D9C: .4byte gUnknown_841EED4 + thumb_func_end sub_80F5D84 + + thumb_func_start sub_80F5DA0 +sub_80F5DA0: @ 80F5DA0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _080F5DC8 @ =sub_80F5DD0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F5DCC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F5DC8: .4byte sub_80F5DD0 +_080F5DCC: .4byte gUnknown_3005090 + thumb_func_end sub_80F5DA0 + + thumb_func_start sub_80F5DD0 +sub_80F5DD0: @ 80F5DD0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F5950 + ldr r0, _080F5E14 @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r5, r0 + movs r0, 0 + strh r0, [r5, 0x26] + movs r0, 0xA + ldrsh r1, [r5, r0] + movs r0, 0x3 + lsls r0, r1 + ldr r1, _080F5E18 @ =0x00007fff + str r1, [sp] + movs r1, 0xA + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080F5E1C @ =sub_80F5E20 + str r0, [r5] + movs r0, 0x85 + bl sub_80722CC + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F5E14: .4byte gUnknown_3005090 +_080F5E18: .4byte 0x00007fff +_080F5E1C: .4byte sub_80F5E20 + thumb_func_end sub_80F5DD0 + + thumb_func_start sub_80F5E20 +sub_80F5E20: @ 80F5E20 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080F5E78 @ =gUnknown_3005090 + lsls r3, r5, 2 + adds r0, r3, r5 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0x26] + movs r4, 0x26 + ldrsh r0, [r1, r4] + cmp r0, 0x3F + bgt _080F5E7C + movs r0, 0x7 + ands r0, r2 + adds r7, r3, 0 + cmp r0, 0 + bne _080F5E66 + movs r4, 0 + adds r6, r1, 0 +_080F5E48: + ldrh r1, [r6, 0x26] + movs r0, 0x78 + ands r0, r1 + lsls r0, 1 + lsls r1, r4, 6 + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl sub_80F5A44 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080F5E48 +_080F5E66: + ldr r0, _080F5E78 @ =gUnknown_3005090 + adds r1, r7, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080F5E84 + .align 2, 0 +_080F5E78: .4byte gUnknown_3005090 +_080F5E7C: + movs r0, 0x60 + strh r0, [r1, 0x26] + ldr r0, _080F5E8C @ =sub_80F5E90 + str r0, [r1] +_080F5E84: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F5E8C: .4byte sub_80F5E90 + thumb_func_end sub_80F5E20 + + thumb_func_start sub_80F5E90 +sub_80F5E90: @ 80F5E90 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080F5EB0 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r1 + ldrh r3, [r1, 0x26] + movs r4, 0x26 + ldrsh r0, [r1, r4] + cmp r0, 0 + beq _080F5EB4 + subs r0, r3, 0x1 + strh r0, [r1, 0x26] + b _080F5EBA + .align 2, 0 +_080F5EB0: .4byte gUnknown_3005090 +_080F5EB4: + adds r0, r2, 0 + bl sub_8077508 +_080F5EBA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F5E90 + + thumb_func_start sub_80F5EC0 +sub_80F5EC0: @ 80F5EC0 + push {lr} + ldr r0, _080F5ED4 @ =sub_80F5ED8 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080F5ED4: .4byte sub_80F5ED8 + thumb_func_end sub_80F5EC0 + + thumb_func_start sub_80F5ED8 +sub_80F5ED8: @ 80F5ED8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F5950 + ldr r1, _080F5F04 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x26] + ldr r1, _080F5F08 @ =sub_80F5F0C + str r1, [r0] + movs r0, 0xB0 + bl sub_80722CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F5F04: .4byte gUnknown_3005090 +_080F5F08: .4byte sub_80F5F0C + thumb_func_end sub_80F5ED8 + + thumb_func_start sub_80F5F0C +sub_80F5F0C: @ 80F5F0C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080F5F50 @ =gUnknown_3005090 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r3, 0x26 + ldrsh r0, [r1, r3] + cmp r0, 0x5F + bgt _080F5F54 + adds r6, r2, 0 + cmp r0, 0x5 + bgt _080F5F3E + movs r4, 0 +_080F5F2C: + lsls r0, r4, 28 + lsrs r0, 24 + bl sub_80F5B14 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bls _080F5F2C +_080F5F3E: + ldr r0, _080F5F50 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080F5F58 + .align 2, 0 +_080F5F50: .4byte gUnknown_3005090 +_080F5F54: + ldr r0, _080F5F60 @ =sub_80F5F64 + str r0, [r1] +_080F5F58: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F5F60: .4byte sub_80F5F64 + thumb_func_end sub_80F5F0C + + thumb_func_start sub_80F5F64 +sub_80F5F64: @ 80F5F64 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + pop {r0} + bx r0 + thumb_func_end sub_80F5F64 + + thumb_func_start sub_80F5F74 +sub_80F5F74: @ 80F5F74 + push {lr} + ldr r0, _080F5F88 @ =sub_80F5F8C + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080F5F88: .4byte sub_80F5F8C + thumb_func_end sub_80F5F74 + + thumb_func_start sub_80F5F8C +sub_80F5F8C: @ 80F5F8C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F5950 + ldr r1, _080F5FB8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x26] + ldr r1, _080F5FBC @ =sub_80F5FC0 + str r1, [r0] + movs r0, 0x5F + bl sub_80722CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F5FB8: .4byte gUnknown_3005090 +_080F5FBC: .4byte sub_80F5FC0 + thumb_func_end sub_80F5F8C + + thumb_func_start sub_80F5FC0 +sub_80F5FC0: @ 80F5FC0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080F602C @ =gUnknown_3005090 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r3, 0x26 + ldrsh r0, [r1, r3] + cmp r0, 0x2F + bgt _080F6030 + adds r6, r2, 0 + cmp r0, 0 + bne _080F5FF4 + movs r4, 0 +_080F5FE0: + lsls r0, r4, 28 + lsrs r0, 24 + movs r1, 0x4 + bl sub_80F5BC4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080F5FE0 +_080F5FF4: + ldr r0, _080F602C @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x26 + ldrsh r0, [r1, r2] + cmp r0, 0x20 + bne _080F601A + movs r4, 0 +_080F6006: + lsls r0, r4, 28 + lsrs r0, 24 + movs r1, 0x8 + bl sub_80F5BC4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080F6006 +_080F601A: + ldr r0, _080F602C @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080F6034 + .align 2, 0 +_080F602C: .4byte gUnknown_3005090 +_080F6030: + ldr r0, _080F603C @ =sub_80F6040 + str r0, [r1] +_080F6034: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F603C: .4byte sub_80F6040 + thumb_func_end sub_80F5FC0 + + thumb_func_start sub_80F6040 +sub_80F6040: @ 80F6040 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + pop {r0} + bx r0 + thumb_func_end sub_80F6040 + + thumb_func_start sub_80F6050 +sub_80F6050: @ 80F6050 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _080F6078 @ =sub_80F6080 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F607C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xC] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F6078: .4byte sub_80F6080 +_080F607C: .4byte gUnknown_3005090 + thumb_func_end sub_80F6050 + + thumb_func_start sub_80F6080 +sub_80F6080: @ 80F6080 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F5950 + ldr r0, _080F60CC @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r5, r0 + movs r0, 0 + strh r0, [r5, 0x26] + bl sub_80D0474 + ldr r0, _080F60D0 @ =gUnknown_2037638 + ldr r1, _080F60D4 @ =gUnknown_2037238 + movs r2, 0x30 + bl CpuSet + ldr r0, _080F60D8 @ =0xfff90f1c + ldr r1, _080F60DC @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080F60E0 @ =sub_80F60E4 + str r0, [r5] + movs r0, 0xC3 + bl sub_80722CC + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F60CC: .4byte gUnknown_3005090 +_080F60D0: .4byte gUnknown_2037638 +_080F60D4: .4byte gUnknown_2037238 +_080F60D8: .4byte 0xfff90f1c +_080F60DC: .4byte 0x00007fff +_080F60E0: .4byte sub_80F60E4 + thumb_func_end sub_80F6080 + + thumb_func_start sub_80F60E4 +sub_80F60E4: @ 80F60E4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080F611C @ =gUnknown_3005090 + lsls r5, r6, 2 + adds r0, r5, r6 + lsls r0, 3 + adds r1, r0, r1 + movs r0, 0x26 + ldrsh r2, [r1, r0] + cmp r2, 0x7F + bgt _080F6160 + adds r0, r2, 0 + cmp r0, 0 + beq _080F6120 + cmp r0, 0x20 + beq _080F6134 + cmp r2, 0x31 + bgt _080F6144 + bl sub_8044EC8 + movs r1, 0x7 + ands r0, r1 + bl sub_80F5CFC + b _080F6144 + .align 2, 0 +_080F611C: .4byte gUnknown_3005090 +_080F6120: + movs r4, 0 +_080F6122: + adds r0, r4, 0 + bl sub_80F5CFC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _080F6122 + b _080F6144 +_080F6134: + ldr r0, _080F6154 @ =0xffff0f1c + ldr r1, _080F6158 @ =0x00007fff + str r1, [sp] + movs r1, 0x10 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_080F6144: + ldr r0, _080F615C @ =gUnknown_3005090 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080F6164 + .align 2, 0 +_080F6154: .4byte 0xffff0f1c +_080F6158: .4byte 0x00007fff +_080F615C: .4byte gUnknown_3005090 +_080F6160: + ldr r0, _080F616C @ =sub_80F6170 + str r0, [r1] +_080F6164: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F616C: .4byte sub_80F6170 + thumb_func_end sub_80F60E4 + + thumb_func_start sub_80F6170 +sub_80F6170: @ 80F6170 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080F618C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F6188 + adds r0, r2, 0 + bl sub_8077508 +_080F6188: + pop {r0} + bx r0 + .align 2, 0 +_080F618C: .4byte gUnknown_2037AB8 + thumb_func_end sub_80F6170 + + thumb_func_start sub_80F6190 +sub_80F6190: @ 80F6190 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _080F61B8 @ =sub_80F61C0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F61BC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xC] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F61B8: .4byte sub_80F61C0 +_080F61BC: .4byte gUnknown_3005090 + thumb_func_end sub_80F6190 + + thumb_func_start sub_80F61C0 +sub_80F61C0: @ 80F61C0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F5950 + ldr r0, _080F620C @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r5, r0 + movs r0, 0 + strh r0, [r5, 0x26] + bl sub_80D0474 + ldr r0, _080F6210 @ =gUnknown_2037638 + ldr r1, _080F6214 @ =gUnknown_2037238 + movs r2, 0x30 + bl CpuSet + ldr r0, _080F6218 @ =0xfff90f00 + ldr r1, _080F621C @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080F6220 @ =sub_80F6224 + str r0, [r5] + movs r0, 0xC3 + bl sub_80722CC + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F620C: .4byte gUnknown_3005090 +_080F6210: .4byte gUnknown_2037638 +_080F6214: .4byte gUnknown_2037238 +_080F6218: .4byte 0xfff90f00 +_080F621C: .4byte 0x00007fff +_080F6220: .4byte sub_80F6224 + thumb_func_end sub_80F61C0 + + thumb_func_start sub_80F6224 +sub_80F6224: @ 80F6224 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080F625C @ =gUnknown_3005090 + lsls r5, r6, 2 + adds r0, r5, r6 + lsls r0, 3 + adds r1, r0, r1 + movs r0, 0x26 + ldrsh r2, [r1, r0] + cmp r2, 0x7F + bgt _080F62A0 + adds r0, r2, 0 + cmp r0, 0 + beq _080F6260 + cmp r0, 0x20 + beq _080F6274 + cmp r2, 0x31 + bgt _080F6284 + bl sub_8044EC8 + movs r1, 0x7 + ands r0, r1 + bl sub_80F5CFC + b _080F6284 + .align 2, 0 +_080F625C: .4byte gUnknown_3005090 +_080F6260: + movs r4, 0 +_080F6262: + adds r0, r4, 0 + bl sub_80F5CFC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _080F6262 + b _080F6284 +_080F6274: + ldr r0, _080F6294 @ =0xffff0f00 + ldr r1, _080F6298 @ =0x00007fff + str r1, [sp] + movs r1, 0x10 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_080F6284: + ldr r0, _080F629C @ =gUnknown_3005090 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _080F62A4 + .align 2, 0 +_080F6294: .4byte 0xffff0f00 +_080F6298: .4byte 0x00007fff +_080F629C: .4byte gUnknown_3005090 +_080F62A0: + ldr r0, _080F62AC @ =sub_80F6170 + str r0, [r1] +_080F62A4: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F62AC: .4byte sub_80F6170 + thumb_func_end sub_80F6224 + + thumb_func_start nullsub_86 +nullsub_86: @ 80F62B0 + bx lr + thumb_func_end nullsub_86 + + thumb_func_start sub_80F62B4 +sub_80F62B4: @ 80F62B4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + movs r1, 0 + ldr r3, _080F63E8 @ =sub_80F6400 + ldr r2, _080F63EC @ =0x00007fff +_080F62CE: + lsls r0, r1, 1 + add r0, sp + adds r0, 0x4 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xF + bls _080F62CE + adds r0, r3, 0 + movs r1, 0 + bl sub_807741C + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _080F63F0 @ =gUnknown_3005090 + mov r1, r8 + lsls r6, r1, 2 + add r6, r8 + lsls r6, 3 + adds r6, r0 + strh r5, [r6, 0xA] + strh r7, [r6, 0xC] + movs r1, 0x80 + lsls r1, 1 + strh r1, [r6, 0xE] + movs r0, 0x10 + strh r0, [r6, 0x10] + movs r4, 0x80 + lsls r4, 9 + str r1, [sp] + movs r0, 0x1E + movs r2, 0 + movs r3, 0 + bl sub_80073BC + movs r0, 0x10 + ldrsh r1, [r6, r0] + adds r0, r4, 0 + bl __divsi3 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r0, 0x1F + movs r2, 0 + movs r3, 0 + bl sub_80073BC + ldr r1, _080F63F4 @ =gUnknown_202063C + mov r9, r1 + lsls r2, r5, 4 + adds r2, r5 + lsls r2, 2 + mov r3, r9 + adds r3, 0x1C + adds r0, r2, r3 + ldr r1, _080F63F8 @ =nullsub_86 + str r1, [r0] + add r2, r9 + ldrb r1, [r2, 0x1] + movs r4, 0x4 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1] + ldrb r1, [r2, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x3C + orrs r0, r1 + strb r0, [r2, 0x3] + movs r0, 0x3E + adds r0, r2 + mov r10, r0 + ldrb r1, [r0] + movs r5, 0x5 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + mov r1, r10 + strb r0, [r1] + ldrb r1, [r2, 0x5] + lsrs r1, 4 + lsls r1, 5 + ldr r0, _080F63FC @ =gUnknown_20377F8 + mov r10, r0 + add r1, r10 + add r0, sp, 0x4 + movs r2, 0x10 + str r3, [sp, 0x24] + bl CpuSet + lsls r1, r7, 4 + adds r1, r7 + lsls r1, 2 + ldr r3, [sp, 0x24] + adds r3, r1, r3 + ldr r0, _080F63F8 @ =nullsub_86 + str r0, [r3] + add r1, r9 + ldrb r0, [r1, 0x1] + ands r4, r0 + movs r0, 0x1 + orrs r4, r0 + strb r4, [r1, 0x1] + ldrb r0, [r1, 0x3] + movs r2, 0x3E + orrs r0, r2 + strb r0, [r1, 0x3] + adds r2, r1, 0 + adds r2, 0x3E + ldrb r0, [r2] + ands r5, r0 + strb r5, [r2] + ldrb r1, [r1, 0x5] + lsrs r1, 4 + lsls r1, 5 + add r1, r10 + add r0, sp, 0x4 + movs r2, 0x10 + bl CpuSet + movs r1, 0 + strh r1, [r6, 0x18] + mov r0, r8 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F63E8: .4byte sub_80F6400 +_080F63EC: .4byte 0x00007fff +_080F63F0: .4byte gUnknown_3005090 +_080F63F4: .4byte gUnknown_202063C +_080F63F8: .4byte nullsub_86 +_080F63FC: .4byte gUnknown_20377F8 + thumb_func_end sub_80F62B4 + + thumb_func_start sub_80F6400 +sub_80F6400: @ 80F6400 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F641C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x12] + movs r0, 0x8 + strh r0, [r1, 0x14] + ldr r0, _080F6420 @ =sub_80F6424 + str r0, [r1] + bx lr + .align 2, 0 +_080F641C: .4byte gUnknown_3005090 +_080F6420: .4byte sub_80F6424 + thumb_func_end sub_80F6400 + + thumb_func_start sub_80F6424 +sub_80F6424: @ 80F6424 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _080F6444 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r2, r0, r1 + movs r1, 0x18 + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080F6448 + adds r0, r3, 0 + bl sub_80F6640 + b _080F646A + .align 2, 0 +_080F6444: .4byte gUnknown_3005090 +_080F6448: + ldrh r1, [r2, 0x14] + movs r4, 0x14 + ldrsh r0, [r2, r4] + cmp r0, 0x80 + bne _080F645A + adds r0, r3, 0 + bl sub_80F6590 + b _080F646A +_080F645A: + adds r0, r1, 0x2 + strh r0, [r2, 0x14] + ldrh r0, [r2, 0x12] + movs r1, 0x1 + eors r0, r1 + strh r0, [r2, 0x12] + ldr r0, _080F6470 @ =sub_80F6474 + str r0, [r2] +_080F646A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6470: .4byte sub_80F6474 + thumb_func_end sub_80F6424 + + thumb_func_start sub_80F6474 +sub_80F6474: @ 80F6474 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080F6498 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0x18 + ldrsh r0, [r2, r3] + adds r5, r1, 0 + cmp r0, 0 + beq _080F64A0 + ldr r0, _080F649C @ =sub_80F6640 + str r0, [r2] + b _080F6584 + .align 2, 0 +_080F6498: .4byte gUnknown_3005090 +_080F649C: .4byte sub_80F6640 +_080F64A0: + movs r6, 0 + movs r7, 0x12 + ldrsh r0, [r2, r7] + cmp r0, 0 + bne _080F64F0 + movs r0, 0xE + ldrsh r1, [r2, r0] + movs r3, 0x14 + ldrsh r0, [r2, r3] + movs r3, 0x80 + lsls r3, 1 + subs r0, r3, r0 + cmp r1, r0 + bge _080F64C6 + ldrh r0, [r2, 0x14] + ldrh r7, [r2, 0xE] + adds r0, r7 + strh r0, [r2, 0xE] + b _080F64CA +_080F64C6: + strh r3, [r2, 0xE] + movs r6, 0x1 +_080F64CA: + lsls r2, r4, 2 + adds r0, r2, r4 + lsls r0, 3 + adds r3, r0, r5 + movs r0, 0x10 + ldrsh r1, [r3, r0] + movs r7, 0x14 + ldrsh r0, [r3, r7] + adds r0, 0x10 + cmp r1, r0 + ble _080F64EA + ldrh r0, [r3, 0x10] + ldrh r1, [r3, 0x14] + subs r0, r1 + strh r0, [r3, 0x10] + b _080F653A +_080F64EA: + movs r0, 0x10 + strh r0, [r3, 0x10] + b _080F6534 +_080F64F0: + movs r0, 0x10 + ldrsh r1, [r2, r0] + movs r3, 0x14 + ldrsh r0, [r2, r3] + movs r3, 0x80 + lsls r3, 1 + subs r0, r3, r0 + cmp r1, r0 + bge _080F650C + ldrh r0, [r2, 0x14] + ldrh r7, [r2, 0x10] + adds r0, r7 + strh r0, [r2, 0x10] + b _080F6510 +_080F650C: + strh r3, [r2, 0x10] + movs r6, 0x1 +_080F6510: + lsls r2, r4, 2 + adds r0, r2, r4 + lsls r0, 3 + adds r3, r0, r5 + movs r0, 0xE + ldrsh r1, [r3, r0] + movs r7, 0x14 + ldrsh r0, [r3, r7] + adds r0, 0x10 + cmp r1, r0 + ble _080F6530 + ldrh r0, [r3, 0xE] + ldrh r1, [r3, 0x14] + subs r0, r1 + strh r0, [r3, 0xE] + b _080F653A +_080F6530: + movs r0, 0x10 + strh r0, [r3, 0xE] +_080F6534: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080F653A: + adds r0, r2, r4 + lsls r0, 3 + adds r5, r0, r5 + movs r0, 0xE + ldrsh r1, [r5, r0] + movs r4, 0x80 + lsls r4, 9 + adds r0, r4, 0 + bl __divsi3 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r0, 0x1E + movs r2, 0 + movs r3, 0 + bl sub_80073BC + movs r3, 0x10 + ldrsh r1, [r5, r3] + adds r0, r4, 0 + bl __divsi3 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r0, 0x1F + movs r2, 0 + movs r3, 0 + bl sub_80073BC + cmp r6, 0x2 + bne _080F6584 + ldr r0, _080F658C @ =sub_80F6424 + str r0, [r5] +_080F6584: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F658C: .4byte sub_80F6424 + thumb_func_end sub_80F6474 + + thumb_func_start sub_80F6590 +sub_80F6590: @ 80F6590 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080F6638 @ =gUnknown_202063C + mov r8, r1 + ldr r1, _080F663C @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r2, 0xA + ldrsh r1, [r4, r2] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + add r2, r8 + ldrb r3, [r2, 0x1] + movs r6, 0x4 + negs r6, r6 + adds r1, r6, 0 + ands r1, r3 + strb r1, [r2, 0x1] + movs r2, 0xA + ldrsh r1, [r4, r2] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + add r2, r8 + ldrb r3, [r2, 0x3] + movs r5, 0x3F + negs r5, r5 + adds r1, r5, 0 + ands r1, r3 + strb r1, [r2, 0x3] + movs r1, 0xA + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + adds r1, 0x3E + ldrb r2, [r1] + movs r3, 0x4 + orrs r2, r3 + strb r2, [r1] + movs r1, 0xC + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrb r2, [r1, 0x1] + ands r6, r2 + strb r6, [r1, 0x1] + movs r1, 0xC + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrb r2, [r1, 0x3] + ands r5, r2 + strb r5, [r1, 0x3] + movs r1, 0xC + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + ands r2, r3 + strb r2, [r1] + bl sub_8077508 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F6638: .4byte gUnknown_202063C +_080F663C: .4byte gUnknown_3005090 + thumb_func_end sub_80F6590 + + thumb_func_start sub_80F6640 +sub_80F6640: @ 80F6640 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080F66E8 @ =gUnknown_202063C + mov r8, r1 + ldr r1, _080F66EC @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r2, 0xA + ldrsh r1, [r4, r2] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + add r2, r8 + ldrb r3, [r2, 0x1] + movs r6, 0x4 + negs r6, r6 + adds r1, r6, 0 + ands r1, r3 + strb r1, [r2, 0x1] + movs r2, 0xA + ldrsh r1, [r4, r2] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + add r2, r8 + ldrb r3, [r2, 0x3] + movs r5, 0x3F + negs r5, r5 + adds r1, r5, 0 + ands r1, r3 + strb r1, [r2, 0x3] + movs r1, 0xA + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + ands r2, r3 + strb r2, [r1] + movs r1, 0xC + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrb r2, [r1, 0x1] + ands r6, r2 + strb r6, [r1, 0x1] + movs r1, 0xC + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrb r2, [r1, 0x3] + ands r5, r2 + strb r5, [r1, 0x3] + movs r1, 0xC + ldrsh r2, [r4, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + add r1, r8 + adds r1, 0x3E + ldrb r2, [r1] + movs r3, 0x4 + orrs r2, r3 + strb r2, [r1] + bl sub_8077508 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F66E8: .4byte gUnknown_202063C +_080F66EC: .4byte gUnknown_3005090 + thumb_func_end sub_80F6640 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s new file mode 100644 index 000000000..47c964994 --- /dev/null +++ b/asm/evolution_scene.s @@ -0,0 +1,4571 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80CDD18 +sub_80CDD18: @ 80CDD18 + push {lr} + bl sub_80704D0 + bl sub_8077578 + pop {r0} + bx r0 + thumb_func_end sub_80CDD18 + + thumb_func_start sub_80CDD28 +sub_80CDD28: @ 80CDD28 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + movs r7, 0 + ldr r1, _080CDD4C @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r6, r0, r1 + movs r1, 0x8 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080CDD50 + cmp r0, 0x1 + beq _080CDD68 + b _080CDD98 + .align 2, 0 +_080CDD4C: .4byte gUnknown_3005090 +_080CDD50: + movs r0, 0x1 + negs r0, r0 + str r7, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080CDD98 +_080CDD68: + ldr r0, _080CDDA0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080CDD98 + movs r0, 0x1C + ldrsh r1, [r6, r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080CDDA4 @ =gUnknown_2024284 + adds r7, r1, r0 + ldrh r4, [r6, 0xC] + ldrb r5, [r6, 0xE] + ldrb r6, [r6, 0x1C] + adds r0, r2, 0 + bl sub_8077508 + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80CDDF4 +_080CDD98: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CDDA0: .4byte gUnknown_2037AB8 +_080CDDA4: .4byte gUnknown_2024284 + thumb_func_end sub_80CDD28 + + thumb_func_start sub_80CDDA8 +sub_80CDDA8: @ 80CDDA8 + push {r4-r6,lr} + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080CDDE8 @ =sub_80CDD28 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CDDEC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + strh r4, [r1, 0xC] + strh r5, [r1, 0xE] + strh r6, [r1, 0x1C] + ldr r0, _080CDDF0 @ =sub_80CDD18 + bl sub_8000544 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CDDE8: .4byte sub_80CDD28 +_080CDDEC: .4byte gUnknown_3005090 +_080CDDF0: .4byte sub_80CDD18 + thumb_func_end sub_80CDDA8 + + thumb_func_start sub_80CDDF4 +sub_80CDDF4: @ 80CDDF4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + adds r4, r0, 0 + mov r10, r1 + mov r0, r10 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x1C] + movs r0, 0 + bl sub_8000700 + movs r0, 0 + bl sub_80006F4 + movs r1, 0 + str r1, [sp, 0x14] + add r0, sp, 0x14 + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _080CE07C @ =0x05006000 + bl CpuSet + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + bl sub_8070528 + ldr r0, _080CE080 @ =gUnknown_2022974 + movs r2, 0 + strh r2, [r0] + ldr r0, _080CE084 @ =gUnknown_2022976 + strh r2, [r0] + ldr r0, _080CE088 @ =gUnknown_2022978 + strh r2, [r0] + ldr r0, _080CE08C @ =gUnknown_202297A + strh r2, [r0] + ldr r0, _080CE090 @ =gUnknown_202297C + strh r2, [r0] + ldr r0, _080CE094 @ =gUnknown_202297E + strh r2, [r0] + ldr r1, _080CE098 @ =gUnknown_2022980 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080CE09C @ =gUnknown_2022982 + movs r1, 0 + strh r1, [r0] + ldr r1, _080CE0A0 @ =gUnknown_2022B50 + movs r0, 0x9 + strb r0, [r1] + bl sub_800F34C + bl sub_800F420 + bl sub_8006B10 + bl sub_8087E64 + bl sub_80773BC + bl sub_80088F0 + ldr r0, _080CE0A4 @ =gUnknown_3003E58 + movs r2, 0x4 + strb r2, [r0] + movs r0, 0x64 + bl sub_8002BB0 + ldr r1, _080CE0A8 @ =gUnknown_2039A20 + str r0, [r1] + bl sub_80358D4 + adds r0, r4, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _080CE0AC @ =gUnknown_2021CD0 + mov r1, sp + bl sub_8008CF4 + ldr r0, _080CE0B0 @ =gUnknown_2021CF0 + movs r1, 0xB + mov r2, r10 + muls r2, r1 + adds r1, r2, 0 + ldr r2, _080CE0B4 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008D84 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [sp, 0x20] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + mov r9, r0 + lsls r0, r5, 3 + ldr r1, _080CE0B8 @ =gUnknown_82350AC + adds r0, r1 + ldr r2, _080CE0BC @ =gUnknown_202401C + ldr r1, [r2] + ldr r1, [r1, 0x8] + adds r2, r5, 0 + bl sub_800EC8C + adds r0, r5, 0 + ldr r1, [sp, 0x20] + mov r2, r9 + bl sub_8044180 + ldr r0, [r0] + movs r1, 0x88 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703A8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_803F7D4 + ldr r0, _080CE0C0 @ =gUnknown_20244DC + mov r8, r0 + ldr r1, _080CE0C4 @ =gUnknown_8231CFC + str r1, [r0, 0x10] + movs r1, 0x78 + movs r2, 0x40 + movs r3, 0x1E + bl sub_8006F8C + ldr r1, _080CE0A8 @ =gUnknown_2039A20 + ldr r2, [r1] + lsls r1, r0, 24 + lsrs r3, r1, 24 + strb r0, [r2] + ldr r7, _080CE0C8 @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r6, r7, 0 + adds r6, 0x1C + adds r0, r1, r6 + ldr r2, _080CE0CC @ =nullsub_10 + str r2, [r0] + adds r1, r7 + ldrb r2, [r1, 0x5] + movs r4, 0xF + adds r0, r4, 0 + ands r0, r2 + movs r2, 0x10 + orrs r0, r2 + strb r0, [r1, 0x5] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + mov r1, r10 + lsls r0, r1, 3 + ldr r2, _080CE0B8 @ =gUnknown_82350AC + adds r0, r2 + ldr r2, _080CE0BC @ =gUnknown_202401C + ldr r1, [r2] + ldr r1, [r1, 0x10] + mov r2, r10 + bl sub_800EC8C + mov r0, r10 + ldr r1, [sp, 0x20] + mov r2, r9 + bl sub_8044180 + ldr r0, [r0] + movs r1, 0x90 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703A8 + mov r0, r10 + movs r1, 0x3 + bl sub_803F7D4 + ldr r0, _080CE0C4 @ =gUnknown_8231CFC + mov r1, r8 + str r0, [r1, 0x10] + mov r0, r8 + movs r1, 0x78 + movs r2, 0x40 + movs r3, 0x1E + bl sub_8006F8C + ldr r1, _080CE0A8 @ =gUnknown_2039A20 + ldr r2, [r1] + lsls r1, r0, 24 + lsrs r3, r1, 24 + strb r0, [r2, 0x1] + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r6, r1, r6 + ldr r2, _080CE0CC @ =nullsub_10 + str r2, [r6] + adds r1, r7 + ldrb r0, [r1, 0x5] + ands r4, r0 + movs r0, 0x20 + orrs r4, r0 + strb r4, [r1, 0x5] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + bl sub_80F5D84 + ldr r0, _080CE0D0 @ =sub_80CE8DC + movs r1, 0 + bl sub_807741C + ldr r1, _080CE0A8 @ =gUnknown_2039A20 + ldr r2, [r1] + lsls r1, r0, 24 + lsrs r3, r1, 24 + strb r0, [r2, 0x2] + ldr r1, _080CE0D4 @ =gUnknown_3005090 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r1 + movs r2, 0 + strh r2, [r0, 0x8] + strh r5, [r0, 0xA] + mov r1, r10 + strh r1, [r0, 0xC] + mov r2, sp + ldrh r2, [r2, 0x18] + strh r2, [r0, 0xE] + movs r1, 0x1 + strh r1, [r0, 0x10] + movs r1, 0 + strh r1, [r0, 0x1A] + mov r2, sp + ldrh r2, [r2, 0x1C] + strh r2, [r0, 0x1C] + ldr r1, _080CE0A8 @ =gUnknown_2039A20 + ldr r0, [r1] + ldr r1, _080CE0D8 @ =gUnknown_2037238 + adds r0, 0x4 + movs r2, 0x60 + bl memcpy + movs r1, 0xFA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080CE0DC @ =nullsub_76 + bl sub_8000700 + ldr r0, _080CE0E0 @ =sub_80D0050 + bl sub_80006F4 + bl m4aMPlayAllStop + bl sub_812B478 + ldr r0, _080CE0E4 @ =sub_80CE710 + bl sub_8000544 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CE07C: .4byte 0x05006000 +_080CE080: .4byte gUnknown_2022974 +_080CE084: .4byte gUnknown_2022976 +_080CE088: .4byte gUnknown_2022978 +_080CE08C: .4byte gUnknown_202297A +_080CE090: .4byte gUnknown_202297C +_080CE094: .4byte gUnknown_202297E +_080CE098: .4byte gUnknown_2022980 +_080CE09C: .4byte gUnknown_2022982 +_080CE0A0: .4byte gUnknown_2022B50 +_080CE0A4: .4byte gUnknown_3003E58 +_080CE0A8: .4byte gUnknown_2039A20 +_080CE0AC: .4byte gUnknown_2021CD0 +_080CE0B0: .4byte gUnknown_2021CF0 +_080CE0B4: .4byte gUnknown_8245EE0 +_080CE0B8: .4byte gUnknown_82350AC +_080CE0BC: .4byte gUnknown_202401C +_080CE0C0: .4byte gUnknown_20244DC +_080CE0C4: .4byte gUnknown_8231CFC +_080CE0C8: .4byte gUnknown_202063C +_080CE0CC: .4byte nullsub_10 +_080CE0D0: .4byte sub_80CE8DC +_080CE0D4: .4byte gUnknown_3005090 +_080CE0D8: .4byte gUnknown_2037238 +_080CE0DC: .4byte nullsub_76 +_080CE0E0: .4byte sub_80D0050 +_080CE0E4: .4byte sub_80CE710 + thumb_func_end sub_80CDDF4 + + thumb_func_start sub_80CE0E8 +sub_80CE0E8: @ 80CE0E8 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x8 + ldr r2, _080CE280 @ =gUnknown_3005090 + ldr r0, _080CE284 @ =gUnknown_2039A20 + mov r8, r0 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0x1C + ldrsh r2, [r0, r1] + movs r1, 0x64 + adds r4, r2, 0 + muls r4, r1 + ldr r1, _080CE288 @ =gUnknown_2024284 + adds r4, r1 + ldrh r5, [r0, 0xC] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + mov r9, r0 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r6, r0, 0 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + bl sub_80006F4 + movs r4, 0 + str r4, [sp, 0x4] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _080CE28C @ =0x05006000 + add r0, sp, 0x4 + bl CpuSet + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + bl sub_8070528 + ldr r0, _080CE290 @ =gUnknown_2022974 + strh r4, [r0] + ldr r0, _080CE294 @ =gUnknown_2022976 + strh r4, [r0] + ldr r0, _080CE298 @ =gUnknown_2022978 + strh r4, [r0] + ldr r0, _080CE29C @ =gUnknown_202297A + strh r4, [r0] + ldr r0, _080CE2A0 @ =gUnknown_202297C + strh r4, [r0] + ldr r0, _080CE2A4 @ =gUnknown_202297E + strh r4, [r0] + ldr r1, _080CE2A8 @ =gUnknown_2022980 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080CE2AC @ =gUnknown_2022982 + strh r4, [r0] + ldr r1, _080CE2B0 @ =gUnknown_2022B50 + movs r0, 0x9 + strb r0, [r1] + bl sub_800F34C + bl sub_800F420 + bl sub_8006B10 + bl sub_80088F0 + ldr r1, _080CE2B4 @ =gUnknown_3003E58 + movs r0, 0x4 + strb r0, [r1] + lsls r0, r5, 3 + ldr r1, _080CE2B8 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080CE2BC @ =gUnknown_202401C + ldr r1, [r1] + ldr r1, [r1, 0x10] + adds r2, r5, 0 + bl sub_800EC8C + adds r0, r5, 0 + mov r1, r9 + adds r2, r6, 0 + bl sub_8044180 + ldr r0, [r0] + movs r1, 0x90 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703A8 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_803F7D4 + ldr r0, _080CE2C0 @ =gUnknown_20244DC + ldr r1, _080CE2C4 @ =gUnknown_8231CFC + str r1, [r0, 0x10] + movs r1, 0x78 + movs r2, 0x40 + movs r3, 0x1E + bl sub_8006F8C + mov r2, r8 + ldr r1, [r2] + lsls r2, r0, 24 + lsrs r2, 24 + strb r0, [r1, 0x1] + ldr r3, _080CE2C8 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r0, r3, 0 + adds r0, 0x1C + adds r0, r1, r0 + ldr r2, _080CE2CC @ =nullsub_10 + str r2, [r0] + adds r1, r3 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x5] + movs r1, 0xFA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080CE2D0 @ =nullsub_76 + bl sub_8000700 + ldr r0, _080CE2D4 @ =sub_80D0050 + bl sub_80006F4 + ldr r0, _080CE2D8 @ =sub_80CE710 + bl sub_8000544 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CE280: .4byte gUnknown_3005090 +_080CE284: .4byte gUnknown_2039A20 +_080CE288: .4byte gUnknown_2024284 +_080CE28C: .4byte 0x05006000 +_080CE290: .4byte gUnknown_2022974 +_080CE294: .4byte gUnknown_2022976 +_080CE298: .4byte gUnknown_2022978 +_080CE29C: .4byte gUnknown_202297A +_080CE2A0: .4byte gUnknown_202297C +_080CE2A4: .4byte gUnknown_202297E +_080CE2A8: .4byte gUnknown_2022980 +_080CE2AC: .4byte gUnknown_2022982 +_080CE2B0: .4byte gUnknown_2022B50 +_080CE2B4: .4byte gUnknown_3003E58 +_080CE2B8: .4byte gUnknown_82350AC +_080CE2BC: .4byte gUnknown_202401C +_080CE2C0: .4byte gUnknown_20244DC +_080CE2C4: .4byte gUnknown_8231CFC +_080CE2C8: .4byte gUnknown_202063C +_080CE2CC: .4byte nullsub_10 +_080CE2D0: .4byte nullsub_76 +_080CE2D4: .4byte sub_80D0050 +_080CE2D8: .4byte sub_80CE710 + thumb_func_end sub_80CE0E8 + + thumb_func_start sub_80CE2DC +sub_80CE2DC: @ 80CE2DC + push {r4-r6,lr} + sub sp, 0xC + ldr r2, _080CE318 @ =gUnknown_3005090 + ldr r0, _080CE31C @ =gUnknown_2039A20 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0x1C + ldrsh r2, [r0, r1] + movs r1, 0x64 + muls r2, r1 + ldr r1, _080CE320 @ =gUnknown_2024284 + adds r4, r2, r1 + ldrh r6, [r0, 0xC] + ldr r0, _080CE324 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0x7 + bls _080CE30E + b _080CE534 +_080CE30E: + lsls r0, 2 + ldr r1, _080CE328 @ =_080CE32C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CE318: .4byte gUnknown_3005090 +_080CE31C: .4byte gUnknown_2039A20 +_080CE320: .4byte gUnknown_2024284 +_080CE324: .4byte gUnknown_30030F0 +_080CE328: .4byte _080CE32C + .align 2, 0 +_080CE32C: + .4byte _080CE34C + .4byte _080CE3BC + .4byte _080CE3E4 + .4byte _080CE3EA + .4byte _080CE414 + .4byte _080CE45C + .4byte _080CE4CC + .4byte _080CE504 +_080CE34C: + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + bl sub_80006F4 + bl sub_8006B10 + bl sub_80088F0 + ldr r1, _080CE398 @ =gUnknown_3003E58 + movs r0, 0x4 + strb r0, [r1] + ldr r0, _080CE39C @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _080CE3A0 @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _080CE3A4 @ =gUnknown_2022978 + strh r1, [r0] + ldr r0, _080CE3A8 @ =gUnknown_202297A + strh r1, [r0] + ldr r0, _080CE3AC @ =gUnknown_202297C + strh r1, [r0] + ldr r0, _080CE3B0 @ =gUnknown_202297E + strh r1, [r0] + ldr r2, _080CE3B4 @ =gUnknown_2022980 + movs r3, 0x80 + lsls r3, 1 + adds r0, r3, 0 + strh r0, [r2] + ldr r0, _080CE3B8 @ =gUnknown_2022982 + strh r1, [r0] + b _080CE4EC + .align 2, 0 +_080CE398: .4byte gUnknown_3003E58 +_080CE39C: .4byte gUnknown_2022974 +_080CE3A0: .4byte gUnknown_2022976 +_080CE3A4: .4byte gUnknown_2022978 +_080CE3A8: .4byte gUnknown_202297A +_080CE3AC: .4byte gUnknown_202297C +_080CE3B0: .4byte gUnknown_202297E +_080CE3B4: .4byte gUnknown_2022980 +_080CE3B8: .4byte gUnknown_2022982 +_080CE3BC: + bl sub_8070528 + ldr r0, _080CE3D8 @ =nullsub_76 + bl sub_8000700 + ldr r0, _080CE3DC @ =sub_80D00D8 + bl sub_80006F4 + ldr r1, _080CE3E0 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _080CE4F4 + .align 2, 0 +_080CE3D8: .4byte nullsub_76 +_080CE3DC: .4byte sub_80D00D8 +_080CE3E0: .4byte gUnknown_30030F0 +_080CE3E4: + bl sub_80544FC + b _080CE4EC +_080CE3EA: + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0x1 + bl sub_80020BC + ldr r1, _080CE410 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _080CE4F4 + .align 2, 0 +_080CE410: .4byte gUnknown_30030F0 +_080CE414: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r0, r6, 3 + ldr r1, _080CE454 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080CE458 @ =gUnknown_202401C + ldr r1, [r1] + ldr r1, [r1, 0x10] + adds r2, r6, 0 + bl sub_800EC8C + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8044180 + ldr r0, [r0] + movs r1, 0x90 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703A8 + b _080CE4EC + .align 2, 0 +_080CE454: .4byte gUnknown_82350AC +_080CE458: .4byte gUnknown_202401C +_080CE45C: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_803F7D4 + ldr r0, _080CE4B4 @ =gUnknown_20244DC + ldr r1, _080CE4B8 @ =gUnknown_8231CFC + str r1, [r0, 0x10] + movs r1, 0x78 + movs r2, 0x40 + movs r3, 0x1E + bl sub_8006F8C + ldr r1, _080CE4BC @ =gUnknown_2039A20 + ldr r1, [r1] + lsls r2, r0, 24 + lsrs r2, 24 + strb r0, [r1, 0x1] + ldr r3, _080CE4C0 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r0, r3, 0 + adds r0, 0x1C + adds r0, r1, r0 + ldr r2, _080CE4C4 @ =nullsub_10 + str r2, [r0] + adds r1, r3 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x5] + ldr r1, _080CE4C8 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bl sub_80504B0 + b _080CE534 + .align 2, 0 +_080CE4B4: .4byte gUnknown_20244DC +_080CE4B8: .4byte gUnknown_8231CFC +_080CE4BC: .4byte gUnknown_2039A20 +_080CE4C0: .4byte gUnknown_202063C +_080CE4C4: .4byte nullsub_10 +_080CE4C8: .4byte gUnknown_30030F0 +_080CE4CC: + ldr r0, _080CE4FC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _080CE4E0 + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 +_080CE4E0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 +_080CE4EC: + ldr r1, _080CE500 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 +_080CE4F4: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080CE534 + .align 2, 0 +_080CE4FC: .4byte gUnknown_3003F3C +_080CE500: .4byte gUnknown_30030F0 +_080CE504: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_805049C + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _080CE53C @ =sub_80CE72C + bl sub_8000544 + movs r1, 0x9A + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 +_080CE534: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CE53C: .4byte sub_80CE72C + thumb_func_end sub_80CE2DC + + thumb_func_start sub_80CE540 +sub_80CE540: @ 80CE540 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _080CE6B0 @ =gUnknown_2021CD0 + mov r1, sp + bl sub_8008CF4 + ldr r0, _080CE6B4 @ =gUnknown_2021CF0 + movs r1, 0xB + muls r1, r5 + ldr r2, _080CE6B8 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008D84 + ldr r1, _080CE6BC @ =gUnknown_2021CCC + movs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r7, r0, 0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + mov r10, r0 + ldr r1, _080CE6C0 @ =gUnknown_2039A20 + mov r9, r1 + movs r0, 0x64 + bl sub_8002BB0 + mov r2, r9 + str r0, [r2] + movs r4, 0 + strb r6, [r0] + lsls r0, r5, 3 + ldr r1, _080CE6C4 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080CE6C8 @ =gUnknown_202401C + ldr r1, [r1] + ldr r1, [r1, 0x8] + adds r2, r5, 0 + bl sub_800EC8C + adds r0, r5, 0 + mov r1, r10 + adds r2, r7, 0 + bl sub_8044180 + ldr r0, [r0] + movs r1, 0x90 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703A8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_803F7D4 + ldr r0, _080CE6CC @ =gUnknown_20244DC + ldr r1, _080CE6D0 @ =gUnknown_8231CFC + str r1, [r0, 0x10] + movs r1, 0x78 + movs r2, 0x40 + movs r3, 0x1E + bl sub_8006F8C + mov r1, r9 + ldr r2, [r1] + lsls r1, r0, 24 + lsrs r6, r1, 24 + strb r0, [r2, 0x1] + ldr r3, _080CE6D4 @ =gUnknown_202063C + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r0, r3, 0 + adds r0, 0x1C + adds r0, r1, r0 + ldr r2, _080CE6D8 @ =nullsub_10 + str r2, [r0] + adds r1, r3 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x5] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + bl sub_80F5D84 + ldr r0, _080CE6DC @ =sub_80CF53C + movs r1, 0 + bl sub_807741C + mov r1, r9 + ldr r2, [r1] + lsls r1, r0, 24 + lsrs r6, r1, 24 + strb r0, [r2, 0x2] + ldr r1, _080CE6E0 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0x8] + mov r2, r8 + strh r2, [r0, 0xA] + strh r5, [r0, 0xC] + movs r1, 0x1 + strh r1, [r0, 0x10] + strh r4, [r0, 0x1A] + mov r1, sp + ldrh r1, [r1, 0x14] + strh r1, [r0, 0x1C] + ldr r0, _080CE6E4 @ =gUnknown_2022974 + strh r4, [r0] + ldr r0, _080CE6E8 @ =gUnknown_2022976 + strh r4, [r0] + ldr r0, _080CE6EC @ =gUnknown_2022978 + strh r4, [r0] + ldr r0, _080CE6F0 @ =gUnknown_202297A + strh r4, [r0] + ldr r0, _080CE6F4 @ =gUnknown_202297C + strh r4, [r0] + ldr r0, _080CE6F8 @ =gUnknown_202297E + strh r4, [r0] + ldr r1, _080CE6FC @ =gUnknown_2022980 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080CE700 @ =gUnknown_2022982 + strh r4, [r0] + ldr r2, _080CE704 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080CE708 @ =sub_80D00D8 + bl sub_80006F4 + ldr r0, _080CE70C @ =sub_80CE72C + bl sub_8000544 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CE6B0: .4byte gUnknown_2021CD0 +_080CE6B4: .4byte gUnknown_2021CF0 +_080CE6B8: .4byte gUnknown_8245EE0 +_080CE6BC: .4byte gUnknown_2021CCC +_080CE6C0: .4byte gUnknown_2039A20 +_080CE6C4: .4byte gUnknown_82350AC +_080CE6C8: .4byte gUnknown_202401C +_080CE6CC: .4byte gUnknown_20244DC +_080CE6D0: .4byte gUnknown_8231CFC +_080CE6D4: .4byte gUnknown_202063C +_080CE6D8: .4byte nullsub_10 +_080CE6DC: .4byte sub_80CF53C +_080CE6E0: .4byte gUnknown_3005090 +_080CE6E4: .4byte gUnknown_2022974 +_080CE6E8: .4byte gUnknown_2022976 +_080CE6EC: .4byte gUnknown_2022978 +_080CE6F0: .4byte gUnknown_202297A +_080CE6F4: .4byte gUnknown_202297C +_080CE6F8: .4byte gUnknown_202297E +_080CE6FC: .4byte gUnknown_2022980 +_080CE700: .4byte gUnknown_2022982 +_080CE704: .4byte gUnknown_3003E50 +_080CE708: .4byte sub_80D00D8 +_080CE70C: .4byte sub_80CE72C + thumb_func_end sub_80CE540 + + thumb_func_start sub_80CE710 +sub_80CE710: @ 80CE710 + push {lr} + bl sub_8006B5C + bl sub_8006BA8 + bl sub_8002DE8 + bl sub_80704D0 + bl sub_8077578 + pop {r0} + bx r0 + thumb_func_end sub_80CE710 + + thumb_func_start sub_80CE72C +sub_80CE72C: @ 80CE72C + push {lr} + bl sub_8006B5C + bl sub_8006BA8 + bl sub_8002DE8 + bl sub_80704D0 + bl sub_8077578 + pop {r0} + bx r0 + thumb_func_end sub_80CE72C + + thumb_func_start sub_80CE748 +sub_80CE748: @ 80CE748 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + str r1, [sp, 0x4] + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + movs r0, 0 + str r0, [sp] + mov r0, r10 + lsls r0, 2 + str r0, [sp, 0x8] + add r0, r10 + lsls r7, r0, 3 + ldr r1, _080CE8C4 @ =gUnknown_8259754 + adds r1, r7 + mov r8, r1 + ldrh r0, [r1] + cmp r0, 0xD + beq _080CE778 + b _080CE8B2 +_080CE778: + ldr r6, _080CE8C8 @ =gUnknown_2024029 + ldrb r0, [r6] + cmp r0, 0x5 + bls _080CE782 + b _080CE8B2 +_080CE782: + movs r5, 0x64 + muls r0, r5 + ldr r4, _080CE8CC @ =gUnknown_2024284 + adds r0, r4 + mov r9, r0 + ldr r1, [sp, 0x4] + movs r2, 0x64 + bl sub_8040B08 + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + ldr r1, _080CE8C4 @ =gUnknown_8259754 + adds r2, r1, r7 + adds r2, 0xC + movs r1, 0xB + bl sub_804037C + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + mov r1, r8 + ldrh r2, [r1, 0xC] + movs r1, 0xB + muls r2, r1 + ldr r1, _080CE8D0 @ =gUnknown_8245EE0 + adds r2, r1 + movs r1, 0x2 + bl sub_804037C + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + movs r1, 0xC + mov r2, sp + bl sub_804037C + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + movs r1, 0x8 + mov r2, sp + bl sub_804037C + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + movs r1, 0xA + mov r2, sp + bl sub_804037C + movs r4, 0x32 + ldr r0, [sp, 0x8] + mov r8, r0 + adds r5, r6, 0 +_080CE7F0: + ldrb r1, [r5] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CE8CC @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + mov r2, sp + bl sub_804037C + adds r4, 0x1 + cmp r4, 0x36 + ble _080CE7F0 + movs r4, 0x43 + ldr r7, _080CE8C8 @ =gUnknown_2024029 +_080CE80C: + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080CE8CC @ =gUnknown_2024284 + adds r0, r5 + adds r1, r4, 0 + mov r2, sp + bl sub_804037C + adds r4, 0x1 + cmp r4, 0x4F + ble _080CE80C + ldr r4, _080CE8C8 @ =gUnknown_2024029 + ldrb r0, [r4] + muls r0, r6 + adds r0, r5 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + movs r0, 0xFF + str r0, [sp] + ldrb r0, [r4] + muls r0, r6 + adds r0, r5 + movs r1, 0x40 + mov r2, sp + bl sub_804037C + ldrb r0, [r4] + muls r0, r6 + adds r0, r5 + bl sub_803E47C + bl sub_8040C3C + ldr r0, _080CE8C4 @ =gUnknown_8259754 + mov r4, r8 + add r4, r10 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0xC] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2 + bl sub_8088E74 + ldrh r0, [r4, 0xC] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl sub_8088E74 + mov r0, r9 + movs r1, 0xB + bl sub_803FBE8 + ldr r1, _080CE8D4 @ =0x0000012f + cmp r0, r1 + bne _080CE8B2 + mov r0, r9 + movs r1, 0x3 + bl sub_803FBE8 + cmp r0, 0x1 + bne _080CE8B2 + ldr r0, [sp, 0x4] + movs r1, 0xB + bl sub_803FBE8 + movs r1, 0x97 + lsls r1, 1 + cmp r0, r1 + bne _080CE8B2 + ldr r2, _080CE8D8 @ =gUnknown_83F8440 + mov r0, r9 + movs r1, 0x2 + bl sub_804037C +_080CE8B2: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CE8C4: .4byte gUnknown_8259754 +_080CE8C8: .4byte gUnknown_2024029 +_080CE8CC: .4byte gUnknown_2024284 +_080CE8D0: .4byte gUnknown_8245EE0 +_080CE8D4: .4byte 0x0000012f +_080CE8D8: .4byte gUnknown_83F8440 + thumb_func_end sub_80CE748 + + thumb_func_start sub_80CE8DC +sub_80CE8DC: @ 80CE8DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _080CE93C @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r5, r0, r4 + movs r0, 0x1C + ldrsh r1, [r5, r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080CE940 @ =gUnknown_2024284 + adds r1, r0 + mov r9, r1 + bl sub_806E25C + mov r10, r4 + cmp r0, 0 + bne _080CE948 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x8 + bne _080CE948 + movs r2, 0xC + ldrsh r0, [r5, r2] + cmp r0, 0x97 + ble _080CE948 + movs r0, 0x11 + strh r0, [r5, 0x8] + movs r2, 0x1 + strh r2, [r5, 0x1A] + ldr r0, _080CE944 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r10 + strh r2, [r0, 0x18] + bl sub_80D04A8 + bl _080CF528 + .align 2, 0 +_080CE93C: .4byte gUnknown_3005090 +_080CE940: .4byte gUnknown_2024284 +_080CE944: .4byte gUnknown_2023E82 +_080CE948: + ldr r0, _080CE9A0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + ldr r3, _080CE9A4 @ =gUnknown_3005090 + mov r10, r3 + lsls r2, r7, 2 + mov r8, r2 + adds r5, r0, 0 + cmp r1, 0x2 + bne _080CE9AC + adds r0, r2, r7 + lsls r0, 3 + adds r2, r0, r3 + movs r3, 0x8 + ldrsh r0, [r2, r3] + cmp r0, 0x8 + bne _080CE9AC + ldr r4, _080CE9A8 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r10 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CE9AC + ldrh r1, [r2, 0xE] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080CE9AC + movs r0, 0x11 + strh r0, [r2, 0x8] + ldrb r1, [r4, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r10 + strh r3, [r0, 0x18] + bl sub_80D04A8 + bl _080CF528 + .align 2, 0 +_080CE9A0: .4byte gUnknown_30030F0 +_080CE9A4: .4byte gUnknown_3005090 +_080CE9A8: .4byte gUnknown_2023E82 +_080CE9AC: + mov r1, r8 + adds r0, r1, r7 + lsls r0, 3 + add r0, r10 + movs r2, 0x8 + ldrsh r0, [r0, r2] + cmp r0, 0x16 + bls _080CE9C0 + bl _080CF528 +_080CE9C0: + lsls r0, 2 + ldr r1, _080CE9CC @ =_080CE9D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CE9CC: .4byte _080CE9D0 + .align 2, 0 +_080CE9D0: + .4byte _080CEA2C + .4byte _080CEA90 + .4byte _080CEAD0 + .4byte _080CEAF0 + .4byte _080CEB18 + .4byte _080CEB58 + .4byte _080CEB90 + .4byte _080CEBD0 + .4byte _080CEC08 + .4byte _080CEC4C + .4byte _080CEC68 + .4byte _080CEC94 + .4byte _080CECC0 + .4byte _080CED0C + .4byte _080CED2C + .4byte _080CEDB8 + .4byte _080CEE60 + .4byte _080CEED0 + .4byte _080CEF10 + .4byte _080CEF3C + .4byte _080CEF9C + .4byte _080CEFF8 + .4byte _080CF034 +_080CEA2C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r2, _080CEA84 @ =gUnknown_202063C + ldr r0, _080CEA88 @ =gUnknown_2039A20 + ldr r0, [r0] + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r0, _080CEA8C @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + bl _080CF528 + .align 2, 0 +_080CEA84: .4byte gUnknown_202063C +_080CEA88: .4byte gUnknown_2039A20 +_080CEA8C: .4byte gUnknown_3005090 +_080CEA90: + ldr r0, _080CEAC0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CEAA0 + bl _080CF528 +_080CEAA0: + ldr r4, _080CEAC4 @ =gUnknown_2021D18 + ldr r1, _080CEAC8 @ =gUnknown_83FE672 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CEACC @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + b _080CEFDE + .align 2, 0 +_080CEAC0: .4byte gUnknown_2037AB8 +_080CEAC4: .4byte gUnknown_2021D18 +_080CEAC8: .4byte gUnknown_83FE672 +_080CEACC: .4byte gUnknown_3005090 +_080CEAD0: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CEAE0 + bl _080CF528 +_080CEAE0: + ldr r0, _080CEAEC @ =gUnknown_3005090 + mov r3, r8 + adds r4, r3, r7 + lsls r4, 3 + adds r4, r0 + b _080CEF26 + .align 2, 0 +_080CEAEC: .4byte gUnknown_3005090 +_080CEAF0: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080CEAFE + bl _080CF528 +_080CEAFE: + ldr r0, _080CEB10 @ =0x00000107 + bl sub_80722CC + ldr r0, _080CEB14 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + b _080CEFDE + .align 2, 0 +_080CEB10: .4byte 0x00000107 +_080CEB14: .4byte gUnknown_3005090 +_080CEB18: + bl sub_80723E0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080CEB28 + bl _080CF528 +_080CEB28: + movs r0, 0x84 + lsls r0, 1 + bl sub_8071A74 + ldr r0, _080CEB54 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r4, [sp] + movs r0, 0x1C + movs r1, 0x4 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl _080CF528 + .align 2, 0 +_080CEB54: .4byte gUnknown_3005090 +_080CEB58: + ldr r0, _080CEB84 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CEB68 + bl _080CF528 +_080CEB68: + movs r0, 0 + bl sub_80D0374 + movs r0, 0x11 + bl sub_80F5DA0 + ldr r1, _080CEB88 @ =gUnknown_2023E82 + strb r0, [r1, 0x2] + ldr r0, _080CEB8C @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + b _080CEFDE + .align 2, 0 +_080CEB84: .4byte gUnknown_2037AB8 +_080CEB88: .4byte gUnknown_2023E82 +_080CEB8C: .4byte gUnknown_3005090 +_080CEB90: + ldr r4, _080CEBC8 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r10 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CEBA6 + bl _080CF528 +_080CEBA6: + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + add r1, r10 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r0, _080CEBCC @ =gUnknown_2039A20 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x3] + bl sub_80F5EC0 + strb r0, [r4, 0x2] + bl _080CF528 + .align 2, 0 +_080CEBC8: .4byte gUnknown_2023E82 +_080CEBCC: .4byte gUnknown_2039A20 +_080CEBD0: + ldr r4, _080CEC00 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r10 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CEBE6 + bl _080CF528 +_080CEBE6: + ldr r0, _080CEC04 @ =gUnknown_2039A20 + ldr r1, [r0] + ldrb r0, [r1] + ldrb r1, [r1, 0x1] + bl sub_80F62B4 + strb r0, [r4, 0x2] + mov r0, r8 + adds r1, r0, r7 + lsls r1, 3 + add r1, r10 + b _080CEFDE + .align 2, 0 +_080CEC00: .4byte gUnknown_2023E82 +_080CEC04: .4byte gUnknown_2039A20 +_080CEC08: + ldr r2, _080CEC44 @ =gUnknown_2039A20 + ldr r1, [r2] + ldrb r0, [r1, 0x3] + subs r0, 0x1 + strb r0, [r1, 0x3] + lsls r0, 24 + cmp r0, 0 + beq _080CEC1C + bl _080CF528 +_080CEC1C: + ldr r1, [r2] + movs r0, 0x3 + strb r0, [r1, 0x3] + ldr r0, _080CEC48 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r10 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080CEC38 + bl _080CF528 +_080CEC38: + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + add r1, r10 + b _080CEFDE + .align 2, 0 +_080CEC44: .4byte gUnknown_2039A20 +_080CEC48: .4byte gUnknown_2023E82 +_080CEC4C: + bl sub_80F5F74 + ldr r1, _080CEC60 @ =gUnknown_2023E82 + strb r0, [r1, 0x2] + ldr r0, _080CEC64 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + b _080CEFDE + .align 2, 0 +_080CEC60: .4byte gUnknown_2023E82 +_080CEC64: .4byte gUnknown_3005090 +_080CEC68: + ldr r6, _080CEC90 @ =gUnknown_2023E82 + ldrb r0, [r6, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r10 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CEC7E + bl _080CF528 +_080CEC7E: + mov r0, r8 + adds r4, r0, r7 + lsls r4, 3 + add r4, r10 + ldrh r0, [r4, 0xC] + bl sub_80F6050 + strb r0, [r6, 0x2] + b _080CEF2E + .align 2, 0 +_080CEC90: .4byte gUnknown_2023E82 +_080CEC94: + ldr r0, _080CECBC @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r10 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080CECAA + bl _080CF528 +_080CECAA: + movs r0, 0x1B + bl sub_80722CC + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + add r1, r10 + b _080CEFDE + .align 2, 0 +_080CECBC: .4byte gUnknown_2023E82 +_080CECC0: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080CECCE + bl _080CF528 +_080CECCE: + bl m4aMPlayAllStop + ldr r0, _080CED00 @ =gUnknown_2037238 + ldr r1, _080CED04 @ =gUnknown_2039A20 + ldr r1, [r1] + adds r1, 0x4 + movs r2, 0x60 + bl memcpy + bl sub_80D04E8 + movs r0, 0 + str r0, [sp] + movs r0, 0x1C + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080CED08 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + b _080CEFDE + .align 2, 0 +_080CED00: .4byte gUnknown_2037238 +_080CED04: .4byte gUnknown_2039A20 +_080CED08: .4byte gUnknown_3005090 +_080CED0C: + ldr r0, _080CED28 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CED1C + bl _080CF528 +_080CED1C: + mov r0, r8 + adds r4, r0, r7 + lsls r4, 3 + add r4, r10 + ldrh r0, [r4, 0xC] + b _080CEF28 + .align 2, 0 +_080CED28: .4byte gUnknown_2037AB8 +_080CED2C: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080CED3A + bl _080CF528 +_080CED3A: + ldr r4, _080CEDA8 @ =gUnknown_2021D18 + ldr r1, _080CEDAC @ =gUnknown_83FE688 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CEDB0 @ =0x00000103 + bl sub_80722A0 + ldr r2, _080CEDB4 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + adds r2, r1 + adds r2, 0xC + mov r0, r9 + movs r1, 0xB + bl sub_804037C + mov r0, r9 + bl sub_803E47C + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0xC] + mov r0, r9 + bl sub_804356C + ldrh r0, [r4, 0xC] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2 + bl sub_8088E74 + ldrh r0, [r4, 0xC] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl sub_8088E74 + movs r0, 0xE + bl sub_8054E90 + b _080CF528 + .align 2, 0 +_080CEDA8: .4byte gUnknown_2021D18 +_080CEDAC: .4byte gUnknown_83FE688 +_080CEDB0: .4byte 0x00000103 +_080CEDB4: .4byte gUnknown_3005090 +_080CEDB8: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CEDC6 + b _080CF528 +_080CEDC6: + bl sub_812B484 + ldr r1, _080CEE20 @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r7 + lsls r0, 3 + adds r5, r0, r1 + ldrb r1, [r5, 0x10] + mov r0, r9 + bl sub_803EA88 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0 + beq _080CEE40 + movs r3, 0x1A + ldrsh r4, [r5, r3] + cmp r4, 0 + bne _080CEE40 + bl sub_8071A94 + bl sub_8055DC4 + ldrh r1, [r5, 0xE] + movs r0, 0x80 + orrs r0, r1 + strh r0, [r5, 0xE] + strh r4, [r5, 0x10] + strh r4, [r5, 0x14] + mov r0, r9 + movs r1, 0x2 + add r2, sp, 0x4 + bl sub_803FBE8 + ldr r0, _080CEE24 @ =gUnknown_2022AB8 + add r1, sp, 0x4 + bl sub_8008CF4 + ldr r0, _080CEE28 @ =0x0000ffff + cmp r6, r0 + bne _080CEE2C + movs r0, 0x16 + strh r0, [r5, 0x8] + b _080CF528 + .align 2, 0 +_080CEE20: .4byte gUnknown_3005090 +_080CEE24: .4byte gUnknown_2022AB8 +_080CEE28: .4byte 0x0000ffff +_080CEE2C: + ldr r0, _080CEE3C @ =0x0000fffe + cmp r6, r0 + bne _080CEE34 + b _080CF528 +_080CEE34: + movs r0, 0x14 + strh r0, [r5, 0x8] + b _080CF528 + .align 2, 0 +_080CEE3C: .4byte 0x0000fffe +_080CEE40: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080CEE5C @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + b _080CEFDE + .align 2, 0 +_080CEE5C: .4byte gUnknown_3005090 +_080CEE60: + ldr r0, _080CEEC4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r2, 0x80 + adds r0, r2, 0 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _080CEE74 + b _080CF528 +_080CEE74: + mov r3, r8 + adds r0, r3, r7 + lsls r0, 3 + mov r1, r10 + adds r4, r0, r1 + ldrh r1, [r4, 0xE] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080CEE90 + bl sub_8071A94 + bl sub_8055DC4 +_080CEE90: + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080CEEA0 + ldrh r0, [r4, 0xA] + mov r1, r9 + bl sub_80CE748 +_080CEEA0: + adds r0, r7, 0 + bl sub_8077508 + bl sub_80359AC + ldr r4, _080CEEC8 @ =gUnknown_2039A20 + ldr r0, [r4] + bl sub_8002BC4 + str r6, [r4] + bl sub_8003ECC + ldr r0, _080CEECC @ =gUnknown_300537C + ldr r0, [r0] + bl sub_8000544 + b _080CF528 + .align 2, 0 +_080CEEC4: .4byte gUnknown_2037AB8 +_080CEEC8: .4byte gUnknown_2039A20 +_080CEECC: .4byte gUnknown_300537C +_080CEED0: + ldr r0, _080CEF04 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r10 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080CEEE4 + b _080CF528 +_080CEEE4: + bl m4aMPlayAllStop + ldr r0, _080CEF08 @ =0x0006001c + ldr r1, _080CEF0C @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + add r1, r10 + b _080CEFDE + .align 2, 0 +_080CEF04: .4byte gUnknown_2023E82 +_080CEF08: .4byte 0x0006001c +_080CEF0C: .4byte 0x00007fff +_080CEF10: + ldr r0, _080CEF38 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CEF1E + b _080CF528 +_080CEF1E: + mov r0, r8 + adds r4, r0, r7 + lsls r4, 3 + add r4, r10 +_080CEF26: + ldrh r0, [r4, 0xA] +_080CEF28: + movs r1, 0 + bl sub_8071DF0 +_080CEF2E: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080CF528 + .align 2, 0 +_080CEF38: .4byte gUnknown_2037AB8 +_080CEF3C: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080CEF48 + b _080CF528 +_080CEF48: + ldr r0, _080CEF64 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + movs r3, 0x1A + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080CEF70 + ldr r0, _080CEF68 @ =gUnknown_2021D18 + ldr r1, _080CEF6C @ =gUnknown_83FE6D0 + bl sub_8008FCC + b _080CEF78 + .align 2, 0 +_080CEF64: .4byte gUnknown_3005090 +_080CEF68: .4byte gUnknown_2021D18 +_080CEF6C: .4byte gUnknown_83FE6D0 +_080CEF70: + ldr r0, _080CEF90 @ =gUnknown_2021D18 + ldr r1, _080CEF94 @ =gUnknown_83FE6B5 + bl sub_8008FCC +_080CEF78: + ldr r0, _080CEF90 @ =gUnknown_2021D18 + movs r1, 0 + bl sub_80D87BC + ldr r1, _080CEF98 @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x1A] + b _080CF4F2 + .align 2, 0 +_080CEF90: .4byte gUnknown_2021D18 +_080CEF94: .4byte gUnknown_83FE6B5 +_080CEF98: .4byte gUnknown_3005090 +_080CEF9C: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CEFAA + b _080CF528 +_080CEFAA: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CEFB6 + b _080CF528 +_080CEFB6: + bl sub_8026878 + ldr r0, _080CEFE8 @ =0x00000101 + bl sub_8071C60 + ldr r0, _080CEFEC @ =gUnknown_83FDF3C + ldr r0, [r0, 0xC] + bl sub_80D77F4 + ldr r0, _080CEFF0 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CEFF4 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + movs r0, 0x40 + strh r0, [r1, 0x10] +_080CEFDE: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080CF528 + .align 2, 0 +_080CEFE8: .4byte 0x00000101 +_080CEFEC: .4byte gUnknown_83FDF3C +_080CEFF0: .4byte gUnknown_202298C +_080CEFF4: .4byte gUnknown_3005090 +_080CEFF8: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF006 + b _080CF528 +_080CF006: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CF012 + b _080CF528 +_080CF012: + ldr r0, _080CF030 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x10] + subs r0, 0x1 + strh r0, [r1, 0x10] + lsls r0, 16 + cmp r0, 0 + beq _080CF02A + b _080CF528 +_080CF02A: + movs r0, 0xF + strh r0, [r1, 0x8] + b _080CF528 + .align 2, 0 +_080CF030: .4byte gUnknown_3005090 +_080CF034: + mov r3, r8 + adds r0, r3, r7 + lsls r0, 3 + add r0, r10 + movs r1, 0x14 + ldrsh r0, [r0, r1] + cmp r0, 0xC + bls _080CF046 + b _080CF528 +_080CF046: + lsls r0, 2 + ldr r1, _080CF050 @ =_080CF054 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CF050: .4byte _080CF054 + .align 2, 0 +_080CF054: + .4byte _080CF088 + .4byte _080CF0D4 + .4byte _080CF11C + .4byte _080CF15A + .4byte _080CF1BC + .4byte _080CF2B4 + .4byte _080CF30C + .4byte _080CF3E0 + .4byte _080CF414 + .4byte _080CF45C + .4byte _080CF4A4 + .4byte _080CF4D8 + .4byte _080CF504 +_080CF088: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF096 + b _080CF528 +_080CF096: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CF0A2 + b _080CF528 +_080CF0A2: + bl sub_8026878 + ldr r0, _080CF0C8 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x10] + bl sub_80D77F4 + ldr r0, _080CF0CC @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CF0D0 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080CF526 + .align 2, 0 +_080CF0C8: .4byte gUnknown_83FDF3C +_080CF0CC: .4byte gUnknown_202298C +_080CF0D0: .4byte gUnknown_3005090 +_080CF0D4: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF0E2 + b _080CF528 +_080CF0E2: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CF0EE + b _080CF528 +_080CF0EE: + ldr r0, _080CF110 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x14] + bl sub_80D77F4 + ldr r0, _080CF114 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CF118 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080CF526 + .align 2, 0 +_080CF110: .4byte gUnknown_83FDF3C +_080CF114: .4byte gUnknown_202298C +_080CF118: .4byte gUnknown_3005090 +_080CF11C: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080CF15A + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080CF15A + ldr r0, _080CF1A8 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x18] + bl sub_80D77F4 + ldr r0, _080CF1AC @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CF1B0 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + movs r0, 0x5 + strh r0, [r1, 0x16] + movs r0, 0xA + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x14] + adds r0, 0x1 + strh r0, [r1, 0x14] +_080CF15A: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF168 + b _080CF528 +_080CF168: + bl sub_80723E0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080CF176 + b _080CF528 +_080CF176: + str r0, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + ldr r0, _080CF1B4 @ =gUnknown_83FE791 + movs r1, 0xE + bl sub_80D87BC + ldr r0, _080CF1B0 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + movs r2, 0 + strh r0, [r1, 0x14] + ldr r0, _080CF1B8 @ =gUnknown_2023E82 + strb r2, [r0, 0x1] + bl sub_802DCB8 + b _080CF528 + .align 2, 0 +_080CF1A8: .4byte gUnknown_83FDF3C +_080CF1AC: .4byte gUnknown_202298C +_080CF1B0: .4byte gUnknown_3005090 +_080CF1B4: .4byte gUnknown_83FE791 +_080CF1B8: .4byte gUnknown_2023E82 +_080CF1BC: + ldr r0, _080CF244 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080CF1E2 + ldr r4, _080CF248 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _080CF1E2 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_080CF1E2: + ldr r0, _080CF244 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CF208 + ldr r4, _080CF248 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _080CF208 + movs r0, 0x5 + bl sub_80722CC + bl sub_802DCF8 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802DCB8 +_080CF208: + ldr r0, _080CF244 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080CF276 + str r2, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080CF248 @ =gUnknown_2023E82 + ldrb r2, [r0, 0x1] + cmp r2, 0 + beq _080CF250 + ldr r0, _080CF24C @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x18] + strh r0, [r1, 0x14] + b _080CF276 + .align 2, 0 +_080CF244: .4byte gUnknown_30030F0 +_080CF248: .4byte gUnknown_2023E82 +_080CF24C: .4byte gUnknown_3005090 +_080CF250: + ldr r0, _080CF2AC @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x16] + strh r0, [r1, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080CF276 + movs r0, 0x1 + negs r0, r0 + str r2, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080CF276: + ldr r0, _080CF2B0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080CF284 + b _080CF528 +_080CF284: + movs r0, 0x1 + str r0, [sp] + movs r0, 0x17 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802DB7C + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080CF2AC @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x18] + strh r1, [r0, 0x14] + b _080CF528 + .align 2, 0 +_080CF2AC: .4byte gUnknown_3005090 +_080CF2B0: .4byte gUnknown_30030F0 +_080CF2B4: + ldr r0, _080CF2F4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CF2C2 + b _080CF528 +_080CF2C2: + bl sub_8003ECC + ldr r0, _080CF2F8 @ =gUnknown_2024284 + ldr r1, _080CF2FC @ =gUnknown_3005090 + mov r3, r8 + adds r5, r3, r7 + lsls r5, 3 + adds r5, r1 + ldrb r1, [r5, 0x1C] + ldr r2, _080CF300 @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080CF304 @ =sub_80CE0E8 + ldr r4, _080CF308 @ =gUnknown_2024022 + ldrh r4, [r4] + str r4, [sp] + bl sub_8134738 + ldrh r0, [r5, 0x14] + adds r0, 0x1 + strh r0, [r5, 0x14] + b _080CF528 + .align 2, 0 +_080CF2F4: .4byte gUnknown_2037AB8 +_080CF2F8: .4byte gUnknown_2024284 +_080CF2FC: .4byte gUnknown_3005090 +_080CF300: .4byte gUnknown_2024029 +_080CF304: .4byte sub_80CE0E8 +_080CF308: .4byte gUnknown_2024022 +_080CF30C: + ldr r0, _080CF340 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CF31A + b _080CF528 +_080CF31A: + ldr r1, [r5, 0x4] + ldr r0, _080CF344 @ =sub_80CE710 + cmp r1, r0 + beq _080CF324 + b _080CF528 +_080CF324: + bl sub_8138B2C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x4 + bne _080CF34C + ldr r0, _080CF348 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + movs r0, 0xA + b _080CF526 + .align 2, 0 +_080CF340: .4byte gUnknown_2037AB8 +_080CF344: .4byte sub_80CE710 +_080CF348: .4byte gUnknown_3005090 +_080CF34C: + adds r1, r6, 0 + adds r1, 0xD + mov r0, r9 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80441B8 + cmp r0, 0 + beq _080CF398 + ldr r0, _080CF388 @ =gUnknown_83FDF3C + ldr r3, _080CF38C @ =0x000004cc + adds r0, r3 + ldr r0, [r0] + bl sub_80D77F4 + ldr r0, _080CF390 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r1, _080CF394 @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + movs r1, 0xC + strh r1, [r0, 0x14] + b _080CF528 + .align 2, 0 +_080CF388: .4byte gUnknown_83FDF3C +_080CF38C: .4byte 0x000004cc +_080CF390: .4byte gUnknown_202298C +_080CF394: .4byte gUnknown_3005090 +_080CF398: + ldr r1, _080CF3D4 @ =gUnknown_2022AC8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + strb r4, [r1, 0x2] + lsrs r0, r4, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + lsls r4, r6, 24 + lsrs r4, 24 + mov r0, r9 + adds r1, r4, 0 + bl sub_8041064 + ldr r0, _080CF3D8 @ =gUnknown_2024022 + ldrh r1, [r0] + mov r0, r9 + adds r2, r4, 0 + bl sub_803E964 + ldr r0, _080CF3DC @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080CF526 + .align 2, 0 +_080CF3D4: .4byte gUnknown_2022AC8 +_080CF3D8: .4byte gUnknown_2024022 +_080CF3DC: .4byte gUnknown_3005090 +_080CF3E0: + ldr r0, _080CF408 @ =gUnknown_83FDF3C + movs r1, 0xCF + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_80D77F4 + ldr r0, _080CF40C @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CF410 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080CF526 + .align 2, 0 +_080CF408: .4byte gUnknown_83FDF3C +_080CF40C: .4byte gUnknown_202298C +_080CF410: .4byte gUnknown_3005090 +_080CF414: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF422 + b _080CF528 +_080CF422: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CF42E + b _080CF528 +_080CF42E: + ldr r0, _080CF450 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x1C] + bl sub_80D77F4 + ldr r0, _080CF454 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r0, _080CF458 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080CF526 + .align 2, 0 +_080CF450: .4byte gUnknown_83FDF3C +_080CF454: .4byte gUnknown_202298C +_080CF458: .4byte gUnknown_3005090 +_080CF45C: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080CF528 + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080CF528 + ldr r0, _080CF498 @ =gUnknown_83FDF3C + movs r1, 0xD0 + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_80D77F4 + ldr r0, _080CF49C @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r1, _080CF4A0 @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + movs r1, 0x14 + strh r1, [r0, 0x8] + b _080CF528 + .align 2, 0 +_080CF498: .4byte gUnknown_83FDF3C +_080CF49C: .4byte gUnknown_202298C +_080CF4A0: .4byte gUnknown_3005090 +_080CF4A4: + ldr r0, _080CF4CC @ =gUnknown_83FDF3C + ldr r0, [r0, 0x20] + bl sub_80D77F4 + ldr r0, _080CF4D0 @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r1, _080CF4D4 @ =gUnknown_3005090 + mov r3, r8 + adds r0, r3, r7 + lsls r0, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0xB + strh r1, [r0, 0x16] + strh r2, [r0, 0x18] + movs r1, 0x3 + strh r1, [r0, 0x14] + b _080CF528 + .align 2, 0 +_080CF4CC: .4byte gUnknown_83FDF3C +_080CF4D0: .4byte gUnknown_202298C +_080CF4D4: .4byte gUnknown_3005090 +_080CF4D8: + ldr r0, _080CF4F8 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x24] + bl sub_80D77F4 + ldr r0, _080CF4FC @ =gUnknown_202298C + movs r1, 0 + bl sub_80D87BC + ldr r1, _080CF500 @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 +_080CF4F2: + movs r1, 0xF + strh r1, [r0, 0x8] + b _080CF528 + .align 2, 0 +_080CF4F8: .4byte gUnknown_83FDF3C +_080CF4FC: .4byte gUnknown_202298C +_080CF500: .4byte gUnknown_3005090 +_080CF504: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080CF528 + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080CF528 + ldr r0, _080CF538 @ =gUnknown_3005090 + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + movs r0, 0x5 +_080CF526: + strh r0, [r1, 0x14] +_080CF528: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CF538: .4byte gUnknown_3005090 + thumb_func_end sub_80CE8DC + + thumb_func_start sub_80CF53C +sub_80CF53C: @ 80CF53C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080CF5BC @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r5 + movs r0, 0x1C + ldrsh r1, [r4, r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080CF5C0 @ =gUnknown_2024284 + adds r1, r0 + mov r8, r1 + bl sub_806E25C + cmp r0, 0 + bne _080CF598 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bne _080CF598 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0x97 + ble _080CF598 + movs r0, 0xF + strh r0, [r4, 0x8] + movs r2, 0x1 + strh r2, [r4, 0x1A] + ldr r0, _080CF5C4 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r5 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CF598 + strh r2, [r1, 0x18] + bl sub_80D04A8 +_080CF598: + ldr r0, _080CF5BC @ =gUnknown_3005090 + lsls r2, r6, 2 + adds r1, r2, r6 + lsls r1, 3 + adds r1, r0 + movs r3, 0x8 + ldrsh r1, [r1, r3] + adds r5, r0, 0 + adds r7, r2, 0 + cmp r1, 0x14 + bls _080CF5B2 + bl _080D003A +_080CF5B2: + lsls r0, r1, 2 + ldr r1, _080CF5C8 @ =_080CF5CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CF5BC: .4byte gUnknown_3005090 +_080CF5C0: .4byte gUnknown_2024284 +_080CF5C4: .4byte gUnknown_2023E82 +_080CF5C8: .4byte _080CF5CC + .align 2, 0 +_080CF5CC: + .4byte _080CF620 + .4byte _080CF64C + .4byte _080CF66C + .4byte _080CF69C + .4byte _080CF6D0 + .4byte _080CF73C + .4byte _080CF778 + .4byte _080CF7AC + .4byte _080CF7EC + .4byte _080CF808 + .4byte _080CF838 + .4byte _080CF860 + .4byte _080CF89C + .4byte _080CF924 + .4byte _080CF9D0 + .4byte _080CFA14 + .4byte _080CFA74 + .4byte _080CFA9C + .4byte _080CFAD8 + .4byte _080CFB34 + .4byte _080CFB70 +_080CF620: + ldr r4, _080CF640 @ =gUnknown_2021D18 + ldr r1, _080CF644 @ =gUnknown_83FE672 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CF648 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + b _080CFB1A + .align 2, 0 +_080CF640: .4byte gUnknown_2021D18 +_080CF644: .4byte gUnknown_83FE672 +_080CF648: .4byte gUnknown_3005090 +_080CF64C: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF65C + bl _080D003A +_080CF65C: + ldr r0, _080CF668 @ =gUnknown_3005090 + adds r4, r7, r6 + lsls r4, 3 + adds r4, r0 + b _080CFA88 + .align 2, 0 +_080CF668: .4byte gUnknown_3005090 +_080CF66C: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080CF67A + bl _080D003A +_080CF67A: + movs r0, 0x84 + lsls r0, 1 + bl m4aSongNumStop + ldr r0, _080CF694 @ =0x00000107 + bl sub_80722CC + ldr r0, _080CF698 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + b _080CFB1A + .align 2, 0 +_080CF694: .4byte 0x00000107 +_080CF698: .4byte gUnknown_3005090 +_080CF69C: + bl sub_80723E0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080CF6AC + bl _080D003A +_080CF6AC: + movs r0, 0x84 + lsls r0, 1 + bl sub_80722A0 + ldr r0, _080CF6CC @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r4, [sp] + movs r0, 0x1C + movs r1, 0x4 + b _080CFD56 + .align 2, 0 +_080CF6CC: .4byte gUnknown_3005090 +_080CF6D0: + ldr r0, _080CF724 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CF6E0 + bl _080D003A +_080CF6E0: + movs r0, 0x1 + bl sub_80D0374 + ldr r2, _080CF728 @ =gUnknown_202063C + ldr r0, _080CF72C @ =gUnknown_2039A20 + ldr r0, [r0] + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r5, r0, 0 + adds r5, 0x10 + adds r0, r5, 0 + bl sub_80F5DA0 + ldr r1, _080CF730 @ =gUnknown_2023E82 + strb r0, [r1, 0x2] + ldr r0, _080CF734 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r1, _080CF738 @ =0x00000603 + movs r0, 0xE + bl sub_8000A38 + bl _080D003A + .align 2, 0 +_080CF724: .4byte gUnknown_2037AB8 +_080CF728: .4byte gUnknown_202063C +_080CF72C: .4byte gUnknown_2039A20 +_080CF730: .4byte gUnknown_2023E82 +_080CF734: .4byte gUnknown_3005090 +_080CF738: .4byte 0x00000603 +_080CF73C: + ldr r4, _080CF770 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CF752 + bl _080D003A +_080CF752: + adds r1, r7, r6 + lsls r1, 3 + adds r1, r5 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r0, _080CF774 @ =gUnknown_2039A20 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x3] + bl sub_80F5EC0 + strb r0, [r4, 0x2] + bl _080D003A + .align 2, 0 +_080CF770: .4byte gUnknown_2023E82 +_080CF774: .4byte gUnknown_2039A20 +_080CF778: + ldr r4, _080CF7A4 @ =gUnknown_2023E82 + ldrb r0, [r4, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CF78E + bl _080D003A +_080CF78E: + ldr r0, _080CF7A8 @ =gUnknown_2039A20 + ldr r1, [r0] + ldrb r0, [r1] + ldrb r1, [r1, 0x1] + bl sub_80F62B4 + strb r0, [r4, 0x2] + adds r1, r7, r6 + lsls r1, 3 + adds r1, r5 + b _080CFB1A + .align 2, 0 +_080CF7A4: .4byte gUnknown_2023E82 +_080CF7A8: .4byte gUnknown_2039A20 +_080CF7AC: + ldr r2, _080CF7E4 @ =gUnknown_2039A20 + ldr r1, [r2] + ldrb r0, [r1, 0x3] + subs r0, 0x1 + strb r0, [r1, 0x3] + lsls r0, 24 + cmp r0, 0 + beq _080CF7C0 + bl _080D003A +_080CF7C0: + ldr r1, [r2] + movs r0, 0x3 + strb r0, [r1, 0x3] + ldr r0, _080CF7E8 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080CF7DC + bl _080D003A +_080CF7DC: + adds r1, r7, r6 + lsls r1, 3 + adds r1, r5 + b _080CFB1A + .align 2, 0 +_080CF7E4: .4byte gUnknown_2039A20 +_080CF7E8: .4byte gUnknown_2023E82 +_080CF7EC: + bl sub_80F5F74 + ldr r1, _080CF800 @ =gUnknown_2023E82 + strb r0, [r1, 0x2] + ldr r0, _080CF804 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + b _080CFB1A + .align 2, 0 +_080CF800: .4byte gUnknown_2023E82 +_080CF804: .4byte gUnknown_3005090 +_080CF808: + ldr r0, _080CF834 @ =gUnknown_2023E82 + mov r8, r0 + ldrb r0, [r0, 0x2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080CF820 + bl _080D003A +_080CF820: + adds r4, r7, r6 + lsls r4, 3 + adds r4, r5 + ldrh r0, [r4, 0xC] + bl sub_80F6190 + mov r1, r8 + strb r0, [r1, 0x2] + b _080CFA90 + .align 2, 0 +_080CF834: .4byte gUnknown_2023E82 +_080CF838: + ldr r0, _080CF85C @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080CF84E + bl _080D003A +_080CF84E: + movs r0, 0x1B + bl sub_80722CC + adds r1, r7, r6 + lsls r1, 3 + adds r1, r5 + b _080CFB1A + .align 2, 0 +_080CF85C: .4byte gUnknown_2023E82 +_080CF860: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080CF86E + bl _080D003A +_080CF86E: + ldr r0, _080CF890 @ =gUnknown_3005090 + adds r4, r7, r6 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0xC] + movs r1, 0 + bl sub_8071DF0 + ldr r0, _080CF894 @ =gUnknown_2037238 + ldr r1, _080CF898 @ =gUnknown_2039A20 + ldr r1, [r1] + adds r1, 0x4 + movs r2, 0x60 + bl memcpy + b _080CFA90 + .align 2, 0 +_080CF890: .4byte gUnknown_3005090 +_080CF894: .4byte gUnknown_2037238 +_080CF898: .4byte gUnknown_2039A20 +_080CF89C: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080CF8A8 + b _080D003A +_080CF8A8: + ldr r4, _080CF914 @ =gUnknown_2021D18 + ldr r1, _080CF918 @ =gUnknown_83FE688 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CF91C @ =0x00000103 + bl sub_8071C60 + ldr r2, _080CF920 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + adds r2, r1 + adds r2, 0xC + mov r0, r8 + movs r1, 0xB + bl sub_804037C + mov r0, r8 + bl sub_803E47C + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0xC] + mov r0, r8 + bl sub_804356C + ldrh r0, [r4, 0xC] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2 + bl sub_8088E74 + ldrh r0, [r4, 0xC] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl sub_8088E74 + movs r0, 0xE + bl sub_8054E90 + b _080D003A + .align 2, 0 +_080CF914: .4byte gUnknown_2021D18 +_080CF918: .4byte gUnknown_83FE688 +_080CF91C: .4byte 0x00000103 +_080CF920: .4byte gUnknown_3005090 +_080CF924: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CF932 + b _080D003A +_080CF932: + bl sub_8071C9C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CF940 + b _080D003A +_080CF940: + ldr r1, _080CF98C @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r4, r0, r1 + ldrb r1, [r4, 0x10] + mov r0, r8 + bl sub_803EA88 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + beq _080CF9AC + movs r3, 0x1A + ldrsh r2, [r4, r3] + cmp r2, 0 + bne _080CF9AC + ldrh r1, [r4, 0xE] + movs r0, 0x80 + orrs r0, r1 + strh r0, [r4, 0xE] + strh r2, [r4, 0x10] + strh r2, [r4, 0x14] + mov r0, r8 + movs r1, 0x2 + add r2, sp, 0xC + bl sub_803FBE8 + ldr r0, _080CF990 @ =gUnknown_2022AB8 + add r1, sp, 0xC + bl sub_8008CF4 + ldr r0, _080CF994 @ =0x0000ffff + cmp r5, r0 + bne _080CF998 + movs r0, 0x14 + strh r0, [r4, 0x8] + b _080D003A + .align 2, 0 +_080CF98C: .4byte gUnknown_3005090 +_080CF990: .4byte gUnknown_2022AB8 +_080CF994: .4byte 0x0000ffff +_080CF998: + ldr r0, _080CF9A8 @ =0x0000fffe + cmp r5, r0 + bne _080CF9A0 + b _080D003A +_080CF9A0: + movs r0, 0x12 + strh r0, [r4, 0x8] + b _080D003A + .align 2, 0 +_080CF9A8: .4byte 0x0000fffe +_080CF9AC: + movs r0, 0x84 + lsls r0, 1 + bl sub_80722A0 + ldr r1, _080CF9C8 @ =gUnknown_841E325 + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CF9CC @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + b _080CFB1A + .align 2, 0 +_080CF9C8: .4byte gUnknown_841E325 +_080CF9CC: .4byte gUnknown_3005090 +_080CF9D0: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + beq _080CF9E0 + b _080D003A +_080CF9E0: + adds r0, r6, 0 + bl sub_8077508 + ldr r4, _080CFA08 @ =gUnknown_2039A20 + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + ldr r2, _080CFA0C @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _080CFA10 @ =gUnknown_300537C + ldr r0, [r0] + bl sub_8000544 + b _080D003A + .align 2, 0 +_080CFA08: .4byte gUnknown_2039A20 +_080CFA0C: .4byte gUnknown_3003E50 +_080CFA10: .4byte gUnknown_300537C +_080CFA14: + ldr r0, _080CFA60 @ =gUnknown_2023E82 + ldrb r1, [r0, 0x2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080CFA28 + b _080D003A +_080CFA28: + bl m4aMPlayAllStop + ldr r2, _080CFA64 @ =gUnknown_202063C + ldr r0, _080CFA68 @ =gUnknown_2039A20 + ldr r0, [r0] + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + ldr r1, _080CFA6C @ =0x0004001c + orrs r0, r1 + ldr r1, _080CFA70 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r5 + b _080CFB1A + .align 2, 0 +_080CFA60: .4byte gUnknown_2023E82 +_080CFA64: .4byte gUnknown_202063C +_080CFA68: .4byte gUnknown_2039A20 +_080CFA6C: .4byte 0x0004001c +_080CFA70: .4byte 0x00007fff +_080CFA74: + ldr r0, _080CFA98 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CFA82 + b _080D003A +_080CFA82: + adds r4, r7, r6 + lsls r4, 3 + adds r4, r5 +_080CFA88: + ldrh r0, [r4, 0xA] + movs r1, 0 + bl sub_8071DF0 +_080CFA90: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D003A + .align 2, 0 +_080CFA98: .4byte gUnknown_2037AB8 +_080CFA9C: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080CFAA8 + b _080D003A +_080CFAA8: + ldr r4, _080CFACC @ =gUnknown_2021D18 + ldr r1, _080CFAD0 @ =gUnknown_83FE6D0 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080CFAD4 @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x1A] + b _080D0006 + .align 2, 0 +_080CFACC: .4byte gUnknown_2021D18 +_080CFAD0: .4byte gUnknown_83FE6D0 +_080CFAD4: .4byte gUnknown_3005090 +_080CFAD8: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CFAE6 + b _080D003A +_080CFAE6: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CFAF2 + b _080D003A +_080CFAF2: + bl sub_8026878 + ldr r0, _080CFB24 @ =0x00000101 + bl sub_8071C60 + ldr r0, _080CFB28 @ =gUnknown_83FDF3C + ldr r0, [r0, 0xC] + bl sub_80D77F4 + ldr r1, _080CFB2C @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CFB30 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x40 + strh r0, [r1, 0x10] +_080CFB1A: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080D003A + .align 2, 0 +_080CFB24: .4byte 0x00000101 +_080CFB28: .4byte gUnknown_83FDF3C +_080CFB2C: .4byte gUnknown_202298C +_080CFB30: .4byte gUnknown_3005090 +_080CFB34: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CFB42 + b _080D003A +_080CFB42: + bl sub_8071C9C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CFB50 + b _080D003A +_080CFB50: + ldr r0, _080CFB6C @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x10] + subs r0, 0x1 + strh r0, [r1, 0x10] + lsls r0, 16 + cmp r0, 0 + beq _080CFB66 + b _080D003A +_080CFB66: + movs r0, 0xD + strh r0, [r1, 0x8] + b _080D003A + .align 2, 0 +_080CFB6C: .4byte gUnknown_3005090 +_080CFB70: + adds r0, r7, r6 + lsls r0, 3 + adds r0, r5 + movs r1, 0x14 + ldrsh r0, [r0, r1] + cmp r0, 0xB + bls _080CFB80 + b _080D003A +_080CFB80: + lsls r0, 2 + ldr r1, _080CFB8C @ =_080CFB90 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CFB8C: .4byte _080CFB90 + .align 2, 0 +_080CFB90: + .4byte _080CFBC0 + .4byte _080CFC0C + .4byte _080CFC54 + .4byte _080CFC92 + .4byte _080CFCFC + .4byte _080CFDAC + .4byte _080CFE30 + .4byte _080CFF28 + .4byte _080CFF70 + .4byte _080CFFB8 + .4byte _080CFFEC + .4byte _080D0018 +_080CFBC0: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CFBCE + b _080D003A +_080CFBCE: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CFBDA + b _080D003A +_080CFBDA: + bl sub_8026878 + ldr r0, _080CFC00 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x10] + bl sub_80D77F4 + ldr r1, _080CFC04 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CFC08 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080D0038 + .align 2, 0 +_080CFC00: .4byte gUnknown_83FDF3C +_080CFC04: .4byte gUnknown_202298C +_080CFC08: .4byte gUnknown_3005090 +_080CFC0C: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CFC1A + b _080D003A +_080CFC1A: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CFC26 + b _080D003A +_080CFC26: + ldr r0, _080CFC48 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x14] + bl sub_80D77F4 + ldr r1, _080CFC4C @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CFC50 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080D0038 + .align 2, 0 +_080CFC48: .4byte gUnknown_83FDF3C +_080CFC4C: .4byte gUnknown_202298C +_080CFC50: .4byte gUnknown_3005090 +_080CFC54: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080CFC92 + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080CFC92 + ldr r0, _080CFCE8 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x18] + bl sub_80D77F4 + ldr r1, _080CFCEC @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CFCF0 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x5 + strh r0, [r1, 0x16] + movs r0, 0x9 + strh r0, [r1, 0x18] + ldrh r0, [r1, 0x14] + adds r0, 0x1 + strh r0, [r1, 0x14] +_080CFC92: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CFCA0 + b _080D003A +_080CFCA0: + bl sub_80723E0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080CFCAE + b _080D003A +_080CFCAE: + movs r0, 0 + movs r1, 0xA8 + movs r2, 0xE0 + bl sub_814FE40 + ldr r0, _080CFCF4 @ =gUnknown_826D1CC + movs r1, 0xA8 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r3, _080CFCF8 @ =gUnknown_2023E82 + strb r4, [r3, 0x1] + ldr r0, _080CFCF0 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + movs r2, 0 + strh r0, [r1, 0x14] + strb r2, [r3, 0x1] + b _080D003A + .align 2, 0 +_080CFCE8: .4byte gUnknown_83FDF3C +_080CFCEC: .4byte gUnknown_202298C +_080CFCF0: .4byte gUnknown_3005090 +_080CFCF4: .4byte gUnknown_826D1CC +_080CFCF8: .4byte gUnknown_2023E82 +_080CFCFC: + bl sub_81100C8 + lsls r0, 24 + asrs r4, r0, 24 + cmp r4, 0 + beq _080CFD1C + cmp r4, 0 + bgt _080CFD16 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _080CFD70 + b _080D003A +_080CFD16: + cmp r4, 0x1 + beq _080CFD70 + b _080D003A +_080CFD1C: + ldr r0, _080CFD60 @ =gUnknown_2023E82 + strb r4, [r0, 0x1] + ldr r0, _080CFD64 @ =gUnknown_83FDF3C + movs r3, 0x92 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + bl sub_80D77F4 + ldr r1, _080CFD68 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080CFD6C @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x16] + strh r1, [r0, 0x14] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x5 + beq _080CFD4E + b _080D003A +_080CFD4E: + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 +_080CFD56: + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080D003A + .align 2, 0 +_080CFD60: .4byte gUnknown_2023E82 +_080CFD64: .4byte gUnknown_83FDF3C +_080CFD68: .4byte gUnknown_202298C +_080CFD6C: .4byte gUnknown_3005090 +_080CFD70: + ldr r1, _080CFD9C @ =gUnknown_2023E82 + movs r0, 0x1 + strb r0, [r1, 0x1] + ldr r0, _080CFDA0 @ =gUnknown_83FDF3C + movs r1, 0x92 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + bl sub_80D77F4 + ldr r1, _080CFDA4 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080CFDA8 @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x18] + strh r1, [r0, 0x14] + b _080D003A + .align 2, 0 +_080CFD9C: .4byte gUnknown_2023E82 +_080CFDA0: .4byte gUnknown_83FDF3C +_080CFDA4: .4byte gUnknown_202298C +_080CFDA8: .4byte gUnknown_3005090 +_080CFDAC: + ldr r0, _080CFE14 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CFDBA + b _080D003A +_080CFDBA: + ldr r0, _080CFE18 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _080CFDC6 + bl sub_80FCE44 +_080CFDC6: + movs r0, 0x3 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x1 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 + bl sub_8003ECC + ldr r0, _080CFE1C @ =gUnknown_2024284 + ldr r1, _080CFE20 @ =gUnknown_3005090 + adds r5, r7, r6 + lsls r5, 3 + adds r5, r1 + ldrb r1, [r5, 0x1C] + ldr r2, _080CFE24 @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080CFE28 @ =sub_80CE2DC + ldr r4, _080CFE2C @ =gUnknown_2024022 + ldrh r4, [r4] + str r4, [sp] + bl sub_8134738 + ldrh r0, [r5, 0x14] + adds r0, 0x1 + strh r0, [r5, 0x14] + b _080D003A + .align 2, 0 +_080CFE14: .4byte gUnknown_2037AB8 +_080CFE18: .4byte gUnknown_3003F3C +_080CFE1C: .4byte gUnknown_2024284 +_080CFE20: .4byte gUnknown_3005090 +_080CFE24: .4byte gUnknown_2024029 +_080CFE28: .4byte sub_80CE2DC +_080CFE2C: .4byte gUnknown_2024022 +_080CFE30: + ldr r0, _080CFE64 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CFE3E + b _080D003A +_080CFE3E: + ldr r0, _080CFE68 @ =gUnknown_30030F0 + ldr r1, [r0, 0x4] + ldr r0, _080CFE6C @ =sub_80CE72C + cmp r1, r0 + beq _080CFE4A + b _080D003A +_080CFE4A: + bl sub_8138B2C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bne _080CFE74 + ldr r0, _080CFE70 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x9 + b _080D0038 + .align 2, 0 +_080CFE64: .4byte gUnknown_2037AB8 +_080CFE68: .4byte gUnknown_30030F0 +_080CFE6C: .4byte sub_80CE72C +_080CFE70: .4byte gUnknown_3005090 +_080CFE74: + adds r1, r5, 0 + adds r1, 0xD + mov r0, r8 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80441B8 + cmp r0, 0 + beq _080CFEC0 + ldr r0, _080CFEB0 @ =gUnknown_83FDF3C + ldr r3, _080CFEB4 @ =0x000004cc + adds r0, r3 + ldr r0, [r0] + bl sub_80D77F4 + ldr r1, _080CFEB8 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080CFEBC @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0xB + strh r1, [r0, 0x14] + b _080D003A + .align 2, 0 +_080CFEB0: .4byte gUnknown_83FDF3C +_080CFEB4: .4byte 0x000004cc +_080CFEB8: .4byte gUnknown_202298C +_080CFEBC: .4byte gUnknown_3005090 +_080CFEC0: + ldr r1, _080CFF14 @ =gUnknown_2022AC8 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + strb r4, [r1, 0x2] + lsrs r0, r4, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + lsls r4, r5, 24 + lsrs r4, 24 + mov r0, r8 + adds r1, r4, 0 + bl sub_8041064 + ldr r0, _080CFF18 @ =gUnknown_2024022 + ldrh r1, [r0] + mov r0, r8 + adds r2, r4, 0 + bl sub_803E964 + ldr r0, _080CFF1C @ =gUnknown_83FDF3C + movs r1, 0xCF + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_80D77F4 + ldr r1, _080CFF20 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CFF24 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080D0038 + .align 2, 0 +_080CFF14: .4byte gUnknown_2022AC8 +_080CFF18: .4byte gUnknown_2024022 +_080CFF1C: .4byte gUnknown_83FDF3C +_080CFF20: .4byte gUnknown_202298C +_080CFF24: .4byte gUnknown_3005090 +_080CFF28: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _080CFF36 + b _080D003A +_080CFF36: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _080CFF42 + b _080D003A +_080CFF42: + ldr r0, _080CFF64 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x1C] + bl sub_80D77F4 + ldr r1, _080CFF68 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r0, _080CFF6C @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + b _080D0038 + .align 2, 0 +_080CFF64: .4byte gUnknown_83FDF3C +_080CFF68: .4byte gUnknown_202298C +_080CFF6C: .4byte gUnknown_3005090 +_080CFF70: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080D003A + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080D003A + ldr r0, _080CFFAC @ =gUnknown_83FDF3C + movs r3, 0xD0 + lsls r3, 2 + adds r0, r3 + ldr r0, [r0] + bl sub_80D77F4 + ldr r1, _080CFFB0 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080CFFB4 @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0x12 + strh r1, [r0, 0x8] + b _080D003A + .align 2, 0 +_080CFFAC: .4byte gUnknown_83FDF3C +_080CFFB0: .4byte gUnknown_202298C +_080CFFB4: .4byte gUnknown_3005090 +_080CFFB8: + ldr r0, _080CFFE0 @ =gUnknown_83FDF3C + ldr r0, [r0, 0x20] + bl sub_80D77F4 + ldr r1, _080CFFE4 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080CFFE8 @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0xA + strh r1, [r0, 0x16] + strh r2, [r0, 0x18] + movs r1, 0x3 + strh r1, [r0, 0x14] + b _080D003A + .align 2, 0 +_080CFFE0: .4byte gUnknown_83FDF3C +_080CFFE4: .4byte gUnknown_202298C +_080CFFE8: .4byte gUnknown_3005090 +_080CFFEC: + ldr r0, _080D000C @ =gUnknown_83FDF3C + ldr r0, [r0, 0x24] + bl sub_80D77F4 + ldr r1, _080D0010 @ =gUnknown_202298C + movs r0, 0 + movs r2, 0x1 + bl sub_8054508 + ldr r1, _080D0014 @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r0, r1 +_080D0006: + movs r1, 0xD + strh r1, [r0, 0x8] + b _080D003A + .align 2, 0 +_080D000C: .4byte gUnknown_83FDF3C +_080D0010: .4byte gUnknown_202298C +_080D0014: .4byte gUnknown_3005090 +_080D0018: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080D003A + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080D003A + ldr r0, _080D0048 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x5 +_080D0038: + strh r0, [r1, 0x14] +_080D003A: + add sp, 0x20 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0048: .4byte gUnknown_3005090 + thumb_func_end sub_80CF53C + + thumb_func_start nullsub_76 +nullsub_76: @ 80D004C + bx lr + thumb_func_end nullsub_76 + + thumb_func_start sub_80D0050 +sub_80D0050: @ 80D0050 + push {lr} + ldr r0, _080D00B8 @ =gUnknown_2022974 + ldrh r1, [r0] + movs r0, 0x10 + bl sub_8000A38 + ldr r0, _080D00BC @ =gUnknown_2022976 + ldrh r1, [r0] + movs r0, 0x12 + bl sub_8000A38 + ldr r0, _080D00C0 @ =gUnknown_2022978 + ldrh r1, [r0] + movs r0, 0x14 + bl sub_8000A38 + ldr r0, _080D00C4 @ =gUnknown_202297A + ldrh r1, [r0] + movs r0, 0x16 + bl sub_8000A38 + ldr r0, _080D00C8 @ =gUnknown_202297C + ldrh r1, [r0] + movs r0, 0x18 + bl sub_8000A38 + ldr r0, _080D00CC @ =gUnknown_202297E + ldrh r1, [r0] + movs r0, 0x1A + bl sub_8000A38 + ldr r0, _080D00D0 @ =gUnknown_2022980 + ldrh r1, [r0] + movs r0, 0x1C + bl sub_8000A38 + ldr r0, _080D00D4 @ =gUnknown_2022982 + ldrh r1, [r0] + movs r0, 0x1E + bl sub_8000A38 + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + bl sub_8087F54 + pop {r0} + bx r0 + .align 2, 0 +_080D00B8: .4byte gUnknown_2022974 +_080D00BC: .4byte gUnknown_2022976 +_080D00C0: .4byte gUnknown_2022978 +_080D00C4: .4byte gUnknown_202297A +_080D00C8: .4byte gUnknown_202297C +_080D00CC: .4byte gUnknown_202297E +_080D00D0: .4byte gUnknown_2022980 +_080D00D4: .4byte gUnknown_2022982 + thumb_func_end sub_80D0050 + + thumb_func_start sub_80D00D8 +sub_80D00D8: @ 80D00D8 + push {lr} + ldr r0, _080D0140 @ =gUnknown_2022974 + ldrh r1, [r0] + movs r0, 0x10 + bl sub_8000A38 + ldr r0, _080D0144 @ =gUnknown_2022976 + ldrh r1, [r0] + movs r0, 0x12 + bl sub_8000A38 + ldr r0, _080D0148 @ =gUnknown_2022978 + ldrh r1, [r0] + movs r0, 0x14 + bl sub_8000A38 + ldr r0, _080D014C @ =gUnknown_202297A + ldrh r1, [r0] + movs r0, 0x16 + bl sub_8000A38 + ldr r0, _080D0150 @ =gUnknown_202297C + ldrh r1, [r0] + movs r0, 0x18 + bl sub_8000A38 + ldr r0, _080D0154 @ =gUnknown_202297E + ldrh r1, [r0] + movs r0, 0x1A + bl sub_8000A38 + ldr r0, _080D0158 @ =gUnknown_2022980 + ldrh r1, [r0] + movs r0, 0x1C + bl sub_8000A38 + ldr r0, _080D015C @ =gUnknown_2022982 + ldrh r1, [r0] + movs r0, 0x1E + bl sub_8000A38 + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + bl sub_8087F54 + pop {r0} + bx r0 + .align 2, 0 +_080D0140: .4byte gUnknown_2022974 +_080D0144: .4byte gUnknown_2022976 +_080D0148: .4byte gUnknown_2022978 +_080D014C: .4byte gUnknown_202297A +_080D0150: .4byte gUnknown_202297C +_080D0154: .4byte gUnknown_202297E +_080D0158: .4byte gUnknown_2022980 +_080D015C: .4byte gUnknown_2022982 + thumb_func_end sub_80D00D8 + + thumb_func_start sub_80D0160 +sub_80D0160: @ 80D0160 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080D01E0 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0xC + ldrsh r5, [r4, r0] + cmp r5, 0 + bne _080D020E + ldrh r0, [r4, 0xA] + adds r1, r0, 0x1 + strh r1, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080D020E + ldrh r1, [r4] + adds r0, r1, 0x1 + strh r0, [r4] + lsls r1, 16 + asrs r1, 16 + ldr r3, _080D01E4 @ =gUnknown_83F846D + movs r2, 0x4 + ldrsh r0, [r4, r2] + lsls r2, r0, 2 + adds r0, r3, 0x3 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r1, r0 + ble _080D0200 + adds r0, r3, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + movs r2, 0x2 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080D01E8 + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + movs r0, 0x6 + ldrsh r2, [r4, r0] + movs r1, 0x4 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r1, r3, 0x2 + adds r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bne _080D01D2 + strh r5, [r4, 0x6] + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] +_080D01D2: + movs r2, 0x4 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0] + b _080D01FE + .align 2, 0 +_080D01E0: .4byte gUnknown_3005098 +_080D01E4: .4byte gUnknown_83F846D +_080D01E8: + ldr r0, _080D0214 @ =gUnknown_2039A24 + lsls r1, 5 + ldr r0, [r0] + adds r0, r1 + movs r1, 0xA0 + movs r2, 0x20 + bl sub_80703EC + strh r5, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 +_080D01FE: + strh r0, [r4, 0x2] +_080D0200: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bne _080D020E + adds r0, r6, 0 + bl sub_8077508 +_080D020E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D0214: .4byte gUnknown_2039A24 + thumb_func_end sub_80D0160 + + thumb_func_start sub_80D0218 +sub_80D0218: @ 80D0218 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080D023C @ =sub_80D025C + movs r1, 0x7 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r4, 0 + bne _080D0244 + ldr r1, _080D0240 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0xC] + b _080D0252 + .align 2, 0 +_080D023C: .4byte sub_80D025C +_080D0240: .4byte gUnknown_3005090 +_080D0244: + ldr r0, _080D0258 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0xC] +_080D0252: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D0258: .4byte gUnknown_3005090 + thumb_func_end sub_80D0218 + + thumb_func_start sub_80D025C +sub_80D025C: @ 80D025C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080D0288 @ =gUnknown_2022978 + mov r8, r0 + ldr r1, _080D028C @ =gUnknown_202297A + mov r9, r1 + ldr r1, _080D0290 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0xC + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080D029C + ldr r7, _080D0294 @ =gUnknown_202297C + ldr r6, _080D0298 @ =gUnknown_202297E + b _080D02A0 + .align 2, 0 +_080D0288: .4byte gUnknown_2022978 +_080D028C: .4byte gUnknown_202297A +_080D0290: .4byte gUnknown_3005090 +_080D0294: .4byte gUnknown_202297C +_080D0298: .4byte gUnknown_202297E +_080D029C: + ldr r7, _080D0328 @ =gUnknown_2022980 + ldr r6, _080D032C @ =gUnknown_2022982 +_080D02A0: + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x8] + adds r0, 0x80 + ands r0, r1 + strh r0, [r4, 0xA] + movs r1, 0x8 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E4C + adds r0, 0x8 + mov r2, r8 + strh r0, [r2] + movs r1, 0x8 + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E30 + adds r0, 0x10 + mov r2, r9 + strh r0, [r2] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl sub_8044E4C + adds r0, 0x8 + strh r0, [r7] + movs r2, 0xA + ldrsh r0, [r4, r2] + movs r1, 0x4 + bl sub_8044E30 + adds r0, 0x10 + strh r0, [r6] + ldr r0, _080D0330 @ =sub_80D0160 + bl sub_8077650 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080D031A + adds r0, r5, 0 + bl sub_8077508 + mov r0, r8 + strh r4, [r0] + mov r1, r9 + strh r4, [r1] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r7] + strh r4, [r6] +_080D031A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0328: .4byte gUnknown_2022980 +_080D032C: .4byte gUnknown_2022982 +_080D0330: .4byte sub_80D0160 + thumb_func_end sub_80D025C + + thumb_func_start sub_80D0334 +sub_80D0334: @ 80D0334 + push {r4-r7,lr} + adds r6, r0, 0 + movs r1, 0 + ldr r5, _080D036C @ =gUnknown_83F8400 + ldr r7, _080D0370 @ =gUnknown_83F847D +_080D033E: + lsls r0, r1, 4 + adds r4, r1, 0x1 + adds r2, r0, r7 + lsls r0, r1, 5 + adds r1, r0, r6 + movs r3, 0xF +_080D034A: + ldrb r0, [r2] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strh r0, [r1] + adds r2, 0x1 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080D034A + adds r1, r4, 0 + cmp r1, 0x31 + ble _080D033E + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D036C: .4byte gUnknown_83F8400 +_080D0370: .4byte gUnknown_83F847D + thumb_func_end sub_80D0334 + + thumb_func_start sub_80D0374 +sub_80D0374: @ 80D0374 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080D0398 @ =gUnknown_2039A24 + movs r0, 0xC8 + lsls r0, 3 + bl sub_8002BB0 + str r0, [r4] + bl sub_80D0334 + cmp r5, 0 + bne _080D039C + movs r6, 0x1 + movs r4, 0x2 + b _080D03A0 + .align 2, 0 +_080D0398: .4byte gUnknown_2039A24 +_080D039C: + movs r6, 0x1 + movs r4, 0x3 +_080D03A0: + ldr r0, _080D0420 @ =gUnknown_83F7D60 + movs r1, 0xA0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080D0424 @ =gUnknown_83F6CB0 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _080D0428 @ =gUnknown_83F73A8 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r1, _080D042C @ =gUnknown_83F788C + adds r0, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC + adds r0, r4, 0 + bl sub_80020BC + cmp r5, 0 + bne _080D0438 + ldr r1, _080D0430 @ =0x00000442 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080D0434 @ =0x00000808 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xBA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + adds r0, r6, 0 + movs r1, 0x7 + movs r2, 0x2 + bl sub_80019E4 + adds r0, r4, 0 + movs r1, 0x7 + movs r2, 0x2 + bl sub_80019E4 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + b _080D0452 + .align 2, 0 +_080D0420: .4byte gUnknown_83F7D60 +_080D0424: .4byte gUnknown_83F6CB0 +_080D0428: .4byte gUnknown_83F73A8 +_080D042C: .4byte gUnknown_83F788C +_080D0430: .4byte 0x00000442 +_080D0434: .4byte 0x00000808 +_080D0438: + ldr r1, _080D0468 @ =0x00000842 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080D046C @ =0x00000808 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0xDA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 +_080D0452: + ldr r0, _080D0470 @ =sub_80D0160 + movs r1, 0x5 + bl sub_807741C + adds r0, r5, 0 + bl sub_80D0218 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D0468: .4byte 0x00000842 +_080D046C: .4byte 0x00000808 +_080D0470: .4byte sub_80D0160 + thumb_func_end sub_80D0374 + + thumb_func_start sub_80D0474 +sub_80D0474: @ 80D0474 + push {lr} + ldr r0, _080D04A0 @ =sub_80D0160 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080D0492 + ldr r0, _080D04A4 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x14] +_080D0492: + movs r0, 0 + movs r1, 0xA0 + movs r2, 0x20 + bl sub_8070424 + pop {r0} + bx r0 + .align 2, 0 +_080D04A0: .4byte sub_80D0160 +_080D04A4: .4byte gUnknown_3005090 + thumb_func_end sub_80D0474 + + thumb_func_start sub_80D04A8 +sub_80D04A8: @ 80D04A8 + push {lr} + ldr r0, _080D04E0 @ =sub_80D0160 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080D04BC + bl sub_8077508 +_080D04BC: + ldr r0, _080D04E4 @ =sub_80D025C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080D04CE + bl sub_8077508 +_080D04CE: + movs r0, 0 + movs r1, 0xA0 + movs r2, 0x20 + bl sub_8070424 + bl sub_80D04E8 + pop {r0} + bx r0 + .align 2, 0 +_080D04E0: .4byte sub_80D0160 +_080D04E4: .4byte sub_80D025C + thumb_func_end sub_80D04A8 + + thumb_func_start sub_80D04E8 +sub_80D04E8: @ 80D04E8 + push {lr} + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080D0544 @ =gUnknown_2022978 + movs r1, 0 + strh r1, [r0] + ldr r0, _080D0548 @ =gUnknown_202297A + strh r1, [r0] + ldr r0, _080D054C @ =gUnknown_202297C + strh r1, [r0] + movs r0, 0x1 + movs r1, 0x5 + bl sub_8011C44 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x1 + movs r1, 0x7 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x5 + bl sub_8011C44 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x2 + movs r1, 0x7 + bl sub_80019E4 + movs r1, 0xCA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080D0550 @ =gUnknown_2039A24 + ldr r0, [r0] + bl sub_8002BC4 + pop {r0} + bx r0 + .align 2, 0 +_080D0544: .4byte gUnknown_2022978 +_080D0548: .4byte gUnknown_202297A +_080D054C: .4byte gUnknown_202297C +_080D0550: .4byte gUnknown_2039A24 + thumb_func_end sub_80D04E8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fame_checker.s b/asm/fame_checker.s new file mode 100644 index 000000000..0424e487c --- /dev/null +++ b/asm/fame_checker.s @@ -0,0 +1,4171 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_812C380 +sub_812C380: @ 812C380 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_812C380 + + thumb_func_start sub_812C394 +sub_812C394: @ 812C394 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_812C394 + + thumb_func_start sub_812C3AC +sub_812C3AC: @ 812C3AC + push {r4,r5,lr} + adds r5, r0, 0 + movs r0, 0 + bl sub_80006F4 + ldr r4, _0812C3F0 @ =gUnknown_203B0FC + movs r0, 0x24 + bl sub_8002BB0 + str r0, [r4] + str r5, [r0] + movs r1, 0 + strb r1, [r0, 0x9] + ldr r0, [r4] + strb r1, [r0, 0xA] + ldr r0, [r4] + strb r1, [r0, 0xB] + ldr r1, [r4] + adds r1, 0x23 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + movs r0, 0xC7 + bl sub_80722CC + ldr r0, _0812C3F4 @ =sub_812C3F8 + bl sub_8000544 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812C3F0: .4byte gUnknown_203B0FC +_0812C3F4: .4byte sub_812C3F8 + thumb_func_end sub_812C3AC + + thumb_func_start sub_812C3F8 +sub_812C3F8: @ 812C3F8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + ldr r0, _0812C41C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x7 + bls _0812C410 + b _0812C626 +_0812C410: + lsls r0, 2 + ldr r1, _0812C420 @ =_0812C424 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812C41C: .4byte gUnknown_30030F0 +_0812C420: .4byte _0812C424 + .align 2, 0 +_0812C424: + .4byte _0812C444 + .4byte _0812C450 + .4byte _0812C456 + .4byte _0812C4C0 + .4byte _0812C540 + .4byte _0812C578 + .4byte _0812C5A0 + .4byte _0812C5D4 +_0812C444: + movs r0, 0 + bl sub_80006F4 + bl sub_812D420 + b _0812C5BE +_0812C450: + bl sub_812D558 + b _0812C5BE +_0812C456: + ldr r6, _0812C4B0 @ =gUnknown_203B0F0 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002BB0 + str r0, [r6] + ldr r1, _0812C4B4 @ =gUnknown_203B0F4 + mov r8, r1 + movs r0, 0x80 + lsls r0, 5 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + ldr r5, _0812C4B8 @ =gUnknown_203B0F8 + adds r0, r4, 0 + bl sub_8002BB0 + str r0, [r5] + movs r0, 0 + bl sub_8001618 + ldr r1, _0812C4BC @ =gUnknown_845FBF4 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r1, [r6] + movs r0, 0x3 + bl sub_8001FA0 + ldr r1, [r5] + movs r0, 0x2 + bl sub_8001FA0 + mov r0, r8 + ldr r1, [r0] + movs r0, 0x1 + bl sub_8001FA0 + bl sub_812D594 + b _0812C5BE + .align 2, 0 +_0812C4B0: .4byte gUnknown_203B0F0 +_0812C4B4: .4byte gUnknown_203B0F4 +_0812C4B8: .4byte gUnknown_203B0F8 +_0812C4BC: .4byte gUnknown_845FBF4 +_0812C4C0: + ldr r1, _0812C52C @ =gUnknown_8E9F260 + movs r2, 0xA5 + lsls r2, 5 + movs r0, 0x3 + movs r3, 0 + bl sub_80017D0 + ldr r1, _0812C530 @ =gUnknown_8EA0700 + movs r5, 0x20 + str r5, [sp] + str r5, [sp, 0x4] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002124 + ldr r4, _0812C534 @ =gUnknown_8E9F220 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x40 + bl sub_80703EC + adds r4, 0x20 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _0812C538 @ =gUnknown_8EA0F00 + str r5, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002124 + ldr r1, _0812C53C @ =gUnknown_845C600 + str r5, [sp] + str r5, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1E + movs r3, 0 + bl sub_8002228 + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + b _0812C5BE + .align 2, 0 +_0812C52C: .4byte gUnknown_8E9F260 +_0812C530: .4byte gUnknown_8EA0700 +_0812C534: .4byte gUnknown_8E9F220 +_0812C538: .4byte gUnknown_8EA0F00 +_0812C53C: .4byte gUnknown_845C600 +_0812C540: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812C626 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + b _0812C5BE +_0812C578: + ldr r0, _0812C598 @ =gUnknown_845FC04 + bl sub_8003B24 + bl sub_8002C28 + bl sub_812CEC0 + ldr r4, _0812C59C @ =gUnknown_203B100 + movs r0, 0x88 + bl sub_8002BB0 + str r0, [r4] + bl sub_812DB28 + b _0812C5BE + .align 2, 0 +_0812C598: .4byte gUnknown_845FC04 +_0812C59C: .4byte gUnknown_203B100 +_0812C5A0: + bl sub_812C648 + movs r0, 0 + bl sub_812D1A8 + bl sub_812CE9C + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_0812C5BE: + ldr r1, _0812C5D0 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0812C626 + .align 2, 0 +_0812C5D0: .4byte gUnknown_30030F0 +_0812C5D4: + bl sub_812D584 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x7 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x8 + bl sub_8000A38 + ldr r0, _0812C634 @ =sub_812C380 + bl sub_80006F4 + ldr r0, _0812C638 @ =gUnknown_203B0FC + ldr r1, [r0] + movs r4, 0 + movs r0, 0 + strh r0, [r1, 0x4] + bl sub_812E000 + movs r0, 0x1 + movs r1, 0x4 + bl sub_812E178 + ldr r0, _0812C63C @ =sub_812C664 + movs r1, 0x8 + bl sub_807741C + ldr r0, _0812C640 @ =sub_812C394 + bl sub_8000544 + ldr r0, _0812C644 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + strb r4, [r0] +_0812C626: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812C634: .4byte sub_812C380 +_0812C638: .4byte gUnknown_203B0FC +_0812C63C: .4byte sub_812C664 +_0812C640: .4byte sub_812C394 +_0812C644: .4byte gUnknown_30030F0 + thumb_func_end sub_812C3F8 + + thumb_func_start sub_812C648 +sub_812C648: @ 812C648 + push {lr} + ldr r0, _0812C65C @ =gUnknown_845FB9C + bl sub_8008720 + ldr r0, _0812C660 @ =gUnknown_845FBDC + bl sub_8008974 + pop {r0} + bx r0 + .align 2, 0 +_0812C65C: .4byte gUnknown_845FB9C +_0812C660: .4byte gUnknown_845FBDC + thumb_func_end sub_812C648 + + thumb_func_start sub_812C664 +sub_812C664: @ 812C664 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0812C688 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812C684 + ldr r0, _0812C68C @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812C690 @ =sub_812C694 + str r0, [r1] +_0812C684: + pop {r0} + bx r0 + .align 2, 0 +_0812C688: .4byte gUnknown_2037AB8 +_0812C68C: .4byte gUnknown_3005090 +_0812C690: .4byte sub_812C694 + thumb_func_end sub_812C664 + + thumb_func_start sub_812C694 +sub_812C694: @ 812C694 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + ldr r0, _0812C714 @ =gUnknown_3005090 + adds r7, r1, r0 + adds r0, 0x8 + adds r1, r0 + mov r8, r1 + ldr r0, _0812C718 @ =sub_812E110 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0812C6C0 + b _0812C8EA +_0812C6C0: + bl sub_8002DE8 + ldr r0, _0812C71C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0812C6E8 + ldr r0, _0812C720 @ =gUnknown_203B0FC + ldr r2, [r0] + ldrb r1, [r2, 0x7] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0812C6E8 + ldr r1, [r2] + ldr r0, _0812C724 @ =sub_8107EB8 + cmp r1, r0 + beq _0812C6E8 + b _0812C8DA +_0812C6E8: + ldr r0, _0812C71C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0812C7DC + bl sub_812E064 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + bl sub_812C8F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812C728 + movs r0, 0xCB + bl sub_80722CC + b _0812C8EA + .align 2, 0 +_0812C714: .4byte gUnknown_3005090 +_0812C718: .4byte sub_812E110 +_0812C71C: .4byte gUnknown_30030F0 +_0812C720: .4byte gUnknown_203B0FC +_0812C724: .4byte sub_8107EB8 +_0812C728: + ldr r5, _0812C7D0 @ =gUnknown_203B0FC + ldr r0, [r5] + ldrb r0, [r0, 0x7] + lsrs r0, 2 + subs r0, 0x1 + cmp r4, r0 + bne _0812C738 + b _0812C8EA +_0812C738: + movs r0, 0xCB + bl sub_80722CC + movs r0, 0x58 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + movs r0, 0x3 + bl sub_812CEE0 + movs r0, 0x2 + movs r1, 0x4 + bl sub_812E178 + movs r0, 0x1 + movs r1, 0x5 + bl sub_812E178 + movs r0, 0x1 + bl sub_812D0F4 + ldr r0, [r5] + adds r0, 0xC + adds r0, r4 + ldrb r0, [r0] + bl sub_812D888 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0xC] + ldr r4, _0812C7D4 @ =gUnknown_202063C + movs r0, 0xC + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r6, 0xF0 + strh r6, [r0, 0x24] + movs r3, 0xC + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r5, 0x1 + strh r5, [r0, 0x2E] + bl sub_812D7E4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0xE] + movs r0, 0xE + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r6, [r0, 0x24] + movs r3, 0xE + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x2E] + ldr r0, _0812C7D8 @ =sub_812C9BC + str r0, [r7] + b _0812C8EA + .align 2, 0 +_0812C7D0: .4byte gUnknown_203B0FC +_0812C7D4: .4byte gUnknown_202063C +_0812C7D8: .4byte sub_812C9BC +_0812C7DC: + movs r6, 0x1 + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0812C8C4 + movs r0, 0 + bl sub_8107078 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _0812C824 @ =gUnknown_203B0FC + ldr r0, [r0] + ldrb r1, [r0, 0x7] + lsrs r0, r1, 2 + subs r0, 0x1 + cmp r4, r0 + beq _0812C8DA + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812C828 + movs r0, 0x2 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0812C8EA + bl sub_812D6B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812C8EA + bl sub_812CD3C + b _0812C8EA + .align 2, 0 +_0812C824: .4byte gUnknown_203B0FC +_0812C828: + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0812C8EA + movs r0, 0x5 + bl sub_80722CC + movs r1, 0xA + ldrsh r0, [r7, r1] + bl sub_812D724 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x8] + movs r4, 0 +_0812C846: + movs r3, 0xA + ldrsh r0, [r7, r3] + cmp r4, r0 + beq _0812C85E + ldr r0, _0812C8B4 @ =gUnknown_203B0FC + ldr r0, [r0] + adds r0, 0x1D + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_812CEFC +_0812C85E: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812C846 + ldr r1, _0812C8B8 @ =gUnknown_3005EC8 + movs r0, 0xFF + strb r0, [r1] + movs r0, 0 + bl sub_812E4A4 + movs r0, 0x2 + bl sub_812D0F4 + ldr r2, _0812C8BC @ =gUnknown_202063C + ldr r0, _0812C8B4 @ =gUnknown_203B0FC + ldr r0, [r0] + movs r3, 0xA + ldrsh r1, [r7, r3] + adds r0, 0x1D + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x30 + ldrsh r0, [r0, r1] + cmp r0, 0xFF + beq _0812C8A8 + adds r0, r5, 0 + bl sub_812CE04 + mov r3, r8 + ldrb r0, [r3, 0x2] + bl sub_812DA14 +_0812C8A8: + bl sub_812E048 + ldr r0, _0812C8C0 @ =sub_812CAD8 + str r0, [r7] + b _0812C8EA + .align 2, 0 +_0812C8B4: .4byte gUnknown_203B0FC +_0812C8B8: .4byte gUnknown_3005EC8 +_0812C8BC: .4byte gUnknown_202063C +_0812C8C0: .4byte sub_812CAD8 +_0812C8C4: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812C8E4 + adds r0, r5, 0 + bl sub_812C8F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812C8EA +_0812C8DA: + ldr r0, _0812C8E0 @ =sub_812CF3C + str r0, [r7] + b _0812C8EA + .align 2, 0 +_0812C8E0: .4byte sub_812CF3C +_0812C8E4: + movs r0, 0 + bl sub_8107078 +_0812C8EA: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812C694 + + thumb_func_start sub_812C8F8 +sub_812C8F8: @ 812C8F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0812C91C @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r5, _0812C920 @ =gUnknown_203B0FC + ldr r0, [r5] + ldrb r1, [r0, 0x7] + movs r3, 0x2 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0812C924 + movs r0, 0 + b _0812C982 + .align 2, 0 +_0812C91C: .4byte gUnknown_3005090 +_0812C920: .4byte gUnknown_203B0FC +_0812C924: + ldr r2, _0812C988 @ =gUnknown_202063C + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x2E] + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + adds r1, 0xA + strh r1, [r0, 0x24] + movs r0, 0xE + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x2E] + movs r0, 0xE + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + adds r1, 0xA + strh r1, [r0, 0x24] + bl sub_812CE9C + ldr r0, _0812C98C @ =sub_812CA1C + str r0, [r4] + bl sub_812C990 + ldr r1, [r5] + adds r1, 0x23 + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + movs r0, 0x1 +_0812C982: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0812C988: .4byte gUnknown_202063C +_0812C98C: .4byte sub_812CA1C + thumb_func_end sub_812C8F8 + + thumb_func_start sub_812C990 +sub_812C990: @ 812C990 + push {lr} + sub sp, 0x10 + ldr r2, _0812C9B8 @ =gUnknown_84181E4 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0812C9B8: .4byte gUnknown_84181E4 + thumb_func_end sub_812C990 + + thumb_func_start sub_812C9BC +sub_812C9BC: @ 812C9BC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0812C9F8 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r2, _0812C9FC @ =gUnknown_202063C + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0812CA08 + bl sub_812CD3C + ldr r0, _0812CA00 @ =gUnknown_203B0FC + ldr r2, [r0] + ldrb r0, [r2, 0x7] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x7] + ldr r0, _0812CA04 @ =sub_812C694 + str r0, [r4] + b _0812CA14 + .align 2, 0 +_0812C9F8: .4byte gUnknown_3005090 +_0812C9FC: .4byte gUnknown_202063C +_0812CA00: .4byte gUnknown_203B0FC +_0812CA04: .4byte sub_812C694 +_0812CA08: + movs r1, 0xA0 + lsls r1, 4 + movs r0, 0x1 + movs r2, 0x1 + bl sub_8001B90 +_0812CA14: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812C9BC + + thumb_func_start sub_812CA1C +sub_812CA1C: @ 812CA1C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0812CA44 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r0, 0x1 + bl sub_8001CCC + cmp r0, 0 + beq _0812CA48 + movs r1, 0xA0 + lsls r1, 4 + movs r0, 0x1 + movs r2, 0x2 + bl sub_8001B90 + b _0812CA52 + .align 2, 0 +_0812CA44: .4byte gUnknown_3005090 +_0812CA48: + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 +_0812CA52: + ldr r7, _0812CAC8 @ =gUnknown_202063C + movs r1, 0xC + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0812CAC0 + ldr r6, _0812CACC @ =gUnknown_203B0FC + ldr r0, [r6] + ldrb r1, [r0, 0x7] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812CA7C + movs r0, 0 + bl sub_812D0F4 +_0812CA7C: + movs r0, 0x1 + movs r1, 0x4 + bl sub_812E178 + movs r0, 0x2 + movs r1, 0x2 + bl sub_812E178 + ldr r2, [r6] + ldrb r1, [r2, 0x7] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x7] + bl sub_812E064 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_812D9A8 + ldr r0, _0812CAD0 @ =sub_812C694 + str r0, [r5] + movs r0, 0xE + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r7, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0812CAD4 @ =sub_812D800 + str r1, [r0] +_0812CAC0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CAC8: .4byte gUnknown_202063C +_0812CACC: .4byte gUnknown_203B0FC +_0812CAD0: .4byte sub_812C694 +_0812CAD4: .4byte sub_812D800 + thumb_func_end sub_812CA1C + + thumb_func_start sub_812CAD8 +sub_812CAD8: @ 812CAD8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + ldr r0, _0812CB9C @ =gUnknown_3005090 + adds r5, r1, r0 + adds r0, 0x8 + adds r6, r1, r0 + bl sub_8002DE8 + ldr r0, _0812CBA0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812CB2E + movs r0, 0x2 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0812CB2E + ldr r0, _0812CBA4 @ =gUnknown_203B0FC + ldr r0, [r0] + movs r2, 0x2 + ldrsh r1, [r6, r2] + adds r0, 0x1D + adds r0, r1 + ldrb r1, [r0] + ldr r2, _0812CBA8 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x30 + ldrsh r0, [r0, r1] + cmp r0, 0xFF + beq _0812CB2E + adds r0, r4, 0 + bl sub_812CE04 +_0812CB2E: + ldr r0, _0812CBA0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812CBB8 + movs r0, 0x5 + bl sub_80722CC + movs r4, 0 + ldr r6, _0812CBA4 @ =gUnknown_203B0FC +_0812CB44: + ldr r0, [r6] + adds r0, 0x1D + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_812CEFC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812CB44 + bl sub_812CE9C + ldr r2, _0812CBA8 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _0812CBAC @ =sub_812D764 + str r1, [r0] + ldr r0, _0812CBB0 @ =gUnknown_3005EC8 + ldrb r0, [r0] + cmp r0, 0xFF + beq _0812CB80 + bl sub_812DB10 +_0812CB80: + movs r0, 0x1 + bl sub_812E4A4 + movs r0, 0 + bl sub_812D0F4 + bl sub_812E000 + bl sub_812C990 + ldr r0, _0812CBB4 @ =sub_812C694 + str r0, [r5] + b _0812CC62 + .align 2, 0 +_0812CB9C: .4byte gUnknown_3005090 +_0812CBA0: .4byte gUnknown_30030F0 +_0812CBA4: .4byte gUnknown_203B0FC +_0812CBA8: .4byte gUnknown_202063C +_0812CBAC: .4byte sub_812D764 +_0812CBB0: .4byte gUnknown_3005EC8 +_0812CBB4: .4byte sub_812C694 +_0812CBB8: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0812CBC8 + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0812CBF4 +_0812CBC8: + ldrh r1, [r5, 0xA] + movs r2, 0xA + ldrsh r0, [r5, r2] + cmp r0, 0x2 + ble _0812CBE4 + subs r0, r1, 0x3 + strh r0, [r5, 0xA] + movs r2, 0x1B + negs r2, r2 + adds r0, r4, 0 + movs r1, 0 + bl sub_812CC68 + b _0812CC62 +_0812CBE4: + adds r0, r1, 0x3 + strh r0, [r5, 0xA] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1B + bl sub_812CC68 + b _0812CC62 +_0812CBF4: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0812CC26 + ldrh r6, [r5, 0xA] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0812CC12 + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _0812CC1C +_0812CC12: + adds r0, r6, 0x2 + strh r0, [r5, 0xA] + adds r0, r4, 0 + movs r1, 0x5E + b _0812CC4A +_0812CC1C: + subs r0, r6, 0x1 + strh r0, [r5, 0xA] + movs r1, 0x2F + negs r1, r1 + b _0812CC48 +_0812CC26: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0812CC62 + movs r1, 0xA + ldrsh r0, [r5, r1] + adds r0, 0x1 + movs r1, 0x3 + bl __modsi3 + cmp r0, 0 + bne _0812CC52 + ldrh r0, [r5, 0xA] + subs r0, 0x2 + strh r0, [r5, 0xA] + movs r1, 0x5E + negs r1, r1 +_0812CC48: + adds r0, r4, 0 +_0812CC4A: + movs r2, 0 + bl sub_812CC68 + b _0812CC62 +_0812CC52: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + adds r0, r4, 0 + movs r1, 0x2F + movs r2, 0 + bl sub_812CC68 +_0812CC62: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_812CAD8 + + thumb_func_start sub_812CC68 +sub_812CC68: @ 812CC68 + push {r4-r7,lr} + sub sp, 0x8 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _0812CD18 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r0, 0xBB + bl sub_80722CC + ldr r2, _0812CD1C @ =gUnknown_202063C + movs r0, 0 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + lsls r4, 24 + asrs r4, 24 + ldrh r1, [r0, 0x20] + adds r4, r1 + strh r4, [r0, 0x20] + movs r0, 0 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + lsls r5, 24 + asrs r5, 24 + ldrh r1, [r0, 0x22] + adds r5, r1 + strh r5, [r0, 0x22] + movs r4, 0 + ldr r5, _0812CD20 @ =gUnknown_203B0FC +_0812CCBE: + ldr r0, [r5] + adds r0, 0x1D + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_812CEFC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812CCBE + movs r0, 0xD0 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + bl sub_812C990 + ldr r0, _0812CD20 @ =gUnknown_203B0FC + ldr r0, [r0] + movs r2, 0x2 + ldrsh r1, [r6, r2] + adds r0, 0x1D + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_812CEFC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812CD24 + adds r0, r7, 0 + bl sub_812CE04 + ldrb r0, [r6, 0x2] + bl sub_812DA14 + b _0812CD30 + .align 2, 0 +_0812CD18: .4byte gUnknown_3005098 +_0812CD1C: .4byte gUnknown_202063C +_0812CD20: .4byte gUnknown_203B0FC +_0812CD24: + ldr r0, _0812CD38 @ =gUnknown_3005EC8 + ldrb r0, [r0] + cmp r0, 0xFF + beq _0812CD30 + bl sub_812DB10 +_0812CD30: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CD38: .4byte gUnknown_3005EC8 + thumb_func_end sub_812CC68 + + thumb_func_start sub_812CD3C +sub_812CD3C: @ 812CD3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + movs r0, 0 + mov r8, r0 + bl sub_812E064 + lsls r0, 16 + lsrs r0, 16 + adds r6, r0, 0 + ldr r0, _0812CD7C @ =gUnknown_3005008 + ldr r1, [r0] + ldr r7, _0812CD80 @ =gUnknown_203B0FC + ldr r0, [r7] + adds r0, 0xC + adds r0, r6 + ldrb r0, [r0] + lsls r0, 2 + adds r1, r0 + ldr r0, _0812CD84 @ =0x00003a54 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + lsrs r5, r0, 30 + cmp r5, 0x2 + beq _0812CD88 + bl sub_812CE9C + bl sub_812C990 + b _0812CDEE + .align 2, 0 +_0812CD7C: .4byte gUnknown_3005008 +_0812CD80: .4byte gUnknown_203B0FC +_0812CD84: .4byte 0x00003a54 +_0812CD88: + movs r0, 0xD0 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + bl sub_812D6B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812CDAC + movs r0, 0x10 + mov r8, r0 +_0812CDAC: + ldr r4, _0812CDFC @ =gUnknown_2021D18 + ldr r1, _0812CE00 @ =gUnknown_845F63C + ldr r0, [r7] + adds r0, 0xC + adds r0, r6 + ldrb r0, [r0] + add r0, r8 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F6CD0 + movs r0, 0x2 + bl sub_812CEE0 +_0812CDEE: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CDFC: .4byte gUnknown_2021D18 +_0812CE00: .4byte gUnknown_845F63C + thumb_func_end sub_812CD3C + + thumb_func_start sub_812CE04 +sub_812CE04: @ 812CE04 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0812CE8C @ =gUnknown_3005098 + adds r4, r0 + bl sub_812E064 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0xD0 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + ldr r6, _0812CE90 @ =gUnknown_2021D18 + ldr r2, _0812CE94 @ =gUnknown_845F6BC + ldr r0, _0812CE98 @ =gUnknown_203B0FC + ldr r0, [r0] + adds r0, 0xC + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 1 + movs r3, 0x2 + ldrsh r1, [r4, r3] + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + adds r0, r6, 0 + bl sub_8008FCC + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_80F6CD0 + movs r0, 0x2 + bl sub_812CEE0 + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812CE8C: .4byte gUnknown_3005098 +_0812CE90: .4byte gUnknown_2021D18 +_0812CE94: .4byte gUnknown_845F6BC +_0812CE98: .4byte gUnknown_203B0FC + thumb_func_end sub_812CE04 + + thumb_func_start sub_812CE9C +sub_812CE9C: @ 812CE9C + push {lr} + sub sp, 0x8 + movs r0, 0xD0 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + movs r0, 0x2 + bl sub_812CEE0 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_812CE9C + + thumb_func_start sub_812CEC0 +sub_812CEC0: @ 812CEC0 + push {lr} + bl sub_80F6E9C + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F6EE4 + movs r0, 0x2 + bl sub_812CEE0 + movs r0, 0 + bl sub_812CEE0 + pop {r0} + bx r0 + thumb_func_end sub_812CEC0 + + thumb_func_start sub_812CEE0 +sub_812CEE0: @ 812CEE0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812CEE0 + + thumb_func_start sub_812CEFC +sub_812CEFC: @ 812CEFC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r2, _0812CF1C @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r3, r1, r2 + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0xFF + bne _0812CF20 + movs r0, 0 + b _0812CF36 + .align 2, 0 +_0812CF1C: .4byte gUnknown_202063C +_0812CF20: + movs r0, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] + movs r0, 0x1 +_0812CF36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812CEFC + + thumb_func_start sub_812CF3C +sub_812CF3C: @ 812CF3C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xC7 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0812CF74 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812CF78 @ =sub_812CF7C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812CF74: .4byte gUnknown_3005090 +_0812CF78: .4byte sub_812CF7C + thumb_func_end sub_812CF3C + + thumb_func_start sub_812CF7C +sub_812CF7C: @ 812CF7C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0812D074 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812D06C + ldr r0, _0812D078 @ =gUnknown_203B0FC + ldr r0, [r0] + ldrb r1, [r0, 0x7] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812CFD8 + bl sub_812E064 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r6, 0 + bl sub_812D9A8 + ldr r0, _0812D07C @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r0 + movs r0, 0xE + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0812D080 @ =gUnknown_202063C + adds r0, r5 + bl sub_80077D8 + movs r0, 0xE + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 +_0812CFD8: + movs r4, 0 +_0812CFDA: + ldr r5, _0812D078 @ =gUnknown_203B0FC + ldr r0, [r5] + adds r0, 0x1D + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0812D080 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812CFDA + bl sub_812D814 + bl sub_812D7C8 + bl sub_812D70C + bl sub_812D770 + bl sub_812E048 + ldr r0, [r5] + ldr r0, [r0] + bl sub_8000544 + ldr r0, [r5] + ldrb r0, [r0, 0x8] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldr r0, _0812D084 @ =gUnknown_203B0F0 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _0812D088 @ =gUnknown_203B0F4 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _0812D08C @ =gUnknown_203B0F8 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, _0812D090 @ =gUnknown_203B100 + ldr r0, [r0] + bl sub_8002BC4 + movs r0, 0 + bl sub_812D094 + movs r0, 0x1 + bl sub_812D094 + movs r0, 0x2 + bl sub_812D094 + movs r0, 0x3 + bl sub_812D094 + bl sub_8003ECC + adds r0, r6, 0 + bl sub_8077508 +_0812D06C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812D074: .4byte gUnknown_2037AB8 +_0812D078: .4byte gUnknown_203B0FC +_0812D07C: .4byte gUnknown_3005090 +_0812D080: .4byte gUnknown_202063C +_0812D084: .4byte gUnknown_203B0F0 +_0812D088: .4byte gUnknown_203B0F4 +_0812D08C: .4byte gUnknown_203B0F8 +_0812D090: .4byte gUnknown_203B100 + thumb_func_end sub_812CF7C + + thumb_func_start sub_812D094 +sub_812D094: @ 812D094 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0 + bl sub_80040B8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8003F20 + adds r0, r4, 0 + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812D094 + + thumb_func_start sub_812D0C0 +sub_812D0C0: @ 812D0C0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0xAF + lsls r0, 1 + bl sub_8080424 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812D0EA + cmp r4, 0x9 + bne _0812D0DE + movs r0, 0xF + b _0812D0EC +_0812D0DE: + cmp r4, 0x9 + bls _0812D0EA + subs r0, r4, 0x1 + lsls r0, 24 + lsrs r0, 24 + b _0812D0EC +_0812D0EA: + adds r0, r4, 0 +_0812D0EC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812D0C0 + + thumb_func_start sub_812D0F4 +sub_812D0F4: @ 812D0F4 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0812D164 @ =gUnknown_841E5A4 + cmp r0, 0 + beq _0812D10A + ldr r5, _0812D168 @ =gUnknown_841E5D2 + cmp r0, 0x1 + bne _0812D10A + ldr r5, _0812D16C @ =gUnknown_841E5B9 +_0812D10A: + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + adds r4, r0, 0 + movs r0, 0xC0 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + movs r0, 0x44 + negs r0, r0 + adds r2, r0, 0 + subs r2, r4 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + ldr r0, _0812D170 @ =gUnknown_845F5E0 + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + str r5, [sp, 0x10] + movs r0, 0x1 + movs r1, 0 + movs r3, 0 + bl sub_812E5A4 + movs r0, 0x1 + bl sub_812CEE0 + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812D164: .4byte gUnknown_841E5A4 +_0812D168: .4byte gUnknown_841E5D2 +_0812D16C: .4byte gUnknown_841E5B9 +_0812D170: .4byte gUnknown_845F5E0 + thumb_func_end sub_812D0F4 + + thumb_func_start sub_812D174 +sub_812D174: @ 812D174 + push {r4,lr} + movs r4, 0 +_0812D178: + ldr r0, _0812D1A0 @ =gUnknown_203B0FC + ldr r0, [r0] + adds r0, 0x1D + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0812D1A4 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812D178 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D1A0: .4byte gUnknown_203B0FC +_0812D1A4: .4byte gUnknown_202063C + thumb_func_end sub_812D174 + + thumb_func_start sub_812D1A8 +sub_812D1A8: @ 812D1A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + movs r6, 0 + ldr r7, _0812D238 @ =gUnknown_203B0FC +_0812D1BA: + ldr r0, _0812D23C @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, [r7] + adds r0, 0xC + add r0, r8 + ldrb r2, [r0] + lsls r0, r2, 2 + adds r1, r0 + ldr r0, _0812D240 @ =0x00003a54 + adds r1, r0 + ldrh r0, [r1] + lsls r0, 18 + lsrs r0, 20 + asrs r0, r6 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812D248 + ldr r1, _0812D244 @ =gUnknown_845F83C + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 1 + adds r0, r6 + adds r0, r1 + ldrb r5, [r0] + adds r0, r6, 0 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 4 + subs r4, r0 + adds r4, 0x72 + lsls r4, 16 + asrs r4, 16 + adds r0, r6, 0 + movs r1, 0x3 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r3, r0, 3 + subs r3, r0 + lsls r3, 2 + subs r3, r0 + adds r3, 0x2F + lsls r3, 16 + asrs r3, 16 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_805EB44 + ldr r1, [r7] + adds r1, 0x1D + adds r1, r6 + strb r0, [r1] + movs r5, 0x1 + b _0812D2A0 + .align 2, 0 +_0812D238: .4byte gUnknown_203B0FC +_0812D23C: .4byte gUnknown_3005008 +_0812D240: .4byte 0x00003a54 +_0812D244: .4byte gUnknown_845F83C +_0812D248: + adds r0, r6, 0 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 4 + subs r4, r0 + adds r4, 0x72 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0x3 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + subs r1, r0 + adds r1, 0x1F + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_812D780 + ldr r1, [r7] + adds r1, 0x1D + adds r1, r6 + strb r0, [r1] + ldr r2, _0812D2D0 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x1D + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0xFF + strh r1, [r0, 0x30] +_0812D2A0: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x5 + bls _0812D1BA + cmp r5, 0x1 + bne _0812D2E0 + ldr r3, _0812D2D4 @ =gUnknown_203B0FC + ldr r2, [r3] + ldrb r0, [r2, 0x7] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x7] + ldr r0, [r3] + ldrb r1, [r0, 0x7] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812D2D8 + movs r0, 0x1 + bl sub_812D0F4 + b _0812D2F4 + .align 2, 0 +_0812D2D0: .4byte gUnknown_202063C +_0812D2D4: .4byte gUnknown_203B0FC +_0812D2D8: + movs r0, 0 + bl sub_812D0F4 + b _0812D2F4 +_0812D2E0: + ldr r0, _0812D300 @ =gUnknown_203B0FC + ldr r2, [r0] + ldrb r1, [r2, 0x7] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x7] + movs r0, 0x1 + bl sub_812D0F4 +_0812D2F4: + adds r0, r5, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0812D300: .4byte gUnknown_203B0FC + thumb_func_end sub_812D1A8 + + thumb_func_start sub_812D304 +sub_812D304: @ 812D304 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r4, 0 + ldr r0, _0812D378 @ =gUnknown_3005008 + mov r9, r0 + mov r6, r9 + ldr r5, _0812D37C @ =0x00003a54 + movs r0, 0x4 + negs r0, r0 + mov r8, r0 + ldr r0, _0812D380 @ =0xffffc003 + mov r12, r0 + ldr r7, _0812D384 @ =0x00003a55 +_0812D322: + ldr r1, [r6] + lsls r3, r4, 2 + adds r1, r3 + adds r1, r5 + ldrb r2, [r1] + mov r0, r8 + ands r0, r2 + strb r0, [r1] + ldr r1, [r6] + adds r1, r3 + adds r3, r1, r5 + ldrh r2, [r3] + mov r0, r12 + ands r0, r2 + strh r0, [r3] + adds r1, r7 + ldrb r2, [r1] + movs r0, 0x3F + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0812D322 + mov r0, r9 + ldr r2, [r0] + ldr r0, _0812D37C @ =0x00003a54 + adds r2, r0 + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812D378: .4byte gUnknown_3005008 +_0812D37C: .4byte 0x00003a54 +_0812D380: .4byte 0xffffc003 +_0812D384: .4byte 0x00003a55 + thumb_func_end sub_812D304 + + thumb_func_start sub_812D388 +sub_812D388: @ 812D388 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r5, 0 + ldr r0, _0812D410 @ =gUnknown_3005008 + mov r12, r0 + ldr r7, _0812D414 @ =0x00003a54 + movs r1, 0x4 + negs r1, r1 + mov r10, r1 + ldr r6, _0812D418 @ =0xffffc003 + mov r9, r6 + movs r0, 0x1 + mov r8, r0 +_0812D3AA: + mov r1, r12 + ldr r2, [r1] + lsls r3, r5, 2 + adds r2, r3 + adds r2, r7 + ldrb r1, [r2] + mov r0, r10 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + movs r4, 0 + adds r5, 0x1 + str r5, [sp] + adds r5, r3, 0 +_0812D3C8: + mov r6, r12 + ldr r2, [r6] + adds r2, r5 + adds r2, r7 + ldrh r3, [r2] + lsls r0, r3, 18 + lsrs r0, 20 + mov r1, r8 + lsls r1, r4 + orrs r1, r0 + ldr r6, _0812D41C @ =0x00000fff + adds r0, r6, 0 + ands r1, r0 + lsls r1, 2 + mov r0, r9 + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812D3C8 + ldr r1, [sp] + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _0812D3AA + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812D410: .4byte gUnknown_3005008 +_0812D414: .4byte 0x00003a54 +_0812D418: .4byte 0xffffc003 +_0812D41C: .4byte 0x00000fff + thumb_func_end sub_812D388 + + thumb_func_start sub_812D420 +sub_812D420: @ 812D420 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _0812D550 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _0812D554 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_0812D446: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _0812D446 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _0812D550 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0xE + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812D550: .4byte 0x040000d4 +_0812D554: .4byte 0x81000800 + thumb_func_end sub_812D420 + + thumb_func_start sub_812D558 +sub_812D558: @ 812D558 + push {lr} + bl sub_8087E64 + bl sub_80773BC + bl sub_8006B10 + bl sub_810BB8C + bl sub_8070528 + movs r0, 0 + bl sub_805FECC + ldr r1, _0812D580 @ =gUnknown_3003E58 + movs r0, 0x7 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0812D580: .4byte gUnknown_3003E58 + thumb_func_end sub_812D558 + + thumb_func_start sub_812D584 +sub_812D584: @ 812D584 + push {lr} + movs r1, 0xFA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_812D584 + + thumb_func_start sub_812D594 +sub_812D594: @ 812D594 + push {lr} + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_812D594 + + thumb_func_start sub_812D5EC +sub_812D5EC: @ 812D5EC + push {r4-r6,lr} + ldr r1, _0812D638 @ =gUnknown_20370C0 + ldrh r0, [r1] + cmp r0, 0xF + bhi _0812D632 + ldr r5, _0812D63C @ =gUnknown_20370C2 + ldrh r0, [r5] + cmp r0, 0x5 + bhi _0812D632 + ldr r0, _0812D640 @ =gUnknown_3005008 + ldr r2, [r0] + ldrh r0, [r1] + lsls r0, 2 + adds r2, r0 + ldr r0, _0812D644 @ =0x00003a54 + adds r2, r0 + ldrh r3, [r2] + lsls r0, r3, 18 + lsrs r0, 20 + movs r4, 0x1 + adds r1, r4, 0 + ldrh r6, [r5] + lsls r1, r6 + orrs r1, r0 + ldr r6, _0812D648 @ =0x00000fff + adds r0, r6, 0 + ands r1, r0 + lsls r1, 2 + ldr r0, _0812D64C @ =0xffffc003 + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + strh r4, [r5] + bl sub_812D650 +_0812D632: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812D638: .4byte gUnknown_20370C0 +_0812D63C: .4byte gUnknown_20370C2 +_0812D640: .4byte gUnknown_3005008 +_0812D644: .4byte 0x00003a54 +_0812D648: .4byte 0x00000fff +_0812D64C: .4byte 0xffffc003 + thumb_func_end sub_812D5EC + + thumb_func_start sub_812D650 +sub_812D650: @ 812D650 + push {r4,lr} + ldr r1, _0812D6A4 @ =gUnknown_20370C0 + ldrh r0, [r1] + cmp r0, 0xF + bhi _0812D69E + ldr r0, _0812D6A8 @ =gUnknown_20370C2 + ldrh r4, [r0] + adds r0, r4, 0 + cmp r0, 0x2 + bhi _0812D69E + cmp r0, 0 + beq _0812D69E + ldr r2, _0812D6AC @ =gUnknown_3005008 + ldrh r3, [r1] + cmp r0, 0x1 + bne _0812D684 + ldr r0, [r2] + lsls r1, r3, 2 + adds r0, r1 + ldr r1, _0812D6B0 @ =0x00003a54 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x2 + beq _0812D69E +_0812D684: + ldr r2, [r2] + lsls r0, r3, 2 + adds r2, r0 + ldr r0, _0812D6B0 @ =0x00003a54 + adds r2, r0 + movs r1, 0x3 + ands r1, r4 + ldrb r3, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_0812D69E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D6A4: .4byte gUnknown_20370C0 +_0812D6A8: .4byte gUnknown_20370C2 +_0812D6AC: .4byte gUnknown_3005008 +_0812D6B0: .4byte 0x00003a54 + thumb_func_end sub_812D650 + + thumb_func_start sub_812D6B4 +sub_812D6B4: @ 812D6B4 + push {r4,lr} + ldr r0, _0812D6EC @ =gUnknown_203B0FC + ldr r4, [r0] + bl sub_812E064 + lsls r0, 16 + lsrs r0, 16 + adds r4, 0xC + adds r4, r0 + ldrb r1, [r4] + movs r2, 0 + ldr r0, _0812D6F0 @ =gUnknown_3005008 + ldr r0, [r0] + lsls r1, 2 + adds r0, r1 + ldr r1, _0812D6F4 @ =0x00003a54 + adds r0, r1 + ldrh r0, [r0] + lsls r1, r0, 18 + movs r3, 0x1 +_0812D6DC: + lsrs r0, r1, 20 + asrs r0, r2 + ands r0, r3 + cmp r0, 0 + bne _0812D6F8 + movs r0, 0 + b _0812D704 + .align 2, 0 +_0812D6EC: .4byte gUnknown_203B0FC +_0812D6F0: .4byte gUnknown_3005008 +_0812D6F4: .4byte 0x00003a54 +_0812D6F8: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x5 + bls _0812D6DC + movs r0, 0x1 +_0812D704: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812D6B4 + + thumb_func_start sub_812D70C +sub_812D70C: @ 812D70C + push {r4,lr} + movs r4, 0xFA + lsls r4, 2 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812D70C + + thumb_func_start sub_812D724 +sub_812D724: @ 812D724 + push {r4,lr} + lsls r0, 16 + asrs r0, 16 + movs r4, 0x22 + cmp r0, 0x2 + ble _0812D732 + movs r4, 0x3D +_0812D732: + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 4 + subs r1, r0 + adds r1, 0x72 + ldr r0, _0812D760 @ =gUnknown_845FC44 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812D760: .4byte gUnknown_845FC44 + thumb_func_end sub_812D724 + + thumb_func_start sub_812D764 +sub_812D764: @ 812D764 + push {lr} + bl sub_8007280 + pop {r0} + bx r0 + thumb_func_end sub_812D764 + + thumb_func_start sub_812D770 +sub_812D770: @ 812D770 + push {lr} + ldr r0, _0812D77C @ =0x000003e9 + bl sub_800874C + pop {r0} + bx r0 + .align 2, 0 +_0812D77C: .4byte 0x000003e9 + thumb_func_end sub_812D770 + + thumb_func_start sub_812D780 +sub_812D780: @ 812D780 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 24 + lsrs r3, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0812D7C0 @ =gUnknown_845FC78 + adds r1, r3, 0 + movs r3, 0x8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0812D7C4 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r3, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + movs r3, 0x8 + orrs r1, r3 + movs r3, 0xF + ands r1, r3 + movs r3, 0x20 + orrs r1, r3 + strb r1, [r2, 0x5] + pop {r1} + bx r1 + .align 2, 0 +_0812D7C0: .4byte gUnknown_845FC78 +_0812D7C4: .4byte gUnknown_202063C + thumb_func_end sub_812D780 + + thumb_func_start sub_812D7C8 +sub_812D7C8: @ 812D7C8 + push {r4,lr} + ldr r4, _0812D7E0 @ =0x000003ea + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D7E0: .4byte 0x000003ea + thumb_func_end sub_812D7C8 + + thumb_func_start sub_812D7E4 +sub_812D7E4: @ 812D7E4 + push {lr} + ldr r0, _0812D7FC @ =gUnknown_845FCB8 + movs r1, 0xE2 + movs r2, 0x42 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0812D7FC: .4byte gUnknown_845FCB8 + thumb_func_end sub_812D7E4 + + thumb_func_start sub_812D800 +sub_812D800: @ 812D800 + push {r4,lr} + adds r4, r0, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812D800 + + thumb_func_start sub_812D814 +sub_812D814: @ 812D814 + push {lr} + ldr r0, _0812D834 @ =0x000003ee + bl sub_800874C + ldr r0, _0812D838 @ =0x000003ef + bl sub_800874C + movs r0, 0xFC + lsls r0, 2 + bl sub_800874C + ldr r0, _0812D83C @ =0x000003f1 + bl sub_800874C + pop {r0} + bx r0 + .align 2, 0 +_0812D834: .4byte 0x000003ee +_0812D838: .4byte 0x000003ef +_0812D83C: .4byte 0x000003f1 + thumb_func_end sub_812D814 + + thumb_func_start sub_812D840 +sub_812D840: @ 812D840 + push {lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bne _0812D864 + movs r3, 0x24 + ldrsh r0, [r2, r3] + subs r0, 0xA + cmp r0, 0 + bge _0812D85E + movs r0, 0 + strh r0, [r2, 0x24] + strh r0, [r2, 0x2E] + b _0812D882 +_0812D85E: + ldrh r0, [r2, 0x24] + subs r0, 0xA + b _0812D880 +_0812D864: + cmp r0, 0x2 + bne _0812D882 + ldrh r1, [r2, 0x24] + movs r3, 0x24 + ldrsh r0, [r2, r3] + cmp r0, 0xF0 + ble _0812D87C + movs r1, 0 + movs r0, 0xF0 + strh r0, [r2, 0x24] + strh r1, [r2, 0x2E] + b _0812D882 +_0812D87C: + adds r0, r1, 0 + adds r0, 0xA +_0812D880: + strh r0, [r2, 0x24] +_0812D882: + pop {r0} + bx r0 + thumb_func_end sub_812D840 + + thumb_func_start sub_812D888 +sub_812D888: @ 812D888 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bne _0812D8B0 + ldr r0, _0812D8A8 @ =gUnknown_845FCE4 + movs r1, 0x94 + movs r2, 0x42 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0812D8AC @ =gUnknown_845ED60 + b _0812D906 + .align 2, 0 +_0812D8A8: .4byte gUnknown_845FCE4 +_0812D8AC: .4byte gUnknown_845ED60 +_0812D8B0: + cmp r5, 0xE + bne _0812D8D0 + ldr r0, _0812D8C8 @ =gUnknown_845FCFC + movs r1, 0x94 + movs r2, 0x42 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0812D8CC @ =gUnknown_845DD20 + b _0812D906 + .align 2, 0 +_0812D8C8: .4byte gUnknown_845FCFC +_0812D8CC: .4byte gUnknown_845DD20 +_0812D8D0: + cmp r5, 0 + bne _0812D8F0 + ldr r0, _0812D8E8 @ =gUnknown_845FD14 + movs r1, 0x94 + movs r2, 0x42 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0812D8EC @ =gUnknown_845F580 + b _0812D906 + .align 2, 0 +_0812D8E8: .4byte gUnknown_845FD14 +_0812D8EC: .4byte gUnknown_845F580 +_0812D8F0: + cmp r5, 0xD + bne _0812D934 + ldr r0, _0812D928 @ =gUnknown_845FD2C + movs r1, 0x94 + movs r2, 0x42 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0812D92C @ =gUnknown_845E540 +_0812D906: + movs r1, 0xB0 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _0812D930 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x5] + movs r1, 0xF + ands r1, r2 + movs r2, 0x60 + orrs r1, r2 + strb r1, [r0, 0x5] + b _0812D950 + .align 2, 0 +_0812D928: .4byte gUnknown_845FD2C +_0812D92C: .4byte gUnknown_845E540 +_0812D930: .4byte gUnknown_202063C +_0812D934: + ldr r0, _0812D98C @ =gUnknown_845F61C + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0x6 + str r1, [sp] + ldr r1, _0812D990 @ =0x0000ffff + str r1, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x94 + movs r3, 0x42 + bl sub_810C2A4 + lsls r0, 24 + lsrs r4, r0, 24 +_0812D950: + ldr r1, _0812D994 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r1, 0x1C + adds r0, r1 + ldr r1, _0812D998 @ =sub_812D840 + str r1, [r0] + ldr r0, _0812D99C @ =gUnknown_3005008 + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1 + ldr r1, _0812D9A0 @ =0x00003a54 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _0812D982 + ldr r0, _0812D9A4 @ =gUnknown_845F5C0 + movs r1, 0xB0 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC +_0812D982: + adds r0, r4, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0812D98C: .4byte gUnknown_845F61C +_0812D990: .4byte 0x0000ffff +_0812D994: .4byte gUnknown_202063C +_0812D998: .4byte sub_812D840 +_0812D99C: .4byte gUnknown_3005008 +_0812D9A0: .4byte 0x00003a54 +_0812D9A4: .4byte gUnknown_845F5C0 + thumb_func_end sub_812D888 + + thumb_func_start sub_812D9A8 +sub_812D9A8: @ 812D9A8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + ldr r0, _0812D9FC @ =gUnknown_3005098 + adds r4, r2, r0 + lsrs r1, 16 + ldr r0, _0812DA00 @ =gUnknown_203B0FC + ldr r2, [r0] + ldrb r0, [r2, 0x7] + lsrs r3, r0, 2 + subs r0, r3, 0x1 + cmp r1, r0 + bne _0812D9D0 + subs r0, r3, 0x2 + lsls r0, 16 + lsrs r1, r0, 16 +_0812D9D0: + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0812D9E8 + cmp r0, 0xE + beq _0812D9E8 + cmp r0, 0 + beq _0812D9E8 + cmp r0, 0xD + bne _0812DA08 +_0812D9E8: + movs r0, 0x4 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0812DA04 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + b _0812DA0E + .align 2, 0 +_0812D9FC: .4byte gUnknown_3005098 +_0812DA00: .4byte gUnknown_203B0FC +_0812DA04: .4byte gUnknown_202063C +_0812DA08: + ldrh r0, [r4, 0x4] + bl sub_810C2E8 +_0812DA0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812D9A8 + + thumb_func_start sub_812DA14 +sub_812DA14: @ 812DA14 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_812E064 + ldr r1, _0812DAF8 @ =gUnknown_203B0FC + ldr r1, [r1] + lsls r0, 16 + lsrs r0, 16 + adds r1, 0xC + adds r1, r0 + ldrb r0, [r1] + lsls r5, r0, 1 + adds r5, r0 + lsls r5, 1 + adds r5, r4 + movs r0, 0x1 + bl sub_812E094 + ldr r1, _0812DAFC @ =gUnknown_3005EC8 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x58 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + ldr r0, _0812DB00 @ =gUnknown_845F89C + lsls r5, 2 + adds r0, r5, r0 + ldr r6, [r0] + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8005ED4 + movs r4, 0x54 + subs r0, r4, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + lsls r2, r0, 24 + lsrs r2, 24 + movs r7, 0 + str r7, [sp] + movs r0, 0x2 + mov r10, r0 + str r0, [sp, 0x4] + ldr r0, _0812DB04 @ =gUnknown_845F5E3 + mov r9, r0 + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + mov r8, r0 + str r0, [sp, 0xC] + str r6, [sp, 0x10] + movs r0, 0x3 + movs r1, 0 + movs r3, 0 + bl sub_812E5A4 + ldr r6, _0812DB08 @ =gUnknown_2021CD0 + ldr r0, _0812DB0C @ =gUnknown_845FA1C + adds r5, r0 + ldr r1, [r5] + adds r0, r6, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8005ED4 + subs r4, r0 + lsrs r0, r4, 31 + adds r4, r0 + asrs r0, r4, 1 + lsls r2, r0, 24 + lsrs r2, 24 + str r7, [sp] + mov r0, r10 + str r0, [sp, 0x4] + mov r0, r9 + str r0, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + str r6, [sp, 0x10] + movs r0, 0x3 + movs r1, 0 + movs r3, 0xA + bl sub_812E5A4 + movs r0, 0x3 + bl sub_812CEE0 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812DAF8: .4byte gUnknown_203B0FC +_0812DAFC: .4byte gUnknown_3005EC8 +_0812DB00: .4byte gUnknown_845F89C +_0812DB04: .4byte gUnknown_845F5E3 +_0812DB08: .4byte gUnknown_2021CD0 +_0812DB0C: .4byte gUnknown_845FA1C + thumb_func_end sub_812DA14 + + thumb_func_start sub_812DB10 +sub_812DB10: @ 812DB10 + push {lr} + movs r0, 0 + bl sub_812E094 + ldr r1, _0812DB24 @ =gUnknown_3005EC8 + movs r0, 0xFF + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0812DB24: .4byte gUnknown_3005EC8 + thumb_func_end sub_812DB10 + + thumb_func_start sub_812DB28 +sub_812DB28: @ 812DB28 + push {r4,lr} + bl sub_812DB64 + bl sub_812DEF0 + ldr r4, _0812DB5C @ =gUnknown_203B0FC + ldr r3, [r4] + lsls r0, 2 + ldrb r2, [r3, 0x7] + movs r1, 0x3 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x7] + ldr r0, _0812DB60 @ =gUnknown_3005EB0 + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + ldr r1, [r4] + strb r0, [r1, 0x8] + movs r0, 0 + bl sub_812DFE4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812DB5C: .4byte gUnknown_203B0FC +_0812DB60: .4byte gUnknown_3005EB0 + thumb_func_end sub_812DB28 + + thumb_func_start sub_812DB64 +sub_812DB64: @ 812DB64 + ldr r2, _0812DBB4 @ =gUnknown_3005EB0 + ldr r0, _0812DBB8 @ =gUnknown_203B100 + ldr r0, [r0] + str r0, [r2] + ldr r0, _0812DBBC @ =sub_812DBC0 + str r0, [r2, 0x4] + movs r0, 0 + str r0, [r2, 0x8] + movs r1, 0 + movs r0, 0x1 + strh r0, [r2, 0xC] + strh r0, [r2, 0xE] + strb r1, [r2, 0x10] + strb r1, [r2, 0x11] + movs r0, 0x8 + strb r0, [r2, 0x12] + strb r1, [r2, 0x13] + ldrb r1, [r2, 0x14] + subs r0, 0x18 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + movs r1, 0xF + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0x14] + movs r0, 0x30 + strb r0, [r2, 0x15] + movs r3, 0x3F + movs r0, 0 + strb r0, [r2, 0x16] + ldrb r1, [r2, 0x17] + subs r0, 0x40 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + ands r0, r3 + strb r0, [r2, 0x17] + bx lr + .align 2, 0 +_0812DBB4: .4byte gUnknown_3005EB0 +_0812DBB8: .4byte gUnknown_203B100 +_0812DBBC: .4byte sub_812DBC0 + thumb_func_end sub_812DB64 + + thumb_func_start sub_812DBC0 +sub_812DBC0: @ 812DBC0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0812DC68 @ =gUnknown_203B104 + mov r10, r0 + movs r2, 0 + mov r8, r2 + str r2, [r0] + ldr r6, _0812DC6C @ =gUnknown_203B0FC + ldr r0, [r6] + ldrb r2, [r0, 0xA] + ldrb r0, [r0, 0xB] + adds r2, r0 + mov r9, r2 + adds r0, r7, 0 + bl sub_812DDF0 + ldr r0, _0812DC70 @ =sub_812C694 + bl sub_8077688 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + bne _0812DBFE + b _0812DD3A +_0812DBFE: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0812DC74 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r0, 0x5 + bl sub_80722CC + mov r0, r8 + strh r0, [r5, 0xA] + ldr r0, [r6] + ldrb r0, [r0, 0x8] + add r1, sp, 0x8 + movs r2, 0 + bl sub_81072D4 + ldr r1, [r6] + add r0, sp, 0x8 + ldrh r0, [r0] + strh r0, [r1, 0x4] + ldrb r0, [r1, 0x7] + lsrs r0, 2 + subs r0, 0x1 + cmp r7, r0 + beq _0812DCD8 + bl sub_812D174 + lsls r0, r7, 24 + lsrs r0, 24 + bl sub_812D1A8 + ldr r2, [r6] + ldrb r1, [r2, 0x7] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812DCBC + adds r0, r2, 0 + adds r0, 0x23 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0812DC7C + adds r0, r4, 0 + mov r1, r9 + bl sub_812D9A8 + mov r1, r10 + str r7, [r1] + ldr r0, _0812DC78 @ =sub_812DD50 + str r0, [r5] + b _0812DD3A + .align 2, 0 +_0812DC68: .4byte gUnknown_203B104 +_0812DC6C: .4byte gUnknown_203B0FC +_0812DC70: .4byte sub_812C694 +_0812DC74: .4byte gUnknown_3005090 +_0812DC78: .4byte sub_812DD50 +_0812DC7C: + ldr r4, _0812DCB8 @ =gUnknown_202063C + movs r2, 0xC + ldrsh r0, [r5, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r6] + adds r0, 0x23 + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + mov r1, r8 + strh r1, [r0, 0x2E] + bl sub_812CD3C + b _0812DD3A + .align 2, 0 +_0812DCB8: .4byte gUnknown_202063C +_0812DCBC: + movs r0, 0xD0 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + movs r0, 0x2 + bl sub_812CEE0 + b _0812DD3A +_0812DCD8: + bl sub_812DDAC + ldr r0, [r6] + ldrb r1, [r0, 0x7] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812DD10 + ldr r2, _0812DD0C @ =gUnknown_202063C + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r1, [r6] + adds r1, 0x23 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + b _0812DD3A + .align 2, 0 +_0812DD0C: .4byte gUnknown_202063C +_0812DD10: + movs r2, 0 + ldr r5, _0812DD4C @ =gUnknown_202063C + adds r4, r6, 0 + movs r3, 0x4 +_0812DD18: + ldr r0, [r4] + adds r0, 0x1D + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x5 + bls _0812DD18 +_0812DD3A: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812DD4C: .4byte gUnknown_202063C + thumb_func_end sub_812DBC0 + + thumb_func_start sub_812DD50 +sub_812DD50: @ 812DD50 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0812DD98 @ =gUnknown_3005090 + adds r4, r0 + ldr r0, _0812DD9C @ =gUnknown_203B0FC + ldr r0, [r0] + ldr r1, _0812DDA0 @ =gUnknown_203B104 + adds r0, 0xC + ldr r1, [r1] + adds r0, r1 + ldrb r0, [r0] + bl sub_812D888 + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + strh r0, [r4, 0xC] + ldr r2, _0812DDA4 @ =gUnknown_202063C + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x2E] + bl sub_812CD3C + ldr r0, _0812DDA8 @ =sub_812C694 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812DD98: .4byte gUnknown_3005090 +_0812DD9C: .4byte gUnknown_203B0FC +_0812DDA0: .4byte gUnknown_203B104 +_0812DDA4: .4byte gUnknown_202063C +_0812DDA8: .4byte sub_812C694 + thumb_func_end sub_812DD50 + + thumb_func_start sub_812DDAC +sub_812DDAC: @ 812DDAC + push {lr} + sub sp, 0x10 + movs r0, 0xD0 + str r0, [sp] + movs r0, 0x20 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + ldr r2, _0812DDEC @ =gUnknown_84181C3 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + movs r0, 0x2 + bl sub_812CEE0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0812DDEC: .4byte gUnknown_84181C3 + thumb_func_end sub_812DDAC + + thumb_func_start sub_812DDF0 +sub_812DDF0: @ 812DDF0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x18 + mov r8, r0 + lsls r5, r1, 24 + lsrs r5, 24 + ldr r7, _0812DE68 @ =gUnknown_203B0FC + ldr r0, [r7] + ldrb r0, [r0, 0x8] + mov r4, sp + adds r4, 0x16 + add r1, sp, 0x14 + adds r2, r4, 0 + bl sub_81072D4 + add r1, sp, 0x14 + ldrh r0, [r4] + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + ldrh r0, [r4] + lsls r3, r0, 3 + subs r3, r0 + lsls r3, 25 + movs r0, 0x80 + lsls r0, 19 + adds r3, r0 + lsrs r3, 24 + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r0, _0812DE6C @ =gUnknown_845F5E6 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldr r0, _0812DE70 @ =gUnknown_203B100 + ldr r1, [r0] + mov r2, r8 + lsls r0, r2, 3 + adds r0, r1 + ldr r0, [r0] + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x8 + bl sub_812E5A4 + cmp r5, 0 + bne _0812DEC0 + add r0, sp, 0x14 + ldr r1, [r7] + ldrh r2, [r0] + ldrb r0, [r1, 0xA] + cmp r2, r0 + bcs _0812DE74 + ldrb r0, [r1, 0xB] + adds r0, 0x1 + b _0812DE86 + .align 2, 0 +_0812DE68: .4byte gUnknown_203B0FC +_0812DE6C: .4byte gUnknown_845F5E6 +_0812DE70: .4byte gUnknown_203B100 +_0812DE74: + cmp r2, r0 + bls _0812DE88 + ldrb r0, [r1, 0x7] + lsrs r0, 2 + subs r0, 0x1 + cmp r6, r0 + beq _0812DE88 + ldrb r0, [r1, 0xB] + subs r0, 0x1 +_0812DE86: + strb r0, [r1, 0xB] +_0812DE88: + ldr r0, _0812DEE4 @ =gUnknown_203B0FC + ldr r2, [r0] + ldrb r0, [r2, 0xB] + lsls r3, r0, 3 + subs r3, r0 + lsls r3, 25 + movs r0, 0x80 + lsls r0, 19 + adds r3, r0 + lsrs r3, 24 + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r0, _0812DEE8 @ =gUnknown_845F5E3 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldrb r0, [r2, 0x9] + ldr r1, _0812DEEC @ =gUnknown_203B100 + ldr r1, [r1] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x8 + bl sub_812E5A4 +_0812DEC0: + ldr r1, _0812DEE4 @ =gUnknown_203B0FC + ldr r0, [r1] + mov r2, r8 + strb r2, [r0, 0x9] + ldr r2, [r1] + ldrh r0, [r4] + strb r0, [r2, 0xB] + ldr r1, [r1] + add r0, sp, 0x14 + ldrh r0, [r0] + strb r0, [r1, 0xA] + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812DEE4: .4byte gUnknown_203B0FC +_0812DEE8: .4byte gUnknown_845F5E3 +_0812DEEC: .4byte gUnknown_203B100 + thumb_func_end sub_812DDF0 + + thumb_func_start sub_812DEF0 +sub_812DEF0: @ 812DEF0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r4, 0 + movs r6, 0 + ldr r0, _0812DF44 @ =0x0000fdff + mov r8, r0 + ldr r7, _0812DF48 @ =gUnknown_845F60C +_0812DF00: + adds r0, r6, 0 + bl sub_812D0C0 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0812DF4C @ =gUnknown_3005008 + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1 + ldr r1, _0812DF50 @ =0x00003a54 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + beq _0812DF88 + ldr r0, _0812DF54 @ =gUnknown_845F5EA + lsls r1, r5, 1 + adds r3, r1, r0 + ldrh r0, [r3] + cmp r0, r8 + bhi _0812DF60 + ldr r0, _0812DF58 @ =gUnknown_203B100 + ldr r0, [r0] + lsls r2, r4, 3 + adds r2, r0 + ldrh r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0812DF5C @ =gUnknown_823EACC + adds r0, r1 + str r0, [r2] + str r4, [r2, 0x4] + b _0812DF78 + .align 2, 0 +_0812DF44: .4byte 0x0000fdff +_0812DF48: .4byte gUnknown_845F60C +_0812DF4C: .4byte gUnknown_3005008 +_0812DF50: .4byte 0x00003a54 +_0812DF54: .4byte gUnknown_845F5EA +_0812DF58: .4byte gUnknown_203B100 +_0812DF5C: .4byte gUnknown_823EACC +_0812DF60: + ldr r0, _0812DFC0 @ =gUnknown_203B100 + ldr r0, [r0] + lsls r1, r4, 3 + adds r1, r0 + ldrh r0, [r3] + ldr r2, _0812DFC4 @ =0xffff0200 + adds r0, r2 + lsls r0, 2 + adds r0, r7 + ldr r0, [r0] + str r0, [r1] + str r4, [r1, 0x4] +_0812DF78: + ldr r0, _0812DFC8 @ =gUnknown_203B0FC + ldr r0, [r0] + adds r0, 0xC + adds r0, r4 + strb r5, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0812DF88: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bls _0812DF00 + ldr r0, _0812DFC0 @ =gUnknown_203B100 + ldr r1, [r0] + lsls r0, r4, 3 + adds r0, r1 + ldr r1, _0812DFCC @ =gUnknown_84161C1 + str r1, [r0] + str r4, [r0, 0x4] + ldr r0, _0812DFC8 @ =gUnknown_203B0FC + ldr r0, [r0] + adds r0, 0xC + adds r0, r4 + movs r1, 0xFF + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0812DFD0 @ =gUnknown_3005EB0 + strh r4, [r1, 0xC] + cmp r4, 0x4 + bhi _0812DFD4 + strh r4, [r1, 0xE] + b _0812DFD8 + .align 2, 0 +_0812DFC0: .4byte gUnknown_203B100 +_0812DFC4: .4byte 0xffff0200 +_0812DFC8: .4byte gUnknown_203B0FC +_0812DFCC: .4byte gUnknown_84161C1 +_0812DFD0: .4byte gUnknown_3005EB0 +_0812DFD4: + movs r0, 0x5 + strh r0, [r1, 0xE] +_0812DFD8: + adds r0, r4, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_812DEF0 + + thumb_func_start sub_812DFE4 +sub_812DFE4: @ 812DFE4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812DFE4 + + thumb_func_start sub_812E000 +sub_812E000: @ 812E000 + push {r4,lr} + sub sp, 0x10 + mov r1, sp + ldr r0, _0812E040 @ =gUnknown_845FD44 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + ldr r4, _0812E044 @ =gUnknown_203B0FC + ldr r2, [r4] + ldrb r0, [r2, 0x7] + lsrs r0, 2 + cmp r0, 0x5 + bls _0812E036 + mov r1, sp + movs r0, 0 + strh r0, [r1, 0x6] + ldrb r0, [r2, 0x7] + lsrs r0, 2 + subs r0, 0x5 + strh r0, [r1, 0x8] + adds r1, r2, 0x4 + mov r0, sp + bl sub_8133A20 + ldr r1, [r4] + strb r0, [r1, 0x6] +_0812E036: + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E040: .4byte gUnknown_845FD44 +_0812E044: .4byte gUnknown_203B0FC + thumb_func_end sub_812E000 + + thumb_func_start sub_812E048 +sub_812E048: @ 812E048 + push {lr} + ldr r0, _0812E060 @ =gUnknown_203B0FC + ldr r1, [r0] + ldrb r0, [r1, 0x7] + lsrs r0, 2 + cmp r0, 0x5 + bls _0812E05C + ldrb r0, [r1, 0x6] + bl sub_8133C30 +_0812E05C: + pop {r0} + bx r0 + .align 2, 0 +_0812E060: .4byte gUnknown_203B0FC + thumb_func_end sub_812E048 + + thumb_func_start sub_812E064 +sub_812E064: @ 812E064 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0812E090 @ =gUnknown_203B0FC + ldr r0, [r0] + ldrb r0, [r0, 0x8] + mov r4, sp + adds r4, 0x2 + mov r1, sp + adds r2, r4, 0 + bl sub_81072D4 + mov r1, sp + ldrh r0, [r4] + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812E090: .4byte gUnknown_203B0FC + thumb_func_end sub_812E064 + + thumb_func_start sub_812E094 +sub_812E094: @ 812E094 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r6, _0812E0EC @ =gUnknown_203B0FC + ldr r0, [r6] + adds r0, 0x23 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + cmp r0, r4 + beq _0812E108 + ldr r5, _0812E0F0 @ =sub_812E110 + adds r0, r5, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _0812E0C8 + adds r0, r5, 0 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 +_0812E0C8: + ldr r0, _0812E0F4 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0 + strh r0, [r1, 0x8] + movs r0, 0x4 + strh r0, [r1, 0xA] + cmp r4, 0x1 + bne _0812E0F8 + strh r4, [r1, 0xC] + ldr r0, [r6] + adds r0, 0x23 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + b _0812E106 + .align 2, 0 +_0812E0EC: .4byte gUnknown_203B0FC +_0812E0F0: .4byte sub_812E110 +_0812E0F4: .4byte gUnknown_3005090 +_0812E0F8: + strh r0, [r1, 0xC] + ldr r0, [r6] + adds r0, 0x23 + ldrb r2, [r0] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 +_0812E106: + strb r1, [r0] +_0812E108: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_812E094 + + thumb_func_start sub_812E110 +sub_812E110: @ 812E110 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0812E130 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0812E134 + cmp r0, 0x1 + beq _0812E154 + b _0812E170 + .align 2, 0 +_0812E130: .4byte gUnknown_3005090 +_0812E134: + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bne _0812E170 + movs r0, 0x1 + movs r1, 0 + bl sub_812E178 + movs r0, 0x4 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0812E170 +_0812E154: + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bne _0812E170 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r0, 0x1 + bl sub_812E178 + adds r0, r5, 0 + bl sub_8077508 +_0812E170: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_812E110 + + thumb_func_start sub_812E178 +sub_812E178: @ 812E178 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + asrs r5, r1, 16 + cmp r5, 0 + beq _0812E18C + cmp r5, 0x3 + bne _0812E252 +_0812E18C: + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x8C + movs r2, 0xE + movs r3, 0xA + bl sub_8002554 + movs r5, 0xA + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0xA1 + movs r2, 0xF + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x8D + movs r2, 0x19 + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x8E + movs r2, 0x1A + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x8F + movs r2, 0xE + movs r3, 0xB + bl sub_8002554 + movs r0, 0xB + str r0, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + movs r2, 0xF + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x90 + movs r2, 0x1A + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x91 + movs r2, 0xE + movs r3, 0xC + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0xA3 + movs r2, 0xF + movs r3, 0xC + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x92 + movs r2, 0x19 + movs r3, 0xC + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x93 + b _0812E470 +_0812E252: + cmp r5, 0x1 + bne _0812E2F4 + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x9B + movs r2, 0xE + movs r3, 0xA + bl sub_8002554 + movs r4, 0xB + str r4, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x9C + movs r2, 0xF + movs r3, 0xA + bl sub_8002554 + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x96 + movs r2, 0x1A + movs r3, 0xA + bl sub_8002554 + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x9D + movs r2, 0xE + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + movs r2, 0xF + movs r3, 0xB + bl sub_8002554 + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x90 + movs r2, 0x1A + movs r3, 0xB + bl sub_8002554 + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x9E + movs r2, 0xE + movs r3, 0xC + bl sub_8002554 + str r4, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x9F + movs r2, 0xF + movs r3, 0xC + bl sub_8002554 + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x99 + b _0812E470 +_0812E2F4: + cmp r5, 0x2 + bne _0812E398 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x94 + movs r2, 0xE + movs r3, 0xA + bl sub_8002554 + movs r5, 0xB + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x95 + movs r2, 0xF + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x96 + movs r2, 0x1A + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x8F + movs r2, 0xE + movs r3, 0xB + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x9A + movs r2, 0xF + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x90 + movs r2, 0x1A + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x97 + movs r2, 0xE + movs r3, 0xC + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x98 + movs r2, 0xF + movs r3, 0xC + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x99 + b _0812E470 +_0812E398: + cmp r5, 0x4 + bne _0812E47A + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x83 + movs r2, 0xE + movs r3, 0xA + bl sub_8002554 + movs r5, 0xA + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0xA0 + movs r2, 0xF + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x84 + movs r2, 0x19 + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x85 + movs r2, 0x1A + movs r3, 0xA + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x86 + movs r2, 0xE + movs r3, 0xB + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0xA2 + movs r2, 0xF + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x87 + movs r2, 0x19 + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x88 + movs r2, 0x1A + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x83 + movs r2, 0xE + movs r3, 0xC + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0xA0 + movs r2, 0xF + movs r3, 0xC + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x84 + movs r2, 0x19 + movs r3, 0xC + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x85 +_0812E470: + movs r2, 0x1A + movs r3, 0xC + bl sub_8002554 + b _0812E496 +_0812E47A: + cmp r5, 0x5 + bne _0812E496 + movs r0, 0xD + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + movs r2, 0xE + movs r3, 0xA + bl sub_8002554 +_0812E496: + adds r0, r6, 0 + bl sub_80020BC + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_812E178 + + thumb_func_start sub_812E4A4 +sub_812E4A4: @ 812E4A4 + push {r4,lr} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0812E4E0 @ =gUnknown_203B0FC + ldr r0, [r0] + ldrb r0, [r0, 0x8] + bl sub_8107300 + lsls r0, 16 + lsrs r0, 16 + cmp r4, 0x1 + bne _0812E4EC + lsls r3, r0, 24 + lsrs r3, 24 + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r0, _0812E4E4 @ =gUnknown_845F5E3 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldr r0, _0812E4E8 @ =gUnknown_841623B + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + bl sub_812E5A4 + b _0812E50A + .align 2, 0 +_0812E4E0: .4byte gUnknown_203B0FC +_0812E4E4: .4byte gUnknown_845F5E3 +_0812E4E8: .4byte gUnknown_841623B +_0812E4EC: + lsls r3, r0, 24 + lsrs r3, 24 + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r0, _0812E514 @ =gUnknown_845F5E0 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldr r0, _0812E518 @ =gUnknown_841623B + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + bl sub_812E5A4 +_0812E50A: + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E514: .4byte gUnknown_845F5E0 +_0812E518: .4byte gUnknown_841623B + thumb_func_end sub_812E4A4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_camera.s b/asm/field_camera.s new file mode 100644 index 000000000..f30d0a0db --- /dev/null +++ b/asm/field_camera.s @@ -0,0 +1,1299 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_805A5A8 +sub_805A5A8: @ 805A5A8 + movs r1, 0 + strb r1, [r0, 0x2] + strb r1, [r0, 0x3] + strb r1, [r0] + strb r1, [r0, 0x1] + movs r1, 0x1 + strb r1, [r0, 0x4] + bx lr + thumb_func_end sub_805A5A8 + + thumb_func_start sub_805A5B8 +sub_805A5B8: @ 805A5B8 + ldrb r3, [r0, 0x2] + adds r3, r1 + strb r3, [r0, 0x2] + ldrb r1, [r0, 0x2] + movs r3, 0x1F + ands r1, r3 + strb r1, [r0, 0x2] + ldrb r1, [r0, 0x3] + adds r1, r2 + strb r1, [r0, 0x3] + ldrb r1, [r0, 0x3] + ands r1, r3 + strb r1, [r0, 0x3] + bx lr + thumb_func_end sub_805A5B8 + + thumb_func_start sub_805A5D4 +sub_805A5D4: @ 805A5D4 + ldrb r3, [r0] + adds r3, r1 + strb r3, [r0] + ldrb r1, [r0, 0x1] + adds r1, r2 + strb r1, [r0, 0x1] + bx lr + thumb_func_end sub_805A5D4 + + thumb_func_start sub_805A5E4 +sub_805A5E4: @ 805A5E4 + push {lr} + ldr r0, _0805A5F0 @ =gUnknown_3000E90 + bl sub_805A5A8 + pop {r0} + bx r0 + .align 2, 0 +_0805A5F0: .4byte gUnknown_3000E90 + thumb_func_end sub_805A5E4 + + thumb_func_start sub_805A5F4 +sub_805A5F4: @ 805A5F4 + push {r4,r5,lr} + ldr r1, _0805A64C @ =gUnknown_3000E90 + ldr r0, _0805A650 @ =gUnknown_3000E98 + movs r2, 0 + ldrsh r5, [r0, r2] + ldrb r0, [r1] + adds r5, r0 + ldr r0, _0805A654 @ =gUnknown_3000E9A + movs r2, 0 + ldrsh r4, [r0, r2] + ldrb r1, [r1, 0x1] + adds r4, r1 + adds r4, 0x8 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0x14 + adds r1, r5, 0 + bl sub_8000A38 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x16 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x18 + adds r1, r5, 0 + bl sub_8000A38 + movs r0, 0x1A + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x1C + adds r1, r5, 0 + bl sub_8000A38 + movs r0, 0x1E + adds r1, r4, 0 + bl sub_8000A38 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A64C: .4byte gUnknown_3000E90 +_0805A650: .4byte gUnknown_3000E98 +_0805A654: .4byte gUnknown_3000E9A + thumb_func_end sub_805A5F4 + + thumb_func_start sub_805A658 +sub_805A658: @ 805A658 + push {r4,lr} + ldr r3, _0805A678 @ =gUnknown_3000E90 + ldr r2, _0805A67C @ =gUnknown_3000E98 + ldrh r2, [r2] + ldrb r4, [r3] + adds r2, r4 + strh r2, [r0] + ldr r0, _0805A680 @ =gUnknown_3000E9A + ldrh r0, [r0] + ldrb r3, [r3, 0x1] + adds r0, r3 + adds r0, 0x8 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805A678: .4byte gUnknown_3000E90 +_0805A67C: .4byte gUnknown_3000E98 +_0805A680: .4byte gUnknown_3000E9A + thumb_func_end sub_805A658 + + thumb_func_start sub_805A684 +sub_805A684: @ 805A684 + push {lr} + ldr r0, _0805A6A0 @ =gUnknown_3005008 + ldr r1, [r0] + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x2 + ldrsh r1, [r1, r2] + ldr r2, _0805A6A4 @ =gUnknown_2036DFC + ldr r2, [r2] + bl sub_805A6A8 + pop {r0} + bx r0 + .align 2, 0 +_0805A6A0: .4byte gUnknown_3005008 +_0805A6A4: .4byte gUnknown_2036DFC + thumb_func_end sub_805A684 + + thumb_func_start sub_805A6A8 +sub_805A6A8: @ 805A6A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + mov r9, r1 + mov r8, r2 + movs r1, 0 +_0805A6BC: + ldr r2, _0805A728 @ =gUnknown_3000E90 + ldrb r0, [r2, 0x3] + adds r0, r1, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A6D0 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A6D0: + lsls r6, r0, 5 + movs r4, 0 + adds r7, r1, 0x2 + str r7, [sp] + lsrs r5, r1, 1 +_0805A6DA: + ldr r1, _0805A728 @ =gUnknown_3000E90 + ldrb r0, [r1, 0x2] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A6EE + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A6EE: + adds r1, r6, r0 + lsls r1, 16 + lsrs r1, 16 + lsrs r2, r4, 1 + add r2, r10 + mov r0, r8 + mov r7, r9 + adds r3, r7, r5 + bl sub_805A948 + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _0805A6DA + ldr r1, [sp] + lsls r0, r1, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _0805A6BC + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A728: .4byte gUnknown_3000E90 + thumb_func_end sub_805A6A8 + + thumb_func_start sub_805A72C +sub_805A72C: @ 805A72C + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + ldr r0, _0805A774 @ =gUnknown_2036DFC + ldr r4, [r0] + cmp r6, 0 + ble _0805A744 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A87C +_0805A744: + cmp r6, 0 + bge _0805A750 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A824 +_0805A750: + cmp r7, 0 + ble _0805A75C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A778 +_0805A75C: + cmp r7, 0 + bge _0805A768 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A7D8 +_0805A768: + movs r0, 0x1 + strb r0, [r5, 0x4] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A774: .4byte gUnknown_2036DFC + thumb_func_end sub_805A72C + + thumb_func_start sub_805A778 +sub_805A778: @ 805A778 + push {r4-r7,lr} + adds r5, r0, 0 + adds r7, r1, 0 + ldrb r0, [r5, 0x3] + adds r0, 0x1C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A790 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A790: + lsls r6, r0, 5 + movs r4, 0 +_0805A794: + ldrb r0, [r5, 0x2] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A7A6 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A7A6: + adds r1, r6, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _0805A7D4 @ =gUnknown_3005008 + ldr r3, [r0] + movs r0, 0 + ldrsh r2, [r3, r0] + lsrs r0, r4, 1 + adds r2, r0 + movs r0, 0x2 + ldrsh r3, [r3, r0] + adds r3, 0xE + adds r0, r7, 0 + bl sub_805A948 + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _0805A794 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A7D4: .4byte gUnknown_3005008 + thumb_func_end sub_805A778 + + thumb_func_start sub_805A7D8 +sub_805A7D8: @ 805A7D8 + push {r4-r7,lr} + adds r5, r0, 0 + adds r7, r1, 0 + ldrb r0, [r5, 0x3] + lsls r6, r0, 5 + movs r4, 0 +_0805A7E4: + ldrb r0, [r5, 0x2] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A7F6 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A7F6: + adds r1, r6, r0 + ldr r0, _0805A820 @ =gUnknown_3005008 + ldr r3, [r0] + movs r0, 0 + ldrsh r2, [r3, r0] + lsrs r0, r4, 1 + adds r2, r0 + movs r0, 0x2 + ldrsh r3, [r3, r0] + adds r0, r7, 0 + bl sub_805A948 + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _0805A7E4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A820: .4byte gUnknown_3005008 + thumb_func_end sub_805A7D8 + + thumb_func_start sub_805A824 +sub_805A824: @ 805A824 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + mov r8, r1 + ldrb r6, [r5, 0x2] + movs r4, 0 +_0805A832: + ldrb r0, [r5, 0x3] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A844 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A844: + lsls r1, r0, 5 + adds r1, r6 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _0805A878 @ =gUnknown_3005008 + ldr r0, [r0] + movs r3, 0 + ldrsh r2, [r0, r3] + movs r7, 0x2 + ldrsh r3, [r0, r7] + lsrs r0, r4, 1 + adds r3, r0 + mov r0, r8 + bl sub_805A948 + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _0805A832 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A878: .4byte gUnknown_3005008 + thumb_func_end sub_805A824 + + thumb_func_start sub_805A87C +sub_805A87C: @ 805A87C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + mov r8, r1 + ldrb r0, [r6, 0x2] + adds r0, 0x1C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1F + bls _0805A89A + adds r0, r5, 0 + subs r0, 0x20 + lsls r0, 24 + lsrs r5, r0, 24 +_0805A89A: + movs r4, 0 +_0805A89C: + ldrb r0, [r6, 0x3] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _0805A8AE + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_0805A8AE: + lsls r1, r0, 5 + adds r1, r5 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _0805A8E4 @ =gUnknown_3005008 + ldr r0, [r0] + movs r3, 0 + ldrsh r2, [r0, r3] + adds r2, 0xE + movs r7, 0x2 + ldrsh r3, [r0, r7] + lsrs r0, r4, 1 + adds r3, r0 + mov r0, r8 + bl sub_805A948 + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _0805A89C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A8E4: .4byte gUnknown_3005008 + thumb_func_end sub_805A87C + + thumb_func_start sub_805A8E8 +sub_805A8E8: @ 805A8E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0805A914 @ =gUnknown_3000E90 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805AAE8 + adds r1, r0, 0 + cmp r1, 0 + blt _0805A90E + ldr r0, _0805A918 @ =gUnknown_2036DFC + ldr r0, [r0] + lsls r1, 16 + lsrs r1, 16 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_805A948 +_0805A90E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A914: .4byte gUnknown_3000E90 +_0805A918: .4byte gUnknown_2036DFC + thumb_func_end sub_805A8E8 + + thumb_func_start sub_805A91C +sub_805A91C: @ 805A91C + push {r4,r5,lr} + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + ldr r0, _0805A944 @ =gUnknown_3000E90 + adds r1, r3, 0 + adds r2, r4, 0 + bl sub_805AAE8 + cmp r0, 0 + blt _0805A93E + lsls r2, r0, 16 + lsrs r2, 16 + movs r0, 0x1 + adds r1, r5, 0 + bl sub_805A9B4 +_0805A93E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A944: .4byte gUnknown_3000E90 + thumb_func_end sub_805A91C + + thumb_func_start sub_805A948 +sub_805A948: @ 805A948 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r6, r2, 0 + adds r7, r3, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_8058E48 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x80 + lsls r0, 3 + cmp r4, r0 + bls _0805A970 + movs r4, 0 +_0805A970: + ldr r0, _0805A97C @ =0x0000027f + cmp r4, r0 + bhi _0805A980 + ldr r0, [r5, 0x10] + ldr r5, [r0, 0xC] + b _0805A98C + .align 2, 0 +_0805A97C: .4byte 0x0000027f +_0805A980: + ldr r0, [r5, 0x14] + ldr r5, [r0, 0xC] + ldr r1, _0805A9B0 @ =0xfffffd80 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_0805A98C: + lsls r0, r6, 16 + asrs r0, 16 + lsls r1, r7, 16 + asrs r1, 16 + bl sub_8058F8C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 4 + adds r1, r5, r1 + mov r2, r8 + bl sub_805A9B4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A9B0: .4byte 0xfffffd80 + thumb_func_end sub_805A948 + + thumb_func_start sub_805A9B4 +sub_805A9B4: @ 805A9B4 + push {r4,lr} + adds r4, r1, 0 + lsls r2, 16 + lsrs r2, 16 + cmp r0, 0x1 + beq _0805AA0C + cmp r0, 0x1 + bgt _0805A9CA + cmp r0, 0 + beq _0805AA6C + b _0805AABE +_0805A9CA: + cmp r0, 0x2 + bne _0805AABE + ldr r0, _0805AA04 @ =gUnknown_300501C + ldr r0, [r0] + lsls r3, r2, 1 + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x2] + adds r2, r0, 0 + adds r2, 0x40 + ldrh r1, [r4, 0x4] + strh r1, [r2] + adds r0, 0x42 + ldrh r1, [r4, 0x6] + strh r1, [r0] + ldr r0, _0805AA08 @ =gUnknown_3005014 + ldr r0, [r0] + adds r0, r3, r0 + movs r2, 0 + strh r2, [r0] + strh r2, [r0, 0x2] + adds r1, r0, 0 + adds r1, 0x40 + strh r2, [r1] + adds r0, 0x42 + strh r2, [r0] + b _0805AAA2 + .align 2, 0 +_0805AA04: .4byte gUnknown_300501C +_0805AA08: .4byte gUnknown_3005014 +_0805AA0C: + ldr r0, _0805AA60 @ =gUnknown_300501C + ldr r0, [r0] + lsls r3, r2, 1 + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x2] + adds r2, r0, 0 + adds r2, 0x40 + ldrh r1, [r4, 0x4] + strh r1, [r2] + adds r0, 0x42 + ldrh r1, [r4, 0x6] + strh r1, [r0] + ldr r0, _0805AA64 @ =gUnknown_3005014 + ldr r0, [r0] + adds r0, r3, r0 + ldrh r1, [r4, 0x8] + strh r1, [r0] + ldrh r1, [r4, 0xA] + strh r1, [r0, 0x2] + adds r2, r0, 0 + adds r2, 0x40 + ldrh r1, [r4, 0xC] + strh r1, [r2] + adds r0, 0x42 + ldrh r1, [r4, 0xE] + strh r1, [r0] + ldr r0, _0805AA68 @ =gUnknown_3005018 + ldr r0, [r0] + adds r3, r0 + movs r1, 0 + strh r1, [r3] + strh r1, [r3, 0x2] + adds r0, r3, 0 + adds r0, 0x40 + strh r1, [r0] + adds r3, 0x42 + strh r1, [r3] + b _0805AABE + .align 2, 0 +_0805AA60: .4byte gUnknown_300501C +_0805AA64: .4byte gUnknown_3005014 +_0805AA68: .4byte gUnknown_3005018 +_0805AA6C: + ldr r0, _0805AAD8 @ =gUnknown_300501C + ldr r0, [r0] + lsls r3, r2, 1 + adds r0, r3, r0 + ldr r1, _0805AADC @ =0x00003014 + adds r2, r1, 0 + strh r2, [r0] + strh r2, [r0, 0x2] + adds r1, r0, 0 + adds r1, 0x40 + strh r2, [r1] + adds r0, 0x42 + strh r2, [r0] + ldr r0, _0805AAE0 @ =gUnknown_3005014 + ldr r0, [r0] + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x2] + adds r2, r0, 0 + adds r2, 0x40 + ldrh r1, [r4, 0x4] + strh r1, [r2] + adds r0, 0x42 + ldrh r1, [r4, 0x6] + strh r1, [r0] +_0805AAA2: + ldr r0, _0805AAE4 @ =gUnknown_3005018 + ldr r0, [r0] + adds r3, r0 + ldrh r0, [r4, 0x8] + strh r0, [r3] + ldrh r0, [r4, 0xA] + strh r0, [r3, 0x2] + adds r1, r3, 0 + adds r1, 0x40 + ldrh r0, [r4, 0xC] + strh r0, [r1] + adds r3, 0x42 + ldrh r0, [r4, 0xE] + strh r0, [r3] +_0805AABE: + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0x3 + bl sub_80F67A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805AAD8: .4byte gUnknown_300501C +_0805AADC: .4byte 0x00003014 +_0805AAE0: .4byte gUnknown_3005014 +_0805AAE4: .4byte gUnknown_3005018 + thumb_func_end sub_805A9B4 + + thumb_func_start sub_805AAE8 +sub_805AAE8: @ 805AAE8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _0805AB18 @ =gUnknown_3005008 + ldr r3, [r0] + movs r5, 0 + ldrsh r0, [r3, r5] + subs r1, r0 + lsls r1, 1 + cmp r1, 0x1F + bhi _0805AB12 + ldrb r0, [r4, 0x2] + adds r1, r0 + cmp r1, 0x1F + ble _0805AB06 + subs r1, 0x20 +_0805AB06: + movs r5, 0x2 + ldrsh r0, [r3, r5] + subs r0, r2, r0 + lsls r2, r0, 1 + cmp r2, 0x1F + bls _0805AB1C +_0805AB12: + movs r0, 0x1 + negs r0, r0 + b _0805AB2A + .align 2, 0 +_0805AB18: .4byte gUnknown_3005008 +_0805AB1C: + ldrb r0, [r4, 0x3] + adds r2, r0 + cmp r2, 0x1F + ble _0805AB26 + subs r2, 0x20 +_0805AB26: + lsls r0, r2, 5 + adds r0, r1 +_0805AB2A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805AAE8 + + thumb_func_start sub_805AB30 +sub_805AB30: @ 805AB30 + push {lr} + adds r3, r0, 0 + ldr r2, [r3, 0x4] + cmp r2, 0 + beq _0805AB50 + ldr r1, _0805AB54 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r2, 0x32 + ldrsh r1, [r0, r2] + str r1, [r3, 0x8] + movs r1, 0x34 + ldrsh r0, [r0, r1] + str r0, [r3, 0xC] +_0805AB50: + pop {r0} + bx r0 + .align 2, 0 +_0805AB54: .4byte gUnknown_202063C + thumb_func_end sub_805AB30 + + thumb_func_start sub_805AB58 +sub_805AB58: @ 805AB58 + ldr r1, _0805AB6C @ =gUnknown_3005050 + movs r0, 0 + str r0, [r1, 0x8] + str r0, [r1, 0xC] + str r0, [r1, 0x10] + str r0, [r1, 0x14] + str r0, [r1, 0x4] + str r0, [r1] + bx lr + .align 2, 0 +_0805AB6C: .4byte gUnknown_3005050 + thumb_func_end sub_805AB58 + + thumb_func_start sub_805AB70 +sub_805AB70: @ 805AB70 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0805ABA4 @ =gUnknown_3005050 + ldr r1, [r4, 0x4] + cmp r1, 0 + beq _0805AB8C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805ABA8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 +_0805AB8C: + adds r0, r5, 0 + bl sub_805F950 + lsls r0, 24 + lsrs r0, 24 + str r0, [r4, 0x4] + ldr r0, _0805ABAC @ =sub_805AB30 + str r0, [r4] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805ABA4: .4byte gUnknown_3005050 +_0805ABA8: .4byte gUnknown_202063C +_0805ABAC: .4byte sub_805AB30 + thumb_func_end sub_805AB70 + + thumb_func_start sub_805ABB0 +sub_805ABB0: @ 805ABB0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r6, _0805ACA4 @ =gUnknown_3005050 + ldr r1, [r6] + cmp r1, 0 + beq _0805ABC4 + adds r0, r6, 0 + bl _call_via_r1 +_0805ABC4: + ldr r7, [r6, 0x8] + ldr r0, [r6, 0xC] + mov r8, r0 + movs r4, 0 + movs r5, 0 + ldr r1, [r6, 0x10] + ldr r0, [r6, 0x14] + cmp r1, 0 + bne _0805ABE2 + cmp r7, 0 + beq _0805ABE2 + subs r4, 0x1 + cmp r7, 0 + ble _0805ABE2 + movs r4, 0x1 +_0805ABE2: + cmp r0, 0 + bne _0805ABF6 + mov r2, r8 + cmp r2, 0 + beq _0805ABF6 + movs r5, 0x1 + negs r5, r5 + cmp r2, 0 + ble _0805ABF6 + movs r5, 0x1 +_0805ABF6: + cmp r1, 0 + beq _0805AC08 + cmn r1, r7 + bne _0805AC08 + movs r4, 0x1 + negs r4, r4 + cmp r7, 0 + ble _0805AC08 + movs r4, 0x1 +_0805AC08: + cmp r0, 0 + beq _0805AC1C + mov r3, r8 + cmn r0, r3 + bne _0805AC1C + movs r4, 0x1 + negs r4, r4 + cmp r3, 0 + ble _0805AC1C + movs r4, 0x1 +_0805AC1C: + ldr r2, _0805ACA4 @ =gUnknown_3005050 + ldr r0, [r2, 0x10] + adds r1, r0, r7 + str r1, [r2, 0x10] + adds r0, r1, 0 + cmp r1, 0 + bge _0805AC2C + adds r0, 0xF +_0805AC2C: + asrs r0, 4 + lsls r0, 4 + subs r0, r1, r0 + str r0, [r2, 0x10] + ldr r0, [r2, 0x14] + mov r3, r8 + adds r1, r0, r3 + str r1, [r2, 0x14] + adds r0, r1, 0 + cmp r1, 0 + bge _0805AC44 + adds r0, 0xF +_0805AC44: + asrs r0, 4 + lsls r0, 4 + subs r0, r1, r0 + str r0, [r2, 0x14] + cmp r4, 0 + bne _0805AC54 + cmp r5, 0 + beq _0805AC7E +_0805AC54: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8059530 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805F924 + ldr r6, _0805ACA8 @ =gUnknown_3000E90 + lsls r4, 1 + lsls r5, 1 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805A5B8 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805A72C +_0805AC7E: + ldr r0, _0805ACA8 @ =gUnknown_3000E90 + adds r1, r7, 0 + mov r2, r8 + bl sub_805A5D4 + ldr r1, _0805ACAC @ =gUnknown_300506C + ldrh r0, [r1] + subs r0, r7 + strh r0, [r1] + ldr r1, _0805ACB0 @ =gUnknown_3005068 + ldrh r0, [r1] + mov r2, r8 + subs r0, r2 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805ACA4: .4byte gUnknown_3005050 +_0805ACA8: .4byte gUnknown_3000E90 +_0805ACAC: .4byte gUnknown_300506C +_0805ACB0: .4byte gUnknown_3005068 + thumb_func_end sub_805ABB0 + + thumb_func_start sub_805ACB4 +sub_805ACB4: @ 805ACB4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8059530 + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + bl sub_805F924 + bl sub_805A684 + ldr r1, _0805ACE8 @ =gUnknown_300506C + lsls r4, 4 + ldrh r0, [r1] + subs r0, r4 + strh r0, [r1] + ldr r1, _0805ACEC @ =gUnknown_3005068 + lsls r5, 4 + ldrh r0, [r1] + subs r0, r5 + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805ACE8: .4byte gUnknown_300506C +_0805ACEC: .4byte gUnknown_3005068 + thumb_func_end sub_805ACB4 + + thumb_func_start sub_805ACF0 +sub_805ACF0: @ 805ACF0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _0805ADCC @ =gUnknown_3005050 + ldr r1, [r4] + cmp r1, 0 + beq _0805AD04 + adds r0, r4, 0 + bl _call_via_r1 +_0805AD04: + ldr r7, [r4, 0x8] + ldr r0, [r4, 0xC] + mov r8, r0 + movs r5, 0 + movs r6, 0 + ldr r1, [r4, 0x10] + ldr r0, [r4, 0x14] + cmp r1, 0 + bne _0805AD22 + cmp r7, 0 + beq _0805AD22 + subs r5, 0x1 + cmp r7, 0 + ble _0805AD22 + movs r5, 0x1 +_0805AD22: + cmp r0, 0 + bne _0805AD36 + mov r2, r8 + cmp r2, 0 + beq _0805AD36 + movs r6, 0x1 + negs r6, r6 + cmp r2, 0 + ble _0805AD36 + movs r6, 0x1 +_0805AD36: + cmp r1, 0 + beq _0805AD48 + cmn r1, r7 + bne _0805AD48 + movs r5, 0x1 + negs r5, r5 + cmp r7, 0 + ble _0805AD48 + movs r5, 0x1 +_0805AD48: + cmp r0, 0 + beq _0805AD5C + mov r3, r8 + cmn r0, r3 + bne _0805AD5C + movs r5, 0x1 + negs r5, r5 + cmp r3, 0 + ble _0805AD5C + movs r5, 0x1 +_0805AD5C: + ldr r2, _0805ADCC @ =gUnknown_3005050 + ldr r0, [r2, 0x10] + adds r1, r0, r7 + str r1, [r2, 0x10] + adds r0, r1, 0 + cmp r1, 0 + bge _0805AD6C + adds r0, 0xF +_0805AD6C: + asrs r0, 4 + lsls r0, 4 + subs r0, r1, r0 + str r0, [r2, 0x10] + ldr r0, [r2, 0x14] + mov r3, r8 + adds r1, r0, r3 + str r1, [r2, 0x14] + adds r0, r1, 0 + cmp r1, 0 + bge _0805AD84 + adds r0, 0xF +_0805AD84: + asrs r0, 4 + lsls r0, 4 + subs r0, r1, r0 + str r0, [r2, 0x14] + cmp r5, 0 + bne _0805AD94 + cmp r6, 0 + beq _0805ADB6 +_0805AD94: + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8059530 + ldr r4, _0805ADD0 @ =gUnknown_3000E90 + lsls r5, 1 + lsls r6, 1 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_805A5B8 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_805A72C +_0805ADB6: + ldr r0, _0805ADD0 @ =gUnknown_3000E90 + adds r1, r7, 0 + mov r2, r8 + bl sub_805A5D4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805ADCC: .4byte gUnknown_3005050 +_0805ADD0: .4byte gUnknown_3000E90 + thumb_func_end sub_805ACF0 + + thumb_func_start sub_805ADD4 +sub_805ADD4: @ 805ADD4 + ldr r1, _0805ADDC @ =gUnknown_3000EA0 + str r0, [r1] + bx lr + .align 2, 0 +_0805ADDC: .4byte gUnknown_3000EA0 + thumb_func_end sub_805ADD4 + + thumb_func_start sub_805ADE0 +sub_805ADE0: @ 805ADE0 + ldr r2, _0805ADF0 @ =gUnknown_3000E98 + strh r0, [r2] + ldr r0, _0805ADF4 @ =gUnknown_3000E9A + lsls r1, 16 + asrs r1, 16 + adds r1, 0x20 + strh r1, [r0] + bx lr + .align 2, 0 +_0805ADF0: .4byte gUnknown_3000E98 +_0805ADF4: .4byte gUnknown_3000E9A + thumb_func_end sub_805ADE0 + + thumb_func_start sub_805ADF8 +sub_805ADF8: @ 805ADF8 + ldr r1, _0805AE14 @ =gUnknown_3000EA0 + ldr r0, _0805AE18 @ =sub_805AE74 + str r0, [r1] + ldr r1, _0805AE1C @ =gUnknown_3000E9C + movs r0, 0 + strb r0, [r1] + ldr r1, _0805AE20 @ =gUnknown_3000E98 + movs r0, 0 + strh r0, [r1] + ldr r1, _0805AE24 @ =gUnknown_3000E9A + movs r0, 0x20 + strh r0, [r1] + bx lr + .align 2, 0 +_0805AE14: .4byte gUnknown_3000EA0 +_0805AE18: .4byte sub_805AE74 +_0805AE1C: .4byte gUnknown_3000E9C +_0805AE20: .4byte gUnknown_3000E98 +_0805AE24: .4byte gUnknown_3000E9A + thumb_func_end sub_805ADF8 + + thumb_func_start sub_805AE28 +sub_805AE28: @ 805AE28 + push {lr} + ldr r0, _0805AE58 @ =gUnknown_3000EA0 + ldr r0, [r0] + cmp r0, 0 + beq _0805AE36 + bl _call_via_r0 +_0805AE36: + ldr r2, _0805AE5C @ =gUnknown_2021BC8 + ldr r0, _0805AE60 @ =gUnknown_300506C + ldr r1, _0805AE64 @ =gUnknown_3000E98 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r2, _0805AE68 @ =gUnknown_2021BCA + ldr r0, _0805AE6C @ =gUnknown_3005068 + ldr r1, _0805AE70 @ =gUnknown_3000E9A + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r1 + subs r0, 0x8 + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0805AE58: .4byte gUnknown_3000EA0 +_0805AE5C: .4byte gUnknown_2021BC8 +_0805AE60: .4byte gUnknown_300506C +_0805AE64: .4byte gUnknown_3000E98 +_0805AE68: .4byte gUnknown_2021BCA +_0805AE6C: .4byte gUnknown_3005068 +_0805AE70: .4byte gUnknown_3000E9A + thumb_func_end sub_805AE28 + + thumb_func_start sub_805AE74 +sub_805AE74: @ 805AE74 + push {lr} + ldr r0, _0805AE84 @ =gUnknown_2036E2C + ldrb r0, [r0] + cmp r0, 0 + bne _0805AE88 + bl sub_805ADF8 + b _0805AF10 + .align 2, 0 +_0805AE84: .4byte gUnknown_2036E2C +_0805AE88: + ldr r0, _0805AEA0 @ =gUnknown_2037078 + ldrb r0, [r0, 0x3] + cmp r0, 0x1 + bne _0805AEA8 + ldr r0, _0805AEA4 @ =gUnknown_3000E9C + ldrb r1, [r0] + movs r2, 0x1 + eors r1, r2 + strb r1, [r0] + cmp r1, 0 + beq _0805AF10 + b _0805AEAE + .align 2, 0 +_0805AEA0: .4byte gUnknown_2037078 +_0805AEA4: .4byte gUnknown_3000E9C +_0805AEA8: + ldr r1, _0805AED0 @ =gUnknown_3000E9C + movs r0, 0 + strb r0, [r1] +_0805AEAE: + bl sub_805C6E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0805AED8 + ldr r2, _0805AED4 @ =gUnknown_3000E9A + ldrh r3, [r2] + movs r0, 0 + ldrsh r1, [r2, r0] + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + ble _0805AF10 + subs r0, r3, 0x2 + b _0805AF0E + .align 2, 0 +_0805AED0: .4byte gUnknown_3000E9C +_0805AED4: .4byte gUnknown_3000E9A +_0805AED8: + cmp r0, 0x1 + bne _0805AEF4 + ldr r1, _0805AEF0 @ =gUnknown_3000E9A + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0x47 + bgt _0805AF10 + adds r0, r2, 0x2 + strh r0, [r1] + b _0805AF10 + .align 2, 0 +_0805AEF0: .4byte gUnknown_3000E9A +_0805AEF4: + ldr r2, _0805AF04 @ =gUnknown_3000E9A + ldrh r0, [r2] + movs r3, 0 + ldrsh r1, [r2, r3] + cmp r1, 0x1F + bgt _0805AF08 + adds r0, 0x2 + b _0805AF0E + .align 2, 0 +_0805AF04: .4byte gUnknown_3000E9A +_0805AF08: + cmp r1, 0x20 + ble _0805AF10 + subs r0, 0x2 +_0805AF0E: + strh r0, [r2] +_0805AF10: + pop {r0} + bx r0 + thumb_func_end sub_805AE74 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s new file mode 100644 index 000000000..a544e5473 --- /dev/null +++ b/asm/field_control_avatar.s @@ -0,0 +1,3144 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_806C888 +sub_806C888: @ 806C888 + push {r4-r6,lr} + movs r1, 0x2 + negs r1, r1 + movs r3, 0x3 + negs r3, r3 + movs r4, 0x5 + negs r4, r4 + movs r5, 0x9 + negs r5, r5 + movs r6, 0x11 + negs r6, r6 + movs r2, 0 + strb r2, [r0] + ldrb r2, [r0, 0x1] + ands r1, r2 + ands r1, r3 + ands r1, r4 + ands r1, r5 + ands r1, r6 + strb r1, [r0, 0x1] + movs r1, 0 + strb r1, [r0, 0x2] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_806C888 + + thumb_func_start sub_806C8BC +sub_806C8BC: @ 806C8BC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + mov r0, sp + strh r1, [r0] + mov r4, sp + adds r4, 0x2 + strh r2, [r4] + ldr r0, _0806CA14 @ =gUnknown_2037078 + ldrb r1, [r0, 0x2] + mov r8, r1 + ldrb r6, [r0, 0x3] + bl sub_806CE74 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059D70 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8069A64 + lsls r0, 24 + cmp r0, 0 + bne _0806C908 + bl sub_806997C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806C908 + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_806CA4C +_0806C908: + cmp r6, 0x2 + bne _0806C910 + cmp r7, 0 + beq _0806C914 +_0806C910: + cmp r6, 0 + bne _0806C9D0 +_0806C914: + bl sub_80BD674 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _0806C9AC + mov r0, sp + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0806C940 + ldr r0, _0806CA14 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0806C940 + ldrb r0, [r5] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r5] +_0806C940: + ldr r0, _0806CA18 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806C9D0 + ldr r0, _0806CA14 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0806C9AC + mov r0, sp + ldrh r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0806C96E + ldrb r0, [r5] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r5] +_0806C96E: + mov r0, sp + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806C982 + ldrb r0, [r5] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5] +_0806C982: + mov r0, sp + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0806C996 + ldrb r0, [r5] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r5] +_0806C996: + mov r0, sp + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _0806C9AC + ldrb r0, [r5, 0x1] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5, 0x1] +_0806C9AC: + ldr r0, _0806CA18 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806C9D0 + ldrh r1, [r4] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _0806C9D0 + ldrb r0, [r5] + movs r1, 0x10 + orrs r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5] +_0806C9D0: + cmp r7, 0 + bne _0806C9F6 + cmp r6, 0x2 + bne _0806C9E6 + mov r0, r8 + cmp r0, 0x2 + bne _0806C9E6 + ldrb r0, [r5] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5] +_0806C9E6: + cmp r7, 0 + bne _0806C9F6 + cmp r6, 0x2 + bne _0806C9F6 + ldrb r0, [r5] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r5] +_0806C9F6: + ldr r0, _0806CA18 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806CA40 + ldrh r1, [r4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0806CA1C + movs r0, 0x2 + b _0806CA3E + .align 2, 0 +_0806CA14: .4byte gUnknown_2037078 +_0806CA18: .4byte gUnknown_203ADFA +_0806CA1C: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806CA28 + movs r0, 0x1 + b _0806CA3E +_0806CA28: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0806CA34 + movs r0, 0x3 + b _0806CA3E +_0806CA34: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0806CA40 + movs r0, 0x4 +_0806CA3E: + strb r0, [r5, 0x2] +_0806CA40: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806C8BC + + thumb_func_start sub_806CA4C +sub_806CA4C: @ 806CA4C + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + bl sub_80699B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8 + bhi _0806CABA + lsls r0, 2 + ldr r1, _0806CA68 @ =_0806CA6C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806CA68: .4byte _0806CA6C + .align 2, 0 +_0806CA6C: + .4byte _0806CABA + .4byte _0806CA90 + .4byte _0806CA94 + .4byte _0806CA98 + .4byte _0806CA9C + .4byte _0806CAA0 + .4byte _0806CAA8 + .4byte _0806CAB0 + .4byte _0806CAB4 +_0806CA90: + movs r0, 0x40 + b _0806CAB6 +_0806CA94: + movs r0, 0x80 + b _0806CAB6 +_0806CA98: + movs r0, 0x20 + b _0806CAB6 +_0806CA9C: + movs r0, 0x10 + b _0806CAB6 +_0806CAA0: + movs r1, 0x80 + lsls r1, 2 + adds r0, r1, 0 + b _0806CAB6 +_0806CAA8: + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + b _0806CAB6 +_0806CAB0: + movs r0, 0x8 + b _0806CAB6 +_0806CAB4: + movs r0, 0x4 +_0806CAB6: + strh r0, [r4] + strh r0, [r5] +_0806CABA: + bl sub_8069970 + bl sub_80699A4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806CA4C + + thumb_func_start sub_806CAC8 +sub_806CAC8: @ 806CAC8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r5, r0, 0 + bl sub_8069A54 + bl sub_805C6C4 + lsls r0, 24 + lsrs r6, r0, 24 + mov r4, sp + mov r0, sp + bl sub_806CE20 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + movs r2, 0xFF + bl sub_8058F48 + mov r8, r0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r7, _0806CB70 @ =gUnknown_3005078 + adds r0, r7, 0 + bl sub_806C888 + ldrb r0, [r5, 0x2] + strb r0, [r7, 0x2] + bl sub_8081B30 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806CB6C + bl sub_8069C74 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806CB6C + ldrb r1, [r5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0806CB74 + movs r0, 0x5 + bl sub_8054E90 + bl sub_8146CA4 + bl sub_815D8C8 + bl sub_80CC918 + bl sub_80CB054 + bl sub_80CCFBC + mov r0, sp + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806D5E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CB74 + ldrb r0, [r7] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r7] +_0806CB6C: + movs r0, 0x1 + b _0806CD22 + .align 2, 0 +_0806CB70: .4byte gUnknown_3005078 +_0806CB74: + ldrb r1, [r5] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0806CBFC + ldrb r0, [r5, 0x2] + cmp r0, 0 + beq _0806CB88 + cmp r0, r6 + bne _0806CBD8 +_0806CB88: + mov r7, sp + mov r0, sp + bl sub_806CE38 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r7, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r4, r0, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806D804 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CBC0 + ldr r0, _0806CBBC @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x2 + b _0806CD16 + .align 2, 0 +_0806CBBC: .4byte gUnknown_3005078 +_0806CBC0: + mov r0, sp + bl sub_806CE20 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r7, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r4, r0, 16 +_0806CBD8: + ldrb r1, [r5] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0806CBFC + mov r0, r8 + bl sub_806D7F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CBFC + ldr r0, _0806CBF8 @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x2 + b _0806CD16 + .align 2, 0 +_0806CBF8: .4byte gUnknown_3005078 +_0806CBFC: + ldrb r1, [r5] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0806CC2C + ldrb r0, [r5, 0x2] + cmp r0, r6 + bne _0806CC2C + mov r0, sp + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806D964 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CC2C + ldr r0, _0806CC28 @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x10 + b _0806CD16 + .align 2, 0 +_0806CC28: .4byte gUnknown_3005078 +_0806CC2C: + mov r4, sp + mov r0, sp + bl sub_806CE38 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r4, r0, 16 + ldrb r1, [r5] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0806CC74 + ldrb r0, [r5, 0x2] + cmp r0, r6 + bne _0806CC74 + mov r0, sp + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806D804 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CC74 + ldr r0, _0806CC70 @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x10 + b _0806CD16 + .align 2, 0 +_0806CC70: .4byte gUnknown_3005078 +_0806CC74: + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806CC9C + mov r0, sp + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806CEA0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CC9C + ldr r0, _0806CC98 @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x1 + b _0806CD16 + .align 2, 0 +_0806CC98: .4byte gUnknown_3005078 +_0806CC9C: + ldrb r1, [r5] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0806CCCC + ldrb r0, [r5, 0x2] + cmp r0, r6 + bne _0806CCCC + mov r0, sp + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806DCD0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CCCC + ldr r0, _0806CCC8 @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x20 + b _0806CD16 + .align 2, 0 +_0806CCC8: .4byte gUnknown_3005078 +_0806CCCC: + ldrb r1, [r5] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0806CCFC + ldr r2, _0806CCF4 @ =gUnknown_3005078 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0806CCF8 @ =0x0000083e + bl sub_806E680 + movs r0, 0x6 + bl sub_80722CC + bl sub_806F258 + b _0806CB6C + .align 2, 0 +_0806CCF4: .4byte gUnknown_3005078 +_0806CCF8: .4byte 0x0000083e +_0806CCFC: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0806CD20 + bl sub_810AD10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CD20 + ldr r0, _0806CD1C @ =gUnknown_3005078 + ldrb r1, [r0] + movs r2, 0x8 +_0806CD16: + orrs r1, r2 + strb r1, [r0] + b _0806CB6C + .align 2, 0 +_0806CD1C: .4byte gUnknown_3005078 +_0806CD20: + movs r0, 0 +_0806CD22: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806CAC8 + + thumb_func_start sub_806CD30 +sub_806CD30: @ 806CD30 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069A64 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CDEA + ldr r1, _0806CD50 @ =gUnknown_20370A0 + ldrb r0, [r1] + cmp r0, 0 + beq _0806CD54 + subs r0, 0x1 + strb r0, [r1] + b _0806CDEA + .align 2, 0 +_0806CD50: .4byte gUnknown_20370A0 +_0806CD54: + bl sub_8069A04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806CDEA + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _0806CDC0 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4, 0x2] + cmp r0, r1 + beq _0806CDC0 + bl sub_80699D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806CDEA + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + bne _0806CD8E + movs r0, 0x1 + bl sub_8069998 + b _0806CDB0 +_0806CD8E: + cmp r0, 0x1 + bne _0806CD9A + movs r0, 0x2 + bl sub_8069998 + b _0806CDB0 +_0806CD9A: + cmp r0, 0x3 + bne _0806CDA6 + movs r0, 0x3 + bl sub_8069998 + b _0806CDB0 +_0806CDA6: + cmp r0, 0x4 + bne _0806CDB0 + movs r0, 0x4 + bl sub_8069998 +_0806CDB0: + ldr r0, _0806CDBC @ =gUnknown_81A7ADB + bl sub_8069AE4 + bl sub_8069940 + b _0806CDEA + .align 2, 0 +_0806CDBC: .4byte gUnknown_81A7ADB +_0806CDC0: + ldrb r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0806CDEA + ldr r0, _0806CDF0 @ =gUnknown_81A7ADB + bl sub_8069AE4 + bl sub_8069940 + ldr r4, _0806CDF4 @ =sub_806CDF8 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0806CDEA + adds r0, r4, 0 + movs r1, 0x8 + bl sub_807741C +_0806CDEA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806CDF0: .4byte gUnknown_81A7ADB +_0806CDF4: .4byte sub_806CDF8 + thumb_func_end sub_806CD30 + + thumb_func_start sub_806CDF8 +sub_806CDF8: @ 806CDF8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8069958 + lsls r0, 24 + cmp r0, 0 + bne _0806CE18 + movs r0, 0x6 + bl sub_80722CC + bl sub_806F258 + adds r0, r4, 0 + bl sub_8077508 +_0806CE18: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806CDF8 + + thumb_func_start sub_806CE20 +sub_806CE20: @ 806CE20 + push {r4,lr} + adds r4, r0, 0 + adds r1, r4, 0x2 + bl sub_805C538 + bl sub_805C700 + strb r0, [r4, 0x4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806CE20 + + thumb_func_start sub_806CE38 +sub_806CE38: @ 806CE38 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r1, r5, 0x2 + bl sub_805C4F4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0806CE6A + bl sub_805C700 +_0806CE6A: + strb r0, [r5, 0x4] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806CE38 + + thumb_func_start sub_806CE74 +sub_806CE74: @ 806CE74 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806CE74 + + thumb_func_start sub_806CEA0 +sub_806CEA0: @ 806CEA0 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + lsls r1, 24 + lsrs r1, 24 + bl sub_806CEE0 + adds r4, r0, 0 + cmp r4, 0 + bne _0806CEB8 + movs r0, 0 + b _0806CED2 +_0806CEB8: + ldr r0, _0806CED8 @ =gUnknown_8168CE4 + cmp r4, r0 + beq _0806CECA + ldr r0, _0806CEDC @ =gUnknown_81A6955 + cmp r4, r0 + beq _0806CECA + movs r0, 0x5 + bl sub_80722CC +_0806CECA: + adds r0, r4, 0 + bl sub_8069AE4 + movs r0, 0x1 +_0806CED2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806CED8: .4byte gUnknown_8168CE4 +_0806CEDC: .4byte gUnknown_81A6955 + thumb_func_end sub_806CEA0 + + thumb_func_start sub_806CEE0 +sub_806CEE0: @ 806CEE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + mov r8, r5 + lsls r2, 24 + lsrs r4, r2, 24 + adds r7, r4, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_806CFF4 + cmp r0, 0 + bne _0806CF2C + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_806D0E4 + cmp r0, 0 + bne _0806CF2C + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_806D1F0 + cmp r0, 0 + bne _0806CF2C + adds r0, r6, 0 + mov r1, r8 + adds r2, r7, 0 + bl sub_806D548 + cmp r0, 0 + bne _0806CF2C + movs r0, 0 +_0806CF2C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806CEE0 + + thumb_func_start sub_806CF38 +sub_806CF38: @ 806CF38 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r2, 24 + lsrs r6, r2, 24 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059EC4 + lsls r0, 24 + cmp r0, 0 + bne _0806CF60 + ldrh r0, [r4] + ldrh r1, [r4, 0x2] + b _0806CF7E +_0806CF60: + ldr r1, _0806CFA4 @ =gUnknown_826D2D8 + lsls r2, r6, 3 + adds r0, r2, r1 + ldr r3, [r0] + ldrh r0, [r4] + adds r0, r3 + lsls r0, 16 + lsrs r0, 16 + adds r1, 0x4 + adds r2, r1 + ldr r2, [r2] + ldrh r1, [r4, 0x2] + adds r1, r2 + lsls r1, 16 + lsrs r1, 16 +_0806CF7E: + ldrb r2, [r4, 0x4] + bl sub_805F894 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x10 + beq _0806CF9E + ldr r1, _0806CFA8 @ =gUnknown_2036E38 + lsls r2, r3, 3 + adds r0, r2, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x8] + adds r5, r1, 0 + cmp r0, 0xFF + bne _0806CFAC +_0806CF9E: + movs r0, 0 + b _0806CFDE + .align 2, 0 +_0806CFA4: .4byte gUnknown_826D2D8 +_0806CFA8: .4byte gUnknown_2036E38 +_0806CFAC: + movs r4, 0 + ldr r1, _0806CFE4 @ =gUnknown_2031DEC +_0806CFB0: + ldrb r0, [r1] + cmp r0, 0x1 + bne _0806CFBC + ldrb r0, [r1, 0x2] + cmp r0, r3 + beq _0806CF9E +_0806CFBC: + adds r1, 0x4 + adds r4, 0x1 + cmp r4, 0x3 + ble _0806CFB0 + ldr r0, _0806CFE8 @ =gUnknown_3005074 + strb r3, [r0] + ldr r1, _0806CFEC @ =gUnknown_20370D2 + adds r0, r2, r3 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x8] + strh r0, [r1] + ldr r0, _0806CFF0 @ =gUnknown_20370D4 + strh r6, [r0] + adds r0, r3, 0 + bl sub_805FC38 +_0806CFDE: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806CFE4: .4byte gUnknown_2031DEC +_0806CFE8: .4byte gUnknown_3005074 +_0806CFEC: .4byte gUnknown_20370D2 +_0806CFF0: .4byte gUnknown_20370D4 + thumb_func_end sub_806CF38 + + thumb_func_start sub_806CFF4 +sub_806CFF4: @ 806CFF4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldrh r0, [r4] + ldrh r1, [r4, 0x2] + ldrb r2, [r4, 0x4] + bl sub_805F894 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x10 + beq _0806D02A + ldr r2, _0806D098 @ =gUnknown_2036E38 + lsls r1, r5, 3 + adds r0, r1, r5 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x8] + adds r6, r1, 0 + cmp r0, 0xFF + bne _0806D078 +_0806D02A: + adds r0, r7, 0 + bl sub_8059EC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D092 + ldr r1, _0806D09C @ =gUnknown_826D2D8 + mov r0, r8 + lsls r2, r0, 3 + adds r0, r2, r1 + ldr r3, [r0] + ldrh r0, [r4] + adds r0, r3 + lsls r0, 16 + lsrs r0, 16 + adds r1, 0x4 + adds r2, r1 + ldr r2, [r2] + ldrh r1, [r4, 0x2] + adds r1, r2 + lsls r1, 16 + lsrs r1, 16 + ldrb r2, [r4, 0x4] + bl sub_805F894 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x10 + beq _0806D092 + ldr r2, _0806D098 @ =gUnknown_2036E38 + lsls r1, r5, 3 + adds r0, r1, r5 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x8] + adds r6, r1, 0 + cmp r0, 0xFF + beq _0806D092 +_0806D078: + bl sub_811B0D0 + cmp r0, 0x1 + bne _0806D0A0 + adds r0, r6, r5 + lsls r0, 2 + ldr r1, _0806D098 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D68 + lsls r0, 24 + cmp r0, 0 + bne _0806D0A0 +_0806D092: + movs r0, 0 + b _0806D0C8 + .align 2, 0 +_0806D098: .4byte gUnknown_2036E38 +_0806D09C: .4byte gUnknown_826D2D8 +_0806D0A0: + ldr r0, _0806D0D4 @ =gUnknown_3005074 + strb r5, [r0] + ldr r4, _0806D0D8 @ =gUnknown_20370D2 + ldr r1, _0806D0DC @ =gUnknown_2036E38 + adds r0, r6, r5 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x8] + strh r0, [r4] + ldr r0, _0806D0E0 @ =gUnknown_20370D4 + mov r1, r8 + strh r1, [r0] + adds r0, r5, 0 + bl sub_805FC38 + adds r1, r0, 0 + ldrb r0, [r4] + bl sub_8069D8C + adds r1, r0, 0 +_0806D0C8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806D0D4: .4byte gUnknown_3005074 +_0806D0D8: .4byte gUnknown_20370D2 +_0806D0DC: .4byte gUnknown_2036E38 +_0806D0E0: .4byte gUnknown_20370D4 + thumb_func_end sub_806CFF4 + + thumb_func_start sub_806D0E4 +sub_806D0E4: @ 806D0E4 + push {r4-r7,lr} + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r4, _0806D118 @ =gUnknown_2036DFC + ldrh r1, [r0] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r0, 0x2] + subs r2, 0x7 + lsls r2, 16 + lsrs r2, 16 + ldrb r3, [r0, 0x4] + adds r0, r4, 0 + bl sub_806DEEC + adds r5, r0, 0 + cmp r5, 0 + beq _0806D164 + ldr r0, [r5, 0x8] + cmp r0, 0 + bne _0806D120 + ldr r0, _0806D11C @ =gUnknown_81C555B + b _0806D1E6 + .align 2, 0 +_0806D118: .4byte gUnknown_2036DFC +_0806D11C: .4byte gUnknown_81C555B +_0806D120: + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_806D898 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r5, 0x5] + cmp r0, 0x7 + bhi _0806D1D8 + lsls r0, 2 + ldr r1, _0806D13C @ =_0806D140 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806D13C: .4byte _0806D140 + .align 2, 0 +_0806D140: + .4byte _0806D1D8 + .4byte _0806D160 + .4byte _0806D168 + .4byte _0806D16E + .4byte _0806D174 + .4byte _0806D17A + .4byte _0806D17A + .4byte _0806D17A +_0806D160: + cmp r6, 0x2 + beq _0806D1D8 +_0806D164: + movs r0, 0 + b _0806D1E6 +_0806D168: + cmp r6, 0x1 + beq _0806D1D8 + b _0806D164 +_0806D16E: + cmp r6, 0x4 + beq _0806D1D8 + b _0806D164 +_0806D174: + cmp r6, 0x3 + beq _0806D1D8 + b _0806D164 +_0806D17A: + ldr r0, [r5, 0x8] + movs r1, 0x3 + bl sub_80CC44C + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _0806D164 + ldr r0, [r5, 0x8] + movs r1, 0 + bl sub_80CC44C + ldr r1, _0806D1C4 @ =gUnknown_20370C2 + strh r0, [r1] + ldr r0, [r5, 0x8] + movs r1, 0x1 + bl sub_80CC44C + ldr r4, _0806D1C8 @ =gUnknown_20370C0 + strh r0, [r4] + ldr r0, [r5, 0x8] + movs r1, 0x2 + bl sub_80CC44C + ldr r1, _0806D1CC @ =gUnknown_20370C4 + strh r0, [r1] + ldrh r0, [r4] + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D164 + ldr r0, _0806D1D0 @ =gUnknown_20370D4 + strh r6, [r0] + ldr r0, _0806D1D4 @ =gUnknown_81A6843 + b _0806D1E6 + .align 2, 0 +_0806D1C4: .4byte gUnknown_20370C2 +_0806D1C8: .4byte gUnknown_20370C0 +_0806D1CC: .4byte gUnknown_20370C4 +_0806D1D0: .4byte gUnknown_20370D4 +_0806D1D4: .4byte gUnknown_81A6843 +_0806D1D8: + cmp r2, 0xFF + beq _0806D1E0 + bl sub_8069A20 +_0806D1E0: + ldr r0, _0806D1EC @ =gUnknown_20370D4 + strh r6, [r0] + ldr r0, [r5, 0x8] +_0806D1E6: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806D1EC: .4byte gUnknown_20370D4 + thumb_func_end sub_806D0E4 + + thumb_func_start sub_806D1F0 +sub_806D1F0: @ 806D1F0 + push {r4,r5,lr} + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r0, _0806D210 @ =gUnknown_20370D4 + strh r5, [r0] + adds r0, r4, 0 + bl sub_8059EF4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D218 + ldr r0, _0806D214 @ =gUnknown_81A6955 + b _0806D53E + .align 2, 0 +_0806D210: .4byte gUnknown_20370D4 +_0806D214: .4byte gUnknown_81A6955 +_0806D218: + adds r0, r4, 0 + bl sub_805A134 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D230 + ldr r0, _0806D22C @ =gUnknown_81A6C32 + b _0806D53E + .align 2, 0 +_0806D22C: .4byte gUnknown_81A6C32 +_0806D230: + adds r0, r4, 0 + bl sub_805A24C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D248 + ldr r0, _0806D244 @ =gUnknown_81A7606 + b _0806D53E + .align 2, 0 +_0806D244: .4byte gUnknown_81A7606 +_0806D248: + adds r0, r4, 0 + bl sub_805A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D260 + ldr r0, _0806D25C @ =gUnknown_81A760F + b _0806D53E + .align 2, 0 +_0806D25C: .4byte gUnknown_81A760F +_0806D260: + adds r0, r4, 0 + bl sub_805A44C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D278 + ldr r0, _0806D274 @ =gUnknown_81A7618 + b _0806D53E + .align 2, 0 +_0806D274: .4byte gUnknown_81A7618 +_0806D278: + adds r0, r4, 0 + bl sub_805A558 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D290 + ldr r0, _0806D28C @ =gUnknown_81A7633 + b _0806D53E + .align 2, 0 +_0806D28C: .4byte gUnknown_81A7633 +_0806D290: + adds r0, r4, 0 + bl sub_805A474 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D2A8 + ldr r0, _0806D2A4 @ =gUnknown_81A763C + b _0806D53E + .align 2, 0 +_0806D2A4: .4byte gUnknown_81A763C +_0806D2A8: + adds r0, r4, 0 + bl sub_805A56C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D2C0 + ldr r0, _0806D2BC @ =gUnknown_81A7621 + b _0806D53E + .align 2, 0 +_0806D2BC: .4byte gUnknown_81A7621 +_0806D2C0: + adds r0, r4, 0 + bl sub_805A580 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D2D8 + ldr r0, _0806D2D4 @ =gUnknown_81A7645 + b _0806D53E + .align 2, 0 +_0806D2D4: .4byte gUnknown_81A7645 +_0806D2D8: + adds r0, r4, 0 + bl sub_805A4C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D2F0 + ldr r0, _0806D2EC @ =gUnknown_81A762A + b _0806D53E + .align 2, 0 +_0806D2EC: .4byte gUnknown_81A762A +_0806D2F0: + adds r0, r4, 0 + bl sub_805A594 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D308 + ldr r0, _0806D304 @ =gUnknown_81C549C + b _0806D53E + .align 2, 0 +_0806D304: .4byte gUnknown_81C549C +_0806D308: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8059ED8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D320 + ldr r0, _0806D31C @ =gUnknown_81A764E + b _0806D53E + .align 2, 0 +_0806D31C: .4byte gUnknown_81A764E +_0806D320: + adds r0, r4, 0 + bl sub_805A374 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D338 + ldr r0, _0806D334 @ =gUnknown_81A7657 + b _0806D53E + .align 2, 0 +_0806D334: .4byte gUnknown_81A7657 +_0806D338: + adds r0, r4, 0 + bl sub_805A388 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D350 + ldr r0, _0806D34C @ =gUnknown_81A7660 + b _0806D53E + .align 2, 0 +_0806D34C: .4byte gUnknown_81A7660 +_0806D350: + adds r0, r4, 0 + bl sub_805A39C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D368 + ldr r0, _0806D364 @ =gUnknown_81A7669 + b _0806D53E + .align 2, 0 +_0806D364: .4byte gUnknown_81A7669 +_0806D368: + adds r0, r4, 0 + bl sub_805A3B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D380 + ldr r0, _0806D37C @ =gUnknown_81A7672 + b _0806D53E + .align 2, 0 +_0806D37C: .4byte gUnknown_81A7672 +_0806D380: + adds r0, r4, 0 + bl sub_805A488 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D398 + ldr r0, _0806D394 @ =gUnknown_81A767B + b _0806D53E + .align 2, 0 +_0806D394: .4byte gUnknown_81A767B +_0806D398: + adds r0, r4, 0 + bl sub_805A49C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D3B0 + ldr r0, _0806D3AC @ =gUnknown_81A7684 + b _0806D53E + .align 2, 0 +_0806D3AC: .4byte gUnknown_81A7684 +_0806D3B0: + adds r0, r4, 0 + bl sub_805A4B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D3C8 + ldr r0, _0806D3C4 @ =gUnknown_81A768D + b _0806D53E + .align 2, 0 +_0806D3C4: .4byte gUnknown_81A768D +_0806D3C8: + adds r0, r4, 0 + bl sub_805A4D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D3E0 + ldr r0, _0806D3DC @ =gUnknown_81A7696 + b _0806D53E + .align 2, 0 +_0806D3DC: .4byte gUnknown_81A7696 +_0806D3E0: + adds r0, r4, 0 + bl sub_805A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D3F8 + ldr r0, _0806D3F4 @ =gUnknown_81A769F + b _0806D53E + .align 2, 0 +_0806D3F4: .4byte gUnknown_81A769F +_0806D3F8: + adds r0, r4, 0 + bl sub_805A500 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D410 + ldr r0, _0806D40C @ =gUnknown_81A76A8 + b _0806D53E + .align 2, 0 +_0806D40C: .4byte gUnknown_81A76A8 +_0806D410: + adds r0, r4, 0 + bl sub_805A514 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D428 + ldr r0, _0806D424 @ =gUnknown_81A76B1 + b _0806D53E + .align 2, 0 +_0806D424: .4byte gUnknown_81A76B1 +_0806D428: + adds r0, r4, 0 + bl sub_805A528 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D440 + ldr r0, _0806D43C @ =gUnknown_81A76BA + b _0806D53E + .align 2, 0 +_0806D43C: .4byte gUnknown_81A76BA +_0806D440: + adds r0, r4, 0 + bl sub_805A52C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D458 + ldr r0, _0806D454 @ =gUnknown_81A76C3 + b _0806D53E + .align 2, 0 +_0806D454: .4byte gUnknown_81A76C3 +_0806D458: + adds r0, r4, 0 + bl sub_805A530 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D470 + ldr r0, _0806D46C @ =gUnknown_81A76CC + b _0806D53E + .align 2, 0 +_0806D46C: .4byte gUnknown_81A76CC +_0806D470: + adds r0, r4, 0 + bl sub_805A544 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D488 + ldr r0, _0806D484 @ =gUnknown_81A76D5 + b _0806D53E + .align 2, 0 +_0806D484: .4byte gUnknown_81A76D5 +_0806D488: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805A3D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D4A0 + ldr r0, _0806D49C @ =gUnknown_81BBFD8 + b _0806D53E + .align 2, 0 +_0806D49C: .4byte gUnknown_81BBFD8 +_0806D4A0: + adds r0, r4, 0 + bl sub_805A410 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D4B8 + ldr r0, _0806D4B4 @ =gUnknown_81A7702 + b _0806D53E + .align 2, 0 +_0806D4B4: .4byte gUnknown_81A7702 +_0806D4B8: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805A3F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D4D0 + ldr r0, _0806D4CC @ =gUnknown_81BB8A7 + b _0806D53E + .align 2, 0 +_0806D4CC: .4byte gUnknown_81BB8A7 +_0806D4D0: + adds r0, r4, 0 + bl sub_805A424 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D4EC + bl sub_8069A20 + ldr r0, _0806D4E8 @ =gUnknown_81A76F0 + b _0806D53E + .align 2, 0 +_0806D4E8: .4byte gUnknown_81A76F0 +_0806D4EC: + adds r0, r4, 0 + bl sub_805A438 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D508 + bl sub_8069A20 + ldr r0, _0806D504 @ =gUnknown_81A76F9 + b _0806D53E + .align 2, 0 +_0806D504: .4byte gUnknown_81A76F9 +_0806D508: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805A290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D524 + bl sub_8069A20 + ldr r0, _0806D520 @ =gUnknown_81A76DE + b _0806D53E + .align 2, 0 +_0806D520: .4byte gUnknown_81A76DE +_0806D524: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805A274 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D538 + movs r0, 0 + b _0806D53E +_0806D538: + bl sub_8069A20 + ldr r0, _0806D544 @ =gUnknown_81A76E7 +_0806D53E: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806D544: .4byte gUnknown_81A76E7 + thumb_func_end sub_806D1F0 + + thumb_func_start sub_806D548 +sub_806D548: @ 806D548 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + adds r0, r4, 0 + bl sub_8059CC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D570 + bl sub_805C83C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D570 + ldr r0, _0806D56C @ =gUnknown_81A6B0D + b _0806D5E2 + .align 2, 0 +_0806D56C: .4byte gUnknown_81A6B0D +_0806D570: + ldr r0, _0806D59C @ =0x00000824 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D5A4 + bl sub_805C83C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D5A4 + bl sub_805C8B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D5A4 + ldr r0, _0806D5A0 @ =gUnknown_81A6AC8 + b _0806D5E2 + .align 2, 0 +_0806D59C: .4byte 0x00000824 +_0806D5A0: .4byte gUnknown_81A6AC8 +_0806D5A4: + adds r0, r4, 0 + bl sub_805A104 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D5E0 + ldr r0, _0806D5D0 @ =0x00000826 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D5D8 + bl sub_805C88C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D5D8 + ldr r0, _0806D5D4 @ =gUnknown_81BE2B7 + b _0806D5E2 + .align 2, 0 +_0806D5D0: .4byte 0x00000826 +_0806D5D4: .4byte gUnknown_81BE2B7 +_0806D5D8: + ldr r0, _0806D5DC @ =gUnknown_81BE2FF + b _0806D5E2 + .align 2, 0 +_0806D5DC: .4byte gUnknown_81BE2FF +_0806D5E0: + movs r0, 0 +_0806D5E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806D548 + + thumb_func_start sub_806D5E8 +sub_806D5E8: @ 806D5E8 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r6, r4, 0 + bl sub_806D660 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D650 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806DA10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D650 + adds r0, r4, 0 + bl sub_806D694 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D650 + adds r0, r4, 0 + bl sub_806D698 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D650 + ldr r0, _0806D654 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0806D658 + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_8059D70 + lsls r0, 24 + cmp r0, 0 + bne _0806D658 + bl sub_80830B8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D658 +_0806D650: + movs r0, 0x1 + b _0806D65A + .align 2, 0 +_0806D654: .4byte gUnknown_2037078 +_0806D658: + movs r0, 0 +_0806D65A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806D5E8 + + thumb_func_start sub_806D660 +sub_806D660: @ 806D660 + push {r4,lr} + ldr r4, _0806D688 @ =gUnknown_2036DFC + ldrh r1, [r0] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r0, 0x2] + subs r2, 0x7 + lsls r2, 16 + lsrs r2, 16 + ldrb r3, [r0, 0x4] + adds r0, r4, 0 + bl sub_806DDC0 + cmp r0, 0 + beq _0806D68C + bl sub_8069AE4 + movs r0, 0x1 + b _0806D68E + .align 2, 0 +_0806D688: .4byte gUnknown_2036DFC +_0806D68C: + movs r0, 0 +_0806D68E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806D660 + + thumb_func_start sub_806D694 +sub_806D694: @ 806D694 + movs r0, 0 + bx lr + thumb_func_end sub_806D694 + + thumb_func_start sub_806D698 +sub_806D698: @ 806D698 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_811B0D0 + cmp r0, 0x1 + beq _0806D72C + ldr r0, _0806D6E0 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _0806D72C + bl sub_806D74C + ldr r0, _0806D6E4 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0806D720 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8059D70 + lsls r0, 24 + cmp r0, 0 + bne _0806D720 + bl sub_810C4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D6EC + ldr r0, _0806D6E8 @ =gUnknown_81A8CED + bl sub_8069AE4 + b _0806D730 + .align 2, 0 +_0806D6E0: .4byte gUnknown_203ADFA +_0806D6E4: .4byte gUnknown_2037078 +_0806D6E8: .4byte gUnknown_81A8CED +_0806D6EC: + bl sub_806D79C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D704 + ldr r0, _0806D700 @ =gUnknown_81A8DFD + bl sub_8069AE4 + b _0806D730 + .align 2, 0 +_0806D700: .4byte gUnknown_81A8DFD +_0806D704: + bl sub_80463B8 + lsls r0, 24 + cmp r0, 0 + beq _0806D720 + movs r0, 0xD + bl sub_8054E90 + ldr r0, _0806D71C @ =gUnknown_81BF546 + bl sub_8069AE4 + b _0806D730 + .align 2, 0 +_0806D71C: .4byte gUnknown_81BF546 +_0806D720: + bl sub_80A0F0C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D730 +_0806D72C: + movs r0, 0 + b _0806D732 +_0806D730: + movs r0, 0x1 +_0806D732: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806D698 + + thumb_func_start sub_806D738 +sub_806D738: @ 806D738 + push {lr} + ldr r0, _0806D748 @ =0x00004021 + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_0806D748: .4byte 0x00004021 + thumb_func_end sub_806D738 + + thumb_func_start sub_806D74C +sub_806D74C: @ 806D74C + push {r4,r5,lr} + ldr r0, _0806D780 @ =0x00004021 + bl sub_806E454 + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] + ldrh r1, [r0] + movs r2, 0x7F + ands r1, r2 + strh r1, [r0] + cmp r1, 0 + bne _0806D77A + ldr r5, _0806D784 @ =gUnknown_2024284 + movs r4, 0x5 +_0806D76A: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_80436F8 + adds r5, 0x64 + subs r4, 0x1 + cmp r4, 0 + bge _0806D76A +_0806D77A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806D780: .4byte 0x00004021 +_0806D784: .4byte gUnknown_2024284 + thumb_func_end sub_806D74C + + thumb_func_start sub_806D788 +sub_806D788: @ 806D788 + push {lr} + ldr r0, _0806D798 @ =0x00004022 + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_0806D798: .4byte 0x00004022 + thumb_func_end sub_806D788 + + thumb_func_start sub_806D79C +sub_806D79C: @ 806D79C + push {r4,lr} + ldr r0, _0806D7D8 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x9 + beq _0806D7E0 + ldr r0, _0806D7DC @ =0x00004022 + bl sub_806E454 + adds r4, r0, 0 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + bne _0806D7E0 + bl sub_80A0618 + cmp r0, 0x1 + beq _0806D7E0 + cmp r0, 0x1 + ble _0806D7E0 + cmp r0, 0x2 + bne _0806D7E0 + movs r0, 0x1 + b _0806D7E2 + .align 2, 0 +_0806D7D8: .4byte gUnknown_2036DFC +_0806D7DC: .4byte 0x00004022 +_0806D7E0: + movs r0, 0 +_0806D7E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806D79C + + thumb_func_start sub_806D7E8 +sub_806D7E8: @ 806D7E8 + push {lr} + bl sub_80832D4 + pop {r0} + bx r0 + thumb_func_end sub_806D7E8 + + thumb_func_start sub_806D7F4 +sub_806D7F4: @ 806D7F4 + push {lr} + bl sub_80833B0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_806D7F4 + + thumb_func_start sub_806D804 +sub_806D804: @ 806D804 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 24 + lsrs r5, r2, 24 + adds r7, r5, 0 + ldr r0, _0806D840 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + bne _0806D890 + subs r0, r5, 0x3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806D890 + adds r0, r3, 0 + adds r1, r5, 0 + bl sub_806D898 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0806D848 + ldr r0, _0806D844 @ =gUnknown_81A76E7 + adds r1, r5, 0 + b _0806D888 + .align 2, 0 +_0806D840: .4byte gUnknown_30030F0 +_0806D844: .4byte gUnknown_81A76E7 +_0806D848: + cmp r4, 0x1 + bne _0806D858 + ldr r0, _0806D854 @ =gUnknown_81A76DE + adds r1, r5, 0 + b _0806D888 + .align 2, 0 +_0806D854: .4byte gUnknown_81A76DE +_0806D858: + cmp r4, 0x2 + bne _0806D868 + ldr r0, _0806D864 @ =gUnknown_81A76F0 + adds r1, r5, 0 + b _0806D888 + .align 2, 0 +_0806D864: .4byte gUnknown_81A76F0 +_0806D868: + cmp r4, 0x3 + bne _0806D878 + ldr r0, _0806D874 @ =gUnknown_81A76F9 + adds r1, r5, 0 + b _0806D888 + .align 2, 0 +_0806D874: .4byte gUnknown_81A76F9 +_0806D878: + adds r0, r6, 0 + bl sub_806D928 + cmp r0, 0 + beq _0806D890 + cmp r4, 0xF0 + bne _0806D890 + adds r1, r7, 0 +_0806D888: + bl sub_806D908 + movs r0, 0x1 + b _0806D892 +_0806D890: + movs r0, 0 +_0806D892: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806D804 + + thumb_func_start sub_806D898 +sub_806D898: @ 806D898 + push {r4,r5,lr} + lsls r1, 24 + lsrs r5, r1, 24 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805A274 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D8B6 + movs r0, 0 + b _0806D902 +_0806D8B6: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805A290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D8CA + movs r0, 0x1 + b _0806D902 +_0806D8CA: + adds r0, r4, 0 + bl sub_805A424 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D8DC + movs r0, 0x2 + b _0806D902 +_0806D8DC: + adds r0, r4, 0 + bl sub_805A438 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D8EE + movs r0, 0x3 + b _0806D902 +_0806D8EE: + adds r0, r4, 0 + bl sub_805A360 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806D900 + movs r0, 0xFF + b _0806D902 +_0806D900: + movs r0, 0xF0 +_0806D902: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806D898 + + thumb_func_start sub_806D908 +sub_806D908: @ 806D908 + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0806D924 @ =gUnknown_20370D4 + strh r1, [r2] + bl sub_8069AE4 + bl sub_80699E0 + bl sub_8069A20 + pop {r0} + bx r0 + .align 2, 0 +_0806D924: .4byte gUnknown_20370D4 + thumb_func_end sub_806D908 + + thumb_func_start sub_806D928 +sub_806D928: @ 806D928 + push {r4,lr} + ldr r4, _0806D94C @ =gUnknown_2036DFC + ldrh r1, [r0] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r0, 0x2] + subs r2, 0x7 + lsls r2, 16 + lsrs r2, 16 + ldrb r3, [r0, 0x4] + adds r0, r4, 0 + bl sub_806DEEC + cmp r0, 0 + bne _0806D950 + movs r0, 0 + b _0806D958 + .align 2, 0 +_0806D94C: .4byte gUnknown_2036DFC +_0806D950: + ldr r0, [r0, 0x8] + cmp r0, 0 + bne _0806D958 + ldr r0, _0806D960 @ =gUnknown_81C555B +_0806D958: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806D960: .4byte gUnknown_81C555B + thumb_func_end sub_806D928 + + thumb_func_start sub_806D964 +sub_806D964: @ 806D964 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + mov r10, r4 + lsls r2, 24 + lsrs r6, r2, 24 + mov r9, r6 + ldr r0, _0806D9B8 @ =gUnknown_2036DFC + mov r8, r0 + adds r1, r7, 0 + bl sub_806DC30 + lsls r0, 24 + asrs r5, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _0806DA00 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_806DBD8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806D9BC + bl sub_8055A08 + mov r0, r8 + adds r1, r5, 0 + adds r2, r7, 0 + bl sub_806DC54 + bl sub_807E438 + movs r0, 0x1 + b _0806DA02 + .align 2, 0 +_0806D9B8: .4byte gUnknown_2036DFC +_0806D9BC: + adds r0, r4, 0 + mov r1, r9 + bl sub_806DB84 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DA00 + movs r4, 0 + ldr r0, _0806D9FC @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x6 + ands r0, r1 + cmp r0, 0 + beq _0806D9E2 + movs r0, 0x1 + bl sub_805BDEC + movs r4, 0xC +_0806D9E2: + bl sub_8055A08 + mov r0, r8 + adds r1, r5, 0 + adds r2, r7, 0 + bl sub_806DC54 + mov r0, r10 + adds r1, r4, 0 + bl sub_807E4A0 + movs r0, 0x1 + b _0806DA02 + .align 2, 0 +_0806D9FC: .4byte gUnknown_2037078 +_0806DA00: + movs r0, 0 +_0806DA02: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806D964 + + thumb_func_start sub_806DA10 +sub_806DA10: @ 806DA10 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r7, _0806DA68 @ =gUnknown_2036DFC + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_806DC30 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _0806DAEC + adds r0, r5, 0 + bl sub_806DAF4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DAEC + bl sub_8055A08 + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806DC54 + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059BF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DA6C + adds r0, r4, 0 + bl sub_807E560 + movs r0, 0x1 + b _0806DAEE + .align 2, 0 +_0806DA68: .4byte gUnknown_2036DFC +_0806DA6C: + adds r0, r4, 0 + bl sub_805A158 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DA82 + bl sub_807E57C + movs r0, 0x1 + b _0806DAEE +_0806DA82: + adds r0, r4, 0 + bl sub_805A15C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DA98 + bl sub_807E58C + movs r0, 0x1 + b _0806DAEE +_0806DA98: + adds r0, r4, 0 + bl sub_805A170 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DAAE + bl sub_807E59C + movs r0, 0x1 + b _0806DAEE +_0806DAAE: + adds r0, r4, 0 + bl sub_805A184 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DAC4 + bl sub_807E524 + movs r0, 0x1 + b _0806DAEE +_0806DAC4: + adds r0, r4, 0 + bl sub_805A1C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DAE4 + bl sub_80559E4 + ldr r0, _0806DAE0 @ =gUnknown_81C1361 + bl sub_8069AE4 + movs r0, 0x1 + b _0806DAEE + .align 2, 0 +_0806DAE0: .4byte gUnknown_81C1361 +_0806DAE4: + bl sub_807E438 + movs r0, 0x1 + b _0806DAEE +_0806DAEC: + movs r0, 0 +_0806DAEE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806DA10 + + thumb_func_start sub_806DAF4 +sub_806DAF4: @ 806DAF4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059BC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_8059C78 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_8059BF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_8059C8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_805A158 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_805A15C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_805A170 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_805A1C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + adds r0, r4, 0 + bl sub_805A184 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806DB7C + movs r0, 0 + b _0806DB7E +_0806DB7C: + movs r0, 0x1 +_0806DB7E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806DAF4 + + thumb_func_start sub_806DB84 +sub_806DB84: @ 806DB84 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x3 + beq _0806DB98 + cmp r1, 0x4 + beq _0806DBB0 + b _0806DBD0 +_0806DB98: + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059C20 + lsls r0, 24 + cmp r0, 0 + bne _0806DBCC + adds r0, r4, 0 + bl sub_8059C48 + b _0806DBC6 +_0806DBB0: + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059C0C + lsls r0, 24 + cmp r0, 0 + bne _0806DBCC + adds r0, r4, 0 + bl sub_8059C34 +_0806DBC6: + lsls r0, 24 + cmp r0, 0 + beq _0806DBD0 +_0806DBCC: + movs r0, 0x1 + b _0806DBD2 +_0806DBD0: + movs r0, 0 +_0806DBD2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806DB84 + + thumb_func_start sub_806DBD8 +sub_806DBD8: @ 806DBD8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r1, 24 + adds r2, r1, 0 + cmp r1, 0x2 + beq _0806DBFC + cmp r1, 0x2 + bgt _0806DBF2 + cmp r1, 0x1 + beq _0806DC06 + b _0806DC28 +_0806DBF2: + cmp r2, 0x3 + beq _0806DC10 + cmp r2, 0x4 + beq _0806DC1A + b _0806DC28 +_0806DBFC: + lsls r0, 24 + lsrs r0, 24 + bl sub_8059D04 + b _0806DC22 +_0806DC06: + lsls r0, 24 + lsrs r0, 24 + bl sub_8059D18 + b _0806DC22 +_0806DC10: + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CF0 + b _0806DC22 +_0806DC1A: + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CDC +_0806DC22: + lsls r0, 24 + lsrs r0, 24 + b _0806DC2A +_0806DC28: + movs r0, 0 +_0806DC2A: + pop {r1} + bx r1 + thumb_func_end sub_806DBD8 + + thumb_func_start sub_806DC30 +sub_806DC30: @ 806DC30 + push {lr} + adds r3, r1, 0 + ldrh r1, [r3] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r3, 0x2] + subs r2, 0x7 + lsls r2, 16 + lsrs r2, 16 + ldrb r3, [r3, 0x4] + bl sub_806DD38 + lsls r0, 24 + asrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_806DC30 + + thumb_func_start sub_806DC54 +sub_806DC54: @ 806DC54 + push {r4-r7,lr} + adds r5, r2, 0 + ldr r0, _0806DC74 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + lsls r1, 24 + asrs r7, r1, 24 + lsls r6, r7, 3 + ldr r0, [r0, 0x8] + adds r4, r0, r6 + ldrb r0, [r4, 0x6] + cmp r0, 0x7F + bne _0806DC78 + ldrb r0, [r4, 0x5] + bl sub_8055454 + b _0806DCC4 + .align 2, 0 +_0806DC74: .4byte gUnknown_2036DFC +_0806DC78: + movs r0, 0x7 + ldrsb r0, [r4, r0] + movs r1, 0x6 + ldrsb r1, [r4, r1] + movs r2, 0x5 + ldrsb r2, [r4, r2] + bl sub_80553C8 + movs r1, 0 + ldrsh r0, [r5, r1] + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl sub_805550C + ldrb r0, [r4, 0x7] + ldrb r1, [r4, 0x6] + bl sub_8055238 + ldr r1, [r0, 0x4] + ldrb r0, [r4, 0x5] + ldr r1, [r1, 0x8] + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x6] + cmp r0, 0x7F + bne _0806DCC4 + adds r0, r6, r1 + ldrb r0, [r0, 0x5] + ldr r1, _0806DCCC @ =gUnknown_3005008 + ldr r2, [r1] + movs r1, 0x4 + ldrsb r1, [r2, r1] + ldrb r2, [r2, 0x5] + lsls r2, 24 + asrs r2, 24 + adds r3, r7, 0 + bl sub_80553E8 +_0806DCC4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806DCCC: .4byte gUnknown_3005008 + thumb_func_end sub_806DC54 + + thumb_func_start sub_806DCD0 +sub_806DCD0: @ 806DCD0 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 24 + lsrs r2, 24 + cmp r2, 0x2 + bne _0806DD30 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8059BC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DD30 + ldr r7, _0806DD2C @ =gUnknown_2036DFC + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_806DC30 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _0806DD30 + adds r0, r5, 0 + bl sub_806DAF4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DD30 + bl sub_8055A08 + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_806DC54 + bl sub_807E4DC + movs r0, 0x1 + b _0806DD32 + .align 2, 0 +_0806DD2C: .4byte gUnknown_2036DFC +_0806DD30: + movs r0, 0 +_0806DD32: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806DCD0 + + thumb_func_start sub_806DD38 +sub_806DD38: @ 806DD38 + push {r4-r6,lr} + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + lsls r3, 24 + lsrs r4, r3, 24 + ldr r0, [r0, 0x4] + ldr r1, [r0, 0x8] + ldrb r3, [r0, 0x1] + movs r2, 0 + cmp r2, r3 + bge _0806DD76 +_0806DD52: + ldrh r0, [r1] + cmp r0, r6 + bne _0806DD6E + ldrh r0, [r1, 0x2] + cmp r0, r5 + bne _0806DD6E + ldrb r0, [r1, 0x4] + cmp r0, r4 + beq _0806DD68 + cmp r0, 0 + bne _0806DD6E +_0806DD68: + lsls r0, r2, 24 + asrs r0, 24 + b _0806DD7A +_0806DD6E: + adds r2, 0x1 + adds r1, 0x8 + cmp r2, r3 + blt _0806DD52 +_0806DD76: + movs r0, 0x1 + negs r0, r0 +_0806DD7A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806DD38 + + thumb_func_start sub_806DD80 +sub_806DD80: @ 806DD80 + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _0806DDB6 + ldr r1, [r4, 0xC] + cmp r1, 0 + bne _0806DD96 + ldrb r0, [r4, 0x6] + bl sub_806E7DC + b _0806DDB6 +_0806DD96: + ldrh r0, [r4, 0x6] + cmp r0, 0 + beq _0806DDB0 + ldrh r0, [r4, 0x6] + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r4, 0x8] + cmp r0, r1 + bne _0806DDB6 + ldr r0, [r4, 0xC] + b _0806DDB8 +_0806DDB0: + adds r0, r1, 0 + bl sub_8069B48 +_0806DDB6: + movs r0, 0 +_0806DDB8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806DD80 + + thumb_func_start sub_806DDC0 +sub_806DDC0: @ 806DDC0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + ldr r0, [r0, 0x4] + ldr r1, [r0, 0xC] + ldrb r7, [r0, 0x2] + movs r6, 0 + cmp r6, r7 + bge _0806DE16 + adds r5, r1, 0 + adds r4, r5, 0 +_0806DDEC: + ldrh r0, [r4] + cmp r0, r10 + bne _0806DE0C + ldrh r0, [r4, 0x2] + cmp r0, r9 + bne _0806DE0C + ldrb r0, [r4, 0x4] + cmp r0, r8 + beq _0806DE02 + cmp r0, 0 + bne _0806DE0C +_0806DE02: + adds r0, r5, 0 + bl sub_806DD80 + cmp r0, 0 + bne _0806DE18 +_0806DE0C: + adds r4, 0x10 + adds r5, 0x10 + adds r6, 0x1 + cmp r6, r7 + blt _0806DDEC +_0806DE16: + movs r0, 0 +_0806DE18: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806DDC0 + + thumb_func_start sub_806DE28 +sub_806DE28: @ 806DE28 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + bl sub_8058F78 + cmp r0, 0x66 + bne _0806DE64 + movs r0, 0x25 + bl sub_80722CC + ldrb r0, [r5, 0x8] + ldr r4, _0806DE6C @ =gUnknown_3005008 + ldr r2, [r4] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805E4C8 + ldrb r0, [r5, 0x8] + ldr r2, [r4] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805FCD8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6A8 +_0806DE64: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806DE6C: .4byte gUnknown_3005008 + thumb_func_end sub_806DE28 + + thumb_func_start sub_806DE70 +sub_806DE70: @ 806DE70 + push {r4-r7,lr} + lsls r0, 16 + lsls r1, 16 + ldr r2, _0806DEC0 @ =gUnknown_2036DFC + ldr r2, [r2, 0x4] + ldr r4, [r2, 0xC] + ldrb r5, [r2, 0x2] + lsrs r7, r0, 16 + asrs r0, 16 + lsrs r6, r1, 16 + asrs r1, 16 + bl sub_8058F78 + cmp r0, 0x20 + bne _0806DEB8 + cmp r5, 0 + beq _0806DEB8 +_0806DE92: + ldrh r0, [r4] + adds r0, 0x7 + cmp r0, r7 + bne _0806DEB0 + ldrh r0, [r4, 0x2] + adds r0, 0x7 + cmp r0, r6 + bne _0806DEB0 + bl sub_8112364 + ldr r0, [r4, 0xC] + bl sub_8069AE4 + bl sub_8069940 +_0806DEB0: + adds r4, 0x10 + subs r5, 0x1 + cmp r5, 0 + bne _0806DE92 +_0806DEB8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806DEC0: .4byte gUnknown_2036DFC + thumb_func_end sub_806DE70 + + thumb_func_start sub_806DEC4 +sub_806DEC4: @ 806DEC4 + push {r4,lr} + ldr r4, _0806DEE8 @ =gUnknown_2036DFC + ldrh r1, [r0] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r0, 0x2] + subs r2, 0x7 + lsls r2, 16 + lsrs r2, 16 + ldrb r3, [r0, 0x4] + adds r0, r4, 0 + bl sub_806DDC0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806DEE8: .4byte gUnknown_2036DFC + thumb_func_end sub_806DEC4 + + thumb_func_start sub_806DEEC +sub_806DEEC: @ 806DEEC + push {r4-r7,lr} + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 24 + lsrs r5, r3, 24 + ldr r0, [r0, 0x4] + ldr r4, [r0, 0x10] + ldrb r3, [r0, 0x3] + movs r2, 0 + cmp r2, r3 + bcs _0806DF32 +_0806DF06: + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, r7 + bne _0806DF28 + ldrh r0, [r1, 0x2] + cmp r0, r6 + bne _0806DF28 + ldrb r0, [r1, 0x4] + cmp r0, r5 + beq _0806DF24 + cmp r0, 0 + bne _0806DF28 +_0806DF24: + adds r0, r1, 0 + b _0806DF34 +_0806DF28: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r3 + bcc _0806DF06 +_0806DF32: + movs r0, 0 +_0806DF34: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806DEEC + + thumb_func_start sub_806DF3C +sub_806DF3C: @ 806DF3C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r0, _0806DF70 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x5 + bne _0806DF74 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8059FCC + lsls r0, 24 + cmp r0, 0 + bne _0806DF74 + ldrh r0, [r4] + subs r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4, 0x2] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055824 + b _0806DF98 + .align 2, 0 +_0806DF70: .4byte gUnknown_2036DFC +_0806DF74: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8059FB0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806DFB0 + ldrh r0, [r4] + subs r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4, 0x2] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055844 +_0806DF98: + lsls r0, 24 + cmp r0, 0 + beq _0806DFB0 + bl sub_8055A08 + bl sub_807E470 + movs r0, 0xE2 + bl sub_80722CC + movs r0, 0x1 + b _0806DFB2 +_0806DFB0: + movs r0, 0 +_0806DFB2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806DF3C + + thumb_func_start sub_806DFB8 +sub_806DFB8: @ 806DFB8 + push {r4,r5,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0806E010 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x5 + bne _0806E014 + adds r0, r5, 0 + bl sub_8059FCC + lsls r0, 24 + cmp r0, 0 + bne _0806E014 + mov r0, sp + ldrh r0, [r0] + subs r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055824 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E044 + movs r0, 0x1 + b _0806E046 + .align 2, 0 +_0806E010: .4byte gUnknown_2036DFC +_0806E014: + adds r0, r5, 0 + bl sub_8059FB0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E044 + mov r0, sp + ldrh r0, [r0] + subs r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4] + subs r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055844 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E044 + movs r0, 0x2 + b _0806E046 +_0806E044: + movs r0, 0 +_0806E046: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806DFB8 + + thumb_func_start sub_806E050 +sub_806E050: @ 806E050 + push {r4,r5,lr} + sub sp, 0x8 + bl sub_805C6E4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r5, sp + mov r0, sp + bl sub_806CE38 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl sub_8058F78 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, sp + adds r2, r4, 0 + bl sub_806CFF4 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806E050 + + thumb_func_start sub_806E08C +sub_806E08C: @ 806E08C + push {r4,lr} + sub sp, 0x8 + bl sub_805C6E4 + mov r4, sp + mov r0, sp + bl sub_806CE20 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl sub_8058F78 + ldr r4, _0806E0CC @ =gUnknown_2036DFC + adds r0, r4, 0 + mov r1, sp + bl sub_806DC30 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + adds r0, r4, 0 + mov r2, sp + bl sub_806DC54 + movs r0, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806E0CC: .4byte gUnknown_2036DFC + thumb_func_end sub_806E08C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_door.s b/asm/field_door.s new file mode 100644 index 000000000..425cb0086 --- /dev/null +++ b/asm/field_door.s @@ -0,0 +1,667 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_805AF14 +sub_805AF14: @ 805AF14 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldrh r1, [r5, 0x2] + ldr r0, _0805AF34 @ =0x0000ffff + cmp r1, r0 + bne _0805AF38 + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_805AF54 + b _0805AF4E + .align 2, 0 +_0805AF34: .4byte 0x0000ffff +_0805AF38: + ldrh r1, [r5, 0x2] + ldr r0, [r4, 0x4] + adds r0, r1 + bl sub_805AF80 + ldr r3, [r4, 0x8] + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_805AF94 +_0805AF4E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805AF14 + + thumb_func_start sub_805AF54 +sub_805AF54: @ 805AF54 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldrb r0, [r0, 0x3] + cmp r0, 0 + bne _0805AF6A + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A8E8 + b _0805AF7A +_0805AF6A: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A8E8 + subs r1, r4, 0x1 + adds r0, r5, 0 + bl sub_805A8E8 +_0805AF7A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_805AF54 + + thumb_func_start sub_805AF80 +sub_805AF80: @ 805AF80 + push {lr} + ldr r1, _0805AF90 @ =0x06007f00 + movs r2, 0x40 + bl CpuFastSet + pop {r0} + bx r0 + .align 2, 0 +_0805AF90: .4byte 0x06007f00 + thumb_func_end sub_805AF80 + + thumb_func_start sub_805AF94 +sub_805AF94: @ 805AF94 + push {r4-r6,lr} + sub sp, 0x10 + adds r5, r1, 0 + adds r6, r2, 0 + adds r4, r3, 0 + ldrb r0, [r0, 0x3] + cmp r0, 0 + bne _0805AFB2 + movs r1, 0xFE + lsls r1, 2 + mov r0, sp + adds r2, r4, 0 + bl sub_805AFE8 + b _0805AFD4 +_0805AFB2: + movs r1, 0xFE + lsls r1, 2 + mov r0, sp + adds r2, r4, 0 + bl sub_805AFE8 + subs r1, r6, 0x1 + adds r0, r5, 0 + mov r2, sp + bl sub_805A91C + movs r1, 0xFF + lsls r1, 2 + adds r2, r4, 0x4 + mov r0, sp + bl sub_805AFE8 +_0805AFD4: + adds r0, r5, 0 + adds r1, r6, 0 + mov r2, sp + bl sub_805A91C + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805AF94 + + thumb_func_start sub_805AFE8 +sub_805AFE8: @ 805AFE8 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + movs r4, 0 + adds r1, r6, 0 +_0805AFF4: + ldrb r0, [r2] + lsls r0, 28 + lsrs r3, r0, 16 + adds r2, 0x1 + adds r0, r5, r4 + orrs r3, r0 + strh r3, [r1] + adds r1, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0805AFF4 + cmp r4, 0x7 + bgt _0805B022 + lsls r0, r4, 1 + adds r1, r0, r6 +_0805B012: + ldrb r0, [r2] + lsls r3, r0, 12 + adds r2, 0x1 + strh r3, [r1] + adds r1, 0x2 + adds r4, 0x1 + cmp r4, 0x7 + ble _0805B012 +_0805B022: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805AFE8 + + thumb_func_start sub_805B028 +sub_805B028: @ 805B028 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, r4, 2 + adds r2, r4 + lsls r2, 3 + ldr r0, _0805B05C @ =gUnknown_3005098 + adds r2, r0 + ldrh r1, [r2] + lsls r1, 16 + ldrh r0, [r2, 0x2] + orrs r1, r0 + ldrh r0, [r2, 0x4] + lsls r0, 16 + ldrh r3, [r2, 0x6] + orrs r0, r3 + bl sub_805B060 + cmp r0, 0 + bne _0805B056 + adds r0, r4, 0 + bl sub_8077508 +_0805B056: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805B05C: .4byte gUnknown_3005098 + thumb_func_end sub_805B028 + + thumb_func_start sub_805B060 +sub_805B060: @ 805B060 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0805B086 + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r1, 2 + adds r1, r5, r1 + movs r0, 0xC + ldrsh r2, [r4, r0] + movs r0, 0xE + ldrsh r3, [r4, r0] + adds r0, r6, 0 + bl sub_805AF14 +_0805B086: + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r1, r0 + bne _0805B0B4 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _0805B0BA + movs r0, 0 + b _0805B0BC +_0805B0B4: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] +_0805B0BA: + movs r0, 0x1 +_0805B0BC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805B060 + + thumb_func_start sub_805B0C4 +sub_805B0C4: @ 805B0C4 + push {lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + b _0805B0DA +_0805B0CE: + ldrh r0, [r2] + cmp r0, r1 + bne _0805B0D8 + adds r0, r2, 0 + b _0805B0E2 +_0805B0D8: + adds r2, 0xC +_0805B0DA: + ldr r0, [r2, 0x4] + cmp r0, 0 + bne _0805B0CE + movs r0, 0 +_0805B0E2: + pop {r1} + bx r1 + thumb_func_end sub_805B0C4 + + thumb_func_start sub_805B0E8 +sub_805B0E8: @ 805B0E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + mov r8, r3 + ldr r4, _0805B134 @ =sub_805B028 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0805B13C + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _0805B138 @ =gUnknown_3005098 + adds r1, r2 + strh r7, [r1, 0xC] + mov r2, r8 + strh r2, [r1, 0xE] + strh r5, [r1, 0x2] + lsrs r2, r5, 16 + strh r2, [r1] + strh r6, [r1, 0x6] + lsrs r2, r6, 16 + strh r2, [r1, 0x4] + lsls r0, 24 + asrs r0, 24 + b _0805B140 + .align 2, 0 +_0805B134: .4byte sub_805B028 +_0805B138: .4byte gUnknown_3005098 +_0805B13C: + movs r0, 0x1 + negs r0, r0 +_0805B140: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805B0E8 + + thumb_func_start sub_805B14C +sub_805B14C: @ 805B14C + push {lr} + bl sub_805AF54 + pop {r0} + bx r0 + thumb_func_end sub_805B14C + + thumb_func_start sub_805B158 +sub_805B158: @ 805B158 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058E48 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B0C4 + adds r4, r0, 0 + cmp r0, 0 + beq _0805B196 + ldrb r0, [r0, 0x3] + ldr r1, _0805B19C @ =gUnknown_835B49C + cmp r0, 0 + bne _0805B184 + ldr r1, _0805B1A0 @ =gUnknown_835B488 +_0805B184: + adds r0, r1, 0 + bl sub_805B1A4 + adds r1, r0, 0 + adds r0, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_805AF14 +_0805B196: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B19C: .4byte gUnknown_835B49C +_0805B1A0: .4byte gUnknown_835B488 + thumb_func_end sub_805B158 + + thumb_func_start sub_805B1A4 +sub_805B1A4: @ 805B1A4 + push {lr} + adds r1, r0, 0 + b _0805B1AC +_0805B1AA: + adds r1, 0x4 +_0805B1AC: + ldrb r0, [r1] + cmp r0, 0 + bne _0805B1AA + subs r0, r1, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_805B1A4 + + thumb_func_start sub_805B1B8 +sub_805B1B8: @ 805B1B8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058E48 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B0C4 + adds r2, r0, 0 + adds r4, r2, 0 + cmp r2, 0 + bne _0805B1E2 + movs r0, 0x1 + negs r0, r0 + b _0805B204 +_0805B1E2: + ldrb r0, [r2, 0x3] + cmp r0, 0 + beq _0805B1F4 + ldr r1, _0805B1F0 @ =gUnknown_835B49C + adds r0, r2, 0 + b _0805B1F8 + .align 2, 0 +_0805B1F0: .4byte gUnknown_835B49C +_0805B1F4: + ldr r1, _0805B20C @ =gUnknown_835B488 + adds r0, r4, 0 +_0805B1F8: + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_805B0E8 + lsls r0, 24 + asrs r0, 24 +_0805B204: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805B20C: .4byte gUnknown_835B488 + thumb_func_end sub_805B1B8 + + thumb_func_start sub_805B210 +sub_805B210: @ 805B210 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058E48 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B0C4 + adds r2, r0, 0 + adds r4, r2, 0 + cmp r2, 0 + bne _0805B23A + movs r0, 0x1 + negs r0, r0 + b _0805B25C +_0805B23A: + ldrb r0, [r2, 0x3] + cmp r0, 0 + beq _0805B24C + ldr r1, _0805B248 @ =gUnknown_835B4C4 + adds r0, r2, 0 + b _0805B250 + .align 2, 0 +_0805B248: .4byte gUnknown_835B4C4 +_0805B24C: + ldr r1, _0805B264 @ =gUnknown_835B4B0 + adds r0, r4, 0 +_0805B250: + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_805B0E8 + lsls r0, 24 + asrs r0, 24 +_0805B25C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805B264: .4byte gUnknown_835B4B0 + thumb_func_end sub_805B210 + + thumb_func_start sub_805B268 +sub_805B268: @ 805B268 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059BDC + lsls r0, 24 + cmp r0, 0 + beq _0805B292 + ldr r0, _0805B298 @ =gUnknown_835B5D8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805B158 +_0805B292: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805B298: .4byte gUnknown_835B5D8 + thumb_func_end sub_805B268 + + thumb_func_start sub_805B29C +sub_805B29C: @ 805B29C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059BDC + lsls r0, 24 + cmp r0, 0 + beq _0805B2C6 + ldr r0, _0805B2CC @ =gUnknown_835B5D8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805B14C +_0805B2C6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805B2CC: .4byte gUnknown_835B5D8 + thumb_func_end sub_805B29C + + thumb_func_start sub_805B2D0 +sub_805B2D0: @ 805B2D0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059BDC + lsls r0, 24 + cmp r0, 0 + beq _0805B304 + ldr r0, _0805B300 @ =gUnknown_835B5D8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805B210 + lsls r0, 24 + asrs r0, 24 + b _0805B308 + .align 2, 0 +_0805B300: .4byte gUnknown_835B5D8 +_0805B304: + movs r0, 0x1 + negs r0, r0 +_0805B308: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805B2D0 + + thumb_func_start sub_805B310 +sub_805B310: @ 805B310 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059BDC + lsls r0, 24 + cmp r0, 0 + beq _0805B344 + ldr r0, _0805B340 @ =gUnknown_835B5D8 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805B1B8 + lsls r0, 24 + asrs r0, 24 + b _0805B348 + .align 2, 0 +_0805B340: .4byte gUnknown_835B5D8 +_0805B344: + movs r0, 0x1 + negs r0, r0 +_0805B348: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805B310 + + thumb_func_start sub_805B350 +sub_805B350: @ 805B350 + push {lr} + ldr r0, _0805B360 @ =sub_805B028 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B360: .4byte sub_805B028 + thumb_func_end sub_805B350 + + thumb_func_start sub_805B364 +sub_805B364: @ 805B364 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _0805B37C @ =gUnknown_835B5D8 + adds r1, r3, 0 + bl sub_805B388 + lsls r0, 24 + cmp r0, 0 + beq _0805B380 + movs r0, 0x12 + b _0805B382 + .align 2, 0 +_0805B37C: .4byte gUnknown_835B5D8 +_0805B380: + movs r0, 0xF1 +_0805B382: + pop {r1} + bx r1 + thumb_func_end sub_805B364 + + thumb_func_start sub_805B388 +sub_805B388: @ 805B388 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_8058E48 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B0C4 + cmp r0, 0 + beq _0805B3AC + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + b _0805B3B0 +_0805B3AC: + movs r0, 0x1 + negs r0, r0 +_0805B3B0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805B388 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_effect.s b/asm/field_effect.s new file mode 100644 index 000000000..fe2e67112 --- /dev/null +++ b/asm/field_effect.s @@ -0,0 +1,9666 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8083444 +sub_8083444: @ 8083444 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80837D0 + ldr r0, _08083484 @ =gUnknown_81D96AC + lsls r4, 2 + adds r4, r0 + ldr r0, [r4] + str r0, [sp] + add r4, sp, 0x4 + ldr r5, _08083488 @ =gUnknown_83CBE30 +_08083462: + ldr r0, [sp] + ldrb r0, [r0] + lsls r0, 2 + adds r0, r5 + ldr r2, [r0] + mov r0, sp + adds r1, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _08083462 + ldr r0, [sp, 0x4] + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08083484: .4byte gUnknown_81D96AC +_08083488: .4byte gUnknown_83CBE30 + thumb_func_end sub_8083444 + + thumb_func_start sub_808348C +sub_808348C: @ 808348C + push {lr} + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + bl sub_8083568 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_808348C + + thumb_func_start sub_80834A0 +sub_80834A0: @ 80834A0 + push {lr} + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + bl sub_8083614 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_80834A0 + + thumb_func_start sub_80834B4 +sub_80834B4: @ 80834B4 + push {lr} + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + bl sub_808365C + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_80834B4 + + thumb_func_start sub_80834C8 +sub_80834C8: @ 80834C8 + push {lr} + ldr r2, [r0] + adds r2, 0x1 + str r2, [r0] + bl sub_8083698 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_80834C8 + + thumb_func_start sub_80834DC +sub_80834DC: @ 80834DC + movs r0, 0 + bx lr + thumb_func_end sub_80834DC + + thumb_func_start sub_80834E0 +sub_80834E0: @ 80834E0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + adds r0, r4, 0 + bl sub_8083568 + adds r0, r4, 0 + bl sub_8083614 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8083698 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80834E0 + + thumb_func_start sub_8083508 +sub_8083508: @ 8083508 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + adds r0, r4, 0 + bl sub_8083568 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8083698 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8083508 + + thumb_func_start sub_808352C +sub_808352C: @ 808352C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + adds r0, r4, 0 + bl sub_8083614 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8083698 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808352C + + thumb_func_start sub_8083550 +sub_8083550: @ 8083550 + ldr r2, [r0] + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + ldrb r1, [r2, 0x2] + lsls r1, 16 + adds r0, r1 + ldrb r1, [r2, 0x3] + lsls r1, 24 + adds r0, r1 + bx lr + thumb_func_end sub_8083550 + + thumb_func_start sub_8083568 +sub_8083568: @ 8083568 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8083550 + adds r5, r0, 0 + ldrh r0, [r5, 0x6] + bl sub_8008804 + lsls r0, 16 + ldr r1, _08083594 @ =0xffff0000 + cmp r0, r1 + bne _08083586 + adds r0, r5, 0 + bl sub_80086DC +_08083586: + ldr r0, [r4] + adds r0, 0x4 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08083594: .4byte 0xffff0000 + thumb_func_end sub_8083568 + + thumb_func_start sub_8083598 +sub_8083598: @ 8083598 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080835B4 @ =gUnknown_2036E28 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080835B8 + cmp r0, 0x1 + ble _08083606 + cmp r0, 0x2 + beq _080835CC + cmp r0, 0x3 + beq _080835E0 + b _08083606 + .align 2, 0 +_080835B4: .4byte gUnknown_2036E28 +_080835B8: + adds r4, 0x10 + lsls r0, r4, 5 + ldr r1, _080835C8 @ =gUnknown_20371F8 + adds r0, r1 + movs r1, 0x10 + bl sub_8071544 + b _080835F6 + .align 2, 0 +_080835C8: .4byte gUnknown_20371F8 +_080835CC: + adds r4, 0x10 + lsls r0, r4, 5 + ldr r1, _080835DC @ =gUnknown_20371F8 + adds r0, r1 + movs r1, 0x10 + bl sub_80715F4 + b _080835F6 + .align 2, 0 +_080835DC: .4byte gUnknown_20371F8 +_080835E0: + adds r4, 0x10 + lsls r0, r4, 4 + movs r1, 0x10 + bl sub_8111F38 + lsls r0, r4, 5 + ldr r1, _0808360C @ =gUnknown_20371F8 + adds r0, r1 + movs r1, 0x10 + bl sub_8071544 +_080835F6: + lsls r1, r4, 5 + ldr r0, _0808360C @ =gUnknown_20371F8 + adds r0, r1, r0 + ldr r2, _08083610 @ =gUnknown_20375F8 + adds r1, r2 + movs r2, 0x8 + bl CpuFastSet +_08083606: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808360C: .4byte gUnknown_20371F8 +_08083610: .4byte gUnknown_20375F8 + thumb_func_end sub_8083598 + + thumb_func_start sub_8083614 +sub_8083614: @ 8083614 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8083550 + adds r5, r0, 0 + ldrh r0, [r5, 0x4] + bl sub_80089E8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + bl sub_8008928 + cmp r4, 0xFF + bne _08083642 + ldrh r0, [r5, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8083598 +_08083642: + ldrh r0, [r5, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_807AA8C + ldr r0, [r6] + adds r0, 0x4 + str r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8083614 + + thumb_func_start sub_808365C +sub_808365C: @ 808365C + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8083550 + adds r5, r0, 0 + ldrh r0, [r5, 0x4] + bl sub_80089E8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + bl sub_8008928 + cmp r4, 0xFF + beq _0808368A + ldrh r0, [r5, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8083598 +_0808368A: + ldr r0, [r6] + adds r0, 0x4 + str r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_808365C + + thumb_func_start sub_8083698 +sub_8083698: @ 8083698 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8083550 + bl _call_via_r0 + str r0, [r5] + ldr r0, [r4] + adds r0, 0x4 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8083698 + + thumb_func_start sub_80836B4 +sub_80836B4: @ 80836B4 + push {r4,r5,lr} + adds r1, r0, 0 + adds r1, 0x40 + ldrh r5, [r1] + ldrb r4, [r0, 0x5] + lsrs r4, 4 + bl sub_8007280 + adds r0, r5, 0 + bl sub_80836F0 + adds r0, r4, 0 + bl sub_8083754 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80836B4 + + thumb_func_start sub_80836D8 +sub_80836D8: @ 80836D8 + push {r4,lr} + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_80836B4 + adds r0, r4, 0 + bl sub_80837FC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80836D8 + + thumb_func_start sub_80836F0 +sub_80836F0: @ 80836F0 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_800885C + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _0808374C @ =0x0000ffff + cmp r3, r0 + beq _08083744 + movs r2, 0 + ldr r5, _08083750 @ =gUnknown_202063C +_0808370A: + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r5 + adds r0, r1, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _08083734 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + bge _08083734 + adds r0, r1, 0 + adds r0, 0x40 + ldrh r0, [r0] + cmp r4, r0 + beq _08083744 +_08083734: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _0808370A + adds r0, r3, 0 + bl sub_800874C +_08083744: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808374C: .4byte 0x0000ffff +_08083750: .4byte gUnknown_202063C + thumb_func_end sub_80836F0 + + thumb_func_start sub_8083754 +sub_8083754: @ 8083754 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8008A20 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080837A4 @ =0x0000ffff + cmp r5, r0 + beq _0808379C + movs r2, 0 + ldr r6, _080837A8 @ =gUnknown_202063C + adds r3, r4, 0 +_08083770: + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r6 + adds r0, r1, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0808378C + ldrb r0, [r1, 0x5] + lsrs r0, 4 + cmp r0, r3 + beq _0808379C +_0808378C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _08083770 + adds r0, r5, 0 + bl sub_8008A30 +_0808379C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080837A4: .4byte 0x0000ffff +_080837A8: .4byte gUnknown_202063C + thumb_func_end sub_8083754 + + thumb_func_start sub_80837AC +sub_80837AC: @ 80837AC + push {r4,lr} + movs r2, 0 + ldr r4, _080837CC @ =gUnknown_3000FC8 + movs r3, 0xFF +_080837B4: + adds r0, r2, r4 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _080837B4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080837CC: .4byte gUnknown_3000FC8 + thumb_func_end sub_80837AC + + thumb_func_start sub_80837D0 +sub_80837D0: @ 80837D0 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r4, _080837E8 @ =gUnknown_3000FC8 +_080837DA: + adds r1, r2, r4 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080837EC + strb r3, [r1] + b _080837F6 + .align 2, 0 +_080837E8: .4byte gUnknown_3000FC8 +_080837EC: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _080837DA +_080837F6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80837D0 + + thumb_func_start sub_80837FC +sub_80837FC: @ 80837FC + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r4, _08083818 @ =gUnknown_3000FC8 + movs r5, 0xFF +_08083808: + adds r1, r2, r4 + ldrb r0, [r1] + cmp r0, r3 + bne _0808381C + orrs r0, r5 + strb r0, [r1] + b _08083826 + .align 2, 0 +_08083818: .4byte gUnknown_3000FC8 +_0808381C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _08083808 +_08083826: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80837FC + + thumb_func_start sub_808382C +sub_808382C: @ 808382C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0 + ldr r3, _08083844 @ =gUnknown_3000FC8 +_08083836: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08083848 + movs r0, 0x1 + b _08083854 + .align 2, 0 +_08083844: .4byte gUnknown_3000FC8 +_08083848: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _08083836 + movs r0, 0 +_08083854: + pop {r1} + bx r1 + thumb_func_end sub_808382C + + thumb_func_start sub_8083858 +sub_8083858: @ 8083858 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + mov r9, r3 + ldr r7, [sp, 0x34] + lsls r4, 24 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsrs r4, 21 + ldr r3, _080838E0 @ =gUnknown_8239A1C + mov r8, r3 + add r8, r4 + mov r0, r8 + adds r1, r7, 0 + bl sub_800EC5C + ldr r0, _080838E4 @ =gUnknown_823957C + adds r4, r0 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_800EC00 + mov r1, sp + ldrh r0, [r4, 0x6] + movs r2, 0 + strh r0, [r1] + mov r3, r8 + ldrh r0, [r3, 0x4] + strh r0, [r1, 0x2] + ldr r0, _080838E8 @ =gUnknown_83CBE50 + str r0, [sp, 0x4] + ldr r0, _080838EC @ =gUnknown_8231CF0 + str r0, [sp, 0x8] + str r2, [sp, 0xC] + ldr r0, _080838F0 @ =gUnknown_8231CFC + str r0, [sp, 0x10] + ldr r0, _080838F4 @ =nullsub_8 + str r0, [sp, 0x14] + lsls r5, 16 + asrs r5, 16 + lsls r6, 16 + asrs r6, 16 + mov r0, sp + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, r9 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080838E0: .4byte gUnknown_8239A1C +_080838E4: .4byte gUnknown_823957C +_080838E8: .4byte gUnknown_83CBE50 +_080838EC: .4byte gUnknown_8231CF0 +_080838F0: .4byte gUnknown_8231CFC +_080838F4: .4byte nullsub_8 + thumb_func_end sub_8083858 + + thumb_func_start sub_80838F8 +sub_80838F8: @ 80838F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r1, r2, 0 + lsls r4, 24 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _08083928 @ =gUnknown_823957C + lsrs r4, 21 + adds r0, r4, r0 + ldr r0, [r0] + bl sub_800EBC0 + ldr r0, _0808392C @ =gUnknown_8239A1C + adds r4, r0 + ldr r0, [r4] + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703A8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08083928: .4byte gUnknown_823957C +_0808392C: .4byte gUnknown_8239A1C + thumb_func_end sub_80838F8 + + thumb_func_start sub_8083930 +sub_8083930: @ 8083930 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _08083968 @ =gUnknown_83CBE70 + bl sub_8008928 + ldr r0, _0808396C @ =gUnknown_83CBE84 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08083968: .4byte gUnknown_83CBE70 +_0808396C: .4byte gUnknown_83CBE84 + thumb_func_end sub_8083930 + + thumb_func_start sub_8083970 +sub_8083970: @ 8083970 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 16 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 8 + lsls r1, 16 + asrs r1, 16 + str r1, [sp] + lsls r2, 16 + asrs r2, 16 + str r2, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + ldr r1, _080839C0 @ =gUnknown_823730C + lsls r4, r0, 3 + adds r4, r1 + ldrh r1, [r4, 0x4] + str r1, [sp, 0xC] + movs r1, 0 + adds r2, r3, 0 + movs r3, 0x1 + bl sub_810C1CC + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r4, 0x4] + bl sub_80089E8 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl sub_807B084 + ldr r0, _080839C4 @ =0x0000ffff + cmp r5, r0 + beq _080839C8 + lsls r0, r5, 24 + lsrs r0, 24 + b _080839CA + .align 2, 0 +_080839C0: .4byte gUnknown_823730C +_080839C4: .4byte 0x0000ffff +_080839C8: + movs r0, 0x40 +_080839CA: + add sp, 0x10 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8083970 + + thumb_func_start sub_80839D4 +sub_80839D4: @ 80839D4 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x10 + adds r6, r0, 0 + mov r9, r1 + mov r10, r2 + adds r4, r3, 0 + ldr r5, [sp, 0x2C] + lsls r6, 16 + lsrs r6, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + bl sub_8044180 + mov r8, r0 + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + mov r1, r8 + ldrh r0, [r1, 0x4] + str r0, [sp, 0xC] + adds r0, r6, 0 + mov r1, r9 + mov r2, r10 + movs r3, 0x1 + bl sub_810C1CC + lsls r0, 16 + lsrs r4, r0, 16 + mov r1, r8 + ldrh r0, [r1, 0x4] + bl sub_80089E8 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl sub_807B084 + ldr r0, _08083A44 @ =0x0000ffff + cmp r4, r0 + beq _08083A48 + lsls r0, r4, 24 + lsrs r0, 24 + b _08083A4A + .align 2, 0 +_08083A44: .4byte 0x0000ffff +_08083A48: + movs r0, 0x40 +_08083A4A: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80839D4 + + thumb_func_start sub_8083A5C +sub_8083A5C: @ 8083A5C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_807B0B4 + ldrb r0, [r4, 0x1] + lsls r0, 30 + cmp r0, 0 + beq _08083A7A + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC +_08083A7A: + adds r0, r5, 0 + bl sub_810C214 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8083A5C + + thumb_func_start sub_8083A88 +sub_8083A88: @ 8083A88 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 16 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r4, _08083B0C @ =gUnknown_20371F8 + lsrs r0, 15 + adds r4, r0, r4 + ldrh r4, [r4] + movs r5, 0x1F + mov r9, r5 + mov r8, r4 + mov r6, r8 + ands r6, r5 + mov r8, r6 + movs r6, 0xF8 + lsls r6, 2 + ands r6, r4 + lsrs r6, 5 + movs r5, 0xF8 + lsls r5, 7 + ands r4, r5 + lsrs r4, 10 + mov r7, r9 + mov r5, r8 + subs r7, r5 + mov r12, r7 + mov r7, r12 + muls r7, r1 + adds r1, r7, 0 + asrs r1, 4 + add r8, r1 + mov r5, r9 + subs r1, r5, r6 + muls r1, r2 + asrs r1, 4 + adds r6, r1 + subs r5, r4 + mov r9, r5 + mov r1, r9 + muls r1, r3 + asrs r1, 4 + adds r4, r1 + mov r7, r8 + lsls r7, 16 + lsls r6, 21 + orrs r6, r7 + lsls r4, 26 + orrs r4, r6 + lsrs r4, 16 + ldr r1, _08083B10 @ =gUnknown_20375F8 + adds r0, r1 + strh r4, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08083B0C: .4byte gUnknown_20371F8 +_08083B10: .4byte gUnknown_20375F8 + thumb_func_end sub_8083A88 + + thumb_func_start sub_8083B14 +sub_8083B14: @ 8083B14 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r0, 16 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r4, _08083B84 @ =gUnknown_20371F8 + lsrs r0, 15 + adds r4, r0, r4 + ldrh r4, [r4] + movs r5, 0x1F + mov r8, r5 + mov r6, r8 + ands r6, r4 + mov r8, r6 + movs r5, 0xF8 + lsls r5, 2 + ands r5, r4 + lsrs r5, 5 + movs r6, 0xF8 + lsls r6, 7 + ands r4, r6 + lsrs r4, 10 + mov r6, r8 + muls r6, r1 + adds r1, r6, 0 + asrs r1, 4 + mov r6, r8 + subs r6, r1 + adds r1, r5, 0 + muls r1, r2 + asrs r1, 4 + subs r5, r1 + adds r1, r4, 0 + muls r1, r3 + asrs r1, 4 + subs r4, r1 + lsls r6, 16 + lsls r5, 21 + orrs r5, r6 + lsls r4, 26 + orrs r4, r5 + lsrs r4, 16 + ldr r1, _08083B88 @ =gUnknown_20375F8 + adds r0, r1 + strh r4, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08083B84: .4byte gUnknown_20371F8 +_08083B88: .4byte gUnknown_20375F8 + thumb_func_end sub_8083B14 + + thumb_func_start sub_8083B8C +sub_8083B8C: @ 8083B8C + push {r4,lr} + bl sub_8040C3C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08083BC8 @ =sub_8083BD0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08083BCC @ =gUnknown_3005090 + adds r1, r0 + strh r4, [r1, 0xA] + movs r0, 0x5D + strh r0, [r1, 0xC] + movs r0, 0x24 + strh r0, [r1, 0xE] + movs r0, 0x80 + strh r0, [r1, 0x10] + movs r0, 0x18 + strh r0, [r1, 0x12] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08083BC8: .4byte sub_8083BD0 +_08083BCC: .4byte gUnknown_3005090 + thumb_func_end sub_8083B8C + + thumb_func_start sub_8083BD0 +sub_8083BD0: @ 8083BD0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08083BF8 @ =gUnknown_3005090 + adds r1, r0 + ldr r2, _08083BFC @ =gUnknown_83CBFD0 + movs r3, 0x8 + ldrsh r0, [r1, r3] + lsls r0, 2 + adds r0, r2 + ldr r2, [r0] + adds r0, r1, 0 + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_08083BF8: .4byte gUnknown_3005090 +_08083BFC: .4byte gUnknown_83CBFD0 + thumb_func_end sub_8083BD0 + + thumb_func_start sub_8083C00 +sub_8083C00: @ 8083C00 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0xC + ldrsh r1, [r4, r2] + movs r3, 0xE + ldrsh r2, [r4, r3] + movs r3, 0x1 + bl sub_8083E14 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x14] + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl sub_8084200 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x16] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8083C00 + + thumb_func_start sub_8083C3C +sub_8083C3C: @ 8083C3C + push {r4,lr} + adds r2, r0, 0 + ldr r3, _08083C74 @ =gUnknown_202063C + movs r1, 0x14 + ldrsh r0, [r2, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + movs r4, 0x2E + ldrsh r0, [r1, r4] + cmp r0, 0x1 + ble _08083C6E + movs r0, 0x16 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x2E] + adds r1, 0x1 + strh r1, [r0, 0x2E] + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] +_08083C6E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083C74: .4byte gUnknown_202063C + thumb_func_end sub_8083C3C + + thumb_func_start sub_8083C78 +sub_8083C78: @ 8083C78 + push {lr} + adds r3, r0, 0 + ldr r2, _08083C9C @ =gUnknown_202063C + movs r0, 0x14 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, 0x4 + ble _08083C98 + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_08083C98: + pop {r0} + bx r0 + .align 2, 0 +_08083C9C: .4byte gUnknown_202063C + thumb_func_end sub_8083C78 + + thumb_func_start sub_8083CA0 +sub_8083CA0: @ 8083CA0 + push {lr} + ldr r2, _08083CD8 @ =gUnknown_202063C + movs r3, 0x14 + ldrsh r1, [r0, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0x6 + ble _08083CD2 + adds r0, r1, 0 + bl sub_8007280 + movs r0, 0x19 + bl sub_80837FC + ldr r0, _08083CDC @ =sub_8083BD0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08083CD2: + pop {r0} + bx r0 + .align 2, 0 +_08083CD8: .4byte gUnknown_202063C +_08083CDC: .4byte sub_8083BD0 + thumb_func_end sub_8083CA0 + + thumb_func_start sub_8083CE0 +sub_8083CE0: @ 8083CE0 + push {r4,lr} + bl sub_8040C3C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08083D14 @ =sub_8083D1C + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08083D18 @ =gUnknown_3005090 + adds r1, r0 + strh r4, [r1, 0xA] + movs r0, 0x75 + strh r0, [r1, 0xC] + movs r0, 0x3C + strh r0, [r1, 0xE] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08083D14: .4byte sub_8083D1C +_08083D18: .4byte gUnknown_3005090 + thumb_func_end sub_8083CE0 + + thumb_func_start sub_8083D1C +sub_8083D1C: @ 8083D1C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08083D44 @ =gUnknown_3005090 + adds r1, r0 + ldr r2, _08083D48 @ =gUnknown_83CBFE0 + movs r3, 0x8 + ldrsh r0, [r1, r3] + lsls r0, 2 + adds r0, r2 + ldr r2, [r0] + adds r0, r1, 0 + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_08083D44: .4byte gUnknown_3005090 +_08083D48: .4byte gUnknown_83CBFE0 + thumb_func_end sub_8083D1C + + thumb_func_start sub_8083D4C +sub_8083D4C: @ 8083D4C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r2, 0xC + ldrsh r1, [r4, r2] + movs r3, 0xE + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8083E14 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x14] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8083D4C + + thumb_func_start sub_8083D74 +sub_8083D74: @ 8083D74 + push {r4,lr} + adds r4, r0, 0 + ldr r2, _08083DA8 @ =gUnknown_202063C + movs r0, 0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, 0x1 + ble _08083DA2 + movs r0, 0x78 + movs r1, 0x19 + bl sub_808428C + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08083DA2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083DA8: .4byte gUnknown_202063C + thumb_func_end sub_8083D74 + + thumb_func_start sub_8083DAC +sub_8083DAC: @ 8083DAC + push {lr} + adds r3, r0, 0 + ldr r2, _08083DD0 @ =gUnknown_202063C + movs r0, 0x14 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, 0x4 + ble _08083DCC + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_08083DCC: + pop {r0} + bx r0 + .align 2, 0 +_08083DD0: .4byte gUnknown_202063C + thumb_func_end sub_8083DAC + + thumb_func_start sub_8083DD4 +sub_8083DD4: @ 8083DD4 + push {lr} + ldr r2, _08083E0C @ =gUnknown_202063C + movs r3, 0x14 + ldrsh r1, [r0, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0x6 + ble _08083E06 + adds r0, r1, 0 + bl sub_8007280 + movs r0, 0x3E + bl sub_80837FC + ldr r0, _08083E10 @ =sub_8083D1C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08083E06: + pop {r0} + bx r0 + .align 2, 0 +_08083E0C: .4byte gUnknown_202063C +_08083E10: .4byte sub_8083D1C + thumb_func_end sub_8083DD4 + + thumb_func_start sub_8083E14 +sub_8083E14: @ 8083E14 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + ldr r0, _08083E68 @ =sub_8083E70 + bl sub_800704C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r2, _08083E6C @ =gUnknown_202063C + adds r1, r2 + strh r4, [r1, 0x24] + strh r5, [r1, 0x26] + adds r3, r1, 0 + adds r3, 0x43 + movs r2, 0xFF + strb r2, [r3] + strh r6, [r1, 0x38] + mov r2, r8 + strh r2, [r1, 0x3A] + strh r0, [r1, 0x3C] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08083E68: .4byte sub_8083E70 +_08083E6C: .4byte gUnknown_202063C + thumb_func_end sub_8083E14 + + thumb_func_start sub_8083E70 +sub_8083E70: @ 8083E70 + push {lr} + ldr r2, _08083E88 @ =gUnknown_83CBFF0 + movs r3, 0x2E + ldrsh r1, [r0, r3] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08083E88: .4byte gUnknown_83CBFF0 + thumb_func_end sub_8083E70 + + thumb_func_start sub_8083E8C +sub_8083E8C: @ 8083E8C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08083EA4 + subs r0, r1, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _08083F00 +_08083EA4: + movs r0, 0x19 + strh r0, [r4, 0x30] + ldr r0, _08083F18 @ =gUnknown_83CBF88 + ldr r1, _08083F1C @ =gUnknown_83CC010 + movs r2, 0x32 + ldrsh r3, [r4, r2] + lsls r3, 2 + adds r3, r1 + ldrh r1, [r4, 0x24] + ldrh r2, [r3] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r4, 0x26] + ldrh r3, [r3, 0x2] + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + movs r3, 0xFF + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08083F20 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1, 0x5] + ldrh r0, [r4, 0x3C] + strh r0, [r1, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x3A] + subs r0, 0x1 + strh r0, [r4, 0x3A] + movs r0, 0x17 + bl sub_80722CC +_08083F00: + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08083F12 + movs r0, 0x20 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_08083F12: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083F18: .4byte gUnknown_83CBF88 +_08083F1C: .4byte gUnknown_83CC010 +_08083F20: .4byte gUnknown_202063C + thumb_func_end sub_8083E8C + + thumb_func_start sub_8083F24 +sub_8083F24: @ 8083F24 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _08083F54 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + movs r0, 0x8 + strh r0, [r1, 0x30] + strh r2, [r1, 0x32] + strh r2, [r1, 0x34] + movs r2, 0x38 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _08083F54 + movs r0, 0x80 + lsls r0, 1 + bl sub_8071C60 +_08083F54: + pop {r0} + bx r0 + thumb_func_end sub_8083F24 + + thumb_func_start sub_8083F58 +sub_8083F58: @ 8083F58 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + ldrh r0, [r7, 0x30] + subs r0, 0x1 + strh r0, [r7, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _08083F88 + movs r0, 0x8 + strh r0, [r7, 0x30] + ldrh r0, [r7, 0x32] + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + strh r0, [r7, 0x32] + cmp r0, 0 + bne _08083F88 + ldrh r0, [r7, 0x34] + adds r0, 0x1 + strh r0, [r7, 0x34] +_08083F88: + ldrh r4, [r7, 0x32] + adds r4, 0x3 + movs r0, 0x3 + mov r8, r0 + mov r1, r8 + ands r4, r1 + ldr r3, _08084080 @ =0x00001007 + mov r10, r3 + mov r0, r10 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + movs r1, 0x84 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + ldr r6, _08084084 @ =gUnknown_83CC028 + adds r1, r4, r6 + ldrb r1, [r1] + ldr r5, _08084088 @ =gUnknown_83CC02C + adds r2, r4, r5 + ldrb r2, [r2] + ldr r3, _0808408C @ =gUnknown_83CC030 + mov r9, r3 + add r4, r9 + ldrb r3, [r4] + bl sub_8083A88 + ldrh r4, [r7, 0x32] + adds r4, 0x2 + mov r0, r8 + ands r4, r0 + mov r0, r10 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + movs r1, 0x83 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + adds r1, r4, r6 + ldrb r1, [r1] + adds r2, r4, r5 + ldrb r2, [r2] + add r4, r9 + ldrb r3, [r4] + bl sub_8083A88 + ldrh r4, [r7, 0x32] + adds r4, 0x1 + mov r3, r8 + ands r4, r3 + mov r0, r10 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + movs r1, 0x81 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + adds r1, r4, r6 + ldrb r1, [r1] + adds r2, r4, r5 + ldrb r2, [r2] + add r4, r9 + ldrb r3, [r4] + bl sub_8083A88 + ldrh r4, [r7, 0x32] + lsls r4, 24 + lsrs r4, 24 + mov r0, r10 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + ldr r3, _08084090 @ =0x01050000 + adds r0, r3 + lsrs r0, 16 + adds r6, r4, r6 + ldrb r6, [r6] + adds r5, r4, r5 + ldrb r5, [r5] + add r4, r9 + ldrb r4, [r4] + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + mov r0, r10 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + ldr r1, _08084094 @ =0x01030000 + adds r0, r1 + lsrs r0, 16 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + movs r3, 0x34 + ldrsh r0, [r7, r3] + cmp r0, 0x2 + ble _08084072 + ldrh r0, [r7, 0x2E] + adds r0, 0x1 + movs r1, 0 + strh r0, [r7, 0x2E] + movs r0, 0x8 + strh r0, [r7, 0x30] + strh r1, [r7, 0x32] +_08084072: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08084080: .4byte 0x00001007 +_08084084: .4byte gUnknown_83CC028 +_08084088: .4byte gUnknown_83CC02C +_0808408C: .4byte gUnknown_83CC030 +_08084090: .4byte 0x01050000 +_08084094: .4byte 0x01030000 + thumb_func_end sub_8083F58 + + thumb_func_start sub_8084098 +sub_8084098: @ 8084098 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080840C8 + movs r0, 0x8 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x32] + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + strh r0, [r2, 0x32] + cmp r0, 0x3 + bne _080840C8 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + movs r0, 0x1E + strh r0, [r2, 0x30] +_080840C8: + ldrh r4, [r2, 0x32] + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08084174 @ =0x00001007 + mov r8, r0 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + movs r1, 0x84 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + ldr r1, _08084178 @ =gUnknown_83CC028 + adds r1, r4, r1 + ldrb r6, [r1] + ldr r1, _0808417C @ =gUnknown_83CC02C + adds r1, r4, r1 + ldrb r5, [r1] + ldr r1, _08084180 @ =gUnknown_83CC030 + adds r4, r1 + ldrb r4, [r4] + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + mov r0, r8 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + movs r1, 0x83 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + mov r0, r8 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + movs r1, 0x81 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + mov r0, r8 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + ldr r1, _08084184 @ =0x01050000 + adds r0, r1 + lsrs r0, 16 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + mov r0, r8 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + ldr r1, _08084188 @ =0x01030000 + adds r0, r1 + lsrs r0, 16 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8083A88 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08084174: .4byte 0x00001007 +_08084178: .4byte gUnknown_83CC028 +_0808417C: .4byte gUnknown_83CC02C +_08084180: .4byte gUnknown_83CC030 +_08084184: .4byte 0x01050000 +_08084188: .4byte 0x01030000 + thumb_func_end sub_8084098 + + thumb_func_start sub_808418C +sub_808418C: @ 808418C + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080841A2 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] +_080841A2: + pop {r0} + bx r0 + thumb_func_end sub_808418C + + thumb_func_start sub_80841A8 +sub_80841A8: @ 80841A8 + ldrh r1, [r0, 0x2E] + adds r1, 0x1 + strh r1, [r0, 0x2E] + bx lr + thumb_func_end sub_80841A8 + + thumb_func_start sub_80841B0 +sub_80841B0: @ 80841B0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080841C6 + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _080841CC +_080841C6: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_080841CC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80841B0 + + thumb_func_start nullsub_50 +nullsub_50: @ 80841D4 + bx lr + thumb_func_end nullsub_50 + + thumb_func_start sub_80841D8 +sub_80841D8: @ 80841D8 + push {lr} + adds r3, r0, 0 + ldr r2, _080841FC @ =gUnknown_202063C + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, 0x4 + ble _080841F8 + adds r0, r3, 0 + bl sub_80836B4 +_080841F8: + pop {r0} + bx r0 + .align 2, 0 +_080841FC: .4byte gUnknown_202063C + thumb_func_end sub_80841D8 + + thumb_func_start sub_8084200 +sub_8084200: @ 8084200 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _08084244 @ =gUnknown_83CBFA0 + lsls r3, 16 + asrs r3, 16 + lsls r2, 16 + asrs r2, 16 + adds r1, r3, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r1, _08084248 @ =gUnknown_202063C + adds r2, r1 + ldrb r3, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + movs r3, 0x8 + orrs r1, r3 + strb r1, [r2, 0x5] + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2] + pop {r1} + bx r1 + .align 2, 0 +_08084244: .4byte gUnknown_83CBFA0 +_08084248: .4byte gUnknown_202063C + thumb_func_end sub_8084200 + + thumb_func_start sub_808424C +sub_808424C: @ 808424C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08084270 + movs r0, 0 + strh r0, [r4, 0x2E] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + subs r0, 0x5 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C +_08084270: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08084284 + adds r0, r4, 0 + bl sub_80836B4 +_08084284: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_808424C + + thumb_func_start sub_808428C +sub_808428C: @ 808428C + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080842A8 @ =gUnknown_83CBFB8 + lsls r3, 16 + asrs r3, 16 + lsls r2, 16 + asrs r2, 16 + adds r1, r3, 0 + movs r3, 0 + bl sub_8006FE0 + pop {r0} + bx r0 + .align 2, 0 +_080842A8: .4byte gUnknown_83CBFB8 + thumb_func_end sub_808428C + + thumb_func_start sub_80842AC +sub_80842AC: @ 80842AC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080842C2 + adds r0, r2, 0 + bl sub_80836B4 +_080842C2: + pop {r0} + bx r0 + thumb_func_end sub_80842AC + + thumb_func_start sub_80842C8 +sub_80842C8: @ 80842C8 + push {lr} + ldr r0, _080842DC @ =sub_80567DC + bl sub_8000544 + ldr r1, _080842E0 @ =gUnknown_3005020 + ldr r0, _080842E4 @ =sub_80842E8 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080842DC: .4byte sub_80567DC +_080842E0: .4byte gUnknown_3005020 +_080842E4: .4byte sub_80842E8 + thumb_func_end sub_80842C8 + + thumb_func_start sub_80842E8 +sub_80842E8: @ 80842E8 + push {lr} + bl sub_807DC00 + ldr r0, _08084308 @ =sub_8084310 + movs r1, 0 + bl sub_807741C + bl sub_8069940 + bl sub_8068974 + ldr r1, _0808430C @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08084308: .4byte sub_8084310 +_0808430C: .4byte gUnknown_3005020 + thumb_func_end sub_80842E8 + + thumb_func_start sub_8084310 +sub_8084310: @ 8084310 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0808437C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r6, [r4, r0] + cmp r6, 0 + bne _08084350 + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _08084376 + bl sub_811FB0C + ldr r1, _08084380 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + cmp r0, 0x5 + ble _08084344 + str r6, [r1] +_08084344: + movs r0, 0x1F + bl sub_8083444 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08084350: + movs r0, 0x1F + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08084376 + bl sub_8054CA0 + bl sub_8055378 + ldr r0, _08084384 @ =sub_805671C + bl sub_8000544 + ldr r1, _08084388 @ =gUnknown_3005020 + ldr r0, _0808438C @ =sub_8084390 + str r0, [r1] + adds r0, r5, 0 + bl sub_8077508 +_08084376: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808437C: .4byte gUnknown_3005090 +_08084380: .4byte gUnknown_20386E0 +_08084384: .4byte sub_805671C +_08084388: .4byte gUnknown_3005020 +_0808438C: .4byte sub_8084390 + thumb_func_end sub_8084310 + + thumb_func_start sub_8084390 +sub_8084390: @ 8084390 + push {r4,lr} + bl sub_8055DC4 + bl sub_807DC00 + ldr r0, _080843E8 @ =sub_80843F8 + movs r1, 0 + bl sub_807741C + ldr r4, _080843EC @ =gUnknown_2036E38 + ldr r3, _080843F0 @ =gUnknown_2037078 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0, 0x1] + ldrb r1, [r3] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080843D2 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x3 + bl sub_805F218 +_080843D2: + bl sub_8069940 + bl sub_8068974 + ldr r1, _080843F4 @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080843E8: .4byte sub_80843F8 +_080843EC: .4byte gUnknown_2036E38 +_080843F0: .4byte gUnknown_2037078 +_080843F4: .4byte gUnknown_3005020 + thumb_func_end sub_8084390 + + thumb_func_start sub_80843F8 +sub_80843F8: @ 80843F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0808444C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0808442A + ldr r0, _08084450 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08084444 + movs r0, 0x20 + bl sub_8083444 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0808442A: + movs r0, 0x20 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08084444 + bl sub_806994C + bl sub_8068A5C + adds r0, r5, 0 + bl sub_8077508 +_08084444: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808444C: .4byte gUnknown_3005090 +_08084450: .4byte gUnknown_2037AB8 + thumb_func_end sub_80843F8 + + thumb_func_start sub_8084454 +sub_8084454: @ 8084454 + push {lr} + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8111CF0 + bl sub_8069940 + bl sub_8068974 + ldr r0, _0808447C @ =sub_8084484 + movs r1, 0 + bl sub_807741C + ldr r1, _08084480 @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0808447C: .4byte sub_8084484 +_08084480: .4byte gUnknown_3005020 + thumb_func_end sub_8084454 + + thumb_func_start sub_8084484 +sub_8084484: @ 8084484 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080844B4 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r5, _080844B8 @ =gUnknown_83CC034 +_08084496: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _08084496 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080844B4: .4byte gUnknown_3005090 +_080844B8: .4byte gUnknown_83CC034 + thumb_func_end sub_8084484 + + thumb_func_start sub_80844BC +sub_80844BC: @ 80844BC + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + mov r9, r0 + ldr r6, _08084558 @ =gUnknown_2037078 + ldrb r0, [r6, 0x5] + lsls r5, r0, 3 + adds r5, r0 + lsls r5, 2 + ldr r0, _0808455C @ =gUnknown_2036E38 + mov r8, r0 + add r5, r8 + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08084560 @ =gUnknown_202063C + adds r4, r0 + bl sub_805FAF8 + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r1, [r0, 0x1] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0, 0x1] + movs r0, 0x1 + strb r0, [r6, 0x6] + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8063CA4 + adds r3, r4, 0 + adds r3, 0x42 + ldrb r0, [r3] + lsrs r0, 6 + mov r1, r9 + strh r0, [r1, 0x10] + ldrb r0, [r5, 0x3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r5, 0x3] + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] + ldrb r1, [r3] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3] + mov r1, r9 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x1 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08084558: .4byte gUnknown_2037078 +_0808455C: .4byte gUnknown_2036E38 +_08084560: .4byte gUnknown_202063C + thumb_func_end sub_80844BC + + thumb_func_start sub_8084564 +sub_8084564: @ 8084564 + push {r4,lr} + adds r4, r0, 0 + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _08084578 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08084578: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8084564 + + thumb_func_start sub_8084580 +sub_8084580: @ 8084580 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080845E4 @ =gUnknown_2037078 + ldrb r0, [r6, 0x4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080845E8 @ =gUnknown_202063C + adds r2, r0 + adds r0, r2, 0 + adds r0, 0x29 + movs r4, 0 + ldrsb r4, [r0, r4] + lsls r0, r4, 17 + negs r0, r0 + ldrh r1, [r2, 0x22] + ldr r3, _080845EC @ =gUnknown_2021BCA + adds r1, r4 + ldrh r3, [r3] + adds r1, r3 + asrs r0, 16 + adds r0, r1 + negs r0, r0 + movs r1, 0 + strh r0, [r2, 0x26] + movs r0, 0x1 + strh r0, [r5, 0xA] + strh r1, [r5, 0xC] + ldr r2, _080845F0 @ =gUnknown_2036E38 + ldrb r0, [r6, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + movs r0, 0x25 + bl sub_80722CC + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080845E4: .4byte gUnknown_2037078 +_080845E8: .4byte gUnknown_202063C +_080845EC: .4byte gUnknown_2021BCA +_080845F0: .4byte gUnknown_2036E38 + thumb_func_end sub_8084580 + + thumb_func_start sub_80845F4 +sub_80845F4: @ 80845F4 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r2, _080846A0 @ =gUnknown_2037078 + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080846A4 @ =gUnknown_2036E38 + adds r6, r0, r1 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080846A8 @ =gUnknown_202063C + adds r5, r0, r1 + ldrh r0, [r4, 0xA] + ldrh r1, [r5, 0x26] + adds r0, r1 + strh r0, [r5, 0x26] + ldrh r2, [r4, 0xA] + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bgt _08084636 + ldrh r1, [r4, 0xC] + adds r0, r2, r1 + strh r0, [r4, 0xC] + movs r1, 0xF + ands r0, r1 + cmp r0, 0 + beq _08084636 + lsls r0, r2, 1 + strh r0, [r4, 0xA] +_08084636: + ldrh r2, [r4, 0xE] + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08084674 + movs r0, 0x26 + ldrsh r1, [r5, r0] + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + blt _08084674 + adds r0, r2, 0x1 + strh r0, [r4, 0xE] + ldrb r1, [r6, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r6, 0x3] + ldrb r1, [r4, 0x10] + adds r3, r5, 0 + adds r3, 0x42 + lsls r1, 6 + ldrb r2, [r3] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] +_08084674: + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r0, 0 + blt _08084698 + movs r0, 0xCF + bl sub_80722CC + ldrb r0, [r6] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r6] + movs r0, 0 + strh r0, [r5, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08084698: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080846A0: .4byte gUnknown_2037078 +_080846A4: .4byte gUnknown_2036E38 +_080846A8: .4byte gUnknown_202063C + thumb_func_end sub_80845F4 + + thumb_func_start sub_80846AC +sub_80846AC: @ 80846AC + push {lr} + ldrh r1, [r0, 0x8] + adds r1, 0x1 + movs r2, 0 + strh r1, [r0, 0x8] + movs r1, 0x4 + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + movs r0, 0 + bl sub_805ADD4 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_80846AC + + thumb_func_start sub_80846C8 +sub_80846C8: @ 80846C8 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_805ADE0 + ldrh r0, [r4, 0xA] + negs r2, r0 + strh r2, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _080846F0 + lsls r0, r2, 16 + asrs r0, 17 + strh r0, [r4, 0xA] +_080846F0: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080846FE + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080846FE: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80846C8 + + thumb_func_start sub_8084708 +sub_8084708: @ 8084708 + push {r4,lr} + sub sp, 0x4 + ldr r1, _08084778 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x6] + bl sub_806994C + bl sub_805FAA8 + bl sub_8068A5C + bl sub_805ADF8 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r0, 16 + bl sub_8055B38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08084760 + ldr r0, _0808477C @ =0x00004001 + movs r1, 0x1 + bl sub_806E584 + movs r0, 0x8 + bl sub_805BDEC + movs r0, 0x16 + bl sub_812B1F0 +_08084760: + ldr r0, _08084780 @ =sub_8084484 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08084778: .4byte gUnknown_2037078 +_0808477C: .4byte 0x00004001 +_08084780: .4byte sub_8084484 + thumb_func_end sub_8084708 + + thumb_func_start sub_8084784 +sub_8084784: @ 8084784 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _080847B8 @ =sub_80847C0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080847BC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0xA] + cmp r4, 0x6A + bne _080847B0 + movs r0, 0x1 + strh r0, [r1, 0xA] +_080847B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080847B8: .4byte sub_80847C0 +_080847BC: .4byte gUnknown_3005090 + thumb_func_end sub_8084784 + + thumb_func_start sub_80847C0 +sub_80847C0: @ 80847C0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080847F0 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r5, _080847F4 @ =gUnknown_83CC050 +_080847D2: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080847D2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080847F0: .4byte gUnknown_3005090 +_080847F4: .4byte gUnknown_83CC050 + thumb_func_end sub_80847C0 + + thumb_func_start sub_80847F8 +sub_80847F8: @ 80847F8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8068974 + bl sub_805FAF8 + ldrb r0, [r4, 0xA] + bl sub_809C448 + movs r0, 0x1 + bl sub_81128BC + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80847F8 + + thumb_func_start sub_8084820 +sub_8084820: @ 8084820 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08084888 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0808488C @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0808484A + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0808487E +_0808484A: + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x8] + strh r1, [r5, 0xC] + strh r1, [r5, 0xE] + ldrb r0, [r5, 0xA] + cmp r0, 0 + bne _08084878 + movs r0, 0x4 + strh r0, [r5, 0x8] +_08084878: + movs r0, 0x49 + bl sub_80722CC +_0808487E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084888: .4byte gUnknown_2037078 +_0808488C: .4byte gUnknown_2036E38 + thumb_func_end sub_8084820 + + thumb_func_start sub_8084890 +sub_8084890: @ 8084890 + push {r4,lr} + adds r4, r0, 0 + bl sub_80848F8 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _080848AA + bl sub_8084990 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080848AA: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8084890 + + thumb_func_start sub_80848B4 +sub_80848B4: @ 80848B4 + push {lr} + bl sub_80848F8 + bl sub_80849A0 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80848B4 + + thumb_func_start sub_80848C4 +sub_80848C4: @ 80848C4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8084944 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _080848DE + bl sub_8084990 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080848DE: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80848C4 + + thumb_func_start sub_80848E8 +sub_80848E8: @ 80848E8 + push {lr} + bl sub_8084944 + bl sub_80849A0 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80848E8 + + thumb_func_start sub_80848F8 +sub_80848F8: @ 80848F8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _0808493C @ =gUnknown_2037078 + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08084940 @ =gUnknown_202063C + adds r4, r0 + movs r0, 0xC + ldrsh r1, [r5, r0] + movs r0, 0x84 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r0, 0xC + ldrsh r1, [r5, r0] + movs r0, 0x94 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0xE] + adds r0, 0x1 + strh r0, [r5, 0xE] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08084936 + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] +_08084936: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808493C: .4byte gUnknown_2037078 +_08084940: .4byte gUnknown_202063C + thumb_func_end sub_80848F8 + + thumb_func_start sub_8084944 +sub_8084944: @ 8084944 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08084988 @ =gUnknown_2037078 + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0808498C @ =gUnknown_202063C + adds r4, r0 + movs r0, 0xC + ldrsh r1, [r5, r0] + movs r0, 0x7C + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r0, 0xC + ldrsh r1, [r5, r0] + movs r0, 0x76 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0xE] + adds r0, 0x1 + strh r0, [r5, 0xE] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08084982 + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] +_08084982: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08084988: .4byte gUnknown_2037078 +_0808498C: .4byte gUnknown_202063C + thumb_func_end sub_8084944 + + thumb_func_start sub_8084990 +sub_8084990: @ 8084990 + push {lr} + bl sub_8055F88 + bl sub_807DC18 + pop {r0} + bx r0 + thumb_func_end sub_8084990 + + thumb_func_start sub_80849A0 +sub_80849A0: @ 80849A0 + push {lr} + ldr r0, _080849E0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080849DC + bl sub_8055FC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080849DC + bl sub_809C460 + bl sub_8055378 + ldr r1, _080849E4 @ =gUnknown_3005020 + ldr r0, _080849E8 @ =sub_80849F4 + str r0, [r1] + ldr r0, _080849EC @ =sub_805671C + bl sub_8000544 + ldr r0, _080849F0 @ =sub_80847C0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080849DC: + pop {r0} + bx r0 + .align 2, 0 +_080849E0: .4byte gUnknown_2037AB8 +_080849E4: .4byte gUnknown_3005020 +_080849E8: .4byte sub_80849F4 +_080849EC: .4byte sub_805671C +_080849F0: .4byte sub_80847C0 + thumb_func_end sub_80849A0 + + thumb_func_start sub_80849F4 +sub_80849F4: @ 80849F4 + push {lr} + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8111CF0 + bl sub_8069940 + bl sub_8068974 + ldr r0, _08084A1C @ =sub_8084A24 + movs r1, 0 + bl sub_807741C + ldr r1, _08084A20 @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08084A1C: .4byte sub_8084A24 +_08084A20: .4byte gUnknown_3005020 + thumb_func_end sub_80849F4 + + thumb_func_start sub_8084A24 +sub_8084A24: @ 8084A24 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08084A54 @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r5, _08084A58 @ =gUnknown_83CC068 +_08084A36: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _08084A36 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08084A54: .4byte gUnknown_3005090 +_08084A58: .4byte gUnknown_83CC068 + thumb_func_end sub_8084A24 + + thumb_func_start sub_8084A5C +sub_8084A5C: @ 8084A5C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_805FAF8 + ldr r0, _08084ABC @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08084AC0 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x4 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r1, r0, 24 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x10 + strh r0, [r5, 0xA] + cmp r1, 0x6B + bne _08084AC4 + movs r1, 0x1 + movs r0, 0x3 + strh r0, [r5, 0x8] + b _08084AC6 + .align 2, 0 +_08084ABC: .4byte gUnknown_2037078 +_08084AC0: .4byte gUnknown_2036E38 +_08084AC4: + movs r1, 0 +_08084AC6: + adds r0, r1, 0 + bl sub_809C448 + movs r0, 0x1 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8084A5C + + thumb_func_start sub_8084AD8 +sub_8084AD8: @ 8084AD8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08084B10 @ =gUnknown_2037078 + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08084B14 @ =gUnknown_202063C + adds r4, r0 + movs r0, 0xA + ldrsh r1, [r5, r0] + movs r0, 0x84 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r0, 0xA + ldrsh r1, [r5, r0] + movs r0, 0x94 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084B10: .4byte gUnknown_2037078 +_08084B14: .4byte gUnknown_202063C + thumb_func_end sub_8084AD8 + + thumb_func_start sub_8084B18 +sub_8084B18: @ 8084B18 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _08084B70 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08084B74 @ =gUnknown_202063C + adds r5, r0, r1 + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0x84 + bl sub_8044E4C + strh r0, [r5, 0x24] + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0x94 + bl sub_8044E30 + strh r0, [r5, 0x26] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08084B56 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] +_08084B56: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08084B66 + strh r0, [r5, 0x24] + strh r0, [r5, 0x26] + movs r0, 0x5 + strh r0, [r4, 0x8] +_08084B66: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084B70: .4byte gUnknown_2037078 +_08084B74: .4byte gUnknown_202063C + thumb_func_end sub_8084B18 + + thumb_func_start sub_8084B78 +sub_8084B78: @ 8084B78 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08084BB0 @ =gUnknown_2037078 + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08084BB4 @ =gUnknown_202063C + adds r4, r0 + movs r0, 0xA + ldrsh r1, [r5, r0] + movs r0, 0x7C + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r0, 0xA + ldrsh r1, [r5, r0] + movs r0, 0x76 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084BB0: .4byte gUnknown_2037078 +_08084BB4: .4byte gUnknown_202063C + thumb_func_end sub_8084B78 + + thumb_func_start sub_8084BB8 +sub_8084BB8: @ 8084BB8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _08084C10 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08084C14 @ =gUnknown_202063C + adds r5, r0, r1 + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0x7C + bl sub_8044E4C + strh r0, [r5, 0x24] + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0x76 + bl sub_8044E30 + strh r0, [r5, 0x26] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08084BF6 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] +_08084BF6: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08084C08 + strh r0, [r5, 0x24] + strh r0, [r5, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08084C08: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084C10: .4byte gUnknown_2037078 +_08084C14: .4byte gUnknown_202063C + thumb_func_end sub_8084BB8 + + thumb_func_start sub_8084C18 +sub_8084C18: @ 8084C18 + push {r4,lr} + adds r4, r0, 0 + bl sub_809C474 + lsls r0, 24 + cmp r0, 0 + bne _08084C34 + bl sub_809C460 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + b _08084C36 +_08084C34: + movs r0, 0 +_08084C36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8084C18 + + thumb_func_start sub_8084C3C +sub_8084C3C: @ 8084C3C + push {r4,lr} + ldr r0, _08084C94 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08084C98 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08084C8A + bl sub_805FAA8 + bl sub_806994C + bl sub_8068A5C + movs r0, 0x4 + bl sub_8063F84 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldr r0, _08084C9C @ =sub_8084A24 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0x2 + bl sub_81128BC +_08084C8A: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08084C94: .4byte gUnknown_2037078 +_08084C98: .4byte gUnknown_2036E38 +_08084C9C: .4byte sub_8084A24 + thumb_func_end sub_8084C3C + + thumb_func_start sub_8084CA0 +sub_8084CA0: @ 8084CA0 + push {r4,lr} + ldr r4, _08084CCC @ =sub_8084CD8 + adds r0, r4, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08084CD0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _08084CD4 @ =gUnknown_20386E0 + ldr r2, [r2] + strh r2, [r1, 0xA] + bl _call_via_r4 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08084CCC: .4byte sub_8084CD8 +_08084CD0: .4byte gUnknown_3005090 +_08084CD4: .4byte gUnknown_20386E0 + thumb_func_end sub_8084CA0 + + thumb_func_start sub_8084CD8 +sub_8084CD8: @ 8084CD8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08084D14 @ =gUnknown_83CC084 + ldr r2, _08084D18 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_08084CEA: + movs r0, 0x8 + ldrsh r2, [r4, r0] + lsls r2, 2 + adds r2, r5 + ldr r0, _08084D1C @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08084D20 @ =gUnknown_2036E38 + adds r1, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _08084CEA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08084D14: .4byte gUnknown_83CC084 +_08084D18: .4byte gUnknown_3005090 +_08084D1C: .4byte gUnknown_2037078 +_08084D20: .4byte gUnknown_2036E38 + thumb_func_end sub_8084CD8 + + thumb_func_start sub_8084D24 +sub_8084D24: @ 8084D24 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069940 + ldr r1, _08084D40 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08084D40: .4byte gUnknown_2037078 + thumb_func_end sub_8084D24 + + thumb_func_start sub_8084D44 +sub_8084D44: @ 8084D44 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8069940 + adds r0, r5, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + bne _08084D74 + adds r0, r5, 0 + bl sub_8063D7C + ldr r1, _08084D7C @ =gUnknown_20386E0 + movs r2, 0xA + ldrsh r0, [r4, r2] + str r0, [r1] + movs r0, 0x3B + bl sub_8083444 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08084D74: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084D7C: .4byte gUnknown_20386E0 + thumb_func_end sub_8084D44 + + thumb_func_start sub_8084D80 +sub_8084D80: @ 8084D80 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x6 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08084D9A + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + b _08084D9C +_08084D9A: + movs r0, 0 +_08084D9C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8084D80 + + thumb_func_start sub_8084DA4 +sub_8084DA4: @ 8084DA4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0x2 + bl sub_8063F2C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8084DA4 + + thumb_func_start sub_8084DCC +sub_8084DCC: @ 8084DCC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + bne _08084DE2 + movs r0, 0 + b _08084E1E +_08084DE2: + ldrb r0, [r4, 0x1E] + bl sub_805A104 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08084E18 + bl sub_806994C + ldr r0, _08084E10 @ =gUnknown_2037078 + strb r4, [r0, 0x6] + ldr r0, _08084E14 @ =sub_8084CD8 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0x2B + bl sub_80837FC + movs r0, 0 + b _08084E1E + .align 2, 0 +_08084E10: .4byte gUnknown_2037078 +_08084E14: .4byte sub_8084CD8 +_08084E18: + movs r0, 0x3 + strh r0, [r5, 0x8] + movs r0, 0x1 +_08084E1E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8084DCC + + thumb_func_start sub_8084E24 +sub_8084E24: @ 8084E24 + push {r4,lr} + ldr r4, _08084E54 @ =sub_8084E60 + adds r0, r4, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08084E58 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r3, _08084E5C @ =gUnknown_20386E0 + ldr r2, [r3] + strh r2, [r1, 0x26] + ldr r2, [r3, 0x4] + strh r2, [r1, 0x24] + bl _call_via_r4 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08084E54: .4byte sub_8084E60 +_08084E58: .4byte gUnknown_3005090 +_08084E5C: .4byte gUnknown_20386E0 + thumb_func_end sub_8084E24 + + thumb_func_start sub_8084E60 +sub_8084E60: @ 8084E60 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08084E90 @ =gUnknown_83CC098 + ldr r2, _08084E94 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_08084E72: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _08084E72 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08084E90: .4byte gUnknown_83CC098 +_08084E94: .4byte gUnknown_3005090 + thumb_func_end sub_8084E60 + + thumb_func_start sub_8084E98 +sub_8084E98: @ 8084E98 + ldr r2, _08084EA8 @ =gUnknown_2037078 + movs r1, 0x1 + strb r1, [r2, 0x6] + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + movs r0, 0 + bx lr + .align 2, 0 +_08084EA8: .4byte gUnknown_2037078 + thumb_func_end sub_8084E98 + + thumb_func_start sub_8084EAC +sub_8084EAC: @ 8084EAC + push {r4,lr} + adds r4, r0, 0 + bl sub_8069940 + ldr r1, _08084ED0 @ =gUnknown_20386E0 + movs r2, 0x26 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r0, 0x3B + bl sub_8083444 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08084ED0: .4byte gUnknown_20386E0 + thumb_func_end sub_8084EAC + + thumb_func_start sub_8084ED4 +sub_8084ED4: @ 8084ED4 + push {lr} + sub sp, 0x8 + mov r1, sp + adds r1, 0x2 + mov r0, sp + bl sub_805C538 + movs r0, 0x6 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08084F18 + ldr r2, _08084F20 @ =gUnknown_2036E38 + ldr r0, _08084F24 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1E] + mov r0, sp + bl sub_806DF3C + ldr r0, _08084F28 @ =sub_8084E60 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0x2C + bl sub_80837FC +_08084F18: + movs r0, 0 + add sp, 0x8 + pop {r1} + bx r1 + .align 2, 0 +_08084F20: .4byte gUnknown_2036E38 +_08084F24: .4byte gUnknown_2037078 +_08084F28: .4byte sub_8084E60 + thumb_func_end sub_8084ED4 + + thumb_func_start sub_8084F2C +sub_8084F2C: @ 8084F2C + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08084F40 @ =sub_8084F44 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_08084F40: .4byte sub_8084F44 + thumb_func_end sub_8084F2C + + thumb_func_start sub_8084F44 +sub_8084F44: @ 8084F44 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r6, _08084F8C @ =gUnknown_83CC0A4 + ldr r2, _08084F90 @ =gUnknown_3005090 + ldr r5, _08084F94 @ =gUnknown_2037078 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_08084F58: + movs r0, 0x8 + ldrsh r3, [r4, r0] + lsls r3, 2 + adds r3, r6 + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08084F98 @ =gUnknown_2036E38 + adds r1, r0 + ldrb r0, [r5, 0x4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _08084F9C @ =gUnknown_202063C + adds r2, r0 + ldr r3, [r3] + adds r0, r4, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _08084F58 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08084F8C: .4byte gUnknown_83CC0A4 +_08084F90: .4byte gUnknown_3005090 +_08084F94: .4byte gUnknown_2037078 +_08084F98: .4byte gUnknown_2036E38 +_08084F9C: .4byte gUnknown_202063C + thumb_func_end sub_8084F44 + + thumb_func_start sub_8084FA0 +sub_8084FA0: @ 8084FA0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8068974 + bl sub_805FAF8 + movs r0, 0 + bl sub_805ADD4 + ldr r0, _08084FD4 @ =gUnknown_2037078 + movs r2, 0x1 + strb r2, [r0, 0x6] + ldrb r0, [r5, 0x3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r5, 0x3] + strh r2, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084FD4: .4byte gUnknown_2037078 + thumb_func_end sub_8084FA0 + + thumb_func_start sub_8084FD8 +sub_8084FD8: @ 8084FD8 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_805ADE0 + ldrh r0, [r4, 0xA] + negs r0, r0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _08085004 + movs r0, 0 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08085004: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8084FD8 + + thumb_func_start sub_808500C +sub_808500C: @ 808500C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0 + strh r0, [r2, 0x26] + movs r0, 0x1 + strh r0, [r4, 0xE] + ldr r3, _08085054 @ =gUnknown_20386E0 + movs r5, 0x10 + ldrsh r0, [r1, r5] + str r0, [r3] + movs r5, 0x12 + ldrsh r0, [r1, r5] + str r0, [r3, 0x4] + adds r0, r2, 0 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r3, 0x8] + ldrb r0, [r2, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0x32 + bl sub_8083444 + movs r0, 0xAB + bl sub_80722CC + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08085054: .4byte gUnknown_20386E0 + thumb_func_end sub_808500C + + thumb_func_start sub_8085058 +sub_8085058: @ 8085058 + push {r4-r7,lr} + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_805ADE0 + ldrh r0, [r4, 0xA] + negs r2, r0 + strh r2, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r1, r0, 0x1 + strh r1, [r4, 0xC] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x11 + bgt _08085092 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + bne _080850A4 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x3 + bgt _080850A4 + lsls r0, r2, 1 + b _080850A2 +_08085092: + movs r0, 0x4 + ands r1, r0 + cmp r1, 0 + bne _080850A4 + lsls r0, r2, 16 + cmp r0, 0 + ble _080850A4 + asrs r0, 17 +_080850A2: + strh r0, [r4, 0xA] +_080850A4: + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x6 + ble _080850F0 + adds r0, r5, 0 + adds r0, 0x29 + movs r1, 0 + ldrsb r1, [r0, r1] + lsls r2, r1, 17 + negs r2, r2 + movs r7, 0x26 + ldrsh r3, [r5, r7] + movs r7, 0x22 + ldrsh r0, [r5, r7] + adds r0, r1 + ldr r1, _080850E8 @ =gUnknown_2021BCA + movs r7, 0 + ldrsh r1, [r1, r7] + adds r0, r1 + asrs r2, 16 + adds r0, r2 + cmn r3, r0 + ble _080850EC + ldrh r0, [r5, 0x26] + ldrh r1, [r4, 0xE] + subs r0, r1 + strh r0, [r5, 0x26] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x7 + bgt _080850F0 + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080850F0 + .align 2, 0 +_080850E8: .4byte gUnknown_2021BCA +_080850EC: + movs r0, 0x1 + strh r0, [r4, 0x10] +_080850F0: + ldrh r2, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0808512E + movs r7, 0x26 + ldrsh r1, [r5, r7] + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _0808512E + adds r0, r2, 0x1 + strh r0, [r4, 0x12] + ldrb r0, [r6, 0x3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r6, 0x3] + ldrb r1, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + adds r2, r5, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] +_0808512E: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08085144 + movs r7, 0x10 + ldrsh r0, [r4, r7] + cmp r0, 0 + beq _08085144 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08085144: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8085058 + + thumb_func_start sub_808514C +sub_808514C: @ 808514C + push {r4,lr} + adds r4, r0, 0 + bl sub_8055F88 + bl sub_807DC18 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808514C + + thumb_func_start sub_8085168 +sub_8085168: @ 8085168 + push {lr} + ldr r0, _080851A8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080851A0 + bl sub_8055FC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080851A0 + bl sub_8055378 + ldr r1, _080851AC @ =gUnknown_3005020 + ldr r0, _080851B0 @ =sub_80851BC + str r0, [r1] + ldr r0, _080851B4 @ =sub_805671C + bl sub_8000544 + ldr r0, _080851B8 @ =sub_8084F44 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080851A0: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080851A8: .4byte gUnknown_2037AB8 +_080851AC: .4byte gUnknown_3005020 +_080851B0: .4byte sub_80851BC +_080851B4: .4byte sub_805671C +_080851B8: .4byte sub_8084F44 + thumb_func_end sub_8085168 + + thumb_func_start sub_80851BC +sub_80851BC: @ 80851BC + push {lr} + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8111CF0 + bl sub_8069940 + ldr r0, _080851E0 @ =gUnknown_3005020 + movs r1, 0 + str r1, [r0] + ldr r0, _080851E4 @ =sub_80851E8 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080851E0: .4byte gUnknown_3005020 +_080851E4: .4byte sub_80851E8 + thumb_func_end sub_80851BC + + thumb_func_start sub_80851E8 +sub_80851E8: @ 80851E8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r6, _08085230 @ =gUnknown_83CC0BC + ldr r2, _08085234 @ =gUnknown_3005090 + ldr r5, _08085238 @ =gUnknown_2037078 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080851FC: + movs r0, 0x8 + ldrsh r3, [r4, r0] + lsls r3, 2 + adds r3, r6 + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0808523C @ =gUnknown_2036E38 + adds r1, r0 + ldrb r0, [r5, 0x4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _08085240 @ =gUnknown_202063C + adds r2, r0 + ldr r3, [r3] + adds r0, r4, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _080851FC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08085230: .4byte gUnknown_83CC0BC +_08085234: .4byte gUnknown_3005090 +_08085238: .4byte gUnknown_2037078 +_0808523C: .4byte gUnknown_2036E38 +_08085240: .4byte gUnknown_202063C + thumb_func_end sub_80851E8 + + thumb_func_start sub_8085244 +sub_8085244: @ 8085244 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_805FAF8 + bl sub_8068974 + ldr r1, _08085270 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08085270: .4byte gUnknown_2037078 + thumb_func_end sub_8085244 + + thumb_func_start sub_8085274 +sub_8085274: @ 8085274 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _080852B4 + ldr r1, _080852BC @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r2, 0x12 + ldrsh r0, [r5, r2] + str r0, [r1, 0x4] + adds r0, r6, 0 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r1, 0x8] + ldrb r0, [r6, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r1, 0xC] + movs r0, 0x31 + bl sub_8083444 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080852B4: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080852BC: .4byte gUnknown_20386E0 + thumb_func_end sub_8085274 + + thumb_func_start sub_80852C0 +sub_80852C0: @ 80852C0 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0xA + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085310 @ =gUnknown_202063C + adds r0, r1 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0x1 + bls _08085308 + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + ldrb r1, [r4, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + bl sub_805FAA8 + movs r0, 0xA8 + bl sub_80722CC + movs r0, 0x4 + bl sub_8064194 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 +_08085308: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08085310: .4byte gUnknown_202063C + thumb_func_end sub_80852C0 + + thumb_func_start sub_8085314 +sub_8085314: @ 8085314 + push {lr} + adds r0, r1, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0808533E + ldr r1, _08085344 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x6] + bl sub_806994C + bl sub_8068A5C + ldr r0, _08085348 @ =sub_80851E8 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0808533E: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08085344: .4byte gUnknown_2037078 +_08085348: .4byte sub_80851E8 + thumb_func_end sub_8085314 + + thumb_func_start sub_808534C +sub_808534C: @ 808534C + push {r4,lr} + ldr r4, _080853A4 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080853A8 @ =gUnknown_83A0010 + adds r0, 0x84 + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080853AC @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + movs r1, 0x3 + ldrb r3, [r4, 0xC] + ands r3, r1 + lsls r3, 2 + ldrb r4, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r4 + orrs r1, r3 + strb r1, [r2, 0x5] + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x2 + orrs r1, r3 + strb r1, [r2] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080853A4: .4byte gUnknown_20386E0 +_080853A8: .4byte gUnknown_83A0010 +_080853AC: .4byte gUnknown_202063C + thumb_func_end sub_808534C + + thumb_func_start sub_80853B0 +sub_80853B0: @ 80853B0 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080853C8 + adds r0, r2, 0 + movs r1, 0x32 + bl sub_80836D8 +_080853C8: + pop {r0} + bx r0 + thumb_func_end sub_80853B0 + + thumb_func_start sub_80853CC +sub_80853CC: @ 80853CC + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _080853E0 @ =sub_80853E4 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080853E0: .4byte sub_80853E4 + thumb_func_end sub_80853CC + + thumb_func_start sub_80853E4 +sub_80853E4: @ 80853E4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r6, _0808542C @ =gUnknown_83CC0CC + ldr r2, _08085430 @ =gUnknown_3005090 + ldr r5, _08085434 @ =gUnknown_2037078 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_080853F8: + movs r0, 0x8 + ldrsh r3, [r4, r0] + lsls r3, 2 + adds r3, r6 + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08085438 @ =gUnknown_2036E38 + adds r1, r0 + ldrb r0, [r5, 0x4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _0808543C @ =gUnknown_202063C + adds r2, r0 + ldr r3, [r3] + adds r0, r4, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _080853F8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808542C: .4byte gUnknown_83CC0CC +_08085430: .4byte gUnknown_3005090 +_08085434: .4byte gUnknown_2037078 +_08085438: .4byte gUnknown_2036E38 +_0808543C: .4byte gUnknown_202063C + thumb_func_end sub_80853E4 + + thumb_func_start sub_8085440 +sub_8085440: @ 8085440 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8068974 + bl sub_805FAF8 + ldr r1, _0808546C @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrb r0, [r4, 0x3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x3] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808546C: .4byte gUnknown_2037078 + thumb_func_end sub_8085440 + + thumb_func_start sub_8085470 +sub_8085470: @ 8085470 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080854E4 + ldrh r1, [r5, 0xA] + movs r2, 0xA + ldrsh r0, [r5, r2] + cmp r0, 0x3 + ble _080854C4 + ldr r1, _080854C0 @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + str r0, [r1, 0x4] + adds r0, r6, 0 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r1, 0x8] + ldrb r0, [r6, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r1, 0xC] + movs r0, 0x31 + bl sub_8083444 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080854E4 + .align 2, 0 +_080854C0: .4byte gUnknown_20386E0 +_080854C4: + adds r0, r1, 0x1 + strh r0, [r5, 0xA] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806429C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + movs r0, 0x21 + bl sub_80722CC +_080854E4: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8085470 + + thumb_func_start sub_80854EC +sub_80854EC: @ 80854EC + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + ldr r2, _08085520 @ =gUnknown_202063C + movs r0, 0xA + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0x2 + bne _08085516 + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_08085516: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08085520: .4byte gUnknown_202063C + thumb_func_end sub_80854EC + + thumb_func_start sub_8085524 +sub_8085524: @ 8085524 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x31 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08085542 + bl sub_8055F88 + bl sub_807DC18 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08085542: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8085524 + + thumb_func_start sub_808554C +sub_808554C: @ 808554C + push {lr} + ldr r0, _0808558C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08085584 + bl sub_8055FC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085584 + bl sub_8055378 + ldr r1, _08085590 @ =gUnknown_3005020 + ldr r0, _08085594 @ =sub_8084454 + str r0, [r1] + ldr r0, _08085598 @ =sub_805671C + bl sub_8000544 + ldr r0, _0808559C @ =sub_80853E4 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08085584: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0808558C: .4byte gUnknown_2037AB8 +_08085590: .4byte gUnknown_3005020 +_08085594: .4byte sub_8084454 +_08085598: .4byte sub_805671C +_0808559C: .4byte sub_80853E4 + thumb_func_end sub_808554C + + thumb_func_start sub_80855A0 +sub_80855A0: @ 80855A0 + push {r4,lr} + ldr r4, _080855F8 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080855FC @ =gUnknown_83A0010 + adds r0, 0x80 + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08085600 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + movs r1, 0x3 + ldrb r3, [r4, 0xC] + ands r3, r1 + lsls r3, 2 + ldrb r4, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r4 + orrs r1, r3 + strb r1, [r2, 0x5] + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x2 + orrs r1, r3 + strb r1, [r2] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080855F8: .4byte gUnknown_20386E0 +_080855FC: .4byte gUnknown_83A0010 +_08085600: .4byte gUnknown_202063C + thumb_func_end sub_80855A0 + + thumb_func_start sub_8085604 +sub_8085604: @ 8085604 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0808561C + adds r0, r2, 0 + movs r1, 0x31 + bl sub_80836D8 +_0808561C: + pop {r0} + bx r0 + thumb_func_end sub_8085604 + + thumb_func_start sub_8085620 +sub_8085620: @ 8085620 + push {lr} + bl sub_8069940 + bl sub_8068974 + ldr r0, _08085638 @ =sub_808563C + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_08085638: .4byte sub_808563C + thumb_func_end sub_8085620 + + thumb_func_start sub_808563C +sub_808563C: @ 808563C + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08085664 @ =gUnknown_83CC0E0 + ldr r2, _08085668 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08085664: .4byte gUnknown_83CC0E0 +_08085668: .4byte gUnknown_3005090 + thumb_func_end sub_808563C + + thumb_func_start sub_808566C +sub_808566C: @ 808566C + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x8] + movs r0, 0x40 + strh r0, [r4, 0x22] + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + strh r5, [r4, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808566C + + thumb_func_start sub_8085690 +sub_8085690: @ 8085690 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080856D4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080856D8 @ =gUnknown_2036E38 + adds r6, r0, r1 + adds r4, r5, 0 + adds r4, 0x8 + adds r1, r5, 0 + adds r1, 0xA + adds r2, r5, 0 + adds r2, 0xC + adds r0, r6, 0 + bl sub_808576C + ldrh r1, [r4, 0x6] + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0x3B + bgt _080856DC + adds r0, r1, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _08085702 + movs r0, 0x27 + bl sub_80722CC + b _08085702 + .align 2, 0 +_080856D4: .4byte gUnknown_2037078 +_080856D8: .4byte gUnknown_2036E38 +_080856DC: + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08085702 + adds r1, r5, 0 + adds r1, 0x12 + adds r2, r5, 0 + adds r2, 0x14 + adds r0, r6, 0 + bl sub_80857F0 + cmp r0, 0 + bne _08085702 + bl sub_8055F88 + bl sub_807DC18 + movs r0, 0x1 + strh r0, [r4, 0x8] +_08085702: + movs r2, 0x8 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bne _08085750 + ldr r0, _08085758 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08085750 + bl sub_8055FC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085750 + ldrh r1, [r5, 0x26] + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_805FBDC + bl sub_80555E0 + bl sub_8055378 + ldr r1, _0808575C @ =gUnknown_3005020 + ldr r0, _08085760 @ =sub_80859D4 + str r0, [r1] + ldr r0, _08085764 @ =sub_805671C + bl sub_8000544 + ldr r0, _08085768 @ =sub_808563C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08085750: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08085758: .4byte gUnknown_2037AB8 +_0808575C: .4byte gUnknown_3005020 +_08085760: .4byte sub_80859D4 +_08085764: .4byte sub_805671C +_08085768: .4byte sub_808563C + thumb_func_end sub_8085690 + + thumb_func_start sub_808576C +sub_808576C: @ 808576C + push {r4-r7,lr} + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0808578A + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080857E4 +_0808578A: + ldrh r1, [r6] + movs r2, 0 + ldrsh r0, [r6, r2] + cmp r0, 0 + beq _0808579E + subs r0, r1, 0x1 + strh r0, [r6] + lsls r0, 16 + cmp r0, 0 + bne _080857E4 +_0808579E: + ldr r7, _080857E0 @ =gUnknown_83CC0E8 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r0, r7 + ldrb r0, [r0] + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r1, [r5] + movs r2, 0 + ldrsh r0, [r5, r2] + cmp r0, 0xB + bgt _080857C8 + adds r0, r1, 0x1 + strh r0, [r5] +_080857C8: + movs r0, 0 + ldrsh r1, [r5, r0] + movs r0, 0xC + asrs r0, r1 + strh r0, [r6] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r0, r7 + ldrb r0, [r0] + b _080857EA + .align 2, 0 +_080857E0: .4byte gUnknown_83CC0E8 +_080857E4: + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 +_080857EA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808576C + + thumb_func_start sub_80857F0 +sub_80857F0: @ 80857F0 + push {r4-r7,lr} + adds r7, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldrb r0, [r7, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08085818 @ =gUnknown_202063C + adds r4, r1, r0 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _08085830 + cmp r0, 0x1 + bgt _0808581C + cmp r0, 0 + beq _08085826 + b _0808589A + .align 2, 0 +_08085818: .4byte gUnknown_202063C +_0808581C: + cmp r0, 0x2 + beq _08085878 + cmp r0, 0x3 + beq _08085896 + b _0808589A +_08085826: + bl sub_805FAF8 + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_08085830: + ldrh r0, [r4, 0x26] + subs r0, 0x8 + strh r0, [r4, 0x26] + ldrh r0, [r6] + subs r0, 0x8 + strh r0, [r6] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bgt _0808589A + ldrb r0, [r7, 0x3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r7, 0x3] + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0 + strb r0, [r1] + adds r2, r4, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0808589A +_08085878: + ldrh r0, [r4, 0x26] + subs r0, 0x8 + strh r0, [r4, 0x26] + ldrh r0, [r6] + subs r0, 0x8 + strh r0, [r6] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x58 + negs r1, r1 + cmp r0, r1 + bgt _0808589A + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_08085896: + movs r0, 0 + b _0808589C +_0808589A: + movs r0, 0x1 +_0808589C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80857F0 + + thumb_func_start sub_80858A4 +sub_80858A4: @ 80858A4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + mov r9, r3 + ldr r0, [sp, 0x20] + mov r10, r0 + ldrb r0, [r6, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080858D8 @ =gUnknown_202063C + adds r4, r1, r0 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _08085948 + cmp r0, 0x1 + bgt _080858DC + cmp r0, 0 + beq _080858E6 + b _080859C2 + .align 2, 0 +_080858D8: .4byte gUnknown_202063C +_080858DC: + cmp r0, 0x2 + beq _0808599C + cmp r0, 0x3 + beq _080859BE + b _080859C2 +_080858E6: + bl sub_805FAF8 + movs r2, 0x58 + negs r2, r2 + adds r0, r2, 0 + strh r0, [r7] + ldrh r0, [r4, 0x26] + subs r0, 0x58 + movs r3, 0 + strh r0, [r4, 0x26] + ldrb r0, [r4, 0x5] + lsls r0, 28 + lsrs r0, 30 + mov r1, r9 + strh r0, [r1] + movs r2, 0x43 + adds r2, r4 + mov r8, r2 + ldrb r0, [r2] + mov r1, r10 + strh r0, [r1] + movs r2, 0x42 + adds r2, r4 + mov r12, r2 + ldrb r0, [r2] + lsrs r0, 6 + ldr r1, [sp, 0x24] + strh r0, [r1] + ldrb r0, [r6, 0x3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r6, 0x3] + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] + mov r2, r8 + strb r3, [r2] + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x3F + ands r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_08085948: + ldrh r0, [r4, 0x26] + adds r0, 0x4 + strh r0, [r4, 0x26] + ldrh r0, [r7] + adds r0, 0x4 + strh r0, [r7] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + blt _080859C2 + movs r0, 0x3 + mov r2, r9 + ldrb r1, [r2] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + mov r1, r10 + ldrh r0, [r1] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldr r2, [sp, 0x24] + ldrb r1, [r2] + adds r3, r4, 0 + adds r3, 0x42 + lsls r1, 6 + ldrb r2, [r3] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _080859C2 +_0808599C: + ldrh r0, [r4, 0x26] + adds r0, 0x4 + strh r0, [r4, 0x26] + ldrh r0, [r7] + adds r0, 0x4 + strh r0, [r7] + lsls r0, 16 + cmp r0, 0 + blt _080859C2 + movs r0, 0x1E + bl sub_80722CC + bl sub_805FAA8 + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_080859BE: + movs r0, 0 + b _080859C4 +_080859C2: + movs r0, 0x1 +_080859C4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80858A4 + + thumb_func_start sub_80859D4 +sub_80859D4: @ 80859D4 + push {lr} + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8111CF0 + bl sub_8069940 + bl sub_8068974 + ldr r1, _08085A14 @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] + ldr r2, _08085A18 @ =gUnknown_2036E38 + ldr r0, _08085A1C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0, 0x1] + ldr r0, _08085A20 @ =sub_8085A24 + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_08085A14: .4byte gUnknown_3005020 +_08085A18: .4byte gUnknown_2036E38 +_08085A1C: .4byte gUnknown_2037078 +_08085A20: .4byte sub_8085A24 + thumb_func_end sub_80859D4 + + thumb_func_start sub_8085A24 +sub_8085A24: @ 8085A24 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08085A4C @ =gUnknown_83CC0F0 + ldr r2, _08085A50 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08085A4C: .4byte gUnknown_83CC0F0 +_08085A50: .4byte gUnknown_3005090 + thumb_func_end sub_8085A24 + + thumb_func_start sub_8085A54 +sub_8085A54: @ 8085A54 + push {r4,lr} + adds r4, r0, 0 + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _08085A78 + movs r0, 0x28 + bl sub_80722CC + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08085A78: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8085A54 + + thumb_func_start sub_8085A80 +sub_8085A80: @ 8085A80 + push {r4-r7,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x8 + ldr r0, _08085AD4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085AD8 @ =gUnknown_2036E38 + adds r6, r0, r1 + adds r1, r4, 0 + adds r1, 0xA + adds r2, r4, 0 + adds r2, 0xC + adds r3, r4, 0 + adds r3, 0xE + adds r0, r5, 0 + adds r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r0, 0x12 + str r0, [sp, 0x4] + adds r0, r6, 0 + bl sub_80858A4 + adds r7, r0, 0 + ldrb r1, [r6, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r6, 0x1] + ldrh r1, [r5, 0xC] + movs r2, 0xC + ldrsh r0, [r5, r2] + cmp r0, 0x7 + bgt _08085ADC + adds r0, r1, 0x1 + strh r0, [r5, 0xC] + b _08085B10 + .align 2, 0 +_08085AD4: .4byte gUnknown_2037078 +_08085AD8: .4byte gUnknown_2036E38 +_08085ADC: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _08085B10 + adds r0, r1, 0x1 + strh r0, [r5, 0xC] + adds r1, r4, 0 + adds r1, 0x1A + adds r2, r4, 0 + adds r2, 0x1C + adds r0, r6, 0 + bl sub_808576C + lsls r0, 24 + lsrs r1, r0, 24 + strh r1, [r5, 0x10] + movs r2, 0xC + ldrsh r0, [r5, r2] + cmp r0, 0x31 + ble _08085B10 + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _08085B10 + movs r0, 0x1 + strh r0, [r5, 0xE] +_08085B10: + cmp r7, 0 + bne _08085B58 + movs r0, 0x10 + ldrsh r1, [r5, r0] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _08085B58 + adds r0, r6, 0 + bl sub_8063D68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085B58 + ldrb r1, [r6, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r6, 0x1] + ldrb r1, [r6, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r6, 0x3] + bl sub_806994C + bl sub_8068A5C + ldr r0, _08085B60 @ =sub_8085A24 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08085B58: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08085B60: .4byte sub_8085A24 + thumb_func_end sub_8085A80 + + thumb_func_start sub_8085B64 +sub_8085B64: @ 8085B64 + push {lr} + ldr r0, _08085B74 @ =sub_8085B78 + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_08085B74: .4byte sub_8085B78 + thumb_func_end sub_8085B64 + + thumb_func_start sub_8085B78 +sub_8085B78: @ 8085B78 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08085BA0 @ =gUnknown_83CC0F8 + ldr r2, _08085BA4 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08085BA0: .4byte gUnknown_83CC0F8 +_08085BA4: .4byte gUnknown_3005090 + thumb_func_end sub_8085B78 + + thumb_func_start sub_8085BA8 +sub_8085BA8: @ 8085BA8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069940 + bl sub_8068974 + bl sub_805FAF8 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8085BA8 + + thumb_func_start sub_8085BD0 +sub_8085BD0: @ 8085BD0 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _08085C54 @ =gUnknown_83CC108 + mov r0, sp + movs r2, 0x5 + bl memcpy + ldr r0, _08085C58 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085C5C @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08085C02 + subs r0, r1, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bne _08085C1C +_08085C02: + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_805F218 + movs r0, 0x8 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_08085C1C: + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x7 + ble _08085C4A + movs r2, 0x26 + ldrsh r1, [r4, r2] + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + cmp r1, r0 + bne _08085C4A + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x4 + strh r0, [r4, 0xA] + movs r0, 0x8 + strh r0, [r4, 0xC] + movs r0, 0x1 + strh r0, [r4, 0xE] + movs r0, 0x27 + bl sub_80722CC +_08085C4A: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08085C54: .4byte gUnknown_83CC108 +_08085C58: .4byte gUnknown_2037078 +_08085C5C: .4byte gUnknown_2036E38 + thumb_func_end sub_8085BD0 + + thumb_func_start sub_8085C60 +sub_8085C60: @ 8085C60 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _08085D24 @ =gUnknown_83CC108 + mov r0, sp + movs r2, 0x5 + bl memcpy + ldr r2, _08085D28 @ =gUnknown_2037078 + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085D2C @ =gUnknown_2036E38 + adds r3, r0, r1 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085D30 @ =gUnknown_202063C + adds r5, r0, r1 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bgt _08085CAA + movs r0, 0x4 + strh r0, [r4, 0xA] + ldrb r0, [r3, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_805F218 +_08085CAA: + ldrh r0, [r5, 0x22] + ldrh r1, [r4, 0xE] + subs r0, r1 + strh r0, [r5, 0x22] + ldrh r1, [r4, 0xE] + ldrh r2, [r4, 0x10] + adds r0, r1, r2 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bgt _08085CD6 + movs r0, 0x4 + strh r0, [r4, 0xC] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x7 + bgt _08085CD6 + lsls r0, r1, 1 + strh r0, [r4, 0xE] +_08085CD6: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + ble _08085D04 + ldrb r1, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r5, 0x5] + adds r2, r5, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + beq _08085D04 + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] +_08085D04: + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0xA7 + ble _08085D1A + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + bl sub_8055F88 + bl sub_807DC18 +_08085D1A: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08085D24: .4byte gUnknown_83CC108 +_08085D28: .4byte gUnknown_2037078 +_08085D2C: .4byte gUnknown_2036E38 +_08085D30: .4byte gUnknown_202063C + thumb_func_end sub_8085C60 + + thumb_func_start sub_8085D34 +sub_8085D34: @ 8085D34 + push {lr} + ldr r0, _08085D74 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08085D70 + bl sub_8055FC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085D70 + bl sub_80554A4 + bl sub_8055378 + ldr r0, _08085D78 @ =sub_805671C + bl sub_8000544 + ldr r1, _08085D7C @ =gUnknown_3005020 + ldr r0, _08085D80 @ =sub_8085D88 + str r0, [r1] + ldr r0, _08085D84 @ =sub_8085B78 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08085D70: + pop {r0} + bx r0 + .align 2, 0 +_08085D74: .4byte gUnknown_2037AB8 +_08085D78: .4byte sub_805671C +_08085D7C: .4byte gUnknown_3005020 +_08085D80: .4byte sub_8085D88 +_08085D84: .4byte sub_8085B78 + thumb_func_end sub_8085D34 + + thumb_func_start sub_8085D88 +sub_8085D88: @ 8085D88 + push {lr} + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8111CF0 + bl sub_8069940 + bl sub_8068974 + ldr r1, _08085DCC @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] + ldr r2, _08085DD0 @ =gUnknown_2036E38 + ldr r0, _08085DD4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0, 0x1] + bl sub_805FAF8 + ldr r0, _08085DD8 @ =sub_8085DDC + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_08085DCC: .4byte gUnknown_3005020 +_08085DD0: .4byte gUnknown_2036E38 +_08085DD4: .4byte gUnknown_2037078 +_08085DD8: .4byte sub_8085DDC + thumb_func_end sub_8085D88 + + thumb_func_start sub_8085DDC +sub_8085DDC: @ 8085DDC + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08085E04 @ =gUnknown_83CC110 + ldr r2, _08085E08 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08085E04: .4byte gUnknown_83CC110 +_08085E08: .4byte gUnknown_3005090 + thumb_func_end sub_8085DDC + + thumb_func_start sub_8085E0C +sub_8085E0C: @ 8085E0C + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _08085E82 + ldr r5, _08085E88 @ =gUnknown_2037078 + ldrb r0, [r5, 0x4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _08085E8C @ =gUnknown_202063C + adds r2, r0 + adds r0, r2, 0 + adds r0, 0x29 + movs r4, 0 + ldrsb r4, [r0, r4] + lsls r0, r4, 17 + negs r0, r0 + ldrh r1, [r2, 0x22] + ldr r3, _08085E90 @ =gUnknown_2021BCA + adds r1, r4 + ldrh r3, [r3] + adds r1, r3 + asrs r0, 16 + adds r0, r1 + negs r0, r0 + strh r0, [r2, 0x26] + ldr r3, _08085E94 @ =gUnknown_2036E38 + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r3, [r1, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r3 + strb r0, [r1, 0x1] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + movs r0, 0x8 + strh r0, [r6, 0xA] + movs r0, 0x1 + strh r0, [r6, 0xC] + adds r2, 0x42 + ldrb r0, [r2] + lsrs r0, 6 + strh r0, [r6, 0x24] + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x26] + movs r0, 0x27 + bl sub_80722CC +_08085E82: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08085E88: .4byte gUnknown_2037078 +_08085E8C: .4byte gUnknown_202063C +_08085E90: .4byte gUnknown_2021BCA +_08085E94: .4byte gUnknown_2036E38 + thumb_func_end sub_8085E0C + + thumb_func_start sub_8085E98 +sub_8085E98: @ 8085E98 + push {r4-r7,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _08085F00 @ =gUnknown_83CC108 + mov r0, sp + movs r2, 0x5 + bl memcpy + ldr r2, _08085F04 @ =gUnknown_2037078 + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085F08 @ =gUnknown_2036E38 + adds r6, r0, r1 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08085F0C @ =gUnknown_202063C + adds r5, r0, r1 + ldrh r0, [r4, 0xA] + ldrh r1, [r5, 0x26] + adds r0, r1 + strh r0, [r5, 0x26] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x8 + negs r1, r1 + cmp r0, r1 + blt _08085F10 + ldrh r1, [r4, 0x22] + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08085F36 + adds r0, r1, 0x1 + strh r0, [r4, 0x22] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + ldrh r1, [r4, 0x24] + adds r3, r5, 0 + adds r3, 0x42 + lsls r1, 6 + ldrb r2, [r3] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08085F36 + .align 2, 0 +_08085F00: .4byte gUnknown_83CC108 +_08085F04: .4byte gUnknown_2037078 +_08085F08: .4byte gUnknown_2036E38 +_08085F0C: .4byte gUnknown_202063C +_08085F10: + ldrb r1, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r5, 0x5] + adds r2, r5, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + beq _08085F36 + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] +_08085F36: + ldrh r2, [r5, 0x26] + movs r3, 0x26 + ldrsh r1, [r5, r3] + movs r0, 0x30 + negs r0, r0 + cmp r1, r0 + blt _08085F5A + ldrh r1, [r4, 0xA] + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0x1 + ble _08085F5A + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + bne _08085F5A + subs r0, r1, 0x1 + strh r0, [r4, 0xA] +_08085F5A: + ldrh r0, [r4, 0xC] + subs r0, 0x1 + movs r7, 0 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _08085F7C + movs r0, 0x4 + strh r0, [r4, 0xC] + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_805F218 +_08085F7C: + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r0, 0 + blt _08085F92 + strh r7, [r5, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x1 + strh r0, [r4, 0xA] + strh r7, [r4, 0xC] +_08085F92: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8085E98 + + thumb_func_start sub_8085F9C +sub_8085F9C: @ 8085F9C + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _08086018 @ =gUnknown_83CC108 + mov r0, sp + movs r2, 0x5 + bl memcpy + ldr r0, _0808601C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086020 @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bne _08086010 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_805F218 + movs r0, 0x8 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _08086010 + movs r0, 0x24 + ldrsh r1, [r4, r0] + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + cmp r1, r0 + bne _08086010 + bl sub_806994C + bl sub_805FAA8 + bl sub_8068A5C + ldr r0, _08086024 @ =sub_8085DDC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08086010: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08086018: .4byte gUnknown_83CC108 +_0808601C: .4byte gUnknown_2037078 +_08086020: .4byte gUnknown_2036E38 +_08086024: .4byte sub_8085DDC + thumb_func_end sub_8085F9C + + thumb_func_start sub_8086028 +sub_8086028: @ 8086028 + push {r4,lr} + bl sub_8056188 + lsls r0, 24 + lsrs r0, 24 + bl sub_80561D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08086048 + ldr r0, _08086044 @ =sub_80860E0 + b _0808604A + .align 2, 0 +_08086044: .4byte sub_80860E0 +_08086048: + ldr r0, _08086078 @ =sub_8086468 +_0808604A: + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _0808607C @ =gUnknown_20386E0 + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [r2, 0x8] + bl sub_8086860 + ldr r2, _08086080 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x26] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08086078: .4byte sub_8086468 +_0808607C: .4byte gUnknown_20386E0 +_08086080: .4byte gUnknown_3005090 + thumb_func_end sub_8086028 + + thumb_func_start sub_8086084 +sub_8086084: @ 8086084 + push {r4-r6,lr} + ldr r5, _080860D8 @ =gUnknown_20386E0 + ldr r0, [r5] + movs r6, 0x80 + lsls r6, 24 + ands r6, r0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _080860DC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + str r0, [r5] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [r5, 0x4] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [r5, 0x8] + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + movs r0, 0x6 + bl sub_8083444 + movs r0, 0x3B + bl sub_80837FC + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080860D8: .4byte gUnknown_20386E0 +_080860DC: .4byte gUnknown_2024284 + thumb_func_end sub_8086084 + + thumb_func_start sub_80860E0 +sub_80860E0: @ 80860E0 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08086108 @ =gUnknown_83CC11C + ldr r2, _0808610C @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08086108: .4byte gUnknown_83CC11C +_0808610C: .4byte gUnknown_3005090 + thumb_func_end sub_80860E0 + + thumb_func_start sub_8086110 +sub_8086110: @ 8086110 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x48 + bl sub_8000AC4 + strh r0, [r4, 0x1E] + movs r0, 0x4A + bl sub_8000AC4 + strh r0, [r4, 0x20] + adds r0, r4, 0 + adds r0, 0x22 + ldr r1, _08086170 @ =gUnknown_30030F0 + ldr r1, [r1, 0xC] + bl sub_8044F34 + ldr r1, _08086174 @ =0x0000f0f1 + strh r1, [r4, 0xA] + ldr r0, _08086178 @ =0x00005051 + strh r0, [r4, 0xC] + movs r0, 0x3F + strh r0, [r4, 0xE] + movs r0, 0x3E + strh r0, [r4, 0x10] + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x44 + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x48 + bl sub_8000A38 + ldrh r1, [r4, 0x10] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, _0808617C @ =sub_80863C0 + bl sub_80006F4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086170: .4byte gUnknown_30030F0 +_08086174: .4byte 0x0000f0f1 +_08086178: .4byte 0x00005051 +_0808617C: .4byte sub_80863C0 + thumb_func_end sub_8086110 + + thumb_func_start sub_8086180 +sub_8086180: @ 8086180 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + mov r8, r0 + movs r0, 0x8 + bl sub_8000AC4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 18 + lsls r4, 30 + lsrs r4, 16 + movs r0, 0x8 + bl sub_8000AC4 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 24 + lsls r5, 27 + lsrs r5, 16 + ldr r0, _080861F0 @ =gUnknown_83CB5F0 + movs r6, 0xC0 + lsls r6, 19 + adds r4, r6 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, 0 + bl CpuSet + movs r0, 0 + str r0, [sp] + adds r6, r5, r6 + ldr r2, _080861F4 @ =0x05000200 + mov r0, sp + adds r1, r6, 0 + bl CpuSet + ldr r0, _080861F8 @ =gUnknown_83CB7F0 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r5, 0 + bl sub_8086428 + mov r1, r8 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080861F0: .4byte gUnknown_83CB5F0 +_080861F4: .4byte 0x05000200 +_080861F8: .4byte gUnknown_83CB7F0 + thumb_func_end sub_8086180 + + thumb_func_start sub_80861FC +sub_80861FC: @ 80861FC + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x12] + subs r0, 0x10 + strh r0, [r3, 0x12] + ldrh r6, [r3, 0xA] + ldrh r2, [r3, 0xC] + movs r7, 0xFF + lsrs r1, r6, 8 + subs r1, 0x10 + lsls r1, 16 + lsrs r0, r2, 8 + subs r0, 0x2 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r7, 0 + ands r0, r2 + adds r5, r0, 0x2 + lsrs r2, r1, 16 + cmp r1, 0 + bge _08086228 + movs r2, 0 +_08086228: + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, 0x27 + bgt _08086232 + movs r4, 0x28 +_08086232: + cmp r5, 0x78 + ble _08086238 + movs r5, 0x78 +_08086238: + lsls r2, 16 + asrs r2, 16 + lsls r1, r2, 8 + adds r0, r7, 0 + ands r0, r6 + orrs r1, r0 + strh r1, [r3, 0xA] + lsls r0, r4, 16 + asrs r4, r0, 16 + lsls r0, r4, 8 + adds r1, r5, 0 + orrs r0, r1 + strh r0, [r3, 0xC] + cmp r2, 0 + bne _08086278 + cmp r4, 0x28 + bne _08086278 + cmp r1, 0x78 + bne _08086278 + ldr r2, _08086280 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08086284 @ =sub_80868C0 + str r1, [r0] + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_08086278: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08086280: .4byte gUnknown_202063C +_08086284: .4byte sub_80868C0 + thumb_func_end sub_80861FC + + thumb_func_start sub_8086288 +sub_8086288: @ 8086288 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x12] + subs r0, 0x10 + strh r0, [r3, 0x12] + ldr r2, _080862B4 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3C + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080862AE + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_080862AE: + pop {r0} + bx r0 + .align 2, 0 +_080862B4: .4byte gUnknown_202063C + thumb_func_end sub_8086288 + + thumb_func_start sub_80862B8 +sub_80862B8: @ 80862B8 + push {r4,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x12] + subs r0, 0x10 + strh r0, [r3, 0x12] + ldrh r2, [r3, 0xC] + lsls r1, r2, 16 + movs r0, 0xFF + asrs r1, 24 + adds r1, 0x6 + lsls r1, 16 + ands r0, r2 + subs r0, 0x6 + lsls r0, 16 + lsrs r2, r0, 16 + lsrs r4, r1, 16 + asrs r1, 16 + cmp r1, 0x50 + ble _080862E0 + movs r4, 0x50 +_080862E0: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x50 + bgt _080862EA + movs r2, 0x51 +_080862EA: + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r0, 8 + lsls r2, 16 + asrs r2, 16 + orrs r1, r2 + strh r1, [r3, 0xC] + cmp r0, 0x50 + bne _08086306 + cmp r2, 0x51 + bne _08086306 + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] +_08086306: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80862B8 + + thumb_func_start sub_808630C +sub_808630C: @ 808630C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r0, 0x8 + bl sub_8000AC4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 24 + lsls r1, 27 + lsrs r1, 16 + movs r0, 0 + str r0, [sp] + movs r0, 0xC0 + lsls r0, 19 + adds r1, r0 + ldr r2, _08086354 @ =0x05000200 + mov r0, sp + bl CpuSet + movs r0, 0xF1 + strh r0, [r4, 0xA] + movs r0, 0xA1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x1E] + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x10] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086354: .4byte 0x05000200 + thumb_func_end sub_808630C + + thumb_func_start sub_8086358 +sub_8086358: @ 8086358 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r0, 0x22 + mov r1, sp + bl sub_8044F3C + ldr r0, [sp] + bl sub_80006F4 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + bl sub_80F77B8 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080863B8 @ =gUnknown_202063C + adds r0, r1 + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + bl sub_8083A5C + movs r0, 0x6 + bl sub_80837FC + ldr r0, _080863BC @ =sub_80860E0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080863B8: .4byte gUnknown_202063C +_080863BC: .4byte sub_80860E0 + thumb_func_end sub_8086358 + + thumb_func_start sub_80863C0 +sub_80863C0: @ 80863C0 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08086420 @ =sub_80860E0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _08086424 @ =gUnknown_3005090 + adds r4, r0 + adds r0, r4, 0 + adds r0, 0x22 + mov r1, sp + bl sub_8044F3C + ldr r0, [sp] + bl _call_via_r0 + ldrh r1, [r4, 0xA] + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x44 + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x48 + bl sub_8000A38 + ldrh r1, [r4, 0x10] + movs r0, 0x4A + bl sub_8000A38 + ldrh r1, [r4, 0x12] + movs r0, 0x10 + bl sub_8000A38 + ldrh r1, [r4, 0x14] + movs r0, 0x12 + bl sub_8000A38 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086420: .4byte sub_80860E0 +_08086424: .4byte gUnknown_3005090 + thumb_func_end sub_80863C0 + + thumb_func_start sub_8086428 +sub_8086428: @ 8086428 + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0808645C @ =0x06000140 + adds r2, r0, r1 + movs r1, 0 + ldr r5, _08086460 @ =gUnknown_83CB810 + movs r0, 0xF0 + lsls r0, 8 + adds r4, r0, 0 + ldr r3, _08086464 @ =0x0000013f +_0808643E: + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + orrs r0, r4 + strh r0, [r2] + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + adds r2, 0x2 + cmp r1, r3 + bls _0808643E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808645C: .4byte 0x06000140 +_08086460: .4byte gUnknown_83CB810 +_08086464: .4byte 0x0000013f + thumb_func_end sub_8086428 + + thumb_func_start sub_8086468 +sub_8086468: @ 8086468 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08086490 @ =gUnknown_83CC138 + ldr r2, _08086494 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08086490: .4byte gUnknown_83CC138 +_08086494: .4byte gUnknown_3005090 + thumb_func_end sub_8086468 + + thumb_func_start sub_8086498 +sub_8086498: @ 8086498 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0xA] + movs r0, 0x10 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x12 + bl sub_8000A38 + adds r0, r4, 0 + adds r0, 0x22 + ldr r1, _080864CC @ =gUnknown_30030F0 + ldr r1, [r1, 0xC] + bl sub_8044F34 + ldr r0, _080864D0 @ =sub_80866E0 + bl sub_80006F4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080864CC: .4byte gUnknown_30030F0 +_080864D0: .4byte sub_80866E0 + thumb_func_end sub_8086498 + + thumb_func_start sub_80864D4 +sub_80864D4: @ 80864D4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r9, r0 + movs r0, 0x8 + bl sub_8000AC4 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 18 + lsls r5, 30 + lsrs r5, 16 + movs r0, 0x8 + bl sub_8000AC4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 24 + lsls r4, 27 + lsrs r4, 16 + movs r0, 0 + mov r8, r0 + mov r1, r9 + strh r4, [r1, 0x20] + ldr r0, _08086548 @ =gUnknown_83CBA90 + movs r6, 0xC0 + lsls r6, 19 + adds r5, r6 + adds r1, r5, 0 + movs r2, 0x40 + bl CpuSet + mov r0, r8 + str r0, [sp] + adds r4, r6 + ldr r2, _0808654C @ =0x05000200 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + ldr r0, _08086550 @ =gUnknown_83CBB10 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + mov r1, r9 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08086548: .4byte gUnknown_83CBA90 +_0808654C: .4byte 0x05000200 +_08086550: .4byte gUnknown_83CBB10 + thumb_func_end sub_80864D4 + + thumb_func_start sub_8086554 +sub_8086554: @ 8086554 + push {r4,lr} + adds r4, r0, 0 + bl sub_8086738 + lsls r0, 24 + cmp r0, 0 + beq _080865A6 + movs r0, 0x48 + bl sub_8000AC4 + strh r0, [r4, 0x12] + movs r1, 0xFF + ands r1, r0 + movs r2, 0x88 + lsls r2, 5 + adds r0, r2, 0 + orrs r1, r0 + movs r0, 0x48 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0xF0 + bl sub_8000A38 + ldr r1, _080865B4 @ =0x00002878 + movs r0, 0x46 + bl sub_8000A38 + ldr r2, _080865B8 @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _080865BC @ =sub_80868C0 + str r1, [r0] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080865A6: + adds r0, r4, 0 + bl sub_8086728 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080865B4: .4byte 0x00002878 +_080865B8: .4byte gUnknown_202063C +_080865BC: .4byte sub_80868C0 + thumb_func_end sub_8086554 + + thumb_func_start sub_80865C0 +sub_80865C0: @ 80865C0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8086728 + ldr r2, _080865EC @ =gUnknown_202063C + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3C + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080865E4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080865E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080865EC: .4byte gUnknown_202063C + thumb_func_end sub_80865C0 + + thumb_func_start sub_80865F0 +sub_80865F0: @ 80865F0 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8086728 + ldrh r1, [r4, 0xA] + movs r0, 0x7 + ands r0, r1 + movs r1, 0 + strh r0, [r4, 0xE] + strh r1, [r4, 0x10] + ldr r5, _0808662C @ =0x0000ffff + movs r0, 0x42 + adds r1, r5, 0 + bl sub_8000A38 + movs r0, 0x46 + adds r1, r5, 0 + bl sub_8000A38 + ldrh r1, [r4, 0x12] + movs r0, 0x48 + bl sub_8000A38 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808662C: .4byte 0x0000ffff + thumb_func_end sub_80865F0 + + thumb_func_start sub_8086630 +sub_8086630: @ 8086630 + push {r4,lr} + adds r4, r0, 0 + bl sub_8086728 + adds r0, r4, 0 + bl sub_80867F0 + lsls r0, 24 + cmp r0, 0 + beq _0808664A + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0808664A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8086630 + + thumb_func_start sub_8086650 +sub_8086650: @ 8086650 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + movs r0, 0x8 + bl sub_8000AC4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 24 + lsls r1, 27 + lsrs r1, 16 + movs r0, 0 + str r0, [sp] + movs r0, 0xC0 + lsls r0, 19 + adds r1, r0 + ldr r2, _080866D4 @ =0x05000200 + mov r0, sp + bl CpuSet + adds r0, r4, 0 + adds r0, 0x22 + add r1, sp, 0x4 + bl sub_8044F3C + ldr r0, [sp, 0x4] + bl sub_80006F4 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + bl sub_80F77B8 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080866D8 @ =gUnknown_202063C + adds r0, r1 + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + bl sub_8083A5C + movs r0, 0x6 + bl sub_80837FC + ldr r0, _080866DC @ =sub_8086468 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080866D4: .4byte 0x05000200 +_080866D8: .4byte gUnknown_202063C +_080866DC: .4byte sub_8086468 + thumb_func_end sub_8086650 + + thumb_func_start sub_80866E0 +sub_80866E0: @ 80866E0 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08086720 @ =sub_8086468 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _08086724 @ =gUnknown_3005090 + adds r4, r0 + adds r0, r4, 0 + adds r0, 0x22 + mov r1, sp + bl sub_8044F3C + ldr r0, [sp] + bl _call_via_r0 + ldrh r1, [r4, 0xA] + movs r0, 0x10 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x12 + bl sub_8000A38 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086720: .4byte sub_8086468 +_08086724: .4byte gUnknown_3005090 + thumb_func_end sub_80866E0 + + thumb_func_start sub_8086728 +sub_8086728: @ 8086728 + ldrh r1, [r0, 0xA] + subs r1, 0x10 + strh r1, [r0, 0xA] + ldrh r1, [r0, 0xE] + adds r1, 0x10 + strh r1, [r0, 0xE] + bx lr + thumb_func_end sub_8086728 + + thumb_func_start sub_8086738 +sub_8086738: @ 8086738 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r2, [r5, 0x10] + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r0, 0x1F + ble _08086754 + movs r0, 0x1 + b _080867D8 +_08086754: + ldrh r0, [r5, 0xE] + lsls r0, 16 + asrs r3, r0, 19 + movs r1, 0x1F + ands r3, r1 + movs r4, 0x10 + ldrsh r0, [r5, r4] + cmp r3, r0 + blt _080867D6 + movs r0, 0x20 + subs r3, r0, r3 + ands r3, r1 + subs r0, r2 + mov r12, r0 + mov r7, r12 + ands r7, r1 + mov r12, r7 + ldrh r0, [r5, 0x20] + ldr r1, _080867E8 @ =0x06000140 + adds r1, r0 + mov r8, r1 + movs r4, 0 + ldr r7, _080867EC @ =gUnknown_83CBB30 + mov r10, r7 + movs r0, 0xF0 + lsls r0, 8 + mov r9, r0 + adds r1, r3, 0x1 + movs r0, 0x1F + ands r1, r0 + str r1, [sp] + mov r6, r12 + adds r6, 0x1 + ands r6, r0 +_08086798: + lsls r1, r4, 5 + adds r2, r1, r3 + lsls r2, 1 + add r2, r8 + mov r7, r12 + adds r0, r7, r1 + lsls r0, 1 + add r0, r10 + ldrh r0, [r0] + mov r7, r9 + orrs r0, r7 + strh r0, [r2] + ldr r0, [sp] + adds r2, r1, r0 + lsls r2, 1 + add r2, r8 + adds r1, r6, r1 + lsls r1, 1 + add r1, r10 + ldrh r0, [r1] + mov r1, r9 + orrs r0, r1 + strh r0, [r2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x9 + bls _08086798 + ldrh r0, [r5, 0x10] + adds r0, 0x2 + strh r0, [r5, 0x10] +_080867D6: + movs r0, 0 +_080867D8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080867E8: .4byte 0x06000140 +_080867EC: .4byte gUnknown_83CBB30 + thumb_func_end sub_8086738 + + thumb_func_start sub_80867F0 +sub_80867F0: @ 80867F0 + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r0, 0x1F + ble _08086800 + movs r0, 0x1 + b _08086854 +_08086800: + ldrh r0, [r5, 0xE] + lsls r0, 16 + asrs r0, 19 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r2, r0 + blt _08086852 + ldrh r0, [r5, 0xA] + lsls r0, 16 + asrs r2, r0, 19 + movs r0, 0x1F + ands r2, r0 + ldrh r0, [r5, 0x20] + ldr r1, _0808685C @ =0x06000140 + adds r6, r0, r1 + movs r3, 0 + movs r0, 0xF0 + lsls r0, 8 + adds r7, r0, 0 + adds r4, r2, 0x1 + movs r0, 0x1F + ands r4, r0 +_08086830: + lsls r0, r3, 5 + adds r1, r0, r2 + lsls r1, 1 + adds r1, r6 + strh r7, [r1] + adds r0, r4 + lsls r0, 1 + adds r0, r6 + strh r7, [r0] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x9 + bls _08086830 + ldrh r0, [r5, 0x10] + adds r0, 0x2 + strh r0, [r5, 0x10] +_08086852: + movs r0, 0 +_08086854: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0808685C: .4byte 0x06000140 + thumb_func_end sub_80867F0 + + thumb_func_start sub_8086860 +sub_8086860: @ 8086860 + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + movs r5, 0x80 + lsls r5, 24 + ands r5, r6 + lsrs r5, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _080868B4 @ =0x7fffffff + ands r6, r0 + lsls r0, r6, 16 + lsrs r0, 16 + movs r3, 0xA0 + lsls r3, 1 + movs r4, 0x50 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + bl sub_80839D4 + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r1, _080868B8 @ =gUnknown_202063C + adds r2, r1 + ldr r1, _080868BC @ =nullsub_8 + str r1, [r2, 0x1C] + ldrb r3, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + strb r1, [r2, 0x5] + strh r6, [r2, 0x2E] + strh r5, [r2, 0x3A] + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080868B4: .4byte 0x7fffffff +_080868B8: .4byte gUnknown_202063C +_080868BC: .4byte nullsub_8 + thumb_func_end sub_8086860 + + thumb_func_start sub_80868C0 +sub_80868C0: @ 80868C0 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x20] + subs r0, 0x14 + strh r0, [r1, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x78 + bgt _08086900 + movs r0, 0x78 + strh r0, [r1, 0x20] + movs r0, 0x1E + strh r0, [r1, 0x30] + ldr r0, _080868F4 @ =sub_8086904 + str r0, [r1, 0x1C] + movs r2, 0x3A + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080868F8 + ldrh r0, [r1, 0x2E] + movs r1, 0 + movs r2, 0x7D + movs r3, 0xA + bl sub_8071E3C + b _08086900 + .align 2, 0 +_080868F4: .4byte sub_8086904 +_080868F8: + ldrh r0, [r1, 0x2E] + movs r1, 0 + bl sub_8071DF0 +_08086900: + pop {r0} + bx r0 + thumb_func_end sub_80868C0 + + thumb_func_start sub_8086904 +sub_8086904: @ 8086904 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _08086918 + ldr r0, _0808691C @ =sub_8086920 + str r0, [r1, 0x1C] +_08086918: + pop {r0} + bx r0 + .align 2, 0 +_0808691C: .4byte sub_8086920 + thumb_func_end sub_8086904 + + thumb_func_start sub_8086920 +sub_8086920: @ 8086920 + push {lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x20] + movs r0, 0x20 + ldrsh r1, [r2, r0] + movs r0, 0x40 + negs r0, r0 + cmp r1, r0 + bge _08086938 + movs r0, 0x1 + strh r0, [r2, 0x3C] + b _0808693E +_08086938: + adds r0, r3, 0 + subs r0, 0x14 + strh r0, [r2, 0x20] +_0808693E: + pop {r0} + bx r0 + thumb_func_end sub_8086920 + + thumb_func_start sub_8086944 +sub_8086944: @ 8086944 + push {r4,lr} + ldr r0, _08086980 @ =sub_8086990 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08086984 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _08086988 @ =gUnknown_20386E0 + ldr r0, [r0] + strh r0, [r1, 0x26] + bl sub_8055E84 + ldr r4, _0808698C @ =0x00000131 + adds r0, r4, 0 + bl sub_8056124 + cmp r0, 0 + beq _08086978 + adds r0, r4, 0 + bl sub_8055F48 +_08086978: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08086980: .4byte sub_8086990 +_08086984: .4byte gUnknown_3005090 +_08086988: .4byte gUnknown_20386E0 +_0808698C: .4byte 0x00000131 + thumb_func_end sub_8086944 + + thumb_func_start sub_8086990 +sub_8086990: @ 8086990 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _080869B8 @ =gUnknown_83CC154 + ldr r2, _080869BC @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080869B8: .4byte gUnknown_83CC154 +_080869BC: .4byte gUnknown_3005090 + thumb_func_end sub_8086990 + + thumb_func_start sub_80869C0 +sub_80869C0: @ 80869C0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + bl sub_8069940 + bl sub_8068974 + ldr r5, _08086A18 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r5, 0x6] + movs r0, 0x8 + bl sub_805C970 + adds r6, r4, 0 + adds r6, 0xA + movs r0, 0xC + adds r0, r4 + mov r8, r0 + adds r0, r6, 0 + mov r1, r8 + bl sub_805C538 + ldr r2, _08086A1C @ =gUnknown_2036E38 + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsrs r0, 4 + adds r1, r6, 0 + mov r2, r8 + bl sub_8063A20 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08086A18: .4byte gUnknown_2037078 +_08086A1C: .4byte gUnknown_2036E38 + thumb_func_end sub_80869C0 + + thumb_func_start sub_8086A20 +sub_8086A20: @ 8086A20 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08086A64 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086A68 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _08086A4A + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086A5C +_08086A4A: + bl sub_805CB70 + adds r0, r4, 0 + movs r1, 0x45 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_08086A5C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08086A64: .4byte gUnknown_2037078 +_08086A68: .4byte gUnknown_2036E38 + thumb_func_end sub_8086A20 + + thumb_func_start sub_8086A6C +sub_8086A6C: @ 8086A6C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08086AA8 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086AAC @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D68 + lsls r0, 24 + cmp r0, 0 + beq _08086AA2 + ldr r2, _08086AB0 @ =gUnknown_20386E0 + movs r1, 0x26 + ldrsh r0, [r4, r1] + movs r1, 0x80 + lsls r1, 24 + orrs r0, r1 + str r0, [r2] + movs r0, 0x3B + bl sub_8083444 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08086AA2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086AA8: .4byte gUnknown_2037078 +_08086AAC: .4byte gUnknown_2036E38 +_08086AB0: .4byte gUnknown_20386E0 + thumb_func_end sub_8086A6C + + thumb_func_start sub_8086AB4 +sub_8086AB4: @ 8086AB4 + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0x6 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08086B1E + ldr r5, _08086B24 @ =gUnknown_2037078 + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08086B28 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x2 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + adds r0, r4, 0 + bl sub_8063D7C + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_80641C0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldr r1, _08086B2C @ =gUnknown_20386E0 + movs r2, 0xA + ldrsh r0, [r6, r2] + str r0, [r1] + movs r2, 0xC + ldrsh r0, [r6, r2] + str r0, [r1, 0x4] + ldrb r0, [r5, 0x5] + str r0, [r1, 0x8] + movs r0, 0x8 + bl sub_8083444 + strb r0, [r4, 0x1A] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_08086B1E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08086B24: .4byte gUnknown_2037078 +_08086B28: .4byte gUnknown_2036E38 +_08086B2C: .4byte gUnknown_20386E0 + thumb_func_end sub_8086AB4 + + thumb_func_start sub_8086B30 +sub_8086B30: @ 8086B30 + push {r4,r5,lr} + ldr r5, _08086B9C @ =gUnknown_2037078 + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086BA0 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086B96 + movs r0, 0 + strb r0, [r5, 0x6] + ldrb r1, [r5] + movs r0, 0xDF + ands r0, r1 + strb r0, [r5] + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrb r0, [r4, 0x1A] + movs r1, 0x1 + bl sub_80DC44C + bl sub_8068A5C + bl sub_806994C + movs r0, 0x9 + bl sub_80837FC + ldr r0, _08086BA4 @ =sub_8086990 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0x16 + bl sub_812B1F0 +_08086B96: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08086B9C: .4byte gUnknown_2037078 +_08086BA0: .4byte gUnknown_2036E38 +_08086BA4: .4byte sub_8086990 + thumb_func_end sub_8086B30 + + thumb_func_start sub_8086BA8 +sub_8086BA8: @ 8086BA8 + push {lr} + ldr r0, _08086BC8 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x1 + bne _08086BBA + movs r0, 0x8 + movs r1, 0x59 + bl sub_811278C +_08086BBA: + ldr r0, _08086BCC @ =sub_8086BD0 + movs r1, 0xFF + bl sub_807741C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08086BC8: .4byte gUnknown_203ADFA +_08086BCC: .4byte sub_8086BD0 + thumb_func_end sub_8086BA8 + + thumb_func_start sub_8086BD0 +sub_8086BD0: @ 8086BD0 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08086BF8 @ =gUnknown_83CC168 + ldr r2, _08086BFC @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08086BF8: .4byte gUnknown_83CC168 +_08086BFC: .4byte gUnknown_3005090 + thumb_func_end sub_8086BD0 + + thumb_func_start sub_8086C00 +sub_8086C00: @ 8086C00 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069940 + bl sub_8068974 + ldr r1, _08086C20 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086C20: .4byte gUnknown_2037078 + thumb_func_end sub_8086C00 + + thumb_func_start sub_8086C24 +sub_8086C24: @ 8086C24 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08086C68 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086C6C @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _08086C4E + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086C60 +_08086C4E: + bl sub_805CBE8 + adds r0, r4, 0 + movs r1, 0x45 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_08086C60: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08086C68: .4byte gUnknown_2037078 +_08086C6C: .4byte gUnknown_2036E38 + thumb_func_end sub_8086C24 + + thumb_func_start sub_8086C70 +sub_8086C70: @ 8086C70 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _08086C9C @ =gUnknown_2037078 + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086CA0 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086CEE + ldrb r1, [r5] + movs r0, 0x6 + ands r0, r1 + cmp r0, 0 + beq _08086CA4 + movs r0, 0x1 + b _08086CAE + .align 2, 0 +_08086C9C: .4byte gUnknown_2037078 +_08086CA0: .4byte gUnknown_2036E38 +_08086CA4: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08086CC0 + movs r0, 0x2 +_08086CAE: + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + b _08086CD2 +_08086CC0: + movs r0, 0 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 +_08086CD2: + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063D00 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_08086CEE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8086C70 + + thumb_func_start sub_8086CF4 +sub_8086CF4: @ 8086CF4 + push {r4,lr} + ldr r4, _08086D2C @ =gUnknown_2037078 + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086D30 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086D26 + movs r0, 0 + strb r0, [r4, 0x6] + movs r0, 0x41 + bl sub_80837FC + ldr r0, _08086D34 @ =sub_8086BD0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_08086D26: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086D2C: .4byte gUnknown_2037078 +_08086D30: .4byte gUnknown_2036E38 +_08086D34: .4byte sub_8086BD0 + thumb_func_end sub_8086CF4 + + thumb_func_start sub_8086D38 +sub_8086D38: @ 8086D38 + push {r4,lr} + ldr r0, _08086D84 @ =gUnknown_83A0010 + ldr r0, [r0, 0x68] + movs r1, 0x78 + movs r2, 0 + movs r3, 0x1 + bl sub_8006F8C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r2, r4, 4 + adds r2, r4 + lsls r2, 2 + ldr r0, _08086D88 @ =gUnknown_202063C + adds r2, r0 + ldrb r1, [r2, 0x5] + movs r0, 0xF + ands r0, r1 + movs r1, 0xD + negs r1, r1 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, _08086D8C @ =sub_8086D94 + str r0, [r2, 0x1C] + ldr r0, _08086D90 @ =gUnknown_20386E0 + ldr r0, [r0] + strh r0, [r2, 0x30] + movs r0, 0x97 + bl sub_80722CC + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08086D84: .4byte gUnknown_83A0010 +_08086D88: .4byte gUnknown_202063C +_08086D8C: .4byte sub_8086D94 +_08086D90: .4byte gUnknown_20386E0 + thumb_func_end sub_8086D38 + + thumb_func_start sub_8086D94 +sub_8086D94: @ 8086D94 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0x8C + bl sub_8044E4C + movs r5, 0 + strh r0, [r4, 0x24] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r1, 0x48 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08086DF6 + movs r2, 0x30 + ldrsh r0, [r4, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08086E0C @ =gUnknown_202063C + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r3] + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + subs r0, 0x8 + strh r0, [r1, 0x22] + strh r5, [r1, 0x24] + strh r5, [r1, 0x26] +_08086DF6: + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _08086E06 + adds r0, r4, 0 + movs r1, 0x1E + bl sub_80836D8 +_08086E06: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08086E0C: .4byte gUnknown_202063C + thumb_func_end sub_8086D94 + + thumb_func_start sub_8086E10 +sub_8086E10: @ 8086E10 + push {lr} + ldr r0, _08086E34 @ =sub_8086E40 + movs r1, 0xFE + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08086E38 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _08086E3C @ =gUnknown_20386E0 + ldr r0, [r0] + strh r0, [r1, 0xA] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08086E34: .4byte sub_8086E40 +_08086E38: .4byte gUnknown_3005090 +_08086E3C: .4byte gUnknown_20386E0 + thumb_func_end sub_8086E10 + + thumb_func_start sub_8086E40 +sub_8086E40: @ 8086E40 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08086E68 @ =gUnknown_83CC178 + ldr r2, _08086E6C @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08086E68: .4byte gUnknown_83CC178 +_08086E6C: .4byte gUnknown_3005090 + thumb_func_end sub_8086E40 + + thumb_func_start sub_8086E70 +sub_8086E70: @ 8086E70 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _08086EC0 @ =gUnknown_2037078 + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086EC4 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _08086E9A + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086EB8 +_08086E9A: + ldrb r0, [r6] + strh r0, [r5, 0x26] + movs r0, 0x1 + strb r0, [r6, 0x6] + bl sub_805C970 + bl sub_805CB70 + adds r0, r4, 0 + movs r1, 0x45 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_08086EB8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08086EC0: .4byte gUnknown_2037078 +_08086EC4: .4byte gUnknown_2036E38 + thumb_func_end sub_8086E70 + + thumb_func_start sub_8086EC8 +sub_8086EC8: @ 8086EC8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08086F00 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086F04 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086EF8 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldr r1, _08086F08 @ =gUnknown_20386E0 + movs r2, 0xA + ldrsh r0, [r4, r2] + str r0, [r1] + movs r0, 0x3B + bl sub_8083444 +_08086EF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086F00: .4byte gUnknown_2037078 +_08086F04: .4byte gUnknown_2036E38 +_08086F08: .4byte gUnknown_20386E0 + thumb_func_end sub_8086EC8 + + thumb_func_start sub_8086F0C +sub_8086F0C: @ 8086F0C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x6 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08086F54 + ldr r0, _08086F5C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086F60 @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrh r1, [r4, 0x26] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08086F44 + ldrb r0, [r5, 0x1A] + movs r1, 0x2 + bl sub_80DC44C + ldrb r0, [r5, 0x1A] + movs r1, 0 + bl sub_80DC478 +_08086F44: + bl sub_8087168 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08086F54: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08086F5C: .4byte gUnknown_2037078 +_08086F60: .4byte gUnknown_2036E38 + thumb_func_end sub_8086F0C + + thumb_func_start sub_8086F64 +sub_8086F64: @ 8086F64 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0xA] + bl sub_80871AC + lsls r0, 24 + cmp r0, 0 + beq _08086F98 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x10 + strh r0, [r4, 0xC] + movs r0, 0x1 + bl sub_805BDEC + ldr r0, _08086FA0 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086FA4 @ =gUnknown_2036E38 + adds r0, r1 + movs r1, 0x2 + bl sub_8063CA4 +_08086F98: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086FA0: .4byte gUnknown_2037078 +_08086FA4: .4byte gUnknown_2036E38 + thumb_func_end sub_8086F64 + + thumb_func_start sub_8086FA8 +sub_8086FA8: @ 8086FA8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08086FF4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08086FF8 @ =gUnknown_2036E38 + adds r2, r0, r1 + ldrh r1, [r4, 0xC] + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08086FCE + subs r0, r1, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _08086FEC +_08086FCE: + adds r0, r2, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08086FEC + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x97 + bl sub_80722CC + ldrb r0, [r4, 0xA] + bl sub_80871C8 +_08086FEC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086FF4: .4byte gUnknown_2037078 +_08086FF8: .4byte gUnknown_2036E38 + thumb_func_end sub_8086FA8 + + thumb_func_start sub_8086FFC +sub_8086FFC: @ 8086FFC + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _0808705A + ldr r0, _08087060 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08087064 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x2 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08087068 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x16 + bl sub_800838C + ldrb r0, [r4, 0x1] + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r4, 0 + movs r1, 0x54 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + strh r0, [r5, 0xC] +_0808705A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087060: .4byte gUnknown_2037078 +_08087064: .4byte gUnknown_2036E38 +_08087068: .4byte gUnknown_202063C + thumb_func_end sub_8086FFC + + thumb_func_start sub_808706C +sub_808706C: @ 808706C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _080870FC + ldr r0, _08087104 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08087108 @ =gUnknown_2036E38 + adds r4, r0 + adds r0, r4, 0 + bl sub_8063D1C + ldrb r1, [r4, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] + ldrb r0, [r5, 0xA] + ldrb r1, [r4, 0x4] + bl sub_8087204 + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0808710C @ =gUnknown_202063C + adds r0, r4 + ldr r1, _08087110 @ =gUnknown_300500C + ldr r1, [r1] + ldrb r1, [r1, 0x8] + lsls r1, 1 + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_800838C + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + bl sub_80877FC + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _08087114 @ =sub_8087828 + str r1, [r0] + bl sub_805FAF8 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080870FC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087104: .4byte gUnknown_2037078 +_08087108: .4byte gUnknown_2036E38 +_0808710C: .4byte gUnknown_202063C +_08087110: .4byte gUnknown_300500C +_08087114: .4byte sub_8087828 + thumb_func_end sub_808706C + + thumb_func_start sub_8087118 +sub_8087118: @ 8087118 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0xA] + bl sub_80871AC + lsls r0, 24 + cmp r0, 0 + beq _08087132 + bl sub_807DC18 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08087132: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8087118 + + thumb_func_start sub_8087138 +sub_8087138: @ 8087138 + push {lr} + ldr r0, _08087160 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0808715A + movs r0, 0x1F + bl sub_80837FC + ldr r0, _08087164 @ =sub_8086E40 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0808715A: + pop {r0} + bx r0 + .align 2, 0 +_08087160: .4byte gUnknown_2037AB8 +_08087164: .4byte sub_8086E40 + thumb_func_end sub_8087138 + + thumb_func_start sub_8087168 +sub_8087168: @ 8087168 + push {lr} + ldr r0, _080871A0 @ =gUnknown_83A0010 + ldr r0, [r0, 0x68] + movs r1, 0xFF + movs r2, 0xB4 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r1, _080871A4 @ =gUnknown_202063C + adds r2, r1 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + movs r3, 0xD + negs r3, r3 + ands r1, r3 + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x5] + ldr r1, _080871A8 @ =sub_8087220 + str r1, [r2, 0x1C] + pop {r1} + bx r1 + .align 2, 0 +_080871A0: .4byte gUnknown_83A0010 +_080871A4: .4byte gUnknown_202063C +_080871A8: .4byte sub_8087220 + thumb_func_end sub_8087168 + + thumb_func_start sub_80871AC +sub_80871AC: @ 80871AC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080871C4 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bx lr + .align 2, 0 +_080871C4: .4byte gUnknown_202063C + thumb_func_end sub_80871AC + + thumb_func_start sub_80871C8 +sub_80871C8: @ 80871C8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _080871FC @ =gUnknown_202063C + adds r4, r0 + ldr r0, _08087200 @ =sub_80872F0 + str r0, [r4, 0x1C] + movs r1, 0 + movs r0, 0x78 + strh r0, [r4, 0x20] + strh r1, [r4, 0x22] + strh r1, [r4, 0x24] + strh r1, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x2E + movs r2, 0x10 + bl memset + movs r0, 0x40 + strh r0, [r4, 0x3A] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080871FC: .4byte gUnknown_202063C +_08087200: .4byte sub_80872F0 + thumb_func_end sub_80871C8 + + thumb_func_start sub_8087204 +sub_8087204: @ 8087204 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0808721C @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + strh r1, [r2, 0x3A] + bx lr + .align 2, 0 +_0808721C: .4byte gUnknown_202063C + thumb_func_end sub_8087204 + + thumb_func_start sub_8087220 +sub_8087220: @ 8087220 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080872E2 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0808727A + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r0, _0808725C @ =gUnknown_83CC1CC + str r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_800860C + adds r0, r4, 0 + movs r1, 0 + bl sub_800843C + ldr r0, _08087260 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08087264 + movs r0, 0x80 + b _08087266 + .align 2, 0 +_0808725C: .4byte gUnknown_83CC1CC +_08087260: .4byte gUnknown_300500C +_08087264: + movs r0, 0x76 +_08087266: + strh r0, [r4, 0x20] + ldr r0, _080872E8 @ =0x0000ffd0 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r0, 0x40 + strh r0, [r4, 0x30] + adds r0, 0xC0 + strh r0, [r4, 0x32] +_0808727A: + ldrh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x78 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x78 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x32] + movs r0, 0x32 + ldrsh r1, [r4, r0] + ldr r0, _080872EC @ =0x000007ff + cmp r1, r0 + bgt _080872B0 + adds r0, r2, 0 + adds r0, 0x60 + strh r0, [r4, 0x32] +_080872B0: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x81 + ble _080872E2 + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + lsrs r1, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + adds r0, r4, 0 + movs r3, 0 + bl sub_80073F0 +_080872E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080872E8: .4byte 0x0000ffd0 +_080872EC: .4byte 0x000007ff + thumb_func_end sub_8087220 + + thumb_func_start sub_80872F0 +sub_80872F0: @ 80872F0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0x8C + bl sub_8044E4C + movs r5, 0 + strh r0, [r4, 0x24] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r1, 0x48 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x40 + beq _0808734E + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08087360 @ =gUnknown_202063C + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r3] + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + subs r0, 0x8 + strh r0, [r1, 0x22] + strh r5, [r1, 0x24] + strh r5, [r1, 0x26] +_0808734E: + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _0808735A + movs r0, 0x1 + strh r0, [r4, 0x3C] +_0808735A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087360: .4byte gUnknown_202063C + thumb_func_end sub_80872F0 + + thumb_func_start sub_8087364 +sub_8087364: @ 8087364 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0808744E + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080873C4 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r0, _080873A0 @ =gUnknown_83CC1CC + str r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_800860C + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _080873A4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _080873A8 + movs r0, 0x70 + b _080873AA + .align 2, 0 +_080873A0: .4byte gUnknown_83CC1CC +_080873A4: .4byte gUnknown_300500C +_080873A8: + movs r0, 0x64 +_080873AA: + strh r0, [r4, 0x20] + ldr r0, _08087454 @ =0x0000ffe0 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r0, 0xF0 + strh r0, [r4, 0x30] + movs r0, 0x80 + lsls r0, 4 + strh r0, [r4, 0x32] + movs r0, 0x80 + strh r0, [r4, 0x36] +_080873C4: + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r2, r1 + ldrh r0, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + movs r0, 0xFF + ands r2, r0 + strh r2, [r4, 0x30] + movs r3, 0x30 + ldrsh r0, [r4, r3] + movs r1, 0x20 + bl sub_8044E4C + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x78 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r2, 0x80 + lsls r2, 1 + cmp r0, r2 + ble _08087406 + ldrh r0, [r4, 0x36] + subs r0, r1, r0 + strh r0, [r4, 0x32] +_08087406: + ldrh r1, [r4, 0x36] + movs r3, 0x36 + ldrsh r0, [r4, r3] + cmp r0, 0xFF + bgt _08087416 + adds r0, r1, 0 + adds r0, 0x18 + strh r0, [r4, 0x36] +_08087416: + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0xFF + bgt _08087420 + strh r2, [r4, 0x32] +_08087420: + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0x3B + ble _0808744E + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_0808744E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087454: .4byte 0x0000ffe0 + thumb_func_end sub_8087364 + + thumb_func_start sub_8087458 +sub_8087458: @ 8087458 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80871C8 + ldr r1, _0808747C @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08087480 @ =sub_8087364 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808747C: .4byte gUnknown_202063C +_08087480: .4byte sub_8087364 + thumb_func_end sub_8087458 + + thumb_func_start sub_8087484 +sub_8087484: @ 8087484 + push {lr} + ldr r0, _08087494 @ =sub_8087498 + movs r1, 0xFE + bl sub_807741C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08087494: .4byte sub_8087498 + thumb_func_end sub_8087484 + + thumb_func_start sub_8087498 +sub_8087498: @ 8087498 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _080874C0 @ =gUnknown_83CC1D4 + ldr r2, _080874C4 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080874C0: .4byte gUnknown_83CC1D4 +_080874C4: .4byte gUnknown_3005090 + thumb_func_end sub_8087498 + + thumb_func_start sub_80874C8 +sub_80874C8: @ 80874C8 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r4, _080875B4 @ =gUnknown_2037078 + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080875B8 @ =gUnknown_2036E38 + adds r5, r0, r1 + adds r0, r5, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _080874F2 + adds r0, r5, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080875AE +_080874F2: + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + movs r0, 0x21 + strh r0, [r6, 0xC] + ldrb r0, [r4] + strh r0, [r6, 0x26] + movs r0, 0x1 + strb r0, [r4, 0x6] + bl sub_805C970 + ldrh r1, [r6, 0x26] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0808751A + ldrb r0, [r5, 0x1A] + movs r1, 0 + bl sub_80DC44C +_0808751A: + movs r0, 0x2 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_805F060 + bl sub_805FAF8 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_805F218 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080875BC @ =gUnknown_202063C + adds r0, r4 + movs r1, 0x16 + bl sub_800838C + ldrb r1, [r5, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + bl sub_8087168 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0xA] + bl sub_80871C8 + ldrb r0, [r6, 0xA] + ldrb r1, [r5, 0x4] + bl sub_8087204 + movs r0, 0xA + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080875C0 @ =gUnknown_300500C + ldr r1, [r1] + ldrb r1, [r1, 0x8] + lsls r1, 25 + movs r2, 0x80 + lsls r2, 18 + adds r1, r2 + lsrs r1, 24 + bl sub_800838C + movs r0, 0xA + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_80877FC + movs r2, 0xA + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080875C4 @ =sub_8087828 + str r1, [r0] +_080875AE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080875B4: .4byte gUnknown_2037078 +_080875B8: .4byte gUnknown_2036E38 +_080875BC: .4byte gUnknown_202063C +_080875C0: .4byte gUnknown_300500C +_080875C4: .4byte sub_8087828 + thumb_func_end sub_80874C8 + + thumb_func_start sub_80875C8 +sub_80875C8: @ 80875C8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r6, _08087638 @ =gUnknown_202063C + adds r0, r6 + bl sub_80878C0 + ldrh r1, [r5, 0xC] + movs r2, 0xC + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080875F2 + subs r0, r1, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _08087630 +_080875F2: + ldr r0, _0808763C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08087640 @ =gUnknown_2036E38 + adds r0, r1 + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r6 + ldrb r0, [r5, 0xA] + movs r1, 0x40 + bl sub_8087204 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x24] + strh r1, [r4, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + strh r1, [r5, 0xC] +_08087630: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08087638: .4byte gUnknown_202063C +_0808763C: .4byte gUnknown_2037078 +_08087640: .4byte gUnknown_2036E38 + thumb_func_end sub_80875C8 + + thumb_func_start sub_8087644 +sub_8087644: @ 8087644 + push {r4,lr} + sub sp, 0x24 + adds r4, r0, 0 + ldr r1, _0808768C @ =gUnknown_83CC1F0 + mov r0, sp + movs r2, 0x24 + bl memcpy + ldr r0, _08087690 @ =gUnknown_2037078 + ldrb r0, [r0, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08087694 @ =gUnknown_202063C + adds r1, r0 + movs r2, 0xC + ldrsh r0, [r4, r2] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r1, 0x26] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + ble _08087682 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_08087682: + add sp, 0x24 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808768C: .4byte gUnknown_83CC1F0 +_08087690: .4byte gUnknown_2037078 +_08087694: .4byte gUnknown_202063C + thumb_func_end sub_8087644 + + thumb_func_start sub_8087698 +sub_8087698: @ 8087698 + push {r4-r6,lr} + adds r6, r0, 0 + ldrb r0, [r6, 0xA] + bl sub_80871AC + lsls r0, 24 + cmp r0, 0 + beq _080876FC + ldr r0, _08087704 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r5, r0, 3 + adds r5, r0 + lsls r5, 2 + ldr r0, _08087708 @ =gUnknown_2036E38 + adds r5, r0 + ldrb r0, [r5, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0808770C @ =gUnknown_202063C + adds r4, r0 + ldrb r1, [r5, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + movs r0, 0x10 + ldrsh r1, [r5, r0] + movs r0, 0x12 + ldrsh r2, [r5, r0] + adds r0, r5, 0 + bl sub_805F724 + movs r0, 0 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + bl sub_805CB70 + adds r0, r5, 0 + movs r1, 0x45 + bl sub_8063CA4 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_080876FC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08087704: .4byte gUnknown_2037078 +_08087708: .4byte gUnknown_2036E38 +_0808770C: .4byte gUnknown_202063C + thumb_func_end sub_8087698 + + thumb_func_start sub_8087710 +sub_8087710: @ 8087710 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08087740 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08087744 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08087738 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldrb r0, [r4, 0xA] + bl sub_8087458 +_08087738: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087740: .4byte gUnknown_2037078 +_08087744: .4byte gUnknown_2036E38 + thumb_func_end sub_8087710 + + thumb_func_start sub_8087748 +sub_8087748: @ 8087748 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0xA] + bl sub_80871AC + lsls r0, 24 + cmp r0, 0 + beq _08087774 + movs r0, 0xA + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0808777C @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x10 + strh r0, [r4, 0xA] +_08087774: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808777C: .4byte gUnknown_202063C + thumb_func_end sub_8087748 + + thumb_func_start sub_8087780 +sub_8087780: @ 8087780 + push {r4-r7,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0xA] + subs r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + cmp r0, 0 + bne _080877EA + ldr r6, _080877F0 @ =gUnknown_2037078 + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080877F4 @ =gUnknown_2036E38 + adds r4, r0, r1 + movs r7, 0 + ldrh r1, [r5, 0x26] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080877B4 + movs r7, 0x2 + ldrb r0, [r4, 0x1A] + movs r1, 0x1 + bl sub_80DC44C +_080877B4: + adds r0, r7, 0 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_805F218 + ldrh r0, [r5, 0x26] + strb r0, [r6] + movs r0, 0 + strb r0, [r6, 0x6] + movs r0, 0x20 + bl sub_80837FC + ldr r0, _080877F8 @ =sub_8087498 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080877EA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080877F0: .4byte gUnknown_2037078 +_080877F4: .4byte gUnknown_2036E38 +_080877F8: .4byte sub_8087498 + thumb_func_end sub_8087780 + + thumb_func_start sub_80877FC +sub_80877FC: @ 80877FC + push {r4,r5,lr} + adds r4, r0, 0 + lsls r5, r1, 24 + lsrs r5, 24 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r0, _08087824 @ =gUnknown_83CC23C + str r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_800860C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800843C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087824: .4byte gUnknown_83CC23C + thumb_func_end sub_80877FC + + thumb_func_start sub_8087828 +sub_8087828: @ 8087828 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0xB4 + bl sub_8044E4C + movs r5, 0 + strh r0, [r4, 0x24] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r1, 0x48 + bl sub_8044E30 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0x40 + beq _08087886 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080878BC @ =gUnknown_202063C + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r3] + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + subs r0, 0x8 + strh r0, [r1, 0x22] + strh r5, [r1, 0x24] + strh r5, [r1, 0x26] +_08087886: + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _080878B4 + movs r0, 0x1 + strh r0, [r4, 0x3C] + ldrb r1, [r4, 0x1] + subs r0, 0x5 + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + lsrs r1, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + adds r0, r4, 0 + movs r3, 0 + bl sub_80073F0 +_080878B4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080878BC: .4byte gUnknown_202063C + thumb_func_end sub_8087828 + + thumb_func_start sub_80878C0 +sub_80878C0: @ 80878C0 + push {r4-r6,lr} + adds r4, r0, 0 + ldrb r5, [r4, 0x1] + lsls r0, r5, 30 + cmp r0, 0 + beq _08087916 + ldr r1, _0808791C @ =gUnknown_2021BCC + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r3, r0, 27 + lsls r0, r3, 3 + adds r1, r0, r1 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x80 + lsls r2, 1 + cmp r0, r2 + beq _080878EC + movs r6, 0x6 + ldrsh r0, [r1, r6] + cmp r0, r2 + bne _08087916 +_080878EC: + movs r0, 0x4 + negs r0, r0 + ands r0, r5 + strb r0, [r4, 0x1] + adds r0, r3, 0 + bl sub_80085CC + ldrb r1, [r4, 0x1] + lsrs r1, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + adds r0, r4, 0 + movs r3, 0 + bl sub_80073F0 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + ldr r0, _08087920 @ =sub_80872F0 + str r0, [r4, 0x1C] +_08087916: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808791C: .4byte gUnknown_2021BCC +_08087920: .4byte sub_80872F0 + thumb_func_end sub_80878C0 + + thumb_func_start sub_8087924 +sub_8087924: @ 8087924 + push {r4-r7,lr} + sub sp, 0x4 + ldr r7, _080879C4 @ =gUnknown_20386E0 + ldrb r0, [r7] + ldrb r1, [r7, 0x4] + ldrb r2, [r7, 0x8] + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080879BA + mov r0, sp + ldrb r0, [r0] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080879C8 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x10 + ldrsh r5, [r4, r0] + subs r5, 0x7 + movs r0, 0x12 + ldrsh r6, [r4, r0] + subs r6, 0x7 + ldr r1, [r7, 0xC] + subs r5, r1, r5 + lsls r5, 4 + ldr r2, [r7, 0x10] + subs r6, r2, r6 + lsls r6, 4 + adds r1, 0x7 + lsls r1, 16 + asrs r1, 16 + adds r2, 0x7 + lsls r2, 16 + asrs r2, 16 + adds r0, r4, 0 + bl sub_805F700 + ldr r0, _080879CC @ =sub_80879D8 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080879D0 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r1 + ldrb r0, [r4, 0x4] + strh r0, [r2, 0xA] + ldr r3, _080879D4 @ =gUnknown_202063C + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x20] + adds r0, r5 + strh r0, [r2, 0xC] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x22] + adds r0, r6 + strh r0, [r2, 0xE] + ldr r0, [r7, 0x14] + strh r0, [r2, 0x18] + mov r0, sp + ldrb r0, [r0] + strh r0, [r2, 0x1A] +_080879BA: + movs r0, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080879C4: .4byte gUnknown_20386E0 +_080879C8: .4byte gUnknown_2036E38 +_080879CC: .4byte sub_80879D8 +_080879D0: .4byte gUnknown_3005090 +_080879D4: .4byte gUnknown_202063C + thumb_func_end sub_8087924 + + thumb_func_start sub_80879D8 +sub_80879D8: @ 80879D8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _08087A04 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08087A08 @ =gUnknown_202063C + adds r6, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08087A0C + cmp r0, 0x1 + beq _08087A4A + b _08087AA8 + .align 2, 0 +_08087A04: .4byte gUnknown_3005098 +_08087A08: .4byte gUnknown_202063C +_08087A0C: + ldrh r0, [r6, 0x20] + lsls r0, 4 + strh r0, [r5, 0x8] + ldrh r0, [r6, 0x22] + lsls r0, 4 + strh r0, [r5, 0xA] + movs r2, 0x4 + ldrsh r0, [r5, r2] + lsls r0, 4 + movs r2, 0x8 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r2, 0x10 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, 0xC] + movs r1, 0x6 + ldrsh r0, [r5, r1] + lsls r0, 4 + movs r2, 0xA + ldrsh r1, [r5, r2] + subs r0, r1 + movs r2, 0x10 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, 0xE] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_08087A4A: + ldrh r1, [r5, 0x10] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _08087A78 + subs r0, r1, 0x1 + strh r0, [r5, 0x10] + ldrh r1, [r5, 0xC] + ldrh r0, [r5, 0x8] + adds r1, r0 + strh r1, [r5, 0x8] + ldrh r0, [r5, 0xE] + ldrh r2, [r5, 0xA] + adds r0, r2 + strh r0, [r5, 0xA] + lsls r1, 16 + asrs r1, 20 + strh r1, [r6, 0x20] + ldrh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 20 + strh r0, [r6, 0x22] + b _08087AA8 +_08087A78: + movs r1, 0x12 + ldrsh r0, [r5, r1] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08087AB0 @ =gUnknown_2036E38 + adds r4, r0 + ldrh r0, [r5, 0x4] + strh r0, [r6, 0x20] + ldrh r0, [r5, 0x6] + strh r0, [r6, 0x22] + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x43 + bl sub_80837FC + adds r0, r7, 0 + bl sub_8077508 +_08087AA8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08087AB0: .4byte gUnknown_2036E38 + thumb_func_end sub_80879D8 + + thumb_func_start sub_8087AB4 +sub_8087AB4: @ 8087AB4 + push {r4,lr} + sub sp, 0x4 + ldr r4, _08087AF8 @ =gUnknown_20386E0 + ldrb r0, [r4] + ldrb r1, [r4, 0x4] + ldrb r2, [r4, 0x8] + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _08087B04 + ldr r0, _08087AFC @ =sub_8087BC0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08087B00 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + mov r0, sp + ldrb r0, [r0] + strh r0, [r1, 0xC] + ldr r0, [r4] + strh r0, [r1, 0x14] + ldr r0, [r4, 0x4] + strh r0, [r1, 0x16] + ldr r0, [r4, 0x8] + strh r0, [r1, 0x18] + b _08087B0A + .align 2, 0 +_08087AF8: .4byte gUnknown_20386E0 +_08087AFC: .4byte sub_8087BC0 +_08087B00: .4byte gUnknown_3005090 +_08087B04: + movs r0, 0x44 + bl sub_80837FC +_08087B0A: + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8087AB4 + + thumb_func_start sub_8087B14 +sub_8087B14: @ 8087B14 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08087B4C @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08087B50 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _08087B54 + movs r0, 0 + strh r0, [r4, 0xC] + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08087B54 + subs r0, r1, 0x1 + b _08087B52 + .align 2, 0 +_08087B4C: .4byte gUnknown_3005098 +_08087B50: + movs r0, 0x4 +_08087B52: + strh r0, [r4, 0xA] +_08087B54: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _08087B8E + movs r0, 0 + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08087B84 + ldrh r1, [r4, 0xA] + negs r1, r1 + lsls r1, 16 + asrs r1, 16 + movs r0, 0 + bl sub_805ADE0 + b _08087B8E +_08087B84: + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_805ADE0 +_08087B8E: + bl sub_805AE28 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08087BA0 + adds r0, r5, 0 + bl sub_8077508 +_08087BA0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8087B14 + + thumb_func_start sub_8087BA8 +sub_8087BA8: @ 8087BA8 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08087BBC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x16] + bx lr + .align 2, 0 +_08087BBC: .4byte gUnknown_3005090 + thumb_func_end sub_8087BA8 + + thumb_func_start sub_8087BC0 +sub_8087BC0: @ 8087BC0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08087BF8 @ =gUnknown_3005098 + adds r4, r0 + bl sub_805ADF8 + movs r0, 0 + bl sub_805ADD4 + ldr r1, _08087BFC @ =gUnknown_83CC244 + movs r2, 0x2 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087BF8: .4byte gUnknown_3005098 +_08087BFC: .4byte gUnknown_83CC244 + thumb_func_end sub_8087BC0 + + thumb_func_start sub_8087C00 +sub_8087C00: @ 8087C00 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08087C28 @ =sub_8087B14 + movs r1, 0x5A + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x51 + bl sub_80722CC + strh r4, [r5, 0xA] + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087C28: .4byte sub_8087B14 + thumb_func_end sub_8087C00 + + thumb_func_start sub_8087C2C +sub_8087C2C: @ 8087C2C + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + ldrh r0, [r7, 0x6] + adds r0, 0x1 + strh r0, [r7, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x78 + ble _08087C9A + ldr r2, _08087CA4 @ =gUnknown_2036E38 + movs r1, 0x4 + ldrsh r0, [r7, r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08087CA8 @ =gUnknown_202063C + adds r4, r0 + ldrb r0, [r1, 0x1] + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x1] + ldr r6, _08087CAC @ =0x0000ffff + ldr r5, _08087CB0 @ =0x00007fff + adds r0, r6, 0 + movs r1, 0x10 + adds r2, r5, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r6, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + adds r0, r4, 0 + bl sub_8087CFC + movs r0, 0x50 + bl sub_80722CC + ldrb r0, [r7, 0xA] + bl sub_8087BA8 + movs r0, 0 + strh r0, [r7, 0x6] + ldrh r0, [r7, 0x2] + adds r0, 0x1 + strh r0, [r7, 0x2] +_08087C9A: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08087CA4: .4byte gUnknown_2036E38 +_08087CA8: .4byte gUnknown_202063C +_08087CAC: .4byte 0x0000ffff +_08087CB0: .4byte 0x00007fff + thumb_func_end sub_8087C2C + + thumb_func_start sub_8087CB4 +sub_8087CB4: @ 8087CB4 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _08087CF4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08087CEE + ldr r0, _08087CF8 @ =sub_8087B14 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08087CEE + bl sub_805ADF8 + ldrb r0, [r4, 0xC] + ldrb r1, [r4, 0xE] + ldrb r2, [r4, 0x10] + bl sub_805E4C8 + movs r0, 0x44 + bl sub_80837FC + adds r0, r5, 0 + bl sub_8077508 +_08087CEE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087CF4: .4byte gUnknown_2037AB8 +_08087CF8: .4byte sub_8087B14 + thumb_func_end sub_8087CB4 + + thumb_func_start sub_8087CFC +sub_8087CFC: @ 8087CFC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r0, _08087D80 @ =gUnknown_300506C + movs r1, 0 + ldrsh r2, [r0, r1] + movs r3, 0x20 + ldrsh r0, [r6, r3] + adds r2, r0 + movs r1, 0x24 + ldrsh r0, [r6, r1] + adds r2, r0 + ldr r0, _08087D84 @ =gUnknown_3005068 + movs r3, 0 + ldrsh r0, [r0, r3] + movs r3, 0x22 + ldrsh r1, [r6, r3] + adds r0, r1 + movs r3, 0x26 + ldrsh r1, [r6, r3] + adds r0, r1 + subs r0, 0x4 + movs r5, 0 + lsls r2, 16 + mov r8, r2 + lsls r7, r0, 16 +_08087D32: + ldr r0, _08087D88 @ =gUnknown_83CC2A0 + mov r2, r8 + asrs r1, r2, 16 + asrs r2, r7, 16 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08087D6E + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08087D8C @ =gUnknown_202063C + adds r4, r0 + lsls r1, r5, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + strh r5, [r4, 0x2E] + ldrb r1, [r6, 0x5] + lsrs r1, 4 + lsls r1, 4 + ldrb r2, [r4, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] +_08087D6E: + adds r5, 0x1 + cmp r5, 0x3 + ble _08087D32 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08087D80: .4byte gUnknown_300506C +_08087D84: .4byte gUnknown_3005068 +_08087D88: .4byte gUnknown_83CC2A0 +_08087D8C: .4byte gUnknown_202063C + thumb_func_end sub_8087CFC + + thumb_func_start sub_8087D90 +sub_8087D90: @ 8087D90 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _08087DBC + cmp r0, 0x1 + bgt _08087DA6 + cmp r0, 0 + beq _08087DB0 + b _08087DDA +_08087DA6: + cmp r0, 0x2 + beq _08087DC8 + cmp r0, 0x3 + beq _08087DCE + b _08087DDA +_08087DB0: + ldrh r0, [r1, 0x20] + subs r0, 0x10 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x22] + subs r0, 0xC + b _08087DD8 +_08087DBC: + ldrh r0, [r1, 0x20] + adds r0, 0x10 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x22] + subs r0, 0xC + b _08087DD8 +_08087DC8: + ldrh r0, [r1, 0x20] + subs r0, 0x10 + b _08087DD2 +_08087DCE: + ldrh r0, [r1, 0x20] + adds r0, 0x10 +_08087DD2: + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x22] + adds r0, 0xC +_08087DD8: + strh r0, [r1, 0x22] +_08087DDA: + ldrh r0, [r1, 0x20] + adds r0, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xF8 + bhi _08087DF6 + movs r0, 0x22 + ldrsh r2, [r1, r0] + movs r0, 0x4 + negs r0, r0 + cmp r2, r0 + blt _08087DF6 + cmp r2, 0xA4 + ble _08087DFC +_08087DF6: + adds r0, r1, 0 + bl sub_8007280 +_08087DFC: + pop {r0} + bx r0 + thumb_func_end sub_8087D90 + + thumb_func_start sub_8087E00 +sub_8087E00: @ 8087E00 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08087E24 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08087E1E + movs r0, 0x45 + bl sub_80837FC + adds r0, r4, 0 + bl sub_8077508 +_08087E1E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087E24: .4byte gUnknown_2037AB8 + thumb_func_end sub_8087E00 + + thumb_func_start sub_8087E28 +sub_8087E28: @ 8087E28 + push {r4,r5,lr} + sub sp, 0x4 + movs r4, 0x1 + negs r4, r4 + ldr r5, _08087E5C @ =0x00007fff + adds r0, r4, 0 + movs r1, 0x10 + adds r2, r5, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0xF + movs r3, 0 + bl sub_8070588 + ldr r0, _08087E60 @ =sub_8087E00 + movs r1, 0x5A + bl sub_807741C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08087E5C: .4byte 0x00007fff +_08087E60: .4byte sub_8087E00 + thumb_func_end sub_8087E28 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s new file mode 100644 index 000000000..5ad3273a6 --- /dev/null +++ b/asm/field_effect_helpers.s @@ -0,0 +1,4308 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80DAD7C +sub_80DAD7C: @ 80DAD7C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r4, r1, 0 + lsls r5, r2, 24 + lsrs r5, 24 + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r0, 0x22 + ldrsh r2, [r4, r0] + adds r0, r4, 0 + movs r3, 0x98 + bl sub_805FB6C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DAE2C @ =gUnknown_202063C + adds r7, r1, r0 + ldr r0, _080DAE30 @ =sub_80DAF50 + str r0, [r7, 0x1C] + ldrb r1, [r7, 0x5] + movs r0, 0xC + orrs r1, r0 + strb r1, [r7, 0x5] + ldr r2, _080DAE34 @ =gUnknown_835B934 + lsrs r0, r1, 4 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 4 + movs r2, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x5] + movs r1, 0x3F + adds r1, r7 + mov r8, r1 + ldrb r0, [r1] + movs r1, 0x40 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + ldr r0, _080DAE38 @ =gUnknown_8231CF0 + str r0, [r7, 0x8] + adds r0, r7, 0 + movs r1, 0 + bl sub_800838C + ldr r0, _080DAE3C @ =gUnknown_8231CFC + str r0, [r7, 0x10] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x8 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + adds r2, r7, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x2E] + strh r0, [r7, 0x2E] + ldrb r0, [r6, 0x8] + strh r0, [r7, 0x30] + strh r5, [r7, 0x3C] + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_80DAE54 + cmp r5, 0 + bne _080DAE22 + ldrb r0, [r7, 0x1] + movs r1, 0x4 + negs r1, r1 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strb r1, [r7, 0x1] +_080DAE22: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAE2C: .4byte gUnknown_202063C +_080DAE30: .4byte sub_80DAF50 +_080DAE34: .4byte gUnknown_835B934 +_080DAE38: .4byte gUnknown_8231CF0 +_080DAE3C: .4byte gUnknown_8231CFC + thumb_func_end sub_80DAD7C + + thumb_func_start sub_80DAE40 +sub_80DAE40: @ 80DAE40 + push {lr} + ldrb r0, [r0, 0x5] + bl sub_805F2C8 + ldrh r0, [r0, 0xA] + subs r0, 0x2 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80DAE40 + + thumb_func_start sub_80DAE54 +sub_80DAE54: @ 80DAE54 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _080DAEAC @ =gUnknown_83FECCC + mov r0, sp + movs r2, 0x6 + bl memcpy + movs r0, 0 + strh r0, [r4, 0x32] + ldrb r0, [r5, 0x5] + bl sub_805F2C8 + ldrb r1, [r0, 0xC] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080DAEB0 + ldrb r0, [r5, 0x1F] + bl sub_8059F5C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080DAE96 + ldrb r0, [r5, 0x1E] + bl sub_8059F5C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080DAEB0 +_080DAE96: + subs r0, 0x1 + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x32] + ldrb r1, [r4, 0x5] + lsrs r1, 4 + adds r0, r5, 0 + bl sub_80DAF20 + b _080DAEBA + .align 2, 0 +_080DAEAC: .4byte gUnknown_83FECCC +_080DAEB0: + ldrb r1, [r4, 0x5] + lsrs r1, 4 + adds r0, r5, 0 + bl sub_80DAEC4 +_080DAEBA: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DAE54 + + thumb_func_start sub_80DAEC4 +sub_80DAEC4: @ 80DAEC4 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldrb r0, [r0, 0x5] + bl sub_805F2C8 + adds r2, r0, 0 + ldrh r1, [r2, 0x4] + ldr r0, _080DAEF0 @ =0x000011ff + cmp r1, r0 + beq _080DAF18 + ldrb r0, [r2, 0xC] + movs r1, 0xF + ands r1, r0 + cmp r1, 0 + bne _080DAEF4 + ldrh r0, [r2, 0x2] + adds r1, r4, 0 + bl sub_805F5E8 + b _080DAF12 + .align 2, 0 +_080DAEF0: .4byte 0x000011ff +_080DAEF4: + cmp r1, 0xA + bne _080DAF02 + ldrh r0, [r2, 0x2] + adds r1, r4, 0 + bl sub_805F658 + b _080DAF12 +_080DAF02: + adds r0, r4, 0 + bl sub_805FF34 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl sub_805F538 +_080DAF12: + adds r0, r4, 0 + bl sub_807AA8C +_080DAF18: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DAEC4 + + thumb_func_start sub_80DAF20 +sub_80DAF20: @ 80DAF20 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldrb r0, [r0, 0x5] + bl sub_805F2C8 + adds r2, r0, 0 + ldrh r1, [r2, 0x4] + ldr r0, _080DAF4C @ =0x000011ff + cmp r1, r0 + beq _080DAF44 + adds r0, r1, 0 + adds r1, r4, 0 + bl sub_805F538 + adds r0, r4, 0 + bl sub_807AA8C +_080DAF44: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DAF4C: .4byte 0x000011ff + thumb_func_end sub_80DAF20 + + thumb_func_start sub_80DAF50 +sub_80DAF50: @ 80DAF50 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DAF98 @ =gUnknown_2036E38 + adds r7, r0, r1 + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DAF9C @ =gUnknown_202063C + adds r5, r0, r1 + ldr r0, [r7] + ldr r1, _080DAFA0 @ =0x00020001 + ands r0, r1 + cmp r0, r1 + bne _080DAF88 + ldrb r1, [r7, 0x8] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080DAFA4 +_080DAF88: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + b _080DB0AE + .align 2, 0 +_080DAF98: .4byte gUnknown_2036E38 +_080DAF9C: .4byte gUnknown_202063C +_080DAFA0: .4byte 0x00020001 +_080DAFA4: + ldr r1, _080DB0BC @ =gUnknown_835B934 + ldrb r0, [r5, 0x5] + lsrs r0, 4 + adds r0, r1 + ldrb r1, [r0] + lsls r1, 4 + ldrb r2, [r4, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldrb r1, [r5, 0x1] + lsrs r1, 6 + lsls r1, 6 + ldrb r2, [r4, 0x1] + movs r3, 0x3F + adds r0, r3, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r5, 0x3] + lsrs r0, 6 + lsls r0, 6 + ldrb r2, [r4, 0x3] + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x3] + ldrb r0, [r5, 0x3] + lsls r0, 26 + lsrs r0, 27 + movs r2, 0x10 + orrs r0, r2 + lsls r0, 1 + subs r2, 0x4F + mov r9, r2 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x3] + ldrh r1, [r5, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldrh r2, [r4, 0x4] + ldr r0, _080DB0C0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, [r5, 0x18] + str r0, [r4, 0x18] + adds r0, r5, 0 + adds r0, 0x42 + ldrb r0, [r0] + lsls r0, 26 + lsrs r0, 26 + adds r2, r4, 0 + adds r2, 0x42 + ands r3, r0 + ldrb r1, [r2] + movs r0, 0x40 + negs r0, r0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + movs r0, 0x3E + adds r0, r5 + mov r8, r0 + ldrb r0, [r0] + adds r6, r4, 0 + adds r6, 0x3E + movs r1, 0x4 + ands r1, r0 + ldrb r2, [r6] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + ldrh r0, [r5, 0x20] + strh r0, [r4, 0x20] + adds r0, r7, 0 + bl sub_80DAE40 + ldrh r1, [r5, 0x22] + adds r0, r1 + ldrh r1, [r4, 0x32] + adds r1, r0 + strh r1, [r4, 0x22] + adds r0, r5, 0 + adds r0, 0x28 + ldrb r1, [r0] + adds r0, r4, 0 + adds r0, 0x28 + strb r1, [r0] + adds r0, r5, 0 + adds r0, 0x29 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x29 + strb r0, [r1] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x26] + negs r0, r0 + strh r0, [r4, 0x26] + mov r2, r8 + ldrb r0, [r2] + movs r1, 0x2 + ands r1, r0 + ldrb r2, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DB0AE + ldrb r0, [r4, 0x3] + mov r2, r9 + ands r2, r0 + strb r2, [r4, 0x3] + ldrb r0, [r5, 0x3] + lsls r0, 26 + lsrs r0, 27 + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080DB0AE + movs r1, 0x2 + adds r0, r2, 0 + orrs r0, r1 + strb r0, [r4, 0x3] +_080DB0AE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB0BC: .4byte gUnknown_835B934 +_080DB0C0: .4byte 0xfffffc00 + thumb_func_end sub_80DAF50 + + thumb_func_start sub_80DB0C4 +sub_80DB0C4: @ 80DB0C4 + push {r4,lr} + ldr r0, _080DB10C @ =gUnknown_83A0010 + ldr r0, [r0, 0x20] + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + cmp r0, 0x40 + beq _080DB102 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DB110 @ =gUnknown_202063C + adds r1, r0 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r3, 0x4 + orrs r0, r3 + strb r0, [r1, 0x5] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + orrs r0, r3 + strb r0, [r1] +_080DB102: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DB10C: .4byte gUnknown_83A0010 +_080DB110: .4byte gUnknown_202063C + thumb_func_end sub_80DB0C4 + + thumb_func_start sub_80DB114 +sub_80DB114: @ 80DB114 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DB130 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080DB130: .4byte gUnknown_202063C + thumb_func_end sub_80DB114 + + thumb_func_start sub_80DB134 +sub_80DB134: @ 80DB134 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 16 + lsrs r6, r3, 16 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r1, _080DB1D8 @ =gUnknown_202063C + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080DB17E + movs r0, 0x2E + ldrsh r1, [r2, r0] + lsls r0, r7, 16 + asrs r0, 16 + cmp r1, r0 + bne _080DB17E + movs r0, 0x30 + ldrsh r1, [r2, r0] + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + beq _080DB1CA +_080DB17E: + lsls r0, r7, 16 + asrs r0, 16 + lsls r1, r6, 16 + asrs r1, 16 + mov r4, sp + adds r4, 0x2 + mov r2, sp + adds r3, r4, 0 + bl sub_8063B1C + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r1, _080DB1D8 @ =gUnknown_202063C + adds r2, r0, r1 + mov r0, sp + ldrh r0, [r0] + adds r0, 0x8 + strh r0, [r2, 0x20] + ldrh r0, [r4] + adds r0, 0x8 + strh r0, [r2, 0x22] + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + strh r7, [r2, 0x2E] + strh r6, [r2, 0x30] + mov r1, r8 + subs r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl sub_800838C +_080DB1CA: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB1D8: .4byte gUnknown_202063C + thumb_func_end sub_80DB134 + + thumb_func_start sub_80DB1DC +sub_80DB1DC: @ 80DB1DC + push {r4,r5,lr} + ldr r5, _080DB268 @ =gUnknown_20386E0 + ldrb r0, [r5] + ldrb r1, [r5, 0x4] + ldrb r2, [r5, 0x8] + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DB26C @ =gUnknown_2036E38 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x5] + bl sub_805F2C8 + adds r4, r0, 0 + ldr r2, _080DB270 @ =gUnknown_83A0010 + ldr r1, _080DB274 @ =gUnknown_83FECD2 + ldrb r0, [r4, 0xC] + lsls r0, 26 + lsrs r0, 30 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + movs r3, 0x94 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080DB260 + ldr r0, _080DB278 @ =gUnknown_202063C + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + ldr r0, [r5] + strh r0, [r2, 0x2E] + ldr r0, [r5, 0x4] + strh r0, [r2, 0x30] + ldr r0, [r5, 0x8] + strh r0, [r2, 0x32] + ldrh r1, [r4, 0xA] + lsls r1, 16 + asrs r1, 17 + ldr r3, _080DB27C @ =gUnknown_83FECD6 + ldrb r0, [r4, 0xC] + lsls r0, 26 + lsrs r0, 30 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + subs r1, r0 + strh r1, [r2, 0x34] +_080DB260: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DB268: .4byte gUnknown_20386E0 +_080DB26C: .4byte gUnknown_2036E38 +_080DB270: .4byte gUnknown_83A0010 +_080DB274: .4byte gUnknown_83FECD2 +_080DB278: .4byte gUnknown_202063C +_080DB27C: .4byte gUnknown_83FECD6 + thumb_func_end sub_80DB1DC + + thumb_func_start sub_80DB280 +sub_80DB280: @ 80DB280 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r0, [r5, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r5, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + beq _080DB2AE + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80836D8 + b _080DB334 +_080DB2AE: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DB33C @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DB340 @ =gUnknown_202063C + adds r1, r0 + ldrb r0, [r1, 0x5] + movs r2, 0xC + ands r2, r0 + ldrb r3, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, 0x5] + ldrh r0, [r1, 0x20] + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x34] + ldrh r1, [r1, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldr r0, [r4] + ldr r1, _080DB344 @ =0x00400001 + ands r0, r1 + cmp r0, r1 + bne _080DB32C + ldrb r0, [r4, 0x1E] + bl sub_8059B44 + lsls r0, 24 + cmp r0, 0 + bne _080DB32C + ldrb r0, [r4, 0x1E] + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _080DB32C + ldrb r0, [r4, 0x1F] + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _080DB32C + ldrb r0, [r4, 0x1E] + bl sub_8059B90 + lsls r0, 24 + cmp r0, 0 + bne _080DB32C + ldrb r0, [r4, 0x1F] + bl sub_8059B90 + lsls r0, 24 + cmp r0, 0 + beq _080DB334 +_080DB32C: + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80836D8 +_080DB334: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB33C: .4byte gUnknown_2036E38 +_080DB340: .4byte gUnknown_202063C +_080DB344: .4byte 0x00400001 + thumb_func_end sub_80DB280 + + thumb_func_start sub_80DB348 +sub_80DB348: @ 80DB348 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _080DB3E0 @ =gUnknown_20386E0 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, 0x4] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + mov r0, sp + adds r1, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DB3E4 @ =gUnknown_83A0010 + ldr r0, [r0, 0x10] + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080DB3D4 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DB3E8 @ =gUnknown_202063C + adds r3, r0, r1 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x3 + ldrb r1, [r5, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r0, [r5, 0x8] + strh r0, [r3, 0x2E] + ldr r0, [r5] + strh r0, [r3, 0x30] + ldr r0, [r5, 0x4] + strh r0, [r3, 0x32] + ldr r0, [r5, 0x10] + strh r0, [r3, 0x34] + ldr r0, [r5, 0x14] + strh r0, [r3, 0x36] + ldr r0, [r5, 0x18] + strh r0, [r3, 0x38] + ldr r0, [r5, 0x1C] + cmp r0, 0 + beq _080DB3D4 + adds r0, r3, 0 + movs r1, 0x4 + bl sub_80083C0 +_080DB3D4: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DB3E0: .4byte gUnknown_20386E0 +_080DB3E4: .4byte gUnknown_83A0010 +_080DB3E8: .4byte gUnknown_202063C + thumb_func_end sub_80DB348 + + thumb_func_start sub_80DB3EC +sub_80DB3EC: @ 80DB3EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r0, [r5, 0x38] + lsrs r4, r0, 8 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r3, _080DB498 @ =gUnknown_2036E18 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DB438 + ldr r0, _080DB49C @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r0, r4 + bne _080DB41E + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r0, r7 + beq _080DB438 +_080DB41E: + ldr r1, [r3, 0x4] + ldrh r0, [r5, 0x30] + subs r0, r1 + strh r0, [r5, 0x30] + ldr r1, [r3, 0x8] + ldrh r0, [r5, 0x32] + subs r0, r1 + strh r0, [r5, 0x32] + ldrb r1, [r2, 0x5] + lsls r1, 8 + ldrb r0, [r2, 0x4] + orrs r0, r1 + strh r0, [r5, 0x38] +_080DB438: + ldrh r0, [r5, 0x34] + lsrs r1, r0, 8 + mov r8, r1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r0, [r5, 0x36] + lsls r0, 24 + lsrs r7, r0, 24 + movs r2, 0x30 + ldrsh r0, [r5, r2] + movs r2, 0x32 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r6, r0, 24 + mov r0, r8 + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080DB48C + adds r0, r6, 0 + bl sub_8059F34 + lsls r0, 24 + cmp r0, 0 + beq _080DB48C + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080DB4A0 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DB4A0 +_080DB48C: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_80836D8 + b _080DB4E4 + .align 2, 0 +_080DB498: .4byte gUnknown_2036E18 +_080DB49C: .4byte gUnknown_3005008 +_080DB4A0: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DB4F0 @ =gUnknown_2036E38 + adds r2, r0, r1 + ldr r0, [r2, 0x10] + ldr r1, [r5, 0x30] + cmp r0, r1 + beq _080DB4C0 + ldr r0, [r2, 0x14] + cmp r0, r1 + beq _080DB4C0 + movs r0, 0x1 + strh r0, [r5, 0x3C] +_080DB4C0: + movs r6, 0 + adds r0, r5, 0 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0 + bne _080DB4CE + movs r6, 0x4 +_080DB4CE: + adds r0, r5, 0 + movs r1, 0 + bl sub_8068EB4 + ldrh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + adds r2, r6, 0 + bl sub_80DCD48 +_080DB4E4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB4F0: .4byte gUnknown_2036E38 + thumb_func_end sub_80DB3EC + + thumb_func_start sub_80DB4F4 +sub_80DB4F4: @ 80DB4F4 + push {r4,lr} + ldr r4, _080DB558 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0xC + bl sub_8063BC4 + ldr r0, _080DB55C @ =gUnknown_83A0010 + ldr r0, [r0, 0x28] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DB550 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DB560 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0xC + strh r0, [r2, 0x30] +_080DB550: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DB558: .4byte gUnknown_20386E0 +_080DB55C: .4byte gUnknown_83A0010 +_080DB560: .4byte gUnknown_202063C + thumb_func_end sub_80DB4F4 + + thumb_func_start sub_80DB564 +sub_80DB564: @ 80DB564 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + movs r5, 0 + ldr r0, _080DB5D4 @ =gUnknown_202063C + mov r8, r0 + lsls r3, 16 + asrs r3, 16 + lsls r4, 16 + asrs r4, 16 +_080DB588: + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + mov r1, r8 + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _080DB5DC + ldr r1, [r2, 0x1C] + ldr r0, _080DB5D8 @ =sub_80DB3EC + cmp r1, r0 + bne _080DB5DC + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r3, r0 + bne _080DB5DC + movs r1, 0x32 + ldrsh r0, [r2, r1] + cmp r4, r0 + bne _080DB5DC + ldrh r1, [r2, 0x34] + lsls r0, r1, 16 + asrs r0, 24 + cmp r12, r0 + bne _080DB5DC + movs r0, 0xFF + ands r0, r1 + cmp r7, r0 + bne _080DB5DC + movs r1, 0x36 + ldrsh r0, [r2, r1] + cmp r6, r0 + bne _080DB5DC + adds r0, r5, 0 + b _080DB5E8 + .align 2, 0 +_080DB5D4: .4byte gUnknown_202063C +_080DB5D8: .4byte sub_80DB3EC +_080DB5DC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3F + bls _080DB588 + movs r0, 0x40 +_080DB5E8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80DB564 + + thumb_func_start sub_80DB5F4 +sub_80DB5F4: @ 80DB5F4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _080DB690 @ =gUnknown_20386E0 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, 0x4] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + mov r0, sp + adds r1, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DB694 @ =gUnknown_83A0010 + ldr r0, [r0, 0x3C] + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080DB684 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DB698 @ =gUnknown_202063C + adds r4, r0, r1 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, 0x8] + bl sub_8068294 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldr r0, [r5, 0x8] + strh r0, [r4, 0x2E] + ldr r0, [r5] + strh r0, [r4, 0x30] + ldr r0, [r5, 0x4] + strh r0, [r4, 0x32] + ldr r0, [r5, 0x10] + strh r0, [r4, 0x34] + ldr r0, [r5, 0x14] + strh r0, [r4, 0x36] + ldr r0, [r5, 0x18] + strh r0, [r4, 0x38] + ldr r0, [r5, 0x1C] + cmp r0, 0 + beq _080DB684 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_80083C0 +_080DB684: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DB690: .4byte gUnknown_20386E0 +_080DB694: .4byte gUnknown_83A0010 +_080DB698: .4byte gUnknown_202063C + thumb_func_end sub_80DB5F4 + + thumb_func_start sub_80DB69C +sub_80DB69C: @ 80DB69C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r0, [r5, 0x38] + lsrs r7, r0, 8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, _080DB748 @ =gUnknown_2036E18 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DB6E8 + ldr r0, _080DB74C @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r0, r7 + bne _080DB6CE + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r0, r6 + beq _080DB6E8 +_080DB6CE: + ldr r1, [r3, 0x4] + ldrh r0, [r5, 0x30] + subs r0, r1 + strh r0, [r5, 0x30] + ldr r1, [r3, 0x8] + ldrh r0, [r5, 0x32] + subs r0, r1 + strh r0, [r5, 0x32] + ldrb r1, [r2, 0x5] + lsls r1, 8 + ldrb r0, [r2, 0x4] + orrs r0, r1 + strh r0, [r5, 0x38] +_080DB6E8: + ldrh r0, [r5, 0x34] + lsrs r1, r0, 8 + mov r8, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r0, [r5, 0x36] + lsls r0, 24 + lsrs r6, r0, 24 + movs r2, 0x30 + ldrsh r0, [r5, r2] + movs r2, 0x32 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, r8 + adds r1, r7, 0 + adds r2, r6, 0 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080DB73C + adds r0, r4, 0 + bl sub_8059F4C + lsls r0, 24 + cmp r0, 0 + beq _080DB73C + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080DB750 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DB750 +_080DB73C: + adds r0, r5, 0 + movs r1, 0x11 + bl sub_80836D8 + b _080DB786 + .align 2, 0 +_080DB748: .4byte gUnknown_2036E18 +_080DB74C: .4byte gUnknown_3005008 +_080DB750: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DB794 @ =gUnknown_2036E38 + adds r2, r0, r1 + ldr r0, [r2, 0x10] + ldr r1, [r5, 0x30] + cmp r0, r1 + beq _080DB770 + ldr r0, [r2, 0x14] + cmp r0, r1 + beq _080DB770 + movs r0, 0x1 + strh r0, [r5, 0x3C] +_080DB770: + adds r0, r5, 0 + movs r1, 0 + bl sub_8068EB4 + ldrh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + movs r2, 0 + bl sub_80DCD48 +_080DB786: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB794: .4byte gUnknown_2036E38 + thumb_func_end sub_80DB69C + + thumb_func_start sub_80DB798 +sub_80DB798: @ 80DB798 + push {r4,lr} + ldr r4, _080DB7FC @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DB800 @ =gUnknown_83A0010 + ldr r0, [r0, 0x40] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DB7F4 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DB804 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0x12 + strh r0, [r2, 0x30] +_080DB7F4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DB7FC: .4byte gUnknown_20386E0 +_080DB800: .4byte gUnknown_83A0010 +_080DB804: .4byte gUnknown_202063C + thumb_func_end sub_80DB798 + + thumb_func_start sub_80DB808 +sub_80DB808: @ 80DB808 + push {r4-r6,lr} + ldr r6, _080DB89C @ =gUnknown_20386E0 + ldrb r0, [r6] + ldrb r1, [r6, 0x4] + ldrb r2, [r6, 0x8] + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DB8A0 @ =gUnknown_2036E38 + adds r5, r1, r0 + ldr r0, _080DB8A4 @ =gUnknown_83A0010 + ldr r0, [r0, 0x78] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DB894 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r4, _080DB8A8 @ =gUnknown_202063C + adds r2, r4 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + movs r1, 0xC + ands r1, r0 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r6] + strh r0, [r2, 0x2E] + ldr r0, [r6, 0x4] + strh r0, [r2, 0x30] + ldr r0, [r6, 0x8] + strh r0, [r2, 0x32] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x20] + strh r0, [r2, 0x34] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x22] + strh r0, [r2, 0x36] +_080DB894: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DB89C: .4byte gUnknown_20386E0 +_080DB8A0: .4byte gUnknown_2036E38 +_080DB8A4: .4byte gUnknown_83A0010 +_080DB8A8: .4byte gUnknown_202063C + thumb_func_end sub_80DB808 + + thumb_func_start sub_80DB8AC +sub_80DB8AC: @ 80DB8AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080DB8EA + ldr r5, _080DB8F4 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1, 0x2] + lsls r0, 29 + cmp r0, 0 + blt _080DB8F8 +_080DB8EA: + adds r0, r4, 0 + movs r1, 0x29 + bl sub_80836D8 + b _080DB98E + .align 2, 0 +_080DB8F4: .4byte gUnknown_2036E38 +_080DB8F8: + ldrb r0, [r1, 0x5] + bl sub_805F2C8 + mov r8, r0 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DB99C @ =gUnknown_202063C + adds r6, r0, r1 + ldrh r5, [r6, 0x22] + ldrh r7, [r6, 0x20] + movs r0, 0x20 + ldrsh r1, [r6, r0] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080DB934 + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + beq _080DB94E +_080DB934: + strh r7, [r4, 0x34] + strh r5, [r4, 0x36] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DB94E + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C +_080DB94E: + strh r7, [r4, 0x20] + strh r5, [r4, 0x22] + mov r1, r8 + ldrh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 17 + subs r0, 0x8 + strh r0, [r4, 0x26] + adds r0, r6, 0 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r0, [r6, 0x5] + movs r1, 0xC + ands r1, r0 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r0, r6, 0 + adds r0, 0x3E + ldrb r1, [r0] + lsls r1, 29 + lsrs r1, 31 + adds r0, r4, 0 + bl sub_8068EB4 +_080DB98E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB99C: .4byte gUnknown_202063C + thumb_func_end sub_80DB8AC + + thumb_func_start sub_80DB9A0 +sub_80DB9A0: @ 80DB9A0 + push {r4,lr} + ldr r4, _080DBA08 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DBA0C @ =gUnknown_83A0010 + ldr r0, [r0, 0x2C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080DB9FE + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DBA10 @ =gUnknown_202063C + adds r0, r1 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r3] + movs r1, 0x3 + ldrb r2, [r4, 0xC] + ands r2, r1 + lsls r2, 2 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + movs r1, 0xD + strh r1, [r0, 0x3C] + ldrb r1, [r4, 0x10] + bl sub_800838C +_080DB9FE: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DBA08: .4byte gUnknown_20386E0 +_080DBA0C: .4byte gUnknown_83A0010 +_080DBA10: .4byte gUnknown_202063C + thumb_func_end sub_80DB9A0 + + thumb_func_start sub_80DBA14 +sub_80DBA14: @ 80DBA14 + push {r4,r5,lr} + ldr r4, _080DBA7C @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DBA80 @ =gUnknown_83A0010 + ldr r0, [r0, 0x5C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + adds r5, r1, 0 + cmp r1, 0x40 + beq _080DBA74 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DBA84 @ =gUnknown_202063C + adds r0, r1 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r3] + movs r1, 0x3 + ldrb r2, [r4, 0xC] + ands r2, r1 + lsls r2, 2 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + movs r1, 0x18 + strh r1, [r0, 0x3C] + ldrb r1, [r4, 0x10] + bl sub_800838C +_080DBA74: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DBA7C: .4byte gUnknown_20386E0 +_080DBA80: .4byte gUnknown_83A0010 +_080DBA84: .4byte gUnknown_202063C + thumb_func_end sub_80DBA14 + + thumb_func_start sub_80DBA88 +sub_80DBA88: @ 80DBA88 + push {r4,r5,lr} + ldr r4, _080DBAF0 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DBAF4 @ =gUnknown_83A0010 + ldr r0, [r0, 0x6C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + adds r5, r1, 0 + cmp r1, 0x40 + beq _080DBAE8 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DBAF8 @ =gUnknown_202063C + adds r0, r1 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r3] + movs r1, 0x3 + ldrb r2, [r4, 0xC] + ands r2, r1 + lsls r2, 2 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + movs r1, 0x23 + strh r1, [r0, 0x3C] + ldrb r1, [r4, 0x10] + bl sub_800838C +_080DBAE8: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DBAF0: .4byte gUnknown_20386E0 +_080DBAF4: .4byte gUnknown_83A0010 +_080DBAF8: .4byte gUnknown_202063C + thumb_func_end sub_80DBA88 + + thumb_func_start sub_80DBAFC +sub_80DBAFC: @ 80DBAFC + push {lr} + ldr r2, _080DBB14 @ =gUnknown_83FECE0 + movs r3, 0x2E + ldrsh r1, [r0, r3] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080DBB14: .4byte gUnknown_83FECE0 + thumb_func_end sub_80DBAFC + + thumb_func_start sub_80DBB18 +sub_80DBB18: @ 80DBB18 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080DBB2E + movs r0, 0x1 + strh r0, [r1, 0x2E] +_080DBB2E: + adds r0, r1, 0 + movs r1, 0 + bl sub_8068EB4 + pop {r0} + bx r0 + thumb_func_end sub_80DBB18 + + thumb_func_start sub_80DBB3C +sub_80DBB3C: @ 80DBB3C + push {r4,lr} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + ldrb r1, [r3] + lsls r1, 29 + lsrs r1, 31 + adds r0, r4, 0 + bl sub_8068EB4 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x38 + ble _080DBB80 + ldrh r1, [r4, 0x3C] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80836D8 +_080DBB80: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DBB3C + + thumb_func_start sub_80DBB88 +sub_80DBB88: @ 80DBB88 + push {r4-r6,lr} + ldr r6, _080DBC1C @ =gUnknown_20386E0 + ldrb r0, [r6] + ldrb r1, [r6, 0x4] + ldrb r2, [r6, 0x8] + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DBC20 @ =gUnknown_2036E38 + adds r5, r1, r0 + ldr r0, _080DBC24 @ =gUnknown_83A0010 + ldr r0, [r0, 0x34] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x40 + beq _080DBC12 + ldrb r0, [r5, 0x5] + bl sub_805F2C8 + lsls r3, r4, 4 + adds r3, r4 + lsls r3, 2 + ldr r4, _080DBC28 @ =gUnknown_202063C + adds r3, r4 + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r1, [r1] + movs r2, 0x2 + orrs r1, r2 + mov r2, r12 + strb r1, [r2] + ldrb r2, [r5, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrb r1, [r1, 0x5] + movs r2, 0xC + ands r2, r1 + ldrb r4, [r3, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r4 + orrs r1, r2 + strb r1, [r3, 0x5] + ldr r1, [r6] + strh r1, [r3, 0x2E] + ldr r1, [r6, 0x4] + strh r1, [r3, 0x30] + ldr r1, [r6, 0x8] + strh r1, [r3, 0x32] + ldrh r0, [r0, 0xA] + lsls r0, 16 + asrs r0, 17 + subs r0, 0x4 + strh r0, [r3, 0x26] + movs r0, 0x3F + bl sub_80722CC +_080DBC12: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DBC1C: .4byte gUnknown_20386E0 +_080DBC20: .4byte gUnknown_2036E38 +_080DBC24: .4byte gUnknown_83A0010 +_080DBC28: .4byte gUnknown_202063C + thumb_func_end sub_80DBB88 + + thumb_func_start sub_80DBC2C +sub_80DBC2C: @ 80DBC2C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080DBC5C + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + beq _080DBC66 +_080DBC5C: + adds r0, r4, 0 + movs r1, 0xF + bl sub_80836D8 + b _080DBCA6 +_080DBC66: + ldr r3, _080DBCB0 @ =gUnknown_202063C + ldr r2, _080DBCB4 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x20] + strh r0, [r4, 0x20] + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0 + bl sub_8068EB4 +_080DBCA6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBCB0: .4byte gUnknown_202063C +_080DBCB4: .4byte gUnknown_2036E38 + thumb_func_end sub_80DBC2C + + thumb_func_start sub_80DBCB8 +sub_80DBCB8: @ 80DBCB8 + push {r4,lr} + ldr r4, _080DBD1C @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0xC + bl sub_8063BC4 + ldr r0, _080DBD20 @ =gUnknown_83A0010 + ldr r0, [r0, 0x38] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DBD14 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DBD24 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0x10 + strh r0, [r2, 0x30] +_080DBD14: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DBD1C: .4byte gUnknown_20386E0 +_080DBD20: .4byte gUnknown_83A0010 +_080DBD24: .4byte gUnknown_202063C + thumb_func_end sub_80DBCB8 + + thumb_func_start sub_80DBD28 +sub_80DBD28: @ 80DBD28 + push {r4,lr} + ldr r4, _080DBD8C @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DBD90 @ =gUnknown_83A0010 + ldr r0, [r0, 0x30] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DBD84 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DBD94 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0xE + strh r0, [r2, 0x30] +_080DBD84: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DBD8C: .4byte gUnknown_20386E0 +_080DBD90: .4byte gUnknown_83A0010 +_080DBD94: .4byte gUnknown_202063C + thumb_func_end sub_80DBD28 + + thumb_func_start sub_80DBD98 +sub_80DBD98: @ 80DBD98 + push {r4-r7,lr} + ldr r7, _080DBE38 @ =gUnknown_20386E0 + ldrb r0, [r7] + ldrb r1, [r7, 0x4] + ldrb r2, [r7, 0x8] + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DBE3C @ =gUnknown_2036E38 + adds r6, r1, r0 + ldr r0, _080DBE40 @ =gUnknown_83A0010 + ldr r0, [r0, 0x34] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _080DBE2E + ldrb r0, [r6, 0x5] + bl sub_805F2C8 + adds r4, r0, 0 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r3, _080DBE44 @ =gUnknown_202063C + adds r0, r3 + ldr r1, _080DBE48 @ =sub_80DBE50 + str r1, [r0, 0x1C] + adds r5, r0, 0 + adds r5, 0x3E + ldrb r1, [r5] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r5] + ldrb r2, [r6, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrb r1, [r1, 0x5] + movs r2, 0xC + ands r2, r1 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r1, [r7] + strh r1, [r0, 0x2E] + ldr r1, [r7, 0x4] + strh r1, [r0, 0x30] + ldr r1, [r7, 0x8] + strh r1, [r0, 0x32] + ldr r1, _080DBE4C @ =0x0000ffff + strh r1, [r0, 0x34] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x36] + ldrh r1, [r4, 0xA] + lsls r1, 16 + asrs r1, 17 + subs r1, 0x4 + strh r1, [r0, 0x26] + movs r1, 0x1 + bl sub_800838C +_080DBE2E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080DBE38: .4byte gUnknown_20386E0 +_080DBE3C: .4byte gUnknown_2036E38 +_080DBE40: .4byte gUnknown_83A0010 +_080DBE44: .4byte gUnknown_202063C +_080DBE48: .4byte sub_80DBE50 +_080DBE4C: .4byte 0x0000ffff + thumb_func_end sub_80DBD98 + + thumb_func_start sub_80DBE50 +sub_80DBE50: @ 80DBE50 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080DBE8A + ldr r2, _080DBE94 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r5, r0, r2 + ldrb r0, [r5, 0x2] + lsls r0, 28 + cmp r0, 0 + blt _080DBE98 +_080DBE8A: + adds r0, r4, 0 + movs r1, 0x22 + bl sub_80836D8 + b _080DBEE2 + .align 2, 0 +_080DBE94: .4byte gUnknown_2036E38 +_080DBE98: + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DBEEC @ =gUnknown_202063C + adds r0, r1 + ldrh r1, [r0, 0x20] + strh r1, [r4, 0x20] + ldrh r1, [r0, 0x22] + strh r1, [r4, 0x22] + adds r0, 0x43 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0 + bl sub_8068EB4 + ldr r1, [r5, 0x10] + ldr r0, [r4, 0x34] + cmp r1, r0 + beq _080DBEE2 + ldrh r0, [r5, 0x10] + strh r0, [r4, 0x34] + ldrh r0, [r5, 0x12] + strh r0, [r4, 0x36] + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080DBEE2 + movs r0, 0x3F + bl sub_80722CC +_080DBEE2: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DBEEC: .4byte gUnknown_202063C + thumb_func_end sub_80DBE50 + + thumb_func_start sub_80DBEF0 +sub_80DBEF0: @ 80DBEF0 + push {r4,lr} + ldr r0, _080DBF44 @ =gUnknown_83A0010 + ldr r0, [r0, 0x14] + ldr r4, _080DBF48 @ =gUnknown_20386E0 + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DBF3C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DBF4C @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x5 + strh r0, [r2, 0x2E] +_080DBF3C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DBF44: .4byte gUnknown_83A0010 +_080DBF48: .4byte gUnknown_20386E0 +_080DBF4C: .4byte gUnknown_202063C + thumb_func_end sub_80DBEF0 + + thumb_func_start sub_80DBF50 +sub_80DBF50: @ 80DBF50 + push {r4-r6,lr} + ldr r6, _080DBFE4 @ =gUnknown_20386E0 + ldrb r0, [r6] + ldrb r1, [r6, 0x4] + ldrb r2, [r6, 0x8] + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DBFE8 @ =gUnknown_2036E38 + adds r5, r1, r0 + ldr r0, _080DBFEC @ =gUnknown_83A0010 + ldr r0, [r0, 0x7C] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DBFDC + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r4, _080DBFF0 @ =gUnknown_202063C + adds r2, r4 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + movs r1, 0xC + ands r1, r0 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r6] + strh r0, [r2, 0x2E] + ldr r0, [r6, 0x4] + strh r0, [r2, 0x30] + ldr r0, [r6, 0x8] + strh r0, [r2, 0x32] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x20] + strh r0, [r2, 0x34] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x22] + strh r0, [r2, 0x36] +_080DBFDC: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DBFE4: .4byte gUnknown_20386E0 +_080DBFE8: .4byte gUnknown_2036E38 +_080DBFEC: .4byte gUnknown_83A0010 +_080DBFF0: .4byte gUnknown_202063C + thumb_func_end sub_80DBF50 + + thumb_func_start sub_80DBFF4 +sub_80DBFF4: @ 80DBFF4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080DC02E + ldr r5, _080DC038 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1, 0x2] + lsls r0, 26 + cmp r0, 0 + blt _080DC03C +_080DC02E: + adds r0, r4, 0 + movs r1, 0x2A + bl sub_80836D8 + b _080DC080 + .align 2, 0 +_080DC038: .4byte gUnknown_2036E38 +_080DC03C: + ldrb r0, [r1, 0x5] + bl sub_805F2C8 + mov r1, sp + ldrb r2, [r1] + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + ldrb r2, [r1, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + ldr r2, _080DC088 @ =gUnknown_202063C + adds r1, r2 + ldrh r2, [r1, 0x20] + strh r2, [r4, 0x20] + ldrh r0, [r0, 0xA] + lsls r0, 16 + asrs r0, 17 + ldrh r2, [r1, 0x22] + adds r0, r2 + subs r0, 0x8 + strh r0, [r4, 0x22] + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0 + bl sub_8068EB4 +_080DC080: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC088: .4byte gUnknown_202063C + thumb_func_end sub_80DBFF4 + + thumb_func_start sub_80DC08C +sub_80DC08C: @ 80DC08C + push {r4,lr} + ldr r4, _080DC0EC @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DC0F0 @ =gUnknown_83A0010 + ldr r0, [r0, 0x44] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC0E4 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DC0F4 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x13 + strh r0, [r2, 0x2E] +_080DC0E4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC0EC: .4byte gUnknown_20386E0 +_080DC0F0: .4byte gUnknown_83A0010 +_080DC0F4: .4byte gUnknown_202063C + thumb_func_end sub_80DC08C + + thumb_func_start sub_80DC0F8 +sub_80DC0F8: @ 80DC0F8 + push {r4,lr} + ldr r4, _080DC158 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DC15C @ =gUnknown_83A0010 + ldr r0, [r0, 0x48] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC150 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DC160 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x14 + strh r0, [r2, 0x2E] +_080DC150: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC158: .4byte gUnknown_20386E0 +_080DC15C: .4byte gUnknown_83A0010 +_080DC160: .4byte gUnknown_202063C + thumb_func_end sub_80DC0F8 + + thumb_func_start sub_80DC164 +sub_80DC164: @ 80DC164 + push {r4,lr} + ldr r4, _080DC1C4 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DC1C8 @ =gUnknown_83A0010 + ldr r0, [r0, 0x4C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC1BC + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DC1CC @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x15 + strh r0, [r2, 0x2E] +_080DC1BC: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC1C4: .4byte gUnknown_20386E0 +_080DC1C8: .4byte gUnknown_83A0010 +_080DC1CC: .4byte gUnknown_202063C + thumb_func_end sub_80DC164 + + thumb_func_start sub_80DC1D0 +sub_80DC1D0: @ 80DC1D0 + push {r4,lr} + ldr r4, _080DC230 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DC234 @ =gUnknown_83A0010 + ldr r0, [r0, 0x50] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC228 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DC238 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x16 + strh r0, [r2, 0x2E] +_080DC228: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC230: .4byte gUnknown_20386E0 +_080DC234: .4byte gUnknown_83A0010 +_080DC238: .4byte gUnknown_202063C + thumb_func_end sub_80DC1D0 + + thumb_func_start sub_80DC23C +sub_80DC23C: @ 80DC23C + push {r4,lr} + lsls r2, 16 + lsrs r2, 16 + ldr r4, _080DC26C @ =gUnknown_20386E0 + lsls r0, 16 + asrs r0, 16 + str r0, [r4] + lsls r1, 16 + asrs r1, 16 + str r1, [r4, 0x4] + movs r0, 0x52 + str r0, [r4, 0x8] + movs r0, 0x1 + str r0, [r4, 0xC] + str r2, [r4, 0x10] + lsls r3, 16 + asrs r3, 16 + str r3, [r4, 0x14] + movs r0, 0x7 + bl sub_8083444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DC26C: .4byte gUnknown_20386E0 + thumb_func_end sub_80DC23C + + thumb_func_start sub_80DC270 +sub_80DC270: @ 80DC270 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _080DC2F0 @ =gUnknown_20386E0 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, 0x4] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + mov r0, sp + adds r1, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DC2F4 @ =gUnknown_83A0010 + ldr r0, [r0, 0x18] + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r4, r3] + ldrb r3, [r5, 0x8] + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC2E6 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DC2F8 @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r5, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r5] + strh r0, [r2, 0x30] + ldr r0, [r5, 0x4] + strh r0, [r2, 0x32] + ldr r0, [r5, 0x10] + strh r0, [r2, 0x34] + ldr r0, [r5, 0x14] + strh r0, [r2, 0x36] +_080DC2E6: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DC2F0: .4byte gUnknown_20386E0 +_080DC2F4: .4byte gUnknown_83A0010 +_080DC2F8: .4byte gUnknown_202063C + thumb_func_end sub_80DC270 + + thumb_func_start sub_80DC2FC +sub_80DC2FC: @ 80DC2FC + push {lr} + ldr r2, _080DC314 @ =gUnknown_83FECE8 + movs r3, 0x2E + ldrsh r1, [r0, r3] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080DC314: .4byte gUnknown_83FECE8 + thumb_func_end sub_80DC2FC + + thumb_func_start sub_80DC318 +sub_80DC318: @ 80DC318 + push {lr} + adds r3, r0, 0 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, 0x36] + subs r0, 0x1 + strh r0, [r3, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _080DC342 + movs r0, 0x1 + strh r0, [r3, 0x2E] +_080DC342: + pop {r0} + bx r0 + thumb_func_end sub_80DC318 + + thumb_func_start sub_80DC348 +sub_80DC348: @ 80DC348 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r4, 0x34] + bl sub_8058FA4 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + ldr r2, _080DC3A0 @ =gUnknown_2036E38 + ldr r0, _080DC3A4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x2 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DC3A0: .4byte gUnknown_2036E38 +_080DC3A4: .4byte gUnknown_2037078 + thumb_func_end sub_80DC348 + + thumb_func_start sub_80DC3A8 +sub_80DC3A8: @ 80DC3A8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8068EB4 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DC3C8 + adds r0, r4, 0 + movs r1, 0x7 + bl sub_80836D8 +_080DC3C8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DC3A8 + + thumb_func_start sub_80DC3D0 +sub_80DC3D0: @ 80DC3D0 + push {r4,r5,lr} + ldr r4, _080DC43C @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DC440 @ =gUnknown_83A0010 + ldr r0, [r0, 0x1C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0x96 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + cmp r0, 0x40 + beq _080DC42C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DC444 @ =gUnknown_202063C + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + strb r0, [r1, 0x5] + ldr r0, [r4, 0x8] + movs r2, 0 + strh r0, [r1, 0x32] + strh r2, [r1, 0x34] + ldr r0, _080DC448 @ =0x0000ffff + strh r0, [r1, 0x3A] + movs r0, 0x1 + negs r0, r0 + strh r0, [r1, 0x3C] +_080DC42C: + movs r0, 0x8 + bl sub_80837FC + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DC43C: .4byte gUnknown_20386E0 +_080DC440: .4byte gUnknown_83A0010 +_080DC444: .4byte gUnknown_202063C +_080DC448: .4byte 0x0000ffff + thumb_func_end sub_80DC3D0 + + thumb_func_start sub_80DC44C +sub_80DC44C: @ 80DC44C + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, _080DC474 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrh r0, [r2, 0x2E] + movs r3, 0x10 + negs r3, r3 + ands r3, r0 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r1 + lsrs r0, 24 + orrs r0, r3 + strh r0, [r2, 0x2E] + bx lr + .align 2, 0 +_080DC474: .4byte gUnknown_202063C + thumb_func_end sub_80DC44C + + thumb_func_start sub_80DC478 +sub_80DC478: @ 80DC478 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, _080DC4A0 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrh r0, [r2, 0x2E] + movs r3, 0xF1 + negs r3, r3 + ands r3, r0 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r1 + lsrs r0, 20 + orrs r3, r0 + strh r3, [r2, 0x2E] + bx lr + .align 2, 0 +_080DC4A0: .4byte gUnknown_202063C + thumb_func_end sub_80DC478 + + thumb_func_start sub_80DC4A4 +sub_80DC4A4: @ 80DC4A4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r4, _080DC4D0 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r3, r4 + ldrh r0, [r3, 0x2E] + ldr r4, _080DC4D4 @ =0xfffff0ff + ands r4, r0 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r1 + lsrs r0, 16 + orrs r4, r0 + strh r4, [r3, 0x2E] + strh r2, [r3, 0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DC4D0: .4byte gUnknown_202063C +_080DC4D4: .4byte 0xfffff0ff + thumb_func_end sub_80DC4A4 + + thumb_func_start sub_80DC4D8 +sub_80DC4D8: @ 80DC4D8 + ldrh r1, [r0, 0x2E] + movs r0, 0xF + ands r0, r1 + bx lr + thumb_func_end sub_80DC4D8 + + thumb_func_start sub_80DC4E0 +sub_80DC4E0: @ 80DC4E0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF0 + ands r0, r1 + lsrs r0, 4 + bx lr + thumb_func_end sub_80DC4E0 + + thumb_func_start sub_80DC4EC +sub_80DC4EC: @ 80DC4EC + ldrh r1, [r0, 0x2E] + movs r0, 0xF0 + lsls r0, 4 + ands r0, r1 + lsrs r0, 8 + bx lr + thumb_func_end sub_80DC4EC + + thumb_func_start sub_80DC4F8 +sub_80DC4F8: @ 80DC4F8 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x32 + ldrsh r0, [r6, r1] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080DC548 @ =gUnknown_2036E38 + adds r4, r0 + ldrb r0, [r4, 0x4] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r0, _080DC54C @ =gUnknown_202063C + adds r5, r0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80DC550 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80DC588 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80DC61C + ldrb r0, [r5, 0x5] + movs r1, 0xC + ands r1, r0 + ldrb r2, [r6, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC548: .4byte gUnknown_2036E38 +_080DC54C: .4byte gUnknown_202063C + thumb_func_end sub_80DC4F8 + + thumb_func_start sub_80DC550 +sub_80DC550: @ 80DC550 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _080DC584 @ =gUnknown_83FECF4 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + bl sub_80DC4E0 + lsls r0, 24 + cmp r0, 0 + bne _080DC57C + ldrb r0, [r5, 0x18] + lsrs r0, 4 + add r0, sp + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_80083A4 +_080DC57C: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC584: .4byte gUnknown_83FECF4 + thumb_func_end sub_80DC550 + + thumb_func_start sub_80DC588 +sub_80DC588: @ 80DC588 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r1, 0 + ldrh r2, [r0, 0x10] + mov r1, sp + strh r2, [r1] + ldrh r1, [r0, 0x12] + mov r0, sp + adds r0, 0x2 + strh r1, [r0] + movs r2, 0x26 + ldrsh r3, [r4, r2] + mov r8, r0 + cmp r3, 0 + bne _080DC610 + mov r0, sp + movs r5, 0 + ldrsh r2, [r0, r5] + movs r5, 0x3A + ldrsh r0, [r4, r5] + cmp r2, r0 + bne _080DC5C4 + lsls r0, r1, 16 + asrs r0, 16 + movs r5, 0x3C + ldrsh r1, [r4, r5] + cmp r0, r1 + beq _080DC610 +_080DC5C4: + strh r3, [r4, 0x38] + strh r2, [r4, 0x3A] + mov r1, r8 + movs r2, 0 + ldrsh r0, [r1, r2] + strh r0, [r4, 0x3C] + movs r5, 0x1 + mov r7, r8 + mov r6, sp +_080DC5D6: + adds r0, r5, 0 + mov r1, sp + adds r2, r7, 0 + bl sub_8063A20 + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _080DC5FC + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _080DC610 +_080DC5FC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4, 0x3A] + strh r0, [r6] + ldrh r0, [r4, 0x3C] + mov r1, r8 + strh r0, [r1] + cmp r5, 0x4 + bls _080DC5D6 +_080DC610: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DC588 + + thumb_func_start sub_80DC61C +sub_80DC61C: @ 80DC61C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r4, r2, 0 + ldr r1, _080DC680 @ =gUnknown_83FECFA + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + bl sub_80DC4D8 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + cmp r2, 0 + beq _080DC6A6 + ldrh r1, [r4, 0x36] + adds r1, 0x1 + strh r1, [r4, 0x36] + movs r3, 0x38 + ldrsh r0, [r4, r3] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080DC65C + ldrh r0, [r4, 0x34] + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] +_080DC65C: + ldrh r1, [r4, 0x36] + movs r0, 0x1F + ands r0, r1 + cmp r0, 0 + bne _080DC66C + ldrh r0, [r4, 0x34] + negs r0, r0 + strh r0, [r4, 0x34] +_080DC66C: + cmp r2, 0x2 + beq _080DC6A6 + adds r0, r4, 0 + bl sub_80DC4EC + lsls r0, 24 + cmp r0, 0 + bne _080DC684 + ldrh r0, [r4, 0x26] + b _080DC68A + .align 2, 0 +_080DC680: .4byte gUnknown_83FECFA +_080DC684: + ldrh r0, [r4, 0x26] + ldrh r3, [r4, 0x30] + adds r0, r3 +_080DC68A: + strh r0, [r5, 0x26] + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0 + beq _080DC69C + ldrh r0, [r5, 0x26] + adds r0, 0x1 + strh r0, [r5, 0x26] +_080DC69C: + ldrh r0, [r5, 0x20] + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] +_080DC6A6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DC61C + + thumb_func_start sub_80DC6B0 +sub_80DC6B0: @ 80DC6B0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080DC6F4 @ =gUnknown_8231D00 + movs r1, 0 + movs r2, 0 + movs r3, 0xFF + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r1, _080DC6F8 @ =gUnknown_202063C + adds r2, r1 + ldr r1, _080DC6FC @ =sub_80DC700 + str r1, [r2, 0x1C] + movs r1, 0x3E + adds r1, r2 + mov r12, r1 + ldrb r1, [r1] + movs r3, 0x4 + orrs r1, r3 + mov r3, r12 + strb r1, [r3] + strh r4, [r2, 0x2E] + movs r1, 0x1 + strh r1, [r2, 0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC6F4: .4byte gUnknown_8231D00 +_080DC6F8: .4byte gUnknown_202063C +_080DC6FC: .4byte sub_80DC700 + thumb_func_end sub_80DC6B0 + + thumb_func_start sub_80DC700 +sub_80DC700: @ 80DC700 + push {lr} + adds r2, r0, 0 + movs r0, 0x2E + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DC73C @ =gUnknown_202063C + adds r3, r0, r1 + ldrh r1, [r2, 0x32] + adds r0, r1, 0x1 + strh r0, [r2, 0x32] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _080DC728 + ldrh r0, [r2, 0x30] + ldrh r1, [r3, 0x26] + adds r0, r1 + strh r0, [r3, 0x26] +_080DC728: + ldrh r1, [r2, 0x32] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _080DC738 + ldrh r0, [r2, 0x30] + negs r0, r0 + strh r0, [r2, 0x30] +_080DC738: + pop {r0} + bx r0 + .align 2, 0 +_080DC73C: .4byte gUnknown_202063C + thumb_func_end sub_80DC700 + + thumb_func_start sub_80DC740 +sub_80DC740: @ 80DC740 + push {r4,lr} + ldr r4, _080DC7A4 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0xC + bl sub_8063BC4 + ldr r0, _080DC7A8 @ =gUnknown_83A0010 + ldr r0, [r0, 0x24] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC79C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DC7AC @ =gUnknown_202063C + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0xA + strh r0, [r2, 0x30] +_080DC79C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC7A4: .4byte gUnknown_20386E0 +_080DC7A8: .4byte gUnknown_83A0010 +_080DC7AC: .4byte gUnknown_202063C + thumb_func_end sub_80DC740 + + thumb_func_start sub_80DC7B0 +sub_80DC7B0: @ 80DC7B0 + push {r4-r7,lr} + ldr r7, _080DC85C @ =gUnknown_20386E0 + ldrb r0, [r7] + ldrb r1, [r7, 0x4] + ldrb r2, [r7, 0x8] + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DC860 @ =gUnknown_2036E38 + adds r6, r1, r0 + ldr r0, _080DC864 @ =gUnknown_83A0010 + ldr r0, [r0, 0x74] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x40 + beq _080DC854 + ldrb r0, [r6, 0x5] + bl sub_805F2C8 + adds r5, r0, 0 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r4, _080DC868 @ =gUnknown_202063C + adds r0, r4 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r3] + ldrb r2, [r6, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrb r1, [r1, 0x5] + movs r2, 0xC + ands r2, r1 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r1, [r7] + strh r1, [r0, 0x2E] + ldr r1, [r7, 0x4] + strh r1, [r0, 0x30] + ldr r1, [r7, 0x8] + strh r1, [r0, 0x32] + ldrb r2, [r6, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x20] + strh r1, [r0, 0x34] + ldrb r2, [r6, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x22] + strh r1, [r0, 0x36] + ldrh r1, [r5, 0xA] + lsls r1, 16 + asrs r1, 17 + subs r1, 0x2 + strh r1, [r0, 0x26] + movs r1, 0x2 + bl sub_80083C0 +_080DC854: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080DC85C: .4byte gUnknown_20386E0 +_080DC860: .4byte gUnknown_2036E38 +_080DC864: .4byte gUnknown_83A0010 +_080DC868: .4byte gUnknown_202063C + thumb_func_end sub_80DC7B0 + + thumb_func_start sub_80DC86C +sub_80DC86C: @ 80DC86C + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080DC8A6 + ldr r2, _080DC8B0 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1, 0x2] + lsls r0, 27 + cmp r0, 0 + blt _080DC8B4 +_080DC8A6: + adds r0, r4, 0 + movs r1, 0x27 + bl sub_80836D8 + b _080DC926 + .align 2, 0 +_080DC8B0: .4byte gUnknown_2036E38 +_080DC8B4: + ldr r2, _080DC930 @ =gUnknown_202063C + ldrb r1, [r1, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r5, [r0, 0x22] + ldrh r6, [r0, 0x20] + movs r2, 0x20 + ldrsh r1, [r0, r2] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080DC8DC + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + beq _080DC8F6 +_080DC8DC: + strh r6, [r4, 0x34] + strh r5, [r4, 0x36] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DC8F6 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C +_080DC8F6: + strh r6, [r4, 0x20] + strh r5, [r4, 0x22] + ldr r3, _080DC930 @ =gUnknown_202063C + ldr r2, _080DC934 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x43 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0 + bl sub_8068EB4 +_080DC926: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC930: .4byte gUnknown_202063C +_080DC934: .4byte gUnknown_2036E38 + thumb_func_end sub_80DC86C + + thumb_func_start sub_80DC938 +sub_80DC938: @ 80DC938 + push {r4,lr} + ldr r4, _080DC990 @ =gUnknown_20386E0 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0 + bl sub_8063BC4 + ldr r0, _080DC994 @ =gUnknown_83A0010 + adds r0, 0x88 + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DC988 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080DC998 @ =gUnknown_202063C + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1, 0x5] +_080DC988: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DC990: .4byte gUnknown_20386E0 +_080DC994: .4byte gUnknown_83A0010 +_080DC998: .4byte gUnknown_202063C + thumb_func_end sub_80DC938 + + thumb_func_start sub_80DC99C +sub_80DC99C: @ 80DC99C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x22] + subs r1, r0 + strh r1, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0 + bl sub_8068EB4 + ldrh r1, [r4, 0x3E] + ldr r0, _080DC9D8 @ =0x00001004 + ands r0, r1 + cmp r0, 0 + beq _080DC9D0 + adds r0, r4, 0 + movs r1, 0x35 + bl sub_80836D8 +_080DC9D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DC9D8: .4byte 0x00001004 + thumb_func_end sub_80DC99C + + thumb_func_start sub_80DC9DC +sub_80DC9DC: @ 80DC9DC + movs r0, 0 + bx lr + thumb_func_end sub_80DC9DC + + thumb_func_start sub_80DC9E0 +sub_80DC9E0: @ 80DC9E0 + push {lr} + movs r0, 0x1C + movs r1, 0x18 + movs r2, 0x4 + bl sub_80DCA10 + pop {r1} + bx r1 + thumb_func_end sub_80DC9E0 + + thumb_func_start sub_80DC9F0 +sub_80DC9F0: @ 80DC9F0 + push {lr} + movs r0, 0x1D + movs r1, 0x19 + movs r2, 0x3 + bl sub_80DCA10 + pop {r1} + bx r1 + thumb_func_end sub_80DC9F0 + + thumb_func_start sub_80DCA00 +sub_80DCA00: @ 80DCA00 + push {lr} + movs r0, 0x24 + movs r1, 0x1C + movs r2, 0x2 + bl sub_80DCA10 + pop {r1} + bx r1 + thumb_func_end sub_80DCA00 + + thumb_func_start sub_80DCA10 +sub_80DCA10: @ 80DCA10 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r7, r2, 24 + ldr r5, _080DCA44 @ =gUnknown_20386E0 + ldrb r0, [r5] + ldrb r1, [r5, 0x4] + ldrb r2, [r5, 0x8] + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + beq _080DCA48 + adds r0, r4, 0 + bl sub_80837FC + movs r0, 0x40 + b _080DCAB4 + .align 2, 0 +_080DCA44: .4byte gUnknown_20386E0 +_080DCA48: + ldr r1, _080DCAC0 @ =gUnknown_83A0010 + lsls r0, r6, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006FE0 + mov r1, sp + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080DCAB0 + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _080DCAC4 @ =gUnknown_202063C + adds r2, r0 + movs r0, 0x3E + adds r0, r2 + mov r12, r0 + ldrb r3, [r0] + lsls r1, r3, 30 + lsrs r1, 31 + adds r1, 0x1 + movs r0, 0x1 + ands r1, r0 + lsls r1, 1 + movs r0, 0x3 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + lsls r3, r7, 4 + ldrb r1, [r2, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r3 + strb r0, [r2, 0x5] + mov r0, r8 + strh r0, [r2, 0x30] + ldr r0, [r5] + strh r0, [r2, 0x32] + ldr r0, [r5, 0x4] + strh r0, [r2, 0x34] + ldr r0, [r5, 0x8] + strh r0, [r2, 0x36] +_080DCAB0: + mov r0, sp + ldrb r0, [r0] +_080DCAB4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080DCAC0: .4byte gUnknown_83A0010 +_080DCAC4: .4byte gUnknown_202063C + thumb_func_end sub_80DCA10 + + thumb_func_start sub_80DCAC8 +sub_80DCAC8: @ 80DCAC8 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r0, [r5, 0x32] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x34] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r5, 0x36] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + beq _080DCAF8 + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_80836D8 +_080DCAF8: + ldr r4, _080DCBB0 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + bl sub_805F2C8 + mov r1, sp + ldrb r2, [r1] + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrb r1, [r1, 0x4] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + ldr r1, _080DCBB4 @ =gUnknown_202063C + adds r2, r1 + adds r1, r2, 0 + adds r1, 0x3E + ldrb r1, [r1] + movs r3, 0x3E + adds r3, r5 + mov r12, r3 + movs r3, 0x4 + ands r3, r1 + mov r1, r12 + ldrb r4, [r1] + movs r1, 0x5 + negs r1, r1 + ands r1, r4 + orrs r1, r3 + mov r3, r12 + strb r1, [r3] + ldrh r1, [r2, 0x20] + strh r1, [r5, 0x20] + ldrh r0, [r0, 0xA] + lsls r0, 16 + asrs r0, 17 + ldrh r1, [r2, 0x22] + adds r0, r1 + subs r0, 0x10 + strh r0, [r5, 0x22] + adds r2, 0x43 + ldrb r0, [r2] + subs r0, 0x1 + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0x1 + bne _080DCB78 + adds r0, r1, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + movs r1, 0x1 + bl sub_800838C +_080DCB78: + movs r3, 0x2E + ldrsh r0, [r5, r3] + ldrh r2, [r5, 0x2E] + cmp r0, 0x2 + bne _080DCB94 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DCB94 + movs r0, 0x1 + strh r0, [r5, 0x3C] +_080DCB94: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080DCBA8 + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_80836D8 +_080DCBA8: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DCBB0: .4byte gUnknown_2036E38 +_080DCBB4: .4byte gUnknown_202063C + thumb_func_end sub_80DCAC8 + + thumb_func_start sub_80DCBB8 +sub_80DCBB8: @ 80DCBB8 + push {lr} + adds r1, r0, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080DCBD6 + ldr r2, _080DCBDC @ =gUnknown_202063C + ldrb r1, [r1, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x2E] + adds r1, 0x1 + strh r1, [r0, 0x2E] +_080DCBD6: + pop {r0} + bx r0 + .align 2, 0 +_080DCBDC: .4byte gUnknown_202063C + thumb_func_end sub_80DCBB8 + + thumb_func_start sub_80DCBE0 +sub_80DCBE0: @ 80DCBE0 + push {lr} + adds r2, r0, 0 + adds r2, 0x21 + ldrb r1, [r2] + cmp r1, 0x2 + beq _080DCC16 + cmp r1, 0 + beq _080DCC16 + ldrb r1, [r0, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DCC08 @ =gUnknown_202063C + adds r1, r0, r1 + movs r3, 0x3C + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080DCC0C + movs r0, 0 + b _080DCC18 + .align 2, 0 +_080DCC08: .4byte gUnknown_202063C +_080DCC0C: + movs r0, 0x2 + strb r0, [r2] + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] +_080DCC16: + movs r0, 0x1 +_080DCC18: + pop {r1} + bx r1 + thumb_func_end sub_80DCBE0 + + thumb_func_start sub_80DCC1C +sub_80DCC1C: @ 80DCC1C + push {r4,lr} + ldr r4, _080DCC84 @ =gUnknown_20386E0 + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + ldr r0, [r4, 0x4] + adds r0, 0x7 + str r0, [r4, 0x4] + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_8063BC4 + ldr r0, _080DCC88 @ =gUnknown_83A0010 + adds r0, 0x8C + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080DCC7C + ldr r0, _080DCC8C @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r0, 0x3 + ldrb r2, [r4, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] +_080DCC7C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DCC84: .4byte gUnknown_20386E0 +_080DCC88: .4byte gUnknown_83A0010 +_080DCC8C: .4byte gUnknown_202063C + thumb_func_end sub_80DCC1C + + thumb_func_start sub_80DCC90 +sub_80DCC90: @ 80DCC90 + push {lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080DCCC4 + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DCCBC + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_080DCCBC: + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080DCCDA +_080DCCC4: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x22 + ble _080DCCDA + adds r0, r2, 0 + movs r1, 0x36 + bl sub_80836D8 +_080DCCDA: + pop {r0} + bx r0 + thumb_func_end sub_80DCC90 + + thumb_func_start sub_80DCCE0 +sub_80DCCE0: @ 80DCCE0 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DCCFE + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80836D8 + b _080DCD14 +_080DCCFE: + adds r0, r4, 0 + movs r1, 0 + bl sub_8068EB4 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + movs r2, 0 + bl sub_80682F8 +_080DCD14: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DCCE0 + + thumb_func_start sub_80DCD1C +sub_80DCD1C: @ 80DCD1C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DCD3A + ldrh r1, [r2, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl sub_80836D8 + b _080DCD42 +_080DCD3A: + adds r0, r2, 0 + movs r1, 0 + bl sub_8068EB4 +_080DCD42: + pop {r0} + bx r0 + thumb_func_end sub_80DCD1C + + thumb_func_start sub_80DCD48 +sub_80DCD48: @ 80DCD48 + push {r4-r7,lr} + adds r6, r0, 0 + adds r0, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + adds r1, r6, 0 + bl sub_80682F8 + movs r7, 0 +_080DCD5E: + lsls r0, r7, 3 + adds r0, r7 + lsls r0, 2 + ldr r1, _080DCDF8 @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r0, [r4] + lsls r0, 31 + cmp r0, 0 + beq _080DCE00 + ldrb r0, [r4, 0x5] + bl sub_805F2C8 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DCDFC @ =gUnknown_202063C + adds r5, r0, r1 + adds r0, r6, 0 + adds r0, 0x28 + movs r2, 0 + ldrsb r2, [r0, r2] + ldrh r0, [r6, 0x20] + adds r1, r0, r2 + subs r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + asrs r1, 16 + movs r0, 0x20 + ldrsh r2, [r5, r0] + cmp r1, r2 + bge _080DCE00 + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, r2 + ble _080DCE00 + adds r0, r5, 0 + adds r0, 0x29 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r2, [r5, 0x22] + adds r2, r3 + ldrh r4, [r5, 0x22] + adds r0, r6, 0 + adds r0, 0x29 + movs r1, 0 + ldrsb r1, [r0, r1] + ldrh r0, [r6, 0x22] + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + adds r3, r0, r3 + lsls r2, 16 + asrs r2, 16 + lsls r3, 16 + asrs r3, 16 + cmp r2, r3 + blt _080DCDD8 + cmp r2, r0 + bge _080DCE00 +_080DCDD8: + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, r3 + ble _080DCE00 + adds r2, r6, 0 + adds r2, 0x43 + adds r0, r5, 0 + adds r0, 0x43 + ldrb r1, [r0] + ldrb r0, [r2] + cmp r0, r1 + bhi _080DCE00 + adds r0, r1, 0x2 + strb r0, [r2] + b _080DCE0A + .align 2, 0 +_080DCDF8: .4byte gUnknown_2036E38 +_080DCDFC: .4byte gUnknown_202063C +_080DCE00: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0xF + bls _080DCD5E +_080DCE0A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DCD48 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s new file mode 100644 index 000000000..65bf1aa9c --- /dev/null +++ b/asm/field_fadetransition.s @@ -0,0 +1,2391 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_807DB14 +sub_807DB14: @ 807DB14 + push {lr} + sub sp, 0x4 + ldr r0, _0807DB2C @ =0x7fff7fff + str r0, [sp] + ldr r1, _0807DB30 @ =gUnknown_20375F8 + ldr r2, _0807DB34 @ =0x01000100 + mov r0, sp + bl CpuFastSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0807DB2C: .4byte 0x7fff7fff +_0807DB30: .4byte gUnknown_20375F8 +_0807DB34: .4byte 0x01000100 + thumb_func_end sub_807DB14 + + thumb_func_start sub_807DB38 +sub_807DB38: @ 807DB38 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r1, _0807DB50 @ =gUnknown_20375F8 + ldr r2, _0807DB54 @ =0x01000100 + mov r0, sp + bl CpuFastSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0807DB50: .4byte gUnknown_20375F8 +_0807DB54: .4byte 0x01000100 + thumb_func_end sub_807DB38 + + thumb_func_start sub_807DB58 +sub_807DB58: @ 807DB58 + push {r4,lr} + bl sub_80561A0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8056188 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80C9DCC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807DB82 + cmp r0, 0x1 + beq _0807DB94 + b _0807DBA4 +_0807DB82: + bl sub_807DB38 + movs r0, 0 + movs r1, 0 + bl sub_807A818 + bl sub_807DB38 + b _0807DBA4 +_0807DB94: + bl sub_807DB14 + movs r0, 0x2 + movs r1, 0 + bl sub_807A818 + bl sub_807DB14 +_0807DBA4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807DB58 + + thumb_func_start sub_807DBAC +sub_807DBAC: @ 807DBAC + push {r4,lr} + bl sub_80561A0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8056188 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80C9DCC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807DBD6 + cmp r0, 0x1 + beq _0807DBE8 + b _0807DBF8 +_0807DBD6: + bl sub_807DB38 + movs r0, 0 + movs r1, 0x3 + bl sub_807A818 + bl sub_807DB38 + b _0807DBF8 +_0807DBE8: + bl sub_807DB14 + movs r0, 0x2 + movs r1, 0x3 + bl sub_807A818 + bl sub_807DB14 +_0807DBF8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807DBAC + + thumb_func_start sub_807DC00 +sub_807DC00: @ 807DC00 + push {lr} + bl sub_807DB38 + movs r0, 0 + movs r1, 0 + bl sub_807A818 + bl sub_807DB38 + pop {r0} + bx r0 + thumb_func_end sub_807DC00 + + thumb_func_start sub_807DC18 +sub_807DC18: @ 807DC18 + push {r4,lr} + bl sub_8055250 + adds r4, r0, 0 + ldr r1, _0807DC54 @ =gUnknown_2036DFC + ldrb r0, [r4, 0x14] + ldrb r1, [r1, 0x14] + cmp r0, r1 + beq _0807DC36 + movs r1, 0 + bl sub_80F8110 + lsls r0, 24 + cmp r0, 0 + bne _0807DC58 +_0807DC36: + bl sub_8056188 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4, 0x17] + bl sub_80C9D7C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807DC58 + cmp r0, 0x1 + beq _0807DC62 + b _0807DC6A + .align 2, 0 +_0807DC54: .4byte gUnknown_2036DFC +_0807DC58: + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + b _0807DC6A +_0807DC62: + movs r0, 0x3 + movs r1, 0 + bl sub_807A818 +_0807DC6A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807DC18 + + thumb_func_start sub_807DC70 +sub_807DC70: @ 807DC70 + push {r4,lr} + bl sub_8056188 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8055250 + ldrb r1, [r0, 0x17] + adds r0, r4, 0 + bl sub_80C9D7C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807DC96 + cmp r0, 0x1 + beq _0807DCA0 + b _0807DCA8 +_0807DC96: + movs r0, 0x1 + movs r1, 0x3 + bl sub_807A818 + b _0807DCA8 +_0807DCA0: + movs r0, 0x3 + movs r1, 0x3 + bl sub_807A818 +_0807DCA8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807DC70 + + thumb_func_start sub_807DCB0 +sub_807DCB0: @ 807DCB0 + push {lr} + lsls r0, 24 + movs r1, 0 + cmp r0, 0 + bne _0807DCBC + movs r1, 0x1 +_0807DCBC: + adds r0, r1, 0 + bl sub_805CB04 + pop {r0} + bx r0 + thumb_func_end sub_807DCB0 + + thumb_func_start sub_807DCC8 +sub_807DCC8: @ 807DCC8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807E418 + cmp r0, 0x1 + bne _0807DCDC + adds r0, r4, 0 + bl sub_8077508 +_0807DCDC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807DCC8 + + thumb_func_start sub_807DCE4 +sub_807DCE4: @ 807DCE4 + push {lr} + bl sub_8069940 + bl sub_8055DC4 + bl sub_807DC00 + ldr r0, _0807DD00 @ =sub_807DCC8 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807DD00: .4byte sub_807DCC8 + thumb_func_end sub_807DCE4 + + thumb_func_start sub_807DD04 +sub_807DD04: @ 807DD04 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807E418 + cmp r0, 0x1 + bne _0807DD1C + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 +_0807DD1C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807DD04 + + thumb_func_start sub_807DD24 +sub_807DD24: @ 807DD24 + push {lr} + bl sub_8069940 + bl sub_8055DC4 + bl sub_807DC00 + ldr r0, _0807DD40 @ =sub_807DD04 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807DD40: .4byte sub_807DD04 + thumb_func_end sub_807DD24 + + thumb_func_start sub_807DD44 +sub_807DD44: @ 807DD44 + push {lr} + bl sub_8069940 + bl sub_807DC00 + ldr r0, _0807DD5C @ =sub_807DD04 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807DD5C: .4byte sub_807DD04 + thumb_func_end sub_807DD44 + + thumb_func_start sub_807DD60 +sub_807DD60: @ 807DD60 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r2, _0807DD84 @ =gUnknown_3005090 + adds r4, r0, r2 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807DD9A + cmp r0, 0x1 + bgt _0807DD88 + cmp r0, 0 + beq _0807DD8E + b _0807DDCA + .align 2, 0 +_0807DD84: .4byte gUnknown_3005090 +_0807DD88: + cmp r0, 0x2 + beq _0807DDB8 + b _0807DDCA +_0807DD8E: + bl sub_8081150 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + b _0807DDB0 +_0807DD9A: + movs r1, 0xA + ldrsh r0, [r4, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + beq _0807DDCA + bl sub_807DB58 +_0807DDB0: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807DDCA +_0807DDB8: + bl sub_807E418 + cmp r0, 0x1 + bne _0807DDCA + bl sub_806994C + adds r0, r5, 0 + bl sub_8077508 +_0807DDCA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807DD60 + + thumb_func_start sub_807DDD0 +sub_807DDD0: @ 807DDD0 + push {lr} + bl sub_8069940 + bl sub_8055DC4 + bl sub_807DB38 + ldr r0, _0807DDEC @ =sub_807DD60 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807DDEC: .4byte sub_807DD60 + thumb_func_end sub_807DDD0 + + thumb_func_start sub_807DDF0 +sub_807DDF0: @ 807DDF0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807DE14 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807DE24 + cmp r0, 0x1 + bgt _0807DE18 + cmp r0, 0 + beq _0807DE1E + b _0807DE50 + .align 2, 0 +_0807DE14: .4byte gUnknown_3005090 +_0807DE18: + cmp r0, 0x2 + beq _0807DE3A + b _0807DE50 +_0807DE1E: + bl sub_800AB9C + b _0807DE32 +_0807DE24: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0807DE50 + bl sub_807DB58 +_0807DE32: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807DE50 +_0807DE3A: + bl sub_807E418 + cmp r0, 0x1 + bne _0807DE50 + bl sub_8009FE8 + bl sub_806994C + adds r0, r5, 0 + bl sub_8077508 +_0807DE50: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807DDF0 + + thumb_func_start sub_807DE58 +sub_807DE58: @ 807DE58 + push {lr} + bl sub_8069940 + bl sub_8055DC4 + bl sub_807DB38 + ldr r0, _0807DE74 @ =sub_807DDF0 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807DE74: .4byte sub_807DDF0 + thumb_func_end sub_807DE58 + + thumb_func_start sub_807DE78 +sub_807DE78: @ 807DE78 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059BDC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807DEE8 + ldr r5, _0807DED8 @ =sub_807DFBC + bl sub_80561A0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8056188 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80C9DCC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807DEDC + cmp r0, 0x1 + beq _0807DEE2 + b _0807DF2E + .align 2, 0 +_0807DED8: .4byte sub_807DFBC +_0807DEDC: + bl sub_807DB38 + b _0807DF2E +_0807DEE2: + bl sub_807DB14 + b _0807DF2E +_0807DEE8: + adds r0, r5, 0 + bl sub_807DF4C + adds r0, r4, 0 + bl sub_8059C8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807DF04 + ldr r5, _0807DF00 @ =sub_807E20C + b _0807DF2E + .align 2, 0 +_0807DF00: .4byte sub_807E20C +_0807DF04: + adds r0, r4, 0 + bl sub_8059C5C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807DF2C + ldr r0, _0807DF20 @ =gUnknown_2031DE0 + ldrb r0, [r0] + ldr r5, _0807DF24 @ =sub_807E2CC + cmp r0, 0 + bne _0807DF2E + ldr r5, _0807DF28 @ =sub_807EC34 + b _0807DF2E + .align 2, 0 +_0807DF20: .4byte gUnknown_2031DE0 +_0807DF24: .4byte sub_807E2CC +_0807DF28: .4byte sub_807EC34 +_0807DF2C: + ldr r5, _0807DF44 @ =sub_807E2CC +_0807DF2E: + ldr r1, _0807DF48 @ =gUnknown_2031DE0 + movs r0, 0 + strb r0, [r1] + adds r0, r5, 0 + movs r1, 0xA + bl sub_807741C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807DF44: .4byte sub_807E2CC +_0807DF48: .4byte gUnknown_2031DE0 + thumb_func_end sub_807DE78 + + thumb_func_start sub_807DF4C +sub_807DF4C: @ 807DF4C + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _0807DF5A + bl sub_807DB58 + b _0807DF5E +_0807DF5A: + bl sub_807DC00 +_0807DF5E: + pop {r0} + bx r0 + thumb_func_end sub_807DF4C + + thumb_func_start sub_807DF64 +sub_807DF64: @ 807DF64 + push {lr} + bl sub_8055DC4 + bl sub_8111CF0 + movs r0, 0 + bl sub_807DE78 + bl sub_8069940 + pop {r0} + bx r0 + thumb_func_end sub_807DF64 + + thumb_func_start sub_807DF7C +sub_807DF7C: @ 807DF7C + push {lr} + bl sub_8055DC4 + bl sub_8111CF0 + movs r0, 0x1 + bl sub_807DE78 + bl sub_8069940 + pop {r0} + bx r0 + thumb_func_end sub_807DF7C + + thumb_func_start sub_807DF94 +sub_807DF94: @ 807DF94 + push {lr} + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8111CF0 + movs r0, 0x28 + bl sub_80722CC + ldr r0, _0807DFB8 @ =sub_807E31C + movs r1, 0xA + bl sub_807741C + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_0807DFB8: .4byte sub_807E31C + thumb_func_end sub_807DF94 + + thumb_func_start sub_807DFBC +sub_807DFBC: @ 807DFBC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807DFF8 @ =gUnknown_3005090 + adds r4, r0, r1 + adds r6, r4, 0 + adds r6, 0xC + adds r7, r4, 0 + adds r7, 0xE + movs r2, 0x8 + ldrsh r0, [r4, r2] + adds r2, r1, 0 + cmp r0, 0 + bne _0807DFE2 + movs r0, 0x5 + strh r0, [r4, 0x8] +_0807DFE2: + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x9 + bls _0807DFEC + b _0807E206 +_0807DFEC: + lsls r0, 2 + ldr r1, _0807DFFC @ =_0807E000 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807DFF8: .4byte gUnknown_3005090 +_0807DFFC: .4byte _0807E000 + .align 2, 0 +_0807E000: + .4byte _0807E028 + .4byte _0807E160 + .4byte _0807E198 + .4byte _0807E1DC + .4byte _0807E1F8 + .4byte _0807E04C + .4byte _0807E064 + .4byte _0807E0A2 + .4byte _0807E0EC + .4byte _0807E10E +_0807E028: + movs r0, 0 + bl sub_807DCB0 + bl sub_8068974 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_805C538 + movs r2, 0 + ldrsh r0, [r6, r2] + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_805B268 + movs r0, 0x1 + strh r0, [r4, 0x8] + b _0807E206 +_0807E04C: + movs r0, 0 + bl sub_807DCB0 + bl sub_8068974 + bl sub_807F114 + bl sub_807DBAC + movs r0, 0x6 + strh r0, [r4, 0x8] + b _0807E206 +_0807E064: + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x19 + beq _0807E074 + b _0807E206 +_0807E074: + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_805C538 + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_805B364 + lsls r0, 16 + lsrs r0, 16 + bl sub_80722CC + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_805B310 + movs r0, 0x7 + strh r0, [r4, 0x8] + b _0807E206 +_0807E0A2: + bl sub_805B350 + lsls r0, 24 + cmp r0, 0 + beq _0807E0AE + b _0807E206 +_0807E0AE: + adds r0, r4, 0 + adds r0, 0x20 + adds r1, r4, 0 + adds r1, 0x22 + bl sub_805C538 + movs r0, 0x1 + bl sub_807DCB0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E0E8 @ =gUnknown_2036E38 + adds r0, r1 + movs r1, 0x10 + bl sub_8063CA4 + movs r0, 0x8 + strh r0, [r4, 0x8] + b _0807E206 + .align 2, 0 +_0807E0E8: .4byte gUnknown_2036E38 +_0807E0EC: + ldrh r0, [r4, 0x24] + adds r0, 0x1 + strh r0, [r4, 0x24] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xE + beq _0807E0FC + b _0807E206 +_0807E0FC: + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x22 + ldrsh r1, [r4, r2] + bl sub_805B2D0 + movs r0, 0x9 + strh r0, [r4, 0x8] + b _0807E206 +_0807E10E: + bl sub_807E418 + cmp r0, 0 + beq _0807E206 + bl sub_8069554 + lsls r0, 24 + cmp r0, 0 + beq _0807E206 + bl sub_805B350 + lsls r0, 24 + cmp r0, 0 + bne _0807E206 + ldr r0, _0807E158 @ =sub_807F204 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0807E206 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E15C @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + b _0807E1F2 + .align 2, 0 +_0807E158: .4byte sub_807F204 +_0807E15C: .4byte gUnknown_2036E38 +_0807E160: + bl sub_807E418 + cmp r0, 0 + beq _0807E206 + movs r0, 0x1 + bl sub_807DCB0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E194 @ =gUnknown_2036E38 + adds r0, r1 + movs r1, 0x10 + bl sub_8063CA4 + movs r0, 0x2 + strh r0, [r4, 0x8] + b _0807E206 + .align 2, 0 +_0807E194: .4byte gUnknown_2036E38 +_0807E198: + bl sub_8069554 + lsls r0, 24 + cmp r0, 0 + beq _0807E206 + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_805B2D0 + lsls r0, 24 + asrs r0, 24 + strh r0, [r4, 0xA] + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E1D8 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + movs r0, 0x3 + strh r0, [r4, 0x8] + b _0807E206 + .align 2, 0 +_0807E1D8: .4byte gUnknown_2036E38 +_0807E1DC: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + blt _0807E1F2 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + beq _0807E206 +_0807E1F2: + movs r0, 0x4 + strh r0, [r4, 0x8] + b _0807E206 +_0807E1F8: + bl sub_8068A5C + bl sub_806994C + adds r0, r5, 0 + bl sub_8077508 +_0807E206: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807DFBC + + thumb_func_start sub_807E20C +sub_807E20C: @ 807E20C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0807E238 @ =gUnknown_3005090 + adds r5, r0, r1 + adds r6, r5, 0 + adds r6, 0xC + adds r7, r5, 0 + adds r7, 0xE + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0807E25E + cmp r0, 0x1 + bgt _0807E23C + cmp r0, 0 + beq _0807E246 + b _0807E2C6 + .align 2, 0 +_0807E238: .4byte gUnknown_3005090 +_0807E23C: + cmp r0, 0x2 + beq _0807E2A8 + cmp r0, 0x3 + beq _0807E2B8 + b _0807E2C6 +_0807E246: + movs r0, 0 + bl sub_807DCB0 + bl sub_8068974 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_805C538 + movs r0, 0x1 + strh r0, [r5, 0x8] + b _0807E2C6 +_0807E25E: + bl sub_807E418 + cmp r0, 0 + beq _0807E2C6 + movs r0, 0x1 + bl sub_807DCB0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0807E2A4 @ =gUnknown_2036E38 + adds r4, r0 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063F84 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + movs r0, 0x2 + strh r0, [r5, 0x8] + b _0807E2C6 + .align 2, 0 +_0807E2A4: .4byte gUnknown_2036E38 +_0807E2A8: + bl sub_8069554 + lsls r0, 24 + cmp r0, 0 + beq _0807E2C6 + movs r0, 0x3 + strh r0, [r5, 0x8] + b _0807E2C6 +_0807E2B8: + bl sub_8068A5C + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 +_0807E2C6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807E20C + + thumb_func_start sub_807E2CC +sub_807E2CC: @ 807E2CC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0807E2EC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0807E2F0 + cmp r0, 0x1 + beq _0807E300 + b _0807E316 + .align 2, 0 +_0807E2EC: .4byte gUnknown_3005090 +_0807E2F0: + bl sub_8068974 + bl sub_8069940 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807E316 +_0807E300: + bl sub_807E418 + cmp r0, 0 + beq _0807E316 + bl sub_8068A5C + bl sub_806994C + adds r0, r5, 0 + bl sub_8077508 +_0807E316: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807E2CC + + thumb_func_start sub_807E31C +sub_807E31C: @ 807E31C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0807E33C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0807E340 + cmp r0, 0x1 + beq _0807E354 + b _0807E372 + .align 2, 0 +_0807E33C: .4byte gUnknown_3005090 +_0807E340: + bl sub_8068974 + bl sub_8069940 + bl sub_805DC04 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807E372 +_0807E354: + bl sub_807E418 + cmp r0, 0 + beq _0807E372 + bl sub_805DC24 + cmp r0, 0x1 + beq _0807E372 + bl sub_8068A5C + bl sub_806994C + adds r0, r5, 0 + bl sub_8077508 +_0807E372: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807E31C + + thumb_func_start sub_807E378 +sub_807E378: @ 807E378 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807E418 + cmp r0, 0x1 + bne _0807E394 + adds r0, r4, 0 + bl sub_8077508 + ldr r0, _0807E39C @ =sub_806F1F0 + movs r1, 0x50 + bl sub_807741C +_0807E394: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807E39C: .4byte sub_806F1F0 + thumb_func_end sub_807E378 + + thumb_func_start sub_807E3A0 +sub_807E3A0: @ 807E3A0 + push {lr} + bl sub_807DC00 + ldr r0, _0807E3B8 @ =sub_807E378 + movs r1, 0x50 + bl sub_807741C + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_0807E3B8: .4byte sub_807E378 + thumb_func_end sub_807E3A0 + + thumb_func_start sub_807E3BC +sub_807E3BC: @ 807E3BC + push {lr} + bl sub_806F1D4 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_807E3BC + + thumb_func_start sub_807E3C8 +sub_807E3C8: @ 807E3C8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807E418 + cmp r0, 0x1 + bne _0807E3E4 + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 + bl sub_80696C0 +_0807E3E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807E3C8 + + thumb_func_start sub_807E3EC +sub_807E3EC: @ 807E3EC + push {lr} + bl sub_8069940 + bl sub_8055DC4 + bl sub_807DC00 + ldr r0, _0807E408 @ =sub_807E3C8 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E408: .4byte sub_807E3C8 + thumb_func_end sub_807E3EC + + thumb_func_start sub_807E40C +sub_807E40C: @ 807E40C + ldr r0, _0807E414 @ =gUnknown_2037AB8 + ldrb r0, [r0, 0x7] + lsrs r0, 7 + bx lr + .align 2, 0 +_0807E414: .4byte gUnknown_2037AB8 + thumb_func_end sub_807E40C + + thumb_func_start sub_807E418 +sub_807E418: @ 807E418 + push {lr} + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807E432 + bl sub_80F83B0 + cmp r0, 0 + beq _0807E432 + movs r0, 0x1 + b _0807E434 +_0807E432: + movs r0, 0 +_0807E434: + pop {r1} + bx r1 + thumb_func_end sub_807E418 + + thumb_func_start sub_807E438 +sub_807E438: @ 807E438 + push {lr} + bl sub_8069940 + bl sub_8055F88 + bl sub_807DC18 + bl sub_807B004 + movs r0, 0x9 + bl sub_80722CC + ldr r0, _0807E464 @ =gUnknown_3005020 + ldr r1, _0807E468 @ =sub_807DF64 + str r1, [r0] + ldr r0, _0807E46C @ =sub_807E718 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E464: .4byte gUnknown_3005020 +_0807E468: .4byte sub_807DF64 +_0807E46C: .4byte sub_807E718 + thumb_func_end sub_807E438 + + thumb_func_start sub_807E470 +sub_807E470: @ 807E470 + push {lr} + bl sub_8069940 + bl sub_8055F88 + bl sub_807DC18 + bl sub_807B004 + ldr r0, _0807E494 @ =gUnknown_3005020 + ldr r1, _0807E498 @ =sub_807DF64 + str r1, [r0] + ldr r0, _0807E49C @ =sub_807E718 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E494: .4byte gUnknown_3005020 +_0807E498: .4byte sub_807DF64 +_0807E49C: .4byte sub_807E718 + thumb_func_end sub_807E470 + + thumb_func_start sub_807E4A0 +sub_807E4A0: @ 807E4A0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r6, _0807E4D4 @ =sub_807E980 + adds r0, r6, 0 + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0807E4D8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + strh r5, [r1, 0x26] + bl _call_via_r6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807E4D4: .4byte sub_807E980 +_0807E4D8: .4byte gUnknown_3005090 + thumb_func_end sub_807E4A0 + + thumb_func_start sub_807E4DC +sub_807E4DC: @ 807E4DC + push {lr} + bl sub_8069940 + ldr r0, _0807E4F4 @ =gUnknown_3005020 + ldr r1, _0807E4F8 @ =sub_807DF64 + str r1, [r0] + ldr r0, _0807E4FC @ =sub_807E80C + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E4F4: .4byte gUnknown_3005020 +_0807E4F8: .4byte sub_807DF64 +_0807E4FC: .4byte sub_807E80C + thumb_func_end sub_807E4DC + + thumb_func_start sub_807E500 +sub_807E500: @ 807E500 + push {lr} + bl sub_8069940 + ldr r0, _0807E518 @ =sub_807E718 + movs r1, 0xA + bl sub_807741C + ldr r1, _0807E51C @ =gUnknown_3005020 + ldr r0, _0807E520 @ =sub_807DF94 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0807E518: .4byte sub_807E718 +_0807E51C: .4byte gUnknown_3005020 +_0807E520: .4byte sub_807DF94 + thumb_func_end sub_807E500 + + thumb_func_start sub_807E524 +sub_807E524: @ 807E524 + push {lr} + bl sub_8069940 + ldr r0, _0807E53C @ =gUnknown_3005020 + ldr r1, _0807E540 @ =sub_807DF64 + str r1, [r0] + ldr r0, _0807E544 @ =sub_807E784 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E53C: .4byte gUnknown_3005020 +_0807E540: .4byte sub_807DF64 +_0807E544: .4byte sub_807E784 + thumb_func_end sub_807E524 + + thumb_func_start sub_807E548 +sub_807E548: @ 807E548 + push {lr} + bl sub_807E470 + ldr r1, _0807E558 @ =gUnknown_3005020 + ldr r0, _0807E55C @ =sub_8084454 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0807E558: .4byte gUnknown_3005020 +_0807E55C: .4byte sub_8084454 + thumb_func_end sub_807E548 + + thumb_func_start sub_807E560 +sub_807E560: @ 807E560 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8069940 + adds r0, r4, 0 + movs r1, 0xA + bl sub_8084784 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807E560 + + thumb_func_start sub_807E57C +sub_807E57C: @ 807E57C + push {lr} + bl sub_8069940 + movs r0, 0xA + bl sub_8084F2C + pop {r0} + bx r0 + thumb_func_end sub_807E57C + + thumb_func_start sub_807E58C +sub_807E58C: @ 807E58C + push {lr} + bl sub_8069940 + movs r0, 0xA + bl sub_80853CC + pop {r0} + bx r0 + thumb_func_end sub_807E58C + + thumb_func_start sub_807E59C +sub_807E59C: @ 807E59C + push {lr} + bl sub_8069940 + bl sub_8055F88 + ldr r0, _0807E5B8 @ =sub_807E784 + movs r1, 0xA + bl sub_807741C + ldr r1, _0807E5BC @ =gUnknown_3005020 + ldr r0, _0807E5C0 @ =sub_807DF94 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0807E5B8: .4byte sub_807E784 +_0807E5BC: .4byte gUnknown_3005020 +_0807E5C0: .4byte sub_807DF94 + thumb_func_end sub_807E59C + + thumb_func_start sub_807E5C4 +sub_807E5C4: @ 807E5C4 + push {lr} + bl sub_8069940 + bl sub_807DC18 + ldr r0, _0807E5E0 @ =sub_807E718 + movs r1, 0xA + bl sub_807741C + ldr r1, _0807E5E4 @ =gUnknown_3005020 + ldr r0, _0807E5E8 @ =nullsub_60 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0807E5E0: .4byte sub_807E718 +_0807E5E4: .4byte gUnknown_3005020 +_0807E5E8: .4byte nullsub_60 + thumb_func_end sub_807E5C4 + + thumb_func_start sub_807E5EC +sub_807E5EC: @ 807E5EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807E610 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807E620 + cmp r0, 0x1 + bgt _0807E614 + cmp r0, 0 + beq _0807E61A + b _0807E64A + .align 2, 0 +_0807E610: .4byte gUnknown_3005090 +_0807E614: + cmp r0, 0x2 + beq _0807E63A + b _0807E64A +_0807E61A: + bl sub_8069940 + b _0807E632 +_0807E620: + bl sub_807E40C + cmp r0, 0 + bne _0807E64A + bl sub_8055FC4 + lsls r0, 24 + cmp r0, 0 + beq _0807E64A +_0807E632: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807E64A +_0807E63A: + bl sub_8055378 + ldr r0, _0807E650 @ =sub_8056788 + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_0807E64A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807E650: .4byte sub_8056788 + thumb_func_end sub_807E5EC + + thumb_func_start sub_807E654 +sub_807E654: @ 807E654 + push {lr} + bl sub_8069940 + bl sub_8055F88 + bl sub_807DC18 + movs r0, 0x9 + bl sub_80722CC + ldr r0, _0807E674 @ =sub_807E5EC + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E674: .4byte sub_807E5EC + thumb_func_end sub_807E654 + + thumb_func_start sub_807E678 +sub_807E678: @ 807E678 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807E69C @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807E6BE + cmp r0, 0x1 + bgt _0807E6A0 + cmp r0, 0 + beq _0807E6A6 + b _0807E6F4 + .align 2, 0 +_0807E69C: .4byte gUnknown_3005098 +_0807E6A0: + cmp r0, 0x2 + beq _0807E6DC + b _0807E6F4 +_0807E6A6: + bl sub_800A068 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + bl sub_8055F88 + movs r0, 0x9 + bl sub_80722CC + b _0807E6D4 +_0807E6BE: + bl sub_807E40C + cmp r0, 0 + bne _0807E6F4 + bl sub_8055FC4 + lsls r0, 24 + cmp r0, 0 + beq _0807E6F4 + bl sub_800AAC0 +_0807E6D4: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807E6F4 +_0807E6DC: + ldr r0, _0807E6FC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0807E6F4 + bl sub_8055378 + ldr r0, _0807E700 @ =sub_805671C + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_0807E6F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807E6FC: .4byte gUnknown_3003F64 +_0807E700: .4byte sub_805671C + thumb_func_end sub_807E678 + + thumb_func_start sub_807E704 +sub_807E704: @ 807E704 + push {lr} + ldr r0, _0807E714 @ =sub_807E678 + movs r1, 0xA + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807E714: .4byte sub_807E678 + thumb_func_end sub_807E704 + + thumb_func_start sub_807E718 +sub_807E718: @ 807E718 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807E73C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807E750 + cmp r0, 0x1 + bgt _0807E740 + cmp r0, 0 + beq _0807E746 + b _0807E77A + .align 2, 0 +_0807E73C: .4byte gUnknown_3005090 +_0807E740: + cmp r0, 0x2 + beq _0807E76A + b _0807E77A +_0807E746: + bl sub_8068974 + bl sub_8069940 + b _0807E762 +_0807E750: + bl sub_807E40C + cmp r0, 0 + bne _0807E77A + bl sub_8055FC4 + lsls r0, 24 + cmp r0, 0 + beq _0807E77A +_0807E762: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807E77A +_0807E76A: + bl sub_8055378 + ldr r0, _0807E780 @ =sub_805671C + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_0807E77A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807E780: .4byte sub_805671C + thumb_func_end sub_807E718 + + thumb_func_start sub_807E784 +sub_807E784: @ 807E784 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807E7A8 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807E7CA + cmp r0, 0x1 + bgt _0807E7AC + cmp r0, 0 + beq _0807E7B6 + b _0807E802 + .align 2, 0 +_0807E7A8: .4byte gUnknown_3005090 +_0807E7AC: + cmp r0, 0x2 + beq _0807E7D8 + cmp r0, 0x3 + beq _0807E7F2 + b _0807E802 +_0807E7B6: + bl sub_8068974 + bl sub_8069940 + movs r0, 0x27 + bl sub_80722CC + bl sub_805DAB0 + b _0807E7EA +_0807E7CA: + bl sub_805DAD0 + cmp r0, 0 + bne _0807E802 + bl sub_807DC18 + b _0807E7EA +_0807E7D8: + bl sub_807E40C + cmp r0, 0 + bne _0807E802 + bl sub_8055FC4 + lsls r0, 24 + cmp r0, 0 + beq _0807E802 +_0807E7EA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807E802 +_0807E7F2: + bl sub_8055378 + ldr r0, _0807E808 @ =sub_805671C + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_0807E802: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807E808: .4byte sub_805671C + thumb_func_end sub_807E784 + + thumb_func_start sub_807E80C +sub_807E80C: @ 807E80C + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0807E83C @ =gUnknown_3005090 + adds r5, r1, r0 + adds r4, r5, 0 + adds r4, 0xC + adds r6, r5, 0 + adds r6, 0xE + movs r2, 0x8 + ldrsh r1, [r5, r2] + adds r2, r0, 0 + cmp r1, 0x5 + bls _0807E830 + b _0807E976 +_0807E830: + lsls r0, r1, 2 + ldr r1, _0807E840 @ =_0807E844 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807E83C: .4byte gUnknown_3005090 +_0807E840: .4byte _0807E844 + .align 2, 0 +_0807E844: + .4byte _0807E85C + .4byte _0807E898 + .4byte _0807E8F4 + .4byte _0807E940 + .4byte _0807E95C + .4byte _0807E966 +_0807E85C: + bl sub_8068974 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_805C538 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0 + ldrsh r1, [r6, r2] + subs r1, 0x1 + bl sub_805B364 + lsls r0, 16 + lsrs r0, 16 + bl sub_80722CC + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0 + ldrsh r1, [r6, r2] + subs r1, 0x1 + bl sub_805B310 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0xA] + movs r0, 0x1 + strh r0, [r5, 0x8] + b _0807E976 +_0807E898: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + blt _0807E8AE + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + beq _0807E976 +_0807E8AE: + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r4, _0807E8F0 @ =gUnknown_2036E38 + adds r0, r4 + bl sub_8063D1C + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x11 + bl sub_8063CA4 + movs r0, 0x2 + strh r0, [r5, 0x8] + b _0807E976 + .align 2, 0 +_0807E8F0: .4byte gUnknown_2036E38 +_0807E8F4: + bl sub_8069554 + lsls r0, 24 + cmp r0, 0 + beq _0807E976 + movs r2, 0 + ldrsh r0, [r4, r2] + movs r2, 0 + ldrsh r1, [r6, r2] + subs r1, 0x1 + bl sub_805B2D0 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0xA] + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E93C @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + movs r0, 0 + bl sub_807DCB0 + movs r0, 0x3 + strh r0, [r5, 0x8] + b _0807E976 + .align 2, 0 +_0807E93C: .4byte gUnknown_2036E38 +_0807E940: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + blt _0807E956 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + beq _0807E976 +_0807E956: + movs r0, 0x4 + strh r0, [r5, 0x8] + b _0807E976 +_0807E95C: + bl sub_8055F88 + bl sub_807DC18 + b _0807E96A +_0807E966: + bl sub_8055F88 +_0807E96A: + bl sub_807B004 + movs r0, 0 + strh r0, [r5, 0x8] + ldr r0, _0807E97C @ =sub_807E718 + str r0, [r5] +_0807E976: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807E97C: .4byte sub_807E718 + thumb_func_end sub_807E80C + + thumb_func_start sub_807E980 +sub_807E980: @ 807E980 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0807E9C0 @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r2, _0807E9C4 @ =gUnknown_2037078 + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E9C8 @ =gUnknown_2036E38 + adds r6, r0, r1 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807E9CC @ =gUnknown_202063C + adds r7, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0807E9E8 + cmp r0, 0x1 + bgt _0807E9D0 + cmp r0, 0 + beq _0807E9DA + b _0807EA9A + .align 2, 0 +_0807E9C0: .4byte gUnknown_3005098 +_0807E9C4: .4byte gUnknown_2037078 +_0807E9C8: .4byte gUnknown_2036E38 +_0807E9CC: .4byte gUnknown_202063C +_0807E9D0: + cmp r0, 0x2 + beq _0807EA38 + cmp r0, 0x3 + beq _0807EA66 + b _0807EA9A +_0807E9DA: + bl sub_8069940 + bl sub_8068974 + bl sub_805FAF8 + b _0807EA92 +_0807E9E8: + adds r0, r6, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0807EA00 + adds r0, r6, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0807EAB0 +_0807EA00: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _0807EA10 + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] + b _0807EAB0 +_0807EA10: + bl sub_8055F88 + bl sub_807B004 + ldrb r1, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r7, 0x5] + ldrh r0, [r5, 0x2] + adds r1, r5, 0x4 + adds r2, r5, 0x6 + bl sub_807EB64 + movs r0, 0x9 + bl sub_80722CC + b _0807EA92 +_0807EA38: + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r2, 0x6 + ldrsh r1, [r5, r2] + adds r2, r5, 0 + adds r2, 0x8 + adds r3, r5, 0 + adds r3, 0xA + adds r4, r5, 0 + adds r4, 0xC + str r4, [sp] + bl sub_807EAC4 + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + ble _0807EAB0 + bl sub_807DC18 + b _0807EA92 +_0807EA66: + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r2, 0x6 + ldrsh r1, [r5, r2] + adds r2, r5, 0 + adds r2, 0x8 + adds r3, r5, 0 + adds r3, 0xA + adds r4, r5, 0 + adds r4, 0xC + str r4, [sp] + bl sub_807EAC4 + bl sub_807E40C + cmp r0, 0 + bne _0807EAB0 + bl sub_8055FC4 + lsls r0, 24 + cmp r0, 0 + beq _0807EAB0 +_0807EA92: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0807EAB0 +_0807EA9A: + ldr r0, _0807EAB8 @ =gUnknown_3005020 + ldr r1, _0807EABC @ =sub_807DF64 + str r1, [r0] + bl sub_8055378 + ldr r0, _0807EAC0 @ =sub_805671C + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_0807EAB0: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807EAB8: .4byte gUnknown_3005020 +_0807EABC: .4byte sub_807DF64 +_0807EAC0: .4byte sub_805671C + thumb_func_end sub_807E980 + + thumb_func_start sub_807EAC4 +sub_807EAC4: @ 807EAC4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r2, 0 + adds r5, r3, 0 + ldr r6, [sp, 0x18] + lsls r0, 16 + lsrs r0, 16 + mov r12, r0 + ldr r3, _0807EB58 @ =gUnknown_2037078 + ldrb r2, [r3, 0x4] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r2, _0807EB5C @ =gUnknown_202063C + adds r7, r0, r2 + ldrb r2, [r3, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0807EB60 @ =gUnknown_2036E38 + adds r0, r2 + mov r8, r0 + lsls r1, 16 + asrs r1, 16 + cmp r1, 0 + bgt _0807EB02 + movs r2, 0 + ldrsh r0, [r6, r2] + cmp r0, 0x6 + ble _0807EB08 +_0807EB02: + ldrh r0, [r5] + adds r0, r1, r0 + strh r0, [r5] +_0807EB08: + mov r1, r12 + lsls r0, r1, 16 + asrs r0, 16 + ldrh r2, [r4] + adds r0, r2 + strh r0, [r4] + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + ldrh r0, [r4] + lsls r0, 16 + asrs r0, 21 + strh r0, [r7, 0x24] + ldrh r0, [r5] + lsls r0, 16 + asrs r0, 21 + strh r0, [r7, 0x26] + mov r1, r8 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0807EB4C + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8064244 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_8063D00 +_0807EB4C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807EB58: .4byte gUnknown_2037078 +_0807EB5C: .4byte gUnknown_202063C +_0807EB60: .4byte gUnknown_2036E38 + thumb_func_end sub_807EAC4 + + thumb_func_start sub_807EB64 +sub_807EB64: @ 807EB64 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _0807EBB4 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0807EBB8 @ =gUnknown_2036E38 + adds r4, r0 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8064244 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063D00 + lsls r5, 24 + lsrs r5, 24 + adds r0, r5, 0 + adds r1, r6, 0 + mov r2, r8 + bl sub_807EBBC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807EBB4: .4byte gUnknown_2037078 +_0807EBB8: .4byte gUnknown_2036E38 + thumb_func_end sub_807EB64 + + thumb_func_start sub_807EBBC +sub_807EBBC: @ 807EBBC + push {r4-r7,lr} + adds r5, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + adds r0, r4, 0 + bl sub_8059C0C + lsls r0, 24 + cmp r0, 0 + beq _0807EBE0 + movs r0, 0x10 + strh r0, [r5] + movs r1, 0xA + negs r1, r1 + adds r0, r1, 0 + b _0807EC2A +_0807EBE0: + adds r0, r4, 0 + bl sub_8059C20 + lsls r0, 24 + cmp r0, 0 + beq _0807EBFA + movs r1, 0x11 + negs r1, r1 + adds r0, r1, 0 + strh r0, [r5] + adds r1, 0x7 + adds r0, r1, 0 + b _0807EC2A +_0807EBFA: + adds r0, r4, 0 + bl sub_8059C34 + lsls r0, 24 + cmp r0, 0 + beq _0807EC0E + movs r0, 0x11 + strh r0, [r5] + movs r0, 0x3 + b _0807EC2A +_0807EC0E: + adds r0, r7, 0 + bl sub_8059C48 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807EC28 + movs r1, 0x11 + negs r1, r1 + adds r0, r1, 0 + strh r0, [r5] + movs r0, 0x3 + b _0807EC2A +_0807EC28: + strh r0, [r5] +_0807EC2A: + strh r0, [r6] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807EBBC + + thumb_func_start sub_807EC34 +sub_807EC34: @ 807EC34 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0807EC6C @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0807EC70 + cmp r0, 0x1 + beq _0807EC92 + bl sub_807E418 + cmp r0, 0x1 + bne _0807ECB2 + bl sub_805FAA8 + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 + b _0807ECB2 + .align 2, 0 +_0807EC6C: .4byte gUnknown_3005098 +_0807EC70: + bl sub_8055DC4 + bl sub_807DB58 + bl sub_8069940 + adds r0, r5, 0x2 + adds r1, r5, 0x4 + adds r2, r5, 0x6 + adds r3, r5, 0 + adds r3, 0x8 + adds r4, r5, 0 + adds r4, 0xA + str r4, [sp] + bl sub_807ECBC + b _0807ECAC +_0807EC92: + adds r0, r5, 0x2 + adds r1, r5, 0x4 + adds r2, r5, 0x6 + adds r3, r5, 0 + adds r3, 0x8 + adds r4, r5, 0 + adds r4, 0xA + str r4, [sp] + bl sub_807EDA0 + lsls r0, 24 + cmp r0, 0 + bne _0807ECB2 +_0807ECAC: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_0807ECB2: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807EC34 + + thumb_func_start sub_807ECBC +sub_807ECBC: @ 807ECBC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r7, r0, 0 + adds r5, r1, 0 + mov r9, r2 + mov r10, r3 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + bl sub_8059C34 + lsls r0, 24 + cmp r0, 0 + bne _0807ED06 + adds r0, r6, 0 + bl sub_8059C0C + lsls r0, 24 + cmp r0, 0 + beq _0807ED0A +_0807ED06: + movs r1, 0x3 + b _0807ED0C +_0807ED0A: + movs r1, 0x4 +_0807ED0C: + ldr r0, _0807ED94 @ =gUnknown_2037078 + mov r8, r0 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0807ED98 @ =gUnknown_2036E38 + adds r4, r0 + adds r0, r1, 0 + bl sub_8064270 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063D00 + adds r0, r6, 0 + adds r1, r7, 0 + adds r2, r5, 0 + bl sub_807EBBC + movs r1, 0 + ldrsh r0, [r7, r1] + lsls r0, 4 + mov r2, r9 + strh r0, [r2] + movs r1, 0 + ldrsh r0, [r5, r1] + lsls r0, 4 + mov r2, r10 + strh r0, [r2] + movs r1, 0x10 + ldr r0, [sp, 0x24] + strh r1, [r0] + mov r1, r8 + ldrb r0, [r1, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0807ED9C @ =gUnknown_202063C + adds r1, r0 + mov r2, r9 + ldrh r0, [r2] + lsls r0, 16 + asrs r0, 21 + strh r0, [r1, 0x24] + mov r2, r10 + ldrh r0, [r2] + lsls r0, 16 + asrs r0, 21 + strh r0, [r1, 0x26] + movs r1, 0 + ldrsh r0, [r7, r1] + negs r0, r0 + strh r0, [r7] + movs r2, 0 + ldrsh r0, [r5, r2] + negs r0, r0 + strh r0, [r5] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807ED94: .4byte gUnknown_2037078 +_0807ED98: .4byte gUnknown_2036E38 +_0807ED9C: .4byte gUnknown_202063C + thumb_func_end sub_807ECBC + + thumb_func_start sub_807EDA0 +sub_807EDA0: @ 807EDA0 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r4, [sp, 0x14] + ldr r0, _0807EDC8 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807EDCC @ =gUnknown_202063C + adds r1, r0, r1 + movs r7, 0 + ldrsh r0, [r4, r7] + cmp r0, 0 + bne _0807EDD0 + strh r0, [r1, 0x24] + strh r0, [r1, 0x26] + movs r0, 0 + b _0807EDF8 + .align 2, 0 +_0807EDC8: .4byte gUnknown_2037078 +_0807EDCC: .4byte gUnknown_202063C +_0807EDD0: + ldrh r0, [r5] + ldrh r5, [r2] + adds r0, r5 + strh r0, [r2] + ldrh r0, [r6] + ldrh r7, [r3] + adds r0, r7 + strh r0, [r3] + ldrh r0, [r2] + lsls r0, 16 + asrs r0, 21 + strh r0, [r1, 0x24] + ldrh r0, [r3] + lsls r0, 16 + asrs r0, 21 + strh r0, [r1, 0x26] + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + movs r0, 0x1 +_0807EDF8: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_807EDA0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s new file mode 100644 index 000000000..b6cc748ff --- /dev/null +++ b/asm/field_ground_effect.s @@ -0,0 +1,1894 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8067B34 +sub_8067B34: @ 8067B34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8067C24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067C4C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067CA8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067CE8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067D68 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067DB8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067E6C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067EBC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067B34 + + thumb_func_start sub_8067B7C +sub_8067B7C: @ 8067B7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8067C24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067C4C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067CC8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067D08 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067D28 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067D68 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067DB8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067E1C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067E6C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067EBC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067B7C + + thumb_func_start sub_8067BD4 +sub_8067BD4: @ 8067BD4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8067C24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067DB8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067D68 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067E1C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067E4C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067E6C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067EBC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067F0C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067F2C + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067BD4 + + thumb_func_start sub_8067C24 +sub_8067C24: @ 8067C24 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x14 + ldrsh r0, [r4, r1] + movs r2, 0x16 + ldrsh r1, [r4, r2] + bl sub_8058F78 + strb r0, [r4, 0x1F] + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl sub_8058F78 + strb r0, [r4, 0x1E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067C24 + + thumb_func_start sub_8067C4C +sub_8067C4C: @ 8067C4C + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _08067C90 @ =gUnknown_83A7024 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + adds r0, r4, 0 + bl sub_8067F88 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _08067C94 + ldrb r1, [r4, 0x2] + lsls r0, r1, 30 + cmp r0, 0 + blt _08067C9E + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, 0x2] + subs r0, r2, 0x1 + lsls r0, 2 + add r0, sp + ldr r1, [r5] + ldr r0, [r0] + orrs r1, r0 + str r1, [r5] + b _08067C9E + .align 2, 0 +_08067C90: .4byte gUnknown_83A7024 +_08067C94: + ldrb r1, [r4, 0x2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_08067C9E: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067C4C + + thumb_func_start sub_8067CA8 +sub_8067CA8: @ 8067CA8 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl sub_8059F34 + lsls r0, 24 + cmp r0, 0 + beq _08067CC0 + ldr r0, [r4] + movs r1, 0x1 + orrs r0, r1 + str r0, [r4] +_08067CC0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067CA8 + + thumb_func_start sub_8067CC8 +sub_8067CC8: @ 8067CC8 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl sub_8059F34 + lsls r0, 24 + cmp r0, 0 + beq _08067CE0 + ldr r0, [r4] + movs r1, 0x2 + orrs r0, r1 + str r0, [r4] +_08067CE0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067CC8 + + thumb_func_start sub_8067CE8 +sub_8067CE8: @ 8067CE8 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl sub_8059F4C + lsls r0, 24 + cmp r0, 0 + beq _08067D00 + ldr r0, [r4] + movs r1, 0x4 + orrs r0, r1 + str r0, [r4] +_08067D00: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067CE8 + + thumb_func_start sub_8067D08 +sub_8067D08: @ 8067D08 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl sub_8059F4C + lsls r0, 24 + cmp r0, 0 + beq _08067D20 + ldr r0, [r4] + movs r1, 0x8 + orrs r0, r1 + str r0, [r4] +_08067D20: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067D08 + + thumb_func_start sub_8067D28 +sub_8067D28: @ 8067D28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1F] + bl sub_8059B8C + lsls r0, 24 + cmp r0, 0 + beq _08067D42 + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 1 + b _08067D5E +_08067D42: + ldrb r0, [r4, 0x1F] + bl sub_8059B5C + lsls r0, 24 + cmp r0, 0 + bne _08067D5A + ldrb r0, [r4, 0x1F] + bl sub_8059F54 + lsls r0, 24 + cmp r0, 0 + beq _08067D62 +_08067D5A: + ldr r0, [r5] + movs r1, 0x80 +_08067D5E: + orrs r0, r1 + str r0, [r5] +_08067D62: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067D28 + + thumb_func_start sub_8067D68 +sub_8067D68: @ 8067D68 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl sub_8059B8C + lsls r0, 24 + cmp r0, 0 + beq _08067DA6 + ldrb r0, [r4, 0x1F] + bl sub_8059B8C + lsls r0, 24 + cmp r0, 0 + beq _08067DA6 + ldrb r1, [r4, 0x2] + lsls r0, r1, 27 + cmp r0, 0 + blt _08067DB0 + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 4 + orrs r0, r1 + str r0, [r5] + b _08067DB0 +_08067DA6: + ldrb r1, [r4, 0x2] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_08067DB0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067D68 + + thumb_func_start sub_8067DB8 +sub_8067DB8: @ 8067DB8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl sub_8059FE0 + lsls r0, 24 + cmp r0, 0 + beq _08067DD6 + ldrb r0, [r4, 0x1F] + bl sub_8059FE0 + lsls r0, 24 + cmp r0, 0 + bne _08067DEE +_08067DD6: + ldrb r0, [r4, 0x1E] + bl sub_805A12C + lsls r0, 24 + cmp r0, 0 + beq _08067E0C + ldrb r0, [r4, 0x1F] + bl sub_805A12C + lsls r0, 24 + cmp r0, 0 + beq _08067E0C +_08067DEE: + ldrb r1, [r4, 0x2] + lsls r0, r1, 28 + cmp r0, 0 + blt _08067E16 + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x40 + orrs r0, r1 + str r0, [r5] + b _08067E16 +_08067E0C: + ldrb r1, [r4, 0x2] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_08067E16: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067DB8 + + thumb_func_start sub_8067E1C +sub_8067E1C: @ 8067E1C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl sub_8059F20 + lsls r0, 24 + cmp r0, 0 + beq _08067E44 + ldrb r0, [r4, 0x1F] + bl sub_8059F20 + lsls r0, 24 + cmp r0, 0 + beq _08067E44 + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 3 + orrs r0, r1 + str r0, [r5] +_08067E44: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067E1C + + thumb_func_start sub_8067E4C +sub_8067E4C: @ 8067E4C + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl sub_8059F08 + lsls r0, 24 + cmp r0, 0 + beq _08067E66 + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + str r0, [r4] +_08067E66: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067E4C + + thumb_func_start sub_8067E6C +sub_8067E6C: @ 8067E6C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl sub_805A0EC + lsls r0, 24 + cmp r0, 0 + beq _08067EAA + ldrb r0, [r4, 0x1F] + bl sub_805A0EC + lsls r0, 24 + cmp r0, 0 + beq _08067EAA + ldrb r1, [r4, 0x2] + lsls r0, r1, 29 + cmp r0, 0 + blt _08067EB4 + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 10 + orrs r0, r1 + str r0, [r5] + b _08067EB4 +_08067EAA: + ldrb r1, [r4, 0x2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_08067EB4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067E6C + + thumb_func_start sub_8067EBC +sub_8067EBC: @ 8067EBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl sub_805A0F0 + lsls r0, 24 + cmp r0, 0 + beq _08067EFA + ldrb r0, [r4, 0x1F] + bl sub_805A0F0 + lsls r0, 24 + cmp r0, 0 + beq _08067EFA + ldrb r1, [r4, 0x2] + lsls r0, r1, 26 + cmp r0, 0 + blt _08067F04 + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 11 + orrs r0, r1 + str r0, [r5] + b _08067F04 +_08067EFA: + ldrb r1, [r4, 0x2] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_08067F04: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8067EBC + + thumb_func_start sub_8067F0C +sub_8067F0C: @ 8067F0C + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl sub_805A220 + lsls r0, 24 + cmp r0, 0 + beq _08067F26 + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r4] +_08067F26: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067F0C + + thumb_func_start sub_8067F2C +sub_8067F2C: @ 8067F2C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r6, r1, 0 + ldr r0, [r7] + ldr r1, _08067F68 @ =0x02000020 + ands r0, r1 + cmp r0, 0x20 + bne _08067F7E + movs r5, 0 + ldr r0, _08067F6C @ =gUnknown_83A702C + mov r8, r0 +_08067F46: + lsls r4, r5, 2 + mov r0, r8 + adds r1, r4, r0 + ldrb r0, [r7, 0x1E] + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _08067F74 + ldr r0, _08067F70 @ =gUnknown_83A7044 + adds r0, r4, r0 + ldr r1, [r6] + ldr r0, [r0] + orrs r1, r0 + str r1, [r6] + b _08067F7E + .align 2, 0 +_08067F68: .4byte 0x02000020 +_08067F6C: .4byte gUnknown_83A702C +_08067F70: .4byte gUnknown_83A7044 +_08067F74: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08067F46 +_08067F7E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8067F2C + + thumb_func_start sub_8067F88 +sub_8067F88: @ 8067F88 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + ldrb r0, [r5, 0x5] + bl sub_805F2C8 + movs r4, 0 + movs r0, 0x1 + mov r10, r0 +_08067FA0: + movs r1, 0x10 + ldrsh r0, [r5, r1] + ldrh r1, [r5, 0x12] + add r1, r10 + lsls r4, 16 + asrs r6, r4, 16 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80680C8 + lsls r0, 24 + lsrs r0, 24 + mov r9, r4 + cmp r0, 0 + bne _080680BA + movs r3, 0x14 + ldrsh r0, [r5, r3] + ldrh r1, [r5, 0x16] + add r1, r10 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80680C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080680BA + movs r2, 0x1 + lsls r0, r2, 16 + asrs r1, r0, 16 + mov r8, r0 + cmp r2, r1 + bge _080680A8 + movs r0, 0x80 + lsls r0, 9 + asrs r7, r0, 16 +_08067FFC: + ldrh r0, [r5, 0x10] + lsls r1, r2, 16 + asrs r4, r1, 16 + adds r0, r4, r0 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r5, 0x12] + adds r1, r7, r1 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80680C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080680BA + ldrh r0, [r5, 0x10] + subs r0, r4 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r5, 0x12] + adds r1, r7, r1 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80680C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080680BA + ldrh r0, [r5, 0x14] + adds r0, r4, r0 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r5, 0x16] + adds r1, r7, r1 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80680C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080680BA + ldrh r0, [r5, 0x14] + subs r0, r4 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r5, 0x16] + adds r1, r7, r1 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_80680C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080680BA + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + mov r3, r8 + asrs r1, r3, 16 + cmp r0, r1 + blt _08067FFC +_080680A8: + movs r0, 0x80 + lsls r0, 9 + add r0, r9 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bge _080680B8 + b _08067FA0 +_080680B8: + movs r0, 0 +_080680BA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8067F88 + + thumb_func_start sub_80680C8 +sub_80680C8: @ 80680C8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059BB4 + lsls r0, 24 + cmp r0, 0 + beq _080680DE + movs r0, 0x1 + b _080680F0 +_080680DE: + adds r0, r4, 0 + bl sub_8059B90 + lsls r0, 24 + cmp r0, 0 + bne _080680EE + movs r0, 0 + b _080680F0 +_080680EE: + movs r0, 0x2 +_080680F0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80680C8 + + thumb_func_start sub_80680F8 +sub_80680F8: @ 80680F8 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r4, r2, 24 + cmp r4, 0 + beq _0806813E + cmp r4, 0x4 + bls _08068114 + subs r0, r4, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 +_08068114: + subs r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r3, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08068144 @ =gUnknown_83A705C + lsls r1, r4, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08068148 +_0806813E: + movs r0, 0 + b _0806814E + .align 2, 0 +_08068144: .4byte gUnknown_83A705C +_08068148: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r0, 24 +_0806814E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80680F8 + + thumb_func_start sub_8068154 +sub_8068154: @ 8068154 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r0, [r5] + lsls r0, 27 + cmp r0, 0 + blt _080681A8 + ldrb r0, [r5, 0x1E] + bl sub_8059F4C + lsls r0, 24 + cmp r0, 0 + beq _080681A8 + ldrb r0, [r5, 0x1F] + bl sub_8059F4C + lsls r0, 24 + cmp r0, 0 + beq _080681A8 + adds r4, 0x42 + ldrb r1, [r4] + movs r6, 0x40 + negs r6, r6 + adds r0, r6, 0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0xB] + lsrs r0, 4 + bl sub_8068294 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080681A8 + ldrb r0, [r4] + adds r1, r6, 0 + ands r1, r0 + movs r0, 0x5 + orrs r1, r0 + strb r1, [r4] +_080681A8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8068154 + + thumb_func_start sub_80681B0 +sub_80681B0: @ 80681B0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r0, r1, 16 + lsls r2, 16 + lsrs r1, r2, 16 + cmp r4, 0 + beq _080681DE + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080681DE + cmp r0, 0xF + beq _080681DE + cmp r0, r4 + bne _080681E2 +_080681DE: + movs r0, 0 + b _080681E4 +_080681E2: + movs r0, 0x1 +_080681E4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80681B0 + + thumb_func_start sub_80681EC +sub_80681EC: @ 80681EC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x3] + lsls r0, 29 + cmp r0, 0 + blt _0806823A + adds r0, r4, 0 + bl sub_80682A4 + ldr r1, _08068240 @ =gUnknown_83A708C + ldrb r2, [r4, 0xB] + lsls r2, 24 + lsrs r0, r2, 28 + adds r0, r1 + ldrb r0, [r0] + adds r4, r5, 0 + adds r4, 0x42 + movs r1, 0x3F + ands r1, r0 + ldrb r3, [r4] + movs r0, 0x40 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + ldr r0, _08068244 @ =gUnknown_83A707C + lsrs r2, 28 + adds r2, r0 + movs r0, 0x3 + ldrb r1, [r2] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] +_0806823A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08068240: .4byte gUnknown_83A708C +_08068244: .4byte gUnknown_83A707C + thumb_func_end sub_80681EC + + thumb_func_start sub_8068248 +sub_8068248: @ 8068248 + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0806828C @ =gUnknown_83A708C + adds r2, r1, r2 + ldrb r2, [r2] + movs r3, 0x42 + adds r3, r0 + mov r12, r3 + movs r3, 0x3F + ands r3, r2 + mov r2, r12 + ldrb r4, [r2] + movs r2, 0x40 + negs r2, r2 + ands r2, r4 + orrs r2, r3 + mov r3, r12 + strb r2, [r3] + ldr r2, _08068290 @ =gUnknown_83A707C + adds r1, r2 + movs r3, 0x3 + ldrb r2, [r1] + ands r2, r3 + lsls r2, 2 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806828C: .4byte gUnknown_83A708C +_08068290: .4byte gUnknown_83A707C + thumb_func_end sub_8068248 + + thumb_func_start sub_8068294 +sub_8068294: @ 8068294 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080682A0 @ =gUnknown_83A707C + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080682A0: .4byte gUnknown_83A707C + thumb_func_end sub_8068294 + + thumb_func_start sub_80682A4 +sub_80682A4: @ 80682A4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl sub_8058D44 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x14 + ldrsh r0, [r4, r1] + movs r2, 0x16 + ldrsh r1, [r4, r2] + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + cmp r5, 0xF + beq _080682F2 + cmp r0, 0xF + beq _080682F2 + movs r3, 0xF + adds r0, r5, 0 + ands r0, r3 + ldrb r1, [r4, 0xB] + movs r2, 0x10 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, 0xB] + cmp r5, 0 + beq _080682F2 + cmp r5, 0xF + beq _080682F2 + lsls r0, r5, 4 + ands r2, r3 + orrs r2, r0 + strb r2, [r4, 0xB] +_080682F2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80682A4 + + thumb_func_start sub_80682F8 +sub_80682F8: @ 80682F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + adds r3, r1, 0 + adds r3, 0x29 + movs r5, 0 + ldrsb r5, [r3, r5] + ldrh r4, [r1, 0x22] + ldr r3, _08068338 @ =gUnknown_2021BCA + subs r4, r5 + ldrh r3, [r3] + adds r4, r3 + adds r4, 0x8 + movs r3, 0xFF + ands r4, r3 + lsrs r4, 4 + movs r3, 0x10 + subs r3, r4 + lsls r3, 17 + ldr r4, _0806833C @ =gUnknown_83A706C + adds r0, r4 + lsrs r3, 16 + ldrb r0, [r0] + adds r3, r0 + adds r2, r3 + adds r1, 0x43 + strb r2, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08068338: .4byte gUnknown_2021BCA +_0806833C: .4byte gUnknown_83A706C + thumb_func_end sub_80682F8 + + thumb_func_start sub_8068340 +sub_8068340: @ 8068340 + push {lr} + adds r2, r0, 0 + ldrb r0, [r2, 0x3] + lsls r0, 29 + cmp r0, 0 + blt _08068356 + ldrb r0, [r2, 0xB] + lsrs r0, 4 + movs r2, 0x1 + bl sub_80682F8 +_08068356: + pop {r0} + bx r0 + thumb_func_end sub_8068340 + + thumb_func_start sub_806835C +sub_806835C: @ 806835C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r0, 0 + beq _08068372 + cmp r1, 0 + beq _08068372 + cmp r0, r1 + bne _08068376 +_08068372: + movs r0, 0x1 + b _08068378 +_08068376: + movs r0, 0 +_08068378: + pop {r1} + bx r1 + thumb_func_end sub_806835C + + thumb_func_start sub_806837C +sub_806837C: @ 806837C + push {lr} + ldr r3, _080683C0 @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r0, _080683C4 @ =gUnknown_3005008 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0x1 + str r0, [r3, 0x1C] + movs r0, 0x4 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_080683C0: .4byte gUnknown_20386E0 +_080683C4: .4byte gUnknown_3005008 + thumb_func_end sub_806837C + + thumb_func_start sub_80683C8 +sub_80683C8: @ 80683C8 + push {lr} + ldr r3, _0806840C @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r0, _08068410 @ =gUnknown_3005008 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0 + str r0, [r3, 0x1C] + movs r0, 0x4 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_0806840C: .4byte gUnknown_20386E0 +_08068410: .4byte gUnknown_3005008 + thumb_func_end sub_80683C8 + + thumb_func_start sub_8068414 +sub_8068414: @ 8068414 + push {lr} + ldr r3, _08068458 @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r0, _0806845C @ =gUnknown_3005008 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0x1 + str r0, [r3, 0x1C] + movs r0, 0x11 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_08068458: .4byte gUnknown_20386E0 +_0806845C: .4byte gUnknown_3005008 + thumb_func_end sub_8068414 + + thumb_func_start sub_8068460 +sub_8068460: @ 8068460 + push {lr} + ldr r3, _080684A4 @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r0, _080684A8 @ =gUnknown_3005008 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0 + str r0, [r3, 0x1C] + movs r0, 0x11 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_080684A4: .4byte gUnknown_20386E0 +_080684A8: .4byte gUnknown_3005008 + thumb_func_end sub_8068460 + + thumb_func_start sub_80684AC +sub_80684AC: @ 80684AC + push {lr} + movs r2, 0 + bl sub_80DAD7C + pop {r0} + bx r0 + thumb_func_end sub_80684AC + + thumb_func_start sub_80684B8 +sub_80684B8: @ 80684B8 + push {lr} + movs r2, 0x1 + bl sub_80DAD7C + pop {r0} + bx r0 + thumb_func_end sub_80684B8 + + thumb_func_start sub_80684C4 +sub_80684C4: @ 80684C4 + push {lr} + adds r1, r0, 0 + movs r0, 0x22 + bl sub_80692C8 + pop {r0} + bx r0 + thumb_func_end sub_80684C4 + + thumb_func_start sub_80684D4 +sub_80684D4: @ 80684D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl sub_805F2C8 + ldr r1, _080684FC @ =gUnknown_83A709C + ldrb r0, [r0, 0xD] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl _call_via_r3 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080684FC: .4byte gUnknown_83A709C + thumb_func_end sub_80684D4 + + thumb_func_start sub_8068500 +sub_8068500: @ 8068500 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl sub_805F2C8 + ldr r1, _08068528 @ =gUnknown_83A709C + ldrb r0, [r0, 0xD] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl _call_via_r3 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08068528: .4byte gUnknown_83A709C + thumb_func_end sub_8068500 + + thumb_func_start nullsub_26 +nullsub_26: @ 806852C + bx lr + thumb_func_end nullsub_26 + + thumb_func_start sub_8068530 +sub_8068530: @ 8068530 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r4, r2, 24 + lsrs r4, 24 + ldr r1, _08068578 @ =gUnknown_83A70A8 + mov r0, sp + movs r2, 0x4 + bl memcpy + ldr r1, _0806857C @ =gUnknown_20386E0 + movs r2, 0x14 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r2, 0x16 + ldrsh r0, [r5, r2] + str r0, [r1, 0x4] + movs r0, 0x95 + str r0, [r1, 0x8] + movs r0, 0x2 + str r0, [r1, 0xC] + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + str r0, [r1, 0x10] + lsls r4, 1 + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_8083444 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08068578: .4byte gUnknown_83A70A8 +_0806857C: .4byte gUnknown_20386E0 + thumb_func_end sub_8068530 + + thumb_func_start sub_8068580 +sub_8068580: @ 8068580 + push {r4,lr} + adds r4, r0, 0 + ldr r1, [r4, 0x10] + ldr r0, [r4, 0x14] + cmp r1, r0 + beq _080685C2 + ldr r2, _080685C8 @ =gUnknown_20386E0 + movs r1, 0x14 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x16 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + movs r0, 0x95 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + ldr r3, _080685CC @ =gUnknown_83A70AC + ldrb r1, [r4, 0x18] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 2 + subs r0, 0x5 + adds r1, r0 + adds r1, r3 + ldrb r0, [r1] + str r0, [r2, 0x10] + movs r0, 0x23 + bl sub_8083444 +_080685C2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080685C8: .4byte gUnknown_20386E0 +_080685CC: .4byte gUnknown_83A70AC + thumb_func_end sub_8068580 + + thumb_func_start sub_80685D0 +sub_80685D0: @ 80685D0 + push {lr} + bl sub_806930C + pop {r0} + bx r0 + thumb_func_end sub_80685D0 + + thumb_func_start sub_80685DC +sub_80685DC: @ 80685DC + push {lr} + adds r1, r0, 0 + movs r0, 0xF + bl sub_80692C8 + pop {r0} + bx r0 + thumb_func_end sub_80685DC + + thumb_func_start sub_80685EC +sub_80685EC: @ 80685EC + push {lr} + adds r1, r0, 0 + movs r0, 0x27 + bl sub_80692C8 + pop {r0} + bx r0 + thumb_func_end sub_80685EC + + thumb_func_start sub_80685FC +sub_80685FC: @ 80685FC + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _08068650 @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r4, 0x12 + ldrsh r0, [r5, r4] + str r0, [r1, 0x4] + ldrb r0, [r5, 0xB] + lsrs r0, 4 + str r0, [r1, 0x8] + movs r0, 0x2 + str r0, [r1, 0xC] + movs r0, 0xC + bl sub_8083444 + ldrb r0, [r5, 0x8] + ldrb r1, [r5, 0x9] + ldrb r2, [r5, 0xA] + movs r7, 0x10 + ldrsh r3, [r5, r7] + movs r7, 0x12 + ldrsh r4, [r5, r7] + str r4, [sp] + bl sub_80DB564 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + bne _08068646 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_806837C +_08068646: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08068650: .4byte gUnknown_20386E0 + thumb_func_end sub_80685FC + + thumb_func_start sub_8068654 +sub_8068654: @ 8068654 + push {lr} + ldr r2, _08068678 @ =gUnknown_20386E0 + movs r3, 0x10 + ldrsh r1, [r0, r3] + str r1, [r2] + movs r3, 0x12 + ldrsh r1, [r0, r3] + str r1, [r2, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + movs r0, 0x12 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_08068678: .4byte gUnknown_20386E0 + thumb_func_end sub_8068654 + + thumb_func_start sub_806867C +sub_806867C: @ 806867C + push {r4,lr} + ldr r3, _080686A8 @ =gUnknown_20386E0 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, 0x12 + ldrsh r2, [r0, r4] + str r2, [r3, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0x10 + bl sub_8083444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080686A8: .4byte gUnknown_20386E0 + thumb_func_end sub_806867C + + thumb_func_start sub_80686AC +sub_80686AC: @ 80686AC + push {r4,lr} + ldr r3, _080686D8 @ =gUnknown_20386E0 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, 0x12 + ldrsh r2, [r0, r4] + str r2, [r3, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0xE + bl sub_8083444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080686D8: .4byte gUnknown_20386E0 + thumb_func_end sub_80686AC + + thumb_func_start sub_80686DC +sub_80686DC: @ 80686DC + push {r4,lr} + ldr r3, _08068708 @ =gUnknown_20386E0 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, 0x12 + ldrsh r2, [r0, r4] + str r2, [r3, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0xA + bl sub_8083444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08068708: .4byte gUnknown_20386E0 + thumb_func_end sub_80686DC + + thumb_func_start sub_806870C +sub_806870C: @ 806870C + push {lr} + adds r1, r0, 0 + movs r0, 0x29 + bl sub_80692C8 + pop {r0} + bx r0 + thumb_func_end sub_806870C + + thumb_func_start sub_806871C +sub_806871C: @ 806871C + push {lr} + adds r1, r0, 0 + movs r0, 0x2A + bl sub_80692C8 + pop {r0} + bx r0 + thumb_func_end sub_806871C + + thumb_func_start sub_806872C +sub_806872C: @ 806872C + push {lr} + ldr r2, _08068748 @ =gUnknown_20386E0 + movs r3, 0x10 + ldrsh r1, [r0, r3] + str r1, [r2] + movs r1, 0x12 + ldrsh r0, [r0, r1] + str r0, [r2, 0x4] + movs r0, 0x35 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_08068748: .4byte gUnknown_20386E0 + thumb_func_end sub_806872C + + thumb_func_start sub_806874C +sub_806874C: @ 806874C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r7, r1, 0 + adds r5, r2, 0 + ldrb r0, [r6, 0x8] + cmp r0, 0x7F + bne _08068766 + ldrb r0, [r6, 0x1] + lsls r0, 26 + cmp r0, 0 + blt _0806878E +_08068766: + movs r4, 0 + ldr r0, _08068798 @ =gUnknown_83A70BC + mov r8, r0 +_0806876C: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08068782 + lsls r0, r4, 2 + add r0, r8 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r7, 0 + bl _call_via_r2 +_08068782: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsrs r5, 1 + cmp r4, 0x13 + bls _0806876C +_0806878E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08068798: .4byte gUnknown_83A70BC + thumb_func_end sub_806874C + + thumb_func_start sub_806879C +sub_806879C: @ 806879C + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldrb r0, [r2] + lsls r0, 27 + cmp r0, 0 + bge _080687CA + ldrb r1, [r2, 0x2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + adds r1, 0x8 + ands r0, r1 + subs r1, 0x18 + ands r0, r1 + strb r0, [r2, 0x2] + ldr r0, [r3] + ldr r1, _080687D0 @ =0xfff9f7bd + ands r0, r1 + str r0, [r3] +_080687CA: + pop {r0} + bx r0 + .align 2, 0 +_080687D0: .4byte 0xfff9f7bd + thumb_func_end sub_806879C + + thumb_func_start sub_80687D4 +sub_80687D4: @ 80687D4 + push {lr} + adds r2, r1, 0 + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _080687E8 + ldr r0, [r2] + ldr r1, _080687EC @ =0xfffffbff + ands r0, r1 + str r0, [r2] +_080687E8: + pop {r0} + bx r0 + .align 2, 0 +_080687EC: .4byte 0xfffffbff + thumb_func_end sub_80687D4 + + thumb_func_start sub_80687F0 +sub_80687F0: @ 80687F0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + lsls r0, 29 + cmp r0, 0 + bge _08068834 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + bl sub_80681EC + adds r0, r4, 0 + mov r1, sp + bl sub_8067B34 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068154 + ldr r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806874C + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r4] +_08068834: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80687F0 + + thumb_func_start sub_806883C +sub_806883C: @ 806883C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + lsls r0, 29 + cmp r0, 0 + bge _08068888 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + bl sub_80681EC + adds r0, r4, 0 + mov r1, sp + bl sub_8067B7C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068154 + adds r0, r4, 0 + mov r1, sp + bl sub_806879C + ldr r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806874C + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r4] +_08068888: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806883C + + thumb_func_start sub_8068890 +sub_8068890: @ 8068890 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + lsls r0, 28 + cmp r0, 0 + bge _080688DC + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + bl sub_80681EC + adds r0, r4, 0 + mov r1, sp + bl sub_8067BD4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068154 + adds r0, r4, 0 + mov r1, sp + bl sub_80687D4 + ldr r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806874C + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r4] +_080688DC: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8068890 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s new file mode 100644 index 000000000..99febe96f --- /dev/null +++ b/asm/field_map_obj.s @@ -0,0 +1,22062 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_805DE2C +sub_805DE2C: @ 805DE2C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + movs r2, 0x24 + bl memset + movs r0, 0xFF + strb r0, [r4, 0x8] + movs r0, 0x1 + negs r0, r0 + strb r0, [r4, 0x9] + strb r0, [r4, 0xA] + strb r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805DE2C + + thumb_func_start sub_805DE4C +sub_805DE4C: @ 805DE4C + push {r4,r5,lr} + movs r4, 0 + ldr r5, _0805DE70 @ =gUnknown_2036E38 +_0805DE52: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + bl sub_805DE2C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0805DE52 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805DE70: .4byte gUnknown_2036E38 + thumb_func_end sub_805DE4C + + thumb_func_start sub_805DE74 +sub_805DE74: @ 805DE74 + push {lr} + bl sub_8058378 + bl sub_805DE4C + bl sub_805C95C + bl sub_805DE8C + pop {r0} + bx r0 + thumb_func_end sub_805DE74 + + thumb_func_start sub_805DE8C +sub_805DE8C: @ 805DE8C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + ldr r0, _0805DF28 @ =gUnknown_83A0010 + ldr r0, [r0, 0x54] + mov r9, r0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805DF2C @ =gUnknown_202063C + mov r10, r1 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r10 + ldrb r1, [r4, 0x1] + movs r5, 0x4 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + movs r1, 0x1 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r4, 0 + bl sub_800860C + adds r0, r4, 0 + movs r1, 0 + bl sub_800843C + adds r4, 0x3E + ldrb r0, [r4] + movs r6, 0x4 + orrs r0, r6 + strb r0, [r4] + mov r0, r9 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r10 + ldrb r0, [r4, 0x1] + ands r5, r0 + mov r0, r8 + orrs r5, r0 + strb r5, [r4, 0x1] + adds r0, r4, 0 + bl sub_800860C + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + adds r4, 0x3E + ldrb r0, [r4] + orrs r0, r6 + strb r0, [r4] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805DF28: .4byte gUnknown_83A0010 +_0805DF2C: .4byte gUnknown_202063C + thumb_func_end sub_805DE8C + + thumb_func_start sub_805DF30 +sub_805DF30: @ 805DF30 + push {lr} + movs r1, 0 + ldr r2, _0805DF3C @ =gUnknown_2036E38 + ldrb r0, [r2] + b _0805DF54 + .align 2, 0 +_0805DF3C: .4byte gUnknown_2036E38 +_0805DF40: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bhi _0805DF5A + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] +_0805DF54: + lsls r0, 31 + cmp r0, 0 + bne _0805DF40 +_0805DF5A: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_805DF30 + + thumb_func_start sub_805DF60 +sub_805DF60: @ 805DF60 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + cmp r0, 0xFE + bls _0805DF78 + bl sub_805E044 + b _0805DF7C +_0805DF78: + bl sub_805DFF4 +_0805DF7C: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_805DF60 + + thumb_func_start sub_805DF84 +sub_805DF84: @ 805DF84 + push {r4,lr} + adds r4, r3, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl sub_805DF60 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _0805DFA6 + movs r0, 0 + b _0805DFA8 +_0805DFA6: + movs r0, 0x1 +_0805DFA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805DF84 + + thumb_func_start sub_805DFB0 +sub_805DFB0: @ 805DFB0 + push {r4-r6,lr} + movs r3, 0 + ldr r5, _0805DFF0 @ =gUnknown_2036E38 + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r1, 16 +_0805DFBE: + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0805DFDE + movs r6, 0x10 + ldrsh r0, [r2, r6] + cmp r0, r4 + bne _0805DFDE + movs r6, 0x12 + ldrsh r0, [r2, r6] + cmp r0, r1 + beq _0805DFE8 +_0805DFDE: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0805DFBE +_0805DFE8: + adds r0, r3, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805DFF0: .4byte gUnknown_2036E38 + thumb_func_end sub_805DFB0 + + thumb_func_start sub_805DFF4 +sub_805DFF4: @ 805DFF4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + ldr r6, _0805E02C @ =gUnknown_2036E38 +_0805E006: + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r3, r0, r6 + ldrb r0, [r3] + lsls r0, 31 + cmp r0, 0 + beq _0805E030 + ldrb r0, [r3, 0x8] + cmp r0, r5 + bne _0805E030 + ldrb r0, [r3, 0x9] + cmp r0, r4 + bne _0805E030 + ldrb r0, [r3, 0xA] + cmp r0, r2 + bne _0805E030 + adds r0, r1, 0 + b _0805E03C + .align 2, 0 +_0805E02C: .4byte gUnknown_2036E38 +_0805E030: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _0805E006 + movs r0, 0x10 +_0805E03C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805DFF4 + + thumb_func_start sub_805E044 +sub_805E044: @ 805E044 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r4, _0805E068 @ =gUnknown_2036E38 +_0805E04E: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0805E06C + ldrb r0, [r1, 0x8] + cmp r0, r3 + bne _0805E06C + adds r0, r2, 0 + b _0805E078 + .align 2, 0 +_0805E068: .4byte gUnknown_2036E38 +_0805E06C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0805E04E + movs r0, 0x10 +_0805E078: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805E044 + + thumb_func_start sub_805E080 +sub_805E080: @ 805E080 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r5, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + movs r0, 0 + mov r10, r0 + mov r8, r0 + mov r9, r0 + movs r1, 0 + str r1, [sp, 0x4] + str r0, [sp, 0x8] + ldrb r0, [r5, 0x2] + cmp r0, 0xFF + bne _0805E0DA + movs r1, 0x1 + mov r10, r1 + ldrb r4, [r5, 0x8] + ldrb r7, [r5, 0xC] + ldrb r6, [r5, 0xE] + ldrh r0, [r5, 0x4] + mov r8, r0 + ldrh r5, [r5, 0x6] + mov r9, r5 + mov r1, r8 + str r1, [sp, 0x4] + mov r0, r9 + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_8055238 + ldr r1, [r0, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + subs r0, 0x18 + ldr r1, [r1, 0x4] + adds r5, r1, r0 +_0805E0DA: + ldrb r0, [r5] + adds r1, r7, 0 + adds r2, r6, 0 + mov r3, sp + bl sub_805E414 + lsls r0, 24 + cmp r0, 0 + bne _0805E106 + ldr r1, [sp, 0x4] + lsls r2, r1, 16 + asrs r2, 16 + ldr r0, [sp, 0x8] + lsls r3, r0, 16 + asrs r3, 16 + adds r0, r5, 0 + mov r1, r10 + bl sub_805E238 + lsls r0, 24 + cmp r0, 0 + bne _0805E10A +_0805E106: + movs r0, 0x10 + b _0805E220 +_0805E10A: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805E13C @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_805DE2C + mov r1, r10 + cmp r1, 0 + beq _0805E140 + mov r1, r8 + lsls r0, r1, 16 + movs r1, 0xE0 + lsls r1, 11 + adds r0, r1 + lsrs r3, r0, 16 + mov r1, r9 + lsls r0, r1, 16 + movs r1, 0xE0 + lsls r1, 11 + adds r0, r1 + b _0805E14E + .align 2, 0 +_0805E13C: .4byte gUnknown_2036E38 +_0805E140: + ldrh r0, [r5, 0x4] + adds r0, 0x7 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r0, [r5, 0x6] + adds r0, 0x7 + lsls r0, 16 +_0805E14E: + lsrs r2, r0, 16 + ldrb r0, [r4] + movs r1, 0x1 + orrs r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0x1] + strb r0, [r4, 0x5] + ldrb r0, [r5, 0x9] + strb r0, [r4, 0x6] + ldrb r0, [r5] + strb r0, [r4, 0x8] + strb r7, [r4, 0x9] + strb r6, [r4, 0xA] + strh r3, [r4, 0xC] + strh r2, [r4, 0xE] + strh r3, [r4, 0x10] + strh r2, [r4, 0x12] + strh r3, [r4, 0x14] + strh r2, [r4, 0x16] + ldrb r0, [r5, 0x8] + movs r6, 0xF + adds r1, r6, 0 + ands r1, r0 + ldrb r2, [r4, 0xB] + movs r0, 0x10 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0xB] + ldrb r1, [r5, 0x8] + lsls r1, 4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0xB] + ldrb r1, [r5, 0xA] + lsls r1, 28 + movs r0, 0xF + mov r9, r0 + lsrs r1, 28 + ldrb r2, [r4, 0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x19] + ldrb r1, [r5, 0xA] + lsrs r1, 4 + lsls r1, 4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0x19] + ldrh r0, [r5, 0xC] + strb r0, [r4, 0x7] + ldrh r0, [r5, 0xE] + strb r0, [r4, 0x1D] + ldr r1, _0805E230 @ =gUnknown_839FD5D + ldrb r0, [r5, 0x9] + adds r0, r1 + ldrb r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + strb r1, [r0] + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_805FBDC + adds r0, r4, 0 + bl sub_805F2F8 + ldr r1, _0805E234 @ =gUnknown_839FD0C + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0805E21C + ldrb r2, [r4, 0x19] + adds r0, r6, 0 + ands r0, r2 + cmp r0, 0 + bne _0805E204 + lsls r0, r2, 28 + lsrs r0, 28 + adds r0, 0x1 + mov r1, r9 + ands r0, r1 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x19] +_0805E204: + ldrb r2, [r4, 0x19] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + bne _0805E21C + lsrs r1, r2, 4 + adds r1, 0x1 + lsls r1, 4 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x19] +_0805E21C: + mov r0, sp + ldrb r0, [r0] +_0805E220: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E230: .4byte gUnknown_839FD5D +_0805E234: .4byte gUnknown_839FD0C + thumb_func_end sub_805E080 + + thumb_func_start sub_805E238 +sub_805E238: @ 805E238 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsls r2, 16 + lsrs r4, r2, 16 + lsls r3, 16 + lsrs r5, r3, 16 + cmp r1, 0 + beq _0805E25C + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + bl sub_805E27C + lsls r0, 24 + cmp r0, 0 + beq _0805E274 +_0805E25C: + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + adds r0, r6, 0 + bl sub_805E2E8 + lsls r0, 24 + cmp r0, 0 + beq _0805E274 + movs r0, 0x1 + b _0805E276 +_0805E274: + movs r0, 0 +_0805E276: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805E238 + + thumb_func_start sub_805E27C +sub_805E27C: @ 805E27C + push {r4,r5,lr} + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + adds r5, r4, 0 + ldrb r0, [r0, 0x1] + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0805E2DE + ldr r0, _0805E2B8 @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r0, r3, 16 + asrs r3, r0, 16 + cmp r1, r3 + bge _0805E2BC + adds r0, r1, 0 + adds r0, 0x8 + cmp r0, r3 + blt _0805E2DE + movs r0, 0x2 + ldrsh r3, [r2, r0] + subs r1, r3, 0x6 + lsls r0, r4, 16 + b _0805E2CE + .align 2, 0 +_0805E2B8: .4byte gUnknown_3005008 +_0805E2BC: + movs r1, 0 + ldrsh r0, [r2, r1] + subs r0, 0x8 + cmp r0, r3 + bgt _0805E2DE + movs r0, 0x2 + ldrsh r3, [r2, r0] + subs r1, r3, 0x6 + lsls r0, r5, 16 +_0805E2CE: + asrs r2, r0, 16 + cmp r1, r2 + bgt _0805E2DE + adds r0, r3, 0x6 + cmp r0, r2 + blt _0805E2DE + movs r0, 0 + b _0805E2E0 +_0805E2DE: + movs r0, 0x1 +_0805E2E0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805E27C + + thumb_func_start sub_805E2E8 +sub_805E2E8: @ 805E2E8 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8056188 + lsls r0, 24 + lsrs r0, 24 + bl sub_80561D8 + lsls r0, 24 + cmp r0, 0 + beq _0805E37C + ldr r1, _0805E374 @ =gUnknown_3005040 + ldr r0, [r1] + adds r3, r0, 0 + subs r3, 0x10 + ldr r0, [r1, 0x4] + adds r5, r0, 0 + subs r5, 0xF + ldrb r0, [r4, 0x1] + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0805E37C + ldr r0, _0805E378 @ =gUnknown_3005008 + ldr r1, [r0] + movs r2, 0 + ldrsh r1, [r1, r2] + adds r2, r0, 0 + cmp r1, 0 + bne _0805E32E + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + ble _0805E36A +_0805E32E: + ldr r0, [r2] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, r3 + bne _0805E344 + movs r0, 0x4 + ldrsh r1, [r4, r0] + adds r0, r3, 0 + subs r0, 0x8 + cmp r1, r0 + bge _0805E36A +_0805E344: + ldr r0, [r2] + movs r1, 0x2 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0805E356 + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + ble _0805E36A +_0805E356: + ldr r0, [r2] + movs r2, 0x2 + ldrsh r0, [r0, r2] + cmp r0, r5 + bne _0805E37C + movs r0, 0x6 + ldrsh r1, [r4, r0] + subs r0, r5, 0x6 + cmp r1, r0 + blt _0805E37C +_0805E36A: + adds r0, r4, 0 + bl sub_805E384 + movs r0, 0 + b _0805E37E + .align 2, 0 +_0805E374: .4byte gUnknown_3005040 +_0805E378: .4byte gUnknown_3005008 +_0805E37C: + movs r0, 0x1 +_0805E37E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805E2E8 + + thumb_func_start sub_805E384 +sub_805E384: @ 805E384 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x14] + subs r0, 0x11 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xE + bhi _0805E39A + ldrh r0, [r1, 0x14] + bl sub_806E680 +_0805E39A: + pop {r0} + bx r0 + thumb_func_end sub_805E384 + + thumb_func_start sub_805E3A0 +sub_805E3A0: @ 805E3A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _0805E3B8 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + cmp r0, 0 + bne _0805E3CE + b _0805E404 + .align 2, 0 +_0805E3B8: .4byte gUnknown_2036DFC +_0805E3BC: + ldr r0, [r7] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + adds r0, r4, 0 + bl sub_805E080 + lsls r0, 24 + lsrs r0, 24 + b _0805E406 +_0805E3CE: + ldrb r6, [r0] + movs r5, 0 + cmp r5, r6 + bcs _0805E404 + ldr r7, _0805E410 @ =gUnknown_3005008 +_0805E3D8: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + movs r1, 0x8E + lsls r1, 4 + adds r0, r1 + ldr r1, [r7] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, r8 + bne _0805E3FA + ldrh r0, [r4, 0x14] + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0805E3BC +_0805E3FA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _0805E3D8 +_0805E404: + movs r0, 0x10 +_0805E406: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E410: .4byte gUnknown_3005008 + thumb_func_end sub_805E3A0 + + thumb_func_start sub_805E414 +sub_805E414: @ 805E414 + push {r4-r7,lr} + mov r12, r3 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + movs r2, 0 + ldr r1, _0805E470 @ =gUnknown_2036E38 + ldrb r0, [r1] + lsls r0, 31 + adds r7, r1, 0 + cmp r0, 0 + beq _0805E468 + adds r3, r1, 0 +_0805E434: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r3 + ldrb r0, [r1, 0x8] + cmp r0, r6 + bne _0805E44E + ldrb r0, [r1, 0x9] + cmp r0, r5 + bne _0805E44E + ldrb r0, [r1, 0xA] + cmp r0, r4 + beq _0805E46C +_0805E44E: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bhi _0805E46C + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0805E434 +_0805E468: + cmp r2, 0xF + bls _0805E474 +_0805E46C: + movs r0, 0x1 + b _0805E4A8 + .align 2, 0 +_0805E470: .4byte gUnknown_2036E38 +_0805E474: + mov r0, r12 + strb r2, [r0] + ldr r1, _0805E4B0 @ =gUnknown_2036E38 +_0805E47A: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3] + lsls r0, 31 + cmp r0, 0 + beq _0805E49C + ldrb r0, [r3, 0x8] + cmp r0, r6 + bne _0805E49C + ldrb r0, [r3, 0x9] + cmp r0, r5 + bne _0805E49C + ldrb r0, [r3, 0xA] + cmp r0, r4 + beq _0805E46C +_0805E49C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0805E47A + movs r0, 0 +_0805E4A8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E4B0: .4byte gUnknown_2036E38 + thumb_func_end sub_805E414 + + thumb_func_start sub_805E4B4 +sub_805E4B4: @ 805E4B4 + push {lr} + ldrb r2, [r0] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + bl sub_805E510 + pop {r0} + bx r0 + thumb_func_end sub_805E4B4 + + thumb_func_start sub_805E4C8 +sub_805E4C8: @ 805E4C8 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805E506 + mov r0, sp + ldrb r0, [r0] + bl sub_805FC74 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E680 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805E50C @ =gUnknown_2036E38 + adds r0, r1 + bl sub_805E4B4 +_0805E506: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805E50C: .4byte gUnknown_2036E38 + thumb_func_end sub_805E4C8 + + thumb_func_start sub_805E510 +sub_805E510: @ 805E510 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + bl sub_805F2C8 + ldrh r2, [r0, 0x6] + ldr r1, _0805E554 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + ldr r2, _0805E558 @ =gUnknown_202063C + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0xC + adds r0, r1 + mov r1, sp + str r1, [r0] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + bl sub_8007280 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805E554: .4byte 0xffff0000 +_0805E558: .4byte gUnknown_202063C + thumb_func_end sub_805E510 + + thumb_func_start sub_805E55C +sub_805E55C: @ 805E55C + push {r4,lr} + movs r4, 0 +_0805E560: + ldr r0, _0805E588 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + cmp r4, r0 + beq _0805E576 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _0805E58C @ =gUnknown_2036E38 + adds r0, r1 + bl sub_805E4B4 +_0805E576: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0805E560 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805E588: .4byte gUnknown_2037078 +_0805E58C: .4byte gUnknown_2036E38 + thumb_func_end sub_805E55C + + thumb_func_start sub_805E590 +sub_805E590: @ 805E590 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + lsls r4, 16 + lsrs r4, 16 + mov r10, r4 + bl sub_805E080 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x10 + bne _0805E5CA + movs r0, 0x10 + b _0805E718 +_0805E5CA: + mov r0, r8 + lsls r4, r0, 3 + adds r0, r4, r0 + lsls r0, 2 + ldr r1, _0805E5F4 @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrb r0, [r5, 0x5] + bl sub_805F2C8 + adds r6, r0, 0 + ldrb r1, [r6, 0xC] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0805E5F8 + ldrh r0, [r6, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F5E8 + b _0805E606 + .align 2, 0 +_0805E5F4: .4byte gUnknown_2036E38 +_0805E5F8: + cmp r0, 0xA + bne _0805E606 + ldrh r0, [r6, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F658 +_0805E606: + ldrb r0, [r5, 0x6] + cmp r0, 0x4C + bne _0805E614 + ldrb r0, [r5, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5, 0x1] +_0805E614: + ldr r1, _0805E648 @ =0x0000ffff + adds r0, r1, 0 + strh r0, [r7, 0x2] + adds r0, r7, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x40 + bne _0805E650 + ldr r0, _0805E64C @ =gUnknown_2036E38 + mov r2, r8 + adds r1, r4, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + movs r0, 0x10 + b _0805E718 + .align 2, 0 +_0805E648: .4byte 0x0000ffff +_0805E64C: .4byte gUnknown_2036E38 +_0805E650: + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + ldr r1, _0805E728 @ =gUnknown_202063C + adds r4, r0, r1 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + ldrh r2, [r5, 0x10] + adds r0, r2 + lsls r0, 16 + asrs r0, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldrh r2, [r5, 0x12] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063AD4 + ldrh r0, [r6, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r4, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r4, 0x20] + adds r0, 0x8 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r1, [r6, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + mov r0, r8 + strh r0, [r4, 0x2E] + strb r7, [r5, 0x4] + ldrb r1, [r6, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r5, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0805E702 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_0805E702: + ldrb r0, [r5, 0xB] + lsrs r0, 4 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80682F8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80679F8 + mov r0, r8 +_0805E718: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E728: .4byte gUnknown_202063C + thumb_func_end sub_805E590 + + thumb_func_start sub_805E72C +sub_805E72C: @ 805E72C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x2C + mov r9, r0 + adds r6, r1, 0 + mov r8, r2 + adds r4, r3, 0 + ldr r5, [sp, 0x48] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0 + str r0, [sp, 0x20] + mov r1, r9 + ldrb r0, [r1, 0x1] + bl sub_805F2C8 + adds r7, r0, 0 + add r2, sp, 0x20 + mov r0, r9 + add r1, sp, 0x8 + bl sub_805E960 + ldrh r3, [r7, 0x6] + ldr r2, _0805E7A4 @ =0xffff0000 + add r1, sp, 0x24 + ldr r0, [r1, 0x4] + ands r0, r2 + orrs r0, r3 + str r0, [r1, 0x4] + str r1, [sp, 0x14] + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + mov r0, r9 + add r1, sp, 0x8 + adds r2, r6, 0 + mov r3, r8 + bl sub_805E590 + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + cmp r2, 0x10 + bne _0805E7A8 + movs r0, 0x10 + b _0805E7DE + .align 2, 0 +_0805E7A4: .4byte 0xffff0000 +_0805E7A8: + ldr r4, _0805E7EC @ =gUnknown_202063C + ldr r1, _0805E7F0 @ =gUnknown_2036E38 + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r1, [r3, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r1 + ldr r1, [r7, 0x1C] + str r1, [r0] + ldr r2, [sp, 0x20] + cmp r2, 0 + beq _0805E7DC + ldrb r1, [r3, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r1, r2, 0 + bl sub_8008A58 +_0805E7DC: + adds r0, r5, 0 +_0805E7DE: + add sp, 0x2C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E7EC: .4byte gUnknown_202063C +_0805E7F0: .4byte gUnknown_2036E38 + thumb_func_end sub_805E72C + + thumb_func_start sub_805E7F4 +sub_805E7F4: @ 805E7F4 + push {r4-r6,lr} + sub sp, 0x8 + adds r5, r0, 0 + mov r4, sp + adds r4, 0x6 + add r0, sp, 0x4 + adds r1, r4, 0 + bl sub_8063C10 + ldr r0, _0805E82C @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + add r0, sp, 0x4 + movs r6, 0 + ldrsh r3, [r0, r6] + movs r6, 0 + ldrsh r0, [r4, r6] + str r0, [sp] + adds r0, r5, 0 + bl sub_805E72C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805E82C: .4byte gUnknown_3005008 + thumb_func_end sub_805E7F4 + + thumb_func_start sub_805E830 +sub_805E830: @ 805E830 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x18 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + mov r8, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + ldr r5, _0805E894 @ =0xfff90000 + adds r3, r5 + lsrs r3, 16 + lsls r4, 16 + adds r4, r5 + lsrs r4, 16 + mov r5, sp + movs r6, 0 + strb r2, [r5] + mov r2, sp + strb r0, [r2, 0x1] + mov r0, sp + strb r6, [r0, 0x2] + movs r5, 0 + strh r3, [r0, 0x4] + strh r4, [r0, 0x6] + mov r2, r8 + strb r2, [r0, 0x8] + strb r1, [r0, 0x9] + mov r2, sp + ldrb r1, [r2, 0xA] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0xA] + mov r0, sp + strb r5, [r0, 0xA] + strh r6, [r0, 0xC] + strh r6, [r0, 0xE] + bl sub_805E7F4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805E894: .4byte 0xfff90000 + thumb_func_end sub_805E830 + + thumb_func_start sub_805E898 +sub_805E898: @ 805E898 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_805FD5C + adds r5, r0, 0 + cmp r5, 0 + beq _0805E8DE + mov r4, sp + adds r4, 0x6 + add r0, sp, 0x4 + adds r1, r4, 0 + bl sub_8063C10 + add r0, sp, 0x4 + movs r1, 0 + ldrsh r3, [r0, r1] + movs r1, 0 + ldrsh r0, [r4, r1] + str r0, [sp] + adds r0, r5, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_805E72C + lsls r0, 24 + lsrs r0, 24 + b _0805E8E0 +_0805E8DE: + movs r0, 0x10 +_0805E8E0: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805E898 + + thumb_func_start sub_805E8E8 +sub_805E8E8: @ 805E8E8 + push {r4-r7,lr} + adds r6, r1, 0 + adds r4, r2, 0 + adds r7, r3, 0 + lsls r0, 24 + lsrs r0, 24 + bl sub_805F2C8 + adds r5, r0, 0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x2] + ldr r0, [r5, 0x10] + str r0, [r4, 0x4] + ldr r0, [r5, 0x18] + str r0, [r4, 0x8] + ldr r0, [r5, 0x1C] + str r0, [r4, 0xC] + ldr r0, [r5, 0x20] + str r0, [r4, 0x10] + bl sub_8069A64 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0805E934 + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0805E934 + ldr r0, _0805E930 @ =sub_811246C + str r0, [r4, 0x14] + b _0805E936 + .align 2, 0 +_0805E930: .4byte sub_811246C +_0805E934: + str r6, [r4, 0x14] +_0805E936: + ldr r0, [r5, 0x14] + str r0, [r7] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805E8E8 + + thumb_func_start sub_805E940 +sub_805E940: @ 805E940 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + ldr r4, _0805E95C @ =gUnknown_839FBC8 + lsrs r1, 14 + adds r1, r4 + ldr r1, [r1] + bl sub_805E8E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805E95C: .4byte gUnknown_839FBC8 + thumb_func_end sub_805E940 + + thumb_func_start sub_805E960 +sub_805E960: @ 805E960 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldrb r0, [r4, 0x1] + ldrb r1, [r4, 0x9] + adds r2, r5, 0 + bl sub_805E940 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_805E960 + + thumb_func_start sub_805E978 +sub_805E978: @ 805E978 + push {r4-r6,lr} + sub sp, 0x1C + ldr r4, [sp, 0x2C] + lsls r0, 16 + lsrs r0, 16 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 16 + lsrs r5, r3, 16 + lsls r4, 24 + lsrs r4, 24 + add r3, sp, 0x18 + mov r2, sp + bl sub_805E8E8 + mov r0, sp + ldrh r1, [r0, 0x2] + ldr r0, _0805E9F0 @ =0x0000ffff + cmp r1, r0 + beq _0805E9A8 + mov r0, sp + ldrh r0, [r0, 0x2] + bl sub_805F4B0 +_0805E9A8: + lsls r1, r6, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + mov r0, sp + adds r3, r4, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0805E9E4 + ldr r1, [sp, 0x18] + cmp r1, 0 + beq _0805E9E4 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r0, _0805E9F4 @ =gUnknown_202063C + adds r4, r0 + adds r0, r4, 0 + bl sub_8008A58 + adds r4, 0x42 + ldrb r1, [r4] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] +_0805E9E4: + adds r0, r5, 0 + add sp, 0x1C + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805E9F0: .4byte 0x0000ffff +_0805E9F4: .4byte gUnknown_202063C + thumb_func_end sub_805E978 + + thumb_func_start sub_805E9F8 +sub_805E9F8: @ 805E9F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + adds r5, r0, 0 + ldr r0, [sp, 0x44] + ldr r4, [sp, 0x48] + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + add r1, sp, 0x18 + mov r8, r1 + strh r2, [r1] + mov r6, sp + adds r6, 0x1A + strh r3, [r6] + lsls r0, 24 + lsrs r7, r0, 24 + mov r9, r7 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x20] + adds r0, r5, 0 + bl sub_805F2C8 + adds r4, r0, 0 + ldr r1, _0805EB38 @ =sub_8068FA8 + add r3, sp, 0x1C + adds r0, r5, 0 + mov r2, sp + bl sub_805E8E8 + mov r1, sp + ldr r2, _0805EB3C @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1, 0x2] + mov r1, r8 + movs r2, 0 + ldrsh r0, [r1, r2] + adds r0, 0x7 + strh r0, [r1] + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, 0x7 + strh r0, [r6] + mov r0, r8 + adds r1, r6, 0 + movs r2, 0x8 + movs r3, 0x10 + bl sub_8063BC4 + mov r2, r8 + movs r0, 0 + ldrsh r1, [r2, r0] + movs r0, 0 + ldrsh r2, [r6, r0] + mov r0, sp + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _0805EB24 + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, _0805EB40 @ =gUnknown_202063C + adds r5, r0, r1 + ldrh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r5, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, 0x1 + strb r0, [r1] + movs r0, 0 + ldrsb r0, [r1, r0] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldrb r1, [r4, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r3, [r5, 0x5] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r3 + orrs r0, r1 + strb r0, [r5, 0x5] + adds r3, r5, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + mov r0, r10 + strh r0, [r5, 0x2E] + strh r7, [r5, 0x30] + ldrb r1, [r4, 0xC] + ands r2, r1 + cmp r2, 0xA + bne _0805EAE4 + ldrh r0, [r4, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F658 +_0805EAE4: + ldr r1, [sp, 0x1C] + cmp r1, 0 + beq _0805EB00 + adds r0, r5, 0 + bl sub_8008A58 + adds r2, r5, 0 + adds r2, 0x42 + ldrb r0, [r2] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r2] +_0805EB00: + adds r0, r5, 0 + mov r1, r9 + bl sub_8068248 + mov r0, r9 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80682F8 + ldr r0, [sp, 0x20] + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_0805EB24: + adds r0, r6, 0 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805EB38: .4byte sub_8068FA8 +_0805EB3C: .4byte 0x0000ffff +_0805EB40: .4byte gUnknown_202063C + thumb_func_end sub_805E9F8 + + thumb_func_start sub_805EB44 +sub_805EB44: @ 805EB44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x1C + adds r6, r0, 0 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + bl sub_805F2C8 + adds r7, r0, 0 + ldr r1, _0805EC24 @ =nullsub_8 + add r3, sp, 0x18 + adds r0, r6, 0 + mov r2, sp + bl sub_805E8E8 + mov r1, sp + ldr r2, _0805EC28 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1, 0x2] + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0805EC14 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r1, _0805EC2C @ =gUnknown_202063C + adds r4, r0, r1 + ldrh r0, [r7, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x29 + strb r0, [r1] + movs r0, 0 + ldrsb r0, [r1, r0] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r1, [r7, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r3, [r4, 0x5] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, 0x5] + mov r0, r8 + strh r0, [r4, 0x2E] + ldrb r1, [r7, 0xC] + ands r2, r1 + cmp r2, 0xA + bne _0805EBE6 + ldrh r0, [r7, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F658 +_0805EBE6: + ldr r1, [sp, 0x18] + cmp r1, 0 + beq _0805EC02 + adds r0, r4, 0 + bl sub_8008A58 + adds r2, r4, 0 + adds r2, 0x42 + ldrb r0, [r2] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r2] +_0805EC02: + movs r0, 0x1 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_0805EC14: + adds r0, r5, 0 + add sp, 0x1C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805EC24: .4byte nullsub_8 +_0805EC28: .4byte 0x0000ffff +_0805EC2C: .4byte gUnknown_202063C + thumb_func_end sub_805EB44 + + thumb_func_start sub_805EC30 +sub_805EC30: @ 805EC30 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x4] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x8] + ldr r0, _0805ED08 @ =gUnknown_2036DFC + ldr r3, [r0, 0x4] + cmp r3, 0 + beq _0805ECF8 + ldr r7, _0805ED0C @ =gUnknown_3005008 + ldr r2, [r7] + ldrh r1, [r2] + subs r0, r1, 0x2 + lsls r0, 16 + lsrs r4, r0, 16 + adds r1, 0x11 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0xC] + ldrh r1, [r2, 0x2] + adds r0, r1, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + ldrb r3, [r3] + str r3, [sp, 0x10] + movs r5, 0 + cmp r5, r3 + bcs _0805ECF8 + lsls r0, r1, 16 + asrs r0, 16 + mov r9, r0 + lsls r0, r4, 16 + asrs r0, 16 + mov r8, r0 +_0805EC86: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + movs r1, 0x8E + lsls r1, 4 + adds r0, r1 + ldr r1, [r7] + adds r4, r1, r0 + ldrh r0, [r4, 0x4] + adds r0, 0x7 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r4, 0x6] + adds r0, 0x7 + lsls r0, 16 + asrs r1, r0, 16 + cmp r9, r1 + bgt _0805ECEC + mov r3, r10 + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, r1 + blt _0805ECEC + lsls r0, r2, 16 + asrs r1, r0, 16 + cmp r8, r1 + bgt _0805ECEC + ldr r6, [sp, 0xC] + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, r1 + blt _0805ECEC + ldrh r0, [r4, 0x14] + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _0805ECEC + ldr r0, [r7] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + ldr r0, [sp, 0x4] + lsls r3, r0, 16 + ldr r6, [sp, 0x8] + lsls r0, r6, 16 + asrs r0, 16 + str r0, [sp] + adds r0, r4, 0 + asrs r3, 16 + bl sub_805E72C +_0805ECEC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [sp, 0x10] + cmp r5, r0 + bcc _0805EC86 +_0805ECF8: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805ED08: .4byte gUnknown_2036DFC +_0805ED0C: .4byte gUnknown_3005008 + thumb_func_end sub_805EC30 + + thumb_func_start sub_805ED10 +sub_805ED10: @ 805ED10 + push {r4-r6,lr} + movs r3, 0 + ldr r6, _0805ED64 @ =gUnknown_2031DEC +_0805ED16: + movs r2, 0 + movs r4, 0 + adds r5, r3, 0x1 +_0805ED1C: + lsls r0, r2, 2 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, 0 + beq _0805ED2E + ldrb r1, [r1, 0x2] + cmp r3, r1 + bne _0805ED2E + movs r4, 0x1 +_0805ED2E: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0805ED1C + cmp r4, 0 + bne _0805ED56 + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r1, _0805ED68 @ =gUnknown_2036E38 + adds r2, r0, r1 + ldr r0, [r2] + ldr r1, _0805ED6C @ =0x00010001 + ands r0, r1 + cmp r0, 0x1 + bne _0805ED56 + adds r0, r2, 0 + bl sub_805ED70 +_0805ED56: + lsls r0, r5, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0805ED16 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805ED64: .4byte gUnknown_2031DEC +_0805ED68: .4byte gUnknown_2036E38 +_0805ED6C: .4byte 0x00010001 + thumb_func_end sub_805ED10 + + thumb_func_start sub_805ED70 +sub_805ED70: @ 805ED70 + push {r4-r7,lr} + adds r3, r0, 0 + ldr r0, _0805EDEC @ =gUnknown_3005008 + ldr r2, [r0] + ldrh r0, [r2] + subs r1, r0, 0x2 + lsls r1, 16 + adds r0, 0x11 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r4, [r2, 0x2] + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + movs r0, 0x10 + ldrsh r2, [r3, r0] + lsrs r7, r1, 16 + asrs r1, 16 + cmp r2, r1 + blt _0805EDB6 + lsls r0, r5, 16 + asrs r0, 16 + cmp r2, r0 + bgt _0805EDB6 + movs r0, 0x12 + ldrsh r1, [r3, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r1, r0 + blt _0805EDB6 + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + ble _0805EDE4 +_0805EDB6: + movs r0, 0xC + ldrsh r1, [r3, r0] + lsls r0, r7, 16 + asrs r0, 16 + cmp r1, r0 + blt _0805EDDE + lsls r0, r5, 16 + asrs r0, 16 + cmp r1, r0 + bgt _0805EDDE + movs r0, 0xE + ldrsh r1, [r3, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r1, r0 + blt _0805EDDE + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + ble _0805EDE4 +_0805EDDE: + adds r0, r3, 0 + bl sub_805E4B4 +_0805EDE4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EDEC: .4byte gUnknown_3005008 + thumb_func_end sub_805ED70 + + thumb_func_start sub_805EDF0 +sub_805EDF0: @ 805EDF0 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + bl sub_805C95C + movs r6, 0 + ldr r7, _0805EE38 @ =gUnknown_2036E38 + lsls r4, 16 + lsls r5, 16 +_0805EE0A: + lsls r0, r6, 3 + adds r0, r6 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0805EE24 + adds r0, r6, 0 + asrs r1, r4, 16 + asrs r2, r5, 16 + bl sub_805EE3C +_0805EE24: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bls _0805EE0A + bl sub_805DE8C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EE38: .4byte gUnknown_2036E38 + thumb_func_end sub_805EDF0 + + thumb_func_start sub_805EE3C +sub_805EE3C: @ 805EE3C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 16 + lsrs r2, 16 + mov r10, r2 + movs r7, 0 + ldr r2, _0805EFE0 @ =gUnknown_2031DEC +_0805EE5E: + lsls r0, r7, 2 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _0805EE70 + ldrb r1, [r1, 0x2] + cmp r8, r1 + bne _0805EE70 + b _0805EFCE +_0805EE70: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _0805EE5E + mov r1, r8 + lsls r0, r1, 3 + add r0, r8 + lsls r0, 2 + ldr r1, _0805EFE4 @ =gUnknown_2036E38 + adds r6, r0, r1 + movs r0, 0 + str r0, [sp, 0x20] + ldrb r0, [r6, 0x5] + bl sub_805F2C8 + adds r5, r0, 0 + ldrh r2, [r5, 0x6] + ldr r1, _0805EFE8 @ =0xffff0000 + add r4, sp, 0x18 + ldr r0, [r4, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [r4, 0x4] + ldrb r0, [r6, 0x5] + ldrb r1, [r6, 0x6] + add r3, sp, 0x20 + mov r2, sp + bl sub_805E940 + str r4, [sp, 0xC] + mov r0, sp + ldr r2, _0805EFEC @ =0x0000ffff + adds r4, r2, 0 + strh r4, [r0, 0x2] + ldrb r1, [r5, 0xC] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0805EECA + ldrh r0, [r5, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F5E8 +_0805EECA: + ldrb r0, [r5, 0xC] + lsls r1, r0, 28 + lsrs r0, r1, 28 + cmp r0, 0x9 + bls _0805EEDC + ldrh r0, [r5, 0x2] + lsrs r1, 28 + bl sub_805F658 +_0805EEDC: + mov r0, sp + strh r4, [r0, 0x2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x40 + beq _0805EFCE + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + ldr r1, _0805EFF0 @ =gUnknown_202063C + adds r4, r0, r1 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + ldrh r2, [r6, 0x10] + adds r0, r2 + lsls r0, 16 + asrs r0, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldrh r2, [r6, 0x12] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063AD4 + ldrh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r4, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r4, 0x20] + adds r0, 0x8 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, [r5, 0x1C] + str r0, [r4, 0xC] + ldrb r0, [r6, 0x6] + cmp r0, 0xB + bne _0805EF6A + mov r0, r8 + adds r1, r7, 0 + bl sub_805F02C + bl sub_80DB0C4 + strb r0, [r6, 0x1B] +_0805EF6A: + ldr r1, [sp, 0x20] + cmp r1, 0 + beq _0805EF76 + adds r0, r4, 0 + bl sub_8008A58 +_0805EF76: + ldrb r1, [r5, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + mov r0, r8 + strh r0, [r4, 0x2E] + strb r7, [r6, 0x4] + ldrb r0, [r6, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0805EFBC + ldrb r0, [r6, 0x6] + cmp r0, 0xB + beq _0805EFBC + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_0805EFBC: + adds r0, r6, 0 + bl sub_805EFF4 + ldrb r0, [r6, 0xB] + lsrs r0, 4 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80682F8 +_0805EFCE: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EFE0: .4byte gUnknown_2031DEC +_0805EFE4: .4byte gUnknown_2036E38 +_0805EFE8: .4byte 0xffff0000 +_0805EFEC: .4byte 0x0000ffff +_0805EFF0: .4byte gUnknown_202063C + thumb_func_end sub_805EE3C + + thumb_func_start sub_805EFF4 +sub_805EFF4: @ 805EFF4 + push {lr} + ldrb r2, [r0] + movs r3, 0x3 + negs r3, r3 + adds r1, r3, 0 + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r2, [r0, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + ands r1, r3 + movs r2, 0x5 + negs r2, r2 + ands r1, r2 + subs r2, 0x4 + ands r1, r2 + subs r2, 0x8 + ands r1, r2 + subs r2, 0x10 + ands r1, r2 + strb r1, [r0, 0x2] + bl sub_8063D34 + pop {r0} + bx r0 + thumb_func_end sub_805EFF4 + + thumb_func_start sub_805F02C +sub_805F02C: @ 805F02C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805F058 @ =gUnknown_2037078 + strb r0, [r5, 0x5] + strb r1, [r5, 0x4] + ldr r1, _0805F05C @ =gUnknown_2036E38 + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + adds r4, r1 + ldrb r0, [r4, 0x5] + bl sub_805C824 + strb r0, [r5, 0x7] + ldrb r0, [r4, 0x5] + movs r1, 0x20 + bl sub_805CA0C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F058: .4byte gUnknown_2037078 +_0805F05C: .4byte gUnknown_2036E38 + thumb_func_end sub_805F02C + + thumb_func_start sub_805F060 +sub_805F060: @ 805F060 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + adds r0, r1, 0 + bl sub_805F2C8 + adds r5, r0, 0 + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F1CC @ =gUnknown_202063C + adds r4, r0, r1 + ldrb r1, [r5, 0xC] + movs r0, 0xF + mov r8, r0 + ands r0, r1 + cmp r0, 0 + bne _0805F09E + ldrh r0, [r5, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F538 +_0805F09E: + ldrb r1, [r5, 0xC] + mov r0, r8 + ands r0, r1 + cmp r0, 0xA + bne _0805F0B2 + ldrh r0, [r5, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl sub_805F658 +_0805F0B2: + ldr r0, [r4, 0xC] + ldrh r0, [r0, 0x4] + lsrs r0, 5 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + adds r7, r4, 0 + adds r7, 0x3F + ldrb r1, [r7] + movs r2, 0x40 + mov r9, r2 + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _0805F0D6 + adds r0, r4, 0 + bl sub_80075C0 +_0805F0D6: + ldr r0, [r5, 0x10] + ldrb r2, [r0, 0x1] + lsrs r2, 6 + lsls r2, 6 + ldrb r3, [r4, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, 0x1] + ldr r0, [r5, 0x10] + ldrb r0, [r0, 0x3] + lsrs r0, 6 + lsls r0, 6 + ldrb r2, [r4, 0x3] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x3] + ldr r3, [r5, 0x1C] + str r3, [r4, 0xC] + ldr r0, [r5, 0x18] + str r0, [r4, 0x8] + ldr r0, [r5, 0x14] + str r0, [r4, 0x18] + ldrb r1, [r5, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldrb r1, [r7] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _0805F152 + ldrh r0, [r3, 0x4] + lsrs r0, 5 + lsls r0, 24 + lsrs r0, 24 + bl sub_8007434 + lsls r0, 16 + asrs r2, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bne _0805F142 + mov r0, r10 + bl sub_8007434 + lsls r0, 16 + asrs r2, r0, 16 +_0805F142: + ldr r1, _0805F1D0 @ =0x000003ff + adds r0, r1, 0 + ands r2, r0 + ldrh r1, [r4, 0x4] + ldr r0, _0805F1D4 @ =0xfffffc00 + ands r0, r1 + orrs r0, r2 + strh r0, [r4, 0x4] +_0805F152: + ldrb r1, [r5, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r6, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x1] + mov r2, sp + ldrb r2, [r2] + strb r2, [r6, 0x5] + movs r1, 0x10 + ldrsh r0, [r6, r1] + movs r2, 0x12 + ldrsh r1, [r6, r2] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063B1C + ldrh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r4, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r4, 0x20] + adds r0, 0x8 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _0805F1BA + bl sub_805FAA8 +_0805F1BA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F1CC: .4byte gUnknown_202063C +_0805F1D0: .4byte 0x000003ff +_0805F1D4: .4byte 0xfffffc00 + thumb_func_end sub_805F060 + + thumb_func_start sub_805F1D8 +sub_805F1D8: @ 805F1D8 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F20C + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F214 @ =gUnknown_2036E38 + adds r0, r1 + adds r1, r4, 0 + bl sub_805F060 +_0805F20C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F214: .4byte gUnknown_2036E38 + thumb_func_end sub_805F1D8 + + thumb_func_start sub_805F218 +sub_805F218: @ 805F218 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + bl sub_805FBDC + ldrb r0, [r6, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0805F25E + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r5, _0805F264 @ =gUnknown_202063C + adds r4, r5 + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0 + bl sub_80083C0 +_0805F25E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805F264: .4byte gUnknown_202063C + thumb_func_end sub_805F218 + + thumb_func_start sub_805F268 +sub_805F268: @ 805F268 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F29C + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F2A4 @ =gUnknown_2036E38 + adds r0, r1 + adds r1, r4, 0 + bl sub_805F218 +_0805F29C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F2A4: .4byte gUnknown_2036E38 + thumb_func_end sub_805F268 + + thumb_func_start sub_805F2A8 +sub_805F2A8: @ 805F2A8 + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805F2C4 @ =gUnknown_2036E38 + adds r0, r2 + bl sub_805F218 + pop {r0} + bx r0 + .align 2, 0 +_0805F2C4: .4byte gUnknown_2036E38 + thumb_func_end sub_805F2A8 + + thumb_func_start sub_805F2C8 +sub_805F2C8: @ 805F2C8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xEF + bls _0805F2E0 + adds r0, r1, 0 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl sub_806E5A4 + adds r1, r0, 0 +_0805F2E0: + cmp r1, 0x97 + bls _0805F2E6 + movs r1, 0x10 +_0805F2E6: + ldr r0, _0805F2F4 @ =gUnknown_839FDB0 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0805F2F4: .4byte gUnknown_839FDB0 + thumb_func_end sub_805F2C8 + + thumb_func_start sub_805F2F8 +sub_805F2F8: @ 805F2F8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + cmp r0, 0xEF + bls _0805F30E + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl sub_806E5A4 + strb r0, [r4, 0x5] +_0805F30E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805F2F8 + + thumb_func_start sub_805F314 +sub_805F314: @ 805F314 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F356 + ldr r2, _0805F360 @ =gUnknown_2036E38 + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x1 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 5 + ldrb r3, [r1, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x1] +_0805F356: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F360: .4byte gUnknown_2036E38 + thumb_func_end sub_805F314 + + thumb_func_start sub_805F364 +sub_805F364: @ 805F364 + push {r4,lr} + ldrb r4, [r0, 0x8] + strb r4, [r1] + ldrb r1, [r0, 0x9] + strb r1, [r2] + ldrb r0, [r0, 0xA] + strb r0, [r3] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805F364 + + thumb_func_start sub_805F378 +sub_805F378: @ 805F378 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_805DFB0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x10 + beq _0805F3A0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F3A4 @ =gUnknown_2036E38 + adds r0, r1 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_0805F3A0: + pop {r0} + bx r0 + .align 2, 0 +_0805F3A4: .4byte gUnknown_2036E38 + thumb_func_end sub_805F378 + + thumb_func_start sub_805F3A8 +sub_805F3A8: @ 805F3A8 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F3EE + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + ldr r0, _0805F3F8 @ =gUnknown_2036E38 + adds r2, r0 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F3FC @ =gUnknown_202063C + adds r0, r1 + ldrb r1, [r2, 0x3] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x3] + adds r0, 0x43 + strb r4, [r0] +_0805F3EE: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F3F8: .4byte gUnknown_2036E38 +_0805F3FC: .4byte gUnknown_202063C + thumb_func_end sub_805F3A8 + + thumb_func_start sub_805F400 +sub_805F400: @ 805F400 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F43C + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0805F444 @ =gUnknown_2036E38 + adds r1, r0 + ldrb r2, [r1, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x3] + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] +_0805F43C: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805F444: .4byte gUnknown_2036E38 + thumb_func_end sub_805F400 + + thumb_func_start sub_805F448 +sub_805F448: @ 805F448 + push {r4,r5,lr} + sub sp, 0x4 + ldr r4, [sp, 0x10] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r5, r3, 16 + lsls r4, 16 + lsrs r4, 16 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F48C + ldr r2, _0805F494 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F498 @ =gUnknown_202063C + adds r0, r1 + strh r5, [r0, 0x24] + strh r4, [r0, 0x26] +_0805F48C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F494: .4byte gUnknown_2036E38 +_0805F498: .4byte gUnknown_202063C + thumb_func_end sub_805F448 + + thumb_func_start sub_805F49C +sub_805F49C: @ 805F49C + push {lr} + bl sub_80088F0 + ldr r1, _0805F4AC @ =gUnknown_3003E58 + movs r0, 0xC + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0805F4AC: .4byte gUnknown_3003E58 + thumb_func_end sub_805F49C + + thumb_func_start sub_805F4B0 +sub_805F4B0: @ 805F4B0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_805F5A0 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0805F4D4 @ =0x000011ff + cmp r1, r0 + beq _0805F4CE + lsls r0, r1, 3 + ldr r1, _0805F4D8 @ =gUnknown_83A5158 + adds r0, r1 + bl sub_805F510 +_0805F4CE: + pop {r0} + bx r0 + .align 2, 0 +_0805F4D4: .4byte 0x000011ff +_0805F4D8: .4byte gUnknown_83A5158 + thumb_func_end sub_805F4B0 + + thumb_func_start sub_805F4DC +sub_805F4DC: @ 805F4DC + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldrh r0, [r5] + ldr r1, _0805F50C @ =0x000011ff + cmp r0, r1 + beq _0805F506 + adds r6, r1, 0 +_0805F4EC: + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + bl sub_805F4B0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r0, r6 + bne _0805F4EC +_0805F506: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805F50C: .4byte 0x000011ff + thumb_func_end sub_805F4DC + + thumb_func_start sub_805F510 +sub_805F510: @ 805F510 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0805F52E + adds r0, r4, 0 + bl sub_8008928 + lsls r0, 24 + lsrs r0, 24 + b _0805F530 +_0805F52E: + movs r0, 0xFF +_0805F530: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805F510 + + thumb_func_start sub_805F538 +sub_805F538: @ 805F538 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + bl sub_805F5A0 + lsls r0, 24 + ldr r1, _0805F570 @ =gUnknown_83A5158 + lsrs r0, 21 + adds r0, r1 + ldr r0, [r0] + lsls r1, r4, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + bl sub_8083598 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F570: .4byte gUnknown_83A5158 + thumb_func_end sub_805F538 + + thumb_func_start sub_805F574 +sub_805F574: @ 805F574 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + cmp r4, r6 + bcs _0805F598 +_0805F584: + ldrh r0, [r5] + adds r1, r4, 0 + bl sub_805F538 + adds r5, 0x2 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _0805F584 +_0805F598: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805F574 + + thumb_func_start sub_805F5A0 +sub_805F5A0: @ 805F5A0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + movs r2, 0 + ldr r0, _0805F5C8 @ =gUnknown_83A5158 + ldrh r1, [r0, 0x4] + ldr r3, _0805F5CC @ =0x000011ff + adds r4, r0, 0 + cmp r1, r3 + beq _0805F5E0 + adds r6, r4, 0 + adds r1, r3, 0 +_0805F5B8: + lsls r0, r2, 3 + adds r0, r6 + ldrh r0, [r0, 0x4] + cmp r0, r5 + bne _0805F5D0 + adds r0, r2, 0 + b _0805F5E2 + .align 2, 0 +_0805F5C8: .4byte gUnknown_83A5158 +_0805F5CC: .4byte 0x000011ff +_0805F5D0: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 3 + adds r0, r4 + ldrh r0, [r0, 0x4] + cmp r0, r1 + bne _0805F5B8 +_0805F5E0: + movs r0, 0xFF +_0805F5E2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805F5A0 + + thumb_func_start sub_805F5E8 +sub_805F5E8: @ 805F5E8 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805F538 + movs r3, 0 + ldr r1, _0805F630 @ =gUnknown_83A5208 + ldrh r0, [r1] + ldr r2, _0805F634 @ =0x000011ff + cmp r0, r2 + beq _0805F650 + ldr r0, _0805F638 @ =gUnknown_835B934 + adds r5, r0 + adds r6, r2, 0 +_0805F60C: + lsls r2, r3, 3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0805F640 + adds r1, 0x4 + adds r1, r2, r1 + ldr r0, _0805F63C @ =gUnknown_2037098 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl sub_805F538 + b _0805F650 + .align 2, 0 +_0805F630: .4byte gUnknown_83A5208 +_0805F634: .4byte 0x000011ff +_0805F638: .4byte gUnknown_835B934 +_0805F63C: .4byte gUnknown_2037098 +_0805F640: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0805F60C +_0805F650: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805F5E8 + + thumb_func_start sub_805F658 +sub_805F658: @ 805F658 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _0805F6A4 @ =gUnknown_203709A + strh r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805F538 + movs r3, 0 + ldr r1, _0805F6A8 @ =gUnknown_83A5278 + ldrh r0, [r1] + ldr r2, _0805F6AC @ =0x000011ff + cmp r0, r2 + beq _0805F6C8 + ldr r0, _0805F6B0 @ =gUnknown_835B934 + adds r5, r0 + adds r6, r2, 0 +_0805F680: + lsls r2, r3, 3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0805F6B8 + adds r1, 0x4 + adds r1, r2, r1 + ldr r0, _0805F6B4 @ =gUnknown_2037098 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl sub_805F538 + b _0805F6C8 + .align 2, 0 +_0805F6A4: .4byte gUnknown_203709A +_0805F6A8: .4byte gUnknown_83A5278 +_0805F6AC: .4byte 0x000011ff +_0805F6B0: .4byte gUnknown_835B934 +_0805F6B4: .4byte gUnknown_2037098 +_0805F6B8: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0805F680 +_0805F6C8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805F658 + + thumb_func_start sub_805F6D0 +sub_805F6D0: @ 805F6D0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805F6DC @ =gUnknown_835B934 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0805F6DC: .4byte gUnknown_835B934 + thumb_func_end sub_805F6D0 + + thumb_func_start sub_805F6E0 +sub_805F6E0: @ 805F6E0 + push {r4,lr} + ldrh r3, [r0, 0x10] + strh r3, [r0, 0x14] + ldrh r4, [r0, 0x12] + strh r4, [r0, 0x16] + lsls r1, 16 + asrs r1, 16 + adds r1, r3 + strh r1, [r0, 0x10] + lsls r2, 16 + asrs r2, 16 + adds r2, r4 + strh r2, [r0, 0x12] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805F6E0 + + thumb_func_start sub_805F700 +sub_805F700: @ 805F700 + ldrh r3, [r0, 0x10] + strh r3, [r0, 0x14] + ldrh r3, [r0, 0x12] + strh r3, [r0, 0x16] + strh r1, [r0, 0x10] + strh r2, [r0, 0x12] + bx lr + thumb_func_end sub_805F700 + + thumb_func_start sub_805F710 +sub_805F710: @ 805F710 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + strh r1, [r0, 0x14] + strh r2, [r0, 0x16] + strh r1, [r0, 0x10] + strh r2, [r0, 0x12] + bx lr + thumb_func_end sub_805F710 + + thumb_func_start sub_805F724 +sub_805F724: @ 805F724 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F7C0 @ =gUnknown_202063C + adds r7, r0, r1 + ldrb r0, [r6, 0x5] + bl sub_805F2C8 + mov r8, r0 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805F710 + movs r1, 0x10 + ldrsh r0, [r6, r1] + movs r2, 0x12 + ldrsh r1, [r6, r2] + adds r2, r7, 0 + adds r2, 0x20 + adds r3, r7, 0 + adds r3, 0x22 + bl sub_8063B1C + mov r1, r8 + ldrh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r7, 0 + adds r1, 0x28 + strb r0, [r1] + mov r2, r8 + ldrh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r7, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r7, 0x20] + adds r0, 0x8 + strh r0, [r7, 0x20] + ldrh r1, [r7, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r7, 0x22] + adds r0, r6, 0 + bl sub_805EFF4 + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _0805F7B6 + bl sub_805FAA8 +_0805F7B6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F7C0: .4byte gUnknown_202063C + thumb_func_end sub_805F724 + + thumb_func_start sub_805F7C4 +sub_805F7C4: @ 805F7C4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r4, [sp, 0x10] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r5, r3, 16 + lsls r4, 16 + lsrs r4, 16 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805F80C + lsls r1, r5, 16 + lsls r2, r4, 16 + mov r0, sp + ldrb r3, [r0] + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r3, _0805F814 @ =gUnknown_2036E38 + adds r0, r3 + movs r3, 0xE0 + lsls r3, 11 + adds r1, r3 + asrs r1, 16 + adds r2, r3 + asrs r2, 16 + bl sub_805F724 +_0805F80C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F814: .4byte gUnknown_2036E38 + thumb_func_end sub_805F7C4 + + thumb_func_start sub_805F818 +sub_805F818: @ 805F818 + push {lr} + movs r2, 0x10 + ldrsh r1, [r0, r2] + movs r3, 0x12 + ldrsh r2, [r0, r3] + bl sub_805F700 + pop {r0} + bx r0 + thumb_func_end sub_805F818 + + thumb_func_start sub_805F82C +sub_805F82C: @ 805F82C + push {r4,r5,lr} + ldr r2, _0805F88C @ =gUnknown_2036E18 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0805F884 + movs r3, 0 + ldr r5, _0805F890 @ =gUnknown_2036E38 + movs r0, 0x4 + ldrsh r4, [r2, r0] + movs r0, 0x8 + ldrsh r1, [r2, r0] +_0805F846: + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0805F87A + ldrh r0, [r2, 0xC] + subs r0, r4 + strh r0, [r2, 0xC] + ldrh r0, [r2, 0xE] + subs r0, r1 + strh r0, [r2, 0xE] + ldrh r0, [r2, 0x10] + subs r0, r4 + strh r0, [r2, 0x10] + ldrh r0, [r2, 0x12] + subs r0, r1 + strh r0, [r2, 0x12] + ldrh r0, [r2, 0x14] + subs r0, r4 + strh r0, [r2, 0x14] + ldrh r0, [r2, 0x16] + subs r0, r1 + strh r0, [r2, 0x16] +_0805F87A: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0805F846 +_0805F884: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F88C: .4byte gUnknown_2036E18 +_0805F890: .4byte gUnknown_2036E38 + thumb_func_end sub_805F82C + + thumb_func_start sub_805F894 +sub_805F894: @ 805F894 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r5, r2, 24 + movs r4, 0 + ldr r0, _0805F8E0 @ =gUnknown_2036E38 + mov r8, r0 +_0805F8AC: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0805F8E4 + movs r2, 0x10 + ldrsh r0, [r1, r2] + cmp r0, r7 + bne _0805F8E4 + movs r2, 0x12 + ldrsh r0, [r1, r2] + cmp r0, r6 + bne _0805F8E4 + adds r0, r1, 0 + adds r1, r5, 0 + bl sub_805F8FC + lsls r0, 24 + cmp r0, 0 + beq _0805F8E4 + adds r0, r4, 0 + b _0805F8F0 + .align 2, 0 +_0805F8E0: .4byte gUnknown_2036E38 +_0805F8E4: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0805F8AC + movs r0, 0x10 +_0805F8F0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805F894 + + thumb_func_start sub_805F8FC +sub_805F8FC: @ 805F8FC + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0xB] + movs r0, 0xF + ands r0, r2 + cmp r0, 0 + beq _0805F91C + cmp r1, 0 + beq _0805F91C + lsls r0, r2, 28 + lsrs r0, 28 + cmp r0, r1 + beq _0805F91C + movs r0, 0 + b _0805F91E +_0805F91C: + movs r0, 0x1 +_0805F91E: + pop {r1} + bx r1 + thumb_func_end sub_805F8FC + + thumb_func_start sub_805F924 +sub_805F924: @ 805F924 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + bl sub_805F82C + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805EC30 + bl sub_805ED10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_805F924 + + thumb_func_start sub_805F950 +sub_805F950: @ 805F950 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0805F98C @ =gUnknown_835B944 + movs r1, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805F990 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0x3E + adds r2, r1 + mov r12, r2 + ldrb r2, [r2] + movs r3, 0x4 + orrs r2, r3 + mov r3, r12 + strb r2, [r3] + strh r4, [r1, 0x2E] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805F98C: .4byte gUnknown_835B944 +_0805F990: .4byte gUnknown_202063C + thumb_func_end sub_805F950 + + thumb_func_start sub_805F994 +sub_805F994: @ 805F994 + push {r4,r5,lr} + sub sp, 0xC + mov r2, sp + ldr r1, _0805F9B8 @ =gUnknown_835B95C + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + movs r2, 0x30 + ldrsh r1, [r0, r2] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + bl _call_via_r1 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F9B8: .4byte gUnknown_835B95C + thumb_func_end sub_805F994 + + thumb_func_start sub_805F9BC +sub_805F9BC: @ 805F9BC + push {lr} + ldr r3, _0805F9F4 @ =gUnknown_202063C + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r1, [r1, 0x20] + strh r1, [r0, 0x20] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r1, [r1, 0x22] + strh r1, [r0, 0x22] + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r3] + movs r1, 0x1 + strh r1, [r0, 0x30] + bl sub_805F9F8 + pop {r0} + bx r0 + .align 2, 0 +_0805F9F4: .4byte gUnknown_202063C + thumb_func_end sub_805F9BC + + thumb_func_start sub_805F9F8 +sub_805F9F8: @ 805F9F8 + push {r4,r5,lr} + ldr r3, _0805FA2C @ =gUnknown_202063C + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r3, [r1, 0x22] + ldrh r2, [r0, 0x20] + ldrh r4, [r1, 0x20] + movs r5, 0x20 + ldrsh r1, [r1, r5] + subs r1, r2 + strh r1, [r0, 0x32] + ldrh r2, [r0, 0x22] + lsls r1, r3, 16 + asrs r1, 16 + subs r1, r2 + strh r1, [r0, 0x34] + strh r4, [r0, 0x20] + strh r3, [r0, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805FA2C: .4byte gUnknown_202063C + thumb_func_end sub_805F9F8 + + thumb_func_start sub_805FA30 +sub_805FA30: @ 805FA30 + push {r4,lr} + ldr r4, _0805FA5C @ =gUnknown_202063C + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x20] + movs r3, 0 + strh r1, [r0, 0x20] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x22] + strh r1, [r0, 0x22] + strh r3, [r0, 0x32] + strh r3, [r0, 0x34] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805FA5C: .4byte gUnknown_202063C + thumb_func_end sub_805FA30 + + thumb_func_start sub_805FA60 +sub_805FA60: @ 805FA60 + push {r4,r5,lr} + movs r3, 0 + ldr r4, _0805FA8C @ =gUnknown_202063C + adds r5, r4, 0 + adds r5, 0x1C +_0805FA6A: + lsls r0, r3, 4 + adds r0, r3 + lsls r1, r0, 2 + adds r2, r1, r4 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0805FA94 + adds r0, r1, r5 + ldr r1, [r0] + ldr r0, _0805FA90 @ =sub_805F994 + cmp r1, r0 + bne _0805FA94 + adds r0, r2, 0 + b _0805FAA0 + .align 2, 0 +_0805FA8C: .4byte gUnknown_202063C +_0805FA90: .4byte sub_805F994 +_0805FA94: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _0805FA6A + movs r0, 0 +_0805FAA0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805FA60 + + thumb_func_start sub_805FAA8 +sub_805FAA8: @ 805FAA8 + push {lr} + bl sub_805FA60 + adds r2, r0, 0 + cmp r2, 0 + beq _0805FAC0 + movs r0, 0 + strh r0, [r2, 0x30] + ldr r1, [r2, 0x1C] + adds r0, r2, 0 + bl _call_via_r1 +_0805FAC0: + pop {r0} + bx r0 + thumb_func_end sub_805FAA8 + + thumb_func_start sub_805FAC4 +sub_805FAC4: @ 805FAC4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_805FA60 + cmp r0, 0 + beq _0805FAD8 + strh r4, [r0, 0x2E] + bl sub_805FAA8 +_0805FAD8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805FAC4 + + thumb_func_start sub_805FAE0 +sub_805FAE0: @ 805FAE0 + push {lr} + bl sub_805FA60 + cmp r0, 0 + beq _0805FAF2 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r0, 24 + b _0805FAF4 +_0805FAF2: + movs r0, 0x40 +_0805FAF4: + pop {r1} + bx r1 + thumb_func_end sub_805FAE0 + + thumb_func_start sub_805FAF8 +sub_805FAF8: @ 805FAF8 + push {lr} + bl sub_805FA60 + movs r1, 0x2 + strh r1, [r0, 0x30] + pop {r0} + bx r0 + thumb_func_end sub_805FAF8 + + thumb_func_start sub_805FB08 +sub_805FB08: @ 805FB08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r12, r0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + movs r5, 0 + ldr r1, _0805FB50 @ =gUnknown_202063C +_0805FB22: + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0805FB54 + adds r0, r4, 0 + mov r1, r12 + movs r2, 0x44 + bl memcpy + mov r0, r8 + strh r0, [r4, 0x20] + strh r6, [r4, 0x22] + adds r0, r4, 0 + adds r0, 0x43 + strb r7, [r0] + b _0805FB5E + .align 2, 0 +_0805FB50: .4byte gUnknown_202063C +_0805FB54: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3F + bls _0805FB22 +_0805FB5E: + adds r0, r5, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805FB08 + + thumb_func_start sub_805FB6C +sub_805FB6C: @ 805FB6C + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r12, r0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + movs r5, 0x3F + ldr r3, _0805FBC0 @ =gUnknown_202063C + movs r2, 0x1 + negs r2, r2 +_0805FB8A: + lsls r0, r5, 16 + asrs r1, r0, 16 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r3 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0805FBC4 + adds r0, r4, 0 + mov r1, r12 + movs r2, 0x44 + bl memcpy + mov r0, r8 + strh r0, [r4, 0x20] + strh r6, [r4, 0x22] + adds r0, r4, 0 + adds r0, 0x43 + strb r7, [r0] + lsls r0, r5, 24 + lsrs r0, 24 + b _0805FBD2 + .align 2, 0 +_0805FBC0: .4byte gUnknown_202063C +_0805FBC4: + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + asrs r0, 16 + cmp r0, r2 + bgt _0805FB8A + movs r0, 0x40 +_0805FBD2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805FB6C + + thumb_func_start sub_805FBDC +sub_805FBDC: @ 805FBDC + push {r4,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r2, r1, 24 + adds r4, r2, 0 + ldrb r0, [r3, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r1, r3, 0 + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r3, 0x1] + lsls r0, 30 + cmp r0, 0 + blt _0805FC0C + movs r0, 0xF + adds r1, r2, 0 + ands r1, r0 + ldrb r2, [r3, 0x18] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x18] +_0805FC0C: + lsls r2, r4, 4 + ldrb r1, [r3, 0x18] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805FBDC + + thumb_func_start sub_805FC20 +sub_805FC20: @ 805FC20 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl sub_805FD5C + ldr r0, [r0, 0x10] + pop {r1} + bx r1 + thumb_func_end sub_805FC20 + + thumb_func_start sub_805FC38 +sub_805FC38: @ 805FC38 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805FC58 @ =gUnknown_2036E38 + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r0, [r2, 0x8] + ldrb r1, [r2, 0x9] + ldrb r2, [r2, 0xA] + bl sub_805FC20 + pop {r1} + bx r1 + .align 2, 0 +_0805FC58: .4byte gUnknown_2036E38 + thumb_func_end sub_805FC38 + + thumb_func_start sub_805FC5C +sub_805FC5C: @ 805FC5C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl sub_805FD5C + ldrh r0, [r0, 0x14] + pop {r1} + bx r1 + thumb_func_end sub_805FC5C + + thumb_func_start sub_805FC74 +sub_805FC74: @ 805FC74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805FC98 @ =gUnknown_2036E38 + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r0, [r2, 0x8] + ldrb r1, [r2, 0x9] + ldrb r2, [r2, 0xA] + bl sub_805FC5C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_0805FC98: .4byte gUnknown_2036E38 + thumb_func_end sub_805FC74 + + thumb_func_start sub_805FC9C +sub_805FC9C: @ 805FC9C + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805FCD0 + ldr r2, _0805FCCC @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x7] + b _0805FCD2 + .align 2, 0 +_0805FCCC: .4byte gUnknown_2036E38 +_0805FCD0: + movs r0, 0xFF +_0805FCD2: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_805FC9C + + thumb_func_start sub_805FCD8 +sub_805FCD8: @ 805FCD8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl sub_805FD5C + ldrh r0, [r0, 0xC] + pop {r1} + bx r1 + thumb_func_end sub_805FCD8 + + thumb_func_start sub_805FCF0 +sub_805FCF0: @ 805FCF0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805FD04 @ =gUnknown_2036E38 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x7] + bx lr + .align 2, 0 +_0805FD04: .4byte gUnknown_2036E38 + thumb_func_end sub_805FCF0 + + thumb_func_start sub_805FD08 +sub_805FD08: @ 805FD08 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805FD3C + ldr r2, _0805FD38 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1D] + b _0805FD3E + .align 2, 0 +_0805FD38: .4byte gUnknown_2036E38 +_0805FD3C: + movs r0, 0xFF +_0805FD3E: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_805FD08 + + thumb_func_start sub_805FD44 +sub_805FD44: @ 805FD44 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805FD58 @ =gUnknown_2036E38 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1D] + bx lr + .align 2, 0 +_0805FD58: .4byte gUnknown_2036E38 + thumb_func_end sub_805FD44 + + thumb_func_start sub_805FD5C +sub_805FD5C: @ 805FD5C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0805FD8C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x5 + ldrsb r0, [r1, r0] + cmp r0, r3 + bne _0805FD94 + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _0805FD94 + movs r0, 0x8E + lsls r0, 4 + adds r1, r0 + ldr r0, _0805FD90 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + b _0805FDA0 + .align 2, 0 +_0805FD8C: .4byte gUnknown_3005008 +_0805FD90: .4byte gUnknown_2036DFC +_0805FD94: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8055238 + ldr r0, [r0, 0x4] + ldr r1, [r0, 0x4] +_0805FDA0: + ldrb r2, [r0] + adds r0, r4, 0 + bl sub_805FDB0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805FD5C + + thumb_func_start sub_805FDB0 +sub_805FDB0: @ 805FDB0 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + cmp r1, r2 + bcs _0805FDDE +_0805FDC2: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, r4 + bne _0805FDD4 + adds r0, r3, 0 + b _0805FDE0 +_0805FDD4: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcc _0805FDC2 +_0805FDDE: + movs r0, 0 +_0805FDE0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805FDB0 + + thumb_func_start sub_805FDE8 +sub_805FDE8: @ 805FDE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + ldrb r0, [r4, 0x9] + ldr r1, _0805FE0C @ =gUnknown_3005008 + ldr r2, [r1] + movs r1, 0x5 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _0805FE50 + ldrb r1, [r4, 0xA] + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r1, r0 + beq _0805FE18 + b _0805FE50 + .align 2, 0 +_0805FE0C: .4byte gUnknown_3005008 +_0805FE10: + mov r1, r8 + adds r0, r5, r1 + adds r0, r3, r0 + b _0805FE52 +_0805FE18: + movs r6, 0 + adds r3, r2, 0 + movs r0, 0x8E + lsls r0, 4 + mov r8, r0 + ldrb r0, [r4, 0x8] + mov r12, r0 + mov r0, r8 + adds r2, r3, r0 + movs r5, 0 + adds r7, r1, 0 +_0805FE2E: + ldrb r1, [r2] + cmp r12, r1 + bne _0805FE46 + ldrb r1, [r4, 0x9] + movs r0, 0x5 + ldrsb r0, [r3, r0] + cmp r1, r0 + bne _0805FE46 + movs r0, 0x4 + ldrsb r0, [r3, r0] + cmp r7, r0 + beq _0805FE10 +_0805FE46: + adds r2, 0x18 + adds r5, 0x18 + adds r6, 0x1 + cmp r6, 0x3F + ble _0805FE2E +_0805FE50: + movs r0, 0 +_0805FE52: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805FDE8 + + thumb_func_start sub_805FE5C +sub_805FE5C: @ 805FE5C + push {r4,lr} + adds r4, r0, 0 + bl sub_805FDE8 + adds r1, r0, 0 + cmp r1, 0 + beq _0805FE76 + ldrh r0, [r4, 0x10] + subs r0, 0x7 + strh r0, [r1, 0x4] + ldrh r0, [r4, 0x12] + subs r0, 0x7 + strh r0, [r1, 0x6] +_0805FE76: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805FE5C + + thumb_func_start sub_805FE7C +sub_805FE7C: @ 805FE7C + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_805FDE8 + cmp r0, 0 + beq _0805FE8C + strb r4, [r0, 0x9] +_0805FE8C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805FE7C + + thumb_func_start sub_805FE94 +sub_805FE94: @ 805FE94 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0805FEC2 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805FEC8 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_805FE5C +_0805FEC2: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805FEC8: .4byte gUnknown_2036E38 + thumb_func_end sub_805FE94 + + thumb_func_start sub_805FECC +sub_805FECC: @ 805FECC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_805F49C + ldr r1, _0805FF04 @ =gUnknown_203709A + ldr r2, _0805FF08 @ =0x000011ff + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _0805FF0C @ =gUnknown_2037098 + strb r4, [r2] + cmp r4, 0x1 + bne _0805FF18 + ldr r1, _0805FF10 @ =gUnknown_83A5330 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0x6 + bl sub_805F574 + ldr r1, _0805FF14 @ =gUnknown_3003E58 + movs r0, 0x8 + strb r0, [r1] + b _0805FF2A + .align 2, 0 +_0805FF04: .4byte gUnknown_203709A +_0805FF08: .4byte 0x000011ff +_0805FF0C: .4byte gUnknown_2037098 +_0805FF10: .4byte gUnknown_83A5330 +_0805FF14: .4byte gUnknown_3003E58 +_0805FF18: + ldr r0, _0805FF30 @ =gUnknown_83A5330 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + movs r1, 0 + movs r2, 0xA + bl sub_805F574 +_0805FF2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805FF30: .4byte gUnknown_83A5330 + thumb_func_end sub_805FECC + + thumb_func_start sub_805FF34 +sub_805FF34: @ 805FF34 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x9 + bhi _0805FF70 + ldr r1, _0805FF50 @ =gUnknown_83A5330 + ldr r0, _0805FF54 @ =gUnknown_2037098 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r2, 1 + b _0805FF64 + .align 2, 0 +_0805FF50: .4byte gUnknown_83A5330 +_0805FF54: .4byte gUnknown_2037098 +_0805FF58: + adds r1, r4, 0x4 + adds r1, r2, r1 + ldr r0, _0805FF6C @ =gUnknown_2037098 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 +_0805FF64: + adds r0, r1 + ldrh r0, [r0] + b _0805FFA2 + .align 2, 0 +_0805FF6C: .4byte gUnknown_2037098 +_0805FF70: + movs r3, 0 + ldr r0, _0805FFA8 @ =gUnknown_83A5278 + ldrh r1, [r0] + ldr r2, _0805FFAC @ =0x000011ff + adds r4, r0, 0 + cmp r1, r2 + beq _0805FFA0 + adds r6, r4, 0 + ldr r0, _0805FFB0 @ =gUnknown_203709A + ldrh r1, [r0] + adds r5, r2, 0 +_0805FF86: + lsls r2, r3, 3 + adds r0, r2, r6 + ldrh r0, [r0] + cmp r0, r1 + beq _0805FF58 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r4 + ldrh r0, [r0] + cmp r0, r5 + bne _0805FF86 +_0805FFA0: + ldr r0, _0805FFAC @ =0x000011ff +_0805FFA2: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805FFA8: .4byte gUnknown_83A5278 +_0805FFAC: .4byte 0x000011ff +_0805FFB0: .4byte gUnknown_203709A + thumb_func_end sub_805FF34 + + thumb_func_start sub_805FFB4 +sub_805FFB4: @ 805FFB4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805FFD0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0805FFD4 @ =sub_805FFD8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0805FFD0: .4byte gUnknown_2036E38 +_0805FFD4: .4byte sub_805FFD8 + thumb_func_end sub_805FFB4 + + thumb_func_start sub_805FFD8 +sub_805FFD8: @ 805FFD8 + movs r0, 0 + bx lr + thumb_func_end sub_805FFD8 + + thumb_func_start sub_805FFDC +sub_805FFDC: @ 805FFDC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805FFF8 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0805FFFC @ =sub_8060000 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0805FFF8: .4byte gUnknown_2036E38 +_0805FFFC: .4byte sub_8060000 + thumb_func_end sub_805FFDC + + thumb_func_start sub_8060000 +sub_8060000: @ 8060000 + push {r4,lr} + ldr r3, _0806001C @ =gUnknown_83A6018 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806001C: .4byte gUnknown_83A6018 + thumb_func_end sub_8060000 + + thumb_func_start sub_8060020 +sub_8060020: @ 8060020 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806003C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060040 @ =sub_8060044 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806003C: .4byte gUnknown_2036E38 +_08060040: .4byte sub_8060044 + thumb_func_end sub_8060020 + + thumb_func_start sub_8060044 +sub_8060044: @ 8060044 + push {r4,lr} + ldr r3, _08060060 @ =gUnknown_83A6034 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060060: .4byte gUnknown_83A6034 + thumb_func_end sub_8060044 + + thumb_func_start sub_8060064 +sub_8060064: @ 8060064 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060064 + + thumb_func_start sub_8060078 +sub_8060078: @ 8060078 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060078 + + thumb_func_start sub_80600A4 +sub_80600A4: @ 80600A4 + push {r4-r6,lr} + adds r6, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080600D8 + ldr r5, _080600D4 @ =gUnknown_83A6000 + bl sub_8044EC8 + movs r4, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r6, 0 + bl sub_8068E58 + strh r4, [r6, 0x30] + movs r0, 0x1 + b _080600DA + .align 2, 0 +_080600D4: .4byte gUnknown_83A6000 +_080600D8: + movs r0, 0 +_080600DA: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80600A4 + + thumb_func_start sub_80600E0 +sub_80600E0: @ 80600E0 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _080600F4 + movs r0, 0 + b _080600FA +_080600F4: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_080600FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80600E0 + + thumb_func_start sub_8060100 +sub_8060100: @ 8060100 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _08060148 @ =gUnknown_83A6050 + mov r0, sp + movs r2, 0x4 + bl memcpy + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805FBDC + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806366C + lsls r0, 24 + cmp r0, 0 + beq _0806013E + movs r0, 0x1 + strh r0, [r6, 0x30] +_0806013E: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08060148: .4byte gUnknown_83A6050 + thumb_func_end sub_8060100 + + thumb_func_start sub_806014C +sub_806014C: @ 806014C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806014C + + thumb_func_start sub_806017C +sub_806017C: @ 806017C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F2C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806017C + + thumb_func_start sub_80601AC +sub_80601AC: @ 80601AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080601CA + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_080601CA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80601AC + + thumb_func_start sub_80601D4 +sub_80601D4: @ 80601D4 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r0, 0x80 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08060240 + ldrb r0, [r5, 0x7] + cmp r0, 0x1 + beq _080601F0 + cmp r0, 0x3 + bne _08060240 +_080601F0: + mov r7, sp + adds r7, 0x2 + mov r0, sp + adds r1, r7, 0 + bl sub_805C538 + ldrh r2, [r5, 0x10] + ldrh r4, [r5, 0x12] + ldrb r1, [r5, 0x1D] + subs r3, r2, r1 + subs r0, r4, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r2, r1, r2 + lsls r2, 16 + lsrs r2, 16 + adds r1, r4 + lsls r1, 16 + lsrs r6, r1, 16 + mov r0, sp + lsls r3, 16 + asrs r3, 16 + movs r1, 0 + ldrsh r4, [r0, r1] + cmp r3, r4 + bgt _08060240 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, r4 + blt _08060240 + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0 + ldrsh r1, [r7, r2] + cmp r0, r1 + bgt _08060240 + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, r1 + bge _08060244 +_08060240: + movs r0, 0 + b _08060246 +_08060244: + movs r0, 0x1 +_08060246: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80601D4 + + thumb_func_start sub_8060250 +sub_8060250: @ 8060250 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r0, r1, 16 + lsls r2, 16 + lsls r3, 16 + cmp r2, r3 + ble _0806026E + movs r2, 0x4 + lsls r0, r4, 16 + cmp r0, 0 + bge _08060278 + movs r2, 0x3 + b _08060278 +_0806026E: + movs r2, 0x1 + lsls r0, 16 + cmp r0, 0 + bge _08060278 + movs r2, 0x2 +_08060278: + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060250 + + thumb_func_start sub_8060280 +sub_8060280: @ 8060280 + push {lr} + movs r0, 0x1 + lsls r1, 16 + cmp r1, 0 + bge _0806028C + movs r0, 0x2 +_0806028C: + pop {r1} + bx r1 + thumb_func_end sub_8060280 + + thumb_func_start sub_8060290 +sub_8060290: @ 8060290 + push {lr} + movs r1, 0x4 + lsls r0, 16 + cmp r0, 0 + bge _0806029C + movs r1, 0x3 +_0806029C: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8060290 + + thumb_func_start sub_80602A4 +sub_80602A4: @ 80602A4 + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080602E0 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080602FA + b _080602F8 +_080602E0: + cmp r0, 0x4 + bne _080602FA + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080602FA +_080602F8: + movs r0, 0x2 +_080602FA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80602A4 + + thumb_func_start sub_8060300 +sub_8060300: @ 8060300 + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806033C + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _08060356 + b _08060354 +_0806033C: + cmp r0, 0x3 + bne _08060356 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08060356 +_08060354: + movs r0, 0x2 +_08060356: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8060300 + + thumb_func_start sub_806035C +sub_806035C: @ 806035C + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08060398 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080603B2 + b _080603B0 +_08060398: + cmp r0, 0x4 + bne _080603B2 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080603B2 +_080603B0: + movs r0, 0x1 +_080603B2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806035C + + thumb_func_start sub_80603B8 +sub_80603B8: @ 80603B8 + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080603F4 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060290 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0806040E + b _0806040C +_080603F4: + cmp r0, 0x3 + bne _0806040E + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8060280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0806040E +_0806040C: + movs r0, 0x1 +_0806040E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80603B8 + + thumb_func_start sub_8060414 +sub_8060414: @ 8060414 + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0806044A + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060280 + lsls r0, 24 + lsrs r0, 24 +_0806044A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8060414 + + thumb_func_start sub_8060450 +sub_8060450: @ 8060450 + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _08060486 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060280 + lsls r0, 24 + lsrs r0, 24 +_08060486: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8060450 + + thumb_func_start sub_806048C +sub_806048C: @ 806048C + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080604C2 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060290 + lsls r0, 24 + lsrs r0, 24 +_080604C2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806048C + + thumb_func_start sub_80604C8 +sub_80604C8: @ 80604C8 + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060250 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080604FE + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8060290 + lsls r0, 24 + lsrs r0, 24 +_080604FE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80604C8 + + thumb_func_start sub_8060504 +sub_8060504: @ 8060504 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + bne _0806051C + movs r0, 0 + b _08060580 +_0806051C: + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl sub_805C538 + mov r2, sp + mov r0, sp + ldrh r0, [r0] + ldrh r1, [r4, 0x10] + subs r0, r1 + strh r0, [r2] + ldrh r0, [r5] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r5] + mov r0, sp + ldrh r3, [r5] + ldrh r2, [r0] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _08060550 + negs r0, r0 + lsls r0, 16 + lsrs r2, r0, 16 +_08060550: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0 + bge _0806055E + negs r0, r0 + lsls r0, 16 + lsrs r3, r0, 16 +_0806055E: + ldr r0, _08060588 @ =gUnknown_83A6054 + lsls r4, r6, 2 + adds r4, r0 + mov r0, sp + movs r6, 0 + ldrsh r0, [r0, r6] + movs r6, 0 + ldrsh r1, [r5, r6] + lsls r2, 16 + asrs r2, 16 + lsls r3, 16 + asrs r3, 16 + ldr r4, [r4] + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_08060580: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08060588: .4byte gUnknown_83A6054 + thumb_func_end sub_8060504 + + thumb_func_start sub_806058C +sub_806058C: @ 806058C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080605A8 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080605AC @ =sub_80605B0 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080605A8: .4byte gUnknown_2036E38 +_080605AC: .4byte sub_80605B0 + thumb_func_end sub_806058C + + thumb_func_start sub_80605B0 +sub_80605B0: @ 80605B0 + push {r4,lr} + ldr r3, _080605CC @ =gUnknown_83A6080 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080605CC: .4byte gUnknown_83A6080 + thumb_func_end sub_80605B0 + + thumb_func_start sub_80605D0 +sub_80605D0: @ 80605D0 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80605D0 + + thumb_func_start sub_80605E4 +sub_80605E4: @ 80605E4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80605E4 + + thumb_func_start sub_8060610 +sub_8060610: @ 8060610 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060646 + ldr r4, _08060650 @ =gUnknown_83A6000 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060646: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060650: .4byte gUnknown_83A6000 + thumb_func_end sub_8060610 + + thumb_func_start sub_8060654 +sub_8060654: @ 8060654 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _08060672 + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _0806067A +_08060672: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _0806067C +_0806067A: + movs r0, 0 +_0806067C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060654 + + thumb_func_start sub_8060684 +sub_8060684: @ 8060684 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080606C8 @ =gUnknown_83A6050 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080606B4 + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080606B4: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080606C8: .4byte gUnknown_83A6050 + thumb_func_end sub_8060684 + + thumb_func_start sub_80606CC +sub_80606CC: @ 80606CC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080606E8 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080606EC @ =sub_80606F0 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080606E8: .4byte gUnknown_2036E38 +_080606EC: .4byte sub_80606F0 + thumb_func_end sub_80606CC + + thumb_func_start sub_80606F0 +sub_80606F0: @ 80606F0 + push {r4,lr} + ldr r3, _0806070C @ =gUnknown_83A6094 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806070C: .4byte gUnknown_83A6094 + thumb_func_end sub_80606F0 + + thumb_func_start sub_8060710 +sub_8060710: @ 8060710 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060710 + + thumb_func_start sub_8060724 +sub_8060724: @ 8060724 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060724 + + thumb_func_start sub_8060750 +sub_8060750: @ 8060750 + push {r4-r6,lr} + adds r6, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060784 + ldr r5, _08060780 @ =gUnknown_83A6000 + bl sub_8044EC8 + movs r4, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r6, 0 + bl sub_8068E58 + strh r4, [r6, 0x30] + movs r0, 0x1 + b _08060786 + .align 2, 0 +_08060780: .4byte gUnknown_83A6000 +_08060784: + movs r0, 0 +_08060786: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8060750 + + thumb_func_start sub_806078C +sub_806078C: @ 806078C + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _080607A0 + movs r0, 0 + b _080607A6 +_080607A0: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_080607A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806078C + + thumb_func_start sub_80607AC +sub_80607AC: @ 80607AC + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _080607F4 @ =gUnknown_83A60B0 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl sub_8044EC8 + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805FBDC + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806366C + lsls r0, 24 + cmp r0, 0 + beq _080607EA + strh r7, [r6, 0x30] +_080607EA: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080607F4: .4byte gUnknown_83A60B0 + thumb_func_end sub_80607AC + + thumb_func_start sub_80607F8 +sub_80607F8: @ 80607F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80607F8 + + thumb_func_start sub_8060828 +sub_8060828: @ 8060828 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060846 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08060846: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060828 + + thumb_func_start sub_8060850 +sub_8060850: @ 8060850 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806086C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060870 @ =sub_8060874 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806086C: .4byte gUnknown_2036E38 +_08060870: .4byte sub_8060874 + thumb_func_end sub_8060850 + + thumb_func_start sub_8060874 +sub_8060874: @ 8060874 + push {r4,lr} + ldr r3, _08060890 @ =gUnknown_83A60B4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060890: .4byte gUnknown_83A60B4 + thumb_func_end sub_8060874 + + thumb_func_start sub_8060894 +sub_8060894: @ 8060894 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060894 + + thumb_func_start sub_80608A8 +sub_80608A8: @ 80608A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80608A8 + + thumb_func_start sub_80608D4 +sub_80608D4: @ 80608D4 + push {r4-r6,lr} + adds r6, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060908 + ldr r5, _08060904 @ =gUnknown_83A6000 + bl sub_8044EC8 + movs r4, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r6, 0 + bl sub_8068E58 + strh r4, [r6, 0x30] + movs r0, 0x1 + b _0806090A + .align 2, 0 +_08060904: .4byte gUnknown_83A6000 +_08060908: + movs r0, 0 +_0806090A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80608D4 + + thumb_func_start sub_8060910 +sub_8060910: @ 8060910 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _08060924 + movs r0, 0 + b _0806092A +_08060924: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0806092A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060910 + + thumb_func_start sub_8060930 +sub_8060930: @ 8060930 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _08060978 @ =gUnknown_83A60D0 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl sub_8044EC8 + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805FBDC + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806366C + lsls r0, 24 + cmp r0, 0 + beq _0806096E + strh r7, [r6, 0x30] +_0806096E: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060978: .4byte gUnknown_83A60D0 + thumb_func_end sub_8060930 + + thumb_func_start sub_806097C +sub_806097C: @ 806097C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806097C + + thumb_func_start sub_80609AC +sub_80609AC: @ 80609AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080609CA + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_080609CA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80609AC + + thumb_func_start sub_80609D4 +sub_80609D4: @ 80609D4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080609F0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080609F4 @ =sub_80609F8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080609F0: .4byte gUnknown_2036E38 +_080609F4: .4byte sub_80609F8 + thumb_func_end sub_80609D4 + + thumb_func_start sub_80609F8 +sub_80609F8: @ 80609F8 + push {r4,lr} + ldr r3, _08060A14 @ =gUnknown_83A60D4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060A14: .4byte gUnknown_83A60D4 + thumb_func_end sub_80609F8 + + thumb_func_start sub_8060A18 +sub_8060A18: @ 8060A18 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060A18 + + thumb_func_start sub_8060A44 +sub_8060A44: @ 8060A44 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + bne _08060A56 + movs r0, 0 + b _08060A5C +_08060A56: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_08060A5C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060A44 + + thumb_func_start sub_8060A64 +sub_8060A64: @ 8060A64 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_8060A64 + + thumb_func_start sub_8060A74 +sub_8060A74: @ 8060A74 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060A90 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060A94 @ =sub_8060A98 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08060A90: .4byte gUnknown_2036E38 +_08060A94: .4byte sub_8060A98 + thumb_func_end sub_8060A74 + + thumb_func_start sub_8060A98 +sub_8060A98: @ 8060A98 + push {r4,lr} + ldr r3, _08060AB4 @ =gUnknown_83A60E0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060AB4: .4byte gUnknown_83A60E0 + thumb_func_end sub_8060A98 + + thumb_func_start sub_8060AB8 +sub_8060AB8: @ 8060AB8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060AB8 + + thumb_func_start sub_8060ACC +sub_8060ACC: @ 8060ACC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060ACC + + thumb_func_start sub_8060AF8 +sub_8060AF8: @ 8060AF8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060B2E + ldr r4, _08060B38 @ =gUnknown_83A6000 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060B2E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060B38: .4byte gUnknown_83A6000 + thumb_func_end sub_8060AF8 + + thumb_func_start sub_8060B3C +sub_8060B3C: @ 8060B3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _08060B5A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08060B62 +_08060B5A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060B64 +_08060B62: + movs r0, 0 +_08060B64: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060B3C + + thumb_func_start sub_8060B6C +sub_8060B6C: @ 8060B6C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060BB0 @ =gUnknown_83A60B0 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060B9C + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060B9C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060BB0: .4byte gUnknown_83A60B0 + thumb_func_end sub_8060B6C + + thumb_func_start sub_8060BB4 +sub_8060BB4: @ 8060BB4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060BD0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060BD4 @ =sub_8060BD8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08060BD0: .4byte gUnknown_2036E38 +_08060BD4: .4byte sub_8060BD8 + thumb_func_end sub_8060BB4 + + thumb_func_start sub_8060BD8 +sub_8060BD8: @ 8060BD8 + push {r4,lr} + ldr r3, _08060BF4 @ =gUnknown_83A60F4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060BF4: .4byte gUnknown_83A60F4 + thumb_func_end sub_8060BD8 + + thumb_func_start sub_8060BF8 +sub_8060BF8: @ 8060BF8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060BF8 + + thumb_func_start sub_8060C0C +sub_8060C0C: @ 8060C0C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060C0C + + thumb_func_start sub_8060C38 +sub_8060C38: @ 8060C38 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060C6E + ldr r4, _08060C78 @ =gUnknown_83A6000 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060C6E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060C78: .4byte gUnknown_83A6000 + thumb_func_end sub_8060C38 + + thumb_func_start sub_8060C7C +sub_8060C7C: @ 8060C7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _08060C9A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08060CA2 +_08060C9A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060CA4 +_08060CA2: + movs r0, 0 +_08060CA4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060C7C + + thumb_func_start sub_8060CAC +sub_8060CAC: @ 8060CAC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060CF0 @ =gUnknown_83A60D0 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060CDC + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060CDC: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060CF0: .4byte gUnknown_83A60D0 + thumb_func_end sub_8060CAC + + thumb_func_start sub_8060CF4 +sub_8060CF4: @ 8060CF4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060D10 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060D14 @ =sub_8060D18 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08060D10: .4byte gUnknown_2036E38 +_08060D14: .4byte sub_8060D18 + thumb_func_end sub_8060CF4 + + thumb_func_start sub_8060D18 +sub_8060D18: @ 8060D18 + push {r4,lr} + ldr r3, _08060D34 @ =gUnknown_83A6108 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060D34: .4byte gUnknown_83A6108 + thumb_func_end sub_8060D18 + + thumb_func_start sub_8060D38 +sub_8060D38: @ 8060D38 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060D38 + + thumb_func_start sub_8060D4C +sub_8060D4C: @ 8060D4C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060D4C + + thumb_func_start sub_8060D78 +sub_8060D78: @ 8060D78 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060DAE + ldr r4, _08060DB8 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060DAE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060DB8: .4byte gUnknown_83A6010 + thumb_func_end sub_8060D78 + + thumb_func_start sub_8060DBC +sub_8060DBC: @ 8060DBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _08060DDA + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08060DE2 +_08060DDA: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060DE4 +_08060DE2: + movs r0, 0 +_08060DE4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060DBC + + thumb_func_start sub_8060DEC +sub_8060DEC: @ 8060DEC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060E30 @ =gUnknown_83A611C + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060E1C + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060E1C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060E30: .4byte gUnknown_83A611C + thumb_func_end sub_8060DEC + + thumb_func_start sub_8060E34 +sub_8060E34: @ 8060E34 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060E50 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060E54 @ =sub_8060E58 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08060E50: .4byte gUnknown_2036E38 +_08060E54: .4byte sub_8060E58 + thumb_func_end sub_8060E34 + + thumb_func_start sub_8060E58 +sub_8060E58: @ 8060E58 + push {r4,lr} + ldr r3, _08060E74 @ =gUnknown_83A6120 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060E74: .4byte gUnknown_83A6120 + thumb_func_end sub_8060E58 + + thumb_func_start sub_8060E78 +sub_8060E78: @ 8060E78 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060E78 + + thumb_func_start sub_8060E8C +sub_8060E8C: @ 8060E8C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060E8C + + thumb_func_start sub_8060EB8 +sub_8060EB8: @ 8060EB8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060EEE + ldr r4, _08060EF8 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060EEE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060EF8: .4byte gUnknown_83A6010 + thumb_func_end sub_8060EB8 + + thumb_func_start sub_8060EFC +sub_8060EFC: @ 8060EFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _08060F1A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08060F22 +_08060F1A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060F24 +_08060F22: + movs r0, 0 +_08060F24: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060EFC + + thumb_func_start sub_8060F2C +sub_8060F2C: @ 8060F2C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060F70 @ =gUnknown_83A6134 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060F5C + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060F5C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060F70: .4byte gUnknown_83A6134 + thumb_func_end sub_8060F2C + + thumb_func_start sub_8060F74 +sub_8060F74: @ 8060F74 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060F90 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08060F94 @ =sub_8060F98 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08060F90: .4byte gUnknown_2036E38 +_08060F94: .4byte sub_8060F98 + thumb_func_end sub_8060F74 + + thumb_func_start sub_8060F98 +sub_8060F98: @ 8060F98 + push {r4,lr} + ldr r3, _08060FB4 @ =gUnknown_83A6138 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060FB4: .4byte gUnknown_83A6138 + thumb_func_end sub_8060F98 + + thumb_func_start sub_8060FB8 +sub_8060FB8: @ 8060FB8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060FB8 + + thumb_func_start sub_8060FCC +sub_8060FCC: @ 8060FCC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060FCC + + thumb_func_start sub_8060FF8 +sub_8060FF8: @ 8060FF8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806102E + ldr r4, _08061038 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806102E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061038: .4byte gUnknown_83A6010 + thumb_func_end sub_8060FF8 + + thumb_func_start sub_806103C +sub_806103C: @ 806103C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _0806105A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08061062 +_0806105A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08061064 +_08061062: + movs r0, 0 +_08061064: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806103C + + thumb_func_start sub_806106C +sub_806106C: @ 806106C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080610B0 @ =gUnknown_83A614C + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x5 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806109C + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806109C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080610B0: .4byte gUnknown_83A614C + thumb_func_end sub_806106C + + thumb_func_start sub_80610B4 +sub_80610B4: @ 80610B4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080610D0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080610D4 @ =sub_80610D8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080610D0: .4byte gUnknown_2036E38 +_080610D4: .4byte sub_80610D8 + thumb_func_end sub_80610B4 + + thumb_func_start sub_80610D8 +sub_80610D8: @ 80610D8 + push {r4,lr} + ldr r3, _080610F4 @ =gUnknown_83A6150 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080610F4: .4byte gUnknown_83A6150 + thumb_func_end sub_80610D8 + + thumb_func_start sub_80610F8 +sub_80610F8: @ 80610F8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80610F8 + + thumb_func_start sub_806110C +sub_806110C: @ 806110C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806110C + + thumb_func_start sub_8061138 +sub_8061138: @ 8061138 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806116E + ldr r4, _08061178 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806116E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061178: .4byte gUnknown_83A6010 + thumb_func_end sub_8061138 + + thumb_func_start sub_806117C +sub_806117C: @ 806117C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _0806119A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _080611A2 +_0806119A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080611A4 +_080611A2: + movs r0, 0 +_080611A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806117C + + thumb_func_start sub_80611AC +sub_80611AC: @ 80611AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080611F0 @ =gUnknown_83A6164 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x6 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080611DC + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080611DC: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080611F0: .4byte gUnknown_83A6164 + thumb_func_end sub_80611AC + + thumb_func_start sub_80611F4 +sub_80611F4: @ 80611F4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061210 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061214 @ =sub_8061218 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061210: .4byte gUnknown_2036E38 +_08061214: .4byte sub_8061218 + thumb_func_end sub_80611F4 + + thumb_func_start sub_8061218 +sub_8061218: @ 8061218 + push {r4,lr} + ldr r3, _08061234 @ =gUnknown_83A6168 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061234: .4byte gUnknown_83A6168 + thumb_func_end sub_8061218 + + thumb_func_start sub_8061238 +sub_8061238: @ 8061238 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061238 + + thumb_func_start sub_806124C +sub_806124C: @ 806124C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806124C + + thumb_func_start sub_8061278 +sub_8061278: @ 8061278 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080612AE + ldr r4, _080612B8 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_080612AE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080612B8: .4byte gUnknown_83A6010 + thumb_func_end sub_8061278 + + thumb_func_start sub_80612BC +sub_80612BC: @ 80612BC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _080612DA + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _080612E2 +_080612DA: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080612E4 +_080612E2: + movs r0, 0 +_080612E4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80612BC + + thumb_func_start sub_80612EC +sub_80612EC: @ 80612EC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061330 @ =gUnknown_83A617C + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x7 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806131C + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806131C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061330: .4byte gUnknown_83A617C + thumb_func_end sub_80612EC + + thumb_func_start sub_8061334 +sub_8061334: @ 8061334 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061350 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061354 @ =sub_8061358 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061350: .4byte gUnknown_2036E38 +_08061354: .4byte sub_8061358 + thumb_func_end sub_8061334 + + thumb_func_start sub_8061358 +sub_8061358: @ 8061358 + push {r4,lr} + ldr r3, _08061374 @ =gUnknown_83A6180 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061374: .4byte gUnknown_83A6180 + thumb_func_end sub_8061358 + + thumb_func_start sub_8061378 +sub_8061378: @ 8061378 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061378 + + thumb_func_start sub_806138C +sub_806138C: @ 806138C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806138C + + thumb_func_start sub_80613B8 +sub_80613B8: @ 80613B8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080613EE + ldr r4, _080613F8 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_080613EE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080613F8: .4byte gUnknown_83A6010 + thumb_func_end sub_80613B8 + + thumb_func_start sub_80613FC +sub_80613FC: @ 80613FC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _0806141A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08061422 +_0806141A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08061424 +_08061422: + movs r0, 0 +_08061424: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80613FC + + thumb_func_start sub_806142C +sub_806142C: @ 806142C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061470 @ =gUnknown_83A6194 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806145C + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806145C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061470: .4byte gUnknown_83A6194 + thumb_func_end sub_806142C + + thumb_func_start sub_8061474 +sub_8061474: @ 8061474 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061490 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061494 @ =sub_8061498 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061490: .4byte gUnknown_2036E38 +_08061494: .4byte sub_8061498 + thumb_func_end sub_8061474 + + thumb_func_start sub_8061498 +sub_8061498: @ 8061498 + push {r4,lr} + ldr r3, _080614B4 @ =gUnknown_83A6198 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080614B4: .4byte gUnknown_83A6198 + thumb_func_end sub_8061498 + + thumb_func_start sub_80614B8 +sub_80614B8: @ 80614B8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80614B8 + + thumb_func_start sub_80614CC +sub_80614CC: @ 80614CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80614CC + + thumb_func_start sub_80614F8 +sub_80614F8: @ 80614F8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806152E + ldr r4, _08061538 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806152E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061538: .4byte gUnknown_83A6010 + thumb_func_end sub_80614F8 + + thumb_func_start sub_806153C +sub_806153C: @ 806153C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _0806155A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _08061562 +_0806155A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08061564 +_08061562: + movs r0, 0 +_08061564: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806153C + + thumb_func_start sub_806156C +sub_806156C: @ 806156C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080615B0 @ =gUnknown_83A61AC + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x9 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806159C + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806159C: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080615B0: .4byte gUnknown_83A61AC + thumb_func_end sub_806156C + + thumb_func_start sub_80615B4 +sub_80615B4: @ 80615B4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080615D0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080615D4 @ =sub_80615D8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080615D0: .4byte gUnknown_2036E38 +_080615D4: .4byte sub_80615D8 + thumb_func_end sub_80615B4 + + thumb_func_start sub_80615D8 +sub_80615D8: @ 80615D8 + push {r4,lr} + ldr r3, _080615F4 @ =gUnknown_83A61B0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080615F4: .4byte gUnknown_83A61B0 + thumb_func_end sub_80615D8 + + thumb_func_start sub_80615F8 +sub_80615F8: @ 80615F8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80615F8 + + thumb_func_start sub_806160C +sub_806160C: @ 806160C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806160C + + thumb_func_start sub_8061638 +sub_8061638: @ 8061638 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806166E + ldr r4, _08061678 @ =gUnknown_83A6010 + bl sub_8044EC8 + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl sub_8068E58 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806166E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061678: .4byte gUnknown_83A6010 + thumb_func_end sub_8061638 + + thumb_func_start sub_806167C +sub_806167C: @ 806167C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _0806169A + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _080616A2 +_0806169A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080616A4 +_080616A2: + movs r0, 0 +_080616A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806167C + + thumb_func_start sub_80616AC +sub_80616AC: @ 80616AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080616F0 @ =gUnknown_83A61C4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0xA + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080616DC + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080616DC: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080616F0: .4byte gUnknown_83A61C4 + thumb_func_end sub_80616AC + + thumb_func_start sub_80616F4 +sub_80616F4: @ 80616F4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061710 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061714 @ =sub_8061718 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061710: .4byte gUnknown_2036E38 +_08061714: .4byte sub_8061718 + thumb_func_end sub_80616F4 + + thumb_func_start sub_8061718 +sub_8061718: @ 8061718 + push {r4,lr} + ldr r3, _08061734 @ =gUnknown_83A61C8 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061734: .4byte gUnknown_83A61C8 + thumb_func_end sub_8061718 + + thumb_func_start sub_8061738 +sub_8061738: @ 8061738 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061738 + + thumb_func_start sub_8061764 +sub_8061764: @ 8061764 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806177E + adds r0, r4, 0 + movs r1, 0x30 + bl sub_8068E58 + movs r0, 0x2 + strh r0, [r4, 0x30] +_0806177E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061764 + + thumb_func_start sub_8061788 +sub_8061788: @ 8061788 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _080617A6 + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _080617AA +_080617A6: + movs r0, 0x3 + strh r0, [r5, 0x30] +_080617AA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061788 + + thumb_func_start sub_80617B4 +sub_80617B4: @ 80617B4 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080617F4 @ =gUnknown_83A61D8 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080617E0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] +_080617E0: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080617F4: .4byte gUnknown_83A61D8 + thumb_func_end sub_80617B4 + + thumb_func_start sub_80617F8 +sub_80617F8: @ 80617F8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061814 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061818 @ =sub_806181C + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061814: .4byte gUnknown_2036E38 +_08061818: .4byte sub_806181C + thumb_func_end sub_80617F8 + + thumb_func_start sub_806181C +sub_806181C: @ 806181C + push {r4,lr} + ldr r3, _08061838 @ =gUnknown_83A61E0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061838: .4byte gUnknown_83A61E0 + thumb_func_end sub_806181C + + thumb_func_start sub_806183C +sub_806183C: @ 806183C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806183C + + thumb_func_start sub_8061868 +sub_8061868: @ 8061868 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08061882 + adds r0, r4, 0 + movs r1, 0x30 + bl sub_8068E58 + movs r0, 0x2 + strh r0, [r4, 0x30] +_08061882: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061868 + + thumb_func_start sub_806188C +sub_806188C: @ 806188C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + bne _080618AA + adds r0, r4, 0 + bl sub_80601D4 + lsls r0, 24 + cmp r0, 0 + beq _080618AE +_080618AA: + movs r0, 0x3 + strh r0, [r5, 0x30] +_080618AE: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806188C + + thumb_func_start sub_80618B8 +sub_80618B8: @ 80618B8 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080618F8 @ =gUnknown_83A61F0 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl sub_8060504 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080618E4 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] +_080618E4: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080618F8: .4byte gUnknown_83A61F0 + thumb_func_end sub_80618B8 + + thumb_func_start sub_80618FC +sub_80618FC: @ 80618FC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061918 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0806191C @ =sub_8061920 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061918: .4byte gUnknown_2036E38 +_0806191C: .4byte sub_8061920 + thumb_func_end sub_80618FC + + thumb_func_start sub_8061920 +sub_8061920: @ 8061920 + push {r4,lr} + ldr r3, _0806193C @ =gUnknown_83A61F8 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806193C: .4byte gUnknown_83A61F8 + thumb_func_end sub_8061920 + + thumb_func_start sub_8061940 +sub_8061940: @ 8061940 + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061940 + + thumb_func_start sub_8061954 +sub_8061954: @ 8061954 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _08061988 @ =gUnknown_839FD5D + ldrb r1, [r4, 0x6] + adds r1, r0 + ldrb r1, [r1] + adds r0, r4, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0 + beq _08061976 + adds r0, r1, 0 + bl sub_8064480 + lsls r0, 24 + lsrs r1, r0, 24 +_08061976: + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061988: .4byte gUnknown_839FD5D + thumb_func_end sub_8061954 + + thumb_func_start sub_806198C +sub_806198C: @ 806198C + push {r4-r7,lr} + adds r4, r0, 0 + adds r7, r1, 0 + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0 + beq _080619BC + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bne _080619BC + movs r0, 0 + strb r0, [r2] + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8064480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805FBDC +_080619BC: + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_806366C + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r5, 0x1 + bne _08061A12 + adds r1, r4, 0 + adds r1, 0x21 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8064480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805FBDC + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_806366C + lsls r0, 24 + lsrs r5, r0, 24 +_08061A12: + cmp r5, 0 + beq _08061A24 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8064244 + lsls r0, 24 + lsrs r6, r0, 24 +_08061A24: + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x3 + strh r0, [r7, 0x30] + movs r0, 0x1 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806198C + + thumb_func_start sub_8061A44 +sub_8061A44: @ 8061A44 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08061A62 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08061A62: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061A44 + + thumb_func_start sub_8061A6C +sub_8061A6C: @ 8061A6C + push {r4,lr} + adds r4, r1, 0 + bl sub_8063410 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061A6C + + thumb_func_start sub_8061A80 +sub_8061A80: @ 8061A80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + mov r8, r1 + adds r7, r2, 0 + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x3 + bne _08061AA2 + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bne _08061AA2 + movs r0, 0 + strb r0, [r2] +_08061AA2: + adds r5, r4, 0 + adds r5, 0x21 + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_805FBDC + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_806366C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08061AFC + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_805FBDC + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_806366C + lsls r0, 24 + lsrs r0, 24 +_08061AFC: + cmp r0, 0 + beq _08061B0E + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8064244 + lsls r0, 24 + lsrs r6, r0, 24 +_08061B0E: + adds r0, r4, 0 + mov r1, r8 + adds r2, r6, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + mov r1, r8 + strh r0, [r1, 0x30] + movs r0, 0x1 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8061A80 + + thumb_func_start sub_8061B34 +sub_8061B34: @ 8061B34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08061B52 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08061B52: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061B34 + + thumb_func_start sub_8061B5C +sub_8061B5C: @ 8061B5C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061B78 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061B7C @ =sub_8061B80 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061B78: .4byte gUnknown_2036E38 +_08061B7C: .4byte sub_8061B80 + thumb_func_end sub_8061B5C + + thumb_func_start sub_8061B80 +sub_8061B80: @ 8061B80 + push {r4,lr} + ldr r3, _08061B9C @ =gUnknown_83A6208 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061B9C: .4byte gUnknown_83A6208 + thumb_func_end sub_8061B80 + + thumb_func_start sub_8061BA0 +sub_8061BA0: @ 8061BA0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061BE4 @ =gUnknown_83A6214 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061BCC + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061BCC + movs r0, 0x3 + strb r0, [r2] +_08061BCC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061BE4: .4byte gUnknown_83A6214 + thumb_func_end sub_8061BA0 + + thumb_func_start sub_8061BE8 +sub_8061BE8: @ 8061BE8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061C04 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061C08 @ =sub_8061C0C + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061C04: .4byte gUnknown_2036E38 +_08061C08: .4byte sub_8061C0C + thumb_func_end sub_8061BE8 + + thumb_func_start sub_8061C0C +sub_8061C0C: @ 8061C0C + push {r4,lr} + ldr r3, _08061C28 @ =gUnknown_83A6218 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061C28: .4byte gUnknown_83A6218 + thumb_func_end sub_8061C0C + + thumb_func_start sub_8061C2C +sub_8061C2C: @ 8061C2C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061C70 @ =gUnknown_83A6224 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061C58 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061C58 + movs r0, 0x2 + strb r0, [r2] +_08061C58: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061C70: .4byte gUnknown_83A6224 + thumb_func_end sub_8061C2C + + thumb_func_start sub_8061C74 +sub_8061C74: @ 8061C74 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061C90 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061C94 @ =sub_8061C98 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061C90: .4byte gUnknown_2036E38 +_08061C94: .4byte sub_8061C98 + thumb_func_end sub_8061C74 + + thumb_func_start sub_8061C98 +sub_8061C98: @ 8061C98 + push {r4,lr} + ldr r3, _08061CB4 @ =gUnknown_83A6228 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061CB4: .4byte gUnknown_83A6228 + thumb_func_end sub_8061C98 + + thumb_func_start sub_8061CB8 +sub_8061CB8: @ 8061CB8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061CFC @ =gUnknown_83A6234 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061CE4 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061CE4 + movs r0, 0x2 + strb r0, [r2] +_08061CE4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061CFC: .4byte gUnknown_83A6234 + thumb_func_end sub_8061CB8 + + thumb_func_start sub_8061D00 +sub_8061D00: @ 8061D00 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061D1C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061D20 @ =sub_8061D24 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061D1C: .4byte gUnknown_2036E38 +_08061D20: .4byte sub_8061D24 + thumb_func_end sub_8061D00 + + thumb_func_start sub_8061D24 +sub_8061D24: @ 8061D24 + push {r4,lr} + ldr r3, _08061D40 @ =gUnknown_83A6238 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061D40: .4byte gUnknown_83A6238 + thumb_func_end sub_8061D24 + + thumb_func_start sub_8061D44 +sub_8061D44: @ 8061D44 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061D88 @ =gUnknown_83A6244 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061D70 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061D70 + movs r0, 0x3 + strb r0, [r2] +_08061D70: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061D88: .4byte gUnknown_83A6244 + thumb_func_end sub_8061D44 + + thumb_func_start sub_8061D8C +sub_8061D8C: @ 8061D8C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061DA8 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061DAC @ =sub_8061DB0 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061DA8: .4byte gUnknown_2036E38 +_08061DAC: .4byte sub_8061DB0 + thumb_func_end sub_8061D8C + + thumb_func_start sub_8061DB0 +sub_8061DB0: @ 8061DB0 + push {r4,lr} + ldr r3, _08061DCC @ =gUnknown_83A6248 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061DCC: .4byte gUnknown_83A6248 + thumb_func_end sub_8061DB0 + + thumb_func_start sub_8061DD0 +sub_8061DD0: @ 8061DD0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061E14 @ =gUnknown_83A6254 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061DFC + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061DFC + movs r0, 0x3 + strb r0, [r2] +_08061DFC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061E14: .4byte gUnknown_83A6254 + thumb_func_end sub_8061DD0 + + thumb_func_start sub_8061E18 +sub_8061E18: @ 8061E18 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061E34 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061E38 @ =sub_8061E3C + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061E34: .4byte gUnknown_2036E38 +_08061E38: .4byte sub_8061E3C + thumb_func_end sub_8061E18 + + thumb_func_start sub_8061E3C +sub_8061E3C: @ 8061E3C + push {r4,lr} + ldr r3, _08061E58 @ =gUnknown_83A6258 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061E58: .4byte gUnknown_83A6258 + thumb_func_end sub_8061E3C + + thumb_func_start sub_8061E5C +sub_8061E5C: @ 8061E5C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061EA0 @ =gUnknown_83A6264 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061E88 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061E88 + movs r0, 0x2 + strb r0, [r2] +_08061E88: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061EA0: .4byte gUnknown_83A6264 + thumb_func_end sub_8061E5C + + thumb_func_start sub_8061EA4 +sub_8061EA4: @ 8061EA4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061EC0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061EC4 @ =sub_8061EC8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061EC0: .4byte gUnknown_2036E38 +_08061EC4: .4byte sub_8061EC8 + thumb_func_end sub_8061EA4 + + thumb_func_start sub_8061EC8 +sub_8061EC8: @ 8061EC8 + push {r4,lr} + ldr r3, _08061EE4 @ =gUnknown_83A6268 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061EE4: .4byte gUnknown_83A6268 + thumb_func_end sub_8061EC8 + + thumb_func_start sub_8061EE8 +sub_8061EE8: @ 8061EE8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061F2C @ =gUnknown_83A6050 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061F14 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061F14 + movs r0, 0x2 + strb r0, [r2] +_08061F14: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061F2C: .4byte gUnknown_83A6050 + thumb_func_end sub_8061EE8 + + thumb_func_start sub_8061F30 +sub_8061F30: @ 8061F30 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061F4C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061F50 @ =sub_8061F54 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061F4C: .4byte gUnknown_2036E38 +_08061F50: .4byte sub_8061F54 + thumb_func_end sub_8061F30 + + thumb_func_start sub_8061F54 +sub_8061F54: @ 8061F54 + push {r4,lr} + ldr r3, _08061F70 @ =gUnknown_83A6274 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061F70: .4byte gUnknown_83A6274 + thumb_func_end sub_8061F54 + + thumb_func_start sub_8061F74 +sub_8061F74: @ 8061F74 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061FB8 @ =gUnknown_83A6280 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061FA0 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061FA0 + movs r0, 0x3 + strb r0, [r2] +_08061FA0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061FB8: .4byte gUnknown_83A6280 + thumb_func_end sub_8061F74 + + thumb_func_start sub_8061FBC +sub_8061FBC: @ 8061FBC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061FD8 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08061FDC @ =sub_8061FE0 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08061FD8: .4byte gUnknown_2036E38 +_08061FDC: .4byte sub_8061FE0 + thumb_func_end sub_8061FBC + + thumb_func_start sub_8061FE0 +sub_8061FE0: @ 8061FE0 + push {r4,lr} + ldr r3, _08061FFC @ =gUnknown_83A6284 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061FFC: .4byte gUnknown_83A6284 + thumb_func_end sub_8061FE0 + + thumb_func_start sub_8062000 +sub_8062000: @ 8062000 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062044 @ =gUnknown_83A6290 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0806202C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0806202C + movs r0, 0x3 + strb r0, [r2] +_0806202C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062044: .4byte gUnknown_83A6290 + thumb_func_end sub_8062000 + + thumb_func_start sub_8062048 +sub_8062048: @ 8062048 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062064 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062068 @ =sub_806206C + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062064: .4byte gUnknown_2036E38 +_08062068: .4byte sub_806206C + thumb_func_end sub_8062048 + + thumb_func_start sub_806206C +sub_806206C: @ 806206C + push {r4,lr} + ldr r3, _08062088 @ =gUnknown_83A6294 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062088: .4byte gUnknown_83A6294 + thumb_func_end sub_806206C + + thumb_func_start sub_806208C +sub_806208C: @ 806208C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080620D0 @ =gUnknown_83A62A0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080620B8 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080620B8 + movs r0, 0x2 + strb r0, [r2] +_080620B8: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080620D0: .4byte gUnknown_83A62A0 + thumb_func_end sub_806208C + + thumb_func_start sub_80620D4 +sub_80620D4: @ 80620D4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080620F0 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080620F4 @ =sub_80620F8 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080620F0: .4byte gUnknown_2036E38 +_080620F4: .4byte sub_80620F8 + thumb_func_end sub_80620D4 + + thumb_func_start sub_80620F8 +sub_80620F8: @ 80620F8 + push {r4,lr} + ldr r3, _08062114 @ =gUnknown_83A62A4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062114: .4byte gUnknown_83A62A4 + thumb_func_end sub_80620F8 + + thumb_func_start sub_8062118 +sub_8062118: @ 8062118 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0806215C @ =gUnknown_83A62B0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08062144 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062144 + movs r0, 0x2 + strb r0, [r2] +_08062144: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806215C: .4byte gUnknown_83A62B0 + thumb_func_end sub_8062118 + + thumb_func_start sub_8062160 +sub_8062160: @ 8062160 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806217C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062180 @ =sub_8062184 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806217C: .4byte gUnknown_2036E38 +_08062180: .4byte sub_8062184 + thumb_func_end sub_8062160 + + thumb_func_start sub_8062184 +sub_8062184: @ 8062184 + push {r4,lr} + ldr r3, _080621A0 @ =gUnknown_83A62B4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080621A0: .4byte gUnknown_83A62B4 + thumb_func_end sub_8062184 + + thumb_func_start sub_80621A4 +sub_80621A4: @ 80621A4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080621E8 @ =gUnknown_83A62C0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080621D0 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080621D0 + movs r0, 0x3 + strb r0, [r2] +_080621D0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080621E8: .4byte gUnknown_83A62C0 + thumb_func_end sub_80621A4 + + thumb_func_start sub_80621EC +sub_80621EC: @ 80621EC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062208 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0806220C @ =sub_8062210 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062208: .4byte gUnknown_2036E38 +_0806220C: .4byte sub_8062210 + thumb_func_end sub_80621EC + + thumb_func_start sub_8062210 +sub_8062210: @ 8062210 + push {r4,lr} + ldr r3, _0806222C @ =gUnknown_83A62C4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806222C: .4byte gUnknown_83A62C4 + thumb_func_end sub_8062210 + + thumb_func_start sub_8062230 +sub_8062230: @ 8062230 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062274 @ =gUnknown_83A62D0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0806225C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0806225C + movs r0, 0x3 + strb r0, [r2] +_0806225C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062274: .4byte gUnknown_83A62D0 + thumb_func_end sub_8062230 + + thumb_func_start sub_8062278 +sub_8062278: @ 8062278 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062294 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062298 @ =sub_806229C + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062294: .4byte gUnknown_2036E38 +_08062298: .4byte sub_806229C + thumb_func_end sub_8062278 + + thumb_func_start sub_806229C +sub_806229C: @ 806229C + push {r4,lr} + ldr r3, _080622B8 @ =gUnknown_83A62D4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080622B8: .4byte gUnknown_83A62D4 + thumb_func_end sub_806229C + + thumb_func_start sub_80622BC +sub_80622BC: @ 80622BC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062300 @ =gUnknown_83A62E0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080622E8 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080622E8 + movs r0, 0x2 + strb r0, [r2] +_080622E8: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062300: .4byte gUnknown_83A62E0 + thumb_func_end sub_80622BC + + thumb_func_start sub_8062304 +sub_8062304: @ 8062304 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062320 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062324 @ =sub_8062328 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062320: .4byte gUnknown_2036E38 +_08062324: .4byte sub_8062328 + thumb_func_end sub_8062304 + + thumb_func_start sub_8062328 +sub_8062328: @ 8062328 + push {r4,lr} + ldr r3, _08062344 @ =gUnknown_83A62E4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062344: .4byte gUnknown_83A62E4 + thumb_func_end sub_8062328 + + thumb_func_start sub_8062348 +sub_8062348: @ 8062348 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0806238C @ =gUnknown_83A62F0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08062374 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062374 + movs r0, 0x2 + strb r0, [r2] +_08062374: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806238C: .4byte gUnknown_83A62F0 + thumb_func_end sub_8062348 + + thumb_func_start sub_8062390 +sub_8062390: @ 8062390 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080623AC @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080623B0 @ =sub_80623B4 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080623AC: .4byte gUnknown_2036E38 +_080623B0: .4byte sub_80623B4 + thumb_func_end sub_8062390 + + thumb_func_start sub_80623B4 +sub_80623B4: @ 80623B4 + push {r4,lr} + ldr r3, _080623D0 @ =gUnknown_83A62F4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080623D0: .4byte gUnknown_83A62F4 + thumb_func_end sub_80623B4 + + thumb_func_start sub_80623D4 +sub_80623D4: @ 80623D4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062418 @ =gUnknown_83A6300 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062400 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062400 + movs r0, 0x3 + strb r0, [r2] +_08062400: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062418: .4byte gUnknown_83A6300 + thumb_func_end sub_80623D4 + + thumb_func_start sub_806241C +sub_806241C: @ 806241C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062438 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0806243C @ =sub_8062440 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062438: .4byte gUnknown_2036E38 +_0806243C: .4byte sub_8062440 + thumb_func_end sub_806241C + + thumb_func_start sub_8062440 +sub_8062440: @ 8062440 + push {r4,lr} + ldr r3, _0806245C @ =gUnknown_83A6304 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806245C: .4byte gUnknown_83A6304 + thumb_func_end sub_8062440 + + thumb_func_start sub_8062460 +sub_8062460: @ 8062460 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080624A4 @ =gUnknown_83A6310 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0806248C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0806248C + movs r0, 0x3 + strb r0, [r2] +_0806248C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080624A4: .4byte gUnknown_83A6310 + thumb_func_end sub_8062460 + + thumb_func_start sub_80624A8 +sub_80624A8: @ 80624A8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080624C4 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080624C8 @ =sub_80624CC + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080624C4: .4byte gUnknown_2036E38 +_080624C8: .4byte sub_80624CC + thumb_func_end sub_80624A8 + + thumb_func_start sub_80624CC +sub_80624CC: @ 80624CC + push {r4,lr} + ldr r3, _080624E8 @ =gUnknown_83A6314 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080624E8: .4byte gUnknown_83A6314 + thumb_func_end sub_80624CC + + thumb_func_start sub_80624EC +sub_80624EC: @ 80624EC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062530 @ =gUnknown_83A6320 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062518 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062518 + movs r0, 0x3 + strb r0, [r2] +_08062518: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062530: .4byte gUnknown_83A6320 + thumb_func_end sub_80624EC + + thumb_func_start sub_8062534 +sub_8062534: @ 8062534 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062550 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062554 @ =sub_8062558 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062550: .4byte gUnknown_2036E38 +_08062554: .4byte sub_8062558 + thumb_func_end sub_8062534 + + thumb_func_start sub_8062558 +sub_8062558: @ 8062558 + push {r4,lr} + ldr r3, _08062574 @ =gUnknown_83A6324 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062574: .4byte gUnknown_83A6324 + thumb_func_end sub_8062558 + + thumb_func_start sub_8062578 +sub_8062578: @ 8062578 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080625BC @ =gUnknown_83A6330 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080625A4 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080625A4 + movs r0, 0x3 + strb r0, [r2] +_080625A4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080625BC: .4byte gUnknown_83A6330 + thumb_func_end sub_8062578 + + thumb_func_start sub_80625C0 +sub_80625C0: @ 80625C0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080625DC @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080625E0 @ =sub_80625E4 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080625DC: .4byte gUnknown_2036E38 +_080625E0: .4byte sub_80625E4 + thumb_func_end sub_80625C0 + + thumb_func_start sub_80625E4 +sub_80625E4: @ 80625E4 + push {r4,lr} + ldr r3, _08062600 @ =gUnknown_83A6334 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062600: .4byte gUnknown_83A6334 + thumb_func_end sub_80625E4 + + thumb_func_start sub_8062604 +sub_8062604: @ 8062604 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062648 @ =gUnknown_83A6340 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062630 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062630 + movs r0, 0x3 + strb r0, [r2] +_08062630: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062648: .4byte gUnknown_83A6340 + thumb_func_end sub_8062604 + + thumb_func_start sub_806264C +sub_806264C: @ 806264C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062668 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0806266C @ =sub_8062670 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062668: .4byte gUnknown_2036E38 +_0806266C: .4byte sub_8062670 + thumb_func_end sub_806264C + + thumb_func_start sub_8062670 +sub_8062670: @ 8062670 + push {r4,lr} + ldr r3, _0806268C @ =gUnknown_83A6344 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806268C: .4byte gUnknown_83A6344 + thumb_func_end sub_8062670 + + thumb_func_start sub_8062690 +sub_8062690: @ 8062690 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080626D4 @ =gUnknown_83A6350 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080626BC + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080626BC + movs r0, 0x3 + strb r0, [r2] +_080626BC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080626D4: .4byte gUnknown_83A6350 + thumb_func_end sub_8062690 + + thumb_func_start sub_80626D8 +sub_80626D8: @ 80626D8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080626F4 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080626F8 @ =sub_80626FC + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080626F4: .4byte gUnknown_2036E38 +_080626F8: .4byte sub_80626FC + thumb_func_end sub_80626D8 + + thumb_func_start sub_80626FC +sub_80626FC: @ 80626FC + push {r4,lr} + ldr r3, _08062718 @ =gUnknown_83A6354 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062718: .4byte gUnknown_83A6354 + thumb_func_end sub_80626FC + + thumb_func_start sub_806271C +sub_806271C: @ 806271C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062760 @ =gUnknown_83A6360 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062748 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062748 + movs r0, 0x3 + strb r0, [r2] +_08062748: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062760: .4byte gUnknown_83A6360 + thumb_func_end sub_806271C + + thumb_func_start sub_8062764 +sub_8062764: @ 8062764 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062780 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062784 @ =sub_8062788 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062780: .4byte gUnknown_2036E38 +_08062784: .4byte sub_8062788 + thumb_func_end sub_8062764 + + thumb_func_start sub_8062788 +sub_8062788: @ 8062788 + push {r4,lr} + ldr r3, _080627A4 @ =gUnknown_83A6364 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080627A4: .4byte gUnknown_83A6364 + thumb_func_end sub_8062788 + + thumb_func_start sub_80627A8 +sub_80627A8: @ 80627A8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080627EC @ =gUnknown_83A6370 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080627D4 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080627D4 + movs r0, 0x3 + strb r0, [r2] +_080627D4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080627EC: .4byte gUnknown_83A6370 + thumb_func_end sub_80627A8 + + thumb_func_start sub_80627F0 +sub_80627F0: @ 80627F0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806280C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062810 @ =sub_8062814 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806280C: .4byte gUnknown_2036E38 +_08062810: .4byte sub_8062814 + thumb_func_end sub_80627F0 + + thumb_func_start sub_8062814 +sub_8062814: @ 8062814 + push {r4,lr} + ldr r3, _08062830 @ =gUnknown_83A6374 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062830: .4byte gUnknown_83A6374 + thumb_func_end sub_8062814 + + thumb_func_start sub_8062834 +sub_8062834: @ 8062834 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062878 @ =gUnknown_83A6380 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062860 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062860 + movs r0, 0x3 + strb r0, [r2] +_08062860: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8061A80 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062878: .4byte gUnknown_83A6380 + thumb_func_end sub_8062834 + + thumb_func_start sub_806287C +sub_806287C: @ 806287C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062898 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0806289C @ =sub_80628A0 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062898: .4byte gUnknown_2036E38 +_0806289C: .4byte sub_80628A0 + thumb_func_end sub_806287C + + thumb_func_start sub_80628A0 +sub_80628A0: @ 80628A0 + push {r4,lr} + ldr r3, _080628BC @ =gUnknown_83A6384 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080628BC: .4byte gUnknown_83A6384 + thumb_func_end sub_80628A0 + + thumb_func_start sub_80628C0 +sub_80628C0: @ 80628C0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + adds r4, 0x21 + ldrb r0, [r4] + cmp r0, 0 + bne _080628D8 + bl sub_805C6C4 + strb r0, [r4] +_080628D8: + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80628C0 + + thumb_func_start sub_80628E4 +sub_80628E4: @ 80628E4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + ldr r2, _08062908 @ =gUnknown_2036E38 + ldr r3, _0806290C @ =gUnknown_2037078 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1C] + cmp r0, 0xFF + beq _08062904 + ldrb r0, [r3, 0x3] + cmp r0, 0x2 + bne _08062910 +_08062904: + movs r0, 0 + b _08062938 + .align 2, 0 +_08062908: .4byte gUnknown_2036E38 +_0806290C: .4byte gUnknown_2037078 +_08062910: + ldr r5, _08062940 @ =gUnknown_83A6390 + bl sub_805BFE0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 22 + adds r4, r5 + bl sub_805C6E4 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r4, [r4] + adds r0, r6, 0 + adds r1, r7, 0 + movs r3, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_08062938: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062940: .4byte gUnknown_83A6390 + thumb_func_end sub_80628E4 + + thumb_func_start sub_8062944 +sub_8062944: @ 8062944 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08062962 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08062962: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8062944 + + thumb_func_start sub_806296C +sub_806296C: @ 806296C + movs r0, 0 + bx lr + thumb_func_end sub_806296C + + thumb_func_start sub_8062970 +sub_8062970: @ 8062970 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, _080629B4 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + bl sub_80644CC + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080629B4: .4byte gUnknown_839FD5D + thumb_func_end sub_8062970 + + thumb_func_start sub_80629B8 +sub_80629B8: @ 80629B8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062A6C @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl sub_80644CC + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8063C50 + adds r0, r6, 0 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _08062A3E + mov r1, r8 + cmp r1, 0 + beq _08062A52 + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062A52 +_08062A3E: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062A52: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062A6C: .4byte gUnknown_839FD5D + thumb_func_end sub_80629B8 + + thumb_func_start sub_8062A70 +sub_8062A70: @ 8062A70 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062B24 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl sub_80644CC + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8063C50 + adds r0, r6, 0 + bl sub_8063FB0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _08062AF6 + mov r1, r8 + cmp r1, 0 + beq _08062B0A + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062B0A +_08062AF6: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062B0A: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062B24: .4byte gUnknown_839FD5D + thumb_func_end sub_8062A70 + + thumb_func_start sub_8062B28 +sub_8062B28: @ 8062B28 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062BDC @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl sub_80644CC + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8063C50 + adds r0, r6, 0 + bl sub_8064034 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _08062BAE + mov r1, r8 + cmp r1, 0 + beq _08062BC2 + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062BC2 +_08062BAE: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062BC2: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062BDC: .4byte gUnknown_839FD5D + thumb_func_end sub_8062B28 + + thumb_func_start sub_8062BE0 +sub_8062BE0: @ 8062BE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062C94 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl sub_80644CC + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8063C50 + adds r0, r6, 0 + bl sub_8064060 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _08062C66 + mov r1, r8 + cmp r1, 0 + beq _08062C7A + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062C7A +_08062C66: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062C7A: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062C94: .4byte gUnknown_839FD5D + thumb_func_end sub_8062BE0 + + thumb_func_start sub_8062C98 +sub_8062C98: @ 8062C98 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, _08062CDC @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + bl sub_80644CC + bl sub_806413C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062CDC: .4byte gUnknown_839FD5D + thumb_func_end sub_8062C98 + + thumb_func_start sub_8062CE0 +sub_8062CE0: @ 8062CE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062D94 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl sub_80644CC + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8063C50 + adds r0, r6, 0 + bl sub_8064194 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _08062D66 + mov r1, r8 + cmp r1, 0 + beq _08062D7A + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062D7A +_08062D66: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062D7A: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062D94: .4byte gUnknown_839FD5D + thumb_func_end sub_8062CE0 + + thumb_func_start sub_8062D98 +sub_8062D98: @ 8062D98 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062E5C @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl sub_80644CC + adds r6, r0, 0 + ldrh r1, [r4, 0x10] + add r0, sp, 0x4 + strh r1, [r0] + ldrh r0, [r4, 0x12] + mov r5, sp + adds r5, 0x6 + strh r0, [r5] + movs r0, 0x2 + str r0, [sp] + adds r0, r6, 0 + add r1, sp, 0x4 + adds r2, r5, 0 + movs r3, 0x2 + bl sub_8063A6C + adds r0, r6, 0 + bl sub_8064110 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + add r0, sp, 0x4 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _08062E2C + mov r1, r8 + cmp r1, 0 + beq _08062E40 + add r0, sp, 0x4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062E40 +_08062E2C: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062E40: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062E5C: .4byte gUnknown_839FD5D + thumb_func_end sub_8062D98 + + thumb_func_start sub_8062E60 +sub_8062E60: @ 8062E60 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062E7C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08062E80 @ =sub_8062E84 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_08062E7C: .4byte gUnknown_2036E38 +_08062E80: .4byte sub_8062E84 + thumb_func_end sub_8062E60 + + thumb_func_start sub_8062E84 +sub_8062E84: @ 8062E84 + push {r4,lr} + ldr r3, _08062EA0 @ =gUnknown_83A63BC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062EA0: .4byte gUnknown_83A63BC + thumb_func_end sub_8062E84 + + thumb_func_start sub_8062EA4 +sub_8062EA4: @ 8062EA4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + ldr r2, _08062EC8 @ =gUnknown_2036E38 + ldr r3, _08062ECC @ =gUnknown_2037078 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1C] + cmp r0, 0xFF + beq _08062EC4 + ldrb r0, [r3, 0x3] + cmp r0, 0x2 + bne _08062ED0 +_08062EC4: + movs r0, 0 + b _08062EF8 + .align 2, 0 +_08062EC8: .4byte gUnknown_2036E38 +_08062ECC: .4byte gUnknown_2037078 +_08062ED0: + ldr r5, _08062F00 @ =gUnknown_83A6390 + bl sub_805BFE0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 22 + adds r4, r5 + bl sub_805C6E4 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08062F04 @ =sub_8059B44 + ldr r4, [r4] + adds r0, r6, 0 + adds r1, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_08062EF8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062F00: .4byte gUnknown_83A6390 +_08062F04: .4byte sub_8059B44 + thumb_func_end sub_8062EA4 + + thumb_func_start sub_8062F08 +sub_8062F08: @ 8062F08 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08062F6C @ =gUnknown_2036E38 + adds r4, r1, r0 + adds r6, r4, 0 + adds r6, 0x21 + ldrb r0, [r6] + cmp r0, 0 + beq _08062F30 + cmp r0, 0x1 + bne _08062F50 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08062F50 +_08062F30: + ldr r1, _08062F70 @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl sub_805F364 + movs r0, 0x1C + bl sub_8083444 + strb r0, [r4, 0x1A] + movs r0, 0x1 + strb r0, [r6] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_08062F50: + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08062F6C @ =gUnknown_2036E38 + adds r0, r1 + ldr r2, _08062F74 @ =sub_8062F78 + adds r1, r5, 0 + bl sub_8063DB8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08062F6C: .4byte gUnknown_2036E38 +_08062F70: .4byte gUnknown_20386E0 +_08062F74: .4byte sub_8062F78 + thumb_func_end sub_8062F08 + + thumb_func_start sub_8062F78 +sub_8062F78: @ 8062F78 + push {lr} + bl sub_8063410 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8062F78 + + thumb_func_start sub_8062F84 +sub_8062F84: @ 8062F84 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08062FE8 @ =gUnknown_2036E38 + adds r4, r1, r0 + adds r6, r4, 0 + adds r6, 0x21 + ldrb r0, [r6] + cmp r0, 0 + beq _08062FAC + cmp r0, 0x1 + bne _08062FCC + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08062FCC +_08062FAC: + ldr r1, _08062FEC @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl sub_805F364 + movs r0, 0x1D + bl sub_8083444 + strb r0, [r4, 0x1A] + movs r0, 0x1 + strb r0, [r6] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_08062FCC: + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08062FE8 @ =gUnknown_2036E38 + adds r0, r1 + ldr r2, _08062FF0 @ =sub_8062F78 + adds r1, r5, 0 + bl sub_8063DB8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08062FE8: .4byte gUnknown_2036E38 +_08062FEC: .4byte gUnknown_20386E0 +_08062FF0: .4byte sub_8062F78 + thumb_func_end sub_8062F84 + + thumb_func_start sub_8062FF4 +sub_8062FF4: @ 8062FF4 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0x3C + ldrsh r0, [r3, r1] + ldr r4, _08063050 @ =gUnknown_2036E38 + cmp r0, 0 + bne _08063034 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x3] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0, 0x3] + adds r2, r3, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r3, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r3, 0x5] + ldrh r0, [r3, 0x3C] + adds r0, 0x1 + strh r0, [r3, 0x3C] +_08063034: + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r2, _08063054 @ =sub_8063058 + adds r1, r3, 0 + bl sub_8063DB8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063050: .4byte gUnknown_2036E38 +_08063054: .4byte sub_8063058 + thumb_func_end sub_8062FF4 + + thumb_func_start sub_8063058 +sub_8063058: @ 8063058 + push {r4,lr} + ldr r3, _08063074 @ =gUnknown_83A63C8 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063074: .4byte gUnknown_83A63C8 + thumb_func_end sub_8063058 + + thumb_func_start sub_8063078 +sub_8063078: @ 8063078 + push {lr} + bl sub_8063410 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8063078 + + thumb_func_start sub_8063084 +sub_8063084: @ 8063084 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08063096 + movs r0, 0 + strh r0, [r4, 0x30] +_08063096: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8063084 + + thumb_func_start sub_80630A0 +sub_80630A0: @ 80630A0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080630BC @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080630C0 @ =sub_80630C4 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080630BC: .4byte gUnknown_2036E38 +_080630C0: .4byte sub_80630C4 + thumb_func_end sub_80630A0 + + thumb_func_start sub_80630C4 +sub_80630C4: @ 80630C4 + push {r4,lr} + ldr r3, _080630E0 @ =gUnknown_83A63CC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080630E0: .4byte gUnknown_83A63CC + thumb_func_end sub_80630C4 + + thumb_func_start sub_80630E4 +sub_80630E4: @ 80630E4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8064244 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80630E4 + + thumb_func_start sub_8063110 +sub_8063110: @ 8063110 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806312C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08063130 @ =sub_8063134 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806312C: .4byte gUnknown_2036E38 +_08063130: .4byte sub_8063134 + thumb_func_end sub_8063110 + + thumb_func_start sub_8063134 +sub_8063134: @ 8063134 + push {r4,lr} + ldr r3, _08063150 @ =gUnknown_83A63D4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063150: .4byte gUnknown_83A63D4 + thumb_func_end sub_8063134 + + thumb_func_start sub_8063154 +sub_8063154: @ 8063154 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8064270 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063154 + + thumb_func_start sub_8063180 +sub_8063180: @ 8063180 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806319C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080631A0 @ =sub_80631A4 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806319C: .4byte gUnknown_2036E38 +_080631A0: .4byte sub_80631A4 + thumb_func_end sub_8063180 + + thumb_func_start sub_80631A4 +sub_80631A4: @ 80631A4 + push {r4,lr} + ldr r3, _080631C0 @ =gUnknown_83A63DC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080631C0: .4byte gUnknown_83A63DC + thumb_func_end sub_80631A4 + + thumb_func_start sub_80631C4 +sub_80631C4: @ 80631C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806429C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80631C4 + + thumb_func_start sub_80631F0 +sub_80631F0: @ 80631F0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806320C @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08063210 @ =sub_8063214 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0806320C: .4byte gUnknown_2036E38 +_08063210: .4byte sub_8063214 + thumb_func_end sub_80631F0 + + thumb_func_start sub_8063214 +sub_8063214: @ 8063214 + push {r4,lr} + ldr r3, _08063230 @ =gUnknown_83A63E4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063230: .4byte gUnknown_83A63E4 + thumb_func_end sub_8063214 + + thumb_func_start sub_8063234 +sub_8063234: @ 8063234 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8063410 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063234 + + thumb_func_start sub_8063268 +sub_8063268: @ 8063268 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + bne _0806327A + movs r0, 0 + b _08063280 +_0806327A: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_08063280: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8063268 + + thumb_func_start sub_8063288 +sub_8063288: @ 8063288 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_8063288 + + thumb_func_start sub_8063298 +sub_8063298: @ 8063298 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080632B4 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080632B8 @ =sub_8063304 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080632B4: .4byte gUnknown_2036E38 +_080632B8: .4byte sub_8063304 + thumb_func_end sub_8063298 + + thumb_func_start sub_80632BC +sub_80632BC: @ 80632BC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080632D8 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _080632DC @ =sub_8063324 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080632D8: .4byte gUnknown_2036E38 +_080632DC: .4byte sub_8063324 + thumb_func_end sub_80632BC + + thumb_func_start sub_80632E0 +sub_80632E0: @ 80632E0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080632FC @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _08063300 @ =sub_8063344 + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_080632FC: .4byte gUnknown_2036E38 +_08063300: .4byte sub_8063344 + thumb_func_end sub_80632E0 + + thumb_func_start sub_8063304 +sub_8063304: @ 8063304 + push {r4,lr} + ldr r3, _08063320 @ =gUnknown_83A63F0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063320: .4byte gUnknown_83A63F0 + thumb_func_end sub_8063304 + + thumb_func_start sub_8063324 +sub_8063324: @ 8063324 + push {r4,lr} + ldr r3, _08063340 @ =gUnknown_83A63FC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063340: .4byte gUnknown_83A63FC + thumb_func_end sub_8063324 + + thumb_func_start sub_8063344 +sub_8063344: @ 8063344 + push {r4,lr} + ldr r3, _08063360 @ =gUnknown_83A6404 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063360: .4byte gUnknown_83A6404 + thumb_func_end sub_8063344 + + thumb_func_start sub_8063364 +sub_8063364: @ 8063364 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8063410 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x98 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063364 + + thumb_func_start sub_8063384 +sub_8063384: @ 8063384 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + bne _08063396 + movs r0, 0 + b _0806339C +_08063396: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0806339C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8063384 + + thumb_func_start sub_80633A4 +sub_80633A4: @ 80633A4 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_80633A4 + + thumb_func_start sub_80633B4 +sub_80633B4: @ 80633B4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8063410 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x99 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r4, 0x30] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80633B4 + + thumb_func_start sub_80633D4 +sub_80633D4: @ 80633D4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8063410 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x9A + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r4, 0x30] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80633D4 + + thumb_func_start sub_80633F4 +sub_80633F4: @ 80633F4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08063406 + movs r0, 0 + strh r0, [r4, 0x30] +_08063406: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80633F4 + + thumb_func_start sub_8063410 +sub_8063410: @ 8063410 + ldrb r3, [r0] + movs r2, 0x3 + negs r2, r2 + ands r2, r3 + movs r3, 0x41 + negs r3, r3 + ands r2, r3 + movs r3, 0x7F + ands r2, r3 + strb r2, [r0] + movs r2, 0xFF + strb r2, [r0, 0x1C] + movs r0, 0 + strh r0, [r1, 0x30] + bx lr + thumb_func_end sub_8063410 + + thumb_func_start sub_8063430 +sub_8063430: @ 8063430 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806343C @ =gUnknown_83A640C + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806343C: .4byte gUnknown_83A640C + thumb_func_end sub_8063430 + + thumb_func_start sub_8063440 +sub_8063440: @ 8063440 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806344C @ =gUnknown_83A6415 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806344C: .4byte gUnknown_83A6415 + thumb_func_end sub_8063440 + + thumb_func_start sub_8063450 +sub_8063450: @ 8063450 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806345C @ =gUnknown_83A641E + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806345C: .4byte gUnknown_83A641E + thumb_func_end sub_8063450 + + thumb_func_start sub_8063460 +sub_8063460: @ 8063460 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806346C @ =gUnknown_83A6427 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806346C: .4byte gUnknown_83A6427 + thumb_func_end sub_8063460 + + thumb_func_start sub_8063470 +sub_8063470: @ 8063470 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806347C @ =gUnknown_83A6430 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806347C: .4byte gUnknown_83A6430 + thumb_func_end sub_8063470 + + thumb_func_start sub_8063480 +sub_8063480: @ 8063480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806348C @ =gUnknown_83A6439 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806348C: .4byte gUnknown_83A6439 + thumb_func_end sub_8063480 + + thumb_func_start sub_8063490 +sub_8063490: @ 8063490 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806349C @ =gUnknown_83A6442 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806349C: .4byte gUnknown_83A6442 + thumb_func_end sub_8063490 + + thumb_func_start sub_80634A0 +sub_80634A0: @ 80634A0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634AC @ =gUnknown_83A644B + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634AC: .4byte gUnknown_83A644B + thumb_func_end sub_80634A0 + + thumb_func_start sub_80634B0 +sub_80634B0: @ 80634B0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634BC @ =gUnknown_83A6454 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634BC: .4byte gUnknown_83A6454 + thumb_func_end sub_80634B0 + + thumb_func_start sub_80634C0 +sub_80634C0: @ 80634C0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634CC @ =gUnknown_83A645D + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634CC: .4byte gUnknown_83A645D + thumb_func_end sub_80634C0 + + thumb_func_start sub_80634D0 +sub_80634D0: @ 80634D0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634DC @ =gUnknown_83A6466 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634DC: .4byte gUnknown_83A6466 + thumb_func_end sub_80634D0 + + thumb_func_start sub_80634E0 +sub_80634E0: @ 80634E0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634EC @ =gUnknown_83A646F + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634EC: .4byte gUnknown_83A646F + thumb_func_end sub_80634E0 + + thumb_func_start sub_80634F0 +sub_80634F0: @ 80634F0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634FC @ =gUnknown_83A6478 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634FC: .4byte gUnknown_83A6478 + thumb_func_end sub_80634F0 + + thumb_func_start sub_8063500 +sub_8063500: @ 8063500 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806350C @ =gUnknown_83A6481 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806350C: .4byte gUnknown_83A6481 + thumb_func_end sub_8063500 + + thumb_func_start sub_8063510 +sub_8063510: @ 8063510 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806351C @ =gUnknown_83A648A + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806351C: .4byte gUnknown_83A648A + thumb_func_end sub_8063510 + + thumb_func_start sub_8063520 +sub_8063520: @ 8063520 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806352C @ =gUnknown_83A6493 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806352C: .4byte gUnknown_83A6493 + thumb_func_end sub_8063520 + + thumb_func_start sub_8063530 +sub_8063530: @ 8063530 + push {lr} + adds r2, r0, 0 + ldr r1, _08063538 @ =gUnknown_83A3698 + b _08063548 + .align 2, 0 +_08063538: .4byte gUnknown_83A3698 +_0806353C: + ldr r0, [r1] + cmp r0, r2 + bne _08063546 + adds r0, r1, 0 + b _08063550 +_08063546: + adds r1, 0x8 +_08063548: + ldr r0, [r1] + cmp r0, 0 + bne _0806353C + movs r0, 0 +_08063550: + pop {r1} + bx r1 + thumb_func_end sub_8063530 + + thumb_func_start sub_8063554 +sub_8063554: @ 8063554 + push {r4,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r0, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _08063596 + adds r0, r4, 0 + adds r0, 0x2A + strb r2, [r0] + ldr r0, [r4, 0x8] + bl sub_8063530 + adds r1, r4, 0 + adds r1, 0x2B + cmp r0, 0 + beq _0806358E + ldrb r2, [r1] + ldrb r3, [r0, 0x4] + cmp r2, r3 + bne _08063584 + ldrb r0, [r0, 0x7] + b _0806358C +_08063584: + ldrb r3, [r0, 0x5] + cmp r2, r3 + bne _0806358E + ldrb r0, [r0, 0x6] +_0806358C: + strb r0, [r1] +_0806358E: + ldrb r1, [r1] + adds r0, r4, 0 + bl sub_80083C0 +_08063596: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8063554 + + thumb_func_start sub_806359C +sub_806359C: @ 806359C + push {r4,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r0, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _080635D4 + adds r0, r4, 0 + adds r0, 0x2A + strb r2, [r0] + ldr r0, [r4, 0x8] + bl sub_8063530 + adds r2, r0, 0 + cmp r2, 0 + beq _080635D4 + ldrb r1, [r2, 0x5] + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldrb r3, [r2, 0x4] + cmp r0, r3 + bhi _080635CE + ldrb r1, [r2, 0x4] +_080635CE: + adds r0, r4, 0 + bl sub_80083C0 +_080635D4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806359C + + thumb_func_start sub_80635DC +sub_80635DC: @ 80635DC + push {lr} + lsls r1, 16 + lsrs r1, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + asrs r0, 16 + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + ble _080635F6 + movs r0, 0x3 + b _0806360C +_080635F6: + cmp r0, r2 + bge _080635FE + movs r0, 0x4 + b _0806360C +_080635FE: + lsls r1, 16 + lsls r0, r3, 16 + cmp r1, r0 + bgt _0806360A + movs r0, 0x1 + b _0806360C +_0806360A: + movs r0, 0x2 +_0806360C: + pop {r1} + bx r1 + thumb_func_end sub_80635DC + + thumb_func_start sub_8063610 +sub_8063610: @ 8063610 + push {r4,lr} + mov r12, r0 + lsls r1, 24 + lsrs r1, 24 + movs r3, 0 + strb r1, [r0, 0x6] + adds r0, 0x21 + strb r3, [r0] + adds r0, 0x1 + strb r3, [r0] + ldr r4, _08063654 @ =gUnknown_202063C + mov r0, r12 + ldrb r2, [r0, 0x4] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r2, r4, 0 + adds r2, 0x1C + adds r0, r2 + ldr r2, _08063658 @ =gUnknown_839FBC8 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [r0] + mov r0, r12 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r3, [r0, 0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063654: .4byte gUnknown_202063C +_08063658: .4byte gUnknown_839FBC8 + thumb_func_end sub_8063610 + + thumb_func_start sub_806365C +sub_806365C: @ 806365C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08063668 @ =gUnknown_83A649C + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08063668: .4byte gUnknown_83A649C + thumb_func_end sub_806365C + + thumb_func_start sub_806366C +sub_806366C: @ 806366C + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + lsls r5, r1, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + adds r3, r5, 0 + bl sub_80636AC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806366C + + thumb_func_start sub_80636AC +sub_80636AC: @ 80636AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + mov r8, r7 + lsrs r0, r1, 16 + mov r9, r0 + asrs r5, r1, 16 + lsrs r0, r2, 16 + mov r10, r0 + asrs r4, r2, 16 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_806383C + lsls r0, 24 + cmp r0, 0 + beq _080636E2 + movs r0, 0x1 + b _08063762 +_080636E2: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8058DC4 + lsls r0, 24 + cmp r0, 0 + bne _08063724 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8059334 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08063724 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r7, 0 + bl sub_80638AC + lsls r0, 24 + cmp r0, 0 + bne _08063724 + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _08063728 + mov r0, r8 + bl sub_8059464 + cmp r0, 0 + bne _08063728 +_08063724: + movs r0, 0x2 + b _08063762 +_08063728: + ldrb r0, [r6, 0xB] + lsls r0, 28 + lsrs r0, 28 + mov r2, r9 + lsls r1, r2, 16 + asrs r5, r1, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r4, r1, 16 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_80681B0 + lsls r0, 24 + cmp r0, 0 + beq _0806374C + movs r0, 0x3 + b _08063762 +_0806374C: + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8063904 + lsls r0, 24 + cmp r0, 0 + bne _08063760 + movs r0, 0 + b _08063762 +_08063760: + movs r0, 0x4 +_08063762: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80636AC + + thumb_func_start sub_8063770 +sub_8063770: @ 8063770 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsrs r0, r1, 16 + mov r9, r0 + asrs r6, r1, 16 + lsrs r0, r2, 16 + mov r10, r0 + asrs r5, r2, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_806383C + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8058DC4 + lsls r0, 24 + cmp r0, 0 + bne _080637E8 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8059334 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _080637E8 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_80638AC + lsls r0, 24 + cmp r0, 0 + bne _080637E8 + ldrb r0, [r7, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _080637EC + mov r0, r8 + bl sub_8059464 + cmp r0, 0 + bne _080637EC +_080637E8: + movs r0, 0x2 + orrs r4, r0 +_080637EC: + ldrb r0, [r7, 0xB] + lsls r0, 28 + lsrs r0, 28 + mov r2, r9 + lsls r1, r2, 16 + asrs r6, r1, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r5, r1, 16 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80681B0 + lsls r0, 24 + cmp r0, 0 + beq _08063814 + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08063814: + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_8063904 + lsls r0, 24 + cmp r0, 0 + beq _0806382C + movs r0, 0x8 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0806382C: + adds r0, r4, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8063770 + + thumb_func_start sub_806383C +sub_806383C: @ 806383C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + ldrb r1, [r4, 0x19] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + beq _08063874 + lsls r1, 28 + lsrs r2, r1, 28 + ldrh r0, [r4, 0xC] + subs r2, r0, r2 + lsrs r1, 28 + adds r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r2, 16 + lsls r0, r3, 16 + asrs r3, r0, 16 + cmp r2, r0 + bgt _080638A0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r3 + blt _080638A0 +_08063874: + ldrb r1, [r4, 0x19] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _080638A4 + lsls r1, 24 + lsrs r2, r1, 28 + ldrh r0, [r4, 0xE] + subs r2, r0, r2 + lsrs r1, 28 + adds r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r2, 16 + lsls r0, r5, 16 + asrs r3, r0, 16 + cmp r2, r0 + bgt _080638A0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r3 + bge _080638A4 +_080638A0: + movs r0, 0x1 + b _080638A6 +_080638A4: + movs r0, 0 +_080638A6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806383C + + thumb_func_start sub_80638AC +sub_80638AC: @ 80638AC + push {r4-r7,lr} + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 24 + ldr r1, _080638F4 @ =gUnknown_83A64A8 + lsrs r3, 22 + subs r5, r3, 0x4 + adds r1, r5, r1 + ldrb r0, [r0, 0x1E] + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080638EE + ldr r4, _080638F8 @ =gUnknown_83A64B8 + adds r4, r5, r4 + lsls r0, r6, 16 + asrs r0, 16 + lsls r1, r7, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _080638FC +_080638EE: + movs r0, 0x1 + b _080638FE + .align 2, 0 +_080638F4: .4byte gUnknown_83A64A8 +_080638F8: .4byte gUnknown_83A64B8 +_080638FC: + movs r0, 0 +_080638FE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80638AC + + thumb_func_start sub_8063904 +sub_8063904: @ 8063904 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r7, r1, 16 + movs r4, 0 + lsls r2, 16 + asrs r5, r2, 16 +_08063912: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _08063968 @ =gUnknown_2036E38 + adds r2, r0, r1 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0806396C + cmp r2, r6 + beq _0806396C + movs r0, 0x10 + ldrsh r1, [r2, r0] + lsls r0, r7, 16 + asrs r3, r0, 16 + cmp r1, r3 + bne _0806393C + movs r1, 0x12 + ldrsh r0, [r2, r1] + cmp r0, r5 + beq _0806394C +_0806393C: + movs r1, 0x14 + ldrsh r0, [r2, r1] + cmp r0, r3 + bne _0806396C + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r5 + bne _0806396C +_0806394C: + ldrb r0, [r6, 0xB] + lsls r0, 28 + lsrs r0, 28 + ldrb r1, [r2, 0xB] + lsls r1, 28 + lsrs r1, 28 + bl sub_806835C + lsls r0, 24 + cmp r0, 0 + beq _0806396C + movs r0, 0x1 + b _08063978 + .align 2, 0 +_08063968: .4byte gUnknown_2036E38 +_0806396C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08063912 + movs r0, 0 +_08063978: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8063904 + + thumb_func_start sub_8063980 +sub_8063980: @ 8063980 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080639CC + ldr r3, _080639C4 @ =gUnknown_202063C + ldr r2, _080639C8 @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x3C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080639CC + movs r0, 0x1 + b _080639CE + .align 2, 0 +_080639C4: .4byte gUnknown_202063C +_080639C8: .4byte gUnknown_2036E38 +_080639CC: + movs r0, 0 +_080639CE: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8063980 + + thumb_func_start sub_80639D4 +sub_80639D4: @ 80639D4 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _08063A12 + ldr r3, _08063A18 @ =gUnknown_202063C + ldr r2, _08063A1C @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x3C] + movs r0, 0x4 + orrs r0, r2 + strh r0, [r1, 0x3C] +_08063A12: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08063A18: .4byte gUnknown_202063C +_08063A1C: .4byte gUnknown_2036E38 + thumb_func_end sub_80639D4 + + thumb_func_start sub_8063A20 +sub_8063A20: @ 8063A20 + push {r4,lr} + lsls r0, 24 + ldr r3, _08063A40 @ =gUnknown_83A64C8 + lsrs r0, 22 + adds r0, r3 + ldrh r3, [r0] + ldrh r4, [r1] + adds r3, r4 + strh r3, [r1] + ldrh r0, [r0, 0x2] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063A40: .4byte gUnknown_83A64C8 + thumb_func_end sub_8063A20 + + thumb_func_start sub_8063A44 +sub_8063A44: @ 8063A44 + push {r4,lr} + lsls r0, 24 + ldr r3, _08063A68 @ =gUnknown_83A64C8 + lsrs r0, 22 + adds r0, r3 + ldrh r3, [r0] + lsls r3, 4 + ldrh r4, [r1] + adds r3, r4 + strh r3, [r1] + ldrh r0, [r0, 0x2] + lsls r0, 4 + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063A68: .4byte gUnknown_83A64C8 + thumb_func_end sub_8063A44 + + thumb_func_start sub_8063A6C +sub_8063A6C: @ 8063A6C + push {r4-r7,lr} + adds r4, r1, 0 + ldr r1, [sp, 0x14] + lsls r0, 24 + lsls r3, 16 + lsrs r3, 16 + adds r7, r3, 0 + lsls r1, 16 + lsrs r6, r1, 16 + mov r12, r6 + ldr r1, _08063AD0 @ =gUnknown_83A64C8 + lsrs r0, 22 + adds r5, r0, r1 + movs r0, 0 + ldrsh r1, [r5, r0] + cmp r1, 0 + ble _08063A98 + lsls r0, r3, 16 + asrs r0, 16 + ldrh r3, [r4] + adds r0, r3 + strh r0, [r4] +_08063A98: + cmp r1, 0 + bge _08063AA6 + ldrh r1, [r4] + lsls r0, r7, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r4] +_08063AA6: + movs r0, 0x2 + ldrsh r1, [r5, r0] + cmp r1, 0 + ble _08063AB8 + lsls r0, r6, 16 + asrs r0, 16 + ldrh r3, [r2] + adds r0, r3 + strh r0, [r2] +_08063AB8: + cmp r1, 0 + bge _08063AC8 + ldrh r1, [r2] + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r2] +_08063AC8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08063AD0: .4byte gUnknown_83A64C8 + thumb_func_end sub_8063A6C + + thumb_func_start sub_8063AD4 +sub_8063AD4: @ 8063AD4 + push {r4,r5,lr} + ldr r5, _08063B10 @ =gUnknown_3005008 + ldr r4, [r5] + ldrh r4, [r4] + lsls r0, 16 + asrs r0, 16 + subs r0, r4 + lsls r0, 4 + strh r0, [r2] + ldr r0, [r5] + ldrh r0, [r0, 0x2] + lsls r1, 16 + asrs r1, 16 + subs r1, r0 + lsls r1, 4 + strh r1, [r3] + ldr r1, _08063B14 @ =gUnknown_300506C + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r1, _08063B18 @ =gUnknown_3005068 + ldrh r0, [r3] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08063B10: .4byte gUnknown_3005008 +_08063B14: .4byte gUnknown_300506C +_08063B18: .4byte gUnknown_3005068 + thumb_func_end sub_8063AD4 + + thumb_func_start sub_8063B1C +sub_8063B1C: @ 8063B1C + push {r4-r7,lr} + adds r7, r2, 0 + mov r12, r3 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _08063BB0 @ =gUnknown_300506C + ldrh r0, [r0] + negs r0, r0 + ldr r1, _08063BB4 @ =gUnknown_3005050 + ldr r2, [r1, 0x10] + subs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _08063BB8 @ =gUnknown_3005068 + ldrh r0, [r0] + negs r0, r0 + ldr r1, [r1, 0x14] + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r2, 0 + ble _08063B56 + lsls r0, r3, 16 + movs r3, 0x80 + lsls r3, 13 + adds r0, r3 + lsrs r3, r0, 16 +_08063B56: + cmp r2, 0 + bge _08063B62 + lsls r0, r3, 16 + ldr r2, _08063BBC @ =0xfff00000 + adds r0, r2 + lsrs r3, r0, 16 +_08063B62: + cmp r1, 0 + ble _08063B70 + lsls r0, r4, 16 + movs r2, 0x80 + lsls r2, 13 + adds r0, r2 + lsrs r4, r0, 16 +_08063B70: + cmp r1, 0 + bge _08063B7C + lsls r0, r4, 16 + ldr r1, _08063BBC @ =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_08063B7C: + ldr r2, _08063BC0 @ =gUnknown_3005008 + ldr r0, [r2] + ldrh r1, [r0] + lsls r0, r5, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 4 + lsls r1, r3, 16 + asrs r1, 16 + adds r1, r0 + strh r1, [r7] + ldr r0, [r2] + ldrh r1, [r0, 0x2] + lsls r0, r6, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 4 + lsls r1, r4, 16 + asrs r1, 16 + adds r1, r0 + mov r2, r12 + strh r1, [r2] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08063BB0: .4byte gUnknown_300506C +_08063BB4: .4byte gUnknown_3005050 +_08063BB8: .4byte gUnknown_3005068 +_08063BBC: .4byte 0xfff00000 +_08063BC0: .4byte gUnknown_3005008 + thumb_func_end sub_8063B1C + + thumb_func_start sub_8063BC4 +sub_8063BC4: @ 8063BC4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r6, r0, 0 + mov r8, r1 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r1, 0 + ldrsh r0, [r6, r1] + mov r2, r8 + movs r3, 0 + ldrsh r1, [r2, r3] + adds r2, r6, 0 + mov r3, r8 + bl sub_8063B1C + lsls r4, 16 + asrs r4, 16 + ldrh r0, [r6] + adds r4, r0 + strh r4, [r6] + lsls r5, 16 + asrs r5, 16 + mov r1, r8 + ldrh r1, [r1] + adds r5, r1 + mov r2, r8 + strh r5, [r2] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8063BC4 + + thumb_func_start sub_8063C10 +sub_8063C10: @ 8063C10 + push {lr} + adds r2, r0, 0 + movs r0, 0 + strh r0, [r2] + strh r0, [r1] + ldr r3, _08063C4C @ =gUnknown_3005050 + ldr r0, [r3, 0x10] + cmp r0, 0 + ble _08063C26 + movs r0, 0x1 + strh r0, [r2] +_08063C26: + ldr r0, [r3, 0x10] + cmp r0, 0 + bge _08063C32 + ldrh r0, [r2] + subs r0, 0x1 + strh r0, [r2] +_08063C32: + ldr r2, [r3, 0x14] + cmp r2, 0 + ble _08063C3E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08063C3E: + cmp r2, 0 + bge _08063C48 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_08063C48: + pop {r0} + bx r0 + .align 2, 0 +_08063C4C: .4byte gUnknown_3005050 + thumb_func_end sub_8063C10 + + thumb_func_start sub_8063C50 +sub_8063C50: @ 8063C50 + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + ldrh r4, [r0, 0x10] + strh r4, [r2] + ldrh r0, [r0, 0x12] + strh r0, [r3] + adds r0, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + bl sub_8063A20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8063C50 + + thumb_func_start sub_8063C70 +sub_8063C70: @ 8063C70 + push {lr} + ldrb r1, [r0] + movs r0, 0x42 + ands r0, r1 + cmp r0, 0 + bne _08063C80 + movs r0, 0 + b _08063C82 +_08063C80: + movs r0, 0x1 +_08063C82: + pop {r1} + bx r1 + thumb_func_end sub_8063C70 + + thumb_func_start sub_8063C88 +sub_8063C88: @ 8063C88 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + bge _08063C9E + ldrb r0, [r1, 0x1C] + cmp r0, 0xFF + beq _08063C9E + movs r0, 0x1 + b _08063CA0 +_08063C9E: + movs r0, 0 +_08063CA0: + pop {r1} + bx r1 + thumb_func_end sub_8063C88 + + thumb_func_start sub_8063CA4 +sub_8063CA4: @ 8063CA4 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08063CC8 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _08063CCE + movs r0, 0x1 + b _08063CF4 +_08063CC8: + adds r0, r4, 0 + bl sub_8063D1C +_08063CCE: + adds r0, r4, 0 + bl sub_80689F4 + movs r3, 0 + strb r5, [r4, 0x1C] + ldrb r0, [r4] + movs r1, 0x40 + orrs r0, r1 + movs r1, 0x7F + ands r0, r1 + strb r0, [r4] + ldr r2, _08063CFC @ =gUnknown_202063C + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x32] + movs r0, 0 +_08063CF4: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08063CFC: .4byte gUnknown_202063C + thumb_func_end sub_8063CA4 + + thumb_func_start sub_8063D00 +sub_8063D00: @ 8063D00 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8063D1C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8063CA4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8063D00 + + thumb_func_start sub_8063D1C +sub_8063D1C: @ 8063D1C + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + bge _08063D2E + adds r0, r1, 0 + bl sub_8063D34 +_08063D2E: + pop {r0} + bx r0 + thumb_func_end sub_8063D1C + + thumb_func_start sub_8063D34 +sub_8063D34: @ 8063D34 + movs r1, 0xFF + strb r1, [r0, 0x1C] + ldrb r2, [r0] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + movs r2, 0x7F + ands r1, r2 + strb r1, [r0] + ldr r3, _08063D64 @ =gUnknown_202063C + ldrb r2, [r0, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + movs r2, 0 + strh r2, [r1, 0x30] + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x32] + bx lr + .align 2, 0 +_08063D64: .4byte gUnknown_202063C + thumb_func_end sub_8063D34 + + thumb_func_start sub_8063D68 +sub_8063D68: @ 8063D68 + push {lr} + ldrb r1, [r0] + lsls r0, r1, 25 + cmp r0, 0 + blt _08063D76 + movs r0, 0x10 + b _08063D78 +_08063D76: + lsrs r0, r1, 7 +_08063D78: + pop {r1} + bx r1 + thumb_func_end sub_8063D68 + + thumb_func_start sub_8063D7C +sub_8063D7C: @ 8063D7C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8063D68 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08063D96 + cmp r4, 0x10 + beq _08063D96 + adds r0, r5, 0 + bl sub_8063D1C +_08063D96: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063D7C + + thumb_func_start sub_8063DA0 +sub_8063DA0: @ 8063DA0 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08063DB0 + movs r0, 0xFF + b _08063DB2 +_08063DB0: + ldrb r0, [r1, 0x1C] +_08063DB2: + pop {r1} + bx r1 + thumb_func_end sub_8063DA0 + + thumb_func_start sub_8063DB8 +sub_8063DB8: @ 8063DB8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + bl sub_80687F0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679C8 + adds r0, r4, 0 + bl sub_8063C88 + lsls r0, 24 + cmp r0, 0 + beq _08063DE2 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806450C + b _08063DF8 +_08063DE2: + ldrb r0, [r4, 0x1] + lsls r0, 31 + cmp r0, 0 + bne _08063DF8 +_08063DEA: + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r6 + lsls r0, 24 + cmp r0, 0 + bne _08063DEA +_08063DF8: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806883C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068890 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679AC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679F8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068340 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8063DB8 + + thumb_func_start sub_8063E28 +sub_8063E28: @ 8063E28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80687F0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679C8 + adds r0, r4, 0 + bl sub_8063C88 + lsls r0, 24 + cmp r0, 0 + beq _08063E5C + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08063E5C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064544 +_08063E5C: + ldrb r0, [r4, 0x1E] + bl sub_8059DAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08063E78 + ldrb r0, [r4, 0x1E] + bl sub_8059DC0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08063E80 +_08063E78: + ldrb r0, [r4, 0x1] + movs r1, 0x4 + orrs r0, r1 + b _08063E88 +_08063E80: + ldrb r1, [r4, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 +_08063E88: + strb r0, [r4, 0x1] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806883C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068890 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679AC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679F8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8068340 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8063E28 + + thumb_func_start sub_8063EB8 +sub_8063EB8: @ 8063EB8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063EE0 @ =gUnknown_83A64EC + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063ED0 + movs r4, 0 +_08063ED0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063EE0: .4byte gUnknown_83A64EC + thumb_func_end sub_8063EB8 + + thumb_func_start sub_8063EE4 +sub_8063EE4: @ 8063EE4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063F0C @ =gUnknown_83A64F1 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063EFC + movs r4, 0 +_08063EFC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063F0C: .4byte gUnknown_83A64F1 + thumb_func_end sub_8063EE4 + + thumb_func_start sub_8063F10 +sub_8063F10: @ 8063F10 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _08063F1C + movs r1, 0 +_08063F1C: + ldr r0, _08063F28 @ =gUnknown_83A64F6 + adds r0, r1, r0 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_08063F28: .4byte gUnknown_83A64F6 + thumb_func_end sub_8063F10 + + thumb_func_start sub_8063F2C +sub_8063F2C: @ 8063F2C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063F54 @ =gUnknown_83A64FB + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063F44 + movs r4, 0 +_08063F44: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063F54: .4byte gUnknown_83A64FB + thumb_func_end sub_8063F2C + + thumb_func_start sub_8063F58 +sub_8063F58: @ 8063F58 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063F80 @ =gUnknown_83A6500 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063F70 + movs r4, 0 +_08063F70: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063F80: .4byte gUnknown_83A6500 + thumb_func_end sub_8063F58 + + thumb_func_start sub_8063F84 +sub_8063F84: @ 8063F84 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063FAC @ =gUnknown_83A6505 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063F9C + movs r4, 0 +_08063F9C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063FAC: .4byte gUnknown_83A6505 + thumb_func_end sub_8063F84 + + thumb_func_start sub_8063FB0 +sub_8063FB0: @ 8063FB0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063FD8 @ =gUnknown_83A650A + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063FC8 + movs r4, 0 +_08063FC8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063FD8: .4byte gUnknown_83A650A + thumb_func_end sub_8063FB0 + + thumb_func_start sub_8063FDC +sub_8063FDC: @ 8063FDC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064004 @ =gUnknown_83A650F + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063FF4 + movs r4, 0 +_08063FF4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064004: .4byte gUnknown_83A650F + thumb_func_end sub_8063FDC + + thumb_func_start sub_8064008 +sub_8064008: @ 8064008 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064030 @ =gUnknown_83A6514 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064020 + movs r4, 0 +_08064020: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064030: .4byte gUnknown_83A6514 + thumb_func_end sub_8064008 + + thumb_func_start sub_8064034 +sub_8064034: @ 8064034 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806405C @ =gUnknown_83A6519 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806404C + movs r4, 0 +_0806404C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806405C: .4byte gUnknown_83A6519 + thumb_func_end sub_8064034 + + thumb_func_start sub_8064060 +sub_8064060: @ 8064060 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064088 @ =gUnknown_83A651E + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064078 + movs r4, 0 +_08064078: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064088: .4byte gUnknown_83A651E + thumb_func_end sub_8064060 + + thumb_func_start sub_806408C +sub_806408C: @ 806408C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080640B4 @ =gUnknown_83A6523 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080640A4 + movs r4, 0 +_080640A4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080640B4: .4byte gUnknown_83A6523 + thumb_func_end sub_806408C + + thumb_func_start sub_80640B8 +sub_80640B8: @ 80640B8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080640E0 @ =gUnknown_83A6528 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080640D0 + movs r4, 0 +_080640D0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080640E0: .4byte gUnknown_83A6528 + thumb_func_end sub_80640B8 + + thumb_func_start sub_80640E4 +sub_80640E4: @ 80640E4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806410C @ =gUnknown_83A652D + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080640FC + movs r4, 0 +_080640FC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806410C: .4byte gUnknown_83A652D + thumb_func_end sub_80640E4 + + thumb_func_start sub_8064110 +sub_8064110: @ 8064110 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064138 @ =gUnknown_83A6532 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064128 + movs r4, 0 +_08064128: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064138: .4byte gUnknown_83A6532 + thumb_func_end sub_8064110 + + thumb_func_start sub_806413C +sub_806413C: @ 806413C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064164 @ =gUnknown_83A6537 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064154 + movs r4, 0 +_08064154: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064164: .4byte gUnknown_83A6537 + thumb_func_end sub_806413C + + thumb_func_start sub_8064168 +sub_8064168: @ 8064168 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064190 @ =gUnknown_83A653C + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064180 + movs r4, 0 +_08064180: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064190: .4byte gUnknown_83A653C + thumb_func_end sub_8064168 + + thumb_func_start sub_8064194 +sub_8064194: @ 8064194 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080641BC @ =gUnknown_83A6541 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080641AC + movs r4, 0 +_080641AC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080641BC: .4byte gUnknown_83A6541 + thumb_func_end sub_8064194 + + thumb_func_start sub_80641C0 +sub_80641C0: @ 80641C0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080641E8 @ =gUnknown_83A6546 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080641D8 + movs r4, 0 +_080641D8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080641E8: .4byte gUnknown_83A6546 + thumb_func_end sub_80641C0 + + thumb_func_start sub_80641EC +sub_80641EC: @ 80641EC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064214 @ =gUnknown_83A654B + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064204 + movs r4, 0 +_08064204: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064214: .4byte gUnknown_83A654B + thumb_func_end sub_80641EC + + thumb_func_start sub_8064218 +sub_8064218: @ 8064218 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064240 @ =gUnknown_83A6550 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064230 + movs r4, 0 +_08064230: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064240: .4byte gUnknown_83A6550 + thumb_func_end sub_8064218 + + thumb_func_start sub_8064244 +sub_8064244: @ 8064244 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806426C @ =gUnknown_83A6555 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806425C + movs r4, 0 +_0806425C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806426C: .4byte gUnknown_83A6555 + thumb_func_end sub_8064244 + + thumb_func_start sub_8064270 +sub_8064270: @ 8064270 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064298 @ =gUnknown_83A655A + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064288 + movs r4, 0 +_08064288: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064298: .4byte gUnknown_83A655A + thumb_func_end sub_8064270 + + thumb_func_start sub_806429C +sub_806429C: @ 806429C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080642C4 @ =gUnknown_83A655F + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080642B4 + movs r4, 0 +_080642B4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080642C4: .4byte gUnknown_83A655F + thumb_func_end sub_806429C + + thumb_func_start sub_80642C8 +sub_80642C8: @ 80642C8 + push {r4,lr} + adds r4, r0, 0 + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_8064480 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80642C8 + + thumb_func_start sub_80642F4 +sub_80642F4: @ 80642F4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806431C @ =gUnknown_83A6564 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806430C + movs r4, 0 +_0806430C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806431C: .4byte gUnknown_83A6564 + thumb_func_end sub_80642F4 + + thumb_func_start sub_8064320 +sub_8064320: @ 8064320 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064348 @ =gUnknown_83A6569 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064338 + movs r4, 0 +_08064338: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064348: .4byte gUnknown_83A6569 + thumb_func_end sub_8064320 + + thumb_func_start sub_806434C +sub_806434C: @ 806434C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064374 @ =gUnknown_83A656E + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064364 + movs r4, 0 +_08064364: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064374: .4byte gUnknown_83A656E + thumb_func_end sub_806434C + + thumb_func_start sub_8064378 +sub_8064378: @ 8064378 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080643A0 @ =gUnknown_83A6573 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064390 + movs r4, 0 +_08064390: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080643A0: .4byte gUnknown_83A6573 + thumb_func_end sub_8064378 + + thumb_func_start sub_80643A4 +sub_80643A4: @ 80643A4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080643CC @ =gUnknown_83A6578 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080643BC + movs r4, 0 +_080643BC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080643CC: .4byte gUnknown_83A6578 + thumb_func_end sub_80643A4 + + thumb_func_start sub_80643D0 +sub_80643D0: @ 80643D0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080643F8 @ =gUnknown_83A657D + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080643E8 + movs r4, 0 +_080643E8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080643F8: .4byte gUnknown_83A657D + thumb_func_end sub_80643D0 + + thumb_func_start sub_80643FC +sub_80643FC: @ 80643FC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064424 @ =gUnknown_83A6582 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064414 + movs r4, 0 +_08064414: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064424: .4byte gUnknown_83A6582 + thumb_func_end sub_80643FC + + thumb_func_start sub_8064428 +sub_8064428: @ 8064428 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064450 @ =gUnknown_83A6587 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064440 + movs r4, 0 +_08064440: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064450: .4byte gUnknown_83A6587 + thumb_func_end sub_8064428 + + thumb_func_start sub_8064454 +sub_8064454: @ 8064454 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806447C @ =gUnknown_83A658C + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806446C + movs r4, 0 +_0806446C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806447C: .4byte gUnknown_83A658C + thumb_func_end sub_8064454 + + thumb_func_start sub_8064480 +sub_8064480: @ 8064480 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080644A4 @ =gUnknown_83A6591 + mov r0, sp + movs r2, 0x8 + bl memcpy + subs r1, r4, 0x1 + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0x7 + bhi _080644A8 + mov r2, sp + adds r0, r2, r1 + ldrb r0, [r0] + b _080644AA + .align 2, 0 +_080644A4: .4byte gUnknown_83A6591 +_080644A8: + adds r0, r4, 0 +_080644AA: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064480 + + thumb_func_start sub_80644B4 +sub_80644B4: @ 80644B4 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080644C8 @ =gUnknown_83A6599 + lsrs r0, 22 + subs r0, 0x5 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080644C8: .4byte gUnknown_83A6599 + thumb_func_end sub_80644B4 + + thumb_func_start sub_80644CC +sub_80644CC: @ 80644CC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + lsls r2, 24 + lsrs r2, 24 + cmp r1, 0 + beq _080644EC + cmp r2, 0 + beq _080644EC + cmp r1, 0x4 + bhi _080644EC + cmp r2, 0x4 + bls _080644F0 +_080644EC: + movs r0, 0 + b _08064502 +_080644F0: + adds r1, r2, 0 + bl sub_80644B4 + ldr r2, _08064508 @ =gUnknown_83A65A9 + lsls r1, r4, 2 + subs r1, 0x5 + adds r0, r1 + adds r0, r2 + ldrb r0, [r0] +_08064502: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064508: .4byte gUnknown_83A65A9 + thumb_func_end sub_80644CC + + thumb_func_start sub_806450C +sub_806450C: @ 806450C + push {r4,lr} + adds r4, r0, 0 + ldr r2, _08064540 @ =gUnknown_83A65BC + ldrb r0, [r4, 0x1C] + lsls r0, 2 + adds r0, r2 + movs r3, 0x32 + ldrsh r2, [r1, r3] + ldr r0, [r0] + lsls r2, 2 + adds r2, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + beq _08064538 + ldrb r0, [r4] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] +_08064538: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064540: .4byte gUnknown_83A65BC + thumb_func_end sub_806450C + + thumb_func_start sub_8064544 +sub_8064544: @ 8064544 + push {r4,lr} + adds r4, r0, 0 + ldr r2, _08064584 @ =gUnknown_83A65BC + ldrb r0, [r4, 0x1C] + lsls r0, 2 + adds r0, r2 + movs r3, 0x32 + ldrsh r2, [r1, r3] + ldr r0, [r0] + lsls r2, 2 + adds r2, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + beq _0806457C + ldrb r0, [r4] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r4, 0x5] + cmp r0, 0x61 + bne _0806457C + adds r0, r4, 0 + bl sub_806DE28 +_0806457C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064584: .4byte gUnknown_83A65BC + thumb_func_end sub_8064544 + + thumb_func_start sub_8064588 +sub_8064588: @ 8064588 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080645B4 @ =gUnknown_83A65BC + ldrb r0, [r4, 0x1C] + lsls r0, 2 + adds r0, r1 + movs r2, 0x32 + ldrsh r1, [r5, r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldr r2, [r1] + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _080645B8 + movs r0, 0 + b _080645C2 + .align 2, 0 +_080645B4: .4byte gUnknown_83A65BC +_080645B8: + movs r0, 0xFF + strb r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080645C2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064588 + + thumb_func_start sub_80645C8 +sub_80645C8: @ 80645C8 + push {r4,lr} + adds r3, r0, 0 + lsls r2, 24 + lsrs r4, r2, 24 + movs r0, 0 + strb r4, [r3, 0x1C] + strh r0, [r1, 0x32] + ldr r0, _080645F0 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x2 + bne _080645EA + ldrb r0, [r3, 0x8] + ldrb r1, [r3, 0x9] + ldrb r2, [r3, 0xA] + adds r3, r4, 0 + bl sub_81124EC +_080645EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080645F0: .4byte gUnknown_3005E88 + thumb_func_end sub_80645C8 + + thumb_func_start sub_80645F4 +sub_80645F4: @ 80645F4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + bl sub_805FBDC + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063440 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806359C + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80645F4 + + thumb_func_start sub_8064638 +sub_8064638: @ 8064638 + push {lr} + movs r2, 0x1 + bl sub_80645F4 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064638 + + thumb_func_start sub_8064648 +sub_8064648: @ 8064648 + push {lr} + movs r2, 0x2 + bl sub_80645F4 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064648 + + thumb_func_start sub_8064658 +sub_8064658: @ 8064658 + push {lr} + movs r2, 0x3 + bl sub_80645F4 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064658 + + thumb_func_start sub_8064668 +sub_8064668: @ 8064668 + push {lr} + movs r2, 0x4 + bl sub_80645F4 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064668 + + thumb_func_start sub_8064678 +sub_8064678: @ 8064678 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r8, r0 + mov r9, r1 + adds r4, r2, 0 + adds r6, r3, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + ldrh r1, [r0, 0x10] + mov r0, sp + strh r1, [r0] + mov r1, r8 + ldrh r0, [r1, 0x12] + mov r5, sp + adds r5, 0x2 + strh r0, [r5] + mov r0, r8 + adds r1, r4, 0 + bl sub_805FBDC + adds r0, r4, 0 + mov r1, sp + adds r2, r5, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + mov r0, r8 + bl sub_805F700 + mov r0, r9 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8068B40 + mov r2, r9 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x4 + orrs r0, r1 + mov r2, r8 + strb r0, [r2] + movs r0, 0x1 + mov r1, r9 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8064678 + + thumb_func_start sub_80646FC +sub_80646FC: @ 80646FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r5, r0, 0 + mov r8, r1 + adds r4, r3, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r4, 24 + lsrs r4, 24 + mov r1, sp + ldr r0, _08064754 @ =gUnknown_83A6884 + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldm r0!, {r3,r6} + stm r1!, {r3,r6} + adds r0, r5, 0 + mov r1, r8 + adds r3, r4, 0 + bl sub_8064678 + lsls r4, 2 + mov r7, sp + adds r1, r7, r4 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + ldr r1, [r1] + bl _call_via_r1 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + mov r1, r8 + bl sub_8063554 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08064754: .4byte gUnknown_83A6884 + thumb_func_end sub_80646FC + + thumb_func_start sub_8064758 +sub_8064758: @ 8064758 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0x1 + bl sub_8064678 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063520 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064758 + + thumb_func_start sub_8064788 +sub_8064788: @ 8064788 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068B54 + lsls r0, 24 + cmp r0, 0 + bne _0806479E + movs r0, 0 + b _080647BA +_0806479E: + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_080647BA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064788 + + thumb_func_start sub_80647C0 +sub_80647C0: @ 80647C0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_805FBDC + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl sub_805F700 + mov r0, r8 + adds r1, r5, 0 + bl sub_8068BBC + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80647C0 + + thumb_func_start sub_8064830 +sub_8064830: @ 8064830 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_80647C0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063440 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064830 + + thumb_func_start sub_806485C +sub_806485C: @ 806485C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068BCC + lsls r0, 24 + cmp r0, 0 + bne _08064872 + movs r0, 0 + b _0806488E +_08064872: + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_0806488E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806485C + + thumb_func_start sub_8064894 +sub_8064894: @ 8064894 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_805FBDC + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl sub_805F700 + mov r0, r8 + adds r1, r5, 0 + bl sub_8068C58 + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8064894 + + thumb_func_start sub_8064904 +sub_8064904: @ 8064904 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8064894 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063440 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064904 + + thumb_func_start sub_8064930 +sub_8064930: @ 8064930 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068C68 + lsls r0, 24 + cmp r0, 0 + bne _08064946 + movs r0, 0 + b _08064962 +_08064946: + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08064962: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064930 + + thumb_func_start sub_8064968 +sub_8064968: @ 8064968 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064988 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064968 + + thumb_func_start sub_8064988 +sub_8064988: @ 8064988 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _0806499A + movs r0, 0 + b _080649A0 +_0806499A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080649A0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064988 + + thumb_func_start sub_80649A8 +sub_80649A8: @ 80649A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80649C8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80649A8 + + thumb_func_start sub_80649C8 +sub_80649C8: @ 80649C8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _080649DA + movs r0, 0 + b _080649E0 +_080649DA: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080649E0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80649C8 + + thumb_func_start sub_80649E8 +sub_80649E8: @ 80649E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064A08 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80649E8 + + thumb_func_start sub_8064A08 +sub_8064A08: @ 8064A08 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _08064A1A + movs r0, 0 + b _08064A20 +_08064A1A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064A20: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064A08 + + thumb_func_start sub_8064A28 +sub_8064A28: @ 8064A28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064A48 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064A28 + + thumb_func_start sub_8064A48 +sub_8064A48: @ 8064A48 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _08064A5A + movs r0, 0 + b _08064A60 +_08064A5A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064A60: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064A48 + + thumb_func_start sub_8064A68 +sub_8064A68: @ 8064A68 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064A88 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064A68 + + thumb_func_start sub_8064A88 +sub_8064A88: @ 8064A88 + push {r4,lr} + adds r4, r1, 0 + bl sub_806485C + lsls r0, 24 + cmp r0, 0 + bne _08064A9A + movs r0, 0 + b _08064AA0 +_08064A9A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064AA0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064A88 + + thumb_func_start sub_8064AA8 +sub_8064AA8: @ 8064AA8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064AC8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064AA8 + + thumb_func_start sub_8064AC8 +sub_8064AC8: @ 8064AC8 + push {r4,lr} + adds r4, r1, 0 + bl sub_806485C + lsls r0, 24 + cmp r0, 0 + bne _08064ADA + movs r0, 0 + b _08064AE0 +_08064ADA: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064AE0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064AC8 + + thumb_func_start sub_8064AE8 +sub_8064AE8: @ 8064AE8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064B08 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064AE8 + + thumb_func_start sub_8064B08 +sub_8064B08: @ 8064B08 + push {r4,lr} + adds r4, r1, 0 + bl sub_806485C + lsls r0, 24 + cmp r0, 0 + bne _08064B1A + movs r0, 0 + b _08064B20 +_08064B1A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064B20: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064B08 + + thumb_func_start sub_8064B28 +sub_8064B28: @ 8064B28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064B48 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064B28 + + thumb_func_start sub_8064B48 +sub_8064B48: @ 8064B48 + push {r4,lr} + adds r4, r1, 0 + bl sub_806485C + lsls r0, 24 + cmp r0, 0 + bne _08064B5A + movs r0, 0 + b _08064B60 +_08064B5A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064B60: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064B48 + + thumb_func_start sub_8064B68 +sub_8064B68: @ 8064B68 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_805FBDC + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl sub_805F700 + mov r0, r8 + adds r1, r5, 0 + bl sub_8068C08 + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8064B68 + + thumb_func_start sub_8064BD8 +sub_8064BD8: @ 8064BD8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8064B68 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063440 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064BD8 + + thumb_func_start sub_8064C04 +sub_8064C04: @ 8064C04 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068C18 + lsls r0, 24 + cmp r0, 0 + bne _08064C1A + movs r0, 0 + b _08064C36 +_08064C1A: + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08064C36: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064C04 + + thumb_func_start sub_8064C3C +sub_8064C3C: @ 8064C3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064C5C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064C3C + + thumb_func_start sub_8064C5C +sub_8064C5C: @ 8064C5C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064C6E + movs r0, 0 + b _08064C74 +_08064C6E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064C74: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064C5C + + thumb_func_start sub_8064C7C +sub_8064C7C: @ 8064C7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064C9C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064C7C + + thumb_func_start sub_8064C9C +sub_8064C9C: @ 8064C9C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064CAE + movs r0, 0 + b _08064CB4 +_08064CAE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064CB4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064C9C + + thumb_func_start sub_8064CBC +sub_8064CBC: @ 8064CBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064CDC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064CBC + + thumb_func_start sub_8064CDC +sub_8064CDC: @ 8064CDC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064CEE + movs r0, 0 + b _08064CF4 +_08064CEE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064CF4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064CDC + + thumb_func_start sub_8064CFC +sub_8064CFC: @ 8064CFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064D1C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064CFC + + thumb_func_start sub_8064D1C +sub_8064D1C: @ 8064D1C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064D2E + movs r0, 0 + b _08064D34 +_08064D2E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064D34: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064D1C + + thumb_func_start sub_8064D3C +sub_8064D3C: @ 8064D3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064D5C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064D3C + + thumb_func_start sub_8064D5C +sub_8064D5C: @ 8064D5C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08064D6E + movs r0, 0 + b _08064D74 +_08064D6E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064D74: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064D5C + + thumb_func_start sub_8064D7C +sub_8064D7C: @ 8064D7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064D9C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064D7C + + thumb_func_start sub_8064D9C +sub_8064D9C: @ 8064D9C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08064DAE + movs r0, 0 + b _08064DB4 +_08064DAE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064DB4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064D9C + + thumb_func_start sub_8064DBC +sub_8064DBC: @ 8064DBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064DDC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064DBC + + thumb_func_start sub_8064DDC +sub_8064DDC: @ 8064DDC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08064DEE + movs r0, 0 + b _08064DF4 +_08064DEE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064DF4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064DDC + + thumb_func_start sub_8064DFC +sub_8064DFC: @ 8064DFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064E1C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064DFC + + thumb_func_start sub_8064E1C +sub_8064E1C: @ 8064E1C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08064E2E + movs r0, 0 + b _08064E34 +_08064E2E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064E34: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064E1C + + thumb_func_start sub_8064E3C +sub_8064E3C: @ 8064E3C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r7, r0, 0 + mov r10, r1 + adds r4, r2, 0 + mov r8, r3 + ldr r0, [sp, 0x30] + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _08064EF4 @ =gUnknown_83A6958 + add r0, sp, 0x4 + movs r2, 0x6 + bl memcpy + add r5, sp, 0xC + movs r0, 0 + strh r0, [r5] + mov r6, sp + adds r6, 0xE + strh r0, [r6] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_805FBDC + mov r1, r8 + lsls r0, r1, 1 + add r0, sp + adds r0, 0x4 + movs r1, 0 + ldrsh r3, [r0, r1] + str r3, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8063A6C + ldrh r1, [r5] + ldrh r0, [r7, 0x10] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r6] + ldrh r0, [r7, 0x12] + adds r2, r0 + lsls r2, 16 + asrs r2, 16 + adds r0, r7, 0 + bl sub_805F700 + mov r0, r10 + adds r1, r4, 0 + mov r2, r8 + mov r3, r9 + bl sub_8068D1C + movs r0, 0x1 + mov r1, r10 + strh r0, [r1, 0x32] + movs r0, 0x2C + add r10, r0 + mov r0, r10 + ldrb r1, [r0] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + mov r1, r10 + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r7] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08064EF4: .4byte gUnknown_83A6958 + thumb_func_end sub_8064E3C + + thumb_func_start sub_8064EF8 +sub_8064EF8: @ 8064EF8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [sp, 0x10] + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + adds r0, r4, 0 + bl sub_8064E3C + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063440 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + adds r0, r4, 0 + bl sub_80692F0 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064EF8 + + thumb_func_start sub_8064F3C +sub_8064F3C: @ 8064F3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r6, r0, 0 + adds r7, r1, 0 + adds r4, r2, 0 + ldr r1, _08064FC8 @ =gUnknown_83A695E + add r0, sp, 0x4 + movs r2, 0x6 + bl memcpy + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x1 + bne _08064FCC + movs r1, 0x36 + ldrsh r0, [r7, r1] + lsls r0, 1 + add r0, sp + adds r0, 0x4 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + beq _08064FCC + add r4, sp, 0xC + movs r0, 0 + strh r0, [r4] + mov r5, sp + adds r5, 0xE + strh r0, [r5] + ldrb r0, [r6, 0x18] + lsrs r0, 4 + movs r2, 0x36 + ldrsh r1, [r7, r2] + lsls r1, 1 + add r1, sp + adds r1, 0x4 + movs r2, 0 + ldrsh r3, [r1, r2] + str r3, [sp] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8063A6C + ldrh r1, [r4] + ldrh r0, [r6, 0x10] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r5] + ldrh r0, [r6, 0x12] + adds r2, r0 + lsls r2, 16 + asrs r2, 16 + adds r0, r6, 0 + bl sub_805F700 + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r6] + b _08064FF0 + .align 2, 0 +_08064FC8: .4byte gUnknown_83A695E +_08064FCC: + mov r1, r8 + cmp r1, 0xFF + bne _08064FF0 + adds r0, r6, 0 + bl sub_805F818 + ldrb r0, [r6] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r6] + adds r2, r7, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] +_08064FF0: + mov r0, r8 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8064F3C + + thumb_func_start sub_8065000 +sub_8065000: @ 8065000 + push {lr} + ldr r2, _08065010 @ =sub_8068D3C + bl sub_8064F3C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08065010: .4byte sub_8068D3C + thumb_func_end sub_8065000 + + thumb_func_start sub_8065014 +sub_8065014: @ 8065014 + push {lr} + ldr r2, _08065024 @ =sub_8068DC4 + bl sub_8064F3C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08065024: .4byte sub_8068DC4 + thumb_func_end sub_8065014 + + thumb_func_start sub_8065028 +sub_8065028: @ 8065028 + push {lr} + bl sub_8065000 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0806503A + movs r0, 0 + b _0806503C +_0806503A: + movs r0, 0x1 +_0806503C: + pop {r1} + bx r1 + thumb_func_end sub_8065028 + + thumb_func_start sub_8065040 +sub_8065040: @ 8065040 + push {lr} + bl sub_8065014 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08065052 + movs r0, 0 + b _08065054 +_08065052: + movs r0, 0x1 +_08065054: + pop {r1} + bx r1 + thumb_func_end sub_8065040 + + thumb_func_start sub_8065058 +sub_8065058: @ 8065058 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065000 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08065072 + cmp r0, 0xFF + bne _0806509E + movs r0, 0x1 + b _080650A0 +_08065072: + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8064480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805FBDC + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063440 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806359C +_0806509E: + movs r0, 0 +_080650A0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065058 + + thumb_func_start sub_80650A8 +sub_80650A8: @ 80650A8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80650D4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80650A8 + + thumb_func_start sub_80650D4 +sub_80650D4: @ 80650D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080650E8 + movs r0, 0 + b _080650F8 +_080650E8: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080650F8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80650D4 + + thumb_func_start sub_8065100 +sub_8065100: @ 8065100 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806512C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065100 + + thumb_func_start sub_806512C +sub_806512C: @ 806512C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08065140 + movs r0, 0 + b _08065150 +_08065140: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08065150: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806512C + + thumb_func_start sub_8065158 +sub_8065158: @ 8065158 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x2 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065184 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065158 + + thumb_func_start sub_8065184 +sub_8065184: @ 8065184 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08065198 + movs r0, 0 + b _080651A8 +_08065198: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080651A8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065184 + + thumb_func_start sub_80651B0 +sub_80651B0: @ 80651B0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x2 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80651DC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80651B0 + + thumb_func_start sub_80651DC +sub_80651DC: @ 80651DC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080651F0 + movs r0, 0 + b _08065200 +_080651F0: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08065200: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80651DC + + thumb_func_start sub_8065208 +sub_8065208: @ 8065208 + movs r2, 0x1 + strh r2, [r0, 0x32] + strh r1, [r0, 0x34] + bx lr + thumb_func_end sub_8065208 + + thumb_func_start sub_8065210 +sub_8065210: @ 8065210 + push {lr} + ldrh r0, [r1, 0x34] + subs r0, 0x1 + strh r0, [r1, 0x34] + lsls r0, 16 + cmp r0, 0 + beq _08065222 + movs r0, 0 + b _08065228 +_08065222: + movs r0, 0x2 + strh r0, [r1, 0x32] + movs r0, 0x1 +_08065228: + pop {r1} + bx r1 + thumb_func_end sub_8065210 + + thumb_func_start sub_806522C +sub_806522C: @ 806522C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806522C + + thumb_func_start sub_806524C +sub_806524C: @ 806524C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806524C + + thumb_func_start sub_806526C +sub_806526C: @ 806526C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806526C + + thumb_func_start sub_806528C +sub_806528C: @ 806528C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806528C + + thumb_func_start sub_80652AC +sub_80652AC: @ 80652AC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x10 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80652AC + + thumb_func_start sub_80652CC +sub_80652CC: @ 80652CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80652EC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80652CC + + thumb_func_start sub_80652EC +sub_80652EC: @ 80652EC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080652FE + movs r0, 0 + b _08065304 +_080652FE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065304: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80652EC + + thumb_func_start sub_806530C +sub_806530C: @ 806530C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806532C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806530C + + thumb_func_start sub_806532C +sub_806532C: @ 806532C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806533E + movs r0, 0 + b _08065344 +_0806533E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065344: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806532C + + thumb_func_start sub_806534C +sub_806534C: @ 806534C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806536C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806534C + + thumb_func_start sub_806536C +sub_806536C: @ 806536C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806537E + movs r0, 0 + b _08065384 +_0806537E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065384: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806536C + + thumb_func_start sub_806538C +sub_806538C: @ 806538C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653AC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806538C + + thumb_func_start sub_80653AC +sub_80653AC: @ 80653AC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080653BE + movs r0, 0 + b _080653C4 +_080653BE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080653C4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80653AC + + thumb_func_start sub_80653CC +sub_80653CC: @ 80653CC + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + bl sub_8068B54 + lsls r0, 24 + cmp r0, 0 + bne _080653E0 + movs r0, 0 + b _080653F0 +_080653E0: + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x1 +_080653F0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80653CC + + thumb_func_start sub_80653F8 +sub_80653F8: @ 80653F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _0806541A + movs r0, 0x1 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_0806541A: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065438 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80653F8 + + thumb_func_start sub_8065438 +sub_8065438: @ 8065438 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8007824 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _08065456 + movs r0, 0 + b _0806545C +_08065456: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806545C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065438 + + thumb_func_start sub_8065464 +sub_8065464: @ 8065464 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x2 + beq _08065486 + movs r0, 0x2 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_08065486: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80654A4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065464 + + thumb_func_start sub_80654A4 +sub_80654A4: @ 80654A4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8007824 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _080654C2 + movs r0, 0 + b _080654C8 +_080654C2: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080654C8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80654A4 + + thumb_func_start sub_80654D0 +sub_80654D0: @ 80654D0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x3 + beq _080654F2 + movs r0, 0x3 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_080654F2: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065510 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80654D0 + + thumb_func_start sub_8065510 +sub_8065510: @ 8065510 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8007824 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _0806552E + movs r0, 0 + b _08065534 +_0806552E: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08065534: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065510 + + thumb_func_start sub_806553C +sub_806553C: @ 806553C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x4 + beq _0806555E + movs r0, 0x4 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_0806555E: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806557C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806553C + + thumb_func_start sub_806557C +sub_806557C: @ 806557C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8007824 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _0806559A + movs r0, 0 + b _080655A0 +_0806559A: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080655A0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806557C + + thumb_func_start sub_80655A8 +sub_80655A8: @ 80655A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + bl sub_805FBDC + adds r0, r4, 0 + bl sub_805F818 + adds r2, r5, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80655A8 + + thumb_func_start sub_80655D4 +sub_80655D4: @ 80655D4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _080655F6 + movs r0, 0x1 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_080655F6: + adds r0, r4, 0 + bl sub_8007824 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80655D4 + + thumb_func_start sub_8065610 +sub_8065610: @ 8065610 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x2 + beq _08065632 + movs r0, 0x2 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_08065632: + adds r0, r4, 0 + bl sub_8007824 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065610 + + thumb_func_start sub_806564C +sub_806564C: @ 806564C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x3 + beq _0806566E + movs r0, 0x3 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_0806566E: + adds r0, r4, 0 + bl sub_8007824 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x3 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806564C + + thumb_func_start sub_8065688 +sub_8065688: @ 8065688 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x4 + beq _080656AA + movs r0, 0x4 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_080656AA: + adds r0, r4, 0 + bl sub_8007824 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x4 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065688 + + thumb_func_start sub_80656C4 +sub_80656C4: @ 80656C4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r6, r1, 0 + adds r1, r2, 0 + adds r4, r3, 0 + ldr r5, [sp, 0x14] + lsls r1, 24 + lsrs r1, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + bl sub_805FBDC + mov r0, r8 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_8063554 + adds r2, r6, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r6, 0x32] + strh r5, [r6, 0x34] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80656C4 + + thumb_func_start sub_806570C +sub_806570C: @ 806570C + push {lr} + ldrh r0, [r1, 0x34] + subs r0, 0x1 + strh r0, [r1, 0x34] + lsls r0, 16 + cmp r0, 0 + beq _0806571E + movs r0, 0 + b _08065730 +_0806571E: + movs r0, 0x2 + strh r0, [r1, 0x32] + adds r2, r1, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08065730: + pop {r1} + bx r1 + thumb_func_end sub_806570C + + thumb_func_start sub_8065734 +sub_8065734: @ 8065734 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrh r1, [r4, 0x34] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806575E + adds r3, r4, 0 + adds r3, 0x2C + ldrb r2, [r3] + lsls r1, r2, 26 + lsrs r1, 26 + adds r1, 0x1 + movs r0, 0x3F + ands r1, r0 + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0806575E: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065734 + + thumb_func_start sub_8065770 +sub_8065770: @ 8065770 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065770 + + thumb_func_start sub_80657A8 +sub_80657A8: @ 80657A8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80657A8 + + thumb_func_start sub_80657E0 +sub_80657E0: @ 80657E0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80657E0 + + thumb_func_start sub_8065818 +sub_8065818: @ 8065818 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065818 + + thumb_func_start sub_8065850 +sub_8065850: @ 8065850 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065850 + + thumb_func_start sub_8065888 +sub_8065888: @ 8065888 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065888 + + thumb_func_start sub_80658C0 +sub_80658C0: @ 80658C0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80658C0 + + thumb_func_start sub_80658F8 +sub_80658F8: @ 80658F8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_8063440 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80658F8 + + thumb_func_start sub_8065930 +sub_8065930: @ 8065930 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_8063450 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065930 + + thumb_func_start sub_8065968 +sub_8065968: @ 8065968 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_8063450 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065968 + + thumb_func_start sub_80659A0 +sub_80659A0: @ 80659A0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_8063450 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80659A0 + + thumb_func_start sub_80659D8 +sub_80659D8: @ 80659D8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_8063450 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80659D8 + + thumb_func_start sub_8065A10 +sub_8065A10: @ 8065A10 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_8063460 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065A10 + + thumb_func_start sub_8065A48 +sub_8065A48: @ 8065A48 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_8063460 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065A48 + + thumb_func_start sub_8065A80 +sub_8065A80: @ 8065A80 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_8063460 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065A80 + + thumb_func_start sub_8065AB8 +sub_8065AB8: @ 8065AB8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_8063460 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065AB8 + + thumb_func_start sub_8065AF0 +sub_8065AF0: @ 8065AF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065B10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065AF0 + + thumb_func_start sub_8065B10 +sub_8065B10: @ 8065B10 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065B22 + movs r0, 0 + b _08065B28 +_08065B22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065B28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065B10 + + thumb_func_start sub_8065B30 +sub_8065B30: @ 8065B30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065B50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065B30 + + thumb_func_start sub_8065B50 +sub_8065B50: @ 8065B50 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065B62 + movs r0, 0 + b _08065B68 +_08065B62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065B68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065B50 + + thumb_func_start sub_8065B70 +sub_8065B70: @ 8065B70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x2 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065B90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065B70 + + thumb_func_start sub_8065B90 +sub_8065B90: @ 8065B90 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065BA2 + movs r0, 0 + b _08065BA8 +_08065BA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065BA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065B90 + + thumb_func_start sub_8065BB0 +sub_8065BB0: @ 8065BB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x2 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065BD0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065BB0 + + thumb_func_start sub_8065BD0 +sub_8065BD0: @ 8065BD0 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065BE2 + movs r0, 0 + b _08065BE8 +_08065BE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065BE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065BD0 + + thumb_func_start sub_8065BF0 +sub_8065BF0: @ 8065BF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065C10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065BF0 + + thumb_func_start sub_8065C10 +sub_8065C10: @ 8065C10 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065C22 + movs r0, 0 + b _08065C28 +_08065C22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065C28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065C10 + + thumb_func_start sub_8065C30 +sub_8065C30: @ 8065C30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065C50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065C30 + + thumb_func_start sub_8065C50 +sub_8065C50: @ 8065C50 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065C62 + movs r0, 0 + b _08065C68 +_08065C62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065C68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065C50 + + thumb_func_start sub_8065C70 +sub_8065C70: @ 8065C70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x3 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065C90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065C70 + + thumb_func_start sub_8065C90 +sub_8065C90: @ 8065C90 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065CA2 + movs r0, 0 + b _08065CA8 +_08065CA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065CA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065C90 + + thumb_func_start sub_8065CB0 +sub_8065CB0: @ 8065CB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x3 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065CD0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065CB0 + + thumb_func_start sub_8065CD0 +sub_8065CD0: @ 8065CD0 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065CE2 + movs r0, 0 + b _08065CE8 +_08065CE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065CE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065CD0 + + thumb_func_start sub_8065CF0 +sub_8065CF0: @ 8065CF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x4 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065D10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065CF0 + + thumb_func_start sub_8065D10 +sub_8065D10: @ 8065D10 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065D22 + movs r0, 0 + b _08065D28 +_08065D22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065D28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065D10 + + thumb_func_start sub_8065D30 +sub_8065D30: @ 8065D30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x4 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065D50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065D30 + + thumb_func_start sub_8065D50 +sub_8065D50: @ 8065D50 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065D62 + movs r0, 0 + b _08065D68 +_08065D62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065D68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065D50 + + thumb_func_start sub_8065D70 +sub_8065D70: @ 8065D70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x4 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065D90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065D70 + + thumb_func_start sub_8065D90 +sub_8065D90: @ 8065D90 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065DA2 + movs r0, 0 + b _08065DA8 +_08065DA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065DA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065D90 + + thumb_func_start sub_8065DB0 +sub_8065DB0: @ 8065DB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x4 + bl sub_80646FC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065DD0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065DB0 + + thumb_func_start sub_8065DD0 +sub_8065DD0: @ 8065DD0 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065DE2 + movs r0, 0 + b _08065DE8 +_08065DE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065DE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065DD0 + + thumb_func_start sub_8065DF0 +sub_8065DF0: @ 8065DF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064758 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065E10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065DF0 + + thumb_func_start sub_8065E10 +sub_8065E10: @ 8065E10 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065E22 + movs r0, 0 + b _08065E28 +_08065E22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065E28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065E10 + + thumb_func_start sub_8065E30 +sub_8065E30: @ 8065E30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064758 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065E50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065E30 + + thumb_func_start sub_8065E50 +sub_8065E50: @ 8065E50 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065E62 + movs r0, 0 + b _08065E68 +_08065E62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065E68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065E50 + + thumb_func_start sub_8065E70 +sub_8065E70: @ 8065E70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064758 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065E90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065E70 + + thumb_func_start sub_8065E90 +sub_8065E90: @ 8065E90 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065EA2 + movs r0, 0 + b _08065EA8 +_08065EA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065EA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065E90 + + thumb_func_start sub_8065EB0 +sub_8065EB0: @ 8065EB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064758 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065ED0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065EB0 + + thumb_func_start sub_8065ED0 +sub_8065ED0: @ 8065ED0 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08065EE2 + movs r0, 0 + b _08065EE8 +_08065EE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065EE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065ED0 + + thumb_func_start sub_8065EF0 +sub_8065EF0: @ 8065EF0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_805FBDC + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl sub_805F700 + mov r0, r8 + adds r1, r5, 0 + bl sub_8068CA4 + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8065EF0 + + thumb_func_start sub_8065F60 +sub_8065F60: @ 8065F60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8065EF0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063520 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8065F60 + + thumb_func_start sub_8065F8C +sub_8065F8C: @ 8065F8C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068CB4 + lsls r0, 24 + cmp r0, 0 + bne _08065FA2 + movs r0, 0 + b _08065FBE +_08065FA2: + adds r0, r4, 0 + bl sub_805F818 + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08065FBE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065F8C + + thumb_func_start sub_8065FC4 +sub_8065FC4: @ 8065FC4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065FE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065FC4 + + thumb_func_start sub_8065FE4 +sub_8065FE4: @ 8065FE4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _08065FF6 + movs r0, 0 + b _08065FFC +_08065FF6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065FFC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065FE4 + + thumb_func_start sub_8066004 +sub_8066004: @ 8066004 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066024 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066004 + + thumb_func_start sub_8066024 +sub_8066024: @ 8066024 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _08066036 + movs r0, 0 + b _0806603C +_08066036: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806603C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066024 + + thumb_func_start sub_8066044 +sub_8066044: @ 8066044 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066064 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066044 + + thumb_func_start sub_8066064 +sub_8066064: @ 8066064 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _08066076 + movs r0, 0 + b _0806607C +_08066076: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806607C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066064 + + thumb_func_start sub_8066084 +sub_8066084: @ 8066084 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80660A4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066084 + + thumb_func_start sub_80660A4 +sub_80660A4: @ 80660A4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _080660B6 + movs r0, 0 + b _080660BC +_080660B6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080660BC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80660A4 + + thumb_func_start sub_80660C4 +sub_80660C4: @ 80660C4 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + adds r1, r3, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + movs r2, 0 + bl sub_8068E74 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_805FBDC + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80660C4 + + thumb_func_start sub_80660F0 +sub_80660F0: @ 80660F0 + push {lr} + ldrb r2, [r0, 0x18] + lsrs r2, 4 + adds r3, r1, 0 + adds r3, 0x2A + ldrb r3, [r3] + bl sub_80660C4 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80660F0 + + thumb_func_start sub_8066108 +sub_8066108: @ 8066108 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E9C + lsls r0, 24 + cmp r0, 0 + bne _0806611C + movs r0, 0 + b _08066122 +_0806611C: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066122: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066108 + + thumb_func_start sub_8066128 +sub_8066128: @ 8066128 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + movs r1, 0 + str r1, [sp] + adds r1, r5, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8064E3C + adds r0, r4, 0 + bl sub_8063480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8066128 + + thumb_func_start sub_806615C +sub_806615C: @ 806615C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806617C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806615C + + thumb_func_start sub_806617C +sub_806617C: @ 806617C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _08066190 + movs r0, 0 + b _0806619E +_08066190: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_0806619E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806617C + + thumb_func_start sub_80661A4 +sub_80661A4: @ 80661A4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80661C4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80661A4 + + thumb_func_start sub_80661C4 +sub_80661C4: @ 80661C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _080661D8 + movs r0, 0 + b _080661E6 +_080661D8: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_080661E6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80661C4 + + thumb_func_start sub_80661EC +sub_80661EC: @ 80661EC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806620C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80661EC + + thumb_func_start sub_806620C +sub_806620C: @ 806620C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _08066220 + movs r0, 0 + b _0806622E +_08066220: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_0806622E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806620C + + thumb_func_start sub_8066234 +sub_8066234: @ 8066234 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066254 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066234 + + thumb_func_start sub_8066254 +sub_8066254: @ 8066254 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _08066268 + movs r0, 0 + b _08066276 +_08066268: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_08066276: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066254 + + thumb_func_start sub_806627C +sub_806627C: @ 806627C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806629C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806627C + + thumb_func_start sub_806629C +sub_806629C: @ 806629C + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _080662AE + movs r0, 0 + b _080662B4 +_080662AE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080662B4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806629C + + thumb_func_start sub_80662BC +sub_80662BC: @ 80662BC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80662DC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80662BC + + thumb_func_start sub_80662DC +sub_80662DC: @ 80662DC + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _080662EE + movs r0, 0 + b _080662F4 +_080662EE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080662F4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80662DC + + thumb_func_start sub_80662FC +sub_80662FC: @ 80662FC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806631C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80662FC + + thumb_func_start sub_806631C +sub_806631C: @ 806631C + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _0806632E + movs r0, 0 + b _08066334 +_0806632E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066334: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806631C + + thumb_func_start sub_806633C +sub_806633C: @ 806633C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806635C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806633C + + thumb_func_start sub_806635C +sub_806635C: @ 806635C + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _0806636E + movs r0, 0 + b _08066374 +_0806636E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066374: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806635C + + thumb_func_start sub_806637C +sub_806637C: @ 806637C + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080663C6 + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + ldr r4, _080663D4 @ =gUnknown_2036E38 + mov r2, sp + ldrb r2, [r2] + lsls r3, r2, 3 + adds r3, r2 + lsls r3, 2 + adds r3, r4 + movs r4, 0x10 + ldrsh r2, [r3, r4] + movs r4, 0x12 + ldrsh r3, [r3, r4] + bl sub_80635DC + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80645F4 +_080663C6: + movs r0, 0x1 + strh r0, [r6, 0x32] + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080663D4: .4byte gUnknown_2036E38 + thumb_func_end sub_806637C + + thumb_func_start sub_80663D8 +sub_80663D8: @ 80663D8 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0806642A + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + ldr r4, _08066438 @ =gUnknown_2036E38 + mov r2, sp + ldrb r2, [r2] + lsls r3, r2, 3 + adds r3, r2 + lsls r3, 2 + adds r3, r4 + movs r4, 0x10 + ldrsh r2, [r3, r4] + movs r4, 0x12 + ldrsh r3, [r3, r4] + bl sub_80635DC + lsls r0, 24 + lsrs r0, 24 + bl sub_8064480 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80645F4 +_0806642A: + movs r0, 0x1 + strh r0, [r6, 0x32] + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08066438: .4byte gUnknown_2036E38 + thumb_func_end sub_80663D8 + + thumb_func_start sub_806643C +sub_806643C: @ 806643C + ldrb r2, [r0, 0x1] + movs r3, 0x2 + orrs r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_806643C + + thumb_func_start sub_806644C +sub_806644C: @ 806644C + ldrb r3, [r0, 0x1] + movs r2, 0x3 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_806644C + + thumb_func_start sub_806645C +sub_806645C: @ 806645C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066488 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806645C + + thumb_func_start sub_8066488 +sub_8066488: @ 8066488 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806649C + movs r0, 0 + b _080664AC +_0806649C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080664AC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066488 + + thumb_func_start sub_80664B4 +sub_80664B4: @ 80664B4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80664E0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80664B4 + + thumb_func_start sub_80664E0 +sub_80664E0: @ 80664E0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080664F4 + movs r0, 0 + b _08066504 +_080664F4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066504: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80664E0 + + thumb_func_start sub_806650C +sub_806650C: @ 806650C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066538 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806650C + + thumb_func_start sub_8066538 +sub_8066538: @ 8066538 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806654C + movs r0, 0 + b _0806655C +_0806654C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806655C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066538 + + thumb_func_start sub_8066564 +sub_8066564: @ 8066564 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066590 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066564 + + thumb_func_start sub_8066590 +sub_8066590: @ 8066590 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080665A4 + movs r0, 0 + b _080665B4 +_080665A4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080665B4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066590 + + thumb_func_start sub_80665BC +sub_80665BC: @ 80665BC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80665E8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80665BC + + thumb_func_start sub_80665E8 +sub_80665E8: @ 80665E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080665FC + movs r0, 0 + b _0806660C +_080665FC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806660C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80665E8 + + thumb_func_start sub_8066614 +sub_8066614: @ 8066614 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066640 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066614 + + thumb_func_start sub_8066640 +sub_8066640: @ 8066640 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066654 + movs r0, 0 + b _08066664 +_08066654: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066664: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066640 + + thumb_func_start sub_806666C +sub_806666C: @ 806666C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066698 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806666C + + thumb_func_start sub_8066698 +sub_8066698: @ 8066698 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080666AC + movs r0, 0 + b _080666BC +_080666AC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080666BC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066698 + + thumb_func_start sub_80666C4 +sub_80666C4: @ 80666C4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80666F0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80666C4 + + thumb_func_start sub_80666F0 +sub_80666F0: @ 80666F0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066704 + movs r0, 0 + b _08066714 +_08066704: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066714: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80666F0 + + thumb_func_start sub_806671C +sub_806671C: @ 806671C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066748 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806671C + + thumb_func_start sub_8066748 +sub_8066748: @ 8066748 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _0806675C + movs r0, 0 + b _0806676C +_0806675C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806676C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066748 + + thumb_func_start sub_8066774 +sub_8066774: @ 8066774 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80667A0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066774 + + thumb_func_start sub_80667A0 +sub_80667A0: @ 80667A0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _080667B4 + movs r0, 0 + b _080667C4 +_080667B4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080667C4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80667A0 + + thumb_func_start sub_80667CC +sub_80667CC: @ 80667CC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80667F8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80667CC + + thumb_func_start sub_80667F8 +sub_80667F8: @ 80667F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _0806680C + movs r0, 0 + b _0806681C +_0806680C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806681C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80667F8 + + thumb_func_start sub_8066824 +sub_8066824: @ 8066824 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0 + bl sub_8064EF8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066850 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066824 + + thumb_func_start sub_8066850 +sub_8066850: @ 8066850 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _08066864 + movs r0, 0 + b _08066874 +_08066864: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066874: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066850 + + thumb_func_start sub_806687C +sub_806687C: @ 806687C + push {lr} + ldr r3, _08066890 @ =gUnknown_839FD5D + ldrb r2, [r0, 0x6] + adds r2, r3 + ldrb r2, [r2] + bl sub_80645F4 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08066890: .4byte gUnknown_839FD5D + thumb_func_end sub_806687C + + thumb_func_start sub_8066894 +sub_8066894: @ 8066894 + push {lr} + movs r2, 0x1 + movs r3, 0x14 + bl sub_80660C4 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8066894 + + thumb_func_start sub_80668A4 +sub_80668A4: @ 80668A4 + ldrb r3, [r0, 0x3] + movs r2, 0x3 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_80668A4 + + thumb_func_start sub_80668B4 +sub_80668B4: @ 80668B4 + ldrb r2, [r0, 0x3] + movs r3, 0x2 + orrs r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_80668B4 + + thumb_func_start sub_80668C4 +sub_80668C4: @ 80668C4 + ldrb r2, [r0, 0x1] + movs r3, 0x10 + orrs r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_80668C4 + + thumb_func_start sub_80668D4 +sub_80668D4: @ 80668D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl sub_805F2C8 + ldrb r1, [r0, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r4, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80668D4 + + thumb_func_start sub_8066900 +sub_8066900: @ 8066900 + ldrb r2, [r0, 0x1] + movs r3, 0x20 + orrs r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066900 + + thumb_func_start sub_8066910 +sub_8066910: @ 8066910 + ldrb r3, [r0, 0x1] + movs r2, 0x21 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066910 + + thumb_func_start sub_8066920 +sub_8066920: @ 8066920 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _08066940 @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl sub_805F364 + movs r0, 0 + bl sub_8083444 + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08066940: .4byte gUnknown_20386E0 + thumb_func_end sub_8066920 + + thumb_func_start sub_8066944 +sub_8066944: @ 8066944 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _08066964 @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl sub_805F364 + movs r0, 0x21 + bl sub_8083444 + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08066964: .4byte gUnknown_20386E0 + thumb_func_end sub_8066944 + + thumb_func_start sub_8066968 +sub_8066968: @ 8066968 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _08066988 @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl sub_805F364 + movs r0, 0x2E + bl sub_8083444 + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08066988: .4byte gUnknown_20386E0 + thumb_func_end sub_8066968 + + thumb_func_start sub_806698C +sub_806698C: @ 806698C + push {r4,lr} + adds r4, r1, 0 + ldr r1, _080669AC @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl sub_805F364 + movs r0, 0x42 + bl sub_8083444 + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080669AC: .4byte gUnknown_20386E0 + thumb_func_end sub_806698C + + thumb_func_start sub_80669B0 +sub_80669B0: @ 80669B0 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _080669D0 @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl sub_805F364 + movs r0, 0x40 + bl sub_8083444 + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080669D0: .4byte gUnknown_20386E0 + thumb_func_end sub_80669B0 + + thumb_func_start sub_80669D4 +sub_80669D4: @ 80669D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x6] + cmp r0, 0x3F + bne _080669EA + adds r0, r4, 0 + bl sub_80824EC + movs r0, 0 + b _08066A12 +_080669EA: + subs r0, 0x39 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08066A0C + adds r0, r4, 0 + bl sub_80DCBB8 + movs r0, 0x1 + strh r0, [r5, 0x32] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066A18 + lsls r0, 24 + lsrs r0, 24 + b _08066A12 +_08066A0C: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066A12: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80669D4 + + thumb_func_start sub_8066A18 +sub_8066A18: @ 8066A18 + push {r4,lr} + adds r4, r1, 0 + bl sub_80DCBE0 + lsls r0, 24 + cmp r0, 0 + bne _08066A2A + movs r0, 0 + b _08066A30 +_08066A2A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066A30: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066A18 + + thumb_func_start sub_8066A38 +sub_8066A38: @ 8066A38 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8068E74 + movs r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066A38 + + thumb_func_start sub_8066A54 +sub_8066A54: @ 8066A54 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E9C + lsls r0, 24 + cmp r0, 0 + beq _08066A70 + adds r0, r4, 0 + movs r1, 0x20 + bl sub_8068E58 + movs r0, 0x2 + strh r0, [r4, 0x32] +_08066A70: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066A54 + + thumb_func_start sub_8066A78 +sub_8066A78: @ 8066A78 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r2, [r4, 0x1] + lsls r1, r2, 26 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 5 + subs r0, 0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + beq _08066AAA + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x3 + strh r0, [r5, 0x32] +_08066AAA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066A78 + + thumb_func_start sub_8066AB4 +sub_8066AB4: @ 8066AB4 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8068E74 + movs r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066AB4 + + thumb_func_start sub_8066AD0 +sub_8066AD0: @ 8066AD0 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E9C + lsls r0, 24 + cmp r0, 0 + beq _08066AEC + adds r0, r4, 0 + movs r1, 0x20 + bl sub_8068E58 + movs r0, 0x2 + strh r0, [r4, 0x32] +_08066AEC: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066AD0 + + thumb_func_start sub_8066AF4 +sub_8066AF4: @ 8066AF4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r2, [r4, 0x1] + lsls r1, r2, 26 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 5 + subs r0, 0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r5, 0 + bl sub_8068E5C + lsls r0, 24 + cmp r0, 0 + beq _08066B26 + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x3 + strh r0, [r5, 0x32] +_08066B26: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066AF4 + + thumb_func_start sub_8066B30 +sub_8066B30: @ 8066B30 + ldrb r2, [r0, 0x3] + movs r3, 0x4 + orrs r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066B30 + + thumb_func_start sub_8066B40 +sub_8066B40: @ 8066B40 + ldrb r3, [r0, 0x3] + movs r2, 0x5 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066B40 + + thumb_func_start sub_8066B50 +sub_8066B50: @ 8066B50 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r4, 0 + bl sub_800860C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + adds r4, 0x42 + ldrb r1, [r4] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066B50 + + thumb_func_start sub_8066B80 +sub_8066B80: @ 8066B80 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r0, [r4, 0x1] + movs r1, 0x4 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x1] + lsrs r1, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + movs r3, 0 + adds r0, r4, 0 + bl sub_80073F0 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066B80 + + thumb_func_start sub_8066BB0 +sub_8066BB0: @ 8066BB0 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8064830 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0 + bl sub_8008468 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8066BE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066BB0 + + thumb_func_start sub_8066BE4 +sub_8066BE4: @ 8066BE4 + push {r4,lr} + adds r4, r1, 0 + bl sub_806485C + lsls r0, 24 + cmp r0, 0 + bne _08066BF6 + movs r0, 0 + b _08066C08 +_08066BF6: + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066C08: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066BE4 + + thumb_func_start sub_8066C10 +sub_8066C10: @ 8066C10 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8064830 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80084D4 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8066C44 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066C10 + + thumb_func_start sub_8066C44 +sub_8066C44: @ 8066C44 + push {r4,lr} + adds r4, r1, 0 + bl sub_806485C + lsls r0, 24 + cmp r0, 0 + bne _08066C56 + movs r0, 0 + b _08066C68 +_08066C56: + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066C68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066C44 + + thumb_func_start sub_8066C70 +sub_8066C70: @ 8066C70 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + adds r1, r4, 0 + bl sub_805FBDC + adds r0, r5, 0 + bl sub_805F818 + adds r0, r4, 0 + bl sub_80634E0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_806359C + adds r2, r6, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r6, 0x32] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8066C70 + + thumb_func_start sub_8066CB0 +sub_8066CB0: @ 8066CB0 + push {lr} + movs r2, 0x1 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CB0 + + thumb_func_start sub_8066CC0 +sub_8066CC0: @ 8066CC0 + push {lr} + movs r2, 0x2 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CC0 + + thumb_func_start sub_8066CD0 +sub_8066CD0: @ 8066CD0 + push {lr} + movs r2, 0x3 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CD0 + + thumb_func_start sub_8066CE0 +sub_8066CE0: @ 8066CE0 + push {lr} + movs r2, 0x4 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CE0 + + thumb_func_start sub_8066CF0 +sub_8066CF0: @ 8066CF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066CF0 + + thumb_func_start sub_8066D14 +sub_8066D14: @ 8066D14 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D14 + + thumb_func_start sub_8066D38 +sub_8066D38: @ 8066D38 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D38 + + thumb_func_start sub_8066D5C +sub_8066D5C: @ 8066D5C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D5C + + thumb_func_start sub_8066D80 +sub_8066D80: @ 8066D80 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D80 + + thumb_func_start sub_8066DA4 +sub_8066DA4: @ 8066DA4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066DA4 + + thumb_func_start sub_8066DC8 +sub_8066DC8: @ 8066DC8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066DC8 + + thumb_func_start sub_8066DEC +sub_8066DEC: @ 8066DEC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066DEC + + thumb_func_start sub_8066E10 +sub_8066E10: @ 8066E10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E10 + + thumb_func_start sub_8066E34 +sub_8066E34: @ 8066E34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E34 + + thumb_func_start sub_8066E58 +sub_8066E58: @ 8066E58 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E58 + + thumb_func_start sub_8066E7C +sub_8066E7C: @ 8066E7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80660C4 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E7C + + thumb_func_start sub_8066EA0 +sub_8066EA0: @ 8066EA0 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + ldr r0, [sp, 0x14] + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + adds r0, r6, 0 + adds r2, r4, 0 + bl sub_8064E3C + adds r0, r4, 0 + bl sub_8063490 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_80083A4 + adds r0, r6, 0 + bl sub_80692F0 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8066EA0 + + thumb_func_start sub_8066EE4 +sub_8066EE4: @ 8066EE4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066F10 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066EE4 + + thumb_func_start sub_8066F10 +sub_8066F10: @ 8066F10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066F24 + movs r0, 0 + b _08066F34 +_08066F24: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066F34: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F10 + + thumb_func_start sub_8066F3C +sub_8066F3C: @ 8066F3C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066F68 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F3C + + thumb_func_start sub_8066F68 +sub_8066F68: @ 8066F68 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066F7C + movs r0, 0 + b _08066F8C +_08066F7C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066F8C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F68 + + thumb_func_start sub_8066F94 +sub_8066F94: @ 8066F94 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066FC0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F94 + + thumb_func_start sub_8066FC0 +sub_8066FC0: @ 8066FC0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066FD4 + movs r0, 0 + b _08066FE4 +_08066FD4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066FE4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066FC0 + + thumb_func_start sub_8066FEC +sub_8066FEC: @ 8066FEC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067018 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066FEC + + thumb_func_start sub_8067018 +sub_8067018: @ 8067018 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806702C + movs r0, 0 + b _0806703C +_0806702C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806703C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067018 + + thumb_func_start sub_8067044 +sub_8067044: @ 8067044 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067070 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067044 + + thumb_func_start sub_8067070 +sub_8067070: @ 8067070 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08067084 + movs r0, 0 + b _08067094 +_08067084: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08067094: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067070 + + thumb_func_start sub_806709C +sub_806709C: @ 806709C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80670C8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806709C + + thumb_func_start sub_80670C8 +sub_80670C8: @ 80670C8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080670DC + movs r0, 0 + b _080670EC +_080670DC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080670EC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80670C8 + + thumb_func_start sub_80670F4 +sub_80670F4: @ 80670F4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067120 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80670F4 + + thumb_func_start sub_8067120 +sub_8067120: @ 8067120 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08067134 + movs r0, 0 + b _08067144 +_08067134: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08067144: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067120 + + thumb_func_start sub_806714C +sub_806714C: @ 806714C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067178 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806714C + + thumb_func_start sub_8067178 +sub_8067178: @ 8067178 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806718C + movs r0, 0 + b _0806719C +_0806718C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806719C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067178 + + thumb_func_start sub_80671A4 +sub_80671A4: @ 80671A4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80671D0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80671A4 + + thumb_func_start sub_80671D0 +sub_80671D0: @ 80671D0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080671E4 + movs r0, 0 + b _080671F4 +_080671E4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080671F4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80671D0 + + thumb_func_start sub_80671FC +sub_80671FC: @ 80671FC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067228 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80671FC + + thumb_func_start sub_8067228 +sub_8067228: @ 8067228 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806723C + movs r0, 0 + b _0806724C +_0806723C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806724C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067228 + + thumb_func_start sub_8067254 +sub_8067254: @ 8067254 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067280 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067254 + + thumb_func_start sub_8067280 +sub_8067280: @ 8067280 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08067294 + movs r0, 0 + b _080672A4 +_08067294: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080672A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067280 + + thumb_func_start sub_80672AC +sub_80672AC: @ 80672AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80672D8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80672AC + + thumb_func_start sub_80672D8 +sub_80672D8: @ 80672D8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080672EC + movs r0, 0 + b _080672FC +_080672EC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080672FC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80672D8 + + thumb_func_start sub_8067304 +sub_8067304: @ 8067304 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067304 + + thumb_func_start sub_806733C +sub_806733C: @ 806733C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806733C + + thumb_func_start sub_8067374 +sub_8067374: @ 8067374 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067374 + + thumb_func_start sub_80673AC +sub_80673AC: @ 80673AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80673AC + + thumb_func_start sub_80673E4 +sub_80673E4: @ 80673E4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_8064678 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063490 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + adds r0, r4, 0 + movs r1, 0 + bl sub_80083C0 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80673E4 + + thumb_func_start sub_806741C +sub_806741C: @ 806741C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806743C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806741C + + thumb_func_start sub_806743C +sub_806743C: @ 806743C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806744E + movs r0, 0 + b _08067454 +_0806744E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067454: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806743C + + thumb_func_start sub_806745C +sub_806745C: @ 806745C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806747C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806745C + + thumb_func_start sub_806747C +sub_806747C: @ 806747C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806748E + movs r0, 0 + b _08067494 +_0806748E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067494: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806747C + + thumb_func_start sub_806749C +sub_806749C: @ 806749C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80674BC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806749C + + thumb_func_start sub_80674BC +sub_80674BC: @ 80674BC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080674CE + movs r0, 0 + b _080674D4 +_080674CE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080674D4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80674BC + + thumb_func_start sub_80674DC +sub_80674DC: @ 80674DC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80674FC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80674DC + + thumb_func_start sub_80674FC +sub_80674FC: @ 80674FC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806750E + movs r0, 0 + b _08067514 +_0806750E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067514: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80674FC + + thumb_func_start sub_806751C +sub_806751C: @ 806751C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_8064678 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80634E0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806751C + + thumb_func_start sub_806754C +sub_806754C: @ 806754C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806756C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806754C + + thumb_func_start sub_806756C +sub_806756C: @ 806756C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806757E + movs r0, 0 + b _08067584 +_0806757E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067584: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806756C + + thumb_func_start sub_806758C +sub_806758C: @ 806758C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80675AC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806758C + + thumb_func_start sub_80675AC +sub_80675AC: @ 80675AC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080675BE + movs r0, 0 + b _080675C4 +_080675BE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080675C4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80675AC + + thumb_func_start sub_80675CC +sub_80675CC: @ 80675CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80675EC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80675CC + + thumb_func_start sub_80675EC +sub_80675EC: @ 80675EC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080675FE + movs r0, 0 + b _08067604 +_080675FE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067604: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80675EC + + thumb_func_start sub_806760C +sub_806760C: @ 806760C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806762C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806760C + + thumb_func_start sub_806762C +sub_806762C: @ 806762C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _0806763E + movs r0, 0 + b _08067644 +_0806763E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067644: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806762C + + thumb_func_start sub_806764C +sub_806764C: @ 806764C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_8064678 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80634C0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8063554 + adds r0, r5, 0 + movs r1, 0 + bl sub_80083C0 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806764C + + thumb_func_start sub_8067684 +sub_8067684: @ 8067684 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80676A4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067684 + + thumb_func_start sub_80676A4 +sub_80676A4: @ 80676A4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080676B6 + movs r0, 0 + b _080676BC +_080676B6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080676BC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80676A4 + + thumb_func_start sub_80676C4 +sub_80676C4: @ 80676C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80676E4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80676C4 + + thumb_func_start sub_80676E4 +sub_80676E4: @ 80676E4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _080676F6 + movs r0, 0 + b _080676FC +_080676F6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080676FC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80676E4 + + thumb_func_start sub_8067704 +sub_8067704: @ 8067704 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067724 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067704 + + thumb_func_start sub_8067724 +sub_8067724: @ 8067724 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08067736 + movs r0, 0 + b _0806773C +_08067736: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806773C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8067724 + + thumb_func_start sub_8067744 +sub_8067744: @ 8067744 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067764 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067744 + + thumb_func_start sub_8067764 +sub_8067764: @ 8067764 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064788 + lsls r0, 24 + cmp r0, 0 + bne _08067776 + movs r0, 0 + b _0806777C +_08067776: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806777C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8067764 + + thumb_func_start sub_8067784 +sub_8067784: @ 8067784 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x14 + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + movs r1, 0 + movs r0, 0x1 + strh r0, [r4, 0x32] + strh r1, [r4, 0x36] + strh r1, [r4, 0x38] + strh r1, [r4, 0x3A] + strh r1, [r4, 0x3C] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067784 + + thumb_func_start sub_80677C0 +sub_80677C0: @ 80677C0 + adds r1, 0x3F + ldrb r0, [r1] + lsls r0, 27 + lsrs r0, 31 + bx lr + thumb_func_end sub_80677C0 + + thumb_func_start sub_80677CC +sub_80677CC: @ 80677CC + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0x3C + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _08067854 + cmp r1, 0x1 + bgt _080677E4 + cmp r1, 0 + beq _080677EA + b _080678B6 +_080677E4: + cmp r1, 0x2 + beq _08067896 + b _080678B6 +_080677EA: + ldrh r0, [r4, 0x3A] + adds r0, 0xA + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + ble _08067822 + strh r1, [r4, 0x3A] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + strh r0, [r4, 0x3C] + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] +_08067822: + ldr r1, _08067850 @ =gUnknown_825E074 + movs r2, 0x3A + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + asrs r0, 7 + negs r0, r0 + strh r0, [r4, 0x26] + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + lsls r1, 1 + ldrb r2, [r5] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + b _080678B6 + .align 2, 0 +_08067850: .4byte gUnknown_825E074 +_08067854: + ldrh r0, [r4, 0x36] + adds r0, 0x1 + movs r6, 0 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _0806788A + strh r6, [r4, 0x36] + adds r0, r4, 0 + movs r1, 0x14 + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + strh r6, [r4, 0x3C] + b _080678B6 +_0806788A: + ldrb r1, [r5] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r5] + b _080678B6 +_08067896: + ldrb r1, [r5] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r5] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x50 + ble _080678B6 + movs r0, 0 + strh r0, [r4, 0x36] + movs r0, 0x1 + b _080678B8 +_080678B6: + movs r0, 0 +_080678B8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80677CC + + thumb_func_start sub_80678C0 +sub_80678C0: @ 80678C0 + push {r4,lr} + ldrh r2, [r1, 0x3C] + adds r2, 0x4 + movs r0, 0xFF + ands r2, r0 + strh r2, [r1, 0x3C] + ldr r3, _080678EC @ =gUnknown_825E074 + movs r4, 0x3C + ldrsh r0, [r1, r4] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 23 + strh r0, [r1, 0x24] + movs r0, 0 + cmp r2, 0 + bne _080678E6 + movs r0, 0x1 +_080678E6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080678EC: .4byte gUnknown_825E074 + thumb_func_end sub_80678C0 + + thumb_func_start sub_80678F0 +sub_80678F0: @ 80678F0 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1C + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + movs r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80678F0 + + thumb_func_start sub_8067924 +sub_8067924: @ 8067924 + adds r1, 0x3F + ldrb r0, [r1] + lsls r0, 27 + lsrs r0, 31 + bx lr + thumb_func_end sub_8067924 + + thumb_func_start sub_8067930 +sub_8067930: @ 8067930 + movs r0, 0x1 + bx lr + thumb_func_end sub_8067930 + + thumb_func_start sub_8067934 +sub_8067934: @ 8067934 + adds r1, 0x2C + ldrb r0, [r1] + movs r2, 0x40 + orrs r0, r2 + strb r0, [r1] + movs r0, 0x1 + bx lr + thumb_func_end sub_8067934 + + thumb_func_start sub_8067944 +sub_8067944: @ 8067944 + movs r0, 0 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] + movs r0, 0 + bx lr + thumb_func_end sub_8067944 + + thumb_func_start sub_8067954 +sub_8067954: @ 8067954 + push {lr} + adds r2, r1, 0 + ldrh r0, [r2, 0x26] + subs r0, 0x8 + strh r0, [r2, 0x26] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xA0 + negs r1, r1 + cmp r0, r1 + bne _08067970 + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] +_08067970: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8067954 + + thumb_func_start sub_8067978 +sub_8067978: @ 8067978 + ldr r0, _08067988 @ =0x0000ff60 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] + movs r0, 0 + bx lr + .align 2, 0 +_08067988: .4byte 0x0000ff60 + thumb_func_end sub_8067978 + + thumb_func_start sub_806798C +sub_806798C: @ 806798C + push {lr} + ldrh r0, [r1, 0x26] + adds r0, 0x8 + strh r0, [r1, 0x26] + lsls r0, 16 + cmp r0, 0 + bne _080679A0 + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] +_080679A0: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806798C + + thumb_func_start sub_80679A8 +sub_80679A8: @ 80679A8 + movs r0, 0x1 + bx lr + thumb_func_end sub_80679A8 + + thumb_func_start sub_80679AC +sub_80679AC: @ 80679AC + push {lr} + ldrb r0, [r0, 0x1] + lsls r0, 29 + cmp r0, 0 + bge _080679C2 + adds r0, r1, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_080679C2: + pop {r0} + bx r0 + thumb_func_end sub_80679AC + + thumb_func_start sub_80679C8 +sub_80679C8: @ 80679C8 + push {r4,lr} + adds r4, r0, 0 + ldrb r3, [r4, 0x1] + lsls r0, r3, 28 + cmp r0, 0 + bge _080679F0 + adds r2, r1, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + movs r1, 0x9 + negs r1, r1 + ands r0, r1 + strb r0, [r4, 0x1] +_080679F0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80679C8 + + thumb_func_start sub_80679F8 +sub_80679F8: @ 80679F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8067A10 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067B0C + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80679F8 + + thumb_func_start sub_8067A10 +sub_8067A10: @ 8067A10 + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x1] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + ldrb r0, [r5, 0x5] + bl sub_805F2C8 + adds r7, r0, 0 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08067A74 + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldr r2, _08067A6C @ =gUnknown_2021BC8 + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r1, [r4, 0x26] + ldrh r0, [r4, 0x22] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldr r2, _08067A70 @ =gUnknown_2021BCA + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + b _08067A9C + .align 2, 0 +_08067A6C: .4byte gUnknown_2021BC8 +_08067A70: .4byte gUnknown_2021BCA +_08067A74: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r1, [r4, 0x26] + ldrh r0, [r4, 0x22] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 +_08067A9C: + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r7, 0x8] + adds r0, r3 + lsls r0, 16 + lsrs r6, r0, 16 + ldrh r0, [r7, 0xA] + adds r0, r2 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08067B00 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _08067B04 @ =0x00000401 + ldr r4, _08067B08 @ =0x0000fff0 + cmp r1, r0 + bne _08067AC6 + ldrb r0, [r5, 0x8] + cmp r0, 0x1 + bne _08067AC6 + subs r4, 0x10 +_08067AC6: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0xFF + bgt _08067AD6 + lsls r1, r6, 16 + lsls r0, r4, 16 + cmp r1, r0 + bge _08067ADE +_08067AD6: + ldrb r0, [r5, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x1] +_08067ADE: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xAF + bgt _08067AF2 + lsls r0, r7, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _08067AFA +_08067AF2: + ldrb r0, [r5, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x1] +_08067AFA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067B00: .4byte gUnknown_3005008 +_08067B04: .4byte 0x00000401 +_08067B08: .4byte 0x0000fff0 + thumb_func_end sub_8067A10 + + thumb_func_start sub_8067B0C +sub_8067B0C: @ 8067B0C + push {lr} + adds r2, r1, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x5 + negs r3, r3 + ands r3, r1 + strb r3, [r2] + ldrb r1, [r0, 0x1] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08067B2E + movs r1, 0x4 + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2] +_08067B2E: + pop {r0} + bx r0 + thumb_func_end sub_8067B0C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_message_box.s b/asm/field_message_box.s new file mode 100644 index 000000000..fa93c1fc7 --- /dev/null +++ b/asm/field_message_box.s @@ -0,0 +1,306 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8069348 +sub_8069348: @ 8069348 + ldr r1, _08069368 @ =gUnknown_203709C + movs r0, 0 + strb r0, [r1] + ldr r2, _0806936C @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + movs r1, 0x3 + negs r1, r1 + ands r0, r1 + subs r1, 0x2 + ands r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_08069368: .4byte gUnknown_203709C +_0806936C: .4byte gUnknown_3003E50 + thumb_func_end sub_8069348 + + thumb_func_start sub_8069370 +sub_8069370: @ 8069370 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08069394 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080693DA + cmp r0, 0x1 + bgt _08069398 + cmp r0, 0 + beq _0806939E + b _08069402 + .align 2, 0 +_08069394: .4byte gUnknown_3005090 +_08069398: + cmp r0, 0x2 + beq _080693EA + b _08069402 +_0806939E: + ldr r0, _080693BC @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _080693C4 + ldr r2, _080693C0 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_814FF98 + b _080693E2 + .align 2, 0 +_080693BC: .4byte gUnknown_203ADFA +_080693C0: .4byte gUnknown_3003E50 +_080693C4: + bl sub_8069A38 + lsls r0, 24 + cmp r0, 0 + bne _080693D4 + bl sub_80F6E9C + b _080693E2 +_080693D4: + bl sub_80F79A4 + b _080693E2 +_080693DA: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 +_080693E2: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _08069402 +_080693EA: + bl sub_80F6CBC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _08069402 + ldr r1, _08069408 @ =gUnknown_203709C + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_08069402: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069408: .4byte gUnknown_203709C + thumb_func_end sub_8069370 + + thumb_func_start sub_806940C +sub_806940C: @ 806940C + push {lr} + ldr r0, _0806941C @ =sub_8069370 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0806941C: .4byte sub_8069370 + thumb_func_end sub_806940C + + thumb_func_start sub_8069420 +sub_8069420: @ 8069420 + push {lr} + ldr r0, _08069438 @ =sub_8069370 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08069434 + bl sub_8077508 +_08069434: + pop {r0} + bx r0 + .align 2, 0 +_08069438: .4byte sub_8069370 + thumb_func_end sub_8069420 + + thumb_func_start sub_806943C +sub_806943C: @ 806943C + push {r4,lr} + adds r1, r0, 0 + ldr r4, _08069458 @ =gUnknown_203709C + ldrb r0, [r4] + cmp r0, 0 + bne _0806945C + adds r0, r1, 0 + bl sub_80694C8 + movs r0, 0x2 + strb r0, [r4] + movs r0, 0x1 + b _0806945E + .align 2, 0 +_08069458: .4byte gUnknown_203709C +_0806945C: + movs r0, 0 +_0806945E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806943C + + thumb_func_start sub_8069464 +sub_8069464: @ 8069464 + push {lr} + adds r1, r0, 0 + ldr r2, _08069480 @ =gUnknown_203709C + ldrb r0, [r2] + cmp r0, 0 + bne _08069484 + movs r0, 0x3 + strb r0, [r2] + adds r0, r1, 0 + bl sub_80694C8 + movs r0, 0x1 + b _08069486 + .align 2, 0 +_08069480: .4byte gUnknown_203709C +_08069484: + movs r0, 0 +_08069486: + pop {r1} + bx r1 + thumb_func_end sub_8069464 + + thumb_func_start sub_806948C +sub_806948C: @ 806948C + push {lr} + ldr r2, _080694A0 @ =gUnknown_203709C + movs r1, 0x3 + strb r1, [r2] + bl sub_80694C8 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_080694A0: .4byte gUnknown_203709C + thumb_func_end sub_806948C + + thumb_func_start sub_80694A4 +sub_80694A4: @ 80694A4 + push {lr} + ldr r1, _080694BC @ =gUnknown_203709C + ldrb r0, [r1] + cmp r0, 0 + bne _080694C0 + movs r0, 0x2 + strb r0, [r1] + bl sub_80694E4 + movs r0, 0x1 + b _080694C2 + .align 2, 0 +_080694BC: .4byte gUnknown_203709C +_080694C0: + movs r0, 0 +_080694C2: + pop {r1} + bx r1 + thumb_func_end sub_80694A4 + + thumb_func_start sub_80694C8 +sub_80694C8: @ 80694C8 + push {lr} + adds r1, r0, 0 + ldr r0, _080694E0 @ =gUnknown_2021D18 + bl sub_8008FCC + movs r0, 0x1 + bl sub_80F6D5C + bl sub_806940C + pop {r0} + bx r0 + .align 2, 0 +_080694E0: .4byte gUnknown_2021D18 + thumb_func_end sub_80694C8 + + thumb_func_start sub_80694E4 +sub_80694E4: @ 80694E4 + push {lr} + movs r0, 0x1 + bl sub_80F6D5C + bl sub_806940C + pop {r0} + bx r0 + thumb_func_end sub_80694E4 + + thumb_func_start sub_80694F4 +sub_80694F4: @ 80694F4 + push {lr} + bl sub_8069420 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + ldr r1, _0806950C @ =gUnknown_203709C + movs r0, 0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0806950C: .4byte gUnknown_203709C + thumb_func_end sub_80694F4 + + thumb_func_start sub_8069510 +sub_8069510: @ 8069510 + ldr r0, _08069518 @ =gUnknown_203709C + ldrb r0, [r0] + bx lr + .align 2, 0 +_08069518: .4byte gUnknown_203709C + thumb_func_end sub_8069510 + + thumb_func_start sub_806951C +sub_806951C: @ 806951C + push {lr} + ldr r0, _0806952C @ =gUnknown_203709C + ldrb r0, [r0] + cmp r0, 0 + beq _08069530 + movs r0, 0 + b _08069532 + .align 2, 0 +_0806952C: .4byte gUnknown_203709C +_08069530: + movs r0, 0x1 +_08069532: + pop {r1} + bx r1 + thumb_func_end sub_806951C + + thumb_func_start sub_8069538 +sub_8069538: @ 8069538 + push {lr} + bl sub_8069420 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F1C + ldr r1, _08069550 @ =gUnknown_203709C + movs r0, 0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08069550: .4byte gUnknown_203709C + thumb_func_end sub_8069538 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s new file mode 100644 index 000000000..2748b13dd --- /dev/null +++ b/asm/field_player_avatar.s @@ -0,0 +1,5647 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_805B3B8 +sub_805B3B8: @ 805B3B8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805B3D4 @ =gUnknown_2036E38 + adds r0, r2 + ldr r2, _0805B3D8 @ =sub_805B3DC + bl sub_8063DB8 + pop {r0} + bx r0 + .align 2, 0 +_0805B3D4: .4byte gUnknown_2036E38 +_0805B3D8: .4byte sub_805B3DC + thumb_func_end sub_805B3B8 + + thumb_func_start sub_805B3DC +sub_805B3DC: @ 805B3DC + movs r0, 0 + bx lr + thumb_func_end sub_805B3DC + + thumb_func_start sub_805B3E0 +sub_805B3E0: @ 805B3E0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r7, r2, 16 + ldr r4, _0805B454 @ =gUnknown_2037078 + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805B458 @ =gUnknown_2036E38 + adds r5, r0, r1 + adds r0, r5, 0 + bl sub_805CC40 + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _0805B448 + bl sub_805B528 + lsls r0, 24 + cmp r0, 0 + bne _0805B448 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_805B45C + lsls r0, 24 + cmp r0, 0 + bne _0805B448 + adds r0, r5, 0 + bl sub_805B4B0 + bl sub_805BE08 + bl sub_805B5A0 + lsls r0, 24 + cmp r0, 0 + bne _0805B448 + adds r0, r6, 0 + mov r1, r8 + adds r2, r7, 0 + bl sub_805B4D4 + bl sub_805B50C +_0805B448: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805B454: .4byte gUnknown_2037078 +_0805B458: .4byte gUnknown_2036E38 + thumb_func_end sub_805B3E0 + + thumb_func_start sub_805B45C +sub_805B45C: @ 805B45C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0805B4A6 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + bne _0805B4A6 + adds r0, r4, 0 + bl sub_8063DA0 + lsls r0, 24 + movs r1, 0xDF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0805B4A2 + cmp r5, 0 + beq _0805B4A2 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + cmp r0, r5 + beq _0805B4A2 + adds r0, r4, 0 + bl sub_8063D34 + b _0805B4A6 +_0805B4A2: + movs r0, 0x1 + b _0805B4A8 +_0805B4A6: + movs r0, 0 +_0805B4A8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805B45C + + thumb_func_start sub_805B4B0 +sub_805B4B0: @ 805B4B0 + ldrb r2, [r0, 0x1] + movs r1, 0x11 + negs r1, r1 + ands r1, r2 + movs r2, 0x5 + negs r2, r2 + ands r1, r2 + adds r2, 0x2 + ands r1, r2 + strb r1, [r0, 0x1] + ldr r2, _0805B4D0 @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_0805B4D0: .4byte gUnknown_2037078 + thumb_func_end sub_805B4B0 + + thumb_func_start sub_805B4D4 +sub_805B4D4: @ 805B4D4 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _0805B4F8 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x6 + ands r0, r1 + cmp r0, 0 + beq _0805B4FC + adds r0, r3, 0 + adds r1, r4, 0 + bl sub_80BD09C + b _0805B504 + .align 2, 0 +_0805B4F8: .4byte gUnknown_2037078 +_0805B4FC: + adds r0, r3, 0 + adds r1, r2, 0 + bl sub_805B93C +_0805B504: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805B4D4 + + thumb_func_start sub_805B50C +sub_805B50C: @ 805B50C + push {lr} + ldr r2, _0805B524 @ =gUnknown_2037078 + ldrb r0, [r2, 0x2] + cmp r0, 0x2 + bne _0805B51E + ldrb r1, [r2] + movs r0, 0xDF + ands r0, r1 + strb r0, [r2] +_0805B51E: + pop {r0} + bx r0 + .align 2, 0 +_0805B524: .4byte gUnknown_2037078 + thumb_func_end sub_805B50C + + thumb_func_start sub_805B528 +sub_805B528: @ 805B528 + push {r4,r5,lr} + ldr r5, _0805B58C @ =gUnknown_2037078 + ldrb r1, [r5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0805B598 + ldrb r0, [r5, 0x1C] + bl sub_805A344 + lsls r0, 24 + cmp r0, 0 + beq _0805B598 + ldr r4, _0805B590 @ =gUnknown_2036E30 + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805B594 @ =gUnknown_2036E38 + adds r1, r0, r1 + str r1, [r4] + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0805B586 + ldrb r0, [r1, 0x1E] + bl sub_805A330 + lsls r0, 24 + cmp r0, 0 + bne _0805B598 + ldr r0, [r4] + ldrb r0, [r0, 0x1E] + bl sub_805A344 + lsls r0, 24 + cmp r0, 0 + beq _0805B57A + ldr r0, [r4] + ldrb r0, [r0, 0x1E] + strh r0, [r5, 0x1C] +_0805B57A: + ldr r0, [r4] + bl sub_8063D34 + ldrb r0, [r5, 0x1C] + bl sub_805C2CC +_0805B586: + movs r0, 0x1 + b _0805B59A + .align 2, 0 +_0805B58C: .4byte gUnknown_2037078 +_0805B590: .4byte gUnknown_2036E30 +_0805B594: .4byte gUnknown_2036E38 +_0805B598: + movs r0, 0 +_0805B59A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805B528 + + thumb_func_start sub_805B5A0 +sub_805B5A0: @ 805B5A0 + push {r4-r7,lr} + sub sp, 0x4 + ldr r3, _0805B5F4 @ =gUnknown_2037078 + ldrb r1, [r3] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _0805B610 + ldr r2, _0805B5F8 @ =gUnknown_2036E38 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r7, [r0, 0x1E] + movs r6, 0 + ldr r0, _0805B5FC @ =gUnknown_835B764 + ldr r1, [r0] + adds r2, r0, 0 + cmp r1, 0 + beq _0805B628 + movs r5, 0 +_0805B5CC: + adds r4, r5, 0 + adds r0, r4, r2 + ldr r1, [r0] + adds r0, r7, 0 + str r2, [sp] + bl _call_via_r1 + lsls r0, 24 + ldr r2, [sp] + cmp r0, 0 + bne _0805B600 + adds r5, 0x8 + adds r6, 0x1 + adds r0, r5, r2 + ldr r0, [r0] + ldr r2, _0805B5FC @ =gUnknown_835B764 + cmp r0, 0 + bne _0805B5CC + b _0805B628 + .align 2, 0 +_0805B5F4: .4byte gUnknown_2037078 +_0805B5F8: .4byte gUnknown_2036E38 +_0805B5FC: .4byte gUnknown_835B764 +_0805B600: + ldr r0, _0805B60C @ =gUnknown_2037078 + strh r7, [r0, 0x1C] + adds r0, r2, 0x4 + adds r0, r5, r0 + b _0805B62E + .align 2, 0 +_0805B60C: .4byte gUnknown_2037078 +_0805B610: + movs r6, 0 + ldr r0, _0805B640 @ =gUnknown_835B764 + ldr r1, [r0] + adds r2, r0, 0 + cmp r1, 0 + beq _0805B628 + adds r1, r2, 0 +_0805B61E: + adds r1, 0x8 + adds r6, 0x1 + ldr r0, [r1] + cmp r0, 0 + bne _0805B61E +_0805B628: + lsls r0, r6, 3 + adds r1, r2, 0x4 + adds r0, r1 +_0805B62E: + ldr r0, [r0] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805B640: .4byte gUnknown_835B764 + thumb_func_end sub_805B5A0 + + thumb_func_start sub_805B644 +sub_805B644: @ 805B644 + push {r4,lr} + ldr r4, _0805B688 @ =gUnknown_2037078 + ldrb r1, [r4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0805B67E + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805B68C @ =gUnknown_2036E38 + adds r0, r1 + ldrb r2, [r0, 0x1] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x1] + ldrb r1, [r0, 0x18] + lsls r1, 28 + lsrs r1, 28 + bl sub_805FBDC + ldrb r1, [r4] + movs r0, 0xBF + ands r0, r1 + strb r0, [r4] +_0805B67E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805B688: .4byte gUnknown_2037078 +_0805B68C: .4byte gUnknown_2036E38 + thumb_func_end sub_805B644 + + thumb_func_start sub_805B690 +sub_805B690: @ 805B690 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _0805B6D0 @ =gUnknown_2037078 + adds r0, r5, 0 + bl sub_805BB1C + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + ldrb r0, [r6] + movs r1, 0x40 + mov r10, r1 + movs r1, 0 + mov r8, r1 + mov r1, r10 + orrs r0, r1 + strb r0, [r6] + cmp r4, 0 + beq _0805B6EC + bl sub_805B644 + cmp r4, 0x4 + bhi _0805B6D4 + movs r0, 0 + b _0805B6F8 + .align 2, 0 +_0805B6D0: .4byte gUnknown_2037078 +_0805B6D4: + cmp r7, 0x6 + bne _0805B6DE + adds r0, r5, 0 + bl sub_805C23C +_0805B6DE: + ldrb r0, [r6] + mov r1, r10 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x2 + strb r0, [r6, 0x2] + b _0805B6F6 +_0805B6EC: + movs r0, 0x2 + strb r0, [r6, 0x2] + adds r0, r5, 0 + bl _call_via_r9 +_0805B6F6: + movs r0, 0x1 +_0805B6F8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805B690 + + thumb_func_start sub_805B708 +sub_805B708: @ 805B708 + push {lr} + adds r1, r0, 0 + ldr r0, _0805B734 @ =gUnknown_2037078 + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805B738 @ =gUnknown_2036E38 + adds r0, r2 + ldrb r2, [r0, 0x1] + movs r3, 0x4 + orrs r2, r3 + strb r2, [r0, 0x1] + ldrb r0, [r0, 0x18] + lsrs r0, 4 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B734: .4byte gUnknown_2037078 +_0805B738: .4byte gUnknown_2036E38 + thumb_func_end sub_805B708 + + thumb_func_start sub_805B73C +sub_805B73C: @ 805B73C + push {lr} + ldr r0, _0805B74C @ =sub_805C11C + bl sub_805B708 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B74C: .4byte sub_805C11C + thumb_func_end sub_805B73C + + thumb_func_start sub_805B750 +sub_805B750: @ 805B750 + push {lr} + ldr r1, _0805B764 @ =sub_805C104 + movs r0, 0x1 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B764: .4byte sub_805C104 + thumb_func_end sub_805B750 + + thumb_func_start sub_805B768 +sub_805B768: @ 805B768 + push {lr} + ldr r1, _0805B77C @ =sub_805C104 + movs r0, 0x2 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B77C: .4byte sub_805C104 + thumb_func_end sub_805B768 + + thumb_func_start sub_805B780 +sub_805B780: @ 805B780 + push {lr} + ldr r1, _0805B794 @ =sub_805C104 + movs r0, 0x3 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B794: .4byte sub_805C104 + thumb_func_end sub_805B780 + + thumb_func_start sub_805B798 +sub_805B798: @ 805B798 + push {lr} + ldr r1, _0805B7AC @ =sub_805C104 + movs r0, 0x4 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B7AC: .4byte sub_805C104 + thumb_func_end sub_805B798 + + thumb_func_start sub_805B7B0 +sub_805B7B0: @ 805B7B0 + push {lr} + bl sub_805B820 + ldr r1, _0805B7C8 @ =sub_805C2B4 + movs r0, 0x4 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B7C8: .4byte sub_805C2B4 + thumb_func_end sub_805B7B0 + + thumb_func_start sub_805B7CC +sub_805B7CC: @ 805B7CC + push {lr} + bl sub_805B820 + ldr r1, _0805B7E4 @ =sub_805C2B4 + movs r0, 0x3 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B7E4: .4byte sub_805C2B4 + thumb_func_end sub_805B7CC + + thumb_func_start sub_805B7E8 +sub_805B7E8: @ 805B7E8 + push {lr} + bl sub_805B820 + ldr r1, _0805B800 @ =sub_805C2B4 + movs r0, 0x2 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B800: .4byte sub_805C2B4 + thumb_func_end sub_805B7E8 + + thumb_func_start sub_805B804 +sub_805B804: @ 805B804 + push {lr} + bl sub_805B820 + ldr r1, _0805B81C @ =sub_805C2B4 + movs r0, 0x1 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B81C: .4byte sub_805C2B4 + thumb_func_end sub_805B804 + + thumb_func_start sub_805B820 +sub_805B820: @ 805B820 + push {lr} + movs r0, 0x99 + bl sub_80722CC + pop {r0} + bx r0 + thumb_func_end sub_805B820 + + thumb_func_start sub_805B82C +sub_805B82C: @ 805B82C + push {lr} + ldr r1, _0805B840 @ =sub_805C14C + movs r0, 0x1 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B840: .4byte sub_805C14C + thumb_func_end sub_805B82C + + thumb_func_start sub_805B844 +sub_805B844: @ 805B844 + push {lr} + ldr r1, _0805B858 @ =sub_805C14C + movs r0, 0x2 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B858: .4byte sub_805C14C + thumb_func_end sub_805B844 + + thumb_func_start sub_805B85C +sub_805B85C: @ 805B85C + push {lr} + ldr r1, _0805B870 @ =sub_805C14C + movs r0, 0x3 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B870: .4byte sub_805C14C + thumb_func_end sub_805B85C + + thumb_func_start sub_805B874 +sub_805B874: @ 805B874 + push {lr} + ldr r1, _0805B888 @ =sub_805C14C + movs r0, 0x4 + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B888: .4byte sub_805C14C + thumb_func_end sub_805B874 + + thumb_func_start sub_805B88C +sub_805B88C: @ 805B88C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805B8BC @ =gUnknown_2037078 + ldrb r3, [r2, 0x5] + lsls r2, r3, 3 + adds r2, r3 + lsls r2, 2 + ldr r3, _0805B8C0 @ =gUnknown_2036E38 + adds r2, r3 + ldrb r3, [r2, 0x1] + movs r4, 0x4 + orrs r3, r4 + movs r4, 0x2 + orrs r3, r4 + strb r3, [r2, 0x1] + bl sub_805B690 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805B8BC: .4byte gUnknown_2037078 +_0805B8C0: .4byte gUnknown_2036E38 + thumb_func_end sub_805B88C + + thumb_func_start sub_805B8C4 +sub_805B8C4: @ 805B8C4 + push {lr} + ldr r1, _0805B8D8 @ =sub_805C11C + movs r0, 0x1 + bl sub_805B88C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B8D8: .4byte sub_805C11C + thumb_func_end sub_805B8C4 + + thumb_func_start sub_805B8DC +sub_805B8DC: @ 805B8DC + push {lr} + ldr r1, _0805B8F0 @ =sub_805C11C + movs r0, 0x2 + bl sub_805B88C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B8F0: .4byte sub_805C11C + thumb_func_end sub_805B8DC + + thumb_func_start sub_805B8F4 +sub_805B8F4: @ 805B8F4 + push {lr} + ldr r1, _0805B908 @ =sub_805C11C + movs r0, 0x3 + bl sub_805B88C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B908: .4byte sub_805C11C + thumb_func_end sub_805B8F4 + + thumb_func_start sub_805B90C +sub_805B90C: @ 805B90C + push {lr} + ldr r1, _0805B920 @ =sub_805C11C + movs r0, 0x4 + bl sub_805B88C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805B920: .4byte sub_805C11C + thumb_func_end sub_805B90C + + thumb_func_start sub_805B924 +sub_805B924: @ 805B924 + push {lr} + bl sub_805CE80 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_805B924 + + thumb_func_start sub_805B930 +sub_805B930: @ 805B930 + push {lr} + bl sub_805CF58 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_805B930 + + thumb_func_start sub_805B93C +sub_805B93C: @ 805B93C + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + ldr r6, _0805B968 @ =gUnknown_835B814 + adds r0, r4, 0 + bl sub_805B96C + lsls r0, 24 + lsrs r0, 22 + adds r0, r6 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r2 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B968: .4byte gUnknown_835B814 + thumb_func_end sub_805B93C + + thumb_func_start sub_805B96C +sub_805B96C: @ 805B96C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0805B984 + ldr r0, _0805B980 @ =gUnknown_2037078 + strb r4, [r0, 0x2] + movs r0, 0 + b _0805B9A6 + .align 2, 0 +_0805B980: .4byte gUnknown_2037078 +_0805B984: + bl sub_805C6E4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _0805B9A0 + ldr r1, _0805B99C @ =gUnknown_2037078 + ldrb r0, [r1, 0x2] + cmp r0, 0x2 + beq _0805B9A0 + movs r0, 0x1 + b _0805B9A4 + .align 2, 0 +_0805B99C: .4byte gUnknown_2037078 +_0805B9A0: + ldr r1, _0805B9AC @ =gUnknown_2037078 + movs r0, 0x2 +_0805B9A4: + strb r0, [r1, 0x2] +_0805B9A6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805B9AC: .4byte gUnknown_2037078 + thumb_func_end sub_805B96C + + thumb_func_start sub_805B9B0 +sub_805B9B0: @ 805B9B0 + push {lr} + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_805C1F4 + pop {r0} + bx r0 + thumb_func_end sub_805B9B0 + + thumb_func_start sub_805B9C4 +sub_805B9C4: @ 805B9C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_805C224 + pop {r0} + bx r0 + thumb_func_end sub_805B9C4 + + thumb_func_start sub_805B9D4 +sub_805B9D4: @ 805B9D4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + adds r0, r4, 0 + bl sub_805BB1C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0 + beq _0805BA18 + cmp r0, 0x6 + bne _0805B9FA + adds r0, r4, 0 + bl sub_805C23C + b _0805BAA4 +_0805B9FA: + cmp r0, 0x8 + bne _0805BA06 + adds r0, r4, 0 + bl sub_805C1F4 + b _0805BAA4 +_0805BA06: + subs r0, r1, 0x5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _0805BAA4 + adds r0, r4, 0 + bl sub_805C1D0 + b _0805BAA4 +_0805BA18: + ldr r6, _0805BA2C @ =gUnknown_2037078 + ldrb r1, [r6] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805BA30 + adds r0, r4, 0 + bl sub_805C11C + b _0805BAA4 + .align 2, 0 +_0805BA2C: .4byte gUnknown_2037078 +_0805BA30: + movs r0, 0x2 + ands r5, r0 + cmp r5, 0 + beq _0805BA8C + ldr r0, _0805BA6C @ =0x0000082f + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0805BA8C + ldr r2, _0805BA70 @ =gUnknown_2036E38 + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1E] + bl sub_80BD488 + cmp r0, 0 + bne _0805BA8C + adds r0, r4, 0 + bl sub_805BAAC + cmp r0, 0 + beq _0805BA74 + adds r0, r4, 0 + bl sub_805C194 + b _0805BA7A + .align 2, 0 +_0805BA6C: .4byte 0x0000082f +_0805BA70: .4byte gUnknown_2036E38 +_0805BA74: + adds r0, r4, 0 + bl sub_805C17C +_0805BA7A: + ldr r2, _0805BA88 @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0x80 + orrs r0, r1 + strb r0, [r2] + b _0805BAA4 + .align 2, 0 +_0805BA88: .4byte gUnknown_2037078 +_0805BA8C: + adds r0, r4, 0 + bl sub_805BAAC + cmp r0, 0 + beq _0805BA9E + adds r0, r4, 0 + bl sub_805C0EC + b _0805BAA4 +_0805BA9E: + adds r0, r4, 0 + bl sub_805C104 +_0805BAA4: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805B9D4 + + thumb_func_start sub_805BAAC +sub_805BAAC: @ 805BAAC + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _0805BAE4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805BAE8 @ =gUnknown_2036E38 + adds r0, r1 + ldrh r2, [r0, 0x10] + mov r1, sp + strh r2, [r1] + ldrh r1, [r0, 0x12] + mov r4, sp + adds r4, 0x2 + strh r1, [r4] + cmp r3, 0x1 + beq _0805BAEC + cmp r3, 0x2 + bne _0805BB12 + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + lsls r1, 16 + asrs r1, 16 + b _0805BB00 + .align 2, 0 +_0805BAE4: .4byte gUnknown_2037078 +_0805BAE8: .4byte gUnknown_2036E38 +_0805BAEC: + movs r0, 0x1 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] +_0805BB00: + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_805A460 + lsls r0, 24 + lsrs r0, 24 + b _0805BB14 +_0805BB12: + movs r0, 0 +_0805BB14: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805BAAC + + thumb_func_start sub_805BB1C +sub_805BB1C: @ 805BB1C + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0805BB94 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805BB98 @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrh r1, [r5, 0x10] + add r0, sp, 0x4 + strh r1, [r0] + ldrh r1, [r5, 0x12] + mov r4, sp + adds r4, 0x6 + strh r1, [r4] + movs r2, 0 + ldrsh r0, [r0, r2] + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 16 + lsrs r0, 16 + adds r1, r6, 0 + bl sub_806DB84 + lsls r0, 24 + cmp r0, 0 + bne _0805BB9C + adds r0, r6, 0 + add r1, sp, 0x4 + adds r2, r4, 0 + bl sub_8063A20 + add r0, sp, 0x4 + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + add r1, sp, 0x4 + movs r3, 0 + ldrsh r1, [r1, r3] + movs r3, 0 + ldrsh r2, [r4, r3] + str r0, [sp] + adds r0, r5, 0 + adds r3, r6, 0 + bl sub_805BBA8 + lsls r0, 24 + lsrs r0, 24 + b _0805BB9E + .align 2, 0 +_0805BB94: .4byte gUnknown_2037078 +_0805BB98: .4byte gUnknown_2036E38 +_0805BB9C: + movs r0, 0x8 +_0805BB9E: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805BB1C + + thumb_func_start sub_805BBA8 +sub_805BBA8: @ 805BBA8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + lsrs r7, r1, 16 + asrs r5, r1, 16 + lsrs r1, r2, 16 + mov r9, r1 + asrs r4, r2, 16 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_80636AC + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + cmp r0, 0x3 + bne _0805BBF8 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_805BC60 + lsls r0, 24 + cmp r0, 0 + beq _0805BBF8 + movs r0, 0x5 + b _0805BC50 +_0805BBF8: + lsls r5, r7, 16 + asrs r0, r5, 16 + mov r8, r0 + mov r1, r9 + lsls r4, r1, 16 + asrs r7, r4, 16 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_805BCC8 + lsls r0, 24 + cmp r0, 0 + beq _0805BC1C + movs r0, 0x2B + bl sub_8054E90 + movs r0, 0x6 + b _0805BC50 +_0805BC1C: + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x4 + bne _0805BC38 + mov r0, r8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_805BCEC + lsls r0, 24 + cmp r0, 0 + beq _0805BC38 + movs r0, 0x7 + b _0805BC50 +_0805BC38: + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _0805BC4C + asrs r0, r5, 16 + asrs r1, r4, 16 + mov r2, r10 + mov r3, sp + bl sub_805BDAC +_0805BC4C: + mov r0, sp + ldrb r0, [r0] +_0805BC50: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805BBA8 + + thumb_func_start sub_805BC60 +sub_805BC60: @ 805BC60 + push {r4-r6,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _0805BCB8 @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805BCC0 + lsls r5, r3, 16 + asrs r0, r5, 16 + lsls r4, 16 + asrs r1, r4, 16 + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0805BCC0 + lsrs r0, r5, 16 + lsrs r1, r4, 16 + movs r2, 0x3 + bl sub_805F894 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + bne _0805BCC0 + ldr r0, _0805BCBC @ =gUnknown_835B820 + adds r0, r6, r0 + ldrb r0, [r0] + movs r1, 0x10 + bl sub_811278C + adds r0, r6, 0 + bl sub_805D0F8 + movs r0, 0x1 + b _0805BCC2 + .align 2, 0 +_0805BCB8: .4byte gUnknown_2037078 +_0805BCBC: .4byte gUnknown_835B820 +_0805BCC0: + movs r0, 0 +_0805BCC2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805BC60 + + thumb_func_start sub_805BCC8 +sub_805BCC8: @ 805BCC8 + push {lr} + lsls r2, 24 + lsrs r2, 24 + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_80680F8 + lsls r0, 24 + cmp r0, 0 + bne _0805BCE4 + movs r0, 0 + b _0805BCE6 +_0805BCE4: + movs r0, 0x1 +_0805BCE6: + pop {r1} + bx r1 + thumb_func_end sub_805BCC8 + + thumb_func_start sub_805BCEC +sub_805BCEC: @ 805BCEC + push {r4-r7,lr} + sub sp, 0x4 + mov r3, sp + strh r0, [r3] + mov r5, sp + adds r5, 0x2 + strh r1, [r5] + lsls r2, 24 + lsrs r7, r2, 24 + ldr r0, _0805BD98 @ =0x00000805 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0805BDA0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_805DFB0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x10 + beq _0805BDA0 + ldr r0, _0805BD9C @ =gUnknown_2036E38 + lsls r1, r6, 3 + adds r1, r6 + lsls r1, 2 + adds r4, r1, r0 + ldrb r0, [r4, 0x5] + cmp r0, 0x61 + bne _0805BDA0 + ldrh r1, [r4, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r4, 0x12] + strh r0, [r5] + adds r0, r7, 0 + mov r1, sp + adds r2, r5, 0 + bl sub_8063A20 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + cmp r0, 0x66 + beq _0805BD8A + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r7, 0 + bl sub_80636AC + lsls r0, 24 + cmp r0, 0 + bne _0805BDA0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059C8C + lsls r0, 24 + cmp r0, 0 + bne _0805BDA0 +_0805BD8A: + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_805CCD0 + movs r0, 0x1 + b _0805BDA2 + .align 2, 0 +_0805BD98: .4byte 0x00000805 +_0805BD9C: .4byte gUnknown_2036E38 +_0805BDA0: + movs r0, 0 +_0805BDA2: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805BCEC + + thumb_func_start sub_805BDAC +sub_805BDAC: @ 805BDAC + push {r4-r7,lr} + adds r6, r3, 0 + lsls r2, 24 + lsrs r5, r2, 24 + movs r4, 0 + ldr r7, _0805BDD4 @ =gUnknown_835B828 +_0805BDB8: + lsls r0, r4, 2 + adds r0, r7 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _0805BDDC + ldr r0, _0805BDD8 @ =gUnknown_835B83C + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r6] + b _0805BDE6 + .align 2, 0 +_0805BDD4: .4byte gUnknown_835B828 +_0805BDD8: .4byte gUnknown_835B83C +_0805BDDC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bls _0805BDB8 +_0805BDE6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805BDAC + + thumb_func_start sub_805BDEC +sub_805BDEC: @ 805BDEC + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r2, _0805BE04 @ =gUnknown_2037078 + ldrb r1, [r2, 0x1] + orrs r0, r1 + strb r0, [r2, 0x1] + bl sub_805BE08 + pop {r0} + bx r0 + .align 2, 0 +_0805BE04: .4byte gUnknown_2037078 + thumb_func_end sub_805BDEC + + thumb_func_start sub_805BE08 +sub_805BE08: @ 805BE08 + push {r4,r5,lr} + ldr r0, _0805BE50 @ =gUnknown_2037078 + ldrb r4, [r0, 0x1] + cmp r4, 0 + beq _0805BE48 + movs r5, 0 +_0805BE14: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0805BE36 + ldr r0, _0805BE54 @ =gUnknown_835B844 + lsls r2, r5, 2 + adds r2, r0 + ldr r0, _0805BE50 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805BE58 @ =gUnknown_2036E38 + adds r0, r1 + ldr r1, [r2] + bl _call_via_r1 +_0805BE36: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + lsrs r4, 1 + cmp r5, 0x7 + bls _0805BE14 + ldr r1, _0805BE50 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x1] +_0805BE48: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805BE50: .4byte gUnknown_2037078 +_0805BE54: .4byte gUnknown_835B844 +_0805BE58: .4byte gUnknown_2036E38 + thumb_func_end sub_805BE08 + + thumb_func_start nullsub_22 +nullsub_22: @ 805BE5C + bx lr + thumb_func_end nullsub_22 + + thumb_func_start sub_805BE60 +sub_805BE60: @ 805BE60 + push {lr} + movs r0, 0 + bl sub_8150474 + movs r0, 0 + bl sub_8150498 + pop {r0} + bx r0 + thumb_func_end sub_805BE60 + + thumb_func_start sub_805BE74 +sub_805BE74: @ 805BE74 + push {lr} + movs r0, 0x1 + bl sub_8150474 + movs r0, 0x1 + bl sub_8150498 + movs r0, 0 + movs r1, 0 + bl sub_80BD620 + pop {r0} + bx r0 + thumb_func_end sub_805BE74 + + thumb_func_start sub_805BE90 +sub_805BE90: @ 805BE90 + push {lr} + movs r0, 0x3 + bl sub_8150474 + movs r0, 0x3 + bl sub_8150498 + pop {r0} + bx r0 + thumb_func_end sub_805BE90 + + thumb_func_start nullsub_23 +nullsub_23: @ 805BEA4 + bx lr + thumb_func_end nullsub_23 + + thumb_func_start sub_805BEA8 +sub_805BEA8: @ 805BEA8 + ldr r2, _0805BEB4 @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0x20 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_0805BEB4: .4byte gUnknown_2037078 + thumb_func_end sub_805BEA8 + + thumb_func_start sub_805BEB8 +sub_805BEB8: @ 805BEB8 + push {r4,lr} + ldr r4, _0805BEE4 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r4, 0x3] + bl sub_805BF7C + lsls r0, 24 + cmp r0, 0 + beq _0805BEF6 + bl sub_805BFA0 + lsls r0, 24 + cmp r0, 0 + bne _0805BEE8 + bl sub_805BEFC + lsls r0, 24 + cmp r0, 0 + bne _0805BEF6 + movs r0, 0x1 + b _0805BEF4 + .align 2, 0 +_0805BEE4: .4byte gUnknown_2037078 +_0805BEE8: + bl sub_805BF58 + lsls r0, 24 + cmp r0, 0 + bne _0805BEF6 + movs r0, 0x2 +_0805BEF4: + strb r0, [r4, 0x3] +_0805BEF6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805BEB8 + + thumb_func_start sub_805BEFC +sub_805BEFC: @ 805BEFC + push {lr} + ldr r2, _0805BF48 @ =gUnknown_2036E38 + ldr r0, _0805BF4C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1C] + cmp r1, 0x7 + bls _0805BF42 + adds r0, r1, 0 + subs r0, 0x18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bls _0805BF42 + adds r0, r1, 0 + subs r0, 0x21 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bls _0805BF42 + adds r0, r1, 0 + subs r0, 0x70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB + bls _0805BF42 + adds r0, r1, 0 + adds r0, 0x78 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0805BF50 +_0805BF42: + movs r0, 0x1 + b _0805BF52 + .align 2, 0 +_0805BF48: .4byte gUnknown_2036E38 +_0805BF4C: .4byte gUnknown_2037078 +_0805BF50: + movs r0, 0 +_0805BF52: + pop {r1} + bx r1 + thumb_func_end sub_805BEFC + + thumb_func_start sub_805BF58 +sub_805BF58: @ 805BF58 + push {lr} + bl sub_805BEFC + lsls r0, 24 + cmp r0, 0 + beq _0805BF74 + ldr r0, _0805BF70 @ =gUnknown_2037078 + ldrb r0, [r0, 0x2] + cmp r0, 0x1 + beq _0805BF74 + movs r0, 0x1 + b _0805BF76 + .align 2, 0 +_0805BF70: .4byte gUnknown_2037078 +_0805BF74: + movs r0, 0 +_0805BF76: + pop {r1} + bx r1 + thumb_func_end sub_805BF58 + + thumb_func_start sub_805BF7C +sub_805BF7C: @ 805BF7C + push {lr} + ldr r0, _0805BF98 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805BF9C @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063C70 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805BF98: .4byte gUnknown_2037078 +_0805BF9C: .4byte gUnknown_2036E38 + thumb_func_end sub_805BF7C + + thumb_func_start sub_805BFA0 +sub_805BFA0: @ 805BFA0 + push {lr} + ldr r0, _0805BFBC @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805BFC0 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D68 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805BFBC: .4byte gUnknown_2037078 +_0805BFC0: .4byte gUnknown_2036E38 + thumb_func_end sub_805BFA0 + + thumb_func_start sub_805BFC4 +sub_805BFC4: @ 805BFC4 + ldr r3, _0805BFD8 @ =gUnknown_2036E38 + ldr r1, _0805BFDC @ =gUnknown_2037078 + ldrb r2, [r1, 0x5] + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + adds r1, 0x22 + strb r0, [r1] + bx lr + .align 2, 0 +_0805BFD8: .4byte gUnknown_2036E38 +_0805BFDC: .4byte gUnknown_2037078 + thumb_func_end sub_805BFC4 + + thumb_func_start sub_805BFE0 +sub_805BFE0: @ 805BFE0 + ldr r2, _0805BFF4 @ =gUnknown_2036E38 + ldr r0, _0805BFF8 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x22 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0805BFF4: .4byte gUnknown_2036E38 +_0805BFF8: .4byte gUnknown_2037078 + thumb_func_end sub_805BFE0 + + thumb_func_start sub_805BFFC +sub_805BFFC: @ 805BFFC + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0805C01C @ =gUnknown_2037078 + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805C020 @ =gUnknown_2036E38 + adds r0, r2 + bl sub_8063D00 + pop {r0} + bx r0 + .align 2, 0 +_0805C01C: .4byte gUnknown_2037078 +_0805C020: .4byte gUnknown_2036E38 + thumb_func_end sub_805BFFC + + thumb_func_start sub_805C024 +sub_805C024: @ 805C024 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_805BF7C + lsls r0, 24 + cmp r0, 0 + bne _0805C05E + adds r0, r4, 0 + bl sub_805BFC4 + ldr r0, _0805C064 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805C068 @ =gUnknown_2036E38 + adds r0, r1 + adds r1, r5, 0 + bl sub_8063CA4 + lsls r0, 24 + cmp r0, 0 + bne _0805C05E + adds r0, r5, 0 + bl sub_8112628 +_0805C05E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805C064: .4byte gUnknown_2037078 +_0805C068: .4byte gUnknown_2036E38 + thumb_func_end sub_805C024 + + thumb_func_start sub_805C06C +sub_805C06C: @ 805C06C + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _0805C09C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805C0A0 @ =gUnknown_2036E38 + adds r0, r1 + adds r1, r4, 0 + bl sub_8063CA4 + lsls r0, 24 + cmp r0, 0 + bne _0805C094 + adds r0, r4, 0 + movs r1, 0 + bl sub_81126AC +_0805C094: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805C09C: .4byte gUnknown_2037078 +_0805C0A0: .4byte gUnknown_2036E38 + thumb_func_end sub_805C06C + + thumb_func_start sub_805C0A4 +sub_805C0A4: @ 805C0A4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + adds r1, r5, 0 + bl sub_8063CA4 + lsls r0, 24 + cmp r0, 0 + bne _0805C0CA + ldrb r0, [r4, 0x8] + ldrb r1, [r4, 0x9] + ldrb r2, [r4, 0xA] + movs r3, 0x20 + str r3, [sp] + adds r3, r5, 0 + bl sub_8112588 +_0805C0CA: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_805C0A4 + + thumb_func_start sub_805C0D4 +sub_805C0D4: @ 805C0D4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063F2C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C0D4 + + thumb_func_start sub_805C0EC +sub_805C0EC: @ 805C0EC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063F58 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C0EC + + thumb_func_start sub_805C104 +sub_805C104: @ 805C104 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063F84 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C104 + + thumb_func_start sub_805C11C +sub_805C11C: @ 805C11C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063FB0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C11C + + thumb_func_start sub_805C134 +sub_805C134: @ 805C134 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063FDC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C134 + + thumb_func_start sub_805C14C +sub_805C14C: @ 805C14C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8064008 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C14C + + thumb_func_start sub_805C164 +sub_805C164: @ 805C164 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8064034 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C164 + + thumb_func_start sub_805C17C +sub_805C17C: @ 805C17C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_806408C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C17C + + thumb_func_start sub_805C194 +sub_805C194: @ 805C194 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80640B8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C194 + + thumb_func_start sub_805C1AC +sub_805C1AC: @ 805C1AC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_805C438 + adds r0, r4, 0 + bl sub_8064244 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C1AC + + thumb_func_start sub_805C1D0 +sub_805C1D0: @ 805C1D0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_805C438 + adds r0, r4, 0 + bl sub_8064218 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C1D0 + + thumb_func_start sub_805C1F4 +sub_805C1F4: @ 805C1F4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063EB8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C1F4 + + thumb_func_start sub_805C20C +sub_805C20C: @ 805C20C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8063EE4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C20C + + thumb_func_start sub_805C224 +sub_805C224: @ 805C224 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8064270 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C224 + + thumb_func_start sub_805C23C +sub_805C23C: @ 805C23C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xA + bl sub_80722CC + adds r0, r4, 0 + bl sub_8064110 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x8 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C23C + + thumb_func_start sub_805C260 +sub_805C260: @ 805C260 + push {lr} + movs r0, 0x9F + movs r1, 0 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C260 + + thumb_func_start sub_805C270 +sub_805C270: @ 805C270 + push {r4,lr} + ldr r4, _0805C2AC @ =gUnknown_2037078 + ldrb r0, [r4, 0x3] + cmp r0, 0x2 + beq _0805C27E + cmp r0, 0 + bne _0805C2A6 +_0805C27E: + bl sub_80BD58C + lsls r0, 24 + cmp r0, 0 + beq _0805C2A6 + ldr r2, _0805C2B0 @ =gUnknown_2036E38 + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + lsls r0, 24 + lsrs r0, 24 + bl sub_805BFFC +_0805C2A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805C2AC: .4byte gUnknown_2037078 +_0805C2B0: .4byte gUnknown_2036E38 + thumb_func_end sub_805C270 + + thumb_func_start sub_805C2B4 +sub_805C2B4: @ 805C2B4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80640E4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C2B4 + + thumb_func_start sub_805C2CC +sub_805C2CC: @ 805C2CC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _0805C308 @ =gUnknown_835B764 + ldr r0, [r1] + cmp r0, 0 + beq _0805C302 + adds r4, r1, 0 + adds r7, r4, 0 + movs r5, 0 +_0805C2E0: + ldr r1, [r4] + adds r0, r6, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _0805C2F8 + adds r0, r7, 0x4 + adds r0, r5, r0 + ldr r0, [r0] + bl _call_via_r0 +_0805C2F8: + adds r4, 0x8 + adds r5, 0x8 + ldr r0, [r4] + cmp r0, 0 + bne _0805C2E0 +_0805C302: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805C308: .4byte gUnknown_835B764 + thumb_func_end sub_805C2CC + + thumb_func_start sub_805C30C +sub_805C30C: @ 805C30C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80642F4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C30C + + thumb_func_start sub_805C324 +sub_805C324: @ 805C324 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8064320 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C324 + + thumb_func_start sub_805C33C +sub_805C33C: @ 805C33C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_806434C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C33C + + thumb_func_start sub_805C354 +sub_805C354: @ 805C354 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1C + bl sub_80722CC + adds r0, r4, 0 + bl sub_8064378 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C354 + + thumb_func_start sub_805C378 +sub_805C378: @ 805C378 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1C + bl sub_80722CC + adds r0, r4, 0 + bl sub_80643A4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C378 + + thumb_func_start sub_805C39C +sub_805C39C: @ 805C39C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1C + bl sub_80722CC + adds r0, r4, 0 + bl sub_80643D0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x8 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C39C + + thumb_func_start sub_805C3C0 +sub_805C3C0: @ 805C3C0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1C + bl sub_80722CC + adds r0, r4, 0 + bl sub_8064168 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C3C0 + + thumb_func_start sub_805C3E4 +sub_805C3E4: @ 805C3E4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x7 + bl sub_80722CC + adds r0, r4, 0 + bl sub_80643FC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805C3E4 + + thumb_func_start sub_805C408 +sub_805C408: @ 805C408 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8064428 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C408 + + thumb_func_start sub_805C420 +sub_805C420: @ 805C420 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8064454 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805C024 + pop {r0} + bx r0 + thumb_func_end sub_805C420 + + thumb_func_start sub_805C438 +sub_805C438: @ 805C438 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + ldr r2, _0805C4E8 @ =gUnknown_2036E38 + ldr r0, _0805C4EC @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r4, [r0, 0x1E] + ldr r1, _0805C4F0 @ =gUnknown_835B864 + subs r0, r5, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _0805C4DE + cmp r5, 0x3 + bne _0805C484 + adds r0, r4, 0 + bl sub_8059C20 + lsls r0, 24 + cmp r0, 0 + bne _0805C4DE + adds r0, r4, 0 + bl sub_8059C48 + lsls r0, 24 + cmp r0, 0 + bne _0805C4DE +_0805C484: + cmp r5, 0x4 + bne _0805C4A0 + adds r0, r4, 0 + bl sub_8059C0C + lsls r0, 24 + cmp r0, 0 + bne _0805C4DE + adds r0, r4, 0 + bl sub_8059C34 + lsls r0, 24 + cmp r0, 0 + bne _0805C4DE +_0805C4A0: + cmp r6, 0x2 + bne _0805C4D8 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + movs r0, 0x2 + mov r1, sp + adds r2, r4, 0 + bl sub_8063A20 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059BC8 + lsls r0, 24 + cmp r0, 0 + bne _0805C4DE +_0805C4D8: + movs r0, 0x7 + bl sub_80722CC +_0805C4DE: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805C4E8: .4byte gUnknown_2036E38 +_0805C4EC: .4byte gUnknown_2037078 +_0805C4F0: .4byte gUnknown_835B864 + thumb_func_end sub_805C438 + + thumb_func_start sub_805C4F4 +sub_805C4F4: @ 805C4F4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r3, _0805C530 @ =gUnknown_2036E38 + ldr r2, _0805C534 @ =gUnknown_2037078 + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x10] + strh r0, [r4] + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x12] + strh r0, [r5] + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8063A20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805C530: .4byte gUnknown_2036E38 +_0805C534: .4byte gUnknown_2037078 + thumb_func_end sub_805C4F4 + + thumb_func_start sub_805C538 +sub_805C538: @ 805C538 + push {r4,r5,lr} + ldr r5, _0805C560 @ =gUnknown_2036E38 + ldr r4, _0805C564 @ =gUnknown_2037078 + ldrb r3, [r4, 0x5] + lsls r2, r3, 3 + adds r2, r3 + lsls r2, 2 + adds r2, r5 + ldrh r2, [r2, 0x10] + strh r2, [r0] + ldrb r2, [r4, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r0, r5 + ldrh r0, [r0, 0x12] + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805C560: .4byte gUnknown_2036E38 +_0805C564: .4byte gUnknown_2037078 + thumb_func_end sub_805C538 + + thumb_func_start sub_805C568 +sub_805C568: @ 805C568 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0805C5BC @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805C5C0 @ =gUnknown_2036E38 + adds r3, r0, r1 + ldrb r1, [r3] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x40 + beq _0805C588 + b _0805C6B0 +_0805C588: + ldr r2, _0805C5C4 @ =gUnknown_202063C + ldrb r1, [r3, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x32 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _0805C59E + b _0805C6B0 +_0805C59E: + ldrh r0, [r3, 0x10] + strh r0, [r4] + ldrh r0, [r3, 0x12] + strh r0, [r5] + ldrb r0, [r3, 0x1C] + subs r0, 0x10 + cmp r0, 0x30 + bls _0805C5B0 + b _0805C6B0 +_0805C5B0: + lsls r0, 2 + ldr r1, _0805C5C8 @ =_0805C5CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805C5BC: .4byte gUnknown_2037078 +_0805C5C0: .4byte gUnknown_2036E38 +_0805C5C4: .4byte gUnknown_202063C +_0805C5C8: .4byte _0805C5CC + .align 2, 0 +_0805C5CC: + .4byte _0805C690 + .4byte _0805C696 + .4byte _0805C6A0 + .4byte _0805C6A6 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C6B0 + .4byte _0805C690 + .4byte _0805C696 + .4byte _0805C6A0 + .4byte _0805C6A6 +_0805C690: + ldrh r0, [r5] + adds r0, 0x1 + b _0805C69A +_0805C696: + ldrh r0, [r5] + subs r0, 0x1 +_0805C69A: + strh r0, [r5] + movs r0, 0x1 + b _0805C6BC +_0805C6A0: + ldrh r0, [r4] + subs r0, 0x1 + b _0805C6AA +_0805C6A6: + ldrh r0, [r4] + adds r0, 0x1 +_0805C6AA: + strh r0, [r4] + movs r0, 0x1 + b _0805C6BC +_0805C6B0: + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 + strh r0, [r4] + strh r0, [r5] + movs r0, 0 +_0805C6BC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805C568 + + thumb_func_start sub_805C6C4 +sub_805C6C4: @ 805C6C4 + ldr r2, _0805C6DC @ =gUnknown_2036E38 + ldr r0, _0805C6E0 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + bx lr + .align 2, 0 +_0805C6DC: .4byte gUnknown_2036E38 +_0805C6E0: .4byte gUnknown_2037078 + thumb_func_end sub_805C6C4 + + thumb_func_start sub_805C6E4 +sub_805C6E4: @ 805C6E4 + ldr r2, _0805C6F8 @ =gUnknown_2036E38 + ldr r0, _0805C6FC @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsrs r0, 4 + bx lr + .align 2, 0 +_0805C6F8: .4byte gUnknown_2036E38 +_0805C6FC: .4byte gUnknown_2037078 + thumb_func_end sub_805C6E4 + + thumb_func_start sub_805C700 +sub_805C700: @ 805C700 + ldr r2, _0805C714 @ =gUnknown_2036E38 + ldr r0, _0805C718 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0xB] + lsrs r0, 4 + bx lr + .align 2, 0 +_0805C714: .4byte gUnknown_2036E38 +_0805C718: .4byte gUnknown_2037078 + thumb_func_end sub_805C700 + + thumb_func_start sub_805C71C +sub_805C71C: @ 805C71C + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _0805C744 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805C748 @ =gUnknown_2036E38 + adds r0, r1 + lsls r3, 16 + asrs r3, 16 + lsls r2, 16 + asrs r2, 16 + adds r1, r3, 0 + bl sub_805F724 + pop {r0} + bx r0 + .align 2, 0 +_0805C744: .4byte gUnknown_2037078 +_0805C748: .4byte gUnknown_2036E38 + thumb_func_end sub_805C71C + + thumb_func_start sub_805C74C +sub_805C74C: @ 805C74C + ldr r1, _0805C758 @ =gUnknown_2037078 + ldrb r1, [r1] + ands r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_0805C758: .4byte gUnknown_2037078 + thumb_func_end sub_805C74C + + thumb_func_start sub_805C75C +sub_805C75C: @ 805C75C + ldr r0, _0805C764 @ =gUnknown_2037078 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0805C764: .4byte gUnknown_2037078 + thumb_func_end sub_805C75C + + thumb_func_start sub_805C768 +sub_805C768: @ 805C768 + ldr r0, _0805C770 @ =gUnknown_2037078 + ldrb r0, [r0, 0x4] + bx lr + .align 2, 0 +_0805C770: .4byte gUnknown_2037078 + thumb_func_end sub_805C768 + + thumb_func_start sub_805C774 +sub_805C774: @ 805C774 + push {lr} + bl sub_805B644 + pop {r0} + bx r0 + thumb_func_end sub_805C774 + + thumb_func_start sub_805C780 +sub_805C780: @ 805C780 + push {r4,lr} + ldr r0, _0805C7C0 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805C7C4 @ =gUnknown_2036E38 + adds r4, r0 + adds r0, r4, 0 + bl sub_805B4B0 + ldrb r1, [r4, 0x18] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_805FBDC + movs r0, 0x6 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _0805C7B8 + bl sub_80BD6C4 + movs r0, 0 + bl sub_80BD650 +_0805C7B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805C7C0: .4byte gUnknown_2037078 +_0805C7C4: .4byte gUnknown_2036E38 + thumb_func_end sub_805C780 + + thumb_func_start sub_805C7C8 +sub_805C7C8: @ 805C7C8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + bl sub_805C7E0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_805C7C8 + + thumb_func_start sub_805C7E0 +sub_805C7E0: @ 805C7E0 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0805C7F4 @ =gUnknown_835B874 + lsrs r0, 23 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_0805C7F4: .4byte gUnknown_835B874 + thumb_func_end sub_805C7E0 + + thumb_func_start sub_805C7F8 +sub_805C7F8: @ 805C7F8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805C804 @ =gUnknown_835B880 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0805C804: .4byte gUnknown_835B880 + thumb_func_end sub_805C7F8 + + thumb_func_start sub_805C808 +sub_805C808: @ 805C808 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805C820 @ =gUnknown_2037078 + ldrb r1, [r1, 0x7] + bl sub_805C7E0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805C820: .4byte gUnknown_2037078 + thumb_func_end sub_805C808 + + thumb_func_start sub_805C824 +sub_805C824: @ 805C824 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB + bgt _0805C836 + cmp r0, 0x7 + blt _0805C836 + movs r0, 0x1 + b _0805C838 +_0805C836: + movs r0, 0 +_0805C838: + pop {r1} + bx r1 + thumb_func_end sub_805C824 + + thumb_func_start sub_805C83C +sub_805C83C: @ 805C83C + push {r4,r5,lr} + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + bne _0805C880 + movs r5, 0 + b _0805C866 +_0805C84E: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_8125AC0 + lsls r0, 24 + cmp r0, 0 + beq _0805C860 + movs r0, 0x1 + b _0805C882 +_0805C860: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0805C866: + cmp r5, 0x5 + bhi _0805C880 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0805C888 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + bne _0805C84E +_0805C880: + movs r0, 0 +_0805C882: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805C888: .4byte gUnknown_2024284 + thumb_func_end sub_805C83C + + thumb_func_start sub_805C88C +sub_805C88C: @ 805C88C + push {lr} + bl sub_805C6E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0805C8AA + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _0805C8AA + movs r0, 0x1 + b _0805C8AC +_0805C8AA: + movs r0, 0 +_0805C8AC: + pop {r1} + bx r1 + thumb_func_end sub_805C88C + + thumb_func_start sub_805C8B0 +sub_805C8B0: @ 805C8B0 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _0805C924 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805C928 @ =gUnknown_2036E38 + adds r4, r0 + ldrh r1, [r4, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r4, 0x12] + mov r5, sp + adds r5, 0x2 + strh r0, [r5] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + mov r1, sp + adds r2, r5, 0 + bl sub_8063A20 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + ldrb r3, [r4, 0x18] + lsls r3, 28 + lsrs r3, 28 + adds r0, r4, 0 + bl sub_80636AC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0805C92C + bl sub_805C700 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0805C92C + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_805C938 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0805C92C + movs r0, 0x1 + b _0805C92E + .align 2, 0 +_0805C924: .4byte gUnknown_2037078 +_0805C928: .4byte gUnknown_2036E38 +_0805C92C: + movs r0, 0 +_0805C92E: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805C8B0 + + thumb_func_start sub_805C938 +sub_805C938: @ 805C938 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x1 + bl sub_8058F48 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_805A2BC + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_805C938 + + thumb_func_start sub_805C95C +sub_805C95C: @ 805C95C + push {lr} + ldr r0, _0805C96C @ =gUnknown_2037078 + movs r1, 0 + movs r2, 0x20 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_0805C96C: .4byte gUnknown_2037078 + thumb_func_end sub_805C95C + + thumb_func_start sub_805C970 +sub_805C970: @ 805C970 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0805C984 @ =gUnknown_2037078 + ldrb r2, [r3] + movs r1, 0xE0 + ands r1, r2 + orrs r0, r1 + strb r0, [r3] + bx lr + .align 2, 0 +_0805C984: .4byte gUnknown_2037078 + thumb_func_end sub_805C970 + + thumb_func_start sub_805C988 +sub_805C988: @ 805C988 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + ldr r3, _0805C9B0 @ =gUnknown_835B882 + lsls r0, r1, 1 + adds r0, r1 + lsls r4, r0, 1 + adds r6, r3, 0x1 +_0805C99E: + lsls r0, r2, 1 + adds r1, r0, r4 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r5 + bne _0805C9B4 + adds r0, r1, r6 + ldrb r0, [r0] + b _0805C9C0 + .align 2, 0 +_0805C9B0: .4byte gUnknown_835B882 +_0805C9B4: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _0805C99E + movs r0, 0x1 +_0805C9C0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805C988 + + thumb_func_start sub_805C9C8 +sub_805C9C8: @ 805C9C8 + push {r4-r6,lr} + ldr r0, _0805C9F0 @ =gUnknown_2037078 + ldrb r5, [r0] + movs r2, 0 + ldr r3, _0805C9F4 @ =gUnknown_835B882 + ldrb r1, [r0, 0x7] + lsls r0, r1, 1 + adds r0, r1 + lsls r4, r0, 1 + adds r6, r3, 0x1 +_0805C9DC: + lsls r0, r2, 1 + adds r1, r0, r4 + adds r0, r1, r6 + ldrb r0, [r0] + ands r0, r5 + cmp r0, 0 + beq _0805C9F8 + adds r0, r1, r3 + ldrb r0, [r0] + b _0805CA04 + .align 2, 0 +_0805C9F0: .4byte gUnknown_2037078 +_0805C9F4: .4byte gUnknown_835B882 +_0805C9F8: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _0805C9DC + movs r0, 0 +_0805CA04: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805C9C8 + + thumb_func_start sub_805CA0C +sub_805CA0C: @ 805CA0C + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _0805CA38 @ =gUnknown_2037078 + ldrb r1, [r5, 0x7] + bl sub_805C988 + lsls r0, 24 + lsrs r0, 24 + orrs r0, r4 + ldrb r1, [r5, 0x1] + orrs r0, r1 + strb r0, [r5, 0x1] + bl sub_805BE08 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CA38: .4byte gUnknown_2037078 + thumb_func_end sub_805CA0C + + thumb_func_start sub_805CA3C +sub_805CA3C: @ 805CA3C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x18 + adds r4, r0, 0 + adds r5, r1, 0 + mov r9, r2 + mov r8, r3 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r1, sp + movs r0, 0xFF + strb r0, [r1] + movs r0, 0 + mov r1, r8 + bl sub_805C7E0 + mov r1, sp + movs r3, 0 + strb r0, [r1, 0x1] + mov r0, sp + lsls r4, 16 + asrs r4, 16 + subs r4, 0x7 + movs r6, 0 + strh r4, [r0, 0x4] + lsls r5, 16 + asrs r5, 16 + subs r5, 0x7 + strh r5, [r0, 0x6] + strb r6, [r0, 0x8] + movs r0, 0xB + strb r0, [r1, 0x9] + mov r2, sp + ldrb r1, [r2, 0xA] + subs r0, 0x1B + ands r0, r1 + strb r0, [r2, 0xA] + mov r0, sp + strb r6, [r0, 0xA] + strh r3, [r0, 0xC] + strh r3, [r0, 0xE] + str r3, [sp, 0x10] + strh r3, [r0, 0x14] + bl sub_805E7F4 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 3 + adds r4, r5 + lsls r4, 2 + ldr r0, _0805CAFC @ =gUnknown_2036E38 + adds r4, r0 + ldrb r0, [r4, 0x2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x2] + bl sub_80DB0C4 + strb r0, [r4, 0x1B] + adds r0, r4, 0 + mov r1, r9 + bl sub_805F218 + bl sub_805C95C + ldr r0, _0805CB00 @ =gUnknown_2037078 + strb r6, [r0, 0x2] + strb r6, [r0, 0x3] + strb r5, [r0, 0x5] + ldrb r1, [r4, 0x4] + strb r1, [r0, 0x4] + mov r1, r8 + strb r1, [r0, 0x7] + movs r0, 0x21 + bl sub_805C970 + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805CAFC: .4byte gUnknown_2036E38 +_0805CB00: .4byte gUnknown_2037078 + thumb_func_end sub_805CA3C + + thumb_func_start sub_805CB04 +sub_805CB04: @ 805CB04 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r6, _0805CB64 @ =gUnknown_2036E38 + ldr r5, _0805CB68 @ =gUnknown_2037078 + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + movs r0, 0x1 + ands r4, r0 + lsls r3, r4, 5 + ldrb r2, [r1, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x1] + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _0805CB5C + ldr r2, _0805CB6C @ =gUnknown_202063C + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x1A] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + lsls r3, r4, 2 + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_0805CB5C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805CB64: .4byte gUnknown_2036E38 +_0805CB68: .4byte gUnknown_2037078 +_0805CB6C: .4byte gUnknown_202063C + thumb_func_end sub_805CB04 + + thumb_func_start sub_805CB70 +sub_805CB70: @ 805CB70 + push {r4,r5,lr} + ldr r5, _0805CBAC @ =gUnknown_2037078 + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805CBB0 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x3 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805CBB4 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CBAC: .4byte gUnknown_2037078 +_0805CBB0: .4byte gUnknown_2036E38 +_0805CBB4: .4byte gUnknown_202063C + thumb_func_end sub_805CB70 + + thumb_func_start sub_805CBB8 +sub_805CBB8: @ 805CBB8 + push {lr} + ldr r2, _0805CBD4 @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0x6 + ands r0, r1 + cmp r0, 0 + bne _0805CBD8 + movs r0, 0x5 + bl sub_805C808 + lsls r0, 24 + lsrs r0, 24 + b _0805CBE0 + .align 2, 0 +_0805CBD4: .4byte gUnknown_2037078 +_0805CBD8: + ldr r0, _0805CBE4 @ =gUnknown_835B88E + ldrb r1, [r2, 0x7] + adds r1, r0 + ldrb r0, [r1] +_0805CBE0: + pop {r1} + bx r1 + .align 2, 0 +_0805CBE4: .4byte gUnknown_835B88E + thumb_func_end sub_805CBB8 + + thumb_func_start sub_805CBE8 +sub_805CBE8: @ 805CBE8 + push {r4,r5,lr} + ldr r5, _0805CC20 @ =gUnknown_2037078 + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805CC24 @ =gUnknown_2036E38 + adds r4, r0 + bl sub_805CBB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805CC28 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CC20: .4byte gUnknown_2037078 +_0805CC24: .4byte gUnknown_2036E38 +_0805CC28: .4byte gUnknown_202063C + thumb_func_end sub_805CBE8 + + thumb_func_start sub_805CC2C +sub_805CC2C: @ 805CC2C + push {lr} + movs r0, 0x2 + bl sub_8150498 + pop {r0} + bx r0 + thumb_func_end sub_805CC2C + + thumb_func_start nullsub_24 +nullsub_24: @ 805CC38 + bx lr + thumb_func_end nullsub_24 + + thumb_func_start nullsub_25 +nullsub_25: @ 805CC3C + bx lr + thumb_func_end nullsub_25 + + thumb_func_start sub_805CC40 +sub_805CC40: @ 805CC40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrb r0, [r5, 0x1E] + mov r8, r0 + movs r1, 0 + mov r0, sp + strh r1, [r0] + movs r6, 0x1 + ldr r1, _0805CCA4 @ =gUnknown_835B890 + mov r9, r1 + mov r4, sp + mov r7, sp + adds r7, 0x2 +_0805CC62: + movs r1, 0 + ldrsh r0, [r4, r1] + lsls r0, 2 + add r0, r9 + ldr r1, [r0] + mov r0, r8 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _0805CCA8 + ldrb r0, [r5, 0x18] + lsrs r0, 4 + cmp r6, r0 + bne _0805CCA8 + ldrh r0, [r5, 0x10] + strh r0, [r4] + ldrh r0, [r5, 0x12] + strh r0, [r7] + adds r0, r6, 0 + mov r1, sp + adds r2, r7, 0 + bl sub_8063A20 + ldrb r0, [r5, 0x1B] + movs r1, 0 + ldrsh r2, [r4, r1] + movs r1, 0 + ldrsh r3, [r7, r1] + adds r1, r6, 0 + bl sub_80DB134 + b _0805CCC2 + .align 2, 0 +_0805CCA4: .4byte gUnknown_835B890 +_0805CCA8: + ldrh r1, [r4] + adds r1, 0x1 + strh r1, [r4] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x3 + ble _0805CC62 + ldrb r0, [r5, 0x1B] + bl sub_80DB114 +_0805CCC2: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805CC40 + + thumb_func_start sub_805CCD0 +sub_805CCD0: @ 805CCD0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _0805CD04 @ =sub_805CD0C + adds r0, r6, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805CD08 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + strh r5, [r1, 0xC] + bl _call_via_r6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805CD04: .4byte sub_805CD0C +_0805CD08: .4byte gUnknown_3005090 + thumb_func_end sub_805CCD0 + + thumb_func_start sub_805CD0C +sub_805CD0C: @ 805CD0C + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r6, _0805CD54 @ =gUnknown_835B8A0 + ldr r2, _0805CD58 @ =gUnknown_3005090 + ldr r5, _0805CD5C @ =gUnknown_2036E38 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0805CD20: + movs r0, 0x8 + ldrsh r3, [r4, r0] + lsls r3, 2 + adds r3, r6 + ldr r0, _0805CD60 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + ldr r3, [r3] + adds r0, r4, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _0805CD20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805CD54: .4byte gUnknown_835B8A0 +_0805CD58: .4byte gUnknown_3005090 +_0805CD5C: .4byte gUnknown_2036E38 +_0805CD60: .4byte gUnknown_2037078 + thumb_func_end sub_805CD0C + + thumb_func_start sub_805CD64 +sub_805CD64: @ 805CD64 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069940 + ldr r1, _0805CD80 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805CD80: .4byte gUnknown_2037078 + thumb_func_end sub_805CD64 + + thumb_func_start sub_805CD84 +sub_805CD84: @ 805CD84 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r5, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + bne _0805CE0E + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + bne _0805CE0E + adds r0, r5, 0 + bl sub_8063D7C + adds r0, r4, 0 + bl sub_8063D7C + ldrb r0, [r6, 0xC] + bl sub_8064244 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_805C06C + ldrb r0, [r6, 0xC] + bl sub_8063F2C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805C0A4 + ldr r2, _0805CE18 @ =gUnknown_20386E0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x12 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + ldrb r0, [r4, 0xB] + lsrs r0, 4 + str r0, [r2, 0x8] + ldr r3, _0805CE1C @ =gUnknown_202063C + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r2, 0xC] + movs r0, 0xA + bl sub_8083444 + movs r0, 0xCF + bl sub_80722CC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_0805CE0E: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805CE18: .4byte gUnknown_20386E0 +_0805CE1C: .4byte gUnknown_202063C + thumb_func_end sub_805CD84 + + thumb_func_start sub_805CE20 +sub_805CE20: @ 805CE20 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r5, 0 + bl sub_8063D68 + lsls r0, 24 + cmp r0, 0 + beq _0805CE70 + adds r0, r4, 0 + bl sub_8063D68 + lsls r0, 24 + cmp r0, 0 + beq _0805CE70 + adds r0, r5, 0 + bl sub_8063D7C + adds r0, r4, 0 + bl sub_8063D7C + adds r0, r4, 0 + bl sub_806DE28 + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x12] + bl sub_806DE70 + ldr r1, _0805CE78 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x6] + bl sub_806994C + ldr r0, _0805CE7C @ =sub_805CD0C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0805CE70: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805CE78: .4byte gUnknown_2037078 +_0805CE7C: .4byte sub_805CD0C + thumb_func_end sub_805CE20 + + thumb_func_start sub_805CE80 +sub_805CE80: @ 805CE80 + push {r4,lr} + ldr r4, _0805CE9C @ =sub_805CEA0 + adds r0, r4, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CE9C: .4byte sub_805CEA0 + thumb_func_end sub_805CE80 + + thumb_func_start sub_805CEA0 +sub_805CEA0: @ 805CEA0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805CEDC @ =gUnknown_835B8AC + ldr r2, _0805CEE0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0805CEB2: + movs r0, 0x8 + ldrsh r2, [r4, r0] + lsls r2, 2 + adds r2, r5 + ldr r0, _0805CEE4 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0805CEE8 @ =gUnknown_2036E38 + adds r1, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _0805CEB2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CEDC: .4byte gUnknown_835B8AC +_0805CEE0: .4byte gUnknown_3005090 +_0805CEE4: .4byte gUnknown_2037078 +_0805CEE8: .4byte gUnknown_2036E38 + thumb_func_end sub_805CEA0 + + thumb_func_start sub_805CEEC +sub_805CEEC: @ 805CEEC + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + ldr r5, _0805CF50 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r5, 0x6] + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805CF48 + movs r0, 0xA + bl sub_80722CC + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806413C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805C06C + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _0805CF48 + movs r0, 0 + strb r0, [r5, 0x6] + ldrb r0, [r5, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5, 0x1] + ldr r0, _0805CF54 @ =sub_805CEA0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0805CF48: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805CF50: .4byte gUnknown_2037078 +_0805CF54: .4byte sub_805CEA0 + thumb_func_end sub_805CEEC + + thumb_func_start sub_805CF58 +sub_805CF58: @ 805CF58 + push {r4,lr} + ldr r4, _0805CF74 @ =sub_805CF78 + adds r0, r4, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CF74: .4byte sub_805CF78 + thumb_func_end sub_805CF58 + + thumb_func_start sub_805CF78 +sub_805CF78: @ 805CF78 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805CFB4 @ =gUnknown_835B8B0 + ldr r2, _0805CFB8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0805CF8A: + movs r0, 0x8 + ldrsh r2, [r4, r0] + lsls r2, 2 + adds r2, r5 + ldr r0, _0805CFBC @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0805CFC0 @ =gUnknown_2036E38 + adds r1, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _0805CF8A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CFB4: .4byte gUnknown_835B8B0 +_0805CFB8: .4byte gUnknown_3005090 +_0805CFBC: .4byte gUnknown_2037078 +_0805CFC0: .4byte gUnknown_2036E38 + thumb_func_end sub_805CF78 + + thumb_func_start sub_805CFC4 +sub_805CFC4: @ 805CFC4 + push {lr} + ldrh r2, [r0, 0x8] + adds r2, 0x1 + strh r2, [r0, 0x8] + ldrb r1, [r1, 0x18] + lsrs r1, 4 + strh r1, [r0, 0xA] + ldr r1, _0805CFE8 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + bl sub_8069940 + movs r0, 0x27 + bl sub_80722CC + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0805CFE8: .4byte gUnknown_2037078 + thumb_func_end sub_805CFC4 + + thumb_func_start sub_805CFEC +sub_805CFEC: @ 805CFEC + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0805D060 @ =gUnknown_835B8C0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r5, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805D054 + ldrb r0, [r5, 0x18] + lsrs r0, 4 + subs r0, 0x1 + add r0, sp + ldrb r6, [r0] + adds r0, r6, 0 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_805C06C + ldrb r0, [r4, 0xA] + cmp r6, r0 + bne _0805D032 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_0805D032: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _0805D054 + ldrb r0, [r4, 0xA] + bl sub_8064480 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _0805D054 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0805D054: + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805D060: .4byte gUnknown_835B8C0 + thumb_func_end sub_805CFEC + + thumb_func_start sub_805D064 +sub_805D064: @ 805D064 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _0805D0A0 @ =gUnknown_835B8C4 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805D094 + movs r1, 0xC + ldrsh r0, [r5, r1] + add r0, sp + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_805C06C + movs r0, 0x1 + strh r0, [r5, 0x8] +_0805D094: + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805D0A0: .4byte gUnknown_835B8C4 + thumb_func_end sub_805D064 + + thumb_func_start sub_805D0A4 +sub_805D0A4: @ 805D0A4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805D0E8 + ldrb r0, [r4, 0xA] + bl sub_8064480 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063F2C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_805C06C + bl sub_806994C + ldr r1, _0805D0F0 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x6] + ldr r0, _0805D0F4 @ =sub_805CF78 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0805D0E8: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805D0F0: .4byte gUnknown_2037078 +_0805D0F4: .4byte sub_805CF78 + thumb_func_end sub_805D0A4 + + thumb_func_start sub_805D0F8 +sub_805D0F8: @ 805D0F8 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8069940 + bl sub_8068974 + bl sub_8055E84 + bl sub_8055F1C + ldr r2, _0805D148 @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0xF7 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strb r0, [r2, 0x6] + ldr r5, _0805D14C @ =sub_805D1D4 + adds r0, r5, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805D150 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + bl _call_via_r5 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805D148: .4byte gUnknown_2037078 +_0805D14C: .4byte sub_805D1D4 +_0805D150: .4byte gUnknown_3005090 + thumb_func_end sub_805D0F8 + + thumb_func_start sub_805D154 +sub_805D154: @ 805D154 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8069940 + bl sub_8068974 + ldr r2, _0805D19C @ =gUnknown_2037078 + ldrb r1, [r2] + movs r0, 0xF7 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strb r0, [r2, 0x6] + ldr r5, _0805D1A0 @ =sub_805D1D4 + adds r0, r5, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805D1A4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + bl _call_via_r5 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805D19C: .4byte gUnknown_2037078 +_0805D1A0: .4byte sub_805D1D4 +_0805D1A4: .4byte gUnknown_3005090 + thumb_func_end sub_805D154 + + thumb_func_start sub_805D1A8 +sub_805D1A8: @ 805D1A8 + push {lr} + ldr r0, _0805D1CC @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0805D1C6 + cmp r0, 0x3 + beq _0805D1C6 + ldr r0, _0805D1D0 @ =gUnknown_835B820 + ldrb r0, [r0, 0x2] + movs r1, 0x10 + bl sub_811278C + movs r0, 0x2 + bl sub_805D0F8 +_0805D1C6: + pop {r0} + bx r0 + .align 2, 0 +_0805D1CC: .4byte gUnknown_3005E88 +_0805D1D0: .4byte gUnknown_835B820 + thumb_func_end sub_805D1A8 + + thumb_func_start sub_805D1D4 +sub_805D1D4: @ 805D1D4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0805D230 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D234 @ =gUnknown_2036E38 + adds r5, r0, r1 + adds r0, r5, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0805D200 + adds r0, r5, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805D228 +_0805D200: + ldrb r0, [r5, 0x1A] + movs r1, 0x2 + bl sub_80DC44C + ldr r0, _0805D238 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r0 + ldrb r0, [r4, 0x8] + bl sub_80641EC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_805C06C + ldr r0, _0805D23C @ =sub_805D240 + str r0, [r4] +_0805D228: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805D230: .4byte gUnknown_2037078 +_0805D234: .4byte gUnknown_2036E38 +_0805D238: .4byte gUnknown_3005090 +_0805D23C: .4byte sub_805D240 + thumb_func_end sub_805D1D4 + + thumb_func_start sub_805D240 +sub_805D240: @ 805D240 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _0805D2B4 @ =gUnknown_2037078 + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D2B8 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805D2AE + movs r0, 0 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805C06C + movs r0, 0 + strb r0, [r6, 0x6] + bl sub_806994C + bl sub_8068A5C + ldrb r1, [r4, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D2BC @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r5, 0 + bl sub_8077508 + bl sub_812B35C +_0805D2AE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805D2B4: .4byte gUnknown_2037078 +_0805D2B8: .4byte gUnknown_2036E38 +_0805D2BC: .4byte gUnknown_202063C + thumb_func_end sub_805D240 + + thumb_func_start sub_805D2C0 +sub_805D2C0: @ 805D2C0 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _0805D2FC @ =sub_805D304 + adds r0, r5, 0 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805D300 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x26] + bl _call_via_r5 + movs r0, 0x2 + bl sub_8150474 + cmp r0, 0x1 + bne _0805D2F4 + bl sub_8112C9C +_0805D2F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805D2FC: .4byte sub_805D304 +_0805D300: .4byte gUnknown_3005090 + thumb_func_end sub_805D2C0 + + thumb_func_start sub_805D304 +sub_805D304: @ 805D304 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805D334 @ =gUnknown_835B8CC + ldr r2, _0805D338 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0805D316: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _0805D316 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805D334: .4byte gUnknown_835B8CC +_0805D338: .4byte gUnknown_3005090 + thumb_func_end sub_805D304 + + thumb_func_start sub_805D33C +sub_805D33C: @ 805D33C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069940 + ldr r1, _0805D358 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805D358: .4byte gUnknown_2037078 + thumb_func_end sub_805D33C + + thumb_func_start sub_805D35C +sub_805D35C: @ 805D35C + push {r4-r6,lr} + sub sp, 0x10 + adds r5, r0, 0 + ldr r1, _0805D3E4 @ =gUnknown_835B90C + mov r0, sp + movs r2, 0x6 + bl memcpy + add r4, sp, 0x8 + ldr r1, _0805D3E8 @ =gUnknown_835B912 + adds r0, r4, 0 + movs r2, 0x6 + bl memcpy + movs r0, 0 + strh r0, [r5, 0x20] + bl sub_8044EC8 + movs r2, 0x26 + ldrsh r1, [r5, r2] + lsls r1, 1 + mov r2, sp + adds r6, r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r4, r1 + movs r2, 0 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r6] + adds r1, r0 + strh r1, [r5, 0x22] + ldr r3, _0805D3EC @ =gUnknown_2036E38 + ldr r2, _0805D3F0 @ =gUnknown_2037078 + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x5] + strh r0, [r5, 0x24] + ldrb r0, [r2, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + adds r4, r3 + adds r0, r4, 0 + bl sub_8063D1C + ldrb r0, [r4, 0x1] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_805CC2C + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805D3E4: .4byte gUnknown_835B90C +_0805D3E8: .4byte gUnknown_835B912 +_0805D3EC: .4byte gUnknown_2036E38 +_0805D3F0: .4byte gUnknown_2037078 + thumb_func_end sub_805D35C + + thumb_func_start sub_805D3F4 +sub_805D3F4: @ 805D3F4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0805D428 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D42C @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3B + ble _0805D41E + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0805D41E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805D428: .4byte gUnknown_2037078 +_0805D42C: .4byte gUnknown_202063C + thumb_func_end sub_805D3F4 + + thumb_func_start sub_805D430 +sub_805D430: @ 805D430 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + movs r1, 0x1 + bl sub_80F7768 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + strh r1, [r4, 0xC] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r1, r0, 0 + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0805D468 + adds r0, r1, 0x4 + strh r0, [r4, 0xE] +_0805D468: + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x9 + ble _0805D474 + movs r0, 0xA + strh r0, [r4, 0xE] +_0805D474: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805D430 + + thumb_func_start sub_805D47C +sub_805D47C: @ 805D47C + push {r4,r5,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r0, _0805D4CC @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D4D0 @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _0805D4F8 + strh r5, [r4, 0xA] + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0805D4D4 + ldrh r0, [r4, 0x8] + adds r1, r0, 0x1 + strh r1, [r4, 0x8] + ldrh r2, [r4, 0x20] + movs r3, 0x20 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _0805D4C6 + adds r0, r1, 0x1 + strh r0, [r4, 0x8] +_0805D4C6: + adds r0, r2, 0x1 + strh r0, [r4, 0x20] + b _0805D4F8 + .align 2, 0 +_0805D4CC: .4byte gUnknown_2037078 +_0805D4D0: .4byte gUnknown_202063C +_0805D4D4: + ldr r2, _0805D504 @ =gUnknown_835B918 + movs r1, 0xC + ldrsh r0, [r4, r1] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 26 + lsrs r3, 24 + movs r0, 0x1 + str r0, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + bl sub_8002C48 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_0805D4F8: + movs r0, 0 + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805D504: .4byte gUnknown_835B918 + thumb_func_end sub_805D47C + + thumb_func_start sub_805D508 +sub_805D508: @ 805D508 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _0805D540 @ =gUnknown_2037078 + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0805D544 @ =gUnknown_202063C + adds r0, r5 + bl sub_805D9C4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + bl sub_8082F78 + lsls r0, 24 + cmp r0, 0 + beq _0805D53A + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0805D548 +_0805D53A: + movs r0, 0xB + strh r0, [r4, 0x8] + b _0805D56A + .align 2, 0 +_0805D540: .4byte gUnknown_2037078 +_0805D544: .4byte gUnknown_202063C +_0805D548: + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r5 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063510 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_0805D56A: + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805D508 + + thumb_func_start sub_805D574 +sub_805D574: @ 805D574 + ldrh r1, [r0, 0x8] + adds r1, 0x3 + strh r1, [r0, 0x8] + movs r0, 0 + bx lr + thumb_func_end sub_805D574 + + thumb_func_start sub_805D580 +sub_805D580: @ 805D580 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _0805D5C0 @ =gUnknown_835B91A + mov r0, sp + movs r2, 0x6 + bl memcpy + ldr r0, _0805D5C4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D5C8 @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r2, 0x26 + ldrsh r0, [r4, r2] + lsls r0, 1 + add r0, sp + lsls r1, 16 + asrs r1, 16 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r1, r0 + blt _0805D5CC + movs r0, 0xC + b _0805D5DC + .align 2, 0 +_0805D5C0: .4byte gUnknown_835B91A +_0805D5C4: .4byte gUnknown_2037078 +_0805D5C8: .4byte gUnknown_202063C +_0805D5CC: + ldr r0, _0805D5E8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0805D5DE + ldrh r0, [r4, 0x8] + adds r0, 0x1 +_0805D5DC: + strh r0, [r4, 0x8] +_0805D5DE: + movs r0, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805D5E8: .4byte gUnknown_30030F0 + thumb_func_end sub_805D580 + + thumb_func_start sub_805D5EC +sub_805D5EC: @ 805D5EC + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r1, _0805D660 @ =gUnknown_835B920 + mov r0, sp + movs r2, 0xC + bl memcpy + ldr r0, _0805D664 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D668 @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0805D650 + cmp r1, 0x1 + bgt _0805D654 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + movs r3, 0x20 + ldrsh r2, [r4, r3] + lsls r2, 1 + movs r3, 0x26 + ldrsh r1, [r4, r3] + lsls r1, 2 + adds r2, r1 + mov r3, sp + adds r1, r3, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r0, 16 + asrs r0, 16 + cmp r1, r0 + ble _0805D654 +_0805D650: + movs r0, 0x3 + strh r0, [r4, 0x8] +_0805D654: + movs r0, 0 + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805D660: .4byte gUnknown_835B920 +_0805D664: .4byte gUnknown_2037078 +_0805D668: .4byte gUnknown_202063C + thumb_func_end sub_805D5EC + + thumb_func_start sub_805D66C +sub_805D66C: @ 805D66C + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + ldr r0, _0805D6BC @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D6C0 @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _0805D6C4 @ =gUnknown_841D14E + movs r5, 0 + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0x1 + bl sub_80F6CD0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + strh r5, [r4, 0xA] + movs r0, 0 + add sp, 0x10 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805D6BC: .4byte gUnknown_2037078 +_0805D6C0: .4byte gUnknown_202063C +_0805D6C4: .4byte gUnknown_841D14E + thumb_func_end sub_805D66C + + thumb_func_start sub_805D6C8 +sub_805D6C8: @ 805D6C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0805D6EA + ldr r0, _0805D774 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D778 @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 +_0805D6EA: + bl sub_8002DE8 + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0805D788 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0 + bne _0805D780 + ldr r7, _0805D774 @ =gUnknown_2037078 + ldrb r0, [r7, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805D77C @ =gUnknown_2036E38 + mov r8, r0 + add r4, r8 + ldrh r1, [r5, 0x24] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_805F218 + ldrb r1, [r7] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805D748 + ldrb r0, [r7, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x1A] + movs r1, 0 + movs r2, 0 + bl sub_80DC4A4 +_0805D748: + ldr r2, _0805D778 @ =gUnknown_202063C + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x24] + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x26] + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + b _0805D7AA + .align 2, 0 +_0805D774: .4byte gUnknown_2037078 +_0805D778: .4byte gUnknown_202063C +_0805D77C: .4byte gUnknown_2036E38 +_0805D780: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0805D7AA +_0805D788: + ldr r1, _0805D7B8 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x6] + bl sub_806994C + ldrh r0, [r5, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8082FB0 + ldr r0, _0805D7BC @ =sub_805D304 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0805D7AA: + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805D7B8: .4byte gUnknown_2037078 +_0805D7BC: .4byte sub_805D304 + thumb_func_end sub_805D6C8 + + thumb_func_start sub_805D7C0 +sub_805D7C0: @ 805D7C0 + push {r4-r6,lr} + sub sp, 0x10 + adds r6, r0, 0 + ldr r4, _0805D82C @ =gUnknown_2037078 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0805D830 @ =gUnknown_202063C + adds r0, r5 + bl sub_805D9C4 + ldrb r0, [r4, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r5 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063500 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _0805D834 @ =gUnknown_841D169 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0x1 + bl sub_80F6CD0 + movs r0, 0xD + strh r0, [r6, 0x8] + movs r0, 0x1 + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805D82C: .4byte gUnknown_2037078 +_0805D830: .4byte gUnknown_202063C +_0805D834: .4byte gUnknown_841D169 + thumb_func_end sub_805D7C0 + + thumb_func_start sub_805D838 +sub_805D838: @ 805D838 + push {r4-r6,lr} + sub sp, 0x10 + adds r6, r0, 0 + ldr r4, _0805D8A0 @ =gUnknown_2037078 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0805D8A4 @ =gUnknown_202063C + adds r0, r5 + bl sub_805D9C4 + ldrb r0, [r4, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r5 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063500 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + ldr r2, _0805D8A8 @ =gUnknown_841D17E + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0x1 + bl sub_80F6CD0 + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + movs r0, 0x1 + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805D8A0: .4byte gUnknown_2037078 +_0805D8A4: .4byte gUnknown_202063C +_0805D8A8: .4byte gUnknown_841D17E + thumb_func_end sub_805D838 + + thumb_func_start sub_805D8AC +sub_805D8AC: @ 805D8AC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0805D8D0 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805D8D4 @ =gUnknown_202063C + adds r0, r1 + bl sub_805D9C4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805D8D0: .4byte gUnknown_2037078 +_0805D8D4: .4byte gUnknown_202063C + thumb_func_end sub_805D8AC + + thumb_func_start sub_805D8D8 +sub_805D8D8: @ 805D8D8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r5, _0805D974 @ =gUnknown_2037078 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r7, _0805D978 @ =gUnknown_202063C + adds r0, r7 + bl sub_805D9C4 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + bge _0805D968 + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805D97C @ =gUnknown_2036E38 + mov r8, r0 + add r4, r8 + ldrh r1, [r6, 0x24] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_805F218 + ldrb r1, [r5] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805D948 + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x1A] + movs r1, 0 + movs r2, 0 + bl sub_80DC4A4 +_0805D948: + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + movs r2, 0 + strh r2, [r0, 0x24] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x26] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_0805D968: + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805D974: .4byte gUnknown_2037078 +_0805D978: .4byte gUnknown_202063C +_0805D97C: .4byte gUnknown_2036E38 + thumb_func_end sub_805D8D8 + + thumb_func_start sub_805D980 +sub_805D980: @ 805D980 + push {lr} + bl sub_8002DE8 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _0805D9B6 + ldr r0, _0805D9BC @ =gUnknown_2037078 + strb r1, [r0, 0x6] + bl sub_806994C + bl sub_8068A5C + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + ldr r0, _0805D9C0 @ =sub_805D304 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0805D9B6: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0805D9BC: .4byte gUnknown_2037078 +_0805D9C0: .4byte sub_805D304 + thumb_func_end sub_805D980 + + thumb_func_start sub_805D9C4 +sub_805D9C4: @ 805D9C4 + push {r4-r7,lr} + adds r4, r0, 0 + bl sub_8007824 + movs r0, 0 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x2B + ldrb r5, [r0] + movs r0, 0x2A + adds r0, r4 + mov r12, r0 + ldrb r0, [r0] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r6, r5, 2 + adds r0, r6, r0 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r7, 0x1 + negs r7, r7 + cmp r0, r7 + beq _0805DA28 + adds r3, r4, 0 + adds r3, 0x2C + ldrb r2, [r3] + lsls r1, r2, 26 + lsrs r1, 26 + adds r1, 0x1 + movs r0, 0x3F + ands r1, r0 + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + mov r1, r12 + ldrb r0, [r1] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + adds r0, r6, r0 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, r7 + bne _0805DA2E +_0805DA28: + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0805DA2E: + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r5, 2 + adds r0, r1 + ldrb r5, [r0] + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0805DA60 + movs r0, 0x8 + strh r0, [r4, 0x24] + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0805DA60 + ldr r0, _0805DAA4 @ =0x0000fff8 + strh r0, [r4, 0x24] +_0805DA60: + cmp r5, 0x5 + bne _0805DA68 + ldr r0, _0805DAA4 @ =0x0000fff8 + strh r0, [r4, 0x26] +_0805DA68: + adds r0, r5, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0805DA78 + movs r0, 0x8 + strh r0, [r4, 0x26] +_0805DA78: + ldr r3, _0805DAA8 @ =gUnknown_2037078 + ldrb r1, [r3] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805DA9C + ldr r2, _0805DAAC @ =gUnknown_2036E38 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1A] + movs r1, 0x26 + ldrsh r2, [r4, r1] + movs r1, 0x1 + bl sub_80DC4A4 +_0805DA9C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805DAA4: .4byte 0x0000fff8 +_0805DAA8: .4byte gUnknown_2037078 +_0805DAAC: .4byte gUnknown_2036E38 + thumb_func_end sub_805D9C4 + + thumb_func_start sub_805DAB0 +sub_805DAB0: @ 805DAB0 + push {r4,lr} + ldr r4, _0805DACC @ =sub_805DB04 + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805DACC: .4byte sub_805DB04 + thumb_func_end sub_805DAB0 + + thumb_func_start sub_805DAD0 +sub_805DAD0: @ 805DAD0 + push {lr} + ldr r0, _0805DAE0 @ =sub_805DB04 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805DAE0: .4byte sub_805DB04 + thumb_func_end sub_805DAD0 + + thumb_func_start sub_805DAE4 +sub_805DAE4: @ 805DAE4 + ldr r1, _0805DAEC @ =gUnknown_2036E34 + strb r0, [r1] + bx lr + .align 2, 0 +_0805DAEC: .4byte gUnknown_2036E34 + thumb_func_end sub_805DAE4 + + thumb_func_start sub_805DAF0 +sub_805DAF0: @ 805DAF0 + push {lr} + ldr r1, _0805DB00 @ =gUnknown_2036E34 + ldrb r0, [r1] + cmp r0, 0 + bne _0805DAFC + movs r0, 0x1 +_0805DAFC: + pop {r1} + bx r1 + .align 2, 0 +_0805DB00: .4byte gUnknown_2036E34 + thumb_func_end sub_805DAF0 + + thumb_func_start sub_805DB04 +sub_805DB04: @ 805DB04 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + ldr r0, _0805DB48 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805DB4C @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805DB50 @ =gUnknown_202063C + adds r7, r0, r1 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _0805DB54 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r0, 0 + ldrsh r6, [r5, r0] + cmp r6, 0x1 + beq _0805DBBA + cmp r6, 0x1 + bgt _0805DB58 + cmp r6, 0 + beq _0805DB5E + b _0805DBFA + .align 2, 0 +_0805DB48: .4byte gUnknown_2037078 +_0805DB4C: .4byte gUnknown_2036E38 +_0805DB50: .4byte gUnknown_202063C +_0805DB54: .4byte gUnknown_3005098 +_0805DB58: + cmp r6, 0x2 + beq _0805DBF4 + b _0805DBFA +_0805DB5E: + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0805DBFA + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_805DAE4 + movs r1, 0 + mov r8, r1 + strh r6, [r5, 0x2] + movs r0, 0x1 + strh r0, [r5, 0x4] + ldrh r0, [r7, 0x26] + ldrh r2, [r7, 0x22] + adds r0, r2 + lsls r0, 4 + strh r0, [r5, 0x6] + strh r6, [r7, 0x26] + bl sub_805FAF8 + ldrb r0, [r4, 0x3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x3] + ldrb r1, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r7, 0x5] + adds r0, r7, 0 + adds r0, 0x43 + mov r1, r8 + strb r1, [r0] + adds r2, r7, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_0805DBBA: + adds r1, r5, 0x2 + adds r0, r4, 0 + bl sub_805DDC8 + ldrh r0, [r5, 0x6] + ldrh r1, [r5, 0x4] + subs r0, r1 + strh r0, [r5, 0x6] + adds r1, 0x3 + strh r1, [r5, 0x4] + lsls r0, 16 + asrs r0, 20 + strh r0, [r7, 0x22] + movs r2, 0x22 + ldrsh r1, [r7, r2] + ldr r0, _0805DBF0 @ =gUnknown_3005068 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r1, r0 + movs r0, 0x20 + negs r0, r0 + cmp r1, r0 + bge _0805DBFA + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0805DBFA + .align 2, 0 +_0805DBF0: .4byte gUnknown_3005068 +_0805DBF4: + adds r0, r2, 0 + bl sub_8077508 +_0805DBFA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805DB04 + + thumb_func_start sub_805DC04 +sub_805DC04: @ 805DC04 + push {r4,lr} + ldr r4, _0805DC20 @ =sub_805DC38 + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805DC20: .4byte sub_805DC38 + thumb_func_end sub_805DC04 + + thumb_func_start sub_805DC24 +sub_805DC24: @ 805DC24 + push {lr} + ldr r0, _0805DC34 @ =sub_805DC38 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805DC34: .4byte sub_805DC38 + thumb_func_end sub_805DC24 + + thumb_func_start sub_805DC38 +sub_805DC38: @ 805DC38 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _0805DC80 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805DC84 @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805DC88 @ =gUnknown_202063C + adds r7, r0, r1 + mov r1, r8 + lsls r0, r1, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _0805DC8C @ =gUnknown_3005098 + adds r5, r0, r1 + movs r2, 0 + ldrsh r6, [r5, r2] + cmp r6, 0x1 + beq _0805DD1A + cmp r6, 0x1 + bgt _0805DC90 + cmp r6, 0 + beq _0805DC9A + b _0805DDBA + .align 2, 0 +_0805DC80: .4byte gUnknown_2037078 +_0805DC84: .4byte gUnknown_2036E38 +_0805DC88: .4byte gUnknown_202063C +_0805DC8C: .4byte gUnknown_3005098 +_0805DC90: + cmp r6, 0x2 + beq _0805DD58 + cmp r6, 0x3 + beq _0805DD76 + b _0805DDBA +_0805DC9A: + bl sub_805DAF0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xA] + ldr r1, _0805DD54 @ =gUnknown_835B92C + movs r3, 0xA + ldrsh r0, [r5, r3] + adds r0, r1 + ldrb r0, [r0] + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063D00 + movs r0, 0 + mov r9, r0 + strh r6, [r5, 0x2] + movs r0, 0x74 + strh r0, [r5, 0x4] + ldrh r0, [r7, 0x22] + strh r0, [r5, 0x8] + ldrb r0, [r7, 0x5] + lsls r0, 28 + lsrs r0, 30 + strh r0, [r5, 0xC] + movs r1, 0x43 + adds r1, r7 + mov r8, r1 + ldrb r0, [r1] + strh r0, [r5, 0xE] + ldrh r0, [r7, 0x26] + adds r0, 0x20 + negs r0, r0 + lsls r0, 4 + strh r0, [r5, 0x6] + strh r6, [r7, 0x26] + bl sub_805FAF8 + ldrb r0, [r4, 0x3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r4, 0x3] + ldrb r1, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r7, 0x5] + mov r3, r9 + mov r2, r8 + strb r3, [r2] + adds r2, r7, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_0805DD1A: + adds r1, r5, 0x2 + adds r0, r4, 0 + bl sub_805DDC8 + ldrh r0, [r5, 0x4] + ldrh r2, [r5, 0x6] + adds r1, r0, r2 + strh r1, [r5, 0x6] + subs r0, 0x3 + strh r0, [r5, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bgt _0805DD3A + movs r0, 0x4 + strh r0, [r5, 0x4] +_0805DD3A: + ldrh r0, [r5, 0x6] + lsls r0, 16 + asrs r0, 20 + strh r0, [r7, 0x22] + ldrh r2, [r5, 0x8] + movs r3, 0x8 + ldrsh r1, [r5, r3] + cmp r0, r1 + blt _0805DDBA + strh r2, [r7, 0x22] + movs r0, 0 + strh r0, [r5, 0x10] + b _0805DD6E + .align 2, 0 +_0805DD54: .4byte gUnknown_835B92C +_0805DD58: + adds r1, r5, 0x2 + adds r0, r4, 0 + bl sub_805DDC8 + ldrh r0, [r5, 0x10] + adds r0, 0x1 + strh r0, [r5, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _0805DDBA +_0805DD6E: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0805DDBA +_0805DD76: + movs r0, 0xA + ldrsh r6, [r5, r0] + adds r1, r5, 0x2 + adds r0, r4, 0 + bl sub_805DDC8 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _0805DDBA + ldrb r1, [r4, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x3] + movs r0, 0x3 + ldrb r1, [r5, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] + ldrh r1, [r5, 0xE] + adds r0, r7, 0 + adds r0, 0x43 + strb r1, [r0] + bl sub_805FAA8 + mov r0, r8 + bl sub_8077508 +_0805DDBA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805DC38 + + thumb_func_start sub_805DDC8 +sub_805DDC8: @ 805DDC8 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldrh r1, [r6] + movs r2, 0 + ldrsh r0, [r6, r2] + cmp r0, 0x7 + bgt _0805DDE4 + adds r0, r1, 0x1 + strh r0, [r6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _0805DE20 +_0805DDE4: + adds r0, r5, 0 + bl sub_8063D68 + lsls r0, 24 + cmp r0, 0 + beq _0805DE20 + ldr r4, _0805DE1C @ =gUnknown_835B92C + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r0, r4 + ldrb r0, [r0] + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8063D00 + movs r0, 0 + strh r0, [r6] + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r0, r4 + ldrb r0, [r0] + b _0805DE26 + .align 2, 0 +_0805DE1C: .4byte gUnknown_835B92C +_0805DE20: + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 +_0805DE26: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805DDC8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_poison.s b/asm/field_poison.s new file mode 100644 index 000000000..cb785d89e --- /dev/null +++ b/asm/field_poison.s @@ -0,0 +1,316 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0460 +sub_80A0460: @ 80A0460 + push {lr} + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080A0478 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bne _080A047C +_080A0478: + movs r0, 0 + b _080A047E +_080A047C: + movs r0, 0x1 +_080A047E: + pop {r1} + bx r1 + thumb_func_end sub_80A0460 + + thumb_func_start sub_80A0484 +sub_80A0484: @ 80A0484 + push {r4,r5,lr} + ldr r4, _080A04A4 @ =gUnknown_2024284 + movs r5, 0 +_080A048A: + adds r0, r4, 0 + bl sub_80A0460 + cmp r0, 0 + beq _080A04A8 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _080A04A8 + movs r0, 0 + b _080A04B2 + .align 2, 0 +_080A04A4: .4byte gUnknown_2024284 +_080A04A8: + adds r5, 0x1 + adds r4, 0x64 + cmp r5, 0x5 + ble _080A048A + movs r0, 0x1 +_080A04B2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80A0484 + + thumb_func_start sub_80A04B8 +sub_80A04B8: @ 80A04B8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _080A04FC @ =gUnknown_2024284 + adds r4, r0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x8 + bl sub_80436F8 + adds r0, r4, 0 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + ldr r5, _080A0500 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_803FBE8 + adds r0, r5, 0 + bl sub_8008D28 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A04FC: .4byte gUnknown_2024284 +_080A0500: .4byte gUnknown_2021CD0 + thumb_func_end sub_80A04B8 + + thumb_func_start sub_80A0504 +sub_80A0504: @ 80A0504 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + ldr r0, _080A0540 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + bl sub_80A0460 + cmp r0, 0 + beq _080A0544 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _080A0544 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + bl sub_812085C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A0544 + movs r0, 0x1 + b _080A0546 + .align 2, 0 +_080A0540: .4byte gUnknown_2024284 +_080A0544: + movs r0, 0 +_080A0546: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80A0504 + + thumb_func_start sub_80A054C +sub_80A054C: @ 80A054C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A0570 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080A05A6 + cmp r0, 0x1 + bgt _080A0574 + cmp r0, 0 + beq _080A057A + b _080A05F6 + .align 2, 0 +_080A0570: .4byte gUnknown_3005098 +_080A0574: + cmp r0, 0x2 + beq _080A05B8 + b _080A05F6 +_080A057A: + ldrh r1, [r4, 0x2] + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0x5 + bgt _080A05A0 +_080A0584: + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_80A0504 + cmp r0, 0 + bne _080A05D0 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + adds r1, r0, 0 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080A0584 +_080A05A0: + movs r0, 0x2 + strh r0, [r4] + b _080A05F6 +_080A05A6: + bl sub_806951C + lsls r0, 24 + cmp r0, 0 + beq _080A05F6 + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + b _080A05F6 +_080A05B8: + bl sub_80A0484 + adds r1, r0, 0 + cmp r1, 0 + beq _080A05E8 + ldr r1, _080A05CC @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] + b _080A05EC + .align 2, 0 +_080A05CC: .4byte gUnknown_20370D0 +_080A05D0: + ldrb r0, [r4, 0x2] + bl sub_80A04B8 + ldr r0, _080A05E4 @ =gUnknown_81A5476 + bl sub_806943C + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _080A05F6 + .align 2, 0 +_080A05E4: .4byte gUnknown_81A5476 +_080A05E8: + ldr r0, _080A05FC @ =gUnknown_20370D0 + strh r1, [r0] +_080A05EC: + bl sub_8069B34 + adds r0, r5, 0 + bl sub_8077508 +_080A05F6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A05FC: .4byte gUnknown_20370D0 + thumb_func_end sub_80A054C + + thumb_func_start sub_80A0600 +sub_80A0600: @ 80A0600 + push {lr} + ldr r0, _080A0614 @ =sub_80A054C + movs r1, 0x50 + bl sub_807741C + bl sub_8069B28 + pop {r0} + bx r0 + .align 2, 0 +_080A0614: .4byte sub_80A054C + thumb_func_end sub_80A0600 + + thumb_func_start sub_80A0618 +sub_80A0618: @ 80A0618 + push {r4-r7,lr} + sub sp, 0x4 + ldr r4, _080A0684 @ =gUnknown_2024284 + movs r7, 0 + movs r6, 0 + movs r5, 0x5 +_080A0624: + adds r0, r4, 0 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _080A0668 + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + bl sub_812085C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A0668 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + str r0, [sp] + cmp r0, 0 + beq _080A065A + subs r0, 0x1 + str r0, [sp] + cmp r0, 0 + bne _080A065C +_080A065A: + adds r6, 0x1 +_080A065C: + adds r0, r4, 0 + movs r1, 0x39 + mov r2, sp + bl sub_804037C + adds r7, 0x1 +_080A0668: + adds r4, 0x64 + subs r5, 0x1 + cmp r5, 0 + bge _080A0624 + cmp r6, 0 + bne _080A0678 + cmp r7, 0 + beq _080A067C +_080A0678: + bl sub_80A0E48 +_080A067C: + cmp r6, 0 + beq _080A0688 + movs r0, 0x2 + b _080A0692 + .align 2, 0 +_080A0684: .4byte gUnknown_2024284 +_080A0688: + cmp r7, 0 + bne _080A0690 + movs r0, 0 + b _080A0692 +_080A0690: + movs r0, 0x1 +_080A0692: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A0618 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s new file mode 100644 index 000000000..82551fa78 --- /dev/null +++ b/asm/field_screen_effect.s @@ -0,0 +1,1033 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_807EE00 +sub_807EE00: @ 807EE00 + push {lr} + cmp r1, 0xA0 + bhi _0807EE28 + cmp r2, 0 + bge _0807EE0C + movs r2, 0 +_0807EE0C: + cmp r2, 0xFF + ble _0807EE12 + movs r2, 0xFF +_0807EE12: + cmp r3, 0 + bge _0807EE18 + movs r3, 0 +_0807EE18: + cmp r3, 0xFF + ble _0807EE1E + movs r3, 0xFF +_0807EE1E: + lsls r1, 1 + adds r1, r0 + lsls r0, r2, 8 + orrs r0, r3 + strh r0, [r1] +_0807EE28: + pop {r0} + bx r0 + thumb_func_end sub_807EE00 + + thumb_func_start sub_807EE2C +sub_807EE2C: @ 807EE2C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + mov r10, r1 + mov r9, r2 + adds r6, r3, 0 + mov r8, r6 + movs r7, 0 + cmp r6, 0 + blt _0807EEA8 +_0807EE48: + mov r0, r9 + subs r1, r0, r7 + mov r0, r10 + subs r4, r0, r6 + adds r5, r0, r6 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_807EE00 + mov r0, r9 + adds r1, r0, r7 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_807EE00 + mov r0, r9 + subs r1, r0, r6 + mov r0, r10 + subs r4, r0, r7 + adds r5, r0, r7 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_807EE00 + mov r0, r9 + adds r1, r0, r6 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_807EE00 + mov r1, r8 + adds r1, 0x1 + lsls r0, r7, 1 + subs r1, r0 + mov r8, r1 + adds r7, 0x1 + cmp r1, 0 + bge _0807EEA4 + subs r1, r6, 0x1 + lsls r0, r1, 1 + add r8, r0 + adds r6, r1, 0 +_0807EEA4: + cmp r6, r7 + bge _0807EE48 +_0807EEA8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807EE2C + + thumb_func_start sub_807EEB8 +sub_807EEB8: @ 807EEB8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807EEDC @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807EF14 + cmp r0, 0x1 + bgt _0807EEE0 + cmp r0, 0 + beq _0807EEE6 + b _0807EF76 + .align 2, 0 +_0807EEDC: .4byte gUnknown_3005098 +_0807EEE0: + cmp r0, 0x2 + beq _0807EF6C + b _0807EF76 +_0807EEE6: + ldr r0, _0807EF0C @ =gUnknown_2039600 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + ldr r1, _0807EF10 @ =gUnknown_2038700 + adds r0, r1 + movs r2, 0x2 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r5, 0x6 + ldrsh r3, [r4, r5] + bl sub_807EE2C + movs r0, 0x1 + strh r0, [r4] + b _0807EF76 + .align 2, 0 +_0807EF0C: .4byte gUnknown_2039600 +_0807EF10: .4byte gUnknown_2038700 +_0807EF14: + ldr r0, _0807EF5C @ =gUnknown_2039600 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + ldr r1, _0807EF60 @ =gUnknown_2038700 + adds r0, r1 + movs r6, 0x2 + ldrsh r1, [r4, r6] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r6, 0x6 + ldrsh r3, [r4, r6] + bl sub_807EE2C + movs r0, 0 + strh r0, [r4] + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r4, 0x6] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x8 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _0807EF76 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _0807EF64 + bl sub_8087E64 + movs r0, 0x2 + strh r0, [r4] + b _0807EF76 + .align 2, 0 +_0807EF5C: .4byte gUnknown_2039600 +_0807EF60: .4byte gUnknown_2038700 +_0807EF64: + adds r0, r5, 0 + bl sub_8077508 + b _0807EF76 +_0807EF6C: + bl sub_8087EA4 + adds r0, r5, 0 + bl sub_8077508 +_0807EF76: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_807EEB8 + + thumb_func_start sub_807EF7C +sub_807EF7C: @ 807EF7C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0807EFA0 @ =sub_807EEB8 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0807EF98 + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 +_0807EF98: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807EFA0: .4byte sub_807EEB8 + thumb_func_end sub_807EF7C + + thumb_func_start sub_807EFA4 +sub_807EFA4: @ 807EFA4 + push {r4,lr} + ldr r4, _0807EFC4 @ =sub_807EF7C + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0807EFBC + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C +_0807EFBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807EFC4: .4byte sub_807EF7C + thumb_func_end sub_807EFA4 + + thumb_func_start sub_807EFC8 +sub_807EFC8: @ 807EFC8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + mov r9, r1 + adds r5, r2, 0 + adds r4, r3, 0 + ldr r6, [sp, 0x1C] + ldr r0, [sp, 0x20] + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0807F00C @ =sub_807EEB8 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _0807F010 @ =gUnknown_3005098 + adds r1, r0, r1 + strh r5, [r1, 0x6] + strh r4, [r1, 0x8] + mov r0, r8 + strh r0, [r1, 0x2] + mov r0, r9 + strh r0, [r1, 0x4] + strh r6, [r1, 0xC] + cmp r5, r4 + bge _0807F014 + strh r7, [r1, 0xA] + b _0807F018 + .align 2, 0 +_0807F00C: .4byte sub_807EEB8 +_0807F010: .4byte gUnknown_3005098 +_0807F014: + negs r0, r7 + strh r0, [r1, 0xA] +_0807F018: + adds r0, r2, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_807EFC8 + + thumb_func_start sub_807F028 +sub_807F028: @ 807F028 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sub_8055D30 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + cmp r4, 0 + bne _0807F042 + movs r5, 0x1 +_0807F042: + ldr r1, _0807F070 @ =gUnknown_83C68D4 + lsls r0, 1 + adds r0, r1 + ldrh r2, [r0] + lsls r0, r4, 1 + adds r0, r1 + ldrh r3, [r0] + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x78 + movs r1, 0x50 + bl sub_807EFC8 + bl sub_807EFA4 + bl sub_8069940 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807F070: .4byte gUnknown_83C68D4 + thumb_func_end sub_807F028 + + thumb_func_start sub_807F074 +sub_807F074: @ 807F074 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807F0A2 + ldr r4, _0807F0A8 @ =gUnknown_2038700 + ldr r1, _0807F0AC @ =gUnknown_83C68D4 + lsls r0, 1 + adds r0, r1 + ldrh r3, [r0] + adds r0, r4, 0 + movs r1, 0x78 + movs r2, 0x50 + bl sub_807EE2C + movs r0, 0xF0 + lsls r0, 3 + adds r1, r4, r0 + movs r2, 0xF0 + lsls r2, 1 + adds r0, r4, 0 + bl CpuFastSet +_0807F0A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807F0A8: .4byte gUnknown_2038700 +_0807F0AC: .4byte gUnknown_83C68D4 + thumb_func_end sub_807F074 + + thumb_func_start sub_807F0B0 +sub_807F0B0: @ 807F0B0 + push {lr} + bl sub_8055FD4 + ldr r0, _0807F0C4 @ =sub_807F0C8 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807F0C4: .4byte sub_807F0C8 + thumb_func_end sub_807F0B0 + + thumb_func_start sub_807F0C8 +sub_807F0C8: @ 807F0C8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8055FC4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807F0E4 + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 +_0807F0E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807F0C8 + + thumb_func_start sub_807F0EC +sub_807F0EC: @ 807F0EC + push {lr} + ldr r0, _0807F10C @ =sub_807F204 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0807F110 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_0807F10C: .4byte sub_807F204 +_0807F110: .4byte gUnknown_3005090 + thumb_func_end sub_807F0EC + + thumb_func_start sub_807F114 +sub_807F114: @ 807F114 + push {lr} + ldr r0, _0807F134 @ =sub_807F204 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0807F138 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_0807F134: .4byte sub_807F204 +_0807F138: .4byte gUnknown_3005090 + thumb_func_end sub_807F114 + + thumb_func_start sub_807F13C +sub_807F13C: @ 807F13C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0807F19C @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + bl sub_8000AC4 + strh r0, [r4] + movs r0, 0x48 + bl sub_8000AC4 + strh r0, [r4, 0x2] + movs r0, 0x4A + bl sub_8000AC4 + strh r0, [r4, 0x4] + movs r0, 0x50 + bl sub_8000AC4 + strh r0, [r4, 0x6] + movs r0, 0x52 + bl sub_8000AC4 + strh r0, [r4, 0x8] + movs r0, 0x40 + bl sub_8000AC4 + strh r0, [r4, 0xA] + movs r0, 0x44 + bl sub_8000AC4 + strh r0, [r4, 0xC] + movs r0, 0x42 + bl sub_8000AC4 + strh r0, [r4, 0xE] + movs r0, 0x46 + bl sub_8000AC4 + strh r0, [r4, 0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807F19C: .4byte gUnknown_3005098 + thumb_func_end sub_807F13C + + thumb_func_start sub_807F1A0 +sub_807F1A0: @ 807F1A0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0807F200 @ =gUnknown_3005098 + adds r4, r0 + ldrh r1, [r4] + movs r0, 0 + bl sub_8000A38 + ldrh r1, [r4, 0x2] + movs r0, 0x48 + bl sub_8000A38 + ldrh r1, [r4, 0x4] + movs r0, 0x4A + bl sub_8000A38 + ldrh r1, [r4, 0x6] + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0x8] + movs r0, 0x52 + bl sub_8000A38 + ldrh r1, [r4, 0xA] + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x44 + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x42 + bl sub_8000A38 + ldrh r1, [r4, 0x10] + movs r0, 0x46 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807F200: .4byte gUnknown_3005098 + thumb_func_end sub_807F1A0 + + thumb_func_start sub_807F204 +sub_807F204: @ 807F204 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0807F228 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0x12 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0807F2BC + cmp r0, 0x1 + bgt _0807F22C + cmp r0, 0 + beq _0807F236 + b _0807F2F4 + .align 2, 0 +_0807F228: .4byte gUnknown_3005098 +_0807F22C: + cmp r0, 0x2 + beq _0807F2D0 + cmp r0, 0x3 + beq _0807F2E8 + b _0807F2F4 +_0807F236: + adds r0, r4, 0 + bl sub_807F13C + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + movs r1, 0x80 + lsls r1, 7 + movs r0, 0 + bl sub_8000AF4 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0807F280 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + ldr r1, _0807F27C @ =0x0000f0ff + movs r0, 0x42 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xFF + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0xFF + bl sub_8000A38 + b _0807F2A0 + .align 2, 0 +_0807F27C: .4byte 0x0000f0ff +_0807F280: + movs r0, 0x40 + movs r1, 0x78 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xFF + bl sub_8000A38 + ldr r1, _0807F2B8 @ =0x000078ff + movs r0, 0x42 + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0xFF + bl sub_8000A38 +_0807F2A0: + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x1 + strh r0, [r5, 0x12] + b _0807F2F4 + .align 2, 0 +_0807F2B8: .4byte 0x000078ff +_0807F2BC: + ldr r0, _0807F2CC @ =sub_807F2FC + movs r1, 0x50 + bl sub_807741C + movs r0, 0x2 + strh r0, [r5, 0x12] + b _0807F2F4 + .align 2, 0 +_0807F2CC: .4byte sub_807F2FC +_0807F2D0: + ldr r0, _0807F2E4 @ =sub_807F2FC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0807F2F4 + movs r0, 0x3 + strh r0, [r5, 0x12] + b _0807F2F4 + .align 2, 0 +_0807F2E4: .4byte sub_807F2FC +_0807F2E8: + adds r0, r4, 0 + bl sub_807F1A0 + adds r0, r4, 0 + bl sub_8077508 +_0807F2F4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807F204 + + thumb_func_start sub_807F2FC +sub_807F2FC: @ 807F2FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + mov r8, r5 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r4, _0807F348 @ =gUnknown_3005098 + adds r6, r0, r4 + ldr r0, _0807F34C @ =sub_807F204 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1 + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0807F350 + ldrh r4, [r6] + movs r0, 0xF0 + subs r0, r4 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, 0x78 + ble _0807F36C + adds r0, r5, 0 + bl sub_8077508 + b _0807F39A + .align 2, 0 +_0807F348: .4byte gUnknown_3005098 +_0807F34C: .4byte sub_807F204 +_0807F350: + ldrh r0, [r6] + movs r1, 0x78 + subs r1, r0 + lsls r1, 16 + adds r0, 0x78 + lsls r0, 16 + lsrs r7, r0, 16 + lsrs r4, r1, 16 + cmp r1, 0 + bge _0807F36C + mov r0, r8 + bl sub_8077508 + b _0807F39A +_0807F36C: + lsls r4, 16 + lsrs r1, r4, 16 + movs r0, 0x40 + bl sub_8000A38 + lsls r1, r7, 16 + asrs r1, 8 + movs r0, 0xF0 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x42 + bl sub_8000A38 + asrs r4, 16 + cmp r4, 0x59 + bgt _0807F394 + ldrh r0, [r6] + adds r0, 0x4 + b _0807F398 +_0807F394: + ldrh r0, [r6] + adds r0, 0x2 +_0807F398: + strh r0, [r6] +_0807F39A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807F2FC + + thumb_func_start sub_807F3A4 +sub_807F3A4: @ 807F3A4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + ldr r2, _0807F3DC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrb r7, [r4, 0xA] + movs r0, 0xC + ldrsh r6, [r4, r0] + cmp r6, 0 + beq _0807F3E0 + cmp r6, 0x1 + beq _0807F430 + b _0807F448 + .align 2, 0 +_0807F3DC: .4byte gUnknown_3005090 +_0807F3E0: + adds r0, r7, 0 + movs r1, 0 + bl sub_800445C + ldr r5, _0807F424 @ =gUnknown_2021D18 + adds r0, r5, 0 + mov r1, r8 + bl sub_8008FCC + movs r0, 0x1 + mov r8, r0 + str r0, [sp] + str r6, [sp, 0x4] + ldr r0, _0807F428 @ =gUnknown_83C68EC + str r0, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + str r5, [sp, 0x10] + adds r0, r7, 0 + movs r1, 0x2 + mov r2, r10 + mov r3, r9 + bl sub_812E5A4 + ldr r2, _0807F42C @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + mov r0, r8 + strh r0, [r4, 0xC] + b _0807F448 + .align 2, 0 +_0807F424: .4byte gUnknown_2021D18 +_0807F428: .4byte gUnknown_83C68EC +_0807F42C: .4byte gUnknown_3003E50 +_0807F430: + bl sub_8002DE8 + adds r0, r7, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0807F448 + strh r0, [r4, 0xC] + movs r0, 0x1 + b _0807F44A +_0807F448: + movs r0, 0 +_0807F44A: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_807F3A4 + + thumb_func_start sub_807F45C +sub_807F45C: @ 807F45C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _0807F484 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x6 + bls _0807F478 + b _0807F5E4 +_0807F478: + lsls r0, 2 + ldr r1, _0807F488 @ =_0807F48C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807F484: .4byte gUnknown_3005090 +_0807F488: .4byte _0807F48C + .align 2, 0 +_0807F48C: + .4byte _0807F4A8 + .4byte _0807F538 + .4byte _0807F588 + .4byte _0807F5B6 + .4byte _0807F540 + .4byte _0807F588 + .4byte _0807F5D0 +_0807F4A8: + ldr r0, _0807F518 @ =gUnknown_83C68E4 + bl sub_8003CE4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0807F51C @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r0, r4, r6 + lsls r0, 3 + adds r7, r0, r1 + strh r5, [r7, 0xA] + movs r0, 0xF0 + bl sub_80F77CC + adds r0, r5, 0 + movs r1, 0 + bl sub_800445C + adds r0, r5, 0 + bl sub_8003FA0 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x1 + bl sub_80BFCB0 + adds r3, r0, 0 + ldr r0, _0807F520 @ =gUnknown_3005008 + ldr r2, [r0] + ldrh r0, [r2, 0x1C] + ldrh r5, [r3] + cmp r0, r5 + bne _0807F524 + movs r1, 0x1E + ldrsb r1, [r2, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0807F524 + movs r0, 0x20 + ldrsh r1, [r2, r0] + movs r5, 0x2 + ldrsh r0, [r3, r5] + cmp r1, r0 + bne _0807F524 + movs r0, 0x22 + ldrsh r1, [r2, r0] + movs r2, 0x4 + ldrsh r0, [r3, r2] + cmp r1, r0 + bne _0807F524 + movs r0, 0x4 + strh r0, [r7, 0x8] + b _0807F5E4 + .align 2, 0 +_0807F518: .4byte gUnknown_83C68E4 +_0807F51C: .4byte gUnknown_3005090 +_0807F520: .4byte gUnknown_3005008 +_0807F524: + ldr r0, _0807F534 @ =gUnknown_3005090 + adds r1, r4, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x8] + b _0807F5E4 + .align 2, 0 +_0807F534: .4byte gUnknown_3005090 +_0807F538: + ldr r1, _0807F53C @ =gUnknown_841B554 + b _0807F542 + .align 2, 0 +_0807F53C: .4byte gUnknown_841B554 +_0807F540: + ldr r1, _0807F578 @ =gUnknown_841B5B6 +_0807F542: + adds r0, r6, 0 + movs r2, 0x2 + movs r3, 0x8 + bl sub_807F3A4 + lsls r0, 24 + cmp r0, 0 + beq _0807F5E4 + ldr r0, _0807F57C @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807F580 @ =gUnknown_2036E38 + adds r0, r1 + movs r1, 0x2 + bl sub_805F218 + ldr r1, _0807F584 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _0807F5E4 + .align 2, 0 +_0807F578: .4byte gUnknown_841B5B6 +_0807F57C: .4byte gUnknown_2037078 +_0807F580: .4byte gUnknown_2036E38 +_0807F584: .4byte gUnknown_3005090 +_0807F588: + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r2 + ldrb r5, [r4, 0xA] + adds r0, r5, 0 + bl sub_80040B8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8003F20 + adds r0, r5, 0 + bl sub_8003E3C + bl sub_807DB38 + bl sub_807DC00 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807F5E4 +_0807F5B6: + bl sub_807E418 + cmp r0, 0x1 + bne _0807F5E4 + adds r0, r6, 0 + bl sub_8077508 + ldr r0, _0807F5CC @ =gUnknown_81A8D97 + bl sub_8069AE4 + b _0807F5E4 + .align 2, 0 +_0807F5CC: .4byte gUnknown_81A8D97 +_0807F5D0: + bl sub_807E418 + cmp r0, 0x1 + bne _0807F5E4 + adds r0, r6, 0 + bl sub_8077508 + ldr r0, _0807F5EC @ =gUnknown_81A8DD8 + bl sub_8069AE4 +_0807F5E4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807F5EC: .4byte gUnknown_81A8DD8 + thumb_func_end sub_807F45C + + thumb_func_start sub_807F5F0 +sub_807F5F0: @ 807F5F0 + push {lr} + bl sub_8069940 + bl sub_807DB38 + ldr r0, _0807F618 @ =sub_807F45C + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0807F61C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_0807F618: .4byte sub_807F45C +_0807F61C: .4byte gUnknown_3005090 + thumb_func_end sub_807F5F0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_special_scene.s b/asm/field_special_scene.s new file mode 100644 index 000000000..ab436029f --- /dev/null +++ b/asm/field_special_scene.s @@ -0,0 +1,39 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0E78 +sub_80A0E78: @ 80A0E78 + movs r0, 0 + bx lr + thumb_func_end sub_80A0E78 + + thumb_func_start nullsub_57 +nullsub_57: @ 80A0E7C + bx lr + thumb_func_end nullsub_57 + + thumb_func_start nullsub_58 +nullsub_58: @ 80A0E80 + bx lr + thumb_func_end nullsub_58 + + thumb_func_start nullsub_59 +nullsub_59: @ 80A0E84 + bx lr + thumb_func_end nullsub_59 + + thumb_func_start nullsub_60 +nullsub_60: @ 80A0E88 + bx lr + thumb_func_end nullsub_60 + + thumb_func_start nullsub_61 +nullsub_61: @ 80A0E8C + bx lr + thumb_func_end nullsub_61 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_specials.s b/asm/field_specials.s new file mode 100644 index 000000000..e9b70c4b1 --- /dev/null +++ b/asm/field_specials.s @@ -0,0 +1,5728 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80CA618 +sub_80CA618: @ 80CA618 + push {lr} + bl sub_8112364 + ldr r0, _080CA62C @ =sub_80F4C10 + bl sub_8000544 + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_080CA62C: .4byte sub_80F4C10 + thumb_func_end sub_80CA618 + + thumb_func_start sub_80CA630 +sub_80CA630: @ 80CA630 + push {r4,lr} + ldr r0, _080CA65C @ =gUnknown_2037078 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080CA644 + movs r0, 0x2 + bl sub_805BDEC +_080CA644: + movs r4, 0x8D + lsls r4, 1 + adds r0, r4, 0 + bl sub_8055E78 + adds r0, r4, 0 + bl sub_8055F48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA65C: .4byte gUnknown_2037078 + thumb_func_end sub_80CA630 + + thumb_func_start nullsub_74 +nullsub_74: @ 80CA660 + bx lr + thumb_func_end nullsub_74 + + thumb_func_start sub_80CA664 +sub_80CA664: @ 80CA664 + push {lr} + movs r0, 0x4 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _080CA676 + movs r0, 0x1 + b _080CA688 +_080CA676: + movs r0, 0x2 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + bne _080CA686 + movs r0, 0 + b _080CA688 +_080CA686: + movs r0, 0x2 +_080CA688: + pop {r1} + bx r1 + thumb_func_end sub_80CA664 + + thumb_func_start sub_80CA68C +sub_80CA68C: @ 80CA68C + push {lr} + ldr r0, _080CA698 @ =gUnknown_2021D18 + bl sub_806943C + pop {r0} + bx r0 + .align 2, 0 +_080CA698: .4byte gUnknown_2021D18 + thumb_func_end sub_80CA68C + + thumb_func_start sub_80CA69C +sub_80CA69C: @ 80CA69C + ldr r1, _080CA6B0 @ =gUnknown_20370C0 + ldr r0, _080CA6B4 @ =gUnknown_3005008 + ldr r2, [r0] + ldrh r0, [r2] + strh r0, [r1] + ldr r1, _080CA6B8 @ =gUnknown_20370C2 + ldrh r0, [r2, 0x2] + strh r0, [r1] + bx lr + .align 2, 0 +_080CA6B0: .4byte gUnknown_20370C0 +_080CA6B4: .4byte gUnknown_3005008 +_080CA6B8: .4byte gUnknown_20370C2 + thumb_func_end sub_80CA69C + + thumb_func_start sub_80CA6BC +sub_80CA6BC: @ 80CA6BC + push {lr} + ldr r0, _080CA6D8 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r1, [r0, 0xB] + lsls r1, 8 + ldrb r0, [r0, 0xA] + orrs r0, r1 + movs r1, 0xA + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080CA6D8: .4byte gUnknown_300500C + thumb_func_end sub_80CA6BC + + thumb_func_start sub_80CA6DC +sub_80CA6DC: @ 80CA6DC + push {lr} + ldr r0, _080CA6F4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _080CA700 + ldr r0, _080CA6F8 @ =gUnknown_2021CD0 + ldr r1, _080CA6FC @ =gUnknown_8417FBB + bl sub_8008D84 + b _080CA708 + .align 2, 0 +_080CA6F4: .4byte gUnknown_300500C +_080CA6F8: .4byte gUnknown_2021CD0 +_080CA6FC: .4byte gUnknown_8417FBB +_080CA700: + ldr r0, _080CA70C @ =gUnknown_2021CD0 + ldr r1, _080CA710 @ =gUnknown_8417FC3 + bl sub_8008D84 +_080CA708: + pop {r0} + bx r0 + .align 2, 0 +_080CA70C: .4byte gUnknown_2021CD0 +_080CA710: .4byte gUnknown_8417FC3 + thumb_func_end sub_80CA6DC + + thumb_func_start sub_80CA714 +sub_80CA714: @ 80CA714 + push {lr} + ldr r0, _080CA72C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _080CA738 + ldr r0, _080CA730 @ =gUnknown_2021CD0 + ldr r1, _080CA734 @ =gUnknown_8417FD0 + bl sub_8008D84 + b _080CA740 + .align 2, 0 +_080CA72C: .4byte gUnknown_300500C +_080CA730: .4byte gUnknown_2021CD0 +_080CA734: .4byte gUnknown_8417FD0 +_080CA738: + ldr r0, _080CA744 @ =gUnknown_2021CD0 + ldr r1, _080CA748 @ =gUnknown_8417FCC + bl sub_8008D84 +_080CA740: + pop {r0} + bx r0 + .align 2, 0 +_080CA744: .4byte gUnknown_2021CD0 +_080CA748: .4byte gUnknown_8417FCC + thumb_func_end sub_80CA714 + + thumb_func_start sub_80CA74C +sub_80CA74C: @ 80CA74C + ldr r0, _080CA754 @ =gUnknown_2023E8A + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CA754: .4byte gUnknown_2023E8A + thumb_func_end sub_80CA74C + + thumb_func_start sub_80CA758 +sub_80CA758: @ 80CA758 + push {lr} + ldr r0, _080CA768 @ =gUnknown_20370C0 + ldrh r0, [r0] + bl sub_806E680 + pop {r0} + bx r0 + .align 2, 0 +_080CA768: .4byte gUnknown_20370C0 + thumb_func_end sub_80CA758 + + thumb_func_start sub_80CA76C +sub_80CA76C: @ 80CA76C + push {r4,lr} + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + ldr r0, _080CA790 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0xFF + bne _080CA794 + movs r0, 0x6 + b _080CA7E6 + .align 2, 0 +_080CA790: .4byte gUnknown_2024284 +_080CA794: + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0xC7 + bls _080CA7A4 + movs r0, 0x5 + b _080CA7E6 +_080CA7A4: + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0x95 + bls _080CA7B4 + movs r0, 0x4 + b _080CA7E6 +_080CA7B4: + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0x63 + bls _080CA7C4 + movs r0, 0x3 + b _080CA7E6 +_080CA7C4: + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0x31 + bls _080CA7D4 + movs r0, 0x2 + b _080CA7E6 +_080CA7D4: + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0 + bne _080CA7E4 + movs r0, 0 + b _080CA7E6 +_080CA7E4: + movs r0, 0x1 +_080CA7E6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CA76C + + thumb_func_start sub_80CA7EC +sub_80CA7EC: @ 80CA7EC + push {lr} + bl sub_8112364 + ldr r1, _080CA800 @ =sub_80568E0 + movs r0, 0x1 + bl sub_80BFF50 + pop {r0} + bx r0 + .align 2, 0 +_080CA800: .4byte sub_80568E0 + thumb_func_end sub_80CA7EC + + thumb_func_start sub_80CA804 +sub_80CA804: @ 80CA804 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _080CA850 @ =gUnknown_8254784 +_080CA80A: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080CA854 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _080CA858 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _080CA858 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1, 0x6] + cmp r0, 0xC + beq _080CA84C + ldrb r0, [r1, 0x7] + cmp r0, 0xC + bne _080CA858 +_080CA84C: + movs r0, 0x1 + b _080CA864 + .align 2, 0 +_080CA850: .4byte gUnknown_8254784 +_080CA854: .4byte gUnknown_2024284 +_080CA858: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080CA80A + movs r0, 0 +_080CA864: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80CA804 + + thumb_func_start sub_80CA86C +sub_80CA86C: @ 80CA86C + push {r4,lr} + ldr r4, _080CA8A0 @ =sub_80CA8A8 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CA89A + adds r0, r4, 0 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CA8A4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + strh r0, [r1, 0xA] +_080CA89A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA8A0: .4byte sub_80CA8A8 +_080CA8A4: .4byte gUnknown_3005090 + thumb_func_end sub_80CA86C + + thumb_func_start sub_80CA8A8 +sub_80CA8A8: @ 80CA8A8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CA8F4 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bne _080CA8E6 + ldrh r1, [r4] + movs r0, 0x1 + ands r0, r1 + bl sub_80CA8F8 + bl sub_805A684 + movs r0, 0 + strh r0, [r4, 0x2] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080CA8E6 + adds r0, r5, 0 + bl sub_8077508 +_080CA8E6: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CA8F4: .4byte gUnknown_3005098 + thumb_func_end sub_80CA8A8 + + thumb_func_start sub_80CA8F8 +sub_80CA8F8: @ 80CA8F8 + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + movs r4, 0 + movs r7, 0 + movs r5, 0 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x3 + beq _080CA926 + cmp r0, 0x3 + bgt _080CA91C + cmp r0, 0x2 + beq _080CA922 + b _080CA92E +_080CA91C: + cmp r1, 0x4 + beq _080CA92A + b _080CA92E +_080CA922: + movs r7, 0 + b _080CA92C +_080CA926: + movs r7, 0xFF + b _080CA92C +_080CA92A: + movs r7, 0x1 +_080CA92C: + movs r5, 0xFF +_080CA92E: + cmp r6, 0 + beq _080CA954 + ldr r0, _080CA940 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + bne _080CA944 + movs r4, 0x62 + b _080CA96E + .align 2, 0 +_080CA940: .4byte gUnknown_20370C0 +_080CA944: + cmp r0, 0x1 + beq _080CA94C + cmp r0, 0x2 + bne _080CA96E +_080CA94C: + ldr r4, _080CA950 @ =0x0000028f + b _080CA96E + .align 2, 0 +_080CA950: .4byte 0x0000028f +_080CA954: + ldr r0, _080CA960 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + bne _080CA964 + movs r4, 0x63 + b _080CA96E + .align 2, 0 +_080CA960: .4byte gUnknown_20370C0 +_080CA964: + cmp r0, 0x1 + beq _080CA96C + cmp r0, 0x2 + bne _080CA96E +_080CA96C: + ldr r4, _080CA9A0 @ =0x0000028a +_080CA96E: + ldr r0, _080CA9A4 @ =gUnknown_3005008 + ldr r2, [r0] + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r1, r7, 24 + asrs r1, 24 + adds r0, r1 + adds r0, 0x7 + movs r3, 0x2 + ldrsh r1, [r2, r3] + lsls r2, r5, 24 + asrs r2, 24 + adds r1, r2 + adds r1, 0x7 + movs r3, 0xC0 + lsls r3, 4 + adds r2, r3, 0 + orrs r4, r2 + adds r2, r4, 0 + bl sub_8058FA4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CA9A0: .4byte 0x0000028a +_080CA9A4: .4byte gUnknown_3005008 + thumb_func_end sub_80CA8F8 + + thumb_func_start sub_80CA9A8 +sub_80CA9A8: @ 80CA9A8 + push {r4-r6,lr} + movs r4, 0 + movs r6, 0 + movs r5, 0 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x3 + beq _080CA9D2 + cmp r0, 0x3 + bgt _080CA9C8 + cmp r0, 0x2 + beq _080CA9CE + b _080CA9DA +_080CA9C8: + cmp r1, 0x4 + beq _080CA9D6 + b _080CA9DA +_080CA9CE: + movs r6, 0 + b _080CA9D8 +_080CA9D2: + movs r6, 0xFF + b _080CA9D8 +_080CA9D6: + movs r6, 0x1 +_080CA9D8: + movs r5, 0xFF +_080CA9DA: + ldr r0, _080CA9E8 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + bne _080CA9EC + movs r4, 0x62 + b _080CA9F6 + .align 2, 0 +_080CA9E8: .4byte gUnknown_20370C0 +_080CA9EC: + cmp r0, 0x1 + beq _080CA9F4 + cmp r0, 0x2 + bne _080CA9F6 +_080CA9F4: + ldr r4, _080CAA2C @ =0x0000028f +_080CA9F6: + ldr r0, _080CAA30 @ =gUnknown_3005008 + ldr r2, [r0] + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r1, r6, 24 + asrs r1, 24 + adds r0, r1 + adds r0, 0x7 + movs r3, 0x2 + ldrsh r1, [r2, r3] + lsls r2, r5, 24 + asrs r2, 24 + adds r1, r2 + adds r1, 0x7 + movs r3, 0xC0 + lsls r3, 4 + adds r2, r3, 0 + orrs r4, r2 + adds r2, r4, 0 + bl sub_8058FA4 + bl sub_805A684 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CAA2C: .4byte 0x0000028f +_080CAA30: .4byte gUnknown_3005008 + thumb_func_end sub_80CA9A8 + + thumb_func_start sub_80CAA34 +sub_80CAA34: @ 80CAA34 + push {lr} + sub sp, 0x8 + ldr r0, _080CAA80 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r3, [r0] + adds r3, 0x7 + lsls r3, 16 + asrs r3, 16 + ldrh r0, [r0, 0x2] + adds r0, 0x7 + lsls r0, 16 + asrs r0, 16 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0x12 + movs r1, 0x8 + movs r2, 0x7F + bl sub_805E830 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CAA84 @ =gUnknown_2036E38 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1] + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x1] + ldrb r0, [r1, 0x4] + bl sub_805FAC4 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_080CAA80: .4byte gUnknown_3005008 +_080CAA84: .4byte gUnknown_2036E38 + thumb_func_end sub_80CAA34 + + thumb_func_start sub_80CAA88 +sub_80CAA88: @ 80CAA88 + push {lr} + bl sub_805C768 + lsls r0, 24 + lsrs r0, 24 + bl sub_805FAC4 + ldr r0, _080CAAA8 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x7F + bl sub_805E4C8 + pop {r0} + bx r0 + .align 2, 0 +_080CAAA8: .4byte gUnknown_3005008 + thumb_func_end sub_80CAA88 + + thumb_func_start sub_80CAAAC +sub_80CAAAC: @ 80CAAAC + push {lr} + ldr r0, _080CAAB8 @ =gUnknown_2021CD0 + bl sub_80E7460 + pop {r0} + bx r0 + .align 2, 0 +_080CAAB8: .4byte gUnknown_2021CD0 + thumb_func_end sub_80CAAAC + + thumb_func_start sub_80CAABC +sub_80CAABC: @ 80CAABC + push {lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x16 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080CAADC @ =gUnknown_83F5B1A + adds r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080CAADC: .4byte gUnknown_83F5B1A + thumb_func_end sub_80CAABC + + thumb_func_start sub_80CAAE0 +sub_80CAAE0: @ 80CAAE0 + push {lr} + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _080CAB04 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x47 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080CAB04: .4byte gUnknown_2024284 + thumb_func_end sub_80CAAE0 + + thumb_func_start sub_80CAB08 +sub_80CAB08: @ 80CAB08 + push {lr} + sub sp, 0x4 + movs r0, 0x2A + bl sub_8054E90 + ldr r0, _080CAB3C @ =0x0000083b + bl sub_806E680 + movs r1, 0x1 + mov r0, sp + strb r1, [r0] + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _080CAB40 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x47 + mov r2, sp + bl sub_804037C + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080CAB3C: .4byte 0x0000083b +_080CAB40: .4byte gUnknown_2024284 + thumb_func_end sub_80CAB08 + + thumb_func_start sub_80CAB44 +sub_80CAB44: @ 80CAB44 + push {lr} + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _080CAB68 @ =gUnknown_2024284 + adds r0, r1 + bl sub_8043A40 + lsls r0, 16 + ldr r1, _080CAB6C @ =0x01fd0000 + cmp r0, r1 + bhi _080CAB70 + movs r0, 0 + b _080CAB72 + .align 2, 0 +_080CAB68: .4byte gUnknown_2024284 +_080CAB6C: .4byte 0x01fd0000 +_080CAB70: + movs r0, 0x1 +_080CAB72: + pop {r1} + bx r1 + thumb_func_end sub_80CAB44 + + thumb_func_start sub_80CAB78 +sub_80CAB78: @ 80CAB78 + push {r4-r6,lr} + ldr r0, _080CABB4 @ =0x00004031 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_80CBD94 + lsls r0, 16 + lsrs r6, r0, 16 + bl sub_8040C3C + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + cmp r4, r5 + bcs _080CABC6 +_080CAB9A: + movs r0, 0x64 + muls r0, r4 + ldr r1, _080CABB8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + cmp r0, r6 + bne _080CABBC + movs r0, 0x1 + b _080CABC8 + .align 2, 0 +_080CABB4: .4byte 0x00004031 +_080CABB8: .4byte gUnknown_2024284 +_080CABBC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _080CAB9A +_080CABC6: + movs r0, 0 +_080CABC8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80CAB78 + + thumb_func_start sub_80CABD0 +sub_80CABD0: @ 80CABD0 + push {r4-r6,lr} + movs r6, 0 +_080CABD4: + movs r4, 0 + lsls r5, r6, 24 +_080CABD8: + lsls r1, r4, 24 + lsrs r1, 24 + lsrs r0, r5, 24 + movs r2, 0xB + bl sub_808BA18 + cmp r0, 0 + bne _080CABEC + movs r0, 0x1 + b _080CAC02 +_080CABEC: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _080CABD8 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0xD + bls _080CABD4 + movs r0, 0 +_080CAC02: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80CABD0 + + thumb_func_start sub_80CAC08 +sub_80CAC08: @ 80CAC08 + push {lr} + ldr r0, _080CAC1C @ =gUnknown_2024284 + movs r1, 0x3F + bl sub_8043A70 + lsls r0, 24 + cmp r0, 0 + beq _080CAC20 + movs r0, 0x1 + b _080CAC22 + .align 2, 0 +_080CAC1C: .4byte gUnknown_2024284 +_080CAC20: + movs r0, 0 +_080CAC22: + pop {r1} + bx r1 + thumb_func_end sub_80CAC08 + + thumb_func_start sub_80CAC28 +sub_80CAC28: @ 80CAC28 + push {lr} + ldr r0, _080CAC6C @ =sub_80CAC84 + movs r1, 0x9 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CAC70 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080CAC74 @ =gUnknown_20370C2 + ldrh r0, [r0] + movs r2, 0 + strh r0, [r1, 0x8] + strh r2, [r1, 0xA] + ldr r0, _080CAC78 @ =gUnknown_20370C4 + ldrh r0, [r0] + strh r0, [r1, 0xC] + ldr r0, _080CAC7C @ =gUnknown_20370C6 + ldrh r0, [r0] + strh r0, [r1, 0xE] + ldr r0, _080CAC80 @ =gUnknown_20370C0 + ldrh r0, [r0] + strh r0, [r1, 0x10] + movs r0, 0 + bl sub_805ADD4 + movs r0, 0xCF + bl sub_80722CC + pop {r0} + bx r0 + .align 2, 0 +_080CAC6C: .4byte sub_80CAC84 +_080CAC70: .4byte gUnknown_3005090 +_080CAC74: .4byte gUnknown_20370C2 +_080CAC78: .4byte gUnknown_20370C4 +_080CAC7C: .4byte gUnknown_20370C6 +_080CAC80: .4byte gUnknown_20370C0 + thumb_func_end sub_80CAC28 + + thumb_func_start sub_80CAC84 +sub_80CAC84: @ 80CAC84 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CACE4 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + movs r1, 0x2 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _080CACDC + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x4] + subs r0, 0x1 + strh r0, [r4, 0x4] + ldrh r0, [r4] + negs r0, r0 + strh r0, [r4] + ldrh r0, [r4, 0x8] + negs r0, r0 + strh r0, [r4, 0x8] + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x8 + ldrsh r1, [r4, r2] + bl sub_805ADE0 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080CACDC + adds r0, r5, 0 + bl sub_80CACE8 + bl sub_805ADF8 +_080CACDC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CACE4: .4byte gUnknown_3005098 + thumb_func_end sub_80CAC84 + + thumb_func_start sub_80CACE8 +sub_80CACE8: @ 80CACE8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + bl sub_8069B34 + pop {r0} + bx r0 + thumb_func_end sub_80CACE8 + + thumb_func_start sub_80CACFC +sub_80CACFC: @ 80CACFC + push {r4-r6,lr} + bl sub_8040C3C + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + cmp r5, r6 + bcs _080CAD4A +_080CAD0C: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080CAD3C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _080CAD40 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _080CAD40 + adds r0, r5, 0 + b _080CAD4C + .align 2, 0 +_080CAD3C: .4byte gUnknown_2024284 +_080CAD40: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _080CAD0C +_080CAD4A: + movs r0, 0 +_080CAD4C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80CACFC + + thumb_func_start sub_80CAD54 +sub_80CAD54: @ 80CAD54 + push {lr} + ldr r0, _080CAD74 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CAD78 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_080CAD74: .4byte gUnknown_20370C0 +_080CAD78: .4byte gUnknown_2024284 + thumb_func_end sub_80CAD54 + + thumb_func_start sub_80CAD7C +sub_80CAD7C: @ 80CAD7C + push {r4,lr} + ldr r0, _080CADA8 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CADAC @ =gUnknown_2024284 + adds r0, r1 + ldr r4, _080CADB0 @ =gUnknown_2021CD0 + movs r1, 0x7 + adds r2, r4, 0 + bl sub_803FBE8 + ldr r0, _080CADB4 @ =gUnknown_300500C + ldr r0, [r0] + adds r1, r4, 0 + bl sub_8008E28 + cmp r0, 0 + beq _080CADB8 + movs r0, 0x1 + b _080CADBA + .align 2, 0 +_080CADA8: .4byte gUnknown_20370C0 +_080CADAC: .4byte gUnknown_2024284 +_080CADB0: .4byte gUnknown_2021CD0 +_080CADB4: .4byte gUnknown_300500C +_080CADB8: + movs r0, 0 +_080CADBA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CAD7C + + thumb_func_start nullsub_75 +nullsub_75: @ 80CADC0 + bx lr + thumb_func_end nullsub_75 + + thumb_func_start sub_80CADC4 +sub_80CADC4: @ 80CADC4 + push {lr} + sub sp, 0x10 + movs r1, 0xFF + add r0, sp, 0xC + strb r1, [r0] + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r1, 0x2 + add r2, sp, 0xC + movs r3, 0 + bl sub_8002C48 + bl sub_809D424 + add sp, 0x10 + pop {r0} + bx r0 + thumb_func_end sub_80CADC4 + + thumb_func_start sub_80CADEC +sub_80CADEC: @ 80CADEC + push {r4,r5,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + bl __umodsi3 + adds r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _080CAE20 @ =gUnknown_20370C0 + strh r2, [r1] + ldr r0, _080CAE24 @ =gUnknown_20370C2 + strh r2, [r0] + ldrh r0, [r1] + subs r0, 0x1 + cmp r0, 0xE + bls _080CAE14 + b _080CB01C +_080CAE14: + lsls r0, 2 + ldr r1, _080CAE28 @ =_080CAE2C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CAE20: .4byte gUnknown_20370C0 +_080CAE24: .4byte gUnknown_20370C2 +_080CAE28: .4byte _080CAE2C + .align 2, 0 +_080CAE2C: + .4byte _080CAE68 + .4byte _080CAE90 + .4byte _080CAE90 + .4byte _080CAE90 + .4byte _080CAEC8 + .4byte _080CAEE8 + .4byte _080CAF28 + .4byte _080CAF28 + .4byte _080CAF28 + .4byte _080CAF68 + .4byte _080CAF9C + .4byte _080CAFC4 + .4byte _080CAFC4 + .4byte _080CAFC4 + .4byte _080CAFF8 +_080CAE68: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080CAE84 + ldr r1, _080CAE80 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x1 + b _080CB01A + .align 2, 0 +_080CAE80: .4byte gUnknown_20370C2 +_080CAE84: + ldr r1, _080CAE8C @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAE8C: .4byte gUnknown_20370C2 +_080CAE90: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + bne _080CAEB4 + ldr r1, _080CAEB0 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x1 + b _080CB01A + .align 2, 0 +_080CAEB0: .4byte gUnknown_20370C2 +_080CAEB4: + cmp r2, 0x1 + beq _080CAEBA + b _080CB014 +_080CAEBA: + ldr r1, _080CAEC4 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAEC4: .4byte gUnknown_20370C2 +_080CAEC8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080CAEDA + b _080CB014 +_080CAEDA: + ldr r1, _080CAEE4 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAEE4: .4byte gUnknown_20370C2 +_080CAEE8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + bne _080CAF0C + ldr r1, _080CAF08 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAF08: .4byte gUnknown_20370C2 +_080CAF0C: + cmp r2, 0x1 + bne _080CAF1C + ldr r1, _080CAF18 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x1 + b _080CB01A + .align 2, 0 +_080CAF18: .4byte gUnknown_20370C2 +_080CAF1C: + ldr r1, _080CAF24 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAF24: .4byte gUnknown_20370C2 +_080CAF28: + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r2, r1, 16 + cmp r2, 0 + bne _080CAF48 + ldr r1, _080CAF44 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAF44: .4byte gUnknown_20370C2 +_080CAF48: + cmp r2, 0x1 + bne _080CAF58 + ldr r1, _080CAF54 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x1 + b _080CB01A + .align 2, 0 +_080CAF54: .4byte gUnknown_20370C2 +_080CAF58: + cmp r2, 0x2 + bne _080CB014 + ldr r1, _080CAF64 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAF64: .4byte gUnknown_20370C2 +_080CAF68: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + bne _080CAF8C + ldr r1, _080CAF88 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAF88: .4byte gUnknown_20370C2 +_080CAF8C: + cmp r2, 0x1 + bne _080CB014 + ldr r1, _080CAF98 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAF98: .4byte gUnknown_20370C2 +_080CAF9C: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080CAFB8 + ldr r1, _080CAFB4 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAFB4: .4byte gUnknown_20370C2 +_080CAFB8: + ldr r1, _080CAFC0 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x1 + b _080CB01A + .align 2, 0 +_080CAFC0: .4byte gUnknown_20370C2 +_080CAFC4: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + bne _080CAFE8 + ldr r1, _080CAFE4 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x5 + b _080CB01A + .align 2, 0 +_080CAFE4: .4byte gUnknown_20370C2 +_080CAFE8: + cmp r2, 0x1 + bne _080CB014 + ldr r1, _080CAFF4 @ =gUnknown_20370C2 + ldrh r0, [r1] + adds r0, 0x1 + b _080CB01A + .align 2, 0 +_080CAFF4: .4byte gUnknown_20370C2 +_080CAFF8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080CB014 + ldr r1, _080CB010 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x5 + b _080CB01A + .align 2, 0 +_080CB010: .4byte gUnknown_20370C2 +_080CB014: + ldr r1, _080CB040 @ =gUnknown_20370C2 + ldrh r0, [r1] + subs r0, 0x1 +_080CB01A: + strh r0, [r1] +_080CB01C: + ldr r5, _080CB040 @ =gUnknown_20370C2 + ldrh r0, [r5] + cmp r0, 0xF + bls _080CB04C + ldr r0, _080CB044 @ =gUnknown_20370C0 + ldrh r4, [r0] + adds r0, r4, 0 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _080CB048 + cmp r0, 0 + bne _080CB048 + subs r0, r4, 0x1 + b _080CB04A + .align 2, 0 +_080CB040: .4byte gUnknown_20370C2 +_080CB044: .4byte gUnknown_20370C0 +_080CB048: + adds r0, r4, 0x1 +_080CB04A: + strh r0, [r5] +_080CB04C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80CADEC + + thumb_func_start sub_80CB054 +sub_80CB054: @ 80CB054 + push {r4-r6,lr} + ldr r5, _080CB08C @ =0x00004035 + adds r0, r5, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r6, _080CB090 @ =0x00004036 + adds r0, r6, 0 + bl sub_806E568 + lsls r0, 16 + cmp r0, 0 + beq _080CB0A0 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xF9 + bls _080CB098 + ldr r1, _080CB094 @ =0x0000ffff + adds r0, r6, 0 + bl sub_806E584 + adds r0, r5, 0 + movs r1, 0 + bl sub_806E584 + b _080CB0A0 + .align 2, 0 +_080CB08C: .4byte 0x00004035 +_080CB090: .4byte 0x00004036 +_080CB094: .4byte 0x0000ffff +_080CB098: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806E584 +_080CB0A0: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80CB054 + + thumb_func_start sub_80CB0A8 +sub_80CB0A8: @ 80CB0A8 + push {r4,lr} + ldr r4, _080CB10C @ =0x00004036 + adds r0, r4, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080CB0C0 + ldr r0, _080CB110 @ =0x0000ffff + cmp r1, r0 + bne _080CB0EA +_080CB0C0: + bl sub_80CB124 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + ldr r4, _080CB114 @ =0x0000403b + bl sub_80CB198 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + ldr r0, _080CB118 @ =0x00004035 + movs r1, 0 + bl sub_806E584 +_080CB0EA: + ldr r4, _080CB11C @ =gUnknown_2021CD0 + ldr r0, _080CB10C @ =0x00004036 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r1, r0 + ldr r0, _080CB120 @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008D84 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB10C: .4byte 0x00004036 +_080CB110: .4byte 0x0000ffff +_080CB114: .4byte 0x0000403b +_080CB118: .4byte 0x00004035 +_080CB11C: .4byte gUnknown_2021CD0 +_080CB120: .4byte gUnknown_8245EE0 + thumb_func_end sub_80CB0A8 + + thumb_func_start sub_80CB124 +sub_80CB124: @ 80CB124 + push {r4,r5,lr} + movs r5, 0 +_080CB128: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080CB160 @ =0x0000019b + bl __umodsi3 + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8088E74 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + beq _080CB18E + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x63 + bls _080CB128 + b _080CB176 + .align 2, 0 +_080CB160: .4byte 0x0000019b +_080CB164: + cmp r4, 0x1 + bne _080CB170 + ldr r4, _080CB16C @ =0x0000019b + b _080CB176 + .align 2, 0 +_080CB16C: .4byte 0x0000019b +_080CB170: + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_080CB176: + adds r0, r4, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8088E74 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _080CB164 +_080CB18E: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80CB124 + + thumb_func_start sub_80CB198 +sub_80CB198: @ 80CB198 + push {r4,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1D + bhi _080CB1D0 + ldr r4, _080CB1CC @ =gUnknown_83F5B30 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 15 + adds r0, r4 + ldrh r0, [r0] + b _080CB1D2 + .align 2, 0 +_080CB1CC: .4byte gUnknown_83F5B30 +_080CB1D0: + movs r0, 0xB +_080CB1D2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CB198 + + thumb_func_start sub_80CB1D8 +sub_80CB1D8: @ 80CB1D8 + push {lr} + ldr r0, _080CB1F0 @ =gUnknown_20370D0 + ldrh r1, [r0] + ldr r0, _080CB1F4 @ =gUnknown_20370C4 + ldrh r0, [r0] + adds r1, r0 + ldr r0, _080CB1F8 @ =0x0000270f + cmp r1, r0 + bgt _080CB1FC + movs r0, 0x1 + b _080CB1FE + .align 2, 0 +_080CB1F0: .4byte gUnknown_20370D0 +_080CB1F4: .4byte gUnknown_20370C4 +_080CB1F8: .4byte 0x0000270f +_080CB1FC: + movs r0, 0 +_080CB1FE: + pop {r1} + bx r1 + thumb_func_end sub_80CB1D8 + + thumb_func_start sub_80CB204 +sub_80CB204: @ 80CB204 + push {r4,lr} + movs r3, 0x4 + ldr r0, _080CB22C @ =gUnknown_3005008 + ldr r2, [r0] + movs r1, 0x14 + ldrsb r1, [r2, r1] + adds r4, r0, 0 + cmp r1, 0x1 + bne _080CB2AA + ldrb r0, [r2, 0x15] + subs r0, 0x2A + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xF + bhi _080CB2AA + lsls r0, 2 + ldr r1, _080CB230 @ =_080CB234 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CB22C: .4byte gUnknown_3005008 +_080CB230: .4byte _080CB234 + .align 2, 0 +_080CB234: + .4byte _080CB2A0 + .4byte _080CB2A4 + .4byte _080CB2AA + .4byte _080CB2A8 + .4byte _080CB2AA + .4byte _080CB274 + .4byte _080CB278 + .4byte _080CB27C + .4byte _080CB280 + .4byte _080CB284 + .4byte _080CB288 + .4byte _080CB28C + .4byte _080CB290 + .4byte _080CB294 + .4byte _080CB298 + .4byte _080CB29C +_080CB274: + movs r3, 0x4 + b _080CB2AA +_080CB278: + movs r3, 0x5 + b _080CB2AA +_080CB27C: + movs r3, 0x6 + b _080CB2AA +_080CB280: + movs r3, 0x7 + b _080CB2AA +_080CB284: + movs r3, 0x8 + b _080CB2AA +_080CB288: + movs r3, 0x9 + b _080CB2AA +_080CB28C: + movs r3, 0xA + b _080CB2AA +_080CB290: + movs r3, 0xB + b _080CB2AA +_080CB294: + movs r3, 0xC + b _080CB2AA +_080CB298: + movs r3, 0xD + b _080CB2AA +_080CB29C: + movs r3, 0xE + b _080CB2AA +_080CB2A0: + movs r3, 0x3 + b _080CB2AA +_080CB2A4: + movs r3, 0x2 + b _080CB2AA +_080CB2A8: + movs r3, 0 +_080CB2AA: + ldr r1, [r4] + movs r0, 0x14 + ldrsb r0, [r1, r0] + cmp r0, 0xA + bne _080CB2F2 + movs r0, 0x15 + ldrsb r0, [r1, r0] + cmp r0, 0x4 + bhi _080CB2F2 + lsls r0, 2 + ldr r1, _080CB2C8 @ =_080CB2CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CB2C8: .4byte _080CB2CC + .align 2, 0 +_080CB2CC: + .4byte _080CB2E0 + .4byte _080CB2E4 + .4byte _080CB2E8 + .4byte _080CB2EC + .4byte _080CB2F0 +_080CB2E0: + movs r3, 0x4 + b _080CB2F2 +_080CB2E4: + movs r3, 0x5 + b _080CB2F2 +_080CB2E8: + movs r3, 0x6 + b _080CB2F2 +_080CB2EC: + movs r3, 0x7 + b _080CB2F2 +_080CB2F0: + movs r3, 0x8 +_080CB2F2: + ldr r1, [r4] + movs r0, 0x14 + ldrsb r0, [r1, r0] + cmp r0, 0x2 + bne _080CB314 + movs r0, 0x15 + ldrsb r0, [r1, r0] + cmp r0, 0x1 + blt _080CB314 + cmp r0, 0x9 + ble _080CB30E + cmp r0, 0xA + beq _080CB312 + b _080CB314 +_080CB30E: + movs r3, 0xF + b _080CB314 +_080CB312: + movs r3, 0x3 +_080CB314: + ldr r0, _080CB324 @ =0x0000403a + adds r1, r3, 0 + bl sub_806E584 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB324: .4byte 0x0000403a + thumb_func_end sub_80CB204 + + thumb_func_start sub_80CB328 +sub_80CB328: @ 80CB328 + push {r4-r6,lr} + ldr r3, _080CB35C @ =gUnknown_2039A0E + movs r0, 0 + strh r0, [r3] + ldr r1, _080CB360 @ =gUnknown_2039A10 + strh r0, [r1] + ldr r0, _080CB364 @ =gUnknown_3005008 + ldr r5, [r0] + movs r2, 0x14 + ldrsb r2, [r5, r2] + adds r4, r3, 0 + adds r3, r1, 0 + adds r6, r0, 0 + cmp r2, 0x1 + bne _080CB40C + ldrb r0, [r5, 0x15] + subs r0, 0x2A + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xF + bhi _080CB40C + lsls r0, 2 + ldr r1, _080CB368 @ =_080CB36C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CB35C: .4byte gUnknown_2039A0E +_080CB360: .4byte gUnknown_2039A10 +_080CB364: .4byte gUnknown_3005008 +_080CB368: .4byte _080CB36C + .align 2, 0 +_080CB36C: + .4byte _080CB3F6 + .4byte _080CB3FC + .4byte _080CB40C + .4byte _080CB404 + .4byte _080CB40C + .4byte _080CB3F0 + .4byte _080CB3E8 + .4byte _080CB3E2 + .4byte _080CB3DA + .4byte _080CB3D2 + .4byte _080CB3CA + .4byte _080CB3C2 + .4byte _080CB3BA + .4byte _080CB404 + .4byte _080CB3B2 + .4byte _080CB3AC +_080CB3AC: + movs r0, 0 + strh r0, [r4] + b _080CB40A +_080CB3B2: + movs r0, 0 + strh r0, [r4] + movs r0, 0x1 + b _080CB40A +_080CB3BA: + movs r0, 0 + strh r0, [r4] + movs r0, 0x3 + b _080CB40A +_080CB3C2: + movs r0, 0 + strh r0, [r4] + movs r0, 0x4 + b _080CB40A +_080CB3CA: + movs r0, 0x1 + strh r0, [r4] + movs r0, 0x4 + b _080CB40A +_080CB3D2: + movs r0, 0x2 + strh r0, [r4] + movs r0, 0x4 + b _080CB40A +_080CB3DA: + movs r0, 0x3 + strh r0, [r4] + movs r0, 0x4 + b _080CB40A +_080CB3E2: + movs r0, 0x4 + strh r0, [r4] + b _080CB40A +_080CB3E8: + movs r0, 0x5 + strh r0, [r4] + movs r0, 0x4 + b _080CB40A +_080CB3F0: + movs r0, 0x5 + strh r0, [r4] + b _080CB40A +_080CB3F6: + movs r0, 0 + strh r0, [r4] + b _080CB40A +_080CB3FC: + movs r0, 0 + strh r0, [r4] + movs r0, 0x1 + b _080CB40A +_080CB404: + movs r0, 0 + strh r0, [r4] + movs r0, 0x2 +_080CB40A: + strh r0, [r3] +_080CB40C: + ldr r1, [r6] + movs r0, 0x14 + ldrsb r0, [r1, r0] + cmp r0, 0xA + bne _080CB466 + movs r0, 0x15 + ldrsb r0, [r1, r0] + cmp r0, 0x4 + bhi _080CB466 + lsls r0, 2 + ldr r1, _080CB428 @ =_080CB42C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CB428: .4byte _080CB42C + .align 2, 0 +_080CB42C: + .4byte _080CB45E + .4byte _080CB456 + .4byte _080CB44E + .4byte _080CB446 + .4byte _080CB440 +_080CB440: + movs r0, 0 + strh r0, [r4] + b _080CB464 +_080CB446: + movs r0, 0 + strh r0, [r4] + movs r0, 0x1 + b _080CB464 +_080CB44E: + movs r0, 0 + strh r0, [r4] + movs r0, 0x2 + b _080CB464 +_080CB456: + movs r0, 0 + strh r0, [r4] + movs r0, 0x3 + b _080CB464 +_080CB45E: + movs r0, 0 + strh r0, [r4] + movs r0, 0x4 +_080CB464: + strh r0, [r3] +_080CB466: + ldr r1, [r6] + movs r0, 0x14 + ldrsb r0, [r1, r0] + cmp r0, 0x2 + bne _080CB490 + movs r0, 0x15 + ldrsb r0, [r1, r0] + cmp r0, 0x1 + blt _080CB490 + cmp r0, 0x9 + ble _080CB482 + cmp r0, 0xA + beq _080CB488 + b _080CB490 +_080CB482: + movs r0, 0 + strh r0, [r4] + b _080CB48E +_080CB488: + movs r0, 0 + strh r0, [r4] + movs r0, 0x1 +_080CB48E: + strh r0, [r3] +_080CB490: + ldrh r0, [r3] + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80CB328 + + thumb_func_start sub_80CB498 +sub_80CB498: @ 80CB498 + push {r4-r6,lr} + ldr r0, _080CB4D0 @ =sub_80CB514 + movs r1, 0x9 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080CB4D4 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r3, 0 + strh r3, [r4, 0x2] + strh r3, [r4, 0x4] + movs r6, 0x1 + strh r6, [r4, 0x8] + ldr r0, _080CB4D8 @ =gUnknown_20370C2 + ldr r1, _080CB4DC @ =gUnknown_20370C4 + ldrh r2, [r0] + ldrh r0, [r1] + cmp r2, r0 + bls _080CB4E0 + subs r0, r2, r0 + lsls r0, 16 + lsrs r5, r0, 16 + strh r6, [r4, 0xC] + b _080CB4E8 + .align 2, 0 +_080CB4D0: .4byte sub_80CB514 +_080CB4D4: .4byte gUnknown_3005098 +_080CB4D8: .4byte gUnknown_20370C2 +_080CB4DC: .4byte gUnknown_20370C4 +_080CB4E0: + subs r0, r2 + lsls r0, 16 + lsrs r5, r0, 16 + strh r3, [r4, 0xC] +_080CB4E8: + cmp r5, 0x8 + bls _080CB4EE + movs r5, 0x8 +_080CB4EE: + ldr r0, _080CB510 @ =gUnknown_83F5BB8 + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r4, 0xA] + movs r0, 0 + bl sub_805ADD4 + ldrb r1, [r4, 0xC] + adds r0, r5, 0 + bl sub_80CB658 + movs r0, 0x52 + bl sub_80722CC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB510: .4byte gUnknown_83F5BB8 + thumb_func_end sub_80CB498 + + thumb_func_start sub_80CB514 +sub_80CB514: @ 80CB514 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CB57C @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + movs r1, 0x2 + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080CB574 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + ldrh r0, [r4, 0x8] + negs r0, r0 + strh r0, [r4, 0x8] + movs r2, 0x8 + ldrsh r1, [r4, r2] + movs r0, 0 + bl sub_805ADE0 + movs r0, 0x4 + ldrsh r1, [r4, r0] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080CB574 + movs r0, 0x42 + bl sub_80722CC + adds r0, r5, 0 + bl sub_8077508 + bl sub_8069B34 + bl sub_805ADF8 +_080CB574: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB57C: .4byte gUnknown_3005098 + thumb_func_end sub_80CB514 + + thumb_func_start sub_80CB580 +sub_80CB580: @ 80CB580 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + ldr r0, _080CB620 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CB614 + ldr r4, _080CB624 @ =gUnknown_2039A0C + ldr r0, _080CB628 @ =gUnknown_83F5B3C + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + ldr r5, _080CB62C @ =0x0000021d + adds r1, r5, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r0, [r4] + movs r1, 0 + adds r2, r5, 0 + movs r3, 0xD + bl sub_810F2E8 + ldrb r0, [r4] + ldr r2, _080CB630 @ =gUnknown_8418075 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + mov r8, r1 + str r1, [sp, 0x4] + movs r6, 0 + str r6, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r1, _080CB634 @ =gUnknown_83F5B44 + ldr r0, _080CB638 @ =gUnknown_20370C2 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r5, [r0] + movs r0, 0x2 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + ldrb r1, [r4] + movs r3, 0x38 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_8002C48 + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8003F20 +_080CB614: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB620: .4byte sub_809D6D4 +_080CB624: .4byte gUnknown_2039A0C +_080CB628: .4byte gUnknown_83F5B3C +_080CB62C: .4byte 0x0000021d +_080CB630: .4byte gUnknown_8418075 +_080CB634: .4byte gUnknown_83F5B44 +_080CB638: .4byte gUnknown_20370C2 + thumb_func_end sub_80CB580 + + thumb_func_start sub_80CB63C +sub_80CB63C: @ 80CB63C + push {r4,lr} + ldr r4, _080CB654 @ =gUnknown_2039A0C + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB654: .4byte gUnknown_2039A0C + thumb_func_end sub_80CB63C + + thumb_func_start sub_80CB658 +sub_80CB658: @ 80CB658 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r4, _080CB6A0 @ =sub_80CB6AC + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CB698 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CB6A4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + strh r0, [r1, 0xA] + strh r5, [r1, 0xC] + ldr r0, _080CB6A8 @ =gUnknown_83F5BC1 + adds r0, r6, r0 + ldrb r0, [r0] + strh r0, [r1, 0xE] +_080CB698: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB6A0: .4byte sub_80CB6AC +_080CB6A4: .4byte gUnknown_3005090 +_080CB6A8: .4byte gUnknown_83F5BC1 + thumb_func_end sub_80CB658 + + thumb_func_start sub_80CB6AC +sub_80CB6AC: @ 80CB6AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + lsls r0, 2 + ldr r1, [sp] + adds r0, r1 + lsls r0, 3 + ldr r1, _080CB734 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r2, 0x2 + ldrsh r0, [r6, r2] + cmp r0, 0x6 + bne _080CB7A8 + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080CB73C + movs r1, 0 + ldr r2, _080CB738 @ =gUnknown_83F5B94 + mov r10, r2 +_080CB6E6: + movs r5, 0 + adds r7, r1, 0x7 + lsls r0, r1, 1 + adds r2, r1, 0x1 + mov r8, r2 + adds r0, r1 + lsls r0, 1 + mov r9, r0 +_080CB6F6: + adds r4, r5, 0 + adds r4, 0x8 + movs r1, 0 + ldrsh r0, [r6, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 15 + add r0, r9 + add r0, r10 + ldrh r0, [r0] + movs r1, 0xC0 + lsls r1, 4 + adds r2, r1, 0 + orrs r2, r0 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_8058FA4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _080CB6F6 + mov r2, r8 + lsls r0, r2, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bls _080CB6E6 + b _080CB78E + .align 2, 0 +_080CB734: .4byte gUnknown_3005098 +_080CB738: .4byte gUnknown_83F5B94 +_080CB73C: + movs r1, 0 + ldr r0, _080CB7C0 @ =gUnknown_83F5BA6 + mov r10, r0 +_080CB742: + movs r5, 0 + adds r7, r1, 0x7 + lsls r0, r1, 1 + adds r2, r1, 0x1 + mov r8, r2 + adds r0, r1 + lsls r0, 1 + mov r9, r0 +_080CB752: + adds r4, r5, 0 + adds r4, 0x8 + movs r1, 0 + ldrsh r0, [r6, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 15 + add r0, r9 + add r0, r10 + ldrh r0, [r0] + movs r1, 0xC0 + lsls r1, 4 + adds r2, r1, 0 + orrs r2, r0 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_8058FA4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _080CB752 + mov r2, r8 + lsls r0, r2, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bls _080CB742 +_080CB78E: + bl sub_805A684 + movs r0, 0 + strh r0, [r6, 0x2] + movs r0, 0 + ldrsh r1, [r6, r0] + movs r2, 0x6 + ldrsh r0, [r6, r2] + cmp r1, r0 + bne _080CB7A8 + ldr r0, [sp] + bl sub_8077508 +_080CB7A8: + ldrh r0, [r6, 0x2] + adds r0, 0x1 + strh r0, [r6, 0x2] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CB7C0: .4byte gUnknown_83F5BA6 + thumb_func_end sub_80CB6AC + + thumb_func_start sub_80CB7C4 +sub_80CB7C4: @ 80CB7C4 + push {r4,r5,lr} + ldr r0, _080CB808 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CB7D6 + b _080CB8F8 +_080CB7D6: + ldr r0, _080CB80C @ =sub_80CB904 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CB810 @ =gUnknown_3005090 + adds r3, r0, r1 + ldr r0, _080CB814 @ =gUnknown_20370C0 + ldrh r4, [r0] + cmp r4, 0x3 + beq _080CB886 + cmp r4, 0x3 + bgt _080CB818 + cmp r4, 0x1 + beq _080CB842 + cmp r4, 0x1 + bgt _080CB870 + cmp r4, 0 + beq _080CB82A + b _080CB8EC + .align 2, 0 +_080CB808: .4byte sub_809D6D4 +_080CB80C: .4byte sub_80CB904 +_080CB810: .4byte gUnknown_3005090 +_080CB814: .4byte gUnknown_20370C0 +_080CB818: + cmp r4, 0x5 + beq _080CB8B4 + cmp r4, 0x5 + blt _080CB89E + cmp r4, 0x6 + beq _080CB8D2 + cmp r4, 0x63 + beq _080CB8F8 + b _080CB8EC +_080CB82A: + movs r0, 0x4 + strh r0, [r3, 0x8] + movs r0, 0x9 + strh r0, [r3, 0xA] + movs r1, 0x1 + strh r1, [r3, 0xC] + strh r1, [r3, 0xE] + movs r0, 0xC + strh r0, [r3, 0x10] + movs r0, 0x7 + strh r0, [r3, 0x12] + b _080CB8E6 +_080CB842: + movs r2, 0 + movs r0, 0x7 + strh r0, [r3, 0x8] + movs r1, 0xC + strh r1, [r3, 0xA] + strh r4, [r3, 0xC] + strh r4, [r3, 0xE] + movs r0, 0x8 + strh r0, [r3, 0x10] + strh r1, [r3, 0x12] + strh r2, [r3, 0x14] + strh r5, [r3, 0x26] + ldr r0, _080CB868 @ =gUnknown_2039A0E + ldrh r0, [r0] + strh r0, [r3, 0x16] + ldr r0, _080CB86C @ =gUnknown_2039A10 + ldrh r0, [r0] + strh r0, [r3, 0x18] + b _080CB8F8 + .align 2, 0 +_080CB868: .4byte gUnknown_2039A0E +_080CB86C: .4byte gUnknown_2039A10 +_080CB870: + movs r1, 0 + movs r0, 0x4 + strh r0, [r3, 0x8] + strh r0, [r3, 0xA] + movs r0, 0x1 + strh r0, [r3, 0xC] + strh r0, [r3, 0xE] + movs r0, 0x8 + strh r0, [r3, 0x10] + strh r0, [r3, 0x12] + b _080CB8E6 +_080CB886: + movs r1, 0 + movs r0, 0x4 + strh r0, [r3, 0x8] + movs r0, 0x6 + strh r0, [r3, 0xA] + movs r0, 0x1 + strh r0, [r3, 0xC] + strh r0, [r3, 0xE] + movs r0, 0x8 + strh r0, [r3, 0x10] + strh r0, [r3, 0x12] + b _080CB8E6 +_080CB89E: + movs r0, 0x4 + strh r0, [r3, 0x8] + strh r0, [r3, 0xA] + movs r1, 0x1 + strh r1, [r3, 0xC] + strh r1, [r3, 0xE] + movs r0, 0x11 + strh r0, [r3, 0x10] + movs r0, 0x8 + strh r0, [r3, 0x12] + b _080CB8E6 +_080CB8B4: + movs r2, 0 + movs r0, 0x7 + strh r0, [r3, 0x8] + movs r1, 0xC + strh r1, [r3, 0xA] + movs r0, 0x10 + strh r0, [r3, 0xC] + movs r0, 0x1 + strh r0, [r3, 0xE] + movs r0, 0x11 + strh r0, [r3, 0x10] + strh r1, [r3, 0x12] + strh r2, [r3, 0x14] + strh r5, [r3, 0x26] + b _080CB8F8 +_080CB8D2: + movs r1, 0 + movs r0, 0x3 + strh r0, [r3, 0x8] + strh r0, [r3, 0xA] + movs r0, 0x1 + strh r0, [r3, 0xC] + strh r0, [r3, 0xE] + movs r0, 0x8 + strh r0, [r3, 0x10] + strh r4, [r3, 0x12] +_080CB8E6: + strh r1, [r3, 0x14] + strh r5, [r3, 0x26] + b _080CB8F8 +_080CB8EC: + ldr r1, _080CB900 @ =gUnknown_20370D0 + movs r0, 0x7F + strh r0, [r1] + adds r0, r5, 0 + bl sub_8077508 +_080CB8F8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB900: .4byte gUnknown_20370D0 + thumb_func_end sub_80CB7C4 + + thumb_func_start sub_80CB904 +sub_80CB904: @ 80CB904 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080CB934 @ =gUnknown_3005090 + adds r5, r0, r1 + bl sub_8069940 + ldr r0, _080CB938 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x1 + bne _080CB944 + ldr r0, _080CB93C @ =gUnknown_2039A18 + ldr r1, _080CB940 @ =gUnknown_2039A0E + ldrh r1, [r1] + strh r1, [r0] + b _080CB94A + .align 2, 0 +_080CB934: .4byte gUnknown_3005090 +_080CB938: .4byte gUnknown_20370C0 +_080CB93C: .4byte gUnknown_2039A18 +_080CB940: .4byte gUnknown_2039A0E +_080CB944: + ldr r1, _080CBA60 @ =gUnknown_2039A18 + movs r0, 0 + strh r0, [r1] +_080CB94A: + ldr r4, _080CBA64 @ =gUnknown_2039A14 + movs r1, 0xA + ldrsh r0, [r5, r1] + lsls r0, 3 + bl sub_8002BB0 + str r0, [r4] + bl sub_80CBA7C + movs r6, 0 + movs r4, 0 + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r3, r7, 2 + mov r10, r3 + add r1, sp, 0x18 + mov r9, r1 + cmp r6, r0 + bge _080CB9AE + ldr r2, _080CBA68 @ =gUnknown_83F5BCC + mov r8, r2 +_080CB974: + ldr r0, _080CBA64 @ =gUnknown_2039A14 + ldr r0, [r0] + lsls r3, r4, 3 + adds r3, r0 + lsls r2, r4, 2 + ldr r0, _080CBA6C @ =gUnknown_20370C0 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 4 + adds r2, r0 + add r2, r8 + ldr r1, [r2] + str r1, [r3] + str r4, [r3, 0x4] + movs r0, 0x2 + movs r2, 0 + bl sub_8005ED4 + cmp r0, r6 + ble _080CB9A0 + adds r6, r0, 0 +_080CB9A0: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0xA + ldrsh r0, [r5, r3] + cmp r4, r0 + blt _080CB974 +_080CB9AE: + adds r0, r6, 0 + adds r0, 0x9 + cmp r0, 0 + bge _080CB9B8 + adds r0, 0x7 +_080CB9B8: + asrs r0, 3 + adds r2, r0, 0x1 + strh r2, [r5, 0x10] + movs r1, 0xC + ldrsh r0, [r5, r1] + movs r3, 0x10 + ldrsh r1, [r5, r3] + adds r0, r1 + cmp r0, 0x1D + ble _080CB9D2 + movs r0, 0x1D + subs r0, r2 + strh r0, [r5, 0xC] +_080CB9D2: + ldrb r2, [r5, 0xC] + ldrb r3, [r5, 0xE] + ldrb r0, [r5, 0x10] + str r0, [sp] + ldrb r0, [r5, 0x12] + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0x38 + str r0, [sp, 0xC] + add r0, sp, 0x10 + movs r1, 0 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + mov r0, r9 + bl sub_8003CE4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r1, 0 + bl sub_80F7750 + ldr r4, _080CBA70 @ =gUnknown_3005360 + ldrh r0, [r5, 0xA] + strh r0, [r4, 0xC] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0xE] + ldrh r0, [r5, 0x22] + strb r0, [r4, 0x10] + adds r0, r7, 0 + bl sub_80CBCC0 + ldrh r1, [r5, 0x16] + ldrh r2, [r5, 0x18] + adds r0, r4, 0 + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldrh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, _080CBA74 @ =gUnknown_3005090 + mov r2, r10 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _080CBA78 @ =sub_80CBB28 + str r1, [r0] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CBA60: .4byte gUnknown_2039A18 +_080CBA64: .4byte gUnknown_2039A14 +_080CBA68: .4byte gUnknown_83F5BCC +_080CBA6C: .4byte gUnknown_20370C0 +_080CBA70: .4byte gUnknown_3005360 +_080CBA74: .4byte gUnknown_3005090 +_080CBA78: .4byte sub_80CBB28 + thumb_func_end sub_80CB904 + + thumb_func_start sub_80CBA7C +sub_80CBA7C: @ 80CBA7C + ldr r2, _080CBAD0 @ =gUnknown_3005360 + ldr r0, _080CBAD4 @ =gUnknown_2039A14 + ldr r0, [r0] + str r0, [r2] + ldr r0, _080CBAD8 @ =sub_80CBADC + str r0, [r2, 0x4] + movs r0, 0 + str r0, [r2, 0x8] + movs r1, 0 + movs r0, 0x1 + strh r0, [r2, 0xC] + strh r0, [r2, 0xE] + strb r1, [r2, 0x10] + strb r1, [r2, 0x11] + movs r0, 0x8 + strb r0, [r2, 0x12] + strb r1, [r2, 0x13] + movs r0, 0x20 + strb r0, [r2, 0x14] + movs r3, 0x1 + movs r0, 0x31 + strb r0, [r2, 0x15] + ldrb r1, [r2, 0x16] + subs r0, 0x39 + ands r0, r1 + orrs r0, r3 + movs r1, 0x39 + negs r1, r1 + ands r0, r1 + movs r3, 0x3F + ands r0, r3 + strb r0, [r2, 0x16] + ldrb r1, [r2, 0x17] + movs r0, 0x40 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + ands r0, r3 + strb r0, [r2, 0x17] + bx lr + .align 2, 0 +_080CBAD0: .4byte gUnknown_3005360 +_080CBAD4: .4byte gUnknown_2039A14 +_080CBAD8: .4byte sub_80CBADC + thumb_func_end sub_80CBA7C + + thumb_func_start sub_80CBADC +sub_80CBADC: @ 80CBADC + push {r4,lr} + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080CBB18 @ =sub_80CBB28 + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _080CBB12 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080CBB1C @ =gUnknown_3005090 + adds r0, r1 + ldrh r0, [r0, 0x24] + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080CBB20 @ =gUnknown_3005378 + adds r1, r4, 0 + movs r2, 0 + bl sub_81072D4 + ldr r1, _080CBB24 @ =gUnknown_2039A18 + ldrh r0, [r4] + strh r0, [r1] +_080CBB12: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CBB18: .4byte sub_80CBB28 +_080CBB1C: .4byte gUnknown_3005090 +_080CBB20: .4byte gUnknown_3005378 +_080CBB24: .4byte gUnknown_2039A18 + thumb_func_end sub_80CBADC + + thumb_func_start sub_80CBB28 +sub_80CBB28: @ 80CBB28 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CBB54 @ =gUnknown_3005090 + adds r6, r0, r1 + ldrh r0, [r6, 0x24] + lsls r0, 24 + lsrs r0, 24 + bl sub_8107078 + adds r4, r0, 0 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _080CBB58 + adds r0, 0x1 + cmp r4, r0 + bne _080CBB6C + b _080CBBA2 + .align 2, 0 +_080CBB54: .4byte gUnknown_3005090 +_080CBB58: + ldr r1, _080CBB68 @ =gUnknown_20370D0 + movs r0, 0x7F + strh r0, [r1] + movs r0, 0x5 + bl sub_80722CC + b _080CBB88 + .align 2, 0 +_080CBB68: .4byte gUnknown_20370D0 +_080CBB6C: + ldr r0, _080CBB90 @ =gUnknown_20370D0 + strh r4, [r0] + movs r0, 0x5 + bl sub_80722CC + movs r1, 0x14 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080CBB88 + movs r1, 0xA + ldrsh r0, [r6, r1] + subs r0, 0x1 + cmp r4, r0 + bne _080CBB94 +_080CBB88: + adds r0, r5, 0 + bl sub_80CBBAC + b _080CBBA2 + .align 2, 0 +_080CBB90: .4byte gUnknown_20370D0 +_080CBB94: + adds r0, r5, 0 + bl sub_80CBD50 + ldr r0, _080CBBA8 @ =sub_80CBC2C + str r0, [r6] + bl sub_8069B34 +_080CBBA2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CBBA8: .4byte sub_80CBC2C + thumb_func_end sub_80CBB28 + + thumb_func_start sub_80CBBAC +sub_80CBBAC: @ 80CBBAC + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _080CBC24 @ =gUnknown_3005090 + adds r4, r0 + adds r0, r5, 0 + bl sub_80CBD50 + ldrh r0, [r4, 0x24] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldr r0, _080CBC28 @ =gUnknown_2039A14 + ldr r0, [r0] + bl sub_8002BC4 + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_810F4D8 + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_800445C + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8003F20 + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003E3C + adds r0, r5, 0 + bl sub_8077508 + bl sub_8069B34 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CBC24: .4byte gUnknown_3005090 +_080CBC28: .4byte gUnknown_2039A14 + thumb_func_end sub_80CBBAC + + thumb_func_start sub_80CBC2C +sub_80CBC2C: @ 80CBC2C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CBC54 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x14 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _080CBC50 + cmp r0, 0x2 + bne _080CBC50 + movs r0, 0x1 + strh r0, [r1, 0x14] + ldr r0, _080CBC58 @ =sub_80CBC90 + str r0, [r1] +_080CBC50: + pop {r0} + bx r0 + .align 2, 0 +_080CBC54: .4byte gUnknown_3005090 +_080CBC58: .4byte sub_80CBC90 + thumb_func_end sub_80CBC2C + + thumb_func_start sub_80CBC5C +sub_80CBC5C: @ 80CBC5C + push {lr} + ldr r0, _080CBC74 @ =sub_80CBC2C + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _080CBC78 + bl sub_8069B34 + b _080CBC88 + .align 2, 0 +_080CBC74: .4byte sub_80CBC2C +_080CBC78: + ldr r0, _080CBC8C @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x14] + adds r0, 0x1 + strh r0, [r1, 0x14] +_080CBC88: + pop {r0} + bx r0 + .align 2, 0 +_080CBC8C: .4byte gUnknown_3005090 + thumb_func_end sub_80CBC5C + + thumb_func_start sub_80CBC90 +sub_80CBC90: @ 80CBC90 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8069940 + adds r0, r4, 0 + bl sub_80CBCC0 + ldr r1, _080CBCB8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080CBCBC @ =sub_80CBB28 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CBCB8: .4byte gUnknown_3005090 +_080CBCBC: .4byte sub_80CBB28 + thumb_func_end sub_80CBC90 + + thumb_func_start sub_80CBCC0 +sub_80CBCC0: @ 80CBCC0 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080CBD44 @ =gUnknown_3005090 + adds r4, r1, r0 + mov r1, sp + ldr r0, _080CBD48 @ =gUnknown_83F5D1C + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r0] + str r0, [r1] + movs r0, 0x8 + ldrsh r1, [r4, r0] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080CBD3C + mov r2, sp + movs r3, 0x10 + ldrsh r1, [r4, r3] + lsls r1, 2 + movs r5, 0xC + ldrsh r0, [r4, r5] + lsls r0, 3 + adds r1, r0 + movs r3, 0 + strb r1, [r2, 0x1] + mov r1, sp + movs r0, 0x8 + strb r0, [r1, 0x2] + movs r0, 0x10 + ldrsh r1, [r4, r0] + lsls r1, 2 + movs r5, 0xC + ldrsh r0, [r4, r5] + lsls r0, 3 + adds r1, r0 + strb r1, [r2, 0x4] + mov r1, sp + movs r2, 0x12 + ldrsh r0, [r4, r2] + lsls r0, 3 + adds r0, 0xA + strb r0, [r1, 0x5] + mov r0, sp + strh r3, [r0, 0x6] + mov r2, sp + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x8] + subs r0, r1 + strh r0, [r2, 0x8] + ldr r1, _080CBD4C @ =gUnknown_2039A18 + mov r0, sp + bl sub_8133A20 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] +_080CBD3C: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CBD44: .4byte gUnknown_3005090 +_080CBD48: .4byte gUnknown_83F5D1C +_080CBD4C: .4byte gUnknown_2039A18 + thumb_func_end sub_80CBCC0 + + thumb_func_start sub_80CBD50 +sub_80CBD50: @ 80CBD50 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080CBD7C @ =gUnknown_3005090 + adds r2, r1, r0 + movs r0, 0x8 + ldrsh r1, [r2, r0] + movs r3, 0xA + ldrsh r0, [r2, r3] + cmp r1, r0 + beq _080CBD76 + ldrh r0, [r2, 0x20] + lsls r0, 24 + lsrs r0, 24 + bl sub_8133C30 +_080CBD76: + pop {r0} + bx r0 + .align 2, 0 +_080CBD7C: .4byte gUnknown_3005090 + thumb_func_end sub_80CBD50 + + thumb_func_start sub_80CBD80 +sub_80CBD80: @ 80CBD80 + push {lr} + movs r0, 0x16 + bl sub_812B1F0 + movs r0, 0x8 + bl sub_805BDEC + pop {r0} + bx r0 + thumb_func_end sub_80CBD80 + + thumb_func_start sub_80CBD94 +sub_80CBD94: @ 80CBD94 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x2 + bls _080CBDA0 + movs r1, 0 +_080CBDA0: + ldr r0, _080CBDAC @ =gUnknown_83F5D2C + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_080CBDAC: .4byte gUnknown_83F5D2C + thumb_func_end sub_80CBD94 + + thumb_func_start sub_80CBDB0 +sub_80CBDB0: @ 80CBDB0 + push {lr} + ldr r0, _080CBDC8 @ =0x00004031 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_80CBD94 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_080CBDC8: .4byte 0x00004031 + thumb_func_end sub_80CBDB0 + + thumb_func_start sub_80CBDCC +sub_80CBDCC: @ 80CBDCC + push {lr} + ldr r0, _080CBDE4 @ =gUnknown_20370C0 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2 + bl sub_8088E74 + pop {r0} + bx r0 + .align 2, 0 +_080CBDE4: .4byte gUnknown_20370C0 + thumb_func_end sub_80CBDCC + + thumb_func_start sub_80CBDE8 +sub_80CBDE8: @ 80CBDE8 + ldr r1, _080CBDF8 @ =gUnknown_3005074 + movs r0, 0 + strb r0, [r1] + ldr r1, _080CBDFC @ =gUnknown_20370DA + movs r0, 0xFF + strh r0, [r1] + bx lr + .align 2, 0 +_080CBDF8: .4byte gUnknown_3005074 +_080CBDFC: .4byte gUnknown_20370DA + thumb_func_end sub_80CBDE8 + + thumb_func_start sub_80CBE00 +sub_80CBE00: @ 80CBE00 + push {lr} + ldr r0, _080CBE18 @ =gUnknown_20370DA + ldrh r0, [r0] + cmp r0, 0xFF + bne _080CBE44 + ldr r1, _080CBE1C @ =gUnknown_3005074 + ldrb r0, [r1] + cmp r0, 0 + bne _080CBE20 + movs r0, 0x3 + b _080CBE48 + .align 2, 0 +_080CBE18: .4byte gUnknown_20370DA +_080CBE1C: .4byte gUnknown_3005074 +_080CBE20: + ldr r2, _080CBE4C @ =gUnknown_2036E38 + ldrb r1, [r1] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + cmp r0, 0xEF + bls _080CBE40 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl sub_806E5A4 + lsls r0, 24 + lsrs r0, 24 +_080CBE40: + bl sub_813CD24 +_080CBE44: + lsls r0, 24 + lsrs r0, 24 +_080CBE48: + pop {r1} + bx r1 + .align 2, 0 +_080CBE4C: .4byte gUnknown_2036E38 + thumb_func_end sub_80CBE00 + + thumb_func_start sub_80CBE50 +sub_80CBE50: @ 80CBE50 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + ldr r0, _080CBEA4 @ =gUnknown_2024284 + adds r5, r1, r0 + ldr r6, _080CBEA8 @ =gUnknown_2021CD0 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_803FBE8 + mov r4, sp + adds r0, r5, 0 + movs r1, 0x3 + mov r2, sp + bl sub_803FBE8 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080CBEB0 + adds r0, r5, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xB + muls r0, r1 + ldr r1, _080CBEAC @ =gUnknown_8245EE0 + adds r0, r1 + adds r1, r6, 0 + bl sub_8008E28 + cmp r0, 0 + bne _080CBEB0 + movs r0, 0 + b _080CBEB2 + .align 2, 0 +_080CBEA4: .4byte gUnknown_2024284 +_080CBEA8: .4byte gUnknown_2021CD0 +_080CBEAC: .4byte gUnknown_8245EE0 +_080CBEB0: + movs r0, 0x1 +_080CBEB2: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80CBE50 + + thumb_func_start sub_80CBEBC +sub_80CBEBC: @ 80CBEBC + push {lr} + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + bl sub_80CBE50 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80CBEBC + + thumb_func_start sub_80CBED4 +sub_80CBED4: @ 80CBED4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + bl sub_80CBF04 + adds r3, r0, 0 + ldr r0, _080CBF00 @ =gUnknown_83F5AF8 + lsls r4, 2 + adds r4, r0 + ldr r0, [r4] + lsls r3, 24 + lsrs r3, 24 + adds r1, r5, 0 + movs r2, 0 + bl sub_8008E78 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CBF00: .4byte gUnknown_83F5AF8 + thumb_func_end sub_80CBED4 + + thumb_func_start sub_80CBF04 +sub_80CBF04: @ 80CBF04 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0xA + bl __divsi3 + cmp r0, 0 + beq _080CBF90 + adds r0, r4, 0 + movs r1, 0x64 + bl __divsi3 + cmp r0, 0 + bne _080CBF22 + movs r0, 0x2 + b _080CBF9A +_080CBF22: + movs r1, 0xFA + lsls r1, 2 + adds r0, r4, 0 + bl __divsi3 + cmp r0, 0 + bne _080CBF34 + movs r0, 0x3 + b _080CBF9A +_080CBF34: + ldr r1, _080CBF44 @ =0x00002710 + adds r0, r4, 0 + bl __divsi3 + cmp r0, 0 + bne _080CBF48 + movs r0, 0x4 + b _080CBF9A + .align 2, 0 +_080CBF44: .4byte 0x00002710 +_080CBF48: + ldr r1, _080CBF58 @ =0x000186a0 + adds r0, r4, 0 + bl __divsi3 + cmp r0, 0 + bne _080CBF5C + movs r0, 0x5 + b _080CBF9A + .align 2, 0 +_080CBF58: .4byte 0x000186a0 +_080CBF5C: + ldr r1, _080CBF6C @ =0x000f4240 + adds r0, r4, 0 + bl __divsi3 + cmp r0, 0 + bne _080CBF70 + movs r0, 0x6 + b _080CBF9A + .align 2, 0 +_080CBF6C: .4byte 0x000f4240 +_080CBF70: + ldr r1, _080CBF80 @ =0x00989680 + adds r0, r4, 0 + bl __divsi3 + cmp r0, 0 + bne _080CBF84 + movs r0, 0x7 + b _080CBF9A + .align 2, 0 +_080CBF80: .4byte 0x00989680 +_080CBF84: + ldr r1, _080CBF94 @ =0x05f5e100 + adds r0, r4, 0 + bl __divsi3 + cmp r0, 0 + beq _080CBF98 +_080CBF90: + movs r0, 0x1 + b _080CBF9A + .align 2, 0 +_080CBF94: .4byte 0x05f5e100 +_080CBF98: + movs r0, 0x8 +_080CBF9A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CBF04 + + thumb_func_start sub_80CBFA0 +sub_80CBFA0: @ 80CBFA0 + push {r4,lr} + ldr r0, _080CBFC8 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CBFCC @ =gUnknown_2024284 + adds r0, r1 + ldr r4, _080CBFD0 @ =gUnknown_2021CD0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_803FBE8 + ldr r0, _080CBFD4 @ =gUnknown_2021D04 + adds r1, r4, 0 + bl sub_8008E28 + cmp r0, 0 + beq _080CBFD8 + movs r0, 0x1 + b _080CBFDA + .align 2, 0 +_080CBFC8: .4byte gUnknown_20370C0 +_080CBFCC: .4byte gUnknown_2024284 +_080CBFD0: .4byte gUnknown_2021CD0 +_080CBFD4: .4byte gUnknown_2021D04 +_080CBFD8: + movs r0, 0 +_080CBFDA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CBFA0 + + thumb_func_start sub_80CBFE0 +sub_80CBFE0: @ 80CBFE0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + ldr r0, _080CC050 @ =gUnknown_20370D6 + ldrb r0, [r0] + ldr r1, _080CC054 @ =gUnknown_20370D8 + ldrb r1, [r1] + bl sub_808BD30 + adds r6, r0, 0 + ldr r2, _080CC058 @ =gUnknown_2021D04 + movs r1, 0x2 + bl sub_803FD44 + ldr r0, _080CC05C @ =gUnknown_2021CF0 + mov r8, r0 + adds r0, r6, 0 + movs r1, 0x2 + mov r2, r8 + bl sub_803FD44 + adds r0, r6, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FD44 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + bl sub_803F730 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FD44 + str r0, [sp] + ldr r0, _080CC060 @ =sub_80CC064 + str r0, [sp, 0x4] + movs r0, 0x3 + mov r1, r8 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_809D954 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CC050: .4byte gUnknown_20370D6 +_080CC054: .4byte gUnknown_20370D8 +_080CC058: .4byte gUnknown_2021D04 +_080CC05C: .4byte gUnknown_2021CF0 +_080CC060: .4byte sub_80CC064 + thumb_func_end sub_80CBFE0 + + thumb_func_start sub_80CC064 +sub_80CC064: @ 80CC064 + push {lr} + ldr r0, _080CC07C @ =gUnknown_20370D6 + ldrb r0, [r0] + ldr r1, _080CC080 @ =gUnknown_20370D8 + ldrb r1, [r1] + ldr r2, _080CC084 @ =gUnknown_2021CF0 + bl sub_808BB2C + bl sub_80568E0 + pop {r0} + bx r0 + .align 2, 0 +_080CC07C: .4byte gUnknown_20370D6 +_080CC080: .4byte gUnknown_20370D8 +_080CC084: .4byte gUnknown_2021CF0 + thumb_func_end sub_80CC064 + + thumb_func_start sub_80CC088 +sub_80CC088: @ 80CC088 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x8 + ldr r0, _080CC130 @ =gUnknown_20370C0 + mov r9, r0 + ldrh r0, [r0] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r6, _080CC134 @ =gUnknown_2024284 + adds r0, r6 + ldr r2, _080CC138 @ =gUnknown_2021D04 + movs r1, 0x2 + bl sub_803FBE8 + mov r1, r9 + ldrh r0, [r1] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + ldr r1, _080CC13C @ =gUnknown_2021CF0 + mov r10, r1 + movs r1, 0x2 + mov r2, r10 + bl sub_803FBE8 + mov r1, r9 + ldrh r0, [r1] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r1, r9 + ldrh r0, [r1] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + bl sub_803F720 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r9 + ldrh r0, [r1] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + ldr r0, _080CC140 @ =sub_80CC144 + str r0, [sp, 0x4] + movs r0, 0x3 + mov r1, r10 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_809D954 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CC130: .4byte gUnknown_20370C0 +_080CC134: .4byte gUnknown_2024284 +_080CC138: .4byte gUnknown_2021D04 +_080CC13C: .4byte gUnknown_2021CF0 +_080CC140: .4byte sub_80CC144 + thumb_func_end sub_80CC088 + + thumb_func_start sub_80CC144 +sub_80CC144: @ 80CC144 + push {lr} + ldr r0, _080CC164 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CC168 @ =gUnknown_2024284 + adds r0, r1 + ldr r2, _080CC16C @ =gUnknown_2021CF0 + movs r1, 0x2 + bl sub_804037C + bl sub_80568E0 + pop {r0} + bx r0 + .align 2, 0 +_080CC164: .4byte gUnknown_20370C0 +_080CC168: .4byte gUnknown_2024284 +_080CC16C: .4byte gUnknown_2021CF0 + thumb_func_end sub_80CC144 + + thumb_func_start sub_80CC170 +sub_80CC170: @ 80CC170 + push {r4,lr} + ldr r0, _080CC194 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CC198 @ =gUnknown_2024284 + adds r0, r1 + ldr r4, _080CC19C @ =gUnknown_2021CD0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_803FBE8 + adds r0, r4, 0 + bl sub_8008D28 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CC194: .4byte gUnknown_20370C0 +_080CC198: .4byte gUnknown_2024284 +_080CC19C: .4byte gUnknown_2021CD0 + thumb_func_end sub_80CC170 + + thumb_func_start sub_80CC1A0 +sub_80CC1A0: @ 80CC1A0 + push {r4,lr} + bl sub_80CC1E4 + adds r4, r0, 0 + ldr r0, _080CC1C8 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CC1CC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + bne _080CC1D4 + ldr r1, _080CC1D0 @ =gUnknown_20370D0 + movs r0, 0 + b _080CC1D8 + .align 2, 0 +_080CC1C8: .4byte gUnknown_20370C0 +_080CC1CC: .4byte gUnknown_2024284 +_080CC1D0: .4byte gUnknown_20370D0 +_080CC1D4: + ldr r1, _080CC1E0 @ =gUnknown_20370D0 + movs r0, 0x1 +_080CC1D8: + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CC1E0: .4byte gUnknown_20370D0 + thumb_func_end sub_80CC1A0 + + thumb_func_start sub_80CC1E4 +sub_80CC1E4: @ 80CC1E4 + ldr r0, _080CC200 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r0, [r2, 0xD] + lsls r0, 24 + ldrb r1, [r2, 0xC] + lsls r1, 16 + orrs r0, r1 + ldrb r1, [r2, 0xB] + lsls r1, 8 + orrs r0, r1 + ldrb r1, [r2, 0xA] + orrs r0, r1 + bx lr + .align 2, 0 +_080CC200: .4byte gUnknown_300500C + thumb_func_end sub_80CC1E4 + + thumb_func_start sub_80CC204 +sub_80CC204: @ 80CC204 + push {r4,lr} + movs r4, 0 + ldr r0, _080CC2A4 @ =0x0000089b + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC218 + movs r4, 0x1 +_080CC218: + ldr r0, _080CC2A8 @ =0x0000089c + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC22A + movs r0, 0x2 + orrs r4, r0 +_080CC22A: + ldr r0, _080CC2AC @ =0x0000089d + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC240 + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080CC240: + ldr r0, _080CC2B0 @ =0x0000089e + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC256 + movs r0, 0x8 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080CC256: + ldr r0, _080CC2B4 @ =0x0000089f + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC26C + movs r0, 0x10 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080CC26C: + ldr r0, _080CC2B8 @ =0x000008a1 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC282 + movs r0, 0x20 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080CC282: + movs r0, 0x8A + lsls r0, 4 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC29A + movs r0, 0x40 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080CC29A: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080CC2A4: .4byte 0x0000089b +_080CC2A8: .4byte 0x0000089c +_080CC2AC: .4byte 0x0000089d +_080CC2B0: .4byte 0x0000089e +_080CC2B4: .4byte 0x0000089f +_080CC2B8: .4byte 0x000008a1 + thumb_func_end sub_80CC204 + + thumb_func_start sub_80CC2BC +sub_80CC2BC: @ 80CC2BC + push {r4-r7,lr} + sub sp, 0x24 + movs r5, 0 + add r7, sp, 0xC + movs r1, 0 +_080CC2C6: + lsls r0, r5, 1 + add r0, sp + strh r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080CC2C6 + bl sub_8040C3C + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + cmp r5, r6 + bcs _080CC318 +_080CC2E4: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + ldr r0, _080CC3BC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + lsls r1, r5, 1 + add r1, sp + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + lsls r1, r5, 2 + adds r1, r7, r1 + str r0, [r1] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _080CC2E4 +_080CC318: + ldr r4, _080CC3C0 @ =0x00004043 + mov r0, sp + ldrh r0, [r0] + ldr r1, [sp, 0xC] + bl sub_8097F00 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + adds r4, 0x1 + mov r0, sp + ldrh r0, [r0, 0x2] + ldr r1, [r7, 0x4] + bl sub_8097F00 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + adds r4, 0x1 + mov r0, sp + ldrh r0, [r0, 0x4] + ldr r1, [r7, 0x8] + bl sub_8097F00 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + adds r4, 0x1 + mov r0, sp + ldrh r0, [r0, 0x6] + ldr r1, [r7, 0xC] + bl sub_8097F00 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + adds r4, 0x1 + mov r0, sp + ldrh r0, [r0, 0x8] + ldr r1, [r7, 0x10] + bl sub_8097F00 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + adds r4, 0x1 + mov r0, sp + ldrh r0, [r0, 0xA] + ldr r1, [r7, 0x14] + bl sub_8097F00 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 + ldr r0, _080CC3C4 @ =0x00004042 + ldr r1, _080CC3C8 @ =gUnknown_20370C0 + ldrh r1, [r1] + bl sub_806E584 + add sp, 0x24 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC3BC: .4byte gUnknown_2024284 +_080CC3C0: .4byte 0x00004043 +_080CC3C4: .4byte 0x00004042 +_080CC3C8: .4byte gUnknown_20370C0 + thumb_func_end sub_80CC2BC + + thumb_func_start sub_80CC3CC +sub_80CC3CC: @ 80CC3CC + push {r4-r6,lr} + movs r5, 0 + ldr r4, _080CC3F8 @ =gUnknown_20370C0 + movs r0, 0xA + bl sub_8054EC4 + strh r0, [r4] + movs r0, 0xD + bl sub_8054EC4 + adds r6, r0, 0 + ldr r4, _080CC3FC @ =gUnknown_20370C4 + movs r0, 0x17 + bl sub_8054EC4 + strh r0, [r4] + ldr r1, _080CC400 @ =0x0000ffff + cmp r6, r1 + bls _080CC408 + ldr r0, _080CC404 @ =gUnknown_20370C2 + strh r1, [r0] + b _080CC40C + .align 2, 0 +_080CC3F8: .4byte gUnknown_20370C0 +_080CC3FC: .4byte gUnknown_20370C4 +_080CC400: .4byte 0x0000ffff +_080CC404: .4byte gUnknown_20370C2 +_080CC408: + ldr r0, _080CC440 @ =gUnknown_20370C2 + strh r6, [r0] +_080CC40C: + adds r1, r0, 0 + ldr r0, _080CC444 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + beq _080CC41A + movs r0, 0x1 + orrs r5, r0 +_080CC41A: + ldrh r0, [r1] + cmp r0, 0 + beq _080CC428 + movs r0, 0x2 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r5, r0, 16 +_080CC428: + ldr r0, _080CC448 @ =gUnknown_20370C4 + ldrh r0, [r0] + cmp r0, 0 + beq _080CC438 + movs r0, 0x4 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r5, r0, 16 +_080CC438: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080CC440: .4byte gUnknown_20370C2 +_080CC444: .4byte gUnknown_20370C0 +_080CC448: .4byte gUnknown_20370C4 + thumb_func_end sub_80CC3CC + + thumb_func_start sub_80CC44C +sub_80CC44C: @ 80CC44C + push {lr} + lsls r1, 24 + lsrs r1, 24 + adds r2, r1, 0 + cmp r1, 0 + bne _080CC45E + lsls r0, 16 + lsrs r0, 16 + b _080CC486 +_080CC45E: + cmp r1, 0x1 + bne _080CC470 + lsrs r0, 16 + movs r1, 0xFF + ands r0, r1 + movs r1, 0xFA + lsls r1, 2 + adds r0, r1 + b _080CC486 +_080CC470: + cmp r1, 0x2 + bne _080CC47C + lsrs r0, 24 + movs r1, 0x7F + ands r0, r1 + b _080CC486 +_080CC47C: + cmp r2, 0x3 + beq _080CC484 + movs r0, 0x1 + b _080CC486 +_080CC484: + lsrs r0, 31 +_080CC486: + pop {r1} + bx r1 + thumb_func_end sub_80CC44C + + thumb_func_start sub_80CC48C +sub_80CC48C: @ 80CC48C + push {r4,r5,lr} + bl sub_8040C3C + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + cmp r4, r5 + bcs _080CC4CA +_080CC49C: + movs r0, 0x64 + muls r0, r4 + ldr r1, _080CC4B8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + ldr r1, _080CC4BC @ =gUnknown_20370C0 + ldrh r1, [r1] + cmp r0, r1 + bne _080CC4C0 + movs r0, 0x1 + b _080CC4CC + .align 2, 0 +_080CC4B8: .4byte gUnknown_2024284 +_080CC4BC: .4byte gUnknown_20370C0 +_080CC4C0: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _080CC49C +_080CC4CA: + movs r0, 0 +_080CC4CC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80CC48C + + thumb_func_start sub_80CC4D4 +sub_80CC4D4: @ 80CC4D4 + push {r4-r7,lr} + movs r3, 0 + ldr r0, _080CC508 @ =gUnknown_3005008 + ldr r4, [r0] + movs r6, 0x4 + ldrsb r6, [r4, r6] + ldr r5, _080CC50C @ =gUnknown_83F5D32 + adds r0, r5, 0x2 + mov r12, r0 + adds r7, r5, 0x1 +_080CC4E8: + lsls r0, r3, 1 + adds r2, r0, r3 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r6, r0 + bne _080CC510 + movs r1, 0x5 + ldrsb r1, [r4, r1] + adds r0, r2, r7 + ldrb r0, [r0] + cmp r1, r0 + bne _080CC510 + mov r1, r12 + adds r0, r2, r1 + ldrb r0, [r0] + b _080CC51C + .align 2, 0 +_080CC508: .4byte gUnknown_3005008 +_080CC50C: .4byte gUnknown_83F5D32 +_080CC510: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xB + bls _080CC4E8 + movs r0, 0x1 +_080CC51C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80CC4D4 + + thumb_func_start sub_80CC524 +sub_80CC524: @ 80CC524 + push {lr} + movs r0, 0xB + movs r1, 0 + bl sub_8113550 + pop {r0} + bx r0 + thumb_func_end sub_80CC524 + + thumb_func_start sub_80CC534 +sub_80CC534: @ 80CC534 + push {r4-r6,lr} + movs r4, 0 + ldr r6, _080CC57C @ =gUnknown_3005008 + ldr r5, _080CC580 @ =gUnknown_83F5D58 +_080CC53C: + ldr r3, [r6] + movs r1, 0x4 + ldrsb r1, [r3, r1] + lsls r0, r4, 3 + adds r2, r0, r5 + ldrh r0, [r2] + cmp r1, r0 + bne _080CC58C + movs r0, 0x5 + ldrsb r0, [r3, r0] + ldrh r2, [r2, 0x2] + cmp r0, r2 + bne _080CC58C + ldr r5, _080CC584 @ =0x0000404d + adds r0, r5, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x23 + bne _080CC56A + cmp r4, 0x20 + beq _080CC596 +_080CC56A: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806E584 + ldr r0, _080CC588 @ =0x00000808 + bl sub_806E680 + b _080CC596 + .align 2, 0 +_080CC57C: .4byte gUnknown_3005008 +_080CC580: .4byte gUnknown_83F5D58 +_080CC584: .4byte 0x0000404d +_080CC588: .4byte 0x00000808 +_080CC58C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x32 + bls _080CC53C +_080CC596: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80CC534 + + thumb_func_start sub_80CC59C +sub_80CC59C: @ 80CC59C + push {r4-r7,lr} + sub sp, 0x8 + ldr r0, _080CC5F8 @ =0x0000404d + bl sub_806E568 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r6, _080CC5FC @ =0xffffff00 + ldr r0, [sp, 0x4] + ands r0, r6 + ldr r4, _080CC600 @ =0xffff00ff + ands r0, r4 + str r0, [sp, 0x4] + ldr r0, _080CC604 @ =0x00000808 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080CC5C4 + b _080CC71E +_080CC5C4: + cmp r5, 0x5 + bne _080CC61C + ldr r0, _080CC608 @ =gUnknown_3005008 + ldr r2, [r0] + movs r1, 0x4 + ldrsb r1, [r2, r1] + adds r7, r0, 0 + cmp r1, 0xF + bne _080CC67C + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r0, 0 + beq _080CC5E2 + cmp r0, 0x3 + bne _080CC67C +_080CC5E2: + ldr r1, [sp, 0x4] + ands r1, r6 + movs r0, 0x66 + orrs r1, r0 + str r1, [sp, 0x4] + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r0, 0 + bne _080CC60C + lsls r0, r5, 8 + b _080CC610 + .align 2, 0 +_080CC5F8: .4byte 0x0000404d +_080CC5FC: .4byte 0xffffff00 +_080CC600: .4byte 0xffff00ff +_080CC604: .4byte 0x00000808 +_080CC608: .4byte gUnknown_3005008 +_080CC60C: + movs r0, 0xC0 + lsls r0, 3 +_080CC610: + ands r1, r4 + orrs r1, r0 + str r1, [sp, 0x4] + add r1, sp, 0x4 + movs r0, 0x23 + b _080CC66C +_080CC61C: + ldr r7, _080CC65C @ =gUnknown_3005008 + cmp r5, 0x3 + bne _080CC67C + ldr r1, [r7] + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, 0x3 + bne _080CC67C + ldrb r0, [r1, 0x5] + subs r0, 0x29 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080CC67C + ldr r1, _080CC660 @ =gUnknown_83F5D58 + ldrh r0, [r1, 0x18] + ldrh r1, [r1, 0x1A] + bl sub_8055238 + ldrb r0, [r0, 0x14] + add r1, sp, 0x4 + strb r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + adds r6, r1, 0 + cmp r0, 0x29 + bne _080CC664 + strb r5, [r6, 0x1] + b _080CC668 + .align 2, 0 +_080CC65C: .4byte gUnknown_3005008 +_080CC660: .4byte gUnknown_83F5D58 +_080CC664: + movs r0, 0x4 + strb r0, [r6, 0x1] +_080CC668: + movs r0, 0x23 + adds r1, r6, 0 +_080CC66C: + bl sub_8113550 + ldr r0, _080CC678 @ =0x00000808 + bl sub_806E6A8 + b _080CC71E + .align 2, 0 +_080CC678: .4byte 0x00000808 +_080CC67C: + ldr r3, [r7] + movs r2, 0x4 + ldrsb r2, [r3, r2] + ldr r1, _080CC6D0 @ =gUnknown_83F5D58 + lsls r0, r5, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0x4] + cmp r2, r0 + bne _080CC71E + movs r0, 0x5 + ldrsb r0, [r3, r0] + ldrh r2, [r1, 0x6] + cmp r0, r2 + bne _080CC71E + ldrh r0, [r1] + ldrh r1, [r1, 0x2] + bl sub_8055238 + ldrb r1, [r0, 0x14] + add r0, sp, 0x4 + strb r1, [r0] + strb r5, [r0, 0x1] + adds r6, r0, 0 + cmp r5, 0x16 + bne _080CC6D4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0xF + bne _080CC6F6 + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0x1A + beq _080CC6FC + b _080CC6F6 + .align 2, 0 +_080CC6D0: .4byte gUnknown_83F5D58 +_080CC6D4: + cmp r5, 0x2A + bne _080CC6FC + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x43 + bne _080CC6F6 + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0xF + beq _080CC6FC +_080CC6F6: + ldrb r0, [r6, 0x1] + adds r0, 0x1 + strb r0, [r6, 0x1] +_080CC6FC: + movs r0, 0x23 + adds r1, r6, 0 + bl sub_8113550 + ldr r4, _080CC728 @ =0x00000808 + adds r0, r4, 0 + bl sub_806E6A8 + cmp r5, 0x23 + bne _080CC71E + ldr r0, _080CC72C @ =0x0000404d + movs r1, 0x20 + bl sub_806E584 + adds r0, r4, 0 + bl sub_806E680 +_080CC71E: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC728: .4byte 0x00000808 +_080CC72C: .4byte 0x0000404d + thumb_func_end sub_80CC59C + + thumb_func_start sub_80CC730 +sub_80CC730: @ 80CC730 + push {lr} + ldr r0, _080CC744 @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0x4 + bhi _080CC77C + lsls r0, 2 + ldr r1, _080CC748 @ =_080CC74C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CC744: .4byte gUnknown_20370D0 +_080CC748: .4byte _080CC74C + .align 2, 0 +_080CC74C: + .4byte _080CC760 + .4byte _080CC764 + .4byte _080CC768 + .4byte _080CC76C + .4byte _080CC770 +_080CC760: + movs r0, 0x3 + b _080CC772 +_080CC764: + movs r0, 0x4 + b _080CC772 +_080CC768: + movs r0, 0 + b _080CC772 +_080CC76C: + movs r0, 0x1 + b _080CC772 +_080CC770: + movs r0, 0x2 +_080CC772: + bl sub_81445C0 + lsls r0, 16 + lsrs r0, 16 + b _080CC78A +_080CC77C: + ldr r0, _080CC790 @ =gUnknown_83F5EF0 + ldr r1, _080CC794 @ =0x00000f21 + ldr r2, _080CC798 @ =gUnknown_83F5F24 + movs r3, 0x1 + bl AGBAssert + movs r0, 0 +_080CC78A: + pop {r1} + bx r1 + .align 2, 0 +_080CC790: .4byte gUnknown_83F5EF0 +_080CC794: .4byte 0x00000f21 +_080CC798: .4byte gUnknown_83F5F24 + thumb_func_end sub_80CC730 + + thumb_func_start sub_80CC79C +sub_80CC79C: @ 80CC79C + ldr r1, _080CC7A4 @ =gUnknown_2039A1A + strb r0, [r1] + bx lr + .align 2, 0 +_080CC7A4: .4byte gUnknown_2039A1A + thumb_func_end sub_80CC79C + + thumb_func_start sub_80CC7A8 +sub_80CC7A8: @ 80CC7A8 + ldr r0, _080CC7B0 @ =gUnknown_2039A1A + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CC7B0: .4byte gUnknown_2039A1A + thumb_func_end sub_80CC7A8 + + thumb_func_start sub_80CC7B4 +sub_80CC7B4: @ 80CC7B4 + push {r4,r5,lr} + ldr r5, _080CC7E8 @ =0x00000843 + adds r0, r5, 0 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080CC7F0 + bl sub_808B9F4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080CC7EC @ =0x00004037 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _080CC7F0 + adds r0, r5, 0 + bl sub_806E680 + movs r0, 0x1 + b _080CC7F2 + .align 2, 0 +_080CC7E8: .4byte 0x00000843 +_080CC7EC: .4byte 0x00004037 +_080CC7F0: + movs r0, 0 +_080CC7F2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80CC7B4 + + thumb_func_start sub_80CC7F8 +sub_80CC7F8: @ 80CC7F8 + push {r4-r7,lr} + ldr r0, _080CC850 @ =0x00004037 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_80CC79C + bl sub_808B9F4 + lsls r0, 24 + lsrs r4, r0, 24 +_080CC810: + movs r5, 0 + lsls r6, r4, 24 + lsls r7, r4, 16 +_080CC816: + lsls r1, r5, 24 + lsrs r1, 24 + lsrs r0, r6, 24 + bl sub_808BD30 + movs r1, 0xB + movs r2, 0 + bl sub_803FD44 + cmp r0, 0 + bne _080CC858 + bl sub_80CC7A8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + beq _080CC83E + ldr r0, _080CC854 @ =0x00000843 + bl sub_806E6A8 +_080CC83E: + ldr r0, _080CC850 @ =0x00004037 + lsrs r1, r7, 16 + bl sub_806E584 + bl sub_80CC7B4 + lsls r0, 24 + lsrs r0, 24 + b _080CC874 + .align 2, 0 +_080CC850: .4byte 0x00004037 +_080CC854: .4byte 0x00000843 +_080CC858: + adds r5, 0x1 + cmp r5, 0x1D + ble _080CC816 + adds r4, 0x1 + cmp r4, 0xE + bne _080CC866 + movs r4, 0 +_080CC866: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _080CC810 + movs r0, 0 +_080CC874: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80CC7F8 + + thumb_func_start sub_80CC87C +sub_80CC87C: @ 80CC87C + push {r4,lr} + ldr r0, _080CC8AC @ =gUnknown_2031DB4 + movs r1, 0 + ldrsb r1, [r0, r1] + lsls r1, 8 + ldrb r0, [r0, 0x1] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r2, _080CC8B0 @ =gUnknown_83F5F26 + ldrh r0, [r2] + ldr r1, _080CC8B4 @ =0x0000ffff + cmp r0, r1 + beq _080CC8C2 + adds r4, r1, 0 + adds r1, r2, 0 +_080CC8A0: + ldrh r0, [r2] + cmp r0, r3 + bne _080CC8B8 + movs r0, 0x1 + b _080CC8C4 + .align 2, 0 +_080CC8AC: .4byte gUnknown_2031DB4 +_080CC8B0: .4byte gUnknown_83F5F26 +_080CC8B4: .4byte 0x0000ffff +_080CC8B8: + adds r1, 0x2 + adds r2, 0x2 + ldrh r0, [r1] + cmp r0, r4 + bne _080CC8A0 +_080CC8C2: + movs r0, 0 +_080CC8C4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CC87C + + thumb_func_start sub_80CC8CC +sub_80CC8CC: @ 80CC8CC + push {r4,lr} + ldr r1, _080CC8E4 @ =gUnknown_20370C0 + ldr r2, _080CC8E8 @ =0xfffffedf + adds r0, r2, 0 + ldrh r2, [r1] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x39 + bls _080CC8EC + movs r0, 0 + b _080CC908 + .align 2, 0 +_080CC8E4: .4byte gUnknown_20370C0 +_080CC8E8: .4byte 0xfffffedf +_080CC8EC: + ldr r4, _080CC910 @ =gUnknown_2021CD0 + ldrh r0, [r1] + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + muls r1, r0 + ldr r0, _080CC914 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008D84 + movs r0, 0x1 +_080CC908: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080CC910: .4byte gUnknown_2021CD0 +_080CC914: .4byte gUnknown_8247094 + thumb_func_end sub_80CC8CC + + thumb_func_start sub_80CC918 +sub_80CC918: @ 80CC918 + push {r4,lr} + ldr r4, _080CC940 @ =0x00004025 + adds r0, r4, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080CC944 @ =0x000001f3 + cmp r1, r0 + bhi _080CC938 + adds r1, 0x1 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 +_080CC938: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CC940: .4byte 0x00004025 +_080CC944: .4byte 0x000001f3 + thumb_func_end sub_80CC918 + + thumb_func_start sub_80CC948 +sub_80CC948: @ 80CC948 + push {lr} + ldr r0, _080CC968 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080CC96C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x6 + bl sub_80436F8 + ldr r0, _080CC970 @ =0x00004025 + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_080CC968: .4byte gUnknown_20370C0 +_080CC96C: .4byte gUnknown_2024284 +_080CC970: .4byte 0x00004025 + thumb_func_end sub_80CC948 + + thumb_func_start sub_80CC974 +sub_80CC974: @ 80CC974 + push {r4-r6,lr} + ldr r0, _080CC9A8 @ =sub_80CCA18 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r5, r1, 3 + ldr r6, _080CC9AC @ =gUnknown_3005098 + adds r4, r5, r6 + movs r0, 0x3 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CC9B4 + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _080CC9B0 @ =sub_80CCAF4 + str r1, [r0] + b _080CCA08 + .align 2, 0 +_080CC9A8: .4byte sub_80CCA18 +_080CC9AC: .4byte gUnknown_3005098 +_080CC9B0: .4byte sub_80CCAF4 +_080CC9B4: + ldr r0, _080CC9D8 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _080CC9DC @ =0x00004f01 + cmp r1, r0 + bne _080CC9E8 + ldr r0, _080CC9E0 @ =gUnknown_83F61FB + ldrb r0, [r0] + strh r0, [r4] + movs r0, 0x8 + strh r0, [r4, 0x4] + ldr r0, _080CC9E4 @ =gUnknown_83F60D0 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC + b _080CC9FC + .align 2, 0 +_080CC9D8: .4byte gUnknown_3005008 +_080CC9DC: .4byte 0x00004f01 +_080CC9E0: .4byte gUnknown_83F61FB +_080CC9E4: .4byte gUnknown_83F60D0 +_080CC9E8: + ldr r0, _080CCA10 @ =gUnknown_83F61F0 + ldrb r0, [r0] + strh r0, [r4] + movs r0, 0xB + strh r0, [r4, 0x4] + ldr r0, _080CCA14 @ =gUnknown_83F5F50 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC +_080CC9FC: + movs r0, 0 + strh r0, [r4, 0x2] + movs r0, 0x7 + movs r1, 0x1 + bl sub_8059948 +_080CCA08: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CCA10: .4byte gUnknown_83F61F0 +_080CCA14: .4byte gUnknown_83F5F50 + thumb_func_end sub_80CC974 + + thumb_func_start sub_80CCA18 +sub_80CCA18: @ 80CCA18 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080CCAA4 @ =gUnknown_3005098 + adds r4, r1, r0 + ldr r0, _080CCAA8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080CCAE6 + movs r0, 0x2 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080CCAE6 + movs r0, 0x5 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CCAE6 + ldr r0, _080CCAAC @ =gUnknown_2036E28 + ldrb r0, [r0] + cmp r0, 0x3 + beq _080CCAE6 + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _080CCAE6 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x4 + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080CCA78 + strh r2, [r4, 0x2] +_080CCA78: + ldr r0, _080CCAB0 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _080CCAB4 @ =0x00004f01 + cmp r1, r0 + bne _080CCAC0 + ldr r1, _080CCAB8 @ =gUnknown_83F61FB + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4] + movs r3, 0x2 + ldrsh r0, [r4, r3] + lsls r0, 5 + ldr r1, _080CCABC @ =gUnknown_83F60D0 + adds r0, r1 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC + b _080CCADE + .align 2, 0 +_080CCAA4: .4byte gUnknown_3005098 +_080CCAA8: .4byte gUnknown_2037AB8 +_080CCAAC: .4byte gUnknown_2036E28 +_080CCAB0: .4byte gUnknown_3005008 +_080CCAB4: .4byte 0x00004f01 +_080CCAB8: .4byte gUnknown_83F61FB +_080CCABC: .4byte gUnknown_83F60D0 +_080CCAC0: + ldr r1, _080CCAEC @ =gUnknown_83F61F0 + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4] + movs r3, 0x2 + ldrsh r0, [r4, r3] + lsls r0, 5 + ldr r1, _080CCAF0 @ =gUnknown_83F5F50 + adds r0, r1 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC +_080CCADE: + movs r0, 0x7 + movs r1, 0x1 + bl sub_8059948 +_080CCAE6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CCAEC: .4byte gUnknown_83F61F0 +_080CCAF0: .4byte gUnknown_83F5F50 + thumb_func_end sub_80CCA18 + + thumb_func_start sub_80CCAF4 +sub_80CCAF4: @ 80CCAF4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x4 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080CCB5A + ldr r0, _080CCB20 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _080CCB24 @ =0x00004f01 + cmp r1, r0 + bne _080CCB2C + ldr r0, _080CCB28 @ =gUnknown_83F61D0 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC + b _080CCB36 + .align 2, 0 +_080CCB20: .4byte gUnknown_3005008 +_080CCB24: .4byte 0x00004f01 +_080CCB28: .4byte gUnknown_83F61D0 +_080CCB2C: + ldr r0, _080CCB60 @ =gUnknown_83F60B0 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC +_080CCB36: + movs r0, 0x7 + movs r1, 0x1 + bl sub_8059948 + ldr r0, _080CCB64 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080CCB54 + movs r0, 0x80 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 +_080CCB54: + adds r0, r4, 0 + bl sub_8077508 +_080CCB5A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CCB60: .4byte gUnknown_83F60B0 +_080CCB64: .4byte gUnknown_2037AB8 + thumb_func_end sub_80CCAF4 + + thumb_func_start sub_80CCB68 +sub_80CCB68: @ 80CCB68 + push {r4,lr} + ldr r4, _080CCB90 @ =sub_80CCA18 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CCB88 + adds r0, r4, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080CCB88: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CCB90: .4byte sub_80CCA18 + thumb_func_end sub_80CCB68 + + thumb_func_start sub_80CCB94 +sub_80CCB94: @ 80CCB94 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r7, 0 + movs r6, 0 + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _080CCBC0 @ =gUnknown_20370C6 + mov r1, r8 + strh r1, [r0] + movs r4, 0 + movs r0, 0x64 + mov r5, r8 + muls r5, r0 + ldr r0, _080CCBC4 @ =gUnknown_2024284 + mov r9, r0 + b _080CCBCE + .align 2, 0 +_080CCBC0: .4byte gUnknown_20370C6 +_080CCBC4: .4byte gUnknown_2024284 +_080CCBC8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080CCBCE: + cmp r4, 0x2 + bhi _080CCBEA + mov r1, r9 + adds r0, r5, r1 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + ldr r1, _080CCC1C @ =gUnknown_83F6203 + adds r1, r4, r1 + ldrb r1, [r1] + cmp r0, r1 + bne _080CCBC8 + adds r7, r4, 0 +_080CCBEA: + cmp r4, 0x3 + beq _080CCC7A + movs r0, 0x64 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _080CCC20 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x20 + bl sub_803FBE8 + cmp r0, 0xFF + bne _080CCC7A + cmp r7, 0 + bne _080CCC34 + ldr r0, _080CCC24 @ =gUnknown_2021CF0 + ldr r1, _080CCC28 @ =gUnknown_82481BE + bl sub_8008D84 + ldr r1, _080CCC2C @ =gUnknown_20370C2 + movs r0, 0xF + strh r0, [r1] + ldr r0, _080CCC30 @ =0x000002de + b _080CCC6E + .align 2, 0 +_080CCC1C: .4byte gUnknown_83F6203 +_080CCC20: .4byte gUnknown_2024284 +_080CCC24: .4byte gUnknown_2021CF0 +_080CCC28: .4byte gUnknown_82481BE +_080CCC2C: .4byte gUnknown_20370C2 +_080CCC30: .4byte 0x000002de +_080CCC34: + cmp r7, 0x1 + bne _080CCC5C + ldr r0, _080CCC4C @ =gUnknown_2021CF0 + ldr r1, _080CCC50 @ =gUnknown_824802B + bl sub_8008D84 + ldr r1, _080CCC54 @ =gUnknown_20370C2 + movs r0, 0x10 + strh r0, [r1] + ldr r0, _080CCC58 @ =0x000002df + b _080CCC6E + .align 2, 0 +_080CCC4C: .4byte gUnknown_2021CF0 +_080CCC50: .4byte gUnknown_824802B +_080CCC54: .4byte gUnknown_20370C2 +_080CCC58: .4byte 0x000002df +_080CCC5C: + ldr r0, _080CCC80 @ =gUnknown_2021CF0 + ldr r1, _080CCC84 @ =gUnknown_8248038 + bl sub_8008D84 + ldr r1, _080CCC88 @ =gUnknown_20370C2 + movs r0, 0x11 + strh r0, [r1] + movs r0, 0xB8 + lsls r0, 2 +_080CCC6E: + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CCC8C +_080CCC7A: + movs r0, 0 + b _080CCCE4 + .align 2, 0 +_080CCC80: .4byte gUnknown_2021CF0 +_080CCC84: .4byte gUnknown_8248038 +_080CCC88: .4byte gUnknown_20370C2 +_080CCC8C: + movs r0, 0x64 + mov r1, r8 + muls r1, r0 + ldr r0, _080CCCF0 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xD + bl sub_803FBE8 + cmp r0, 0 + beq _080CCCA8 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080CCCA8: + adds r0, r4, 0 + movs r1, 0xE + bl sub_803FBE8 + cmp r0, 0 + beq _080CCCBA + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080CCCBA: + adds r0, r4, 0 + movs r1, 0xF + bl sub_803FBE8 + cmp r0, 0 + beq _080CCCCC + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080CCCCC: + adds r0, r4, 0 + movs r1, 0x10 + bl sub_803FBE8 + cmp r0, 0 + beq _080CCCDE + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080CCCDE: + ldr r0, _080CCCF4 @ =gUnknown_20370C4 + strh r6, [r0] + movs r0, 0x1 +_080CCCE4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080CCCF0: .4byte gUnknown_2024284 +_080CCCF4: .4byte gUnknown_20370C4 + thumb_func_end sub_80CCB94 + + thumb_func_start sub_80CCCF8 +sub_80CCCF8: @ 80CCCF8 + push {r4,lr} + movs r4, 0 + ldr r0, _080CCD0C @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0xF + bne _080CCD14 + ldr r0, _080CCD10 @ =0x000002de + bl sub_806E680 + b _080CCD2C + .align 2, 0 +_080CCD0C: .4byte gUnknown_20370C2 +_080CCD10: .4byte 0x000002de +_080CCD14: + cmp r0, 0x10 + bne _080CCD24 + ldr r0, _080CCD20 @ =0x000002df + bl sub_806E680 + b _080CCD2C + .align 2, 0 +_080CCD20: .4byte 0x000002df +_080CCD24: + movs r0, 0xB8 + lsls r0, 2 + bl sub_806E680 +_080CCD2C: + ldr r0, _080CCD74 @ =0x000002de + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CCD40 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080CCD40: + ldr r0, _080CCD78 @ =0x000002df + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CCD54 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080CCD54: + movs r0, 0xB8 + lsls r0, 2 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CCD6A + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080CCD6A: + cmp r4, 0x3 + beq _080CCD7C + movs r0, 0 + b _080CCD7E + .align 2, 0 +_080CCD74: .4byte 0x000002de +_080CCD78: .4byte 0x000002df +_080CCD7C: + movs r0, 0x1 +_080CCD7E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80CCCF8 + + thumb_func_start sub_80CCD84 +sub_80CCD84: @ 80CCD84 + push {lr} + ldr r0, _080CCDB8 @ =0x000002e3 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080CCDC8 + ldr r0, _080CCDBC @ =gUnknown_3005008 + ldr r2, [r0] + ldrh r1, [r2, 0x4] + ldr r0, _080CCDC0 @ =0x00003d03 + cmp r1, r0 + bne _080CCDC8 + ldr r1, [r2] + ldr r0, _080CCDC4 @ =0x00190018 + cmp r1, r0 + bne _080CCDC8 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080CCDC8 + movs r0, 0x1 + b _080CCDCA + .align 2, 0 +_080CCDB8: .4byte 0x000002e3 +_080CCDBC: .4byte gUnknown_3005008 +_080CCDC0: .4byte 0x00003d03 +_080CCDC4: .4byte 0x00190018 +_080CCDC8: + movs r0, 0 +_080CCDCA: + pop {r1} + bx r1 + thumb_func_end sub_80CCD84 + + thumb_func_start sub_80CCDD0 +sub_80CCDD0: @ 80CCDD0 + push {lr} + movs r2, 0xD6 + lsls r2, 2 + movs r0, 0x1F + movs r1, 0x1F + bl sub_8058FA4 + bl sub_805A684 + movs r0, 0x14 + bl sub_80722CC + ldr r0, _080CCDF8 @ =0x000002e3 + bl sub_806E680 + bl sub_806994C + pop {r0} + bx r0 + .align 2, 0 +_080CCDF8: .4byte 0x000002e3 + thumb_func_end sub_80CCDD0 + + thumb_func_start sub_80CCDFC +sub_80CCDFC: @ 80CCDFC + push {lr} + ldr r0, _080CCE0C @ =sub_80CCE10 + movs r1, 0x8 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080CCE0C: .4byte sub_80CCE10 + thumb_func_end sub_80CCDFC + + thumb_func_start sub_80CCE10 +sub_80CCE10: @ 80CCE10 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080CCE30 @ =0x00000848 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CCE38 + ldr r1, _080CCE34 @ =gUnknown_20370D0 + movs r0, 0x3 + b _080CCE9E + .align 2, 0 +_080CCE30: .4byte 0x00000848 +_080CCE34: .4byte gUnknown_20370D0 +_080CCE38: + ldr r0, _080CCE80 @ =0x0000403e + mov r8, r0 + bl sub_806E568 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r4, _080CCE84 @ =0x00004026 + adds r0, r4, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_806E584 + cmp r5, 0 + beq _080CCE90 + ldr r0, _080CCE88 @ =gUnknown_83F637C + subs r1, r5, 0x1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, r6 + bcs _080CCE90 + movs r0, 0 + bl sub_80CCEE8 + mov r0, r8 + movs r1, 0 + bl sub_806E584 + ldr r1, _080CCE8C @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + b _080CCEA4 + .align 2, 0 +_080CCE80: .4byte 0x0000403e +_080CCE84: .4byte 0x00004026 +_080CCE88: .4byte gUnknown_83F637C +_080CCE8C: .4byte gUnknown_20370D0 +_080CCE90: + cmp r5, 0xA + bne _080CCEB4 + ldr r0, _080CCEAC @ =0x00000848 + bl sub_806E680 + ldr r1, _080CCEB0 @ =gUnknown_20370D0 + movs r0, 0x2 +_080CCE9E: + strh r0, [r1] + bl sub_8069B34 +_080CCEA4: + adds r0, r7, 0 + bl sub_8077508 + b _080CCED6 + .align 2, 0 +_080CCEAC: .4byte 0x00000848 +_080CCEB0: .4byte gUnknown_20370D0 +_080CCEB4: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80CCEE8 + ldr r0, _080CCEE0 @ =0x0000403e + adds r1, r5, 0 + bl sub_806E584 + ldr r1, _080CCEE4 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8077508 +_080CCED6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CCEE0: .4byte 0x0000403e +_080CCEE4: .4byte gUnknown_20370D0 + thumb_func_end sub_80CCE10 + + thumb_func_start sub_80CCEE8 +sub_80CCEE8: @ 80CCEE8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 5 + ldr r1, _080CCF24 @ =gUnknown_83F6206 + adds r0, r1 + movs r1, 0xD0 + lsls r1, 1 + movs r2, 0x8 + bl sub_80703EC + movs r0, 0xA + bl sub_8083598 + ldr r0, _080CCF28 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x1 + mov r3, sp + bl sub_805DF84 + cmp r4, 0 + bne _080CCF2C + movs r0, 0xBD + bl sub_80722CC + b _080CCF32 + .align 2, 0 +_080CCF24: .4byte gUnknown_83F6206 +_080CCF28: .4byte gUnknown_3005008 +_080CCF2C: + movs r0, 0xFD + bl sub_80722CC +_080CCF32: + ldr r0, _080CCF64 @ =sub_80CCF98 + movs r1, 0x8 + bl sub_807741C + ldr r3, _080CCF68 @ =gUnknown_20386E0 + movs r0, 0x1 + str r0, [r3] + movs r0, 0x38 + str r0, [r3, 0x4] + movs r0, 0x2 + str r0, [r3, 0x8] + ldr r0, _080CCF6C @ =gUnknown_83F6366 + lsls r2, r4, 1 + adds r1, r2, r0 + ldrb r1, [r1] + str r1, [r3, 0xC] + adds r0, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + str r0, [r3, 0x10] + adds r5, r2, 0 + cmp r4, 0 + bne _080CCF70 + movs r0, 0x3C + b _080CCF72 + .align 2, 0 +_080CCF64: .4byte sub_80CCF98 +_080CCF68: .4byte gUnknown_20386E0 +_080CCF6C: .4byte gUnknown_83F6366 +_080CCF70: + movs r0, 0x5 +_080CCF72: + str r0, [r3, 0x14] + movs r0, 0x43 + bl sub_8083444 + ldr r0, _080CCF94 @ =gUnknown_83F6366 + adds r1, r5, r0 + ldrb r1, [r1] + adds r0, 0x1 + adds r0, r5, r0 + ldrb r2, [r0] + movs r0, 0x1 + bl sub_80550D8 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CCF94: .4byte gUnknown_83F6366 + thumb_func_end sub_80CCEE8 + + thumb_func_start sub_80CCF98 +sub_80CCF98: @ 80CCF98 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x43 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _080CCFB4 + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 +_080CCFB4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CCF98 + + thumb_func_start sub_80CCFBC +sub_80CCFBC: @ 80CCFBC + push {r4,lr} + ldr r4, _080CCFEC @ =0x00004026 + adds r0, r4, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _080CCFF0 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _080CCFF4 @ =0x00003802 + cmp r1, r0 + bne _080CD000 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x63 + bls _080CCFF8 + adds r0, r4, 0 + movs r1, 0 + bl sub_806E584 + b _080CD000 + .align 2, 0 +_080CCFEC: .4byte 0x00004026 +_080CCFF0: .4byte gUnknown_3005008 +_080CCFF4: .4byte 0x00003802 +_080CCFF8: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_806E584 +_080CD000: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CCFBC + + thumb_func_start sub_80CD008 +sub_80CD008: @ 80CD008 + push {lr} + ldr r0, _080CD02C @ =0x0000403e + bl sub_806E568 + lsls r0, 24 + lsrs r0, 19 + ldr r1, _080CD030 @ =gUnknown_83F6206 + adds r0, r1 + movs r1, 0xD0 + lsls r1, 1 + movs r2, 0x8 + bl sub_80703EC + movs r0, 0xA + bl sub_8083598 + pop {r0} + bx r0 + .align 2, 0 +_080CD02C: .4byte 0x0000403e +_080CD030: .4byte gUnknown_83F6206 + thumb_func_end sub_80CD008 + + thumb_func_start sub_80CD034 +sub_80CD034: @ 80CD034 + push {r4,r5,lr} + bl sub_8040C3C + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + cmp r4, r5 + bcs _080CD06A +_080CD044: + movs r0, 0x64 + muls r0, r4 + ldr r1, _080CD05C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x4 + bl sub_803FBE8 + cmp r0, 0x1 + bne _080CD060 + movs r0, 0x1 + b _080CD06C + .align 2, 0 +_080CD05C: .4byte gUnknown_2024284 +_080CD060: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _080CD044 +_080CD06A: + movs r0, 0 +_080CD06C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80CD034 + + thumb_func_start sub_80CD074 +sub_80CD074: @ 80CD074 + push {lr} + ldr r0, _080CD088 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _080CD08C @ =0x00000a02 + cmp r1, r0 + beq _080CD090 + movs r0, 0x1 + b _080CD092 + .align 2, 0 +_080CD088: .4byte gUnknown_3005008 +_080CD08C: .4byte 0x00000a02 +_080CD090: + movs r0, 0 +_080CD092: + pop {r1} + bx r1 + thumb_func_end sub_80CD074 + + thumb_func_start sub_80CD098 +sub_80CD098: @ 80CD098 + push {lr} + sub sp, 0x4 + ldr r0, _080CD0CC @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _080CD0E8 + ldr r0, _080CD0D0 @ =gUnknown_20370C0 + ldrh r0, [r0] + adds r0, 0x1B + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080CD0D4 @ =gUnknown_20370C4 + ldrh r3, [r0] + cmp r3, 0 + bne _080CD0E0 + ldr r0, _080CD0D8 @ =gUnknown_20370C2 + ldrh r2, [r0] + str r3, [sp] + movs r0, 0 + movs r3, 0 + bl sub_8006300 + ldr r1, _080CD0DC @ =gUnknown_2039A1B + strb r0, [r1] + b _080CD0E8 + .align 2, 0 +_080CD0CC: .4byte gUnknown_203ADFA +_080CD0D0: .4byte gUnknown_20370C0 +_080CD0D4: .4byte gUnknown_20370C4 +_080CD0D8: .4byte gUnknown_20370C2 +_080CD0DC: .4byte gUnknown_2039A1B +_080CD0E0: + ldr r0, _080CD0F0 @ =gUnknown_2039A1B + ldrb r0, [r0] + bl sub_8006398 +_080CD0E8: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080CD0F0: .4byte gUnknown_2039A1B + thumb_func_end sub_80CD098 + + thumb_func_start sub_80CD0F4 +sub_80CD0F4: @ 80CD0F4 + push {r4-r7,lr} + bl sub_8040C3C + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + cmp r6, r7 + bcs _080CD14A +_080CD104: + movs r0, 0x64 + adds r1, r6, 0 + muls r1, r0 + ldr r0, _080CD138 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + ldr r1, _080CD13C @ =gUnknown_20370C0 + ldrh r1, [r1] + cmp r0, r1 + bne _080CD140 + bl sub_80CC1E4 + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + bne _080CD140 + movs r0, 0x1 + b _080CD14C + .align 2, 0 +_080CD138: .4byte gUnknown_2024284 +_080CD13C: .4byte gUnknown_20370C0 +_080CD140: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r7 + bcc _080CD104 +_080CD14A: + movs r0, 0 +_080CD14C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80CD0F4 + + thumb_func_start sub_80CD154 +sub_80CD154: @ 80CD154 + push {r4,lr} + movs r0, 0xA + bl sub_8054EC4 + adds r4, r0, 0 + cmp r4, 0x18 + bls _080CD1AE + movs r0, 0xA5 + bl sub_806E6A8 + cmp r4, 0x31 + bls _080CD172 + movs r0, 0xA6 + bl sub_806E6A8 +_080CD172: + cmp r4, 0x4A + bls _080CD17C + movs r0, 0xA7 + bl sub_806E6A8 +_080CD17C: + cmp r4, 0x63 + bls _080CD186 + movs r0, 0xA8 + bl sub_806E6A8 +_080CD186: + cmp r4, 0x7C + bls _080CD190 + movs r0, 0xA9 + bl sub_806E6A8 +_080CD190: + cmp r4, 0x95 + bls _080CD19A + movs r0, 0xAA + bl sub_806E6A8 +_080CD19A: + cmp r4, 0xAE + bls _080CD1A4 + movs r0, 0xAB + bl sub_806E6A8 +_080CD1A4: + cmp r4, 0xC7 + bls _080CD1AE + movs r0, 0xAC + bl sub_806E6A8 +_080CD1AE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CD154 + + thumb_func_start sub_80CD1B4 +sub_80CD1B4: @ 80CD1B4 + push {lr} + ldr r0, _080CD1C8 @ =sub_80CD1CC + movs r1, 0x8 + bl sub_807741C + movs r0, 0x96 + bl sub_80722CC + pop {r0} + bx r0 + .align 2, 0 +_080CD1C8: .4byte sub_80CD1CC + thumb_func_end sub_80CD1B4 + + thumb_func_start sub_80CD1CC +sub_80CD1CC: @ 80CD1CC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CD21C @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + movs r0, 0x2 + ldrsh r1, [r4, r0] + ldr r0, _080CD220 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r1, r0 + bne _080CD200 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + movs r0, 0 + strh r0, [r4, 0x2] + movs r0, 0x96 + bl sub_80722CC +_080CD200: + movs r0, 0 + ldrsh r1, [r4, r0] + ldr r0, _080CD224 @ =gUnknown_20370C0 + ldrh r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _080CD214 + adds r0, r5, 0 + bl sub_8077508 +_080CD214: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CD21C: .4byte gUnknown_3005098 +_080CD220: .4byte gUnknown_20370C2 +_080CD224: .4byte gUnknown_20370C0 + thumb_func_end sub_80CD1CC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_tasks.s b/asm/field_tasks.s new file mode 100644 index 000000000..91470b6a6 --- /dev/null +++ b/asm/field_tasks.s @@ -0,0 +1,697 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_806E810 +sub_806E810: @ 806E810 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0806E834 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x8 + ldrsh r1, [r1, r2] + ldr r2, _0806E838 @ =gUnknown_83A7310 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0806E834: .4byte gUnknown_3005090 +_0806E838: .4byte gUnknown_83A7310 + thumb_func_end sub_806E810 + + thumb_func_start sub_806E83C +sub_806E83C: @ 806E83C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0806E874 @ =gUnknown_3005098 + adds r4, r1, r0 + bl sub_8069958 + lsls r0, 24 + cmp r0, 0 + bne _0806E86C + ldr r0, _0806E878 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806E86C + adds r0, r4, 0x2 + adds r1, r4, 0x4 + bl sub_8056078 +_0806E86C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806E874: .4byte gUnknown_3005098 +_0806E878: .4byte gUnknown_203ADFA + thumb_func_end sub_806E83C + + thumb_func_start sub_806E87C +sub_806E87C: @ 806E87C + push {r4,r5,lr} + ldr r5, _0806E8C4 @ =sub_806E810 + adds r0, r5, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0806E8A6 + adds r0, r5, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0806E8C8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] +_0806E8A6: + ldr r4, _0806E8CC @ =sub_806E83C + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0806E8BC + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C +_0806E8BC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806E8C4: .4byte sub_806E810 +_0806E8C8: .4byte gUnknown_3005090 +_0806E8CC: .4byte sub_806E83C + thumb_func_end sub_806E87C + + thumb_func_start sub_806E8D0 +sub_806E8D0: @ 806E8D0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0806E908 @ =sub_806E810 + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0806E912 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0806E90C @ =gUnknown_3005098 + adds r1, r0, r1 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0x1E +_0806E8F4: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _0806E8F4 + cmp r4, 0x7 + bls _0806E910 + movs r0, 0 + strh r0, [r1] + b _0806E912 + .align 2, 0 +_0806E908: .4byte sub_806E810 +_0806E90C: .4byte gUnknown_3005098 +_0806E910: + strh r4, [r1] +_0806E912: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806E8D0 + + thumb_func_start sub_806E918 +sub_806E918: @ 806E918 + push {lr} + ldr r0, _0806E948 @ =sub_806E810 + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0806E94C @ =sub_806E83C + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0806E942 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0806E950 @ =gUnknown_3005098 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] +_0806E942: + pop {r0} + bx r0 + .align 2, 0 +_0806E948: .4byte sub_806E810 +_0806E94C: .4byte sub_806E83C +_0806E950: .4byte gUnknown_3005098 + thumb_func_end sub_806E918 + + thumb_func_start nullsub_40 +nullsub_40: @ 806E954 + bx lr + thumb_func_end nullsub_40 + + thumb_func_start sub_806E958 +sub_806E958: @ 806E958 + push {r4,r5,lr} + movs r3, 0 + ldr r4, _0806E988 @ =gUnknown_83A7330 + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r1, 16 +_0806E966: + lsls r2, r3, 1 + adds r0, r2, r4 + ldrb r0, [r0] + adds r0, 0x7 + cmp r0, r5 + bne _0806E98C + adds r0, r4, 0x1 + adds r0, r2, r0 + ldrb r0, [r0] + adds r0, 0x7 + cmp r0, r1 + bne _0806E98C + adds r0, r3, 0x1 + bl sub_806E680 + b _0806E996 + .align 2, 0 +_0806E988: .4byte gUnknown_83A7330 +_0806E98C: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x8 + bls _0806E966 +_0806E996: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806E958 + + thumb_func_start sub_806E99C +sub_806E99C: @ 806E99C + push {r4-r7,lr} + movs r4, 0 + ldr r6, _0806E9D8 @ =gUnknown_83A7330 + adds r7, r6, 0x1 +_0806E9A4: + adds r5, r4, 0x1 + adds r0, r5, 0 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806E9C8 + lsls r1, r4, 1 + adds r0, r1, r6 + ldrb r0, [r0] + adds r0, 0x7 + adds r1, r7 + ldrb r1, [r1] + adds r1, 0x7 + ldr r2, _0806E9DC @ =0x0000035a + bl sub_8058FA4 +_0806E9C8: + lsls r0, r5, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bls _0806E9A4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806E9D8: .4byte gUnknown_83A7330 +_0806E9DC: .4byte 0x0000035a + thumb_func_end sub_806E99C + + thumb_func_start sub_806E9E0 +sub_806E9E0: @ 806E9E0 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0806EA04 @ =gUnknown_3005098 + adds r5, r1, r0 + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0806EA2A + cmp r0, 0x1 + bgt _0806EA08 + cmp r0, 0 + beq _0806EA12 + b _0806EB42 + .align 2, 0 +_0806EA04: .4byte gUnknown_3005098 +_0806EA08: + cmp r0, 0x2 + beq _0806EAB0 + cmp r0, 0x3 + beq _0806EAF4 + b _0806EB42 +_0806EA12: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x4] + ldrh r0, [r4] + strh r0, [r5, 0x6] + b _0806EB3E +_0806EA2A: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0806EA52 + movs r0, 0 + ldrsh r1, [r4, r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0806EB42 +_0806EA52: + strh r2, [r5, 0x4] + ldrh r0, [r4] + strh r0, [r5, 0x6] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + bl sub_8059FF4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806EA8E + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_806E958 + movs r0, 0x4 + strh r0, [r5, 0xC] + movs r0, 0x2 + b _0806EAA2 +_0806EA8E: + adds r0, r6, 0 + bl sub_805A008 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806EB42 + movs r0, 0x4 + strh r0, [r5, 0xC] + movs r0, 0x3 +_0806EAA2: + strh r0, [r5, 0x2] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x8] + ldrh r0, [r4] + strh r0, [r5, 0xA] + b _0806EB42 +_0806EAB0: + ldrh r1, [r5, 0xC] + movs r3, 0xC + ldrsh r0, [r5, r3] + cmp r0, 0 + bne _0806EAFE + mov r1, sp + ldrh r0, [r5, 0x8] + strh r0, [r1] + mov r4, sp + adds r4, 0x2 + ldrh r0, [r5, 0xA] + strh r0, [r4] + movs r0, 0x24 + bl sub_80722CC + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _0806EAF0 @ =0x0000035a + bl sub_8058FA4 + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + b _0806EB3E + .align 2, 0 +_0806EAF0: .4byte 0x0000035a +_0806EAF4: + ldrh r1, [r5, 0xC] + movs r3, 0xC + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _0806EB04 +_0806EAFE: + subs r0, r1, 0x1 + strh r0, [r5, 0xC] + b _0806EB42 +_0806EB04: + mov r1, sp + ldrh r0, [r5, 0x8] + strh r0, [r1] + mov r4, sp + adds r4, 0x2 + ldrh r0, [r5, 0xA] + strh r0, [r4] + movs r0, 0x23 + bl sub_80722CC + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _0806EB4C @ =0x0000035b + bl sub_8058FA4 + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + ldr r0, _0806EB50 @ =0x00004001 + movs r1, 0x1 + bl sub_806E584 +_0806EB3E: + movs r0, 0x1 + strh r0, [r5, 0x2] +_0806EB42: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806EB4C: .4byte 0x0000035b +_0806EB50: .4byte 0x00004001 + thumb_func_end sub_806E9E0 + + thumb_func_start sub_806EB54 +sub_806EB54: @ 806EB54 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0806EBD8 @ =gUnknown_3005098 + adds r5, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x2 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0806EB8E + movs r0, 0 + ldrsh r1, [r4, r0] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0806EBF6 +_0806EB8E: + strh r2, [r5, 0x2] + ldrh r0, [r4] + strh r0, [r5, 0x4] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059F50 + lsls r0, 24 + cmp r0, 0 + beq _0806EBF6 + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058E48 + ldr r1, _0806EBDC @ =0x0000020a + cmp r0, r1 + bne _0806EBE4 + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _0806EBE0 @ =0x00000212 + movs r3, 0x4 + bl sub_80DC23C + b _0806EBF6 + .align 2, 0 +_0806EBD8: .4byte gUnknown_3005098 +_0806EBDC: .4byte 0x0000020a +_0806EBE0: .4byte 0x00000212 +_0806EBE4: + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _0806EC00 @ =0x00000206 + movs r3, 0x4 + bl sub_80DC23C +_0806EBF6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806EC00: .4byte 0x00000206 + thumb_func_end sub_806EB54 + + thumb_func_start sub_806EC04 +sub_806EC04: @ 806EC04 + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8058E48 + ldr r1, _0806EC38 @ =0x0000022f + ldr r2, _0806EC3C @ =0x00000237 + cmp r0, r1 + bne _0806EC20 + subs r2, 0x31 +_0806EC20: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8058FA4 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805A8E8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806EC38: .4byte 0x0000022f +_0806EC3C: .4byte 0x00000237 + thumb_func_end sub_806EC04 + + thumb_func_start sub_806EC40 +sub_806EC40: @ 806EC40 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0806ED10 @ =gUnknown_3005098 + adds r5, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r7, r0, 16 + ldrh r1, [r5, 0x8] + movs r3, 0x8 + ldrsh r0, [r5, r3] + adds r6, r4, 0 + cmp r0, 0 + beq _0806EC92 + subs r0, r1, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bne _0806EC92 + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl sub_806EC04 +_0806EC92: + ldrh r1, [r5, 0xE] + movs r3, 0xE + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _0806ECB2 + subs r0, r1, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _0806ECB2 + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + bl sub_806EC04 +_0806ECB2: + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0806ECCE + movs r0, 0 + ldrsh r1, [r6, r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0806ED2E +_0806ECCE: + strh r2, [r5, 0x4] + adds r4, r6, 0 + ldrh r0, [r4] + strh r0, [r5, 0x6] + lsls r0, r7, 24 + lsrs r0, 24 + bl sub_805A1D8 + lsls r0, 24 + cmp r0, 0 + beq _0806ED2E + bl sub_80BD674 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _0806ECF8 + ldr r0, _0806ED14 @ =0x00004030 + movs r1, 0 + bl sub_806E584 +_0806ECF8: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0806ED18 + movs r0, 0x3 + strh r0, [r5, 0x8] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0xA] + ldrh r0, [r4] + strh r0, [r5, 0xC] + b _0806ED2E + .align 2, 0 +_0806ED10: .4byte gUnknown_3005098 +_0806ED14: .4byte 0x00004030 +_0806ED18: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _0806ED2E + movs r0, 0x3 + strh r0, [r5, 0xE] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x10] + ldrh r0, [r6] + strh r0, [r5, 0x12] +_0806ED2E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806EC40 + + thumb_func_start sub_806ED38 +sub_806ED38: @ 806ED38 + push {lr} + ldr r0, _0806ED4C @ =0x00000829 + bl sub_806E680 + ldr r0, _0806ED50 @ =0x00000828 + bl sub_806E680 + pop {r0} + bx r0 + .align 2, 0 +_0806ED4C: .4byte 0x00000829 +_0806ED50: .4byte 0x00000828 + thumb_func_end sub_806ED38 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_weather.s b/asm/field_weather.s new file mode 100644 index 000000000..726413dbe --- /dev/null +++ b/asm/field_weather.s @@ -0,0 +1,3024 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8079C08 +sub_8079C08: @ 8079C08 + push {r4-r6,lr} + ldr r0, _08079CCC @ =sub_8079E0C + bl sub_8077650 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _08079CC4 + movs r0, 0x90 + lsls r0, 5 + bl sub_80089B8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08079CD0 @ =gUnknown_83C2CE0 + lsls r1, r5, 5 + ldr r2, _08079CD4 @ =gUnknown_20373F8 + adds r1, r2 + ldr r2, _08079CD8 @ =0x04000008 + bl CpuSet + adds r0, r5, 0 + bl sub_8083598 + bl sub_8079EE8 + ldr r4, _08079CDC @ =gUnknown_2037F34 + ldr r1, _08079CE0 @ =0x000006d5 + adds r0, r4, r1 + strb r5, [r0] + subs r1, 0x1 + adds r0, r4, r1 + strb r5, [r0] + adds r1, 0x6 + adds r0, r4, r1 + strb r6, [r0] + subs r1, 0x2 + adds r0, r4, r1 + strb r6, [r0] + adds r1, 0x6 + adds r0, r4, r1 + strb r6, [r0] + adds r1, 0x6 + adds r0, r4, r1 + strb r6, [r0] + adds r1, 0x1C + adds r0, r4, r1 + strb r6, [r0] + subs r1, 0x5 + adds r0, r4, r1 + strb r6, [r0] + adds r1, 0x29 + adds r0, r4, r1 + strb r6, [r0] + subs r1, 0xE + adds r0, r4, r1 + strb r6, [r0] + adds r1, 0x1 + adds r0, r4, r1 + strb r6, [r0] + adds r1, 0x17 + adds r0, r4, r1 + strb r6, [r0] + subs r1, 0x34 + adds r0, r4, r1 + strb r6, [r0] + movs r0, 0x10 + movs r1, 0 + bl sub_807ADB0 + movs r1, 0xDA + lsls r1, 3 + adds r0, r4, r1 + strb r6, [r0] + ldr r0, _08079CE4 @ =0x000006c6 + adds r1, r4, r0 + movs r0, 0x3 + strb r0, [r1] + movs r1, 0xD9 + lsls r1, 3 + adds r0, r4, r1 + strb r6, [r0] + ldr r0, _08079CE8 @ =0x000006d3 + adds r1, r4, r0 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _08079CEC @ =sub_8079DBC + movs r1, 0x50 + bl sub_807741C + ldr r1, _08079CF0 @ =0x000006c9 + adds r4, r1 + strb r0, [r4] +_08079CC4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079CCC: .4byte sub_8079E0C +_08079CD0: .4byte gUnknown_83C2CE0 +_08079CD4: .4byte gUnknown_20373F8 +_08079CD8: .4byte 0x04000008 +_08079CDC: .4byte gUnknown_2037F34 +_08079CE0: .4byte 0x000006d5 +_08079CE4: .4byte 0x000006c6 +_08079CE8: .4byte 0x000006d3 +_08079CEC: .4byte sub_8079DBC +_08079CF0: .4byte 0x000006c9 + thumb_func_end sub_8079C08 + + thumb_func_start sub_8079CF4 +sub_8079CF4: @ 8079CF4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + beq _08079D0A + cmp r4, 0x5 + beq _08079D0A + cmp r4, 0xD + beq _08079D0A + bl sub_807B004 +_08079D0A: + ldr r1, _08079D4C @ =gUnknown_2037F34 + ldr r2, _08079D50 @ =0x000006d1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, r4 + beq _08079D2E + movs r3, 0xDA + lsls r3, 3 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r4 + bne _08079D2E + ldr r0, _08079D54 @ =gUnknown_83C2BC0 + lsls r1, r4, 4 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_08079D2E: + ldr r1, _08079D4C @ =gUnknown_2037F34 + ldr r2, _08079D58 @ =0x000006d3 + adds r0, r1, r2 + movs r2, 0 + strb r2, [r0] + ldr r3, _08079D50 @ =0x000006d1 + adds r0, r1, r3 + strb r4, [r0] + ldr r0, _08079D5C @ =0x000006ce + adds r1, r0 + strh r2, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08079D4C: .4byte gUnknown_2037F34 +_08079D50: .4byte 0x000006d1 +_08079D54: .4byte gUnknown_83C2BC0 +_08079D58: .4byte 0x000006d3 +_08079D5C: .4byte 0x000006ce + thumb_func_end sub_8079CF4 + + thumb_func_start sub_8079D60 +sub_8079D60: @ 8079D60 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_807B004 + ldr r0, _08079D84 @ =gUnknown_2037F34 + movs r2, 0xDA + lsls r2, 3 + adds r1, r0, r2 + strb r4, [r1] + ldr r1, _08079D88 @ =0x000006d1 + adds r0, r1 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08079D84: .4byte gUnknown_2037F34 +_08079D88: .4byte 0x000006d1 + thumb_func_end sub_8079D60 + + thumb_func_start sub_8079D8C +sub_8079D8C: @ 8079D8C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_807B004 + ldr r1, _08079DB8 @ =gUnknown_2037F34 + movs r2, 0xDA + lsls r2, 3 + adds r0, r1, r2 + strb r4, [r0] + adds r2, 0x1 + adds r0, r1, r2 + strb r4, [r0] + movs r0, 0xD9 + lsls r0, 3 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08079DB8: .4byte gUnknown_2037F34 + thumb_func_end sub_8079D8C + + thumb_func_start sub_8079DBC +sub_8079DBC: @ 8079DBC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _08079DFC @ =gUnknown_2037F34 + movs r1, 0xD9 + lsls r1, 3 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08079DF4 + ldr r1, _08079E00 @ =gUnknown_83C2BC0 + movs r3, 0xDA + lsls r3, 3 + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 4 + adds r1, 0x8 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r1, _08079E04 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08079E08 @ =sub_8079E0C + str r1, [r0] +_08079DF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08079DFC: .4byte gUnknown_2037F34 +_08079E00: .4byte gUnknown_83C2BC0 +_08079E04: .4byte gUnknown_3005090 +_08079E08: .4byte sub_8079E0C + thumb_func_end sub_8079DBC + + thumb_func_start sub_8079E0C +sub_8079E0C: @ 8079E0C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r5, _08079E68 @ =gUnknown_2037F34 + movs r0, 0xDA + lsls r0, 3 + adds r6, r5, r0 + ldr r1, _08079E6C @ =0x000006d1 + adds r7, r5, r1 + ldrb r0, [r6] + ldrb r2, [r7] + cmp r0, r2 + beq _08079E80 + ldr r0, _08079E70 @ =gUnknown_83C2BC0 + mov r8, r0 + ldrb r0, [r6] + lsls r0, 4 + mov r1, r8 + adds r1, 0xC + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08079E90 + ldrb r0, [r7] + lsls r0, 4 + add r0, r8 + ldr r0, [r0] + bl _call_via_r0 + ldr r1, _08079E74 @ =0x000006c3 + adds r0, r5, r1 + strb r4, [r0] + ldr r2, _08079E78 @ =0x000006c6 + adds r0, r5, r2 + strb r4, [r0] + ldrb r0, [r7] + strb r0, [r6] + ldr r0, _08079E7C @ =0x000006d3 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] + b _08079E90 + .align 2, 0 +_08079E68: .4byte gUnknown_2037F34 +_08079E6C: .4byte 0x000006d1 +_08079E70: .4byte gUnknown_83C2BC0 +_08079E74: .4byte 0x000006c3 +_08079E78: .4byte 0x000006c6 +_08079E7C: .4byte 0x000006d3 +_08079E80: + ldr r0, _08079EB0 @ =gUnknown_83C2BC0 + ldrb r1, [r6] + lsls r1, 4 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_08079E90: + ldr r1, _08079EB4 @ =gUnknown_83C2CB0 + ldr r0, _08079EB8 @ =gUnknown_2037F34 + ldr r2, _08079EBC @ =0x000006c6 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08079EB0: .4byte gUnknown_83C2BC0 +_08079EB4: .4byte gUnknown_83C2CB0 +_08079EB8: .4byte gUnknown_2037F34 +_08079EBC: .4byte 0x000006c6 + thumb_func_end sub_8079E0C + + thumb_func_start sub_8079EC0 +sub_8079EC0: @ 8079EC0 + ldr r0, _08079ED4 @ =gUnknown_2037F34 + ldr r2, _08079ED8 @ =0x000006c1 + adds r1, r0, r2 + movs r2, 0 + strb r2, [r1] + ldr r1, _08079EDC @ =0x000006c2 + adds r0, r1 + strb r2, [r0] + bx lr + .align 2, 0 +_08079ED4: .4byte gUnknown_2037F34 +_08079ED8: .4byte 0x000006c1 +_08079EDC: .4byte 0x000006c2 + thumb_func_end sub_8079EC0 + + thumb_func_start nullsub_45 +nullsub_45: @ 8079EE0 + bx lr + thumb_func_end nullsub_45 + + thumb_func_start sub_8079EE4 +sub_8079EE4: @ 8079EE4 + movs r0, 0 + bx lr + thumb_func_end sub_8079EE4 + + thumb_func_start sub_8079EE8 +sub_8079EE8: @ 8079EE8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r1, _08079F28 @ =gUnknown_20386A4 + ldr r0, _08079F2C @ =gUnknown_83C2CC0 + str r0, [r1] + movs r0, 0 + mov r12, r0 + ldr r1, _08079F30 @ =gUnknown_2038394 + mov r10, r1 +_08079F00: + mov r7, r10 + mov r0, r12 + cmp r0, 0 + bne _08079F0C + ldr r1, _08079F34 @ =0xfffffda0 + adds r7, r1 +_08079F0C: + movs r5, 0 + movs r0, 0x1 + add r0, r12 + mov r9, r0 +_08079F14: + lsls r1, r5, 8 + lsls r0, r5, 24 + lsrs r2, r0, 16 + mov r0, r12 + cmp r0, 0 + bne _08079F38 + adds r0, r1, 0 + lsls r0, 12 + lsrs r4, r0, 16 + b _08079F3A + .align 2, 0 +_08079F28: .4byte gUnknown_20386A4 +_08079F2C: .4byte gUnknown_83C2CC0 +_08079F30: .4byte gUnknown_2038394 +_08079F34: .4byte 0xfffffda0 +_08079F38: + movs r4, 0 +_08079F3A: + movs r3, 0 + adds r1, r5, 0x1 + mov r8, r1 +_08079F40: + subs r1, r2, r4 + lsls r1, 16 + lsrs r2, r1, 16 + lsls r0, r3, 5 + adds r0, r7 + adds r0, r5 + lsrs r1, 24 + strb r1, [r0] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x2 + bls _08079F40 + adds r6, r2, 0 + movs r0, 0xF8 + lsls r0, 5 + subs r0, r2 + cmp r0, 0 + bge _08079F68 + adds r0, 0xF +_08079F68: + lsls r0, 12 + lsrs r4, r0, 16 + cmp r5, 0xB + bhi _08079FB2 + cmp r3, 0x12 + bhi _08079FD8 +_08079F74: + adds r0, r2, r4 + lsls r0, 16 + lsrs r2, r0, 16 + subs r0, r2, r6 + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + ble _08079F90 + lsrs r0, 31 + adds r0, r1, r0 + asrs r0, 1 + subs r0, r2, r0 + lsls r0, 16 + lsrs r2, r0, 16 +_08079F90: + lsls r0, r3, 5 + adds r0, r7 + adds r1, r0, r5 + lsrs r0, r2, 8 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08079FA6 + movs r0, 0x1F + strb r0, [r1] +_08079FA6: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x12 + bls _08079F74 + b _08079FD8 +_08079FB2: + cmp r3, 0x12 + bhi _08079FD8 + movs r6, 0x1F +_08079FB8: + adds r1, r2, r4 + lsls r1, 16 + lsrs r2, r1, 16 + lsls r0, r3, 5 + adds r0, r7 + adds r0, r5 + lsrs r1, 24 + strb r1, [r0] + cmp r1, 0x1F + bls _08079FCE + strb r6, [r0] +_08079FCE: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x12 + bls _08079FB8 +_08079FD8: + mov r1, r8 + lsls r0, r1, 16 + lsrs r5, r0, 16 + cmp r5, 0x1F + bls _08079F14 + mov r1, r9 + lsls r0, r1, 16 + lsrs r0, 16 + mov r12, r0 + cmp r0, 0x1 + bls _08079F00 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8079EE8 + + thumb_func_start sub_8079FFC +sub_8079FFC: @ 8079FFC + push {r4-r7,lr} + ldr r0, _0807A028 @ =gUnknown_2037F34 + movs r1, 0xD8 + lsls r1, 3 + adds r4, r0, r1 + ldr r2, _0807A02C @ =0x000006c1 + adds r1, r0, r2 + ldrb r7, [r4] + mov r12, r7 + movs r6, 0 + ldrsb r6, [r4, r6] + movs r5, 0 + ldrsb r5, [r1, r5] + adds r3, r0, 0 + cmp r6, r5 + bne _0807A034 + ldr r0, _0807A030 @ =0x000006c6 + adds r1, r3, r0 + movs r0, 0x3 + strb r0, [r1] + b _0807A07C + .align 2, 0 +_0807A028: .4byte gUnknown_2037F34 +_0807A02C: .4byte 0x000006c1 +_0807A030: .4byte 0x000006c6 +_0807A034: + ldr r1, _0807A05C @ =0x000006c3 + adds r2, r3, r1 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + ldr r7, _0807A060 @ =0x000006c2 + adds r1, r3, r7 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _0807A07C + movs r0, 0 + strb r0, [r2] + mov r0, r12 + cmp r6, r5 + bge _0807A064 + adds r0, 0x1 + b _0807A068 + .align 2, 0 +_0807A05C: .4byte 0x000006c3 +_0807A060: .4byte 0x000006c2 +_0807A064: + mov r0, r12 + subs r0, 0x1 +_0807A068: + strb r0, [r4] + movs r1, 0xD8 + lsls r1, 3 + adds r0, r3, r1 + movs r2, 0 + ldrsb r2, [r0, r2] + movs r0, 0 + movs r1, 0x20 + bl sub_807A294 +_0807A07C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8079FFC + + thumb_func_start sub_807A084 +sub_807A084: @ 807A084 + push {lr} + ldr r2, _0807A0BC @ =gUnknown_2037F34 + ldr r0, _0807A0C0 @ =0x000006cb + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0807A0A2 + ldr r3, _0807A0C4 @ =0x000006ca + adds r1, r2, r3 + movs r0, 0 + strb r0, [r1] +_0807A0A2: + movs r1, 0xDA + lsls r1, 3 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, 0x3 + cmp r0, 0xA + bhi _0807A16C + lsls r0, 2 + ldr r1, _0807A0C8 @ =_0807A0CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A0BC: .4byte gUnknown_2037F34 +_0807A0C0: .4byte 0x000006cb +_0807A0C4: .4byte 0x000006ca +_0807A0C8: .4byte _0807A0CC + .align 2, 0 +_0807A0CC: + .4byte _0807A0F8 + .4byte _0807A0F8 + .4byte _0807A0F8 + .4byte _0807A144 + .4byte _0807A16C + .4byte _0807A16C + .4byte _0807A16C + .4byte _0807A16C + .4byte _0807A0F8 + .4byte _0807A120 + .4byte _0807A0F8 +_0807A0F8: + bl sub_807A19C + lsls r0, 24 + cmp r0, 0 + bne _0807A18C + ldr r0, _0807A118 @ =gUnknown_2037F34 + movs r2, 0xD8 + lsls r2, 3 + adds r1, r0, r2 + movs r2, 0x3 + strb r2, [r1] + ldr r3, _0807A11C @ =0x000006c6 + adds r0, r3 + strb r2, [r0] + b _0807A18C + .align 2, 0 +_0807A118: .4byte gUnknown_2037F34 +_0807A11C: .4byte 0x000006c6 +_0807A120: + bl sub_807A1FC + lsls r0, 24 + cmp r0, 0 + bne _0807A18C + ldr r1, _0807A13C @ =gUnknown_2037F34 + movs r0, 0xD8 + lsls r0, 3 + adds r2, r1, r0 + movs r0, 0xFA + strb r0, [r2] + ldr r2, _0807A140 @ =0x000006c6 + adds r1, r2 + b _0807A188 + .align 2, 0 +_0807A13C: .4byte gUnknown_2037F34 +_0807A140: .4byte 0x000006c6 +_0807A144: + bl sub_807A254 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _0807A18C + ldr r0, _0807A164 @ =gUnknown_2037F34 + movs r3, 0xD8 + lsls r3, 3 + adds r1, r0, r3 + strb r2, [r1] + ldr r1, _0807A168 @ =0x000006c6 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + b _0807A18C + .align 2, 0 +_0807A164: .4byte gUnknown_2037F34 +_0807A168: .4byte 0x000006c6 +_0807A16C: + ldr r0, _0807A190 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0807A18C + ldr r3, _0807A194 @ =0x000006c1 + adds r0, r2, r3 + ldrb r1, [r0] + subs r3, 0x1 + adds r0, r2, r3 + strb r1, [r0] + ldr r0, _0807A198 @ =0x000006c6 + adds r1, r2, r0 +_0807A188: + movs r0, 0x3 + strb r0, [r1] +_0807A18C: + pop {r0} + bx r0 + .align 2, 0 +_0807A190: .4byte gUnknown_2037AB8 +_0807A194: .4byte 0x000006c1 +_0807A198: .4byte 0x000006c6 + thumb_func_end sub_807A084 + + thumb_func_start sub_807A19C +sub_807A19C: @ 807A19C + push {r4,lr} + sub sp, 0x4 + ldr r2, _0807A1D8 @ =gUnknown_2037F34 + ldr r0, _0807A1DC @ =0x000006c7 + adds r4, r2, r0 + ldrb r0, [r4] + cmp r0, 0x10 + beq _0807A1F2 + adds r1, r0, 0x1 + strb r1, [r4] + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0xF + bhi _0807A1E4 + movs r3, 0x10 + subs r3, r1 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _0807A1E0 @ =0x000006c4 + adds r0, r2, r1 + ldrh r0, [r0] + str r0, [sp] + movs r0, 0 + movs r1, 0x20 + movs r2, 0x3 + bl sub_807A3D0 + movs r0, 0x1 + b _0807A1F4 + .align 2, 0 +_0807A1D8: .4byte gUnknown_2037F34 +_0807A1DC: .4byte 0x000006c7 +_0807A1E0: .4byte 0x000006c4 +_0807A1E4: + movs r0, 0 + movs r1, 0x20 + movs r2, 0x3 + bl sub_807A294 + movs r0, 0x10 + strb r0, [r4] +_0807A1F2: + movs r0, 0 +_0807A1F4: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807A19C + + thumb_func_start sub_807A1FC +sub_807A1FC: @ 807A1FC + push {r4,lr} + ldr r2, _0807A230 @ =gUnknown_2037F34 + ldr r0, _0807A234 @ =0x000006c7 + adds r4, r2, r0 + ldrb r0, [r4] + cmp r0, 0x10 + beq _0807A24C + adds r3, r0, 0x1 + strb r3, [r4] + lsls r0, r3, 24 + lsrs r0, 24 + cmp r0, 0xF + bhi _0807A23C + movs r0, 0x6 + negs r0, r0 + movs r1, 0x10 + subs r1, r3 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0807A238 @ =0x000006c4 + adds r2, r3 + ldrh r2, [r2] + bl sub_807A518 + movs r0, 0x1 + b _0807A24E + .align 2, 0 +_0807A230: .4byte gUnknown_2037F34 +_0807A234: .4byte 0x000006c7 +_0807A238: .4byte 0x000006c4 +_0807A23C: + movs r2, 0x6 + negs r2, r2 + movs r0, 0 + movs r1, 0x20 + bl sub_807A294 + movs r0, 0x10 + strb r0, [r4] +_0807A24C: + movs r0, 0 +_0807A24E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807A1FC + + thumb_func_start sub_807A254 +sub_807A254: @ 807A254 + push {lr} + ldr r2, _0807A27C @ =gUnknown_2037F34 + ldr r1, _0807A280 @ =0x000006c7 + adds r0, r2, r1 + ldrb r1, [r0] + cmp r1, 0x10 + beq _0807A288 + adds r1, 0x1 + strb r1, [r0] + movs r0, 0x10 + subs r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0807A284 @ =0x000006c4 + adds r1, r2, r3 + ldrh r1, [r1] + bl sub_807A5F8 + movs r0, 0x1 + b _0807A28A + .align 2, 0 +_0807A27C: .4byte gUnknown_2037F34 +_0807A280: .4byte 0x000006c7 +_0807A284: .4byte 0x000006c4 +_0807A288: + movs r0, 0 +_0807A28A: + pop {r1} + bx r1 + thumb_func_end sub_807A254 + + thumb_func_start nullsub_46 +nullsub_46: @ 807A290 + bx lr + thumb_func_end nullsub_46 + + thumb_func_start sub_807A294 +sub_807A294: @ 807A294 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, r3, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + asrs r0, r2, 24 + cmp r0, 0 + ble _0807A3A0 + subs r0, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r6, r3, 4 + adds r0, r1, r3 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r4, r9 + bcs _0807A3B6 + lsls r0, r2, 24 + asrs r0, 19 + str r0, [sp] +_0807A2CE: + ldr r0, _0807A300 @ =gUnknown_20386A4 + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0807A30C + lsls r1, r6, 1 + ldr r0, _0807A304 @ =gUnknown_20371F8 + adds r0, r1, r0 + ldr r2, _0807A308 @ =gUnknown_20375F8 + adds r1, r2 + movs r2, 0x8 + bl CpuFastSet + adds r0, r6, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + mov r0, r9 + lsls r0, 16 + mov r8, r0 + adds r4, 0x1 + mov r12, r4 + b _0807A38A + .align 2, 0 +_0807A300: .4byte gUnknown_20386A4 +_0807A304: .4byte gUnknown_20371F8 +_0807A308: .4byte gUnknown_20375F8 +_0807A30C: + cmp r0, 0x2 + beq _0807A320 + adds r1, r4, 0 + subs r1, 0x10 + ldr r2, _0807A324 @ =gUnknown_2037F34 + ldr r3, _0807A328 @ =0x000006d5 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _0807A330 +_0807A320: + ldr r0, _0807A32C @ =gUnknown_2038394 + b _0807A336 + .align 2, 0 +_0807A324: .4byte gUnknown_2037F34 +_0807A328: .4byte 0x000006d5 +_0807A32C: .4byte gUnknown_2038394 +_0807A330: + movs r3, 0x80 + lsls r3, 2 + adds r0, r2, r3 +_0807A336: + ldr r1, [sp] + adds r5, r1, r0 + movs r7, 0 + mov r3, r9 + lsls r3, 16 + mov r8, r3 + adds r4, 0x1 + mov r12, r4 + ldr r0, _0807A398 @ =gUnknown_20375F8 + mov r10, r0 +_0807A34A: + adds r2, r6, 0 + lsls r0, r2, 1 + ldr r1, _0807A39C @ =gUnknown_20371F8 + adds r0, r1 + ldr r1, [r0] + lsls r0, r1, 27 + lsrs r0, 27 + adds r0, r5, r0 + ldrb r4, [r0] + lsls r0, r1, 22 + lsrs r0, 27 + adds r0, r5, r0 + ldrb r3, [r0] + lsls r1, 17 + lsrs r1, 27 + adds r1, r5, r1 + ldrb r1, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r2, 1 + add r2, r10 + lsls r1, 10 + lsls r3, 5 + orrs r1, r3 + orrs r1, r4 + strh r1, [r2] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0xF + bls _0807A34A +_0807A38A: + mov r3, r12 + lsls r0, r3, 16 + lsrs r4, r0, 16 + cmp r0, r8 + bcc _0807A2CE + b _0807A3B6 + .align 2, 0 +_0807A398: .4byte gUnknown_20375F8 +_0807A39C: .4byte gUnknown_20371F8 +_0807A3A0: + cmp r0, 0 + blt _0807A3B6 + lsls r1, r4, 5 + ldr r0, _0807A3C8 @ =gUnknown_20371F8 + adds r0, r1, r0 + ldr r2, _0807A3CC @ =gUnknown_20375F8 + adds r1, r2 + mov r3, r9 + lsls r2, r3, 3 + bl CpuFastSet +_0807A3B6: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A3C8: .4byte gUnknown_20371F8 +_0807A3CC: .4byte gUnknown_20375F8 + thumb_func_end sub_807A294 + + thumb_func_start sub_807A3D0 +sub_807A3D0: @ 807A3D0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + ldr r4, [sp, 0x34] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + mov r1, sp + strh r4, [r1] + ldr r1, [sp] + lsls r3, r1, 27 + lsrs r3, 27 + str r3, [sp, 0x4] + lsls r3, r1, 22 + lsrs r3, 27 + str r3, [sp, 0x8] + lsls r1, 17 + lsrs r1, 27 + str r1, [sp, 0xC] + lsls r6, r0, 4 + mov r3, r10 + adds r1, r3, r0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + movs r1, 0xFF + lsls r1, 24 + adds r2, r1 + lsrs r2, 24 + adds r4, r0, 0 + cmp r4, r10 + bcs _0807A4FC + lsls r0, r2, 24 + asrs r0, 19 + str r0, [sp, 0x10] +_0807A428: + ldr r0, _0807A458 @ =gUnknown_20386A4 + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0807A45C + mov r0, sp + ldrh r3, [r0] + adds r0, r6, 0 + movs r1, 0x10 + mov r2, r8 + bl sub_8045274 + adds r0, r6, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + mov r3, r10 + lsls r3, 16 + mov r9, r3 + adds r4, 0x1 + mov r12, r4 + b _0807A4F2 + .align 2, 0 +_0807A458: .4byte gUnknown_20386A4 +_0807A45C: + cmp r0, 0x1 + bne _0807A46C + ldr r0, _0807A468 @ =gUnknown_2038134 + ldr r1, [sp, 0x10] + adds r5, r1, r0 + b _0807A472 + .align 2, 0 +_0807A468: .4byte gUnknown_2038134 +_0807A46C: + ldr r0, _0807A50C @ =gUnknown_2038394 + ldr r3, [sp, 0x10] + adds r5, r3, r0 +_0807A472: + movs r7, 0 + mov r0, r10 + lsls r0, 16 + mov r9, r0 + adds r4, 0x1 + mov r12, r4 +_0807A47E: + adds r4, r6, 0 + lsls r0, r4, 1 + ldr r1, _0807A510 @ =gUnknown_20371F8 + adds r0, r1 + ldr r1, [r0] + lsls r0, r1, 27 + lsrs r0, 27 + adds r0, r5, r0 + ldrb r3, [r0] + lsls r0, r1, 22 + lsrs r0, 27 + adds r0, r5, r0 + ldrb r2, [r0] + lsls r1, 17 + lsrs r1, 27 + adds r1, r5, r1 + ldrb r1, [r1] + ldr r6, [sp, 0x4] + subs r0, r6, r3 + mov r6, r8 + muls r6, r0 + adds r0, r6, 0 + asrs r0, 4 + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + ldr r6, [sp, 0x8] + subs r0, r6, r2 + mov r6, r8 + muls r6, r0 + adds r0, r6, 0 + asrs r0, 4 + adds r2, r0 + lsls r2, 24 + ldr r6, [sp, 0xC] + subs r0, r6, r1 + mov r6, r8 + muls r6, r0 + adds r0, r6, 0 + asrs r0, 4 + adds r1, r0 + lsls r1, 24 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r4, 1 + ldr r0, _0807A514 @ =gUnknown_20375F8 + adds r4, r0 + lsrs r1, 14 + lsrs r2, 19 + orrs r1, r2 + orrs r1, r3 + strh r1, [r4] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0xF + bls _0807A47E +_0807A4F2: + mov r1, r12 + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r0, r9 + bcc _0807A428 +_0807A4FC: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A50C: .4byte gUnknown_2038394 +_0807A510: .4byte gUnknown_20371F8 +_0807A514: .4byte gUnknown_20375F8 + thumb_func_end sub_807A3D0 + + thumb_func_start sub_807A518 +sub_807A518: @ 807A518 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r1, 24 + lsrs r6, r1, 24 + mov r0, sp + strh r2, [r0] + ldr r0, [sp] + lsls r1, r0, 27 + lsrs r1, 27 + str r1, [sp, 0x4] + lsls r1, r0, 22 + lsrs r1, 27 + mov r10, r1 + lsls r0, 17 + lsrs r0, 27 + mov r8, r0 + movs r5, 0 + movs r4, 0 +_0807A544: + ldr r0, _0807A56C @ =gUnknown_20386A4 + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0807A570 + mov r0, sp + ldrh r3, [r0] + adds r0, r5, 0 + movs r1, 0x10 + adds r2, r6, 0 + bl sub_8045274 + adds r0, r5, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, 0x1 + mov r12, r4 + b _0807A5D4 + .align 2, 0 +_0807A56C: .4byte gUnknown_20386A4 +_0807A570: + movs r7, 0 + adds r4, 0x1 + mov r12, r4 + ldr r0, _0807A5F0 @ =gUnknown_20375F8 + mov r9, r0 +_0807A57A: + adds r4, r5, 0 + lsls r0, r4, 1 + ldr r1, _0807A5F4 @ =gUnknown_20371F8 + adds r0, r1 + ldr r1, [r0] + lsls r3, r1, 27 + lsrs r3, 27 + lsls r2, r1, 22 + lsrs r2, 27 + lsls r1, 17 + lsrs r1, 27 + ldr r5, [sp, 0x4] + subs r0, r5, r3 + muls r0, r6 + asrs r0, 4 + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + mov r5, r10 + subs r0, r5, r2 + muls r0, r6 + asrs r0, 4 + adds r2, r0 + lsls r2, 24 + mov r5, r8 + subs r0, r5, r1 + muls r0, r6 + asrs r0, 4 + adds r1, r0 + lsls r1, 24 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r4, 1 + add r4, r9 + lsrs r1, 14 + lsrs r2, 19 + orrs r1, r2 + orrs r1, r3 + strh r1, [r4] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0xF + bls _0807A57A +_0807A5D4: + mov r1, r12 + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r4, 0x1F + bls _0807A544 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A5F0: .4byte gUnknown_20375F8 +_0807A5F4: .4byte gUnknown_20371F8 + thumb_func_end sub_807A518 + + thumb_func_start sub_807A5F8 +sub_807A5F8: @ 807A5F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r3, r1, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r3, 16 + lsrs r3, 16 + mov r0, sp + strh r3, [r0] + movs r1, 0x80 + lsls r1, 1 + movs r0, 0 + adds r2, r7, 0 + bl sub_8045274 + ldr r0, [sp] + lsls r1, r0, 27 + lsrs r1, 27 + str r1, [sp, 0x4] + lsls r1, r0, 22 + lsrs r1, 27 + str r1, [sp, 0x8] + lsls r0, 17 + lsrs r0, 27 + mov r10, r0 + movs r4, 0x10 +_0807A634: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_807A748 + lsls r0, 24 + cmp r0, 0 + beq _0807A6E4 + adds r0, r4, 0x1 + lsls r1, r0, 20 + lsrs r1, 16 + mov r12, r1 + lsls r1, r4, 20 + lsrs r6, r1, 16 + mov r9, r0 + cmp r6, r12 + bcs _0807A6F8 + movs r0, 0x1C + mov r8, r0 +_0807A658: + lsls r5, r6, 1 + ldr r0, _0807A6DC @ =gUnknown_20371F8 + adds r0, r5, r0 + ldr r2, [r0] + lsls r4, r2, 27 + lsrs r4, 27 + lsls r3, r2, 22 + lsrs r3, 27 + lsls r2, 17 + lsrs r2, 27 + mov r0, r8 + subs r1, r0, r4 + lsls r0, r1, 1 + adds r0, r1 + asrs r0, 2 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0x1F + subs r1, r3 + lsls r0, r1, 1 + adds r0, r1 + asrs r0, 2 + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + subs r1, r0, r2 + lsls r0, r1, 1 + adds r0, r1 + asrs r0, 2 + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, [sp, 0x4] + subs r0, r1, r4 + muls r0, r7 + asrs r0, 4 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, [sp, 0x8] + subs r0, r1, r3 + muls r0, r7 + asrs r0, 4 + adds r3, r0 + lsls r3, 24 + mov r1, r10 + subs r0, r1, r2 + muls r0, r7 + asrs r0, 4 + adds r2, r0 + lsls r2, 24 + ldr r0, _0807A6E0 @ =gUnknown_20375F8 + adds r5, r0 + lsrs r2, 14 + lsrs r3, 19 + orrs r2, r3 + orrs r2, r4 + strh r2, [r5] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r12 + bcc _0807A658 + b _0807A6F8 + .align 2, 0 +_0807A6DC: .4byte gUnknown_20371F8 +_0807A6E0: .4byte gUnknown_20375F8 +_0807A6E4: + lsls r0, r4, 20 + lsrs r0, 16 + mov r1, sp + ldrh r3, [r1] + movs r1, 0x10 + adds r2, r7, 0 + bl sub_8045274 + adds r4, 0x1 + mov r9, r4 +_0807A6F8: + mov r1, r9 + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r4, 0x1F + bls _0807A634 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807A5F8 + + thumb_func_start sub_807A714 +sub_807A714: @ 807A714 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r3, _0807A73C @ =gUnknown_2037F34 + ldr r0, _0807A740 @ =0x000006fa + adds r1, r3, r0 + ldrb r0, [r1] + cmp r0, 0x5 + bhi _0807A736 + ldr r4, _0807A744 @ =0x000006f4 + adds r0, r3, r4 + ldrb r3, [r1] + adds r0, r3 + strb r2, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0807A736: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807A73C: .4byte gUnknown_2037F34 +_0807A740: .4byte 0x000006fa +_0807A744: .4byte 0x000006f4 + thumb_func_end sub_807A714 + + thumb_func_start sub_807A748 +sub_807A748: @ 807A748 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r1, 0 + ldr r2, _0807A770 @ =gUnknown_2037F34 + ldr r4, _0807A774 @ =0x000006fa + adds r0, r2, r4 + ldrb r0, [r0] + cmp r1, r0 + bcs _0807A786 + ldr r5, _0807A778 @ =0x000006f4 + adds r4, r2, r5 + adds r2, r0, 0 +_0807A762: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _0807A77C + movs r0, 0x1 + b _0807A788 + .align 2, 0 +_0807A770: .4byte gUnknown_2037F34 +_0807A774: .4byte 0x000006fa +_0807A778: .4byte 0x000006f4 +_0807A77C: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r2 + bcc _0807A762 +_0807A786: + movs r0, 0 +_0807A788: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_807A748 + + thumb_func_start sub_807A790 +sub_807A790: @ 807A790 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _0807A7BC @ =gUnknown_2037F34 + ldr r1, _0807A7C0 @ =0x000006c6 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0807A7B6 + lsls r2, r4, 24 + asrs r2, 24 + movs r0, 0 + movs r1, 0x20 + bl sub_807A294 + movs r1, 0xD8 + lsls r1, 3 + adds r0, r5, r1 + strb r4, [r0] +_0807A7B6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A7BC: .4byte gUnknown_2037F34 +_0807A7C0: .4byte 0x000006c6 + thumb_func_end sub_807A790 + + thumb_func_start sub_807A7C4 +sub_807A7C4: @ 807A7C4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r3, _0807A80C @ =gUnknown_2037F34 + ldr r0, _0807A810 @ =0x000006c6 + adds r2, r3, r0 + ldrb r0, [r2] + cmp r0, 0x3 + bne _0807A804 + movs r1, 0 + strb r1, [r2] + movs r2, 0xD8 + lsls r2, 3 + adds r0, r3, r2 + strb r4, [r0] + adds r2, 0x1 + adds r0, r3, r2 + strb r5, [r0] + adds r2, 0x2 + adds r0, r3, r2 + strb r1, [r0] + ldr r1, _0807A814 @ =0x000006c2 + adds r0, r3, r1 + strb r6, [r0] + lsls r0, r4, 24 + asrs r0, 24 + bl sub_807A790 +_0807A804: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807A80C: .4byte gUnknown_2037F34 +_0807A810: .4byte 0x000006c6 +_0807A814: .4byte 0x000006c2 + thumb_func_end sub_807A7C4 + + thumb_func_start sub_807A818 +sub_807A818: @ 807A818 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r0, 0x1 + beq _0807A850 + cmp r0, 0x1 + bgt _0807A834 + cmp r0, 0 + beq _0807A83E + b _0807A92C +_0807A834: + cmp r2, 0x2 + beq _0807A844 + cmp r2, 0x3 + beq _0807A854 + b _0807A92C +_0807A83E: + movs r4, 0 + movs r1, 0 + b _0807A858 +_0807A844: + ldr r4, _0807A84C @ =0x0000ffff + movs r1, 0 + b _0807A858 + .align 2, 0 +_0807A84C: .4byte 0x0000ffff +_0807A850: + movs r4, 0 + b _0807A856 +_0807A854: + ldr r4, _0807A878 @ =0x0000ffff +_0807A856: + movs r1, 0x1 +_0807A858: + ldr r0, _0807A87C @ =gUnknown_2037F34 + movs r2, 0xDA + lsls r2, 3 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x3 + blt _0807A880 + cmp r0, 0x6 + ble _0807A872 + cmp r0, 0xD + bgt _0807A880 + cmp r0, 0xB + blt _0807A880 +_0807A872: + movs r2, 0x1 + b _0807A882 + .align 2, 0 +_0807A878: .4byte 0x0000ffff +_0807A87C: .4byte gUnknown_2037F34 +_0807A880: + movs r2, 0 +_0807A882: + cmp r1, 0 + beq _0807A8C4 + cmp r2, 0 + beq _0807A896 + ldr r0, _0807A8B4 @ =gUnknown_20375F8 + ldr r1, _0807A8B8 @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 1 + bl CpuFastSet +_0807A896: + movs r0, 0x1 + negs r0, r0 + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0807A8BC @ =gUnknown_2037F34 + ldr r3, _0807A8C0 @ =0x000006c6 + adds r0, r3 + movs r1, 0x2 + strb r1, [r0] + b _0807A92C + .align 2, 0 +_0807A8B4: .4byte gUnknown_20375F8 +_0807A8B8: .4byte gUnknown_20371F8 +_0807A8BC: .4byte gUnknown_2037F34 +_0807A8C0: .4byte 0x000006c6 +_0807A8C4: + ldr r1, _0807A8DC @ =gUnknown_2037F34 + ldr r3, _0807A8E0 @ =0x000006c4 + adds r0, r1, r3 + strh r4, [r0] + cmp r2, 0 + beq _0807A8E8 + ldr r0, _0807A8E4 @ =0x000006c7 + adds r1, r0 + movs r0, 0 + strb r0, [r1] + b _0807A8FA + .align 2, 0 +_0807A8DC: .4byte gUnknown_2037F34 +_0807A8E0: .4byte 0x000006c4 +_0807A8E4: .4byte 0x000006c7 +_0807A8E8: + movs r0, 0x1 + negs r0, r0 + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_0807A8FA: + ldr r4, _0807A934 @ =gUnknown_2037F34 + ldr r1, _0807A938 @ =0x000006c6 + adds r0, r4, r1 + movs r1, 0 + movs r5, 0x1 + strb r5, [r0] + ldr r2, _0807A93C @ =0x000006ca + adds r0, r4, r2 + strb r5, [r0] + ldr r3, _0807A940 @ =0x000006cb + adds r0, r4, r3 + strb r1, [r0] + movs r1, 0xE6 + lsls r1, 3 + adds r0, r4, r1 + ldrb r0, [r0] + adds r2, 0x68 + adds r1, r4, r2 + ldrb r1, [r1] + bl sub_807ADB0 + movs r3, 0xD9 + lsls r3, 3 + adds r4, r3 + strb r5, [r4] +_0807A92C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A934: .4byte gUnknown_2037F34 +_0807A938: .4byte 0x000006c6 +_0807A93C: .4byte 0x000006ca +_0807A940: .4byte 0x000006cb + thumb_func_end sub_807A818 + + thumb_func_start sub_807A944 +sub_807A944: @ 807A944 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r0, 0x1 + beq _0807A97C + cmp r0, 0x1 + bgt _0807A962 + cmp r0, 0 + beq _0807A96C + b _0807AA56 +_0807A962: + cmp r2, 0x2 + beq _0807A972 + cmp r2, 0x3 + beq _0807A980 + b _0807AA56 +_0807A96C: + movs r4, 0 + movs r1, 0 + b _0807A984 +_0807A972: + ldr r4, _0807A978 @ =0x0000ffff + movs r1, 0 + b _0807A984 + .align 2, 0 +_0807A978: .4byte 0x0000ffff +_0807A97C: + movs r4, 0 + b _0807A982 +_0807A980: + ldr r4, _0807A9A4 @ =0x0000ffff +_0807A982: + movs r1, 0x1 +_0807A984: + ldr r0, _0807A9A8 @ =gUnknown_2037F34 + movs r2, 0xDA + lsls r2, 3 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x3 + blt _0807A9AC + cmp r0, 0x6 + ble _0807A99E + cmp r0, 0xD + bgt _0807A9AC + cmp r0, 0xB + blt _0807A9AC +_0807A99E: + movs r2, 0x1 + b _0807A9AE + .align 2, 0 +_0807A9A4: .4byte 0x0000ffff +_0807A9A8: .4byte gUnknown_2037F34 +_0807A9AC: + movs r2, 0 +_0807A9AE: + cmp r1, 0 + beq _0807A9F0 + cmp r2, 0 + beq _0807A9C2 + ldr r0, _0807A9E0 @ =gUnknown_20375F8 + ldr r1, _0807A9E4 @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 1 + bl CpuFastSet +_0807A9C2: + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0807A9E8 @ =gUnknown_2037F34 + ldr r3, _0807A9EC @ =0x000006c6 + adds r0, r3 + movs r1, 0x2 + strb r1, [r0] + b _0807AA56 + .align 2, 0 +_0807A9E0: .4byte gUnknown_20375F8 +_0807A9E4: .4byte gUnknown_20371F8 +_0807A9E8: .4byte gUnknown_2037F34 +_0807A9EC: .4byte 0x000006c6 +_0807A9F0: + ldr r1, _0807AA08 @ =gUnknown_2037F34 + ldr r3, _0807AA0C @ =0x000006c4 + adds r0, r1, r3 + strh r4, [r0] + cmp r2, 0 + beq _0807AA14 + ldr r0, _0807AA10 @ =0x000006c7 + adds r1, r0 + movs r0, 0 + strb r0, [r1] + b _0807AA24 + .align 2, 0 +_0807AA08: .4byte gUnknown_2037F34 +_0807AA0C: .4byte 0x000006c4 +_0807AA10: .4byte 0x000006c7 +_0807AA14: + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + adds r0, r6, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_0807AA24: + ldr r4, _0807AA60 @ =gUnknown_2037F34 + ldr r1, _0807AA64 @ =0x000006c6 + adds r0, r4, r1 + movs r1, 0 + movs r5, 0x1 + strb r5, [r0] + ldr r2, _0807AA68 @ =0x000006ca + adds r0, r4, r2 + strb r5, [r0] + ldr r3, _0807AA6C @ =0x000006cb + adds r0, r4, r3 + strb r1, [r0] + movs r1, 0xE6 + lsls r1, 3 + adds r0, r4, r1 + ldrb r0, [r0] + adds r2, 0x68 + adds r1, r4, r2 + ldrb r1, [r1] + bl sub_807ADB0 + movs r3, 0xD9 + lsls r3, 3 + adds r4, r3 + strb r5, [r4] +_0807AA56: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807AA60: .4byte gUnknown_2037F34 +_0807AA64: .4byte 0x000006c6 +_0807AA68: .4byte 0x000006ca +_0807AA6C: .4byte 0x000006cb + thumb_func_end sub_807A944 + + thumb_func_start sub_807AA70 +sub_807AA70: @ 807AA70 + ldr r0, _0807AA84 @ =gUnknown_2037F34 + ldr r1, _0807AA88 @ =0x000006c6 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + bx lr + .align 2, 0 +_0807AA84: .4byte gUnknown_2037F34 +_0807AA88: .4byte 0x000006c6 + thumb_func_end sub_807AA70 + + thumb_func_start sub_807AA8C +sub_807AA8C: @ 807AA8C + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x80 + lsls r1, 13 + adds r0, r1 + lsrs r4, r0, 16 + ldr r5, _0807AACC @ =gUnknown_2037F34 + ldr r2, _0807AAD0 @ =0x000006c6 + adds r0, r5, r2 + ldrb r0, [r0] + adds r1, r5, 0 + cmp r0, 0x1 + beq _0807AAD4 + cmp r0, 0x2 + beq _0807AB20 + adds r2, 0xA + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x6 + beq _0807AB58 + lsls r0, r4, 24 + lsrs r0, 24 + subs r2, 0x10 + adds r1, r2 + movs r2, 0 + ldrsb r2, [r1, r2] + movs r1, 0x1 + bl sub_807A294 + b _0807AB68 + .align 2, 0 +_0807AACC: .4byte gUnknown_2037F34 +_0807AAD0: .4byte 0x000006c6 +_0807AAD4: + ldr r2, _0807AB14 @ =0x000006ca + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807AB68 + adds r2, 0x6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x6 + bne _0807AAF0 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_807A714 +_0807AAF0: + lsls r0, r4, 20 + lsrs r4, r0, 16 + movs r2, 0 + ldr r6, _0807AB18 @ =gUnknown_20375F8 + ldr r0, _0807AB1C @ =0x000006c4 + adds r3, r5, r0 +_0807AAFC: + adds r0, r4, r2 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r3] + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0xF + bls _0807AAFC + b _0807AB68 + .align 2, 0 +_0807AB14: .4byte 0x000006ca +_0807AB18: .4byte gUnknown_20375F8 +_0807AB1C: .4byte 0x000006c4 +_0807AB20: + lsls r0, r4, 20 + lsrs r4, r0, 16 + lsls r1, r4, 1 + ldr r0, _0807AB4C @ =gUnknown_20375F8 + adds r0, r1, r0 + ldr r2, _0807AB50 @ =gUnknown_20371F8 + adds r1, r2 + movs r2, 0x8 + bl CpuFastSet + ldr r0, _0807AB54 @ =gUnknown_2037AB8 + ldrh r2, [r0, 0x4] + lsls r2, 21 + lsrs r2, 27 + ldrh r3, [r0, 0x6] + lsls r3, 17 + lsrs r3, 17 + adds r0, r4, 0 + movs r1, 0x10 + bl sub_8045274 + b _0807AB68 + .align 2, 0 +_0807AB4C: .4byte gUnknown_20375F8 +_0807AB50: .4byte gUnknown_20371F8 +_0807AB54: .4byte gUnknown_2037AB8 +_0807AB58: + lsls r0, r4, 20 + lsrs r4, r0, 16 + ldr r3, _0807AB70 @ =0x000073fc + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0xC + bl sub_8045274 +_0807AB68: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807AB70: .4byte 0x000073fc + thumb_func_end sub_807AA8C + + thumb_func_start sub_807AB74 +sub_807AB74: @ 807AB74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0807AB90 @ =gUnknown_2037F34 + movs r2, 0xD8 + lsls r2, 3 + adds r1, r2 + movs r2, 0 + ldrsb r2, [r1, r2] + movs r1, 0x1 + bl sub_807A294 + pop {r0} + bx r0 + .align 2, 0 +_0807AB90: .4byte gUnknown_2037F34 + thumb_func_end sub_807AB74 + + thumb_func_start sub_807AB94 +sub_807AB94: @ 807AB94 + push {lr} + ldr r1, _0807ABA8 @ =gUnknown_2037F34 + ldr r2, _0807ABAC @ =0x000006c6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0807ABB0 + movs r0, 0 + b _0807ABB6 + .align 2, 0 +_0807ABA8: .4byte gUnknown_2037F34 +_0807ABAC: .4byte 0x000006c6 +_0807ABB0: + ldr r2, _0807ABBC @ =0x000006ca + adds r0, r1, r2 + ldrb r0, [r0] +_0807ABB6: + pop {r1} + bx r1 + .align 2, 0 +_0807ABBC: .4byte 0x000006ca + thumb_func_end sub_807AB94 + + thumb_func_start sub_807ABC0 +sub_807ABC0: @ 807ABC0 + push {r4,lr} + ldr r4, _0807ABE8 @ =gUnknown_2037F34 + ldr r1, _0807ABEC @ =0x000006d4 + adds r4, r1 + ldrb r1, [r4] + lsls r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + ldrb r0, [r4] + bl sub_807AA8C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807ABE8: .4byte gUnknown_2037F34 +_0807ABEC: .4byte 0x000006d4 + thumb_func_end sub_807ABC0 + + thumb_func_start nullsub_47 +nullsub_47: @ 807ABF0 + bx lr + thumb_func_end nullsub_47 + + thumb_func_start sub_807ABF4 +sub_807ABF4: @ 807ABF4 + ldr r0, _0807AC08 @ =gUnknown_2037F34 + ldr r2, _0807AC0C @ =0x0000074d + adds r1, r0, r2 + movs r2, 0x1 + strb r2, [r1] + ldr r1, _0807AC10 @ =0x0000074e + adds r0, r1 + strb r2, [r0] + bx lr + .align 2, 0 +_0807AC08: .4byte gUnknown_2037F34 +_0807AC0C: .4byte 0x0000074d +_0807AC10: .4byte 0x0000074e + thumb_func_end sub_807ABF4 + + thumb_func_start sub_807AC14 +sub_807AC14: @ 807AC14 + push {r4,lr} + ldr r1, _0807AC3C @ =gUnknown_2037F34 + ldr r0, _0807AC40 @ =0x0000074d + adds r4, r1, r0 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x1F + bgt _0807AC48 + ldr r0, _0807AC44 @ =0x0000074e + adds r1, r0 + adds r0, r4, 0 + bl nullsub_47 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x1F + bgt _0807AC48 + movs r0, 0x1 + b _0807AC4A + .align 2, 0 +_0807AC3C: .4byte gUnknown_2037F34 +_0807AC40: .4byte 0x0000074d +_0807AC44: .4byte 0x0000074e +_0807AC48: + movs r0, 0 +_0807AC4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807AC14 + + thumb_func_start sub_807AC50 +sub_807AC50: @ 807AC50 + push {lr} + lsls r0, 24 + asrs r0, 24 + mvns r0, r0 + bl sub_807A790 + pop {r0} + bx r0 + thumb_func_end sub_807AC50 + + thumb_func_start sub_807AC60 +sub_807AC60: @ 807AC60 + ldr r1, _0807AC88 @ =gUnknown_2037F34 + ldr r2, _0807AC8C @ =0x0000073c + adds r0, r1, r2 + movs r2, 0 + strh r2, [r0] + movs r3, 0xE8 + lsls r3, 3 + adds r0, r1, r3 + strh r2, [r0] + adds r3, 0x2 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _0807AC90 @ =0x0000073e + adds r1, r0 + strh r2, [r1] + ldr r1, _0807AC94 @ =gUnknown_20386A8 + movs r0, 0x5 + strh r0, [r1] + bx lr + .align 2, 0 +_0807AC88: .4byte gUnknown_2037F34 +_0807AC8C: .4byte 0x0000073c +_0807AC90: .4byte 0x0000073e +_0807AC94: .4byte gUnknown_20386A8 + thumb_func_end sub_807AC60 + + thumb_func_start sub_807AC98 +sub_807AC98: @ 807AC98 + push {r4-r7,lr} + ldr r5, _0807ACB4 @ =gUnknown_2037F34 + ldr r0, _0807ACB8 @ =0x00000742 + adds r7, r5, r0 + movs r1, 0 + ldrsh r2, [r7, r1] + cmp r2, 0x1 + beq _0807AD14 + cmp r2, 0x1 + bgt _0807ACBC + cmp r2, 0 + beq _0807ACC2 + b _0807ADA0 + .align 2, 0 +_0807ACB4: .4byte gUnknown_2037F34 +_0807ACB8: .4byte 0x00000742 +_0807ACBC: + cmp r2, 0x2 + beq _0807AD68 + b _0807ADA0 +_0807ACC2: + movs r3, 0xE8 + lsls r3, 3 + adds r6, r5, r3 + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + lsls r0, 16 + asrs r0, 16 + ldr r1, _0807AD08 @ =gUnknown_20386A8 + ldrh r1, [r1] + cmp r0, r1 + ble _0807ADA0 + strh r2, [r6] + ldr r0, _0807AD0C @ =0x0000073c + adds r4, r5, r0 + ldrh r0, [r4] + adds r1, r0, 0x1 + strh r1, [r4] + lsls r0, 24 + asrs r0, 24 + bl sub_807AC50 + ldrh r1, [r4] + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0x5 + ble _0807ADA0 + ldr r3, _0807AD10 @ =0x0000073e + adds r0, r5, r3 + strh r1, [r0] + movs r0, 0x1 + strh r0, [r7] + movs r0, 0x3C + strh r0, [r6] + b _0807ADA0 + .align 2, 0 +_0807AD08: .4byte gUnknown_20386A8 +_0807AD0C: .4byte 0x0000073c +_0807AD10: .4byte 0x0000073e +_0807AD14: + movs r0, 0xE8 + lsls r0, 3 + adds r2, r5, r0 + ldrh r0, [r2] + adds r0, 0x3 + movs r1, 0x7F + ands r0, r1 + strh r0, [r2] + ldr r1, _0807AD5C @ =gUnknown_825E074 + movs r3, 0 + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + subs r0, 0x1 + asrs r0, 6 + adds r0, 0x2 + ldr r2, _0807AD60 @ =0x0000073c + adds r6, r5, r2 + adds r2, r0, 0 + strh r0, [r6] + ldr r3, _0807AD64 @ =0x0000073e + adds r4, r5, r3 + movs r3, 0 + ldrsh r1, [r4, r3] + cmp r0, r1 + beq _0807AD54 + lsls r0, r2, 24 + asrs r0, 24 + bl sub_807AC50 +_0807AD54: + ldrh r0, [r6] + strh r0, [r4] + b _0807ADA0 + .align 2, 0 +_0807AD5C: .4byte gUnknown_825E074 +_0807AD60: .4byte 0x0000073c +_0807AD64: .4byte 0x0000073e +_0807AD68: + movs r0, 0xE8 + lsls r0, 3 + adds r2, r5, r0 + ldrh r0, [r2] + adds r0, 0x1 + movs r6, 0 + strh r0, [r2] + lsls r0, 16 + asrs r0, 16 + ldr r1, _0807ADA8 @ =gUnknown_20386A8 + ldrh r1, [r1] + cmp r0, r1 + ble _0807ADA0 + strh r6, [r2] + ldr r1, _0807ADAC @ =0x0000073c + adds r4, r5, r1 + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + lsls r0, 24 + asrs r0, 24 + bl sub_807AC50 + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + bne _0807ADA0 + strh r6, [r7] +_0807ADA0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807ADA8: .4byte gUnknown_20386A8 +_0807ADAC: .4byte 0x0000073c + thumb_func_end sub_807AC98 + + thumb_func_start sub_807ADB0 +sub_807ADB0: @ 807ADB0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0807ADE8 @ =gUnknown_2037F34 + movs r4, 0xE6 + lsls r4, 3 + adds r2, r3, r4 + strh r0, [r2] + adds r4, 0x2 + adds r2, r3, r4 + strh r1, [r2] + adds r4, 0x2 + adds r2, r3, r4 + strh r0, [r2] + ldr r2, _0807ADEC @ =0x00000736 + adds r3, r2 + strh r1, [r3] + lsls r1, 8 + orrs r1, r0 + movs r0, 0x52 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807ADE8: .4byte gUnknown_2037F34 +_0807ADEC: .4byte 0x00000736 + thumb_func_end sub_807ADB0 + + thumb_func_start sub_807ADF0 +sub_807ADF0: @ 807ADF0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0807AE24 @ =gUnknown_2037F34 + ldr r5, _0807AE28 @ =0x00000734 + adds r4, r3, r5 + movs r5, 0 + strh r0, [r4] + ldr r4, _0807AE2C @ =0x00000736 + adds r0, r3, r4 + strh r1, [r0] + ldr r1, _0807AE30 @ =0x0000073a + adds r0, r3, r1 + strb r2, [r0] + adds r4, 0x3 + adds r0, r3, r4 + strb r5, [r0] + movs r0, 0xE7 + lsls r0, 3 + adds r3, r0 + strb r5, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807AE24: .4byte gUnknown_2037F34 +_0807AE28: .4byte 0x00000734 +_0807AE2C: .4byte 0x00000736 +_0807AE30: .4byte 0x0000073a + thumb_func_end sub_807ADF0 + + thumb_func_start sub_807AE34 +sub_807AE34: @ 807AE34 + push {r4-r6,lr} + ldr r0, _0807AE8C @ =gUnknown_2037F34 + movs r1, 0xE6 + lsls r1, 3 + adds r3, r0, r1 + ldr r2, [r3] + ldr r6, _0807AE90 @ =0x00000734 + adds r4, r0, r6 + ldr r1, [r4] + adds r5, r0, 0 + cmp r2, r1 + beq _0807AEF8 + ldr r0, _0807AE94 @ =0x00000739 + adds r2, r5, r0 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + ldr r6, _0807AE98 @ =0x0000073a + adds r1, r5, r6 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bls _0807AEC4 + movs r0, 0 + strb r0, [r2] + movs r0, 0xE7 + lsls r0, 3 + adds r1, r5, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0807AE9C + ldrh r1, [r3] + adds r2, r1, 0 + ldrh r0, [r4] + cmp r2, r0 + bcs _0807AEBC + adds r0, r1, 0x1 + b _0807AEC2 + .align 2, 0 +_0807AE8C: .4byte gUnknown_2037F34 +_0807AE90: .4byte 0x00000734 +_0807AE94: .4byte 0x00000739 +_0807AE98: .4byte 0x0000073a +_0807AE9C: + ldr r1, _0807AEB4 @ =0x00000732 + adds r3, r5, r1 + ldr r2, _0807AEB8 @ =0x00000736 + adds r0, r5, r2 + ldrh r1, [r3] + adds r2, r1, 0 + ldrh r0, [r0] + cmp r2, r0 + bcs _0807AEBC + adds r0, r1, 0x1 + b _0807AEC2 + .align 2, 0 +_0807AEB4: .4byte 0x00000732 +_0807AEB8: .4byte 0x00000736 +_0807AEBC: + cmp r2, r0 + bls _0807AEC4 + subs r0, r1, 0x1 +_0807AEC2: + strh r0, [r3] +_0807AEC4: + ldr r6, _0807AEF0 @ =0x00000732 + adds r0, r5, r6 + ldrh r1, [r0] + lsls r1, 8 + movs r0, 0xE6 + lsls r0, 3 + adds r4, r5, r0 + ldrh r0, [r4] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + ldr r1, [r4] + ldr r2, _0807AEF4 @ =0x00000734 + adds r0, r5, r2 + ldr r0, [r0] + cmp r1, r0 + beq _0807AEF8 + movs r0, 0 + b _0807AEFA + .align 2, 0 +_0807AEF0: .4byte 0x00000732 +_0807AEF4: .4byte 0x00000734 +_0807AEF8: + movs r0, 0x1 +_0807AEFA: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807AE34 + + thumb_func_start sub_807AF00 +sub_807AF00: @ 807AF00 + push {lr} + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x9 + bhi _0807AF92 + lsls r0, 2 + ldr r1, _0807AF18 @ =_0807AF1C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807AF18: .4byte _0807AF1C + .align 2, 0 +_0807AF1C: + .4byte _0807AF44 + .4byte _0807AF4C + .4byte _0807AF54 + .4byte _0807AF5C + .4byte _0807AF64 + .4byte _0807AF6C + .4byte _0807AF74 + .4byte _0807AF7C + .4byte _0807AF84 + .4byte _0807AF8C +_0807AF44: + movs r0, 0x1 + bl sub_807B174 + b _0807AF92 +_0807AF4C: + movs r0, 0x2 + bl sub_807B174 + b _0807AF92 +_0807AF54: + movs r0, 0x3 + bl sub_807B174 + b _0807AF92 +_0807AF5C: + movs r0, 0x4 + bl sub_807B174 + b _0807AF92 +_0807AF64: + movs r0, 0x5 + bl sub_807B174 + b _0807AF92 +_0807AF6C: + movs r0, 0x6 + bl sub_807B174 + b _0807AF92 +_0807AF74: + movs r0, 0x9 + bl sub_807B174 + b _0807AF92 +_0807AF7C: + movs r0, 0x7 + bl sub_807B174 + b _0807AF92 +_0807AF84: + movs r0, 0x8 + bl sub_807B174 + b _0807AF92 +_0807AF8C: + movs r0, 0xB + bl sub_807B174 +_0807AF92: + pop {r0} + bx r0 + thumb_func_end sub_807AF00 + + thumb_func_start sub_807AF98 +sub_807AF98: @ 807AF98 + ldr r0, _0807AFA4 @ =gUnknown_2037F34 + movs r1, 0xDA + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0807AFA4: .4byte gUnknown_2037F34 + thumb_func_end sub_807AF98 + + thumb_func_start sub_807AFA8 +sub_807AFA8: @ 807AFA8 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _0807AFC8 @ =gUnknown_2037F34 + ldr r3, _0807AFCC @ =0x000006c6 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0807AFFA + cmp r2, 0x4C + beq _0807AFE0 + cmp r2, 0x4C + bgt _0807AFD0 + cmp r2, 0x4A + beq _0807AFEC + b _0807AFFA + .align 2, 0 +_0807AFC8: .4byte gUnknown_2037F34 +_0807AFCC: .4byte 0x000006c6 +_0807AFD0: + cmp r2, 0x4E + bne _0807AFFA + ldr r0, _0807AFDC @ =0x000006dd + adds r1, r0 + movs r0, 0 + b _0807AFF2 + .align 2, 0 +_0807AFDC: .4byte 0x000006dd +_0807AFE0: + ldr r3, _0807AFE8 @ =0x000006dd + adds r1, r3 + movs r0, 0x1 + b _0807AFF2 + .align 2, 0 +_0807AFE8: .4byte 0x000006dd +_0807AFEC: + ldr r0, _0807B000 @ =0x000006dd + adds r1, r0 + movs r0, 0x2 +_0807AFF2: + strb r0, [r1] + adds r0, r2, 0 + bl sub_80722CC +_0807AFFA: + pop {r0} + bx r0 + .align 2, 0 +_0807B000: .4byte 0x000006dd + thumb_func_end sub_807AFA8 + + thumb_func_start sub_807B004 +sub_807B004: @ 807B004 + push {lr} + bl sub_807244C + lsls r0, 24 + cmp r0, 0 + beq _0807B042 + ldr r0, _0807B02C @ =gUnknown_2037F34 + ldr r1, _0807B030 @ =0x000006dd + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0807B034 + cmp r0, 0x1 + bgt _0807B03C + cmp r0, 0 + bne _0807B03C + movs r0, 0x4F + bl sub_80722CC + b _0807B042 + .align 2, 0 +_0807B02C: .4byte gUnknown_2037F34 +_0807B030: .4byte 0x000006dd +_0807B034: + movs r0, 0x4D + bl sub_80722CC + b _0807B042 +_0807B03C: + movs r0, 0x4B + bl sub_80722CC +_0807B042: + pop {r0} + bx r0 + thumb_func_end sub_807B004 + + thumb_func_start sub_807B048 +sub_807B048: @ 807B048 + ldr r0, _0807B054 @ =gUnknown_2037F34 + ldr r1, _0807B058 @ =0x000006d3 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0807B054: .4byte gUnknown_2037F34 +_0807B058: .4byte 0x000006d3 + thumb_func_end sub_807B048 + + thumb_func_start sub_807B05C +sub_807B05C: @ 807B05C + ldr r0, _0807B068 @ =gUnknown_2037F34 + ldr r1, _0807B06C @ =0x000006c6 + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + bx lr + .align 2, 0 +_0807B068: .4byte gUnknown_2037F34 +_0807B06C: .4byte 0x000006c6 + thumb_func_end sub_807B05C + + thumb_func_start sub_807B070 +sub_807B070: @ 807B070 + ldr r0, _0807B07C @ =gUnknown_2037F34 + ldr r1, _0807B080 @ =0x000006c6 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + bx lr + .align 2, 0 +_0807B07C: .4byte gUnknown_2037F34 +_0807B080: .4byte 0x000006c6 + thumb_func_end sub_807B070 + + thumb_func_start sub_807B084 +sub_807B084: @ 807B084 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0807B0A8 @ =gUnknown_83C2CC0 + ldr r5, _0807B0AC @ =gUnknown_2038684 + adds r1, r5, 0 + movs r2, 0x10 + bl CpuSet + adds r4, r5 + movs r0, 0 + strb r0, [r4] + ldr r0, _0807B0B0 @ =gUnknown_20386A4 + str r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B0A8: .4byte gUnknown_83C2CC0 +_0807B0AC: .4byte gUnknown_2038684 +_0807B0B0: .4byte gUnknown_20386A4 + thumb_func_end sub_807B084 + + thumb_func_start sub_807B0B4 +sub_807B0B4: @ 807B0B4 + ldr r1, _0807B0BC @ =gUnknown_20386A4 + ldr r0, _0807B0C0 @ =gUnknown_83C2CC0 + str r0, [r1] + bx lr + .align 2, 0 +_0807B0BC: .4byte gUnknown_20386A4 +_0807B0C0: .4byte gUnknown_83C2CC0 + thumb_func_end sub_807B0B4 + + thumb_func_start sub_807B0C4 +sub_807B0C4: @ 807B0C4 + push {lr} + adds r1, r0, 0 + adds r3, r2, 0 + ldr r0, _0807B0E8 @ =gUnknown_2037F34 + movs r2, 0xDA + lsls r2, 3 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0xB + beq _0807B0F0 + cmp r0, 0xB + bgt _0807B0EC + cmp r0, 0x5 + bgt _0807B0FA + cmp r0, 0x3 + blt _0807B0FA + b _0807B0F0 + .align 2, 0 +_0807B0E8: .4byte gUnknown_2037F34 +_0807B0EC: + cmp r0, 0xD + bne _0807B0FA +_0807B0F0: + adds r0, r1, 0 + movs r1, 0 + movs r2, 0x3 + bl sub_8045314 +_0807B0FA: + pop {r0} + bx r0 + thumb_func_end sub_807B0C4 + + thumb_func_start sub_807B100 +sub_807B100: @ 807B100 + push {r4,r5,lr} + ldr r4, _0807B12C @ =gUnknown_3005008 + ldr r1, [r4] + adds r1, 0x2E + ldrb r5, [r1] + lsls r0, 24 + lsrs r0, 24 + bl sub_807B1CC + ldr r1, [r4] + adds r1, 0x2E + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x2E + ldrb r0, [r0] + adds r1, r5, 0 + bl sub_807B2BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B12C: .4byte gUnknown_3005008 + thumb_func_end sub_807B100 + + thumb_func_start sub_807B130 +sub_807B130: @ 807B130 + ldr r0, _0807B13C @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x2E + ldrb r0, [r0] + bx lr + .align 2, 0 +_0807B13C: .4byte gUnknown_3005008 + thumb_func_end sub_807B130 + + thumb_func_start sub_807B140 +sub_807B140: @ 807B140 + push {r4,r5,lr} + ldr r4, _0807B16C @ =gUnknown_3005008 + ldr r0, [r4] + adds r0, 0x2E + ldrb r5, [r0] + ldr r0, _0807B170 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x16] + bl sub_807B1CC + ldr r1, [r4] + adds r1, 0x2E + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x2E + ldrb r0, [r0] + adds r1, r5, 0 + bl sub_807B2BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B16C: .4byte gUnknown_3005008 +_0807B170: .4byte gUnknown_2036DFC + thumb_func_end sub_807B140 + + thumb_func_start sub_807B174 +sub_807B174: @ 807B174 + push {lr} + bl sub_807B100 + bl sub_807B130 + lsls r0, 24 + lsrs r0, 24 + bl sub_8079CF4 + pop {r0} + bx r0 + thumb_func_end sub_807B174 + + thumb_func_start sub_807B18C +sub_807B18C: @ 807B18C + push {lr} + bl sub_807B100 + bl sub_807B130 + lsls r0, 24 + lsrs r0, 24 + bl sub_8079D60 + pop {r0} + bx r0 + thumb_func_end sub_807B18C + + thumb_func_start sub_807B1A4 +sub_807B1A4: @ 807B1A4 + push {lr} + bl sub_807B130 + lsls r0, 24 + lsrs r0, 24 + bl sub_8079CF4 + pop {r0} + bx r0 + thumb_func_end sub_807B1A4 + + thumb_func_start sub_807B1B8 +sub_807B1B8: @ 807B1B8 + push {lr} + bl sub_807B130 + lsls r0, 24 + lsrs r0, 24 + bl sub_8079D60 + pop {r0} + bx r0 + thumb_func_end sub_807B1B8 + + thumb_func_start sub_807B1CC +sub_807B1CC: @ 807B1CC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x15 + bhi _0807B294 + lsls r0, 2 + ldr r1, _0807B1E0 @ =_0807B1E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807B1E0: .4byte _0807B1E4 + .align 2, 0 +_0807B1E4: + .4byte _0807B294 + .4byte _0807B23C + .4byte _0807B240 + .4byte _0807B244 + .4byte _0807B248 + .4byte _0807B24C + .4byte _0807B250 + .4byte _0807B254 + .4byte _0807B258 + .4byte _0807B25C + .4byte _0807B260 + .4byte _0807B264 + .4byte _0807B268 + .4byte _0807B26C + .4byte _0807B270 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B274 + .4byte _0807B27C +_0807B23C: + movs r0, 0x1 + b _0807B296 +_0807B240: + movs r0, 0x2 + b _0807B296 +_0807B244: + movs r0, 0x3 + b _0807B296 +_0807B248: + movs r0, 0x4 + b _0807B296 +_0807B24C: + movs r0, 0x5 + b _0807B296 +_0807B250: + movs r0, 0x6 + b _0807B296 +_0807B254: + movs r0, 0x7 + b _0807B296 +_0807B258: + movs r0, 0x8 + b _0807B296 +_0807B25C: + movs r0, 0x9 + b _0807B296 +_0807B260: + movs r0, 0xA + b _0807B296 +_0807B264: + movs r0, 0xB + b _0807B296 +_0807B268: + movs r0, 0xC + b _0807B296 +_0807B26C: + movs r0, 0xD + b _0807B296 +_0807B270: + movs r0, 0xE + b _0807B296 +_0807B274: + ldr r1, _0807B278 @ =gUnknown_83C65C0 + b _0807B27E + .align 2, 0 +_0807B278: .4byte gUnknown_83C65C0 +_0807B27C: + ldr r1, _0807B28C @ =gUnknown_83C65C4 +_0807B27E: + ldr r0, _0807B290 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x2F + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + b _0807B296 + .align 2, 0 +_0807B28C: .4byte gUnknown_83C65C4 +_0807B290: .4byte gUnknown_3005008 +_0807B294: + movs r0, 0 +_0807B296: + pop {r1} + bx r1 + thumb_func_end sub_807B1CC + + thumb_func_start sub_807B29C +sub_807B29C: @ 807B29C + lsls r0, 16 + ldr r1, _0807B2B8 @ =gUnknown_3005008 + ldr r2, [r1] + adds r2, 0x2F + lsrs r0, 16 + ldrb r1, [r2] + adds r0, r1 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + strb r1, [r2] + bx lr + .align 2, 0 +_0807B2B8: .4byte gUnknown_3005008 + thumb_func_end sub_807B29C + + thumb_func_start sub_807B2BC +sub_807B2BC: @ 807B2BC + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r0, 24 + cmp r0, r1 + beq _0807B2D6 + cmp r2, 0x3 + beq _0807B2D0 + cmp r2, 0x5 + bne _0807B2D6 +_0807B2D0: + movs r0, 0x28 + bl sub_8054E90 +_0807B2D6: + pop {r0} + bx r0 + thumb_func_end sub_807B2BC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_weather_effects.s b/asm/field_weather_effects.s new file mode 100644 index 000000000..fd63d855b --- /dev/null +++ b/asm/field_weather_effects.s @@ -0,0 +1,5240 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_807B2DC +sub_807B2DC: @ 807B2DC + push {lr} + ldr r0, _0807B314 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r2, _0807B318 @ =0x000006c1 + adds r1, r0, r2 + movs r2, 0 + strb r2, [r1] + ldr r1, _0807B31C @ =0x000006c2 + adds r3, r0, r1 + movs r1, 0x14 + strb r1, [r3] + ldr r3, _0807B320 @ =0x000006d2 + adds r1, r0, r3 + strb r2, [r1] + subs r3, 0x6 + adds r1, r0, r3 + strh r2, [r1] + ldr r1, _0807B324 @ =0x000006de + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807B310 + movs r0, 0 + movs r1, 0x10 + bl sub_807ADB0 +_0807B310: + pop {r0} + bx r0 + .align 2, 0 +_0807B314: .4byte gUnknown_83C2BBC +_0807B318: .4byte 0x000006c1 +_0807B31C: .4byte 0x000006c2 +_0807B320: .4byte 0x000006d2 +_0807B324: .4byte 0x000006de + thumb_func_end sub_807B2DC + + thumb_func_start sub_807B328 +sub_807B328: @ 807B328 + push {r4,lr} + bl sub_807B2DC + ldr r0, _0807B350 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B354 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807B348 + adds r4, r1, r2 +_0807B33E: + bl sub_807B358 + ldrb r0, [r4] + cmp r0, 0 + beq _0807B33E +_0807B348: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807B350: .4byte gUnknown_83C2BBC +_0807B354: .4byte 0x000006d2 + thumb_func_end sub_807B328 + + thumb_func_start sub_807B358 +sub_807B358: @ 807B358 + push {r4,r5,lr} + ldr r0, _0807B374 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807B378 @ =0x000006cc + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807B388 + cmp r0, 0x1 + bgt _0807B37C + cmp r0, 0 + beq _0807B382 + b _0807B3AC + .align 2, 0 +_0807B374: .4byte gUnknown_83C2BBC +_0807B378: .4byte 0x000006cc +_0807B37C: + cmp r0, 0x2 + beq _0807B394 + b _0807B3AC +_0807B382: + bl sub_807B438 + b _0807B3A6 +_0807B388: + movs r0, 0xC + movs r1, 0x8 + movs r2, 0x1 + bl sub_807ADF0 + b _0807B3A6 +_0807B394: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807B3AC + ldr r0, _0807B3B4 @ =0x000006d2 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] +_0807B3A6: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807B3AC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B3B4: .4byte 0x000006d2 + thumb_func_end sub_807B358 + + thumb_func_start sub_807B3B8 +sub_807B3B8: @ 807B3B8 + push {r4,lr} + ldr r0, _0807B3D0 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807B3D4 @ =0x000006ce + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, 0 + beq _0807B3D8 + cmp r0, 0x1 + beq _0807B3E4 + movs r0, 0 + b _0807B3FA + .align 2, 0 +_0807B3D0: .4byte gUnknown_83C2BBC +_0807B3D4: .4byte 0x000006ce +_0807B3D8: + movs r0, 0 + movs r1, 0x10 + movs r2, 0x1 + bl sub_807ADF0 + b _0807B3F2 +_0807B3E4: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807B3F8 + bl sub_807B504 +_0807B3F2: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807B3F8: + movs r0, 0x1 +_0807B3FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807B3B8 + + thumb_func_start sub_807B400 +sub_807B400: @ 807B400 + ldr r0, _0807B418 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807B41C @ =0x000006c1 + adds r2, r1, r0 + movs r0, 0 + strb r0, [r2] + ldr r0, _0807B420 @ =0x000006c2 + adds r1, r0 + movs r0, 0x14 + strb r0, [r1] + bx lr + .align 2, 0 +_0807B418: .4byte gUnknown_83C2BBC +_0807B41C: .4byte 0x000006c1 +_0807B420: .4byte 0x000006c2 + thumb_func_end sub_807B400 + + thumb_func_start sub_807B424 +sub_807B424: @ 807B424 + push {lr} + bl sub_807B400 + pop {r0} + bx r0 + thumb_func_end sub_807B424 + + thumb_func_start nullsub_48 +nullsub_48: @ 807B430 + bx lr + thumb_func_end nullsub_48 + + thumb_func_start sub_807B434 +sub_807B434: @ 807B434 + movs r0, 0 + bx lr + thumb_func_end sub_807B434 + + thumb_func_start sub_807B438 +sub_807B438: @ 807B438 + push {r4,r5,lr} + ldr r0, _0807B4B0 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807B4B4 @ =0x000006de + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0807B4F4 + ldr r0, _0807B4B8 @ =gUnknown_83C65D4 + bl sub_80086DC + ldr r0, _0807B4BC @ =gUnknown_83C2D00 + bl sub_807ABC0 + movs r5, 0 +_0807B456: + ldr r0, _0807B4C0 @ =gUnknown_83C65F0 + movs r1, 0 + movs r2, 0 + movs r3, 0xFF + bl sub_8006F8C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x40 + beq _0807B4CC + ldr r0, _0807B4B0 @ =gUnknown_83C2BBC + ldr r1, [r0] + lsls r2, r5, 2 + movs r0, 0xFA + lsls r0, 1 + adds r1, r0 + adds r1, r2 + lsls r4, r3, 4 + adds r4, r3 + lsls r4, 2 + ldr r0, _0807B4C4 @ =gUnknown_202063C + adds r4, r0 + str r4, [r1] + ldr r0, _0807B4C8 @ =gUnknown_83C65C8 + adds r2, r0 + ldrh r0, [r2] + adds r0, 0x7 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r2, 0x2] + adds r1, 0x7 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063B1C + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + b _0807B4DE + .align 2, 0 +_0807B4B0: .4byte gUnknown_83C2BBC +_0807B4B4: .4byte 0x000006de +_0807B4B8: .4byte gUnknown_83C65D4 +_0807B4BC: .4byte gUnknown_83C2D00 +_0807B4C0: .4byte gUnknown_83C65F0 +_0807B4C4: .4byte gUnknown_202063C +_0807B4C8: .4byte gUnknown_83C65C8 +_0807B4CC: + ldr r0, _0807B4FC @ =gUnknown_83C2BBC + ldr r1, [r0] + lsls r0, r5, 2 + movs r2, 0xFA + lsls r2, 1 + adds r1, r2 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0807B4DE: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x2 + bls _0807B456 + ldr r0, _0807B4FC @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807B500 @ =0x000006de + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0807B4F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B4FC: .4byte gUnknown_83C2BBC +_0807B500: .4byte 0x000006de + thumb_func_end sub_807B438 + + thumb_func_start sub_807B504 +sub_807B504: @ 807B504 + push {r4,r5,lr} + ldr r0, _0807B550 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B554 @ =0x000006de + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807B548 + movs r4, 0 + movs r0, 0xFA + lsls r0, 1 + adds r5, r1, r0 +_0807B51C: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807B52A + bl sub_8007280 +_0807B52A: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x2 + bls _0807B51C + movs r0, 0x90 + lsls r0, 5 + bl sub_800874C + ldr r0, _0807B550 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807B554 @ =0x000006de + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0807B548: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B550: .4byte gUnknown_83C2BBC +_0807B554: .4byte 0x000006de + thumb_func_end sub_807B504 + + thumb_func_start sub_807B558 +sub_807B558: @ 807B558 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + movs r1, 0x1 + ands r0, r1 + strh r0, [r2, 0x2E] + cmp r0, 0 + beq _0807B570 + ldrh r0, [r2, 0x20] + subs r0, 0x1 + strh r0, [r2, 0x20] +_0807B570: + pop {r0} + bx r0 + thumb_func_end sub_807B558 + + thumb_func_start sub_807B574 +sub_807B574: @ 807B574 + ldr r0, _0807B598 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807B59C @ =0x000006cc + adds r3, r1, r0 + movs r2, 0 + movs r0, 0 + strh r0, [r3] + ldr r3, _0807B5A0 @ =0x000006d2 + adds r0, r1, r3 + strb r2, [r0] + subs r3, 0x11 + adds r0, r1, r3 + strb r2, [r0] + ldr r0, _0807B5A4 @ =0x000006c2 + adds r1, r0 + strb r2, [r1] + bx lr + .align 2, 0 +_0807B598: .4byte gUnknown_83C2BBC +_0807B59C: .4byte 0x000006cc +_0807B5A0: .4byte 0x000006d2 +_0807B5A4: .4byte 0x000006c2 + thumb_func_end sub_807B574 + + thumb_func_start sub_807B5A8 +sub_807B5A8: @ 807B5A8 + push {r4,lr} + bl sub_807B574 + ldr r0, _0807B5D0 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B5D4 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807B5C8 + adds r4, r1, r2 +_0807B5BE: + bl sub_807B5D8 + ldrb r0, [r4] + cmp r0, 0 + beq _0807B5BE +_0807B5C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807B5D0: .4byte gUnknown_83C2BBC +_0807B5D4: .4byte 0x000006d2 + thumb_func_end sub_807B5A8 + + thumb_func_start sub_807B5D8 +sub_807B5D8: @ 807B5D8 + push {lr} + ldr r1, _0807B5F4 @ =gUnknown_83C2BBC + ldr r0, [r1] + ldr r2, _0807B5F8 @ =0x000006cc + adds r0, r2 + ldrh r0, [r0] + adds r2, r1, 0 + cmp r0, 0x4 + bhi _0807B6B4 + lsls r0, 2 + ldr r1, _0807B5FC @ =_0807B600 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807B5F4: .4byte gUnknown_83C2BBC +_0807B5F8: .4byte 0x000006cc +_0807B5FC: .4byte _0807B600 + .align 2, 0 +_0807B600: + .4byte _0807B614 + .4byte _0807B630 + .4byte _0807B648 + .4byte _0807B664 + .4byte _0807B67C +_0807B614: + ldr r1, [r2] + ldr r2, _0807B628 @ =0x000006c6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807B6B8 + ldr r0, _0807B62C @ =0x000006cc + adds r1, r0 + b _0807B69C + .align 2, 0 +_0807B628: .4byte 0x000006c6 +_0807B62C: .4byte 0x000006cc +_0807B630: + bl sub_807ABF4 + ldr r0, _0807B640 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B644 @ =0x000006cc + adds r1, r2 + b _0807B69C + .align 2, 0 +_0807B640: .4byte gUnknown_83C2BBC +_0807B644: .4byte 0x000006cc +_0807B648: + bl sub_807AC14 + lsls r0, 24 + cmp r0, 0 + bne _0807B6B8 + ldr r0, _0807B65C @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807B660 @ =0x000006cc + adds r1, r0 + b _0807B69C + .align 2, 0 +_0807B65C: .4byte gUnknown_83C2BBC +_0807B660: .4byte 0x000006cc +_0807B664: + bl sub_807AC60 + ldr r0, _0807B674 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B678 @ =0x000006cc + adds r1, r2 + b _0807B69C + .align 2, 0 +_0807B674: .4byte gUnknown_83C2BBC +_0807B678: .4byte 0x000006cc +_0807B67C: + bl sub_807AC98 + ldr r0, _0807B6A4 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r1, _0807B6A8 @ =0x0000073c + adds r0, r2, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x6 + bne _0807B6B8 + ldr r0, _0807B6AC @ =0x000006d2 + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _0807B6B0 @ =0x000006cc + adds r1, r2, r0 +_0807B69C: + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0807B6B8 + .align 2, 0 +_0807B6A4: .4byte gUnknown_83C2BBC +_0807B6A8: .4byte 0x0000073c +_0807B6AC: .4byte 0x000006d2 +_0807B6B0: .4byte 0x000006cc +_0807B6B4: + bl sub_807AC98 +_0807B6B8: + pop {r0} + bx r0 + thumb_func_end sub_807B5D8 + + thumb_func_start sub_807B6BC +sub_807B6BC: @ 807B6BC + movs r0, 0 + bx lr + thumb_func_end sub_807B6BC + + thumb_func_start sub_807B6C0 +sub_807B6C0: @ 807B6C0 + push {lr} + ldr r0, _0807B6D0 @ =sub_807B6D4 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0807B6D0: .4byte sub_807B6D4 + thumb_func_end sub_807B6C0 + + thumb_func_start sub_807B6D4 +sub_807B6D4: @ 807B6D4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807B6F8 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _0807B7C2 + lsls r0, 2 + ldr r1, _0807B6FC @ =_0807B700 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807B6F8: .4byte gUnknown_3005090 +_0807B6FC: .4byte _0807B700 + .align 2, 0 +_0807B700: + .4byte _0807B714 + .4byte _0807B740 + .4byte _0807B768 + .4byte _0807B798 + .4byte _0807B7B8 +_0807B714: + movs r0, 0 + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + movs r0, 0x48 + bl sub_8000AC4 + strh r0, [r4, 0xE] + ldr r1, _0807B764 @ =0x00003f3f + movs r0, 0x48 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0x9E + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0807B740: + ldrh r0, [r4, 0xA] + adds r0, 0x3 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _0807B752 + movs r0, 0x10 + strh r0, [r4, 0xA] +_0807B752: + ldrh r1, [r4, 0xA] + movs r0, 0x54 + bl sub_8000A38 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0xF + ble _0807B7C2 + b _0807B7B0 + .align 2, 0 +_0807B764: .4byte 0x00003f3f +_0807B768: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _0807B7C2 + strh r1, [r4, 0xC] + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + cmp r0, 0 + bgt _0807B78E + strh r1, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0807B78E: + ldrh r1, [r4, 0xA] + movs r0, 0x54 + bl sub_8000A38 + b _0807B7C2 +_0807B798: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x48 + bl sub_8000A38 +_0807B7B0: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0807B7C2 +_0807B7B8: + bl sub_8069B34 + adds r0, r5, 0 + bl sub_8077508 +_0807B7C2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807B6D4 + + thumb_func_start sub_807B7C8 +sub_807B7C8: @ 807B7C8 + push {r4,lr} + ldr r0, _0807B818 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B81C @ =0x000006cc + adds r0, r1, r2 + movs r3, 0 + movs r2, 0 + strh r2, [r0] + ldr r4, _0807B820 @ =0x000006d2 + adds r0, r1, r4 + strb r3, [r0] + adds r4, 0x4 + adds r0, r1, r4 + strh r2, [r0] + ldr r0, _0807B824 @ =0x000006db + adds r2, r1, r0 + movs r0, 0x8 + strb r0, [r2] + ldr r2, _0807B828 @ =0x000006dc + adds r0, r1, r2 + strb r3, [r0] + adds r4, 0x3 + adds r2, r1, r4 + movs r0, 0xA + strb r0, [r2] + ldr r0, _0807B82C @ =0x000006c1 + adds r2, r1, r0 + movs r0, 0x3 + strb r0, [r2] + ldr r2, _0807B830 @ =0x000006c2 + adds r1, r2 + movs r0, 0x14 + strb r0, [r1] + movs r0, 0x4E + bl sub_807AFA8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807B818: .4byte gUnknown_83C2BBC +_0807B81C: .4byte 0x000006cc +_0807B820: .4byte 0x000006d2 +_0807B824: .4byte 0x000006db +_0807B828: .4byte 0x000006dc +_0807B82C: .4byte 0x000006c1 +_0807B830: .4byte 0x000006c2 + thumb_func_end sub_807B7C8 + + thumb_func_start sub_807B834 +sub_807B834: @ 807B834 + push {r4,lr} + bl sub_807B7C8 + ldr r0, _0807B85C @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807B860 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807B854 + adds r4, r1, r2 +_0807B84A: + bl sub_807B864 + ldrb r0, [r4] + cmp r0, 0 + beq _0807B84A +_0807B854: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807B85C: .4byte gUnknown_83C2BBC +_0807B860: .4byte 0x000006d2 + thumb_func_end sub_807B834 + + thumb_func_start sub_807B864 +sub_807B864: @ 807B864 + push {r4,r5,lr} + ldr r0, _0807B880 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807B884 @ =0x000006cc + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807B894 + cmp r0, 0x1 + bgt _0807B888 + cmp r0, 0 + beq _0807B88E + b _0807B8B8 + .align 2, 0 +_0807B880: .4byte gUnknown_83C2BBC +_0807B884: .4byte 0x000006cc +_0807B888: + cmp r0, 0x2 + beq _0807B8A0 + b _0807B8B8 +_0807B88E: + bl sub_807BC08 + b _0807B8B2 +_0807B894: + bl sub_807BC18 + lsls r0, 24 + cmp r0, 0 + bne _0807B8B8 + b _0807B8B2 +_0807B8A0: + bl sub_807BD4C + lsls r0, 24 + cmp r0, 0 + bne _0807B8B8 + ldr r0, _0807B8C0 @ =0x000006d2 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] +_0807B8B2: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807B8B8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B8C0: .4byte 0x000006d2 + thumb_func_end sub_807B864 + + thumb_func_start sub_807B8C4 +sub_807B8C4: @ 807B8C4 + push {r4,r5,lr} + ldr r0, _0807B8E0 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r1, _0807B8E4 @ =0x000006ce + adds r3, r2, r1 + ldrh r1, [r3] + adds r4, r0, 0 + cmp r1, 0 + beq _0807B8E8 + cmp r1, 0x1 + beq _0807B91C + movs r0, 0 + b _0807B94A + .align 2, 0 +_0807B8E0: .4byte gUnknown_83C2BBC +_0807B8E4: .4byte 0x000006ce +_0807B8E8: + ldr r5, _0807B908 @ =0x000006d1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, 0x3 + beq _0807B8FA + cmp r0, 0x5 + beq _0807B8FA + cmp r0, 0xD + bne _0807B910 +_0807B8FA: + ldr r0, [r4] + ldr r1, _0807B90C @ =0x000006ce + adds r0, r1 + movs r1, 0xFF + strh r1, [r0] + movs r0, 0 + b _0807B94A + .align 2, 0 +_0807B908: .4byte 0x000006d1 +_0807B90C: .4byte 0x000006ce +_0807B910: + ldr r4, _0807B93C @ =0x000006d9 + adds r0, r2, r4 + strb r1, [r0] + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] +_0807B91C: + bl sub_807BD4C + lsls r0, 24 + cmp r0, 0 + bne _0807B948 + bl sub_807BDD8 + ldr r0, _0807B940 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r5, _0807B944 @ =0x000006ce + adds r1, r5 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0 + b _0807B94A + .align 2, 0 +_0807B93C: .4byte 0x000006d9 +_0807B940: .4byte gUnknown_83C2BBC +_0807B944: .4byte 0x000006ce +_0807B948: + movs r0, 0x1 +_0807B94A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_807B8C4 + + thumb_func_start sub_807B950 +sub_807B950: @ 807B950 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r1, 0x30 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _0807B964 + ldr r0, _0807BA08 @ =0x00000169 + strh r0, [r7, 0x30] +_0807B964: + movs r2, 0x30 + ldrsh r1, [r7, r2] + ldr r0, _0807BA0C @ =0x41c64e6d + muls r0, r1 + ldr r3, _0807BA10 @ =0x00003039 + adds r0, r3 + lsls r0, 1 + lsrs r0, 17 + movs r1, 0x96 + lsls r1, 2 + bl __umodsi3 + movs r1, 0 + mov r8, r1 + strh r0, [r7, 0x30] + ldr r1, _0807BA14 @ =gUnknown_83C66C4 + ldr r0, _0807BA18 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r2, _0807BA1C @ =0x000006dc + adds r5, r2 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldrh r6, [r0] + movs r3, 0x30 + ldrsh r0, [r7, r3] + movs r1, 0x1E + bl __modsi3 + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + lsls r0, r4, 3 + strh r0, [r7, 0x32] + movs r1, 0x30 + ldrsh r0, [r7, r1] + movs r1, 0x1E + bl __divsi3 + lsls r0, 16 + lsls r4, 7 + strh r4, [r7, 0x32] + asrs r0, 9 + strh r0, [r7, 0x34] + ldr r2, _0807BA20 @ =gUnknown_83C66BC + ldrb r1, [r5] + lsls r1, 2 + adds r1, r2 + movs r3, 0 + ldrsh r1, [r1, r3] + muls r1, r6 + subs r4, r1 + strh r4, [r7, 0x32] + ldrb r1, [r5] + lsls r1, 2 + adds r2, 0x2 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + muls r1, r6 + subs r0, r1 + strh r0, [r7, 0x34] + adds r0, r7, 0 + movs r1, 0 + bl sub_800838C + mov r3, r8 + strh r3, [r7, 0x36] + adds r2, r7, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + strh r6, [r7, 0x2E] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807BA08: .4byte 0x00000169 +_0807BA0C: .4byte 0x41c64e6d +_0807BA10: .4byte 0x00003039 +_0807BA14: .4byte gUnknown_83C66C4 +_0807BA18: .4byte gUnknown_83C2BBC +_0807BA1C: .4byte 0x000006dc +_0807BA20: .4byte gUnknown_83C66BC + thumb_func_end sub_807B950 + + thumb_func_start sub_807BA24 +sub_807BA24: @ 807BA24 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x36 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0807BB00 + ldr r3, _0807BA98 @ =gUnknown_83C66BC + ldr r4, _0807BA9C @ =gUnknown_83C2BBC + ldr r2, [r4] + ldr r0, _0807BAA0 @ =0x000006dc + adds r2, r0 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0] + ldrh r0, [r5, 0x32] + adds r1, r0 + strh r1, [r5, 0x32] + ldrb r0, [r2] + lsls r0, 2 + adds r3, 0x2 + adds r0, r3 + ldrh r0, [r0] + ldrh r2, [r5, 0x34] + adds r0, r2 + strh r0, [r5, 0x34] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x20] + lsls r0, 16 + asrs r2, r0, 20 + strh r2, [r5, 0x22] + movs r3, 0x38 + ldrsh r0, [r5, r3] + adds r3, r4, 0 + cmp r0, 0 + beq _0807BAA4 + adds r0, r1, 0 + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _0807BAA4 + adds r1, r2, 0 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + blt _0807BAA4 + cmp r1, 0xB0 + bgt _0807BAA4 + adds r0, r5, 0 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + b _0807BAAE + .align 2, 0 +_0807BA98: .4byte gUnknown_83C66BC +_0807BA9C: .4byte gUnknown_83C2BBC +_0807BAA0: .4byte 0x000006dc +_0807BAA4: + adds r0, r5, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 +_0807BAAE: + strb r1, [r0] + adds r4, r0, 0 + ldrh r0, [r5, 0x2E] + subs r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _0807BB20 + ldr r0, [r3] + ldr r1, _0807BAF4 @ =0x000006dc + adds r0, r1 + ldrb r1, [r0] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C + movs r0, 0x1 + strh r0, [r5, 0x36] + ldr r1, _0807BAF8 @ =gUnknown_2021BC8 + ldrh r0, [r5, 0x20] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r5, 0x20] + ldr r1, _0807BAFC @ =gUnknown_2021BCA + ldrh r0, [r5, 0x22] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + b _0807BB20 + .align 2, 0 +_0807BAF4: .4byte 0x000006dc +_0807BAF8: .4byte gUnknown_2021BC8 +_0807BAFC: .4byte gUnknown_2021BCA +_0807BB00: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0807BB20 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, 0 + bl sub_807B950 +_0807BB20: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807BA24 + + thumb_func_start sub_807BB28 +sub_807BB28: @ 807BB28 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0807BB48 + adds r0, r4, 0 + bl sub_807B950 + ldr r0, _0807BB44 @ =sub_807BA24 + str r0, [r4, 0x1C] + b _0807BB4C + .align 2, 0 +_0807BB44: .4byte sub_807BA24 +_0807BB48: + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] +_0807BB4C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807BB28 + + thumb_func_start sub_807BB54 +sub_807BB54: @ 807BB54 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + lsls r5, r1, 16 + lsrs r5, 16 + ldr r2, _0807BBD8 @ =gUnknown_83C66C4 + ldr r0, _0807BBDC @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807BBE0 @ =0x000006dc + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r1, r0, r2 + ldrh r1, [r1] + mov r8, r1 + adds r2, 0x2 + adds r0, r2 + ldrh r4, [r0] + add r4, r8 + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl __modsi3 + lsls r0, 16 + lsrs r4, r0, 16 + subs r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _0807BBE4 @ =0x0000ffff + cmp r6, r0 + beq _0807BBB2 + adds r5, r0, 0 +_0807BBA2: + adds r0, r7, 0 + bl sub_807B950 + subs r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r5 + bne _0807BBA2 +_0807BBB2: + cmp r4, r8 + bcs _0807BBE8 + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _0807BBE4 @ =0x0000ffff + cmp r4, r0 + beq _0807BBD4 + adds r5, r0, 0 +_0807BBC4: + adds r0, r7, 0 + bl sub_807BA24 + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r5 + bne _0807BBC4 +_0807BBD4: + movs r0, 0 + b _0807BBFC + .align 2, 0 +_0807BBD8: .4byte gUnknown_83C66C4 +_0807BBDC: .4byte gUnknown_83C2BBC +_0807BBE0: .4byte 0x000006dc +_0807BBE4: .4byte 0x0000ffff +_0807BBE8: + mov r1, r8 + subs r0, r4, r1 + strh r0, [r7, 0x2E] + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_0807BBFC: + strh r0, [r7, 0x3A] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807BB54 + + thumb_func_start sub_807BC08 +sub_807BC08: @ 807BC08 + push {lr} + ldr r0, _0807BC14 @ =gUnknown_83C66CC + bl sub_80086DC + pop {r0} + bx r0 + .align 2, 0 +_0807BC14: .4byte gUnknown_83C66CC + thumb_func_end sub_807BC08 + + thumb_func_start sub_807BC18 +sub_807BC18: @ 807BC18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _0807BCC4 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r0, _0807BCC8 @ =0x000006da + adds r2, r4, r0 + ldrb r0, [r2] + cmp r0, 0x18 + bne _0807BC32 + b _0807BD38 +_0807BC32: + ldrb r7, [r2] + ldr r0, _0807BCCC @ =gUnknown_83C66A4 + ldr r2, _0807BCD0 @ =gUnknown_83C6608 + lsls r6, r7, 2 + adds r2, r6, r2 + movs r3, 0 + ldrsh r1, [r2, r3] + movs r3, 0x2 + ldrsh r2, [r2, r3] + movs r3, 0x4E + bl sub_8006FE0 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0807BCE0 + ldr r3, _0807BCD4 @ =gUnknown_202063C + lsls r4, r5, 4 + adds r1, r4, r5 + lsls r1, 2 + adds r1, r3 + movs r0, 0 + strh r0, [r1, 0x38] + lsls r2, r7, 3 + adds r0, r2, r7 + lsls r0, 4 + adds r0, r7 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + ldr r1, _0807BCD8 @ =0x00000257 + mov r10, r6 + mov r9, r3 + mov r12, r4 + mov r8, r2 + cmp r0, r1 + ble _0807BC96 + adds r2, r1, 0 +_0807BC7E: + adds r0, r4, r5 + lsls r0, 2 + ldr r6, _0807BCD4 @ =gUnknown_202063C + adds r0, r6 + ldr r3, _0807BCDC @ =0xfffffda8 + ldrh r6, [r0, 0x30] + adds r1, r3, r6 + strh r1, [r0, 0x30] + lsls r1, 16 + asrs r1, 16 + cmp r1, r2 + bgt _0807BC7E +_0807BC96: + mov r0, r12 + adds r4, r0, r5 + lsls r4, 2 + add r4, r9 + adds r0, r4, 0 + bl sub_807B950 + mov r3, r8 + adds r1, r3, r7 + adds r0, r4, 0 + bl sub_807BB54 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0807BCC4 @ =gUnknown_83C2BBC + ldr r0, [r0] + add r0, r10 + str r4, [r0] + b _0807BCE6 + .align 2, 0 +_0807BCC4: .4byte gUnknown_83C2BBC +_0807BCC8: .4byte 0x000006da +_0807BCCC: .4byte gUnknown_83C66A4 +_0807BCD0: .4byte gUnknown_83C6608 +_0807BCD4: .4byte gUnknown_202063C +_0807BCD8: .4byte 0x00000257 +_0807BCDC: .4byte 0xfffffda8 +_0807BCE0: + adds r1, r4, r6 + movs r0, 0 + str r0, [r1] +_0807BCE6: + ldr r0, _0807BD1C @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r6, _0807BD20 @ =0x000006da + adds r1, r2, r6 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x18 + bne _0807BD3C + movs r3, 0 + adds r1, r2, 0 + ldr r5, _0807BD24 @ =sub_807BA24 + ldr r4, _0807BD28 @ =sub_807BB28 +_0807BD04: + lsls r0, r3, 2 + adds r0, r1, r0 + ldr r2, [r0] + cmp r2, 0 + beq _0807BD2E + movs r6, 0x3A + ldrsh r0, [r2, r6] + cmp r0, 0 + bne _0807BD2C + str r5, [r2, 0x1C] + b _0807BD2E + .align 2, 0 +_0807BD1C: .4byte gUnknown_83C2BBC +_0807BD20: .4byte 0x000006da +_0807BD24: .4byte sub_807BA24 +_0807BD28: .4byte sub_807BB28 +_0807BD2C: + str r4, [r2, 0x1C] +_0807BD2E: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x17 + bls _0807BD04 +_0807BD38: + movs r0, 0 + b _0807BD3E +_0807BD3C: + movs r0, 0x1 +_0807BD3E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_807BC18 + + thumb_func_start sub_807BD4C +sub_807BD4C: @ 807BD4C + push {r4-r7,lr} + ldr r0, _0807BD68 @ =gUnknown_83C2BBC + ldr r3, [r0] + movs r0, 0xDB + lsls r0, 3 + adds r4, r3, r0 + ldr r1, _0807BD6C @ =0x000006d9 + adds r5, r3, r1 + ldrb r0, [r4] + ldrb r7, [r5] + cmp r0, r7 + bne _0807BD70 + movs r0, 0 + b _0807BDD2 + .align 2, 0 +_0807BD68: .4byte gUnknown_83C2BBC +_0807BD6C: .4byte 0x000006d9 +_0807BD70: + ldr r0, _0807BDA8 @ =0x000006d6 + adds r2, r3, r0 + ldrh r0, [r2] + adds r0, 0x1 + movs r6, 0 + strh r0, [r2] + ldr r7, _0807BDAC @ =0x000006db + adds r1, r3, r7 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1] + cmp r0, r1 + bls _0807BDD0 + strh r6, [r2] + ldrb r0, [r4] + adds r1, r0, 0 + ldrb r5, [r5] + cmp r1, r5 + bcs _0807BDB0 + adds r0, 0x1 + strb r0, [r4] + lsls r0, r1, 2 + adds r0, r3, r0 + ldr r1, [r0] + movs r0, 0x1 + strh r0, [r1, 0x38] + b _0807BDD0 + .align 2, 0 +_0807BDA8: .4byte 0x000006d6 +_0807BDAC: .4byte 0x000006db +_0807BDB0: + subs r0, 0x1 + strb r0, [r4] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r3, r0 + ldr r0, [r0] + strh r6, [r0, 0x38] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r3, r0 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] +_0807BDD0: + movs r0, 0x1 +_0807BDD2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_807BD4C + + thumb_func_start sub_807BDD8 +sub_807BDD8: @ 807BDD8 + push {r4-r7,lr} + movs r4, 0 + ldr r0, _0807BE20 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r3, _0807BE24 @ =0x000006da + adds r1, r2, r3 + adds r7, r0, 0 + ldrb r1, [r1] + cmp r4, r1 + bcs _0807BE0A + adds r5, r2, 0 + adds r6, r5, r3 +_0807BDF0: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807BDFE + bl sub_8007280 +_0807BDFE: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldrb r0, [r6] + cmp r4, r0 + bcc _0807BDF0 +_0807BE0A: + ldr r0, [r7] + ldr r1, _0807BE24 @ =0x000006da + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, _0807BE28 @ =0x00001206 + bl sub_800874C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807BE20: .4byte gUnknown_83C2BBC +_0807BE24: .4byte 0x000006da +_0807BE28: .4byte 0x00001206 + thumb_func_end sub_807BDD8 + + thumb_func_start sub_807BE2C +sub_807BE2C: @ 807BE2C + push {r4,lr} + ldr r0, _0807BE68 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807BE6C @ =0x000006cc + adds r0, r1, r2 + movs r2, 0 + movs r3, 0 + strh r3, [r0] + ldr r4, _0807BE70 @ =0x000006d2 + adds r0, r1, r4 + strb r2, [r0] + ldr r0, _0807BE74 @ =0x000006c1 + adds r2, r1, r0 + movs r0, 0x3 + strb r0, [r2] + subs r4, 0x10 + adds r2, r1, r4 + movs r0, 0x14 + strb r0, [r2] + ldr r0, _0807BE78 @ =0x000006e5 + adds r2, r1, r0 + movs r0, 0x10 + strb r0, [r2] + movs r2, 0xDC + lsls r2, 3 + adds r1, r2 + strh r3, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807BE68: .4byte gUnknown_83C2BBC +_0807BE6C: .4byte 0x000006cc +_0807BE70: .4byte 0x000006d2 +_0807BE74: .4byte 0x000006c1 +_0807BE78: .4byte 0x000006e5 + thumb_func_end sub_807BE2C + + thumb_func_start sub_807BE7C +sub_807BE7C: @ 807BE7C + push {r4-r7,lr} + mov r7, r8 + push {r7} + bl sub_807BE2C + ldr r2, _0807BEDC @ =gUnknown_83C2BBC + ldr r1, [r2] + ldr r3, _0807BEE0 @ =0x000006d2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _0807BED2 + mov r8, r2 + adds r7, r1, r3 +_0807BE98: + bl sub_807BEE8 + movs r4, 0 + mov r1, r8 + ldr r0, [r1] + ldr r3, _0807BEE4 @ =0x000006e4 + adds r0, r3 + ldrb r0, [r0] + cmp r4, r0 + bcs _0807BECC + ldr r0, _0807BEDC @ =gUnknown_83C2BBC + ldr r5, [r0] + adds r6, r5, r3 +_0807BEB2: + lsls r1, r4, 2 + adds r0, r5, 0 + adds r0, 0x60 + adds r0, r1 + ldr r0, [r0] + bl sub_807C1AC + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldrb r0, [r6] + cmp r4, r0 + bcc _0807BEB2 +_0807BECC: + ldrb r0, [r7] + cmp r0, 0 + beq _0807BE98 +_0807BED2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807BEDC: .4byte gUnknown_83C2BBC +_0807BEE0: .4byte 0x000006d2 +_0807BEE4: .4byte 0x000006e4 + thumb_func_end sub_807BE7C + + thumb_func_start sub_807BEE8 +sub_807BEE8: @ 807BEE8 + push {r4,r5,lr} + ldr r0, _0807BF18 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807BF1C @ =0x000006cc + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, 0 + bne _0807BF10 + bl sub_807BF88 + lsls r0, 24 + cmp r0, 0 + bne _0807BF10 + ldr r0, _0807BF20 @ =0x000006d2 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807BF10: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807BF18: .4byte gUnknown_83C2BBC +_0807BF1C: .4byte 0x000006cc +_0807BF20: .4byte 0x000006d2 + thumb_func_end sub_807BEE8 + + thumb_func_start sub_807BF24 +sub_807BF24: @ 807BF24 + push {r4,lr} + ldr r0, _0807BF3C @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r0, _0807BF40 @ =0x000006ce + adds r3, r2, r0 + ldrh r1, [r3] + cmp r1, 0 + beq _0807BF44 + cmp r1, 0x1 + beq _0807BF56 + movs r0, 0 + b _0807BF82 + .align 2, 0 +_0807BF3C: .4byte gUnknown_83C2BBC +_0807BF40: .4byte 0x000006ce +_0807BF44: + ldr r4, _0807BF74 @ =0x000006e5 + adds r0, r2, r4 + strb r1, [r0] + subs r4, 0x5 + adds r0, r2, r4 + strh r1, [r0] + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] +_0807BF56: + bl sub_807BF88 + lsls r0, 24 + cmp r0, 0 + bne _0807BF80 + ldr r0, _0807BF78 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807BF7C @ =0x000006ce + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0 + b _0807BF82 + .align 2, 0 +_0807BF74: .4byte 0x000006e5 +_0807BF78: .4byte gUnknown_83C2BBC +_0807BF7C: .4byte 0x000006ce +_0807BF80: + movs r0, 0x1 +_0807BF82: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807BF24 + + thumb_func_start sub_807BF88 +sub_807BF88: @ 807BF88 + push {r4,lr} + ldr r0, _0807BFA4 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807BFA8 @ =0x000006e4 + adds r3, r1, r0 + ldr r4, _0807BFAC @ =0x000006e5 + adds r2, r1, r4 + ldrb r0, [r3] + ldrb r4, [r2] + cmp r0, r4 + bne _0807BFB0 + movs r0, 0 + b _0807BFF2 + .align 2, 0 +_0807BFA4: .4byte gUnknown_83C2BBC +_0807BFA8: .4byte 0x000006e4 +_0807BFAC: .4byte 0x000006e5 +_0807BFB0: + movs r0, 0xDC + lsls r0, 3 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x24 + bls _0807BFDA + movs r0, 0 + strh r0, [r1] + ldrb r0, [r3] + ldrb r2, [r2] + cmp r0, r2 + bcs _0807BFD6 + bl sub_807C004 + b _0807BFDA +_0807BFD6: + bl sub_807C070 +_0807BFDA: + ldr r0, _0807BFF8 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r2, _0807BFFC @ =0x000006e4 + adds r1, r0, r2 + ldr r4, _0807C000 @ =0x000006e5 + adds r0, r4 + ldrb r1, [r1] + ldrb r0, [r0] + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_0807BFF2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0807BFF8: .4byte gUnknown_83C2BBC +_0807BFFC: .4byte 0x000006e4 +_0807C000: .4byte 0x000006e5 + thumb_func_end sub_807BF88 + + thumb_func_start sub_807C004 +sub_807C004: @ 807C004 + push {r4-r6,lr} + ldr r0, _0807C058 @ =gUnknown_83C6704 + movs r1, 0 + movs r2, 0 + movs r3, 0x4E + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0807C068 + ldr r0, _0807C05C @ =gUnknown_202063C + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r0 + ldr r0, _0807C060 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807C064 @ =0x000006e4 + adds r6, r5, r0 + ldrb r0, [r6] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_807C0A4 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + adds r1, r0, 0x1 + strb r1, [r6] + lsls r0, 24 + lsrs r0, 22 + adds r5, 0x60 + adds r5, r0 + str r4, [r5] + movs r0, 0x1 + b _0807C06A + .align 2, 0 +_0807C058: .4byte gUnknown_83C6704 +_0807C05C: .4byte gUnknown_202063C +_0807C060: .4byte gUnknown_83C2BBC +_0807C064: .4byte 0x000006e4 +_0807C068: + movs r0, 0 +_0807C06A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807C004 + + thumb_func_start sub_807C070 +sub_807C070: @ 807C070 + push {lr} + ldr r0, _0807C084 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807C088 @ =0x000006e4 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0 + bne _0807C08C + movs r0, 0 + b _0807C0A0 + .align 2, 0 +_0807C084: .4byte gUnknown_83C2BBC +_0807C088: .4byte 0x000006e4 +_0807C08C: + subs r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 22 + adds r1, 0x60 + adds r1, r0 + ldr r0, [r1] + bl sub_8007280 + movs r0, 0x1 +_0807C0A0: + pop {r1} + bx r1 + thumb_func_end sub_807C070 + + thumb_func_start sub_807C0A4 +sub_807C0A4: @ 807C0A4 + push {r4-r7,lr} + adds r5, r0, 0 + bl sub_8044EC8 + movs r1, 0x36 + ldrsh r2, [r5, r1] + lsls r1, r2, 2 + adds r1, r2 + movs r2, 0x7 + ands r1, r2 + lsls r4, r1, 4 + subs r4, r1 + lsls r4, 1 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1E + bl __umodsi3 + adds r4, r0 + lsls r4, 16 + lsrs r4, 16 + ldr r1, _0807C148 @ =gUnknown_2021BCA + adds r0, r5, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r1] + adds r0, r1 + movs r2, 0x3 + negs r2, r2 + adds r1, r2, 0 + subs r1, r0 + movs r7, 0 + strh r1, [r5, 0x22] + ldr r1, _0807C14C @ =gUnknown_2021BC8 + adds r0, r5, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r1] + adds r0, r1 + subs r4, r0 + strh r4, [r5, 0x20] + movs r1, 0x22 + ldrsh r0, [r5, r1] + lsls r0, 7 + strh r0, [r5, 0x2E] + strh r7, [r5, 0x24] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r6, r0, 0 + movs r4, 0x3 + ands r4, r6 + lsls r0, r4, 2 + adds r0, r4 + adds r0, 0x40 + strh r0, [r5, 0x30] + strh r0, [r5, 0x3C] + movs r1, 0x1 + bics r1, r6 + adds r0, r5, 0 + bl sub_800838C + strh r7, [r5, 0x34] + movs r0, 0x1 + cmp r4, 0 + bne _0807C134 + movs r0, 0x2 +_0807C134: + strh r0, [r5, 0x32] + movs r0, 0x1F + ands r0, r6 + adds r0, 0xD2 + strh r0, [r5, 0x3A] + strh r7, [r5, 0x38] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807C148: .4byte gUnknown_2021BCA +_0807C14C: .4byte gUnknown_2021BC8 + thumb_func_end sub_807C0A4 + + thumb_func_start sub_807C150 +sub_807C150: @ 807C150 + push {r4,lr} + adds r3, r0, 0 + ldr r0, _0807C19C @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807C1A0 @ =0x000006e2 + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, 0x12 + bls _0807C196 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _0807C1A4 @ =sub_807C1AC + str r0, [r3, 0x1C] + ldr r1, _0807C1A8 @ =gUnknown_2021BCA + adds r0, r3, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r1] + adds r0, r1 + movs r1, 0xFA + subs r1, r0 + movs r2, 0 + strh r1, [r3, 0x22] + movs r1, 0x22 + ldrsh r0, [r3, r1] + lsls r0, 7 + strh r0, [r3, 0x2E] + strh r2, [r4] +_0807C196: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807C19C: .4byte gUnknown_83C2BBC +_0807C1A0: .4byte 0x000006e2 +_0807C1A4: .4byte sub_807C1AC +_0807C1A8: .4byte gUnknown_2021BCA + thumb_func_end sub_807C150 + + thumb_func_start sub_807C1AC +sub_807C1AC: @ 807C1AC + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + adds r0, r1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 23 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x34] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + ldr r1, _0807C224 @ =gUnknown_825E074 + movs r3, 0x34 + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _0807C1DE + adds r0, 0x3F +_0807C1DE: + asrs r0, 6 + strh r0, [r4, 0x24] + adds r0, r4, 0 + adds r0, 0x28 + movs r5, 0 + ldrsb r5, [r0, r5] + ldrh r0, [r4, 0x20] + adds r0, r5 + ldr r1, _0807C228 @ =gUnknown_2021BC8 + ldrh r1, [r1] + adds r3, r1, r0 + ldr r2, _0807C22C @ =0x000001ff + adds r0, r2, 0 + ands r3, r0 + adds r2, r3, 0 + movs r0, 0x80 + lsls r0, 1 + ands r0, r2 + cmp r0, 0 + beq _0807C210 + ldr r3, _0807C230 @ =0xffffff00 + adds r0, r3, 0 + orrs r2, r0 + lsls r0, r2, 16 + lsrs r3, r0, 16 +_0807C210: + lsls r0, r3, 16 + asrs r0, 16 + movs r2, 0x3 + negs r2, r2 + cmp r0, r2 + bge _0807C234 + adds r1, r5 + movs r0, 0xF2 + subs r0, r1 + b _0807C23C + .align 2, 0 +_0807C224: .4byte gUnknown_825E074 +_0807C228: .4byte gUnknown_2021BC8 +_0807C22C: .4byte 0x000001ff +_0807C230: .4byte 0xffffff00 +_0807C234: + cmp r0, 0xF2 + ble _0807C23E + adds r0, r1, r5 + subs r0, r2, r0 +_0807C23C: + strh r0, [r4, 0x20] +_0807C23E: + adds r0, r4, 0 + adds r0, 0x29 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, 0x22] + adds r0, r3 + ldr r1, _0807C27C @ =gUnknown_2021BCA + ldrh r1, [r1] + adds r2, r1, r0 + movs r0, 0xFF + ands r2, r0 + adds r0, r2, 0 + subs r0, 0xA4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x6 + bhi _0807C280 + adds r1, r3 + movs r0, 0xFA + subs r0, r1 + movs r1, 0 + strh r0, [r4, 0x22] + movs r2, 0x22 + ldrsh r0, [r4, r2] + lsls r0, 7 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x38] + movs r0, 0xDC + strh r0, [r4, 0x3A] + b _0807C2AC + .align 2, 0 +_0807C27C: .4byte gUnknown_2021BCA +_0807C280: + adds r0, r2, 0 + subs r0, 0xF3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x6 + bhi _0807C2AC + movs r1, 0 + movs r0, 0xA3 + strh r0, [r4, 0x22] + lsls r0, 7 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x38] + movs r0, 0xDC + strh r0, [r4, 0x3A] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0807C2E0 @ =sub_807C150 + str r0, [r4, 0x1C] +_0807C2AC: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x3A + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _0807C2D8 + adds r0, r4, 0 + bl sub_807C0A4 + movs r0, 0xFA + strh r0, [r4, 0x22] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0807C2E0 @ =sub_807C150 + str r0, [r4, 0x1C] +_0807C2D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807C2E0: .4byte sub_807C150 + thumb_func_end sub_807C1AC + + thumb_func_start sub_807C2E4 +sub_807C2E4: @ 807C2E4 + push {r4,r5,lr} + ldr r0, _0807C33C @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C340 @ =0x000006cc + adds r0, r1, r2 + movs r3, 0 + movs r2, 0 + strh r2, [r0] + ldr r5, _0807C344 @ =0x000006d2 + adds r4, r1, r5 + strb r3, [r4] + adds r5, 0x4 + adds r0, r1, r5 + strh r2, [r0] + ldr r0, _0807C348 @ =0x000006db + adds r2, r1, r0 + movs r0, 0x4 + strb r0, [r2] + ldr r2, _0807C34C @ =0x000006dc + adds r0, r1, r2 + strb r3, [r0] + adds r5, 0x3 + adds r2, r1, r5 + movs r0, 0x10 + strb r0, [r2] + ldr r0, _0807C350 @ =0x000006c1 + adds r2, r1, r0 + movs r0, 0x3 + strb r0, [r2] + subs r5, 0x17 + adds r2, r1, r5 + movs r0, 0x14 + strb r0, [r2] + strb r3, [r4] + ldr r0, _0807C354 @ =0x000006ed + adds r1, r0 + strb r3, [r1] + movs r0, 0x4A + bl sub_807AFA8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807C33C: .4byte gUnknown_83C2BBC +_0807C340: .4byte 0x000006cc +_0807C344: .4byte 0x000006d2 +_0807C348: .4byte 0x000006db +_0807C34C: .4byte 0x000006dc +_0807C350: .4byte 0x000006c1 +_0807C354: .4byte 0x000006ed + thumb_func_end sub_807C2E4 + + thumb_func_start sub_807C358 +sub_807C358: @ 807C358 + push {r4,lr} + bl sub_807C2E4 + ldr r0, _0807C380 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C384 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C378 + adds r4, r1, r2 +_0807C36E: + bl sub_807C424 + ldrb r0, [r4] + cmp r0, 0 + beq _0807C36E +_0807C378: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807C380: .4byte gUnknown_83C2BBC +_0807C384: .4byte 0x000006d2 + thumb_func_end sub_807C358 + + thumb_func_start sub_807C388 +sub_807C388: @ 807C388 + push {r4,r5,lr} + ldr r0, _0807C3DC @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C3E0 @ =0x000006cc + adds r0, r1, r2 + movs r4, 0 + movs r2, 0 + strh r2, [r0] + ldr r5, _0807C3E4 @ =0x000006d2 + adds r3, r1, r5 + strb r4, [r3] + adds r5, 0x4 + adds r0, r1, r5 + strh r2, [r0] + ldr r0, _0807C3E8 @ =0x000006db + adds r2, r1, r0 + movs r0, 0x4 + strb r0, [r2] + adds r5, 0x6 + adds r2, r1, r5 + movs r0, 0x1 + strb r0, [r2] + ldr r0, _0807C3EC @ =0x000006d9 + adds r2, r1, r0 + movs r0, 0x18 + strb r0, [r2] + subs r5, 0x1B + adds r2, r1, r5 + movs r0, 0x3 + strb r0, [r2] + ldr r0, _0807C3F0 @ =0x000006c2 + adds r1, r0 + movs r0, 0x14 + strb r0, [r1] + strb r4, [r3] + movs r0, 0x4C + bl sub_807AFA8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807C3DC: .4byte gUnknown_83C2BBC +_0807C3E0: .4byte 0x000006cc +_0807C3E4: .4byte 0x000006d2 +_0807C3E8: .4byte 0x000006db +_0807C3EC: .4byte 0x000006d9 +_0807C3F0: .4byte 0x000006c2 + thumb_func_end sub_807C388 + + thumb_func_start sub_807C3F4 +sub_807C3F4: @ 807C3F4 + push {r4,lr} + bl sub_807C388 + ldr r0, _0807C41C @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C420 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C414 + adds r4, r1, r2 +_0807C40A: + bl sub_807C424 + ldrb r0, [r4] + cmp r0, 0 + beq _0807C40A +_0807C414: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807C41C: .4byte gUnknown_83C2BBC +_0807C420: .4byte 0x000006d2 + thumb_func_end sub_807C3F4 + + thumb_func_start sub_807C424 +sub_807C424: @ 807C424 + push {r4,r5,lr} + bl sub_807C898 + ldr r0, _0807C444 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807C448 @ =0x000006cc + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0xE + bls _0807C43A + b _0807C79A +_0807C43A: + lsls r0, 2 + ldr r1, _0807C44C @ =_0807C450 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807C444: .4byte gUnknown_83C2BBC +_0807C448: .4byte 0x000006cc +_0807C44C: .4byte _0807C450 + .align 2, 0 +_0807C450: + .4byte _0807C48C + .4byte _0807C4A8 + .4byte _0807C4CC + .4byte _0807C4FC + .4byte _0807C520 + .4byte _0807C550 + .4byte _0807C580 + .4byte _0807C5AC + .4byte _0807C5CA + .4byte _0807C628 + .4byte _0807C6AC + .4byte _0807C6D4 + .4byte _0807C704 + .4byte _0807C748 + .4byte _0807C77C +_0807C48C: + bl sub_807BC08 + ldr r0, _0807C4A0 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C4A4 @ =0x000006cc + adds r1, r2 + ldrh r0, [r1] + adds r0, 0x1 + b _0807C798 + .align 2, 0 +_0807C4A0: .4byte gUnknown_83C2BBC +_0807C4A4: .4byte 0x000006cc +_0807C4A8: + bl sub_807BC18 + lsls r0, 24 + cmp r0, 0 + beq _0807C4B4 + b _0807C79A +_0807C4B4: + ldr r0, _0807C4C4 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r3, _0807C4C8 @ =0x000006cc + adds r1, r3 + ldrh r0, [r1] + adds r0, 0x1 + b _0807C798 + .align 2, 0 +_0807C4C4: .4byte gUnknown_83C2BBC +_0807C4C8: .4byte 0x000006cc +_0807C4CC: + bl sub_807BD4C + lsls r0, 24 + cmp r0, 0 + beq _0807C4D8 + b _0807C79A +_0807C4D8: + ldr r0, _0807C4F0 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807C4F4 @ =0x000006d2 + adds r2, r1, r0 + movs r0, 0x1 + strb r0, [r2] + ldr r2, _0807C4F8 @ =0x000006cc + adds r1, r2 + ldrh r0, [r1] + adds r0, 0x1 + b _0807C798 + .align 2, 0 +_0807C4F0: .4byte gUnknown_83C2BBC +_0807C4F4: .4byte 0x000006d2 +_0807C4F8: .4byte 0x000006cc +_0807C4FC: + ldr r0, _0807C514 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r3, _0807C518 @ =0x000006c6 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C50C + b _0807C79A +_0807C50C: + ldr r0, _0807C51C @ =0x000006cc + adds r1, r0 + movs r0, 0x6 + b _0807C798 + .align 2, 0 +_0807C514: .4byte gUnknown_83C2BBC +_0807C518: .4byte 0x000006c6 +_0807C51C: .4byte 0x000006cc +_0807C520: + ldr r0, _0807C570 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r2, _0807C574 @ =0x000006ea + adds r1, r4, r2 + movs r0, 0x1 + strb r0, [r1] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r5, 0xB4 + lsls r5, 1 + adds r1, r5, 0 + bl __umodsi3 + adds r0, r5 + ldr r3, _0807C578 @ =0x000006e6 + adds r1, r4, r3 + strh r0, [r1] + ldr r0, _0807C57C @ =0x000006cc + adds r4, r0 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807C550: + ldr r0, _0807C570 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r3, _0807C578 @ =0x000006e6 + adds r1, r2, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _0807C566 + b _0807C79A +_0807C566: + ldr r0, _0807C57C @ =0x000006cc + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, 0x1 + b _0807C798 + .align 2, 0 +_0807C570: .4byte gUnknown_83C2BBC +_0807C574: .4byte 0x000006ea +_0807C578: .4byte 0x000006e6 +_0807C57C: .4byte 0x000006cc +_0807C580: + ldr r0, _0807C5A0 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r1, _0807C5A4 @ =0x000006ea + adds r0, r4, r1 + movs r5, 0x1 + strb r5, [r0] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + ands r0, r5 + ldr r2, _0807C5A8 @ =0x000006eb + adds r1, r4, r2 + strb r0, [r1] + b _0807C608 + .align 2, 0 +_0807C5A0: .4byte gUnknown_83C2BBC +_0807C5A4: .4byte 0x000006ea +_0807C5A8: .4byte 0x000006eb +_0807C5AC: + bl sub_8044EC8 + ldr r1, _0807C614 @ =gUnknown_83C2BBC + ldr r2, [r1] + movs r1, 0x1 + ands r1, r0 + adds r1, 0x1 + ldr r3, _0807C618 @ =0x000006ec + adds r0, r2, r3 + strb r1, [r0] + ldr r0, _0807C61C @ =0x000006cc + adds r2, r0 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] +_0807C5CA: + movs r0, 0x13 + bl sub_807A790 + ldr r0, _0807C614 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C620 @ =0x000006eb + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C5EE + ldr r3, _0807C618 @ =0x000006ec + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0807C5EE + movs r0, 0x14 + bl sub_807C85C +_0807C5EE: + bl sub_8044EC8 + ldr r1, _0807C614 @ =gUnknown_83C2BBC + ldr r4, [r1] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + adds r0, 0x6 + ldr r2, _0807C624 @ =0x000006e6 + adds r1, r4, r2 + strh r0, [r1] +_0807C608: + ldr r3, _0807C61C @ =0x000006cc + adds r4, r3 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807C79A + .align 2, 0 +_0807C614: .4byte gUnknown_83C2BBC +_0807C618: .4byte 0x000006ec +_0807C61C: .4byte 0x000006cc +_0807C620: .4byte 0x000006eb +_0807C624: .4byte 0x000006e6 +_0807C628: + ldr r0, _0807C674 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r0, _0807C678 @ =0x000006e6 + adds r5, r4, r0 + ldrh r0, [r5] + subs r0, 0x1 + strh r0, [r5] + lsls r0, 16 + cmp r0, 0 + beq _0807C63E + b _0807C79A +_0807C63E: + movs r0, 0x3 + bl sub_807A790 + ldr r2, _0807C67C @ =0x000006ea + adds r1, r4, r2 + movs r0, 0x1 + strb r0, [r1] + ldr r3, _0807C680 @ =0x000006ec + adds r1, r4, r3 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + beq _0807C688 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + adds r0, 0x3C + strh r0, [r5] + ldr r0, _0807C684 @ =0x000006cc + adds r1, r4, r0 + movs r0, 0xA + b _0807C798 + .align 2, 0 +_0807C674: .4byte gUnknown_83C2BBC +_0807C678: .4byte 0x000006e6 +_0807C67C: .4byte 0x000006ea +_0807C680: .4byte 0x000006ec +_0807C684: .4byte 0x000006cc +_0807C688: + ldr r1, _0807C698 @ =0x000006eb + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C6A0 + ldr r2, _0807C69C @ =0x000006cc + adds r1, r4, r2 + b _0807C796 + .align 2, 0 +_0807C698: .4byte 0x000006eb +_0807C69C: .4byte 0x000006cc +_0807C6A0: + ldr r3, _0807C6A8 @ =0x000006cc + adds r1, r4, r3 + movs r0, 0xB + b _0807C798 + .align 2, 0 +_0807C6A8: .4byte 0x000006cc +_0807C6AC: + ldr r0, _0807C6C8 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r0, _0807C6CC @ =0x000006e6 + adds r1, r2, r0 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _0807C79A + ldr r3, _0807C6D0 @ =0x000006cc + adds r1, r2, r3 + movs r0, 0x8 + b _0807C798 + .align 2, 0 +_0807C6C8: .4byte gUnknown_83C2BBC +_0807C6CC: .4byte 0x000006e6 +_0807C6D0: .4byte 0x000006cc +_0807C6D4: + bl sub_8044EC8 + ldr r1, _0807C6F8 @ =gUnknown_83C2BBC + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + adds r0, 0x3C + ldr r3, _0807C6FC @ =0x000006e6 + adds r1, r2, r3 + strh r0, [r1] + ldr r0, _0807C700 @ =0x000006cc + adds r2, r0 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + b _0807C79A + .align 2, 0 +_0807C6F8: .4byte gUnknown_83C2BBC +_0807C6FC: .4byte 0x000006e6 +_0807C700: .4byte 0x000006cc +_0807C704: + ldr r0, _0807C73C @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r1, _0807C740 @ =0x000006e6 + adds r4, r5, r1 + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + bne _0807C79A + movs r0, 0x64 + bl sub_807C85C + movs r0, 0x13 + bl sub_807A790 + bl sub_8044EC8 + movs r1, 0xF + ands r1, r0 + adds r1, 0x1E + strh r1, [r4] + ldr r2, _0807C744 @ =0x000006cc + adds r1, r5, r2 + ldrh r0, [r1] + adds r0, 0x1 + b _0807C798 + .align 2, 0 +_0807C73C: .4byte gUnknown_83C2BBC +_0807C740: .4byte 0x000006e6 +_0807C744: .4byte 0x000006cc +_0807C748: + ldr r0, _0807C770 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r3, _0807C774 @ =0x000006e6 + adds r1, r4, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _0807C79A + movs r0, 0x13 + movs r1, 0x3 + movs r2, 0x5 + bl sub_807A7C4 + ldr r0, _0807C778 @ =0x000006cc + adds r1, r4, r0 + ldrh r0, [r1] + adds r0, 0x1 + b _0807C798 + .align 2, 0 +_0807C770: .4byte gUnknown_83C2BBC +_0807C774: .4byte 0x000006e6 +_0807C778: .4byte 0x000006cc +_0807C77C: + ldr r0, _0807C7A0 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r1, _0807C7A4 @ =0x000006c6 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0807C79A + ldr r3, _0807C7A8 @ =0x000006ea + adds r1, r2, r3 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _0807C7AC @ =0x000006cc + adds r1, r2, r0 +_0807C796: + movs r0, 0x4 +_0807C798: + strh r0, [r1] +_0807C79A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807C7A0: .4byte gUnknown_83C2BBC +_0807C7A4: .4byte 0x000006c6 +_0807C7A8: .4byte 0x000006ea +_0807C7AC: .4byte 0x000006cc + thumb_func_end sub_807C424 + + thumb_func_start sub_807C7B0 +sub_807C7B0: @ 807C7B0 + push {r4-r6,lr} + ldr r0, _0807C7CC @ =gUnknown_83C2BBC + ldr r6, [r0] + ldr r0, _0807C7D0 @ =0x000006ce + adds r5, r6, r0 + ldrh r1, [r5] + cmp r1, 0x1 + beq _0807C7E6 + cmp r1, 0x1 + bgt _0807C7D4 + cmp r1, 0 + beq _0807C7DA + b _0807C84C + .align 2, 0 +_0807C7CC: .4byte gUnknown_83C2BBC +_0807C7D0: .4byte 0x000006ce +_0807C7D4: + cmp r1, 0x2 + beq _0807C830 + b _0807C84C +_0807C7DA: + ldr r2, _0807C820 @ =0x000006ea + adds r0, r6, r2 + strb r1, [r0] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_0807C7E6: + bl sub_807C424 + ldr r0, _0807C824 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r1, _0807C820 @ =0x000006ea + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0807C854 + subs r1, 0x19 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x3 + beq _0807C84C + cmp r0, 0x5 + beq _0807C84C + cmp r0, 0xD + beq _0807C84C + ldr r0, _0807C828 @ =0x000006d9 + adds r1, r2, r0 + movs r0, 0 + strb r0, [r1] + ldr r0, _0807C82C @ =0x000006ce + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0807C854 + .align 2, 0 +_0807C820: .4byte 0x000006ea +_0807C824: .4byte gUnknown_83C2BBC +_0807C828: .4byte 0x000006d9 +_0807C82C: .4byte 0x000006ce +_0807C830: + bl sub_807BD4C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0807C854 + bl sub_807BDD8 + ldr r1, _0807C850 @ =0x000006ed + adds r0, r6, r1 + strb r4, [r0] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_0807C84C: + movs r0, 0 + b _0807C856 + .align 2, 0 +_0807C850: .4byte 0x000006ed +_0807C854: + movs r0, 0x1 +_0807C856: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807C7B0 + + thumb_func_start sub_807C85C +sub_807C85C: @ 807C85C + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _0807C890 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r0, _0807C894 @ =0x000006ed + adds r5, r4, r0 + ldrb r0, [r5] + cmp r0, 0 + bne _0807C88A + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r6, 0 + bl __umodsi3 + movs r2, 0xDD + lsls r2, 3 + adds r1, r4, r2 + strh r0, [r1] + movs r0, 0x1 + strb r0, [r5] +_0807C88A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807C890: .4byte gUnknown_83C2BBC +_0807C894: .4byte 0x000006ed + thumb_func_end sub_807C85C + + thumb_func_start sub_807C898 +sub_807C898: @ 807C898 + push {r4,lr} + ldr r0, _0807C8D0 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C8D4 @ =0x000006ed + adds r0, r1, r2 + ldrb r4, [r0] + cmp r4, 0x1 + bne _0807C8F8 + movs r0, 0xDD + lsls r0, 3 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _0807C8F4 + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _0807C8F8 + bl sub_8044EC8 + ands r4, r0 + cmp r4, 0 + beq _0807C8D8 + movs r0, 0x50 + bl sub_80722CC + b _0807C8DE + .align 2, 0 +_0807C8D0: .4byte gUnknown_83C2BBC +_0807C8D4: .4byte 0x000006ed +_0807C8D8: + movs r0, 0x51 + bl sub_80722CC +_0807C8DE: + ldr r0, _0807C8EC @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807C8F0 @ =0x000006ed + adds r0, r1 + movs r1, 0 + strb r1, [r0] + b _0807C8F8 + .align 2, 0 +_0807C8EC: .4byte gUnknown_83C2BBC +_0807C8F0: .4byte 0x000006ed +_0807C8F4: + subs r0, 0x1 + strh r0, [r1] +_0807C8F8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807C898 + + thumb_func_start sub_807C900 +sub_807C900: @ 807C900 + push {lr} + ldr r0, _0807C94C @ =gUnknown_83C2BBC + ldr r3, [r0] + ldr r0, _0807C950 @ =0x000006cc + adds r1, r3, r0 + movs r2, 0 + movs r0, 0 + strh r0, [r1] + ldr r1, _0807C954 @ =0x000006d2 + adds r0, r3, r1 + strb r2, [r0] + subs r1, 0x11 + adds r0, r3, r1 + strb r2, [r0] + ldr r2, _0807C958 @ =0x000006c2 + adds r1, r3, r2 + movs r0, 0x14 + strb r0, [r1] + ldr r1, _0807C95C @ =0x000006fb + adds r0, r3, r1 + ldrb r1, [r0] + cmp r1, 0 + bne _0807C948 + adds r2, 0x2E + adds r0, r3, r2 + strh r1, [r0] + adds r2, 0x2 + adds r0, r3, r2 + strh r1, [r0] + subs r2, 0x4 + adds r0, r3, r2 + strh r1, [r0] + movs r0, 0 + movs r1, 0x10 + bl sub_807ADB0 +_0807C948: + pop {r0} + bx r0 + .align 2, 0 +_0807C94C: .4byte gUnknown_83C2BBC +_0807C950: .4byte 0x000006cc +_0807C954: .4byte 0x000006d2 +_0807C958: .4byte 0x000006c2 +_0807C95C: .4byte 0x000006fb + thumb_func_end sub_807C900 + + thumb_func_start sub_807C960 +sub_807C960: @ 807C960 + push {r4,lr} + bl sub_807C900 + ldr r0, _0807C988 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807C98C @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C980 + adds r4, r1, r2 +_0807C976: + bl sub_807C990 + ldrb r0, [r4] + cmp r0, 0 + beq _0807C976 +_0807C980: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807C988: .4byte gUnknown_83C2BBC +_0807C98C: .4byte 0x000006d2 + thumb_func_end sub_807C960 + + thumb_func_start sub_807C990 +sub_807C990: @ 807C990 + push {r4-r6,lr} + ldr r0, _0807C9DC @ =gUnknown_83C2BBC + ldr r6, [r0] + ldr r0, _0807C9E0 @ =gUnknown_2021BC8 + ldr r1, _0807C9E4 @ =0x000006f2 + adds r2, r6, r1 + ldrh r0, [r0] + ldrh r1, [r2] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + ldr r3, _0807C9E8 @ =0x000006ee + adds r1, r6, r3 + strh r0, [r1] + movs r0, 0xDE + lsls r0, 3 + adds r1, r6, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3 + bls _0807C9CA + movs r0, 0 + strh r0, [r1] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] +_0807C9CA: + ldr r1, _0807C9EC @ =0x000006cc + adds r5, r6, r1 + ldrh r4, [r5] + cmp r4, 0 + beq _0807C9F0 + cmp r4, 0x1 + beq _0807CA30 + b _0807CA46 + .align 2, 0 +_0807C9DC: .4byte gUnknown_83C2BBC +_0807C9E0: .4byte gUnknown_2021BC8 +_0807C9E4: .4byte 0x000006f2 +_0807C9E8: .4byte 0x000006ee +_0807C9EC: .4byte 0x000006cc +_0807C9F0: + bl sub_807CB4C + movs r3, 0xDA + lsls r3, 3 + adds r0, r6, r3 + ldrb r0, [r0] + cmp r0, 0x6 + bne _0807CA0C + movs r0, 0xC + movs r1, 0x8 + movs r2, 0x3 + bl sub_807ADF0 + b _0807CA16 +_0807CA0C: + movs r0, 0x4 + movs r1, 0x10 + movs r2, 0 + bl sub_807ADF0 +_0807CA16: + ldr r0, _0807CA28 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807CA2C @ =0x000006cc + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0807CA46 + .align 2, 0 +_0807CA28: .4byte gUnknown_83C2BBC +_0807CA2C: .4byte 0x000006cc +_0807CA30: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807CA46 + ldr r1, _0807CA4C @ =0x000006d2 + adds r0, r6, r1 + strb r4, [r0] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_0807CA46: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807CA4C: .4byte 0x000006d2 + thumb_func_end sub_807C990 + + thumb_func_start sub_807CA50 +sub_807CA50: @ 807CA50 + push {r4,lr} + ldr r0, _0807CAA0 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r0, _0807CAA4 @ =gUnknown_2021BC8 + ldr r1, _0807CAA8 @ =0x000006f2 + adds r3, r2, r1 + ldrh r0, [r0] + ldrh r1, [r3] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + ldr r4, _0807CAAC @ =0x000006ee + adds r1, r2, r4 + strh r0, [r1] + movs r0, 0xDE + lsls r0, 3 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3 + bls _0807CA8A + movs r0, 0 + strh r0, [r1] + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] +_0807CA8A: + ldr r1, _0807CAB0 @ =0x000006ce + adds r4, r2, r1 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807CAC6 + cmp r0, 0x1 + bgt _0807CAB4 + cmp r0, 0 + beq _0807CABA + b _0807CADE + .align 2, 0 +_0807CAA0: .4byte gUnknown_83C2BBC +_0807CAA4: .4byte gUnknown_2021BC8 +_0807CAA8: .4byte 0x000006f2 +_0807CAAC: .4byte 0x000006ee +_0807CAB0: .4byte 0x000006ce +_0807CAB4: + cmp r0, 0x2 + beq _0807CAD2 + b _0807CADE +_0807CABA: + movs r0, 0 + movs r1, 0x10 + movs r2, 0x3 + bl sub_807ADF0 + b _0807CAD6 +_0807CAC6: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807CAE2 + b _0807CAD6 +_0807CAD2: + bl sub_807CC08 +_0807CAD6: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807CAE2 +_0807CADE: + movs r0, 0 + b _0807CAE4 +_0807CAE2: + movs r0, 0x1 +_0807CAE4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807CA50 + + thumb_func_start sub_807CAEC +sub_807CAEC: @ 807CAEC + push {r4,lr} + adds r3, r0, 0 + ldr r0, _0807CB38 @ =gUnknown_2021BCA + ldrb r0, [r0] + strh r0, [r3, 0x26] + ldr r0, _0807CB3C @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807CB40 @ =0x000006ee + adds r2, r0, r1 + ldrh r1, [r2] + adds r1, 0x20 + movs r4, 0x2E + ldrsh r0, [r3, r4] + lsls r0, 6 + adds r1, r0 + strh r1, [r3, 0x20] + lsls r1, 16 + ldr r0, _0807CB44 @ =0x010f0000 + cmp r1, r0 + ble _0807CB30 + movs r0, 0xF0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r2] + adds r1, r2 + movs r4, 0x2E + ldrsh r2, [r3, r4] + movs r0, 0x4 + subs r0, r2 + lsls r0, 6 + subs r1, r0 + ldr r0, _0807CB48 @ =0x000001ff + ands r1, r0 + strh r1, [r3, 0x20] +_0807CB30: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807CB38: .4byte gUnknown_2021BCA +_0807CB3C: .4byte gUnknown_83C2BBC +_0807CB40: .4byte 0x000006ee +_0807CB44: .4byte 0x010f0000 +_0807CB48: .4byte 0x000001ff + thumb_func_end sub_807CAEC + + thumb_func_start sub_807CB4C +sub_807CB4C: @ 807CB4C + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _0807CBC0 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807CBC4 @ =0x000006fb + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807CBF6 + ldr r0, _0807CBC8 @ =gUnknown_83C67A8 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + bl sub_80086DC + movs r5, 0 +_0807CB70: + ldr r0, _0807CBCC @ =gUnknown_83C6790 + movs r1, 0 + movs r2, 0 + movs r3, 0xFF + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0807CBD4 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0807CBD0 @ =gUnknown_202063C + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4, 0x2E] + lsls r0, 16 + lsrs r0, 10 + adds r0, 0x20 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x5 + bl __udivsi3 + lsls r0, 16 + lsrs r0, 10 + adds r0, 0x20 + strh r0, [r4, 0x22] + ldr r2, _0807CBC0 @ =gUnknown_83C2BBC + ldr r0, [r2] + lsls r1, r5, 2 + adds r0, 0xA0 + adds r0, r1 + str r4, [r0] + b _0807CBE2 + .align 2, 0 +_0807CBC0: .4byte gUnknown_83C2BBC +_0807CBC4: .4byte 0x000006fb +_0807CBC8: .4byte gUnknown_83C67A8 +_0807CBCC: .4byte gUnknown_83C6790 +_0807CBD0: .4byte gUnknown_202063C +_0807CBD4: + ldr r2, _0807CC00 @ =gUnknown_83C2BBC + ldr r1, [r2] + lsls r0, r5, 2 + adds r1, 0xA0 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0807CBE2: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x13 + bls _0807CB70 + ldr r0, [r2] + ldr r1, _0807CC04 @ =0x000006fb + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0807CBF6: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807CC00: .4byte gUnknown_83C2BBC +_0807CC04: .4byte 0x000006fb + thumb_func_end sub_807CB4C + + thumb_func_start sub_807CC08 +sub_807CC08: @ 807CC08 + push {r4,r5,lr} + ldr r0, _0807CC50 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807CC54 @ =0x000006fb + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807CC48 + movs r4, 0 + adds r5, r1, 0 + adds r5, 0xA0 +_0807CC1E: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807CC2C + bl sub_8007280 +_0807CC2C: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x13 + bls _0807CC1E + ldr r0, _0807CC58 @ =0x00001201 + bl sub_800874C + ldr r0, _0807CC50 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807CC54 @ =0x000006fb + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0807CC48: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807CC50: .4byte gUnknown_83C2BBC +_0807CC54: .4byte 0x000006fb +_0807CC58: .4byte 0x00001201 + thumb_func_end sub_807CC08 + + thumb_func_start sub_807CC5C +sub_807CC5C: @ 807CC5C + push {lr} + ldr r0, _0807CCA8 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807CCAC @ =0x000006cc + adds r2, r1, r0 + movs r3, 0 + movs r0, 0 + strh r0, [r2] + ldr r2, _0807CCB0 @ =0x000006d2 + adds r0, r1, r2 + strb r3, [r0] + subs r2, 0x11 + adds r0, r1, r2 + strb r3, [r0] + ldr r3, _0807CCB4 @ =0x000006c2 + adds r0, r1, r3 + movs r2, 0x14 + strb r2, [r0] + adds r3, 0x3C + adds r0, r1, r3 + strh r2, [r0] + movs r0, 0xE0 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _0807CCA4 + movs r0, 0 + movs r1, 0x10 + bl sub_807ADB0 + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x52 + bl sub_8000A38 +_0807CCA4: + pop {r0} + bx r0 + .align 2, 0 +_0807CCA8: .4byte gUnknown_83C2BBC +_0807CCAC: .4byte 0x000006cc +_0807CCB0: .4byte 0x000006d2 +_0807CCB4: .4byte 0x000006c2 + thumb_func_end sub_807CC5C + + thumb_func_start sub_807CCB8 +sub_807CCB8: @ 807CCB8 + push {r4,lr} + bl sub_807CC5C + ldr r0, _0807CCE0 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807CCE4 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807CCD8 + adds r4, r1, r2 +_0807CCCE: + bl sub_807CCE8 + ldrb r0, [r4] + cmp r0, 0 + beq _0807CCCE +_0807CCD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807CCE0: .4byte gUnknown_83C2BBC +_0807CCE4: .4byte 0x000006d2 + thumb_func_end sub_807CCB8 + + thumb_func_start sub_807CCE8 +sub_807CCE8: @ 807CCE8 + push {r4,r5,lr} + ldr r2, _0807CD2C @ =gUnknown_83C2BBC + ldr r1, [r2] + ldr r0, _0807CD30 @ =gUnknown_2021BC8 + ldrh r0, [r0] + ldr r3, _0807CD34 @ =0x000001ff + ands r3, r0 + ldr r0, _0807CD38 @ =0x000006fc + adds r1, r0 + strh r3, [r1] + cmp r3, 0xEF + bls _0807CD14 + adds r4, r1, 0 + adds r1, r3, 0 +_0807CD04: + adds r3, r1, 0 + subs r3, 0xF0 + adds r1, r3, 0 + lsls r0, r3, 16 + lsrs r0, 16 + cmp r0, 0xEF + bhi _0807CD04 + strh r3, [r4] +_0807CD14: + ldr r5, [r2] + ldr r1, _0807CD3C @ =0x000006cc + adds r4, r5, r1 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807CD4C + cmp r0, 0x1 + bgt _0807CD40 + cmp r0, 0 + beq _0807CD46 + b _0807CD88 + .align 2, 0 +_0807CD2C: .4byte gUnknown_83C2BBC +_0807CD30: .4byte gUnknown_2021BC8 +_0807CD34: .4byte 0x000001ff +_0807CD38: .4byte 0x000006fc +_0807CD3C: .4byte 0x000006cc +_0807CD40: + cmp r0, 0x2 + beq _0807CD68 + b _0807CD88 +_0807CD46: + bl sub_807CDFC + b _0807CD7A +_0807CD4C: + movs r1, 0xE0 + lsls r1, 3 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807CD5C + bl sub_807CE0C +_0807CD5C: + movs r0, 0x10 + movs r1, 0 + movs r2, 0x1 + bl sub_807ADF0 + b _0807CD7A +_0807CD68: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807CD8C + ldr r0, _0807CD84 @ =0x000006d2 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] +_0807CD7A: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807CD8C + .align 2, 0 +_0807CD84: .4byte 0x000006d2 +_0807CD88: + bl sub_807AE34 +_0807CD8C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_807CCE8 + + thumb_func_start sub_807CD94 +sub_807CD94: @ 807CD94 + push {r4,lr} + ldr r0, _0807CDB0 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807CDB4 @ =0x000006ce + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807CDCA + cmp r0, 0x1 + bgt _0807CDB8 + cmp r0, 0 + beq _0807CDBE + b _0807CDEE + .align 2, 0 +_0807CDB0: .4byte gUnknown_83C2BBC +_0807CDB4: .4byte 0x000006ce +_0807CDB8: + cmp r0, 0x2 + beq _0807CDE0 + b _0807CDEE +_0807CDBE: + movs r0, 0 + movs r1, 0x10 + movs r2, 0x1 + bl sub_807ADF0 + b _0807CDD8 +_0807CDCA: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807CDF2 + bl sub_807CEB4 +_0807CDD8: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807CDF2 +_0807CDE0: + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807CDEE: + movs r0, 0 + b _0807CDF4 +_0807CDF2: + movs r0, 0x1 +_0807CDF4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807CD94 + + thumb_func_start sub_807CDFC +sub_807CDFC: @ 807CDFC + push {lr} + ldr r0, _0807CE08 @ =gUnknown_83C67B0 + bl sub_80086DC + pop {r0} + bx r0 + .align 2, 0 +_0807CE08: .4byte gUnknown_83C67B0 + thumb_func_end sub_807CDFC + + thumb_func_start sub_807CE0C +sub_807CE0C: @ 807CE0C + push {r4,r5,lr} + ldr r0, _0807CE78 @ =gUnknown_83C2BBC + ldr r0, [r0] + movs r1, 0xE0 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807CEA8 + movs r5, 0 +_0807CE20: + ldr r0, _0807CE7C @ =gUnknown_83C67D0 + movs r1, 0 + movs r2, 0 + movs r3, 0x4E + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0807CE84 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0807CE80 @ =gUnknown_202063C + adds r4, r0 + movs r0, 0 + strh r0, [r4, 0x30] + adds r0, r5, 0 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + adds r0, r5, 0 + movs r1, 0x5 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x34] + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 6 + adds r0, 0x20 + strh r0, [r4, 0x2E] + ldr r2, _0807CE78 @ =gUnknown_83C2BBC + ldr r0, [r2] + lsls r1, r5, 2 + adds r0, 0xF0 + adds r0, r1 + str r4, [r0] + b _0807CE92 + .align 2, 0 +_0807CE78: .4byte gUnknown_83C2BBC +_0807CE7C: .4byte gUnknown_83C67D0 +_0807CE80: .4byte gUnknown_202063C +_0807CE84: + ldr r2, _0807CEB0 @ =gUnknown_83C2BBC + ldr r1, [r2] + lsls r0, r5, 2 + adds r1, 0xF0 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0807CE92: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x13 + bls _0807CE20 + ldr r0, [r2] + movs r1, 0xE0 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0807CEA8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807CEB0: .4byte gUnknown_83C2BBC + thumb_func_end sub_807CE0C + + thumb_func_start sub_807CEB4 +sub_807CEB4: @ 807CEB4 + push {r4,r5,lr} + ldr r0, _0807CF00 @ =gUnknown_83C2BBC + ldr r1, [r0] + movs r2, 0xE0 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807CEF8 + movs r4, 0 + adds r5, r1, 0 + adds r5, 0xF0 +_0807CECC: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807CEDA + bl sub_8007280 +_0807CEDA: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x13 + bls _0807CECC + ldr r0, _0807CF04 @ =0x00001202 + bl sub_800874C + ldr r0, _0807CF00 @ =gUnknown_83C2BBC + ldr r0, [r0] + movs r1, 0xE0 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0807CEF8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807CF00: .4byte gUnknown_83C2BBC +_0807CF04: .4byte 0x00001202 + thumb_func_end sub_807CEB4 + + thumb_func_start sub_807CF08 +sub_807CF08: @ 807CF08 + push {r4,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _0807CF24 + movs r0, 0 + strh r0, [r3, 0x30] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] +_0807CF24: + ldr r1, _0807CF70 @ =gUnknown_2021BCA + ldrh r0, [r3, 0x2E] + ldrh r1, [r1] + adds r0, r1 + strh r0, [r3, 0x22] + ldr r0, _0807CF74 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807CF78 @ =0x000006fc + adds r2, r0, r1 + ldrh r1, [r2] + adds r1, 0x20 + movs r4, 0x32 + ldrsh r0, [r3, r4] + lsls r0, 6 + adds r1, r0 + strh r1, [r3, 0x20] + lsls r1, 16 + ldr r0, _0807CF7C @ =0x010f0000 + cmp r1, r0 + ble _0807CF68 + movs r0, 0xF0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r2] + adds r1, r2 + movs r4, 0x32 + ldrsh r2, [r3, r4] + movs r0, 0x4 + subs r0, r2 + lsls r0, 6 + subs r1, r0 + ldr r0, _0807CF80 @ =0x000001ff + ands r1, r0 + strh r1, [r3, 0x20] +_0807CF68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807CF70: .4byte gUnknown_2021BCA +_0807CF74: .4byte gUnknown_83C2BBC +_0807CF78: .4byte 0x000006fc +_0807CF7C: .4byte 0x010f0000 +_0807CF80: .4byte 0x000001ff + thumb_func_end sub_807CF08 + + thumb_func_start sub_807CF84 +sub_807CF84: @ 807CF84 + push {r4,lr} + ldr r0, _0807CFF4 @ =gUnknown_83C2BBC + ldr r3, [r0] + ldr r1, _0807CFF8 @ =0x000006cc + adds r0, r3, r1 + movs r1, 0 + movs r2, 0 + strh r2, [r0] + ldr r4, _0807CFFC @ =0x000006d2 + adds r0, r3, r4 + strb r1, [r0] + subs r4, 0x11 + adds r0, r3, r4 + strb r1, [r0] + ldr r0, _0807D000 @ =0x000006c2 + adds r1, r3, r0 + movs r0, 0x14 + strb r0, [r1] + movs r1, 0xDE + lsls r1, 3 + adds r0, r3, r1 + strh r2, [r0] + adds r4, 0x31 + adds r1, r3, r4 + movs r0, 0x1 + strh r0, [r1] + ldr r1, _0807D004 @ =0x00000724 + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, 0 + bne _0807CFEE + adds r4, 0x2A + adds r0, r3, r4 + strh r2, [r0] + subs r1, 0x6 + adds r0, r3, r1 + strh r2, [r0] + adds r4, 0x4 + adds r0, r3, r4 + strh r2, [r0] + adds r1, 0x4 + adds r0, r3, r1 + strh r2, [r0] + subs r4, 0x8 + adds r0, r3, r4 + strh r2, [r0] + subs r1, 0x8 + adds r0, r3, r1 + strh r2, [r0] + movs r0, 0 + movs r1, 0x10 + bl sub_807ADB0 +_0807CFEE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807CFF4: .4byte gUnknown_83C2BBC +_0807CFF8: .4byte 0x000006cc +_0807CFFC: .4byte 0x000006d2 +_0807D000: .4byte 0x000006c2 +_0807D004: .4byte 0x00000724 + thumb_func_end sub_807CF84 + + thumb_func_start sub_807D008 +sub_807D008: @ 807D008 + push {r4,lr} + bl sub_807CF84 + ldr r0, _0807D030 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D034 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807D028 + adds r4, r1, r2 +_0807D01E: + bl sub_807D038 + ldrb r0, [r4] + cmp r0, 0 + beq _0807D01E +_0807D028: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807D030: .4byte gUnknown_83C2BBC +_0807D034: .4byte 0x000006d2 + thumb_func_end sub_807D008 + + thumb_func_start sub_807D038 +sub_807D038: @ 807D038 + push {r4,r5,lr} + bl sub_807D0FC + ldr r0, _0807D058 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807D05C @ =0x000006cc + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807D06C + cmp r0, 0x1 + bgt _0807D060 + cmp r0, 0 + beq _0807D066 + b _0807D090 + .align 2, 0 +_0807D058: .4byte gUnknown_83C2BBC +_0807D05C: .4byte 0x000006cc +_0807D060: + cmp r0, 0x2 + beq _0807D078 + b _0807D090 +_0807D066: + bl sub_807D190 + b _0807D08A +_0807D06C: + movs r0, 0xC + movs r1, 0x8 + movs r2, 0x8 + bl sub_807ADF0 + b _0807D08A +_0807D078: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807D090 + ldr r0, _0807D098 @ =0x000006d2 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] +_0807D08A: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807D090: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D098: .4byte 0x000006d2 + thumb_func_end sub_807D038 + + thumb_func_start sub_807D09C +sub_807D09C: @ 807D09C + push {r4,lr} + bl sub_807D0FC + ldr r0, _0807D0BC @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D0C0 @ =0x000006ce + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807D0D6 + cmp r0, 0x1 + bgt _0807D0C4 + cmp r0, 0 + beq _0807D0CA + b _0807D0EE + .align 2, 0 +_0807D0BC: .4byte gUnknown_83C2BBC +_0807D0C0: .4byte 0x000006ce +_0807D0C4: + cmp r0, 0x2 + beq _0807D0E2 + b _0807D0EE +_0807D0CA: + movs r0, 0 + movs r1, 0x10 + movs r2, 0x1 + bl sub_807ADF0 + b _0807D0E6 +_0807D0D6: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807D0F2 + b _0807D0E6 +_0807D0E2: + bl sub_807D248 +_0807D0E6: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807D0F2 +_0807D0EE: + movs r0, 0 + b _0807D0F4 +_0807D0F2: + movs r0, 0x1 +_0807D0F4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807D09C + + thumb_func_start sub_807D0FC +sub_807D0FC: @ 807D0FC + push {r4,r5,lr} + ldr r0, _0807D174 @ =gUnknown_83C2BBC + ldr r3, [r0] + ldr r0, _0807D178 @ =0x0000071c + adds r2, r3, r0 + ldrh r0, [r2] + adds r0, 0x1 + movs r5, 0 + strh r0, [r2] + ldr r1, _0807D17C @ =0x0000ffff + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bls _0807D128 + movs r0, 0xE4 + lsls r0, 3 + adds r1, r3, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + strh r5, [r2] +_0807D128: + ldr r1, _0807D180 @ =0x0000071e + adds r2, r3, r1 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + ands r0, r4 + cmp r0, 0x4 + bls _0807D144 + ldr r0, _0807D184 @ =0x00000722 + adds r1, r3, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + strh r5, [r2] +_0807D144: + ldr r0, _0807D188 @ =gUnknown_2021BC8 + movs r2, 0xE4 + lsls r2, 3 + adds r1, r3, r2 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + subs r2, 0x8 + adds r1, r3, r2 + strh r0, [r1] + ldr r1, _0807D18C @ =gUnknown_2021BCA + adds r2, 0xA + adds r0, r3, r2 + ldrh r0, [r0] + ldrh r1, [r1] + adds r0, r1 + subs r2, 0x8 + adds r1, r3, r2 + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D174: .4byte gUnknown_83C2BBC +_0807D178: .4byte 0x0000071c +_0807D17C: .4byte 0x0000ffff +_0807D180: .4byte 0x0000071e +_0807D184: .4byte 0x00000722 +_0807D188: .4byte gUnknown_2021BC8 +_0807D18C: .4byte gUnknown_2021BCA + thumb_func_end sub_807D0FC + + thumb_func_start sub_807D190 +sub_807D190: @ 807D190 + push {r4-r6,lr} + sub sp, 0x8 + ldr r0, _0807D1FC @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D200 @ =0x00000724 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807D236 + ldr r0, _0807D204 @ =gUnknown_83C67E8 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + bl sub_80086DC + movs r6, 0 +_0807D1B4: + adds r0, r6, 0 + movs r1, 0x5 + bl __udivsi3 + adds r5, r0, 0 + lsls r2, r5, 22 + asrs r2, 16 + ldr r0, _0807D208 @ =gUnknown_83C6804 + movs r1, 0 + movs r3, 0xFF + bl sub_8006FE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0807D210 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0807D20C @ =gUnknown_202063C + adds r4, r0 + adds r0, r6, 0 + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4, 0x2E] + strh r5, [r4, 0x30] + ldr r2, _0807D1FC @ =gUnknown_83C2BBC + ldr r0, [r2] + lsls r1, r6, 2 + movs r3, 0xA0 + lsls r3, 1 + adds r0, r3 + adds r0, r1 + str r4, [r0] + b _0807D222 + .align 2, 0 +_0807D1FC: .4byte gUnknown_83C2BBC +_0807D200: .4byte 0x00000724 +_0807D204: .4byte gUnknown_83C67E8 +_0807D208: .4byte gUnknown_83C6804 +_0807D20C: .4byte gUnknown_202063C +_0807D210: + ldr r2, _0807D240 @ =gUnknown_83C2BBC + ldr r1, [r2] + lsls r0, r6, 2 + movs r3, 0xA0 + lsls r3, 1 + adds r1, r3 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0807D222: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x13 + bls _0807D1B4 + ldr r0, [r2] + ldr r1, _0807D244 @ =0x00000724 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0807D236: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807D240: .4byte gUnknown_83C2BBC +_0807D244: .4byte 0x00000724 + thumb_func_end sub_807D190 + + thumb_func_start sub_807D248 +sub_807D248: @ 807D248 + push {r4,r5,lr} + ldr r0, _0807D290 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D294 @ =0x00000724 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807D28A + movs r4, 0 + movs r0, 0xA0 + lsls r0, 1 + adds r5, r1, r0 +_0807D260: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807D26E + bl sub_8007280 +_0807D26E: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x13 + bls _0807D260 + ldr r0, _0807D298 @ =0x00001203 + bl sub_800874C + ldr r0, _0807D290 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D294 @ =0x00000724 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0807D28A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D290: .4byte gUnknown_83C2BBC +_0807D294: .4byte 0x00000724 +_0807D298: .4byte 0x00001203 + thumb_func_end sub_807D248 + + thumb_func_start sub_807D29C +sub_807D29C: @ 807D29C + push {r4,lr} + adds r3, r0, 0 + ldr r0, _0807D2EC @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D2F0 @ =0x0000071a + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r3, 0x26] + movs r4, 0xE3 + lsls r4, 3 + adds r2, r1, r4 + ldrh r1, [r2] + adds r1, 0x20 + movs r4, 0x2E + ldrsh r0, [r3, r4] + lsls r0, 6 + adds r1, r0 + strh r1, [r3, 0x20] + lsls r1, 16 + ldr r0, _0807D2F4 @ =0x010f0000 + cmp r1, r0 + ble _0807D2E4 + movs r0, 0xF0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r2] + adds r1, r2 + movs r4, 0x2E + ldrsh r2, [r3, r4] + movs r0, 0x4 + subs r0, r2 + lsls r0, 6 + subs r1, r0 + ldr r0, _0807D2F8 @ =0x000001ff + ands r1, r0 + strh r1, [r3, 0x20] +_0807D2E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807D2EC: .4byte gUnknown_83C2BBC +_0807D2F0: .4byte 0x0000071a +_0807D2F4: .4byte 0x010f0000 +_0807D2F8: .4byte 0x000001ff + thumb_func_end sub_807D29C + + thumb_func_start sub_807D2FC +sub_807D2FC: @ 807D2FC + push {r4,lr} + ldr r0, _0807D360 @ =gUnknown_83C2BBC + ldr r3, [r0] + ldr r0, _0807D364 @ =0x000006cc + adds r1, r3, r0 + movs r2, 0 + movs r0, 0 + strh r0, [r1] + ldr r1, _0807D368 @ =0x000006d2 + adds r0, r3, r1 + strb r2, [r0] + ldr r4, _0807D36C @ =0x000006c1 + adds r0, r3, r4 + strb r2, [r0] + ldr r0, _0807D370 @ =0x000006c2 + adds r1, r3, r0 + movs r0, 0x14 + strb r0, [r1] + ldr r1, _0807D374 @ =0x00000716 + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, 0 + bne _0807D358 + adds r4, 0x43 + adds r1, r3, r4 + adds r4, 0x4 + adds r0, r3, r4 + str r2, [r0] + str r2, [r1] + ldr r0, _0807D378 @ =0x00000712 + adds r1, r3, r0 + movs r0, 0x8 + strh r0, [r1] + adds r4, 0xC + adds r0, r3, r4 + strh r2, [r0] + ldrh r2, [r1] + cmp r2, 0x5F + bls _0807D350 + movs r0, 0x80 + subs r0, r2 + strh r0, [r1] +_0807D350: + movs r0, 0 + movs r1, 0x10 + bl sub_807ADB0 +_0807D358: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807D360: .4byte gUnknown_83C2BBC +_0807D364: .4byte 0x000006cc +_0807D368: .4byte 0x000006d2 +_0807D36C: .4byte 0x000006c1 +_0807D370: .4byte 0x000006c2 +_0807D374: .4byte 0x00000716 +_0807D378: .4byte 0x00000712 + thumb_func_end sub_807D2FC + + thumb_func_start sub_807D37C +sub_807D37C: @ 807D37C + push {r4,lr} + bl sub_807D2FC + ldr r0, _0807D3A4 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D3A8 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807D39C + adds r4, r1, r2 +_0807D392: + bl sub_807D3AC + ldrb r0, [r4] + cmp r0, 0 + beq _0807D392 +_0807D39C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807D3A4: .4byte gUnknown_83C2BBC +_0807D3A8: .4byte 0x000006d2 + thumb_func_end sub_807D37C + + thumb_func_start sub_807D3AC +sub_807D3AC: @ 807D3AC + push {r4,r5,lr} + bl sub_807D4C4 + bl sub_807D48C + ldr r0, _0807D3DC @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807D3E0 @ =0x00000712 + adds r1, r5, r0 + ldrh r0, [r1] + cmp r0, 0x5F + bls _0807D3C8 + movs r0, 0x20 + strh r0, [r1] +_0807D3C8: + ldr r0, _0807D3E4 @ =0x000006cc + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807D3F8 + cmp r0, 0x1 + bgt _0807D3E8 + cmp r0, 0 + beq _0807D3EE + b _0807D41C + .align 2, 0 +_0807D3DC: .4byte gUnknown_83C2BBC +_0807D3E0: .4byte 0x00000712 +_0807D3E4: .4byte 0x000006cc +_0807D3E8: + cmp r0, 0x2 + beq _0807D404 + b _0807D41C +_0807D3EE: + bl sub_807D5D8 + bl sub_807D698 + b _0807D416 +_0807D3F8: + movs r0, 0x10 + movs r1, 0 + movs r2, 0 + bl sub_807ADF0 + b _0807D416 +_0807D404: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807D41C + ldr r0, _0807D424 @ =0x000006d2 + adds r1, r5, r0 + movs r0, 0x1 + strb r0, [r1] +_0807D416: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0807D41C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D424: .4byte 0x000006d2 + thumb_func_end sub_807D3AC + + thumb_func_start sub_807D428 +sub_807D428: @ 807D428 + push {r4,lr} + bl sub_807D4C4 + bl sub_807D48C + ldr r0, _0807D44C @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D450 @ =0x000006ce + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0807D466 + cmp r0, 0x1 + bgt _0807D454 + cmp r0, 0 + beq _0807D45A + b _0807D47E + .align 2, 0 +_0807D44C: .4byte gUnknown_83C2BBC +_0807D450: .4byte 0x000006ce +_0807D454: + cmp r0, 0x2 + beq _0807D472 + b _0807D47E +_0807D45A: + movs r0, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_807ADF0 + b _0807D476 +_0807D466: + bl sub_807AE34 + lsls r0, 24 + cmp r0, 0 + beq _0807D482 + b _0807D476 +_0807D472: + bl sub_807D544 +_0807D476: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0807D482 +_0807D47E: + movs r0, 0 + b _0807D484 +_0807D482: + movs r0, 0x1 +_0807D484: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_807D428 + + thumb_func_start sub_807D48C +sub_807D48C: @ 807D48C + push {lr} + ldr r0, _0807D4B8 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r0, _0807D4BC @ =0x00000714 + adds r3, r2, r0 + ldrh r0, [r3] + adds r1, r0, 0x1 + strh r1, [r3] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bls _0807D4B2 + ldr r1, _0807D4C0 @ =0x00000712 + adds r0, r2, r1 + ldrh r1, [r0] + adds r1, 0x1 + movs r2, 0 + strh r1, [r0] + strh r2, [r3] +_0807D4B2: + pop {r0} + bx r0 + .align 2, 0 +_0807D4B8: .4byte gUnknown_83C2BBC +_0807D4BC: .4byte 0x00000714 +_0807D4C0: .4byte 0x00000712 + thumb_func_end sub_807D48C + + thumb_func_start sub_807D4C4 +sub_807D4C4: @ 807D4C4 + push {r4-r6,lr} + ldr r0, _0807D528 @ =gUnknown_83C2BBC + ldr r2, [r0] + ldr r0, _0807D52C @ =0x00000704 + adds r4, r2, r0 + ldr r6, _0807D530 @ =gUnknown_825E074 + ldr r1, _0807D534 @ =0x00000712 + adds r5, r2, r1 + ldrh r0, [r5] + lsls r0, 1 + adds r0, r6 + movs r3, 0 + ldrsh r1, [r0, r3] + lsls r1, 2 + ldr r0, [r4] + subs r0, r1 + str r0, [r4] + movs r0, 0xE1 + lsls r0, 3 + adds r3, r2, r0 + ldrh r0, [r5] + lsls r0, 1 + adds r0, r6 + movs r5, 0 + ldrsh r1, [r0, r5] + ldr r0, [r3] + subs r0, r1 + str r0, [r3] + ldr r1, _0807D538 @ =gUnknown_2021BC8 + ldr r0, [r4] + lsrs r0, 8 + ldrh r1, [r1] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + ldr r4, _0807D53C @ =0x0000070e + adds r1, r2, r4 + strh r0, [r1] + ldr r1, _0807D540 @ =gUnknown_2021BCA + ldr r0, [r3] + lsrs r0, 8 + ldrh r1, [r1] + adds r0, r1 + movs r5, 0xE2 + lsls r5, 3 + adds r2, r5 + strh r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807D528: .4byte gUnknown_83C2BBC +_0807D52C: .4byte 0x00000704 +_0807D530: .4byte gUnknown_825E074 +_0807D534: .4byte 0x00000712 +_0807D538: .4byte gUnknown_2021BC8 +_0807D53C: .4byte 0x0000070e +_0807D540: .4byte gUnknown_2021BCA + thumb_func_end sub_807D4C4 + + thumb_func_start sub_807D544 +sub_807D544: @ 807D544 + push {r4,r5,lr} + ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D5CC @ =0x00000716 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807D586 + movs r4, 0 + movs r0, 0xC8 + lsls r0, 1 + adds r5, r1, r0 +_0807D55C: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807D56A + bl sub_8007280 +_0807D56A: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x13 + bls _0807D55C + ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D5CC @ =0x00000716 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, _0807D5D0 @ =0x00001204 + bl sub_800874C +_0807D586: + ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D5D4 @ =0x00000717 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807D5C0 + movs r4, 0 + movs r0, 0xF0 + lsls r0, 1 + adds r5, r1, r0 +_0807D59C: + lsls r0, r4, 2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0807D5AA + bl sub_8007280 +_0807D5AA: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x4 + bls _0807D59C + ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D5D4 @ =0x00000717 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0807D5C0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D5C8: .4byte gUnknown_83C2BBC +_0807D5CC: .4byte 0x00000716 +_0807D5D0: .4byte 0x00001204 +_0807D5D4: .4byte 0x00000717 + thumb_func_end sub_807D544 + + thumb_func_start sub_807D5D8 +sub_807D5D8: @ 807D5D8 + push {r4-r7,lr} + sub sp, 0x4 + ldr r0, _0807D648 @ =gUnknown_83C2BBC + ldr r0, [r0] + ldr r1, _0807D64C @ =0x00000716 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807D686 + ldr r0, _0807D650 @ =gUnknown_83C6854 + bl sub_80086DC + ldr r0, _0807D654 @ =gUnknown_83C2D20 + bl sub_807ABC0 + movs r7, 0 +_0807D5F8: + adds r0, r7, 0 + movs r1, 0x5 + bl __udivsi3 + adds r6, r0, 0 + lsls r2, r6, 22 + asrs r2, 16 + ldr r0, _0807D658 @ =gUnknown_83C683C + movs r1, 0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0807D660 + ldr r2, _0807D648 @ =gUnknown_83C2BBC + ldr r5, [r2] + lsls r0, r7, 2 + movs r3, 0xC8 + lsls r3, 1 + adds r5, r3 + adds r5, r0 + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + ldr r0, _0807D65C @ =gUnknown_202063C + adds r4, r0 + str r4, [r5] + adds r0, r7, 0 + movs r1, 0x5 + str r2, [sp] + bl __umodsi3 + strh r0, [r4, 0x2E] + ldr r0, [r5] + strh r6, [r0, 0x30] + ldr r2, [sp] + b _0807D672 + .align 2, 0 +_0807D648: .4byte gUnknown_83C2BBC +_0807D64C: .4byte 0x00000716 +_0807D650: .4byte gUnknown_83C6854 +_0807D654: .4byte gUnknown_83C2D20 +_0807D658: .4byte gUnknown_83C683C +_0807D65C: .4byte gUnknown_202063C +_0807D660: + ldr r2, _0807D690 @ =gUnknown_83C2BBC + ldr r1, [r2] + lsls r0, r7, 2 + movs r3, 0xC8 + lsls r3, 1 + adds r1, r3 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0807D672: + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x13 + bls _0807D5F8 + ldr r0, [r2] + ldr r1, _0807D694 @ =0x00000716 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0807D686: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807D690: .4byte gUnknown_83C2BBC +_0807D694: .4byte 0x00000716 + thumb_func_end sub_807D5D8 + + thumb_func_start sub_807D698 +sub_807D698: @ 807D698 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0807D740 @ =gUnknown_83C2BBC + ldr r0, [r4] + ldr r1, _0807D744 @ =0x00000717 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807D784 + movs r7, 0 + mov r9, r4 + movs r2, 0 + mov r10, r2 +_0807D6B8: + lsls r0, r7, 1 + mov r8, r0 + adds r6, r0, r7 + lsls r5, r6, 4 + adds r1, r5, 0 + adds r1, 0x18 + lsls r1, 16 + asrs r1, 16 + ldr r0, _0807D748 @ =gUnknown_83C683C + movs r2, 0xD0 + movs r3, 0x1 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0807D75C + mov r2, r9 + ldr r4, [r2] + lsls r0, r7, 2 + movs r2, 0xF0 + lsls r2, 1 + adds r4, r2 + adds r4, r0 + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + ldr r0, _0807D74C @ =gUnknown_202063C + adds r2, r0 + str r2, [r4] + ldrb r1, [r2, 0x3] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x3] + ldr r1, [r4] + adds r0, r6, r5 + strh r0, [r1, 0x30] + ldr r1, [r4] + movs r0, 0x8 + strh r0, [r1, 0x2E] + ldr r0, [r4] + mov r1, r10 + strh r1, [r0, 0x32] + ldr r1, [r4] + ldr r0, _0807D750 @ =0x00006730 + strh r0, [r1, 0x36] + ldr r1, [r4] + ldr r0, _0807D754 @ =gUnknown_83C685C + add r0, r8 + ldrh r0, [r0] + strh r0, [r1, 0x34] + ldr r0, [r4] + movs r1, 0x1 + bl sub_800838C + ldr r0, [r4] + movs r1, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_80073F0 + ldr r1, [r4] + ldr r0, _0807D758 @ =sub_807D7F8 + str r0, [r1, 0x1C] + b _0807D76E + .align 2, 0 +_0807D740: .4byte gUnknown_83C2BBC +_0807D744: .4byte 0x00000717 +_0807D748: .4byte gUnknown_83C683C +_0807D74C: .4byte gUnknown_202063C +_0807D750: .4byte 0x00006730 +_0807D754: .4byte gUnknown_83C685C +_0807D758: .4byte sub_807D7F8 +_0807D75C: + mov r2, r9 + ldr r0, [r2] + lsls r1, r7, 2 + movs r2, 0xF0 + lsls r2, 1 + adds r0, r2 + adds r0, r1 + mov r1, r10 + str r1, [r0] +_0807D76E: + mov r2, r9 + ldr r0, [r2] + ldr r1, _0807D794 @ =0x00000717 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x4 + bls _0807D6B8 +_0807D784: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807D794: .4byte 0x00000717 + thumb_func_end sub_807D698 + + thumb_func_start sub_807D798 +sub_807D798: @ 807D798 + push {r4,lr} + adds r3, r0, 0 + ldr r0, _0807D7E8 @ =gUnknown_83C2BBC + ldr r1, [r0] + movs r2, 0xE2 + lsls r2, 3 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r3, 0x26] + ldr r4, _0807D7EC @ =0x0000070e + adds r2, r1, r4 + ldrh r1, [r2] + adds r1, 0x20 + movs r4, 0x2E + ldrsh r0, [r3, r4] + lsls r0, 6 + adds r1, r0 + strh r1, [r3, 0x20] + lsls r1, 16 + ldr r0, _0807D7F0 @ =0x010f0000 + cmp r1, r0 + ble _0807D7E0 + movs r0, 0xF0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r2] + adds r1, r2 + movs r4, 0x2E + ldrsh r2, [r3, r4] + movs r0, 0x4 + subs r0, r2 + lsls r0, 6 + subs r1, r0 + ldr r0, _0807D7F4 @ =0x000001ff + ands r1, r0 + strh r1, [r3, 0x20] +_0807D7E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807D7E8: .4byte gUnknown_83C2BBC +_0807D7EC: .4byte 0x0000070e +_0807D7F0: .4byte 0x010f0000 +_0807D7F4: .4byte 0x000001ff + thumb_func_end sub_807D798 + + thumb_func_start sub_807D7F8 +sub_807D7F8: @ 807D7F8 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + subs r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _0807D812 + ldr r0, _0807D818 @ =sub_807D81C + str r0, [r2, 0x1C] +_0807D812: + pop {r0} + bx r0 + .align 2, 0 +_0807D818: .4byte sub_807D81C + thumb_func_end sub_807D7F8 + + thumb_func_start sub_807D81C +sub_807D81C: @ 807D81C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x22] + subs r0, 0x1 + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + negs r1, r1 + cmp r0, r1 + bge _0807D83A + movs r0, 0xD0 + strh r0, [r5, 0x22] + movs r0, 0x4 + strh r0, [r5, 0x2E] +_0807D83A: + movs r0, 0x2E + ldrsh r4, [r5, r0] + ldr r3, _0807D88C @ =gUnknown_825E074 + movs r2, 0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, 1 + adds r0, r3 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r2, r4, 0 + muls r2, r0 + adds r1, 0x40 + lsls r1, 1 + adds r1, r3 + movs r3, 0 + ldrsh r0, [r1, r3] + muls r0, r4 + lsrs r2, 8 + strh r2, [r5, 0x24] + lsrs r0, 8 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x30] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _0807D886 + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_0807D886: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D88C: .4byte gUnknown_825E074 + thumb_func_end sub_807D81C + + thumb_func_start sub_807D890 +sub_807D890: @ 807D890 + ldr r0, _0807D8B0 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807D8B4 @ =0x000006cc + adds r2, r1, r0 + movs r0, 0 + strh r0, [r2] + ldr r0, _0807D8B8 @ =0x000006c1 + adds r2, r1, r0 + movs r0, 0x3 + strb r0, [r2] + ldr r0, _0807D8BC @ =0x000006c2 + adds r1, r0 + movs r0, 0x14 + strb r0, [r1] + bx lr + .align 2, 0 +_0807D8B0: .4byte gUnknown_83C2BBC +_0807D8B4: .4byte 0x000006cc +_0807D8B8: .4byte 0x000006c1 +_0807D8BC: .4byte 0x000006c2 + thumb_func_end sub_807D890 + + thumb_func_start sub_807D8C0 +sub_807D8C0: @ 807D8C0 + push {lr} + bl sub_807D890 + pop {r0} + bx r0 + thumb_func_end sub_807D8C0 + + thumb_func_start nullsub_49 +nullsub_49: @ 807D8CC + bx lr + thumb_func_end nullsub_49 + + thumb_func_start sub_807D8D0 +sub_807D8D0: @ 807D8D0 + movs r0, 0 + bx lr + thumb_func_end sub_807D8D0 + + thumb_func_start sub_807D8D4 +sub_807D8D4: @ 807D8D4 + push {r4,r5,lr} + bl sub_807C900 + ldr r0, _0807D914 @ =gUnknown_83C2BBC + ldr r4, [r0] + ldr r1, _0807D918 @ =0x0000072e + adds r0, r4, r1 + ldrb r5, [r0] + cmp r5, 0 + bne _0807D90C + ldr r0, _0807D91C @ =gUnknown_83C6870 + bl sub_80086DC + movs r2, 0xE5 + lsls r2, 3 + adds r0, r4, r2 + strh r5, [r0] + ldr r0, _0807D920 @ =gUnknown_83C6868 + ldrb r1, [r0] + subs r2, 0x2 + adds r0, r4, r2 + strh r1, [r0] + ldr r1, _0807D924 @ =0x0000072a + adds r0, r4, r1 + strh r5, [r0] + adds r2, 0x6 + adds r0, r4, r2 + strh r5, [r0] +_0807D90C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807D914: .4byte gUnknown_83C2BBC +_0807D918: .4byte 0x0000072e +_0807D91C: .4byte gUnknown_83C6870 +_0807D920: .4byte gUnknown_83C6868 +_0807D924: .4byte 0x0000072a + thumb_func_end sub_807D8D4 + + thumb_func_start sub_807D928 +sub_807D928: @ 807D928 + push {r4,lr} + bl sub_807D8D4 + ldr r0, _0807D950 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r2, _0807D954 @ =0x000006d2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0807D948 + adds r4, r1, r2 +_0807D93E: + bl sub_807D958 + ldrb r0, [r4] + cmp r0, 0 + beq _0807D93E +_0807D948: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807D950: .4byte gUnknown_83C2BBC +_0807D954: .4byte 0x000006d2 + thumb_func_end sub_807D928 + + thumb_func_start sub_807D958 +sub_807D958: @ 807D958 + push {r4-r7,lr} + bl sub_807C990 + ldr r0, _0807D9B8 @ =gUnknown_83C2BBC + ldr r5, [r0] + ldr r0, _0807D9BC @ =0x00000726 + adds r4, r5, r0 + ldrh r0, [r4] + adds r0, 0x1 + movs r6, 0 + strh r0, [r4] + ldr r1, _0807D9C0 @ =0x0000ffff + adds r7, r1, 0 + ldr r2, _0807D9C4 @ =gUnknown_83C6868 + movs r1, 0xE5 + lsls r1, 3 + adds r3, r5, r1 + ldrh r1, [r3] + adds r1, r2 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1] + cmp r0, r1 + bls _0807D9B0 + strh r6, [r4] + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] + ands r0, r7 + cmp r0, 0x7 + bls _0807D998 + strh r6, [r3] +_0807D998: + ldr r0, _0807D9C8 @ =0x0000072a + adds r4, r5, r0 + ldrh r0, [r4] + bl sub_807D9E8 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ands r0, r7 + cmp r0, 0xC + bls _0807D9B0 + strh r6, [r4] +_0807D9B0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807D9B8: .4byte gUnknown_83C2BBC +_0807D9BC: .4byte 0x00000726 +_0807D9C0: .4byte 0x0000ffff +_0807D9C4: .4byte gUnknown_83C6868 +_0807D9C8: .4byte 0x0000072a + thumb_func_end sub_807D958 + + thumb_func_start sub_807D9CC +sub_807D9CC: @ 807D9CC + push {lr} + bl sub_807CA50 + lsls r0, 24 + cmp r0, 0 + beq _0807D9DC + movs r0, 0x1 + b _0807D9E2 +_0807D9DC: + bl sub_807DA70 + movs r0, 0 +_0807D9E2: + pop {r1} + bx r1 + thumb_func_end sub_807D9CC + + thumb_func_start sub_807D9E8 +sub_807D9E8: @ 807D9E8 + push {r4,lr} + lsls r0, 16 + ldr r1, _0807DA58 @ =gUnknown_83C6878 + lsrs r0, 14 + adds r3, r0, r1 + adds r1, 0x2 + adds r0, r1 + ldr r1, _0807DA5C @ =gUnknown_2021BCA + ldrh r2, [r0] + ldrh r0, [r1] + subs r2, r0 + ldr r0, _0807DA60 @ =gUnknown_83C68BC + movs r4, 0 + ldrsh r1, [r3, r4] + lsls r2, 16 + asrs r2, 16 + movs r3, 0 + bl sub_8006FE0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _0807DA50 + ldr r0, _0807DA64 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1, 0x5] + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r3] + movs r0, 0 + strh r0, [r1, 0x2E] + strh r0, [r1, 0x30] + strh r0, [r1, 0x32] + ldr r0, _0807DA68 @ =gUnknown_83C2BBC + ldr r1, [r0] + ldr r0, _0807DA6C @ =0x0000072c + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0807DA50: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807DA58: .4byte gUnknown_83C6878 +_0807DA5C: .4byte gUnknown_2021BCA +_0807DA60: .4byte gUnknown_83C68BC +_0807DA64: .4byte gUnknown_202063C +_0807DA68: .4byte gUnknown_83C2BBC +_0807DA6C: .4byte 0x0000072c + thumb_func_end sub_807D9E8 + + thumb_func_start sub_807DA70 +sub_807DA70: @ 807DA70 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _0807DAA8 @ =gUnknown_202063C +_0807DA76: + lsls r0, r4, 4 + adds r0, r4 + lsls r2, r0, 2 + adds r0, r5, 0 + adds r0, 0x14 + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _0807DAAC @ =gUnknown_83C68BC + cmp r1, r0 + bne _0807DA90 + adds r0, r2, r5 + bl sub_8007280 +_0807DA90: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3F + bls _0807DA76 + ldr r0, _0807DAB0 @ =0x00001205 + bl sub_800874C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807DAA8: .4byte gUnknown_202063C +_0807DAAC: .4byte gUnknown_83C68BC +_0807DAB0: .4byte 0x00001205 + thumb_func_end sub_807DA70 + + thumb_func_start sub_807DAB4 +sub_807DAB4: @ 807DAB4 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + movs r2, 0 + adds r0, 0x2 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _0807DAF4 + strh r2, [r1, 0x2E] + movs r3, 0x30 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _0807DAE6 + ldrh r0, [r1, 0x24] + adds r0, 0x1 + strh r0, [r1, 0x24] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _0807DAF4 + movs r0, 0x1 + strh r0, [r1, 0x30] + b _0807DAF4 +_0807DAE6: + ldrh r0, [r1, 0x24] + subs r0, 0x1 + strh r0, [r1, 0x24] + lsls r0, 16 + cmp r0, 0 + bgt _0807DAF4 + strh r2, [r1, 0x30] +_0807DAF4: + ldrh r0, [r1, 0x22] + subs r0, 0x3 + strh r0, [r1, 0x22] + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x77 + ble _0807DB0E + adds r0, r1, 0 + bl sub_8007280 +_0807DB0E: + pop {r0} + bx r0 + thumb_func_end sub_807DAB4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fieldmap.s b/asm/fieldmap.s new file mode 100644 index 000000000..cb96948e3 --- /dev/null +++ b/asm/fieldmap.s @@ -0,0 +1,2400 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80589C4 +sub_80589C4: @ 80589C4 + push {lr} + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0x9] + adds r0, r2, 0 + bl sub_8055238 + pop {r1} + bx r1 + thumb_func_end sub_80589C4 + + thumb_func_start sub_80589D4 +sub_80589D4: @ 80589D4 + push {lr} + ldr r0, _080589E4 @ =gUnknown_2036DFC + bl sub_8058A00 + bl sub_8069C38 + pop {r0} + bx r0 + .align 2, 0 +_080589E4: .4byte gUnknown_2036DFC + thumb_func_end sub_80589D4 + + thumb_func_start sub_80589E8 +sub_80589E8: @ 80589E8 + push {lr} + ldr r0, _080589FC @ =gUnknown_2036DFC + bl sub_8058A00 + bl sub_80591C4 + bl sub_8069C38 + pop {r0} + bx r0 + .align 2, 0 +_080589FC: .4byte gUnknown_2036DFC + thumb_func_end sub_80589E8 + + thumb_func_start sub_8058A00 +sub_8058A00: @ 8058A00 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r5, [r6] + ldr r0, _08058A58 @ =0x03ff03ff + str r0, [sp] + ldr r4, _08058A5C @ =gUnknown_2031DFC + ldr r2, _08058A60 @ =0x01001400 + mov r0, sp + adds r1, r4, 0 + bl CpuFastSet + ldr r2, _08058A64 @ =gUnknown_3005040 + str r4, [r2, 0x8] + ldr r1, [r5] + adds r1, 0xF + str r1, [r2] + ldr r0, [r5, 0x4] + adds r0, 0xE + str r0, [r2, 0x4] + muls r1, r0 + movs r0, 0xA0 + lsls r0, 6 + cmp r1, r0 + ble _08058A3E + ldr r0, _08058A68 @ =gUnknown_8352F18 + ldr r2, _08058A6C @ =gUnknown_8352F4C + movs r1, 0x9E + movs r3, 0x1 + bl AGBAssert +_08058A3E: + ldr r0, [r5, 0xC] + ldrh r1, [r5] + ldrh r2, [r5, 0x4] + bl sub_8058A70 + adds r0, r6, 0 + bl sub_8058AC8 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08058A58: .4byte 0x03ff03ff +_08058A5C: .4byte gUnknown_2031DFC +_08058A60: .4byte 0x01001400 +_08058A64: .4byte gUnknown_3005040 +_08058A68: .4byte gUnknown_8352F18 +_08058A6C: .4byte gUnknown_8352F4C + thumb_func_end sub_8058A00 + + thumb_func_start sub_8058A70 +sub_8058A70: @ 8058A70 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _08058AC4 @ =gUnknown_3005040 + ldr r4, [r0, 0x8] + ldr r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, 0xE + adds r4, r0 + cmp r2, 0 + beq _08058AB8 + mov r0, r8 + lsls r6, r0, 1 + adds r5, r2, 0 + movs r0, 0x1E + adds r0, r6 + mov r9, r0 +_08058AA4: + adds r0, r7, 0 + adds r1, r4, 0 + mov r2, r8 + bl CpuSet + add r4, r9 + adds r7, r6 + subs r5, 0x1 + cmp r5, 0 + bne _08058AA4 +_08058AB8: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058AC4: .4byte gUnknown_3005040 + thumb_func_end sub_8058A70 + + thumb_func_start sub_8058AC8 +sub_8058AC8: @ 8058AC8 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r2, _08058B00 @ =gUnknown_2036E24 + ldr r0, _08058B04 @ =gUnknown_8352EEC + ldr r0, [r0] + str r0, [r2] + ldr r0, [r6, 0xC] + cmp r0, 0 + beq _08058B4C + ldr r1, [r0] + ldr r5, [r0, 0x4] + cmp r1, 0 + ble _08058B4C + adds r4, r2, 0 + adds r7, r1, 0 +_08058AE6: + adds r0, r5, 0 + bl sub_80589C4 + adds r1, r0, 0 + ldr r2, [r5, 0x4] + ldrb r0, [r5] + cmp r0, 0x2 + beq _08058B1E + cmp r0, 0x2 + bgt _08058B08 + cmp r0, 0x1 + beq _08058B12 + b _08058B44 + .align 2, 0 +_08058B00: .4byte gUnknown_2036E24 +_08058B04: .4byte gUnknown_8352EEC +_08058B08: + cmp r0, 0x3 + beq _08058B2A + cmp r0, 0x4 + beq _08058B36 + b _08058B44 +_08058B12: + adds r0, r6, 0 + bl sub_8058BB8 + ldrb r0, [r4] + movs r1, 0x1 + b _08058B40 +_08058B1E: + adds r0, r6, 0 + bl sub_8058C20 + ldrb r0, [r4] + movs r1, 0x2 + b _08058B40 +_08058B2A: + adds r0, r6, 0 + bl sub_8058C80 + ldrb r0, [r4] + movs r1, 0x4 + b _08058B40 +_08058B36: + adds r0, r6, 0 + bl sub_8058CE0 + ldrb r0, [r4] + movs r1, 0x8 +_08058B40: + orrs r0, r1 + strb r0, [r4] +_08058B44: + subs r7, 0x1 + adds r5, 0xC + cmp r7, 0 + bne _08058AE6 +_08058B4C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8058AC8 + + thumb_func_start sub_8058B54 +sub_8058B54: @ 8058B54 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r5, [sp, 0x18] + ldr r4, [r2] + ldr r7, [r4] + adds r2, r7, 0 + muls r2, r5 + adds r2, r3 + lsls r2, 1 + ldr r3, [r4, 0xC] + adds r6, r3, r2 + ldr r3, _08058BB0 @ =gUnknown_3005040 + ldr r2, [r3] + muls r1, r2 + adds r1, r0 + lsls r1, 1 + ldr r0, [r3, 0x8] + adds r5, r0, r1 + ldr r0, [sp, 0x20] + cmp r0, 0 + ble _08058BA6 + adds r4, r0, 0 + ldr r3, _08058BB4 @ =0x001fffff + mov r8, r3 +_08058B86: + adds r0, r6, 0 + adds r1, r5, 0 + ldr r2, [sp, 0x1C] + mov r3, r8 + ands r2, r3 + bl CpuSet + ldr r0, _08058BB0 @ =gUnknown_3005040 + ldr r0, [r0] + lsls r0, 1 + adds r5, r0 + lsls r0, r7, 1 + adds r6, r0 + subs r4, 0x1 + cmp r4, 0 + bne _08058B86 +_08058BA6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058BB0: .4byte gUnknown_3005040 +_08058BB4: .4byte 0x001fffff + thumb_func_end sub_8058B54 + + thumb_func_start sub_8058BB8 +sub_8058BB8: @ 8058BB8 + push {r4-r7,lr} + sub sp, 0xC + adds r3, r0, 0 + adds r5, r1, 0 + cmp r5, 0 + beq _08058C12 + ldr r0, [r5] + ldr r4, [r0] + adds r2, 0x7 + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r7, r0, 0x7 + cmp r2, 0 + bge _08058BEC + negs r6, r2 + adds r2, r4 + ldr r0, _08058BE8 @ =gUnknown_3005040 + ldr r3, [r0] + cmp r2, r3 + bge _08058BE2 + adds r3, r2, 0 +_08058BE2: + movs r2, 0 + b _08058BFC + .align 2, 0 +_08058BE8: .4byte gUnknown_3005040 +_08058BEC: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _08058C1C @ =gUnknown_3005040 + ldr r1, [r1] + subs r3, r1, r2 + cmp r0, r1 + bge _08058BFC + adds r3, r4, 0 +_08058BFC: + movs r0, 0 + str r0, [sp] + str r3, [sp, 0x4] + movs r0, 0x7 + str r0, [sp, 0x8] + adds r0, r2, 0 + adds r1, r7, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8058B54 +_08058C12: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058C1C: .4byte gUnknown_3005040 + thumb_func_end sub_8058BB8 + + thumb_func_start sub_8058C20 +sub_8058C20: @ 8058C20 + push {r4-r7,lr} + sub sp, 0xC + adds r5, r1, 0 + cmp r5, 0 + beq _08058C74 + ldr r0, [r5] + ldr r4, [r0] + ldr r0, [r0, 0x4] + adds r2, 0x7 + subs r7, r0, 0x7 + cmp r2, 0 + bge _08058C50 + negs r6, r2 + adds r2, r4 + ldr r0, _08058C4C @ =gUnknown_3005040 + ldr r3, [r0] + cmp r2, r3 + bge _08058C46 + adds r3, r2, 0 +_08058C46: + movs r2, 0 + b _08058C60 + .align 2, 0 +_08058C4C: .4byte gUnknown_3005040 +_08058C50: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _08058C7C @ =gUnknown_3005040 + ldr r1, [r1] + subs r3, r1, r2 + cmp r0, r1 + bge _08058C60 + adds r3, r4, 0 +_08058C60: + str r7, [sp] + str r3, [sp, 0x4] + movs r0, 0x7 + str r0, [sp, 0x8] + adds r0, r2, 0 + movs r1, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8058B54 +_08058C74: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058C7C: .4byte gUnknown_3005040 + thumb_func_end sub_8058C20 + + thumb_func_start sub_8058C80 +sub_8058C80: @ 8058C80 + push {r4-r7,lr} + sub sp, 0xC + adds r5, r1, 0 + cmp r5, 0 + beq _08058CD4 + ldr r0, [r5] + ldr r1, [r0] + ldr r4, [r0, 0x4] + adds r2, 0x7 + subs r7, r1, 0x7 + cmp r2, 0 + bge _08058CB0 + negs r6, r2 + adds r1, r2, r4 + ldr r0, _08058CAC @ =gUnknown_3005040 + ldr r3, [r0, 0x4] + cmp r1, r3 + bge _08058CA6 + adds r3, r1, 0 +_08058CA6: + movs r2, 0 + b _08058CC0 + .align 2, 0 +_08058CAC: .4byte gUnknown_3005040 +_08058CB0: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _08058CDC @ =gUnknown_3005040 + ldr r1, [r1, 0x4] + subs r3, r1, r2 + cmp r0, r1 + bge _08058CC0 + adds r3, r4, 0 +_08058CC0: + str r6, [sp] + movs r0, 0x7 + str r0, [sp, 0x4] + str r3, [sp, 0x8] + movs r0, 0 + adds r1, r2, 0 + adds r2, r5, 0 + adds r3, r7, 0 + bl sub_8058B54 +_08058CD4: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058CDC: .4byte gUnknown_3005040 + thumb_func_end sub_8058C80 + + thumb_func_start sub_8058CE0 +sub_8058CE0: @ 8058CE0 + push {r4-r7,lr} + sub sp, 0xC + adds r3, r0, 0 + adds r5, r1, 0 + cmp r5, 0 + beq _08058D38 + ldr r0, [r5] + ldr r4, [r0, 0x4] + ldr r0, [r3] + ldr r0, [r0] + adds r7, r0, 0x7 + adds r2, 0x7 + cmp r2, 0 + bge _08058D14 + negs r6, r2 + adds r1, r2, r4 + ldr r0, _08058D10 @ =gUnknown_3005040 + ldr r3, [r0, 0x4] + cmp r1, r3 + bge _08058D0A + adds r3, r1, 0 +_08058D0A: + movs r2, 0 + b _08058D24 + .align 2, 0 +_08058D10: .4byte gUnknown_3005040 +_08058D14: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _08058D40 @ =gUnknown_3005040 + ldr r1, [r1, 0x4] + subs r3, r1, r2 + cmp r0, r1 + bge _08058D24 + adds r3, r4, 0 +_08058D24: + str r6, [sp] + movs r0, 0x8 + str r0, [sp, 0x4] + str r3, [sp, 0x8] + adds r0, r7, 0 + adds r1, r2, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_8058B54 +_08058D38: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058D40: .4byte gUnknown_3005040 + thumb_func_end sub_8058CE0 + + thumb_func_start sub_8058D44 +sub_8058D44: @ 8058D44 + push {r4-r7,lr} + adds r2, r0, 0 + adds r7, r1, 0 + cmp r2, 0 + blt _08058D74 + ldr r1, _08058D70 @ =gUnknown_3005040 + ldr r3, [r1] + cmp r2, r3 + bge _08058D74 + cmp r7, 0 + blt _08058D74 + ldr r0, [r1, 0x4] + cmp r7, r0 + bge _08058D74 + adds r0, r3, 0 + muls r0, r7 + adds r0, r2, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _08058DA8 + .align 2, 0 +_08058D70: .4byte gUnknown_3005040 +_08058D74: + ldr r0, _08058DB4 @ =gUnknown_2036DFC + ldr r6, [r0] + subs r0, r2, 0x7 + ldrb r5, [r6, 0x18] + lsls r1, r5, 3 + adds r0, r1 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + subs r0, r7, 0x7 + ldrb r1, [r6, 0x19] + lsls r2, r1, 3 + adds r0, r2 + bl __modsi3 + muls r0, r5 + adds r4, r0 + ldr r0, [r6, 0x8] + lsls r4, 1 + adds r4, r0 + ldrh r1, [r4] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + orrs r1, r0 +_08058DA8: + ldr r0, _08058DB8 @ =0x000003ff + cmp r1, r0 + beq _08058DBC + lsrs r0, r1, 12 + b _08058DBE + .align 2, 0 +_08058DB4: .4byte gUnknown_2036DFC +_08058DB8: .4byte 0x000003ff +_08058DBC: + movs r0, 0 +_08058DBE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8058D44 + + thumb_func_start sub_8058DC4 +sub_8058DC4: @ 8058DC4 + push {r4-r7,lr} + adds r2, r0, 0 + adds r7, r1, 0 + cmp r2, 0 + blt _08058DF4 + ldr r1, _08058DF0 @ =gUnknown_3005040 + ldr r3, [r1] + cmp r2, r3 + bge _08058DF4 + cmp r7, 0 + blt _08058DF4 + ldr r0, [r1, 0x4] + cmp r7, r0 + bge _08058DF4 + adds r0, r3, 0 + muls r0, r7 + adds r0, r2, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _08058E28 + .align 2, 0 +_08058DF0: .4byte gUnknown_3005040 +_08058DF4: + ldr r0, _08058E38 @ =gUnknown_2036DFC + ldr r6, [r0] + subs r0, r2, 0x7 + ldrb r5, [r6, 0x18] + lsls r1, r5, 3 + adds r0, r1 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + subs r0, r7, 0x7 + ldrb r1, [r6, 0x19] + lsls r2, r1, 3 + adds r0, r2 + bl __modsi3 + muls r0, r5 + adds r4, r0 + ldr r0, [r6, 0x8] + lsls r4, 1 + adds r4, r0 + ldrh r1, [r4] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + orrs r1, r0 +_08058E28: + ldr r0, _08058E3C @ =0x000003ff + cmp r1, r0 + beq _08058E40 + movs r0, 0xC0 + lsls r0, 4 + ands r1, r0 + lsrs r0, r1, 10 + b _08058E42 + .align 2, 0 +_08058E38: .4byte gUnknown_2036DFC +_08058E3C: .4byte 0x000003ff +_08058E40: + movs r0, 0x1 +_08058E42: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8058DC4 + + thumb_func_start sub_8058E48 +sub_8058E48: @ 8058E48 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + mov r9, r1 + cmp r0, 0 + blt _08058E80 + ldr r1, _08058E7C @ =gUnknown_3005040 + ldr r2, [r1] + cmp r8, r2 + bge _08058E80 + mov r0, r9 + cmp r0, 0 + blt _08058E80 + ldr r0, [r1, 0x4] + cmp r9, r0 + bge _08058E80 + mov r0, r9 + muls r0, r2 + add r0, r8 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r7, [r0] + b _08058EBA + .align 2, 0 +_08058E7C: .4byte gUnknown_3005040 +_08058E80: + ldr r0, _08058EC8 @ =gUnknown_2036DFC + ldr r6, [r0] + mov r0, r8 + subs r0, 0x7 + ldrb r5, [r6, 0x18] + lsls r1, r5, 3 + adds r0, r1 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + mov r0, r9 + subs r0, 0x7 + ldrb r1, [r6, 0x19] + lsls r2, r1, 3 + adds r0, r2 + bl __modsi3 + muls r0, r5 + adds r4, r0 + ldr r0, [r6, 0x8] + lsls r4, 1 + adds r4, r0 + ldrh r1, [r4] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + adds r7, r0, 0 + orrs r7, r1 +_08058EBA: + ldr r0, _08058ECC @ =0x000003ff + cmp r7, r0 + beq _08058ED0 + ands r7, r0 + adds r0, r7, 0 + b _08058F0A + .align 2, 0 +_08058EC8: .4byte gUnknown_2036DFC +_08058ECC: .4byte 0x000003ff +_08058ED0: + ldr r0, _08058F18 @ =gUnknown_2036DFC + ldr r6, [r0] + mov r0, r8 + subs r0, 0x7 + ldrb r5, [r6, 0x18] + lsls r1, r5, 3 + adds r0, r1 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + mov r0, r9 + subs r0, 0x7 + ldrb r1, [r6, 0x19] + lsls r2, r1, 3 + adds r0, r2 + bl __modsi3 + muls r0, r5 + adds r4, r0 + ldr r0, [r6, 0x8] + lsls r4, 1 + adds r4, r0 + ldrh r0, [r4] + movs r2, 0xC0 + lsls r2, 4 + adds r1, r2, 0 + orrs r0, r1 + ands r0, r7 +_08058F0A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08058F18: .4byte gUnknown_2036DFC + thumb_func_end sub_8058E48 + + thumb_func_start sub_8058F1C +sub_8058F1C: @ 8058F1C + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r3, r1, 24 + cmp r3, 0x7 + bhi _08058F3A + ldr r1, _08058F40 @ =gUnknown_8352EF0 + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + ldr r0, _08058F44 @ =gUnknown_8352F10 + adds r0, r3, r0 + ldrb r0, [r0] + lsrs r2, r0 +_08058F3A: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_08058F40: .4byte gUnknown_8352EF0 +_08058F44: .4byte gUnknown_8352F10 + thumb_func_end sub_8058F1C + + thumb_func_start sub_8058F48 +sub_8058F48: @ 8058F48 + push {r4,lr} + adds r4, r2, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_8058E48 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _08058F74 @ =gUnknown_2036DFC + ldr r0, [r0] + adds r2, r4, 0 + bl sub_8059080 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08058F74: .4byte gUnknown_2036DFC + thumb_func_end sub_8058F48 + + thumb_func_start sub_8058F78 +sub_8058F78: @ 8058F78 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + movs r2, 0 + bl sub_8058F48 + pop {r1} + bx r1 + thumb_func_end sub_8058F78 + + thumb_func_start sub_8058F8C +sub_8058F8C: @ 8058F8C + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x6 + bl sub_8058F48 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8058F8C + + thumb_func_start sub_8058FA4 +sub_8058FA4: @ 8058FA4 + push {r4,r5,lr} + adds r3, r0, 0 + lsls r2, 16 + lsrs r5, r2, 16 + cmp r3, 0 + blt _08058FDC + ldr r2, _08058FE4 @ =gUnknown_3005040 + ldr r4, [r2] + cmp r3, r4 + bge _08058FDC + cmp r1, 0 + blt _08058FDC + ldr r0, [r2, 0x4] + cmp r1, r0 + bge _08058FDC + muls r1, r4 + adds r1, r3, r1 + ldr r0, [r2, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + movs r2, 0xF0 + lsls r2, 8 + ands r2, r0 + ldr r0, _08058FE8 @ =0x00000fff + ands r0, r5 + orrs r2, r0 + strh r2, [r1] +_08058FDC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08058FE4: .4byte gUnknown_3005040 +_08058FE8: .4byte 0x00000fff + thumb_func_end sub_8058FA4 + + thumb_func_start sub_8058FEC +sub_8058FEC: @ 8058FEC + push {r4,r5,lr} + adds r3, r0, 0 + lsls r2, 16 + lsrs r5, r2, 16 + cmp r3, 0 + blt _08059018 + ldr r2, _08059020 @ =gUnknown_3005040 + ldr r4, [r2] + cmp r3, r4 + bge _08059018 + cmp r1, 0 + blt _08059018 + ldr r0, [r2, 0x4] + cmp r1, r0 + bge _08059018 + adds r0, r4, 0 + muls r0, r1 + adds r0, r3, r0 + ldr r1, [r2, 0x8] + lsls r0, 1 + adds r0, r1 + strh r5, [r0] +_08059018: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059020: .4byte gUnknown_3005040 + thumb_func_end sub_8058FEC + + thumb_func_start sub_8059024 +sub_8059024: @ 8059024 + push {r4,r5,lr} + adds r4, r0, 0 + adds r3, r1, 0 + adds r5, r2, 0 + cmp r4, 0 + blt _08059076 + ldr r2, _08059060 @ =gUnknown_3005040 + ldr r1, [r2] + cmp r4, r1 + bge _08059076 + cmp r3, 0 + blt _08059076 + ldr r0, [r2, 0x4] + cmp r3, r0 + bge _08059076 + cmp r5, 0 + beq _08059064 + adds r0, r1, 0 + muls r0, r3 + adds r0, r4, r0 + ldr r1, [r2, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r3, 0xC0 + lsls r3, 4 + adds r2, r3, 0 + orrs r1, r2 + strh r1, [r0] + b _08059076 + .align 2, 0 +_08059060: .4byte gUnknown_3005040 +_08059064: + muls r1, r3 + adds r1, r4, r1 + ldr r0, [r2, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r2, [r1] + ldr r0, _0805907C @ =0x0000f3ff + ands r0, r2 + strh r0, [r1] +_08059076: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805907C: .4byte 0x0000f3ff + thumb_func_end sub_8059024 + + thumb_func_start sub_8059080 +sub_8059080: @ 8059080 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r3, r1, 16 + adds r5, r3, 0 + lsls r2, 24 + lsrs r2, 24 + adds r6, r2, 0 + ldr r0, _080590A4 @ =0x0000027f + cmp r3, r0 + bhi _080590A8 + ldr r0, [r4, 0x10] + ldr r1, [r0, 0x14] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + adds r1, r2, 0 + b _080590C8 + .align 2, 0 +_080590A4: .4byte 0x0000027f +_080590A8: + ldr r0, _080590B4 @ =0x000003ff + cmp r3, r0 + bls _080590B8 + movs r0, 0xFF + b _080590CC + .align 2, 0 +_080590B4: .4byte 0x000003ff +_080590B8: + ldr r0, [r4, 0x14] + ldr r1, [r0, 0x14] + lsls r0, r5, 2 + adds r0, r1 + ldr r1, _080590D4 @ =0xfffff600 + adds r0, r1 + ldr r0, [r0] + adds r1, r6, 0 +_080590C8: + bl sub_8058F1C +_080590CC: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080590D4: .4byte 0xfffff600 + thumb_func_end sub_8059080 + + thumb_func_start sub_80590D8 +sub_80590D8: @ 80590D8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08059144 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _08059148 @ =0x00000898 + adds r4, r0, r1 + ldr r0, _0805914C @ =gUnknown_3005040 + ldr r0, [r0] + mov r8, r0 + ldr r0, _08059150 @ =gUnknown_3005008 + ldr r0, [r0] + movs r2, 0 + ldrsh r6, [r0, r2] + movs r1, 0x2 + ldrsh r0, [r0, r1] + adds r1, r0, 0 + adds r1, 0xE + cmp r0, r1 + bge _08059138 + mov r12, r1 + ldr r2, _08059154 @ =gUnknown_2031DFC + mov r9, r2 + lsls r7, r6, 1 +_0805910A: + adds r1, r6, 0 + adds r3, r1, 0 + adds r3, 0xF + adds r5, r0, 0x1 + cmp r1, r3 + bge _08059132 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 1 + add r0, r9 + adds r2, r7, r0 + subs r1, r3, r1 +_08059124: + ldrh r0, [r2] + strh r0, [r4] + adds r4, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _08059124 +_08059132: + adds r0, r5, 0 + cmp r0, r12 + blt _0805910A +_08059138: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08059144: .4byte gUnknown_300500C +_08059148: .4byte 0x00000898 +_0805914C: .4byte gUnknown_3005040 +_08059150: .4byte gUnknown_3005008 +_08059154: .4byte gUnknown_2031DFC + thumb_func_end sub_80590D8 + + thumb_func_start sub_8059158 +sub_8059158: @ 8059158 + push {r4,lr} + movs r2, 0 + movs r1, 0 + ldr r0, _08059184 @ =gUnknown_300500C + ldr r0, [r0] + ldr r4, _08059188 @ =0x00000898 + adds r3, r0, r4 + ldr r4, _0805918C @ =0x000001ff +_08059168: + lsls r0, r1, 1 + adds r0, r3, r0 + ldrh r0, [r0] + orrs r2, r0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + bls _08059168 + cmp r2, 0 + beq _08059190 + movs r0, 0 + b _08059192 + .align 2, 0 +_08059184: .4byte gUnknown_300500C +_08059188: .4byte 0x00000898 +_0805918C: .4byte 0x000001ff +_08059190: + movs r0, 0x1 +_08059192: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8059158 + + thumb_func_start sub_8059198 +sub_8059198: @ 8059198 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r0, _080591B8 @ =gUnknown_300500C + ldr r1, [r0] + ldr r0, _080591BC @ =0x00000898 + adds r1, r0 + ldr r2, _080591C0 @ =0x01000100 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080591B8: .4byte gUnknown_300500C +_080591BC: .4byte 0x00000898 +_080591C0: .4byte 0x01000100 + thumb_func_end sub_8059198 + + thumb_func_start sub_80591C4 +sub_80591C4: @ 80591C4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0805923C @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _08059240 @ =0x00000898 + adds r4, r0, r1 + bl sub_8059158 + cmp r0, 0 + bne _08059230 + ldr r0, _08059244 @ =gUnknown_3005040 + ldr r0, [r0] + mov r8, r0 + ldr r0, _08059248 @ =gUnknown_3005008 + ldr r0, [r0] + movs r2, 0 + ldrsh r6, [r0, r2] + movs r1, 0x2 + ldrsh r0, [r0, r1] + adds r1, r0, 0 + adds r1, 0xE + cmp r0, r1 + bge _0805922C + mov r12, r1 + ldr r2, _0805924C @ =gUnknown_2031DFC + mov r9, r2 + lsls r7, r6, 1 +_080591FE: + adds r1, r6, 0 + adds r3, r1, 0 + adds r3, 0xF + adds r5, r0, 0x1 + cmp r1, r3 + bge _08059226 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 1 + add r0, r9 + adds r2, r7, r0 + subs r1, r3, r1 +_08059218: + ldrh r0, [r4] + strh r0, [r2] + adds r4, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _08059218 +_08059226: + adds r0, r5, 0 + cmp r0, r12 + blt _080591FE +_0805922C: + bl sub_8059198 +_08059230: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805923C: .4byte gUnknown_300500C +_08059240: .4byte 0x00000898 +_08059244: .4byte gUnknown_3005040 +_08059248: .4byte gUnknown_3005008 +_0805924C: .4byte gUnknown_2031DFC + thumb_func_end sub_80591C4 + + thumb_func_start sub_8059250 +sub_8059250: @ 8059250 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + ldr r0, _0805929C @ =gUnknown_300500C + ldr r0, [r0] + ldr r3, _080592A0 @ =0x00000898 + adds r3, r0, r3 + str r3, [sp, 0x4] + ldr r0, _080592A4 @ =gUnknown_3005040 + ldr r0, [r0] + str r0, [sp] + movs r4, 0 + mov r9, r4 + mov r8, r4 + ldr r0, _080592A8 @ =gUnknown_3005008 + ldr r0, [r0] + movs r3, 0 + ldrsh r6, [r0, r3] + str r6, [sp, 0x8] + movs r4, 0x2 + ldrsh r5, [r0, r4] + movs r7, 0xF + movs r6, 0xE + mov r12, r6 + cmp r1, 0x2 + beq _080592B6 + cmp r1, 0x2 + bgt _080592AC + cmp r1, 0x1 + beq _080592BE + b _080592D6 + .align 2, 0 +_0805929C: .4byte gUnknown_300500C +_080592A0: .4byte 0x00000898 +_080592A4: .4byte gUnknown_3005040 +_080592A8: .4byte gUnknown_3005008 +_080592AC: + cmp r2, 0x3 + beq _080592C8 + cmp r2, 0x4 + beq _080592D0 + b _080592D6 +_080592B6: + adds r5, 0x1 + movs r0, 0xD + mov r12, r0 + b _080592D6 +_080592BE: + movs r1, 0x1 + mov r8, r1 + movs r3, 0xD + mov r12, r3 + b _080592D6 +_080592C8: + ldr r4, [sp, 0x8] + adds r4, 0x1 + str r4, [sp, 0x8] + b _080592D4 +_080592D0: + movs r6, 0x1 + mov r9, r6 +_080592D4: + movs r7, 0xE +_080592D6: + movs r1, 0 + cmp r1, r12 + bge _0805931A + ldr r0, _08059330 @ =gUnknown_2031DFC + mov r10, r0 +_080592E0: + adds r4, r1, 0x1 + cmp r7, 0 + beq _08059314 + adds r0, r1, r5 + ldr r3, [sp] + adds r2, r3, 0 + muls r2, r0 + add r1, r8 + lsls r0, r1, 4 + subs r0, r1 + add r0, r9 + ldr r6, [sp, 0x8] + adds r2, r6, r2 + adds r3, r7, 0 + lsls r2, 1 + add r2, r10 + lsls r0, 1 + ldr r6, [sp, 0x4] + adds r1, r0, r6 +_08059306: + ldrh r0, [r1] + strh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bne _08059306 +_08059314: + adds r1, r4, 0 + cmp r1, r12 + blt _080592E0 +_0805931A: + bl sub_8059198 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08059330: .4byte gUnknown_2031DFC + thumb_func_end sub_8059250 + + thumb_func_start sub_8059334 +sub_8059334: @ 8059334 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + mov r8, r1 + cmp r7, 0 + blt _08059374 + ldr r1, _0805936C @ =gUnknown_3005040 + ldr r2, [r1] + cmp r7, r2 + bge _08059374 + mov r0, r8 + cmp r0, 0 + blt _08059374 + ldr r0, [r1, 0x4] + cmp r8, r0 + bge _08059374 + mov r0, r8 + muls r0, r2 + adds r0, r7, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _08059370 @ =0x000003ff + cmp r1, r0 + beq _08059422 + b _080593B0 + .align 2, 0 +_0805936C: .4byte gUnknown_3005040 +_08059370: .4byte 0x000003ff +_08059374: + ldr r0, _080593CC @ =gUnknown_2036DFC + ldr r6, [r0] + subs r0, r7, 0x7 + ldrb r5, [r6, 0x18] + lsls r1, r5, 3 + adds r0, r1 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + mov r0, r8 + subs r0, 0x7 + ldrb r1, [r6, 0x19] + lsls r2, r1, 3 + adds r0, r2 + bl __modsi3 + muls r0, r5 + adds r4, r0 + ldr r0, [r6, 0x8] + lsls r4, 1 + adds r4, r0 + ldrh r1, [r4] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + orrs r0, r1 + ldr r1, _080593D0 @ =0x000003ff + cmp r0, r1 + beq _08059422 +_080593B0: + ldr r1, _080593D4 @ =gUnknown_3005040 + ldr r0, [r1] + subs r0, 0x8 + cmp r7, r0 + blt _080593DC + ldr r0, _080593D8 @ =gUnknown_2036E24 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08059422 + movs r0, 0x4 + b _08059432 + .align 2, 0 +_080593CC: .4byte gUnknown_2036DFC +_080593D0: .4byte 0x000003ff +_080593D4: .4byte gUnknown_3005040 +_080593D8: .4byte gUnknown_2036E24 +_080593DC: + cmp r7, 0x6 + bgt _080593F4 + ldr r0, _080593F0 @ =gUnknown_2036E24 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08059422 + movs r0, 0x3 + b _08059432 + .align 2, 0 +_080593F0: .4byte gUnknown_2036E24 +_080593F4: + ldr r0, [r1, 0x4] + subs r0, 0x7 + cmp r8, r0 + blt _08059410 + ldr r0, _0805940C @ =gUnknown_2036E24 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08059422 + movs r0, 0x1 + b _08059432 + .align 2, 0 +_0805940C: .4byte gUnknown_2036E24 +_08059410: + mov r0, r8 + cmp r0, 0x6 + bgt _08059430 + ldr r0, _08059428 @ =gUnknown_2036E24 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0805942C +_08059422: + movs r0, 0x1 + negs r0, r0 + b _08059432 + .align 2, 0 +_08059428: .4byte gUnknown_2036E24 +_0805942C: + movs r0, 0x2 + b _08059432 +_08059430: + movs r0, 0 +_08059432: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8059334 + + thumb_func_start sub_805943C +sub_805943C: @ 805943C + push {r4,lr} + adds r3, r1, 0 + ldr r1, _08059460 @ =gUnknown_3005008 + ldr r1, [r1] + movs r4, 0 + ldrsh r2, [r1, r4] + adds r0, 0x7 + adds r2, r0 + movs r0, 0x2 + ldrsh r1, [r1, r0] + adds r3, 0x7 + adds r1, r3 + adds r0, r2, 0 + bl sub_8059334 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08059460: .4byte gUnknown_3005008 + thumb_func_end sub_805943C + + thumb_func_start sub_8059464 +sub_8059464: @ 8059464 + push {r4,r5,lr} + ldr r1, _0805949C @ =gUnknown_3005008 + ldr r4, [r1] + movs r1, 0 + ldrsh r3, [r4, r1] + ldr r2, _080594A0 @ =gUnknown_826D2D8 + lsls r0, 3 + adds r1, r0, r2 + ldr r1, [r1] + adds r1, 0x7 + adds r3, r1 + movs r5, 0x2 + ldrsh r1, [r4, r5] + adds r2, 0x4 + adds r0, r2 + ldr r0, [r0] + adds r0, 0x7 + adds r1, r0 + adds r0, r3, 0 + bl sub_8059334 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _080594A4 + movs r0, 0x1 + b _080594A6 + .align 2, 0 +_0805949C: .4byte gUnknown_3005008 +_080594A0: .4byte gUnknown_826D2D8 +_080594A4: + movs r0, 0 +_080594A6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8059464 + + thumb_func_start sub_80594AC +sub_80594AC: @ 80594AC + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + bl sub_80589C4 + adds r3, r0, 0 + cmp r4, 0x2 + beq _08059514 + cmp r4, 0x2 + bgt _080594CA + cmp r4, 0x1 + beq _08059500 + b _08059526 +_080594CA: + cmp r4, 0x3 + beq _080594E8 + cmp r4, 0x4 + bne _08059526 + ldr r0, _080594E4 @ =gUnknown_3005008 + ldr r1, [r0] + negs r0, r6 + strh r0, [r1] + ldr r2, [r5, 0x4] + ldrh r0, [r1, 0x2] + subs r0, r2 + b _08059524 + .align 2, 0 +_080594E4: .4byte gUnknown_3005008 +_080594E8: + ldr r0, _080594FC @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, [r3] + ldr r0, [r0] + strh r0, [r1] + ldr r2, [r5, 0x4] + ldrh r0, [r1, 0x2] + subs r0, r2 + b _08059524 + .align 2, 0 +_080594FC: .4byte gUnknown_3005008 +_08059500: + ldr r0, _08059510 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, [r5, 0x4] + ldrh r0, [r1] + subs r0, r2 + strh r0, [r1] + negs r0, r7 + b _08059524 + .align 2, 0 +_08059510: .4byte gUnknown_3005008 +_08059514: + ldr r0, _0805952C @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, [r5, 0x4] + ldrh r0, [r1] + subs r0, r2 + strh r0, [r1] + ldr r0, [r3] + ldr r0, [r0, 0x4] +_08059524: + strh r0, [r1, 0x2] +_08059526: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805952C: .4byte gUnknown_3005008 + thumb_func_end sub_80594AC + + thumb_func_start sub_8059530 +sub_8059530: @ 8059530 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r10, r0 + mov r9, r1 + ldr r1, _08059570 @ =gUnknown_2036E18 + ldrb r0, [r1] + movs r1, 0x2 + negs r1, r1 + ands r1, r0 + ldr r2, _08059570 @ =gUnknown_2036E18 + strb r1, [r2] + mov r0, r10 + mov r1, r9 + bl sub_805943C + adds r7, r0, 0 + adds r0, r7, 0x1 + cmp r0, 0x1 + bhi _08059578 + ldr r0, _08059574 @ =gUnknown_3005008 + ldr r1, [r0] + ldrh r0, [r1] + add r0, r10 + strh r0, [r1] + ldrh r0, [r1, 0x2] + add r0, r9 + strh r0, [r1, 0x2] + b _080595E2 + .align 2, 0 +_08059570: .4byte gUnknown_2036E18 +_08059574: .4byte gUnknown_3005008 +_08059578: + bl sub_80590D8 + ldr r1, _080595F8 @ =gUnknown_3005008 + ldr r0, [r1] + movs r2, 0 + ldrsh r5, [r0, r2] + movs r1, 0x2 + ldrsh r6, [r0, r1] + lsls r2, r7, 24 + lsrs r2, 24 + mov r8, r2 + mov r0, r8 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8059600 + adds r4, r0, 0 + adds r1, r7, 0 + mov r2, r10 + mov r3, r9 + bl sub_80594AC + ldrb r0, [r4, 0x8] + ldrb r1, [r4, 0x9] + bl sub_8055864 + ldr r1, _080595FC @ =gUnknown_2036E18 + ldrb r0, [r1] + movs r1, 0x1 + orrs r0, r1 + ldr r2, _080595FC @ =gUnknown_2036E18 + strb r0, [r2] + ldr r0, _080595F8 @ =gUnknown_3005008 + ldr r1, [r0] + movs r2, 0 + ldrsh r0, [r1, r2] + subs r5, r0 + ldr r0, _080595FC @ =gUnknown_2036E18 + str r5, [r0, 0x4] + movs r2, 0x2 + ldrsh r0, [r1, r2] + subs r6, r0 + ldr r0, _080595FC @ =gUnknown_2036E18 + str r6, [r0, 0x8] + ldrh r0, [r1] + add r0, r10 + strh r0, [r1] + ldrh r0, [r1, 0x2] + add r0, r9 + strh r0, [r1, 0x2] + mov r0, r8 + bl sub_8059250 +_080595E2: + ldr r0, _080595FC @ =gUnknown_2036E18 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080595F8: .4byte gUnknown_3005008 +_080595FC: .4byte gUnknown_2036E18 + thumb_func_end sub_8059530 + + thumb_func_start sub_8059600 +sub_8059600: @ 8059600 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r1 + mov r8, r2 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0805963C @ =gUnknown_2036DFC + ldr r0, [r0, 0xC] + ldr r7, [r0] + ldr r4, [r0, 0x4] + movs r5, 0 + cmp r5, r7 + bge _08059648 +_0805961E: + ldrb r0, [r4] + cmp r0, r6 + bne _08059640 + adds r0, r6, 0 + mov r1, r9 + mov r2, r8 + adds r3, r4, 0 + bl sub_8059658 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08059640 + adds r0, r4, 0 + b _0805964A + .align 2, 0 +_0805963C: .4byte gUnknown_2036DFC +_08059640: + adds r5, 0x1 + adds r4, 0xC + cmp r5, r7 + blt _0805961E +_08059648: + movs r0, 0 +_0805964A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8059600 + + thumb_func_start sub_8059658 +sub_8059658: @ 8059658 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r1, 0 + mov r8, r2 + adds r5, r3, 0 + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + adds r0, r5, 0 + bl sub_80589C4 + adds r2, r0, 0 + cmp r4, 0x1 + blt _080596B0 + cmp r4, 0x2 + bgt _08059690 + ldr r0, _0805968C @ =gUnknown_2036DFC + ldr r0, [r0] + ldr r1, [r0] + ldr r0, [r2] + ldr r2, [r0] + ldr r3, [r5, 0x4] + adds r0, r7, 0 + b _080596A2 + .align 2, 0 +_0805968C: .4byte gUnknown_2036DFC +_08059690: + cmp r6, 0x4 + bgt _080596B0 + ldr r0, _080596AC @ =gUnknown_2036DFC + ldr r0, [r0] + ldr r1, [r0, 0x4] + ldr r0, [r2] + ldr r2, [r0, 0x4] + ldr r3, [r5, 0x4] + mov r0, r8 +_080596A2: + bl sub_80596BC + lsls r0, 24 + lsrs r0, 24 + b _080596B2 + .align 2, 0 +_080596AC: .4byte gUnknown_2036DFC +_080596B0: + movs r0, 0 +_080596B2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8059658 + + thumb_func_start sub_80596BC +sub_80596BC: @ 80596BC + push {r4,lr} + adds r4, r0, 0 + adds r0, r2, 0 + adds r2, r3, 0 + cmp r3, 0 + bge _080596CA + movs r3, 0 +_080596CA: + adds r2, r0, r2 + cmp r2, r1 + bge _080596D2 + adds r1, r2, 0 +_080596D2: + cmp r3, r4 + bgt _080596DE + cmp r4, r1 + bgt _080596DE + movs r0, 0x1 + b _080596E0 +_080596DE: + movs r0, 0 +_080596E0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80596BC + + thumb_func_start sub_80596E8 +sub_80596E8: @ 80596E8 + push {lr} + cmp r0, 0 + blt _080596F6 + cmp r0, r1 + bge _080596F6 + movs r0, 0x1 + b _080596F8 +_080596F6: + movs r0, 0 +_080596F8: + pop {r1} + bx r1 + thumb_func_end sub_80596E8 + + thumb_func_start sub_80596FC +sub_80596FC: @ 80596FC + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + bl sub_80589C4 + adds r1, r0, 0 + ldrb r0, [r4] + cmp r0, 0x1 + blt _08059734 + cmp r0, 0x2 + bgt _08059722 + ldr r0, [r4, 0x4] + subs r0, r5, r0 + ldr r1, [r1] + ldr r1, [r1] + bl sub_80596E8 + b _08059736 +_08059722: + cmp r0, 0x4 + bgt _08059734 + ldr r0, [r4, 0x4] + subs r0, r6, r0 + ldr r1, [r1] + ldr r1, [r1, 0x4] + bl sub_80596E8 + b _08059736 +_08059734: + movs r0, 0 +_08059736: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80596FC + + thumb_func_start sub_805973C +sub_805973C: @ 805973C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _0805975C @ =gUnknown_2036DFC + ldr r0, [r2, 0xC] + cmp r0, 0 + bne _08059764 + b _080597DA + .align 2, 0 +_0805975C: .4byte gUnknown_2036DFC +_08059760: + adds r0, r4, 0 + b _080597DC +_08059764: + ldr r7, [r0] + ldr r4, [r0, 0x4] + movs r6, 0 + cmp r6, r7 + bge _080597DA + lsls r0, r1, 16 + asrs r5, r0, 16 + mov r9, r2 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + mov r10, r0 +_0805977C: + ldrb r1, [r4] + adds r3, r1, 0 + subs r0, r1, 0x5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080597D2 + cmp r1, 0x2 + bne _08059792 + cmp r5, 0x6 + bgt _080597D2 +_08059792: + cmp r1, 0x1 + bne _080597A2 + mov r2, r9 + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r0, 0x7 + cmp r5, r0 + blt _080597D2 +_080597A2: + mov r0, r8 + lsls r2, r0, 16 + cmp r1, 0x3 + bne _080597B0 + mov r1, r10 + cmp r1, 0x6 + bgt _080597D2 +_080597B0: + cmp r3, 0x4 + bne _080597C2 + asrs r1, r2, 16 + mov r3, r9 + ldr r0, [r3] + ldr r0, [r0] + adds r0, 0x7 + cmp r1, r0 + blt _080597D2 +_080597C2: + asrs r1, r2, 16 + subs r1, 0x7 + adds r0, r4, 0 + subs r2, r5, 0x7 + bl sub_80596FC + cmp r0, 0x1 + beq _08059760 +_080597D2: + adds r6, 0x1 + adds r4, 0xC + cmp r6, r7 + blt _0805977C +_080597DA: + movs r0, 0 +_080597DC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805973C + + thumb_func_start sub_80597EC +sub_80597EC: @ 80597EC + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _08059804 @ =gUnknown_3005008 + ldr r2, [r2] + subs r0, 0x7 + strh r0, [r2] + subs r1, 0x7 + strh r1, [r2, 0x2] + bx lr + .align 2, 0 +_08059804: .4byte gUnknown_3005008 + thumb_func_end sub_80597EC + + thumb_func_start sub_8059808 +sub_8059808: @ 8059808 + ldr r2, _0805981C @ =gUnknown_3005008 + ldr r3, [r2] + ldrh r2, [r3] + adds r2, 0x7 + strh r2, [r0] + ldrh r0, [r3, 0x2] + adds r0, 0x7 + strh r0, [r1] + bx lr + .align 2, 0 +_0805981C: .4byte gUnknown_3005008 + thumb_func_end sub_8059808 + + thumb_func_start sub_8059820 +sub_8059820: @ 8059820 + ldr r2, _0805982C @ =gUnknown_3005008 + ldr r2, [r2] + strh r0, [r2] + strh r1, [r2, 0x2] + bx lr + .align 2, 0 +_0805982C: .4byte gUnknown_3005008 + thumb_func_end sub_8059820 + + thumb_func_start sub_8059830 +sub_8059830: @ 8059830 + ldr r2, _08059840 @ =gUnknown_3005008 + ldr r3, [r2] + ldrh r2, [r3] + strh r2, [r0] + ldrh r0, [r3, 0x2] + strh r0, [r1] + bx lr + .align 2, 0 +_08059840: .4byte gUnknown_3005008 + thumb_func_end sub_8059830 + + thumb_func_start sub_8059844 +sub_8059844: @ 8059844 + push {r4-r7,lr} + sub sp, 0x4 + adds r3, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r6, r4, 0 + lsls r2, 16 + lsrs r5, r2, 16 + adds r7, r5, 0 + cmp r3, 0 + beq _08059880 + ldrb r0, [r3] + cmp r0, 0 + bne _08059870 + ldr r1, [r3, 0x4] + lsls r2, r4, 21 + lsrs r2, 16 + movs r0, 0x2 + adds r3, r5, 0 + bl sub_80017D0 + b _08059880 +_08059870: + ldr r1, [r3, 0x4] + lsls r2, r6, 5 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + adds r3, r7, 0 + bl sub_80F68F0 +_08059880: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8059844 + + thumb_func_start sub_8059888 +sub_8059888: @ 8059888 + push {r4-r7,lr} + sub sp, 0x4 + adds r3, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r6, r4, 0 + lsls r2, 16 + lsrs r5, r2, 16 + adds r7, r5, 0 + cmp r3, 0 + beq _080598C4 + ldrb r0, [r3] + cmp r0, 0 + bne _080598B4 + ldr r1, [r3, 0x4] + lsls r2, r4, 21 + lsrs r2, 16 + movs r0, 0x2 + adds r3, r5, 0 + bl sub_80017D0 + b _080598C4 +_080598B4: + ldr r1, [r3, 0x4] + lsls r2, r6, 5 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + adds r3, r7, 0 + bl sub_80F69E8 +_080598C4: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8059888 + + thumb_func_start sub_80598CC +sub_80598CC: @ 80598CC + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r0, _080598EC @ =gUnknown_2036E28 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080598F0 + cmp r0, 0x1 + ble _0805993A + cmp r0, 0x2 + beq _08059904 + cmp r0, 0x3 + beq _08059918 + b _0805993A + .align 2, 0 +_080598EC: .4byte gUnknown_2036E28 +_080598F0: + lsls r4, 1 + ldr r0, _08059900 @ =gUnknown_20371F8 + adds r0, r4, r0 + adds r1, r5, 0 + bl sub_8071544 + b _0805992C + .align 2, 0 +_08059900: .4byte gUnknown_20371F8 +_08059904: + lsls r4, 1 + ldr r0, _08059914 @ =gUnknown_20371F8 + adds r0, r4, r0 + adds r1, r5, 0 + bl sub_80715F4 + b _0805992C + .align 2, 0 +_08059914: .4byte gUnknown_20371F8 +_08059918: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8111F38 + lsls r4, 1 + ldr r0, _08059940 @ =gUnknown_20371F8 + adds r0, r4, r0 + adds r1, r5, 0 + bl sub_8071544 +_0805992C: + ldr r0, _08059940 @ =gUnknown_20371F8 + adds r0, r4, r0 + ldr r1, _08059944 @ =gUnknown_20375F8 + adds r1, r4, r1 + adds r2, r5, 0 + bl CpuSet +_0805993A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059940: .4byte gUnknown_20371F8 +_08059944: .4byte gUnknown_20375F8 + thumb_func_end sub_80598CC + + thumb_func_start sub_8059948 +sub_8059948: @ 8059948 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r0, _08059968 @ =gUnknown_2036E28 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0805996C + cmp r0, 0x1 + ble _080599B8 + cmp r0, 0x2 + beq _08059980 + cmp r0, 0x3 + beq _08059994 + b _080599B8 + .align 2, 0 +_08059968: .4byte gUnknown_2036E28 +_0805996C: + lsls r4, 5 + ldr r0, _0805997C @ =gUnknown_20371F8 + adds r0, r4, r0 + lsls r1, r6, 4 + bl sub_8071544 + b _080599AA + .align 2, 0 +_0805997C: .4byte gUnknown_20371F8 +_08059980: + lsls r4, 5 + ldr r0, _08059990 @ =gUnknown_20371F8 + adds r0, r4, r0 + lsls r1, r6, 4 + bl sub_80715F4 + b _080599AA + .align 2, 0 +_08059990: .4byte gUnknown_20371F8 +_08059994: + lsls r0, r4, 4 + lsls r5, r6, 4 + adds r1, r5, 0 + bl sub_8111F38 + lsls r4, 5 + ldr r0, _080599C0 @ =gUnknown_20371F8 + adds r0, r4, r0 + adds r1, r5, 0 + bl sub_8071544 +_080599AA: + ldr r0, _080599C0 @ =gUnknown_20371F8 + adds r0, r4, r0 + ldr r1, _080599C4 @ =gUnknown_20375F8 + adds r1, r4, r1 + lsls r2, r6, 3 + bl CpuFastSet +_080599B8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080599C0: .4byte gUnknown_20371F8 +_080599C4: .4byte gUnknown_20375F8 + thumb_func_end sub_8059948 + + thumb_func_start sub_80599C8 +sub_80599C8: @ 80599C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + mov r8, r5 + lsls r6, r2, 16 + lsrs r7, r6, 16 + adds r2, r7, 0 + movs r1, 0 + mov r0, sp + strh r1, [r0] + cmp r4, 0 + beq _08059A46 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08059A1C + mov r0, sp + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80703EC + ldr r0, [r4, 0x8] + adds r0, 0x2 + adds r5, 0x1 + lsls r5, 16 + lsrs r5, 16 + subs r4, r7, 0x2 + lsls r2, r4, 16 + lsrs r2, 16 + adds r1, r5, 0 + bl sub_80703EC + lsls r4, 15 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80598CC + b _08059A46 +_08059A1C: + cmp r0, 0x1 + bne _08059A36 + ldr r0, [r4, 0x8] + adds r0, 0xE0 + adds r1, r5, 0 + adds r2, r7, 0 + bl sub_80703EC + lsrs r1, r6, 17 + adds r0, r5, 0 + bl sub_80598CC + b _08059A46 +_08059A36: + ldr r0, [r4, 0x8] + mov r1, r8 + bl sub_80703A8 + lsrs r1, r6, 17 + mov r0, r8 + bl sub_80598CC +_08059A46: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80599C8 + + thumb_func_start sub_8059A54 +sub_8059A54: @ 8059A54 + push {lr} + ldr r0, [r0, 0x10] + movs r1, 0xA0 + lsls r1, 2 + movs r2, 0 + bl sub_8059844 + pop {r0} + bx r0 + thumb_func_end sub_8059A54 + + thumb_func_start sub_8059A68 +sub_8059A68: @ 8059A68 + push {lr} + ldr r0, [r0, 0x14] + movs r1, 0xC0 + lsls r1, 1 + movs r2, 0xA0 + lsls r2, 2 + bl sub_8059844 + pop {r0} + bx r0 + thumb_func_end sub_8059A68 + + thumb_func_start sub_8059A7C +sub_8059A7C: @ 8059A7C + push {lr} + ldr r0, [r0, 0x14] + movs r1, 0xC0 + lsls r1, 1 + movs r2, 0xA0 + lsls r2, 2 + bl sub_8059888 + pop {r0} + bx r0 + thumb_func_end sub_8059A7C + + thumb_func_start sub_8059A90 +sub_8059A90: @ 8059A90 + push {lr} + ldr r0, [r0, 0x10] + movs r1, 0 + movs r2, 0xE0 + bl sub_80599C8 + pop {r0} + bx r0 + thumb_func_end sub_8059A90 + + thumb_func_start sub_8059AA0 +sub_8059AA0: @ 8059AA0 + push {lr} + ldr r0, [r0, 0x14] + movs r1, 0x70 + movs r2, 0xC0 + bl sub_80599C8 + pop {r0} + bx r0 + thumb_func_end sub_8059AA0 + + thumb_func_start sub_8059AB0 +sub_8059AB0: @ 8059AB0 + push {r4,r5,lr} + adds r5, r0, 0 + cmp r5, 0 + beq _08059AD2 + ldr r0, [r5, 0x10] + movs r4, 0xA0 + lsls r4, 2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8059888 + ldr r0, [r5, 0x14] + movs r1, 0xC0 + lsls r1, 1 + adds r2, r4, 0 + bl sub_8059888 +_08059AD2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8059AB0 + + thumb_func_start sub_8059AD8 +sub_8059AD8: @ 8059AD8 + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _08059AEA + bl sub_8059A90 + adds r0, r4, 0 + bl sub_8059AA0 +_08059AEA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8059AD8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_berrytree.s b/asm/fldeff_berrytree.s new file mode 100644 index 000000000..83c9c8be8 --- /dev/null +++ b/asm/fldeff_berrytree.s @@ -0,0 +1,13 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_56 +nullsub_56: @ 80A0E74 + bx lr + thumb_func_end nullsub_56 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s new file mode 100644 index 000000000..a5dc8c9c6 --- /dev/null +++ b/asm/fldeff_cut.s @@ -0,0 +1,535 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8097874 +sub_8097874: @ 8097874 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x1 + bl sub_8058F48 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_805A2BC + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8097874 + + thumb_func_start sub_8097898 +sub_8097898: @ 8097898 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r4, _080978CC @ =gUnknown_2039874 + movs r0, 0 + strb r0, [r4] + bl sub_80CCD84 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080978E0 + movs r0, 0x5F + bl sub_80C97A8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08097904 + ldr r1, _080978D0 @ =gUnknown_3005024 + ldr r0, _080978D4 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080978D8 @ =gUnknown_203B0C4 + ldr r0, _080978DC @ =sub_80979D0 + b _080978EC + .align 2, 0 +_080978CC: .4byte gUnknown_2039874 +_080978D0: .4byte gUnknown_3005024 +_080978D4: .4byte sub_81248B0 +_080978D8: .4byte gUnknown_203B0C4 +_080978DC: .4byte sub_80979D0 +_080978E0: + strb r0, [r4] +_080978E2: + ldr r1, _080978F4 @ =gUnknown_3005024 + ldr r0, _080978F8 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080978FC @ =gUnknown_203B0C4 + ldr r0, _08097900 @ =sub_8097984 +_080978EC: + str r0, [r1] + movs r0, 0x1 + b _08097970 + .align 2, 0 +_080978F4: .4byte gUnknown_3005024 +_080978F8: .4byte sub_81248B0 +_080978FC: .4byte gUnknown_203B0C4 +_08097900: .4byte sub_8097984 +_08097904: + ldr r4, _0809797C @ =gUnknown_2039A04 + adds r1, r4, 0x2 + adds r0, r4, 0 + bl sub_805C538 + movs r7, 0 + adds r2, r4, 0 + ldr r0, _08097980 @ =0x0000ffff + mov r8, r0 +_08097916: + mov r1, r8 + adds r0, r1, r7 + ldrh r1, [r2, 0x2] + adds r0, r1 + movs r6, 0 + lsls r0, 16 + asrs r5, r0, 16 +_08097924: + mov r1, r8 + adds r0, r1, r6 + ldrh r1, [r2] + adds r0, r1 + lsls r0, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp] + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [sp] + movs r1, 0x4 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _0809795A + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8097874 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [sp] + cmp r0, 0x1 + beq _080978E2 +_0809795A: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x2 + bls _08097924 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x2 + bls _08097916 + movs r0, 0 +_08097970: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809797C: .4byte gUnknown_2039A04 +_08097980: .4byte 0x0000ffff + thumb_func_end sub_8097898 + + thumb_func_start sub_8097984 +sub_8097984: @ 8097984 + push {lr} + movs r0, 0x1 + bl sub_8083444 + bl sub_811FB0C + ldr r1, _0809799C @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0809799C: .4byte gUnknown_20386E0 + thumb_func_end sub_8097984 + + thumb_func_start sub_80979A0 +sub_80979A0: @ 80979A0 + push {lr} + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080979C8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080979CC @ =sub_8097A20 + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + movs r0, 0x12 + bl sub_8054E90 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080979C8: .4byte gUnknown_3005090 +_080979CC: .4byte sub_8097A20 + thumb_func_end sub_80979A0 + + thumb_func_start sub_80979D0 +sub_80979D0: @ 80979D0 + push {lr} + bl sub_811FB0C + ldr r1, _080979E8 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + ldr r0, _080979EC @ =gUnknown_81BDF6B + bl sub_8069AE4 + pop {r0} + bx r0 + .align 2, 0 +_080979E8: .4byte gUnknown_20386E0 +_080979EC: .4byte gUnknown_81BDF6B + thumb_func_end sub_80979D0 + + thumb_func_start sub_80979F0 +sub_80979F0: @ 80979F0 + push {lr} + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08097A18 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _08097A1C @ =sub_8097C6C + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + movs r0, 0x12 + bl sub_8054E90 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08097A18: .4byte gUnknown_3005090 +_08097A1C: .4byte sub_8097C6C + thumb_func_end sub_80979F0 + + thumb_func_start sub_8097A20 +sub_8097A20: @ 8097A20 + push {lr} + movs r0, 0x1 + bl sub_80837FC + ldr r0, _08097A38 @ =gUnknown_2039874 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08097A3C + bl sub_80CCDD0 + b _08097A42 + .align 2, 0 +_08097A38: .4byte gUnknown_2039874 +_08097A3C: + movs r0, 0x3A + bl sub_8083444 +_08097A42: + pop {r0} + bx r0 + thumb_func_end sub_8097A20 + + thumb_func_start sub_8097A48 +sub_8097A48: @ 8097A48 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r7, 0 + movs r0, 0x79 + bl sub_80722CC + ldr r4, _08097B38 @ =gUnknown_2039A04 + adds r1, r4, 0x2 + adds r0, r4, 0 + bl sub_805C538 + mov r8, r4 + ldr r0, _08097B3C @ =0x0000ffff + mov r9, r0 +_08097A68: + mov r1, r9 + adds r0, r1, r7 + mov r2, r8 + ldrh r2, [r2, 0x2] + adds r0, r2 + movs r6, 0 + lsls r0, 16 + asrs r5, r0, 16 +_08097A78: + mov r1, r9 + adds r0, r1, r6 + mov r2, r8 + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8058D44 + lsls r0, 24 + lsrs r0, 24 + mov r2, r8 + movs r1, 0x4 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _08097ABC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8097874 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08097ABC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8097B50 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805F378 +_08097ABC: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x2 + bls _08097A78 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x2 + bls _08097A68 + bl sub_805A684 + ldr r4, _08097B40 @ =gUnknown_2039870 + movs r0, 0x8 + bl sub_8002B9C + str r0, [r4] + movs r7, 0 + ldr r5, _08097B44 @ =gUnknown_202063C +_08097AE2: + ldr r0, _08097B48 @ =gUnknown_2037078 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x2] + lsls r1, 23 + lsrs r1, 7 + movs r2, 0x80 + lsls r2, 12 + adds r1, r2 + asrs r1, 16 + ldrb r2, [r0] + adds r2, 0x14 + ldr r0, _08097B4C @ =gUnknown_83D414C + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] + adds r1, r7 + strb r0, [r1] + ldr r0, [r4] + adds r0, r7 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + lsls r1, r7, 5 + strh r1, [r0, 0x32] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x7 + bls _08097AE2 + movs r0, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08097B38: .4byte gUnknown_2039A04 +_08097B3C: .4byte 0x0000ffff +_08097B40: .4byte gUnknown_2039870 +_08097B44: .4byte gUnknown_202063C +_08097B48: .4byte gUnknown_2037078 +_08097B4C: .4byte gUnknown_83D414C + thumb_func_end sub_8097A48 + + thumb_func_start sub_8097B50 +sub_8097B50: @ 8097B50 + push {r4-r7,lr} + lsls r0, 16 + lsls r1, 16 + movs r4, 0 + lsrs r6, r0, 16 + asrs r0, 16 + lsrs r7, r1, 16 + asrs r1, 16 + bl sub_8058E48 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _08097B84 @ =gUnknown_83D4100 + ldr r5, _08097B88 @ =0x0000ffff + mov r12, r1 +_08097B6E: + lsls r3, r4, 2 + adds r0, r3, r1 + ldrh r0, [r0] + cmp r0, r5 + beq _08097BA0 + cmp r0, r2 + beq _08097B8C + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + b _08097B6E + .align 2, 0 +_08097B84: .4byte gUnknown_83D4100 +_08097B88: .4byte 0x0000ffff +_08097B8C: + lsls r0, r6, 16 + asrs r0, 16 + lsls r1, r7, 16 + asrs r1, 16 + mov r2, r12 + adds r2, 0x2 + adds r2, r3, r2 + ldrh r2, [r2] + bl sub_8058FA4 +_08097BA0: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8097B50 + + thumb_func_start sub_8097BA8 +sub_8097BA8: @ 8097BA8 + movs r2, 0 + movs r1, 0x8 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r2, [r0, 0x34] + ldr r1, _08097BB8 @ =sub_8097BBC + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_08097BB8: .4byte sub_8097BBC + thumb_func_end sub_8097BA8 + + thumb_func_start sub_8097BBC +sub_8097BBC: @ 8097BBC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r4, 0x24] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl sub_8044E4C + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x2E] + adds r1, 0x1 + ldrh r2, [r4, 0x34] + lsls r0, r2, 16 + asrs r0, 18 + adds r1, r0 + strh r1, [r4, 0x2E] + adds r2, 0x1 + strh r2, [r4, 0x34] + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0x1C + beq _08097C08 + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + b _08097C0C +_08097C08: + ldr r0, _08097C14 @ =sub_8097C18 + str r0, [r4, 0x1C] +_08097C0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08097C14: .4byte sub_8097C18 + thumb_func_end sub_8097BBC + + thumb_func_start sub_8097C18 +sub_8097C18: @ 8097C18 + push {r4-r6,lr} + movs r4, 0x1 +_08097C1C: + ldr r6, _08097C64 @ =gUnknown_2039870 + ldr r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08097C68 @ =gUnknown_202063C + adds r0, r5 + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _08097C1C + ldr r0, [r6] + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x3A + bl sub_80836D8 + ldr r0, [r6] + bl sub_8002BC4 + bl sub_80696C0 + bl sub_806994C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08097C64: .4byte gUnknown_2039870 +_08097C68: .4byte gUnknown_202063C + thumb_func_end sub_8097C18 + + thumb_func_start sub_8097C6C +sub_8097C6C: @ 8097C6C + push {lr} + movs r0, 0x79 + bl sub_80722CC + movs r0, 0x2 + bl sub_80837FC + bl sub_8069B34 + pop {r0} + bx r0 + thumb_func_end sub_8097C6C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s new file mode 100644 index 000000000..f0e3451eb --- /dev/null +++ b/asm/fldeff_flash.s @@ -0,0 +1,964 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80C9B2C +sub_80C9B2C: @ 80C9B2C + push {lr} + ldr r0, _080C9B54 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x15] + cmp r0, 0x1 + bne _080C9B6C + ldr r0, _080C9B58 @ =0x00000806 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080C9B6C + ldr r1, _080C9B5C @ =gUnknown_3005024 + ldr r0, _080C9B60 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080C9B64 @ =gUnknown_203B0C4 + ldr r0, _080C9B68 @ =sub_80C9B74 + str r0, [r1] + movs r0, 0x1 + b _080C9B6E + .align 2, 0 +_080C9B54: .4byte gUnknown_2036DFC +_080C9B58: .4byte 0x00000806 +_080C9B5C: .4byte gUnknown_3005024 +_080C9B60: .4byte sub_81248B0 +_080C9B64: .4byte gUnknown_203B0C4 +_080C9B68: .4byte sub_80C9B74 +_080C9B6C: + movs r0, 0 +_080C9B6E: + pop {r1} + bx r1 + thumb_func_end sub_80C9B2C + + thumb_func_start sub_80C9B74 +sub_80C9B74: @ 80C9B74 + push {r4,lr} + bl sub_80C97FC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_811FB0C + ldr r1, _080C9BA4 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + ldr r1, _080C9BA8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080C9BAC @ =sub_80C9BB0 + lsrs r1, r2, 16 + strh r1, [r0, 0x18] + strh r2, [r0, 0x1A] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9BA4: .4byte gUnknown_20386E0 +_080C9BA8: .4byte gUnknown_3005090 +_080C9BAC: .4byte sub_80C9BB0 + thumb_func_end sub_80C9B74 + + thumb_func_start sub_80C9BB0 +sub_80C9BB0: @ 80C9BB0 + push {lr} + movs r0, 0xC8 + bl sub_80722CC + ldr r0, _080C9BC8 @ =0x00000806 + bl sub_806E680 + ldr r0, _080C9BCC @ =gUnknown_81BFB5F + bl sub_8069AE4 + pop {r0} + bx r0 + .align 2, 0 +_080C9BC8: .4byte 0x00000806 +_080C9BCC: .4byte gUnknown_81BFB5F + thumb_func_end sub_80C9BB0 + + thumb_func_start sub_80C9BD0 +sub_80C9BD0: @ 80C9BD0 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80C9BD0 + + thumb_func_start sub_80C9BE8 +sub_80C9BE8: @ 80C9BE8 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80C9BE8 + + thumb_func_start sub_80C9BFC +sub_80C9BFC: @ 80C9BFC + push {lr} + sub sp, 0x8 + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _080C9CC8 @ =0x040000d4 + mov r0, sp + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080C9CCC @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0 + str r2, [sp, 0x4] + add r0, sp, 0x4 + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080C9CD0 @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + mov r0, sp + strh r2, [r0] + str r0, [r1] + ldr r0, _080C9CD4 @ =0x05000002 + str r0, [r1, 0x4] + ldr r0, _080C9CD8 @ =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + bl sub_8070528 + bl sub_80773BC + bl sub_8006B10 + movs r0, 0x1 + bl sub_8000B68 + ldr r0, _080C9CDC @ =sub_80C9BE8 + bl sub_80006F4 + ldr r0, _080C9CE0 @ =sub_80C9BD0 + bl sub_8000544 + bl sub_80C9CE8 + lsls r0, 24 + cmp r0, 0 + bne _080C9CC2 + ldr r0, _080C9CE4 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 +_080C9CC2: + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_080C9CC8: .4byte 0x040000d4 +_080C9CCC: .4byte 0x8100c000 +_080C9CD0: .4byte 0x85000100 +_080C9CD4: .4byte 0x05000002 +_080C9CD8: .4byte 0x810001ff +_080C9CDC: .4byte sub_80C9BE8 +_080C9CE0: .4byte sub_80C9BD0 +_080C9CE4: .4byte gUnknown_30030F0 + thumb_func_end sub_80C9BFC + + thumb_func_start sub_80C9CE8 +sub_80C9CE8: @ 80C9CE8 + push {r4-r7,lr} + bl sub_80561A0 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8056188 + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + bl sub_80561B4 + ldr r5, _080C9D24 @ =gUnknown_2036DFC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r5, 0x14] + cmp r0, r1 + beq _080C9D36 + ldrb r0, [r5, 0x14] + movs r1, 0 + bl sub_80F8154 + cmp r0, 0x1 + bne _080C9D36 + ldrb r0, [r5, 0x14] + bl sub_80CA160 + movs r0, 0x1 + b _080C9D70 + .align 2, 0 +_080C9D24: .4byte gUnknown_2036DFC +_080C9D28: + adds r0, r3, 0x4 + adds r0, r2, r0 + ldr r0, [r0] + bl _call_via_r0 + movs r0, 0x1 + b _080C9D70 +_080C9D36: + ldr r5, _080C9D78 @ =gUnknown_83F5738 + lsls r1, r4, 1 + adds r0, r1, r4 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + beq _080C9D6E + adds r3, r5, 0 +_080C9D48: + adds r0, r1, r4 + lsls r2, r0, 2 + adds r1, r2, r3 + ldrb r0, [r1] + cmp r0, r7 + bne _080C9D5A + ldrb r0, [r1, 0x1] + cmp r0, r6 + beq _080C9D28 +_080C9D5A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, r4, 1 + adds r0, r1, r4 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _080C9D48 +_080C9D6E: + movs r0, 0 +_080C9D70: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080C9D78: .4byte gUnknown_83F5738 + thumb_func_end sub_80C9CE8 + + thumb_func_start sub_80C9D7C +sub_80C9D7C: @ 80C9D7C + push {r4-r6,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r0, 24 + lsrs r4, r1, 24 + movs r3, 0 + ldr r1, _080C9DAC @ =gUnknown_83F5738 + ldrb r0, [r1] + cmp r0, 0 + beq _080C9DC4 + adds r6, r1, 0 +_080C9D92: + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, r5 + bne _080C9DB0 + ldrb r0, [r2, 0x1] + cmp r0, r4 + bne _080C9DB0 + ldrb r0, [r2, 0x2] + b _080C9DC6 + .align 2, 0 +_080C9DAC: .4byte gUnknown_83F5738 +_080C9DB0: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080C9D92 +_080C9DC4: + movs r0, 0 +_080C9DC6: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80C9D7C + + thumb_func_start sub_80C9DCC +sub_80C9DCC: @ 80C9DCC + push {r4-r6,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r0, 24 + lsrs r4, r1, 24 + movs r3, 0 + ldr r1, _080C9DFC @ =gUnknown_83F5738 + ldrb r0, [r1] + cmp r0, 0 + beq _080C9E14 + adds r6, r1, 0 +_080C9DE2: + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, r5 + bne _080C9E00 + ldrb r0, [r2, 0x1] + cmp r0, r4 + bne _080C9E00 + ldrb r0, [r2, 0x3] + b _080C9E16 + .align 2, 0 +_080C9DFC: .4byte gUnknown_83F5738 +_080C9E00: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080C9DE2 +_080C9E14: + movs r0, 0 +_080C9E16: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80C9DCC + + thumb_func_start sub_80C9E1C +sub_80C9E1C: @ 80C9E1C + push {lr} + ldr r0, _080C9E2C @ =sub_80C9E30 + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080C9E2C: .4byte sub_80C9E30 + thumb_func_end sub_80C9E1C + + thumb_func_start sub_80C9E30 +sub_80C9E30: @ 80C9E30 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9E44 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080C9E48 @ =sub_80C9E4C + str r0, [r1] + bx lr + .align 2, 0 +_080C9E44: .4byte gUnknown_3005090 +_080C9E48: .4byte sub_80C9E4C + thumb_func_end sub_80C9E30 + + thumb_func_start sub_80C9E4C +sub_80C9E4C: @ 80C9E4C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080C9EC8 @ =gUnknown_83F5A44 + ldr r1, _080C9ECC @ =0x0600c000 + bl LZ77UnCompVram + ldr r0, _080C9ED0 @ =gUnknown_83F5864 + ldr r1, _080C9ED4 @ =0x0600f800 + bl LZ77UnCompVram + ldr r0, _080C9ED8 @ =gUnknown_83F5804 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080C9EDC @ =gUnknown_83F5854 + movs r1, 0xE0 + movs r2, 0x10 + bl sub_80703EC + ldr r1, _080C9EE0 @ =0x00003e41 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r1, _080C9EE4 @ =0x00001f0c + movs r0, 0x8 + bl sub_8000A38 + movs r1, 0x8A + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r1, _080C9EE8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C9EEC @ =sub_80C9EF0 + str r1, [r0] + movs r2, 0 + movs r1, 0x10 + strh r1, [r0, 0x8] + strh r2, [r0, 0xA] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9EC8: .4byte gUnknown_83F5A44 +_080C9ECC: .4byte 0x0600c000 +_080C9ED0: .4byte gUnknown_83F5864 +_080C9ED4: .4byte 0x0600f800 +_080C9ED8: .4byte gUnknown_83F5804 +_080C9EDC: .4byte gUnknown_83F5854 +_080C9EE0: .4byte 0x00003e41 +_080C9EE4: .4byte 0x00001f0c +_080C9EE8: .4byte gUnknown_3005090 +_080C9EEC: .4byte sub_80C9EF0 + thumb_func_end sub_80C9E4C + + thumb_func_start sub_80C9EF0 +sub_80C9EF0: @ 80C9EF0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9F20 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrh r4, [r5, 0xA] + movs r0, 0x80 + lsls r0, 5 + adds r1, r4, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + cmp r4, 0x10 + bhi _080C9F24 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + b _080C9F2C + .align 2, 0 +_080C9F20: .4byte gUnknown_3005090 +_080C9F24: + movs r0, 0 + strh r0, [r5, 0xC] + ldr r0, _080C9F34 @ =sub_80C9F38 + str r0, [r5] +_080C9F2C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C9F34: .4byte sub_80C9F38 + thumb_func_end sub_80C9EF0 + + thumb_func_start sub_80C9F38 +sub_80C9F38: @ 80C9F38 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080C9F74 @ =0x00001010 + movs r0, 0x52 + bl sub_8000A38 + ldr r1, _080C9F78 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0xC] + cmp r1, 0x7 + bhi _080C9F80 + adds r0, r1, 0x1 + strh r0, [r4, 0xC] + lsls r1, 1 + ldr r0, _080C9F7C @ =gUnknown_83F5854 + adds r0, r1, r0 + movs r2, 0x10 + subs r2, r1 + lsls r2, 16 + lsrs r2, 16 + movs r1, 0xE0 + bl sub_80703EC + b _080C9F92 + .align 2, 0 +_080C9F74: .4byte 0x00001010 +_080C9F78: .4byte gUnknown_3005090 +_080C9F7C: .4byte gUnknown_83F5854 +_080C9F80: + ldr r0, _080C9F98 @ =gUnknown_83F5804 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080C9F9C @ =sub_80C9FA0 + str r0, [r4] + movs r0, 0x8 + strh r0, [r4, 0xC] +_080C9F92: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9F98: .4byte gUnknown_83F5804 +_080C9F9C: .4byte sub_80C9FA0 + thumb_func_end sub_80C9F38 + + thumb_func_start sub_80C9FA0 +sub_80C9FA0: @ 80C9FA0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9FC0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080C9FC4 + subs r0, r2, 0x1 + strh r0, [r1, 0xC] + b _080C9FCC + .align 2, 0 +_080C9FC0: .4byte gUnknown_3005090 +_080C9FC4: + ldr r0, _080C9FD0 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 +_080C9FCC: + pop {r0} + bx r0 + .align 2, 0 +_080C9FD0: .4byte gUnknown_30030F0 + thumb_func_end sub_80C9FA0 + + thumb_func_start sub_80C9FD4 +sub_80C9FD4: @ 80C9FD4 + push {lr} + ldr r0, _080C9FE4 @ =sub_80C9FE8 + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080C9FE4: .4byte sub_80C9FE8 + thumb_func_end sub_80C9FD4 + + thumb_func_start sub_80C9FE8 +sub_80C9FE8: @ 80C9FE8 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9FFC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080CA000 @ =sub_80CA004 + str r0, [r1] + bx lr + .align 2, 0 +_080C9FFC: .4byte gUnknown_3005090 +_080CA000: .4byte sub_80CA004 + thumb_func_end sub_80C9FE8 + + thumb_func_start sub_80CA004 +sub_80CA004: @ 80CA004 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080CA080 @ =gUnknown_83F5A44 + ldr r1, _080CA084 @ =0x0600c000 + bl LZ77UnCompVram + ldr r0, _080CA088 @ =gUnknown_83F5864 + ldr r1, _080CA08C @ =0x0600f800 + bl LZ77UnCompVram + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r1, _080CA090 @ =0x00001f0c + movs r0, 0x8 + bl sub_8000A38 + movs r1, 0x8A + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080CA094 @ =gUnknown_83F5804 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080CA098 @ =gUnknown_83F5824 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080CA09C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080CA0A0 @ =sub_80CA0A4 + str r1, [r0] + movs r2, 0 + movs r1, 0x10 + strh r1, [r0, 0x8] + strh r2, [r0, 0xA] + strh r2, [r0, 0xC] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA080: .4byte gUnknown_83F5A44 +_080CA084: .4byte 0x0600c000 +_080CA088: .4byte gUnknown_83F5864 +_080CA08C: .4byte 0x0600f800 +_080CA090: .4byte 0x00001f0c +_080CA094: .4byte gUnknown_83F5804 +_080CA098: .4byte gUnknown_83F5824 +_080CA09C: .4byte gUnknown_3005090 +_080CA0A0: .4byte sub_80CA0A4 + thumb_func_end sub_80CA004 + + thumb_func_start sub_80CA0A4 +sub_80CA0A4: @ 80CA0A4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CA0D8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r1, [r4, 0xC] + cmp r1, 0xF + bhi _080CA0E0 + adds r2, r1, 0x1 + adds r0, r2, 0x1 + strh r0, [r4, 0xC] + movs r0, 0xF + subs r0, r1 + lsls r0, 1 + ldr r1, _080CA0DC @ =gUnknown_83F5844 + adds r0, r1 + lsls r2, 17 + lsrs r2, 16 + movs r1, 0xE0 + bl sub_80703EC + b _080CA0F4 + .align 2, 0 +_080CA0D8: .4byte gUnknown_3005090 +_080CA0DC: .4byte gUnknown_83F5844 +_080CA0E0: + ldr r1, _080CA0FC @ =0x00001010 + movs r0, 0x52 + bl sub_8000A38 + ldr r1, _080CA100 @ =0x00003e41 + movs r0, 0x50 + bl sub_8000A38 + ldr r0, _080CA104 @ =sub_80CA108 + str r0, [r4] +_080CA0F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA0FC: .4byte 0x00001010 +_080CA100: .4byte 0x00003e41 +_080CA104: .4byte sub_80CA108 + thumb_func_end sub_80CA0A4 + + thumb_func_start sub_80CA108 +sub_80CA108: @ 80CA108 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CA13C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrh r0, [r5, 0xA] + movs r1, 0x10 + subs r1, r0 + lsls r1, 16 + lsrs r4, r1, 16 + movs r0, 0x80 + lsls r0, 21 + adds r1, r0 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + cmp r4, 0 + beq _080CA140 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + b _080CA152 + .align 2, 0 +_080CA13C: .4byte gUnknown_3005090 +_080CA140: + ldr r0, _080CA158 @ =gUnknown_83F5824 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080CA15C @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 +_080CA152: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CA158: .4byte gUnknown_83F5824 +_080CA15C: .4byte gUnknown_30030F0 + thumb_func_end sub_80CA108 + + thumb_func_start sub_80CA160 +sub_80CA160: @ 80CA160 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080CA188 @ =sub_80CA190 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080CA18C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xE] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA188: .4byte sub_80CA190 +_080CA18C: .4byte gUnknown_3005090 + thumb_func_end sub_80CA160 + + thumb_func_start sub_80CA190 +sub_80CA190: @ 80CA190 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080CA1B8 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080CA1AC + b _080CA2D2 +_080CA1AC: + lsls r0, 2 + ldr r1, _080CA1BC @ =_080CA1C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CA1B8: .4byte gUnknown_3005098 +_080CA1BC: .4byte _080CA1C0 + .align 2, 0 +_080CA1C0: + .4byte _080CA1D8 + .4byte _080CA208 + .4byte _080CA224 + .4byte _080CA24E + .4byte _080CA262 + .4byte _080CA2A4 +_080CA1D8: + ldr r0, _080CA204 @ =gUnknown_30030F0 + ldr r2, [r0, 0xC] + adds r0, r5, 0 + movs r1, 0x5 + bl sub_80776E8 + movs r0, 0 + bl sub_80006F4 + bl sub_80F8180 + ldrb r0, [r4, 0x6] + bl sub_80F819C + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _080CA294 + .align 2, 0 +_080CA204: .4byte gUnknown_30030F0 +_080CA208: + bl sub_80F8258 + cmp r0, 0 + bne _080CA2D2 + ldrb r0, [r4, 0x6] + bl sub_80F8318 + strh r0, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8003F20 + b _080CA294 +_080CA224: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080CA2D2 + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8077720 + bl sub_80006F4 + b _080CA294 +_080CA24E: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080CA2D2 + ldrb r0, [r4, 0x6] + bl sub_80F856C + strh r0, [r4, 0x4] + b _080CA294 +_080CA262: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x4 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _080CA280 + ldr r0, _080CA29C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080CA2D2 +_080CA280: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + ldr r2, _080CA2A0 @ =0x00007fff + str r2, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080CA294: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _080CA2D2 + .align 2, 0 +_080CA29C: .4byte gUnknown_30030F0 +_080CA2A0: .4byte 0x00007fff +_080CA2A4: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080CA2D2 + lsls r6, r5, 2 + movs r1, 0 + adds r0, r4, 0 + adds r0, 0x1E +_080CA2B6: + strh r1, [r0] + subs r0, 0x2 + cmp r0, r4 + bge _080CA2B6 + movs r1, 0x8 + ldrsh r0, [r4, r1] + bl sub_80F8234 + ldr r1, _080CA2DC @ =gUnknown_3005090 + adds r0, r6, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080CA2E0 @ =sub_80CA004 + str r1, [r0] +_080CA2D2: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA2DC: .4byte gUnknown_3005090 +_080CA2E0: .4byte sub_80CA004 + thumb_func_end sub_80CA190 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_poison.s b/asm/fldeff_poison.s new file mode 100644 index 000000000..dcd683f2e --- /dev/null +++ b/asm/fldeff_poison.s @@ -0,0 +1,98 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0DD8 +sub_80A0DD8: @ 80A0DD8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080A0DFC @ =gUnknown_3005098 + adds r1, r0, r1 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0x1 + beq _080A0E16 + cmp r0, 0x1 + bgt _080A0E00 + cmp r0, 0 + beq _080A0E06 + b _080A0E32 + .align 2, 0 +_080A0DFC: .4byte gUnknown_3005098 +_080A0E00: + cmp r0, 0x2 + beq _080A0E2A + b _080A0E32 +_080A0E06: + ldrh r0, [r1, 0x2] + adds r0, 0x1 + strh r0, [r1, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080A0E32 + b _080A0E22 +_080A0E16: + ldrh r0, [r1, 0x2] + subs r0, 0x1 + strh r0, [r1, 0x2] + lsls r0, 16 + cmp r0, 0 + bne _080A0E32 +_080A0E22: + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _080A0E32 +_080A0E2A: + adds r0, r2, 0 + bl sub_8077508 + b _080A0E42 +_080A0E32: + ldrb r1, [r1, 0x2] + lsls r0, r1, 4 + orrs r0, r1 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8001EC0 +_080A0E42: + pop {r0} + bx r0 + thumb_func_end sub_80A0DD8 + + thumb_func_start sub_80A0E48 +sub_80A0E48: @ 80A0E48 + push {lr} + movs r0, 0x48 + bl sub_80722CC + ldr r0, _080A0E5C @ =sub_80A0DD8 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080A0E5C: .4byte sub_80A0DD8 + thumb_func_end sub_80A0E48 + + thumb_func_start sub_80A0E60 +sub_80A0E60: @ 80A0E60 + push {lr} + ldr r0, _080A0E70 @ =sub_80A0DD8 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080A0E70: .4byte sub_80A0DD8 + thumb_func_end sub_80A0E60 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_softboiled.s b/asm/fldeff_softboiled.s new file mode 100644 index 000000000..d9b75cf57 --- /dev/null +++ b/asm/fldeff_softboiled.s @@ -0,0 +1,366 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80E5684 +sub_80E5684: @ 80E5684 + push {r4-r6,lr} + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r6, 0x64 + muls r0, r6 + ldr r4, _080E56D0 @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + muls r0, r6 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x5 + bl __udivsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + bhi _080E56D4 + movs r0, 0 + b _080E56D6 + .align 2, 0 +_080E56D0: .4byte gUnknown_2024284 +_080E56D4: + movs r0, 0x1 +_080E56D6: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80E5684 + + thumb_func_start sub_80E56DC +sub_80E56DC: @ 80E56DC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080E5718 @ =gUnknown_203B0A0 + movs r1, 0xA + strb r1, [r0, 0xB] + ldrb r1, [r0, 0x9] + strb r1, [r0, 0xA] + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_811F818 + movs r0, 0x5 + bl sub_8121D0C + ldr r1, _080E571C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080E5720 @ =sub_811FB28 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5718: .4byte gUnknown_203B0A0 +_080E571C: .4byte gUnknown_3005090 +_080E5720: .4byte sub_811FB28 + thumb_func_end sub_80E56DC + + thumb_func_start sub_80E5724 +sub_80E5724: @ 80E5724 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + str r4, [sp, 0x4] + ldr r1, _080E575C @ =gUnknown_203B0A0 + ldrb r7, [r1, 0x9] + mov r8, r7 + ldrb r0, [r1, 0xA] + adds r5, r0, 0 + cmp r5, 0x6 + bls _080E5768 + movs r0, 0 + strb r0, [r1, 0xB] + bl sub_8121D0C + ldr r1, _080E5760 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080E5764 @ =sub_811FB28 + str r1, [r0] + b _080E57D4 + .align 2, 0 +_080E575C: .4byte gUnknown_203B0A0 +_080E5760: .4byte gUnknown_3005090 +_080E5764: .4byte sub_811FB28 +_080E5768: + movs r0, 0x64 + mov r10, r0 + mov r0, r10 + muls r0, r5 + ldr r1, _080E57A0 @ =gUnknown_2024284 + mov r9, r1 + adds r6, r0, r1 + adds r0, r6, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _080E5796 + cmp r7, r5 + beq _080E5796 + adds r0, r6, 0 + movs r1, 0x3A + bl sub_803FBE8 + cmp r0, r4 + bne _080E57A4 +_080E5796: + ldr r0, [sp, 0x4] + bl sub_80E5934 + b _080E57D4 + .align 2, 0 +_080E57A0: .4byte gUnknown_2024284 +_080E57A4: + movs r0, 0x1 + bl sub_80722CC + mov r1, r10 + mov r0, r8 + muls r0, r1 + add r0, r9 + movs r1, 0x3A + bl sub_803FBE8 + movs r1, 0x5 + bl __udivsi3 + adds r3, r0, 0 + lsls r3, 16 + asrs r3, 16 + movs r2, 0x1 + negs r2, r2 + ldr r0, _080E57E4 @ =sub_80E57E8 + str r0, [sp] + ldr r0, [sp, 0x4] + mov r1, r8 + bl sub_8120760 +_080E57D4: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E57E4: .4byte sub_80E57E8 + thumb_func_end sub_80E5724 + + thumb_func_start sub_80E57E8 +sub_80E57E8: @ 80E57E8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_80722CC + ldr r5, _080E5830 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r5, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E5834 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x3A + bl sub_803FBE8 + movs r1, 0x5 + bl __udivsi3 + adds r3, r0, 0 + lsls r3, 16 + asrs r3, 16 + ldrb r1, [r5, 0xA] + ldr r0, _080E5838 @ =sub_80E583C + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + bl sub_8120760 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E5830: .4byte gUnknown_203B0A0 +_080E5834: .4byte gUnknown_2024284 +_080E5838: .4byte sub_80E583C + thumb_func_end sub_80E57E8 + + thumb_func_start sub_80E583C +sub_80E583C: @ 80E583C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080E5884 @ =gUnknown_203B0A0 + movs r1, 0xA + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E5888 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080E588C @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r4, _080E5890 @ =gUnknown_2021D18 + ldr r1, _080E5894 @ =gUnknown_8416F27 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _080E5898 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080E589C @ =sub_80E58A0 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E5884: .4byte gUnknown_203B0A0 +_080E5888: .4byte gUnknown_2024284 +_080E588C: .4byte gUnknown_2021CD0 +_080E5890: .4byte gUnknown_2021D18 +_080E5894: .4byte gUnknown_8416F27 +_080E5898: .4byte gUnknown_3005090 +_080E589C: .4byte sub_80E58A0 + thumb_func_end sub_80E583C + + thumb_func_start sub_80E58A0 +sub_80E58A0: @ 80E58A0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080E58EE + ldr r4, _080E58F4 @ =gUnknown_203B0A0 + movs r0, 0 + strb r0, [r4, 0xB] + ldrb r0, [r4, 0x9] + movs r1, 0 + bl sub_811F818 + ldrb r0, [r4, 0xA] + strb r0, [r4, 0x9] + ldrb r0, [r4, 0xA] + movs r1, 0x1 + bl sub_811F818 + movs r0, 0x6 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x6 + bl sub_80040B8 + movs r0, 0 + bl sub_8121D0C + ldr r1, _080E58F8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080E58FC @ =sub_811FB28 + str r1, [r0] +_080E58EE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E58F4: .4byte gUnknown_203B0A0 +_080E58F8: .4byte gUnknown_3005090 +_080E58FC: .4byte sub_811FB28 + thumb_func_end sub_80E58A0 + + thumb_func_start sub_80E5900 +sub_80E5900: @ 80E5900 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080E5926 + movs r0, 0x5 + bl sub_8121D0C + ldr r0, _080E592C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080E5930 @ =sub_811FB28 + str r0, [r1] +_080E5926: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E592C: .4byte gUnknown_3005090 +_080E5930: .4byte sub_811FB28 + thumb_func_end sub_80E5900 + + thumb_func_start sub_80E5934 +sub_80E5934: @ 80E5934 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080E5964 @ =gUnknown_84169F8 + movs r1, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _080E5968 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080E596C @ =sub_80E5900 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5964: .4byte gUnknown_84169F8 +_080E5968: .4byte gUnknown_3005090 +_080E596C: .4byte sub_80E5900 + thumb_func_end sub_80E5934 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s new file mode 100644 index 000000000..167218788 --- /dev/null +++ b/asm/fldeff_strength.s @@ -0,0 +1,111 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D07EC +sub_80D07EC: @ 80D07EC + push {r4,lr} + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + bne _080D0808 + movs r0, 0x61 + bl sub_80C97A8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080D080C +_080D0808: + movs r0, 0 + b _080D0826 +_080D080C: + ldr r4, _080D082C @ =gUnknown_20370D0 + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + ldr r1, _080D0830 @ =gUnknown_3005024 + ldr r0, _080D0834 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080D0838 @ =gUnknown_203B0C4 + ldr r0, _080D083C @ =sub_80D0840 + str r0, [r1] + movs r0, 0x1 +_080D0826: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D082C: .4byte gUnknown_20370D0 +_080D0830: .4byte gUnknown_3005024 +_080D0834: .4byte sub_81248B0 +_080D0838: .4byte gUnknown_203B0C4 +_080D083C: .4byte sub_80D0840 + thumb_func_end sub_80D07EC + + thumb_func_start sub_80D0840 +sub_80D0840: @ 80D0840 + push {lr} + bl sub_811FB0C + ldr r1, _080D0858 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + ldr r0, _080D085C @ =gUnknown_81BE16E + bl sub_8069AE4 + pop {r0} + bx r0 + .align 2, 0 +_080D0858: .4byte gUnknown_20386E0 +_080D085C: .4byte gUnknown_81BE16E + thumb_func_end sub_80D0840 + + thumb_func_start sub_80D0860 +sub_80D0860: @ 80D0860 + push {lr} + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D0894 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080D0898 @ =sub_80D08A8 + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + ldr r0, _080D089C @ =gUnknown_20386E0 + ldr r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080D08A0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080D08A4 @ =gUnknown_2021CD0 + bl sub_81202E0 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080D0894: .4byte gUnknown_3005090 +_080D0898: .4byte sub_80D08A8 +_080D089C: .4byte gUnknown_20386E0 +_080D08A0: .4byte gUnknown_2024284 +_080D08A4: .4byte gUnknown_2021CD0 + thumb_func_end sub_80D0860 + + thumb_func_start sub_80D08A8 +sub_80D08A8: @ 80D08A8 + push {lr} + movs r0, 0x28 + bl sub_80837FC + bl sub_8069B34 + pop {r0} + bx r0 + thumb_func_end sub_80D08A8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s new file mode 100644 index 000000000..9eeda9550 --- /dev/null +++ b/asm/fldeff_sweetscent.s @@ -0,0 +1,262 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80DE0B4 +sub_80DE0B4: @ 80DE0B4 + push {lr} + ldr r1, _080DE0C4 @ =gUnknown_203B0A0 + movs r0, 0 + strb r0, [r1, 0x9] + bl sub_80DE0E8 + pop {r0} + bx r0 + .align 2, 0 +_080DE0C4: .4byte gUnknown_203B0A0 + thumb_func_end sub_80DE0B4 + + thumb_func_start sub_80DE0C8 +sub_80DE0C8: @ 80DE0C8 + ldr r1, _080DE0D8 @ =gUnknown_3005024 + ldr r0, _080DE0DC @ =sub_81248B0 + str r0, [r1] + ldr r1, _080DE0E0 @ =gUnknown_203B0C4 + ldr r0, _080DE0E4 @ =sub_80DE0E8 + str r0, [r1] + movs r0, 0x1 + bx lr + .align 2, 0 +_080DE0D8: .4byte gUnknown_3005024 +_080DE0DC: .4byte sub_81248B0 +_080DE0E0: .4byte gUnknown_203B0C4 +_080DE0E4: .4byte sub_80DE0E8 + thumb_func_end sub_80DE0C8 + + thumb_func_start sub_80DE0E8 +sub_80DE0E8: @ 80DE0E8 + push {lr} + movs r0, 0x33 + bl sub_8083444 + bl sub_811FB0C + ldr r1, _080DE100 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080DE100: .4byte gUnknown_20386E0 + thumb_func_end sub_80DE0E8 + + thumb_func_start sub_80DE104 +sub_80DE104: @ 80DE104 + push {lr} + bl sub_807B05C + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DE12C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080DE130 @ =sub_80DE134 + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080DE12C: .4byte gUnknown_3005090 +_080DE130: .4byte sub_80DE134 + thumb_func_end sub_80DE104 + + thumb_func_start sub_80DE134 +sub_80DE134: @ 80DE134 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0xE5 + bl sub_80722CC + ldr r4, _080DE1B8 @ =gUnknown_203AAB0 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002B9C + adds r1, r0, 0 + str r1, [r4] + ldr r4, _080DE1BC @ =gUnknown_20371F8 + movs r5, 0x80 + lsls r5, 1 + adds r0, r4, 0 + adds r2, r5, 0 + bl CpuFastSet + ldr r0, _080DE1C0 @ =gUnknown_20375F8 + adds r1, r4, 0 + adds r2, r5, 0 + bl CpuFastSet + bl sub_805C768 + ldr r2, _080DE1C4 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + mvns r0, r0 + movs r1, 0x1F + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x8 + bl sub_8070588 + ldr r0, _080DE1C8 @ =sub_80DE1D0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DE1CC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + movs r0, 0x33 + bl sub_80837FC + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DE1B8: .4byte gUnknown_203AAB0 +_080DE1BC: .4byte gUnknown_20371F8 +_080DE1C0: .4byte gUnknown_20375F8 +_080DE1C4: .4byte gUnknown_202063C +_080DE1C8: .4byte sub_80DE1D0 +_080DE1CC: .4byte gUnknown_3005090 + thumb_func_end sub_80DE134 + + thumb_func_start sub_80DE1D0 +sub_80DE1D0: @ 80DE1D0 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r5, r0, 3 + ldr r6, _080DE21C @ =gUnknown_3005098 + adds r2, r5, r6 + ldr r0, _080DE220 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080DE26C + ldrh r3, [r2] + movs r7, 0 + ldrsh r0, [r2, r7] + cmp r0, 0x40 + bne _080DE268 + strh r1, [r2] + bl sub_8082EC0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DE228 + ldr r0, _080DE224 @ =gUnknown_203AAB0 + ldr r0, [r0] + bl sub_8002BC4 + adds r0, r4, 0 + bl sub_8077508 + b _080DE26C + .align 2, 0 +_080DE21C: .4byte gUnknown_3005098 +_080DE220: .4byte gUnknown_2037AB8 +_080DE224: .4byte gUnknown_203AAB0 +_080DE228: + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _080DE260 @ =sub_80DE274 + str r1, [r0] + bl sub_805C768 + ldr r2, _080DE264 @ =gUnknown_202063C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + mvns r0, r0 + movs r1, 0x1F + str r1, [sp] + movs r1, 0x4 + movs r2, 0x8 + movs r3, 0 + bl sub_8070588 + b _080DE26C + .align 2, 0 +_080DE260: .4byte sub_80DE274 +_080DE264: .4byte gUnknown_202063C +_080DE268: + adds r0, r3, 0x1 + strh r0, [r2] +_080DE26C: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DE1D0 + + thumb_func_start sub_80DE274 +sub_80DE274: @ 80DE274 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080DE2B0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080DE2AA + ldr r4, _080DE2B4 @ =gUnknown_203AAB0 + ldr r0, [r4] + ldr r1, _080DE2B8 @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 1 + bl CpuFastSet + bl sub_807B070 + ldr r0, [r4] + bl sub_8002BC4 + ldr r0, _080DE2BC @ =gUnknown_81BE564 + bl sub_8069AE4 + adds r0, r5, 0 + bl sub_8077508 +_080DE2AA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DE2B0: .4byte gUnknown_2037AB8 +_080DE2B4: .4byte gUnknown_203AAB0 +_080DE2B8: .4byte gUnknown_20371F8 +_080DE2BC: .4byte gUnknown_81BE564 + thumb_func_end sub_80DE274 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s new file mode 100644 index 000000000..4d2577ce1 --- /dev/null +++ b/asm/fldeff_teleport.s @@ -0,0 +1,92 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F66F0 +sub_80F66F0: @ 80F66F0 + push {lr} + ldr r0, _080F6708 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + bl sub_80561FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080F670C + movs r0, 0 + b _080F671A + .align 2, 0 +_080F6708: .4byte gUnknown_2036DFC +_080F670C: + ldr r1, _080F6720 @ =gUnknown_3005024 + ldr r0, _080F6724 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080F6728 @ =gUnknown_203B0C4 + ldr r0, _080F672C @ =sub_80F6730 + str r0, [r1] + movs r0, 0x1 +_080F671A: + pop {r1} + bx r1 + .align 2, 0 +_080F6720: .4byte gUnknown_3005024 +_080F6724: .4byte sub_81248B0 +_080F6728: .4byte gUnknown_203B0C4 +_080F672C: .4byte sub_80F6730 + thumb_func_end sub_80F66F0 + + thumb_func_start sub_80F6730 +sub_80F6730: @ 80F6730 + push {lr} + bl sub_8054D08 + movs r0, 0x3F + bl sub_8083444 + bl sub_811FB0C + ldr r1, _080F674C @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080F674C: .4byte gUnknown_20386E0 + thumb_func_end sub_80F6730 + + thumb_func_start sub_80F6750 +sub_80F6750: @ 80F6750 + push {lr} + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F6778 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080F677C @ =sub_80F6780 + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + movs r0, 0x1 + bl sub_805BDEC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080F6778: .4byte gUnknown_3005090 +_080F677C: .4byte sub_80F6780 + thumb_func_end sub_80F6750 + + thumb_func_start sub_80F6780 +sub_80F6780: @ 80F6780 + push {lr} + movs r0, 0x3F + bl sub_80837FC + bl sub_8085B64 + pop {r0} + bx r0 + thumb_func_end sub_80F6780 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/gpu_regs.s b/asm/gpu_regs.s new file mode 100644 index 000000000..f92db44f0 --- /dev/null +++ b/asm/gpu_regs.s @@ -0,0 +1,373 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8000968 +sub_8000968: @ 8000968 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r2, 0 + ldr r7, _080009AC @ =gUnknown_30000C0 + ldr r0, _080009B0 @ =gUnknown_30000C1 + mov r12, r0 + ldr r1, _080009B4 @ =gUnknown_30000C2 + mov r8, r1 + ldr r6, _080009B8 @ =gUnknown_3000000 + movs r5, 0 + ldr r4, _080009BC @ =gUnknown_3000060 + movs r3, 0xFF +_08000982: + adds r0, r2, r6 + strb r5, [r0] + adds r1, r2, r4 + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x5F + ble _08000982 + movs r0, 0 + strb r0, [r7] + mov r1, r12 + strb r0, [r1] + movs r0, 0 + mov r1, r8 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080009AC: .4byte gUnknown_30000C0 +_080009B0: .4byte gUnknown_30000C1 +_080009B4: .4byte gUnknown_30000C2 +_080009B8: .4byte gUnknown_3000000 +_080009BC: .4byte gUnknown_3000060 + thumb_func_end sub_8000968 + + thumb_func_start sub_80009C0 +sub_80009C0: @ 80009C0 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x4 + bne _080009EC + ldr r2, _080009E0 @ =0x04000004 + ldrh r1, [r2] + ldr r0, _080009E4 @ =0x0000ffe7 + ands r0, r1 + strh r0, [r2] + ldr r1, _080009E8 @ =gUnknown_3000004 + ldrh r0, [r2] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2] + b _080009FA + .align 2, 0 +_080009E0: .4byte 0x04000004 +_080009E4: .4byte 0x0000ffe7 +_080009E8: .4byte gUnknown_3000004 +_080009EC: + movs r0, 0x80 + lsls r0, 19 + adds r0, r2, r0 + ldr r1, _08000A00 @ =gUnknown_3000000 + adds r1, r2, r1 + ldrh r1, [r1] + strh r1, [r0] +_080009FA: + pop {r0} + bx r0 + .align 2, 0 +_08000A00: .4byte gUnknown_3000000 + thumb_func_end sub_80009C0 + + thumb_func_start sub_8000A04 +sub_8000A04: @ 8000A04 + push {r4,r5,lr} + ldr r0, _08000A30 @ =gUnknown_30000C0 + ldrb r0, [r0] + cmp r0, 0 + bne _08000A28 + movs r5, 0 +_08000A10: + ldr r0, _08000A34 @ =gUnknown_3000060 + adds r4, r5, r0 + ldrb r0, [r4] + cmp r0, 0xFF + beq _08000A28 + bl sub_80009C0 + movs r0, 0xFF + strb r0, [r4] + adds r5, 0x1 + cmp r5, 0x5F + ble _08000A10 +_08000A28: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08000A30: .4byte gUnknown_30000C0 +_08000A34: .4byte gUnknown_3000060 + thumb_func_end sub_8000A04 + + thumb_func_start sub_8000A38 +sub_8000A38: @ 8000A38 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r1, 16 + cmp r4, 0x5F + bhi _08000AB4 + ldr r0, _08000A74 @ =gUnknown_3000000 + adds r0, r4, r0 + strh r1, [r0] + ldr r0, _08000A78 @ =0x04000006 + ldrh r1, [r0] + movs r0, 0xFF + ands r0, r1 + subs r0, 0xA1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x40 + bls _08000A6C + movs r0, 0x80 + lsls r0, 19 + ldrh r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08000A82 +_08000A6C: + adds r0, r4, 0 + bl sub_80009C0 + b _08000AB4 + .align 2, 0 +_08000A74: .4byte gUnknown_3000000 +_08000A78: .4byte 0x04000006 +_08000A7C: + movs r0, 0 + strb r0, [r5] + b _08000AB4 +_08000A82: + ldr r2, _08000ABC @ =gUnknown_30000C0 + movs r0, 0x1 + strb r0, [r2] + movs r3, 0 + ldr r0, _08000AC0 @ =gUnknown_3000060 + ldrb r1, [r0] + adds r5, r2, 0 + adds r2, r0, 0 + cmp r1, 0xFF + beq _08000AAC + adds r1, r2, 0 +_08000A98: + ldrb r0, [r1] + cmp r0, r4 + beq _08000A7C + adds r1, 0x1 + adds r3, 0x1 + cmp r3, 0x5F + bgt _08000AAC + ldrb r0, [r1] + cmp r0, 0xFF + bne _08000A98 +_08000AAC: + adds r0, r3, r2 + movs r1, 0 + strb r4, [r0] + strb r1, [r5] +_08000AB4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08000ABC: .4byte gUnknown_30000C0 +_08000AC0: .4byte gUnknown_3000060 + thumb_func_end sub_8000A38 + + thumb_func_start sub_8000AC4 +sub_8000AC4: @ 8000AC4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r1, 0x4 + bne _08000AD8 + ldr r0, _08000AD4 @ =0x04000004 + b _08000AEA + .align 2, 0 +_08000AD4: .4byte 0x04000004 +_08000AD8: + cmp r1, 0x6 + beq _08000AE8 + ldr r0, _08000AE4 @ =gUnknown_3000000 + adds r0, r1, r0 + ldrh r0, [r0] + b _08000AEC + .align 2, 0 +_08000AE4: .4byte gUnknown_3000000 +_08000AE8: + ldr r0, _08000AF0 @ =0x04000006 +_08000AEA: + ldrh r0, [r0] +_08000AEC: + pop {r1} + bx r1 + .align 2, 0 +_08000AF0: .4byte 0x04000006 + thumb_func_end sub_8000AC4 + + thumb_func_start sub_8000AF4 +sub_8000AF4: @ 8000AF4 + push {lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08000B10 @ =gUnknown_3000000 + adds r1, r0, r1 + ldrh r1, [r1] + orrs r1, r2 + lsls r1, 16 + lsrs r1, 16 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_08000B10: .4byte gUnknown_3000000 + thumb_func_end sub_8000AF4 + + thumb_func_start sub_8000B14 +sub_8000B14: @ 8000B14 + push {lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + ldr r1, _08000B30 @ =gUnknown_3000000 + adds r1, r0, r1 + ldrh r1, [r1] + lsrs r2, 16 + bics r1, r2 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_08000B30: .4byte gUnknown_3000000 + thumb_func_end sub_8000B14 + + thumb_func_start sub_8000B34 +sub_8000B34: @ 8000B34 + push {r4,r5,lr} + ldr r5, _08000B58 @ =gUnknown_30000C1 + ldrb r0, [r5] + cmp r0, 0 + beq _08000B52 + ldr r2, _08000B5C @ =0x04000208 + ldrh r1, [r2] + movs r4, 0 + strh r4, [r2] + ldr r3, _08000B60 @ =0x04000200 + ldr r0, _08000B64 @ =gUnknown_30000C2 + ldrh r0, [r0] + strh r0, [r3] + strh r1, [r2] + strb r4, [r5] +_08000B52: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08000B58: .4byte gUnknown_30000C1 +_08000B5C: .4byte 0x04000208 +_08000B60: .4byte 0x04000200 +_08000B64: .4byte gUnknown_30000C2 + thumb_func_end sub_8000B34 + + thumb_func_start sub_8000B68 +sub_8000B68: @ 8000B68 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _08000B8C @ =gUnknown_30000C2 + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r4] + ldr r1, _08000B90 @ =gUnknown_30000C1 + movs r0, 0x1 + strb r0, [r1] + bl sub_8000B34 + ldrh r0, [r4] + bl sub_8000BC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000B8C: .4byte gUnknown_30000C2 +_08000B90: .4byte gUnknown_30000C1 + thumb_func_end sub_8000B68 + + thumb_func_start sub_8000B94 +sub_8000B94: @ 8000B94 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _08000BB8 @ =gUnknown_30000C2 + ldrh r1, [r4] + bics r1, r0 + strh r1, [r4] + ldr r1, _08000BBC @ =gUnknown_30000C1 + movs r0, 0x1 + strb r0, [r1] + bl sub_8000B34 + ldrh r0, [r4] + bl sub_8000BC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000BB8: .4byte gUnknown_30000C2 +_08000BBC: .4byte gUnknown_30000C1 + thumb_func_end sub_8000B94 + + thumb_func_start sub_8000BC0 +sub_8000BC0: @ 8000BC0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x4 + bl sub_8000AC4 + movs r2, 0x18 + ands r2, r0 + movs r1, 0x1 + ands r1, r4 + negs r0, r1 + orrs r0, r1 + asrs r1, r0, 31 + movs r0, 0x8 + ands r1, r0 + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _08000BEC + movs r0, 0x10 + orrs r1, r0 +_08000BEC: + cmp r2, r1 + beq _08000BF6 + movs r0, 0x4 + bl sub_8000A38 +_08000BF6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8000BC0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s new file mode 100644 index 000000000..ba09db8df --- /dev/null +++ b/asm/hall_of_fame.s @@ -0,0 +1,3442 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F1DAC +sub_80F1DAC: @ 80F1DAC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80F1DAC + + thumb_func_start sub_80F1DC0 +sub_80F1DC0: @ 80F1DC0 + push {lr} + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80F1DC0 + + thumb_func_start sub_80F1DDC +sub_80F1DDC: @ 80F1DDC + push {r4,lr} + sub sp, 0x4 + ldr r0, _080F1DFC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x4 + bls _080F1DF0 + b _080F1EF0 +_080F1DF0: + lsls r0, 2 + ldr r1, _080F1E00 @ =_080F1E04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F1DFC: .4byte gUnknown_30030F0 +_080F1E00: .4byte _080F1E04 + .align 2, 0 +_080F1E04: + .4byte _080F1E18 + .4byte _080F1E50 + .4byte _080F1E56 + .4byte _080F1E88 + .4byte _080F1EC4 +_080F1E18: + ldr r1, _080F1E40 @ =gUnknown_3005ECC + movs r0, 0 + strb r0, [r1] + movs r0, 0 + bl sub_80006F4 + bl sub_80F3610 + ldr r4, _080F1E44 @ =gUnknown_203AB3C + ldr r0, _080F1E48 @ =0x00002008 + bl sub_8002BB0 + str r0, [r4] + ldr r0, _080F1E4C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _080F1EF0 + .align 2, 0 +_080F1E40: .4byte gUnknown_3005ECC +_080F1E44: .4byte gUnknown_203AB3C +_080F1E48: .4byte 0x00002008 +_080F1E4C: .4byte gUnknown_30030F0 +_080F1E50: + bl sub_80F36BC + b _080F1EAA +_080F1E56: + ldr r1, _080F1E80 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0xE2 + lsls r1, 3 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + bl sub_80F36F8 + ldr r0, _080F1E84 @ =gUnknown_203AB3C + ldr r1, [r0] + movs r0, 0 + strh r0, [r1] + b _080F1EAA + .align 2, 0 +_080F1E80: .4byte 0x00003f42 +_080F1E84: .4byte gUnknown_203AB3C +_080F1E88: + bl sub_80F3770 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080F1EF0 + ldr r0, _080F1EBC @ =sub_80F1DAC + bl sub_80006F4 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_080F1EAA: + ldr r1, _080F1EC0 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080F1EF0 + .align 2, 0 +_080F1EBC: .4byte sub_80F1DAC +_080F1EC0: .4byte gUnknown_30030F0 +_080F1EC4: + bl sub_80704D0 + ldr r0, _080F1EE8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F1EF0 + ldr r0, _080F1EEC @ =sub_80F1DC0 + bl sub_8000544 + movs r0, 0x8F + lsls r0, 1 + bl sub_80722A0 + movs r0, 0 + b _080F1EF2 + .align 2, 0 +_080F1EE8: .4byte gUnknown_2037AB8 +_080F1EEC: .4byte sub_80F1DC0 +_080F1EF0: + movs r0, 0x1 +_080F1EF2: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80F1DDC + + thumb_func_start sub_80F1EFC +sub_80F1EFC: @ 80F1EFC + push {r4,lr} + bl sub_80F1DDC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080F1F2C + ldr r0, _080F1F34 @ =sub_80F1F74 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F1F38 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + ldr r4, _080F1F3C @ =gUnknown_203AB38 + movs r0, 0x78 + bl sub_8002BB0 + str r0, [r4] +_080F1F2C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1F34: .4byte sub_80F1F74 +_080F1F38: .4byte gUnknown_3005090 +_080F1F3C: .4byte gUnknown_203AB38 + thumb_func_end sub_80F1EFC + + thumb_func_start sub_80F1F40 +sub_80F1F40: @ 80F1F40 + push {lr} + bl sub_80F1DDC + lsls r0, 24 + cmp r0, 0 + bne _080F1F66 + ldr r0, _080F1F6C @ =sub_80F1F74 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F1F70 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x8] +_080F1F66: + pop {r0} + bx r0 + .align 2, 0 +_080F1F6C: .4byte sub_80F1F74 +_080F1F70: .4byte gUnknown_3005090 + thumb_func_end sub_80F1F40 + + thumb_func_start sub_80F1F74 +sub_80F1F74: @ 80F1F74 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _080F2050 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0xC] + movs r7, 0 + ldr r0, _080F2054 @ =gUnknown_203AB38 + mov r9, r0 +_080F1F98: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _080F2058 @ =gUnknown_2024284 + adds r6, r1, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + cmp r5, 0 + beq _080F2064 + adds r0, r6, 0 + movs r1, 0x41 + bl sub_803FBE8 + mov r1, r9 + ldr r3, [r1] + lsls r4, r7, 2 + adds r4, r7 + lsls r4, 2 + adds r3, r4 + ldr r2, _080F205C @ =0x000001ff + adds r1, r2, 0 + ands r0, r1 + ldrh r1, [r3, 0x8] + ldr r5, _080F2060 @ =0xfffffe00 + adds r2, r5, 0 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x8] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_803FBE8 + mov r2, r9 + ldr r1, [r2] + adds r1, r4 + str r0, [r1] + adds r0, r6, 0 + movs r1, 0 + bl sub_803FBE8 + mov r5, r9 + ldr r1, [r5] + adds r1, 0x4 + adds r1, r4 + str r0, [r1] + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r2, [r5] + adds r2, r4 + lsls r0, 1 + ldrb r3, [r2, 0x9] + movs r1, 0x1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0x9] + adds r0, r6, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + movs r2, 0 + mov r6, r8 + lsls r5, r6, 2 + ldr r3, _080F2054 @ =gUnknown_203AB38 +_080F2022: + ldr r0, [r3] + adds r1, r2, r4 + adds r0, 0xA + adds r0, r1 + mov r6, sp + adds r1, r6, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x9 + bls _080F2022 + ldr r0, _080F2050 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r5, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xC] + adds r0, 0x1 + strh r0, [r1, 0xC] + b _080F2098 + .align 2, 0 +_080F2050: .4byte gUnknown_3005090 +_080F2054: .4byte gUnknown_203AB38 +_080F2058: .4byte gUnknown_2024284 +_080F205C: .4byte 0x000001ff +_080F2060: .4byte 0xfffffe00 +_080F2064: + mov r6, r9 + ldr r3, [r6] + lsls r2, r7, 2 + adds r2, r7 + lsls r2, 2 + adds r4, r3, r2 + ldrh r0, [r4, 0x8] + ldr r6, _080F20EC @ =0xfffffe00 + adds r1, r6, 0 + ands r0, r1 + strh r0, [r4, 0x8] + str r5, [r4] + adds r3, 0x4 + adds r3, r2 + str r5, [r3] + ldrb r1, [r4, 0x9] + movs r0, 0x1 + ands r0, r1 + strb r0, [r4, 0x9] + mov r1, r9 + ldr r0, [r1] + adds r0, r2 + movs r1, 0xFF + strb r1, [r0, 0xA] + mov r2, r8 + lsls r5, r2, 2 +_080F2098: + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x5 + bhi _080F20A4 + b _080F1F98 +_080F20A4: + ldr r0, _080F20F0 @ =gUnknown_203AB34 + movs r3, 0 + str r3, [r0] + ldr r4, _080F20F4 @ =gUnknown_3005090 + mov r6, r8 + adds r1, r5, r6 + lsls r1, 3 + adds r2, r1, r4 + strh r3, [r2, 0xA] + movs r0, 0xFF + strh r0, [r2, 0x10] + movs r7, 0 + adds r3, r4, 0 + adds r3, 0x8 + movs r2, 0xFF +_080F20C2: + adds r0, r7, 0x5 + lsls r0, 1 + adds r0, r1 + adds r0, r3 + strh r2, [r0] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x5 + bls _080F20C2 + mov r1, r8 + adds r0, r5, r1 + lsls r0, 3 + adds r1, r0, r4 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080F20FC + ldr r0, _080F20F8 @ =sub_80F2294 + b _080F20FE + .align 2, 0 +_080F20EC: .4byte 0xfffffe00 +_080F20F0: .4byte gUnknown_203AB34 +_080F20F4: .4byte gUnknown_3005090 +_080F20F8: .4byte sub_80F2294 +_080F20FC: + ldr r0, _080F2110 @ =sub_80F2114 +_080F20FE: + str r0, [r1] + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2110: .4byte sub_80F2114 + thumb_func_end sub_80F1F74 + + thumb_func_start sub_80F2114 +sub_80F2114: @ 80F2114 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r7, _080F2140 @ =gUnknown_201C000 + bl sub_8112450 + ldr r0, _080F2144 @ =gUnknown_203AB44 + ldrb r0, [r0] + cmp r0, 0 + bne _080F2148 + movs r2, 0x80 + lsls r2, 6 + adds r0, r7, 0 + movs r1, 0 + bl memset + b _080F2162 + .align 2, 0 +_080F2140: .4byte gUnknown_201C000 +_080F2144: .4byte gUnknown_203AB44 +_080F2148: + movs r0, 0x3 + bl sub_80DA4FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080F2162 + movs r2, 0x80 + lsls r2, 6 + adds r0, r7, 0 + movs r1, 0 + bl memset +_080F2162: + movs r5, 0 + ldrh r1, [r7, 0x8] + ldr r2, _080F2208 @ =0x000001ff + adds r0, r2, 0 + ands r0, r1 + mov r1, r9 + lsls r1, 2 + mov r8, r1 + cmp r0, 0 + beq _080F218C +_080F2176: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r7, 0x78 + cmp r5, 0x31 + bhi _080F2190 + ldrh r1, [r7, 0x8] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080F2176 +_080F218C: + cmp r5, 0x31 + bls _080F21B2 +_080F2190: + ldr r4, _080F220C @ =gUnknown_201C000 + adds r6, r4, 0 + adds r4, 0x78 + movs r5, 0 + subs r7, 0x78 +_080F219A: + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0x78 + bl memcpy + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r6, 0x78 + adds r4, 0x78 + cmp r5, 0x30 + bls _080F219A +_080F21B2: + ldr r0, _080F2210 @ =gUnknown_203AB38 + ldr r1, [r0] + adds r0, r7, 0 + movs r2, 0x78 + bl memcpy + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _080F2214 @ =gUnknown_8419F54 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, _080F2218 @ =gUnknown_3005090 + mov r0, r8 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldr r1, _080F221C @ =sub_80F2220 + str r1, [r0] + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2208: .4byte 0x000001ff +_080F220C: .4byte gUnknown_201C000 +_080F2210: .4byte gUnknown_203AB38 +_080F2214: .4byte gUnknown_8419F54 +_080F2218: .4byte gUnknown_3005090 +_080F221C: .4byte sub_80F2220 + thumb_func_end sub_80F2114 + + thumb_func_start sub_80F2220 +sub_80F2220: @ 80F2220 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080F2254 @ =gUnknown_30053A4 + ldr r0, _080F2258 @ =sub_80F1F40 + str r0, [r1] + movs r0, 0x3 + bl sub_80DA364 + movs r0, 0x30 + bl sub_80722CC + ldr r1, _080F225C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080F2260 @ =sub_80F2264 + str r1, [r0] + movs r1, 0x20 + strh r1, [r0, 0xE] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F2254: .4byte gUnknown_30053A4 +_080F2258: .4byte sub_80F1F40 +_080F225C: .4byte gUnknown_3005090 +_080F2260: .4byte sub_80F2264 + thumb_func_end sub_80F2220 + + thumb_func_start sub_80F2264 +sub_80F2264: @ 80F2264 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F2284 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r2, [r1, 0xE] + movs r3, 0xE + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080F2288 + subs r0, r2, 0x1 + strh r0, [r1, 0xE] + b _080F228C + .align 2, 0 +_080F2284: .4byte gUnknown_3005090 +_080F2288: + ldr r0, _080F2290 @ =sub_80F2294 + str r0, [r1] +_080F228C: + pop {r0} + bx r0 + .align 2, 0 +_080F2290: .4byte sub_80F2294 + thumb_func_end sub_80F2264 + + thumb_func_start sub_80F2294 +sub_80F2294: @ 80F2294 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F22A8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080F22AC @ =sub_80F22B0 + str r0, [r1] + bx lr + .align 2, 0 +_080F22A8: .4byte gUnknown_3005090 +_080F22AC: .4byte sub_80F22B0 + thumb_func_end sub_80F2294 + + thumb_func_start sub_80F22B0 +sub_80F22B0: @ 80F22B0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080F22E4 @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldrh r6, [r1, 0xA] + ldr r2, _080F22E8 @ =gUnknown_203AB38 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 2 + ldr r2, [r2] + adds r4, r2, r0 + movs r2, 0xC + ldrsh r0, [r1, r2] + cmp r0, 0x3 + ble _080F22F0 + ldr r1, _080F22EC @ =gUnknown_840C268 + b _080F22F2 + .align 2, 0 +_080F22E4: .4byte gUnknown_3005090 +_080F22E8: .4byte gUnknown_203AB38 +_080F22EC: .4byte gUnknown_840C268 +_080F22F0: + ldr r1, _080F2388 @ =gUnknown_840C298 +_080F22F2: + lsls r2, r6, 3 + adds r0, r2, r1 + ldrh r3, [r0] + adds r0, r1, 0x2 + adds r0, r2, r0 + ldrh r5, [r0] + adds r0, r1, 0x4 + adds r0, r2, r0 + ldrh r0, [r0] + mov r9, r0 + adds r1, 0x6 + adds r2, r1 + ldrh r2, [r2] + mov r8, r2 + ldrh r0, [r4, 0x8] + lsls r0, 23 + lsrs r0, 23 + ldr r1, [r4] + ldr r2, [r4, 0x4] + lsls r3, 16 + asrs r3, 16 + str r3, [sp] + lsls r3, r5, 16 + asrs r3, 16 + str r3, [sp, 0x4] + lsls r3, r6, 24 + lsrs r3, 24 + str r3, [sp, 0x8] + ldr r3, _080F238C @ =0x0000ffff + str r3, [sp, 0xC] + movs r3, 0x1 + bl sub_810C1CC + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080F2390 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r2, r1, r3 + movs r4, 0 + mov r5, r9 + strh r5, [r2, 0x30] + mov r5, r8 + strh r5, [r2, 0x32] + strh r4, [r2, 0x2E] + adds r3, 0x1C + adds r1, r3 + ldr r2, _080F2394 @ =sub_80F3870 + str r2, [r1] + ldr r5, _080F2398 @ =gUnknown_3005090 + adds r1, r6, 0x5 + lsls r1, 1 + lsls r4, r7, 2 + adds r4, r7 + lsls r4, 3 + adds r1, r4 + adds r2, r5, 0 + adds r2, 0x8 + adds r1, r2 + strh r0, [r1] + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + adds r4, r5 + ldr r0, _080F239C @ =sub_80F23A0 + str r0, [r4] + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2388: .4byte gUnknown_840C298 +_080F238C: .4byte 0x0000ffff +_080F2390: .4byte gUnknown_202063C +_080F2394: .4byte sub_80F3870 +_080F2398: .4byte gUnknown_3005090 +_080F239C: .4byte sub_80F23A0 + thumb_func_end sub_80F22B0 + + thumb_func_start sub_80F23A0 +sub_80F23A0: @ 80F23A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080F2410 @ =gUnknown_3005090 + lsls r3, r0, 2 + adds r3, r0 + lsls r3, 3 + adds r5, r3, r4 + ldrh r1, [r5, 0xA] + ldr r2, _080F2414 @ =gUnknown_203AB38 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + ldr r2, [r2] + adds r6, r2, r0 + ldr r2, _080F2418 @ =gUnknown_202063C + adds r1, 0x5 + lsls r1, 1 + adds r1, r3 + adds r4, 0x8 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080F2408 + ldrh r2, [r6, 0x8] + ldr r0, _080F241C @ =0x000001ff + ands r0, r2 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _080F23F6 + lsls r0, r2, 23 + lsrs r0, 23 + movs r1, 0 + bl sub_8071DF0 +_080F23F6: + adds r0, r6, 0 + movs r1, 0 + movs r2, 0xE + bl sub_80F3194 + movs r0, 0x78 + strh r0, [r5, 0xE] + ldr r0, _080F2420 @ =sub_80F2424 + str r0, [r5] +_080F2408: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F2410: .4byte gUnknown_3005090 +_080F2414: .4byte gUnknown_203AB38 +_080F2418: .4byte gUnknown_202063C +_080F241C: .4byte 0x000001ff +_080F2420: .4byte sub_80F2424 + thumb_func_end sub_80F23A0 + + thumb_func_start sub_80F2424 +sub_80F2424: @ 80F2424 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _080F2460 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + adds r4, r6, r2 + ldrh r3, [r4, 0xA] + ldr r1, _080F2464 @ =gUnknown_203AB38 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + ldr r1, [r1] + adds r1, r0 + mov r9, r1 + ldrh r1, [r4, 0xE] + movs r7, 0xE + ldrsh r0, [r4, r7] + mov r12, r2 + cmp r0, 0 + beq _080F2468 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080F2500 + .align 2, 0 +_080F2460: .4byte gUnknown_3005090 +_080F2464: .4byte gUnknown_203AB38 +_080F2468: + ldr r2, _080F24E0 @ =gUnknown_203AB34 + ldr r0, _080F24E4 @ =gUnknown_202063C + mov r8, r0 + adds r0, r3, 0x5 + lsls r0, 1 + adds r0, r6 + mov r1, r12 + adds r1, 0x8 + adds r6, r0, r1 + movs r7, 0 + ldrsh r1, [r6, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r0 + ldr r3, [r2] + orrs r3, r1 + str r3, [r2] + ldrh r2, [r4, 0xA] + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bgt _080F24F4 + mov r7, r9 + ldrh r1, [r7, 0x1C] + ldr r0, _080F24E8 @ =0x000001ff + ands r0, r1 + cmp r0, 0 + beq _080F24F4 + adds r0, r2, 0x1 + strh r0, [r4, 0xA] + ldr r0, _080F24EC @ =0x00007716 + str r0, [sp] + adds r0, r3, 0 + movs r1, 0 + movs r2, 0xC + movs r3, 0xC + bl sub_8070588 + movs r0, 0 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r0, _080F24F0 @ =sub_80F22B0 + str r0, [r4] + b _080F2500 + .align 2, 0 +_080F24E0: .4byte gUnknown_203AB34 +_080F24E4: .4byte gUnknown_202063C +_080F24E8: .4byte 0x000001ff +_080F24EC: .4byte 0x00007716 +_080F24F0: .4byte sub_80F22B0 +_080F24F4: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + add r0, r12 + ldr r1, _080F2510 @ =sub_80F2514 + str r1, [r0] +_080F2500: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2510: .4byte sub_80F2514 + thumb_func_end sub_80F2424 + + thumb_func_start sub_80F2514 +sub_80F2514: @ 80F2514 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080F259C @ =0xffff0000 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl sub_8070588 + movs r3, 0 + lsls r1, r4, 2 + adds r0, r1, r4 + lsls r5, r0, 3 + ldr r0, _080F25A0 @ =gUnknown_3005098 + mov r12, r0 + mov r8, r1 + ldr r6, _080F25A4 @ =gUnknown_202063C + movs r7, 0xD + negs r7, r7 +_080F2542: + adds r0, r3, 0x5 + lsls r0, 1 + adds r0, r5 + mov r2, r12 + adds r1, r0, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0xFF + beq _080F2564 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r2, [r1, 0x5] + adds r0, r7, 0 + ands r0, r2 + strb r0, [r1, 0x5] +_080F2564: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x5 + bls _080F2542 + movs r0, 0 + movs r1, 0xF + bl sub_80F313C + movs r0, 0x62 + bl sub_80722CC + ldr r1, _080F25A8 @ =gUnknown_3005090 + mov r2, r8 + adds r0, r2, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0xC8 + lsls r1, 1 + strh r1, [r0, 0xE] + ldr r1, _080F25AC @ =sub_80F25B0 + str r1, [r0] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F259C: .4byte 0xffff0000 +_080F25A0: .4byte gUnknown_3005098 +_080F25A4: .4byte gUnknown_202063C +_080F25A8: .4byte gUnknown_3005090 +_080F25AC: .4byte sub_80F25B0 + thumb_func_end sub_80F2514 + + thumb_func_start sub_80F25B0 +sub_80F25B0: @ 80F25B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r7, _080F25F0 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r0, r4, r6 + lsls r5, r0, 3 + adds r1, r5, r7 + ldrh r2, [r1, 0xE] + movs r3, 0xE + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080F25F4 + subs r2, 0x1 + strh r2, [r1, 0xE] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0 + bne _080F266E + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x6E + ble _080F266E + bl sub_80F3930 + b _080F266E + .align 2, 0 +_080F25F0: .4byte gUnknown_3005090 +_080F25F4: + movs r3, 0 + mov r9, r4 + ldr r0, _080F2680 @ =gUnknown_203AB34 + mov r10, r0 + adds r4, r5, 0 + adds r7, 0x8 + mov r8, r7 + ldr r7, _080F2684 @ =gUnknown_202063C + movs r1, 0xD + negs r1, r1 + mov r12, r1 + movs r5, 0x4 +_080F260C: + adds r0, r3, 0x5 + lsls r0, 1 + adds r0, r4 + mov r2, r8 + adds r1, r0, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0xFF + beq _080F2630 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r2, [r1, 0x5] + mov r0, r12 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, 0x5] +_080F2630: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x5 + bls _080F260C + mov r3, r10 + ldr r0, [r3] + ldr r1, _080F2688 @ =0x00007716 + str r1, [sp] + movs r1, 0 + movs r2, 0xC + movs r3, 0xC + bl sub_8070588 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, _080F268C @ =gUnknown_3005090 + mov r2, r9 + adds r0, r2, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0x7 + strh r1, [r0, 0xE] + ldr r1, _080F2690 @ =sub_80F2694 + str r1, [r0] +_080F266E: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2680: .4byte gUnknown_203AB34 +_080F2684: .4byte gUnknown_202063C +_080F2688: .4byte 0x00007716 +_080F268C: .4byte gUnknown_3005090 +_080F2690: .4byte sub_80F2694 + thumb_func_end sub_80F25B0 + + thumb_func_start sub_80F2694 +sub_80F2694: @ 80F2694 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F26B4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r2, [r1, 0xE] + movs r3, 0xE + ldrsh r0, [r1, r3] + cmp r0, 0xF + ble _080F26BC + ldr r0, _080F26B8 @ =sub_80F26D4 + str r0, [r1] + b _080F26CE + .align 2, 0 +_080F26B4: .4byte gUnknown_3005090 +_080F26B8: .4byte sub_80F26D4 +_080F26BC: + adds r0, r2, 0x1 + strh r0, [r1, 0xE] + movs r0, 0xE + ldrsh r1, [r1, r0] + lsls r1, 24 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_080F26CE: + pop {r0} + bx r0 + thumb_func_end sub_80F2694 + + thumb_func_start sub_80F26D4 +sub_80F26D4: @ 80F26D4 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + ldr r0, _080F2748 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + movs r1, 0x1 + bl sub_810C374 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + str r1, [sp] + ldr r1, _080F274C @ =0x0000ffff + str r1, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x78 + movs r3, 0x48 + bl sub_810C2A4 + ldr r1, _080F2750 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + strh r0, [r4, 0x10] + ldr r0, _080F2754 @ =gUnknown_840C234 + bl sub_8003CE4 + ldr r1, _080F2758 @ =0x0000021d + movs r0, 0x1 + movs r2, 0xD0 + bl sub_814FF2C + movs r0, 0x78 + strh r0, [r4, 0xE] + ldr r0, _080F275C @ =sub_80F2760 + str r0, [r4] + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F2748: .4byte gUnknown_300500C +_080F274C: .4byte 0x0000ffff +_080F2750: .4byte gUnknown_3005090 +_080F2754: .4byte gUnknown_840C234 +_080F2758: .4byte 0x0000021d +_080F275C: .4byte sub_80F2760 + thumb_func_end sub_80F26D4 + + thumb_func_start sub_80F2760 +sub_80F2760: @ 80F2760 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080F2784 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0xE] + movs r1, 0xE + ldrsh r5, [r4, r1] + cmp r5, 0 + beq _080F2788 + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080F27F4 + .align 2, 0 +_080F2784: .4byte gUnknown_3005090 +_080F2788: + ldr r2, _080F27A8 @ =gUnknown_202063C + movs r3, 0x10 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrh r2, [r1, 0x20] + movs r3, 0x20 + ldrsh r0, [r1, r3] + cmp r0, 0xC0 + beq _080F27AC + adds r0, r2, 0x1 + strh r0, [r1, 0x20] + b _080F27F4 + .align 2, 0 +_080F27A8: .4byte gUnknown_202063C +_080F27AC: + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + movs r1, 0x2 + bl sub_80F33DC + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _080F27FC @ =gUnknown_84160C8 + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _080F2800 @ =sub_80F2804 + str r0, [r4] +_080F27F4: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F27FC: .4byte gUnknown_84160C8 +_080F2800: .4byte sub_80F2804 + thumb_func_end sub_80F2760 + + thumb_func_start sub_80F2804 +sub_80F2804: @ 80F2804 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080F2830 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F282A + movs r0, 0x4 + bl sub_8071DBC + ldr r0, _080F2834 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080F2838 @ =sub_80F283C + str r0, [r1] +_080F282A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F2830: .4byte gUnknown_30030F0 +_080F2834: .4byte gUnknown_3005090 +_080F2838: .4byte sub_80F283C + thumb_func_end sub_80F2804 + + thumb_func_start sub_80F283C +sub_80F283C: @ 80F283C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080F287C @ =gUnknown_20375F8 + ldr r1, _080F2880 @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 2 + bl CpuSet + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r1, 0x8 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _080F2884 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080F2888 @ =sub_80F288C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F287C: .4byte gUnknown_20375F8 +_080F2880: .4byte gUnknown_20371F8 +_080F2884: .4byte gUnknown_3005090 +_080F2888: .4byte sub_80F288C + thumb_func_end sub_80F283C + + thumb_func_start sub_80F288C +sub_80F288C: @ 80F288C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080F2924 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080F291E + lsls r7, r6, 2 + ldr r1, _080F2928 @ =gUnknown_3005090 + adds r0, r7, r6 + lsls r0, 3 + adds r1, 0x12 + adds r4, r0, r1 + movs r5, 0x5 +_080F28AC: + ldrb r0, [r4] + cmp r0, 0xFF + beq _080F28B6 + bl sub_810C214 +_080F28B6: + adds r4, 0x2 + subs r5, 0x1 + cmp r5, 0 + bge _080F28AC + ldr r0, _080F2928 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x10] + bl sub_810C2E8 + movs r0, 0 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019D0 + bl sub_8003ECC + movs r0, 0x1 + bl sub_8001FD4 + movs r0, 0x3 + bl sub_8001FD4 + movs r0, 0 + bl sub_8001618 + adds r0, r6, 0 + bl sub_8077508 + ldr r4, _080F292C @ =gUnknown_203AB3C + ldr r0, [r4] + cmp r0, 0 + beq _080F290A + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080F290A: + ldr r4, _080F2930 @ =gUnknown_203AB38 + ldr r0, [r4] + cmp r0, 0 + beq _080F291A + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080F291A: + bl sub_80F2934 +_080F291E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2924: .4byte gUnknown_2037AB8 +_080F2928: .4byte gUnknown_3005090 +_080F292C: .4byte gUnknown_203AB3C +_080F2930: .4byte gUnknown_203AB38 + thumb_func_end sub_80F288C + + thumb_func_start sub_80F2934 +sub_80F2934: @ 80F2934 + push {lr} + sub sp, 0x4 + ldr r0, _080F2970 @ =0x00004085 + movs r1, 0x1 + bl sub_806E584 + movs r0, 0x80 + lsls r0, 7 + bl sub_806E680 + ldr r1, _080F2974 @ =gUnknown_2031DD8 + movs r0, 0x2 + strb r0, [r1] + movs r2, 0x1 + negs r2, r2 + movs r0, 0x6 + str r0, [sp] + movs r0, 0x3 + movs r1, 0x9 + movs r3, 0xB + bl sub_805538C + bl sub_807E438 + bl sub_80559E4 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080F2970: .4byte 0x00004085 +_080F2974: .4byte gUnknown_2031DD8 + thumb_func_end sub_80F2934 + + thumb_func_start sub_80F2978 +sub_80F2978: @ 80F2978 + push {r4,lr} + ldr r0, _080F2994 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _080F29B4 + lsls r0, 2 + ldr r1, _080F2998 @ =_080F299C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2994: .4byte gUnknown_30030F0 +_080F2998: .4byte _080F299C + .align 2, 0 +_080F299C: + .4byte _080F29B4 + .4byte _080F29E4 + .4byte _080F29EA + .4byte _080F2A08 + .4byte _080F2A28 + .4byte _080F2A58 +_080F29B4: + movs r0, 0 + bl sub_80006F4 + bl sub_80F3610 + ldr r4, _080F29D8 @ =gUnknown_203AB3C + ldr r0, _080F29DC @ =0x00002008 + bl sub_8002BB0 + str r0, [r4] + ldr r0, _080F29E0 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _080F2A8C + .align 2, 0 +_080F29D8: .4byte gUnknown_203AB3C +_080F29DC: .4byte 0x00002008 +_080F29E0: .4byte gUnknown_30030F0 +_080F29E4: + bl sub_80F36BC + b _080F2A42 +_080F29EA: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + bl sub_80F36F8 + b _080F2A42 +_080F2A08: + bl sub_80F3770 + lsls r0, 24 + cmp r0, 0 + bne _080F2A8C + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80A0A48 + ldr r0, _080F2A24 @ =sub_80F1DAC + bl sub_80006F4 + b _080F2A42 + .align 2, 0 +_080F2A24: .4byte sub_80F1DAC +_080F2A28: + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + bl sub_80A0A98 + lsls r0, 24 + cmp r0, 0 + bne _080F2A8C +_080F2A42: + ldr r1, _080F2A54 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080F2A8C + .align 2, 0 +_080F2A54: .4byte gUnknown_30030F0 +_080F2A58: + ldr r1, _080F2A94 @ =0x00003f42 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0xE2 + lsls r1, 3 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080F2A98 @ =sub_80F2AA4 + movs r1, 0 + bl sub_807741C + ldr r4, _080F2A9C @ =gUnknown_203AB38 + movs r0, 0x80 + lsls r0, 6 + bl sub_8002BB0 + str r0, [r4] + ldr r0, _080F2AA0 @ =sub_80F1DC0 + bl sub_8000544 +_080F2A8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F2A94: .4byte 0x00003f42 +_080F2A98: .4byte sub_80F2AA4 +_080F2A9C: .4byte gUnknown_203AB38 +_080F2AA0: .4byte sub_80F1DC0 + thumb_func_end sub_80F2978 + + thumb_func_start sub_80F2AA4 +sub_80F2AA4: @ 80F2AA4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080F2AD8 @ =0x00000226 + str r0, [sp] + movs r0, 0 + movs r1, 0x1E + movs r2, 0 + movs r3, 0xC + bl sub_810F558 + movs r0, 0x3 + bl sub_80DA4FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080F2AE4 + ldr r0, _080F2ADC @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080F2AE0 @ =sub_80F30A4 + b _080F2B5A + .align 2, 0 +_080F2AD8: .4byte 0x00000226 +_080F2ADC: .4byte gUnknown_3005090 +_080F2AE0: .4byte sub_80F30A4 +_080F2AE4: + ldr r0, _080F2B2C @ =gUnknown_201C000 + ldr r4, _080F2B30 @ =gUnknown_203AB38 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 5 + bl CpuSet + ldr r4, [r4] + movs r2, 0 + ldrh r1, [r4, 0x8] + ldr r3, _080F2B34 @ =0x000001ff + adds r0, r3, 0 + ands r0, r1 + lsls r5, r6, 2 + cmp r0, 0 + beq _080F2B1A +_080F2B04: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + adds r4, 0x78 + cmp r2, 0x31 + bhi _080F2B3C + ldrh r1, [r4, 0x8] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080F2B04 +_080F2B1A: + cmp r2, 0x31 + bhi _080F2B3C + ldr r0, _080F2B38 @ =gUnknown_3005090 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r0 + subs r0, r2, 0x1 + b _080F2B46 + .align 2, 0 +_080F2B2C: .4byte gUnknown_201C000 +_080F2B30: .4byte gUnknown_203AB38 +_080F2B34: .4byte 0x000001ff +_080F2B38: .4byte gUnknown_3005090 +_080F2B3C: + ldr r0, _080F2B64 @ =gUnknown_3005090 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x31 +_080F2B46: + strh r0, [r1, 0x8] + movs r0, 0xA + bl sub_8054EC4 + ldr r2, _080F2B64 @ =gUnknown_3005090 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r2 + strh r0, [r1, 0xA] + ldr r0, _080F2B68 @ =sub_80F2B6C +_080F2B5A: + str r0, [r1] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F2B64: .4byte gUnknown_3005090 +_080F2B68: .4byte sub_80F2B6C + thumb_func_end sub_80F2AA4 + + thumb_func_start sub_80F2B6C +sub_80F2B6C: @ 80F2B6C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _080F2C24 @ =gUnknown_203AB38 + ldr r3, [r0] + movs r5, 0 + ldr r1, _080F2C28 @ =gUnknown_3005090 + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + movs r4, 0x8 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + ldr r2, _080F2C2C @ =gUnknown_203AB34 + cmp r5, r0 + bge _080F2BAA + adds r1, r0, 0 +_080F2B9E: + adds r3, 0x78 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r1 + blt _080F2B9E +_080F2BAA: + adds r6, r3, 0 + movs r0, 0 + str r0, [r2] + mov r5, r9 + lsls r2, r5, 2 + adds r1, r2, r5 + lsls r1, 3 + adds r1, r4 + strh r0, [r1, 0xC] + strh r0, [r1, 0x10] + movs r5, 0 + str r2, [sp, 0x14] + ldr r4, _080F2C30 @ =0x000001ff + adds r2, r1, 0 +_080F2BC6: + ldrh r1, [r6, 0x8] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080F2BD6 + ldrh r0, [r2, 0x10] + adds r0, 0x1 + strh r0, [r2, 0x10] +_080F2BD6: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r6, 0x14 + cmp r5, 0x5 + bls _080F2BC6 + adds r6, r3, 0 + movs r5, 0 + ldr r1, _080F2C28 @ =gUnknown_3005090 + ldr r0, [sp, 0x14] + add r0, r9 + lsls r0, 3 + mov r8, r0 + adds r0, r1 + str r0, [sp, 0x10] + adds r1, 0x8 + mov r10, r1 +_080F2BF8: + ldrh r1, [r6, 0x8] + ldr r2, _080F2C30 @ =0x000001ff + adds r0, r2, 0 + ands r0, r1 + adds r7, r1, 0 + cmp r0, 0 + beq _080F2CA8 + ldr r4, [sp, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _080F2C3C + lsls r1, r5, 3 + ldr r0, _080F2C34 @ =gUnknown_840C268 + adds r0, 0x4 + adds r0, r1, r0 + ldrh r3, [r0] + ldr r2, _080F2C38 @ =gUnknown_840C26E + adds r1, r2 + ldrh r4, [r1] + b _080F2C4C + .align 2, 0 +_080F2C24: .4byte gUnknown_203AB38 +_080F2C28: .4byte gUnknown_3005090 +_080F2C2C: .4byte gUnknown_203AB34 +_080F2C30: .4byte 0x000001ff +_080F2C34: .4byte gUnknown_840C268 +_080F2C38: .4byte gUnknown_840C26E +_080F2C3C: + ldr r0, _080F2C9C @ =gUnknown_840C298 + lsls r2, r5, 3 + adds r1, r0, 0x4 + adds r1, r2, r1 + ldrh r3, [r1] + adds r0, 0x6 + adds r2, r0 + ldrh r4, [r2] +_080F2C4C: + lsls r0, r7, 23 + lsrs r0, 23 + ldr r1, [r6] + ldr r2, [r6, 0x4] + lsls r3, 16 + asrs r3, 16 + str r3, [sp] + lsls r3, r4, 16 + asrs r3, 16 + str r3, [sp, 0x4] + lsls r3, r5, 24 + lsrs r3, 24 + str r3, [sp, 0x8] + ldr r3, _080F2CA0 @ =0x0000ffff + str r3, [sp, 0xC] + movs r3, 0x1 + bl sub_810C1CC + lsls r0, 16 + lsrs r0, 16 + ldr r2, _080F2CA4 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r3, [r1, 0x5] + movs r4, 0xD + negs r4, r4 + adds r2, r4, 0 + ands r3, r2 + movs r2, 0x4 + orrs r3, r2 + strb r3, [r1, 0x5] + adds r1, r5, 0x5 + lsls r1, 1 + add r1, r8 + add r1, r10 + strh r0, [r1] + b _080F2CB4 + .align 2, 0 +_080F2C9C: .4byte gUnknown_840C298 +_080F2CA0: .4byte 0x0000ffff +_080F2CA4: .4byte gUnknown_202063C +_080F2CA8: + adds r0, r5, 0x5 + lsls r0, 1 + add r0, r8 + add r0, r10 + movs r1, 0xFF + strh r1, [r0] +_080F2CB4: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r6, 0x14 + cmp r5, 0x5 + bls _080F2BF8 + ldr r0, _080F2D08 @ =0xffff0000 + ldr r2, _080F2D0C @ =0x00007716 + movs r1, 0xC + bl sub_80714D4 + ldr r0, _080F2D10 @ =gUnknown_2021CD0 + ldr r1, _080F2D14 @ =gUnknown_3005090 + ldr r4, [sp, 0x14] + add r4, r9 + lsls r4, 3 + adds r4, r1 + movs r5, 0xA + ldrsh r1, [r4, r5] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r5, _080F2D18 @ =gUnknown_2021D18 + ldr r1, _080F2D1C @ =gUnknown_84160B4 + adds r0, r5, 0 + bl sub_8008FCC + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bgt _080F2D24 + ldr r1, _080F2D20 @ =gUnknown_8415D78 + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_810F650 + b _080F2D34 + .align 2, 0 +_080F2D08: .4byte 0xffff0000 +_080F2D0C: .4byte 0x00007716 +_080F2D10: .4byte gUnknown_2021CD0 +_080F2D14: .4byte gUnknown_3005090 +_080F2D18: .4byte gUnknown_2021D18 +_080F2D1C: .4byte gUnknown_84160B4 +_080F2D20: .4byte gUnknown_8415D78 +_080F2D24: + ldr r1, _080F2D54 @ =gUnknown_8415D60 + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_810F650 +_080F2D34: + ldr r0, _080F2D58 @ =gUnknown_3005090 + ldr r1, [sp, 0x14] + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldr r0, _080F2D5C @ =sub_80F2D60 + str r0, [r1] + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2D54: .4byte gUnknown_8415D60 +_080F2D58: .4byte gUnknown_3005090 +_080F2D5C: .4byte sub_80F2D60 + thumb_func_end sub_80F2B6C + + thumb_func_start sub_80F2D60 +sub_80F2D60: @ 80F2D60 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080F2E68 @ =gUnknown_203AB38 + ldr r5, [r0] + movs r3, 0 + ldr r1, _080F2E6C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + cmp r3, r0 + bge _080F2D94 + adds r1, r0, 0 +_080F2D88: + adds r5, 0x78 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r1 + blt _080F2D88 +_080F2D94: + movs r3, 0 + lsls r7, r4, 2 + adds r0, r7, r4 + lsls r6, r0, 3 + ldr r0, _080F2E70 @ =gUnknown_3005098 + mov r10, r0 + ldr r1, _080F2E74 @ =gUnknown_202063C + mov r8, r1 + movs r2, 0xD + negs r2, r2 + mov r9, r2 + movs r0, 0x4 + mov r12, r0 +_080F2DAE: + adds r0, r3, 0x5 + lsls r0, 1 + adds r0, r6 + add r0, r10 + ldrh r1, [r0] + cmp r1, 0xFF + beq _080F2DD0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r2, [r0, 0x5] + mov r1, r9 + ands r1, r2 + mov r2, r12 + orrs r1, r2 + strb r1, [r0, 0x5] +_080F2DD0: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x5 + bls _080F2DAE + adds r1, r7, r4 + lsls r1, 3 + ldr r0, _080F2E6C @ =gUnknown_3005090 + adds r6, r1, r0 + movs r2, 0xC + ldrsh r0, [r6, r2] + adds r0, 0x5 + lsls r0, 1 + adds r0, r1 + ldr r1, _080F2E6C @ =gUnknown_3005090 + adds r1, 0x8 + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080F2E74 @ =gUnknown_202063C + adds r0, r1 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + strb r1, [r0, 0x5] + lsrs r1, 4 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r1 + ldr r1, _080F2E78 @ =0xffff0000 + eors r0, r1 + ldr r2, _080F2E7C @ =gUnknown_203AB34 + str r0, [r2] + ldr r2, _080F2E80 @ =0x00007716 + movs r1, 0xC + bl sub_8071510 + movs r0, 0xC + ldrsh r1, [r6, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r4, r5, r0 + ldrh r1, [r4, 0x8] + ldr r0, _080F2E84 @ =0x000001ff + ands r0, r1 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _080F2E4A + bl sub_80721C4 + ldrh r0, [r4, 0x8] + lsls r0, 23 + lsrs r0, 23 + movs r1, 0 + bl sub_8071DF0 +_080F2E4A: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0xE + bl sub_80F3194 + ldr r0, _080F2E88 @ =sub_80F2E8C + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2E68: .4byte gUnknown_203AB38 +_080F2E6C: .4byte gUnknown_3005090 +_080F2E70: .4byte gUnknown_3005098 +_080F2E74: .4byte gUnknown_202063C +_080F2E78: .4byte 0xffff0000 +_080F2E7C: .4byte gUnknown_203AB34 +_080F2E80: .4byte 0x00007716 +_080F2E84: .4byte 0x000001ff +_080F2E88: .4byte sub_80F2E8C + thumb_func_end sub_80F2D60 + + thumb_func_start sub_80F2E8C +sub_80F2E8C: @ 80F2E8C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080F2F00 @ =gUnknown_30030F0 + ldrh r2, [r1, 0x2E] + movs r0, 0x1 + ands r0, r2 + adds r3, r1, 0 + cmp r0, 0 + beq _080F2F38 + ldr r7, _080F2F04 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r1, r0, r5 + lsls r3, r1, 3 + adds r4, r3, r7 + ldrh r2, [r4, 0x8] + movs r6, 0x8 + ldrsh r1, [r4, r6] + mov r8, r0 + cmp r1, 0 + beq _080F2F0C + subs r0, r2, 0x1 + strh r0, [r4, 0x8] + movs r4, 0 + adds r6, r3, 0 + adds r7, 0x8 +_080F2EC4: + adds r0, r4, 0x5 + lsls r0, 1 + adds r0, r6 + adds r0, r7 + ldrb r0, [r0] + cmp r0, 0xFF + beq _080F2ED6 + bl sub_810C214 +_080F2ED6: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x5 + bls _080F2EC4 + ldr r0, _080F2F04 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r5 + lsls r1, 3 + adds r1, r0 + ldrh r2, [r1, 0xA] + movs r3, 0xA + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080F2EF8 + subs r0, r2, 0x1 + strh r0, [r1, 0xA] +_080F2EF8: + ldr r0, _080F2F08 @ =sub_80F2B6C + str r0, [r1] + b _080F2FD8 + .align 2, 0 +_080F2F00: .4byte gUnknown_30030F0 +_080F2F04: .4byte gUnknown_3005090 +_080F2F08: .4byte sub_80F2B6C +_080F2F0C: + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + beq _080F2F26 + bl sub_80721C4 + ldr r0, _080F2F2C @ =gMPlay_BGM + ldr r1, _080F2F30 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl +_080F2F26: + ldr r0, _080F2F34 @ =sub_80F2FEC + str r0, [r4] + b _080F2FD8 + .align 2, 0 +_080F2F2C: .4byte gMPlay_BGM +_080F2F30: .4byte 0x0000ffff +_080F2F34: .4byte sub_80F2FEC +_080F2F38: + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _080F2F7C + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + beq _080F2F5A + bl sub_80721C4 + ldr r0, _080F2F6C @ =gMPlay_BGM + ldr r1, _080F2F70 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl +_080F2F5A: + ldr r0, _080F2F74 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080F2F78 @ =sub_80F2FEC + str r0, [r1] + b _080F2FD8 + .align 2, 0 +_080F2F6C: .4byte gMPlay_BGM +_080F2F70: .4byte 0x0000ffff +_080F2F74: .4byte gUnknown_3005090 +_080F2F78: .4byte sub_80F2FEC +_080F2F7C: + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + beq _080F2FAC + ldr r0, _080F2FA4 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r2, [r1, 0xC] + movs r4, 0xC + ldrsh r0, [r1, r4] + cmp r0, 0 + beq _080F2FAC + subs r0, r2, 0x1 + strh r0, [r1, 0xC] + ldr r0, _080F2FA8 @ =sub_80F2D60 + str r0, [r1] + b _080F2FD8 + .align 2, 0 +_080F2FA4: .4byte gUnknown_3005090 +_080F2FA8: .4byte sub_80F2D60 +_080F2FAC: + ldrh r1, [r3, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080F2FD8 + ldr r1, _080F2FE4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r2, r0, r1 + movs r6, 0xC + ldrsh r1, [r2, r6] + movs r3, 0x10 + ldrsh r0, [r2, r3] + subs r0, 0x1 + cmp r1, r0 + bge _080F2FD8 + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + ldr r0, _080F2FE8 @ =sub_80F2D60 + str r0, [r2] +_080F2FD8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2FE4: .4byte gUnknown_3005090 +_080F2FE8: .4byte sub_80F2D60 + thumb_func_end sub_80F2E8C + + thumb_func_start sub_80F2FEC +sub_80F2FEC: @ 80F2FEC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080F3020 @ =gUnknown_20375F8 + ldr r1, _080F3024 @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 2 + bl CpuSet + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80A0A70 + ldr r1, _080F3028 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080F302C @ =sub_80F3030 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F3020: .4byte gUnknown_20375F8 +_080F3024: .4byte gUnknown_20371F8 +_080F3028: .4byte gUnknown_3005090 +_080F302C: .4byte sub_80F3030 + thumb_func_end sub_80F2FEC + + thumb_func_start sub_80F3030 +sub_80F3030: @ 80F3030 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_80A0AAC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080F3094 + movs r0, 0 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019D0 + bl sub_810F740 + bl sub_8003ECC + movs r0, 0x1 + bl sub_8001FD4 + movs r0, 0x3 + bl sub_8001FD4 + movs r0, 0 + bl sub_8001618 + adds r0, r5, 0 + bl sub_8077508 + ldr r5, _080F309C @ =gUnknown_203AB3C + ldr r0, [r5] + cmp r0, 0 + beq _080F3082 + bl sub_8002BC4 + str r4, [r5] +_080F3082: + ldr r5, _080F30A0 @ =gUnknown_203AB38 + ldr r0, [r5] + cmp r0, 0 + beq _080F3090 + bl sub_8002BC4 + str r4, [r5] +_080F3090: + bl sub_80CA5A0 +_080F3094: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F309C: .4byte gUnknown_203AB3C +_080F30A0: .4byte gUnknown_203AB38 + thumb_func_end sub_80F3030 + + thumb_func_start sub_80F30A4 +sub_80F30A4: @ 80F30A4 + push {r4,lr} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080F30FC @ =gUnknown_8415D8C + movs r1, 0x8 + movs r2, 0x1 + bl sub_810F5E8 + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _080F3100 @ =gUnknown_8416090 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, _080F3104 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080F3108 @ =sub_80F310C + str r1, [r0] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F30FC: .4byte gUnknown_8415D8C +_080F3100: .4byte gUnknown_8416090 +_080F3104: .4byte gUnknown_3005090 +_080F3108: .4byte sub_80F310C + thumb_func_end sub_80F30A4 + + thumb_func_start sub_80F310C +sub_80F310C: @ 80F310C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080F3130 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F312C + ldr r0, _080F3134 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _080F3138 @ =sub_80F2FEC + str r0, [r1] +_080F312C: + pop {r0} + bx r0 + .align 2, 0 +_080F3130: .4byte gUnknown_30030F0 +_080F3134: .4byte gUnknown_3005090 +_080F3138: .4byte sub_80F2FEC + thumb_func_end sub_80F310C + + thumb_func_start sub_80F313C +sub_80F313C: @ 80F313C + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _080F318C @ =gUnknown_8416008 + movs r0, 0x2 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r4, 0xD0 + subs r4, r0 + lsrs r0, r4, 31 + adds r4, r0 + asrs r4, 1 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0 + bl sub_8003FA0 + ldr r0, _080F3190 @ =gUnknown_840C23C + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_812E51C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F318C: .4byte gUnknown_8416008 +_080F3190: .4byte gUnknown_840C23C + thumb_func_end sub_80F313C + + thumb_func_start sub_80F3194 +sub_80F3194: @ 80F3194 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x34 + adds r7, r0, 0 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0 + bl sub_8003FA0 + ldrh r0, [r7, 0x8] + ldr r1, _080F3214 @ =0x000001ff + ands r1, r0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _080F3252 + add r4, sp, 0x1C + ldr r1, _080F3218 @ =gUnknown_84160EC + adds r0, r4, 0 + bl sub_8008D84 + ldrh r0, [r7, 0x8] + lsls r0, 23 + lsrs r0, 23 + bl sub_8043F90 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _080F321C @ =0x0000ffff + mov r8, r4 + cmp r6, r0 + beq _080F3220 + add r4, sp, 0xC + adds r0, r6, 0 + movs r1, 0x64 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + add r5, sp, 0xC + adds r0, r6, 0 + movs r1, 0x64 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r5, 0x1] + add r5, sp, 0xC + adds r0, r4, 0 + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r5, 0x2] + b _080F322E + .align 2, 0 +_080F3214: .4byte 0x000001ff +_080F3218: .4byte gUnknown_84160EC +_080F321C: .4byte 0x0000ffff +_080F3220: + add r3, sp, 0xC + adds r2, r3, 0 + adds r1, r2, 0 + movs r0, 0xAC + strb r0, [r1, 0x2] + strb r0, [r2, 0x1] + strb r0, [r3] +_080F322E: + add r1, sp, 0xC + movs r0, 0xFF + strb r0, [r1, 0x3] + mov r0, r8 + bl sub_8008DA4 + ldr r0, _080F32B8 @ =gUnknown_840C23C + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x10 + movs r3, 0x1 + bl sub_812E51C +_080F3252: + movs r2, 0 + ldrb r0, [r7, 0xA] + cmp r0, 0xFF + beq _080F327C + adds r3, r7, 0 + adds r3, 0xA +_080F325E: + mov r1, sp + adds r1, r2 + adds r1, 0xC + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x9 + bhi _080F327C + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0xFF + bne _080F325E +_080F327C: + mov r1, sp + adds r1, r2 + adds r1, 0xC + movs r0, 0xFF + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x2 + bl sub_80F79D8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x2 + add r1, sp, 0xC + bl sub_8005ED4 + adds r2, r0, 0 + ldrh r1, [r7, 0x8] + ldr r0, _080F32BC @ =0x000001ff + ands r0, r1 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _080F32C0 + lsrs r0, r2, 31 + adds r0, r2, r0 + asrs r0, 1 + movs r1, 0x80 + subs r0, r1, r0 + b _080F32C4 + .align 2, 0 +_080F32B8: .4byte gUnknown_840C23C +_080F32BC: .4byte 0x000001ff +_080F32C0: + movs r0, 0x80 + subs r0, r2 +_080F32C4: + lsls r2, r0, 24 + lsrs r2, 24 + ldr r0, _080F331C @ =gUnknown_840C23C + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r3, 0x1 + bl sub_812E51C + ldrh r2, [r7, 0x8] + ldr r4, _080F3320 @ =0x000001ff + adds r0, r4, 0 + ands r0, r2 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _080F33BA + add r1, sp, 0xC + movs r0, 0xBA + strb r0, [r1] + mov r0, sp + adds r0, 0xD + lsls r1, r2, 23 + lsrs r1, 23 + movs r2, 0xB + muls r1, r2 + ldr r2, _080F3324 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008D84 + adds r6, r0, 0 + ldrh r1, [r7, 0x8] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x20 + beq _080F3318 + cmp r0, 0x1D + bne _080F3328 +_080F3318: + movs r0, 0xFF + b _080F333A + .align 2, 0 +_080F331C: .4byte gUnknown_840C23C +_080F3320: .4byte 0x000001ff +_080F3324: .4byte gUnknown_8245EE0 +_080F3328: + lsls r0, r1, 23 + lsrs r0, 23 + ldr r1, [r7, 0x4] + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080F3342 +_080F333A: + cmp r0, 0xFE + beq _080F3346 + movs r0, 0 + b _080F3348 +_080F3342: + movs r0, 0xB5 + b _080F3348 +_080F3346: + movs r0, 0xB6 +_080F3348: + strb r0, [r6] + adds r6, 0x1 + movs r0, 0xFF + strb r0, [r6] + ldr r5, _080F33D0 @ =gUnknown_840C23C + str r5, [sp] + movs r4, 0 + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x80 + movs r3, 0x1 + bl sub_812E51C + ldr r1, _080F33D4 @ =gUnknown_84160F4 + add r0, sp, 0xC + bl sub_8008D84 + adds r6, r0, 0 + ldrb r1, [r7, 0x9] + lsrs r1, 1 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x20 + movs r3, 0x11 + bl sub_812E51C + ldr r1, _080F33D8 @ =gUnknown_8416104 + add r0, sp, 0xC + bl sub_8008D84 + adds r6, r0, 0 + ldrh r1, [r7] + movs r2, 0x2 + movs r3, 0x5 + bl sub_8008E78 + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x60 + movs r3, 0x11 + bl sub_812E51C +_080F33BA: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x34 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F33D0: .4byte gUnknown_840C23C +_080F33D4: .4byte gUnknown_84160F4 +_080F33D8: .4byte gUnknown_8416104 + thumb_func_end sub_80F3194 + + thumb_func_start sub_80F33DC +sub_80F33DC: @ 80F33DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + ldr r0, _080F35EC @ =gUnknown_840C234 + ldrb r6, [r0, 0x3] + lsls r6, 3 + subs r0, r6, 0x6 + str r0, [sp, 0x28] + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x1 + bl sub_8003FA0 + ldr r2, _080F35F0 @ =0x0000021d + movs r0, 0x1 + movs r1, 0 + movs r3, 0xD + bl sub_810F2E8 + movs r7, 0 + str r7, [sp] + str r7, [sp, 0x4] + ldr r1, _080F35F4 @ =gUnknown_840C240 + mov r9, r1 + str r1, [sp, 0x8] + str r7, [sp, 0xC] + ldr r0, _080F35F8 @ =gUnknown_84160FC + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0x3 + bl sub_812E5A4 + ldr r0, _080F35FC @ =gUnknown_300500C + mov r10, r0 + ldr r1, [r0] + movs r0, 0x2 + movs r2, 0 + bl sub_8005ED4 + adds r2, r0, 0 + ldr r1, [sp, 0x28] + subs r2, r1, r2 + lsls r2, 24 + lsrs r2, 24 + mov r0, r9 + str r0, [sp] + str r7, [sp, 0x4] + mov r1, r10 + ldr r0, [r1] + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r3, 0x3 + bl sub_812E51C + mov r1, r10 + ldr r0, [r1] + ldrb r4, [r0, 0xA] + ldrb r0, [r0, 0xB] + lsls r0, 8 + orrs r4, r0 + mov r0, r9 + str r0, [sp] + str r7, [sp, 0x4] + ldr r0, _080F3600 @ =gUnknown_8416104 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0x12 + bl sub_812E51C + add r1, sp, 0x14 + mov r8, r1 + ldr r1, _080F3604 @ =0x000186a0 + adds r0, r4, 0 + bl __modsi3 + ldr r5, _080F3608 @ =0x00002710 + adds r1, r5, 0 + bl __divsi3 + subs r0, 0x5F + mov r1, r8 + strb r0, [r1] + add r0, sp, 0x14 + mov r8, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + movs r5, 0xFA + lsls r5, 2 + adds r1, r5, 0 + bl __udivsi3 + adds r0, 0xA1 + mov r1, r8 + strb r0, [r1, 0x1] + add r0, sp, 0x14 + mov r8, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __udivsi3 + adds r0, 0xA1 + mov r1, r8 + strb r0, [r1, 0x2] + add r5, sp, 0x14 + adds r0, r4, 0 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r5, 0x3] + add r5, sp, 0x14 + adds r0, r4, 0 + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r5, 0x4] + add r1, sp, 0x14 + movs r0, 0xFF + strb r0, [r1, 0x5] + subs r6, 0x24 + lsls r6, 24 + lsrs r6, 24 + mov r0, r9 + str r0, [sp] + str r7, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r6, 0 + movs r3, 0x12 + bl sub_812E51C + mov r1, r9 + str r1, [sp] + str r7, [sp, 0x4] + ldr r0, _080F360C @ =gUnknown_8415CE8 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0x20 + bl sub_812E51C + add r5, sp, 0x14 + mov r0, r10 + ldr r4, [r0] + ldrh r0, [r4, 0xE] + movs r1, 0x64 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r5] + add r5, sp, 0x14 + ldrh r0, [r4, 0xE] + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r5, 0x1] + add r5, sp, 0x14 + ldrh r0, [r4, 0xE] + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r5, 0x2] + add r0, sp, 0x14 + ldrb r0, [r0] + cmp r0, 0xA1 + bne _080F3570 + add r0, sp, 0x14 + strb r7, [r0] +_080F3570: + add r0, sp, 0x14 + ldrb r1, [r0] + cmp r1, 0 + bne _080F3582 + ldrb r0, [r0, 0x1] + cmp r0, 0xA1 + bne _080F3582 + add r0, sp, 0x14 + strb r1, [r0, 0x1] +_080F3582: + add r1, sp, 0x14 + movs r6, 0 + movs r0, 0xF0 + strb r0, [r1, 0x3] + adds r4, r1, 0 + ldr r0, _080F35FC @ =gUnknown_300500C + ldr r5, [r0] + ldrb r0, [r5, 0x10] + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4, 0x4] + add r4, sp, 0x14 + ldrb r0, [r5, 0x10] + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r4, 0x5] + add r1, sp, 0x14 + movs r0, 0xFF + strb r0, [r1, 0x6] + ldr r2, [sp, 0x28] + subs r2, 0x24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080F35F4 @ =gUnknown_840C240 + str r0, [sp] + str r6, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r3, 0x20 + bl sub_812E51C + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F35EC: .4byte gUnknown_840C234 +_080F35F0: .4byte 0x0000021d +_080F35F4: .4byte gUnknown_840C240 +_080F35F8: .4byte gUnknown_84160FC +_080F35FC: .4byte gUnknown_300500C +_080F3600: .4byte gUnknown_8416104 +_080F3604: .4byte 0x000186a0 +_080F3608: .4byte 0x00002710 +_080F360C: .4byte gUnknown_8415CE8 + thumb_func_end sub_80F33DC + + thumb_func_start sub_80F3610 +sub_80F3610: @ 80F3610 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _080F36B0 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _080F36B4 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_080F3636: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _080F3636 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _080F36B0 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + bl sub_8070528 + ldr r0, _080F36B8 @ =gUnknown_840C39C + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F36B0: .4byte 0x040000d4 +_080F36B4: .4byte 0x81000800 +_080F36B8: .4byte gUnknown_840C39C + thumb_func_end sub_80F3610 + + thumb_func_start sub_80F36BC +sub_80F36BC: @ 80F36BC + push {lr} + bl sub_8087E64 + bl sub_80773BC + bl sub_8006B10 + bl sub_80F6808 + bl sub_810BB8C + bl sub_80088F0 + ldr r1, _080F36EC @ =gUnknown_3003E58 + movs r0, 0x8 + strb r0, [r1] + ldr r0, _080F36F0 @ =gUnknown_840C248 + bl sub_800EBCC + ldr r0, _080F36F4 @ =gUnknown_840C258 + bl sub_800EC28 + pop {r0} + bx r0 + .align 2, 0 +_080F36EC: .4byte gUnknown_3003E58 +_080F36F0: .4byte gUnknown_840C248 +_080F36F4: .4byte gUnknown_840C258 + thumb_func_end sub_80F36BC + + thumb_func_start sub_80F36F8 +sub_80F36F8: @ 80F36F8 + push {r4,lr} + movs r0, 0 + bl sub_8001618 + ldr r1, _080F3764 @ =gUnknown_840C228 + movs r0, 0 + movs r2, 0x3 + bl sub_8001658 + ldr r4, _080F3768 @ =gUnknown_203AB3C + ldr r1, [r4] + adds r1, 0x6 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _080F376C @ =0x00001006 + adds r1, r0 + movs r0, 0x3 + bl sub_8001FA0 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F3764: .4byte gUnknown_840C228 +_080F3768: .4byte gUnknown_203AB3C +_080F376C: .4byte 0x00001006 + thumb_func_end sub_80F36F8 + + thumb_func_start sub_80F3770 +sub_80F3770: @ 80F3770 + push {r4,lr} + sub sp, 0x8 + ldr r0, _080F3788 @ =gUnknown_203AB3C + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x4 + bhi _080F3854 + lsls r0, 2 + ldr r1, _080F378C @ =_080F3790 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3788: .4byte gUnknown_203AB3C +_080F378C: .4byte _080F3790 + .align 2, 0 +_080F3790: + .4byte _080F37A4 + .4byte _080F37BC + .4byte _080F37C8 + .4byte _080F381E + .4byte _080F3828 +_080F37A4: + ldr r1, _080F37B8 @ =gUnknown_840C3BC + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _080F3854 + .align 2, 0 +_080F37B8: .4byte gUnknown_840C3BC +_080F37BC: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + beq _080F3854 + b _080F385E +_080F37C8: + movs r4, 0x20 + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + movs r0, 0xB + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8002454 + str r4, [sp] + movs r0, 0x6 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + movs r3, 0xE + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _080F3854 +_080F381E: + bl sub_80F6C6C + bl sub_80F6C98 + b _080F3854 +_080F3828: + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + ldr r0, _080F3850 @ =gUnknown_203AB3C + ldr r1, [r0] + movs r0, 0 + strh r0, [r1] + b _080F3860 + .align 2, 0 +_080F3850: .4byte gUnknown_203AB3C +_080F3854: + ldr r0, _080F3868 @ =gUnknown_203AB3C + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_080F385E: + movs r0, 0x1 +_080F3860: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F3868: .4byte gUnknown_203AB3C + thumb_func_end sub_80F3770 + + thumb_func_start nullsub_84 +nullsub_84: @ 80F386C + bx lr + thumb_func_end nullsub_84 + + thumb_func_start sub_80F3870 +sub_80F3870: @ 80F3870 + push {r4,lr} + adds r2, r0, 0 + ldr r1, [r2, 0x20] + ldr r0, [r2, 0x30] + cmp r1, r0 + beq _080F38C6 + ldrh r3, [r2, 0x20] + movs r1, 0x20 + ldrsh r0, [r2, r1] + movs r4, 0x30 + ldrsh r1, [r2, r4] + cmp r0, r1 + bge _080F3890 + adds r0, r3, 0 + adds r0, 0xF + strh r0, [r2, 0x20] +_080F3890: + ldrh r3, [r2, 0x20] + movs r4, 0x20 + ldrsh r0, [r2, r4] + cmp r0, r1 + ble _080F38A0 + adds r0, r3, 0 + subs r0, 0xF + strh r0, [r2, 0x20] +_080F38A0: + ldrh r3, [r2, 0x22] + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r4, 0x32 + ldrsh r1, [r2, r4] + cmp r0, r1 + bge _080F38B4 + adds r0, r3, 0 + adds r0, 0xA + strh r0, [r2, 0x22] +_080F38B4: + ldrh r3, [r2, 0x22] + movs r4, 0x22 + ldrsh r0, [r2, r4] + cmp r0, r1 + ble _080F38CE + adds r0, r3, 0 + subs r0, 0xA + strh r0, [r2, 0x22] + b _080F38CE +_080F38C6: + movs r0, 0x1 + strh r0, [r2, 0x2E] + ldr r0, _080F38D4 @ =nullsub_84 + str r0, [r2, 0x1C] +_080F38CE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F38D4: .4byte nullsub_84 + thumb_func_end sub_80F3870 + + thumb_func_start sub_80F38D8 +sub_80F38D8: @ 80F38D8 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x26] + movs r2, 0x26 + ldrsh r0, [r5, r2] + cmp r0, 0x78 + ble _080F38EE + adds r0, r5, 0 + bl sub_8007280 + b _080F3926 +_080F38EE: + adds r0, r1, 0x1 + ldrh r1, [r5, 0x30] + adds r0, r1 + strh r0, [r5, 0x26] + ldrh r4, [r5, 0x2E] + lsls r4, 24 + lsrs r4, 24 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + ands r0, r1 + adds r0, 0x8 + ldr r1, _080F392C @ =gUnknown_825E074 + lsls r4, 1 + adds r4, r1 + movs r2, 0 + ldrsh r1, [r4, r2] + muls r0, r1 + cmp r0, 0 + bge _080F391C + adds r0, 0xFF +_080F391C: + asrs r0, 8 + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x2E] + adds r0, 0x4 + strh r0, [r5, 0x2E] +_080F3926: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F392C: .4byte gUnknown_825E074 + thumb_func_end sub_80F38D8 + + thumb_func_start sub_80F3930 +sub_80F3930: @ 80F3930 + push {r4,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8044EC8 + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x7 + ands r2, r0 + negs r2, r2 + ldr r0, _080F39A0 @ =gUnknown_840C384 + lsls r4, 16 + asrs r4, 16 + lsls r2, 16 + asrs r2, 16 + adds r1, r4, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080F39A4 @ =gUnknown_202063C + adds r4, r1, r0 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x11 + bl __umodsi3 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + bl sub_8044EC8 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0 + beq _080F39A8 + movs r0, 0 + b _080F39AA + .align 2, 0 +_080F39A0: .4byte gUnknown_840C384 +_080F39A4: .4byte gUnknown_202063C +_080F39A8: + movs r0, 0x1 +_080F39AA: + strh r0, [r4, 0x30] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80F3930 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/heal_location.s b/asm/heal_location.s new file mode 100644 index 000000000..bce9752f8 --- /dev/null +++ b/asm/heal_location.s @@ -0,0 +1,254 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BFC50 +sub_80BFC50: @ 80BFC50 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r1, 16 + movs r3, 0 + ldr r2, _080BFC74 @ =gUnknown_83EEBF8 +_080BFC5E: + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r0, r4 + bne _080BFC78 + movs r0, 0x1 + ldrsb r0, [r2, r0] + cmp r0, r1 + bne _080BFC78 + adds r0, r3, 0x1 + b _080BFC82 + .align 2, 0 +_080BFC74: .4byte gUnknown_83EEBF8 +_080BFC78: + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x13 + bls _080BFC5E + movs r0, 0 +_080BFC82: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BFC50 + + thumb_func_start sub_80BFC88 +sub_80BFC88: @ 80BFC88 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + bl sub_80BFC50 + cmp r0, 0 + beq _080BFCA8 + lsls r0, 3 + ldr r1, _080BFCA4 @ =gUnknown_83EEBF0 + adds r0, r1 + b _080BFCAA + .align 2, 0 +_080BFCA4: .4byte gUnknown_83EEBF0 +_080BFCA8: + movs r0, 0 +_080BFCAA: + pop {r1} + bx r1 + thumb_func_end sub_80BFC88 + + thumb_func_start sub_80BFCB0 +sub_80BFCB0: @ 80BFCB0 + push {lr} + cmp r0, 0 + beq _080BFCC8 + cmp r0, 0x14 + bhi _080BFCC8 + lsls r0, 3 + ldr r1, _080BFCC4 @ =gUnknown_83EEBF0 + adds r0, r1 + b _080BFCCA + .align 2, 0 +_080BFCC4: .4byte gUnknown_83EEBF0 +_080BFCC8: + movs r0, 0 +_080BFCCA: + pop {r1} + bx r1 + thumb_func_end sub_80BFCB0 + + thumb_func_start sub_80BFCD0 +sub_80BFCD0: @ 80BFCD0 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080BFD24 @ =0x00004082 + adds r0, r6, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x1 + bne _080BFD38 + ldr r0, _080BFD28 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _080BFD2C @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _080BFD30 @ =0x00003d42 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + cmp r0, 0 + blt _080BFD0A + adds r0, r6, 0 + movs r1, 0 + bl sub_806E584 +_080BFD0A: + ldr r0, _080BFD34 @ =gUnknown_20370D2 + strh r5, [r0] + movs r0, 0x4 + strh r0, [r4, 0x4] + movs r0, 0xB + strh r0, [r4, 0x6] + movs r0, 0x2 + strb r0, [r4] + movs r0, 0xA + strb r0, [r4, 0x1] + movs r0, 0xFF + strb r0, [r4, 0x2] + b _080BFDFA + .align 2, 0 +_080BFD24: .4byte 0x00004082 +_080BFD28: .4byte gUnknown_3005008 +_080BFD2C: .4byte 0x00003d34 +_080BFD30: .4byte 0x00003d42 +_080BFD34: .4byte gUnknown_20370D2 +_080BFD38: + ldr r0, _080BFD7C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x1C + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1D] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_80BFC50 + adds r6, r0, 0 + ldr r2, _080BFD80 @ =gUnknown_83EEC98 + subs r0, r6, 0x1 + lsls r0, 2 + adds r1, r0, r2 + ldrh r1, [r1] + strb r1, [r4] + adds r2, 0x2 + adds r0, r2 + ldrh r2, [r0] + strb r2, [r4, 0x1] + movs r0, 0xFF + strb r0, [r4, 0x2] + cmp r1, 0x4 + bne _080BFD84 + cmp r2, 0 + bne _080BFD84 + movs r0, 0x8 + strh r0, [r4, 0x4] + movs r0, 0x5 + b _080BFDF2 + .align 2, 0 +_080BFD7C: .4byte gUnknown_3005008 +_080BFD80: .4byte gUnknown_83EEC98 +_080BFD84: + ldr r0, _080BFDA4 @ =gUnknown_83EEC98 + subs r2, r6, 0x1 + lsls r3, r2, 2 + adds r1, r3, r0 + ldrh r1, [r1] + adds r5, r0, 0 + cmp r1, 0xD + bne _080BFDA8 + adds r0, r5, 0x2 + adds r0, r3, r0 + ldrh r0, [r0] + cmp r0, 0 + bne _080BFDA8 + strh r1, [r4, 0x4] + movs r0, 0xC + b _080BFDF2 + .align 2, 0 +_080BFDA4: .4byte gUnknown_83EEC98 +_080BFDA8: + lsls r1, r2, 2 + adds r0, r1, r5 + ldrh r0, [r0] + cmp r0, 0x20 + bne _080BFDC0 + adds r0, r5, 0x2 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, 0 + bne _080BFDC0 + movs r0, 0x5 + b _080BFDEE +_080BFDC0: + lsls r2, 2 + adds r0, r2, r5 + ldrh r0, [r0] + cmp r0, 0x2 + bne _080BFDEC + adds r0, r5, 0x2 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, 0xA + bne _080BFDEC + movs r0, 0x4 + strh r0, [r4, 0x4] + movs r0, 0xB + strh r0, [r4, 0x6] + ldr r0, _080BFDE8 @ =0x00004082 + movs r1, 0 + bl sub_806E584 + b _080BFDF4 + .align 2, 0 +_080BFDE8: .4byte 0x00004082 +_080BFDEC: + movs r0, 0x7 +_080BFDEE: + strh r0, [r4, 0x4] + movs r0, 0x4 +_080BFDF2: + strh r0, [r4, 0x6] +_080BFDF4: + adds r0, r6, 0 + bl sub_80BFE00 +_080BFDFA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80BFCD0 + + thumb_func_start sub_80BFE00 +sub_80BFE00: @ 80BFE00 + ldr r2, _080BFE10 @ =gUnknown_20370D2 + ldr r1, _080BFE14 @ =gUnknown_83EECE8 + subs r0, 0x1 + adds r0, r1 + ldrb r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_080BFE10: .4byte gUnknown_20370D2 +_080BFE14: .4byte gUnknown_83EECE8 + thumb_func_end sub_80BFE00 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/help_system.s b/asm/help_system.s new file mode 100644 index 000000000..9eba9e037 --- /dev/null +++ b/asm/help_system.s @@ -0,0 +1,2254 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813B870 +sub_813B870: @ 813B870 + push {r4,r5,lr} + ldr r0, _0813B888 @ =gUnknown_203F178 + ldrb r0, [r0, 0x15] + cmp r0, 0x8 + bls _0813B87C + b _0813BB24 +_0813B87C: + lsls r0, 2 + ldr r1, _0813B88C @ =_0813B890 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813B888: .4byte gUnknown_203F178 +_0813B88C: .4byte _0813B890 + .align 2, 0 +_0813B890: + .4byte _0813B8B4 + .4byte _0813B968 + .4byte _0813B994 + .4byte _0813B9D8 + .4byte _0813BA40 + .4byte _0813BA78 + .4byte _0813BAA0 + .4byte _0813BAE0 + .4byte _0813BB14 +_0813B8B4: + ldr r1, _0813B904 @ =gUnknown_203F177 + movs r0, 0 + strb r0, [r1] + ldr r0, _0813B908 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + bne _0813B900 + ldr r2, _0813B90C @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _0813B8DA + ldr r0, _0813B910 @ =gUnknown_203F175 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0813B900 +_0813B8DA: + ldrh r1, [r2, 0x2E] + movs r0, 0xC0 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + bne _0813B8E8 + b _0813BB24 +_0813B8E8: + bl sub_812B45C + lsls r0, 24 + cmp r0, 0 + beq _0813B8FA + ldr r0, _0813B914 @ =gUnknown_3005ECC + ldrb r0, [r0] + cmp r0, 0 + bne _0813B918 +_0813B8FA: + movs r0, 0xFC + bl sub_80722CC +_0813B900: + movs r0, 0 + b _0813BB28 + .align 2, 0 +_0813B904: .4byte gUnknown_203F177 +_0813B908: .4byte gUnknown_300500C +_0813B90C: .4byte gUnknown_30030F0 +_0813B910: .4byte gUnknown_203F175 +_0813B914: .4byte gUnknown_3005ECC +_0813B918: + ldr r0, _0813B94C @ =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, _0813B950 @ =gMPlay_SE2 + bl m4aMPlayStop + movs r0, 0xFA + bl sub_80722CC + ldr r0, _0813B954 @ =gUnknown_203F174 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B93C + ldr r0, _0813B958 @ =gMPlay_BGM + ldr r1, _0813B95C @ =0x0000ffff + movs r2, 0x80 + bl m4aMPlayVolumeControl +_0813B93C: + bl sub_813BB38 + ldr r1, _0813B960 @ =gUnknown_203F177 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0813B964 @ =gUnknown_203F178 + movs r0, 0x1 + b _0813BB22 + .align 2, 0 +_0813B94C: .4byte gMPlay_SE1 +_0813B950: .4byte gMPlay_SE2 +_0813B954: .4byte gUnknown_203F174 +_0813B958: .4byte gMPlay_BGM +_0813B95C: .4byte 0x0000ffff +_0813B960: .4byte gUnknown_203F177 +_0813B964: .4byte gUnknown_203F178 +_0813B968: + bl sub_813BBAC + bl sub_813BB74 + bl sub_813BBC8 + movs r1, 0xA0 + lsls r1, 19 + ldr r0, _0813B98C @ =gUnknown_8464128 + ldrh r0, [r0, 0x1E] + strh r0, [r1] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r1, _0813B990 @ =gUnknown_203F178 + movs r0, 0x2 + b _0813BB22 + .align 2, 0 +_0813B98C: .4byte gUnknown_8464128 +_0813B990: .4byte gUnknown_203F178 +_0813B994: + ldr r1, _0813B9C4 @ =0x0600c000 + movs r2, 0x80 + lsls r2, 7 + movs r0, 0 + movs r3, 0 + bl sub_8000F44 + ldr r0, _0813B9C8 @ =gUnknown_8464128 + movs r1, 0xA0 + lsls r1, 19 + movs r2, 0x20 + movs r3, 0 + bl sub_8000EAC + ldr r0, _0813B9CC @ =gUnknown_8464008 + ldr r1, _0813B9D0 @ =gUnknown_201FEE0 + movs r2, 0x90 + lsls r2, 1 + movs r3, 0 + bl sub_8000EAC + ldr r1, _0813B9D4 @ =gUnknown_203F178 + movs r0, 0x3 + b _0813BB22 + .align 2, 0 +_0813B9C4: .4byte 0x0600c000 +_0813B9C8: .4byte gUnknown_8464128 +_0813B9CC: .4byte gUnknown_8464008 +_0813B9D0: .4byte gUnknown_201FEE0 +_0813B9D4: .4byte gUnknown_203F178 +_0813B9D8: + bl sub_813BCF4 + bl sub_813C5D4 + bl sub_813C5FC + ldr r0, _0813BA08 @ =gUnknown_841CB49 + bl sub_813C454 + movs r0, 0x1 + bl sub_813BD14 + bl sub_812B40C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813BA14 + ldr r0, _0813BA0C @ =gUnknown_203F190 + ldr r1, _0813BA10 @ =gUnknown_203F1AC + bl sub_812BC54 + b _0813BA1C + .align 2, 0 +_0813BA08: .4byte gUnknown_841CB49 +_0813BA0C: .4byte gUnknown_203F190 +_0813BA10: .4byte gUnknown_203F1AC +_0813BA14: + ldr r0, _0813BA34 @ =gUnknown_203F190 + ldr r1, _0813BA38 @ =gUnknown_203F1AC + bl sub_812BCA8 +_0813BA1C: + movs r0, 0x1 + bl sub_813BE78 + movs r0, 0x1 + bl sub_813BF50 + bl sub_813BC5C + ldr r1, _0813BA3C @ =gUnknown_203F178 + movs r0, 0x4 + b _0813BB22 + .align 2, 0 +_0813BA34: .4byte gUnknown_203F190 +_0813BA38: .4byte gUnknown_203F1AC +_0813BA3C: .4byte gUnknown_203F178 +_0813BA40: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + ldr r1, _0813BA70 @ =0x00001f0c + movs r0, 0x8 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0 + bl sub_8000A38 + ldr r1, _0813BA74 @ =gUnknown_203F178 + movs r0, 0x5 + b _0813BB22 + .align 2, 0 +_0813BA70: .4byte 0x00001f0c +_0813BA74: .4byte gUnknown_203F178 +_0813BA78: + ldr r0, _0813BA94 @ =gUnknown_203F190 + ldr r1, _0813BA98 @ =gUnknown_203F1AC + bl sub_812BB9C + lsls r0, 24 + cmp r0, 0 + bne _0813BB24 + movs r0, 0xFB + bl sub_80722CC + ldr r1, _0813BA9C @ =gUnknown_203F178 + movs r0, 0x6 + b _0813BB22 + .align 2, 0 +_0813BA94: .4byte gUnknown_203F190 +_0813BA98: .4byte gUnknown_203F1AC +_0813BA9C: .4byte gUnknown_203F178 +_0813BAA0: + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_813BC2C + movs r1, 0 + ldr r5, _0813BAD0 @ =0x000001ff + movs r4, 0xA0 + lsls r4, 19 + ldr r0, _0813BAD4 @ =gUnknown_8464128 + ldrh r2, [r0, 0x1E] + ldr r3, _0813BAD8 @ =0x05000200 +_0813BABA: + adds r0, r1, r4 + strh r2, [r0] + adds r0, r1, r3 + strh r2, [r0] + adds r1, 0x2 + cmp r1, r5 + ble _0813BABA + ldr r1, _0813BADC @ =gUnknown_203F178 + movs r0, 0x7 + b _0813BB22 + .align 2, 0 +_0813BAD0: .4byte 0x000001ff +_0813BAD4: .4byte gUnknown_8464128 +_0813BAD8: .4byte 0x05000200 +_0813BADC: .4byte gUnknown_203F178 +_0813BAE0: + ldr r0, _0813BB04 @ =gUnknown_203F174 + ldrb r0, [r0] + cmp r0, 0 + bne _0813BAF4 + ldr r0, _0813BB08 @ =gMPlay_BGM + ldr r1, _0813BB0C @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl +_0813BAF4: + bl sub_813BC48 + bl sub_813BBF4 + ldr r1, _0813BB10 @ =gUnknown_203F178 + movs r0, 0x8 + b _0813BB22 + .align 2, 0 +_0813BB04: .4byte gUnknown_203F174 +_0813BB08: .4byte gMPlay_BGM +_0813BB0C: .4byte 0x0000ffff +_0813BB10: .4byte gUnknown_203F178 +_0813BB14: + bl sub_813BBDC + ldr r1, _0813BB30 @ =gUnknown_203F177 + movs r0, 0 + strb r0, [r1] + ldr r1, _0813BB34 @ =gUnknown_203F178 + movs r0, 0 +_0813BB22: + strb r0, [r1, 0x15] +_0813BB24: + ldr r0, _0813BB34 @ =gUnknown_203F178 + ldrb r0, [r0, 0x15] +_0813BB28: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0813BB30: .4byte gUnknown_203F177 +_0813BB34: .4byte gUnknown_203F178 + thumb_func_end sub_813B870 + + thumb_func_start sub_813BB38 +sub_813BB38: @ 813BB38 + ldr r2, _0813BB60 @ =gUnknown_203F178 + ldr r1, _0813BB64 @ =gUnknown_30030F0 + ldr r0, [r1, 0xC] + str r0, [r2] + ldr r0, [r1, 0x10] + str r0, [r2, 0x4] + movs r0, 0 + str r0, [r1, 0xC] + str r0, [r1, 0x10] + ldr r1, _0813BB68 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _0813BB6C @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _0813BB70 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + bx lr + .align 2, 0 +_0813BB60: .4byte gUnknown_203F178 +_0813BB64: .4byte gUnknown_30030F0 +_0813BB68: .4byte 0x040000b0 +_0813BB6C: .4byte 0x0000c5ff +_0813BB70: .4byte 0x00007fff + thumb_func_end sub_813BB38 + + thumb_func_start sub_813BB74 +sub_813BB74: @ 813BB74 + push {r4,lr} + movs r0, 0 + bl sub_8000AC4 + ldr r4, _0813BBA8 @ =gUnknown_203F178 + strh r0, [r4, 0x8] + movs r0, 0x8 + bl sub_8000AC4 + strh r0, [r4, 0xA] + movs r0, 0x10 + bl sub_8000AC4 + strh r0, [r4, 0xC] + movs r0, 0x12 + bl sub_8000AC4 + strh r0, [r4, 0xE] + movs r0, 0x50 + bl sub_8000AC4 + strh r0, [r4, 0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813BBA8: .4byte gUnknown_203F178 + thumb_func_end sub_813BB74 + + thumb_func_start sub_813BBAC +sub_813BBAC: @ 813BBAC + push {lr} + ldr r0, _0813BBC0 @ =0x0600c000 + ldr r1, _0813BBC4 @ =gUnknown_203B174 + movs r2, 0x80 + lsls r2, 7 + movs r3, 0 + bl sub_8000EAC + pop {r0} + bx r0 + .align 2, 0 +_0813BBC0: .4byte 0x0600c000 +_0813BBC4: .4byte gUnknown_203B174 + thumb_func_end sub_813BBAC + + thumb_func_start sub_813BBC8 +sub_813BBC8: @ 813BBC8 + push {lr} + ldr r0, _0813BBD8 @ =gUnknown_203F18A + adds r1, r0, 0x1 + adds r2, r0, 0x2 + bl sub_8002F5C + pop {r0} + bx r0 + .align 2, 0 +_0813BBD8: .4byte gUnknown_203F18A + thumb_func_end sub_813BBC8 + + thumb_func_start sub_813BBDC +sub_813BBDC: @ 813BBDC + ldr r2, _0813BBEC @ =gUnknown_30030F0 + ldr r1, _0813BBF0 @ =gUnknown_203F178 + ldr r0, [r1] + str r0, [r2, 0xC] + ldr r0, [r1, 0x4] + str r0, [r2, 0x10] + bx lr + .align 2, 0 +_0813BBEC: .4byte gUnknown_30030F0 +_0813BBF0: .4byte gUnknown_203F178 + thumb_func_end sub_813BBDC + + thumb_func_start sub_813BBF4 +sub_813BBF4: @ 813BBF4 + push {r4,lr} + ldr r4, _0813BC28 @ =gUnknown_203F178 + ldrh r1, [r4, 0x10] + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x10 + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x12 + bl sub_8000A38 + ldrh r1, [r4, 0xA] + movs r0, 0x8 + bl sub_8000A38 + ldrh r1, [r4, 0x8] + movs r0, 0 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813BC28: .4byte gUnknown_203F178 + thumb_func_end sub_813BBF4 + + thumb_func_start sub_813BC2C +sub_813BC2C: @ 813BC2C + push {lr} + ldr r0, _0813BC40 @ =gUnknown_203B174 + ldr r1, _0813BC44 @ =0x0600c000 + movs r2, 0x80 + lsls r2, 7 + movs r3, 0 + bl sub_8000EAC + pop {r0} + bx r0 + .align 2, 0 +_0813BC40: .4byte gUnknown_203B174 +_0813BC44: .4byte 0x0600c000 + thumb_func_end sub_813BC2C + + thumb_func_start sub_813BC48 +sub_813BC48: @ 813BC48 + push {lr} + ldr r0, _0813BC58 @ =gUnknown_203F18A + adds r1, r0, 0x1 + adds r2, r0, 0x2 + bl sub_8002F7C + pop {r0} + bx r0 + .align 2, 0 +_0813BC58: .4byte gUnknown_203F18A + thumb_func_end sub_813BC48 + + thumb_func_start sub_813BC5C +sub_813BC5C: @ 813BC5C + push {lr} + ldr r0, _0813BC70 @ =gUnknown_201C000 + ldr r1, _0813BC74 @ =0x0600c000 + movs r2, 0x80 + lsls r2, 7 + movs r3, 0 + bl sub_8000EAC + pop {r0} + bx r0 + .align 2, 0 +_0813BC70: .4byte gUnknown_201C000 +_0813BC74: .4byte 0x0600c000 + thumb_func_end sub_813BC5C + + thumb_func_start sub_813BC78 +sub_813BC78: @ 813BC78 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, [sp, 0x20] + ldr r5, [sp, 0x24] + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r7, r5, 16 + lsrs r0, r2, 24 + adds r2, r0, r4 + cmp r0, r2 + bge _0813BCDE + mov r12, r2 + ldr r1, _0813BCF0 @ =gUnknown_201F800 + mov r10, r1 +_0813BCAE: + mov r4, r9 + mov r2, r8 + adds r1, r4, r2 + adds r3, r0, 0x1 + cmp r4, r1 + bge _0813BCD6 + lsls r2, r0, 6 + mov r5, r10 +_0813BCBE: + lsls r0, r4, 1 + adds r0, r2, r0 + adds r0, r5 + strh r6, [r0] + adds r0, r6, r7 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r1 + blt _0813BCBE +_0813BCD6: + lsls r0, r3, 16 + lsrs r0, 16 + cmp r0, r12 + blt _0813BCAE +_0813BCDE: + bl sub_813BC5C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813BCF0: .4byte gUnknown_201F800 + thumb_func_end sub_813BC78 + + thumb_func_start sub_813BCF4 +sub_813BCF4: @ 813BCF4 + push {lr} + sub sp, 0x8 + ldr r0, _0813BD10 @ =0x000001ff + movs r1, 0x14 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + movs r2, 0 + movs r3, 0x1E + bl sub_813BC78 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0813BD10: .4byte 0x000001ff + thumb_func_end sub_813BCF4 + + thumb_func_start sub_813BD14 +sub_813BD14: @ 813BD14 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0813BD26 + cmp r2, 0x1 + beq _0813BD40 + b _0813BD54 +_0813BD26: + ldr r0, _0813BD3C @ =0x000001ff + movs r1, 0x2 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x7 + bl sub_813BC78 + b _0813BD54 + .align 2, 0 +_0813BD3C: .4byte 0x000001ff +_0813BD40: + movs r0, 0xF4 + lsls r0, 1 + movs r1, 0x2 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x7 + bl sub_813BC78 +_0813BD54: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813BD14 + + thumb_func_start sub_813BD5C +sub_813BD5C: @ 813BD5C + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0813BD6E + cmp r2, 0x1 + beq _0813BD88 + b _0813BD9C +_0813BD6E: + ldr r0, _0813BD84 @ =0x000001ff + movs r1, 0x2 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0xD + movs r2, 0 + movs r3, 0x10 + bl sub_813BC78 + b _0813BD9C + .align 2, 0 +_0813BD84: .4byte 0x000001ff +_0813BD88: + movs r0, 0xD0 + lsls r0, 1 + movs r1, 0x2 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0xD + movs r2, 0 + movs r3, 0x10 + bl sub_813BC78 +_0813BD9C: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813BD5C + + thumb_func_start sub_813BDA4 +sub_813BDA4: @ 813BDA4 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0813BDB6 + cmp r2, 0x1 + beq _0813BDD0 + b _0813BDE2 +_0813BDB6: + ldr r0, _0813BDCC @ =0x000001ff + movs r1, 0x10 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x1A + bl sub_813BC78 + b _0813BDE2 + .align 2, 0 +_0813BDCC: .4byte 0x000001ff +_0813BDD0: + movs r0, 0x10 + str r0, [sp] + str r2, [sp, 0x4] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x1A + bl sub_813BC78 +_0813BDE2: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813BDA4 + + thumb_func_start sub_813BDE8 +sub_813BDE8: @ 813BDE8 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0813BDFA + cmp r2, 0x1 + beq _0813BE14 + b _0813BE2A +_0813BDFA: + ldr r0, _0813BE10 @ =0x000001ff + movs r1, 0x10 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x1C + bl sub_813BC78 + b _0813BE2A + .align 2, 0 +_0813BE10: .4byte 0x000001ff +_0813BE14: + movs r0, 0xFD + lsls r0, 1 + movs r1, 0x11 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x1C + bl sub_813BC78 +_0813BE2A: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813BDE8 + + thumb_func_start sub_813BE30 +sub_813BE30: @ 813BE30 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0813BE42 + cmp r2, 0x1 + beq _0813BE5C + b _0813BE70 +_0813BE42: + ldr r0, _0813BE58 @ =0x000001ff + movs r1, 0x5 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0x2 + movs r2, 0xE + movs r3, 0x1A + bl sub_813BC78 + b _0813BE70 + .align 2, 0 +_0813BE58: .4byte 0x000001ff +_0813BE5C: + movs r0, 0x8F + lsls r0, 1 + movs r1, 0x5 + str r1, [sp] + str r2, [sp, 0x4] + movs r1, 0x2 + movs r2, 0xE + movs r3, 0x1A + bl sub_813BC78 +_0813BE70: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813BE30 + + thumb_func_start sub_813BE78 +sub_813BE78: @ 813BE78 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _0813BE8A + cmp r6, 0x1 + beq _0813BEB4 + b _0813BED8 +_0813BE8A: + ldr r5, _0813BEB0 @ =0x000001ff + movs r4, 0x1 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x1C + bl sub_813BC78 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0x13 + movs r3, 0x1C + bl sub_813BC78 + b _0813BED8 + .align 2, 0 +_0813BEB0: .4byte 0x000001ff +_0813BEB4: + ldr r0, _0813BEE0 @ =0x000001f7 + str r6, [sp] + movs r4, 0 + str r4, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x1C + bl sub_813BC78 + movs r0, 0xFC + lsls r0, 1 + str r6, [sp] + str r4, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x13 + movs r3, 0x1C + bl sub_813BC78 +_0813BED8: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813BEE0: .4byte 0x000001f7 + thumb_func_end sub_813BE78 + + thumb_func_start sub_813BEE4 +sub_813BEE4: @ 813BEE4 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _0813BEF6 + cmp r6, 0x1 + beq _0813BF20 + b _0813BF44 +_0813BEF6: + ldr r5, _0813BF1C @ =0x000001ff + movs r4, 0x1 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x1C + bl sub_813BC78 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0x13 + movs r3, 0x1C + bl sub_813BC78 + b _0813BF44 + .align 2, 0 +_0813BF1C: .4byte 0x000001ff +_0813BF20: + ldr r0, _0813BF4C @ =0x000001fb + str r6, [sp] + movs r4, 0 + str r4, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x1C + bl sub_813BC78 + movs r0, 0xFE + lsls r0, 1 + str r6, [sp] + str r4, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x13 + movs r3, 0x1C + bl sub_813BC78 +_0813BF44: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813BF4C: .4byte 0x000001fb + thumb_func_end sub_813BEE4 + + thumb_func_start sub_813BF50 +sub_813BF50: @ 813BF50 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _0813BF62 + cmp r6, 0x1 + beq _0813BF8C + b _0813BFB2 +_0813BF62: + ldr r5, _0813BF88 @ =0x000001ff + movs r4, 0x14 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_813BC78 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1D + movs r2, 0 + movs r3, 0x1 + bl sub_813BC78 + b _0813BFB2 + .align 2, 0 +_0813BF88: .4byte 0x000001ff +_0813BF8C: + ldr r6, _0813BFBC @ =0x000001f9 + movs r5, 0x14 + str r5, [sp] + movs r4, 0 + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_813BC78 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x1D + movs r2, 0 + movs r3, 0x1 + bl sub_813BC78 +_0813BFB2: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813BFBC: .4byte 0x000001f9 + thumb_func_end sub_813BF50 + + thumb_func_start sub_813BFC0 +sub_813BFC0: @ 813BFC0 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0813BFD2 + cmp r2, 0x1 + beq _0813BFE8 + b _0813BFFC +_0813BFD2: + ldr r0, _0813BFE4 @ =0x000001ff + movs r1, 0x1 + str r1, [sp] + str r2, [sp, 0x4] + movs r2, 0x5 + movs r3, 0x1C + bl sub_813BC78 + b _0813BFFC + .align 2, 0 +_0813BFE4: .4byte 0x000001ff +_0813BFE8: + movs r0, 0xFE + lsls r0, 1 + str r2, [sp] + movs r1, 0 + str r1, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x5 + movs r3, 0x1C + bl sub_813BC78 +_0813BFFC: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_813BFC0 + + thumb_func_start sub_813C004 +sub_813C004: @ 813C004 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r6, 0 + beq _0813C01A + cmp r6, 0x1 + beq _0813C040 + b _0813C06A +_0813C01A: + ldr r5, _0813C03C @ =0x000001ff + movs r4, 0x1 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1C + movs r2, 0x3 + movs r3, 0x1 + bl sub_813BC78 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x1C + movs r2, 0x12 + b _0813C050 + .align 2, 0 +_0813C03C: .4byte 0x000001ff +_0813C040: + cmp r2, 0 + bne _0813C058 + movs r0, 0xFF + lsls r0, 1 + str r6, [sp] + str r2, [sp, 0x4] + movs r1, 0x1C + movs r2, 0x3 +_0813C050: + movs r3, 0x1 + bl sub_813BC78 + b _0813C06A +_0813C058: + ldr r0, _0813C074 @ =0x000001fd + str r6, [sp] + movs r1, 0 + str r1, [sp, 0x4] + movs r1, 0x1C + movs r2, 0x12 + movs r3, 0x1 + bl sub_813BC78 +_0813C06A: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813C074: .4byte 0x000001fd + thumb_func_end sub_813C004 + + thumb_func_start sub_813C078 +sub_813C078: @ 813C078 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + str r1, [sp, 0x28] + mov r9, r2 + ldr r1, [sp, 0x58] + ldr r2, [sp, 0x5C] + ldr r4, [sp, 0x60] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] + lsls r3, 24 + lsrs r7, r3, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x2C] + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x30] + str r7, [sp, 0x34] +_0813C0AC: + mov r0, r9 + ldrb r1, [r0] + movs r2, 0x1 + add r9, r2 + adds r0, r1, 0 + subs r0, 0xF8 + cmp r0, 0x7 + bls _0813C0BE + b _0813C358 +_0813C0BE: + lsls r0, 2 + ldr r1, _0813C0C8 @ =_0813C0CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813C0C8: .4byte _0813C0CC + .align 2, 0 +_0813C0CC: + .4byte _0813C2D4 + .4byte _0813C348 + .4byte _0813C1E4 + .4byte _0813C1E4 + .4byte _0813C200 + .4byte _0813C0EC + .4byte _0813C1E4 + .4byte _0813C39C +_0813C0EC: + mov r0, r9 + ldrb r1, [r0] + movs r2, 0x1 + add r9, r2 + cmp r1, 0x1 + bne _0813C154 + movs r4, 0 + ldr r0, _0813C14C @ =gUnknown_300500C + ldr r1, [r0] + ldrb r1, [r1] + cmp r1, 0xFF + beq _0813C0AC + ldr r5, _0813C150 @ =gUnknown_3003E20 +_0813C106: + ldr r0, [r0] + adds r0, r4 + ldrb r1, [r0] + ldr r0, [sp, 0x28] + str r0, [sp] + str r7, [sp, 0x4] + mov r2, r10 + str r2, [sp, 0x8] + ldr r0, [sp, 0x2C] + str r0, [sp, 0xC] + ldr r2, [sp, 0x30] + str r2, [sp, 0x10] + ldr r0, [sp, 0x24] + add r2, sp, 0x14 + add r3, sp, 0x1C + bl sub_813C3AC + ldr r0, [sp, 0x24] + ldrb r0, [r5] + adds r0, r7, r0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bhi _0813C0AC + ldr r0, _0813C14C @ =gUnknown_300500C + ldr r1, [r0] + adds r1, r4 + ldrb r1, [r1] + cmp r1, 0xFF + bne _0813C106 + b _0813C0AC + .align 2, 0 +_0813C14C: .4byte gUnknown_300500C +_0813C150: .4byte gUnknown_3003E20 +_0813C154: + cmp r1, 0x2 + bne _0813C0AC + movs r4, 0 + ldr r5, _0813C160 @ =gUnknown_3003E20 + b _0813C1BC + .align 2, 0 +_0813C160: .4byte gUnknown_3003E20 +_0813C164: + ldrb r1, [r1] + ldr r2, [sp, 0x28] + str r2, [sp] + str r7, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + ldr r2, [sp, 0x2C] + str r2, [sp, 0xC] + ldr r0, [sp, 0x30] + str r0, [sp, 0x10] + ldr r0, [sp, 0x24] + add r2, sp, 0x14 + add r3, sp, 0x1C + bl sub_813C3AC + b _0813C1AC +_0813C184: + ldr r0, _0813C1D8 @ =gUnknown_841CB41 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0813C0AC + adds r1, r0, 0 + ldr r2, [sp, 0x28] + str r2, [sp] + str r7, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + ldr r2, [sp, 0x2C] + str r2, [sp, 0xC] + ldr r0, [sp, 0x30] + str r0, [sp, 0x10] + ldr r0, [sp, 0x24] + add r2, sp, 0x14 + add r3, sp, 0x1C + bl sub_813C3AC +_0813C1AC: + ldr r1, [sp, 0x24] + ldrb r0, [r5] + adds r0, r7, r0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0813C1BC: + ldr r0, _0813C1DC @ =0x00000834 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813C184 + ldr r0, _0813C1E0 @ =gUnknown_841CB3C + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, 0xFF + bne _0813C164 + b _0813C0AC + .align 2, 0 +_0813C1D8: .4byte gUnknown_841CB41 +_0813C1DC: .4byte 0x00000834 +_0813C1E0: .4byte gUnknown_841CB3C +_0813C1E4: + ldr r7, [sp, 0x34] + ldr r1, _0813C1FC @ =gUnknown_3003DA0 + adds r1, 0x81 + mov r0, r10 + adds r0, 0x1 + ldrb r1, [r1] + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + b _0813C0AC + .align 2, 0 +_0813C1FC: .4byte gUnknown_3003DA0 +_0813C200: + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x1 + add r9, r0 + subs r0, r1, 0x1 + cmp r0, 0x15 + bls _0813C210 + b _0813C0AC +_0813C210: + lsls r0, 2 + ldr r1, _0813C21C @ =_0813C220 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813C21C: .4byte _0813C220 + .align 2, 0 +_0813C220: + .4byte _0813C2C8 + .4byte _0813C2C8 + .4byte _0813C2C8 + .4byte _0813C278 + .4byte _0813C2C8 + .4byte _0813C2C8 + .4byte _0813C0AC + .4byte _0813C2C8 + .4byte _0813C0AC + .4byte _0813C0AC + .4byte _0813C27C + .4byte _0813C2C8 + .4byte _0813C2C8 + .4byte _0813C2C8 + .4byte _0813C0AC + .4byte _0813C27C + .4byte _0813C2CE + .4byte _0813C2CE + .4byte _0813C282 + .4byte _0813C2CE + .4byte _0813C0AC + .4byte _0813C0AC +_0813C278: + movs r1, 0x1 + add r9, r1 +_0813C27C: + movs r2, 0x1 + add r9, r2 + b _0813C2C8 +_0813C282: + mov r2, r9 + ldrb r0, [r2] + ldr r1, [sp, 0x34] + adds r0, r1 + subs r6, r0, r7 + cmp r6, 0 + ble _0813C2C8 + ldr r2, [sp, 0x28] + str r2, [sp, 0x1C] + ldr r1, [sp, 0x2C] + lsls r0, r1, 3 + add r4, sp, 0x1C + movs r5, 0 + strh r0, [r4, 0x4] + ldr r2, [sp, 0x30] + lsls r0, r2, 3 + strh r0, [r4, 0x6] + ldr r0, [sp, 0x24] + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + lsls r3, r6, 16 + lsrs r3, 16 + str r0, [sp] + str r5, [sp, 0x4] + adds r0, r4, 0 + adds r1, r7, 0 + mov r2, r10 + bl sub_8004C84 + adds r0, r7, r6 + lsls r0, 24 + lsrs r7, r0, 24 +_0813C2C8: + movs r0, 0x1 + add r9, r0 + b _0813C0AC +_0813C2CE: + movs r1, 0x1 + add r9, r1 + b _0813C0AC +_0813C2D4: + mov r2, r9 + ldrb r1, [r2] + movs r0, 0x1 + add r9, r0 + adds r6, r1, 0 + adds r0, r6, 0 + bl sub_8006418 + lsls r0, 24 + lsrs r0, 19 + ldr r1, _0813C344 @ =gUnknown_81EA700 + adds r0, r1 + str r0, [sp, 0x14] + add r1, sp, 0x14 + movs r2, 0 + mov r8, r2 + movs r0, 0x80 + strh r0, [r1, 0x4] + strh r0, [r1, 0x6] + ldr r0, [sp, 0x28] + str r0, [sp, 0x1C] + ldr r1, [sp, 0x2C] + lsls r0, r1, 3 + add r5, sp, 0x1C + strh r0, [r5, 0x4] + ldr r2, [sp, 0x30] + lsls r0, r2, 3 + strh r0, [r5, 0x6] + adds r0, r6, 0 + bl sub_8006428 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_8006438 + lsls r0, 24 + lsrs r0, 24 + str r7, [sp] + mov r1, r10 + str r1, [sp, 0x4] + str r4, [sp, 0x8] + str r0, [sp, 0xC] + mov r2, r8 + str r2, [sp, 0x10] + add r0, sp, 0x14 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004AA4 + adds r0, r6, 0 + bl sub_8006428 + b _0813C38E + .align 2, 0 +_0813C344: .4byte gUnknown_81EA700 +_0813C348: + mov r0, r9 + ldrb r1, [r0] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + orrs r1, r0 + movs r0, 0x1 + add r9, r0 +_0813C358: + cmp r1, 0 + bne _0813C36A + ldr r1, [sp, 0x24] + cmp r1, 0 + bne _0813C366 + adds r0, r7, 0x5 + b _0813C390 +_0813C366: + adds r0, r7, 0x4 + b _0813C390 +_0813C36A: + add r3, sp, 0x1C + ldr r2, [sp, 0x28] + str r2, [sp] + str r7, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + ldr r2, [sp, 0x2C] + str r2, [sp, 0xC] + ldr r0, [sp, 0x30] + str r0, [sp, 0x10] + ldr r0, [sp, 0x24] + add r2, sp, 0x14 + bl sub_813C3AC + ldr r1, [sp, 0x24] + ldr r0, _0813C398 @ =gUnknown_3003DA0 + adds r0, 0x80 + ldrb r0, [r0] +_0813C38E: + adds r0, r7, r0 +_0813C390: + lsls r0, 24 + lsrs r7, r0, 24 + b _0813C0AC + .align 2, 0 +_0813C398: .4byte gUnknown_3003DA0 +_0813C39C: + add sp, 0x38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_813C078 + + thumb_func_start sub_813C3AC +sub_813C3AC: @ 813C3AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r7, r2, 0 + mov r8, r3 + ldr r2, [sp, 0x38] + ldr r3, [sp, 0x3C] + ldr r4, [sp, 0x40] + ldr r5, [sp, 0x44] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r0, r1, 16 + adds r1, r0, 0 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + cmp r6, 0 + bne _0813C3EE + movs r1, 0 + bl sub_8006448 + b _0813C402 +_0813C3EE: + cmp r6, 0x5 + bne _0813C3FA + movs r1, 0 + bl sub_8006958 + b _0813C402 +_0813C3FA: + adds r0, r1, 0 + movs r1, 0 + bl sub_80065B8 +_0813C402: + ldr r1, _0813C450 @ =gUnknown_3003DA0 + str r1, [r7] + movs r2, 0 + movs r0, 0x10 + strh r0, [r7, 0x4] + strh r0, [r7, 0x6] + ldr r0, [sp, 0x34] + mov r3, r8 + str r0, [r3] + lsls r0, r4, 3 + strh r0, [r3, 0x4] + lsls r0, r5, 3 + strh r0, [r3, 0x6] + mov r0, r10 + str r0, [sp] + mov r3, r9 + str r3, [sp, 0x4] + adds r0, r1, 0 + adds r0, 0x80 + ldrb r0, [r0] + str r0, [sp, 0x8] + adds r1, 0x81 + ldrb r0, [r1] + str r0, [sp, 0xC] + str r2, [sp, 0x10] + adds r0, r7, 0 + mov r1, r8 + movs r3, 0 + bl sub_8004AA4 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C450: .4byte gUnknown_3003DA0 + thumb_func_end sub_813C3AC + + thumb_func_start sub_813C454 +sub_813C454: @ 813C454 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r0, 0x1 + movs r1, 0xF + movs r2, 0x2 + bl sub_8002EA8 + ldr r1, _0813C484 @ =gUnknown_201FD00 + movs r2, 0x2 + str r2, [sp] + movs r0, 0x7 + str r0, [sp, 0x4] + str r2, [sp, 0x8] + movs r0, 0x5 + adds r2, r4, 0 + movs r3, 0x6 + bl sub_813C078 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C484: .4byte gUnknown_201FD00 + thumb_func_end sub_813C454 + + thumb_func_start sub_813C488 +sub_813C488: @ 813C488 + push {r4,r5,lr} + sub sp, 0xC + adds r5, r0, 0 + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r4, 0x7C + subs r4, r0 + movs r0, 0x1 + movs r1, 0xF + movs r2, 0x2 + bl sub_8002EA8 + ldr r1, _0813C4C8 @ =gUnknown_201F400 + lsls r4, 24 + lsrs r4, 24 + movs r2, 0x2 + str r2, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + str r2, [sp, 0x8] + movs r0, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_813C078 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813C4C8: .4byte gUnknown_201F400 + thumb_func_end sub_813C488 + + thumb_func_start sub_813C4CC +sub_813C4CC: @ 813C4CC + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + movs r1, 0xF + movs r2, 0x2 + bl sub_8002EA8 + ldr r1, _0813C508 @ =gUnknown_201C000 + str r4, [sp] + movs r0, 0x1A + str r0, [sp, 0x4] + movs r0, 0x10 + str r0, [sp, 0x8] + movs r0, 0x2 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_813C078 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813C508: .4byte gUnknown_201C000 + thumb_func_end sub_813C4CC + + thumb_func_start sub_813C50C +sub_813C50C: @ 813C50C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + mov r8, r0 + mov r9, r1 + add r1, sp, 0xC + ldr r2, _0813C578 @ =0x0000eeee + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _0813C57C @ =gUnknown_201C000 + ldr r2, _0813C580 @ =0x01001a00 + adds r0, r1, 0 + adds r1, r4, 0 + bl CpuSet + movs r0, 0x1 + movs r1, 0xE + movs r2, 0x2 + bl sub_8002EA8 + movs r6, 0 + str r6, [sp] + movs r5, 0x1A + str r5, [sp, 0x4] + movs r0, 0x10 + str r0, [sp, 0x8] + movs r0, 0x2 + adds r1, r4, 0 + mov r2, r8 + movs r3, 0 + bl sub_813C078 + movs r0, 0x9C + lsls r0, 4 + adds r4, r0 + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0xD + str r0, [sp, 0x8] + movs r0, 0x2 + adds r1, r4, 0 + mov r2, r9 + movs r3, 0 + bl sub_813C078 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813C578: .4byte 0x0000eeee +_0813C57C: .4byte gUnknown_201C000 +_0813C580: .4byte 0x01001a00 + thumb_func_end sub_813C50C + + thumb_func_start sub_813C584 +sub_813C584: @ 813C584 + push {r4,r5,lr} + sub sp, 0x10 + adds r5, r0, 0 + add r1, sp, 0xC + ldr r2, _0813C5C8 @ =0x00001111 + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _0813C5CC @ =gUnknown_201E3C0 + ldr r2, _0813C5D0 @ =0x01000820 + adds r0, r1, 0 + adds r1, r4, 0 + bl CpuSet + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0x3 + bl sub_8002EA8 + movs r0, 0x6 + str r0, [sp] + movs r0, 0x1A + str r0, [sp, 0x4] + movs r0, 0x5 + str r0, [sp, 0x8] + movs r0, 0x2 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x2 + bl sub_813C078 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813C5C8: .4byte 0x00001111 +_0813C5CC: .4byte gUnknown_201E3C0 +_0813C5D0: .4byte 0x01000820 + thumb_func_end sub_813C584 + + thumb_func_start sub_813C5D4 +sub_813C5D4: @ 813C5D4 + push {lr} + sub sp, 0x4 + mov r1, sp + ldr r2, _0813C5F0 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _0813C5F4 @ =gUnknown_201FD00 + ldr r2, _0813C5F8 @ =0x010000e0 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0813C5F0: .4byte 0x0000ffff +_0813C5F4: .4byte gUnknown_201FD00 +_0813C5F8: .4byte 0x010000e0 + thumb_func_end sub_813C5D4 + + thumb_func_start sub_813C5FC +sub_813C5FC: @ 813C5FC + push {lr} + sub sp, 0x4 + mov r1, sp + ldr r2, _0813C618 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _0813C61C @ =gUnknown_201F400 + ldr r2, _0813C620 @ =0x01000200 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0813C618: .4byte 0x0000ffff +_0813C61C: .4byte gUnknown_201F400 +_0813C620: .4byte 0x01000200 + thumb_func_end sub_813C5FC + + thumb_func_start sub_813C624 +sub_813C624: @ 813C624 + push {lr} + sub sp, 0x4 + mov r1, sp + ldr r2, _0813C640 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _0813C644 @ =gUnknown_201C000 + ldr r2, _0813C648 @ =0x01001a00 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0813C640: .4byte 0x0000ffff +_0813C644: .4byte gUnknown_201C000 +_0813C648: .4byte 0x01001a00 + thumb_func_end sub_813C624 + + thumb_func_start sub_813C64C +sub_813C64C: @ 813C64C + push {r4-r7,lr} + ldr r4, _0813C680 @ =gUnknown_203F190 + adds r3, r4, 0 + ldm r0!, {r5-r7} + stm r3!, {r5-r7} + movs r0, 0 + strb r1, [r4, 0xC] + strb r2, [r4, 0xD] + strb r0, [r4, 0xE] + ldrh r0, [r4, 0x4] + ldrh r1, [r4, 0x6] + cmp r0, r1 + bcs _0813C668 + strh r0, [r4, 0x6] +_0813C668: + movs r0, 0 + bl sub_813BDA4 + bl sub_813C624 + bl sub_813C7CC + bl sub_813C828 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C680: .4byte gUnknown_203F190 + thumb_func_end sub_813C64C + + thumb_func_start sub_813C684 +sub_813C684: @ 813C684 + ldr r1, _0813C68C @ =gUnknown_203F176 + strb r0, [r1] + bx lr + .align 2, 0 +_0813C68C: .4byte gUnknown_203F176 + thumb_func_end sub_813C684 + + thumb_func_start sub_813C690 +sub_813C690: @ 813C690 + push {lr} + ldr r1, _0813C6A0 @ =gUnknown_203F176 + ldrb r0, [r1] + cmp r0, 0 + beq _0813C6A4 + subs r0, 0x1 + strb r0, [r1] + b _0813C752 + .align 2, 0 +_0813C6A0: .4byte gUnknown_203F176 +_0813C6A4: + ldr r2, _0813C6C8 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813C6D0 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0813C6CC @ =gUnknown_203F190 + ldrb r0, [r1, 0xC] + ldrb r2, [r1, 0xD] + adds r0, r2 + ldr r1, [r1] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0, 0x4] + b _0813C756 + .align 2, 0 +_0813C6C8: .4byte gUnknown_30030F0 +_0813C6CC: .4byte gUnknown_203F190 +_0813C6D0: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0813C6E4 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x2 + negs r0, r0 + b _0813C756 +_0813C6E4: + movs r0, 0xC0 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0813C6F4 + movs r0, 0x6 + negs r0, r0 + b _0813C756 +_0813C6F4: + ldrh r1, [r2, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0813C702 + movs r0, 0x1 + b _0813C718 +_0813C702: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0813C70E + movs r0, 0x1 + b _0813C73A +_0813C70E: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0813C730 + movs r0, 0x7 +_0813C718: + movs r1, 0 + bl sub_813C944 + lsls r0, 24 + cmp r0, 0 + bne _0813C72A + movs r0, 0x5 + bl sub_80722CC +_0813C72A: + movs r0, 0x4 + negs r0, r0 + b _0813C756 +_0813C730: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0813C752 + movs r0, 0x7 +_0813C73A: + movs r1, 0x1 + bl sub_813C944 + lsls r0, 24 + cmp r0, 0 + bne _0813C74C + movs r0, 0x5 + bl sub_80722CC +_0813C74C: + movs r0, 0x5 + negs r0, r0 + b _0813C756 +_0813C752: + movs r0, 0x1 + negs r0, r0 +_0813C756: + pop {r1} + bx r1 + thumb_func_end sub_813C690 + + thumb_func_start sub_813C75C +sub_813C75C: @ 813C75C + push {r4-r6,lr} + ldr r5, _0813C784 @ =gUnknown_203F190 + ldrh r1, [r5, 0x4] + subs r0, r1, 0x7 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r1, 0x7 + bls _0813C7C4 + ldrb r4, [r5, 0xC] + ldrb r0, [r5, 0xD] + adds r4, r0 + movs r0, 0 + movs r1, 0 + bl sub_813C004 + cmp r4, 0 + bne _0813C788 + movs r0, 0x1 + b _0813C7A2 + .align 2, 0 +_0813C784: .4byte gUnknown_203F190 +_0813C788: + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _0813C798 + ldrb r0, [r5, 0xD] + cmp r0, 0 + beq _0813C798 + movs r0, 0x1 + b _0813C7A2 +_0813C798: + ldr r0, _0813C7AC @ =gUnknown_203F190 + ldrb r0, [r0, 0xC] + cmp r0, r6 + bne _0813C7B0 + movs r0, 0 +_0813C7A2: + movs r1, 0x1 + bl sub_813C004 + b _0813C7C4 + .align 2, 0 +_0813C7AC: .4byte gUnknown_203F190 +_0813C7B0: + cmp r0, 0 + beq _0813C7C4 + movs r0, 0 + movs r1, 0x1 + bl sub_813C004 + movs r0, 0x1 + movs r1, 0x1 + bl sub_813C004 +_0813C7C4: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813C75C + + thumb_func_start sub_813C7CC +sub_813C7CC: @ 813C7CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r3, _0813C824 @ =gUnknown_203F190 + ldrb r5, [r3, 0xC] + movs r6, 0 + ldrh r0, [r3, 0x6] + cmp r6, r0 + bge _0813C81A + adds r4, r3, 0 + movs r7, 0 +_0813C7F2: + ldrb r1, [r4, 0x8] + adds r1, 0x8 + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r4, 0x9] + adds r2, r7 + lsls r2, 24 + lsrs r2, 24 + ldr r3, [r4] + lsls r0, r5, 3 + adds r0, r3 + ldr r0, [r0] + bl sub_813C4CC + adds r5, 0x1 + add r7, r8 + adds r6, 0x1 + ldrh r0, [r4, 0x6] + cmp r6, r0 + blt _0813C7F2 +_0813C81A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C824: .4byte gUnknown_203F190 + thumb_func_end sub_813C7CC + + thumb_func_start sub_813C828 +sub_813C828: @ 813C828 + push {r4,lr} + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0813C858 @ =gUnknown_203F190 + ldrb r1, [r3, 0x8] + ldrb r2, [r3, 0xD] + adds r4, r2, 0 + muls r4, r0 + adds r2, r4, 0 + ldrb r3, [r3, 0x9] + adds r2, r3 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0813C85C @ =gUnknown_841623B + bl sub_813C4CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C858: .4byte gUnknown_203F190 +_0813C85C: .4byte gUnknown_841623B + thumb_func_end sub_813C828 + + thumb_func_start sub_813C860 +sub_813C860: @ 813C860 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0813C894 @ =gUnknown_203F190 + ldrb r1, [r3, 0x8] + adds r2, r4, 0 + muls r2, r0 + ldrb r3, [r3, 0x9] + adds r2, r3 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0813C898 @ =gUnknown_841CB4E + bl sub_813C4CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C894: .4byte gUnknown_203F190 +_0813C898: .4byte gUnknown_841CB4E + thumb_func_end sub_813C860 + + thumb_func_start sub_813C89C +sub_813C89C: @ 813C89C + push {r4,r5,lr} + lsls r0, 24 + cmp r0, 0 + bne _0813C8EC + ldr r0, _0813C8B4 @ =gUnknown_203F190 + ldrh r1, [r0, 0x6] + adds r5, r0, 0 + cmp r1, 0x1 + bne _0813C8B8 + movs r4, 0 + b _0813C8CA + .align 2, 0 +_0813C8B4: .4byte gUnknown_203F190 +_0813C8B8: + ldrh r0, [r5, 0x6] + lsrs r2, r0, 1 + movs r1, 0x1 + ands r1, r0 + adds r2, r1 + subs r0, r2 + subs r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_0813C8CA: + ldrb r1, [r5, 0xC] + cmp r1, 0 + bne _0813C8DA + ldrb r0, [r5, 0xD] + cmp r0, 0 + beq _0813C926 + subs r0, 0x1 + b _0813C93A +_0813C8DA: + ldrb r0, [r5, 0xD] + cmp r0, r4 + bls _0813C8E4 + subs r0, 0x1 + b _0813C93A +_0813C8E4: + subs r0, r1, 0x1 + strb r0, [r5, 0xC] + movs r0, 0x2 + b _0813C93E +_0813C8EC: + ldr r0, _0813C8FC @ =gUnknown_203F190 + ldrh r1, [r0, 0x6] + adds r5, r0, 0 + cmp r1, 0x1 + bne _0813C900 + movs r4, 0 + b _0813C90A + .align 2, 0 +_0813C8FC: .4byte gUnknown_203F190 +_0813C900: + ldrh r0, [r5, 0x6] + lsrs r2, r0, 1 + movs r1, 0x1 + ands r0, r1 + adds r4, r2, r0 +_0813C90A: + adds r1, r5, 0 + ldrb r2, [r1, 0xC] + ldrh r0, [r1, 0x4] + ldrh r3, [r1, 0x6] + subs r0, r3 + cmp r2, r0 + bne _0813C92A + ldrb r2, [r1, 0xD] + subs r0, r3, 0x1 + cmp r2, r0 + bge _0813C926 + adds r0, r2, 0x1 + strb r0, [r1, 0xD] + b _0813C93C +_0813C926: + movs r0, 0 + b _0813C93E +_0813C92A: + ldrb r0, [r1, 0xD] + cmp r0, r4 + bcc _0813C938 + adds r0, r2, 0x1 + strb r0, [r1, 0xC] + movs r0, 0x2 + b _0813C93E +_0813C938: + adds r0, 0x1 +_0813C93A: + strb r0, [r5, 0xD] +_0813C93C: + movs r0, 0x1 +_0813C93E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813C89C + + thumb_func_start sub_813C944 +sub_813C944: @ 813C944 + push {r4-r7,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r0, _0813C97C @ =gUnknown_203F190 + ldrb r7, [r0, 0xD] + movs r5, 0 + cmp r5, r2 + bge _0813C96C + adds r4, r2, 0 +_0813C95A: + adds r0, r6, 0 + bl sub_813C89C + orrs r5, r0 + lsls r0, r5, 24 + lsrs r5, r0, 24 + subs r4, 0x1 + cmp r4, 0 + bne _0813C95A +_0813C96C: + cmp r5, 0x1 + beq _0813C980 + cmp r5, 0x1 + ble _0813C978 + cmp r5, 0x3 + ble _0813C990 +_0813C978: + movs r0, 0x1 + b _0813C9D6 + .align 2, 0 +_0813C97C: .4byte gUnknown_203F190 +_0813C980: + adds r0, r7, 0 + bl sub_813C860 + bl sub_813C828 + bl sub_813BC5C + b _0813C9D4 +_0813C990: + bl sub_812BF88 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813C9B8 + movs r0, 0x2 + bl sub_813C684 + bl sub_813C624 + bl sub_813C7CC + bl sub_813C828 + bl sub_812BDEC + bl sub_813C75C + b _0813C9D0 +_0813C9B8: + movs r0, 0 + bl sub_813BDA4 + bl sub_813C624 + bl sub_813C7CC + bl sub_813C828 + movs r0, 0x1 + bl sub_813BDA4 +_0813C9D0: + bl sub_813BC5C +_0813C9D4: + movs r0, 0 +_0813C9D6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_813C944 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s new file mode 100644 index 000000000..b94da10b1 --- /dev/null +++ b/asm/help_system_812B1E0.s @@ -0,0 +1,1761 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_812B1E0 +sub_812B1E0: @ 812B1E0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0812B1EC @ =gUnknown_203B0EC + strh r0, [r1] + bx lr + .align 2, 0 +_0812B1EC: .4byte gUnknown_203B0EC + thumb_func_end sub_812B1E0 + + thumb_func_start sub_812B1F0 +sub_812B1F0: @ 812B1F0 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0812B21C @ =gUnknown_203B0EC + ldrh r2, [r0] + cmp r2, 0x1A + bgt _0812B216 + cmp r2, 0x17 + blt _0812B216 + cmp r1, 0x9 + beq _0812B218 + cmp r1, 0x5 + beq _0812B218 + cmp r1, 0x6 + beq _0812B218 + cmp r1, 0x7 + beq _0812B218 + cmp r1, 0x8 + beq _0812B218 +_0812B216: + strh r1, [r0] +_0812B218: + pop {r0} + bx r0 + .align 2, 0 +_0812B21C: .4byte gUnknown_203B0EC + thumb_func_end sub_812B1F0 + + thumb_func_start sub_812B220 +sub_812B220: @ 812B220 + ldr r0, _0812B22C @ =gUnknown_203B0EC + ldr r1, _0812B230 @ =gUnknown_20370C0 + ldrh r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_0812B22C: .4byte gUnknown_203B0EC +_0812B230: .4byte gUnknown_20370C0 + thumb_func_end sub_812B220 + + thumb_func_start sub_812B234 +sub_812B234: @ 812B234 + ldr r0, _0812B240 @ =gUnknown_3005EA0 + ldr r1, _0812B244 @ =gUnknown_203B0EC + ldrh r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_0812B240: .4byte gUnknown_3005EA0 +_0812B244: .4byte gUnknown_203B0EC + thumb_func_end sub_812B234 + + thumb_func_start sub_812B248 +sub_812B248: @ 812B248 + ldr r0, _0812B254 @ =gUnknown_203B0EC + ldr r1, _0812B258 @ =gUnknown_3005EA0 + ldrh r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_0812B254: .4byte gUnknown_203B0EC +_0812B258: .4byte gUnknown_3005EA0 + thumb_func_end sub_812B248 + + thumb_func_start sub_812B25C +sub_812B25C: @ 812B25C + push {lr} + ldr r0, _0812B268 @ =gUnknown_845C594 + bl sub_812B27C + pop {r1} + bx r1 + .align 2, 0 +_0812B268: .4byte gUnknown_845C594 + thumb_func_end sub_812B25C + + thumb_func_start sub_812B26C +sub_812B26C: @ 812B26C + push {lr} + ldr r0, _0812B278 @ =gUnknown_845C5BC + bl sub_812B27C + pop {r1} + bx r1 + .align 2, 0 +_0812B278: .4byte gUnknown_845C5BC + thumb_func_end sub_812B26C + + thumb_func_start sub_812B27C +sub_812B27C: @ 812B27C + push {r4,lr} + adds r2, r0, 0 + ldr r0, _0812B2AC @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0x4 + ldrsb r1, [r0, r1] + lsls r1, 8 + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r0, [r2] + ldr r1, _0812B2B0 @ =0x0000ffff + cmp r0, r1 + beq _0812B2BC + adds r4, r1, 0 + adds r1, r2, 0 +_0812B2A2: + ldrh r0, [r1] + cmp r0, r3 + bne _0812B2B4 + movs r0, 0x1 + b _0812B2BE + .align 2, 0 +_0812B2AC: .4byte gUnknown_3005008 +_0812B2B0: .4byte 0x0000ffff +_0812B2B4: + adds r1, 0x2 + ldrh r0, [r1] + cmp r0, r4 + bne _0812B2A2 +_0812B2BC: + movs r0, 0 +_0812B2BE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812B27C + + thumb_func_start sub_812B2C4 +sub_812B2C4: @ 812B2C4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r5, 0 + ldr r0, _0812B2E8 @ =gUnknown_845C5CE + mov r9, r0 + movs r0, 0x2 + add r0, r9 + mov r8, r0 +_0812B2D8: + movs r6, 0 + mov r4, r9 + lsls r1, r5, 1 + adds r0, r1, r5 + add r0, r8 + adds r7, r1, 0 + b _0812B33A + .align 2, 0 +_0812B2E8: .4byte gUnknown_845C5CE +_0812B2EC: + adds r3, r1, r5 + adds r0, r3, r4 + ldrb r1, [r0] + ldr r0, _0812B324 @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _0812B32C + adds r0, r4, 0x1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r0, r6 + movs r1, 0x5 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _0812B32C + cmp r5, 0xF + bne _0812B320 + ldr r0, _0812B328 @ =0x00000849 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812B32C +_0812B320: + movs r0, 0x1 + b _0812B34C + .align 2, 0 +_0812B324: .4byte gUnknown_3005008 +_0812B328: .4byte 0x00000849 +_0812B32C: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _0812B358 @ =gUnknown_845C5CE + adds r1, r7, 0 + adds r0, r1, r5 + add r0, r8 +_0812B33A: + ldrb r0, [r0] + cmp r6, r0 + bcc _0812B2EC + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _0812B2D8 + movs r0, 0 +_0812B34C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0812B358: .4byte gUnknown_845C5CE + thumb_func_end sub_812B2C4 + + thumb_func_start sub_812B35C +sub_812B35C: @ 812B35C + push {lr} + bl sub_812B4B8 + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _0812B376 + movs r0, 0x16 + bl sub_812B1F0 + b _0812B406 +_0812B376: + bl sub_812B2C4 + lsls r0, 24 + cmp r0, 0 + beq _0812B388 + movs r0, 0x15 + bl sub_812B1F0 + b _0812B406 +_0812B388: + ldr r0, _0812B3B0 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + bl sub_805621C + lsls r0, 24 + cmp r0, 0 + beq _0812B400 + ldr r0, _0812B3B4 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + cmp r1, 0x4 + beq _0812B3A8 + movs r0, 0x82 + lsls r0, 1 + cmp r1, r0 + bne _0812B3B8 +_0812B3A8: + movs r0, 0xE + bl sub_812B1F0 + b _0812B406 + .align 2, 0 +_0812B3B0: .4byte gUnknown_2036DFC +_0812B3B4: .4byte gUnknown_3005008 +_0812B3B8: + movs r0, 0xC1 + lsls r0, 2 + cmp r1, r0 + bne _0812B3C8 + movs r0, 0xF + bl sub_812B1F0 + b _0812B406 +_0812B3C8: + bl sub_810B73C + cmp r0, 0x1 + bne _0812B3D8 + movs r0, 0x10 + bl sub_812B1F0 + b _0812B406 +_0812B3D8: + bl sub_812B25C + cmp r0, 0x1 + bne _0812B3E8 + movs r0, 0x11 + bl sub_812B1F0 + b _0812B406 +_0812B3E8: + bl sub_812B26C + cmp r0, 0x1 + bne _0812B3F8 + movs r0, 0x12 + bl sub_812B1F0 + b _0812B406 +_0812B3F8: + movs r0, 0x13 + bl sub_812B1F0 + b _0812B406 +_0812B400: + movs r0, 0x14 + bl sub_812B1F0 +_0812B406: + pop {r0} + bx r0 + thumb_func_end sub_812B35C + + thumb_func_start sub_812B40C +sub_812B40C: @ 812B40C + push {lr} + ldr r0, _0812B434 @ =gUnknown_203B0EE + ldrb r0, [r0] + cmp r0, 0x1 + beq _0812B42E + ldr r0, _0812B438 @ =gUnknown_30053A0 + ldrh r0, [r0] + cmp r0, 0 + beq _0812B440 + cmp r0, 0x2 + beq _0812B440 + ldr r0, _0812B43C @ =0x0000083c + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0812B440 +_0812B42E: + movs r0, 0 + b _0812B44E + .align 2, 0 +_0812B434: .4byte gUnknown_203B0EE +_0812B438: .4byte gUnknown_30053A0 +_0812B43C: .4byte 0x0000083c +_0812B440: + ldr r0, _0812B454 @ =0x0000083c + bl sub_806E680 + ldr r1, _0812B458 @ =gUnknown_203B0EE + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1 +_0812B44E: + pop {r1} + bx r1 + .align 2, 0 +_0812B454: .4byte 0x0000083c +_0812B458: .4byte gUnknown_203B0EE + thumb_func_end sub_812B40C + + thumb_func_start sub_812B45C +sub_812B45C: @ 812B45C + push {lr} + ldr r0, _0812B46C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0812B470 + movs r0, 0x1 + b _0812B472 + .align 2, 0 +_0812B46C: .4byte gUnknown_3003F64 +_0812B470: + movs r0, 0 +_0812B472: + pop {r1} + bx r1 + thumb_func_end sub_812B45C + + thumb_func_start sub_812B478 +sub_812B478: @ 812B478 + ldr r1, _0812B480 @ =gUnknown_3005ECC + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_0812B480: .4byte gUnknown_3005ECC + thumb_func_end sub_812B478 + + thumb_func_start sub_812B484 +sub_812B484: @ 812B484 + push {lr} + ldr r0, _0812B4A4 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0812B49E + ldr r1, _0812B4A8 @ =gUnknown_3005ECC + movs r0, 0x1 + strb r0, [r1] + bl sub_812B4B8 +_0812B49E: + pop {r0} + bx r0 + .align 2, 0 +_0812B4A4: .4byte gUnknown_203ADFA +_0812B4A8: .4byte gUnknown_3005ECC + thumb_func_end sub_812B484 + + thumb_func_start sub_812B4AC +sub_812B4AC: @ 812B4AC + ldr r1, _0812B4B4 @ =gUnknown_203F175 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_0812B4B4: .4byte gUnknown_203F175 + thumb_func_end sub_812B4AC + + thumb_func_start sub_812B4B8 +sub_812B4B8: @ 812B4B8 + ldr r1, _0812B4C0 @ =gUnknown_203F175 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_0812B4C0: .4byte gUnknown_203F175 + thumb_func_end sub_812B4B8 + + thumb_func_start sub_812B4C4 +sub_812B4C4: @ 812B4C4 + str r1, [r0] + movs r2, 0x1 + movs r1, 0x1 + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strb r2, [r0, 0x8] + movs r1, 0x4 + strb r1, [r0, 0x9] + bx lr + thumb_func_end sub_812B4C4 + + thumb_func_start sub_812B4D8 +sub_812B4D8: @ 812B4D8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_812B4C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_812B520 + ldr r0, _0812B518 @ =gUnknown_841DFAC + bl sub_812BF74 + ldr r0, _0812B51C @ =gUnknown_3005E9C + ldrb r2, [r0, 0x2] + adds r0, r4, 0 + movs r1, 0 + bl sub_813C64C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_812BF9C + movs r0, 0x1 + bl sub_813BDA4 + movs r0, 0x1 + bl sub_813BD5C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812B518: .4byte gUnknown_841DFAC +_0812B51C: .4byte gUnknown_3005E9C + thumb_func_end sub_812B4D8 + + thumb_func_start sub_812B520 +sub_812B520: @ 812B520 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + adds r5, r1, 0 + movs r4, 0 + movs r3, 0 + ldr r0, _0812B598 @ =gUnknown_845C4B0 + mov r9, r0 + ldr r1, _0812B59C @ =gUnknown_203B0EC + mov r8, r1 + ldr r0, _0812B5A0 @ =gUnknown_845C4B6 + mov r12, r0 + ldr r7, _0812B5A4 @ =gUnknown_845B080 +_0812B53E: + mov r1, r9 + adds r0, r3, r1 + ldrb r2, [r0] + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 1 + adds r0, r2, r0 + add r0, r12 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0812B56C + lsls r1, r4, 3 + adds r1, r5 + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + str r0, [r1] + str r2, [r1, 0x4] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0812B56C: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x5 + bls _0812B53E + lsls r0, r4, 3 + adds r0, r5 + subs r0, 0x8 + movs r1, 0x2 + negs r1, r1 + str r1, [r0, 0x4] + movs r0, 0 + strh r4, [r6, 0x4] + strh r4, [r6, 0x6] + strb r0, [r6, 0x8] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812B598: .4byte gUnknown_845C4B0 +_0812B59C: .4byte gUnknown_203B0EC +_0812B5A0: .4byte gUnknown_845C4B6 +_0812B5A4: .4byte gUnknown_845B080 + thumb_func_end sub_812B520 + + thumb_func_start sub_812B5A8 +sub_812B5A8: @ 812B5A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + bl sub_813BDE8 + movs r0, 0 + bl sub_813BFC0 + movs r0, 0x1 + bl sub_813BE78 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_812B4C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_812B614 + ldr r0, _0812B608 @ =gUnknown_841DFC9 + bl sub_812BF74 + ldrb r1, [r4, 0xC] + ldrb r2, [r4, 0xD] + adds r0, r4, 0 + bl sub_813C64C + ldr r1, _0812B60C @ =gUnknown_845B080 + ldr r0, _0812B610 @ =gUnknown_3005E9C + ldrb r0, [r0, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_813C4CC + movs r0, 0x1 + bl sub_813BDA4 + movs r0, 0x1 + bl sub_813BD5C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812B608: .4byte gUnknown_841DFC9 +_0812B60C: .4byte gUnknown_845B080 +_0812B610: .4byte gUnknown_3005E9C + thumb_func_end sub_812B5A8 + + thumb_func_start sub_812B614 +sub_812B614: @ 812B614 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r5, r1, 0 + movs r6, 0 + ldr r3, _0812B664 @ =gUnknown_845B9E0 + ldr r0, _0812B668 @ =gUnknown_203B0EC + ldrh r1, [r0] + lsls r0, r1, 2 + ldr r2, _0812B66C @ =gUnknown_3005E9C + adds r0, r1 + ldrb r2, [r2, 0x1] + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldr r3, [r0] + movs r7, 0 + ldrb r0, [r3] + cmp r0, 0xFF + beq _0812B6D0 +_0812B640: + adds r4, r3, r7 + ldrb r0, [r4] + str r3, [sp] + bl sub_812B780 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [sp] + cmp r0, 0x1 + bne _0812B6C2 + ldr r0, _0812B66C @ =gUnknown_3005E9C + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0812B674 + lsls r1, r6, 3 + adds r1, r5 + ldr r2, _0812B670 @ =gUnknown_845B0B0 + b _0812B6AA + .align 2, 0 +_0812B664: .4byte gUnknown_845B9E0 +_0812B668: .4byte gUnknown_203B0EC +_0812B66C: .4byte gUnknown_3005E9C +_0812B670: .4byte gUnknown_845B0B0 +_0812B674: + cmp r0, 0x1 + bne _0812B684 + lsls r1, r6, 3 + adds r1, r5 + ldr r2, _0812B680 @ =gUnknown_845B218 + b _0812B6AA + .align 2, 0 +_0812B680: .4byte gUnknown_845B218 +_0812B684: + cmp r0, 0x2 + bne _0812B694 + lsls r1, r6, 3 + adds r1, r5 + ldr r2, _0812B690 @ =gUnknown_845B3A0 + b _0812B6AA + .align 2, 0 +_0812B690: .4byte gUnknown_845B3A0 +_0812B694: + cmp r0, 0x3 + bne _0812B6A4 + lsls r1, r6, 3 + adds r1, r5 + ldr r2, _0812B6A0 @ =gUnknown_845B500 + b _0812B6AA + .align 2, 0 +_0812B6A0: .4byte gUnknown_845B500 +_0812B6A4: + lsls r1, r6, 3 + adds r1, r5 + ldr r2, _0812B744 @ =gUnknown_845B540 +_0812B6AA: + ldrb r0, [r4] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + lsls r0, r6, 3 + adds r0, r5 + ldrb r1, [r4] + str r1, [r0, 0x4] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0812B6C2: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r3, r7 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0812B640 +_0812B6D0: + bl sub_812B754 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812B710 + movs r7, 0 + ldr r3, _0812B748 @ =gUnknown_845B9BE + ldrb r0, [r3] + cmp r0, 0xFF + beq _0812B710 + ldr r4, _0812B74C @ =gUnknown_845B3A0 +_0812B6E8: + lsls r1, r6, 3 + adds r1, r5 + adds r2, r3, r7 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r2] + str r0, [r1, 0x4] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r3, r7 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0812B6E8 +_0812B710: + lsls r0, r6, 3 + adds r0, r5 + ldr r1, _0812B750 @ =gUnknown_81B2E6F + str r1, [r0] + movs r1, 0x2 + negs r1, r1 + str r1, [r0, 0x4] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0 + mov r0, r8 + strh r6, [r0, 0x4] + movs r0, 0x7 + mov r2, r8 + strh r0, [r2, 0x6] + strb r1, [r2, 0x8] + movs r0, 0x15 + strb r0, [r2, 0x9] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812B744: .4byte gUnknown_845B540 +_0812B748: .4byte gUnknown_845B9BE +_0812B74C: .4byte gUnknown_845B3A0 +_0812B750: .4byte gUnknown_81B2E6F + thumb_func_end sub_812B614 + + thumb_func_start sub_812B754 +sub_812B754: @ 812B754 + push {lr} + movs r0, 0x96 + lsls r0, 3 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812B778 + ldr r0, _0812B774 @ =gUnknown_3005E9C + ldrb r0, [r0, 0x1] + cmp r0, 0x2 + bne _0812B778 + movs r0, 0x1 + b _0812B77A + .align 2, 0 +_0812B774: .4byte gUnknown_3005E9C +_0812B778: + movs r0, 0 +_0812B77A: + pop {r1} + bx r1 + thumb_func_end sub_812B754 + + thumb_func_start sub_812B780 +sub_812B780: @ 812B780 + push {r4,r5,lr} + lsls r0, 24 + lsrs r1, r0, 24 + adds r5, r1, 0 + movs r4, 0 + ldr r0, _0812B7A8 @ =gUnknown_3005E9C + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0812B794 + b _0812B8AC +_0812B794: + subs r0, r1, 0x1 + cmp r0, 0x2B + bls _0812B79C + b _0812BB04 +_0812B79C: + lsls r0, 2 + ldr r1, _0812B7AC @ =_0812B7B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812B7A8: .4byte gUnknown_3005E9C +_0812B7AC: .4byte _0812B7B0 + .align 2, 0 +_0812B7B0: + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812B860 + .4byte _0812BB08 + .4byte _0812B868 + .4byte _0812B870 + .4byte _0812BB08 + .4byte _0812B880 + .4byte _0812B868 + .4byte _0812B878 + .4byte _0812B890 + .4byte _0812B880 + .4byte _0812B880 + .4byte _0812B880 + .4byte _0812B868 + .4byte _0812B880 + .4byte _0812B880 + .4byte _0812B868 + .4byte _0812B880 + .4byte _0812B888 + .4byte _0812B868 + .4byte _0812B888 + .4byte _0812B878 + .4byte _0812B890 + .4byte _0812B880 + .4byte _0812B890 + .4byte _0812B896 + .4byte _0812B880 + .4byte _0812B890 + .4byte _0812B880 + .4byte _0812B890 + .4byte _0812B890 + .4byte _0812BB08 + .4byte _0812B868 + .4byte _0812B868 + .4byte _0812B880 + .4byte _0812BB08 + .4byte _0812B89C + .4byte _0812B896 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812B8A4 +_0812B860: + ldr r0, _0812B864 @ =0x000002cf + b _0812BAF2 + .align 2, 0 +_0812B864: .4byte 0x000002cf +_0812B868: + ldr r0, _0812B86C @ =0x00000891 + b _0812BAF2 + .align 2, 0 +_0812B86C: .4byte 0x00000891 +_0812B870: + ldr r0, _0812B874 @ =0x00000895 + b _0812BAF2 + .align 2, 0 +_0812B874: .4byte 0x00000895 +_0812B878: + ldr r0, _0812B87C @ =0x000008a4 + b _0812BAF2 + .align 2, 0 +_0812B87C: .4byte 0x000008a4 +_0812B880: + ldr r0, _0812B884 @ =0x00000828 + b _0812BAF2 + .align 2, 0 +_0812B884: .4byte 0x00000828 +_0812B888: + ldr r0, _0812B88C @ =0x00000829 + b _0812BAF2 + .align 2, 0 +_0812B88C: .4byte 0x00000829 +_0812B890: + movs r0, 0x82 + lsls r0, 4 + b _0812BAF2 +_0812B896: + bl sub_812BB10 + b _0812BAF6 +_0812B89C: + ldr r0, _0812B8A0 @ =0x0000029b + b _0812BAF2 + .align 2, 0 +_0812B8A0: .4byte 0x0000029b +_0812B8A4: + ldr r0, _0812B8A8 @ =0x00000892 + b _0812BAF2 + .align 2, 0 +_0812B8A8: .4byte 0x00000892 +_0812B8AC: + cmp r0, 0x1 + beq _0812B8B2 + b _0812B9D8 +_0812B8B2: + subs r0, r1, 0x1 + cmp r0, 0x2F + bls _0812B8BA + b _0812BB04 +_0812B8BA: + lsls r0, 2 + ldr r1, _0812B8C4 @ =_0812B8C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812B8C4: .4byte _0812B8C8 + .align 2, 0 +_0812B8C8: + .4byte _0812B988 + .4byte _0812B9A0 + .4byte _0812B9A0 + .4byte _0812B9A8 + .4byte _0812B9A0 + .4byte _0812BB08 + .4byte _0812B9A0 + .4byte _0812B9A0 + .4byte _0812B9A0 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812B9A0 + .4byte _0812B990 + .4byte _0812B9BA + .4byte _0812B9C0 + .4byte _0812B9C0 + .4byte _0812B9C6 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812B988 + .4byte _0812BB08 + .4byte _0812B9A0 + .4byte _0812B9A0 + .4byte _0812B9A8 + .4byte _0812B9A0 + .4byte _0812BB08 + .4byte _0812B988 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812B9A0 + .4byte _0812B9A0 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812B9D0 +_0812B988: + ldr r0, _0812B98C @ =0x00000829 + b _0812BAF2 + .align 2, 0 +_0812B98C: .4byte 0x00000829 +_0812B990: + ldr r0, _0812B99C @ =0x00000169 + movs r1, 0x1 + bl sub_8099F40 + b _0812BAF6 + .align 2, 0 +_0812B99C: .4byte 0x00000169 +_0812B9A0: + ldr r0, _0812B9A4 @ =0x00000828 + b _0812BAF2 + .align 2, 0 +_0812B9A4: .4byte 0x00000828 +_0812B9A8: + movs r0, 0x1 + bl sub_8088EDC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _0812B9B8 + b _0812BB08 +_0812B9B8: + b _0812BB04 +_0812B9BA: + movs r0, 0x82 + lsls r0, 4 + b _0812BAF2 +_0812B9C0: + bl sub_812BB10 + b _0812BAF6 +_0812B9C6: + ldr r0, _0812B9CC @ =0x00000271 + b _0812BAF2 + .align 2, 0 +_0812B9CC: .4byte 0x00000271 +_0812B9D0: + ldr r0, _0812B9D4 @ =0x0000082c + b _0812BAF2 + .align 2, 0 +_0812B9D4: .4byte 0x0000082c +_0812B9D8: + cmp r0, 0x2 + beq _0812B9DE + b _0812BADC +_0812B9DE: + bl sub_812B754 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812BA0E + ldr r0, _0812BA20 @ =gUnknown_845B9BE + ldrb r1, [r0] + adds r2, r0, 0 + cmp r1, 0xFF + beq _0812BA0E + adds r1, r2, 0 +_0812B9F6: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, r5 + bne _0812BA00 + b _0812BB04 +_0812BA00: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0812B9F6 +_0812BA0E: + subs r0, r5, 0x1 + cmp r0, 0x26 + bls _0812BA16 + b _0812BB08 +_0812BA16: + lsls r0, 2 + ldr r1, _0812BA24 @ =_0812BA28 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812BA20: .4byte gUnknown_845B9BE +_0812BA24: .4byte _0812BA28 + .align 2, 0 +_0812BA28: + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAD2 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BB08 + .4byte _0812BAD2 + .4byte _0812BAC4 + .4byte _0812BB08 + .4byte _0812BAD2 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BAC4 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BB08 + .4byte _0812BACC + .4byte _0812BACC + .4byte _0812BB08 + .4byte _0812BAD2 +_0812BAC4: + ldr r0, _0812BAC8 @ =0x00000828 + b _0812BAF2 + .align 2, 0 +_0812BAC8: .4byte 0x00000828 +_0812BACC: + bl sub_812BB10 + b _0812BAF6 +_0812BAD2: + ldr r0, _0812BAD8 @ =0x000008a4 + b _0812BAF2 + .align 2, 0 +_0812BAD8: .4byte 0x000008a4 +_0812BADC: + cmp r0, 0x3 + bne _0812BB00 + cmp r5, 0x5 + beq _0812BAEA + cmp r5, 0x6 + beq _0812BAF0 + b _0812BB08 +_0812BAEA: + movs r0, 0x82 + lsls r0, 4 + b _0812BAF2 +_0812BAF0: + ldr r0, _0812BAFC @ =0x00000821 +_0812BAF2: + bl sub_806E6D0 +_0812BAF6: + lsls r0, 24 + lsrs r0, 24 + b _0812BB0A + .align 2, 0 +_0812BAFC: .4byte 0x00000821 +_0812BB00: + cmp r0, 0x4 + beq _0812BB08 +_0812BB04: + movs r0, 0 + b _0812BB0A +_0812BB08: + movs r0, 0x1 +_0812BB0A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_812B780 + + thumb_func_start sub_812BB10 +sub_812BB10: @ 812BB10 + push {lr} + ldr r0, _0812BB7C @ =0x00000237 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + movs r0, 0x8E + lsls r0, 2 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + ldr r0, _0812BB80 @ =0x00000239 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + ldr r0, _0812BB84 @ =0x0000023a + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + ldr r0, _0812BB88 @ =0x0000023b + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + ldr r0, _0812BB8C @ =0x000002ef + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + ldr r0, _0812BB90 @ =0x000001f1 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812BB94 + movs r0, 0 + b _0812BB96 + .align 2, 0 +_0812BB7C: .4byte 0x00000237 +_0812BB80: .4byte 0x00000239 +_0812BB84: .4byte 0x0000023a +_0812BB88: .4byte 0x0000023b +_0812BB8C: .4byte 0x000002ef +_0812BB90: .4byte 0x000001f1 +_0812BB94: + movs r0, 0x1 +_0812BB96: + pop {r1} + bx r1 + thumb_func_end sub_812BB10 + + thumb_func_start sub_812BB9C +sub_812BB9C: @ 812BB9C + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldrb r0, [r2, 0xE] + cmp r0, 0xA + bhi _0812BC4C + lsls r0, 2 + ldr r1, _0812BBB4 @ =_0812BBB8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812BBB4: .4byte _0812BBB8 + .align 2, 0 +_0812BBB8: + .4byte _0812BC02 + .4byte _0812BC0C + .4byte _0812BC16 + .4byte _0812BC20 + .4byte _0812BC2A + .4byte _0812BC34 + .4byte _0812BC3E + .4byte _0812BC4C + .4byte _0812BBE4 + .4byte _0812BBEE + .4byte _0812BBF8 +_0812BBE4: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BC54 + b _0812BC46 +_0812BBEE: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BC80 + b _0812BC46 +_0812BBF8: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BCA8 + b _0812BC46 +_0812BC02: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BCD0 + b _0812BC46 +_0812BC0C: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BD2C + b _0812BC46 +_0812BC16: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BD64 + b _0812BC46 +_0812BC20: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BD98 + b _0812BC46 +_0812BC2A: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BE10 + b _0812BC46 +_0812BC34: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BEEC + b _0812BC46 +_0812BC3E: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_812BF18 +_0812BC46: + lsls r0, 24 + lsrs r0, 24 + b _0812BC4E +_0812BC4C: + movs r0, 0 +_0812BC4E: + pop {r1} + bx r1 + thumb_func_end sub_812BB9C + + thumb_func_start sub_812BC54 +sub_812BC54: @ 812BC54 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0812BC7C @ =gUnknown_841DFA5 + bl sub_812BF74 + bl sub_812BF5C + movs r0, 0x1 + bl sub_813BDA4 + movs r0, 0x1 + bl sub_813BD5C + movs r0, 0x9 + strb r0, [r4, 0xE] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812BC7C: .4byte gUnknown_841DFA5 + thumb_func_end sub_812BC54 + + thumb_func_start sub_812BC80 +sub_812BC80: @ 812BC80 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0812BCA4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812BC9A + movs r0, 0x5 + bl sub_80722CC + movs r0, 0xA + strb r0, [r4, 0xE] +_0812BC9A: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812BCA4: .4byte gUnknown_30030F0 + thumb_func_end sub_812BC80 + + thumb_func_start sub_812BCA8 +sub_812BCA8: @ 812BCA8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + ldr r0, _0812BCCC @ =gUnknown_3005E9C + movs r5, 0 + strb r5, [r0, 0x2] + adds r0, r4, 0 + bl sub_812BF94 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_812B4D8 + strb r5, [r4, 0xE] + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0812BCCC: .4byte gUnknown_3005E9C + thumb_func_end sub_812BCA8 + + thumb_func_start sub_812BCD0 +sub_812BCD0: @ 812BCD0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_813C690 + adds r1, r0, 0 + adds r0, r1, 0x6 + cmp r0, 0x5 + bhi _0812BD16 + lsls r0, 2 + ldr r1, _0812BCEC @ =_0812BCF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812BCEC: .4byte _0812BCF0 + .align 2, 0 +_0812BCF0: + .4byte _0812BD08 + .4byte _0812BD0C + .4byte _0812BD0C + .4byte _0812BD1E + .4byte _0812BD08 + .4byte _0812BD1E +_0812BD08: + movs r0, 0 + b _0812BD20 +_0812BD0C: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_812BF9C + b _0812BD1E +_0812BD16: + ldr r0, _0812BD28 @ =gUnknown_3005E9C + strb r1, [r0, 0x1] + movs r0, 0x1 + strb r0, [r4, 0xE] +_0812BD1E: + movs r0, 0x1 +_0812BD20: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0812BD28: .4byte gUnknown_3005E9C + thumb_func_end sub_812BCD0 + + thumb_func_start sub_812BD2C +sub_812BD2C: @ 812BD2C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0812BD60 @ =gUnknown_3005E9C + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r4, 0xD] + strb r0, [r1, 0x2] + adds r0, r4, 0 + bl sub_812BF94 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_812B5A8 + bl sub_813C75C + movs r0, 0x2 + bl sub_813C684 + movs r0, 0x3 + strb r0, [r4, 0xE] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0812BD60: .4byte gUnknown_3005E9C + thumb_func_end sub_812BD2C + + thumb_func_start sub_812BD64 +sub_812BD64: @ 812BD64 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0 + movs r1, 0 + bl sub_813C004 + movs r0, 0x1 + movs r1, 0 + bl sub_813C004 + ldr r0, _0812BD94 @ =gUnknown_3005E9C + movs r4, 0 + strb r4, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_812B4D8 + strb r4, [r5, 0xE] + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0812BD94: .4byte gUnknown_3005E9C + thumb_func_end sub_812BD64 + + thumb_func_start sub_812BD98 +sub_812BD98: @ 812BD98 + push {r4,lr} + adds r4, r0, 0 + bl sub_813C690 + adds r1, r0, 0 + adds r0, r1, 0x6 + cmp r0, 0x5 + bhi _0812BDD8 + lsls r0, 2 + ldr r1, _0812BDB4 @ =_0812BDB8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812BDB4: .4byte _0812BDB8 + .align 2, 0 +_0812BDB8: + .4byte _0812BDD0 + .4byte _0812BDE0 + .4byte _0812BDE0 + .4byte _0812BDE0 + .4byte _0812BDD4 + .4byte _0812BDE0 +_0812BDD0: + movs r0, 0 + b _0812BDE2 +_0812BDD4: + movs r0, 0x2 + b _0812BDDE +_0812BDD8: + ldr r0, _0812BDE8 @ =gUnknown_3005E9C + strb r1, [r0, 0x3] + movs r0, 0x4 +_0812BDDE: + strb r0, [r4, 0xE] +_0812BDE0: + movs r0, 0x1 +_0812BDE2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812BDE8: .4byte gUnknown_3005E9C + thumb_func_end sub_812BD98 + + thumb_func_start sub_812BDEC +sub_812BDEC: @ 812BDEC + push {lr} + ldr r1, _0812BE08 @ =gUnknown_845B080 + ldr r0, _0812BE0C @ =gUnknown_3005E9C + ldrb r0, [r0, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_813C4CC + pop {r0} + bx r0 + .align 2, 0 +_0812BE08: .4byte gUnknown_845B080 +_0812BE0C: .4byte gUnknown_3005E9C + thumb_func_end sub_812BDEC + + thumb_func_start sub_812BE10 +sub_812BE10: @ 812BE10 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _0812BE4C @ =gUnknown_3005E9C + movs r0, 0x2 + strb r0, [r4] + movs r0, 0 + bl sub_813BDA4 + bl sub_813C624 + ldr r0, _0812BE50 @ =gUnknown_841DFBE + bl sub_812BF74 + movs r0, 0x1 + bl sub_813BDE8 + movs r0, 0x1 + bl sub_813BEE4 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _0812BE5C + ldr r0, _0812BE54 @ =gUnknown_845B0B0 + ldrb r1, [r4, 0x3] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldr r2, _0812BE58 @ =gUnknown_845B164 + b _0812BEA4 + .align 2, 0 +_0812BE4C: .4byte gUnknown_3005E9C +_0812BE50: .4byte gUnknown_841DFBE +_0812BE54: .4byte gUnknown_845B0B0 +_0812BE58: .4byte gUnknown_845B164 +_0812BE5C: + cmp r0, 0x1 + bne _0812BE78 + ldr r0, _0812BE70 @ =gUnknown_845B218 + ldrb r1, [r4, 0x3] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldr r2, _0812BE74 @ =gUnknown_845B2DC + b _0812BEA4 + .align 2, 0 +_0812BE70: .4byte gUnknown_845B218 +_0812BE74: .4byte gUnknown_845B2DC +_0812BE78: + cmp r0, 0x2 + bne _0812BE94 + ldr r0, _0812BE8C @ =gUnknown_845B3A0 + ldrb r1, [r4, 0x3] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldr r2, _0812BE90 @ =gUnknown_845B450 + b _0812BEA4 + .align 2, 0 +_0812BE8C: .4byte gUnknown_845B3A0 +_0812BE90: .4byte gUnknown_845B450 +_0812BE94: + cmp r0, 0x3 + bne _0812BEB8 + ldr r0, _0812BEB0 @ =gUnknown_845B500 + ldrb r1, [r4, 0x3] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldr r2, _0812BEB4 @ =gUnknown_845B520 +_0812BEA4: + adds r1, r2 + ldr r1, [r1] + bl sub_813C50C + b _0812BECC + .align 2, 0 +_0812BEB0: .4byte gUnknown_845B500 +_0812BEB4: .4byte gUnknown_845B520 +_0812BEB8: + ldr r0, _0812BEE4 @ =gUnknown_845B540 + ldrb r1, [r4, 0x3] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldr r2, _0812BEE8 @ =gUnknown_845B5D0 + adds r1, r2 + ldr r1, [r1] + bl sub_813C50C +_0812BECC: + movs r0, 0x1 + bl sub_813BDA4 + movs r0, 0x1 + bl sub_813BD5C + movs r0, 0x6 + strb r0, [r5, 0xE] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0812BEE4: .4byte gUnknown_845B540 +_0812BEE8: .4byte gUnknown_845B5D0 + thumb_func_end sub_812BE10 + + thumb_func_start sub_812BEEC +sub_812BEEC: @ 812BEEC + push {r4,lr} + adds r4, r0, 0 + ldr r2, _0812BF14 @ =gUnknown_3005E9C + movs r0, 0x1 + strb r0, [r2] + adds r0, r4, 0 + bl sub_812B5A8 + bl sub_813C75C + movs r0, 0x2 + bl sub_813C684 + movs r0, 0x3 + strb r0, [r4, 0xE] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812BF14: .4byte gUnknown_3005E9C + thumb_func_end sub_812BEEC + + thumb_func_start sub_812BF18 +sub_812BF18: @ 812BF18 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0812BF40 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0812BF30 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812BF44 +_0812BF30: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x5 + strb r0, [r4, 0xE] + movs r0, 0x1 + b _0812BF54 + .align 2, 0 +_0812BF40: .4byte gUnknown_30030F0 +_0812BF44: + movs r0, 0xC0 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + bne _0812BF52 + movs r0, 0x1 + b _0812BF54 +_0812BF52: + movs r0, 0 +_0812BF54: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812BF18 + + thumb_func_start sub_812BF5C +sub_812BF5C: @ 812BF5C + push {lr} + bl sub_813C624 + ldr r0, _0812BF70 @ =gUnknown_81B2FC9 + movs r1, 0 + movs r2, 0 + bl sub_813C4CC + pop {r0} + bx r0 + .align 2, 0 +_0812BF70: .4byte gUnknown_81B2FC9 + thumb_func_end sub_812BF5C + + thumb_func_start sub_812BF74 +sub_812BF74: @ 812BF74 + push {r4,lr} + adds r4, r0, 0 + bl sub_813C5FC + adds r0, r4, 0 + bl sub_813C488 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812BF74 + + thumb_func_start sub_812BF88 +sub_812BF88: @ 812BF88 + ldr r0, _0812BF90 @ =gUnknown_3005E9C + ldrb r0, [r0] + bx lr + .align 2, 0 +_0812BF90: .4byte gUnknown_3005E9C + thumb_func_end sub_812BF88 + + thumb_func_start sub_812BF94 +sub_812BF94: @ 812BF94 + movs r1, 0 + strb r1, [r0, 0xC] + strb r1, [r0, 0xD] + bx lr + thumb_func_end sub_812BF94 + + thumb_func_start sub_812BF9C +sub_812BF9C: @ 812BF9C + push {lr} + ldrb r2, [r0, 0xC] + ldrb r0, [r0, 0xD] + adds r2, r0 + lsls r2, 3 + adds r2, r1 + ldr r1, [r2, 0x4] + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + bne _0812BFC0 + ldr r0, _0812BFBC @ =gUnknown_845B098 + ldr r0, [r0, 0x14] + bl sub_813C584 + b _0812BFCC + .align 2, 0 +_0812BFBC: .4byte gUnknown_845B098 +_0812BFC0: + ldr r0, _0812BFD8 @ =gUnknown_845B098 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_813C584 +_0812BFCC: + movs r0, 0x1 + bl sub_813BE30 + pop {r0} + bx r0 + .align 2, 0 +_0812BFD8: .4byte gUnknown_845B098 + thumb_func_end sub_812BF9C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/hof_pc.s b/asm/hof_pc.s new file mode 100644 index 000000000..1bfe69b51 --- /dev/null +++ b/asm/hof_pc.s @@ -0,0 +1,118 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80CA53C +sub_80CA53C: @ 80CA53C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080CA56C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080CA564 + bl sub_8003ECC + movs r0, 0 + bl sub_8001618 + adds r0, r4, 0 + bl sub_8077508 + ldr r0, _080CA570 @ =sub_80F2978 + bl sub_8000544 +_080CA564: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA56C: .4byte gUnknown_2037AB8 +_080CA570: .4byte sub_80F2978 + thumb_func_end sub_80CA53C + + thumb_func_start sub_80CA574 +sub_80CA574: @ 80CA574 + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_8069940 + ldr r0, _080CA59C @ =sub_80CA53C + movs r1, 0 + bl sub_807741C + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080CA59C: .4byte sub_80CA53C + thumb_func_end sub_80CA574 + + thumb_func_start sub_80CA5A0 +sub_80CA5A0: @ 80CA5A0 + push {lr} + ldr r0, _080CA5B4 @ =sub_80567DC + bl sub_8000544 + ldr r1, _080CA5B8 @ =gUnknown_3005020 + ldr r0, _080CA5BC @ =sub_80CA5C0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080CA5B4: .4byte sub_80567DC +_080CA5B8: .4byte gUnknown_3005020 +_080CA5BC: .4byte sub_80CA5C0 + thumb_func_end sub_80CA5A0 + + thumb_func_start sub_80CA5C0 +sub_80CA5C0: @ 80CA5C0 + push {lr} + sub sp, 0x4 + bl sub_8069940 + bl sub_8055DC4 + bl sub_809D040 + bl sub_809D254 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080CA5F4 @ =sub_80CA5F8 + movs r1, 0xA + bl sub_807741C + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080CA5F4: .4byte sub_80CA5F8 + thumb_func_end sub_80CA5C0 + + thumb_func_start sub_80CA5F8 +sub_80CA5F8: @ 80CA5F8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080CA614 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080CA610 + adds r0, r2, 0 + bl sub_8077508 +_080CA610: + pop {r0} + bx r0 + .align 2, 0 +_080CA614: .4byte gUnknown_2037AB8 + thumb_func_end sub_80CA5F8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/intro.s b/asm/intro.s new file mode 100644 index 000000000..e1b2fd4b7 --- /dev/null +++ b/asm/intro.s @@ -0,0 +1,4841 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80EC5A4 +sub_80EC5A4: @ 80EC5A4 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80EC5A4 + + thumb_func_start sub_80EC5B8 +sub_80EC5B8: @ 80EC5B8 + push {lr} + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080EC5CA + ldr r0, _080EC5D0 @ =sub_80EC870 + bl sub_8000544 +_080EC5CA: + pop {r0} + bx r0 + .align 2, 0 +_080EC5D0: .4byte sub_80EC870 + thumb_func_end sub_80EC5B8 + + thumb_func_start sub_80EC5D4 +sub_80EC5D4: @ 80EC5D4 + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _080EC610 @ =gUnknown_8402280 + movs r6, 0xC0 + lsls r6, 19 + adds r3, r6 + adds r1, r3, 0 + bl LZ77UnCompVram + ldr r0, _080EC614 @ =gUnknown_84024E4 + adds r4, r6 + adds r1, r4, 0 + bl LZ77UnCompVram + ldr r0, _080EC618 @ =gUnknown_8402260 + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EC610: .4byte gUnknown_8402280 +_080EC614: .4byte gUnknown_84024E4 +_080EC618: .4byte gUnknown_8402260 + thumb_func_end sub_80EC5D4 + + thumb_func_start sub_80EC61C +sub_80EC61C: @ 80EC61C + push {lr} + ldr r0, _080EC628 @ =gUnknown_203AAD4 + bl GameCubeMultiBoot_HandleSerialInterrupt + pop {r0} + bx r0 + .align 2, 0 +_080EC628: .4byte gUnknown_203AAD4 + thumb_func_end sub_80EC61C + + thumb_func_start sub_80EC62C +sub_80EC62C: @ 80EC62C + push {r4-r6,lr} + sub sp, 0xC + ldr r0, _080EC64C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r5, r0, r1 + ldrb r4, [r5] + cmp r4, 0x8C + bne _080EC640 + b _080EC778 +_080EC640: + cmp r4, 0x8C + bgt _080EC650 + cmp r4, 0 + beq _080EC65E + b _080EC732 + .align 2, 0 +_080EC64C: .4byte gUnknown_30030F0 +_080EC650: + cmp r4, 0x8D + bne _080EC656 + b _080EC7A4 +_080EC656: + cmp r4, 0x8E + bne _080EC65C + b _080EC808 +_080EC65C: + b _080EC732 +_080EC65E: + movs r0, 0 + bl sub_80006F4 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _080EC74C @ =0x00007fff + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + add r0, sp, 0x4 + strh r4, [r0] + ldr r1, _080EC750 @ =0x040000d4 + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080EC754 @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + str r4, [sp, 0x8] + add r0, sp, 0x8 + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080EC758 @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + add r0, sp, 0x4 + strh r4, [r0] + str r0, [r1] + ldr r0, _080EC75C @ =0x05000002 + str r0, [r1, 0x4] + ldr r0, _080EC760 @ =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + bl sub_8070528 + movs r1, 0xE0 + lsls r1, 6 + movs r0, 0 + movs r2, 0 + bl sub_80EC5D4 + bl sub_8087E64 + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + movs r0, 0x1 + negs r0, r0 + ldr r1, _080EC764 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r1, 0xE0 + lsls r1, 3 + movs r0, 0x8 + bl sub_8000A38 + movs r0, 0x1 + bl sub_8000B68 + ldr r0, _080EC768 @ =sub_80EC5A4 + bl sub_80006F4 + movs r1, 0xA0 + lsls r1, 1 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080EC76C @ =sub_80EC61C + bl sub_8000718 + ldr r0, _080EC770 @ =gUnknown_203AAD4 + bl GameCubeMultiBoot_Init +_080EC732: + bl sub_80704D0 + ldr r0, _080EC774 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r0, _080EC770 @ =gUnknown_203AAD4 + bl GameCubeMultiBoot_Main + b _080EC812 + .align 2, 0 +_080EC74C: .4byte 0x00007fff +_080EC750: .4byte 0x040000d4 +_080EC754: .4byte 0x8100c000 +_080EC758: .4byte 0x85000100 +_080EC75C: .4byte 0x05000002 +_080EC760: .4byte 0x810001ff +_080EC764: .4byte 0x0000ffff +_080EC768: .4byte sub_80EC5A4 +_080EC76C: .4byte sub_80EC61C +_080EC770: .4byte gUnknown_203AAD4 +_080EC774: .4byte gUnknown_30030F0 +_080EC778: + ldr r4, _080EC7A0 @ =gUnknown_203AAD4 + adds r0, r4, 0 + bl GameCubeMultiBoot_Main + ldrb r0, [r4, 0x2] + cmp r0, 0x1 + beq _080EC812 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _080EC812 + .align 2, 0 +_080EC7A0: .4byte gUnknown_203AAD4 +_080EC7A4: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080EC812 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r5, _080EC7E4 @ =gUnknown_203AAD4 + ldrb r0, [r5, 0x2] + cmp r0, 0 + beq _080EC7F4 + ldrb r0, [r5, 0x2] + cmp r0, 0x2 + bne _080EC7FE + ldr r6, _080EC7E8 @ =0x020000ac + ldr r4, [r6] + ldr r0, _080EC7EC @ =0x65366347 + cmp r4, r0 + bne _080EC7DC + ldr r0, _080EC7F0 @ =gMultiBootProgram_PokemonColosseum_Start + movs r1, 0x80 + lsls r1, 18 + movs r2, 0xA0 + lsls r2, 9 + bl CpuSet + str r4, [r6] +_080EC7DC: + adds r0, r5, 0 + bl GameCubeMultiBoot_ExecuteProgram + b _080EC7FE + .align 2, 0 +_080EC7E4: .4byte gUnknown_203AAD4 +_080EC7E8: .4byte 0x020000ac +_080EC7EC: .4byte 0x65366347 +_080EC7F0: .4byte gMultiBootProgram_PokemonColosseum_Start +_080EC7F4: + bl GameCubeMultiBoot_Quit + ldr r0, _080EC804 @ =sub_800B798 + bl sub_8000718 +_080EC7FE: + movs r0, 0 + b _080EC814 + .align 2, 0 +_080EC804: .4byte sub_800B798 +_080EC808: + bl sub_800B388 + ldr r0, _080EC81C @ =sub_80EC5B8 + bl sub_8000544 +_080EC812: + movs r0, 0x1 +_080EC814: + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080EC81C: .4byte sub_80EC5B8 + thumb_func_end sub_80EC62C + + thumb_func_start sub_80EC820 +sub_80EC820: @ 80EC820 + push {lr} + bl sub_80EC62C + lsls r0, 24 + cmp r0, 0 + bne _080EC858 + bl sub_8054A28 + bl sub_80D9750 + movs r0, 0 + bl sub_80DA4FC + ldr r0, _080EC85C @ =gUnknown_30053A0 + ldrh r0, [r0] + cmp r0, 0 + beq _080EC846 + cmp r0, 0x2 + bne _080EC84A +_080EC846: + bl sub_8054A18 +_080EC84A: + ldr r0, _080EC860 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x15] + lsls r0, 31 + lsrs r0, 31 + bl SetPokemonCryStereo +_080EC858: + pop {r0} + bx r0 + .align 2, 0 +_080EC85C: .4byte gUnknown_30053A0 +_080EC860: .4byte gUnknown_300500C + thumb_func_end sub_80EC820 + + thumb_func_start sub_80EC864 +sub_80EC864: @ 80EC864 + push {lr} + bl sub_80EC62C + pop {r0} + bx r0 + thumb_func_end sub_80EC864 + + thumb_func_start sub_80EC870 +sub_80EC870: @ 80EC870 + push {r4,lr} + sub sp, 0xC + ldr r0, _080EC88C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r4, [r0] + cmp r4, 0x1 + beq _080EC944 + cmp r4, 0x1 + bgt _080EC890 + cmp r4, 0 + beq _080EC8A0 + b _080EC894 + .align 2, 0 +_080EC88C: .4byte gUnknown_30030F0 +_080EC890: + cmp r4, 0x2 + beq _080EC988 +_080EC894: + ldr r0, _080EC928 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_080EC8A0: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080EC92C @ =gHeap + movs r1, 0xE0 + lsls r1, 9 + bl sub_8002B80 + bl sub_80773BC + bl sub_8006B10 + bl sub_8070528 + bl sub_80F6808 + bl sub_80ECA00 + add r1, sp, 0x4 + movs r0, 0 + strh r0, [r1] + ldr r1, _080EC930 @ =0x040000d4 + add r0, sp, 0x4 + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080EC934 @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0 + str r2, [sp, 0x8] + add r0, sp, 0x8 + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080EC938 @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + add r0, sp, 0x4 + strh r2, [r0] + str r0, [r1] + movs r0, 0xA0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080EC93C @ =0x81000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0x80 + lsls r2, 3 + movs r0, 0 + movs r1, 0 + bl sub_8070424 + movs r0, 0 + bl sub_8001618 + ldr r1, _080EC940 @ =gUnknown_840BB80 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + b _080EC9B8 + .align 2, 0 +_080EC928: .4byte gUnknown_30030F0 +_080EC92C: .4byte gHeap +_080EC930: .4byte 0x040000d4 +_080EC934: .4byte 0x8100c000 +_080EC938: .4byte 0x85000100 +_080EC93C: .4byte 0x81000200 +_080EC940: .4byte gUnknown_840BB80 +_080EC944: + ldr r0, _080EC978 @ =gUnknown_8402630 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080EC97C @ =gUnknown_8402650 + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080EC980 @ =gUnknown_8402668 + str r4, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _080EC984 @ =gUnknown_840270C + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + b _080EC9B8 + .align 2, 0 +_080EC978: .4byte gUnknown_8402630 +_080EC97C: .4byte gUnknown_8402650 +_080EC980: .4byte gUnknown_8402668 +_080EC984: .4byte gUnknown_840270C +_080EC988: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _080EC9C6 + bl sub_80ECA70 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _080EC9B0 @ =sub_80EC9D4 + bl sub_8000544 + ldr r0, _080EC9B4 @ =sub_80EC9EC + bl sub_80006F4 + b _080EC9C6 + .align 2, 0 +_080EC9B0: .4byte sub_80EC9D4 +_080EC9B4: .4byte sub_80EC9EC +_080EC9B8: + ldr r1, _080EC9D0 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080EC9C6: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC9D0: .4byte gUnknown_30030F0 + thumb_func_end sub_80EC870 + + thumb_func_start sub_80EC9D4 +sub_80EC9D4: @ 80EC9D4 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80EC9D4 + + thumb_func_start sub_80EC9EC +sub_80EC9EC: @ 80EC9EC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80EC9EC + + thumb_func_start sub_80ECA00 +sub_80ECA00: @ 80ECA00 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000AF4 + pop {r0} + bx r0 + thumb_func_end sub_80ECA00 + + thumb_func_start sub_80ECA70 +sub_80ECA70: @ 80ECA70 + push {r4,lr} + ldr r0, _080ECA9C @ =0x000028bc + bl sub_8002B9C + adds r4, r0, 0 + ldr r1, _080ECAA0 @ =sub_80ECAF0 + bl sub_80ECAA8 + ldr r0, _080ECAA4 @ =sub_80ECAB0 + movs r1, 0x3 + bl sub_807741C + strb r0, [r4, 0x5] + ldrb r0, [r4, 0x5] + movs r1, 0 + adds r2, r4, 0 + bl sub_80776E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ECA9C: .4byte 0x000028bc +_080ECAA0: .4byte sub_80ECAF0 +_080ECAA4: .4byte sub_80ECAB0 + thumb_func_end sub_80ECA70 + + thumb_func_start sub_80ECAA8 +sub_80ECAA8: @ 80ECAA8 + str r1, [r0] + movs r1, 0 + strb r1, [r0, 0x4] + bx lr + thumb_func_end sub_80ECAA8 + + thumb_func_start sub_80ECAB0 +sub_80ECAB0: @ 80ECAB0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8077720 + adds r4, r0, 0 + ldr r0, _080ECAE8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xD + ands r0, r1 + cmp r0, 0 + beq _080ECAD8 + ldr r0, [r4] + ldr r1, _080ECAEC @ =sub_80EDBE8 + cmp r0, r1 + beq _080ECAD8 + adds r0, r4, 0 + bl sub_80ECAA8 +_080ECAD8: + ldr r1, [r4] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ECAE8: .4byte gUnknown_30030F0 +_080ECAEC: .4byte sub_80EDBE8 + thumb_func_end sub_80ECAB0 + + thumb_func_start sub_80ECAF0 +sub_80ECAF0: @ 80ECAF0 + push {r4,r5,lr} + sub sp, 0xC + adds r5, r0, 0 + ldrb r0, [r5, 0x4] + cmp r0, 0 + beq _080ECB02 + cmp r0, 0x1 + beq _080ECB78 + b _080ECB8A +_080ECB02: + ldr r0, _080ECB68 @ =gUnknown_840BBA8 + bl sub_8003B24 + ldr r0, _080ECB6C @ =gUnknown_840272C + ldr r1, _080ECB70 @ =0x0000043c + adds r4, r5, r1 + adds r1, r4, 0 + bl LZ77UnCompWram + ldr r0, _080ECB74 @ =gUnknown_84028F8 + adds r1, r5, 0 + adds r1, 0x3C + bl LZ77UnCompWram + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0x90 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x28 + bl sub_80041B8 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r5, 0x4] + adds r0, 0x1 + strb r0, [r5, 0x4] + b _080ECB8A + .align 2, 0 +_080ECB68: .4byte gUnknown_840BBA8 +_080ECB6C: .4byte gUnknown_840272C +_080ECB70: .4byte 0x0000043c +_080ECB74: .4byte gUnknown_84028F8 +_080ECB78: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080ECB8A + ldr r1, _080ECB94 @ =sub_80ECB98 + adds r0, r5, 0 + bl sub_80ECAA8 +_080ECB8A: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ECB94: .4byte sub_80ECB98 + thumb_func_end sub_80ECAF0 + + thumb_func_start sub_80ECB98 +sub_80ECB98: @ 80ECB98 + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r5, [r4, 0x4] + cmp r5, 0x1 + beq _080ECBE2 + cmp r5, 0x1 + bgt _080ECBAC + cmp r5, 0 + beq _080ECBB2 + b _080ECC32 +_080ECBAC: + cmp r5, 0x2 + beq _080ECBFC + b _080ECC32 +_080ECBB2: + movs r1, 0x80 + lsls r1, 7 + movs r0, 0 + bl sub_8000AF4 + movs r1, 0xFC + lsls r1, 6 + movs r0, 0x48 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0xF0 + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0 + bl sub_8000A38 + strh r5, [r4, 0x12] + b _080ECBF4 +_080ECBE2: + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + movs r2, 0 + bl sub_80714D4 +_080ECBF4: + ldrb r0, [r4, 0x4] + adds r0, 0x1 + strb r0, [r4, 0x4] + b _080ECC32 +_080ECBFC: + ldrh r0, [r4, 0x12] + adds r0, 0x8 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2F + bls _080ECC0E + movs r0, 0x30 + strh r0, [r4, 0x12] +_080ECC0E: + ldrh r0, [r4, 0x12] + movs r1, 0x50 + subs r1, r0 + lsls r1, 8 + adds r0, 0x50 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x46 + bl sub_8000A38 + ldrh r0, [r4, 0x12] + cmp r0, 0x30 + bne _080ECC32 + ldr r1, _080ECC38 @ =sub_80ECC3C + adds r0, r4, 0 + bl sub_80ECAA8 +_080ECC32: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ECC38: .4byte sub_80ECC3C + thumb_func_end sub_80ECB98 + + thumb_func_start sub_80ECC3C +sub_80ECC3C: @ 80ECC3C + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r5, [r4, 0x4] + cmp r5, 0x1 + beq _080ECC68 + cmp r5, 0x1 + bgt _080ECC50 + cmp r5, 0 + beq _080ECC56 + b _080ECC9C +_080ECC50: + cmp r5, 0x2 + beq _080ECC86 + b _080ECC9C +_080ECC56: + ldr r0, _080ECC64 @ =0x00000141 + bl sub_80722CC + bl sub_80EDC40 + strh r5, [r4, 0x12] + b _080ECC7E + .align 2, 0 +_080ECC64: .4byte 0x00000141 +_080ECC68: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bne _080ECC9C + bl sub_80EDDF0 + movs r0, 0 + strh r0, [r4, 0x12] +_080ECC7E: + ldrb r0, [r4, 0x4] + adds r0, 0x1 + strb r0, [r4, 0x4] + b _080ECC9C +_080ECC86: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5A + bne _080ECC9C + ldr r1, _080ECCA4 @ =sub_80ECCA8 + adds r0, r4, 0 + bl sub_80ECAA8 +_080ECC9C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ECCA4: .4byte sub_80ECCA8 + thumb_func_end sub_80ECC3C + + thumb_func_start sub_80ECCA8 +sub_80ECCA8: @ 80ECCA8 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x4] + cmp r0, 0x5 + bhi _080ECD54 + lsls r0, 2 + ldr r1, _080ECCC0 @ =_080ECCC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ECCC0: .4byte _080ECCC4 + .align 2, 0 +_080ECCC4: + .4byte _080ECCDC + .4byte _080ECCE6 + .4byte _080ECCF6 + .4byte _080ECD18 + .4byte _080ECD20 + .4byte _080ECD3E +_080ECCDC: + bl sub_80EDED8 + movs r0, 0 + strh r0, [r4, 0x12] + b _080ECD36 +_080ECCE6: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x27 + bls _080ECD54 + b _080ECD36 +_080ECCF6: + ldr r1, _080ECD14 @ =0x00003f44 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x30 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0x10 + movs r2, 0x10 + movs r3, 0 + bl sub_812E944 + b _080ECD36 + .align 2, 0 +_080ECD14: .4byte 0x00003f44 +_080ECD18: + movs r0, 0x2 + bl sub_80019BC + b _080ECD36 +_080ECD20: + bl sub_812E9E4 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080ECD54 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + strh r5, [r4, 0x12] +_080ECD36: + ldrb r0, [r4, 0x4] + adds r0, 0x1 + strb r0, [r4, 0x4] + b _080ECD54 +_080ECD3E: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x32 + bls _080ECD54 + ldr r1, _080ECD5C @ =sub_80ECD60 + adds r0, r4, 0 + bl sub_80ECAA8 +_080ECD54: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ECD5C: .4byte sub_80ECD60 + thumb_func_end sub_80ECCA8 + + thumb_func_start sub_80ECD60 +sub_80ECD60: @ 80ECD60 + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + ldrb r0, [r6, 0x4] + cmp r0, 0x7 + bls _080ECD6E + b _080ECE96 +_080ECD6E: + lsls r0, 2 + ldr r1, _080ECD78 @ =_080ECD7C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ECD78: .4byte _080ECD7C + .align 2, 0 +_080ECD7C: + .4byte _080ECD9C + .4byte _080ECDC4 + .4byte _080ECDCC + .4byte _080ECE10 + .4byte _080ECE26 + .4byte _080ECE52 + .4byte _080ECE64 + .4byte _080ECE78 +_080ECD9C: + ldr r1, _080ECDC0 @ =0x00003f50 + movs r0, 0x50 + bl sub_8000A38 + movs r5, 0x10 + str r5, [sp] + movs r4, 0 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0x10 + movs r2, 0x10 + movs r3, 0 + bl sub_812E944 + strh r4, [r6, 0x8] + strh r5, [r6, 0xA] + strh r4, [r6, 0x12] + b _080ECE70 + .align 2, 0 +_080ECDC0: .4byte 0x00003f50 +_080ECDC4: + bl sub_80EDF68 + str r0, [r6, 0x14] + b _080ECE70 +_080ECDCC: + bl sub_812E9E4 + lsls r0, 24 + cmp r0, 0 + bne _080ECE96 + adds r1, r6, 0 + adds r1, 0x3C + movs r0, 0x20 + str r0, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + movs r0, 0 + movs r2, 0x38 + movs r3, 0x6 + bl sub_80041B8 + ldr r0, _080ECE0C @ =0x0000043c + adds r1, r6, r0 + movs r0, 0x90 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r2, 0 + movs r3, 0x28 + bl sub_80041B8 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + b _080ECE70 + .align 2, 0 +_080ECE0C: .4byte 0x0000043c +_080ECE10: + bl sub_8001960 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080ECE96 + ldr r0, [r6, 0x14] + bl sub_8007280 + strh r4, [r6, 0x12] + b _080ECE70 +_080ECE26: + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5A + bls _080ECE96 + movs r0, 0x50 + movs r1, 0x4 + bl sub_8000AF4 + movs r0, 0x14 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r0, 0x10 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_812E944 + b _080ECE70 +_080ECE52: + bl sub_812E9E4 + lsls r0, 24 + cmp r0, 0 + bne _080ECE96 + movs r0, 0x2 + bl sub_80019D0 + b _080ECE70 +_080ECE64: + bl sub_8006B10 + bl sub_80088F0 + movs r0, 0 + strh r0, [r6, 0x12] +_080ECE70: + ldrb r0, [r6, 0x4] + adds r0, 0x1 + strb r0, [r6, 0x4] + b _080ECE96 +_080ECE78: + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x14 + bls _080ECE96 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + ldr r1, _080ECEA0 @ =sub_80ECEA4 + adds r0, r6, 0 + bl sub_80ECAA8 +_080ECE96: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080ECEA0: .4byte sub_80ECEA4 + thumb_func_end sub_80ECD60 + + thumb_func_start sub_80ECEA4 +sub_80ECEA4: @ 80ECEA4 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrb r0, [r5, 0x4] + cmp r0, 0x5 + bls _080ECEB2 + b _080ED094 +_080ECEB2: + lsls r0, 2 + ldr r1, _080ECEBC @ =_080ECEC0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ECEBC: .4byte _080ECEC0 + .align 2, 0 +_080ECEC0: + .4byte _080ECED8 + .4byte _080ECF64 + .4byte _080ECFA4 + .4byte _080ECFD8 + .4byte _080ED000 + .4byte _080ED064 +_080ECED8: + movs r0, 0 + bl sub_80006F4 + ldr r0, _080ECF48 @ =gUnknown_8402D34 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080ECF4C @ =gUnknown_84048CC + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703EC + ldr r2, _080ECF50 @ =0x00007fff + movs r0, 0x6 + movs r1, 0x10 + bl sub_80714D4 + ldr r1, _080ECF54 @ =gUnknown_840BB88 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r1, _080ECF58 @ =gUnknown_84048EC + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ECF5C @ =gUnknown_8404F7C + movs r0, 0x1 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019D0 + bl sub_80EEBE4 + ldr r0, _080ECF60 @ =sub_80EC9EC + bl sub_80006F4 + b _080ECFF0 + .align 2, 0 +_080ECF48: .4byte gUnknown_8402D34 +_080ECF4C: .4byte gUnknown_84048CC +_080ECF50: .4byte 0x00007fff +_080ECF54: .4byte gUnknown_840BB88 +_080ECF58: .4byte gUnknown_84048EC +_080ECF5C: .4byte gUnknown_8404F7C +_080ECF60: .4byte sub_80EC9EC +_080ECF64: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080ECF72 + b _080ED094 +_080ECF72: + ldr r1, _080ECF9C @ =gUnknown_8402D54 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ECFA0 @ =gUnknown_8403FE8 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + bl sub_80F6C14 + movs r0, 0x1 + bl sub_80019BC + b _080ECFF0 + .align 2, 0 +_080ECF9C: .4byte gUnknown_8402D54 +_080ECFA0: .4byte gUnknown_8403FE8 +_080ECFA4: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _080ED094 + movs r0, 0 + bl sub_80019BC + ldr r0, _080ECFD0 @ =sub_80ED0AC + movs r1, 0 + bl sub_807741C + movs r1, 0x2 + negs r1, r1 + ldr r0, _080ECFD4 @ =0x00007fff + str r0, [sp] + movs r0, 0x6 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _080ECFF0 + .align 2, 0 +_080ECFD0: .4byte sub_80ED0AC +_080ECFD4: .4byte 0x00007fff +_080ECFD8: + ldr r0, _080ECFF8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080ED094 + ldr r0, _080ECFFC @ =0x00000115 + bl m4aSongNumStart + strh r4, [r5, 0x12] +_080ECFF0: + ldrb r0, [r5, 0x4] + adds r0, 0x1 + strb r0, [r5, 0x4] + b _080ED094 + .align 2, 0 +_080ECFF8: .4byte gUnknown_2037AB8 +_080ECFFC: .4byte 0x00000115 +_080ED000: + ldrh r0, [r5, 0x12] + adds r0, 0x1 + strh r0, [r5, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x14 + bne _080ED01A + ldr r0, _080ED054 @ =sub_80ED140 + movs r1, 0 + bl sub_807741C + bl sub_80ED118 +_080ED01A: + ldrh r0, [r5, 0x12] + cmp r0, 0x1D + bls _080ED094 + movs r0, 0x2 + negs r0, r0 + ldr r2, _080ED058 @ =0x00007fff + movs r1, 0x10 + bl sub_80714D4 + ldr r0, _080ED05C @ =sub_80ED0AC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r0, _080ED054 @ =sub_80ED140 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r1, _080ED060 @ =sub_80ED188 + adds r0, r5, 0 + bl sub_80ECAA8 + b _080ED094 + .align 2, 0 +_080ED054: .4byte sub_80ED140 +_080ED058: .4byte 0x00007fff +_080ED05C: .4byte sub_80ED0AC +_080ED060: .4byte sub_80ED188 +_080ED064: + ldr r0, _080ED09C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080ED094 + ldr r0, _080ED0A0 @ =sub_80ED0AC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r0, _080ED0A4 @ =sub_80ED140 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r1, _080ED0A8 @ =sub_80ED188 + adds r0, r5, 0 + bl sub_80ECAA8 +_080ED094: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ED09C: .4byte gUnknown_2037AB8 +_080ED0A0: .4byte sub_80ED0AC +_080ED0A4: .4byte sub_80ED140 +_080ED0A8: .4byte sub_80ED188 + thumb_func_end sub_80ECEA4 + + thumb_func_start sub_80ED0AC +sub_80ED0AC: @ 80ED0AC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080ED114 @ =gUnknown_3005098 + adds r4, r1, r0 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080ED0EC + movs r1, 0 + strh r1, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080ED0DE + strh r1, [r4, 0x2] +_080ED0DE: + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r1, 15 + movs r0, 0 + movs r2, 0 + bl sub_8001D08 +_080ED0EC: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080ED10C + movs r1, 0x90 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r4, 0x6] + movs r0, 0x6 + ldrsh r1, [r4, r0] + movs r0, 0 + movs r2, 0x2 + bl sub_8001D08 +_080ED10C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ED114: .4byte gUnknown_3005098 + thumb_func_end sub_80ED0AC + + thumb_func_start sub_80ED118 +sub_80ED118: @ 80ED118 + push {lr} + ldr r0, _080ED138 @ =sub_80ED0AC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080ED13C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0xC] + pop {r0} + bx r0 + .align 2, 0 +_080ED138: .4byte sub_80ED0AC +_080ED13C: .4byte gUnknown_3005090 + thumb_func_end sub_80ED118 + + thumb_func_start sub_80ED140 +sub_80ED140: @ 80ED140 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080ED184 @ =gUnknown_3005098 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080ED17E + movs r0, 0 + strh r0, [r1] + ldrh r2, [r1, 0x2] + movs r3, 0x2 + ldrsh r0, [r1, r3] + cmp r0, 0x1 + bgt _080ED170 + adds r0, r2, 0x1 + strh r0, [r1, 0x2] +_080ED170: + movs r0, 0x2 + ldrsh r1, [r1, r0] + lsls r1, 15 + movs r0, 0x1 + movs r2, 0 + bl sub_8001D08 +_080ED17E: + pop {r0} + bx r0 + .align 2, 0 +_080ED184: .4byte gUnknown_3005098 + thumb_func_end sub_80ED140 + + thumb_func_start sub_80ED188 +sub_80ED188: @ 80ED188 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + ldrb r0, [r7, 0x4] + cmp r0, 0x6 + bls _080ED19A + b _080ED3F6 +_080ED19A: + lsls r0, 2 + ldr r1, _080ED1A4 @ =_080ED1A8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ED1A4: .4byte _080ED1A8 + .align 2, 0 +_080ED1A8: + .4byte _080ED1C4 + .4byte _080ED214 + .4byte _080ED32C + .4byte _080ED350 + .4byte _080ED360 + .4byte _080ED3BC + .4byte _080ED3D2 +_080ED1C4: + movs r0, 0x2 + negs r0, r0 + ldr r2, _080ED204 @ =0x00007fff + movs r1, 0x10 + bl sub_80714D4 + ldr r1, _080ED208 @ =gUnknown_840BB90 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r1, _080ED20C @ =gUnknown_8405414 + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED210 @ =gUnknown_8405890 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + movs r0, 0x3 + bl sub_80019BC + b _080ED3CA + .align 2, 0 +_080ED204: .4byte 0x00007fff +_080ED208: .4byte gUnknown_840BB90 +_080ED20C: .4byte gUnknown_8405414 +_080ED210: .4byte gUnknown_8405890 +_080ED214: + bl sub_80F682C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _080ED222 + b _080ED3F6 +_080ED222: + movs r0, 0 + bl sub_80006F4 + ldr r0, _080ED2FC @ =gUnknown_84053B4 + movs r1, 0x10 + movs r2, 0x60 + bl sub_80703EC + ldr r0, _080ED300 @ =gUnknown_8405DA4 + movs r1, 0x50 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _080ED304 @ =gUnknown_8406634 + movs r1, 0x60 + movs r2, 0x20 + bl sub_80703EC + movs r5, 0x2 + negs r5, r5 + ldr r0, _080ED308 @ =0x00007fff + mov r8, r0 + adds r0, r5, 0 + movs r1, 0x10 + mov r2, r8 + bl sub_80714D4 + ldr r1, _080ED30C @ =gUnknown_8405B28 + str r6, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED310 @ =gUnknown_8405CDC + movs r4, 0x1 + str r4, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED314 @ =gUnknown_8406654 + str r6, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED318 @ =gUnknown_84071D0 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED31C @ =gUnknown_8405DC4 + str r6, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED320 @ =gUnknown_840644C + str r4, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + bl sub_80F6C14 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + movs r1, 0xE7 + lsls r1, 9 + movs r0, 0x2 + movs r2, 0 + bl sub_8001D08 + movs r1, 0xA0 + lsls r1, 6 + movs r0, 0x1 + movs r2, 0 + bl sub_8001D08 + ldr r0, _080ED324 @ =sub_80ED40C + movs r1, 0 + bl sub_807741C + adds r0, r7, 0 + bl sub_80ED444 + adds r0, r5, 0 + movs r1, 0x10 + mov r2, r8 + bl sub_80714D4 + ldr r0, _080ED328 @ =sub_80EC9EC + bl sub_80006F4 + b _080ED3CA + .align 2, 0 +_080ED2FC: .4byte gUnknown_84053B4 +_080ED300: .4byte gUnknown_8405DA4 +_080ED304: .4byte gUnknown_8406634 +_080ED308: .4byte 0x00007fff +_080ED30C: .4byte gUnknown_8405B28 +_080ED310: .4byte gUnknown_8405CDC +_080ED314: .4byte gUnknown_8406654 +_080ED318: .4byte gUnknown_84071D0 +_080ED31C: .4byte gUnknown_8405DC4 +_080ED320: .4byte gUnknown_840644C +_080ED324: .4byte sub_80ED40C +_080ED328: .4byte sub_80EC9EC +_080ED32C: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _080ED3F6 + movs r1, 0x2 + negs r1, r1 + ldr r0, _080ED34C @ =0x00007fff + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _080ED3CA + .align 2, 0 +_080ED34C: .4byte 0x00007fff +_080ED350: + ldr r0, _080ED35C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + b _080ED3C0 + .align 2, 0 +_080ED35C: .4byte gUnknown_2037AB8 +_080ED360: + ldrh r0, [r7, 0x12] + adds r0, 0x1 + strh r0, [r7, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3B + bls _080ED3F6 + movs r0, 0 + strh r0, [r7, 0x12] + ldr r0, _080ED3B4 @ =sub_80ED40C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + adds r0, r7, 0 + bl sub_80ED4A0 + ldr r0, _080ED3B8 @ =sub_80ED428 + movs r1, 0 + bl sub_807741C + movs r1, 0x80 + lsls r1, 9 + movs r0, 0x3 + movs r2, 0 + bl sub_8001D08 + movs r0, 0 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + b _080ED3CA + .align 2, 0 +_080ED3B4: .4byte sub_80ED40C +_080ED3B8: .4byte sub_80ED428 +_080ED3BC: + bl sub_8001960 +_080ED3C0: + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080ED3F6 + strh r0, [r7, 0x12] +_080ED3CA: + ldrb r0, [r7, 0x4] + adds r0, 0x1 + strb r0, [r7, 0x4] + b _080ED3F6 +_080ED3D2: + ldrh r0, [r7, 0x12] + adds r0, 0x1 + strh r0, [r7, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3B + bls _080ED3F6 + ldr r0, _080ED404 @ =sub_80ED428 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r1, _080ED408 @ =sub_80ED4C0 + adds r0, r7, 0 + bl sub_80ECAA8 +_080ED3F6: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080ED404: .4byte sub_80ED428 +_080ED408: .4byte sub_80ED4C0 + thumb_func_end sub_80ED188 + + thumb_func_start sub_80ED40C +sub_80ED40C: @ 80ED40C + push {lr} + movs r0, 0x3 + movs r1, 0xE0 + movs r2, 0x2 + bl sub_8001B90 + movs r1, 0x88 + lsls r1, 1 + movs r0, 0 + movs r2, 0x1 + bl sub_8001B90 + pop {r0} + bx r0 + thumb_func_end sub_80ED40C + + thumb_func_start sub_80ED428 +sub_80ED428: @ 80ED428 + push {lr} + movs r0, 0x2 + movs r1, 0x20 + movs r2, 0x1 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0x24 + movs r2, 0x2 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_80ED428 + + thumb_func_start sub_80ED444 +sub_80ED444: @ 80ED444 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + str r0, [r4, 0x1C] + str r0, [r4, 0x20] + ldr r0, _080ED494 @ =gUnknown_840BDA8 + movs r1, 0xA8 + movs r2, 0x50 + movs r3, 0xB + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080ED46E + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080ED498 @ =gUnknown_202063C + adds r0, r1 + str r0, [r4, 0x20] +_080ED46E: + ldr r0, _080ED49C @ =gUnknown_840BDC0 + movs r1, 0x48 + movs r2, 0x50 + movs r3, 0xC + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080ED48E + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080ED498 @ =gUnknown_202063C + adds r0, r1 + str r0, [r4, 0x1C] +_080ED48E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ED494: .4byte gUnknown_840BDA8 +_080ED498: .4byte gUnknown_202063C +_080ED49C: .4byte gUnknown_840BDC0 + thumb_func_end sub_80ED444 + + thumb_func_start sub_80ED4A0 +sub_80ED4A0: @ 80ED4A0 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x1C] + cmp r0, 0 + beq _080ED4AE + bl sub_8007280 +_080ED4AE: + ldr r0, [r4, 0x20] + cmp r0, 0 + beq _080ED4B8 + bl sub_8007280 +_080ED4B8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ED4A0 + + thumb_func_start sub_80ED4C0 +sub_80ED4C0: @ 80ED4C0 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrb r4, [r5, 0x4] + cmp r4, 0x1 + beq _080ED59C + cmp r4, 0x1 + bgt _080ED4D6 + cmp r4, 0 + beq _080ED4E4 + b _080ED68A +_080ED4D6: + cmp r4, 0x2 + bne _080ED4DC + b _080ED5FC +_080ED4DC: + cmp r4, 0x3 + bne _080ED4E2 + b _080ED658 +_080ED4E2: + b _080ED68A +_080ED4E4: + ldr r0, _080ED584 @ =gUnknown_8407430 + movs r1, 0x10 + movs r2, 0x40 + bl sub_80703EC + ldr r0, _080ED588 @ =gUnknown_8405DA4 + movs r1, 0x50 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + negs r0, r0 + ldr r2, _080ED58C @ =0x00007fff + movs r1, 0x10 + bl sub_80714D4 + ldr r1, _080ED590 @ =gUnknown_840BBA0 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r1, _080ED594 @ =gUnknown_8407470 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED598 @ =gUnknown_8407A50 + movs r0, 0x1 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019D0 + bl sub_80F6C14 + ldrb r0, [r5, 0x4] + adds r0, 0x1 + strb r0, [r5, 0x4] + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x48 + movs r1, 0x12 + bl sub_8000AF4 + movs r0, 0x48 + movs r1, 0x1 + bl sub_8000B14 + movs r0, 0x4A + movs r1, 0 + bl sub_8000AF4 + movs r1, 0x82 + lsls r1, 6 + movs r0, 0x44 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0x78 + bl sub_8000A38 + b _080ED68A + .align 2, 0 +_080ED584: .4byte gUnknown_8407430 +_080ED588: .4byte gUnknown_8405DA4 +_080ED58C: .4byte 0x00007fff +_080ED590: .4byte gUnknown_840BBA0 +_080ED594: .4byte gUnknown_8407470 +_080ED598: .4byte gUnknown_8407A50 +_080ED59C: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080ED68A + ldr r1, _080ED5EC @ =gUnknown_8407B9C + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED5F0 @ =gUnknown_8408D98 + str r4, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _080ED5F4 @ =gUnknown_203AB00 + movs r0, 0x4 + strh r0, [r1] + ldr r1, _080ED5F8 @ =gUnknown_203AB02 + movs r0, 0x34 + strh r0, [r1] + movs r1, 0xC0 + lsls r1, 5 + movs r0, 0 + movs r2, 0 + bl sub_8001B90 + movs r1, 0xF8 + lsls r1, 9 + movs r0, 0 + movs r2, 0 + bl sub_8001D08 + b _080ED642 + .align 2, 0 +_080ED5EC: .4byte gUnknown_8407B9C +_080ED5F0: .4byte gUnknown_8408D98 +_080ED5F4: .4byte gUnknown_203AB00 +_080ED5F8: .4byte gUnknown_203AB02 +_080ED5FC: + bl sub_80F682C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080ED68A + movs r0, 0x2 + negs r0, r0 + ldr r2, _080ED64C @ =0x00007fff + movs r1, 0 + bl sub_80714D4 + movs r0, 0 + bl sub_80019BC + ldr r0, _080ED650 @ =sub_80ED714 + movs r1, 0 + bl sub_807741C + adds r0, r5, 0 + bl sub_80EE4F8 + ldr r0, [r5, 0x18] + movs r1, 0 + movs r2, 0xB4 + movs r3, 0x34 + bl sub_80EE528 + ldr r0, _080ED654 @ =sub_80EE200 + movs r1, 0 + bl sub_807741C + bl sub_80ED6D8 + strh r4, [r5, 0x12] +_080ED642: + ldrb r0, [r5, 0x4] + adds r0, 0x1 + strb r0, [r5, 0x4] + b _080ED68A + .align 2, 0 +_080ED64C: .4byte 0x00007fff +_080ED650: .4byte sub_80ED714 +_080ED654: .4byte sub_80EE200 +_080ED658: + ldrh r0, [r5, 0x12] + adds r0, 0x1 + strh r0, [r5, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x10 + bne _080ED66C + adds r0, r5, 0 + bl sub_80ED7D4 +_080ED66C: + adds r0, r5, 0 + bl sub_80EE5C8 + cmp r0, 0 + bne _080ED68A + ldr r0, _080ED694 @ =sub_80EE200 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _080ED68A + ldr r1, _080ED698 @ =sub_80ED898 + adds r0, r5, 0 + bl sub_80ECAA8 +_080ED68A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080ED694: .4byte sub_80EE200 +_080ED698: .4byte sub_80ED898 + thumb_func_end sub_80ED4C0 + + thumb_func_start sub_80ED69C +sub_80ED69C: @ 80ED69C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080ED6C4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080ED6C8 + movs r1, 0x80 + lsls r1, 3 + movs r0, 0x1 + movs r2, 0x2 + bl sub_8001B90 + b _080ED6D2 + .align 2, 0 +_080ED6C4: .4byte gUnknown_3005090 +_080ED6C8: + movs r0, 0x1 + movs r1, 0x20 + movs r2, 0x2 + bl sub_8001B90 +_080ED6D2: + pop {r0} + bx r0 + thumb_func_end sub_80ED69C + + thumb_func_start sub_80ED6D8 +sub_80ED6D8: @ 80ED6D8 + push {lr} + ldr r0, _080ED6E8 @ =sub_80ED69C + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080ED6E8: .4byte sub_80ED69C + thumb_func_end sub_80ED6D8 + + thumb_func_start sub_80ED6EC +sub_80ED6EC: @ 80ED6EC + push {lr} + ldr r0, _080ED70C @ =sub_80ED69C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080ED710 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_080ED70C: .4byte sub_80ED69C +_080ED710: .4byte gUnknown_3005090 + thumb_func_end sub_80ED6EC + + thumb_func_start sub_80ED714 +sub_80ED714: @ 80ED714 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080ED75C @ =gUnknown_3005098 + adds r2, r1, r0 + movs r0, 0 + ldrsh r1, [r2, r0] + cmp r1, 0 + bne _080ED758 + ldrh r0, [r2, 0x2] + adds r0, 0x1 + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1D + ble _080ED758 + strh r1, [r2, 0x2] + ldrh r0, [r2, 0x4] + movs r1, 0x1 + eors r0, r1 + strh r0, [r2, 0x4] + movs r0, 0x4 + ldrsh r1, [r2, r0] + lsls r1, 15 + movs r0, 0xF8 + lsls r0, 9 + adds r1, r0 + movs r0, 0 + movs r2, 0 + bl sub_8001D08 +_080ED758: + pop {r0} + bx r0 + .align 2, 0 +_080ED75C: .4byte gUnknown_3005098 + thumb_func_end sub_80ED714 + + thumb_func_start sub_80ED760 +sub_80ED760: @ 80ED760 + push {lr} + ldr r0, _080ED780 @ =sub_80ED714 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080ED784 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_080ED780: .4byte sub_80ED714 +_080ED784: .4byte gUnknown_3005090 + thumb_func_end sub_80ED760 + + thumb_func_start sub_80ED788 +sub_80ED788: @ 80ED788 + push {lr} + ldr r0, _080ED7A8 @ =sub_80ED714 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080ED7AC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_080ED7A8: .4byte sub_80ED714 +_080ED7AC: .4byte gUnknown_3005090 + thumb_func_end sub_80ED788 + + thumb_func_start sub_80ED7B0 +sub_80ED7B0: @ 80ED7B0 + push {lr} + ldr r0, _080ED7CC @ =sub_80ED714 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080ED7D0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0xC] + pop {r1} + bx r1 + .align 2, 0 +_080ED7CC: .4byte sub_80ED714 +_080ED7D0: .4byte gUnknown_3005090 + thumb_func_end sub_80ED7B0 + + thumb_func_start sub_80ED7D4 +sub_80ED7D4: @ 80ED7D4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080ED800 @ =gUnknown_840BDFC + movs r1, 0x94 + lsls r1, 1 + movs r2, 0x70 + movs r3, 0x7 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080ED80C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080ED804 @ =gUnknown_202063C + adds r0, r1 + str r0, [r4, 0x24] + ldr r1, _080ED808 @ =sub_80ED818 + str r1, [r0, 0x1C] + b _080ED810 + .align 2, 0 +_080ED800: .4byte gUnknown_840BDFC +_080ED804: .4byte gUnknown_202063C +_080ED808: .4byte sub_80ED818 +_080ED80C: + movs r0, 0 + str r0, [r4, 0x24] +_080ED810: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ED7D4 + + thumb_func_start sub_80ED818 +sub_80ED818: @ 80ED818 + push {r4,lr} + adds r2, r0, 0 + adds r4, r2, 0 + adds r4, 0x2E + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + beq _080ED848 + cmp r0, 0x1 + bgt _080ED832 + cmp r0, 0 + beq _080ED838 + b _080ED892 +_080ED832: + cmp r0, 0x2 + beq _080ED866 + b _080ED892 +_080ED838: + ldrh r0, [r2, 0x20] + lsls r0, 5 + strh r0, [r4, 0x2] + movs r0, 0xA0 + strh r0, [r4, 0x4] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_080ED848: + ldrh r0, [r4, 0x2] + ldrh r1, [r4, 0x4] + subs r0, r1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 21 + strh r0, [r2, 0x20] + cmp r0, 0x34 + bgt _080ED892 + bl sub_80ED6EC + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _080ED892 +_080ED866: + ldrh r0, [r4, 0x2] + subs r0, 0x20 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 21 + strh r0, [r2, 0x20] + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bgt _080ED892 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + adds r0, r2, 0 + bl sub_8007280 +_080ED892: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80ED818 + + thumb_func_start sub_80ED898 +sub_80ED898: @ 80ED898 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x4] + cmp r0, 0xF + bls _080ED8A6 + b _080EDA98 +_080ED8A6: + lsls r0, 2 + ldr r1, _080ED8B0 @ =_080ED8B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ED8B0: .4byte _080ED8B4 + .align 2, 0 +_080ED8B4: + .4byte _080ED8F4 + .4byte _080ED8F8 + .4byte _080ED910 + .4byte _080ED918 + .4byte _080ED936 + .4byte _080ED946 + .4byte _080ED95E + .4byte _080ED97C + .4byte _080ED998 + .4byte _080ED9A0 + .4byte _080ED9BA + .4byte _080ED9D2 + .4byte _080ED9DC + .4byte _080EDA1C + .4byte _080EDA5C + .4byte _080EDA7C +_080ED8F4: + movs r0, 0 + b _080EDA6C +_080ED8F8: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bhi _080ED908 + b _080EDAC4 +_080ED908: + adds r0, r4, 0 + bl sub_80EE5E4 + b _080EDA6E +_080ED910: + adds r0, r4, 0 + bl sub_80EE850 + b _080EDA64 +_080ED918: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bhi _080ED928 + b _080EDAC4 +_080ED928: + bl sub_80ED760 + adds r0, r4, 0 + bl sub_80EDF94 + movs r0, 0 + b _080EDA6C +_080ED936: + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _080ED93E + b _080EDAC4 +_080ED93E: + adds r0, r4, 0 + bl sub_80EE6A4 + b _080EDA6E +_080ED946: + adds r0, r4, 0 + bl sub_80EE850 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080ED956 + b _080EDAC4 +_080ED956: + bl sub_80ED788 + strh r5, [r4, 0x12] + b _080EDA6E +_080ED95E: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x10 + bhi _080ED96E + b _080EDAC4 +_080ED96E: + ldr r0, [r4, 0x18] + movs r1, 0x8 + movs r2, 0xC + movs r3, 0x5 + bl sub_80EE970 + b _080EDA6E +_080ED97C: + adds r0, r4, 0 + bl sub_80EE850 + lsls r0, 24 + cmp r0, 0 + beq _080ED98A + b _080EDAC4 +_080ED98A: + ldr r0, [r4, 0x18] + movs r1, 0x8 + movs r2, 0xC + movs r3, 0x5 + bl sub_80EE970 + b _080EDA6E +_080ED998: + adds r0, r4, 0 + bl sub_80EE850 + b _080EDA64 +_080ED9A0: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x14 + bhi _080ED9B0 + b _080EDAC4 +_080ED9B0: + adds r0, r4, 0 + bl sub_80EEA94 + movs r0, 0 + b _080EDA6C +_080ED9BA: + bl sub_80ED7B0 + lsls r0, 24 + cmp r0, 0 + beq _080ED9C6 + b _080EDAC4 +_080ED9C6: + bl sub_80ED760 + adds r0, r4, 0 + bl sub_80EDAF0 + b _080EDA6E +_080ED9D2: + movs r0, 0 + bl sub_80019D0 + movs r0, 0 + b _080EDA6C +_080ED9DC: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x30 + bne _080ED9FA + ldr r0, _080EDA18 @ =0x00007fff + str r0, [sp] + movs r0, 0x6 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080ED9FA: + ldrh r0, [r4, 0x12] + cmp r0, 0x78 + bls _080EDAC4 + adds r0, r4, 0 + bl sub_80EDB70 + adds r0, r4, 0 + bl sub_80EDBAC + ldrb r0, [r4, 0x4] + adds r0, 0x1 + strb r0, [r4, 0x4] + movs r0, 0 + b _080EDAC2 + .align 2, 0 +_080EDA18: .4byte 0x00007fff +_080EDA1C: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x8 + bls _080EDAC4 + add r1, sp, 0x4 + ldr r2, _080EDA50 @ =0x00007fff + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080EDA54 @ =gUnknown_2037218 + ldr r2, _080EDA58 @ =0x01000020 + add r0, sp, 0x4 + bl CpuSet + movs r1, 0x2 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _080EDA6E + .align 2, 0 +_080EDA50: .4byte 0x00007fff +_080EDA54: .4byte gUnknown_2037218 +_080EDA58: .4byte 0x01000020 +_080EDA5C: + ldr r0, _080EDA78 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 +_080EDA64: + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080EDAC4 +_080EDA6C: + strh r0, [r4, 0x12] +_080EDA6E: + ldrb r0, [r4, 0x4] + adds r0, 0x1 + strb r0, [r4, 0x4] + b _080EDAC4 + .align 2, 0 +_080EDA78: .4byte gUnknown_2037AB8 +_080EDA7C: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3C + bls _080EDAC4 + ldr r1, _080EDA94 @ =sub_80EDBE8 + adds r0, r4, 0 + bl sub_80ECAA8 + b _080EDAC4 + .align 2, 0 +_080EDA94: .4byte sub_80EDBE8 +_080EDA98: + ldr r0, _080EDACC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080EDAC4 + ldr r0, _080EDAD0 @ =0xffff0064 + ldr r2, _080EDAD4 @ =0x00007fff + movs r1, 0 + bl sub_80714D4 + ldr r1, [r4, 0x18] + movs r0, 0 + strh r0, [r1, 0x24] + ldr r1, [r4, 0x18] + movs r0, 0xB4 + strh r0, [r1, 0x20] + movs r0, 0x1 + strb r0, [r4, 0x4] + movs r0, 0x1E +_080EDAC2: + strh r0, [r4, 0x12] +_080EDAC4: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EDACC: .4byte gUnknown_30030F0 +_080EDAD0: .4byte 0xffff0064 +_080EDAD4: .4byte 0x00007fff + thumb_func_end sub_80ED898 + + thumb_func_start sub_80EDAD8 +sub_80EDAD8: @ 80EDAD8 + push {lr} + ldrb r3, [r0, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r0, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + bl sub_80073F0 + pop {r0} + bx r0 + thumb_func_end sub_80EDAD8 + + thumb_func_start sub_80EDAF0 +sub_80EDAF0: @ 80EDAF0 + push {r4-r7,lr} + adds r7, r0, 0 + movs r5, 0 +_080EDAF6: + movs r6, 0x1 + ands r6, r5 + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 20 + lsrs r2, r5, 31 + adds r2, r5, r2 + asrs r2, 1 + lsls r2, 22 + movs r0, 0xC4 + lsls r0, 14 + adds r1, r0 + asrs r1, 16 + movs r0, 0x90 + lsls r0, 15 + adds r2, r0 + asrs r2, 16 + ldr r0, _080EDB68 @ =gUnknown_840BE4C + movs r3, 0x8 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080EDB5C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080EDB6C @ =gUnknown_202063C + adds r4, r0, r1 + lsls r1, r5, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + lsls r1, r5, 2 + adds r0, r7, 0 + adds r0, 0x28 + adds r2, r0, r1 + str r4, [r2] + cmp r6, 0 + beq _080EDB56 + ldrb r0, [r4, 0x1] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r4, 0x1] +_080EDB56: + ldr r0, [r2] + bl sub_80EDAD8 +_080EDB5C: + adds r5, 0x1 + cmp r5, 0x3 + ble _080EDAF6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDB68: .4byte gUnknown_840BE4C +_080EDB6C: .4byte gUnknown_202063C + thumb_func_end sub_80EDAF0 + + thumb_func_start sub_80EDB70 +sub_80EDB70: @ 80EDB70 + push {r4,lr} + adds r4, r0, 0 + ldr r1, [r4, 0x18] + ldrh r0, [r1, 0x24] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldr r1, [r4, 0x18] + ldrh r0, [r1, 0x26] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] + ldr r0, [r4, 0x18] + movs r1, 0 + movs r2, 0x2A + bl sub_8007FFC + ldr r0, [r4, 0x18] + ldr r1, _080EDBA4 @ =nullsub_8 + str r1, [r0, 0x1C] + movs r1, 0x1 + bl sub_800843C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EDBA4: .4byte nullsub_8 + thumb_func_end sub_80EDB70 + + thumb_func_start nullsub_83 +nullsub_83: @ 80EDBA8 + bx lr + thumb_func_end nullsub_83 + + thumb_func_start sub_80EDBAC +sub_80EDBAC: @ 80EDBAC + push {r4-r7,lr} + adds r7, r0, 0 + movs r6, 0 + ldr r5, _080EDBE0 @ =gUnknown_840BBB8 +_080EDBB4: + lsls r0, r6, 2 + adds r4, r7, 0 + adds r4, 0x28 + adds r4, r0 + ldr r0, [r4] + movs r1, 0x1 + bl sub_800843C + ldr r0, [r4] + ldr r1, _080EDBE4 @ =nullsub_83 + str r1, [r0, 0x1C] + ldrb r1, [r5] + ldrb r2, [r5, 0x1] + bl sub_8007FFC + adds r5, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _080EDBB4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDBE0: .4byte gUnknown_840BBB8 +_080EDBE4: .4byte nullsub_83 + thumb_func_end sub_80EDBAC + + thumb_func_start sub_80EDBE8 +sub_80EDBE8: @ 80EDBE8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x4] + cmp r0, 0 + beq _080EDBF8 + cmp r0, 0x1 + beq _080EDC0C + b _080EDC34 +_080EDBF8: + movs r2, 0x80 + lsls r2, 3 + movs r0, 0 + movs r1, 0 + bl sub_8070424 + ldrb r0, [r4, 0x4] + adds r0, 0x1 + strb r0, [r4, 0x4] + b _080EDC34 +_080EDC0C: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _080EDC34 + ldrb r0, [r4, 0x5] + bl sub_8077508 + adds r0, r4, 0 + bl sub_8002BC4 + movs r0, 0x2 + bl sub_8000B94 + movs r0, 0 + bl sub_8000700 + ldr r0, _080EDC3C @ =sub_8078914 + bl sub_8000544 +_080EDC34: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EDC3C: .4byte sub_8078914 + thumb_func_end sub_80EDBE8 + + thumb_func_start sub_80EDC40 +sub_80EDC40: @ 80EDC40 + push {r4-r6,lr} + movs r5, 0 + ldr r4, _080EDCE4 @ =gUnknown_840BBC0 +_080EDC46: + adds r0, r4, 0 + bl sub_800EBCC + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x4 + bls _080EDC46 + ldr r0, _080EDCE8 @ =gUnknown_840BBE8 + bl sub_8008974 + ldr r6, _080EDCEC @ =gUnknown_203AB0E + movs r0, 0x60 + strh r0, [r6] + ldr r5, _080EDCF0 @ =gUnknown_203AB10 + movs r0, 0x10 + strh r0, [r5] + ldr r1, _080EDCF4 @ =gUnknown_203AB12 + movs r0, 0x7 + strh r0, [r1] + ldr r0, _080EDCF8 @ =gUnknown_203AB14 + movs r2, 0x5 + strh r2, [r0] + ldr r1, _080EDCFC @ =gUnknown_203AB16 + movs r0, 0x8 + strh r0, [r1] + ldr r1, _080EDD00 @ =gUnknown_203AB18 + movs r0, 0x5A + strh r0, [r1] + ldr r1, _080EDD04 @ =gUnknown_203AB1A + movs r0, 0x78 + strh r0, [r1] + ldr r0, _080EDD08 @ =gUnknown_203AB1E + movs r1, 0x1 + strh r1, [r0] + ldr r0, _080EDD0C @ =gUnknown_203AB20 + strh r1, [r0] + ldr r0, _080EDD10 @ =gUnknown_203AB22 + strh r2, [r0] + ldr r0, _080EDD14 @ =gUnknown_203AB24 + strh r2, [r0] + ldr r4, _080EDD18 @ =gUnknown_203AB28 + ldr r0, [r4] + cmp r0, 0 + bne _080EDCA2 + ldr r0, _080EDD1C @ =0x151b9245 + str r0, [r4] +_080EDCA2: + ldr r0, _080EDD20 @ =gUnknown_840BC6C + movs r1, 0xF8 + movs r2, 0x37 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080EDCDE + ldr r0, _080EDD24 @ =gUnknown_202063C + lsls r3, r1, 4 + adds r3, r1 + lsls r3, 2 + adds r2, r3, r0 + movs r1, 0xF8 + lsls r1, 4 + strh r1, [r2, 0x2E] + movs r1, 0xDC + lsls r1, 2 + strh r1, [r2, 0x30] + ldrh r1, [r6] + strh r1, [r2, 0x32] + ldrh r1, [r5] + strh r1, [r2, 0x34] + adds r0, r3 + adds r0, 0x3A + ldr r1, [r4] + bl sub_8044F34 +_080EDCDE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EDCE4: .4byte gUnknown_840BBC0 +_080EDCE8: .4byte gUnknown_840BBE8 +_080EDCEC: .4byte gUnknown_203AB0E +_080EDCF0: .4byte gUnknown_203AB10 +_080EDCF4: .4byte gUnknown_203AB12 +_080EDCF8: .4byte gUnknown_203AB14 +_080EDCFC: .4byte gUnknown_203AB16 +_080EDD00: .4byte gUnknown_203AB18 +_080EDD04: .4byte gUnknown_203AB1A +_080EDD08: .4byte gUnknown_203AB1E +_080EDD0C: .4byte gUnknown_203AB20 +_080EDD10: .4byte gUnknown_203AB22 +_080EDD14: .4byte gUnknown_203AB24 +_080EDD18: .4byte gUnknown_203AB28 +_080EDD1C: .4byte 0x151b9245 +_080EDD20: .4byte gUnknown_840BC6C +_080EDD24: .4byte gUnknown_202063C + thumb_func_end sub_80EDC40 + + thumb_func_start sub_80EDD28 +sub_80EDD28: @ 80EDD28 + push {r4-r7,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _080EDDCC @ =gUnknown_203AB12 + ldrh r0, [r0] + ands r2, r0 + adds r2, 0x2 + lsls r2, 16 + lsrs r4, r2, 16 + ldr r1, _080EDDD0 @ =gUnknown_203AB2C + ldrh r0, [r1] + adds r2, r0, 0 + adds r0, r2, 0x1 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080EDD5C + movs r6, 0x3 + negs r6, r6 + adds r0, r6, 0 + strh r0, [r1] +_080EDD5C: + lsls r1, r5, 16 + asrs r1, 16 + lsls r0, r4, 16 + asrs r7, r0, 16 + adds r1, r7 + lsls r0, r3, 16 + asrs r0, 16 + lsls r2, 16 + asrs r6, r2, 16 + adds r0, r6 + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + ldr r0, _080EDDD4 @ =0xffff0000 + adds r1, r0 + lsrs r1, 16 + cmp r1, 0xEE + bhi _080EDDC6 + ldr r0, _080EDDD8 @ =gUnknown_840BC84 + lsls r1, r3, 16 + asrs r5, r1, 16 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080EDDC6 + ldr r0, _080EDDDC @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldr r0, _080EDDE0 @ =gUnknown_203AB22 + ldrh r0, [r0] + lsls r4, r0 + strh r4, [r1, 0x2E] + ldr r2, _080EDDE4 @ =gUnknown_203AB24 + adds r0, r5, 0 + ldrh r2, [r2] + lsls r0, r2 + strh r0, [r1, 0x30] + ldr r0, _080EDDE8 @ =gUnknown_203AB1E + ldrh r0, [r0] + muls r0, r7 + strh r0, [r1, 0x32] + ldr r0, _080EDDEC @ =gUnknown_203AB20 + ldrh r0, [r0] + muls r0, r6 + strh r0, [r1, 0x34] +_080EDDC6: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDDCC: .4byte gUnknown_203AB12 +_080EDDD0: .4byte gUnknown_203AB2C +_080EDDD4: .4byte 0xffff0000 +_080EDDD8: .4byte gUnknown_840BC84 +_080EDDDC: .4byte gUnknown_202063C +_080EDDE0: .4byte gUnknown_203AB22 +_080EDDE4: .4byte gUnknown_203AB24 +_080EDDE8: .4byte gUnknown_203AB1E +_080EDDEC: .4byte gUnknown_203AB20 + thumb_func_end sub_80EDD28 + + thumb_func_start sub_80EDDF0 +sub_80EDDF0: @ 80EDDF0 + push {lr} + ldr r0, _080EDE00 @ =sub_80EDE04 + movs r1, 0x1 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080EDE00: .4byte sub_80EDE04 + thumb_func_end sub_80EDDF0 + + thumb_func_start sub_80EDE04 +sub_80EDE04: @ 80EDE04 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r0, 2 + add r0, r9 + lsls r0, 3 + ldr r1, _080EDEB0 @ =gUnknown_3005098 + adds r0, r1 + mov r8, r0 + ldrh r1, [r0, 0x4] + adds r1, 0x1 + strh r1, [r0, 0x4] + ldrh r0, [r0, 0x6] + adds r0, 0x1 + mov r2, r8 + strh r0, [r2, 0x6] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x6 + ble _080EDECA + movs r0, 0 + strh r0, [r2, 0x4] + ldrb r6, [r2] + ldr r0, _080EDEB4 @ =gUnknown_840BC84 + ldr r1, _080EDEB8 @ =gUnknown_840BC08 + lsls r6, 2 + adds r6, r1 + movs r3, 0 + ldrsh r1, [r6, r3] + movs r3, 0x2 + ldrsh r2, [r6, r3] + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r5, _080EDEBC @ =gUnknown_202063C + adds r7, r4, r5 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_800838C + adds r5, 0x1C + adds r4, r5 + ldr r0, _080EDEC0 @ =sub_80EE40C + str r0, [r4] + ldrh r0, [r6, 0x2] + lsls r0, 4 + strh r0, [r7, 0x30] + movs r0, 0x78 + strh r0, [r7, 0x32] + mov r1, r8 + ldrh r0, [r1, 0x2] + strh r0, [r7, 0x34] + lsls r0, 16 + cmp r0, 0 + bge _080EDE88 + movs r0, 0x1 + strh r0, [r7, 0x34] +_080EDE88: + mov r2, r8 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x8 + bls _080EDECA + ldrh r0, [r2, 0x2] + adds r0, 0x1 + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080EDEC4 + mov r0, r9 + bl sub_8077508 + b _080EDECA + .align 2, 0 +_080EDEB0: .4byte gUnknown_3005098 +_080EDEB4: .4byte gUnknown_840BC84 +_080EDEB8: .4byte gUnknown_840BC08 +_080EDEBC: .4byte gUnknown_202063C +_080EDEC0: .4byte sub_80EE40C +_080EDEC4: + movs r0, 0 + mov r3, r8 + strh r0, [r3] +_080EDECA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80EDE04 + + thumb_func_start sub_80EDED8 +sub_80EDED8: @ 80EDED8 + push {lr} + ldr r0, _080EDEE8 @ =sub_80EDEEC + movs r1, 0x2 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080EDEE8: .4byte sub_80EDEEC + thumb_func_end sub_80EDED8 + + thumb_func_start sub_80EDEEC +sub_80EDEEC: @ 80EDEEC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080EDF5C @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080EDF44 + ldrh r1, [r4, 0x2] + ldrb r2, [r4, 0x2] + adds r0, r1, 0x4 + strh r0, [r4, 0x2] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x8 + bls _080EDF1A + subs r0, r1, 0x5 + strh r0, [r4, 0x2] +_080EDF1A: + ldr r0, _080EDF60 @ =gUnknown_840BCBC + ldr r1, _080EDF64 @ =gUnknown_840BC08 + lsls r2, 2 + adds r2, r1 + movs r3, 0 + ldrsh r1, [r2, r3] + movs r3, 0x2 + ldrsh r2, [r2, r3] + movs r3, 0x3 + bl sub_8006F8C + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080EDF44 + adds r0, r5, 0 + bl sub_8077508 +_080EDF44: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _080EDF56 + movs r0, 0 + strh r0, [r4] +_080EDF56: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EDF5C: .4byte gUnknown_3005098 +_080EDF60: .4byte gUnknown_840BCBC +_080EDF64: .4byte gUnknown_840BC08 + thumb_func_end sub_80EDEEC + + thumb_func_start sub_80EDF68 +sub_80EDF68: @ 80EDF68 + push {lr} + ldr r0, _080EDF8C @ =gUnknown_840BCDC + movs r1, 0x78 + movs r2, 0x46 + movs r3, 0x4 + bl sub_8006F8C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080EDF90 @ =gUnknown_202063C + adds r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_080EDF8C: .4byte gUnknown_840BCDC +_080EDF90: .4byte gUnknown_202063C + thumb_func_end sub_80EDF68 + + thumb_func_start sub_80EDF94 +sub_80EDF94: @ 80EDF94 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0 + strb r0, [r4, 0x6] + ldr r0, _080EDFD0 @ =sub_80EE024 + movs r1, 0x4 + bl sub_807741C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r5, 0 + movs r1, 0x5 + adds r2, r4, 0 + bl sub_80776E8 + ldr r0, _080EDFD4 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + movs r0, 0x40 + strh r0, [r4, 0xE] + movs r0, 0 + bl sub_8001CCC + strh r0, [r4, 0x10] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EDFD0: .4byte sub_80EE024 +_080EDFD4: .4byte gUnknown_3005090 + thumb_func_end sub_80EDF94 + + thumb_func_start sub_80EDFD8 +sub_80EDFD8: @ 80EDFD8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r4, 15 + movs r0, 0xF8 + lsls r0, 9 + adds r4, r0 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0 + mov r1, r8 + movs r2, 0 + bl sub_8001B90 + lsls r5, 8 + movs r0, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_8001B90 + lsls r6, 8 + movs r0, 0 + adds r1, r6, 0 + movs r2, 0x2 + bl sub_8001D08 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80EDFD8 + + thumb_func_start sub_80EE024 +sub_80EE024: @ 80EE024 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080EE048 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x5 + bhi _080EE11C + lsls r0, 2 + ldr r1, _080EE04C @ =_080EE050 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EE048: .4byte gUnknown_3005098 +_080EE04C: .4byte _080EE050 + .align 2, 0 +_080EE050: + .4byte _080EE068 + .4byte _080EE07A + .4byte _080EE094 + .4byte _080EE0BC + .4byte _080EE0EE + .4byte _080EE114 +_080EE068: + movs r0, 0x2 + strh r0, [r5, 0xE] + movs r0, 0 + strh r0, [r5, 0x2] + movs r0, 0x6 + strh r0, [r5, 0x10] + movs r0, 0x20 + strh r0, [r5, 0x12] + b _080EE10C +_080EE07A: + ldrh r0, [r5, 0x6] + subs r0, 0x2 + strh r0, [r5, 0x6] + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080EE11C + movs r0, 0 + strh r0, [r5, 0x2] + b _080EE10C +_080EE094: + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xE + bne _080EE0AE + adds r0, r2, 0 + movs r1, 0x5 + bl sub_8077720 + movs r1, 0x1 + strb r1, [r0, 0x6] +_080EE0AE: + movs r2, 0x2 + ldrsh r0, [r5, r2] + cmp r0, 0xF + ble _080EE11C + movs r0, 0 + strh r0, [r5, 0x2] + b _080EE10C +_080EE0BC: + ldrh r0, [r5, 0x6] + adds r0, 0x8 + strh r0, [r5, 0x6] + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080EE0E0 + bl sub_80EE160 + movs r0, 0x20 + strh r0, [r5, 0x10] + movs r0, 0x30 + strh r0, [r5, 0x12] + movs r0, 0x3 + strh r0, [r5, 0xE] +_080EE0E0: + movs r3, 0x2 + ldrsh r0, [r5, r3] + cmp r0, 0x7 + ble _080EE11C + movs r0, 0 + strh r0, [r5, 0x2] + b _080EE10C +_080EE0EE: + ldrh r0, [r5, 0x6] + subs r0, 0x8 + strh r0, [r5, 0x6] + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080EE11C + movs r1, 0 + strh r1, [r5, 0xE] + movs r0, 0x40 + strh r0, [r5, 0x6] + strh r1, [r5, 0x2] +_080EE10C: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _080EE11C +_080EE114: + adds r0, r2, 0 + bl sub_8077508 + b _080EE156 +_080EE11C: + movs r4, 0x6 + ldrsh r3, [r5, r4] + ldr r4, _080EE15C @ =gUnknown_825E074 + adds r0, r3, 0 + adds r0, 0x40 + lsls r0, 1 + adds r0, r4 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x12 + ldrsh r0, [r5, r2] + muls r1, r0 + asrs r1, 8 + negs r1, r1 + movs r0, 0x10 + ldrsh r2, [r5, r0] + lsls r3, 1 + adds r3, r4 + movs r4, 0 + ldrsh r0, [r3, r4] + muls r0, r2 + asrs r0, 8 + subs r2, r0 + movs r3, 0xE + ldrsh r0, [r5, r3] + movs r4, 0x8 + ldrsh r3, [r5, r4] + bl sub_80EDFD8 +_080EE156: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE15C: .4byte gUnknown_825E074 + thumb_func_end sub_80EE024 + + thumb_func_start sub_80EE160 +sub_80EE160: @ 80EE160 + push {r4,lr} + ldr r4, _080EE1BC @ =gUnknown_840BE8C + adds r0, r4, 0 + movs r1, 0x84 + movs r2, 0x4E + movs r3, 0x6 + bl sub_8006F8C + adds r0, r4, 0 + movs r1, 0x84 + movs r2, 0x76 + movs r3, 0x6 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080EE1B4 + ldr r0, _080EE1C0 @ =gUnknown_202063C + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r0 + ldrb r2, [r4, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + movs r2, 0x40 + orrs r0, r2 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r4, 0x3] + adds r0, r4, 0 + bl sub_80EDAD8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C +_080EE1B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE1BC: .4byte gUnknown_840BE8C +_080EE1C0: .4byte gUnknown_202063C + thumb_func_end sub_80EE160 + + thumb_func_start sub_80EE1C4 +sub_80EE1C4: @ 80EE1C4 + push {lr} + adds r3, r0, 0 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EE1FA + adds r0, r3, 0 + bl sub_8007280 +_080EE1FA: + pop {r0} + bx r0 + thumb_func_end sub_80EE1C4 + + thumb_func_start sub_80EE200 +sub_80EE200: @ 80EE200 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080EE220 @ =gUnknown_3005098 + adds r1, r0, r1 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080EE224 + cmp r0, 0x1 + beq _080EE232 + b _080EE28A + .align 2, 0 +_080EE220: .4byte gUnknown_3005098 +_080EE224: + movs r3, 0x80 + lsls r3, 3 + adds r0, r3, 0 + strh r0, [r1, 0x2] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_080EE232: + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x27 + ble _080EE250 + ldrh r2, [r1, 0x2] + movs r3, 0x2 + ldrsh r0, [r1, r3] + cmp r0, 0x10 + ble _080EE250 + adds r0, r2, 0 + subs r0, 0x10 + strh r0, [r1, 0x2] +_080EE250: + movs r0, 0x2 + ldrsh r1, [r1, r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8001B90 + ldr r5, _080EE290 @ =gUnknown_203AB30 + str r0, [r5] + ldr r1, _080EE294 @ =0x00007fff + cmp r0, r1 + bls _080EE270 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 +_080EE270: + ldr r1, [r5] + ldr r0, _080EE298 @ =0x0000eeff + cmp r1, r0 + bls _080EE28A + movs r1, 0xEF + lsls r1, 8 + movs r0, 0 + movs r2, 0 + bl sub_8001B90 + adds r0, r4, 0 + bl sub_8077508 +_080EE28A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE290: .4byte gUnknown_203AB30 +_080EE294: .4byte 0x00007fff +_080EE298: .4byte 0x0000eeff + thumb_func_end sub_80EE200 + + thumb_func_start sub_80EE29C +sub_80EE29C: @ 80EE29C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r2, [r5, 0x2E] + ldrh r0, [r5, 0x32] + subs r2, r0 + strh r2, [r5, 0x2E] + ldrh r1, [r5, 0x34] + ldrh r0, [r5, 0x30] + adds r1, r0 + strh r1, [r5, 0x30] + ldrh r0, [r5, 0x36] + adds r0, 0x30 + strh r0, [r5, 0x36] + lsls r2, 16 + asrs r2, 20 + strh r2, [r5, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x22] + ldr r1, _080EE340 @ =gUnknown_825E074 + lsls r0, 16 + asrs r0, 20 + adds r0, 0x40 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 21 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x38] + adds r0, 0x1 + strh r0, [r5, 0x38] + movs r1, 0x38 + ldrsh r0, [r5, r1] + ldr r1, _080EE344 @ =gUnknown_203AB16 + ldrh r1, [r1] + bl __modsi3 + cmp r0, 0 + beq _080EE324 + adds r4, r5, 0 + adds r4, 0x3A + adds r0, r4, 0 + mov r1, sp + bl sub_8044F3C + ldr r1, [sp] + ldr r0, _080EE348 @ =0x41c64e6d + muls r1, r0 + ldr r3, _080EE34C @ =0x00006073 + adds r1, r3 + str r1, [sp] + adds r0, r4, 0 + bl sub_8044F34 + ldr r2, [sp] + lsrs r2, 16 + str r2, [sp] + movs r1, 0x20 + ldrsh r0, [r5, r1] + ldrh r1, [r5, 0x26] + ldrh r3, [r5, 0x22] + adds r1, r3 + lsls r1, 16 + asrs r1, 16 + bl sub_80EDD28 +_080EE324: + movs r0, 0x20 + ldrsh r1, [r5, r0] + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + bge _080EE336 + adds r0, r5, 0 + bl sub_8007280 +_080EE336: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE340: .4byte gUnknown_825E074 +_080EE344: .4byte gUnknown_203AB16 +_080EE348: .4byte 0x41c64e6d +_080EE34C: .4byte 0x00006073 + thumb_func_end sub_80EE29C + + thumb_func_start sub_80EE350 +sub_80EE350: @ 80EE350 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x2E] + adds r0, r1 + strh r0, [r4, 0x2E] + ldrh r2, [r4, 0x34] + ldrh r1, [r4, 0x30] + adds r0, r2, r1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + adds r1, 0x1 + strh r1, [r4, 0x36] + ldrh r0, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + ldrh r0, [r4, 0x2E] + ldr r1, _080EE3F8 @ =gUnknown_203AB22 + ldrh r1, [r1] + asrs r0, r1 + strh r0, [r4, 0x20] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldr r1, _080EE3FC @ =gUnknown_203AB24 + ldrh r1, [r1] + asrs r0, r1 + strh r0, [r4, 0x22] + ldr r1, _080EE400 @ =gUnknown_203AB1C + ldrh r0, [r1] + cmp r0, 0 + beq _080EE3A4 + lsls r0, r2, 16 + cmp r0, 0 + bge _080EE3A4 + movs r2, 0x38 + ldrsh r0, [r4, r2] + ldrh r1, [r1] + asrs r0, r1 + strh r0, [r4, 0x26] +_080EE3A4: + movs r0, 0x3C + ldrsh r1, [r4, r0] + ldr r0, _080EE404 @ =gUnknown_203AB18 + ldrh r0, [r0] + cmp r1, r0 + ble _080EE3DC + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsrs r1, r2, 2 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r2, 0x3C + ldrsh r1, [r4, r2] + ldr r0, _080EE408 @ =gUnknown_203AB1A + ldrh r0, [r0] + cmp r1, r0 + ble _080EE3DC + adds r0, r4, 0 + bl sub_8007280 +_080EE3DC: + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0xA0 + bls _080EE3F0 + adds r0, r4, 0 + bl sub_8007280 +_080EE3F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE3F8: .4byte gUnknown_203AB22 +_080EE3FC: .4byte gUnknown_203AB24 +_080EE400: .4byte gUnknown_203AB1C +_080EE404: .4byte gUnknown_203AB18 +_080EE408: .4byte gUnknown_203AB1A + thumb_func_end sub_80EE350 + + thumb_func_start sub_80EE40C +sub_80EE40C: @ 80EE40C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080EE490 + subs r0, r1, 0x1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x22] + cmp r0, 0x56 + ble _080EE438 + movs r0, 0x4A + strh r0, [r4, 0x22] + movs r0, 0x94 + lsls r0, 3 + strh r0, [r4, 0x30] +_080EE438: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EE4D4 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080EE46C + ldrh r0, [r4, 0x20] + adds r1, r0, 0 + adds r1, 0x1A + strh r1, [r4, 0x20] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xBC + ble _080EE486 + movs r2, 0xBC + lsls r2, 1 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4, 0x20] + movs r0, 0x1 + b _080EE484 +_080EE46C: + ldrh r0, [r4, 0x20] + adds r1, r0, 0 + subs r1, 0x1A + strh r1, [r4, 0x20] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x33 + bgt _080EE486 + movs r0, 0x68 + subs r0, r1 + strh r0, [r4, 0x20] + movs r0, 0 +_080EE484: + strh r0, [r4, 0x2E] +_080EE486: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + b _080EE4D4 +_080EE490: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080EE49E + adds r0, r4, 0 + bl sub_8007280 +_080EE49E: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EE4B4 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C +_080EE4B4: + ldrh r0, [r4, 0x30] + adds r0, 0x4 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + ble _080EE4D4 + adds r0, r4, 0 + bl sub_8007280 +_080EE4D4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80EE40C + + thumb_func_start sub_80EE4DC +sub_80EE4DC: @ 80EE4DC + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EE4F2 + adds r0, r2, 0 + bl sub_8007280 +_080EE4F2: + pop {r0} + bx r0 + thumb_func_end sub_80EE4DC + + thumb_func_start sub_80EE4F8 +sub_80EE4F8: @ 80EE4F8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080EE520 @ =gUnknown_840BD88 + movs r1, 0 + movs r2, 0 + movs r3, 0x9 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080EE524 @ =gUnknown_202063C + adds r1, r0 + str r1, [r4, 0x18] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE520: .4byte gUnknown_840BD88 +_080EE524: .4byte gUnknown_202063C + thumb_func_end sub_80EE4F8 + + thumb_func_start sub_80EE528 +sub_80EE528: @ 80EE528 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + adds r4, r0, 0 + adds r0, r2, 0 + adds r5, r3, 0 + lsls r1, 16 + lsls r0, 16 + lsls r5, 16 + lsrs r5, 16 + lsrs r2, r1, 16 + mov r9, r2 + asrs r1, 16 + lsls r2, r1, 4 + movs r3, 0 + mov r8, r3 + strh r2, [r4, 0x2E] + lsrs r6, r0, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 4 + adds r1, r5, 0 + bl __divsi3 + strh r0, [r4, 0x30] + strh r5, [r4, 0x32] + strh r6, [r4, 0x34] + mov r0, r8 + strh r0, [r4, 0x36] + mov r2, r9 + strh r2, [r4, 0x20] + movs r0, 0x64 + strh r0, [r4, 0x22] + ldr r0, _080EE57C @ =sub_80EE580 + str r0, [r4, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EE57C: .4byte sub_80EE580 + thumb_func_end sub_80EE528 + + thumb_func_start sub_80EE580 +sub_80EE580: @ 80EE580 + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x36] + adds r0, 0x1 + strh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x27 + ble _080EE5A0 + ldrh r1, [r2, 0x30] + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r0, 0x1 + ble _080EE5A0 + subs r0, r1, 0x1 + strh r0, [r2, 0x30] +_080EE5A0: + ldrh r0, [r2, 0x30] + ldrh r4, [r2, 0x2E] + adds r0, r4 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + ldrh r3, [r2, 0x34] + movs r4, 0x34 + ldrsh r1, [r2, r4] + cmp r0, r1 + blt _080EE5BE + strh r3, [r2, 0x20] + ldr r0, _080EE5C4 @ =nullsub_8 + str r0, [r2, 0x1C] +_080EE5BE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE5C4: .4byte nullsub_8 + thumb_func_end sub_80EE580 + + thumb_func_start sub_80EE5C8 +sub_80EE5C8: @ 80EE5C8 + push {lr} + movs r2, 0 + ldr r0, [r0, 0x18] + ldr r1, [r0, 0x1C] + ldr r0, _080EE5E0 @ =sub_80EE580 + cmp r1, r0 + bne _080EE5D8 + movs r2, 0x1 +_080EE5D8: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_080EE5E0: .4byte sub_80EE580 + thumb_func_end sub_80EE5C8 + + thumb_func_start sub_80EE5E4 +sub_80EE5E4: @ 80EE5E4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x18] + movs r1, 0x2 + bl sub_800838C + ldr r0, [r4, 0x18] + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r0, [r4, 0x18] + strh r1, [r0, 0x30] + ldr r1, [r4, 0x18] + movs r0, 0x3 + strh r0, [r1, 0x26] + ldr r1, [r4, 0x18] + ldr r0, _080EE60C @ =sub_80EE610 + str r0, [r1, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE60C: .4byte sub_80EE610 + thumb_func_end sub_80EE5E4 + + thumb_func_start sub_80EE610 +sub_80EE610: @ 80EE610 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080EE646 + cmp r5, 0x1 + bgt _080EE626 + cmp r5, 0 + beq _080EE62C + b _080EE69A +_080EE626: + cmp r5, 0x2 + beq _080EE65C + b _080EE69A +_080EE62C: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080EE69A + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + strh r5, [r4, 0x26] + b _080EE654 +_080EE646: + movs r0, 0x21 + movs r1, 0x3F + movs r2, 0x1 + bl sub_8071E60 + movs r0, 0 + strh r0, [r4, 0x30] +_080EE654: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080EE69A +_080EE65C: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080EE67C + movs r0, 0 + strh r0, [r4, 0x32] + movs r1, 0 + movs r2, 0x26 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080EE67A + movs r1, 0x1 +_080EE67A: + strh r1, [r4, 0x26] +_080EE67C: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + ble _080EE69A + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + movs r0, 0 + strh r0, [r4, 0x26] + ldr r0, _080EE6A0 @ =nullsub_8 + str r0, [r4, 0x1C] +_080EE69A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE6A0: .4byte nullsub_8 + thumb_func_end sub_80EE610 + + thumb_func_start sub_80EE6A4 +sub_80EE6A4: @ 80EE6A4 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080EE6F0 @ =gUnknown_203AB0A + movs r0, 0x10 + strh r0, [r1] + ldr r1, _080EE6F4 @ =gUnknown_203AB04 + movs r0, 0x3 + strh r0, [r1] + ldr r1, _080EE6F8 @ =gUnknown_203AB08 + movs r0, 0x5 + strh r0, [r1] + ldr r1, _080EE6FC @ =gUnknown_203AB06 + movs r0, 0 + strh r0, [r1] + ldr r0, [r4, 0x18] + movs r1, 0x2 + bl sub_800838C + ldr r0, [r4, 0x18] + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r0, [r4, 0x18] + strh r1, [r0, 0x30] + ldr r0, [r4, 0x18] + strh r1, [r0, 0x32] + ldr r0, [r4, 0x18] + strh r1, [r0, 0x34] + ldr r0, [r4, 0x18] + strh r1, [r0, 0x36] + ldr r1, [r4, 0x18] + movs r0, 0x28 + strh r0, [r1, 0x3C] + ldr r1, [r4, 0x18] + ldr r0, _080EE700 @ =sub_80EE704 + str r0, [r1, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE6F0: .4byte gUnknown_203AB0A +_080EE6F4: .4byte gUnknown_203AB04 +_080EE6F8: .4byte gUnknown_203AB08 +_080EE6FC: .4byte gUnknown_203AB06 +_080EE700: .4byte sub_80EE704 + thumb_func_end sub_80EE6A4 + + thumb_func_start sub_80EE704 +sub_80EE704: @ 80EE704 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080EE740 + cmp r0, 0x1 + bgt _080EE71A + cmp r0, 0 + beq _080EE726 + b _080EE846 +_080EE71A: + cmp r0, 0x2 + beq _080EE7C4 + cmp r0, 0x3 + bne _080EE724 + b _080EE824 +_080EE724: + b _080EE846 +_080EE726: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080EE736 + b _080EE846 +_080EE736: + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800838C + b _080EE818 +_080EE740: + ldrh r2, [r4, 0x3C] + ldrh r3, [r4, 0x32] + adds r1, r2, r3 + movs r5, 0 + strh r1, [r4, 0x32] + ldrh r0, [r4, 0x34] + adds r0, 0x8 + strh r0, [r4, 0x34] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x24] + ldr r1, _080EE7B0 @ =gUnknown_825E074 + movs r3, 0x34 + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + ldr r0, _080EE7B4 @ =gUnknown_203AB04 + ldrh r0, [r0] + muls r0, r1 + ldr r1, _080EE7B8 @ =gUnknown_203AB08 + ldrh r1, [r1] + asrs r0, r1 + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + movs r0, 0x38 + ldrsh r1, [r4, r0] + ldr r0, _080EE7BC @ =gUnknown_203AB06 + ldrh r0, [r0] + cmp r1, r0 + ble _080EE78C + strh r5, [r4, 0x38] + subs r0, r2, 0x1 + strh r0, [r4, 0x3C] +_080EE78C: + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080EE846 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + strh r5, [r4, 0x30] + ldr r0, _080EE7C0 @ =0x00004757 + strh r0, [r4, 0x3A] + movs r0, 0x1C + strh r0, [r4, 0x3C] + b _080EE818 + .align 2, 0 +_080EE7B0: .4byte gUnknown_825E074 +_080EE7B4: .4byte gUnknown_203AB04 +_080EE7B8: .4byte gUnknown_203AB08 +_080EE7BC: .4byte gUnknown_203AB06 +_080EE7C0: .4byte 0x00004757 +_080EE7C4: + ldrh r0, [r4, 0x3C] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r1, r0, 20 + strh r1, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080EE804 + ldrh r0, [r4, 0x20] + adds r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + movs r3, 0x3A + ldrsh r2, [r4, r3] + bl sub_80EE864 + movs r0, 0x3A + ldrsh r1, [r4, r0] + ldr r0, _080EE820 @ =0x41c64e6d + muls r0, r1 + strh r0, [r4, 0x3A] +_080EE804: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0xC + ble _080EE846 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + movs r0, 0 + strh r0, [r4, 0x30] +_080EE818: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080EE846 + .align 2, 0 +_080EE820: .4byte 0x41c64e6d +_080EE824: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080EE846 + ldr r0, _080EE84C @ =gUnknown_203AB0A + ldrh r1, [r0] + ldrh r2, [r4, 0x24] + negs r2, r2 + lsls r2, 16 + asrs r2, 16 + adds r0, r4, 0 + movs r3, 0x4 + bl sub_80EE970 +_080EE846: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE84C: .4byte gUnknown_203AB0A + thumb_func_end sub_80EE704 + + thumb_func_start sub_80EE850 +sub_80EE850: @ 80EE850 + ldr r0, [r0, 0x18] + ldr r1, [r0, 0x1C] + ldr r0, _080EE860 @ =nullsub_8 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + bx lr + .align 2, 0 +_080EE860: .4byte nullsub_8 + thumb_func_end sub_80EE850 + + thumb_func_start sub_80EE864 +sub_80EE864: @ 80EE864 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r2, 16 + lsrs r5, r2, 16 + movs r6, 0 + lsls r0, 16 + ldr r2, _080EE8D4 @ =0xffea0000 + adds r2, r0 + mov r8, r2 + lsls r1, 16 + movs r0, 0xC0 + lsls r0, 13 + adds r7, r1, r0 +_080EE880: + ldr r0, _080EE8D8 @ =gUnknown_840BEC4 + mov r2, r8 + asrs r1, r2, 16 + asrs r2, r7, 16 + movs r3, 0xA + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080EE8C4 + ldr r0, _080EE8DC @ =gUnknown_202063C + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r0 + lsls r5, 16 + asrs r5, 16 + adds r0, r5, 0 + movs r1, 0xD + bl __modsi3 + adds r0, 0x8 + strh r0, [r4, 0x34] + adds r0, r5, 0 + movs r1, 0x3 + bl __modsi3 + strh r0, [r4, 0x36] + strh r6, [r4, 0x3C] + ldr r0, _080EE8E0 @ =0x41c64e6d + muls r0, r5 + lsls r0, 16 + lsrs r5, r0, 16 +_080EE8C4: + adds r6, 0x1 + cmp r6, 0x1 + ble _080EE880 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EE8D4: .4byte 0xffea0000 +_080EE8D8: .4byte gUnknown_840BEC4 +_080EE8DC: .4byte gUnknown_202063C +_080EE8E0: .4byte 0x41c64e6d + thumb_func_end sub_80EE864 + + thumb_func_start sub_80EE8E4 +sub_80EE8E4: @ 80EE8E4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r5, 0 + adds r4, 0x2E + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080EE8FA + cmp r0, 0x1 + beq _080EE90C + b _080EE93E +_080EE8FA: + ldrh r0, [r5, 0x20] + lsls r0, 4 + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x22] + lsls r0, 4 + strh r0, [r4, 0x4] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_080EE90C: + ldrh r1, [r4, 0x2] + ldrh r0, [r4, 0x6] + subs r1, r0 + strh r1, [r4, 0x2] + ldrh r0, [r4, 0x8] + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r4, 0x4] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x20] + ldrh r0, [r4, 0x4] + lsls r0, 16 + asrs r0, 20 + strh r0, [r5, 0x22] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080EE93E + adds r0, r5, 0 + bl sub_8007280 +_080EE93E: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080EE96A + movs r0, 0 + strh r0, [r4, 0xE] + adds r3, r5, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080EE96A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80EE8E4 + + thumb_func_start sub_80EE970 +sub_80EE970: @ 80EE970 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r2, 0 + adds r6, r3, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + movs r1, 0 + mov r8, r1 + mov r1, r8 + strh r1, [r4, 0x2E] + strh r5, [r4, 0x30] + ldrh r1, [r4, 0x24] + lsls r1, 4 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 12 + adds r1, r5, 0 + bl __divsi3 + strh r0, [r4, 0x34] + mov r0, r8 + strh r0, [r4, 0x36] + movs r0, 0x80 + lsls r0, 4 + adds r1, r5, 0 + bl __divsi3 + strh r0, [r4, 0x38] + mov r1, r8 + strh r1, [r4, 0x3A] + strh r6, [r4, 0x3C] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + ldr r0, _080EE9D0 @ =sub_80EE9D4 + str r0, [r4, 0x1C] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EE9D0: .4byte sub_80EE9D4 + thumb_func_end sub_80EE970 + + thumb_func_start sub_80EE9D4 +sub_80EE9D4: @ 80EE9D4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080EEA08 + cmp r5, 0x1 + bgt _080EE9EA + cmp r5, 0 + beq _080EE9F0 + b _080EEA88 +_080EE9EA: + cmp r5, 0x2 + beq _080EEA6E + b _080EEA88 +_080EE9F0: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080EEA88 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800838C + b _080EEA64 +_080EEA08: + ldrh r0, [r4, 0x30] + subs r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r5, r0, 16 + cmp r5, 0 + beq _080EEA4C + ldrh r1, [r4, 0x34] + ldrh r2, [r4, 0x32] + adds r1, r2 + strh r1, [r4, 0x32] + ldrh r0, [r4, 0x38] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x24] + ldr r1, _080EEA48 @ =gUnknown_825E074 + lsls r0, 16 + asrs r0, 20 + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + asrs r0, r1 + negs r0, r0 + strh r0, [r4, 0x26] + b _080EEA88 + .align 2, 0 +_080EEA48: .4byte gUnknown_825E074 +_080EEA4C: + ldrh r0, [r4, 0x32] + lsrs r0, 4 + strh r0, [r4, 0x24] + strh r5, [r4, 0x26] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0x5 + beq _080EEA84 +_080EEA64: + strh r5, [r4, 0x3A] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080EEA88 +_080EEA6E: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080EEA88 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C +_080EEA84: + ldr r0, _080EEA90 @ =nullsub_8 + str r0, [r4, 0x1C] +_080EEA88: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EEA90: .4byte nullsub_8 + thumb_func_end sub_80EE9D4 + + thumb_func_start sub_80EEA94 +sub_80EEA94: @ 80EEA94 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x18] + movs r2, 0 + strh r2, [r0, 0x2E] + ldr r0, [r4, 0x18] + strh r2, [r0, 0x30] + ldr r0, [r4, 0x18] + strh r2, [r0, 0x32] + ldr r0, [r4, 0x18] + strh r2, [r0, 0x34] + ldr r0, [r4, 0x18] + strh r2, [r0, 0x36] + ldr r0, [r4, 0x18] + strh r2, [r0, 0x38] + ldr r1, [r4, 0x18] + ldrh r0, [r1, 0x24] + ldrh r3, [r1, 0x20] + adds r0, r3 + strh r0, [r1, 0x20] + ldr r0, [r4, 0x18] + strh r2, [r0, 0x24] + ldr r1, _080EEAF4 @ =gUnknown_203AB0C + movs r0, 0x24 + strh r0, [r1] + ldr r1, _080EEAF8 @ =gUnknown_203AB06 + movs r0, 0x28 + strh r0, [r1] + ldr r1, _080EEAFC @ =gUnknown_203AB04 + movs r0, 0x3 + strh r0, [r1] + ldr r1, _080EEB00 @ =gUnknown_203AB08 + movs r0, 0x4 + strh r0, [r1] + ldr r1, [r4, 0x18] + movs r0, 0x24 + strh r0, [r1, 0x3C] + ldr r0, [r4, 0x18] + movs r1, 0x2 + bl sub_800838C + ldr r1, [r4, 0x18] + ldr r0, _080EEB04 @ =sub_80EEB08 + str r0, [r1, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EEAF4: .4byte gUnknown_203AB0C +_080EEAF8: .4byte gUnknown_203AB06 +_080EEAFC: .4byte gUnknown_203AB04 +_080EEB00: .4byte gUnknown_203AB08 +_080EEB04: .4byte sub_80EEB08 + thumb_func_end sub_80EEA94 + + thumb_func_start sub_80EEB08 +sub_80EEB08: @ 80EEB08 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080EEB58 + cmp r0, 0x1 + bgt _080EEB1E + cmp r0, 0 + beq _080EEB24 + b _080EEBCE +_080EEB1E: + cmp r0, 0x2 + beq _080EEB84 + b _080EEBCE +_080EEB24: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080EEB4A + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + ands r0, r1 + cmp r0, 0 + beq _080EEB44 + ldrh r0, [r4, 0x24] + adds r0, 0x1 + b _080EEB48 +_080EEB44: + ldrh r0, [r4, 0x24] + subs r0, 0x1 +_080EEB48: + strh r0, [r4, 0x24] +_080EEB4A: + movs r3, 0x30 + ldrsh r0, [r4, r3] + cmp r0, 0x11 + ble _080EEBCE + movs r0, 0 + strh r0, [r4, 0x30] + b _080EEB78 +_080EEB58: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + ldr r1, _080EEB80 @ =gUnknown_203AB06 + ldrh r1, [r1] + cmp r0, r1 + blt _080EEBCE + adds r0, r4, 0 + movs r1, 0x4 + bl sub_800838C + strh r5, [r4, 0x30] + strh r5, [r4, 0x32] +_080EEB78: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080EEBCE + .align 2, 0 +_080EEB80: .4byte gUnknown_203AB06 +_080EEB84: + ldrh r2, [r4, 0x3C] + ldrh r1, [r4, 0x30] + adds r0, r2, r1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 20 + negs r1, r0 + strh r1, [r4, 0x24] + ldr r1, _080EEBD4 @ =gUnknown_825E074 + lsls r0, 1 + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + ldr r0, _080EEBD8 @ =gUnknown_203AB04 + ldrh r0, [r0] + muls r0, r1 + ldr r1, _080EEBDC @ =gUnknown_203AB08 + ldrh r1, [r1] + asrs r0, r1 + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080EEBC0 + subs r0, r2, 0x1 + strh r0, [r4, 0x3C] +_080EEBC0: + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 20 + cmp r0, 0x3F + ble _080EEBCE + ldr r0, _080EEBE0 @ =nullsub_8 + str r0, [r4, 0x1C] +_080EEBCE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EEBD4: .4byte gUnknown_825E074 +_080EEBD8: .4byte gUnknown_203AB04 +_080EEBDC: .4byte gUnknown_203AB08 +_080EEBE0: .4byte nullsub_8 + thumb_func_end sub_80EEB08 + + thumb_func_start sub_80EEBE4 +sub_80EEBE4: @ 80EEBE4 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _080EEC04 @ =gUnknown_840BEDC +_080EEBEA: + adds r0, r4, 0 + bl sub_800EBCC + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x6 + bls _080EEBEA + ldr r0, _080EEC08 @ =gUnknown_840BF14 + bl sub_8008974 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EEC04: .4byte gUnknown_840BEDC +_080EEC08: .4byte gUnknown_840BF14 + thumb_func_end sub_80EEBE4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/item.s b/asm/item.s new file mode 100644 index 000000000..b3539c02d --- /dev/null +++ b/asm/item.s @@ -0,0 +1,1853 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8099DA0 +sub_8099DA0: @ 8099DA0 + adds r1, r0, 0 + ldr r0, _08099DB8 @ =gUnknown_300500C + ldr r0, [r0] + movs r2, 0xF2 + lsls r2, 4 + adds r0, r2 + ldr r0, [r0] + ldrh r1, [r1] + eors r0, r1 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_08099DB8: .4byte gUnknown_300500C + thumb_func_end sub_8099DA0 + + thumb_func_start sub_8099DBC +sub_8099DBC: @ 8099DBC + lsls r1, 16 + lsrs r1, 16 + ldr r2, _08099DD4 @ =gUnknown_300500C + ldr r2, [r2] + movs r3, 0xF2 + lsls r3, 4 + adds r2, r3 + ldr r2, [r2] + eors r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_08099DD4: .4byte gUnknown_300500C + thumb_func_end sub_8099DBC + + thumb_func_start sub_8099DD8 +sub_8099DD8: @ 8099DD8 + ldrh r0, [r0] + bx lr + thumb_func_end sub_8099DD8 + + thumb_func_start sub_8099DDC +sub_8099DDC: @ 8099DDC + strh r1, [r0] + bx lr + thumb_func_end sub_8099DDC + + thumb_func_start sub_8099DE0 +sub_8099DE0: @ 8099DE0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + mov r8, r0 + movs r1, 0 + ldr r0, _08099E34 @ =gUnknown_203988C + mov r9, r0 +_08099DF2: + movs r6, 0 + lsls r5, r1, 3 + mov r2, r9 + adds r0, r5, r2 + adds r7, r1, 0x1 + ldrb r0, [r0, 0x4] + cmp r6, r0 + bcs _08099E20 + ldr r2, _08099E34 @ =gUnknown_203988C +_08099E04: + adds r4, r5, r2 + lsls r1, r6, 2 + ldr r0, [r4] + adds r0, r1 + adds r0, 0x2 + mov r1, r8 + str r2, [sp] + bl sub_804C56C + adds r6, 0x1 + ldr r2, [sp] + ldrb r4, [r4, 0x4] + cmp r6, r4 + bcc _08099E04 +_08099E20: + adds r1, r7, 0 + cmp r1, 0x4 + bls _08099DF2 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099E34: .4byte gUnknown_203988C + thumb_func_end sub_8099DE0 + + thumb_func_start sub_8099E38 +sub_8099E38: @ 8099E38 + push {lr} + bl sub_8099DE0 + pop {r0} + bx r0 + thumb_func_end sub_8099E38 + + thumb_func_start sub_8099E44 +sub_8099E44: @ 8099E44 + ldr r1, _08099E84 @ =gUnknown_203988C + ldr r0, _08099E88 @ =gUnknown_3005008 + ldr r2, [r0] + movs r3, 0xC4 + lsls r3, 2 + adds r0, r2, r3 + str r0, [r1] + movs r0, 0x2A + strb r0, [r1, 0x4] + adds r3, 0xA8 + adds r0, r2, r3 + str r0, [r1, 0x8] + movs r0, 0x1E + strb r0, [r1, 0xC] + adds r3, 0x78 + adds r0, r2, r3 + str r0, [r1, 0x10] + movs r0, 0xD + strb r0, [r1, 0x14] + adds r3, 0x34 + adds r0, r2, r3 + str r0, [r1, 0x18] + movs r0, 0x3A + strb r0, [r1, 0x1C] + ldr r0, _08099E8C @ =0x0000054c + adds r2, r0 + str r2, [r1, 0x20] + adds r1, 0x24 + movs r0, 0x2B + strb r0, [r1] + bx lr + .align 2, 0 +_08099E84: .4byte gUnknown_203988C +_08099E88: .4byte gUnknown_3005008 +_08099E8C: .4byte 0x0000054c + thumb_func_end sub_8099E44 + + thumb_func_start sub_8099E90 +sub_8099E90: @ 8099E90 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08099EB8 + movs r0, 0x2B + bl sub_809C8A0 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, _08099EB4 @ =gUnknown_84162BD + adds r0, r4, 0 + bl sub_8008DA4 + b _08099EC4 + .align 2, 0 +_08099EB4: .4byte gUnknown_84162BD +_08099EB8: + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 +_08099EC4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8099E90 + + thumb_func_start sub_8099ECC +sub_8099ECC: @ 8099ECC + push {lr} + lsls r0, 24 + movs r2, 0 + ldr r1, _08099EF0 @ =gUnknown_203988C + lsrs r0, 21 + adds r0, r1 + ldrb r1, [r0, 0x4] + cmp r2, r1 + bcs _08099EFE + ldr r3, [r0] +_08099EE0: + lsls r0, r2, 2 + adds r0, r3 + ldrh r0, [r0] + cmp r0, 0 + bne _08099EF4 + lsls r0, r2, 24 + asrs r0, 24 + b _08099F02 + .align 2, 0 +_08099EF0: .4byte gUnknown_203988C +_08099EF4: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r1 + bcc _08099EE0 +_08099EFE: + movs r0, 0x1 + negs r0, r0 +_08099F02: + pop {r1} + bx r1 + thumb_func_end sub_8099ECC + + thumb_func_start sub_8099F08 +sub_8099F08: @ 8099F08 + push {lr} + lsls r0, 24 + movs r2, 0 + ldr r1, _08099F2C @ =gUnknown_203988C + lsrs r0, 21 + subs r0, 0x8 + adds r0, r1 + ldrb r1, [r0, 0x4] + cmp r2, r1 + bcs _08099F3A + ldr r3, [r0] +_08099F1E: + lsls r0, r2, 2 + adds r0, r3 + ldrh r0, [r0] + cmp r0, 0 + beq _08099F30 + movs r0, 0x1 + b _08099F3C + .align 2, 0 +_08099F2C: .4byte gUnknown_203988C +_08099F30: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r1 + bcc _08099F1E +_08099F3A: + movs r0, 0 +_08099F3C: + pop {r1} + bx r1 + thumb_func_end sub_8099F08 + + thumb_func_start sub_8099F40 +sub_8099F40: @ 8099F40 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + adds r0, r4, 0 + bl sub_809A9D8 + lsls r0, 24 + cmp r0, 0 + bne _08099F5C + b _08099FA4 +_08099F58: + movs r0, 0x1 + b _08099FA6 +_08099F5C: + adds r0, r4, 0 + bl sub_809A9D8 + subs r0, 0x1 + lsls r0, 24 + movs r2, 0 + ldr r1, _08099F94 @ =gUnknown_203988C + lsrs r0, 21 + adds r0, r1 + ldrb r1, [r0, 0x4] + cmp r2, r1 + bcs _08099FA4 + adds r3, r0, 0 +_08099F76: + ldr r0, [r3] + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, r4 + bne _08099F98 + adds r0, r1, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r5 + bcs _08099F58 + b _08099FA4 + .align 2, 0 +_08099F94: .4byte gUnknown_203988C +_08099F98: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r3, 0x4] + cmp r2, r0 + bcc _08099F76 +_08099FA4: + movs r0, 0 +_08099FA6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8099F40 + + thumb_func_start sub_8099FAC +sub_8099FAC: @ 8099FAC + push {r4,lr} + ldr r0, _08099FC0 @ =0x0000016d + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08099FD4 + b _08099FF0 + .align 2, 0 +_08099FC0: .4byte 0x0000016d +_08099FC4: + ldr r1, _08099FD0 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] + movs r0, 0x1 + b _08099FF6 + .align 2, 0 +_08099FD0: .4byte gUnknown_20370D0 +_08099FD4: + movs r4, 0x85 +_08099FD6: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08099FC4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xAF + bls _08099FD6 +_08099FF0: + ldr r0, _08099FFC @ =gUnknown_20370D0 + strh r1, [r0] + movs r0, 0 +_08099FF6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099FFC: .4byte gUnknown_20370D0 + thumb_func_end sub_8099FAC + + thumb_func_start sub_809A000 +sub_809A000: @ 809A000 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + adds r0, r4, 0 + bl sub_809A9D8 + lsls r0, 24 + cmp r0, 0 + beq _0809A050 + adds r0, r4, 0 + bl sub_809A9D8 + subs r0, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + movs r2, 0 + ldr r1, _0809A054 @ =gUnknown_203988C + lsls r0, r5, 3 + adds r0, r1 + ldrb r1, [r0, 0x4] + cmp r2, r1 + bcs _0809A068 + adds r3, r0, 0 +_0809A032: + ldr r0, [r3] + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, r4 + bne _0809A05C + adds r0, r1, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsrs r0, 16 + adds r0, r6 + ldr r1, _0809A058 @ =0x000003e7 + cmp r0, r1 + ble _0809A07A +_0809A050: + movs r0, 0 + b _0809A07C + .align 2, 0 +_0809A054: .4byte gUnknown_203988C +_0809A058: .4byte 0x000003e7 +_0809A05C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r3, 0x4] + cmp r2, r0 + bcc _0809A032 +_0809A068: + adds r0, r5, 0 + bl sub_8099ECC + lsls r0, 24 + asrs r0, 24 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0809A050 +_0809A07A: + movs r0, 0x1 +_0809A07C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809A000 + + thumb_func_start sub_809A084 +sub_809A084: @ 809A084 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + adds r0, r6, 0 + bl sub_809A9D8 + lsls r0, 24 + cmp r0, 0 + bne _0809A0A2 + b _0809A1CA +_0809A0A2: + adds r0, r6, 0 + bl sub_809A9D8 + subs r0, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + movs r2, 0 + ldr r1, _0809A0E0 @ =gUnknown_203988C + lsls r0, r7, 3 + adds r0, r1 + ldrb r1, [r0, 0x4] + cmp r2, r1 + bcs _0809A0F4 + adds r5, r0, 0 +_0809A0BE: + ldr r0, [r5] + lsls r4, r2, 2 + adds r1, r4, r0 + ldrh r0, [r1] + cmp r0, r6 + bne _0809A0E8 + adds r0, r1, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsrs r0, 16 + mov r2, r8 + adds r1, r0, r2 + ldr r0, _0809A0E4 @ =0x000003e7 + cmp r1, r0 + ble _0809A1B8 + b _0809A1CA + .align 2, 0 +_0809A0E0: .4byte gUnknown_203988C +_0809A0E4: .4byte 0x000003e7 +_0809A0E8: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r5, 0x4] + cmp r2, r0 + bcc _0809A0BE +_0809A0F4: + cmp r7, 0x3 + bne _0809A132 + movs r4, 0xB6 + lsls r4, 1 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + cmp r0, 0 + bne _0809A132 + movs r0, 0x1 + bl sub_8099ECC + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809A1CA + ldr r2, _0809A1AC @ =gUnknown_203988C + ldr r0, [r2, 0x8] + lsls r1, 2 + adds r0, r1, r0 + strh r4, [r0] + ldr r0, [r2, 0x8] + adds r0, r1 + adds r0, 0x2 + movs r1, 0x1 + bl sub_8099DBC +_0809A132: + cmp r7, 0x4 + bne _0809A174 + ldr r4, _0809A1B0 @ =0x0000016d + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + cmp r0, 0 + bne _0809A174 + movs r0, 0x1 + bl sub_8099ECC + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809A1CA + ldr r2, _0809A1AC @ =gUnknown_203988C + ldr r0, [r2, 0x8] + lsls r1, 2 + adds r0, r1, r0 + strh r4, [r0] + ldr r0, [r2, 0x8] + adds r0, r1 + adds r0, 0x2 + movs r1, 0x1 + bl sub_8099DBC + ldr r0, _0809A1B4 @ =0x00000847 + bl sub_806E680 +_0809A174: + ldr r0, _0809A1B0 @ =0x0000016d + cmp r6, r0 + bne _0809A180 + ldr r0, _0809A1B4 @ =0x00000847 + bl sub_806E680 +_0809A180: + adds r0, r7, 0 + bl sub_8099ECC + lsls r0, 24 + asrs r2, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _0809A1CA + ldr r0, _0809A1AC @ =gUnknown_203988C + lsls r1, r7, 3 + adds r1, r0 + ldr r0, [r1] + lsls r2, 2 + adds r0, r2, r0 + strh r6, [r0] + ldr r0, [r1] + adds r0, r2 + adds r0, 0x2 + mov r1, r8 + b _0809A1C2 + .align 2, 0 +_0809A1AC: .4byte gUnknown_203988C +_0809A1B0: .4byte 0x0000016d +_0809A1B4: .4byte 0x00000847 +_0809A1B8: + lsls r1, 16 + lsrs r1, 16 + ldr r0, [r5] + adds r0, r4 + adds r0, 0x2 +_0809A1C2: + bl sub_8099DBC + movs r0, 0x1 + b _0809A1CC +_0809A1CA: + movs r0, 0 +_0809A1CC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809A084 + + thumb_func_start sub_809A1D8 +sub_809A1D8: @ 809A1D8 + push {r4-r7,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + adds r0, r4, 0 + bl sub_809A9D8 + lsls r0, 24 + cmp r0, 0 + beq _0809A258 + cmp r4, 0 + beq _0809A258 + adds r0, r4, 0 + bl sub_809A9D8 + subs r0, 0x1 + lsls r0, 24 + movs r2, 0 + ldr r1, _0809A248 @ =gUnknown_203988C + lsrs r0, 21 + adds r0, r1 + ldrb r1, [r0, 0x4] + cmp r2, r1 + bcs _0809A258 + adds r6, r0, 0 +_0809A20C: + ldr r0, [r6] + lsls r5, r2, 2 + adds r1, r5, r0 + ldrh r0, [r1] + cmp r0, r4 + bne _0809A24C + adds r0, r1, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r7 + bcc _0809A258 + subs r0, r7 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, [r6] + adds r0, r5 + adds r0, 0x2 + adds r1, r4, 0 + bl sub_8099DBC + cmp r4, 0 + bne _0809A242 + ldr r0, [r6] + adds r0, r5, r0 + strh r4, [r0] +_0809A242: + movs r0, 0x1 + b _0809A25A + .align 2, 0 +_0809A248: .4byte gUnknown_203988C +_0809A24C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r6, 0x4] + cmp r2, r0 + bcc _0809A20C +_0809A258: + movs r0, 0 +_0809A25A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809A1D8 + + thumb_func_start sub_809A260 +sub_809A260: @ 809A260 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_809A260 + + thumb_func_start sub_809A274 +sub_809A274: @ 809A274 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + movs r4, 0 + lsrs r1, 24 + cmp r4, r1 + bcs _0809A29E + adds r5, r1, 0 + movs r7, 0 +_0809A286: + lsls r0, r4, 2 + adds r0, r6 + strh r7, [r0] + adds r0, 0x2 + movs r1, 0 + bl sub_8099DBC + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r5 + bcc _0809A286 +_0809A29E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809A274 + + thumb_func_start sub_809A2A4 +sub_809A2A4: @ 809A2A4 + push {r4,r5,lr} + movs r4, 0 + movs r5, 0xA6 + lsls r5, 2 +_0809A2AC: + ldr r0, _0809A2D8 @ =gUnknown_3005008 + ldr r0, [r0] + lsls r3, r4, 2 + adds r1, r0, r3 + adds r1, r5 + movs r2, 0 + strh r2, [r1] + adds r3, r5 + adds r0, r3 + adds r0, 0x2 + movs r1, 0 + bl sub_8099DDC + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _0809A2AC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809A2D8: .4byte gUnknown_3005008 + thumb_func_end sub_809A2A4 + + thumb_func_start sub_809A2DC +sub_809A2DC: @ 809A2DC + push {r4,r5,lr} + movs r4, 0 + ldr r5, _0809A300 @ =gUnknown_203988C +_0809A2E2: + lsls r1, r4, 3 + adds r1, r5 + ldr r0, [r1] + ldrb r1, [r1, 0x4] + bl sub_809A274 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x4 + bls _0809A2E2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809A300: .4byte gUnknown_203988C + thumb_func_end sub_809A2DC + + thumb_func_start sub_809A304 +sub_809A304: @ 809A304 + push {lr} + movs r1, 0 + ldr r0, _0809A324 @ =gUnknown_3005008 + ldr r2, [r0] + movs r3, 0xA6 + lsls r3, 2 +_0809A310: + lsls r0, r1, 24 + asrs r1, r0, 24 + lsls r0, r1, 2 + adds r0, r2, r0 + adds r0, r3 + ldrh r0, [r0] + cmp r0, 0 + bne _0809A328 + adds r0, r1, 0 + b _0809A338 + .align 2, 0 +_0809A324: .4byte gUnknown_3005008 +_0809A328: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + asrs r0, 24 + cmp r0, 0x1D + ble _0809A310 + movs r0, 0x1 + negs r0, r0 +_0809A338: + pop {r1} + bx r1 + thumb_func_end sub_809A304 + + thumb_func_start sub_809A33C +sub_809A33C: @ 809A33C + push {r4,lr} + movs r2, 0 + movs r1, 0 + ldr r0, _0809A370 @ =gUnknown_3005008 + ldr r3, [r0] + movs r4, 0xA6 + lsls r4, 2 +_0809A34A: + lsls r0, r1, 2 + adds r0, r3, r0 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0 + beq _0809A35C + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_0809A35C: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1D + bls _0809A34A + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A370: .4byte gUnknown_3005008 + thumb_func_end sub_809A33C + + thumb_func_start sub_809A374 +sub_809A374: @ 809A374 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + movs r4, 0 +_0809A380: + ldr r0, _0809A3AC @ =gUnknown_3005008 + ldr r2, [r0] + lsls r1, r4, 2 + adds r0, r2, r1 + movs r3, 0xA6 + lsls r3, 2 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r6 + bne _0809A3B4 + adds r0, r1, r2 + ldr r1, _0809A3B0 @ =0x0000029a + adds r0, r1 + bl sub_8099DD8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _0809A3B4 + movs r0, 0x1 + b _0809A3C0 + .align 2, 0 +_0809A3AC: .4byte gUnknown_3005008 +_0809A3B0: .4byte 0x0000029a +_0809A3B4: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1D + bls _0809A380 + movs r0, 0 +_0809A3C0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809A374 + + thumb_func_start sub_809A3C8 +sub_809A3C8: @ 809A3C8 + push {r4-r7,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + movs r3, 0 + ldr r6, _0809A404 @ =gUnknown_3005008 +_0809A3D6: + ldr r2, [r6] + lsls r1, r3, 2 + adds r0, r2, r1 + movs r7, 0xA6 + lsls r7, 2 + adds r0, r7 + ldrh r0, [r0] + cmp r0, r4 + bne _0809A40C + adds r0, r7, 0 + adds r4, r1, r0 + adds r0, r2, r4 + adds r0, 0x2 + bl sub_8099DD8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, r5 + ldr r0, _0809A408 @ =0x000003e7 + cmp r1, r0 + ble _0809A444 + b _0809A456 + .align 2, 0 +_0809A404: .4byte gUnknown_3005008 +_0809A408: .4byte 0x000003e7 +_0809A40C: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1D + bls _0809A3D6 + bl sub_809A304 + lsls r0, 24 + asrs r2, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _0809A456 + ldr r0, _0809A440 @ =gUnknown_3005008 + ldr r0, [r0] + lsls r2, 2 + adds r1, r0, r2 + movs r3, 0xA6 + lsls r3, 2 + adds r1, r3 + strh r4, [r1] + adds r2, r3 + adds r0, r2 + adds r0, 0x2 + adds r1, r5, 0 + b _0809A44E + .align 2, 0 +_0809A440: .4byte gUnknown_3005008 +_0809A444: + lsls r1, 16 + lsrs r1, 16 + ldr r0, [r6] + adds r0, r4 + adds r0, 0x2 +_0809A44E: + bl sub_8099DDC + movs r0, 0x1 + b _0809A458 +_0809A456: + movs r0, 0 +_0809A458: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809A3C8 + + thumb_func_start sub_809A460 +sub_809A460: @ 809A460 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + cmp r2, 0 + beq _0809A4D8 + movs r4, 0 + ldr r0, _0809A4E4 @ =gUnknown_3005008 + ldr r1, [r0] + movs r3, 0xA6 + lsls r3, 2 + adds r1, r3 + ldrh r1, [r1] + adds r7, r0, 0 + cmp r1, r2 + beq _0809A49E + adds r5, r7, 0 +_0809A48A: + adds r4, 0x1 + cmp r4, 0x1D + bhi _0809A49E + ldr r0, [r5] + lsls r1, r4, 2 + adds r0, r1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _0809A48A +_0809A49E: + cmp r4, 0x1E + beq _0809A4D8 + lsls r6, r4, 2 + movs r0, 0xA6 + lsls r0, 2 + adds r4, r6, r0 + ldr r0, [r7] + adds r0, r4 + adds r0, 0x2 + bl sub_8099DD8 + mov r1, r8 + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [r7] + adds r0, r4 + adds r0, 0x2 + adds r1, r5, 0 + bl sub_8099DDC + cmp r5, 0 + bne _0809A4D8 + ldr r0, [r7] + adds r0, r6 + movs r1, 0xA6 + lsls r1, 2 + adds r0, r1 + strh r5, [r0] +_0809A4D8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809A4E4: .4byte gUnknown_3005008 + thumb_func_end sub_809A460 + + thumb_func_start sub_809A4E8 +sub_809A4E8: @ 809A4E8 + push {r4-r7,lr} + movs r2, 0 +_0809A4EC: + adds r1, r2, 0x1 + lsls r0, r1, 16 + lsrs r4, r0, 16 + adds r6, r1, 0 + cmp r4, 0x1D + bhi _0809A52E + ldr r0, _0809A53C @ =gUnknown_3005008 + mov r12, r0 + lsls r5, r2, 2 + movs r7, 0xA6 + lsls r7, 2 +_0809A502: + mov r0, r12 + ldr r1, [r0] + adds r0, r1, r5 + adds r0, r7 + ldrh r0, [r0] + cmp r0, 0 + bne _0809A524 + movs r0, 0xA6 + lsls r0, 2 + adds r1, r0 + adds r2, r1, r5 + ldr r3, [r2] + lsls r0, r4, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + str r3, [r1] +_0809A524: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _0809A502 +_0809A52E: + lsls r0, r6, 16 + lsrs r2, r0, 16 + cmp r2, 0x1C + bls _0809A4EC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809A53C: .4byte gUnknown_3005008 + thumb_func_end sub_809A4E8 + + thumb_func_start sub_809A540 +sub_809A540: @ 809A540 + push {lr} + ldr r0, _0809A55C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _0809A560 @ =0x00000296 + adds r1, r0, r2 + ldrh r2, [r1] + ldr r3, _0809A564 @ =0x00000103 + cmp r2, r3 + beq _0809A568 + movs r0, 0x88 + lsls r0, 1 + cmp r2, r0 + beq _0809A570 + b _0809A572 + .align 2, 0 +_0809A55C: .4byte gUnknown_3005008 +_0809A560: .4byte 0x00000296 +_0809A564: .4byte 0x00000103 +_0809A568: + movs r0, 0x88 + lsls r0, 1 + strh r0, [r1] + b _0809A572 +_0809A570: + strh r3, [r1] +_0809A572: + pop {r0} + bx r0 + thumb_func_end sub_809A540 + + thumb_func_start sub_809A578 +sub_809A578: @ 809A578 + ldr r3, [r0] + ldr r2, [r1] + str r2, [r0] + str r3, [r1] + bx lr + thumb_func_end sub_809A578 + + thumb_func_start sub_809A584 +sub_809A584: @ 809A584 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + subs r0, r1, 0x1 + cmp r2, r0 + bge _0809A5D8 + adds r6, r1, 0 + mov r9, r0 +_0809A59E: + adds r1, r2, 0x1 + lsls r0, r1, 16 + lsrs r4, r0, 16 + adds r7, r1, 0 + cmp r4, r6 + bcs _0809A5D0 + lsls r0, r2, 2 + mov r1, r8 + adds r5, r1, r0 +_0809A5B0: + adds r0, r5, 0x2 + bl sub_8099DA0 + lsls r0, 16 + cmp r0, 0 + bne _0809A5C6 + lsls r1, r4, 2 + add r1, r8 + adds r0, r5, 0 + bl sub_809A578 +_0809A5C6: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r6 + bcc _0809A5B0 +_0809A5D0: + lsls r0, r7, 16 + lsrs r2, r0, 16 + cmp r2, r9 + blt _0809A59E +_0809A5D8: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809A584 + + thumb_func_start sub_809A5E4 +sub_809A5E4: @ 809A5E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r0, 0 + movs r4, 0 + bl sub_809A720 + movs r3, 0 + ldrb r0, [r5, 0x4] + cmp r3, r0 + bcs _0809A676 + movs r6, 0xA9 + lsls r6, 1 +_0809A604: + ldr r0, [r5] + lsls r1, r3, 2 + adds r2, r1, r0 + ldrh r0, [r2] + adds r7, r1, 0 + cmp r0, 0 + bne _0809A622 + adds r0, r2, 0x2 + str r3, [sp] + bl sub_8099DA0 + lsls r0, 16 + ldr r3, [sp] + cmp r0, 0 + beq _0809A70A +_0809A622: + ldr r0, [r5] + adds r1, r7, r0 + ldrh r0, [r1] + cmp r0, r6 + bls _0809A66A + adds r0, r1, 0x2 + str r3, [sp] + bl sub_8099DA0 + lsls r0, 16 + ldr r3, [sp] + cmp r0, 0 + beq _0809A66A + adds r0, r3, 0x1 + b _0809A642 +_0809A640: + adds r0, r4, 0x1 +_0809A642: + lsls r0, 16 + lsrs r4, r0, 16 + ldrb r1, [r5, 0x4] + cmp r4, r1 + bcs _0809A676 + ldr r0, [r5] + lsls r1, r4, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _0809A640 + adds r0, r1, 0x2 + str r3, [sp] + bl sub_8099DA0 + lsls r0, 16 + ldr r3, [sp] + cmp r0, 0 + bne _0809A640 + b _0809A676 +_0809A66A: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrb r2, [r5, 0x4] + cmp r3, r2 + bcc _0809A604 +_0809A676: + movs r6, 0 + lsls r7, r3, 2 + subs r4, r3 + mov r10, r4 + lsls r3, 1 + mov r9, r3 + ldrb r0, [r5, 0x4] + cmp r6, r0 + bcs _0809A6A6 +_0809A688: + lsls r4, r6, 2 + ldr r0, [r5] + adds r0, r4 + adds r0, 0x2 + bl sub_8099DA0 + ldr r1, [r5] + adds r4, r1 + strh r0, [r4, 0x2] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldrb r1, [r5, 0x4] + cmp r6, r1 + bcc _0809A688 +_0809A6A6: + ldrb r0, [r5, 0x4] + lsls r0, 2 + bl sub_8002BB0 + mov r8, r0 + ldr r0, [r5] + adds r0, r7 + mov r1, r10 + lsls r2, r1, 1 + ldr r4, _0809A71C @ =0x001fffff + ands r2, r4 + mov r1, r8 + bl CpuSet + ldr r0, [r5] + mov r2, r10 + lsls r1, r2, 2 + add r1, r8 + mov r2, r9 + ands r2, r4 + mov r9, r2 + bl CpuSet + ldr r1, [r5] + ldrb r2, [r5, 0x4] + lsls r2, 1 + ands r2, r4 + mov r0, r8 + bl CpuSet + movs r6, 0 + ldrb r0, [r5, 0x4] + cmp r6, r0 + bcs _0809A704 +_0809A6EA: + lsls r0, r6, 2 + ldr r1, [r5] + adds r1, r0 + adds r0, r1, 0x2 + ldrh r1, [r1, 0x2] + bl sub_8099DBC + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldrb r1, [r5, 0x4] + cmp r6, r1 + bcc _0809A6EA +_0809A704: + mov r0, r8 + bl sub_8002BC4 +_0809A70A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809A71C: .4byte 0x001fffff + thumb_func_end sub_809A5E4 + + thumb_func_start sub_809A720 +sub_809A720: @ 809A720 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r3, 0 + b _0809A786 +_0809A72C: + adds r1, r3, 0x1 + lsls r0, r1, 16 + lsrs r5, r0, 16 + mov r8, r1 + cmp r5, r2 + bcs _0809A780 + lsls r7, r3, 2 +_0809A73A: + ldr r0, [r6] + adds r0, r7 + adds r0, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsls r4, r5, 2 + cmp r0, 0 + beq _0809A76A + ldr r0, [r6] + adds r0, r4 + adds r0, 0x2 + bl sub_8099DA0 + lsls r0, 16 + cmp r0, 0 + beq _0809A774 + ldr r0, [r6] + adds r1, r7, r0 + adds r0, r4, r0 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + bls _0809A774 +_0809A76A: + ldr r1, [r6] + adds r0, r1, r7 + adds r1, r4 + bl sub_809A578 +_0809A774: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldrb r0, [r6, 0x4] + cmp r5, r0 + bcc _0809A73A +_0809A780: + mov r1, r8 + lsls r0, r1, 16 + lsrs r3, r0, 16 +_0809A786: + ldrb r2, [r6, 0x4] + cmp r3, r2 + bcc _0809A72C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809A720 + + thumb_func_start sub_809A798 +sub_809A798: @ 809A798 + lsls r0, 24 + lsls r1, 16 + ldr r2, _0809A7B0 @ =gUnknown_203988C + lsrs r0, 21 + subs r0, 0x8 + adds r0, r2 + ldr r0, [r0] + lsrs r1, 14 + adds r1, r0 + ldrh r0, [r1] + bx lr + .align 2, 0 +_0809A7B0: .4byte gUnknown_203988C + thumb_func_end sub_809A798 + + thumb_func_start sub_809A7B4 +sub_809A7B4: @ 809A7B4 + push {lr} + lsls r0, 24 + lsls r1, 16 + ldr r2, _0809A7D8 @ =gUnknown_203988C + lsrs r0, 21 + subs r0, 0x8 + adds r0, r2 + lsrs r1, 14 + ldr r0, [r0] + adds r0, r1 + adds r0, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_0809A7D8: .4byte gUnknown_203988C + thumb_func_end sub_809A7B4 + + thumb_func_start sub_809A7DC +sub_809A7DC: @ 809A7DC + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 21 + ldr r1, _0809A7F4 @ =gUnknown_2039884 + adds r3, r0, r1 + movs r2, 0 + b _0809A816 + .align 2, 0 +_0809A7F4: .4byte gUnknown_2039884 +_0809A7F8: + ldr r0, [r3] + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, r4 + bne _0809A810 + adds r0, r1, 0x2 + bl sub_8099DA0 + lsls r0, 16 + lsrs r0, 16 + b _0809A81E +_0809A810: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 +_0809A816: + ldrb r0, [r3, 0x4] + cmp r2, r0 + bcc _0809A7F8 + movs r0, 0 +_0809A81E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809A7DC + + thumb_func_start sub_809A824 +sub_809A824: @ 809A824 + push {r4,r5,lr} + lsls r0, 16 + lsrs r5, r0, 16 + ldr r1, _0809A894 @ =0xfea30000 + adds r0, r1 + lsrs r0, 16 + cmp r0, 0xD + bls _0809A85A + movs r0, 0xB7 + lsls r0, 1 + cmp r5, r0 + beq _0809A85A + adds r0, 0x2 + cmp r5, r0 + beq _0809A85A + adds r0, 0x1 + cmp r5, r0 + beq _0809A85A + adds r0, 0x3 + cmp r5, r0 + beq _0809A85A + adds r0, 0x1 + cmp r5, r0 + beq _0809A85A + adds r0, 0x1 + cmp r5, r0 + bne _0809A88C +_0809A85A: + ldr r0, _0809A898 @ =0x00000169 + cmp r5, r0 + bne _0809A86E + ldr r0, _0809A89C @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x81 + lsls r0, 2 + cmp r1, r0 + bne _0809A88C +_0809A86E: + movs r0, 0x4 + bl sub_8002B9C + adds r4, r0, 0 + strh r5, [r4] + ldr r0, _0809A8A0 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x14] + strb r0, [r4, 0x2] + movs r0, 0x28 + adds r1, r4, 0 + bl sub_8113550 + adds r0, r4, 0 + bl sub_8002BC4 +_0809A88C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809A894: .4byte 0xfea30000 +_0809A898: .4byte 0x00000169 +_0809A89C: .4byte gUnknown_3005008 +_0809A8A0: .4byte gUnknown_2036DFC + thumb_func_end sub_809A824 + + thumb_func_start sub_809A8A4 +sub_809A8A4: @ 809A8A4 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0xBB + lsls r0, 1 + cmp r1, r0 + bhi _0809A8B6 + adds r0, r1, 0 + b _0809A8B8 +_0809A8B6: + movs r0, 0 +_0809A8B8: + pop {r1} + bx r1 + thumb_func_end sub_809A8A4 + + thumb_func_start sub_809A8BC +sub_809A8BC: @ 809A8BC + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + ldr r1, _0809A8D8 @ =gUnknown_83DB028 + adds r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_0809A8D8: .4byte gUnknown_83DB028 + thumb_func_end sub_809A8BC + + thumb_func_start sub_809A8DC +sub_809A8DC: @ 809A8DC + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A8FC @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrh r0, [r0, 0xE] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A8FC: .4byte gUnknown_83DB028 + thumb_func_end sub_809A8DC + + thumb_func_start sub_809A900 +sub_809A900: @ 809A900 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A920 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrh r0, [r0, 0x10] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A920: .4byte gUnknown_83DB028 + thumb_func_end sub_809A900 + + thumb_func_start sub_809A924 +sub_809A924: @ 809A924 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A944 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x12] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A944: .4byte gUnknown_83DB028 + thumb_func_end sub_809A924 + + thumb_func_start sub_809A948 +sub_809A948: @ 809A948 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A968 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x13] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A968: .4byte gUnknown_83DB028 + thumb_func_end sub_809A948 + + thumb_func_start sub_809A96C +sub_809A96C: @ 809A96C + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A98C @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r4, 0x14 + adds r0, r4 + ldr r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A98C: .4byte gUnknown_83DB028 + thumb_func_end sub_809A96C + + thumb_func_start sub_809A990 +sub_809A990: @ 809A990 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A9B0 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x18] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A9B0: .4byte gUnknown_83DB028 + thumb_func_end sub_809A990 + + thumb_func_start sub_809A9B4 +sub_809A9B4: @ 809A9B4 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A9D4 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x19] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A9D4: .4byte gUnknown_83DB028 + thumb_func_end sub_809A9B4 + + thumb_func_start sub_809A9D8 +sub_809A9D8: @ 809A9D8 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809A9F8 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x1A] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A9F8: .4byte gUnknown_83DB028 + thumb_func_end sub_809A9D8 + + thumb_func_start sub_809A9FC +sub_809A9FC: @ 809A9FC + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809AA1C @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x1B] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA1C: .4byte gUnknown_83DB028 + thumb_func_end sub_809A9FC + + thumb_func_start sub_809AA20 +sub_809AA20: @ 809AA20 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809AA40 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r4, 0x1C + adds r0, r4 + ldr r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA40: .4byte gUnknown_83DB028 + thumb_func_end sub_809AA20 + + thumb_func_start sub_809AA44 +sub_809AA44: @ 809AA44 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809AA64 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA64: .4byte gUnknown_83DB028 + thumb_func_end sub_809AA44 + + thumb_func_start sub_809AA68 +sub_809AA68: @ 809AA68 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809AA88 @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r4, 0x24 + adds r0, r4 + ldr r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA88: .4byte gUnknown_83DB028 + thumb_func_end sub_809AA68 + + thumb_func_start sub_809AA8C +sub_809AA8C: @ 809AA8C + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0809AAAC @ =gUnknown_83DB028 + bl sub_809A8A4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2C + muls r0, r1 + adds r0, r4 + adds r0, 0x28 + ldrb r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AAAC: .4byte gUnknown_83DB028 + thumb_func_end sub_809AA8C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_menu.s b/asm/item_menu.s new file mode 100644 index 000000000..cd0fe099d --- /dev/null +++ b/asm/item_menu.s @@ -0,0 +1,7021 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8107DB4 +sub_8107DB4: @ 8107DB4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r2, 0 + lsls r0, 24 + lsrs r6, r0, 24 + adds r7, r6, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + bl sub_81081AC + ldr r5, _08107DE4 @ =gUnknown_203AD10 + movs r0, 0x14 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + bne _08107DE8 + adds r0, r4, 0 + bl sub_8000544 + b _08107E9A + .align 2, 0 +_08107DE4: .4byte gUnknown_203AD10 +_08107DE8: + cmp r6, 0xB + beq _08107DF0 + ldr r0, _08107E38 @ =gUnknown_203ACFC + strb r6, [r0, 0x4] +_08107DF0: + cmp r4, 0 + beq _08107DF8 + ldr r0, _08107E38 @ =gUnknown_203ACFC + str r4, [r0] +_08107DF8: + ldr r1, [r5] + movs r0, 0 + str r0, [r1] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r2, [r5] + ldrb r1, [r2, 0x5] + movs r0, 0x31 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x5] + ldr r2, [r5] + ldrb r1, [r2, 0x5] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x5] + ldr r1, [r5] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x8] + ldr r1, [r5] + strb r0, [r1, 0x9] + cmp r6, 0x3 + bne _08107E3C + ldr r2, [r5] + ldrb r1, [r2, 0x5] + subs r0, 0xF + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + b _08107E5A + .align 2, 0 +_08107E38: .4byte gUnknown_203ACFC +_08107E3C: + cmp r7, 0x6 + bne _08107E50 + ldr r2, [r5] + ldrb r1, [r2, 0x5] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + b _08107E5A +_08107E50: + ldr r2, [r5] + ldrb r1, [r2, 0x5] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 +_08107E5A: + strb r0, [r2, 0x5] + movs r1, 0 + ldr r4, _08107EA4 @ =gUnknown_3003E50 + ldr r5, _08107EA8 @ =gUnknown_203AD30 + ldr r6, _08107EAC @ =sub_8107F10 + ldr r3, _08107EB0 @ =gUnknown_203AD10 + movs r2, 0 +_08107E68: + ldr r0, [r3] + adds r0, 0x10 + adds r0, r1 + strb r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bls _08107E68 + mov r0, r8 + cmp r0, 0x2 + bhi _08107E86 + ldr r0, _08107EB4 @ =gUnknown_203ACFC + mov r1, r8 + strh r1, [r0, 0x6] +_08107E86: + ldrb r0, [r4] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0 + strh r0, [r5] + adds r0, r6, 0 + bl sub_8000544 +_08107E9A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08107EA4: .4byte gUnknown_3003E50 +_08107EA8: .4byte gUnknown_203AD30 +_08107EAC: .4byte sub_8107F10 +_08107EB0: .4byte gUnknown_203AD10 +_08107EB4: .4byte gUnknown_203ACFC + thumb_func_end sub_8107DB4 + + thumb_func_start sub_8107EB8 +sub_8107EB8: @ 8107EB8 + push {lr} + ldr r2, _08107EC8 @ =sub_80568A8 + movs r0, 0 + movs r1, 0x3 + bl sub_8107DB4 + pop {r0} + bx r0 + .align 2, 0 +_08107EC8: .4byte sub_80568A8 + thumb_func_end sub_8107EB8 + + thumb_func_start sub_8107ECC +sub_8107ECC: @ 8107ECC + push {lr} + ldr r2, _08107EDC @ =sub_8030AEC + movs r0, 0x5 + movs r1, 0x3 + bl sub_8107DB4 + pop {r0} + bx r0 + .align 2, 0 +_08107EDC: .4byte sub_8030AEC + thumb_func_end sub_8107ECC + + thumb_func_start sub_8107EE0 +sub_8107EE0: @ 8107EE0 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80F67B8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8107EE0 + + thumb_func_start sub_8107EFC +sub_8107EFC: @ 8107EFC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_8107EFC + + thumb_func_start sub_8107F10 +sub_8107F10: @ 8107F10 + push {lr} +_08107F12: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08107F36 + bl sub_8107F3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08107F36 + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08107F12 +_08107F36: + pop {r0} + bx r0 + thumb_func_end sub_8107F10 + + thumb_func_start sub_8107F3C +sub_8107F3C: @ 8107F3C + push {r4,r5,lr} + ldr r0, _08107F58 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x13 + bls _08107F4E + b _0810811C +_08107F4E: + lsls r0, 2 + ldr r1, _08107F5C @ =_08107F60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08107F58: .4byte gUnknown_30030F0 +_08107F5C: .4byte _08107F60 + .align 2, 0 +_08107F60: + .4byte _08107FB0 + .4byte _08107FBA + .4byte _08107FC0 + .4byte _08107FC6 + .4byte _08107FD8 + .4byte _08107FDE + .4byte _08107FE4 + .4byte _08107FF6 + .4byte _08108010 + .4byte _08108020 + .4byte _08108026 + .4byte _08108034 + .4byte _08108046 + .4byte _08108054 + .4byte _0810806E + .4byte _081080B8 + .4byte _081080C8 + .4byte _081080D2 + .4byte _081080D8 + .4byte _081080DE +_08107FB0: + bl sub_80BF768 + bl sub_80F6790 + b _08108104 +_08107FBA: + bl sub_8087E64 + b _08108104 +_08107FC0: + bl sub_80088F0 + b _08108104 +_08107FC6: + bl sub_8070528 + ldr r2, _08107FD4 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + b _08108102 + .align 2, 0 +_08107FD4: .4byte gUnknown_2037AB8 +_08107FD8: + bl sub_8006B10 + b _08108104 +_08107FDE: + bl sub_80984D8 + b _08108104 +_08107FE4: + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + beq _08107FF0 + b _08108104 +_08107FF0: + bl sub_80773BC + b _08108104 +_08107FF6: + bl sub_81081D0 + lsls r0, 24 + cmp r0, 0 + beq _0810803E + ldr r0, _0810800C @ =gUnknown_203AD10 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x10] + b _08108104 + .align 2, 0 +_0810800C: .4byte gUnknown_203AD10 +_08108010: + bl sub_8108240 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810801E + b _08108134 +_0810801E: + b _08108104 +_08108020: + bl sub_810B858 + b _08108104 +_08108026: + bl sub_8108E54 + bl sub_8108A68 + bl sub_8108A84 + b _08108104 +_08108034: + bl sub_81083F4 + lsls r0, 24 + cmp r0, 0 + bne _08108104 +_0810803E: + bl sub_810813C + movs r0, 0x1 + b _08108136 +_08108046: + ldr r0, _08108050 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + bl sub_810842C + b _08108104 + .align 2, 0 +_08108050: .4byte gUnknown_203ACFC +_08108054: + ldr r0, _08108064 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + cmp r0, 0x3 + beq _08108068 + bl sub_81087EC + b _08108104 + .align 2, 0 +_08108064: .4byte gUnknown_203ACFC +_08108068: + bl sub_810B994 + b _08108104 +_0810806E: + ldr r4, _081080AC @ =gUnknown_203ACFC + ldrb r0, [r4, 0x4] + bl sub_8108388 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _081080B0 @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r1, r4, 0 + adds r1, 0xE + adds r1, r2, r1 + ldrh r1, [r1] + adds r4, 0x8 + adds r2, r4 + ldrh r2, [r2] + bl sub_8106FF8 + ldr r2, _081080B4 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + strh r0, [r1, 0x8] + strh r2, [r1, 0xE] + strh r2, [r1, 0x18] + b _08108104 + .align 2, 0 +_081080AC: .4byte gUnknown_203ACFC +_081080B0: .4byte gUnknown_3005E70 +_081080B4: .4byte gUnknown_3005090 +_081080B8: + ldr r0, _081080C4 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + bl sub_80984FC + b _08108104 + .align 2, 0 +_081080C4: .4byte gUnknown_203ACFC +_081080C8: + bl sub_8108888 + bl sub_81088D8 + b _08108104 +_081080D2: + bl sub_80985E4 + b _08108104 +_081080D8: + bl sub_8108C10 + b _08108104 +_081080DE: + ldr r0, _081080F0 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + cmp r0, 0x3 + bne _081080F4 + movs r0, 0x1D + bl sub_812B1F0 + b _081080FA + .align 2, 0 +_081080F0: .4byte gUnknown_203ACFC +_081080F4: + movs r0, 0x9 + bl sub_812B1F0 +_081080FA: + ldr r2, _08108114 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 +_08108102: + strb r0, [r2, 0x8] +_08108104: + ldr r1, _08108118 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08108134 + .align 2, 0 +_08108114: .4byte gUnknown_2037AB8 +_08108118: .4byte gUnknown_30030F0 +_0810811C: + ldr r0, _0810812C @ =sub_8107EFC + bl sub_80006F4 + ldr r0, _08108130 @ =sub_8107EE0 + bl sub_8000544 + movs r0, 0x1 + b _08108136 + .align 2, 0 +_0810812C: .4byte sub_8107EFC +_08108130: .4byte sub_8107EE0 +_08108134: + movs r0, 0 +_08108136: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8107F3C + + thumb_func_start sub_810813C +sub_810813C: @ 810813C + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0810816C @ =sub_8108178 + movs r1, 0 + bl sub_807741C + ldr r0, _08108170 @ =sub_8107EFC + bl sub_80006F4 + ldr r0, _08108174 @ =sub_8107EE0 + bl sub_8000544 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0810816C: .4byte sub_8108178 +_08108170: .4byte sub_8107EFC +_08108174: .4byte sub_8107EE0 + thumb_func_end sub_810813C + + thumb_func_start sub_8108178 +sub_8108178: @ 8108178 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081081A4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0810819C + ldr r0, _081081A8 @ =gUnknown_203ACFC + ldr r0, [r0] + bl sub_8000544 + bl sub_8108B04 + adds r0, r4, 0 + bl sub_8077508 +_0810819C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081081A4: .4byte gUnknown_2037AB8 +_081081A8: .4byte gUnknown_203ACFC + thumb_func_end sub_8108178 + + thumb_func_start sub_81081AC +sub_81081AC: @ 81081AC + ldr r0, _081081C0 @ =gUnknown_203AD10 + movs r1, 0 + str r1, [r0] + ldr r0, _081081C4 @ =gUnknown_203AD14 + str r1, [r0] + ldr r0, _081081C8 @ =gUnknown_203AD18 + str r1, [r0] + ldr r0, _081081CC @ =gUnknown_203AD1C + str r1, [r0] + bx lr + .align 2, 0 +_081081C0: .4byte gUnknown_203AD10 +_081081C4: .4byte gUnknown_203AD14 +_081081C8: .4byte gUnknown_203AD18 +_081081CC: .4byte gUnknown_203AD1C + thumb_func_end sub_81081AC + + thumb_func_start sub_81081D0 +sub_81081D0: @ 81081D0 + push {r4,r5,lr} + bl sub_80BF7C8 + ldr r5, _08108230 @ =gUnknown_203AD14 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + beq _08108238 + movs r1, 0 + adds r2, r4, 0 + bl memset + movs r0, 0 + bl sub_8001618 + ldr r1, _08108234 @ =gUnknown_8452CF4 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r1, [r5] + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x1 + bl sub_80F67A4 + movs r1, 0xC1 + lsls r1, 6 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + b _0810823A + .align 2, 0 +_08108230: .4byte gUnknown_203AD14 +_08108234: .4byte gUnknown_8452CF4 +_08108238: + movs r0, 0 +_0810823A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81081D0 + + thumb_func_start sub_8108240 +sub_8108240: @ 8108240 + push {r4,lr} + sub sp, 0x4 + ldr r4, _0810825C @ =gUnknown_203AD10 + ldr r0, [r4] + ldrb r0, [r0, 0x10] + cmp r0, 0x5 + bls _08108250 + b _08108368 +_08108250: + lsls r0, 2 + ldr r1, _08108260 @ =_08108264 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810825C: .4byte gUnknown_203AD10 +_08108260: .4byte _08108264 + .align 2, 0 +_08108264: + .4byte _0810827C + .4byte _08108298 + .4byte _081082D8 + .4byte _08108310 + .4byte _08108340 + .4byte _0810834C +_0810827C: + bl sub_80F6808 + ldr r1, _08108294 @ =gUnknown_8E830CC + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _08108352 + .align 2, 0 +_08108294: .4byte gUnknown_8E830CC +_08108298: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810837C + ldr r0, _081082B8 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + cmp r0, 0x3 + beq _081082C4 + ldr r0, _081082BC @ =gUnknown_8E832C0 + ldr r1, _081082C0 @ =gUnknown_203AD14 + ldr r1, [r1] + bl sub_800EBB4 + b _08108352 + .align 2, 0 +_081082B8: .4byte gUnknown_203ACFC +_081082BC: .4byte gUnknown_8E832C0 +_081082C0: .4byte gUnknown_203AD14 +_081082C4: + ldr r0, _081082D0 @ =gUnknown_8E83444 + ldr r1, _081082D4 @ =gUnknown_203AD14 + ldr r1, [r1] + bl sub_800EBB4 + b _08108352 + .align 2, 0 +_081082D0: .4byte gUnknown_8E83444 +_081082D4: .4byte gUnknown_203AD14 +_081082D8: + ldr r0, _08108304 @ =gUnknown_8E835B4 + movs r1, 0 + movs r2, 0x60 + bl sub_80703A8 + bl sub_810ADAC + lsls r0, 24 + cmp r0, 0 + bne _08108352 + ldr r0, _08108308 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + beq _08108352 + ldr r0, _0810830C @ =gUnknown_8E83604 + movs r1, 0 + movs r2, 0x20 + bl sub_80703A8 + b _08108352 + .align 2, 0 +_08108304: .4byte gUnknown_8E835B4 +_08108308: .4byte gUnknown_300500C +_0810830C: .4byte gUnknown_8E83604 +_08108310: + bl sub_810ADAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08108326 + ldr r0, _0810832C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08108334 +_08108326: + ldr r0, _08108330 @ =gUnknown_83D41E4 + b _0810834E + .align 2, 0 +_0810832C: .4byte gUnknown_300500C +_08108330: .4byte gUnknown_83D41E4 +_08108334: + ldr r0, _0810833C @ =gUnknown_83D41EC + bl sub_800EBCC + b _08108352 + .align 2, 0 +_0810833C: .4byte gUnknown_83D41EC +_08108340: + ldr r0, _08108348 @ =gUnknown_83D41F4 + bl sub_800EC28 + b _08108352 + .align 2, 0 +_08108348: .4byte gUnknown_83D41F4 +_0810834C: + ldr r0, _08108360 @ =gUnknown_83D4240 +_0810834E: + bl sub_800EBCC +_08108352: + ldr r0, _08108364 @ =gUnknown_203AD10 + ldr r1, [r0] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _0810837C + .align 2, 0 +_08108360: .4byte gUnknown_83D4240 +_08108364: .4byte gUnknown_203AD10 +_08108368: + ldr r0, _08108378 @ =gUnknown_83D4248 + bl sub_800EC28 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x10] + movs r0, 0x1 + b _0810837E + .align 2, 0 +_08108378: .4byte gUnknown_83D4248 +_0810837C: + movs r0, 0 +_0810837E: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8108240 + + thumb_func_start sub_8108388 +sub_8108388: @ 8108388 + push {lr} + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x6 + cmp r0, 0x4 + bhi _081083E0 + lsls r0, 2 + ldr r1, _081083A0 @ =_081083A4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081083A0: .4byte _081083A4 + .align 2, 0 +_081083A4: + .4byte _081083B8 + .4byte _081083D0 + .4byte _081083D8 + .4byte _081083C0 + .4byte _081083C8 +_081083B8: + ldr r0, _081083BC @ =sub_810AF9C + b _081083E2 + .align 2, 0 +_081083BC: .4byte sub_810AF9C +_081083C0: + ldr r0, _081083C4 @ =sub_810B1D4 + b _081083E2 + .align 2, 0 +_081083C4: .4byte sub_810B1D4 +_081083C8: + ldr r0, _081083CC @ =sub_810B5D4 + b _081083E2 + .align 2, 0 +_081083CC: .4byte sub_810B5D4 +_081083D0: + ldr r0, _081083D4 @ =sub_810B4BC + b _081083E2 + .align 2, 0 +_081083D4: .4byte sub_810B4BC +_081083D8: + ldr r0, _081083DC @ =sub_810B378 + b _081083E2 + .align 2, 0 +_081083DC: .4byte sub_810B378 +_081083E0: + ldr r0, _081083F0 @ =sub_8108F0C +_081083E2: + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_081083F0: .4byte sub_8108F0C + thumb_func_end sub_8108388 + + thumb_func_start sub_81083F4 +sub_81083F4: @ 81083F4 + push {r4,lr} + ldr r4, _08108418 @ =gUnknown_203AD18 + movs r0, 0xAC + lsls r0, 1 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _08108424 + ldr r4, _0810841C @ =gUnknown_203AD1C + ldr r0, _08108420 @ =0x00000331 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _08108424 + movs r0, 0x1 + b _08108426 + .align 2, 0 +_08108418: .4byte gUnknown_203AD18 +_0810841C: .4byte gUnknown_203AD1C +_08108420: .4byte 0x00000331 +_08108424: + movs r0, 0 +_08108426: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81083F4 + + thumb_func_start sub_810842C +sub_810842C: @ 810842C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, r7, 3 + ldr r0, _0810853C @ =gUnknown_203988C + adds r1, r0 + mov r8, r1 + movs r6, 0 + ldr r0, _08108540 @ =gUnknown_203AD10 + ldr r0, [r0] + adds r0, 0xA + adds r0, r7 + ldrb r0, [r0] + cmp r6, r0 + bcs _0810848C + ldr r5, _08108544 @ =gUnknown_203AD1C +_08108450: + lsls r2, r6, 2 + adds r4, r2, r6 + lsls r4, 2 + subs r4, r6 + ldr r0, [r5] + adds r0, r4 + mov r3, r8 + ldr r1, [r3] + adds r2, r1 + ldrh r1, [r2] + bl sub_8108560 + ldr r0, _08108548 @ =gUnknown_203AD18 + ldr r0, [r0] + lsls r1, r6, 3 + adds r1, r0 + ldr r0, [r5] + adds r0, r4 + str r0, [r1] + str r6, [r1, 0x4] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _08108540 @ =gUnknown_203AD10 + ldr r0, [r0] + adds r0, 0xA + adds r0, r7 + ldrb r0, [r0] + cmp r6, r0 + bcc _08108450 +_0810848C: + ldr r5, _08108544 @ =gUnknown_203AD1C + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 2 + subs r4, r6 + ldr r0, [r5] + adds r0, r4 + ldr r1, _0810854C @ =gUnknown_8452F60 + bl sub_8008D84 + ldr r0, [r5] + adds r0, r4 + ldr r1, _08108550 @ =gUnknown_84161C1 + bl sub_8008DA4 + ldr r0, _08108548 @ =gUnknown_203AD18 + ldr r2, [r0] + lsls r1, r6, 3 + adds r1, r2 + ldr r0, [r5] + adds r0, r4 + str r0, [r1] + str r6, [r1, 0x4] + ldr r3, _08108554 @ =gUnknown_3005E70 + str r2, [r3] + ldr r0, _08108540 @ =gUnknown_203AD10 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0xA + adds r0, r7 + ldrb r0, [r0] + adds r0, 0x1 + movs r1, 0 + strh r0, [r3, 0xC] + strb r1, [r3, 0x10] + strb r1, [r3, 0x11] + movs r0, 0x9 + strb r0, [r3, 0x12] + movs r0, 0x1 + strb r0, [r3, 0x13] + ldrb r0, [r3, 0x16] + movs r4, 0x8 + negs r4, r4 + ands r4, r0 + movs r0, 0x39 + negs r0, r0 + ands r4, r0 + movs r0, 0x10 + orrs r4, r0 + strb r4, [r3, 0x16] + ldrb r0, [r3, 0x14] + movs r1, 0x10 + negs r1, r1 + ands r1, r0 + movs r5, 0x2 + orrs r1, r5 + strb r1, [r3, 0x14] + adds r2, 0xD + adds r2, r7 + ldrb r0, [r2] + strh r0, [r3, 0xE] + ldrb r0, [r3, 0x17] + movs r2, 0x40 + negs r2, r2 + ands r2, r0 + orrs r2, r5 + movs r0, 0xF + ands r1, r0 + movs r0, 0x20 + orrs r1, r0 + strb r1, [r3, 0x14] + movs r0, 0x30 + strb r0, [r3, 0x15] + ldr r0, _08108558 @ =sub_81085A4 + str r0, [r3, 0x4] + ldr r0, _0810855C @ =sub_8108654 + str r0, [r3, 0x8] + movs r0, 0x3F + ands r2, r0 + strb r2, [r3, 0x17] + ands r4, r0 + strb r4, [r3, 0x16] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810853C: .4byte gUnknown_203988C +_08108540: .4byte gUnknown_203AD10 +_08108544: .4byte gUnknown_203AD1C +_08108548: .4byte gUnknown_203AD18 +_0810854C: .4byte gUnknown_8452F60 +_08108550: .4byte gUnknown_84161C1 +_08108554: .4byte gUnknown_3005E70 +_08108558: .4byte sub_81085A4 +_0810855C: .4byte sub_8108654 + thumb_func_end sub_810842C + + thumb_func_start sub_8108560 +sub_8108560: @ 8108560 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r0, _0810857C @ =0xfe940000 + adds r1, r0 + lsrs r1, 16 + cmp r1, 0x1 + bhi _08108584 + ldr r1, _08108580 @ =gUnknown_8452F66 + adds r0, r4, 0 + bl sub_8008D84 + b _0810858C + .align 2, 0 +_0810857C: .4byte 0xfe940000 +_08108580: .4byte gUnknown_8452F66 +_08108584: + ldr r1, _081085A0 @ =gUnknown_8452F60 + adds r0, r4, 0 + bl sub_8008D84 +_0810858C: + adds r0, r5, 0 + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008DA4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081085A0: .4byte gUnknown_8452F60 + thumb_func_end sub_8108560 + + thumb_func_start sub_81085A4 +sub_81085A4: @ 81085A4 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + beq _081085BA + movs r0, 0xF5 + bl sub_80722CC + bl sub_8098580 +_081085BA: + ldr r4, _08108604 @ =gUnknown_203AD10 + ldr r1, [r4] + ldrb r0, [r1, 0x4] + cmp r0, 0xFF + bne _08108644 + ldrb r1, [r1, 0x5] + lsls r1, 26 + lsrs r1, 30 + movs r0, 0x1 + eors r0, r1 + bl sub_8098940 + ldr r2, [r4] + ldr r0, _08108608 @ =gUnknown_203ACFC + ldrh r1, [r0, 0x6] + adds r0, r2, 0 + adds r0, 0xA + adds r0, r1 + ldrb r0, [r0] + cmp r0, r5 + beq _0810860C + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r5, 16 + lsrs r1, 16 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [r4] + ldrb r1, [r1, 0x5] + lsls r1, 26 + lsrs r1, 30 + bl sub_80988E8 + b _08108618 + .align 2, 0 +_08108604: .4byte gUnknown_203AD10 +_08108608: .4byte gUnknown_203ACFC +_0810860C: + ldr r0, _0810864C @ =0x00000177 + ldrb r1, [r2, 0x5] + lsls r1, 26 + lsrs r1, 30 + bl sub_80988E8 +_08108618: + ldr r4, _08108650 @ =gUnknown_203AD10 + ldr r3, [r4] + ldrb r2, [r3, 0x5] + lsls r0, r2, 26 + lsrs r0, 30 + movs r1, 0x1 + eors r1, r0 + lsls r1, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r0, [r4] + ldrb r1, [r0, 0x5] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + bne _08108644 + adds r0, r5, 0 + bl sub_8108818 +_08108644: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810864C: .4byte 0x00000177 +_08108650: .4byte gUnknown_203AD10 + thumb_func_end sub_81085A4 + + thumb_func_start sub_8108654 +sub_8108654: @ 8108654 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _08108684 @ =gUnknown_203AD10 + ldr r0, [r0] + ldrb r1, [r0, 0x4] + cmp r1, 0xFF + beq _08108690 + lsls r0, r4, 24 + lsrs r0, 24 + cmp r1, r0 + bne _08108688 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_810878C + b _08108690 + .align 2, 0 +_08108684: .4byte gUnknown_203AD10 +_08108688: + adds r0, r6, 0 + movs r1, 0xFF + bl sub_810878C +_08108690: + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _08108752 + ldr r0, _08108718 @ =gUnknown_203AD10 + ldr r0, [r0] + ldr r5, _0810871C @ =gUnknown_203ACFC + ldrh r1, [r5, 0x6] + adds r0, 0xA + adds r0, r1 + ldrb r0, [r0] + cmp r0, r4 + beq _08108752 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + adds r1, r4, 0 + bl sub_809A798 + lsls r0, 16 + lsrs r7, r0, 16 + ldrb r0, [r5, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_809A7B4 + lsls r0, 16 + lsrs r4, r0, 16 + ldrh r0, [r5, 0x6] + cmp r0, 0x1 + beq _0810872C + adds r0, r7, 0 + bl sub_809A990 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0810872C + ldr r0, _08108720 @ =gUnknown_2021CD0 + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _08108724 @ =gUnknown_2021D18 + ldr r1, _08108728 @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + str r6, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + mov r0, r8 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x6E + bl sub_810B8F0 + b _08108752 + .align 2, 0 +_08108718: .4byte gUnknown_203AD10 +_0810871C: .4byte gUnknown_203ACFC +_08108720: .4byte gUnknown_2021CD0 +_08108724: .4byte gUnknown_2021D18 +_08108728: .4byte gUnknown_84162B9 +_0810872C: + ldr r0, _08108760 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08108764 @ =0x00000296 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _08108752 + cmp r0, r7 + bne _08108752 + ldr r1, _08108768 @ =gUnknown_8452F7C + movs r0, 0x18 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + mov r0, r8 + movs r2, 0x70 + adds r3, r6, 0 + bl sub_80041B8 +_08108752: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08108760: .4byte gUnknown_3005008 +_08108764: .4byte 0x00000296 +_08108768: .4byte gUnknown_8452F7C + thumb_func_end sub_8108654 + + thumb_func_start sub_810876C +sub_810876C: @ 810876C + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_8107300 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_810878C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810876C + + thumb_func_start sub_810878C +sub_810878C: @ 810878C + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0xFF + bne _081087C8 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0x1 + adds r3, r5, 0 + bl sub_8004378 + b _081087DE +_081087C8: + ldr r2, _081087E8 @ =gUnknown_841623B + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r3, 0x1 + bl sub_810B8F0 +_081087DE: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081087E8: .4byte gUnknown_841623B + thumb_func_end sub_810878C + + thumb_func_start sub_81087EC +sub_81087EC: @ 81087EC + push {lr} + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + ldr r2, _08108810 @ =gUnknown_8452CFC + ldr r0, _08108814 @ =gUnknown_203ACFC + ldrh r1, [r0, 0x6] + lsls r0, r1, 2 + adds r0, r2 + ldr r0, [r0] + lsls r1, 24 + lsrs r1, 24 + bl sub_810B958 + pop {r0} + bx r0 + .align 2, 0 +_08108810: .4byte gUnknown_8452CFC +_08108814: .4byte gUnknown_203ACFC + thumb_func_end sub_81087EC + + thumb_func_start sub_8108818 +sub_8108818: @ 8108818 + push {r4,lr} + sub sp, 0x14 + adds r2, r0, 0 + ldr r0, _0810884C @ =gUnknown_203AD10 + ldr r0, [r0] + ldr r1, _08108850 @ =gUnknown_203ACFC + ldrh r1, [r1, 0x6] + adds r0, 0xA + adds r0, r1 + ldrb r0, [r0] + cmp r2, r0 + beq _08108854 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r2, 16 + lsrs r1, 16 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A96C + adds r4, r0, 0 + b _08108856 + .align 2, 0 +_0810884C: .4byte gUnknown_203AD10 +_08108850: .4byte gUnknown_203ACFC +_08108854: + ldr r4, _08108884 @ =gUnknown_84162F5 +_08108856: + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x3 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_810B8F0 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108884: .4byte gUnknown_84162F5 + thumb_func_end sub_8108818 + + thumb_func_start sub_8108888 +sub_8108888: @ 8108888 + push {r4,lr} + sub sp, 0x10 + ldr r4, _081088D0 @ =gUnknown_203AD10 + ldr r1, [r4] + ldr r2, _081088D4 @ =gUnknown_203ACFC + ldrh r3, [r2, 0x6] + adds r0, r1, 0 + adds r0, 0xA + adds r0, r3 + ldrb r0, [r0] + adds r1, 0xD + adds r1, r3 + ldrb r1, [r1] + subs r0, r1 + adds r0, 0x1 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + ldrh r0, [r2, 0x6] + lsls r0, 1 + adds r2, 0xE + adds r0, r2 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xA0 + movs r2, 0x8 + movs r3, 0x68 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081088D0: .4byte gUnknown_203AD10 +_081088D4: .4byte gUnknown_203ACFC + thumb_func_end sub_8108888 + + thumb_func_start sub_81088D8 +sub_81088D8: @ 81088D8 + push {r4,lr} + ldr r4, _081088FC @ =gUnknown_203AD10 + ldr r0, [r4] + ldrb r1, [r0, 0x5] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _081088F4 + ldr r0, _08108900 @ =gUnknown_8452F6C + ldr r1, _08108904 @ =gUnknown_203AD02 + bl sub_8133A20 + ldr r1, [r4] + strb r0, [r1, 0x9] +_081088F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081088FC: .4byte gUnknown_203AD10 +_08108900: .4byte gUnknown_8452F6C +_08108904: .4byte gUnknown_203AD02 + thumb_func_end sub_81088D8 + + thumb_func_start sub_8108908 +sub_8108908: @ 8108908 + push {r4,lr} + sub sp, 0x10 + ldr r4, _0810893C @ =gUnknown_203AD10 + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0x6] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r1, 0x6 + str r1, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x98 + movs r2, 0x48 + movs r3, 0x68 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810893C: .4byte gUnknown_203AD10 + thumb_func_end sub_8108908 + + thumb_func_start sub_8108940 +sub_8108940: @ 8108940 + push {r4,lr} + sub sp, 0x10 + ldr r4, _08108974 @ =gUnknown_203AD10 + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0x6] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r1, 0x6 + str r1, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xD4 + movs r2, 0x78 + movs r3, 0x98 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108974: .4byte gUnknown_203AD10 + thumb_func_end sub_8108940 + + thumb_func_start sub_8108978 +sub_8108978: @ 8108978 + push {r4,lr} + ldr r4, _08108998 @ =gUnknown_203AD10 + ldr r1, [r4] + ldrb r0, [r1, 0x8] + cmp r0, 0xFF + beq _0810898E + bl sub_8133C30 + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1, 0x8] +_0810898E: + bl sub_810899C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108998: .4byte gUnknown_203AD10 + thumb_func_end sub_8108978 + + thumb_func_start sub_810899C +sub_810899C: @ 810899C + push {r4,lr} + ldr r4, _081089B8 @ =gUnknown_203AD10 + ldr r1, [r4] + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _081089B2 + bl sub_8133C30 + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1, 0x9] +_081089B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081089B8: .4byte gUnknown_203AD10 + thumb_func_end sub_810899C + + thumb_func_start sub_81089BC +sub_81089BC: @ 81089BC + push {r4,r5,lr} + ldr r0, _081089F0 @ =gUnknown_203ACFC + movs r2, 0 + movs r1, 0 + strh r1, [r0, 0x6] + strb r2, [r0, 0x5] + movs r2, 0 + adds r5, r0, 0 + adds r5, 0x8 + movs r3, 0 + adds r4, r0, 0 + adds r4, 0xE +_081089D4: + lsls r1, r2, 1 + adds r0, r1, r5 + strh r3, [r0] + adds r1, r4 + strh r3, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _081089D4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081089F0: .4byte gUnknown_203ACFC + thumb_func_end sub_81089BC + + thumb_func_start sub_81089F4 +sub_81089F4: @ 81089F4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _08108A60 @ =gUnknown_203ACFC + lsls r1, r4, 1 + adds r0, r2, 0 + adds r0, 0xE + adds r3, r1, r0 + ldrh r0, [r3] + adds r7, r2, 0 + ldr r6, _08108A64 @ =gUnknown_203AD10 + cmp r0, 0 + beq _08108A2E + adds r2, r0, 0 + ldr r1, [r6] + adds r0, r1, 0 + adds r0, 0xD + adds r0, r4 + ldrb r5, [r0] + adds r2, r5 + adds r1, 0xA + adds r1, r4 + ldrb r1, [r1] + adds r0, r1, 0x1 + cmp r2, r0 + ble _08108A2E + subs r0, r5, 0x1 + subs r0, r1, r0 + strh r0, [r3] +_08108A2E: + lsls r2, r4, 1 + adds r0, r7, 0 + adds r0, 0xE + adds r0, r2, r0 + ldrh r1, [r0] + adds r0, r7, 0 + adds r0, 0x8 + adds r2, r0 + ldrh r0, [r2] + adds r1, r0 + ldr r0, [r6] + adds r0, 0xA + adds r0, r4 + ldrb r0, [r0] + adds r3, r0, 0x1 + cmp r1, r3 + blt _08108A58 + cmp r3, 0x1 + bgt _08108A56 + movs r0, 0 +_08108A56: + strh r0, [r2] +_08108A58: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08108A60: .4byte gUnknown_203ACFC +_08108A64: .4byte gUnknown_203AD10 + thumb_func_end sub_81089F4 + + thumb_func_start sub_8108A68 +sub_8108A68: @ 8108A68 + push {r4,lr} + movs r4, 0 +_08108A6C: + adds r0, r4, 0 + bl sub_81089F4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _08108A6C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8108A68 + + thumb_func_start sub_8108A84 +sub_8108A84: @ 8108A84 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + ldr r0, _08108AF8 @ =gUnknown_203AD04 + mov r8, r0 +_08108A90: + lsls r2, r6, 1 + mov r3, r8 + adds r1, r2, r3 + ldrh r0, [r1] + adds r7, r6, 0x1 + cmp r0, 0x3 + bls _08108AE6 + movs r5, 0 + subs r0, 0x3 + cmp r5, r0 + bgt _08108AE6 + ldr r0, _08108AFC @ =gUnknown_203AD0A + ldr r3, _08108B00 @ =gUnknown_203AD10 + mov r12, r3 + adds r4, r2, r0 + adds r3, r1, 0 +_08108AB0: + ldrh r2, [r4] + mov r0, r12 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xD + adds r0, r6 + ldrb r0, [r0] + adds r2, r0 + adds r1, 0xA + adds r1, r6 + ldrb r0, [r1] + adds r0, 0x1 + cmp r2, r0 + beq _08108AE6 + ldrh r0, [r3] + subs r0, 0x1 + strh r0, [r3] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r3] + subs r0, 0x3 + cmp r5, r0 + ble _08108AB0 +_08108AE6: + lsls r0, r7, 24 + lsrs r6, r0, 24 + cmp r6, 0x2 + bls _08108A90 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08108AF8: .4byte gUnknown_203AD04 +_08108AFC: .4byte gUnknown_203AD0A +_08108B00: .4byte gUnknown_203AD10 + thumb_func_end sub_8108A84 + + thumb_func_start sub_8108B04 +sub_8108B04: @ 8108B04 + push {lr} + ldr r0, _08108B40 @ =gUnknown_203AD10 + ldr r0, [r0] + cmp r0, 0 + beq _08108B12 + bl sub_8002BC4 +_08108B12: + ldr r0, _08108B44 @ =gUnknown_203AD14 + ldr r0, [r0] + cmp r0, 0 + beq _08108B1E + bl sub_8002BC4 +_08108B1E: + ldr r0, _08108B48 @ =gUnknown_203AD18 + ldr r0, [r0] + cmp r0, 0 + beq _08108B2A + bl sub_8002BC4 +_08108B2A: + ldr r0, _08108B4C @ =gUnknown_203AD1C + ldr r0, [r0] + cmp r0, 0 + beq _08108B36 + bl sub_8002BC4 +_08108B36: + bl sub_8003ECC + pop {r0} + bx r0 + .align 2, 0 +_08108B40: .4byte gUnknown_203AD10 +_08108B44: .4byte gUnknown_203AD14 +_08108B48: .4byte gUnknown_203AD18 +_08108B4C: .4byte gUnknown_203AD1C + thumb_func_end sub_8108B04 + + thumb_func_start sub_8108B50 +sub_8108B50: @ 8108B50 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r1, _08108B84 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08108B88 @ =sub_8108B8C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108B84: .4byte gUnknown_3005090 +_08108B88: .4byte sub_8108B8C + thumb_func_end sub_8108B50 + + thumb_func_start sub_8108B8C +sub_8108B8C: @ 8108B8C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08108BE0 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r0, _08108BE4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08108C08 + ldr r0, _08108BE8 @ =sub_8108CFC + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08108C08 + ldrb r0, [r4] + ldr r4, _08108BEC @ =gUnknown_203ACFC + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r1, r4, 0 + adds r1, 0xE + adds r1, r2, r1 + adds r3, r4, 0 + adds r3, 0x8 + adds r2, r3 + bl sub_810713C + ldr r0, _08108BF0 @ =gUnknown_203AD10 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _08108BF4 + bl sub_8000544 + b _08108BFA + .align 2, 0 +_08108BE0: .4byte gUnknown_3005098 +_08108BE4: .4byte gUnknown_2037AB8 +_08108BE8: .4byte sub_8108CFC +_08108BEC: .4byte gUnknown_203ACFC +_08108BF0: .4byte gUnknown_203AD10 +_08108BF4: + ldr r0, [r4] + bl sub_8000544 +_08108BFA: + bl sub_8108978 + bl sub_8108B04 + adds r0, r5, 0 + bl sub_8077508 +_08108C08: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8108B8C + + thumb_func_start sub_8108C10 +sub_8108C10: @ 8108C10 + push {r4,r5,lr} + sub sp, 0x8 + movs r5, 0 + add r0, sp, 0x4 + strh r5, [r0] + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x3F + bl sub_8000A38 + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r4, _08108C68 @ =gUnknown_203ACFC + ldrb r0, [r4, 0x5] + cmp r0, 0x1 + bne _08108C6C + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + b _08108C9E + .align 2, 0 +_08108C68: .4byte gUnknown_203ACFC +_08108C6C: + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xA0 + bl sub_8000A38 + ldr r0, _08108CA8 @ =sub_8108CFC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08108CAC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0xC0 + strh r0, [r1, 0x8] + ldr r0, _08108CB0 @ =0x0000fff0 + strh r0, [r1, 0xA] + movs r0, 0x1 + strb r0, [r4, 0x5] +_08108C9E: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08108CA8: .4byte sub_8108CFC +_08108CAC: .4byte gUnknown_3005090 +_08108CB0: .4byte 0x0000fff0 + thumb_func_end sub_8108C10 + + thumb_func_start sub_8108CB4 +sub_8108CB4: @ 8108CB4 + push {lr} + ldr r0, _08108CE0 @ =sub_8108CFC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08108CE4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + ldr r0, _08108CE8 @ =0x0000fff0 + strh r0, [r1, 0x8] + movs r0, 0x10 + strh r0, [r1, 0xA] + ldr r0, _08108CEC @ =gUnknown_203ACFC + strb r2, [r0, 0x5] + pop {r0} + bx r0 + .align 2, 0 +_08108CE0: .4byte sub_8108CFC +_08108CE4: .4byte gUnknown_3005090 +_08108CE8: .4byte 0x0000fff0 +_08108CEC: .4byte gUnknown_203ACFC + thumb_func_end sub_8108CB4 + + thumb_func_start sub_8108CF0 +sub_8108CF0: @ 8108CF0 + ldr r1, _08108CF8 @ =gUnknown_203ACFC + movs r0, 0 + strb r0, [r1, 0x5] + bx lr + .align 2, 0 +_08108CF8: .4byte gUnknown_203ACFC + thumb_func_end sub_8108CF0 + + thumb_func_start sub_8108CFC +sub_8108CFC: @ 8108CFC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08108D28 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r0, [r4, 0x2] + ldrh r1, [r4] + adds r0, r1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA0 + ble _08108D2C + movs r0, 0x44 + movs r1, 0xA0 + bl sub_8000A38 + b _08108D34 + .align 2, 0 +_08108D28: .4byte gUnknown_3005098 +_08108D2C: + ldrh r1, [r4] + movs r0, 0x44 + bl sub_8000A38 +_08108D34: + movs r2, 0x2 + ldrsh r1, [r4, r2] + cmp r1, 0x10 + bne _08108D44 + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0xA0 + beq _08108D54 +_08108D44: + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bne _08108D5A + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08108D5A +_08108D54: + adds r0, r5, 0 + bl sub_8077508 +_08108D5A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8108CFC + + thumb_func_start sub_8108D60 +sub_8108D60: @ 8108D60 + push {r4-r6,lr} + adds r4, r0, 0 + adds r3, r2, 0 + cmp r1, r3 + beq _08108DC0 + lsls r0, r1, 2 + adds r0, r4 + ldr r6, [r0] + cmp r3, r1 + bls _08108D98 + subs r3, 0x1 + lsls r1, 16 + lsls r0, r3, 16 + asrs r2, r0, 16 + cmp r1, r0 + bge _08108DBA + adds r5, r2, 0 +_08108D82: + asrs r2, r1, 16 + lsls r0, r2, 2 + adds r0, r4 + ldr r1, [r0, 0x4] + str r1, [r0] + adds r2, 0x1 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, r5 + blt _08108D82 + b _08108DBA +_08108D98: + lsls r1, 16 + lsls r0, r3, 16 + asrs r2, r0, 16 + cmp r1, r0 + ble _08108DBA + adds r5, r2, 0 +_08108DA4: + asrs r2, r1, 16 + lsls r1, r2, 2 + adds r1, r4 + subs r0, r1, 0x4 + ldr r0, [r0] + str r0, [r1] + subs r2, 0x1 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, r5 + bgt _08108DA4 +_08108DBA: + lsls r0, r3, 2 + adds r0, r4 + str r6, [r0] +_08108DC0: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8108D60 + + thumb_func_start sub_8108DC8 +sub_8108DC8: @ 8108DC8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, r5, 3 + ldr r0, _08108E3C @ =gUnknown_203988C + adds r4, r1, r0 + ldr r0, [r4] + ldrb r1, [r4, 0x4] + bl sub_809A584 + ldr r3, _08108E40 @ =gUnknown_203AD10 + ldr r0, [r3] + adds r0, 0xA + adds r0, r5 + movs r1, 0 + strb r1, [r0] + movs r2, 0 + ldrb r0, [r4, 0x4] + cmp r2, r0 + bcs _08108E1C + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _08108E1C +_08108DF8: + ldr r0, [r3] + adds r0, 0xA + adds r0, r5 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrb r0, [r4, 0x4] + cmp r2, r0 + bcs _08108E1C + ldr r0, [r4] + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08108DF8 +_08108E1C: + ldr r0, _08108E40 @ =gUnknown_203AD10 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xA + adds r0, r5 + ldrb r0, [r0] + adds r2, r0, 0x1 + cmp r2, 0x6 + ble _08108E44 + adds r0, r1, 0 + adds r0, 0xD + adds r0, r5 + movs r1, 0x6 + strb r1, [r0] + b _08108E4C + .align 2, 0 +_08108E3C: .4byte gUnknown_203988C +_08108E40: .4byte gUnknown_203AD10 +_08108E44: + adds r0, r1, 0 + adds r0, 0xD + adds r0, r5 + strb r2, [r0] +_08108E4C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8108DC8 + + thumb_func_start sub_8108E54 +sub_8108E54: @ 8108E54 + push {r4,lr} + movs r4, 0 +_08108E58: + adds r0, r4, 0 + bl sub_8108DC8 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _08108E58 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8108E54 + + thumb_func_start sub_8108E70 +sub_8108E70: @ 8108E70 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + mov r9, r3 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08108EDC @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x5 + bl sub_810BA70 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x14] + movs r1, 0x11 + bl sub_800445C + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4, 0x14] + str r6, [sp] + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r2, 0x6D + movs r3, 0xD + bl sub_80BF474 + movs r0, 0 + bl sub_80F67A4 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08108EDC: .4byte gUnknown_3005098 + thumb_func_end sub_8108E70 + + thumb_func_start sub_8108EE0 +sub_8108EE0: @ 8108EE0 + ldr r1, _08108EE8 @ =gUnknown_203AD10 + ldr r1, [r1] + str r0, [r1] + bx lr + .align 2, 0 +_08108EE8: .4byte gUnknown_203AD10 + thumb_func_end sub_8108EE0 + + thumb_func_start sub_8108EEC +sub_8108EEC: @ 8108EEC + lsls r0, 24 + ldr r1, _08108F08 @ =gUnknown_203ACFC + lsrs r0, 23 + adds r2, r1, 0 + adds r2, 0xE + adds r2, r0, r2 + adds r1, 0x8 + adds r0, r1 + ldrb r0, [r0] + ldrb r2, [r2] + adds r0, r2 + lsls r0, 24 + lsrs r0, 24 + bx lr + .align 2, 0 +_08108F08: .4byte gUnknown_203ACFC + thumb_func_end sub_8108EEC + + thumb_func_start sub_8108F0C +sub_8108F0C: @ 8108F0C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08108F78 @ =gUnknown_3005098 + adds r7, r0, r1 + ldr r0, _08108F7C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08108F2C + b _081090C6 +_08108F2C: + ldr r0, _08108F80 @ =sub_8108CFC + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08108F3C + b _081090C6 +_08108F3C: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08108F4A + b _081090C6 +_08108F4A: + ldr r4, _08108F84 @ =gUnknown_203ACFC + ldrb r1, [r4, 0x6] + adds r0, r6, 0 + bl sub_8109168 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08108F8C + cmp r0, 0x2 + beq _08108F94 + ldr r0, _08108F88 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08108FE4 + adds r5, r4, 0 + ldrb r0, [r5, 0x4] + cmp r0, 0 + bne _08108FE4 + b _08108FA0 + .align 2, 0 +_08108F78: .4byte gUnknown_3005098 +_08108F7C: .4byte gUnknown_2037AB8 +_08108F80: .4byte sub_8108CFC +_08108F84: .4byte gUnknown_203ACFC +_08108F88: .4byte gUnknown_30030F0 +_08108F8C: + movs r1, 0x1 + negs r1, r1 + adds r0, r6, 0 + b _08108F98 +_08108F94: + adds r0, r6, 0 + movs r1, 0x1 +_08108F98: + movs r2, 0 + bl sub_81091D0 + b _081090C6 +_08108FA0: + ldrb r0, [r7] + mov r4, sp + adds r4, 0x2 + mov r1, sp + adds r2, r4, 0 + bl sub_81072D4 + mov r0, sp + ldrh r1, [r0] + ldrh r0, [r4] + adds r1, r0 + ldr r0, _08108FE0 @ =gUnknown_203AD10 + ldr r0, [r0] + adds r0, 0xA + ldrh r5, [r5, 0x6] + adds r0, r5 + ldrb r0, [r0] + cmp r1, r0 + beq _08108FE4 + movs r0, 0x5 + bl sub_80722CC + mov r0, sp + ldrh r1, [r4] + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + adds r0, r6, 0 + bl sub_81093B8 + b _081090C6 + .align 2, 0 +_08108FE0: .4byte gUnknown_203AD10 +_08108FE4: + ldrb r0, [r7] + bl sub_8107078 + adds r4, r0, 0 + ldrb r0, [r7] + ldr r5, _08109014 @ =gUnknown_203ACFC + ldrh r2, [r5, 0x6] + lsls r2, 1 + adds r1, r5, 0 + adds r1, 0xE + adds r1, r2, r1 + adds r3, r5, 0 + adds r3, 0x8 + adds r2, r3 + bl sub_81072D4 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _08109018 + adds r0, 0x1 + cmp r4, r0 + bne _08109044 + b _081090C6 + .align 2, 0 +_08109014: .4byte gUnknown_203ACFC +_08109018: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _08109038 @ =gUnknown_203AD30 + movs r0, 0 + strh r0, [r1] + bl sub_8108CB4 + ldr r1, _0810903C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08109040 @ =sub_8108B50 + b _081090C4 + .align 2, 0 +_08109038: .4byte gUnknown_203AD30 +_0810903C: .4byte gUnknown_3005090 +_08109040: .4byte sub_8108B50 +_08109044: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08109074 @ =gUnknown_203AD10 + ldr r0, [r0] + adds r0, 0xA + ldrh r1, [r5, 0x6] + adds r0, r1 + ldrb r0, [r0] + cmp r4, r0 + bne _08109084 + ldr r1, _08109078 @ =gUnknown_203AD30 + movs r0, 0 + strh r0, [r1] + bl sub_8108CB4 + ldr r1, _0810907C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08109080 @ =sub_8108B50 + b _081090C4 + .align 2, 0 +_08109074: .4byte gUnknown_203AD10 +_08109078: .4byte gUnknown_203AD30 +_0810907C: .4byte gUnknown_3005090 +_08109080: .4byte sub_8108B50 +_08109084: + bl sub_8108978 + ldrb r0, [r7] + movs r1, 0x2 + bl sub_810876C + strh r4, [r7, 0x2] + ldrb r0, [r5, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + adds r1, r4, 0 + bl sub_809A7B4 + strh r0, [r7, 0x4] + ldrb r0, [r5, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_809A798 + ldr r1, _081090D0 @ =gUnknown_203AD30 + strh r0, [r1] + ldr r1, _081090D4 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _081090D8 @ =sub_81090DC +_081090C4: + str r1, [r0] +_081090C6: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081090D0: .4byte gUnknown_203AD30 +_081090D4: .4byte gUnknown_3005090 +_081090D8: .4byte sub_81090DC + thumb_func_end sub_8108F0C + + thumb_func_start sub_81090DC +sub_81090DC: @ 81090DC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_8109140 + ldr r1, _08109104 @ =gUnknown_8452F34 + ldr r0, _08109108 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109104: .4byte gUnknown_8452F34 +_08109108: .4byte gUnknown_203ACFC + thumb_func_end sub_81090DC + + thumb_func_start sub_810910C +sub_810910C: @ 810910C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + bl sub_8109140 + bl sub_8108888 + bl sub_81088D8 + ldr r1, _08109138 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810913C @ =sub_8108F0C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109138: .4byte gUnknown_3005090 +_0810913C: .4byte sub_8108F0C + thumb_func_end sub_810910C + + thumb_func_start sub_8109140 +sub_8109140: @ 8109140 + push {lr} + sub sp, 0x8 + movs r1, 0x6 + str r1, [sp] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0xE + movs r3, 0x1E + bl sub_80F6B08 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_8109140 + + thumb_func_start sub_8109168 +sub_8109168: @ 8109168 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _081091A4 @ =gUnknown_203AD10 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _081091C6 + bl sub_80BF630 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _081091A8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08109194 + cmp r2, 0x1 + bne _081091AC +_08109194: + cmp r4, 0 + beq _081091C6 + movs r0, 0xF6 + bl sub_80722CC + movs r0, 0x1 + b _081091C8 + .align 2, 0 +_081091A4: .4byte gUnknown_203AD10 +_081091A8: .4byte gUnknown_30030F0 +_081091AC: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _081091B8 + cmp r2, 0x2 + bne _081091C6 +_081091B8: + cmp r4, 0x1 + bhi _081091C6 + movs r0, 0xF6 + bl sub_80722CC + movs r0, 0x2 + b _081091C8 +_081091C6: + movs r0, 0 +_081091C8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8109168 + + thumb_func_start sub_81091D0 +sub_81091D0: @ 81091D0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r6, r1, 0 + lsls r2, 16 + lsls r0, r5, 2 + adds r0, r5 + lsls r7, r0, 3 + ldr r0, _08109288 @ =gUnknown_3005098 + mov r8, r0 + adds r4, r7, r0 + movs r0, 0 + strh r0, [r4, 0x1A] + strh r0, [r4, 0x18] + strh r6, [r4, 0x16] + cmp r2, 0 + bne _08109242 + movs r0, 0 + bl sub_80040B8 + movs r0, 0x1 + bl sub_80040B8 + movs r0, 0x2 + bl sub_80040B8 + ldrb r0, [r4] + ldr r3, _0810928C @ =gUnknown_203ACFC + ldrh r2, [r3, 0x6] + lsls r2, 1 + adds r1, r3, 0 + adds r1, 0xE + adds r1, r2, r1 + adds r3, 0x8 + adds r2, r3 + bl sub_810713C + movs r0, 0 + bl sub_80F67A4 + ldr r0, _08109290 @ =gUnknown_203AD10 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + lsls r1, 26 + lsrs r1, 30 + movs r0, 0x1 + eors r0, r1 + bl sub_8098940 + bl sub_8108978 +_08109242: + movs r0, 0x12 + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x2D + movs r2, 0xB + movs r3, 0x1 + bl sub_8002454 + movs r0, 0x1 + bl sub_80F67A4 + ldr r0, _0810928C @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl sub_8098528 + ldr r1, _08109294 @ =sub_8109298 + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r2, [r0] + adds r0, r5, 0 + bl sub_80775E8 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08109288: .4byte gUnknown_3005098 +_0810928C: .4byte gUnknown_203ACFC +_08109290: .4byte gUnknown_203AD10 +_08109294: .4byte sub_8109298 + thumb_func_end sub_81091D0 + + thumb_func_start sub_8109298 +sub_8109298: @ 8109298 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _081092DC @ =gUnknown_3005098 + adds r5, r0, r1 + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _08109314 + bl sub_810ADAC + lsls r0, 24 + cmp r0, 0 + bne _08109314 + ldr r4, _081092E0 @ =gUnknown_203ACFC + ldrb r1, [r5, 0x16] + ldrb r0, [r4, 0x6] + adds r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8109168 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081092E4 + cmp r0, 0x2 + beq _081092FA + b _08109314 + .align 2, 0 +_081092DC: .4byte gUnknown_3005098 +_081092E0: .4byte gUnknown_203ACFC +_081092E4: + ldrh r0, [r5, 0x16] + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r4, 0x6] + adds r0, r6, 0 + bl sub_807761C + movs r1, 0x1 + negs r1, r1 + adds r0, r6, 0 + b _0810930C +_081092FA: + ldrh r0, [r5, 0x16] + ldrh r2, [r4, 0x6] + adds r0, r2 + strh r0, [r4, 0x6] + adds r0, r6, 0 + bl sub_807761C + adds r0, r6, 0 + movs r1, 0x1 +_0810930C: + movs r2, 0x1 + bl sub_81091D0 + b _081093AA +_08109314: + movs r1, 0x1A + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08109322 + cmp r0, 0x1 + beq _08109358 + b _081093AA +_08109322: + ldrh r1, [r5, 0x18] + movs r2, 0x18 + ldrsh r0, [r5, r2] + ldr r4, _08109354 @ =0x00007fff + cmp r0, r4 + beq _0810934C + adds r0, r1, 0x1 + strh r0, [r5, 0x18] + lsls r0, 24 + lsrs r0, 24 + bl sub_8109854 + movs r1, 0x18 + ldrsh r0, [r5, r1] + cmp r0, 0xC + bne _08109344 + strh r4, [r5, 0x18] +_08109344: + movs r2, 0x18 + ldrsh r0, [r5, r2] + cmp r0, r4 + bne _081093AA +_0810934C: + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + strh r0, [r5, 0x1A] + b _081093AA + .align 2, 0 +_08109354: .4byte 0x00007fff +_08109358: + ldr r4, _081093B0 @ =gUnknown_203ACFC + ldrh r0, [r5, 0x16] + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r4, 0x6] + bl sub_81087EC + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _081093B4 @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r1, r4, 0 + adds r1, 0xE + adds r1, r2, r1 + ldrh r1, [r1] + adds r4, 0x8 + adds r2, r4 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + bl sub_8108888 + bl sub_81088D8 + adds r0, r6, 0 + bl sub_807761C +_081093AA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081093B0: .4byte gUnknown_203ACFC +_081093B4: .4byte gUnknown_3005E70 + thumb_func_end sub_8109298 + + thumb_func_start sub_81093B8 +sub_81093B8: @ 81093B8 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x18 + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, r0, 2 + adds r5, r0 + lsls r5, 3 + ldr r0, _08109494 @ =gUnknown_3005098 + mov r9, r0 + adds r1, r5, 0 + add r1, r9 + mov r8, r1 + ldrb r0, [r1] + mov r2, sp + adds r2, 0x16 + add r1, sp, 0x14 + bl sub_81072D4 + mov r2, r8 + ldrb r0, [r2] + movs r1, 0x10 + movs r2, 0x1 + bl sub_8107BD0 + mov r0, r8 + strh r4, [r0, 0x2] + ldr r0, _08109498 @ =gUnknown_203AD10 + ldr r0, [r0] + movs r6, 0 + strb r4, [r0, 0x4] + ldr r4, _0810949C @ =gUnknown_2021CD0 + ldr r0, _081094A0 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r2, r8 + ldrh r1, [r2, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r4, _081094A4 @ =gUnknown_2021D18 + ldr r1, _081094A8 @ =gUnknown_841633F + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x3 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + str r6, [sp, 0xC] + str r6, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_810B8F0 + mov r1, r8 + ldrb r0, [r1] + bl sub_8107300 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_80986A8 + movs r0, 0 + bl sub_8098660 + bl sub_810899C + mov r2, r8 + ldrb r0, [r2] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x8 + negs r0, r0 + add r9, r0 + add r5, r9 + ldr r0, _081094AC @ =sub_81094B0 + str r0, [r5] + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08109494: .4byte gUnknown_3005098 +_08109498: .4byte gUnknown_203AD10 +_0810949C: .4byte gUnknown_2021CD0 +_081094A0: .4byte gUnknown_203ACFC +_081094A4: .4byte gUnknown_2021D18 +_081094A8: .4byte gUnknown_841633F +_081094AC: .4byte sub_81094B0 + thumb_func_end sub_81093B8 + + thumb_func_start sub_81094B0 +sub_81094B0: @ 81094B0 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08109538 @ =gUnknown_3005098 + adds r4, r0, r1 + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810959E + ldrb r0, [r4] + bl sub_8107078 + adds r5, r0, 0 + ldrb r0, [r4] + ldr r3, _0810953C @ =gUnknown_203ACFC + ldrh r2, [r3, 0x6] + lsls r2, 1 + adds r1, r3, 0 + adds r1, 0xE + adds r1, r2, r1 + adds r3, 0x8 + adds r2, r3 + bl sub_81072D4 + ldrb r0, [r4] + bl sub_8107300 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_80986A8 + ldr r0, _08109540 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08109548 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08109544 @ =gUnknown_203AD10 + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r0, [r4] + mov r4, sp + adds r4, 0x2 + mov r1, sp + adds r2, r4, 0 + bl sub_81072D4 + mov r0, sp + ldrh r1, [r0] + ldrh r0, [r4] + adds r1, r0 + adds r0, r6, 0 + bl sub_81095AC + b _0810959E + .align 2, 0 +_08109538: .4byte gUnknown_3005098 +_0810953C: .4byte gUnknown_203ACFC +_08109540: .4byte gUnknown_30030F0 +_08109544: .4byte gUnknown_203AD10 +_08109548: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _08109558 + adds r0, 0x1 + cmp r5, r0 + bne _08109588 + b _0810959E +_08109558: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08109584 @ =gUnknown_203AD10 + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r0, [r4] + mov r4, sp + adds r4, 0x2 + mov r1, sp + adds r2, r4, 0 + bl sub_81072D4 + mov r0, sp + ldrh r1, [r0] + ldrh r0, [r4] + adds r1, r0 + adds r0, r6, 0 + bl sub_810967C + b _0810959E + .align 2, 0 +_08109584: .4byte gUnknown_203AD10 +_08109588: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _081095A8 @ =gUnknown_203AD10 + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1, 0x4] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_81095AC +_0810959E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081095A8: .4byte gUnknown_203AD10 + thumb_func_end sub_81094B0 + + thumb_func_start sub_81095AC +sub_81095AC: @ 81095AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r1, 0 + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + mov r9, r0 + ldr r0, _081095E4 @ =gUnknown_3005098 + mov r10, r0 + mov r6, r9 + add r6, r10 + movs r3, 0x2 + ldrsh r2, [r6, r3] + cmp r2, r5 + beq _081095DA + subs r0, r5, 0x1 + cmp r2, r0 + bne _081095E8 +_081095DA: + adds r0, r1, 0 + adds r1, r5, 0 + bl sub_810967C + b _0810965C + .align 2, 0 +_081095E4: .4byte gUnknown_3005098 +_081095E8: + ldr r1, _0810966C @ =gUnknown_203988C + ldr r4, _08109670 @ =gUnknown_203ACFC + ldrh r0, [r4, 0x6] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + adds r1, r2, 0 + adds r2, r5, 0 + bl sub_8108D60 + ldrb r0, [r6] + ldrh r2, [r4, 0x6] + lsls r2, 1 + movs r1, 0xE + adds r1, r4 + mov r8, r1 + adds r1, r2, r1 + adds r7, r4, 0 + adds r7, 0x8 + adds r2, r7 + bl sub_810713C + movs r3, 0x2 + ldrsh r0, [r6, r3] + cmp r0, r5 + bcs _08109628 + ldrh r1, [r4, 0x6] + lsls r1, 1 + adds r1, r7 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_08109628: + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _08109674 @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + mov r3, r8 + adds r1, r2, r3 + ldrh r1, [r1] + adds r2, r7 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6] + movs r0, 0x1 + bl sub_8098660 + bl sub_81088D8 + mov r0, r10 + subs r0, 0x8 + add r0, r9 + ldr r1, _08109678 @ =sub_8108F0C + str r1, [r0] +_0810965C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810966C: .4byte gUnknown_203988C +_08109670: .4byte gUnknown_203ACFC +_08109674: .4byte gUnknown_3005E70 +_08109678: .4byte sub_8108F0C + thumb_func_end sub_81095AC + + thumb_func_start sub_810967C +sub_810967C: @ 810967C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + mov r8, r1 + ldr r0, _0810970C @ =gUnknown_3005098 + mov r10, r0 + mov r6, r8 + add r6, r10 + ldrb r0, [r6] + ldr r5, _08109710 @ =gUnknown_203ACFC + ldrh r2, [r5, 0x6] + lsls r2, 1 + movs r1, 0xE + adds r1, r5 + mov r9, r1 + adds r1, r2, r1 + adds r7, r5, 0 + adds r7, 0x8 + adds r2, r7 + bl sub_810713C + movs r3, 0x2 + ldrsh r0, [r6, r3] + cmp r0, r4 + bcs _081096CA + ldrh r1, [r5, 0x6] + lsls r1, 1 + adds r1, r7 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_081096CA: + ldrb r0, [r5, 0x6] + bl sub_810842C + ldr r0, _08109714 @ =gUnknown_3005E70 + ldrh r2, [r5, 0x6] + lsls r2, 1 + mov r3, r9 + adds r1, r2, r3 + ldrh r1, [r1] + adds r2, r7 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6] + movs r0, 0x1 + bl sub_8098660 + bl sub_81088D8 + mov r0, r10 + subs r0, 0x8 + add r0, r8 + ldr r1, _08109718 @ =sub_8108F0C + str r1, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810970C: .4byte gUnknown_3005098 +_08109710: .4byte gUnknown_203ACFC +_08109714: .4byte gUnknown_3005E70 +_08109718: .4byte sub_8108F0C + thumb_func_end sub_810967C + + thumb_func_start sub_810971C +sub_810971C: @ 810971C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x14 + adds r4, r0, 0 + adds r6, r1, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x6 + movs r1, 0x2 + bl sub_810B9DC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _081097D4 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _081097D8 @ =gUnknown_2021CD0 + mov r10, r1 + bl sub_8099E90 + ldr r0, _081097DC @ =gUnknown_2021D18 + mov r9, r0 + adds r1, r6, 0 + bl sub_8008FCC + movs r0, 0x2 + str r0, [sp] + movs r1, 0x1 + mov r8, r1 + str r1, [sp, 0x4] + movs r6, 0 + str r6, [sp, 0x8] + str r6, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + mov r2, r9 + movs r3, 0 + bl sub_810B8F0 + movs r0, 0 + movs r1, 0 + bl sub_810B9DC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r0, r10 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x3 + bl sub_8008E78 + ldr r1, _081097E0 @ =gUnknown_84162B9 + mov r0, r9 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + str r6, [sp, 0xC] + str r0, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0 + mov r2, r9 + movs r3, 0x4 + bl sub_810B8F0 + bl sub_8108940 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081097D4: .4byte gUnknown_203ACFC +_081097D8: .4byte gUnknown_2021CD0 +_081097DC: .4byte gUnknown_2021D18 +_081097E0: .4byte gUnknown_84162B9 + thumb_func_end sub_810971C + + thumb_func_start sub_81097E4 +sub_81097E4: @ 81097E4 + push {r4-r6,lr} + sub sp, 0x14 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0 + bl sub_810BAD8 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + adds r0, r6, 0 + movs r1, 0x11 + bl sub_800445C + ldr r0, _08109848 @ =gUnknown_2021CD0 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + movs r2, 0x2 + adds r3, r5, 0 + bl sub_8008E78 + ldr r4, _0810984C @ =gUnknown_2021D18 + ldr r1, _08109850 @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x4 + bl sub_810B8F0 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08109848: .4byte gUnknown_2021CD0 +_0810984C: .4byte gUnknown_2021D18 +_08109850: .4byte gUnknown_84162B9 + thumb_func_end sub_81097E4 + + thumb_func_start sub_8109854 +sub_8109854: @ 8109854 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xC + subs r2, r0 + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + ldr r2, _0810988C @ =gUnknown_8452D08 + adds r1, r2 + movs r3, 0xD + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x12 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r2, 0xB + bl sub_8002124 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0810988C: .4byte gUnknown_8452D08 + thumb_func_end sub_8109854 + + thumb_func_start sub_8109890 +sub_8109890: @ 8109890 + push {r4-r7,lr} + sub sp, 0x14 + ldr r0, _081098A8 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + beq _08109924 + cmp r0, 0x6 + bgt _081098AC + cmp r0, 0x5 + beq _081098B6 + b _0810993C + .align 2, 0 +_081098A8: .4byte gUnknown_203ACFC +_081098AC: + cmp r0, 0x7 + beq _081098B6 + cmp r0, 0x8 + beq _08109924 + b _0810993C +_081098B6: + ldr r2, _081098D4 @ =gUnknown_203AD30 + ldrh r1, [r2] + ldr r0, _081098D8 @ =0x0000016d + cmp r1, r0 + bne _081098E8 + ldr r1, _081098DC @ =gUnknown_203AD20 + movs r0, 0x8 + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r0, _081098E0 @ =gUnknown_203AD24 + str r1, [r0] + ldr r1, _081098E4 @ =gUnknown_203AD28 + movs r0, 0x2 + b _08109AD0 + .align 2, 0 +_081098D4: .4byte gUnknown_203AD30 +_081098D8: .4byte 0x0000016d +_081098DC: .4byte gUnknown_203AD20 +_081098E0: .4byte gUnknown_203AD24 +_081098E4: .4byte gUnknown_203AD28 +_081098E8: + ldrh r0, [r2] + bl sub_809AA44 + lsls r0, 24 + cmp r0, 0 + beq _0810990C + ldr r1, _08109900 @ =gUnknown_203AD24 + ldr r0, _08109904 @ =gUnknown_8452F30 + str r0, [r1] + ldr r1, _08109908 @ =gUnknown_203AD28 + movs r0, 0x2 + b _08109AD0 + .align 2, 0 +_08109900: .4byte gUnknown_203AD24 +_08109904: .4byte gUnknown_8452F30 +_08109908: .4byte gUnknown_203AD28 +_0810990C: + ldr r1, _08109918 @ =gUnknown_203AD24 + ldr r0, _0810991C @ =gUnknown_8452F32 + str r0, [r1] + ldr r1, _08109920 @ =gUnknown_203AD28 + movs r0, 0x1 + b _08109AD0 + .align 2, 0 +_08109918: .4byte gUnknown_203AD24 +_0810991C: .4byte gUnknown_8452F32 +_08109920: .4byte gUnknown_203AD28 +_08109924: + ldr r1, _08109930 @ =gUnknown_203AD24 + ldr r0, _08109934 @ =gUnknown_8452F30 + str r0, [r1] + ldr r1, _08109938 @ =gUnknown_203AD28 + movs r0, 0x2 + b _08109AD0 + .align 2, 0 +_08109930: .4byte gUnknown_203AD24 +_08109934: .4byte gUnknown_8452F30 +_08109938: .4byte gUnknown_203AD28 +_0810993C: + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08109950 + bl sub_811B0D0 + cmp r0, 0x1 + bne _081099C4 +_08109950: + ldr r1, _08109970 @ =gUnknown_203AD30 + ldr r2, _08109974 @ =0xfffffe94 + adds r0, r2, 0 + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08109984 + ldr r1, _08109978 @ =gUnknown_203AD24 + ldr r0, _0810997C @ =gUnknown_8452F2E + str r0, [r1] + ldr r1, _08109980 @ =gUnknown_203AD28 + movs r0, 0x2 + b _08109AD0 + .align 2, 0 +_08109970: .4byte gUnknown_203AD30 +_08109974: .4byte 0xfffffe94 +_08109978: .4byte gUnknown_203AD24 +_0810997C: .4byte gUnknown_8452F2E +_08109980: .4byte gUnknown_203AD28 +_08109984: + ldr r0, _08109998 @ =gUnknown_203ACFC + ldrh r2, [r0, 0x6] + adds r3, r0, 0 + cmp r2, 0x1 + bne _081099A0 + ldr r0, _0810999C @ =gUnknown_203AD28 + strb r2, [r0] + adds r7, r0, 0 + b _081099A8 + .align 2, 0 +_08109998: .4byte gUnknown_203ACFC +_0810999C: .4byte gUnknown_203AD28 +_081099A0: + ldr r1, _081099B8 @ =gUnknown_203AD28 + movs r0, 0x2 + strb r0, [r1] + adds r7, r1, 0 +_081099A8: + ldr r0, _081099BC @ =gUnknown_203AD24 + ldrh r1, [r3, 0x6] + lsls r1, 1 + ldr r2, _081099C0 @ =gUnknown_8452F28 + adds r1, r2 + str r1, [r0] + b _08109AD4 + .align 2, 0 +_081099B8: .4byte gUnknown_203AD28 +_081099BC: .4byte gUnknown_203AD24 +_081099C0: .4byte gUnknown_8452F28 +_081099C4: + ldr r5, _081099D8 @ =gUnknown_203ACFC + ldrh r0, [r5, 0x6] + cmp r0, 0x1 + beq _08109A34 + cmp r0, 0x1 + bgt _081099E0 + cmp r0, 0 + beq _081099EC + ldr r7, _081099DC @ =gUnknown_203AD28 + b _08109AD4 + .align 2, 0 +_081099D8: .4byte gUnknown_203ACFC +_081099DC: .4byte gUnknown_203AD28 +_081099E0: + cmp r0, 0x2 + beq _08109AC4 + ldr r7, _081099E8 @ =gUnknown_203AD28 + b _08109AD4 + .align 2, 0 +_081099E8: .4byte gUnknown_203AD28 +_081099EC: + ldr r4, _08109A0C @ =gUnknown_203AD28 + movs r0, 0x4 + strb r0, [r4] + ldr r0, _08109A10 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08109A1C + ldr r1, _08109A14 @ =gUnknown_203AD24 + ldr r0, _08109A18 @ =gUnknown_8452F24 + str r0, [r1] + adds r7, r4, 0 + b _08109AD4 + .align 2, 0 +_08109A0C: .4byte gUnknown_203AD28 +_08109A10: .4byte gUnknown_203AD30 +_08109A14: .4byte gUnknown_203AD24 +_08109A18: .4byte gUnknown_8452F24 +_08109A1C: + ldr r0, _08109A2C @ =gUnknown_203AD24 + ldrh r1, [r5, 0x6] + lsls r1, 2 + ldr r2, _08109A30 @ =gUnknown_8452F18 + adds r1, r2 + str r1, [r0] + adds r7, r4, 0 + b _08109AD4 + .align 2, 0 +_08109A2C: .4byte gUnknown_203AD24 +_08109A30: .4byte gUnknown_8452F18 +_08109A34: + ldr r0, _08109A5C @ =gUnknown_203AD24 + ldr r2, _08109A60 @ =gUnknown_203AD20 + str r2, [r0] + ldr r3, _08109A64 @ =gUnknown_203AD28 + movs r0, 0x3 + strb r0, [r3] + movs r0, 0x4 + strb r0, [r2, 0x2] + ldr r0, _08109A68 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08109A6C @ =0x00000296 + adds r0, r1 + ldr r1, _08109A70 @ =gUnknown_203AD30 + ldrh r0, [r0] + adds r7, r3, 0 + ldrh r3, [r1] + cmp r0, r3 + bne _08109A74 + movs r0, 0xA + b _08109A76 + .align 2, 0 +_08109A5C: .4byte gUnknown_203AD24 +_08109A60: .4byte gUnknown_203AD20 +_08109A64: .4byte gUnknown_203AD28 +_08109A68: .4byte gUnknown_3005008 +_08109A6C: .4byte 0x00000296 +_08109A70: .4byte gUnknown_203AD30 +_08109A74: + movs r0, 0x2 +_08109A76: + strb r0, [r2, 0x1] + ldrh r1, [r1] + ldr r3, _08109A8C @ =0xfffffe94 + adds r0, r1, r3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08109A90 + movs r0, 0x7 + strb r0, [r2] + b _08109AD4 + .align 2, 0 +_08109A8C: .4byte 0xfffffe94 +_08109A90: + lsls r1, 16 + movs r0, 0xB4 + lsls r0, 17 + cmp r1, r0 + bne _08109AB0 + movs r0, 0x6 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08109AB0 + ldr r1, _08109AAC @ =gUnknown_203AD20 + movs r0, 0x9 + b _08109AB4 + .align 2, 0 +_08109AAC: .4byte gUnknown_203AD20 +_08109AB0: + ldr r1, _08109ABC @ =gUnknown_203AD20 + movs r0, 0 +_08109AB4: + strb r0, [r1] + ldr r7, _08109AC0 @ =gUnknown_203AD28 + b _08109AD4 + .align 2, 0 +_08109ABC: .4byte gUnknown_203AD20 +_08109AC0: .4byte gUnknown_203AD28 +_08109AC4: + ldr r1, _08109B98 @ =gUnknown_203AD24 + ldr r0, _08109B9C @ =gUnknown_8452F18 + adds r0, 0x8 + str r0, [r1] + ldr r1, _08109BA0 @ =gUnknown_203AD28 + movs r0, 0x3 +_08109AD0: + strb r0, [r1] + adds r7, r1, 0 +_08109AD4: + ldrb r1, [r7] + subs r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0xA + bl sub_810B9DC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x2 + movs r1, 0x2 + bl sub_80F79D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + ldr r0, _08109BA4 @ =gUnknown_8452EB8 + str r0, [sp, 0xC] + ldr r0, _08109B98 @ =gUnknown_203AD24 + ldr r0, [r0] + str r0, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0x2 + bl sub_810FCD0 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + ldrb r0, [r7] + str r0, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0x6 + movs r1, 0 + bl sub_810B9DC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08109BA8 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldr r1, _08109BAC @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r6, _08109BB0 @ =gUnknown_2021D18 + ldr r1, _08109BB4 @ =gUnknown_84162FF + adds r0, r6, 0 + bl sub_8008FCC + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + str r5, [sp, 0xC] + str r0, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r6, 0 + movs r3, 0 + bl sub_810B8F0 + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08109B98: .4byte gUnknown_203AD24 +_08109B9C: .4byte gUnknown_8452F18 +_08109BA0: .4byte gUnknown_203AD28 +_08109BA4: .4byte gUnknown_8452EB8 +_08109BA8: .4byte gUnknown_203AD30 +_08109BAC: .4byte gUnknown_2021CD0 +_08109BB0: .4byte gUnknown_2021D18 +_08109BB4: .4byte gUnknown_84162FF + thumb_func_end sub_8109890 + + thumb_func_start sub_8109BB8 +sub_8109BB8: @ 8109BB8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8109890 + ldr r1, _08109BDC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08109BE0 @ =sub_8109BE4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109BDC: .4byte gUnknown_3005090 +_08109BE0: .4byte sub_8109BE4 + thumb_func_end sub_8109BB8 + + thumb_func_start sub_8109BE4 +sub_8109BE4: @ 8109BE4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08109C42 + bl sub_810FA04 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _08109C42 + adds r0, 0x1 + cmp r4, r0 + bne _08109C24 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08109C20 @ =gUnknown_8452EB8 + ldr r1, [r0, 0x24] + adds r0, r5, 0 + bl _call_via_r1 + b _08109C42 + .align 2, 0 +_08109C20: .4byte gUnknown_8452EB8 +_08109C24: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _08109C48 @ =gUnknown_8452EB8 + ldr r0, _08109C4C @ =gUnknown_203AD24 + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + adds r0, r6, 0 + bl _call_via_r1 +_08109C42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08109C48: .4byte gUnknown_8452EB8 +_08109C4C: .4byte gUnknown_203AD24 + thumb_func_end sub_8109BE4 + + thumb_func_start sub_8109C50 +sub_8109C50: @ 8109C50 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _08109CA0 @ =gUnknown_203AD30 + ldrh r0, [r5] + bl sub_809AA20 + cmp r0, 0 + beq _08109CB4 + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _08109CA4 + ldrh r0, [r5] + bl sub_809A9FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08109CA4 + adds r0, r4, 0 + bl sub_810A170 + b _08109CB4 + .align 2, 0 +_08109CA0: .4byte gUnknown_203AD30 +_08109CA4: + ldr r0, _08109CBC @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809AA20 + adds r1, r0, 0 + adds r0, r4, 0 + bl _call_via_r1 +_08109CB4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08109CBC: .4byte gUnknown_203AD30 + thumb_func_end sub_8109C50 + + thumb_func_start sub_8109CC0 +sub_8109CC0: @ 8109CC0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + ldr r7, _08109D14 @ =gUnknown_3005098 + adds r4, r6, r7 + movs r0, 0xA + bl sub_810BAD8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + movs r0, 0x6 + bl sub_810BAD8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _08109D18 + adds r0, r5, 0 + bl sub_8109D38 + b _08109D2A + .align 2, 0 +_08109D14: .4byte gUnknown_3005098 +_08109D18: + ldrh r0, [r4, 0x2] + ldr r1, _08109D30 @ =gUnknown_84163DB + bl sub_810971C + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _08109D34 @ =sub_8109DEC + str r1, [r0] +_08109D2A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08109D30: .4byte gUnknown_84163DB +_08109D34: .4byte sub_8109DEC + thumb_func_end sub_8109CC0 + + thumb_func_start sub_8109D38 +sub_8109D38: @ 8109D38 + push {r4,r5,lr} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + ldr r0, _08109D9C @ =gUnknown_3005098 + adds r1, r0 + ldr r0, _08109DA0 @ =gUnknown_2021CF0 + movs r2, 0x10 + ldrsh r1, [r1, r2] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r5, _08109DA4 @ =gUnknown_2021D18 + ldr r1, _08109DA8 @ =gUnknown_8416409 + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x6 + movs r1, 0x1 + bl sub_810B9DC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + str r1, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + str r1, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_810B8F0 + ldr r1, _08109DAC @ =gUnknown_8452F50 + adds r0, r4, 0 + bl sub_810BAE8 + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08109D9C: .4byte gUnknown_3005098 +_08109DA0: .4byte gUnknown_2021CF0 +_08109DA4: .4byte gUnknown_2021D18 +_08109DA8: .4byte gUnknown_8416409 +_08109DAC: .4byte gUnknown_8452F50 + thumb_func_end sub_8109D38 + + thumb_func_start sub_8109DB0 +sub_8109DB0: @ 8109DB0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08109DE8 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810876C + adds r0, r5, 0 + bl sub_810910C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08109DE8: .4byte gUnknown_3005098 + thumb_func_end sub_8109DB0 + + thumb_func_start sub_8109DEC +sub_8109DEC: @ 8109DEC + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08109E1C @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x10 + ldrh r1, [r4, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08109E20 + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl sub_81097E4 + b _08109EA2 + .align 2, 0 +_08109E1C: .4byte gUnknown_3005098 +_08109E20: + ldr r0, _08109E60 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08109E64 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x6 + bl sub_810BAD8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_810BA3C + movs r0, 0 + bl sub_80F67A4 + bl sub_8108978 + adds r0, r5, 0 + bl sub_8109D38 + b _08109EA2 + .align 2, 0 +_08109E60: .4byte gUnknown_30030F0 +_08109E64: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08109EA2 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810876C + bl sub_8108978 + adds r0, r6, 0 + bl sub_810910C +_08109EA2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8109DEC + + thumb_func_start sub_8109EA8 +sub_8109EA8: @ 8109EA8 + push {r4-r6,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r5, _08109F28 @ =gUnknown_3005098 + adds r6, r4, r5 + movs r0, 0x6 + bl sub_810BA3C + ldr r0, _08109F2C @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08109F30 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r0, _08109F34 @ =gUnknown_2021CF0 + movs r2, 0x10 + ldrsh r1, [r6, r2] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r6, _08109F38 @ =gUnknown_2021D18 + ldr r1, _08109F3C @ =gUnknown_84163F4 + adds r0, r6, 0 + bl sub_8008FCC + movs r0, 0x6 + movs r1, 0x3 + bl sub_810B9DC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + str r1, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + str r1, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0x2 + adds r2, r6, 0 + movs r3, 0 + bl sub_810B8F0 + subs r5, 0x8 + adds r4, r5 + ldr r0, _08109F40 @ =sub_8109F44 + str r0, [r4] + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08109F28: .4byte gUnknown_3005098 +_08109F2C: .4byte gUnknown_203ACFC +_08109F30: .4byte gUnknown_2021CD0 +_08109F34: .4byte gUnknown_2021CF0 +_08109F38: .4byte gUnknown_2021D18 +_08109F3C: .4byte gUnknown_84163F4 +_08109F40: .4byte sub_8109F44 + thumb_func_end sub_8109EA8 + + thumb_func_start sub_8109F44 +sub_8109F44: @ 8109F44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _08109FEC @ =gUnknown_3005098 + adds r7, r0, r1 + ldr r0, _08109FF0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08109F6E + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08109FE0 +_08109F6E: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08109FF4 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldrh r1, [r7, 0x10] + bl sub_809A1D8 + movs r0, 0x6 + bl sub_810BA3C + ldrb r0, [r7] + ldr r4, _08109FF8 @ =gUnknown_203ACFC + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r4, 0 + adds r5, 0xE + adds r1, r2, r5 + adds r6, r4, 0 + adds r6, 0x8 + adds r2, r6 + bl sub_810713C + ldrb r0, [r4, 0x6] + bl sub_8108DC8 + ldrb r0, [r4, 0x6] + bl sub_81089F4 + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _08109FFC @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r2, r5 + ldrh r1, [r5] + adds r2, r6 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7] + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r7] + movs r1, 0x1 + bl sub_810876C + mov r0, r8 + bl sub_810910C +_08109FE0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08109FEC: .4byte gUnknown_3005098 +_08109FF0: .4byte gUnknown_30030F0 +_08109FF4: .4byte gUnknown_203AD30 +_08109FF8: .4byte gUnknown_203ACFC +_08109FFC: .4byte gUnknown_3005E70 + thumb_func_end sub_8109F44 + + thumb_func_start sub_810A000 +sub_810A000: @ 810A000 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _0810A040 @ =gUnknown_3005098 + adds r7, r0, r1 + ldr r0, _0810A044 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r7, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _0810A048 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r3, _0810A04C @ =0x00000296 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, r2 + bne _0810A050 + movs r0, 0 + strh r0, [r1] + b _0810A052 + .align 2, 0 +_0810A040: .4byte gUnknown_3005098 +_0810A044: .4byte gUnknown_203ACFC +_0810A048: .4byte gUnknown_3005008 +_0810A04C: .4byte 0x00000296 +_0810A050: + strh r2, [r1] +_0810A052: + ldrb r0, [r7] + ldr r4, _0810A0A0 @ =gUnknown_203ACFC + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r4, 0 + adds r5, 0xE + adds r1, r2, r5 + adds r6, r4, 0 + adds r6, 0x8 + adds r2, r6 + bl sub_810713C + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _0810A0A4 @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r2, r5 + ldrh r1, [r5] + adds r2, r6 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7] + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + mov r0, r8 + bl sub_810A2DC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810A0A0: .4byte gUnknown_203ACFC +_0810A0A4: .4byte gUnknown_3005E70 + thumb_func_end sub_810A000 + + thumb_func_start sub_810A0A8 +sub_810A0A8: @ 810A0A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r6, r0, 3 + ldr r0, _0810A110 @ =gUnknown_3005098 + mov r8, r0 + adds r1, r6, r0 + ldr r0, _0810A114 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r1, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + adds r0, r5, 0 + bl sub_80BF6D8 + lsls r0, 24 + cmp r0, 0 + bne _0810A120 + ldr r2, _0810A118 @ =gUnknown_841630F + ldr r3, _0810A11C @ =sub_810A1D0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 + b _0810A166 + .align 2, 0 +_0810A110: .4byte gUnknown_3005098 +_0810A114: .4byte gUnknown_203ACFC +_0810A118: .4byte gUnknown_841630F +_0810A11C: .4byte sub_810A1D0 +_0810A120: + adds r0, r5, 0 + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + bne _0810A160 + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _0810A13E + adds r0, r4, 0 + bl sub_810A170 + b _0810A166 +_0810A13E: + ldr r0, _0810A154 @ =gUnknown_203AD10 + ldr r1, [r0] + ldr r0, _0810A158 @ =sub_8126EDC + str r0, [r1] + mov r0, r8 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0810A15C @ =sub_8108B50 + str r1, [r0] + b _0810A166 + .align 2, 0 +_0810A154: .4byte gUnknown_203AD10 +_0810A158: .4byte sub_8126EDC +_0810A15C: .4byte sub_8108B50 +_0810A160: + adds r0, r7, 0 + bl sub_810A18C +_0810A166: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810A0A8 + + thumb_func_start sub_810A170 +sub_810A170: @ 810A170 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0810A184 @ =gUnknown_841632A + ldr r3, _0810A188 @ =sub_810A1D0 + movs r1, 0x2 + bl sub_8108E70 + pop {r0} + bx r0 + .align 2, 0 +_0810A184: .4byte gUnknown_841632A +_0810A188: .4byte sub_810A1D0 + thumb_func_end sub_810A170 + + thumb_func_start sub_810A18C +sub_810A18C: @ 810A18C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810A1BC @ =gUnknown_203AD30 + ldrh r0, [r0] + ldr r1, _0810A1C0 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r5, _0810A1C4 @ =gUnknown_2021D18 + ldr r1, _0810A1C8 @ =gUnknown_841635E + adds r0, r5, 0 + bl sub_8008FCC + ldr r3, _0810A1CC @ =sub_810A1D0 + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_8108E70 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810A1BC: .4byte gUnknown_203AD30 +_0810A1C0: .4byte gUnknown_2021CD0 +_0810A1C4: .4byte gUnknown_2021D18 +_0810A1C8: .4byte gUnknown_841635E +_0810A1CC: .4byte sub_810A1D0 + thumb_func_end sub_810A18C + + thumb_func_start sub_810A1D0 +sub_810A1D0: @ 810A1D0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810A1F4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810A1EE + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_810A1F8 +_0810A1EE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810A1F4: .4byte gUnknown_30030F0 + thumb_func_end sub_810A1D0 + + thumb_func_start sub_810A1F8 +sub_810A1F8: @ 810A1F8 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r5, r0, 2 + add r5, r8 + lsls r5, 3 + ldr r0, _0810A27C @ =gUnknown_3005098 + adds r5, r0 + movs r0, 0x5 + bl sub_810BA9C + ldrb r0, [r5] + ldr r4, _0810A280 @ =gUnknown_203ACFC + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r6, r4, 0 + adds r6, 0xE + adds r1, r2, r6 + movs r3, 0x8 + adds r3, r4 + mov r9, r3 + add r2, r9 + bl sub_810713C + ldrb r0, [r4, 0x6] + bl sub_8108DC8 + ldrb r0, [r4, 0x6] + bl sub_81089F4 + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _0810A284 @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r6, r2, r6 + ldrh r1, [r6] + add r2, r9 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_810876C + mov r0, r8 + bl sub_810910C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810A27C: .4byte gUnknown_3005098 +_0810A280: .4byte gUnknown_203ACFC +_0810A284: .4byte gUnknown_3005E70 + thumb_func_end sub_810A1F8 + + thumb_func_start sub_810A288 +sub_810A288: @ 810A288 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0810A2D8 @ =gUnknown_3005098 + adds r4, r0 + ldrb r0, [r4] + mov r6, sp + adds r6, 0x2 + mov r1, sp + adds r2, r6, 0 + bl sub_81072D4 + mov r0, sp + ldrh r0, [r0] + ldrh r1, [r6] + adds r0, r1 + bl sub_8108818 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810876C + adds r0, r5, 0 + bl sub_810910C + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810A2D8: .4byte gUnknown_3005098 + thumb_func_end sub_810A288 + + thumb_func_start sub_810A2DC +sub_810A2DC: @ 810A2DC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldr r1, _0810A320 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x8] + movs r1, 0x1 + bl sub_810876C + adds r0, r4, 0 + bl sub_810910C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810A320: .4byte gUnknown_3005090 + thumb_func_end sub_810A2DC + + thumb_func_start sub_810A324 +sub_810A324: @ 810A324 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _0810A36C @ =gUnknown_203AD30 + ldrh r0, [r5] + bl sub_809AA68 + cmp r0, 0 + beq _0810A364 + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + ldrh r0, [r5] + bl sub_809AA68 + adds r1, r0, 0 + adds r0, r4, 0 + bl _call_via_r1 +_0810A364: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810A36C: .4byte gUnknown_203AD30 + thumb_func_end sub_810A324 + + thumb_func_start sub_810A370 +sub_810A370: @ 810A370 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r7, r0, 3 + ldr r0, _0810A3BC @ =gUnknown_3005098 + mov r9, r0 + adds r1, r7, r0 + ldr r2, _0810A3C0 @ =gUnknown_203ACFC + mov r8, r2 + ldrb r0, [r2, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r1, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, r4, 0 + adds r0, r4, 0 + bl sub_80BF6D8 + lsls r0, 24 + cmp r0, 0 + bne _0810A3CC + ldr r2, _0810A3C4 @ =gUnknown_841630F + ldr r3, _0810A3C8 @ =sub_810A1D0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8108E70 + b _0810A426 + .align 2, 0 +_0810A3BC: .4byte gUnknown_3005098 +_0810A3C0: .4byte gUnknown_203ACFC +_0810A3C4: .4byte gUnknown_841630F +_0810A3C8: .4byte sub_810A1D0 +_0810A3CC: + movs r0, 0xB6 + lsls r0, 1 + cmp r4, r0 + bne _0810A3DC + ldr r0, _0810A3D8 @ =sub_810A434 + b _0810A3E4 + .align 2, 0 +_0810A3D8: .4byte sub_810A434 +_0810A3DC: + ldr r0, _0810A3F0 @ =0x0000016d + cmp r4, r0 + bne _0810A3F8 + ldr r0, _0810A3F4 @ =sub_810A448 +_0810A3E4: + bl sub_8108EE0 + adds r0, r5, 0 + bl sub_8108B50 + b _0810A426 + .align 2, 0 +_0810A3F0: .4byte 0x0000016d +_0810A3F4: .4byte sub_810A448 +_0810A3F8: + mov r1, r8 + ldrh r0, [r1, 0x6] + cmp r0, 0x1 + beq _0810A420 + adds r0, r6, 0 + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + bne _0810A420 + bl sub_8108CB4 + mov r0, r9 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0810A41C @ =sub_8108B50 + str r1, [r0] + b _0810A426 + .align 2, 0 +_0810A41C: .4byte sub_8108B50 +_0810A420: + adds r0, r5, 0 + bl sub_810A18C +_0810A426: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810A370 + + thumb_func_start sub_810A434 +sub_810A434: @ 810A434 + push {lr} + ldr r1, _0810A444 @ =sub_810A45C + movs r0, 0x1 + movs r2, 0 + bl sub_81317F8 + pop {r0} + bx r0 + .align 2, 0 +_0810A444: .4byte sub_810A45C + thumb_func_end sub_810A434 + + thumb_func_start sub_810A448 +sub_810A448: @ 810A448 + push {lr} + ldr r1, _0810A458 @ =sub_810A45C + movs r0, 0x1 + movs r2, 0 + bl sub_813CD50 + pop {r0} + bx r0 + .align 2, 0 +_0810A458: .4byte sub_810A45C + thumb_func_end sub_810A448 + + thumb_func_start sub_810A45C +sub_810A45C: @ 810A45C + push {lr} + bl sub_8123730 + pop {r0} + bx r0 + thumb_func_end sub_810A45C + + thumb_func_start sub_810A468 +sub_810A468: @ 810A468 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r7, r0, 3 + ldr r0, _0810A4B4 @ =gUnknown_3005098 + mov r9, r0 + adds r1, r7, r0 + ldr r2, _0810A4B8 @ =gUnknown_203ACFC + mov r8, r2 + ldrb r0, [r2, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r1, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, r4, 0 + adds r0, r4, 0 + bl sub_80980F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810A4C4 + ldr r2, _0810A4BC @ =gUnknown_841630F + ldr r3, _0810A4C0 @ =sub_810A1D0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8108E70 + b _0810A51E + .align 2, 0 +_0810A4B4: .4byte gUnknown_3005098 +_0810A4B8: .4byte gUnknown_203ACFC +_0810A4BC: .4byte gUnknown_841630F +_0810A4C0: .4byte sub_810A1D0 +_0810A4C4: + movs r0, 0xB6 + lsls r0, 1 + cmp r4, r0 + bne _0810A4D4 + ldr r0, _0810A4D0 @ =sub_810A52C + b _0810A4DC + .align 2, 0 +_0810A4D0: .4byte sub_810A52C +_0810A4D4: + ldr r0, _0810A4E8 @ =0x0000016d + cmp r4, r0 + bne _0810A4F0 + ldr r0, _0810A4EC @ =sub_810A540 +_0810A4DC: + bl sub_8108EE0 + adds r0, r5, 0 + bl sub_8108B50 + b _0810A51E + .align 2, 0 +_0810A4E8: .4byte 0x0000016d +_0810A4EC: .4byte sub_810A540 +_0810A4F0: + mov r1, r8 + ldrh r0, [r1, 0x6] + cmp r0, 0x1 + beq _0810A518 + adds r0, r6, 0 + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + bne _0810A518 + bl sub_8108CB4 + mov r0, r9 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0810A514 @ =sub_8108B50 + str r1, [r0] + b _0810A51E + .align 2, 0 +_0810A514: .4byte sub_8108B50 +_0810A518: + adds r0, r5, 0 + bl sub_810A18C +_0810A51E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810A468 + + thumb_func_start sub_810A52C +sub_810A52C: @ 810A52C + push {lr} + ldr r1, _0810A53C @ =sub_810A554 + movs r0, 0x3 + movs r2, 0 + bl sub_81317F8 + pop {r0} + bx r0 + .align 2, 0 +_0810A53C: .4byte sub_810A554 + thumb_func_end sub_810A52C + + thumb_func_start sub_810A540 +sub_810A540: @ 810A540 + push {lr} + ldr r1, _0810A550 @ =sub_810A554 + movs r0, 0x3 + movs r2, 0 + bl sub_813CD50 + pop {r0} + bx r0 + .align 2, 0 +_0810A550: .4byte sub_810A554 + thumb_func_end sub_810A540 + + thumb_func_start sub_810A554 +sub_810A554: @ 810A554 + push {lr} + ldr r2, _0810A564 @ =sub_808CE60 + movs r0, 0x4 + movs r1, 0x3 + bl sub_8107DB4 + pop {r0} + bx r0 + .align 2, 0 +_0810A564: .4byte sub_808CE60 + thumb_func_end sub_810A554 + + thumb_func_start sub_810A568 +sub_810A568: @ 810A568 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0810A58C @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r6, _0810A590 @ =gUnknown_203AD30 + ldrh r1, [r6] + movs r0, 0xB6 + lsls r0, 1 + cmp r1, r0 + bne _0810A598 + ldr r0, _0810A594 @ =sub_810A654 + b _0810A5A0 + .align 2, 0 +_0810A58C: .4byte gUnknown_3005098 +_0810A590: .4byte gUnknown_203AD30 +_0810A594: .4byte sub_810A654 +_0810A598: + ldr r0, _0810A5AC @ =0x0000016d + cmp r1, r0 + bne _0810A5B4 + ldr r0, _0810A5B0 @ =sub_810A668 +_0810A5A0: + bl sub_8108EE0 + adds r0, r5, 0 + bl sub_8108B50 + b _0810A63E + .align 2, 0 +_0810A5AC: .4byte 0x0000016d +_0810A5B0: .4byte sub_810A668 +_0810A5B4: + ldrh r0, [r6] + bl sub_809A900 + lsls r0, 16 + cmp r0, 0 + bne _0810A5F8 + ldrh r0, [r6] + ldr r1, _0810A5E8 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r4, _0810A5EC @ =gUnknown_2021D18 + ldr r1, _0810A5F0 @ =gUnknown_84168F1 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0810A5F4 @ =sub_810A1F8 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_8108E70 + b _0810A63E + .align 2, 0 +_0810A5E8: .4byte gUnknown_2021CD0 +_0810A5EC: .4byte gUnknown_2021D18 +_0810A5F0: .4byte gUnknown_84168F1 +_0810A5F4: .4byte sub_810A1F8 +_0810A5F8: + movs r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _0810A610 + bl sub_810BB40 + adds r0, r5, 0 + bl sub_810A690 + b _0810A63E +_0810A610: + cmp r0, 0x63 + ble _0810A618 + movs r0, 0x63 + strh r0, [r4, 0x4] +_0810A618: + ldrh r0, [r6] + ldr r1, _0810A644 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r4, _0810A648 @ =gUnknown_2021D18 + ldr r1, _0810A64C @ =gUnknown_8416911 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0810A650 @ =sub_810A770 + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_8108E70 +_0810A63E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810A644: .4byte gUnknown_2021CD0 +_0810A648: .4byte gUnknown_2021D18 +_0810A64C: .4byte gUnknown_8416911 +_0810A650: .4byte sub_810A770 + thumb_func_end sub_810A568 + + thumb_func_start sub_810A654 +sub_810A654: @ 810A654 + push {lr} + ldr r1, _0810A664 @ =sub_810A67C + movs r0, 0x2 + movs r2, 0 + bl sub_81317F8 + pop {r0} + bx r0 + .align 2, 0 +_0810A664: .4byte sub_810A67C + thumb_func_end sub_810A654 + + thumb_func_start sub_810A668 +sub_810A668: @ 810A668 + push {lr} + ldr r1, _0810A678 @ =sub_810A67C + movs r0, 0x2 + movs r2, 0 + bl sub_813CD50 + pop {r0} + bx r0 + .align 2, 0 +_0810A678: .4byte sub_810A67C + thumb_func_end sub_810A668 + + thumb_func_start sub_810A67C +sub_810A67C: @ 810A67C + push {lr} + ldr r2, _0810A68C @ =sub_80567DC + movs r0, 0x2 + movs r1, 0x3 + bl sub_8107DB4 + pop {r0} + bx r0 + .align 2, 0 +_0810A68C: .4byte sub_80567DC + thumb_func_end sub_810A67C + + thumb_func_start sub_810A690 +sub_810A690: @ 810A690 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0810A6F4 @ =gUnknown_3005098 + adds r4, r0 + ldr r6, _0810A6F8 @ =gUnknown_2021D04 + ldr r0, _0810A6FC @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r4, r2] + muls r1, r0 + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _0810A700 @ =gUnknown_2021D18 + ldr r1, _0810A704 @ =gUnknown_8416936 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0810A708 @ =sub_810A70C + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_8108E70 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810A6F4: .4byte gUnknown_3005098 +_0810A6F8: .4byte gUnknown_2021D04 +_0810A6FC: .4byte gUnknown_203ACFC +_0810A700: .4byte gUnknown_2021D18 +_0810A704: .4byte gUnknown_8416936 +_0810A708: .4byte sub_810A70C + thumb_func_end sub_810A690 + + thumb_func_start sub_810A70C +sub_810A70C: @ 810A70C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810A71C @ =gUnknown_8452F58 + bl sub_810BB14 + pop {r0} + bx r0 + .align 2, 0 +_0810A71C: .4byte gUnknown_8452F58 + thumb_func_end sub_810A70C + + thumb_func_start sub_810A720 +sub_810A720: @ 810A720 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0810A76C @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x2 + bl sub_810BA3C + movs r0, 0x5 + bl sub_810BA9C + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810876C + adds r0, r5, 0 + bl sub_810910C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810A76C: .4byte gUnknown_3005098 + thumb_func_end sub_810A720 + + thumb_func_start sub_810A770 +sub_810A770: @ 810A770 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r5, r0, 2 + adds r5, r0 + lsls r5, 3 + ldr r0, _0810A81C @ =gUnknown_3005098 + mov r8, r0 + adds r2, r5, 0 + add r2, r8 + mov r9, r2 + movs r0, 0 + movs r1, 0x1 + bl sub_810B9DC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810A820 @ =gUnknown_2021CD0 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r6, _0810A824 @ =gUnknown_2021D18 + ldr r1, _0810A828 @ =gUnknown_84162B9 + adds r0, r6, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0 + adds r2, r6, 0 + movs r3, 0x4 + bl sub_810B8F0 + ldr r0, _0810A82C @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r3, r9 + ldrh r1, [r3, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + mov r2, r9 + movs r3, 0x10 + ldrsh r1, [r2, r3] + muls r0, r1 + bl sub_810A834 + bl sub_810BB40 + bl sub_8108908 + movs r0, 0x8 + negs r0, r0 + add r8, r0 + add r5, r8 + ldr r0, _0810A830 @ =sub_810A85C + str r0, [r5] + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810A81C: .4byte gUnknown_3005098 +_0810A820: .4byte gUnknown_2021CD0 +_0810A824: .4byte gUnknown_2021D18 +_0810A828: .4byte gUnknown_84162B9 +_0810A82C: .4byte gUnknown_203ACFC +_0810A830: .4byte sub_810A85C + thumb_func_end sub_810A770 + + thumb_func_start sub_810A834 +sub_810A834: @ 810A834 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r0, 0 + bl sub_810BAD8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + str r1, [sp] + movs r1, 0x38 + movs r2, 0xA + adds r3, r4, 0 + bl sub_809FEC4 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810A834 + + thumb_func_start sub_810A85C +sub_810A85C: @ 810A85C + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0810A8B4 @ =gUnknown_3005098 + adds r5, r0, r1 + adds r0, r5, 0 + adds r0, 0x10 + ldrh r1, [r5, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810A8BC + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r1, 0x2 + bl sub_81097E4 + ldr r0, _0810A8B8 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r5, r2] + muls r0, r1 + bl sub_810A834 + b _0810A93A + .align 2, 0 +_0810A8B4: .4byte gUnknown_3005098 +_0810A8B8: .4byte gUnknown_203ACFC +_0810A8BC: + ldr r0, _0810A8EC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810A8F0 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + bl sub_8108978 + adds r0, r4, 0 + bl sub_810A690 + b _0810A93A + .align 2, 0 +_0810A8EC: .4byte gUnknown_30030F0 +_0810A8F0: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810A93A + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_810BA3C + movs r0, 0x2 + bl sub_810BA3C + movs r0, 0x5 + bl sub_810BA9C + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + bl sub_8108978 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_810876C + adds r0, r6, 0 + bl sub_810910C +_0810A93A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_810A85C + + thumb_func_start sub_810A940 +sub_810A940: @ 810A940 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0810A9B4 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldr r0, _0810A9B8 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldr r1, _0810A9BC @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r6, _0810A9C0 @ =gUnknown_2021D04 + ldr r0, _0810A9C4 @ =gUnknown_203ACFC + ldrb r0, [r0, 0x6] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r4, r2] + muls r1, r0 + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _0810A9C8 @ =gUnknown_2021D18 + ldr r1, _0810A9CC @ =gUnknown_8416959 + adds r0, r4, 0 + bl sub_8008FCC + ldr r3, _0810A9D0 @ =sub_810A9D4 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_8108E70 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810A9B4: .4byte gUnknown_3005098 +_0810A9B8: .4byte gUnknown_203AD30 +_0810A9BC: .4byte gUnknown_2021CD0 +_0810A9C0: .4byte gUnknown_2021D04 +_0810A9C4: .4byte gUnknown_203ACFC +_0810A9C8: .4byte gUnknown_2021D18 +_0810A9CC: .4byte gUnknown_8416959 +_0810A9D0: .4byte sub_810A9D4 + thumb_func_end sub_810A940 + + thumb_func_start sub_810A9D4 +sub_810A9D4: @ 810A9D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + lsls r6, r0, 2 + adds r6, r0 + lsls r6, 3 + ldr r0, _0810AAD8 @ =gUnknown_3005098 + mov r10, r0 + adds r1, r6, 0 + add r1, r10 + mov r8, r1 + movs r0, 0xF8 + bl sub_80722CC + ldr r5, _0810AADC @ =gUnknown_203AD30 + ldrh r0, [r5] + mov r2, r8 + ldrh r1, [r2, 0x10] + bl sub_809A1D8 + ldr r3, _0810AAE0 @ =gUnknown_3005008 + ldr r4, [r3] + movs r7, 0xA4 + lsls r7, 2 + adds r4, r7 + ldrh r0, [r5] + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + mov r2, r8 + movs r3, 0x10 + ldrsh r1, [r2, r3] + muls r1, r0 + adds r0, r4, 0 + bl sub_809FDA0 + ldrh r0, [r5] + mov r2, r8 + ldrh r1, [r2, 0x10] + movs r2, 0x2 + bl sub_809C09C + mov r3, r8 + ldrb r0, [r3] + ldr r4, _0810AAE4 @ =gUnknown_203ACFC + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r4, 0 + adds r5, 0xE + adds r1, r2, r5 + movs r3, 0x8 + adds r3, r4 + mov r9, r3 + add r2, r9 + bl sub_810713C + ldrb r0, [r4, 0x6] + bl sub_8108DC8 + ldrb r0, [r4, 0x6] + bl sub_81089F4 + ldr r0, _0810AAE8 @ =gUnknown_203AD10 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2, 0x5] + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _0810AAEC @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r2, r5 + ldrh r1, [r5] + add r2, r9 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + strh r0, [r1] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x2 + bl sub_810BAD8 + lsls r0, 24 + lsrs r0, 24 + bl sub_810BB74 + movs r0, 0x2 + bl sub_810BAD8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _0810AAE0 @ =gUnknown_3005008 + ldr r0, [r2] + adds r0, r7 + bl sub_809FD58 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + bl sub_809FE40 + movs r3, 0x8 + negs r3, r3 + add r10, r3 + add r6, r10 + ldr r0, _0810AAF0 @ =sub_810AAF4 + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810AAD8: .4byte gUnknown_3005098 +_0810AADC: .4byte gUnknown_203AD30 +_0810AAE0: .4byte gUnknown_3005008 +_0810AAE4: .4byte gUnknown_203ACFC +_0810AAE8: .4byte gUnknown_203AD10 +_0810AAEC: .4byte gUnknown_3005E70 +_0810AAF0: .4byte sub_810AAF4 + thumb_func_end sub_810A9D4 + + thumb_func_start sub_810AAF4 +sub_810AAF4: @ 810AAF4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810AB38 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0810AB0E + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810AB32 +_0810AB0E: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x2 + bl sub_810BA3C + movs r0, 0x2 + bl sub_8003FA0 + ldr r0, _0810AB3C @ =gUnknown_203AD10 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x5] + adds r0, r4, 0 + bl sub_810A1F8 +_0810AB32: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810AB38: .4byte gUnknown_30030F0 +_0810AB3C: .4byte gUnknown_203AD10 + thumb_func_end sub_810AAF4 + + thumb_func_start sub_810AB40 +sub_810AB40: @ 810AB40 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r4, r0, 3 + ldr r5, _0810AB64 @ =gUnknown_3005098 + adds r1, r4, r5 + movs r0, 0x1 + strh r0, [r1, 0x10] + movs r3, 0x4 + ldrsh r0, [r1, r3] + cmp r0, 0x1 + bne _0810AB68 + adds r0, r2, 0 + bl sub_810AC40 + b _0810AB7A + .align 2, 0 +_0810AB64: .4byte gUnknown_3005098 +_0810AB68: + ldrh r0, [r1, 0x2] + ldr r1, _0810AB80 @ =gUnknown_841638F + bl sub_810971C + adds r0, r5, 0 + subs r0, 0x8 + adds r0, r4, r0 + ldr r1, _0810AB84 @ =sub_810AB88 + str r1, [r0] +_0810AB7A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810AB80: .4byte gUnknown_841638F +_0810AB84: .4byte sub_810AB88 + thumb_func_end sub_810AB40 + + thumb_func_start sub_810AB88 +sub_810AB88: @ 810AB88 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0810ABB8 @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x10 + ldrh r1, [r4, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810ABBC + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl sub_81097E4 + b _0810AC38 + .align 2, 0 +_0810ABB8: .4byte gUnknown_3005098 +_0810ABBC: + ldr r0, _0810ABFC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810AC00 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x6 + bl sub_810BAD8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_810BA3C + movs r0, 0 + bl sub_80F67A4 + bl sub_8108978 + adds r0, r5, 0 + bl sub_810AC40 + b _0810AC38 + .align 2, 0 +_0810ABFC: .4byte gUnknown_30030F0 +_0810AC00: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810AC38 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_810BA3C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810876C + bl sub_8108978 + adds r0, r6, 0 + bl sub_810910C +_0810AC38: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_810AB88 + + thumb_func_start sub_810AC40 +sub_810AC40: @ 810AC40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + mov r8, r0 + ldr r0, _0810ACCC @ =gUnknown_3005098 + mov r9, r0 + mov r7, r8 + add r7, r9 + ldr r5, _0810ACD0 @ =gUnknown_203AD30 + ldrh r0, [r5] + ldrh r1, [r7, 0x10] + bl sub_809A3C8 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1 + bne _0810ACEC + ldrh r2, [r5] + ldr r3, _0810ACD4 @ =0x0000ffff + movs r0, 0x1C + movs r1, 0 + bl sub_80A2294 + ldrh r0, [r5] + ldr r1, _0810ACD8 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r0, _0810ACDC @ =gUnknown_2021CF0 + movs r2, 0x10 + ldrsh r1, [r7, r2] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0810ACE0 @ =gUnknown_2021D18 + ldr r1, _0810ACE4 @ =gUnknown_84163A7 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0x6 + movs r1, 0x3 + bl sub_810B9DC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + str r1, [sp] + str r6, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + str r1, [sp, 0xC] + str r6, [sp, 0x10] + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_810B8F0 + mov r0, r9 + subs r0, 0x8 + add r0, r8 + ldr r1, _0810ACE8 @ =sub_8109F44 + str r1, [r0] + b _0810ACF8 + .align 2, 0 +_0810ACCC: .4byte gUnknown_3005098 +_0810ACD0: .4byte gUnknown_203AD30 +_0810ACD4: .4byte 0x0000ffff +_0810ACD8: .4byte gUnknown_2021CD0 +_0810ACDC: .4byte gUnknown_2021CF0 +_0810ACE0: .4byte gUnknown_2021D18 +_0810ACE4: .4byte gUnknown_84163A7 +_0810ACE8: .4byte sub_8109F44 +_0810ACEC: + ldr r2, _0810AD08 @ =gUnknown_84163BB + ldr r3, _0810AD0C @ =sub_810A1D0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 +_0810ACF8: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810AD08: .4byte gUnknown_84163BB +_0810AD0C: .4byte sub_810A1D0 + thumb_func_end sub_810AC40 + + thumb_func_start sub_810AD10 +sub_810AD10: @ 810AD10 + push {r4-r6,lr} + bl sub_811B0D0 + cmp r0, 0x1 + bne _0810AD1E + movs r0, 0 + b _0810ADA0 +_0810AD1E: + bl sub_80982EC + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r4, _0810AD80 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r5, _0810AD84 @ =0x00000296 + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, 0 + beq _0810AD98 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1 + bne _0810AD90 + bl sub_8069940 + bl sub_8068974 + bl sub_805C270 + bl sub_805C780 + ldr r2, _0810AD88 @ =gUnknown_203AD30 + ldr r0, [r4] + adds r0, r5 + ldrh r1, [r0] + strh r1, [r2] + ldrh r0, [r0] + bl sub_809AA20 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0810AD8C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r6, [r1, 0xE] + b _0810AD9E + .align 2, 0 +_0810AD80: .4byte gUnknown_3005008 +_0810AD84: .4byte 0x00000296 +_0810AD88: .4byte gUnknown_203AD30 +_0810AD8C: .4byte gUnknown_3005090 +_0810AD90: + ldr r0, [r4] + adds r0, r5 + movs r1, 0 + strh r1, [r0] +_0810AD98: + ldr r0, _0810ADA8 @ =gUnknown_81A77A0 + bl sub_8069AE4 +_0810AD9E: + movs r0, 0x1 +_0810ADA0: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0810ADA8: .4byte gUnknown_81A77A0 + thumb_func_end sub_810AD10 + + thumb_func_start sub_810ADAC +sub_810ADAC: @ 810ADAC + push {lr} + ldr r0, _0810ADCC @ =gUnknown_203ACFC + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + beq _0810ADC6 + cmp r0, 0x8 + beq _0810ADC6 + cmp r0, 0x7 + beq _0810ADC6 + cmp r0, 0x9 + beq _0810ADC6 + cmp r0, 0xA + bne _0810ADD0 +_0810ADC6: + movs r0, 0x1 + b _0810ADD2 + .align 2, 0 +_0810ADCC: .4byte gUnknown_203ACFC +_0810ADD0: + movs r0, 0 +_0810ADD2: + pop {r1} + bx r1 + thumb_func_end sub_810ADAC + + thumb_func_start sub_810ADD8 +sub_810ADD8: @ 810ADD8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r5, _0810AEBC @ =gUnknown_203AD2C + movs r0, 0xB2 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r5] + ldr r4, _0810AEC0 @ =gUnknown_3005008 + ldr r1, [r4] + movs r2, 0xC4 + lsls r2, 2 + adds r1, r2 + movs r2, 0xA8 + bl memcpy + ldr r0, [r5] + adds r0, 0xA8 + ldr r1, [r4] + movs r3, 0xEE + lsls r3, 2 + adds r1, r3 + movs r2, 0x78 + bl memcpy + ldr r0, [r5] + movs r1, 0x90 + lsls r1, 1 + adds r0, r1 + ldr r1, [r4] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + movs r2, 0x34 + bl memcpy + ldr r2, [r5] + ldr r0, [r4] + ldr r3, _0810AEC4 @ =0x00000296 + adds r0, r3 + ldrh r1, [r0] + movs r3, 0xB0 + lsls r3, 1 + adds r0, r2, r3 + strh r1, [r0] + ldr r1, _0810AEC8 @ =gUnknown_203ACFC + ldrh r0, [r1, 0x6] + adds r3, 0x2 + adds r2, r3 + strh r0, [r2] + movs r4, 0 + mov r8, r5 + movs r7, 0xAA + lsls r7, 1 + movs r0, 0xE + adds r0, r1 + mov r12, r0 + movs r6, 0xAD + lsls r6, 1 + adds r5, r1, 0 + adds r5, 0x8 +_0810AE54: + mov r1, r8 + ldr r2, [r1] + lsls r3, r4, 1 + adds r0, r2, r7 + adds r0, r3 + ldrh r1, [r5] + strh r1, [r0] + adds r2, r6 + adds r2, r3 + mov r3, r12 + ldrh r0, [r3] + strh r0, [r2] + movs r0, 0x2 + add r12, r0 + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + bls _0810AE54 + ldr r4, _0810AEC0 @ =gUnknown_3005008 + ldr r0, [r4] + movs r1, 0xC4 + lsls r1, 2 + adds r0, r1 + movs r1, 0x2A + bl sub_809A274 + ldr r0, [r4] + movs r2, 0xEE + lsls r2, 2 + adds r0, r2 + movs r1, 0x1E + bl sub_809A274 + ldr r0, [r4] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + movs r1, 0xD + bl sub_809A274 + ldr r0, [r4] + ldr r1, _0810AEC4 @ =0x00000296 + adds r0, r1 + movs r1, 0 + strh r1, [r0] + bl sub_81089BC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810AEBC: .4byte gUnknown_203AD2C +_0810AEC0: .4byte gUnknown_3005008 +_0810AEC4: .4byte 0x00000296 +_0810AEC8: .4byte gUnknown_203ACFC + thumb_func_end sub_810ADD8 + + thumb_func_start sub_810AECC +sub_810AECC: @ 810AECC + push {r4-r7,lr} + ldr r4, _0810AF64 @ =gUnknown_3005008 + ldr r0, [r4] + movs r1, 0xC4 + lsls r1, 2 + adds r0, r1 + ldr r5, _0810AF68 @ =gUnknown_203AD2C + ldr r1, [r5] + movs r2, 0xA8 + bl memcpy + ldr r0, [r4] + movs r2, 0xEE + lsls r2, 2 + adds r0, r2 + ldr r1, [r5] + adds r1, 0xA8 + movs r2, 0x78 + bl memcpy + ldr r0, [r4] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + ldr r1, [r5] + movs r2, 0x90 + lsls r2, 1 + adds r1, r2 + movs r2, 0x34 + bl memcpy + ldr r1, [r4] + ldr r2, [r5] + movs r3, 0xB0 + lsls r3, 1 + adds r0, r2, r3 + ldrh r0, [r0] + ldr r3, _0810AF6C @ =0x00000296 + adds r1, r3 + strh r0, [r1] + ldr r1, _0810AF70 @ =gUnknown_203ACFC + movs r3, 0xB1 + lsls r3, 1 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, 0x6] + movs r4, 0 + mov r12, r5 + adds r3, r1, 0 + adds r3, 0x8 + mov r7, r12 + movs r6, 0xAA + lsls r6, 1 + movs r5, 0xAD + lsls r5, 1 +_0810AF3A: + lsls r2, r4, 1 + ldr r1, [r7] + adds r0, r1, r6 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r3] + adds r1, r5 + adds r1, r2 + ldrh r0, [r1] + strh r0, [r3, 0x6] + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + bls _0810AF3A + mov r1, r12 + ldr r0, [r1] + bl sub_8002BC4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810AF64: .4byte gUnknown_3005008 +_0810AF68: .4byte gUnknown_203AD2C +_0810AF6C: .4byte 0x00000296 +_0810AF70: .4byte gUnknown_203ACFC + thumb_func_end sub_810AECC + + thumb_func_start sub_810AF74 +sub_810AF74: @ 810AF74 + push {lr} + bl sub_810ADD8 + movs r0, 0xD + movs r1, 0x1 + bl sub_809A084 + movs r0, 0x4 + movs r1, 0x1 + bl sub_809A084 + ldr r2, _0810AF98 @ =sub_8030AEC + movs r0, 0x6 + movs r1, 0 + bl sub_8107DB4 + pop {r0} + bx r0 + .align 2, 0 +_0810AF98: .4byte sub_8030AEC + thumb_func_end sub_810AF74 + + thumb_func_start sub_810AF9C +sub_810AF9C: @ 810AF9C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r6, r0, 3 + ldr r7, _0810AFCC @ =gUnknown_3005098 + adds r5, r6, r7 + ldr r0, _0810AFD0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0810B06A + movs r0, 0x10 + ldrsh r1, [r5, r0] + cmp r1, 0xCC + beq _0810AFE4 + cmp r1, 0xCC + bgt _0810AFD4 + cmp r1, 0x66 + beq _0810AFE4 + b _0810B064 + .align 2, 0 +_0810AFCC: .4byte gUnknown_3005098 +_0810AFD0: .4byte gUnknown_2037AB8 +_0810AFD4: + movs r0, 0x99 + lsls r0, 1 + cmp r1, r0 + beq _0810AFF6 + adds r0, 0x66 + cmp r1, r0 + beq _0810B01C + b _0810B064 +_0810AFE4: + movs r0, 0xF6 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_81091D0 + b _0810B064 +_0810AFF6: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r5] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x1 + bl sub_8109140 + ldr r1, _0810B018 @ =gUnknown_203AD30 + movs r0, 0x4 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8109890 + b _0810B064 + .align 2, 0 +_0810B018: .4byte gUnknown_203AD30 +_0810B01C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r5] + movs r1, 0 + movs r2, 0 + bl sub_810713C + bl sub_810AECC + bl sub_8108CB4 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0810B060 @ =sub_810B070 + str r1, [r0] + b _0810B06A + .align 2, 0 +_0810B060: .4byte sub_810B070 +_0810B064: + ldrh r0, [r5, 0x10] + adds r0, 0x1 + strh r0, [r5, 0x10] +_0810B06A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810AF9C + + thumb_func_start sub_810B070 +sub_810B070: @ 810B070 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0810B0A4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810B0A8 @ =sub_810B0AC + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B0A4: .4byte gUnknown_3005090 +_0810B0A8: .4byte sub_810B0AC + thumb_func_end sub_810B070 + + thumb_func_start sub_810B0AC +sub_810B0AC: @ 810B0AC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810B0DC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0810B0FE + ldr r0, _0810B0E0 @ =sub_8108CFC + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810B0FE + ldr r0, _0810B0E4 @ =gUnknown_203AD10 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _0810B0E8 + bl sub_8000544 + b _0810B0F0 + .align 2, 0 +_0810B0DC: .4byte gUnknown_2037AB8 +_0810B0E0: .4byte sub_8108CFC +_0810B0E4: .4byte gUnknown_203AD10 +_0810B0E8: + ldr r0, _0810B104 @ =gUnknown_203ACFC + ldr r0, [r0] + bl sub_8000544 +_0810B0F0: + bl sub_8108978 + bl sub_8108B04 + adds r0, r4, 0 + bl sub_8077508 +_0810B0FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B104: .4byte gUnknown_203ACFC + thumb_func_end sub_810B0AC + + thumb_func_start sub_810B108 +sub_810B108: @ 810B108 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_810ADD8 + movs r0, 0xD + movs r1, 0x1 + bl sub_809A084 + movs r0, 0xE + movs r1, 0x1 + bl sub_809A084 + movs r0, 0xB7 + lsls r0, 1 + movs r1, 0x1 + bl sub_809A084 + movs r0, 0xB6 + lsls r0, 1 + movs r1, 0x1 + bl sub_809A084 + movs r0, 0x4 + movs r1, 0x5 + bl sub_809A084 + movs r0, 0x3 + movs r1, 0x1 + bl sub_809A084 + movs r0, 0x8 + movs r1, 0x1 + bl sub_809A084 + cmp r4, 0x7 + beq _0810B160 + cmp r4, 0x8 + beq _0810B16C + ldr r2, _0810B15C @ =sub_815ABFC + adds r0, r4, 0 + b _0810B170 + .align 2, 0 +_0810B15C: .4byte sub_815ABFC +_0810B160: + ldr r2, _0810B168 @ =sub_8030AEC + movs r0, 0x7 + b _0810B170 + .align 2, 0 +_0810B168: .4byte sub_8030AEC +_0810B16C: + ldr r2, _0810B17C @ =sub_8030AEC + movs r0, 0x8 +_0810B170: + movs r1, 0 + bl sub_8107DB4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B17C: .4byte sub_8030AEC + thumb_func_end sub_810B108 + + thumb_func_start sub_810B180 +sub_810B180: @ 810B180 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810B198 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0810B19C + movs r0, 0 + b _0810B1BC + .align 2, 0 +_0810B198: .4byte gUnknown_30030F0 +_0810B19C: + bl sub_810AECC + bl sub_815AC20 + ldr r0, _0810B1C4 @ =gUnknown_203AD10 + ldr r1, [r0] + ldr r0, _0810B1C8 @ =sub_815ABFC + str r0, [r1] + ldr r1, _0810B1CC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810B1D0 @ =sub_810B070 + str r1, [r0] + movs r0, 0x1 +_0810B1BC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0810B1C4: .4byte gUnknown_203AD10 +_0810B1C8: .4byte sub_815ABFC +_0810B1CC: .4byte gUnknown_3005090 +_0810B1D0: .4byte sub_810B070 + thumb_func_end sub_810B180 + + thumb_func_start sub_810B1D4 +sub_810B1D4: @ 810B1D4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r5, r0, 3 + ldr r6, _0810B220 @ =gUnknown_3005098 + adds r7, r5, r6 + ldr r0, _0810B224 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0810B1F2 + b _0810B372 +_0810B1F2: + adds r0, r4, 0 + bl sub_810B180 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810B202 + b _0810B372 +_0810B202: + movs r0, 0x10 + ldrsh r1, [r7, r0] + movs r0, 0xCC + lsls r0, 1 + cmp r1, r0 + beq _0810B29E + cmp r1, r0 + bgt _0810B232 + cmp r1, 0xCC + beq _0810B266 + cmp r1, 0xCC + bgt _0810B228 + cmp r1, 0x66 + beq _0810B254 + b _0810B36C + .align 2, 0 +_0810B220: .4byte gUnknown_3005098 +_0810B224: .4byte gUnknown_2037AB8 +_0810B228: + movs r0, 0x99 + lsls r0, 1 + cmp r1, r0 + beq _0810B290 + b _0810B36C +_0810B232: + movs r0, 0x99 + lsls r0, 2 + cmp r1, r0 + beq _0810B32C + cmp r1, r0 + bgt _0810B246 + subs r0, 0x66 + cmp r1, r0 + beq _0810B32C + b _0810B36C +_0810B246: + ldr r0, _0810B250 @ =0x000002ca + cmp r1, r0 + bne _0810B24E + b _0810B344 +_0810B24E: + b _0810B36C + .align 2, 0 +_0810B250: .4byte 0x000002ca +_0810B254: + movs r0, 0xF6 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_81091D0 + b _0810B36C +_0810B266: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r7] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x1 + bl sub_8109140 + ldr r1, _0810B28C @ =gUnknown_203AD30 + movs r2, 0xB7 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8109890 + b _0810B36C + .align 2, 0 +_0810B28C: .4byte gUnknown_203AD30 +_0810B290: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_810F948 + b _0810B36C +_0810B29E: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0810B318 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0810B31C @ =gUnknown_203AD30 + ldrh r1, [r1] + ldr r2, _0810B320 @ =0x00000296 + adds r0, r2 + strh r1, [r0] + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + ldrb r0, [r7] + ldr r4, _0810B324 @ =gUnknown_203ACFC + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r4, 0 + adds r5, 0xE + adds r1, r2, r5 + adds r6, r4, 0 + adds r6, 0x8 + adds r2, r6 + bl sub_810713C + ldrb r0, [r4, 0x6] + bl sub_810842C + ldr r0, _0810B328 @ =gUnknown_3005E70 + ldrh r2, [r4, 0x6] + lsls r2, 1 + adds r5, r2, r5 + ldrh r1, [r5] + adds r2, r6 + ldrh r2, [r2] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7] + movs r0, 0 + bl sub_8109140 + ldrb r0, [r7] + movs r1, 0x1 + bl sub_810876C + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + b _0810B36C + .align 2, 0 +_0810B318: .4byte gUnknown_3005008 +_0810B31C: .4byte gUnknown_203AD30 +_0810B320: .4byte 0x00000296 +_0810B324: .4byte gUnknown_203ACFC +_0810B328: .4byte gUnknown_3005E70 +_0810B32C: + ldr r1, _0810B340 @ =gUnknown_30030F0 + movs r0, 0 + strh r0, [r1, 0x2E] + movs r0, 0x80 + strh r0, [r1, 0x30] + ldrb r0, [r7] + bl sub_8107078 + b _0810B36C + .align 2, 0 +_0810B340: .4byte gUnknown_30030F0 +_0810B344: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r7] + movs r1, 0 + movs r2, 0 + bl sub_810713C + bl sub_810AECC + bl sub_8108CB4 + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _0810B368 @ =sub_810B070 + str r1, [r0] + b _0810B372 + .align 2, 0 +_0810B368: .4byte sub_810B070 +_0810B36C: + ldrh r0, [r7, 0x10] + adds r0, 0x1 + strh r0, [r7, 0x10] +_0810B372: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810B1D4 + + thumb_func_start sub_810B378 +sub_810B378: @ 810B378 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + ldr r7, _0810B3B0 @ =gUnknown_3005098 + adds r4, r6, r7 + ldr r0, _0810B3B4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0810B396 + b _0810B4B6 +_0810B396: + adds r0, r5, 0 + bl sub_810B180 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810B3B8 + bl sub_8011174 + bl sub_804C230 + b _0810B4B6 + .align 2, 0 +_0810B3B0: .4byte gUnknown_3005098 +_0810B3B4: .4byte gUnknown_2037AB8 +_0810B3B8: + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r0, 0xCC + lsls r0, 1 + cmp r1, r0 + beq _0810B41A + cmp r1, r0 + bgt _0810B3E0 + cmp r1, 0xCC + beq _0810B408 + cmp r1, 0xCC + bgt _0810B3D6 + cmp r1, 0x66 + beq _0810B408 + b _0810B4B0 +_0810B3D6: + movs r0, 0x99 + lsls r0, 1 + cmp r1, r0 + beq _0810B41A + b _0810B4B0 +_0810B3E0: + movs r0, 0x99 + lsls r0, 2 + cmp r1, r0 + beq _0810B428 + cmp r1, r0 + bgt _0810B3F4 + subs r0, 0x66 + cmp r1, r0 + beq _0810B428 + b _0810B4B0 +_0810B3F4: + ldr r0, _0810B404 @ =0x000002ca + cmp r1, r0 + beq _0810B440 + adds r0, 0x66 + cmp r1, r0 + beq _0810B468 + b _0810B4B0 + .align 2, 0 +_0810B404: .4byte 0x000002ca +_0810B408: + movs r0, 0xF6 + bl sub_80722CC + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_81091D0 + b _0810B4B0 +_0810B41A: + ldr r1, _0810B424 @ =gUnknown_30030F0 + movs r0, 0 + strh r0, [r1, 0x2E] + movs r0, 0x80 + b _0810B430 + .align 2, 0 +_0810B424: .4byte gUnknown_30030F0 +_0810B428: + ldr r1, _0810B43C @ =gUnknown_30030F0 + movs r0, 0 + strh r0, [r1, 0x2E] + movs r0, 0x40 +_0810B430: + strh r0, [r1, 0x30] + ldrb r0, [r4] + bl sub_8107078 + b _0810B4B0 + .align 2, 0 +_0810B43C: .4byte gUnknown_30030F0 +_0810B440: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x1 + bl sub_8109140 + ldr r1, _0810B464 @ =gUnknown_203AD30 + movs r0, 0x4 + strh r0, [r1] + adds r0, r5, 0 + bl sub_8109890 + b _0810B4B0 + .align 2, 0 +_0810B464: .4byte gUnknown_203AD30 +_0810B468: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0 + bl sub_810713C + bl sub_810AECC + bl sub_8108CB4 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0810B4AC @ =sub_810B070 + str r1, [r0] + b _0810B4B6 + .align 2, 0 +_0810B4AC: .4byte sub_810B070 +_0810B4B0: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] +_0810B4B6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810B378 + + thumb_func_start sub_810B4BC +sub_810B4BC: @ 810B4BC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + mov r8, r0 + ldr r0, _0810B504 @ =gUnknown_3005098 + mov r9, r0 + mov r5, r8 + add r5, r9 + ldr r0, _0810B508 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r7, 0x80 + adds r0, r7, 0 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _0810B5C6 + adds r0, r4, 0 + bl sub_810B180 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810B50C + bl sub_8011174 + bl sub_804C230 + b _0810B5C6 + .align 2, 0 +_0810B504: .4byte gUnknown_3005098 +_0810B508: .4byte gUnknown_2037AB8 +_0810B50C: + movs r0, 0x10 + ldrsh r1, [r5, r0] + cmp r1, 0xCC + beq _0810B53C + cmp r1, 0xCC + bgt _0810B51E + cmp r1, 0x66 + beq _0810B528 + b _0810B5C0 +_0810B51E: + movs r0, 0x99 + lsls r0, 1 + cmp r1, r0 + beq _0810B564 + b _0810B5C0 +_0810B528: + ldr r0, _0810B538 @ =gUnknown_30030F0 + strh r6, [r0, 0x2E] + strh r7, [r0, 0x30] + ldrb r0, [r5] + bl sub_8107078 + b _0810B5C0 + .align 2, 0 +_0810B538: .4byte gUnknown_30030F0 +_0810B53C: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r5] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x1 + bl sub_8109140 + ldr r1, _0810B560 @ =gUnknown_203AD30 + movs r0, 0xE + strh r0, [r1] + adds r0, r4, 0 + bl sub_8109890 + b _0810B5C0 + .align 2, 0 +_0810B560: .4byte gUnknown_203AD30 +_0810B564: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r5] + movs r1, 0 + movs r2, 0 + bl sub_810713C + bl sub_810AECC + ldr r1, _0810B5B0 @ =gUnknown_3005E98 + ldr r0, _0810B5B4 @ =sub_81253B0 + str r0, [r1] + ldr r0, _0810B5B8 @ =sub_81279A4 + bl sub_8108EE0 + mov r0, r9 + subs r0, 0x8 + add r0, r8 + ldr r1, _0810B5BC @ =sub_810B070 + str r1, [r0] + b _0810B5C6 + .align 2, 0 +_0810B5B0: .4byte gUnknown_3005E98 +_0810B5B4: .4byte sub_81253B0 +_0810B5B8: .4byte sub_81279A4 +_0810B5BC: .4byte sub_810B070 +_0810B5C0: + ldrh r0, [r5, 0x10] + adds r0, 0x1 + strh r0, [r5, 0x10] +_0810B5C6: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810B4BC + + thumb_func_start sub_810B5D4 +sub_810B5D4: @ 810B5D4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + mov r8, r0 + ldr r0, _0810B624 @ =gUnknown_3005098 + mov r9, r0 + mov r6, r8 + add r6, r9 + ldr r0, _0810B628 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r7, 0x80 + adds r0, r7, 0 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0810B6E6 + adds r0, r4, 0 + bl sub_810B180 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810B6E6 + movs r2, 0x10 + ldrsh r1, [r6, r2] + cmp r1, 0xCC + beq _0810B64E + cmp r1, 0xCC + bgt _0810B62C + cmp r1, 0x66 + beq _0810B63C + b _0810B6E0 + .align 2, 0 +_0810B624: .4byte gUnknown_3005098 +_0810B628: .4byte gUnknown_2037AB8 +_0810B62C: + movs r0, 0x99 + lsls r0, 1 + cmp r1, r0 + beq _0810B660 + adds r0, 0x66 + cmp r1, r0 + beq _0810B68C + b _0810B6E0 +_0810B63C: + movs r0, 0xF6 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_81091D0 + b _0810B6E0 +_0810B64E: + ldr r0, _0810B65C @ =gUnknown_30030F0 + strh r5, [r0, 0x2E] + strh r7, [r0, 0x30] + ldrb r0, [r6] + bl sub_8107078 + b _0810B6E0 + .align 2, 0 +_0810B65C: .4byte gUnknown_30030F0 +_0810B660: + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r6] + movs r1, 0x2 + bl sub_810876C + movs r0, 0x1 + bl sub_8109140 + ldr r1, _0810B688 @ =gUnknown_203AD30 + movs r2, 0xB6 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + adds r0, r4, 0 + bl sub_8109890 + b _0810B6E0 + .align 2, 0 +_0810B688: .4byte gUnknown_203AD30 +_0810B68C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0xA + bl sub_810BA3C + movs r0, 0x6 + bl sub_810BA3C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r6] + movs r1, 0 + movs r2, 0 + bl sub_810713C + bl sub_810AECC + ldr r0, _0810B6D4 @ =gUnknown_203AD10 + ldr r1, [r0] + ldr r0, _0810B6D8 @ =sub_8132E64 + str r0, [r1] + mov r0, r9 + subs r0, 0x8 + add r0, r8 + ldr r1, _0810B6DC @ =sub_810B070 + str r1, [r0] + b _0810B6E6 + .align 2, 0 +_0810B6D4: .4byte gUnknown_203AD10 +_0810B6D8: .4byte sub_8132E64 +_0810B6DC: .4byte sub_810B070 +_0810B6E0: + ldrh r0, [r6, 0x10] + adds r0, 0x1 + strh r0, [r6, 0x10] +_0810B6E6: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810B5D4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_menu_icons.s b/asm/item_menu_icons.s new file mode 100644 index 000000000..243146014 --- /dev/null +++ b/asm/item_menu_icons.s @@ -0,0 +1,680 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80984D8 +sub_80984D8: @ 80984D8 + push {r4,lr} + movs r2, 0 + ldr r4, _080984F8 @ =gUnknown_2039878 + movs r3, 0xFF +_080984E0: + adds r0, r2, r4 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0xB + bls _080984E0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080984F8: .4byte gUnknown_2039878 + thumb_func_end sub_80984D8 + + thumb_func_start sub_80984FC +sub_80984FC: @ 80984FC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08098520 @ =gUnknown_83D41FC + movs r1, 0x28 + movs r2, 0x44 + movs r3, 0 + bl sub_8006F8C + ldr r1, _08098524 @ =gUnknown_2039878 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8098528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08098520: .4byte gUnknown_83D41FC +_08098524: .4byte gUnknown_2039878 + thumb_func_end sub_80984FC + + thumb_func_start sub_8098528 +sub_8098528: @ 8098528 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08098550 @ =gUnknown_2039878 + ldrb r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r2, _08098554 @ =gUnknown_202063C + adds r0, r2 + ldr r2, _08098558 @ =0x0000fffb + strh r2, [r0, 0x26] + ldr r2, _0809855C @ =sub_8098560 + str r2, [r0, 0x1C] + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_08098550: .4byte gUnknown_2039878 +_08098554: .4byte gUnknown_202063C +_08098558: .4byte 0x0000fffb +_0809855C: .4byte sub_8098560 + thumb_func_end sub_8098528 + + thumb_func_start sub_8098560 +sub_8098560: @ 8098560 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x26] + movs r3, 0x26 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _08098574 + adds r0, r2, 0x1 + strh r0, [r1, 0x26] + b _08098578 +_08098574: + ldr r0, _0809857C @ =nullsub_8 + str r0, [r1, 0x1C] +_08098578: + pop {r0} + bx r0 + .align 2, 0 +_0809857C: .4byte nullsub_8 + thumb_func_end sub_8098560 + + thumb_func_start sub_8098580 +sub_8098580: @ 8098580 + push {r4,lr} + ldr r0, _080985B0 @ =gUnknown_2039878 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080985B4 @ =gUnknown_202063C + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080985AA + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _080985B8 @ =sub_80985BC + str r0, [r4, 0x1C] +_080985AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080985B0: .4byte gUnknown_2039878 +_080985B4: .4byte gUnknown_202063C +_080985B8: .4byte sub_80985BC + thumb_func_end sub_8098580 + + thumb_func_start sub_80985BC +sub_80985BC: @ 80985BC + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080985D8 + adds r0, r4, 0 + movs r1, 0 + bl sub_800843C + ldr r0, _080985E0 @ =nullsub_8 + str r0, [r4, 0x1C] +_080985D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080985E0: .4byte nullsub_8 + thumb_func_end sub_80985BC + + thumb_func_start sub_80985E4 +sub_80985E4: @ 80985E4 + push {r4-r7,lr} + ldr r7, _08098620 @ =gUnknown_2039879 + movs r5, 0 + ldr r6, _08098624 @ =gUnknown_202063C +_080985EC: + lsls r1, r5, 20 + movs r0, 0xC0 + lsls r0, 15 + adds r1, r0 + asrs r1, 16 + ldr r0, _08098628 @ =gUnknown_83D4250 + movs r2, 0x7 + movs r3, 0 + bl sub_8006F8C + adds r1, r7, r5 + strb r0, [r1] + adds r4, r1, 0 + cmp r5, 0 + beq _0809863C + cmp r5, 0x8 + bne _0809862C + ldrb r1, [r7, 0x8] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x2 + bl sub_800838C + b _0809863C + .align 2, 0 +_08098620: .4byte gUnknown_2039879 +_08098624: .4byte gUnknown_202063C +_08098628: .4byte gUnknown_83D4250 +_0809862C: + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x1 + bl sub_800838C +_0809863C: + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x8 + bls _080985EC + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80985E4 + + thumb_func_start sub_8098660 +sub_8098660: @ 8098660 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r7, _080986A0 @ =gUnknown_2039879 + movs r3, 0 + ldr r6, _080986A4 @ =gUnknown_202063C + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_08098676: + adds r0, r7, r3 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x8 + bls _08098676 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080986A0: .4byte gUnknown_2039879 +_080986A4: .4byte gUnknown_202063C + thumb_func_end sub_8098660 + + thumb_func_start sub_80986A8 +sub_80986A8: @ 80986A8 + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r1, 16 + ldr r7, _080986E4 @ =gUnknown_2039879 + movs r3, 0 + ldr r4, _080986E8 @ =gUnknown_202063C + adds r5, r1, 0x7 +_080986BA: + adds r2, r7, r3 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r6, [r0, 0x24] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x22] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x8 + bls _080986BA + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080986E4: .4byte gUnknown_2039879 +_080986E8: .4byte gUnknown_202063C + thumb_func_end sub_80986A8 + + thumb_func_start sub_80986EC +sub_80986EC: @ 80986EC + push {r4,r5,lr} + ldr r5, _08098714 @ =gUnknown_2039884 + movs r0, 0x90 + lsls r0, 1 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + beq _08098722 + ldr r4, _08098718 @ =gUnknown_2039888 + movs r0, 0x80 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r4] + cmp r0, 0 + beq _0809871C + movs r0, 0x1 + b _08098724 + .align 2, 0 +_08098714: .4byte gUnknown_2039884 +_08098718: .4byte gUnknown_2039888 +_0809871C: + ldr r0, [r5] + bl sub_8002BC4 +_08098722: + movs r0, 0 +_08098724: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80986EC + + thumb_func_start sub_809872C +sub_809872C: @ 809872C + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + movs r4, 0 +_08098734: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 5 + adds r0, r6, r0 + lsls r1, r4, 7 + adds r1, r5, r1 + movs r2, 0x30 + bl CpuSet + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _08098734 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_809872C + + thumb_func_start sub_8098758 +sub_8098758: @ 8098758 + push {r4-r7,lr} + sub sp, 0x28 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 16 + lsrs r7, r2, 16 + bl sub_80986EC + lsls r0, 24 + cmp r0, 0 + beq _08098810 + adds r0, r7, 0 + movs r1, 0 + bl sub_8098974 + ldr r2, _080987FC @ =gUnknown_2039884 + ldr r1, [r2] + bl sub_800EBB4 + ldr r1, _080987FC @ =gUnknown_2039884 + ldr r0, [r1] + ldr r2, _08098800 @ =gUnknown_2039888 + ldr r1, [r2] + bl sub_809872C + ldr r1, _08098800 @ =gUnknown_2039888 + ldr r0, [r1] + str r0, [sp, 0x18] + ldr r4, _08098804 @ =0xffff0000 + add r0, sp, 0x18 + ldr r1, [r0, 0x4] + ands r1, r4 + movs r2, 0x80 + lsls r2, 2 + orrs r1, r2 + lsls r3, r6, 16 + ldr r2, _08098808 @ =0x0000ffff + ands r1, r2 + orrs r1, r3 + str r1, [r0, 0x4] + bl sub_80086DC + adds r0, r7, 0 + movs r1, 0x1 + bl sub_8098974 + str r0, [sp, 0x20] + add r0, sp, 0x20 + ldr r1, [r0, 0x4] + ands r1, r4 + orrs r1, r5 + str r1, [r0, 0x4] + bl sub_800EC28 + ldr r0, _0809880C @ =gUnknown_83D427C + mov r1, sp + movs r2, 0xC + bl CpuSet + mov r0, sp + strh r6, [r0] + strh r5, [r0, 0x2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _080987FC @ =gUnknown_2039884 + ldr r0, [r2] + bl sub_8002BC4 + ldr r1, _08098800 @ =gUnknown_2039888 + ldr r0, [r1] + bl sub_8002BC4 + adds r0, r4, 0 + b _08098812 + .align 2, 0 +_080987FC: .4byte gUnknown_2039884 +_08098800: .4byte gUnknown_2039888 +_08098804: .4byte 0xffff0000 +_08098808: .4byte 0x0000ffff +_0809880C: .4byte gUnknown_83D427C +_08098810: + movs r0, 0x40 +_08098812: + add sp, 0x28 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8098758 + + thumb_func_start sub_809881C +sub_809881C: @ 809881C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + mov r8, r0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + lsls r3, 16 + lsrs r7, r3, 16 + bl sub_80986EC + lsls r0, 24 + cmp r0, 0 + beq _080988D8 + adds r0, r7, 0 + movs r1, 0 + bl sub_8098974 + ldr r2, _080988C8 @ =gUnknown_2039884 + ldr r1, [r2] + bl sub_800EBB4 + ldr r1, _080988C8 @ =gUnknown_2039884 + ldr r0, [r1] + ldr r2, _080988CC @ =gUnknown_2039888 + ldr r1, [r2] + bl sub_809872C + ldr r1, _080988CC @ =gUnknown_2039888 + ldr r0, [r1] + str r0, [sp, 0x18] + ldr r4, _080988D0 @ =0xffff0000 + add r0, sp, 0x18 + ldr r1, [r0, 0x4] + ands r1, r4 + movs r2, 0x80 + lsls r2, 2 + orrs r1, r2 + lsls r3, r6, 16 + ldr r2, _080988D4 @ =0x0000ffff + ands r1, r2 + orrs r1, r3 + str r1, [r0, 0x4] + bl sub_80086DC + adds r0, r7, 0 + movs r1, 0x1 + bl sub_8098974 + str r0, [sp, 0x20] + add r0, sp, 0x20 + ldr r1, [r0, 0x4] + ands r1, r4 + orrs r1, r5 + str r1, [r0, 0x4] + bl sub_800EC28 + mov r0, r8 + mov r1, sp + movs r2, 0xC + bl CpuSet + mov r0, sp + strh r6, [r0] + strh r5, [r0, 0x2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _080988C8 @ =gUnknown_2039884 + ldr r0, [r2] + bl sub_8002BC4 + ldr r1, _080988CC @ =gUnknown_2039888 + ldr r0, [r1] + bl sub_8002BC4 + adds r0, r4, 0 + b _080988DA + .align 2, 0 +_080988C8: .4byte gUnknown_2039884 +_080988CC: .4byte gUnknown_2039888 +_080988D0: .4byte 0xffff0000 +_080988D4: .4byte 0x0000ffff +_080988D8: + movs r0, 0x40 +_080988DA: + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809881C + + thumb_func_start sub_80988E8 +sub_80988E8: @ 80988E8 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08098938 @ =gUnknown_2039882 + adds r5, r1, r0 + ldrb r0, [r5] + cmp r0, 0xFF + bne _08098932 + adds r4, r1, 0 + adds r4, 0x66 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8098758 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _08098932 + strb r2, [r5] + ldr r1, _0809893C @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x18 + strh r1, [r0, 0x24] + movs r1, 0x8C + strh r1, [r0, 0x26] +_08098932: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08098938: .4byte gUnknown_2039882 +_0809893C: .4byte gUnknown_202063C + thumb_func_end sub_80988E8 + + thumb_func_start sub_8098940 +sub_8098940: @ 8098940 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809896C @ =gUnknown_2039882 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0xFF + beq _08098964 + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08098970 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007804 + movs r0, 0xFF + strb r0, [r4] +_08098964: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809896C: .4byte gUnknown_2039882 +_08098970: .4byte gUnknown_202063C + thumb_func_end sub_8098940 + + thumb_func_start sub_8098974 +sub_8098974: @ 8098974 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08098998 @ =0x00000177 + cmp r3, r0 + bls _08098986 + movs r3, 0 +_08098986: + ldr r2, _0809899C @ =gUnknown_83D4294 + lsls r0, r1, 2 + lsls r1, r3, 3 + adds r0, r1 + adds r0, r2 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_08098998: .4byte 0x00000177 +_0809899C: .4byte gUnknown_83D4294 + thumb_func_end sub_8098974 + + thumb_func_start sub_80989A0 +sub_80989A0: @ 80989A0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _080989F0 @ =gUnknown_2039882 + adds r5, r1, r0 + ldrb r0, [r5] + cmp r0, 0xFF + bne _080989EA + adds r4, r1, 0 + adds r4, 0x66 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8098758 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080989EA + strb r2, [r5] + ldr r1, _080989F4 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x18 + strh r1, [r0, 0x24] + movs r1, 0x93 + strh r1, [r0, 0x26] +_080989EA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080989F0: .4byte gUnknown_2039882 +_080989F4: .4byte gUnknown_202063C + thumb_func_end sub_80989A0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_pc.s b/asm/item_pc.s new file mode 100644 index 000000000..3978f9f38 --- /dev/null +++ b/asm/item_pc.s @@ -0,0 +1,2909 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810D3F4 +sub_810D3F4: @ 810D3F4 + push {r4-r6,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + cmp r5, 0x1 + bhi _0810D410 + ldr r6, _0810D418 @ =gUnknown_203ADBC + movs r0, 0x14 + bl sub_8002B9C + str r0, [r6] + cmp r0, 0 + bne _0810D41C +_0810D410: + adds r0, r4, 0 + bl sub_8000544 + b _0810D462 + .align 2, 0 +_0810D418: .4byte gUnknown_203ADBC +_0810D41C: + cmp r5, 0x1 + beq _0810D42A + ldr r0, _0810D468 @ =gUnknown_203ADCC + str r4, [r0] + movs r1, 0 + strh r1, [r0, 0x6] + strh r1, [r0, 0x4] +_0810D42A: + ldr r1, [r6] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r0, [r6] + movs r2, 0 + strb r2, [r0, 0x5] + ldr r1, [r6] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x8] + ldr r0, [r6] + str r2, [r0] + ldr r5, _0810D46C @ =sub_810D4A0 + adds r4, r6, 0 + movs r3, 0 +_0810D448: + ldr r0, [r4] + lsls r1, r2, 1 + adds r0, 0xC + adds r0, r1 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _0810D448 + adds r0, r5, 0 + bl sub_8000544 +_0810D462: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810D468: .4byte gUnknown_203ADCC +_0810D46C: .4byte sub_810D4A0 + thumb_func_end sub_810D3F4 + + thumb_func_start sub_810D470 +sub_810D470: @ 810D470 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80F67B8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_810D470 + + thumb_func_start sub_810D48C +sub_810D48C: @ 810D48C + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_810D48C + + thumb_func_start sub_810D4A0 +sub_810D4A0: @ 810D4A0 + push {lr} +_0810D4A2: + bl sub_810D4C0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810D4BA + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810D4A2 +_0810D4BA: + pop {r0} + bx r0 + thumb_func_end sub_810D4A0 + + thumb_func_start sub_810D4C0 +sub_810D4C0: @ 810D4C0 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0810D4E0 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x14 + bls _0810D4D4 + b _0810D688 +_0810D4D4: + lsls r0, 2 + ldr r1, _0810D4E4 @ =_0810D4E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810D4E0: .4byte gUnknown_30030F0 +_0810D4E4: .4byte _0810D4E8 + .align 2, 0 +_0810D4E8: + .4byte _0810D53C + .4byte _0810D546 + .4byte _0810D54C + .4byte _0810D552 + .4byte _0810D558 + .4byte _0810D55E + .4byte _0810D564 + .4byte _0810D56A + .4byte _0810D584 + .4byte _0810D594 + .4byte _0810D59A + .4byte _0810D5A8 + .4byte _0810D5BA + .4byte _0810D5C0 + .4byte _0810D5C6 + .4byte _0810D5CC + .4byte _0810D608 + .4byte _0810D60E + .4byte _0810D616 + .4byte _0810D630 + .4byte _0810D668 +_0810D53C: + bl sub_80BF768 + bl sub_80F6790 + b _0810D674 +_0810D546: + bl sub_8087E64 + b _0810D674 +_0810D54C: + bl sub_80088F0 + b _0810D674 +_0810D552: + bl sub_8070528 + b _0810D674 +_0810D558: + bl sub_8006B10 + b _0810D674 +_0810D55E: + bl sub_80984D8 + b _0810D674 +_0810D564: + bl sub_80773BC + b _0810D674 +_0810D56A: + bl sub_810D71C + lsls r0, 24 + cmp r0, 0 + beq _0810D5B2 + ldr r0, _0810D580 @ =gUnknown_203ADBC + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0xC] + b _0810D674 + .align 2, 0 +_0810D580: .4byte gUnknown_203ADBC +_0810D584: + bl sub_810D78C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810D592 + b _0810D6A0 +_0810D592: + b _0810D674 +_0810D594: + bl sub_810E8F0 + b _0810D674 +_0810D59A: + bl sub_810DDA4 + bl sub_810DBF0 + bl sub_810DE08 + b _0810D674 +_0810D5A8: + bl sub_810D83C + lsls r0, 24 + cmp r0, 0 + bne _0810D674 +_0810D5B2: + bl sub_810D6AC + movs r0, 0x1 + b _0810D6A2 +_0810D5BA: + bl sub_810D878 + b _0810D674 +_0810D5C0: + bl sub_810DB34 + b _0810D674 +_0810D5C6: + bl sub_80985E4 + b _0810D674 +_0810D5CC: + ldr r0, _0810D5F8 @ =sub_810DEA0 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810D5FC @ =gUnknown_3005E70 + ldr r2, _0810D600 @ =gUnknown_203ADCC + ldrh r1, [r2, 0x4] + ldrh r2, [r2, 0x6] + bl sub_8106FF8 + ldr r2, _0810D604 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x8] + b _0810D674 + .align 2, 0 +_0810D5F8: .4byte sub_810DEA0 +_0810D5FC: .4byte gUnknown_3005E70 +_0810D600: .4byte gUnknown_203ADCC +_0810D604: .4byte gUnknown_3005090 +_0810D608: + bl sub_810DB5C + b _0810D674 +_0810D60E: + movs r0, 0x1D + bl sub_812B1F0 + b _0810D674 +_0810D616: + ldr r0, _0810D62C @ =gUnknown_203ADCC + ldrb r0, [r0, 0x8] + cmp r0, 0x1 + bne _0810D674 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _0810D674 + .align 2, 0 +_0810D62C: .4byte gUnknown_203ADCC +_0810D630: + ldr r0, _0810D64C @ =gUnknown_203ADCC + ldrb r0, [r0, 0x8] + cmp r0, 0x1 + bne _0810D650 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _0810D674 + .align 2, 0 +_0810D64C: .4byte gUnknown_203ADCC +_0810D650: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80A0A48 + movs r0, 0x1 + bl sub_810DE94 + movs r0, 0x2 + bl sub_80722CC + b _0810D674 +_0810D668: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810D6A0 +_0810D674: + ldr r1, _0810D684 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0810D6A0 + .align 2, 0 +_0810D684: .4byte gUnknown_30030F0 +_0810D688: + ldr r0, _0810D698 @ =sub_810D48C + bl sub_80006F4 + ldr r0, _0810D69C @ =sub_810D470 + bl sub_8000544 + movs r0, 0x1 + b _0810D6A2 + .align 2, 0 +_0810D698: .4byte sub_810D48C +_0810D69C: .4byte sub_810D470 +_0810D6A0: + movs r0, 0 +_0810D6A2: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810D4C0 + + thumb_func_start sub_810D6AC +sub_810D6AC: @ 810D6AC + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0810D6DC @ =sub_810D6E8 + movs r1, 0 + bl sub_807741C + ldr r0, _0810D6E0 @ =sub_810D48C + bl sub_80006F4 + ldr r0, _0810D6E4 @ =sub_810D470 + bl sub_8000544 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0810D6DC: .4byte sub_810D6E8 +_0810D6E0: .4byte sub_810D48C +_0810D6E4: .4byte sub_810D470 + thumb_func_end sub_810D6AC + + thumb_func_start sub_810D6E8 +sub_810D6E8: @ 810D6E8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810D714 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0810D70C + ldr r0, _0810D718 @ =gUnknown_203ADCC + ldr r0, [r0] + bl sub_8000544 + bl sub_810DC40 + adds r0, r4, 0 + bl sub_8077508 +_0810D70C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D714: .4byte gUnknown_2037AB8 +_0810D718: .4byte gUnknown_203ADCC + thumb_func_end sub_810D6E8 + + thumb_func_start sub_810D71C +sub_810D71C: @ 810D71C + push {r4,r5,lr} + bl sub_80BF7C8 + ldr r5, _0810D77C @ =gUnknown_203ADC0 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + beq _0810D784 + movs r1, 0 + adds r2, r4, 0 + bl memset + movs r0, 0 + bl sub_8001618 + ldr r1, _0810D780 @ =gUnknown_8453F6C + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r1, [r5] + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x1 + bl sub_80F67A4 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x1 + b _0810D786 + .align 2, 0 +_0810D77C: .4byte gUnknown_203ADC0 +_0810D780: .4byte gUnknown_8453F6C +_0810D784: + movs r0, 0 +_0810D786: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810D71C + + thumb_func_start sub_810D78C +sub_810D78C: @ 810D78C + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _0810D7A8 @ =gUnknown_203ADBC + ldr r0, [r5] + movs r1, 0xC + ldrsh r4, [r0, r1] + cmp r4, 0x1 + beq _0810D7D0 + cmp r4, 0x1 + bgt _0810D7AC + cmp r4, 0 + beq _0810D7B6 + b _0810D814 + .align 2, 0 +_0810D7A8: .4byte gUnknown_203ADBC +_0810D7AC: + cmp r4, 0x2 + beq _0810D7F0 + cmp r4, 0x3 + beq _0810D800 + b _0810D814 +_0810D7B6: + bl sub_80F6808 + ldr r1, _0810D7CC @ =gUnknown_8E85090 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _0810D806 + .align 2, 0 +_0810D7CC: .4byte gUnknown_8E85090 +_0810D7D0: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810D830 + ldr r0, _0810D7E8 @ =gUnknown_8E85458 + ldr r1, _0810D7EC @ =gUnknown_203ADC0 + ldr r1, [r1] + bl sub_800EBB4 + b _0810D806 + .align 2, 0 +_0810D7E8: .4byte gUnknown_8E85458 +_0810D7EC: .4byte gUnknown_203ADC0 +_0810D7F0: + ldr r0, _0810D7FC @ =gUnknown_8E85408 + movs r1, 0 + movs r2, 0x60 + bl sub_80703A8 + b _0810D806 + .align 2, 0 +_0810D7FC: .4byte gUnknown_8E85408 +_0810D800: + ldr r0, _0810D810 @ =gUnknown_83D4240 + bl sub_800EBCC +_0810D806: + ldr r1, [r5] + ldrh r0, [r1, 0xC] + adds r0, 0x1 + strh r0, [r1, 0xC] + b _0810D830 + .align 2, 0 +_0810D810: .4byte gUnknown_83D4240 +_0810D814: + ldr r0, _0810D828 @ =gUnknown_83D4248 + bl sub_800EC28 + ldr r0, _0810D82C @ =gUnknown_203ADBC + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0xC] + movs r0, 0x1 + b _0810D832 + .align 2, 0 +_0810D828: .4byte gUnknown_83D4248 +_0810D82C: .4byte gUnknown_203ADBC +_0810D830: + movs r0, 0 +_0810D832: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810D78C + + thumb_func_start sub_810D83C +sub_810D83C: @ 810D83C + push {r4,lr} + ldr r4, _0810D860 @ =gUnknown_203ADC4 + movs r0, 0xF8 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0810D868 + ldr r4, _0810D864 @ =gUnknown_203ADC8 + movs r0, 0xD9 + lsls r0, 1 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0810D868 + movs r0, 0x1 + b _0810D872 + .align 2, 0 +_0810D860: .4byte gUnknown_203ADC4 +_0810D864: .4byte gUnknown_203ADC8 +_0810D868: + bl sub_810DC40 + bl sub_810D6AC + movs r0, 0 +_0810D872: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810D83C + + thumb_func_start sub_810D878 +sub_810D878: @ 810D878 + push {r4,r5,lr} + movs r4, 0 + b _0810D8A4 +_0810D87E: + ldr r0, _0810D938 @ =gUnknown_3005008 + ldr r0, [r0] + lsls r1, r4, 2 + adds r0, r1 + movs r1, 0xA6 + lsls r1, 2 + adds r0, r1 + ldrh r0, [r0] + bl sub_809A8BC + ldr r1, _0810D93C @ =gUnknown_203ADC4 + ldr r2, [r1] + lsls r1, r4, 3 + adds r1, r2 + str r0, [r1] + str r4, [r1, 0x4] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_0810D8A4: + ldr r0, _0810D940 @ =gUnknown_203ADBC + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r4, r0 + bcc _0810D87E + ldr r0, _0810D93C @ =gUnknown_203ADC4 + ldr r3, [r0] + lsls r0, r4, 3 + adds r0, r3 + ldr r1, _0810D944 @ =gUnknown_84161C1 + str r1, [r0] + movs r1, 0x2 + negs r1, r1 + str r1, [r0, 0x4] + ldr r2, _0810D948 @ =gUnknown_3005E70 + str r3, [r2] + ldr r0, _0810D940 @ =gUnknown_203ADBC + ldr r3, [r0] + ldrb r0, [r3, 0x7] + adds r0, 0x1 + movs r1, 0 + strh r0, [r2, 0xC] + strb r1, [r2, 0x10] + strb r1, [r2, 0x11] + movs r0, 0x9 + strb r0, [r2, 0x12] + movs r1, 0x1 + movs r0, 0x1 + strb r0, [r2, 0x13] + ldrb r0, [r2, 0x16] + movs r4, 0x8 + negs r4, r4 + ands r4, r0 + orrs r4, r1 + movs r0, 0x39 + negs r0, r0 + ands r4, r0 + movs r0, 0x10 + orrs r4, r0 + strb r4, [r2, 0x16] + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r5, 0x2 + orrs r0, r5 + strb r0, [r2, 0x14] + ldrb r1, [r3, 0x6] + strh r1, [r2, 0xE] + ldrb r1, [r2, 0x17] + movs r3, 0x40 + negs r3, r3 + ands r3, r1 + orrs r3, r5 + movs r1, 0xF + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0x14] + movs r0, 0x30 + strb r0, [r2, 0x15] + ldr r0, _0810D94C @ =sub_810D954 + str r0, [r2, 0x4] + ldr r0, _0810D950 @ =sub_810DA20 + str r0, [r2, 0x8] + movs r0, 0x3F + ands r4, r0 + strb r4, [r2, 0x16] + ands r3, r0 + strb r3, [r2, 0x17] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810D938: .4byte gUnknown_3005008 +_0810D93C: .4byte gUnknown_203ADC4 +_0810D940: .4byte gUnknown_203ADBC +_0810D944: .4byte gUnknown_84161C1 +_0810D948: .4byte gUnknown_3005E70 +_0810D94C: .4byte sub_810D954 +_0810D950: .4byte sub_810DA20 + thumb_func_end sub_810D878 + + thumb_func_start sub_810D954 +sub_810D954: @ 810D954 + push {r4,r5,lr} + sub sp, 0x14 + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + beq _0810D968 + movs r0, 0x5 + bl sub_80722CC +_0810D968: + ldr r5, _0810D9BC @ =gUnknown_203ADBC + ldr r1, [r5] + ldrb r0, [r1, 0x4] + cmp r0, 0xFF + bne _0810DA0A + ldrb r1, [r1, 0x5] + movs r0, 0x1 + eors r0, r1 + bl sub_8098940 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0810D9CE + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_810DD68 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, [r5] + ldrb r1, [r0, 0x5] + adds r0, r4, 0 + bl sub_80988E8 + adds r0, r4, 0 + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0810D9C4 + adds r0, r4, 0 + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + muls r1, r0 + ldr r0, _0810D9C0 @ =gUnknown_8247094 + adds r5, r1, r0 + b _0810D9DA + .align 2, 0 +_0810D9BC: .4byte gUnknown_203ADBC +_0810D9C0: .4byte gUnknown_8247094 +_0810D9C4: + adds r0, r4, 0 + bl sub_809A96C + adds r5, r0, 0 + b _0810D9DA +_0810D9CE: + ldr r0, _0810DA14 @ =0x00000177 + ldr r1, [r5] + ldrb r1, [r1, 0x5] + bl sub_80988E8 + ldr r5, _0810DA18 @ =gUnknown_84178BE +_0810D9DA: + ldr r0, _0810DA1C @ =gUnknown_203ADBC + ldr r2, [r0] + ldrb r0, [r2, 0x5] + movs r1, 0x1 + eors r0, r1 + movs r4, 0 + strb r0, [r2, 0x5] + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r1, 0x3 + str r1, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + str r4, [sp, 0xC] + str r1, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_810EA34 +_0810DA0A: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DA14: .4byte 0x00000177 +_0810DA18: .4byte gUnknown_84178BE +_0810DA1C: .4byte gUnknown_203ADBC + thumb_func_end sub_810D954 + + thumb_func_start sub_810DA20 +sub_810DA20: @ 810DA20 + push {r4-r6,lr} + sub sp, 0x14 + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r0, _0810DA4C @ =gUnknown_203ADBC + ldr r0, [r0] + ldrb r1, [r0, 0x4] + cmp r1, 0xFF + beq _0810DA58 + lsls r0, r4, 24 + lsrs r0, 24 + cmp r1, r0 + bne _0810DA50 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_810DAD4 + b _0810DA58 + .align 2, 0 +_0810DA4C: .4byte gUnknown_203ADBC +_0810DA50: + adds r0, r5, 0 + movs r1, 0xFF + bl sub_810DAD4 +_0810DA58: + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0810DA9E + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_810DD80 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _0810DAA8 @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0810DAAC @ =gUnknown_2021D18 + ldr r1, _0810DAB0 @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x6E + bl sub_810EA34 +_0810DA9E: + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810DAA8: .4byte gUnknown_2021CD0 +_0810DAAC: .4byte gUnknown_2021D18 +_0810DAB0: .4byte gUnknown_84162B9 + thumb_func_end sub_810DA20 + + thumb_func_start sub_810DAB4 +sub_810DAB4: @ 810DAB4 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_8107300 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_810DAD4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810DAB4 + + thumb_func_start sub_810DAD4 +sub_810DAD4: @ 810DAD4 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0xFF + bne _0810DB10 + movs r0, 0x2 + movs r1, 0 + bl sub_80F79D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_8004378 + b _0810DB26 +_0810DB10: + ldr r2, _0810DB30 @ =gUnknown_841623B + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r3, 0 + bl sub_810EA34 +_0810DB26: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DB30: .4byte gUnknown_841623B + thumb_func_end sub_810DAD4 + + thumb_func_start sub_810DB34 +sub_810DB34: @ 810DB34 + push {lr} + sub sp, 0x14 + ldr r2, _0810DB58 @ =gUnknown_84178A7 + movs r1, 0x1 + str r1, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r1, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x2 + movs r1, 0 + movs r3, 0 + bl sub_810EA34 + add sp, 0x14 + pop {r0} + bx r0 + .align 2, 0 +_0810DB58: .4byte gUnknown_84178A7 + thumb_func_end sub_810DB34 + + thumb_func_start sub_810DB5C +sub_810DB5C: @ 810DB5C + push {r4,lr} + sub sp, 0x10 + ldr r4, _0810DB90 @ =gUnknown_203ADBC + ldr r1, [r4] + ldrb r0, [r1, 0x7] + ldrb r1, [r1, 0x6] + subs r0, r1 + adds r0, 0x1 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + ldr r0, _0810DB94 @ =gUnknown_203ADD0 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x80 + movs r2, 0x8 + movs r3, 0x68 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DB90: .4byte gUnknown_203ADBC +_0810DB94: .4byte gUnknown_203ADD0 + thumb_func_end sub_810DB5C + + thumb_func_start sub_810DB98 +sub_810DB98: @ 810DB98 + push {r4,lr} + sub sp, 0x10 + ldr r4, _0810DBCC @ =gUnknown_203ADBC + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0xA] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r1, 0xA + str r1, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xD4 + movs r2, 0x78 + movs r3, 0x98 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DBCC: .4byte gUnknown_203ADBC + thumb_func_end sub_810DB98 + + thumb_func_start sub_810DBD0 +sub_810DBD0: @ 810DBD0 + push {r4,lr} + ldr r4, _0810DBEC @ =gUnknown_203ADBC + ldr r1, [r4] + ldrb r0, [r1, 0x8] + cmp r0, 0xFF + beq _0810DBE6 + bl sub_8133C30 + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1, 0x8] +_0810DBE6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DBEC: .4byte gUnknown_203ADBC + thumb_func_end sub_810DBD0 + + thumb_func_start sub_810DBF0 +sub_810DBF0: @ 810DBF0 + push {r4,r5,lr} + ldr r0, _0810DC30 @ =gUnknown_203ADCC + ldrh r1, [r0, 0x4] + adds r4, r0, 0 + ldr r5, _0810DC34 @ =gUnknown_203ADBC + cmp r1, 0 + beq _0810DC14 + ldrh r0, [r4, 0x4] + ldr r1, [r5] + ldrb r3, [r1, 0x6] + adds r0, r3 + ldrb r2, [r1, 0x7] + adds r1, r2, 0x1 + cmp r0, r1 + ble _0810DC14 + subs r0, r3, 0x1 + subs r0, r2, r0 + strh r0, [r4, 0x4] +_0810DC14: + adds r3, r4, 0 + ldrh r0, [r3, 0x4] + ldrh r1, [r3, 0x6] + adds r0, r1 + ldr r1, [r5] + ldrb r1, [r1, 0x7] + adds r2, r1, 0x1 + cmp r0, r2 + blt _0810DC3A + cmp r2, 0x1 + bgt _0810DC38 + movs r0, 0 + strh r0, [r3, 0x6] + b _0810DC3A + .align 2, 0 +_0810DC30: .4byte gUnknown_203ADCC +_0810DC34: .4byte gUnknown_203ADBC +_0810DC38: + strh r1, [r4, 0x6] +_0810DC3A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_810DBF0 + + thumb_func_start sub_810DC40 +sub_810DC40: @ 810DC40 + push {lr} + ldr r0, _0810DC7C @ =gUnknown_203ADBC + ldr r0, [r0] + cmp r0, 0 + beq _0810DC4E + bl sub_8002BC4 +_0810DC4E: + ldr r0, _0810DC80 @ =gUnknown_203ADC0 + ldr r0, [r0] + cmp r0, 0 + beq _0810DC5A + bl sub_8002BC4 +_0810DC5A: + ldr r0, _0810DC84 @ =gUnknown_203ADC4 + ldr r0, [r0] + cmp r0, 0 + beq _0810DC66 + bl sub_8002BC4 +_0810DC66: + ldr r0, _0810DC88 @ =gUnknown_203ADC8 + ldr r0, [r0] + cmp r0, 0 + beq _0810DC72 + bl sub_8002BC4 +_0810DC72: + bl sub_8003ECC + pop {r0} + bx r0 + .align 2, 0 +_0810DC7C: .4byte gUnknown_203ADBC +_0810DC80: .4byte gUnknown_203ADC0 +_0810DC84: .4byte gUnknown_203ADC4 +_0810DC88: .4byte gUnknown_203ADC8 + thumb_func_end sub_810DC40 + + thumb_func_start sub_810DC8C +sub_810DC8C: @ 810DC8C + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810DCB0 @ =gUnknown_203ADCC + ldrb r0, [r0, 0x8] + cmp r0, 0x1 + bne _0810DCB4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _0810DCC4 + .align 2, 0 +_0810DCB0: .4byte gUnknown_203ADCC +_0810DCB4: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80A0A70 + movs r0, 0x3 + bl sub_80722CC +_0810DCC4: + ldr r0, _0810DCDC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0810DCE0 @ =sub_810DCE4 + str r0, [r1] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DCDC: .4byte gUnknown_3005090 +_0810DCE0: .4byte sub_810DCE4 + thumb_func_end sub_810DC8C + + thumb_func_start sub_810DCE4 +sub_810DCE4: @ 810DCE4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0810DD28 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r0, _0810DD2C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0810DD4E + bl sub_80A0AAC + lsls r0, 24 + cmp r0, 0 + bne _0810DD4E + ldrb r0, [r4] + ldr r4, _0810DD30 @ =gUnknown_203ADD0 + adds r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + ldr r0, _0810DD34 @ =gUnknown_203ADBC + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _0810DD38 + bl sub_8000544 + b _0810DD40 + .align 2, 0 +_0810DD28: .4byte gUnknown_3005098 +_0810DD2C: .4byte gUnknown_2037AB8 +_0810DD30: .4byte gUnknown_203ADD0 +_0810DD34: .4byte gUnknown_203ADBC +_0810DD38: + subs r0, r4, 0x4 + ldr r0, [r0] + bl sub_8000544 +_0810DD40: + bl sub_810DBD0 + bl sub_810DC40 + adds r0, r5, 0 + bl sub_8077508 +_0810DD4E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_810DCE4 + + thumb_func_start sub_810DD54 +sub_810DD54: @ 810DD54 + ldr r1, _0810DD64 @ =gUnknown_203ADCC + ldrb r0, [r1, 0x6] + ldrb r1, [r1, 0x4] + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + bx lr + .align 2, 0 +_0810DD64: .4byte gUnknown_203ADCC + thumb_func_end sub_810DD54 + + thumb_func_start sub_810DD68 +sub_810DD68: @ 810DD68 + lsls r0, 16 + ldr r1, _0810DD7C @ =gUnknown_3005008 + ldr r1, [r1] + lsrs r0, 14 + adds r1, r0 + movs r0, 0xA6 + lsls r0, 2 + adds r1, r0 + ldrh r0, [r1] + bx lr + .align 2, 0 +_0810DD7C: .4byte gUnknown_3005008 + thumb_func_end sub_810DD68 + + thumb_func_start sub_810DD80 +sub_810DD80: @ 810DD80 + push {lr} + lsls r0, 16 + ldr r1, _0810DD9C @ =gUnknown_3005008 + lsrs r0, 14 + ldr r1, [r1] + adds r0, r1 + ldr r1, _0810DDA0 @ =0x0000029a + adds r0, r1 + bl sub_8099DD8 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_0810DD9C: .4byte gUnknown_3005008 +_0810DDA0: .4byte 0x0000029a + thumb_func_end sub_810DD80 + + thumb_func_start sub_810DDA4 +sub_810DDA4: @ 810DDA4 + push {r4,r5,lr} + bl sub_809A4E8 + ldr r4, _0810DE00 @ =gUnknown_203ADBC + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x7] + movs r2, 0 + ldr r3, _0810DE04 @ =gUnknown_3005008 + ldr r0, [r3] + movs r1, 0xA6 + lsls r1, 2 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _0810DDEA + adds r5, r4, 0 + adds r4, r3, 0 + adds r3, r1, 0 +_0810DDCA: + ldr r0, [r5] + ldrb r1, [r0, 0x7] + adds r1, 0x1 + strb r1, [r0, 0x7] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x1D + bhi _0810DDEA + ldr r0, [r4] + lsls r1, r2, 2 + adds r0, r1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, 0 + bne _0810DDCA +_0810DDEA: + ldr r0, _0810DE00 @ =gUnknown_203ADBC + ldr r1, [r0] + ldrb r0, [r1, 0x7] + adds r0, 0x1 + cmp r0, 0x6 + ble _0810DDF8 + movs r0, 0x6 +_0810DDF8: + strb r0, [r1, 0x6] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DE00: .4byte gUnknown_203ADBC +_0810DE04: .4byte gUnknown_3005008 + thumb_func_end sub_810DDA4 + + thumb_func_start sub_810DE08 +sub_810DE08: @ 810DE08 + push {r4-r6,lr} + ldr r0, _0810DE64 @ =gUnknown_203ADCC + ldrh r1, [r0, 0x6] + adds r6, r0, 0 + cmp r1, 0x3 + bls _0810DE5C + movs r4, 0 + ldrh r0, [r6, 0x6] + subs r0, 0x3 + cmp r4, r0 + bgt _0810DE5C + ldrh r1, [r6, 0x4] + ldr r5, _0810DE68 @ =gUnknown_203ADBC + ldr r2, [r5] + ldrb r0, [r2, 0x6] + adds r1, r0 + ldrb r0, [r2, 0x7] + adds r0, 0x1 + cmp r1, r0 + beq _0810DE5C + adds r3, r6, 0 +_0810DE32: + ldrh r0, [r3, 0x6] + subs r0, 0x1 + strh r0, [r3, 0x6] + ldrh r0, [r3, 0x4] + adds r0, 0x1 + strh r0, [r3, 0x4] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r0, [r3, 0x6] + subs r0, 0x3 + cmp r4, r0 + bgt _0810DE5C + ldrh r1, [r6, 0x4] + ldr r2, [r5] + ldrb r0, [r2, 0x6] + adds r1, r0 + ldrb r0, [r2, 0x7] + adds r0, 0x1 + cmp r1, r0 + bne _0810DE32 +_0810DE5C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810DE64: .4byte gUnknown_203ADCC +_0810DE68: .4byte gUnknown_203ADBC + thumb_func_end sub_810DE08 + + thumb_func_start sub_810DE6C +sub_810DE6C: @ 810DE6C + push {lr} + sub sp, 0x8 + movs r1, 0x6 + str r1, [sp] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0xE + movs r3, 0x1E + bl sub_80F6B08 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_810DE6C + + thumb_func_start sub_810DE94 +sub_810DE94: @ 810DE94 + ldr r1, _0810DE9C @ =gUnknown_203ADCC + strb r0, [r1, 0x8] + bx lr + .align 2, 0 +_0810DE9C: .4byte gUnknown_203ADCC + thumb_func_end sub_810DE94 + + thumb_func_start sub_810DEA0 +sub_810DEA0: @ 810DEA0 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0810DF10 @ =gUnknown_3005098 + adds r6, r0, r1 + ldr r0, _0810DF14 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0810DF9E + bl sub_80A0A98 + lsls r0, 24 + cmp r0, 0 + bne _0810DF9E + ldr r0, _0810DF18 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0810DF20 + ldrb r0, [r6] + mov r4, sp + adds r4, 0x2 + mov r1, sp + adds r2, r4, 0 + bl sub_81072D4 + mov r0, sp + ldrh r1, [r0] + ldrh r0, [r4] + adds r1, r0 + ldr r0, _0810DF1C @ =gUnknown_203ADBC + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r1, r0 + beq _0810DF20 + movs r0, 0x5 + bl sub_80722CC + mov r0, sp + ldrh r1, [r4] + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + adds r0, r5, 0 + bl sub_810DFE0 + b _0810DF9E + .align 2, 0 +_0810DF10: .4byte gUnknown_3005098 +_0810DF14: .4byte gUnknown_2037AB8 +_0810DF18: .4byte gUnknown_30030F0 +_0810DF1C: .4byte gUnknown_203ADBC +_0810DF20: + ldrb r0, [r6] + bl sub_8107078 + adds r4, r0, 0 + ldrb r0, [r6] + ldr r1, _0810DF44 @ =gUnknown_203ADD0 + adds r2, r1, 0x2 + bl sub_81072D4 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0810DF48 + adds r0, 0x1 + cmp r4, r0 + bne _0810DF6C + b _0810DF9E + .align 2, 0 +_0810DF44: .4byte gUnknown_203ADD0 +_0810DF48: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_810DE94 + ldr r0, _0810DF64 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _0810DF68 @ =sub_810DC8C + str r0, [r1] + b _0810DF9E + .align 2, 0 +_0810DF64: .4byte gUnknown_3005090 +_0810DF68: .4byte sub_810DC8C +_0810DF6C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_810DE6C + bl sub_810DBD0 + strh r4, [r6, 0x2] + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_810DD80 + strh r0, [r6, 0x4] + ldrb r0, [r6] + movs r1, 0x2 + bl sub_810DAB4 + ldr r1, _0810DFA8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810DFAC @ =sub_810E274 + str r1, [r0] +_0810DF9E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810DFA8: .4byte gUnknown_3005090 +_0810DFAC: .4byte sub_810E274 + thumb_func_end sub_810DEA0 + + thumb_func_start sub_810DFB0 +sub_810DFB0: @ 810DFB0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + bl sub_810DE6C + bl sub_810DB5C + ldr r1, _0810DFD8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810DFDC @ =sub_810DEA0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DFD8: .4byte gUnknown_3005090 +_0810DFDC: .4byte sub_810DEA0 + thumb_func_end sub_810DFB0 + + thumb_func_start sub_810DFE0 +sub_810DFE0: @ 810DFE0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x14 + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, r0, 2 + adds r5, r0 + lsls r5, 3 + ldr r0, _0810E09C @ =gUnknown_3005098 + mov r8, r0 + adds r6, r5, r0 + ldrb r0, [r6] + movs r1, 0x10 + movs r2, 0x1 + bl sub_8107BD0 + strh r4, [r6, 0x2] + ldr r0, _0810E0A0 @ =gUnknown_203ADBC + ldr r0, [r0] + movs r1, 0 + mov r9, r1 + strb r4, [r0, 0x4] + ldr r4, _0810E0A4 @ =gUnknown_2021CD0 + ldrh r0, [r6, 0x2] + bl sub_810DD68 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r4, _0810E0A8 @ =gUnknown_2021D18 + ldr r1, _0810E0AC @ =gUnknown_841633F + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r1, 0x3 + str r1, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r1, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_810EA34 + movs r4, 0x20 + negs r4, r4 + ldrb r0, [r6] + bl sub_8107300 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80986A8 + movs r0, 0 + bl sub_8098660 + ldrb r0, [r6] + movs r1, 0x2 + bl sub_810DAB4 + movs r1, 0x8 + negs r1, r1 + add r8, r1 + add r5, r8 + ldr r0, _0810E0B0 @ =sub_810E0B4 + str r0, [r5] + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E09C: .4byte gUnknown_3005098 +_0810E0A0: .4byte gUnknown_203ADBC +_0810E0A4: .4byte gUnknown_2021CD0 +_0810E0A8: .4byte gUnknown_2021D18 +_0810E0AC: .4byte gUnknown_841633F +_0810E0B0: .4byte sub_810E0B4 + thumb_func_end sub_810DFE0 + + thumb_func_start sub_810E0B4 +sub_810E0B4: @ 810E0B4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + mov r8, r6 + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + ldr r0, _0810E11C @ =gUnknown_3005098 + adds r4, r0 + ldrb r0, [r4] + bl sub_8107078 + ldrb r0, [r4] + ldr r7, _0810E120 @ =gUnknown_203ADD0 + adds r2, r7, 0x2 + adds r1, r7, 0 + bl sub_81072D4 + movs r5, 0x20 + negs r5, r5 + ldrb r0, [r4] + bl sub_8107300 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_80986A8 + ldr r0, _0810E124 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0 + beq _0810E12C + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0810E128 @ =gUnknown_203ADBC + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1, 0x4] + subs r0, r7, 0x4 + ldrh r1, [r0, 0x4] + ldrh r0, [r0, 0x6] + adds r1, r0 + adds r0, r6, 0 + bl sub_810E160 + b _0810E150 + .align 2, 0 +_0810E11C: .4byte gUnknown_3005098 +_0810E120: .4byte gUnknown_203ADD0 +_0810E124: .4byte gUnknown_30030F0 +_0810E128: .4byte gUnknown_203ADBC +_0810E12C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810E150 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0810E15C @ =gUnknown_203ADBC + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1, 0x4] + subs r0, r7, 0x4 + ldrh r1, [r0, 0x4] + ldrh r0, [r0, 0x6] + adds r1, r0 + mov r0, r8 + bl sub_810E200 +_0810E150: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E15C: .4byte gUnknown_203ADBC + thumb_func_end sub_810E0B4 + + thumb_func_start sub_810E160 +sub_810E160: @ 810E160 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r7, r0, 3 + ldr r0, _0810E190 @ =gUnknown_3005098 + mov r8, r0 + adds r6, r7, r0 + movs r0, 0x2 + ldrsh r1, [r6, r0] + cmp r1, r4 + beq _0810E186 + subs r0, r4, 0x1 + cmp r1, r0 + bne _0810E194 +_0810E186: + adds r0, r2, 0 + adds r1, r4, 0 + bl sub_810E200 + b _0810E1E6 + .align 2, 0 +_0810E190: .4byte gUnknown_3005098 +_0810E194: + ldr r0, _0810E1F0 @ =gUnknown_3005008 + ldr r0, [r0] + movs r2, 0xA6 + lsls r2, 2 + adds r0, r2 + adds r2, r4, 0 + bl sub_8108D60 + ldrb r0, [r6] + ldr r5, _0810E1F4 @ =gUnknown_203ADD0 + adds r2, r5, 0x2 + adds r1, r5, 0 + bl sub_810713C + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, r4 + bcs _0810E1C0 + subs r1, r5, 0x4 + ldrh r0, [r1, 0x6] + subs r0, 0x1 + strh r0, [r1, 0x6] +_0810E1C0: + bl sub_810D878 + ldr r0, _0810E1F8 @ =gUnknown_3005E70 + subs r2, r5, 0x4 + ldrh r1, [r2, 0x4] + ldrh r2, [r2, 0x6] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6] + movs r0, 0x1 + bl sub_8098660 + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0810E1FC @ =sub_810DEA0 + str r1, [r0] +_0810E1E6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E1F0: .4byte gUnknown_3005008 +_0810E1F4: .4byte gUnknown_203ADD0 +_0810E1F8: .4byte gUnknown_3005E70 +_0810E1FC: .4byte sub_810DEA0 + thumb_func_end sub_810E160 + + thumb_func_start sub_810E200 +sub_810E200: @ 810E200 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r7, r1, 3 + ldr r0, _0810E264 @ =gUnknown_3005098 + mov r8, r0 + adds r6, r7, r0 + ldrb r0, [r6] + ldr r5, _0810E268 @ =gUnknown_203ADD0 + adds r2, r5, 0x2 + adds r1, r5, 0 + bl sub_810713C + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, r4 + bcs _0810E234 + subs r1, r5, 0x4 + ldrh r0, [r1, 0x6] + subs r0, 0x1 + strh r0, [r1, 0x6] +_0810E234: + bl sub_810D878 + ldr r0, _0810E26C @ =gUnknown_3005E70 + subs r2, r5, 0x4 + ldrh r1, [r2, 0x4] + ldrh r2, [r2, 0x6] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6] + movs r0, 0x1 + bl sub_8098660 + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0810E270 @ =sub_810DEA0 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E264: .4byte gUnknown_3005098 +_0810E268: .4byte gUnknown_203ADD0 +_0810E26C: .4byte gUnknown_3005E70 +_0810E270: .4byte sub_810DEA0 + thumb_func_end sub_810E200 + + thumb_func_start sub_810E274 +sub_810E274: @ 810E274 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0810E340 @ =gUnknown_3005098 + mov r9, r0 + adds r6, r4, r0 + movs r0, 0x4 + bl sub_810EA9C + movs r0, 0 + bl sub_810EAB4 + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r5, 0x3 + str r5, [sp, 0x4] + ldr r0, _0810E344 @ =gUnknown_8453F74 + str r0, [sp, 0x8] + movs r0, 0x4 + movs r1, 0x2 + movs r2, 0x8 + movs r3, 0x2 + bl sub_810FB6C + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + str r5, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + movs r0, 0x4 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + ldrh r0, [r6, 0x2] + bl sub_810DD68 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0810E348 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r6, _0810E34C @ =gUnknown_2021D18 + ldr r1, _0810E350 @ =gUnknown_84162FF + adds r0, r6, 0 + bl sub_8008FCC + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + str r5, [sp, 0xC] + str r0, [sp, 0x10] + mov r0, r8 + movs r1, 0x2 + adds r2, r6, 0 + movs r3, 0 + bl sub_810EA34 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x8 + negs r0, r0 + add r9, r0 + add r4, r9 + ldr r0, _0810E354 @ =sub_810E358 + str r0, [r4] + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E340: .4byte gUnknown_3005098 +_0810E344: .4byte gUnknown_8453F74 +_0810E348: .4byte gUnknown_2021CD0 +_0810E34C: .4byte gUnknown_2021D18 +_0810E350: .4byte gUnknown_84162FF +_0810E354: .4byte sub_810E358 + thumb_func_end sub_810E274 + + thumb_func_start sub_810E358 +sub_810E358: @ 810E358 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_810FA04 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0810E39A + adds r0, 0x1 + cmp r4, r0 + bne _0810E384 + movs r0, 0x5 + bl sub_80722CC + adds r0, r5, 0 + bl sub_810E8A0 + b _0810E39A +_0810E384: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0810E3A0 @ =gUnknown_8453F74 + lsls r1, r4, 3 + adds r0, 0x4 + adds r1, r0 + ldr r1, [r1] + adds r0, r6, 0 + bl _call_via_r1 +_0810E39A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E3A0: .4byte gUnknown_8453F74 + thumb_func_end sub_810E358 + + thumb_func_start sub_810E3A4 +sub_810E3A4: @ 810E3A4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + ldr r7, _0810E3F0 @ =gUnknown_3005098 + adds r4, r6, r7 + movs r0, 0x4 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0 + bl sub_810EAF0 + movs r0, 0x4 + bl sub_80040B8 + movs r0, 0x1 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0x2] + bl sub_810DD80 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _0810E3F4 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + adds r0, r5, 0 + bl sub_810E418 + b _0810E40E + .align 2, 0 +_0810E3F0: .4byte gUnknown_3005098 +_0810E3F4: + movs r0, 0 + bl sub_8003FA0 + ldrh r0, [r4, 0x2] + bl sub_810E5E0 + bl sub_810DB98 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0810E414 @ =sub_810E6D8 + str r1, [r0] +_0810E40E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E414: .4byte sub_810E6D8 + thumb_func_end sub_810E3A4 + + thumb_func_start sub_810E418 +sub_810E418: @ 810E418 + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _0810E49C @ =gUnknown_3005098 + adds r5, r6, r7 + ldrh r0, [r5, 0x2] + bl sub_810DD68 + lsls r0, 16 + lsrs r4, r0, 16 + ldrh r1, [r5, 0x10] + adds r0, r4, 0 + bl sub_809A084 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810E4B8 + ldr r3, _0810E4A0 @ =0x0000ffff + movs r0, 0x1D + movs r1, 0 + adds r2, r4, 0 + bl sub_80A2294 + ldr r1, _0810E4A4 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r0, _0810E4A8 @ =gUnknown_2021CF0 + movs r2, 0x10 + ldrsh r1, [r5, r2] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0810E4AC @ =gUnknown_2021D18 + ldr r1, _0810E4B0 @ =gUnknown_84177C5 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0x2 + bl sub_810EAB4 + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_8002C48 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0810E4B4 @ =sub_810E4F4 + b _0810E4E0 + .align 2, 0 +_0810E49C: .4byte gUnknown_3005098 +_0810E4A0: .4byte 0x0000ffff +_0810E4A4: .4byte gUnknown_2021CD0 +_0810E4A8: .4byte gUnknown_2021CF0 +_0810E4AC: .4byte gUnknown_2021D18 +_0810E4B0: .4byte gUnknown_84177C5 +_0810E4B4: .4byte sub_810E4F4 +_0810E4B8: + movs r0, 0x2 + bl sub_810EAB4 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r2, _0810E4EC @ =gUnknown_841778A + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0810E4F0 @ =sub_810E548 +_0810E4E0: + str r1, [r0] + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E4EC: .4byte gUnknown_841778A +_0810E4F0: .4byte sub_810E548 + thumb_func_end sub_810E418 + + thumb_func_start sub_810E4F4 +sub_810E4F4: @ 810E4F4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0810E540 @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _0810E544 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0810E51A + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810E53A +_0810E51A: + movs r0, 0x5 + bl sub_80722CC + ldrh r0, [r5, 0x2] + bl sub_810DD68 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r5, 0x10] + bl sub_809A460 + bl sub_809A4E8 + adds r0, r4, 0 + bl sub_810E578 +_0810E53A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E540: .4byte gUnknown_3005098 +_0810E544: .4byte gUnknown_30030F0 + thumb_func_end sub_810E4F4 + + thumb_func_start sub_810E548 +sub_810E548: @ 810E548 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0810E574 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0810E562 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810E56E +_0810E562: + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_810E578 +_0810E56E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E574: .4byte gUnknown_30030F0 + thumb_func_end sub_810E548 + + thumb_func_start sub_810E578 +sub_810E578: @ 810E578 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r5, r6, 2 + adds r5, r6 + lsls r5, 3 + ldr r0, _0810E5D4 @ =gUnknown_3005098 + adds r5, r0 + movs r0, 0x2 + bl sub_810EAF0 + movs r0, 0x1 + bl sub_8003FA0 + ldrb r0, [r5] + ldr r4, _0810E5D8 @ =gUnknown_203ADD0 + adds r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + bl sub_810DDA4 + bl sub_810DBF0 + bl sub_810D878 + ldr r0, _0810E5DC @ =gUnknown_3005E70 + subs r4, 0x4 + ldrh r1, [r4, 0x4] + ldrh r2, [r4, 0x6] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + bl sub_80F67A4 + adds r0, r6, 0 + bl sub_810DFB0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E5D4: .4byte gUnknown_3005098 +_0810E5D8: .4byte gUnknown_203ADD0 +_0810E5DC: .4byte gUnknown_3005E70 + thumb_func_end sub_810E578 + + thumb_func_start sub_810E5E0 +sub_810E5E0: @ 810E5E0 + push {r4-r6,lr} + sub sp, 0x14 + lsls r0, 16 + lsrs r0, 16 + bl sub_810DD68 + lsls r0, 16 + lsrs r0, 16 + ldr r6, _0810E660 @ =gUnknown_2021CD0 + adds r1, r6, 0 + bl sub_8099E90 + ldr r5, _0810E664 @ =gUnknown_2021D18 + ldr r1, _0810E668 @ =gUnknown_84177AC + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x1 + bl sub_810EAB4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + str r1, [sp] + movs r4, 0 + str r4, [sp, 0x4] + str r4, [sp, 0x8] + adds r2, r5, 0 + movs r3, 0 + bl sub_8002C48 + adds r0, r6, 0 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x3 + bl sub_8008E78 + ldr r1, _0810E66C @ =gUnknown_84162B9 + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x3 + bl sub_810EA9C + movs r0, 0xA + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + str r4, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x3 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0x8 + bl sub_810EA34 + movs r0, 0 + bl sub_80F67A4 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E660: .4byte gUnknown_2021CD0 +_0810E664: .4byte gUnknown_2021D18 +_0810E668: .4byte gUnknown_84177AC +_0810E66C: .4byte gUnknown_84162B9 + thumb_func_end sub_810E5E0 + + thumb_func_start sub_810E670 +sub_810E670: @ 810E670 + push {r4,lr} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x1C + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x11 + movs r2, 0xA + movs r3, 0xA + bl sub_8004378 + ldr r0, _0810E6CC @ =gUnknown_2021CD0 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0810E6D0 @ =gUnknown_2021D18 + ldr r1, _0810E6D4 @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r0, 0x3 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x8 + bl sub_810EA34 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E6CC: .4byte gUnknown_2021CD0 +_0810E6D0: .4byte gUnknown_2021D18 +_0810E6D4: .4byte gUnknown_84162B9 + thumb_func_end sub_810E670 + + thumb_func_start sub_810E6D8 +sub_810E6D8: @ 810E6D8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0810E708 @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x10 + ldrh r1, [r4, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810E70C + movs r1, 0x10 + ldrsh r0, [r4, r1] + bl sub_810E670 + b _0810E796 + .align 2, 0 +_0810E708: .4byte gUnknown_3005098 +_0810E70C: + ldr r0, _0810E74C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810E750 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_810EAF0 + movs r0, 0x3 + bl sub_80040B8 + movs r0, 0 + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810DAB4 + movs r0, 0 + bl sub_80F67A4 + bl sub_810DBD0 + adds r0, r5, 0 + bl sub_810E418 + b _0810E796 + .align 2, 0 +_0810E74C: .4byte gUnknown_30030F0 +_0810E750: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810E796 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x3 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x1 + bl sub_810EAF0 + movs r0, 0x3 + bl sub_80040B8 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810DAB4 + movs r0, 0 + bl sub_80F67A4 + bl sub_810DBD0 + adds r0, r6, 0 + bl sub_810DFB0 +_0810E796: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_810E6D8 + + thumb_func_start sub_810E79C +sub_810E79C: @ 810E79C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _0810E7DC + movs r0, 0x4 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0 + bl sub_810EAF0 + movs r0, 0x4 + bl sub_80040B8 + movs r0, 0 + bl sub_8003FA0 + ldr r1, _0810E7D4 @ =gUnknown_841632A + ldr r2, _0810E7D8 @ =sub_810E848 + adds r0, r4, 0 + bl sub_810EB30 + b _0810E7EA + .align 2, 0 +_0810E7D4: .4byte gUnknown_841632A +_0810E7D8: .4byte sub_810E848 +_0810E7DC: + ldr r0, _0810E7F0 @ =gUnknown_203ADBC + ldr r1, [r0] + ldr r0, _0810E7F4 @ =sub_810E7F8 + str r0, [r1] + adds r0, r4, 0 + bl sub_810DC8C +_0810E7EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E7F0: .4byte gUnknown_203ADBC +_0810E7F4: .4byte sub_810E7F8 + thumb_func_end sub_810E79C + + thumb_func_start sub_810E7F8 +sub_810E7F8: @ 810E7F8 + push {lr} + sub sp, 0xC + movs r0, 0x6 + str r0, [sp] + ldr r0, _0810E82C @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _0810E830 @ =sub_810E838 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + movs r3, 0 + bl sub_811EA44 + bl sub_810DD54 + lsls r0, 24 + lsrs r0, 24 + bl sub_810DD68 + ldr r1, _0810E834 @ =gUnknown_203B0A0 + strh r0, [r1, 0xC] + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0810E82C: .4byte sub_811FB28 +_0810E830: .4byte sub_810E838 +_0810E834: .4byte gUnknown_203B0A0 + thumb_func_end sub_810E7F8 + + thumb_func_start sub_810E838 +sub_810E838: @ 810E838 + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_810D3F4 + pop {r0} + bx r0 + thumb_func_end sub_810E838 + + thumb_func_start sub_810E848 +sub_810E848: @ 810E848 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0810E898 @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _0810E89C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810E892 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x5 + movs r1, 0 + bl sub_810F260 + movs r0, 0x5 + bl sub_80040B8 + movs r0, 0x1 + bl sub_8003FA0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_810DAB4 + movs r0, 0 + bl sub_80F67A4 + adds r0, r4, 0 + bl sub_810DFB0 +_0810E892: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E898: .4byte gUnknown_3005098 +_0810E89C: .4byte gUnknown_30030F0 + thumb_func_end sub_810E848 + + thumb_func_start sub_810E8A0 +sub_810E8A0: @ 810E8A0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _0810E8EC @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x4 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0 + bl sub_810EAF0 + movs r0, 0x4 + bl sub_80040B8 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810DAB4 + movs r0, 0 + bl sub_80F67A4 + adds r0, r5, 0 + bl sub_810DFB0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E8EC: .4byte gUnknown_3005098 + thumb_func_end sub_810E8A0 + + thumb_func_start sub_810E8F0 +sub_810E8F0: @ 810E8F0 + push {r4,lr} + ldr r0, _0810E974 @ =gUnknown_8453F98 + bl sub_8003B24 + bl sub_8002C28 + movs r1, 0xF0 + lsls r1, 2 + movs r0, 0 + movs r2, 0xE0 + bl sub_815001C + ldr r1, _0810E978 @ =0x000003a3 + movs r0, 0 + movs r2, 0xC0 + bl sub_814FF2C + movs r1, 0xEB + lsls r1, 2 + movs r0, 0 + movs r2, 0xB0 + bl sub_814FEAC + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0810E97C @ =gUnknown_841F408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r4, 0 +_0810E938: + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0810E938 + movs r0, 0 + bl sub_80F67A4 + movs r4, 0 + ldr r3, _0810E980 @ =gUnknown_203ADD8 + movs r2, 0xFF +_0810E95C: + adds r0, r4, r3 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0810E95C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E974: .4byte gUnknown_8453F98 +_0810E978: .4byte 0x000003a3 +_0810E97C: .4byte gUnknown_841F408 +_0810E980: .4byte gUnknown_203ADD8 + thumb_func_end sub_810E8F0 + + thumb_func_start sub_810E984 +sub_810E984: @ 810E984 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + ldr r6, [sp, 0x28] + ldr r4, [sp, 0x2C] + mov r8, r4 + ldr r4, [sp, 0x30] + mov r9, r4 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r6, 24 + lsrs r6, 24 + mov r4, r8 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + mov r4, r9 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + str r1, [sp] + mov r1, sp + strb r0, [r1, 0x4] + movs r0, 0x3 + strb r0, [r1, 0x5] + mov r0, sp + strb r2, [r0, 0x6] + strb r3, [r0, 0x7] + strb r2, [r0, 0x8] + strb r3, [r0, 0x9] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r5, 0xF + adds r0, r5, 0 + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r4, 0x10 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + strb r0, [r2, 0xD] + mov r1, sp + movs r0, 0x30 + strb r0, [r1, 0xD] + movs r0, 0x3 + movs r1, 0x4 + bl sub_80F79D8 + mov r1, sp + ands r5, r0 + ldrb r0, [r1, 0xC] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, 0xC] + movs r0, 0x3 + movs r1, 0x2 + bl sub_80F79D8 + mov r1, sp + adds r6, r0 + strb r6, [r1, 0xA] + movs r0, 0x3 + movs r1, 0x3 + bl sub_80F79D8 + mov r1, sp + add r8, r0 + mov r0, r8 + strb r0, [r1, 0xB] + mov r0, sp + mov r1, r9 + movs r2, 0 + bl sub_8002CF4 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_810E984 + + thumb_func_start sub_810EA34 +sub_810EA34: @ 810EA34 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r3 + ldr r3, [sp, 0x30] + ldr r4, [sp, 0x34] + ldr r6, [sp, 0x38] + ldr r5, [sp, 0x3C] + mov r8, r5 + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + mov r9, r7 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r6, [sp, 0x4] + lsls r4, r5, 1 + adds r4, r5 + ldr r5, _0810EA98 @ =gUnknown_8453F8C + adds r4, r5 + str r4, [sp, 0x8] + mov r4, r8 + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + str r2, [sp, 0x10] + mov r2, r9 + bl sub_812E5A4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810EA98: .4byte gUnknown_8453F8C + thumb_func_end sub_810EA34 + + thumb_func_start sub_810EA9C +sub_810EA9C: @ 810EA9C + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xF0 + lsls r2, 2 + movs r1, 0 + movs r3, 0xE + bl sub_810F2E8 + pop {r0} + bx r0 + thumb_func_end sub_810EA9C + + thumb_func_start sub_810EAB4 +sub_810EAB4: @ 810EAB4 + push {r4,lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0810EAE4 @ =gUnknown_203ADD8 + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, 0xFF + bne _0810EADC + lsls r0, r1, 3 + ldr r1, _0810EAE8 @ =gUnknown_8453FD0 + adds r0, r1 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + ldr r2, _0810EAEC @ =0x000003a3 + movs r1, 0x1 + movs r3, 0xC + bl sub_810F2E8 +_0810EADC: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0810EAE4: .4byte gUnknown_203ADD8 +_0810EAE8: .4byte gUnknown_8453FD0 +_0810EAEC: .4byte 0x000003a3 + thumb_func_end sub_810EAB4 + + thumb_func_start sub_810EAF0 +sub_810EAF0: @ 810EAF0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810EB1C @ =gUnknown_203ADD8 + adds r4, r0 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810EB1C: .4byte gUnknown_203ADD8 + thumb_func_end sub_810EAF0 + + thumb_func_start sub_810EB20 +sub_810EB20: @ 810EB20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810EB2C @ =gUnknown_203ADD8 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0810EB2C: .4byte gUnknown_203ADD8 + thumb_func_end sub_810EB20 + + thumb_func_start sub_810EB30 +sub_810EB30: @ 810EB30 + push {r4-r6,lr} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xEB + lsls r2, 2 + movs r1, 0x2 + str r1, [sp] + str r0, [sp, 0x4] + str r5, [sp, 0x8] + str r6, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0x5 + movs r3, 0xB + bl sub_80BF474 + movs r0, 0 + bl sub_80F67A4 + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_810EB30 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_use.s b/asm/item_use.s new file mode 100644 index 000000000..a5abaf387 --- /dev/null +++ b/asm/item_use.s @@ -0,0 +1,2410 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0FBC +sub_80A0FBC: @ 80A0FBC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080A0FD8 @ =gUnknown_203AD30 + ldrh r0, [r1] + cmp r0, 0xAF + bne _080A0FE0 + ldr r0, _080A0FDC @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrb r0, [r1, 0x10] + b _080A0FE6 + .align 2, 0 +_080A0FD8: .4byte gUnknown_203AD30 +_080A0FDC: .4byte gUnknown_3005090 +_080A0FE0: + ldrh r0, [r1] + bl sub_809A9FC +_080A0FE6: + subs r0, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1010 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bne _080A1018 + ldr r0, _080A1014 @ =gUnknown_83E2954 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_813D934 + adds r0, r5, 0 + bl sub_813D808 + b _080A1032 + .align 2, 0 +_080A1010: .4byte gUnknown_203AD30 +_080A1014: .4byte gUnknown_83E2954 +_080A1018: + ldr r0, _080A1038 @ =gUnknown_83E2954 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_8108EE0 + cmp r4, 0x1 + bne _080A102C + bl sub_8108CB4 +_080A102C: + adds r0, r5, 0 + bl sub_8108B50 +_080A1032: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1038: .4byte gUnknown_83E2954 + thumb_func_end sub_80A0FBC + + thumb_func_start sub_80A103C +sub_80A103C: @ 80A103C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080A1064 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080A1070 + ldr r1, _080A1068 @ =gUnknown_3005020 + ldr r0, _080A106C @ =sub_80A1084 + str r0, [r1] + adds r0, r2, 0 + bl sub_80A0FBC + b _080A107A + .align 2, 0 +_080A1064: .4byte gUnknown_3005090 +_080A1068: .4byte gUnknown_3005020 +_080A106C: .4byte sub_80A1084 +_080A1070: + ldr r0, _080A1080 @ =gUnknown_2039998 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 +_080A107A: + pop {r0} + bx r0 + .align 2, 0 +_080A1080: .4byte gUnknown_2039998 + thumb_func_end sub_80A103C + + thumb_func_start sub_80A1084 +sub_80A1084: @ 80A1084 + push {lr} + bl sub_807DC00 + ldr r0, _080A1098 @ =sub_80A109C + movs r1, 0x8 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080A1098: .4byte sub_80A109C + thumb_func_end sub_80A1084 + + thumb_func_start sub_80A109C +sub_80A109C: @ 80A109C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A10B8 + ldr r0, _080A10C0 @ =gUnknown_2039998 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 +_080A10B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A10C0: .4byte gUnknown_2039998 + thumb_func_end sub_80A109C + + thumb_func_start sub_80A10C4 +sub_80A10C4: @ 80A10C4 + push {r4-r7,lr} + adds r4, r1, 0 + adds r1, r3, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r5, _080A10F0 @ =gUnknown_2021D18 + adds r0, r5, 0 + bl sub_8008FCC + cmp r4, 0 + bne _080A10F8 + ldr r3, _080A10F4 @ =sub_810A1F8 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_8108E70 + b _080A1104 + .align 2, 0 +_080A10F0: .4byte gUnknown_2021D18 +_080A10F4: .4byte sub_810A1F8 +_080A10F8: + ldr r3, _080A110C @ =sub_80A112C + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80F7808 +_080A1104: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A110C: .4byte sub_80A112C + thumb_func_end sub_80A10C4 + + thumb_func_start sub_80A1110 +sub_80A1110: @ 80A1110 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _080A1128 @ =gUnknown_8416425 + movs r2, 0x4 + bl sub_80A10C4 + pop {r0} + bx r0 + .align 2, 0 +_080A1128: .4byte gUnknown_8416425 + thumb_func_end sub_80A1110 + + thumb_func_start sub_80A112C +sub_80A112C: @ 80A112C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + adds r0, r4, 0 + bl sub_8077508 + bl sub_80696C0 + bl sub_806994C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A112C + + thumb_func_start sub_80A1150 +sub_80A1150: @ 80A1150 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080A1168 + movs r0, 0x1 + b _080A117E +_080A1168: + adds r0, r4, 0 + bl sub_809AA20 + ldr r1, _080A1178 @ =sub_80A1750 + cmp r0, r1 + beq _080A117C + movs r0, 0 + b _080A117E + .align 2, 0 +_080A1178: .4byte sub_80A1750 +_080A117C: + movs r0, 0x2 +_080A117E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80A1150 + + thumb_func_start sub_80A1184 +sub_80A1184: @ 80A1184 + ldr r1, _080A118C @ =gUnknown_3005024 + ldr r0, _080A1190 @ =sub_80A1194 + str r0, [r1] + bx lr + .align 2, 0 +_080A118C: .4byte gUnknown_3005024 +_080A1190: .4byte sub_80A1194 + thumb_func_end sub_80A1184 + + thumb_func_start sub_80A1194 +sub_80A1194: @ 80A1194 + push {lr} + bl sub_8068974 + bl sub_8069940 + bl sub_807DC00 + ldr r0, _080A11B8 @ =sub_80A11C0 + movs r1, 0xA + bl sub_807741C + ldr r1, _080A11BC @ =gUnknown_2031DE0 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_080A11B8: .4byte sub_80A11C0 +_080A11BC: .4byte gUnknown_2031DE0 + thumb_func_end sub_80A1194 + + thumb_func_start sub_80A11C0 +sub_80A11C0: @ 80A11C0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A11E0 + bl sub_8068A5C + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 +_080A11E0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A11C0 + + thumb_func_start sub_80A11E8 +sub_80A11E8: @ 80A11E8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080A1204 @ =sub_80A1208 + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1204: .4byte sub_80A1208 + thumb_func_end sub_80A11E8 + + thumb_func_start sub_80A1208 +sub_80A1208: @ 80A1208 + push {lr} + sub sp, 0x24 + mov r1, sp + ldr r0, _080A1224 @ =gUnknown_203AD30 + ldrh r0, [r0] + strh r0, [r1, 0x20] + ldr r1, _080A1228 @ =sub_8107EB8 + mov r0, sp + movs r2, 0 + bl sub_80BEBEC + add sp, 0x24 + pop {r0} + bx r0 + .align 2, 0 +_080A1224: .4byte gUnknown_203AD30 +_080A1228: .4byte sub_8107EB8 + thumb_func_end sub_80A1208 + + thumb_func_start sub_80A122C +sub_80A122C: @ 80A122C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x83 + lsls r0, 4 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080A129A + adds r0, r4, 0 + bl sub_805A218 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080A129A + adds r0, r4, 0 + bl sub_805A21C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080A129A + adds r0, r4, 0 + bl sub_805A210 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080A129A + adds r0, r4, 0 + bl sub_805A214 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A12BC +_080A129A: + ldr r1, _080A12B4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r0, 0xE] + ldr r3, _080A12B8 @ =gUnknown_8416451 + adds r0, r5, 0 + movs r2, 0x2 + bl sub_80A10C4 + b _080A12F6 + .align 2, 0 +_080A12B4: .4byte gUnknown_3005090 +_080A12B8: .4byte gUnknown_8416451 +_080A12BC: + bl sub_8055C9C + cmp r0, 0x1 + bne _080A12E4 + bl sub_80BD540 + lsls r0, 24 + cmp r0, 0 + bne _080A12E4 + ldr r1, _080A12DC @ =gUnknown_2039998 + ldr r0, _080A12E0 @ =sub_80A1304 + str r0, [r1] + adds r0, r5, 0 + bl sub_80A103C + b _080A12F6 + .align 2, 0 +_080A12DC: .4byte gUnknown_2039998 +_080A12E0: .4byte sub_80A1304 +_080A12E4: + ldr r0, _080A1300 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrb r1, [r1, 0xE] + adds r0, r5, 0 + bl sub_80A1110 +_080A12F6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1300: .4byte gUnknown_3005090 + thumb_func_end sub_80A122C + + thumb_func_start sub_80A1304 +sub_80A1304: @ 80A1304 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x6 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + bne _080A131C + movs r0, 0xB + bl sub_80722CC +_080A131C: + movs r0, 0x6 + bl sub_80BD5C8 + bl sub_80696C0 + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A1304 + + thumb_func_start sub_80A1338 +sub_80A1338: @ 80A1338 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80A137C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A1360 + ldr r1, _080A1358 @ =gUnknown_2039998 + ldr r0, _080A135C @ =sub_80A1410 + str r0, [r1] + adds r0, r4, 0 + bl sub_80A103C + b _080A1372 + .align 2, 0 +_080A1358: .4byte gUnknown_2039998 +_080A135C: .4byte sub_80A1410 +_080A1360: + ldr r0, _080A1378 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrb r1, [r1, 0xE] + adds r0, r4, 0 + bl sub_80A1110 +_080A1372: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1378: .4byte gUnknown_3005090 + thumb_func_end sub_80A1338 + + thumb_func_start sub_80A137C +sub_80A137C: @ 80A137C + push {r4-r6,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r0, r6, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_805A104 + lsls r0, 24 + cmp r0, 0 + bne _080A1404 + movs r0, 0x10 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + bne _080A1404 + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + bne _080A13D4 + bl sub_805C8B0 + lsls r0, 24 + cmp r0, 0 + beq _080A1404 +_080A13D0: + movs r0, 0x1 + b _080A1406 +_080A13D4: + adds r0, r5, 0 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + beq _080A13F4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058DC4 + lsls r0, 24 + cmp r0, 0 + beq _080A13D0 +_080A13F4: + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_8059F58 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080A13D0 +_080A1404: + movs r0, 0 +_080A1406: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80A137C + + thumb_func_start sub_80A1410 +sub_80A1410: @ 80A1410 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080A1434 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809AA8C + lsls r0, 24 + lsrs r0, 24 + bl sub_805D2C0 + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1434: .4byte gUnknown_203AD30 + thumb_func_end sub_80A1410 + + thumb_func_start sub_80A1438 +sub_80A1438: @ 80A1438 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x27 + bl sub_8054E90 + ldr r1, _080A1458 @ =gUnknown_2039998 + ldr r0, _080A145C @ =sub_813EC8C + str r0, [r1] + adds r0, r4, 0 + bl sub_80A103C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1458: .4byte gUnknown_2039998 +_080A145C: .4byte sub_813EC8C + thumb_func_end sub_80A1438 + + thumb_func_start sub_80A1460 +sub_80A1460: @ 80A1460 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080A14B4 @ =gUnknown_2021CD0 + bl sub_80D0554 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + ldr r4, _080A14B8 @ =gUnknown_2021D18 + ldr r1, _080A14BC @ =gUnknown_8416537 + adds r0, r4, 0 + bl sub_8008FCC + ldr r0, _080A14C0 @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _080A14C4 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r1, _080A14C8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A14D0 + ldr r3, _080A14CC @ =sub_810A1F8 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_8108E70 + b _080A14DC + .align 2, 0 +_080A14B4: .4byte gUnknown_2021CD0 +_080A14B8: .4byte gUnknown_2021D18 +_080A14BC: .4byte gUnknown_8416537 +_080A14C0: .4byte gUnknown_203AD30 +_080A14C4: .4byte 0x0000ffff +_080A14C8: .4byte gUnknown_3005090 +_080A14CC: .4byte sub_810A1F8 +_080A14D0: + ldr r3, _080A14E4 @ =sub_80A112C + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F7808 +_080A14DC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A14E4: .4byte sub_80A112C + thumb_func_end sub_80A1460 + + thumb_func_start sub_80A14E8 +sub_80A14E8: @ 80A14E8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080A1538 @ =gUnknown_2021CD0 + bl sub_815EFA0 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x5 + bl sub_8008E78 + ldr r4, _080A153C @ =gUnknown_2021D18 + ldr r1, _080A1540 @ =gUnknown_8416644 + adds r0, r4, 0 + bl sub_8008FCC + ldr r0, _080A1544 @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _080A1548 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r1, _080A154C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A1554 + ldr r3, _080A1550 @ =sub_810A1F8 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_8108E70 + b _080A1560 + .align 2, 0 +_080A1538: .4byte gUnknown_2021CD0 +_080A153C: .4byte gUnknown_2021D18 +_080A1540: .4byte gUnknown_8416644 +_080A1544: .4byte gUnknown_203AD30 +_080A1548: .4byte 0x0000ffff +_080A154C: .4byte gUnknown_3005090 +_080A1550: .4byte sub_810A1F8 +_080A1554: + ldr r3, _080A1568 @ =sub_80A112C + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F7808 +_080A1560: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1568: .4byte sub_80A112C + thumb_func_end sub_80A14E8 + + thumb_func_start sub_80A156C +sub_80A156C: @ 80A156C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + movs r4, 0 + b _080A1598 +_080A1578: + movs r0, 0x64 + muls r0, r4 + ldr r1, _080A15D0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x11 + adds r2, r4, 0 + movs r3, 0 + bl sub_80413C0 + lsls r0, 24 + cmp r0, 0 + bne _080A1592 + movs r6, 0x1 +_080A1592: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080A1598: + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bcc _080A1578 + cmp r6, 0 + beq _080A1600 + ldr r0, _080A15D4 @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _080A15D8 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r1, _080A15DC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0xE + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080A15E8 + ldr r2, _080A15E0 @ =gUnknown_8416690 + ldr r3, _080A15E4 @ =sub_80A1648 + b _080A1616 + .align 2, 0 +_080A15D0: .4byte gUnknown_2024284 +_080A15D4: .4byte gUnknown_203AD30 +_080A15D8: .4byte 0x0000ffff +_080A15DC: .4byte gUnknown_3005090 +_080A15E0: .4byte gUnknown_8416690 +_080A15E4: .4byte sub_80A1648 +_080A15E8: + ldr r2, _080A15F8 @ =gUnknown_8416690 + ldr r3, _080A15FC @ =sub_80A1648 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F7808 + b _080A1638 + .align 2, 0 +_080A15F8: .4byte gUnknown_8416690 +_080A15FC: .4byte sub_80A1648 +_080A1600: + ldr r0, _080A1620 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080A162C + ldr r2, _080A1624 @ =gUnknown_841665C + ldr r3, _080A1628 @ =sub_810A1F8 +_080A1616: + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8108E70 + b _080A1638 + .align 2, 0 +_080A1620: .4byte gUnknown_3005090 +_080A1624: .4byte gUnknown_841665C +_080A1628: .4byte sub_810A1F8 +_080A162C: + ldr r2, _080A1640 @ =gUnknown_841665C + ldr r3, _080A1644 @ =sub_80A112C + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F7808 +_080A1638: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A1640: .4byte gUnknown_841665C +_080A1644: .4byte sub_80A112C + thumb_func_end sub_80A156C + + thumb_func_start sub_80A1648 +sub_80A1648: @ 80A1648 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xB + bl sub_8071BC4 + ldr r1, _080A166C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080A1670 @ =sub_80A1674 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A166C: .4byte gUnknown_3005090 +_080A1670: .4byte sub_80A1674 + thumb_func_end sub_80A1648 + + thumb_func_start sub_80A1674 +sub_80A1674: @ 80A1674 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + movs r0, 0 + bl sub_8071C10 + lsls r0, 24 + cmp r0, 0 + beq _080A16C0 + ldr r0, _080A16A8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080A16B4 + ldr r2, _080A16AC @ =gUnknown_84166A7 + ldr r3, _080A16B0 @ =sub_810A1F8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 + b _080A16C0 + .align 2, 0 +_080A16A8: .4byte gUnknown_3005090 +_080A16AC: .4byte gUnknown_84166A7 +_080A16B0: .4byte sub_810A1F8 +_080A16B4: + ldr r2, _080A16C8 @ =gUnknown_84166A7 + ldr r3, _080A16CC @ =sub_80A112C + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F7808 +_080A16C0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A16C8: .4byte gUnknown_84166A7 +_080A16CC: .4byte sub_80A112C + thumb_func_end sub_80A1674 + + thumb_func_start sub_80A16D0 +sub_80A16D0: @ 80A16D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80A0FBC + pop {r0} + bx r0 + thumb_func_end sub_80A16D0 + + thumb_func_start sub_80A16E0 +sub_80A16E0: @ 80A16E0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A16F4 @ =gUnknown_3005E98 + ldr r1, _080A16F8 @ =sub_81252D0 + str r1, [r2] + bl sub_80A16D0 + pop {r0} + bx r0 + .align 2, 0 +_080A16F4: .4byte gUnknown_3005E98 +_080A16F8: .4byte sub_81252D0 + thumb_func_end sub_80A16E0 + + thumb_func_start sub_80A16FC +sub_80A16FC: @ 80A16FC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A1710 @ =gUnknown_3005E98 + ldr r1, _080A1714 @ =sub_81256F8 + str r1, [r2] + bl sub_80A16D0 + pop {r0} + bx r0 + .align 2, 0 +_080A1710: .4byte gUnknown_3005E98 +_080A1714: .4byte sub_81256F8 + thumb_func_end sub_80A16FC + + thumb_func_start sub_80A1718 +sub_80A1718: @ 80A1718 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A172C @ =gUnknown_3005E98 + ldr r1, _080A1730 @ =sub_8125A3C + str r1, [r2] + bl sub_80A16D0 + pop {r0} + bx r0 + .align 2, 0 +_080A172C: .4byte gUnknown_3005E98 +_080A1730: .4byte sub_8125A3C + thumb_func_end sub_80A1718 + + thumb_func_start sub_80A1734 +sub_80A1734: @ 80A1734 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A1748 @ =gUnknown_3005E98 + ldr r1, _080A174C @ =sub_81262AC + str r1, [r2] + bl sub_80A16D0 + pop {r0} + bx r0 + .align 2, 0 +_080A1748: .4byte gUnknown_3005E98 +_080A174C: .4byte sub_81262AC + thumb_func_end sub_80A1734 + + thumb_func_start sub_80A1750 +sub_80A1750: @ 80A1750 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A1764 @ =gUnknown_3005E98 + ldr r1, _080A1768 @ =sub_8126B60 + str r1, [r2] + bl sub_80A16D0 + pop {r0} + bx r0 + .align 2, 0 +_080A1764: .4byte gUnknown_3005E98 +_080A1768: .4byte sub_8126B60 + thumb_func_end sub_80A1750 + + thumb_func_start sub_80A176C +sub_80A176C: @ 80A176C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A1780 @ =gUnknown_3005E98 + ldr r1, _080A1784 @ =sub_8126894 + str r1, [r2] + bl sub_80A0FBC + pop {r0} + bx r0 + .align 2, 0 +_080A1780: .4byte gUnknown_3005E98 +_080A1784: .4byte sub_8126894 + thumb_func_end sub_80A176C + + thumb_func_start sub_80A1788 +sub_80A1788: @ 80A1788 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A17B0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A17B8 + ldr r0, _080A17B4 @ =sub_80A17D4 + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + b _080A17C8 + .align 2, 0 +_080A17B0: .4byte gUnknown_3005090 +_080A17B4: .4byte sub_80A17D4 +_080A17B8: + bl sub_80CCB68 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080A17D0 @ =sub_80A17E8 + str r0, [r5] +_080A17C8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A17D0: .4byte sub_80A17E8 + thumb_func_end sub_80A1788 + + thumb_func_start sub_80A17D4 +sub_80A17D4: @ 80A17D4 + push {lr} + ldr r1, _080A17E4 @ =sub_8107EB8 + movs r0, 0 + movs r2, 0 + bl sub_81317F8 + pop {r0} + bx r0 + .align 2, 0 +_080A17E4: .4byte sub_8107EB8 + thumb_func_end sub_80A17D4 + + thumb_func_start sub_80A17E8 +sub_80A17E8: @ 80A17E8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1818 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A1812 + bl sub_80563F0 + bl sub_80A1184 + ldr r1, _080A181C @ =sub_80567DC + movs r0, 0 + movs r2, 0x1 + bl sub_81317F8 + adds r0, r4, 0 + bl sub_8077508 +_080A1812: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1818: .4byte gUnknown_2037AB8 +_080A181C: .4byte sub_80567DC + thumb_func_end sub_80A17E8 + + thumb_func_start sub_80A1820 +sub_80A1820: @ 80A1820 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A1848 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A1850 + ldr r0, _080A184C @ =sub_80A186C + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + b _080A1860 + .align 2, 0 +_080A1848: .4byte gUnknown_3005090 +_080A184C: .4byte sub_80A186C +_080A1850: + bl sub_80CCB68 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080A1868 @ =sub_80A1880 + str r0, [r5] +_080A1860: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1868: .4byte sub_80A1880 + thumb_func_end sub_80A1820 + + thumb_func_start sub_80A186C +sub_80A186C: @ 80A186C + push {lr} + ldr r1, _080A187C @ =sub_8107EB8 + movs r0, 0 + movs r2, 0 + bl sub_813CD50 + pop {r0} + bx r0 + .align 2, 0 +_080A187C: .4byte sub_8107EB8 + thumb_func_end sub_80A186C + + thumb_func_start sub_80A1880 +sub_80A1880: @ 80A1880 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A18B0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A18AA + bl sub_80563F0 + bl sub_80A1184 + ldr r1, _080A18B4 @ =sub_80567DC + movs r0, 0 + movs r2, 0x1 + bl sub_813CD50 + adds r0, r4, 0 + bl sub_8077508 +_080A18AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A18B0: .4byte gUnknown_2037AB8 +_080A18B4: .4byte sub_80567DC + thumb_func_end sub_80A1880 + + thumb_func_start sub_80A18B8 +sub_80A18B8: @ 80A18B8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080A18D4 @ =sub_80A18D8 + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A18D4: .4byte sub_80A18D8 + thumb_func_end sub_80A18B8 + + thumb_func_start sub_80A18D8 +sub_80A18D8: @ 80A18D8 + push {lr} + ldr r1, _080A18E8 @ =sub_8107ECC + movs r0, 0x4 + movs r2, 0 + bl sub_813CD50 + pop {r0} + bx r0 + .align 2, 0 +_080A18E8: .4byte sub_8107ECC + thumb_func_end sub_80A18D8 + + thumb_func_start sub_80A18EC +sub_80A18EC: @ 80A18EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1920 @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _080A1924 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r1, _080A1928 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A1930 + ldr r0, _080A192C @ =sub_80A194C + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + b _080A1940 + .align 2, 0 +_080A1920: .4byte gUnknown_203AD30 +_080A1924: .4byte 0x0000ffff +_080A1928: .4byte gUnknown_3005090 +_080A192C: .4byte sub_80A194C +_080A1930: + bl sub_80CCB68 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080A1948 @ =sub_80A1960 + str r0, [r5] +_080A1940: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1948: .4byte sub_80A1960 + thumb_func_end sub_80A18EC + + thumb_func_start sub_80A194C +sub_80A194C: @ 80A194C + push {lr} + ldr r1, _080A195C @ =sub_8107EB8 + movs r0, 0 + bl sub_815ABC4 + pop {r0} + bx r0 + .align 2, 0 +_080A195C: .4byte sub_8107EB8 + thumb_func_end sub_80A194C + + thumb_func_start sub_80A1960 +sub_80A1960: @ 80A1960 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1990 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A1988 + bl sub_80563F0 + bl sub_80A1184 + ldr r1, _080A1994 @ =sub_80567DC + movs r0, 0 + bl sub_815ABC4 + adds r0, r4, 0 + bl sub_8077508 +_080A1988: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1990: .4byte gUnknown_2037AB8 +_080A1994: .4byte sub_80567DC + thumb_func_end sub_80A1960 + + thumb_func_start sub_80A1998 +sub_80A1998: @ 80A1998 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A19C0 @ =0x00004020 + bl sub_806E568 + lsls r0, 16 + cmp r0, 0 + bne _080A19CC + movs r0, 0x29 + bl sub_80722CC + ldr r0, _080A19C4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080A19C8 @ =sub_80A19E8 + str r0, [r1] + b _080A19D8 + .align 2, 0 +_080A19C0: .4byte 0x00004020 +_080A19C4: .4byte gUnknown_3005090 +_080A19C8: .4byte sub_80A19E8 +_080A19CC: + ldr r2, _080A19E0 @ =gUnknown_841659E + ldr r3, _080A19E4 @ =sub_810A1F8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 +_080A19D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A19E0: .4byte gUnknown_841659E +_080A19E4: .4byte sub_810A1F8 + thumb_func_end sub_80A1998 + + thumb_func_start sub_80A19E8 +sub_80A19E8: @ 80A19E8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _080A1A2A + ldr r4, _080A1A30 @ =gUnknown_203AD30 + ldrh r2, [r4] + ldr r3, _080A1A34 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r5, _080A1A38 @ =0x00004020 + ldrh r0, [r4] + bl sub_809A948 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_806E584 + bl sub_80A1A44 + ldr r2, _080A1A3C @ =gUnknown_2021D18 + ldr r3, _080A1A40 @ =sub_810A1F8 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8108E70 +_080A1A2A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A1A30: .4byte gUnknown_203AD30 +_080A1A34: .4byte 0x0000ffff +_080A1A38: .4byte 0x00004020 +_080A1A3C: .4byte gUnknown_2021D18 +_080A1A40: .4byte sub_810A1F8 + thumb_func_end sub_80A19E8 + + thumb_func_start sub_80A1A44 +sub_80A1A44: @ 80A1A44 + push {r4,lr} + ldr r4, _080A1A84 @ =gUnknown_203AD30 + ldrh r0, [r4] + movs r1, 0x1 + bl sub_809A1D8 + ldrh r0, [r4] + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + bl sub_8108DC8 + ldrh r0, [r4] + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + bl sub_81089F4 + ldrh r0, [r4] + ldr r1, _080A1A88 @ =gUnknown_2021CF0 + bl sub_8099E90 + ldr r0, _080A1A8C @ =gUnknown_2021D18 + ldr r1, _080A1A90 @ =gUnknown_841658C + bl sub_8008FCC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1A84: .4byte gUnknown_203AD30 +_080A1A88: .4byte gUnknown_2021CF0 +_080A1A8C: .4byte gUnknown_2021D18 +_080A1A90: .4byte gUnknown_841658C + thumb_func_end sub_80A1A44 + + thumb_func_start sub_80A1A94 +sub_80A1A94: @ 80A1A94 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + ldr r5, _080A1AD4 @ =gUnknown_203AD30 + ldrh r2, [r5] + ldr r3, _080A1AD8 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldrh r0, [r5] + cmp r0, 0x2B + bne _080A1AF4 + ldr r0, _080A1ADC @ =0x00000803 + bl sub_806E680 + ldr r0, _080A1AE0 @ =0x00000804 + bl sub_806E6A8 + ldrh r0, [r5] + ldr r1, _080A1AE4 @ =gUnknown_2021CF0 + bl sub_8099E90 + ldr r0, _080A1AE8 @ =gUnknown_2021D18 + ldr r1, _080A1AEC @ =gUnknown_84165D2 + bl sub_8008FCC + ldr r1, _080A1AF0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + b _080A1B1A + .align 2, 0 +_080A1AD4: .4byte gUnknown_203AD30 +_080A1AD8: .4byte 0x0000ffff +_080A1ADC: .4byte 0x00000803 +_080A1AE0: .4byte 0x00000804 +_080A1AE4: .4byte gUnknown_2021CF0 +_080A1AE8: .4byte gUnknown_2021D18 +_080A1AEC: .4byte gUnknown_84165D2 +_080A1AF0: .4byte gUnknown_3005090 +_080A1AF4: + cmp r0, 0x2A + bne _080A1B26 + ldr r0, _080A1B2C @ =0x00000804 + bl sub_806E680 + ldr r0, _080A1B30 @ =0x00000803 + bl sub_806E6A8 + ldrh r0, [r5] + ldr r1, _080A1B34 @ =gUnknown_2021CF0 + bl sub_8099E90 + ldr r0, _080A1B38 @ =gUnknown_2021D18 + ldr r1, _080A1B3C @ =gUnknown_8416600 + bl sub_8008FCC + ldr r1, _080A1B40 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 +_080A1B1A: + lsls r0, 3 + adds r0, r1 + ldr r1, _080A1B44 @ =sub_80A1B48 + str r1, [r0] + movs r1, 0 + strh r1, [r0, 0x18] +_080A1B26: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A1B2C: .4byte 0x00000804 +_080A1B30: .4byte 0x00000803 +_080A1B34: .4byte gUnknown_2021CF0 +_080A1B38: .4byte gUnknown_2021D18 +_080A1B3C: .4byte gUnknown_8416600 +_080A1B40: .4byte gUnknown_3005090 +_080A1B44: .4byte sub_80A1B48 + thumb_func_end sub_80A1A94 + + thumb_func_start sub_80A1B48 +sub_80A1B48: @ 80A1B48 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1B80 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080A1B78 + movs r0, 0x6E + bl sub_80722CC + ldr r2, _080A1B84 @ =gUnknown_2021D18 + ldr r3, _080A1B88 @ =sub_810A1F8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 +_080A1B78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1B80: .4byte gUnknown_3005090 +_080A1B84: .4byte gUnknown_2021D18 +_080A1B88: .4byte sub_810A1F8 + thumb_func_end sub_80A1B48 + + thumb_func_start sub_80A1B8C +sub_80A1B8C: @ 80A1B8C + push {lr} + ldr r0, _080A1BA0 @ =gUnknown_2036DFC + ldrb r1, [r0, 0x19] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080A1BA4 + movs r0, 0 + b _080A1BA6 + .align 2, 0 +_080A1BA0: .4byte gUnknown_2036DFC +_080A1BA4: + movs r0, 0x1 +_080A1BA6: + pop {r1} + bx r1 + thumb_func_end sub_80A1B8C + + thumb_func_start sub_80A1BAC +sub_80A1BAC: @ 80A1BAC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80A1B8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080A1BEC + ldr r0, _080A1BDC @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r0, _080A1BE0 @ =gUnknown_2036DFC + ldrb r3, [r0, 0x14] + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r1, _080A1BE4 @ =gUnknown_2039998 + ldr r0, _080A1BE8 @ =sub_80A1C08 + str r0, [r1] + adds r0, r4, 0 + bl sub_80A103C + b _080A1BFE + .align 2, 0 +_080A1BDC: .4byte gUnknown_203AD30 +_080A1BE0: .4byte gUnknown_2036DFC +_080A1BE4: .4byte gUnknown_2039998 +_080A1BE8: .4byte sub_80A1C08 +_080A1BEC: + ldr r0, _080A1C04 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrb r1, [r1, 0xE] + adds r0, r4, 0 + bl sub_80A1110 +_080A1BFE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1C04: .4byte gUnknown_3005090 + thumb_func_end sub_80A1BAC + + thumb_func_start sub_80A1C08 +sub_80A1C08: @ 80A1C08 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8054D70 + bl sub_80A1A44 + ldr r1, _080A1C38 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x8] + ldr r2, _080A1C3C @ =gUnknown_2021D18 + ldr r3, _080A1C40 @ =sub_80A1C44 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F7808 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1C38: .4byte gUnknown_3005090 +_080A1C3C: .4byte gUnknown_2021D18 +_080A1C40: .4byte sub_80A1C44 + thumb_func_end sub_80A1C08 + + thumb_func_start sub_80A1C44 +sub_80A1C44: @ 80A1C44 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80559E4 + bl sub_8085620 + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A1C44 + + thumb_func_start sub_80A1C60 +sub_80A1C60: @ 80A1C60 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A1C88 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A1C90 + ldr r0, _080A1C8C @ =sub_80A1CAC + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + b _080A1CA0 + .align 2, 0 +_080A1C88: .4byte gUnknown_3005090 +_080A1C8C: .4byte sub_80A1CAC +_080A1C90: + bl sub_80CCB68 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080A1CA8 @ =sub_80A1CC0 + str r0, [r5] +_080A1CA0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1CA8: .4byte sub_80A1CC0 + thumb_func_end sub_80A1C60 + + thumb_func_start sub_80A1CAC +sub_80A1CAC: @ 80A1CAC + push {lr} + ldr r1, _080A1CBC @ =sub_8107EB8 + movs r0, 0 + bl sub_80BFF50 + pop {r0} + bx r0 + .align 2, 0 +_080A1CBC: .4byte sub_8107EB8 + thumb_func_end sub_80A1CAC + + thumb_func_start sub_80A1CC0 +sub_80A1CC0: @ 80A1CC0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1CF0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A1CE8 + bl sub_80563F0 + bl sub_80A1184 + ldr r1, _080A1CF4 @ =sub_80567DC + movs r0, 0 + bl sub_80BFF50 + adds r0, r4, 0 + bl sub_8077508 +_080A1CE8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1CF0: .4byte gUnknown_2037AB8 +_080A1CF4: .4byte sub_80567DC + thumb_func_end sub_80A1CC0 + + thumb_func_start sub_80A1CF8 +sub_80A1CF8: @ 80A1CF8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1D2C @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _080A1D30 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r1, _080A1D34 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080A1D3C + ldr r0, _080A1D38 @ =sub_80A1D58 + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 + b _080A1D4C + .align 2, 0 +_080A1D2C: .4byte gUnknown_203AD30 +_080A1D30: .4byte 0x0000ffff +_080A1D34: .4byte gUnknown_3005090 +_080A1D38: .4byte sub_80A1D58 +_080A1D3C: + bl sub_80CCB68 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080A1D54 @ =sub_80A1D68 + str r0, [r5] +_080A1D4C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1D54: .4byte sub_80A1D68 + thumb_func_end sub_80A1CF8 + + thumb_func_start sub_80A1D58 +sub_80A1D58: @ 80A1D58 + push {lr} + ldr r0, _080A1D64 @ =sub_8107EB8 + bl sub_812C3AC + pop {r0} + bx r0 + .align 2, 0 +_080A1D64: .4byte sub_8107EB8 + thumb_func_end sub_80A1D58 + + thumb_func_start sub_80A1D68 +sub_80A1D68: @ 80A1D68 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1D94 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080A1D8E + bl sub_80563F0 + bl sub_80A1184 + ldr r0, _080A1D98 @ =sub_80567DC + bl sub_812C3AC + adds r0, r4, 0 + bl sub_8077508 +_080A1D8E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1D94: .4byte gUnknown_2037AB8 +_080A1D98: .4byte sub_80567DC + thumb_func_end sub_80A1D68 + + thumb_func_start sub_80A1D9C +sub_80A1D9C: @ 80A1D9C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080A1DE8 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x3 + beq _080A1DB2 + cmp r0, 0x1 + beq _080A1DB2 + cmp r0, 0x2 + bne _080A1DD2 +_080A1DB2: + ldr r0, _080A1DEC @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, 0x1 + bne _080A1DF4 + movs r0, 0x5 + ldrsb r0, [r1, r0] + cmp r0, 0 + beq _080A1DD2 + cmp r0, 0x61 + beq _080A1DD2 + cmp r0, 0x6D + beq _080A1DD2 + cmp r0, 0x79 + bne _080A1DF4 +_080A1DD2: + ldr r0, _080A1DF0 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrb r1, [r1, 0xE] + adds r0, r2, 0 + bl sub_80A1110 + b _080A1E00 + .align 2, 0 +_080A1DE8: .4byte gUnknown_2036DFC +_080A1DEC: .4byte gUnknown_3005008 +_080A1DF0: .4byte gUnknown_3005090 +_080A1DF4: + ldr r1, _080A1E04 @ =gUnknown_2039998 + ldr r0, _080A1E08 @ =sub_810C670 + str r0, [r1] + adds r0, r2, 0 + bl sub_80A103C +_080A1E00: + pop {r0} + bx r0 + .align 2, 0 +_080A1E04: .4byte gUnknown_2039998 +_080A1E08: .4byte sub_810C670 + thumb_func_end sub_80A1D9C + + thumb_func_start sub_80A1E0C +sub_80A1E0C: @ 80A1E0C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80A112C + pop {r0} + bx r0 + thumb_func_end sub_80A1E0C + + thumb_func_start sub_80A1E1C +sub_80A1E1C: @ 80A1E1C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8040F6C + lsls r0, 24 + cmp r0, 0 + bne _080A1E48 + ldr r0, _080A1E44 @ =gUnknown_203AD30 + ldrh r0, [r0] + movs r1, 0x1 + bl sub_809A1D8 + bl sub_8108CB4 + adds r0, r4, 0 + bl sub_8108B50 + b _080A1E54 + .align 2, 0 +_080A1E44: .4byte gUnknown_203AD30 +_080A1E48: + ldr r2, _080A1E5C @ =gUnknown_8416631 + ldr r3, _080A1E60 @ =sub_810A1F8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 +_080A1E54: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1E5C: .4byte gUnknown_8416631 +_080A1E60: .4byte sub_810A1F8 + thumb_func_end sub_80A1E1C + + thumb_func_start sub_80A1E64 +sub_80A1E64: @ 80A1E64 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8108CB4 + adds r0, r4, 0 + bl sub_8108B50 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A1E64 + + thumb_func_start sub_80A1E7C +sub_80A1E7C: @ 80A1E7C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080A1EBC @ =gUnknown_2023BCE + ldr r0, _080A1EC0 @ =gUnknown_2024004 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r1, _080A1EC4 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _080A1EC8 @ =gUnknown_203AD30 + ldrh r1, [r1] + lsls r2, 24 + lsrs r2, 24 + movs r3, 0 + bl sub_80413C0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _080A1ED4 + ldr r2, _080A1ECC @ =gUnknown_84169DC + ldr r3, _080A1ED0 @ =sub_810A1F8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 + b _080A1EE4 + .align 2, 0 +_080A1EBC: .4byte gUnknown_2023BCE +_080A1EC0: .4byte gUnknown_2024004 +_080A1EC4: .4byte gUnknown_2024284 +_080A1EC8: .4byte gUnknown_203AD30 +_080A1ECC: .4byte gUnknown_84169DC +_080A1ED0: .4byte sub_810A1F8 +_080A1ED4: + ldr r0, _080A1EEC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + strh r2, [r1, 0x18] + ldr r0, _080A1EF0 @ =sub_80A1EF4 + str r0, [r1] +_080A1EE4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1EEC: .4byte gUnknown_3005090 +_080A1EF0: .4byte sub_80A1EF4 + thumb_func_end sub_80A1E7C + + thumb_func_start sub_80A1EF4 +sub_80A1EF4: @ 80A1EF4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + ldr r0, _080A1F3C @ =gUnknown_3005098 + adds r1, r0 + ldrh r0, [r1, 0x10] + adds r0, 0x1 + strh r0, [r1, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080A1F36 + ldr r0, _080A1F40 @ =gUnknown_203AD30 + ldrh r4, [r0] + movs r0, 0x1 + bl sub_80722CC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_809A1D8 + adds r0, r4, 0 + bl sub_8042DA4 + adds r2, r0, 0 + ldr r3, _080A1F44 @ =sub_80A1F48 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8108E70 +_080A1F36: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A1F3C: .4byte gUnknown_3005098 +_080A1F40: .4byte gUnknown_203AD30 +_080A1F44: .4byte sub_80A1F48 + thumb_func_end sub_80A1EF4 + + thumb_func_start sub_80A1F48 +sub_80A1F48: @ 80A1F48 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1F74 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080A1F62 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080A1F6C +_080A1F62: + bl sub_8108CB4 + adds r0, r4, 0 + bl sub_8108B50 +_080A1F6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1F74: .4byte gUnknown_30030F0 + thumb_func_end sub_80A1F48 + + thumb_func_start sub_80A1F78 +sub_80A1F78: @ 80A1F78 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A1F9C @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bne _080A1FA4 + ldr r0, _080A1FA0 @ =sub_81279E0 + bl sub_813D934 + adds r0, r4, 0 + bl sub_813D808 + b _080A1FB0 + .align 2, 0 +_080A1F9C: .4byte gUnknown_203AD30 +_080A1FA0: .4byte sub_81279E0 +_080A1FA4: + ldr r0, _080A1FB8 @ =sub_81279E0 + bl sub_8108EE0 + adds r0, r4, 0 + bl sub_8108B50 +_080A1FB0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1FB8: .4byte sub_81279E0 + thumb_func_end sub_80A1F78 + + thumb_func_start sub_80A1FBC +sub_80A1FBC: @ 80A1FBC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A1FD0 @ =gUnknown_3005E98 + ldr r1, _080A1FD4 @ =sub_81253B0 + str r1, [r2] + bl sub_80A1F78 + pop {r0} + bx r0 + .align 2, 0 +_080A1FD0: .4byte gUnknown_3005E98 +_080A1FD4: .4byte sub_81253B0 + thumb_func_end sub_80A1FBC + + thumb_func_start sub_80A1FD8 +sub_80A1FD8: @ 80A1FD8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A1FEC @ =gUnknown_3005E98 + ldr r1, _080A1FF0 @ =sub_8126894 + str r1, [r2] + bl sub_80A1F78 + pop {r0} + bx r0 + .align 2, 0 +_080A1FEC: .4byte gUnknown_3005E98 +_080A1FF0: .4byte sub_8126894 + thumb_func_end sub_80A1FD8 + + thumb_func_start sub_80A1FF4 +sub_80A1FF4: @ 80A1FF4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080A2008 @ =gUnknown_3005E98 + ldr r1, _080A200C @ =sub_81256F8 + str r1, [r2] + bl sub_80A1F78 + pop {r0} + bx r0 + .align 2, 0 +_080A2008: .4byte gUnknown_3005E98 +_080A200C: .4byte sub_81256F8 + thumb_func_end sub_80A1FF4 + + thumb_func_start sub_80A2010 +sub_80A2010: @ 80A2010 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A2044 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080A2058 + bl sub_80A1A44 + ldr r0, _080A2048 @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _080A204C @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + ldr r2, _080A2050 @ =gUnknown_2021D18 + ldr r3, _080A2054 @ =sub_8108B50 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8108E70 + b _080A2060 + .align 2, 0 +_080A2044: .4byte gUnknown_2022B4C +_080A2048: .4byte gUnknown_203AD30 +_080A204C: .4byte 0x0000ffff +_080A2050: .4byte gUnknown_2021D18 +_080A2054: .4byte sub_8108B50 +_080A2058: + adds r0, r4, 0 + movs r1, 0 + bl sub_80A1110 +_080A2060: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2010 + + thumb_func_start sub_80A2068 +sub_80A2068: @ 80A2068 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A208C @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_8126C68 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x14 + bls _080A2082 + b _080A2174 +_080A2082: + lsls r0, 2 + ldr r1, _080A2090 @ =_080A2094 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A208C: .4byte gUnknown_203AD30 +_080A2090: .4byte _080A2094 + .align 2, 0 +_080A2094: + .4byte _080A2120 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A2174 + .4byte _080A2174 + .4byte _080A2104 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A20E8 + .4byte _080A2174 + .4byte _080A213C + .4byte _080A213C + .4byte _080A2158 +_080A20E8: + ldr r0, _080A2100 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x10] + adds r0, r4, 0 + bl sub_80A16E0 + b _080A2188 + .align 2, 0 +_080A2100: .4byte gUnknown_3005090 +_080A2104: + ldr r0, _080A211C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x10] + adds r0, r4, 0 + bl sub_80A176C + b _080A2188 + .align 2, 0 +_080A211C: .4byte gUnknown_3005090 +_080A2120: + ldr r0, _080A2138 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x10] + adds r0, r4, 0 + bl sub_80A1734 + b _080A2188 + .align 2, 0 +_080A2138: .4byte gUnknown_3005090 +_080A213C: + ldr r0, _080A2154 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x10] + adds r0, r4, 0 + bl sub_80A1718 + b _080A2188 + .align 2, 0 +_080A2154: .4byte gUnknown_3005090 +_080A2158: + ldr r0, _080A2170 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x10] + adds r0, r4, 0 + bl sub_80A16FC + b _080A2188 + .align 2, 0 +_080A2170: .4byte gUnknown_3005090 +_080A2174: + ldr r0, _080A2190 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x4 + strh r0, [r1, 0x10] + adds r0, r4, 0 + bl sub_80A2238 +_080A2188: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2190: .4byte gUnknown_3005090 + thumb_func_end sub_80A2068 + + thumb_func_start sub_80A2194 +sub_80A2194: @ 80A2194 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080A21B4 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_8126C68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x15 + bhi _080A222C + lsls r0, 2 + ldr r1, _080A21B8 @ =_080A21BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A21B4: .4byte gUnknown_203AD30 +_080A21B8: .4byte _080A21BC + .align 2, 0 +_080A21BC: + .4byte _080A2214 + .4byte _080A222C + .4byte _080A221C + .4byte _080A221C + .4byte _080A221C + .4byte _080A221C + .4byte _080A221C + .4byte _080A221C + .4byte _080A221C + .4byte _080A221C + .4byte _080A222C + .4byte _080A221C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A222C + .4byte _080A2224 +_080A2214: + adds r0, r4, 0 + bl sub_80A1E7C + b _080A2232 +_080A221C: + adds r0, r4, 0 + bl sub_80A1FBC + b _080A2232 +_080A2224: + adds r0, r4, 0 + bl sub_80A1FF4 + b _080A2232 +_080A222C: + adds r0, r4, 0 + bl sub_80A2238 +_080A2232: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80A2194 + + thumb_func_start sub_80A2238 +sub_80A2238: @ 80A2238 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080A2268 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bne _080A2278 + ldr r4, _080A226C @ =gUnknown_2021D18 + ldr r1, _080A2270 @ =gUnknown_8416425 + adds r0, r4, 0 + bl sub_8008FCC + ldr r3, _080A2274 @ =sub_813E2B8 + adds r0, r5, 0 + movs r1, 0x4 + adds r2, r4, 0 + bl sub_813EB20 + b _080A228A + .align 2, 0 +_080A2268: .4byte gUnknown_203AD30 +_080A226C: .4byte gUnknown_2021D18 +_080A2270: .4byte gUnknown_8416425 +_080A2274: .4byte sub_813E2B8 +_080A2278: + ldr r0, _080A2290 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrb r1, [r1, 0xE] + adds r0, r5, 0 + bl sub_80A1110 +_080A228A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2290: .4byte gUnknown_3005090 + thumb_func_end sub_80A2238 + + thumb_func_start sub_80A2294 +sub_80A2294: @ 80A2294 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r1, 0 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0x8 + bl sub_8002B9C + adds r6, r0, 0 + strh r4, [r6] + strh r5, [r6, 0x6] + cmp r7, 0 + beq _080A22C8 + adds r0, r7, 0 + movs r1, 0x41 + bl sub_803FBE8 + b _080A22CA +_080A22C8: + ldr r0, _080A22E4 @ =0x0000ffff +_080A22CA: + strh r0, [r6, 0x4] + mov r0, r8 + adds r1, r6, 0 + bl sub_8113550 + adds r0, r6, 0 + bl sub_8002BC4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A22E4: .4byte 0x0000ffff + thumb_func_end sub_80A2294 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/itemfinder.s b/asm/itemfinder.s new file mode 100644 index 000000000..bdea628bd --- /dev/null +++ b/asm/itemfinder.s @@ -0,0 +1,1347 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813EC8C +sub_813EC8C: @ 813EC8C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r2, 0 + ldr r7, _0813ECE0 @ =gUnknown_2036DFC + lsls r1, r4, 2 + adds r0, r1, r4 + lsls r3, r0, 3 + ldr r5, _0813ECE4 @ =gUnknown_3005098 + adds r6, r1, 0 + movs r1, 0 +_0813ECA2: + lsls r0, r2, 1 + adds r0, r3 + adds r0, r5 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0813ECA2 + ldr r0, [r7, 0x4] + adds r1, r4, 0 + bl sub_813EE14 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813ECFC + bl sub_813F3EC + ldr r0, _0813ECE8 @ =gUnknown_3005090 + adds r1, r6, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0x14 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _0813ECF0 + ldr r0, _0813ECEC @ =sub_813EDB0 + str r0, [r1] + b _0813ED08 + .align 2, 0 +_0813ECE0: .4byte gUnknown_2036DFC +_0813ECE4: .4byte gUnknown_3005098 +_0813ECE8: .4byte gUnknown_3005090 +_0813ECEC: .4byte sub_813EDB0 +_0813ECF0: + ldr r0, _0813ECF8 @ =sub_813ED3C + str r0, [r1] + b _0813ED08 + .align 2, 0 +_0813ECF8: .4byte sub_813ED3C +_0813ECFC: + ldr r2, _0813ED10 @ =gUnknown_8416513 + ldr r3, _0813ED14 @ =sub_813ED18 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F7808 +_0813ED08: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813ED10: .4byte gUnknown_8416513 +_0813ED14: .4byte sub_813ED18 + thumb_func_end sub_813EC8C + + thumb_func_start sub_813ED18 +sub_813ED18: @ 813ED18 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + bl sub_80696C0 + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813ED18 + + thumb_func_start sub_813ED3C +sub_813ED3C: @ 813ED3C + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _0813ED80 @ =gUnknown_3005098 + adds r4, r6, r7 + movs r1, 0x6 + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _0813EDA2 + movs r2, 0 + ldrsh r0, [r4, r2] + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl sub_813F2F0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0813ED88 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0813ED84 @ =sub_813F364 + str r1, [r0] + b _0813EDA8 + .align 2, 0 +_0813ED80: .4byte gUnknown_3005098 +_0813ED84: .4byte sub_813F364 +_0813ED88: + movs r0, 0x41 + bl sub_80722CC + ldrb r0, [r4, 0xA] + adds r1, r5, 0 + bl sub_813F40C + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + subs r0, 0x1 + strh r0, [r4, 0x8] +_0813EDA2: + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0813EDA8: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_813ED3C + + thumb_func_start sub_813EDB0 +sub_813EDB0: @ 813EDB0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r5, r1, 3 + ldr r6, _0813EDE4 @ =gUnknown_3005098 + adds r4, r5, r6 + movs r1, 0x6 + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _0813EE08 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0813EDEC + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _0813EDE8 @ =sub_813F3A8 + str r1, [r0] + b _0813EE0E + .align 2, 0 +_0813EDE4: .4byte gUnknown_3005098 +_0813EDE8: .4byte sub_813F3A8 +_0813EDEC: + movs r0, 0x41 + bl sub_80722CC + bl sub_813F5AC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + subs r0, 0x1 + strh r0, [r4, 0x8] +_0813EE08: + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0813EE0E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813EDB0 + + thumb_func_start sub_813EE14 +sub_813EE14: @ 813EE14 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + ldr r1, _0813EEC8 @ =gUnknown_3005090 + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0xC] + movs r3, 0 + mov r0, r8 + ldrb r0, [r0, 0x3] + cmp r3, r0 + bge _0813EF04 +_0813EE4E: + lsls r3, 16 + asrs r1, r3, 16 + mov r0, r8 + ldr r2, [r0, 0x10] + lsls r0, r1, 1 + adds r0, r1 + lsls r7, r0, 2 + adds r1, r7, r2 + ldrb r0, [r1, 0x5] + mov r10, r3 + cmp r0, 0x7 + bne _0813EEF2 + ldr r0, [r1, 0x8] + movs r1, 0x1 + bl sub_80CC44C + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _0813EEF2 + mov r1, r8 + ldr r2, [r1, 0x10] + adds r2, r7, r2 + ldrh r0, [r2] + adds r0, 0x7 + mov r1, sp + ldrh r1, [r1] + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r2, 0x2] + adds r0, 0x7 + mov r3, sp + ldrh r1, [r3, 0x2] + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, r4, 0 + ldr r0, [r2, 0x8] + movs r1, 0x3 + bl sub_80CC44C + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _0813EECC + cmp r5, 0 + bne _0813EEF2 + cmp r4, 0 + bne _0813EEF2 + mov r1, r8 + ldr r0, [r1, 0x10] + adds r0, r7, r0 + ldr r1, [r0, 0x8] + mov r0, r9 + bl sub_813EF40 + b _0813EF2E + .align 2, 0 +_0813EEC8: .4byte gUnknown_3005090 +_0813EECC: + lsls r0, r5, 16 + asrs r1, r0, 16 + movs r2, 0xE0 + lsls r2, 11 + adds r0, r2 + lsrs r0, 16 + cmp r0, 0xE + bhi _0813EEF2 + lsls r0, r6, 16 + asrs r2, r0, 16 + movs r3, 0x5 + negs r3, r3 + cmp r2, r3 + blt _0813EEF2 + cmp r2, 0x5 + bgt _0813EEF2 + mov r0, r9 + bl sub_813F220 +_0813EEF2: + movs r0, 0x80 + lsls r0, 9 + add r0, r10 + lsrs r3, r0, 16 + asrs r0, 16 + mov r1, r8 + ldrb r1, [r1, 0x3] + cmp r0, r1 + blt _0813EE4E +_0813EF04: + mov r0, r9 + bl sub_813F108 + ldr r0, _0813EF24 @ =gUnknown_3005090 + mov r2, r9 + lsls r1, r2, 2 + add r1, r9 + lsls r1, 3 + adds r1, r0 + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0x1 + beq _0813EF28 + movs r0, 0 + b _0813EF30 + .align 2, 0 +_0813EF24: .4byte gUnknown_3005090 +_0813EF28: + mov r0, r9 + bl sub_813EF9C +_0813EF2E: + movs r0, 0x1 +_0813EF30: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_813EE14 + + thumb_func_start sub_813EF40 +sub_813EF40: @ 813EF40 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0813EF8C @ =gUnknown_3005098 + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80CC44C + ldr r1, _0813EF90 @ =gUnknown_20370C0 + strh r0, [r1] + adds r0, r5, 0 + movs r1, 0 + bl sub_80CC44C + ldr r1, _0813EF94 @ =gUnknown_20370C2 + strh r0, [r1] + ldr r0, _0813EF98 @ =gUnknown_20370C4 + movs r5, 0x1 + strh r5, [r0] + ldrh r1, [r1] + movs r0, 0 + bl sub_80CBED4 + strh r5, [r4, 0x4] + movs r0, 0 + strh r0, [r4] + strh r0, [r4, 0x2] + movs r0, 0x3 + strh r0, [r4, 0x8] + strh r5, [r4, 0xC] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813EF8C: .4byte gUnknown_3005098 +_0813EF90: .4byte gUnknown_20370C0 +_0813EF94: .4byte gUnknown_20370C2 +_0813EF98: .4byte gUnknown_20370C4 + thumb_func_end sub_813EF40 + + thumb_func_start sub_813EF9C +sub_813EF9C: @ 813EF9C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813EFEC @ =gUnknown_3005098 + adds r1, r0 + ldrh r3, [r1, 0x2] + ldrh r2, [r1] + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + bne _0813EFBC + cmp r3, 0 + beq _0813EFF8 +_0813EFBC: + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + bge _0813EFCA + negs r0, r0 + lsls r0, 16 + lsrs r2, r0, 16 +_0813EFCA: + movs r4, 0x2 + ldrsh r0, [r1, r4] + cmp r0, 0 + bge _0813EFD8 + negs r0, r0 + lsls r0, 16 + lsrs r3, r0, 16 +_0813EFD8: + lsls r0, r2, 16 + asrs r2, r0, 16 + lsls r0, r3, 16 + asrs r0, 16 + cmp r2, r0 + ble _0813EFF0 + cmp r2, 0x3 + ble _0813EFF8 + movs r0, 0x2 + b _0813EFFA + .align 2, 0 +_0813EFEC: .4byte gUnknown_3005098 +_0813EFF0: + cmp r0, 0x3 + ble _0813EFF8 + movs r0, 0x2 + b _0813EFFA +_0813EFF8: + movs r0, 0x4 +_0813EFFA: + strh r0, [r1, 0x8] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813EF9C + + thumb_func_start sub_813F004 +sub_813F004: @ 813F004 + push {r4,r5,lr} + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldrb r5, [r0, 0x3] + ldr r4, [r0, 0x10] + movs r3, 0 + cmp r3, r5 + bge _0813F066 + lsls r0, r1, 16 + asrs r1, r0, 16 + lsls r0, r2, 16 + asrs r2, r0, 16 +_0813F020: + ldrb r0, [r4, 0x5] + cmp r0, 0x7 + bne _0813F05E + ldrh r0, [r4] + cmp r1, r0 + bne _0813F05E + ldrh r0, [r4, 0x2] + cmp r2, r0 + bne _0813F05E + ldr r0, [r4, 0x8] + movs r1, 0x1 + bl sub_80CC44C + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [r4, 0x8] + movs r1, 0x3 + bl sub_80CC44C + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _0813F066 + adds r0, r5, 0 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _0813F066 + movs r0, 0x1 + b _0813F068 +_0813F05E: + adds r4, 0xC + adds r3, 0x1 + cmp r3, r5 + blt _0813F020 +_0813F066: + movs r0, 0 +_0813F068: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813F004 + + thumb_func_start sub_813F070 +sub_813F070: @ 813F070 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + bl sub_80589C4 + adds r3, r0, 0 + ldrb r0, [r4] + cmp r0, 0x2 + beq _0813F098 + cmp r0, 0x2 + bgt _0813F08E + cmp r0, 0x1 + beq _0813F0AC + b _0813F0EC +_0813F08E: + cmp r0, 0x3 + beq _0813F0C4 + cmp r0, 0x4 + beq _0813F0CE + b _0813F0EC +_0813F098: + ldr r0, [r4, 0x4] + adds r0, 0x7 + subs r0, r5, r0 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r3] + ldr r0, [r0, 0x4] + subs r0, 0x7 + adds r0, r6 + b _0813F0E2 +_0813F0AC: + ldr r0, [r4, 0x4] + adds r0, 0x7 + subs r0, r5, r0 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _0813F0C0 @ =gUnknown_2036DFC + ldr r0, [r0] + ldr r0, [r0, 0x4] + b _0813F0DE + .align 2, 0 +_0813F0C0: .4byte gUnknown_2036DFC +_0813F0C4: + ldr r0, [r3] + ldr r0, [r0] + subs r0, 0x7 + adds r0, r5 + b _0813F0D8 +_0813F0CE: + ldr r0, _0813F0E8 @ =gUnknown_2036DFC + ldr r0, [r0] + ldr r0, [r0] + adds r0, 0x7 + subs r0, r5, r0 +_0813F0D8: + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r4, 0x4] +_0813F0DE: + adds r0, 0x7 + subs r0, r6, r0 +_0813F0E2: + lsls r0, 16 + lsrs r2, r0, 16 + b _0813F0F0 + .align 2, 0 +_0813F0E8: .4byte gUnknown_2036DFC +_0813F0EC: + movs r0, 0 + b _0813F102 +_0813F0F0: + ldr r0, [r3, 0x4] + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + bl sub_813F004 + lsls r0, 24 + lsrs r0, 24 +_0813F102: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_813F070 + + thumb_func_start sub_813F108 +sub_813F108: @ 813F108 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + ldr r0, _0813F21C @ =gUnknown_2036DFC + ldr r1, [r0] + ldr r0, [r1] + adds r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + ldr r0, [r1, 0x4] + adds r0, 0x7 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + ldrh r0, [r0] + subs r0, 0x7 + lsls r0, 16 + lsrs r3, r0, 16 + asrs r0, 16 + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + adds r1, 0x7 + cmp r0, r1 + bgt _0813F20C +_0813F156: + mov r5, sp + ldrh r0, [r5, 0x2] + subs r0, 0x5 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r2, r4, 16 + asrs r1, r2, 16 + movs r6, 0x2 + ldrsh r0, [r5, r6] + adds r0, 0x5 + lsls r3, 16 + mov r8, r3 + cmp r1, r0 + bgt _0813F1F6 + movs r0, 0x7 + str r0, [sp, 0x10] + mov r1, r8 + asrs r1, 16 + mov r9, r1 + mov r10, r0 +_0813F17E: + ldr r3, [sp, 0x10] + cmp r3, r9 + bgt _0813F1A0 + ldr r5, [sp, 0x8] + lsls r0, r5, 16 + asrs r0, 16 + cmp r9, r0 + bge _0813F1A0 + asrs r1, r2, 16 + cmp r10, r1 + bgt _0813F1A0 + ldr r6, [sp, 0xC] + lsls r0, r6, 16 + asrs r0, 16 + lsls r7, r4, 16 + cmp r1, r0 + blt _0813F1DE +_0813F1A0: + mov r0, r8 + asrs r5, r0, 16 + lsls r4, 16 + asrs r6, r4, 16 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_805973C + adds r7, r4, 0 + cmp r0, 0 + beq _0813F1DE + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_813F070 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813F1DE + mov r0, sp + ldrh r1, [r0] + subs r1, r5, r1 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r0, 0x2] + subs r2, r6, r2 + lsls r2, 16 + asrs r2, 16 + ldr r0, [sp, 0x4] + bl sub_813F220 +_0813F1DE: + movs r1, 0x80 + lsls r1, 9 + adds r0, r7, r1 + lsrs r4, r0, 16 + lsls r2, r4, 16 + asrs r1, r2, 16 + mov r3, sp + movs r5, 0x2 + ldrsh r0, [r3, r5] + adds r0, 0x5 + cmp r1, r0 + ble _0813F17E +_0813F1F6: + movs r1, 0x80 + lsls r1, 9 + add r1, r8 + lsrs r3, r1, 16 + asrs r1, 16 + mov r0, sp + movs r6, 0 + ldrsh r0, [r0, r6] + adds r0, 0x7 + cmp r1, r0 + ble _0813F156 +_0813F20C: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813F21C: .4byte gUnknown_2036DFC + thumb_func_end sub_813F108 + + thumb_func_start sub_813F220 +sub_813F220: @ 813F220 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r2, 16 + mov r12, r2 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813F254 @ =gUnknown_3005098 + adds r3, r1, r0 + movs r1, 0x4 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _0813F258 + strh r7, [r3] + mov r0, r12 + strh r0, [r3, 0x2] + movs r0, 0x1 + strh r0, [r3, 0x4] + b _0813F2E2 + .align 2, 0 +_0813F254: .4byte gUnknown_3005098 +_0813F258: + movs r1, 0 + ldrsh r0, [r3, r1] + cmp r0, 0 + bge _0813F268 + negs r0, r0 + lsls r0, 16 + lsrs r4, r0, 16 + b _0813F26A +_0813F268: + ldrh r4, [r3] +_0813F26A: + movs r1, 0x2 + ldrsh r0, [r3, r1] + ldrh r1, [r3, 0x2] + mov r9, r1 + cmp r0, 0 + bge _0813F27E + negs r0, r0 + lsls r0, 16 + lsrs r2, r0, 16 + b _0813F280 +_0813F27E: + ldrh r2, [r3, 0x2] +_0813F280: + lsls r1, r7, 16 + asrs r0, r1, 16 + cmp r0, 0 + bge _0813F290 + negs r0, r0 + lsls r0, 16 + lsrs r6, r0, 16 + b _0813F292 +_0813F290: + lsrs r6, r1, 16 +_0813F292: + mov r1, r12 + lsls r0, r1, 16 + asrs r1, r0, 16 + mov r8, r0 + cmp r1, 0 + bge _0813F2A4 + negs r0, r1 + lsls r0, 16 + b _0813F2A6 +_0813F2A4: + mov r0, r8 +_0813F2A6: + lsrs r5, r0, 16 + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r2, 16 + asrs r2, r1, 16 + adds r4, r0, r2 + lsls r0, r6, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + adds r0, r1 + cmp r4, r0 + ble _0813F2C8 + strh r7, [r3] + mov r1, r12 + strh r1, [r3, 0x2] + b _0813F2E2 +_0813F2C8: + cmp r4, r0 + bne _0813F2E2 + cmp r2, r1 + bgt _0813F2DC + cmp r2, r1 + bne _0813F2E2 + mov r1, r9 + lsls r0, r1, 16 + cmp r0, r8 + bge _0813F2E2 +_0813F2DC: + strh r7, [r3] + mov r0, r12 + strh r0, [r3, 0x2] +_0813F2E2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_813F220 + + thumb_func_start sub_813F2F0 +sub_813F2F0: @ 813F2F0 + push {r4,r5,lr} + lsls r0, 16 + lsls r1, 16 + lsrs r1, 16 + lsrs r2, r0, 16 + cmp r0, 0 + bne _0813F302 + cmp r1, 0 + beq _0813F35C +_0813F302: + lsls r0, r2, 16 + asrs r2, r0, 16 + adds r5, r0, 0 + cmp r2, 0 + bge _0813F314 + negs r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + b _0813F316 +_0813F314: + lsrs r4, r5, 16 +_0813F316: + lsls r0, r1, 16 + asrs r2, r0, 16 + adds r1, r0, 0 + cmp r2, 0 + bge _0813F328 + negs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + b _0813F32A +_0813F328: + lsrs r3, r1, 16 +_0813F32A: + lsls r0, r4, 16 + asrs r2, r0, 16 + lsls r0, r3, 16 + asrs r0, 16 + cmp r2, r0 + ble _0813F342 + cmp r5, 0 + bge _0813F33E + movs r0, 0x4 + b _0813F35E +_0813F33E: + movs r0, 0x2 + b _0813F35E +_0813F342: + cmp r2, r0 + bge _0813F34C + cmp r1, 0 + blt _0813F354 + b _0813F358 +_0813F34C: + cmp r2, r0 + bne _0813F35C + cmp r1, 0 + bge _0813F358 +_0813F354: + movs r0, 0x1 + b _0813F35E +_0813F358: + movs r0, 0x3 + b _0813F35E +_0813F35C: + movs r0, 0 +_0813F35E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813F2F0 + + thumb_func_start sub_813F364 +sub_813F364: @ 813F364 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0813F378 @ =gUnknown_8416476 + ldr r3, _0813F37C @ =sub_813F380 + movs r1, 0x2 + bl sub_80F7808 + pop {r0} + bx r0 + .align 2, 0 +_0813F378: .4byte gUnknown_8416476 +_0813F37C: .4byte sub_813F380 + thumb_func_end sub_813F364 + + thumb_func_start sub_813F380 +sub_813F380: @ 813F380 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_813F3FC + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + bl sub_80696C0 + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813F380 + + thumb_func_start sub_813F3A8 +sub_813F3A8: @ 813F3A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0813F3BC @ =gUnknown_84164BE + ldr r3, _0813F3C0 @ =sub_813F3C4 + movs r1, 0x2 + bl sub_80F7808 + pop {r0} + bx r0 + .align 2, 0 +_0813F3BC: .4byte gUnknown_84164BE +_0813F3C0: .4byte sub_813F3C4 + thumb_func_end sub_813F3A8 + + thumb_func_start sub_813F3C4 +sub_813F3C4: @ 813F3C4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_813F3FC + adds r0, r4, 0 + bl sub_8077508 + ldr r0, _0813F3E8 @ =gUnknown_81A8D49 + bl sub_8069AE4 + bl sub_8069940 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813F3E8: .4byte gUnknown_81A8D49 + thumb_func_end sub_813F3C4 + + thumb_func_start sub_813F3EC +sub_813F3EC: @ 813F3EC + push {lr} + ldr r0, _0813F3F8 @ =gUnknown_84647FC + bl sub_80086DC + pop {r0} + bx r0 + .align 2, 0 +_0813F3F8: .4byte gUnknown_84647FC + thumb_func_end sub_813F3EC + + thumb_func_start sub_813F3FC +sub_813F3FC: @ 813F3FC + push {lr} + movs r0, 0xFA + lsls r0, 3 + bl sub_800874C + pop {r0} + bx r0 + thumb_func_end sub_813F3FC + + thumb_func_start sub_813F40C +sub_813F40C: @ 813F40C + push {r4-r7,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r0, _0813F464 @ =gUnknown_84647E4 + movs r1, 0x78 + movs r2, 0x4C + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0813F468 @ =gUnknown_202063C + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + adds r4, r0 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + strb r0, [r4, 0x5] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800838C + movs r0, 0 + strh r5, [r4, 0x3C] + strh r0, [r4, 0x2E] + strh r0, [r4, 0x34] + strh r0, [r4, 0x36] + movs r0, 0x78 + strh r0, [r4, 0x38] + movs r0, 0x4C + strh r0, [r4, 0x3A] + cmp r7, 0x4 + bhi _0813F53E + lsls r0, r7, 2 + ldr r1, _0813F46C @ =_0813F470 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813F464: .4byte gUnknown_84647E4 +_0813F468: .4byte gUnknown_202063C +_0813F46C: .4byte _0813F470 + .align 2, 0 +_0813F470: + .4byte _0813F484 + .4byte _0813F4C8 + .4byte _0813F4EC + .4byte _0813F50C + .4byte _0813F52C +_0813F484: + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _0813F4C8 + cmp r0, 0x2 + bgt _0813F49A + cmp r0, 0x1 + beq _0813F50C + b _0813F53E +_0813F49A: + cmp r0, 0x3 + beq _0813F4A4 + cmp r0, 0x4 + beq _0813F4EC + b _0813F53E +_0813F4A4: + ldr r1, _0813F4C0 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + movs r2, 0 + ldr r1, _0813F4C4 @ =0x0000ff9c + strh r1, [r0, 0x30] + strh r2, [r0, 0x32] + movs r1, 0 + bl sub_800843C + b _0813F53E + .align 2, 0 +_0813F4C0: .4byte gUnknown_202063C +_0813F4C4: .4byte 0x0000ff9c +_0813F4C8: + ldr r1, _0813F4E4 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x30] + ldr r1, _0813F4E8 @ =0x0000ff9c + strh r1, [r0, 0x32] + movs r1, 0x3 + bl sub_800843C + b _0813F53E + .align 2, 0 +_0813F4E4: .4byte gUnknown_202063C +_0813F4E8: .4byte 0x0000ff9c +_0813F4EC: + ldr r1, _0813F508 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + movs r2, 0 + movs r1, 0x64 + strh r1, [r0, 0x30] + strh r2, [r0, 0x32] + movs r1, 0x2 + bl sub_800843C + b _0813F53E + .align 2, 0 +_0813F508: .4byte gUnknown_202063C +_0813F50C: + ldr r1, _0813F528 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x30] + movs r1, 0x64 + strh r1, [r0, 0x32] + movs r1, 0x1 + bl sub_800843C + b _0813F53E + .align 2, 0 +_0813F528: .4byte gUnknown_202063C +_0813F52C: + ldr r1, _0813F544 @ =gUnknown_202063C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + movs r2, 0 + ldr r1, _0813F548 @ =0x0000ff9c + strh r1, [r0, 0x30] + strh r2, [r0, 0x32] +_0813F53E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813F544: .4byte gUnknown_202063C +_0813F548: .4byte 0x0000ff9c + thumb_func_end sub_813F40C + + thumb_func_start sub_813F54C +sub_813F54C: @ 813F54C + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r0, r1 + strh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + ldrh r3, [r2, 0x38] + adds r0, r3 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 24 + ldrh r3, [r2, 0x3A] + adds r1, r3 + strh r1, [r2, 0x22] + subs r0, 0x69 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1B + bhi _0813F58A + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _0813F58A + cmp r0, 0x58 + ble _0813F58E +_0813F58A: + ldr r0, _0813F594 @ =sub_813F598 + str r0, [r2, 0x1C] +_0813F58E: + pop {r0} + bx r0 + .align 2, 0 +_0813F594: .4byte sub_813F598 + thumb_func_end sub_813F54C + + thumb_func_start sub_813F598 +sub_813F598: @ 813F598 + push {r4,lr} + adds r4, r0, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813F598 + + thumb_func_start sub_813F5AC +sub_813F5AC: @ 813F5AC + push {r4,r5,lr} + ldr r0, _0813F604 @ =gUnknown_84647E4 + movs r1, 0x78 + movs r2, 0x4C + movs r3, 0 + bl sub_8006F8C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r2, _0813F608 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r4, r1, r2 + ldrb r3, [r4, 0x5] + movs r0, 0xF + ands r0, r3 + strb r0, [r4, 0x5] + adds r2, 0x1C + adds r1, r2 + ldr r0, _0813F60C @ =sub_813F614 + str r0, [r1] + adds r0, r4, 0 + movs r1, 0x4 + bl sub_800838C + movs r1, 0 + strh r1, [r4, 0x3C] + strh r1, [r4, 0x2E] + strh r1, [r4, 0x34] + strh r1, [r4, 0x36] + movs r0, 0x78 + strh r0, [r4, 0x38] + movs r0, 0x4C + strh r0, [r4, 0x3A] + strh r1, [r4, 0x30] + ldr r0, _0813F610 @ =0x0000ff9c + strh r0, [r4, 0x32] + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0813F604: .4byte gUnknown_84647E4 +_0813F608: .4byte gUnknown_202063C +_0813F60C: .4byte sub_813F614 +_0813F610: .4byte 0x0000ff9c + thumb_func_end sub_813F5AC + + thumb_func_start sub_813F614 +sub_813F614: @ 813F614 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r0, r1 + strh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + ldrh r3, [r2, 0x38] + adds r0, r3 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 24 + ldrh r3, [r2, 0x3A] + adds r1, r3 + strh r1, [r2, 0x22] + subs r0, 0x69 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1B + bhi _0813F652 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _0813F652 + cmp r0, 0x58 + ble _0813F656 +_0813F652: + ldr r0, _0813F65C @ =sub_813F660 + str r0, [r2, 0x1C] +_0813F656: + pop {r0} + bx r0 + .align 2, 0 +_0813F65C: .4byte sub_813F660 + thumb_func_end sub_813F614 + + thumb_func_start sub_813F660 +sub_813F660: @ 813F660 + push {lr} + bl sub_8007280 + pop {r0} + bx r0 + thumb_func_end sub_813F660 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/learn_move.s b/asm/learn_move.s new file mode 100644 index 000000000..e48590629 --- /dev/null +++ b/asm/learn_move.s @@ -0,0 +1,1954 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80E4620 +sub_80E4620: @ 80E4620 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80E4620 + + thumb_func_start sub_80E4634 +sub_80E4634: @ 80E4634 + push {lr} + sub sp, 0x4 + bl sub_8069940 + ldr r0, _080E465C @ =sub_80E4660 + movs r1, 0xA + bl sub_807741C + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080E465C: .4byte sub_80E4660 + thumb_func_end sub_80E4634 + + thumb_func_start sub_80E4660 +sub_80E4660: @ 80E4660 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080E468C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E4684 + ldr r0, _080E4690 @ =sub_80E478C + bl sub_8000544 + ldr r1, _080E4694 @ =gUnknown_3005020 + ldr r0, _080E4698 @ =sub_807DD24 + str r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_080E4684: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E468C: .4byte gUnknown_2037AB8 +_080E4690: .4byte sub_80E478C +_080E4694: .4byte gUnknown_3005020 +_080E4698: .4byte sub_807DD24 + thumb_func_end sub_80E4660 + + thumb_func_start sub_80E469C +sub_80E469C: @ 80E469C + push {r4,r5,lr} + sub sp, 0xC + movs r0, 0 + bl sub_8001618 + ldr r1, _080E4774 @ =gUnknown_83FFA3C + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + bl sub_80F6808 + ldr r0, _080E4778 @ =gUnknown_83FFA44 + bl sub_8003B24 + lsls r0, 16 + cmp r0, 0 + beq _080E476C + bl sub_8002C28 + movs r5, 0 +_080E46C6: + lsls r4, r5, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80040B8 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r5, 0x1 + cmp r5, 0x8 + bls _080E46C6 + movs r0, 0x7 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + ldr r0, _080E477C @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x99 + lsls r0, 2 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xE0 + bl sub_815001C + movs r0, 0xD0 + movs r1, 0x1 + bl sub_8107D38 + ldr r0, _080E4780 @ =gUnknown_8E97DDC + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080E4784 @ =gUnknown_8E97DFC + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _080E4788 @ =gUnknown_8E97EC4 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 +_080E476C: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E4774: .4byte gUnknown_83FFA3C +_080E4778: .4byte gUnknown_83FFA44 +_080E477C: .4byte gUnknown_203AAB4 +_080E4780: .4byte gUnknown_8E97DDC +_080E4784: .4byte gUnknown_8E97DFC +_080E4788: .4byte gUnknown_8E97EC4 + thumb_func_end sub_80E469C + + thumb_func_start sub_80E478C +sub_80E478C: @ 80E478C + push {r4,lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + ldr r4, _080E47EC @ =gUnknown_203AAB4 + ldr r0, _080E47F0 @ =0x00000a6c + bl sub_8002BB0 + str r0, [r4] + bl sub_80E4F54 + ldr r0, [r4] + ldr r1, _080E47F4 @ =gUnknown_20370C0 + ldrh r1, [r1] + movs r2, 0x98 + lsls r2, 2 + adds r0, r2 + strb r1, [r0] + bl sub_80E50CC + ldr r0, _080E47F8 @ =sub_80E4620 + bl sub_80006F4 + bl sub_80E469C + bl sub_80E5004 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + ldr r0, _080E47FC @ =sub_80E4870 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E47EC: .4byte gUnknown_203AAB4 +_080E47F0: .4byte 0x00000a6c +_080E47F4: .4byte gUnknown_20370C0 +_080E47F8: .4byte sub_80E4620 +_080E47FC: .4byte sub_80E4870 + thumb_func_end sub_80E478C + + thumb_func_start sub_80E4800 +sub_80E4800: @ 80E4800 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + bl sub_80E50CC + ldr r0, _080E485C @ =gUnknown_203AAB4 + ldr r0, [r0] + ldr r1, _080E4860 @ =gUnknown_20370C2 + ldrh r1, [r1] + ldr r2, _080E4864 @ =0x00000261 + adds r0, r2 + strb r1, [r0] + ldr r0, _080E4868 @ =sub_80E4620 + bl sub_80006F4 + bl sub_80E469C + bl sub_80E5004 + movs r0, 0 + movs r1, 0 + movs r2, 0x2 + bl sub_8070424 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + ldr r0, _080E486C @ =sub_80E4870 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080E485C: .4byte gUnknown_203AAB4 +_080E4860: .4byte gUnknown_20370C2 +_080E4864: .4byte 0x00000261 +_080E4868: .4byte sub_80E4620 +_080E486C: .4byte sub_80E4870 + thumb_func_end sub_80E4800 + + thumb_func_start sub_80E4870 +sub_80E4870: @ 80E4870 + push {r4,lr} + movs r0, 0x7 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _080E4882 + bl sub_80E48F4 +_080E4882: + ldr r4, _080E48B8 @ =gUnknown_203AAB4 + ldr r0, [r4] + ldr r1, _080E48BC @ =0x0000025f + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080E489E + bl sub_80E54C0 + ldr r0, [r4] + ldr r1, _080E48BC @ =0x0000025f + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_080E489E: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E48B8: .4byte gUnknown_203AAB4 +_080E48BC: .4byte 0x0000025f + thumb_func_end sub_80E4870 + + thumb_func_start sub_80E48C0 +sub_80E48C0: @ 80E48C0 + push {r4,lr} + sub sp, 0x8 + adds r1, r0, 0 + ldr r4, _080E48F0 @ =gUnknown_2021D18 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x7 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_80E559C + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E48F0: .4byte gUnknown_2021D18 + thumb_func_end sub_80E48C0 + + thumb_func_start sub_80E48F4 +sub_80E48F4: @ 80E48F4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r1, _080E4918 @ =gUnknown_203AAB4 + ldr r0, [r1] + ldrb r0, [r0] + adds r7, r1, 0 + cmp r0, 0x21 + bls _080E490C + b _080E4EDA +_080E490C: + lsls r0, 2 + ldr r1, _080E491C @ =_080E4920 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E4918: .4byte gUnknown_203AAB4 +_080E491C: .4byte _080E4920 + .align 2, 0 +_080E4920: + .4byte _080E49A8 + .4byte _080E49F4 + .4byte _080E4A0C + .4byte _080E4A14 + .4byte _080E4A38 + .4byte _080E4EDA + .4byte _080E4EDA + .4byte _080E4EDA + .4byte _080E4A3E + .4byte _080E4A68 + .4byte _080E4EDA + .4byte _080E4EDA + .4byte _080E4AF4 + .4byte _080E4B20 + .4byte _080E4CFA + .4byte _080E4D18 + .4byte _080E4B58 + .4byte _080E4B70 + .4byte _080E4B98 + .4byte _080E4C5A + .4byte _080E4C70 + .4byte _080E4CE4 + .4byte _080E4CE8 + .4byte _080E4EDA + .4byte _080E4BDC + .4byte _080E4BF4 + .4byte _080E4C1C + .4byte _080E4C54 + .4byte _080E4D48 + .4byte _080E4D8C + .4byte _080E4E70 + .4byte _080E4E90 + .4byte _080E4EA8 + .4byte _080E4EC0 +_080E49A8: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + bl sub_80E5444 + ldr r4, _080E49EC @ =gUnknown_203AAB4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bl sub_80E4EF0 + movs r0, 0 + bl sub_80E4F0C + bl sub_80E5300 + ldr r0, [r4] + ldr r1, _080E49F0 @ =0x0000025f + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _080E4EDA + .align 2, 0 +_080E49EC: .4byte gUnknown_203AAB4 +_080E49F0: .4byte 0x0000025f +_080E49F4: + ldr r0, _080E4A08 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E4A02 + b _080E4EDA +_080E4A02: + ldr r1, [r7] + movs r0, 0x4 + b _080E4ED8 + .align 2, 0 +_080E4A08: .4byte gUnknown_2037AB8 +_080E4A0C: + ldr r1, [r7] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 +_080E4A14: + movs r0, 0 + bl sub_80E4F0C + ldr r2, _080E4A30 @ =gUnknown_203AAB4 + ldr r0, [r2] + ldr r3, _080E4A34 @ =0x0000025f + adds r0, r3 + movs r1, 0x1 + strb r1, [r0] + ldr r1, [r2] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 + .align 2, 0 +_080E4A30: .4byte gUnknown_203AAB4 +_080E4A34: .4byte 0x0000025f +_080E4A38: + bl sub_80E5204 + b _080E4EDA +_080E4A3E: + ldr r0, _080E4A60 @ =gUnknown_83FFA8C + movs r1, 0x1 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r0, _080E4A64 @ =gUnknown_203AAB4 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 + .align 2, 0 +_080E4A60: .4byte gUnknown_83FFA8C +_080E4A64: .4byte gUnknown_203AAB4 +_080E4A68: + bl sub_80E5574 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080E4A88 + cmp r1, 0 + bgt _080E4A82 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080E4AE6 + b _080E4EDA +_080E4A82: + cmp r1, 0x1 + beq _080E4AE6 + b _080E4EDA +_080E4A88: + ldr r4, _080E4AC8 @ =gUnknown_203AAB4 + ldr r2, [r4] + movs r6, 0x98 + lsls r6, 2 + adds r0, r2, r6 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E4ACC @ =gUnknown_2024284 + adds r0, r1 + ldr r3, _080E4AD0 @ =0x00000a67 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, 1 + adds r2, 0xE8 + adds r2, r1 + ldrh r1, [r2] + bl sub_803E89C + lsls r0, 16 + ldr r1, _080E4AD4 @ =0xffff0000 + cmp r0, r1 + beq _080E4AE0 + ldr r0, _080E4AD8 @ =gUnknown_841E405 + bl sub_80E48C0 + ldr r1, _080E4ADC @ =gUnknown_20370C0 + movs r0, 0x1 + strh r0, [r1] + ldr r1, [r4] + movs r0, 0x1F + b _080E4ED8 + .align 2, 0 +_080E4AC8: .4byte gUnknown_203AAB4 +_080E4ACC: .4byte gUnknown_2024284 +_080E4AD0: .4byte 0x00000a67 +_080E4AD4: .4byte 0xffff0000 +_080E4AD8: .4byte gUnknown_841E405 +_080E4ADC: .4byte gUnknown_20370C0 +_080E4AE0: + ldr r1, [r4] + movs r0, 0x10 + b _080E4ED8 +_080E4AE6: + ldr r0, _080E4AF0 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x3 + b _080E4ED8 + .align 2, 0 +_080E4AF0: .4byte gUnknown_203AAB4 +_080E4AF4: + ldr r0, _080E4B18 @ =gUnknown_83FFA8C + movs r1, 0x1 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r0, _080E4B1C @ =gUnknown_203AAB4 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 + .align 2, 0 +_080E4B18: .4byte gUnknown_83FFA8C +_080E4B1C: .4byte gUnknown_203AAB4 +_080E4B20: + bl sub_80E5574 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080E4B40 + cmp r1, 0 + bgt _080E4B3A + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080E4B4C + b _080E4EDA +_080E4B3A: + cmp r1, 0x1 + beq _080E4B4C + b _080E4EDA +_080E4B40: + ldr r0, _080E4B48 @ =gUnknown_20370C0 + strh r1, [r0] + b _080E4ED2 + .align 2, 0 +_080E4B48: .4byte gUnknown_20370C0 +_080E4B4C: + ldr r0, _080E4B54 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x3 + b _080E4ED8 + .align 2, 0 +_080E4B54: .4byte gUnknown_203AAB4 +_080E4B58: + ldr r0, _080E4B68 @ =gUnknown_841E414 + bl sub_80E48C0 + ldr r0, _080E4B6C @ =gUnknown_203AAB4 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 + .align 2, 0 +_080E4B68: .4byte gUnknown_841E414 +_080E4B6C: .4byte gUnknown_203AAB4 +_080E4B70: + ldr r0, _080E4B90 @ =gUnknown_83FFA8C + movs r1, 0x1 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r0, _080E4B94 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x12 + b _080E4ED8 + .align 2, 0 +_080E4B90: .4byte gUnknown_83FFA8C +_080E4B94: .4byte gUnknown_203AAB4 +_080E4B98: + bl sub_80E5574 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080E4BB8 + cmp r1, 0 + bgt _080E4BB2 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080E4BD0 + b _080E4EDA +_080E4BB2: + cmp r1, 0x1 + beq _080E4BD0 + b _080E4EDA +_080E4BB8: + ldr r0, _080E4BC8 @ =gUnknown_841E50C + bl sub_80E48C0 + ldr r0, _080E4BCC @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x13 + b _080E4ED8 + .align 2, 0 +_080E4BC8: .4byte gUnknown_841E50C +_080E4BCC: .4byte gUnknown_203AAB4 +_080E4BD0: + ldr r0, _080E4BD8 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x18 + b _080E4ED8 + .align 2, 0 +_080E4BD8: .4byte gUnknown_203AAB4 +_080E4BDC: + ldr r0, _080E4BEC @ =gUnknown_841E481 + bl sub_80E48C0 + ldr r0, _080E4BF0 @ =gUnknown_203AAB4 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 + .align 2, 0 +_080E4BEC: .4byte gUnknown_841E481 +_080E4BF0: .4byte gUnknown_203AAB4 +_080E4BF4: + ldr r0, _080E4C14 @ =gUnknown_83FFA8C + movs r1, 0x1 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r0, _080E4C18 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x1A + b _080E4ED8 + .align 2, 0 +_080E4C14: .4byte gUnknown_83FFA8C +_080E4C18: .4byte gUnknown_203AAB4 +_080E4C1C: + bl sub_80E5574 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080E4C3C + cmp r1, 0 + bgt _080E4C36 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080E4C48 + b _080E4EDA +_080E4C36: + cmp r1, 0x1 + beq _080E4C48 + b _080E4EDA +_080E4C3C: + ldr r0, _080E4C44 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x1B + b _080E4ED8 + .align 2, 0 +_080E4C44: .4byte gUnknown_203AAB4 +_080E4C48: + ldr r0, _080E4C50 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x10 + b _080E4ED8 + .align 2, 0 +_080E4C50: .4byte gUnknown_203AAB4 +_080E4C54: + ldr r1, [r7] + movs r0, 0x3 + b _080E4ED8 +_080E4C5A: + ldr r1, [r7] + movs r2, 0 + movs r0, 0x14 + strb r0, [r1] + subs r0, 0x15 + str r2, [sp] + movs r1, 0 + movs r3, 0x10 + bl sub_8070588 + b _080E4EDA +_080E4C70: + ldr r0, _080E4CC8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E4C7E + b _080E4EDA +_080E4C7E: + ldr r2, [r7] + ldr r6, _080E4CCC @ =0x00000263 + adds r0, r2, r6 + ldrb r0, [r0] + ldr r3, _080E4CD0 @ =0x00000a68 + adds r1, r2, r3 + ldr r6, _080E4CD4 @ =0x00000a6a + adds r2, r6 + bl sub_81072D4 + bl sub_8003ECC + ldr r0, _080E4CD8 @ =gUnknown_2024284 + ldr r5, [r7] + movs r2, 0x98 + lsls r2, 2 + adds r1, r5, r2 + ldrb r1, [r1] + ldr r2, _080E4CDC @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080E4CE0 @ =sub_80E4800 + subs r6, 0x3 + adds r4, r5, r6 + ldrb r4, [r4] + lsls r4, 1 + adds r5, 0xE8 + adds r5, r4 + ldrh r4, [r5] + str r4, [sp] + bl sub_8134738 + ldr r1, [r7] + movs r0, 0x1C + b _080E4ED8 + .align 2, 0 +_080E4CC8: .4byte gUnknown_2037AB8 +_080E4CCC: .4byte 0x00000263 +_080E4CD0: .4byte 0x00000a68 +_080E4CD4: .4byte 0x00000a6a +_080E4CD8: .4byte gUnknown_2024284 +_080E4CDC: .4byte gUnknown_2024029 +_080E4CE0: .4byte sub_80E4800 +_080E4CE4: + ldr r1, [r7] + b _080E4ED6 +_080E4CE8: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _080E4EDA +_080E4CFA: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080E4D14 @ =gUnknown_203AAB4 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + b _080E4ED8 + .align 2, 0 +_080E4D14: .4byte gUnknown_203AAB4 +_080E4D18: + ldr r0, _080E4D3C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E4D26 + b _080E4EDA +_080E4D26: + bl sub_8003ECC + ldr r0, _080E4D40 @ =gUnknown_203AAB4 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _080E4D44 @ =sub_80567DC + bl sub_8000544 + b _080E4EDA + .align 2, 0 +_080E4D3C: .4byte gUnknown_2037AB8 +_080E4D40: .4byte gUnknown_203AAB4 +_080E4D44: .4byte sub_80567DC +_080E4D48: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _080E4D88 @ =gUnknown_203AAB4 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bl sub_80E5444 + bl sub_80E4EF0 + bl sub_80E5300 + movs r0, 0x1 + bl sub_80E4F0C + bl sub_80E54C0 + b _080E4EDA + .align 2, 0 +_080E4D88: .4byte gUnknown_203AAB4 +_080E4D8C: + ldr r0, _080E4DAC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080E4D9A + b _080E4EDA +_080E4D9A: + ldr r1, [r7] + ldr r0, _080E4DB0 @ =0x00000261 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0x4 + bne _080E4DB4 + movs r0, 0x18 + b _080E4ED8 + .align 2, 0 +_080E4DAC: .4byte gUnknown_2037AB8 +_080E4DB0: .4byte 0x00000261 +_080E4DB4: + movs r4, 0x98 + lsls r4, 2 + adds r0, r1, r4 + ldrb r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080E4E50 @ =gUnknown_2024284 + adds r0, r5 + ldrb r1, [r2] + adds r1, 0xD + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _080E4E54 @ =gUnknown_2021D04 + movs r1, 0xD + mov r9, r1 + mov r1, r9 + muls r1, r0 + ldr r3, _080E4E58 @ =gUnknown_8247094 + mov r8, r3 + add r1, r8 + adds r0, r2, 0 + bl sub_8008D84 + ldr r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + muls r0, r6 + adds r0, r5 + ldr r2, _080E4E5C @ =0x00000261 + adds r1, r2 + ldrb r1, [r1] + bl sub_8041064 + ldr r3, [r7] + adds r4, r3, r4 + ldrb r0, [r4] + muls r0, r6 + adds r0, r5 + ldr r4, _080E4E60 @ =0x00000a67 + adds r1, r3, r4 + ldrb r2, [r1] + lsls r2, 1 + adds r1, r3, 0 + adds r1, 0xE8 + adds r1, r2 + ldrh r1, [r1] + ldr r6, _080E4E5C @ =0x00000261 + adds r3, r6 + ldrb r2, [r3] + bl sub_803E964 + ldr r0, _080E4E64 @ =gUnknown_2021CF0 + ldr r2, [r7] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r1, 1 + adds r2, 0xE8 + adds r2, r1 + ldrh r1, [r2] + mov r2, r9 + muls r2, r1 + adds r1, r2, 0 + add r1, r8 + bl sub_8008D84 + ldr r0, _080E4E68 @ =gUnknown_841E493 + bl sub_80E48C0 + ldr r1, [r7] + movs r0, 0x1E + strb r0, [r1] + ldr r1, _080E4E6C @ =gUnknown_20370C0 + movs r0, 0x1 + strh r0, [r1] + b _080E4EDA + .align 2, 0 +_080E4E50: .4byte gUnknown_2024284 +_080E4E54: .4byte gUnknown_2021D04 +_080E4E58: .4byte gUnknown_8247094 +_080E4E5C: .4byte 0x00000261 +_080E4E60: .4byte 0x00000a67 +_080E4E64: .4byte gUnknown_2021CF0 +_080E4E68: .4byte gUnknown_841E493 +_080E4E6C: .4byte gUnknown_20370C0 +_080E4E70: + ldr r0, _080E4E88 @ =gUnknown_841E4C0 + bl sub_80E48C0 + ldr r0, _080E4E8C @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x1F + strb r0, [r1] + adds r0, 0xE2 + bl sub_8071C60 + b _080E4EDA + .align 2, 0 +_080E4E88: .4byte gUnknown_841E4C0 +_080E4E8C: .4byte gUnknown_203AAB4 +_080E4E90: + ldr r0, _080E4EA0 @ =0x00000101 + bl sub_8071C60 + ldr r0, _080E4EA4 @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x20 + b _080E4ED8 + .align 2, 0 +_080E4EA0: .4byte 0x00000101 +_080E4EA4: .4byte gUnknown_203AAB4 +_080E4EA8: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _080E4EDA + ldr r0, _080E4EBC @ =gUnknown_203AAB4 + ldr r1, [r0] + movs r0, 0x21 + b _080E4ED8 + .align 2, 0 +_080E4EBC: .4byte gUnknown_203AAB4 +_080E4EC0: + ldr r0, _080E4EE8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E4EDA + movs r0, 0x5 + bl sub_80722CC +_080E4ED2: + ldr r0, _080E4EEC @ =gUnknown_203AAB4 + ldr r1, [r0] +_080E4ED6: + movs r0, 0xE +_080E4ED8: + strb r0, [r1] +_080E4EDA: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E4EE8: .4byte gUnknown_30030F0 +_080E4EEC: .4byte gUnknown_203AAB4 + thumb_func_end sub_80E48F4 + + thumb_func_start sub_80E4EF0 +sub_80E4EF0: @ 80E4EF0 + push {r4,lr} + movs r4, 0x6 +_080E4EF4: + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + adds r4, 0x1 + cmp r4, 0x7 + ble _080E4EF4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E4EF0 + + thumb_func_start sub_80E4F0C +sub_80E4F0C: @ 80E4F0C + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080E4F42 + ldr r4, _080E4F4C @ =gUnknown_2021D18 + ldr r1, _080E4F50 @ =gUnknown_841E3E3 + adds r0, r4, 0 + bl sub_8008FCC + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x7 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_80E559C + movs r0, 0x7 + bl sub_8003FA0 + movs r0, 0x7 + movs r1, 0x3 + bl sub_8003F20 +_080E4F42: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E4F4C: .4byte gUnknown_2021D18 +_080E4F50: .4byte gUnknown_841E3E3 + thumb_func_end sub_80E4F0C + + thumb_func_start sub_80E4F54 +sub_80E4F54: @ 80E4F54 + push {r4,lr} + ldr r2, _080E4FA4 @ =gUnknown_203AAB4 + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x2] + ldr r0, [r2] + strb r1, [r0, 0x19] + ldr r0, [r2] + strb r1, [r0, 0x18] + ldr r0, [r2] + strb r1, [r0, 0x1C] + ldr r0, [r2] + strb r1, [r0, 0x1A] + ldr r0, [r2] + strb r1, [r0, 0x1B] + ldr r0, [r2] + strb r1, [r0, 0x1D] + ldr r0, [r2] + strb r1, [r0, 0x1E] + ldr r0, [r2] + ldr r3, _080E4FA8 @ =0x0000025f + adds r0, r3 + strb r1, [r0] + movs r3, 0 + adds r4, r2, 0 + movs r2, 0 +_080E4F8C: + ldr r0, [r4] + lsls r1, r3, 1 + adds r0, 0xE8 + adds r0, r1 + strh r2, [r0] + adds r3, 0x1 + cmp r3, 0x13 + ble _080E4F8C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4FA4: .4byte gUnknown_203AAB4 +_080E4FA8: .4byte 0x0000025f + thumb_func_end sub_80E4F54 + + thumb_func_start sub_80E4FAC +sub_80E4FAC: @ 80E4FAC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + movs r0, 0xFF + ands r1, r0 + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0x1 + beq _080E4FD0 + cmp r0, 0x1 + ble _080E4FF6 + cmp r0, 0x2 + beq _080E4FE4 + b _080E4FF6 +_080E4FD0: + adds r0, r1, 0 + movs r1, 0x3 + bl sub_8044E30 + ldrh r1, [r4, 0x32] + adds r2, r0, 0 + muls r2, r1 + adds r0, r2, 0 + strh r0, [r4, 0x24] + b _080E4FF6 +_080E4FE4: + adds r0, r1, 0 + movs r1, 0x1 + bl sub_8044E30 + ldrh r1, [r4, 0x32] + adds r2, r0, 0 + muls r2, r1 + adds r0, r2, 0 + strh r0, [r4, 0x26] +_080E4FF6: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E4FAC + + thumb_func_start sub_80E5004 +sub_80E5004: @ 80E5004 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _080E50B4 @ =gUnknown_83FF9F4 + bl sub_80086DC + ldr r0, _080E50B8 @ =gUnknown_83FF9FC + bl sub_8008928 + ldr r0, _080E50BC @ =gUnknown_83FFA24 + mov r8, r0 + movs r1, 0xC8 + movs r2, 0x4 + movs r3, 0 + bl sub_8006F8C + ldr r5, _080E50C0 @ =gUnknown_203AAB4 + ldr r1, [r5] + strb r0, [r1, 0x3] + ldr r0, [r5] + ldrb r1, [r0, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080E50C4 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0x1 + bl sub_800838C + ldr r2, [r5] + ldrb r1, [r2, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r6, 0x2 + strh r6, [r0, 0x2E] + ldrb r1, [r2, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080E50C8 @ =0x0000ffff + strh r1, [r0, 0x32] + mov r0, r8 + movs r1, 0xC8 + movs r2, 0x6C + movs r3, 0 + bl sub_8006F8C + ldr r1, [r5] + strb r0, [r1, 0x3] + ldr r2, [r5] + ldrb r1, [r2, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r6, [r0, 0x2E] + ldrb r1, [r2, 0x3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + strh r1, [r0, 0x32] + movs r2, 0 + movs r3, 0x4 +_080E508C: + ldr r0, [r5] + adds r0, 0x3 + adds r0, r2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x1 + ble _080E508C + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E50B4: .4byte gUnknown_83FF9F4 +_080E50B8: .4byte gUnknown_83FF9FC +_080E50BC: .4byte gUnknown_83FFA24 +_080E50C0: .4byte gUnknown_203AAB4 +_080E50C4: .4byte gUnknown_202063C +_080E50C8: .4byte 0x0000ffff + thumb_func_end sub_80E5004 + + thumb_func_start sub_80E50CC +sub_80E50CC: @ 80E50CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r7, _080E51E8 @ =gUnknown_203AAB4 + ldr r1, [r7] + movs r4, 0x98 + lsls r4, 2 + adds r0, r1, r4 + ldrb r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080E51EC @ =gUnknown_2024284 + adds r0, r5 + adds r1, 0xE8 + bl sub_8043C84 + ldr r1, [r7] + strb r0, [r1, 0x1A] + ldr r1, [r7] + adds r4, r1, r4 + ldrb r0, [r4] + muls r0, r6 + adds r0, r5 + adds r1, 0xE8 + bl sub_8043C84 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + ldr r0, [r7] + ldrb r0, [r0, 0x1A] + cmp r5, r0 + bge _080E513C + adds r6, r7, 0 + movs r7, 0xD + movs r4, 0x8D + lsls r4, 1 +_080E511A: + ldr r1, [r6] + adds r0, r1, r4 + lsls r2, r5, 1 + adds r1, 0xE8 + adds r1, r2 + ldrh r1, [r1] + muls r1, r7 + ldr r2, _080E51F0 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + adds r4, 0xD + adds r5, 0x1 + ldr r0, [r6] + ldrb r0, [r0, 0x1A] + cmp r5, r0 + blt _080E511A +_080E513C: + ldr r4, _080E51E8 @ =gUnknown_203AAB4 + ldr r0, [r4] + movs r1, 0x98 + lsls r1, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E51EC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _080E51F4 @ =gUnknown_2021CD0 + mov r1, sp + bl sub_8008CF4 + ldr r0, [r4] + ldrb r2, [r0, 0x1A] + movs r1, 0xD + muls r1, r2 + movs r7, 0x8D + lsls r7, 1 + adds r1, r7 + adds r0, r1 + ldr r1, _080E51F8 @ =gUnknown_84161C1 + bl sub_8008D84 + ldr r1, [r4] + ldrb r0, [r1, 0x1A] + adds r0, 0x1 + strb r0, [r1, 0x1A] + movs r5, 0 + movs r3, 0x1 + add r3, r8 + mov r12, r3 + cmp r5, r8 + bge _080E51AA + adds r6, r4, 0 + adds r4, r7, 0 +_080E518E: + ldr r0, [r6] + lsls r3, r5, 3 + adds r1, r0, 0 + adds r1, 0x20 + adds r1, r3 + adds r2, r0, r4 + str r2, [r1] + adds r0, 0x24 + adds r0, r3 + str r5, [r0] + adds r4, 0xD + adds r5, 0x1 + cmp r5, r8 + blt _080E518E +_080E51AA: + ldr r4, _080E51E8 @ =gUnknown_203AAB4 + ldr r2, [r4] + lsls r3, r5, 3 + adds r0, r2, 0 + adds r0, 0x20 + adds r0, r3 + ldr r1, _080E51F8 @ =gUnknown_84161C1 + str r1, [r0] + adds r2, 0x24 + adds r2, r3 + movs r0, 0xFE + str r0, [r2] + ldr r2, _080E51FC @ =gUnknown_3005E70 + adds r1, r2, 0 + ldr r0, _080E5200 @ =gUnknown_83FFA94 + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldr r0, [r4] + adds r0, 0x20 + str r0, [r2] + mov r5, r12 + strh r5, [r2, 0xC] + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E51E8: .4byte gUnknown_203AAB4 +_080E51EC: .4byte gUnknown_2024284 +_080E51F0: .4byte gUnknown_8247094 +_080E51F4: .4byte gUnknown_2021CD0 +_080E51F8: .4byte gUnknown_84161C1 +_080E51FC: .4byte gUnknown_3005E70 +_080E5200: .4byte gUnknown_83FFA94 + thumb_func_end sub_80E50CC + + thumb_func_start sub_80E5204 +sub_80E5204: @ 80E5204 + push {r4,r5,lr} + ldr r4, _080E5258 @ =gUnknown_203AAB4 + ldr r0, [r4] + ldr r1, _080E525C @ =0x00000263 + adds r0, r1 + ldrb r0, [r0] + bl sub_8107078 + ldr r0, _080E5260 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E5284 + movs r0, 0x5 + bl sub_80722CC + ldr r1, [r4] + ldr r2, _080E5264 @ =0x00000a67 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0xFE + beq _080E5270 + movs r0, 0x8 + strb r0, [r1] + ldr r0, _080E5268 @ =gUnknown_2021CF0 + ldr r1, [r4] + adds r2, r1, r2 + ldrb r3, [r2] + movs r2, 0xD + muls r2, r3 + movs r3, 0x8D + lsls r3, 1 + adds r2, r3 + adds r1, r2 + bl sub_8008D84 + ldr r0, _080E526C @ =gUnknown_841E3FB + bl sub_80E48C0 + b _080E529E + .align 2, 0 +_080E5258: .4byte gUnknown_203AAB4 +_080E525C: .4byte 0x00000263 +_080E5260: .4byte gUnknown_30030F0 +_080E5264: .4byte 0x00000a67 +_080E5268: .4byte gUnknown_2021CF0 +_080E526C: .4byte gUnknown_841E3FB +_080E5270: + ldr r0, _080E5280 @ =gUnknown_841E4E2 + bl sub_80E48C0 + ldr r1, [r4] + movs r0, 0xC + strb r0, [r1] + b _080E529E + .align 2, 0 +_080E5280: .4byte gUnknown_841E4E2 +_080E5284: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E529E + movs r0, 0x5 + bl sub_80722CC + ldr r0, [r4] + movs r1, 0xC + strb r1, [r0] + ldr r0, _080E52DC @ =gUnknown_841E4E2 + bl sub_80E48C0 +_080E529E: + ldr r0, _080E52E0 @ =gUnknown_203AAB4 + ldr r4, [r0] + ldrb r0, [r4, 0x1A] + cmp r0, 0x6 + bls _080E52FA + ldr r2, _080E52E4 @ =gUnknown_202063C + movs r0, 0x3E + adds r0, r2 + mov r12, r0 + ldrb r0, [r0] + movs r1, 0x5 + negs r1, r1 + adds r3, r1, 0 + ands r3, r0 + mov r0, r12 + strb r3, [r0] + adds r5, r2, 0 + adds r5, 0x82 + ldrb r0, [r5] + adds r2, r1, 0 + ands r2, r0 + strb r2, [r5] + ldrb r0, [r4, 0x19] + cmp r0, 0 + bne _080E52E8 + movs r1, 0x4 + adds r0, r3, 0 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + b _080E52FA + .align 2, 0 +_080E52DC: .4byte gUnknown_841E4E2 +_080E52E0: .4byte gUnknown_203AAB4 +_080E52E4: .4byte gUnknown_202063C +_080E52E8: + ldrb r1, [r4, 0x19] + ldrb r0, [r4, 0x1A] + subs r0, 0x6 + cmp r1, r0 + bne _080E52FA + movs r1, 0x4 + adds r0, r2, 0 + orrs r0, r1 + strb r0, [r5] +_080E52FA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E5204 + + thumb_func_start sub_80E5300 +sub_80E5300: @ 80E5300 + push {r4,lr} + ldr r0, _080E5330 @ =gUnknown_3005E70 + ldr r4, _080E5334 @ =gUnknown_203AAB4 + ldr r2, [r4] + ldr r3, _080E5338 @ =0x00000a68 + adds r1, r2, r3 + ldrh r1, [r1] + adds r3, 0x2 + adds r2, r3 + ldrh r2, [r2] + bl sub_8106FF8 + ldr r1, [r4] + ldr r2, _080E533C @ =0x00000263 + adds r1, r2 + strb r0, [r1] + movs r0, 0x6 + movs r1, 0x1 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5330: .4byte gUnknown_3005E70 +_080E5334: .4byte gUnknown_203AAB4 +_080E5338: .4byte 0x00000a68 +_080E533C: .4byte 0x00000263 + thumb_func_end sub_80E5300 + + thumb_func_start sub_80E5340 +sub_80E5340: @ 80E5340 + push {r4,r5,lr} + sub sp, 0x3C + lsls r0, 16 + lsrs r5, r0, 16 + ldr r1, _080E5380 @ =gUnknown_8250C04 + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r4, r0, r1 + ldrb r1, [r4, 0x2] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x2 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8107D68 + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + bhi _080E5388 + ldr r1, _080E5384 @ =gUnknown_8416213 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x3 + movs r2, 0x1 + movs r3, 0x4 + bl sub_80E559C + b _080E53A6 + .align 2, 0 +_080E5380: .4byte gUnknown_8250C04 +_080E5384: .4byte gUnknown_8416213 +_080E5388: + ldrb r1, [r4, 0x1] + add r0, sp, 0x8 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x3 + add r1, sp, 0x8 + movs r2, 0x1 + movs r3, 0x4 + bl sub_80E559C +_080E53A6: + ldr r2, _080E53CC @ =gUnknown_8250C04 + lsls r1, r5, 1 + adds r0, r1, r5 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x3] + adds r4, r1, 0 + cmp r2, 0 + bne _080E53D4 + ldr r1, _080E53D0 @ =gUnknown_8416213 + str r2, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x3 + movs r2, 0x1 + movs r3, 0x12 + bl sub_80E559C + b _080E53F4 + .align 2, 0 +_080E53CC: .4byte gUnknown_8250C04 +_080E53D0: .4byte gUnknown_8416213 +_080E53D4: + ldrb r1, [r0, 0x3] + add r0, sp, 0x8 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x3 + add r1, sp, 0x8 + movs r2, 0x1 + movs r3, 0x12 + bl sub_80E559C +_080E53F4: + ldr r1, _080E543C @ =gUnknown_8250C04 + adds r0, r4, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x4] + add r0, sp, 0x8 + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x4 + add r1, sp, 0x8 + movs r2, 0x2 + movs r3, 0x2 + bl sub_80E559C + ldr r1, _080E5440 @ =gUnknown_84886E8 + subs r0, r5, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x5 + movs r2, 0x1 + movs r3, 0 + bl sub_80E559C + add sp, 0x3C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E543C: .4byte gUnknown_8250C04 +_080E5440: .4byte gUnknown_84886E8 + thumb_func_end sub_80E5340 + + thumb_func_start sub_80E5444 +sub_80E5444: @ 80E5444 + push {lr} + movs r0, 0 + movs r1, 0x13 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8107D68 + movs r0, 0x1 + movs r1, 0x14 + movs r2, 0 + movs r3, 0x4 + bl sub_8107D68 + movs r0, 0x1 + movs r1, 0x15 + movs r2, 0 + movs r3, 0x13 + bl sub_8107D68 + movs r0, 0 + movs r1, 0x16 + movs r2, 0x1 + movs r3, 0x13 + bl sub_8107D68 + movs r0, 0 + movs r1, 0x17 + movs r2, 0x1 + movs r3, 0x22 + bl sub_8107D68 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x7 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_80E5444 + + thumb_func_start sub_80E54C0 +sub_80E54C0: @ 80E54C0 + push {r4,r5,lr} + ldr r0, _080E54E0 @ =gUnknown_203AAB4 + ldr r1, [r0] + ldr r0, _080E54E4 @ =0x00000a67 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0xFE + beq _080E54E8 + lsls r0, 1 + adds r1, 0xE8 + adds r1, r0 + ldrh r0, [r1] + bl sub_80E5340 + b _080E5504 + .align 2, 0 +_080E54E0: .4byte gUnknown_203AAB4 +_080E54E4: .4byte 0x00000a67 +_080E54E8: + movs r5, 0x2 +_080E54EA: + lsls r4, r5, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8003F20 + adds r5, 0x1 + cmp r5, 0x5 + ble _080E54EA +_080E5504: + movs r0, 0x3 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x4 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x5 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x7 + movs r1, 0x3 + bl sub_8003F20 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E54C0 + + thumb_func_start sub_80E553C +sub_80E553C: @ 80E553C + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _080E5560 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _080E5568 @ =gUnknown_203AAB4 + ldr r0, [r2] + ldr r1, _080E556C @ =0x0000025f + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080E5570 @ =0x00000a67 + adds r0, r1 + strb r4, [r0] +_080E5560: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5568: .4byte gUnknown_203AAB4 +_080E556C: .4byte 0x0000025f +_080E5570: .4byte 0x00000a67 + thumb_func_end sub_80E553C + + thumb_func_start sub_80E5574 +sub_80E5574: @ 80E5574 + push {r4,lr} + bl sub_81100C8 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _080E5594 + movs r0, 0x6 + bl sub_8003FA0 + movs r0, 0x6 + movs r1, 0x1 + bl sub_8003F20 +_080E5594: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80E5574 + + thumb_func_start sub_80E559C +sub_80E559C: @ 80E559C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r10, r1 + ldr r4, [sp, 0x38] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r6, r3, 24 + movs r0, 0x1 + mov r8, r0 + mov r9, r0 + cmp r4, 0x1 + bhi _080E55C8 + movs r1, 0 + mov r8, r1 + mov r9, r1 +_080E55C8: + cmp r4, 0 + blt _080E5622 + cmp r4, 0x1 + ble _080E55D6 + cmp r4, 0x2 + beq _080E5604 + b _080E5622 +_080E55D6: + ldr r2, _080E55F4 @ =gUnknown_203AAB4 + ldr r0, [r2] + ldr r1, _080E55F8 @ =0x00000a64 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080E55FC @ =0x00000a65 + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080E5600 @ =0x00000a66 + b _080E561C + .align 2, 0 +_080E55F4: .4byte gUnknown_203AAB4 +_080E55F8: .4byte 0x00000a64 +_080E55FC: .4byte 0x00000a65 +_080E5600: .4byte 0x00000a66 +_080E5604: + ldr r2, _080E5678 @ =gUnknown_203AAB4 + ldr r0, [r2] + ldr r1, _080E567C @ =0x00000a64 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080E5680 @ =0x00000a65 + adds r0, r1 + strb r4, [r0] + ldr r0, [r2] + adds r1, 0x1 +_080E561C: + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] +_080E5622: + cmp r4, 0x1 + beq _080E563E + ldr r0, _080E5678 @ =gUnknown_203AAB4 + ldr r0, [r0] + ldr r1, _080E567C @ =0x00000a64 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + orrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800445C +_080E563E: + mov r0, r8 + str r0, [sp] + mov r1, r9 + str r1, [sp, 0x4] + ldr r0, _080E5678 @ =gUnknown_203AAB4 + ldr r0, [r0] + ldr r1, _080E567C @ =0x00000a64 + adds r0, r1 + str r0, [sp, 0x8] + ldr r0, [sp, 0x34] + lsls r0, 24 + asrs r0, 24 + str r0, [sp, 0xC] + mov r0, r10 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x3 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_812E5A4 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E5678: .4byte gUnknown_203AAB4 +_080E567C: .4byte 0x00000a64 +_080E5680: .4byte 0x00000a65 + thumb_func_end sub_80E559C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/libagbsyscall.s b/asm/libagbsyscall.s new file mode 100644 index 000000000..898861fe2 --- /dev/null +++ b/asm/libagbsyscall.s @@ -0,0 +1,94 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start ArcTan2 +ArcTan2: @ 81E3B58 + swi 0xA + bx lr + thumb_func_end ArcTan2 + + thumb_func_start BgAffineSet +BgAffineSet: @ 81E3B5C + swi 0xE + bx lr + thumb_func_end BgAffineSet + + thumb_func_start CpuFastSet +CpuFastSet: @ 81E3B60 + swi 0xC + bx lr + thumb_func_end CpuFastSet + + thumb_func_start CpuSet +CpuSet: @ 81E3B64 + swi 0xB + bx lr + thumb_func_end CpuSet + + thumb_func_start Div +Div: @ 81E3B68 + swi 0x6 + bx lr + thumb_func_end Div + + thumb_func_start LZ77UnCompVram +LZ77UnCompVram: @ 81E3B6C + swi 0x12 + bx lr + thumb_func_end LZ77UnCompVram + + thumb_func_start LZ77UnCompWram +LZ77UnCompWram: @ 81E3B70 + swi 0x11 + bx lr + thumb_func_end LZ77UnCompWram + + thumb_func_start MultiBoot +MultiBoot: @ 81E3B74 + movs r1, 0x1 + swi 0x25 + bx lr + thumb_func_end MultiBoot + + thumb_func_start ObjAffineSet +ObjAffineSet: @ 81E3B7C + swi 0xF + bx lr + thumb_func_end ObjAffineSet + + thumb_func_start RegisterRamReset +RegisterRamReset: @ 81E3B80 + swi 0x1 + bx lr + thumb_func_end RegisterRamReset + + thumb_func_start SoftReset +SoftReset: @ 81E3B84 + ldr r3, =REG_IME + movs r2, 0 + strb r2, [r3] + ldr r1, =0x03007f00 @ User Stack + mov sp, r1 + swi 0x1 + swi 0 + .pool + thumb_func_end SoftReset + + thumb_func_start Sqrt +Sqrt: @ 81E3B9C + swi 0x8 + bx lr + thumb_func_end Sqrt + + thumb_func_start VBlankIntrWait +VBlankIntrWait: @ 81E3BA0 + movs r2, 0 + swi 0x5 + bx lr + thumb_func_end VBlankIntrWait + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/libgcnmultiboot.s b/asm/libgcnmultiboot.s new file mode 100644 index 000000000..91bc1890c --- /dev/null +++ b/asm/libgcnmultiboot.s @@ -0,0 +1,641 @@ +@ This library can be used to download and execute a multi-boot image from +@ a GameCube using the JOY Bus protocol over the link cable. + + .include "asm/macros.inc" + .include "constants/constants.inc" + + .equiv GCMB_STRUCT_COUNTER1, 0x00 + .equiv GCMB_STRUCT_COUNTER2, 0x01 + .equiv GCMB_STRUCT_MBPROGRESS, 0x02 + .equiv GCMB_STRUCT_SAVEDVCOUNT, 0x03 + .equiv GCMB_STRUCT_KEYA, 0x04 + .equiv GCMB_STRUCT_KEYB, 0x08 + .equiv GCMB_STRUCT_KEYC, 0x0C + .equiv GCMB_STRUCT_BOOT_KEY, 0x10 + .equiv GCMB_STRUCT_IMAGE_SIZE, 0x12 + .equiv GCMB_STRUCT_SESSION_KEY, 0x14 + .equiv GCMB_STRUCT_HASH_VAL, 0x18 + .equiv GCMB_STRUCT_KEYC_DERIVATION, 0x1C + .equiv GCMB_STRUCT_BASE_DEST_PTR, 0x20 + .equiv GCMB_STRUCT_CUR_DEST_PTR, 0x24 + .equiv GCMB_STRUCT_SERIAL_INTR_HANDLER, 0x28 + + .equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x04 + .equiv ROM_HEADER_NINTENDO_LOGO_LENGTH, 0x98 + .equiv ROM_HEADER_NINTENDO_LOGO_END, 0xA0 + + .equiv MBPROGRESS_NONE, 0x00 + .equiv MBPROGRESS_LOGO_CORRECT, 0x01 + .equiv MBPROGRESS_READY_TO_BOOT, 0x02 + + .equiv GCMB_MAGIC_BOOTKEY_HASHVAL, 0xBB + .equiv GCMB_MAGIC_BOOTKEY, 0xBB + .equiv GCMB_MAGIC_COUNTER2, 0xCC + .equiv GCMB_MAGIC_KEYA, 0xDD + .equiv GCMB_MAGIC_KEYB, 0xEE + .equiv GCMB_MAGIC_KEYCDERIVATION, 0xFF + + .syntax unified + + .text + + thumb_func_start GameCubeMultiBoot_Hash +GameCubeMultiBoot_Hash: @ 81DCB38 + push {r4,lr} + ldr r4, pool_HashVal + eors r3, r1 + movs r2, 0x20 + +GameCubeMultiBoot_Hash_Loop: + lsrs r3, 1 + bcc GameCubeMultiBoot_Hash_SkipEor + + eors r3, r4 + +GameCubeMultiBoot_Hash_SkipEor: + subs r2, 0x1 + bne GameCubeMultiBoot_Hash_Loop + + pop {r4,pc} + thumb_func_end GameCubeMultiBoot_Hash + + thumb_func_start GameCubeMultiBoot_Main +@ void GameCubeMultiBoot_Main(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_Main: @ 81DCB4C + @ If there is no interrupt handler, skip counter manipulation + ldr r1, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + cmp r1, 0 + beq GameCubeMultiBoot_Main_SkipCounters + @ Increment the second counter + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + adds r1, 0x1 + strb r1, [r0, GCMB_STRUCT_COUNTER2] + @ If there is nothing more to do, bail out + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_READY_TO_BOOT + beq GameCubeMultiBoot_Main_Return + @ Save current interrupt master register value + ldr r3, pool_InterruptRegs + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + @ Disable all interrupts + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + @ Increment the first counter, if it's less than or equal to 10. + ldrb r1, [r0, GCMB_STRUCT_COUNTER1] + cmp r1, 0xA + bgt GameCubeMultiBoot_Main_SkipCounter1Inc + adds r1, 0x1 + strb r1, [r0, GCMB_STRUCT_COUNTER1] +GameCubeMultiBoot_Main_SkipCounter1Inc: + @ Load the saved interrupt master register value (re-enables interrupts if they were enabled before) + strh r2, [r3, OFFSET_REG_IME - 0x200] +GameCubeMultiBoot_Main_SkipCounters: + @ Initialise multiboot structures if required + bcs GameCubeMultiBoot_Init + @ Skip this section (check Nintendo logo) if the check has already passed + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_NONE + bne GameCubeMultiBoot_Main_SkipLogoCheck + @ Bail out if no multiboot image data has been transferred yet + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] + subs r1, r2 + beq GameCubeMultiBoot_Main_Return2 + @ Also bail out if not enough data has been transferred + cmp r1, ROM_HEADER_NINTENDO_LOGO_END + bcc GameCubeMultiBoot_Main_Return2 + @ Compare the Nintendo logo of the transferred multiboot image header, with the one in the ROM image of the inserted cart + push {r4-r6} + movs r1, ROM_HEADER_NINTENDO_LOGO_LENGTH + adds r2, ROM_HEADER_NINTENDO_LOGO_OFFSET + ldr r4, pool_NintendoLogo +GameCubeMultiBoot_Main_LogoCmpLoop: + ldm r2!, {r5} + ldm r4!, {r6} + cmp r5, r6 + bne GameCubeMultiBoot_Main_LogoCmpEnd + subs r1, 0x4 + bne GameCubeMultiBoot_Main_LogoCmpLoop + ldm r2!, {r5} + ldm r4!, {r6} + eors r5, r6 + lsrs r5, 8 + str r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] +GameCubeMultiBoot_Main_LogoCmpEnd: + pop {r4-r6} + @ Throw everything away if the logo data didn't match + bne GameCubeMultiBoot_Init + @ Logo matched, set the relevent multiboot progress bit + movs r1, MBPROGRESS_LOGO_CORRECT + strb r1, [r0, GCMB_STRUCT_MBPROGRESS] + @ XOR together KeyA and KeyB to get the initial multiboot image checksum value + ldr r1, [r0, GCMB_STRUCT_KEYA] + ldr r2, [r0, GCMB_STRUCT_KEYB] + eors r1, r2 + str r1, [r0, GCMB_STRUCT_HASH_VAL] + @ ...also use it as the initial value for the image encryption session key. Algorithm is the same as the GBA BIOS multiboot: sessionkey = (initialvalue * 0x6177614b) + 1 + ldr r2, pool_Kawa + muls r1, r2 + adds r1, 0x1 + str r1, [r0, GCMB_STRUCT_SESSION_KEY] +GameCubeMultiBoot_Main_Return: + bx lr +GameCubeMultiBoot_Main_SkipLogoCheck: + @ If this code is executed, then the logo check has passed, and the data being transferred in is encrypted. + @ Set up registers. + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + mov r12, r1 + ldr r3, [r0, GCMB_STRUCT_HASH_VAL] + push {r4-r7} + ldr r4, [r0, GCMB_STRUCT_BASE_DEST_PTR] + ldr r5, pool_Kawa + ldr r6, [r0, GCMB_STRUCT_SESSION_KEY] + ldr r7, pool_HashVal +GameCubeMultiBoot_Main_ImageDecryptHashLoop: + @ If there's no more data, break out of the loop + cmp r4, r12 + bcs GameCubeMultiBoot_Main_ImageDecryptHashEnd + @ Get the next uint32 + ldr r1, [r4] + @ Decrypt the ciphertext: plaintext = (ciphertext ^ sessionkey) + hashval + eors r1, r6 + adds r1, r3 + @ Save the current uint32 of plaintext and advance the pointer + stm r4!, {r1} + @ Advance the hashval with this uint32 of plaintext -- this is the same code as GameCubeMultiBoot_Hash. + eors r3, r1 + movs r2, 0x20 +GameCubeMultiBoot_Main_HashLoop: + lsrs r3, 1 + bcc GameCubeMultiBoot_Main_HashSkipEor + eors r3, r7 +GameCubeMultiBoot_Main_HashSkipEor: + subs r2, 0x1 + bne GameCubeMultiBoot_Main_HashLoop + @ Advance the sessionkey with the usual algorithm: sessionkey = (sessionkey * 0x6177614b) + 1 + muls r6, r5 + adds r6, 0x1 + b GameCubeMultiBoot_Main_ImageDecryptHashLoop +GameCubeMultiBoot_Main_ImageDecryptHashEnd: + @ Save the new pointer, sessionkey, hashval + str r4, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r6, [r0, GCMB_STRUCT_SESSION_KEY] + pop {r4-r7} + str r3, [r0, GCMB_STRUCT_HASH_VAL] + @ Bail out if the image size is unknown + ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + cmp r1, 0 + bne GameCubeMultiBoot_Main_Return2 + @ Bail out if no image data has been transferred + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] + cmp r1, r2 + bne GameCubeMultiBoot_Main_Return2 + @ If KeyC hasn't been generated yet, go generate it + ldr r1, [r0, GCMB_STRUCT_KEYC] + cmp r1, 0 + beq GameCubeMultiBoot_Main_GenerateKeyC + @ If the other side hasn't sent its boot key yet, bail out + ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY] + cmp r1, 0 + beq GameCubeMultiBoot_Main_Return + @ Save off LR so it doesn't get clobbered by the upcoming function call + mov r12, lr + @ Generate the real boot key, which is the checksum of a hardcoded value and KeyC + movs r1, GCMB_MAGIC_BOOTKEY_HASHVAL + ldr r3, [r0, GCMB_STRUCT_KEYC] + bl GameCubeMultiBoot_Hash + ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY] + @ Restore the saved LR value + mov lr, r12 + @ Compare the two boot keys (real and passed in), if they don't match then throw everything away + subs r1, r3 + bne GameCubeMultiBoot_Init + @ The two boot keys matched, tell the caller that the image is ready to boot + movs r1, MBPROGRESS_READY_TO_BOOT + strb r1, [r0, GCMB_STRUCT_MBPROGRESS] + @ Nothing more to do, return. + bx lr +GameCubeMultiBoot_Main_GenerateKeyC: + @ Save off LR so it doesn't get clobbered by the upcoming function call + mov r12, lr + @ KeyC = (SavedVCount << 24) - 1 + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + lsls r1, 24 + subs r1, 0x1 + str r1, [r0, GCMB_STRUCT_KEYC] + @ Hash the KeyC with the multiboot image checksum to generate the KeyC derivation material to be sent to the other side of the link + bl GameCubeMultiBoot_Hash + @ Make sure the sent KeyC derivation material contains a magic value so that the other side can detect it + lsls r3, 8 + adds r3, GCMB_MAGIC_KEYCDERIVATION + @ Save off the KeyC derivation material and return to caller + str r3, [r0, GCMB_STRUCT_KEYC_DERIVATION] + bx r12 +GameCubeMultiBoot_Main_Return2: + bx lr + thumb_func_end GameCubeMultiBoot_Main + + .align 2, 0 + +pool_HashVal: .4byte 0xa1c1 + +pool_Kawa: .ascii "Kawa" @ name of BIOS developer + +pool_NintendoLogo: .4byte RomHeaderNintendoLogo + + thumb_func_start GameCubeMultiBoot_ExecuteProgram +@ void GameCubeMultiBoot_ExecuteProgram(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_ExecuteProgram: @ 81DCC4C + @ If there's no multiboot image ready, just return to caller + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_READY_TO_BOOT + bne GameCubeMultiBoot_ExecuteProgram_Fail + @ Disable interrupts + ldr r3, pool_InterruptRegs + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + @ Jump to the real entry point of the multiboot image (past the image header), in ARM mode + ldr r1, pool_MultiBootLoadAddr + adds r1, 0xC0 + bx r1 +GameCubeMultiBoot_ExecuteProgram_Fail: + bx lr + thumb_func_end GameCubeMultiBoot_ExecuteProgram + + thumb_func_start GameCubeMultiBoot_Init +@ void GameCubeMultiBoot_Init(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_Init: @ 81DCC60 + ldr r3, pool_InterruptRegs + +@ Save IME register. + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + +@ Disable interrupts. + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + +@ Set the handler to the "Stop" routine. +@ Unless the first command that is received is a device reset command, the +@ "Stop" routine will be executed and no further commands will be processed. + adr r3, GcMbIntrHandler_Stop + str r3, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + + ldrb r3, [r0, 0x3] + push {r3} + ldrb r3, [r0, 0x1] + push {r0,r3} + + adds r3, r0, 0 + adds r3, GCMB_STRUCT_BASE_DEST_PTR + +@ clear all but the last 3 fields of the struct +GameCubeMultiBoot_Init_ClearStructLoop: + stm r0!, {r1} + cmp r0, r3 + blo GameCubeMultiBoot_Init_ClearStructLoop + + pop {r0,r3} + lsrs r3, 1 + strb r3, [r0, 0x3] + pop {r3} + strb r3, [r0, 0x1] + + ldr r3, pool_SerialRegs + +@ Turn off JOY Bus mode. + lsls r0, r3, 10 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] + +@ Turn on JOY Bus mode. + movs r0, 0xC0 + lsls r0, 8 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] + +@ Init JOY Bus registers. + movs r0, 0x47 + strh r0, [r3, OFFSET_REG_JOYCNT - 0x120] + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + + ldr r3, pool_InterruptRegs + +@ Acknowledge serial interrupt. + movs r0, INTR_FLAG_SERIAL + strh r0, [r3, OFFSET_REG_IF - 0x200] + +@ Enable serial interrupt. + ldrh r1, [r3, OFFSET_REG_IE - 0x200] + orrs r1, r0 + strh r1, [r3, OFFSET_REG_IE - 0x200] + +@ Restore IME register. + strh r2, [r3, OFFSET_REG_IME - 0x200] + + bx lr + thumb_func_end GameCubeMultiBoot_Init + + non_word_aligned_thumb_func_start GameCubeMultiBoot_HandleSerialInterrupt +@ void GameCubeMultiBoot_HandleSerialInterrupt(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_HandleSerialInterrupt: @ 81DCCAA + ldr r3, pool_SerialRegs + +@ Acknowledge reset/receive/send flags. + ldrh r1, [r3, OFFSET_REG_JOYCNT - 0x120] + strh r1, [r3, OFFSET_REG_JOYCNT - 0x120] + + movs r2, 0 + strb r2, [r0] + + ldr r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + cmp r2, 0 + beq GameCubeMultiBoot_HandleSerialInterruptDone + + lsrs r1, 1 @ was a device reset command received? + bcs GameCubeMultiBoot_BeginHandshake @ branch if so + + mov pc, r2 + + .align 2, 0 + +@ Zero the status and the interrupt handler pointer. +@ Commands from the GameCube will not be processed after this is executed +@ unless GameCubeMultiBoot_Init() is called again. +GcMbIntrHandler_Stop: + movs r2, 0 + strh r2, [r3, OFFSET_REG_JOYSTAT - 0x120] + +GameCubeMultiBoot_SetInterruptHandler: + str r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + +GameCubeMultiBoot_ReadVCount: + ldr r3, pool_RegDispstat + ldrh r1, [r3, OFFSET_REG_VCOUNT - OFFSET_REG_DISPSTAT] + strb r1, [r0, 0x3] + +GameCubeMultiBoot_HandleSerialInterruptDone: + bx lr + +GameCubeMultiBoot_BeginHandshake: + @ Throw away anything that got sent + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ Send the game code, the other side of the link must send back the same game code + ldr r1, pool_RubyUSAGameCode + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + movs r1, 0x10 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ Use the saved VCount value to provide 8 bits of entropy for KeyB + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + strb r1, [r0, GCMB_STRUCT_KEYB + 1] + @ If a multiboot image has been transferred at least enough such that the Nintendo logo check has passed, stop everything. + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, 0 + bne GcMbIntrHandler_Stop + @ Set the image destination pointers. + ldr r1, pool_MultiBootLoadAddr + str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + @ Set the new interrupt handler. + adr r2, GcMbIntrHandler_CheckGameCodeSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckGameCodeSent: @ 81DCCEC + lsls r1, 31 + bcc GcMbIntrHandler_Stop @ stop if send failed + bmi GameCubeMultiBoot_CheckHandshakeResponse @ branch if receive is complete + +@ If the response hasn't been fully received yet, +@ check again upon the next interrupt. + adr r2, GcMbIntrHandler_CheckHandshakeResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckHandshakeResponse: @ 81DCCF8 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ stop if not + +GameCubeMultiBoot_CheckHandshakeResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + ldr r2, pool_RubyUSAGameCode + cmp r1, r2 + bne GcMbIntrHandler_Stop @ stop if the GameCube didn't reply with the same game code + @ Use the saved VCount value to provide another 8 bits of entropy for KeyB. + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + strb r1, [r0, GCMB_STRUCT_KEYB + 3] + adr r2, GcMbIntrHandler_ReceiveKeyA + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_ReceiveKeyA: @ 81DCD0C + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ make sure top 8 bits of the received value is the KeyA magic number, stop if KeyA is invalid + lsrs r2, r1, 24 + cmp r2, GCMB_MAGIC_KEYA + bne GcMbIntrHandler_Stop + @ save received KeyA + str r1, [r0, GCMB_STRUCT_KEYA] + @ use the second GameCubeMultiBoot_Main() counter as another 8 bits of entropy for KeyB + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + strb r1, [r0, GCMB_STRUCT_KEYB + 2] + movs r2, 0 + movs r3, 0 + ldr r1, [r0, GCMB_STRUCT_KEYB] + lsrs r1, 8 + @ make sure KeyB is valid (other side of the link is supposed to check KeyB too), if it's not then change the byte that was just set so it is +GameCubeMultiBoot_KeyBCheckLoop: + lsrs r1, 1 + adcs r2, r3 + cmp r1, 0 + bne GameCubeMultiBoot_KeyBCheckLoop + cmp r2, 0xE + bgt GameCubeMultiBoot_KeyBSaveNewByte + cmp r2, 0x7 + bge GameCubeMultiBoot_KeyBCheckEnd + movs r1, 0xFF +GameCubeMultiBoot_KeyBSaveNewByte: + strb r1, [r0, GCMB_STRUCT_KEYB + 2] +GameCubeMultiBoot_KeyBCheckEnd: + @ add in the KeyB magic number and send off KeyB + ldr r1, [r0, GCMB_STRUCT_KEYB] + adds r1, GCMB_MAGIC_KEYB + ldr r3, pool_SerialRegs + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + movs r1, 0x30 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ set new interrupt handler + adr r2, GcMbIntrHandler_CheckKeyBSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckKeyBSent: @ 81DCD4C + lsls r1, 31 + bcc GcMbIntrHandler_Stop @ stop if send failed + bmi GameCubeMultiBoot_CheckImageSizeResponse @ branch if receive is complete + adr r2, GcMbIntrHandler_CheckImageSizeResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckImageSizeResponse: @ 81DCD58 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not +GameCubeMultiBoot_CheckImageSizeResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + ldr r2, GameCubeMultiBoot_MaximumImageSizeUInt32s + cmp r1, r2 + bhs GcMbIntrHandler_Stop + adds r1, 0x1 + adds r1, r1 + strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, 0 +GcMbIntrHandler_StopIfNotEqual: + bne GcMbIntrHandler_Stop + ldr r1, pool_MultiBootLoadAddr + str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + adr r2, GcMbIntrHandler_CheckImageResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckImageResponse: @ 81DCD7C + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not + ldr r2, [r0, GCMB_STRUCT_CUR_DEST_PTR] + movs r1, 0x4 + ands r1, r2 + adds r1, 0x8 + lsls r1, 2 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ get the recieved uint32 + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ put it in the current destination pointer and advance that pointer + stm r2!, {r1} + @ save off the advanced pointer + str r2, [r0, GCMB_STRUCT_CUR_DEST_PTR] + @ decrease the image size (in uint32s) + ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + subs r1, 0x1 + strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + @ branch away if the transfer is not yet complete + bne GameCubeMultiBoot_ReadVCount + +GcMbIntrHandler_SendCounter2: + @ send counter2 with magic number + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + lsls r1, 8 + adds r1, GCMB_MAGIC_COUNTER2 + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + adr r2, GcMbIntrHandler_CheckCounter2Sent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckCounter2Sent: + lsls r1, 31 + +GcMbIntrHandler_StopIfSendFailed: + bcc GcMbIntrHandler_Stop @ stop if send failed + @ if KeyC derivation value has not yet been generated, send Counter2 again, otherwise, send KeyC derivation + ldr r1, [r0, GCMB_STRUCT_KEYC_DERIVATION] + cmp r1, 0 + beq GcMbIntrHandler_SendCounter2 + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + adr r2, GcMbIntrHandler_CheckKeyCDerivationSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckKeyCDerivationSent: @ 81DCDB8 + lsls r1, 31 + bcc GcMbIntrHandler_StopIfSendFailed @ branch if send failed + bmi GameCubeMultiBoot_CheckBootKeyResponse @ branch if receive is complete + adr r2, GcMbIntrHandler_CheckBootKeyResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckBootKeyResponse: @ 81DCDC4 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_StopIfSendFailed @ branch if not + +GameCubeMultiBoot_CheckBootKeyResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ make sure received boot key contains expected magic number, stop if not + lsrs r2, r1, 24 + cmp r2, GCMB_MAGIC_BOOTKEY + bne GcMbIntrHandler_StopIfNotEqual + @ save received bootkey to be checked in GameCubeMultiBoot_Main() + strh r1, [r0, GCMB_STRUCT_BOOT_KEY] + @ stop if anything more gets sent + adr r2, GcMbIntrHandler_StopUnconditionally + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_StopUnconditionally: @ 81DCDD8 + b GcMbIntrHandler_Stop + + thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt + + non_word_aligned_thumb_func_start GameCubeMultiBoot_Quit +@ void GameCubeMultiBoot_Quit()@ +GameCubeMultiBoot_Quit: @ 81DCDDA + ldr r3, pool_InterruptRegs + +@ Save IME register. + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + +@ Disable interrupts. + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + + ldr r3, pool_SerialRegs + +@ Acknowledge all JOYCNT flags. + movs r0, 0x7 + strh r0, [r3, OFFSET_REG_JOYCNT - 0x120] + +@ Turn off JOY Bus mode. + lsls r0, r3, 10 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] @ store 0x8000 + + ldr r3, pool_InterruptRegs + +@ Acknowledge serial interrupt. + movs r0, INTR_FLAG_SERIAL + strh r0, [r3, OFFSET_REG_IF - 0x200] + +@ Disable serial interrupt. + ldrh r1, [r3, OFFSET_REG_IE - 0x200] + bics r1, r0 + strh r1, [r3, OFFSET_REG_IE - 0x200] + +@ Restore IME register. + strh r2, [r3, OFFSET_REG_IME - 0x200] + + bx lr + thumb_func_end GameCubeMultiBoot_Quit + + .align 2, 0 + +GameCubeMultiBoot_MaximumImageSizeUInt32s: .4byte 0x00004000 + +pool_InterruptRegs: .4byte REG_BASE + 0x200 + +pool_SerialRegs: .4byte REG_BASE + 0x120 + +pool_RegDispstat: .4byte REG_DISPSTAT + +pool_RubyUSAGameCode: .ascii "AXVE" + +pool_MultiBootLoadAddr: .4byte EWRAM_START + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/librfu.s b/asm/librfu.s new file mode 100644 index 000000000..15682359e --- /dev/null +++ b/asm/librfu.s @@ -0,0 +1,8942 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start STWI_init_all +STWI_init_all: @ 81DF114 + push {r4,lr} + adds r3, r0, 0 + lsls r2, 24 + lsrs r2, 24 + cmp r2, 0x1 + bne _081DF150 + adds r2, r3, 0 + adds r2, 0xE8 + str r2, [r1] + ldr r1, _081DF13C @ =0x040000d4 + ldr r0, _081DF140 @ =IntrSIO32 + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _081DF144 @ =0x800004b0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r1, _081DF148 @ =gRfuState + ldr r2, _081DF14C @ =0x00000a48 + adds r0, r3, r2 + b _081DF15A + .align 2, 0 +_081DF13C: .4byte 0x040000d4 +_081DF140: .4byte IntrSIO32 +_081DF144: .4byte 0x800004b0 +_081DF148: .4byte gRfuState +_081DF14C: .4byte 0x00000a48 +_081DF150: + ldr r0, _081DF1D4 @ =IntrSIO32 + str r0, [r1] + ldr r1, _081DF1D8 @ =gRfuState + adds r0, r3, 0 + adds r0, 0xE8 +_081DF15A: + str r0, [r1] + adds r2, r1, 0 + ldr r1, [r2] + str r3, [r1, 0x28] + adds r0, r3, 0 + adds r0, 0x74 + str r0, [r1, 0x24] + ldrb r0, [r1, 0x14] + movs r4, 0 + movs r0, 0x1 + strb r0, [r1, 0x14] + ldr r0, [r2] + str r4, [r0] + strb r4, [r0, 0x4] + ldr r0, [r2] + strb r4, [r0, 0x5] + ldr r0, [r2] + strb r4, [r0, 0x7] + ldr r0, [r2] + strb r4, [r0, 0x8] + ldr r0, [r2] + strb r4, [r0, 0x9] + ldr r0, [r2] + str r4, [r0, 0xC] + ldrb r1, [r0, 0x10] + strb r4, [r0, 0x10] + ldr r0, [r2] + ldrh r1, [r0, 0x12] + movs r1, 0 + strh r4, [r0, 0x12] + strb r1, [r0, 0x15] + ldr r0, [r2] + adds r0, 0x2C + ldrb r2, [r0] + strb r1, [r0] + ldr r1, _081DF1DC @ =0x04000134 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + subs r1, 0xC + ldr r2, _081DF1E0 @ =0x00005003 + adds r0, r2, 0 + strh r0, [r1] + bl STWI_init_Callback_M + bl STWI_init_Callback_S + ldr r3, _081DF1E4 @ =0x04000208 + ldrh r2, [r3] + strh r4, [r3] + ldr r4, _081DF1E8 @ =0x04000200 + ldrh r0, [r4] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r4] + strh r2, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081DF1D4: .4byte IntrSIO32 +_081DF1D8: .4byte gRfuState +_081DF1DC: .4byte 0x04000134 +_081DF1E0: .4byte 0x00005003 +_081DF1E4: .4byte 0x04000208 +_081DF1E8: .4byte 0x04000200 + thumb_func_end STWI_init_all + + thumb_func_start STWI_init_timer +STWI_init_timer: @ 81DF1EC + push {r4,r5,lr} + ldr r2, _081DF218 @ =sub_81DF910 + str r2, [r0] + ldr r5, _081DF21C @ =gRfuState + ldr r0, [r5] + movs r4, 0 + strb r1, [r0, 0xA] + ldr r3, _081DF220 @ =0x04000208 + ldrh r2, [r3] + strh r4, [r3] + ldr r4, _081DF224 @ =0x04000200 + ldr r1, [r5] + movs r0, 0x8 + ldrb r1, [r1, 0xA] + lsls r0, r1 + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r4] + strh r2, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081DF218: .4byte sub_81DF910 +_081DF21C: .4byte gRfuState +_081DF220: .4byte 0x04000208 +_081DF224: .4byte 0x04000200 + thumb_func_end STWI_init_timer + + thumb_func_start AgbRFU_SoftReset +AgbRFU_SoftReset: @ 81DF228 + push {r4,r5,lr} + ldr r5, _081DF2C0 @ =0x04000134 + movs r1, 0x80 + lsls r1, 8 + adds r0, r1, 0 + strh r0, [r5] + ldr r2, _081DF2C4 @ =0x000080a0 + adds r0, r2, 0 + strh r0, [r5] + ldr r1, _081DF2C8 @ =gRfuState + ldr r0, [r1] + ldrb r0, [r0, 0xA] + lsls r0, 2 + ldr r3, _081DF2CC @ =0x04000100 + adds r2, r0, r3 + ldr r4, _081DF2D0 @ =0x04000102 + adds r3, r0, r4 + movs r0, 0 + strh r0, [r3] + strh r0, [r2] + movs r0, 0x83 + strh r0, [r3] + ldrh r0, [r2] + adds r4, r1, 0 + cmp r0, 0x11 + bhi _081DF268 + ldr r0, _081DF2D4 @ =0x000080a2 + adds r1, r0, 0 +_081DF260: + strh r1, [r5] + ldrh r0, [r2] + cmp r0, 0x11 + bls _081DF260 +_081DF268: + movs r0, 0x3 + strh r0, [r3] + ldr r1, _081DF2C0 @ =0x04000134 + ldr r2, _081DF2C4 @ =0x000080a0 + adds r0, r2, 0 + strh r0, [r1] + subs r1, 0xC + ldr r3, _081DF2D8 @ =0x00005003 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, [r4] + movs r2, 0 + str r2, [r0] + strb r2, [r0, 0x4] + ldr r0, [r4] + strb r2, [r0, 0x5] + ldr r0, [r4] + strb r2, [r0, 0x6] + ldr r0, [r4] + strb r2, [r0, 0x7] + ldr r0, [r4] + strb r2, [r0, 0x8] + ldr r0, [r4] + strb r2, [r0, 0x9] + ldr r0, [r4] + str r2, [r0, 0xC] + ldrb r1, [r0, 0x10] + strb r2, [r0, 0x10] + ldr r1, [r4] + ldrh r0, [r1, 0x12] + movs r3, 0 + strh r2, [r1, 0x12] + ldrb r0, [r1, 0x14] + movs r0, 0x1 + strb r0, [r1, 0x14] + ldr r0, [r4] + strb r3, [r0, 0x15] + ldr r0, [r4] + adds r0, 0x2C + ldrb r1, [r0] + strb r3, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081DF2C0: .4byte 0x04000134 +_081DF2C4: .4byte 0x000080a0 +_081DF2C8: .4byte gRfuState +_081DF2CC: .4byte 0x04000100 +_081DF2D0: .4byte 0x04000102 +_081DF2D4: .4byte 0x000080a2 +_081DF2D8: .4byte 0x00005003 + thumb_func_end AgbRFU_SoftReset + + thumb_func_start sub_81DF2DC +sub_81DF2DC: @ 81DF2DC + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081DF2EC @ =gRfuState + ldr r1, [r1] + ldrb r2, [r1, 0x14] + strb r0, [r1, 0x14] + bx lr + .align 2, 0 +_081DF2EC: .4byte gRfuState + thumb_func_end sub_81DF2DC + + thumb_func_start STWI_read_status +STWI_read_status: @ 81DF2F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x1 + beq _081DF31C + cmp r0, 0x1 + bgt _081DF306 + cmp r0, 0 + beq _081DF310 + b _081DF344 +_081DF306: + cmp r1, 0x2 + beq _081DF328 + cmp r1, 0x3 + beq _081DF338 + b _081DF344 +_081DF310: + ldr r0, _081DF318 @ =gRfuState + ldr r0, [r0] + ldrh r0, [r0, 0x12] + b _081DF346 + .align 2, 0 +_081DF318: .4byte gRfuState +_081DF31C: + ldr r0, _081DF324 @ =gRfuState + ldr r0, [r0] + ldrb r0, [r0, 0x14] + b _081DF346 + .align 2, 0 +_081DF324: .4byte gRfuState +_081DF328: + ldr r0, _081DF334 @ =gRfuState + ldr r0, [r0] + ldr r0, [r0] + lsls r0, 16 + lsrs r0, 16 + b _081DF346 + .align 2, 0 +_081DF334: .4byte gRfuState +_081DF338: + ldr r0, _081DF340 @ =gRfuState + ldr r0, [r0] + ldrb r0, [r0, 0x6] + b _081DF346 + .align 2, 0 +_081DF340: .4byte gRfuState +_081DF344: + ldr r0, _081DF34C @ =0x0000ffff +_081DF346: + pop {r1} + bx r1 + .align 2, 0 +_081DF34C: .4byte 0x0000ffff + thumb_func_end STWI_read_status + + thumb_func_start STWI_init_Callback_M +STWI_init_Callback_M: @ 81DF350 + push {lr} + movs r0, 0 + bl STWI_set_Callback_M + pop {r0} + bx r0 + thumb_func_end STWI_init_Callback_M + + thumb_func_start STWI_init_Callback_S +STWI_init_Callback_S: @ 81DF35C + push {lr} + movs r0, 0 + bl STWI_set_Callback_S + pop {r0} + bx r0 + thumb_func_end STWI_init_Callback_S + + thumb_func_start STWI_set_Callback_M +STWI_set_Callback_M: @ 81DF368 + ldr r1, _081DF370 @ =gRfuState + ldr r1, [r1] + str r0, [r1, 0x18] + bx lr + .align 2, 0 +_081DF370: .4byte gRfuState + thumb_func_end STWI_set_Callback_M + + thumb_func_start STWI_set_Callback_S +STWI_set_Callback_S: @ 81DF374 + ldr r1, _081DF37C @ =gRfuState + ldr r1, [r1] + str r0, [r1, 0x1C] + bx lr + .align 2, 0 +_081DF37C: .4byte gRfuState + thumb_func_end STWI_set_Callback_S + + thumb_func_start sub_81DF380 +sub_81DF380: @ 81DF380 + ldr r1, _081DF388 @ =gRfuState + ldr r1, [r1] + str r0, [r1, 0x20] + bx lr + .align 2, 0 +_081DF388: .4byte gRfuState + thumb_func_end sub_81DF380 + + thumb_func_start STWI_poll_CommandEnd +STWI_poll_CommandEnd: @ 81DF38C + push {lr} + ldr r0, _081DF3B0 @ =gRfuState + ldr r1, [r0] + adds r2, r1, 0 + adds r2, 0x2C + ldrb r1, [r2] + adds r3, r0, 0 + cmp r1, 0x1 + bne _081DF3A6 + adds r1, r2, 0 +_081DF3A0: + ldrb r0, [r1] + cmp r0, 0x1 + beq _081DF3A0 +_081DF3A6: + ldr r0, [r3] + ldrh r0, [r0, 0x12] + pop {r1} + bx r1 + .align 2, 0 +_081DF3B0: .4byte gRfuState + thumb_func_end STWI_poll_CommandEnd + + thumb_func_start sub_81DF3B4 +sub_81DF3B4: @ 81DF3B4 + push {lr} + movs r0, 0x10 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF3CE + ldr r0, _081DF3D4 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF3CE: + pop {r0} + bx r0 + .align 2, 0 +_081DF3D4: .4byte gRfuState + thumb_func_end sub_81DF3B4 + + thumb_func_start sub_81DF3D8 +sub_81DF3D8: @ 81DF3D8 + push {lr} + movs r0, 0x11 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF3F2 + ldr r0, _081DF3F8 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF3F2: + pop {r0} + bx r0 + .align 2, 0 +_081DF3F8: .4byte gRfuState + thumb_func_end sub_81DF3D8 + + thumb_func_start sub_81DF3FC +sub_81DF3FC: @ 81DF3FC + push {lr} + movs r0, 0x12 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF416 + ldr r0, _081DF41C @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF416: + pop {r0} + bx r0 + .align 2, 0 +_081DF41C: .4byte gRfuState + thumb_func_end sub_81DF3FC + + thumb_func_start sub_81DF420 +sub_81DF420: @ 81DF420 + push {lr} + movs r0, 0x13 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF43A + ldr r0, _081DF440 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF43A: + pop {r0} + bx r0 + .align 2, 0 +_081DF440: .4byte gRfuState + thumb_func_end sub_81DF420 + + thumb_func_start sub_81DF444 +sub_81DF444: @ 81DF444 + push {lr} + movs r0, 0x14 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF45E + ldr r0, _081DF464 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF45E: + pop {r0} + bx r0 + .align 2, 0 +_081DF464: .4byte gRfuState + thumb_func_end sub_81DF444 + + thumb_func_start sub_81DF468 +sub_81DF468: @ 81DF468 + push {lr} + movs r0, 0x15 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF482 + ldr r0, _081DF488 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF482: + pop {r0} + bx r0 + .align 2, 0 +_081DF488: .4byte gRfuState + thumb_func_end sub_81DF468 + + thumb_func_start STWI_send_GameConfigREQ +STWI_send_GameConfigREQ: @ 81DF48C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x16 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF4D8 + ldr r2, _081DF4E0 @ =gRfuState + ldr r1, [r2] + movs r0, 0x6 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r1, [r0, 0x24] + adds r1, 0x4 + ldrh r0, [r4] + strh r0, [r1] + adds r1, 0x2 + adds r4, 0x2 + movs r2, 0xD +_081DF4B6: + ldrb r0, [r4] + strb r0, [r1] + adds r1, 0x1 + adds r4, 0x1 + subs r2, 0x1 + cmp r2, 0 + bge _081DF4B6 + movs r2, 0x7 +_081DF4C6: + ldrb r0, [r5] + strb r0, [r1] + adds r1, 0x1 + adds r5, 0x1 + subs r2, 0x1 + cmp r2, 0 + bge _081DF4C6 + bl STWI_start_Command +_081DF4D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081DF4E0: .4byte gRfuState + thumb_func_end STWI_send_GameConfigREQ + + thumb_func_start STWI_send_SystemConfigREQ +STWI_send_SystemConfigREQ: @ 81DF4E4 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + movs r0, 0x17 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF51A + ldr r2, _081DF520 @ =gRfuState + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r0, [r0, 0x24] + adds r0, 0x4 + strb r4, [r0] + adds r0, 0x1 + strb r5, [r0] + adds r0, 0x1 + strh r6, [r0] + bl STWI_start_Command +_081DF51A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081DF520: .4byte gRfuState + thumb_func_end STWI_send_SystemConfigREQ + + thumb_func_start sub_81DF524 +sub_81DF524: @ 81DF524 + push {lr} + movs r0, 0x19 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF53E + ldr r0, _081DF544 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF53E: + pop {r0} + bx r0 + .align 2, 0 +_081DF544: .4byte gRfuState + thumb_func_end sub_81DF524 + + thumb_func_start sub_81DF548 +sub_81DF548: @ 81DF548 + push {lr} + movs r0, 0x1A + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF562 + ldr r0, _081DF568 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF562: + pop {r0} + bx r0 + .align 2, 0 +_081DF568: .4byte gRfuState + thumb_func_end sub_81DF548 + + thumb_func_start sub_81DF56C +sub_81DF56C: @ 81DF56C + push {lr} + movs r0, 0x1B + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF586 + ldr r0, _081DF58C @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF586: + pop {r0} + bx r0 + .align 2, 0 +_081DF58C: .4byte gRfuState + thumb_func_end sub_81DF56C + + thumb_func_start sub_81DF590 +sub_81DF590: @ 81DF590 + push {lr} + movs r0, 0x1C + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF5AA + ldr r0, _081DF5B0 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF5AA: + pop {r0} + bx r0 + .align 2, 0 +_081DF5B0: .4byte gRfuState + thumb_func_end sub_81DF590 + + thumb_func_start sub_81DF5B4 +sub_81DF5B4: @ 81DF5B4 + push {lr} + movs r0, 0x1D + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF5CE + ldr r0, _081DF5D4 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF5CE: + pop {r0} + bx r0 + .align 2, 0 +_081DF5D4: .4byte gRfuState + thumb_func_end sub_81DF5B4 + + thumb_func_start sub_81DF5D8 +sub_81DF5D8: @ 81DF5D8 + push {lr} + movs r0, 0x1E + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF5F2 + ldr r0, _081DF5F8 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF5F2: + pop {r0} + bx r0 + .align 2, 0 +_081DF5F8: .4byte gRfuState + thumb_func_end sub_81DF5D8 + + thumb_func_start sub_81DF5FC +sub_81DF5FC: @ 81DF5FC + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1F + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF620 + ldr r2, _081DF628 @ =gRfuState + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r0, [r0, 0x24] + str r4, [r0, 0x4] + bl STWI_start_Command +_081DF620: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081DF628: .4byte gRfuState + thumb_func_end sub_81DF5FC + + thumb_func_start sub_81DF62C +sub_81DF62C: @ 81DF62C + push {lr} + movs r0, 0x20 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF646 + ldr r0, _081DF64C @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF646: + pop {r0} + bx r0 + .align 2, 0 +_081DF64C: .4byte gRfuState + thumb_func_end sub_81DF62C + + thumb_func_start STWI_send_CP_EndREQ +STWI_send_CP_EndREQ: @ 81DF650 + push {lr} + movs r0, 0x21 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF66A + ldr r0, _081DF670 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF66A: + pop {r0} + bx r0 + .align 2, 0 +_081DF670: .4byte gRfuState + thumb_func_end STWI_send_CP_EndREQ + + thumb_func_start sub_81DF674 +sub_81DF674: @ 81DF674 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r4, r1, 24 + lsrs r5, r4, 24 + movs r0, 0x24 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF6B2 + lsrs r2, r4, 26 + movs r0, 0x3 + ands r0, r5 + cmp r0, 0 + beq _081DF694 + adds r2, 0x1 +_081DF694: + ldr r1, _081DF6B8 @ =gRfuState + ldr r0, [r1] + strb r2, [r0, 0x4] + ldr r0, [r1] + ldr r1, [r0, 0x24] + adds r1, 0x4 + ldrb r2, [r0, 0x4] + movs r0, 0x80 + lsls r0, 19 + orrs r2, r0 + adds r0, r6, 0 + bl CpuSet + bl STWI_start_Command +_081DF6B2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081DF6B8: .4byte gRfuState + thumb_func_end sub_81DF674 + + thumb_func_start sub_81DF6BC +sub_81DF6BC: @ 81DF6BC + push {r4-r6,lr} + adds r6, r0, 0 + lsls r4, r1, 24 + lsrs r5, r4, 24 + movs r0, 0x25 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF6FA + lsrs r2, r4, 26 + movs r0, 0x3 + ands r0, r5 + cmp r0, 0 + beq _081DF6DC + adds r2, 0x1 +_081DF6DC: + ldr r1, _081DF700 @ =gRfuState + ldr r0, [r1] + strb r2, [r0, 0x4] + ldr r0, [r1] + ldr r1, [r0, 0x24] + adds r1, 0x4 + ldrb r2, [r0, 0x4] + movs r0, 0x80 + lsls r0, 19 + orrs r2, r0 + adds r0, r6, 0 + bl CpuSet + bl STWI_start_Command +_081DF6FA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081DF700: .4byte gRfuState + thumb_func_end sub_81DF6BC + + thumb_func_start STWI_send_DataRxREQ +STWI_send_DataRxREQ: @ 81DF704 + push {lr} + movs r0, 0x26 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF71E + ldr r0, _081DF724 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF71E: + pop {r0} + bx r0 + .align 2, 0 +_081DF724: .4byte gRfuState + thumb_func_end STWI_send_DataRxREQ + + thumb_func_start STWI_send_MS_ChangeREQ +STWI_send_MS_ChangeREQ: @ 81DF728 + push {lr} + movs r0, 0x27 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF742 + ldr r0, _081DF748 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF742: + pop {r0} + bx r0 + .align 2, 0 +_081DF748: .4byte gRfuState + thumb_func_end STWI_send_MS_ChangeREQ + + thumb_func_start sub_81DF74C +sub_81DF74C: @ 81DF74C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + movs r0, 0x28 + bl STWI_init + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + bne _081DF792 + cmp r4, 0 + bne _081DF774 + ldr r0, _081DF770 @ =gRfuState + ldr r0, [r0] + strb r3, [r0, 0x4] + b _081DF78E + .align 2, 0 +_081DF770: .4byte gRfuState +_081DF774: + ldr r2, _081DF798 @ =gRfuState + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r0, [r0, 0x24] + adds r0, 0x4 + strb r5, [r0] + adds r0, 0x1 + strb r3, [r0] + adds r0, 0x1 + strb r3, [r0] + strb r3, [r0, 0x1] +_081DF78E: + bl STWI_start_Command +_081DF792: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081DF798: .4byte gRfuState + thumb_func_end sub_81DF74C + + thumb_func_start sub_81DF79C +sub_81DF79C: @ 81DF79C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0x29 + bl STWI_init + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + bne _081DF7D2 + ldr r2, _081DF7D8 @ =gRfuState + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r0, [r0, 0x24] + adds r0, 0x4 + strb r4, [r0] + adds r0, 0x1 + strb r5, [r0] + adds r0, 0x1 + strb r3, [r0] + strb r3, [r0, 0x1] + bl STWI_start_Command +_081DF7D2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081DF7D8: .4byte gRfuState + thumb_func_end sub_81DF79C + + thumb_func_start STWI_send_ResumeRetransmitAndChangeREQ +STWI_send_ResumeRetransmitAndChangeREQ: @ 81DF7DC + push {lr} + movs r0, 0x37 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF7F6 + ldr r0, _081DF7FC @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF7F6: + pop {r0} + bx r0 + .align 2, 0 +_081DF7FC: .4byte gRfuState + thumb_func_end STWI_send_ResumeRetransmitAndChangeREQ + + thumb_func_start sub_81DF800 +sub_81DF800: @ 81DF800 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x30 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF824 + ldr r2, _081DF82C @ =gRfuState + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r0, [r0, 0x24] + str r4, [r0, 0x4] + bl STWI_start_Command +_081DF824: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081DF82C: .4byte gRfuState + thumb_func_end sub_81DF800 + + thumb_func_start sub_81DF830 +sub_81DF830: @ 81DF830 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + movs r0, 0x31 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF85C + ldr r2, _081DF864 @ =gRfuState + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, [r2] + ldr r1, [r0, 0x24] + lsls r0, r4, 8 + orrs r0, r5 + str r0, [r1, 0x4] + bl STWI_start_Command +_081DF85C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081DF864: .4byte gRfuState + thumb_func_end sub_81DF830 + + thumb_func_start STWI_send_CPR_StartREQ +STWI_send_CPR_StartREQ: @ 81DF868 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r6, r2, 24 + movs r0, 0x32 + bl STWI_init + lsls r0, 16 + cmp r0, 0 + bne _081DF89A + ldr r2, _081DF8A0 @ =gRfuState + ldr r1, [r2] + movs r0, 0x2 + strb r0, [r1, 0x4] + lsls r0, r5, 16 + orrs r0, r4 + ldr r1, [r2] + ldr r1, [r1, 0x24] + str r0, [r1, 0x4] + str r6, [r1, 0x8] + bl STWI_start_Command +_081DF89A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081DF8A0: .4byte gRfuState + thumb_func_end STWI_send_CPR_StartREQ + + thumb_func_start sub_81DF8A4 +sub_81DF8A4: @ 81DF8A4 + push {lr} + movs r0, 0x33 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF8BE + ldr r0, _081DF8C4 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF8BE: + pop {r0} + bx r0 + .align 2, 0 +_081DF8C4: .4byte gRfuState + thumb_func_end sub_81DF8A4 + + thumb_func_start sub_81DF8C8 +sub_81DF8C8: @ 81DF8C8 + push {lr} + movs r0, 0x34 + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF8E2 + ldr r0, _081DF8E8 @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF8E2: + pop {r0} + bx r0 + .align 2, 0 +_081DF8E8: .4byte gRfuState + thumb_func_end sub_81DF8C8 + + thumb_func_start sub_81DF8EC +sub_81DF8EC: @ 81DF8EC + push {lr} + movs r0, 0x3D + bl STWI_init + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081DF906 + ldr r0, _081DF90C @ =gRfuState + ldr r0, [r0] + strb r1, [r0, 0x4] + bl STWI_start_Command +_081DF906: + pop {r0} + bx r0 + .align 2, 0 +_081DF90C: .4byte gRfuState + thumb_func_end sub_81DF8EC + + thumb_func_start sub_81DF910 +sub_81DF910: @ 81DF910 + push {r4,lr} + ldr r4, _081DF928 @ =gRfuState + ldr r1, [r4] + ldr r0, [r1, 0xC] + cmp r0, 0x2 + beq _081DF936 + cmp r0, 0x2 + bhi _081DF92C + cmp r0, 0x1 + beq _081DF944 + b _081DF96C + .align 2, 0 +_081DF928: .4byte gRfuState +_081DF92C: + cmp r0, 0x3 + beq _081DF94E + cmp r0, 0x4 + beq _081DF944 + b _081DF96C +_081DF936: + ldrb r0, [r1, 0x10] + movs r0, 0x1 + strb r0, [r1, 0x10] + movs r0, 0x32 + bl sub_81DF974 + b _081DF96C +_081DF944: + bl sub_81DFA20 + bl sub_81DFB98 + b _081DF96C +_081DF94E: + ldrb r0, [r1, 0x10] + movs r0, 0x1 + strb r0, [r1, 0x10] + bl sub_81DFA20 + bl sub_81DFC18 + ldr r0, [r4] + ldr r2, [r0, 0x18] + cmp r2, 0 + beq _081DF96C + movs r0, 0xFF + movs r1, 0 + bl _call_via_r2 +_081DF96C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81DF910 + + thumb_func_start sub_81DF974 +sub_81DF974: @ 81DF974 + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + adds r5, r3, 0 + ldr r2, _081DF9A4 @ =gRfuState + ldr r0, [r2] + ldrb r0, [r0, 0xA] + lsls r0, 2 + ldr r1, _081DF9A8 @ =0x04000100 + adds r4, r0, r1 + adds r1, 0x2 + adds r7, r0, r1 + ldr r1, _081DF9AC @ =0x04000208 + movs r0, 0 + strh r0, [r1] + adds r6, r2, 0 + cmp r3, 0x50 + beq _081DF9CC + cmp r3, 0x50 + bgt _081DF9B0 + cmp r3, 0x32 + beq _081DF9BA + b _081DF9F8 + .align 2, 0 +_081DF9A4: .4byte gRfuState +_081DF9A8: .4byte 0x04000100 +_081DF9AC: .4byte 0x04000208 +_081DF9B0: + cmp r5, 0x64 + beq _081DF9DC + cmp r5, 0x82 + beq _081DF9EC + b _081DF9F8 +_081DF9BA: + ldr r1, _081DF9C8 @ =0x0000fccb + adds r0, r1, 0 + strh r0, [r4] + ldr r1, [r6] + movs r0, 0x1 + b _081DF9F6 + .align 2, 0 +_081DF9C8: .4byte 0x0000fccb +_081DF9CC: + ldr r1, _081DF9D8 @ =0x0000fae0 + adds r0, r1, 0 + strh r0, [r4] + ldr r1, [r6] + movs r0, 0x2 + b _081DF9F6 + .align 2, 0 +_081DF9D8: .4byte 0x0000fae0 +_081DF9DC: + ldr r1, _081DF9E8 @ =0x0000f996 + adds r0, r1, 0 + strh r0, [r4] + ldr r1, [r6] + movs r0, 0x3 + b _081DF9F6 + .align 2, 0 +_081DF9E8: .4byte 0x0000f996 +_081DF9EC: + ldr r1, _081DFA14 @ =0x0000f7ad + adds r0, r1, 0 + strh r0, [r4] + ldr r1, [r6] + movs r0, 0x4 +_081DF9F6: + str r0, [r1, 0xC] +_081DF9F8: + movs r0, 0xC3 + strh r0, [r7] + ldr r2, _081DFA18 @ =0x04000202 + ldr r1, [r6] + movs r0, 0x8 + ldrb r1, [r1, 0xA] + lsls r0, r1 + strh r0, [r2] + ldr r1, _081DFA1C @ =0x04000208 + movs r0, 0x1 + strh r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081DFA14: .4byte 0x0000f7ad +_081DFA18: .4byte 0x04000202 +_081DFA1C: .4byte 0x04000208 + thumb_func_end sub_81DF974 + + thumb_func_start sub_81DFA20 +sub_81DFA20: @ 81DFA20 + ldr r2, _081DFA40 @ =gRfuState + ldr r0, [r2] + movs r1, 0 + str r1, [r0, 0xC] + ldrb r0, [r0, 0xA] + lsls r0, 2 + ldr r3, _081DFA44 @ =0x04000100 + adds r0, r3 + strh r1, [r0] + ldr r0, [r2] + ldrb r0, [r0, 0xA] + lsls r0, 2 + ldr r2, _081DFA48 @ =0x04000102 + adds r0, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_081DFA40: .4byte gRfuState +_081DFA44: .4byte 0x04000100 +_081DFA48: .4byte 0x04000102 + thumb_func_end sub_81DFA20 + + thumb_func_start STWI_init +STWI_init: @ 81DFA4C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + ldr r0, _081DFA78 @ =0x04000208 + ldrh r0, [r0] + cmp r0, 0 + bne _081DFA80 + ldr r0, _081DFA7C @ =gRfuState + ldr r1, [r0] + ldrh r0, [r1, 0x12] + movs r0, 0x6 + strh r0, [r1, 0x12] + ldr r2, [r1, 0x18] + cmp r2, 0 + beq _081DFACA + ldrh r1, [r1, 0x12] + adds r0, r5, 0 + bl _call_via_r2 + b _081DFACA + .align 2, 0 +_081DFA78: .4byte 0x04000208 +_081DFA7C: .4byte gRfuState +_081DFA80: + ldr r4, _081DFAAC @ =gRfuState + ldr r2, [r4] + adds r3, r2, 0 + adds r3, 0x2C + ldrb r0, [r3] + cmp r0, 0x1 + bne _081DFAB0 + ldrh r0, [r2, 0x12] + movs r1, 0 + movs r0, 0x2 + strh r0, [r2, 0x12] + ldrb r0, [r3] + strb r1, [r3] + ldr r0, [r4] + ldr r2, [r0, 0x18] + cmp r2, 0 + beq _081DFACA + ldrh r1, [r0, 0x12] + adds r0, r5, 0 + bl _call_via_r2 + b _081DFACA + .align 2, 0 +_081DFAAC: .4byte gRfuState +_081DFAB0: + ldrb r0, [r2, 0x14] + cmp r0, 0 + bne _081DFACE + ldrh r0, [r2, 0x12] + movs r0, 0x4 + strh r0, [r2, 0x12] + ldr r3, [r2, 0x18] + cmp r3, 0 + beq _081DFACA + ldrh r1, [r2, 0x12] + adds r0, r5, 0 + bl _call_via_r3 +_081DFACA: + movs r0, 0x1 + b _081DFB16 +_081DFACE: + ldrb r0, [r3] + movs r1, 0 + movs r0, 0x1 + strb r0, [r3] + ldr r0, [r4] + strb r6, [r0, 0x6] + ldr r0, [r4] + str r1, [r0] + strb r1, [r0, 0x4] + ldr r0, [r4] + strb r1, [r0, 0x5] + ldr r0, [r4] + strb r1, [r0, 0x7] + ldr r0, [r4] + strb r1, [r0, 0x8] + ldr r0, [r4] + strb r1, [r0, 0x9] + ldr r0, [r4] + str r1, [r0, 0xC] + ldrb r2, [r0, 0x10] + strb r1, [r0, 0x10] + ldr r0, [r4] + ldrh r2, [r0, 0x12] + movs r2, 0 + strh r1, [r0, 0x12] + strb r2, [r0, 0x15] + ldr r1, _081DFB1C @ =0x04000134 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + subs r1, 0xC + ldr r2, _081DFB20 @ =0x00005003 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 +_081DFB16: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081DFB1C: .4byte 0x04000134 +_081DFB20: .4byte 0x00005003 + thumb_func_end STWI_init + + thumb_func_start STWI_start_Command +STWI_start_Command: @ 81DFB24 + push {r4,r5,lr} + ldr r5, _081DFB7C @ =gRfuState + ldr r0, [r5] + ldr r3, [r0, 0x24] + ldrb r1, [r0, 0x4] + lsls r1, 8 + ldrb r0, [r0, 0x6] + ldr r2, _081DFB80 @ =0x99660000 + orrs r0, r2 + orrs r1, r0 + str r1, [r3] + ldr r2, _081DFB84 @ =0x04000120 + ldr r1, [r5] + ldr r0, [r1, 0x24] + ldr r0, [r0] + str r0, [r2] + movs r2, 0 + str r2, [r1] + movs r0, 0x1 + strb r0, [r1, 0x5] + ldr r4, _081DFB88 @ =0x04000208 + ldrh r3, [r4] + strh r2, [r4] + ldr r2, _081DFB8C @ =0x04000200 + ldr r1, [r5] + movs r0, 0x8 + ldrb r1, [r1, 0xA] + lsls r0, r1 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r2] + strh r3, [r4] + ldr r1, _081DFB90 @ =0x04000128 + ldr r2, _081DFB94 @ =0x00005083 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081DFB7C: .4byte gRfuState +_081DFB80: .4byte 0x99660000 +_081DFB84: .4byte 0x04000120 +_081DFB88: .4byte 0x04000208 +_081DFB8C: .4byte 0x04000200 +_081DFB90: .4byte 0x04000128 +_081DFB94: .4byte 0x00005083 + thumb_func_end STWI_start_Command + + thumb_func_start sub_81DFB98 +sub_81DFB98: @ 81DFB98 + push {r4,lr} + ldr r4, _081DFBB0 @ =gRfuState + ldr r2, [r4] + ldrb r0, [r2, 0x15] + adds r3, r4, 0 + cmp r0, 0x1 + bhi _081DFBB4 + adds r0, 0x1 + strb r0, [r2, 0x15] + bl STWI_start_Command + b _081DFC0E + .align 2, 0 +_081DFBB0: .4byte gRfuState +_081DFBB4: + ldrb r0, [r2, 0x6] + cmp r0, 0x27 + beq _081DFBC6 + cmp r0, 0x25 + beq _081DFBC6 + cmp r0, 0x35 + beq _081DFBC6 + cmp r0, 0x37 + bne _081DFBE8 +_081DFBC6: + ldr r0, [r3] + ldrh r1, [r0, 0x12] + movs r2, 0 + movs r1, 0x1 + strh r1, [r0, 0x12] + adds r0, 0x2C + ldrb r1, [r0] + strb r2, [r0] + ldr r1, [r3] + ldr r2, [r1, 0x18] + cmp r2, 0 + beq _081DFC0E + ldrb r0, [r1, 0x6] + ldrh r1, [r1, 0x12] + bl _call_via_r2 + b _081DFC0E +_081DFBE8: + ldrh r0, [r2, 0x12] + movs r1, 0 + movs r0, 0x1 + strh r0, [r2, 0x12] + adds r0, r2, 0 + adds r0, 0x2C + ldrb r2, [r0] + strb r1, [r0] + ldr r1, [r4] + ldr r2, [r1, 0x18] + cmp r2, 0 + beq _081DFC08 + ldrb r0, [r1, 0x6] + ldrh r1, [r1, 0x12] + bl _call_via_r2 +_081DFC08: + ldr r1, [r4] + movs r0, 0x4 + str r0, [r1] +_081DFC0E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81DFB98 + + thumb_func_start sub_81DFC18 +sub_81DFC18: @ 81DFC18 + ldr r3, _081DFC44 @ =gRfuState + ldr r1, [r3] + movs r0, 0x5 + str r0, [r1] + movs r2, 0 + strb r2, [r1, 0x4] + ldr r0, [r3] + strb r2, [r0, 0x5] + ldr r1, _081DFC48 @ =0x04000120 + movs r0, 0x80 + lsls r0, 24 + str r0, [r1] + adds r1, 0x8 + strh r2, [r1] + ldr r2, _081DFC4C @ =0x00005003 + adds r0, r2, 0 + strh r0, [r1] + adds r2, 0x7F + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + bx lr + .align 2, 0 +_081DFC44: .4byte gRfuState +_081DFC48: .4byte 0x04000120 +_081DFC4C: .4byte 0x00005003 + thumb_func_end sub_81DFC18 + + arm_func_start IntrSIO32 +IntrSIO32: @ 81DFC50 + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + ldr r3, _081DFCB0 @ =gRfuState + ldr r0, [r3] + ldr r2, [r0] + sub r11, r12, 0x4 + cmp r2, 0xA + bne _081DFC8C + ldr r0, [r0, 0x20] + cmp r0, 0 + ldmdbeq r11, {r11,sp,lr} + bxeq lr + bl sub_81E05AC + ldmdb r11, {r11,sp,lr} + bx lr +_081DFC8C: + ldrb r3, [r0, 0x14] + cmp r3, 0x1 + bne _081DFCA4 + bl sio32intr_clock_master + ldmdb r11, {r11,sp,lr} + bx lr +_081DFCA4: + bl sio32intr_clock_slave + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_081DFCB0: .4byte gRfuState + arm_func_end IntrSIO32 + + arm_func_start sio32intr_clock_master +sio32intr_clock_master: @ 81DFCB4 + mov r12, sp + stmdb sp!, {r4-r6,r11,r12,lr,pc} + mov r0, 0x50 + sub r11, r12, 0x4 + bl STWI_set_timer_in_RAM + mov r4, 0x120 + ldr r2, _081DFF28 @ =gRfuState + add r4, r4, 0x4000000 + ldr lr, [r4] + ldr r12, [r2] + ldr r3, [r12] + mov r6, r2 + cmp r3, 0 + bne _081DFD34 + cmp lr, 0x80000000 + bne _081DFDB4 + ldrb r2, [r12, 0x5] + ldrb r3, [r12, 0x4] + cmp r2, r3 + bhi _081DFD24 + ldr r3, [r12, 0x24] + mov r1, r2 + ldr r2, [r3, r1, lsl 2] + str r2, [r4] + ldrb r3, [r12, 0x5] + add r3, r3, 0x1 + strb r3, [r12, 0x5] + b _081DFE10 +_081DFD24: + mov r3, 0x1 + str r3, [r12] + str lr, [r4] + b _081DFE10 +_081DFD34: + ldr r3, [r12] + cmp r3, 0x1 + bne _081DFDC4 + mov r3, 0x99000000 + add r3, r3, 0x660000 + mov r5, 0x80000000 + and r2, lr, r5, asr 15 + cmp r2, r3 + bne _081DFDB4 + mov r3, 0 + strb r3, [r12, 0x8] + ldr r1, [r6] + ldrb r0, [r1, 0x8] + ldr r2, [r1, 0x28] + str lr, [r2, r0, lsl 2] + ldrb r3, [r1, 0x8] + add r3, r3, 0x1 + strb r3, [r1, 0x8] + ldr r2, [r6] + strb lr, [r2, 0x9] + ldr r3, [r6] + mov r2, lr, lsr 8 + strb r2, [r3, 0x7] + ldr r1, [r6] + ldrb r2, [r1, 0x7] + ldrb r3, [r1, 0x8] + cmp r2, r3 + bcc _081DFDFC + mov r3, 0x2 + str r3, [r1] + str r5, [r4] + b _081DFE10 +_081DFDB4: + bl STWI_stop_timer_in_RAM + mov r0, 0x82 + bl STWI_set_timer_in_RAM + b _081DFF3C +_081DFDC4: + ldr r3, [r12] + cmp r3, 0x2 + bne _081DFE10 + ldrb r1, [r12, 0x8] + ldr r2, [r12, 0x28] + str lr, [r2, r1, lsl 2] + ldrb r3, [r12, 0x8] + add r3, r3, 0x1 + strb r3, [r12, 0x8] + ldr r1, [r6] + ldrb r2, [r1, 0x7] + ldrb r3, [r1, 0x8] + cmp r2, r3 + bcs _081DFE08 +_081DFDFC: + mov r3, 0x3 + str r3, [r1] + b _081DFE10 +_081DFE08: + mov r3, 0x80000000 + str r3, [r4] +_081DFE10: + mov r0, 0x1 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + beq _081DFF3C + mov r4, 0x128 + add r4, r4, 0x4000000 + mov r5, 0x5000 + add r3, r5, 0xB + strh r3, [r4] + mov r0, 0 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + beq _081DFF3C + bl STWI_stop_timer_in_RAM + ldr r1, [r6] + ldr r0, [r1] + cmp r0, 0x3 + bne _081DFF2C + ldrb r3, [r1, 0x9] + cmp r3, 0xA5 + cmpne r3, 0xA7 + beq _081DFE84 + and r3, r3, 0xFF + cmp r3, 0xB5 + beq _081DFE84 + cmp r3, 0xB7 + bne _081DFECC +_081DFE84: + mov r1, 0x120 + add r1, r1, 0x4000000 + mov r12, 0x128 + add r12, r12, 0x4000000 + ldr r0, [r6] + mov r3, 0 + strb r3, [r0, 0x14] + mov r2, 0x80000000 + str r2, [r1] + add r3, r3, 0x5000 + add r2, r3, 0x2 + strh r2, [r12] + add r3, r3, 0x82 + strh r3, [r12] + ldr r2, [r6] + mov r3, 0x5 + str r3, [r2] + b _081DFEFC +_081DFECC: + cmp r3, 0xEE + bne _081DFEEC + add r3, r5, 0x3 + strh r3, [r4] + mov r2, 0x4 + str r2, [r1] + strh r0, [r1, 0x12] + b _081DFEFC +_081DFEEC: + add r3, r5, 0x3 + strh r3, [r4] + mov r2, 0x4 + str r2, [r1] +_081DFEFC: + ldr r2, [r6] + mov r3, 0 + strb r3, [r2, 0x2C] + ldr r0, [r6] + ldr r2, [r0, 0x18] + cmp r2, r3 + beq _081DFF3C + ldrh r1, [r0, 0x12] + ldrb r0, [r0, 0x6] + bl sub_81E05A4 + b _081DFF3C + .align 2, 0 +_081DFF28: .4byte gRfuState +_081DFF2C: + add r3, r5, 0x3 + strh r3, [r4] + add r2, r5, 0x83 + strh r2, [r4] +_081DFF3C: + ldmdb r11, {r4-r6,r11,sp,lr} + bx lr + arm_func_end sio32intr_clock_master + + arm_func_start sio32intr_clock_slave +sio32intr_clock_slave: @ 81DFF44 + mov r12, sp + stmdb sp!, {r4-r6,r11,r12,lr,pc} + ldr r4, _081E02F0 @ =gRfuState + mov r0, 0x64 + ldr r3, [r4] + mov r6, 0 + strb r6, [r3, 0x10] + sub r11, r12, 0x4 + bl STWI_set_timer_in_RAM + mov r0, r6 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + mov r5, r4 + beq _081E0348 + mov r3, 0x128 + add r3, r3, 0x4000000 + mov r2, 0x5000 + add r2, r2, 0xA + strh r2, [r3] + mov lr, 0x120 + ldr r0, [r5] + add lr, lr, 0x4000000 + ldr r12, [lr] + ldr r3, [r0] + cmp r3, 0x5 + bne _081E0074 + ldr r3, [r0, 0x28] + mov r4, 0x1 + mov r0, 0x99000000 + str r12, [r3] + add r0, r0, 0x660000 + ldr r2, [r5] + mov r3, r0, lsr 16 + strb r4, [r2, 0x5] + cmp r3, r12, lsr 16 + bne _081E01C0 + ldr r3, [r5] + mov r2, r12, lsr 8 + strb r2, [r3, 0x4] + ldr r2, [r5] + strb r12, [r2, 0x6] + ldr r1, [r5] + ldrb r3, [r1, 0x4] + cmp r3, r6 + bne _081E0058 + ldrb r2, [r1, 0x6] + sub r3, r2, 0x27 + cmp r2, 0x36 + cmpne r3, 0x2 + bhi _081E002C + add r3, r2, 0x80 + strb r3, [r1, 0x9] + ldr r2, [r5] + ldrb r3, [r2, 0x9] + ldr r1, [r2, 0x24] + add r3, r3, r0 + b _081E00DC +_081E002C: + ldr r2, [r1, 0x24] + ldr r3, _081E02F4 @ =0x996601ee + str r3, [r2] + ldr r2, [r5] + ldrb r3, [r2, 0x6] + sub r3, r3, 0x10 + cmp r3, 0x2D + bhi _081E0114 + ldr r3, [r2, 0x24] + str r4, [r3, 0x4] + b _081E0120 +_081E0058: + mov r3, 0x80000000 + str r3, [lr] + strb r4, [r1, 0x5] + ldr r2, [r5] + add r3, r3, 0x80000006 + str r3, [r2] + b _081E01D0 +_081E0074: + ldr r3, [r0] + cmp r3, 0x6 + bne _081E0174 + ldrb r1, [r0, 0x5] + ldr r2, [r0, 0x28] + str r12, [r2, r1, lsl 2] + ldrb r3, [r0, 0x5] + add r3, r3, 0x1 + strb r3, [r0, 0x5] + ldr r1, [r5] + ldrb r2, [r1, 0x4] + ldrb r3, [r1, 0x5] + cmp r2, r3 + bcs _081E0168 + ldrb r2, [r1, 0x6] + sub r3, r2, 0x28 + cmp r2, 0x36 + cmpne r3, 0x1 + bhi _081E00EC + add r3, r2, 0x80 + strb r3, [r1, 0x9] + ldr r2, [r5] + ldrb r3, [r2, 0x9] + ldr r1, [r2, 0x24] + orr r3, r3, 0x99000000 + orr r3, r3, 0x660000 +_081E00DC: + str r3, [r1] + ldr r2, [r5] + strb r6, [r2, 0x7] + b _081E0138 +_081E00EC: + ldr r2, [r1, 0x24] + ldr r3, _081E02F4 @ =0x996601ee + str r3, [r2] + ldr r2, [r5] + ldrb r3, [r2, 0x6] + sub r3, r3, 0x10 + cmp r3, 0x2D + ldrls r2, [r2, 0x24] + movls r3, 0x1 + bls _081E011C +_081E0114: + ldr r2, [r2, 0x24] + mov r3, 0x2 +_081E011C: + str r3, [r2, 0x4] +_081E0120: + ldr r2, [r5] + mov r3, 0x1 + strb r3, [r2, 0x7] + ldr r1, [r5] + add r3, r3, 0x2 + strh r3, [r1, 0x12] +_081E0138: + ldr r0, [r5] + ldr r2, [r0, 0x24] + mov r3, 0x120 + ldr r1, [r2] + add r3, r3, 0x4000000 + str r1, [r3] + mov r2, 0x1 + strb r2, [r0, 0x8] + ldr r1, [r5] + mov r3, 0x7 + str r3, [r1] + b _081E01D0 +_081E0168: + mov r3, 0x80000000 + str r3, [lr] + b _081E01D0 +_081E0174: + ldr r3, [r0] + cmp r3, 0x7 + bne _081E01D0 + cmp r12, 0x80000000 + bne _081E01C0 + ldrb r2, [r0, 0x7] + ldrb r3, [r0, 0x8] + cmp r2, r3 + movcc r3, 0x8 + strcc r3, [r0] + bcc _081E01D0 + ldrb r1, [r0, 0x8] + ldr r3, [r0, 0x24] + ldr r2, [r3, r1, lsl 2] + str r2, [lr] + ldrb r3, [r0, 0x8] + add r3, r3, 0x1 + strb r3, [r0, 0x8] + b _081E01D0 +_081E01C0: + bl STWI_stop_timer_in_RAM + mov r0, 0x64 + bl STWI_set_timer_in_RAM + b _081E0348 +_081E01D0: + mov r0, 0x1 + bl handshake_wait + mov r0, r0, lsl 16 + cmp r0, 0x10000 + beq _081E0348 + mov r6, r5 + ldr r3, [r6] + ldr r2, [r3] + cmp r2, 0x8 + bne _081E0298 + mov r4, 0x128 + add r4, r4, 0x4000000 + mov r3, 0x5000 + add r3, r3, 0x2 + strh r3, [r4] + bl STWI_stop_timer_in_RAM + ldr r0, [r6] + ldrh r3, [r0, 0x12] + cmp r3, 0x3 + bne _081E0244 + bl STWI_init_slave + ldr r3, [r6] + ldr r1, [r3, 0x1C] + cmp r1, 0 + beq _081E0348 + mov r0, 0x1EC + add r0, r0, 0x2 + bl sub_81E05A8 + b _081E0348 +_081E0244: + mov r3, 0x120 + add r3, r3, 0x4000000 + mov r1, 0 + str r1, [r3] + mov r2, 0x5000 + strh r1, [r4] + add r2, r2, 0x3 + strh r2, [r4] + mov r3, 0x1 + strb r3, [r0, 0x14] + ldr r0, [r5] + ldr r2, [r0, 0x1C] + str r1, [r0] + cmp r2, r1 + beq _081E0348 + ldrb r3, [r0, 0x4] + ldrb r0, [r0, 0x6] + mov r1, r2 + orr r0, r0, r3, lsl 8 + bl sub_81E05A8 + b _081E0348 +_081E0298: + mov r3, 0x208 + add r3, r3, 0x4000000 + mov r2, 0 + strh r2, [r3] + mov r1, 0x100 + add r2, r1, 0x4000002 + ldrh r3, [r2] + tst r3, 0x80 + beq _081E031C + ldrh r3, [r2] + tst r3, 0x3 + bne _081E02F8 + mov r2, 0xFF00 + add r1, r1, 0x4000000 + ldrh r3, [r1] + add r2, r2, 0x9B + cmp r3, r2 + bls _081E031C +_081E02E0: + ldrh r3, [r1] + cmp r3, r2 + bhi _081E02E0 + b _081E031C + .align 2, 0 +_081E02F0: .4byte gRfuState +_081E02F4: .4byte 0x996601ee +_081E02F8: + mov r2, 0xFF00 + add r1, r1, 0x4000000 + ldrh r3, [r1] + add r2, r2, 0xFE + cmp r3, r2 + bls _081E031C +_081E0310: + ldrh r3, [r1] + cmp r3, r2 + bhi _081E0310 +_081E031C: + mov r1, 0x128 + add r1, r1, 0x4000000 + mov r0, 0x208 + add r0, r0, 0x4000000 + mov r3, 0x5000 + add r2, r3, 0x2 + strh r2, [r1] + add r3, r3, 0x82 + strh r3, [r1] + mov r2, 0x1 + strh r2, [r0] +_081E0348: + ldmdb r11, {r4-r6,r11,sp,lr} + bx lr + arm_func_end sio32intr_clock_slave + + arm_func_start handshake_wait +handshake_wait: @ 81E0350 + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + mov r1, 0x128 + add r1, r1, 0x4000000 + mov r0, r0, lsl 16 + ldr r2, _081E03B4 @ =gRfuState + sub r11, r12, 0x4 + mov lr, r0, lsr 14 + ldr r12, [r2] +_081E0374: + ldrb r3, [r12, 0x10] + and r0, r3, 0xFF + cmp r0, 0x1 + beq _081E03A0 + ldrh r3, [r1] + and r3, r3, 0x4 + cmp r3, lr + bne _081E0374 + mov r0, 0 + ldmdb r11, {r11,sp,lr} + bx lr +_081E03A0: + ldr r2, [r2] + mov r3, 0 + strb r3, [r2, 0x10] + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_081E03B4: .4byte gRfuState + arm_func_end handshake_wait + + arm_func_start STWI_set_timer_in_RAM +STWI_set_timer_in_RAM: @ 81E03B8 + mov r12, sp + stmdb sp!, {r4,r5,r11,r12,lr,pc} + mov r1, 0x208 + add r1, r1, 0x4000000 + mov r3, 0 + sub r11, r12, 0x4 + ldr r12, _081E0470 @ =gRfuState + and lr, r0, 0xFF + ldr r2, [r12] + cmp lr, 0x50 + ldrb r0, [r2, 0xA] + mov r4, r12 + mov r2, lr + strh r3, [r1] + mov r0, r0, lsl 2 + add r3, r3, 0x100 + add r1, r3, 0x4000000 + add r3, r3, 0x4000002 + add r5, r0, r3 + beq _081E0440 + bgt _081E0418 + cmp lr, 0x32 + beq _081E042C + b _081E048C +_081E0418: + cmp r2, 0x64 + beq _081E0458 + cmp r2, 0x82 + beq _081E0474 + b _081E048C +_081E042C: + mvn r3, 0x334 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x1 + b _081E0488 +_081E0440: + mov r3, 0xAE000000 + mov r3, r3, asr 20 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x2 + b _081E0488 +_081E0458: + mvn r3, 0x660 + sub r3, r3, 0x9 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x3 + b _081E0488 + .align 2, 0 +_081E0470: .4byte gRfuState +_081E0474: + mvn r3, 0x850 + sub r3, r3, 0x2 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, 0x4 +_081E0488: + str r3, [r2, 0xC] +_081E048C: + mov r12, 0x200 + add r12, r12, 0x4000002 + mov r3, 0xC3 + strh r3, [r5] + mov r1, 0x208 + ldr r2, [r4] + add r1, r1, 0x4000000 + ldrb r0, [r2, 0xA] + sub r3, r3, 0xBB + mov r3, r3, lsl r0 + strh r3, [r12] + mov r2, 0x1 + strh r2, [r1] + ldmdb r11, {r4,r5,r11,sp,lr} + bx lr + arm_func_end STWI_set_timer_in_RAM + + arm_func_start STWI_stop_timer_in_RAM +STWI_stop_timer_in_RAM: @ 81E04C8 + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + mov r1, 0x100 + ldr lr, _081E0514 @ =gRfuState + add r0, r1, 0x4000000 + ldr r2, [lr] + sub r11, r12, 0x4 + ldrb r3, [r2, 0xA] + mov r12, 0 + str r12, [r2, 0xC] + mov r3, r3, lsl 2 + strh r12, [r3, r0] + ldr r2, [lr] + ldrb r3, [r2, 0xA] + add r1, r1, 0x4000002 + mov r3, r3, lsl 2 + strh r12, [r3, r1] + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_081E0514: .4byte gRfuState + arm_func_end STWI_stop_timer_in_RAM + + arm_func_start STWI_init_slave +STWI_init_slave: @ 81E0518 + mov r12, sp + stmdb sp!, {r11,r12,lr,pc} + ldr r0, _081E05A0 @ =gRfuState + ldr r2, [r0] + mov r3, 0x5 + str r3, [r2] + mov r1, 0 + strb r1, [r2, 0x14] + ldr r3, [r0] + strb r1, [r3, 0x4] + ldr r2, [r0] + strb r1, [r2, 0x5] + ldr r3, [r0] + strb r1, [r3, 0x6] + ldr r2, [r0] + strb r1, [r2, 0x7] + ldr r3, [r0] + strb r1, [r3, 0x8] + ldr r2, [r0] + strb r1, [r2, 0x9] + ldr r3, [r0] + str r1, [r3, 0xC] + sub r11, r12, 0x4 + strb r1, [r3, 0x10] + mov r2, 0x128 + ldr r12, [r0] + add r2, r2, 0x4000000 + strh r1, [r12, 0x12] + mov r3, 0x5000 + strb r1, [r12, 0x15] + add r3, r3, 0x82 + strh r3, [r2] + ldmdb r11, {r11,sp,lr} + bx lr + .align 2, 0 +_081E05A0: .4byte gRfuState + arm_func_end STWI_init_slave + + arm_func_start sub_81E05A4 +sub_81E05A4: @ 81E05A4 + bx r2 + arm_func_end sub_81E05A4 + + arm_func_start sub_81E05A8 +sub_81E05A8: @ 81E05A8 + bx r1 + arm_func_end sub_81E05A8 + + arm_func_start sub_81E05AC +sub_81E05AC: @ 81E05AC + bx r0 + arm_func_end sub_81E05AC + + thumb_func_start sub_81E05B0 +sub_81E05B0: @ 81E05B0 + push {r4-r7,lr} + adds r4, r0, 0 + mov r12, r2 + lsls r1, 16 + lsrs r2, r1, 16 + lsls r3, 24 + lsrs r7, r3, 24 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r4 + movs r1, 0x80 + lsls r1, 18 + cmp r0, r1 + bne _081E05D0 + cmp r7, 0 + bne _081E05D8 +_081E05D0: + movs r0, 0x3 + ands r0, r4 + cmp r0, 0 + beq _081E05DC +_081E05D8: + movs r0, 0x2 + b _081E06C6 +_081E05DC: + cmp r7, 0 + beq _081E05E8 + ldr r3, _081E05E4 @ =0x00000e64 + b _081E05EA + .align 2, 0 +_081E05E4: .4byte 0x00000e64 +_081E05E8: + ldr r3, _081E05F4 @ =0x00000504 +_081E05EA: + cmp r2, r3 + bcs _081E05F8 + movs r0, 0x1 + b _081E06C6 + .align 2, 0 +_081E05F4: .4byte 0x00000504 +_081E05F8: + ldr r0, _081E06CC @ =gUnknown_3007460 + str r4, [r0] + ldr r1, _081E06D0 @ =gUnknown_3007464 + adds r0, r4, 0 + adds r0, 0xB4 + str r0, [r1] + ldr r1, _081E06D4 @ =gUnknown_3007468 + adds r0, 0x28 + str r0, [r1] + ldr r2, _081E06D8 @ =gUnknown_3007450 + movs r1, 0xDE + lsls r1, 1 + adds r0, r4, r1 + str r0, [r2] + ldr r1, _081E06DC @ =gUnknown_3007440 + movs r3, 0xDF + lsls r3, 2 + adds r0, r4, r3 + str r0, [r1] + movs r5, 0x1 + adds r6, r2, 0 + adds r4, r1, 0 +_081E0624: + lsls r2, r5, 2 + adds r3, r2, r6 + subs r1, r5, 0x1 + lsls r1, 2 + adds r0, r1, r6 + ldr r0, [r0] + adds r0, 0x70 + str r0, [r3] + adds r2, r4 + adds r1, r4 + ldr r0, [r1] + adds r0, 0x1C + str r0, [r2] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _081E0624 + ldr r0, _081E06D4 @ =gUnknown_3007468 + ldr r1, [r0] + adds r1, 0xDC + ldr r4, _081E06DC @ =gUnknown_3007440 + ldr r0, [r4, 0xC] + adds r0, 0x1C + str r0, [r1] + mov r1, r12 + adds r2, r7, 0 + bl STWI_init_all + bl rfu_STC_clearAPIVariables + movs r5, 0 + ldr r3, _081E06D8 @ =gUnknown_3007450 + movs r2, 0 +_081E0668: + lsls r1, r5, 2 + adds r0, r1, r3 + ldr r0, [r0] + str r2, [r0, 0x68] + str r2, [r0, 0x6C] + adds r1, r4 + ldr r0, [r1] + str r2, [r0, 0x14] + str r2, [r0, 0x18] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _081E0668 + ldr r1, _081E06E0 @ =0x081E1B25 + movs r5, 0x2 + negs r5, r5 + ands r5, r1 + ldr r2, _081E06D4 @ =gUnknown_3007468 + ldr r0, [r2] + adds r4, r0, 0 + adds r4, 0x8 + ldr r0, _081E06E4 @ =0x081E1B55 + subs r0, r1 + lsls r0, 15 + lsrs r3, r0, 16 + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _081E06E8 @ =0x0000ffff + cmp r3, r0 + beq _081E06BC + adds r6, r0, 0 +_081E06AA: + ldrh r0, [r5] + strh r0, [r4] + adds r5, 0x2 + adds r4, 0x2 + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r6 + bne _081E06AA +_081E06BC: + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0x9 + str r0, [r1, 0x4] + movs r0, 0 +_081E06C6: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081E06CC: .4byte gUnknown_3007460 +_081E06D0: .4byte gUnknown_3007464 +_081E06D4: .4byte gUnknown_3007468 +_081E06D8: .4byte gUnknown_3007450 +_081E06DC: .4byte gUnknown_3007440 +_081E06E0: .4byte 0x081E1B25 +_081E06E4: .4byte 0x081E1B55 +_081E06E8: .4byte 0x0000ffff + thumb_func_end sub_81E05B0 + + thumb_func_start rfu_STC_clearAPIVariables +rfu_STC_clearAPIVariables: @ 81E06EC + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _081E0760 @ =0x04000208 + ldrh r0, [r1] + adds r7, r0, 0 + movs r6, 0 + strh r6, [r1] + ldr r5, _081E0764 @ =gUnknown_3007464 + ldr r1, [r5] + ldrb r4, [r1] + mov r0, sp + strh r6, [r0] + ldr r2, _081E0768 @ =0x01000014 + bl CpuSet + ldr r2, [r5] + movs r0, 0x8 + ands r4, r0 + movs r1, 0 + strb r4, [r2] + mov r0, sp + adds r0, 0x2 + strh r1, [r0] + ldr r4, _081E076C @ =gUnknown_3007460 + ldr r1, [r4] + ldr r2, _081E0770 @ =0x0100005a + bl CpuSet + ldr r1, [r4] + movs r0, 0x4 + strb r0, [r1, 0x9] + ldr r0, [r5] + strb r6, [r0, 0x6] + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1] + bl rfu_clearAllSlot + ldr r0, [r5] + strb r6, [r0, 0x9] + movs r2, 0 + movs r3, 0 +_081E0740: + ldr r0, [r5] + lsls r1, r2, 1 + adds r0, 0x12 + adds r0, r1 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _081E0740 + ldr r0, _081E0760 @ =0x04000208 + strh r7, [r0] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E0760: .4byte 0x04000208 +_081E0764: .4byte gUnknown_3007464 +_081E0768: .4byte 0x01000014 +_081E076C: .4byte gUnknown_3007460 +_081E0770: .4byte 0x0100005a + thumb_func_end rfu_STC_clearAPIVariables + + thumb_func_start rfu_REQ_PARENT_resumeRetransmitAndChange +rfu_REQ_PARENT_resumeRetransmitAndChange: @ 81E0774 + push {lr} + ldr r0, _081E0784 @ =sub_81E0848 + bl STWI_set_Callback_M + bl STWI_send_ResumeRetransmitAndChangeREQ + pop {r0} + bx r0 + .align 2, 0 +_081E0784: .4byte sub_81E0848 + thumb_func_end rfu_REQ_PARENT_resumeRetransmitAndChange + + thumb_func_start rfu_UNI_PARENT_getDRAC_ACK +rfu_UNI_PARENT_getDRAC_ACK: @ 81E0788 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0 + strb r0, [r4] + ldr r5, _081E07A0 @ =gUnknown_3007460 + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, 0x1 + beq _081E07A4 + movs r0, 0xC0 + lsls r0, 2 + b _081E07CA + .align 2, 0 +_081E07A0: .4byte gUnknown_3007460 +_081E07A4: + bl rfu_getSTWIRecvBuffer + adds r1, r0, 0 + ldrb r0, [r1] + cmp r0, 0x28 + beq _081E07B4 + cmp r0, 0x36 + bne _081E07C8 +_081E07B4: + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _081E07C0 + ldr r0, [r5] + ldrb r0, [r0, 0x2] + b _081E07C2 +_081E07C0: + ldrb r0, [r1, 0x4] +_081E07C2: + strb r0, [r4] + movs r0, 0 + b _081E07CA +_081E07C8: + movs r0, 0x10 +_081E07CA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end rfu_UNI_PARENT_getDRAC_ACK + + thumb_func_start rfu_setTimerInterrupt +rfu_setTimerInterrupt: @ 81E07D0 + push {lr} + adds r2, r0, 0 + adds r0, r1, 0 + lsls r2, 24 + lsrs r2, 24 + adds r1, r2, 0 + bl STWI_init_timer + pop {r0} + bx r0 + thumb_func_end rfu_setTimerInterrupt + + thumb_func_start rfu_getSTWIRecvBuffer +rfu_getSTWIRecvBuffer: @ 81E07E4 + ldr r0, _081E07F0 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + bx lr + .align 2, 0 +_081E07F0: .4byte gUnknown_3007468 + thumb_func_end rfu_getSTWIRecvBuffer + + thumb_func_start rfu_setMSCCallback +rfu_setMSCCallback: @ 81E07F4 + push {lr} + bl STWI_set_Callback_S + pop {r0} + bx r0 + thumb_func_end rfu_setMSCCallback + + thumb_func_start rfu_setREQCallback +rfu_setREQCallback: @ 81E0800 + push {lr} + adds r1, r0, 0 + ldr r0, _081E0818 @ =gUnknown_3007468 + ldr r0, [r0] + str r1, [r0] + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + bl rfu_enableREQCallback + pop {r0} + bx r0 + .align 2, 0 +_081E0818: .4byte gUnknown_3007468 + thumb_func_end rfu_setREQCallback + + thumb_func_start rfu_enableREQCallback +rfu_enableREQCallback: @ 81E081C + push {lr} + lsls r0, 24 + cmp r0, 0 + beq _081E0834 + ldr r0, _081E0830 @ =gUnknown_3007464 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, 0x8 + orrs r0, r1 + b _081E083E + .align 2, 0 +_081E0830: .4byte gUnknown_3007464 +_081E0834: + ldr r0, _081E0844 @ =gUnknown_3007464 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, 0xF7 + ands r0, r1 +_081E083E: + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_081E0844: .4byte gUnknown_3007464 + thumb_func_end rfu_enableREQCallback + + thumb_func_start sub_81E0848 +sub_81E0848: @ 81E0848 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + ldr r0, _081E087C @ =sub_81E0888 + bl STWI_set_Callback_M + ldr r0, _081E0880 @ =gUnknown_3007464 + ldr r0, [r0] + strh r4, [r0, 0x1C] + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _081E0876 + ldr r0, _081E0884 @ =gUnknown_3007468 + ldr r0, [r0] + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r2 +_081E0876: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E087C: .4byte sub_81E0888 +_081E0880: .4byte gUnknown_3007464 +_081E0884: .4byte gUnknown_3007468 + thumb_func_end sub_81E0848 + + thumb_func_start sub_81E0888 +sub_81E0888: @ 81E0888 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r3, r1, 16 + cmp r0, 0xFF + bne _081E08E4 + ldr r0, _081E08EC @ =gUnknown_3007464 + ldr r0, [r0] + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _081E08B2 + ldr r0, _081E08F0 @ =gUnknown_3007468 + ldr r0, [r0] + ldr r2, [r0] + movs r0, 0xFF + adds r1, r3, 0 + bl _call_via_r2 +_081E08B2: + ldr r0, _081E08F4 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + ldrb r0, [r0, 0x3] + adds r5, r0, 0 + orrs r5, r1 + movs r4, 0 +_081E08C0: + adds r0, r5, 0 + asrs r0, r4 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081E08D2 + adds r0, r4, 0 + bl rfu_STC_removeLinkData +_081E08D2: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081E08C0 + ldr r0, _081E08F4 @ =gUnknown_3007460 + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1] +_081E08E4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E08EC: .4byte gUnknown_3007464 +_081E08F0: .4byte gUnknown_3007468 +_081E08F4: .4byte gUnknown_3007460 + thumb_func_end sub_81E0888 + + thumb_func_start rfu_waitREQComplete +rfu_waitREQComplete: @ 81E08F8 + push {lr} + bl STWI_poll_CommandEnd + ldr r0, _081E0908 @ =gUnknown_3007464 + ldr r0, [r0] + ldrh r0, [r0, 0x1C] + pop {r1} + bx r1 + .align 2, 0 +_081E0908: .4byte gUnknown_3007464 + thumb_func_end rfu_waitREQComplete + + thumb_func_start sub_81E090C +sub_81E090C: @ 81E090C + push {lr} + ldr r0, _081E091C @ =sub_81E0848 + bl STWI_set_Callback_M + bl sub_81DF420 + pop {r0} + bx r0 + .align 2, 0 +_081E091C: .4byte sub_81E0848 + thumb_func_end sub_81E090C + + thumb_func_start rfu_getRFUStatus +rfu_getRFUStatus: @ 81E0920 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _081E0938 @ =gUnknown_3007468 + ldr r0, [r5] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x93 + beq _081E093C + movs r0, 0x10 + b _081E0956 + .align 2, 0 +_081E0938: .4byte gUnknown_3007468 +_081E093C: + bl STWI_poll_CommandEnd + lsls r0, 16 + cmp r0, 0 + bne _081E0950 + ldr r0, [r5] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0, 0x7] + b _081E0952 +_081E0950: + movs r0, 0xFF +_081E0952: + strb r0, [r4] + movs r0, 0 +_081E0956: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end rfu_getRFUStatus + + thumb_func_start sub_81E095C +sub_81E095C: @ 81E095C + push {lr} + ldr r2, _081E0964 @ =gUnknown_86FC068 + ldr r3, _081E0968 @ =gUnknown_30000F0 + b _081E0976 + .align 2, 0 +_081E0964: .4byte gUnknown_86FC068 +_081E0968: .4byte gUnknown_30000F0 +_081E096C: + ldrb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + cmp r1, r0 + bne _081E09CC +_081E0976: + ldrb r1, [r2] + cmp r1, 0 + bne _081E096C + movs r2, 0xC0 + lsls r2, 18 + movs r3, 0 + movs r1, 0 +_081E0984: + ldrh r0, [r2] + adds r0, r3, r0 + lsls r0, 16 + lsrs r3, r0, 16 + adds r2, 0x2 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x59 + bls _081E0984 + ldr r0, _081E09C0 @ =gUnknown_30000FA + ldrh r0, [r0] + cmp r3, r0 + bne _081E09CC + movs r0, 0xC0 + lsls r0, 18 + ldr r1, _081E09C4 @ =gUnknown_3007460 + ldr r1, [r1] + movs r2, 0x5A + bl CpuSet + ldr r0, _081E09C8 @ =gUnknown_3007464 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + b _081E09CE + .align 2, 0 +_081E09C0: .4byte gUnknown_30000FA +_081E09C4: .4byte gUnknown_3007460 +_081E09C8: .4byte gUnknown_3007464 +_081E09CC: + movs r0, 0x1 +_081E09CE: + pop {r1} + bx r1 + thumb_func_end sub_81E095C + + thumb_func_start rfu_REQ_stopMode +rfu_REQ_stopMode: @ 81E09D4 + push {lr} + ldr r0, _081E09F4 @ =0x04000208 + ldrh r0, [r0] + cmp r0, 0 + bne _081E09FC + movs r0, 0x3D + movs r1, 0x6 + bl sub_81E0848 + ldr r0, _081E09F8 @ =gRfuState + ldr r1, [r0] + ldrh r0, [r1, 0x12] + movs r0, 0x6 + strh r0, [r1, 0x12] + b _081E0A72 + .align 2, 0 +_081E09F4: .4byte 0x04000208 +_081E09F8: .4byte gRfuState +_081E09FC: + bl AgbRFU_SoftReset + bl rfu_STC_clearAPIVariables + movs r0, 0x8 + bl sub_81E349C + ldr r1, _081E0A4C @ =0x00008001 + cmp r0, r1 + bne _081E0A60 + ldr r0, _081E0A50 @ =gRfuState + ldr r0, [r0] + ldrb r0, [r0, 0xA] + lsls r0, 2 + ldr r2, _081E0A54 @ =0x04000100 + adds r1, r0, r2 + movs r0, 0 + str r0, [r1] + movs r0, 0x83 + lsls r0, 16 + str r0, [r1] + ldr r0, [r1] + lsls r0, 16 + ldr r2, _081E0A58 @ =0x0105ffff + ldr r3, _081E0A5C @ =sub_81E0A7C + cmp r0, r2 + bhi _081E0A3A +_081E0A32: + ldr r0, [r1] + lsls r0, 16 + cmp r0, r2 + bls _081E0A32 +_081E0A3A: + movs r0, 0 + str r0, [r1] + adds r0, r3, 0 + bl STWI_set_Callback_M + bl sub_81DF8EC + b _081E0A72 + .align 2, 0 +_081E0A4C: .4byte 0x00008001 +_081E0A50: .4byte gRfuState +_081E0A54: .4byte 0x04000100 +_081E0A58: .4byte 0x0105ffff +_081E0A5C: .4byte sub_81E0A7C +_081E0A60: + ldr r1, _081E0A78 @ =0x04000128 + movs r2, 0x80 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0x3D + movs r1, 0 + bl sub_81E0848 +_081E0A72: + pop {r0} + bx r0 + .align 2, 0 +_081E0A78: .4byte 0x04000128 + thumb_func_end rfu_REQ_stopMode + + thumb_func_start sub_81E0A7C +sub_81E0A7C: @ 81E0A7C + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r1, 16 + adds r2, r1, 0 + cmp r2, 0 + bne _081E0A96 + ldr r1, _081E0AA4 @ =0x04000128 + movs r4, 0x80 + lsls r4, 6 + adds r0, r4, 0 + strh r0, [r1] +_081E0A96: + adds r0, r3, 0 + adds r1, r2, 0 + bl sub_81E0848 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081E0AA4: .4byte 0x04000128 + thumb_func_end sub_81E0A7C + + thumb_func_start rfu_REQBN_softReset_and_checkID +rfu_REQBN_softReset_and_checkID: @ 81E0AA8 + push {lr} + ldr r0, _081E0AB8 @ =0x04000208 + ldrh r0, [r0] + cmp r0, 0 + bne _081E0ABC + movs r0, 0x1 + negs r0, r0 + b _081E0ADC + .align 2, 0 +_081E0AB8: .4byte 0x04000208 +_081E0ABC: + bl AgbRFU_SoftReset + bl rfu_STC_clearAPIVariables + movs r0, 0x1E + bl sub_81E349C + adds r2, r0, 0 + cmp r2, 0 + bne _081E0ADA + ldr r1, _081E0AE0 @ =0x04000128 + movs r3, 0x80 + lsls r3, 6 + adds r0, r3, 0 + strh r0, [r1] +_081E0ADA: + adds r0, r2, 0 +_081E0ADC: + pop {r1} + bx r1 + .align 2, 0 +_081E0AE0: .4byte 0x04000128 + thumb_func_end rfu_REQBN_softReset_and_checkID + + thumb_func_start sub_81E0AE4 +sub_81E0AE4: @ 81E0AE4 + push {lr} + ldr r0, _081E0AF4 @ =sub_81E0AF8 + bl STWI_set_Callback_M + bl sub_81DF3B4 + pop {r0} + bx r0 + .align 2, 0 +_081E0AF4: .4byte sub_81E0AF8 + thumb_func_end sub_81E0AE4 + + thumb_func_start sub_81E0AF8 +sub_81E0AF8: @ 81E0AF8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r1, 16 + adds r4, r1, 0 + cmp r4, 0 + bne _081E0B0C + bl rfu_STC_clearAPIVariables +_081E0B0C: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81E0848 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81E0AF8 + + thumb_func_start rfu_REQ_configSystem +rfu_REQ_configSystem: @ 81E0B1C + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _081E0B54 @ =sub_81E0848 + bl STWI_set_Callback_M + movs r0, 0x3 + ands r4, r0 + movs r0, 0x3C + orrs r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl STWI_send_SystemConfigREQ + cmp r6, 0 + bne _081E0B5C + ldr r0, _081E0B58 @ =gUnknown_3007464 + ldr r1, [r0] + movs r0, 0x1 + strh r0, [r1, 0x1A] + b _081E0B76 + .align 2, 0 +_081E0B54: .4byte sub_81E0848 +_081E0B58: .4byte gUnknown_3007464 +_081E0B5C: + ldr r5, _081E0B7C @ =0x04000208 + ldrh r4, [r5] + movs r0, 0 + strh r0, [r5] + movs r0, 0x96 + lsls r0, 2 + adds r1, r6, 0 + bl Div + ldr r1, _081E0B80 @ =gUnknown_3007464 + ldr r1, [r1] + strh r0, [r1, 0x1A] + strh r4, [r5] +_081E0B76: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081E0B7C: .4byte 0x04000208 +_081E0B80: .4byte gUnknown_3007464 + thumb_func_end rfu_REQ_configSystem + + thumb_func_start rfu_REQ_configGameData +rfu_REQ_configGameData: @ 81E0B84 + push {r4-r7,lr} + sub sp, 0x10 + adds r4, r2, 0 + adds r7, r3, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, r1, 16 + adds r5, r4, 0 + mov r0, sp + strb r1, [r0] + lsrs r2, 24 + strb r2, [r0, 0x1] + cmp r6, 0 + beq _081E0BAA + movs r1, 0x80 + orrs r2, r1 + movs r1, 0 + orrs r2, r1 + strb r2, [r0, 0x1] +_081E0BAA: + movs r2, 0x2 + ldr r0, _081E0C0C @ =sub_81E0C10 + mov r12, r0 +_081E0BB0: + mov r3, sp + adds r1, r3, r2 + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x1 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xE + bls _081E0BB0 + movs r3, 0 + adds r1, r7, 0 + movs r2, 0 +_081E0BCA: + ldrb r0, [r1] + adds r0, r3, r0 + lsls r0, 24 + adds r1, 0x1 + lsrs r0, 24 + ldrb r3, [r5] + adds r0, r3 + lsls r0, 24 + lsrs r3, r0, 24 + adds r5, 0x1 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _081E0BCA + mov r1, sp + mvns r0, r3 + strb r0, [r1, 0xF] + cmp r6, 0 + beq _081E0BF6 + movs r0, 0 + strb r0, [r1, 0xE] +_081E0BF6: + mov r0, r12 + bl STWI_set_Callback_M + mov r0, sp + adds r1, r7, 0 + bl STWI_send_GameConfigREQ + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E0C0C: .4byte sub_81E0C10 + thumb_func_end rfu_REQ_configGameData + + thumb_func_start sub_81E0C10 +sub_81E0C10: @ 81E0C10 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r1, 16 + lsrs r7, r1, 16 + cmp r7, 0 + bne _081E0C9A + ldr r0, _081E0C54 @ =gRfuState + ldr r0, [r0] + ldr r1, [r0, 0x24] + ldr r0, _081E0C58 @ =gUnknown_3007460 + ldr r6, [r0] + ldrb r2, [r1, 0x4] + adds r5, r6, 0 + adds r5, 0x98 + strh r2, [r5] + ldrb r0, [r1, 0x5] + lsls r3, r0, 8 + orrs r3, r2 + strh r3, [r5] + adds r4, r1, 0x6 + movs r1, 0x80 + lsls r1, 8 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _081E0C5C + eors r3, r1 + strh r3, [r5] + adds r1, r6, 0 + adds r1, 0x97 + movs r0, 0x1 + b _081E0C62 + .align 2, 0 +_081E0C54: .4byte gRfuState +_081E0C58: .4byte gUnknown_3007460 +_081E0C5C: + adds r1, r6, 0 + adds r1, 0x97 + movs r0, 0 +_081E0C62: + strb r0, [r1] + movs r2, 0 + ldr r3, _081E0CA8 @ =gUnknown_3007460 +_081E0C68: + ldr r0, [r3] + adds r0, 0x9A + adds r0, r2 + ldrb r1, [r4] + strb r1, [r0] + adds r4, 0x1 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xC + bls _081E0C68 + adds r4, 0x1 + movs r2, 0 + ldr r3, _081E0CA8 @ =gUnknown_3007460 +_081E0C84: + ldr r0, [r3] + adds r0, 0xA9 + adds r0, r2 + ldrb r1, [r4] + strb r1, [r0] + adds r4, 0x1 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _081E0C84 +_081E0C9A: + mov r0, r12 + adds r1, r7, 0 + bl sub_81E0848 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E0CA8: .4byte gUnknown_3007460 + thumb_func_end sub_81E0C10 + + thumb_func_start sub_81E0CAC +sub_81E0CAC: @ 81E0CAC + push {lr} + ldr r0, _081E0CDC @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF420 + bl STWI_poll_CommandEnd + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _081E0CE4 + ldr r0, _081E0CE0 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r0, 0 + bne _081E0CEA + movs r0, 0x1 + bl rfu_STC_clearLinkStatus + b _081E0CEA + .align 2, 0 +_081E0CDC: .4byte sub_81E0888 +_081E0CE0: .4byte gUnknown_3007468 +_081E0CE4: + movs r0, 0x19 + bl sub_81E0848 +_081E0CEA: + ldr r0, _081E0CF8 @ =sub_81E0CFC + bl STWI_set_Callback_M + bl sub_81DF524 + pop {r0} + bx r0 + .align 2, 0 +_081E0CF8: .4byte sub_81E0CFC + thumb_func_end sub_81E0CAC + + thumb_func_start sub_81E0CFC +sub_81E0CFC: @ 81E0CFC + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r1, 16 + adds r2, r1, 0 + cmp r2, 0 + bne _081E0D14 + ldr r0, _081E0D20 @ =gUnknown_3007464 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x9] +_081E0D14: + adds r0, r3, 0 + adds r1, r2, 0 + bl sub_81E0848 + pop {r0} + bx r0 + .align 2, 0 +_081E0D20: .4byte gUnknown_3007464 + thumb_func_end sub_81E0CFC + + thumb_func_start rfu_STC_clearLinkStatus +rfu_STC_clearLinkStatus: @ 81E0D24 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl rfu_clearAllSlot + cmp r4, 0 + beq _081E0D4C + mov r0, sp + movs r5, 0 + strh r5, [r0] + ldr r4, _081E0D80 @ =gUnknown_3007460 + ldr r1, [r4] + adds r1, 0x14 + ldr r2, _081E0D84 @ =0x01000040 + bl CpuSet + ldr r0, [r4] + strb r5, [r0, 0x8] +_081E0D4C: + movs r1, 0 + ldr r2, _081E0D80 @ =gUnknown_3007460 + adds r4, r2, 0 + movs r3, 0 +_081E0D54: + ldr r0, [r4] + adds r0, 0xA + adds r0, r1 + strb r3, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bls _081E0D54 + ldr r0, [r2] + movs r1, 0 + strb r1, [r0, 0x1] + ldr r0, [r2] + strb r1, [r0, 0x2] + ldr r0, [r2] + strb r1, [r0, 0x3] + ldr r0, [r2] + strb r1, [r0, 0x7] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E0D80: .4byte gUnknown_3007460 +_081E0D84: .4byte 0x01000040 + thumb_func_end rfu_STC_clearLinkStatus + + thumb_func_start sub_81E0D88 +sub_81E0D88: @ 81E0D88 + push {lr} + ldr r0, _081E0D98 @ =sub_81E0DB0 + bl STWI_set_Callback_M + bl sub_81DF548 + pop {r0} + bx r0 + .align 2, 0 +_081E0D98: .4byte sub_81E0DB0 + thumb_func_end sub_81E0D88 + + thumb_func_start sub_81E0D9C +sub_81E0D9C: @ 81E0D9C + push {lr} + ldr r0, _081E0DAC @ =sub_81E0DB0 + bl STWI_set_Callback_M + bl sub_81DF56C + pop {r0} + bx r0 + .align 2, 0 +_081E0DAC: .4byte sub_81E0DB0 + thumb_func_end sub_81E0D9C + + thumb_func_start sub_81E0DB0 +sub_81E0DB0: @ 81E0DB0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r6, r1, 16 + cmp r6, 0 + bne _081E0DC2 + bl sub_81E0E38 +_081E0DC2: + cmp r4, 0x1A + bne _081E0E04 + ldr r5, _081E0DF8 @ =gUnknown_3007460 + ldr r0, [r5] + adds r0, 0x94 + ldrh r0, [r0] + cmp r0, 0 + bne _081E0E20 + ldr r0, _081E0DFC @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF420 + bl STWI_poll_CommandEnd + lsls r0, 16 + cmp r0, 0 + bne _081E0E20 + ldr r1, [r5] + ldr r0, _081E0E00 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrh r0, [r0, 0x4] + adds r1, 0x94 + strh r0, [r1] + b _081E0E20 + .align 2, 0 +_081E0DF8: .4byte gUnknown_3007460 +_081E0DFC: .4byte sub_81E0888 +_081E0E00: .4byte gUnknown_3007468 +_081E0E04: + cmp r4, 0x1B + bne _081E0E20 + ldr r0, _081E0E30 @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, 0xFF + bne _081E0E18 + adds r1, 0x94 + movs r0, 0 + strh r0, [r1] +_081E0E18: + ldr r0, _081E0E34 @ =gUnknown_3007464 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x9] +_081E0E20: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_81E0848 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081E0E30: .4byte gUnknown_3007460 +_081E0E34: .4byte gUnknown_3007464 + thumb_func_end sub_81E0DB0 + + thumb_func_start sub_81E0E38 +sub_81E0E38: @ 81E0E38 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r1, _081E0F64 @ =gUnknown_3007468 + ldr r0, [r1] + adds r0, 0xDC + ldr r0, [r0] + ldrb r2, [r0, 0x1] + mov r8, r2 + adds r4, r1, 0 + cmp r2, 0 + beq _081E0E96 + ldr r5, [r0, 0x4] + ldr r0, _081E0F68 @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF3D8 + bl STWI_poll_CommandEnd + lsls r0, 16 + cmp r0, 0 + bne _081E0E8A + ldr r0, [r4] + adds r0, 0xDC + ldr r0, [r0] + adds r4, r0, 0x4 + movs r2, 0 +_081E0E76: + mov r0, sp + adds r1, r0, r2 + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x1 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _081E0E76 +_081E0E8A: + ldr r0, _081E0F64 @ =gUnknown_3007468 + ldr r1, [r0] + adds r1, 0xDC + ldr r1, [r1] + str r5, [r1, 0x4] + adds r4, r0, 0 +_081E0E96: + ldr r0, [r4] + adds r0, 0xDC + ldr r0, [r0] + adds r4, r0, 0x4 + mov r1, r8 + cmp r1, 0 + beq _081E0F52 + ldr r2, _081E0F6C @ =gUnknown_3007464 + mov r9, r2 + ldr r7, _081E0F70 @ =gUnknown_3007460 + mov r10, r9 +_081E0EAC: + ldrb r2, [r4, 0x2] + adds r5, r2, 0 + cmp r2, 0x3 + bhi _081E0F42 + ldr r1, [r7] + ldrb r0, [r1, 0x2] + asrs r0, r2 + movs r6, 0x1 + ands r0, r6 + cmp r0, 0 + bne _081E0F42 + ldrb r3, [r1, 0x3] + asrs r3, r2 + ands r3, r6 + cmp r3, 0 + bne _081E0F42 + mov r1, sp + adds r0, r1, r2 + ldrb r0, [r0] + mov r12, r10 + cmp r0, 0 + beq _081E0EE6 + mov r0, r9 + ldr r1, [r0] + adds r1, 0xE + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_081E0EE6: + mov r1, r9 + ldr r0, [r1] + adds r0, 0xE + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0x3 + bls _081E0F42 + strb r3, [r1] + ldr r0, [r7] + adds r0, 0xA + adds r0, r5 + movs r1, 0xFF + strb r1, [r0] + ldr r2, [r7] + adds r0, r6, 0 + lsls r0, r5 + ldrb r1, [r2, 0x2] + orrs r0, r1 + strb r0, [r2, 0x2] + ldr r1, [r7] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + ldr r1, [r7] + lsls r3, r5, 5 + adds r1, r3 + ldrh r0, [r4] + strh r0, [r1, 0x14] + strb r5, [r1, 0x16] + ldr r0, [r7] + strb r6, [r0] + mov r0, r12 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + mov r2, r12 + ldr r1, [r2] + lsls r0, r5, 1 + adds r1, 0x12 + adds r1, r0 + ldr r0, [r7] + adds r0, r3 + ldrh r0, [r0, 0x14] + strh r0, [r1] +_081E0F42: + mov r0, r8 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r4, 0x4 + cmp r0, 0 + bne _081E0EAC +_081E0F52: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E0F64: .4byte gUnknown_3007468 +_081E0F68: .4byte sub_81E0888 +_081E0F6C: .4byte gUnknown_3007464 +_081E0F70: .4byte gUnknown_3007460 + thumb_func_end sub_81E0E38 + + thumb_func_start sub_81E0F74 +sub_81E0F74: @ 81E0F74 + push {lr} + ldr r0, _081E0F84 @ =sub_81E0F88 + bl STWI_set_Callback_M + bl sub_81DF590 + pop {r0} + bx r0 + .align 2, 0 +_081E0F84: .4byte sub_81E0F88 + thumb_func_end sub_81E0F74 + + thumb_func_start sub_81E0F88 +sub_81E0F88: @ 81E0F88 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r1, 16 + adds r4, r1, 0 + cmp r4, 0 + bne _081E0F9E + movs r0, 0 + bl rfu_STC_clearLinkStatus +_081E0F9E: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81E0848 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81E0F88 + + thumb_func_start sub_81E0FAC +sub_81E0FAC: @ 81E0FAC + push {lr} + ldr r0, _081E0FBC @ =sub_81E0FC0 + bl STWI_set_Callback_M + bl sub_81DF5B4 + pop {r0} + bx r0 + .align 2, 0 +_081E0FBC: .4byte sub_81E0FC0 + thumb_func_end sub_81E0FAC + + thumb_func_start sub_81E0FC0 +sub_81E0FC0: @ 81E0FC0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r1, 16 + adds r4, r1, 0 + cmp r4, 0 + bne _081E0FD4 + bl sub_81E0FF8 +_081E0FD4: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81E0848 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81E0FC0 + + thumb_func_start sub_81E0FE4 +sub_81E0FE4: @ 81E0FE4 + push {lr} + ldr r0, _081E0FF4 @ =sub_81E0848 + bl STWI_set_Callback_M + bl sub_81DF5D8 + pop {r0} + bx r0 + .align 2, 0 +_081E0FF4: .4byte sub_81E0848 + thumb_func_end sub_81E0FE4 + + thumb_func_start sub_81E0FF8 +sub_81E0FF8: @ 81E0FF8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r0, sp + movs r4, 0 + strh r4, [r0] + ldr r5, _081E10A0 @ =gUnknown_3007460 + ldr r1, [r5] + adds r1, 0x14 + ldr r2, _081E10A4 @ =0x01000040 + bl CpuSet + ldr r0, _081E10A8 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r2, [r0] + ldrb r7, [r2, 0x1] + adds r2, 0x4 + ldr r0, [r5] + strb r4, [r0, 0x8] + movs r6, 0 + cmp r7, 0 + beq _081E10FC + mov r12, r5 + ldr r0, _081E10AC @ =0x00007fff + mov r8, r0 +_081E102E: + subs r0, r7, 0x7 + lsls r0, 24 + lsrs r7, r0, 24 + adds r1, r2, 0x6 + adds r2, 0x13 + ldrb r0, [r2] + mvns r0, r0 + lsls r0, 24 + lsrs r5, r0, 24 + adds r2, 0x1 + movs r4, 0 + movs r3, 0 + adds r6, 0x1 +_081E1048: + ldrb r0, [r2] + adds r0, r4, r0 + lsls r0, 24 + adds r2, 0x1 + lsrs r0, 24 + ldrb r4, [r1] + adds r0, r4 + lsls r0, 24 + lsrs r4, r0, 24 + adds r1, 0x1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x7 + bls _081E1048 + cmp r4, r5 + bne _081E10F0 + subs r2, 0x1C + mov r0, r12 + ldr r1, [r0] + ldrb r0, [r1, 0x8] + lsls r0, 5 + adds r0, 0x14 + adds r4, r1, r0 + ldrh r0, [r2] + movs r3, 0 + strh r0, [r4] + adds r2, 0x2 + ldrb r0, [r2] + strb r0, [r4, 0x2] + adds r2, 0x2 + ldrh r1, [r2] + mov r0, r8 + ands r0, r1 + strh r0, [r4, 0x4] + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _081E10B0 + movs r0, 0x1 + strb r0, [r4, 0x3] + b _081E10B2 + .align 2, 0 +_081E10A0: .4byte gUnknown_3007460 +_081E10A4: .4byte 0x01000040 +_081E10A8: .4byte gUnknown_3007468 +_081E10AC: .4byte 0x00007fff +_081E10B0: + strb r3, [r4, 0x3] +_081E10B2: + adds r2, 0x2 + movs r3, 0 + adds r5, r4, 0 + adds r5, 0x15 + adds r4, 0x6 +_081E10BC: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xC + bls _081E10BC + adds r2, 0x1 + movs r3, 0 + adds r4, r5, 0 +_081E10D4: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x7 + bls _081E10D4 + mov r4, r12 + ldr r1, [r4] + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] +_081E10F0: + lsls r0, r6, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bhi _081E10FC + cmp r7, 0 + bne _081E102E +_081E10FC: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81E0FF8 + + thumb_func_start rfu_REQ_startConnectParent +rfu_REQ_startConnectParent: @ 81E1108 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + movs r3, 0 + movs r2, 0 + ldr r1, _081E1154 @ =gUnknown_3007460 + ldr r0, [r1] + ldrh r0, [r0, 0x14] + cmp r0, r4 + beq _081E1134 + adds r5, r1, 0 +_081E111E: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bhi _081E1134 + ldr r0, [r5] + lsls r1, r2, 5 + adds r0, r1 + ldrh r0, [r0, 0x14] + cmp r0, r4 + bne _081E111E +_081E1134: + cmp r2, 0x4 + bne _081E113C + movs r3, 0x80 + lsls r3, 1 +_081E113C: + cmp r3, 0 + bne _081E1160 + ldr r0, _081E1158 @ =gUnknown_3007464 + ldr r0, [r0] + strh r4, [r0, 0x1E] + ldr r0, _081E115C @ =sub_81E0848 + bl STWI_set_Callback_M + adds r0, r4, 0 + bl sub_81DF5FC + b _081E1168 + .align 2, 0 +_081E1154: .4byte gUnknown_3007460 +_081E1158: .4byte gUnknown_3007464 +_081E115C: .4byte sub_81E0848 +_081E1160: + movs r0, 0x1F + adds r1, r3, 0 + bl sub_81E0848 +_081E1168: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end rfu_REQ_startConnectParent + + thumb_func_start sub_81E1170 +sub_81E1170: @ 81E1170 + push {lr} + ldr r0, _081E1180 @ =sub_81E1184 + bl STWI_set_Callback_M + bl sub_81DF62C + pop {r0} + bx r0 + .align 2, 0 +_081E1180: .4byte sub_81E1184 + thumb_func_end sub_81E1170 + + thumb_func_start sub_81E1184 +sub_81E1184: @ 81E1184 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x28] + cmp r1, 0 + bne _081E1286 + ldr r0, _081E1240 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrh r5, [r0, 0x4] + ldrb r1, [r0, 0x6] + mov r10, r1 + ldrb r0, [r0, 0x7] + cmp r0, 0 + bne _081E1286 + movs r0, 0x80 + lsls r0, 17 + lsls r0, r1 + lsrs r2, r0, 24 + ldr r4, _081E1244 @ =gUnknown_3007460 + ldr r3, [r4] + ldrb r1, [r3, 0x2] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _081E1286 + adds r0, r2, 0 + orrs r0, r1 + strb r0, [r3, 0x2] + ldr r1, [r4] + ldrb r0, [r1, 0x3] + bics r0, r2 + strb r0, [r1, 0x3] + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x94 + movs r2, 0 + strh r5, [r0] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + ldr r0, [r4] + strb r2, [r0] + ldr r3, _081E1248 @ =gUnknown_3007464 + ldr r2, [r3] + ldrb r1, [r2] + movs r0, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r5, 0 + adds r7, r4, 0 + add r6, sp, 0x20 + movs r0, 0 + mov r8, r0 +_081E1202: + ldr r2, [r7] + lsls r4, r5, 5 + adds r0, r2, r4 + ldr r1, [r3] + ldrh r0, [r0, 0x14] + ldrh r1, [r1, 0x1E] + cmp r0, r1 + bne _081E125A + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _081E1250 + mov r9, sp + adds r0, r4, 0 + adds r0, 0x14 + adds r0, r2, r0 + mov r1, sp + movs r2, 0x10 + bl CpuSet + mov r1, r8 + strh r1, [r6] + ldr r1, [r7] + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, _081E124C @ =0x01000040 + bl CpuSet + ldr r0, [r7] + mov r1, r8 + strb r1, [r0, 0x8] + b _081E1264 + .align 2, 0 +_081E1240: .4byte gUnknown_3007468 +_081E1244: .4byte gUnknown_3007460 +_081E1248: .4byte gUnknown_3007464 +_081E124C: .4byte 0x01000040 +_081E1250: + adds r0, r4, 0 + adds r0, 0x14 + adds r2, r0 + mov r9, r2 + b _081E1264 +_081E125A: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081E1202 +_081E1264: + cmp r5, 0x3 + bhi _081E1286 + ldr r4, _081E12A0 @ =gUnknown_3007460 + mov r0, r10 + lsls r5, r0, 5 + adds r0, r5, 0 + adds r0, 0x14 + ldr r1, [r4] + adds r1, r0 + mov r0, r9 + movs r2, 0x10 + bl CpuSet + ldr r0, [r4] + adds r0, r5 + mov r1, r10 + strb r1, [r0, 0x16] +_081E1286: + ldr r0, [sp, 0x24] + ldr r1, [sp, 0x28] + bl sub_81E0848 + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E12A0: .4byte gUnknown_3007460 + thumb_func_end sub_81E1184 + + thumb_func_start sub_81E12A4 +sub_81E12A4: @ 81E12A4 + push {lr} + adds r3, r0, 0 + movs r0, 0xFF + strb r0, [r3] + ldr r0, _081E12C4 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r2, [r0] + ldrb r0, [r2] + adds r0, 0x60 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _081E12C8 + movs r0, 0x10 + b _081E12D4 + .align 2, 0 +_081E12C4: .4byte gUnknown_3007468 +_081E12C8: + adds r2, 0x6 + ldrb r0, [r2] + strb r0, [r1] + ldrb r0, [r2, 0x1] + strb r0, [r3] + movs r0, 0 +_081E12D4: + pop {r1} + bx r1 + thumb_func_end sub_81E12A4 + + thumb_func_start rfu_REQ_endConnectParent +rfu_REQ_endConnectParent: @ 81E12D8 + push {lr} + ldr r0, _081E1304 @ =sub_81E1184 + bl STWI_set_Callback_M + bl STWI_send_CP_EndREQ + ldr r0, _081E1308 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r1, [r0] + ldrb r0, [r1, 0x6] + cmp r0, 0x3 + bhi _081E1300 + ldr r0, _081E130C @ =gUnknown_3007464 + ldr r0, [r0] + adds r0, 0xA + ldrb r1, [r1, 0x6] + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_081E1300: + pop {r0} + bx r0 + .align 2, 0 +_081E1304: .4byte sub_81E1184 +_081E1308: .4byte gUnknown_3007468 +_081E130C: .4byte gUnknown_3007464 + thumb_func_end rfu_REQ_endConnectParent + + thumb_func_start rfu_syncVBlank +rfu_syncVBlank: @ 81E1310 + push {r4,r5,lr} + bl rfu_NI_checkCommFailCounter + ldr r0, _081E1358 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xFF + beq _081E13E8 + ldr r4, _081E135C @ =gUnknown_3007464 + ldr r1, [r4] + ldrb r0, [r1, 0x6] + cmp r0, 0 + beq _081E132E + subs r0, 0x1 + strb r0, [r1, 0x6] +_081E132E: + bl rfu_getMasterSlave + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, [r4] + ldrb r1, [r2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081E1360 + cmp r3, 0 + bne _081E136E + movs r0, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4] + movs r0, 0xB4 + lsls r0, 1 + strh r0, [r1, 0x20] + b _081E136A + .align 2, 0 +_081E1358: .4byte gUnknown_3007460 +_081E135C: .4byte gUnknown_3007464 +_081E1360: + cmp r3, 0 + beq _081E1380 + movs r0, 0xFB + ands r0, r1 + strb r0, [r2] +_081E136A: + cmp r3, 0 + beq _081E1380 +_081E136E: + ldr r3, _081E137C @ =gUnknown_3007464 + ldr r2, [r3] + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + b _081E138A + .align 2, 0 +_081E137C: .4byte gUnknown_3007464 +_081E1380: + ldr r3, _081E13DC @ =gUnknown_3007464 + ldr r2, [r3] + ldrb r1, [r2] + movs r0, 0x2 + orrs r0, r1 +_081E138A: + strb r0, [r2] + ldr r3, [r3] + ldrb r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _081E13E8 + ldrh r0, [r3, 0x20] + cmp r0, 0 + bne _081E13E4 + movs r0, 0xFB + ands r0, r1 + strb r0, [r3] + ldr r0, _081E13E0 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + ldrb r0, [r0, 0x3] + adds r5, r0, 0 + orrs r5, r1 + movs r4, 0 +_081E13B2: + adds r0, r5, 0 + asrs r0, r4 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081E13C4 + adds r0, r4, 0 + bl rfu_STC_removeLinkData +_081E13C4: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081E13B2 + ldr r0, _081E13E0 @ =gUnknown_3007460 + ldr r1, [r0] + movs r0, 0xFF + strb r0, [r1] + movs r0, 0x1 + b _081E13EA + .align 2, 0 +_081E13DC: .4byte gUnknown_3007464 +_081E13E0: .4byte gUnknown_3007460 +_081E13E4: + subs r0, 0x1 + strh r0, [r3, 0x20] +_081E13E8: + movs r0, 0 +_081E13EA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end rfu_syncVBlank + + thumb_func_start sub_81E13F0 +sub_81E13F0: @ 81E13F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + mov r8, r1 + str r2, [sp] + str r3, [sp, 0x4] + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0 + str r1, [sp, 0xC] + mov r2, r8 + strb r1, [r2] + mov r0, sp + ldrb r1, [r0, 0xC] + ldr r0, [sp] + strb r1, [r0] + mov r2, sp + ldrb r0, [r2, 0xC] + ldr r2, [sp, 0x4] + strb r0, [r2] + ldr r4, _081E1490 @ =gUnknown_3007460 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0xFF + bne _081E142E + b _081E178E +_081E142E: + ldr r0, _081E1494 @ =gRfuState + ldr r0, [r0] + ldrb r0, [r0, 0x14] + cmp r0, 0 + bne _081E143A + b _081E178E +_081E143A: + ldr r3, _081E1498 @ =gUnknown_3007464 + ldr r2, [r3] + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _081E144E + movs r0, 0xB4 + lsls r0, 1 + strh r0, [r2, 0x20] +_081E144E: + ldr r1, [r3] + ldrb r0, [r1, 0x6] + cmp r0, 0 + bne _081E1460 + ldr r0, [r4] + ldrb r0, [r0, 0x9] + strb r0, [r1, 0x6] + movs r1, 0x1 + str r1, [sp, 0x8] +_081E1460: + lsls r0, r5, 24 + lsrs r0, 24 + cmp r0, 0x29 + bne _081E14A0 + ldr r0, _081E149C @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r1, [r0] + ldrb r0, [r1, 0x4] + mov r2, r8 + strb r0, [r2] + ldrb r0, [r1, 0x5] + ldr r1, [sp] + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081E148A + ldr r0, [r4] + ldrb r0, [r0, 0x2] + strb r0, [r2] +_081E148A: + movs r2, 0x2 + str r2, [sp, 0x8] + b _081E14F8 + .align 2, 0 +_081E1490: .4byte gUnknown_3007460 +_081E1494: .4byte gRfuState +_081E1498: .4byte gUnknown_3007464 +_081E149C: .4byte gUnknown_3007468 +_081E14A0: + movs r0, 0x9B + lsls r0, 1 + cmp r5, r0 + bne _081E14F0 + ldr r0, _081E154C @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrb r6, [r0, 0x5] + ldr r0, [r4] + ldrb r0, [r0, 0x2] + eors r6, r0 + ands r6, r0 + mov r0, r8 + strb r6, [r0] + movs r0, 0x1 + ldr r1, [sp] + strb r0, [r1] + movs r5, 0 +_081E14C6: + mov r2, r8 + ldrb r0, [r2] + asrs r0, r5 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081E14E6 + ldr r0, _081E1550 @ =gUnknown_3007460 + ldr r0, [r0] + adds r0, 0xA + adds r0, r5 + movs r1, 0 + strb r1, [r0] + adds r0, r5, 0 + bl rfu_STC_removeLinkData +_081E14E6: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081E14C6 +_081E14F0: + ldr r0, [sp, 0x8] + cmp r0, 0 + bne _081E14F8 + b _081E178E +_081E14F8: + ldr r4, _081E154C @ =gUnknown_3007468 + ldr r0, [r4] + adds r0, 0xDC + ldr r0, [r0] + ldr r1, [r0] + str r1, [sp, 0x10] + ldr r0, [r0, 0x4] + str r0, [sp, 0x14] + ldr r0, _081E1554 @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF3D8 + bl STWI_poll_CommandEnd + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + cmp r0, 0 + bne _081E1558 + ldr r0, [r4] + adds r0, 0xDC + ldr r0, [r0] + adds r2, r0, 0x4 + movs r5, 0 + ldr r3, _081E1550 @ =gUnknown_3007460 +_081E152C: + ldr r0, [r3] + adds r0, 0xA + adds r0, r5 + ldrb r1, [r2] + strb r1, [r0] + adds r2, 0x1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081E152C + movs r2, 0 + mov r9, r2 + movs r5, 0 + b _081E1564 + .align 2, 0 +_081E154C: .4byte gUnknown_3007468 +_081E1550: .4byte gUnknown_3007460 +_081E1554: .4byte sub_81E0888 +_081E1558: + movs r0, 0x11 + ldr r1, [sp, 0xC] + bl sub_81E0848 + ldr r0, [sp, 0xC] + b _081E1790 +_081E1564: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r5 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + mov r10, r0 + ldr r1, [sp, 0xC] + cmp r1, 0 + beq _081E1578 + b _081E1742 +_081E1578: + ldr r2, [sp, 0x8] + cmp r2, 0x1 + bne _081E164E + ldr r4, _081E15B8 @ =gUnknown_3007460 + ldr r1, [r4] + ldrb r0, [r1, 0x2] + ands r0, r6 + cmp r0, 0 + beq _081E164E + adds r0, r1, 0 + adds r0, 0xA + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _081E1640 + ldrb r0, [r1] + cmp r0, 0x1 + bne _081E15C0 + ldr r2, _081E15BC @ =gUnknown_3007464 + ldr r1, [r2] + adds r1, 0xA + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r0, 0xA + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x3 + bls _081E164E + b _081E1626 + .align 2, 0 +_081E15B8: .4byte gUnknown_3007460 +_081E15BC: .4byte gUnknown_3007464 +_081E15C0: + bl sub_81DF420 + bl STWI_poll_CommandEnd + lsls r0, 16 + cmp r0, 0 + bne _081E164E + ldr r0, _081E15F0 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r0, 0 + bne _081E15F4 + mov r2, r8 + ldrb r1, [r2] + adds r0, r6, 0 + orrs r0, r1 + strb r0, [r2] + mov r0, sp + ldrb r1, [r0, 0x8] + ldr r0, [sp] + b _081E164C + .align 2, 0 +_081E15F0: .4byte gUnknown_3007468 +_081E15F4: + ldr r2, _081E163C @ =gUnknown_3007464 + ldr r1, [r2] + adds r1, 0xA + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + ldr r2, [r2] + lsrs r0, 24 + ldrh r1, [r2, 0x1A] + cmp r0, r1 + bls _081E164E + adds r0, r2, 0 + adds r0, 0xA + adds r0, r5 + mov r2, sp + ldrb r2, [r2, 0xC] + strb r2, [r0] + ldr r0, [r4] + ldrb r0, [r0, 0x2] + bl sub_81DF800 + bl STWI_poll_CommandEnd +_081E1626: + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, 0 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + mov r2, sp + ldrb r0, [r2, 0x8] + ldr r2, [sp] + strb r0, [r2] + b _081E164E + .align 2, 0 +_081E163C: .4byte gUnknown_3007464 +_081E1640: + ldr r0, _081E16B0 @ =gUnknown_3007464 + ldr r0, [r0] + adds r0, 0xA + adds r0, r5 + mov r1, sp + ldrb r1, [r1, 0xC] +_081E164C: + strb r1, [r0] +_081E164E: + ldr r2, _081E16B4 @ =gUnknown_3007460 + mov r12, r2 + ldr r1, [r2] + ldrb r7, [r1] + adds r0, r5, 0x1 + mov r10, r0 + cmp r7, 0x1 + bne _081E1742 + adds r0, r1, 0 + adds r0, 0xA + adds r4, r0, r5 + ldrb r3, [r4] + cmp r3, 0 + beq _081E1742 + ldrb r2, [r1, 0x3] + adds r0, r6, 0 + ands r0, r2 + cmp r0, 0 + beq _081E16BE + cmp r3, 0xA + bls _081E16B8 + ldr r2, [sp, 0x4] + ldrb r1, [r2] + adds r0, r6, 0 + orrs r0, r1 + strb r0, [r2] + mov r0, r12 + ldr r2, [r0] + ldrb r1, [r2, 0x2] + adds r0, r6, 0 + orrs r0, r1 + movs r3, 0 + strb r0, [r2, 0x2] + mov r2, r12 + ldr r1, [r2] + ldrb r0, [r1, 0x3] + bics r0, r6 + strb r0, [r1, 0x3] + ldr r1, [r2] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + ldr r0, _081E16B0 @ =gUnknown_3007464 + ldr r0, [r0] + adds r0, 0xA + adds r0, r5 + strb r3, [r0] + b _081E1742 + .align 2, 0 +_081E16B0: .4byte gUnknown_3007464 +_081E16B4: .4byte gUnknown_3007460 +_081E16B8: + movs r0, 0 + strb r0, [r4] + b _081E1742 +_081E16BE: + ldrb r0, [r1, 0x2] + orrs r0, r2 + ands r0, r6 + cmp r0, 0 + bne _081E1742 + bl sub_81DF444 + bl STWI_poll_CommandEnd + ldr r0, _081E1708 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r2, [r0] + ldrb r0, [r2, 0x1] + subs r0, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + adds r2, 0x8 + cmp r3, 0 + beq _081E1742 + ldrh r4, [r2] + ldrb r0, [r2, 0x2] + cmp r0, r5 + bne _081E1710 + ldr r0, _081E170C @ =gUnknown_3007464 + ldr r0, [r0] + lsls r1, r5, 1 + adds r0, 0x12 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _081E1710 + lsls r7, r5 + mov r0, r9 + orrs r0, r7 + lsls r0, 24 + b _081E173E + .align 2, 0 +_081E1708: .4byte gUnknown_3007468 +_081E170C: .4byte gUnknown_3007464 +_081E1710: + adds r2, 0x4 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _081E1742 + ldrh r4, [r2] + ldrb r0, [r2, 0x2] + cmp r0, r5 + bne _081E1710 + ldr r0, _081E17A0 @ =gUnknown_3007464 + ldr r0, [r0] + lsls r1, r5, 1 + adds r0, 0x12 + adds r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _081E1710 + movs r0, 0x1 + lsls r0, r5 + mov r1, r9 + orrs r1, r0 + lsls r0, r1, 24 +_081E173E: + lsrs r0, 24 + mov r9, r0 +_081E1742: + ldr r0, _081E17A4 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + mov r2, r8 + ldrb r0, [r2] + ands r0, r1 + ands r6, r0 + cmp r6, 0 + beq _081E175C + adds r0, r5, 0 + movs r1, 0 + bl rfu_STC_removeLinkData +_081E175C: + mov r1, r10 + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bhi _081E1768 + b _081E1564 +_081E1768: + mov r2, r9 + cmp r2, 0 + beq _081E1778 + mov r0, r9 + bl sub_81DF800 + bl STWI_poll_CommandEnd +_081E1778: + ldr r1, _081E17A8 @ =gUnknown_3007468 + ldr r0, [r1] + adds r0, 0xDC + ldr r0, [r0] + ldr r2, [sp, 0x10] + str r2, [r0] + ldr r0, [r1] + adds r0, 0xDC + ldr r0, [r0] + ldr r1, [sp, 0x14] + str r1, [r0, 0x4] +_081E178E: + movs r0, 0 +_081E1790: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081E17A0: .4byte gUnknown_3007464 +_081E17A4: .4byte gUnknown_3007460 +_081E17A8: .4byte gUnknown_3007468 + thumb_func_end sub_81E13F0 + + thumb_func_start rfu_STC_removeLinkData +rfu_STC_removeLinkData: @ 81E17AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r12, r1 + movs r0, 0x80 + lsls r0, 17 + lsls r0, r7 + lsrs r5, r0, 24 + ldr r1, _081E1850 @ =gUnknown_3007460 + ldr r4, [r1] + ldrb r0, [r4, 0x2] + ands r0, r5 + mov r8, r1 + cmp r0, 0 + beq _081E17DE + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _081E17DE + subs r0, 0x1 + strb r0, [r4, 0x1] +_081E17DE: + mov r3, r8 + ldr r2, [r3] + mvns r6, r5 + ldrb r1, [r2, 0x2] + adds r0, r6, 0 + ands r0, r1 + strb r0, [r2, 0x2] + ldr r2, [r3] + ldrb r1, [r2, 0x3] + adds r0, r5, 0 + orrs r0, r1 + strb r0, [r2, 0x3] + ldr r3, [r3] + ldr r0, [r3] + ldr r1, _081E1854 @ =0x00ff00ff + ands r0, r1 + cmp r0, 0 + bne _081E1806 + movs r0, 0xFF + strb r0, [r3] +_081E1806: + mov r0, r12 + cmp r0, 0 + beq _081E1844 + mov r1, sp + movs r4, 0 + movs r0, 0 + strh r0, [r1] + lsls r0, r7, 5 + adds r0, 0x14 + mov r2, r8 + ldr r1, [r2] + adds r1, r0 + ldr r2, _081E1858 @ =0x01000010 + mov r0, sp + bl CpuSet + mov r0, r8 + ldr r2, [r0] + ldrb r1, [r2, 0x3] + adds r0, r6, 0 + ands r0, r1 + strb r0, [r2, 0x3] + mov r2, r8 + ldr r1, [r2] + ldrb r0, [r1, 0x7] + ands r6, r0 + strb r6, [r1, 0x7] + ldr r0, [r2] + adds r0, 0xA + adds r0, r7 + strb r4, [r0] +_081E1844: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E1850: .4byte gUnknown_3007460 +_081E1854: .4byte 0x00ff00ff +_081E1858: .4byte 0x01000010 + thumb_func_end rfu_STC_removeLinkData + + thumb_func_start rfu_REQ_disconnect +rfu_REQ_disconnect: @ 81E185C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _081E18A0 @ =gUnknown_3007460 + ldr r1, [r2] + ldrb r0, [r1, 0x2] + ldrb r1, [r1, 0x3] + orrs r0, r1 + ands r0, r4 + cmp r0, 0 + beq _081E18E0 + ldr r0, _081E18A4 @ =gUnknown_3007464 + ldr r1, [r0] + strb r4, [r1, 0x5] + ldr r2, [r2] + ldrb r1, [r2] + adds r3, r0, 0 + cmp r1, 0xFF + bne _081E18A8 + ldr r0, [r3] + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _081E18A8 + ldrb r0, [r2, 0x3] + ands r0, r4 + cmp r0, 0 + beq _081E18E0 + movs r0, 0x30 + movs r1, 0 + bl rfu_CB_disconnect + b _081E18E0 + .align 2, 0 +_081E18A0: .4byte gUnknown_3007460 +_081E18A4: .4byte gUnknown_3007464 +_081E18A8: + ldr r0, [r3] + ldrb r0, [r0, 0x9] + cmp r0, 0 + beq _081E18D4 + ldr r0, _081E18D0 @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF56C + bl STWI_poll_CommandEnd + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _081E18D4 + movs r0, 0x1B + bl sub_81E0848 + b _081E18E0 + .align 2, 0 +_081E18D0: .4byte sub_81E0888 +_081E18D4: + ldr r0, _081E18E8 @ =rfu_CB_disconnect + bl STWI_set_Callback_M + adds r0, r4, 0 + bl sub_81DF800 +_081E18E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081E18E8: .4byte rfu_CB_disconnect + thumb_func_end rfu_REQ_disconnect + + thumb_func_start rfu_CB_disconnect +rfu_CB_disconnect: @ 81E18EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + cmp r5, 0x3 + bne _081E1928 + ldr r0, _081E19BC @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + bne _081E1928 + ldr r0, _081E19C0 @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF420 + bl STWI_poll_CommandEnd + lsls r0, 16 + cmp r0, 0 + bne _081E1928 + ldr r0, _081E19C4 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0, 0x7] + cmp r0, 0 + bne _081E1928 + movs r5, 0 +_081E1928: + ldr r3, _081E19C8 @ =gUnknown_3007464 + ldr r2, [r3] + ldr r0, _081E19BC @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + ldrb r1, [r1, 0x3] + orrs r0, r1 + ldrb r1, [r2, 0x5] + ands r0, r1 + strb r0, [r2, 0x5] + ldr r0, _081E19C4 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r1, [r0] + ldr r0, [r3] + ldrb r0, [r0, 0x5] + strb r0, [r1, 0x8] + cmp r5, 0 + bne _081E1976 + movs r4, 0 +_081E1950: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r4 + lsrs r0, 24 + ldr r1, _081E19C8 @ =gUnknown_3007464 + ldr r1, [r1] + ldrb r1, [r1, 0x5] + ands r0, r1 + cmp r0, 0 + beq _081E196C + adds r0, r4, 0 + movs r1, 0x1 + bl rfu_STC_removeLinkData +_081E196C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081E1950 +_081E1976: + ldr r0, _081E19BC @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + orrs r0, r1 + cmp r0, 0 + bne _081E1988 + movs r0, 0xFF + strb r0, [r2] +_081E1988: + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_81E0848 + ldr r0, _081E19C8 @ =gUnknown_3007464 + ldr r0, [r0] + ldrb r0, [r0, 0x9] + cmp r0, 0 + beq _081E19B6 + ldr r0, _081E19C0 @ =sub_81E0888 + bl STWI_set_Callback_M + bl sub_81DF524 + bl STWI_poll_CommandEnd + adds r5, r0, 0 + cmp r5, 0 + beq _081E19B6 + movs r0, 0x19 + adds r1, r5, 0 + bl sub_81E0848 +_081E19B6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081E19BC: .4byte gUnknown_3007460 +_081E19C0: .4byte sub_81E0888 +_081E19C4: .4byte gUnknown_3007468 +_081E19C8: .4byte gUnknown_3007464 + thumb_func_end rfu_CB_disconnect + + thumb_func_start rfu_REQ_CHILD_startConnectRecovery +rfu_REQ_CHILD_startConnectRecovery: @ 81E19CC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _081E1A1C @ =gUnknown_3007464 + ldr r0, [r0] + strb r5, [r0, 0x5] + movs r4, 0 + movs r0, 0x1 + ands r0, r5 + ldr r2, _081E1A20 @ =sub_81E0848 + cmp r0, 0 + bne _081E19FA + movs r1, 0x1 +_081E19E6: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bhi _081E19FA + adds r0, r5, 0 + asrs r0, r4 + ands r0, r1 + cmp r0, 0 + beq _081E19E6 +_081E19FA: + adds r0, r2, 0 + bl STWI_set_Callback_M + ldr r0, _081E1A24 @ =gUnknown_3007460 + ldr r1, [r0] + lsls r0, r4, 5 + adds r0, r1, r0 + ldrh r0, [r0, 0x14] + adds r1, 0x94 + ldrh r1, [r1] + adds r2, r5, 0 + bl STWI_send_CPR_StartREQ + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E1A1C: .4byte gUnknown_3007464 +_081E1A20: .4byte sub_81E0848 +_081E1A24: .4byte gUnknown_3007460 + thumb_func_end rfu_REQ_CHILD_startConnectRecovery + + thumb_func_start sub_81E1A28 +sub_81E1A28: @ 81E1A28 + push {lr} + ldr r0, _081E1A38 @ =sub_81E1A3C + bl STWI_set_Callback_M + bl sub_81DF8A4 + pop {r0} + bx r0 + .align 2, 0 +_081E1A38: .4byte sub_81E1A3C + thumb_func_end sub_81E1A28 + + thumb_func_start sub_81E1A3C +sub_81E1A3C: @ 81E1A3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r7, r1, 16 + cmp r7, 0 + bne _081E1AC0 + ldr r0, _081E1AD4 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0 + bne _081E1AC0 + ldr r0, _081E1AD8 @ =gUnknown_3007464 + ldr r1, [r0] + ldrb r1, [r1, 0x5] + adds r6, r0, 0 + cmp r1, 0 + beq _081E1AC0 + ldr r1, _081E1ADC @ =gUnknown_3007460 + ldr r0, [r1] + strb r7, [r0] + movs r4, 0 + adds r5, r1, 0 + mov r12, r4 +_081E1A76: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r4 + lsrs r3, r0, 24 + ldr r2, [r5] + ldr r0, [r6] + ldrb r0, [r0, 0x5] + ands r0, r3 + ldrb r1, [r2, 0x3] + ands r0, r1 + cmp r0, 0 + beq _081E1AB0 + ldrb r1, [r2, 0x2] + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2, 0x2] + ldr r1, [r5] + ldrb r0, [r1, 0x3] + bics r0, r3 + strb r0, [r1, 0x3] + ldr r1, [r5] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + ldr r0, [r6] + adds r0, 0xA + adds r0, r4 + mov r1, r12 + strb r1, [r0] +_081E1AB0: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081E1A76 + ldr r1, [r6] + movs r0, 0 + strb r0, [r1, 0x5] +_081E1AC0: + mov r0, r8 + adds r1, r7, 0 + bl sub_81E0848 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E1AD4: .4byte gUnknown_3007468 +_081E1AD8: .4byte gUnknown_3007464 +_081E1ADC: .4byte gUnknown_3007460 + thumb_func_end sub_81E1A3C + + thumb_func_start sub_81E1AE0 +sub_81E1AE0: @ 81E1AE0 + push {lr} + adds r2, r0, 0 + movs r0, 0xFF + strb r0, [r2] + ldr r0, _081E1B00 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x4D + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _081E1B04 + movs r0, 0x10 + b _081E1B0A + .align 2, 0 +_081E1B00: .4byte gUnknown_3007468 +_081E1B04: + ldrb r0, [r1, 0x4] + strb r0, [r2] + movs r0, 0 +_081E1B0A: + pop {r1} + bx r1 + thumb_func_end sub_81E1AE0 + + thumb_func_start sub_81E1B10 +sub_81E1B10: @ 81E1B10 + push {lr} + ldr r0, _081E1B20 @ =sub_81E1A3C + bl STWI_set_Callback_M + bl sub_81DF8C8 + pop {r0} + bx r0 + .align 2, 0 +_081E1B20: .4byte sub_81E1A3C + thumb_func_end sub_81E1B10 + + thumb_func_start sub_81E1B24 +sub_81E1B24: @ 81E1B24 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r3, [r5] + ldr r1, [r6] + subs r2, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _081E1B48 + adds r4, r0, 0 +_081E1B3A: + ldrb r0, [r3] + strb r0, [r1] + adds r3, 0x1 + adds r1, 0x1 + subs r2, 0x1 + cmp r2, r4 + bne _081E1B3A +_081E1B48: + str r3, [r5] + str r1, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81E1B24 + + thumb_func_start rfu_REQ_changeMasterSlave +rfu_REQ_changeMasterSlave: @ 81E1B54 + push {lr} + movs r0, 0x1 + bl STWI_read_status + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _081E1B74 + ldr r0, _081E1B70 @ =sub_81E0848 + bl STWI_set_Callback_M + bl STWI_send_MS_ChangeREQ + b _081E1B7C + .align 2, 0 +_081E1B70: .4byte sub_81E0848 +_081E1B74: + movs r0, 0x27 + movs r1, 0 + bl sub_81E0848 +_081E1B7C: + pop {r0} + bx r0 + thumb_func_end rfu_REQ_changeMasterSlave + + thumb_func_start rfu_getMasterSlave +rfu_getMasterSlave: @ 81E1B80 + push {lr} + movs r0, 0x1 + bl STWI_read_status + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1 + bne _081E1BAE + ldr r0, _081E1BB4 @ =gRfuState + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x2C + ldrb r0, [r0] + cmp r0, 0 + beq _081E1BAE + ldrb r0, [r1, 0x6] + cmp r0, 0x27 + beq _081E1BAC + cmp r0, 0x25 + beq _081E1BAC + cmp r0, 0x37 + bne _081E1BAE +_081E1BAC: + movs r2, 0 +_081E1BAE: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_081E1BB4: .4byte gRfuState + thumb_func_end rfu_getMasterSlave + + thumb_func_start rfu_clearAllSlot +rfu_clearAllSlot: @ 81E1BB8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r1, _081E1C3C @ =0x04000208 + ldrh r0, [r1] + mov r8, r0 + movs r0, 0 + strh r0, [r1] + movs r5, 0 + mov r0, sp + adds r0, 0x2 + movs r7, 0 + adds r6, r0, 0 +_081E1BD4: + mov r0, sp + strh r7, [r0] + ldr r0, _081E1C40 @ =gUnknown_3007450 + lsls r4, r5, 2 + adds r0, r4, r0 + ldr r1, [r0] + mov r0, sp + ldr r2, _081E1C44 @ =0x01000034 + bl CpuSet + strh r7, [r6] + ldr r0, _081E1C48 @ =gUnknown_3007440 + adds r4, r0 + ldr r1, [r4] + adds r0, r6, 0 + ldr r2, _081E1C4C @ =0x0100000a + bl CpuSet + ldr r3, _081E1C50 @ =gUnknown_3007460 + ldr r0, [r3] + adds r0, 0x10 + adds r0, r5 + movs r1, 0x10 + strb r1, [r0] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _081E1BD4 + ldr r2, [r3] + movs r1, 0 + movs r0, 0x57 + strb r0, [r2, 0xF] + ldr r0, [r3] + strb r1, [r0, 0x4] + ldr r0, [r3] + strb r1, [r0, 0x5] + ldr r0, [r3] + strb r1, [r0, 0x6] + ldr r0, _081E1C54 @ =gUnknown_3007464 + ldr r0, [r0] + strb r1, [r0, 0x2] + ldr r0, _081E1C3C @ =0x04000208 + mov r1, r8 + strh r1, [r0] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E1C3C: .4byte 0x04000208 +_081E1C40: .4byte gUnknown_3007450 +_081E1C44: .4byte 0x01000034 +_081E1C48: .4byte gUnknown_3007440 +_081E1C4C: .4byte 0x0100000a +_081E1C50: .4byte gUnknown_3007460 +_081E1C54: .4byte gUnknown_3007464 + thumb_func_end rfu_clearAllSlot + + thumb_func_start rfu_STC_releaseFrame +rfu_STC_releaseFrame: @ 81E1C58 + push {r4-r6,lr} + adds r4, r2, 0 + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + lsls r1, 24 + lsrs r3, r1, 24 + ldr r0, _081E1C90 @ =gUnknown_3007464 + ldr r0, [r0] + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081E1C98 + ldr r6, _081E1C94 @ =gUnknown_3007460 + cmp r3, 0 + bne _081E1C84 + ldr r1, [r6] + ldrb r0, [r1, 0xF] + ldrh r4, [r4, 0x2E] + adds r0, r4 + strb r0, [r1, 0xF] +_081E1C84: + ldr r1, [r6] + ldrb r0, [r1, 0xF] + adds r0, 0x3 + strb r0, [r1, 0xF] + b _081E1CB8 + .align 2, 0 +_081E1C90: .4byte gUnknown_3007464 +_081E1C94: .4byte gUnknown_3007460 +_081E1C98: + ldr r6, _081E1CC0 @ =gUnknown_3007460 + cmp r3, 0 + bne _081E1CAC + ldr r1, [r6] + adds r1, 0x10 + adds r1, r2 + ldrb r0, [r1] + ldrh r4, [r4, 0x2E] + adds r0, r4 + strb r0, [r1] +_081E1CAC: + ldr r1, [r6] + adds r1, 0x10 + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x2 + strb r0, [r1] +_081E1CB8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081E1CC0: .4byte gUnknown_3007460 + thumb_func_end rfu_STC_releaseFrame + + thumb_func_start rfu_clearSlot +rfu_clearSlot: @ 81E1CC4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r7, r1, 24 + cmp r7, 0x3 + bls _081E1CE4 + movs r0, 0x80 + lsls r0, 3 + b _081E1E5C +_081E1CE4: + movs r0, 0xF + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _081E1CF4 + movs r0, 0xC0 + lsls r0, 3 + b _081E1E5C +_081E1CF4: + ldr r1, _081E1D38 @ =0x04000208 + ldrh r0, [r1] + mov r10, r0 + movs r0, 0 + strh r0, [r1] + movs r0, 0xC + mov r2, r8 + ands r0, r2 + cmp r0, 0 + beq _081E1DBC + movs r3, 0 + ldr r1, _081E1D3C @ =gUnknown_3007450 + lsls r0, r7, 2 + adds r0, r1 + mov r9, r0 +_081E1D12: + movs r4, 0 + cmp r3, 0 + bne _081E1D44 + movs r0, 0x4 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _081E1D64 + mov r2, r9 + ldr r4, [r2] + ldr r0, _081E1D40 @ =gUnknown_3007460 + ldr r2, [r0] + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + ldrb r0, [r2, 0x4] + bics r0, r1 + strb r0, [r2, 0x4] + b _081E1D64 + .align 2, 0 +_081E1D38: .4byte 0x04000208 +_081E1D3C: .4byte gUnknown_3007450 +_081E1D40: .4byte gUnknown_3007460 +_081E1D44: + movs r0, 0x8 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _081E1D64 + mov r2, r9 + ldr r0, [r2] + adds r4, r0, 0 + adds r4, 0x34 + ldr r0, _081E1DF8 @ =gUnknown_3007460 + ldr r2, [r0] + movs r1, 0x1 + lsls r1, r7 + ldrb r0, [r2, 0x5] + bics r0, r1 + strb r0, [r2, 0x5] +_081E1D64: + adds r6, r3, 0x1 + cmp r4, 0 + beq _081E1DB4 + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _081E1DA4 + lsls r1, r3, 24 + lsrs r1, 24 + adds r0, r7, 0 + adds r2, r4, 0 + bl rfu_STC_releaseFrame + movs r1, 0 + adds r2, r4, 0 + adds r2, 0x2C + movs r5, 0x1 + movs r3, 0 +_081E1D8E: + ldrb r0, [r2] + asrs r0, r1 + ands r0, r5 + cmp r0, 0 + beq _081E1D9A + strh r3, [r4, 0x2] +_081E1D9A: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x3 + bls _081E1D8E +_081E1DA4: + mov r1, sp + movs r0, 0 + strh r0, [r1] + mov r0, sp + adds r1, r4, 0 + ldr r2, _081E1DFC @ =0x0100001a + bl CpuSet +_081E1DB4: + lsls r0, r6, 16 + lsrs r3, r0, 16 + cmp r3, 0x1 + bls _081E1D12 +_081E1DBC: + movs r0, 0x1 + mov r4, r8 + ands r0, r4 + cmp r0, 0 + beq _081E1E32 + ldr r1, _081E1E00 @ =gUnknown_3007440 + lsls r0, r7, 2 + adds r0, r1 + ldr r3, [r0] + ldrh r1, [r3] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _081E1E24 + ldr r0, _081E1E04 @ =gUnknown_3007464 + ldr r0, [r0] + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081E1E08 + ldr r2, _081E1DF8 @ =gUnknown_3007460 + ldr r1, [r2] + ldrb r0, [r1, 0xF] + adds r0, 0x3 + ldrb r4, [r3, 0x4] + adds r0, r4 + strb r0, [r1, 0xF] + b _081E1E1A + .align 2, 0 +_081E1DF8: .4byte gUnknown_3007460 +_081E1DFC: .4byte 0x0100001a +_081E1E00: .4byte gUnknown_3007440 +_081E1E04: .4byte gUnknown_3007464 +_081E1E08: + ldr r2, _081E1E6C @ =gUnknown_3007460 + ldr r1, [r2] + adds r1, 0x10 + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x2 + ldrb r4, [r3, 0x4] + adds r0, r4 + strb r0, [r1] +_081E1E1A: + ldr r2, [r2] + ldrb r1, [r3, 0x3] + ldrb r0, [r2, 0x6] + bics r0, r1 + strb r0, [r2, 0x6] +_081E1E24: + mov r0, sp + movs r1, 0 + strh r1, [r0] + ldr r2, _081E1E70 @ =0x01000006 + adds r1, r3, 0 + bl CpuSet +_081E1E32: + movs r0, 0x2 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _081E1E54 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _081E1E74 @ =gUnknown_3007440 + lsls r0, r7, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0xC + ldr r2, _081E1E78 @ =0x01000004 + mov r0, sp + bl CpuSet +_081E1E54: + ldr r0, _081E1E7C @ =0x04000208 + mov r2, r10 + strh r2, [r0] + movs r0, 0 +_081E1E5C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081E1E6C: .4byte gUnknown_3007460 +_081E1E70: .4byte 0x01000006 +_081E1E74: .4byte gUnknown_3007440 +_081E1E78: .4byte 0x01000004 +_081E1E7C: .4byte 0x04000208 + thumb_func_end rfu_clearSlot + + thumb_func_start rfu_setRecvBuffer +rfu_setRecvBuffer: @ 81E1E80 + push {r4-r6,lr} + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r3, r0, 24 + adds r2, r3, 0 + lsls r1, 24 + lsrs r1, 24 + adds r4, r1, 0 + cmp r1, 0x3 + bls _081E1E9C + movs r0, 0x80 + lsls r0, 3 + b _081E1ED4 +_081E1E9C: + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _081E1EB8 + ldr r0, _081E1EB4 @ =gUnknown_3007450 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + str r5, [r0, 0x68] + str r6, [r0, 0x6C] + b _081E1ED2 + .align 2, 0 +_081E1EB4: .4byte gUnknown_3007450 +_081E1EB8: + movs r0, 0x10 + ands r2, r0 + cmp r2, 0 + bne _081E1EC6 + movs r0, 0xC0 + lsls r0, 3 + b _081E1ED4 +_081E1EC6: + ldr r0, _081E1EDC @ =gUnknown_3007440 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + str r5, [r0, 0x14] + str r6, [r0, 0x18] +_081E1ED2: + movs r0, 0 +_081E1ED4: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081E1EDC: .4byte gUnknown_3007440 + thumb_func_end rfu_setRecvBuffer + + thumb_func_start rfu_NI_setSendData +rfu_NI_setSendData: @ 81E1EE0 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + str r3, [sp] + movs r0, 0x20 + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl rfu_STC_setSendData_org + lsls r0, 16 + lsrs r0, 16 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end rfu_NI_setSendData + + thumb_func_start rfu_UNI_setSendData +rfu_UNI_setSendData: @ 81E1F0C + push {lr} + sub sp, 0x4 + adds r3, r1, 0 + lsls r0, 24 + lsrs r1, r0, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _081E1F28 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _081E1F2C + adds r0, r2, 0x3 + b _081E1F2E + .align 2, 0 +_081E1F28: .4byte gUnknown_3007460 +_081E1F2C: + adds r0, r2, 0x2 +_081E1F2E: + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x10 + bl rfu_STC_setSendData_org + lsls r0, 16 + lsrs r0, 16 + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end rfu_UNI_setSendData + + thumb_func_start rfu_NI_CHILD_setSendGameName +rfu_NI_CHILD_setSendGameName: @ 81E1F48 + push {lr} + sub sp, 0x4 + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + movs r1, 0x80 + lsls r1, 17 + lsls r1, r0 + lsrs r1, 24 + ldr r0, _081E1F78 @ =gUnknown_3007460 + ldr r3, [r0] + adds r3, 0x98 + movs r0, 0x1A + str r0, [sp] + movs r0, 0x40 + bl rfu_STC_setSendData_org + lsls r0, 16 + lsrs r0, 16 + add sp, 0x4 + pop {r1} + bx r1 + .align 2, 0 +_081E1F78: .4byte gUnknown_3007460 + thumb_func_end rfu_NI_CHILD_setSendGameName + + thumb_func_start rfu_STC_setSendData_org +rfu_STC_setSendData_org: @ 81E1F7C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + str r3, [sp] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldr r0, _081E1FA8 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r1, [r2] + mov r10, r0 + cmp r1, 0xFF + bne _081E1FB0 + ldr r0, _081E1FAC @ =0x00000301 + b _081E2166 + .align 2, 0 +_081E1FA8: .4byte gUnknown_3007460 +_081E1FAC: .4byte 0x00000301 +_081E1FB0: + movs r0, 0xF + ands r0, r3 + cmp r0, 0 + bne _081E1FBE + movs r0, 0x80 + lsls r0, 3 + b _081E2166 +_081E1FBE: + ldrb r0, [r2, 0x2] + ldrb r1, [r2, 0x3] + orrs r0, r1 + ands r0, r3 + cmp r0, r3 + beq _081E1FD4 + ldr r0, _081E1FD0 @ =0x00000401 + b _081E2166 + .align 2, 0 +_081E1FD0: .4byte 0x00000401 +_081E1FD4: + movs r0, 0x10 + ands r0, r6 + cmp r0, 0 + beq _081E1FE0 + ldrb r0, [r2, 0x6] + b _081E1FE2 +_081E1FE0: + ldrb r0, [r2, 0x4] +_081E1FE2: + ands r0, r3 + cmp r0, 0 + beq _081E1FF0 + ldr r0, _081E1FEC @ =0x00000402 + b _081E2166 + .align 2, 0 +_081E1FEC: .4byte 0x00000402 +_081E1FF0: + movs r2, 0 + movs r0, 0x1 + ands r0, r3 + ldr r4, _081E2020 @ =gUnknown_86FC03C + cmp r0, 0 + bne _081E2012 + movs r1, 0x1 +_081E1FFE: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bhi _081E2012 + adds r0, r3, 0 + asrs r0, r2 + ands r0, r1 + cmp r0, 0 + beq _081E1FFE +_081E2012: + mov r0, r10 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, 0x1 + bne _081E2024 + adds r1, 0xF + b _081E202E + .align 2, 0 +_081E2020: .4byte gUnknown_86FC03C +_081E2024: + cmp r0, 0 + bne _081E2030 + adds r0, r2, 0 + adds r0, 0x10 + adds r1, r0 +_081E202E: + mov r9, r1 +_081E2030: + mov r1, r10 + ldr r0, [r1] + ldrb r0, [r0] + lsls r0, 4 + adds r0, r4 + ldrb r4, [r0] + mov r0, r9 + ldrb r0, [r0] + cmp r8, r0 + bhi _081E2048 + cmp r8, r4 + bhi _081E204E +_081E2048: + movs r0, 0xA0 + lsls r0, 3 + b _081E2166 +_081E204E: + ldr r1, _081E209C @ =0x04000208 + ldrh r0, [r1] + str r0, [sp, 0x4] + movs r7, 0 + strh r7, [r1] + movs r0, 0x20 + ands r0, r6 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _081E2068 + cmp r6, 0x40 + bne _081E2124 +_081E2068: + ldr r1, _081E20A0 @ =gUnknown_3007450 + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + mov r12, r0 + movs r1, 0 + strh r1, [r0, 0x18] + mov r1, r12 + adds r1, 0x2D + mov r2, r12 + str r1, [r2, 0x4] + movs r0, 0x7 + str r0, [r2, 0x14] + mov r0, r12 + adds r0, 0x2C + strb r3, [r0] + strb r3, [r2, 0x1A] + mov r2, r8 + subs r0, r2, r4 + mov r2, r12 + strh r0, [r2, 0x2E] + cmp r5, 0 + beq _081E20A4 + strb r7, [r1] + b _081E20A8 + .align 2, 0 +_081E209C: .4byte 0x04000208 +_081E20A0: .4byte gUnknown_3007450 +_081E20A4: + movs r0, 0x1 + strb r0, [r1] +_081E20A8: + ldr r0, [sp, 0x28] + mov r1, r12 + str r0, [r1, 0x30] + ldr r2, [sp] + str r2, [r1, 0x28] + movs r1, 0 + mov r0, r12 + strb r1, [r0, 0x1F] + adds r0, 0x20 + strb r1, [r0] + mov r4, r12 + adds r4, 0x1B + movs r6, 0 + mov r2, r12 + adds r2, 0x21 + movs r5, 0x1 +_081E20C8: + adds r0, r4, r1 + strb r6, [r0] + adds r0, r2, r1 + strb r5, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bls _081E20C8 + movs r2, 0 + movs r5, 0x1 + ldr r4, _081E211C @ =gUnknown_3007450 + movs r1, 0 +_081E20E2: + adds r0, r3, 0 + asrs r0, r2 + ands r0, r5 + cmp r0, 0 + beq _081E20F4 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + strh r1, [r0, 0x2] +_081E20F4: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _081E20E2 + mov r1, r10 + ldr r2, [r1] + ldrb r1, [r2, 0x4] + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2, 0x4] + mov r2, r9 + ldrb r0, [r2] + mov r1, r8 + subs r0, r1 + strb r0, [r2] + ldr r0, _081E2120 @ =0x00008021 + mov r2, r12 + strh r0, [r2] + b _081E215C + .align 2, 0 +_081E211C: .4byte gUnknown_3007450 +_081E2120: .4byte 0x00008021 +_081E2124: + movs r0, 0x10 + ands r0, r6 + cmp r0, 0 + beq _081E215C + ldr r1, _081E2178 @ =gUnknown_3007440 + lsls r0, r2, 2 + adds r0, r1 + ldr r1, [r0] + strb r3, [r1, 0x3] + ldr r0, [sp] + str r0, [r1, 0x8] + mov r2, r8 + subs r0, r2, r4 + strh r0, [r1, 0x4] + mov r2, r9 + ldrb r0, [r2] + mov r2, r8 + subs r0, r2 + mov r2, r9 + strb r0, [r2] + ldr r0, _081E217C @ =0x00008024 + strh r0, [r1] + mov r0, r10 + ldr r2, [r0] + ldrb r1, [r2, 0x6] + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2, 0x6] +_081E215C: + ldr r0, _081E2180 @ =0x04000208 + mov r1, sp + ldrh r1, [r1, 0x4] + strh r1, [r0] + movs r0, 0 +_081E2166: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081E2178: .4byte gUnknown_3007440 +_081E217C: .4byte 0x00008024 +_081E2180: .4byte 0x04000208 + thumb_func_end rfu_STC_setSendData_org + + thumb_func_start rfu_changeSendTarget +rfu_changeSendTarget: @ 81E2184 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r3, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + cmp r7, 0x3 + bls _081E21A8 + movs r0, 0x80 + lsls r0, 3 + b _081E22DC +_081E21A8: + cmp r0, 0x20 + bne _081E2248 + ldr r0, _081E2238 @ =gUnknown_3007450 + mov r12, r0 + lsls r0, r7, 2 + add r0, r12 + ldr r5, [r0] + ldrh r2, [r5] + ldr r1, _081E223C @ =0x00008020 + adds r0, r1, 0 + ands r0, r2 + cmp r0, r1 + bne _081E225E + ldrb r0, [r5, 0x1A] + adds r3, r6, 0 + eors r3, r0 + adds r2, r3, 0 + ands r2, r6 + cmp r2, 0 + bne _081E2296 + cmp r3, 0 + bne _081E21D6 + b _081E22DA +_081E21D6: + ldr r1, _081E2240 @ =0x04000208 + ldrh r0, [r1] + mov r8, r0 + strh r2, [r1] + movs r2, 0 + mvns r1, r3 + str r1, [sp] + lsls r4, r6, 24 + mov r10, r4 + movs r0, 0x1 + mov r9, r0 + movs r1, 0 +_081E21EE: + adds r0, r3, 0 + asrs r0, r2 + mov r4, r9 + ands r0, r4 + cmp r0, 0 + beq _081E2202 + lsls r0, r2, 2 + add r0, r12 + ldr r0, [r0] + strh r1, [r0, 0x2] +_081E2202: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _081E21EE + ldr r0, _081E2244 @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r0, [r1, 0x4] + ldr r2, [sp] + ands r2, r0 + strb r2, [r1, 0x4] + strb r6, [r5, 0x1A] + mov r0, r10 + cmp r0, 0 + bne _081E222E + adds r0, r7, 0 + movs r1, 0 + adds r2, r5, 0 + bl rfu_STC_releaseFrame + movs r0, 0x27 + strh r0, [r5] +_081E222E: + ldr r0, _081E2240 @ =0x04000208 + mov r1, r8 + strh r1, [r0] + b _081E22DA + .align 2, 0 +_081E2238: .4byte gUnknown_3007450 +_081E223C: .4byte 0x00008020 +_081E2240: .4byte 0x04000208 +_081E2244: .4byte gUnknown_3007460 +_081E2248: + cmp r3, 0x10 + bne _081E22D4 + ldr r3, _081E2264 @ =gUnknown_3007440 + lsls r1, r7, 2 + adds r0, r1, r3 + ldr r0, [r0] + ldrh r2, [r0] + ldr r0, _081E2268 @ =0x00008024 + adds r5, r3, 0 + cmp r2, r0 + beq _081E2270 +_081E225E: + ldr r0, _081E226C @ =0x00000403 + b _081E22DC + .align 2, 0 +_081E2264: .4byte gUnknown_3007440 +_081E2268: .4byte 0x00008024 +_081E226C: .4byte 0x00000403 +_081E2270: + movs r3, 0 + movs r2, 0 + adds r4, r5, 0 +_081E2276: + cmp r2, r7 + beq _081E2284 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + orrs r3, r0 +_081E2284: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _081E2276 + adds r2, r6, 0 + ands r2, r3 + cmp r2, 0 + beq _081E22A0 +_081E2296: + ldr r0, _081E229C @ =0x00000404 + b _081E22DC + .align 2, 0 +_081E229C: .4byte 0x00000404 +_081E22A0: + ldr r3, _081E22CC @ =0x04000208 + ldrh r0, [r3] + mov r8, r0 + strh r2, [r3] + ldr r4, _081E22D0 @ =gUnknown_3007460 + ldr r2, [r4] + adds r5, r1, r5 + ldr r0, [r5] + ldrb r1, [r0, 0x3] + ldrb r0, [r2, 0x6] + bics r0, r1 + strb r0, [r2, 0x6] + ldr r2, [r4] + ldrb r1, [r2, 0x6] + adds r0, r6, 0 + orrs r0, r1 + strb r0, [r2, 0x6] + ldr r0, [r5] + strb r6, [r0, 0x3] + mov r2, r8 + strh r2, [r3] + b _081E22DA + .align 2, 0 +_081E22CC: .4byte 0x04000208 +_081E22D0: .4byte gUnknown_3007460 +_081E22D4: + movs r0, 0xC0 + lsls r0, 3 + b _081E22DC +_081E22DA: + movs r0, 0 +_081E22DC: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end rfu_changeSendTarget + + thumb_func_start rfu_NI_stopReceivingData +rfu_NI_stopReceivingData: @ 81E22EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _081E22FC + movs r0, 0x80 + lsls r0, 3 + b _081E2356 +_081E22FC: + ldr r1, _081E2328 @ =gUnknown_3007450 + lsls r0, r3, 2 + adds r0, r1 + ldr r2, [r0] + adds r5, r2, 0 + adds r5, 0x34 + ldr r1, _081E232C @ =0x04000208 + ldrh r0, [r1] + adds r4, r0, 0 + movs r0, 0 + strh r0, [r1] + ldrh r1, [r2, 0x34] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _081E2350 + ldr r0, _081E2330 @ =0x00008043 + cmp r1, r0 + bne _081E2334 + movs r0, 0x48 + b _081E2336 + .align 2, 0 +_081E2328: .4byte gUnknown_3007450 +_081E232C: .4byte 0x04000208 +_081E2330: .4byte 0x00008043 +_081E2334: + movs r0, 0x47 +_081E2336: + strh r0, [r2, 0x34] + ldr r0, _081E235C @ =gUnknown_3007460 + ldr r2, [r0] + movs r1, 0x1 + lsls r1, r3 + ldrb r0, [r2, 0x5] + bics r0, r1 + strb r0, [r2, 0x5] + adds r0, r3, 0 + movs r1, 0x1 + adds r2, r5, 0 + bl rfu_STC_releaseFrame +_081E2350: + ldr r0, _081E2360 @ =0x04000208 + strh r4, [r0] + movs r0, 0 +_081E2356: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081E235C: .4byte gUnknown_3007460 +_081E2360: .4byte 0x04000208 + thumb_func_end rfu_NI_stopReceivingData + + thumb_func_start sub_81E2364 +sub_81E2364: @ 81E2364 + push {r4-r7,lr} + adds r7, r1, 0 + lsls r0, 24 + lsrs r0, 24 + adds r3, r0, 0 + lsls r2, 24 + lsrs r5, r2, 24 + cmp r0, 0x3 + bls _081E237C + movs r0, 0x80 + lsls r0, 3 + b _081E23F0 +_081E237C: + ldr r1, _081E2390 @ =gUnknown_3007440 + lsls r0, 2 + adds r0, r1 + ldr r4, [r0] + ldrh r1, [r4] + ldr r0, _081E2394 @ =0x00008024 + cmp r1, r0 + beq _081E239C + ldr r0, _081E2398 @ =0x00000403 + b _081E23F0 + .align 2, 0 +_081E2390: .4byte gUnknown_3007440 +_081E2394: .4byte 0x00008024 +_081E2398: .4byte 0x00000403 +_081E239C: + ldr r0, _081E23B0 @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, 0x1 + bne _081E23B4 + adds r6, r1, 0 + adds r6, 0xF + ldrb r0, [r4, 0x4] + ldrb r1, [r1, 0xF] + b _081E23C2 + .align 2, 0 +_081E23B0: .4byte gUnknown_3007460 +_081E23B4: + adds r0, r3, 0 + adds r0, 0x10 + adds r6, r1, r0 + adds r1, 0x10 + adds r1, r3 + ldrb r0, [r4, 0x4] + ldrb r1, [r1] +_081E23C2: + adds r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r5 + bcc _081E23EC + ldr r2, _081E23E8 @ =0x04000208 + ldrh r1, [r2] + movs r0, 0 + strh r0, [r2] + str r7, [r4, 0x8] + subs r0, r3, r5 + strb r0, [r6] + strh r5, [r4, 0x4] + movs r0, 0x1 + strb r0, [r4, 0x2] + strh r1, [r2] + movs r0, 0 + b _081E23F0 + .align 2, 0 +_081E23E8: .4byte 0x04000208 +_081E23EC: + movs r0, 0xA0 + lsls r0, 3 +_081E23F0: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81E2364 + + thumb_func_start rfu_UNI_readySendData +rfu_UNI_readySendData: @ 81E23F8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _081E2416 + ldr r1, _081E241C @ =gUnknown_3007440 + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + ldrh r1, [r2] + ldr r0, _081E2420 @ =0x00008024 + cmp r1, r0 + bne _081E2416 + movs r0, 0x1 + strb r0, [r2, 0x2] +_081E2416: + pop {r0} + bx r0 + .align 2, 0 +_081E241C: .4byte gUnknown_3007440 +_081E2420: .4byte 0x00008024 + thumb_func_end rfu_UNI_readySendData + + thumb_func_start rfu_UNI_clearRecvNewDataFlag +rfu_UNI_clearRecvNewDataFlag: @ 81E2424 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _081E243A + ldr r1, _081E2440 @ =gUnknown_3007440 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x12] +_081E243A: + pop {r0} + bx r0 + .align 2, 0 +_081E2440: .4byte gUnknown_3007440 + thumb_func_end rfu_UNI_clearRecvNewDataFlag + + thumb_func_start rfu_REQ_sendData +rfu_REQ_sendData: @ 81E2444 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _081E2490 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r1, [r2] + adds r4, r0, 0 + cmp r1, 0xFF + bne _081E2458 + b _081E257E +_081E2458: + cmp r1, 0x1 + bne _081E24E8 + ldrb r0, [r2, 0x4] + ldrb r1, [r2, 0x5] + adds r3, r0, 0 + orrs r3, r1 + ldrb r0, [r2, 0x6] + orrs r3, r0 + cmp r3, 0 + bne _081E24E8 + ldr r0, _081E2494 @ =gUnknown_3007464 + ldr r2, [r0] + ldrb r1, [r2, 0x3] + adds r4, r0, 0 + cmp r1, 0 + beq _081E2480 + movs r0, 0x10 + strb r0, [r2, 0x8] + ldr r0, [r4] + strb r3, [r0, 0x7] +_081E2480: + ldr r1, [r4] + ldrb r0, [r1, 0x8] + cmp r0, 0 + beq _081E2498 + subs r0, 0x1 + strb r0, [r1, 0x8] + b _081E249E + .align 2, 0 +_081E2490: .4byte gUnknown_3007460 +_081E2494: .4byte gUnknown_3007464 +_081E2498: + ldrb r0, [r1, 0x7] + adds r0, 0x1 + strb r0, [r1, 0x7] +_081E249E: + ldr r1, [r4] + ldrb r0, [r1, 0x8] + cmp r0, 0 + bne _081E24B0 + ldrb r1, [r1, 0x7] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _081E2542 +_081E24B0: + ldr r4, _081E24D4 @ =gUnknown_3007468 + ldr r1, [r4] + movs r0, 0x1 + str r0, [r1, 0x68] + movs r0, 0xFF + str r0, [r1, 0x78] + ldr r0, _081E24D8 @ =sub_81E2630 + bl STWI_set_Callback_M + cmp r5, 0 + bne _081E24DC + ldr r0, [r4] + adds r0, 0x68 + movs r1, 0x1 + bl sub_81DF674 + b _081E257E + .align 2, 0 +_081E24D4: .4byte gUnknown_3007468 +_081E24D8: .4byte sub_81E2630 +_081E24DC: + ldr r0, [r4] + adds r0, 0x68 + movs r1, 0x1 + bl sub_81DF6BC + b _081E257E +_081E24E8: + ldr r0, [r4] + ldrb r0, [r0, 0xE] + cmp r0, 0 + bne _081E24F4 + bl rfu_constructSendLLFrame +_081E24F4: + ldr r0, [r4] + ldrb r0, [r0, 0xE] + cmp r0, 0 + beq _081E2542 + ldr r0, _081E2520 @ =sub_81E2588 + bl STWI_set_Callback_M + cmp r5, 0 + beq _081E252C + ldr r0, _081E2524 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0x68 + ldr r1, _081E2528 @ =gUnknown_3007464 + ldr r1, [r1] + ldr r1, [r1, 0x24] + adds r1, 0x4 + lsls r1, 24 + lsrs r1, 24 + bl sub_81DF6BC + b _081E257E + .align 2, 0 +_081E2520: .4byte sub_81E2588 +_081E2524: .4byte gUnknown_3007468 +_081E2528: .4byte gUnknown_3007464 +_081E252C: + ldr r0, _081E2564 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0x68 + ldr r1, _081E2568 @ =gUnknown_3007464 + ldr r1, [r1] + ldr r1, [r1, 0x24] + adds r1, 0x4 + lsls r1, 24 + lsrs r1, 24 + bl sub_81DF674 +_081E2542: + cmp r5, 0 + beq _081E257E + ldr r0, _081E256C @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _081E2574 + ldr r0, _081E2570 @ =gRfuState + ldr r0, [r0] + ldr r1, [r0, 0x1C] + cmp r1, 0 + beq _081E257E + movs r0, 0x27 + bl _call_via_r1 + b _081E257E + .align 2, 0 +_081E2564: .4byte gUnknown_3007468 +_081E2568: .4byte gUnknown_3007464 +_081E256C: .4byte gUnknown_3007460 +_081E2570: .4byte gRfuState +_081E2574: + ldr r0, _081E2584 @ =sub_81E2620 + bl STWI_set_Callback_M + bl STWI_send_MS_ChangeREQ +_081E257E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E2584: .4byte sub_81E2620 + thumb_func_end rfu_REQ_sendData + + thumb_func_start sub_81E2588 +sub_81E2588: @ 81E2588 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r1, 16 + lsrs r7, r1, 16 + cmp r7, 0 + bne _081E25F2 + movs r6, 0 + ldr r0, _081E2610 @ =0x00008020 + mov r8, r0 +_081E259C: + ldr r0, _081E2614 @ =gUnknown_3007440 + lsls r2, r6, 2 + adds r0, r2, r0 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _081E25AE + movs r0, 0 + strb r0, [r1, 0x2] +_081E25AE: + ldr r0, _081E2618 @ =gUnknown_3007450 + adds r0, r2, r0 + ldr r4, [r0] + ldrh r0, [r4] + cmp r0, r8 + bne _081E25E8 + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + bl rfu_STC_releaseFrame + ldr r5, _081E261C @ =gUnknown_3007460 + ldr r2, [r5] + ldrb r1, [r4, 0x1A] + ldrb r0, [r2, 0x4] + bics r0, r1 + strb r0, [r2, 0x4] + adds r0, r4, 0 + adds r0, 0x2D + ldrb r3, [r0] + cmp r3, 0x1 + bne _081E25E4 + ldr r1, [r5] + lsls r3, r6 + ldrb r0, [r1, 0x7] + orrs r3, r0 + strb r3, [r1, 0x7] +_081E25E4: + movs r0, 0x26 + strh r0, [r4] +_081E25E8: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _081E259C +_081E25F2: + ldr r0, _081E261C @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r0, [r1, 0xE] + movs r0, 0 + strb r0, [r1, 0xE] + movs r0, 0x24 + adds r1, r7, 0 + bl sub_81E0848 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E2610: .4byte 0x00008020 +_081E2614: .4byte gUnknown_3007440 +_081E2618: .4byte gUnknown_3007450 +_081E261C: .4byte gUnknown_3007460 + thumb_func_end sub_81E2588 + + thumb_func_start sub_81E2620 +sub_81E2620: @ 81E2620 + push {lr} + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x24 + bl sub_81E0848 + pop {r0} + bx r0 + thumb_func_end sub_81E2620 + + thumb_func_start sub_81E2630 +sub_81E2630: @ 81E2630 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0 + beq _081E2646 + movs r0, 0x24 + bl sub_81E0848 + b _081E2652 +_081E2646: + cmp r0, 0xFF + bne _081E2652 + movs r0, 0xFF + movs r1, 0 + bl sub_81E0848 +_081E2652: + pop {r0} + bx r0 + thumb_func_end sub_81E2630 + + thumb_func_start rfu_constructSendLLFrame +rfu_constructSendLLFrame: @ 81E2658 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _081E2704 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r0, [r2] + cmp r0, 0xFF + bne _081E2670 + b _081E2774 +_081E2670: + ldrb r0, [r2, 0x4] + ldrb r1, [r2, 0x5] + orrs r0, r1 + ldrb r1, [r2, 0x6] + orrs r0, r1 + cmp r0, 0 + beq _081E2774 + ldrb r0, [r2, 0xE] + movs r0, 0 + strb r0, [r2, 0xE] + mov r8, r0 + ldr r0, _081E2708 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0x6C + str r0, [sp] + movs r6, 0 + movs r0, 0x80 + lsls r0, 8 + mov r9, r0 + ldr r1, _081E270C @ =0x00008024 + mov r10, r1 +_081E269A: + movs r5, 0 + ldr r0, _081E2710 @ =gUnknown_3007450 + lsls r7, r6, 2 + adds r4, r7, r0 + ldr r2, [r4] + ldrh r1, [r2] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + beq _081E26BA + adds r0, r6, 0 + mov r1, sp + bl rfu_STC_NI_constructLLSF + lsls r0, 16 + lsrs r5, r0, 16 +_081E26BA: + ldr r2, [r4] + ldrh r1, [r2, 0x34] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + beq _081E26D6 + adds r2, 0x34 + adds r0, r6, 0 + mov r1, sp + bl rfu_STC_NI_constructLLSF + lsls r0, 16 + lsrs r0, 16 + adds r5, r0 +_081E26D6: + ldr r0, _081E2714 @ =gUnknown_3007440 + adds r0, r7, r0 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, r10 + bne _081E26F0 + adds r0, r6, 0 + mov r1, sp + bl rfu_STC_UNI_constructLLSF + lsls r0, 16 + lsrs r0, 16 + adds r5, r0 +_081E26F0: + cmp r5, 0 + beq _081E2724 + ldr r0, _081E2704 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _081E2718 + add r8, r5 + b _081E2724 + .align 2, 0 +_081E2704: .4byte gUnknown_3007460 +_081E2708: .4byte gUnknown_3007468 +_081E270C: .4byte 0x00008024 +_081E2710: .4byte gUnknown_3007450 +_081E2714: .4byte gUnknown_3007440 +_081E2718: + adds r0, r7, r6 + adds r0, 0x8 + lsls r5, r0 + mov r2, r8 + orrs r2, r5 + mov r8, r2 +_081E2724: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _081E269A + ldr r6, _081E2784 @ =gUnknown_3007464 + mov r0, r8 + cmp r0, 0 + beq _081E276E + ldr r2, [sp] + movs r0, 0x3 + ands r0, r2 + ldr r5, _081E2788 @ =gUnknown_3007460 + ldr r1, _081E278C @ =gUnknown_3007468 + cmp r0, 0 + beq _081E2756 + movs r4, 0 + movs r3, 0x3 +_081E2748: + strb r4, [r2] + adds r0, r2, 0x1 + str r0, [sp] + adds r2, r0, 0 + ands r0, r3 + cmp r0, 0 + bne _081E2748 +_081E2756: + ldr r0, [r1] + mov r2, r8 + str r2, [r0, 0x68] + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, 0 + bne _081E276E + ldr r0, [sp] + subs r0, 0x6C + ldr r1, [r1] + subs r0, r1 + mov r8, r0 +_081E276E: + ldr r0, [r6] + mov r1, r8 + str r1, [r0, 0x24] +_081E2774: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E2784: .4byte gUnknown_3007464 +_081E2788: .4byte gUnknown_3007460 +_081E278C: .4byte gUnknown_3007468 + thumb_func_end rfu_constructSendLLFrame + + thumb_func_start rfu_STC_NI_constructLLSF +rfu_STC_NI_constructLLSF: @ 81E2790 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r12, r1 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r2, _081E280C @ =gUnknown_3007460 + ldr r0, [r2] + ldrb r0, [r0] + lsls r0, 4 + ldr r1, _081E2810 @ =gUnknown_86FC03C + adds r0, r1 + mov r8, r0 + ldrh r1, [r4] + ldr r0, _081E2814 @ =0x00008022 + cmp r1, r0 + bne _081E27FA + adds r3, r4, 0 + adds r3, 0x20 + ldrb r1, [r3] + lsls r1, 2 + adds r5, r4, 0x4 + adds r1, r5, r1 + ldr r2, [r4, 0x28] + ldr r0, [r4, 0x30] + adds r2, r0 + ldr r0, [r1] + adds r6, r3, 0 + cmp r0, r2 + bcc _081E27FA + movs r7, 0 +_081E27D8: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _081E27E8 + strb r7, [r6] +_081E27E8: + ldrb r1, [r3] + lsls r1, 2 + adds r1, r5, r1 + ldr r2, [r4, 0x28] + ldr r0, [r4, 0x30] + adds r2, r0 + ldr r0, [r1] + cmp r0, r2 + bcs _081E27D8 +_081E27FA: + ldrh r1, [r4] + movs r0, 0x40 + ands r0, r1 + mov r9, r1 + cmp r0, 0 + beq _081E2818 + movs r5, 0 + b _081E285C + .align 2, 0 +_081E280C: .4byte gUnknown_3007460 +_081E2810: .4byte gUnknown_86FC03C +_081E2814: .4byte 0x00008022 +_081E2818: + ldr r0, _081E2844 @ =0x00008022 + cmp r9, r0 + bne _081E284C + adds r3, r4, 0 + adds r3, 0x20 + ldrb r0, [r3] + lsls r0, 2 + adds r1, r4, 0x4 + adds r1, r0 + ldrh r7, [r4, 0x2E] + ldr r5, [r1] + adds r2, r5, r7 + ldr r1, [r4, 0x28] + ldr r0, [r4, 0x30] + adds r0, r1, r0 + adds r6, r3, 0 + cmp r2, r0 + bls _081E2848 + subs r0, r5 + lsls r0, 16 + lsrs r5, r0, 16 + b _081E2860 + .align 2, 0 +_081E2844: .4byte 0x00008022 +_081E2848: + adds r5, r7, 0 + b _081E2860 +_081E284C: + ldrh r2, [r4, 0x2E] + ldr r0, [r4, 0x14] + cmp r0, r2 + bcc _081E2858 + adds r5, r2, 0 + b _081E285C +_081E2858: + lsls r0, 16 + lsrs r5, r0, 16 +_081E285C: + adds r6, r4, 0 + adds r6, 0x20 +_081E2860: + movs r3, 0xF + mov r0, r9 + ands r3, r0 + mov r1, r8 + ldrb r1, [r1, 0x3] + lsls r3, r1 + ldrb r0, [r4, 0x1F] + mov r2, r8 + ldrb r2, [r2, 0x4] + lsls r0, r2 + orrs r3, r0 + ldrb r1, [r6] + adds r0, r1, 0 + mov r7, r8 + ldrb r7, [r7, 0x5] + lsls r0, r7 + orrs r3, r0 + adds r0, r4, 0 + adds r0, 0x21 + adds r0, r1 + ldrb r0, [r0] + mov r1, r8 + ldrb r1, [r1, 0x6] + lsls r0, r1 + orrs r3, r0 + orrs r3, r5 + str r3, [sp] + ldr r2, _081E291C @ =gUnknown_3007460 + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, 0x1 + bne _081E28A8 + ldrb r0, [r4, 0x1A] + lsls r0, 18 + orrs r3, r0 + str r3, [sp] +_081E28A8: + mov r2, sp + movs r3, 0 + mov r7, r8 + ldrb r7, [r7] + cmp r3, r7 + bcs _081E28D2 +_081E28B4: + mov r0, r12 + ldr r1, [r0] + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r1, 0x1 + mov r7, r12 + str r1, [r7] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + mov r0, r8 + ldrb r0, [r0] + cmp r3, r0 + bcc _081E28B4 +_081E28D2: + cmp r5, 0 + beq _081E28F2 + ldrb r1, [r6] + lsls r1, 2 + adds r0, r4, 0x4 + adds r0, r1 + ldr r0, [r0] + str r0, [sp, 0x4] + ldr r0, _081E2920 @ =gUnknown_3007468 + ldr r1, [r0] + add r0, sp, 0x4 + ldr r3, [r1, 0x4] + mov r1, r12 + adds r2, r5, 0 + bl _call_via_r3 +_081E28F2: + ldrh r1, [r4] + ldr r0, _081E2924 @ =0x00008022 + cmp r1, r0 + bne _081E290C + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _081E290C + movs r0, 0 + strb r0, [r6] +_081E290C: + ldr r0, _081E291C @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r1, [r2] + cmp r1, 0x1 + bne _081E2928 + ldrb r0, [r2, 0xE] + strb r1, [r2, 0xE] + b _081E2936 + .align 2, 0 +_081E291C: .4byte gUnknown_3007460 +_081E2920: .4byte gUnknown_3007468 +_081E2924: .4byte 0x00008022 +_081E2928: + movs r0, 0x1 + mov r1, r10 + lsls r0, r1 + ldrb r1, [r2, 0xE] + orrs r0, r1 + ldrb r1, [r2, 0xE] + strb r0, [r2, 0xE] +_081E2936: + mov r2, r8 + ldrb r0, [r2] + adds r0, r5, r0 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end rfu_STC_NI_constructLLSF + + thumb_func_start rfu_STC_UNI_constructLLSF +rfu_STC_UNI_constructLLSF: @ 81E2950 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r6, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _081E2978 @ =gUnknown_3007440 + lsls r0, 2 + adds r0, r1 + ldr r4, [r0] + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _081E2974 + ldrb r0, [r4, 0x3] + cmp r0, 0 + bne _081E297C +_081E2974: + movs r0, 0 + b _081E2A18 + .align 2, 0 +_081E2978: .4byte gUnknown_3007440 +_081E297C: + ldr r0, _081E29F4 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r0, [r2] + lsls r0, 4 + ldr r1, _081E29F8 @ =gUnknown_86FC03C + adds r5, r0, r1 + ldrh r0, [r4] + movs r1, 0xF + ands r1, r0 + ldrb r0, [r5, 0x3] + lsls r1, r0 + ldrh r0, [r4, 0x4] + orrs r1, r0 + str r1, [sp] + ldrb r0, [r2] + cmp r0, 0x1 + bne _081E29A6 + ldrb r0, [r4, 0x3] + lsls r0, 18 + orrs r1, r0 + str r1, [sp] +_081E29A6: + mov r2, sp + movs r3, 0 + ldr r1, _081E29FC @ =gUnknown_3007468 + mov r12, r1 + add r7, sp, 0x4 + ldrb r0, [r5] + cmp r3, r0 + bcs _081E29CE +_081E29B6: + ldr r1, [r6] + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r1, 0x1 + str r1, [r6] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r1, [r5] + cmp r3, r1 + bcc _081E29B6 +_081E29CE: + ldr r0, [r4, 0x8] + str r0, [sp, 0x4] + mov r2, r12 + ldr r0, [r2] + ldrh r2, [r4, 0x4] + ldr r3, [r0, 0x4] + adds r0, r7, 0 + adds r1, r6, 0 + bl _call_via_r3 + ldr r0, _081E29F4 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r0, [r2] + cmp r0, 0x1 + bne _081E2A00 + ldrb r0, [r2, 0xE] + movs r0, 0x10 + b _081E2A0C + .align 2, 0 +_081E29F4: .4byte gUnknown_3007460 +_081E29F8: .4byte gUnknown_86FC03C +_081E29FC: .4byte gUnknown_3007468 +_081E2A00: + movs r0, 0x10 + mov r1, r8 + lsls r0, r1 + ldrb r1, [r2, 0xE] + orrs r0, r1 + ldrb r1, [r2, 0xE] +_081E2A0C: + strb r0, [r2, 0xE] + ldrh r0, [r4, 0x4] + ldrb r5, [r5] + adds r0, r5 + lsls r0, 16 + lsrs r0, 16 +_081E2A18: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end rfu_STC_UNI_constructLLSF + + thumb_func_start rfu_REQ_recvData +rfu_REQ_recvData: @ 81E2A24 + push {r4,lr} + ldr r0, _081E2A58 @ =gUnknown_3007460 + ldr r4, [r0] + ldrb r0, [r4] + cmp r0, 0xFF + beq _081E2A50 + ldr r2, _081E2A5C @ =gUnknown_3007464 + ldr r3, [r2] + ldrb r0, [r4, 0x4] + ldrb r1, [r4, 0x5] + orrs r0, r1 + ldrb r1, [r4, 0x6] + orrs r0, r1 + movs r1, 0 + strb r0, [r3, 0x3] + ldr r0, [r2] + strb r1, [r0, 0x4] + ldr r0, _081E2A60 @ =sub_81E2A64 + bl STWI_set_Callback_M + bl STWI_send_DataRxREQ +_081E2A50: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081E2A58: .4byte gUnknown_3007460 +_081E2A5C: .4byte gUnknown_3007464 +_081E2A60: .4byte sub_81E2A64 + thumb_func_end rfu_REQ_recvData + + thumb_func_start sub_81E2A64 +sub_81E2A64: @ 81E2A64 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 16 + lsrs r7, r1, 16 + cmp r7, 0 + bne _081E2B28 + ldr r0, _081E2AA0 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _081E2B28 + ldr r0, _081E2AA4 @ =gUnknown_3007464 + ldr r0, [r0] + strb r7, [r0, 0x1] + ldr r0, _081E2AA8 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _081E2AAC + bl sub_81E2B50 + b _081E2AB0 + .align 2, 0 +_081E2AA0: .4byte gUnknown_3007468 +_081E2AA4: .4byte gUnknown_3007464 +_081E2AA8: .4byte gUnknown_3007460 +_081E2AAC: + bl sub_81E2BE8 +_081E2AB0: + movs r6, 0 + ldr r0, _081E2B40 @ =0x00008043 + mov r8, r0 + ldr r3, _081E2B44 @ =gUnknown_3007460 +_081E2AB8: + ldr r0, _081E2B48 @ =gUnknown_3007450 + lsls r1, r6, 2 + adds r1, r0 + ldr r4, [r1] + ldrh r0, [r4, 0x34] + cmp r0, r8 + bne _081E2B0A + ldr r0, _081E2B4C @ =gUnknown_3007464 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + asrs r0, r6 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081E2B0A + adds r5, r4, 0 + adds r5, 0x34 + adds r0, r4, 0 + adds r0, 0x61 + ldrb r2, [r0] + cmp r2, 0x1 + bne _081E2AEE + ldr r1, [r3] + lsls r2, r6 + ldrb r0, [r1, 0x7] + orrs r2, r0 + strb r2, [r1, 0x7] +_081E2AEE: + adds r0, r6, 0 + movs r1, 0x1 + adds r2, r5, 0 + str r3, [sp] + bl rfu_STC_releaseFrame + ldr r3, [sp] + ldr r2, [r3] + ldrb r1, [r5, 0x1A] + ldrb r0, [r2, 0x5] + bics r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x46 + strh r0, [r4, 0x34] +_081E2B0A: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _081E2AB8 + ldr r0, _081E2B4C @ =gUnknown_3007464 + ldr r1, [r0] + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _081E2B28 + adds r7, r0, 0 + movs r1, 0xE0 + lsls r1, 3 + adds r0, r1, 0 + orrs r7, r0 +_081E2B28: + mov r0, r9 + adds r1, r7, 0 + bl sub_81E0848 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E2B40: .4byte 0x00008043 +_081E2B44: .4byte gUnknown_3007460 +_081E2B48: .4byte gUnknown_3007450 +_081E2B4C: .4byte gUnknown_3007464 + thumb_func_end sub_81E2A64 + + thumb_func_start sub_81E2B50 +sub_81E2B50: @ 81E2B50 + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _081E2BE0 @ =gUnknown_3007468 + ldr r0, [r1] + adds r0, 0xDC + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsrs r3, r0, 8 + movs r5, 0 + mov r12, r1 + movs r7, 0x1F + ldr r4, _081E2BE4 @ =gUnknown_3007464 + movs r6, 0x1 +_081E2B6A: + mov r0, sp + adds r1, r0, r5 + adds r0, r3, 0 + ands r0, r7 + strb r0, [r1] + lsrs r3, 5 + cmp r0, 0 + bne _081E2B86 + ldr r0, [r4] + adds r1, r6, 0 + lsls r1, r5 + ldrb r2, [r0, 0x1] + orrs r1, r2 + strb r1, [r0, 0x1] +_081E2B86: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081E2B6A + mov r1, r12 + ldr r0, [r1] + adds r0, 0xDC + ldr r0, [r0] + adds r6, r0, 0 + adds r6, 0x8 + movs r5, 0 +_081E2B9E: + mov r0, sp + adds r1, r0, r5 + ldrb r0, [r1] + adds r7, r5, 0x1 + cmp r0, 0 + beq _081E2BD0 + adds r4, r1, 0 +_081E2BAC: + ldrb r2, [r4] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_81E2C40 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0 + ldrb r1, [r4] + subs r1, r0 + strb r1, [r4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081E2BD0 + lsls r0, r1, 24 + cmp r0, 0 + bne _081E2BAC +_081E2BD0: + lsls r0, r7, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081E2B9E + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E2BE0: .4byte gUnknown_3007468 +_081E2BE4: .4byte gUnknown_3007464 + thumb_func_end sub_81E2B50 + + thumb_func_start sub_81E2BE8 +sub_81E2BE8: @ 81E2BE8 + push {r4-r6,lr} + ldr r0, _081E2C38 @ =gUnknown_3007468 + ldr r0, [r0] + adds r0, 0xDC + ldr r1, [r0] + ldrh r0, [r1, 0x4] + movs r4, 0x7F + ands r4, r0 + adds r5, r1, 0 + adds r5, 0x8 + cmp r4, 0 + bne _081E2C08 + ldr r0, _081E2C3C @ =gUnknown_3007464 + ldr r1, [r0] + movs r0, 0xF + strb r0, [r1, 0x1] +_081E2C08: + movs r0, 0x80 + lsls r0, 8 + adds r6, r0, 0 +_081E2C0E: + cmp r4, 0 + beq _081E2C30 + movs r0, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_81E2C40 + lsls r0, 16 + lsrs r0, 16 + adds r5, r0 + subs r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + ands r0, r6 + cmp r0, 0 + beq _081E2C0E +_081E2C30: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081E2C38: .4byte gUnknown_3007468 +_081E2C3C: .4byte gUnknown_3007464 + thumb_func_end sub_81E2BE8 + + thumb_func_start sub_81E2C40 +sub_81E2C40: @ 81E2C40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r7, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r2, 16 + lsrs r3, r2, 16 + ldr r2, _081E2C74 @ =gUnknown_3007460 + ldr r0, [r2] + ldrb r0, [r0] + mvns r0, r0 + movs r1, 0x1 + ands r0, r1 + lsls r0, 4 + ldr r1, _081E2C78 @ =gUnknown_86FC03C + adds r6, r0, r1 + ldrb r0, [r6] + cmp r3, r0 + bcs _081E2C7C + adds r0, r3, 0 + b _081E2E6E + .align 2, 0 +_081E2C74: .4byte gUnknown_3007460 +_081E2C78: .4byte gUnknown_86FC03C +_081E2C7C: + movs r5, 0 + movs r4, 0 + ldrb r3, [r6, 0x1] + ldrb r1, [r6, 0x7] + mov r8, r1 + ldr r2, [sp] + mov r9, r2 + cmp r4, r0 + bcs _081E2CA4 + adds r2, r0, 0 +_081E2C90: + ldrb r0, [r7] + lsls r1, r4, 3 + lsls r0, r1 + orrs r5, r0 + adds r7, 0x1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r2 + bcc _081E2C90 +_081E2CA4: + adds r0, r5, 0 + lsrs r0, r3 + mov r3, r8 + ands r0, r3 + ldr r1, _081E2D7C @ =0xffffff00 + mov r10, r1 + mov r3, r10 + mov r2, r9 + ands r3, r2 + orrs r3, r0 + str r3, [sp] + adds r0, r5, 0 + ldrb r1, [r6, 0x2] + lsrs r0, r1 + ldrb r1, [r6, 0x8] + ands r0, r1 + lsls r0, 8 + ldr r4, _081E2D80 @ =0xffff00ff + adds r2, r4, 0 + ands r2, r3 + orrs r2, r0 + str r2, [sp] + adds r0, r5, 0 + ldrb r3, [r6, 0x3] + lsrs r0, r3 + ldrb r1, [r6, 0x9] + ands r0, r1 + lsls r0, 16 + ldr r3, _081E2D84 @ =0xff00ffff + ands r3, r2 + orrs r3, r0 + str r3, [sp] + adds r0, r5, 0 + ldrb r1, [r6, 0x4] + lsrs r0, r1 + ldrb r1, [r6, 0xA] + ands r0, r1 + lsls r0, 24 + ldr r2, _081E2D88 @ =0x00ffffff + mov r8, r2 + mov r1, r8 + ands r1, r3 + orrs r1, r0 + mov r8, r1 + str r1, [sp] + adds r1, r5, 0 + ldrb r2, [r6, 0x5] + lsrs r1, r2 + ldrb r0, [r6, 0xB] + ands r1, r0 + mov r9, sp + ldr r2, [sp, 0x4] + mov r3, r10 + ands r2, r3 + orrs r2, r1 + str r2, [sp, 0x4] + adds r0, r5, 0 + ldrb r1, [r6, 0x6] + lsrs r0, r1 + ldrb r1, [r6, 0xC] + ands r0, r1 + lsls r0, 8 + ands r4, r2 + orrs r4, r0 + str r4, [sp, 0x4] + ldrh r0, [r6, 0xE] + ands r5, r0 + lsls r1, r5, 16 + ldr r0, _081E2D8C @ =0x0000ffff + ands r0, r4 + orrs r0, r1 + str r0, [sp, 0x4] + lsrs r0, 16 + ldrb r6, [r6] + adds r0, r6 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + beq _081E2D4A + b _081E2E6C +_081E2D4A: + ldr r2, _081E2D90 @ =gUnknown_3007460 + ldr r3, [r2] + ldrb r2, [r3] + cmp r2, 0x1 + bne _081E2E08 + ldrb r0, [r3, 0x2] + mov r5, r12 + asrs r0, r5 + ands r0, r2 + cmp r0, 0 + bne _081E2D62 + b _081E2E6C +_081E2D62: + mov r1, r8 + lsrs r0, r1, 16 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _081E2D94 + mov r0, r12 + mov r1, sp + adds r2, r7, 0 + bl sub_81E2E84 + b _081E2E6C + .align 2, 0 +_081E2D7C: .4byte 0xffffff00 +_081E2D80: .4byte 0xffff00ff +_081E2D84: .4byte 0xff00ffff +_081E2D88: .4byte 0x00ffffff +_081E2D8C: .4byte 0x0000ffff +_081E2D90: .4byte gUnknown_3007460 +_081E2D94: + mov r5, r9 + ldrb r0, [r5, 0x3] + cmp r0, 0 + bne _081E2DA8 + mov r0, r12 + mov r1, sp + adds r2, r7, 0 + bl sub_81E3124 + b _081E2E6C +_081E2DA8: + movs r4, 0 + ldr r1, _081E2DC0 @ =gUnknown_3007450 + ldr r0, [r1] + ldrb r0, [r0, 0x1A] + mov r5, r12 + asrs r0, r5 + ands r0, r2 + cmp r0, 0 + beq _081E2DC4 + ldrb r0, [r3, 0x4] + b _081E2DEA + .align 2, 0 +_081E2DC0: .4byte gUnknown_3007450 +_081E2DC4: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bhi _081E2E6C + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1A] + mov r2, r12 + asrs r0, r2 + movs r2, 0x1 + ands r0, r2 + cmp r0, 0 + beq _081E2DC4 + ldr r3, _081E2E04 @ =gUnknown_3007460 + ldr r0, [r3] + ldrb r0, [r0, 0x4] + mov r5, r12 +_081E2DEA: + asrs r0, r5 + ands r0, r2 + cmp r0, 0 + beq _081E2DC4 + cmp r4, 0x3 + bhi _081E2E6C + adds r0, r4, 0 + mov r1, r12 + mov r2, sp + adds r3, r7, 0 + bl sub_81E2F38 + b _081E2E6C + .align 2, 0 +_081E2E04: .4byte gUnknown_3007460 +_081E2E08: + ldrb r1, [r3, 0x2] + mov r2, r9 + ldrb r0, [r2, 0x1] + adds r5, r1, 0 + ands r5, r0 + cmp r5, 0 + beq _081E2E6C + movs r4, 0 + movs r6, 0x1 +_081E2E1A: + adds r0, r5, 0 + asrs r0, r4 + ands r0, r6 + cmp r0, 0 + beq _081E2E62 + mov r1, sp + ldrb r0, [r1, 0x2] + cmp r0, 0x4 + bne _081E2E36 + adds r0, r4, 0 + adds r2, r7, 0 + bl sub_81E2E84 + b _081E2E62 +_081E2E36: + ldrb r0, [r1, 0x3] + cmp r0, 0 + bne _081E2E48 + adds r0, r4, 0 + mov r1, sp + adds r2, r7, 0 + bl sub_81E3124 + b _081E2E62 +_081E2E48: + ldr r0, _081E2E80 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + asrs r0, r4 + ands r0, r6 + cmp r0, 0 + beq _081E2E62 + adds r0, r4, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r7, 0 + bl sub_81E2F38 +_081E2E62: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081E2E1A +_081E2E6C: + mov r0, r10 +_081E2E6E: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081E2E80: .4byte gUnknown_3007460 + thumb_func_end sub_81E2C40 + + thumb_func_start sub_81E2E84 +sub_81E2E84: @ 81E2E84 + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r1, 0 + str r2, [sp] + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _081E2EB8 @ =gUnknown_3007440 + lsls r1, r7, 2 + adds r1, r2 + ldr r3, [r1] + adds r5, r3, 0 + adds r5, 0xC + movs r4, 0 + movs r0, 0 + strh r0, [r5, 0x2] + ldr r0, [r1] + ldr r0, [r0, 0x18] + adds r1, r2, 0 + ldrh r2, [r6, 0x6] + cmp r0, r2 + bcs _081E2EC0 + movs r0, 0x49 + strh r0, [r3, 0xC] + ldr r0, _081E2EBC @ =0x00000701 + strh r0, [r5, 0x2] + b _081E2F0E + .align 2, 0 +_081E2EB8: .4byte gUnknown_3007440 +_081E2EBC: .4byte 0x00000701 +_081E2EC0: + ldrb r0, [r5, 0x7] + cmp r0, 0 + beq _081E2ED8 + ldrb r0, [r5, 0x6] + cmp r0, 0 + beq _081E2EE4 + ldr r0, _081E2ED4 @ =0x00000709 + strh r0, [r5, 0x2] + b _081E2F0E + .align 2, 0 +_081E2ED4: .4byte 0x00000709 +_081E2ED8: + ldrb r0, [r5, 0x6] + cmp r0, 0 + beq _081E2EE4 + movs r0, 0xE1 + lsls r0, 3 + strh r0, [r5, 0x2] +_081E2EE4: + movs r4, 0 + ldr r0, _081E2F2C @ =0x00008042 + strh r0, [r5] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x4] + ldrh r2, [r6, 0x6] + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0, 0x14] + str r0, [sp, 0x4] + ldr r0, _081E2F30 @ =gUnknown_3007468 + ldr r0, [r0] + add r1, sp, 0x4 + ldr r3, [r0, 0x4] + mov r0, sp + bl _call_via_r3 + movs r0, 0x1 + strb r0, [r5, 0x6] + strh r4, [r5] +_081E2F0E: + ldrh r0, [r5, 0x2] + cmp r0, 0 + beq _081E2F22 + ldr r0, _081E2F34 @ =gUnknown_3007464 + ldr r2, [r0] + movs r0, 0x10 + lsls r0, r7 + ldrb r1, [r2, 0x4] + orrs r0, r1 + strb r0, [r2, 0x4] +_081E2F22: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E2F2C: .4byte 0x00008042 +_081E2F30: .4byte gUnknown_3007468 +_081E2F34: .4byte gUnknown_3007464 + thumb_func_end sub_81E2E84 + + thumb_func_start sub_81E2F38 +sub_81E2F38: @ 81E2F38 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r2, 0 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + ldr r1, _081E3004 @ =gUnknown_3007450 + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + mov r12, r0 + ldrh r0, [r0] + mov r9, r0 + mov r0, r12 + adds r0, 0x21 + ldrb r2, [r6, 0x4] + adds r0, r2 + ldrb r0, [r0] + str r0, [sp] + ldrb r2, [r6, 0x2] + cmp r2, 0x2 + bne _081E2F74 + ldr r0, _081E3008 @ =0x00008022 + cmp r9, r0 + beq _081E2F8E +_081E2F74: + cmp r2, 0x1 + bne _081E2F7E + ldr r0, _081E300C @ =0x00008021 + cmp r9, r0 + beq _081E2F8E +_081E2F7E: + movs r3, 0x1B + add r3, r12 + mov r8, r3 + cmp r2, 0x3 + bne _081E2FB2 + ldr r0, _081E3010 @ =0x00008023 + cmp r9, r0 + bne _081E2FB2 +_081E2F8E: + ldrb r1, [r6, 0x4] + mov r0, r12 + adds r0, 0x21 + adds r0, r1 + ldrb r0, [r0] + movs r7, 0x1B + add r7, r12 + mov r8, r7 + ldrb r2, [r6, 0x5] + cmp r0, r2 + bne _081E2FB2 + adds r0, r7, r1 + movs r1, 0x1 + mov r3, r10 + lsls r1, r3 + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] +_081E2FB2: + ldrb r2, [r6, 0x4] + mov r7, r8 + adds r0, r7, r2 + ldrb r0, [r0] + mov r3, r12 + ldrb r1, [r3, 0x1A] + ands r0, r1 + cmp r0, r1 + bne _081E30AE + adds r3, 0x21 + adds r2, r3, r2 + ldrb r0, [r2] + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + movs r1, 0 + strb r0, [r2] + ldrb r0, [r6, 0x4] + add r0, r8 + strb r1, [r0] + mov r7, r12 + ldrh r1, [r7] + ldr r2, _081E3014 @ =0x00007fdf + adds r0, r1, r2 + lsls r0, 16 + lsrs r0, 16 + adds r5, r3, 0 + cmp r0, 0x1 + bhi _081E30A0 + ldr r0, _081E300C @ =0x00008021 + cmp r1, r0 + bne _081E3018 + ldrb r1, [r6, 0x4] + lsls r1, 2 + subs r3, 0x1D + adds r1, r3, r1 + ldrh r2, [r7, 0x2E] + ldr r0, [r1] + adds r0, r2 + str r0, [r1] + b _081E302E + .align 2, 0 +_081E3004: .4byte gUnknown_3007450 +_081E3008: .4byte 0x00008022 +_081E300C: .4byte 0x00008021 +_081E3010: .4byte 0x00008023 +_081E3014: .4byte 0x00007fdf +_081E3018: + ldrb r2, [r6, 0x4] + lsls r2, 2 + mov r3, r12 + adds r3, 0x4 + adds r2, r3, r2 + mov r7, r12 + ldrh r1, [r7, 0x2E] + lsls r1, 2 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] +_081E302E: + mov r0, r12 + ldrh r1, [r0, 0x2E] + ldr r0, [r0, 0x14] + subs r0, r1 + mov r1, r12 + str r0, [r1, 0x14] + cmp r0, 0 + beq _081E3042 + cmp r0, 0 + bge _081E30AE +_081E3042: + mov r0, r12 + adds r0, 0x20 + movs r2, 0 + strb r2, [r0] + mov r7, r12 + ldrh r1, [r7] + ldr r0, _081E3084 @ =0x00008021 + cmp r1, r0 + bne _081E308C + movs r4, 0 +_081E3056: + adds r0, r5, r4 + movs r1, 0x1 + strb r1, [r0] + lsls r1, r4, 2 + adds r1, r3, r1 + mov r2, r12 + ldrh r0, [r2, 0x2E] + adds r2, r0, 0 + muls r2, r4 + mov r7, r12 + ldr r0, [r7, 0x28] + adds r0, r2 + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081E3056 + ldr r0, [r7, 0x30] + str r0, [r7, 0x14] + ldr r0, _081E3088 @ =0x00008022 + strh r0, [r7] + b _081E30AE + .align 2, 0 +_081E3084: .4byte 0x00008021 +_081E3088: .4byte 0x00008022 +_081E308C: + strb r2, [r5] + mov r0, r12 + str r2, [r0, 0x14] + ldr r0, _081E309C @ =0x00008023 + mov r1, r12 + strh r0, [r1] + b _081E30AE + .align 2, 0 +_081E309C: .4byte 0x00008023 +_081E30A0: + lsls r1, 16 + ldr r0, _081E3110 @ =0x80230000 + cmp r1, r0 + bne _081E30AE + ldr r0, _081E3114 @ =0x00008020 + mov r2, r12 + strh r0, [r2] +_081E30AE: + mov r3, r12 + ldrh r0, [r3] + cmp r0, r9 + bne _081E30D8 + ldrb r2, [r6, 0x4] + mov r0, r12 + adds r0, 0x21 + adds r0, r2 + ldrb r0, [r0] + ldr r7, [sp] + cmp r0, r7 + bne _081E30D8 + mov r1, r8 + adds r0, r1, r2 + ldrb r0, [r0] + mov r2, r10 + asrs r0, r2 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081E30FE +_081E30D8: + ldr r4, _081E3118 @ =0x04000208 + ldrh r2, [r4] + movs r0, 0 + strh r0, [r4] + ldr r0, _081E311C @ =gUnknown_3007464 + ldr r3, [r0] + movs r0, 0x10 + mov r7, r10 + lsls r0, r7 + ldrb r1, [r3, 0x2] + orrs r0, r1 + movs r1, 0 + strb r0, [r3, 0x2] + lsls r0, r7, 2 + ldr r3, _081E3120 @ =gUnknown_3007450 + adds r0, r3 + ldr r0, [r0] + strh r1, [r0, 0x2] + strh r2, [r4] +_081E30FE: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E3110: .4byte 0x80230000 +_081E3114: .4byte 0x00008020 +_081E3118: .4byte 0x04000208 +_081E311C: .4byte gUnknown_3007464 +_081E3120: .4byte gUnknown_3007450 + thumb_func_end sub_81E2F38 + + thumb_func_start sub_81E3124 +sub_81E3124: @ 81E3124 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r1, 0 + str r2, [sp] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + ldr r1, _081E3184 @ =gUnknown_3007450 + lsls r0, 2 + adds r0, r1 + ldr r4, [r0] + adds r5, r4, 0 + adds r5, 0x34 + ldrh r0, [r4, 0x34] + mov r9, r0 + ldrb r0, [r6, 0x4] + adds r3, r4, 0 + adds r3, 0x55 + adds r0, r3, r0 + ldrb r0, [r0] + mov r10, r0 + ldrb r0, [r6, 0x2] + cmp r0, 0x3 + bne _081E3194 + ldr r0, _081E3188 @ =gUnknown_3007464 + ldr r2, [r0] + movs r0, 0x1 + mov r1, r8 + lsls r0, r1 + ldrb r1, [r2, 0x1] + orrs r0, r1 + strb r0, [r2, 0x1] + ldrh r1, [r4, 0x34] + ldr r0, _081E318C @ =0x00008042 + cmp r1, r0 + bne _081E31DA + adds r0, r4, 0 + adds r0, 0x54 + strb r7, [r0] + strb r7, [r3] + ldr r0, _081E3190 @ =0x00008043 + strh r0, [r4, 0x34] + b _081E31DA + .align 2, 0 +_081E3184: .4byte gUnknown_3007450 +_081E3188: .4byte gUnknown_3007464 +_081E318C: .4byte 0x00008042 +_081E3190: .4byte 0x00008043 +_081E3194: + cmp r0, 0x2 + bne _081E31C0 + ldr r0, _081E31B8 @ =0x00008041 + cmp r9, r0 + bne _081E31AC + ldr r0, [r5, 0x14] + cmp r0, 0 + bne _081E31AC + mov r0, r8 + adds r1, r5, 0 + bl sub_81E3330 +_081E31AC: + ldrh r1, [r5] + ldr r0, _081E31BC @ =0x00008042 + cmp r1, r0 + bne _081E31DA + b _081E31DE + .align 2, 0 +_081E31B8: .4byte 0x00008041 +_081E31BC: .4byte 0x00008042 +_081E31C0: + cmp r0, 0x1 + bne _081E31DA + ldr r7, _081E328C @ =0x00008041 + cmp r9, r7 + beq _081E31DE + mov r0, r8 + adds r1, r5, 0 + bl sub_81E32A0 + ldrh r0, [r4, 0x34] + cmp r0, r7 + bne _081E327A + movs r7, 0x1 +_081E31DA: + cmp r7, 0 + beq _081E3234 +_081E31DE: + ldrb r2, [r6, 0x5] + ldrb r3, [r6, 0x4] + adds r4, r5, 0 + adds r4, 0x21 + adds r0, r4, r3 + ldrb r0, [r0] + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + cmp r2, r0 + bne _081E3234 + ldr r0, _081E3290 @ =gUnknown_3007468 + ldr r0, [r0] + lsls r1, r3, 2 + adds r1, 0x4 + adds r1, r5, r1 + ldrh r2, [r6, 0x6] + ldr r3, [r0, 0x4] + mov r0, sp + bl _call_via_r3 + ldrh r1, [r5] + ldr r0, _081E3294 @ =0x00008042 + cmp r1, r0 + bne _081E3224 + ldrb r0, [r6, 0x4] + lsls r0, 2 + adds r2, r5, 0x4 + adds r2, r0 + ldrh r0, [r5, 0x2E] + lsls r1, r0, 1 + adds r1, r0 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] +_081E3224: + ldrh r1, [r6, 0x6] + ldr r0, [r5, 0x14] + subs r0, r1 + str r0, [r5, 0x14] + ldrb r0, [r6, 0x4] + adds r0, r4, r0 + ldrb r1, [r6, 0x5] + strb r1, [r0] +_081E3234: + ldrh r0, [r5, 0x18] + cmp r0, 0 + bne _081E327A + ldrb r0, [r6, 0x4] + adds r1, r5, 0 + adds r1, 0x20 + strb r0, [r1] + ldrh r0, [r5] + cmp r0, r9 + bne _081E325C + adds r0, r5, 0 + adds r0, 0x21 + ldrb r2, [r6, 0x4] + adds r0, r2 + ldrb r0, [r0] + cmp r0, r10 + bne _081E325C + ldrb r6, [r6, 0x5] + cmp r0, r6 + bne _081E327A +_081E325C: + ldr r3, _081E3298 @ =0x04000208 + ldrh r2, [r3] + movs r0, 0 + strh r0, [r3] + ldr r0, _081E329C @ =gUnknown_3007464 + ldr r4, [r0] + movs r0, 0x1 + mov r1, r8 + lsls r0, r1 + ldrb r1, [r4, 0x2] + orrs r0, r1 + movs r1, 0 + strb r0, [r4, 0x2] + strh r1, [r5, 0x2] + strh r2, [r3] +_081E327A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E328C: .4byte 0x00008041 +_081E3290: .4byte gUnknown_3007468 +_081E3294: .4byte 0x00008042 +_081E3298: .4byte 0x04000208 +_081E329C: .4byte gUnknown_3007464 + thumb_func_end sub_81E3124 + + thumb_func_start sub_81E32A0 +sub_81E32A0: @ 81E32A0 + push {r4-r7,lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081E32BC @ =gUnknown_3007460 + ldr r3, [r0] + ldrb r1, [r3] + mov r12, r0 + cmp r1, 0x1 + bne _081E32C0 + movs r5, 0x3 + adds r1, r3, 0 + adds r1, 0xF + b _081E32C8 + .align 2, 0 +_081E32BC: .4byte gUnknown_3007460 +_081E32C0: + movs r5, 0x2 + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r3, r0 +_081E32C8: + movs r7, 0x1 + adds r0, r7, 0 + lsls r0, r4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, r6, 0 + ldrh r3, [r2] + cmp r3, 0 + bne _081E3326 + ldrb r0, [r1] + cmp r0, r5 + bcs _081E3300 + movs r0, 0x49 + strh r0, [r2] + ldr r0, _081E32F8 @ =0x00000702 + strh r0, [r2, 0x18] + ldr r0, _081E32FC @ =gUnknown_3007464 + ldr r2, [r0] + ldrb r1, [r2, 0x4] + adds r0, r6, 0 + orrs r0, r1 + strb r0, [r2, 0x4] + b _081E3326 + .align 2, 0 +_081E32F8: .4byte 0x00000702 +_081E32FC: .4byte gUnknown_3007464 +_081E3300: + strh r3, [r2, 0x18] + ldrb r0, [r1] + subs r0, r5 + strb r0, [r1] + adds r0, r2, 0 + adds r0, 0x2D + str r0, [r2, 0x4] + movs r0, 0x7 + str r0, [r2, 0x14] + strb r7, [r2, 0x1F] + strh r3, [r2, 0x2E] + strb r4, [r2, 0x1A] + ldr r0, _081E332C @ =0x00008041 + strh r0, [r2] + mov r0, r12 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + orrs r4, r0 + strb r4, [r1, 0x5] +_081E3326: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E332C: .4byte 0x00008041 + thumb_func_end sub_81E32A0 + + thumb_func_start sub_81E3330 +sub_81E3330: @ 81E3330 + push {r4-r7,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + adds r0, 0x2D + ldrb r0, [r0] + cmp r0, 0x1 + bne _081E3354 + ldr r0, _081E3350 @ =gUnknown_3007460 + lsls r1, r5, 5 + adds r1, 0x14 + ldr r0, [r0] + adds r0, r1 + adds r0, 0x4 + b _081E33AA + .align 2, 0 +_081E3350: .4byte gUnknown_3007460 +_081E3354: + ldr r1, _081E3398 @ =gUnknown_3007450 + lsls r0, r5, 2 + adds r0, r1 + ldr r2, [r0] + ldr r1, [r4, 0x30] + ldr r0, [r2, 0x6C] + cmp r1, r0 + bls _081E33A8 + movs r1, 0x80 + lsls r1, 17 + lsls r1, r5 + lsrs r1, 24 + ldr r0, _081E339C @ =gUnknown_3007464 + ldr r3, [r0] + ldrb r2, [r3, 0x4] + adds r0, r1, 0 + orrs r0, r2 + strb r0, [r3, 0x4] + ldr r0, _081E33A0 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r0, [r2, 0x5] + bics r0, r1 + strb r0, [r2, 0x5] + ldr r0, _081E33A4 @ =0x00000701 + strh r0, [r4, 0x18] + movs r0, 0x47 + strh r0, [r4] + adds r0, r5, 0 + movs r1, 0x1 + adds r2, r4, 0 + bl rfu_STC_releaseFrame + b _081E33DC + .align 2, 0 +_081E3398: .4byte gUnknown_3007450 +_081E339C: .4byte gUnknown_3007464 +_081E33A0: .4byte gUnknown_3007460 +_081E33A4: .4byte 0x00000701 +_081E33A8: + ldr r0, [r2, 0x68] +_081E33AA: + str r0, [r4, 0x4] + movs r3, 0 + adds r6, r4, 0 + adds r6, 0x21 + movs r7, 0 + adds r5, r4, 0x4 +_081E33B6: + adds r0, r6, r3 + strb r7, [r0] + lsls r1, r3, 2 + adds r1, r5, r1 + ldrh r0, [r4, 0x2E] + adds r2, r0, 0 + muls r2, r3 + ldr r0, [r4, 0x4] + adds r0, r2 + str r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _081E33B6 + ldr r0, [r4, 0x30] + str r0, [r4, 0x14] + ldr r0, _081E33E4 @ =0x00008042 + strh r0, [r4] +_081E33DC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E33E4: .4byte 0x00008042 + thumb_func_end sub_81E3330 + + thumb_func_start rfu_NI_checkCommFailCounter +rfu_NI_checkCommFailCounter: @ 81E33E8 + push {r4-r7,lr} + ldr r2, _081E3474 @ =gUnknown_3007460 + ldr r0, [r2] + ldrb r1, [r0, 0x4] + ldrb r0, [r0, 0x5] + orrs r0, r1 + cmp r0, 0 + beq _081E346E + ldr r1, _081E3478 @ =0x04000208 + ldrh r0, [r1] + mov r12, r0 + movs r0, 0 + strh r0, [r1] + ldr r1, _081E347C @ =gUnknown_3007464 + ldr r0, [r1] + ldrb r0, [r0, 0x2] + lsrs r7, r0, 4 + movs r3, 0 + adds r6, r1, 0 + adds r5, r2, 0 + ldr r4, _081E3480 @ =gUnknown_3007450 +_081E3412: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r3 + lsrs r2, r0, 24 + ldr r0, [r5] + ldrb r0, [r0, 0x4] + ands r0, r2 + cmp r0, 0 + beq _081E343A + ldr r0, [r6] + ldrb r0, [r0, 0x2] + ands r0, r2 + cmp r0, 0 + bne _081E343A + lsls r0, r3, 2 + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x2] + adds r0, 0x1 + strh r0, [r1, 0x2] +_081E343A: + ldr r0, [r5] + ldrb r0, [r0, 0x5] + ands r0, r2 + cmp r0, 0 + beq _081E3458 + adds r0, r7, 0 + ands r0, r2 + cmp r0, 0 + bne _081E3458 + lsls r0, r3, 2 + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x36] + adds r0, 0x1 + strh r0, [r1, 0x36] +_081E3458: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _081E3412 + ldr r0, [r6] + movs r1, 0 + strb r1, [r0, 0x2] + ldr r0, _081E3478 @ =0x04000208 + mov r1, r12 + strh r1, [r0] +_081E346E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081E3474: .4byte gUnknown_3007460 +_081E3478: .4byte 0x04000208 +_081E347C: .4byte gUnknown_3007464 +_081E3480: .4byte gUnknown_3007450 + thumb_func_end rfu_NI_checkCommFailCounter + + thumb_func_start sub_81E3484 +sub_81E3484: @ 81E3484 + push {lr} + ldr r0, _081E3498 @ =sub_81E0848 + bl STWI_set_Callback_M + movs r0, 0x1 + movs r1, 0 + bl sub_81DF830 + pop {r0} + bx r0 + .align 2, 0 +_081E3498: .4byte sub_81E0848 + thumb_func_end sub_81E3484 + + thumb_func_start sub_81E349C +sub_81E349C: @ 81E349C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _081E34B4 @ =0x04000208 + ldrh r0, [r0] + cmp r0, 0 + bne _081E34B8 + movs r0, 0x1 + negs r0, r0 + b _081E3538 + .align 2, 0 +_081E34B4: .4byte 0x04000208 +_081E34B8: + ldr r0, _081E34E4 @ =0x04000200 + ldrh r0, [r0] + mov r8, r0 + ldr r4, _081E34E8 @ =gRfuState + ldr r1, [r4] + movs r0, 0xA + str r0, [r1] + ldr r0, _081E34EC @ =sub_81E36B8 + bl sub_81DF380 + bl sub_81E3550 + ldr r0, [r4] + ldrb r0, [r0, 0xA] + lsls r0, 2 + ldr r1, _081E34F0 @ =0x04000100 + adds r4, r0, r1 + lsls r0, r5, 27 + lsrs r5, r0, 24 + movs r7, 0 + b _081E3506 + .align 2, 0 +_081E34E4: .4byte 0x04000200 +_081E34E8: .4byte gRfuState +_081E34EC: .4byte sub_81E36B8 +_081E34F0: .4byte 0x04000100 +_081E34F4: + strh r6, [r4, 0x2] + strh r6, [r4] + movs r0, 0x83 + strh r0, [r4, 0x2] +_081E34FC: + ldrh r0, [r4] + cmp r0, 0x1F + bls _081E34FC + strh r7, [r4, 0x2] + strh r7, [r4] +_081E3506: + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xFF + beq _081E351A + bl sub_81E35C4 + adds r6, r0, 0 + cmp r6, 0 + beq _081E34F4 +_081E351A: + ldr r1, _081E3544 @ =0x04000208 + movs r0, 0 + strh r0, [r1] + ldr r0, _081E3548 @ =0x04000200 + mov r2, r8 + strh r2, [r0] + movs r0, 0x1 + strh r0, [r1] + ldr r0, _081E354C @ =gRfuState + ldr r1, [r0] + movs r0, 0 + str r0, [r1] + bl sub_81DF380 + adds r0, r6, 0 +_081E3538: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081E3544: .4byte 0x04000208 +_081E3548: .4byte 0x04000200 +_081E354C: .4byte gRfuState + thumb_func_end sub_81E349C + + thumb_func_start sub_81E3550 +sub_81E3550: @ 81E3550 + push {r4,r5,lr} + sub sp, 0x4 + ldr r3, _081E35A8 @ =0x04000208 + movs r4, 0 + strh r4, [r3] + ldr r2, _081E35AC @ =0x04000200 + ldr r0, _081E35B0 @ =gRfuState + ldr r0, [r0] + movs r1, 0x8 + ldrb r0, [r0, 0xA] + lsls r1, r0 + movs r5, 0x80 + orrs r1, r5 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] + movs r0, 0x1 + strh r0, [r3] + ldr r0, _081E35B4 @ =0x04000134 + strh r4, [r0] + subs r2, 0xD8 + movs r1, 0x80 + lsls r1, 5 + adds r0, r1, 0 + strh r0, [r2] + ldrh r0, [r2] + movs r3, 0x81 + lsls r3, 7 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + movs r0, 0 + str r0, [sp] + ldr r1, _081E35B8 @ =gUnknown_3007470 + ldr r2, _081E35BC @ =0x05000003 + mov r0, sp + bl CpuSet + ldr r0, _081E35C0 @ =0x04000202 + strh r5, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E35A8: .4byte 0x04000208 +_081E35AC: .4byte 0x04000200 +_081E35B0: .4byte gRfuState +_081E35B4: .4byte 0x04000134 +_081E35B8: .4byte gUnknown_3007470 +_081E35BC: .4byte 0x05000003 +_081E35C0: .4byte 0x04000202 + thumb_func_end sub_81E3550 + + thumb_func_start sub_81E35C4 +sub_81E35C4: @ 81E35C4 + push {r4-r7,lr} + ldr r0, _081E35D8 @ =gUnknown_3007470 + ldrb r1, [r0, 0x1] + mov r12, r1 + adds r7, r0, 0 + cmp r1, 0 + beq _081E35DC + cmp r1, 0x1 + beq _081E3614 + b _081E36AC + .align 2, 0 +_081E35D8: .4byte gUnknown_3007470 +_081E35DC: + movs r6, 0x1 + strb r6, [r7] + ldr r3, _081E3608 @ =0x04000128 + ldrh r0, [r3] + movs r5, 0x1 + orrs r0, r5 + strh r0, [r3] + ldr r4, _081E360C @ =0x04000208 + mov r0, r12 + strh r0, [r4] + ldr r2, _081E3610 @ =0x04000200 + ldrh r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r2] + strh r6, [r4] + strb r5, [r7, 0x1] + ldrb r0, [r3] + orrs r0, r1 + strb r0, [r3] + b _081E36B0 + .align 2, 0 +_081E3608: .4byte 0x04000128 +_081E360C: .4byte 0x04000208 +_081E3610: .4byte 0x04000200 +_081E3614: + ldrh r0, [r7, 0xA] + cmp r0, 0 + bne _081E36A8 + ldrb r0, [r7] + cmp r0, 0x1 + bne _081E3644 + ldrh r0, [r7, 0x2] + cmp r0, 0 + bne _081E36B0 + ldr r3, _081E363C @ =0x04000208 + strh r0, [r3] + ldr r2, _081E3640 @ =0x04000128 + ldrh r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r2] + mov r1, r12 + strh r1, [r3] + b _081E36B0 + .align 2, 0 +_081E363C: .4byte 0x04000208 +_081E3640: .4byte 0x04000128 +_081E3644: + ldrh r1, [r7, 0x4] + ldr r0, _081E3690 @ =0x00008001 + cmp r1, r0 + beq _081E36B0 + ldrh r6, [r7, 0x2] + cmp r6, 0 + bne _081E36B0 + ldr r4, _081E3694 @ =0x04000208 + strh r6, [r4] + ldr r3, _081E3698 @ =0x04000200 + ldrh r1, [r3] + ldr r0, _081E369C @ =0x0000ff7f + ands r0, r1 + strh r0, [r3] + mov r7, r12 + strh r7, [r4] + ldr r2, _081E36A0 @ =0x04000128 + strh r6, [r2] + movs r1, 0x80 + lsls r1, 5 + adds r0, r1, 0 + strh r0, [r2] + ldr r0, _081E36A4 @ =0x04000202 + movs r5, 0x80 + strh r5, [r0] + ldrh r0, [r2] + movs r7, 0x81 + lsls r7, 7 + adds r1, r7, 0 + orrs r0, r1 + strh r0, [r2] + strh r6, [r4] + ldrh r0, [r3] + orrs r0, r5 + strh r0, [r3] + mov r0, r12 + strh r0, [r4] + b _081E36B0 + .align 2, 0 +_081E3690: .4byte 0x00008001 +_081E3694: .4byte 0x04000208 +_081E3698: .4byte 0x04000200 +_081E369C: .4byte 0x0000ff7f +_081E36A0: .4byte 0x04000128 +_081E36A4: .4byte 0x04000202 +_081E36A8: + movs r0, 0x2 + strb r0, [r7, 0x1] +_081E36AC: + ldrh r0, [r7, 0xA] + b _081E36B2 +_081E36B0: + movs r0, 0 +_081E36B2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81E35C4 + + thumb_func_start sub_81E36B8 +sub_81E36B8: @ 81E36B8 + push {r4,r5,lr} + ldr r0, _081E3700 @ =0x04000120 + ldr r5, [r0] + ldr r0, _081E3704 @ =gUnknown_3007470 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x1 + beq _081E36D2 + ldr r0, _081E3708 @ =0x04000128 + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] +_081E36D2: + ldrb r2, [r4] + lsls r1, r2, 4 + adds r0, r5, 0 + lsls r0, r1 + lsrs r1, r0, 16 + movs r0, 0x1 + subs r0, r2 + lsls r0, 4 + lsls r5, r0 + adds r0, r5, 0 + lsrs r5, r0, 16 + ldrh r0, [r4, 0xA] + cmp r0, 0 + bne _081E3726 + ldrh r2, [r4, 0x6] + cmp r1, r2 + bne _081E3724 + ldrh r3, [r4, 0x2] + cmp r3, 0x3 + bls _081E370C + strh r5, [r4, 0xA] + b _081E3726 + .align 2, 0 +_081E3700: .4byte 0x04000120 +_081E3704: .4byte gUnknown_3007470 +_081E3708: .4byte 0x04000128 +_081E370C: + ldrh r0, [r4, 0x4] + mvns r0, r0 + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bne _081E3726 + mvns r0, r2 + lsls r0, 16 + lsrs r0, 16 + cmp r5, r0 + bne _081E3726 + adds r0, r3, 0x1 +_081E3724: + strh r0, [r4, 0x2] +_081E3726: + ldrh r0, [r4, 0x2] + cmp r0, 0x3 + bhi _081E373C + lsls r0, 1 + ldr r1, _081E3738 @ =gUnknown_86FC074 + adds r0, r1 + ldrh r0, [r0] + b _081E373E + .align 2, 0 +_081E3738: .4byte gUnknown_86FC074 +_081E373C: + ldr r0, _081E3794 @ =0x00008001 +_081E373E: + strh r0, [r4, 0x4] + mvns r0, r5 + strh r0, [r4, 0x6] + ldr r3, _081E3798 @ =0x04000120 + ldrh r2, [r4, 0x4] + ldrb r1, [r4] + movs r0, 0x1 + subs r0, r1 + lsls r0, 4 + lsls r2, r0 + ldrh r0, [r4, 0x6] + lsls r1, 4 + lsls r0, r1 + adds r2, r0 + str r2, [r3] + ldrb r0, [r4] + cmp r0, 0x1 + bne _081E378C + ldrh r0, [r4, 0x2] + cmp r0, 0 + bne _081E376E + ldr r0, _081E379C @ =0x0000494e + cmp r5, r0 + bne _081E378C +_081E376E: + movs r0, 0 + ldr r1, _081E37A0 @ =0x00000257 +_081E3772: + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r1 + bls _081E3772 + ldrh r0, [r4, 0xA] + cmp r0, 0 + bne _081E378C + ldr r0, _081E37A4 @ =0x04000128 + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] +_081E378C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081E3794: .4byte 0x00008001 +_081E3798: .4byte 0x04000120 +_081E379C: .4byte 0x0000494e +_081E37A0: .4byte 0x00000257 +_081E37A4: .4byte 0x04000128 + thumb_func_end sub_81E36B8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/link.s b/asm/link.s new file mode 100644 index 000000000..f5de3137f --- /dev/null +++ b/asm/link.s @@ -0,0 +1,5196 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8009480 +sub_8009480: @ 8009480 + push {lr} + ldr r0, _08009494 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08009498 + movs r0, 0 + b _080094CE + .align 2, 0 +_08009494: .4byte gUnknown_203ADFA +_08009498: + bl sub_800B1F4 + bl sub_80F86F4 + movs r0, 0x1 + bl sub_80FB128 + bl sub_80FD3A4 + ldr r1, _080094C0 @ =0x00008001 + cmp r0, r1 + beq _080094C4 + bl sub_800B210 + bl sub_80098B8 + bl sub_8000874 + movs r0, 0 + b _080094CE + .align 2, 0 +_080094C0: .4byte 0x00008001 +_080094C4: + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + movs r0, 0x1 +_080094CE: + pop {r1} + bx r1 + thumb_func_end sub_8009480 + + thumb_func_start sub_80094D4 +sub_80094D4: @ 80094D4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + pop {r0} + bx r0 + thumb_func_end sub_80094D4 + + thumb_func_start sub_80094E4 +sub_80094E4: @ 80094E4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldr r4, [sp, 0x18] + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _08009540 @ =gUnknown_8232578 + lsls r1, r5, 4 + movs r2, 0x20 + bl sub_80703EC + ldr r3, _08009544 @ =0x040000d4 + ldr r0, _08009548 @ =gUnknown_8232598 + str r0, [r3] + lsls r2, r7, 14 + lsls r0, r4, 5 + movs r1, 0xC0 + lsls r1, 19 + adds r0, r1 + adds r2, r0 + str r2, [r3, 0x4] + ldr r0, _0800954C @ =0x80001000 + str r0, [r3, 0x8] + ldr r0, [r3, 0x8] + ldr r0, _08009550 @ =gUnknown_3003F70 + str r6, [r0] + str r5, [r0, 0x4] + str r4, [r0, 0x8] + mov r0, r8 + cmp r0, 0x2 + beq _0800956E + cmp r0, 0x2 + bgt _08009554 + cmp r0, 0x1 + beq _0800955C + b _08009590 + .align 2, 0 +_08009540: .4byte gUnknown_8232578 +_08009544: .4byte 0x040000d4 +_08009548: .4byte gUnknown_8232598 +_0800954C: .4byte 0x80001000 +_08009550: .4byte gUnknown_3003F70 +_08009554: + mov r0, r8 + cmp r0, 0x3 + beq _08009580 + b _08009590 +_0800955C: + lsls r1, r6, 8 + movs r0, 0x1 + orrs r1, r0 + lsls r0, r7, 2 + orrs r1, r0 + movs r0, 0xA + bl sub_8000A38 + b _08009590 +_0800956E: + lsls r1, r6, 8 + movs r0, 0x1 + orrs r1, r0 + lsls r0, r7, 2 + orrs r1, r0 + movs r0, 0xC + bl sub_8000A38 + b _08009590 +_08009580: + lsls r1, r6, 8 + movs r0, 0x1 + orrs r1, r0 + lsls r0, r7, 2 + orrs r1, r0 + movs r0, 0xE + bl sub_8000A38 +_08009590: + mov r0, r8 + lsls r4, r0, 2 + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8000A38 + adds r4, 0x12 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_8000A38 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80094E4 + + thumb_func_start sub_80095BC +sub_80095BC: @ 80095BC + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r6, r1, 0 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08009628 @ =gUnknown_8232578 + mov r2, r8 + lsls r1, r2, 4 + movs r2, 0x20 + bl sub_80703EC + ldr r2, _0800962C @ =0x040000d4 + ldr r0, _08009630 @ =gUnknown_8232598 + str r0, [r2] + lsls r0, r5, 14 + movs r1, 0xC0 + lsls r1, 19 + adds r0, r1 + str r0, [r2, 0x4] + ldr r0, _08009634 @ =0x80001000 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + ldr r0, _08009638 @ =gUnknown_3003F70 + str r4, [r0] + mov r1, r8 + str r1, [r0, 0x4] + movs r1, 0 + str r1, [r0, 0x8] + ldr r0, _0800963C @ =gUnknown_8231E20 + adds r6, r0 + ldrb r0, [r6] + lsls r4, 8 + lsls r5, 2 + orrs r4, r5 + adds r1, r4, 0 + bl sub_8000A38 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08009628: .4byte gUnknown_8232578 +_0800962C: .4byte 0x040000d4 +_08009630: .4byte gUnknown_8232598 +_08009634: .4byte 0x80001000 +_08009638: .4byte gUnknown_3003F70 +_0800963C: .4byte gUnknown_8231E20 + thumb_func_end sub_80095BC + + thumb_func_start sub_8009640 +sub_8009640: @ 8009640 + push {r4,lr} + sub sp, 0x4 + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + ldr r0, _080096D4 @ =sub_800978C + bl sub_80006F4 + bl sub_800A294 + ldr r1, _080096D8 @ =gUnknown_202271A + ldr r2, _080096DC @ =0x00001111 + adds r0, r2, 0 + strh r0, [r1] + bl sub_8009804 + ldr r0, _080096E0 @ =gUnknown_30030F0 + ldrh r0, [r0, 0x24] + bl sub_8044EE8 + movs r4, 0 +_08009670: + bl sub_8044EC8 + ldr r1, _080096E4 @ =gUnknown_300500C + ldr r1, [r1] + adds r1, 0xA + adds r1, r4 + strb r0, [r1] + adds r4, 0x1 + cmp r4, 0x3 + ble _08009670 + movs r4, 0 + str r4, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0 + bl sub_80094E4 + movs r1, 0xAA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080096E8 @ =sub_80094D4 + movs r1, 0 + bl sub_807741C + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + ldr r0, _080096EC @ =gUnknown_3000E58 + str r4, [r0] + bl sub_8009708 + ldr r0, _080096F0 @ =sub_800A74C + movs r1, 0 + bl sub_807741C + ldr r0, _080096F4 @ =sub_8009A8C + bl sub_8000544 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080096D4: .4byte sub_800978C +_080096D8: .4byte gUnknown_202271A +_080096DC: .4byte 0x00001111 +_080096E0: .4byte gUnknown_30030F0 +_080096E4: .4byte gUnknown_300500C +_080096E8: .4byte sub_80094D4 +_080096EC: .4byte gUnknown_3000E58 +_080096F0: .4byte sub_800A74C +_080096F4: .4byte sub_8009A8C + thumb_func_end sub_8009640 + + thumb_func_start sub_80096F8 +sub_80096F8: @ 80096F8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08009704 @ =gUnknown_2022720 + strh r0, [r1, 0x18] + bx lr + .align 2, 0 +_08009704: .4byte gUnknown_2022720 + thumb_func_end sub_80096F8 + + thumb_func_start sub_8009708 +sub_8009708: @ 8009708 + push {r4,r5,lr} + ldr r5, _08009774 @ =gUnknown_2022720 + ldr r4, _08009778 @ =gUnknown_300500C + ldr r1, [r4] + ldrb r2, [r1, 0xA] + ldrb r0, [r1, 0xB] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0xD] + lsls r0, 24 + orrs r2, r0 + str r2, [r5, 0x4] + adds r0, r5, 0 + adds r0, 0x8 + bl sub_8008D84 + ldr r0, [r4] + ldrb r0, [r0, 0x8] + strb r0, [r5, 0x13] + ldr r0, _0800977C @ =gUnknown_202271A + ldrh r0, [r0] + str r0, [r5, 0x14] + ldr r0, _08009780 @ =gUnknown_81E9F11 + ldrb r0, [r0] + strh r0, [r5, 0x1A] + ldr r0, _08009784 @ =gUnknown_81E9F10 + ldrb r0, [r0] + movs r2, 0x80 + lsls r2, 7 + adds r1, r2, 0 + adds r0, r1 + strh r0, [r5] + movs r0, 0x80 + lsls r0, 8 + strh r0, [r5, 0x2] + bl sub_806E25C + strb r0, [r5, 0x10] + ldr r0, _08009788 @ =0x00000844 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0800976E + ldrb r0, [r5, 0x10] + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x10] +_0800976E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08009774: .4byte gUnknown_2022720 +_08009778: .4byte gUnknown_300500C +_0800977C: .4byte gUnknown_202271A +_08009780: .4byte gUnknown_81E9F11 +_08009784: .4byte gUnknown_81E9F10 +_08009788: .4byte 0x00000844 + thumb_func_end sub_8009708 + + thumb_func_start sub_800978C +sub_800978C: @ 800978C + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_800978C + + thumb_func_start sub_80097A0 +sub_80097A0: @ 80097A0 + push {lr} + ldr r3, _080097C0 @ =gUnknown_2022718 + ldr r1, _080097C4 @ =gUnknown_3003F50 + ldr r2, _080097C8 @ =0x0000efff + adds r0, r1, 0 + adds r0, 0xE +_080097AC: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _080097AC + movs r0, 0x1 + strb r0, [r3] + bl sub_800B2F4 + pop {r0} + bx r0 + .align 2, 0 +_080097C0: .4byte gUnknown_2022718 +_080097C4: .4byte gUnknown_3003F50 +_080097C8: .4byte 0x0000efff + thumb_func_end sub_80097A0 + + thumb_func_start sub_80097CC +sub_80097CC: @ 80097CC + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080097FC @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080097F6 + ldr r1, _08009800 @ =gUnknown_3003F84 + movs r0, 0x1 + strb r0, [r1] + adds r0, r2, 0 + bl sub_8077508 +_080097F6: + pop {r0} + bx r0 + .align 2, 0 +_080097FC: .4byte gUnknown_3005090 +_08009800: .4byte gUnknown_3003F84 + thumb_func_end sub_80097CC + + thumb_func_start sub_8009804 +sub_8009804: @ 8009804 + push {r4-r6,lr} + ldr r0, _0800984C @ =gUnknown_3003F3C + ldrb r4, [r0] + cmp r4, 0 + bne _08009878 + bl sub_800B388 + bl sub_80097A0 + ldr r1, _08009850 @ =gUnknown_3003F80 + ldr r0, _08009854 @ =sub_800A720 + str r0, [r1] + ldr r0, _08009858 @ =gUnknown_300357C + strb r4, [r0] + ldr r0, _0800985C @ =gUnknown_3003EAC + strb r4, [r0] + ldr r0, _08009860 @ =gUnknown_3003F38 + strb r4, [r0] + bl sub_800A550 + bl sub_800A294 + ldr r0, _08009864 @ =gUnknown_3000E4C + str r4, [r0] + ldr r0, _08009868 @ =gUnknown_3003F28 + strb r4, [r0] + ldr r0, _0800986C @ =gUnknown_3003F24 + strb r4, [r0] + ldr r0, _08009870 @ =gUnknown_3003F34 + strh r4, [r0] + ldr r0, _08009874 @ =sub_80097CC + movs r1, 0x2 + bl sub_807741C + b _0800987C + .align 2, 0 +_0800984C: .4byte gUnknown_3003F3C +_08009850: .4byte gUnknown_3003F80 +_08009854: .4byte sub_800A720 +_08009858: .4byte gUnknown_300357C +_0800985C: .4byte gUnknown_3003EAC +_08009860: .4byte gUnknown_3003F38 +_08009864: .4byte gUnknown_3000E4C +_08009868: .4byte gUnknown_3003F28 +_0800986C: .4byte gUnknown_3003F24 +_08009870: .4byte gUnknown_3003F34 +_08009874: .4byte sub_80097CC +_08009878: + bl sub_80F86F4 +_0800987C: + ldr r1, _080098A8 @ =gUnknown_3003F64 + movs r0, 0 + strb r0, [r1] + movs r1, 0 + ldr r6, _080098AC @ =gUnknown_3003EB8 + movs r2, 0 + movs r5, 0x1 + ldr r4, _080098B0 @ =gUnknown_3003F30 + ldr r3, _080098B4 @ =gUnknown_3003F2C +_0800988E: + adds r0, r1, r6 + strb r5, [r0] + adds r0, r1, r4 + strb r2, [r0] + adds r0, r1, r3 + strb r2, [r0] + adds r1, 0x1 + cmp r1, 0x3 + ble _0800988E + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080098A8: .4byte gUnknown_3003F64 +_080098AC: .4byte gUnknown_3003EB8 +_080098B0: .4byte gUnknown_3003F30 +_080098B4: .4byte gUnknown_3003F2C + thumb_func_end sub_8009804 + + thumb_func_start sub_80098B8 +sub_80098B8: @ 80098B8 + push {r4,lr} + ldr r0, _080098DC @ =gUnknown_3003F64 + movs r4, 0 + strb r4, [r0] + ldr r0, _080098E0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _080098CC + bl sub_80F8DC0 +_080098CC: + ldr r0, _080098E4 @ =gUnknown_2022718 + strb r4, [r0] + bl sub_800B29C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080098DC: .4byte gUnknown_3003F64 +_080098E0: .4byte gUnknown_3003F3C +_080098E4: .4byte gUnknown_2022718 + thumb_func_end sub_80098B8 + + thumb_func_start sub_80098E8 +sub_80098E8: @ 80098E8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r5, _080099AC @ =gUnknown_3000E5C + ldr r4, _080099B0 @ =gUnknown_3000E08 + ldrb r0, [r5] + ldrh r1, [r4] + cmp r0, r1 + beq _0800990C + ldrh r0, [r4] + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x2 + bl sub_800A684 + ldrh r0, [r4] + strb r0, [r5] +_0800990C: + movs r5, 0 + ldr r7, _080099B4 @ =gUnknown_3000E18 +_08009910: + ldr r0, _080099B8 @ =gUnknown_3000E60 + adds r6, r5, r0 + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r4, r0, r7 + ldrb r0, [r6] + ldrh r1, [r4] + cmp r0, r1 + beq _08009938 + ldrh r0, [r4] + adds r2, r5, 0x4 + lsls r2, 24 + lsrs r2, 24 + movs r1, 0x2 + movs r3, 0x2 + bl sub_800A684 + ldrh r0, [r4] + strb r0, [r6] +_08009938: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _08009910 + bl sub_800A4EC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0xF + bne _0800999E + movs r5, 0 + ldr r0, _080099B4 @ =gUnknown_3000E18 + mov r9, r0 + ldr r1, _080099BC @ =0x00000342 + mov r8, r1 +_08009958: + adds r0, r7, 0 + asrs r0, r5 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08009994 + lsls r0, r5, 8 + ldr r1, _080099C0 @ =gUnknown_2022118 + adds r0, r1 + lsls r4, r5, 1 + adds r1, r4, r5 + lsls r1, 2 + add r1, r9 + ldrh r1, [r1, 0x2] + bl sub_800A5E4 + ldr r1, _080099C4 @ =gUnknown_3003F88 + adds r4, r1 + movs r6, 0 + strh r0, [r4] + adds r0, r5, 0 + bl sub_800A588 + ldrh r0, [r4] + cmp r0, r8 + beq _08009994 + ldr r0, _080099C8 @ =gUnknown_2022110 + strb r6, [r0] + ldr r0, _080099CC @ =gUnknown_2022111 + strb r6, [r0] +_08009994: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _08009958 +_0800999E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080099AC: .4byte gUnknown_3000E5C +_080099B0: .4byte gUnknown_3000E08 +_080099B4: .4byte gUnknown_3000E18 +_080099B8: .4byte gUnknown_3000E60 +_080099BC: .4byte 0x00000342 +_080099C0: .4byte gUnknown_2022118 +_080099C4: .4byte gUnknown_3003F88 +_080099C8: .4byte gUnknown_2022110 +_080099CC: .4byte gUnknown_2022111 + thumb_func_end sub_80098E8 + + thumb_func_start sub_80099D0 +sub_80099D0: @ 80099D0 + push {r4,r5,lr} + sub sp, 0x4 + ldr r4, _08009A70 @ =gUnknown_30030F0 + ldrh r1, [r4, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080099E6 + ldr r1, _08009A74 @ =gUnknown_3003F84 + movs r0, 0x1 + strb r0, [r1] +_080099E6: + ldrh r1, [r4, 0x2C] + movs r5, 0x2 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080099FA + ldr r0, _08009A78 @ =gHeap + 0x4000 + ldr r1, _08009A7C @ =0x00002004 + bl sub_800A2A8 +_080099FA: + ldrh r1, [r4, 0x2E] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _08009A16 + movs r0, 0x1 + negs r0, r0 + str r5, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_08009A16: + ldrh r1, [r4, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08009A26 + movs r0, 0x1 + bl sub_800B09C +_08009A26: + ldrh r1, [r4, 0x2E] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _08009A38 + movs r0, 0x1 + bl sub_80DA364 +_08009A38: + ldrh r1, [r4, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08009A46 + bl sub_800AAC0 +_08009A46: + ldr r0, _08009A80 @ =gUnknown_2022110 + ldrb r0, [r0] + cmp r0, 0 + beq _08009A66 + ldr r2, [r4, 0x24] + ldr r0, _08009A84 @ =gUnknown_300357C + ldrb r1, [r0] + ldr r0, _08009A88 @ =gUnknown_3003F80 + ldr r0, [r0] + cmp r0, 0 + bne _08009A60 + movs r0, 0x10 + orrs r1, r0 +_08009A60: + adds r0, r2, 0 + bl sub_800A890 +_08009A66: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08009A70: .4byte gUnknown_30030F0 +_08009A74: .4byte gUnknown_3003F84 +_08009A78: .4byte gHeap + 0x4000 +_08009A7C: .4byte 0x00002004 +_08009A80: .4byte gUnknown_2022110 +_08009A84: .4byte gUnknown_300357C +_08009A88: .4byte gUnknown_3003F80 + thumb_func_end sub_80099D0 + + thumb_func_start sub_8009A8C +sub_8009A8C: @ 8009A8C + push {lr} + bl sub_80099D0 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80098E8 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8009A8C + + thumb_func_start sub_8009AB0 +sub_8009AB0: @ 8009AB0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _08009AC0 @ =gUnknown_2022718 + ldrb r0, [r0] + cmp r0, 0 + bne _08009AC4 + movs r0, 0 + b _08009B0C + .align 2, 0 +_08009AC0: .4byte gUnknown_2022718 +_08009AC4: + movs r1, 0 + ldr r5, _08009B14 @ =gUnknown_3003EC4 + ldr r3, _08009B18 @ =gUnknown_3003F50 + movs r2, 0 +_08009ACC: + lsls r0, r1, 1 + adds r0, r3 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x7 + bls _08009ACC + ldrh r0, [r4] + strh r0, [r5] + ldr r0, _08009B1C @ =gUnknown_3003F20 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08009B08 + ldr r0, _08009B20 @ =0x04000128 + ldr r0, [r0] + lsls r0, 26 + lsrs r0, 30 + bl sub_8009B70 + ldr r0, _08009B24 @ =gUnknown_3003F80 + ldr r0, [r0] + cmp r0, 0 + beq _08009B04 + bl _call_via_r0 +_08009B04: + bl sub_800AC58 +_08009B08: + ldr r0, _08009B1C @ =gUnknown_3003F20 + ldrh r0, [r0] +_08009B0C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08009B14: .4byte gUnknown_3003EC4 +_08009B18: .4byte gUnknown_3003F50 +_08009B1C: .4byte gUnknown_3003F20 +_08009B20: .4byte 0x04000128 +_08009B24: .4byte gUnknown_3003F80 + thumb_func_end sub_8009AB0 + + thumb_func_start sub_8009B28 +sub_8009B28: @ 8009B28 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + ldr r1, _08009B3C @ =gUnknown_3003EB8 + adds r0, r1 + strb r5, [r0] + movs r4, 0 + adds r6, r1, 0 + b _08009B48 + .align 2, 0 +_08009B3C: .4byte gUnknown_3003EB8 +_08009B40: + adds r0, r4, r6 + ldrb r0, [r0] + adds r5, r0 + adds r4, 0x1 +_08009B48: + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _08009B40 + cmp r5, 0 + bne _08009B64 + ldr r1, _08009B6C @ =gUnknown_3003F64 + ldrb r0, [r1] + cmp r0, 0 + bne _08009B64 + movs r0, 0x1 + strb r0, [r1] +_08009B64: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08009B6C: .4byte gUnknown_3003F64 + thumb_func_end sub_8009B28 + + thumb_func_start sub_8009B70 +sub_8009B70: @ 8009B70 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r6, 0 +_08009B7E: + ldr r0, _08009BC8 @ =gUnknown_3003E60 + lsls r1, r6, 1 + adds r3, r1, r0 + movs r0, 0 + strh r0, [r3] + lsls r4, r6, 4 + ldr r5, _08009BCC @ =gUnknown_3003ED0 + adds r2, r4, r5 + ldrh r0, [r2] + mov r12, r1 + adds r7, r6, 0x1 + str r7, [sp] + cmp r0, 0 + bne _08009B9C + b _08009E3E +_08009B9C: + ldrh r1, [r2] + ldr r0, _08009BD0 @ =0x00005fff + cmp r1, r0 + bne _08009BA6 + b _08009DF0 +_08009BA6: + cmp r1, r0 + bgt _08009BF4 + ldr r0, _08009BD4 @ =0x00004444 + cmp r1, r0 + bne _08009BB2 + b _08009E34 +_08009BB2: + cmp r1, r0 + bgt _08009BE0 + ldr r0, _08009BD8 @ =0x00002222 + cmp r1, r0 + beq _08009C38 + ldr r0, _08009BDC @ =0x00002ffe + cmp r1, r0 + bne _08009BC4 + b _08009DF8 +_08009BC4: + b _08009E3E + .align 2, 0 +_08009BC8: .4byte gUnknown_3003E60 +_08009BCC: .4byte gUnknown_3003ED0 +_08009BD0: .4byte 0x00005fff +_08009BD4: .4byte 0x00004444 +_08009BD8: .4byte 0x00002222 +_08009BDC: .4byte 0x00002ffe +_08009BE0: + ldr r0, _08009BF0 @ =0x00005555 + cmp r1, r0 + beq _08009C88 + adds r0, 0x11 + cmp r1, r0 + beq _08009C88 + b _08009E3E + .align 2, 0 +_08009BF0: .4byte 0x00005555 +_08009BF4: + ldr r0, _08009C10 @ =0x0000bbbb + cmp r1, r0 + beq _08009C94 + cmp r1, r0 + bgt _08009C1C + ldr r0, _08009C14 @ =0x00008888 + cmp r1, r0 + beq _08009CC0 + ldr r0, _08009C18 @ =0x0000aaaa + cmp r1, r0 + bne _08009C0C + b _08009E08 +_08009C0C: + b _08009E3E + .align 2, 0 +_08009C10: .4byte 0x0000bbbb +_08009C14: .4byte 0x00008888 +_08009C18: .4byte 0x0000aaaa +_08009C1C: + ldr r0, _08009C30 @ =0x0000cafe + cmp r1, r0 + bne _08009C24 + b _08009E34 +_08009C24: + ldr r0, _08009C34 @ =0x0000cccc + cmp r1, r0 + bne _08009C2C + b _08009E0E +_08009C2C: + b _08009E3E + .align 2, 0 +_08009C30: .4byte 0x0000cafe +_08009C34: .4byte 0x0000cccc +_08009C38: + bl sub_8009708 + ldr r0, _08009C7C @ =gUnknown_3003E70 + adds r2, r0, 0 + adds r2, 0x10 + ldr r1, _08009C80 @ =gUnknown_2022720 + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldr r1, [r1] + str r1, [r2] + ldr r4, _08009C84 @ =gUnknown_82345C0 + adds r2, r0, 0 + adds r1, r4, 0 + ldm r1!, {r5-r7} + stm r2!, {r5-r7} + ldrh r3, [r1] + strh r3, [r2] + ldrb r1, [r1, 0x2] + strb r1, [r2, 0x2] + adds r1, r0, 0 + adds r1, 0x2C + ldm r4!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldrh r2, [r4] + strh r2, [r1] + ldrb r2, [r4, 0x2] + strb r2, [r1, 0x2] + movs r1, 0x3C + bl sub_800A2A8 + b _08009E3E + .align 2, 0 +_08009C7C: .4byte gUnknown_3003E70 +_08009C80: .4byte gUnknown_2022720 +_08009C84: .4byte gUnknown_82345C0 +_08009C88: + ldr r1, _08009C90 @ =gUnknown_3003F28 + movs r0, 0x1 + strb r0, [r1] + b _08009E3E + .align 2, 0 +_08009C90: .4byte gUnknown_3003F28 +_08009C94: + mov r7, r12 + adds r1, r7, r6 + lsls r1, 2 + ldr r0, _08009CB8 @ =gUnknown_3000E18 + adds r1, r0 + movs r2, 0 + strh r2, [r1] + ldr r0, _08009CBC @ =gUnknown_3003ED0 + adds r0, 0x2 + adds r0, r4, r0 + ldrh r0, [r0] + strh r0, [r1, 0x2] + ldr r0, _08009CBC @ =gUnknown_3003ED0 + adds r0, 0x4 + adds r0, r4, r0 + ldrh r0, [r0] + strb r0, [r1, 0x9] + b _08009E3E + .align 2, 0 +_08009CB8: .4byte gUnknown_3000E18 +_08009CBC: .4byte gUnknown_3003ED0 +_08009CC0: + mov r3, r12 + adds r0, r3, r6 + lsls r0, 2 + ldr r5, _08009D04 @ =gUnknown_3000E18 + adds r3, r0, r5 + ldrh r1, [r3, 0x2] + movs r0, 0x80 + lsls r0, 1 + adds r7, r5, 0 + mov r10, r7 + cmp r1, r0 + bls _08009D10 + ldr r0, _08009D08 @ =gUnknown_201C000 + mov r8, r0 + movs r2, 0 + adds r5, r3, 0 + ldr r7, _08009D0C @ =gUnknown_3003ED0 + adds r3, r4, 0 +_08009CE4: + ldrh r1, [r5] + lsrs r1, 1 + adds r1, r2 + lsls r1, 1 + add r1, r8 + adds r2, 0x1 + lsls r0, r2, 1 + adds r0, r3 + adds r0, r7 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, 16 + lsrs r2, 16 + cmp r2, 0x6 + bls _08009CE4 + b _08009D40 + .align 2, 0 +_08009D04: .4byte gUnknown_3000E18 +_08009D08: .4byte gUnknown_201C000 +_08009D0C: .4byte gUnknown_3003ED0 +_08009D10: + movs r2, 0 + ldr r1, _08009DC4 @ =gUnknown_2022118 + mov r9, r1 + adds r7, r3, 0 + ldr r3, _08009DC8 @ =gUnknown_3003ED0 + mov r8, r3 + lsls r5, r6, 8 + adds r3, r4, 0 +_08009D20: + ldrh r1, [r7] + lsrs r1, 1 + adds r1, r2 + lsls r1, 1 + adds r1, r5 + add r1, r9 + adds r2, 0x1 + lsls r0, r2, 1 + adds r0, r3 + add r0, r8 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, 16 + lsrs r2, 16 + cmp r2, 0x6 + bls _08009D20 +_08009D40: + mov r4, r12 + adds r1, r4, r6 + lsls r1, 2 + add r1, r10 + ldrh r0, [r1] + adds r0, 0xE + movs r3, 0 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1, 0x2] + cmp r0, r1 + bcc _08009E3E + ldr r0, _08009DCC @ =gUnknown_3003EB8 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08009DE6 + lsls r1, r6, 8 + ldr r0, _08009DC4 @ =gUnknown_2022118 + adds r1, r0 + mov r8, r1 + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 2 + ldr r1, _08009DD0 @ =gUnknown_202273C + adds r2, r0, r1 + adds r1, r2, 0 + mov r0, r8 + adds r0, 0x10 + ldm r0!, {r4,r5,r7} + stm r1!, {r4,r5,r7} + ldm r0!, {r4,r5,r7} + stm r1!, {r4,r5,r7} + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r2] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08009D9A + strb r3, [r2, 0x12] + strb r3, [r2, 0x11] + strb r3, [r2, 0x10] +_08009D9A: + adds r0, r2, 0 + bl sub_800B284 + ldr r5, _08009DD4 @ =gUnknown_82345C0 + mov r0, r8 + adds r1, r5, 0 + bl strcmp + cmp r0, 0 + bne _08009DBC + mov r0, r8 + adds r0, 0x2C + adds r1, r5, 0 + bl strcmp + cmp r0, 0 + beq _08009DDC +_08009DBC: + ldr r0, _08009DD8 @ =sub_800ACD4 + bl sub_8000544 + b _08009E3E + .align 2, 0 +_08009DC4: .4byte gUnknown_2022118 +_08009DC8: .4byte gUnknown_3003ED0 +_08009DCC: .4byte gUnknown_3003EB8 +_08009DD0: .4byte gUnknown_202273C +_08009DD4: .4byte gUnknown_82345C0 +_08009DD8: .4byte sub_800ACD4 +_08009DDC: + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_8009B28 + b _08009E3E +_08009DE6: + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_800A524 + b _08009E3E +_08009DF0: + ldr r0, _08009DF4 @ =gUnknown_3003F30 + b _08009DFA + .align 2, 0 +_08009DF4: .4byte gUnknown_3003F30 +_08009DF8: + ldr r0, _08009E04 @ =gUnknown_3003F2C +_08009DFA: + adds r0, r6, r0 + movs r1, 0x1 + strb r1, [r0] + b _08009E3E + .align 2, 0 +_08009E04: .4byte gUnknown_3003F2C +_08009E08: + bl sub_800A3CC + b _08009E3E +_08009E0E: + ldr r3, _08009E2C @ =gUnknown_8234598 + ldr r0, _08009E30 @ =gUnknown_3003ED0 + adds r0, 0x2 + adds r0, r4, r0 + ldrh r2, [r0] + lsls r2, 3 + adds r0, r2, r3 + ldr r1, [r0] + adds r3, 0x4 + adds r2, r3 + ldrh r2, [r2] + movs r0, 0 + bl sub_800A448 + b _08009E3E + .align 2, 0 +_08009E2C: .4byte gUnknown_8234598 +_08009E30: .4byte gUnknown_3003ED0 +_08009E34: + ldr r0, _08009E5C @ =gUnknown_3003ED0 + adds r0, 0x2 + adds r0, r4, r0 + ldrh r0, [r0] + strh r0, [r3] +_08009E3E: + ldr r5, [sp] + lsls r0, r5, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bhi _08009E4A + b _08009B7E +_08009E4A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08009E5C: .4byte gUnknown_3003ED0 + thumb_func_end sub_8009B70 + + thumb_func_start sub_8009E60 +sub_8009E60: @ 8009E60 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08009E8C @ =0x00006666 + cmp r2, r0 + beq _08009F30 + cmp r2, r0 + bgt _08009EC0 + ldr r0, _08009E90 @ =0x00004444 + cmp r2, r0 + beq _08009F1C + cmp r2, r0 + bgt _08009E9C + ldr r0, _08009E94 @ =0x00002222 + cmp r2, r0 + beq _08009F08 + ldr r0, _08009E98 @ =0x00002ffe +_08009E82: + cmp r2, r0 + bne _08009E88 + b _08009FB4 +_08009E88: + b _08009FD6 + .align 2, 0 +_08009E8C: .4byte 0x00006666 +_08009E90: .4byte 0x00004444 +_08009E94: .4byte 0x00002222 +_08009E98: .4byte 0x00002ffe +_08009E9C: + ldr r0, _08009EAC @ =0x00005566 + cmp r2, r0 + bne _08009EA4 + b _08009FB4 +_08009EA4: + cmp r2, r0 + bgt _08009EB0 + subs r0, 0x11 + b _08009E82 + .align 2, 0 +_08009EAC: .4byte 0x00005566 +_08009EB0: + ldr r0, _08009EBC @ =0x00005fff + cmp r2, r0 + bne _08009EB8 + b _08009FA0 +_08009EB8: + b _08009FD6 + .align 2, 0 +_08009EBC: .4byte 0x00005fff +_08009EC0: + ldr r0, _08009ED4 @ =0x0000aaab + cmp r2, r0 + beq _08009F78 + cmp r2, r0 + bgt _08009EE0 + ldr r0, _08009ED8 @ =0x00007777 + cmp r2, r0 + beq _08009F3C + ldr r0, _08009EDC @ =0x0000aaaa + b _08009E82 + .align 2, 0 +_08009ED4: .4byte 0x0000aaab +_08009ED8: .4byte 0x00007777 +_08009EDC: .4byte 0x0000aaaa +_08009EE0: + ldr r0, _08009EF4 @ =0x0000cafe + cmp r2, r0 + beq _08009FC0 + cmp r2, r0 + bgt _08009EFC + ldr r0, _08009EF8 @ =0x0000bbbb + cmp r2, r0 + beq _08009F5C + b _08009FD6 + .align 2, 0 +_08009EF4: .4byte 0x0000cafe +_08009EF8: .4byte 0x0000bbbb +_08009EFC: + ldr r0, _08009F04 @ =0x0000cccc + cmp r2, r0 + beq _08009F8C + b _08009FD6 + .align 2, 0 +_08009F04: .4byte 0x0000cccc +_08009F08: + ldr r0, _08009F14 @ =gUnknown_3003F50 + strh r2, [r0] + ldr r1, _08009F18 @ =gUnknown_202271A + ldrh r1, [r1] + b _08009FD4 + .align 2, 0 +_08009F14: .4byte gUnknown_3003F50 +_08009F18: .4byte gUnknown_202271A +_08009F1C: + ldr r0, _08009F28 @ =gUnknown_3003F50 + strh r2, [r0] + ldr r1, _08009F2C @ =gUnknown_30030F0 + ldrh r1, [r1, 0x2C] + b _08009FD4 + .align 2, 0 +_08009F28: .4byte gUnknown_3003F50 +_08009F2C: .4byte gUnknown_30030F0 +_08009F30: + ldr r0, _08009F38 @ =gUnknown_3003F50 + movs r1, 0 + b _08009FD2 + .align 2, 0 +_08009F38: .4byte gUnknown_3003F50 +_08009F3C: + ldr r0, _08009F58 @ =gUnknown_3003F50 + strh r2, [r0] + movs r1, 0 + adds r3, r0, 0 + movs r2, 0xEE +_08009F46: + adds r1, 0x1 + lsls r0, r1, 1 + adds r0, r3 + strh r2, [r0] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x4 + bls _08009F46 + b _08009FD6 + .align 2, 0 +_08009F58: .4byte gUnknown_3003F50 +_08009F5C: + ldr r1, _08009F70 @ =gUnknown_3003F50 + strh r2, [r1] + ldr r2, _08009F74 @ =gUnknown_3000E08 + ldrh r0, [r2, 0x2] + strh r0, [r1, 0x2] + ldrb r0, [r2, 0x9] + adds r0, 0x80 + strh r0, [r1, 0x4] + b _08009FD6 + .align 2, 0 +_08009F70: .4byte gUnknown_3003F50 +_08009F74: .4byte gUnknown_3000E08 +_08009F78: + ldr r0, _08009F84 @ =gUnknown_3003F50 + strh r2, [r0] + ldr r1, _08009F88 @ =gUnknown_203AD30 + ldrh r1, [r1] + b _08009FD4 + .align 2, 0 +_08009F84: .4byte gUnknown_3003F50 +_08009F88: .4byte gUnknown_203AD30 +_08009F8C: + ldr r0, _08009F98 @ =gUnknown_3003F50 + strh r2, [r0] + ldr r1, _08009F9C @ =gUnknown_3003F90 + ldrb r1, [r1] + b _08009FD4 + .align 2, 0 +_08009F98: .4byte gUnknown_3003F50 +_08009F9C: .4byte gUnknown_3003F90 +_08009FA0: + ldr r0, _08009FAC @ =gUnknown_3003F50 + strh r2, [r0] + ldr r1, _08009FB0 @ =gUnknown_3003F34 + ldrh r1, [r1] + b _08009FD4 + .align 2, 0 +_08009FAC: .4byte gUnknown_3003F50 +_08009FB0: .4byte gUnknown_3003F34 +_08009FB4: + ldr r0, _08009FBC @ =gUnknown_3003F50 + strh r2, [r0] + b _08009FD6 + .align 2, 0 +_08009FBC: .4byte gUnknown_3003F50 +_08009FC0: + ldr r0, _08009FDC @ =gUnknown_3005028 + ldrh r1, [r0] + cmp r1, 0 + beq _08009FD6 + ldr r0, _08009FE0 @ =gUnknown_30030E4 + ldrb r0, [r0] + cmp r0, 0 + bne _08009FD6 + ldr r0, _08009FE4 @ =gUnknown_3003F50 +_08009FD2: + strh r2, [r0] +_08009FD4: + strh r1, [r0, 0x2] +_08009FD6: + pop {r0} + bx r0 + .align 2, 0 +_08009FDC: .4byte gUnknown_3005028 +_08009FE0: .4byte gUnknown_30030E4 +_08009FE4: .4byte gUnknown_3003F50 + thumb_func_end sub_8009E60 + + thumb_func_start sub_8009FE8 +sub_8009FE8: @ 8009FE8 + push {lr} + ldr r0, _0800A000 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08009FF6 + bl sub_80F9828 +_08009FF6: + ldr r1, _0800A004 @ =gUnknown_3003F80 + ldr r0, _0800A008 @ =sub_800A040 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800A000: .4byte gUnknown_3003F3C +_0800A004: .4byte gUnknown_3003F80 +_0800A008: .4byte sub_800A040 + thumb_func_end sub_8009FE8 + + thumb_func_start sub_800A00C +sub_800A00C: @ 800A00C + push {lr} + ldr r0, _0800A01C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0800A020 + bl sub_80F9808 + b _0800A03A + .align 2, 0 +_0800A01C: .4byte gUnknown_3003F3C +_0800A020: + ldr r0, _0800A030 @ =gUnknown_3003F80 + ldr r1, [r0] + ldr r0, _0800A034 @ =sub_800A040 + cmp r1, r0 + beq _0800A038 + movs r0, 0 + b _0800A03A + .align 2, 0 +_0800A030: .4byte gUnknown_3003F80 +_0800A034: .4byte sub_800A040 +_0800A038: + movs r0, 0x1 +_0800A03A: + pop {r1} + bx r1 + thumb_func_end sub_800A00C + + thumb_func_start sub_800A040 +sub_800A040: @ 800A040 + push {lr} + ldr r0, _0800A054 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800A050 + ldr r0, _0800A058 @ =0x0000cafe + bl sub_8009E60 +_0800A050: + pop {r0} + bx r0 + .align 2, 0 +_0800A054: .4byte gUnknown_3003F64 +_0800A058: .4byte 0x0000cafe + thumb_func_end sub_800A040 + + thumb_func_start sub_800A05C +sub_800A05C: @ 800A05C + ldr r1, _0800A064 @ =gUnknown_3003F80 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_0800A064: .4byte gUnknown_3003F80 + thumb_func_end sub_800A05C + + thumb_func_start sub_800A068 +sub_800A068: @ 800A068 + push {lr} + ldr r0, _0800A078 @ =gUnknown_3003F3C + ldrb r1, [r0] + cmp r1, 0 + beq _0800A07C + bl sub_80F985C + b _0800A080 + .align 2, 0 +_0800A078: .4byte gUnknown_3003F3C +_0800A07C: + ldr r0, _0800A084 @ =gUnknown_3003F80 + str r1, [r0] +_0800A080: + pop {r0} + bx r0 + .align 2, 0 +_0800A084: .4byte gUnknown_3003F80 + thumb_func_end sub_800A068 + + thumb_func_start sub_800A088 +sub_800A088: @ 800A088 + push {lr} + ldr r0, _0800A0A0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0800A0A8 + ldr r0, _0800A0A4 @ =gUnknown_3003F20 + ldr r0, [r0] + movs r1, 0x1C + ands r0, r1 + lsrs r0, 2 + b _0800A0B0 + .align 2, 0 +_0800A0A0: .4byte gUnknown_3003F3C +_0800A0A4: .4byte gUnknown_3003F20 +_0800A0A8: + bl sub_80FA4EC + lsls r0, 24 + lsrs r0, 24 +_0800A0B0: + pop {r1} + bx r1 + thumb_func_end sub_800A088 + + thumb_func_start sub_800A0B4 +sub_800A0B4: @ 800A0B4 + push {lr} + ldr r0, _0800A0C8 @ =gUnknown_3000E54 + movs r1, 0 + str r1, [r0] + ldr r0, _0800A0CC @ =gUnknown_202271C + strh r1, [r0] + bl sub_8009804 + pop {r0} + bx r0 + .align 2, 0 +_0800A0C8: .4byte gUnknown_3000E54 +_0800A0CC: .4byte gUnknown_202271C + thumb_func_end sub_800A0B4 + + thumb_func_start sub_800A0D0 +sub_800A0D0: @ 800A0D0 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r7, 0 + ldr r0, _0800A0F8 @ =gUnknown_3003F64 + ldrb r4, [r0] + cmp r4, 0x1 + bne _0800A1C8 + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bgt _0800A0F0 + cmp r0, r6 + ble _0800A100 +_0800A0F0: + ldr r1, _0800A0FC @ =gUnknown_3000E54 + movs r0, 0x6 + str r0, [r1] + b _0800A1E2 + .align 2, 0 +_0800A0F8: .4byte gUnknown_3003F64 +_0800A0FC: .4byte gUnknown_3000E54 +_0800A100: + bl sub_800A088 + lsls r0, 24 + cmp r0, 0 + bne _0800A112 + ldr r0, _0800A11C @ =gUnknown_3003EAC + strb r4, [r0] + bl sub_80098B8 +_0800A112: + movs r6, 0 + ldr r4, _0800A120 @ =gUnknown_202273C + movs r5, 0 + b _0800A138 + .align 2, 0 +_0800A11C: .4byte gUnknown_3003EAC +_0800A120: .4byte gUnknown_202273C +_0800A124: + adds r0, r4, 0 + adds r0, 0x14 + adds r0, r5, r0 + ldr r1, [r0] + ldr r0, [r4, 0x14] + cmp r1, r0 + bne _0800A134 + adds r7, 0x1 +_0800A134: + adds r5, 0x1C + adds r6, 0x1 +_0800A138: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + blt _0800A124 + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r7, r0 + bne _0800A1B8 + ldr r0, _0800A170 @ =gUnknown_202273C + ldr r1, [r0, 0x14] + ldr r0, _0800A174 @ =0x00001133 + cmp r1, r0 + bne _0800A1AC + bl sub_804FB34 + cmp r0, 0x1 + beq _0800A194 + cmp r0, 0x1 + bgt _0800A17C + cmp r0, 0 + beq _0800A188 + ldr r2, _0800A178 @ =gUnknown_3000E54 + b _0800A1E0 + .align 2, 0 +_0800A170: .4byte gUnknown_202273C +_0800A174: .4byte 0x00001133 +_0800A178: .4byte gUnknown_3000E54 +_0800A17C: + cmp r0, 0x2 + beq _0800A1A0 + ldr r2, _0800A184 @ =gUnknown_3000E54 + b _0800A1E0 + .align 2, 0 +_0800A184: .4byte gUnknown_3000E54 +_0800A188: + ldr r1, _0800A190 @ =gUnknown_3000E54 + movs r0, 0x1 + b _0800A1BC + .align 2, 0 +_0800A190: .4byte gUnknown_3000E54 +_0800A194: + ldr r1, _0800A19C @ =gUnknown_3000E54 + movs r0, 0x4 + b _0800A1BC + .align 2, 0 +_0800A19C: .4byte gUnknown_3000E54 +_0800A1A0: + ldr r1, _0800A1A8 @ =gUnknown_3000E54 + movs r0, 0x5 + b _0800A1BC + .align 2, 0 +_0800A1A8: .4byte gUnknown_3000E54 +_0800A1AC: + ldr r1, _0800A1B4 @ =gUnknown_3000E54 + movs r0, 0x1 + b _0800A1BC + .align 2, 0 +_0800A1B4: .4byte gUnknown_3000E54 +_0800A1B8: + ldr r1, _0800A1C4 @ =gUnknown_3000E54 + movs r0, 0x3 +_0800A1BC: + str r0, [r1] + adds r2, r1, 0 + b _0800A1E0 + .align 2, 0 +_0800A1C4: .4byte gUnknown_3000E54 +_0800A1C8: + ldr r0, _0800A1E8 @ =gUnknown_202271C + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] + lsls r1, 16 + movs r0, 0x96 + lsls r0, 18 + ldr r2, _0800A1EC @ =gUnknown_3000E54 + cmp r1, r0 + bls _0800A1E0 + movs r0, 0x2 + str r0, [r2] +_0800A1E0: + ldrb r0, [r2] +_0800A1E2: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800A1E8: .4byte gUnknown_202271C +_0800A1EC: .4byte gUnknown_3000E54 + thumb_func_end sub_800A0D0 + + thumb_func_start sub_800A1F0 +sub_800A1F0: @ 800A1F0 + push {r4-r6,lr} + movs r6, 0 + movs r4, 0 + ldr r5, _0800A1FC @ =gUnknown_202273C + b _0800A220 + .align 2, 0 +_0800A1FC: .4byte gUnknown_202273C +_0800A200: + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x14 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r5, 0x14] + cmp r1, r0 + bne _0800A21A + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0800A21A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0800A220: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bcc _0800A200 + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _0800A244 + movs r2, 0x1 + ldr r0, _0800A240 @ =gUnknown_3000E54 + str r2, [r0] + b _0800A24C + .align 2, 0 +_0800A240: .4byte gUnknown_3000E54 +_0800A244: + movs r2, 0 + ldr r1, _0800A254 @ =gUnknown_3000E54 + movs r0, 0x3 + str r0, [r1] +_0800A24C: + adds r0, r2, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0800A254: .4byte gUnknown_3000E54 + thumb_func_end sub_800A1F0 + + thumb_func_start sub_800A258 +sub_800A258: @ 800A258 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0800A26C @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r2, 0x4 + adds r1, r2 + ldr r0, [r1] + bx lr + .align 2, 0 +_0800A26C: .4byte gUnknown_202273C + thumb_func_end sub_800A258 + + thumb_func_start sub_800A270 +sub_800A270: @ 800A270 + push {r4,r5,lr} + ldr r5, _0800A290 @ =gUnknown_202273C + movs r4, 0x4 +_0800A276: + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x1C + bl memset + adds r5, 0x1C + subs r4, 0x1 + cmp r4, 0 + bge _0800A276 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800A290: .4byte gUnknown_202273C + thumb_func_end sub_800A270 + + thumb_func_start sub_800A294 +sub_800A294: @ 800A294 + ldr r1, _0800A2A4 @ =gUnknown_3000E08 + movs r0, 0 + strb r0, [r1, 0x8] + strh r0, [r1] + strh r0, [r1, 0x2] + str r0, [r1, 0x4] + bx lr + .align 2, 0 +_0800A2A4: .4byte gUnknown_3000E08 + thumb_func_end sub_800A294 + + thumb_func_start sub_800A2A8 +sub_800A2A8: @ 800A2A8 + push {r4-r7,lr} + adds r7, r0, 0 + adds r6, r1, 0 + ldr r4, _0800A2BC @ =gUnknown_3000E08 + ldrb r5, [r4, 0x8] + cmp r5, 0 + beq _0800A2C0 + movs r0, 0 + b _0800A2FE + .align 2, 0 +_0800A2BC: .4byte gUnknown_3000E08 +_0800A2C0: + bl sub_800A404 + strb r0, [r4, 0x9] + movs r0, 0x1 + strb r0, [r4, 0x8] + strh r6, [r4, 0x2] + strh r5, [r4] + adds r0, 0xFF + cmp r6, r0 + bls _0800A2D8 + str r7, [r4, 0x4] + b _0800A2EA +_0800A2D8: + ldr r5, _0800A304 @ =gUnknown_2022618 + cmp r7, r5 + beq _0800A2E8 + adds r0, r5, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl memcpy +_0800A2E8: + str r5, [r4, 0x4] +_0800A2EA: + ldr r0, _0800A308 @ =0x0000bbbb + bl sub_8009E60 + ldr r1, _0800A30C @ =gUnknown_3003F80 + ldr r0, _0800A310 @ =sub_800A318 + str r0, [r1] + ldr r1, _0800A314 @ =gUnknown_3000E48 + movs r0, 0 + str r0, [r1] + movs r0, 0x1 +_0800A2FE: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800A304: .4byte gUnknown_2022618 +_0800A308: .4byte 0x0000bbbb +_0800A30C: .4byte gUnknown_3003F80 +_0800A310: .4byte sub_800A318 +_0800A314: .4byte gUnknown_3000E48 + thumb_func_end sub_800A2A8 + + thumb_func_start sub_800A318 +sub_800A318: @ 800A318 + push {lr} + ldr r1, _0800A330 @ =gUnknown_3000E48 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + cmp r0, 0x2 + bls _0800A32C + ldr r1, _0800A334 @ =gUnknown_3003F80 + ldr r0, _0800A338 @ =sub_800A33C + str r0, [r1] +_0800A32C: + pop {r0} + bx r0 + .align 2, 0 +_0800A330: .4byte gUnknown_3000E48 +_0800A334: .4byte gUnknown_3003F80 +_0800A338: .4byte sub_800A33C + thumb_func_end sub_800A318 + + thumb_func_start sub_800A33C +sub_800A33C: @ 800A33C + push {r4-r6,lr} + ldr r0, _0800A38C @ =gUnknown_3000E08 + ldr r5, [r0, 0x4] + ldr r2, _0800A390 @ =gUnknown_3003F50 + ldr r1, _0800A394 @ =0x00008888 + strh r1, [r2] + movs r3, 0 + adds r4, r0, 0 + adds r6, r4, 0 + adds r2, 0x2 +_0800A350: + lsls r0, r3, 1 + ldrh r1, [r6] + adds r0, r1 + adds r0, r5 + ldrb r1, [r0, 0x1] + lsls r1, 8 + ldrb r0, [r0] + orrs r0, r1 + strh r0, [r2] + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x6 + ble _0800A350 + ldrh r0, [r4] + adds r0, 0xE + strh r0, [r4] + ldrh r1, [r4, 0x2] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0800A384 + movs r0, 0 + strb r0, [r4, 0x8] + ldr r1, _0800A398 @ =gUnknown_3003F80 + ldr r0, _0800A39C @ =sub_800A3A0 + str r0, [r1] +_0800A384: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800A38C: .4byte gUnknown_3000E08 +_0800A390: .4byte gUnknown_3003F50 +_0800A394: .4byte 0x00008888 +_0800A398: .4byte gUnknown_3003F80 +_0800A39C: .4byte sub_800A3A0 + thumb_func_end sub_800A33C + + thumb_func_start sub_800A3A0 +sub_800A3A0: @ 800A3A0 + ldr r1, _0800A3A8 @ =gUnknown_3003F80 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_0800A3A8: .4byte gUnknown_3003F80 + thumb_func_end sub_800A3A0 + + thumb_func_start sub_800A3AC +sub_800A3AC: @ 800A3AC + push {lr} + bl sub_800A404 + ldr r0, _0800A3C4 @ =0x00004444 + bl sub_8009E60 + ldr r1, _0800A3C8 @ =gUnknown_2022114 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800A3C4: .4byte 0x00004444 +_0800A3C8: .4byte gUnknown_2022114 + thumb_func_end sub_800A3AC + + thumb_func_start sub_800A3CC +sub_800A3CC: @ 800A3CC + ldr r1, _0800A3DC @ =gUnknown_2022114 + movs r0, 0 + str r0, [r1] + ldr r1, _0800A3E0 @ =gUnknown_3003F80 + ldr r0, _0800A3E4 @ =sub_800A3AC + str r0, [r1] + bx lr + .align 2, 0 +_0800A3DC: .4byte gUnknown_2022114 +_0800A3E0: .4byte gUnknown_3003F80 +_0800A3E4: .4byte sub_800A3AC + thumb_func_end sub_800A3CC + + thumb_func_start sub_800A3E8 +sub_800A3E8: @ 800A3E8 + ldr r0, _0800A3F0 @ =gUnknown_2022114 + ldr r0, [r0] + bx lr + .align 2, 0 +_0800A3F0: .4byte gUnknown_2022114 + thumb_func_end sub_800A3E8 + + thumb_func_start sub_800A3F4 +sub_800A3F4: @ 800A3F4 + push {lr} + ldr r0, _0800A400 @ =0x0000aaaa + bl sub_8009E60 + pop {r0} + bx r0 + .align 2, 0 +_0800A400: .4byte 0x0000aaaa + thumb_func_end sub_800A3F4 + + thumb_func_start sub_800A404 +sub_800A404: @ 800A404 + push {lr} + ldr r0, _0800A418 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + beq _0800A420 + ldr r0, _0800A41C @ =0x04000128 + ldr r0, [r0] + lsls r0, 26 + lsrs r0, 30 + b _0800A428 + .align 2, 0 +_0800A418: .4byte gUnknown_3003F3C +_0800A41C: .4byte 0x04000128 +_0800A420: + bl sub_80FA4C8 + lsls r0, 24 + lsrs r0, 24 +_0800A428: + pop {r1} + bx r1 + thumb_func_end sub_800A404 + + thumb_func_start sub_800A42C +sub_800A42C: @ 800A42C + push {lr} + bl sub_800A404 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + lsls r0, r1 + movs r1, 0xF + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_800A42C + + thumb_func_start sub_800A448 +sub_800A448: @ 800A448 + push {lr} + adds r3, r1, 0 + lsls r2, 16 + lsrs r1, r2, 16 + ldr r0, _0800A460 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + beq _0800A464 + adds r0, r3, 0 + bl sub_800A2A8 + b _0800A46A + .align 2, 0 +_0800A460: .4byte gUnknown_3003F3C +_0800A464: + adds r0, r3, 0 + bl sub_80F9E60 +_0800A46A: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_800A448 + + thumb_func_start sub_800A474 +sub_800A474: @ 800A474 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + ldr r0, _0800A490 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800A494 + adds r0, r1, 0 + bl sub_80FA0F8 + lsls r0, 24 + lsrs r0, 24 + b _0800A4B0 + .align 2, 0 +_0800A490: .4byte gUnknown_3003F3C +_0800A494: + ldr r0, _0800A4A0 @ =gUnknown_3003F80 + ldr r0, [r0] + cmp r0, 0 + beq _0800A4A4 + movs r0, 0 + b _0800A4B0 + .align 2, 0 +_0800A4A0: .4byte gUnknown_3003F80 +_0800A4A4: + ldr r0, _0800A4B4 @ =gUnknown_3003F90 + strb r2, [r0] + ldr r0, _0800A4B8 @ =0x0000cccc + bl sub_8009E60 + movs r0, 0x1 +_0800A4B0: + pop {r1} + bx r1 + .align 2, 0 +_0800A4B4: .4byte gUnknown_3003F90 +_0800A4B8: .4byte 0x0000cccc + thumb_func_end sub_800A474 + + thumb_func_start sub_800A4BC +sub_800A4BC: @ 800A4BC + push {lr} + ldr r0, _0800A4D0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800A4D4 + bl sub_80FA4F8 + lsls r0, 24 + lsrs r0, 24 + b _0800A4E2 + .align 2, 0 +_0800A4D0: .4byte gUnknown_3003F3C +_0800A4D4: + movs r1, 0 + ldr r0, _0800A4E8 @ =gUnknown_3003F80 + ldr r0, [r0] + cmp r0, 0 + bne _0800A4E0 + movs r1, 0x1 +_0800A4E0: + adds r0, r1, 0 +_0800A4E2: + pop {r1} + bx r1 + .align 2, 0 +_0800A4E8: .4byte gUnknown_3003F80 + thumb_func_end sub_800A4BC + + thumb_func_start sub_800A4EC +sub_800A4EC: @ 800A4EC + push {lr} + ldr r0, _0800A510 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + beq _0800A518 + ldr r2, _0800A514 @ =gUnknown_3003EBC + ldrb r0, [r2, 0x3] + lsls r0, 3 + ldrb r1, [r2, 0x2] + lsls r1, 2 + orrs r0, r1 + ldrb r1, [r2, 0x1] + lsls r1, 1 + orrs r0, r1 + ldrb r1, [r2] + orrs r0, r1 + b _0800A51C + .align 2, 0 +_0800A510: .4byte gUnknown_3003F3C +_0800A514: .4byte gUnknown_3003EBC +_0800A518: + bl sub_80F9CC8 +_0800A51C: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_800A4EC + + thumb_func_start sub_800A524 +sub_800A524: @ 800A524 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0800A53C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800A540 + adds r0, r1, 0 + bl sub_80F9720 + b _0800A548 + .align 2, 0 +_0800A53C: .4byte gUnknown_3003F3C +_0800A540: + ldr r0, _0800A54C @ =gUnknown_3003EBC + adds r0, r1, r0 + movs r1, 0x1 + strb r1, [r0] +_0800A548: + pop {r0} + bx r0 + .align 2, 0 +_0800A54C: .4byte gUnknown_3003EBC + thumb_func_end sub_800A524 + + thumb_func_start sub_800A550 +sub_800A550: @ 800A550 + push {r4,lr} + ldr r0, _0800A56C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800A570 + movs r4, 0 +_0800A55C: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80F974C + adds r4, 0x1 + cmp r4, 0x4 + ble _0800A55C + b _0800A57E + .align 2, 0 +_0800A56C: .4byte gUnknown_3003F3C +_0800A570: + ldr r1, _0800A584 @ =gUnknown_3003EBC + movs r2, 0 + adds r0, r1, 0x3 +_0800A576: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0800A576 +_0800A57E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800A584: .4byte gUnknown_3003EBC + thumb_func_end sub_800A550 + + thumb_func_start sub_800A588 +sub_800A588: @ 800A588 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0800A5A0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800A5A4 + adds r0, r1, 0 + bl sub_80F974C + b _0800A5B2 + .align 2, 0 +_0800A5A0: .4byte gUnknown_3003F3C +_0800A5A4: + ldr r0, _0800A5B8 @ =gUnknown_3003EBC + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0800A5B2 + movs r0, 0 + strb r0, [r1] +_0800A5B2: + pop {r0} + bx r0 + .align 2, 0 +_0800A5B8: .4byte gUnknown_3003EBC + thumb_func_end sub_800A588 + + thumb_func_start sub_800A5BC +sub_800A5BC: @ 800A5BC + push {lr} + ldr r0, _0800A5DC @ =gUnknown_3003F20 + ldr r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0800A5D8 + movs r0, 0x1C + ands r1, r0 + cmp r1, 0x4 + bls _0800A5D8 + ldr r1, _0800A5E0 @ =gUnknown_3003F84 + movs r0, 0x1 + strb r0, [r1] +_0800A5D8: + pop {r0} + bx r0 + .align 2, 0 +_0800A5DC: .4byte gUnknown_3003F20 +_0800A5E0: .4byte gUnknown_3003F84 + thumb_func_end sub_800A5BC + + thumb_func_start sub_800A5E4 +sub_800A5E4: @ 800A5E4 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 16 + movs r3, 0 + movs r2, 0 + lsrs r1, 17 + cmp r3, r1 + bcs _0800A60A +_0800A5F4: + lsls r0, r2, 1 + adds r0, r4 + ldrh r0, [r0] + adds r0, r3, r0 + lsls r0, 16 + lsrs r3, r0, 16 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r1 + bcc _0800A5F4 +_0800A60A: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800A5E4 + + thumb_func_start sub_800A614 +sub_800A614: @ 800A614 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + ldr r4, _0800A648 @ =gUnknown_3003F70 + ldr r3, [r4] + lsls r3, 11 + movs r5, 0xC0 + lsls r5, 19 + adds r3, r5 + lsrs r2, 19 + adds r2, r1 + lsls r2, 1 + adds r2, r3 + ldr r3, [r4, 0x4] + lsls r3, 12 + ldr r1, [r4, 0x8] + adds r1, 0x1 + adds r0, r1 + orrs r3, r0 + strh r3, [r2] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800A648: .4byte gUnknown_3003F70 + thumb_func_end sub_800A614 + + thumb_func_start sub_800A64C +sub_800A64C: @ 800A64C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + ldr r4, _0800A680 @ =gUnknown_3003F70 + ldr r3, [r4] + lsls r3, 11 + movs r5, 0xC0 + lsls r5, 19 + adds r3, r5 + lsrs r2, 19 + adds r2, r1 + lsls r2, 1 + adds r2, r3 + ldr r3, [r4, 0x4] + lsls r3, 12 + ldr r1, [r4, 0x8] + adds r1, r0 + orrs r3, r1 + strh r3, [r2] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800A680: .4byte gUnknown_3003F70 + thumb_func_end sub_800A64C + + thumb_func_start sub_800A684 +sub_800A684: @ 800A684 + push {r4-r7,lr} + sub sp, 0x10 + adds r5, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r3, 24 + movs r4, 0 + cmp r4, r3 + bge _0800A6B0 + movs r2, 0xF +_0800A69E: + mov r0, sp + adds r1, r0, r4 + adds r0, r5, 0 + ands r0, r2 + strb r0, [r1] + lsrs r5, 4 + adds r4, 0x1 + cmp r4, r3 + blt _0800A69E +_0800A6B0: + subs r4, r3, 0x1 + cmp r4, 0 + blt _0800A6D0 +_0800A6B6: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_800A614 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + subs r4, 0x1 + cmp r4, 0 + bge _0800A6B6 +_0800A6D0: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800A684 + + thumb_func_start sub_800A6D8 +sub_800A6D8: @ 800A6D8 + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + movs r6, 0 + ldrb r0, [r3] + cmp r0, 0 + beq _0800A718 + adds r4, r3, 0 + lsls r5, r2, 24 +_0800A6F0: + ldrb r0, [r4] + cmp r0, 0xA + bne _0800A700 + movs r0, 0x80 + lsls r0, 17 + adds r5, r0 + movs r6, 0 + b _0800A710 +_0800A700: + ldrb r0, [r4] + adds r1, r7, r6 + lsls r1, 24 + lsrs r1, 24 + lsrs r2, r5, 24 + bl sub_800A64C + adds r6, 0x1 +_0800A710: + adds r4, 0x1 + ldrb r0, [r4] + cmp r0, 0 + bne _0800A6F0 +_0800A718: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800A6D8 + + thumb_func_start sub_800A720 +sub_800A720: @ 800A720 + push {lr} + ldr r0, _0800A740 @ =gUnknown_3003F20 + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0800A734 + ldr r0, _0800A744 @ =0x00002222 + bl sub_8009E60 +_0800A734: + ldr r1, _0800A748 @ =gUnknown_3003F80 + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800A740: .4byte gUnknown_3003F20 +_0800A744: .4byte 0x00002222 +_0800A748: .4byte gUnknown_3003F80 + thumb_func_end sub_800A720 + + thumb_func_start sub_800A74C +sub_800A74C: @ 800A74C + push {r4-r6,lr} + sub sp, 0x20 + ldr r1, _0800A86C @ =gUnknown_82345D0 + mov r0, sp + bl strcpy + mov r0, sp + movs r1, 0x5 + movs r2, 0x2 + bl sub_800A6D8 + ldr r0, _0800A870 @ =gUnknown_3003F84 + ldrb r0, [r0] + movs r1, 0x2 + movs r2, 0x1 + movs r3, 0x2 + bl sub_800A684 + ldr r4, _0800A874 @ =gUnknown_3003F20 + ldr r0, [r4] + movs r1, 0xF + movs r2, 0x1 + movs r3, 0x8 + bl sub_800A684 + ldr r0, _0800A878 @ =gUnknown_3003FB0 + ldrb r0, [r0, 0x1] + movs r1, 0x2 + movs r2, 0xA + movs r3, 0x2 + bl sub_800A684 + ldr r0, [r4] + movs r1, 0x1C + ands r0, r1 + lsrs r0, 2 + movs r1, 0xF + movs r2, 0xA + movs r3, 0x2 + bl sub_800A684 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xF + movs r2, 0xC + movs r3, 0x2 + bl sub_800A684 + ldr r0, _0800A87C @ =gUnknown_3003FA0 + ldrb r0, [r0] + movs r1, 0x19 + movs r2, 0x1 + movs r3, 0x2 + bl sub_800A684 + ldr r0, _0800A880 @ =gUnknown_3004F70 + ldrb r0, [r0] + movs r1, 0x19 + movs r2, 0x2 + movs r3, 0x2 + bl sub_800A684 + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xF + movs r2, 0x5 + movs r3, 0x2 + bl sub_800A684 + ldr r0, _0800A884 @ =gUnknown_3003E6C + ldr r0, [r0] + movs r1, 0x2 + movs r2, 0xC + movs r3, 0x8 + bl sub_800A684 + ldr r0, _0800A888 @ =gUnknown_3003EB0 + ldr r0, [r0] + movs r1, 0x2 + movs r2, 0xD + movs r3, 0x8 + bl sub_800A684 + bl sub_800B054 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0x5 + movs r3, 0x1 + bl sub_800A684 + bl sub_800B064 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0x6 + movs r3, 0x1 + bl sub_800A684 + bl sub_800B08C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0x7 + movs r3, 0x1 + bl sub_800A684 + bl sub_800B0A8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0x8 + movs r3, 0x1 + bl sub_800A684 + movs r6, 0 + movs r5, 0x80 + lsls r5, 19 + ldr r4, _0800A88C @ =gUnknown_3003F88 +_0800A84A: + ldrh r0, [r4] + lsrs r2, r5, 24 + movs r1, 0xA + movs r3, 0x4 + bl sub_800A684 + movs r0, 0x80 + lsls r0, 17 + adds r5, r0 + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0800A84A + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800A86C: .4byte gUnknown_82345D0 +_0800A870: .4byte gUnknown_3003F84 +_0800A874: .4byte gUnknown_3003F20 +_0800A878: .4byte gUnknown_3003FB0 +_0800A87C: .4byte gUnknown_3003FA0 +_0800A880: .4byte gUnknown_3004F70 +_0800A884: .4byte gUnknown_3003E6C +_0800A888: .4byte gUnknown_3003EB0 +_0800A88C: .4byte gUnknown_3003F88 + thumb_func_end sub_800A74C + + thumb_func_start sub_800A890 +sub_800A890: @ 800A890 + ldr r2, _0800A89C @ =gUnknown_3003E6C + str r0, [r2] + ldr r0, _0800A8A0 @ =gUnknown_3003EB0 + str r1, [r0] + bx lr + .align 2, 0 +_0800A89C: .4byte gUnknown_3003E6C +_0800A8A0: .4byte gUnknown_3003EB0 + thumb_func_end sub_800A890 + + thumb_func_start sub_800A8A4 +sub_800A8A4: @ 800A8A4 + push {r4,lr} + movs r1, 0 + movs r2, 0 + ldr r0, _0800A8D0 @ =gUnknown_3003F40 + ldrb r0, [r0] + cmp r1, r0 + bge _0800A8C6 + movs r4, 0x1 + adds r3, r0, 0 +_0800A8B6: + adds r0, r4, 0 + lsls r0, r2 + orrs r1, r0 + lsls r0, r1, 24 + lsrs r1, r0, 24 + adds r2, 0x1 + cmp r2, r3 + blt _0800A8B6 +_0800A8C6: + adds r0, r1, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800A8D0: .4byte gUnknown_3003F40 + thumb_func_end sub_800A8A4 + + thumb_func_start sub_800A8D4 +sub_800A8D4: @ 800A8D4 + push {r4-r6,lr} + movs r4, 0 + movs r5, 0 + movs r6, 0x1 + b _0800A8EA +_0800A8DE: + adds r0, r6, 0 + lsls r0, r5 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 + adds r5, 0x1 +_0800A8EA: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + blt _0800A8DE + adds r0, r4, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_800A8D4 + + thumb_func_start sub_800A900 +sub_800A900: @ 800A900 + push {r4-r7,lr} + ldr r1, _0800A934 @ =gUnknown_3003F40 + strb r0, [r1] + bl sub_800A404 + ldr r1, _0800A938 @ =gUnknown_3003F60 + strb r0, [r1] + ldr r4, _0800A93C @ =gUnknown_202273C + ldr r3, _0800A940 @ =gUnknown_20227C8 + movs r2, 0x4 +_0800A914: + adds r0, r3, 0 + adds r1, r4, 0 + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldr r1, [r1] + str r1, [r0] + adds r4, 0x1C + adds r3, 0x1C + subs r2, 0x1 + cmp r2, 0 + bge _0800A914 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800A934: .4byte gUnknown_3003F40 +_0800A938: .4byte gUnknown_3003F60 +_0800A93C: .4byte gUnknown_202273C +_0800A940: .4byte gUnknown_20227C8 + thumb_func_end sub_800A900 + + thumb_func_start sub_800A944 +sub_800A944: @ 800A944 + ldr r0, _0800A94C @ =gUnknown_3003F40 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800A94C: .4byte gUnknown_3003F40 + thumb_func_end sub_800A944 + + thumb_func_start sub_800A950 +sub_800A950: @ 800A950 + ldr r0, _0800A958 @ =gUnknown_3003F60 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800A958: .4byte gUnknown_3003F60 + thumb_func_end sub_800A950 + + thumb_func_start sub_800A95C +sub_800A95C: @ 800A95C + push {r4-r6,lr} + movs r5, 0 + ldr r0, _0800A990 @ =gUnknown_3003F40 + ldrb r2, [r0] + adds r6, r0, 0 + cmp r5, r2 + bge _0800A986 + ldr r1, _0800A994 @ =gUnknown_202273C + ldr r0, _0800A998 @ =gUnknown_20227C8 + adds r4, r0, 0x4 + adds r3, r1, 0x4 +_0800A972: + ldr r1, [r3] + ldr r0, [r4] + cmp r1, r0 + bne _0800A97C + adds r5, 0x1 +_0800A97C: + adds r4, 0x1C + adds r3, 0x1C + subs r2, 0x1 + cmp r2, 0 + bne _0800A972 +_0800A986: + ldrb r6, [r6] + cmp r5, r6 + beq _0800A99C + movs r0, 0 + b _0800A99E + .align 2, 0 +_0800A990: .4byte gUnknown_3003F40 +_0800A994: .4byte gUnknown_202273C +_0800A998: .4byte gUnknown_20227C8 +_0800A99C: + movs r0, 0x1 +_0800A99E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_800A95C + + thumb_func_start sub_800A9A4 +sub_800A9A4: @ 800A9A4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r4, 0 + ldr r0, _0800AA10 @ =gUnknown_3003F40 + ldrb r0, [r0] + cmp r4, r0 + bcs _0800AA04 + ldr r6, _0800AA14 @ =gUnknown_20227C8 + ldr r5, _0800AA18 @ =gUnknown_202273C + movs r0, 0x8 + adds r0, r6 + mov r8, r0 + adds r7, r5, 0 + adds r7, 0x8 +_0800A9C2: + lsls r0, r4, 3 + subs r0, r4 + lsls r2, r0, 2 + adds r1, r6, 0x4 + adds r1, r2, r1 + adds r0, r5, 0x4 + adds r0, r2, r0 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + bne _0800A9E6 + mov r1, r8 + adds r0, r2, r1 + adds r1, r2, r7 + bl sub_8008E28 + cmp r0, 0 + beq _0800A9F6 +_0800A9E6: + ldr r1, _0800AA1C @ =gUnknown_3003EAC + movs r0, 0x1 + strb r0, [r1] + bl sub_80098B8 + ldr r0, _0800AA20 @ =sub_800ACD4 + bl sub_8000544 +_0800A9F6: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0800AA10 @ =gUnknown_3003F40 + ldrb r0, [r0] + cmp r4, r0 + bcc _0800A9C2 +_0800AA04: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800AA10: .4byte gUnknown_3003F40 +_0800AA14: .4byte gUnknown_20227C8 +_0800AA18: .4byte gUnknown_202273C +_0800AA1C: .4byte gUnknown_3003EAC +_0800AA20: .4byte sub_800ACD4 + thumb_func_end sub_800A9A4 + + thumb_func_start sub_800AA24 +sub_800AA24: @ 800AA24 + ldr r0, _0800AA30 @ =gUnknown_3003F40 + movs r1, 0 + strb r1, [r0] + ldr r0, _0800AA34 @ =gUnknown_3003F60 + strb r1, [r0] + bx lr + .align 2, 0 +_0800AA30: .4byte gUnknown_3003F40 +_0800AA34: .4byte gUnknown_3003F60 + thumb_func_end sub_800AA24 + + thumb_func_start sub_800AA38 +sub_800AA38: @ 800AA38 + ldr r0, _0800AA44 @ =gUnknown_3003F20 + ldr r0, [r0] + movs r1, 0x1C + ands r0, r1 + lsrs r0, 2 + bx lr + .align 2, 0 +_0800AA44: .4byte gUnknown_3003F20 + thumb_func_end sub_800AA38 + + thumb_func_start sub_800AA48 +sub_800AA48: @ 800AA48 + push {lr} + ldr r0, _0800AA60 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0800AA68 + ldr r0, _0800AA64 @ =gUnknown_3003F20 + ldr r0, [r0] + lsrs r0, 5 + movs r1, 0x1 + ands r0, r1 + b _0800AA70 + .align 2, 0 +_0800AA60: .4byte gUnknown_3003F3C +_0800AA64: .4byte gUnknown_3003F20 +_0800AA68: + bl sub_80FBA2C + lsls r0, 24 + lsrs r0, 24 +_0800AA70: + pop {r1} + bx r1 + thumb_func_end sub_800AA48 + + thumb_func_start sub_800AA74 +sub_800AA74: @ 800AA74 + ldr r0, _0800AA7C @ =gUnknown_3000E50 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800AA7C: .4byte gUnknown_3000E50 + thumb_func_end sub_800AA74 + + thumb_func_start sub_800AA80 +sub_800AA80: @ 800AA80 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _0800AA94 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800AA98 + bl sub_80FA28C + b _0800AAAC + .align 2, 0 +_0800AA94: .4byte gUnknown_3003F3C +_0800AA98: + ldr r2, _0800AAB0 @ =gUnknown_3003F80 + ldr r1, [r2] + cmp r1, 0 + bne _0800AAAC + ldr r0, _0800AAB4 @ =sub_800AB0C + str r0, [r2] + ldr r0, _0800AAB8 @ =gUnknown_3003F24 + strb r1, [r0] + ldr r0, _0800AABC @ =gUnknown_3003F34 + strh r3, [r0] +_0800AAAC: + pop {r0} + bx r0 + .align 2, 0 +_0800AAB0: .4byte gUnknown_3003F80 +_0800AAB4: .4byte sub_800AB0C +_0800AAB8: .4byte gUnknown_3003F24 +_0800AABC: .4byte gUnknown_3003F34 + thumb_func_end sub_800AA80 + + thumb_func_start sub_800AAC0 +sub_800AAC0: @ 800AAC0 + push {lr} + ldr r0, _0800AAD0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800AAD4 + bl sub_80FA28C + b _0800AAFC + .align 2, 0 +_0800AAD0: .4byte gUnknown_3003F3C +_0800AAD4: + ldr r2, _0800AAE8 @ =gUnknown_3003F80 + ldr r1, [r2] + cmp r1, 0 + beq _0800AAF0 + ldr r1, _0800AAEC @ =gUnknown_202285C + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0800AAFC + .align 2, 0 +_0800AAE8: .4byte gUnknown_3003F80 +_0800AAEC: .4byte gUnknown_202285C +_0800AAF0: + ldr r0, _0800AB00 @ =sub_800AB0C + str r0, [r2] + ldr r0, _0800AB04 @ =gUnknown_3003F24 + strb r1, [r0] + ldr r0, _0800AB08 @ =gUnknown_3003F34 + strh r1, [r0] +_0800AAFC: + pop {r0} + bx r0 + .align 2, 0 +_0800AB00: .4byte sub_800AB0C +_0800AB04: .4byte gUnknown_3003F24 +_0800AB08: .4byte gUnknown_3003F34 + thumb_func_end sub_800AAC0 + + thumb_func_start sub_800AB0C +sub_800AB0C: @ 800AB0C + push {lr} + ldr r0, _0800AB28 @ =gUnknown_3004F70 + ldrb r0, [r0] + cmp r0, 0 + bne _0800AB22 + ldr r0, _0800AB2C @ =0x00005fff + bl sub_8009E60 + ldr r1, _0800AB30 @ =gUnknown_3003F80 + ldr r0, _0800AB34 @ =sub_800AB38 + str r0, [r1] +_0800AB22: + pop {r0} + bx r0 + .align 2, 0 +_0800AB28: .4byte gUnknown_3004F70 +_0800AB2C: .4byte 0x00005fff +_0800AB30: .4byte gUnknown_3003F80 +_0800AB34: .4byte sub_800AB38 + thumb_func_end sub_800AB0C + + thumb_func_start sub_800AB38 +sub_800AB38: @ 800AB38 + push {r4,lr} + bl sub_800A088 + lsls r0, 24 + lsrs r2, r0, 24 + movs r3, 0 + movs r1, 0 + cmp r3, r2 + bge _0800AB5C + ldr r4, _0800AB84 @ =gUnknown_3003F30 +_0800AB4C: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0800AB56 + adds r3, 0x1 +_0800AB56: + adds r1, 0x1 + cmp r1, r2 + blt _0800AB4C +_0800AB5C: + cmp r3, r2 + bne _0800AB7E + ldr r2, _0800AB88 @ =gUnknown_2022B4C + ldr r0, [r2] + ldr r1, _0800AB8C @ =0x0000ffdf + ands r0, r1 + str r0, [r2] + ldr r0, _0800AB90 @ =gUnknown_300357C + movs r4, 0x1 + strb r4, [r0] + bl sub_80098B8 + ldr r1, _0800AB94 @ =gUnknown_3003F80 + movs r0, 0 + str r0, [r1] + ldr r0, _0800AB98 @ =gUnknown_3003F24 + strb r4, [r0] +_0800AB7E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800AB84: .4byte gUnknown_3003F30 +_0800AB88: .4byte gUnknown_2022B4C +_0800AB8C: .4byte 0x0000ffdf +_0800AB90: .4byte gUnknown_300357C +_0800AB94: .4byte gUnknown_3003F80 +_0800AB98: .4byte gUnknown_3003F24 + thumb_func_end sub_800AB38 + + thumb_func_start sub_800AB9C +sub_800AB9C: @ 800AB9C + push {lr} + ldr r0, _0800ABAC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800ABB0 + bl sub_80FA42C + b _0800ABC2 + .align 2, 0 +_0800ABAC: .4byte gUnknown_3003F3C +_0800ABB0: + ldr r1, _0800ABC8 @ =gUnknown_3003F80 + ldr r0, [r1] + cmp r0, 0 + bne _0800ABBC + ldr r0, _0800ABCC @ =sub_800ABD4 + str r0, [r1] +_0800ABBC: + ldr r1, _0800ABD0 @ =gUnknown_3003F24 + movs r0, 0 + strb r0, [r1] +_0800ABC2: + pop {r0} + bx r0 + .align 2, 0 +_0800ABC8: .4byte gUnknown_3003F80 +_0800ABCC: .4byte sub_800ABD4 +_0800ABD0: .4byte gUnknown_3003F24 + thumb_func_end sub_800AB9C + + thumb_func_start sub_800ABD4 +sub_800ABD4: @ 800ABD4 + push {lr} + ldr r0, _0800ABF0 @ =gUnknown_3004F70 + ldrb r0, [r0] + cmp r0, 0 + bne _0800ABEA + ldr r0, _0800ABF4 @ =0x00002ffe + bl sub_8009E60 + ldr r1, _0800ABF8 @ =gUnknown_3003F80 + ldr r0, _0800ABFC @ =sub_800AC00 + str r0, [r1] +_0800ABEA: + pop {r0} + bx r0 + .align 2, 0 +_0800ABF0: .4byte gUnknown_3004F70 +_0800ABF4: .4byte 0x00002ffe +_0800ABF8: .4byte gUnknown_3003F80 +_0800ABFC: .4byte sub_800AC00 + thumb_func_end sub_800ABD4 + + thumb_func_start sub_800AC00 +sub_800AC00: @ 800AC00 + push {r4,lr} + bl sub_800A088 + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0 + cmp r1, r2 + bcs _0800AC2A + ldr r3, _0800AC50 @ =gUnknown_3003F2C + ldrb r0, [r3] + cmp r0, 0 + beq _0800AC2A +_0800AC18: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcs _0800AC2A + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _0800AC18 +_0800AC2A: + cmp r1, r2 + bne _0800AC48 + movs r1, 0 + ldr r4, _0800AC54 @ =gUnknown_3003F80 + ldr r3, _0800AC50 @ =gUnknown_3003F2C + movs r2, 0 +_0800AC36: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bls _0800AC36 + movs r0, 0 + str r0, [r4] +_0800AC48: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800AC50: .4byte gUnknown_3003F2C +_0800AC54: .4byte gUnknown_3003F80 + thumb_func_end sub_800AC00 + + thumb_func_start sub_800AC58 +sub_800AC58: @ 800AC58 + push {lr} + ldr r0, _0800AC9C @ =gUnknown_2022718 + ldrb r0, [r0] + cmp r0, 0 + beq _0800AC98 + ldr r0, _0800ACA0 @ =gUnknown_3003F20 + ldr r2, [r0] + movs r0, 0xFE + lsls r0, 11 + ands r0, r2 + cmp r0, 0 + beq _0800AC98 + ldr r0, _0800ACA4 @ =gUnknown_3003F38 + ldrb r0, [r0] + cmp r0, 0 + bne _0800AC8E + ldr r1, _0800ACA8 @ =gUnknown_2022854 + str r2, [r1] + ldr r0, _0800ACAC @ =gUnknown_3004F70 + ldrb r0, [r0] + strb r0, [r1, 0x4] + ldr r0, _0800ACB0 @ =gUnknown_3003FA0 + ldrb r0, [r0] + strb r0, [r1, 0x5] + ldr r0, _0800ACB4 @ =sub_800ACD4 + bl sub_8000544 +_0800AC8E: + ldr r1, _0800ACB8 @ =gUnknown_3003EAC + movs r0, 0x1 + strb r0, [r1] + bl sub_80098B8 +_0800AC98: + pop {r0} + bx r0 + .align 2, 0 +_0800AC9C: .4byte gUnknown_2022718 +_0800ACA0: .4byte gUnknown_3003F20 +_0800ACA4: .4byte gUnknown_3003F38 +_0800ACA8: .4byte gUnknown_2022854 +_0800ACAC: .4byte gUnknown_3004F70 +_0800ACB0: .4byte gUnknown_3003FA0 +_0800ACB4: .4byte sub_800ACD4 +_0800ACB8: .4byte gUnknown_3003EAC + thumb_func_end sub_800AC58 + + thumb_func_start sub_800ACBC +sub_800ACBC: @ 800ACBC + push {r4,lr} + ldr r4, _0800ACD0 @ =gUnknown_2022854 + str r0, [r4] + strb r1, [r4, 0x5] + strb r2, [r4, 0x4] + strb r3, [r4, 0x6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800ACD0: .4byte gUnknown_2022854 + thumb_func_end sub_800ACBC + + thumb_func_start sub_800ACD4 +sub_800ACD4: @ 800ACD4 + push {r4,lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r0, _0800ADE0 @ =gMPlay_SE1 + bl m4aMPlayStop + ldr r0, _0800ADE4 @ =gMPlay_SE2 + bl m4aMPlayStop + ldr r0, _0800ADE8 @ =gMPlay_SE3 + bl m4aMPlayStop + ldr r0, _0800ADEC @ =gHeap + movs r1, 0xE0 + lsls r1, 9 + bl sub_8002B80 + bl sub_8006B10 + bl sub_80088F0 + bl sub_8070A84 + movs r0, 0 + movs r1, 0 + movs r2, 0x2 + bl sub_8070424 + bl sub_80773BC + bl sub_8087E64 + ldr r1, _0800ADF0 @ =gUnknown_3003F3C + ldrb r0, [r1] + cmp r0, 0 + beq _0800AD30 + ldr r0, _0800ADF4 @ =gUnknown_2022854 + ldrb r0, [r0, 0x6] + cmp r0, 0 + bne _0800AD2C + movs r0, 0x3 + strb r0, [r1] +_0800AD2C: + bl sub_80F85F8 +_0800AD30: + ldr r0, _0800ADF8 @ =sub_800978C + bl sub_80006F4 + movs r0, 0 + bl sub_8001618 + ldr r1, _0800ADFC @ =gUnknown_82345E8 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r4, _0800AE00 @ =gUnknown_2022860 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002B9C + adds r1, r0, 0 + str r1, [r4] + movs r0, 0x1 + bl sub_8001FA0 + ldr r0, _0800AE04 @ =gUnknown_82345F0 + bl sub_8003B24 + lsls r0, 16 + cmp r0, 0 + beq _0800ADD8 + bl sub_8002C28 + bl sub_80F6808 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r1, 0xE0 + lsls r1, 8 + movs r0, 0 + bl sub_8000B14 + ldr r0, _0800AE08 @ =gUnknown_841F408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _0800AE0C @ =gUnknown_3003530 + movs r0, 0 + strb r0, [r1] + ldr r0, _0800AE10 @ =sub_80094D4 + movs r1, 0 + bl sub_807741C + bl sub_8071A94 + ldr r1, _0800AE14 @ =gUnknown_30030F0 + movs r0, 0 + str r0, [r1] + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + ldr r0, _0800AE18 @ =sub_800AF2C + bl sub_8000544 +_0800ADD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800ADE0: .4byte gMPlay_SE1 +_0800ADE4: .4byte gMPlay_SE2 +_0800ADE8: .4byte gMPlay_SE3 +_0800ADEC: .4byte gHeap +_0800ADF0: .4byte gUnknown_3003F3C +_0800ADF4: .4byte gUnknown_2022854 +_0800ADF8: .4byte sub_800978C +_0800ADFC: .4byte gUnknown_82345E8 +_0800AE00: .4byte gUnknown_2022860 +_0800AE04: .4byte gUnknown_82345F0 +_0800AE08: .4byte gUnknown_841F408 +_0800AE0C: .4byte gUnknown_3003530 +_0800AE10: .4byte sub_80094D4 +_0800AE14: .4byte gUnknown_30030F0 +_0800AE18: .4byte sub_800AF2C + thumb_func_end sub_800ACD4 + + thumb_func_start sub_800AE1C +sub_800AE1C: @ 800AE1C + push {r4,r5,lr} + sub sp, 0xC + ldr r1, _0800AEB8 @ =gUnknown_8231EE4 + movs r5, 0 + str r5, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _0800AEBC @ =gUnknown_823238C + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC + ldr r0, _0800AEC0 @ =gUnknown_8231EC4 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + ldr r4, _0800AEC4 @ =gUnknown_8234610 + str r4, [sp] + str r5, [sp, 0x4] + ldr r0, _0800AEC8 @ =gUnknown_841DEF0 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0x5 + bl sub_812E51C + str r4, [sp] + str r5, [sp, 0x4] + ldr r0, _0800AECC @ =gUnknown_841DF05 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800AEB8: .4byte gUnknown_8231EE4 +_0800AEBC: .4byte gUnknown_823238C +_0800AEC0: .4byte gUnknown_8231EC4 +_0800AEC4: .4byte gUnknown_8234610 +_0800AEC8: .4byte gUnknown_841DEF0 +_0800AECC: .4byte gUnknown_841DF05 + thumb_func_end sub_800AE1C + + thumb_func_start sub_800AED0 +sub_800AED0: @ 800AED0 + push {lr} + sub sp, 0xC + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + ldr r0, _0800AF24 @ =gUnknown_8234610 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, _0800AF28 @ =gUnknown_841DE9D + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0 + bl sub_812E51C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0 + bl sub_80019BC + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0800AF24: .4byte gUnknown_8234610 +_0800AF28: .4byte gUnknown_841DE9D + thumb_func_end sub_800AED0 + + thumb_func_start sub_800AF2C +sub_800AF2C: @ 800AF2C + push {r4,lr} + sub sp, 0xC + ldr r0, _0800AF4C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3C + beq _0800AF72 + cmp r0, 0x3C + bgt _0800AF50 + cmp r0, 0 + beq _0800AF5A + cmp r0, 0x1E + beq _0800AF72 + b _0800AFC4 + .align 2, 0 +_0800AF4C: .4byte gUnknown_30030F0 +_0800AF50: + cmp r0, 0x5A + beq _0800AF72 + cmp r0, 0x82 + beq _0800AF7A + b _0800AFC4 +_0800AF5A: + ldr r0, _0800AF68 @ =gUnknown_2022854 + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _0800AF6C + bl sub_800AE1C + b _0800AFC4 + .align 2, 0 +_0800AF68: .4byte gUnknown_2022854 +_0800AF6C: + bl sub_800AED0 + b _0800AFC4 +_0800AF72: + movs r0, 0x16 + bl sub_80722CC + b _0800AFC4 +_0800AF7A: + ldr r0, _0800AF9C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x2 + bne _0800AFA8 + ldr r0, _0800AFA0 @ =gUnknown_8234610 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, _0800AFA4 @ =gUnknown_841DF6B + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0x14 + bl sub_812E51C + b _0800AFC4 + .align 2, 0 +_0800AF9C: .4byte gUnknown_3003F3C +_0800AFA0: .4byte gUnknown_8234610 +_0800AFA4: .4byte gUnknown_841DF6B +_0800AFA8: + cmp r0, 0x1 + bne _0800AFC4 + ldr r0, _0800AFFC @ =gUnknown_8234610 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, _0800B000 @ =gUnknown_841DF4C + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0x14 + bl sub_812E51C +_0800AFC4: + ldr r0, _0800B004 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r0, r2 + ldrb r1, [r1] + cmp r1, 0xA0 + bne _0800B03C + ldr r4, _0800B008 @ =gUnknown_3003F3C + ldrb r2, [r4] + cmp r2, 0x1 + bne _0800B010 + ldrh r0, [r0, 0x2E] + ands r2, r0 + cmp r2, 0 + beq _0800B02E + bl sub_812B484 + movs r0, 0x15 + bl sub_80722CC + movs r0, 0 + strb r0, [r4] + ldr r1, _0800B00C @ =gUnknown_2022854 + movs r0, 0 + strb r0, [r1, 0x6] + bl sub_8079B7C + b _0800B02E + .align 2, 0 +_0800AFFC: .4byte gUnknown_8234610 +_0800B000: .4byte gUnknown_841DF4C +_0800B004: .4byte gUnknown_30030F0 +_0800B008: .4byte gUnknown_3003F3C +_0800B00C: .4byte gUnknown_2022854 +_0800B010: + cmp r2, 0x2 + bne _0800B02E + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0800B02E + bl sub_812B484 + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + bl sub_80008D8 +_0800B02E: + ldr r0, _0800B050 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r0, r2 + ldrb r1, [r1] + cmp r1, 0xA0 + beq _0800B048 +_0800B03C: + movs r2, 0x87 + lsls r2, 3 + adds r1, r0, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0800B048: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800B050: .4byte gUnknown_30030F0 + thumb_func_end sub_800AF2C + + thumb_func_start sub_800B054 +sub_800B054: @ 800B054 + ldr r0, _0800B060 @ =0x04000128 + ldrh r0, [r0] + lsrs r0, 2 + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0800B060: .4byte 0x04000128 + thumb_func_end sub_800B054 + + thumb_func_start sub_800B064 +sub_800B064: @ 800B064 + push {lr} + movs r3, 0 + ldr r2, _0800B088 @ =0x04000128 + ldrh r1, [r2] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0800B080 + ldrh r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0800B080 + movs r3, 0x1 +_0800B080: + adds r0, r3, 0 + pop {r1} + bx r1 + .align 2, 0 +_0800B088: .4byte 0x04000128 + thumb_func_end sub_800B064 + + thumb_func_start sub_800B08C +sub_800B08C: @ 800B08C + ldr r0, _0800B098 @ =gUnknown_3003F20 + ldr r0, [r0] + lsrs r0, 6 + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0800B098: .4byte gUnknown_3003F20 + thumb_func_end sub_800B08C + + thumb_func_start sub_800B09C +sub_800B09C: @ 800B09C + ldr r1, _0800B0A4 @ =gUnknown_3003F38 + strb r0, [r1] + bx lr + .align 2, 0 +_0800B0A4: .4byte gUnknown_3003F38 + thumb_func_end sub_800B09C + + thumb_func_start sub_800B0A8 +sub_800B0A8: @ 800B0A8 + ldr r0, _0800B0B0 @ =gUnknown_3003EAC + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800B0B0: .4byte gUnknown_3003EAC + thumb_func_end sub_800B0A8 + + thumb_func_start sub_800B0B4 +sub_800B0B4: @ 800B0B4 + push {r4-r6,lr} + bl sub_8009708 + ldr r1, _0800B100 @ =gUnknown_3003E70 + adds r2, r1, 0 + adds r2, 0x10 + ldr r0, _0800B104 @ =gUnknown_2022720 + ldm r0!, {r3-r5} + stm r2!, {r3-r5} + ldm r0!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldr r0, [r0] + str r0, [r2] + ldr r3, _0800B108 @ =gUnknown_82345C0 + adds r2, r1, 0 + adds r0, r3, 0 + ldm r0!, {r4-r6} + stm r2!, {r4-r6} + ldrh r4, [r0] + strh r4, [r2] + ldrb r0, [r0, 0x2] + strb r0, [r2, 0x2] + adds r0, r1, 0 + adds r0, 0x2C + ldm r3!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldrh r2, [r3] + strh r2, [r0] + ldrb r2, [r3, 0x2] + strb r2, [r0, 0x2] + ldr r0, _0800B10C @ =gUnknown_2022618 + movs r2, 0x3C + bl memcpy + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800B100: .4byte gUnknown_3003E70 +_0800B104: .4byte gUnknown_2022720 +_0800B108: .4byte gUnknown_82345C0 +_0800B10C: .4byte gUnknown_2022618 + thumb_func_end sub_800B0B4 + + thumb_func_start sub_800B110 +sub_800B110: @ 800B110 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 8 + ldr r1, _0800B168 @ =gUnknown_2022118 + adds r4, r2, r1 + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + ldr r0, _0800B16C @ =gUnknown_202273C + adds r2, r0 + adds r1, r2, 0 + adds r0, r4, 0 + adds r0, 0x10 + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldr r0, [r0] + str r0, [r1] + adds r0, r2, 0 + bl sub_800B284 + ldr r5, _0800B170 @ =gUnknown_82345C0 + adds r0, r4, 0 + adds r1, r5, 0 + bl strcmp + cmp r0, 0 + bne _0800B15A + adds r0, r4, 0 + adds r0, 0x2C + adds r1, r5, 0 + bl strcmp + cmp r0, 0 + beq _0800B160 +_0800B15A: + ldr r0, _0800B174 @ =sub_800ACD4 + bl sub_8000544 +_0800B160: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800B168: .4byte gUnknown_2022118 +_0800B16C: .4byte gUnknown_202273C +_0800B170: .4byte gUnknown_82345C0 +_0800B174: .4byte sub_800ACD4 + thumb_func_end sub_800B110 + + thumb_func_start sub_800B178 +sub_800B178: @ 800B178 + push {r4,r5,lr} + ldr r0, _0800B1B0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0800B1C8 + ldr r0, _0800B1B4 @ =gUnknown_3003F84 + ldr r1, _0800B1B8 @ =gUnknown_3003F50 + ldr r2, _0800B1BC @ =gUnknown_3003ED0 + bl sub_800B398 + ldr r4, _0800B1C0 @ =gUnknown_3003F20 + str r0, [r4] + ldr r0, _0800B1C4 @ =gUnknown_300311C + bl sub_8009AB0 + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + beq _0800B1EC + bl sub_8058318 + cmp r0, 0x1 + bne _0800B1EC +_0800B1AA: + movs r0, 0x1 + b _0800B1EE + .align 2, 0 +_0800B1B0: .4byte gUnknown_3003F3C +_0800B1B4: .4byte gUnknown_3003F84 +_0800B1B8: .4byte gUnknown_3003F50 +_0800B1BC: .4byte gUnknown_3003ED0 +_0800B1C0: .4byte gUnknown_3003F20 +_0800B1C4: .4byte gUnknown_300311C +_0800B1C8: + bl sub_80FAE94 + adds r4, r0, 0 + bl sub_80FAEF0 + adds r5, r0, 0 + bl sub_8058318 + cmp r0, 0x1 + bne _0800B1EC + cmp r4, 0x1 + beq _0800B1AA + bl sub_80F90DC + cmp r0, 0 + bne _0800B1AA + cmp r5, 0 + bne _0800B1AA +_0800B1EC: + movs r0, 0 +_0800B1EE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800B178 + + thumb_func_start sub_800B1F4 +sub_800B1F4: @ 800B1F4 + push {lr} + ldr r0, _0800B208 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0800B204 + ldr r1, _0800B20C @ =gUnknown_3003F3C + movs r0, 0x1 + strb r0, [r1] +_0800B204: + pop {r0} + bx r0 + .align 2, 0 +_0800B208: .4byte gUnknown_3003F64 +_0800B20C: .4byte gUnknown_3003F3C + thumb_func_end sub_800B1F4 + + thumb_func_start sub_800B210 +sub_800B210: @ 800B210 + push {lr} + ldr r0, _0800B224 @ =gUnknown_3003F64 + ldrb r1, [r0] + cmp r1, 0 + bne _0800B21E + ldr r0, _0800B228 @ =gUnknown_3003F3C + strb r1, [r0] +_0800B21E: + pop {r0} + bx r0 + .align 2, 0 +_0800B224: .4byte gUnknown_3003F64 +_0800B228: .4byte gUnknown_3003F3C + thumb_func_end sub_800B210 + + thumb_func_start sub_800B22C +sub_800B22C: @ 800B22C + push {lr} + ldr r0, _0800B240 @ =gUnknown_3003F64 + ldrb r1, [r0] + cmp r1, 0 + bne _0800B23A + ldr r0, _0800B244 @ =gUnknown_3003F3C + strb r1, [r0] +_0800B23A: + pop {r0} + bx r0 + .align 2, 0 +_0800B240: .4byte gUnknown_3003F64 +_0800B244: .4byte gUnknown_3003F3C + thumb_func_end sub_800B22C + + thumb_func_start sub_800B248 +sub_800B248: @ 800B248 + push {lr} + ldr r0, _0800B25C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0800B268 + ldr r0, _0800B260 @ =gUnknown_3003FB0 + ldr r1, _0800B264 @ =0x00000fbd + adds r0, r1 + ldrb r0, [r0] + b _0800B26C + .align 2, 0 +_0800B25C: .4byte gUnknown_3003F3C +_0800B260: .4byte gUnknown_3003FB0 +_0800B264: .4byte 0x00000fbd +_0800B268: + bl sub_80FC460 +_0800B26C: + pop {r1} + bx r1 + thumb_func_end sub_800B248 + + thumb_func_start sub_800B270 +sub_800B270: @ 800B270 + push {lr} + bl sub_800B248 + cmp r0, 0x2 + bhi _0800B27E + movs r0, 0 + b _0800B280 +_0800B27E: + movs r0, 0x1 +_0800B280: + pop {r1} + bx r1 + thumb_func_end sub_800B270 + + thumb_func_start sub_800B284 +sub_800B284: @ 800B284 + push {lr} + ldrb r1, [r0, 0x10] + strb r1, [r0, 0x12] + adds r2, r0, 0 + adds r2, 0x8 + ldrb r1, [r0, 0x1A] + adds r0, r2, 0 + bl sub_80093BC + pop {r0} + bx r0 + thumb_func_end sub_800B284 + + thumb_func_start sub_800B29C +sub_800B29C: @ 800B29C + push {lr} + sub sp, 0x4 + movs r0, 0xC0 + bl sub_8000B94 + ldr r1, _0800B2DC @ =0x04000128 + movs r2, 0x80 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0800B2E0 @ =0x0400010e + movs r2, 0 + strh r2, [r0] + adds r1, 0xDA + movs r0, 0xC0 + strh r0, [r1] + ldr r0, _0800B2E4 @ =0x0400012a + strh r2, [r0] + ldr r2, _0800B2E8 @ =0x04000120 + movs r0, 0 + movs r1, 0 + str r0, [r2] + str r1, [r2, 0x4] + str r0, [sp] + ldr r1, _0800B2EC @ =gUnknown_3003FB0 + ldr r2, _0800B2F0 @ =0x050003f0 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0800B2DC: .4byte 0x04000128 +_0800B2E0: .4byte 0x0400010e +_0800B2E4: .4byte 0x0400012a +_0800B2E8: .4byte 0x04000120 +_0800B2EC: .4byte gUnknown_3003FB0 +_0800B2F0: .4byte 0x050003f0 + thumb_func_end sub_800B29C + + thumb_func_start sub_800B2F4 +sub_800B2F4: @ 800B2F4 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0xC0 + bl sub_8000B94 + ldr r0, _0800B354 @ =0x04000134 + movs r4, 0 + strh r4, [r0] + ldr r2, _0800B358 @ =0x04000128 + movs r1, 0x80 + lsls r1, 6 + adds r0, r1, 0 + strh r0, [r2] + ldrh r0, [r2] + ldr r3, _0800B35C @ =0x00004003 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + movs r0, 0x80 + bl sub_8000B68 + ldr r0, _0800B360 @ =0x0400012a + strh r4, [r0] + movs r5, 0 + str r5, [sp] + ldr r1, _0800B364 @ =gUnknown_3003FB0 + ldr r2, _0800B368 @ =0x050003f0 + mov r0, sp + bl CpuSet + ldr r0, _0800B36C @ =gUnknown_3000E64 + strb r4, [r0] + ldr r0, _0800B370 @ =gUnknown_3000E66 + strh r5, [r0] + ldr r0, _0800B374 @ =gUnknown_3000E68 + strh r5, [r0] + ldr r0, _0800B378 @ =gUnknown_3000E6A + strb r4, [r0] + ldr r0, _0800B37C @ =gUnknown_3000E6B + strb r4, [r0] + ldr r0, _0800B380 @ =gUnknown_3003FA0 + strb r4, [r0] + ldr r0, _0800B384 @ =gUnknown_3004F70 + strb r4, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800B354: .4byte 0x04000134 +_0800B358: .4byte 0x04000128 +_0800B35C: .4byte 0x00004003 +_0800B360: .4byte 0x0400012a +_0800B364: .4byte gUnknown_3003FB0 +_0800B368: .4byte 0x050003f0 +_0800B36C: .4byte gUnknown_3000E64 +_0800B370: .4byte gUnknown_3000E66 +_0800B374: .4byte gUnknown_3000E68 +_0800B378: .4byte gUnknown_3000E6A +_0800B37C: .4byte gUnknown_3000E6B +_0800B380: .4byte gUnknown_3003FA0 +_0800B384: .4byte gUnknown_3004F70 + thumb_func_end sub_800B2F4 + + thumb_func_start sub_800B388 +sub_800B388: @ 800B388 + push {lr} + bl sub_800B2F4 + bl sub_800B29C + pop {r0} + bx r0 + thumb_func_end sub_800B388 + + thumb_func_start sub_800B398 +sub_800B398: @ 800B398 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, _0800B3B4 @ =gUnknown_3003FB0 + ldrb r0, [r0, 0x1] + cmp r0, 0x4 + bhi _0800B44A + lsls r0, 2 + ldr r1, _0800B3B8 @ =_0800B3BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800B3B4: .4byte gUnknown_3003FB0 +_0800B3B8: .4byte _0800B3BC + .align 2, 0 +_0800B3BC: + .4byte _0800B3D0 + .4byte _0800B3E0 + .4byte _0800B3F8 + .4byte _0800B434 + .4byte _0800B43E +_0800B3D0: + bl sub_800B29C + ldr r1, _0800B3DC @ =gUnknown_3003FB0 + movs r0, 0x1 + strb r0, [r1, 0x1] + b _0800B44A + .align 2, 0 +_0800B3DC: .4byte gUnknown_3003FB0 +_0800B3E0: + ldrb r0, [r4] + cmp r0, 0x1 + bne _0800B44A + bl sub_800B2F4 + ldr r1, _0800B3F4 @ =gUnknown_3003FB0 + movs r0, 0x2 + strb r0, [r1, 0x1] + b _0800B44A + .align 2, 0 +_0800B3F4: .4byte gUnknown_3003FB0 +_0800B3F8: + ldrb r1, [r4] + cmp r1, 0x1 + beq _0800B408 + cmp r1, 0x2 + beq _0800B420 + bl sub_800B4C4 + b _0800B44A +_0800B408: + ldr r2, _0800B41C @ =gUnknown_3003FB0 + ldrb r0, [r2] + cmp r0, 0x8 + bne _0800B44A + ldrb r0, [r2, 0x3] + cmp r0, 0x1 + bls _0800B44A + strb r1, [r2, 0xE] + b _0800B44A + .align 2, 0 +_0800B41C: .4byte gUnknown_3003FB0 +_0800B420: + ldr r0, _0800B42C @ =gUnknown_3003FB0 + movs r1, 0 + strb r1, [r0, 0x1] + ldr r0, _0800B430 @ =0x0400012a + strh r1, [r0] + b _0800B44A + .align 2, 0 +_0800B42C: .4byte gUnknown_3003FB0 +_0800B430: .4byte 0x0400012a +_0800B434: + bl sub_800B4F0 + ldr r1, _0800B484 @ =gUnknown_3003FB0 + movs r0, 0x4 + strb r0, [r1, 0x1] +_0800B43E: + adds r0, r5, 0 + bl sub_800B520 + adds r0, r6, 0 + bl sub_800B608 +_0800B44A: + movs r0, 0 + strb r0, [r4] + ldr r1, _0800B484 @ =gUnknown_3003FB0 + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 2 + orrs r2, r0 + ldrb r0, [r1] + cmp r0, 0x8 + bne _0800B462 + movs r0, 0x20 + orrs r2, r0 +_0800B462: + ldrb r0, [r1, 0xC] + lsls r3, r0, 8 + ldrb r0, [r1, 0xF] + lsls r4, r0, 9 + ldrb r0, [r1, 0x10] + lsls r5, r0, 12 + ldrb r0, [r1, 0x11] + lsls r6, r0, 13 + ldrb r0, [r1, 0x12] + lsls r7, r0, 14 + ldrb r0, [r1, 0x1] + cmp r0, 0x4 + bne _0800B488 + movs r0, 0x40 + orrs r0, r3 + orrs r0, r2 + b _0800B48C + .align 2, 0 +_0800B484: .4byte gUnknown_3003FB0 +_0800B488: + adds r0, r2, 0 + orrs r0, r3 +_0800B48C: + orrs r0, r4 + orrs r0, r5 + orrs r0, r6 + orrs r0, r7 + adds r2, r0, 0 + ldrb r3, [r1, 0x13] + cmp r3, 0x1 + bne _0800B4A2 + movs r0, 0x80 + lsls r0, 9 + orrs r2, r0 +_0800B4A2: + ldrb r0, [r1, 0x2] + cmp r0, 0x3 + bls _0800B4AE + movs r0, 0x80 + lsls r0, 10 + orrs r2, r0 +_0800B4AE: + adds r1, r2, 0 + cmp r3, 0x2 + bne _0800B4BA + movs r0, 0x80 + lsls r0, 11 + orrs r1, r0 +_0800B4BA: + adds r0, r1, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_800B398 + + thumb_func_start sub_800B4C4 +sub_800B4C4: @ 800B4C4 + push {lr} + ldr r0, _0800B4E0 @ =0x04000128 + ldr r1, [r0] + movs r0, 0xC + ands r1, r0 + ldr r2, _0800B4E4 @ =gUnknown_3003FB0 + cmp r1, 0x8 + bne _0800B4E8 + ldrb r0, [r2, 0x2] + cmp r0, 0 + bne _0800B4E8 + strb r1, [r2] + b _0800B4EC + .align 2, 0 +_0800B4E0: .4byte 0x04000128 +_0800B4E4: .4byte gUnknown_3003FB0 +_0800B4E8: + movs r0, 0 + strb r0, [r2] +_0800B4EC: + pop {r0} + bx r0 + thumb_func_end sub_800B4C4 + + thumb_func_start sub_800B4F0 +sub_800B4F0: @ 800B4F0 + push {lr} + ldr r0, _0800B514 @ =gUnknown_3003FB0 + ldrb r0, [r0] + cmp r0, 0 + beq _0800B50E + ldr r1, _0800B518 @ =0x0400010c + ldr r2, _0800B51C @ =0x0000ff3b + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x41 + strh r0, [r1] + movs r0, 0x40 + bl sub_8000B68 +_0800B50E: + pop {r0} + bx r0 + .align 2, 0 +_0800B514: .4byte gUnknown_3003FB0 +_0800B518: .4byte 0x0400010c +_0800B51C: .4byte 0x0000ff3b + thumb_func_end sub_800B4F0 + + thumb_func_start sub_800B520 +sub_800B520: @ 800B520 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r3, r0, 0 + ldr r2, _0800B598 @ =gUnknown_3004F74 + ldr r1, _0800B59C @ =0x04000208 + ldrh r0, [r1] + strh r0, [r2] + movs r0, 0 + strh r0, [r1] + ldr r1, _0800B5A0 @ =gUnknown_3003FB0 + ldr r4, _0800B5A4 @ =0x00000339 + adds r0, r1, r4 + ldrb r4, [r0] + adds r6, r1, 0 + cmp r4, 0x31 + bhi _0800B5B0 + movs r1, 0xCE + lsls r1, 2 + adds r0, r6, r1 + ldrb r0, [r0] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x31 + bls _0800B55E + subs r0, 0x32 + lsls r0, 24 + lsrs r0, 24 +_0800B55E: + movs r2, 0 + ldr r4, _0800B5A8 @ =gUnknown_3000E66 + mov r9, r4 + ldr r1, _0800B5AC @ =gUnknown_3003FA0 + mov r10, r1 + lsls r5, r0, 1 + movs r0, 0x18 + adds r0, r6 + mov r8, r0 + mov r12, r2 + movs r7, 0x64 +_0800B574: + ldrh r0, [r4] + ldrh r1, [r3] + orrs r0, r1 + strh r0, [r4] + adds r0, r2, 0 + muls r0, r7 + adds r0, r5, r0 + add r0, r8 + strh r1, [r0] + mov r1, r12 + strh r1, [r3] + adds r3, 0x2 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _0800B574 + b _0800B5BC + .align 2, 0 +_0800B598: .4byte gUnknown_3004F74 +_0800B59C: .4byte 0x04000208 +_0800B5A0: .4byte gUnknown_3003FB0 +_0800B5A4: .4byte 0x00000339 +_0800B5A8: .4byte gUnknown_3000E66 +_0800B5AC: .4byte gUnknown_3003FA0 +_0800B5B0: + movs r0, 0x1 + strb r0, [r6, 0x12] + ldr r2, _0800B5F4 @ =gUnknown_3000E66 + mov r9, r2 + ldr r4, _0800B5F8 @ =gUnknown_3003FA0 + mov r10, r4 +_0800B5BC: + mov r1, r9 + ldrh r0, [r1] + cmp r0, 0 + beq _0800B5D4 + ldr r2, _0800B5FC @ =0x00000339 + adds r0, r6, r2 + ldrb r1, [r0] + adds r1, 0x1 + movs r2, 0 + strb r1, [r0] + mov r4, r9 + strh r2, [r4] +_0800B5D4: + ldr r1, _0800B600 @ =0x04000208 + ldr r2, _0800B604 @ =gUnknown_3004F74 + ldrh r0, [r2] + strh r0, [r1] + ldr r4, _0800B5FC @ =0x00000339 + adds r0, r6, r4 + ldrb r0, [r0] + mov r1, r10 + strb r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800B5F4: .4byte gUnknown_3000E66 +_0800B5F8: .4byte gUnknown_3003FA0 +_0800B5FC: .4byte 0x00000339 +_0800B600: .4byte 0x04000208 +_0800B604: .4byte gUnknown_3004F74 + thumb_func_end sub_800B520 + + thumb_func_start sub_800B608 +sub_800B608: @ 800B608 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + ldr r2, _0800B664 @ =gUnknown_3004F74 + ldr r1, _0800B668 @ =0x04000208 + ldrh r0, [r1] + strh r0, [r2] + movs r0, 0 + strh r0, [r1] + ldr r1, _0800B66C @ =gUnknown_3003FB0 + ldr r3, _0800B670 @ =0x00000fbd + adds r0, r1, r3 + ldrb r0, [r0] + mov r12, r1 + cmp r0, 0 + bne _0800B674 + movs r3, 0 + ldrb r0, [r1, 0x3] + cmp r3, r0 + bcs _0800B65A + movs r5, 0 + adds r6, r0, 0 +_0800B63A: + movs r2, 0 + lsls r1, r3, 4 + adds r4, r3, 0x1 + add r1, r9 +_0800B642: + lsls r0, r2, 1 + adds r0, r1 + strh r5, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _0800B642 + lsls r0, r4, 24 + lsrs r3, r0, 24 + cmp r3, r6 + bcc _0800B63A +_0800B65A: + movs r0, 0x1 + mov r7, r12 + strb r0, [r7, 0xC] + b _0800B6F0 + .align 2, 0 +_0800B664: .4byte gUnknown_3004F74 +_0800B668: .4byte 0x04000208 +_0800B66C: .4byte gUnknown_3003FB0 +_0800B670: .4byte 0x00000fbd +_0800B674: + movs r3, 0 + mov r0, r12 + ldrb r1, [r0, 0x3] + cmp r3, r1 + bcs _0800B6CA + ldr r0, _0800B708 @ =0x00000fbc + add r0, r12 + ldrb r0, [r0] + lsls r6, r0, 1 + movs r2, 0xCF + lsls r2, 2 + add r2, r12 + mov r8, r2 + mov r10, r1 +_0800B690: + movs r2, 0 + lsls r1, r3, 4 + adds r4, r3, 0x1 + lsls r0, r3, 1 + mov r7, r9 + adds r5, r1, r7 + adds r0, r3 + lsls r0, 3 + adds r0, r3 + lsls r3, r0, 5 +_0800B6A4: + lsls r1, r2, 1 + adds r1, r5 + movs r7, 0x64 + adds r0, r2, 0 + muls r0, r7 + adds r0, r6, r0 + adds r0, r3 + add r0, r8 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _0800B6A4 + lsls r0, r4, 24 + lsrs r3, r0, 24 + cmp r3, r10 + bcc _0800B690 +_0800B6CA: + mov r2, r12 + ldr r0, _0800B70C @ =0x00000fbd + adds r1, r2, r0 + ldrb r0, [r1] + subs r0, 0x1 + movs r3, 0 + strb r0, [r1] + ldr r1, _0800B708 @ =0x00000fbc + adds r2, r1 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x31 + bls _0800B6EC + strb r3, [r2] +_0800B6EC: + mov r2, r12 + strb r3, [r2, 0xC] +_0800B6F0: + ldr r1, _0800B710 @ =0x04000208 + ldr r3, _0800B714 @ =gUnknown_3004F74 + ldrh r0, [r3] + strh r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800B708: .4byte 0x00000fbc +_0800B70C: .4byte 0x00000fbd +_0800B710: .4byte 0x04000208 +_0800B714: .4byte gUnknown_3004F74 + thumb_func_end sub_800B608 + + thumb_func_start sub_800B718 +sub_800B718: @ 800B718 + push {r4,lr} + ldr r3, _0800B740 @ =gUnknown_3003FB0 + ldrb r4, [r3] + cmp r4, 0 + beq _0800B754 + ldrb r0, [r3, 0x1] + cmp r0, 0x2 + beq _0800B74E + cmp r0, 0x4 + bne _0800B77E + movs r0, 0xD + ldrsb r0, [r3, r0] + cmp r0, 0x8 + bgt _0800B744 + ldrb r0, [r3, 0x10] + cmp r0, 0x1 + beq _0800B74E + movs r0, 0x1 + strb r0, [r3, 0x13] + b _0800B77E + .align 2, 0 +_0800B740: .4byte gUnknown_3003FB0 +_0800B744: + ldrb r0, [r3, 0x13] + cmp r0, 0x1 + beq _0800B77E + movs r0, 0 + strb r0, [r3, 0xD] +_0800B74E: + bl sub_800B820 + b _0800B77E +_0800B754: + ldrb r2, [r3, 0x1] + cmp r2, 0x4 + beq _0800B75E + cmp r2, 0x2 + bne _0800B77E +_0800B75E: + ldr r1, _0800B784 @ =gUnknown_3000E64 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + bls _0800B77E + cmp r2, 0x4 + bne _0800B776 + movs r0, 0x2 + strb r0, [r3, 0x13] +_0800B776: + cmp r2, 0x2 + bne _0800B77E + strb r4, [r3, 0x3] + strb r4, [r3, 0xF] +_0800B77E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800B784: .4byte gUnknown_3000E64 + thumb_func_end sub_800B718 + + thumb_func_start sub_800B788 +sub_800B788: @ 800B788 + push {lr} + bl sub_800BAF8 + bl sub_800B820 + pop {r0} + bx r0 + thumb_func_end sub_800B788 + + thumb_func_start sub_800B798 +sub_800B798: @ 800B798 + push {r4,lr} + ldr r4, _0800B7C4 @ =gUnknown_3003FB0 + ldr r0, _0800B7C8 @ =0x04000128 + ldr r1, [r0] + lsls r0, r1, 26 + lsrs r0, 30 + strb r0, [r4, 0x2] + ldrb r0, [r4, 0x1] + cmp r0, 0x2 + beq _0800B7CC + cmp r0, 0x4 + bne _0800B7EA + lsls r0, r1, 25 + lsrs r0, 31 + strb r0, [r4, 0x10] + bl sub_800B92C + bl sub_800BA44 + bl sub_800BB2C + b _0800B7EA + .align 2, 0 +_0800B7C4: .4byte gUnknown_3003FB0 +_0800B7C8: .4byte 0x04000128 +_0800B7CC: + bl sub_800B830 + lsls r0, 24 + cmp r0, 0 + beq _0800B7EA + ldrb r0, [r4] + cmp r0, 0 + beq _0800B7E6 + movs r0, 0x3 + strb r0, [r4, 0x1] + movs r0, 0x8 + strb r0, [r4, 0xD] + b _0800B7EA +_0800B7E6: + movs r0, 0x4 + strb r0, [r4, 0x1] +_0800B7EA: + ldr r3, _0800B810 @ =gUnknown_3003FB0 + ldrb r0, [r3, 0xD] + adds r0, 0x1 + movs r2, 0 + strb r0, [r3, 0xD] + ldr r1, _0800B814 @ =gUnknown_3000E64 + strb r2, [r1] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x8 + bne _0800B80A + ldr r0, _0800B818 @ =gUnknown_3004F70 + ldr r2, _0800B81C @ =0x00000fbd + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] +_0800B80A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800B810: .4byte gUnknown_3003FB0 +_0800B814: .4byte gUnknown_3000E64 +_0800B818: .4byte gUnknown_3004F70 +_0800B81C: .4byte 0x00000fbd + thumb_func_end sub_800B798 + + thumb_func_start sub_800B820 +sub_800B820: @ 800B820 + ldr r0, _0800B82C @ =0x04000128 + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_0800B82C: .4byte 0x04000128 + thumb_func_end sub_800B820 + + thumb_func_start sub_800B830 +sub_800B830: @ 800B830 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r5, 0 + ldr r6, _0800B84C @ =0x0000ffff + ldr r0, _0800B850 @ =gUnknown_3003FB0 + ldrb r1, [r0, 0xE] + adds r7, r0, 0 + cmp r1, 0x1 + bne _0800B85C + ldr r1, _0800B854 @ =0x0400012a + ldr r2, _0800B858 @ =0x00008fff + b _0800B860 + .align 2, 0 +_0800B84C: .4byte 0x0000ffff +_0800B850: .4byte gUnknown_3003FB0 +_0800B854: .4byte 0x0400012a +_0800B858: .4byte 0x00008fff +_0800B85C: + ldr r1, _0800B8B4 @ =0x0400012a + ldr r2, _0800B8B8 @ =0x0000b9a0 +_0800B860: + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _0800B8BC @ =gUnknown_3003FB4 + ldr r3, _0800B8C0 @ =0x04000120 + ldr r0, [r3] + ldr r1, [r3, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + movs r0, 0 + movs r1, 0 + str r0, [r3] + str r1, [r3, 0x4] + strb r0, [r2, 0xA] + movs r4, 0 + ldr r0, _0800B8C4 @ =gUnknown_3000E6B + mov r9, r0 + mov r8, r2 + ldr r2, _0800B8C8 @ =0x00008fff + ldr r1, _0800B8CC @ =0x0000ffff + mov r12, r1 +_0800B888: + lsls r0, r4, 1 + add r0, r8 + ldrh r3, [r0] + movs r0, 0x4 + negs r0, r0 + ands r0, r3 + ldr r1, _0800B8B8 @ =0x0000b9a0 + cmp r0, r1 + beq _0800B8A0 + adds r0, r3, 0 + cmp r0, r2 + bne _0800B8D0 +_0800B8A0: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r3, 0 + cmp r6, r0 + bls _0800B8D8 + cmp r0, 0 + beq _0800B8D8 + adds r6, r3, 0 + b _0800B8D8 + .align 2, 0 +_0800B8B4: .4byte 0x0400012a +_0800B8B8: .4byte 0x0000b9a0 +_0800B8BC: .4byte gUnknown_3003FB4 +_0800B8C0: .4byte 0x04000120 +_0800B8C4: .4byte gUnknown_3000E6B +_0800B8C8: .4byte 0x00008fff +_0800B8CC: .4byte 0x0000ffff +_0800B8D0: + cmp r0, r12 + beq _0800B8E2 + movs r5, 0 + b _0800B8E2 +_0800B8D8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _0800B888 +_0800B8E2: + strb r5, [r7, 0x3] + adds r0, r5, 0 + cmp r0, 0x1 + bls _0800B912 + mov r2, r9 + ldrb r2, [r2] + cmp r0, r2 + bne _0800B904 + ldrh r1, [r7, 0x4] + ldr r0, _0800B900 @ =0x00008fff + cmp r1, r0 + bne _0800B904 + movs r0, 0x1 + b _0800B91E + .align 2, 0 +_0800B900: .4byte 0x00008fff +_0800B904: + ldrb r0, [r7, 0x3] + cmp r0, 0x1 + bls _0800B912 + movs r0, 0x3 + ands r6, r0 + adds r0, r6, 0x1 + b _0800B914 +_0800B912: + movs r0, 0 +_0800B914: + strb r0, [r7, 0xF] + ldrb r0, [r7, 0x3] + mov r1, r9 + strb r0, [r1] + movs r0, 0 +_0800B91E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_800B830 + + thumb_func_start sub_800B92C +sub_800B92C: @ 800B92C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + ldr r0, _0800B984 @ =0x04000120 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + ldr r0, _0800B988 @ =gUnknown_3003FB0 + ldrb r1, [r0, 0x16] + adds r6, r0, 0 + cmp r1, 0 + bne _0800B990 + movs r4, 0 + ldr r7, _0800B98C @ =gUnknown_3000E6A + ldrb r0, [r6, 0x3] + cmp r4, r0 + bcs _0800B97A + adds r5, r6, 0 + ldrh r1, [r6, 0x14] + adds r3, r7, 0 + adds r2, r6, 0 +_0800B95A: + lsls r0, r4, 1 + add r0, sp + ldrh r0, [r0] + cmp r1, r0 + beq _0800B96E + ldrb r0, [r3] + cmp r0, 0 + beq _0800B96E + movs r0, 0x1 + strb r0, [r5, 0x11] +_0800B96E: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r2, 0x3] + cmp r4, r0 + bcc _0800B95A +_0800B97A: + movs r0, 0 + strh r0, [r6, 0x14] + movs r0, 0x1 + strb r0, [r7] + b _0800BA30 + .align 2, 0 +_0800B984: .4byte 0x04000120 +_0800B988: .4byte gUnknown_3003FB0 +_0800B98C: .4byte gUnknown_3000E6A +_0800B990: + ldr r2, _0800BA00 @ =0x00000fbc + adds r1, r6, r2 + adds r2, 0x1 + adds r0, r6, r2 + ldrb r2, [r0] + ldrb r1, [r1] + adds r0, r2, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x31 + bls _0800B9AC + subs r0, 0x32 + lsls r0, 24 + lsrs r0, 24 +_0800B9AC: + cmp r2, 0x31 + bhi _0800BA08 + movs r4, 0 + ldrb r1, [r6, 0x3] + cmp r4, r1 + bcs _0800BA0C + adds r5, r6, 0 + ldr r7, _0800BA04 @ =gUnknown_3000E68 + lsls r0, 1 + mov r12, r0 + movs r2, 0xCF + lsls r2, 2 + adds r2, r6 + mov r8, r2 +_0800B9C8: + lsls r1, r4, 1 + mov r2, sp + adds r0, r2, r1 + ldrh r3, [r0] + ldrh r2, [r5, 0x14] + adds r0, r3, r2 + strh r0, [r5, 0x14] + ldrh r0, [r7] + orrs r0, r3 + strh r0, [r7] + ldrb r2, [r5, 0x17] + movs r0, 0x64 + muls r0, r2 + add r0, r12 + adds r1, r4 + lsls r1, 3 + adds r1, r4 + lsls r1, 5 + adds r0, r1 + add r0, r8 + strh r3, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5, 0x3] + cmp r4, r0 + bcc _0800B9C8 + b _0800BA0C + .align 2, 0 +_0800BA00: .4byte 0x00000fbc +_0800BA04: .4byte gUnknown_3000E68 +_0800BA08: + movs r0, 0x2 + strb r0, [r6, 0x12] +_0800BA0C: + ldrb r0, [r6, 0x17] + adds r0, 0x1 + strb r0, [r6, 0x17] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8 + bne _0800BA30 + ldr r2, _0800BA3C @ =gUnknown_3000E68 + ldrh r0, [r2] + cmp r0, 0 + beq _0800BA30 + ldr r1, _0800BA40 @ =0x00000fbd + adds r0, r6, r1 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + movs r0, 0 + strh r0, [r2] +_0800BA30: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800BA3C: .4byte gUnknown_3000E68 +_0800BA40: .4byte 0x00000fbd + thumb_func_end sub_800B92C + + thumb_func_start sub_800BA44 +sub_800BA44: @ 800BA44 + push {r4,lr} + ldr r0, _0800BA80 @ =gUnknown_3003FB0 + ldrb r1, [r0, 0x16] + adds r4, r0, 0 + cmp r1, 0x8 + bne _0800BA96 + ldr r1, _0800BA84 @ =0x0400012a + ldrh r0, [r4, 0x14] + strh r0, [r1] + ldr r1, _0800BA88 @ =gUnknown_3000E65 + ldrb r2, [r1] + cmp r2, 0 + bne _0800BA90 + ldr r0, _0800BA8C @ =0x00000339 + adds r1, r4, r0 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + movs r0, 0xCE + lsls r0, 2 + adds r1, r4, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x31 + bls _0800BAEC + strb r2, [r1] + b _0800BAEC + .align 2, 0 +_0800BA80: .4byte gUnknown_3003FB0 +_0800BA84: .4byte 0x0400012a +_0800BA88: .4byte gUnknown_3000E65 +_0800BA8C: .4byte 0x00000339 +_0800BA90: + movs r0, 0 + strb r0, [r1] + b _0800BAEC +_0800BA96: + ldr r1, _0800BABC @ =gUnknown_3000E65 + ldrb r0, [r1] + cmp r0, 0 + bne _0800BAB2 + ldr r2, _0800BAC0 @ =0x00000339 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0800BAAC + movs r0, 0x1 + strb r0, [r1] +_0800BAAC: + ldrb r0, [r1] + cmp r0, 0 + beq _0800BAC8 +_0800BAB2: + ldr r1, _0800BAC4 @ =0x0400012a + movs r0, 0 + strh r0, [r1] + b _0800BAE6 + .align 2, 0 +_0800BABC: .4byte gUnknown_3000E65 +_0800BAC0: .4byte 0x00000339 +_0800BAC4: .4byte 0x0400012a +_0800BAC8: + ldr r3, _0800BAF4 @ =0x0400012a + movs r1, 0xCE + lsls r1, 2 + adds r0, r4, r1 + ldrb r0, [r0] + lsls r0, 1 + ldrb r2, [r4, 0x16] + movs r1, 0x64 + muls r1, r2 + adds r0, r1 + adds r1, r4, 0 + adds r1, 0x18 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r3] +_0800BAE6: + ldrb r0, [r4, 0x16] + adds r0, 0x1 + strb r0, [r4, 0x16] +_0800BAEC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800BAF4: .4byte 0x0400012a + thumb_func_end sub_800BA44 + + thumb_func_start sub_800BAF8 +sub_800BAF8: @ 800BAF8 + push {lr} + ldr r0, _0800BB18 @ =gUnknown_3003FB0 + ldrb r0, [r0] + cmp r0, 0 + beq _0800BB14 + ldr r2, _0800BB1C @ =0x0400010e + ldrh r1, [r2] + ldr r0, _0800BB20 @ =0x0000ff7f + ands r0, r1 + strh r0, [r2] + ldr r1, _0800BB24 @ =0x0400010c + ldr r2, _0800BB28 @ =0x0000ff3b + adds r0, r2, 0 + strh r0, [r1] +_0800BB14: + pop {r0} + bx r0 + .align 2, 0 +_0800BB18: .4byte gUnknown_3003FB0 +_0800BB1C: .4byte 0x0400010e +_0800BB20: .4byte 0x0000ff7f +_0800BB24: .4byte 0x0400010c +_0800BB28: .4byte 0x0000ff3b + thumb_func_end sub_800BAF8 + + thumb_func_start sub_800BB2C +sub_800BB2C: @ 800BB2C + push {lr} + ldr r1, _0800BB40 @ =gUnknown_3003FB0 + ldrb r0, [r1, 0x17] + cmp r0, 0x8 + bne _0800BB44 + movs r0, 0 + strb r0, [r1, 0x16] + strb r0, [r1, 0x17] + b _0800BB54 + .align 2, 0 +_0800BB40: .4byte gUnknown_3003FB0 +_0800BB44: + ldrb r0, [r1] + cmp r0, 0 + beq _0800BB54 + ldr r0, _0800BB58 @ =0x0400010e + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] +_0800BB54: + pop {r0} + bx r0 + .align 2, 0 +_0800BB58: .4byte 0x0400010e + thumb_func_end sub_800BB2C + + thumb_func_start sub_800BB5C +sub_800BB5C: @ 800BB5C + push {r4-r6,lr} + ldr r1, _0800BBA4 @ =gUnknown_3003FB0 + ldr r2, _0800BBA8 @ =0x00000339 + adds r0, r1, r2 + movs r2, 0 + strb r2, [r0] + movs r3, 0xCE + lsls r3, 2 + adds r0, r1, r3 + strb r2, [r0] + movs r0, 0 + movs r6, 0x64 + adds r5, r1, 0 + adds r5, 0x18 + ldr r4, _0800BBAC @ =0x0000efff +_0800BB7A: + movs r2, 0 + adds r1, r0, 0x1 + adds r3, r0, 0 + muls r3, r6 +_0800BB82: + lsls r0, r2, 1 + adds r0, r3 + adds r0, r5 + strh r4, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x31 + bls _0800BB82 + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0x7 + bls _0800BB7A + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800BBA4: .4byte gUnknown_3003FB0 +_0800BBA8: .4byte 0x00000339 +_0800BBAC: .4byte 0x0000efff + thumb_func_end sub_800BB5C + + thumb_func_start sub_800BBB0 +sub_800BBB0: @ 800BBB0 + push {r4-r7,lr} + ldr r1, _0800BC10 @ =gUnknown_3003FB0 + ldr r2, _0800BC14 @ =0x00000fbd + adds r0, r1, r2 + movs r2, 0 + strb r2, [r0] + ldr r3, _0800BC18 @ =0x00000fbc + adds r0, r1, r3 + strb r2, [r0] + movs r0, 0x64 + mov r12, r0 + movs r3, 0xCF + lsls r3, 2 + adds r7, r1, r3 + ldr r6, _0800BC1C @ =0x0000efff +_0800BBCE: + movs r3, 0 + lsls r0, r2, 1 + adds r5, r2, 0x1 + adds r0, r2 + lsls r0, 3 + adds r0, r2 + lsls r4, r0, 5 +_0800BBDC: + movs r2, 0 + adds r1, r3, 0x1 + mov r0, r12 + muls r0, r3 + adds r3, r0, 0 +_0800BBE6: + lsls r0, r2, 1 + adds r0, r3 + adds r0, r4 + adds r0, r7 + strh r6, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x31 + bls _0800BBE6 + lsls r0, r1, 24 + lsrs r3, r0, 24 + cmp r3, 0x7 + bls _0800BBDC + lsls r0, r5, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0800BBCE + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800BC10: .4byte gUnknown_3003FB0 +_0800BC14: .4byte 0x00000fbd +_0800BC18: .4byte 0x00000fbc +_0800BC1C: .4byte 0x0000efff + thumb_func_end sub_800BBB0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/link_rfu.s b/asm/link_rfu.s new file mode 100644 index 000000000..b8453706c --- /dev/null +++ b/asm/link_rfu.s @@ -0,0 +1,10821 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80FD3A4 +sub_80FD3A4: @ 80FD3A4 + push {r4,lr} + bl rfu_REQBN_softReset_and_checkID + adds r4, r0, 0 + ldr r0, _080FD3E8 @ =0x00008001 + cmp r4, r0 + bne _080FD3B8 + ldr r1, _080FD3EC @ =gUnknown_3005E10 + movs r0, 0x1 + strb r0, [r1, 0x8] +_080FD3B8: + ldr r0, _080FD3EC @ =gUnknown_3005E10 + ldrb r2, [r0, 0x4] + adds r1, r0, 0 + cmp r2, 0x17 + beq _080FD3CC + cmp r2, 0x1 + beq _080FD3CC + movs r0, 0 + strb r0, [r1, 0x5] + strb r0, [r1, 0x4] +_080FD3CC: + movs r0, 0 + strb r0, [r1, 0x7] + strb r0, [r1, 0xD] + strb r0, [r1, 0x1] + strb r0, [r1] + movs r0, 0xFF + strb r0, [r1, 0x6] + bl sub_80FEAF4 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FD3E8: .4byte 0x00008001 +_080FD3EC: .4byte gUnknown_3005E10 + thumb_func_end sub_80FD3A4 + + thumb_func_start sub_80FD3F0 +sub_80FD3F0: @ 80FD3F0 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080FD410 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + bne _080FD418 + ldr r0, _080FD414 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x2] + movs r2, 0 + cmp r0, 0x1 + bne _080FD420 + movs r2, 0x1 + b _080FD420 + .align 2, 0 +_080FD410: .4byte gUnknown_3007460 +_080FD414: .4byte gUnknown_3005E10 +_080FD418: + ldr r0, _080FD42C @ =gUnknown_3005E10 + ldrb r1, [r0, 0x3] + movs r1, 0 + strb r1, [r0, 0x3] +_080FD420: + adds r0, r2, 0 + bl rfu_REQ_sendData + pop {r0} + bx r0 + .align 2, 0 +_080FD42C: .4byte gUnknown_3005E10 + thumb_func_end sub_80FD3F0 + + thumb_func_start sub_80FD430 +sub_80FD430: @ 80FD430 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + cmp r5, 0 + beq _080FD478 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r4, _080FD468 @ =gUnknown_3005E10 + ldr r2, _080FD46C @ =0x01000024 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + movs r0, 0xFF + strb r0, [r4, 0x6] + str r5, [r4, 0x40] + str r6, [r4, 0x44] + ldr r0, _080FD470 @ =sub_80FE394 + bl rfu_setMSCCallback + ldr r0, _080FD474 @ =sub_80FDC98 + bl rfu_setREQCallback + movs r0, 0 + b _080FD47A + .align 2, 0 +_080FD468: .4byte gUnknown_3005E10 +_080FD46C: .4byte 0x01000024 +_080FD470: .4byte sub_80FE394 +_080FD474: .4byte sub_80FDC98 +_080FD478: + movs r0, 0x4 +_080FD47A: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80FD430 + + thumb_func_start sub_80FD484 +sub_80FD484: @ 80FD484 + push {r4,lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r4, _080FD4A8 @ =gUnknown_3005E10 + ldr r2, _080FD4AC @ =0x01000020 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + movs r0, 0xFF + strb r0, [r4, 0x6] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FD4A8: .4byte gUnknown_3005E10 +_080FD4AC: .4byte 0x01000020 + thumb_func_end sub_80FD484 + + thumb_func_start sub_80FD4B0 +sub_80FD4B0: @ 80FD4B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80FD4E4 + ldr r1, _080FD4E0 @ =gUnknown_3005E10 + movs r2, 0x1 + strb r2, [r1, 0x4] + movs r0, 0x2 + strb r0, [r1, 0x5] + str r4, [r1, 0x3C] + ldrb r0, [r4, 0x11] + strb r0, [r1, 0x9] + ldrh r0, [r4, 0x12] + strh r0, [r1, 0x32] + ldrh r0, [r4, 0x14] + strh r0, [r1, 0x18] + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _080FD4D8 + strb r2, [r1, 0xB] +_080FD4D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FD4E0: .4byte gUnknown_3005E10 + thumb_func_end sub_80FD4B0 + + thumb_func_start sub_80FD4E4 +sub_80FD4E4: @ 80FD4E4 + push {r4,r5,lr} + ldr r2, _080FD528 @ =gUnknown_3005E10 + movs r0, 0 + strb r0, [r2, 0x5] + strb r0, [r2, 0x4] + movs r1, 0xFF + strb r1, [r2, 0x6] + strb r0, [r2, 0x7] + strb r0, [r2, 0x10] + strb r0, [r2, 0xC] + adds r1, r2, 0 + adds r1, 0x24 + strb r0, [r1] + adds r1, 0xC + strb r0, [r1] + movs r3, 0 + adds r5, r2, 0 + adds r5, 0x28 + movs r4, 0 + adds r2, 0x34 +_080FD50C: + lsls r1, r3, 1 + adds r0, r1, r5 + strh r4, [r0] + adds r1, r2 + strh r4, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FD50C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FD528: .4byte gUnknown_3005E10 + thumb_func_end sub_80FD4E4 + + thumb_func_start sub_80FD52C +sub_80FD52C: @ 80FD52C + ldr r1, _080FD534 @ =gUnknown_3005E10 + movs r0, 0x15 + strb r0, [r1, 0x4] + bx lr + .align 2, 0 +_080FD534: .4byte gUnknown_3005E10 + thumb_func_end sub_80FD52C + + thumb_func_start sub_80FD538 +sub_80FD538: @ 80FD538 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r3, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + ldr r1, _080FD570 @ =gUnknown_3005E10 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080FD574 + cmp r0, 0x8 + bne _080FD55E + cmp r5, 0x1 + beq _080FD574 +_080FD55E: + movs r0, 0x1 + strh r0, [r1, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x1 + b _080FD606 + .align 2, 0 +_080FD570: .4byte gUnknown_3005E10 +_080FD574: + bl rfu_getMasterSlave + lsls r0, 24 + cmp r0, 0 + bne _080FD594 + ldr r1, _080FD590 @ =gUnknown_3005E10 + movs r0, 0x2 + strh r0, [r1, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x2 + b _080FD606 + .align 2, 0 +_080FD590: .4byte gUnknown_3005E10 +_080FD594: + movs r2, 0 + ldrh r0, [r6] + ldr r4, _080FD5C8 @ =0x0000ffff + adds r1, r6, 0x2 + ldr r3, _080FD5CC @ =gUnknown_3005E10 + cmp r0, r4 + beq _080FD5B4 +_080FD5A2: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bhi _080FD5B4 + ldrh r0, [r1] + adds r1, 0x2 + cmp r0, r4 + bne _080FD5A2 +_080FD5B4: + cmp r2, 0x10 + bne _080FD5D0 + movs r0, 0x4 + strh r0, [r3, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x4 + b _080FD606 + .align 2, 0 +_080FD5C8: .4byte 0x0000ffff +_080FD5CC: .4byte gUnknown_3005E10 +_080FD5D0: + cmp r5, 0x1 + bls _080FD5DE + movs r0, 0x1 + strb r0, [r3, 0x7] + movs r5, 0x1 + movs r7, 0 + b _080FD5E2 +_080FD5DE: + movs r0, 0 + strb r0, [r3, 0x7] +_080FD5E2: + cmp r5, 0 + beq _080FD5EC + movs r0, 0x5 + strb r0, [r3, 0x4] + b _080FD5FA +_080FD5EC: + movs r0, 0x9 + strb r0, [r3, 0x4] + ldrb r0, [r3, 0xB] + cmp r0, 0 + beq _080FD5FA + movs r0, 0x2 + strb r0, [r3, 0xB] +_080FD5FA: + strb r5, [r3, 0x6] + strh r7, [r3, 0x1A] + mov r0, r8 + strh r0, [r3, 0x26] + str r6, [r3, 0x20] + movs r0, 0 +_080FD606: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FD538 + + thumb_func_start sub_80FD610 +sub_80FD610: @ 80FD610 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldr r1, _080FD644 @ =gUnknown_3005E10 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080FD648 + subs r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bls _080FD648 + movs r0, 0x1 + strh r0, [r1, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x1 + b _080FD6E8 + .align 2, 0 +_080FD644: .4byte gUnknown_3005E10 +_080FD648: + bl rfu_getMasterSlave + lsls r0, 24 + cmp r0, 0 + bne _080FD668 + ldr r1, _080FD664 @ =gUnknown_3005E10 + movs r0, 0x2 + strh r0, [r1, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x2 + b _080FD6E8 + .align 2, 0 +_080FD664: .4byte gUnknown_3005E10 +_080FD668: + movs r2, 0 + ldr r0, _080FD6B4 @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r3, [r1, 0x8] + ldr r5, _080FD6B8 @ =gUnknown_3005E10 + adds r7, r0, 0 + cmp r2, r3 + bcs _080FD696 + ldrh r0, [r1, 0x14] + cmp r0, r6 + beq _080FD696 + adds r4, r1, 0 + adds r1, r3, 0 +_080FD682: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r1 + bcs _080FD696 + lsls r0, r2, 5 + adds r0, r4, r0 + ldrh r0, [r0, 0x14] + cmp r0, r6 + bne _080FD682 +_080FD696: + ldr r0, [r7] + ldrb r0, [r0, 0x8] + cmp r0, 0 + beq _080FD6A2 + cmp r2, r0 + bne _080FD6BC +_080FD6A2: + movs r0, 0x3 + strh r0, [r5, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x3 + b _080FD6E8 + .align 2, 0 +_080FD6B4: .4byte gUnknown_3007460 +_080FD6B8: .4byte gUnknown_3005E10 +_080FD6BC: + ldrb r0, [r5, 0x4] + cmp r0, 0 + beq _080FD6C6 + cmp r0, 0x9 + bne _080FD6CE +_080FD6C6: + movs r0, 0xC + strb r0, [r5, 0x4] + movs r0, 0xD + b _080FD6D4 +_080FD6CE: + movs r0, 0xB + strb r0, [r5, 0x4] + movs r0, 0xC +_080FD6D4: + strb r0, [r5, 0x5] + strh r6, [r5, 0x1E] + mov r0, r8 + strh r0, [r5, 0x1A] + ldrb r0, [r5, 0x7] + cmp r0, 0 + beq _080FD6E6 + movs r0, 0x7 + strb r0, [r5, 0x7] +_080FD6E6: + movs r0, 0 +_080FD6E8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FD610 + + thumb_func_start sub_80FD6F4 +sub_80FD6F4: @ 80FD6F4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r6, _080FD758 @ =gUnknown_3005E10 + adds r3, r6, 0 + adds r3, 0x30 + ldrb r2, [r3] + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080FD750 + adds r0, r2, 0 + bics r0, r1 + strb r0, [r3] + movs r4, 0 + ldr r7, _080FD75C @ =gUnknown_3007460 + movs r5, 0x1 + adds r3, 0x4 + movs r2, 0 +_080FD71A: + adds r0, r1, 0 + asrs r0, r4 + ands r0, r5 + cmp r0, 0 + beq _080FD72A + lsls r0, r4, 1 + adds r0, r3 + strh r2, [r0] +_080FD72A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080FD71A + ldr r0, [r7] + ldrb r4, [r0, 0x3] + ands r4, r1 + cmp r4, 0 + beq _080FD744 + adds r0, r4, 0 + bl sub_80FE818 +_080FD744: + ldr r0, _080FD758 @ =gUnknown_3005E10 + strh r4, [r0, 0x14] + movs r0, 0x33 + adds r1, r4, 0 + bl sub_80FE7F0 +_080FD750: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD758: .4byte gUnknown_3005E10 +_080FD75C: .4byte gUnknown_3007460 + thumb_func_end sub_80FD6F4 + + thumb_func_start sub_80FD760 +sub_80FD760: @ 80FD760 + push {r4,r5,lr} + lsls r0, 24 + movs r2, 0 + ldr r1, _080FD77C @ =gUnknown_3005E10 + strb r2, [r1, 0x7] + adds r5, r1, 0 + cmp r0, 0 + beq _080FD780 + bl sub_80FD4E4 + movs r0, 0x17 + strb r0, [r5, 0x4] + b _080FD84A + .align 2, 0 +_080FD77C: .4byte gUnknown_3005E10 +_080FD780: + ldrb r0, [r5, 0x4] + subs r0, 0x5 + cmp r0, 0xD + bhi _080FD836 + lsls r0, 2 + ldr r1, _080FD794 @ =_080FD798 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FD794: .4byte _080FD798 + .align 2, 0 +_080FD798: + .4byte _080FD7D0 + .4byte _080FD7DC + .4byte _080FD7DC + .4byte _080FD83C + .4byte _080FD7E6 + .4byte _080FD7F0 + .4byte _080FD7F0 + .4byte _080FD7FA + .4byte _080FD804 + .4byte _080FD804 + .4byte _080FD83C + .4byte _080FD80A + .4byte _080FD830 + .4byte _080FD830 +_080FD7D0: + movs r1, 0 + movs r0, 0x8 + strb r0, [r5, 0x4] + strb r1, [r5, 0x5] + movs r2, 0x13 + b _080FD83C +_080FD7DC: + movs r0, 0x7 + strb r0, [r5, 0x4] + movs r0, 0x8 + strb r0, [r5, 0x5] + b _080FD83C +_080FD7E6: + movs r0, 0 + strb r0, [r5, 0x5] + strb r0, [r5, 0x4] + movs r2, 0x21 + b _080FD83C +_080FD7F0: + movs r1, 0 + movs r0, 0xB + strb r0, [r5, 0x4] + strb r1, [r5, 0x5] + b _080FD83C +_080FD7FA: + movs r0, 0 + strb r0, [r5, 0x5] + strb r0, [r5, 0x4] + movs r2, 0x23 + b _080FD83C +_080FD804: + movs r0, 0xE + strb r0, [r5, 0x4] + b _080FD83C +_080FD80A: + ldrb r0, [r5, 0x11] + strb r0, [r5, 0x4] + ldrb r0, [r5, 0x12] + strb r0, [r5, 0x5] + ldr r4, _080FD82C @ =gUnknown_3007460 + ldr r0, [r4] + ldrb r0, [r0, 0x3] + bl sub_80FE818 + ldr r0, [r4] + ldrb r0, [r0, 0x3] + strh r0, [r5, 0x14] + movs r0, 0x33 + movs r1, 0x1 + bl sub_80FE7F0 + b _080FD84A + .align 2, 0 +_080FD82C: .4byte gUnknown_3007460 +_080FD830: + movs r0, 0x12 + strb r0, [r5, 0x4] + b _080FD83C +_080FD836: + strb r2, [r5, 0x5] + strb r2, [r5, 0x4] + movs r2, 0x43 +_080FD83C: + ldrb r0, [r5, 0x4] + cmp r0, 0 + bne _080FD84A + adds r0, r2, 0 + movs r1, 0 + bl sub_80FE7F0 +_080FD84A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80FD760 + + thumb_func_start sub_80FD850 +sub_80FD850: @ 80FD850 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + mov r8, r1 + mov r5, sp + adds r5, 0x1 + mov r4, sp + adds r4, 0x2 + mov r1, sp + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_81E13F0 + mov r0, sp + ldrb r0, [r0] + adds r7, r4, 0 + cmp r0, 0 + beq _080FD922 + ldr r1, _080FD8EC @ =gUnknown_3005E10 + mov r0, sp + ldrb r0, [r0] + strh r0, [r1, 0x14] + ldrb r0, [r5] + strh r0, [r1, 0x16] + ldrb r0, [r1, 0x9] + adds r6, r1, 0 + cmp r0, 0 + beq _080FD90A + movs r0, 0x1 + strb r0, [r6, 0xA] + ldrb r0, [r6, 0x6] + cmp r0, 0 + bne _080FD8A6 + ldrb r0, [r5] + cmp r0, 0 + bne _080FD8A6 + movs r0, 0x4 + strb r0, [r6, 0xA] +_080FD8A6: + ldrb r0, [r6, 0xA] + cmp r0, 0x1 + bne _080FD8F0 + movs r2, 0 + mov r4, sp + movs r5, 0x1 + mov r12, r6 + mov r3, r12 + adds r3, 0x30 + movs r6, 0x34 + add r6, r12 + mov r9, r6 +_080FD8BE: + ldrb r0, [r4] + asrs r0, r2 + ands r0, r5 + cmp r0, 0 + beq _080FD8DC + adds r0, r5, 0 + lsls r0, r2 + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + lsls r0, r2, 1 + add r0, r9 + mov r6, r12 + ldrh r1, [r6, 0x32] + strh r1, [r0] +_080FD8DC: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080FD8BE + movs r0, 0x31 + b _080FD902 + .align 2, 0 +_080FD8EC: .4byte gUnknown_3005E10 +_080FD8F0: + movs r0, 0 + strb r0, [r6, 0xA] + mov r0, sp + ldrb r0, [r0] + bl sub_80FE818 + movs r0, 0x1 + mov r8, r0 + movs r0, 0x33 +_080FD902: + movs r1, 0x1 + bl sub_80FE7F0 + b _080FD91E +_080FD90A: + mov r0, sp + ldrb r0, [r0] + bl sub_80FE818 + movs r1, 0x1 + mov r8, r1 + movs r0, 0x30 + movs r1, 0x2 + bl sub_80FE7F0 +_080FD91E: + bl sub_80FEAF4 +_080FD922: + ldr r0, _080FDA0C @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FD9FC + ldrb r0, [r7] + cmp r0, 0 + beq _080FD980 + movs r2, 0 + ldr r6, _080FDA10 @ =gUnknown_3005E10 + movs r3, 0x1 + adds r4, r6, 0 + adds r4, 0x34 + adds r6, 0x30 + adds r5, r7, 0 +_080FD940: + ldrb r0, [r6] + asrs r0, r2 + ands r0, r3 + cmp r0, 0 + beq _080FD95C + ldrb r0, [r5] + asrs r0, r2 + ands r0, r3 + cmp r0, 0 + beq _080FD95C + lsls r0, r2, 1 + adds r0, r4 + movs r1, 0 + strh r1, [r0] +_080FD95C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080FD940 + ldr r3, _080FDA10 @ =gUnknown_3005E10 + adds r2, r3, 0 + adds r2, 0x30 + ldrb r1, [r7] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldrb r0, [r7] + strh r0, [r3, 0x14] + movs r0, 0x32 + movs r1, 0x1 + bl sub_80FE7F0 +_080FD980: + ldr r0, _080FDA10 @ =gUnknown_3005E10 + adds r3, r0, 0 + adds r3, 0x30 + ldrb r1, [r3] + adds r6, r0, 0 + cmp r1, 0 + beq _080FD9F8 + movs r4, 0 + movs r2, 0 + movs r5, 0x1 +_080FD994: + ldrb r0, [r3] + asrs r0, r2 + ands r0, r5 + cmp r0, 0 + beq _080FD9C6 + lsls r1, r2, 1 + adds r0, r6, 0 + adds r0, 0x34 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _080FD9C6 + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _080FD9C6 + adds r0, r5, 0 + lsls r0, r2 + ldrb r1, [r3] + bics r1, r0 + strb r1, [r3] + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080FD9C6: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080FD994 + cmp r4, 0 + beq _080FD9EA + adds r0, r4, 0 + bl sub_80FE818 + movs r6, 0x1 + mov r8, r6 + ldr r0, _080FDA10 @ =gUnknown_3005E10 + strh r4, [r0, 0x14] + movs r0, 0x33 + movs r1, 0x1 + bl sub_80FE7F0 +_080FD9EA: + ldr r0, _080FDA10 @ =gUnknown_3005E10 + adds r1, r0, 0 + adds r1, 0x30 + ldrb r1, [r1] + adds r6, r0, 0 + cmp r1, 0 + bne _080FD9FC +_080FD9F8: + movs r0, 0 + strb r0, [r6, 0xA] +_080FD9FC: + mov r0, r8 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FDA0C: .4byte gUnknown_3007460 +_080FDA10: .4byte gUnknown_3005E10 + thumb_func_end sub_80FD850 + + thumb_func_start sub_80FDA14 +sub_80FDA14: @ 80FDA14 + push {lr} + bl rfu_syncVBlank + lsls r0, 16 + cmp r0, 0 + beq _080FDA2C + movs r0, 0xF1 + movs r1, 0 + bl sub_80FE7F0 + bl sub_80FEAF4 +_080FDA2C: + pop {r0} + bx r0 + thumb_func_end sub_80FDA14 + + thumb_func_start sub_80FDA30 +sub_80FDA30: @ 80FDA30 + push {r4,lr} + adds r3, r0, 0 + ldr r1, _080FDA48 @ =gUnknown_3005E10 + ldr r2, [r1, 0x40] + cmp r2, 0 + bne _080FDA4C + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _080FDA4C + strb r2, [r1, 0x4] + b _080FDC1A + .align 2, 0 +_080FDA48: .4byte gUnknown_3005E10 +_080FDA4C: + ldr r0, _080FDA80 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x7] + cmp r0, 0 + beq _080FDA5A + adds r0, r3, 0 + bl sub_80FDC28 +_080FDA5A: + ldr r4, _080FDA80 @ =gUnknown_3005E10 + ldrb r0, [r4, 0x4] + cmp r0, 0 + bne _080FDA64 + b _080FDBE4 +_080FDA64: + bl rfu_waitREQComplete + movs r0, 0x1 + strb r0, [r4, 0xE] + ldrb r0, [r4, 0x4] + subs r0, 0x1 + cmp r0, 0x16 + bls _080FDA76 + b _080FDBDA +_080FDA76: + lsls r0, 2 + ldr r1, _080FDA84 @ =_080FDA88 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FDA80: .4byte gUnknown_3005E10 +_080FDA84: .4byte _080FDA88 + .align 2, 0 +_080FDA88: + .4byte _080FDB08 + .4byte _080FDB40 + .4byte _080FDB46 + .4byte _080FDB5C + .4byte _080FDB74 + .4byte _080FDB7A + .4byte _080FDB80 + .4byte _080FDBDA + .4byte _080FDB86 + .4byte _080FDB8C + .4byte _080FDB92 + .4byte _080FDB98 + .4byte _080FDBA8 + .4byte _080FDBAE + .4byte _080FDBDA + .4byte _080FDBB4 + .4byte _080FDBC4 + .4byte _080FDBCA + .4byte _080FDBD0 + .4byte _080FDBDA + .4byte _080FDBD6 + .4byte _080FDBDA + .4byte _080FDAE4 +_080FDAE4: + bl sub_80FD3A4 + ldr r1, _080FDB00 @ =0x00008001 + movs r2, 0xFF + cmp r0, r1 + bne _080FDAF2 + movs r2, 0x44 +_080FDAF2: + ldr r1, _080FDB04 @ =gUnknown_3005E10 + movs r0, 0 + strb r0, [r1, 0x5] + strb r0, [r1, 0x4] + adds r0, r2, 0 + b _080FDB32 + .align 2, 0 +_080FDB00: .4byte 0x00008001 +_080FDB04: .4byte gUnknown_3005E10 +_080FDB08: + bl sub_80FD3A4 + ldr r1, _080FDB20 @ =0x00008001 + cmp r0, r1 + bne _080FDB28 + ldr r0, _080FDB24 @ =gUnknown_3005E10 + ldrb r1, [r0, 0x5] + strb r1, [r0, 0x4] + movs r1, 0x3 + strb r1, [r0, 0x5] + b _080FDBDA + .align 2, 0 +_080FDB20: .4byte 0x00008001 +_080FDB24: .4byte gUnknown_3005E10 +_080FDB28: + ldr r1, _080FDB3C @ =gUnknown_3005E10 + movs r0, 0 + strb r0, [r1, 0x5] + strb r0, [r1, 0x4] + movs r0, 0xFF +_080FDB32: + movs r1, 0 + bl sub_80FE7F0 + b _080FDBDA + .align 2, 0 +_080FDB3C: .4byte gUnknown_3005E10 +_080FDB40: + bl sub_81E0AE4 + b _080FDBDA +_080FDB46: + ldr r0, _080FDB58 @ =gUnknown_3005E10 + ldr r2, [r0, 0x3C] + ldrh r0, [r2, 0x2] + ldrb r1, [r2] + ldrb r2, [r2, 0x1] + bl rfu_REQ_configSystem + b _080FDBDA + .align 2, 0 +_080FDB58: .4byte gUnknown_3005E10 +_080FDB5C: + ldr r0, _080FDB70 @ =gUnknown_3005E10 + ldr r3, [r0, 0x3C] + ldrb r0, [r3, 0x4] + ldrh r1, [r3, 0x6] + ldr r2, [r3, 0x8] + ldr r3, [r3, 0xC] + bl rfu_REQ_configGameData + b _080FDBDA + .align 2, 0 +_080FDB70: .4byte gUnknown_3005E10 +_080FDB74: + bl sub_81E0CAC + b _080FDBDA +_080FDB7A: + bl sub_81E0D88 + b _080FDBDA +_080FDB80: + bl sub_81E0D9C + b _080FDBDA +_080FDB86: + bl sub_81E0F74 + b _080FDBDA +_080FDB8C: + bl sub_81E0FAC + b _080FDBDA +_080FDB92: + bl sub_81E0FE4 + b _080FDBDA +_080FDB98: + ldr r0, _080FDBA4 @ =gUnknown_3005E10 + ldrh r0, [r0, 0x1E] + bl rfu_REQ_startConnectParent + b _080FDBDA + .align 2, 0 +_080FDBA4: .4byte gUnknown_3005E10 +_080FDBA8: + bl sub_81E1170 + b _080FDBDA +_080FDBAE: + bl rfu_REQ_endConnectParent + b _080FDBDA +_080FDBB4: + ldr r0, _080FDBC0 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + bl rfu_REQ_CHILD_startConnectRecovery + b _080FDBDA + .align 2, 0 +_080FDBC0: .4byte gUnknown_3007460 +_080FDBC4: + bl sub_81E1A28 + b _080FDBDA +_080FDBCA: + bl sub_81E1B10 + b _080FDBDA +_080FDBD0: + bl rfu_REQ_changeMasterSlave + b _080FDBDA +_080FDBD6: + bl rfu_REQ_stopMode +_080FDBDA: + bl rfu_waitREQComplete + ldr r1, _080FDC20 @ =gUnknown_3005E10 + movs r0, 0 + strb r0, [r1, 0xE] +_080FDBE4: + ldr r0, _080FDC20 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x4] + subs r0, 0x12 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080FDBF4 + b _080FDA5A +_080FDBF4: + ldr r0, _080FDC24 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FDC0A + movs r0, 0 + bl sub_80FD850 + lsls r0, 24 + cmp r0, 0 + bne _080FDC1A +_080FDC0A: + bl sub_80FE418 + bl sub_80FE63C + bl sub_80FE74C + bl sub_80FE918 +_080FDC1A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FDC20: .4byte gUnknown_3005E10 +_080FDC24: .4byte gUnknown_3007460 + thumb_func_end sub_80FDA30 + + thumb_func_start sub_80FDC28 +sub_80FDC28: @ 80FDC28 + push {r4,lr} + adds r3, r0, 0 + ldr r0, _080FDC4C @ =gUnknown_3005E10 + ldrb r1, [r0, 0x7] + adds r4, r0, 0 + cmp r1, 0x5 + bne _080FDC52 + movs r2, 0x1 + strb r2, [r4, 0x6] + strb r1, [r4, 0x4] + ldrh r0, [r4, 0x1C] + strh r0, [r4, 0x1A] + lsls r0, 16 + cmp r0, 0 + beq _080FDC50 + movs r0, 0x6 + strb r0, [r4, 0x7] + b _080FDC52 + .align 2, 0 +_080FDC4C: .4byte gUnknown_3005E10 +_080FDC50: + strb r2, [r4, 0x7] +_080FDC52: + ldrb r0, [r4, 0x7] + cmp r0, 0x1 + bne _080FDC7C + strb r0, [r4, 0x6] + movs r0, 0x5 + strb r0, [r4, 0x4] + adds r0, r3, 0 + movs r1, 0x8C + bl __umodsi3 + strh r0, [r4, 0x1A] + movs r1, 0x8C + subs r1, r0 + strh r1, [r4, 0x1C] + lsls r0, 16 + cmp r0, 0 + beq _080FDC78 + movs r0, 0x2 + b _080FDC7A +_080FDC78: + movs r0, 0x3 +_080FDC7A: + strb r0, [r4, 0x7] +_080FDC7C: + ldrb r0, [r4, 0x7] + cmp r0, 0x3 + bne _080FDC92 + movs r0, 0 + strb r0, [r4, 0x6] + movs r0, 0x28 + strh r0, [r4, 0x1A] + movs r0, 0x4 + strb r0, [r4, 0x7] + movs r0, 0x9 + strb r0, [r4, 0x4] +_080FDC92: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FDC28 + + thumb_func_start sub_80FDC98 +sub_80FDC98: @ 80FDC98 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _080FDCD0 @ =gUnknown_3005E10 + ldrb r1, [r0, 0xE] + adds r7, r0, 0 + cmp r1, 0 + bne _080FDCB6 + b _080FE17C +_080FDCB6: + movs r0, 0 + strb r0, [r7, 0xE] + mov r0, r8 + subs r0, 0x10 + cmp r0, 0x2D + bls _080FDCC4 + b _080FE16E +_080FDCC4: + lsls r0, 2 + ldr r1, _080FDCD4 @ =_080FDCD8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FDCD0: .4byte gUnknown_3005E10 +_080FDCD4: .4byte _080FDCD8 + .align 2, 0 +_080FDCD8: + .4byte _080FDD90 + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FDDBC + .4byte _080FDDA8 + .4byte _080FE16E + .4byte _080FDDD0 + .4byte _080FDDE0 + .4byte _080FDE04 + .4byte _080FDE24 + .4byte _080FDE44 + .4byte _080FDEB4 + .4byte _080FDEE6 + .4byte _080FDEFC + .4byte _080FDF44 + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE0BC + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FDFB4 + .4byte _080FE000 + .4byte _080FE048 + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE16E + .4byte _080FE15C +_080FDD90: + cmp r6, 0 + beq _080FDD96 + b _080FE16E +_080FDD96: + ldr r0, _080FDDA4 @ =gUnknown_3005E10 + ldrb r1, [r0, 0x5] + strb r1, [r0, 0x4] + movs r1, 0x4 + strb r1, [r0, 0x5] + b _080FE16E + .align 2, 0 +_080FDDA4: .4byte gUnknown_3005E10 +_080FDDA8: + cmp r6, 0 + beq _080FDDAE + b _080FE16E +_080FDDAE: + ldr r0, _080FDDB8 @ =gUnknown_3005E10 + ldrb r1, [r0, 0x5] + strb r1, [r0, 0x4] + strb r6, [r0, 0x5] + b _080FE16E + .align 2, 0 +_080FDDB8: .4byte gUnknown_3005E10 +_080FDDBC: + cmp r6, 0 + beq _080FDDC2 + b _080FE16E +_080FDDC2: + ldr r0, _080FDDCC @ =gUnknown_3005E10 + strb r6, [r0, 0x5] + strb r6, [r0, 0x4] + movs r0, 0 + b _080FE0DA + .align 2, 0 +_080FDDCC: .4byte gUnknown_3005E10 +_080FDDD0: + cmp r6, 0 + beq _080FDDD6 + b _080FE16E +_080FDDD6: + ldr r1, _080FDDDC @ =gUnknown_3005E10 + movs r0, 0x6 + b _080FDEF0 + .align 2, 0 +_080FDDDC: .4byte gUnknown_3005E10 +_080FDDE0: + ldr r1, _080FDE00 @ =gUnknown_3005E10 + ldrh r0, [r1, 0x1A] + cmp r0, 0 + bne _080FDDEA + b _080FE16E +_080FDDEA: + subs r0, 0x1 + strh r0, [r1, 0x1A] + lsls r0, 16 + cmp r0, 0 + beq _080FDDF6 + b _080FE16E +_080FDDF6: + movs r0, 0x7 + strb r0, [r1, 0x4] + movs r0, 0x8 + strb r0, [r1, 0x5] + b _080FE16E + .align 2, 0 +_080FDE00: .4byte gUnknown_3005E10 +_080FDE04: + cmp r6, 0 + beq _080FDE0A + b _080FE16E +_080FDE0A: + ldr r0, _080FDE20 @ =gUnknown_3005E10 + ldrb r1, [r0, 0x5] + strb r1, [r0, 0x4] + strb r6, [r0, 0x5] + ldrb r0, [r0, 0x7] + cmp r0, 0 + beq _080FDE1A + b _080FE16E +_080FDE1A: + movs r0, 0x13 + b _080FE0DA + .align 2, 0 +_080FDE20: .4byte gUnknown_3005E10 +_080FDE24: + cmp r6, 0 + beq _080FDE2A + b _080FE16E +_080FDE2A: + ldrb r0, [r7, 0xB] + cmp r0, 0x1 + bne _080FDE3A + ldrh r0, [r7, 0x1A] + cmp r0, 0x1 + bls _080FDE3A + subs r0, 0x1 + strh r0, [r7, 0x1A] +_080FDE3A: + ldr r1, _080FDE40 @ =gUnknown_3005E10 + movs r0, 0xA + b _080FDEF0 + .align 2, 0 +_080FDE40: .4byte gUnknown_3005E10 +_080FDE44: + cmp r6, 0 + bne _080FDE8A + bl sub_80FE778 + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + ldr r4, _080FDEAC @ =gUnknown_3005E10 + strh r0, [r4, 0x14] + cmp r0, 0 + beq _080FDE64 + movs r0, 0x20 + movs r1, 0x1 + bl sub_80FE7F0 +_080FDE64: + ldrb r0, [r4, 0xB] + cmp r0, 0 + beq _080FDE8A + ldrh r0, [r4, 0x1A] + cmp r0, 0x1 + beq _080FDE8A + ldr r0, _080FDEB0 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0x4 + bne _080FDE8A + bl sub_81E0FE4 + bl rfu_waitREQComplete + movs r0, 0x9 + strb r0, [r4, 0x4] + movs r0, 0x1 + strb r0, [r4, 0xB] +_080FDE8A: + ldr r1, _080FDEAC @ =gUnknown_3005E10 + ldrh r0, [r1, 0x1A] + cmp r0, 0 + bne _080FDE94 + b _080FE16E +_080FDE94: + subs r0, 0x1 + strh r0, [r1, 0x1A] + lsls r0, 16 + cmp r0, 0 + beq _080FDEA0 + b _080FE16E +_080FDEA0: + movs r0, 0xB + strb r0, [r1, 0x4] + movs r0, 0 + strb r0, [r1, 0x5] + b _080FE16E + .align 2, 0 +_080FDEAC: .4byte gUnknown_3005E10 +_080FDEB0: .4byte gUnknown_3007460 +_080FDEB4: + cmp r6, 0 + beq _080FDEBA + b _080FE16E +_080FDEBA: + ldr r2, _080FDED4 @ =gUnknown_3005E10 + ldrb r0, [r2, 0x5] + strb r0, [r2, 0x4] + ldrb r1, [r2, 0x7] + cmp r1, 0 + bne _080FDED8 + lsls r0, 24 + cmp r0, 0 + beq _080FDECE + b _080FE16E +_080FDECE: + movs r0, 0x21 + b _080FE0DA + .align 2, 0 +_080FDED4: .4byte gUnknown_3005E10 +_080FDED8: + cmp r1, 0x7 + bne _080FDEDE + b _080FE16E +_080FDEDE: + movs r0, 0x5 + strb r0, [r2, 0x4] + strb r0, [r2, 0x7] + b _080FE16E +_080FDEE6: + cmp r6, 0 + beq _080FDEEC + b _080FE16E +_080FDEEC: + ldr r1, _080FDEF8 @ =gUnknown_3005E10 + movs r0, 0xD +_080FDEF0: + strb r0, [r1, 0x5] + strb r0, [r1, 0x4] + b _080FE16E + .align 2, 0 +_080FDEF8: .4byte gUnknown_3005E10 +_080FDEFC: + cmp r6, 0 + bne _080FDF20 + ldr r4, _080FDF3C @ =gUnknown_3005E20 + mov r0, sp + adds r1, r4, 0 + bl sub_81E12A4 + lsls r0, 16 + cmp r0, 0 + bne _080FDF20 + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _080FDF20 + adds r1, r4, 0 + subs r1, 0x10 + movs r0, 0xE + strb r0, [r1, 0x4] +_080FDF20: + ldr r1, _080FDF40 @ =gUnknown_3005E10 + ldrh r0, [r1, 0x1A] + cmp r0, 0 + bne _080FDF2A + b _080FE16E +_080FDF2A: + subs r0, 0x1 + strh r0, [r1, 0x1A] + lsls r0, 16 + cmp r0, 0 + beq _080FDF36 + b _080FE16E +_080FDF36: + movs r0, 0xE + strb r0, [r1, 0x4] + b _080FE16E + .align 2, 0 +_080FDF3C: .4byte gUnknown_3005E20 +_080FDF40: .4byte gUnknown_3005E10 +_080FDF44: + cmp r6, 0 + beq _080FDF4A + b _080FE16E +_080FDF4A: + ldr r4, _080FDF7C @ =gUnknown_3005E20 + mov r0, sp + adds r1, r4, 0 + bl sub_81E12A4 + lsls r0, 16 + cmp r0, 0 + beq _080FDF5C + b _080FE16E +_080FDF5C: + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _080FDF80 + adds r1, r4, 0 + subs r1, 0x10 + movs r0, 0x13 + strb r0, [r1, 0x4] + movs r0, 0xF + strb r0, [r1, 0x5] + movs r0, 0x22 + strh r0, [r1, 0x1E] + ldrb r0, [r1, 0x10] + strh r0, [r1, 0x14] + b _080FDFA0 + .align 2, 0 +_080FDF7C: .4byte gUnknown_3005E20 +_080FDF80: + adds r1, r4, 0 + subs r1, 0x10 + strb r6, [r1, 0x5] + strb r6, [r1, 0x4] + movs r0, 0x23 + strh r0, [r1, 0x1E] + mov r0, sp + ldrb r0, [r0] + strh r0, [r1, 0x14] + ldrb r0, [r1, 0x7] + cmp r0, 0 + beq _080FDFA0 + movs r0, 0x3 + strb r0, [r1, 0x7] + movs r0, 0x9 + strb r0, [r1, 0x4] +_080FDFA0: + ldr r4, _080FDFB0 @ =gUnknown_3005E10 + ldrb r0, [r4, 0x1E] + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0 + strh r0, [r4, 0x1E] + b _080FE16E + .align 2, 0 +_080FDFB0: .4byte gUnknown_3005E10 +_080FDFB4: + cmp r6, 0 + beq _080FDFBA + b _080FE16E +_080FDFBA: + ldr r2, _080FDFFC @ =gUnknown_3007460 + ldr r3, [r2] + ldrb r0, [r3, 0x3] + movs r1, 0 + strh r0, [r7, 0x14] + movs r0, 0x11 + strb r0, [r7, 0x5] + strb r0, [r7, 0x4] + strb r1, [r7, 0x10] + ldrb r0, [r3, 0x3] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080FDFD8 + b _080FE16E +_080FDFD8: + adds r1, r7, 0 + movs r3, 0x1 +_080FDFDC: + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _080FDFEC + b _080FE16E +_080FDFEC: + ldr r0, [r2] + ldrb r0, [r0, 0x3] + ldrb r4, [r7, 0x10] + asrs r0, r4 + ands r0, r3 + cmp r0, 0 + beq _080FDFDC + b _080FE16E + .align 2, 0 +_080FDFFC: .4byte gUnknown_3007460 +_080FE000: + cmp r6, 0 + bne _080FE01E + mov r0, sp + bl sub_81E1AE0 + lsls r0, 16 + cmp r0, 0 + bne _080FE01E + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x1 + bhi _080FE01E + ldr r1, _080FE044 @ =gUnknown_3005E10 + movs r0, 0x12 + strb r0, [r1, 0x4] +_080FE01E: + ldr r2, _080FE044 @ =gUnknown_3005E10 + ldrb r0, [r2, 0x10] + lsls r0, 1 + adds r1, r2, 0 + adds r1, 0x34 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, 0 + bne _080FE032 + b _080FE16E +_080FE032: + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _080FE03E + b _080FE16E +_080FE03E: + movs r0, 0x12 + strb r0, [r2, 0x4] + b _080FE16E + .align 2, 0 +_080FE044: .4byte gUnknown_3005E10 +_080FE048: + cmp r6, 0 + beq _080FE04E + b _080FE16E +_080FE04E: + mov r0, sp + bl sub_81E1AE0 + lsls r0, 16 + cmp r0, 0 + beq _080FE05C + b _080FE16E +_080FE05C: + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _080FE078 + ldr r1, _080FE074 @ =gUnknown_3005E10 + movs r0, 0x13 + strb r0, [r1, 0x4] + movs r0, 0x16 + strb r0, [r1, 0x5] + movs r0, 0x32 + strh r0, [r1, 0x1E] + b _080FE08C + .align 2, 0 +_080FE074: .4byte gUnknown_3005E10 +_080FE078: + ldr r4, _080FE0B4 @ =gUnknown_3005E10 + strb r6, [r4, 0x5] + strb r6, [r4, 0x4] + ldr r0, _080FE0B8 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + bl sub_80FE818 + movs r0, 0x33 + strh r0, [r4, 0x1E] +_080FE08C: + ldr r5, _080FE0B4 @ =gUnknown_3005E10 + ldrb r0, [r5, 0x10] + lsls r0, 1 + adds r1, r5, 0 + adds r1, 0x34 + adds r0, r1 + movs r1, 0 + movs r4, 0 + strh r4, [r0] + adds r0, r5, 0 + adds r0, 0x30 + strb r1, [r0] + strb r1, [r5, 0xA] + ldrb r0, [r5, 0x1E] + movs r1, 0x1 + bl sub_80FE7F0 + strh r4, [r5, 0x1E] + b _080FE16E + .align 2, 0 +_080FE0B4: .4byte gUnknown_3005E10 +_080FE0B8: .4byte gUnknown_3007460 +_080FE0BC: + cmp r6, 0 + bne _080FE16E + ldr r5, _080FE0E4 @ =gUnknown_3005E10 + ldrb r1, [r5, 0x5] + adds r0, r1, 0 + cmp r0, 0x16 + bne _080FE0E8 + ldrb r0, [r5, 0x11] + strb r0, [r5, 0x4] + ldrb r0, [r5, 0x12] + strb r0, [r5, 0x5] + ldrb r0, [r5, 0x2] + movs r0, 0x1 + strb r0, [r5, 0x2] + movs r0, 0x41 +_080FE0DA: + movs r1, 0 + bl sub_80FE7F0 + b _080FE16E + .align 2, 0 +_080FE0E4: .4byte gUnknown_3005E10 +_080FE0E8: + cmp r0, 0xF + bne _080FE16E + strb r1, [r5, 0x4] + ldrb r0, [r5, 0x2] + movs r4, 0x1 + strb r4, [r5, 0x2] + movs r0, 0x41 + movs r1, 0 + bl sub_80FE7F0 + adds r1, r5, 0 + adds r1, 0x24 + ldrb r0, [r5, 0x10] + lsls r4, r0 + ldrb r0, [r1] + orrs r4, r0 + strb r4, [r1] + ldrb r0, [r5, 0x10] + lsls r0, 1 + adds r1, 0x4 + adds r0, r1 + ldrh r1, [r5, 0x26] + movs r7, 0 + strh r1, [r0] + ldrb r1, [r5, 0x10] + movs r0, 0x4 + bl rfu_clearSlot + mov r4, sp + ldrb r0, [r5, 0x10] + movs r1, 0xE + bl rfu_NI_CHILD_setSendGameName + strb r0, [r4] + lsls r0, 24 + cmp r0, 0 + beq _080FE16E + strb r7, [r5, 0x5] + strb r7, [r5, 0x4] + bl sub_80FEAF4 + ldr r0, _080FE158 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + ldrb r0, [r0, 0x3] + orrs r0, r1 + bl sub_80FE818 + mov r0, sp + ldrb r0, [r0] + strh r0, [r5, 0x14] + movs r0, 0x25 + movs r1, 0x1 + bl sub_80FE7F0 + b _080FE16E + .align 2, 0 +_080FE158: .4byte gUnknown_3007460 +_080FE15C: + cmp r6, 0 + bne _080FE16E + ldr r0, _080FE178 @ =gUnknown_3005E10 + strb r6, [r0, 0x5] + strb r6, [r0, 0x4] + movs r0, 0x42 + movs r1, 0 + bl sub_80FE7F0 +_080FE16E: + ldr r1, _080FE178 @ =gUnknown_3005E10 + movs r0, 0x1 + strb r0, [r1, 0xE] + b _080FE1CA + .align 2, 0 +_080FE178: .4byte gUnknown_3005E10 +_080FE17C: + cmp r6, 0x3 + bne _080FE1CA + ldrb r0, [r7, 0xF] + cmp r0, 0 + beq _080FE1CA + mov r3, r8 + cmp r3, 0x24 + beq _080FE194 + cmp r3, 0x26 + beq _080FE194 + cmp r3, 0x27 + bne _080FE1CA +_080FE194: + bl sub_81E090C + bl rfu_waitREQComplete + mov r0, sp + bl rfu_getRFUStatus + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _080FE1CA + ldr r4, _080FE1E0 @ =gUnknown_3007460 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + bne _080FE1CA + bl rfu_getSTWIRecvBuffer + ldr r1, [r4] + ldrb r1, [r1, 0x2] + strb r1, [r0, 0x4] + movs r1, 0x1 + strb r1, [r0, 0x5] + movs r0, 0x29 + bl sub_80FD850 + movs r6, 0 +_080FE1CA: + mov r4, r8 + cmp r4, 0x26 + bne _080FE1D2 + b _080FE2E6 +_080FE1D2: + cmp r4, 0x26 + bgt _080FE1E4 + cmp r4, 0x10 + bne _080FE1DC + b _080FE304 +_080FE1DC: + b _080FE322 + .align 2, 0 +_080FE1E0: .4byte gUnknown_3007460 +_080FE1E4: + mov r0, r8 + cmp r0, 0x30 + beq _080FE1F2 + cmp r0, 0x3D + bne _080FE1F0 + b _080FE304 +_080FE1F0: + b _080FE322 +_080FE1F2: + cmp r6, 0 + beq _080FE1F8 + b _080FE326 +_080FE1F8: + bl rfu_getSTWIRecvBuffer + ldr r4, _080FE2A8 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x8] + strh r0, [r4, 0x14] + bl sub_80FE83C + adds r2, r4, 0 + adds r2, 0x30 + ldrb r1, [r2] + cmp r1, 0 + beq _080FE24E + ldrb r0, [r4, 0x14] + adds r3, r1, 0 + bics r3, r0 + adds r0, r3, 0 + strb r0, [r2] + movs r3, 0 + adds r7, r4, 0 + adds r1, r7, 0 + movs r5, 0x1 + adds r4, r1, 0 + adds r4, 0x34 + movs r2, 0 +_080FE228: + ldrh r0, [r1, 0x14] + asrs r0, r3 + ands r0, r5 + cmp r0, 0 + beq _080FE238 + lsls r0, r3, 1 + adds r0, r4 + strh r2, [r0] +_080FE238: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FE228 + ldr r1, _080FE2A8 @ =gUnknown_3005E10 + ldrb r0, [r1, 0x6] + cmp r0, 0 + bne _080FE24E + strb r0, [r1, 0x5] + strb r0, [r1, 0x4] +_080FE24E: + mov r3, sp + ldr r1, _080FE2A8 @ =gUnknown_3005E10 + ldrb r2, [r1] + ldrb r0, [r1, 0x14] + ands r0, r2 + strb r0, [r3] + movs r3, 0 + adds r7, r1, 0 + ldr r2, _080FE2AC @ =gUnknown_3007460 + mov r1, sp + movs r5, 0x1 + adds r4, r7, 0 +_080FE266: + ldrb r0, [r1] + asrs r0, r3 + ands r0, r5 + cmp r0, 0 + beq _080FE27A + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _080FE27A + subs r0, 0x1 + strb r0, [r7, 0x1] +_080FE27A: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FE266 + ldrb r1, [r7, 0x14] + ldrb r0, [r7] + bics r0, r1 + strb r0, [r7] + ldrb r1, [r7, 0x7] + cmp r1, 0 + beq _080FE2C4 + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, 0xFF + bne _080FE2D6 + cmp r1, 0x8 + bne _080FE2B0 + ldrh r0, [r7, 0x1C] + strh r0, [r7, 0x1A] + movs r0, 0x6 + strb r0, [r7, 0x7] + b _080FE2C2 + .align 2, 0 +_080FE2A8: .4byte gUnknown_3005E10 +_080FE2AC: .4byte gUnknown_3007460 +_080FE2B0: + ldrb r0, [r7, 0x4] + subs r0, 0x6 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080FE2C4 + movs r0, 0x1 + strb r0, [r7, 0x7] + movs r0, 0x5 +_080FE2C2: + strb r0, [r7, 0x4] +_080FE2C4: + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, 0xFF + bne _080FE2D6 + ldrb r0, [r7, 0x4] + cmp r0, 0 + bne _080FE2D6 + movs r0, 0xFF + strb r0, [r7, 0x6] +_080FE2D6: + ldrb r0, [r7, 0xE] + cmp r0, 0 + bne _080FE322 + movs r0, 0x40 + movs r1, 0x1 + bl sub_80FE7F0 + b _080FE322 +_080FE2E6: + bl sub_80FE6F0 + ldr r0, _080FE300 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xFF + beq _080FE322 + movs r0, 0x50 + movs r1, 0 + bl sub_80FE7F0 + b _080FE322 + .align 2, 0 +_080FE300: .4byte gUnknown_3007460 +_080FE304: + cmp r6, 0 + bne _080FE326 + ldr r0, _080FE350 @ =gUnknown_3005E10 + strb r6, [r0, 0xD] + strb r6, [r0, 0x1] + strb r6, [r0] + movs r1, 0xFF + strb r1, [r0, 0x6] + bl sub_80FEAF4 + mov r4, r8 + cmp r4, 0x3D + bne _080FE322 + bl sub_80FD484 +_080FE322: + cmp r6, 0 + beq _080FE376 +_080FE326: + ldr r7, _080FE350 @ =gUnknown_3005E10 + mov r0, r8 + cmp r0, 0x1C + bne _080FE358 + cmp r6, 0 + beq _080FE358 + ldrb r0, [r7, 0x7] + cmp r0, 0x4 + bne _080FE358 + ldr r2, _080FE354 @ =gUnknown_3007460 + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1] + ldr r1, [r2] + movs r0, 0xF + strb r0, [r1, 0x2] + bl sub_80FE818 + bl rfu_waitREQComplete + b _080FE388 + .align 2, 0 +_080FE350: .4byte gUnknown_3005E10 +_080FE354: .4byte gUnknown_3007460 +_080FE358: + movs r1, 0 + mov r3, r8 + strh r3, [r7, 0x14] + strh r6, [r7, 0x16] + ldrb r0, [r7, 0xE] + cmp r0, 0 + beq _080FE36A + strb r1, [r7, 0x5] + strb r1, [r7, 0x4] +_080FE36A: + movs r0, 0xF0 + movs r1, 0x2 + bl sub_80FE7F0 + bl sub_80FEAF4 +_080FE376: + mov r4, r8 + cmp r4, 0xFF + bne _080FE388 + movs r0, 0xF2 + movs r1, 0 + bl sub_80FE7F0 + bl sub_80FEAF4 +_080FE388: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80FDC98 + + thumb_func_start sub_80FE394 +sub_80FE394: @ 80FE394 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r4, _080FE3C8 @ =gUnknown_3005E10 + ldrb r7, [r4, 0xE] + movs r0, 0 + strb r0, [r4, 0xE] + movs r0, 0x1 + strb r0, [r4, 0xF] + ldr r0, _080FE3CC @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r5, [r0] + cmp r5, 0 + bne _080FE3D0 + adds r0, r6, 0 + bl sub_80FD850 + ldrb r0, [r4, 0x2] + cmp r0, 0x1 + beq _080FE3E8 + bl sub_80FEAF4 + strb r5, [r4, 0xF] + strb r7, [r4, 0xE] + b _080FE40C + .align 2, 0 +_080FE3C8: .4byte gUnknown_3005E10 +_080FE3CC: .4byte gUnknown_3007460 +_080FE3D0: + mov r0, sp + bl rfu_UNI_PARENT_getDRAC_ACK + lsls r0, 16 + cmp r0, 0 + bne _080FE3E8 + mov r1, sp + ldrb r0, [r4, 0x3] + ldrb r1, [r1] + orrs r0, r1 + ldrb r1, [r4, 0x3] + strb r0, [r4, 0x3] +_080FE3E8: + ldr r4, _080FE414 @ =gUnknown_3005E10 + ldr r1, [r4, 0x44] + cmp r1, 0 + beq _080FE404 + adds r0, r6, 0 + bl _call_via_r1 + bl rfu_waitREQComplete + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + bne _080FE404 + bl sub_80FEAF4 +_080FE404: + ldr r1, _080FE414 @ =gUnknown_3005E10 + movs r0, 0 + strb r0, [r1, 0xF] + strb r7, [r1, 0xE] +_080FE40C: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FE414: .4byte gUnknown_3005E10 + thumb_func_end sub_80FE394 + + thumb_func_start sub_80FE418 +sub_80FE418: @ 80FE418 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r1, _080FE49C @ =gUnknown_3005E10 + ldrb r0, [r1, 0x4] + subs r0, 0x5 + lsls r0, 24 + lsrs r0, 24 + adds r3, r1, 0 + cmp r0, 0x3 + bls _080FE436 + b _080FE62A +_080FE436: + ldr r0, _080FE4A0 @ =gUnknown_3007460 + ldr r2, [r0] + ldrb r1, [r2, 0x2] + ldrb r0, [r3, 0xC] + adds r4, r1, 0 + eors r4, r0 + ands r4, r1 + ldrb r0, [r2, 0x7] + bics r4, r0 + mov r8, r4 + strb r1, [r3, 0xC] + cmp r4, 0 + beq _080FE45E + strh r4, [r3, 0x14] + movs r0, 0x10 + movs r1, 0x1 + str r3, [sp, 0x4] + bl sub_80FE7F0 + ldr r3, [sp, 0x4] +_080FE45E: + movs r0, 0 + str r0, [sp] + movs r6, 0 + adds r7, r3, 0 + movs r1, 0x24 + adds r1, r3 + mov r9, r1 +_080FE46C: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r6 + lsrs r4, r0, 24 + movs r5, 0 + mov r0, r8 + ands r0, r4 + cmp r0, 0 + beq _080FE4BE + lsls r1, r6, 1 + adds r0, r7, 0 + adds r0, 0x28 + adds r1, r0 + ldrh r0, [r7, 0x26] + strh r0, [r1] + mov r2, r9 + ldrb r1, [r2] + adds r0, r4, 0 + orrs r0, r1 + strb r0, [r2] + adds r6, 0x1 + mov r10, r6 + b _080FE574 + .align 2, 0 +_080FE49C: .4byte gUnknown_3005E10 +_080FE4A0: .4byte gUnknown_3007460 +_080FE4A4: + ldrb r1, [r7] + adds r0, r4, 0 + orrs r0, r1 + strb r0, [r7] + ldrb r0, [r7, 0x1] + adds r0, 0x1 + strb r0, [r7, 0x1] + ldr r0, [sp] + orrs r0, r4 + str r0, [sp] + movs r0, 0x1 + orrs r5, r0 + b _080FE508 +_080FE4BE: + mov r1, r9 + ldrb r0, [r1] + ands r0, r4 + adds r2, r6, 0x1 + mov r10, r2 + cmp r0, 0 + beq _080FE574 + ldr r0, _080FE518 @ =gUnknown_3007450 + lsls r1, r6, 2 + adds r1, r0 + ldr r1, [r1] + ldrh r0, [r1, 0x34] + cmp r0, 0x46 + bne _080FE524 + adds r0, r1, 0 + adds r0, 0x61 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FE53C + movs r5, 0x2 + ldr r3, [r3, 0x20] + ldrh r2, [r3] + ldr r0, _080FE51C @ =0x0000ffff + cmp r2, r0 + beq _080FE508 + ldr r0, _080FE520 @ =gUnknown_3007460 + ldr r0, [r0] + lsls r1, r6, 5 + adds r0, r1 + ldrh r0, [r0, 0x18] + ldr r1, _080FE51C @ =0x0000ffff +_080FE4FC: + cmp r0, r2 + beq _080FE4A4 + adds r3, 0x2 + ldrh r2, [r3] + cmp r2, r1 + bne _080FE4FC +_080FE508: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + bne _080FE53C + movs r0, 0x4 + orrs r5, r0 + b _080FE53C + .align 2, 0 +_080FE518: .4byte gUnknown_3007450 +_080FE51C: .4byte 0x0000ffff +_080FE520: .4byte gUnknown_3007460 +_080FE524: + lsls r1, r6, 1 + adds r0, r3, 0 + adds r0, 0x28 + adds r1, r0 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldr r1, _080FE5F8 @ =0x0000ffff + ands r0, r1 + cmp r0, 0 + bne _080FE53C + movs r5, 0x6 +_080FE53C: + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + beq _080FE562 + mov r2, r9 + ldrb r0, [r2] + bics r0, r4 + movs r2, 0 + mov r1, r9 + strb r0, [r1] + lsls r0, r6, 1 + adds r1, r7, 0 + adds r1, 0x28 + adds r0, r1 + strh r2, [r0] + movs r0, 0x8 + adds r1, r6, 0 + bl rfu_clearSlot +_080FE562: + movs r0, 0x4 + ands r5, r0 + ldr r3, _080FE5FC @ =gUnknown_3005E10 + cmp r5, 0 + beq _080FE574 + ldrb r1, [r7, 0xD] + adds r0, r4, 0 + orrs r0, r1 + strb r0, [r7, 0xD] +_080FE574: + mov r2, r10 + lsls r0, r2, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bhi _080FE580 + b _080FE46C +_080FE580: + ldr r4, [sp] + cmp r4, 0 + beq _080FE592 + ldr r0, _080FE5FC @ =gUnknown_3005E10 + strh r4, [r0, 0x14] + movs r0, 0x11 + movs r1, 0x1 + bl sub_80FE7F0 +_080FE592: + ldr r1, _080FE5FC @ =gUnknown_3005E10 + ldrb r0, [r1, 0xD] + cmp r0, 0 + beq _080FE5CE + movs r5, 0x1 + ldr r0, _080FE600 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _080FE5B2 + ldrb r0, [r1, 0x3] + ldrb r1, [r1] + ands r0, r1 + cmp r0, r1 + beq _080FE5B2 + movs r5, 0 +_080FE5B2: + cmp r5, 0 + beq _080FE5CE + ldr r4, _080FE5FC @ =gUnknown_3005E10 + ldrb r0, [r4, 0xD] + bl sub_80FE818 + ldrb r0, [r4, 0xD] + movs r1, 0 + strh r0, [r4, 0x14] + strb r1, [r4, 0xD] + movs r0, 0x12 + movs r1, 0x1 + bl sub_80FE7F0 +_080FE5CE: + ldr r0, _080FE5FC @ =gUnknown_3005E10 + adds r1, r0, 0 + adds r1, 0x24 + ldrb r1, [r1] + adds r3, r0, 0 + cmp r1, 0 + bne _080FE62A + ldrb r0, [r3, 0x4] + cmp r0, 0x8 + bne _080FE62A + ldrb r0, [r3, 0x7] + cmp r0, 0 + bne _080FE604 + strb r0, [r3, 0x5] + strb r0, [r3, 0x4] + movs r0, 0x14 + movs r1, 0 + bl sub_80FE7F0 + b _080FE62A + .align 2, 0 +_080FE5F8: .4byte 0x0000ffff +_080FE5FC: .4byte gUnknown_3005E10 +_080FE600: .4byte gUnknown_3007460 +_080FE604: + cmp r0, 0x2 + bne _080FE610 + movs r0, 0x3 + strb r0, [r3, 0x7] + movs r0, 0x9 + b _080FE616 +_080FE610: + movs r0, 0x1 + strb r0, [r3, 0x7] + movs r0, 0x5 +_080FE616: + strb r0, [r3, 0x4] + ldrb r0, [r3] + cmp r0, 0 + beq _080FE62A + movs r0, 0 + strh r0, [r3, 0x1A] + movs r0, 0x8 + strb r0, [r3, 0x7] + movs r0, 0x5 + strb r0, [r3, 0x4] +_080FE62A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80FE418 + + thumb_func_start sub_80FE63C +sub_80FE63C: @ 80FE63C + push {r4-r6,lr} + ldr r1, _080FE6E0 @ =0x04000208 + ldrh r0, [r1] + adds r6, r0, 0 + movs r0, 0 + strh r0, [r1] + ldr r4, _080FE6E4 @ =gUnknown_3005E10 + ldrb r0, [r4, 0x4] + cmp r0, 0xF + bne _080FE6A0 + ldrb r1, [r4, 0x10] + lsls r1, 1 + adds r5, r4, 0 + adds r5, 0x28 + adds r1, r5 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _080FE676 + ldr r1, _080FE6E8 @ =gUnknown_3007450 + ldrb r0, [r4, 0x10] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x27 + bne _080FE6A0 +_080FE676: + bl sub_80FEB14 + movs r0, 0x18 + strb r0, [r4, 0x4] + ldrb r1, [r4, 0x10] + movs r0, 0x4 + bl rfu_clearSlot + adds r2, r4, 0 + adds r2, 0x24 + movs r1, 0x1 + ldrb r0, [r4, 0x10] + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldrb r0, [r4, 0x10] + lsls r0, 1 + adds r0, r5 + movs r1, 0 + strh r1, [r0] +_080FE6A0: + ldr r0, _080FE6E0 @ =0x04000208 + strh r6, [r0] + ldr r5, _080FE6E4 @ =gUnknown_3005E10 + ldrb r0, [r5, 0x4] + cmp r0, 0x18 + bne _080FE6DA + ldrb r0, [r5, 0x2] + cmp r0, 0x1 + bne _080FE6B6 + bl sub_80FEB14 +_080FE6B6: + ldrb r0, [r5, 0x2] + adds r4, r0, 0 + cmp r4, 0 + bne _080FE6DA + strb r4, [r5, 0x5] + strb r4, [r5, 0x4] + ldr r0, _080FE6EC @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + ldrb r0, [r0, 0x3] + orrs r0, r1 + bl sub_80FE818 + strh r4, [r5, 0x14] + movs r0, 0x25 + movs r1, 0x1 + bl sub_80FE7F0 +_080FE6DA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FE6E0: .4byte 0x04000208 +_080FE6E4: .4byte gUnknown_3005E10 +_080FE6E8: .4byte gUnknown_3007450 +_080FE6EC: .4byte gUnknown_3007460 + thumb_func_end sub_80FE63C + + thumb_func_start sub_80FE6F0 +sub_80FE6F0: @ 80FE6F0 + push {r4,r5,lr} + ldr r5, _080FE744 @ =gUnknown_3005E10 + ldrb r0, [r5, 0x4] + cmp r0, 0xF + bne _080FE73C + ldr r1, _080FE748 @ =gUnknown_3007450 + ldrb r2, [r5, 0x10] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x26 + bne _080FE73C + movs r4, 0 + strb r4, [r5, 0x5] + strb r4, [r5, 0x4] + movs r0, 0x4 + adds r1, r2, 0 + bl rfu_clearSlot + adds r2, r5, 0 + adds r2, 0x24 + movs r1, 0x1 + ldrb r0, [r5, 0x10] + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldrb r0, [r5, 0x10] + lsls r0, 1 + adds r1, r5, 0 + adds r1, 0x28 + adds r0, r1 + strh r4, [r0] + movs r0, 0x24 + movs r1, 0 + bl sub_80FE7F0 +_080FE73C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE744: .4byte gUnknown_3005E10 +_080FE748: .4byte gUnknown_3007450 + thumb_func_end sub_80FE6F0 + + thumb_func_start sub_80FE74C +sub_80FE74C: @ 80FE74C + push {lr} + ldr r1, _080FE774 @ =gUnknown_3005E10 + ldrb r0, [r1, 0x6] + cmp r0, 0 + bne _080FE770 + ldrb r0, [r1, 0xA] + cmp r0, 0x1 + bne _080FE770 + ldrb r0, [r1, 0x4] + strb r0, [r1, 0x11] + ldrb r0, [r1, 0x5] + strb r0, [r1, 0x12] + movs r0, 0x10 + strb r0, [r1, 0x4] + movs r0, 0x11 + strb r0, [r1, 0x5] + movs r0, 0x2 + strb r0, [r1, 0xA] +_080FE770: + pop {r0} + bx r0 + .align 2, 0 +_080FE774: .4byte gUnknown_3005E10 + thumb_func_end sub_80FE74C + + thumb_func_start sub_80FE778 +sub_80FE778: @ 80FE778 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + movs r5, 0 + ldr r1, _080FE7E4 @ =gUnknown_3007460 + ldr r0, [r1] + ldrb r0, [r0, 0x8] + cmp r6, r0 + bcs _080FE7D4 + mov r8, r0 + ldr r0, _080FE7E8 @ =gUnknown_3005E10 + mov r10, r0 + mov r9, r1 +_080FE798: + mov r1, r10 + ldr r3, [r1, 0x20] + ldrh r2, [r3] + adds r0, r5, 0x1 + mov r12, r0 + ldr r1, _080FE7EC @ =0x0000ffff + cmp r2, r1 + beq _080FE7CA + mov r1, r9 + ldr r0, [r1] + lsls r1, r5, 5 + adds r0, r1 + ldrh r4, [r0, 0x18] + ldr r7, _080FE7EC @ =0x0000ffff + movs r1, 0x1 + lsls r1, r5 +_080FE7B8: + cmp r4, r2 + bne _080FE7C2 + orrs r6, r1 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_080FE7C2: + adds r3, 0x2 + ldrh r2, [r3] + cmp r2, r7 + bne _080FE7B8 +_080FE7CA: + mov r1, r12 + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, r8 + bcc _080FE798 +_080FE7D4: + adds r0, r6, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FE7E4: .4byte gUnknown_3007460 +_080FE7E8: .4byte gUnknown_3005E10 +_080FE7EC: .4byte 0x0000ffff + thumb_func_end sub_80FE778 + + thumb_func_start sub_80FE7F0 +sub_80FE7F0: @ 80FE7F0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r4, _080FE814 @ =gUnknown_3005E10 + ldr r2, [r4, 0x40] + cmp r2, 0 + beq _080FE806 + bl _call_via_r2 +_080FE806: + movs r0, 0 + strh r0, [r4, 0x16] + strh r0, [r4, 0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE814: .4byte gUnknown_3005E10 + thumb_func_end sub_80FE7F0 + + thumb_func_start sub_80FE818 +sub_80FE818: @ 80FE818 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080FE838 @ =gUnknown_3005E10 + ldrb r5, [r4, 0xE] + movs r1, 0x1 + strb r1, [r4, 0xE] + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + strb r5, [r4, 0xE] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE838: .4byte gUnknown_3005E10 + thumb_func_end sub_80FE818 + + thumb_func_start sub_80FE83C +sub_80FE83C: @ 80FE83C + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080FE908 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080FE884 + movs r4, 0 +_080FE84E: + ldr r1, _080FE90C @ =gUnknown_3007450 + lsls r0, r4, 2 + adds r0, r1 + ldr r2, [r0] + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080FE87A + ldrb r1, [r2, 0x1A] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080FE87A + adds r2, r1, 0 + bics r2, r5 + movs r0, 0x20 + adds r1, r4, 0 + bl rfu_changeSendTarget +_080FE87A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080FE84E +_080FE884: + ldr r0, _080FE908 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + cmp r0, 0 + beq _080FE8C2 + movs r4, 0 +_080FE890: + ldr r1, _080FE90C @ =gUnknown_3007450 + lsls r0, r4, 2 + adds r0, r1 + ldr r2, [r0] + ldrh r0, [r2, 0x34] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080FE8B8 + adds r0, r2, 0 + adds r0, 0x4E + ldrb r0, [r0] + ands r0, r5 + cmp r0, 0 + beq _080FE8B8 + adds r0, r4, 0 + bl rfu_NI_stopReceivingData +_080FE8B8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080FE890 +_080FE8C2: + ldr r0, _080FE908 @ =gUnknown_3007460 + ldr r3, [r0] + ldrb r2, [r3, 0x6] + cmp r2, 0 + beq _080FE900 + mvns r1, r5 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0x6] + movs r4, 0 + ldr r7, _080FE910 @ =gUnknown_3007440 + ldr r6, _080FE914 @ =0x00008024 +_080FE8DA: + lsls r0, r4, 2 + adds r0, r7 + ldr r2, [r0] + ldrh r0, [r2] + cmp r0, r6 + bne _080FE8F6 + ldrb r3, [r2, 0x3] + adds r0, r5, 0 + ands r0, r3 + cmp r0, 0 + beq _080FE8F6 + adds r0, r1, 0 + ands r0, r3 + strb r0, [r2, 0x3] +_080FE8F6: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080FE8DA +_080FE900: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FE908: .4byte gUnknown_3007460 +_080FE90C: .4byte gUnknown_3007450 +_080FE910: .4byte gUnknown_3007440 +_080FE914: .4byte 0x00008024 + thumb_func_end sub_80FE83C + + thumb_func_start sub_80FE918 +sub_80FE918: @ 80FE918 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _080FEA04 @ =gUnknown_3005E10 + ldrh r0, [r0, 0x18] + cmp r0, 0 + beq _080FE9F4 + ldr r0, _080FEA08 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080FE9B8 + movs r6, 0 +_080FE938: + ldr r3, _080FEA0C @ =gUnknown_3007450 + lsls r2, r6, 2 + adds r0, r2, r3 + ldr r0, [r0] + ldrh r1, [r0] + movs r4, 0x80 + lsls r4, 8 + adds r0, r4, 0 + ands r1, r0 + adds r7, r2, 0 + adds r0, r6, 0x1 + mov r9, r0 + cmp r1, 0 + beq _080FE9AE + movs r5, 0 + movs r4, 0 + movs r1, 0x1 + mov r8, r1 + mov r10, r3 +_080FE95E: + adds r0, r7, r3 + ldr r0, [r0] + ldrb r0, [r0, 0x1A] + asrs r0, r4 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _080FE988 + lsls r0, r4, 2 + adds r0, r3 + ldr r0, [r0] + ldr r1, _080FEA04 @ =gUnknown_3005E10 + ldrh r0, [r0, 0x2] + ldrh r1, [r1, 0x18] + cmp r0, r1 + bls _080FE988 + mov r0, r8 + lsls r0, r4 + orrs r5, r0 + lsls r0, r5, 24 + lsrs r5, r0, 24 +_080FE988: + cmp r5, 0 + beq _080FE9A4 + mov r1, r10 + adds r0, r7, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1A] + adds r2, r5, 0 + eors r2, r0 + movs r0, 0x20 + adds r1, r6, 0 + str r3, [sp] + bl rfu_changeSendTarget + ldr r3, [sp] +_080FE9A4: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080FE95E +_080FE9AE: + mov r3, r9 + lsls r0, r3, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _080FE938 +_080FE9B8: + ldr r0, _080FEA08 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + cmp r0, 0 + beq _080FE9F4 + movs r6, 0 +_080FE9C4: + ldr r1, _080FEA0C @ =gUnknown_3007450 + lsls r0, r6, 2 + adds r0, r1 + ldr r2, [r0] + ldrh r0, [r2, 0x34] + movs r4, 0x80 + lsls r4, 8 + adds r1, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080FE9EA + ldr r1, _080FEA04 @ =gUnknown_3005E10 + ldrh r0, [r2, 0x36] + ldrh r1, [r1, 0x18] + cmp r0, r1 + bls _080FE9EA + adds r0, r6, 0 + bl rfu_NI_stopReceivingData +_080FE9EA: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _080FE9C4 +_080FE9F4: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FEA04: .4byte gUnknown_3005E10 +_080FEA08: .4byte gUnknown_3007460 +_080FEA0C: .4byte gUnknown_3007450 + thumb_func_end sub_80FE918 + + thumb_func_start sub_80FEA10 +sub_80FEA10: @ 80FEA10 + push {lr} + ldr r1, _080FEA20 @ =gUnknown_3005E10 + str r0, [r1, 0x44] + ldr r0, _080FEA24 @ =sub_80FE394 + bl rfu_setMSCCallback + pop {r0} + bx r0 + .align 2, 0 +_080FEA20: .4byte gUnknown_3005E10 +_080FEA24: .4byte sub_80FE394 + thumb_func_end sub_80FEA10 + + thumb_func_start sub_80FEA28 +sub_80FEA28: @ 80FEA28 + ldr r1, _080FEA30 @ =gUnknown_3005E10 + str r0, [r1, 0x40] + bx lr + .align 2, 0 +_080FEA30: .4byte gUnknown_3005E10 + thumb_func_end sub_80FEA28 + + thumb_func_start sub_80FEA34 +sub_80FEA34: @ 80FEA34 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r0, _080FEA58 @ =gUnknown_3005E10 + ldrb r1, [r0, 0x9] + adds r3, r0, 0 + cmp r1, 0 + beq _080FEA5C + cmp r4, 0 + bne _080FEA5C + adds r0, 0x30 + ldrb r0, [r0] + cmp r0, 0 + beq _080FEA5C + movs r0, 0x5 + b _080FEA6C + .align 2, 0 +_080FEA58: .4byte gUnknown_3005E10 +_080FEA5C: + ldr r2, _080FEA74 @ =0x04000208 + ldrh r1, [r2] + movs r0, 0 + strh r0, [r2] + strb r4, [r3, 0x9] + strh r5, [r3, 0x32] + strh r1, [r2] + movs r0, 0 +_080FEA6C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080FEA74: .4byte 0x04000208 + thumb_func_end sub_80FEA34 + + thumb_func_start sub_80FEA78 +sub_80FEA78: @ 80FEA78 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _080FEA94 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x4] + ldrb r0, [r0, 0x5] + orrs r0, r1 + cmp r0, 0 + bne _080FEA9C + ldr r0, _080FEA98 @ =gUnknown_3005E10 + strh r2, [r0, 0x18] + movs r0, 0 + b _080FEAAC + .align 2, 0 +_080FEA94: .4byte gUnknown_3007460 +_080FEA98: .4byte gUnknown_3005E10 +_080FEA9C: + ldr r1, _080FEAB0 @ =gUnknown_3005E10 + movs r0, 0x6 + strh r0, [r1, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x6 +_080FEAAC: + pop {r1} + bx r1 + .align 2, 0 +_080FEAB0: .4byte gUnknown_3005E10 + thumb_func_end sub_80FEA78 + + thumb_func_start sub_80FEAB4 +sub_80FEAB4: @ 80FEAB4 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + adds r3, r2, 0 + ldr r1, _080FEADC @ =gUnknown_3005E10 + ldrb r0, [r1, 0x4] + subs r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _080FEAE0 + movs r0, 0x7 + strh r0, [r1, 0x14] + movs r0, 0xF3 + movs r1, 0x1 + bl sub_80FE7F0 + movs r0, 0x7 + b _080FEAEE + .align 2, 0 +_080FEADC: .4byte gUnknown_3005E10 +_080FEAE0: + cmp r2, 0 + beq _080FEAEA + movs r0, 0x1 + strb r0, [r1, 0xB] + b _080FEAEC +_080FEAEA: + strb r3, [r1, 0xB] +_080FEAEC: + movs r0, 0 +_080FEAEE: + pop {r1} + bx r1 + thumb_func_end sub_80FEAB4 + + thumb_func_start sub_80FEAF4 +sub_80FEAF4: @ 80FEAF4 + push {lr} + ldr r1, _080FEB10 @ =gUnknown_3005E10 + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _080FEB0C + ldrb r0, [r1, 0x2] + movs r0, 0 + strb r0, [r1, 0x2] + movs r0, 0x45 + movs r1, 0 + bl sub_80FE7F0 +_080FEB0C: + pop {r0} + bx r0 + .align 2, 0 +_080FEB10: .4byte gUnknown_3005E10 + thumb_func_end sub_80FEAF4 + + thumb_func_start sub_80FEB14 +sub_80FEB14: @ 80FEB14 + push {lr} + ldr r1, _080FEB28 @ =gUnknown_3005E10 + ldrb r0, [r1, 0x2] + cmp r0, 0 + bne _080FEB2C + movs r0, 0x45 + movs r1, 0 + bl sub_80FE7F0 + b _080FEB38 + .align 2, 0 +_080FEB28: .4byte gUnknown_3005E10 +_080FEB2C: + ldrb r0, [r1, 0x2] + cmp r0, 0x1 + bne _080FEB38 + ldrb r0, [r1, 0x2] + movs r0, 0x2 + strb r0, [r1, 0x2] +_080FEB38: + pop {r0} + bx r0 + thumb_func_end sub_80FEB14 + + thumb_func_start sub_80FEB3C +sub_80FEB3C: @ 80FEB3C + push {lr} + ldr r0, _080FEB5C @ =gUnknown_3005E10 + ldrb r1, [r0, 0x7] + adds r2, r0, 0 + cmp r1, 0 + beq _080FEBA6 + ldrb r0, [r2, 0x4] + subs r0, 0x5 + cmp r0, 0x6 + bhi _080FEBA6 + lsls r0, 2 + ldr r1, _080FEB60 @ =_080FEB64 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FEB5C: .4byte gUnknown_3005E10 +_080FEB60: .4byte _080FEB64 + .align 2, 0 +_080FEB64: + .4byte _080FEB80 + .4byte _080FEB88 + .4byte _080FEB92 + .4byte _080FEB92 + .4byte _080FEB98 + .4byte _080FEB98 + .4byte _080FEB9E +_080FEB80: + movs r0, 0x3 + strb r0, [r2, 0x7] + movs r0, 0x9 + b _080FEBA4 +_080FEB88: + movs r0, 0x2 + strb r0, [r2, 0x7] + movs r0, 0x1 + strh r0, [r2, 0x1A] + b _080FEBA6 +_080FEB92: + movs r0, 0x2 + strb r0, [r2, 0x7] + b _080FEBA6 +_080FEB98: + movs r0, 0x28 + strh r0, [r2, 0x1A] + b _080FEBA6 +_080FEB9E: + movs r0, 0x28 + strh r0, [r2, 0x1A] + movs r0, 0xA +_080FEBA4: + strb r0, [r2, 0x4] +_080FEBA6: + pop {r0} + bx r0 + thumb_func_end sub_80FEB3C + + thumb_func_start sub_80FEBAC +sub_80FEBAC: @ 80FEBAC + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + lsls r5, 24 + lsrs r5, 24 + bl sub_80773BC + ldr r0, _080FEC00 @ =sub_80FEC54 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080FEC04 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0xA] + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_80776E8 + adds r0, r4, 0 + movs r1, 0x4 + mov r2, r8 + bl sub_80776E8 + ldr r0, _080FEC08 @ =sub_80FEC0C + bl sub_8000544 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FEC00: .4byte sub_80FEC54 +_080FEC04: .4byte gUnknown_3005090 +_080FEC08: .4byte sub_80FEC0C + thumb_func_end sub_80FEBAC + + thumb_func_start sub_80FEC0C +sub_80FEC0C: @ 80FEC0C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80FEC0C + + thumb_func_start sub_80FEC24 +sub_80FEC24: @ 80FEC24 + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + pop {r0} + bx r0 + thumb_func_end sub_80FEC24 + + thumb_func_start sub_80FEC38 +sub_80FEC38: @ 80FEC38 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080FEC50 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r3 + str r1, [r2] + movs r0, 0 + strh r0, [r2, 0x8] + bx lr + .align 2, 0 +_080FEC50: .4byte gUnknown_3005090 + thumb_func_end sub_80FEC38 + + thumb_func_start sub_80FEC54 +sub_80FEC54: @ 80FEC54 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_805642C + cmp r0, 0 + bne _080FEC70 +_080FEC62: + adds r0, r4, 0 + bl sub_80FED80 + lsls r0, 24 + cmp r0, 0 + bne _080FEC62 + b _080FEC7E +_080FEC70: + adds r0, r4, 0 + bl sub_80FED80 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080FEC86 +_080FEC7E: + ldr r1, _080FEC8C @ =sub_80FEC90 + adds r0, r4, 0 + bl sub_80FEC38 +_080FEC86: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEC8C: .4byte sub_80FEC90 + thumb_func_end sub_80FEC54 + + thumb_func_start sub_80FEC90 +sub_80FEC90: @ 80FEC90 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080FECB4 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r0, 0 + ldrsh r5, [r6, r0] + cmp r5, 0x1 + beq _080FECEC + cmp r5, 0x1 + bgt _080FECB8 + cmp r5, 0 + beq _080FECC2 + b _080FED6E + .align 2, 0 +_080FECB4: .4byte gUnknown_3005098 +_080FECB8: + cmp r5, 0x2 + beq _080FED28 + cmp r5, 0x3 + beq _080FED38 + b _080FED6E +_080FECC2: + ldr r0, _080FECE8 @ =sub_80FEC24 + bl sub_80006F4 + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _080FED20 + .align 2, 0 +_080FECE8: .4byte sub_80FEC24 +_080FECEC: + bl sub_80FF028 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x17 + bne _080FED10 + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + movs r0, 0x3 + strh r0, [r6] + b _080FED6E +_080FED10: + cmp r4, 0 + beq _080FED6E + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_8100134 +_080FED20: + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + b _080FED6E +_080FED28: + bl sub_810014C + lsls r0, 24 + cmp r0, 0 + bne _080FED6E + movs r0, 0x1 + strh r0, [r6] + b _080FED6E +_080FED38: + ldr r0, _080FED78 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080FED6E + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0xE + bne _080FED50 + bl sub_80FEF4C +_080FED50: + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080FED62 + ldr r0, _080FED7C @ =0x0000082d + bl sub_806E680 + bl sub_80FEF2C +_080FED62: + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8077720 + bl sub_80FEE24 +_080FED6E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FED78: .4byte gUnknown_2037AB8 +_080FED7C: .4byte 0x0000082d + thumb_func_end sub_80FEC90 + + thumb_func_start sub_80FED80 +sub_80FED80: @ 80FED80 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080FEDA4 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x4 + bhi _080FEE12 + lsls r0, 2 + ldr r1, _080FEDA8 @ =_080FEDAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FEDA4: .4byte gUnknown_3005098 +_080FEDA8: .4byte _080FEDAC + .align 2, 0 +_080FEDAC: + .4byte _080FEDC0 + .4byte _080FEDD4 + .4byte _080FEDDA + .4byte _080FEDEE + .4byte _080FEE06 +_080FEDC0: + movs r0, 0 + bl sub_80006F4 + bl sub_8006B10 + bl sub_80088F0 + bl sub_8070528 + b _080FEE16 +_080FEDD4: + bl sub_80BDE44 + b _080FEDF2 +_080FEDDA: + ldrb r4, [r6, 0x2] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8077720 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_80FEF6C + b _080FEDF2 +_080FEDEE: + bl sub_80FFF80 +_080FEDF2: + lsls r0, 24 + cmp r0, 0 + bne _080FEE16 + adds r0, r5, 0 + movs r1, 0x4 + bl sub_8077720 + bl sub_80FEE24 + b _080FEE16 +_080FEE06: + bl sub_80FFF98 + lsls r0, 24 + cmp r0, 0 + beq _080FEE16 + b _080FEE1C +_080FEE12: + movs r0, 0 + b _080FEE1E +_080FEE16: + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] +_080FEE1C: + movs r0, 0x1 +_080FEE1E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80FED80 + + thumb_func_start sub_80FEE24 +sub_80FEE24: @ 80FEE24 + push {r4,lr} + adds r4, r0, 0 + bl sub_80BDE70 + bl sub_80FF010 + bl sub_810011C + bl sub_8003ECC + adds r0, r4, 0 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FEE24 + + thumb_func_start sub_80FEE44 +sub_80FEE44: @ 80FEE44 + push {lr} + ldr r0, _080FEE58 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0xE + bhi _080FEF12 + lsls r0, 2 + ldr r1, _080FEE5C @ =_080FEE60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FEE58: .4byte gUnknown_20370C0 +_080FEE5C: .4byte _080FEE60 + .align 2, 0 +_080FEE60: + .4byte _080FEE9C + .4byte _080FEEB0 + .4byte _080FEEC4 + .4byte _080FEED8 + .4byte _080FEEF4 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEF12 + .4byte _080FEEEC +_080FEE9C: + ldr r0, _080FEEA8 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _080FEEAC @ =0x00002ca0 + adds r1, r0, r2 + b _080FEF08 + .align 2, 0 +_080FEEA8: .4byte gUnknown_3005008 +_080FEEAC: .4byte 0x00002ca0 +_080FEEB0: + ldr r0, _080FEEBC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _080FEEC0 @ =0x00002cac + adds r1, r0, r2 + b _080FEF08 + .align 2, 0 +_080FEEBC: .4byte gUnknown_3005008 +_080FEEC0: .4byte 0x00002cac +_080FEEC4: + ldr r0, _080FEED0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _080FEED4 @ =0x00002cb8 + adds r1, r0, r2 + b _080FEF08 + .align 2, 0 +_080FEED0: .4byte gUnknown_3005008 +_080FEED4: .4byte 0x00002cb8 +_080FEED8: + ldr r0, _080FEEE4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _080FEEE8 @ =0x00002cc4 + adds r1, r0, r2 + b _080FEF08 + .align 2, 0 +_080FEEE4: .4byte gUnknown_3005008 +_080FEEE8: .4byte 0x00002cc4 +_080FEEEC: + bl sub_8143DA8 + adds r1, r0, 0 + b _080FEF08 +_080FEEF4: + ldr r2, _080FEF18 @ =gUnknown_3005008 + ldr r0, _080FEF1C @ =gUnknown_20370C2 + ldrh r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080FEF20 @ =0x00002cd0 + adds r0, r1 + ldr r1, [r2] + adds r1, r0 +_080FEF08: + ldr r0, _080FEF24 @ =gUnknown_20370C0 + ldrb r0, [r0] + ldr r2, _080FEF28 @ =sub_80568C4 + bl sub_80FEBAC +_080FEF12: + pop {r0} + bx r0 + .align 2, 0 +_080FEF18: .4byte gUnknown_3005008 +_080FEF1C: .4byte gUnknown_20370C2 +_080FEF20: .4byte 0x00002cd0 +_080FEF24: .4byte gUnknown_20370C0 +_080FEF28: .4byte sub_80568C4 + thumb_func_end sub_80FEE44 + + thumb_func_start sub_80FEF2C +sub_80FEF2C: @ 80FEF2C + push {r4,lr} + ldr r4, _080FEF44 @ =gUnknown_20370C0 + ldr r0, _080FEF48 @ =gUnknown_843F29C + movs r1, 0x4 + bl sub_80FFEDC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEF44: .4byte gUnknown_20370C0 +_080FEF48: .4byte gUnknown_843F29C + thumb_func_end sub_80FEF2C + + thumb_func_start sub_80FEF4C +sub_80FEF4C: @ 80FEF4C + push {r4,lr} + ldr r4, _080FEF64 @ =gUnknown_20370C0 + ldr r0, _080FEF68 @ =gUnknown_843F2A4 + movs r1, 0x4 + bl sub_80FFEDC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEF64: .4byte gUnknown_20370C0 +_080FEF68: .4byte gUnknown_843F2A4 + thumb_func_end sub_80FEF4C + + thumb_func_start sub_80FEF6C +sub_80FEF6C: @ 80FEF6C + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080FEF88 @ =gUnknown_203ACE8 + movs r0, 0x2C + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + bne _080FEF8C + movs r0, 0 + b _080FF006 + .align 2, 0 +_080FEF88: .4byte gUnknown_203ACE8 +_080FEF8C: + movs r1, 0 + strb r5, [r0] + ldr r0, [r4] + str r6, [r0, 0x14] + strb r1, [r0, 0x4] + ldr r0, [r4] + strb r1, [r0, 0x5] + ldr r0, [r4] + strb r1, [r0, 0x6] + ldr r0, [r4] + strb r1, [r0, 0x9] + adds r0, r5, 0 + bl sub_80FFF1C + lsls r0, 24 + lsrs r0, 24 + ldr r3, [r4] + ldr r2, _080FF00C @ =gUnknown_843F2AC + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r2, [r1, 0x1] + strb r2, [r3, 0x2] + ldr r2, [r4] + ldrb r1, [r1, 0x2] + strb r1, [r2, 0x3] + ldr r1, [r4] + ldrb r3, [r1, 0x2] + ldrb r2, [r1, 0x3] + adds r5, r3, 0 + muls r5, r2 + adds r2, r5, 0 + strb r2, [r1, 0x7] + ldr r1, [r4] + strb r0, [r1, 0x1] + ldr r1, [r4] + ldrb r0, [r1, 0x7] + cmp r0, 0x9 + bls _080FEFE0 + movs r0, 0x9 + strb r0, [r1, 0x7] +_080FEFE0: + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x18 + ldrb r2, [r0, 0x7] + adds r0, r6, 0 + bl CpuSet + bl sub_80BDF38 + ldr r2, [r4] + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0x1 + strb r0, [r2, 0xD] + movs r0, 0x1 +_080FF006: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080FF00C: .4byte gUnknown_843F2AC + thumb_func_end sub_80FEF6C + + thumb_func_start sub_80FF010 +sub_80FF010: @ 80FF010 + push {lr} + ldr r0, _080FF024 @ =gUnknown_203ACE8 + ldr r0, [r0] + cmp r0, 0 + beq _080FF01E + bl sub_8002BC4 +_080FF01E: + pop {r0} + bx r0 + .align 2, 0 +_080FF024: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF010 + + thumb_func_start sub_80FF028 +sub_80FF028: @ 80FF028 + push {lr} + ldr r0, _080FF040 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + bhi _080FF092 + lsls r0, 2 + ldr r1, _080FF044 @ =_080FF048 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FF040: .4byte gUnknown_203ACE8 +_080FF044: .4byte _080FF048 + .align 2, 0 +_080FF048: + .4byte _080FF064 + .4byte _080FF06A + .4byte _080FF070 + .4byte _080FF076 + .4byte _080FF07C + .4byte _080FF082 + .4byte _080FF088 +_080FF064: + bl sub_80FF098 + b _080FF08C +_080FF06A: + bl sub_80FF20C + b _080FF08C +_080FF070: + bl sub_80FF360 + b _080FF08C +_080FF076: + bl sub_80FF41C + b _080FF08C +_080FF07C: + bl sub_80FF4A8 + b _080FF08C +_080FF082: + bl sub_80FF544 + b _080FF08C +_080FF088: + bl sub_80FF4F0 +_080FF08C: + lsls r0, 16 + lsrs r0, 16 + b _080FF094 +_080FF092: + movs r0, 0 +_080FF094: + pop {r1} + bx r1 + thumb_func_end sub_80FF028 + + thumb_func_start sub_80FF098 +sub_80FF098: @ 80FF098 + push {r4-r7,lr} + ldr r0, _080FF0C0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080FF0E4 + ldr r1, _080FF0C4 @ =gUnknown_203ACE8 + ldr r3, [r1] + movs r2, 0 + movs r0, 0x2 + strb r0, [r3, 0x4] + ldr r0, [r1] + strb r2, [r0, 0xA] + ldr r0, [r1] + strb r2, [r0, 0xB] + ldr r0, [r1] + strb r2, [r0, 0xC] + movs r0, 0x9 + b _080FF1FC + .align 2, 0 +_080FF0C0: .4byte gUnknown_30030F0 +_080FF0C4: .4byte gUnknown_203ACE8 +_080FF0C8: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080FF194 + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080FF184 + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080FF174 + movs r0, 0 + b _080FF1FC +_080FF0E4: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080FF1A4 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080FF1AA + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080FF0C8 + ldr r2, _080FF16C @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x6] + subs r0, 0x1 +_080FF104: + strb r0, [r1, 0x6] +_080FF106: + adds r7, r2, 0 + adds r4, r7, 0 + ldr r2, [r4] + movs r0, 0x6 + ldrsb r0, [r2, r0] + ldr r6, _080FF170 @ =gUnknown_843F2AC + cmp r0, 0 + bge _080FF124 + ldrb r0, [r2, 0x1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, r6 + ldrb r0, [r1, 0x2] + strb r0, [r2, 0x6] +_080FF124: + ldr r3, [r4] + movs r2, 0x6 + ldrsb r2, [r3, r2] + adds r5, r6, 0 + ldrb r1, [r3, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + ldrb r0, [r0, 0x2] + cmp r2, r0 + ble _080FF140 + movs r0, 0 + strb r0, [r3, 0x6] +_080FF140: + ldr r3, [r4] + movs r2, 0x6 + ldrsb r2, [r3, r2] + ldrb r1, [r3, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r5 + ldrb r0, [r1, 0x2] + cmp r2, r0 + bne _080FF1B4 + movs r0, 0x5 + ldrsb r0, [r3, r0] + cmp r0, 0x2 + ble _080FF162 + movs r0, 0x2 + strb r0, [r3, 0x5] +_080FF162: + ldr r1, [r4] + movs r0, 0x1 + strb r0, [r1, 0x4] + movs r0, 0x3 + b _080FF1FC + .align 2, 0 +_080FF16C: .4byte gUnknown_203ACE8 +_080FF170: .4byte gUnknown_843F2AC +_080FF174: + ldr r2, _080FF180 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + adds r0, 0x1 + strb r0, [r1, 0x5] + b _080FF106 + .align 2, 0 +_080FF180: .4byte gUnknown_203ACE8 +_080FF184: + ldr r2, _080FF190 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x6] + adds r0, 0x1 + b _080FF104 + .align 2, 0 +_080FF190: .4byte gUnknown_203ACE8 +_080FF194: + ldr r2, _080FF1A0 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + subs r0, 0x1 + strb r0, [r1, 0x5] + b _080FF106 + .align 2, 0 +_080FF1A0: .4byte gUnknown_203ACE8 +_080FF1A4: + bl sub_80FF590 + b _080FF1AE +_080FF1AA: + bl sub_80FF5C0 +_080FF1AE: + lsls r0, 16 + lsrs r0, 16 + b _080FF1FC +_080FF1B4: + movs r0, 0x5 + ldrsb r0, [r3, r0] + cmp r0, 0 + bge _080FF1C2 + ldrb r0, [r1, 0x1] + subs r0, 0x1 + strb r0, [r3, 0x5] +_080FF1C2: + ldr r3, [r4] + movs r2, 0x5 + ldrsb r2, [r3, r2] + ldrb r1, [r3, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, r6 + ldrb r0, [r0, 0x1] + cmp r2, r0 + blt _080FF1DC + movs r0, 0 + strb r0, [r3, 0x5] +_080FF1DC: + bl sub_80FFCE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080FF1FA + ldr r2, [r7] + ldr r0, [r2, 0x4] + ldr r1, _080FF204 @ =0x00ffff00 + ands r0, r1 + ldr r1, _080FF208 @ =0x00040100 + cmp r0, r1 + bne _080FF1FA + movs r0, 0 + strb r0, [r2, 0x5] +_080FF1FA: + movs r0, 0x2 +_080FF1FC: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FF204: .4byte 0x00ffff00 +_080FF208: .4byte 0x00040100 + thumb_func_end sub_80FF098 + + thumb_func_start sub_80FF20C +sub_80FF20C: @ 80FF20C + push {r4-r6,lr} + ldr r2, _080FF22C @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080FF270 + ldr r0, _080FF230 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + beq _080FF26A + b _080FF254 + .align 2, 0 +_080FF22C: .4byte gUnknown_30030F0 +_080FF230: .4byte gUnknown_203ACE8 +_080FF234: + movs r0, 0x20 + ands r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + bne _080FF2F8 + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + bne _080FF2E8 + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + bne _080FF2D8 + movs r0, 0 + b _080FF34E +_080FF254: + cmp r0, 0x1 + bgt _080FF25E + cmp r0, 0 + beq _080FF264 + b _080FF270 +_080FF25E: + cmp r0, 0x2 + beq _080FF30E + b _080FF270 +_080FF264: + bl sub_80FF5A8 + b _080FF312 +_080FF26A: + bl sub_80FF590 + b _080FF312 +_080FF270: + ldrh r2, [r2, 0x2E] + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + bne _080FF308 + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _080FF30E + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + beq _080FF234 + ldr r2, _080FF2D0 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x6] + subs r0, 0x1 + strb r0, [r1, 0x6] +_080FF294: + adds r6, r2, 0 +_080FF296: + adds r5, r6, 0 + ldr r4, [r5] + movs r3, 0x6 + ldrsb r3, [r4, r3] + ldr r2, _080FF2D4 @ =gUnknown_843F2AC + ldrb r1, [r4, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r2 + ldrb r0, [r1, 0x2] + cmp r3, r0 + bne _080FF318 + movs r0, 0x5 + ldrsb r0, [r4, r0] + cmp r0, 0 + bge _080FF2BC + movs r0, 0x2 + strb r0, [r4, 0x5] +_080FF2BC: + ldr r1, [r5] + movs r0, 0x5 + ldrsb r0, [r1, r0] + cmp r0, 0x2 + ble _080FF2CA + movs r0, 0 + strb r0, [r1, 0x5] +_080FF2CA: + movs r0, 0x3 + b _080FF34E + .align 2, 0 +_080FF2D0: .4byte gUnknown_203ACE8 +_080FF2D4: .4byte gUnknown_843F2AC +_080FF2D8: + ldr r2, _080FF2E4 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + adds r0, 0x1 + strb r0, [r1, 0x5] + b _080FF294 + .align 2, 0 +_080FF2E4: .4byte gUnknown_203ACE8 +_080FF2E8: + ldr r1, _080FF2F4 @ =gUnknown_203ACE8 + ldr r0, [r1] + strb r3, [r0, 0x6] + adds r6, r1, 0 + b _080FF296 + .align 2, 0 +_080FF2F4: .4byte gUnknown_203ACE8 +_080FF2F8: + ldr r2, _080FF304 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + subs r0, 0x1 + strb r0, [r1, 0x5] + b _080FF294 + .align 2, 0 +_080FF304: .4byte gUnknown_203ACE8 +_080FF308: + bl sub_80FF590 + b _080FF312 +_080FF30E: + bl sub_80FF5C0 +_080FF312: + lsls r0, 16 + lsrs r0, 16 + b _080FF34E +_080FF318: + movs r0, 0x5 + ldrsb r0, [r4, r0] + ldrb r1, [r1, 0x1] + cmp r0, r1 + blt _080FF326 + subs r0, r1, 0x1 + strb r0, [r4, 0x5] +_080FF326: + bl sub_80FFCE0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080FF344 + ldr r2, [r6] + ldr r0, [r2, 0x4] + ldr r1, _080FF354 @ =0x00ffff00 + ands r0, r1 + ldr r1, _080FF358 @ =0x00040100 + cmp r0, r1 + bne _080FF344 + movs r0, 0 + strb r0, [r2, 0x5] +_080FF344: + ldr r0, _080FF35C @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x4] + movs r0, 0x2 +_080FF34E: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080FF354: .4byte 0x00ffff00 +_080FF358: .4byte 0x00040100 +_080FF35C: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF20C + + thumb_func_start sub_80FF360 +sub_80FF360: @ 80FF360 + push {lr} + ldr r1, _080FF378 @ =gUnknown_30030F0 + ldrh r2, [r1, 0x2E] + movs r0, 0x2 + ands r0, r2 + adds r3, r1, 0 + cmp r0, 0 + beq _080FF37C + bl sub_80FF678 + b _080FF412 + .align 2, 0 +_080FF378: .4byte gUnknown_30030F0 +_080FF37C: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _080FF3CA + ldr r0, _080FF39C @ =gUnknown_203ACE8 + ldr r2, [r0] + movs r1, 0xA + ldrsb r1, [r2, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080FF3A0 + bl sub_80FF5FC + b _080FF412 + .align 2, 0 +_080FF39C: .4byte gUnknown_203ACE8 +_080FF3A0: + movs r0, 0xB + ldrsb r0, [r2, r0] + cmp r0, 0x1 + beq _080FF3BE + cmp r0, 0x1 + bgt _080FF3B2 + cmp r0, 0 + beq _080FF3B8 + b _080FF3CA +_080FF3B2: + cmp r0, 0x2 + beq _080FF3C4 + b _080FF3CA +_080FF3B8: + bl sub_80FF688 + b _080FF412 +_080FF3BE: + bl sub_80FF6B4 + b _080FF412 +_080FF3C4: + bl sub_80FF678 + b _080FF412 +_080FF3CA: + ldrh r1, [r3, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080FF3DA + bl sub_80FF688 + b _080FF412 +_080FF3DA: + ldrh r1, [r3, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080FF3E8 + movs r0, 0x2 + b _080FF40E +_080FF3E8: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080FF3F4 + movs r0, 0x3 + b _080FF40E +_080FF3F4: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080FF400 + movs r0, 0x1 + b _080FF40E +_080FF400: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080FF40C + movs r0, 0 + b _080FF416 +_080FF40C: + movs r0, 0 +_080FF40E: + bl sub_80FF7CC +_080FF412: + lsls r0, 16 + lsrs r0, 16 +_080FF416: + pop {r1} + bx r1 + thumb_func_end sub_80FF360 + + thumb_func_start sub_80FF41C +sub_80FF41C: @ 80FF41C + push {lr} + ldr r2, _080FF438 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080FF440 + ldr r0, _080FF43C @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1, 0x4] + movs r0, 0xD + b _080FF4A2 + .align 2, 0 +_080FF438: .4byte gUnknown_30030F0 +_080FF43C: .4byte gUnknown_203ACE8 +_080FF440: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080FF44E + bl sub_80FF6C8 + b _080FF49E +_080FF44E: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080FF45A + movs r0, 0x4 + b _080FF49A +_080FF45A: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080FF466 + movs r0, 0x5 + b _080FF49A +_080FF466: + ldrh r1, [r2, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080FF474 + movs r0, 0x2 + b _080FF49A +_080FF474: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080FF480 + movs r0, 0x3 + b _080FF49A +_080FF480: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080FF48C + movs r0, 0x1 + b _080FF49A +_080FF48C: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080FF498 + movs r0, 0 + b _080FF4A2 +_080FF498: + movs r0, 0 +_080FF49A: + bl sub_80FFA38 +_080FF49E: + lsls r0, 16 + lsrs r0, 16 +_080FF4A2: + pop {r1} + bx r1 + thumb_func_end sub_80FF41C + + thumb_func_start sub_80FF4A8 +sub_80FF4A8: @ 80FF4A8 + push {lr} + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080FF4DC + cmp r1, 0 + bgt _080FF4C4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080FF4C8 + b _080FF4E8 +_080FF4C4: + cmp r1, 0x1 + bne _080FF4E8 +_080FF4C8: + bl sub_80FF5F0 + ldr r1, _080FF4D8 @ =gUnknown_203ACE8 + ldr r1, [r1] + strb r0, [r1, 0x4] + movs r0, 0x7 + b _080FF4EA + .align 2, 0 +_080FF4D8: .4byte gUnknown_203ACE8 +_080FF4DC: + ldr r0, _080FF4E4 @ =gUnknown_20370D0 + strh r1, [r0] + movs r0, 0x17 + b _080FF4EA + .align 2, 0 +_080FF4E4: .4byte gUnknown_20370D0 +_080FF4E8: + movs r0, 0 +_080FF4EA: + pop {r1} + bx r1 + thumb_func_end sub_80FF4A8 + + thumb_func_start sub_80FF4F0 +sub_80FF4F0: @ 80FF4F0 + push {r4,lr} + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080FF524 + cmp r1, 0 + bgt _080FF50C + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080FF510 + b _080FF53C +_080FF50C: + cmp r1, 0x1 + bne _080FF53C +_080FF510: + bl sub_80FF5F0 + ldr r1, _080FF520 @ =gUnknown_203ACE8 + ldr r1, [r1] + strb r0, [r1, 0x4] + movs r0, 0x7 + b _080FF53E + .align 2, 0 +_080FF520: .4byte gUnknown_203ACE8 +_080FF524: + ldr r4, _080FF538 @ =gUnknown_20370D0 + bl sub_80FF78C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + bl sub_80FF6F0 + movs r0, 0x17 + b _080FF53E + .align 2, 0 +_080FF538: .4byte gUnknown_20370D0 +_080FF53C: + movs r0, 0 +_080FF53E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FF4F0 + + thumb_func_start sub_80FF544 +sub_80FF544: @ 80FF544 + push {lr} + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080FF574 + cmp r1, 0 + bgt _080FF560 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080FF564 + b _080FF588 +_080FF560: + cmp r1, 0x1 + bne _080FF588 +_080FF564: + ldr r0, _080FF570 @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x4] + movs r0, 0x7 + b _080FF58A + .align 2, 0 +_080FF570: .4byte gUnknown_203ACE8 +_080FF574: + bl sub_80FF728 + ldr r0, _080FF584 @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x4] + movs r0, 0x8 + b _080FF58A + .align 2, 0 +_080FF584: .4byte gUnknown_203ACE8 +_080FF588: + movs r0, 0 +_080FF58A: + pop {r1} + bx r1 + thumb_func_end sub_80FF544 + + thumb_func_start sub_80FF590 +sub_80FF590: @ 80FF590 + ldr r2, _080FF5A4 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x4] + strb r0, [r1, 0x8] + ldr r1, [r2] + movs r0, 0x4 + strb r0, [r1, 0x4] + movs r0, 0x5 + bx lr + .align 2, 0 +_080FF5A4: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF590 + + thumb_func_start sub_80FF5A8 +sub_80FF5A8: @ 80FF5A8 + ldr r2, _080FF5BC @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0x4] + strb r0, [r1, 0x8] + ldr r1, [r2] + movs r0, 0x5 + strb r0, [r1, 0x4] + movs r0, 0x4 + bx lr + .align 2, 0 +_080FF5BC: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF5A8 + + thumb_func_start sub_80FF5C0 +sub_80FF5C0: @ 80FF5C0 + push {r4,lr} + ldr r4, _080FF5DC @ =gUnknown_203ACE8 + ldr r0, [r4] + ldrb r1, [r0, 0x4] + strb r1, [r0, 0x8] + bl sub_80FFF48 + cmp r0, 0 + bne _080FF5E0 + ldr r1, [r4] + movs r0, 0x6 + strb r0, [r1, 0x4] + b _080FF5E8 + .align 2, 0 +_080FF5DC: .4byte gUnknown_203ACE8 +_080FF5E0: + ldr r1, [r4] + movs r0, 0x4 + strb r0, [r1, 0x4] + movs r0, 0x5 +_080FF5E8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FF5C0 + + thumb_func_start sub_80FF5F0 +sub_80FF5F0: @ 80FF5F0 + ldr r0, _080FF5F8 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x8] + bx lr + .align 2, 0 +_080FF5F8: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF5F0 + + thumb_func_start sub_80FF5FC +sub_80FF5FC: @ 80FF5FC + push {lr} + ldr r0, _080FF624 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _080FF628 + bl sub_80FFB8C + lsls r0, 24 + lsrs r0, 24 + bl sub_80BDF44 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80BE16C + b _080FF638 + .align 2, 0 +_080FF624: .4byte gUnknown_203ACE8 +_080FF628: + bl sub_80FFBAC + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1 + bl sub_80BE16C +_080FF638: + bl sub_80BE1D4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080FF670 + ldr r2, _080FF66C @ =gUnknown_203ACE8 + ldr r3, [r2] + subs r0, 0x1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + movs r1, 0 + strb r0, [r3, 0xF] + ldr r0, [r2] + strb r1, [r0, 0xE] + ldr r0, [r2] + strb r1, [r0, 0x10] + ldr r0, [r2] + strb r1, [r0, 0x11] + ldr r1, [r2] + movs r0, 0x3 + strb r0, [r1, 0x4] + movs r0, 0xB + b _080FF672 + .align 2, 0 +_080FF66C: .4byte gUnknown_203ACE8 +_080FF670: + movs r0, 0 +_080FF672: + pop {r1} + bx r1 + thumb_func_end sub_80FF5FC + + thumb_func_start sub_80FF678 +sub_80FF678: @ 80FF678 + ldr r0, _080FF684 @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x4] + movs r0, 0xA + bx lr + .align 2, 0 +_080FF684: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF678 + + thumb_func_start sub_80FF688 +sub_80FF688: @ 80FF688 + push {lr} + ldr r1, _080FF6A8 @ =gUnknown_203ACE8 + ldr r0, [r1] + movs r2, 0 + strb r2, [r0, 0xA] + ldr r0, [r1] + strb r2, [r0, 0xB] + ldr r0, [r1] + strb r2, [r0, 0xC] + ldr r1, [r1] + ldrb r0, [r1, 0x9] + cmp r0, 0 + bne _080FF6AC + movs r0, 0x1 + strb r0, [r1, 0x9] + b _080FF6AE + .align 2, 0 +_080FF6A8: .4byte gUnknown_203ACE8 +_080FF6AC: + strb r2, [r1, 0x9] +_080FF6AE: + movs r0, 0x16 + pop {r1} + bx r1 + thumb_func_end sub_80FF688 + + thumb_func_start sub_80FF6B4 +sub_80FF6B4: @ 80FF6B4 + push {lr} + ldr r0, _080FF6C4 @ =0x0000ffff + bl sub_80FF768 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_080FF6C4: .4byte 0x0000ffff + thumb_func_end sub_80FF6B4 + + thumb_func_start sub_80FF6C8 +sub_80FF6C8: @ 80FF6C8 + push {lr} + bl sub_80FFBE4 + lsls r0, 16 + lsrs r0, 16 + bl sub_80BE19C + lsls r0, 16 + lsrs r0, 16 + bl sub_80FF768 + ldr r0, _080FF6EC @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x4] + movs r0, 0xC + pop {r1} + bx r1 + .align 2, 0 +_080FF6EC: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF6C8 + + thumb_func_start sub_80FF6F0 +sub_80FF6F0: @ 80FF6F0 + push {r4,r5,lr} + movs r4, 0 + ldr r3, _080FF724 @ =gUnknown_203ACE8 + ldr r0, [r3] + ldrb r0, [r0, 0x7] + cmp r4, r0 + bcs _080FF71E + adds r5, r3, 0 +_080FF700: + ldr r3, [r5] + ldr r1, [r3, 0x14] + lsls r2, r4, 1 + adds r1, r2, r1 + adds r0, r3, 0 + adds r0, 0x18 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldrb r3, [r3, 0x7] + cmp r4, r3 + bcc _080FF700 +_080FF71E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF724: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF6F0 + + thumb_func_start sub_80FF728 +sub_80FF728: @ 80FF728 + push {r4,r5,lr} + movs r3, 0 + ldr r2, _080FF760 @ =gUnknown_203ACE8 + ldr r0, [r2] + ldrb r0, [r0, 0x7] + cmp r3, r0 + bcs _080FF758 + adds r5, r2, 0 + ldr r0, _080FF764 @ =0x0000ffff + adds r4, r0, 0 +_080FF73C: + ldr r2, [r5] + lsls r0, r3, 1 + adds r1, r2, 0 + adds r1, 0x18 + adds r1, r0 + ldrh r0, [r1] + orrs r0, r4 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrb r2, [r2, 0x7] + cmp r3, r2 + bcc _080FF73C +_080FF758: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF760: .4byte gUnknown_203ACE8 +_080FF764: .4byte 0x0000ffff + thumb_func_end sub_80FF728 + + thumb_func_start sub_80FF768 +sub_80FF768: @ 80FF768 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_80FFB6C + lsls r0, 16 + ldr r1, _080FF788 @ =gUnknown_203ACE8 + ldr r1, [r1] + lsrs r0, 15 + adds r1, 0x18 + adds r1, r0 + strh r4, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FF788: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF768 + + thumb_func_start sub_80FF78C +sub_80FF78C: @ 80FF78C + push {r4,r5,lr} + movs r2, 0 + ldr r0, _080FF7B4 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r1, [r0, 0x7] + cmp r2, r1 + bcs _080FF7C2 + adds r5, r1, 0 + adds r4, r0, 0 + adds r4, 0x18 + ldr r3, [r0, 0x14] +_080FF7A2: + lsls r0, r2, 1 + adds r1, r4, r0 + adds r0, r3 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + beq _080FF7B8 + movs r0, 0x1 + b _080FF7C4 + .align 2, 0 +_080FF7B4: .4byte gUnknown_203ACE8 +_080FF7B8: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r5 + bcc _080FF7A2 +_080FF7C2: + movs r0, 0 +_080FF7C4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FF78C + + thumb_func_start sub_80FF7CC +sub_80FF7CC: @ 80FF7CC + push {lr} + adds r2, r0, 0 + ldr r0, _080FF7F0 @ =gUnknown_203ACE8 + ldr r3, [r0] + movs r1, 0xA + ldrsb r1, [r3, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080FF7FC + ldrb r0, [r3, 0x9] + cmp r0, 0 + bne _080FF7F4 + adds r0, r2, 0 + bl sub_80FF80C + b _080FF802 + .align 2, 0 +_080FF7F0: .4byte gUnknown_203ACE8 +_080FF7F4: + adds r0, r2, 0 + bl sub_80FF8D8 + b _080FF802 +_080FF7FC: + adds r0, r2, 0 + bl sub_80FF968 +_080FF802: + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80FF7CC + + thumb_func_start sub_80FF80C +sub_80FF80C: @ 80FF80C + push {r4,lr} + cmp r0, 0x1 + beq _080FF882 + cmp r0, 0x1 + bcc _080FF8A2 + cmp r0, 0x2 + beq _080FF820 + cmp r0, 0x3 + beq _080FF848 + b _080FF8CE +_080FF820: + ldr r0, _080FF83C @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0xB + ldrsb r0, [r1, r0] + ldrb r3, [r1, 0xC] + cmn r0, r3 + beq _080FF8CE + ldrb r2, [r1, 0xB] + cmp r0, 0 + beq _080FF840 + subs r0, r2, 0x1 + strb r0, [r1, 0xB] +_080FF838: + movs r0, 0xE + b _080FF8D0 + .align 2, 0 +_080FF83C: .4byte gUnknown_203ACE8 +_080FF840: + subs r0, r3, 0x1 + strb r0, [r1, 0xC] + movs r0, 0x10 + b _080FF8D0 +_080FF848: + ldr r0, _080FF870 @ =gUnknown_203ACE8 + ldr r2, [r0] + movs r1, 0xB + ldrsb r1, [r2, r1] + ldrb r3, [r2, 0xC] + adds r1, r3 + ldrb r0, [r2, 0xD] + subs r0, 0x1 + cmp r1, r0 + bge _080FF8CE + ldrb r1, [r2, 0xB] + movs r0, 0xB + ldrsb r0, [r2, r0] + cmp r0, 0x2 + bgt _080FF874 + adds r0, r1, 0x1 + strb r0, [r2, 0xB] + movs r4, 0xE + b _080FF87A + .align 2, 0 +_080FF870: .4byte gUnknown_203ACE8 +_080FF874: + adds r0, r3, 0x1 + strb r0, [r2, 0xC] + movs r4, 0xF +_080FF87A: + bl sub_80FFC1C + adds r0, r4, 0 + b _080FF8D0 +_080FF882: + ldr r0, _080FF898 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0xA] + movs r0, 0xA + ldrsb r0, [r1, r0] + cmp r0, 0 + beq _080FF89C + subs r0, r2, 0x1 + strb r0, [r1, 0xA] + b _080FF838 + .align 2, 0 +_080FF898: .4byte gUnknown_203ACE8 +_080FF89C: + bl sub_80FF9E8 + b _080FF838 +_080FF8A2: + ldr r0, _080FF8C4 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0xA] + movs r0, 0xA + ldrsb r0, [r1, r0] + cmp r0, 0 + bgt _080FF8C8 + adds r0, r2, 0x1 + strb r0, [r1, 0xA] + bl sub_80FFC6C + lsls r0, 24 + cmp r0, 0 + beq _080FF838 + bl sub_80FF9E8 + b _080FF838 + .align 2, 0 +_080FF8C4: .4byte gUnknown_203ACE8 +_080FF8C8: + bl sub_80FF9E8 + b _080FF838 +_080FF8CE: + movs r0, 0 +_080FF8D0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FF80C + + thumb_func_start sub_80FF8D8 +sub_80FF8D8: @ 80FF8D8 + push {lr} + cmp r0, 0x1 + beq _080FF944 + cmp r0, 0x1 + bcc _080FF928 + cmp r0, 0x2 + beq _080FF8EE + cmp r0, 0x3 + beq _080FF90E + movs r0, 0 + b _080FF960 +_080FF8EE: + ldr r0, _080FF900 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0xB] + movs r0, 0xB + ldrsb r0, [r1, r0] + cmp r0, 0 + ble _080FF904 + subs r0, r2, 0x1 + b _080FF906 + .align 2, 0 +_080FF900: .4byte gUnknown_203ACE8 +_080FF904: + movs r0, 0x3 +_080FF906: + strb r0, [r1, 0xB] + bl sub_80FFC1C + b _080FF95E +_080FF90E: + ldr r0, _080FF920 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0xB] + movs r0, 0xB + ldrsb r0, [r1, r0] + cmp r0, 0x2 + bgt _080FF924 + adds r0, r2, 0x1 + b _080FF906 + .align 2, 0 +_080FF920: .4byte gUnknown_203ACE8 +_080FF924: + movs r0, 0 + b _080FF906 +_080FF928: + ldr r0, _080FF940 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r0, [r1, 0xA] + adds r0, 0x1 + strb r0, [r1, 0xA] + bl sub_80FFC6C + lsls r0, 24 + cmp r0, 0 + beq _080FF95E + b _080FF95A + .align 2, 0 +_080FF940: .4byte gUnknown_203ACE8 +_080FF944: + ldr r2, _080FF964 @ =gUnknown_203ACE8 + ldr r1, [r2] + ldrb r0, [r1, 0xA] + subs r0, 0x1 + strb r0, [r1, 0xA] + ldr r0, [r2] + ldrb r0, [r0, 0xA] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bge _080FF95E +_080FF95A: + bl sub_80FF9E8 +_080FF95E: + movs r0, 0xE +_080FF960: + pop {r1} + bx r1 + .align 2, 0 +_080FF964: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF8D8 + + thumb_func_start sub_80FF968 +sub_80FF968: @ 80FF968 + push {lr} + adds r2, r0, 0 + cmp r2, 0x1 + beq _080FF9B8 + cmp r2, 0x1 + bcc _080FF9CC + cmp r2, 0x2 + beq _080FF980 + cmp r2, 0x3 + beq _080FF99C + movs r0, 0 + b _080FF9DE +_080FF980: + ldr r0, _080FF994 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r3, [r1, 0xB] + movs r0, 0xB + ldrsb r0, [r1, r0] + cmp r0, 0 + beq _080FF998 + subs r0, r3, 0x1 + b _080FF9DA + .align 2, 0 +_080FF994: .4byte gUnknown_203ACE8 +_080FF998: + strb r2, [r1, 0xB] + b _080FF9DC +_080FF99C: + ldr r0, _080FF9B0 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0xB] + movs r0, 0xB + ldrsb r0, [r1, r0] + cmp r0, 0x1 + bgt _080FF9B4 + adds r0, r2, 0x1 + b _080FF9DA + .align 2, 0 +_080FF9B0: .4byte gUnknown_203ACE8 +_080FF9B4: + movs r0, 0 + b _080FF9DA +_080FF9B8: + ldr r0, _080FF9C8 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r0, [r1, 0xB] + adds r0, 0x1 + strb r0, [r1, 0xB] + bl sub_80FFA0C + b _080FF9DC + .align 2, 0 +_080FF9C8: .4byte gUnknown_203ACE8 +_080FF9CC: + ldr r2, _080FF9E4 @ =gUnknown_203ACE8 + ldr r1, [r2] + movs r0, 0 + strb r0, [r1, 0xA] + ldr r1, [r2] + ldrb r0, [r1, 0xB] + adds r0, 0x1 +_080FF9DA: + strb r0, [r1, 0xB] +_080FF9DC: + movs r0, 0xE +_080FF9DE: + pop {r1} + bx r1 + .align 2, 0 +_080FF9E4: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF968 + + thumb_func_start sub_80FF9E8 +sub_80FF9E8: @ 80FF9E8 + push {lr} + ldr r2, _080FFA08 @ =gUnknown_203ACE8 + ldr r1, [r2] + movs r0, 0xFF + strb r0, [r1, 0xA] + ldr r2, [r2] + ldrb r1, [r2, 0xB] + movs r0, 0xB + ldrsb r0, [r2, r0] + cmp r0, 0 + beq _080FFA02 + subs r0, r1, 0x1 + strb r0, [r2, 0xB] +_080FFA02: + pop {r0} + bx r0 + .align 2, 0 +_080FFA08: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FF9E8 + + thumb_func_start sub_80FFA0C +sub_80FFA0C: @ 80FFA0C + push {r4,lr} + ldr r4, _080FFA24 @ =gUnknown_203ACE8 + ldr r1, [r4] + ldrb r0, [r1, 0x9] + cmp r0, 0 + bne _080FFA28 + movs r0, 0x1 + strb r0, [r1, 0xA] + bl sub_80FFC1C + b _080FFA32 + .align 2, 0 +_080FFA24: .4byte gUnknown_203ACE8 +_080FFA28: + ldrb r0, [r1, 0xB] + bl sub_80FFC04 + ldr r1, [r4] + strb r0, [r1, 0xA] +_080FFA32: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FFA0C + + thumb_func_start sub_80FFA38 +sub_80FFA38: @ 80FFA38 + push {r4,lr} + cmp r0, 0x5 + bls _080FFA40 + b _080FFB64 +_080FFA40: + lsls r0, 2 + ldr r1, _080FFA4C @ =_080FFA50 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FFA4C: .4byte _080FFA50 + .align 2, 0 +_080FFA50: + .4byte _080FFAEC + .4byte _080FFACA + .4byte _080FFA68 + .4byte _080FFA94 + .4byte _080FFB14 + .4byte _080FFB34 +_080FFA68: + ldr r0, _080FFA88 @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0x11 + ldrsb r0, [r1, r0] + ldrb r3, [r1, 0xE] + adds r0, r3 + cmp r0, 0 + bgt _080FFA7A + b _080FFB64 +_080FFA7A: + ldrb r2, [r1, 0x11] + movs r0, 0x11 + ldrsb r0, [r1, r0] + cmp r0, 0 + ble _080FFA8C + subs r0, r2, 0x1 + b _080FFAB2 + .align 2, 0 +_080FFA88: .4byte gUnknown_203ACE8 +_080FFA8C: + subs r0, r3, 0x1 + strb r0, [r1, 0xE] + movs r4, 0x12 + b _080FFAC2 +_080FFA94: + ldr r0, _080FFAB8 @ =gUnknown_203ACE8 + ldr r1, [r0] + movs r0, 0x11 + ldrsb r0, [r1, r0] + ldrb r3, [r1, 0xE] + adds r0, r3 + ldrb r2, [r1, 0xF] + cmp r0, r2 + bge _080FFB64 + ldrb r2, [r1, 0x11] + movs r0, 0x11 + ldrsb r0, [r1, r0] + cmp r0, 0x2 + bgt _080FFABC + adds r0, r2, 0x1 +_080FFAB2: + strb r0, [r1, 0x11] + movs r4, 0x11 + b _080FFAC2 + .align 2, 0 +_080FFAB8: .4byte gUnknown_203ACE8 +_080FFABC: + adds r0, r3, 0x1 + strb r0, [r1, 0xE] + movs r4, 0x13 +_080FFAC2: + bl sub_80FFC44 + adds r0, r4, 0 + b _080FFB66 +_080FFACA: + ldr r0, _080FFADC @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0x10] + movs r0, 0x10 + ldrsb r0, [r1, r0] + cmp r0, 0 + ble _080FFAE0 + subs r0, r2, 0x1 + b _080FFAE2 + .align 2, 0 +_080FFADC: .4byte gUnknown_203ACE8 +_080FFAE0: + movs r0, 0x1 +_080FFAE2: + strb r0, [r1, 0x10] + bl sub_80FFC44 +_080FFAE8: + movs r0, 0x11 + b _080FFB66 +_080FFAEC: + ldr r4, _080FFB10 @ =gUnknown_203ACE8 + ldr r1, [r4] + ldrb r2, [r1, 0x10] + movs r0, 0x10 + ldrsb r0, [r1, r0] + cmp r0, 0 + bgt _080FFB0A + adds r0, r2, 0x1 + strb r0, [r1, 0x10] + bl sub_80FFCC0 + lsls r0, 24 + cmp r0, 0 + beq _080FFAE8 + ldr r1, [r4] +_080FFB0A: + movs r0, 0 + strb r0, [r1, 0x10] + b _080FFAE8 + .align 2, 0 +_080FFB10: .4byte gUnknown_203ACE8 +_080FFB14: + ldr r0, _080FFB28 @ =gUnknown_203ACE8 + ldr r2, [r0] + ldrb r0, [r2, 0xE] + adds r1, r0, 0 + cmp r1, 0 + beq _080FFB64 + cmp r1, 0x3 + bls _080FFB2C + subs r0, 0x4 + b _080FFB2E + .align 2, 0 +_080FFB28: .4byte gUnknown_203ACE8 +_080FFB2C: + movs r0, 0 +_080FFB2E: + strb r0, [r2, 0xE] + movs r0, 0x14 + b _080FFB66 +_080FFB34: + ldr r3, _080FFB60 @ =gUnknown_203ACE8 + ldr r1, [r3] + ldrb r2, [r1, 0xE] + ldrb r0, [r1, 0xF] + subs r0, 0x4 + cmp r2, r0 + bgt _080FFB64 + adds r0, r2, 0x4 + strb r0, [r1, 0xE] + ldr r2, [r3] + ldrb r1, [r2, 0xE] + ldrb r3, [r2, 0xF] + subs r0, r3, 0x3 + cmp r1, r0 + ble _080FFB58 + adds r0, r3, 0 + adds r0, 0xFD + strb r0, [r2, 0xE] +_080FFB58: + bl sub_80FFC44 + movs r0, 0x15 + b _080FFB66 + .align 2, 0 +_080FFB60: .4byte gUnknown_203ACE8 +_080FFB64: + movs r0, 0 +_080FFB66: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FFA38 + + thumb_func_start sub_80FFB6C +sub_80FFB6C: @ 80FFB6C + ldr r0, _080FFB88 @ =gUnknown_203ACE8 + ldr r0, [r0] + movs r2, 0x6 + ldrsb r2, [r0, r2] + ldrb r1, [r0, 0x2] + muls r1, r2 + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_080FFB88: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFB6C + + thumb_func_start sub_80FFB8C +sub_80FFB8C: @ 80FFB8C + ldr r0, _080FFBA8 @ =gUnknown_203ACE8 + ldr r0, [r0] + movs r1, 0xB + ldrsb r1, [r0, r1] + ldrb r2, [r0, 0xC] + adds r1, r2 + lsls r1, 1 + ldrb r0, [r0, 0xA] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_080FFBA8: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFB8C + + thumb_func_start sub_80FFBAC +sub_80FFBAC: @ 80FFBAC + push {lr} + ldr r0, _080FFBDC @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r0, [r1, 0xA] + movs r3, 0 + cmp r0, 0x6 + bhi _080FFBBE + movs r3, 0xA + ldrsb r3, [r1, r3] +_080FFBBE: + ldrb r0, [r1, 0xB] + movs r2, 0 + cmp r0, 0x3 + bhi _080FFBCA + movs r2, 0xB + ldrsb r2, [r1, r2] +_080FFBCA: + ldr r0, _080FFBE0 @ =gUnknown_843F39C + lsls r1, r2, 3 + subs r1, r2 + adds r1, r3, r1 + adds r1, r0 + ldrb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_080FFBDC: .4byte gUnknown_203ACE8 +_080FFBE0: .4byte gUnknown_843F39C + thumb_func_end sub_80FFBAC + + thumb_func_start sub_80FFBE4 +sub_80FFBE4: @ 80FFBE4 + ldr r0, _080FFC00 @ =gUnknown_203ACE8 + ldr r0, [r0] + movs r1, 0x11 + ldrsb r1, [r0, r1] + ldrb r2, [r0, 0xE] + adds r1, r2 + lsls r1, 1 + ldrb r0, [r0, 0x10] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_080FFC00: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFBE4 + + thumb_func_start sub_80FFC04 +sub_80FFC04: @ 80FFC04 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080FFC12 + cmp r0, 0x1 + beq _080FFC16 +_080FFC12: + movs r0, 0x6 + b _080FFC18 +_080FFC16: + movs r0, 0x5 +_080FFC18: + pop {r1} + bx r1 + thumb_func_end sub_80FFC04 + + thumb_func_start sub_80FFC1C +sub_80FFC1C: @ 80FFC1C + push {lr} + b _080FFC32 +_080FFC20: + ldr r0, _080FFC40 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0xA] + movs r0, 0xA + ldrsb r0, [r1, r0] + cmp r0, 0 + beq _080FFC3C + subs r0, r2, 0x1 + strb r0, [r1, 0xA] +_080FFC32: + bl sub_80FFC6C + lsls r0, 24 + cmp r0, 0 + bne _080FFC20 +_080FFC3C: + pop {r0} + bx r0 + .align 2, 0 +_080FFC40: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFC1C + + thumb_func_start sub_80FFC44 +sub_80FFC44: @ 80FFC44 + push {lr} + b _080FFC5A +_080FFC48: + ldr r0, _080FFC68 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r2, [r1, 0x10] + movs r0, 0x10 + ldrsb r0, [r1, r0] + cmp r0, 0 + beq _080FFC64 + subs r0, r2, 0x1 + strb r0, [r1, 0x10] +_080FFC5A: + bl sub_80FFCC0 + lsls r0, 24 + cmp r0, 0 + bne _080FFC48 +_080FFC64: + pop {r0} + bx r0 + .align 2, 0 +_080FFC68: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFC44 + + thumb_func_start sub_80FFC6C +sub_80FFC6C: @ 80FFC6C + push {r4,lr} + ldr r4, _080FFC98 @ =gUnknown_203ACE8 + ldr r1, [r4] + ldrb r0, [r1, 0x9] + cmp r0, 0 + bne _080FFC9C + bl sub_80FFB8C + adds r4, r0, 0 + bl sub_80BDF38 + movs r1, 0 + lsls r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsrs r0, 24 + cmp r4, r0 + bcc _080FFC92 + movs r1, 0x1 +_080FFC92: + adds r0, r1, 0 + b _080FFCB8 + .align 2, 0 +_080FFC98: .4byte gUnknown_203ACE8 +_080FFC9C: + ldrb r0, [r1, 0xB] + bl sub_80FFC04 + movs r2, 0 + ldr r1, [r4] + ldrb r1, [r1, 0xA] + lsls r1, 24 + asrs r1, 24 + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + ble _080FFCB6 + movs r2, 0x1 +_080FFCB6: + adds r0, r2, 0 +_080FFCB8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FFC6C + + thumb_func_start sub_80FFCC0 +sub_80FFCC0: @ 80FFCC0 + push {r4,lr} + bl sub_80FFBE4 + adds r4, r0, 0 + bl sub_80BE1D4 + movs r1, 0 + lsls r4, 16 + lsls r0, 16 + cmp r4, r0 + bcc _080FFCD8 + movs r1, 0x1 +_080FFCD8: + adds r0, r1, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FFCC0 + + thumb_func_start sub_80FFCE0 +sub_80FFCE0: @ 80FFCE0 + ldr r2, _080FFCF4 @ =gUnknown_843F2AC + ldr r0, _080FFCF8 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x3] + bx lr + .align 2, 0 +_080FFCF4: .4byte gUnknown_843F2AC +_080FFCF8: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFCE0 + + thumb_func_start sub_80FFCFC +sub_80FFCFC: @ 80FFCFC + ldr r2, _080FFD14 @ =gUnknown_843F2AC + ldr r0, _080FFD18 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r2, 0x4 + adds r0, r2 + ldr r0, [r0] + bx lr + .align 2, 0 +_080FFD14: .4byte gUnknown_843F2AC +_080FFD18: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFCFC + + thumb_func_start sub_80FFD1C +sub_80FFD1C: @ 80FFD1C + ldr r0, _080FFD24 @ =gUnknown_203ACE8 + ldr r0, [r0] + adds r0, 0x18 + bx lr + .align 2, 0 +_080FFD24: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD1C + + thumb_func_start sub_80FFD28 +sub_80FFD28: @ 80FFD28 + ldr r0, _080FFD30 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + bx lr + .align 2, 0 +_080FFD30: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD28 + + thumb_func_start sub_80FFD34 +sub_80FFD34: @ 80FFD34 + ldr r0, _080FFD3C @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + bx lr + .align 2, 0 +_080FFD3C: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD34 + + thumb_func_start sub_80FFD40 +sub_80FFD40: @ 80FFD40 + ldr r0, _080FFD48 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + bx lr + .align 2, 0 +_080FFD48: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD40 + + thumb_func_start sub_80FFD4C +sub_80FFD4C: @ 80FFD4C + ldr r0, _080FFD54 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + bx lr + .align 2, 0 +_080FFD54: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD4C + + thumb_func_start sub_80FFD58 +sub_80FFD58: @ 80FFD58 + push {r4,r5,lr} + ldr r4, _080FFD88 @ =gUnknown_843F2AC + ldr r2, _080FFD8C @ =gUnknown_203ACE8 + ldr r5, [r2] + ldrb r3, [r5, 0x1] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 3 + adds r3, r4, 0 + adds r3, 0x8 + adds r2, r3 + ldr r2, [r2] + str r2, [r0] + ldrb r2, [r5, 0x1] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 3 + adds r4, 0xC + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FFD88: .4byte gUnknown_843F2AC +_080FFD8C: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD58 + + thumb_func_start sub_80FFD90 +sub_80FFD90: @ 80FFD90 + push {r4,r5,lr} + ldr r4, _080FFDC0 @ =gUnknown_843F2AC + ldr r2, _080FFDC4 @ =gUnknown_203ACE8 + ldr r5, [r2] + ldrb r3, [r5, 0x1] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 3 + adds r3, r4, 0 + adds r3, 0x10 + adds r2, r3 + ldr r2, [r2] + str r2, [r0] + ldrb r2, [r5, 0x1] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 3 + adds r4, 0x14 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FFDC0: .4byte gUnknown_843F2AC +_080FFDC4: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFD90 + + thumb_func_start sub_80FFDC8 +sub_80FFDC8: @ 80FFDC8 + push {lr} + adds r2, r0, 0 + ldr r0, _080FFDDC @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x4 + bne _080FFDE4 + ldr r0, _080FFDE0 @ =gUnknown_84189EE + b _080FFDE6 + .align 2, 0 +_080FFDDC: .4byte gUnknown_203ACE8 +_080FFDE0: .4byte gUnknown_84189EE +_080FFDE4: + ldr r0, _080FFDF0 @ =gUnknown_84189E0 +_080FFDE6: + str r0, [r2] + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080FFDF0: .4byte gUnknown_84189E0 + thumb_func_end sub_80FFDC8 + + thumb_func_start sub_80FFDF4 +sub_80FFDF4: @ 80FFDF4 + ldr r2, _080FFE00 @ =gUnknown_8418937 + str r2, [r0] + ldr r0, _080FFE04 @ =gUnknown_8418956 + str r0, [r1] + bx lr + .align 2, 0 +_080FFE00: .4byte gUnknown_8418937 +_080FFE04: .4byte gUnknown_8418956 + thumb_func_end sub_80FFDF4 + + thumb_func_start sub_80FFE08 +sub_80FFE08: @ 80FFE08 + ldr r2, _080FFE18 @ =gUnknown_203ACE8 + ldr r3, [r2] + ldrb r2, [r3, 0xA] + strb r2, [r0] + ldrb r0, [r3, 0xB] + strb r0, [r1] + bx lr + .align 2, 0 +_080FFE18: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFE08 + + thumb_func_start sub_80FFE1C +sub_80FFE1C: @ 80FFE1C + ldr r0, _080FFE24 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0x9] + bx lr + .align 2, 0 +_080FFE24: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFE1C + + thumb_func_start sub_80FFE28 +sub_80FFE28: @ 80FFE28 + ldr r0, _080FFE30 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0xC] + bx lr + .align 2, 0 +_080FFE30: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFE28 + + thumb_func_start sub_80FFE34 +sub_80FFE34: @ 80FFE34 + ldr r2, _080FFE44 @ =gUnknown_203ACE8 + ldr r3, [r2] + ldrb r2, [r3, 0x10] + strb r2, [r0] + ldrb r0, [r3, 0x11] + strb r0, [r1] + bx lr + .align 2, 0 +_080FFE44: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFE34 + + thumb_func_start sub_80FFE48 +sub_80FFE48: @ 80FFE48 + ldr r0, _080FFE50 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0xE] + bx lr + .align 2, 0 +_080FFE50: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFE48 + + thumb_func_start sub_80FFE54 +sub_80FFE54: @ 80FFE54 + ldr r0, _080FFE5C @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r0, [r0, 0xF] + bx lr + .align 2, 0 +_080FFE5C: .4byte gUnknown_203ACE8 + thumb_func_end sub_80FFE54 + + thumb_func_start sub_80FFE60 +sub_80FFE60: @ 80FFE60 + movs r0, 0 + bx lr + thumb_func_end sub_80FFE60 + + thumb_func_start sub_80FFE64 +sub_80FFE64: @ 80FFE64 + push {lr} + ldr r0, _080FFE78 @ =gUnknown_203ACE8 + ldr r1, [r0] + ldrb r0, [r1, 0x4] + cmp r0, 0x2 + beq _080FFE7C + cmp r0, 0x3 + beq _080FFE86 + b _080FFE90 + .align 2, 0 +_080FFE78: .4byte gUnknown_203ACE8 +_080FFE7C: + ldrb r0, [r1, 0x9] + cmp r0, 0 + bne _080FFE90 + ldrb r0, [r1, 0xC] + b _080FFE88 +_080FFE86: + ldrb r0, [r1, 0xE] +_080FFE88: + cmp r0, 0 + beq _080FFE90 + movs r0, 0x1 + b _080FFE92 +_080FFE90: + movs r0, 0 +_080FFE92: + pop {r1} + bx r1 + thumb_func_end sub_80FFE64 + + thumb_func_start sub_80FFE98 +sub_80FFE98: @ 80FFE98 + push {lr} + ldr r0, _080FFEAC @ =gUnknown_203ACE8 + ldr r2, [r0] + ldrb r0, [r2, 0x4] + cmp r0, 0x2 + beq _080FFEB0 + cmp r0, 0x3 + beq _080FFEC6 + b _080FFED4 + .align 2, 0 +_080FFEAC: .4byte gUnknown_203ACE8 +_080FFEB0: + ldrb r0, [r2, 0x9] + cmp r0, 0 + bne _080FFED4 + ldrb r1, [r2, 0xC] + adds r1, 0x4 + ldrb r0, [r2, 0xD] + subs r0, 0x1 + cmp r1, r0 + bgt _080FFED4 + movs r0, 0x1 + b _080FFED6 +_080FFEC6: + ldrb r0, [r2, 0xE] + adds r0, 0x4 + ldrb r2, [r2, 0xF] + cmp r0, r2 + bgt _080FFED4 + movs r0, 0x1 + b _080FFED6 +_080FFED4: + movs r0, 0 +_080FFED6: + pop {r1} + bx r1 + thumb_func_end sub_80FFE98 + + thumb_func_start sub_80FFEDC +sub_80FFEDC: @ 80FFEDC + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r3, r1, 24 + movs r2, 0 + cmp r2, r3 + bcs _080FFF12 + ldr r0, _080FFF04 @ =gUnknown_203ACE8 + ldr r0, [r0] + adds r4, r0, 0 + adds r4, 0x18 +_080FFEF2: + lsls r0, r2, 1 + adds r1, r0, r5 + adds r0, r4, r0 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + beq _080FFF08 + movs r0, 0x1 + b _080FFF14 + .align 2, 0 +_080FFF04: .4byte gUnknown_203ACE8 +_080FFF08: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r3 + bcc _080FFEF2 +_080FFF12: + movs r0, 0 +_080FFF14: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FFEDC + + thumb_func_start sub_80FFF1C +sub_80FFF1C: @ 80FFF1C + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r1, 0 + ldr r2, _080FFF34 @ =gUnknown_843F2AC +_080FFF26: + ldrb r0, [r2] + cmp r0, r3 + bne _080FFF38 + lsls r0, r1, 24 + lsrs r0, 24 + b _080FFF42 + .align 2, 0 +_080FFF34: .4byte gUnknown_843F2AC +_080FFF38: + adds r2, 0x18 + adds r1, 0x1 + cmp r1, 0x9 + bls _080FFF26 + movs r0, 0 +_080FFF42: + pop {r1} + bx r1 + thumb_func_end sub_80FFF1C + + thumb_func_start sub_80FFF48 +sub_80FFF48: @ 80FFF48 + push {r4,lr} + movs r2, 0 + ldr r0, _080FFF68 @ =gUnknown_203ACE8 + ldr r0, [r0] + ldrb r1, [r0, 0x7] + cmp r2, r1 + bge _080FFF78 + ldr r4, _080FFF6C @ =0x0000ffff + adds r3, r1, 0 + adds r1, r0, 0 + adds r1, 0x18 +_080FFF5E: + ldrh r0, [r1] + cmp r0, r4 + beq _080FFF70 + movs r0, 0 + b _080FFF7A + .align 2, 0 +_080FFF68: .4byte gUnknown_203ACE8 +_080FFF6C: .4byte 0x0000ffff +_080FFF70: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, r3 + blt _080FFF5E +_080FFF78: + movs r0, 0x1 +_080FFF7A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FFF48 + + thumb_func_start sub_80FFF80 +sub_80FFF80: @ 80FFF80 + push {lr} + bl sub_8100BF4 + lsls r0, 24 + cmp r0, 0 + beq _080FFF90 + movs r0, 0x1 + b _080FFF92 +_080FFF90: + movs r0, 0 +_080FFF92: + pop {r1} + bx r1 + thumb_func_end sub_80FFF80 + + thumb_func_start sub_80FFF98 +sub_80FFF98: @ 80FFF98 + push {r4,lr} + sub sp, 0x8 + ldr r0, _080FFFB4 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x5 + bls _080FFFA8 + b _08100100 +_080FFFA8: + lsls r0, 2 + ldr r1, _080FFFB8 @ =_080FFFBC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FFFB4: .4byte gUnknown_203ACEC +_080FFFB8: .4byte _080FFFBC + .align 2, 0 +_080FFFBC: + .4byte _080FFFD4 + .4byte _08100038 + .4byte _0810006C + .4byte _0810009C + .4byte _081000AE + .4byte _081000B8 +_080FFFD4: + movs r0, 0 + bl sub_8001618 + ldr r1, _08100028 @ =gUnknown_843F8A0 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r4, _0810002C @ =gUnknown_203ACEC + ldr r1, [r4] + movs r0, 0xB0 + lsls r0, 4 + adds r1, r0 + movs r0, 0x3 + bl sub_8001FA0 + ldr r1, [r4] + movs r0, 0xC0 + lsls r0, 2 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + ldr r0, _08100030 @ =gUnknown_843F8B0 + bl sub_8003B24 + bl sub_8002C28 + bl sub_8100CBC + bl sub_8100C5C + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _08100034 @ =0x01000100 + add r0, sp, 0x4 + bl CpuFastSet + b _08100104 + .align 2, 0 +_08100028: .4byte gUnknown_843F8A0 +_0810002C: .4byte gUnknown_203ACEC +_08100030: .4byte gUnknown_843F8B0 +_08100034: .4byte 0x01000100 +_08100038: + ldr r1, _08100064 @ =gUnknown_8E99DAC + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _08100068 @ =gUnknown_8E99E74 + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + bl sub_8100F44 + bl sub_8102428 + movs r0, 0x3 + bl sub_80020BC + b _08100104 + .align 2, 0 +_08100064: .4byte gUnknown_8E99DAC +_08100068: .4byte gUnknown_8E99E74 +_0810006C: + ldr r0, _08100094 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 2 + adds r0, r1 + bl sub_8101100 + ldr r1, _08100098 @ =gUnknown_843F7AC + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + movs r0, 0x1 + bl sub_80020BC + b _08100104 + .align 2, 0 +_08100094: .4byte gUnknown_203ACEC +_08100098: .4byte gUnknown_843F7AC +_0810009C: + bl sub_8100D24 + bl sub_8100E34 + bl sub_8100FDC + bl sub_81012CC + b _08100104 +_081000AE: + bl sub_8101A90 + bl sub_8101AC4 + b _08100104 +_081000B8: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0810010E + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8101A5C + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x3B + bl sub_8000A38 + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0 + bl sub_80019BC + bl sub_81021D4 + bl sub_8102320 + b _08100104 +_08100100: + movs r0, 0 + b _08100110 +_08100104: + ldr r0, _08100118 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0810010E: + movs r0, 0x1 +_08100110: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08100118: .4byte gUnknown_203ACEC + thumb_func_end sub_80FFF98 + + thumb_func_start sub_810011C +sub_810011C: @ 810011C + push {lr} + ldr r0, _08100130 @ =gUnknown_203ACEC + ldr r0, [r0] + cmp r0, 0 + beq _0810012A + bl sub_8002BC4 +_0810012A: + pop {r0} + bx r0 + .align 2, 0 +_08100130: .4byte gUnknown_203ACEC + thumb_func_end sub_810011C + + thumb_func_start sub_8100134 +sub_8100134: @ 8100134 + push {lr} + ldr r1, _08100148 @ =gUnknown_203ACEC + ldr r1, [r1] + movs r2, 0 + strh r0, [r1, 0x4] + strh r2, [r1] + bl sub_810014C + pop {r0} + bx r0 + .align 2, 0 +_08100148: .4byte gUnknown_203ACEC + thumb_func_end sub_8100134 + + thumb_func_start sub_810014C +sub_810014C: @ 810014C + push {lr} + ldr r0, _08100164 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0, 0x4] + cmp r0, 0x16 + bhi _08100250 + lsls r0, 2 + ldr r1, _08100168 @ =_0810016C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08100164: .4byte gUnknown_203ACEC +_08100168: .4byte _0810016C + .align 2, 0 +_0810016C: + .4byte _08100250 + .4byte _081001C8 + .4byte _081001CE + .4byte _081001D4 + .4byte _081001DA + .4byte _081001E0 + .4byte _081001E6 + .4byte _081001EC + .4byte _081001F2 + .4byte _081001F8 + .4byte _081001FE + .4byte _08100204 + .4byte _0810020A + .4byte _08100210 + .4byte _08100216 + .4byte _0810021C + .4byte _08100222 + .4byte _08100228 + .4byte _0810022E + .4byte _08100234 + .4byte _0810023A + .4byte _08100240 + .4byte _08100246 +_081001C8: + bl sub_8100258 + b _0810024A +_081001CE: + bl sub_8100290 + b _0810024A +_081001D4: + bl sub_8100374 + b _0810024A +_081001DA: + bl sub_8100430 + b _0810024A +_081001E0: + bl sub_81003A8 + b _0810024A +_081001E6: + bl sub_81003EC + b _0810024A +_081001EC: + bl sub_8100474 + b _0810024A +_081001F2: + bl sub_81004B8 + b _0810024A +_081001F8: + bl sub_81004F4 + b _0810024A +_081001FE: + bl sub_81005C0 + b _0810024A +_08100204: + bl sub_81007D0 + b _0810024A +_0810020A: + bl sub_8100890 + b _0810024A +_08100210: + bl sub_810093C + b _0810024A +_08100216: + bl sub_8100720 + b _0810024A +_0810021C: + bl sub_810072C + b _0810024A +_08100222: + bl sub_8100774 + b _0810024A +_08100228: + bl sub_81009F8 + b _0810024A +_0810022E: + bl sub_8100A78 + b _0810024A +_08100234: + bl sub_8100A04 + b _0810024A +_0810023A: + bl sub_8100B70 + b _0810024A +_08100240: + bl sub_8100AE8 + b _0810024A +_08100246: + bl sub_8100660 +_0810024A: + lsls r0, 24 + lsrs r0, 24 + b _08100252 +_08100250: + movs r0, 0 +_08100252: + pop {r1} + bx r1 + thumb_func_end sub_810014C + + thumb_func_start sub_8100258 +sub_8100258: @ 8100258 + push {r4,lr} + ldr r4, _0810026C @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _08100270 + cmp r0, 0x1 + beq _0810027E + b _08100288 + .align 2, 0 +_0810026C: .4byte gUnknown_203ACEC +_08100270: + bl sub_8100FDC + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100288 +_0810027E: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0810028A +_08100288: + movs r0, 0x1 +_0810028A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100258 + + thumb_func_start sub_8100290 +sub_8100290: @ 8100290 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + bl sub_80FFD1C + adds r4, r0, 0 + bl sub_80FFCE0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + bl sub_80FFD40 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_80FFD4C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + bl sub_80FFD34 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + lsls r0, 1 + adds r4, r0 + ldr r1, _08100304 @ =gUnknown_843F888 + mov r2, r9 + lsls r0, r2, 2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 19 + movs r1, 0xD0 + lsls r1, 12 + adds r0, r1 + lsrs r6, r0, 16 + movs r5, 0 + cmp r5, r7 + bcs _0810033A + ldr r2, _08100308 @ =0x0000ffff + mov r10, r2 +_081002EE: + ldrh r0, [r4] + cmp r0, r10 + bne _08100310 + movs r0, 0x1 + ldr r1, _0810030C @ =gUnknown_843F8D8 + movs r2, 0 + bl sub_8005ED4 + lsls r1, r0, 3 + subs r0, r1, r0 + b _08100322 + .align 2, 0 +_08100304: .4byte gUnknown_843F888 +_08100308: .4byte 0x0000ffff +_0810030C: .4byte gUnknown_843F8D8 +_08100310: + ldrh r1, [r4] + mov r0, sp + bl sub_80BD850 + movs r0, 0x1 + mov r1, sp + movs r2, 0 + bl sub_8005ED4 +_08100322: + adds r0, 0x11 + lsls r1, r6, 16 + asrs r1, 16 + adds r1, r0 + lsls r1, 16 + lsrs r6, r1, 16 + adds r4, 0x2 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _081002EE +_0810033A: + ldr r1, _08100370 @ =gUnknown_843F888 + mov r2, r9 + lsls r0, r2, 2 + adds r0, r1 + mov r2, r8 + lsls r1, r2, 1 + ldrb r0, [r0, 0x1] + adds r1, r0 + adds r1, 0x1 + lsls r1, 3 + adds r1, 0x1 + lsls r0, r6, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + bl sub_8101B58 + movs r0, 0 + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08100370: .4byte gUnknown_843F888 + thumb_func_end sub_8100290 + + thumb_func_start sub_8100374 +sub_8100374: @ 8100374 + push {lr} + bl sub_80FFD40 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08100396 + cmp r0, 0x1 + bgt _0810038C + cmp r0, 0 + beq _08100392 + b _081003A2 +_0810038C: + cmp r0, 0x2 + beq _0810039A + b _081003A2 +_08100392: + movs r0, 0x1C + b _0810039C +_08100396: + movs r0, 0x73 + b _0810039C +_0810039A: + movs r0, 0xBF +_0810039C: + movs r1, 0x61 + bl sub_8101B58 +_081003A2: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8100374 + + thumb_func_start sub_81003A8 +sub_81003A8: @ 81003A8 + push {r4,lr} + ldr r4, _081003BC @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _081003C0 + cmp r0, 0x1 + beq _081003DA + b _081003E4 + .align 2, 0 +_081003BC: .4byte gUnknown_203ACEC +_081003C0: + bl sub_8101B88 + movs r0, 0x2 + bl sub_8100E7C + movs r0, 0x1 + bl sub_8100F18 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _081003E4 +_081003DA: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _081003E6 +_081003E4: + movs r0, 0x1 +_081003E6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81003A8 + + thumb_func_start sub_81003EC +sub_81003EC: @ 81003EC + push {r4,lr} + ldr r4, _08100400 @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _08100404 + cmp r0, 0x1 + beq _0810041E + b _08100428 + .align 2, 0 +_08100400: .4byte gUnknown_203ACEC +_08100404: + bl sub_8101B88 + movs r0, 0x3 + bl sub_8100E7C + movs r0, 0 + bl sub_8100F18 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100428 +_0810041E: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0810042A +_08100428: + movs r0, 0x1 +_0810042A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81003EC + + thumb_func_start sub_8100430 +sub_8100430: @ 8100430 + push {r4,lr} + ldr r4, _08100444 @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _08100448 + cmp r0, 0x1 + beq _08100462 + b _0810046C + .align 2, 0 +_08100444: .4byte gUnknown_203ACEC +_08100448: + bl sub_8101B88 + movs r0, 0x1 + bl sub_8100E7C + movs r0, 0x1 + bl sub_8100F18 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0810046C +_08100462: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0810046E +_0810046C: + movs r0, 0x1 +_0810046E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100430 + + thumb_func_start sub_8100474 +sub_8100474: @ 8100474 + push {r4,lr} + ldr r4, _08100488 @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _0810048C + cmp r0, 0x1 + beq _081004A6 + b _081004B0 + .align 2, 0 +_08100488: .4byte gUnknown_203ACEC +_0810048C: + bl sub_8101BA8 + movs r0, 0 + bl sub_8100E7C + movs r0, 0 + bl sub_80019BC + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _081004B0 +_081004A6: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _081004B2 +_081004B0: + movs r0, 0x1 +_081004B2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100474 + + thumb_func_start sub_81004B8 +sub_81004B8: @ 81004B8 + push {r4,lr} + ldr r4, _081004CC @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _081004D0 + cmp r0, 0x1 + beq _081004E6 + movs r0, 0x1 + b _081004EE + .align 2, 0 +_081004CC: .4byte gUnknown_203ACEC +_081004D0: + bl sub_8101BA8 + movs r0, 0 + bl sub_8100E7C + bl sub_8100FDC + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_081004E6: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 +_081004EE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81004B8 + + thumb_func_start sub_81004F4 +sub_81004F4: @ 81004F4 + push {lr} + ldr r0, _0810050C @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x4 + bhi _081005AE + lsls r0, 2 + ldr r1, _08100510 @ =_08100514 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810050C: .4byte gUnknown_203ACEC +_08100510: .4byte _08100514 + .align 2, 0 +_08100514: + .4byte _08100528 + .4byte _08100544 + .4byte _08100556 + .4byte _0810056C + .4byte _0810058C +_08100528: + bl sub_8101B88 + movs r0, 0 + bl sub_80019D0 + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8101A5C + bl sub_810131C + b _0810057A +_08100544: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081005B8 + movs r0, 0 + bl sub_81015D4 + b _0810057A +_08100556: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081005B8 + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _081005B8 + b _0810057A +_0810056C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081005B8 + bl sub_8101FAC +_0810057A: + ldr r0, _08100588 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _081005B8 + .align 2, 0 +_08100588: .4byte gUnknown_203ACEC +_0810058C: + bl sub_8102018 + lsls r0, 24 + cmp r0, 0 + bne _081005B8 + bl sub_8101BC0 + movs r0, 0 + bl sub_81022E0 + bl sub_810224C + ldr r0, _081005B4 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_081005AE: + movs r0, 0 + b _081005BA + .align 2, 0 +_081005B4: .4byte gUnknown_203ACEC +_081005B8: + movs r0, 0x1 +_081005BA: + pop {r1} + bx r1 + thumb_func_end sub_81004F4 + + thumb_func_start sub_81005C0 +sub_81005C0: @ 81005C0 + push {lr} + ldr r0, _081005D8 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x4 + bhi _08100658 + lsls r0, 2 + ldr r1, _081005DC @ =_081005E0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081005D8: .4byte gUnknown_203ACEC +_081005DC: .4byte _081005E0 + .align 2, 0 +_081005E0: + .4byte _081005F4 + .4byte _08100602 + .4byte _0810061E + .4byte _08100630 + .4byte _08100654 +_081005F4: + bl sub_8101C48 + bl sub_81020AC + bl sub_81022B0 + b _08100644 +_08100602: + bl sub_81020D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08100658 + movs r0, 0x1 + bl sub_81015D4 + ldr r0, _0810062C @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0810061E: + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _08100658 + b _08100644 + .align 2, 0 +_0810062C: .4byte gUnknown_203ACEC +_08100630: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100658 + bl sub_8101BA8 + movs r0, 0 + bl sub_80019BC +_08100644: + ldr r0, _08100650 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100658 + .align 2, 0 +_08100650: .4byte gUnknown_203ACEC +_08100654: + movs r0, 0 + b _0810065A +_08100658: + movs r0, 0x1 +_0810065A: + pop {r1} + bx r1 + thumb_func_end sub_81005C0 + + thumb_func_start sub_8100660 +sub_8100660: @ 8100660 + push {lr} + ldr r0, _08100678 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x4 + bhi _08100718 + lsls r0, 2 + ldr r1, _0810067C @ =_08100680 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08100678: .4byte gUnknown_203ACEC +_0810067C: .4byte _08100680 + .align 2, 0 +_08100680: + .4byte _08100694 + .4byte _081006A8 + .4byte _081006C2 + .4byte _081006E8 + .4byte _0810070E +_08100694: + bl sub_8101C48 + bl sub_81022B0 + bl sub_810215C + movs r0, 0x5 + bl sub_81015D4 + b _081006D6 +_081006A8: + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _08100718 + bl sub_81021B8 + lsls r0, 24 + cmp r0, 0 + bne _08100718 + bl sub_810131C + b _081006D6 +_081006C2: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100718 + movs r0, 0x6 + bl sub_81015D4 + bl sub_8102178 +_081006D6: + ldr r0, _081006E4 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100718 + .align 2, 0 +_081006E4: .4byte gUnknown_203ACEC +_081006E8: + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _08100718 + bl sub_81021B8 + lsls r0, 24 + cmp r0, 0 + bne _08100718 + bl sub_810224C + bl sub_8101BC0 + ldr r0, _08100714 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0810070E: + movs r0, 0 + b _0810071A + .align 2, 0 +_08100714: .4byte gUnknown_203ACEC +_08100718: + movs r0, 0x1 +_0810071A: + pop {r1} + bx r1 + thumb_func_end sub_8100660 + + thumb_func_start sub_8100720 +sub_8100720: @ 8100720 + push {lr} + bl sub_8101C80 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8100720 + + thumb_func_start sub_810072C +sub_810072C: @ 810072C + push {r4,lr} + ldr r4, _08100740 @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _08100744 + cmp r0, 0x1 + beq _08100754 + b _0810076A + .align 2, 0 +_08100740: .4byte gUnknown_203ACEC +_08100744: + movs r0, 0x1 + movs r1, 0x2 + bl sub_81019B0 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08100754: + bl sub_8101A10 + lsls r0, 24 + cmp r0, 0 + bne _0810076A + bl sub_8101C80 + bl sub_810224C + movs r0, 0 + b _0810076C +_0810076A: + movs r0, 0x1 +_0810076C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810072C + + thumb_func_start sub_8100774 +sub_8100774: @ 8100774 + push {r4,lr} + ldr r4, _0810078C @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0x1 + beq _081007A8 + cmp r0, 0x1 + bgt _08100790 + cmp r0, 0 + beq _08100796 + b _081007C8 + .align 2, 0 +_0810078C: .4byte gUnknown_203ACEC +_08100790: + cmp r0, 0x2 + beq _081007C0 + b _081007C8 +_08100796: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + bl sub_81019B0 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_081007A8: + bl sub_8101A10 + lsls r0, 24 + cmp r0, 0 + bne _081007C8 + bl sub_810224C + ldr r0, _081007C4 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_081007C0: + movs r0, 0 + b _081007CA + .align 2, 0 +_081007C4: .4byte gUnknown_203ACEC +_081007C8: + movs r0, 0x1 +_081007CA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100774 + + thumb_func_start sub_81007D0 +sub_81007D0: @ 81007D0 + push {lr} + ldr r0, _081007E8 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x5 + bhi _08100888 + lsls r0, 2 + ldr r1, _081007EC @ =_081007F0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081007E8: .4byte gUnknown_203ACEC +_081007EC: .4byte _081007F0 + .align 2, 0 +_081007F0: + .4byte _08100808 + .4byte _08100816 + .4byte _08100826 + .4byte _08100838 + .4byte _08100858 + .4byte _0810087E +_08100808: + bl sub_8101C48 + bl sub_81020AC + bl sub_81022B0 + b _08100848 +_08100816: + bl sub_81020D0 + lsls r0, 24 + cmp r0, 0 + bne _08100888 + bl sub_81015BC + b _08100848 +_08100826: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100888 + movs r0, 0x2 + bl sub_81015D4 + b _08100848 +_08100838: + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _08100888 + movs r0, 0x2 + bl sub_81012E0 +_08100848: + ldr r0, _08100854 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100888 + .align 2, 0 +_08100854: .4byte gUnknown_203ACEC +_08100858: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100888 + bl sub_8101E80 + movs r0, 0x1 + bl sub_81022E0 + bl sub_810224C + bl sub_8102394 + ldr r0, _08100884 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0810087E: + movs r0, 0 + b _0810088A + .align 2, 0 +_08100884: .4byte gUnknown_203ACEC +_08100888: + movs r0, 0x1 +_0810088A: + pop {r1} + bx r1 + thumb_func_end sub_81007D0 + + thumb_func_start sub_8100890 +sub_8100890: @ 8100890 + push {lr} + ldr r0, _081008A8 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x5 + bhi _08100934 + lsls r0, 2 + ldr r1, _081008AC @ =_081008B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081008A8: .4byte gUnknown_203ACEC +_081008AC: .4byte _081008B0 + .align 2, 0 +_081008B0: + .4byte _081008C8 + .4byte _081008CE + .4byte _081008E0 + .4byte _081008F2 + .4byte _08100914 + .4byte _0810092C +_081008C8: + bl sub_8100FDC + b _08100902 +_081008CE: + bl sub_8101F80 + bl sub_81022B0 + bl sub_81023F8 + bl sub_81015BC + b _08100902 +_081008E0: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100934 + movs r0, 0x3 + bl sub_81015D4 + b _08100902 +_081008F2: + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _08100934 + movs r0, 0 + bl sub_80019BC +_08100902: + ldr r0, _08100910 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100934 + .align 2, 0 +_08100910: .4byte gUnknown_203ACEC +_08100914: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100934 + bl sub_8101BA8 + ldr r0, _08100930 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0810092C: + movs r0, 0 + b _08100936 + .align 2, 0 +_08100930: .4byte gUnknown_203ACEC +_08100934: + movs r0, 0x1 +_08100936: + pop {r1} + bx r1 + thumb_func_end sub_8100890 + + thumb_func_start sub_810093C +sub_810093C: @ 810093C + push {lr} + ldr r0, _08100954 @ =gUnknown_203ACEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x4 + bhi _081009F0 + lsls r0, 2 + ldr r1, _08100958 @ =_0810095C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08100954: .4byte gUnknown_203ACEC +_08100958: .4byte _0810095C + .align 2, 0 +_0810095C: + .4byte _08100970 + .4byte _08100982 + .4byte _08100994 + .4byte _081009A4 + .4byte _081009C4 +_08100970: + bl sub_8101F80 + bl sub_81022B0 + bl sub_81023F8 + bl sub_81015BC + b _081009B2 +_08100982: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081009F0 + movs r0, 0x4 + bl sub_81015D4 + b _081009B2 +_08100994: + bl sub_81016AC + lsls r0, 24 + cmp r0, 0 + bne _081009F0 + bl sub_810131C + b _081009B2 +_081009A4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081009F0 + bl sub_8101FAC +_081009B2: + ldr r0, _081009C0 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _081009F0 + .align 2, 0 +_081009C0: .4byte gUnknown_203ACEC +_081009C4: + bl sub_8102018 + lsls r0, 24 + cmp r0, 0 + bne _081009F0 + bl sub_8101BC0 + movs r0, 0 + bl sub_81022E0 + bl sub_810224C + ldr r0, _081009EC @ =gUnknown_203ACEC + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0 + b _081009F2 + .align 2, 0 +_081009EC: .4byte gUnknown_203ACEC +_081009F0: + movs r0, 0x1 +_081009F2: + pop {r1} + bx r1 + thumb_func_end sub_810093C + + thumb_func_start sub_81009F8 +sub_81009F8: @ 81009F8 + push {lr} + bl sub_8101F04 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_81009F8 + + thumb_func_start sub_8100A04 +sub_8100A04: @ 8100A04 + push {r4,lr} + ldr r4, _08100A1C @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0x1 + beq _08100A30 + cmp r0, 0x1 + bgt _08100A20 + cmp r0, 0 + beq _08100A2A + b _08100A6E + .align 2, 0 +_08100A1C: .4byte gUnknown_203ACEC +_08100A20: + cmp r0, 0x2 + beq _08100A4C + cmp r0, 0x3 + beq _08100A6A + b _08100A6E +_08100A2A: + bl sub_81013EC + b _08100A42 +_08100A30: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100A6E + movs r0, 0x1 + movs r1, 0x2 + bl sub_81019B0 +_08100A42: + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100A6E +_08100A4C: + bl sub_8101A10 + lsls r0, 24 + cmp r0, 0 + bne _08100A6E + bl sub_8101F04 + bl sub_810224C + bl sub_8102394 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08100A6A: + movs r0, 0 + b _08100A70 +_08100A6E: + movs r0, 0x1 +_08100A70: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100A04 + + thumb_func_start sub_8100A78 +sub_8100A78: @ 8100A78 + push {r4,lr} + ldr r4, _08100A90 @ =gUnknown_203ACEC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0x1 + beq _08100AA4 + cmp r0, 0x1 + bgt _08100A94 + cmp r0, 0 + beq _08100A9E + b _08100AE0 + .align 2, 0 +_08100A90: .4byte gUnknown_203ACEC +_08100A94: + cmp r0, 0x2 + beq _08100AC2 + cmp r0, 0x3 + beq _08100ADC + b _08100AE0 +_08100A9E: + bl sub_8101410 + b _08100AB8 +_08100AA4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100AE0 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + bl sub_81019B0 +_08100AB8: + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100AE0 +_08100AC2: + bl sub_8101A10 + lsls r0, 24 + cmp r0, 0 + bne _08100AE0 + bl sub_810224C + bl sub_8102394 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08100ADC: + movs r0, 0 + b _08100AE2 +_08100AE0: + movs r0, 0x1 +_08100AE2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100A78 + + thumb_func_start sub_8100AE8 +sub_8100AE8: @ 8100AE8 + push {r4,r5,lr} + ldr r5, _08100B00 @ =gUnknown_203ACEC + ldr r0, [r5] + ldrh r0, [r0] + cmp r0, 0x1 + beq _08100B14 + cmp r0, 0x1 + bgt _08100B04 + cmp r0, 0 + beq _08100B0E + b _08100B66 + .align 2, 0 +_08100B00: .4byte gUnknown_203ACEC +_08100B04: + cmp r0, 0x2 + beq _08100B44 + cmp r0, 0x3 + beq _08100B62 + b _08100B66 +_08100B0E: + bl sub_8101434 + b _08100B3A +_08100B14: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100B66 + bl sub_80FFE48 + adds r4, r0, 0 + bl sub_8101A48 + lsls r4, 24 + lsrs r4, 24 + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_81019B0 +_08100B3A: + ldr r1, [r5] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100B66 +_08100B44: + bl sub_8101A10 + lsls r0, 24 + cmp r0, 0 + bne _08100B66 + bl sub_8101F04 + bl sub_810224C + bl sub_8102394 + ldr r1, [r5] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08100B62: + movs r0, 0 + b _08100B68 +_08100B66: + movs r0, 0x1 +_08100B68: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8100AE8 + + thumb_func_start sub_8100B70 +sub_8100B70: @ 8100B70 + push {r4,r5,lr} + ldr r5, _08100B88 @ =gUnknown_203ACEC + ldr r0, [r5] + ldrh r0, [r0] + cmp r0, 0x1 + beq _08100B9C + cmp r0, 0x1 + bgt _08100B8C + cmp r0, 0 + beq _08100B96 + b _08100BEA + .align 2, 0 +_08100B88: .4byte gUnknown_203ACEC +_08100B8C: + cmp r0, 0x2 + beq _08100BCC + cmp r0, 0x3 + beq _08100BE6 + b _08100BEA +_08100B96: + bl sub_8101478 + b _08100BC2 +_08100B9C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08100BEA + bl sub_80FFE48 + adds r4, r0, 0 + bl sub_8101A48 + lsls r4, 24 + lsrs r4, 24 + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_81019B0 +_08100BC2: + ldr r1, [r5] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08100BEA +_08100BCC: + bl sub_8101A10 + lsls r0, 24 + cmp r0, 0 + bne _08100BEA + bl sub_810224C + bl sub_8102394 + ldr r1, [r5] + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08100BE6: + movs r0, 0 + b _08100BEC +_08100BEA: + movs r0, 0x1 +_08100BEC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8100B70 + + thumb_func_start sub_8100BF4 +sub_8100BF4: @ 8100BF4 + push {r4,lr} + ldr r4, _08100C50 @ =gUnknown_203ACEC + movs r0, 0x98 + lsls r0, 5 + bl sub_8002B9C + adds r2, r0, 0 + str r2, [r4] + cmp r2, 0 + beq _08100C54 + movs r1, 0 + strh r1, [r2] + movs r3, 0xB6 + lsls r3, 2 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + adds r3, 0x4 + adds r0, r2, r3 + str r1, [r0] + movs r0, 0x1 + b _08100C56 + .align 2, 0 +_08100C50: .4byte gUnknown_203ACEC +_08100C54: + movs r0, 0 +_08100C56: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8100BF4 + + thumb_func_start sub_8100C5C +sub_8100C5C: @ 8100C5C + push {lr} + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r1, 0xC1 + lsls r1, 6 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_8100C5C + + thumb_func_start sub_8100CBC +sub_8100CBC: @ 8100CBC + push {r4,lr} + bl sub_8070528 + ldr r0, _08100D10 @ =gUnknown_8E99D8C + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _08100D14 @ =gUnknown_843F76C + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _08100D18 @ =gUnknown_843F78C + movs r1, 0x40 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _08100D1C @ =gUnknown_843F874 + movs r1, 0xA0 + movs r2, 0x8 + bl sub_80703EC + ldr r4, _08100D20 @ =gUnknown_843F87C + adds r0, r4, 0 + movs r1, 0xB0 + movs r2, 0xA + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0xA + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x30 + movs r2, 0xA + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08100D10: .4byte gUnknown_8E99D8C +_08100D14: .4byte gUnknown_843F76C +_08100D18: .4byte gUnknown_843F78C +_08100D1C: .4byte gUnknown_843F874 +_08100D20: .4byte gUnknown_843F87C + thumb_func_end sub_8100CBC + + thumb_func_start sub_8100D24 +sub_8100D24: @ 8100D24 + push {r4,r5,lr} + sub sp, 0x14 + bl sub_80FFCFC + adds r5, r0, 0 + cmp r5, 0 + beq _08100D7A + movs r0, 0x1 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r4, 0x80 + subs r4, r0 + lsrs r4, 1 + movs r0, 0 + movs r1, 0 + bl sub_800445C + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0x2 + str r0, [sp, 0xC] + movs r0, 0x3 + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x1 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8100DC4 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 +_08100D7A: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8100D24 + + thumb_func_start sub_8100D84 +sub_8100D84: @ 8100D84 + push {r4-r6,lr} + sub sp, 0xC + adds r6, r2, 0 + ldr r2, [sp, 0x1C] + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r2, 24 + lsrs r0, r2, 24 + lsls r4, 24 + lsrs r4, 24 + cmp r1, 0x1 + bne _08100DAC + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 +_08100DAC: + str r0, [sp] + str r4, [sp, 0x4] + ldr r0, [sp, 0x24] + str r0, [sp, 0x8] + adds r0, r5, 0 + adds r2, r6, 0 + bl sub_8002C48 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8100D84 + + thumb_func_start sub_8100DC4 +sub_8100DC4: @ 8100DC4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + mov r9, r2 + ldr r2, [sp, 0x2C] + ldr r4, [sp, 0x30] + ldr r5, [sp, 0x34] + ldr r6, [sp, 0x38] + ldr r7, [sp, 0x3C] + mov r8, r7 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r1, 24 + lsrs r1, 24 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r2, 24 + lsrs r3, r2, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r1, 0x1 + bne _08100E0A + adds r0, r3, 0x2 + lsls r0, 24 + lsrs r3, r0, 24 +_08100E0A: + add r0, sp, 0xC + strb r5, [r0] + strb r6, [r0, 0x1] + strb r2, [r0, 0x2] + str r0, [sp] + lsls r0, r4, 24 + asrs r0, 24 + str r0, [sp, 0x4] + mov r0, r9 + str r0, [sp, 0x8] + mov r0, r12 + adds r2, r7, 0 + bl sub_812E51C + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8100DC4 + + thumb_func_start sub_8100E34 +sub_8100E34: @ 8100E34 + push {lr} + sub sp, 0xC + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0xE0 + bl sub_815001C + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0 + bl sub_8100E7C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80020BC + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_8100E34 + + thumb_func_start sub_8100E7C +sub_8100E7C: @ 8100E7C + push {lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + movs r0, 0 + str r0, [sp, 0x10] + str r0, [sp, 0xC] + cmp r1, 0x1 + beq _08100EC2 + cmp r1, 0x1 + bgt _08100E9A + cmp r1, 0 + beq _08100EA4 + b _08100ECA +_08100E9A: + cmp r2, 0x2 + beq _08100EAE + cmp r2, 0x3 + beq _08100EB8 + b _08100ECA +_08100EA4: + add r1, sp, 0x10 + add r0, sp, 0xC + bl sub_80FFD58 + b _08100ECA +_08100EAE: + add r1, sp, 0x10 + add r0, sp, 0xC + bl sub_80FFDC8 + b _08100ECA +_08100EB8: + add r1, sp, 0x10 + add r0, sp, 0xC + bl sub_80FFD90 + b _08100ECA +_08100EC2: + add r1, sp, 0x10 + add r0, sp, 0xC + bl sub_80FFDF4 +_08100ECA: + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + ldr r2, [sp, 0xC] + cmp r2, 0 + beq _08100EEC + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r3, 0 + bl sub_8100D84 +_08100EEC: + ldr r2, [sp, 0x10] + cmp r2, 0 + beq _08100F08 + movs r0, 0x10 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r3, 0 + bl sub_8100D84 +_08100F08: + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x14 + pop {r0} + bx r0 + thumb_func_end sub_8100E7C + + thumb_func_start sub_8100F18 +sub_8100F18: @ 8100F18 + push {lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08100F40 @ =gUnknown_843F8D0 + movs r1, 0x1 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r2, 0 + movs r1, 0x1 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08100F40: .4byte gUnknown_843F8D0 + thumb_func_end sub_8100F18 + + thumb_func_start sub_8100F44 +sub_8100F44: @ 8100F44 + push {r4,r5,lr} + sub sp, 0x8 + bl sub_80FFCE0 + lsls r0, 24 + ldr r5, _08100FC0 @ =0xffffff00 + ldr r3, [sp] + ands r3, r5 + movs r1, 0x3 + orrs r3, r1 + str r3, [sp] + ldr r1, _08100FC4 @ =gUnknown_843F888 + lsrs r0, 22 + adds r0, r1 + ldrb r2, [r0] + lsls r2, 8 + ldr r4, _08100FC8 @ =0xffff00ff + adds r1, r4, 0 + ands r1, r3 + orrs r1, r2 + str r1, [sp] + ldrb r2, [r0, 0x1] + lsls r2, 16 + ldr r3, _08100FCC @ =0xff00ffff + ands r3, r1 + orrs r3, r2 + str r3, [sp] + ldrb r2, [r0, 0x2] + lsls r2, 24 + ldr r1, _08100FD0 @ =0x00ffffff + ands r1, r3 + orrs r1, r2 + str r1, [sp] + ldrb r1, [r0, 0x3] + ldr r0, [sp, 0x4] + ands r0, r5 + orrs r0, r1 + ands r0, r4 + movs r1, 0xB0 + lsls r1, 4 + orrs r0, r1 + ldr r1, _08100FD4 @ =0x0000ffff + ands r0, r1 + movs r1, 0xC0 + lsls r1, 15 + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8003CE4 + ldr r1, _08100FD8 @ =gUnknown_203ACEC + ldr r1, [r1] + strh r0, [r1, 0x2] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08100FC0: .4byte 0xffffff00 +_08100FC4: .4byte gUnknown_843F888 +_08100FC8: .4byte 0xffff00ff +_08100FCC: .4byte 0xff00ffff +_08100FD0: .4byte 0x00ffffff +_08100FD4: .4byte 0x0000ffff +_08100FD8: .4byte gUnknown_203ACEC + thumb_func_end sub_8100F44 + + thumb_func_start sub_8100FDC +sub_8100FDC: @ 8100FDC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + bl sub_80FFD1C + adds r4, r0, 0 + bl sub_80FFD34 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + bl sub_80FFD28 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + bl sub_80FFCE0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x10] + ldr r0, _0810101C @ =gUnknown_203ACEC + ldr r0, [r0] + ldrb r0, [r0, 0x2] + movs r1, 0x11 + bl sub_800445C + movs r6, 0 + b _081010D6 + .align 2, 0 +_0810101C: .4byte gUnknown_203ACEC +_08101020: + ldr r0, _0810105C @ =gUnknown_203ACEC + ldr r1, [r0] + adds r2, r1, 0 + adds r2, 0xA + movs r0, 0xFF + strb r0, [r1, 0xA] + adds r0, r2, 0 + ldr r1, _08101060 @ =gUnknown_843F8DB + bl sub_8008DA4 + adds r2, r0, 0 + movs r5, 0 + lsls r7, r6, 28 + adds r0, r6, 0x1 + mov r9, r0 + cmp r5, r8 + bge _081010B4 + ldr r0, _08101064 @ =0x0000ffff + mov r10, r0 +_08101046: + ldrh r0, [r4] + cmp r0, r10 + beq _08101068 + adds r1, r0, 0 + adds r0, r2, 0 + bl sub_80BD850 + adds r2, r0, 0 + adds r4, 0x2 + b _08101096 + .align 2, 0 +_0810105C: .4byte gUnknown_203ACEC +_08101060: .4byte gUnknown_843F8DB +_08101064: .4byte 0x0000ffff +_08101068: + adds r0, r2, 0 + movs r1, 0 + movs r2, 0x4 + bl sub_80092F4 + adds r2, r0, 0 + adds r4, 0x2 + movs r3, 0xF9 + movs r1, 0x9 + movs r0, 0x6 +_0810107C: + strb r3, [r2] + adds r2, 0x1 + strb r1, [r2] + adds r2, 0x1 + subs r0, 0x1 + cmp r0, 0 + bge _0810107C + adds r0, r2, 0 + movs r1, 0 + movs r2, 0x2 + bl sub_80092F4 + adds r2, r0, 0 +_08101096: + adds r0, r2, 0 + ldr r1, _081010F8 @ =gUnknown_843F8DB + bl sub_8008DA4 + adds r2, r0, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x2 + bne _081010AE + cmp r5, 0 + bne _081010AE + cmp r6, 0x4 + beq _081010B4 +_081010AE: + adds r5, 0x1 + cmp r5, r8 + blt _08101046 +_081010B4: + movs r0, 0xFF + strb r0, [r2] + ldr r0, _081010FC @ =gUnknown_203ACEC + ldr r2, [r0] + ldrb r0, [r2, 0x2] + adds r2, 0xA + lsrs r1, r7, 24 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x1 + movs r3, 0 + bl sub_8100D84 + mov r6, r9 +_081010D6: + ldr r0, [sp, 0xC] + cmp r6, r0 + blt _08101020 + ldr r0, _081010FC @ =gUnknown_203ACEC + ldr r0, [r0] + ldrb r0, [r0, 0x2] + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081010F8: .4byte gUnknown_843F8DB +_081010FC: .4byte gUnknown_203ACEC + thumb_func_end sub_8100FDC + + thumb_func_start sub_8101100 +sub_8101100: @ 8101100 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + bl sub_80FFCE0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + str r0, [sp] + ldr r2, _08101194 @ =0x01000200 + mov r0, sp + mov r1, r8 + bl CpuFastSet + cmp r5, 0x2 + bne _081011A4 + ldr r0, _08101198 @ =gUnknown_843F888 + adds r1, r0, 0 + adds r1, 0x8 + ldrb r5, [r0, 0x8] + ldrb r0, [r1, 0x2] + adds r4, r5, r0 + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x3] + adds r0, r2 + mov r12, r0 + adds r7, r2, 0 + cmp r7, r12 + blt _08101144 + b _08101296 +_08101144: + adds r3, r5, 0 + lsls r0, r3, 1 + mov r9, r0 +_0810114A: + subs r6, r3, 0x1 + lsls r0, r7, 5 + adds r1, r0, r6 + lsls r1, 1 + add r1, r8 + ldr r5, _0810119C @ =0x00001005 + adds r2, r5, 0 + strh r2, [r1] + adds r6, r3, 0 + adds r5, r0, 0 + adds r2, r7, 0x1 + cmp r6, r4 + bge _0810117E + movs r0, 0x80 + lsls r0, 5 + adds r1, r0, 0 + lsls r0, r7, 6 + add r0, r8 + add r0, r9 + subs r6, r4, r6 +_08101172: + strh r1, [r0] + adds r0, 0x2 + subs r6, 0x1 + cmp r6, 0 + bne _08101172 + adds r6, r4, 0 +_0810117E: + adds r0, r5, r6 + lsls r0, 1 + add r0, r8 + ldr r5, _081011A0 @ =0x00001007 + adds r1, r5, 0 + strh r1, [r0] + adds r7, r2, 0 + cmp r7, r12 + blt _0810114A + b _08101296 + .align 2, 0 +_08101194: .4byte 0x01000200 +_08101198: .4byte gUnknown_843F888 +_0810119C: .4byte 0x00001005 +_081011A0: .4byte 0x00001007 +_081011A4: + ldr r6, _081012A8 @ =gUnknown_843F888 + mov r9, r6 + lsls r5, 2 + adds r1, r5, r6 + ldrb r3, [r1, 0x1] + subs r7, r3, 0x1 + ldrb r2, [r1] + subs r6, r2, 0x1 + ldrb r0, [r1, 0x2] + adds r4, r2, r0 + ldrb r0, [r1, 0x3] + adds r3, r0 + mov r12, r3 + lsls r0, r7, 5 + adds r0, r6 + lsls r0, 1 + add r0, r8 + ldr r3, _081012AC @ =0x00001001 + adds r1, r3, 0 + strh r1, [r0] + adds r6, r2, 0 + mov r10, r9 + mov r9, r5 + cmp r6, r4 + bge _081011F0 + ldr r5, _081012B0 @ =0x00001002 + adds r2, r5, 0 + lsls r1, r6, 1 + lsls r0, r7, 6 + add r0, r8 + adds r1, r0 + subs r6, r4, r6 +_081011E4: + strh r2, [r1] + adds r1, 0x2 + subs r6, 0x1 + cmp r6, 0 + bne _081011E4 + adds r6, r4, 0 +_081011F0: + lsls r0, r7, 5 + adds r0, r6 + lsls r0, 1 + add r0, r8 + ldr r6, _081012B4 @ =0x00001003 + adds r1, r6, 0 + strh r1, [r0] + adds r7, 0x1 + cmp r7, r12 + bge _08101252 + ldr r0, _081012A8 @ =gUnknown_843F888 + add r0, r9 + ldrb r3, [r0] + lsls r5, r3, 1 +_0810120C: + subs r6, r3, 0x1 + lsls r0, r7, 5 + adds r0, r6 + lsls r0, 1 + add r0, r8 + ldr r2, _081012B8 @ =0x00001005 + adds r1, r2, 0 + strh r1, [r0] + adds r6, r3, 0 + adds r2, r7, 0x1 + cmp r6, r4 + bge _0810123E + movs r0, 0x80 + lsls r0, 5 + adds r1, r0, 0 + lsls r0, r7, 6 + add r0, r8 + adds r0, r5, r0 + subs r6, r4, r6 +_08101232: + strh r1, [r0] + adds r0, 0x2 + subs r6, 0x1 + cmp r6, 0 + bne _08101232 + adds r6, r4, 0 +_0810123E: + lsls r0, r7, 5 + adds r0, r6 + lsls r0, 1 + add r0, r8 + ldr r6, _081012BC @ =0x00001007 + adds r1, r6, 0 + strh r1, [r0] + adds r7, r2, 0 + cmp r7, r12 + blt _0810120C +_08101252: + mov r0, r9 + add r0, r10 + ldrb r3, [r0] + subs r6, r3, 0x1 + lsls r2, r7, 5 + adds r0, r2, r6 + lsls r0, 1 + add r0, r8 + ldr r5, _081012C0 @ =0x00001009 + adds r1, r5, 0 + strh r1, [r0] + adds r6, r3, 0 + adds r5, r2, 0 + cmp r6, r4 + bge _0810128A + ldr r0, _081012C4 @ =0x0000100a + adds r2, r0, 0 + lsls r1, r6, 1 + lsls r0, r7, 6 + add r0, r8 + adds r0, r1, r0 + subs r6, r4, r6 +_0810127E: + strh r2, [r0] + adds r0, 0x2 + subs r6, 0x1 + cmp r6, 0 + bne _0810127E + adds r6, r4, 0 +_0810128A: + adds r0, r5, r6 + lsls r0, 1 + add r0, r8 + ldr r2, _081012C8 @ =0x0000100b + adds r1, r2, 0 + strh r1, [r0] +_08101296: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081012A8: .4byte gUnknown_843F888 +_081012AC: .4byte 0x00001001 +_081012B0: .4byte 0x00001002 +_081012B4: .4byte 0x00001003 +_081012B8: .4byte 0x00001005 +_081012BC: .4byte 0x00001007 +_081012C0: .4byte 0x00001009 +_081012C4: .4byte 0x0000100a +_081012C8: .4byte 0x0000100b + thumb_func_end sub_8101100 + + thumb_func_start sub_81012CC +sub_81012CC: @ 81012CC + push {lr} + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_80020BC + pop {r0} + bx r0 + thumb_func_end sub_81012CC + + thumb_func_start sub_81012E0 +sub_81012E0: @ 81012E0 + push {r4,lr} + adds r4, r0, 0 + bl sub_810198C + movs r0, 0x2 + movs r1, 0x11 + bl sub_800445C + cmp r4, 0x1 + beq _08101304 + cmp r4, 0x1 + bcc _081012FE + cmp r4, 0x2 + beq _0810130A + b _0810130E +_081012FE: + bl sub_810133C + b _0810130E +_08101304: + bl sub_81013A0 + b _0810130E +_0810130A: + bl sub_81013DC +_0810130E: + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81012E0 + + thumb_func_start sub_810131C +sub_810131C: @ 810131C + push {lr} + bl sub_80FFE1C + lsls r0, 24 + cmp r0, 0 + bne _08101330 + movs r0, 0 + bl sub_81012E0 + b _08101336 +_08101330: + movs r0, 0x1 + bl sub_81012E0 +_08101336: + pop {r0} + bx r0 + thumb_func_end sub_810131C + + thumb_func_start sub_810133C +sub_810133C: @ 810133C + push {r4-r7,lr} + sub sp, 0xC + movs r5, 0 + movs r7, 0x60 +_08101344: + movs r4, 0 + lsls r0, r7, 24 + lsrs r6, r0, 24 +_0810134A: + lsls r0, r5, 24 + lsrs r0, 24 + adds r5, 0x1 + bl sub_80BDF44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x16 + beq _0810138A + bl sub_80BDFB0 + adds r2, r0, 0 + movs r0, 0x54 + adds r3, r4, 0 + muls r3, r0 + adds r3, 0xA + lsls r3, 24 + lsrs r3, 24 + str r6, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x1 + bl sub_8100D84 + adds r4, 0x1 + cmp r4, 0x1 + ble _0810134A + adds r7, 0x10 + b _08101344 +_0810138A: + bl sub_80FFE28 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_81019B0 + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810133C + + thumb_func_start sub_81013A0 +sub_81013A0: @ 81013A0 + push {r4-r6,lr} + sub sp, 0xC + movs r5, 0 + movs r4, 0xC0 + lsls r4, 23 + ldr r6, _081013D8 @ =gUnknown_843F8E0 +_081013AC: + ldm r6!, {r2} + lsrs r0, r4, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x1 + movs r3, 0xA + bl sub_8100D84 + movs r0, 0x80 + lsls r0, 21 + adds r4, r0 + adds r5, 0x1 + cmp r5, 0x3 + bls _081013AC + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081013D8: .4byte gUnknown_843F8E0 + thumb_func_end sub_81013A0 + + thumb_func_start sub_81013DC +sub_81013DC: @ 81013DC + push {lr} + movs r0, 0 + movs r1, 0x4 + bl sub_81014AC + pop {r0} + bx r0 + thumb_func_end sub_81013DC + + thumb_func_start sub_81013EC +sub_81013EC: @ 81013EC + push {r4,lr} + bl sub_80FFE48 + adds r4, r0, 0 + adds r4, 0x3 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8101558 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81014AC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81013EC + + thumb_func_start sub_8101410 +sub_8101410: @ 8101410 + push {r4,lr} + bl sub_80FFE48 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8101558 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81014AC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101410 + + thumb_func_start sub_8101434 +sub_8101434: @ 8101434 + push {r4,r5,lr} + bl sub_80FFE48 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + adds r0, r5, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80FFE54 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bls _08101456 + adds r4, r0, 0 +_08101456: + cmp r5, r4 + bcs _08101470 + subs r4, r5 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8101558 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81014AC +_08101470: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101434 + + thumb_func_start sub_8101478 +sub_8101478: @ 8101478 + push {r4,r5,lr} + bl sub_80FFE48 + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8101A48 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bcs _081014A4 + subs r4, r0, r5 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8101558 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81014AC +_081014A4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101478 + + thumb_func_start sub_81014AC +sub_81014AC: @ 81014AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r4, r0, 1 + lsls r0, 4 + adds r1, r0, 0 + adds r1, 0x60 + movs r0, 0xFF + ands r1, r0 + movs r0, 0 + cmp r0, r10 + bge _08101538 + ldr r2, _08101550 @ =gUnknown_203ACEC + mov r9, r2 +_081014D8: + movs r5, 0 + movs r2, 0x10 + adds r2, r1 + mov r8, r2 + adds r7, r0, 0x1 + lsls r0, r1, 24 + lsrs r6, r0, 24 +_081014E6: + lsls r0, r4, 16 + lsrs r0, 16 + adds r4, 0x1 + bl sub_80BE19C + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _08101554 @ =0x0000ffff + cmp r1, r0 + beq _0810152A + mov r2, r9 + ldr r0, [r2] + adds r0, 0xCB + movs r2, 0 + bl sub_80BDFC0 + mov r0, r9 + ldr r2, [r0] + adds r2, 0xCB + movs r0, 0xD + adds r3, r5, 0 + muls r3, r0 + adds r3, 0x3 + lsls r3, 27 + lsrs r3, 24 + str r6, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x1 + bl sub_8100D84 +_0810152A: + adds r5, 0x1 + cmp r5, 0x1 + ble _081014E6 + mov r1, r8 + adds r0, r7, 0 + cmp r0, r10 + blt _081014D8 +_08101538: + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08101550: .4byte gUnknown_203ACEC +_08101554: .4byte 0x0000ffff + thumb_func_end sub_81014AC + + thumb_func_start sub_8101558 +sub_8101558: @ 8101558 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsls r1, 24 + lsrs r0, 20 + adds r3, r0, 0 + adds r3, 0x60 + movs r0, 0xFF + ands r3, r0 + lsrs r0, r1, 20 + adds r1, r3, r0 + cmp r1, 0xFF + ble _08101584 + ldr r0, _08101580 @ =0xffffff00 + adds r4, r1, r0 + movs r0, 0x80 + lsls r0, 1 + subs r0, r3 + b _08101586 + .align 2, 0 +_08101580: .4byte 0xffffff00 +_08101584: + movs r4, 0 +_08101586: + movs r5, 0xE0 + str r5, [sp] + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + bl sub_8004378 + cmp r4, 0 + beq _081015B2 + str r5, [sp] + lsls r0, r4, 16 + lsrs r0, 16 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x11 + movs r2, 0 + movs r3, 0 + bl sub_8004378 +_081015B2: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101558 + + thumb_func_start sub_81015BC +sub_81015BC: @ 81015BC + push {lr} + movs r0, 0x2 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_81015BC + + thumb_func_start sub_81015D4 +sub_81015D4: @ 81015D4 + push {lr} + ldr r1, _081015E8 @ =gUnknown_203ACEC + cmp r0, 0x6 + bhi _0810168E + lsls r0, 2 + ldr r1, _081015EC @ =_081015F0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081015E8: .4byte gUnknown_203ACEC +_081015EC: .4byte _081015F0 + .align 2, 0 +_081015F0: + .4byte _0810160C + .4byte _08101620 + .4byte _08101630 + .4byte _08101644 + .4byte _08101658 + .4byte _0810166C + .4byte _08101680 +_0810160C: + ldr r1, _0810161C @ =gUnknown_203ACEC + ldr r2, [r1] + movs r0, 0 + strb r0, [r2, 0x6] + ldr r2, [r1] + movs r0, 0xA + b _0810168C + .align 2, 0 +_0810161C: .4byte gUnknown_203ACEC +_08101620: + ldr r1, _0810162C @ =gUnknown_203ACEC + ldr r2, [r1] + movs r3, 0 + movs r0, 0x9 + b _0810164C + .align 2, 0 +_0810162C: .4byte gUnknown_203ACEC +_08101630: + ldr r1, _08101640 @ =gUnknown_203ACEC + ldr r2, [r1] + movs r0, 0xB + strb r0, [r2, 0x6] + ldr r2, [r1] + movs r0, 0x11 + b _0810168C + .align 2, 0 +_08101640: .4byte gUnknown_203ACEC +_08101644: + ldr r1, _08101654 @ =gUnknown_203ACEC + ldr r2, [r1] + movs r3, 0 + movs r0, 0x11 +_0810164C: + strb r0, [r2, 0x6] + ldr r0, [r1] + strb r3, [r0, 0x7] + b _0810168E + .align 2, 0 +_08101654: .4byte gUnknown_203ACEC +_08101658: + ldr r1, _08101668 @ =gUnknown_203ACEC + ldr r2, [r1] + movs r0, 0x11 + strb r0, [r2, 0x6] + ldr r2, [r1] + movs r0, 0xA + b _0810168C + .align 2, 0 +_08101668: .4byte gUnknown_203ACEC +_0810166C: + ldr r1, _0810167C @ =gUnknown_203ACEC + ldr r2, [r1] + movs r0, 0x12 + strb r0, [r2, 0x6] + ldr r2, [r1] + movs r0, 0x16 + b _0810168C + .align 2, 0 +_0810167C: .4byte gUnknown_203ACEC +_08101680: + ldr r1, _081016A8 @ =gUnknown_203ACEC + ldr r2, [r1] + movs r0, 0x16 + strb r0, [r2, 0x6] + ldr r2, [r1] + movs r0, 0x12 +_0810168C: + strb r0, [r2, 0x7] +_0810168E: + ldr r1, [r1] + ldrb r0, [r1, 0x6] + movs r3, 0x1 + negs r3, r3 + adds r2, r3, 0 + ldrb r3, [r1, 0x7] + cmp r0, r3 + bcs _081016A0 + movs r2, 0x1 +_081016A0: + strb r2, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_081016A8: .4byte gUnknown_203ACEC + thumb_func_end sub_81015D4 + + thumb_func_start sub_81016AC +sub_81016AC: @ 81016AC + push {r4,lr} + ldr r4, _081016D8 @ =gUnknown_203ACEC + ldr r1, [r4] + ldrb r2, [r1, 0x6] + ldrb r0, [r1, 0x7] + cmp r2, r0 + beq _081016DC + ldrb r0, [r1, 0x8] + adds r0, r2, r0 + strb r0, [r1, 0x6] + ldr r0, [r4] + ldrb r0, [r0, 0x6] + bl sub_81016E4 + ldr r0, [r4] + ldrb r1, [r0, 0x6] + ldrb r0, [r0, 0x7] + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + b _081016DE + .align 2, 0 +_081016D8: .4byte gUnknown_203ACEC +_081016DC: + movs r0, 0 +_081016DE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81016AC + + thumb_func_start sub_81016E4 +sub_81016E4: @ 81016E4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1E + str r0, [sp] + movs r0, 0xA + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0xA + bl sub_8002454 + cmp r4, 0x16 + bls _08101706 + b _08101822 +_08101706: + lsls r0, r4, 2 + ldr r1, _08101710 @ =_08101714 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08101710: .4byte _08101714 + .align 2, 0 +_08101714: + .4byte _08101822 + .4byte _08101770 + .4byte _08101778 + .4byte _08101780 + .4byte _08101788 + .4byte _08101790 + .4byte _08101798 + .4byte _08101808 + .4byte _081017FA + .4byte _081017EC + .4byte _081017DE + .4byte _081017A6 + .4byte _081017AE + .4byte _081017B6 + .4byte _081017BE + .4byte _081017C6 + .4byte _081017CE + .4byte _081017D6 + .4byte _081017DE + .4byte _081017EC + .4byte _081017FA + .4byte _08101808 + .4byte _08101816 +_08101770: + movs r0, 0xB + movs r1, 0xE + movs r2, 0x3 + b _0810179E +_08101778: + movs r0, 0x9 + movs r1, 0xE + movs r2, 0x7 + b _0810179E +_08101780: + movs r0, 0x7 + movs r1, 0xE + movs r2, 0xB + b _0810179E +_08101788: + movs r0, 0x5 + movs r1, 0xE + movs r2, 0xF + b _0810179E +_08101790: + movs r0, 0x3 + movs r1, 0xE + movs r2, 0x13 + b _0810179E +_08101798: + movs r0, 0x1 + movs r1, 0xE + movs r2, 0x17 +_0810179E: + movs r3, 0x2 + bl sub_8101830 + b _08101822 +_081017A6: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x18 + b _081017E4 +_081017AE: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x19 + b _081017E4 +_081017B6: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x1A + b _081017E4 +_081017BE: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x1B + b _081017E4 +_081017C6: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x1C + b _081017E4 +_081017CE: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x1D + b _081017E4 +_081017D6: + movs r0, 0 + movs r1, 0xA + movs r2, 0x1E + b _081017E4 +_081017DE: + movs r0, 0x1 + movs r1, 0xA + movs r2, 0x17 +_081017E4: + movs r3, 0xA + bl sub_8101830 + b _08101822 +_081017EC: + movs r0, 0x1 + movs r1, 0xB + movs r2, 0x17 + movs r3, 0x8 + bl sub_8101830 + b _08101822 +_081017FA: + movs r0, 0x1 + movs r1, 0xC + movs r2, 0x17 + movs r3, 0x6 + bl sub_8101830 + b _08101822 +_08101808: + movs r0, 0x1 + movs r1, 0xD + movs r2, 0x17 + movs r3, 0x4 + bl sub_8101830 + b _08101822 +_08101816: + movs r0, 0x1 + movs r1, 0xE + movs r2, 0x17 + movs r3, 0x2 + bl sub_8101830 +_08101822: + movs r0, 0x1 + bl sub_80020BC + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81016E4 + + thumb_func_start sub_8101830 +sub_8101830: @ 8101830 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r12, r0 + adds r7, r1, 0 + mov r9, r2 + mov r10, r3 + ldr r0, _08101968 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 2 + adds r6, r0, r1 + mov r0, r12 + add r0, r9 + subs r5, r0, 0x1 + adds r0, r7, r3 + subs r0, 0x1 + mov r8, r0 + mov r2, r12 + adds r3, r7, 0 + lsls r0, r3, 5 + adds r0, r2 + lsls r0, 1 + adds r0, r6 + ldr r4, _0810196C @ =0x00004001 + adds r1, r4, 0 + strh r1, [r0] + adds r2, 0x1 + cmp r2, r5 + bge _0810188C + ldr r0, _08101970 @ =0x00004002 + adds r4, r0, 0 + lsls r1, r2, 1 + lsls r0, r3, 6 + adds r0, r6 + adds r1, r0 + subs r2, r5, r2 +_08101880: + strh r4, [r1] + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _08101880 + adds r2, r5, 0 +_0810188C: + lsls r0, r3, 5 + adds r0, r2 + lsls r0, 1 + adds r0, r6 + ldr r2, _08101974 @ =0x00004003 + adds r1, r2, 0 + strh r1, [r0] + adds r3, 0x1 + mov r4, r12 + adds r4, 0x1 + adds r0, r7, 0x1 + str r0, [sp, 0x4] + mov r1, r9 + subs r1, 0x2 + str r1, [sp] + movs r2, 0x2 + negs r2, r2 + add r10, r2 + cmp r3, r8 + bge _081018FC + lsls r7, r4, 1 + mov r9, r7 +_081018B8: + lsls r0, r3, 5 + add r0, r12 + lsls r0, 1 + adds r0, r6 + ldr r2, _08101978 @ =0x00004005 + adds r1, r2, 0 + strh r1, [r0] + adds r2, r4, 0 + adds r7, r3, 0x1 + cmp r4, r5 + bge _081018E8 + movs r0, 0x80 + lsls r0, 7 + adds r1, r0, 0 + lsls r0, r3, 6 + adds r0, r6 + add r0, r9 + subs r2, r5, r4 +_081018DC: + strh r1, [r0] + adds r0, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _081018DC + adds r2, r5, 0 +_081018E8: + lsls r0, r3, 5 + adds r0, r2 + lsls r0, 1 + adds r0, r6 + ldr r2, _0810197C @ =0x00004007 + adds r1, r2, 0 + strh r1, [r0] + adds r3, r7, 0 + cmp r3, r8 + blt _081018B8 +_081018FC: + lsls r0, r3, 5 + mov r7, r12 + adds r1, r0, r7 + lsls r1, 1 + adds r1, r6 + ldr r7, _08101980 @ =0x00004009 + adds r2, r7, 0 + strh r2, [r1] + adds r2, r4, 0 + mov r12, r0 + cmp r4, r5 + bge _0810192E + ldr r0, _08101984 @ =0x0000400a + adds r7, r0, 0 + lsls r1, r4, 1 + lsls r0, r3, 6 + adds r0, r6 + adds r0, r1, r0 + subs r2, r5, r4 +_08101922: + strh r7, [r0] + adds r0, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _08101922 + adds r2, r5, 0 +_0810192E: + mov r1, r12 + adds r0, r1, r2 + lsls r0, 1 + adds r0, r6 + ldr r2, _08101988 @ =0x0000400b + adds r1, r2, 0 + strh r1, [r0] + lsls r0, r4, 27 + lsrs r0, 24 + ldr r3, [sp, 0x4] + lsls r1, r3, 27 + lsrs r1, 24 + ldr r4, [sp] + lsls r2, r4, 27 + lsrs r2, 24 + mov r7, r10 + lsls r3, r7, 27 + lsrs r3, 24 + bl sub_8101A5C + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08101968: .4byte gUnknown_203ACEC +_0810196C: .4byte 0x00004001 +_08101970: .4byte 0x00004002 +_08101974: .4byte 0x00004003 +_08101978: .4byte 0x00004005 +_0810197C: .4byte 0x00004007 +_08101980: .4byte 0x00004009 +_08101984: .4byte 0x0000400a +_08101988: .4byte 0x0000400b + thumb_func_end sub_8101830 + + thumb_func_start sub_810198C +sub_810198C: @ 810198C + push {lr} + movs r1, 0x80 + lsls r1, 4 + movs r0, 0x2 + movs r2, 0 + bl sub_8001D08 + ldr r0, _081019AC @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xB3 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_081019AC: .4byte gUnknown_203ACEC + thumb_func_end sub_810198C + + thumb_func_start sub_81019B0 +sub_81019B0: @ 81019B0 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0x2 + bl sub_8001E44 + adds r2, r0, 0 + ldr r0, _081019FC @ =gUnknown_203ACEC + ldr r3, [r0] + movs r0, 0xB3 + lsls r0, 2 + adds r1, r3, r0 + ldrh r0, [r1] + adds r0, r4 + strh r0, [r1] + lsls r4, 20 + asrs r4, 16 + lsls r0, r4, 8 + adds r2, r0 + cmp r5, 0 + beq _08101A00 + movs r1, 0xB4 + lsls r1, 2 + adds r0, r3, r1 + str r2, [r0] + movs r0, 0xB5 + lsls r0, 2 + adds r1, r3, r0 + lsls r0, r5, 8 + str r0, [r1] + cmp r4, 0 + bge _08101A0A + negs r0, r0 + str r0, [r1] + b _08101A0A + .align 2, 0 +_081019FC: .4byte gUnknown_203ACEC +_08101A00: + movs r0, 0x2 + adds r1, r2, 0 + movs r2, 0 + bl sub_8001D08 +_08101A0A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81019B0 + + thumb_func_start sub_8101A10 +sub_8101A10: @ 8101A10 + push {lr} + movs r0, 0x2 + bl sub_8001E44 + ldr r1, _08101A3C @ =gUnknown_203ACEC + ldr r2, [r1] + movs r3, 0xB4 + lsls r3, 2 + adds r1, r2, r3 + ldr r1, [r1] + cmp r0, r1 + beq _08101A40 + movs r1, 0xB5 + lsls r1, 2 + adds r0, r2, r1 + ldr r1, [r0] + movs r0, 0x2 + movs r2, 0x1 + bl sub_8001D08 + movs r0, 0x1 + b _08101A42 + .align 2, 0 +_08101A3C: .4byte gUnknown_203ACEC +_08101A40: + movs r0, 0 +_08101A42: + pop {r1} + bx r1 + thumb_func_end sub_8101A10 + + thumb_func_start sub_8101A48 +sub_8101A48: @ 8101A48 + ldr r0, _08101A58 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xB3 + lsls r1, 2 + adds r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08101A58: .4byte gUnknown_203ACEC + thumb_func_end sub_8101A48 + + thumb_func_start sub_8101A5C +sub_8101A5C: @ 8101A5C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, r0, 8 + adds r0, r2 + orrs r4, r0 + lsls r5, r1, 8 + adds r1, r3 + orrs r5, r1 + movs r0, 0x40 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x44 + adds r1, r5, 0 + bl sub_8000A38 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8101A5C + + thumb_func_start sub_8101A90 +sub_8101A90: @ 8101A90 + push {r4,r5,lr} + ldr r0, _08101AB8 @ =gUnknown_843F8F0 + bl sub_8008720 + ldr r0, _08101ABC @ =gUnknown_843F910 + bl sub_8008974 + movs r5, 0 + ldr r4, _08101AC0 @ =gUnknown_843F938 +_08101AA2: + adds r0, r4, 0 + bl sub_800EBCC + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x3 + bls _08101AA2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08101AB8: .4byte gUnknown_843F8F0 +_08101ABC: .4byte gUnknown_843F910 +_08101AC0: .4byte gUnknown_843F938 + thumb_func_end sub_8101A90 + + thumb_func_start sub_8101AC4 +sub_8101AC4: @ 8101AC4 + push {lr} + bl sub_80FFCE0 + lsls r0, 24 + ldr r1, _08101B10 @ =gUnknown_843F888 + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0] + lsls r1, 19 + ldrb r2, [r0, 0x1] + adds r2, 0x1 + lsls r2, 3 + adds r2, 0x1 + ldr r0, _08101B14 @ =gUnknown_843F968 + movs r3, 0xD0 + lsls r3, 12 + adds r1, r3 + asrs r1, 16 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08101B18 @ =gUnknown_203ACEC + ldr r2, [r1] + movs r1, 0xB6 + lsls r1, 2 + adds r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08101B1C @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + movs r0, 0x1 + strh r0, [r1, 0x30] + pop {r0} + bx r0 + .align 2, 0 +_08101B10: .4byte gUnknown_843F888 +_08101B14: .4byte gUnknown_843F968 +_08101B18: .4byte gUnknown_203ACEC +_08101B1C: .4byte gUnknown_202063C + thumb_func_end sub_8101AC4 + + thumb_func_start sub_8101B20 +sub_8101B20: @ 8101B20 + push {lr} + adds r1, r0, 0 + movs r2, 0x30 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _08101B4E + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _08101B4E + movs r0, 0 + strh r0, [r1, 0x2E] + ldrh r0, [r1, 0x24] + adds r0, 0x1 + strh r0, [r1, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _08101B4E + ldr r0, _08101B54 @ =0x0000fffa + strh r0, [r1, 0x24] +_08101B4E: + pop {r0} + bx r0 + .align 2, 0 +_08101B54: .4byte 0x0000fffa + thumb_func_end sub_8101B20 + + thumb_func_start sub_8101B58 +sub_8101B58: @ 8101B58 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08101B84 @ =gUnknown_203ACEC + ldr r2, [r2] + movs r3, 0xB6 + lsls r3, 2 + adds r2, r3 + ldr r3, [r2] + movs r4, 0 + strh r0, [r3, 0x20] + ldr r0, [r2] + strh r1, [r0, 0x22] + ldr r0, [r2] + strh r4, [r0, 0x24] + ldr r0, [r2] + strh r4, [r0, 0x2E] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101B84: .4byte gUnknown_203ACEC + thumb_func_end sub_8101B58 + + thumb_func_start sub_8101B88 +sub_8101B88: @ 8101B88 + ldr r0, _08101BA4 @ =gUnknown_203ACEC + ldr r1, [r0] + movs r0, 0xB6 + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + movs r2, 0 + strh r2, [r0, 0x2E] + ldr r0, [r1] + strh r2, [r0, 0x30] + ldr r0, [r1] + strh r2, [r0, 0x24] + bx lr + .align 2, 0 +_08101BA4: .4byte gUnknown_203ACEC + thumb_func_end sub_8101B88 + + thumb_func_start sub_8101BA8 +sub_8101BA8: @ 8101BA8 + ldr r0, _08101BBC @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xB6 + lsls r1, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x1 + strh r0, [r1, 0x30] + bx lr + .align 2, 0 +_08101BBC: .4byte gUnknown_203ACEC + thumb_func_end sub_8101BA8 + + thumb_func_start sub_8101BC0 +sub_8101BC0: @ 8101BC0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r6, _08101C38 @ =gUnknown_843F9B8 + adds r0, r6, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08101C3C @ =gUnknown_203ACEC + ldr r2, [r5] + movs r1, 0xB7 + lsls r1, 2 + mov r8, r1 + add r2, r8 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r4, _08101C40 @ =gUnknown_202063C + adds r1, r4 + str r1, [r2] + movs r0, 0x20 + strh r0, [r1, 0x24] + adds r0, r6, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + movs r1, 0xB8 + lsls r1, 2 + adds r3, r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + str r1, [r3] + ldr r0, _08101C44 @ =0x0000ffe0 + strh r0, [r1, 0x24] + add r2, r8 + ldr r1, [r2] + adds r1, 0x3F + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] + bl sub_8101C80 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08101C38: .4byte gUnknown_843F9B8 +_08101C3C: .4byte gUnknown_203ACEC +_08101C40: .4byte gUnknown_202063C +_08101C44: .4byte 0x0000ffe0 + thumb_func_end sub_8101BC0 + + thumb_func_start sub_8101C48 +sub_8101C48: @ 8101C48 + push {r4-r6,lr} + ldr r5, _08101C7C @ =gUnknown_203ACEC + ldr r0, [r5] + movs r4, 0xB7 + lsls r4, 2 + adds r0, r4 + ldr r0, [r0] + bl sub_8007280 + ldr r0, [r5] + adds r4, r0, r4 + movs r6, 0 + str r6, [r4] + movs r4, 0xB8 + lsls r4, 2 + adds r0, r4 + ldr r0, [r0] + bl sub_8007280 + ldr r0, [r5] + adds r0, r4 + str r6, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08101C7C: .4byte gUnknown_203ACEC + thumb_func_end sub_8101C48 + + thumb_func_start sub_8101C80 +sub_8101C80: @ 8101C80 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08101CC8 @ =gUnknown_203ACEC + ldr r1, [r0] + movs r2, 0xB7 + lsls r2, 2 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + beq _08101CDC + adds r2, 0x4 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + beq _08101CDC + mov r4, sp + adds r4, 0x1 + mov r0, sp + adds r1, r4, 0 + bl sub_80FFE08 + bl sub_80FFE1C + lsls r0, 24 + cmp r0, 0 + bne _08101CCC + mov r0, sp + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + movs r1, 0 + ldrsb r1, [r4, r1] + bl sub_8101CE4 + b _08101CDC + .align 2, 0 +_08101CC8: .4byte gUnknown_203ACEC +_08101CCC: + mov r0, sp + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + movs r1, 0 + ldrsb r1, [r4, r1] + bl sub_8101D9C +_08101CDC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101C80 + + thumb_func_start sub_8101CE4 +sub_8101CE4: @ 8101CE4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r1, 24 + lsrs r7, r1, 24 + lsls r0, 24 + asrs r5, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _08101D48 + ldr r0, _08101D44 @ =gUnknown_203ACEC + mov r8, r0 + ldr r0, [r0] + movs r4, 0xB7 + lsls r4, 2 + adds r0, r4 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + mov r2, r8 + ldr r1, [r2] + adds r4, r1, r4 + ldr r2, [r4] + movs r0, 0x54 + muls r5, r0 + adds r5, 0x3A + strh r5, [r2, 0x20] + ldr r0, [r4] + lsls r4, r7, 24 + asrs r4, 20 + adds r4, 0x60 + strh r4, [r0, 0x22] + movs r6, 0xB8 + lsls r6, 2 + adds r1, r6 + ldr r0, [r1] + movs r1, 0 + bl sub_800838C + mov r1, r8 + ldr r0, [r1] + adds r0, r6 + ldr r1, [r0] + strh r5, [r1, 0x20] + b _08101D8A + .align 2, 0 +_08101D44: .4byte gUnknown_203ACEC +_08101D48: + ldr r6, _08101D98 @ =gUnknown_203ACEC + ldr r0, [r6] + movs r4, 0xB7 + lsls r4, 2 + adds r0, r4 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + ldr r1, [r6] + adds r4, r1, r4 + ldr r0, [r4] + movs r2, 0xD8 + mov r8, r2 + mov r2, r8 + strh r2, [r0, 0x20] + ldr r0, [r4] + lsls r4, r7, 24 + asrs r4, 20 + adds r4, 0x70 + strh r4, [r0, 0x22] + movs r5, 0xB8 + lsls r5, 2 + adds r1, r5 + ldr r0, [r1] + movs r1, 0x1 + bl sub_800838C + ldr r0, [r6] + adds r0, r5 + ldr r1, [r0] + mov r2, r8 + strh r2, [r1, 0x20] +_08101D8A: + ldr r0, [r0] + strh r4, [r0, 0x22] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08101D98: .4byte gUnknown_203ACEC + thumb_func_end sub_8101CE4 + + thumb_func_start sub_8101D9C +sub_8101D9C: @ 8101D9C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsrs r4, r0, 24 + asrs r2, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _08101E2C + lsls r0, r5, 24 + asrs r1, r0, 24 + lsls r0, r1, 4 + adds r0, 0x60 + mov r8, r0 + movs r7, 0x20 + cmp r2, 0x6 + bne _08101DCE + cmp r1, 0 + bne _08101DCE + movs r7, 0x9D + movs r6, 0x2 + b _08101DE4 +_08101DCE: + ldr r3, _08101E24 @ =gUnknown_843F958 + lsls r1, r4, 24 + lsrs r0, r1, 24 + movs r2, 0 + cmp r0, 0x6 + bhi _08101DDC + asrs r2, r1, 24 +_08101DDC: + adds r0, r2, r3 + ldrb r0, [r0] + adds r7, r0 + movs r6, 0x3 +_08101DE4: + ldr r5, _08101E28 @ =gUnknown_203ACEC + ldr r0, [r5] + movs r4, 0xB7 + lsls r4, 2 + adds r0, r4 + ldr r0, [r0] + adds r1, r6, 0 + bl sub_800838C + ldr r1, [r5] + adds r4, r1, r4 + ldr r0, [r4] + strh r7, [r0, 0x20] + ldr r0, [r4] + mov r2, r8 + strh r2, [r0, 0x22] + movs r4, 0xB8 + lsls r4, 2 + adds r1, r4 + ldr r0, [r1] + adds r1, r6, 0 + bl sub_800838C + ldr r0, [r5] + adds r0, r4 + ldr r1, [r0] + strh r7, [r1, 0x20] + ldr r0, [r0] + mov r1, r8 + strh r1, [r0, 0x22] + b _08101E72 + .align 2, 0 +_08101E24: .4byte gUnknown_843F958 +_08101E28: .4byte gUnknown_203ACEC +_08101E2C: + ldr r6, _08101E7C @ =gUnknown_203ACEC + ldr r0, [r6] + movs r4, 0xB7 + lsls r4, 2 + adds r0, r4 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + ldr r1, [r6] + adds r4, r1, r4 + ldr r0, [r4] + movs r2, 0xD8 + mov r8, r2 + mov r2, r8 + strh r2, [r0, 0x20] + ldr r0, [r4] + lsls r4, r5, 24 + asrs r4, 20 + adds r4, 0x70 + strh r4, [r0, 0x22] + movs r5, 0xB8 + lsls r5, 2 + adds r1, r5 + ldr r0, [r1] + movs r1, 0x1 + bl sub_800838C + ldr r0, [r6] + adds r0, r5 + ldr r1, [r0] + mov r2, r8 + strh r2, [r1, 0x20] + ldr r0, [r0] + strh r4, [r0, 0x22] +_08101E72: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08101E7C: .4byte gUnknown_203ACEC + thumb_func_end sub_8101D9C + + thumb_func_start sub_8101E80 +sub_8101E80: @ 8101E80 + push {lr} + ldr r0, _08101EC4 @ =gUnknown_843F968 + movs r1, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08101EC8 @ =gUnknown_203ACEC + ldr r2, [r1] + movs r1, 0xB9 + lsls r1, 2 + adds r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08101ECC @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + ldr r0, _08101ED0 @ =sub_8101ED4 + str r0, [r1, 0x1C] + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1, 0x5] + bl sub_8101F04 + pop {r0} + bx r0 + .align 2, 0 +_08101EC4: .4byte gUnknown_843F968 +_08101EC8: .4byte gUnknown_203ACEC +_08101ECC: .4byte gUnknown_202063C +_08101ED0: .4byte sub_8101ED4 + thumb_func_end sub_8101E80 + + thumb_func_start sub_8101ED4 +sub_8101ED4: @ 8101ED4 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _08101EFA + movs r0, 0 + strh r0, [r1, 0x2E] + ldrh r0, [r1, 0x24] + adds r0, 0x1 + strh r0, [r1, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _08101EFA + ldr r0, _08101F00 @ =0x0000fffa + strh r0, [r1, 0x24] +_08101EFA: + pop {r0} + bx r0 + .align 2, 0 +_08101F00: .4byte 0x0000fffa + thumb_func_end sub_8101ED4 + + thumb_func_start sub_8101F04 +sub_8101F04: @ 8101F04 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x1 + mov r0, sp + adds r1, r4, 0 + bl sub_80FFE34 + mov r0, sp + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0xD + muls r0, r1 + adds r0, 0x3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldrsb r1, [r4, r1] + lsls r1, 25 + movs r2, 0xB0 + lsls r2, 20 + adds r1, r2 + lsrs r1, 24 + bl sub_8101F40 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8101F04 + + thumb_func_start sub_8101F40 +sub_8101F40: @ 8101F40 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _08101F7C @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xB9 + lsls r1, 2 + adds r3, r0, r1 + ldr r1, [r3] + cmp r1, 0 + beq _08101F74 + lsls r0, r2, 3 + adds r0, 0x4 + movs r2, 0 + strh r0, [r1, 0x20] + ldr r1, [r3] + adds r0, r4, 0x1 + lsls r0, 3 + adds r0, 0x1 + strh r0, [r1, 0x22] + ldr r0, [r3] + strh r2, [r0, 0x24] + ldr r0, [r3] + strh r2, [r0, 0x2E] +_08101F74: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101F7C: .4byte gUnknown_203ACEC + thumb_func_end sub_8101F40 + + thumb_func_start sub_8101F80 +sub_8101F80: @ 8101F80 + push {r4,lr} + ldr r4, _08101FA8 @ =gUnknown_203ACEC + ldr r0, [r4] + movs r1, 0xB9 + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _08101FA2 + bl sub_8007280 + ldr r0, [r4] + movs r1, 0xB9 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + str r1, [r0] +_08101FA2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101FA8: .4byte gUnknown_203ACEC + thumb_func_end sub_8101F80 + + thumb_func_start sub_8101FAC +sub_8101FAC: @ 8101FAC + push {r4-r6,lr} + ldr r0, _08102004 @ =gUnknown_843FA40 + movs r1, 0xD0 + movs r2, 0x80 + movs r3, 0x6 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08102008 @ =gUnknown_203ACEC + ldr r2, [r5] + movs r1, 0xBA + lsls r1, 2 + adds r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r4, _0810200C @ =gUnknown_202063C + adds r1, r4 + str r1, [r2] + movs r6, 0 + ldr r0, _08102010 @ =0x0000ffc0 + strh r0, [r1, 0x24] + ldr r0, _08102014 @ =gUnknown_843FA20 + movs r1, 0xD0 + movs r2, 0x50 + movs r3, 0x5 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + movs r1, 0xBB + lsls r1, 2 + adds r3, r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + str r1, [r3] + strb r6, [r2, 0x9] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08102004: .4byte gUnknown_843FA40 +_08102008: .4byte gUnknown_203ACEC +_0810200C: .4byte gUnknown_202063C +_08102010: .4byte 0x0000ffc0 +_08102014: .4byte gUnknown_843FA20 + thumb_func_end sub_8101FAC + + thumb_func_start sub_8102018 +sub_8102018: @ 8102018 + push {r4,lr} + ldr r4, _0810202C @ =gUnknown_203ACEC + ldr r2, [r4] + ldrb r3, [r2, 0x9] + cmp r3, 0 + beq _08102030 + cmp r3, 0x1 + beq _08102088 + movs r0, 0 + b _081020A6 + .align 2, 0 +_0810202C: .4byte gUnknown_203ACEC +_08102030: + movs r0, 0xBA + lsls r0, 2 + adds r2, r0 + ldr r1, [r2] + ldrh r0, [r1, 0x24] + adds r0, 0x8 + strh r0, [r1, 0x24] + ldr r2, [r2] + movs r1, 0x24 + ldrsh r0, [r2, r1] + cmp r0, 0 + blt _081020A4 + strh r3, [r2, 0x24] + bl sub_80FFE1C + lsls r0, 24 + cmp r0, 0 + bne _08102066 + ldr r0, [r4] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + b _08102076 +_08102066: + ldr r0, [r4] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C +_08102076: + ldr r0, _08102084 @ =gUnknown_203ACEC + ldr r1, [r0] + ldrb r0, [r1, 0x9] + adds r0, 0x1 + strb r0, [r1, 0x9] + b _081020A4 + .align 2, 0 +_08102084: .4byte gUnknown_203ACEC +_08102088: + movs r1, 0xBB + lsls r1, 2 + adds r0, r2, r1 + ldr r0, [r0] + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081020A4 + movs r0, 0x2 + strb r0, [r2, 0x9] + movs r0, 0 + b _081020A6 +_081020A4: + movs r0, 0x1 +_081020A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8102018 + + thumb_func_start sub_81020AC +sub_81020AC: @ 81020AC + push {lr} + ldr r2, _081020CC @ =gUnknown_203ACEC + ldr r1, [r2] + movs r0, 0 + strb r0, [r1, 0x9] + ldr r0, [r2] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x3 + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_081020CC: .4byte gUnknown_203ACEC + thumb_func_end sub_81020AC + + thumb_func_start sub_81020D0 +sub_81020D0: @ 81020D0 + push {r4-r6,lr} + ldr r5, _081020E4 @ =gUnknown_203ACEC + ldr r3, [r5] + ldrb r0, [r3, 0x9] + cmp r0, 0 + beq _081020E8 + cmp r0, 0x1 + beq _08102102 + movs r0, 0 + b _08102154 + .align 2, 0 +_081020E4: .4byte gUnknown_203ACEC +_081020E8: + movs r1, 0xBB + lsls r1, 2 + adds r0, r3, r1 + ldr r0, [r0] + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08102152 + movs r0, 0x1 + strb r0, [r3, 0x9] + b _08102152 +_08102102: + movs r0, 0xBA + lsls r0, 2 + adds r2, r3, r0 + ldr r1, [r2] + ldrh r0, [r1, 0x24] + subs r0, 0x8 + movs r6, 0 + strh r0, [r1, 0x24] + ldr r0, [r2] + movs r2, 0x24 + ldrsh r1, [r0, r2] + movs r0, 0x40 + negs r0, r0 + cmp r1, r0 + bgt _08102152 + movs r4, 0xBB + lsls r4, 2 + adds r0, r3, r4 + ldr r0, [r0] + bl sub_8007280 + ldr r0, [r5] + movs r1, 0xBA + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_8007280 + ldr r1, [r5] + adds r4, r1, r4 + str r6, [r4] + movs r2, 0xBA + lsls r2, 2 + adds r0, r1, r2 + str r6, [r0] + ldrb r0, [r1, 0x9] + adds r0, 0x1 + strb r0, [r1, 0x9] + movs r0, 0 + b _08102154 +_08102152: + movs r0, 0x1 +_08102154: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81020D0 + + thumb_func_start sub_810215C +sub_810215C: @ 810215C + push {lr} + ldr r0, _08102174 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x4 + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_08102174: .4byte gUnknown_203ACEC + thumb_func_end sub_810215C + + thumb_func_start sub_8102178 +sub_8102178: @ 8102178 + push {lr} + bl sub_80FFE1C + lsls r0, 24 + cmp r0, 0 + bne _0810219C + ldr r0, _08102198 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + b _081021AE + .align 2, 0 +_08102198: .4byte gUnknown_203ACEC +_0810219C: + ldr r0, _081021B4 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C +_081021AE: + pop {r0} + bx r0 + .align 2, 0 +_081021B4: .4byte gUnknown_203ACEC + thumb_func_end sub_8102178 + + thumb_func_start sub_81021B8 +sub_81021B8: @ 81021B8 + ldr r0, _081021D0 @ =gUnknown_203ACEC + ldr r0, [r0] + movs r1, 0xBB + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + adds r0, 0x3F + ldrb r1, [r0] + lsrs r1, 4 + movs r0, 0x1 + bics r0, r1 + bx lr + .align 2, 0 +_081021D0: .4byte gUnknown_203ACEC + thumb_func_end sub_81021B8 + + thumb_func_start sub_81021D4 +sub_81021D4: @ 81021D4 + push {r4,lr} + ldr r4, _08102240 @ =gUnknown_843FA98 + adds r0, r4, 0 + movs r1, 0x60 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08102202 + ldr r0, _08102244 @ =gUnknown_203ACEC + ldr r2, [r0] + movs r0, 0xBC + lsls r0, 2 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08102248 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] +_08102202: + adds r0, r4, 0 + movs r1, 0x60 + movs r2, 0x9C + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08102236 + ldr r0, _08102244 @ =gUnknown_203ACEC + ldr r2, [r0] + movs r0, 0xBD + lsls r0, 2 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08102248 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] +_08102236: + bl sub_81022B0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08102240: .4byte gUnknown_843FA98 +_08102244: .4byte gUnknown_203ACEC +_08102248: .4byte gUnknown_202063C + thumb_func_end sub_81021D4 + + thumb_func_start sub_810224C +sub_810224C: @ 810224C + push {r4-r6,lr} + bl sub_80FFE64 + ldr r6, _081022AC @ =gUnknown_203ACEC + ldr r1, [r6] + movs r2, 0xBC + lsls r2, 2 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + cmp r0, 0 + bne _08102266 + movs r2, 0x1 +_08102266: + adds r3, r1, 0 + adds r3, 0x3E + movs r4, 0x1 + lsls r2, 2 + ldrb r1, [r3] + movs r5, 0x5 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + bl sub_80FFE98 + ldr r1, [r6] + movs r2, 0xBD + lsls r2, 2 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + cmp r0, 0 + bne _08102292 + movs r2, 0x1 +_08102292: + adds r3, r1, 0 + adds r3, 0x3E + adds r1, r4, 0 + ands r1, r2 + lsls r1, 2 + ldrb r2, [r3] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081022AC: .4byte gUnknown_203ACEC + thumb_func_end sub_810224C + + thumb_func_start sub_81022B0 +sub_81022B0: @ 81022B0 + ldr r3, _081022DC @ =gUnknown_203ACEC + ldr r0, [r3] + movs r1, 0xBC + lsls r1, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + movs r1, 0xBD + lsls r1, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_081022DC: .4byte gUnknown_203ACEC + thumb_func_end sub_81022B0 + + thumb_func_start sub_81022E0 +sub_81022E0: @ 81022E0 + push {lr} + cmp r0, 0 + bne _081022FC + ldr r0, _081022F8 @ =gUnknown_203ACEC + ldr r2, [r0] + movs r1, 0xBC + lsls r1, 2 + adds r0, r2, r1 + ldr r0, [r0] + movs r1, 0x60 + b _0810230A + .align 2, 0 +_081022F8: .4byte gUnknown_203ACEC +_081022FC: + ldr r0, _0810231C @ =gUnknown_203ACEC + ldr r2, [r0] + movs r1, 0xBC + lsls r1, 2 + adds r0, r2, r1 + ldr r0, [r0] + movs r1, 0x78 +_0810230A: + strh r1, [r0, 0x20] + movs r3, 0xBD + lsls r3, 2 + adds r0, r2, r3 + ldr r0, [r0] + strh r1, [r0, 0x20] + pop {r0} + bx r0 + .align 2, 0 +_0810231C: .4byte gUnknown_203ACEC + thumb_func_end sub_81022E0 + + thumb_func_start sub_8102320 +sub_8102320: @ 8102320 + push {r4,lr} + ldr r4, _08102388 @ =gUnknown_843FA80 + adds r0, r4, 0 + movs r1, 0xDC + movs r2, 0x54 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0810234E + ldr r0, _0810238C @ =gUnknown_203ACEC + ldr r2, [r0] + movs r0, 0xBE + lsls r0, 2 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08102390 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] +_0810234E: + adds r0, r4, 0 + movs r1, 0xDC + movs r2, 0x9C + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0810237E + ldr r0, _0810238C @ =gUnknown_203ACEC + ldr r2, [r0] + movs r0, 0xBF + lsls r0, 2 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08102390 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + movs r1, 0x1 + bl sub_800838C +_0810237E: + bl sub_81023F8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08102388: .4byte gUnknown_843FA80 +_0810238C: .4byte gUnknown_203ACEC +_08102390: .4byte gUnknown_202063C + thumb_func_end sub_8102320 + + thumb_func_start sub_8102394 +sub_8102394: @ 8102394 + push {r4-r6,lr} + bl sub_80FFE64 + ldr r6, _081023F4 @ =gUnknown_203ACEC + ldr r1, [r6] + movs r2, 0xBE + lsls r2, 2 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + cmp r0, 0 + bne _081023AE + movs r2, 0x1 +_081023AE: + adds r3, r1, 0 + adds r3, 0x3E + movs r4, 0x1 + lsls r2, 2 + ldrb r1, [r3] + movs r5, 0x5 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + bl sub_80FFE98 + ldr r1, [r6] + movs r2, 0xBF + lsls r2, 2 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + cmp r0, 0 + bne _081023DA + movs r2, 0x1 +_081023DA: + adds r3, r1, 0 + adds r3, 0x3E + adds r1, r4, 0 + ands r1, r2 + lsls r1, 2 + ldrb r2, [r3] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081023F4: .4byte gUnknown_203ACEC + thumb_func_end sub_8102394 + + thumb_func_start sub_81023F8 +sub_81023F8: @ 81023F8 + ldr r3, _08102424 @ =gUnknown_203ACEC + ldr r0, [r3] + movs r1, 0xBE + lsls r1, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + movs r1, 0xBF + lsls r1, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_08102424: .4byte gUnknown_203ACEC + thumb_func_end sub_81023F8 + + thumb_func_start sub_8102428 +sub_8102428: @ 8102428 + push {r4,lr} + sub sp, 0x14 + ldr r3, _081024A8 @ =0xffffff00 + ldr r0, [sp, 0xC] + ands r0, r3 + movs r1, 0x3 + orrs r0, r1 + ldr r2, _081024AC @ =0xffff00ff + ands r0, r2 + movs r1, 0x80 + lsls r1, 3 + orrs r0, r1 + ldr r1, _081024B0 @ =0xff00ffff + ands r0, r1 + movs r1, 0xB0 + lsls r1, 12 + orrs r0, r1 + ldr r1, _081024B4 @ =0x00ffffff + ands r0, r1 + movs r1, 0xC0 + lsls r1, 21 + orrs r0, r1 + str r0, [sp, 0xC] + ldr r0, [sp, 0x10] + ands r0, r3 + movs r1, 0x2 + orrs r0, r1 + ands r0, r2 + movs r1, 0xB0 + lsls r1, 4 + orrs r0, r1 + ldr r1, _081024B8 @ =0x0000ffff + ands r0, r1 + movs r1, 0xC0 + lsls r1, 14 + orrs r0, r1 + str r0, [sp, 0x10] + add r0, sp, 0xC + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _081024BC @ =gUnknown_841EE2B + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x1 + movs r3, 0 + bl sub_8100D84 + adds r0, r4, 0 + bl sub_8003FA0 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081024A8: .4byte 0xffffff00 +_081024AC: .4byte 0xffff00ff +_081024B0: .4byte 0xff00ffff +_081024B4: .4byte 0x00ffffff +_081024B8: .4byte 0x0000ffff +_081024BC: .4byte gUnknown_841EE2B + thumb_func_end sub_8102428 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s new file mode 100644 index 000000000..26c2659d9 --- /dev/null +++ b/asm/link_rfu_2.s @@ -0,0 +1,10182 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_87 +nullsub_87: @ 80F85F0 + bx lr + thumb_func_end nullsub_87 + + thumb_func_start nullsub_88 +nullsub_88: @ 80F85F4 + bx lr + thumb_func_end nullsub_88 + + thumb_func_start sub_80F85F8 +sub_80F85F8: @ 80F85F8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + ldr r6, _080F869C @ =gUnknown_3005450 + adds r5, r6, 0 + adds r5, 0xEE + ldrb r4, [r5] + mov r0, sp + movs r7, 0 + strh r7, [r0] + ldr r2, _080F86A0 @ =0x010004d6 + adds r1, r6, 0 + bl CpuSet + movs r0, 0xFF + strb r0, [r6, 0xC] + ldrb r0, [r5] + strb r4, [r5] + ldrb r0, [r5] + cmp r0, 0x4 + beq _080F862A + ldrb r0, [r5] + strb r7, [r5] +_080F862A: + mov r7, sp + adds r7, 0x2 + add r0, sp, 0x4 + mov r8, r0 + movs r0, 0x6 + add r0, sp + mov r9, r0 + adds r5, r6, 0 + adds r5, 0x80 + movs r4, 0x4 +_080F863E: + adds r0, r5, 0 + bl sub_80F9CB4 + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _080F863E + movs r5, 0 + ldr r4, _080F86A4 @ =gUnknown_30054BC + adds r0, r4, 0 + bl sub_80F9CB4 + adds r0, r4, 0 + adds r0, 0xB8 + bl sub_80FC478 + ldr r0, _080F86A8 @ =0x00000634 + adds r4, r0 + adds r0, r4, 0 + bl sub_80FC4D4 + strh r5, [r7] + ldr r1, _080F86AC @ =gUnknown_3003F50 + ldr r2, _080F86B0 @ =0x01000008 + adds r0, r7, 0 + bl CpuSet + mov r0, r8 + strh r5, [r0] + ldr r1, _080F86B4 @ =gUnknown_3003ED0 + ldr r2, _080F86B8 @ =0x01000028 + bl CpuSet + mov r0, r9 + strh r5, [r0] + ldr r1, _080F86BC @ =gUnknown_202273C + ldr r2, _080F86C0 @ =0x01000046 + bl CpuSet + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F869C: .4byte gUnknown_3005450 +_080F86A0: .4byte 0x010004d6 +_080F86A4: .4byte gUnknown_30054BC +_080F86A8: .4byte 0x00000634 +_080F86AC: .4byte gUnknown_3003F50 +_080F86B0: .4byte 0x01000008 +_080F86B4: .4byte gUnknown_3003ED0 +_080F86B8: .4byte 0x01000028 +_080F86BC: .4byte gUnknown_202273C +_080F86C0: .4byte 0x01000046 + thumb_func_end sub_80F85F8 + + thumb_func_start sub_80F86C4 +sub_80F86C4: @ 80F86C4 + push {r4-r6,lr} + ldr r4, _080F86EC @ =gIntrTable + ldr r5, [r4, 0x4] + ldr r6, [r4, 0x8] + bl sub_80F86F4 + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + ldr r1, _080F86F0 @ =0x04000208 + movs r0, 0 + strh r0, [r1] + str r5, [r4, 0x4] + str r6, [r4, 0x8] + movs r0, 0x1 + strh r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F86EC: .4byte gIntrTable +_080F86F0: .4byte 0x04000208 + thumb_func_end sub_80F86C4 + + thumb_func_start sub_80F86F4 +sub_80F86F4: @ 80F86F4 + push {r4,lr} + ldr r0, _080F8728 @ =gUnknown_3001190 + ldr r1, _080F872C @ =0x00000e64 + ldr r4, _080F8730 @ =gUnknown_3003544 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_81E05B0 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _080F8722 + ldr r0, _080F8734 @ =gUnknown_202271A + strh r1, [r0] + movs r0, 0 + bl sub_80FB128 + bl sub_80F85F8 + adds r1, r4, 0x4 + movs r0, 0x3 + bl rfu_setTimerInterrupt +_080F8722: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F8728: .4byte gUnknown_3001190 +_080F872C: .4byte 0x00000e64 +_080F8730: .4byte gUnknown_3003544 +_080F8734: .4byte gUnknown_202271A + thumb_func_end sub_80F86F4 + + thumb_func_start sub_80F8738 +sub_80F8738: @ 80F8738 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_80FA738 + ldr r0, _080F8758 @ =gUnknown_3005450 + ldrh r0, [r0, 0x4] + cmp r0, 0x12 + bls _080F874C + b _080F8852 +_080F874C: + lsls r0, 2 + ldr r1, _080F875C @ =_080F8760 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F8758: .4byte gUnknown_3005450 +_080F875C: .4byte _080F8760 + .align 2, 0 +_080F8760: + .4byte _080F87AC + .4byte _080F8852 + .4byte _080F87D4 + .4byte _080F8852 + .4byte _080F8804 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8852 + .4byte _080F8818 +_080F87AC: + ldr r0, _080F87C8 @ =gUnknown_203ABF0 + bl sub_80FD4B0 + ldr r0, _080F87CC @ =gUnknown_3005450 + movs r2, 0x1 + strh r2, [r0, 0x4] + ldr r1, _080F87D0 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0xA] + b _080F8852 + .align 2, 0 +_080F87C8: .4byte gUnknown_203ABF0 +_080F87CC: .4byte gUnknown_3005450 +_080F87D0: .4byte gUnknown_3005090 +_080F87D4: + ldr r4, _080F87F8 @ =gUnknown_3005450 + ldrb r0, [r4, 0xC] + ldr r3, _080F87FC @ =gUnknown_843EC8C + movs r1, 0 + movs r2, 0xF0 + bl sub_80FD538 + movs r0, 0x3 + strh r0, [r4, 0x4] + ldr r1, _080F8800 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x6 + strh r1, [r0, 0xA] + b _080F8852 + .align 2, 0 +_080F87F8: .4byte gUnknown_3005450 +_080F87FC: .4byte gUnknown_843EC8C +_080F8800: .4byte gUnknown_3005090 +_080F8804: + movs r0, 0 + bl sub_80FD760 + ldr r1, _080F8814 @ =gUnknown_3005450 + movs r0, 0x5 + strh r0, [r1, 0x4] + b _080F8852 + .align 2, 0 +_080F8814: .4byte gUnknown_3005450 +_080F8818: + ldr r4, _080F8858 @ =gUnknown_3005450 + ldr r0, _080F885C @ =0x00000993 + adds r1, r4, r0 + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r0, _080F8860 @ =sub_80F8DA8 + bl sub_80FEA10 + bl sub_80F8AA4 + bl sub_80F8AEC + movs r0, 0x14 + strh r0, [r4, 0x4] + ldr r1, _080F8864 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + strh r1, [r0, 0xA] + ldr r0, _080F8868 @ =sub_80FA834 + movs r1, 0x5 + bl sub_807741C + adds r0, r5, 0 + bl sub_8077508 +_080F8852: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F8858: .4byte gUnknown_3005450 +_080F885C: .4byte 0x00000993 +_080F8860: .4byte sub_80F8DA8 +_080F8864: .4byte gUnknown_3005090 +_080F8868: .4byte sub_80FA834 + thumb_func_end sub_80F8738 + + thumb_func_start sub_80F886C +sub_80F886C: @ 80F886C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080F8878 @ =gUnknown_843EC51 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080F8878: .4byte gUnknown_843EC51 + thumb_func_end sub_80F886C + + thumb_func_start sub_80F887C +sub_80F887C: @ 80F887C + push {r4-r7,lr} + adds r2, r0, 0 + adds r5, r1, 0 + movs r4, 0x1 + adds r1, r2, 0 + movs r6, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _080F88BC + movs r3, 0 + movs r5, 0x1 + ldr r1, _080F88B8 @ =gUnknown_3005DE6 +_080F8896: + adds r0, r2, 0 + ands r0, r5 + cmp r0, 0 + beq _080F88A8 + adds r0, r3, r1 + strb r4, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_080F88A8: + asrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080F8896 + b _080F8932 + .align 2, 0 +_080F88B8: .4byte gUnknown_3005DE6 +_080F88BC: + movs r3, 0 + mvns r0, r1 + mov r12, r0 + movs r7, 0x1 + ldr r4, _080F8938 @ =gUnknown_3005DE6 +_080F88C6: + adds r2, r1, 0 + ands r2, r7 + cmp r2, 0 + bne _080F88D2 + adds r0, r3, r4 + strb r2, [r0] +_080F88D2: + asrs r1, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080F88C6 + movs r4, 0x4 + ldr r0, _080F8938 @ =gUnknown_3005DE6 + ldrb r7, [r0] +_080F88E4: + movs r3, 0 + subs r1, r4, 0x1 + cmp r7, r4 + beq _080F8900 + ldr r2, _080F8938 @ =gUnknown_3005DE6 +_080F88EE: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bhi _080F8900 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, r4 + bne _080F88EE +_080F8900: + cmp r3, 0x4 + bne _080F8906 + adds r6, r4, 0 +_080F8906: + lsls r0, r1, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080F88E4 + mov r0, r12 + ands r5, r0 + movs r3, 0 + movs r2, 0x1 + ldr r1, _080F8938 @ =gUnknown_3005DE6 +_080F8918: + adds r0, r5, 0 + ands r0, r2 + cmp r0, 0 + beq _080F8926 + adds r0, r3, r1 + strb r6, [r0] + adds r6, 0x1 +_080F8926: + asrs r5, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080F8918 +_080F8932: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F8938: .4byte gUnknown_3005DE6 + thumb_func_end sub_80F887C + + thumb_func_start sub_80F893C +sub_80F893C: @ 80F893C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080F8958 @ =gUnknown_3005450 + ldrh r3, [r0, 0x4] + adds r7, r0, 0 + cmp r3, 0xC + bls _080F894E + b _080F8A8A +_080F894E: + lsls r0, r3, 2 + ldr r1, _080F895C @ =_080F8960 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F8958: .4byte gUnknown_3005450 +_080F895C: .4byte _080F8960 + .align 2, 0 +_080F8960: + .4byte _080F8994 + .4byte _080F8A8A + .4byte _080F8A8A + .4byte _080F8A8A + .4byte _080F8A8A + .4byte _080F8A8A + .4byte _080F89AC + .4byte _080F8A8A + .4byte _080F8A8A + .4byte _080F89D4 + .4byte _080F8A8A + .4byte _080F89E8 + .4byte _080F8A2C +_080F8994: + ldr r0, _080F89A4 @ =gUnknown_843EBB4 + bl sub_80FD4B0 + ldr r0, _080F89A8 @ =gUnknown_3005450 + movs r2, 0x1 + strh r2, [r0, 0x4] + b _080F89BC + .align 2, 0 +_080F89A4: .4byte gUnknown_843EBB4 +_080F89A8: .4byte gUnknown_3005450 +_080F89AC: + ldrb r0, [r7, 0xC] + ldr r3, _080F89CC @ =gUnknown_843EC8C + movs r1, 0 + movs r2, 0xF0 + bl sub_80FD538 + movs r2, 0x7 + strh r2, [r7, 0x4] +_080F89BC: + ldr r1, _080F89D0 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0xA] + b _080F8A8A + .align 2, 0 +_080F89CC: .4byte gUnknown_843EC8C +_080F89D0: .4byte gUnknown_3005090 +_080F89D4: + ldr r0, _080F89E4 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0xA + strh r0, [r1, 0xA] + b _080F8A8A + .align 2, 0 +_080F89E4: .4byte gUnknown_3005090 +_080F89E8: + bl sub_80FA788 + cmp r0, 0x6 + beq _080F8A0C + cmp r0, 0x6 + bgt _080F89FA + cmp r0, 0x5 + beq _080F8A00 + b _080F8A8A +_080F89FA: + cmp r0, 0x9 + beq _080F8A0C + b _080F8A8A +_080F8A00: + ldr r1, _080F8A08 @ =gUnknown_3005450 + movs r0, 0xC + strh r0, [r1, 0x4] + b _080F8A8A + .align 2, 0 +_080F8A08: .4byte gUnknown_3005450 +_080F8A0C: + bl sub_80FEB14 + ldr r0, _080F8A24 @ =gUnknown_3005450 + ldr r1, _080F8A28 @ =0x0000099c + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + adds r0, r6, 0 + bl sub_8077508 + b _080F8A8A + .align 2, 0 +_080F8A24: .4byte gUnknown_3005450 +_080F8A28: .4byte 0x0000099c +_080F8A2C: + ldr r0, _080F8A90 @ =0x000008f6 + adds r4, r7, r0 + ldrb r0, [r4] + movs r5, 0x80 + lsls r5, 17 + lsls r5, r0 + lsrs r5, 24 + ldrb r1, [r4] + movs r0, 0xC + bl rfu_clearSlot + ldrb r1, [r4] + ldr r0, _080F8A94 @ =0x000008f7 + adds r2, r7, r0 + movs r0, 0x10 + movs r3, 0x46 + bl rfu_setRecvBuffer + adds r1, r7, 0 + adds r1, 0x4C + adds r0, r5, 0 + movs r2, 0xE + bl rfu_UNI_setSendData + ldr r1, _080F8A98 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + strh r1, [r0, 0xA] + adds r0, r6, 0 + bl sub_8077508 + ldr r4, _080F8A9C @ =gUnknown_203AC08 + ldrb r0, [r4, 0xF] + cmp r0, 0 + bne _080F8A82 + bl sub_80FC208 + ldrb r0, [r4, 0xF] + adds r0, 0x1 + strb r0, [r4, 0xF] +_080F8A82: + ldr r0, _080F8AA0 @ =sub_80FA834 + movs r1, 0x5 + bl sub_807741C +_080F8A8A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F8A90: .4byte 0x000008f6 +_080F8A94: .4byte 0x000008f7 +_080F8A98: .4byte gUnknown_3005090 +_080F8A9C: .4byte gUnknown_203AC08 +_080F8AA0: .4byte sub_80FA834 + thumb_func_end sub_80F893C + + thumb_func_start sub_80F8AA4 +sub_80F8AA4: @ 80F8AA4 + push {r4,r5,lr} + ldr r0, _080F8AE4 @ =gUnknown_3005E10 + ldrb r5, [r0] + movs r4, 0 +_080F8AAC: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _080F8AD0 + lsls r2, r4, 3 + subs r2, r4 + lsls r2, 1 + ldr r0, _080F8AE8 @ =gUnknown_3005464 + adds r2, r0 + movs r0, 0x10 + adds r1, r4, 0 + movs r3, 0xE + bl rfu_setRecvBuffer + movs r0, 0x3 + adds r1, r4, 0 + bl rfu_clearSlot +_080F8AD0: + lsrs r5, 1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080F8AAC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F8AE4: .4byte gUnknown_3005E10 +_080F8AE8: .4byte gUnknown_3005464 + thumb_func_end sub_80F8AA4 + + thumb_func_start sub_80F8AEC +sub_80F8AEC: @ 80F8AEC + push {r4-r6,lr} + ldr r0, _080F8B28 @ =gUnknown_3005E10 + ldrb r5, [r0] + ldr r4, _080F8B2C @ =gUnknown_3005D8F + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x46 + bl rfu_UNI_setSendData + adds r0, r5, 0 + bl sub_80F886C + ldr r1, _080F8B30 @ =0xfffff6c1 + adds r6, r4, r1 + adds r1, r4, 0 + adds r1, 0x53 + strb r0, [r1] + adds r4, 0x5B + strb r5, [r4] + movs r1, 0x1 + negs r1, r1 + adds r0, r5, 0 + bl sub_80F887C + movs r0, 0x1 + strb r0, [r6, 0xC] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F8B28: .4byte gUnknown_3005E10 +_080F8B2C: .4byte gUnknown_3005D8F +_080F8B30: .4byte 0xfffff6c1 + thumb_func_end sub_80F8AEC + + thumb_func_start sub_80F8B34 +sub_80F8B34: @ 80F8B34 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x54 + bne _080F8B68 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080F8B68 + ldr r0, _080F8B80 @ =gUnknown_3005E10 + ldrb r0, [r0] + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 +_080F8B68: + ldr r0, _080F8B84 @ =gUnknown_3005450 + ldrh r2, [r0, 0x4] + adds r6, r0, 0 + cmp r2, 0x12 + bls _080F8B74 + b _080F8CE6 +_080F8B74: + lsls r0, r2, 2 + ldr r1, _080F8B88 @ =_080F8B8C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F8B80: .4byte gUnknown_3005E10 +_080F8B84: .4byte gUnknown_3005450 +_080F8B88: .4byte _080F8B8C + .align 2, 0 +_080F8B8C: + .4byte _080F8BD8 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8CE6 + .4byte _080F8C28 + .4byte _080F8C88 + .4byte _080F8CE6 + .4byte _080F8C9C + .4byte _080F8C00 + .4byte _080F8CE6 +_080F8BD8: + ldr r0, _080F8BF4 @ =gUnknown_203ABF0 + bl sub_80FD4B0 + ldr r0, _080F8BF8 @ =gUnknown_3005450 + movs r2, 0x1 + strh r2, [r0, 0x4] + ldr r1, _080F8BFC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0xA] + b _080F8CE6 + .align 2, 0 +_080F8BF4: .4byte gUnknown_203ABF0 +_080F8BF8: .4byte gUnknown_3005450 +_080F8BFC: .4byte gUnknown_3005090 +_080F8C00: + ldr r3, _080F8C1C @ =gUnknown_843EC8C + movs r0, 0x2 + movs r1, 0 + movs r2, 0xF0 + bl sub_80FD538 + ldr r0, _080F8C20 @ =sub_80F8D20 + bl sub_80FEA10 + ldr r1, _080F8C24 @ =gUnknown_3005450 + movs r0, 0x12 + strh r0, [r1, 0x4] + b _080F8CE6 + .align 2, 0 +_080F8C1C: .4byte gUnknown_843EC8C +_080F8C20: .4byte sub_80F8D20 +_080F8C24: .4byte gUnknown_3005450 +_080F8C28: + ldr r1, _080F8C6C @ =0x000008f6 + adds r0, r6, r1 + ldrb r1, [r0] + movs r0, 0x80 + lsls r0, 17 + lsls r0, r1 + lsrs r0, 24 + adds r1, r6, 0 + adds r1, 0x4C + movs r2, 0xE + bl rfu_UNI_setSendData + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _080F8CE6 + strb r0, [r6, 0xC] + adds r0, r5, 0 + bl sub_8077508 + ldr r0, _080F8C70 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x16 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080F8C78 + ldr r0, _080F8C74 @ =sub_80FACF0 + movs r1, 0x1 + bl sub_807741C + b _080F8CE6 + .align 2, 0 +_080F8C6C: .4byte 0x000008f6 +_080F8C70: .4byte gUnknown_3005090 +_080F8C74: .4byte sub_80FACF0 +_080F8C78: + ldr r0, _080F8C84 @ =sub_80FA834 + movs r1, 0x5 + bl sub_807741C + b _080F8CE6 + .align 2, 0 +_080F8C84: .4byte sub_80FA834 +_080F8C88: + movs r0, 0 + bl sub_80FD760 + ldr r1, _080F8C98 @ =gUnknown_3005450 + movs r0, 0xF + strh r0, [r1, 0x4] + b _080F8CE6 + .align 2, 0 +_080F8C98: .4byte gUnknown_3005450 +_080F8C9C: + ldr r0, _080F8CEC @ =0x00000993 + adds r1, r6, r0 + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r0, _080F8CF0 @ =sub_80F8DA8 + bl sub_80FEA10 + movs r0, 0x1 + bl sub_80FAFE0 + bl sub_80F8AA4 + bl sub_80F8AEC + movs r0, 0x14 + strh r0, [r6, 0x4] + ldr r1, _080F8CF4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + strh r1, [r0, 0xA] + movs r4, 0x1 + strb r4, [r6, 0xC] + ldr r0, _080F8CF8 @ =sub_80FA834 + movs r1, 0x5 + bl sub_807741C + movs r1, 0x9A + lsls r1, 4 + adds r0, r6, r1 + strb r4, [r0] + adds r0, r5, 0 + bl sub_8077508 +_080F8CE6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F8CEC: .4byte 0x00000993 +_080F8CF0: .4byte sub_80F8DA8 +_080F8CF4: .4byte gUnknown_3005090 +_080F8CF8: .4byte sub_80FA834 + thumb_func_end sub_80F8B34 + + thumb_func_start sub_80F8CFC +sub_80F8CFC: @ 80F8CFC + push {lr} + ldr r3, _080F8D10 @ =gUnknown_843EC8C + movs r0, 0x1 + movs r1, 0 + movs r2, 0xF0 + bl sub_80FD538 + pop {r0} + bx r0 + .align 2, 0 +_080F8D10: .4byte gUnknown_843EC8C + thumb_func_end sub_80F8CFC + + thumb_func_start sub_80F8D14 +sub_80F8D14: @ 80F8D14 + push {lr} + movs r0, 0 + bl sub_80FD760 + pop {r0} + bx r0 + thumb_func_end sub_80F8D14 + + thumb_func_start sub_80F8D20 +sub_80F8D20: @ 80F8D20 + push {r4,lr} + ldr r0, _080F8D90 @ =gUnknown_3005450 + movs r2, 0 + movs r1, 0xD + adds r0, 0x59 +_080F8D2A: + strb r2, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080F8D2A + bl rfu_REQ_recvData + bl rfu_waitREQComplete + ldr r1, _080F8D94 @ =gUnknown_3007440 + ldr r3, _080F8D90 @ =gUnknown_3005450 + ldr r0, _080F8D98 @ =0x000008f6 + adds r4, r3, r0 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x12] + cmp r0, 0 + beq _080F8D84 + ldr r2, _080F8D9C @ =0x00000988 + adds r1, r3, r2 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, 0x92 + lsls r1, 1 + adds r0, r3, r1 + ldr r2, _080F8DA0 @ =0x000008f7 + adds r1, r3, r2 + bl sub_80FC588 + ldr r1, _080F8DA4 @ =gUnknown_203AC08 + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + bl sub_80F906C + ldrb r0, [r4] + bl rfu_UNI_readySendData + ldrb r0, [r4] + bl rfu_UNI_clearRecvNewDataFlag +_080F8D84: + movs r0, 0x1 + bl sub_80FD3F0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F8D90: .4byte gUnknown_3005450 +_080F8D94: .4byte gUnknown_3007440 +_080F8D98: .4byte 0x000008f6 +_080F8D9C: .4byte 0x00000988 +_080F8DA0: .4byte 0x000008f7 +_080F8DA4: .4byte gUnknown_203AC08 + thumb_func_end sub_80F8D20 + + thumb_func_start sub_80F8DA8 +sub_80F8DA8: @ 80F8DA8 + ldr r0, _080F8DB8 @ =gUnknown_3005450 + ldr r1, _080F8DBC @ =0x00000993 + adds r0, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] + bx lr + .align 2, 0 +_080F8DB8: .4byte gUnknown_3005450 +_080F8DBC: .4byte 0x00000993 + thumb_func_end sub_80F8DA8 + + thumb_func_start sub_80F8DC0 +sub_80F8DC0: @ 80F8DC0 + push {r4-r6,lr} + ldr r0, _080F8DE0 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080F8E64 + bl sub_80FD52C + ldr r4, _080F8DE4 @ =gUnknown_3005450 + ldrb r0, [r4, 0xC] + cmp r0, 0x1 + bne _080F8DEC + ldr r0, _080F8DE8 @ =sub_80F8738 + b _080F8DF2 + .align 2, 0 +_080F8DE0: .4byte gUnknown_203ADFA +_080F8DE4: .4byte gUnknown_3005450 +_080F8DE8: .4byte sub_80F8738 +_080F8DEC: + cmp r0, 0 + bne _080F8E14 + ldr r0, _080F8E10 @ =sub_80F893C +_080F8DF2: + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080F8E34 + adds r0, r4, 0 + adds r0, 0x67 + ldrb r0, [r0] + bl sub_8077508 + bl sub_80F85F8 + b _080F8E34 + .align 2, 0 +_080F8E10: .4byte sub_80F893C +_080F8E14: + cmp r0, 0x2 + bne _080F8E34 + ldr r0, _080F8E6C @ =sub_80F8B34 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080F8E34 + adds r0, r4, 0 + adds r0, 0x67 + ldrb r0, [r0] + bl sub_8077508 + bl sub_80F85F8 +_080F8E34: + movs r5, 0 + ldr r6, _080F8E70 @ =gUnknown_843ED88 +_080F8E38: + lsls r0, r5, 2 + adds r0, r6 + ldr r4, [r0] + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080F8E5A + adds r0, r4, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080F8E5A: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _080F8E38 +_080F8E64: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F8E6C: .4byte sub_80F8B34 +_080F8E70: .4byte gUnknown_843ED88 + thumb_func_end sub_80F8DC0 + + thumb_func_start sub_80F8E74 +sub_80F8E74: @ 80F8E74 + push {lr} + ldr r0, _080F8E98 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080F8E92 + ldr r0, _080F8E9C @ =sub_80F8738 + movs r1, 0x1 + bl sub_807741C + ldr r1, _080F8EA0 @ =gUnknown_3005450 + adds r1, 0x67 + strb r0, [r1] +_080F8E92: + pop {r0} + bx r0 + .align 2, 0 +_080F8E98: .4byte gUnknown_203ADFA +_080F8E9C: .4byte sub_80F8738 +_080F8EA0: .4byte gUnknown_3005450 + thumb_func_end sub_80F8E74 + + thumb_func_start sub_80F8EA4 +sub_80F8EA4: @ 80F8EA4 + push {lr} + ldr r1, _080F8EBC @ =gUnknown_3005450 + ldrh r0, [r1, 0x4] + cmp r0, 0x7 + bne _080F8EC4 + ldr r2, _080F8EC0 @ =0x00000985 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080F8EC4 + movs r0, 0x1 + b _080F8EC6 + .align 2, 0 +_080F8EBC: .4byte gUnknown_3005450 +_080F8EC0: .4byte 0x00000985 +_080F8EC4: + movs r0, 0 +_080F8EC6: + pop {r1} + bx r1 + thumb_func_end sub_80F8EA4 + + thumb_func_start sub_80F8ECC +sub_80F8ECC: @ 80F8ECC + push {r4,lr} + ldr r4, _080F8EFC @ =gUnknown_3005450 + ldrh r0, [r4, 0x4] + cmp r0, 0x7 + bne _080F8F08 + ldr r0, _080F8F00 @ =gUnknown_3007460 + ldr r1, [r0] + ldr r2, _080F8F04 @ =0x000008f5 + adds r0, r4, r2 + ldrb r0, [r0] + lsls r0, 5 + adds r1, r0 + ldrh r0, [r1, 0x14] + movs r1, 0xF0 + bl sub_80FD610 + lsls r0, 24 + cmp r0, 0 + bne _080F8F08 + movs r0, 0x9 + strh r0, [r4, 0x4] + movs r0, 0x1 + b _080F8F0A + .align 2, 0 +_080F8EFC: .4byte gUnknown_3005450 +_080F8F00: .4byte gUnknown_3007460 +_080F8F04: .4byte 0x000008f5 +_080F8F08: + movs r0, 0 +_080F8F0A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80F8ECC + + thumb_func_start sub_80F8F10 +sub_80F8F10: @ 80F8F10 + push {lr} + ldr r0, _080F8F34 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080F8F2E + ldr r0, _080F8F38 @ =sub_80F893C + movs r1, 0x1 + bl sub_807741C + ldr r1, _080F8F3C @ =gUnknown_3005450 + adds r1, 0x67 + strb r0, [r1] +_080F8F2E: + pop {r0} + bx r0 + .align 2, 0 +_080F8F34: .4byte gUnknown_203ADFA +_080F8F38: .4byte sub_80F893C +_080F8F3C: .4byte gUnknown_3005450 + thumb_func_end sub_80F8F10 + + thumb_func_start sub_80F8F40 +sub_80F8F40: @ 80F8F40 + push {lr} + ldr r0, _080F8F50 @ =gUnknown_3005E10 + ldrb r0, [r0] + cmp r0, 0 + bne _080F8F54 + movs r0, 0 + b _080F8F56 + .align 2, 0 +_080F8F50: .4byte gUnknown_3005E10 +_080F8F54: + movs r0, 0x1 +_080F8F56: + pop {r1} + bx r1 + thumb_func_end sub_80F8F40 + + thumb_func_start sub_80F8F5C +sub_80F8F5C: @ 80F8F5C + ldr r1, _080F8F70 @ =gUnknown_3005450 + movs r0, 0x4 + strh r0, [r1, 0x4] + ldr r0, _080F8F74 @ =gUnknown_3005E10 + ldrb r0, [r0] + ldr r2, _080F8F78 @ =0x0000099f + adds r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080F8F70: .4byte gUnknown_3005450 +_080F8F74: .4byte gUnknown_3005E10 +_080F8F78: .4byte 0x0000099f + thumb_func_end sub_80F8F5C + + thumb_func_start sub_80F8F7C +sub_80F8F7C: @ 80F8F7C + push {lr} + adds r1, r0, 0 + ldr r2, _080F8F94 @ =gUnknown_3005450 + ldrh r0, [r2, 0x4] + cmp r0, 0x11 + beq _080F8F8C + cmp r1, 0 + beq _080F8F98 +_080F8F8C: + movs r0, 0x12 + strh r0, [r2, 0x4] + movs r0, 0x1 + b _080F8F9A + .align 2, 0 +_080F8F94: .4byte gUnknown_3005450 +_080F8F98: + movs r0, 0 +_080F8F9A: + pop {r1} + bx r1 + thumb_func_end sub_80F8F7C + + thumb_func_start sub_80F8FA0 +sub_80F8FA0: @ 80F8FA0 + ldr r1, _080F8FA8 @ =gUnknown_3005450 + movs r0, 0xE + strh r0, [r1, 0x4] + bx lr + .align 2, 0 +_080F8FA8: .4byte gUnknown_3005450 + thumb_func_end sub_80F8FA0 + + thumb_func_start sub_80F8FAC +sub_80F8FAC: @ 80F8FAC + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0 + b _080F8FBE +_080F8FB6: + lsrs r1, 1 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_080F8FBE: + cmp r2, 0x3 + bhi _080F8FD0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F8FB6 + adds r0, r2, 0 + bl rfu_UNI_readySendData +_080F8FD0: + pop {r0} + bx r0 + thumb_func_end sub_80F8FAC + + thumb_func_start sub_80F8FD4 +sub_80F8FD4: @ 80F8FD4 + push {r4-r7,lr} + sub sp, 0x4 + movs r2, 0 + ldr r7, _080F9028 @ =gUnknown_3003ED0 + ldr r0, _080F902C @ =gUnknown_3005450 + adds r6, r7, 0 + ldr r1, _080F9030 @ =0x0000093f + adds r5, r0, r1 +_080F8FE4: + movs r3, 0 + lsls r0, r2, 3 + lsls r1, r2, 4 + adds r4, r2, 0x1 + subs r0, r2 + lsls r0, 1 + adds r2, r0, r5 + adds r1, r6 +_080F8FF4: + ldrh r0, [r1] + lsrs r0, 8 + strb r0, [r2, 0x1] + ldrh r0, [r1] + strb r0, [r2] + adds r2, 0x2 + adds r1, 0x2 + adds r3, 0x1 + cmp r3, 0x6 + ble _080F8FF4 + adds r2, r4, 0 + cmp r2, 0x4 + ble _080F8FE4 + movs r0, 0 + mov r1, sp + strh r0, [r1] + ldr r2, _080F9034 @ =0x01000028 + mov r0, sp + adds r1, r7, 0 + bl CpuSet + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9028: .4byte gUnknown_3003ED0 +_080F902C: .4byte gUnknown_3005450 +_080F9030: .4byte 0x0000093f +_080F9034: .4byte 0x01000028 + thumb_func_end sub_80F8FD4 + + thumb_func_start sub_80F9038 +sub_80F9038: @ 80F9038 + push {lr} + ldr r3, _080F9064 @ =gUnknown_3003F50 + ldr r2, _080F9068 @ =gUnknown_3003ED0 + movs r1, 0x6 +_080F9040: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080F9040 + ldr r1, _080F9064 @ =gUnknown_3003F50 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0xC +_080F9056: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _080F9056 + pop {r0} + bx r0 + .align 2, 0 +_080F9064: .4byte gUnknown_3003F50 +_080F9068: .4byte gUnknown_3003ED0 + thumb_func_end sub_80F9038 + + thumb_func_start sub_80F906C +sub_80F906C: @ 80F906C + push {r4,r5,lr} + ldr r4, _080F90CC @ =gUnknown_3005450 + ldr r0, _080F90D0 @ =0x000008f4 + adds r5, r4, r0 + ldrb r0, [r5] + cmp r0, 0 + beq _080F909E + ldr r1, _080F90D4 @ =0x000008d4 + adds r0, r4, r1 + adds r1, r4, 0 + adds r1, 0x4C + bl sub_80FC888 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080F90D8 @ =0x000008f2 + adds r0, r4, r1 + ldrb r0, [r0] + adds r1, r0, 0 + cmp r1, 0 + bne _080F909A + ldrb r0, [r5] + strb r1, [r5] +_080F909A: + cmp r2, 0 + bne _080F90C4 +_080F909E: + ldr r5, _080F90CC @ =gUnknown_3005450 + ldr r1, _080F90D0 @ =0x000008f4 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080F90C4 + movs r1, 0xD4 + lsls r1, 3 + adds r0, r5, r1 + adds r4, r5, 0 + adds r4, 0x4C + adds r1, r4, 0 + bl sub_80FC79C + ldr r1, _080F90D4 @ =0x000008d4 + adds r0, r5, r1 + adds r1, r4, 0 + bl sub_80FC828 +_080F90C4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F90CC: .4byte gUnknown_3005450 +_080F90D0: .4byte 0x000008f4 +_080F90D4: .4byte 0x000008d4 +_080F90D8: .4byte 0x000008f2 + thumb_func_end sub_80F906C + + thumb_func_start sub_80F90DC +sub_80F90DC: @ 80F90DC + push {r4,lr} + ldr r0, _080F90EC @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + cmp r0, 0 + bne _080F90F0 +_080F90E8: + movs r0, 0 + b _080F9110 + .align 2, 0 +_080F90EC: .4byte gUnknown_3007460 +_080F90F0: + movs r3, 0 + ldr r4, _080F9118 @ =gUnknown_3003ED0 +_080F90F4: + movs r2, 0 + lsls r0, r3, 4 + adds r1, r0, r4 +_080F90FA: + ldrh r0, [r1] + cmp r0, 0 + bne _080F90E8 + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x6 + ble _080F90FA + adds r3, 0x1 + cmp r3, 0x4 + ble _080F90F4 + movs r0, 0x1 +_080F9110: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F9118: .4byte gUnknown_3003ED0 + thumb_func_end sub_80F90DC + + thumb_func_start sub_80F911C +sub_80F911C: @ 80F911C + push {r4-r6,lr} + ldr r6, _080F9138 @ =gUnknown_3005450 + ldrh r0, [r6, 0x4] + cmp r0, 0x13 + bhi _080F913C + bl rfu_REQ_recvData + bl rfu_waitREQComplete + movs r0, 0 + bl sub_80FD3F0 + b _080F91F6 + .align 2, 0 +_080F9138: .4byte gUnknown_3005450 +_080F913C: + ldr r0, _080F9198 @ =0x00000993 + adds r1, r6, r0 + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r0, _080F919C @ =0x0000099a + adds r1, r6, r0 + ldr r0, _080F91A0 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r1] + ldrb r0, [r0, 0x2] + ands r0, r1 + cmp r0, r1 + bne _080F91F6 + cmp r0, 0 + beq _080F91F6 + ldr r1, _080F91A4 @ =0x00000994 + adds r0, r6, r1 + ldrb r0, [r0] + adds r5, r0, 0 + cmp r5, 0 + bne _080F91EC + ldr r0, _080F91A8 @ =0x0000099b + adds r4, r6, r0 + ldrb r0, [r4] + cmp r0, 0 + beq _080F91CC + bl sub_80FBCF8 + strb r5, [r4] + ldr r1, _080F91AC @ =0x0000099c + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080F91B0 + movs r4, 0x80 + lsls r4, 8 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_80FB9E4 + adds r0, r4, 0 + bl sub_80FB0E8 + b _080F91F6 + .align 2, 0 +_080F9198: .4byte 0x00000993 +_080F919C: .4byte 0x0000099a +_080F91A0: .4byte gUnknown_3007460 +_080F91A4: .4byte 0x00000994 +_080F91A8: .4byte 0x0000099b +_080F91AC: .4byte 0x0000099c +_080F91B0: + ldr r0, _080F91C4 @ =gUnknown_3005E10 + ldrb r4, [r0] + cmp r4, 0 + bne _080F91CC + bl sub_80F8DC0 + ldr r0, _080F91C8 @ =gUnknown_3003F64 + strb r4, [r0] + b _080F91F6 + .align 2, 0 +_080F91C4: .4byte gUnknown_3005E10 +_080F91C8: .4byte gUnknown_3003F64 +_080F91CC: + bl sub_80F8FD4 + ldr r0, _080F91E4 @ =gUnknown_3005450 + ldr r1, _080F91E8 @ =0x00000992 + adds r0, r1 + ldrb r0, [r0] + bl rfu_UNI_readySendData + movs r0, 0x1 + bl sub_80FD3F0 + b _080F91F0 + .align 2, 0 +_080F91E4: .4byte gUnknown_3005450 +_080F91E8: .4byte 0x00000992 +_080F91EC: + bl rfu_REQ_PARENT_resumeRetransmitAndChange +_080F91F0: + ldr r1, _080F9200 @ =gUnknown_3005450 + movs r0, 0x1 + strb r0, [r1, 0xE] +_080F91F6: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080F9200: .4byte gUnknown_3005450 + thumb_func_end sub_80F911C + + thumb_func_start sub_80F9204 +sub_80F9204: @ 80F9204 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _080F92E4 @ =gUnknown_3005450 + ldrh r1, [r0, 0x4] + adds r6, r0, 0 + cmp r1, 0x13 + bhi _080F921C + b _080F947E +_080F921C: + ldrb r0, [r6, 0xE] + cmp r0, 0x1 + beq _080F9224 + b _080F947E +_080F9224: + bl rfu_waitREQComplete + ldr r0, _080F92E8 @ =0x00000993 + adds r2, r6, r0 + ldrb r0, [r2] + cmp r0, 0 + bne _080F9244 + adds r1, r6, 0 + adds r1, 0xEE +_080F9236: + ldrb r0, [r1] + cmp r0, 0 + beq _080F923E + b _080F94A4 +_080F923E: + ldrb r0, [r2] + cmp r0, 0 + beq _080F9236 +_080F9244: + bl rfu_REQ_recvData + bl rfu_waitREQComplete + ldr r2, _080F92EC @ =gUnknown_3005E10 + ldr r4, _080F92E4 @ =gUnknown_3005450 + ldr r1, _080F92F0 @ =0x0000099a + adds r0, r4, r1 + ldrb r1, [r2, 0x3] + ldrb r0, [r0] + ands r1, r0 + cmp r1, r0 + beq _080F9260 + b _080F9468 +_080F9260: + ldr r6, _080F92F4 @ =0x00000994 + adds r1, r4, r6 + ldrb r0, [r1] + movs r0, 0 + strb r0, [r1] + ldr r1, _080F92F8 @ =gUnknown_203AC08 + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + ldrb r7, [r2] + movs r5, 0 +_080F9276: + movs r0, 0x1 + ands r0, r7 + lsrs r1, r7, 1 + str r1, [sp, 0x4] + adds r2, r5, 0x1 + str r2, [sp] + cmp r0, 0 + bne _080F9288 + b _080F9388 +_080F9288: + ldr r1, _080F92E4 @ =gUnknown_3005450 + lsls r2, r5, 3 + subs r0, r2, r5 + lsls r4, r0, 1 + adds r0, r1, 0 + adds r0, 0x15 + adds r0, r4, r0 + ldrb r0, [r0] + adds r6, r1, 0 + adds r3, r2, 0 + lsls r1, r5, 24 + mov r10, r1 + cmp r0, 0 + beq _080F9380 + ldr r2, _080F92FC @ =0x000009a6 + adds r0, r6, r2 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _080F9304 + adds r0, r6, 0 + adds r0, 0x14 + adds r0, r4, r0 + ldrb r2, [r0] + lsrs r2, 5 + ldrb r0, [r1] + adds r0, 0x1 + movs r1, 0x7 + ands r0, r1 + cmp r2, r0 + beq _080F9304 + ldr r0, _080F9300 @ =0x000009a2 + adds r1, r6, r0 + adds r1, r5, r1 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bls _080F9380 + movs r0, 0x81 + lsls r0, 8 + bl sub_80FB0E8 + b _080F9380 + .align 2, 0 +_080F92E4: .4byte gUnknown_3005450 +_080F92E8: .4byte 0x00000993 +_080F92EC: .4byte gUnknown_3005E10 +_080F92F0: .4byte 0x0000099a +_080F92F4: .4byte 0x00000994 +_080F92F8: .4byte gUnknown_203AC08 +_080F92FC: .4byte 0x000009a6 +_080F9300: .4byte 0x000009a2 +_080F9304: + ldr r2, _080F9444 @ =gUnknown_3005450 + ldr r6, _080F9448 @ =0x000009a6 + adds r1, r2, r6 + adds r1, r5, r1 + subs r3, r5 + lsls r3, 1 + adds r4, r2, 0 + adds r4, 0x14 + adds r2, r3, r4 + ldrb r0, [r2] + lsrs r0, 5 + strb r0, [r1] + ldr r1, _080F9444 @ =gUnknown_3005450 + subs r6, 0x4 + adds r0, r1, r6 + adds r0, r5, r0 + movs r1, 0 + strb r1, [r0] + ldrb r1, [r2] + movs r0, 0x1F + ands r0, r1 + strb r0, [r2] + ldr r2, _080F944C @ =gUnknown_3005DE6 + adds r0, r5, r2 + ldrb r0, [r0] + movs r6, 0 + lsls r1, r5, 24 + mov r10, r1 + lsrs r2, r7, 1 + str r2, [sp, 0x4] + adds r5, 0x1 + str r5, [sp] + ldr r1, _080F9450 @ =gUnknown_3003ED0 + mov r9, r1 + adds r5, r3, 0 + adds r7, r4, 0 + lsls r0, 4 + mov r8, r0 + adds r2, r5, 0x1 + mov r12, r2 +_080F9354: + lsls r1, r6, 1 + mov r0, r8 + adds r4, r1, r0 + add r4, r9 + mov r2, r12 + adds r3, r1, r2 + adds r3, r7 + ldrb r2, [r3] + lsls r2, 8 + adds r1, r5 + adds r1, r7 + ldrb r0, [r1] + orrs r0, r2 + strh r0, [r4] + movs r0, 0 + strb r0, [r3] + strb r0, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x6 + bls _080F9354 +_080F9380: + mov r1, r10 + lsrs r0, r1, 24 + bl rfu_UNI_clearRecvNewDataFlag +_080F9388: + ldr r2, [sp, 0x4] + lsls r0, r2, 16 + lsrs r7, r0, 16 + ldr r6, [sp] + lsls r0, r6, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bhi _080F939A + b _080F9276 +_080F939A: + bl sub_80F9038 + movs r0, 0 + bl sub_80F9868 + bl sub_80FA510 + ldr r4, _080F9444 @ =gUnknown_3005450 + ldr r1, _080F9454 @ =0x0000099d + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080F9476 + ldr r2, _080F9458 @ =0x00000991 + adds r0, r4, r2 + ldrb r2, [r0] + cmp r2, 0 + bne _080F9476 + ldr r0, _080F945C @ =gUnknown_203AC08 + ldrb r1, [r0, 0xE] + strb r2, [r0, 0xE] + ldr r6, _080F9460 @ =0x00000992 + adds r0, r4, r6 + ldrb r1, [r0] + movs r0, 0x3 + bl rfu_clearSlot + movs r5, 0 + adds r7, r4, 0 + adds r7, 0x14 +_080F93D6: + ldr r0, _080F9454 @ =0x0000099d + adds r6, r4, r0 + ldrb r0, [r6] + asrs r0, r5 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F93FA + lsls r1, r5, 24 + lsrs r1, 24 + lsls r2, r5, 3 + subs r2, r5 + lsls r2, 1 + adds r2, r7 + movs r0, 0x10 + movs r3, 0xE + bl rfu_setRecvBuffer +_080F93FA: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _080F93D6 + subs r4, r6, 0x3 + ldrb r0, [r4] + ldrb r2, [r6] + adds r1, r0, 0 + orrs r1, r2 + bl sub_80F887C + ldrb r1, [r6] + movs r2, 0 + strb r1, [r6, 0x4] + ldrb r0, [r4] + orrs r0, r1 + strb r0, [r4] + strb r2, [r6] + ldrb r0, [r4] + adds r1, r6, 0 + subs r1, 0x5E + movs r2, 0x46 + bl rfu_UNI_setSendData + ldrb r0, [r4] + bl sub_80F886C + adds r1, r6, 0 + subs r1, 0xB + strb r0, [r1] + ldr r0, _080F9464 @ =sub_80FAA94 + movs r1, 0 + bl sub_807741C + b _080F9476 + .align 2, 0 +_080F9444: .4byte gUnknown_3005450 +_080F9448: .4byte 0x000009a6 +_080F944C: .4byte gUnknown_3005DE6 +_080F9450: .4byte gUnknown_3003ED0 +_080F9454: .4byte 0x0000099d +_080F9458: .4byte 0x00000991 +_080F945C: .4byte gUnknown_203AC08 +_080F9460: .4byte 0x00000992 +_080F9464: .4byte sub_80FAA94 +_080F9468: + ldr r2, _080F9498 @ =0x00000994 + adds r1, r4, r2 + ldrb r0, [r1] + movs r2, 0 + movs r0, 0x1 + strb r0, [r1] + strb r2, [r4, 0xE] +_080F9476: + ldr r1, _080F949C @ =gUnknown_3005450 + movs r0, 0 + strb r0, [r1, 0xE] + adds r6, r1, 0 +_080F947E: + ldr r1, _080F9498 @ =0x00000994 + adds r0, r6, r1 + ldrb r0, [r0] + adds r1, r0, 0 + ldr r0, _080F94A0 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _080F94A8 + movs r0, 0x1 + ands r0, r1 + b _080F94AA + .align 2, 0 +_080F9498: .4byte 0x00000994 +_080F949C: .4byte gUnknown_3005450 +_080F94A0: .4byte gUnknown_3007460 +_080F94A4: + movs r0, 0 + b _080F94AA +_080F94A8: + movs r0, 0 +_080F94AA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80F9204 + + thumb_func_start sub_80F94BC +sub_80F94BC: @ 80F94BC + push {r4,r5,lr} + adds r4, r0, 0 + adds r2, r1, 0 + ldrh r1, [r4] + cmp r1, 0 + beq _080F9500 + ldr r0, _080F94FC @ =gUnknown_3005450 + movs r5, 0x81 + lsls r5, 1 + adds r3, r0, r5 + ldrb r0, [r3] + lsls r0, 5 + orrs r0, r1 + strh r0, [r4] + ldrb r0, [r3] + adds r0, 0x1 + movs r1, 0x7 + ands r0, r1 + strb r0, [r3] + adds r3, r4, 0 + movs r4, 0x6 +_080F94E6: + ldrh r1, [r3] + lsrs r0, r1, 8 + strb r0, [r2, 0x1] + strb r1, [r2] + adds r2, 0x2 + adds r3, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080F94E6 + b _080F950E + .align 2, 0 +_080F94FC: .4byte gUnknown_3005450 +_080F9500: + movs r1, 0 + adds r0, r2, 0 + adds r0, 0xD +_080F9506: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r2 + bge _080F9506 +_080F950E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F94BC + + thumb_func_start sub_80F9514 +sub_80F9514: @ 80F9514 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x58 + ldr r0, _080F9638 @ =gUnknown_3005574 + mov r1, sp + bl sub_80FC6E8 + movs r1, 0 + ldr r0, _080F963C @ =gUnknown_3003ED0 + mov r12, r0 +_080F952A: + movs r4, 0 + lsls r0, r1, 3 + adds r2, r1, 0x1 + mov r8, r2 + lsls r6, r1, 4 + subs r0, r1 + lsls r5, r0, 1 +_080F9538: + lsls r1, r4, 1 + adds r3, r1, r6 + add r3, r12 + adds r1, r5, r1 + adds r0, r1, 0x1 + add r0, sp + ldrb r2, [r0] + lsls r2, 8 + mov r7, sp + adds r0, r7, r1 + ldrb r0, [r0] + orrs r0, r2 + strh r0, [r3] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bls _080F9538 + mov r1, r8 + lsls r0, r1, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _080F952A + movs r0, 0 + bl sub_80F9868 + ldr r0, _080F9640 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x2] + cmp r0, 0 + bne _080F95E4 + ldr r0, _080F9644 @ =gUnknown_3005450 + ldr r2, _080F9648 @ =0x0000099c + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080F95E4 + ldr r0, _080F964C @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + ldrb r0, [r0, 0x3] + orrs r0, r1 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080F95B0 + cmp r0, 0x6 + beq _080F95B0 + cmp r0, 0x9 + beq _080F95B0 + movs r1, 0x90 + lsls r1, 8 + movs r0, 0x2 + bl sub_80FB9E4 +_080F95B0: + bl rfu_clearAllSlot + ldr r1, _080F9650 @ =gUnknown_3003F64 + movs r0, 0 + strb r0, [r1] + ldr r0, _080F9644 @ =gUnknown_3005450 + movs r5, 0 + str r5, [r0] + ldr r7, _080F9648 @ =0x0000099c + adds r6, r0, r7 + ldrb r0, [r6] + cmp r0, 0x1 + bne _080F95DC + movs r4, 0x90 + lsls r4, 8 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_80FB9E4 + adds r0, r4, 0 + bl sub_80FB0E8 +_080F95DC: + ldr r0, _080F9640 @ =gUnknown_3005E10 + strb r5, [r0, 0x5] + strb r5, [r0, 0x4] + strb r5, [r6] +_080F95E4: + ldr r6, _080F9644 @ =gUnknown_3005450 + ldr r0, _080F9654 @ =0x00000988 + adds r2, r6, r0 + ldrb r0, [r2] + cmp r0, 0 + beq _080F9628 + ldrb r0, [r2] + subs r0, 0x1 + ldrb r1, [r2] + strb r0, [r2] + bl sub_80FA510 + ldr r5, _080F9658 @ =gUnknown_3003F50 + add r4, sp, 0x48 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80F94BC + movs r1, 0xD4 + lsls r1, 3 + adds r0, r6, r1 + adds r1, r4, 0 + bl sub_80FC63C + movs r1, 0 + movs r2, 0 +_080F9618: + lsls r0, r1, 1 + adds r0, r5 + strh r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x6 + bls _080F9618 +_080F9628: + bl sub_80F90DC + add sp, 0x58 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F9638: .4byte gUnknown_3005574 +_080F963C: .4byte gUnknown_3003ED0 +_080F9640: .4byte gUnknown_3005E10 +_080F9644: .4byte gUnknown_3005450 +_080F9648: .4byte 0x0000099c +_080F964C: .4byte gUnknown_3007460 +_080F9650: .4byte gUnknown_3003F64 +_080F9654: .4byte 0x00000988 +_080F9658: .4byte gUnknown_3003F50 + thumb_func_end sub_80F9514 + + thumb_func_start sub_80F965C +sub_80F965C: @ 80F965C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080F9708 @ =gUnknown_3005450 + ldr r2, [r0, 0x70] + mov r10, r2 + movs r5, 0 + adds r2, r0, 0 + adds r2, 0x6E + ldrh r3, [r2] + cmp r5, r3 + bge _080F96F8 + mov r9, r0 + ldr r0, _080F970C @ =gUnknown_3002008 + mov r8, r0 +_080F967E: + movs r0, 0x1 + ands r0, r1 + lsrs r7, r1, 1 + adds r6, r5, 0x1 + cmp r0, 0 + bne _080F96EC + ldr r1, _080F9710 @ =0xffff8900 + adds r0, r1, 0 + adds r1, r5, 0 + orrs r1, r0 + mov r2, r8 + strh r1, [r2] + movs r4, 0 + lsls r0, r5, 1 + ldr r3, _080F9714 @ =gUnknown_3001FF8 + mov r12, r3 + adds r0, r5 + lsls r0, 2 + mov r1, r10 + adds r2, r0, r1 + mov r3, r8 + adds r3, 0x2 +_080F96AA: + ldrb r1, [r2, 0x1] + lsls r1, 8 + ldrb r0, [r2] + orrs r0, r1 + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x6 + ble _080F96AA + movs r4, 0 + ldr r2, _080F970C @ =gUnknown_3002008 + ldr r1, _080F9714 @ =gUnknown_3001FF8 +_080F96C4: + ldrh r0, [r2] + lsrs r0, 8 + strb r0, [r1, 0x1] + ldrh r0, [r2] + strb r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + adds r4, 0x1 + cmp r4, 0x6 + ble _080F96C4 + ldr r0, _080F9718 @ =gUnknown_3005AF0 + mov r1, r12 + bl sub_80FC63C + movs r1, 0x1 + lsls r1, r5 + mov r2, r9 + ldr r0, [r2, 0x78] + orrs r0, r1 + str r0, [r2, 0x78] +_080F96EC: + adds r1, r7, 0 + adds r5, r6, 0 + ldr r3, _080F971C @ =gUnknown_30054BE + ldrh r3, [r3] + cmp r5, r3 + blt _080F967E +_080F96F8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9708: .4byte gUnknown_3005450 +_080F970C: .4byte gUnknown_3002008 +_080F9710: .4byte 0xffff8900 +_080F9714: .4byte gUnknown_3001FF8 +_080F9718: .4byte gUnknown_3005AF0 +_080F971C: .4byte gUnknown_30054BE + thumb_func_end sub_80F965C + + thumb_func_start sub_80F9720 +sub_80F9720: @ 80F9720 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _080F973C @ =gUnknown_3005450 + ldrb r2, [r0, 0xC] + cmp r2, 0x1 + bne _080F9740 + cmp r1, 0 + beq _080F9740 + adds r0, 0x61 + adds r0, r1, r0 + strb r2, [r0] + b _080F9748 + .align 2, 0 +_080F973C: .4byte gUnknown_3005450 +_080F9740: + adds r0, 0x5C + adds r0, r1, r0 + movs r1, 0x1 + strb r1, [r0] +_080F9748: + pop {r0} + bx r0 + thumb_func_end sub_80F9720 + + thumb_func_start sub_80F974C +sub_80F974C: @ 80F974C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080F976C @ =gUnknown_3005450 + adds r1, r3, 0 + adds r1, 0x5C + adds r1, r0, r1 + movs r2, 0 + strb r2, [r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + adds r1, 0x92 + strb r2, [r1] + bx lr + .align 2, 0 +_080F976C: .4byte gUnknown_3005450 + thumb_func_end sub_80F974C + + thumb_func_start sub_80F9770 +sub_80F9770: @ 80F9770 + push {r4,r5,lr} + adds r3, r0, 0 + ldr r0, _080F9784 @ =gUnknown_3005450 + ldrb r1, [r0, 0xC] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080F9788 + movs r0, 0 + b _080F97AA + .align 2, 0 +_080F9784: .4byte gUnknown_3005450 +_080F9788: + movs r2, 0 + ldr r0, _080F97B0 @ =0x00000996 + adds r4, r5, r0 +_080F978E: + adds r1, r2, r4 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080F978E + ldr r1, _080F97B4 @ =0x000008f6 + adds r0, r5, r1 + ldrb r0, [r0] + adds r0, r3 + ldrb r0, [r0] +_080F97AA: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080F97B0: .4byte 0x00000996 +_080F97B4: .4byte 0x000008f6 + thumb_func_end sub_80F9770 + + thumb_func_start sub_80F97B8 +sub_80F97B8: @ 80F97B8 + push {lr} + ldr r0, _080F97F0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _080F97EA + ldr r3, _080F97F4 @ =gUnknown_3005028 + ldrh r2, [r3] + cmp r2, 0 + beq _080F97EA + ldr r0, _080F97F8 @ =gUnknown_30030E4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080F97EA + ldr r1, _080F97FC @ =gUnknown_3001188 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldrb r0, [r1] + lsls r0, 8 + orrs r0, r2 + strh r0, [r3] + movs r0, 0xBE + lsls r0, 8 + bl sub_80F9D04 +_080F97EA: + pop {r0} + bx r0 + .align 2, 0 +_080F97F0: .4byte gUnknown_3003F64 +_080F97F4: .4byte gUnknown_3005028 +_080F97F8: .4byte gUnknown_30030E4 +_080F97FC: .4byte gUnknown_3001188 + thumb_func_end sub_80F97B8 + + thumb_func_start sub_80F9800 +sub_80F9800: @ 80F9800 + ldr r0, _080F9804 @ =gUnknown_3005440 + bx lr + .align 2, 0 +_080F9804: .4byte gUnknown_3005440 + thumb_func_end sub_80F9800 + + thumb_func_start sub_80F9808 +sub_80F9808: @ 80F9808 + push {lr} + movs r2, 0 + ldr r0, _080F9820 @ =gUnknown_3005450 + ldr r1, [r0] + ldr r0, _080F9824 @ =sub_80F97B8 + cmp r1, r0 + bne _080F9818 + movs r2, 0x1 +_080F9818: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_080F9820: .4byte gUnknown_3005450 +_080F9824: .4byte sub_80F97B8 + thumb_func_end sub_80F9808 + + thumb_func_start sub_80F9828 +sub_80F9828: @ 80F9828 + push {r4,lr} + ldr r4, _080F9848 @ =gUnknown_3005450 + ldr r0, [r4] + cmp r0, 0 + beq _080F983E + ldr r0, _080F984C @ =gUnknown_843ED94 + ldr r1, _080F9850 @ =0x000005c1 + ldr r2, _080F9854 @ =gUnknown_843EDC4 + movs r3, 0x1 + bl AGBAssert +_080F983E: + ldr r0, _080F9858 @ =sub_80F97B8 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F9848: .4byte gUnknown_3005450 +_080F984C: .4byte gUnknown_843ED94 +_080F9850: .4byte 0x000005c1 +_080F9854: .4byte gUnknown_843EDC4 +_080F9858: .4byte sub_80F97B8 + thumb_func_end sub_80F9828 + + thumb_func_start sub_80F985C +sub_80F985C: @ 80F985C + ldr r1, _080F9864 @ =gUnknown_3005450 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_080F9864: .4byte gUnknown_3005450 + thumb_func_end sub_80F985C + + thumb_func_start sub_80F9868 +sub_80F9868: @ 80F9868 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + mov r8, r0 +_080F9876: + mov r1, r8 + lsls r5, r1, 4 + ldr r2, _080F98B4 @ =gUnknown_3003ED0 + adds r0, r5, r2 + ldrh r7, [r0] + movs r3, 0xFF + lsls r3, 8 + adds r0, r3, 0 + adds r1, r0, 0 + ands r1, r7 + movs r0, 0x88 + lsls r0, 8 + adds r2, r5, 0 + cmp r1, r0 + beq _080F9954 + cmp r1, r0 + bgt _080F98CA + movs r0, 0xCC + lsls r0, 7 + cmp r1, r0 + bne _080F98A2 + b _080F9AD0 +_080F98A2: + cmp r1, r0 + bgt _080F98B8 + movs r0, 0xBE + lsls r0, 7 + cmp r1, r0 + bne _080F98B0 + b _080F9AC0 +_080F98B0: + b _080F9BF4 + .align 2, 0 +_080F98B4: .4byte gUnknown_3003ED0 +_080F98B8: + movs r0, 0xEE + lsls r0, 7 + cmp r1, r0 + beq _080F9914 + movs r0, 0xF0 + lsls r0, 7 + cmp r1, r0 + beq _080F9902 + b _080F9BF4 +_080F98CA: + movs r0, 0xBE + lsls r0, 8 + cmp r1, r0 + bne _080F98D4 + b _080F9BE4 +_080F98D4: + cmp r1, r0 + bgt _080F98EC + movs r0, 0x89 + lsls r0, 8 + cmp r1, r0 + beq _080F99B8 + movs r0, 0xA1 + lsls r0, 8 + cmp r1, r0 + bne _080F98EA + b _080F9A9C +_080F98EA: + b _080F9BF4 +_080F98EC: + movs r0, 0xED + lsls r0, 8 + cmp r1, r0 + bne _080F98F6 + b _080F9B00 +_080F98F6: + movs r0, 0xEE + lsls r0, 8 + cmp r1, r0 + bne _080F9900 + b _080F9BA0 +_080F9900: + b _080F9BF4 +_080F9902: + ldr r4, _080F993C @ =gUnknown_3005450 + ldrb r0, [r4, 0xC] + cmp r0, 0 + bne _080F9914 + ldr r0, _080F9940 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _080F9914 + b _080F9C40 +_080F9914: + ldr r0, _080F9944 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + mov r6, r8 + adds r6, 0x1 + cmp r0, 0 + beq _080F9924 + b _080F9BF8 +_080F9924: + ldr r1, _080F9948 @ =gUnknown_3003ED2 + adds r0, r2, r1 + ldrh r0, [r0] + ldr r3, _080F993C @ =gUnknown_3005450 + strb r0, [r3, 0xD] + ldr r4, _080F994C @ =gUnknown_3003ED4 + adds r0, r2, r4 + bl sub_80F9770 + ldr r1, _080F9950 @ =gUnknown_3005DD6 + strb r0, [r1] + b _080F9BF8 + .align 2, 0 +_080F993C: .4byte gUnknown_3005450 +_080F9940: .4byte gUnknown_3003F64 +_080F9944: .4byte gUnknown_3007460 +_080F9948: .4byte gUnknown_3003ED2 +_080F994C: .4byte gUnknown_3003ED4 +_080F9950: .4byte gUnknown_3005DD6 +_080F9954: + ldr r2, _080F99AC @ =gUnknown_3005450 + mov r9, r2 + mov r3, r8 + lsls r0, r3, 2 + add r0, r8 + lsls r7, r0, 2 + adds r3, r7, r2 + movs r4, 0x92 + adds r4, r3 + mov r12, r4 + ldrb r4, [r4] + mov r6, r8 + adds r6, 0x1 + cmp r4, 0 + beq _080F9974 + b _080F9BF8 +_080F9974: + adds r0, r3, 0 + adds r0, 0x80 + movs r2, 0 + strh r4, [r0] + ldr r1, _080F99B0 @ =gUnknown_3003ED2 + adds r0, r5, r1 + ldrh r0, [r0] + adds r1, r3, 0 + adds r1, 0x82 + strh r0, [r1] + ldr r1, _080F99B4 @ =gUnknown_3003ED4 + adds r0, r5, r1 + ldrh r1, [r0] + adds r0, r3, 0 + adds r0, 0x91 + strb r1, [r0] + mov r0, r9 + adds r0, 0x88 + adds r0, r7, r0 + str r4, [r0] + movs r0, 0x1 + mov r3, r12 + strb r0, [r3] + mov r0, r9 + adds r0, 0x5C + add r0, r8 + strb r2, [r0] + b _080F9BF8 + .align 2, 0 +_080F99AC: .4byte gUnknown_3005450 +_080F99B0: .4byte gUnknown_3003ED2 +_080F99B4: .4byte gUnknown_3003ED4 +_080F99B8: + ldr r4, _080F9A88 @ =gUnknown_3005450 + mov r9, r4 + mov r0, r8 + lsls r1, r0, 2 + adds r0, r1, r0 + lsls r4, r0, 2 + mov r3, r9 + adds r2, r4, r3 + adds r0, r2, 0 + adds r0, 0x92 + ldrb r3, [r0] + mov r10, r1 + mov r6, r8 + adds r6, 0x1 + cmp r3, 0x1 + beq _080F99DA + b _080F9BF8 +_080F99DA: + movs r0, 0xFF + ands r0, r7 + adds r2, 0x80 + strh r0, [r2] + mov r1, r9 + adds r1, 0x88 + adds r1, r4, r1 + lsls r3, r0 + ldr r0, [r1] + orrs r0, r3 + str r0, [r1] + movs r4, 0 + ldr r0, _080F9A8C @ =gUnknown_2022118 + mov r9, r0 + mov r12, r2 + mov r1, r8 + lsls r7, r1, 8 + adds r3, r5, 0 +_080F99FE: + mov r2, r12 + ldrh r0, [r2] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + adds r1, r4 + lsls r1, 1 + adds r1, r7 + add r1, r9 + adds r2, r4, 0x1 + lsls r0, r2, 1 + adds r0, r3 + ldr r4, _080F9A90 @ =gUnknown_3003ED0 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, 16 + lsrs r4, r2, 16 + cmp r4, 0x5 + bls _080F99FE + ldr r4, _080F9A88 @ =gUnknown_3005450 + mov r0, r10 + add r0, r8 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x88 + adds r1, r0, r1 + adds r2, r0, r4 + adds r0, r2, 0 + adds r0, 0x82 + ldrh r0, [r0] + lsls r0, 2 + ldr r3, _080F9A94 @ =gUnknown_843EBD4 + adds r0, r3 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + beq _080F9A4C + b _080F9BF8 +_080F9A4C: + adds r1, r2, 0 + adds r1, 0x92 + movs r0, 0x2 + strb r0, [r1] + mov r1, r8 + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_80F9720 + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + beq _080F9A6E + b _080F9BF8 +_080F9A6E: + ldr r0, _080F9A98 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _080F9A78 + b _080F9BF8 +_080F9A78: + ldrb r0, [r4, 0xC] + cmp r0, 0 + beq _080F9A80 + b _080F9BF8 +_080F9A80: + ldr r0, _080F9A8C @ =gUnknown_2022118 + bl sub_80FAA58 + b _080F9BF8 + .align 2, 0 +_080F9A88: .4byte gUnknown_3005450 +_080F9A8C: .4byte gUnknown_2022118 +_080F9A90: .4byte gUnknown_3003ED0 +_080F9A94: .4byte gUnknown_843EBD4 +_080F9A98: .4byte gUnknown_3003F64 +_080F9A9C: + ldr r2, _080F9AB8 @ =gUnknown_843EC64 + ldr r3, _080F9ABC @ =gUnknown_3003ED2 + adds r0, r5, r3 + ldrh r1, [r0] + lsls r1, 3 + adds r0, r1, r2 + ldr r0, [r0] + adds r2, 0x4 + adds r1, r2 + ldrh r1, [r1] + bl sub_80F9E60 + b _080F9BF4 + .align 2, 0 +_080F9AB8: .4byte gUnknown_843EC64 +_080F9ABC: .4byte gUnknown_3003ED2 +_080F9AC0: + ldr r1, _080F9ACC @ =gUnknown_3005534 + add r1, r8 + movs r0, 0x1 + strb r0, [r1] + b _080F9BF4 + .align 2, 0 +_080F9ACC: .4byte gUnknown_3005534 +_080F9AD0: + ldr r2, _080F9AF8 @ =gUnknown_3005450 + movs r4, 0x80 + lsls r4, 1 + adds r0, r2, r4 + ldr r3, _080F9AFC @ =gUnknown_3003ED2 + adds r1, r5, r3 + ldrh r0, [r0] + mov r6, r8 + adds r6, 0x1 + ldrh r1, [r1] + cmp r0, r1 + beq _080F9AEA + b _080F9BF8 +_080F9AEA: + adds r0, r2, 0 + adds r0, 0xE9 + add r0, r8 + movs r1, 0x1 + strb r1, [r0] + b _080F9BF8 + .align 2, 0 +_080F9AF8: .4byte gUnknown_3005450 +_080F9AFC: .4byte gUnknown_3003ED2 +_080F9B00: + ldr r7, _080F9B4C @ =gUnknown_3005450 + ldrb r2, [r7, 0xC] + cmp r2, 0 + bne _080F9B68 + ldr r3, _080F9B50 @ =gUnknown_3003F64 + ldrb r0, [r3] + mov r6, r8 + adds r6, 0x1 + cmp r0, 0 + beq _080F9BF8 + ldr r0, _080F9B54 @ =gUnknown_3003ED2 + adds r4, r5, r0 + ldrh r1, [r4] + ldr r0, _080F9B58 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + ands r1, r0 + cmp r1, 0 + beq _080F9B38 + strb r2, [r3] + bl sub_80FEB14 + ldr r1, _080F9B5C @ =gUnknown_3003ED4 + adds r0, r5, r1 + ldrh r1, [r0] + ldr r2, _080F9B60 @ =0x0000099c + adds r0, r7, r2 + strb r1, [r0] +_080F9B38: + ldr r0, _080F9B64 @ =gUnknown_3003ED0 + adds r0, 0x6 + adds r0, r5, r0 + ldrh r0, [r0] + strb r0, [r7, 0xD] + ldrh r0, [r4] + bl sub_80FA9D0 + b _080F9BF8 + .align 2, 0 +_080F9B4C: .4byte gUnknown_3005450 +_080F9B50: .4byte gUnknown_3003F64 +_080F9B54: .4byte gUnknown_3003ED2 +_080F9B58: .4byte gUnknown_3007460 +_080F9B5C: .4byte gUnknown_3003ED4 +_080F9B60: .4byte 0x0000099c +_080F9B64: .4byte gUnknown_3003ED0 +_080F9B68: + movs r0, 0xEE + lsls r0, 8 + bl sub_80F9D04 + ldr r1, _080F9B90 @ =gUnknown_3003F50 + ldr r3, _080F9B94 @ =gUnknown_3003ED2 + adds r0, r5, r3 + ldrh r0, [r0] + strh r0, [r1, 0x2] + ldr r4, _080F9B98 @ =gUnknown_3003ED4 + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r1, 0x4] + ldr r0, _080F9B9C @ =gUnknown_3003ED0 + adds r0, 0x6 + adds r0, r5, r0 + ldrh r0, [r0] + strh r0, [r1, 0x6] + b _080F9BF4 + .align 2, 0 +_080F9B90: .4byte gUnknown_3003F50 +_080F9B94: .4byte gUnknown_3003ED2 +_080F9B98: .4byte gUnknown_3003ED4 +_080F9B9C: .4byte gUnknown_3003ED0 +_080F9BA0: + ldr r4, _080F9BD0 @ =gUnknown_3005450 + ldrb r0, [r4, 0xC] + mov r6, r8 + adds r6, 0x1 + cmp r0, 0x1 + bne _080F9C34 + ldr r0, _080F9BD4 @ =0x0000099b + adds r2, r4, r0 + ldr r1, _080F9BD8 @ =gUnknown_3003ED2 + adds r3, r5, r1 + ldrb r1, [r3] + ldrb r0, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _080F9BDC @ =gUnknown_3003ED4 + adds r0, r5, r2 + ldrh r1, [r0] + ldr r2, _080F9BE0 @ =0x0000099c + adds r0, r4, r2 + strb r1, [r0] + ldrh r0, [r3] + bl sub_80FA9D0 + b _080F9BF8 + .align 2, 0 +_080F9BD0: .4byte gUnknown_3005450 +_080F9BD4: .4byte 0x0000099b +_080F9BD8: .4byte gUnknown_3003ED2 +_080F9BDC: .4byte gUnknown_3003ED4 +_080F9BE0: .4byte 0x0000099c +_080F9BE4: + ldr r0, _080F9C24 @ =gUnknown_3003E60 + mov r3, r8 + lsls r1, r3, 1 + adds r1, r0 + ldr r4, _080F9C28 @ =gUnknown_3003ED2 + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r1] +_080F9BF4: + mov r6, r8 + adds r6, 0x1 +_080F9BF8: + ldr r3, _080F9C2C @ =gUnknown_3005450 + ldrb r4, [r3, 0xC] + cmp r4, 0x1 + bne _080F9C34 + adds r0, r3, 0 + adds r0, 0x61 + mov r1, r8 + adds r2, r1, r0 + ldrb r0, [r2] + adds r1, r0, 0 + cmp r1, 0 + beq _080F9C34 + cmp r1, 0x4 + bne _080F9C30 + adds r0, r3, 0 + adds r0, 0x5C + add r0, r8 + movs r1, 0 + strb r4, [r0] + strb r1, [r2] + b _080F9C34 + .align 2, 0 +_080F9C24: .4byte gUnknown_3003E60 +_080F9C28: .4byte gUnknown_3003ED2 +_080F9C2C: .4byte gUnknown_3005450 +_080F9C30: + adds r0, 0x1 + strb r0, [r2] +_080F9C34: + lsls r0, r6, 16 + lsrs r0, 16 + mov r8, r0 + cmp r0, 0x4 + bhi _080F9C40 + b _080F9876 +_080F9C40: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80F9868 + + thumb_func_start sub_80F9C50 +sub_80F9C50: @ 80F9C50 + push {lr} + movs r2, 0 + ldr r0, _080F9C64 @ =gUnknown_3005450 + adds r1, r0, 0 + adds r1, 0x92 +_080F9C5A: + ldrb r0, [r1] + cmp r0, 0 + beq _080F9C68 + movs r0, 0 + b _080F9C72 + .align 2, 0 +_080F9C64: .4byte gUnknown_3005450 +_080F9C68: + adds r1, 0x14 + adds r2, 0x1 + cmp r2, 0x4 + ble _080F9C5A + movs r0, 0x1 +_080F9C72: + pop {r1} + bx r1 + thumb_func_end sub_80F9C50 + + thumb_func_start sub_80F9C78 +sub_80F9C78: @ 80F9C78 + push {r4,lr} + movs r1, 0 + ldr r2, _080F9CA0 @ =gUnknown_3005450 + ldrb r0, [r2, 0xD] + cmp r1, r0 + bge _080F9CAC + adds r4, r0, 0 + adds r3, r2, 0 + adds r3, 0x92 + adds r2, 0x5C +_080F9C8C: + ldrb r0, [r3] + cmp r0, 0x2 + bne _080F9C9A + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080F9CA4 +_080F9C9A: + movs r0, 0 + b _080F9CAE + .align 2, 0 +_080F9CA0: .4byte gUnknown_3005450 +_080F9CA4: + adds r3, 0x14 + adds r1, 0x1 + cmp r1, r4 + blt _080F9C8C +_080F9CAC: + movs r0, 0x1 +_080F9CAE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80F9C78 + + thumb_func_start sub_80F9CB4 +sub_80F9CB4: @ 80F9CB4 + movs r2, 0 + movs r1, 0 + strh r1, [r0] + strh r1, [r0, 0x2] + str r1, [r0, 0x4] + str r1, [r0, 0x8] + strb r2, [r0, 0x10] + strb r2, [r0, 0x11] + strb r2, [r0, 0x12] + bx lr + thumb_func_end sub_80F9CB4 + + thumb_func_start sub_80F9CC8 +sub_80F9CC8: @ 80F9CC8 + push {r4,lr} + movs r2, 0 + movs r1, 0 + ldr r0, _080F9D00 @ =gUnknown_3005450 + adds r3, r0, 0 + adds r3, 0x92 + adds r4, r0, 0 + adds r4, 0x5C +_080F9CD8: + ldrb r0, [r3] + cmp r0, 0x2 + bne _080F9CEE + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080F9CEE + lsls r0, r1 + orrs r2, r0 + lsls r0, r2, 24 + lsrs r2, r0, 24 +_080F9CEE: + adds r3, 0x14 + adds r1, 0x1 + cmp r1, 0x4 + ble _080F9CD8 + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F9D00: .4byte gUnknown_3005450 + thumb_func_end sub_80F9CC8 + + thumb_func_start sub_80F9D04 +sub_80F9D04: @ 80F9D04 + push {r4,r5,lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r5, _080F9D34 @ =gUnknown_3003F50 + strh r1, [r5] + movs r0, 0xF0 + lsls r0, 7 + adds r4, r5, 0 + cmp r1, r0 + beq _080F9D98 + cmp r1, r0 + bgt _080F9D4A + movs r0, 0xBE + lsls r0, 7 + cmp r1, r0 + beq _080F9DE8 + cmp r1, r0 + bgt _080F9D38 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + beq _080F9DFC + b _080F9E22 + .align 2, 0 +_080F9D34: .4byte gUnknown_3003F50 +_080F9D38: + movs r0, 0xCC + lsls r0, 7 + cmp r1, r0 + beq _080F9DE8 + movs r0, 0xEE + lsls r0, 7 + cmp r1, r0 + beq _080F9D98 + b _080F9E22 +_080F9D4A: + movs r0, 0xBE + lsls r0, 8 + cmp r1, r0 + beq _080F9E1C + cmp r1, r0 + bgt _080F9E22 + movs r0, 0x88 + lsls r0, 8 + cmp r1, r0 + beq _080F9D68 + movs r0, 0xA1 + lsls r0, 8 + cmp r1, r0 + beq _080F9D80 + b _080F9E22 +_080F9D68: + ldr r0, _080F9D7C @ =gUnknown_3005450 + adds r1, r0, 0 + adds r1, 0x6E + ldrh r1, [r1] + strh r1, [r5, 0x2] + adds r0, 0x7D + ldrb r0, [r0] + adds r0, 0x80 + strh r0, [r5, 0x4] + b _080F9E22 + .align 2, 0 +_080F9D7C: .4byte gUnknown_3005450 +_080F9D80: + bl sub_80F9C50 + lsls r0, 24 + cmp r0, 0 + beq _080F9E22 + ldr r0, _080F9D94 @ =gUnknown_3005450 + adds r0, 0x5A + ldrb r0, [r0] + b _080F9E20 + .align 2, 0 +_080F9D94: .4byte gUnknown_3005450 +_080F9D98: + ldr r3, _080F9DD4 @ =gUnknown_3005450 + ldr r1, _080F9DD8 @ =0x0000099a + adds r0, r3, r1 + ldr r2, _080F9DDC @ =0x0000099b + adds r1, r3, r2 + ldrb r2, [r0] + ldrb r0, [r1] + eors r0, r2 + ldr r1, _080F9DE0 @ =gUnknown_843EC41 + adds r0, r1 + ldrb r0, [r0] + adds r0, 0x1 + strb r0, [r3, 0xD] + ldrb r0, [r3, 0xD] + strh r0, [r4, 0x2] + adds r2, r4, 0x4 + movs r4, 0 + ldr r0, _080F9DE4 @ =0x00000996 + adds r3, r0 +_080F9DBE: + adds r1, r2, r4 + adds r0, r4, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080F9DBE + b _080F9E22 + .align 2, 0 +_080F9DD4: .4byte gUnknown_3005450 +_080F9DD8: .4byte 0x0000099a +_080F9DDC: .4byte 0x0000099b +_080F9DE0: .4byte gUnknown_843EC41 +_080F9DE4: .4byte 0x00000996 +_080F9DE8: + ldr r0, _080F9DF8 @ =gUnknown_3005450 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r4, 0x2] + b _080F9E22 + .align 2, 0 +_080F9DF8: .4byte gUnknown_3005450 +_080F9DFC: + movs r4, 0 + ldr r3, _080F9E18 @ =gUnknown_3005542 +_080F9E00: + adds r2, r4, 0x1 + lsls r1, r2, 1 + adds r1, r5 + lsls r0, r4, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, 24 + lsrs r4, r2, 24 + cmp r4, 0x5 + bls _080F9E00 + b _080F9E22 + .align 2, 0 +_080F9E18: .4byte gUnknown_3005542 +_080F9E1C: + ldr r0, _080F9E28 @ =gUnknown_3005028 + ldrh r0, [r0] +_080F9E20: + strh r0, [r5, 0x2] +_080F9E22: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F9E28: .4byte gUnknown_3005028 + thumb_func_end sub_80F9D04 + + thumb_func_start sub_80F9E2C +sub_80F9E2C: @ 80F9E2C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080F9E58 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080F9E52 + bl sub_80FBA00 + cmp r0, 0 + bne _080F9E52 + ldr r0, _080F9E5C @ =gUnknown_3005542 + adds r1, r4, 0 + movs r2, 0xC + bl memcpy + movs r0, 0xBC + lsls r0, 6 + bl sub_80F9D04 +_080F9E52: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F9E58: .4byte gUnknown_3003F50 +_080F9E5C: .4byte gUnknown_3005542 + thumb_func_end sub_80F9E2C + + thumb_func_start sub_80F9E60 +sub_80F9E60: @ 80F9E60 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + adds r6, r1, 0 + cmp r6, 0xFC + bls _080F9E7C + ldr r0, _080F9EA8 @ =gUnknown_843ED94 + ldr r1, _080F9EAC @ =0x00000701 + ldr r2, _080F9EB0 @ =gUnknown_843EDD8 + movs r3, 0x1 + bl AGBAssert +_080F9E7C: + ldr r5, _080F9EB4 @ =gUnknown_3005450 + ldr r0, [r5] + cmp r0, 0 + bne _080F9EA4 + ldr r0, _080F9EB8 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080F9EA4 + movs r0, 0x7C + adds r0, r5 + mov r9, r0 + ldrb r1, [r0] + mov r8, r1 + cmp r1, 0 + beq _080F9EC0 + ldr r1, _080F9EBC @ =gUnknown_203AC08 + adds r1, 0x83 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080F9EA4: + movs r0, 0 + b _080F9F2A + .align 2, 0 +_080F9EA8: .4byte gUnknown_843ED94 +_080F9EAC: .4byte 0x00000701 +_080F9EB0: .4byte gUnknown_843EDD8 +_080F9EB4: .4byte gUnknown_3005450 +_080F9EB8: .4byte gUnknown_3003F50 +_080F9EBC: .4byte gUnknown_203AC08 +_080F9EC0: + adds r0, r6, 0 + movs r1, 0xC + bl __umodsi3 + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_800A404 + adds r1, r5, 0 + adds r1, 0x7D + strb r0, [r1] + movs r0, 0x1 + mov r1, r9 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0xC + bl __udivsi3 + adds r0, r4 + adds r1, r5, 0 + adds r1, 0x6E + strh r0, [r1] + adds r0, r5, 0 + adds r0, 0x6C + mov r1, r8 + strh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + cmp r6, r0 + bls _080F9F02 + str r7, [r5, 0x70] + b _080F9F14 +_080F9F02: + ldr r4, _080F9F38 @ =gUnknown_2022618 + cmp r7, r4 + beq _080F9F12 + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl memcpy +_080F9F12: + str r4, [r5, 0x70] +_080F9F14: + movs r0, 0x88 + lsls r0, 8 + bl sub_80F9D04 + ldr r0, _080F9F3C @ =gUnknown_3005450 + ldr r1, _080F9F40 @ =sub_80F9F44 + str r1, [r0] + adds r0, 0x5B + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 +_080F9F2A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F9F38: .4byte gUnknown_2022618 +_080F9F3C: .4byte gUnknown_3005450 +_080F9F40: .4byte sub_80F9F44 + thumb_func_end sub_80F9E60 + + thumb_func_start sub_80F9F44 +sub_80F9F44: @ 80F9F44 + push {r4,r5,lr} + ldr r0, _080F9F74 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080F9F98 + movs r5, 0x88 + lsls r5, 8 + adds r0, r5, 0 + bl sub_80F9D04 + ldr r4, _080F9F78 @ =gUnknown_3005450 + ldrb r0, [r4, 0xC] + cmp r0, 0x1 + bne _080F9F7C + adds r1, r4, 0 + adds r1, 0x5B + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bls _080F9F98 + b _080F9F94 + .align 2, 0 +_080F9F74: .4byte gUnknown_3003F50 +_080F9F78: .4byte gUnknown_3005450 +_080F9F7C: + bl sub_800A404 + ldr r1, _080F9FA0 @ =gUnknown_3003ED0 + lsls r0, 24 + lsrs r0, 20 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, r5 + bne _080F9F98 +_080F9F94: + ldr r0, _080F9FA4 @ =sub_80F9FA8 + str r0, [r4] +_080F9F98: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F9FA0: .4byte gUnknown_3003ED0 +_080F9FA4: .4byte sub_80F9FA8 + thumb_func_end sub_80F9F44 + + thumb_func_start sub_80F9FA8 +sub_80F9FA8: @ 80F9FA8 + push {r4-r6,lr} + ldr r0, _080FA014 @ =gUnknown_3005450 + mov r12, r0 + ldr r5, [r0, 0x70] + ldr r3, _080FA018 @ =gUnknown_3003F50 + mov r2, r12 + adds r2, 0x6C + ldrh r1, [r2] + movs r4, 0x89 + lsls r4, 8 + adds r0, r4, 0 + orrs r0, r1 + strh r0, [r3] + movs r4, 0 + adds r6, r2, 0 + adds r3, 0x2 +_080F9FC8: + lsls r2, r4, 1 + ldrh r1, [r6] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, r5 + ldrb r1, [r0, 0x1] + lsls r1, 8 + ldrb r0, [r0] + orrs r0, r1 + strh r0, [r3] + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x6 + ble _080F9FC8 + mov r0, r12 + adds r0, 0x6C + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] + adds r0, 0x2 + ldrh r0, [r0] + lsls r1, 16 + lsrs r1, 16 + cmp r0, r1 + bhi _080FA00C + mov r0, r12 + adds r0, 0x7C + movs r1, 0 + strb r1, [r0] + ldr r0, _080FA01C @ =sub_80FA020 + mov r1, r12 + str r0, [r1] +_080FA00C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FA014: .4byte gUnknown_3005450 +_080FA018: .4byte gUnknown_3003F50 +_080FA01C: .4byte sub_80FA020 + thumb_func_end sub_80F9FA8 + + thumb_func_start sub_80FA020 +sub_80FA020: @ 80FA020 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r5, _080FA0C8 @ =gUnknown_3005450 + ldr r0, [r5, 0x70] + mov r8, r0 + bl sub_800A404 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _080FA0E8 + ldr r3, _080FA0CC @ =gUnknown_3003F50 + adds r2, r5, 0 + adds r2, 0x6E + ldrh r0, [r2] + subs r0, 0x1 + ldr r4, _080FA0D0 @ =0xffff8900 + adds r1, r4, 0 + orrs r0, r1 + strh r0, [r3] + movs r4, 0 + mov r9, r5 + ldr r0, _080FA0D4 @ =gUnknown_3003ED0 + mov r12, r0 + lsls r5, r6, 4 + adds r7, r2, 0 + adds r3, 0x2 +_080FA05C: + lsls r2, r4, 1 + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + add r0, r8 + adds r1, r0, 0 + subs r1, 0xB + ldrb r1, [r1] + lsls r1, 8 + subs r0, 0xC + ldrb r0, [r0] + orrs r0, r1 + strh r0, [r3] + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x6 + ble _080FA05C + mov r1, r12 + adds r0, r5, r1 + ldrb r1, [r0] + mov r3, r9 + adds r0, r3, 0 + adds r0, 0x6E + ldrh r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _080FA0EC + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x88 + adds r1, r0, r1 + ldr r2, _080FA0D8 @ =gUnknown_843EBD4 + adds r0, r3 + adds r0, 0x82 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + beq _080FA0E0 + adds r0, r6, 0 + bl sub_80F965C + ldr r1, _080FA0DC @ =gUnknown_203AC08 + adds r1, 0x64 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _080FA0EC + .align 2, 0 +_080FA0C8: .4byte gUnknown_3005450 +_080FA0CC: .4byte gUnknown_3003F50 +_080FA0D0: .4byte 0xffff8900 +_080FA0D4: .4byte gUnknown_3003ED0 +_080FA0D8: .4byte gUnknown_843EBD4 +_080FA0DC: .4byte gUnknown_203AC08 +_080FA0E0: + movs r0, 0 + mov r4, r9 + str r0, [r4] + b _080FA0EC +_080FA0E8: + movs r0, 0 + str r0, [r5] +_080FA0EC: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80FA020 + + thumb_func_start sub_80FA0F8 +sub_80FA0F8: @ 80FA0F8 + push {lr} + ldr r1, _080FA110 @ =gUnknown_3005450 + adds r1, 0x5A + strb r0, [r1] + movs r0, 0xA1 + lsls r0, 8 + bl sub_80F9D04 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_080FA110: .4byte gUnknown_3005450 + thumb_func_end sub_80FA0F8 + + thumb_func_start sub_80FA114 +sub_80FA114: @ 80FA114 + push {lr} + bl rfu_clearAllSlot + bl sub_80FD52C + ldr r1, _080FA138 @ =gUnknown_3003F64 + movs r0, 0 + strb r0, [r1] + ldr r2, _080FA13C @ =gUnknown_3005450 + adds r3, r2, 0 + adds r3, 0xEF + movs r1, 0 + movs r0, 0x1 + strb r0, [r3] + str r1, [r2] + pop {r0} + bx r0 + .align 2, 0 +_080FA138: .4byte gUnknown_3003F64 +_080FA13C: .4byte gUnknown_3005450 + thumb_func_end sub_80FA114 + + thumb_func_start sub_80FA140 +sub_80FA140: @ 80FA140 + push {lr} + ldr r0, _080FA15C @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r1, [r0, 0x2] + ldrb r0, [r0, 0x3] + orrs r0, r1 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + bl sub_80FA114 + pop {r0} + bx r0 + .align 2, 0 +_080FA15C: .4byte gUnknown_3007460 + thumb_func_end sub_80FA140 + + thumb_func_start sub_80FA160 +sub_80FA160: @ 80FA160 + push {r4,lr} + ldr r4, _080FA178 @ =gUnknown_3005450 + ldrb r0, [r4, 0xC] + cmp r0, 0 + bne _080FA180 + bl sub_80FEB14 + ldr r0, _080FA17C @ =0x0000099c + adds r1, r4, r0 + movs r0, 0x2 + strb r0, [r1] + b _080FA184 + .align 2, 0 +_080FA178: .4byte gUnknown_3005450 +_080FA17C: .4byte 0x0000099c +_080FA180: + ldr r0, _080FA18C @ =sub_80FA140 + str r0, [r4] +_080FA184: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA18C: .4byte sub_80FA140 + thumb_func_end sub_80FA160 + + thumb_func_start sub_80FA190 +sub_80FA190: @ 80FA190 + push {lr} + bl sub_80FEB14 + ldr r2, _080FA1B4 @ =gUnknown_3005450 + ldr r0, _080FA1B8 @ =0x0000099c + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _080FA1BC @ =gUnknown_3007460 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + ldrb r1, [r1, 0x3] + orrs r0, r1 + ldr r1, _080FA1C0 @ =0x0000099b + adds r2, r1 + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_080FA1B4: .4byte gUnknown_3005450 +_080FA1B8: .4byte 0x0000099c +_080FA1BC: .4byte gUnknown_3007460 +_080FA1C0: .4byte 0x0000099b + thumb_func_end sub_80FA190 + + thumb_func_start sub_80FA1C4 +sub_80FA1C4: @ 80FA1C4 + push {r4,r5,lr} + ldr r0, _080FA208 @ =gUnknown_3005450 + ldrb r5, [r0, 0xD] + movs r2, 0 + movs r1, 0 + adds r3, r0, 0 + adds r4, r3, 0 + adds r4, 0xE4 +_080FA1D4: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _080FA1DE + adds r2, 0x1 +_080FA1DE: + adds r1, 0x1 + cmp r1, 0x4 + ble _080FA1D4 + cmp r2, r5 + bne _080FA218 + ldr r2, _080FA20C @ =gUnknown_2022B4C + ldr r0, [r2] + ldr r1, _080FA210 @ =0x0000ffdf + ands r0, r1 + str r0, [r2] + ldrb r0, [r3, 0xC] + cmp r0, 0 + bne _080FA214 + adds r0, r3, 0 + adds r0, 0xEE + ldrb r1, [r0] + movs r1, 0x3 + strb r1, [r0] + bl sub_80FA160 + b _080FA218 + .align 2, 0 +_080FA208: .4byte gUnknown_3005450 +_080FA20C: .4byte gUnknown_2022B4C +_080FA210: .4byte 0x0000ffdf +_080FA214: + ldr r0, _080FA220 @ =sub_80FA160 + str r0, [r3] +_080FA218: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA220: .4byte sub_80FA160 + thumb_func_end sub_80FA1C4 + + thumb_func_start sub_80FA224 +sub_80FA224: @ 80FA224 + push {r4,lr} + ldr r0, _080FA250 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080FA248 + ldr r4, _080FA254 @ =gUnknown_3005450 + movs r1, 0x9A + lsls r1, 4 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080FA248 + movs r0, 0xBE + lsls r0, 7 + bl sub_80F9D04 + ldr r0, _080FA258 @ =sub_80FA1C4 + str r0, [r4] +_080FA248: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA250: .4byte gUnknown_3003F50 +_080FA254: .4byte gUnknown_3005450 +_080FA258: .4byte sub_80FA1C4 + thumb_func_end sub_80FA224 + + thumb_func_start sub_80FA25C +sub_80FA25C: @ 80FA25C + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080FA280 @ =gUnknown_3005450 + ldr r0, [r2] + cmp r0, 0 + bne _080FA27C + ldr r1, _080FA284 @ =0x00000991 + adds r0, r2, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _080FA288 @ =sub_80FA224 + str r0, [r2] + adds r0, r3, 0 + bl sub_8077508 +_080FA27C: + pop {r0} + bx r0 + .align 2, 0 +_080FA280: .4byte gUnknown_3005450 +_080FA284: .4byte 0x00000991 +_080FA288: .4byte sub_80FA224 + thumb_func_end sub_80FA25C + + thumb_func_start sub_80FA28C +sub_80FA28C: @ 80FA28C + push {r4,lr} + ldr r4, _080FA2AC @ =sub_80FA25C + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _080FA2A4 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_807741C +_080FA2A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA2AC: .4byte sub_80FA25C + thumb_func_end sub_80FA28C + + thumb_func_start sub_80FA2B0 +sub_80FA2B0: @ 80FA2B0 + push {r4,r5,lr} + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + beq _080FA2DE + ldr r1, _080FA348 @ =gUnknown_3005450 + ldr r2, _080FA34C @ =0x0000069e + adds r0, r1, r2 + ldrb r0, [r0] + adds r4, r0, 0 + cmp r4, 0 + bne _080FA2DE + adds r5, r1, 0 + adds r5, 0xFE + ldrh r0, [r5] + cmp r0, 0x3C + bls _080FA2DE + movs r0, 0xCC + lsls r0, 7 + bl sub_80F9D04 + strh r4, [r5] +_080FA2DE: + bl sub_800A088 + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0 + cmp r1, r2 + bcs _080FA30A + ldr r0, _080FA348 @ =gUnknown_3005450 + adds r3, r0, 0 + adds r3, 0xE9 + ldrb r0, [r3] + cmp r0, 0 + beq _080FA30A +_080FA2F8: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcs _080FA30A + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _080FA2F8 +_080FA30A: + ldr r4, _080FA348 @ =gUnknown_3005450 + cmp r1, r2 + bne _080FA336 + movs r1, 0 + adds r3, r4, 0 + adds r3, 0xE9 + movs r2, 0 +_080FA318: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _080FA318 + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, r1 + ldrh r1, [r0] + adds r1, 0x1 + movs r2, 0 + strh r1, [r0] + str r2, [r4] +_080FA336: + adds r1, r4, 0 + adds r1, 0xFE + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA348: .4byte gUnknown_3005450 +_080FA34C: .4byte 0x0000069e + thumb_func_end sub_80FA2B0 + + thumb_func_start sub_80FA350 +sub_80FA350: @ 80FA350 + push {r4,lr} + ldr r4, _080FA378 @ =gUnknown_3005450 + ldr r1, _080FA37C @ =0x0000069e + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080FA372 + ldr r0, _080FA380 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080FA372 + movs r0, 0xCC + lsls r0, 7 + bl sub_80F9D04 + ldr r0, _080FA384 @ =sub_80FA2B0 + str r0, [r4] +_080FA372: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA378: .4byte gUnknown_3005450 +_080FA37C: .4byte 0x0000069e +_080FA380: .4byte gUnknown_3003F50 +_080FA384: .4byte sub_80FA2B0 + thumb_func_end sub_80FA350 + + thumb_func_start sub_80FA388 +sub_80FA388: @ 80FA388 + push {r4,lr} + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + beq _080FA3C4 + ldr r4, _080FA3B4 @ =gUnknown_3005450 + ldr r1, _080FA3B8 @ =0x0000069e + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080FA416 + ldr r0, _080FA3BC @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080FA416 + movs r0, 0xCC + lsls r0, 7 + bl sub_80F9D04 + ldr r0, _080FA3C0 @ =sub_80FA2B0 + b _080FA414 + .align 2, 0 +_080FA3B4: .4byte gUnknown_3005450 +_080FA3B8: .4byte 0x0000069e +_080FA3BC: .4byte gUnknown_3003F50 +_080FA3C0: .4byte sub_80FA2B0 +_080FA3C4: + bl sub_800A088 + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0x1 + cmp r1, r2 + bcs _080FA3F2 + ldr r3, _080FA41C @ =gUnknown_3005450 + adds r0, r3, 0 + adds r0, 0xEA + ldrb r0, [r0] + cmp r0, 0 + beq _080FA3F2 + adds r3, 0xE9 +_080FA3E0: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcs _080FA3F2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _080FA3E0 +_080FA3F2: + cmp r1, r2 + bne _080FA416 + ldr r4, _080FA41C @ =gUnknown_3005450 + ldr r1, _080FA420 @ =0x0000069e + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080FA416 + ldr r0, _080FA424 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080FA416 + movs r0, 0xCC + lsls r0, 7 + bl sub_80F9D04 + ldr r0, _080FA428 @ =sub_80FA350 +_080FA414: + str r0, [r4] +_080FA416: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA41C: .4byte gUnknown_3005450 +_080FA420: .4byte 0x0000069e +_080FA424: .4byte gUnknown_3003F50 +_080FA428: .4byte sub_80FA350 + thumb_func_end sub_80FA388 + + thumb_func_start sub_80FA42C +sub_80FA42C: @ 80FA42C + push {lr} + ldr r1, _080FA444 @ =gUnknown_3005450 + ldr r2, [r1] + cmp r2, 0 + bne _080FA440 + ldr r0, _080FA448 @ =sub_80FA388 + str r0, [r1] + adds r0, r1, 0 + adds r0, 0xFE + strh r2, [r0] +_080FA440: + pop {r0} + bx r0 + .align 2, 0 +_080FA444: .4byte gUnknown_3005450 +_080FA448: .4byte sub_80FA388 + thumb_func_end sub_80FA42C + + thumb_func_start sub_80FA44C +sub_80FA44C: @ 80FA44C + push {r4,lr} + adds r3, r0, 0 + ldr r1, _080FA468 @ =gUnknown_843EC8C + ldrh r0, [r1] + cmp r0, r3 + beq _080FA47A + ldr r4, _080FA46C @ =0x0000ffff + adds r2, r1, 0 +_080FA45C: + ldrh r0, [r2] + cmp r0, r4 + bne _080FA470 + movs r0, 0 + b _080FA47C + .align 2, 0 +_080FA468: .4byte gUnknown_843EC8C +_080FA46C: .4byte 0x0000ffff +_080FA470: + adds r1, 0x2 + adds r2, 0x2 + ldrh r0, [r1] + cmp r0, r3 + bne _080FA45C +_080FA47A: + movs r0, 0x1 +_080FA47C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FA44C + + thumb_func_start sub_80FA484 +sub_80FA484: @ 80FA484 + push {lr} + cmp r0, 0 + beq _080FA498 + movs r1, 0x96 + lsls r1, 2 + movs r0, 0x1 + bl sub_80FEA34 + movs r0, 0 + b _080FA4A4 +_080FA498: + movs r0, 0 + movs r1, 0 + bl sub_80FEA34 + lsls r0, 24 + lsrs r0, 24 +_080FA4A4: + pop {r1} + bx r1 + thumb_func_end sub_80FA484 + + thumb_func_start sub_80FA4A8 +sub_80FA4A8: @ 80FA4A8 + push {lr} + ldr r0, _080FA4C0 @ =gUnknown_3005450 + ldr r1, _080FA4C4 @ =0x00000991 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + movs r0, 0 + bl sub_80FD760 + pop {r0} + bx r0 + .align 2, 0 +_080FA4C0: .4byte gUnknown_3005450 +_080FA4C4: .4byte 0x00000991 + thumb_func_end sub_80FA4A8 + + thumb_func_start sub_80FA4C8 +sub_80FA4C8: @ 80FA4C8 + push {lr} + ldr r1, _080FA4DC @ =gUnknown_3005450 + ldrb r0, [r1, 0xC] + cmp r0, 0x1 + beq _080FA4E4 + ldr r2, _080FA4E0 @ =0x00000986 + adds r0, r1, r2 + ldrb r0, [r0] + b _080FA4E6 + .align 2, 0 +_080FA4DC: .4byte gUnknown_3005450 +_080FA4E0: .4byte 0x00000986 +_080FA4E4: + movs r0, 0 +_080FA4E6: + pop {r1} + bx r1 + thumb_func_end sub_80FA4C8 + + thumb_func_start sub_80FA4EC +sub_80FA4EC: @ 80FA4EC + ldr r0, _080FA4F4 @ =gUnknown_3005450 + ldrb r0, [r0, 0xD] + bx lr + .align 2, 0 +_080FA4F4: .4byte gUnknown_3005450 + thumb_func_end sub_80FA4EC + + thumb_func_start sub_80FA4F8 +sub_80FA4F8: @ 80FA4F8 + push {lr} + movs r1, 0 + ldr r0, _080FA50C @ =gUnknown_3005450 + ldr r0, [r0] + cmp r0, 0 + bne _080FA506 + movs r1, 0x1 +_080FA506: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_080FA50C: .4byte gUnknown_3005450 + thumb_func_end sub_80FA4F8 + + thumb_func_start sub_80FA510 +sub_80FA510: @ 80FA510 + push {lr} + ldr r0, _080FA524 @ =gUnknown_3005450 + ldr r0, [r0] + cmp r0, 0 + beq _080FA51E + bl _call_via_r0 +_080FA51E: + pop {r0} + bx r0 + .align 2, 0 +_080FA524: .4byte gUnknown_3005450 + thumb_func_end sub_80FA510 + + thumb_func_start sub_80FA528 +sub_80FA528: @ 80FA528 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r7, 0 + movs r5, 0 + ldr r6, _080FA594 @ =gUnknown_3005450 + ldr r0, _080FA598 @ =0x000008f6 + adds r0, r6 + mov r8, r0 +_080FA53A: + ldr r1, _080FA59C @ =0x00000989 + adds r0, r6, r1 + adds r4, r5, r0 + ldrb r0, [r4] + subs r0, 0x5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080FA5C2 + ldr r1, _080FA5A0 @ =gUnknown_3007450 + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + ldrh r0, [r0, 0x34] + cmp r0, 0x46 + beq _080FA55E + cmp r0, 0x48 + bne _080FA5A8 +_080FA55E: + ldr r2, _080FA5A4 @ =0x0000098d + adds r0, r6, r2 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, 0x8 + bne _080FA5C2 + movs r0, 0x9 + strb r0, [r4] + movs r0, 0xA + strb r0, [r1] + lsls r1, r5, 24 + lsrs r1, 24 + movs r0, 0x8 + bl rfu_clearSlot + movs r0, 0x80 + lsls r0, 17 + lsls r0, r5 + lsrs r0, 24 + movs r1, 0x8 + adds r2, r4, 0 + movs r3, 0x1 + bl rfu_NI_setSendData + movs r7, 0x1 + b _080FA5C2 + .align 2, 0 +_080FA594: .4byte gUnknown_3005450 +_080FA598: .4byte 0x000008f6 +_080FA59C: .4byte 0x00000989 +_080FA5A0: .4byte gUnknown_3007450 +_080FA5A4: .4byte 0x0000098d +_080FA5A8: + mov r2, r8 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrh r0, [r0, 0x34] + cmp r0, 0x47 + bne _080FA5C2 + lsls r1, r5, 24 + lsrs r1, 24 + movs r0, 0x8 + bl rfu_clearSlot +_080FA5C2: + adds r5, 0x1 + cmp r5, 0x3 + ble _080FA53A + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FA528 + + thumb_func_start sub_80FA5D4 +sub_80FA5D4: @ 80FA5D4 + push {r4-r6,lr} + movs r3, 0 + movs r1, 0 + ldr r5, _080FA620 @ =gUnknown_3005DDD + movs r6, 0x1 + movs r4, 0 +_080FA5E0: + adds r2, r1, r5 + ldrb r0, [r2] + cmp r0, 0xB + bne _080FA5F4 + adds r0, r6, 0 + lsls r0, r1 + orrs r3, r0 + lsls r0, r3, 24 + lsrs r3, r0, 24 + strb r4, [r2] +_080FA5F4: + adds r1, 0x1 + cmp r1, 0x3 + ble _080FA5E0 + cmp r3, 0 + beq _080FA608 + adds r0, r3, 0 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_080FA608: + movs r1, 0 + ldr r2, _080FA620 @ =gUnknown_3005DDD +_080FA60C: + adds r0, r1, r2 + ldrb r0, [r0] + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080FA624 + movs r0, 0x1 + b _080FA62C + .align 2, 0 +_080FA620: .4byte gUnknown_3005DDD +_080FA624: + adds r1, 0x1 + cmp r1, 0x3 + ble _080FA60C + movs r0, 0 +_080FA62C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80FA5D4 + + thumb_func_start sub_80FA634 +sub_80FA634: @ 80FA634 + push {lr} + adds r2, r0, 0 + adds r0, r1, 0 + lsls r2, 16 + lsrs r2, 16 + adds r1, r2, 0 + bl sub_80FBC70 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _080FA668 + ldr r0, _080FA660 @ =gUnknown_3005450 + ldr r2, _080FA664 @ =0x00000989 + adds r0, r2 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0x9 + beq _080FA668 + movs r0, 0 + b _080FA66A + .align 2, 0 +_080FA660: .4byte gUnknown_3005450 +_080FA664: .4byte 0x00000989 +_080FA668: + movs r0, 0x1 +_080FA66A: + pop {r1} + bx r1 + thumb_func_end sub_80FA634 + + thumb_func_start sub_80FA670 +sub_80FA670: @ 80FA670 + push {r4-r6,lr} + adds r6, r0, 0 + adds r0, r2, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_80FBC70 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _080FA6B4 @ =gUnknown_3005450 + ldr r0, _080FA6B8 @ =0x00000989 + adds r5, r0 + adds r5, r4, r5 + strb r6, [r5] + movs r0, 0x4 + adds r1, r4, 0 + bl rfu_clearSlot + movs r0, 0x80 + lsls r0, 17 + lsls r0, r4 + lsrs r0, 24 + movs r1, 0x8 + adds r2, r5, 0 + movs r3, 0x1 + bl rfu_NI_setSendData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FA6B4: .4byte gUnknown_3005450 +_080FA6B8: .4byte 0x00000989 + thumb_func_end sub_80FA670 + + thumb_func_start sub_80FA6BC +sub_80FA6BC: @ 80FA6BC + push {r4,r5,lr} + ldr r4, _080FA6F0 @ =gUnknown_3005450 + ldr r0, _080FA6F4 @ =0x0000093d + adds r5, r4, r0 + movs r0, 0x8 + strb r0, [r5] + ldr r0, _080FA6F8 @ =0x000008f6 + adds r4, r0 + ldrb r1, [r4] + movs r0, 0x4 + bl rfu_clearSlot + ldrb r1, [r4] + movs r0, 0x80 + lsls r0, 17 + lsls r0, r1 + lsrs r0, 24 + movs r1, 0x8 + adds r2, r5, 0 + movs r3, 0x1 + bl rfu_NI_setSendData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA6F0: .4byte gUnknown_3005450 +_080FA6F4: .4byte 0x0000093d +_080FA6F8: .4byte 0x000008f6 + thumb_func_end sub_80FA6BC + + thumb_func_start sub_80FA6FC +sub_80FA6FC: @ 80FA6FC + push {lr} + adds r2, r0, 0 + adds r0, r1, 0 + lsls r2, 16 + lsrs r2, 16 + adds r1, r2, 0 + bl sub_80FBC70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080FA718 + movs r0, 0x2 + b _080FA732 +_080FA718: + ldr r1, _080FA72C @ =gUnknown_3007450 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0 + beq _080FA730 + movs r0, 0 + b _080FA732 + .align 2, 0 +_080FA72C: .4byte gUnknown_3007450 +_080FA730: + movs r0, 0x1 +_080FA732: + pop {r1} + bx r1 + thumb_func_end sub_80FA6FC + + thumb_func_start sub_80FA738 +sub_80FA738: @ 80FA738 + push {r4,r5,lr} + bl sub_80FA528 + movs r4, 0 + ldr r0, _080FA77C @ =gUnknown_3005450 + ldr r1, _080FA780 @ =0x0000098d + adds r5, r0, r1 +_080FA746: + ldr r1, _080FA784 @ =gUnknown_3007450 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + subs r0, 0x26 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _080FA770 + adds r1, r4, r5 + ldrb r0, [r1] + cmp r0, 0xA + bne _080FA766 + movs r0, 0xB + strb r0, [r1] +_080FA766: + lsls r1, r4, 24 + lsrs r1, 24 + movs r0, 0x4 + bl rfu_clearSlot +_080FA770: + adds r4, 0x1 + cmp r4, 0x3 + ble _080FA746 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA77C: .4byte gUnknown_3005450 +_080FA780: .4byte 0x0000098d +_080FA784: .4byte gUnknown_3007450 + thumb_func_end sub_80FA738 + + thumb_func_start sub_80FA788 +sub_80FA788: @ 80FA788 + push {r4,r5,lr} + movs r4, 0 + ldr r1, _080FA800 @ =gUnknown_3005450 + ldr r2, _080FA804 @ =0x0000093d + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x8 + bne _080FA7C2 + ldr r2, _080FA808 @ =gUnknown_3007450 + ldr r0, _080FA80C @ =0x000008f6 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x26 + beq _080FA7BA + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, 0x27 + bne _080FA7C2 +_080FA7BA: + ldrb r1, [r1] + movs r0, 0x4 + bl rfu_clearSlot +_080FA7C2: + ldr r2, _080FA808 @ =gUnknown_3007450 + ldr r5, _080FA800 @ =gUnknown_3005450 + ldr r0, _080FA80C @ =0x000008f6 + adds r1, r5, r0 + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0, 0x34] + cmp r0, 0x46 + beq _080FA7E6 + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0, 0x34] + cmp r0, 0x48 + bne _080FA814 +_080FA7E6: + ldrb r1, [r1] + movs r0, 0x8 + bl rfu_clearSlot + ldr r2, _080FA810 @ =0x0000093e + adds r4, r5, r2 + ldrb r0, [r4] + movs r1, 0 + bl sub_80FB9E4 + ldrb r4, [r4] + b _080FA82C + .align 2, 0 +_080FA800: .4byte gUnknown_3005450 +_080FA804: .4byte 0x0000093d +_080FA808: .4byte gUnknown_3007450 +_080FA80C: .4byte 0x000008f6 +_080FA810: .4byte 0x0000093e +_080FA814: + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0, 0x34] + cmp r0, 0x47 + bne _080FA82C + ldrb r1, [r1] + movs r0, 0x8 + bl rfu_clearSlot + movs r4, 0x6 +_080FA82C: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FA788 + + thumb_func_start sub_80FA834 +sub_80FA834: @ 80FA834 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080FA884 @ =gUnknown_3005450 + adds r0, r5, 0 + adds r0, 0xF1 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080FA85C + movs r0, 0x9A + lsls r0, 4 + adds r1, r5, r0 + movs r0, 0 + strb r0, [r1] + adds r0, r6, 0 + bl sub_8077508 +_080FA85C: + ldr r2, _080FA888 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r0, r1, r6 + lsls r0, 3 + adds r4, r0, r2 + movs r2, 0x8 + ldrsh r0, [r4, r2] + adds r7, r1, 0 + cmp r0, 0x3 + beq _080FA904 + cmp r0, 0x3 + bgt _080FA88C + cmp r0, 0x1 + beq _080FA8B4 + cmp r0, 0x1 + bgt _080FA900 + cmp r0, 0 + beq _080FA89E + b _080FA9BC + .align 2, 0 +_080FA884: .4byte gUnknown_3005450 +_080FA888: .4byte gUnknown_3005090 +_080FA88C: + cmp r0, 0x5 + beq _080FA938 + cmp r0, 0x5 + blt _080FA926 + cmp r0, 0x6 + beq _080FA96C + cmp r0, 0x65 + beq _080FA8EC + b _080FA9BC +_080FA89E: + bl sub_80F9C50 + lsls r0, 24 + cmp r0, 0 + bne _080FA8AA + b _080FA9BC +_080FA8AA: + bl sub_800A550 + bl sub_800B0B4 + b _080FA930 +_080FA8B4: + ldrb r0, [r5, 0xC] + cmp r0, 0x1 + bne _080FA8F4 + ldr r0, _080FA8CC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _080FA8D0 + movs r0, 0xF0 + lsls r0, 7 + bl sub_80F9D04 + b _080FA8D8 + .align 2, 0 +_080FA8CC: .4byte gUnknown_3003F64 +_080FA8D0: + movs r0, 0xEE + lsls r0, 7 + bl sub_80F9D04 +_080FA8D8: + ldr r0, _080FA8E8 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + movs r0, 0x65 + strh r0, [r1, 0x8] + b _080FA9BC + .align 2, 0 +_080FA8E8: .4byte gUnknown_3005090 +_080FA8EC: + ldr r0, _080FA8FC @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + bne _080FA9BC +_080FA8F4: + movs r0, 0x2 + strh r0, [r4, 0x8] + b _080FA9BC + .align 2, 0 +_080FA8FC: .4byte gUnknown_3003F50 +_080FA900: + ldrb r0, [r5, 0xD] + b _080FA92C +_080FA904: + ldrb r0, [r5, 0xC] + cmp r0, 0x1 + bne _080FA930 + bl sub_80F9C50 + lsls r0, 24 + cmp r0, 0 + beq _080FA9BC + adds r1, r5, 0 + adds r1, 0x5A + movs r0, 0 + strb r0, [r1] + movs r0, 0xA1 + lsls r0, 8 + bl sub_80F9D04 + b _080FA930 +_080FA926: + bl sub_80F9C78 + lsls r0, 24 +_080FA92C: + cmp r0, 0 + beq _080FA9BC +_080FA930: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080FA9BC +_080FA938: + movs r4, 0 + ldrb r0, [r5, 0xD] + cmp r4, r0 + bge _080FA956 +_080FA940: + adds r0, r4, 0 + bl sub_800B110 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80F974C + adds r4, 0x1 + ldrb r2, [r5, 0xD] + cmp r4, r2 + blt _080FA940 +_080FA956: + ldr r0, _080FA968 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080FA9BC + .align 2, 0 +_080FA968: .4byte gUnknown_3005090 +_080FA96C: + adds r0, r6, 0 + bl sub_8077508 + ldr r1, _080FA9C4 @ =gUnknown_3003F64 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x9A + lsls r0, 4 + adds r1, r5, r0 + movs r0, 0 + strb r0, [r1] + movs r1, 0x96 + lsls r1, 2 + movs r0, 0x1 + bl sub_80FEA34 + ldr r2, _080FA9C8 @ =0x0000099e + adds r1, r5, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _080FA9BC + movs r4, 0 + adds r2, r1, 0 + movs r3, 0x1 + ldr r0, _080FA9CC @ =0x0000099d + adds r5, r0 +_080FA9A0: + ldrb r0, [r2] + asrs r0, r4 + ands r0, r3 + cmp r0, 0 + beq _080FA9B6 + adds r0, r3, 0 + lsls r0, r4 + strb r0, [r5] + ldrb r1, [r2] + eors r0, r1 + strb r0, [r2] +_080FA9B6: + adds r4, 0x1 + cmp r4, 0x3 + ble _080FA9A0 +_080FA9BC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FA9C4: .4byte gUnknown_3003F64 +_080FA9C8: .4byte 0x0000099e +_080FA9CC: .4byte 0x0000099d + thumb_func_end sub_80FA834 + + thumb_func_start sub_80FA9D0 +sub_80FA9D0: @ 80FA9D0 + push {r4,r5,lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0 + movs r5, 0x1 + ldr r4, _080FA9F8 @ =gUnknown_3005DE6 + movs r3, 0 +_080FA9DE: + adds r0, r2, 0 + asrs r0, r1 + ands r0, r5 + cmp r0, 0 + beq _080FA9EC + adds r0, r1, r4 + strb r3, [r0] +_080FA9EC: + adds r1, 0x1 + cmp r1, 0x3 + ble _080FA9DE + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA9F8: .4byte gUnknown_3005DE6 + thumb_func_end sub_80FA9D0 + + thumb_func_start sub_80FA9FC +sub_80FA9FC: @ 80FA9FC + push {r4-r7,lr} + adds r2, r0, 0 + ldr r1, _080FAA4C @ =gUnknown_3005450 + ldrb r0, [r2, 0xF] + strb r0, [r1, 0xD] + movs r4, 0 + ldr r0, _080FAA50 @ =0x00000996 + adds r5, r1, r0 + adds r3, r2, 0 + adds r3, 0x10 +_080FAA10: + adds r0, r4, r5 + adds r1, r3, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x3 + ble _080FAA10 + adds r6, r2, 0 + ldr r5, _080FAA54 @ =gUnknown_202273C + movs r4, 0x4 +_080FAA24: + adds r0, r5, 0 + adds r1, r6, 0 + adds r1, 0x14 + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + ldr r1, [r1] + str r1, [r0] + adds r0, r5, 0 + bl sub_800B284 + adds r6, 0x1C + adds r5, 0x1C + subs r4, 0x1 + cmp r4, 0 + bge _080FAA24 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FAA4C: .4byte gUnknown_3005450 +_080FAA50: .4byte 0x00000996 +_080FAA54: .4byte gUnknown_202273C + thumb_func_end sub_80FA9FC + + thumb_func_start sub_80FAA58 +sub_80FAA58: @ 80FAA58 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r0, _080FAA8C @ =gUnknown_843EDE4 + adds r1, r4, 0 + bl strcmp + adds r5, r0, 0 + cmp r5, 0 + bne _080FAA84 + adds r0, r4, 0 + bl sub_80FA9FC + mov r0, sp + strh r5, [r0] + ldr r2, _080FAA90 @ =0x0100007e + adds r1, r4, 0 + bl CpuSet + movs r0, 0 + bl sub_800A588 +_080FAA84: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FAA8C: .4byte gUnknown_843EDE4 +_080FAA90: .4byte 0x0100007e + thumb_func_end sub_80FAA58 + + thumb_func_start sub_80FAA94 +sub_80FAA94: @ 80FAA94 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, _080FAAF4 @ =gUnknown_3005450 + ldr r2, _080FAAF8 @ =gUnknown_843EC38 + ldr r1, _080FAAFC @ =0x000009a1 + adds r0, r3, r1 + ldrb r1, [r0] + adds r1, r2 + ldr r2, _080FAB00 @ =0x00000996 + adds r0, r3, r2 + ldrb r1, [r1] + adds r0, r1 + ldrb r4, [r0] + adds r0, r3, 0 + adds r0, 0xF1 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080FAAD2 + movs r5, 0x9A + lsls r5, 4 + adds r1, r3, r5 + movs r0, 0 + strb r0, [r1] + adds r0, r6, 0 + bl sub_8077508 +_080FAAD2: + ldr r0, _080FAB04 @ =gUnknown_3005090 + lsls r2, r6, 2 + adds r1, r2, r6 + lsls r1, 3 + adds r1, r0 + movs r3, 0x8 + ldrsh r1, [r1, r3] + adds r3, r0, 0 + adds r7, r2, 0 + cmp r1, 0x5 + bls _080FAAEA + b _080FACD6 +_080FAAEA: + lsls r0, r1, 2 + ldr r1, _080FAB08 @ =_080FAB0C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FAAF4: .4byte gUnknown_3005450 +_080FAAF8: .4byte gUnknown_843EC38 +_080FAAFC: .4byte 0x000009a1 +_080FAB00: .4byte 0x00000996 +_080FAB04: .4byte gUnknown_3005090 +_080FAB08: .4byte _080FAB0C + .align 2, 0 +_080FAB0C: + .4byte _080FAB24 + .4byte _080FAB44 + .4byte _080FAB5C + .4byte _080FABA4 + .4byte _080FABEE + .4byte _080FAC78 +_080FAB24: + ldr r0, _080FAB40 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + beq _080FAB2E + b _080FACD6 +_080FAB2E: + adds r0, r4, 0 + bl sub_800A588 + movs r0, 0xF0 + lsls r0, 7 + bl sub_80F9D04 + b _080FAC2E + .align 2, 0 +_080FAB40: .4byte gUnknown_3003F50 +_080FAB44: + ldr r0, _080FAB58 @ =gUnknown_3003F50 + ldrh r0, [r0] + cmp r0, 0 + beq _080FAB4E + b _080FACD6 +_080FAB4E: + adds r1, r7, r6 + lsls r1, 3 + adds r1, r3 + b _080FAC36 + .align 2, 0 +_080FAB58: .4byte gUnknown_3003F50 +_080FAB5C: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + asrs r0, r4 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080FAB70 + b _080FACD6 +_080FAB70: + adds r0, r4, 0 + bl sub_800A588 + lsls r2, r4, 8 + ldr r0, _080FAB9C @ =gUnknown_2022118 + adds r2, r0 + ldr r1, _080FABA0 @ =gUnknown_202273C + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + adds r1, r0, 0 + adds r2, 0x10 + ldm r2!, {r3-r5} + stm r1!, {r3-r5} + ldm r2!, {r3-r5} + stm r1!, {r3-r5} + ldr r2, [r2] + str r2, [r1] + bl sub_800B284 + b _080FAC2E + .align 2, 0 +_080FAB9C: .4byte gUnknown_2022118 +_080FABA0: .4byte gUnknown_202273C +_080FABA4: + ldr r5, _080FAC40 @ =gUnknown_2022618 + adds r1, r5, 0 + ldr r0, _080FAC44 @ =gUnknown_843EDE4 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldrh r2, [r0] + strh r2, [r1] + ldrb r0, [r0, 0x2] + strb r0, [r1, 0x2] + ldr r1, _080FAC48 @ =gUnknown_3005450 + ldrb r0, [r1, 0xD] + strb r0, [r5, 0xF] + movs r2, 0 + adds r4, r5, 0 + adds r4, 0x10 + ldr r0, _080FAC4C @ =0x00000996 + adds r3, r1, r0 +_080FABC6: + adds r0, r4, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _080FABC6 + ldr r1, _080FAC50 @ =gUnknown_202273C + adds r0, r5, 0 + adds r0, 0x14 + movs r2, 0x8C + bl memcpy + ldr r0, _080FAC54 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_080FABEE: + ldr r5, _080FAC40 @ =gUnknown_2022618 + ldr r1, _080FAC48 @ =gUnknown_3005450 + ldrb r0, [r1, 0xD] + strb r0, [r5, 0xF] + movs r2, 0 + ldr r3, _080FAC50 @ =gUnknown_202273C + mov r12, r3 + adds r4, r5, 0 + adds r4, 0x10 + ldr r0, _080FAC4C @ =0x00000996 + adds r3, r1, r0 +_080FAC04: + adds r0, r4, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _080FAC04 + adds r0, r5, 0 + adds r0, 0x14 + mov r1, r12 + movs r2, 0x8C + bl memcpy + ldr r1, _080FAC40 @ =gUnknown_2022618 + movs r0, 0 + movs r2, 0xA0 + bl sub_800A448 + lsls r0, 24 + cmp r0, 0 + beq _080FACD6 +_080FAC2E: + ldr r0, _080FAC54 @ =gUnknown_3005090 + adds r1, r7, r6 + lsls r1, 3 + adds r1, r0 +_080FAC36: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080FACD6 + .align 2, 0 +_080FAC40: .4byte gUnknown_2022618 +_080FAC44: .4byte gUnknown_843EDE4 +_080FAC48: .4byte gUnknown_3005450 +_080FAC4C: .4byte 0x00000996 +_080FAC50: .4byte gUnknown_202273C +_080FAC54: .4byte gUnknown_3005090 +_080FAC58: + adds r0, r3, 0 + lsls r0, r2 + ldr r2, _080FAC74 @ =0x0000099d + adds r1, r5, r2 + strb r0, [r1] + ldrb r1, [r4] + eors r0, r1 + strb r0, [r4] + movs r4, 0x9A + lsls r4, 4 + adds r0, r5, r4 + strb r3, [r0] + b _080FACD0 + .align 2, 0 +_080FAC74: .4byte 0x0000099d +_080FAC78: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _080FACD6 + bl sub_800A4EC + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080FACD6 + mov r0, sp + movs r4, 0 + strh r4, [r0] + ldr r1, _080FACE0 @ =gUnknown_2022118 + ldr r2, _080FACE4 @ =0x0100007e + bl CpuSet + movs r0, 0 + bl sub_800A588 + ldr r1, _080FACE8 @ =gUnknown_3005450 + movs r5, 0x9A + lsls r5, 4 + adds r0, r1, r5 + strb r4, [r0] + ldr r0, _080FACEC @ =0x0000099e + adds r3, r1, r0 + ldrb r0, [r3] + cmp r0, 0 + beq _080FACD0 + movs r2, 0 + adds r5, r1, 0 + adds r4, r3, 0 + ldrb r1, [r4] + movs r3, 0x1 +_080FACC0: + adds r0, r1, 0 + asrs r0, r2 + ands r0, r3 + cmp r0, 0 + bne _080FAC58 + adds r2, 0x1 + cmp r2, 0x3 + ble _080FACC0 +_080FACD0: + adds r0, r6, 0 + bl sub_8077508 +_080FACD6: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FACE0: .4byte gUnknown_2022118 +_080FACE4: .4byte 0x0100007e +_080FACE8: .4byte gUnknown_3005450 +_080FACEC: .4byte 0x0000099e + thumb_func_end sub_80FAA94 + + thumb_func_start sub_80FACF0 +sub_80FACF0: @ 80FACF0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _080FAD2C @ =gUnknown_3005450 + adds r0, r6, 0 + adds r0, 0xF1 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080FAD0E + adds r0, r5, 0 + bl sub_8077508 +_080FAD0E: + ldr r1, _080FAD30 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080FAD54 + cmp r0, 0x1 + bgt _080FAD34 + cmp r0, 0 + beq _080FAD3A + b _080FAD8A + .align 2, 0 +_080FAD2C: .4byte gUnknown_3005450 +_080FAD30: .4byte gUnknown_3005090 +_080FAD34: + cmp r0, 0x2 + beq _080FAD66 + b _080FAD8A +_080FAD3A: + ldrb r0, [r6, 0xD] + cmp r0, 0 + beq _080FAD8A + bl sub_800B0B4 + ldr r1, _080FAD50 @ =gUnknown_2022618 + movs r0, 0 + movs r2, 0x3C + bl sub_800A448 + b _080FAD5E + .align 2, 0 +_080FAD50: .4byte gUnknown_2022618 +_080FAD54: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _080FAD8A +_080FAD5E: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080FAD8A +_080FAD66: + bl sub_800A4EC + movs r4, 0x1 + adds r1, r4, 0 + ands r1, r0 + cmp r1, 0 + beq _080FAD8A + ldr r0, _080FAD90 @ =gUnknown_2022118 + bl sub_80FA9FC + movs r0, 0 + bl sub_800A588 + ldr r0, _080FAD94 @ =gUnknown_3003F64 + strb r4, [r0] + adds r0, r5, 0 + bl sub_8077508 +_080FAD8A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FAD90: .4byte gUnknown_2022118 +_080FAD94: .4byte gUnknown_3003F64 + thumb_func_end sub_80FACF0 + + thumb_func_start sub_80FAD98 +sub_80FAD98: @ 80FAD98 + push {r4-r7,lr} + ldr r0, _080FAE10 @ =gUnknown_3005450 + adds r7, r0, 0 + adds r7, 0xEE + ldrb r1, [r7] + adds r5, r0, 0 + cmp r1, 0x1 + bne _080FAE30 + ldr r0, _080FAE14 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x2] + cmp r0, 0 + bne _080FAE30 + ldr r6, _080FAE18 @ =gUnknown_30030F0 + ldr r1, [r6, 0x4] + ldr r0, _080FAE1C @ =sub_814208C + cmp r1, r0 + bne _080FADC0 + ldr r1, _080FAE20 @ =gUnknown_3003F3C + movs r0, 0x2 + strb r0, [r1] +_080FADC0: + ldr r4, _080FAE24 @ =sub_800ACD4 + adds r0, r4, 0 + bl sub_8000544 + str r4, [r6, 0x8] + ldrh r0, [r5, 0xA] + lsls r4, r0, 16 + ldrh r0, [r5, 0x10] + lsls r0, 8 + orrs r4, r0 + ldrh r0, [r5, 0x12] + orrs r4, r0 + ldr r1, _080FAE28 @ =0x0000069e + adds r0, r5, r1 + ldrb r0, [r0] + adds r6, r0, 0 + ldr r1, _080FAE2C @ =0x000008d2 + adds r0, r5, r1 + ldrb r0, [r0] + adds r5, r0, 0 + bl sub_80FB9F4 + movs r3, 0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080FADF8 + movs r3, 0x1 +_080FADF8: + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_800ACBC + ldrb r0, [r7] + movs r0, 0x2 + strb r0, [r7] + bl sub_80098B8 + b _080FAE62 + .align 2, 0 +_080FAE10: .4byte gUnknown_3005450 +_080FAE14: .4byte gUnknown_3005E10 +_080FAE18: .4byte gUnknown_30030F0 +_080FAE1C: .4byte sub_814208C +_080FAE20: .4byte gUnknown_3003F3C +_080FAE24: .4byte sub_800ACD4 +_080FAE28: .4byte 0x0000069e +_080FAE2C: .4byte 0x000008d2 +_080FAE30: + ldr r1, _080FAE68 @ =0x000008d3 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080FAE44 + ldr r1, _080FAE6C @ =0x0000069f + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FAE62 +_080FAE44: + ldr r0, _080FAE70 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _080FAE50 + bl sub_80FEB14 +_080FAE50: + movs r4, 0xE0 + lsls r4, 7 + movs r0, 0x1 + adds r1, r4, 0 + bl sub_80FB9E4 + adds r0, r4, 0 + bl sub_80FB0E8 +_080FAE62: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FAE68: .4byte 0x000008d3 +_080FAE6C: .4byte 0x0000069f +_080FAE70: .4byte gUnknown_3005E10 + thumb_func_end sub_80FAD98 + + thumb_func_start sub_80FAE74 +sub_80FAE74: @ 80FAE74 + push {lr} + ldr r0, _080FAE90 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + bne _080FAE8C + bl rfu_REQ_recvData + bl rfu_waitREQComplete + movs r0, 0 + bl sub_80FD3F0 +_080FAE8C: + pop {r0} + bx r0 + .align 2, 0 +_080FAE90: .4byte gUnknown_3005E10 + thumb_func_end sub_80FAE74 + + thumb_func_start sub_80FAE94 +sub_80FAE94: @ 80FAE94 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _080FAEC8 @ =gUnknown_3005450 + ldr r1, _080FAECC @ =0x00000985 + adds r0, r4, r1 + strb r5, [r0] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80FDA30 + adds r0, r4, 0 + adds r0, 0xEF + ldrb r0, [r0] + cmp r0, 0 + bne _080FAEE8 + ldrb r0, [r4, 0xC] + cmp r0, 0x1 + beq _080FAED6 + cmp r0, 0x1 + bgt _080FAED0 + cmp r0, 0 + beq _080FAEDC + b _080FAEE8 + .align 2, 0 +_080FAEC8: .4byte gUnknown_3005450 +_080FAECC: .4byte 0x00000985 +_080FAED0: + cmp r0, 0x2 + beq _080FAEE4 + b _080FAEE8 +_080FAED6: + bl sub_80F911C + b _080FAEE8 +_080FAEDC: + bl sub_80F9514 + adds r5, r0, 0 + b _080FAEE8 +_080FAEE4: + bl sub_80FAE74 +_080FAEE8: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FAE94 + + thumb_func_start sub_80FAEF0 +sub_80FAEF0: @ 80FAEF0 + push {r4,lr} + movs r4, 0 + ldr r1, _080FAF18 @ =gUnknown_3005450 + adds r0, r1, 0 + adds r0, 0xEF + ldrb r0, [r0] + cmp r0, 0 + bne _080FAF10 + ldrb r0, [r1, 0xC] + cmp r0, 0x1 + bne _080FAF0C + bl sub_80F9204 + adds r4, r0, 0 +_080FAF0C: + bl sub_80FAD98 +_080FAF10: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FAF18: .4byte gUnknown_3005450 + thumb_func_end sub_80FAEF0 + + thumb_func_start sub_80FAF1C +sub_80FAF1C: @ 80FAF1C + push {lr} + ldr r0, _080FAF2C @ =gUnknown_3005E00 + ldr r1, _080FAF30 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + pop {r0} + bx r0 + .align 2, 0 +_080FAF2C: .4byte gUnknown_3005E00 +_080FAF30: .4byte gUnknown_300500C + thumb_func_end sub_80FAF1C + + thumb_func_start sub_80FAF34 +sub_80FAF34: @ 80FAF34 + push {r4,lr} + ldr r4, _080FAF54 @ =gUnknown_3005440 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0xD + bl memset + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_80FCB54 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FAF54: .4byte gUnknown_3005440 + thumb_func_end sub_80FAF34 + + thumb_func_start sub_80FAF58 +sub_80FAF58: @ 80FAF58 + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080FAF70 @ =gUnknown_3005440 + adds r1, r4, 0 + bl sub_80FCB54 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FAF70: .4byte gUnknown_3005440 + thumb_func_end sub_80FAF58 + + thumb_func_start sub_80FAF74 +sub_80FAF74: @ 80FAF74 + push {r4,r5,lr} + ldr r5, _080FAF9C @ =gUnknown_3005440 + movs r4, 0x1 + ands r0, r4 + lsls r0, 4 + ldrb r3, [r5] + movs r2, 0x11 + negs r2, r2 + ands r2, r3 + orrs r2, r0 + ands r1, r4 + lsls r1, 5 + movs r0, 0x21 + negs r0, r0 + ands r2, r0 + orrs r2, r1 + strb r2, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FAF9C: .4byte gUnknown_3005440 + thumb_func_end sub_80FAF74 + + thumb_func_start sub_80FAFA0 +sub_80FAFA0: @ 80FAFA0 + push {r4,r5,lr} + ldr r5, _080FAFD4 @ =gUnknown_3005440 + lsls r0, 2 + ldrb r4, [r5, 0x9] + movs r3, 0x3 + ands r3, r4 + orrs r3, r0 + strb r3, [r5, 0x9] + ldr r3, _080FAFD8 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldrh r3, [r5, 0x8] + ldr r0, _080FAFDC @ =0xfffffc00 + ands r0, r3 + orrs r0, r1 + strh r0, [r5, 0x8] + lsls r2, 1 + ldrb r1, [r5, 0xB] + movs r0, 0x1 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0xB] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FAFD4: .4byte gUnknown_3005440 +_080FAFD8: .4byte 0x000003ff +_080FAFDC: .4byte 0xfffffc00 + thumb_func_end sub_80FAFA0 + + thumb_func_start sub_80FAFE0 +sub_80FAFE0: @ 80FAFE0 + push {lr} + lsls r0, 24 + ldr r2, _080FB000 @ =gUnknown_3005440 + lsrs r0, 17 + ldrb r3, [r2, 0xA] + movs r1, 0x7F + ands r1, r3 + orrs r1, r0 + strb r1, [r2, 0xA] + ldr r3, _080FB004 @ =gUnknown_3005E00 + movs r0, 0 + movs r1, 0x2 + bl rfu_REQ_configGameData + pop {r0} + bx r0 + .align 2, 0 +_080FB000: .4byte gUnknown_3005440 +_080FB004: .4byte gUnknown_3005E00 + thumb_func_end sub_80FAFE0 + + thumb_func_start sub_80FB008 +sub_80FB008: @ 80FB008 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080FB016 + bl sub_80FAF58 +_080FB016: + ldr r2, _080FB028 @ =gUnknown_3005440 + ldr r3, _080FB02C @ =gUnknown_3005E00 + movs r0, 0 + movs r1, 0x2 + bl rfu_REQ_configGameData + pop {r0} + bx r0 + .align 2, 0 +_080FB028: .4byte gUnknown_3005440 +_080FB02C: .4byte gUnknown_3005E00 + thumb_func_end sub_80FB008 + + thumb_func_start sub_80FB030 +sub_80FB030: @ 80FB030 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + bne _080FB0C4 + movs r5, 0 + movs r7, 0 + ldr r3, _080FB0D4 @ =gUnknown_3005450 + ldr r1, _080FB0D8 @ =0x0000099a + adds r0, r3, r1 + ldr r2, _080FB0DC @ =0x0000099b + adds r1, r3, r2 + ldrb r2, [r0] + ldrb r0, [r1] + adds r1, r0, 0 + eors r1, r2 + mov r8, r1 + movs r4, 0 + movs r6, 0x1 + ldr r2, _080FB0E0 @ =gUnknown_202273C + mov r12, r2 + ldr r0, _080FB0E4 @ =0x00000996 + adds r0, r3 + mov r10, r0 + mov r3, r12 + adds r3, 0x4 +_080FB074: + mov r0, r8 + asrs r0, r4 + ands r0, r6 + cmp r0, 0 + beq _080FB0B4 + mov r1, r10 + adds r0, r4, r1 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r2, r12 + adds r1, r0, r2 + ldrb r1, [r1, 0x13] + adds r2, r6, 0 + ands r2, r1 + lsls r2, 3 + adds r0, r3 + ldr r1, [r0] + movs r0, 0x7 + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + orrs r2, r1 + lsls r0, r5, 3 + lsls r2, r0 + orrs r7, r2 + adds r5, 0x1 + mov r0, r9 + subs r0, 0x1 + cmp r5, r0 + beq _080FB0BA +_080FB0B4: + adds r4, 0x1 + cmp r4, 0x3 + ble _080FB074 +_080FB0BA: + movs r0, 0x45 + adds r1, r7, 0 + movs r2, 0 + bl sub_80FB008 +_080FB0C4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FB0D4: .4byte gUnknown_3005450 +_080FB0D8: .4byte 0x0000099a +_080FB0DC: .4byte 0x0000099b +_080FB0E0: .4byte gUnknown_202273C +_080FB0E4: .4byte 0x00000996 + thumb_func_end sub_80FB030 + + thumb_func_start sub_80FB0E8 +sub_80FB0E8: @ 80FB0E8 + push {r4,lr} + adds r4, r0, 0 + ldr r2, _080FB110 @ =gUnknown_3005450 + adds r3, r2, 0 + adds r3, 0xEE + ldrb r0, [r3] + cmp r0, 0 + bne _080FB10A + ldr r1, _080FB114 @ =gUnknown_3005E10 + ldrh r0, [r1, 0x14] + strh r0, [r2, 0x10] + ldrh r0, [r1, 0x16] + strh r0, [r2, 0x12] + strh r4, [r2, 0xA] + ldrb r0, [r3] + movs r0, 0x1 + strb r0, [r3] +_080FB10A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FB110: .4byte gUnknown_3005450 +_080FB114: .4byte gUnknown_3005E10 + thumb_func_end sub_80FB0E8 + + thumb_func_start sub_80FB118 +sub_80FB118: @ 80FB118 + ldr r0, _080FB124 @ =gUnknown_3005450 + adds r0, 0xEE + ldrb r1, [r0] + movs r1, 0 + strb r1, [r0] + bx lr + .align 2, 0 +_080FB124: .4byte gUnknown_3005450 + thumb_func_end sub_80FB118 + + thumb_func_start sub_80FB128 +sub_80FB128: @ 80FB128 + push {lr} + adds r2, r0, 0 + cmp r2, 0 + bne _080FB140 + ldr r0, _080FB13C @ =gUnknown_3005450 + adds r0, 0xEE + ldrb r1, [r0] + strb r2, [r0] + b _080FB14A + .align 2, 0 +_080FB13C: .4byte gUnknown_3005450 +_080FB140: + ldr r0, _080FB150 @ =gUnknown_3005450 + adds r0, 0xEE + ldrb r1, [r0] + movs r1, 0x4 + strb r1, [r0] +_080FB14A: + pop {r0} + bx r0 + .align 2, 0 +_080FB150: .4byte gUnknown_3005450 + thumb_func_end sub_80FB128 + + thumb_func_start sub_80FB154 +sub_80FB154: @ 80FB154 + push {lr} + ldr r0, _080FB16C @ =gUnknown_3005E10 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_80FBE20 + ldr r1, _080FB170 @ =gUnknown_3005450 + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080FB16C: .4byte gUnknown_3005E10 +_080FB170: .4byte gUnknown_3005450 + thumb_func_end sub_80FB154 + + thumb_func_start sub_80FB174 +sub_80FB174: @ 80FB174 + ldr r1, _080FB17C @ =gUnknown_3005450 + ldr r0, _080FB180 @ =sub_80FB154 + str r0, [r1] + bx lr + .align 2, 0 +_080FB17C: .4byte gUnknown_3005450 +_080FB180: .4byte sub_80FB154 + thumb_func_end sub_80FB174 + + thumb_func_start sub_80FB184 +sub_80FB184: @ 80FB184 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + movs r6, 0 + cmp r4, 0x32 + bne _080FB19A + b _080FB2D8 +_080FB19A: + cmp r4, 0x32 + bgt _080FB1CA + cmp r4, 0x13 + bgt _080FB1B8 + cmp r4, 0x12 + blt _080FB1A8 + b _080FB366 +_080FB1A8: + cmp r4, 0x10 + bne _080FB1AE + b _080FB366 +_080FB1AE: + cmp r4, 0x10 + bgt _080FB204 + cmp r4, 0 + beq _080FB1F6 + b _080FB366 +_080FB1B8: + cmp r4, 0x30 + bne _080FB1BE + b _080FB2E4 +_080FB1BE: + cmp r4, 0x30 + ble _080FB1C4 + b _080FB2CC +_080FB1C4: + cmp r4, 0x14 + beq _080FB2A0 + b _080FB366 +_080FB1CA: + cmp r4, 0x44 + bgt _080FB1DC + cmp r4, 0x42 + blt _080FB1D4 + b _080FB366 +_080FB1D4: + cmp r4, 0x33 + bne _080FB1DA + b _080FB2E4 +_080FB1DA: + b _080FB366 +_080FB1DC: + cmp r4, 0xF3 + bne _080FB1E2 + b _080FB332 +_080FB1E2: + cmp r4, 0xF3 + bgt _080FB1EE + cmp r4, 0xF0 + bge _080FB1EC + b _080FB366 +_080FB1EC: + b _080FB34C +_080FB1EE: + cmp r4, 0xFF + bne _080FB1F4 + b _080FB34C +_080FB1F4: + b _080FB366 +_080FB1F6: + ldr r1, _080FB200 @ =gUnknown_3005450 + movs r0, 0x2 + strh r0, [r1, 0x4] + b _080FB366 + .align 2, 0 +_080FB200: .4byte gUnknown_3005450 +_080FB204: + ldr r0, _080FB268 @ =gUnknown_3005E10 + ldrh r0, [r0, 0x14] + bl sub_80FB564 + movs r5, 0 + movs r0, 0x1 + mov r8, r0 + ldr r1, _080FB26C @ =gUnknown_3005450 + mov r9, r1 + ldr r3, _080FB270 @ =0x0000098d + add r3, r9 + mov r10, r3 + movs r7, 0x7F +_080FB21E: + ldr r0, _080FB268 @ =gUnknown_3005E10 + ldrh r0, [r0, 0x14] + asrs r0, r5 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _080FB286 + ldr r0, _080FB274 @ =gUnknown_3007460 + lsls r1, r5, 5 + adds r1, 0x14 + ldr r0, [r0] + adds r0, r1 + ldrb r0, [r0, 0x10] + adds r4, r7, 0 + ands r4, r0 + bl sub_80F9800 + ldrb r1, [r0, 0xA] + adds r0, r7, 0 + ands r0, r1 + cmp r4, r0 + bne _080FB27C + ldr r0, _080FB278 @ =0x00000989 + add r0, r9 + adds r0, r5, r0 + movs r1, 0 + strb r1, [r0] + mov r3, r10 + adds r2, r5, r3 + strb r1, [r2] + movs r0, 0x20 + adds r1, r5, 0 + movs r3, 0x1 + bl rfu_setRecvBuffer + b _080FB286 + .align 2, 0 +_080FB268: .4byte gUnknown_3005E10 +_080FB26C: .4byte gUnknown_3005450 +_080FB270: .4byte 0x0000098d +_080FB274: .4byte gUnknown_3007460 +_080FB278: .4byte 0x00000989 +_080FB27C: + mov r0, r8 + lsls r0, r5 + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_080FB286: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _080FB21E + cmp r6, 0 + beq _080FB366 + adds r0, r6, 0 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + b _080FB366 +_080FB2A0: + ldr r4, _080FB2C0 @ =gUnknown_3005450 + ldr r1, _080FB2C4 @ =0x0000099f + adds r0, r4, r1 + ldr r1, _080FB2C8 @ =gUnknown_3005E10 + ldrb r2, [r0] + ldrb r0, [r1] + cmp r2, r0 + beq _080FB2BA + eors r0, r2 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_080FB2BA: + movs r0, 0x11 + strh r0, [r4, 0x4] + b _080FB366 + .align 2, 0 +_080FB2C0: .4byte gUnknown_3005450 +_080FB2C4: .4byte 0x0000099f +_080FB2C8: .4byte gUnknown_3005E10 +_080FB2CC: + ldr r0, _080FB2D4 @ =gUnknown_3005450 + adds r0, 0xF0 + b _080FB362 + .align 2, 0 +_080FB2D4: .4byte gUnknown_3005450 +_080FB2D8: + ldr r0, _080FB2E0 @ =gUnknown_3005450 + adds r0, 0xF0 + movs r1, 0x3 + b _080FB364 + .align 2, 0 +_080FB2E0: .4byte gUnknown_3005450 +_080FB2E4: + ldr r1, _080FB314 @ =gUnknown_3005450 + adds r2, r1, 0 + adds r2, 0xF0 + movs r0, 0x4 + strb r0, [r2] + ldr r3, _080FB318 @ =0x0000099a + adds r1, r3 + ldr r0, _080FB31C @ =gUnknown_3005E10 + ldrb r2, [r0, 0x14] + ldrb r0, [r1] + adds r3, r0, 0 + bics r3, r2 + adds r2, r3, 0 + strb r2, [r1] + ldr r0, _080FB320 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FB328 + cmp r2, 0 + bne _080FB324 + adds r0, r4, 0 + bl sub_80FB0E8 + b _080FB328 + .align 2, 0 +_080FB314: .4byte gUnknown_3005450 +_080FB318: .4byte 0x0000099a +_080FB31C: .4byte gUnknown_3005E10 +_080FB320: .4byte gUnknown_3003F64 +_080FB324: + bl sub_80FB174 +_080FB328: + movs r0, 0x2 + adds r1, r4, 0 + bl sub_80FB9E4 + b _080FB366 +_080FB332: + movs r0, 0x1 + movs r1, 0xF3 + bl sub_80FB9E4 + movs r0, 0xF3 + bl sub_80FB0E8 + ldr r0, _080FB348 @ =gUnknown_3005450 + adds r0, 0xEF + b _080FB362 + .align 2, 0 +_080FB348: .4byte gUnknown_3005450 +_080FB34C: + adds r0, r4, 0 + bl sub_80FB0E8 + movs r0, 0x1 + adds r1, r4, 0 + bl sub_80FB9E4 + ldr r0, _080FB374 @ =gUnknown_3005450 + ldr r1, _080FB378 @ =0x00000993 + adds r0, r1 + ldrb r1, [r0] +_080FB362: + movs r1, 0x1 +_080FB364: + strb r1, [r0] +_080FB366: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FB374: .4byte gUnknown_3005450 +_080FB378: .4byte 0x00000993 + thumb_func_end sub_80FB184 + + thumb_func_start sub_80FB37C +sub_80FB37C: @ 80FB37C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x31 + bne _080FB388 + b _080FB4E8 +_080FB388: + cmp r4, 0x31 + bgt _080FB3B6 + cmp r4, 0x22 + beq _080FB40C + cmp r4, 0x22 + bgt _080FB3A4 + cmp r4, 0x20 + beq _080FB3F4 + cmp r4, 0x20 + ble _080FB39E + b _080FB556 +_080FB39E: + cmp r4, 0 + beq _080FB3E6 + b _080FB556 +_080FB3A4: + cmp r4, 0x24 + beq _080FB432 + cmp r4, 0x24 + blt _080FB428 + cmp r4, 0x25 + beq _080FB47C + cmp r4, 0x30 + beq _080FB486 + b _080FB556 +_080FB3B6: + cmp r4, 0x44 + bgt _080FB3CC + cmp r4, 0x42 + blt _080FB3C0 + b _080FB556 +_080FB3C0: + cmp r4, 0x33 + beq _080FB49A + cmp r4, 0x33 + bge _080FB3CA + b _080FB504 +_080FB3CA: + b _080FB556 +_080FB3CC: + cmp r4, 0xF3 + bne _080FB3D2 + b _080FB524 +_080FB3D2: + cmp r4, 0xF3 + bgt _080FB3DE + cmp r4, 0xF0 + bge _080FB3DC + b _080FB556 +_080FB3DC: + b _080FB53C +_080FB3DE: + cmp r4, 0xFF + bne _080FB3E4 + b _080FB53C +_080FB3E4: + b _080FB556 +_080FB3E6: + ldr r1, _080FB3F0 @ =gUnknown_3005450 + movs r0, 0x6 + strh r0, [r1, 0x4] + b _080FB556 + .align 2, 0 +_080FB3F0: .4byte gUnknown_3005450 +_080FB3F4: + ldr r0, _080FB400 @ =gUnknown_3005450 + ldr r1, _080FB404 @ =gUnknown_3005E10 + ldrh r1, [r1, 0x14] + ldr r2, _080FB408 @ =0x00000985 + adds r0, r2 + b _080FB554 + .align 2, 0 +_080FB400: .4byte gUnknown_3005450 +_080FB404: .4byte gUnknown_3005E10 +_080FB408: .4byte 0x00000985 +_080FB40C: + ldr r0, _080FB41C @ =gUnknown_3005450 + ldr r1, _080FB420 @ =gUnknown_3005E10 + ldrh r1, [r1, 0x14] + ldr r2, _080FB424 @ =0x000008f6 + adds r0, r2 + ldrb r2, [r0] + b _080FB554 + .align 2, 0 +_080FB41C: .4byte gUnknown_3005450 +_080FB420: .4byte gUnknown_3005E10 +_080FB424: .4byte 0x000008f6 +_080FB428: + movs r0, 0x2 + adds r1, r4, 0 + bl sub_80FB9E4 + b _080FB556 +_080FB432: + ldr r4, _080FB468 @ =gUnknown_3005450 + movs r1, 0 + movs r0, 0xB + strh r0, [r4, 0x4] + ldr r2, _080FB46C @ =0x0000093d + adds r0, r4, r2 + strb r1, [r0] + ldr r0, _080FB470 @ =0x0000093e + adds r2, r4, r0 + strb r1, [r2] + ldr r1, _080FB474 @ =0x000008f6 + adds r5, r4, r1 + ldrb r1, [r5] + movs r0, 0x20 + movs r3, 0x1 + bl rfu_setRecvBuffer + ldrb r1, [r5] + ldr r2, _080FB478 @ =0x000008f7 + adds r4, r2 + movs r0, 0x10 + adds r2, r4, 0 + movs r3, 0x46 + bl rfu_setRecvBuffer + b _080FB556 + .align 2, 0 +_080FB468: .4byte gUnknown_3005450 +_080FB46C: .4byte 0x0000093d +_080FB470: .4byte 0x0000093e +_080FB474: .4byte 0x000008f6 +_080FB478: .4byte 0x000008f7 +_080FB47C: + movs r0, 0x2 + movs r1, 0x25 + bl sub_80FB9E4 + b _080FB556 +_080FB486: + ldr r0, _080FB4D8 @ =gUnknown_3005450 + adds r2, r0, 0 + adds r2, 0xF0 + movs r1, 0x2 + strb r1, [r2] + ldr r1, _080FB4DC @ =0x0000093e + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x6 + beq _080FB556 +_080FB49A: + ldr r2, _080FB4D8 @ =gUnknown_3005450 + adds r1, r2, 0 + adds r1, 0xF0 + ldrb r0, [r1] + cmp r0, 0x2 + beq _080FB4AA + movs r0, 0x4 + strb r0, [r1] +_080FB4AA: + ldr r1, _080FB4DC @ =0x0000093e + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x9 + beq _080FB4BC + movs r0, 0x2 + adds r1, r4, 0 + bl sub_80FB9E4 +_080FB4BC: + ldr r0, _080FB4E0 @ =gUnknown_843EDF8 + movs r1, 0x5 + movs r2, 0x5 + bl nullsub_87 + ldr r0, _080FB4E4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FB556 + adds r0, r4, 0 + bl sub_80FB0E8 + b _080FB556 + .align 2, 0 +_080FB4D8: .4byte gUnknown_3005450 +_080FB4DC: .4byte 0x0000093e +_080FB4E0: .4byte gUnknown_843EDF8 +_080FB4E4: .4byte gUnknown_3003F64 +_080FB4E8: + ldr r0, _080FB4FC @ =gUnknown_3005450 + adds r0, 0xF0 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _080FB500 @ =gUnknown_843EE10 + movs r1, 0x5 + movs r2, 0x5 + bl nullsub_87 + b _080FB556 + .align 2, 0 +_080FB4FC: .4byte gUnknown_3005450 +_080FB500: .4byte gUnknown_843EE10 +_080FB504: + ldr r1, _080FB51C @ =gUnknown_3005450 + adds r2, r1, 0 + adds r2, 0xF0 + movs r0, 0x3 + strb r0, [r2] + ldr r2, _080FB520 @ =0x000008f4 + adds r1, r2 + ldrb r0, [r1] + movs r0, 0x1 + strb r0, [r1] + b _080FB556 + .align 2, 0 +_080FB51C: .4byte gUnknown_3005450 +_080FB520: .4byte 0x000008f4 +_080FB524: + movs r0, 0x1 + movs r1, 0xF3 + bl sub_80FB9E4 + movs r0, 0xF3 + bl sub_80FB0E8 + ldr r0, _080FB538 @ =gUnknown_3005450 + adds r0, 0xEF + b _080FB552 + .align 2, 0 +_080FB538: .4byte gUnknown_3005450 +_080FB53C: + movs r0, 0x1 + adds r1, r4, 0 + bl sub_80FB9E4 + adds r0, r4, 0 + bl sub_80FB0E8 + ldr r0, _080FB55C @ =gUnknown_3005450 + ldr r1, _080FB560 @ =0x00000993 + adds r0, r1 + ldrb r1, [r0] +_080FB552: + movs r1, 0x1 +_080FB554: + strb r1, [r0] +_080FB556: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FB55C: .4byte gUnknown_3005450 +_080FB560: .4byte 0x00000993 + thumb_func_end sub_80FB37C + + thumb_func_start sub_80FB564 +sub_80FB564: @ 80FB564 + push {r4-r6,lr} + adds r3, r0, 0 + movs r2, 0 + movs r6, 0x1 + ldr r0, _080FB598 @ =gUnknown_3005450 + ldr r4, _080FB59C @ =0x000009a2 + adds r1, r0, r4 + movs r5, 0 + movs r4, 0xFF +_080FB576: + adds r0, r3, 0 + asrs r0, r2 + ands r0, r6 + cmp r0, 0 + beq _080FB588 + strb r5, [r1] + ldrb r0, [r1, 0x4] + orrs r0, r4 + strb r0, [r1, 0x4] +_080FB588: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x3 + ble _080FB576 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FB598: .4byte gUnknown_3005450 +_080FB59C: .4byte 0x000009a2 + thumb_func_end sub_80FB564 + + thumb_func_start sub_80FB5A0 +sub_80FB5A0: @ 80FB5A0 + push {r4-r7,lr} + adds r5, r0, 0 + movs r3, 0 + movs r2, 0 + movs r4, 0x1 + ldr r6, _080FB5E8 @ =gUnknown_3007460 + movs r7, 0x7F +_080FB5AE: + adds r0, r5, 0 + asrs r0, r2 + ands r0, r4 + cmp r0, 0 + beq _080FB5D4 + lsls r1, r2, 5 + adds r1, 0x14 + ldr r0, [r6] + adds r0, r1 + ldrb r1, [r0, 0x10] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0x45 + bne _080FB5D4 + adds r0, r4, 0 + lsls r0, r2 + orrs r3, r0 + lsls r0, r3, 24 + lsrs r3, r0, 24 +_080FB5D4: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080FB5AE + adds r0, r3, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FB5E8: .4byte gUnknown_3007460 + thumb_func_end sub_80FB5A0 + + thumb_func_start sub_80FB5EC +sub_80FB5EC: @ 80FB5EC + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x25 + bne _080FB5F8 + b _080FB86C +_080FB5F8: + cmp r4, 0x25 + bgt _080FB63A + cmp r4, 0x14 + bne _080FB602 + b _080FB780 +_080FB602: + cmp r4, 0x14 + bgt _080FB61A + cmp r4, 0x11 + beq _080FB69A + cmp r4, 0x11 + ble _080FB610 + b _080FB9C2 +_080FB610: + cmp r4, 0 + beq _080FB684 + cmp r4, 0x10 + beq _080FB690 + b _080FB9C2 +_080FB61A: + cmp r4, 0x22 + bne _080FB620 + b _080FB7E8 +_080FB620: + cmp r4, 0x22 + bgt _080FB62C + cmp r4, 0x20 + bne _080FB62A + b _080FB7D0 +_080FB62A: + b _080FB9C2 +_080FB62C: + cmp r4, 0x23 + bne _080FB632 + b _080FB804 +_080FB632: + cmp r4, 0x24 + bne _080FB638 + b _080FB83A +_080FB638: + b _080FB9C2 +_080FB63A: + cmp r4, 0x44 + bgt _080FB66A + cmp r4, 0x42 + blt _080FB644 + b _080FB9C2 +_080FB644: + cmp r4, 0x32 + bne _080FB64A + b _080FB894 +_080FB64A: + cmp r4, 0x32 + bgt _080FB65C + cmp r4, 0x30 + bne _080FB654 + b _080FB8C0 +_080FB654: + cmp r4, 0x31 + bne _080FB65A + b _080FB876 +_080FB65A: + b _080FB9C2 +_080FB65C: + cmp r4, 0x33 + bne _080FB662 + b _080FB8C8 +_080FB662: + cmp r4, 0x40 + bne _080FB668 + b _080FB97C +_080FB668: + b _080FB9C2 +_080FB66A: + cmp r4, 0xF3 + bne _080FB670 + b _080FB98C +_080FB670: + cmp r4, 0xF3 + bgt _080FB67C + cmp r4, 0xF0 + bge _080FB67A + b _080FB9C2 +_080FB67A: + b _080FB9A8 +_080FB67C: + cmp r4, 0xFF + bne _080FB682 + b _080FB9A8 +_080FB682: + b _080FB9C2 +_080FB684: + ldr r1, _080FB68C @ =gUnknown_3005450 + movs r0, 0x11 + strh r0, [r1, 0x4] + b _080FB9C2 + .align 2, 0 +_080FB68C: .4byte gUnknown_3005450 +_080FB690: + movs r0, 0x4 + movs r1, 0 + bl sub_80FB9E4 + b _080FB9C2 +_080FB69A: + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + bne _080FB758 + ldr r5, _080FB704 @ =gUnknown_3005450 + ldr r1, _080FB708 @ =0x00000991 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080FB758 + ldr r0, _080FB70C @ =gUnknown_3005E10 + ldrh r0, [r0, 0x14] + bl sub_80FB5A0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080FB722 + adds r0, r4, 0 + bl sub_80F886C + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1 + mov r12, r2 + mov r1, r12 + lsls r1, r0 + lsls r1, 24 + lsrs r1, 24 + ldr r7, _080FB710 @ =0x0000099e + adds r6, r5, r7 + ldrb r2, [r6] + cmp r2, 0 + bne _080FB714 + movs r0, 0x9A + lsls r0, 4 + adds r3, r5, r0 + ldrb r0, [r3] + cmp r0, 0 + bne _080FB714 + subs r7, 0x1 + adds r0, r5, r7 + strb r1, [r0] + eors r1, r4 + orrs r1, r2 + strb r1, [r6] + mov r0, r12 + strb r0, [r3] + b _080FB722 + .align 2, 0 +_080FB704: .4byte gUnknown_3005450 +_080FB708: .4byte 0x00000991 +_080FB70C: .4byte gUnknown_3005E10 +_080FB710: .4byte 0x0000099e +_080FB714: + ldr r0, _080FB744 @ =gUnknown_3005450 + ldr r1, _080FB748 @ =0x0000099e + adds r0, r1 + ldrb r2, [r0] + adds r1, r4, 0 + orrs r1, r2 + strb r1, [r0] +_080FB722: + ldr r0, _080FB74C @ =gUnknown_3005E10 + ldrh r1, [r0, 0x14] + cmp r4, r1 + beq _080FB772 + ldr r2, _080FB744 @ =gUnknown_3005450 + ldr r7, _080FB750 @ =0x0000099b + adds r3, r2, r7 + adds r0, r4, 0 + eors r0, r1 + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + ldr r0, _080FB754 @ =0x0000099c + adds r2, r0 + movs r0, 0x2 + strb r0, [r2] + b _080FB772 + .align 2, 0 +_080FB744: .4byte gUnknown_3005450 +_080FB748: .4byte 0x0000099e +_080FB74C: .4byte gUnknown_3005E10 +_080FB750: .4byte 0x0000099b +_080FB754: .4byte 0x0000099c +_080FB758: + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x54 + bne _080FB772 + ldr r0, _080FB77C @ =gUnknown_3005E10 + ldrb r0, [r0] + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_080FB772: + ldr r0, _080FB77C @ =gUnknown_3005E10 + ldrh r0, [r0, 0x14] + bl sub_80FB564 + b _080FB9C2 + .align 2, 0 +_080FB77C: .4byte gUnknown_3005E10 +_080FB780: + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + beq _080FB7B6 + ldr r4, _080FB7C8 @ =gUnknown_3005E10 + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + bls _080FB7B6 + ldrb r0, [r4, 0x14] + bl sub_80F886C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 17 + lsls r1, r0 + lsrs r1, 24 + ldrb r0, [r4] + eors r1, r0 + adds r0, r1, 0 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_080FB7B6: + ldr r1, _080FB7CC @ =gUnknown_3005450 + ldrh r0, [r1, 0x4] + cmp r0, 0xF + beq _080FB7C0 + b _080FB9C2 +_080FB7C0: + movs r0, 0x10 + strh r0, [r1, 0x4] + b _080FB9C2 + .align 2, 0 +_080FB7C8: .4byte gUnknown_3005E10 +_080FB7CC: .4byte gUnknown_3005450 +_080FB7D0: + ldr r0, _080FB7DC @ =gUnknown_3005450 + ldr r1, _080FB7E0 @ =gUnknown_3005E10 + ldrh r1, [r1, 0x14] + ldr r2, _080FB7E4 @ =0x00000985 + adds r0, r2 + b _080FB9C0 + .align 2, 0 +_080FB7DC: .4byte gUnknown_3005450 +_080FB7E0: .4byte gUnknown_3005E10 +_080FB7E4: .4byte 0x00000985 +_080FB7E8: + ldr r0, _080FB7F8 @ =gUnknown_3005450 + ldr r1, _080FB7FC @ =gUnknown_3005E10 + ldrh r1, [r1, 0x14] + ldr r7, _080FB800 @ =0x000008f6 + adds r0, r7 + ldrb r2, [r0] + b _080FB9C0 + .align 2, 0 +_080FB7F8: .4byte gUnknown_3005450 +_080FB7FC: .4byte gUnknown_3005E10 +_080FB800: .4byte 0x000008f6 +_080FB804: + ldr r1, _080FB824 @ =gUnknown_3005450 + movs r0, 0x12 + strh r0, [r1, 0x4] + ldr r0, _080FB828 @ =0x00000987 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x1 + bhi _080FB830 + adds r0, 0x1 + strb r0, [r1] + ldr r0, _080FB82C @ =sub_80FC028 + movs r1, 0x2 + bl sub_807741C + b _080FB9C2 + .align 2, 0 +_080FB824: .4byte gUnknown_3005450 +_080FB828: .4byte 0x00000987 +_080FB82C: .4byte sub_80FC028 +_080FB830: + movs r0, 0x2 + movs r1, 0x23 + bl sub_80FB9E4 + b _080FB9C2 +_080FB83A: + ldr r4, _080FB860 @ =gUnknown_3005450 + movs r0, 0xD + strh r0, [r4, 0x4] + movs r0, 0x3 + movs r1, 0 + bl sub_80FB9E4 + ldr r1, _080FB864 @ =0x000008f6 + adds r0, r4, r1 + ldrb r1, [r0] + ldr r2, _080FB868 @ =0x000008f7 + adds r4, r2 + movs r0, 0x10 + adds r2, r4, 0 + movs r3, 0x46 + bl rfu_setRecvBuffer + b _080FB9C2 + .align 2, 0 +_080FB860: .4byte gUnknown_3005450 +_080FB864: .4byte 0x000008f6 +_080FB868: .4byte 0x000008f7 +_080FB86C: + movs r0, 0x2 + movs r1, 0x25 + bl sub_80FB9E4 + b _080FB9C2 +_080FB876: + ldr r0, _080FB88C @ =gUnknown_3005E10 + ldrb r1, [r0] + ldrh r0, [r0, 0x14] + ands r1, r0 + cmp r1, 0 + bne _080FB884 + b _080FB9C2 +_080FB884: + ldr r0, _080FB890 @ =gUnknown_3005450 + adds r0, 0xF0 + movs r1, 0x1 + b _080FB9C0 + .align 2, 0 +_080FB88C: .4byte gUnknown_3005E10 +_080FB890: .4byte gUnknown_3005450 +_080FB894: + ldr r2, _080FB8B4 @ =gUnknown_3005450 + adds r1, r2, 0 + adds r1, 0xF0 + movs r0, 0x3 + strb r0, [r1] + ldr r0, _080FB8B8 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + beq _080FB8AA + b _080FB9C2 +_080FB8AA: + ldr r7, _080FB8BC @ =0x000008f4 + adds r0, r2, r7 + ldrb r1, [r0] + movs r1, 0x1 + b _080FB9C0 + .align 2, 0 +_080FB8B4: .4byte gUnknown_3005450 +_080FB8B8: .4byte gUnknown_3007460 +_080FB8BC: .4byte 0x000008f4 +_080FB8C0: + ldr r0, _080FB900 @ =gUnknown_3005450 + adds r0, 0xF0 + movs r1, 0x2 + strb r1, [r0] +_080FB8C8: + ldr r2, _080FB900 @ =gUnknown_3005450 + adds r1, r2, 0 + adds r1, 0xF0 + ldrb r0, [r1] + cmp r0, 0x2 + beq _080FB8D8 + movs r0, 0x4 + strb r0, [r1] +_080FB8D8: + ldrb r0, [r2, 0xC] + cmp r0, 0x1 + bne _080FB916 + ldr r0, _080FB904 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FB934 + ldr r0, _080FB908 @ =0x0000099a + adds r2, r0 + ldr r0, _080FB90C @ =gUnknown_3005E10 + ldrb r1, [r0, 0x14] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + cmp r0, 0 + bne _080FB910 + adds r0, r4, 0 + bl sub_80FB0E8 + b _080FB934 + .align 2, 0 +_080FB900: .4byte gUnknown_3005450 +_080FB904: .4byte gUnknown_3003F64 +_080FB908: .4byte 0x0000099a +_080FB90C: .4byte gUnknown_3005E10 +_080FB910: + bl sub_80FB174 + b _080FB934 +_080FB916: + ldr r1, _080FB964 @ =0x0000099c + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x2 + beq _080FB934 + ldr r0, _080FB968 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FB934 + adds r0, r4, 0 + bl sub_80FB0E8 + movs r0, 0 + bl sub_80FD760 +_080FB934: + ldr r0, _080FB96C @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xFF + bne _080FB95A + ldr r0, _080FB970 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x7] + cmp r0, 0 + bne _080FB95A + ldr r0, _080FB974 @ =sub_80F8B34 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FB95A + ldr r1, _080FB978 @ =gUnknown_3005450 + movs r0, 0x11 + strh r0, [r1, 0x4] +_080FB95A: + movs r0, 0x2 + adds r1, r4, 0 + bl sub_80FB9E4 + b _080FB9C2 + .align 2, 0 +_080FB964: .4byte 0x0000099c +_080FB968: .4byte gUnknown_3003F64 +_080FB96C: .4byte gUnknown_3007460 +_080FB970: .4byte gUnknown_3005E10 +_080FB974: .4byte sub_80F8B34 +_080FB978: .4byte gUnknown_3005450 +_080FB97C: + ldr r0, _080FB984 @ =gUnknown_3005450 + ldr r2, _080FB988 @ =0x0000099b + adds r0, r2 + b _080FB9BE + .align 2, 0 +_080FB984: .4byte gUnknown_3005450 +_080FB988: .4byte 0x0000099b +_080FB98C: + movs r0, 0x1 + movs r1, 0xF3 + bl sub_80FB9E4 + movs r0, 0xF3 + bl sub_80FB0E8 + ldr r0, _080FB9A4 @ =gUnknown_3005450 + adds r0, 0xEF + movs r1, 0x1 + b _080FB9C0 + .align 2, 0 +_080FB9A4: .4byte gUnknown_3005450 +_080FB9A8: + adds r0, r4, 0 + bl sub_80FB0E8 + movs r0, 0x1 + adds r1, r4, 0 + bl sub_80FB9E4 + ldr r0, _080FB9C8 @ =gUnknown_3005450 + ldr r7, _080FB9CC @ =0x00000993 + adds r0, r7 + ldrb r1, [r0] +_080FB9BE: + movs r1, 0 +_080FB9C0: + strb r1, [r0] +_080FB9C2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FB9C8: .4byte gUnknown_3005450 +_080FB9CC: .4byte 0x00000993 + thumb_func_end sub_80FB5EC + + thumb_func_start sub_80FB9D0 +sub_80FB9D0: @ 80FB9D0 + ldr r0, _080FB9DC @ =gUnknown_3005450 + ldr r1, _080FB9E0 @ =0x0000099c + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + bx lr + .align 2, 0 +_080FB9DC: .4byte gUnknown_3005450 +_080FB9E0: .4byte 0x0000099c + thumb_func_end sub_80FB9D0 + + thumb_func_start sub_80FB9E4 +sub_80FB9E4: @ 80FB9E4 + ldr r2, _080FB9F0 @ =gUnknown_3005450 + adds r3, r2, 0 + adds r3, 0xF1 + strb r0, [r3] + strh r1, [r2, 0xA] + bx lr + .align 2, 0 +_080FB9F0: .4byte gUnknown_3005450 + thumb_func_end sub_80FB9E4 + + thumb_func_start sub_80FB9F4 +sub_80FB9F4: @ 80FB9F4 + ldr r0, _080FB9FC @ =gUnknown_3005450 + adds r0, 0xF1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080FB9FC: .4byte gUnknown_3005450 + thumb_func_end sub_80FB9F4 + + thumb_func_start sub_80FBA00 +sub_80FBA00: @ 80FBA00 + push {lr} + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x1 + bls _080FBA14 + movs r0, 0 + b _080FBA16 +_080FBA14: + movs r0, 0x1 +_080FBA16: + pop {r1} + bx r1 + thumb_func_end sub_80FBA00 + + thumb_func_start sub_80FBA1C +sub_80FBA1C: @ 80FBA1C + ldr r0, _080FBA28 @ =gUnknown_3005450 + movs r1, 0x9A + lsls r1, 4 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080FBA28: .4byte gUnknown_3005450 + thumb_func_end sub_80FBA1C + + thumb_func_start sub_80FBA2C +sub_80FBA2C: @ 80FBA2C + ldr r0, _080FBA34 @ =gUnknown_3005450 + ldrb r0, [r0, 0xC] + bx lr + .align 2, 0 +_080FBA34: .4byte gUnknown_3005450 + thumb_func_end sub_80FBA2C + + thumb_func_start sub_80FBA38 +sub_80FBA38: @ 80FBA38 + push {lr} + bl sub_80FDA14 + pop {r0} + bx r0 + thumb_func_end sub_80FBA38 + + thumb_func_start sub_80FBA44 +sub_80FBA44: @ 80FBA44 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r1, _080FBA5C @ =gUnknown_3003ED0 + ldr r2, _080FBA60 @ =0x05000014 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080FBA5C: .4byte gUnknown_3003ED0 +_080FBA60: .4byte 0x05000014 + thumb_func_end sub_80FBA44 + + thumb_func_start sub_80FBA64 +sub_80FBA64: @ 80FBA64 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80FBA64 + + thumb_func_start sub_80FBA78 +sub_80FBA78: @ 80FBA78 + push {r4,lr} + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + bl sub_8070528 + ldr r0, _080FBAF4 @ =sub_80FBA64 + bl sub_80006F4 + bl sub_8009480 + lsls r0, 24 + cmp r0, 0 + beq _080FBAEC + ldr r1, _080FBAF8 @ =gUnknown_202271A + ldr r2, _080FBAFC @ =0x00001111 + adds r0, r2, 0 + strh r0, [r1] + bl sub_800B1F4 + bl sub_8009804 + ldr r0, _080FBB00 @ =gUnknown_30030F0 + ldrh r0, [r0, 0x24] + bl sub_8044EE8 + movs r4, 0 +_080FBAB4: + bl sub_8044EC8 + ldr r1, _080FBB04 @ =gUnknown_300500C + ldr r1, [r1] + adds r1, 0xA + adds r1, r4 + strb r0, [r1] + adds r4, 0x1 + cmp r4, 0x3 + ble _080FBAB4 + movs r1, 0xAA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + bl sub_80FBB20 + ldr r0, _080FBB08 @ =sub_80FBB74 + bl sub_8000544 +_080FBAEC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FBAF4: .4byte sub_80FBA64 +_080FBAF8: .4byte gUnknown_202271A +_080FBAFC: .4byte 0x00001111 +_080FBB00: .4byte gUnknown_30030F0 +_080FBB04: .4byte gUnknown_300500C +_080FBB08: .4byte sub_80FBB74 + thumb_func_end sub_80FBA78 + + thumb_func_start sub_80FBB0C +sub_80FBB0C: @ 80FBB0C + push {lr} + ldr r0, _080FBB1C @ =sub_80F8B34 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080FBB1C: .4byte sub_80F8B34 + thumb_func_end sub_80FBB0C + + thumb_func_start sub_80FBB20 +sub_80FBB20: @ 80FBB20 + push {r4,lr} + ldr r4, _080FBB44 @ =nullsub_89 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _080FBB3E + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + ldr r1, _080FBB48 @ =gUnknown_3005450 + adds r1, 0x66 + strb r0, [r1] +_080FBB3E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FBB44: .4byte nullsub_89 +_080FBB48: .4byte gUnknown_3005450 + thumb_func_end sub_80FBB20 + + thumb_func_start sub_80FBB4C +sub_80FBB4C: @ 80FBB4C + push {lr} + ldr r0, _080FBB6C @ =nullsub_89 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FBB66 + ldr r0, _080FBB70 @ =gUnknown_3005450 + adds r0, 0x66 + ldrb r0, [r0] + bl sub_8077508 +_080FBB66: + pop {r0} + bx r0 + .align 2, 0 +_080FBB6C: .4byte nullsub_89 +_080FBB70: .4byte gUnknown_3005450 + thumb_func_end sub_80FBB4C + + thumb_func_start sub_80FBB74 +sub_80FBB74: @ 80FBB74 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80FBB74 + + thumb_func_start sub_80FBB8C +sub_80FBB8C: @ 80FBB8C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r1, _080FBBC4 @ =gUnknown_3005450 + movs r0, 0x1 + strb r0, [r1, 0xC] + bl sub_80FAF1C + ldr r0, _080FBBC8 @ =sub_80FB184 + movs r1, 0 + bl sub_80FD430 + ldr r2, _080FBBCC @ =gUnknown_203ABF0 + adds r1, r2, 0 + ldr r0, _080FBBD0 @ =gUnknown_843EBB4 + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldr r0, _080FBBD4 @ =gUnknown_843EBCC + subs r4, 0x1 + adds r4, r0 + ldrb r0, [r4] + strh r0, [r2, 0x2] + bl sub_80F8E74 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBBC4: .4byte gUnknown_3005450 +_080FBBC8: .4byte sub_80FB184 +_080FBBCC: .4byte gUnknown_203ABF0 +_080FBBD0: .4byte gUnknown_843EBB4 +_080FBBD4: .4byte gUnknown_843EBCC + thumb_func_end sub_80FBB8C + + thumb_func_start sub_80FBBD8 +sub_80FBBD8: @ 80FBBD8 + push {lr} + ldr r1, _080FBBF4 @ =gUnknown_3005450 + movs r0, 0 + strb r0, [r1, 0xC] + bl sub_80FAF1C + ldr r0, _080FBBF8 @ =sub_80FB37C + ldr r1, _080FBBFC @ =sub_80F8D20 + bl sub_80FD430 + bl sub_80F8F10 + pop {r0} + bx r0 + .align 2, 0 +_080FBBF4: .4byte gUnknown_3005450 +_080FBBF8: .4byte sub_80FB37C +_080FBBFC: .4byte sub_80F8D20 + thumb_func_end sub_80FBBD8 + + thumb_func_start sub_80FBC00 +sub_80FBC00: @ 80FBC00 + push {r4-r7,lr} + ldr r0, _080FBC4C @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080FBC46 + ldr r4, _080FBC50 @ =gUnknown_3005450 + movs r5, 0 + movs r0, 0x2 + strb r0, [r4, 0xC] + bl sub_80FAF1C + ldr r0, _080FBC54 @ =sub_80FB5EC + movs r1, 0 + bl sub_80FD430 + ldr r2, _080FBC58 @ =gUnknown_203ABF0 + adds r1, r2, 0 + ldr r0, _080FBC5C @ =gUnknown_843EBB4 + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + strb r5, [r2, 0x11] + movs r0, 0x96 + lsls r0, 2 + strh r0, [r2, 0x12] + ldr r0, _080FBC60 @ =sub_80F8B34 + movs r1, 0x1 + bl sub_807741C + adds r4, 0x67 + strb r0, [r4] +_080FBC46: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FBC4C: .4byte gUnknown_203ADFA +_080FBC50: .4byte gUnknown_3005450 +_080FBC54: .4byte sub_80FB5EC +_080FBC58: .4byte gUnknown_203ABF0 +_080FBC5C: .4byte gUnknown_843EBB4 +_080FBC60: .4byte sub_80F8B34 + thumb_func_end sub_80FBC00 + + thumb_func_start sub_80FBC64 +sub_80FBC64: @ 80FBC64 + ldrb r1, [r0, 0x1] + lsls r1, 8 + ldrb r0, [r0] + orrs r0, r1 + bx lr + thumb_func_end sub_80FBC64 + + thumb_func_start sub_80FBC70 +sub_80FBC70: @ 80FBC70 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + movs r0, 0xFF + mov r9, r0 + movs r7, 0 + ldr r1, _080FBCF4 @ =gUnknown_3007460 + mov r8, r1 +_080FBC8E: + lsls r4, r7, 5 + adds r5, r4, 0 + adds r5, 0x14 + mov r1, r8 + ldr r0, [r1] + adds r0, r5 + adds r0, 0x8 + bl sub_80FBC64 + lsls r0, 16 + lsrs r6, r0, 16 + mov r1, r8 + ldr r0, [r1] + adds r0, r4 + ldrh r0, [r0, 0x18] + bl sub_80FA44C + cmp r0, 0 + beq _080FBCD8 + mov r0, r8 + ldr r1, [r0] + adds r1, r5 + adds r1, 0x15 + ldr r0, [sp] + bl sub_8008E28 + cmp r0, 0 + bne _080FBCD8 + cmp r10, r6 + bne _080FBCD8 + mov r9, r7 + mov r1, r8 + ldr r0, [r1] + adds r0, r4 + ldrb r0, [r0, 0x16] + cmp r0, 0xFF + bne _080FBCE2 +_080FBCD8: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _080FBC8E +_080FBCE2: + mov r0, r9 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FBCF4: .4byte gUnknown_3007460 + thumb_func_end sub_80FBC70 + + thumb_func_start sub_80FBCF8 +sub_80FBCF8: @ 80FBCF8 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r0, r6, 24 + lsrs r0, 24 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + ldr r4, _080FBD3C @ =gUnknown_3005450 + ldr r0, _080FBD40 @ =0x0000099a + adds r5, r4, r0 + ldrb r0, [r5] + bics r0, r6 + strb r0, [r5] + ldr r1, _080FBD44 @ =0x00000992 + adds r6, r4, r1 + ldrb r1, [r6] + movs r0, 0x1 + bl rfu_clearSlot + ldrb r0, [r5] + ldr r1, _080FBD48 @ =0x0000093f + adds r4, r1 + adds r1, r4, 0 + movs r2, 0x46 + bl rfu_UNI_setSendData + ldrb r0, [r5] + bl sub_80F886C + strb r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBD3C: .4byte gUnknown_3005450 +_080FBD40: .4byte 0x0000099a +_080FBD44: .4byte 0x00000992 +_080FBD48: .4byte 0x0000093f + thumb_func_end sub_80FBCF8 + + thumb_func_start sub_80FBD4C +sub_80FBD4C: @ 80FBD4C + push {lr} + lsls r1, 16 + lsrs r1, 16 + bl sub_80FBC70 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _080FBD66 + movs r0, 0x1 + lsls r0, r1 + bl sub_80FBCF8 +_080FBD66: + pop {r0} + bx r0 + thumb_func_end sub_80FBD4C + + thumb_func_start sub_80FBD6C +sub_80FBD6C: @ 80FBD6C + push {r4-r6,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _080FBDAC + movs r3, 0 + movs r2, 0 + ldr r5, _080FBDB4 @ =gUnknown_3005DE6 + adds r6, r5, 0x4 +_080FBD7C: + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r4 + bne _080FBD9A + ldrb r0, [r6] + asrs r0, r2 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080FBD9A + adds r0, r1, 0 + lsls r0, r2 + orrs r3, r0 + lsls r0, r3, 24 + lsrs r3, r0, 24 +_080FBD9A: + adds r2, 0x1 + cmp r2, 0x3 + ble _080FBD7C + cmp r3, 0 + beq _080FBDAC + adds r0, r3, 0 + movs r1, 0x2 + bl sub_80FBE20 +_080FBDAC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBDB4: .4byte gUnknown_3005DE6 + thumb_func_end sub_80FBD6C + + thumb_func_start sub_80FBDB8 +sub_80FBDB8: @ 80FBDB8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r6, _080FBE10 @ =gUnknown_3003F50 + ldrh r0, [r6] + cmp r0, 0 + bne _080FBE08 + ldr r5, _080FBE14 @ =gUnknown_3005450 + movs r1, 0x9A + lsls r1, 4 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080FBE08 + movs r0, 0xED + lsls r0, 8 + bl sub_80F9D04 + ldr r1, _080FBE18 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + strh r1, [r6, 0x2] + ldrh r1, [r0, 0xA] + strh r1, [r6, 0x4] + ldr r1, _080FBE1C @ =gUnknown_843EC41 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r0, r1 + ldrb r1, [r5, 0xD] + ldrb r0, [r0] + subs r1, r0 + strb r1, [r5, 0xD] + ldrb r0, [r5, 0xD] + strh r0, [r6, 0x6] + adds r0, r4, 0 + bl sub_8077508 +_080FBE08: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBE10: .4byte gUnknown_3003F50 +_080FBE14: .4byte gUnknown_3005450 +_080FBE18: .4byte gUnknown_3005090 +_080FBE1C: .4byte gUnknown_843EC41 + thumb_func_end sub_80FBDB8 + + thumb_func_start sub_80FBE20 +sub_80FBE20: @ 80FBE20 + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + ldr r5, _080FBE50 @ =sub_80FBDB8 + adds r0, r5, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _080FBE58 + adds r0, r5, 0 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080FBE54 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0x8] + b _080FBE68 + .align 2, 0 +_080FBE50: .4byte sub_80FBDB8 +_080FBE54: .4byte gUnknown_3005090 +_080FBE58: + ldr r0, _080FBE7C @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + orrs r4, r0 + strh r4, [r1, 0x8] +_080FBE68: + ldr r1, _080FBE7C @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + strh r6, [r0, 0xA] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBE7C: .4byte gUnknown_3005090 + thumb_func_end sub_80FBE20 + + thumb_func_start sub_80FBE80 +sub_80FBE80: @ 80FBE80 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080FBED8 @ =gUnknown_3005098 + adds r4, r0, r1 + bl sub_80F8EA4 + lsls r0, 24 + cmp r0, 0 + beq _080FBF30 + adds r0, r4, 0 + adds r0, 0x10 + bl sub_80FBC64 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBC70 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080FBF18 + ldr r0, _080FBEDC @ =gUnknown_3007460 + ldr r0, [r0] + lsls r1, r2, 5 + adds r0, r1 + ldrb r0, [r0, 0x16] + cmp r0, 0xFF + beq _080FBEE8 + ldr r0, _080FBEE0 @ =gUnknown_3005450 + ldr r1, _080FBEE4 @ =0x000008f5 + adds r0, r1 + strb r2, [r0] + bl sub_80F8ECC + cmp r0, 0 + beq _080FBF36 + b _080FBF10 + .align 2, 0 +_080FBED8: .4byte gUnknown_3005098 +_080FBEDC: .4byte gUnknown_3007460 +_080FBEE0: .4byte gUnknown_3005450 +_080FBEE4: .4byte 0x000008f5 +_080FBEE8: + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r5, 0x7F + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x15 + beq _080FBF30 + bl sub_80F9800 + ldrb r1, [r0, 0xA] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x16 + beq _080FBF30 + movs r1, 0xE0 + lsls r1, 7 + movs r0, 0x2 + bl sub_80FB9E4 +_080FBF10: + adds r0, r6, 0 + bl sub_8077508 + b _080FBF36 +_080FBF18: + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + ldr r0, _080FBF28 @ =gUnknown_3005450 + ldr r1, _080FBF2C @ =0x000008f5 + adds r0, r1 + strb r2, [r0] + b _080FBF36 + .align 2, 0 +_080FBF28: .4byte gUnknown_3005450 +_080FBF2C: .4byte 0x000008f5 +_080FBF30: + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] +_080FBF36: + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0xF0 + ble _080FBF4E + movs r1, 0xE0 + lsls r1, 7 + movs r0, 0x2 + bl sub_80FB9E4 + adds r0, r6, 0 + bl sub_8077508 +_080FBF4E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80FBE80 + + thumb_func_start sub_80FBF54 +sub_80FBF54: @ 80FBF54 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r5, r1, 16 + lsrs r5, 16 + ldr r0, _080FBF8C @ =gUnknown_3005450 + adds r0, 0xF1 + movs r1, 0 + strb r1, [r0] + ldr r0, _080FBF90 @ =sub_80FBE80 + movs r1, 0x3 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080FBF94 @ =gUnknown_3005098 + adds r4, r0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8008D84 + strh r5, [r4, 0x10] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBF8C: .4byte gUnknown_3005450 +_080FBF90: .4byte sub_80FBE80 +_080FBF94: .4byte gUnknown_3005098 + thumb_func_end sub_80FBF54 + + thumb_func_start sub_80FBF98 +sub_80FBF98: @ 80FBF98 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r5, r0, 16 + bl sub_80F9800 + ldrb r1, [r0, 0xA] + movs r2, 0x7F + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x45 + bne _080FBFBE + ldrb r1, [r4, 0xA] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x45 + beq _080FC01E +_080FBFBA: + movs r0, 0x1 + b _080FC020 +_080FBFBE: + ldrb r1, [r4, 0xA] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x40 + bne _080FBFBA + cmp r5, 0x44 + bne _080FC01E + ldr r5, _080FBFEC @ =gUnknown_300555A + ldrh r0, [r5, 0x8] + ldr r3, _080FBFF0 @ =0x000003ff + adds r2, r3, 0 + ands r2, r0 + movs r0, 0xCE + lsls r0, 1 + cmp r2, r0 + bne _080FBFF4 + ldrh r1, [r4, 0x8] + adds r0, r3, 0 + ands r0, r1 + cmp r0, r2 + beq _080FC01E + b _080FBFBA + .align 2, 0 +_080FBFEC: .4byte gUnknown_300555A +_080FBFF0: .4byte 0x000003ff +_080FBFF4: + ldrh r1, [r4, 0x8] + adds r0, r3, 0 + ands r0, r1 + cmp r0, r2 + bne _080FBFBA + ldrb r2, [r4, 0xB] + movs r0, 0xFE + ldrb r3, [r5, 0xB] + adds r1, r0, 0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _080FBFBA + ldrb r2, [r4, 0x9] + movs r0, 0xFC + ldrb r3, [r5, 0x9] + adds r1, r0, 0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _080FBFBA +_080FC01E: + movs r0, 0 +_080FC020: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FBF98 + + thumb_func_start sub_80FC028 +sub_80FC028: @ 80FC028 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + mov r8, r5 + ldr r6, _080FC0E0 @ =gUnknown_3005450 + adds r0, r6, 0 + adds r0, 0xF1 + ldrb r0, [r0] + cmp r0, 0x4 + bne _080FC046 + adds r0, r5, 0 + bl sub_8077508 +_080FC046: + ldr r1, _080FC0E4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + movs r1, 0x96 + lsls r1, 17 + cmp r0, r1 + ble _080FC070 + movs r1, 0xE0 + lsls r1, 7 + movs r0, 0x2 + bl sub_80FB9E4 + adds r0, r5, 0 + bl sub_8077508 +_080FC070: + ldr r1, _080FC0E8 @ =0x00000985 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC108 + ldr r0, _080FC0EC @ =gUnknown_3005E10 + ldrb r0, [r0, 0x6] + cmp r0, 0 + bne _080FC108 + movs r2, 0x86 + lsls r2, 1 + adds r0, r6, r2 + bl sub_80FBC64 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _080FC0F0 @ =0x00000119 + adds r0, r6, r2 + bl sub_80FBC70 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080FC108 + movs r1, 0xA + ldrsh r0, [r4, r1] + ldr r7, _080FC0F4 @ =gUnknown_3007460 + lsls r4, r2, 5 + adds r2, r4, 0 + adds r2, 0x14 + ldr r1, [r7] + adds r1, r2 + adds r1, 0x6 + bl sub_80FBF98 + cmp r0, 0 + bne _080FC0F8 + ldr r0, [r7] + adds r1, r0, r4 + ldrb r0, [r1, 0x16] + cmp r0, 0xFF + beq _080FC108 + ldrh r0, [r1, 0x14] + movs r1, 0x5A + bl sub_80FD610 + lsls r0, 24 + cmp r0, 0 + bne _080FC108 + movs r0, 0xA + strh r0, [r6, 0x4] + adds r0, r5, 0 + bl sub_8077508 + b _080FC108 + .align 2, 0 +_080FC0E0: .4byte gUnknown_3005450 +_080FC0E4: .4byte gUnknown_3005090 +_080FC0E8: .4byte 0x00000985 +_080FC0EC: .4byte gUnknown_3005E10 +_080FC0F0: .4byte 0x00000119 +_080FC0F4: .4byte gUnknown_3007460 +_080FC0F8: + movs r1, 0xE0 + lsls r1, 7 + movs r0, 0x2 + bl sub_80FB9E4 + mov r0, r8 + bl sub_8077508 +_080FC108: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80FC028 + + thumb_func_start sub_80FC114 +sub_80FC114: @ 80FC114 + push {r4-r7,lr} + adds r3, r0, 0 + adds r5, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + ldr r6, _080FC184 @ =gUnknown_3005450 + ldr r1, _080FC188 @ =0x00000987 + adds r0, r6, r1 + movs r7, 0 + strb r7, [r0] + adds r0, r6, 0 + adds r0, 0xF1 + strb r7, [r0] + ldr r1, _080FC18C @ =0x00000119 + adds r0, r6, r1 + adds r1, r3, 0 + bl sub_8008D84 + movs r1, 0x85 + lsls r1, 1 + adds r0, r6, r1 + adds r1, r5, 0 + movs r2, 0xD + bl memcpy + bl sub_80FEB3C + ldr r0, _080FC190 @ =sub_80FC028 + movs r1, 0x2 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r5, _080FC194 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r5 + strh r4, [r1, 0xA] + ldr r0, _080FC198 @ =sub_80F8B34 + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + cmp r4, 0x45 + bne _080FC19C + cmp r1, 0xFF + beq _080FC1AA + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r5 + movs r1, 0x1 + strh r1, [r0, 0x16] + b _080FC1AA + .align 2, 0 +_080FC184: .4byte gUnknown_3005450 +_080FC188: .4byte 0x00000987 +_080FC18C: .4byte 0x00000119 +_080FC190: .4byte sub_80FC028 +_080FC194: .4byte gUnknown_3005090 +_080FC198: .4byte sub_80F8B34 +_080FC19C: + cmp r2, 0xFF + beq _080FC1AA + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r5 + strh r7, [r0, 0x16] +_080FC1AA: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80FC114 + + thumb_func_start sub_80FC1B0 +sub_80FC1B0: @ 80FC1B0 + push {lr} + ldr r0, _080FC1C0 @ =gUnknown_3005450 + adds r0, 0xF0 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080FC1C4 + movs r0, 0 + b _080FC1C6 + .align 2, 0 +_080FC1C0: .4byte gUnknown_3005450 +_080FC1C4: + movs r0, 0x1 +_080FC1C6: + pop {r1} + bx r1 + thumb_func_end sub_80FC1B0 + + thumb_func_start sub_80FC1CC +sub_80FC1CC: @ 80FC1CC + push {r4,lr} + movs r1, 0 + ldr r0, _080FC1F0 @ =gUnknown_3005E10 + ldrb r2, [r0] + ldr r4, _080FC1F4 @ =gUnknown_3005DD9 + movs r3, 0x1 +_080FC1D8: + adds r0, r2, 0 + asrs r0, r1 + ands r0, r3 + cmp r0, 0 + beq _080FC1F8 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _080FC1F8 + movs r0, 0 + b _080FC200 + .align 2, 0 +_080FC1F0: .4byte gUnknown_3005E10 +_080FC1F4: .4byte gUnknown_3005DD9 +_080FC1F8: + adds r1, 0x1 + cmp r1, 0x3 + ble _080FC1D8 + movs r0, 0x1 +_080FC200: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FC1CC + + thumb_func_start sub_80FC208 +sub_80FC208: @ 80FC208 + push {r4,lr} + movs r4, 0 +_080FC20C: + lsls r2, r4, 24 + lsrs r2, 24 + ldr r0, _080FC224 @ =gUnknown_843EE28 + movs r1, 0 + bl nullsub_87 + adds r4, 0x1 + cmp r4, 0x13 + ble _080FC20C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FC224: .4byte gUnknown_843EE28 + thumb_func_end sub_80FC208 + + thumb_func_start sub_80FC228 +sub_80FC228: @ 80FC228 + push {r4-r7,lr} + mov r7, r8 + push {r7} + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1C + movs r2, 0x13 + movs r3, 0x2 + bl nullsub_88 + ldr r4, _080FC2F8 @ =gUnknown_3007460 + ldr r0, [r4] + ldrb r0, [r0, 0x2] + movs r1, 0x14 + movs r2, 0x1 + movs r3, 0x1 + bl nullsub_88 + ldr r0, [r4] + ldrb r0, [r0, 0x3] + movs r1, 0x17 + movs r2, 0x1 + movs r3, 0x1 + bl nullsub_88 + ldr r0, _080FC2FC @ =gUnknown_3005450 + ldrb r0, [r0, 0xC] + cmp r0, 0x1 + bne _080FC304 + movs r6, 0 + adds r7, r4, 0 + movs r5, 0x14 +_080FC26C: + ldr r2, [r7] + ldrb r0, [r2, 0x7] + asrs r0, r6 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080FC2AA + lsls r0, r6, 5 + adds r0, r2, r0 + ldrh r0, [r0, 0x18] + adds r4, r6, 0x3 + lsls r4, 24 + lsrs r4, 24 + adds r2, r4, 0 + movs r3, 0x4 + bl nullsub_88 + ldr r0, [r7] + adds r0, r5 + adds r0, 0x6 + movs r1, 0x6 + adds r2, r4, 0 + bl nullsub_87 + ldr r0, [r7] + adds r0, r5 + adds r0, 0x15 + movs r1, 0x16 + adds r2, r4, 0 + bl nullsub_87 +_080FC2AA: + adds r5, 0x20 + adds r6, 0x1 + cmp r6, 0x3 + ble _080FC26C + movs r6, 0 + ldr r0, _080FC2FC @ =gUnknown_3005450 + mov r8, r0 +_080FC2B8: + movs r5, 0 + adds r7, r6, 0x1 + lsls r0, r6, 3 + adds r2, r6, 0 + adds r2, 0xB + subs r0, r6 + lsls r0, 1 + mov r1, r8 + adds r1, 0x14 + adds r4, r0, r1 + lsls r6, r2, 24 +_080FC2CE: + ldrb r0, [r4] + lsls r1, r5, 25 + lsrs r1, 24 + lsrs r2, r6, 24 + movs r3, 0x2 + bl nullsub_88 + adds r4, 0x1 + adds r5, 0x1 + cmp r5, 0xD + ble _080FC2CE + adds r6, r7, 0 + cmp r6, 0x3 + ble _080FC2B8 + ldr r0, _080FC300 @ =gUnknown_843EE64 + movs r1, 0x1 + movs r2, 0xF + bl nullsub_87 + b _080FC436 + .align 2, 0 +_080FC2F8: .4byte gUnknown_3007460 +_080FC2FC: .4byte gUnknown_3005450 +_080FC300: .4byte gUnknown_843EE64 +_080FC304: + ldr r1, [r4] + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _080FC3A0 + ldrb r0, [r1, 0x7] + cmp r0, 0 + beq _080FC3A0 + movs r6, 0 + movs r5, 0xC0 + lsls r5, 18 +_080FC318: + lsrs r4, r5, 24 + movs r0, 0 + movs r1, 0x1 + adds r2, r4, 0 + movs r3, 0x4 + bl nullsub_88 + ldr r0, _080FC38C @ =gUnknown_843EE47 + movs r1, 0x6 + adds r2, r4, 0 + bl nullsub_87 + ldr r0, _080FC390 @ =gUnknown_843EE57 + movs r1, 0x16 + adds r2, r4, 0 + bl nullsub_87 + movs r1, 0x80 + lsls r1, 17 + adds r5, r1 + adds r6, 0x1 + cmp r6, 0x3 + ble _080FC318 + ldr r5, _080FC394 @ =gUnknown_3007460 + ldr r1, [r5] + ldr r4, _080FC398 @ =gUnknown_3005450 + ldr r0, _080FC39C @ =0x000008f6 + adds r4, r0 + ldrb r0, [r4] + lsls r0, 5 + adds r1, r0 + ldrh r0, [r1, 0x18] + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x4 + bl nullsub_88 + ldrb r1, [r4] + lsls r1, 5 + adds r1, 0x14 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x6 + movs r1, 0x6 + movs r2, 0x3 + bl nullsub_87 + ldrb r1, [r4] + lsls r1, 5 + adds r1, 0x14 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x15 + movs r1, 0x16 + movs r2, 0x3 + bl nullsub_87 + b _080FC436 + .align 2, 0 +_080FC38C: .4byte gUnknown_843EE47 +_080FC390: .4byte gUnknown_843EE57 +_080FC394: .4byte gUnknown_3007460 +_080FC398: .4byte gUnknown_3005450 +_080FC39C: .4byte 0x000008f6 +_080FC3A0: + movs r6, 0 + ldr r1, _080FC440 @ =gUnknown_3007460 + ldr r0, [r1] + ldrb r0, [r0, 0x8] + cmp r6, r0 + bge _080FC3FC + adds r7, r1, 0 + movs r1, 0x14 + mov r8, r1 +_080FC3B2: + ldr r0, [r7] + lsls r5, r6, 5 + adds r1, r0, r5 + ldrb r0, [r1, 0x16] + cmp r0, 0xFF + beq _080FC3EE + ldrh r0, [r1, 0x18] + adds r4, r6, 0x3 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0x1 + adds r2, r4, 0 + movs r3, 0x4 + bl nullsub_88 + ldr r0, [r7] + adds r0, r5 + ldrh r0, [r0, 0x14] + movs r1, 0x6 + adds r2, r4, 0 + movs r3, 0x4 + bl nullsub_88 + ldr r0, [r7] + add r0, r8 + adds r0, 0x15 + movs r1, 0x16 + adds r2, r4, 0 + bl nullsub_87 +_080FC3EE: + movs r0, 0x20 + add r8, r0 + adds r6, 0x1 + ldr r0, [r7] + ldrb r0, [r0, 0x8] + cmp r6, r0 + blt _080FC3B2 +_080FC3FC: + cmp r6, 0x3 + bgt _080FC436 + lsls r0, r6, 24 + movs r1, 0xC0 + lsls r1, 18 + adds r5, r0, r1 +_080FC408: + lsrs r4, r5, 24 + movs r0, 0 + movs r1, 0x1 + adds r2, r4, 0 + movs r3, 0x4 + bl nullsub_88 + ldr r0, _080FC444 @ =gUnknown_843EE47 + movs r1, 0x6 + adds r2, r4, 0 + bl nullsub_87 + ldr r0, _080FC448 @ =gUnknown_843EE57 + movs r1, 0x16 + adds r2, r4, 0 + bl nullsub_87 + movs r0, 0x80 + lsls r0, 17 + adds r5, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _080FC408 +_080FC436: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC440: .4byte gUnknown_3007460 +_080FC444: .4byte gUnknown_843EE47 +_080FC448: .4byte gUnknown_843EE57 + thumb_func_end sub_80FC228 + + thumb_func_start sub_80FC44C +sub_80FC44C: @ 80FC44C + ldr r0, _080FC458 @ =gUnknown_3005450 + ldr r1, _080FC45C @ =0x000008d2 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080FC458: .4byte gUnknown_3005450 +_080FC45C: .4byte 0x000008d2 + thumb_func_end sub_80FC44C + + thumb_func_start sub_80FC460 +sub_80FC460: @ 80FC460 + ldr r0, _080FC46C @ =gUnknown_3005450 + ldr r1, _080FC470 @ =0x0000069e + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080FC46C: .4byte gUnknown_3005450 +_080FC470: .4byte 0x0000069e + thumb_func_end sub_80FC460 + + thumb_func_start nullsub_89 +nullsub_89: @ 80FC474 + bx lr + thumb_func_end nullsub_89 + + thumb_func_start sub_80FC478 +sub_80FC478: @ 80FC478 + push {r4,r5,lr} + adds r3, r0, 0 + movs r0, 0 + movs r4, 0 + movs r5, 0x46 +_080FC482: + adds r2, r0, 0x1 + movs r1, 0x45 + muls r0, r5 + adds r0, r3 + adds r0, 0x45 +_080FC48C: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FC48C + adds r0, r2, 0 + cmp r0, 0x13 + ble _080FC482 + movs r1, 0 + ldr r2, _080FC4C8 @ =0x00000579 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, 0xAF + lsls r2, 3 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC4CC @ =0x0000057a + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC4D0 @ =0x0000057b + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FC4C8: .4byte 0x00000579 +_080FC4CC: .4byte 0x0000057a +_080FC4D0: .4byte 0x0000057b + thumb_func_end sub_80FC478 + + thumb_func_start sub_80FC4D4 +sub_80FC4D4: @ 80FC4D4 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0 + movs r4, 0 +_080FC4DC: + lsls r0, r1, 3 + adds r2, r1, 0x1 + subs r0, r1 + movs r1, 0xD + lsls r0, 1 + adds r0, r3 + adds r0, 0xD +_080FC4EA: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FC4EA + adds r1, r2, 0 + cmp r1, 0x27 + ble _080FC4DC + movs r1, 0 + ldr r2, _080FC524 @ =0x00000231 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, 0x8C + lsls r2, 2 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC528 @ =0x00000232 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC52C @ =0x00000233 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FC524: .4byte 0x00000231 +_080FC528: .4byte 0x00000232 +_080FC52C: .4byte 0x00000233 + thumb_func_end sub_80FC4D4 + + thumb_func_start sub_80FC530 +sub_80FC530: @ 80FC530 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0 + movs r4, 0 +_080FC538: + lsls r0, r1, 8 + adds r2, r1, 0x1 + movs r1, 0xFF + adds r0, r3 + adds r0, 0xFF +_080FC542: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FC542 + adds r1, r2, 0 + cmp r1, 0x1 + ble _080FC538 + movs r1, 0 + ldr r2, _080FC57C @ =0x00000201 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, 0x80 + lsls r2, 2 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC580 @ =0x00000202 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _080FC584 @ =0x00000203 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FC57C: .4byte 0x00000201 +_080FC580: .4byte 0x00000202 +_080FC584: .4byte 0x00000203 + thumb_func_end sub_80FC530 + + thumb_func_start sub_80FC588 +sub_80FC588: @ 80FC588 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _080FC620 @ =0x0000057a + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0x13 + bhi _080FC628 + ldr r0, _080FC624 @ =0x04000208 + ldrh r1, [r0] + adds r7, r1, 0 + movs r1, 0 + strh r1, [r0] + movs r3, 0 + movs r2, 0 +_080FC5A6: + adds r1, r6, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _080FC5BA + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _080FC5BA + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_080FC5BA: + adds r2, 0xE + cmp r2, 0x45 + ble _080FC5A6 + cmp r3, 0x5 + beq _080FC618 + movs r2, 0 + movs r0, 0xAF + lsls r0, 3 + adds r3, r5, r0 + movs r4, 0x46 +_080FC5CE: + ldrb r0, [r3] + adds r1, r0, 0 + muls r1, r4 + adds r1, r2, r1 + adds r1, r5, r1 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x45 + ble _080FC5CE + movs r1, 0xAF + lsls r1, 3 + adds r4, r5, r1 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x14 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _080FC620 @ =0x0000057a + adds r1, r5, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, 0 + adds r0, r6, 0 + adds r0, 0x45 +_080FC610: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r6 + bge _080FC610 +_080FC618: + ldr r0, _080FC624 @ =0x04000208 + strh r7, [r0] + b _080FC632 + .align 2, 0 +_080FC620: .4byte 0x0000057a +_080FC624: .4byte 0x04000208 +_080FC628: + ldr r1, _080FC638 @ =0x0000057b + adds r0, r5, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] +_080FC632: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC638: .4byte 0x0000057b + thumb_func_end sub_80FC588 + + thumb_func_start sub_80FC63C +sub_80FC63C: @ 80FC63C + push {r4-r7,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldr r1, _080FC6CC @ =0x00000232 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, 0x27 + bhi _080FC6D4 + ldr r1, _080FC6D0 @ =0x04000208 + ldrh r0, [r1] + adds r7, r0, 0 + movs r0, 0 + strh r0, [r1] + movs r2, 0 + ldrb r0, [r5] + cmp r0, 0 + bne _080FC66C +_080FC65E: + adds r2, 0x1 + cmp r2, 0xD + bgt _080FC66C + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC65E +_080FC66C: + cmp r2, 0xE + beq _080FC6C4 + movs r2, 0 + movs r0, 0x8C + lsls r0, 2 + adds r3, r6, r0 +_080FC678: + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r2, r0 + adds r0, r6, r0 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0xD + ble _080FC678 + movs r1, 0x8C + lsls r1, 2 + adds r4, r6, r1 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x28 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _080FC6CC @ =0x00000232 + adds r1, r6, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, 0 + adds r0, r5, 0 + adds r0, 0xD +_080FC6BC: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r5 + bge _080FC6BC +_080FC6C4: + ldr r0, _080FC6D0 @ =0x04000208 + strh r7, [r0] + b _080FC6DE + .align 2, 0 +_080FC6CC: .4byte 0x00000232 +_080FC6D0: .4byte 0x04000208 +_080FC6D4: + ldr r1, _080FC6E4 @ =0x00000233 + adds r0, r6, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] +_080FC6DE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC6E4: .4byte 0x00000233 + thumb_func_end sub_80FC63C + + thumb_func_start sub_80FC6E8 +sub_80FC6E8: @ 80FC6E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r3, r1, 0 + ldr r1, _080FC730 @ =0x04000208 + ldrh r0, [r1] + mov r8, r0 + movs r0, 0 + strh r0, [r1] + movs r1, 0xAF + lsls r1, 3 + adds r0, r5, r1 + ldr r7, _080FC734 @ =0x00000579 + adds r4, r5, r7 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _080FC718 + ldr r1, _080FC738 @ =0x0000057b + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC73C +_080FC718: + movs r1, 0 + adds r0, r3, 0 + adds r0, 0x45 +_080FC71E: + strb r1, [r0] + subs r0, 0x1 + cmp r0, r3 + bge _080FC71E + ldr r0, _080FC730 @ =0x04000208 + mov r7, r8 + strh r7, [r0] + movs r0, 0 + b _080FC784 + .align 2, 0 +_080FC730: .4byte 0x04000208 +_080FC734: .4byte 0x00000579 +_080FC738: .4byte 0x0000057b +_080FC73C: + movs r2, 0 + movs r6, 0x46 +_080FC740: + adds r1, r3, r2 + ldrb r0, [r4] + adds r7, r0, 0 + muls r7, r6 + adds r0, r7, 0 + adds r0, r2, r0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x45 + ble _080FC740 + ldr r0, _080FC790 @ =0x00000579 + adds r4, r5, r0 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x14 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r7, _080FC794 @ =0x0000057a + adds r1, r5, r7 + ldrb r0, [r1] + subs r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC798 @ =0x04000208 + mov r1, r8 + strh r1, [r0] + movs r0, 0x1 +_080FC784: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC790: .4byte 0x00000579 +_080FC794: .4byte 0x0000057a +_080FC798: .4byte 0x04000208 + thumb_func_end sub_80FC6E8 + + thumb_func_start sub_80FC79C +sub_80FC79C: @ 80FC79C + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r1, 0x8C + lsls r1, 2 + adds r0, r5, r1 + adds r1, 0x1 + adds r4, r5, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _080FC7C0 + ldr r1, _080FC7C4 @ =0x00000233 + adds r0, r5, r1 + ldrb r0, [r0] + adds r2, r0, 0 + cmp r2, 0 + beq _080FC7C8 +_080FC7C0: + movs r0, 0 + b _080FC814 + .align 2, 0 +_080FC7C4: .4byte 0x00000233 +_080FC7C8: + ldr r1, _080FC81C @ =0x04000208 + ldrh r0, [r1] + adds r7, r0, 0 + strh r2, [r1] + movs r3, 0 +_080FC7D2: + adds r2, r6, r3 + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r3, r0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0xD + ble _080FC7D2 + ldr r0, _080FC820 @ =0x00000231 + adds r4, r5, r0 + ldrb r0, [r4] + adds r0, 0x1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0x28 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _080FC824 @ =0x00000232 + adds r1, r5, r0 + ldrb r0, [r1] + subs r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC81C @ =0x04000208 + strh r7, [r0] + movs r0, 0x1 +_080FC814: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC81C: .4byte 0x04000208 +_080FC820: .4byte 0x00000231 +_080FC824: .4byte 0x00000232 + thumb_func_end sub_80FC79C + + thumb_func_start sub_80FC828 +sub_80FC828: @ 80FC828 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _080FC83E + adds r0, r2, 0 + movs r1, 0 + bl sub_80FC888 + b _080FC880 +_080FC83E: + movs r3, 0 +_080FC840: + ldrb r1, [r2, 0x1C] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r3, r0 + adds r0, r2, r0 + adds r1, r4, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, 0xD + ble _080FC840 + ldrb r0, [r2, 0x1C] + adds r0, 0x1 + ldrb r1, [r2, 0x1C] + strb r0, [r2, 0x1C] + ldrb r1, [r2, 0x1C] + movs r0, 0x1 + ands r0, r1 + ldrb r1, [r2, 0x1C] + strb r0, [r2, 0x1C] + ldrb r0, [r2, 0x1E] + cmp r0, 0x1 + bhi _080FC87A + ldrb r0, [r2, 0x1E] + adds r0, 0x1 + ldrb r1, [r2, 0x1E] + strb r0, [r2, 0x1E] + b _080FC880 +_080FC87A: + ldrb r0, [r2, 0x1C] + ldrb r1, [r2, 0x1D] + strb r0, [r2, 0x1D] +_080FC880: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80FC828 + + thumb_func_start sub_80FC888 +sub_80FC888: @ 80FC888 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + ldrb r0, [r3, 0x1E] + cmp r0, 0 + bne _080FC898 + movs r0, 0 + b _080FC8D2 +_080FC898: + cmp r5, 0 + beq _080FC8B6 + movs r4, 0 +_080FC89E: + adds r2, r5, r4 + ldrb r1, [r3, 0x1D] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r4, r0 + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r2] + adds r4, 0x1 + cmp r4, 0xD + ble _080FC89E +_080FC8B6: + ldrb r0, [r3, 0x1D] + adds r0, 0x1 + ldrb r1, [r3, 0x1D] + strb r0, [r3, 0x1D] + ldrb r1, [r3, 0x1D] + movs r0, 0x1 + ands r0, r1 + ldrb r1, [r3, 0x1D] + strb r0, [r3, 0x1D] + ldrb r0, [r3, 0x1E] + subs r0, 0x1 + ldrb r1, [r3, 0x1E] + strb r0, [r3, 0x1E] + movs r0, 0x1 +_080FC8D2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80FC888 + + thumb_func_start sub_80FC8D8 +sub_80FC8D8: @ 80FC8D8 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + ldr r1, _080FC92C @ =0x00000202 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bhi _080FC930 + movs r2, 0 + movs r0, 0x80 + lsls r0, 2 + adds r4, r3, r0 +_080FC8F0: + ldrb r0, [r4] + lsls r0, 8 + adds r0, r2, r0 + adds r0, r3, r0 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0xFF + ble _080FC8F0 + movs r0, 0x80 + lsls r0, 2 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldrb r2, [r1] + movs r0, 0x1 + ands r0, r2 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC92C @ =0x00000202 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + b _080FC93A + .align 2, 0 +_080FC92C: .4byte 0x00000202 +_080FC930: + ldr r1, _080FC940 @ =0x00000203 + adds r0, r3, r1 + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] +_080FC93A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FC940: .4byte 0x00000203 + thumb_func_end sub_80FC8D8 + + thumb_func_start sub_80FC944 +sub_80FC944: @ 80FC944 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + movs r1, 0x80 + lsls r1, 2 + adds r0, r3, r1 + adds r1, 0x1 + adds r4, r3, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _080FC966 + ldr r1, _080FC96C @ =0x00000203 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080FC970 +_080FC966: + movs r0, 0 + b _080FC9AA + .align 2, 0 +_080FC96C: .4byte 0x00000203 +_080FC970: + movs r2, 0 +_080FC972: + adds r0, r5, r2 + ldrb r1, [r4] + lsls r1, 8 + adds r1, r2, r1 + adds r1, r3, r1 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0xFF + ble _080FC972 + ldr r0, _080FC9B0 @ =0x00000201 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + ldrb r2, [r1] + movs r0, 0x1 + ands r0, r2 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _080FC9B4 @ =0x00000202 + adds r1, r3, r0 + ldrb r0, [r1] + subs r0, 0x1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, 0x1 +_080FC9AA: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080FC9B0: .4byte 0x00000201 +_080FC9B4: .4byte 0x00000202 + thumb_func_end sub_80FC944 + + thumb_func_start sub_80FC9B8 +sub_80FC9B8: @ 80FC9B8 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + movs r5, 0 + cmp r1, 0x1 + beq _080FC9F6 + cmp r1, 0x1 + bgt _080FC9D2 + cmp r1, 0 + beq _080FC9DC + b _080FCA6A +_080FC9D2: + cmp r0, 0x2 + beq _080FCA16 + cmp r0, 0x3 + beq _080FCA36 + b _080FCA6A +_080FC9DC: + movs r4, 0 +_080FC9DE: + adds r0, r6, r4 + adds r1, r4, 0x1 + strb r1, [r0] + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, r1, 0 + cmp r4, 0xC7 + ble _080FC9DE + b _080FCA30 +_080FC9F6: + movs r4, 0 + adds r2, r6, 0 + adds r2, 0xC8 +_080FC9FC: + adds r0, r6, r4 + adds r1, r4, 0x1 + strb r1, [r0] + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, r1, 0 + cmp r4, 0x63 + ble _080FC9FC + strh r5, [r2] + b _080FCA6A +_080FCA16: + movs r4, 0 +_080FCA18: + bl sub_8044EC8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r6, r4 + strb r0, [r1] + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, 0x1 + cmp r4, 0xC7 + ble _080FCA18 +_080FCA30: + adds r0, r6, r4 + strh r5, [r0] + b _080FCA6A +_080FCA36: + movs r4, 0 + ldr r3, _080FCA70 @ =gUnknown_3002018 + ldrb r1, [r3] + ldrb r0, [r3] + adds r7, r0, 0x1 + adds r2, r1, 0x1 + movs r0, 0xFF + mov r12, r0 +_080FCA46: + adds r0, r6, r4 + adds r1, r4, 0x1 + strb r2, [r0] + adds r0, r4, r7 + mov r4, r12 + ands r0, r4 + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r2, 0x1 + adds r4, r1, 0 + cmp r1, 0xC7 + ble _080FCA46 + adds r0, r6, r1 + strh r5, [r0] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] +_080FCA6A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FCA70: .4byte gUnknown_3002018 + thumb_func_end sub_80FC9B8 + + thumb_func_start sub_80FCA74 +sub_80FCA74: @ 80FCA74 + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _080FCA98 + ldr r5, _080FCAA4 @ =gUnknown_843F104 + adds r2, r1, 0 +_080FCA84: + adds r1, r4, r3 + ldrb r0, [r2] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + adds r3, 0x1 + ldrb r0, [r2] + cmp r0, 0xFF + bne _080FCA84 +_080FCA98: + adds r1, r4, r3 + movs r0, 0 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCAA4: .4byte gUnknown_843F104 + thumb_func_end sub_80FCA74 + + thumb_func_start sub_80FCAA8 +sub_80FCAA8: @ 80FCAA8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldrb r0, [r1] + cmp r0, 0 + beq _080FCACC + ldr r5, _080FCAD8 @ =gUnknown_843F004 + adds r2, r1, 0 +_080FCAB8: + adds r1, r4, r3 + ldrb r0, [r2] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + adds r3, 0x1 + ldrb r0, [r2] + cmp r0, 0 + bne _080FCAB8 +_080FCACC: + adds r1, r4, r3 + movs r0, 0xFF + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCAD8: .4byte gUnknown_843F004 + thumb_func_end sub_80FCAA8 + + thumb_func_start sub_80FCADC +sub_80FCADC: @ 80FCADC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r0, _080FCB04 @ =gUnknown_3007460 + ldr r4, [r0] + ldrb r2, [r4, 0x2] + ldrb r1, [r4] + adds r7, r0, 0 + cmp r1, 0x1 + bne _080FCB32 + movs r3, 0 + ands r1, r2 + cmp r1, 0 + beq _080FCB0E + cmp r5, 0x1 + bne _080FCB08 + ldrb r0, [r4, 0xA] + b _080FCB4C + .align 2, 0 +_080FCB04: .4byte gUnknown_3007460 +_080FCB08: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080FCB0E: + lsrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bhi _080FCB4A + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _080FCB0E + adds r0, r6, 0x1 + cmp r5, r0 + bne _080FCB08 +_080FCB28: + ldr r0, [r7] + adds r0, 0xA + adds r0, r3 + ldrb r0, [r0] + b _080FCB4C +_080FCB32: + movs r3, 0 + movs r1, 0x1 +_080FCB36: + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080FCB28 + lsrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FCB36 +_080FCB4A: + movs r0, 0 +_080FCB4C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FCADC + + thumb_func_start sub_80FCB54 +sub_80FCB54: @ 80FCB54 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r4, 0 + ldr r0, _080FCC30 @ =gUnknown_300500C + mov r8, r0 + adds r6, r7, 0x2 + ldr r0, [r0] + adds r5, r0, 0 + adds r5, 0xA +_080FCB72: + adds r0, r6, r4 + adds r1, r5, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x1 + ble _080FCB72 + movs r4, 0 + lsls r2, 7 + mov r12, r2 + adds r1, r7, 0x4 +_080FCB88: + adds r0, r1, r4 + strb r3, [r0] + asrs r3, 8 + adds r4, 0x1 + cmp r4, 0x3 + ble _080FCB88 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x8] + movs r6, 0x1 + movs r1, 0x1 + ands r1, r0 + ldrb r2, [r7, 0xB] + movs r5, 0x2 + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0xB] + movs r4, 0x7F + mov r1, r9 + ands r1, r4 + ldrb r2, [r7, 0xA] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + ands r0, r4 + mov r1, r12 + orrs r0, r1 + strb r0, [r7, 0xA] + ldrb r0, [r7] + movs r1, 0x10 + negs r1, r1 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + ldrb r2, [r7, 0x1] + movs r0, 0x3D + negs r0, r0 + ands r0, r2 + movs r2, 0x10 + orrs r0, r2 + strb r0, [r7, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r1, r0 + subs r0, 0x10 + ands r1, r0 + subs r0, 0x20 + ands r1, r0 + strb r1, [r7] + ldr r0, _080FCC34 @ =0x00000844 + bl sub_806E6D0 + lsls r0, 7 + ldrb r1, [r7] + ands r4, r1 + orrs r4, r0 + strb r4, [r7] + bl sub_806E25C + ands r0, r6 + ldrb r1, [r7, 0x1] + ands r5, r1 + orrs r5, r0 + strb r5, [r7, 0x1] + ldr r0, _080FCC38 @ =0x0000082c + bl sub_806E6D0 + ands r6, r0 + lsls r6, 1 + ldrb r1, [r7, 0x1] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + orrs r0, r6 + strb r0, [r7, 0x1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FCC30: .4byte gUnknown_300500C +_080FCC34: .4byte 0x00000844 +_080FCC38: .4byte 0x0000082c + thumb_func_end sub_80FCB54 + + thumb_func_start sub_80FCC3C +sub_80FCC3C: @ 80FCC3C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + mov r8, r1 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r0, _080FCC90 @ =gUnknown_3005E10 + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + bne _080FCC98 + movs r0, 0x1 + mov r9, r0 + ldr r6, _080FCC94 @ =gUnknown_3007460 + ldr r0, [r6] + lsls r4, r5, 5 + adds r0, r4 + ldrh r0, [r0, 0x18] + bl sub_80FA44C + cmp r0, 0 + beq _080FCC78 + ldr r1, [r6] + ldrb r0, [r1, 0x7] + asrs r0, r5 + mov r2, r9 + ands r0, r2 + cmp r0, 0 + bne _080FCCB0 +_080FCC78: + adds r0, r7, 0 + movs r1, 0 + movs r2, 0xD + bl memset + mov r0, r8 + movs r1, 0 + movs r2, 0x8 + bl memset + b _080FCCE4 + .align 2, 0 +_080FCC90: .4byte gUnknown_3005E10 +_080FCC94: .4byte gUnknown_3007460 +_080FCC98: + movs r0, 0 + mov r9, r0 + ldr r6, _080FCCCC @ =gUnknown_3007460 + ldr r0, [r6] + lsls r4, r5, 5 + adds r0, r4 + ldrh r0, [r0, 0x18] + bl sub_80FA44C + cmp r0, 0 + beq _080FCCD0 + ldr r1, [r6] +_080FCCB0: + adds r1, r4, r1 + adds r1, 0x1A + adds r0, r7, 0 + movs r2, 0xD + bl memcpy + ldr r1, [r6] + adds r1, r4, r1 + adds r1, 0x29 + mov r0, r8 + movs r2, 0x8 + bl memcpy + b _080FCCE4 + .align 2, 0 +_080FCCCC: .4byte gUnknown_3007460 +_080FCCD0: + adds r0, r7, 0 + movs r1, 0 + movs r2, 0xD + bl memset + mov r0, r8 + movs r1, 0 + movs r2, 0x8 + bl memset +_080FCCE4: + mov r0, r9 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FCC3C + + thumb_func_start sub_80FCCF4 +sub_80FCCF4: @ 80FCCF4 + push {r4-r7,lr} + adds r3, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + movs r7, 0 + ldr r6, _080FCD2C @ =gUnknown_3007460 + ldr r0, [r6] + lsrs r4, r2, 19 + adds r2, r0, r4 + ldrh r1, [r2, 0x18] + ldr r0, _080FCD30 @ =0x00007f7d + cmp r1, r0 + bne _080FCD34 + adds r1, r2, 0 + adds r1, 0x1A + adds r0, r3, 0 + movs r2, 0xD + bl memcpy + ldr r1, [r6] + adds r1, r4, r1 + adds r1, 0x29 + adds r0, r5, 0 + movs r2, 0x8 + bl memcpy + movs r7, 0x1 + b _080FCD48 + .align 2, 0 +_080FCD2C: .4byte gUnknown_3007460 +_080FCD30: .4byte 0x00007f7d +_080FCD34: + adds r0, r3, 0 + movs r1, 0 + movs r2, 0xD + bl memset + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x8 + bl memset +_080FCD48: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FCCF4 + + thumb_func_start sub_80FCD50 +sub_80FCD50: @ 80FCD50 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _080FCD6C @ =gUnknown_3005440 + movs r2, 0xD + bl memcpy + ldr r1, _080FCD70 @ =gUnknown_3005E00 + adds r0, r4, 0 + movs r2, 0x8 + bl memcpy + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FCD6C: .4byte gUnknown_3005440 +_080FCD70: .4byte gUnknown_3005E00 + thumb_func_end sub_80FCD50 + + thumb_func_start sub_80FCD74 +sub_80FCD74: @ 80FCD74 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + cmp r3, 0 + bne _080FCD8A + cmp r2, 0 + bne _080FCD8A + movs r3, 0xE7 + movs r2, 0x8 +_080FCD8A: + ldr r0, _080FCDCC @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FCDE4 + ldr r0, _080FCDD0 @ =gUnknown_843F284 + adds r1, r3, 0 + movs r3, 0 + bl sub_8006F8C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080FCDD4 @ =gUnknown_202063C + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + adds r4, r0 + ldr r0, _080FCDD8 @ =0x00001234 + strh r0, [r4, 0x3C] + ldr r0, _080FCDDC @ =gUnknown_843F274 + ldrh r0, [r0, 0x6] + bl sub_8008804 + strh r0, [r4, 0x3A] + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldr r0, _080FCDE0 @ =gUnknown_203ACE4 + strb r5, [r0] + b _080FCE2A + .align 2, 0 +_080FCDCC: .4byte gUnknown_3007460 +_080FCDD0: .4byte gUnknown_843F284 +_080FCDD4: .4byte gUnknown_202063C +_080FCDD8: .4byte 0x00001234 +_080FCDDC: .4byte gUnknown_843F274 +_080FCDE0: .4byte gUnknown_203ACE4 +_080FCDE4: + ldr r0, _080FCE30 @ =gUnknown_843F284 + adds r1, r3, 0 + movs r3, 0 + bl sub_8006F8C + ldr r4, _080FCE34 @ =gUnknown_203ACE4 + strb r0, [r4] + ldr r5, _080FCE38 @ =gUnknown_202063C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _080FCE3C @ =0x00001234 + strh r1, [r0, 0x3C] + ldr r0, _080FCE40 @ =gUnknown_843F274 + ldrh r0, [r0, 0x6] + bl sub_8008804 + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + strh r0, [r1, 0x3A] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080FCE2A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCE30: .4byte gUnknown_843F284 +_080FCE34: .4byte gUnknown_203ACE4 +_080FCE38: .4byte gUnknown_202063C +_080FCE3C: .4byte 0x00001234 +_080FCE40: .4byte gUnknown_843F274 + thumb_func_end sub_80FCD74 + + thumb_func_start sub_80FCE44 +sub_80FCE44: @ 80FCE44 + push {r4,lr} + ldr r4, _080FCE90 @ =gUnknown_202063C + ldr r3, _080FCE94 @ =gUnknown_203ACE4 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r4 + movs r0, 0x3C + ldrsh r1, [r2, r0] + ldr r0, _080FCE98 @ =0x00001234 + cmp r1, r0 + bne _080FCE8A + movs r0, 0 + strh r0, [r2, 0x3C] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r3, _080FCE9C @ =gUnknown_30030F0 + movs r0, 0x84 + lsls r0, 3 + adds r3, r0 + ldr r0, _080FCEA0 @ =gUnknown_8231CE4 + ldr r1, [r0] + ldr r2, [r0, 0x4] + str r1, [r3] + str r2, [r3, 0x4] + ldr r1, _080FCEA4 @ =0x070003e8 + movs r2, 0x4 + bl CpuSet +_080FCE8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FCE90: .4byte gUnknown_202063C +_080FCE94: .4byte gUnknown_203ACE4 +_080FCE98: .4byte 0x00001234 +_080FCE9C: .4byte gUnknown_30030F0 +_080FCEA0: .4byte gUnknown_8231CE4 +_080FCEA4: .4byte 0x070003e8 + thumb_func_end sub_80FCE44 + + thumb_func_start sub_80FCEA8 +sub_80FCEA8: @ 80FCEA8 + push {r4,lr} + ldr r4, _080FCED4 @ =gUnknown_843F274 + ldrh r0, [r4, 0x6] + bl sub_8008804 + lsls r0, 16 + ldr r1, _080FCED8 @ =0xffff0000 + cmp r0, r1 + bne _080FCEC0 + adds r0, r4, 0 + bl sub_800EBCC +_080FCEC0: + ldr r0, _080FCEDC @ =gUnknown_843F27C + bl sub_8008928 + ldr r1, _080FCEE0 @ =gUnknown_203ACE4 + movs r0, 0xFF + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FCED4: .4byte gUnknown_843F274 +_080FCED8: .4byte 0xffff0000 +_080FCEDC: .4byte gUnknown_843F27C +_080FCEE0: .4byte gUnknown_203ACE4 + thumb_func_end sub_80FCEA8 + + thumb_func_start sub_80FCEE4 +sub_80FCEE4: @ 80FCEE4 + push {r4,lr} + ldr r1, _080FCF04 @ =gUnknown_3007460 + ldr r0, [r1] + ldrb r2, [r0, 0x2] + movs r3, 0 + movs r4, 0x1 +_080FCEF0: + adds r0, r2, 0 + ands r0, r4 + cmp r0, 0 + beq _080FCF08 + ldr r0, [r1] + adds r0, 0xA + adds r0, r3 + ldrb r0, [r0] + b _080FCF16 + .align 2, 0 +_080FCF04: .4byte gUnknown_3007460 +_080FCF08: + lsrs r2, 1 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080FCEF0 + movs r0, 0 +_080FCF16: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80FCEE4 + + thumb_func_start sub_80FCF1C +sub_80FCF1C: @ 80FCF1C + push {lr} + adds r2, r0, 0 + movs r3, 0x32 + ldrsh r0, [r2, r3] + cmp r0, r1 + beq _080FCF30 + movs r0, 0 + strh r1, [r2, 0x32] + strh r0, [r2, 0x34] + strh r0, [r2, 0x36] +_080FCF30: + pop {r0} + bx r0 + thumb_func_end sub_80FCF1C + + thumb_func_start sub_80FCF34 +sub_80FCF34: @ 80FCF34 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _080FCF78 @ =gUnknown_203ACE4 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080FCF44 + b _080FD106 +_080FCF44: + ldr r2, _080FCF7C @ =gUnknown_202063C + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + movs r0, 0x3C + ldrsh r1, [r2, r0] + ldr r0, _080FCF80 @ =0x00001234 + cmp r1, r0 + beq _080FCF5C + b _080FD106 +_080FCF5C: + adds r6, r2, 0 + movs r5, 0xFF + movs r4, 0 + ldr r0, _080FCF84 @ =gUnknown_3007460 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x1 + bne _080FCFB6 + adds r7, r6, 0 + adds r7, 0x28 + movs r1, 0x29 + adds r1, r6 + mov r8, r1 + b _080FCFA6 + .align 2, 0 +_080FCF78: .4byte gUnknown_203ACE4 +_080FCF7C: .4byte gUnknown_202063C +_080FCF80: .4byte 0x00001234 +_080FCF84: .4byte gUnknown_3007460 +_080FCF88: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80FCADC + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bcc _080FCFA6 + adds r0, r4, 0 + bl sub_80FCADC + lsls r0, 24 + lsrs r5, r0, 24 +_080FCFA6: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r4, r0 + blt _080FCF88 + b _080FCFC8 +_080FCFB6: + bl sub_80FCEE4 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r6, 0 + adds r7, 0x28 + movs r2, 0x29 + adds r2, r6 + mov r8, r2 +_080FCFC8: + bl sub_80FC1B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FCFD8 + movs r0, 0x4 + b _080FD006 +_080FCFD8: + cmp r5, 0x18 + bhi _080FCFE0 + movs r0, 0x3 + b _080FD006 +_080FCFE0: + adds r0, r5, 0 + subs r0, 0x19 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x65 + bhi _080FCFF0 + movs r0, 0x2 + b _080FD006 +_080FCFF0: + adds r0, r5, 0 + subs r0, 0x7F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x65 + bhi _080FD000 + movs r0, 0x1 + b _080FD006 +_080FD000: + cmp r5, 0xE4 + bls _080FD008 + movs r0, 0 +_080FD006: + strh r0, [r6, 0x2E] +_080FD008: + movs r3, 0x2E + ldrsh r1, [r6, r3] + movs r2, 0x30 + ldrsh r0, [r6, r2] + cmp r1, r0 + beq _080FD01E + adds r0, r6, 0 + bl sub_80FCF1C + ldrh r0, [r6, 0x2E] + strh r0, [r6, 0x30] +_080FD01E: + movs r0, 0x32 + ldrsh r1, [r6, r0] + ldr r2, [r6, 0x8] + lsls r1, 2 + adds r1, r2 + movs r3, 0x36 + ldrsh r0, [r6, r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + movs r3, 0x34 + ldrsh r1, [r6, r3] + cmp r0, r1 + bge _080FD06C + ldrh r0, [r6, 0x36] + adds r0, 0x1 + movs r3, 0 + strh r0, [r6, 0x36] + strh r3, [r6, 0x34] + movs r1, 0x32 + ldrsh r0, [r6, r1] + lsls r0, 2 + adds r0, r2 + movs r2, 0x36 + ldrsh r1, [r6, r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + movs r0, 0 + ldrsh r1, [r1, r0] + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + bne _080FD072 + strh r3, [r6, 0x36] + b _080FD072 +_080FD06C: + ldrh r0, [r6, 0x34] + adds r0, 0x1 + strh r0, [r6, 0x34] +_080FD072: + ldr r4, _080FD110 @ =gUnknown_30030F0 + movs r1, 0x84 + lsls r1, 3 + adds r0, r4, r1 + ldr r1, _080FD114 @ =gUnknown_843F204 + ldr r2, [r1, 0x4] + ldr r1, [r1] + str r1, [r0] + str r2, [r0, 0x4] + movs r3, 0x20 + ldrsh r2, [r6, r3] + movs r1, 0 + ldrsb r1, [r7, r1] + adds r2, r1 + ldr r1, _080FD118 @ =0x00000422 + adds r5, r4, r1 + ldr r3, _080FD11C @ =0x000001ff + adds r1, r3, 0 + ands r2, r1 + ldrh r3, [r5] + ldr r1, _080FD120 @ =0xfffffe00 + ands r1, r3 + orrs r1, r2 + strh r1, [r5] + ldrh r1, [r6, 0x22] + mov r2, r8 + ldrb r2, [r2] + adds r1, r2 + strb r1, [r0] + ldrb r2, [r6, 0x5] + ldr r3, _080FD124 @ =0x00000425 + adds r5, r4, r3 + lsrs r2, 4 + lsls r2, 4 + ldrb r3, [r5] + movs r1, 0xF + ands r1, r3 + orrs r1, r2 + strb r1, [r5] + movs r1, 0x32 + ldrsh r2, [r6, r1] + ldr r1, [r6, 0x8] + lsls r2, 2 + adds r2, r1 + movs r3, 0x36 + ldrsh r1, [r6, r3] + ldr r2, [r2] + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1] + ldrh r6, [r6, 0x3A] + adds r2, r6 + ldr r1, _080FD128 @ =0x00000424 + adds r4, r1 + ldr r3, _080FD12C @ =0x000003ff + adds r1, r3, 0 + ands r2, r1 + ldrh r3, [r4] + ldr r1, _080FD130 @ =0xfffffc00 + ands r1, r3 + orrs r1, r2 + strh r1, [r4] + ldr r1, _080FD134 @ =0x070003e8 + movs r2, 0x4 + bl CpuSet + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080FD106 + bl sub_80FCE44 +_080FD106: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD110: .4byte gUnknown_30030F0 +_080FD114: .4byte gUnknown_843F204 +_080FD118: .4byte 0x00000422 +_080FD11C: .4byte 0x000001ff +_080FD120: .4byte 0xfffffe00 +_080FD124: .4byte 0x00000425 +_080FD128: .4byte 0x00000424 +_080FD12C: .4byte 0x000003ff +_080FD130: .4byte 0xfffffc00 +_080FD134: .4byte 0x070003e8 + thumb_func_end sub_80FCF34 + + thumb_func_start sub_80FD138 +sub_80FD138: @ 80FD138 + push {r4,r5,lr} + adds r4, r0, 0 + str r1, [r4] + movs r3, 0 + ldrb r0, [r2] + cmp r0, 0xFF + beq _080FD15C + adds r5, r4, 0x4 +_080FD148: + adds r1, r5, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, 0x1 + adds r3, 0x1 + cmp r3, 0x6 + bgt _080FD15C + ldrb r0, [r2] + cmp r0, 0xFF + bne _080FD148 +_080FD15C: + adds r0, r4, 0x4 + adds r0, r3 + movs r1, 0xFF + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80FD138 + + thumb_func_start sub_80FD16C +sub_80FD16C: @ 80FD16C + push {lr} + movs r2, 0 + movs r1, 0x7 +_080FD172: + strb r2, [r0] + adds r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _080FD172 + pop {r0} + bx r0 + thumb_func_end sub_80FD16C + + thumb_func_start sub_80FD180 +sub_80FD180: @ 80FD180 + push {lr} + adds r1, r0, 0 + movs r2, 0 +_080FD186: + ldrb r0, [r1] + adds r1, 0x1 + cmp r0, 0 + beq _080FD192 + movs r0, 0 + b _080FD19A +_080FD192: + adds r2, 0x1 + cmp r2, 0x7 + ble _080FD186 + movs r0, 0x1 +_080FD19A: + pop {r1} + bx r1 + thumb_func_end sub_80FD180 + + thumb_func_start sub_80FD1A0 +sub_80FD1A0: @ 80FD1A0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r0, _080FD1C4 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _080FD1B6 + b _080FD318 +_080FD1B6: + movs r0, 0xF0 + bl sub_8002BB0 + str r0, [sp, 0x14] + movs r4, 0 + b _080FD22C + .align 2, 0 +_080FD1C4: .4byte gUnknown_3003F3C +_080FD1C8: + lsls r2, r4, 2 + mov r0, sp + adds r1, r0, r2 + movs r0, 0x1 + negs r0, r0 + str r0, [r1] + movs r5, 0 + mov r8, r2 + lsls r0, r4, 3 + adds r1, r4, 0x1 + mov r9, r1 + subs r0, r4 + lsls r0, 2 + str r0, [sp, 0x1C] + ldr r2, _080FD24C @ =gUnknown_2022744 + mov r10, r2 + ldr r6, _080FD250 @ =0x00003ba8 + movs r4, 0 + mov r0, r10 + subs r0, 0x4 + ldr r7, [sp, 0x1C] + adds r3, r7, r0 +_080FD1F4: + ldrh r1, [r3] + ldr r0, _080FD254 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r7, _080FD250 @ =0x00003ba8 + adds r0, r2, r7 + adds r0, r4 + ldr r0, [r0] + cmp r1, r0 + bne _080FD220 + adds r1, r2, r6 + adds r1, 0x4 + ldr r0, [sp, 0x1C] + add r0, r10 + str r3, [sp, 0x18] + bl sub_8008E28 + ldr r3, [sp, 0x18] + cmp r0, 0 + bne _080FD220 + mov r0, sp + add r0, r8 + str r5, [r0] +_080FD220: + adds r6, 0xC + adds r4, 0xC + adds r5, 0x1 + cmp r5, 0x13 + ble _080FD1F4 + mov r4, r9 +_080FD22C: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _080FD1C8 + movs r0, 0 + mov r8, r0 + movs r4, 0 + ldr r1, _080FD254 @ =gUnknown_3005008 + mov r9, r1 + mov r7, sp + movs r5, 0 + ldr r6, [sp, 0x14] + b _080FD2A4 + .align 2, 0 +_080FD24C: .4byte gUnknown_2022744 +_080FD250: .4byte 0x00003ba8 +_080FD254: .4byte gUnknown_3005008 +_080FD258: + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _080FD29E + ldr r2, _080FD328 @ =gUnknown_202273C + adds r0, r5, r2 + ldrh r0, [r0, 0x1A] + cmp r0, 0x1 + beq _080FD29E + adds r0, r2, 0x4 + adds r0, r5, r0 + ldrh r1, [r0] + adds r2, 0x8 + adds r2, r5, r2 + adds r0, r6, 0 + bl sub_80FD138 + ldr r1, [r7] + cmp r1, 0 + blt _080FD298 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + mov r2, r9 + ldr r1, [r2] + adds r0, r1 + ldr r1, _080FD32C @ =0x00003bac + adds r0, r1 + bl sub_80FD16C +_080FD298: + adds r6, 0xC + movs r2, 0x1 + add r8, r2 +_080FD29E: + adds r7, 0x4 + adds r5, 0x1C + adds r4, 0x1 +_080FD2A4: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _080FD258 + movs r4, 0 + ldr r7, _080FD330 @ =gUnknown_3005008 + mov r9, r7 + ldr r6, _080FD334 @ =0x00003ba8 + movs r7, 0 + mov r1, r8 + lsls r0, r1, 1 + add r0, r8 + lsls r0, 2 + ldr r2, [sp, 0x14] + adds r5, r0, r2 +_080FD2C6: + mov r1, r9 + ldr r0, [r1] + adds r0, r6 + adds r0, 0x4 + bl sub_80FD180 + cmp r0, 0 + bne _080FD2F8 + mov r0, r9 + ldr r2, [r0] + ldr r1, _080FD334 @ =0x00003ba8 + adds r0, r2, r1 + adds r0, r7 + ldr r1, [r0] + adds r2, r6 + adds r2, 0x4 + adds r0, r5, 0 + bl sub_80FD138 + adds r5, 0xC + movs r2, 0x1 + add r8, r2 + mov r0, r8 + cmp r0, 0x13 + bgt _080FD302 +_080FD2F8: + adds r6, 0xC + adds r7, 0xC + adds r4, 0x1 + cmp r4, 0x13 + ble _080FD2C6 +_080FD302: + ldr r0, _080FD330 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _080FD334 @ =0x00003ba8 + adds r0, r1 + ldr r1, [sp, 0x14] + movs r2, 0xF0 + bl memcpy + ldr r0, [sp, 0x14] + bl sub_8002BC4 +_080FD318: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD328: .4byte gUnknown_202273C +_080FD32C: .4byte 0x00003bac +_080FD330: .4byte gUnknown_3005008 +_080FD334: .4byte 0x00003ba8 + thumb_func_end sub_80FD1A0 + + thumb_func_start sub_80FD338 +sub_80FD338: @ 80FD338 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + movs r7, 0 + ldr r6, _080FD374 @ =gUnknown_3005008 + ldr r4, _080FD378 @ =0x00003ba8 + movs r5, 0 +_080FD350: + ldr r0, [r6] + adds r0, r4 + adds r0, 0x4 + mov r1, r9 + movs r2, 0x7 + bl sub_8008E4C + cmp r0, 0 + bne _080FD37C + ldr r0, [r6] + ldr r1, _080FD378 @ =0x00003ba8 + adds r0, r1 + adds r0, r5 + ldr r0, [r0] + cmp r0, r8 + bne _080FD37C + movs r0, 0x1 + b _080FD396 + .align 2, 0 +_080FD374: .4byte gUnknown_3005008 +_080FD378: .4byte 0x00003ba8 +_080FD37C: + ldr r0, [r6] + adds r0, r4 + adds r0, 0x4 + bl sub_80FD180 + cmp r0, 0 + bne _080FD394 + adds r4, 0xC + adds r5, 0xC + adds r7, 0x1 + cmp r7, 0x13 + ble _080FD350 +_080FD394: + movs r0, 0 +_080FD396: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80FD338 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s new file mode 100644 index 000000000..34f28eb84 --- /dev/null +++ b/asm/link_rfu_3.s @@ -0,0 +1,13203 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_811586C +sub_811586C: @ 811586C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r6, 0 + movs r1, 0x11 + bl sub_800445C + lsls r4, 8 + movs r0, 0x80 + lsls r0, 3 + cmp r4, r0 + beq _081158BC + cmp r4, r0 + bgt _0811589E + movs r0, 0x80 + lsls r0, 2 + cmp r4, r0 + beq _081158B0 + b _0811590E +_0811589E: + movs r0, 0x94 + lsls r0, 6 + cmp r4, r0 + beq _081158CC + movs r0, 0xD4 + lsls r0, 6 + cmp r4, r0 + beq _081158F0 + b _0811590E +_081158B0: + ldr r1, _081158B8 @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + b _081158D4 + .align 2, 0 +_081158B8: .4byte gUnknown_845742C +_081158BC: + ldr r1, _081158C8 @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + adds r1, 0x14 + b _081158D4 + .align 2, 0 +_081158C8: .4byte gUnknown_845742C +_081158CC: + ldr r1, _081158EC @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + adds r1, 0x28 +_081158D4: + adds r0, r1 + ldr r2, [r0] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_811A444 + b _0811590E + .align 2, 0 +_081158EC: .4byte gUnknown_845742C +_081158F0: + ldr r1, _08115920 @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + adds r1, 0x3C + adds r0, r1 + ldr r2, [r0] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_811A444 +_0811590E: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08115920: .4byte gUnknown_845742C + thumb_func_end sub_811586C + + thumb_func_start sub_8115924 +sub_8115924: @ 8115924 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x20 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _08115994 @ =gUnknown_300500C + ldr r2, [r6] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + mov r8, r0 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_811A444 + add r5, sp, 0x14 + ldr r1, _08115998 @ =gUnknown_84571B4 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, [r6] + adds r0, 0xA + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + add r0, sp, 0x8 + movs r2, 0x2 + movs r3, 0x5 + bl sub_8008E78 + adds r0, r5, 0 + add r1, sp, 0x8 + bl sub_8008DA4 + movs r0, 0x10 + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_811A444 + add sp, 0x20 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08115994: .4byte gUnknown_300500C +_08115998: .4byte gUnknown_84571B4 + thumb_func_end sub_8115924 + + thumb_func_start sub_811599C +sub_811599C: @ 811599C + push {lr} + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _08115A18 + lsls r0, 2 + ldr r1, _081159B4 @ =_081159B8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081159B4: .4byte _081159B8 + .align 2, 0 +_081159B8: + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A10 + .4byte _08115A10 +_08115A10: + ldr r0, _08115A1C @ =gUnknown_2021D18 + ldr r1, _08115A20 @ =gUnknown_8457234 + bl sub_8008FCC +_08115A18: + pop {r0} + bx r0 + .align 2, 0 +_08115A1C: .4byte gUnknown_2021D18 +_08115A20: .4byte gUnknown_8457234 + thumb_func_end sub_811599C + + thumb_func_start sub_8115A24 +sub_8115A24: @ 8115A24 + push {lr} + ldr r0, _08115A54 @ =sub_8115A68 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08115A58 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08115A5C @ =gUnknown_3005098 + adds r1, r0 + str r1, [r2] + ldr r0, _08115A60 @ =gUnknown_3002024 + str r1, [r0] + movs r0, 0 + strb r0, [r1, 0xC] + strb r0, [r1, 0xD] + ldr r1, _08115A64 @ =gUnknown_20370D0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08115A54: .4byte sub_8115A68 +_08115A58: .4byte gUnknown_203B05C +_08115A5C: .4byte gUnknown_3005098 +_08115A60: .4byte gUnknown_3002024 +_08115A64: .4byte gUnknown_20370D0 + thumb_func_end sub_8115A24 + + thumb_func_start sub_8115A68 +sub_8115A68: @ 8115A68 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08115A88 @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0xC] + cmp r0, 0x1E + bls _08115A7C + b _081161D8 +_08115A7C: + lsls r0, 2 + ldr r1, _08115A8C @ =_08115A90 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08115A88: .4byte gUnknown_203B05C +_08115A8C: .4byte _08115A90 + .align 2, 0 +_08115A90: + .4byte _08115B0C + .4byte _081161D8 + .4byte _081161D8 + .4byte _08115B5C + .4byte _08115C60 + .4byte _08115CE8 + .4byte _08115D04 + .4byte _08115E24 + .4byte _081161D8 + .4byte _08115D94 + .4byte _08115DAC + .4byte _08115E40 + .4byte _08115EF4 + .4byte _0811600A + .4byte _08116028 + .4byte _0811603A + .4byte _08116058 + .4byte _08116112 + .4byte _08116128 + .4byte _081160A2 + .4byte _081160C0 + .4byte _08116168 + .4byte _08116194 + .4byte _08116168 + .4byte _0811617E + .4byte _081161D8 + .4byte _081161AC + .4byte _081161D8 + .4byte _081161D8 + .4byte _08115DEC + .4byte _0811614C +_08115B0C: + ldr r3, _08115B4C @ =gUnknown_203B058 + ldr r2, _08115B50 @ =gUnknown_8456CD8 + ldr r1, _08115B54 @ =gUnknown_20370C0 + ldrh r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + strb r0, [r3] + ldr r4, _08115B58 @ =gUnknown_203B059 + ldrh r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + lsrs r0, 8 + strb r0, [r4] + ldrb r0, [r3] + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl sub_8009804 + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + bl sub_80FBB8C + movs r0, 0x3 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115B4C: .4byte gUnknown_203B058 +_08115B50: .4byte gUnknown_8456CD8 +_08115B54: .4byte gUnknown_20370C0 +_08115B58: .4byte gUnknown_203B059 +_08115B5C: + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r5, 0x4] + movs r0, 0xA0 + bl sub_8002BB0 + str r0, [r5] + movs r0, 0xA0 + bl sub_8002BB0 + str r0, [r5, 0x8] + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x5 + bl sub_811A5E4 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x10 + bl sub_80FCD50 + ldr r1, [r5] + movs r3, 0 + movs r0, 0 + strh r0, [r1, 0x18] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + subs r0, 0x4 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1A] + ldr r0, [r5] + strb r3, [r0, 0x1B] + ldr r0, [r5, 0x4] + movs r1, 0xFF + bl sub_811A054 + strb r0, [r5, 0x17] + ldr r0, _08115C48 @ =gUnknown_8456CD0 + bl sub_8003CE4 + strb r0, [r5, 0x10] + ldr r0, _08115C4C @ =gUnknown_8456CFC + bl sub_8003CE4 + strb r0, [r5, 0xF] + ldr r0, _08115C50 @ =gUnknown_8456D04 + bl sub_8003CE4 + strb r0, [r5, 0x11] + ldrb r0, [r5, 0x10] + movs r1, 0x22 + bl sub_800445C + ldrb r0, [r5, 0x10] + ldr r2, _08115C54 @ =gUnknown_845747C + movs r1, 0x2 + str r1, [sp] + movs r4, 0x4 + str r4, [sp, 0x4] + movs r1, 0 + movs r3, 0x8 + bl sub_811A444 + ldrb r0, [r5, 0x10] + bl sub_8003FA0 + ldrb r0, [r5, 0x10] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r5, 0xF] + movs r1, 0 + bl sub_80F6F1C + ldr r0, _08115C58 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, _08115C5C @ =gUnknown_8456D34 + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldrb r1, [r5, 0xF] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + strb r0, [r5, 0x12] + ldrb r0, [r5, 0x11] + movs r1, 0 + bl sub_80F6F1C + ldrb r0, [r5, 0x11] + bl sub_8003FA0 + ldrb r0, [r5, 0x11] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + strb r0, [r5, 0x13] + strb r4, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115C48: .4byte gUnknown_8456CD0 +_08115C4C: .4byte gUnknown_8456CFC +_08115C50: .4byte gUnknown_8456D04 +_08115C54: .4byte gUnknown_845747C +_08115C58: .4byte gUnknown_3005E70 +_08115C5C: .4byte gUnknown_8456D34 +_08115C60: + ldr r0, _08115C98 @ =gUnknown_2021CD0 + ldr r2, _08115C9C @ =gUnknown_8456C74 + ldr r4, _08115CA0 @ =gUnknown_203B058 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _08115CA4 @ =gUnknown_203B059 + ldrb r2, [r0] + lsrs r0, r2, 4 + cmp r0, 0 + beq _08115CC4 + ldrb r1, [r5, 0x13] + subs r0, 0x1 + cmp r1, r0 + ble _08115CB0 + movs r0, 0xF + ands r0, r2 + cmp r0, 0 + beq _08115CB0 + ldr r0, _08115CA8 @ =gUnknown_2021D18 + ldr r1, _08115CAC @ =gUnknown_8457264 + bl sub_8008FCC + b _08115CCC + .align 2, 0 +_08115C98: .4byte gUnknown_2021CD0 +_08115C9C: .4byte gUnknown_8456C74 +_08115CA0: .4byte gUnknown_203B058 +_08115CA4: .4byte gUnknown_203B059 +_08115CA8: .4byte gUnknown_2021D18 +_08115CAC: .4byte gUnknown_8457264 +_08115CB0: + ldr r0, _08115CBC @ =gUnknown_2021D18 + ldr r1, _08115CC0 @ =gUnknown_8457234 + bl sub_8008FCC + b _08115CCC + .align 2, 0 +_08115CBC: .4byte gUnknown_2021D18 +_08115CC0: .4byte gUnknown_8457234 +_08115CC4: + ldr r0, _08115CE0 @ =gUnknown_2021D18 + ldrb r1, [r4] + bl sub_811599C +_08115CCC: + ldrb r0, [r5, 0x11] + ldr r1, _08115CE4 @ =gUnknown_203B059 + ldrb r1, [r1] + ldrb r2, [r5, 0x13] + bl sub_811586C + movs r0, 0x5 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115CE0: .4byte gUnknown_2021D18 +_08115CE4: .4byte gUnknown_203B059 +_08115CE8: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08115D00 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115CFA + b _081161D8 +_08115CFA: + movs r0, 0x6 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115D00: .4byte gUnknown_2021D18 +_08115D04: + adds r0, r5, 0 + movs r1, 0x7 + movs r2, 0xA + bl sub_8116444 + ldr r0, _08115D24 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08115D40 + ldrb r0, [r5, 0x13] + cmp r0, 0x1 + bne _08115D28 + movs r0, 0x17 + b _08115D3E + .align 2, 0 +_08115D24: .4byte gUnknown_30030F0 +_08115D28: + ldr r0, _08115D38 @ =gUnknown_203B059 + ldrb r1, [r0] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _08115D3C + movs r0, 0x1E + b _08115D3E + .align 2, 0 +_08115D38: .4byte gUnknown_203B059 +_08115D3C: + movs r0, 0x13 +_08115D3E: + strb r0, [r5, 0xC] +_08115D40: + ldr r0, _08115D8C @ =gUnknown_203B059 + ldrb r2, [r0] + lsrs r0, r2, 4 + cmp r0, 0 + beq _08115D76 + ldrb r1, [r5, 0x13] + subs r0, 0x1 + cmp r1, r0 + ble _08115D76 + movs r4, 0xF + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _08115D76 + bl sub_80FC1CC + cmp r0, 0 + beq _08115D76 + ldr r0, _08115D90 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08115D76 + strb r4, [r5, 0xC] + bl sub_80F8F5C +_08115D76: + ldrb r0, [r5, 0xC] + cmp r0, 0x6 + beq _08115D7E + b _081161D8 +_08115D7E: + bl sub_80FA5D4 + cmp r0, 0 + bne _08115D88 + b _081161D8 +_08115D88: + b _08115EEE + .align 2, 0 +_08115D8C: .4byte gUnknown_203B059 +_08115D90: .4byte gUnknown_30030F0 +_08115D94: + bl sub_80FA5D4 + cmp r0, 0 + beq _08115D9E + b _081161D8 +_08115D9E: + movs r0, 0x6 + strb r0, [r5, 0xC] + ldr r0, [r5] + bl sub_81165E8 + strb r0, [r5, 0x13] + b _081161D8 +_08115DAC: + movs r3, 0 + ldr r0, _08115DE4 @ =gUnknown_203B058 + ldrb r1, [r0] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x2 + bne _08115DBC + movs r3, 0x1 +_08115DBC: + adds r0, r5, 0 + adds r0, 0xD + ldr r2, _08115DE8 @ =gUnknown_845767C + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115DD4 + b _081161D8 +_08115DD4: + ldr r0, [r5] + bl sub_81165E8 + strb r0, [r5, 0x13] + ldrb r0, [r5, 0x12] + bl sub_8107180 + b _0811610C + .align 2, 0 +_08115DE4: .4byte gUnknown_203B058 +_08115DE8: .4byte gUnknown_845767C +_08115DEC: + ldr r0, _08115E1C @ =gUnknown_203B059 + ldrb r0, [r0] + movs r1, 0xF + ands r1, r0 + movs r0, 0x2 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r3, r0, 31 + adds r0, r5, 0 + adds r0, 0xD + ldr r2, _08115E20 @ =gUnknown_845767C + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115E16 + b _081161D8 +_08115E16: + movs r0, 0x15 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115E1C: .4byte gUnknown_203B059 +_08115E20: .4byte gUnknown_845767C +_08115E24: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08115E3C @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115E36 + b _081161D8 +_08115E36: + movs r0, 0xB + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115E3C: .4byte gUnknown_2021D18 +_08115E40: + adds r4, r5, 0 + adds r4, 0xD + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x13] + lsls r2, 5 + ldr r1, [r5] + adds r1, r2 + adds r1, 0x10 + bl sub_80FA634 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08115EC0 + cmp r1, r0 + bgt _08115E84 + subs r0, 0x2 + cmp r1, r0 + beq _08115EEE + b _081161D8 +_08115E84: + cmp r1, 0 + beq _08115E8E + cmp r1, 0x1 + beq _08115EC0 + b _081161D8 +_08115E8E: + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + movs r0, 0x5 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x5 + b _08115EE4 +_08115EC0: + movs r0, 0x6 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x6 +_08115EE4: + bl sub_80FA670 + movs r0, 0xC + strb r0, [r5, 0xC] + b _081161D8 +_08115EEE: + movs r0, 0x9 + strb r0, [r5, 0xC] + b _081161D8 +_08115EF4: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x13] + lsls r2, 5 + ldr r1, [r5] + adds r1, r2 + adds r1, 0x10 + bl sub_80FA6FC + cmp r0, 0x1 + bne _08115FFA + ldrb r0, [r5, 0x19] + cmp r0, 0x5 + bne _08115FB4 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + movs r0, 0 + strb r0, [r1, 0x1B] + ldrb r0, [r5, 0x12] + bl sub_8107180 + ldrb r0, [r5, 0x13] + adds r0, 0x1 + strb r0, [r5, 0x13] + ldr r1, _08115F58 @ =gUnknown_203B059 + ldrb r1, [r1] + movs r3, 0xF + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r3, 0 + ands r0, r1 + cmp r2, r0 + bne _08115FF0 + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + bne _08115F54 + cmp r2, 0x4 + bne _08115F5C +_08115F54: + strb r3, [r5, 0xC] + b _08115F90 + .align 2, 0 +_08115F58: .4byte gUnknown_203B059 +_08115F5C: + ldr r4, _08115FA4 @ =gUnknown_2021CD0 + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r1, r0 + subs r1, 0x10 + adds r0, r4, 0 + bl sub_8008D54 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + subs r0, 0x1 + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, _08115FA8 @ =gUnknown_2021D18 + ldr r1, _08115FAC @ =gUnknown_8457554 + bl sub_8008FCC + movs r0, 0xD + strb r0, [r5, 0xC] +_08115F90: + bl sub_80F8F5C + ldrb r0, [r5, 0x11] + ldr r1, _08115FB0 @ =gUnknown_203B059 + ldrb r1, [r1] + ldrb r2, [r5, 0x13] + bl sub_811586C + b _08115FF4 + .align 2, 0 +_08115FA4: .4byte gUnknown_2021CD0 +_08115FA8: .4byte gUnknown_2021D18 +_08115FAC: .4byte gUnknown_8457554 +_08115FB0: .4byte gUnknown_203B059 +_08115FB4: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBD4C + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + ldrb r2, [r1, 0x1A] + movs r0, 0x4 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r0, [r5] + bl sub_81165E8 + ldrb r0, [r5, 0x12] + bl sub_8107180 +_08115FF0: + movs r0, 0x4 + strb r0, [r5, 0xC] +_08115FF4: + movs r0, 0 + strb r0, [r5, 0x19] + b _081161D8 +_08115FFA: + cmp r0, 0x2 + beq _08116000 + b _081161D8 +_08116000: + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + b _0811610C +_0811600A: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08116024 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811601C + b _081161D8 +_0811601C: + movs r0, 0xE + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116024: .4byte gUnknown_2021D18 +_08116028: + ldrb r0, [r5, 0xE] + adds r0, 0x1 + strb r0, [r5, 0xE] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x78 + bhi _08116038 + b _081161D8 +_08116038: + b _0811607E +_0811603A: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08116054 @ =gUnknown_8457514 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811604C + b _081161D8 +_0811604C: + movs r0, 0x10 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116054: .4byte gUnknown_8457514 +_08116058: + adds r0, r5, 0 + adds r0, 0xD + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0811607E + cmp r1, 0 + bgt _08116078 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08116084 + b _081161D8 +_08116078: + cmp r1, 0x1 + beq _08116084 + b _081161D8 +_0811607E: + movs r0, 0x11 + strb r0, [r5, 0xC] + b _081161D8 +_08116084: + ldr r0, _08116098 @ =gUnknown_203B059 + ldrb r1, [r0] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _0811609C + movs r0, 0x1E + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116098: .4byte gUnknown_203B059 +_0811609C: + movs r0, 0x13 + strb r0, [r5, 0xC] + b _081161D8 +_081160A2: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _081160BC @ =gUnknown_8457530 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081160B4 + b _081161D8 +_081160B4: + movs r0, 0x14 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_081160BC: .4byte gUnknown_8457530 +_081160C0: + adds r0, r5, 0 + adds r0, 0xD + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0811615C + cmp r1, 0 + bgt _081160E0 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081160E4 + b _081161D8 +_081160E0: + cmp r1, 0x1 + bne _081161D8 +_081160E4: + ldr r0, _081160F8 @ =gUnknown_203B059 + ldrb r2, [r0] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + beq _081160FC + movs r0, 0xF + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_081160F8: .4byte gUnknown_203B059 +_081160FC: + movs r3, 0xF + ldrb r1, [r5, 0x13] + adds r0, r3, 0 + ands r0, r2 + cmp r1, r0 + bne _0811610C + strb r3, [r5, 0xC] + b _081161D8 +_0811610C: + movs r0, 0x4 + strb r0, [r5, 0xC] + b _081161D8 +_08116112: + adds r0, r5, 0 + movs r1, 0x7 + movs r2, 0x17 + bl sub_8116444 + lsls r0, 24 + cmp r0, 0 + bne _081161D8 + movs r0, 0x12 + strb r0, [r5, 0xC] + b _081161D8 +_08116128: + bl sub_80F8F40 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08116144 + movs r0, 0 + bl sub_80F8F7C + cmp r0, 0 + beq _081161D8 + movs r0, 0x1A + strb r0, [r5, 0xC] + b _081161D8 +_08116144: + movs r0, 0x1D + strb r0, [r5, 0xC] + strb r1, [r5, 0xD] + b _081161D8 +_0811614C: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08116164 @ =gUnknown_8457610 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _081161D8 +_0811615C: + movs r0, 0x17 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116164: .4byte gUnknown_8457610 +_08116168: + bl sub_80FCE44 + bl sub_80F8DC0 + adds r0, r5, 0 + bl sub_81161E4 + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] + b _081161D8 +_0811617E: + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 + ldr r1, _08116190 @ =gUnknown_20370D0 + movs r0, 0x5 + strh r0, [r1] + b _081161D8 + .align 2, 0 +_08116190: .4byte gUnknown_20370D0 +_08116194: + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 + ldr r1, _081161A8 @ =gUnknown_20370D0 + movs r0, 0x8 + strh r0, [r1] + b _081161D8 + .align 2, 0 +_081161A8: .4byte gUnknown_20370D0 +_081161AC: + bl sub_80FBA00 + cmp r0, 0 + beq _081161BA + movs r0, 0x1D + strb r0, [r5, 0xC] + b _081161D8 +_081161BA: + ldr r0, _081161E0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _081161D8 + movs r0, 0x1 + bl sub_80FAFE0 + bl sub_8117990 + adds r0, r5, 0 + bl sub_81161E4 + adds r0, r4, 0 + bl sub_8077508 +_081161D8: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081161E0: .4byte gUnknown_3003F64 + thumb_func_end sub_8115A68 + + thumb_func_start sub_81161E4 +sub_81161E4: @ 81161E4 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x11] + bl sub_80040B8 + ldrb r0, [r4, 0x11] + movs r1, 0 + bl sub_80F6F9C + ldrb r0, [r4, 0x12] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r4, 0x10] + bl sub_80040B8 + ldrb r0, [r4, 0xF] + movs r1, 0 + bl sub_80F6F9C + movs r0, 0 + bl sub_80020BC + ldrb r0, [r4, 0x11] + bl sub_8003E3C + ldrb r0, [r4, 0xF] + bl sub_8003E3C + ldrb r0, [r4, 0x10] + bl sub_8003E3C + ldrb r0, [r4, 0x17] + bl sub_8077508 + ldr r0, [r4, 0x8] + bl sub_8002BC4 + ldr r0, [r4] + bl sub_8002BC4 + ldr r0, [r4, 0x4] + bl sub_8002BC4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81161E4 + + thumb_func_start sub_8116244 +sub_8116244: @ 8116244 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _081162D8 + lsls r0, 2 + ldr r1, _0811625C @ =_08116260 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811625C: .4byte _08116260 + .align 2, 0 +_08116260: + .4byte _081162B8 + .4byte _081162B8 + .4byte _081162D0 + .4byte _081162B8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D0 + .4byte _081162D0 + .4byte _081162D0 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162C0 + .4byte _081162C0 +_081162B8: + ldr r1, _081162BC @ =gUnknown_84574A0 + b _081162C2 + .align 2, 0 +_081162BC: .4byte gUnknown_84574A0 +_081162C0: + ldr r1, _081162CC @ =gUnknown_84574C4 +_081162C2: + adds r0, r2, 0 + bl sub_8008FCC + b _081162D8 + .align 2, 0 +_081162CC: .4byte gUnknown_84574C4 +_081162D0: + ldr r1, _081162DC @ =gUnknown_84574EC + adds r0, r2, 0 + bl sub_8008FCC +_081162D8: + pop {r0} + bx r0 + .align 2, 0 +_081162DC: .4byte gUnknown_84574EC + thumb_func_end sub_8116244 + + thumb_func_start sub_81162E0 +sub_81162E0: @ 81162E0 + push {lr} + lsls r1, 24 + lsrs r1, 24 + adds r2, r1, 0 + cmp r1, 0x44 + beq _08116300 + cmp r1, 0x44 + bgt _081162F6 + cmp r1, 0x41 + beq _08116300 + b _08116312 +_081162F6: + cmp r2, 0x45 + beq _0811630C + cmp r2, 0x48 + beq _0811630C + b _08116312 +_08116300: + ldr r1, _08116308 @ =gUnknown_8457E28 + bl sub_8008FCC + b _08116312 + .align 2, 0 +_08116308: .4byte gUnknown_8457E28 +_0811630C: + ldr r1, _08116318 @ =gUnknown_8457E44 + bl sub_8008FCC +_08116312: + pop {r0} + bx r0 + .align 2, 0 +_08116318: .4byte gUnknown_8457E44 + thumb_func_end sub_81162E0 + + thumb_func_start sub_811631C +sub_811631C: @ 811631C + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _081163A8 + lsls r0, 2 + ldr r1, _08116334 @ =_08116338 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116334: .4byte _08116338 + .align 2, 0 +_08116338: + .4byte _08116390 + .4byte _08116390 + .4byte _081163A0 + .4byte _08116390 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A0 + .4byte _081163A0 + .4byte _081163A0 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _08116390 + .4byte _08116390 +_08116390: + ldr r1, _0811639C @ =gUnknown_8459238 + adds r0, r2, 0 + bl sub_8008FCC + b _081163A8 + .align 2, 0 +_0811639C: .4byte gUnknown_8459238 +_081163A0: + ldr r1, _081163AC @ =gUnknown_8459250 + adds r0, r2, 0 + bl sub_8008FCC +_081163A8: + pop {r0} + bx r0 + .align 2, 0 +_081163AC: .4byte gUnknown_8459250 + thumb_func_end sub_811631C + + thumb_func_start sub_81163B0 +sub_81163B0: @ 81163B0 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _0811643C + lsls r0, 2 + ldr r1, _081163C8 @ =_081163CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081163C8: .4byte _081163CC + .align 2, 0 +_081163CC: + .4byte _08116424 + .4byte _08116424 + .4byte _08116434 + .4byte _08116424 + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _08116434 + .4byte _08116434 + .4byte _08116434 + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _08116424 + .4byte _08116424 +_08116424: + ldr r1, _08116430 @ =gUnknown_84576AC + adds r0, r2, 0 + bl sub_8008FCC + b _0811643C + .align 2, 0 +_08116430: .4byte gUnknown_84576AC +_08116434: + ldr r1, _08116440 @ =gUnknown_84576C4 + adds r0, r2, 0 + bl sub_8008FCC +_0811643C: + pop {r0} + bx r0 + .align 2, 0 +_08116440: .4byte gUnknown_84576C4 + thumb_func_end sub_81163B0 + + thumb_func_start sub_8116444 +sub_8116444: @ 8116444 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + adds r4, r2, 0 + ldr r0, [r5] + bl sub_8116524 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08116460 + cmp r0, 0x2 + beq _081164AC + b _081164C0 +_08116460: + movs r0, 0x2 + bl sub_80722CC + ldrb r0, [r5, 0x12] + bl sub_8107180 + ldr r4, _081164A0 @ =gUnknown_2021CF0 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D54 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, _081164A4 @ =gUnknown_2021D18 + ldr r1, _081164A8 @ =gUnknown_203B058 + ldrb r1, [r1] + bl sub_8116244 + strb r6, [r5, 0xC] + b _081164C0 + .align 2, 0 +_081164A0: .4byte gUnknown_2021CF0 +_081164A4: .4byte gUnknown_2021D18 +_081164A8: .4byte gUnknown_203B058 +_081164AC: + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + ldrb r0, [r5, 0x12] + bl sub_8107180 + strb r4, [r5, 0xC] + movs r0, 0x1 + b _081164C2 +_081164C0: + movs r0, 0 +_081164C2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8116444 + + thumb_func_start sub_81164C8 +sub_81164C8: @ 81164C8 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _081164F4 @ =gUnknown_203B05C + ldr r3, [r0] + movs r2, 0 + ldr r1, [r3] + lsls r0, r4, 5 + adds r1, r0 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + beq _081164F8 + cmp r0, 0x2 + beq _08116502 + b _08116504 + .align 2, 0 +_081164F4: .4byte gUnknown_203B05C +_081164F8: + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08116504 + movs r2, 0x2 + b _08116504 +_08116502: + movs r2, 0x1 +_08116504: + lsls r0, r4, 5 + ldr r3, [r3] + adds r3, r0 + str r2, [sp] + lsls r0, r4, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0 + adds r2, r6, 0 + bl sub_811A910 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81164C8 + + thumb_func_start sub_8116524 +sub_8116524: @ 8116524 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r0, _0811657C @ =gUnknown_203B05C + ldr r5, [r0] + movs r0, 0 + mov r8, r0 + movs r3, 0x1 +_08116538: + ldr r0, [r5] + lsls r6, r3, 5 + adds r2, r0, r6 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + lsrs r0, 30 + mov r9, r0 + cmp r0, 0x1 + bne _08116598 + ldr r1, [r5, 0x4] + adds r0, r2, 0 + str r3, [sp] + bl sub_811A748 + adds r4, r0, 0 + ldr r3, [sp] + cmp r4, 0xFF + beq _08116580 + ldr r1, [r5] + ldr r0, [r5, 0x4] + lsls r2, r4, 3 + subs r2, r4 + lsls r2, 2 + adds r1, r6 + adds r0, r2 + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldr r0, [r5] + adds r0, r6 + mov r1, r9 + strh r1, [r0, 0x18] + b _08116598 + .align 2, 0 +_0811657C: .4byte gUnknown_203B05C +_08116580: + ldr r2, [r5] + adds r2, r6 + ldrb r1, [r2, 0x1A] + movs r4, 0x4 + negs r4, r4 + adds r0, r4, 0 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + strb r1, [r2, 0x1A] + movs r7, 0x2 + mov r8, r7 +_08116598: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x4 + bls _08116538 + movs r6, 0 + movs r4, 0x3 +_081165A6: + ldr r0, [r5] + ldr r1, [r5, 0x4] + adds r1, r6 + movs r2, 0x5 + bl sub_811A798 + adds r6, 0x1C + subs r4, 0x1 + ldr r0, [r5] + cmp r4, 0 + bge _081165A6 + mov r1, r8 + cmp r1, 0x2 + beq _081165D8 + adds r1, r0, 0 + movs r4, 0x4 +_081165C6: + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _081165D0 + movs r2, 0x1 + mov r8, r2 +_081165D0: + adds r1, 0x20 + subs r4, 0x1 + cmp r4, 0 + bge _081165C6 +_081165D8: + mov r0, r8 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8116524 + + thumb_func_start sub_81165E8 +sub_81165E8: @ 81165E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _081166BC @ =gUnknown_203B05C + ldr r4, [r0] + movs r3, 0 +_081165F8: + ldr r0, [r4, 0x8] + lsls r2, r3, 5 + ldr r1, [r4] + adds r0, r2 + adds r1, r2 + ldm r1!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldm r1!, {r2,r5,r7} + stm r0!, {r2,r5,r7} + ldm r1!, {r6,r7} + stm r0!, {r6,r7} + adds r3, 0x1 + ldr r0, [r4, 0x8] + ldr r1, [r4] + cmp r3, 0x4 + ble _081165F8 + movs r5, 0 + mov r8, r1 + mov r9, r0 + movs r3, 0x4 +_08116620: + mov r1, r9 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08116642 + lsls r0, r5, 5 + add r0, r8 + ldm r1!, {r2,r6,r7} + stm r0!, {r2,r6,r7} + ldm r1!, {r2,r6,r7} + stm r0!, {r2,r6,r7} + ldm r1!, {r2,r6} + stm r0!, {r2,r6} + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08116642: + movs r7, 0x20 + add r9, r7 + subs r3, 0x1 + cmp r3, 0 + bge _08116620 + mov r10, r5 + cmp r5, 0x4 + bhi _081166A4 + ldr r0, _081166C0 @ =gUnknown_8457034 + mov r9, r0 + movs r1, 0 + mov r12, r1 + movs r2, 0x4 + negs r2, r2 + mov r8, r2 +_08116660: + ldr r1, [r4] + lsls r3, r5, 5 + adds r1, r3 + mov r0, r9 + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldr r0, [r4] + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x18] + ldr r1, [r4] + adds r1, r3 + ldrb r2, [r1, 0x1A] + mov r0, r8 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r1, [r4] + adds r1, r3 + ldrb r2, [r1, 0x1A] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r0, [r4] + adds r0, r3 + mov r6, r12 + strb r6, [r0, 0x1B] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _08116660 +_081166A4: + movs r3, 0 + ldr r1, [r4] + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _081166C4 + ldrb r0, [r1, 0x1B] + cmp r0, 0x40 + bne _081166C4 + mov r10, r3 + b _081166E4 + .align 2, 0 +_081166BC: .4byte gUnknown_203B05C +_081166C0: .4byte gUnknown_8457034 +_081166C4: + adds r3, 0x1 + cmp r3, 0x4 + bgt _081166E4 + lsls r0, r3, 5 + adds r2, r1, r0 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _081166C4 + ldrb r0, [r2, 0x1B] + cmp r0, 0x40 + bne _081166C4 + lsls r0, r3, 24 + lsrs r0, 24 + mov r10, r0 +_081166E4: + mov r0, r10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81165E8 + + thumb_func_start sub_81166F4 +sub_81166F4: @ 81166F4 + push {lr} + ldr r0, _08116724 @ =sub_8116738 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08116728 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0811672C @ =gUnknown_3005098 + adds r1, r0 + str r1, [r2] + ldr r0, _08116730 @ =gUnknown_3002028 + str r1, [r0] + movs r0, 0 + strb r0, [r1, 0x8] + strb r0, [r1, 0x9] + ldr r1, _08116734 @ =gUnknown_20370D0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08116724: .4byte sub_8116738 +_08116728: .4byte gUnknown_203B05C +_0811672C: .4byte gUnknown_3005098 +_08116730: .4byte gUnknown_3002028 +_08116734: .4byte gUnknown_20370D0 + thumb_func_end sub_81166F4 + + thumb_func_start sub_8116738 +sub_8116738: @ 8116738 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08116758 @ =gUnknown_203B05C + ldr r6, [r0] + ldrb r0, [r6, 0x8] + cmp r0, 0x17 + bls _0811674C + b _08116D06 +_0811674C: + lsls r0, 2 + ldr r1, _0811675C @ =_08116760 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116758: .4byte gUnknown_203B05C +_0811675C: .4byte _08116760 + .align 2, 0 +_08116760: + .4byte _081167C0 + .4byte _0811680C + .4byte _08116838 + .4byte _08116904 + .4byte _08116D06 + .4byte _081169B4 + .4byte _08116A08 + .4byte _08116B94 + .4byte _08116BB0 + .4byte _08116BFE + .4byte _08116C10 + .4byte _08116C98 + .4byte _08116C10 + .4byte _08116C68 + .4byte _08116C10 + .4byte _08116CA8 + .4byte _08116D06 + .4byte _08116D06 + .4byte _08116C10 + .4byte _08116CC8 + .4byte _08116C10 + .4byte _08116CFC + .4byte _08116D06 + .4byte _08116CEC +_081167C0: + ldr r5, _08116800 @ =gUnknown_84570C8 + ldr r4, _08116804 @ =gUnknown_20370C0 + ldrh r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + ldr r1, _08116808 @ =gUnknown_203B058 + ldrh r0, [r4] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBBD8 + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r6, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r6] + movs r0, 0x1 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116800: .4byte gUnknown_84570C8 +_08116804: .4byte gUnknown_20370C0 +_08116808: .4byte gUnknown_203B058 +_0811680C: + adds r0, r6, 0 + adds r0, 0x9 + ldr r2, _08116830 @ =gUnknown_84591B8 + ldr r1, _08116834 @ =gUnknown_20370C0 + ldrh r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08116828 + b _08116D06 +_08116828: + movs r0, 0x2 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116830: .4byte gUnknown_84591B8 +_08116834: .4byte gUnknown_20370C0 +_08116838: + ldr r0, [r6, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r6] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r6, 0x4] + ldr r1, _081168E8 @ =gUnknown_20370C0 + ldrh r1, [r1] + bl sub_811A054 + movs r4, 0 + strb r0, [r6, 0x11] + ldr r0, _081168EC @ =gUnknown_8456CD0 + bl sub_8003CE4 + strb r0, [r6, 0xC] + ldr r0, _081168F0 @ =gUnknown_8456D4C + bl sub_8003CE4 + strb r0, [r6, 0xB] + ldr r0, _081168F4 @ =gUnknown_8456D54 + bl sub_8003CE4 + strb r0, [r6, 0xD] + ldrb r0, [r6, 0xC] + movs r1, 0x22 + bl sub_800445C + ldrb r0, [r6, 0xC] + ldr r2, _081168F8 @ =gUnknown_8458FC8 + movs r1, 0x2 + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + movs r3, 0x8 + bl sub_811A444 + ldrb r0, [r6, 0xC] + bl sub_8003FA0 + ldrb r0, [r6, 0xC] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r6, 0xB] + movs r1, 0 + bl sub_80F6F1C + ldr r0, _081168FC @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, _08116900 @ =gUnknown_8456DDC + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldrb r1, [r6, 0xB] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + strb r0, [r6, 0xE] + ldrb r0, [r6, 0xD] + movs r1, 0 + bl sub_80F6F1C + ldrb r0, [r6, 0xD] + bl sub_8003FA0 + ldrb r0, [r6, 0xD] + bl sub_8115924 + ldrb r0, [r6, 0xD] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + strb r4, [r6, 0xF] + movs r0, 0x3 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_081168E8: .4byte gUnknown_20370C0 +_081168EC: .4byte gUnknown_8456CD0 +_081168F0: .4byte gUnknown_8456D4C +_081168F4: .4byte gUnknown_8456D54 +_081168F8: .4byte gUnknown_8458FC8 +_081168FC: .4byte gUnknown_3005E70 +_08116900: .4byte gUnknown_8456DDC +_08116904: + bl sub_8116FE4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0811691E + cmp r4, 0x1 + beq _08116916 + b _08116BF6 +_08116916: + movs r0, 0x2 + bl sub_80722CC + b _08116BF6 +_0811691E: + ldrb r0, [r6, 0xE] + bl sub_8107078 + adds r4, r0, 0 + ldr r0, _0811696C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811699C + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _0811699C + ldr r0, [r6] + lsls r1, r4, 5 + adds r0, r1 + ldrb r1, [r0, 0xA] + ldrb r0, [r0, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08116994 + lsrs r0, r1, 7 + cmp r0, 0 + bne _08116994 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8116D10 + adds r1, r0, 0 + cmp r1, 0 + bne _08116970 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8116D60 + movs r0, 0x5 + b _08116982 + .align 2, 0 +_0811696C: .4byte gUnknown_30030F0 +_08116970: + ldr r0, _0811698C @ =gUnknown_2021D18 + ldr r2, _08116990 @ =gUnknown_8457608 + subs r1, 0x1 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + movs r0, 0x12 +_08116982: + strb r0, [r6, 0x8] + movs r0, 0x67 + bl sub_80722CC + b _08116D06 + .align 2, 0 +_0811698C: .4byte gUnknown_2021D18 +_08116990: .4byte gUnknown_8457608 +_08116994: + movs r0, 0x7 + bl sub_80722CC + b _08116D06 +_0811699C: + ldr r0, _081169B0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081169AA + b _08116D06 +_081169AA: + movs r0, 0xA + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_081169B0: .4byte gUnknown_30030F0 +_081169B4: + ldr r4, _081169FC @ =gUnknown_2021D18 + ldr r0, _08116A00 @ =gUnknown_203B058 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_811631C + adds r0, r6, 0 + adds r0, 0x9 + adds r1, r4, 0 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081169D2 + b _08116D06 +_081169D2: + ldr r4, _08116A04 @ =gUnknown_2021CD0 + ldrb r0, [r6, 0xF] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D54 + ldr r1, [r6] + ldrb r0, [r6, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + b _08116C0A + .align 2, 0 +_081169FC: .4byte gUnknown_2021D18 +_08116A00: .4byte gUnknown_203B058 +_08116A04: .4byte gUnknown_2021CD0 +_08116A08: + ldr r0, _08116A3C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08116AA4 + ldr r4, _08116A40 @ =gUnknown_203B058 + ldr r1, [r6] + ldrb r0, [r6, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 25 + lsrs r0, 25 + strb r0, [r4] + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + ldrb r0, [r4] + subs r0, 0x1 + cmp r0, 0x15 + bhi _08116AA4 + lsls r0, 2 + ldr r1, _08116A44 @ =_08116A48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116A3C: .4byte gUnknown_3003F64 +_08116A40: .4byte gUnknown_203B058 +_08116A44: .4byte _08116A48 + .align 2, 0 +_08116A48: + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA4 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA0 + .4byte _08116AA0 +_08116AA0: + movs r0, 0x14 + strb r0, [r6, 0x8] +_08116AA4: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x8 + bhi _08116B70 + lsls r0, 2 + ldr r1, _08116ABC @ =_08116AC0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116ABC: .4byte _08116AC0 + .align 2, 0 +_08116AC0: + .4byte _08116AE4 + .4byte _08116AEA + .4byte _08116B70 + .4byte _08116B70 + .4byte _08116AF0 + .4byte _08116AEA + .4byte _08116B44 + .4byte _08116B70 + .4byte _08116AEA +_08116AE4: + movs r0, 0xC + strb r0, [r6, 0x8] + b _08116B70 +_08116AEA: + movs r0, 0xE + strb r0, [r6, 0x8] + b _08116B70 +_08116AF0: + ldr r4, _08116B30 @ =gUnknown_2021D18 + ldr r5, _08116B34 @ =gUnknown_203B058 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_81163B0 + adds r0, r6, 0 + adds r0, 0x9 + adds r1, r4, 0 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116B70 + movs r0, 0x7 + movs r1, 0 + bl sub_80FB9E4 + ldr r0, _08116B38 @ =gUnknown_2021CD0 + ldr r2, _08116B3C @ =gUnknown_8456C74 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r1, _08116B40 @ =gUnknown_8457700 + adds r0, r4, 0 + bl sub_8008FCC + b _08116B70 + .align 2, 0 +_08116B30: .4byte gUnknown_2021D18 +_08116B34: .4byte gUnknown_203B058 +_08116B38: .4byte gUnknown_2021CD0 +_08116B3C: .4byte gUnknown_8456C74 +_08116B40: .4byte gUnknown_8457700 +_08116B44: + ldrb r0, [r6, 0x15] + cmp r0, 0xF0 + bls _08116B6C + adds r0, r6, 0 + adds r0, 0x9 + ldr r1, _08116B68 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116B70 + movs r0, 0xC + movs r1, 0 + bl sub_80FB9E4 + movs r0, 0 + b _08116B6E + .align 2, 0 +_08116B68: .4byte gUnknown_2021D18 +_08116B6C: + adds r0, 0x1 +_08116B6E: + strb r0, [r6, 0x15] +_08116B70: + bl sub_80FB9F4 + lsls r0, 24 + cmp r0, 0 + beq _08116B7C + b _08116D06 +_08116B7C: + ldr r0, _08116B90 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08116B8A + b _08116D06 +_08116B8A: + movs r0, 0x7 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116B90: .4byte gUnknown_30030F0 +_08116B94: + adds r0, r6, 0 + adds r0, 0x9 + ldr r1, _08116BAC @ =gUnknown_845771C + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08116BA6 + b _08116D06 +_08116BA6: + movs r0, 0x8 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116BAC: .4byte gUnknown_845771C +_08116BB0: + adds r4, r6, 0 + adds r4, 0x9 + bl sub_80FB9F4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08116BEE + cmp r1, r0 + bgt _08116BDC + subs r0, 0x2 + cmp r1, r0 + beq _08116BF2 + b _08116D06 +_08116BDC: + cmp r1, 0 + beq _08116BE6 + cmp r1, 0x1 + beq _08116BEE + b _08116D06 +_08116BE6: + bl sub_80FA6BC + movs r0, 0x9 + b _08116BF4 +_08116BEE: + movs r0, 0x5 + b _08116BF4 +_08116BF2: + movs r0, 0x6 +_08116BF4: + strb r0, [r6, 0x8] +_08116BF6: + ldrb r0, [r6, 0xE] + bl sub_8107180 + b _08116D06 +_08116BFE: + bl sub_80FB9F4 + lsls r0, 24 + cmp r0, 0 + bne _08116C0A + b _08116D06 +_08116C0A: + movs r0, 0x6 + strb r0, [r6, 0x8] + b _08116D06 +_08116C10: + ldrb r0, [r6, 0xD] + bl sub_80040B8 + ldrb r0, [r6, 0xD] + movs r1, 0 + bl sub_80F6F9C + ldrb r0, [r6, 0xE] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r6, 0xC] + bl sub_80040B8 + ldrb r0, [r6, 0xB] + movs r1, 0 + bl sub_80F6F9C + movs r0, 0 + bl sub_80020BC + ldrb r0, [r6, 0xD] + bl sub_8003E3C + ldrb r0, [r6, 0xB] + bl sub_8003E3C + ldrb r0, [r6, 0xC] + bl sub_8003E3C + ldrb r0, [r6, 0x11] + bl sub_8077508 + ldr r0, [r6] + bl sub_8002BC4 + ldr r0, [r6, 0x4] + bl sub_8002BC4 + ldrb r0, [r6, 0x8] + adds r0, 0x1 + strb r0, [r6, 0x8] + b _08116D06 +_08116C68: + bl sub_80FCE44 + adds r5, r6, 0 + adds r5, 0x9 + ldr r4, _08116C90 @ =gUnknown_8457754 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116D06 + ldr r0, _08116C94 @ =gUnknown_20370D0 + movs r1, 0x6 + b _08116CDC + .align 2, 0 +_08116C90: .4byte gUnknown_8457754 +_08116C94: .4byte gUnknown_20370D0 +_08116C98: + bl sub_80FCE44 + ldr r0, _08116CA4 @ =gUnknown_20370D0 + movs r1, 0x5 + b _08116CDC + .align 2, 0 +_08116CA4: .4byte gUnknown_20370D0 +_08116CA8: + bl sub_80FCE44 + adds r5, r6, 0 + adds r5, 0x9 + ldr r4, _08116CC4 @ =gUnknown_8457754 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + b _08116CCE + .align 2, 0 +_08116CC4: .4byte gUnknown_8457754 +_08116CC8: + adds r0, r6, 0 + adds r0, 0x9 + ldr r1, _08116CE4 @ =gUnknown_2021D18 +_08116CCE: + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116D06 + ldr r0, _08116CE8 @ =gUnknown_20370D0 + movs r1, 0x8 +_08116CDC: + strh r1, [r0] + movs r0, 0x17 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116CE4: .4byte gUnknown_2021D18 +_08116CE8: .4byte gUnknown_20370D0 +_08116CEC: + adds r0, r4, 0 + bl sub_8077508 + bl sub_811A41C + bl sub_80F8DC0 + b _08116D06 +_08116CFC: + bl sub_8117990 + adds r0, r4, 0 + bl sub_8077508 +_08116D06: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8116738 + + thumb_func_start sub_8116D10 +sub_8116D10: @ 8116D10 + push {lr} + lsls r1, 5 + ldr r0, [r0] + adds r3, r0, r1 + ldr r0, _08116D44 @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x4 + bne _08116D56 + ldrb r0, [r3, 0x1] + movs r1, 0x3C + ands r1, r0 + cmp r1, 0x10 + beq _08116D56 + cmp r1, 0x14 + beq _08116D56 + ldr r0, _08116D48 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r1, [r0, 0x9] + movs r2, 0x80 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08116D4C + movs r0, 0x1 + b _08116D5C + .align 2, 0 +_08116D44: .4byte gUnknown_203B058 +_08116D48: .4byte gUnknown_300500C +_08116D4C: + ldrb r1, [r3] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08116D5A +_08116D56: + movs r0, 0 + b _08116D5C +_08116D5A: + movs r0, 0x2 +_08116D5C: + pop {r1} + bx r1 + thumb_func_end sub_8116D10 + + thumb_func_start sub_8116D60 +sub_8116D60: @ 8116D60 + push {r4,r5,lr} + adds r4, r0, 0 + strb r1, [r4, 0xF] + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + ldrb r0, [r4, 0xE] + bl sub_8107180 + ldr r5, _08116DD4 @ =gUnknown_2021CD0 + ldrb r0, [r4, 0xF] + lsls r0, 5 + ldr r1, [r4] + adds r1, r0 + adds r1, 0x10 + adds r0, r5, 0 + bl sub_8008D54 + ldr r1, [r4] + ldrb r0, [r4, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r5, 0 + bl sub_80093BC + ldr r1, _08116DD8 @ =gUnknown_84570C8 + ldr r0, _08116DDC @ =gUnknown_20370C0 + ldrh r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + ldrb r1, [r4, 0xF] + lsls r1, 5 + ldr r0, [r4] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBF54 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08116DD4: .4byte gUnknown_2021CD0 +_08116DD8: .4byte gUnknown_84570C8 +_08116DDC: .4byte gUnknown_20370C0 + thumb_func_end sub_8116D60 + + thumb_func_start sub_8116DE0 +sub_8116DE0: @ 8116DE0 + push {lr} + ldr r0, _08116E0C @ =sub_8116E1C + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08116E10 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _08116E14 @ =gUnknown_3005098 + adds r1, r2 + str r1, [r3] + movs r2, 0 + strb r2, [r1, 0x8] + strb r2, [r1, 0x9] + ldr r2, _08116E18 @ =gUnknown_3002028 + str r1, [r2] + pop {r1} + bx r1 + .align 2, 0 +_08116E0C: .4byte sub_8116E1C +_08116E10: .4byte gUnknown_203B05C +_08116E14: .4byte gUnknown_3005098 +_08116E18: .4byte gUnknown_3002028 + thumb_func_end sub_8116DE0 + + thumb_func_start sub_8116E1C +sub_8116E1C: @ 8116E1C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08116E38 @ =gUnknown_203B05C + ldr r4, [r0] + ldrb r0, [r4, 0x8] + cmp r0, 0xB + bhi _08116F20 + lsls r0, 2 + ldr r1, _08116E3C @ =_08116E40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116E38: .4byte gUnknown_203B05C +_08116E3C: .4byte _08116E40 + .align 2, 0 +_08116E40: + .4byte _08116E70 + .4byte _08116F20 + .4byte _08116EA4 + .4byte _08116EC8 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116EF8 + .4byte _08116F16 +_08116E70: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBBD8 + movs r0, 0x1 + bl sub_80FB128 + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r4, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0x2 + strb r0, [r4, 0x8] + b _08116F20 +_08116EA4: + ldr r0, [r4, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r4] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r4, 0x4] + movs r1, 0xFF + bl sub_811A054 + movs r1, 0 + strb r0, [r4, 0x11] + strb r1, [r4, 0xF] + movs r0, 0x3 + strb r0, [r4, 0x8] + b _08116F20 +_08116EC8: + bl sub_8116FE4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08116EDA + movs r0, 0x2 + bl sub_80722CC +_08116EDA: + ldr r0, _08116EF4 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x26 + ldrsh r0, [r1, r2] + cmp r0, 0xFF + bne _08116F20 + movs r0, 0xA + strb r0, [r4, 0x8] + b _08116F20 + .align 2, 0 +_08116EF4: .4byte gUnknown_3005090 +_08116EF8: + ldrb r0, [r4, 0x11] + bl sub_8077508 + ldr r0, [r4] + bl sub_8002BC4 + ldr r0, [r4, 0x4] + bl sub_8002BC4 + bl sub_80F8DC0 + ldrb r0, [r4, 0x8] + adds r0, 0x1 + strb r0, [r4, 0x8] + b _08116F20 +_08116F16: + bl sub_80F8DC0 + adds r0, r5, 0 + bl sub_8077508 +_08116F20: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8116E1C + + thumb_func_start sub_8116F28 +sub_8116F28: @ 8116F28 + push {lr} + adds r2, r0, 0 + cmp r1, 0xFF + bne _08116F34 +_08116F30: + movs r0, 0x1 + b _08116F58 +_08116F34: + cmp r1, 0xD + bhi _08116F56 + ldr r0, _08116F44 @ =gUnknown_8457094 + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + b _08116F50 + .align 2, 0 +_08116F44: .4byte gUnknown_8457094 +_08116F48: + ldrb r0, [r1] + cmp r0, r2 + beq _08116F30 + adds r1, 0x1 +_08116F50: + ldrb r0, [r1] + cmp r0, 0xFF + bne _08116F48 +_08116F56: + movs r0, 0 +_08116F58: + pop {r1} + bx r1 + thumb_func_end sub_8116F28 + + thumb_func_start sub_8116F5C +sub_8116F5C: @ 8116F5C + push {lr} + ldr r0, [r0] + lsls r1, 5 + adds r1, r0, r1 + ldrb r2, [r1, 0x1A] + lsls r0, r2, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08116F8E + ldrb r0, [r1, 0xA] + lsrs r0, 7 + cmp r0, 0 + beq _08116F7A + movs r0, 0x3 + b _08116F90 +_08116F7A: + lsls r0, r2, 29 + cmp r0, 0 + bge _08116F84 + movs r0, 0x1 + b _08116F90 +_08116F84: + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08116F8E + movs r0, 0x2 + b _08116F90 +_08116F8E: + movs r0, 0 +_08116F90: + pop {r1} + bx r1 + thumb_func_end sub_8116F5C + + thumb_func_start sub_8116F94 +sub_8116F94: @ 8116F94 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _08116FE0 @ =gUnknown_203B05C + ldr r0, [r0] + mov r8, r0 + bl sub_8116F5C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 5 + mov r2, r8 + ldr r3, [r2] + adds r3, r1 + str r0, [sp] + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x8 + adds r2, r6, 0 + bl sub_811A81C + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08116FE0: .4byte gUnknown_203B05C + thumb_func_end sub_8116F94 + + thumb_func_start sub_8116FE4 +sub_8116FE4: @ 8116FE4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r0, _0811704C @ =gUnknown_203B05C + ldr r6, [r0] + movs r7, 0 + movs r3, 0 +_08116FF4: + ldr r0, [r6] + lsls r5, r3, 5 + adds r2, r0, r5 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + mov r8, r5 + cmp r0, 0 + beq _081170C0 + ldr r1, [r6, 0x4] + adds r0, r2, 0 + str r3, [sp] + bl sub_811A748 + adds r4, r0, 0 + ldr r3, [sp] + cmp r4, 0xFF + beq _0811708E + ldr r0, [r6] + adds r2, r0, r5 + ldrb r1, [r2, 0x1A] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _0811706C + lsls r0, r4, 3 + subs r0, r4 + lsls r4, r0, 2 + ldr r1, [r6, 0x4] + adds r1, r4 + adds r0, r2, 0 + bl sub_811A6DC + ldr r3, [sp] + cmp r0, 0 + beq _08117050 + ldr r1, [r6] + ldr r0, [r6, 0x4] + adds r1, r5 + adds r0, r4 + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + b _0811707A + .align 2, 0 +_0811704C: .4byte gUnknown_203B05C +_08117050: + ldr r0, [r6] + adds r1, r0, r5 + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08117084 + subs r0, 0x1 + strb r0, [r1, 0x1B] + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0, 0x1B] + cmp r0, 0 + bne _08117084 + movs r7, 0x2 + b _08117084 +_0811706C: + movs r4, 0x4 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] +_0811707A: + ldr r0, [r6] + adds r0, r5 + movs r1, 0x40 + strb r1, [r0, 0x1B] + movs r7, 0x1 +_08117084: + ldr r0, [r6] + add r0, r8 + movs r1, 0 + strh r1, [r0, 0x18] + b _081170C0 +_0811708E: + ldr r0, [r6] + adds r1, r0, r5 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x2 + beq _081170C0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + ldr r0, [r6] + adds r2, r0, r5 + ldrh r1, [r2, 0x18] + ldr r0, _081170FC @ =0x0000012b + cmp r1, r0 + bls _081170C0 + ldrb r0, [r2, 0x1A] + movs r7, 0x4 + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1A] + movs r7, 0x2 +_081170C0: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _08116FF4 + movs r5, 0 + movs r4, 0x3 +_081170CE: + ldr r0, [r6] + ldr r1, [r6, 0x4] + adds r1, r5 + movs r2, 0x10 + bl sub_811A798 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _081170E4 + movs r7, 0x1 +_081170E4: + adds r5, 0x1C + subs r4, 0x1 + cmp r4, 0 + bge _081170CE + adds r0, r7, 0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081170FC: .4byte 0x0000012b + thumb_func_end sub_8116FE4 + + thumb_func_start sub_8117100 +sub_8117100: @ 8117100 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_804C718 + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8117100 + + thumb_func_start sub_8117118 +sub_8117118: @ 8117118 + push {lr} + ldr r0, _0811712C @ =sub_8117100 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0811712C: .4byte sub_8117100 + thumb_func_end sub_8117118 + + thumb_func_start sub_8117130 +sub_8117130: @ 8117130 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0811716C @ =gUnknown_203B06C + mov r8, r0 + bl sub_800A404 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_811B1EC + adds r7, r0, 0 + ldr r1, _08117170 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0811719C + cmp r0, 0x1 + bgt _08117174 + cmp r0, 0 + beq _0811717E + b _0811725C + .align 2, 0 +_0811716C: .4byte gUnknown_203B06C +_08117170: .4byte gUnknown_3005090 +_08117174: + cmp r0, 0x2 + beq _081171D8 + cmp r0, 0x3 + beq _08117210 + b _0811725C +_0811717E: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08117198 @ =gUnknown_2024284 + adds r1, r0 + movs r0, 0 + movs r2, 0x64 + bl sub_800A448 + b _0811725C + .align 2, 0 +_08117198: .4byte gUnknown_2024284 +_0811719C: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0811725C + bl sub_800A404 + adds r1, r0, 0 + ldr r0, _081171D0 @ =gUnknown_202402C + movs r2, 0x1 + eors r1, r2 + lsls r1, 24 + lsrs r1, 16 + ldr r2, _081171D4 @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0x64 + bl memcpy + movs r0, 0x32 + bl sub_8054E90 + bl sub_800A550 + b _081171FA + .align 2, 0 +_081171D0: .4byte gUnknown_202402C +_081171D4: .4byte gUnknown_2022118 +_081171D8: + ldr r4, _08117204 @ =gUnknown_2022618 + ldr r0, _08117208 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _0811720C @ =0x00002cd0 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0xDC + bl memcpy + movs r0, 0 + adds r1, r4, 0 + movs r2, 0xDC + bl sub_800A448 + lsls r0, 24 + cmp r0, 0 + beq _0811725C +_081171FA: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _0811725C + .align 2, 0 +_08117204: .4byte gUnknown_2022618 +_08117208: .4byte gUnknown_3005008 +_0811720C: .4byte 0x00002cd0 +_08117210: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0811725C + ldr r4, _08117268 @ =gUnknown_2031CCC + bl sub_800A404 + adds r1, r0, 0 + movs r0, 0x1 + eors r1, r0 + lsls r1, 24 + lsrs r1, 16 + ldr r0, _0811726C @ =gUnknown_2022118 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0xD8 + bl memcpy + bl sub_800A550 + ldr r1, _08117270 @ =gUnknown_2031DA4 + strb r7, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + ldr r1, _08117274 @ =gUnknown_30030F0 + ldr r0, _08117278 @ =sub_80567DC + str r0, [r1, 0x8] + ldr r0, _0811727C @ =sub_8050138 + bl sub_8000544 + mov r0, r8 + bl sub_811B148 + adds r0, r6, 0 + bl sub_8077508 +_0811725C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08117268: .4byte gUnknown_2031CCC +_0811726C: .4byte gUnknown_2022118 +_08117270: .4byte gUnknown_2031DA4 +_08117274: .4byte gUnknown_30030F0 +_08117278: .4byte sub_80567DC +_0811727C: .4byte sub_8050138 + thumb_func_end sub_8117130 + + thumb_func_start sub_8117280 +sub_8117280: @ 8117280 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _081172A4 @ =gUnknown_3005090 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _081172A8 + cmp r0, 0x1 + beq _081172C0 + b _0811734A + .align 2, 0 +_081172A4: .4byte gUnknown_3005090 +_081172A8: + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + bne _081172B8 + movs r0, 0x2 + bl sub_800A474 +_081172B8: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0811734A +_081172C0: + bl sub_800A4EC + adds r4, r0, 0 + bl sub_800A8D4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _0811734A + movs r4, 0 + ldr r0, _081172E0 @ =gUnknown_2039624 + adds r7, r0, 0 + adds r7, 0x38 + ldr r6, _081172E4 @ =gUnknown_202273C + adds r5, r0, 0 + b _08117302 + .align 2, 0 +_081172E0: .4byte gUnknown_2039624 +_081172E4: .4byte gUnknown_202273C +_081172E8: + lsls r0, r4, 8 + ldr r1, _08117338 @ =gUnknown_2022118 + adds r1, r0, r1 + adds r0, r5, 0 + movs r2, 0x60 + bl memcpy + ldrh r0, [r6] + strb r0, [r7] + adds r7, 0x60 + adds r6, 0x1C + adds r5, 0x60 + adds r4, 0x1 +_08117302: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _081172E8 + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0811733C + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 16 + ldr r1, _08117338 @ =gUnknown_2022118 + adds r1, r0, r1 + adds r0, r1, 0 + adds r0, 0x60 + ldrh r0, [r0] + bl sub_81446D0 + b _08117340 + .align 2, 0 +_08117338: .4byte gUnknown_2022118 +_0811733C: + bl sub_81446C4 +_08117340: + bl sub_800A550 + mov r0, r8 + bl sub_8077508 +_0811734A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8117280 + + thumb_func_start sub_8117354 +sub_8117354: @ 8117354 + push {r4,lr} + ldr r0, _0811736C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _08117370 + cmp r0, 0x1 + beq _08117384 + b _081173A2 + .align 2, 0 +_0811736C: .4byte gUnknown_30030F0 +_08117370: + ldr r0, _08117380 @ =sub_8117280 + movs r1, 0x5 + bl sub_807741C + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081173A2 + .align 2, 0 +_08117380: .4byte sub_8117280 +_08117384: + ldr r0, _081173B8 @ =sub_8117280 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _081173A2 + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081173BC @ =sub_80567DC + bl sub_808B700 +_081173A2: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081173B8: .4byte sub_8117280 +_081173BC: .4byte sub_80567DC + thumb_func_end sub_8117354 + + thumb_func_start sub_81173C0 +sub_81173C0: @ 81173C0 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + bl sub_80A0058 + bl sub_804C1F0 + bl sub_804C320 + ldr r5, _0811742C @ =gUnknown_202273C + ldr r0, _08117430 @ =0x00002211 + str r0, [r5, 0x14] + bl sub_800A404 + adds r4, r0, 0 + bl sub_800A404 + lsls r4, 24 + lsrs r4, 24 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + bl sub_800A404 + adds r4, r0, 0 + bl sub_800A404 + movs r2, 0x1 + eors r4, r2 + lsls r4, 24 + lsrs r4, 24 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r5 + eors r0, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + ldr r1, _08117434 @ =gUnknown_30030F0 + ldr r0, _08117438 @ =sub_8081668 + str r0, [r1, 0x8] + ldr r0, _0811743C @ =gUnknown_2022B4C + str r6, [r0] + bl sub_8044074 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811742C: .4byte gUnknown_202273C +_08117430: .4byte 0x00002211 +_08117434: .4byte gUnknown_30030F0 +_08117438: .4byte sub_8081668 +_0811743C: .4byte gUnknown_2022B4C + thumb_func_end sub_81173C0 + + thumb_func_start sub_8117440 +sub_8117440: @ 8117440 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _081174AC @ =0x0000406f + adds r1, r3, 0 + bl sub_806E584 + ldr r6, _081174B0 @ =gUnknown_3005008 + ldr r1, [r6] + movs r0, 0x4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + mov r8, r2 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + str r5, [sp] + adds r3, r4, 0 + bl sub_805538C + ldr r0, [r6] + movs r1, 0x4 + ldrsb r1, [r0, r1] + movs r2, 0x5 + ldrsb r2, [r0, r2] + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0 + mov r3, r8 + bl sub_805541C + bl sub_8055378 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081174AC: .4byte 0x0000406f +_081174B0: .4byte gUnknown_3005008 + thumb_func_end sub_8117440 + + thumb_func_start sub_81174B4 +sub_81174B4: @ 81174B4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + mov r8, r2 + adds r6, r3, 0 + ldr r1, [sp, 0x18] + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _08117524 @ =gUnknown_20370C0 + strh r1, [r0] + ldr r0, _08117528 @ =0x0000406f + bl sub_806E584 + bl sub_800A088 + ldr r1, _0811752C @ =gUnknown_3005030 + strb r0, [r1] + bl sub_800A404 + ldr r1, _08117530 @ =gUnknown_300502C + strb r0, [r1] + bl sub_806E08C + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + movs r2, 0x1 + negs r2, r2 + mov r0, r8 + lsls r0, 24 + asrs r0, 24 + mov r8, r0 + lsls r6, 24 + asrs r6, 24 + str r6, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + mov r3, r8 + bl sub_805538C + bl sub_8055378 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08117524: .4byte gUnknown_20370C0 +_08117528: .4byte 0x0000406f +_0811752C: .4byte gUnknown_3005030 +_08117530: .4byte gUnknown_300502C + thumb_func_end sub_81174B4 + + thumb_func_start sub_8117534 +sub_8117534: @ 8117534 + push {r4,lr} + ldr r0, _0811754C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _08117550 + cmp r0, 0x1 + beq _08117564 + b _08117576 + .align 2, 0 +_0811754C: .4byte gUnknown_30030F0 +_08117550: + ldr r0, _08117560 @ =sub_8117280 + movs r1, 0x5 + bl sub_807741C + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08117576 + .align 2, 0 +_08117560: .4byte sub_8117280 +_08117564: + ldr r0, _0811758C @ =sub_8117280 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08117576 + ldr r0, _08117590 @ =sub_8056788 + bl sub_8000544 +_08117576: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811758C: .4byte sub_8117280 +_08117590: .4byte sub_8056788 + thumb_func_end sub_8117534 + + thumb_func_start sub_8117594 +sub_8117594: @ 8117594 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80898E8 + cmp r5, 0 + beq _081175AE + bl sub_81440E8 + adds r1, r4, 0 + adds r1, 0x60 + strh r0, [r1] + b _081175B4 +_081175AE: + adds r0, r4, 0 + adds r0, 0x60 + strh r5, [r0] +_081175B4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8117594 + + thumb_func_start sub_81175BC +sub_81175BC: @ 81175BC + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81446C4 + ldr r0, _081175DC @ =gUnknown_203B058 + ldrb r0, [r0] + subs r0, 0x1 + cmp r0, 0xD + bhi _08117620 + lsls r0, 2 + ldr r1, _081175E0 @ =_081175E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081175DC: .4byte gUnknown_203B058 +_081175E0: .4byte _081175E4 + .align 2, 0 +_081175E4: + .4byte _0811761C + .4byte _0811761C + .4byte _0811761C + .4byte _0811761C + .4byte _08117620 + .4byte _08117620 + .4byte _08117620 + .4byte _08117620 + .4byte _0811761C + .4byte _0811761C + .4byte _0811761C + .4byte _08117620 + .4byte _0811761C + .4byte _0811761C +_0811761C: + bl sub_80FD1A0 +_08117620: + ldr r0, _08117638 @ =gUnknown_203B058 + ldrb r0, [r0] + subs r0, 0x1 + cmp r0, 0x50 + bls _0811762C + b _081178E0 +_0811762C: + lsls r0, 2 + ldr r1, _0811763C @ =_08117640 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08117638: .4byte gUnknown_203B058 +_0811763C: .4byte _08117640 + .align 2, 0 +_08117640: + .4byte _081177A0 + .4byte _081177C8 + .4byte _081177F0 + .4byte _08117818 + .4byte _08117854 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117878 + .4byte _08117890 + .4byte _081178B0 + .4byte _081178C8 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117784 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117844 + .4byte _08117854 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117878 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117784 +_08117784: + bl sub_80563F0 + ldr r1, _08117798 @ =gUnknown_30030F0 + ldr r0, _0811779C @ =sub_811C1C8 + str r0, [r1, 0x8] + movs r0, 0x2 + bl sub_81274A8 + b _081178E0 + .align 2, 0 +_08117798: .4byte gUnknown_30030F0 +_0811779C: .4byte sub_811C1C8 +_081177A0: + bl sub_80563F0 + ldr r0, _081177C4 @ =gUnknown_2022618 + movs r1, 0x1 + bl sub_8117594 + bl sub_80A0058 + bl sub_804C1F0 + bl sub_804C320 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + b _0811782E + .align 2, 0 +_081177C4: .4byte gUnknown_2022618 +_081177C8: + bl sub_80563F0 + bl sub_80A0058 + bl sub_804C1F0 + bl sub_804C320 + ldr r0, _081177EC @ =gUnknown_2022618 + movs r1, 0x1 + bl sub_8117594 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + b _0811782E + .align 2, 0 +_081177EC: .4byte gUnknown_2022618 +_081177F0: + bl sub_80563F0 + bl sub_80A0058 + bl sub_804C1F0 + bl sub_804C320 + ldr r0, _08117814 @ =gUnknown_2022618 + movs r1, 0x1 + bl sub_8117594 + movs r0, 0x5 + str r0, [sp] + movs r0, 0 + movs r1, 0x3 + b _0811782C + .align 2, 0 +_08117814: .4byte gUnknown_2022618 +_08117818: + ldr r0, _0811783C @ =gUnknown_2022618 + movs r1, 0x1 + bl sub_8117594 + bl sub_80563F0 + movs r0, 0x3 + str r0, [sp] + movs r0, 0 + movs r1, 0x1 +_0811782C: + movs r2, 0x5 +_0811782E: + movs r3, 0x8 + bl sub_81174B4 + ldr r0, _08117840 @ =sub_8117534 + bl sub_8000544 + b _081178E0 + .align 2, 0 +_0811783C: .4byte gUnknown_2022618 +_08117840: .4byte sub_8117534 +_08117844: + ldr r0, _08117850 @ =sub_8117130 + movs r1, 0 + bl sub_807741C + b _081178E0 + .align 2, 0 +_08117850: .4byte sub_8117130 +_08117854: + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + bne _08117864 + bl sub_80F8CFC + b _08117872 +_08117864: + bl sub_80F8D14 + movs r0, 0x45 + movs r1, 0 + movs r2, 0x1 + bl sub_80FAF58 +_08117872: + bl sub_8128420 + b _081178E0 +_08117878: + ldr r0, _08117888 @ =gUnknown_2022618 + movs r1, 0 + bl sub_8117594 + ldr r0, _0811788C @ =sub_8117354 + bl sub_8000544 + b _081178E0 + .align 2, 0 +_08117888: .4byte gUnknown_2022618 +_0811788C: .4byte sub_8117354 +_08117890: + movs r0, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_8117440 + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081178AC @ =sub_805671C + bl sub_8147AA8 + b _081178E0 + .align 2, 0 +_081178AC: .4byte sub_805671C +_081178B0: + movs r0, 0x7 + movs r1, 0x9 + movs r2, 0x1 + bl sub_8117440 + ldr r0, _081178C4 @ =sub_805671C + bl sub_814B754 + b _081178E0 + .align 2, 0 +_081178C4: .4byte sub_805671C +_081178C8: + movs r0, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_8117440 + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081178F8 @ =sub_805671C + bl sub_81507FC +_081178E0: + adds r0, r4, 0 + bl sub_8077508 + ldr r1, _081178FC @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] + bl sub_806994C + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081178F8: .4byte sub_805671C +_081178FC: .4byte gUnknown_20370D0 + thumb_func_end sub_81175BC + + thumb_func_start sub_8117900 +sub_8117900: @ 8117900 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08117924 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08117944 + cmp r0, 0x1 + bgt _08117928 + cmp r0, 0 + beq _08117932 + b _08117988 + .align 2, 0 +_08117924: .4byte gUnknown_3005098 +_08117928: + cmp r0, 0x2 + beq _08117958 + cmp r0, 0x3 + beq _08117974 + b _08117988 +_08117932: + ldr r1, _08117940 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] + bl sub_8069B34 + b _08117968 + .align 2, 0 +_08117940: .4byte gUnknown_20370D0 +_08117944: + bl sub_8069A64 + lsls r0, 24 + cmp r0, 0 + bne _08117988 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + b _08117968 +_08117958: + ldr r0, _08117970 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08117988 + bl sub_800AB9C +_08117968: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _08117988 + .align 2, 0 +_08117970: .4byte gUnknown_2037AB8 +_08117974: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08117988 + adds r0, r5, 0 + bl sub_8077508 + bl sub_81179A4 +_08117988: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8117900 + + thumb_func_start sub_8117990 +sub_8117990: @ 8117990 + push {lr} + ldr r0, _081179A0 @ =sub_8117900 + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_081179A0: .4byte sub_8117900 + thumb_func_end sub_8117990 + + thumb_func_start sub_81179A4 +sub_81179A4: @ 81179A4 + push {lr} + ldr r0, _081179C4 @ =sub_81175BC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081179C8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_081179C4: .4byte sub_81175BC +_081179C8: .4byte gUnknown_3005090 + thumb_func_end sub_81179A4 + + thumb_func_start sub_81179CC +sub_81179CC: @ 81179CC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _081179FC @ =sub_8117A0C + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08117A00 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08117A04 @ =gUnknown_3005098 + adds r1, r0 + str r1, [r2] + movs r2, 0 + strb r2, [r1, 0xC] + strb r2, [r1, 0xD] + strb r4, [r1, 0x18] + ldr r0, _08117A08 @ =gUnknown_20370D0 + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081179FC: .4byte sub_8117A0C +_08117A00: .4byte gUnknown_203B05C +_08117A04: .4byte gUnknown_3005098 +_08117A08: .4byte gUnknown_20370D0 + thumb_func_end sub_81179CC + + thumb_func_start sub_8117A0C +sub_8117A0C: @ 8117A0C + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08117A2C @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0xC] + cmp r0, 0x11 + bls _08117A20 + b _08117ECA +_08117A20: + lsls r0, 2 + ldr r1, _08117A30 @ =_08117A34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08117A2C: .4byte gUnknown_203B05C +_08117A30: .4byte _08117A34 + .align 2, 0 +_08117A34: + .4byte _08117A7C + .4byte _08117AB8 + .4byte _08117B7C + .4byte _08117BAC + .4byte _08117BBC + .4byte _08117C0C + .4byte _08117BE4 + .4byte _08117C12 + .4byte _08117CB2 + .4byte _08117D94 + .4byte _08117DA4 + .4byte _08117DBA + .4byte _08117DD2 + .4byte _08117DEE + .4byte _08117E26 + .4byte _08117E4C + .4byte _08117E80 + .4byte _08117EBA +_08117A7C: + ldr r1, _08117AB0 @ =gUnknown_203B058 + ldrb r0, [r5, 0x18] + strb r0, [r1] + ldr r1, _08117AB4 @ =gUnknown_203B059 + movs r0, 0x2 + strb r0, [r1] + ldrb r0, [r5, 0x18] + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + movs r0, 0 + movs r1, 0 + bl sub_80FAF74 + bl sub_800B1F4 + bl sub_8009804 + movs r0, 0x2 + bl sub_80FBB8C + movs r0, 0x1 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117AB0: .4byte gUnknown_203B058 +_08117AB4: .4byte gUnknown_203B059 +_08117AB8: + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r5, 0x4] + movs r0, 0xA0 + bl sub_8002BB0 + str r0, [r5] + movs r0, 0xA0 + bl sub_8002BB0 + str r0, [r5, 0x8] + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x5 + bl sub_811A5E4 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x10 + bl sub_80FCD50 + ldr r1, [r5] + movs r3, 0 + movs r0, 0 + strh r0, [r1, 0x18] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + subs r0, 0x4 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1A] + ldr r0, [r5] + strb r3, [r0, 0x1B] + ldr r0, [r5, 0x4] + movs r1, 0xFF + bl sub_811A054 + strb r0, [r5, 0x17] + ldr r0, _08117B6C @ =gUnknown_8456CFC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl sub_81435D4 + lsls r0, 16 + ldr r2, _08117B70 @ =0x0000ffff + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_8003CE4 + strb r0, [r5, 0xF] + ldrb r0, [r5, 0xF] + bl sub_814240C + ldr r0, _08117B74 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, _08117B78 @ =gUnknown_8456D34 + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldrb r1, [r5, 0xF] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + strb r0, [r5, 0x12] + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + strb r0, [r5, 0x13] + b _08117C02 + .align 2, 0 +_08117B6C: .4byte gUnknown_8456CFC +_08117B70: .4byte 0x0000ffff +_08117B74: .4byte gUnknown_3005E70 +_08117B78: .4byte gUnknown_8456D34 +_08117B7C: + ldr r0, _08117B9C @ =gUnknown_2021CD0 + ldr r2, _08117BA0 @ =gUnknown_8456C74 + ldr r4, _08117BA4 @ =gUnknown_203B058 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _08117BA8 @ =gUnknown_2021D18 + ldrb r1, [r4] + bl sub_811599C + movs r0, 0x3 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117B9C: .4byte gUnknown_2021CD0 +_08117BA0: .4byte gUnknown_8456C74 +_08117BA4: .4byte gUnknown_203B058 +_08117BA8: .4byte gUnknown_2021D18 +_08117BAC: + ldr r0, _08117BB8 @ =gUnknown_2021D18 + bl sub_8142504 + movs r0, 0x4 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117BB8: .4byte gUnknown_2021D18 +_08117BBC: + adds r0, r5, 0 + movs r1, 0x5 + movs r2, 0x6 + bl sub_8116444 + ldr r0, _08117BE0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08117BD4 + b _08117ECA +_08117BD4: + movs r0, 0xD + strb r0, [r5, 0xC] + bl sub_80FCE44 + b _08117ECA + .align 2, 0 +_08117BE0: .4byte gUnknown_30030F0 +_08117BE4: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08117C08 @ =gUnknown_84577F8 + bl sub_814257C + cmp r0, 0 + bne _08117BF4 + b _08117ECA +_08117BF4: + ldr r0, [r5] + bl sub_81165E8 + strb r0, [r5, 0x13] + ldrb r0, [r5, 0x12] + bl sub_8107180 +_08117C02: + movs r0, 0x2 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117C08: .4byte gUnknown_84577F8 +_08117C0C: + movs r0, 0x7 + strb r0, [r5, 0xC] + b _08117ECA +_08117C12: + adds r0, r5, 0 + adds r0, 0xD + adds r1, r5, 0 + adds r1, 0x14 + ldr r3, _08117C38 @ =gUnknown_2021D18 + movs r2, 0 + bl sub_81427A0 + lsls r0, 24 + asrs r4, r0, 24 + cmp r4, 0 + beq _08117C42 + cmp r4, 0 + bgt _08117C3C + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _08117C84 + b _08117ECA + .align 2, 0 +_08117C38: .4byte gUnknown_2021D18 +_08117C3C: + cmp r4, 0x1 + beq _08117C84 + b _08117ECA +_08117C42: + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + strb r4, [r1, 0x1B] + ldrb r0, [r5, 0x12] + bl sub_8107180 + movs r0, 0x5 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x5 + b _08117CA8 +_08117C84: + movs r0, 0x6 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x6 +_08117CA8: + bl sub_80FA670 + movs r0, 0x8 + strb r0, [r5, 0xC] + b _08117ECA +_08117CB2: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x13] + lsls r2, 5 + ldr r1, [r5] + adds r1, r2 + adds r1, 0x10 + bl sub_80FA6FC + adds r4, r0, 0 + cmp r4, 0x1 + bne _08117D82 + ldrb r0, [r5, 0x19] + cmp r0, 0x5 + bne _08117D3C + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + movs r0, 0 + strb r0, [r1, 0x1B] + ldrb r0, [r5, 0x12] + bl sub_8107180 + ldrb r0, [r5, 0x13] + adds r0, 0x1 + strb r0, [r5, 0x13] + ldr r4, _08117D30 @ =gUnknown_2021CD0 + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r1, r0 + subs r1, 0x10 + adds r0, r4, 0 + bl sub_8008D54 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + subs r0, 0x1 + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, _08117D34 @ =gUnknown_2021D18 + ldr r1, _08117D38 @ =gUnknown_8457554 + bl sub_8008FCC + movs r0, 0x9 + strb r0, [r5, 0xC] + bl sub_80F8F5C + b _08117D7C + .align 2, 0 +_08117D30: .4byte gUnknown_2021CD0 +_08117D34: .4byte gUnknown_2021D18 +_08117D38: .4byte gUnknown_8457554 +_08117D3C: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBD4C + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + ldrb r2, [r1, 0x1A] + movs r0, 0x4 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r0, [r5] + bl sub_81165E8 + ldrb r0, [r5, 0x12] + bl sub_8107180 + movs r0, 0x2 + strb r0, [r5, 0xC] +_08117D7C: + movs r0, 0 + strb r0, [r5, 0x19] + b _08117ECA +_08117D82: + cmp r4, 0x2 + beq _08117D88 + b _08117ECA +_08117D88: + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + strb r4, [r5, 0xC] + b _08117ECA +_08117D94: + ldr r0, _08117DA0 @ =gUnknown_2021D18 + bl sub_8142504 + movs r0, 0xA + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117DA0: .4byte gUnknown_2021D18 +_08117DA4: + ldrb r0, [r5, 0xE] + adds r0, 0x1 + strb r0, [r5, 0xE] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x78 + bhi _08117DB4 + b _08117ECA +_08117DB4: + movs r0, 0xB + strb r0, [r5, 0xC] + b _08117ECA +_08117DBA: + adds r0, r5, 0 + movs r1, 0x5 + movs r2, 0x6 + bl sub_8116444 + lsls r0, 24 + cmp r0, 0 + beq _08117DCC + b _08117ECA +_08117DCC: + movs r0, 0xC + strb r0, [r5, 0xC] + b _08117ECA +_08117DD2: + bl sub_80F8F40 + lsls r0, 24 + cmp r0, 0 + beq _08117DE8 + movs r0, 0 + bl sub_80F8F7C + movs r0, 0xF + strb r0, [r5, 0xC] + b _08117ECA +_08117DE8: + movs r0, 0x6 + strb r0, [r5, 0xC] + b _08117ECA +_08117DEE: + bl sub_80FCE44 + bl sub_80F8DC0 + ldrb r0, [r5, 0x12] + movs r1, 0 + movs r2, 0 + bl sub_810713C + movs r0, 0 + bl sub_80020BC + ldrb r0, [r5, 0xF] + bl sub_8003E3C + ldrb r0, [r5, 0x17] + bl sub_8077508 + ldr r0, [r5, 0x8] + bl sub_8002BC4 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, [r5, 0x4] + bl sub_8002BC4 + b _08117EB2 +_08117E26: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08117E44 @ =gUnknown_84571B8 + bl sub_814257C + cmp r0, 0 + beq _08117ECA + adds r0, r4, 0 + bl sub_8077508 + ldr r1, _08117E48 @ =gUnknown_20370D0 + movs r0, 0x5 + strh r0, [r1] + b _08117ECA + .align 2, 0 +_08117E44: .4byte gUnknown_84571B8 +_08117E48: .4byte gUnknown_20370D0 +_08117E4C: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08117E64 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08117E6A +_08117E64: + movs r0, 0xD + strb r0, [r5, 0xC] + b _08117ECA +_08117E6A: + ldr r0, _08117E7C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08117ECA + movs r0, 0x1 + bl sub_80FAFE0 + b _08117EB2 + .align 2, 0 +_08117E7C: .4byte gUnknown_3003F64 +_08117E80: + ldrb r0, [r5, 0x12] + movs r1, 0 + movs r2, 0 + bl sub_810713C + movs r0, 0 + bl sub_80020BC + ldrb r0, [r5, 0xF] + bl sub_8003E3C + ldrb r0, [r5, 0x17] + bl sub_8077508 + ldr r0, [r5, 0x8] + bl sub_8002BC4 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, [r5, 0x4] + bl sub_8002BC4 + bl sub_800AB9C +_08117EB2: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] + b _08117ECA +_08117EBA: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08117ECA + adds r0, r4, 0 + bl sub_8077508 +_08117ECA: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8117A0C + + thumb_func_start sub_8117ED4 +sub_8117ED4: @ 8117ED4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08117F0C @ =sub_8117F20 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08117F10 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08117F14 @ =gUnknown_3005098 + adds r1, r0 + str r1, [r2] + ldr r0, _08117F18 @ =gUnknown_3002028 + str r1, [r0] + movs r2, 0 + strb r2, [r1, 0x8] + strb r2, [r1, 0x9] + subs r4, 0x15 + strb r4, [r1, 0x12] + ldr r0, _08117F1C @ =gUnknown_20370D0 + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08117F0C: .4byte sub_8117F20 +_08117F10: .4byte gUnknown_203B05C +_08117F14: .4byte gUnknown_3005098 +_08117F18: .4byte gUnknown_3002028 +_08117F1C: .4byte gUnknown_20370D0 + thumb_func_end sub_8117ED4 + + thumb_func_start sub_8117F20 +sub_8117F20: @ 8117F20 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08117F40 @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0x8] + cmp r0, 0xC + bls _08117F34 + b _08118288 +_08117F34: + lsls r0, 2 + ldr r1, _08117F44 @ =_08117F48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08117F40: .4byte gUnknown_203B05C +_08117F44: .4byte _08117F48 + .align 2, 0 +_08117F48: + .4byte _08117F7C + .4byte _08117FB0 + .4byte _08117FC0 + .4byte _08118070 + .4byte _08118150 + .4byte _0811818C + .4byte _081181EC + .4byte _08118248 + .4byte _081181EC + .4byte _08118222 + .4byte _081181EC + .4byte _0811826C + .4byte _08118278 +_08117F7C: + ldrb r0, [r5, 0x12] + adds r0, 0x15 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBBD8 + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r5, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r5] + movs r0, 0x1 + strb r0, [r5, 0x8] + b _08118288 +_08117FB0: + ldr r0, _08117FBC @ =gUnknown_8458FE4 + bl sub_8142504 + movs r0, 0x2 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_08117FBC: .4byte gUnknown_8458FE4 +_08117FC0: + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r5, 0x4] + ldrb r1, [r5, 0x12] + adds r1, 0x7 + bl sub_811A054 + movs r4, 0 + strb r0, [r5, 0x11] + ldr r0, _0811805C @ =gUnknown_8456D4C + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl sub_81435D4 + lsls r0, 16 + ldr r2, _08118060 @ =0x0000ffff + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_8003CE4 + strb r0, [r5, 0xB] + ldr r0, _08118064 @ =gUnknown_8456D54 + bl sub_8003CE4 + strb r0, [r5, 0xD] + ldrb r0, [r5, 0xB] + bl sub_814240C + ldr r0, _08118068 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, _0811806C @ =gUnknown_8456DDC + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldrb r1, [r5, 0xB] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + strb r0, [r5, 0xE] + ldrb r0, [r5, 0xD] + bl sub_814240C + ldrb r0, [r5, 0xD] + movs r1, 0x11 + bl sub_800445C + ldrb r0, [r5, 0xD] + bl sub_8003FA0 + ldrb r0, [r5, 0xD] + bl sub_8115924 + ldrb r0, [r5, 0xD] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + strb r4, [r5, 0xF] + movs r0, 0x3 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_0811805C: .4byte gUnknown_8456D4C +_08118060: .4byte 0x0000ffff +_08118064: .4byte gUnknown_8456D54 +_08118068: .4byte gUnknown_3005E70 +_0811806C: .4byte gUnknown_8456DDC +_08118070: + bl sub_8116FE4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0811808E + cmp r2, 0x1 + bne _08118086 + movs r0, 0x2 + bl sub_80722CC +_08118086: + ldrb r0, [r5, 0xE] + bl sub_8107180 + b _08118288 +_0811808E: + ldrb r0, [r5, 0xE] + bl sub_8107078 + adds r2, r0, 0 + ldr r0, _08118128 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08118138 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _08118138 + ldr r0, [r5] + lsls r1, r2, 5 + adds r0, r1 + ldrb r1, [r0, 0xA] + ldrb r0, [r0, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08118130 + lsrs r0, r1, 7 + cmp r0, 0 + bne _08118130 + strb r2, [r5, 0xF] + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + ldrb r0, [r5, 0xE] + bl sub_8107180 + ldr r4, _0811812C @ =gUnknown_2021CD0 + ldrb r0, [r5, 0xF] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldrb r1, [r5, 0xF] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBF54 + movs r0, 0x67 + bl sub_80722CC + movs r0, 0x4 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_08118128: .4byte gUnknown_30030F0 +_0811812C: .4byte gUnknown_2021CD0 +_08118130: + movs r0, 0x7 + bl sub_80722CC + b _08118288 +_08118138: + ldr r0, _0811814C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08118146 + b _08118288 +_08118146: + movs r0, 0x6 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_0811814C: .4byte gUnknown_30030F0 +_08118150: + ldr r0, _08118184 @ =gUnknown_8459238 + bl sub_8142504 + ldr r4, _08118188 @ =gUnknown_2021CD0 + ldrb r0, [r5, 0xF] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + movs r0, 0x5 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_08118184: .4byte gUnknown_8459238 +_08118188: .4byte gUnknown_2021CD0 +_0811818C: + ldr r0, _081181C4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _081181AA + ldr r2, _081181C8 @ =gUnknown_203B058 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 25 + lsrs r0, 25 + strb r0, [r2] + movs r0, 0xA + strb r0, [r5, 0x8] +_081181AA: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + beq _081181D6 + cmp r0, 0x5 + bgt _081181CC + cmp r0, 0x2 + bgt _08118288 + cmp r0, 0x1 + blt _08118288 + b _081181D0 + .align 2, 0 +_081181C4: .4byte gUnknown_3003F64 +_081181C8: .4byte gUnknown_203B058 +_081181CC: + cmp r0, 0x6 + bne _08118288 +_081181D0: + movs r0, 0x8 + strb r0, [r5, 0x8] + b _08118288 +_081181D6: + ldr r0, _081181E8 @ =gUnknown_84576AC + bl sub_8142504 + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + b _08118288 + .align 2, 0 +_081181E8: .4byte gUnknown_84576AC +_081181EC: + ldrb r0, [r5, 0xE] + movs r1, 0 + movs r2, 0 + bl sub_810713C + movs r0, 0 + bl sub_80020BC + ldrb r0, [r5, 0xD] + bl sub_8003E3C + ldrb r0, [r5, 0xB] + bl sub_8003E3C + ldrb r0, [r5, 0x11] + bl sub_8077508 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, [r5, 0x4] + bl sub_8002BC4 + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + b _08118288 +_08118222: + adds r5, 0x9 + ldr r4, _08118244 @ =gUnknown_8457838 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + bl sub_814257C + cmp r0, 0 + beq _08118288 + bl sub_80FCE44 + b _08118252 + .align 2, 0 +_08118244: .4byte gUnknown_8457838 +_08118248: + bl sub_80FCE44 + ldr r0, _08118264 @ =gUnknown_84571B8 + bl sub_8142504 +_08118252: + adds r0, r6, 0 + bl sub_8077508 + bl sub_80F8DC0 + ldr r1, _08118268 @ =gUnknown_20370D0 + movs r0, 0x5 + strh r0, [r1] + b _08118288 + .align 2, 0 +_08118264: .4byte gUnknown_84571B8 +_08118268: .4byte gUnknown_20370D0 +_0811826C: + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + bl sub_800AB9C + b _08118288 +_08118278: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08118288 + adds r0, r6, 0 + bl sub_8077508 +_08118288: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8117F20 + + thumb_func_start sub_8118290 +sub_8118290: @ 8118290 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _081182C8 @ =sub_81182DC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081182CC @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081182D0 @ =gUnknown_3005098 + adds r1, r0 + str r1, [r2] + ldr r0, _081182D4 @ =gUnknown_3002028 + str r1, [r0] + movs r2, 0 + strb r2, [r1, 0x8] + strb r2, [r1, 0x9] + subs r4, 0x15 + strb r4, [r1, 0x12] + ldr r0, _081182D8 @ =gUnknown_20370D0 + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081182C8: .4byte sub_81182DC +_081182CC: .4byte gUnknown_203B05C +_081182D0: .4byte gUnknown_3005098 +_081182D4: .4byte gUnknown_3002028 +_081182D8: .4byte gUnknown_20370D0 + thumb_func_end sub_8118290 + + thumb_func_start sub_81182DC +sub_81182DC: @ 81182DC + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081182FC @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0x8] + cmp r0, 0xE + bls _081182F0 + b _08118604 +_081182F0: + lsls r0, 2 + ldr r1, _08118300 @ =_08118304 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081182FC: .4byte gUnknown_203B05C +_08118300: .4byte _08118304 + .align 2, 0 +_08118304: + .4byte _08118340 + .4byte _0811836E + .4byte _08118380 + .4byte _08118408 + .4byte _081184C8 + .4byte _08118504 + .4byte _08118564 + .4byte _081185A8 + .4byte _08118564 + .4byte _0811859A + .4byte _08118564 + .4byte _081185B4 + .4byte _08118564 + .4byte _081185E8 + .4byte _081185F4 +_08118340: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBBD8 + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r5, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r5] + movs r0, 0x1 + strb r0, [r5, 0x8] + b _08118604 +_0811836E: + ldr r0, _0811837C @ =gUnknown_84591DC + bl sub_8142504 + movs r0, 0x2 + strb r0, [r5, 0x8] + b _08118604 + .align 2, 0 +_0811837C: .4byte gUnknown_84591DC +_08118380: + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r5, 0x4] + ldrb r1, [r5, 0x12] + adds r1, 0x7 + bl sub_811A084 + strb r0, [r5, 0x11] + ldrb r0, [r5, 0x13] + cmp r0, 0 + beq _081183EC + ldr r0, _081183F8 @ =gUnknown_8456D4C + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl sub_81435D4 + lsls r0, 16 + ldr r2, _081183FC @ =0x0000ffff + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_8003CE4 + strb r0, [r5, 0xB] + ldrb r0, [r5, 0xB] + bl sub_814240C + ldr r0, _08118400 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, _08118404 @ =gUnknown_8456DDC + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldrb r1, [r5, 0xB] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + strb r0, [r5, 0xE] + movs r0, 0 + bl sub_80020BC +_081183EC: + movs r0, 0 + strb r0, [r5, 0xF] + movs r0, 0x3 + strb r0, [r5, 0x8] + b _08118604 + .align 2, 0 +_081183F8: .4byte gUnknown_8456D4C +_081183FC: .4byte 0x0000ffff +_08118400: .4byte gUnknown_3005E70 +_08118404: .4byte gUnknown_8456DDC +_08118408: + bl sub_8116FE4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0811842E + cmp r0, 0x1 + bne _0811841E + movs r0, 0x2 + bl sub_80722CC +_0811841E: + ldrb r0, [r5, 0x13] + cmp r0, 0 + bne _08118426 + b _08118604 +_08118426: + ldrb r0, [r5, 0xE] + bl sub_8107180 + b _08118604 +_0811842E: + ldrb r0, [r5, 0x13] + cmp r0, 0 + beq _0811843A + ldrb r0, [r5, 0xE] + bl sub_8107078 +_0811843A: + ldrb r0, [r5, 0x14] + cmp r0, 0x78 + bls _081184A8 + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _081184BC + ldrb r1, [r2, 0xA] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _081184BC + ldrb r1, [r5, 0x12] + adds r1, 0x7 + adds r0, r2, 0 + bl sub_8119FB0 + cmp r0, 0 + beq _0811849C + strb r4, [r5, 0xF] + strb r4, [r5, 0x14] + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + ldr r0, [r5] + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBF54 + movs r0, 0x67 + bl sub_80722CC + movs r0, 0x4 + strb r0, [r5, 0x8] + b _081184BC +_0811849C: + movs r0, 0x16 + bl sub_80722CC + movs r0, 0xA + strb r0, [r5, 0x8] + b _081184BC +_081184A8: + ldr r0, _081184C4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081184BC + movs r1, 0 + movs r0, 0x6 + strb r0, [r5, 0x8] + strb r1, [r5, 0x14] +_081184BC: + ldrb r0, [r5, 0x14] + adds r0, 0x1 + strb r0, [r5, 0x14] + b _08118604 + .align 2, 0 +_081184C4: .4byte gUnknown_30030F0 +_081184C8: + ldr r0, _081184FC @ =gUnknown_845928C + bl sub_8142504 + ldr r4, _08118500 @ =gUnknown_2021CD0 + ldrb r0, [r5, 0xF] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + movs r0, 0x5 + strb r0, [r5, 0x8] + b _08118604 + .align 2, 0 +_081184FC: .4byte gUnknown_845928C +_08118500: .4byte gUnknown_2021CD0 +_08118504: + ldr r0, _0811853C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08118522 + ldr r2, _08118540 @ =gUnknown_203B058 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 25 + lsrs r0, 25 + strb r0, [r2] + movs r0, 0xC + strb r0, [r5, 0x8] +_08118522: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + beq _0811854E + cmp r0, 0x5 + bgt _08118544 + cmp r0, 0x2 + bgt _08118604 + cmp r0, 0x1 + blt _08118604 + b _08118548 + .align 2, 0 +_0811853C: .4byte gUnknown_3003F64 +_08118540: .4byte gUnknown_203B058 +_08118544: + cmp r0, 0x6 + bne _08118604 +_08118548: + movs r0, 0x8 + strb r0, [r5, 0x8] + b _08118604 +_0811854E: + ldr r0, _08118560 @ =gUnknown_845777C + bl sub_8142504 + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + b _08118604 + .align 2, 0 +_08118560: .4byte gUnknown_845777C +_08118564: + ldrb r0, [r5, 0x13] + cmp r0, 0 + beq _08118580 + ldrb r0, [r5, 0xE] + movs r1, 0 + movs r2, 0 + bl sub_810713C + movs r0, 0 + bl sub_80020BC + ldrb r0, [r5, 0xB] + bl sub_8003E3C +_08118580: + ldrb r0, [r5, 0x11] + bl sub_8077508 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, [r5, 0x4] + bl sub_8002BC4 + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + b _08118604 +_0811859A: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _081185A4 @ =gUnknown_84577BC + b _081185C2 + .align 2, 0 +_081185A4: .4byte gUnknown_84577BC +_081185A8: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _081185B0 @ =gUnknown_84571E0 + b _081185C2 + .align 2, 0 +_081185B0: .4byte gUnknown_84571E0 +_081185B4: + adds r0, r5, 0 + adds r0, 0x9 + ldr r2, _081185E0 @ =gUnknown_845933C + ldrb r1, [r5, 0x12] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] +_081185C2: + bl sub_814257C + cmp r0, 0 + beq _08118604 + bl sub_80FCE44 + adds r0, r4, 0 + bl sub_8077508 + bl sub_80F8DC0 + ldr r1, _081185E4 @ =gUnknown_20370D0 + movs r0, 0x5 + strh r0, [r1] + b _08118604 + .align 2, 0 +_081185E0: .4byte gUnknown_845933C +_081185E4: .4byte gUnknown_20370D0 +_081185E8: + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + bl sub_800AB9C + b _08118604 +_081185F4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08118604 + adds r0, r4, 0 + bl sub_8077508 +_08118604: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81182DC + + thumb_func_start sub_811860C +sub_811860C: @ 811860C + push {r4,lr} + bl sub_80FAF34 + ldr r0, _08118648 @ =sub_81186E0 + movs r1, 0xA + bl sub_807741C + ldr r4, _0811864C @ =gUnknown_203B05C + movs r0, 0x96 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r4] + ldr r1, _08118650 @ =gUnknown_300202C + str r0, [r1] + movs r1, 0 + strb r1, [r0, 0x14] + strb r1, [r0, 0x16] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + ldr r0, _08118654 @ =gUnknown_20370D0 + strh r1, [r0] + movs r0, 0xD0 + movs r1, 0x1 + bl sub_8107D38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08118648: .4byte sub_81186E0 +_0811864C: .4byte gUnknown_203B05C +_08118650: .4byte gUnknown_300202C +_08118654: .4byte gUnknown_20370D0 + thumb_func_end sub_811860C + + thumb_func_start sub_8118658 +sub_8118658: @ 8118658 + ldrb r1, [r0, 0x1] + lsls r1, 8 + ldrb r0, [r0] + orrs r0, r1 + bx lr + thumb_func_end sub_8118658 + + thumb_func_start sub_8118664 +sub_8118664: @ 8118664 + push {lr} + adds r3, r1, 0 + ldr r1, _08118684 @ =gUnknown_203B05C + ldr r2, [r1] + movs r1, 0x8 + strb r1, [r2, 0x14] + strb r0, [r2, 0x15] + ldr r0, _08118688 @ =gUnknown_2021D18 + cmp r3, r0 + beq _0811867E + adds r1, r3, 0 + bl sub_8008FCC +_0811867E: + pop {r0} + bx r0 + .align 2, 0 +_08118684: .4byte gUnknown_203B05C +_08118688: .4byte gUnknown_2021D18 + thumb_func_end sub_8118664 + + thumb_func_start sub_811868C +sub_811868C: @ 811868C + push {lr} + adds r2, r0, 0 + ldr r0, _081186A8 @ =gUnknown_203B05C + ldr r1, [r0] + movs r0, 0x1A + strb r0, [r1, 0x14] + ldr r0, _081186AC @ =gUnknown_2021D18 + cmp r2, r0 + beq _081186A4 + adds r1, r2, 0 + bl sub_8008FCC +_081186A4: + pop {r0} + bx r0 + .align 2, 0 +_081186A8: .4byte gUnknown_203B05C +_081186AC: .4byte gUnknown_2021D18 + thumb_func_end sub_811868C + + thumb_func_start sub_81186B0 +sub_81186B0: @ 81186B0 + push {lr} + ldr r3, _081186C4 @ =gUnknown_201FF00 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 1 + adds r0, r3, 0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_081186C4: .4byte gUnknown_201FF00 + thumb_func_end sub_81186B0 + + thumb_func_start sub_81186C8 +sub_81186C8: @ 81186C8 + push {lr} + ldr r0, [r0] + ldr r1, _081186DC @ =gUnknown_201FF00 + movs r2, 0x80 + lsls r2, 1 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_081186DC: .4byte gUnknown_201FF00 + thumb_func_end sub_81186C8 + + thumb_func_start sub_81186E0 +sub_81186E0: @ 81186E0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + ldr r0, _08118710 @ =gUnknown_203B05C + ldr r6, [r0] + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08118714 @ =gUnknown_3005098 + adds r7, r0, r1 + ldrb r0, [r6, 0x14] + cmp r0, 0x38 + bls _08118706 + bl _081198DC +_08118706: + lsls r0, 2 + ldr r1, _08118718 @ =_0811871C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08118710: .4byte gUnknown_203B05C +_08118714: .4byte gUnknown_3005098 +_08118718: .4byte _0811871C + .align 2, 0 +_0811871C: + .4byte _08118800 + .4byte _08118858 + .4byte _0811887C + .4byte _081188CC + .4byte _081189AA + .4byte _08118E60 + .4byte _08118C58 + .4byte _08118E60 + .4byte _081198C8 + .4byte _081191D4 + .4byte _081192E0 + .4byte _081190B0 + .4byte _081190CA + .4byte _08119330 + .4byte _08119354 + .4byte _0811935C + .4byte _0811936C + .4byte _0811939A + .4byte _081193AE + .4byte _08118F36 + .4byte _08118FBC + .4byte _08118FDA + .4byte _0811904E + .4byte _08118ADE + .4byte _08118B04 + .4byte _08118B7C + .4byte _0811989C + .4byte _08118D50 + .4byte _08118D38 + .4byte _08118DD4 + .4byte _08118C2E + .4byte _08118DAA + .4byte _08118DA0 + .4byte _08119164 + .4byte _08119184 + .4byte _081191C4 + .4byte _081192E8 + .4byte _08119324 + .4byte _08118BF8 + .4byte _0811910C + .4byte _08118E98 + .4byte _08118EC8 + .4byte _081193D8 + .4byte _08119468 + .4byte _081195B8 + .4byte _08119620 + .4byte _0811963C + .4byte _08119484 + .4byte _08119644 + .4byte _08119784 + .4byte _081197B8 + .4byte _08119840 + .4byte _0811953C + .4byte _081194F0 + .4byte _08119504 + .4byte _0811959C + .4byte _081195EC +_08118800: + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r6, 0x4] + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r6, 0xC] + movs r0, 0x80 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r6] + movs r0, 0x20 + bl sub_8002BB0 + str r0, [r6, 0x8] + ldr r0, [r6] + movs r1, 0x8 + bl sub_811A5E4 + ldr r1, _08118854 @ =gUnknown_203B058 + movs r0, 0x40 + strb r0, [r1] + ldr r0, [r6, 0xC] + ldr r1, [r6, 0x4] + movs r2, 0x9 + bl sub_8119E84 + adds r1, r6, 0 + adds r1, 0x20 + strb r0, [r1] + adds r0, r6, 0 + adds r0, 0x8C + bl sub_811B754 + bl sub_811BB68 + movs r0, 0x1 + bl _081198DA + .align 2, 0 +_08118854: .4byte gUnknown_203B058 +_08118858: + adds r0, r6, 0 + adds r0, 0x21 + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_811BAAC + ldrh r0, [r7] + adds r0, 0x1 + strh r0, [r7] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + beq _08118876 + bl _081198DC +_08118876: + movs r0, 0x2 + bl _081198DA +_0811887C: + movs r0, 0x40 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + ldr r2, _081188C4 @ =gUnknown_203B06C + ldrh r0, [r2, 0x2] + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0xC] + bl sub_80FAFA0 + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBC00 + ldr r0, [r6, 0x8] + movs r1, 0x1 + bl sub_811A5E4 + ldr r0, [r6, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r6, 0xC] + movs r1, 0x4 + bl sub_811A650 + ldr r1, _081188C8 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + movs r0, 0x3 + bl _081198DA + .align 2, 0 +_081188C4: .4byte gUnknown_203B06C +_081188C8: .4byte gUnknown_20370D0 +_081188CC: + bl sub_811FB18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8 + beq _081188E4 + bl sub_811FB18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bne _081189A4 +_081188E4: + ldr r4, _08118900 @ =gUnknown_203B06C + ldrh r0, [r4] + cmp r0, 0 + beq _081189A4 + bl sub_811FB0C + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4] + cmp r0, 0x1 + beq _08118904 + cmp r0, 0x2 + beq _08118954 + b _08118992 + .align 2, 0 +_08118900: .4byte gUnknown_203B06C +_08118904: + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + cmp r5, 0x5 + bls _08118930 + adds r0, r4, 0 + bl sub_811B148 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + ldr r0, _0811892C @ =gUnknown_8458D54 + bl sub_811868C + b _08118992 + .align 2, 0 +_0811892C: .4byte gUnknown_8458D54 +_08118930: + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_811B16C + cmp r0, 0 + bne _08118950 + ldr r1, _0811894C @ =gUnknown_8458CD4 + movs r0, 0x34 + bl sub_8118664 + b _08118992 + .align 2, 0 +_0811894C: .4byte gUnknown_8458CD4 +_08118950: + movs r0, 0x37 + b _08118990 +_08118954: + adds r0, r6, 0 + bl sub_81186C8 + ldrb r0, [r4, 0x8] + strh r0, [r7, 0x2] + cmp r5, 0x5 + bls _08118970 + ldr r0, _0811896C @ =gUnknown_8458D9C + bl sub_811868C + b _08118992 + .align 2, 0 +_0811896C: .4byte gUnknown_8458D9C +_08118970: + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + ldr r1, _0811899C @ =gUnknown_203B058 + movs r0, 0x44 + strb r0, [r1] + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_811B1B4 + movs r0, 0x33 +_08118990: + strb r0, [r6, 0x14] +_08118992: + ldr r1, _081189A0 @ =gUnknown_203B06C + movs r0, 0 + strh r0, [r1] + bl _081198DC + .align 2, 0 +_0811899C: .4byte gUnknown_203B058 +_081189A0: .4byte gUnknown_203B06C +_081189A4: + movs r0, 0x4 + bl _081198DA +_081189AA: + ldr r4, _081189D8 @ =gUnknown_20370D0 + ldrh r0, [r4] + cmp r0, 0 + beq _08118A0E + cmp r0, 0x9 + bne _081189E4 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r0, 0x2 + bl sub_80722CC + ldr r0, _081189DC @ =gUnknown_2021CD0 + ldr r1, _081189E0 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + movs r1, 0 + movs r0, 0x2A + b _08118A06 + .align 2, 0 +_081189D8: .4byte gUnknown_20370D0 +_081189DC: .4byte gUnknown_2021CD0 +_081189E0: .4byte gUnknown_300500C +_081189E4: + cmp r0, 0xB + bne _081189F8 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r1, 0 + movs r0, 0x17 + b _08118A06 +_081189F8: + movs r0, 0 + strh r0, [r7] + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r7, 0x2] + movs r1, 0 + movs r0, 0x18 +_08118A06: + strb r0, [r6, 0x14] + strh r1, [r4] + bl _081198DC +_08118A0E: + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08118A1E + bl _081198DC +_08118A1E: + ldr r0, _08118A4C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08118A84 + ldr r0, [r6] + adds r2, r7, 0x2 + adds r3, r6, 0 + adds r3, 0x21 + adds r1, r7, 0 + bl sub_811BF00 + cmp r0, 0 + beq _08118A50 + movs r0, 0x5 + bl sub_80722CC + bl sub_811B298 + movs r0, 0x18 + bl _081198DA + .align 2, 0 +_08118A4C: .4byte gUnknown_30030F0 +_08118A50: + bl sub_811A9B8 + cmp r0, 0 + beq _08118A84 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r0, 0x2 + bl sub_80722CC + bl sub_811B298 + ldr r0, _08118A7C @ =gUnknown_2021CD0 + ldr r1, _08118A80 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + movs r0, 0x2D + bl _081198DA + .align 2, 0 +_08118A7C: .4byte gUnknown_2021CD0 +_08118A80: .4byte gUnknown_300500C +_08118A84: + bl sub_8119B94 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _08118AA6 + cmp r0, 0x2 + bgt _08118A9A + cmp r0, 0x1 + beq _08118AA0 + b _08118AD4 +_08118A9A: + cmp r0, 0x4 + beq _08118AAE + b _08118AD4 +_08118AA0: + movs r0, 0x37 + bl sub_80722CC +_08118AA6: + adds r0, r6, 0 + bl sub_811BECC + b _08118AD4 +_08118AAE: + movs r0, 0xB + strb r0, [r6, 0x14] + bl sub_811B298 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + adds r0, r6, 0 + bl sub_811B2D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x53 + movs r2, 0 + bl sub_80FB008 +_08118AD4: + adds r0, r6, 0 + bl sub_811BEDC + bl _081198DC +_08118ADE: + ldr r0, _08118B00 @ =sub_806F1F0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08118AEE + bl _081198DC +_08118AEE: + movs r0, 0x40 + movs r1, 0 + movs r2, 0 + bl sub_80FB008 + movs r0, 0x4 + bl _081198DA + .align 2, 0 +_08118B00: .4byte sub_806F1F0 +_08118B04: + bl sub_811A0E0 + movs r3, 0x2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + ldr r0, [r6] + ldrb r1, [r7] + ldrb r2, [r7, 0x2] + adds r3, r4, 0 + bl sub_811AA5C + cmp r0, 0x1 + beq _08118B48 + cmp r0, 0x1 + bgt _08118B3A + cmp r0, 0 + beq _08118B42 + bl _081198DC +_08118B3A: + cmp r0, 0x2 + beq _08118B6C + bl _081198DC +_08118B42: + movs r0, 0x1A + bl _081198DA +_08118B48: + movs r1, 0x2 + ldrsh r0, [r7, r1] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r0, r1, 0 + adds r0, 0x10 + ldr r2, _08118B68 @ =gUnknown_203B058 + ldrb r2, [r2] + bl sub_80FC114 + strh r5, [r6, 0x12] + movs r0, 0x19 + bl _081198DA + .align 2, 0 +_08118B68: .4byte gUnknown_203B058 +_08118B6C: + ldr r1, _08118B78 @ =gUnknown_2021D18 + movs r0, 0x13 + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118B78: .4byte gUnknown_2021D18 +_08118B7C: + bl sub_811A0E0 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + blt _08118BC2 + cmp r4, 0x2 + ble _08118B9E + cmp r4, 0x4 + bne _08118BC2 + movs r0, 0x1 + bl sub_811B258 + strb r4, [r6, 0x14] + b _08118BC2 +_08118B9E: + bl sub_80FBB0C + cmp r0, 0x1 + bne _08118BB4 + ldr r0, _08118BB0 @ =gUnknown_8457F90 + bl sub_811868C + b _08118BBC + .align 2, 0 +_08118BB0: .4byte gUnknown_8457F90 +_08118BB4: + ldr r1, _08118BE4 @ =gUnknown_8457F90 + movs r0, 0x1E + bl sub_8118664 +_08118BBC: + ldr r1, _08118BE8 @ =gUnknown_203B058 + movs r0, 0x40 + strb r0, [r1] +_08118BC2: + ldr r0, _08118BEC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08118BCE + bl _081198DC +_08118BCE: + ldr r0, _08118BF0 @ =gUnknown_2022618 + movs r1, 0x1 + bl sub_8117594 + ldr r0, _08118BF4 @ =sub_8117280 + movs r1, 0x5 + bl sub_807741C + movs r0, 0x26 + bl _081198DA + .align 2, 0 +_08118BE4: .4byte gUnknown_8457F90 +_08118BE8: .4byte gUnknown_203B058 +_08118BEC: .4byte gUnknown_3003F64 +_08118BF0: .4byte gUnknown_2022618 +_08118BF4: .4byte sub_8117280 +_08118BF8: + ldr r0, _08118C1C @ =sub_8117280 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08118C08 + bl _081198DC +_08118C08: + ldr r0, _08118C20 @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x44 + bne _08118C28 + ldr r1, _08118C24 @ =gUnknown_84578BC + movs r0, 0x1F + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118C1C: .4byte sub_8117280 +_08118C20: .4byte gUnknown_203B058 +_08118C24: .4byte gUnknown_84578BC +_08118C28: + movs r0, 0x5 + bl _081198DA +_08118C2E: + ldr r0, _08118C54 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08118C3A + bl _081198DC +_08118C3A: + movs r0, 0 + bl sub_811B258 + movs r2, 0 + ldrsh r0, [r7, r2] + movs r3, 0x2 + ldrsh r1, [r7, r3] + ldr r2, [r6] + bl sub_811C028 + movs r0, 0x2 + bl _081198DA + .align 2, 0 +_08118C54: .4byte gUnknown_3003F64 +_08118C58: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1B + adds r2, r6, 0 + adds r2, 0x1C + ldr r3, _08118C8C @ =gUnknown_8456DF4 + ldr r4, _08118C90 @ =gUnknown_8456E1C + str r4, [sp] + bl sub_811A218 + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _08118C7C + bl _081198DC +_08118C7C: + ldr r0, _08118C94 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08118C98 + movs r0, 0x1C + bl _081198DA + .align 2, 0 +_08118C8C: .4byte gUnknown_8456DF4 +_08118C90: .4byte gUnknown_8456E1C +_08118C94: .4byte gUnknown_3003F64 +_08118C98: + adds r1, r6, 0 + adds r1, 0x84 + movs r0, 0 + strh r0, [r1] + movs r2, 0x2 + ldrsh r0, [r7, r2] + ldr r1, [r6] + bl sub_811ADC4 + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _08118CB6 + cmp r5, 0x40 + bne _08118CE8 +_08118CB6: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x40 + strh r1, [r0] + bl sub_80F9E2C + ldr r0, _08118CDC @ =gUnknown_2021D18 + ldr r2, _08118CE0 @ =gUnknown_845842C + ldr r1, _08118CE4 @ =gUnknown_202273C + ldrb r1, [r1, 0x13] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + movs r0, 0x20 + bl _081198DA + .align 2, 0 +_08118CDC: .4byte gUnknown_2021D18 +_08118CE0: .4byte gUnknown_845842C +_08118CE4: .4byte gUnknown_202273C +_08118CE8: + ldr r0, _08118D10 @ =gUnknown_203B058 + strb r5, [r0] + ldr r1, _08118D14 @ =gUnknown_203B059 + lsrs r0, r5, 8 + strb r0, [r1] + lsls r0, r5, 24 + lsrs r0, 24 + cmp r0, 0x41 + bne _08118D1C + bl sub_811B0F0 + cmp r0, 0 + bne _08118D1C + ldr r1, _08118D18 @ =gUnknown_845847C + movs r0, 0x5 + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118D10: .4byte gUnknown_203B058 +_08118D14: .4byte gUnknown_203B059 +_08118D18: .4byte gUnknown_845847C +_08118D1C: + ldr r0, _08118D34 @ =gUnknown_203B058 + ldrb r0, [r0] + movs r1, 0x40 + orrs r1, r0 + adds r0, r6, 0 + adds r0, 0x4C + strh r1, [r0] + bl sub_80F9E2C + movs r0, 0x1B + bl _081198DA + .align 2, 0 +_08118D34: .4byte gUnknown_203B058 +_08118D38: + ldr r0, _08118D48 @ =gUnknown_2021D18 + ldr r1, _08118D4C @ =gUnknown_8458434 + bl sub_8008D84 + movs r0, 0x24 + bl _081198DA + .align 2, 0 +_08118D48: .4byte gUnknown_2021D18 +_08118D4C: .4byte gUnknown_8458434 +_08118D50: + adds r0, r6, 0 + bl sub_811B0A4 + movs r3, 0x2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + adds r0, r6, 0 + adds r0, 0x4C + ldrh r1, [r0] + movs r0, 0x3F + ands r0, r1 + bl sub_811A9FC + adds r5, r0, 0 + adds r0, r6, 0 + adds r0, 0x16 + ldr r3, _08118D9C @ =gUnknown_84580F4 + lsls r1, r5, 2 + lsls r2, r4, 4 + adds r1, r2 + adds r1, r3 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08118D90 + bl _081198DC +_08118D90: + movs r0, 0 + strh r0, [r7, 0x6] + movs r0, 0x1D + bl _081198DA + .align 2, 0 +_08118D9C: .4byte gUnknown_84580F4 +_08118DA0: + bl sub_800AAC0 + movs r0, 0x24 + bl _081198DA +_08118DAA: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x44 + strh r1, [r0] + ldr r2, _08118DD0 @ =gUnknown_203B06C + ldrh r1, [r2, 0xE] + adds r3, r6, 0 + adds r3, 0x4E + strh r1, [r3] + ldrh r2, [r2, 0x10] + adds r1, r6, 0 + adds r1, 0x50 + strh r2, [r1] + bl sub_80F9E2C + movs r0, 0x1D + bl _081198DA + .align 2, 0 +_08118DD0: .4byte gUnknown_203B06C +_08118DD4: + ldr r0, _08118DEC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08118DF8 + ldr r0, _08118DF0 @ =gUnknown_2021D18 + ldr r1, _08118DF4 @ =gUnknown_8458434 + bl sub_8008D84 + movs r0, 0x1C + bl _081198DA + .align 2, 0 +_08118DEC: .4byte gUnknown_3003F64 +_08118DF0: .4byte gUnknown_2021D18 +_08118DF4: .4byte gUnknown_8458434 +_08118DF8: + adds r0, r6, 0 + bl sub_811B0A4 + adds r0, r6, 0 + adds r0, 0x84 + ldrh r0, [r0] + cmp r0, 0x51 + bne _08118E2E + ldr r0, _08118E20 @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x8 + bne _08118E28 + ldr r0, _08118E24 @ =gUnknown_2021D18 + adds r1, r6, 0 + movs r2, 0 + bl sub_811B31C + movs r0, 0x28 + bl _081198DA + .align 2, 0 +_08118E20: .4byte gUnknown_203B058 +_08118E24: .4byte gUnknown_2021D18 +_08118E28: + movs r0, 0xD + bl _081198DA +_08118E2E: + cmp r0, 0x52 + beq _08118E36 + bl _081198DC +_08118E36: + movs r5, 0 + movs r0, 0x20 + strb r0, [r6, 0x14] + ldr r0, _08118E54 @ =gUnknown_2021D18 + ldr r4, _08118E58 @ =gUnknown_203B058 + ldrb r2, [r4] + movs r1, 0x40 + orrs r1, r2 + ldr r2, _08118E5C @ =gUnknown_202273C + ldrb r2, [r2, 0x13] + bl sub_811AE68 + strb r5, [r4] + bl _081198DC + .align 2, 0 +_08118E54: .4byte gUnknown_2021D18 +_08118E58: .4byte gUnknown_203B058 +_08118E5C: .4byte gUnknown_202273C +_08118E60: + movs r0, 0x2 + ldrsh r1, [r7, r0] + lsls r1, 5 + ldr r0, [r6] + adds r0, r1 + bl sub_811AA24 + adds r5, r0, 0 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + ldr r2, _08118E94 @ =gUnknown_8457B04 + lsls r0, r4, 2 + lsls r1, r5, 3 + adds r0, r1 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x6 + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118E94: .4byte gUnknown_8457B04 +_08118E98: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08118EC4 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08118EAC + bl _081198DC +_08118EAC: + movs r4, 0 + movs r0, 0x29 + strb r0, [r6, 0x14] + bl sub_800AB9C + adds r0, r6, 0 + adds r0, 0x84 + strh r4, [r0] + adds r0, 0x2 + strh r4, [r0] + bl _081198DC + .align 2, 0 +_08118EC4: .4byte gUnknown_2021D18 +_08118EC8: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08118ED6 + bl _081198DC +_08118ED6: + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + bne _08118F30 + ldr r5, _08118F20 @ =gUnknown_2021CD0 + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + ldr r4, _08118F24 @ =gUnknown_2022744 + adds r1, r4 + adds r0, r5, 0 + bl sub_8008D84 + ldrh r0, [r4, 0x18] + adds r4, 0x1C + adds r1, r4, 0 + bl sub_80FD338 + adds r5, r0, 0 + ldr r0, _08118F28 @ =gUnknown_2021D18 + ldr r2, _08118F2C @ =gUnknown_8457C20 + lsls r1, r5, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008FCC + movs r0, 0x21 + bl _081198DA + .align 2, 0 +_08118F20: .4byte gUnknown_2021CD0 +_08118F24: .4byte gUnknown_2022744 +_08118F28: .4byte gUnknown_2021D18 +_08118F2C: .4byte gUnknown_8457C20 +_08118F30: + movs r0, 0x7 + bl _081198DA +_08118F36: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r5, r0, 24 + cmp r5, 0 + beq _08118F60 + cmp r5, 0 + bgt _08118F58 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _08118F9C + bl _081198DC +_08118F58: + cmp r5, 0x1 + beq _08118F9C + bl _081198DC +_08118F60: + movs r0, 0 + bl sub_80020BC + ldr r4, _08118F98 @ =gUnknown_203B058 + movs r0, 0x45 + strb r0, [r4] + movs r0, 0x45 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r0, r1, 0 + adds r0, 0x10 + ldrb r2, [r4] + bl sub_80FC114 + ldrh r0, [r7, 0x2] + strh r0, [r6, 0x12] + movs r0, 0x14 + strb r0, [r6, 0x14] + strh r5, [r7, 0x6] + bl _081198DC + .align 2, 0 +_08118F98: .4byte gUnknown_203B058 +_08118F9C: + movs r3, 0x2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + ldr r1, _08118FB8 @ =gUnknown_8458548 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_811868C + bl _081198DC + .align 2, 0 +_08118FB8: .4byte gUnknown_8458548 +_08118FBC: + ldrh r0, [r7, 0x4] + adds r0, 0x1 + strh r0, [r7, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + bgt _08118FCE + bl _081198DC +_08118FCE: + movs r1, 0 + movs r0, 0x15 + strb r0, [r6, 0x14] + strh r1, [r7, 0x4] + bl _081198DC +_08118FDA: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + beq _08119040 + cmp r4, 0x3 + ble _08118FF8 + cmp r4, 0x4 + bne _08119044 + movs r0, 0x1 + bl sub_811B258 + strb r4, [r6, 0x14] + b _08119044 +_08118FF8: + cmp r4, 0x1 + blt _08119044 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + bl sub_80FBB0C + cmp r0, 0x1 + bne _0811902C + ldr r0, _08119028 @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_811868C + b _08119044 + .align 2, 0 +_08119028: .4byte gUnknown_84585E8 +_0811902C: + ldr r0, _0811903C @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x1E + bl sub_8118664 + b _08119044 + .align 2, 0 +_0811903C: .4byte gUnknown_84585E8 +_08119040: + movs r0, 0x16 + strb r0, [r6, 0x14] +_08119044: + ldrh r0, [r7, 0x6] + adds r0, 0x1 + strh r0, [r7, 0x6] + bl _081198DC +_0811904E: + bl sub_80FBA00 + cmp r0, 0 + beq _08119096 + movs r2, 0x2 + ldrsh r0, [r7, r2] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + bl sub_80FBB0C + cmp r0, 0x1 + bne _08119088 + ldr r0, _08119084 @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_811868C + b _08119096 + .align 2, 0 +_08119084: .4byte gUnknown_84585E8 +_08119088: + ldr r0, _081190A8 @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x1E + bl sub_8118664 +_08119096: + ldr r0, _081190AC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _081190A2 + bl _081198DC +_081190A2: + movs r0, 0x10 + bl _081198DA + .align 2, 0 +_081190A8: .4byte gUnknown_84585E8 +_081190AC: .4byte gUnknown_3003F64 +_081190B0: + movs r0, 0x42 + bl sub_80722CC + bl sub_80F8FA0 + movs r0, 0 + movs r1, 0xC + strb r1, [r6, 0x14] + adds r1, r6, 0 + adds r1, 0x86 + strh r0, [r1] + bl _081198DC +_081190CA: + bl sub_80FBA00 + cmp r0, 0 + beq _081190DE + movs r0, 0 + bl sub_811B258 + movs r0, 0x2 + bl _081198DA +_081190DE: + ldr r0, _08119100 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _081190EA + bl _081198DC +_081190EA: + ldr r0, _08119104 @ =gUnknown_2022618 + movs r1, 0x1 + bl sub_8117594 + ldr r0, _08119108 @ =sub_8117280 + movs r1, 0x5 + bl sub_807741C + movs r0, 0x27 + bl _081198DA + .align 2, 0 +_08119100: .4byte gUnknown_3003F64 +_08119104: .4byte gUnknown_2022618 +_08119108: .4byte sub_8117280 +_0811910C: + adds r0, r6, 0 + bl sub_8119904 + ldr r0, _08119150 @ =sub_8117280 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08119122 + bl _081198DC +_08119122: + movs r0, 0x21 + strb r0, [r6, 0x14] + ldr r0, _08119154 @ =gUnknown_2021CD0 + ldr r4, _08119158 @ =gUnknown_2022760 + adds r1, r4, 0 + bl sub_8008D84 + adds r0, r4, 0 + subs r0, 0x24 + ldrh r0, [r0, 0x20] + adds r1, r4, 0 + bl sub_80FD338 + adds r5, r0, 0 + ldr r0, _0811915C @ =gUnknown_2021D18 + ldr r2, _08119160 @ =gUnknown_8457BCC + lsls r1, r5, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008FCC + b _081198DC + .align 2, 0 +_08119150: .4byte sub_8117280 +_08119154: .4byte gUnknown_2021CD0 +_08119158: .4byte gUnknown_2022760 +_0811915C: .4byte gUnknown_2021D18 +_08119160: .4byte gUnknown_8457BCC +_08119164: + adds r0, r6, 0 + bl sub_8119904 + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119180 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811917C + b _081198DC +_0811917C: + movs r0, 0x22 + b _081198DA + .align 2, 0 +_08119180: .4byte gUnknown_2021D18 +_08119184: + adds r0, r6, 0 + bl sub_8119904 + adds r0, r6, 0 + bl sub_8119944 + cmp r0, 0 + bne _08119196 + b _081198DC +_08119196: + ldr r0, _081191B8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081191A4 + b _081198DC +_081191A4: + movs r0, 0x1 + bl sub_80FBD6C + ldr r0, _081191BC @ =gUnknown_2021D18 + ldr r1, _081191C0 @ =gUnknown_8457E60 + bl sub_8008D84 + movs r0, 0x24 + b _081198DA + .align 2, 0 +_081191B8: .4byte gUnknown_30030F0 +_081191BC: .4byte gUnknown_2021D18 +_081191C0: .4byte gUnknown_8457E60 +_081191C4: + ldr r1, _081191D0 @ =gUnknown_2021D18 + movs r0, 0x9 + bl sub_8118664 + b _081198DC + .align 2, 0 +_081191D0: .4byte gUnknown_2021D18 +_081191D4: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _081191FA + cmp r1, 0 + bgt _081191F4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081192BA + b _081198DC +_081191F4: + cmp r1, 0x1 + beq _081192BA + b _081198DC +_081191FA: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x51 + strh r1, [r0] + ldr r1, _08119228 @ =gUnknown_203B058 + ldrb r1, [r1] + adds r5, r0, 0 + cmp r1, 0x45 + bne _0811922C + movs r4, 0x40 + orrs r4, r1 + movs r0, 0x1 + bl sub_811B2A8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + movs r2, 0 + bl sub_80FB008 + b _0811924A + .align 2, 0 +_08119228: .4byte gUnknown_203B058 +_0811922C: + movs r0, 0x40 + adds r4, r1, 0 + orrs r4, r0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_811B2A8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_80FB008 +_0811924A: + ldr r1, [r6, 0x8] + movs r0, 0 + strb r0, [r1, 0x1B] + strh r0, [r7, 0x6] + ldr r0, _0811927C @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x41 + bne _08119292 + bl sub_811B0F0 + cmp r0, 0 + bne _08119288 + movs r0, 0x52 + strh r0, [r5] + adds r0, r5, 0 + bl sub_80F9E2C + movs r0, 0xA + strb r0, [r6, 0x14] + ldr r0, _08119280 @ =gUnknown_2021D18 + ldr r1, _08119284 @ =gUnknown_84584C0 + bl sub_8008D84 + b _081198DC + .align 2, 0 +_0811927C: .4byte gUnknown_203B058 +_08119280: .4byte gUnknown_2021D18 +_08119284: .4byte gUnknown_84584C0 +_08119288: + adds r0, r5, 0 + bl sub_80F9E2C + movs r0, 0xD + b _081198DA +_08119292: + cmp r0, 0x48 + bne _081192B0 + adds r0, r5, 0 + bl sub_80F9E2C + ldr r0, _081192AC @ =gUnknown_2021D18 + adds r1, r6, 0 + movs r2, 0x1 + bl sub_811B31C + movs r0, 0x28 + b _081198DA + .align 2, 0 +_081192AC: .4byte gUnknown_2021D18 +_081192B0: + adds r0, r5, 0 + bl sub_80F9E2C + movs r0, 0xD + b _081198DA +_081192BA: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x52 + strh r1, [r0] + bl sub_80F9E2C + movs r0, 0xA + strb r0, [r6, 0x14] + ldr r0, _081192D8 @ =gUnknown_2021D18 + ldr r1, _081192DC @ =gUnknown_203B058 + ldrb r1, [r1] + bl sub_81162E0 + b _081198DC + .align 2, 0 +_081192D8: .4byte gUnknown_2021D18 +_081192DC: .4byte gUnknown_203B058 +_081192E0: + bl sub_800AAC0 + movs r0, 0x24 + b _081198DA +_081192E8: + ldr r0, _08119318 @ =gUnknown_3003F64 + ldrb r4, [r0] + cmp r4, 0 + beq _081192F2 + b _081198DC +_081192F2: + ldr r1, _0811931C @ =gUnknown_203B058 + movs r0, 0x40 + strb r0, [r1] + ldr r1, _08119320 @ =gUnknown_2021D18 + movs r0, 0x25 + bl sub_8118664 + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0 + movs r2, 0xC + bl memset + adds r0, r6, 0 + adds r0, 0x86 + strh r4, [r0] + subs r0, 0x2 + strh r4, [r0] + b _081198DC + .align 2, 0 +_08119318: .4byte gUnknown_3003F64 +_0811931C: .4byte gUnknown_203B058 +_08119320: .4byte gUnknown_2021D18 +_08119324: + movs r0, 0x2 + strb r0, [r6, 0x14] + movs r0, 0 + bl sub_811B258 + b _081198DC +_08119330: + ldr r4, _0811934C @ =gUnknown_2021D18 + ldr r0, _08119350 @ =gUnknown_203B058 + ldrb r0, [r0] + movs r1, 0x40 + orrs r1, r0 + adds r0, r4, 0 + bl sub_811AECC + movs r0, 0xE + adds r1, r4, 0 + bl sub_8118664 + b _081198DC + .align 2, 0 +_0811934C: .4byte gUnknown_2021D18 +_08119350: .4byte gUnknown_203B058 +_08119354: + bl sub_800AB9C + movs r0, 0xF + b _081198DA +_0811935C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _08119368 + b _081198DC +_08119368: + movs r0, 0x10 + b _081198DA +_0811936C: + ldr r0, [r6, 0x8] + bl sub_8002BC4 + ldr r0, [r6] + bl sub_8002BC4 + ldr r0, [r6, 0xC] + bl sub_8002BC4 + ldr r0, [r6, 0x4] + bl sub_8002BC4 + adds r0, r6, 0 + adds r0, 0x20 + ldrb r0, [r0] + bl sub_8077508 + adds r0, r6, 0 + adds r0, 0x21 + bl sub_811BB40 + movs r0, 0x11 + b _081198DA +_0811939A: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + movs r0, 0x12 + b _081198DA +_081193AE: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _081193BA + b _081198DC +_081193BA: + bl sub_811BA78 + adds r0, r4, 0 + bl sub_8077508 + ldr r0, _081193D4 @ =gUnknown_203B05C + ldr r0, [r0] + bl sub_8002BC4 + bl sub_81179A4 + b _081198DC + .align 2, 0 +_081193D4: .4byte gUnknown_203B05C +_081193D8: + bl sub_80F9800 + ldrh r1, [r0, 0x8] + ldr r4, _081193EC @ =0x000003ff + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _081193F0 + movs r0, 0x2B + b _081198DA + .align 2, 0 +_081193EC: .4byte 0x000003ff +_081193F0: + bl sub_80F9800 + ldrh r1, [r0, 0x8] + adds r0, r4, 0 + ands r0, r1 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _08119414 + ldr r0, _0811940C @ =gUnknown_2021D18 + ldr r1, _08119410 @ =gUnknown_8458DE8 + bl sub_8008D84 + b _0811944A + .align 2, 0 +_0811940C: .4byte gUnknown_2021D18 +_08119410: .4byte gUnknown_8458DE8 +_08119414: + ldr r4, _08119454 @ =gUnknown_2021CD0 + bl sub_80F9800 + ldrh r0, [r0, 0x8] + lsls r0, 22 + lsrs r0, 22 + movs r1, 0xB + muls r1, r0 + ldr r0, _08119458 @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r4, _0811945C @ =gUnknown_2021CF0 + bl sub_80F9800 + ldrb r1, [r0, 0xB] + lsrs r1, 1 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, _08119460 @ =gUnknown_2021D18 + ldr r1, _08119464 @ =gUnknown_8458DBC + bl sub_8008FCC +_0811944A: + ldr r1, _08119460 @ =gUnknown_2021D18 + movs r0, 0x2C + bl sub_8118664 + b _081198DC + .align 2, 0 +_08119454: .4byte gUnknown_2021CD0 +_08119458: .4byte gUnknown_8245EE0 +_0811945C: .4byte gUnknown_2021CF0 +_08119460: .4byte gUnknown_2021D18 +_08119464: .4byte gUnknown_8458DBC +_08119468: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119480 @ =gUnknown_8458AB8 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811947A + b _081198DC +_0811947A: + movs r0, 0x2F + b _081198DA + .align 2, 0 +_08119480: .4byte gUnknown_8458AB8 +_08119484: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1D + adds r2, r6, 0 + adds r2, 0x1E + ldr r3, _081194BC @ =gUnknown_8456E34 + ldr r4, _081194C0 @ =gUnknown_8456E54 + str r4, [sp] + bl sub_811A218 + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _081194A6 + b _081198DC +_081194A6: + subs r0, 0x1 + cmp r5, r0 + beq _081194B0 + cmp r5, 0x3 + bne _081194C4 +_081194B0: + movs r0, 0x4 + strb r0, [r6, 0x14] + movs r0, 0x1 + bl sub_811B258 + b _081194E4 + .align 2, 0 +_081194BC: .4byte gUnknown_8456E34 +_081194C0: .4byte gUnknown_8456E54 +_081194C4: + cmp r5, 0x1 + beq _081194CE + cmp r5, 0x2 + beq _081194DC + b _081194E4 +_081194CE: + ldr r1, _081194D8 @ =gUnknown_8458D1C + movs r0, 0x35 + bl sub_8118664 + b _081194E4 + .align 2, 0 +_081194D8: .4byte gUnknown_8458D1C +_081194DC: + ldr r1, _081194EC @ =gUnknown_8458B44 + movs r0, 0x2F + bl sub_8118664 +_081194E4: + bl sub_80F7998 + b _081198DC + .align 2, 0 +_081194EC: .4byte gUnknown_8458B44 +_081194F0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + movs r0, 0x36 + b _081198DA +_08119504: + ldr r0, _08119528 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08119512 + b _081198DC +_08119512: + ldr r1, _0811952C @ =gUnknown_203B06C + movs r0, 0x1 + strh r0, [r1] + ldr r1, _08119530 @ =gUnknown_3005020 + ldr r0, _08119534 @ =sub_807DCE4 + str r0, [r1] + ldr r1, _08119538 @ =sub_80567DC + movs r0, 0x8 + bl sub_81277F4 + b _081198DC + .align 2, 0 +_08119528: .4byte gUnknown_2037AB8 +_0811952C: .4byte gUnknown_203B06C +_08119530: .4byte gUnknown_3005020 +_08119534: .4byte sub_807DCE4 +_08119538: .4byte sub_80567DC +_0811953C: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1D + adds r2, r6, 0 + adds r2, 0x1E + ldr r3, _08119580 @ =gUnknown_8456E6C + ldr r4, _08119584 @ =gUnknown_8456F04 + str r4, [sp] + bl sub_811A218 + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _0811955E + b _081198DC +_0811955E: + subs r0, 0x1 + cmp r5, r0 + beq _08119568 + cmp r5, 0x12 + bne _08119590 +_08119568: + ldr r0, _08119588 @ =gUnknown_203B06C + bl sub_811B148 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + ldr r0, _0811958C @ =gUnknown_8458D54 + bl sub_811868C + b _081198DC + .align 2, 0 +_08119580: .4byte gUnknown_8456E6C +_08119584: .4byte gUnknown_8456F04 +_08119588: .4byte gUnknown_203B06C +_0811958C: .4byte gUnknown_8458D54 +_08119590: + ldr r0, _08119598 @ =gUnknown_203B06C + strh r5, [r0, 0x2] + movs r0, 0x37 + b _081198DA + .align 2, 0 +_08119598: .4byte gUnknown_203B06C +_0811959C: + ldr r2, _081195B0 @ =gUnknown_203B06C + ldrh r0, [r2, 0x2] + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0xC] + bl sub_80FAFA0 + ldr r0, _081195B4 @ =gUnknown_8458D78 + bl sub_811868C + b _081198DC + .align 2, 0 +_081195B0: .4byte gUnknown_203B06C +_081195B4: .4byte gUnknown_8458D78 +_081195B8: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _081195DE + cmp r1, 0 + bgt _081195D8 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081195E2 + b _081198DC +_081195D8: + cmp r1, 0x1 + beq _081195E2 + b _081198DC +_081195DE: + movs r0, 0x38 + b _081198DA +_081195E2: + movs r0, 0x1 + bl sub_811B258 + movs r0, 0x4 + b _081198DA +_081195EC: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119618 @ =gUnknown_8458E10 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081195FE + b _081198DC +_081195FE: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + ldr r0, _0811961C @ =gUnknown_203B06C + bl sub_811B148 + movs r0, 0x1 + bl sub_811B258 + movs r0, 0x4 + b _081198DA + .align 2, 0 +_08119618: .4byte gUnknown_8458E10 +_0811961C: .4byte gUnknown_203B06C +_08119620: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119638 @ =gUnknown_8458A98 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08119632 + b _081198DC +_08119632: + movs r0, 0x2E + b _081198DA + .align 2, 0 +_08119638: .4byte gUnknown_8458A98 +_0811963C: + bl sub_811A3F8 + movs r0, 0x30 + b _081198DA +_08119644: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1D + adds r2, r6, 0 + adds r2, 0x4A + adds r3, r6, 0 + adds r3, 0x1E + ldr r4, _08119688 @ =gUnknown_8456F24 + str r4, [sp] + ldr r4, _0811968C @ =gUnknown_8456F7C + str r4, [sp, 0x4] + ldr r4, [r6] + str r4, [sp, 0x8] + bl sub_811A2EC + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _08119670 + b _081198DC +_08119670: + subs r0, 0x1 + cmp r5, r0 + beq _0811967A + cmp r5, 0x8 + bne _08119690 +_0811967A: + movs r0, 0x1 + bl sub_811B258 + bl sub_80F7998 + movs r0, 0x4 + b _081198DA + .align 2, 0 +_08119688: .4byte gUnknown_8456F24 +_0811968C: .4byte gUnknown_8456F7C +_08119690: + ldr r1, [r6] + lsls r3, r5, 5 + mov r8, r3 + add r1, r8 + ldrb r0, [r1, 0x9] + lsrs r0, 2 + ldrh r1, [r1, 0x8] + lsls r1, 22 + lsrs r1, 22 + bl sub_811ADD0 + cmp r0, 0x1 + beq _081196EC + cmp r0, 0x1 + bgt _081196B4 + cmp r0, 0 + beq _081196BA + b _081198DC +_081196B4: + cmp r0, 0x2 + beq _08119734 + b _081198DC +_081196BA: + ldr r4, _081196E4 @ =gUnknown_2021CD0 + ldr r1, [r6] + add r1, r8 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, [r6] + add r0, r8 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r1, _081196E8 @ =gUnknown_8458E70 + movs r0, 0x31 + bl sub_8118664 + strh r5, [r7, 0x2] + b _081198DC + .align 2, 0 +_081196E4: .4byte gUnknown_2021CD0 +_081196E8: .4byte gUnknown_8458E70 +_081196EC: + ldr r4, _08119724 @ =gUnknown_2021CD0 + ldr r1, [r6] + add r1, r8 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, [r6] + add r0, r8 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, _08119728 @ =gUnknown_2021CF0 + ldr r1, [r6] + add r1, r8 + ldrb r2, [r1, 0x9] + lsrs r2, 2 + lsls r1, r2, 3 + subs r1, r2 + ldr r2, _0811972C @ =gUnknown_824F1A0 + adds r1, r2 + bl sub_8008D84 + ldr r1, _08119730 @ =gUnknown_8458ED0 + b _0811976A + .align 2, 0 +_08119724: .4byte gUnknown_2021CD0 +_08119728: .4byte gUnknown_2021CF0 +_0811972C: .4byte gUnknown_824F1A0 +_08119730: .4byte gUnknown_8458ED0 +_08119734: + ldr r4, _08119774 @ =gUnknown_2021CD0 + ldr r1, [r6] + add r1, r8 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, [r6] + add r0, r8 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, _08119778 @ =gUnknown_2021CF0 + ldr r1, [r6] + add r1, r8 + ldrb r2, [r1, 0x9] + lsrs r2, 2 + lsls r1, r2, 3 + subs r1, r2 + ldr r2, _0811977C @ =gUnknown_824F1A0 + adds r1, r2 + bl sub_8008D84 + ldr r1, _08119780 @ =gUnknown_8458F04 +_0811976A: + movs r0, 0x2E + bl sub_8118664 + b _081198DC + .align 2, 0 +_08119774: .4byte gUnknown_2021CD0 +_08119778: .4byte gUnknown_2021CF0 +_0811977C: .4byte gUnknown_824F1A0 +_08119780: .4byte gUnknown_8458F04 +_08119784: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _081197AA + cmp r1, 0 + bgt _081197A4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081197AE + b _081198DC +_081197A4: + cmp r1, 0x1 + beq _081197AE + b _081198DC +_081197AA: + movs r0, 0x32 + b _081198DA +_081197AE: + movs r0, 0x1 + bl sub_811B258 + movs r0, 0x4 + b _081198DA +_081197B8: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119820 @ =gUnknown_8458D1C + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081197CA + b _081198DC +_081197CA: + ldr r4, _08119824 @ =gUnknown_203B06C + movs r0, 0x2 + strh r0, [r4] + ldr r2, _08119828 @ =gUnknown_203B064 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + lsls r0, 5 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r2, _0811982C @ =gUnknown_203B06A + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r7, r3] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0x9] + lsrs r0, 2 + strb r0, [r2] + ldr r2, _08119830 @ =gUnknown_203B068 + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r7, r3] + lsls r0, 5 + adds r1, r0 + ldrh r0, [r1, 0x8] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r2] + ldr r1, _08119834 @ =gUnknown_3005020 + ldr r0, _08119838 @ =sub_807DCE4 + str r0, [r1] + ldr r1, _0811983C @ =sub_80567DC + movs r0, 0x9 + bl sub_81277F4 + adds r0, r6, 0 + bl sub_81186B0 + ldrh r0, [r7, 0x2] + strb r0, [r4, 0x8] + b _081198DC + .align 2, 0 +_08119820: .4byte gUnknown_8458D1C +_08119824: .4byte gUnknown_203B06C +_08119828: .4byte gUnknown_203B064 +_0811982C: .4byte gUnknown_203B06A +_08119830: .4byte gUnknown_203B068 +_08119834: .4byte gUnknown_3005020 +_08119838: .4byte sub_807DCE4 +_0811983C: .4byte sub_80567DC +_08119840: + ldr r1, _08119890 @ =gUnknown_203B058 + movs r0, 0x44 + strb r0, [r1] + movs r1, 0x2 + ldrsh r0, [r7, r1] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r0, r1, 0 + adds r0, 0x10 + movs r2, 0x44 + bl sub_80FC114 + ldr r4, _08119894 @ =gUnknown_2021CD0 + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r7, r3] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, _08119898 @ =gUnknown_8457A34 + ldr r0, [r0, 0x8] + bl sub_811A0B4 + movs r0, 0x19 + b _081198DA + .align 2, 0 +_08119890: .4byte gUnknown_203B058 +_08119894: .4byte gUnknown_2021CD0 +_08119898: .4byte gUnknown_8457A34 +_0811989C: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _081198C4 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _081198DC + movs r0, 0x1 + bl sub_811B258 + movs r1, 0 + ldrsh r0, [r7, r1] + movs r2, 0x2 + ldrsh r1, [r7, r2] + ldr r2, [r6] + bl sub_811C028 + movs r0, 0x4 + b _081198DA + .align 2, 0 +_081198C4: .4byte gUnknown_2021D18 +_081198C8: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _081198E8 @ =gUnknown_2021D18 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _081198DC + ldrb r0, [r6, 0x15] +_081198DA: + strb r0, [r6, 0x14] +_081198DC: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081198E8: .4byte gUnknown_2021D18 + thumb_func_end sub_81186E0 + + thumb_func_start sub_81198EC +sub_81198EC: @ 81198EC + push {lr} + bl sub_811B0D0 + cmp r0, 0x1 + bne _081198FC + ldr r1, _08119900 @ =gUnknown_20370D0 + movs r0, 0xB + strh r0, [r1] +_081198FC: + pop {r0} + bx r0 + .align 2, 0 +_08119900: .4byte gUnknown_20370D0 + thumb_func_end sub_81198EC + + thumb_func_start sub_8119904 +sub_8119904: @ 8119904 + push {r4,r5,lr} + adds r2, r0, 0 + ldr r3, _08119940 @ =gUnknown_3003ED0 + ldrh r5, [r3, 0x12] + adds r4, r5, 0 + cmp r4, 0 + beq _08119938 + ldrh r0, [r3, 0x10] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _08119938 + adds r0, r2, 0 + adds r0, 0x86 + strh r5, [r0] + cmp r4, 0x44 + bne _08119938 + ldrh r1, [r3, 0x14] + adds r0, 0x2 + strh r1, [r0] + ldrh r1, [r3, 0x16] + adds r0, 0x2 + strh r1, [r0] +_08119938: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08119940: .4byte gUnknown_3003ED0 + thumb_func_end sub_8119904 + + thumb_func_start sub_8119944 +sub_8119944: @ 8119944 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x86 + ldrh r0, [r5] + cmp r0, 0 + beq _08119994 + ldr r0, _08119978 @ =gUnknown_2021D18 + ldr r1, _0811997C @ =gUnknown_202273C + adds r1, 0x2F + ldrb r1, [r1] + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_811AF6C + cmp r0, 0 + beq _08119994 + cmp r0, 0x1 + bne _08119984 + movs r0, 0x23 + strb r0, [r4, 0x14] + ldr r1, _08119980 @ =gUnknown_203B058 + ldrh r0, [r5] + strb r0, [r1] + movs r0, 0 + b _08119996 + .align 2, 0 +_08119978: .4byte gUnknown_2021D18 +_0811997C: .4byte gUnknown_202273C +_08119980: .4byte gUnknown_203B058 +_08119984: + cmp r0, 0x2 + bne _08119994 + movs r0, 0x24 + strb r0, [r4, 0x14] + bl sub_800AAC0 + movs r0, 0 + b _08119996 +_08119994: + movs r0, 0x1 +_08119996: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8119944 + + thumb_func_start sub_811999C +sub_811999C: @ 811999C + push {r4-r6,lr} + ldr r5, _081199E8 @ =gUnknown_203B04C + movs r0, 0x1 + negs r0, r0 + adds r6, r0, 0 + movs r0, 0xFF + strb r0, [r5] + ldr r0, _081199EC @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _081199E0 + ldr r0, _081199F0 @ =sub_81199FC + movs r1, 0 + bl sub_807741C + ldr r4, _081199F4 @ =gUnknown_203B05C + movs r0, 0x96 + lsls r0, 2 + bl sub_8002BB0 + str r0, [r4] + ldr r1, _081199F8 @ =gUnknown_300202C + str r0, [r1] + movs r1, 0 + strb r1, [r0, 0x14] + strb r1, [r0, 0x16] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + ldrb r0, [r5] + orrs r0, r6 + strb r0, [r5] +_081199E0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081199E8: .4byte gUnknown_203B04C +_081199EC: .4byte gUnknown_203ADFA +_081199F0: .4byte sub_81199FC +_081199F4: .4byte gUnknown_203B05C +_081199F8: .4byte gUnknown_300202C + thumb_func_end sub_811999C + + thumb_func_start sub_81199FC +sub_81199FC: @ 81199FC + push {r4-r6,lr} + sub sp, 0x20 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08119A1C @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0x14] + cmp r0, 0x4 + bls _08119A10 + b _08119B5C +_08119A10: + lsls r0, 2 + ldr r1, _08119A20 @ =_08119A24 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08119A1C: .4byte gUnknown_203B05C +_08119A20: .4byte _08119A24 + .align 2, 0 +_08119A24: + .4byte _08119A38 + .4byte _08119A3E + .4byte _08119A60 + .4byte _08119AB0 + .4byte _08119B28 +_08119A38: + movs r0, 0x1 + strb r0, [r5, 0x14] + b _08119B5C +_08119A3E: + movs r0, 0xC + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBC00 + movs r0, 0x1 + bl sub_80FB128 + movs r0, 0x2 + strb r0, [r5, 0x14] + b _08119B5C +_08119A60: + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + movs r0, 0x70 + bl sub_8002BB0 + str r0, [r5, 0xC] + movs r1, 0x4 + bl sub_811A650 + movs r0, 0x80 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r5] + movs r1, 0x8 + bl sub_811A5E4 + movs r0, 0x20 + bl sub_8002BB0 + str r0, [r5, 0x8] + movs r1, 0x1 + bl sub_811A5E4 + ldr r0, [r5, 0xC] + ldr r1, [r5, 0x4] + movs r2, 0xA + bl sub_8119E84 + adds r1, r5, 0 + adds r1, 0x20 + strb r0, [r1] + movs r0, 0x3 + strb r0, [r5, 0x14] + b _08119B5C +_08119AB0: + bl sub_8119B94 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + blt _08119B5C + cmp r0, 0x2 + bgt _08119B5C + ldr r0, _08119B14 @ =gUnknown_203B04C + ldrb r0, [r0] + cmp r0, 0xFF + bne _08119B5C + movs r6, 0 +_08119ACA: + ldr r0, [r5] + lsls r4, r6, 5 + adds r1, r0, r4 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08119B0A + adds r1, 0x10 + mov r0, sp + bl sub_8008D84 + ldr r0, [r5] + adds r0, r4 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + mov r0, sp + bl sub_80093BC + ldr r0, [r5] + adds r0, r4 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + bl sub_80FD338 + cmp r0, 0 + bne _08119B18 +_08119B0A: + adds r6, 0x1 + cmp r6, 0x7 + ble _08119ACA + b _08119B5C + .align 2, 0 +_08119B14: .4byte gUnknown_203B04C +_08119B18: + ldr r0, _08119B24 @ =gUnknown_203B04C + mov r1, sp + bl sub_8008D84 + b _08119B5C + .align 2, 0 +_08119B24: .4byte gUnknown_203B04C +_08119B28: + ldr r0, [r5, 0x8] + bl sub_8002BC4 + ldr r0, [r5] + bl sub_8002BC4 + ldr r0, [r5, 0xC] + bl sub_8002BC4 + ldr r0, [r5, 0x4] + bl sub_8002BC4 + adds r0, r5, 0 + adds r0, 0x20 + ldrb r0, [r0] + bl sub_8077508 + ldr r0, _08119B64 @ =gUnknown_203B05C + ldr r0, [r0] + bl sub_8002BC4 + bl sub_80F8DC0 + adds r0, r4, 0 + bl sub_8077508 +_08119B5C: + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08119B64: .4byte gUnknown_203B05C + thumb_func_end sub_81199FC + + thumb_func_start sub_8119B68 +sub_8119B68: @ 8119B68 + push {r4,lr} + ldr r4, _08119B78 @ =gUnknown_203B04C + ldrb r0, [r4] + cmp r0, 0xFF + bne _08119B7C + movs r0, 0 + b _08119B8A + .align 2, 0 +_08119B78: .4byte gUnknown_203B04C +_08119B7C: + ldr r0, _08119B90 @ =gUnknown_2021CD0 + adds r1, r4, 0 + bl sub_8008D84 + movs r0, 0xFF + strb r0, [r4] + movs r0, 0x1 +_08119B8A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08119B90: .4byte gUnknown_2021CD0 + thumb_func_end sub_8119B68 + + thumb_func_start sub_8119B94 +sub_8119B94: @ 8119B94 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08119BE8 @ =gUnknown_203B05C + ldr r4, [r0] + movs r7, 0 + movs r6, 0 + movs r5, 0 +_08119BA6: + ldr r0, [r4, 0xC] + adds r0, r5 + ldr r1, _08119BEC @ =gUnknown_8457034 + bl sub_811A694 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bne _08119BF0 + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x8] + adds r1, r5 + ldm r1!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldm r1!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldr r1, [r4, 0x8] + movs r0, 0 + strh r0, [r1, 0x18] + ldr r2, [r4, 0x8] + ldrb r1, [r2, 0x1A] + movs r5, 0x4 + negs r5, r5 + adds r0, r5, 0 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strb r1, [r2, 0x1A] + ldr r0, [r4, 0x8] + strb r3, [r0, 0x1B] + movs r0, 0x4 + b _08119D24 + .align 2, 0 +_08119BE8: .4byte gUnknown_203B05C +_08119BEC: .4byte gUnknown_8457034 +_08119BF0: + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08119BA6 + movs r6, 0 + mov r9, r6 +_08119BFC: + ldr r0, [r4] + mov r1, r9 + lsls r5, r1, 5 + adds r2, r0, r5 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + mov r8, r5 + cmp r0, 0 + beq _08119CF0 + ldr r1, [r4, 0x4] + adds r0, r2, 0 + bl sub_811A748 + adds r6, r0, 0 + cmp r6, 0xFF + beq _08119C96 + ldr r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2, 0x1A] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08119C74 + lsls r0, r6, 3 + subs r0, r6 + lsls r6, r0, 2 + ldr r1, [r4, 0x4] + adds r1, r6 + adds r0, r2, 0 + bl sub_811A6DC + cmp r0, 0 + beq _08119C5A + ldr r1, [r4] + ldr r0, [r4, 0x4] + adds r1, r5 + adds r0, r6 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r4] + adds r0, r5 + movs r1, 0x40 + strb r1, [r0, 0x1B] + movs r7, 0x1 + b _08119C8C +_08119C5A: + ldr r0, [r4] + adds r1, r0, r5 + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08119C8C + subs r0, 0x1 + strb r0, [r1, 0x1B] + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0, 0x1B] + cmp r0, 0 + bne _08119C8C + b _08119C8A +_08119C74: + movs r3, 0x4 + negs r3, r3 + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] + ldr r0, [r4] + adds r0, r5 + movs r1, 0 + strb r1, [r0, 0x1B] +_08119C8A: + movs r7, 0x2 +_08119C8C: + ldr r0, [r4] + add r0, r8 + movs r1, 0 + strh r1, [r0, 0x18] + b _08119CF0 +_08119C96: + ldr r0, [r4] + adds r1, r0, r5 + ldrb r0, [r1, 0x1A] + lsls r2, r0, 30 + lsrs r0, r2, 30 + cmp r0, 0x2 + beq _08119CD0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + ldr r0, [r4] + adds r2, r0, r5 + ldrh r1, [r2, 0x18] + ldr r0, _08119CCC @ =0x00000257 + cmp r1, r0 + bls _08119CF0 + ldrb r0, [r2, 0x1A] + movs r5, 0x4 + negs r5, r5 + adds r1, r5, 0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1A] + movs r7, 0x2 + b _08119CF0 + .align 2, 0 +_08119CCC: .4byte 0x00000257 +_08119CD0: + lsrs r0, r2, 30 + cmp r0, 0x2 + bne _08119CF0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + ldr r0, [r4] + adds r2, r0, r5 + ldrh r1, [r2, 0x18] + ldr r0, _08119D30 @ =0x00000383 + cmp r1, r0 + bls _08119CF0 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_811A5E4 +_08119CF0: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0x7 + bhi _08119D00 + b _08119BFC +_08119D00: + movs r5, 0 + movs r6, 0x3 +_08119D04: + ldr r0, [r4] + ldr r1, [r4, 0x4] + adds r1, r5 + movs r2, 0x8 + bl sub_811A798 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08119D1A + movs r7, 0x1 +_08119D1A: + adds r5, 0x1C + subs r6, 0x1 + cmp r6, 0 + bge _08119D04 + adds r0, r7, 0 +_08119D24: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08119D30: .4byte 0x00000383 + thumb_func_end sub_8119B94 + + thumb_func_start sub_8119D34 +sub_8119D34: @ 8119D34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r0, 2 + add r0, r10 + lsls r0, 3 + ldr r1, _08119E24 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r7, 0 + mov r0, sp + adds r0, 0x10 + str r0, [sp, 0x18] +_08119D58: + lsls r2, r7, 24 + lsrs r2, 24 + mov r0, sp + ldr r1, [sp, 0x18] + bl sub_80FCC3C + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, sp + ldrb r0, [r0, 0xA] + lsls r0, 25 + lsrs r0, 25 + mov r2, r10 + lsls r1, r2, 2 + add r1, r10 + lsls r1, 3 + ldr r3, _08119E28 @ =gUnknown_3005090 + adds r1, r3 + movs r5, 0x10 + ldrsh r1, [r1, r5] + bl sub_8116F28 + cmp r0, 0 + bne _08119D94 + mov r1, sp + ldr r0, _08119E2C @ =gUnknown_8457034 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_08119D94: + mov r0, sp + ldrb r1, [r0] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08119DAC + mov r1, sp + ldr r0, _08119E2C @ =gUnknown_8457034 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_08119DAC: + cmp r4, 0 + bne _08119E30 + lsls r0, r7, 3 + mov r8, r0 + adds r1, r7, 0x1 + mov r9, r1 + cmp r7, 0 + ble _08119DEC + movs r2, 0 + str r2, [sp, 0x1C] + adds r4, r7, 0 +_08119DC2: + ldr r0, [r6, 0x4] + ldr r3, [sp, 0x1C] + adds r0, r3 + mov r1, sp + bl sub_811A694 + lsls r0, 24 + cmp r0, 0 + bne _08119DE0 + mov r1, sp + ldr r0, _08119E2C @ =gUnknown_8457034 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_08119DE0: + ldr r5, [sp, 0x1C] + adds r5, 0x1C + str r5, [sp, 0x1C] + subs r4, 0x1 + cmp r4, 0 + bne _08119DC2 +_08119DEC: + ldr r1, [r6, 0x4] + mov r0, r8 + subs r4, r0, r7 + lsls r4, 2 + adds r1, r4 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r6, 0x4] + adds r0, r4 + ldr r1, _08119E2C @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r6, 0x4] + adds r3, r4 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r4, 0x2 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + b _08119E68 + .align 2, 0 +_08119E24: .4byte gUnknown_3005098 +_08119E28: .4byte gUnknown_3005090 +_08119E2C: .4byte gUnknown_8457034 +_08119E30: + ldr r1, [r6] + lsls r4, r7, 3 + subs r4, r7 + lsls r4, 2 + adds r1, r4 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r6] + adds r0, r4 + ldr r1, _08119E80 @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r6] + adds r3, r4 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r4, 0x2 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + adds r7, 0x1 + mov r9, r7 +_08119E68: + mov r7, r9 + cmp r7, 0x3 + bgt _08119E70 + b _08119D58 +_08119E70: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08119E80: .4byte gUnknown_8457034 + thumb_func_end sub_8119D34 + + thumb_func_start sub_8119E84 +sub_8119E84: @ 8119E84 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, _08119EB0 @ =sub_8119D34 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _08119EB4 @ =gUnknown_3005098 + adds r3, r1, r2 + str r4, [r3] + str r5, [r3, 0x4] + adds r2, r1 + strh r6, [r2, 0x8] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08119EB0: .4byte sub_8119D34 +_08119EB4: .4byte gUnknown_3005098 + thumb_func_end sub_8119E84 + + thumb_func_start sub_8119EB8 +sub_8119EB8: @ 8119EB8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r0, 2 + add r0, r10 + lsls r0, 3 + ldr r1, _08119FA4 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r3, 0 +_08119ED6: + lsls r4, r3, 3 + subs r0, r4, r3 + lsls r5, r0, 2 + ldr r0, [r6] + adds r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + lsls r2, r3, 24 + lsrs r2, 24 + str r3, [sp] + bl sub_80FCC3C + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0, 0xA] + lsls r0, 25 + lsrs r0, 25 + mov r2, r10 + lsls r1, r2, 2 + add r1, r10 + lsls r1, 3 + ldr r7, _08119FA8 @ =gUnknown_3005090 + adds r1, r7 + movs r2, 0xC + ldrsh r1, [r1, r2] + bl sub_8116F28 + mov r8, r4 + ldr r3, [sp] + cmp r0, 0 + bne _08119F22 + ldr r1, [r6] + adds r1, r5 + ldr r0, _08119FAC @ =gUnknown_8457034 + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} +_08119F22: + adds r4, r3, 0x1 + mov r9, r4 + cmp r3, 0 + ble _08119F66 + str r5, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + adds r4, r3, 0 +_08119F32: + ldr r1, [r6] + ldr r7, [sp, 0x8] + adds r0, r1, r7 + ldr r2, [sp, 0x4] + adds r1, r2 + str r3, [sp] + bl sub_811A694 + lsls r0, 24 + ldr r3, [sp] + cmp r0, 0 + bne _08119F5A + ldr r1, [r6] + ldr r5, [sp, 0x4] + adds r1, r5 + ldr r0, _08119FAC @ =gUnknown_8457034 + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} +_08119F5A: + ldr r7, [sp, 0x8] + adds r7, 0x1C + str r7, [sp, 0x8] + subs r4, 0x1 + cmp r4, 0 + bne _08119F32 +_08119F66: + mov r0, r8 + subs r4, r0, r3 + lsls r4, 2 + ldr r0, [r6] + adds r0, r4 + ldr r1, _08119FAC @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r6] + adds r3, r4 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r4, 0x2 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + mov r3, r9 + cmp r3, 0x3 + ble _08119ED6 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08119FA4: .4byte gUnknown_3005098 +_08119FA8: .4byte gUnknown_3005090 +_08119FAC: .4byte gUnknown_8457034 + thumb_func_end sub_8119EB8 + + thumb_func_start sub_8119FB0 +sub_8119FB0: @ 8119FB0 + push {lr} + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7 + bne _08119FC0 + ldrb r1, [r0] + movs r0, 0x20 + b _08119FC8 +_08119FC0: + cmp r1, 0x8 + bne _08119FD2 + ldrb r1, [r0] + movs r0, 0x10 +_08119FC8: + ands r0, r1 + cmp r0, 0 + beq _08119FD2 + movs r0, 0x1 + b _08119FD4 +_08119FD2: + movs r0, 0 +_08119FD4: + pop {r1} + bx r1 + thumb_func_end sub_8119FB0 + + thumb_func_start sub_8119FD8 +sub_8119FD8: @ 8119FD8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0811A04C @ =gUnknown_3005098 + adds r4, r1, r0 + movs r6, 0 + subs r0, 0x8 + movs r5, 0 + adds r1, r0 + mov r8, r1 +_08119FF6: + ldr r0, [r4] + adds r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + lsls r2, r6, 24 + lsrs r2, 24 + bl sub_80FCCF4 + lsls r0, 24 + cmp r0, 0 + beq _0811A01A + ldr r0, [r4] + adds r0, r5 + mov r2, r8 + movs r3, 0xC + ldrsh r1, [r2, r3] + bl sub_8119FB0 +_0811A01A: + ldr r0, [r4] + adds r0, r5 + ldr r1, _0811A050 @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r4] + adds r3, r5 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r7, 0x2 + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08119FF6 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A04C: .4byte gUnknown_3005098 +_0811A050: .4byte gUnknown_8457034 + thumb_func_end sub_8119FD8 + + thumb_func_start sub_811A054 +sub_811A054: @ 811A054 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0811A07C @ =sub_8119EB8 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + ldr r1, _0811A080 @ =gUnknown_3005098 + adds r3, r2, r1 + str r4, [r3] + adds r1, r2 + strh r5, [r1, 0x4] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811A07C: .4byte sub_8119EB8 +_0811A080: .4byte gUnknown_3005098 + thumb_func_end sub_811A054 + + thumb_func_start sub_811A084 +sub_811A084: @ 811A084 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0811A0AC @ =sub_8119FD8 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + ldr r1, _0811A0B0 @ =gUnknown_3005098 + adds r3, r2, r1 + str r4, [r3] + adds r1, r2 + strh r5, [r1, 0x4] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811A0AC: .4byte sub_8119FD8 +_0811A0B0: .4byte gUnknown_3005098 + thumb_func_end sub_811A084 + + thumb_func_start sub_811A0B4 +sub_811A0B4: @ 811A0B4 + push {r4,lr} + adds r4, r0, 0 + bl sub_80F6E9C + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 + ldr r0, _0811A0DC @ =gUnknown_2021D18 + adds r1, r4, 0 + bl sub_8008FCC + movs r0, 0 + movs r1, 0x1 + bl sub_80F6E54 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811A0DC: .4byte gUnknown_2021D18 + thumb_func_end sub_811A0B4 + + thumb_func_start sub_811A0E0 +sub_811A0E0: @ 811A0E0 + push {lr} + bl sub_80F6CBC + lsls r0, 16 + cmp r0, 0 + beq _0811A0F0 + movs r0, 0 + b _0811A0F2 +_0811A0F0: + movs r0, 0x1 +_0811A0F2: + pop {r1} + bx r1 + thumb_func_end sub_811A0E0 + + thumb_func_start sub_811A0F8 +sub_811A0F8: @ 811A0F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0811A10A + cmp r0, 0x1 + beq _0811A130 + b _0811A142 +_0811A10A: + bl sub_80F6E9C + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 + ldr r0, _0811A12C @ =gUnknown_2021D18 + adds r1, r5, 0 + bl sub_8008FCC + movs r0, 0x1 + bl sub_80F6E08 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0811A142 + .align 2, 0 +_0811A12C: .4byte gUnknown_2021D18 +_0811A130: + bl sub_80F6CBC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0811A142 + strb r0, [r4] + movs r0, 0x1 + b _0811A144 +_0811A142: + movs r0, 0 +_0811A144: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811A0F8 + + thumb_func_start sub_811A14C +sub_811A14C: @ 811A14C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0811A15E + cmp r0, 0x1 + beq _0811A174 + b _0811A1A0 +_0811A15E: + cmp r5, 0 + beq _0811A168 + movs r0, 0x3 + negs r0, r0 + b _0811A1A4 +_0811A168: + bl sub_80F7858 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0811A1A0 +_0811A174: + cmp r5, 0 + beq _0811A186 + bl sub_81100E8 + movs r0, 0 + strb r0, [r4] + movs r0, 0x3 + negs r0, r0 + b _0811A1A4 +_0811A186: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0811A1A0 + strb r5, [r4] + adds r0, r1, 0 + b _0811A1A4 +_0811A1A0: + movs r0, 0x2 + negs r0, r0 +_0811A1A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811A14C + + thumb_func_start sub_811A1AC +sub_811A1AC: @ 811A1AC + push {r4,lr} + sub sp, 0x8 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_80F6F1C + adds r0, r4, 0 + movs r1, 0xFF + bl sub_800445C + ldr r2, _0811A1F8 @ =gUnknown_8459378 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x6 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0 + movs r3, 0x8 + bl sub_811A444 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8003F20 + adds r0, r4, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811A1F8: .4byte gUnknown_8459378 + thumb_func_end sub_811A1AC + + thumb_func_start sub_811A1FC +sub_811A1FC: @ 811A1FC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80F6F9C + adds r0, r4, 0 + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811A1FC + + thumb_func_start sub_811A218 +sub_811A218: @ 811A218 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + adds r5, r1, 0 + mov r9, r2 + adds r0, r3, 0 + ldrb r4, [r7] + cmp r4, 0 + beq _0811A234 + cmp r4, 0x1 + beq _0811A274 + b _0811A2DA +_0811A234: + bl sub_8003CE4 + strb r0, [r5] + ldrb r0, [r5] + movs r1, 0 + bl sub_80F6F1C + ldr r0, _0811A270 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, [sp, 0x1C] + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldrb r1, [r5] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + mov r1, r9 + strb r0, [r1] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + b _0811A2DA + .align 2, 0 +_0811A270: .4byte gUnknown_3005E70 +_0811A274: + mov r3, r9 + ldrb r0, [r3] + bl sub_8107078 + mov r8, r0 + ldr r0, _0811A2AC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + ands r4, r1 + cmp r4, 0 + beq _0811A2B0 + mov r4, r9 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r5] + movs r1, 0x1 + bl sub_80F6F9C + ldrb r0, [r5] + bl sub_8003E3C + movs r0, 0 + strb r0, [r7] + mov r0, r8 + b _0811A2DE + .align 2, 0 +_0811A2AC: .4byte gUnknown_30030F0 +_0811A2B0: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0811A2DA + mov r6, r9 + ldrb r0, [r6] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r5] + movs r1, 0x1 + bl sub_80F6F9C + ldrb r0, [r5] + bl sub_8003E3C + strb r4, [r7] + movs r0, 0x2 + negs r0, r0 + b _0811A2DE +_0811A2DA: + movs r0, 0x1 + negs r0, r0 +_0811A2DE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A218 + + thumb_func_start sub_811A2EC +sub_811A2EC: @ 811A2EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r7, r3, 0 + ldrb r0, [r0] + cmp r0, 0 + beq _0811A308 + cmp r0, 0x1 + beq _0811A358 + b _0811A3E6 +_0811A308: + ldr r0, _0811A350 @ =gUnknown_8456F1C + bl sub_811A1AC + strb r0, [r7] + ldr r0, [sp, 0x1C] + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl sub_80F6F1C + ldr r0, _0811A354 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, [sp, 0x20] + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldrb r1, [r4] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0x1 + bl sub_8106FF8 + strb r0, [r5] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8003F20 + mov r1, r9 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0811A3E6 + .align 2, 0 +_0811A350: .4byte gUnknown_8456F1C +_0811A354: .4byte gUnknown_3005E70 +_0811A358: + ldrb r0, [r5] + bl sub_8107078 + adds r1, r0, 0 + ldr r0, _0811A3A8 @ =gUnknown_30030F0 + ldrh r2, [r0, 0x2E] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0 + beq _0811A3E6 + cmp r1, 0x8 + beq _0811A37E + movs r0, 0x2 + ands r0, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + cmp r0, 0 + beq _0811A3AC +_0811A37E: + ldrb r0, [r5] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r4] + movs r1, 0x1 + bl sub_80F6F9C + ldrb r0, [r4] + bl sub_8003E3C + ldrb r0, [r7] + bl sub_811A1FC + movs r0, 0 + mov r3, r9 + strb r0, [r3] + movs r0, 0x2 + negs r0, r0 + b _0811A3EA + .align 2, 0 +_0811A3A8: .4byte gUnknown_30030F0 +_0811A3AC: + ldr r0, [sp, 0x24] + bl sub_811AD7C + adds r6, r0, 0 + cmp r6, 0 + blt _0811A3E0 + ldrb r0, [r5] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r4] + movs r1, 0x1 + bl sub_80F6F9C + ldrb r0, [r4] + bl sub_8003E3C + ldrb r0, [r7] + bl sub_811A1FC + mov r0, r8 + mov r7, r9 + strb r0, [r7] + adds r0, r6, 0 + b _0811A3EA +_0811A3E0: + movs r0, 0x7 + bl sub_80722CC +_0811A3E6: + movs r0, 0x1 + negs r0, r0 +_0811A3EA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A2EC + + thumb_func_start sub_811A3F8 +sub_811A3F8: @ 811A3F8 + push {lr} + sub sp, 0xC + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + bl sub_80020BC + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_811A3F8 + + thumb_func_start sub_811A41C +sub_811A41C: @ 811A41C + push {lr} + sub sp, 0xC + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + bl sub_80020BC + bl sub_8069B34 + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_811A41C + + thumb_func_start sub_811A444 +sub_811A444: @ 811A444 + push {r4,r5,lr} + sub sp, 0x10 + ldr r5, [sp, 0x1C] + ldr r4, [sp, 0x20] + lsls r3, 24 + lsrs r3, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + str r2, [sp] + mov r2, sp + strb r0, [r2, 0x4] + mov r0, sp + strb r1, [r0, 0x5] + strb r3, [r0, 0x6] + strb r5, [r0, 0x7] + strb r3, [r0, 0x8] + strb r5, [r0, 0x9] + ldrb r1, [r2, 0xC] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0xC] + ldr r2, _0811A490 @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + cmp r4, 0x6 + bls _0811A486 + b _0811A5D2 +_0811A486: + lsls r0, r4, 2 + ldr r1, _0811A494 @ =_0811A498 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811A490: .4byte gUnknown_3003E50 +_0811A494: .4byte _0811A498 + .align 2, 0 +_0811A498: + .4byte _0811A4B4 + .4byte _0811A4E0 + .4byte _0811A50C + .4byte _0811A538 + .4byte _0811A564 + .4byte _0811A590 + .4byte _0811A5A8 +_0811A4B4: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x30 + b _0811A5CE +_0811A4E0: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x50 + b _0811A5CE +_0811A50C: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x60 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x70 + b _0811A5CE +_0811A538: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x30 + b _0811A5CE +_0811A564: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x30 + b _0811A5CE +_0811A590: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r4, 0xF + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x70 + b _0811A5BE +_0811A5A8: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r4, 0xF + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0xE0 +_0811A5BE: + orrs r0, r1 + strb r0, [r2, 0xC] + mov r1, sp + ldrb r0, [r1, 0xD] + orrs r0, r4 + strb r0, [r1, 0xD] + ands r0, r3 + movs r1, 0x90 +_0811A5CE: + orrs r0, r1 + strb r0, [r2, 0xD] +_0811A5D2: + mov r0, sp + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811A444 + + thumb_func_start sub_811A5E4 +sub_811A5E4: @ 811A5E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + beq _0811A63C + ldr r2, _0811A64C @ =gUnknown_8457034 + mov r8, r2 + movs r5, 0 + mov r9, r5 + movs r6, 0x4 + negs r6, r6 + mov r12, r6 + adds r2, r0, 0 + adds r2, 0x18 + adds r4, r0, 0 + movs r7, 0xFF + mov r10, r7 + adds r3, r1, 0 +_0811A610: + adds r1, r4, 0 + mov r0, r8 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + mov r0, r10 + strh r0, [r2] + ldrb r1, [r2, 0x2] + mov r0, r12 + ands r0, r1 + movs r1, 0x5 + negs r1, r1 + ands r0, r1 + strb r0, [r2, 0x2] + mov r5, r9 + strb r5, [r2, 0x3] + adds r2, 0x20 + adds r4, 0x20 + subs r3, 0x1 + cmp r3, 0 + bne _0811A610 +_0811A63C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A64C: .4byte gUnknown_8457034 + thumb_func_end sub_811A5E4 + + thumb_func_start sub_811A650 +sub_811A650: @ 811A650 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _0811A690 @ =gUnknown_8457034 + mov r12, r1 + movs r5, 0x2 + negs r5, r5 + mov r8, r5 + adds r2, r0, 0 + adds r2, 0x18 + adds r3, r0, 0 + movs r4, 0x3 +_0811A668: + adds r1, r3, 0 + mov r0, r12 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldrb r1, [r2] + mov r0, r8 + ands r0, r1 + strb r0, [r2] + adds r2, 0x1C + adds r3, 0x1C + subs r4, 0x1 + cmp r4, 0 + bge _0811A668 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A690: .4byte gUnknown_8457034 + thumb_func_end sub_811A650 + + thumb_func_start sub_811A694 +sub_811A694: @ 811A694 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r2, 0 + adds r4, r5, 0x2 + adds r3, r6, 0x2 +_0811A6A0: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0811A6C8 + adds r2, 0x1 + cmp r2, 0x1 + ble _0811A6A0 + movs r2, 0 + adds r4, r5, 0 + adds r4, 0x10 + adds r3, r6, 0 + adds r3, 0x10 +_0811A6BC: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _0811A6CC +_0811A6C8: + movs r0, 0x1 + b _0811A6D4 +_0811A6CC: + adds r2, 0x1 + cmp r2, 0x7 + ble _0811A6BC + movs r0, 0 +_0811A6D4: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811A694 + + thumb_func_start sub_811A6DC +sub_811A6DC: @ 811A6DC + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldrb r3, [r5, 0xA] + movs r0, 0x7F + ldrb r2, [r6, 0xA] + adds r1, r0, 0 + ands r1, r3 + ands r0, r2 + cmp r1, r0 + bne _0811A740 + movs r0, 0x80 + adds r1, r0, 0 + ands r1, r3 + ands r0, r2 + cmp r1, r0 + bne _0811A740 + movs r2, 0 + adds r4, r5, 0x4 + adds r3, r6, 0x4 +_0811A704: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0811A740 + adds r2, 0x1 + cmp r2, 0x3 + ble _0811A704 + ldrh r2, [r5, 0x8] + ldr r0, _0811A73C @ =0x000003ff + ldrh r3, [r6, 0x8] + adds r1, r0, 0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _0811A740 + ldrb r2, [r5, 0x9] + movs r0, 0xFC + ldrb r3, [r6, 0x9] + adds r1, r0, 0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _0811A740 + movs r0, 0 + b _0811A742 + .align 2, 0 +_0811A73C: .4byte 0x000003ff +_0811A740: + movs r0, 0x1 +_0811A742: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811A6DC + + thumb_func_start sub_811A748 +sub_811A748: @ 811A748 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + movs r7, 0xFF + movs r6, 0 + adds r4, r1, 0 + adds r4, 0x18 + adds r5, r1, 0 +_0811A75A: + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811A782 + mov r0, r8 + adds r1, r5, 0 + bl sub_811A694 + lsls r0, 24 + cmp r0, 0 + bne _0811A782 + lsls r0, r6, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r4] +_0811A782: + adds r4, 0x1C + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _0811A75A + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A748 + + thumb_func_start sub_811A798 +sub_811A798: @ 811A798 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r3, r0, 0 + mov r8, r1 + lsls r2, 24 + lsrs r6, r2, 24 + ldrb r1, [r1, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811A80C + movs r5, 0 + cmp r5, r6 + bge _0811A80C + movs r0, 0x4 + negs r0, r0 + mov r9, r0 + movs r1, 0x2 + negs r1, r1 + mov r12, r1 + adds r2, r3, 0 + adds r2, 0x18 + adds r1, r3, 0 +_0811A7CA: + ldrb r0, [r2, 0x2] + movs r3, 0x3 + ands r3, r0 + cmp r3, 0 + bne _0811A802 + mov r0, r8 + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + strh r3, [r2] + ldrb r1, [r2, 0x2] + mov r0, r9 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x2] + movs r0, 0x40 + strb r0, [r2, 0x3] + mov r0, r8 + ldrb r1, [r0, 0x18] + mov r0, r12 + ands r0, r1 + mov r1, r8 + strb r0, [r1, 0x18] + lsls r0, r5, 24 + lsrs r0, 24 + b _0811A80E +_0811A802: + adds r2, 0x20 + adds r1, 0x20 + adds r5, 0x1 + cmp r5, r6 + blt _0811A7CA +_0811A80C: + movs r0, 0xFF +_0811A80E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A798 + + thumb_func_start sub_811A81C +sub_811A81C: @ 811A81C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + adds r4, r1, 0 + adds r5, r3, 0 + ldr r3, [sp, 0x50] + ldr r1, [sp, 0x54] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0811A904 @ =gUnknown_2021D18 + mov r8, r0 + adds r1, 0x1 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r1, _0811A908 @ =gUnknown_84571B0 + mov r0, r8 + bl sub_8008DA4 + str r6, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_811A444 + adds r4, 0x12 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + ldrb r0, [r5, 0xA] + lsls r0, 25 + lsrs r2, r0, 25 + ldrb r1, [r5, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0811A8F2 + movs r0, 0x40 + ands r2, r0 + cmp r2, 0 + bne _0811A8F2 + add r4, sp, 0x10 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + str r6, [sp] + mov r0, r10 + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x2 + adds r2, r4, 0 + mov r3, r9 + bl sub_811A444 + ldrb r1, [r5, 0x2] + ldrb r0, [r5, 0x3] + lsls r0, 8 + orrs r1, r0 + add r0, sp, 0x8 + movs r2, 0x2 + movs r3, 0x5 + bl sub_8008E78 + ldr r1, _0811A90C @ =gUnknown_84571B4 + mov r0, r8 + bl sub_8008D84 + mov r0, r8 + add r1, sp, 0x8 + bl sub_8008DA4 + mov r3, r9 + adds r3, 0x4D + lsls r3, 24 + lsrs r3, 24 + str r6, [sp] + mov r0, r10 + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0 + mov r2, r8 + bl sub_811A444 +_0811A8F2: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A904: .4byte gUnknown_2021D18 +_0811A908: .4byte gUnknown_84571B0 +_0811A90C: .4byte gUnknown_84571B4 + thumb_func_end sub_811A81C + + thumb_func_start sub_811A910 +sub_811A910: @ 811A910 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x30 + adds r5, r3, 0 + ldr r3, [sp, 0x4C] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r7, r3, 24 + ldrb r1, [r5, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0811A9A2 + add r4, sp, 0x10 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + mov r0, r8 + str r0, [sp] + str r7, [sp, 0x4] + mov r0, r9 + movs r1, 0x2 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_811A444 + ldrb r1, [r5, 0x2] + ldrb r0, [r5, 0x3] + lsls r0, 8 + orrs r1, r0 + add r0, sp, 0x8 + movs r2, 0x2 + movs r3, 0x5 + bl sub_8008E78 + ldr r4, _0811A9B0 @ =gUnknown_2021D18 + ldr r1, _0811A9B4 @ =gUnknown_84571B4 + adds r0, r4, 0 + bl sub_8008D84 + adds r0, r4, 0 + add r1, sp, 0x8 + bl sub_8008DA4 + adds r3, r6, 0 + adds r3, 0x47 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + str r0, [sp] + str r7, [sp, 0x4] + mov r0, r9 + movs r1, 0 + adds r2, r4, 0 + bl sub_811A444 +_0811A9A2: + add sp, 0x30 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A9B0: .4byte gUnknown_2021D18 +_0811A9B4: .4byte gUnknown_84571B4 + thumb_func_end sub_811A910 + + thumb_func_start sub_811A9B8 +sub_811A9B8: @ 811A9B8 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x9 + bne _0811A9F0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bne _0811A9F0 + ldr r0, _0811A9EC @ =gUnknown_2037078 + ldrb r0, [r0, 0x3] + cmp r0, 0x2 + beq _0811A9E6 + cmp r0, 0 + bne _0811A9F0 +_0811A9E6: + movs r0, 0x1 + b _0811A9F2 + .align 2, 0 +_0811A9EC: .4byte gUnknown_2037078 +_0811A9F0: + movs r0, 0 +_0811A9F2: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811A9B8 + + thumb_func_start sub_811A9FC +sub_811A9FC: @ 811A9FC + push {lr} + cmp r0, 0x4 + beq _0811AA14 + cmp r0, 0x4 + ble _0811AA1C + cmp r0, 0x5 + beq _0811AA10 + cmp r0, 0x8 + beq _0811AA18 + b _0811AA1C +_0811AA10: + movs r0, 0x1 + b _0811AA1E +_0811AA14: + movs r0, 0x2 + b _0811AA1E +_0811AA18: + movs r0, 0x3 + b _0811AA1E +_0811AA1C: + movs r0, 0 +_0811AA1E: + pop {r1} + bx r1 + thumb_func_end sub_811A9FC + + thumb_func_start sub_811AA24 +sub_811AA24: @ 811AA24 + push {r4,lr} + sub sp, 0x20 + adds r4, r0, 0 + adds r1, r4, 0 + adds r1, 0x10 + mov r0, sp + bl sub_8008D84 + ldrb r1, [r4] + lsls r1, 28 + lsrs r1, 28 + mov r0, sp + bl sub_80093BC + adds r4, 0x2 + adds r0, r4, 0 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + bl sub_80FD338 + add sp, 0x20 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811AA24 + + thumb_func_start sub_811AA5C +sub_811AA5C: @ 811AA5C + push {r4-r7,lr} + adds r7, r3, 0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 19 + adds r5, r0, r2 + ldrb r1, [r5, 0xA] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811AAE4 + cmp r6, 0 + bne _0811AAE4 + ldr r4, _0811AAC4 @ =gUnknown_2021CD0 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + adds r0, r5, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl sub_80FD338 + adds r2, r0, 0 + ldrb r1, [r5, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + bne _0811AAD0 + ldr r0, _0811AAC8 @ =gUnknown_2021D18 + ldr r3, _0811AACC @ =gUnknown_8457F80 + lsls r1, r7, 2 + lsls r2, 3 + adds r1, r2 + adds r1, r3 + ldr r1, [r1] + bl sub_8008FCC + movs r0, 0x2 + b _0811ABD2 + .align 2, 0 +_0811AAC4: .4byte gUnknown_2021CD0 +_0811AAC8: .4byte gUnknown_2021D18 +_0811AACC: .4byte gUnknown_8457F80 +_0811AAD0: + ldr r0, _0811AAE0 @ =gUnknown_8457A34 + lsls r1, r2, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_811A0B4 + movs r0, 0x1 + b _0811ABD2 + .align 2, 0 +_0811AAE0: .4byte gUnknown_8457A34 +_0811AAE4: + ldr r4, _0811AB24 @ =gUnknown_2021CD0 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl sub_8008D84 + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl sub_80093BC + cmp r6, 0 + beq _0811AB0A + adds r0, r5, r6 + ldrb r0, [r0, 0x3] + lsrs r7, r0, 3 + movs r0, 0x1 + ands r7, r0 +_0811AB0A: + ldrb r0, [r5, 0xA] + lsls r0, 25 + lsrs r0, 25 + movs r1, 0x3F + ands r1, r0 + cmp r1, 0x4 + beq _0811AB58 + cmp r1, 0x4 + bgt _0811AB28 + cmp r1, 0x1 + beq _0811AB32 + b _0811ABC8 + .align 2, 0 +_0811AB24: .4byte gUnknown_2021CD0 +_0811AB28: + cmp r1, 0x5 + beq _0811AB78 + cmp r1, 0x8 + beq _0811AB9C + b _0811ABC8 +_0811AB32: + ldr r5, _0811AB50 @ =gUnknown_2021D18 + ldr r4, _0811AB54 @ =gUnknown_8458758 + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 14 + lsls r0, r7, 4 + adds r1, r0 + adds r1, r4 + ldr r1, [r1] + b _0811ABB6 + .align 2, 0 +_0811AB50: .4byte gUnknown_2021D18 +_0811AB54: .4byte gUnknown_8458758 +_0811AB58: + ldr r5, _0811AB70 @ =gUnknown_2021D18 + ldr r4, _0811AB74 @ =gUnknown_8458A78 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + lsls r1, r7, 4 + b _0811ABB0 + .align 2, 0 +_0811AB70: .4byte gUnknown_2021D18 +_0811AB74: .4byte gUnknown_8458A78 +_0811AB78: + ldr r5, _0811AB94 @ =gUnknown_2021D18 + ldr r4, _0811AB98 @ =gUnknown_84588BC + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 14 + lsls r0, r7, 4 + adds r1, r0 + adds r1, r4 + ldr r1, [r1] + b _0811ABB6 + .align 2, 0 +_0811AB94: .4byte gUnknown_2021D18 +_0811AB98: .4byte gUnknown_84588BC +_0811AB9C: + ldr r5, _0811ABC0 @ =gUnknown_2021D18 + ldr r4, _0811ABC4 @ =gUnknown_84589AC + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + lsls r1, r7, 3 +_0811ABB0: + adds r0, r1 + adds r0, r4 + ldr r1, [r0] +_0811ABB6: + adds r0, r5, 0 + bl sub_8008FCC + b _0811ABD0 + .align 2, 0 +_0811ABC0: .4byte gUnknown_2021D18 +_0811ABC4: .4byte gUnknown_84589AC +_0811ABC8: + ldr r0, _0811ABD8 @ =gUnknown_2021D18 + ldr r1, _0811ABDC @ =gUnknown_8457F90 + bl sub_8008FCC +_0811ABD0: + movs r0, 0 +_0811ABD2: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811ABD8: .4byte gUnknown_2021D18 +_0811ABDC: .4byte gUnknown_8457F90 + thumb_func_end sub_811AA5C + + thumb_func_start nullsub_92 +nullsub_92: @ 811ABE0 + bx lr + thumb_func_end nullsub_92 + + thumb_func_start sub_811ABE4 +sub_811ABE4: @ 811ABE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r4, [sp, 0x28] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r4, 24 + lsrs r4, 24 + ldrh r0, [r2, 0x8] + lsls r0, 22 + lsrs r0, 22 + mov r8, r0 + ldrb r0, [r2, 0x9] + lsrs r7, r0, 2 + ldrb r0, [r2, 0xB] + lsrs r0, 1 + mov r9, r0 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r3, 0 + movs r3, 0x8 + bl sub_811A444 + movs r0, 0xCE + lsls r0, 1 + cmp r8, r0 + bne _0811AC3C + ldr r2, _0811AC38 @ =gUnknown_8458FBC + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0x44 + bl sub_811A444 + b _0811AC90 + .align 2, 0 +_0811AC38: .4byte gUnknown_8458FBC +_0811AC3C: + adds r1, r7, 0x1 + adds r0, r6, 0 + movs r2, 0x44 + adds r3, r5, 0 + bl sub_8107D68 + movs r0, 0xB + mov r2, r8 + muls r2, r0 + ldr r0, _0811ACA0 @ =gUnknown_8245EE0 + adds r2, r0 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0x76 + bl sub_811A444 + add r0, sp, 0x8 + mov r1, r9 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x2 + add r1, sp, 0x8 + movs r2, 0 + bl sub_8005ED4 + lsls r0, 16 + lsrs r0, 16 + movs r3, 0xDA + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + add r2, sp, 0x8 + bl sub_811A444 +_0811AC90: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811ACA0: .4byte gUnknown_8245EE0 + thumb_func_end sub_811ABE4 + + thumb_func_start sub_811ACA4 +sub_811ACA4: @ 811ACA4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldr r0, _0811ACF8 @ =gUnknown_203B05C + ldr r6, [r0] + movs r0, 0x3 + negs r0, r0 + cmp r4, r0 + bne _0811AD38 + ldr r0, _0811ACFC @ =gUnknown_8456F7C + ldrb r0, [r0, 0x14] + lsls r0, 28 + lsrs r0, 28 + cmp r8, r0 + bne _0811AD38 + bl sub_80F9800 + adds r2, r0, 0 + ldrh r1, [r2, 0x8] + ldr r0, _0811AD00 @ =0x000003ff + ands r0, r1 + cmp r0, 0 + beq _0811AD6C + ldr r0, _0811AD04 @ =gUnknown_300500C + ldr r3, [r0] + movs r0, 0x5 + str r0, [sp] + mov r0, r9 + mov r1, r8 + bl sub_811ABE4 + b _0811AD6C + .align 2, 0 +_0811ACF8: .4byte gUnknown_203B05C +_0811ACFC: .4byte gUnknown_8456F7C +_0811AD00: .4byte 0x000003ff +_0811AD04: .4byte gUnknown_300500C +_0811AD08: + mov r0, r12 + adds r1, r0, r4 + adds r1, 0x10 + add r0, sp, 0x4 + bl sub_8008D84 + ldr r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + add r0, sp, 0x4 + bl sub_80093BC + ldr r2, [r6] + adds r2, r4 + movs r0, 0x6 + str r0, [sp] + mov r0, r9 + mov r1, r8 + add r3, sp, 0x4 + bl sub_811ABE4 + b _0811AD6C +_0811AD38: + movs r5, 0 + movs r1, 0 + ldr r0, [r6] + mov r12, r0 + mov r2, r12 + adds r2, 0x8 + movs r3, 0 + adds r7, r4, 0x1 +_0811AD48: + ldrb r0, [r2, 0x12] + lsls r0, 30 + lsrs r0, 30 + adds r4, r3, 0 + cmp r0, 0x1 + bne _0811AD5E + ldrh r0, [r2] + lsls r0, 22 + cmp r0, 0 + beq _0811AD5E + adds r5, 0x1 +_0811AD5E: + cmp r5, r7 + beq _0811AD08 + adds r2, 0x20 + adds r3, 0x20 + adds r1, 0x1 + cmp r1, 0x7 + ble _0811AD48 +_0811AD6C: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811ACA4 + + thumb_func_start sub_811AD7C +sub_811AD7C: @ 811AD7C + push {r4-r7,lr} + movs r4, 0 + movs r3, 0 + movs r7, 0x3 + ldr r6, _0811ADAC @ =0x000003ff + adds r2, r0, 0 + adds r2, 0x8 + adds r5, r1, 0x1 +_0811AD8C: + ldrb r1, [r2, 0x12] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0811ADA2 + ldrh r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0811ADA2 + adds r4, 0x1 +_0811ADA2: + cmp r4, r5 + bne _0811ADB0 + adds r0, r3, 0 + b _0811ADBC + .align 2, 0 +_0811ADAC: .4byte 0x000003ff +_0811ADB0: + adds r2, 0x20 + adds r3, 0x1 + cmp r3, 0x7 + ble _0811AD8C + movs r0, 0x1 + negs r0, r0 +_0811ADBC: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811AD7C + + thumb_func_start sub_811ADC4 +sub_811ADC4: @ 811ADC4 + lsls r0, 5 + adds r0, r1 + ldrb r0, [r0, 0xB] + lsls r0, 31 + lsrs r0, 31 + bx lr + thumb_func_end sub_811ADC4 + + thumb_func_start sub_811ADD0 +sub_811ADD0: @ 811ADD0 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bne _0811AE10 + movs r4, 0 + b _0811ADFA +_0811ADE0: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0811AE08 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + adds r1, r0, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0811AE40 + adds r4, 0x1 +_0811ADFA: + ldr r0, _0811AE0C @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r4, r0 + blt _0811ADE0 + movs r0, 0x2 + b _0811AE5C + .align 2, 0 +_0811AE08: .4byte gUnknown_2024284 +_0811AE0C: .4byte gUnknown_2024029 +_0811AE10: + movs r4, 0 + ldr r0, _0811AE44 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r4, r0 + bge _0811AE5A + ldr r6, _0811AE48 @ =gUnknown_8254784 +_0811AE1C: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0811AE4C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r6 + ldrb r0, [r1, 0x6] + cmp r0, r5 + beq _0811AE40 + ldrb r0, [r1, 0x7] + cmp r0, r5 + bne _0811AE50 +_0811AE40: + movs r0, 0 + b _0811AE5C + .align 2, 0 +_0811AE44: .4byte gUnknown_2024029 +_0811AE48: .4byte gUnknown_8254784 +_0811AE4C: .4byte gUnknown_2024284 +_0811AE50: + adds r4, 0x1 + ldr r0, _0811AE64 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r4, r0 + blt _0811AE1C +_0811AE5A: + movs r0, 0x1 +_0811AE5C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0811AE64: .4byte gUnknown_2024029 + thumb_func_end sub_811ADD0 + + thumb_func_start sub_811AE68 +sub_811AE68: @ 811AE68 + push {lr} + adds r3, r0, 0 + cmp r1, 0x44 + beq _0811AEA4 + cmp r1, 0x44 + bgt _0811AE7A + cmp r1, 0x41 + beq _0811AE84 + b _0811AEC2 +_0811AE7A: + cmp r1, 0x45 + beq _0811AE94 + cmp r1, 0x48 + beq _0811AEB4 + b _0811AEC2 +_0811AE84: + ldr r0, _0811AE90 @ =gUnknown_8458314 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + b _0811AEA6 + .align 2, 0 +_0811AE90: .4byte gUnknown_8458314 +_0811AE94: + ldr r0, _0811AEA0 @ =gUnknown_84585E8 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + b _0811AEA6 + .align 2, 0 +_0811AEA0: .4byte gUnknown_84585E8 +_0811AEA4: + ldr r1, _0811AEB0 @ =gUnknown_8458F9C +_0811AEA6: + adds r0, r3, 0 + bl sub_8008FCC + b _0811AEC2 + .align 2, 0 +_0811AEB0: .4byte gUnknown_8458F9C +_0811AEB4: + ldr r0, _0811AEC8 @ =gUnknown_84583B4 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r3, 0 + bl sub_8008FCC +_0811AEC2: + pop {r0} + bx r0 + .align 2, 0 +_0811AEC8: .4byte gUnknown_84583B4 + thumb_func_end sub_811AE68 + + thumb_func_start sub_811AECC +sub_811AECC: @ 811AECC + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + adds r6, r4, 0 + bl sub_800A404 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _0811AF00 @ =gUnknown_202273C + movs r0, 0x1 + adds r1, r3, 0 + eors r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x13] + cmp r4, 0x44 + beq _0811AF20 + cmp r4, 0x44 + bgt _0811AF04 + cmp r4, 0x41 + beq _0811AF0A + b _0811AF60 + .align 2, 0 +_0811AF00: .4byte gUnknown_202273C +_0811AF04: + cmp r6, 0x45 + beq _0811AF44 + b _0811AF60 +_0811AF0A: + ldr r2, _0811AF1C @ =gUnknown_8458230 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + b _0811AF32 + .align 2, 0 +_0811AF1C: .4byte gUnknown_8458230 +_0811AF20: + ldr r2, _0811AF40 @ =gUnknown_8458230 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + adds r2, 0x8 +_0811AF32: + adds r1, r2 + ldr r1, [r1] + adds r0, r5, 0 + bl sub_8008D84 + b _0811AF60 + .align 2, 0 +_0811AF40: .4byte gUnknown_8458230 +_0811AF44: + ldr r2, _0811AF68 @ =gUnknown_8458230 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + adds r2, 0x4 + adds r1, r2 + ldr r1, [r1] + adds r0, r5, 0 + bl sub_8008D84 +_0811AF60: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811AF68: .4byte gUnknown_8458230 + thumb_func_end sub_811AECC + + thumb_func_start sub_811AF6C +sub_811AF6C: @ 811AF6C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r5, r2, 0 + adds r6, r3, 0 + movs r2, 0 + mov r8, r2 + ldrh r0, [r5] + subs r0, 0x40 + cmp r0, 0x8 + bls _0811AF86 + b _0811B092 +_0811AF86: + lsls r0, 2 + ldr r1, _0811AF90 @ =_0811AF94 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811AF90: .4byte _0811AF94 + .align 2, 0 +_0811AF94: + .4byte _0811B088 + .4byte _0811AFB8 + .4byte _0811B092 + .4byte _0811B092 + .4byte _0811AFC8 + .4byte _0811AFC0 + .4byte _0811B092 + .4byte _0811B092 + .4byte _0811B078 +_0811AFB8: + ldr r1, _0811AFBC @ =gUnknown_8457CA4 + b _0811B07A + .align 2, 0 +_0811AFBC: .4byte gUnknown_8457CA4 +_0811AFC0: + ldr r1, _0811AFC4 @ =gUnknown_8457CF8 + b _0811B07A + .align 2, 0 +_0811AFC4: .4byte gUnknown_8457CF8 +_0811AFC8: + adds r0, r6, 0 + adds r0, 0x58 + ldr r4, _0811AFF0 @ =gUnknown_203B06C + ldrh r1, [r4, 0xC] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + adds r0, r6, 0 + adds r0, 0x63 + ldrh r2, [r4, 0xA] + movs r1, 0xB + muls r1, r2 + ldr r2, _0811AFF4 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008D84 + movs r4, 0 + b _0811AFFA + .align 2, 0 +_0811AFF0: .4byte gUnknown_203B06C +_0811AFF4: .4byte gUnknown_8245EE0 +_0811AFF8: + adds r4, 0x1 +_0811AFFA: + cmp r4, 0x3 + bgt _0811B030 + ldr r0, _0811B044 @ =gUnknown_3007460 + ldr r0, [r0] + lsls r1, r4, 5 + adds r0, r1 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bne _0811AFF8 + ldrh r1, [r5, 0x4] + adds r0, r6, 0 + adds r0, 0x6E + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldrh r1, [r5, 0x2] + movs r0, 0xB + muls r1, r0 + ldr r0, _0811B048 @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r6, 0 + adds r0, 0x79 + bl sub_8008D84 + ldrh r5, [r5, 0x2] + mov r8, r5 +_0811B030: + movs r0, 0xCE + lsls r0, 1 + cmp r8, r0 + bne _0811B050 + ldr r1, _0811B04C @ =gUnknown_8457DB8 + adds r0, r7, 0 + bl sub_8008D84 + b _0811B080 + .align 2, 0 +_0811B044: .4byte gUnknown_3007460 +_0811B048: .4byte gUnknown_8245EE0 +_0811B04C: .4byte gUnknown_8457DB8 +_0811B050: + movs r4, 0 + adds r5, r6, 0 + adds r5, 0x58 +_0811B056: + lsls r0, r4, 24 + lsrs r0, 24 + adds r1, r5, 0 + bl sub_813CCAC + adds r5, 0xB + adds r4, 0x1 + cmp r4, 0x3 + ble _0811B056 + ldr r1, _0811B074 @ =gUnknown_8457D44 + adds r0, r7, 0 + bl sub_813CCC8 + b _0811B080 + .align 2, 0 +_0811B074: .4byte gUnknown_8457D44 +_0811B078: + ldr r1, _0811B084 @ =gUnknown_8457C48 +_0811B07A: + adds r0, r7, 0 + bl sub_8008FCC +_0811B080: + movs r2, 0x1 + b _0811B092 + .align 2, 0 +_0811B084: .4byte gUnknown_8457C48 +_0811B088: + ldr r1, _0811B0A0 @ =gUnknown_8457E0C + adds r0, r7, 0 + bl sub_8008FCC + movs r2, 0x2 +_0811B092: + adds r0, r2, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811B0A0: .4byte gUnknown_8457E0C + thumb_func_end sub_811AF6C + + thumb_func_start sub_811B0A4 +sub_811B0A4: @ 811B0A4 + push {lr} + adds r2, r0, 0 + ldr r0, _0811B0C4 @ =gUnknown_3003ED0 + ldrh r1, [r0, 0x2] + cmp r1, 0 + beq _0811B0C8 + cmp r1, 0x51 + beq _0811B0B8 + cmp r1, 0x52 + bne _0811B0C8 +_0811B0B8: + adds r0, r2, 0 + adds r0, 0x84 + strh r1, [r0] + movs r0, 0x1 + b _0811B0CA + .align 2, 0 +_0811B0C4: .4byte gUnknown_3003ED0 +_0811B0C8: + movs r0, 0 +_0811B0CA: + pop {r1} + bx r1 + thumb_func_end sub_811B0A4 + + thumb_func_start sub_811B0D0 +sub_811B0D0: @ 811B0D0 + push {lr} + movs r2, 0 + ldr r0, _0811B0EC @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _0811B0E4 + movs r2, 0x1 +_0811B0E4: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_0811B0EC: .4byte gUnknown_3005008 + thumb_func_end sub_811B0D0 + + thumb_func_start sub_811B0F0 +sub_811B0F0: @ 811B0F0 + push {r4-r6,lr} + movs r6, 0 + movs r5, 0 + ldr r0, _0811B138 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r6, r0 + bge _0811B130 +_0811B0FE: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0811B13C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x1E + bhi _0811B126 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0811B126 + adds r6, 0x1 +_0811B126: + adds r5, 0x1 + ldr r0, _0811B138 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r5, r0 + blt _0811B0FE +_0811B130: + cmp r6, 0x1 + bgt _0811B140 + movs r0, 0 + b _0811B142 + .align 2, 0 +_0811B138: .4byte gUnknown_2024029 +_0811B13C: .4byte gUnknown_2024284 +_0811B140: + movs r0, 0x1 +_0811B142: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811B0F0 + + thumb_func_start sub_811B148 +sub_811B148: @ 811B148 + movs r1, 0 + strh r1, [r0] + strh r1, [r0, 0x2] + str r1, [r0, 0x4] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + str r1, [r0, 0x14] + bx lr + thumb_func_end sub_811B148 + + thumb_func_start sub_811B15C +sub_811B15C: @ 811B15C + push {lr} + ldr r0, _0811B168 @ =gUnknown_203B06C + bl sub_811B148 + pop {r0} + bx r0 + .align 2, 0 +_0811B168: .4byte gUnknown_203B06C + thumb_func_end sub_811B15C + + thumb_func_start sub_811B16C +sub_811B16C: @ 811B16C + push {r4,r5,lr} + adds r5, r1, 0 + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _0811B1A8 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r5, 0xA] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + strh r0, [r5, 0xC] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [r5, 0x4] + ldrh r1, [r5, 0xA] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0811B1AC + movs r0, 0 + b _0811B1AE + .align 2, 0 +_0811B1A8: .4byte gUnknown_2024284 +_0811B1AC: + movs r0, 0x1 +_0811B1AE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811B16C + + thumb_func_start sub_811B1B4 +sub_811B1B4: @ 811B1B4 + push {r4,r5,lr} + adds r5, r1, 0 + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _0811B1E8 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r5, 0xE] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + strh r0, [r5, 0x10] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [r5, 0x14] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811B1E8: .4byte gUnknown_2024284 + thumb_func_end sub_811B1B4 + + thumb_func_start sub_811B1EC +sub_811B1EC: @ 811B1EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r1, 24 + movs r2, 0 + mov r8, r2 + cmp r1, 0 + bne _0811B20A + ldrh r7, [r0, 0xA] + ldr r6, [r0, 0x4] + b _0811B20E +_0811B202: + lsls r0, r5, 16 + lsrs r0, 16 + mov r8, r0 + b _0811B242 +_0811B20A: + ldrh r7, [r0, 0xE] + ldr r6, [r0, 0x14] +_0811B20E: + movs r5, 0 + b _0811B23A +_0811B212: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0811B250 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + cmp r0, r6 + bne _0811B238 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r7 + beq _0811B202 +_0811B238: + adds r5, 0x1 +_0811B23A: + ldr r0, _0811B254 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r5, r0 + blt _0811B212 +_0811B242: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811B250: .4byte gUnknown_2024284 +_0811B254: .4byte gUnknown_2024029 + thumb_func_end sub_811B1EC + + thumb_func_start sub_811B258 +sub_811B258: @ 811B258 + push {r4,lr} + adds r4, r0, 0 + bl sub_811A3F8 + bl sub_806994C + bl sub_80696F0 + ldr r1, _0811B290 @ =gUnknown_203B058 + movs r0, 0 + strb r0, [r1] + cmp r4, 0 + beq _0811B288 + ldr r2, _0811B294 @ =gUnknown_203B06C + ldrh r0, [r2, 0x2] + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0xC] + bl sub_80FAFA0 + movs r0, 0x40 + movs r1, 0 + movs r2, 0 + bl sub_80FB008 +_0811B288: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811B290: .4byte gUnknown_203B058 +_0811B294: .4byte gUnknown_203B06C + thumb_func_end sub_811B258 + + thumb_func_start sub_811B298 +sub_811B298: @ 811B298 + push {lr} + bl sub_8069940 + bl sub_80695B4 + pop {r0} + bx r0 + thumb_func_end sub_811B298 + + thumb_func_start sub_811B2A8 +sub_811B2A8: @ 811B2A8 + push {r4,lr} + movs r4, 0x80 + ldr r3, _0811B2D4 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r0, r1, r3 + ldrb r2, [r0, 0x13] + lsls r2, 3 + orrs r2, r4 + adds r3, 0x4 + adds r1, r3 + ldr r0, [r1] + movs r1, 0x7 + ands r0, r1 + orrs r0, r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811B2D4: .4byte gUnknown_202273C + thumb_func_end sub_811B2A8 + + thumb_func_start sub_811B2D8 +sub_811B2D8: @ 811B2D8 + push {r4,lr} + movs r3, 0x80 + movs r2, 0 + ldr r4, [r0, 0xC] +_0811B2E0: + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r1, r4, r0 + ldrb r0, [r1, 0x18] + lsls r0, 31 + cmp r0, 0 + beq _0811B308 + ldrb r0, [r1, 0xB] + lsls r0, 31 + lsrs r0, 31 + lsls r0, 3 + orrs r3, r0 + ldrb r1, [r1, 0x2] + movs r0, 0x7 + ands r0, r1 + orrs r3, r0 + lsls r0, r3, 24 + lsrs r3, r0, 24 + b _0811B312 +_0811B308: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0811B2E0 +_0811B312: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811B2D8 + + thumb_func_start sub_811B31C +sub_811B31C: @ 811B31C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 5 + ldr r0, _0811B4B0 @ =gUnknown_2039624 + adds r1, r0 + mov r8, r1 + bl sub_813CC90 + mov r6, r9 + adds r6, 0xAC + bl sub_80447F0 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + muls r1, r0 + ldr r0, _0811B4B4 @ =gUnknown_823E558 + adds r1, r0 + adds r0, r6, 0 + bl sub_8008D84 + movs r0, 0 + adds r1, r6, 0 + bl sub_813CCAC + mov r1, r8 + adds r1, 0x30 + movs r0, 0x1 + bl sub_813CCAC + movs r4, 0xB0 + lsls r4, 1 + add r4, r9 + ldr r1, _0811B4B8 @ =gUnknown_84594B0 + mov r2, r8 + ldrb r0, [r2, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008D84 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_813CCAC + mov r5, r9 + adds r5, 0xCA + mov r0, r8 + ldrh r1, [r0, 0xC] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x3 + adds r1, r5, 0 + bl sub_813CCAC + movs r2, 0xD9 + add r2, r9 + mov r10, r2 + mov r0, r8 + ldrh r1, [r0, 0x10] + mov r0, r10 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + mov r4, r9 + adds r4, 0xE8 + mov r2, r8 + ldrh r1, [r2, 0x12] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + movs r0, 0x4 + mov r1, r10 + bl sub_813CCAC + movs r0, 0x5 + adds r1, r4, 0 + bl sub_813CCAC + movs r4, 0xC8 + lsls r4, 1 + add r4, r9 + ldr r1, _0811B4BC @ =gUnknown_84594C4 + adds r0, r4, 0 + bl sub_813CCC8 + ldr r0, _0811B4C0 @ =gUnknown_2021D18 + adds r1, r4, 0 + bl sub_8008D84 + mov r0, r8 + ldrh r1, [r0, 0x14] + ldr r4, _0811B4C4 @ =0x0000270f + cmp r1, r4 + ble _0811B40A + adds r1, r4, 0 +_0811B40A: + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + movs r0, 0 + adds r1, r6, 0 + bl sub_813CCAC + mov r2, r8 + ldrh r1, [r2, 0x16] + cmp r1, r4 + ble _0811B426 + adds r1, r4, 0 +_0811B426: + mov r4, r9 + adds r4, 0xBB + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_813CCAC + mov r0, r8 + ldrh r1, [r0, 0x20] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x5 + bl sub_8008E78 + movs r0, 0x3 + adds r1, r5, 0 + bl sub_813CCAC + movs r7, 0 + movs r6, 0x80 + lsls r6, 19 + mov r5, r8 + adds r5, 0x28 + mov r4, r10 +_0811B45E: + ldrh r1, [r5] + adds r0, r4, 0 + bl sub_80BD850 + lsrs r0, r6, 24 + adds r1, r4, 0 + bl sub_813CCAC + movs r2, 0x80 + lsls r2, 17 + adds r6, r2 + adds r5, 0x2 + adds r4, 0xF + adds r7, 0x1 + cmp r7, 0x3 + ble _0811B45E + movs r4, 0xC8 + lsls r4, 1 + add r4, r9 + ldr r1, _0811B4C8 @ =gUnknown_8459504 + adds r0, r4, 0 + bl sub_813CCC8 + ldr r5, _0811B4C0 @ =gUnknown_2021D18 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 + ldr r0, [sp] + cmp r0, 0x1 + bne _0811B4D0 + ldr r1, _0811B4CC @ =gUnknown_8459588 + adds r0, r4, 0 + bl sub_813CCC8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 + b _0811B4F0 + .align 2, 0 +_0811B4B0: .4byte gUnknown_2039624 +_0811B4B4: .4byte gUnknown_823E558 +_0811B4B8: .4byte gUnknown_84594B0 +_0811B4BC: .4byte gUnknown_84594C4 +_0811B4C0: .4byte gUnknown_2021D18 +_0811B4C4: .4byte 0x0000270f +_0811B4C8: .4byte gUnknown_8459504 +_0811B4CC: .4byte gUnknown_8459588 +_0811B4D0: + ldr r2, [sp] + cmp r2, 0 + bne _0811B4F0 + ldr r0, _0811B500 @ =gUnknown_8459580 + mov r2, r8 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl sub_813CCC8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 +_0811B4F0: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811B500: .4byte gUnknown_8459580 + thumb_func_end sub_811B31C + + thumb_func_start sub_811B504 +sub_811B504: @ 811B504 + push {lr} + ldr r0, _0811B518 @ =gUnknown_2037078 + ldrb r0, [r0, 0x3] + cmp r0, 0x2 + beq _0811B512 + cmp r0, 0 + bne _0811B51C +_0811B512: + movs r0, 0x1 + b _0811B51E + .align 2, 0 +_0811B518: .4byte gUnknown_2037078 +_0811B51C: + movs r0, 0 +_0811B51E: + pop {r1} + bx r1 + thumb_func_end sub_811B504 + + thumb_func_start sub_811B524 +sub_811B524: @ 811B524 + ldr r3, _0811B538 @ =gUnknown_84570D8 + movs r2, 0x7 + ands r2, r1 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + adds r2, r1 + adds r2, r3 + ldrb r0, [r2] + bx lr + .align 2, 0 +_0811B538: .4byte gUnknown_84570D8 + thumb_func_end sub_811B524 + + thumb_func_start sub_811B53C +sub_811B53C: @ 811B53C + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r4, _0811B584 @ =gUnknown_84570EC + mov r8, r4 + lsls r0, 2 + adds r4, r0, r4 + movs r6, 0 + ldrsh r5, [r4, r6] + ldr r6, _0811B588 @ =gUnknown_845710C + lsls r1, 1 + adds r4, r1, r6 + ldrb r4, [r4] + lsls r4, 24 + asrs r4, 24 + adds r5, r4 + adds r5, 0x7 + str r5, [r2] + movs r2, 0x2 + add r8, r2 + add r0, r8 + movs r4, 0 + ldrsh r0, [r0, r4] + adds r6, 0x1 + adds r1, r6 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + adds r0, r1 + adds r0, 0x7 + str r0, [r3] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811B584: .4byte gUnknown_84570EC +_0811B588: .4byte gUnknown_845710C + thumb_func_end sub_811B53C + + thumb_func_start sub_811B58C +sub_811B58C: @ 811B58C + push {r4-r7,lr} + mov r12, r3 + ldr r7, _0811B5CC @ =gUnknown_84570EC + lsls r5, r0, 2 + adds r0, r5, r7 + movs r4, 0 + ldrsh r3, [r0, r4] + ldr r6, _0811B5D0 @ =gUnknown_845710C + lsls r4, r1, 1 + adds r0, r4, r6 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r3, r0 + adds r3, 0x7 + cmp r3, r2 + bne _0811B5D4 + adds r0, r7, 0x2 + adds r0, r5, r0 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r6, 0x1 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r0 + adds r1, 0x7 + cmp r1, r12 + bne _0811B5D4 + movs r0, 0x1 + b _0811B5D6 + .align 2, 0 +_0811B5CC: .4byte gUnknown_84570EC +_0811B5D0: .4byte gUnknown_845710C +_0811B5D4: + movs r0, 0 +_0811B5D6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811B58C + + thumb_func_start sub_811B5DC +sub_811B5DC: @ 811B5DC + push {lr} + adds r0, 0x63 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_811B5DC + + thumb_func_start sub_811B5F0 +sub_811B5F0: @ 811B5F0 + push {lr} + adds r0, 0x63 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E680 + pop {r0} + bx r0 + thumb_func_end sub_811B5F0 + + thumb_func_start sub_811B600 +sub_811B600: @ 811B600 + push {lr} + adds r0, 0x63 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6A8 + pop {r0} + bx r0 + thumb_func_end sub_811B600 + + thumb_func_start sub_811B610 +sub_811B610: @ 811B610 + push {lr} + ldr r2, _0811B628 @ =0x00004010 + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_0811B628: .4byte 0x00004010 + thumb_func_end sub_811B610 + + thumb_func_start sub_811B62C +sub_811B62C: @ 811B62C + push {lr} + ldr r1, _0811B644 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B648 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805E898 + pop {r0} + bx r0 + .align 2, 0 +_0811B644: .4byte gUnknown_8457120 +_0811B648: .4byte gUnknown_3005008 + thumb_func_end sub_811B62C + + thumb_func_start sub_811B64C +sub_811B64C: @ 811B64C + push {lr} + ldr r1, _0811B664 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B668 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805E4C8 + pop {r0} + bx r0 + .align 2, 0 +_0811B664: .4byte gUnknown_8457120 +_0811B668: .4byte gUnknown_3005008 + thumb_func_end sub_811B64C + + thumb_func_start sub_811B66C +sub_811B66C: @ 811B66C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + ldr r1, _0811B6B8 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B6BC @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0811B6D0 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0811B6C0 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + bne _0811B6D0 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_8063CA4 + lsls r0, 24 + cmp r0, 0 + bne _0811B6C4 + movs r0, 0x1 + b _0811B6D2 + .align 2, 0 +_0811B6B8: .4byte gUnknown_8457120 +_0811B6BC: .4byte gUnknown_3005008 +_0811B6C0: .4byte gUnknown_2036E38 +_0811B6C4: + ldr r0, _0811B6DC @ =gUnknown_8457138 + ldr r1, _0811B6E0 @ =0x00000183 + ldr r2, _0811B6E4 @ =gUnknown_8457174 + movs r3, 0x1 + bl AGBAssert +_0811B6D0: + movs r0, 0 +_0811B6D2: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811B6DC: .4byte gUnknown_8457138 +_0811B6E0: .4byte 0x00000183 +_0811B6E4: .4byte gUnknown_8457174 + thumb_func_end sub_811B66C + + thumb_func_start sub_811B6E8 +sub_811B6E8: @ 811B6E8 + push {r4,lr} + sub sp, 0x4 + ldr r1, _0811B724 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B728 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _0811B748 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0811B72C @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + bne _0811B730 + movs r0, 0 + b _0811B74A + .align 2, 0 +_0811B724: .4byte gUnknown_8457120 +_0811B728: .4byte gUnknown_3005008 +_0811B72C: .4byte gUnknown_2036E38 +_0811B730: + bl sub_8069958 + lsls r0, 24 + cmp r0, 0 + bne _0811B742 + adds r0, r4, 0 + bl sub_80689F4 + b _0811B748 +_0811B742: + adds r0, r4, 0 + bl sub_80688E4 +_0811B748: + movs r0, 0x1 +_0811B74A: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811B6E8 + + thumb_func_start sub_811B754 +sub_811B754: @ 811B754 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0811B798 @ =gUnknown_203B088 + movs r1, 0 + str r1, [r0] + ldr r0, _0811B79C @ =gUnknown_203B084 + str r4, [r0] + cmp r4, 0 + bne _0811B774 + ldr r0, _0811B7A0 @ =gUnknown_8457138 + movs r1, 0xDD + lsls r1, 1 + ldr r2, _0811B7A4 @ =gUnknown_8457178 + movs r3, 0x1 + bl AGBAssert +_0811B774: + movs r1, 0 + adds r0, r4, 0 + movs r2, 0x7 +_0811B77A: + strb r1, [r0] + strb r1, [r0, 0x1] + strb r1, [r0, 0x2] + strb r1, [r0, 0x3] + adds r0, 0x4 + subs r2, 0x1 + cmp r2, 0 + bge _0811B77A + bl sub_811BA18 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811B798: .4byte gUnknown_203B088 +_0811B79C: .4byte gUnknown_203B084 +_0811B7A0: .4byte gUnknown_8457138 +_0811B7A4: .4byte gUnknown_8457178 + thumb_func_end sub_811B754 + + thumb_func_start sub_811B7A8 +sub_811B7A8: @ 811B7A8 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0 + beq _0811B7BC + cmp r0, 0x1 + beq _0811B7DC + b _0811B7FA +_0811B7BC: + ldr r1, _0811B7D8 @ =gUnknown_845718D + adds r0, r4, 0 + bl sub_811B66C + cmp r0, 0x1 + bne _0811B7FA + adds r0, r4, 0 + bl sub_811B5F0 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _0811B7FA + .align 2, 0 +_0811B7D8: .4byte gUnknown_845718D +_0811B7DC: + adds r0, r4, 0 + bl sub_811B6E8 + cmp r0, 0 + beq _0811B7FA + adds r0, r4, 0 + bl sub_811B64C + adds r0, r4, 0 + bl sub_811B5F0 + movs r0, 0 + strb r0, [r5] + movs r0, 0x1 + b _0811B7FC +_0811B7FA: + movs r0, 0 +_0811B7FC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811B7A8 + + thumb_func_start sub_811B804 +sub_811B804: @ 811B804 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + movs r0, 0 + ldrsb r0, [r6, r0] + cmp r0, 0x2 + beq _0811B8A0 + cmp r0, 0x2 + bgt _0811B820 + cmp r0, 0 + beq _0811B826 + b _0811B8B2 +_0811B820: + cmp r0, 0x3 + beq _0811B888 + b _0811B8B2 +_0811B826: + bl sub_811B504 + cmp r0, 0 + beq _0811B8B2 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0 + ldrsh r3, [r4, r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811B8B2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C568 + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0 + ldrsh r3, [r4, r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811B8B2 + ldrb r1, [r7, 0x1] + adds r0, r5, 0 + bl sub_811B610 + adds r0, r5, 0 + bl sub_811B62C + adds r0, r5, 0 + bl sub_811B600 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_0811B888: + ldr r1, _0811B89C @ =gUnknown_845718F + adds r0, r5, 0 + bl sub_811B66C + cmp r0, 0x1 + bne _0811B8B2 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _0811B8B2 + .align 2, 0 +_0811B89C: .4byte gUnknown_845718F +_0811B8A0: + adds r0, r5, 0 + bl sub_811B6E8 + cmp r0, 0 + beq _0811B8B2 + movs r0, 0 + strb r0, [r6] + movs r0, 0x1 + b _0811B8B4 +_0811B8B2: + movs r0, 0 +_0811B8B4: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811B804 + + thumb_func_start sub_811B8BC +sub_811B8BC: @ 811B8BC + push {r4-r6,lr} + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, _0811B8F4 @ =gUnknown_203B084 + lsls r0, 2 + ldr r1, [r1] + adds r4, r1, r0 + cmp r1, 0 + bne _0811B8DA + ldr r0, _0811B8F8 @ =gUnknown_8457138 + ldr r1, _0811B8FC @ =0x00000231 + ldr r2, _0811B900 @ =gUnknown_8457178 + movs r3, 0x1 + bl AGBAssert +_0811B8DA: + movs r0, 0x1 + strb r0, [r4, 0x3] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_811B524 + strb r0, [r4, 0x1] + ldrb r0, [r4] + cmp r0, 0 + beq _0811B904 + movs r0, 0 + b _0811B906 + .align 2, 0 +_0811B8F4: .4byte gUnknown_203B084 +_0811B8F8: .4byte gUnknown_8457138 +_0811B8FC: .4byte 0x00000231 +_0811B900: .4byte gUnknown_8457178 +_0811B904: + movs r0, 0x1 +_0811B906: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811B8BC + + thumb_func_start sub_811B90C +sub_811B90C: @ 811B90C + push {r4,lr} + ldr r1, _0811B934 @ =gUnknown_203B084 + lsls r0, 2 + ldr r1, [r1] + adds r4, r1, r0 + cmp r1, 0 + bne _0811B926 + ldr r0, _0811B938 @ =gUnknown_8457138 + ldr r1, _0811B93C @ =0x00000241 + ldr r2, _0811B940 @ =gUnknown_8457178 + movs r3, 0x1 + bl AGBAssert +_0811B926: + movs r0, 0x2 + strb r0, [r4, 0x3] + ldrb r0, [r4] + cmp r0, 0x1 + beq _0811B944 + movs r0, 0 + b _0811B946 + .align 2, 0 +_0811B934: .4byte gUnknown_203B084 +_0811B938: .4byte gUnknown_8457138 +_0811B93C: .4byte 0x00000241 +_0811B940: .4byte gUnknown_8457178 +_0811B944: + movs r0, 0x1 +_0811B946: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811B90C + + thumb_func_start sub_811B94C +sub_811B94C: @ 811B94C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r4] + cmp r1, 0x1 + beq _0811B9AE + cmp r1, 0x1 + bgt _0811B962 + cmp r1, 0 + beq _0811B96C + b _0811B9CE +_0811B962: + cmp r1, 0x2 + beq _0811B978 + cmp r1, 0x3 + beq _0811B9BC + b _0811B9CE +_0811B96C: + ldrb r0, [r4, 0x3] + cmp r0, 0x1 + bne _0811B9CE + movs r0, 0x2 + strb r0, [r4] + strb r1, [r4, 0x2] +_0811B978: + adds r0, r5, 0 + movs r1, 0 + bl sub_811BBC8 + adds r1, r0, 0 + cmp r1, 0 + bne _0811B99E + ldrb r0, [r4, 0x3] + cmp r0, 0x2 + bne _0811B99E + strb r1, [r4] + strb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_811B64C + adds r0, r5, 0 + bl sub_811B5F0 + b _0811B9CE +_0811B99E: + adds r0, r4, 0x2 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_811B804 + cmp r0, 0x1 + bne _0811B9CE + b _0811B9CC +_0811B9AE: + ldrb r0, [r4, 0x3] + cmp r0, 0x2 + bne _0811B9CE + movs r1, 0 + movs r0, 0x3 + strb r0, [r4] + strb r1, [r4, 0x2] +_0811B9BC: + adds r0, r4, 0x2 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_811B7A8 + cmp r0, 0x1 + bne _0811B9CE + movs r0, 0 +_0811B9CC: + strb r0, [r4] +_0811B9CE: + movs r0, 0 + strb r0, [r4, 0x3] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811B94C + + thumb_func_start sub_811B9D8 +sub_811B9D8: @ 811B9D8 + push {r4,r5,lr} + ldr r5, _0811BA08 @ =gUnknown_203B084 + ldr r0, [r5] + cmp r0, 0 + bne _0811B9EE + ldr r0, _0811BA0C @ =gUnknown_8457138 + ldr r1, _0811BA10 @ =0x00000283 + ldr r2, _0811BA14 @ =gUnknown_8457178 + movs r3, 0x1 + bl AGBAssert +_0811B9EE: + movs r4, 0 +_0811B9F0: + lsls r0, r4, 2 + ldr r1, [r5] + adds r1, r0 + adds r0, r4, 0 + bl sub_811B94C + adds r4, 0x1 + cmp r4, 0x7 + ble _0811B9F0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BA08: .4byte gUnknown_203B084 +_0811BA0C: .4byte gUnknown_8457138 +_0811BA10: .4byte 0x00000283 +_0811BA14: .4byte gUnknown_8457178 + thumb_func_end sub_811B9D8 + + thumb_func_start sub_811BA18 +sub_811BA18: @ 811BA18 + push {r4,lr} + ldr r4, _0811BA38 @ =sub_811B9D8 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811BA3C + adds r0, r4, 0 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + b _0811BA4A + .align 2, 0 +_0811BA38: .4byte sub_811B9D8 +_0811BA3C: + ldr r0, _0811BA50 @ =gUnknown_8457138 + ldr r1, _0811BA54 @ =0x0000028f + ldr r2, _0811BA58 @ =gUnknown_8457174 + movs r3, 0x1 + bl AGBAssert + movs r0, 0x10 +_0811BA4A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811BA50: .4byte gUnknown_8457138 +_0811BA54: .4byte 0x0000028f +_0811BA58: .4byte gUnknown_8457174 + thumb_func_end sub_811BA18 + + thumb_func_start sub_811BA5C +sub_811BA5C: @ 811BA5C + push {lr} + ldr r0, _0811BA74 @ =sub_811B9D8 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bhi _0811BA70 + bl sub_8077508 +_0811BA70: + pop {r0} + bx r0 + .align 2, 0 +_0811BA74: .4byte sub_811B9D8 + thumb_func_end sub_811BA5C + + thumb_func_start sub_811BA78 +sub_811BA78: @ 811BA78 + push {r4,lr} + movs r4, 0 +_0811BA7C: + adds r0, r4, 0 + bl sub_811B5DC + cmp r0, 0 + bne _0811BA92 + adds r0, r4, 0 + bl sub_811B64C + adds r0, r4, 0 + bl sub_811B5F0 +_0811BA92: + adds r4, 0x1 + cmp r4, 0x7 + ble _0811BA7C + ldr r1, _0811BAA8 @ =gUnknown_203B084 + movs r0, 0 + str r0, [r1] + bl sub_811BA5C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811BAA8: .4byte gUnknown_203B084 + thumb_func_end sub_811BA78 + + thumb_func_start sub_811BAAC +sub_811BAAC: @ 811BAAC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + str r0, [sp, 0x8] + mov r9, r1 + movs r7, 0 + mov r0, r9 + lsls r0, 2 + mov r8, r0 + ldr r0, _0811BB38 @ =gUnknown_84570EC + mov r2, r8 + adds r1, r2, r0 + ldrh r1, [r1] + mov r2, sp + strh r1, [r2, 0xC] + adds r0, 0x2 + add r0, r8 + ldrh r0, [r0] + mov r10, r0 + ldr r6, _0811BB3C @ =gUnknown_845710C +_0811BADA: + mov r5, r8 + add r5, r9 + adds r5, r7 + adds r4, r5, 0 + subs r4, 0x38 + lsls r4, 24 + lsrs r4, 24 + movs r2, 0 + ldrsb r2, [r6, r2] + mov r0, sp + ldrh r0, [r0, 0xC] + adds r2, r0, r2 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x1 + ldrsb r3, [r6, r3] + add r3, r10 + lsls r3, 16 + asrs r3, 16 + movs r0, 0x3 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x19 + adds r1, r4, 0 + bl sub_805E9F8 + ldr r1, [sp, 0x8] + adds r5, r1, r5 + strb r0, [r5] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8069124 + adds r6, 0x2 + adds r7, 0x1 + cmp r7, 0x4 + ble _0811BADA + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811BB38: .4byte gUnknown_84570EC +_0811BB3C: .4byte gUnknown_845710C + thumb_func_end sub_811BAAC + + thumb_func_start sub_811BB40 +sub_811BB40: @ 811BB40 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r6, _0811BB64 @ =gUnknown_202063C +_0811BB48: + adds r0, r5, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl sub_8007280 + adds r4, 0x1 + cmp r4, 0x27 + ble _0811BB48 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811BB64: .4byte gUnknown_202063C + thumb_func_end sub_811BB40 + + thumb_func_start sub_811BB68 +sub_811BB68: @ 811BB68 + push {r4-r7,lr} + sub sp, 0x8 + movs r5, 0 + add r7, sp, 0x4 +_0811BB70: + movs r4, 0 + adds r6, r5, 0x1 +_0811BB74: + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r7, 0 + bl sub_811B53C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0 + bl sub_8059024 + adds r4, 0x1 + cmp r4, 0x4 + ble _0811BB74 + adds r5, r6, 0 + cmp r5, 0x7 + ble _0811BB70 + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811BB68 + + thumb_func_start sub_811BBA0 +sub_811BBA0: @ 811BBA0 + push {lr} + adds r1, r0, 0 + cmp r1, 0 + beq _0811BBB4 + ldr r0, _0811BBB0 @ =gUnknown_845711B + adds r0, r1, r0 + ldrb r0, [r0] + b _0811BBC4 + .align 2, 0 +_0811BBB0: .4byte gUnknown_845711B +_0811BBB4: + ldrb r1, [r2, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + beq _0811BBC2 + movs r0, 0x4 + b _0811BBC4 +_0811BBC2: + movs r0, 0x1 +_0811BBC4: + pop {r1} + bx r1 + thumb_func_end sub_811BBA0 + + thumb_func_start sub_811BBC8 +sub_811BBC8: @ 811BBC8 + push {lr} + adds r2, r0, 0 + lsls r0, r2, 2 + adds r0, r2 + adds r0, r1 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + bl sub_806916C + pop {r1} + bx r1 + thumb_func_end sub_811BBC8 + + thumb_func_start sub_811BBE0 +sub_811BBE0: @ 811BBE0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r5, r0, 0 + adds r6, r1, 0 + mov r9, r3 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r0, r5, 2 + adds r0, r5 + adds r7, r0, r6 + adds r0, r5, 0 + bl sub_811BBC8 + cmp r0, 0x1 + bne _0811BC1E + adds r4, r7, 0 + subs r4, 0x38 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_8069124 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80691A4 +_0811BC1E: + adds r0, r7, 0 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + bl sub_8069094 + adds r0, r6, 0 + adds r1, r5, 0 + mov r2, r9 + bl sub_811BBA0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_811C008 + add r3, sp, 0x4 + adds r0, r5, 0 + adds r1, r6, 0 + mov r2, sp + bl sub_811B53C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0x1 + bl sub_8059024 + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811BBE0 + + thumb_func_start sub_811BC68 +sub_811BC68: @ 811BC68 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r4, 2 + adds r0, r4 + adds r0, r5 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_80691A4 + add r3, sp, 0x4 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_811B53C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0 + bl sub_8059024 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811BC68 + + thumb_func_start sub_811BCA0 +sub_811BCA0: @ 811BCA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r7, r0, 0 + mov r8, r1 + mov r6, sp + adds r6, 0x2 + mov r0, sp + adds r1, r6, 0 + bl sub_805C538 + add r4, sp, 0x4 + mov r5, sp + adds r5, 0x6 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805C568 + lsls r0, r7, 2 + adds r0, r7 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + bl sub_806916C + mov r10, r6 + mov r9, r4 + adds r6, r5, 0 + cmp r0, 0x1 + bne _0811BD2C + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + mov r0, r10 + movs r1, 0 + ldrsh r3, [r0, r1] + adds r0, r7, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811BD98 + movs r0, 0 + ldrsh r2, [r4, r0] + movs r1, 0 + ldrsh r3, [r6, r1] + adds r0, r7, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811BD98 + mov r2, r8 + ldrb r0, [r2, 0xB] + lsls r0, 31 + lsrs r0, 31 + ldrb r1, [r2, 0x2] + bl sub_811B524 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r7, 0 + movs r1, 0 + mov r3, r8 + bl sub_811BBE0 +_0811BD2C: + movs r5, 0x1 + mov r4, r8 + adds r4, 0x4 +_0811BD32: + ldrb r0, [r4] + cmp r0, 0 + bne _0811BD42 + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_811BC68 + b _0811BD90 +_0811BD42: + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + mov r0, r10 + movs r1, 0 + ldrsh r3, [r0, r1] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_811B58C + cmp r0, 0 + bne _0811BD90 + mov r0, r9 + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0 + ldrsh r3, [r6, r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_811B58C + cmp r0, 0 + bne _0811BD90 + ldrb r2, [r4] + lsrs r0, r2, 3 + movs r1, 0x1 + ands r0, r1 + movs r1, 0x7 + ands r1, r2 + bl sub_811B524 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r7, 0 + adds r1, r5, 0 + mov r3, r8 + bl sub_811BBE0 +_0811BD90: + adds r4, 0x1 + adds r5, 0x1 + cmp r5, 0x4 + ble _0811BD32 +_0811BD98: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811BCA0 + + thumb_func_start sub_811BDA8 +sub_811BDA8: @ 811BDA8 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r0, [r4, 0xA] + lsls r0, 25 + lsrs r0, 25 + subs r0, 0x40 + cmp r0, 0x14 + bhi _0811BE4C + lsls r0, 2 + ldr r1, _0811BDC4 @ =_0811BDC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811BDC4: .4byte _0811BDC8 + .align 2, 0 +_0811BDC8: + .4byte _0811BE1C + .4byte _0811BE3C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE3C + .4byte _0811BE3C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE3C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE3C + .4byte _0811BE3C + .4byte _0811BE3C + .4byte _0811BE1C +_0811BE1C: + ldrb r1, [r4, 0xB] + lsls r1, 31 + lsrs r1, 31 + ldrb r2, [r4, 0x2] + adds r0, r5, 0 + bl sub_811B8BC + movs r4, 0 +_0811BE2C: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BC68 + adds r4, 0x1 + cmp r4, 0x4 + bls _0811BE2C + b _0811BE58 +_0811BE3C: + adds r0, r5, 0 + bl sub_811B90C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BCA0 + b _0811BE58 +_0811BE4C: + ldr r0, _0811BE60 @ =gUnknown_8457138 + ldr r1, _0811BE64 @ =0x000003d3 + ldr r2, _0811BE68 @ =gUnknown_8457174 + movs r3, 0x1 + bl AGBAssert +_0811BE58: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BE60: .4byte gUnknown_8457138 +_0811BE64: .4byte 0x000003d3 +_0811BE68: .4byte gUnknown_8457174 + thumb_func_end sub_811BDA8 + + thumb_func_start sub_811BE6C +sub_811BE6C: @ 811BE6C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_811B90C + movs r4, 0 +_0811BE76: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BC68 + adds r4, 0x1 + cmp r4, 0x4 + ble _0811BE76 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811BE6C + + thumb_func_start sub_811BE8C +sub_811BE8C: @ 811BE8C + push {r4,r5,lr} + ldr r2, _0811BEAC @ =gUnknown_203B088 + movs r1, 0 + str r1, [r2] + movs r5, 0 + ldr r4, [r0] +_0811BE98: + ldrb r0, [r4, 0x1A] + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x1 + bne _0811BEB0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BDA8 + b _0811BEBC + .align 2, 0 +_0811BEAC: .4byte gUnknown_203B088 +_0811BEB0: + cmp r1, 0x2 + bne _0811BEBC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BE6C +_0811BEBC: + adds r4, 0x20 + adds r5, 0x1 + cmp r5, 0x7 + ble _0811BE98 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811BE8C + + thumb_func_start sub_811BECC +sub_811BECC: @ 811BECC + ldr r1, _0811BED8 @ =gUnknown_203B088 + movs r0, 0x96 + lsls r0, 1 + str r0, [r1] + bx lr + .align 2, 0 +_0811BED8: .4byte gUnknown_203B088 + thumb_func_end sub_811BECC + + thumb_func_start sub_811BEDC +sub_811BEDC: @ 811BEDC + push {lr} + adds r2, r0, 0 + ldr r0, _0811BEFC @ =gUnknown_203B088 + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + movs r0, 0x96 + lsls r0, 1 + cmp r1, r0 + bls _0811BEF6 + adds r0, r2, 0 + bl sub_811BE8C +_0811BEF6: + pop {r0} + bx r0 + .align 2, 0 +_0811BEFC: .4byte gUnknown_203B088 + thumb_func_end sub_811BEDC + + thumb_func_start sub_811BF00 +sub_811BF00: @ 811BF00 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r5, r0, 0 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + bl sub_811B504 + cmp r0, 0 + bne _0811BF48 + b _0811BFEE +_0811BF1C: + ldr r4, _0811BF44 @ =gUnknown_8457116 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r2, [r0] + adds r0, r6, 0 + ldr r1, [sp, 0xC] + bl sub_811C008 + ldr r0, [sp, 0x4] + strh r6, [r0] + mov r1, sp + ldrh r2, [r1, 0xC] + ldr r1, [sp, 0x8] + strh r2, [r1] + movs r0, 0x1 + b _0811BFF0 + .align 2, 0 +_0811BF44: .4byte gUnknown_8457116 +_0811BF48: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _0811C000 @ =gUnknown_84570EC + adds r7, r5, 0 + movs r1, 0 + mov r10, r1 + adds r2, r0, 0x2 + str r2, [sp, 0x10] + str r0, [sp, 0x14] +_0811BF66: + movs r6, 0 + ldr r4, [sp, 0x14] + movs r0, 0 + ldrsh r4, [r4, r0] + mov r9, r4 + ldr r1, [sp, 0x10] + mov r8, r1 + ldr r5, _0811C004 @ =gUnknown_845710C +_0811BF76: + mov r2, r10 + adds r3, r2, r6 + mov r0, sp + movs r4, 0 + ldrsh r1, [r0, r4] + movs r0, 0 + ldrsb r0, [r5, r0] + add r0, r9 + adds r0, 0x7 + cmp r1, r0 + bne _0811BFCA + mov r1, sp + movs r2, 0x2 + ldrsh r0, [r1, r2] + mov r4, r8 + movs r2, 0 + ldrsh r1, [r4, r2] + movs r2, 0x1 + ldrsb r2, [r5, r2] + adds r1, r2 + adds r1, 0x7 + cmp r0, r1 + bne _0811BFCA + adds r0, r3, 0 + subs r0, 0x38 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_806916C + cmp r0, 0 + bne _0811BFCA + adds r0, r4, 0 + bl sub_8069294 + cmp r0, 0 + bne _0811BFCA + ldrb r1, [r7, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0811BF1C +_0811BFCA: + adds r5, 0x2 + adds r6, 0x1 + cmp r6, 0x4 + ble _0811BF76 + adds r7, 0x20 + movs r4, 0x5 + add r10, r4 + ldr r0, [sp, 0x10] + adds r0, 0x4 + str r0, [sp, 0x10] + ldr r1, [sp, 0x14] + adds r1, 0x4 + str r1, [sp, 0x14] + ldr r2, [sp, 0xC] + adds r2, 0x1 + str r2, [sp, 0xC] + cmp r2, 0x7 + ble _0811BF66 +_0811BFEE: + movs r0, 0 +_0811BFF0: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811C000: .4byte gUnknown_84570EC +_0811C004: .4byte gUnknown_845710C + thumb_func_end sub_811BF00 + + thumb_func_start sub_811C008 +sub_811C008: @ 811C008 + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + lsls r0, r3, 2 + adds r0, r3 + subs r0, 0x38 + adds r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8069058 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811C008 + + thumb_func_start sub_811C028 +sub_811C028: @ 811C028 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r3, r4, 5 + adds r3, r2 + adds r2, r3, 0 + bl sub_811BBA0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811C008 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811C028 + + thumb_func_start sub_811C04C +sub_811C04C: @ 811C04C + push {r4-r7,lr} + movs r0, 0xA + bl sub_81173C0 + movs r4, 0 + movs r7, 0x64 + ldr r6, _0811C0CC @ =gUnknown_2024284 + ldr r5, _0811C0D0 @ =gUnknown_202402C +_0811C05C: + ldr r0, _0811C0D4 @ =gUnknown_203B0D4 + adds r0, r4, r0 + ldrb r0, [r0] + subs r0, 0x1 + adds r1, r0, 0 + muls r1, r7 + adds r1, r6 + adds r0, r5, 0 + movs r2, 0x64 + bl memcpy + adds r5, 0x64 + adds r4, 0x1 + cmp r4, 0x1 + ble _0811C05C + ldr r4, _0811C0CC @ =gUnknown_2024284 + movs r0, 0xFA + lsls r0, 1 + adds r5, r4, r0 +_0811C082: + adds r0, r4, 0 + bl sub_803D994 + adds r4, 0x64 + cmp r4, r5 + ble _0811C082 + ldr r4, _0811C0CC @ =gUnknown_2024284 + movs r5, 0 + adds r6, r4, 0 + adds r6, 0x64 +_0811C096: + ldr r1, _0811C0D0 @ =gUnknown_202402C + adds r1, r5, r1 + adds r0, r4, 0 + movs r2, 0x64 + bl memcpy + adds r4, 0x64 + adds r5, 0x64 + cmp r4, r6 + ble _0811C096 + movs r0, 0x32 + bl sub_8054E90 + bl sub_8040C3C + ldr r0, _0811C0D8 @ =gUnknown_20386AE + movs r2, 0xC0 + lsls r2, 4 + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _0811C0DC @ =sub_800FD9C + bl sub_8000544 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811C0CC: .4byte gUnknown_2024284 +_0811C0D0: .4byte gUnknown_202402C +_0811C0D4: .4byte gUnknown_203B0D4 +_0811C0D8: .4byte gUnknown_20386AE +_0811C0DC: .4byte sub_800FD9C + thumb_func_end sub_811C04C + + thumb_func_start sub_811C0E0 +sub_811C0E0: @ 811C0E0 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x18 + adds r5, r0, 0 + mov r10, r1 + adds r6, r2, 0 + ldr r4, [sp, 0x34] + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x1 + mov r8, r0 + ldr r1, _0811C14C @ =gUnknown_84571A8 + mov r9, r1 + ldrb r0, [r1] + lsls r1, r0, 4 + orrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + str r3, [sp, 0x14] + bl sub_800445C + mov r0, r8 + str r0, [sp] + str r0, [sp, 0x4] + mov r1, r9 + str r1, [sp, 0x8] + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + mov r0, r10 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x3 + adds r2, r6, 0 + ldr r3, [sp, 0x14] + bl sub_812E5A4 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811C14C: .4byte gUnknown_84571A8 + thumb_func_end sub_811C0E0 + + thumb_func_start sub_811C150 +sub_811C150: @ 811C150 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0811C168 + cmp r0, 0x1 + beq _0811C196 + b _0811C1AA +_0811C168: + movs r0, 0 + movs r1, 0x1 + movs r2, 0xD + bl sub_8150048 + str r5, [sp] + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_811C0E0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811C1AA +_0811C196: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0811C1AA + strh r0, [r4] + movs r0, 0x1 + b _0811C1AC +_0811C1AA: + movs r0, 0 +_0811C1AC: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811C150 + + thumb_func_start sub_811C1B4 +sub_811C1B4: @ 811C1B4 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_811C1B4 + + thumb_func_start sub_811C1C8 +sub_811C1C8: @ 811C1C8 + push {r4,lr} + sub sp, 0xC + ldr r1, _0811C1E8 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0x33 + bls _0811C1DE + b _0811C516 +_0811C1DE: + lsls r0, 2 + ldr r1, _0811C1EC @ =_0811C1F0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811C1E8: .4byte gUnknown_30030F0 +_0811C1EC: .4byte _0811C1F0 + .align 2, 0 +_0811C1F0: + .4byte _0811C2C0 + .4byte _0811C364 + .4byte _0811C38C + .4byte _0811C3B0 + .4byte _0811C400 + .4byte _0811C516 + .4byte _0811C4E4 + .4byte _0811C4C0 + .4byte _0811C4E4 + .4byte _0811C500 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C48C + .4byte _0811C4A8 +_0811C2C0: + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r4, _0811C350 @ =gUnknown_203B08C + movs r0, 0x4 + bl sub_8002BB0 + str r0, [r4] + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + movs r0, 0 + bl sub_8001618 + ldr r1, _0811C354 @ =gUnknown_8457194 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + bl sub_80F6808 + ldr r0, _0811C358 @ =gUnknown_8457198 + bl sub_8003B24 + lsls r0, 16 + cmp r0, 0 + bne _0811C300 + b _0811C52A +_0811C300: + bl sub_8002C28 + movs r0, 0 + bl sub_80040B8 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xD0 + bl sub_814FF2C + bl sub_80F77B8 + ldr r0, _0811C35C @ =sub_811C1B4 + bl sub_80006F4 + ldr r1, _0811C360 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _0811C4F2 + .align 2, 0 +_0811C350: .4byte gUnknown_203B08C +_0811C354: .4byte gUnknown_8457194 +_0811C358: .4byte gUnknown_8457198 +_0811C35C: .4byte sub_811C1B4 +_0811C360: .4byte gUnknown_30030F0 +_0811C364: + ldr r0, _0811C380 @ =gUnknown_203B08C + ldr r0, [r0] + ldr r1, _0811C384 @ =gUnknown_841E538 + movs r2, 0 + bl sub_811C150 + cmp r0, 0 + bne _0811C376 + b _0811C516 +_0811C376: + ldr r1, _0811C388 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0811C4F2 + .align 2, 0 +_0811C380: .4byte gUnknown_203B08C +_0811C384: .4byte gUnknown_841E538 +_0811C388: .4byte gUnknown_30030F0 +_0811C38C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + ldr r1, _0811C3AC @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _0811C4F2 + .align 2, 0 +_0811C3AC: .4byte gUnknown_30030F0 +_0811C3B0: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _0811C3BC + b _0811C516 +_0811C3BC: + ldr r4, _0811C3D8 @ =gUnknown_2022618 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x20 + bl memset + ldr r0, _0811C3DC @ =gUnknown_203B0D4 + ldrb r1, [r0] + ldrb r0, [r0, 0x1] + cmn r1, r0 + bne _0811C3E0 + movs r0, 0x52 + b _0811C3E2 + .align 2, 0 +_0811C3D8: .4byte gUnknown_2022618 +_0811C3DC: .4byte gUnknown_203B0D4 +_0811C3E0: + movs r0, 0x51 +_0811C3E2: + strb r0, [r4] + ldr r1, _0811C3F8 @ =gUnknown_2022618 + movs r0, 0 + movs r2, 0x20 + bl sub_800A448 + ldr r1, _0811C3FC @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0811C4F2 + .align 2, 0 +_0811C3F8: .4byte gUnknown_2022618 +_0811C3FC: .4byte gUnknown_30030F0 +_0811C400: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0811C40E + b _0811C516 +_0811C40E: + ldr r1, _0811C440 @ =gUnknown_2022118 + ldrh r0, [r1] + cmp r0, 0x51 + bne _0811C448 + movs r2, 0x80 + lsls r2, 1 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, 0x51 + bne _0811C448 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0811C444 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x32 + b _0811C47E + .align 2, 0 +_0811C440: .4byte gUnknown_2022118 +_0811C444: .4byte gUnknown_30030F0 +_0811C448: + bl sub_800AAC0 + ldr r4, _0811C46C @ =gUnknown_2022118 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 16 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0x52 + bne _0811C474 + ldr r0, _0811C470 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + movs r1, 0x6 + b _0811C47E + .align 2, 0 +_0811C46C: .4byte gUnknown_2022118 +_0811C470: .4byte gUnknown_30030F0 +_0811C474: + ldr r0, _0811C488 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x8 +_0811C47E: + strb r1, [r0] + bl sub_800A550 + b _0811C516 + .align 2, 0 +_0811C488: .4byte gUnknown_30030F0 +_0811C48C: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0811C516 + bl sub_800AB9C + ldr r1, _0811C4A4 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0811C4F2 + .align 2, 0 +_0811C4A4: .4byte gUnknown_30030F0 +_0811C4A8: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0811C516 + ldr r0, _0811C4BC @ =sub_811C04C + bl sub_8000544 + b _0811C516 + .align 2, 0 +_0811C4BC: .4byte sub_811C04C +_0811C4C0: + ldr r0, _0811C4D8 @ =gUnknown_203B08C + ldr r0, [r0] + ldr r1, _0811C4DC @ =gUnknown_841E58D + movs r2, 0x1 + bl sub_811C150 + cmp r0, 0 + beq _0811C516 + ldr r0, _0811C4E0 @ =sub_80567DC + bl sub_8000544 + b _0811C516 + .align 2, 0 +_0811C4D8: .4byte gUnknown_203B08C +_0811C4DC: .4byte gUnknown_841E58D +_0811C4E0: .4byte sub_80567DC +_0811C4E4: + ldr r0, _0811C4FC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0811C516 + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 +_0811C4F2: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0811C516 + .align 2, 0 +_0811C4FC: .4byte gUnknown_3003F64 +_0811C500: + ldr r0, _0811C534 @ =gUnknown_203B08C + ldr r0, [r0] + ldr r1, _0811C538 @ =gUnknown_841E572 + movs r2, 0x1 + bl sub_811C150 + cmp r0, 0 + beq _0811C516 + ldr r0, _0811C53C @ =sub_80567DC + bl sub_8000544 +_0811C516: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 +_0811C52A: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811C534: .4byte gUnknown_203B08C +_0811C538: .4byte gUnknown_841E572 +_0811C53C: .4byte sub_80567DC + thumb_func_end sub_811C1C8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s new file mode 100644 index 000000000..efe87fd78 --- /dev/null +++ b/asm/link_rfu_4.s @@ -0,0 +1,2316 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814240C +sub_814240C: @ 814240C + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + movs r2, 0xF + bl sub_8150048 + pop {r0} + bx r0 + thumb_func_end sub_814240C + + thumb_func_start sub_8142420 +sub_8142420: @ 8142420 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r0, 0 + mov r8, r0 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r4, 0x1 + movs r1, 0x11 + mov r10, r1 +_0814244E: + movs r7, 0 + mov r0, r8 + adds r0, 0x2 + movs r1, 0x1 + add r1, r8 + mov r9, r1 + lsls r5, r0, 24 + movs r6, 0 +_0814245E: + mov r1, r8 + ands r1, r4 + adds r0, r7, 0 + ands r0, r4 + cmp r1, r0 + beq _08142480 + lsrs r2, r6, 24 + str r4, [sp] + str r4, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x1 + lsrs r3, r5, 24 + bl sub_8002554 + b _08142494 +_08142480: + lsrs r2, r6, 24 + str r4, [sp] + str r4, [sp, 0x4] + mov r1, r10 + str r1, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x2 + lsrs r3, r5, 24 + bl sub_8002554 +_08142494: + movs r0, 0x80 + lsls r0, 17 + adds r6, r0 + adds r7, 0x1 + cmp r7, 0x1F + ble _0814245E + mov r8, r9 + mov r1, r8 + cmp r1, 0x11 + ble _0814244E + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8142420 + + thumb_func_start sub_81424B8 +sub_81424B8: @ 81424B8 + push {lr} + sub sp, 0xC + cmp r0, 0 + beq _081424C6 + cmp r0, 0x1 + beq _081424DE + b _081424F6 +_081424C6: + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + b _081424F6 +_081424DE: + movs r0, 0x20 + str r0, [sp] + movs r0, 0x1E + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002554 +_081424F6: + movs r0, 0 + bl sub_80020BC + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_81424B8 + + thumb_func_start sub_8142504 +sub_8142504: @ 8142504 + push {r4,lr} + sub sp, 0x14 + adds r1, r0, 0 + ldr r4, _08142558 @ =gUnknown_2021D18 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + movs r1, 0 + str r1, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + ldr r0, _0814255C @ =gUnknown_8466EF0 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + str r4, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_812E5A4 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0xF + bl sub_8150048 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08142558: .4byte gUnknown_2021D18 +_0814255C: .4byte gUnknown_8466EF0 + thumb_func_end sub_8142504 + + thumb_func_start sub_8142560 +sub_8142560: @ 8142560 + push {lr} + movs r0, 0x1 + bl sub_815036C + movs r0, 0x1 + bl sub_80040B8 + movs r0, 0x1 + movs r1, 0x1 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_8142560 + + thumb_func_start sub_814257C +sub_814257C: @ 814257C + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r0, r1, 0 + ldrb r2, [r4] + cmp r2, 0x1 + beq _081425A4 + cmp r2, 0x1 + bgt _08142594 + cmp r2, 0 + beq _0814259E + b _08142604 +_08142594: + cmp r2, 0x2 + beq _081425D8 + cmp r2, 0xFF + beq _08142600 + b _08142604 +_0814259E: + bl sub_8142504 + b _081425C8 +_081425A4: + movs r0, 0 + str r0, [sp] + ldr r0, _081425D0 @ =gUnknown_203F3B0 + str r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0xD0 + movs r2, 0x14 + movs r3, 0x1 + bl sub_80056C4 + ldr r0, _081425D4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08142604 +_081425C8: + ldrb r0, [r4] + adds r0, 0x1 + b _08142602 + .align 2, 0 +_081425D0: .4byte gUnknown_203F3B0 +_081425D4: .4byte gUnknown_30030F0 +_081425D8: + movs r0, 0x1 + str r0, [sp] + ldr r0, _081425FC @ =gUnknown_203F3B0 + str r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0xD0 + movs r2, 0x14 + movs r3, 0x1 + bl sub_80056C4 + movs r0, 0 + strb r0, [r4] + bl sub_8142560 + movs r0, 0x1 + b _08142606 + .align 2, 0 +_081425FC: .4byte gUnknown_203F3B0 +_08142600: + movs r0, 0x2 +_08142602: + strb r0, [r4] +_08142604: + movs r0, 0 +_08142606: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814257C + + thumb_func_start sub_8142610 +sub_8142610: @ 8142610 + push {lr} + sub sp, 0xC + movs r0, 0 + str r0, [sp] + ldr r0, _08142634 @ =gUnknown_203F3B0 + str r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0xD0 + movs r2, 0x14 + movs r3, 0x1 + bl sub_80056C4 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08142634: .4byte gUnknown_203F3B0 + thumb_func_end sub_8142610 + + thumb_func_start sub_8142638 +sub_8142638: @ 8142638 + push {lr} + sub sp, 0xC + movs r0, 0x1 + str r0, [sp] + ldr r0, _0814265C @ =gUnknown_203F3B0 + str r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0xD0 + movs r2, 0x14 + movs r3, 0x1 + bl sub_80056C4 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0814265C: .4byte gUnknown_203F3B0 + thumb_func_end sub_8142638 + + thumb_func_start sub_8142660 +sub_8142660: @ 8142660 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08142670 + cmp r0, 0x1 + beq _0814268C + b _08142698 +_08142670: + bl sub_8142610 + ldr r0, _08142688 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08142698 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08142698 + .align 2, 0 +_08142688: .4byte gUnknown_30030F0 +_0814268C: + bl sub_8142638 + movs r0, 0 + strb r0, [r4] + movs r0, 0x1 + b _0814269A +_08142698: + movs r0, 0 +_0814269A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8142660 + + thumb_func_start sub_81426A0 +sub_81426A0: @ 81426A0 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + bne _081426B0 + adds r0, r1, 0 + bl sub_8142504 +_081426B0: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x78 + bhi _081426C2 + movs r0, 0 + b _081426CC +_081426C2: + movs r0, 0 + strb r0, [r4] + bl sub_8142560 + movs r0, 0x1 +_081426CC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81426A0 + + thumb_func_start sub_81426D4 +sub_81426D4: @ 81426D4 + push {r4-r7,lr} + sub sp, 0x24 + lsls r2, 24 + add r1, sp, 0x4 + ldr r0, _081426F8 @ =gUnknown_8466E00 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, _081426FC @ =gUnknown_8466DA8 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x1C] + str r1, [sp, 0x20] + cmp r2, 0 + bne _08142704 + ldr r0, _08142700 @ =gUnknown_8466DD0 + b _08142706 + .align 2, 0 +_081426F8: .4byte gUnknown_8466E00 +_081426FC: .4byte gUnknown_8466DA8 +_08142700: .4byte gUnknown_8466DD0 +_08142704: + ldr r0, _08142794 @ =gUnknown_8466DE8 +_08142706: + str r0, [sp, 0x4] + movs r6, 0 + movs r4, 0 + add r0, sp, 0x4 + add r7, sp, 0x1C + ldrh r0, [r0, 0xC] + cmp r6, r0 + bcs _0814273A + add r5, sp, 0x4 +_08142718: + ldr r1, [sp, 0x4] + lsls r0, r4, 3 + adds r0, r1 + ldr r1, [r0] + ldrb r2, [r5, 0x16] + lsls r2, 29 + lsrs r2, 29 + movs r0, 0x2 + bl sub_8005ED4 + cmp r0, r6 + bls _08142732 + adds r6, r0, 0 +_08142732: + adds r4, 0x1 + ldrh r0, [r5, 0xC] + cmp r4, r0 + bcc _08142718 +_0814273A: + adds r2, r6, 0 + adds r2, 0x9 + lsrs r2, 3 + adds r2, 0x2 + movs r0, 0x2 + negs r0, r0 + ands r2, r0 + lsls r3, r2, 24 + ldr r0, _08142798 @ =0x00ffffff + ldr r1, [sp, 0x1C] + ands r1, r0 + orrs r1, r3 + movs r0, 0x1E + subs r0, r2 + lsls r0, 23 + lsrs r0, 16 + ldr r2, _0814279C @ =0xffff00ff + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x1C] + movs r0, 0xE0 + str r0, [sp] + adds r0, r7, 0 + add r1, sp, 0x4 + movs r2, 0x1 + movs r3, 0xA + bl sub_8106ED0 + adds r4, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _0814278A + movs r0, 0x2 + bl sub_80040B8 + movs r0, 0x2 + movs r1, 0x1 + bl sub_8003F20 +_0814278A: + adds r0, r4, 0 + add sp, 0x24 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08142794: .4byte gUnknown_8466DE8 +_08142798: .4byte 0x00ffffff +_0814279C: .4byte 0xffff00ff + thumb_func_end sub_81426D4 + + thumb_func_start sub_81427A0 +sub_81427A0: @ 81427A0 + push {r4-r6,lr} + sub sp, 0x1C + adds r5, r0, 0 + adds r4, r1, 0 + adds r1, r3, 0 + lsls r2, 24 + lsrs r6, r2, 24 + ldrb r0, [r5] + cmp r0, 0x1 + beq _08142834 + cmp r0, 0x1 + bgt _081427BE + cmp r0, 0 + beq _081427CA + b _081428E6 +_081427BE: + cmp r0, 0x2 + beq _0814288C + cmp r0, 0xFF + bne _081427C8 + b _081428C2 +_081427C8: + b _081428E6 +_081427CA: + ldr r0, _081427D8 @ =gUnknown_2021D18 + bl sub_8008FCC + cmp r6, 0 + bne _081427E0 + ldr r0, _081427DC @ =gUnknown_8466D90 + b _081427E2 + .align 2, 0 +_081427D8: .4byte gUnknown_2021D18 +_081427DC: .4byte gUnknown_8466D90 +_081427E0: + ldr r0, _08142828 @ =gUnknown_8466D98 +_081427E2: + bl sub_8003CE4 + strh r0, [r4] + ldrb r0, [r4] + movs r1, 0x11 + bl sub_800445C + ldrb r0, [r4] + movs r2, 0 + str r2, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + ldr r1, _0814282C @ =gUnknown_8466EF0 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _08142830 @ =gUnknown_2021D18 + str r1, [sp, 0x10] + movs r1, 0x2 + movs r3, 0x2 + bl sub_812E5A4 + ldrb r0, [r4] + movs r1, 0x1 + movs r2, 0xF + bl sub_8150048 + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003FA0 + b _0814287E + .align 2, 0 +_08142828: .4byte gUnknown_8466D98 +_0814282C: .4byte gUnknown_8466EF0 +_08142830: .4byte gUnknown_2021D18 +_08142834: + ldr r0, _08142850 @ =gUnknown_8466DB0 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x14] + str r1, [sp, 0x18] + cmp r6, 0 + bne _08142858 + ldr r0, _08142854 @ =0xff00ffff + ldr r1, [sp, 0x14] + ands r1, r0 + movs r0, 0x90 + lsls r0, 12 + b _08142862 + .align 2, 0 +_08142850: .4byte gUnknown_8466DB0 +_08142854: .4byte 0xff00ffff +_08142858: + ldr r0, _08142888 @ =0xff00ffff + ldr r1, [sp, 0x14] + ands r1, r0 + movs r0, 0xF0 + lsls r0, 12 +_08142862: + orrs r1, r0 + str r1, [sp, 0x14] + movs r0, 0xA + str r0, [sp] + movs r0, 0xE + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + add r0, sp, 0x14 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 +_0814287E: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _081428E6 + .align 2, 0 +_08142888: .4byte 0xff00ffff +_0814288C: + bl sub_81100C8 + lsls r0, 24 + asrs r6, r0, 24 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x2 + bhi _081428E6 + movs r0, 0 + strb r0, [r5] + ldrb r0, [r4] + bl sub_815036C + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003E3C + adds r0, r6, 0 + b _081428EA +_081428C2: + movs r0, 0 + strb r0, [r5] + ldrb r0, [r4] + bl sub_815036C + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0x1 + negs r0, r0 + b _081428EA +_081428E6: + movs r0, 0x2 + negs r0, r0 +_081428EA: + add sp, 0x1C + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81427A0 + + thumb_func_start sub_81428F4 +sub_81428F4: @ 81428F4 + push {r4-r6,lr} + sub sp, 0x14 + adds r6, r0, 0 + adds r5, r1, 0 + ldrb r0, [r6] + cmp r0, 0x1 + beq _08142994 + cmp r0, 0x1 + bgt _0814290C + cmp r0, 0 + beq _08142914 + b _08142A38 +_0814290C: + cmp r0, 0xFF + bne _08142912 + b _08142A14 +_08142912: + b _08142A38 +_08142914: + cmp r2, 0 + bne _0814292C + ldr r0, _08142924 @ =gUnknown_2021D18 + ldr r1, _08142928 @ =gUnknown_841EA86 + bl sub_8008FCC + b _08142934 + .align 2, 0 +_08142924: .4byte gUnknown_2021D18 +_08142928: .4byte gUnknown_841EA86 +_0814292C: + ldr r0, _08142984 @ =gUnknown_2021D18 + ldr r1, _08142988 @ =gUnknown_841EAB7 + bl sub_8008FCC +_08142934: + ldr r0, _0814298C @ =gUnknown_8466DA0 + bl sub_8003CE4 + strh r0, [r5] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x11 + bl sub_800445C + ldrb r0, [r5] + movs r2, 0 + str r2, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + ldr r1, _08142990 @ =gUnknown_8466EF0 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _08142984 @ =gUnknown_2021D18 + str r1, [sp, 0x10] + movs r1, 0x2 + movs r3, 0x2 + bl sub_812E5A4 + ldrb r0, [r5] + movs r1, 0x1 + movs r2, 0xF + bl sub_8150048 + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r5] + bl sub_8003FA0 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _08142A38 + .align 2, 0 +_08142984: .4byte gUnknown_2021D18 +_08142988: .4byte gUnknown_841EAB7 +_0814298C: .4byte gUnknown_8466DA0 +_08142990: .4byte gUnknown_8466EF0 +_08142994: + cmp r3, 0 + beq _081429BC + cmp r2, 0 + bne _081429AC + ldr r0, _081429A4 @ =gUnknown_8466DC0 + ldr r1, _081429A8 @ =gUnknown_8466E90 + b _081429D4 + .align 2, 0 +_081429A4: .4byte gUnknown_8466DC0 +_081429A8: .4byte gUnknown_8466E90 +_081429AC: + ldr r0, _081429B4 @ =gUnknown_8466DC8 + ldr r1, _081429B8 @ =gUnknown_8466EC0 + b _081429D4 + .align 2, 0 +_081429B4: .4byte gUnknown_8466DC8 +_081429B8: .4byte gUnknown_8466EC0 +_081429BC: + cmp r2, 0 + bne _081429D0 + ldr r0, _081429C8 @ =gUnknown_8466DB8 + ldr r1, _081429CC @ =gUnknown_8466E78 + b _081429D4 + .align 2, 0 +_081429C8: .4byte gUnknown_8466DB8 +_081429CC: .4byte gUnknown_8466E78 +_081429D0: + ldr r0, _08142A0C @ =gUnknown_8466DC0 + ldr r1, _08142A10 @ =gUnknown_8466EA8 +_081429D4: + movs r2, 0xE0 + str r2, [sp] + movs r2, 0x1 + movs r3, 0xA + bl sub_8106ED0 + adds r4, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _08142A38 + movs r0, 0 + strb r0, [r6] + ldrb r0, [r5] + bl sub_815036C + ldrb r0, [r5] + bl sub_80040B8 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r5] + bl sub_8003E3C + adds r0, r4, 0 + b _08142A3C + .align 2, 0 +_08142A0C: .4byte gUnknown_8466DC0 +_08142A10: .4byte gUnknown_8466EA8 +_08142A14: + movs r0, 0 + strb r0, [r6] + ldrb r0, [r5] + bl sub_815036C + ldrb r0, [r5] + bl sub_80040B8 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r5] + bl sub_8003E3C + movs r0, 0x2 + negs r0, r0 + b _08142A3C +_08142A38: + movs r0, 0x1 + negs r0, r0 +_08142A3C: + add sp, 0x14 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81428F4 + + thumb_func_start sub_8142A44 +sub_8142A44: @ 8142A44 + push {lr} + cmp r0, 0 + beq _08142A50 + bl sub_8143E1C + b _08142A54 +_08142A50: + bl sub_8143FC8 +_08142A54: + pop {r1} + bx r1 + thumb_func_end sub_8142A44 + + thumb_func_start sub_8142A58 +sub_8142A58: @ 8142A58 + push {r4,r5,lr} + adds r5, r0, 0 + ldrb r0, [r5] + cmp r0, 0 + beq _08142A68 + cmp r0, 0x1 + beq _08142A90 + b _08142AAC +_08142A68: + cmp r1, 0 + bne _08142A80 + bl sub_8143D6C + adds r4, r0, 0 + bl sub_8143D80 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8145654 + b _08142A88 +_08142A80: + bl sub_8143D58 + bl sub_8146288 +_08142A88: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _08142AAC +_08142A90: + cmp r1, 0 + bne _08142A9E + bl sub_814571C +_08142A98: + cmp r0, 0 + bne _08142AA4 + b _08142AAC +_08142A9E: + bl sub_8146318 + b _08142A98 +_08142AA4: + movs r0, 0 + strb r0, [r5] + movs r0, 0x1 + b _08142AAE +_08142AAC: + movs r0, 0 +_08142AAE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8142A58 + + thumb_func_start sub_8142AB4 +sub_8142AB4: @ 8142AB4 + push {lr} + cmp r0, 0 + bne _08142AC0 + bl sub_8143F38 + b _08142AC4 +_08142AC0: + bl sub_8143DBC +_08142AC4: + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8142AB4 + + thumb_func_start sub_8142ACC +sub_8142ACC: @ 8142ACC + push {lr} + cmp r0, 0 + bne _08142AE2 + adds r0, r1, 0 + bl sub_814593C + cmp r0, 0 + beq _08142AEC + bl sub_81456F0 + b _08142AF4 +_08142AE2: + adds r0, r1, 0 + bl sub_8146604 + cmp r0, 0 + bne _08142AF0 +_08142AEC: + movs r0, 0 + b _08142AF6 +_08142AF0: + bl sub_81462EC +_08142AF4: + movs r0, 0x1 +_08142AF6: + pop {r1} + bx r1 + thumb_func_end sub_8142ACC + + thumb_func_start sub_8142AFC +sub_8142AFC: @ 8142AFC + push {lr} + cmp r2, 0 + beq _08142B0C + ldr r3, _08142B08 @ =gUnknown_841ECD3 + b _08142B0E + .align 2, 0 +_08142B08: .4byte gUnknown_841ECD3 +_08142B0C: + ldr r3, _08142B1C @ =gUnknown_841EC99 +_08142B0E: + movs r2, 0x1 + bl sub_81427A0 + lsls r0, 24 + asrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08142B1C: .4byte gUnknown_841EC99 + thumb_func_end sub_8142AFC + + thumb_func_start sub_8142B20 +sub_8142B20: @ 8142B20 + push {lr} + cmp r1, 0 + beq _08142B30 + ldr r1, _08142B2C @ =gUnknown_841ED9C + b _08142B32 + .align 2, 0 +_08142B2C: .4byte gUnknown_841ED9C +_08142B30: + ldr r1, _08142B3C @ =gUnknown_841ED7B +_08142B32: + bl sub_814257C + pop {r1} + bx r1 + .align 2, 0 +_08142B3C: .4byte gUnknown_841ED7B + thumb_func_end sub_8142B20 + + thumb_func_start sub_8142B40 +sub_8142B40: @ 8142B40 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0x4 + bhi _08142BB0 + lsls r0, 2 + ldr r1, _08142B54 @ =_08142B58 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08142B54: .4byte _08142B58 + .align 2, 0 +_08142B58: + .4byte _08142B6C + .4byte _08142B78 + .4byte _08142B80 + .4byte _08142B8C + .4byte _08142BA4 +_08142B6C: + ldr r0, _08142B74 @ =gUnknown_841ED2F + bl sub_8142504 + b _08142B98 + .align 2, 0 +_08142B74: .4byte gUnknown_841ED2F +_08142B78: + movs r0, 0 + bl sub_80DA364 + b _08142B98 +_08142B80: + ldr r0, _08142B88 @ =gUnknown_841ED50 + bl sub_8142504 + b _08142B98 + .align 2, 0 +_08142B88: .4byte gUnknown_841ED50 +_08142B8C: + ldr r0, _08142BA0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08142BB0 +_08142B98: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08142BB0 + .align 2, 0 +_08142BA0: .4byte gUnknown_30030F0 +_08142BA4: + movs r0, 0 + strb r0, [r4] + bl sub_8142560 + movs r0, 0x1 + b _08142BB2 +_08142BB0: + movs r0, 0 +_08142BB2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8142B40 + + thumb_func_start sub_8142BB8 +sub_8142BB8: @ 8142BB8 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r2, 0 + str r2, [r4] + cmp r3, 0xE + bls _08142BCE + b _08142CE0 +_08142BCE: + lsls r0, r3, 2 + ldr r1, _08142BD8 @ =_08142BDC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08142BD8: .4byte _08142BDC + .align 2, 0 +_08142BDC: + .4byte _08142C18 + .4byte _08142C24 + .4byte _08142C30 + .4byte _08142C48 + .4byte _08142C60 + .4byte _08142C6C + .4byte _08142C78 + .4byte _08142C84 + .4byte _08142C90 + .4byte _08142C9C + .4byte _08142CA8 + .4byte _08142CC0 + .4byte _08142CCC + .4byte _08142CD8 + .4byte _08142CDC +_08142C18: + movs r0, 0 + str r0, [r4] + ldr r2, _08142C20 @ =gUnknown_841EA6F + b _08142CE0 + .align 2, 0 +_08142C20: .4byte gUnknown_841EA6F +_08142C24: + movs r0, 0 + str r0, [r4] + ldr r2, _08142C2C @ =gUnknown_841E9D3 + b _08142CE0 + .align 2, 0 +_08142C2C: .4byte gUnknown_841E9D3 +_08142C30: + movs r0, 0x1 + str r0, [r4] + ldr r2, _08142C40 @ =gUnknown_841E866 + cmp r5, 0 + bne _08142CE0 + ldr r2, _08142C44 @ =gUnknown_841E8BD + b _08142CE0 + .align 2, 0 +_08142C40: .4byte gUnknown_841E866 +_08142C44: .4byte gUnknown_841E8BD +_08142C48: + movs r0, 0x1 + str r0, [r4] + ldr r2, _08142C58 @ =gUnknown_841E88F + cmp r5, 0 + bne _08142CE0 + ldr r2, _08142C5C @ =gUnknown_841E8E2 + b _08142CE0 + .align 2, 0 +_08142C58: .4byte gUnknown_841E88F +_08142C5C: .4byte gUnknown_841E8E2 +_08142C60: + movs r0, 0x1 + str r0, [r4] + ldr r2, _08142C68 @ =gUnknown_841E90C + b _08142CE0 + .align 2, 0 +_08142C68: .4byte gUnknown_841E90C +_08142C6C: + movs r0, 0 + str r0, [r4] + ldr r2, _08142C74 @ =gUnknown_841E946 + b _08142CE0 + .align 2, 0 +_08142C74: .4byte gUnknown_841E946 +_08142C78: + movs r0, 0 + str r0, [r4] + ldr r2, _08142C80 @ =gUnknown_841E98F + b _08142CE0 + .align 2, 0 +_08142C80: .4byte gUnknown_841E98F +_08142C84: + movs r0, 0 + str r0, [r4] + ldr r2, _08142C8C @ =gUnknown_841E968 + b _08142CE0 + .align 2, 0 +_08142C8C: .4byte gUnknown_841E968 +_08142C90: + movs r0, 0 + str r0, [r4] + ldr r2, _08142C98 @ =gUnknown_841E9AB + b _08142CE0 + .align 2, 0 +_08142C98: .4byte gUnknown_841E9AB +_08142C9C: + movs r0, 0 + str r0, [r4] + ldr r2, _08142CA4 @ =gUnknown_841E7D1 + b _08142CE0 + .align 2, 0 +_08142CA4: .4byte gUnknown_841E7D1 +_08142CA8: + movs r0, 0 + str r0, [r4] + ldr r2, _08142CB8 @ =gUnknown_841EA3F + cmp r6, 0 + bne _08142CE0 + ldr r2, _08142CBC @ =gUnknown_841EA0D + b _08142CE0 + .align 2, 0 +_08142CB8: .4byte gUnknown_841EA3F +_08142CBC: .4byte gUnknown_841EA0D +_08142CC0: + movs r0, 0 + str r0, [r4] + ldr r2, _08142CC8 @ =gUnknown_841E7BC + b _08142CE0 + .align 2, 0 +_08142CC8: .4byte gUnknown_841E7BC +_08142CCC: + movs r0, 0x1 + str r0, [r4] + ldr r2, _08142CD4 @ =gUnknown_841E92B + b _08142CE0 + .align 2, 0 +_08142CD4: .4byte gUnknown_841E92B +_08142CD8: + movs r0, 0x1 + b _08142CDE +_08142CDC: + movs r0, 0 +_08142CDE: + str r0, [r4] +_08142CE0: + adds r0, r2, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8142BB8 + + thumb_func_start sub_8142CE8 +sub_8142CE8: @ 8142CE8 + push {r4-r6,lr} + adds r6, r0, 0 + adds r0, r1, 0 + adds r5, r2, 0 + ldrb r4, [r6] + cmp r4, 0x1 + beq _08142D1A + cmp r4, 0x1 + bgt _08142D00 + cmp r4, 0 + beq _08142D06 + b _08142D46 +_08142D00: + cmp r4, 0x2 + beq _08142D30 + b _08142D46 +_08142D06: + cmp r0, 0 + beq _08142D0E + bl sub_8142504 +_08142D0E: + movs r0, 0x81 + lsls r0, 1 + bl sub_8071C60 + strh r4, [r5] + b _08142D28 +_08142D1A: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xF0 + bls _08142D46 +_08142D28: + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _08142D46 +_08142D30: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _08142D46 + movs r0, 0 + strb r0, [r6] + bl sub_8142560 + movs r0, 0x1 + b _08142D48 +_08142D46: + movs r0, 0 +_08142D48: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8142CE8 + + thumb_func_start sub_8142D50 +sub_8142D50: @ 8142D50 + push {r4,lr} + adds r3, r0, 0 + ldr r1, _08142D6C @ =gUnknown_841E7BC + movs r0, 0 + str r0, [r3] + adds r4, r1, 0 + cmp r2, 0xE + bhi _08142E12 + lsls r0, r2, 2 + ldr r1, _08142D70 @ =_08142D74 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08142D6C: .4byte gUnknown_841E7BC +_08142D70: .4byte _08142D74 + .align 2, 0 +_08142D74: + .4byte _08142DB0 + .4byte _08142DB8 + .4byte _08142DC0 + .4byte _08142DC8 + .4byte _08142DD4 + .4byte _08142DDC + .4byte _08142DE4 + .4byte _08142DEC + .4byte _08142DF4 + .4byte _08142DFC + .4byte _08142E10 + .4byte _08142E04 + .4byte _08142E08 + .4byte _08142E08 + .4byte _08142E10 +_08142DB0: + ldr r1, _08142DB4 @ =gUnknown_841EA6F + b _08142E12 + .align 2, 0 +_08142DB4: .4byte gUnknown_841EA6F +_08142DB8: + ldr r1, _08142DBC @ =gUnknown_841E9D3 + b _08142E12 + .align 2, 0 +_08142DBC: .4byte gUnknown_841E9D3 +_08142DC0: + ldr r1, _08142DC4 @ =gUnknown_841EB20 + b _08142DCA + .align 2, 0 +_08142DC4: .4byte gUnknown_841EB20 +_08142DC8: + ldr r1, _08142DD0 @ =gUnknown_841EB46 +_08142DCA: + movs r0, 0x1 + str r0, [r3] + b _08142E12 + .align 2, 0 +_08142DD0: .4byte gUnknown_841EB46 +_08142DD4: + ldr r1, _08142DD8 @ =gUnknown_841EB71 + b _08142E12 + .align 2, 0 +_08142DD8: .4byte gUnknown_841EB71 +_08142DDC: + ldr r1, _08142DE0 @ =gUnknown_841EBAA + b _08142E12 + .align 2, 0 +_08142DE0: .4byte gUnknown_841EBAA +_08142DE4: + ldr r1, _08142DE8 @ =gUnknown_841EC12 + b _08142E12 + .align 2, 0 +_08142DE8: .4byte gUnknown_841EC12 +_08142DEC: + ldr r1, _08142DF0 @ =gUnknown_841EBDE + b _08142E12 + .align 2, 0 +_08142DF0: .4byte gUnknown_841EBDE +_08142DF4: + ldr r1, _08142DF8 @ =gUnknown_841E9AB + b _08142E12 + .align 2, 0 +_08142DF8: .4byte gUnknown_841E9AB +_08142DFC: + ldr r1, _08142E00 @ =gUnknown_841EC40 + b _08142E12 + .align 2, 0 +_08142E00: .4byte gUnknown_841EC40 +_08142E04: + adds r1, r4, 0 + b _08142E12 +_08142E08: + ldr r1, _08142E0C @ =gUnknown_841EB8E + b _08142E12 + .align 2, 0 +_08142E0C: .4byte gUnknown_841EB8E +_08142E10: + ldr r1, _08142E1C @ =gUnknown_841EC6A +_08142E12: + adds r0, r1, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08142E1C: .4byte gUnknown_841EC6A + thumb_func_end sub_8142D50 + + thumb_func_start sub_8142E20 +sub_8142E20: @ 8142E20 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, sp + bl sub_8142D50 + adds r1, r0, 0 + ldr r0, [sp] + cmp r0, 0 + bne _08142E46 + adds r0, r4, 0 + bl sub_814257C + b _08142E4E +_08142E46: + adds r0, r4, 0 + adds r2, r5, 0 + bl sub_8142CE8 +_08142E4E: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8142E20 + + thumb_func_start sub_8142E58 +sub_8142E58: @ 8142E58 + push {r4,lr} + ldr r0, _08142E98 @ =sub_8142EA0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _08142E9C @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + strb r0, [r4, 0x8] + strb r0, [r4, 0x9] + strb r0, [r4, 0xA] + strb r0, [r4, 0xB] + strb r0, [r4, 0xC] + strb r0, [r4, 0xD] + movs r1, 0 + strh r0, [r4] + strh r0, [r4, 0x2] + strh r0, [r4, 0x4] + strh r0, [r4, 0x6] + strb r1, [r4, 0xE] + movs r0, 0x40 + bl sub_8002BB0 + str r0, [r4, 0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08142E98: .4byte sub_8142EA0 +_08142E9C: .4byte gUnknown_3005098 + thumb_func_end sub_8142E58 + + thumb_func_start sub_8142EA0 +sub_8142EA0: @ 8142EA0 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08142EC4 @ =gUnknown_3005098 + adds r5, r0, r1 + ldrb r0, [r5, 0x8] + cmp r0, 0x25 + bls _08142EBA + b _081435C6 +_08142EBA: + lsls r0, 2 + ldr r1, _08142EC8 @ =_08142ECC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08142EC4: .4byte gUnknown_3005098 +_08142EC8: .4byte _08142ECC + .align 2, 0 +_08142ECC: + .4byte _08142F64 + .4byte _08142F6A + .4byte _08142FAC + .4byte _08142FE4 + .4byte _08143008 + .4byte _08143058 + .4byte _081430B8 + .4byte _081430EC + .4byte _081430FC + .4byte _08143174 + .4byte _08143198 + .4byte _081431B0 + .4byte _081431E0 + .4byte _0814321C + .4byte _08143232 + .4byte _08143264 + .4byte _0814358C + .4byte _081432C2 + .4byte _081432CC + .4byte _081435C6 + .4byte _081432DE + .4byte _0814332C + .4byte _081433A2 + .4byte _081433D2 + .4byte _08143408 + .4byte _08143422 + .4byte _08143436 + .4byte _08143442 + .4byte _08143456 + .4byte _0814346A + .4byte _0814349C + .4byte _081434D0 + .4byte _08143514 + .4byte _08143528 + .4byte _08143544 + .4byte _08143558 + .4byte _0814358C + .4byte _081435AC +_08142F64: + movs r0, 0x1 + strb r0, [r5, 0x8] + b _081435C6 +_08142F6A: + adds r0, r5, 0 + adds r0, 0x9 + adds r1, r5, 0 + movs r2, 0 + bl sub_81426D4 + adds r1, r0, 0 + cmp r1, 0x1 + beq _08142F94 + cmp r1, 0x1 + bcc _08142F8A + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _08142FA6 + b _081435C6 +_08142F8A: + movs r0, 0 + strb r0, [r5, 0xC] + bl sub_8143FC8 + b _08142F9A +_08142F94: + strb r1, [r5, 0xC] + bl sub_8143E1C +_08142F9A: + cmp r0, 0x1 + bne _08142FA0 + b _081434C4 +_08142FA0: + movs r0, 0x2 + strb r0, [r5, 0x8] + b _081435C6 +_08142FA6: + movs r0, 0x25 + strb r0, [r5, 0x8] + b _081435C6 +_08142FAC: + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _08142FC0 + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _08142FBC @ =gUnknown_841E6A1 + b _08142FC6 + .align 2, 0 +_08142FBC: .4byte gUnknown_841E6A1 +_08142FC0: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _08142FE0 @ =gUnknown_841E6DC +_08142FC6: + bl sub_814257C + cmp r0, 0 + bne _08142FD0 + b _081435C6 +_08142FD0: + movs r0, 0x3 + strb r0, [r5, 0x8] + movs r0, 0 + movs r1, 0x1 + bl sub_8142344 + b _081435C6 + .align 2, 0 +_08142FE0: .4byte gUnknown_841E6DC +_08142FE4: + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _08142FF8 + ldr r0, _08142FF4 @ =gUnknown_841E717 + bl sub_8142504 + b _08142FFE + .align 2, 0 +_08142FF4: .4byte gUnknown_841E717 +_08142FF8: + ldr r0, _08143004 @ =gUnknown_841E741 + bl sub_8142504 +_08142FFE: + movs r0, 0x4 + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_08143004: .4byte gUnknown_841E741 +_08143008: + adds r0, r5, 0 + adds r0, 0x9 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_81426D4 + adds r4, r0, 0 + cmp r4, 0x1 + beq _08143036 + cmp r4, 0x1 + bcc _08143028 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _08143042 + b _081435C6 +_08143028: + bl sub_8142560 + movs r1, 0 + movs r0, 0x5 + strb r0, [r5, 0x8] + strb r1, [r5, 0xD] + b _081435C6 +_08143036: + bl sub_8142560 + movs r0, 0x5 + strb r0, [r5, 0x8] + strb r4, [r5, 0xD] + b _081435C6 +_08143042: + bl sub_8142560 + ldrb r0, [r5, 0xC] + bl sub_8142A44 + cmp r0, 0 + beq _08143052 + b _081434C4 +_08143052: + strb r0, [r5, 0x8] + movs r0, 0 + b _0814359E +_08143058: + ldr r0, _08143074 @ =gUnknown_2021CD0 + movs r1, 0xFF + strb r1, [r0] + ldr r0, _08143078 @ =gUnknown_2021CF0 + strb r1, [r0] + ldr r0, _0814307C @ =gUnknown_2021D04 + strb r1, [r0] + ldrb r0, [r5, 0xC] + cmp r0, 0 + beq _08143080 + cmp r0, 0x1 + beq _0814309A + b _081430B2 + .align 2, 0 +_08143074: .4byte gUnknown_2021CD0 +_08143078: .4byte gUnknown_2021CF0 +_0814307C: .4byte gUnknown_2021D04 +_08143080: + ldrb r0, [r5, 0xD] + cmp r0, 0x1 + bne _0814308E + movs r0, 0x15 + bl sub_8117ED4 + b _081430B2 +_0814308E: + cmp r0, 0 + bne _081430B2 + movs r0, 0x15 + bl sub_8118290 + b _081430B2 +_0814309A: + ldrb r0, [r5, 0xD] + cmp r0, 0x1 + bne _081430A8 + movs r0, 0x16 + bl sub_8117ED4 + b _081430B2 +_081430A8: + cmp r0, 0 + bne _081430B2 + movs r0, 0x16 + bl sub_8118290 +_081430B2: + movs r0, 0x6 + strb r0, [r5, 0x8] + b _081435C6 +_081430B8: + ldr r0, _081430D0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _081430D4 + movs r0, 0x1 + bl sub_81424B8 + movs r0, 0x7 + strb r0, [r5, 0x8] + bl sub_8144AEC + b _081435C6 + .align 2, 0 +_081430D0: .4byte gUnknown_3003F64 +_081430D4: + ldr r0, _081430E8 @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0x5 + beq _081430DE + b _081435C6 +_081430DE: + movs r0, 0x1 + bl sub_81424B8 + b _08143464 + .align 2, 0 +_081430E8: .4byte gUnknown_20370D0 +_081430EC: + ldr r0, _081430F8 @ =gUnknown_841E794 + bl sub_8142504 + movs r0, 0x8 + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_081430F8: .4byte gUnknown_841E794 +_081430FC: + adds r0, r5, 0 + bl sub_8144B0C + subs r0, 0x2 + cmp r0, 0x4 + bls _0814310A + b _081435C6 +_0814310A: + lsls r0, 2 + ldr r1, _08143114 @ =_08143118 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08143114: .4byte _08143118 + .align 2, 0 +_08143118: + .4byte _08143156 + .4byte _08143150 + .4byte _0814315C + .4byte _0814313A + .4byte _0814312C +_0814312C: + bl sub_80FA28C + ldrh r0, [r5] + strb r0, [r5, 0xE] + movs r0, 0xD + strb r0, [r5, 0x8] + b _081435C6 +_0814313A: + ldr r4, [r5, 0x10] + bl sub_8144B58 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0x40 + bl memcpy + bl sub_8144B48 + b _081435C6 +_08143150: + movs r0, 0xA + strb r0, [r5, 0x8] + b _081435C6 +_08143156: + movs r0, 0x9 + strb r0, [r5, 0x8] + b _081435C6 +_0814315C: + movs r0, 0xB + strb r0, [r5, 0x8] + ldr r0, _0814316C @ =gUnknown_2021CD0 + ldr r1, _08143170 @ =gUnknown_2022744 + bl sub_8008D84 + b _081435C6 + .align 2, 0 +_0814316C: .4byte gUnknown_2021CD0 +_08143170: .4byte gUnknown_2022744 +_08143174: + adds r4, r5, 0 + adds r4, 0x9 + bl sub_8144B58 + adds r3, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_81427A0 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0x1 + beq _0814320C + cmp r1, 0x1 + bcs _081431FA + movs r0, 0 + b _0814320E +_08143198: + adds r4, r5, 0 + adds r4, 0x9 + bl sub_8144B58 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_814257C + cmp r0, 0 + bne _081431AE + b _081435C6 +_081431AE: + b _08143212 +_081431B0: + adds r0, r5, 0 + adds r0, 0x9 + ldr r3, _081431D8 @ =gUnknown_841E7F2 + adds r1, r5, 0 + movs r2, 0 + bl sub_81427A0 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0x1 + beq _0814320C + cmp r1, 0x1 + bcs _081431FA + bl sub_8144144 + cmp r0, 0x1 + bne _081431DC + movs r0, 0xC + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_081431D8: .4byte gUnknown_841E7F2 +_081431DC: + movs r0, 0 + b _0814320E +_081431E0: + adds r0, r5, 0 + adds r0, 0x9 + ldr r3, _08143204 @ =gUnknown_841E823 + adds r1, r5, 0 + movs r2, 0 + bl sub_81427A0 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0x1 + beq _0814320C + cmp r1, 0x1 + bcc _08143208 +_081431FA: + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0814320C + b _081435C6 + .align 2, 0 +_08143204: .4byte gUnknown_841E823 +_08143208: + movs r0, 0 + b _0814320E +_0814320C: + movs r0, 0x1 +_0814320E: + bl sub_8144B64 +_08143212: + bl sub_8144B48 + movs r0, 0x7 + strb r0, [r5, 0x8] + b _081435C6 +_0814321C: + bl sub_80FA4F8 + lsls r0, 24 + cmp r0, 0 + bne _08143228 + b _081435C6 +_08143228: + bl sub_80FCE44 + movs r0, 0xE + strb r0, [r5, 0x8] + b _081435C6 +_08143232: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _08143258 @ =gUnknown_841E7A3 + bl sub_81426A0 + cmp r0, 0 + bne _08143242 + b _081435C6 +_08143242: + ldrb r0, [r5, 0xD] + cmp r0, 0x1 + bne _08143250 + ldr r0, _0814325C @ =gUnknown_2021CD0 + ldr r1, _08143260 @ =gUnknown_2022744 + bl sub_8008D84 +_08143250: + movs r0, 0xF + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_08143258: .4byte gUnknown_841E7A3 +_0814325C: .4byte gUnknown_2021CD0 +_08143260: .4byte gUnknown_2022744 +_08143264: + ldrb r1, [r5, 0xC] + ldrb r2, [r5, 0xD] + ldrb r3, [r5, 0xE] + mov r0, sp + bl sub_8142BB8 + adds r1, r0, 0 + cmp r1, 0 + bne _08143278 + ldr r1, [r5, 0x10] +_08143278: + ldr r0, [sp] + cmp r0, 0 + beq _0814328A + adds r0, r5, 0 + adds r0, 0x9 + adds r2, r5, 0 + bl sub_8142CE8 + b _08143292 +_0814328A: + adds r0, r5, 0 + adds r0, 0x9 + bl sub_814257C +_08143292: + adds r1, r0, 0 + cmp r1, 0 + bne _0814329A + b _081435C6 +_0814329A: + ldrb r0, [r5, 0xE] + cmp r0, 0x3 + bne _081432B4 + ldrb r0, [r5, 0xD] + cmp r0, 0x1 + bne _081432AE + movs r0, 0x1 + bl sub_8146C30 + b _081432B4 +_081432AE: + movs r0, 0x2 + bl sub_8146C30 +_081432B4: + ldr r0, [sp] + cmp r0, 0 + beq _081432BC + b _0814357C +_081432BC: + strb r0, [r5, 0x8] + movs r0, 0 + b _0814359E +_081432C2: + adds r0, r5, 0 + adds r0, 0x9 + bl sub_8142B40 + b _08143596 +_081432CC: + adds r0, r5, 0 + adds r0, 0x9 + ldrb r1, [r5, 0xC] + bl sub_8142A58 + cmp r0, 0 + bne _081432DC + b _081435C6 +_081432DC: + b _0814339C +_081432DE: + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _08143308 + ldr r2, _08143304 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081432F4 + movs r0, 0x15 + strb r0, [r5, 0x8] +_081432F4: + ldrh r1, [r2, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08143300 + b _081435C6 +_08143300: + b _08143326 + .align 2, 0 +_08143304: .4byte gUnknown_30030F0 +_08143308: + ldr r0, _0814331C @ =gUnknown_30030F0 + ldrh r0, [r0, 0x2E] + bl sub_8146884 + cmp r0, 0 + beq _08143320 + cmp r0, 0x1 + beq _08143326 + b _081435C6 + .align 2, 0 +_0814331C: .4byte gUnknown_30030F0 +_08143320: + bl sub_81467EC + b _08143402 +_08143326: + movs r0, 0x1B + strb r0, [r5, 0x8] + b _081435C6 +_0814332C: + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _08143346 + bl sub_8144054 + cmp r0, 0 + beq _0814335A + adds r0, r5, 0 + adds r0, 0x9 + ldrb r2, [r5, 0xC] + adds r1, r5, 0 + movs r3, 0 + b _08143364 +_08143346: + bl sub_8143E78 + cmp r0, 0 + beq _0814335A + adds r0, r5, 0 + adds r0, 0x9 + ldrb r2, [r5, 0xC] + adds r1, r5, 0 + movs r3, 0 + b _08143364 +_0814335A: + adds r0, r5, 0 + adds r0, 0x9 + ldrb r2, [r5, 0xC] + adds r1, r5, 0 + movs r3, 0x1 +_08143364: + bl sub_81428F4 + adds r1, r0, 0 + cmp r1, 0x1 + beq _08143386 + cmp r1, 0x1 + bcc _08143380 + cmp r1, 0x2 + beq _0814338C + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _08143392 + b _081435C6 +_08143380: + movs r0, 0x1C + strb r0, [r5, 0x8] + b _081435C6 +_08143386: + movs r0, 0x1D + strb r0, [r5, 0x8] + b _081435C6 +_0814338C: + movs r0, 0x16 + strb r0, [r5, 0x8] + b _081435C6 +_08143392: + ldrb r0, [r5, 0xC] + cmp r0, 0x1 + bne _0814339C + bl sub_8146834 +_0814339C: + movs r0, 0x14 + strb r0, [r5, 0x8] + b _081435C6 +_081433A2: + adds r0, r5, 0 + adds r0, 0x9 + ldrb r2, [r5, 0xC] + adds r1, r5, 0 + bl sub_8142AFC + adds r1, r0, 0 + cmp r1, 0 + beq _081433BE + cmp r1, 0 + ble _081433EC + cmp r1, 0x1 + beq _08143402 + b _081435C6 +_081433BE: + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _081433FC + bl sub_8144144 + cmp r0, 0x1 + bne _081433FC + movs r0, 0x17 + strb r0, [r5, 0x8] + b _081435C6 +_081433D2: + adds r0, r5, 0 + adds r0, 0x9 + ldr r3, _081433F8 @ =gUnknown_841ECF9 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_81427A0 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0x1 + beq _08143402 + cmp r1, 0x1 + bcc _081433FC +_081433EC: + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08143402 + b _081435C6 + .align 2, 0 +_081433F8: .4byte gUnknown_841ECF9 +_081433FC: + movs r0, 0x18 + strb r0, [r5, 0x8] + b _081435C6 +_08143402: + movs r0, 0x15 + strb r0, [r5, 0x8] + b _081435C6 +_08143408: + ldrb r0, [r5, 0xC] + movs r1, 0x1 + bl sub_8142ACC + cmp r0, 0 + bne _08143416 + b _081435C6 +_08143416: + ldrb r0, [r5, 0xC] + bl sub_8142AB4 + movs r0, 0x19 + strb r0, [r5, 0x8] + b _081435C6 +_08143422: + adds r0, r5, 0 + adds r0, 0x9 + bl sub_8142B40 + cmp r0, 0 + bne _08143430 + b _081435C6 +_08143430: + movs r0, 0x1A + strb r0, [r5, 0x8] + b _081435C6 +_08143436: + adds r0, r5, 0 + adds r0, 0x9 + ldrb r1, [r5, 0xC] + bl sub_8142B20 + b _08143596 +_08143442: + ldrb r0, [r5, 0xC] + movs r1, 0 + bl sub_8142ACC + cmp r0, 0 + bne _08143450 + b _081435C6 +_08143450: + movs r0, 0 + strb r0, [r5, 0x8] + b _081435C6 +_08143456: + ldrb r0, [r5, 0xC] + movs r1, 0x1 + bl sub_8142ACC + cmp r0, 0 + bne _08143464 + b _081435C6 +_08143464: + movs r0, 0x3 + strb r0, [r5, 0x8] + b _081435C6 +_0814346A: + ldrb r0, [r5, 0xC] + movs r1, 0x1 + bl sub_8142ACC + cmp r0, 0 + bne _08143478 + b _081435C6 +_08143478: + ldrb r0, [r5, 0xC] + cmp r0, 0 + beq _08143484 + cmp r0, 0x1 + beq _0814348C + b _08143492 +_08143484: + movs r0, 0x15 + bl sub_81179CC + b _08143492 +_0814348C: + movs r0, 0x16 + bl sub_81179CC +_08143492: + movs r0, 0x1 + strb r0, [r5, 0xD] + movs r0, 0x1E + strb r0, [r5, 0x8] + b _081435C6 +_0814349C: + ldr r0, _081434B0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _081434B4 + movs r0, 0x1 + bl sub_81424B8 + movs r0, 0x1F + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_081434B0: .4byte gUnknown_3003F64 +_081434B4: + ldr r0, _081434CC @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0x5 + beq _081434BE + b _081435C6 +_081434BE: + movs r0, 0x1 + bl sub_81424B8 +_081434C4: + movs r0, 0x12 + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_081434CC: .4byte gUnknown_20370D0 +_081434D0: + ldr r0, _081434F0 @ =gUnknown_2021CD0 + movs r1, 0xFF + strb r1, [r0] + ldr r0, _081434F4 @ =gUnknown_2021CF0 + strb r1, [r0] + ldr r0, _081434F8 @ =gUnknown_2021D04 + strb r1, [r0] + ldrb r0, [r5, 0xC] + cmp r0, 0 + bne _08143500 + ldr r0, _081434FC @ =gUnknown_841EAE7 + bl sub_8142504 + bl sub_8144F40 + b _0814350A + .align 2, 0 +_081434F0: .4byte gUnknown_2021CD0 +_081434F4: .4byte gUnknown_2021CF0 +_081434F8: .4byte gUnknown_2021D04 +_081434FC: .4byte gUnknown_841EAE7 +_08143500: + ldr r0, _08143510 @ =gUnknown_841EB01 + bl sub_8142504 + bl sub_8144F1C +_0814350A: + movs r0, 0x20 + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_08143510: .4byte gUnknown_841EB01 +_08143514: + adds r0, r5, 0 + bl sub_8144F64 + cmp r0, 0x3 + bne _081435C6 + ldrh r0, [r5] + strb r0, [r5, 0xE] + movs r0, 0x21 + strb r0, [r5, 0x8] + b _081435C6 +_08143528: + bl sub_80FA28C + ldr r0, _0814353C @ =gUnknown_2021CD0 + ldr r1, _08143540 @ =gUnknown_2022760 + bl sub_8008D84 + movs r0, 0x22 + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_0814353C: .4byte gUnknown_2021CD0 +_08143540: .4byte gUnknown_2022760 +_08143544: + bl sub_80FA4F8 + lsls r0, 24 + cmp r0, 0 + beq _081435C6 + bl sub_80FCE44 + movs r0, 0x23 + strb r0, [r5, 0x8] + b _081435C6 +_08143558: + adds r0, r5, 0 + adds r0, 0x9 + ldrb r2, [r5, 0xD] + ldrb r3, [r5, 0xE] + adds r1, r5, 0 + bl sub_8142E20 + cmp r0, 0 + beq _081435C6 + ldr r0, [r5, 0xC] + ldr r1, _08143584 @ =0x00ffff00 + ands r0, r1 + ldr r1, _08143588 @ =0x00030100 + cmp r0, r1 + bne _0814359A + movs r0, 0x3 + bl sub_8146C30 +_0814357C: + movs r0, 0x11 + strb r0, [r5, 0x8] + b _081435C6 + .align 2, 0 +_08143584: .4byte 0x00ffff00 +_08143588: .4byte 0x00030100 +_0814358C: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _081435A8 @ =gUnknown_841E7BC + bl sub_814257C +_08143596: + cmp r0, 0 + beq _081435C6 +_0814359A: + movs r0, 0 + strb r0, [r5, 0x8] +_0814359E: + movs r1, 0 + bl sub_8142344 + b _081435C6 + .align 2, 0 +_081435A8: .4byte gUnknown_841E7BC +_081435AC: + bl sub_80098B8 + bl sub_812B484 + ldr r0, [r5, 0x10] + bl sub_8002BC4 + adds r0, r4, 0 + bl sub_8077508 + ldr r0, _081435D0 @ =sub_81422FC + bl sub_8000544 +_081435C6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081435D0: .4byte sub_81422FC + thumb_func_end sub_8142EA0 + + thumb_func_start sub_81435D4 +sub_81435D4: @ 81435D4 + ldr r0, _081435D8 @ =0x0000019b + bx lr + .align 2, 0 +_081435D8: .4byte 0x0000019b + thumb_func_end sub_81435D4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/list_menu.s b/asm/list_menu.s new file mode 100644 index 000000000..d5fdd40f7 --- /dev/null +++ b/asm/list_menu.s @@ -0,0 +1,2019 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_90 +nullsub_90: @ 8106ECC + bx lr + thumb_func_end nullsub_90 + + thumb_func_start sub_8106ED0 +sub_8106ED0: @ 8106ED0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r12, r0 + str r1, [sp] + ldr r0, [sp, 0x28] + lsls r2, 24 + lsrs r6, r2, 24 + mov r10, r6 + lsls r3, 16 + lsrs r7, r3, 16 + str r7, [sp, 0x4] + lsls r0, 16 + mov r8, r0 + lsrs r0, 16 + mov r9, r0 + ldr r5, _08106F60 @ =gUnknown_203ACF4 + ldrb r4, [r5, 0x4] + cmp r4, 0x1 + beq _08106F68 + cmp r4, 0x1 + ble _08106F06 + cmp r4, 0x2 + beq _08106FCC +_08106F06: + mov r0, r12 + bl sub_8003CE4 + strb r0, [r5, 0x5] + cmp r6, 0x1 + beq _08106F24 + cmp r6, 0x2 + bne _08106F34 + ldrb r0, [r5, 0x5] + mov r1, r9 + lsls r2, r1, 24 + lsrs r2, 24 + adds r1, r7, 0 + bl sub_815001C +_08106F24: + ldrb r0, [r5, 0x5] + mov r3, r8 + lsrs r2, r3, 20 + lsls r2, 24 + lsrs r2, 24 + ldr r1, [sp, 0x4] + bl sub_8150048 +_08106F34: + ldr r0, _08106F64 @ =gUnknown_3005E70 + adds r2, r0, 0 + ldr r1, [sp] + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + ldr r4, _08106F60 @ =gUnknown_203ACF4 + ldrb r1, [r4, 0x5] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + strb r0, [r4, 0x6] + ldrb r0, [r4, 0x5] + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0x1 + strb r0, [r4, 0x4] + b _08106FE4 + .align 2, 0 +_08106F60: .4byte gUnknown_203ACF4 +_08106F64: .4byte gUnknown_3005E70 +_08106F68: + ldrb r0, [r5, 0x6] + bl sub_8107078 + str r0, [r5] + ldr r1, _08106FA4 @ =gUnknown_30030F0 + ldrh r0, [r1, 0x2E] + ands r4, r0 + cmp r4, 0 + beq _08106F7E + movs r0, 0x2 + strb r0, [r5, 0x4] +_08106F7E: + ldrh r1, [r1, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08106F92 + movs r0, 0x2 + negs r0, r0 + str r0, [r5] + movs r0, 0x2 + strb r0, [r5, 0x4] +_08106F92: + ldrb r0, [r5, 0x4] + cmp r0, 0x2 + bne _08106FE4 + cmp r6, 0 + bne _08106FA8 + ldrb r0, [r5, 0x5] + bl sub_80040B8 + b _08106FBA + .align 2, 0 +_08106FA4: .4byte gUnknown_30030F0 +_08106FA8: + mov r4, r10 + cmp r4, 0 + blt _08106FBA + cmp r4, 0x2 + bgt _08106FBA + ldrb r0, [r5, 0x5] + movs r1, 0 + bl sub_80F6F9C +_08106FBA: + ldr r0, _08106FC8 @ =gUnknown_203ACF4 + ldrb r0, [r0, 0x5] + movs r1, 0x1 + bl sub_8003F20 + b _08106FE4 + .align 2, 0 +_08106FC8: .4byte gUnknown_203ACF4 +_08106FCC: + ldrb r0, [r5, 0x6] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldrb r0, [r5, 0x5] + bl sub_8003E3C + movs r0, 0 + strb r0, [r5, 0x4] + ldr r0, [r5] + b _08106FE8 +_08106FE4: + movs r0, 0x1 + negs r0, r0 +_08106FE8: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8106ED0 + + thumb_func_start sub_8106FF8 +sub_8106FF8: @ 8106FF8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + bl sub_8107348 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5, 0x10] + bl sub_8003FA0 + ldrb r0, [r5, 0x10] + movs r1, 0x2 + bl sub_8003F20 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8106FF8 + + thumb_func_start sub_8107024 +sub_8107024: @ 8107024 + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r0, 0 + adds r4, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + bl sub_8107348 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4, 0x4] + cmp r0, 0xFF + beq _08107064 + adds r5, r4, 0 +_08107048: + ldrb r0, [r6, 0x10] + ldrb r1, [r5] + ldrb r2, [r5, 0x1] + ldrb r3, [r5, 0x2] + ldrb r4, [r5, 0x3] + str r4, [sp] + ldrb r4, [r5, 0x4] + str r4, [sp, 0x4] + bl sub_8004000 + adds r5, 0x8 + ldrb r0, [r5, 0x4] + cmp r0, 0xFF + bne _08107048 +_08107064: + ldrb r0, [r6, 0x10] + movs r1, 0x2 + bl sub_8003F20 + adds r0, r7, 0 + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8107024 + + thumb_func_start sub_8107078 +sub_8107078: @ 8107078 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081070A4 @ =gUnknown_3005098 + adds r3, r1, r0 + ldr r2, _081070A8 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081070AC + ldrh r0, [r3, 0x18] + ldrh r1, [r3, 0x1A] + adds r0, r1 + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0, 0x4] + b _08107136 + .align 2, 0 +_081070A4: .4byte gUnknown_3005098 +_081070A8: .4byte gUnknown_30030F0 +_081070AC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081070BA + movs r0, 0x2 + negs r0, r0 + b _08107136 +_081070BA: + ldrh r1, [r2, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _081070CE + adds r0, r3, 0 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0 + b _0810712E +_081070CE: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _081070DE + adds r0, r3, 0 + movs r1, 0x1 + movs r2, 0x1 + b _0810712C +_081070DE: + ldrb r0, [r3, 0x16] + lsrs r0, 6 + cmp r0, 0x1 + beq _081070F4 + cmp r0, 0x1 + ble _081070EE + cmp r0, 0x2 + beq _08107100 +_081070EE: + movs r2, 0 + movs r0, 0 + b _08107114 +_081070F4: + movs r0, 0x20 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r0, 0x10 + b _0810710E +_08107100: + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r0, 0x80 + lsls r0, 1 +_0810710E: + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08107114: + cmp r2, 0 + beq _08107122 + ldrb r2, [r3, 0xE] + adds r0, r3, 0 + movs r1, 0x1 + movs r3, 0 + b _0810712E +_08107122: + cmp r0, 0 + beq _08107132 + ldrb r2, [r3, 0xE] + adds r0, r3, 0 + movs r1, 0x1 +_0810712C: + movs r3, 0x1 +_0810712E: + bl sub_810799C +_08107132: + movs r0, 0x1 + negs r0, r0 +_08107136: + pop {r1} + bx r1 + thumb_func_end sub_8107078 + + thumb_func_start sub_810713C +sub_810713C: @ 810713C + push {r4,lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0810717C @ =gUnknown_3005098 + adds r1, r0, r1 + cmp r3, 0 + beq _08107158 + ldrh r0, [r1, 0x18] + strh r0, [r3] +_08107158: + cmp r2, 0 + beq _08107160 + ldrh r0, [r1, 0x1A] + strh r0, [r2] +_08107160: + ldrb r0, [r1, 0x1E] + cmp r0, 0xFF + beq _08107170 + ldrb r1, [r1, 0x17] + lsrs r1, 6 + subs r1, 0x2 + bl sub_8133CD4 +_08107170: + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810717C: .4byte gUnknown_3005098 + thumb_func_end sub_810713C + + thumb_func_start sub_8107180 +sub_8107180: @ 8107180 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _081071C0 @ =gUnknown_3005098 + adds r4, r0 + ldrb r0, [r4, 0x10] + ldrb r2, [r4, 0x15] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + ldrh r1, [r4, 0x18] + ldrh r3, [r4, 0xE] + adds r0, r4, 0 + movs r2, 0 + bl sub_81074DC + adds r0, r4, 0 + bl sub_8107594 + ldrb r0, [r4, 0x10] + movs r1, 0x2 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081071C0: .4byte gUnknown_3005098 + thumb_func_end sub_8107180 + + thumb_func_start sub_81071C4 +sub_81071C4: @ 81071C4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _08107204 @ =gUnknown_3005098 + adds r4, r0 + lsrs r1, 20 + ldrb r6, [r4, 0x14] + movs r5, 0xF + adds r0, r5, 0 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0x14] + ands r2, r5 + ldrb r1, [r4, 0x15] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + orrs r0, r2 + lsrs r3, 20 + ands r0, r5 + orrs r0, r3 + strb r0, [r4, 0x15] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08107204: .4byte gUnknown_3005098 + thumb_func_end sub_81071C4 + + thumb_func_start sub_8107208 +sub_8107208: @ 8107208 + push {r4,r5,lr} + adds r3, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _08107240 @ =gUnknown_3005098 + adds r4, r0 + ldrb r0, [r4, 0x10] + movs r1, 0x1 + adds r2, r3, 0 + bl sub_80048BC + ldrb r0, [r4, 0x10] + movs r1, 0x2 + adds r2, r5, 0 + bl sub_80048BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08107240: .4byte gUnknown_3005098 + thumb_func_end sub_8107208 + + thumb_func_start sub_8107244 +sub_8107244: @ 8107244 + push {r4-r7,lr} + sub sp, 0x20 + mov r12, r2 + ldr r5, [sp, 0x34] + lsls r3, 16 + lsrs r3, 16 + adds r4, r3, 0 + mov r3, sp + ldm r0!, {r2,r6,r7} + stm r3!, {r2,r6,r7} + ldm r0!, {r2,r6,r7} + stm r3!, {r2,r6,r7} + mov r0, sp + movs r3, 0 + strh r1, [r0, 0x18] + mov r1, r12 + strh r1, [r0, 0x1A] + strb r3, [r0, 0x1C] + strb r3, [r0, 0x1D] + cmp r4, 0x40 + bne _08107278 + movs r1, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_810799C +_08107278: + cmp r4, 0x80 + bne _08107288 + mov r0, sp + movs r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_810799C +_08107288: + cmp r5, 0 + beq _08107292 + mov r0, sp + ldrh r0, [r0, 0x18] + strh r0, [r5] +_08107292: + ldr r2, [sp, 0x38] + cmp r2, 0 + beq _0810729E + mov r0, sp + ldrh r0, [r0, 0x1A] + strh r0, [r2] +_0810729E: + movs r0, 0x1 + negs r0, r0 + add sp, 0x20 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8107244 + + thumb_func_start sub_81072AC +sub_81072AC: @ 81072AC + push {lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081072D0 @ =gUnknown_3005098 + adds r1, r0 + cmp r2, 0 + beq _081072CA + ldrh r0, [r1, 0x1A] + ldrh r1, [r1, 0x18] + adds r0, r1 + strh r0, [r2] +_081072CA: + pop {r0} + bx r0 + .align 2, 0 +_081072D0: .4byte gUnknown_3005098 + thumb_func_end sub_81072AC + + thumb_func_start sub_81072D4 +sub_81072D4: @ 81072D4 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081072FC @ =gUnknown_3005098 + adds r1, r0 + cmp r3, 0 + beq _081072EE + ldrh r0, [r1, 0x18] + strh r0, [r3] +_081072EE: + cmp r2, 0 + beq _081072F6 + ldrh r0, [r1, 0x1A] + strh r0, [r2] +_081072F6: + pop {r0} + bx r0 + .align 2, 0 +_081072FC: .4byte gUnknown_3005098 + thumb_func_end sub_81072D4 + + thumb_func_start sub_8107300 +sub_8107300: @ 8107300 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _08107344 @ =gUnknown_3005098 + adds r4, r0 + ldrb r0, [r4, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F79D8 + ldrb r1, [r4, 0x16] + lsls r1, 26 + lsrs r1, 29 + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x1A] + adds r2, r1, 0 + muls r2, r0 + adds r1, r2, 0 + ldrb r0, [r4, 0x14] + lsls r0, 28 + lsrs r0, 28 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08107344: .4byte gUnknown_3005098 + thumb_func_end sub_8107300 + + thumb_func_start sub_8107348 +sub_8107348: @ 8107348 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + ldr r0, _08107418 @ =nullsub_90 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _0810741C @ =gUnknown_3005098 + adds r7, r0, r1 + adds r0, r7, 0 + ldm r4!, {r1-r3} + stm r0!, {r1-r3} + ldm r4!, {r1-r3} + stm r0!, {r1-r3} + movs r1, 0 + strh r5, [r7, 0x18] + strh r6, [r7, 0x1A] + strb r1, [r7, 0x1C] + strb r1, [r7, 0x1D] + movs r0, 0xFF + strb r0, [r7, 0x1E] + strb r1, [r7, 0x1F] + ldr r3, _08107420 @ =gUnknown_3005E60 + ldrb r1, [r7, 0x14] + movs r5, 0xF + lsrs r1, 4 + ldrb r4, [r3] + movs r2, 0x10 + negs r2, r2 + adds r0, r2, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r7, 0x15] + lsls r1, 28 + lsrs r1, 24 + ands r0, r5 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r7, 0x15] + lsrs r0, 4 + ands r5, r0 + ldrb r0, [r3, 0x1] + ands r2, r0 + orrs r2, r5 + strb r2, [r3, 0x1] + ldrb r1, [r7, 0x16] + lsls r1, 29 + lsrs r1, 17 + ldr r0, [r3] + ldr r2, _08107424 @ =0xfffc0fff + ands r0, r2 + orrs r0, r1 + str r0, [r3] + ldrb r0, [r7, 0x17] + lsls r0, 26 + lsrs r0, 26 + strb r0, [r3, 0x3] + ldrh r0, [r7, 0xC] + ldrh r1, [r7, 0xE] + cmp r0, r1 + bcs _081073E0 + strh r0, [r7, 0xE] +_081073E0: + ldrb r0, [r7, 0x10] + ldrb r2, [r7, 0x15] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + ldrh r1, [r7, 0x18] + ldrh r3, [r7, 0xE] + adds r0, r7, 0 + movs r2, 0 + bl sub_81074DC + adds r0, r7, 0 + bl sub_8107594 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_8107A74 + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08107418: .4byte nullsub_90 +_0810741C: .4byte gUnknown_3005098 +_08107420: .4byte gUnknown_3005E60 +_08107424: .4byte 0xfffc0fff + thumb_func_end sub_8107348 + + thumb_func_start sub_8107428 +sub_8107428: @ 8107428 + push {r4-r7,lr} + sub sp, 0x18 + adds r4, r0, 0 + adds r6, r1, 0 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r12, r3 + ldr r5, _08107490 @ =gUnknown_3005E60 + ldrb r1, [r5, 0x3] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08107494 + add r1, sp, 0x14 + ldr r2, [r5] + lsls r0, r2, 24 + lsrs r0, 28 + movs r3, 0 + strb r0, [r1] + lsls r0, r2, 28 + lsrs r0, 28 + strb r0, [r1, 0x1] + lsls r0, r2, 20 + lsrs r0, 28 + strb r0, [r1, 0x2] + ldrb r0, [r4, 0x10] + lsls r1, r2, 1 + lsrs r1, 25 + lsls r2, 14 + lsrs r2, 26 + str r2, [sp] + str r3, [sp, 0x4] + add r2, sp, 0x14 + str r2, [sp, 0x8] + movs r2, 0x1 + negs r2, r2 + str r2, [sp, 0xC] + str r6, [sp, 0x10] + adds r2, r7, 0 + mov r3, r12 + bl sub_812E5A4 + ldrb r1, [r5, 0x3] + movs r0, 0x7F + ands r0, r1 + strb r0, [r5, 0x3] + b _081074D2 + .align 2, 0 +_08107490: .4byte gUnknown_3005E60 +_08107494: + add r2, sp, 0x14 + ldrb r1, [r4, 0x15] + lsls r0, r1, 28 + lsrs r0, 28 + strb r0, [r2] + ldrb r0, [r4, 0x14] + lsrs r0, 4 + strb r0, [r2, 0x1] + adds r0, r2, 0 + lsls r1, 24 + lsrs r1, 28 + strb r1, [r0, 0x2] + ldrb r0, [r4, 0x10] + ldrb r1, [r4, 0x17] + lsls r1, 26 + lsrs r1, 26 + ldrb r2, [r4, 0x16] + lsls r2, 29 + lsrs r2, 29 + str r2, [sp] + str r3, [sp, 0x4] + add r2, sp, 0x14 + str r2, [sp, 0x8] + movs r2, 0x1 + negs r2, r2 + str r2, [sp, 0xC] + str r6, [sp, 0x10] + adds r2, r7, 0 + mov r3, r12 + bl sub_812E5A4 +_081074D2: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8107428 + + thumb_func_start sub_81074DC +sub_81074DC: @ 81074DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp] + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + ldrb r0, [r4, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F79D8 + ldrb r1, [r4, 0x16] + lsls r1, 26 + lsrs r1, 29 + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0 + mov r8, r0 + cmp r8, r10 + bge _08107584 +_0810751E: + ldr r0, [r4] + mov r2, r9 + lsls r1, r2, 3 + adds r0, r1, r0 + ldr r2, [r0, 0x4] + movs r0, 0x3 + negs r0, r0 + adds r5, r1, 0 + cmp r2, r0 + beq _08107536 + ldrb r6, [r4, 0x12] + b _08107538 +_08107536: + ldrb r6, [r4, 0x11] +_08107538: + ldr r0, [sp] + add r0, r8 + ldr r2, [sp, 0x4] + adds r1, r0, 0 + muls r1, r2 + ldrb r0, [r4, 0x14] + lsls r0, 28 + lsrs r0, 28 + adds r0, r1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r7, r2, 0 + ldr r3, [r4, 0x8] + cmp r3, 0 + beq _08107562 + ldrb r0, [r4, 0x10] + ldr r1, [r4] + adds r1, r5, r1 + ldr r1, [r1, 0x4] + bl _call_via_r3 +_08107562: + ldr r0, [r4] + adds r0, r5, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_8107428 + mov r0, r9 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + movs r0, 0x1 + add r8, r0 + cmp r8, r10 + blt _0810751E +_08107584: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81074DC + + thumb_func_start sub_8107594 +sub_8107594: @ 8107594 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldrb r0, [r6, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F79D8 + ldrb r1, [r6, 0x16] + lsls r1, 26 + lsrs r1, 29 + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r6, 0x13] + mov r8, r1 + ldrh r1, [r6, 0x1A] + muls r1, r0 + ldrb r0, [r6, 0x14] + lsls r0, 28 + lsrs r0, 28 + adds r0, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r6, 0x17] + lsrs r0, 6 + cmp r0, 0x1 + beq _08107680 + cmp r0, 0x1 + bgt _081075DA + cmp r0, 0 + beq _081075E4 + b _08107680 +_081075DA: + cmp r0, 0x2 + beq _081075F8 + cmp r0, 0x3 + beq _08107640 + b _08107680 +_081075E4: + ldr r1, _081075F4 @ =gUnknown_841623B + adds r0, r6, 0 + mov r2, r8 + adds r3, r7, 0 + bl sub_8107428 + b _08107680 + .align 2, 0 +_081075F4: .4byte gUnknown_841623B +_081075F8: + ldrb r0, [r6, 0x1E] + cmp r0, 0xFF + bne _08107608 + adds r0, r6, 0 + movs r1, 0 + bl sub_810768C + strb r0, [r6, 0x1E] +_08107608: + ldrb r5, [r6, 0x1E] + ldrb r0, [r6, 0x10] + movs r1, 0x1 + bl sub_8004950 + adds r4, r0, 0 + lsls r4, 19 + ldr r0, _0810763C @ =0xffff0000 + adds r4, r0 + lsrs r4, 16 + ldrb r0, [r6, 0x10] + movs r1, 0x2 + bl sub_8004950 + adds r2, r0, 0 + lsls r2, 3 + adds r2, r7 + subs r2, 0x1 + lsls r2, 16 + lsrs r2, 16 + adds r0, r5, 0 + adds r1, r4, 0 + movs r3, 0 + bl sub_8133CAC + b _08107680 + .align 2, 0 +_0810763C: .4byte 0xffff0000 +_08107640: + ldrb r0, [r6, 0x1E] + cmp r0, 0xFF + bne _08107650 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_810768C + strb r0, [r6, 0x1E] +_08107650: + ldrb r5, [r6, 0x1E] + ldrb r0, [r6, 0x10] + movs r1, 0x1 + bl sub_8004950 + adds r4, r0, 0 + lsls r4, 3 + add r4, r8 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r6, 0x10] + movs r1, 0x2 + bl sub_8004950 + adds r2, r0, 0 + lsls r2, 3 + adds r2, r7 + lsls r2, 16 + lsrs r2, 16 + adds r0, r5, 0 + adds r1, r4, 0 + movs r3, 0x1 + bl sub_8133CAC +_08107680: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8107594 + + thumb_func_start sub_810768C +sub_810768C: @ 810768C + push {r4,r5,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r5, r1, 0 + mov r1, sp + movs r0, 0 + strb r0, [r1] + movs r0, 0xA0 + strb r0, [r1, 0x1] + ldrb r0, [r4, 0x10] + movs r1, 0x3 + bl sub_8004950 + mov r1, sp + lsls r0, 3 + adds r0, 0x2 + strh r0, [r1, 0x2] + ldrb r0, [r4, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F79D8 + mov r1, sp + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x2 + strh r0, [r1, 0x4] + movs r0, 0x80 + lsls r0, 7 + strh r0, [r1, 0x6] + ldr r0, _081076E8 @ =0x0000ffff + strh r0, [r1, 0x8] + movs r0, 0xF + strb r0, [r1, 0xA] + mov r0, sp + adds r1, r5, 0 + bl sub_8133C90 + lsls r0, 24 + lsrs r0, 24 + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081076E8: .4byte 0x0000ffff + thumb_func_end sub_810768C + + thumb_func_start sub_81076EC +sub_81076EC: @ 81076EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r7, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldrb r1, [r7, 0x17] + lsrs r0, r1, 6 + cmp r0, 0 + bne _08107768 + lsls r0, r1, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F79D8 + adds r4, r0, 0 + ldrb r0, [r7, 0x16] + lsls r0, 26 + lsrs r0, 29 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r7, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0 + bl sub_80F7AC0 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r7, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + ldrb r6, [r7, 0x10] + ldrb r2, [r7, 0x15] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + ldrb r2, [r7, 0x13] + mov r3, r8 + muls r3, r4 + adds r4, r3, 0 + ldrb r3, [r7, 0x14] + lsls r3, 28 + lsrs r3, 28 + adds r3, r4 + lsls r3, 16 + lsrs r3, 16 + str r5, [sp] + str r0, [sp, 0x4] + adds r0, r6, 0 + bl sub_8004378 +_08107768: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81076EC + + thumb_func_start sub_8107774 +sub_8107774: @ 8107774 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + ldrh r3, [r4, 0x1A] + ldrh r5, [r4, 0x18] + cmp r1, 0 + bne _081077E8 + ldrh r0, [r4, 0xE] + cmp r0, 0x1 + bne _0810778C + movs r2, 0 + b _0810779E +_0810778C: + ldrh r0, [r4, 0xE] + lsrs r2, r0, 1 + movs r1, 0x1 + ands r1, r0 + adds r2, r1 + subs r0, r2 + subs r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 +_0810779E: + cmp r5, 0 + bne _081077C4 + cmp r3, 0 + beq _0810782A + ldr r1, [r4] + movs r2, 0x3 + negs r2, r2 +_081077AC: + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + adds r0, r5, r3 + lsls r0, 3 + adds r0, r1 + ldr r0, [r0, 0x4] + cmp r0, r2 + bne _0810782E + cmp r3, 0 + bne _081077AC + b _0810782A +_081077C4: + cmp r3, r2 + bls _081077E4 + ldr r1, [r4] + movs r6, 0x3 + negs r6, r6 +_081077CE: + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + adds r0, r5, r3 + lsls r0, 3 + adds r0, r1 + ldr r0, [r0, 0x4] + cmp r0, r6 + bne _0810782E + cmp r3, r2 + bhi _081077CE +_081077E4: + subs r0, r5, 0x1 + b _08107856 +_081077E8: + ldrh r0, [r4, 0xE] + cmp r0, 0x1 + bne _081077F2 + movs r2, 0 + b _081077FC +_081077F2: + ldrh r0, [r4, 0xE] + lsrs r2, r0, 1 + movs r1, 0x1 + ands r1, r0 + adds r2, r1 +_081077FC: + adds r1, r0, 0 + ldrh r0, [r4, 0xC] + subs r0, r1 + cmp r5, r0 + bne _08107834 + subs r0, r1, 0x1 + cmp r3, r0 + bge _0810782A + ldr r2, [r4] + movs r6, 0x3 + negs r6, r6 + adds r1, r0, 0 +_08107814: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + adds r0, r5, r3 + lsls r0, 3 + adds r0, r2 + ldr r0, [r0, 0x4] + cmp r0, r6 + bne _0810782E + cmp r3, r1 + blt _08107814 +_0810782A: + movs r0, 0 + b _0810785C +_0810782E: + strh r3, [r4, 0x1A] + movs r0, 0x1 + b _0810785C +_08107834: + cmp r3, r2 + bcs _08107854 + ldr r1, [r4] + movs r6, 0x3 + negs r6, r6 +_0810783E: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + adds r0, r5, r3 + lsls r0, 3 + adds r0, r1 + ldr r0, [r0, 0x4] + cmp r0, r6 + bne _0810782E + cmp r3, r2 + bcc _0810783E +_08107854: + adds r0, r5, 0x1 +_08107856: + strh r2, [r4, 0x1A] + strh r0, [r4, 0x18] + movs r0, 0x2 +_0810785C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8107774 + + thumb_func_start sub_8107864 +sub_8107864: @ 8107864 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r6, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + adds r7, r5, 0 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldrh r0, [r6, 0xE] + cmp r5, r0 + bcc _0810789E + ldrb r0, [r6, 0x10] + ldrb r2, [r6, 0x15] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + ldrh r1, [r6, 0x18] + ldrh r3, [r6, 0xE] + adds r0, r6, 0 + movs r2, 0 + bl sub_81074DC + b _0810798E +_0810789E: + ldrb r0, [r6, 0x17] + lsls r0, 26 + lsrs r0, 26 + movs r1, 0x1 + bl sub_80F79D8 + ldrb r1, [r6, 0x16] + lsls r1, 26 + lsrs r1, 29 + adds r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + mov r1, r8 + cmp r1, 0 + bne _08107930 + ldrb r0, [r6, 0x10] + adds r2, r5, 0 + muls r2, r4 + lsls r2, 24 + lsrs r2, 24 + ldrb r1, [r6, 0x15] + lsls r1, 28 + lsrs r3, r1, 4 + orrs r3, r1 + lsrs r3, 24 + movs r1, 0x1 + bl sub_80044A8 + ldrh r1, [r6, 0x18] + adds r0, r6, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_81074DC + ldrh r0, [r6, 0xE] + adds r1, r0, 0 + muls r1, r4 + adds r0, r1, 0 + ldrb r4, [r6, 0x14] + lsls r4, 28 + lsrs r4, 28 + adds r4, r0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r6, 0x10] + movs r1, 0x3 + bl sub_8004950 + adds r5, r0, 0 + lsls r5, 19 + lsrs r5, 16 + ldrb r0, [r6, 0x10] + movs r1, 0x4 + bl sub_8004950 + lsls r0, 3 + subs r0, r4 + lsls r0, 16 + lsrs r0, 16 + ldrb r3, [r6, 0x10] + ldrb r2, [r6, 0x15] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + str r5, [sp] + str r0, [sp, 0x4] + adds r0, r3, 0 + movs r2, 0 + adds r3, r4, 0 + bl sub_8004378 + b _0810798E +_08107930: + ldrb r0, [r6, 0x10] + adds r2, r7, 0 + muls r2, r4 + lsls r2, 24 + lsrs r2, 24 + ldrb r1, [r6, 0x15] + lsls r1, 28 + lsrs r3, r1, 4 + orrs r3, r1 + lsrs r3, 24 + movs r1, 0 + bl sub_80044A8 + ldrh r2, [r6, 0xE] + subs r2, r7 + ldrh r1, [r6, 0x18] + adds r1, r2 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + adds r0, r6, 0 + adds r3, r7, 0 + bl sub_81074DC + ldrb r0, [r6, 0x10] + movs r1, 0x3 + bl sub_8004950 + lsls r0, 19 + lsrs r0, 16 + ldrb r3, [r6, 0x10] + ldrb r2, [r6, 0x15] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + str r0, [sp] + ldrb r0, [r6, 0x14] + lsls r0, 28 + lsrs r0, 28 + str r0, [sp, 0x4] + adds r0, r3, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 +_0810798E: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8107864 + + thumb_func_start sub_810799C +sub_810799C: @ 810799C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + ldrh r0, [r4, 0x1A] + mov r10, r0 + movs r7, 0 + movs r5, 0 + movs r0, 0 + cmp r7, r8 + bcs _08107A04 +_081079CA: + adds r6, r0, 0x1 + b _081079EA +_081079CE: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r0, [r4, 0x18] + ldrh r1, [r4, 0x1A] + adds r0, r1 + ldr r1, [r4] + lsls r0, 3 + adds r0, r1 + ldr r1, [r0, 0x4] + movs r0, 0x3 + negs r0, r0 + cmp r1, r0 + bne _081079FC +_081079EA: + adds r0, r4, 0 + mov r1, r9 + bl sub_8107774 + lsls r0, 24 + lsrs r0, 24 + orrs r5, r0 + cmp r0, 0x2 + beq _081079CE +_081079FC: + lsls r0, r6, 24 + lsrs r0, 24 + cmp r0, r8 + bcc _081079CA +_08107A04: + ldr r0, [sp] + cmp r0, 0 + beq _08107A62 + cmp r5, 0x1 + beq _08107A1A + cmp r5, 0x1 + ble _08107A16 + cmp r5, 0x3 + ble _08107A3A +_08107A16: + movs r0, 0x1 + b _08107A64 +_08107A1A: + adds r0, r4, 0 + mov r1, r10 + bl sub_81076EC + adds r0, r4, 0 + bl sub_8107594 + adds r0, r4, 0 + movs r1, 0 + bl sub_8107A74 + ldrb r0, [r4, 0x10] + movs r1, 0x2 + bl sub_8003F20 + b _08107A62 +_08107A3A: + adds r0, r4, 0 + mov r1, r10 + bl sub_81076EC + adds r0, r4, 0 + adds r1, r7, 0 + mov r2, r9 + bl sub_8107864 + adds r0, r4, 0 + bl sub_8107594 + adds r0, r4, 0 + movs r1, 0 + bl sub_8107A74 + ldrb r0, [r4, 0x10] + movs r1, 0x2 + bl sub_8003F20 +_08107A62: + movs r0, 0 +_08107A64: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810799C + + thumb_func_start sub_8107A74 +sub_8107A74: @ 8107A74 + push {r4,lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r3, [r2, 0x4] + cmp r3, 0 + beq _08107A96 + ldrh r0, [r2, 0x18] + ldrh r1, [r2, 0x1A] + adds r0, r1 + ldr r1, [r2] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0, 0x4] + adds r1, r4, 0 + bl _call_via_r3 +_08107A96: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8107A74 + + thumb_func_start sub_8107A9C +sub_8107A9C: @ 8107A9C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r6, _08107AE8 @ =gUnknown_3005E60 + movs r5, 0xF + ands r0, r5 + ldrb r3, [r6] + mov r8, r3 + movs r4, 0x10 + negs r4, r4 + adds r3, r4, 0 + mov r7, r8 + ands r3, r7 + orrs r3, r0 + lsrs r1, 20 + ands r3, r5 + orrs r3, r1 + strb r3, [r6] + ands r2, r5 + ldrb r0, [r6, 0x1] + ands r4, r0 + orrs r4, r2 + strb r4, [r6, 0x1] + ldrb r0, [r6, 0x3] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r6, 0x3] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08107AE8: .4byte gUnknown_3005E60 + thumb_func_end sub_8107A9C + + thumb_func_start sub_8107AEC +sub_8107AEC: @ 8107AEC + push {lr} + lsls r1, 24 + cmp r1, 0 + bne _08107AFA + movs r0, 0x5 + bl sub_80722CC +_08107AFA: + pop {r0} + bx r0 + thumb_func_end sub_8107AEC + + thumb_func_start sub_8107B00 +sub_8107B00: @ 8107B00 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08107B24 @ =gUnknown_3005098 + adds r2, r1, r0 + cmp r3, 0x10 + bhi _08107BC8 + lsls r0, r3, 2 + ldr r1, _08107B28 @ =_08107B2C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08107B24: .4byte gUnknown_3005098 +_08107B28: .4byte _08107B2C + .align 2, 0 +_08107B2C: + .4byte _08107B70 + .4byte _08107B70 + .4byte _08107B74 + .4byte _08107B78 + .4byte _08107B7C + .4byte _08107B80 + .4byte _08107B84 + .4byte _08107B88 + .4byte _08107B8C + .4byte _08107B90 + .4byte _08107B96 + .4byte _08107B9E + .4byte _08107BA4 + .4byte _08107BAC + .4byte _08107BB4 + .4byte _08107BBA + .4byte _08107BC2 +_08107B70: + ldr r0, [r2, 0x4] + b _08107BCC +_08107B74: + ldrh r0, [r2, 0xC] + b _08107BCC +_08107B78: + ldrh r0, [r2, 0xE] + b _08107BCC +_08107B7C: + ldrb r0, [r2, 0x10] + b _08107BCC +_08107B80: + ldrb r0, [r2, 0x11] + b _08107BCC +_08107B84: + ldrb r0, [r2, 0x12] + b _08107BCC +_08107B88: + ldrb r0, [r2, 0x13] + b _08107BCC +_08107B8C: + ldrb r0, [r2, 0x14] + b _08107B98 +_08107B90: + ldrb r0, [r2, 0x14] + lsrs r0, 4 + b _08107BCC +_08107B96: + ldrb r0, [r2, 0x15] +_08107B98: + lsls r0, 28 + lsrs r0, 28 + b _08107BCC +_08107B9E: + ldrb r0, [r2, 0x15] + lsrs r0, 4 + b _08107BCC +_08107BA4: + ldrb r0, [r2, 0x16] + lsls r0, 29 + lsrs r0, 29 + b _08107BCC +_08107BAC: + ldrb r0, [r2, 0x16] + lsls r0, 26 + lsrs r0, 29 + b _08107BCC +_08107BB4: + ldrb r0, [r2, 0x16] + lsrs r0, 6 + b _08107BCC +_08107BBA: + ldrb r0, [r2, 0x17] + lsls r0, 26 + lsrs r0, 26 + b _08107BCC +_08107BC2: + ldrb r0, [r2, 0x17] + lsrs r0, 6 + b _08107BCC +_08107BC8: + movs r0, 0x1 + negs r0, r0 +_08107BCC: + pop {r1} + bx r1 + thumb_func_end sub_8107B00 + + thumb_func_start sub_8107BD0 +sub_8107BD0: @ 8107BD0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08107BF4 @ =gUnknown_3005098 + adds r3, r1, r0 + cmp r4, 0x10 + bhi _08107CD0 + lsls r0, r4, 2 + ldr r1, _08107BF8 @ =_08107BFC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08107BF4: .4byte gUnknown_3005098 +_08107BF8: .4byte _08107BFC + .align 2, 0 +_08107BFC: + .4byte _08107C40 + .4byte _08107C40 + .4byte _08107C44 + .4byte _08107C48 + .4byte _08107C4C + .4byte _08107C50 + .4byte _08107C54 + .4byte _08107C58 + .4byte _08107C5C + .4byte _08107C68 + .4byte _08107C76 + .4byte _08107C82 + .4byte _08107C90 + .4byte _08107C9C + .4byte _08107CAA + .4byte _08107CB8 + .4byte _08107CC4 +_08107C40: + str r2, [r3, 0x4] + b _08107CD0 +_08107C44: + strh r2, [r3, 0xC] + b _08107CD0 +_08107C48: + strh r2, [r3, 0xE] + b _08107CD0 +_08107C4C: + strb r2, [r3, 0x10] + b _08107CD0 +_08107C50: + strb r2, [r3, 0x11] + b _08107CD0 +_08107C54: + strb r2, [r3, 0x12] + b _08107CD0 +_08107C58: + strb r2, [r3, 0x13] + b _08107CD0 +_08107C5C: + movs r0, 0xF + ands r2, r0 + ldrb r1, [r3, 0x14] + movs r0, 0x10 + negs r0, r0 + b _08107C6E +_08107C68: + lsls r2, 4 + ldrb r1, [r3, 0x14] + movs r0, 0xF +_08107C6E: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x14] + b _08107CD0 +_08107C76: + movs r0, 0xF + ands r2, r0 + ldrb r1, [r3, 0x15] + movs r0, 0x10 + negs r0, r0 + b _08107C88 +_08107C82: + lsls r2, 4 + ldrb r1, [r3, 0x15] + movs r0, 0xF +_08107C88: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x15] + b _08107CD0 +_08107C90: + movs r0, 0x7 + ands r2, r0 + ldrb r1, [r3, 0x16] + movs r0, 0x8 + negs r0, r0 + b _08107CB0 +_08107C9C: + movs r0, 0x7 + ands r2, r0 + lsls r2, 3 + ldrb r1, [r3, 0x16] + movs r0, 0x39 + negs r0, r0 + b _08107CB0 +_08107CAA: + lsls r2, 6 + ldrb r1, [r3, 0x16] + movs r0, 0x3F +_08107CB0: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x16] + b _08107CD0 +_08107CB8: + movs r0, 0x3F + ands r2, r0 + ldrb r1, [r3, 0x17] + movs r0, 0x40 + negs r0, r0 + b _08107CCA +_08107CC4: + lsls r2, 6 + ldrb r1, [r3, 0x17] + movs r0, 0x3F +_08107CCA: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x17] +_08107CD0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8107BD0 + + thumb_func_start sub_8107CD8 +sub_8107CD8: @ 8107CD8 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 16 + lsrs r0, 16 + bl sub_80971CC + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8107CD8 + + thumb_func_start sub_8107CF8 +sub_8107CF8: @ 8107CF8 + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r4, r3, 0 + ldr r5, [sp, 0x18] + lsls r6, 24 + lsrs r6, 24 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r2, 0x1 + bl sub_8097054 + adds r1, r0, 0 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + adds r0, r6, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_80041B8 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8107CF8 + + thumb_func_start sub_8107D38 +sub_8107D38: @ 8107D38 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + beq _08107D4A + cmp r1, 0x1 + beq _08107D54 +_08107D4A: + ldr r0, _08107D50 @ =gUnknown_8E95D9C + b _08107D56 + .align 2, 0 +_08107D50: .4byte gUnknown_8E95D9C +_08107D54: + ldr r0, _08107D64 @ =gUnknown_8E95DBC +_08107D56: + adds r1, r2, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r0} + bx r0 + .align 2, 0 +_08107D64: .4byte gUnknown_8E95DBC + thumb_func_end sub_8107D38 + + thumb_func_start sub_8107D68 +sub_8107D68: @ 8107D68 + push {r4,r5,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + ldr r4, _08107DAC @ =gUnknown_8452C94 + lsrs r1, 22 + adds r1, r4 + ldrh r5, [r1, 0x2] + lsls r5, 5 + ldr r4, _08107DB0 @ =gUnknown_8E95DDC + adds r5, r4 + movs r4, 0x80 + str r4, [sp] + str r4, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + ldrb r2, [r1] + str r2, [sp, 0x10] + ldrb r1, [r1, 0x1] + str r1, [sp, 0x14] + adds r1, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_80041F0 + add sp, 0x18 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08107DAC: .4byte gUnknown_8452C94 +_08107DB0: .4byte gUnknown_8E95DDC + thumb_func_end sub_8107D68 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/load_save.s b/asm/load_save.s new file mode 100644 index 000000000..570d44cfa --- /dev/null +++ b/asm/load_save.s @@ -0,0 +1,814 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_804BFE4 +sub_804BFE4: @ 804BFE4 + push {lr} + bl IdentifyFlash + lsls r0, 16 + cmp r0, 0 + bne _0804C000 + ldr r1, _0804BFFC @ =gUnknown_3005004 + movs r0, 0x1 + str r0, [r1] + bl sub_80007C8 + b _0804C006 + .align 2, 0 +_0804BFFC: .4byte gUnknown_3005004 +_0804C000: + ldr r1, _0804C00C @ =gUnknown_3005004 + movs r0, 0 + str r0, [r1] +_0804C006: + pop {r0} + bx r0 + .align 2, 0 +_0804C00C: .4byte gUnknown_3005004 + thumb_func_end sub_804BFE4 + + thumb_func_start sub_804C010 +sub_804C010: @ 804C010 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _0804C02C @ =gUnknown_2024588 + ldr r2, _0804C030 @ =0x010007d2 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0804C02C: .4byte gUnknown_2024588 +_0804C030: .4byte 0x010007d2 + thumb_func_end sub_804C010 + + thumb_func_start sub_804C034 +sub_804C034: @ 804C034 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _0804C050 @ =gUnknown_202552C + ldr r2, _0804C054 @ =0x01001ef4 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0804C050: .4byte gUnknown_202552C +_0804C054: .4byte 0x01001ef4 + thumb_func_end sub_804C034 + + thumb_func_start sub_804C058 +sub_804C058: @ 804C058 + push {r4,r5,lr} + ldr r4, _0804C08C @ =gUnknown_3005008 + ldr r5, [r4] + bl sub_8044EC8 + movs r1, 0x7C + ands r1, r0 + ldr r2, _0804C090 @ =gUnknown_300500C + ldr r0, _0804C094 @ =gUnknown_2024588 + adds r0, r1, r0 + str r0, [r2] + ldr r0, _0804C098 @ =gUnknown_202552C + adds r0, r1, r0 + str r0, [r4] + ldr r2, _0804C09C @ =gUnknown_3005010 + ldr r0, _0804C0A0 @ =gUnknown_2029314 + adds r1, r0 + str r1, [r2] + bl sub_8099E44 + adds r0, r5, 0 + bl sub_8110840 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804C08C: .4byte gUnknown_3005008 +_0804C090: .4byte gUnknown_300500C +_0804C094: .4byte gUnknown_2024588 +_0804C098: .4byte gUnknown_202552C +_0804C09C: .4byte gUnknown_3005010 +_0804C0A0: .4byte gUnknown_2029314 + thumb_func_end sub_804C058 + + thumb_func_start sub_804C0A4 +sub_804C0A4: @ 804C0A4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r4, _0804C160 @ =gUnknown_30030F0 + ldr r0, [r4, 0xC] + str r0, [sp] + ldr r1, [r4, 0x10] + str r1, [sp, 0x4] + movs r0, 0 + str r0, [r4, 0xC] + str r0, [r4, 0x10] + str r0, [r4, 0x20] + ldr r5, _0804C164 @ =gHeap + ldr r0, _0804C168 @ =gUnknown_300500C + ldr r1, [r0] + ldr r0, _0804C16C @ =0x00000f24 + mov r9, r0 + adds r0, r5, 0 + mov r2, r9 + bl memcpy + ldr r1, _0804C170 @ =gUnknown_3005008 + mov r10, r1 + ldr r1, [r1] + ldr r7, _0804C174 @ =0x00003d68 + ldr r0, _0804C178 @ =gHeap + 0xf24 + adds r2, r7, 0 + bl memcpy + ldr r6, _0804C17C @ =gUnknown_3005010 + ldr r1, [r6] + ldr r0, _0804C180 @ =0x000083d0 + mov r8, r0 + ldr r0, _0804C184 @ =gHeap + 0x4c8c + mov r2, r8 + bl memcpy + bl sub_804C058 + ldr r1, _0804C168 @ =gUnknown_300500C + ldr r0, [r1] + adds r1, r5, 0 + mov r2, r9 + bl memcpy + mov r1, r10 + ldr r0, [r1] + ldr r1, _0804C178 @ =gHeap + 0xf24 + adds r2, r7, 0 + bl memcpy + ldr r0, [r6] + ldr r1, _0804C184 @ =gHeap + 0x4c8c + mov r2, r8 + bl memcpy + movs r1, 0xE0 + lsls r1, 9 + adds r0, r5, 0 + bl sub_8002B80 + ldr r0, [sp, 0x4] + str r0, [r4, 0x10] + ldr r1, [sp] + str r1, [r4, 0xC] + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsls r0, 16 + lsrs r0, 16 + adds r4, r0 + adds r0, r4, 0 + bl sub_804C5A4 + ldr r1, _0804C168 @ =gUnknown_300500C + ldr r0, [r1] + movs r1, 0xF2 + lsls r1, 4 + adds r0, r1 + str r4, [r0] + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C160: .4byte gUnknown_30030F0 +_0804C164: .4byte gHeap +_0804C168: .4byte gUnknown_300500C +_0804C16C: .4byte 0x00000f24 +_0804C170: .4byte gUnknown_3005008 +_0804C174: .4byte 0x00003d68 +_0804C178: .4byte gHeap + 0xf24 +_0804C17C: .4byte gUnknown_3005010 +_0804C180: .4byte 0x000083d0 +_0804C184: .4byte gHeap + 0x4c8c + thumb_func_end sub_804C0A4 + + thumb_func_start sub_804C188 +sub_804C188: @ 804C188 + ldr r0, _0804C194 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r1, [r0, 0x9] + movs r0, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0804C194: .4byte gUnknown_300500C + thumb_func_end sub_804C188 + + thumb_func_start sub_804C198 +sub_804C198: @ 804C198 + ldr r0, _0804C1A8 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0xFE + ands r0, r1 + strb r0, [r2, 0x9] + bx lr + .align 2, 0 +_0804C1A8: .4byte gUnknown_300500C + thumb_func_end sub_804C198 + + thumb_func_start sub_804C1AC +sub_804C1AC: @ 804C1AC + ldr r0, _0804C1BC @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + bx lr + .align 2, 0 +_0804C1BC: .4byte gUnknown_300500C + thumb_func_end sub_804C1AC + + thumb_func_start sub_804C1C0 +sub_804C1C0: @ 804C1C0 + push {lr} + movs r0, 0 + bl sub_8055778 + ldr r0, _0804C1D8 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + pop {r0} + bx r0 + .align 2, 0 +_0804C1D8: .4byte gUnknown_300500C + thumb_func_end sub_804C1C0 + + thumb_func_start sub_804C1DC +sub_804C1DC: @ 804C1DC + ldr r0, _0804C1EC @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0xFE + ands r0, r1 + strb r0, [r2, 0x9] + bx lr + .align 2, 0 +_0804C1EC: .4byte gUnknown_300500C + thumb_func_end sub_804C1DC + + thumb_func_start sub_804C1F0 +sub_804C1F0: @ 804C1F0 + push {r4,lr} + ldr r0, _0804C224 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0804C228 @ =gUnknown_2024029 + ldrb r1, [r1] + adds r0, 0x34 + strb r1, [r0] + movs r4, 0 +_0804C200: + ldr r0, _0804C224 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0x64 + muls r1, r4 + adds r0, r1 + ldr r2, _0804C22C @ =gUnknown_2024284 + adds r1, r2 + adds r0, 0x38 + movs r2, 0x64 + bl memcpy + adds r4, 0x1 + cmp r4, 0x5 + ble _0804C200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804C224: .4byte gUnknown_3005008 +_0804C228: .4byte gUnknown_2024029 +_0804C22C: .4byte gUnknown_2024284 + thumb_func_end sub_804C1F0 + + thumb_func_start sub_804C230 +sub_804C230: @ 804C230 + push {r4,r5,lr} + ldr r1, _0804C264 @ =gUnknown_2024029 + ldr r0, _0804C268 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x34 + ldrb r0, [r0] + strb r0, [r1] + movs r4, 0 + ldr r5, _0804C26C @ =gUnknown_2024284 +_0804C242: + movs r0, 0x64 + adds r2, r4, 0 + muls r2, r0 + adds r0, r2, r5 + ldr r1, _0804C268 @ =gUnknown_3005008 + ldr r1, [r1] + adds r1, r2 + adds r1, 0x38 + movs r2, 0x64 + bl memcpy + adds r4, 0x1 + cmp r4, 0x5 + ble _0804C242 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804C264: .4byte gUnknown_2024029 +_0804C268: .4byte gUnknown_3005008 +_0804C26C: .4byte gUnknown_2024284 + thumb_func_end sub_804C230 + + thumb_func_start sub_804C270 +sub_804C270: @ 804C270 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0804C2B0 @ =gUnknown_3005008 + mov r12, r0 + movs r5, 0xD4 + lsls r5, 3 + mov r8, r5 + ldr r4, _0804C2B4 @ =gUnknown_2036E38 + movs r3, 0 + movs r2, 0xF +_0804C286: + mov r6, r12 + ldr r1, [r6] + adds r1, r3 + add r1, r8 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r4, 0x24 + adds r3, 0x24 + subs r2, 0x1 + cmp r2, 0 + bge _0804C286 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C2B0: .4byte gUnknown_3005008 +_0804C2B4: .4byte gUnknown_2036E38 + thumb_func_end sub_804C270 + + thumb_func_start sub_804C2B8 +sub_804C2B8: @ 804C2B8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0804C2F8 @ =gUnknown_3005008 + mov r12, r0 + movs r5, 0xD4 + lsls r5, 3 + mov r8, r5 + ldr r4, _0804C2FC @ =gUnknown_2036E38 + movs r3, 0 + movs r2, 0xF +_0804C2CE: + mov r6, r12 + ldr r1, [r6] + adds r1, r3 + adds r0, r4, 0 + add r1, r8 + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + adds r4, 0x24 + adds r3, 0x24 + subs r2, 0x1 + cmp r2, 0 + bge _0804C2CE + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C2F8: .4byte gUnknown_3005008 +_0804C2FC: .4byte gUnknown_2036E38 + thumb_func_end sub_804C2B8 + + thumb_func_start sub_804C300 +sub_804C300: @ 804C300 + push {lr} + bl sub_804C1F0 + bl sub_804C270 + pop {r0} + bx r0 + thumb_func_end sub_804C300 + + thumb_func_start sub_804C310 +sub_804C310: @ 804C310 + push {lr} + bl sub_804C230 + bl sub_804C2B8 + pop {r0} + bx r0 + thumb_func_end sub_804C310 + + thumb_func_start sub_804C320 +sub_804C320: @ 804C320 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r2, 0 + ldr r0, _0804C424 @ =gUnknown_2031C8C + mov r12, r0 + ldr r1, _0804C428 @ =gUnknown_300500C + mov r10, r1 + ldr r5, _0804C42C @ =gUnknown_3005008 + movs r3, 0xC4 + lsls r3, 2 + ldr r4, _0804C430 @ =gUnknown_2031764 +_0804C33C: + lsls r0, r2, 2 + ldr r1, [r5] + adds r1, r3 + adds r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0x29 + ble _0804C33C + movs r2, 0 + ldr r0, _0804C430 @ =gUnknown_2031764 + ldr r5, _0804C42C @ =gUnknown_3005008 + movs r3, 0xEE + lsls r3, 2 + adds r4, r0, 0 + adds r4, 0xA8 +_0804C35C: + lsls r0, r2, 2 + ldr r1, [r5] + adds r1, r3 + adds r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0x1D + ble _0804C35C + movs r2, 0 + ldr r0, _0804C430 @ =gUnknown_2031764 + ldr r5, _0804C42C @ =gUnknown_3005008 + movs r6, 0x90 + lsls r6, 1 + adds r4, r0, r6 + movs r3, 0x86 + lsls r3, 3 +_0804C37E: + lsls r0, r2, 2 + ldr r1, [r5] + adds r1, r3 + adds r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0xC + ble _0804C37E + movs r2, 0 + ldr r0, _0804C430 @ =gUnknown_2031764 + ldr r5, _0804C42C @ =gUnknown_3005008 + movs r7, 0xAA + lsls r7, 1 + adds r4, r0, r7 + ldr r3, _0804C434 @ =0x00000464 +_0804C39E: + lsls r0, r2, 2 + ldr r1, [r5] + adds r1, r3 + adds r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0x39 + ble _0804C39E + movs r2, 0 + ldr r0, _0804C430 @ =gUnknown_2031764 + ldr r5, _0804C42C @ =gUnknown_3005008 + movs r1, 0x8F + lsls r1, 2 + adds r4, r0, r1 + ldr r3, _0804C438 @ =0x0000054c +_0804C3BE: + lsls r0, r2, 2 + ldr r1, [r5] + adds r1, r3 + adds r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0x2A + ble _0804C3BE + ldr r0, _0804C430 @ =gUnknown_2031764 + ldr r5, _0804C42C @ =gUnknown_3005008 + mov r8, r5 + movs r6, 0xBA + lsls r6, 2 + adds r4, r0, r6 + movs r3, 0 + ldr r7, _0804C43C @ =0x00002cd0 + mov r9, r7 + movs r2, 0xF +_0804C3E4: + mov r0, r8 + ldr r1, [r0] + adds r1, r3 + adds r0, r4, 0 + add r1, r9 + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + adds r4, 0x24 + adds r3, 0x24 + subs r2, 0x1 + cmp r2, 0 + bge _0804C3E4 + mov r1, r10 + ldr r0, [r1] + movs r5, 0xF2 + lsls r5, 4 + adds r0, r5 + ldr r0, [r0] + mov r6, r12 + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C424: .4byte gUnknown_2031C8C +_0804C428: .4byte gUnknown_300500C +_0804C42C: .4byte gUnknown_3005008 +_0804C430: .4byte gUnknown_2031764 +_0804C434: .4byte 0x00000464 +_0804C438: .4byte 0x0000054c +_0804C43C: .4byte 0x00002cd0 + thumb_func_end sub_804C320 + + thumb_func_start sub_804C440 +sub_804C440: @ 804C440 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r2, 0 + ldr r0, _0804C550 @ =gUnknown_300500C + mov r8, r0 + ldr r1, _0804C554 @ =gUnknown_2031C8C + mov r12, r1 + ldr r5, _0804C558 @ =gUnknown_3005008 + movs r3, 0xC4 + lsls r3, 2 + ldr r4, _0804C55C @ =gUnknown_2031764 +_0804C45C: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r3 + adds r0, r1 + ldm r4!, {r1} + str r1, [r0] + adds r2, 0x1 + cmp r2, 0x29 + ble _0804C45C + movs r2, 0 + ldr r5, _0804C558 @ =gUnknown_3005008 + movs r4, 0xEE + lsls r4, 2 + ldr r0, _0804C55C @ =gUnknown_2031764 + adds r3, r0, 0 + adds r3, 0xA8 +_0804C47C: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, 0x1 + cmp r2, 0x1D + ble _0804C47C + movs r2, 0 + ldr r5, _0804C558 @ =gUnknown_3005008 + movs r4, 0x86 + lsls r4, 3 + ldr r0, _0804C55C @ =gUnknown_2031764 + movs r6, 0x90 + lsls r6, 1 + adds r3, r0, r6 +_0804C49E: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, 0x1 + cmp r2, 0xC + ble _0804C49E + movs r2, 0 + ldr r5, _0804C558 @ =gUnknown_3005008 + ldr r4, _0804C560 @ =0x00000464 + ldr r0, _0804C55C @ =gUnknown_2031764 + movs r7, 0xAA + lsls r7, 1 + adds r3, r0, r7 +_0804C4BE: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, 0x1 + cmp r2, 0x39 + ble _0804C4BE + movs r2, 0 + ldr r5, _0804C558 @ =gUnknown_3005008 + ldr r4, _0804C564 @ =0x0000054c + ldr r0, _0804C55C @ =gUnknown_2031764 + movs r1, 0x8F + lsls r1, 2 + adds r3, r0, r1 +_0804C4DE: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, 0x1 + cmp r2, 0x2A + ble _0804C4DE + ldr r2, _0804C558 @ =gUnknown_3005008 + mov r9, r2 + ldr r5, _0804C568 @ =0x00002cd0 + mov r10, r5 + ldr r4, _0804C55C @ =gUnknown_2031764 + movs r3, 0 + movs r2, 0xF +_0804C4FE: + mov r6, r9 + ldr r1, [r6] + adds r1, r3 + add r1, r10 + movs r7, 0xBA + lsls r7, 2 + adds r0, r4, r7 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r4, 0x24 + adds r3, 0x24 + subs r2, 0x1 + cmp r2, 0 + bge _0804C4FE + mov r1, r8 + ldr r0, [r1] + movs r5, 0xF2 + lsls r5, 4 + adds r0, r5 + ldr r4, [r0] + mov r2, r12 + ldr r1, [r2] + str r1, [r0] + adds r0, r4, 0 + bl sub_8099DE0 + mov r6, r8 + ldr r0, [r6] + adds r0, r5 + str r4, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C550: .4byte gUnknown_300500C +_0804C554: .4byte gUnknown_2031C8C +_0804C558: .4byte gUnknown_3005008 +_0804C55C: .4byte gUnknown_2031764 +_0804C560: .4byte 0x00000464 +_0804C564: .4byte 0x0000054c +_0804C568: .4byte 0x00002cd0 + thumb_func_end sub_804C440 + + thumb_func_start sub_804C56C +sub_804C56C: @ 804C56C + ldr r2, _0804C584 @ =gUnknown_300500C + ldr r2, [r2] + movs r3, 0xF2 + lsls r3, 4 + adds r2, r3 + ldr r2, [r2] + ldrh r3, [r0] + eors r2, r3 + eors r2, r1 + strh r2, [r0] + bx lr + .align 2, 0 +_0804C584: .4byte gUnknown_300500C + thumb_func_end sub_804C56C + + thumb_func_start sub_804C588 +sub_804C588: @ 804C588 + ldr r2, _0804C5A0 @ =gUnknown_300500C + ldr r3, [r2] + movs r2, 0xF2 + lsls r2, 4 + adds r3, r2 + ldr r2, [r0] + ldr r3, [r3] + eors r2, r3 + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_0804C5A0: .4byte gUnknown_300500C + thumb_func_end sub_804C588 + + thumb_func_start sub_804C5A4 +sub_804C5A4: @ 804C5A4 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r7, _0804C5F8 @ =gUnknown_3005008 + ldr r6, _0804C5FC @ =0x00003d38 + movs r4, 0x3 +_0804C5AE: + ldr r0, [r7] + adds r0, r6 + adds r0, 0x4 + adds r1, r5, 0 + bl sub_804C588 + adds r6, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _0804C5AE + adds r0, r5, 0 + bl sub_8054F38 + adds r0, r5, 0 + bl sub_8099E38 + adds r0, r5, 0 + bl sub_815EE6C + ldr r4, _0804C5F8 @ =gUnknown_3005008 + ldr r0, [r4] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + adds r1, r5, 0 + bl sub_804C588 + ldr r0, [r4] + movs r1, 0xA5 + lsls r1, 2 + adds r0, r1 + adds r1, r5, 0 + bl sub_804C56C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C5F8: .4byte gUnknown_3005008 +_0804C5FC: .4byte 0x00003d38 + thumb_func_end sub_804C5A4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_1.s b/asm/m4a_1.s new file mode 100644 index 000000000..849cf5c2d --- /dev/null +++ b/asm/m4a_1.s @@ -0,0 +1,1911 @@ + .include "asm/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .lcomm gUnknown_030007B8, 0x770 + + .text + + thumb_func_start umul3232H32 +umul3232H32: + adr r2, __umul3232H32 + bx r2 + .arm +__umul3232H32: + umull r2, r3, r0, r1 + add r0, r3, 0 + bx lr + thumb_func_end umul3232H32 + + thumb_func_start SoundMain +SoundMain: + ldr r0, lt_SOUND_INFO_PTR + ldr r0, [r0] + ldr r2, lt_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + cmp r2, r3 + beq SoundMain_1 + bx lr @ Exit the function if ident doesn't match ID_NUMBER. +SoundMain_1: + adds r3, 1 + str r3, [r0, o_SoundInfo_ident] + push {r4-r7,lr} + mov r1, r8 + mov r2, r9 + mov r3, r10 + mov r4, r11 + push {r0-r4} + sub sp, 0x18 + ldrb r1, [r0, o_SoundInfo_maxLines] + cmp r1, 0 @ if maxLines is 0, there is no maximum + beq SoundMain_3 + ldr r2, lt_REG_VCOUNT + ldrb r2, [r2] + cmp r2, VCOUNT_VBLANK + bhs SoundMain_2 + adds r2, TOTAL_SCANLINES +SoundMain_2: + adds r1, r2 +SoundMain_3: + str r1, [sp, 0x14] + ldr r3, [r0, o_SoundInfo_func] + cmp r3, 0 + beq SoundMain_4 + ldr r0, [r0, o_SoundInfo_intp] + bl _081DD25E + ldr r0, [sp, 0x18] +SoundMain_4: + ldr r3, [r0, o_SoundInfo_CgbSound] + bl _081DD25E + ldr r0, [sp, 0x18] + ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank] + mov r8, r3 + ldr r5, lt_o_SoundInfo_pcmBuffer + adds r5, r0 + ldrb r4, [r0, o_SoundInfo_pcmDmaCounter] + subs r7, r4, 1 + bls SoundMain_5 + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + subs r1, r7 + mov r2, r8 + muls r2, r1 + adds r5, r2 +SoundMain_5: + str r5, [sp, 0x8] + ldr r6, lt_PCM_DMA_BUF_SIZE + ldr r3, lt_SoundMainRAM_Buffer + bx r3 + + .align 2, 0 +lt_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt_ID_NUMBER: .word ID_NUMBER +lt_SoundMainRAM_Buffer: .word SoundMainRAM_Buffer + 1 +lt_REG_VCOUNT: .word REG_VCOUNT +lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer +lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE + thumb_func_end SoundMain + + thumb_func_start SoundMainRAM +SoundMainRAM: + ldrb r3, [r0, o_SoundInfo_reverb] + cmp r3, 0 + beq SoundMainRAM_NoReverb + adr r1, SoundMainRAM_Reverb + bx r1 + .arm +SoundMainRAM_Reverb: + cmp r4, 0x2 + addeq r7, r0, o_SoundInfo_pcmBuffer + addne r7, r5, r8 + mov r4, r8 +_081DCEC4: + ldrsb r0, [r5, r6] + ldrsb r1, [r5] + add r0, r0, r1 + ldrsb r1, [r7, r6] + add r0, r0, r1 + ldrsb r1, [r7], 0x1 + add r0, r0, r1 + mul r1, r0, r3 + mov r0, r1, asr 9 + tst r0, 0x80 + addne r0, r0, 0x1 + strb r0, [r5, r6] + strb r0, [r5], 0x1 + subs r4, r4, 0x1 + bgt _081DCEC4 + adr r0, _081DCF36 + 1 @ plus 1 because THUMB + bx r0 + .thumb +SoundMainRAM_NoReverb: + movs r0, 0 + mov r1, r8 + adds r6, r5 + lsrs r1, 3 + bcc SoundMainRAM_NoReverb_Ok + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Ok: + lsrs r1, 1 + bcc SoundMainRAM_NoReverb_Loop + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Loop: + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + subs r1, 1 + bgt SoundMainRAM_NoReverb_Loop +_081DCF36: + ldr r4, [sp, 0x18] + ldr r0, [r4, o_SoundInfo_divFreq] + mov r12, r0 + ldrb r0, [r4, o_SoundInfo_maxChans] + adds r4, o_SoundInfo_chans + +SoundMainRAM_ChanLoop: + str r0, [sp, 0x4] + ldr r3, [r4, o_SoundChannel_wav] + ldr r0, [sp, 0x14] + cmp r0, 0 + beq _081DCF60 + ldr r1, =REG_VCOUNT + ldrb r1, [r1] + cmp r1, VCOUNT_VBLANK + bhs _081DCF54 + adds r1, TOTAL_SCANLINES +_081DCF54: + cmp r1, r0 + blo _081DCF60 + b _081DD24A + + .pool + +_081DCF60: + ldrb r6, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r6 + bne _081DCF6A + b _081DD240 +_081DCF6A: + movs r0, 0x80 + tst r0, r6 + beq _081DCFA0 + movs r0, 0x40 + tst r0, r6 + bne _081DCFB0 + movs r6, 0x3 + strb r6, [r4, o_SoundChannel_status] + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r4, o_SoundChannel_ct] + adds r0, r1 + str r0, [r4, o_SoundChannel_cp] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [r4, o_SoundChannel_ct] + movs r5, 0 + strb r5, [r4, o_SoundChannel_ev] + str r5, [r4, o_SoundChannel_fw] + ldrb r2, [r3, 0x3] + movs r0, 0xC0 + tst r0, r2 + beq _081DCFF8 + movs r0, 0x10 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _081DCFF8 +_081DCFA0: + ldrb r5, [r4, o_SoundChannel_ev] + movs r0, 0x4 + tst r0, r6 + beq _081DCFB6 + ldrb r0, [r4, o_SoundChannel_iel] + subs r0, 1 + strb r0, [r4, o_SoundChannel_iel] + bhi _081DD006 +_081DCFB0: + movs r0, 0 + strb r0, [r4, o_SoundChannel_status] + b _081DD240 +_081DCFB6: + movs r0, 0x40 + tst r0, r6 + beq _081DCFD6 + ldrb r0, [r4, o_SoundChannel_release] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_iev] + cmp r5, r0 + bhi _081DD006 +_081DCFC8: + ldrb r5, [r4, o_SoundChannel_iev] + cmp r5, 0 + beq _081DCFB0 + movs r0, 0x4 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _081DD006 +_081DCFD6: + movs r2, 0x3 + ands r2, r6 + cmp r2, 0x2 + bne _081DCFF4 + ldrb r0, [r4, o_SoundChannel_decay] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_sustain] + cmp r5, r0 + bhi _081DD006 + adds r5, r0, 0 + beq _081DCFC8 + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] + b _081DD006 +_081DCFF4: + cmp r2, 0x3 + bne _081DD006 +_081DCFF8: + ldrb r0, [r4, o_SoundChannel_attack] + adds r5, r0 + cmp r5, 0xFF + bcc _081DD006 + movs r5, 0xFF + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] +_081DD006: + strb r5, [r4, o_SoundChannel_ev] + ldr r0, [sp, 0x18] + ldrb r0, [r0, o_SoundChannel_release] + adds r0, 0x1 + muls r0, r5 + lsrs r5, r0, 4 + ldrb r0, [r4, o_SoundChannel_rightVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_er] + ldrb r0, [r4, o_SoundChannel_leftVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_el] + movs r0, 0x10 + ands r0, r6 + str r0, [sp, 0x10] + beq _081DD03A + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r3, 0x8] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [sp, 0x10] +_081DD03A: + ldr r5, [sp, 0x8] + ldr r2, [r4, o_SoundChannel_ct] + ldr r3, [r4, o_SoundChannel_cp] + adr r0, _081DD044 + bx r0 + .arm +_081DD044: + str r8, [sp] + ldr r9, [r4, o_SoundChannel_fw] + ldrb r10, [r4, o_SoundChannel_er] + ldrb r11, [r4, o_SoundChannel_el] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x30 + beq _081DD068 + bl sub_81DD264 + b _081DD228 +_081DD068: + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + beq _081DD19C +_081DD07C: + cmp r2, 0x4 + ble _081DD0EC + subs r2, r2, r8 + movgt r9, 0 + bgt _081DD0A8 + mov r9, r8 + add r2, r2, r8 + sub r8, r2, 0x4 + sub r9, r9, r8 + ands r2, r2, 0x3 + moveq r2, 0x4 +_081DD0A8: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD0B0: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + adds r5, r5, 0x40000000 + bcc _081DD0B0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD0A8 + adds r8, r8, r9 + beq _081DD22C +_081DD0EC: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD0F4: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + subs r2, r2, 0x1 + beq _081DD164 +_081DD118: + adds r5, r5, 0x40000000 + bcc _081DD0F4 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD07C + b _081DD22C +_081DD134: + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _081DD158 + ldr r3, [sp, 0x14] + rsb lr, r2, 0 +_081DD148: + adds r2, r0, r2 + bgt _081DD1FC + sub lr, lr, r0 + b _081DD148 +_081DD158: + pop {r4,r12} + mov r2, 0 + b _081DD174 +_081DD164: + ldr r2, [sp, 0x10] + cmp r2, 0 + ldrne r3, [sp, 0xC] + bne _081DD118 +_081DD174: + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + b _081DD234 +_081DD19C: + push {r4,r12} + ldr r1, [r4, o_SoundChannel_freq] + mul r4, r12, r1 + ldrsb r0, [r3] + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_081DD1B4: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD1BC: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r4 + movs lr, r9, lsr 23 + beq _081DD208 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD134 + subs lr, lr, 0x1 + addeq r0, r0, r1 +_081DD1FC: + ldrsbne r0, [r3, lr]! + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_081DD208: + adds r5, r5, 0x40000000 + bcc _081DD1BC + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD1B4 + sub r3, r3, 0x1 + pop {r4,r12} +_081DD228: + str r9, [r4, o_SoundChannel_fw] +_081DD22C: + str r2, [r4, o_SoundChannel_ct] + str r3, [r4, o_SoundChannel_cp] +_081DD234: + ldr r8, [sp] + add r0, pc, 0x1 + bx r0 + .thumb +_081DD240: + ldr r0, [sp, 0x4] + subs r0, 1 + ble _081DD24A + adds r4, SoundChannel_size + b SoundMainRAM_ChanLoop +_081DD24A: + ldr r0, [sp, 0x18] + ldr r3, =ID_NUMBER + str r3, [r0] + add sp, 0x1C + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} +_081DD25E: + bx r3 + .pool + thumb_func_end SoundMainRAM + + arm_func_start sub_81DD264 +sub_81DD264: + ldr r6, [r4, o_SoundChannel_wav] + ldrb r0, [r4, o_SoundChannel_status] + tst r0, 0x20 + bne _081DD2B4 + orr r0, r0, 0x20 + strb r0, [r4, o_SoundChannel_status] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + beq _081DD29C + ldr r1, [r6, 0xC] + add r1, r1, r6, lsl 1 + add r1, r1, 0x20 + sub r3, r1, r3 + str r3, [r4, o_SoundChannel_cp] +_081DD29C: + ldrh r0, [r6] + cmp r0, 0 + beq _081DD2B4 + sub r3, r3, r6 + sub r3, r3, 0x10 + str r3, [r4, o_SoundChannel_cp] +_081DD2B4: + push {r8,r12,lr} + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldr r1, [r4, o_SoundChannel_freq] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + movne r8, 0x800000 + muleq r8, r12, r1 + ldrh r0, [r6] + cmp r0, 0 + beq _081DD468 + mov r0, 0xFF000000 + str r0, [r4, o_SoundChannel_xpi] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + bne _081DD3C0 + bl sub_81DD520 + mov r0, r1 + add r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD308: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD310: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD370 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD398 + subs lr, lr, 0x1 + bne _081DD358 + add r0, r0, r1 + b _081DD364 +_081DD358: + add r3, r3, lr + bl sub_81DD520 + mov r0, r1 +_081DD364: + add r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD370: + adds r5, r5, 0x40000000 + bcc _081DD310 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD308 + sub r3, r3, 0x1 + b _081DD4F0 +_081DD398: + ldr r0, [sp, 0x1C] + cmp r0, 0 + beq _081DD4F4 + ldr r3, [r4, o_SoundChannel_wav] + ldr r3, [r3, 0x8] + rsb lr, r2, 0 +_081DD3B0: + adds r2, r2, r0 + bgt _081DD358 + sub lr, lr, r0 + b _081DD3B0 +_081DD3C0: + sub r3, r3, 0x1 + bl sub_81DD520 + mov r0, r1 + sub r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD3D8: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD3E0: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD440 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD4F4 + subs lr, lr, 0x1 + bne _081DD428 + add r0, r0, r1 + b _081DD434 +_081DD428: + sub r3, r3, lr + bl sub_81DD520 + mov r0, r1 +_081DD434: + sub r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD440: + adds r5, r5, 0x40000000 + bcc _081DD3E0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD3D8 + add r3, r3, 0x2 + b _081DD4F0 +_081DD468: + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + beq _081DD4F0 + ldrsb r0, [r3, -0x1]! + ldrsb r1, [r3, -0x1] + sub r1, r1, r0 +_081DD480: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD488: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD4CC + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD4F4 + ldrsb r0, [r3, -lr]! + ldrsb r1, [r3, -0x1] + sub r1, r1, r0 +_081DD4CC: + adds r5, r5, 0x40000000 + bcc _081DD488 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD480 + add r3, r3, 0x1 +_081DD4F0: + pop {r8,r12,pc} +_081DD4F4: + mov r2, 0 + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + pop {r8,r12,pc} + arm_func_end sub_81DD264 + + arm_func_start sub_81DD520 +sub_81DD520: + push {r0,r2,r5-r7,lr} + mov r0, r3, lsr 6 + ldr r1, [r4, o_SoundChannel_xpi] + cmp r0, r1 + beq _081DD594 + str r0, [r4, o_SoundChannel_xpi] + mov r1, 0x21 + mul r2, r1, r0 + ldr r1, [r4, o_SoundChannel_wav] + add r2, r2, r1 + add r2, r2, 0x10 + ldr r5, =gUnknown_030007B8 + ldr r6, =gDeltaEncodingTable + mov r7, 0x40 + ldrb lr, [r2], 1 + strb lr, [r5], 1 + ldrb r1, [r2], 1 + b _081DD57C +_081DD568: + ldrb r1, [r2], 1 + mov r0, r1, lsr 4 + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], 1 +_081DD57C: + and r0, r1, 0xF + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], 1 + subs r7, r7, 2 + bgt _081DD568 +_081DD594: + ldr r5, =gUnknown_030007B8 + and r0, r3, 0x3F + ldrsb r1, [r5, r0] + pop {r0,r2,r5-r7,pc} + .pool + arm_func_end sub_81DD520 + + thumb_func_start SoundMainBTM +SoundMainBTM: + mov r12, r4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + movs r4, 0 + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + mov r4, r12 + bx lr + thumb_func_end SoundMainBTM + + thumb_func_start RealClearChain +RealClearChain: + ldr r3, [r0, 0x2C] + cmp r3, 0 + beq _081DD5E2 + ldr r1, [r0, 0x34] + ldr r2, [r0, 0x30] + cmp r2, 0 + beq _081DD5D6 + str r1, [r2, 0x34] + b _081DD5D8 +_081DD5D6: + str r1, [r3, 0x20] +_081DD5D8: + cmp r1, 0 + beq _081DD5DE + str r2, [r1, 0x30] +_081DD5DE: + movs r1, 0 + str r1, [r0, 0x2C] +_081DD5E2: + bx lr + thumb_func_end RealClearChain + + thumb_func_start ply_fine +ply_fine: + push {r4,r5,lr} + adds r5, r1, 0 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq ply_fine_done +ply_fine_loop: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq ply_fine_ok + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] +ply_fine_ok: + adds r0, r4, 0 + bl RealClearChain + ldr r4, [r4, 0x34] + cmp r4, 0 + bne ply_fine_loop +ply_fine_done: + movs r0, 0 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end ply_fine + + thumb_func_start MPlayJumpTableCopy +MPlayJumpTableCopy: + mov r12, lr + movs r1, 0x24 + ldr r2, lt_MPlayJumpTableTemplate +MPlayJumpTableCopy_Loop: + ldr r3, [r2] + bl chk_adr_r2 + stm r0!, {r3} + adds r2, 0x4 + subs r1, 0x1 + bgt MPlayJumpTableCopy_Loop + bx r12 + thumb_func_end MPlayJumpTableCopy + + .align 2, 0 + .thumb_func +ldrb_r3_r2: + ldrb r3, [r2] + +@ This attempts to protect against reading anything from the BIOS ROM +@ besides the jump table template. +@ It assumes that the jump table template is located at the end of the ROM. + .thumb_func +chk_adr_r2: + push {r0} + lsrs r0, r2, 25 + bne chk_adr_r2_done @ if adr >= 0x2000000 (i.e. not in BIOS ROM), accept it + ldr r0, lt_MPlayJumpTableTemplate + cmp r2, r0 + blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it + lsrs r0, r2, 14 + beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it +chk_adr_r2_reject: + movs r3, 0 +chk_adr_r2_done: + pop {r0} + bx lr + + .align 2, 0 +lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i: + ldr r2, [r1, 0x40] +_081DD64A: + adds r3, r2, 0x1 + str r3, [r1, 0x40] + ldrb r3, [r2] + b chk_adr_r2 + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_goto +ply_goto: + push {lr} +ply_goto_1: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r2, 0x3] + lsls r0, 8 + ldrb r3, [r2, 0x2] + orrs r0, r3 + lsls r0, 8 + ldrb r3, [r2, 0x1] + orrs r0, r3 + lsls r0, 8 + bl ldrb_r3_r2 + orrs r0, r3 + str r0, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_goto + + thumb_func_start ply_patt +ply_patt: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 3 + bhs ply_patt_done + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r2, 0x4 + str r2, [r3, o_MusicPlayerTrack_patternStack] + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + adds r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + b ply_goto +ply_patt_done: + b ply_fine + thumb_func_end ply_patt + + thumb_func_start ply_pend +ply_pend: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 0 + beq ply_pend_done + subs r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r3, o_MusicPlayerTrack_patternStack] + str r2, [r1, o_MusicPlayerTrack_cmdPtr] +ply_pend_done: + bx lr + thumb_func_end ply_pend + + thumb_func_start ply_rept +ply_rept: + push {lr} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0 + bne ply_rept_1 + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b ply_goto_1 +ply_rept_1: + ldrb r3, [r1, o_MusicPlayerTrack_repN] + adds r3, 1 + strb r3, [r1, o_MusicPlayerTrack_repN] + mov r12, r3 + bl ld_r3_tp_adr_i + cmp r12, r3 + bhs ply_rept_2 + b ply_goto_1 +ply_rept_2: + movs r3, 0 + strb r3, [r1, o_MusicPlayerTrack_repN] + adds r2, 5 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_rept + + thumb_func_start ply_prio +ply_prio: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_priority] + bx r12 + thumb_func_end ply_prio + + thumb_func_start ply_tempo +ply_tempo: + mov r12, lr + bl ld_r3_tp_adr_i + lsls r3, 1 + strh r3, [r0, o_MusicPlayerInfo_tempoD] + ldrh r2, [r0, o_MusicPlayerInfo_tempoU] + muls r3, r2 + lsrs r3, 8 + strh r3, [r0, o_MusicPlayerInfo_tempoI] + bx r12 + thumb_func_end ply_tempo + + thumb_func_start ply_keysh +ply_keysh: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_keyShift] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_keysh + + thumb_func_start ply_voice +ply_voice: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 2 + ldr r3, [r0, o_MusicPlayerInfo_tone] + adds r2, r3 + ldr r3, [r2] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_type] + ldr r3, [r2, 0x4] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_wav] + ldr r3, [r2, 0x8] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_attack] + bx r12 + thumb_func_end ply_voice + + thumb_func_start ply_vol +ply_vol: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_vol] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_vol + + thumb_func_start ply_pan +ply_pan: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_pan] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_pan + + thumb_func_start ply_bend +ply_bend: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_bend] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bend + + thumb_func_start ply_bendr +ply_bendr: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_bendRange] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bendr + + thumb_func_start ply_lfodl +ply_lfodl: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_lfoDelay] + bx r12 + thumb_func_end ply_lfodl + + thumb_func_start ply_modt +ply_modt: + mov r12, lr + bl ld_r3_tp_adr_i + ldrb r0, [r1, o_MusicPlayerTrack_modT] + cmp r0, r3 + beq _081DD7AA + strb r3, [r1, o_MusicPlayerTrack_modT] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xF + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] +_081DD7AA: + bx r12 + thumb_func_end ply_modt + + thumb_func_start ply_tune +ply_tune: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_tune] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_tune + + thumb_func_start ply_port +ply_port: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + ldr r0, =REG_SOUND1CNT_L @ sound register base address + adds r0, r3 + bl _081DD64A + strb r3, [r0] + bx r12 + .pool + thumb_func_end ply_port + + thumb_func_start m4aSoundVSync +m4aSoundVSync: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + + @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + subs r3, r2 + cmp r3, 1 + bhi m4aSoundVSync_Done + + @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. + ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] + subs r1, 1 + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + bgt m4aSoundVSync_Done + + @ Reload the PCM DMA counter. + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + + ldr r2, =REG_DMA1 + + ldr r1, [r2, 0x8] @ DMA1CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA1 @ branch if repeat bit isn't set + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0x8] @ DMA1CNT + +m4aSoundVSync_SkipDMA1: + ldr r1, [r2, 0xC + 0x8] @ DMA2CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA2 @ branch if repeat bit isn't set + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0xC + 0x8] @ DMA2CNT + +m4aSoundVSync_SkipDMA2: + + @ turn off DMA1/DMA2 + movs r1, DMA_32BIT >> 8 + lsls r1, 8 + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + + @ turn on DMA1/DMA2 direct-sound FIFO mode + movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8 + lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode) + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + +m4aSoundVSync_Done: + bx lr + + .pool + thumb_func_end m4aSoundVSync + + thumb_func_start MPlayMain +MPlayMain: + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_MusicPlayerInfo_ident] + cmp r2, r3 + beq _081DD82E + bx lr +_081DD82E: + adds r3, 0x1 + str r3, [r0, o_MusicPlayerInfo_ident] + push {r0,lr} + ldr r3, [r0, o_MusicPlayerInfo_func] + cmp r3, 0 + beq _081DD840 + ldr r0, [r0, o_MusicPlayerInfo_intp] + bl call_r3 +_081DD840: + pop {r0} + push {r4-r7} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + adds r7, r0, 0 + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _081DD858 + b _081DDA6C +_081DD858: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + mov r8, r0 + adds r0, r7, 0 + bl FadeOutBody + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _081DD86C + b _081DDA6C +_081DD86C: + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + ldrh r1, [r7, o_MusicPlayerInfo_tempoI] + adds r0, r1 + b _081DD9BC +_081DD874: + ldrb r6, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] + movs r3, 0x1 + movs r4, 0 +_081DD87C: + ldrb r0, [r5] + movs r1, 0x80 + tst r1, r0 + bne _081DD886 + b _081DD998 +_081DD886: + mov r10, r3 + orrs r4, r3 + mov r11, r4 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _081DD8BA +_081DD892: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DD8AE + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _081DD8B4 + subs r0, 0x1 + strb r0, [r4, 0x10] + bne _081DD8B4 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] + b _081DD8B4 +_081DD8AE: + adds r0, r4, 0 + bl ClearChain +_081DD8B4: + ldr r4, [r4, 0x34] + cmp r4, 0 + bne _081DD892 +_081DD8BA: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x40 + tst r0, r3 + beq _081DD938 + adds r0, r5, 0 + bl Clear64byte + movs r0, 0x80 + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, o_MusicPlayerTrack_bendRange] + movs r0, 0x40 + strb r0, [r5, o_MusicPlayerTrack_volX] + movs r0, 0x16 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] + movs r0, 0x1 + adds r1, r5, 0x6 + strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] + b _081DD938 +_081DD8E0: + ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r1, [r2] + cmp r1, 0x80 + bhs _081DD8EC + ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] + b _081DD8F6 +_081DD8EC: + adds r2, 0x1 + str r2, [r5, o_MusicPlayerTrack_cmdPtr] + cmp r1, 0xBD + bcc _081DD8F6 + strb r1, [r5, o_MusicPlayerTrack_runningStatus] +_081DD8F6: + cmp r1, 0xCF + bcc _081DD90C + mov r0, r8 + ldr r3, [r0, o_SoundInfo_plynote] + adds r0, r1, 0 + subs r0, 0xCF + adds r1, r7, 0 + adds r2, r5, 0 + bl call_r3 + b _081DD938 +_081DD90C: + cmp r1, 0xB0 + bls _081DD92E + adds r0, r1, 0 + subs r0, 0xB1 + strb r0, [r7, o_MusicPlayerInfo_cmd] + mov r3, r8 + ldr r3, [r3, o_SoundInfo_MPlayJumpTable] + lsls r0, 2 + ldr r3, [r3, r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl call_r3 + ldrb r0, [r5, o_MusicPlayerTrack_flags] + cmp r0, 0 + beq _081DD994 + b _081DD938 +_081DD92E: + ldr r0, lt_gClockTable + subs r1, 0x80 + adds r1, r0 + ldrb r0, [r1] + strb r0, [r5, o_MusicPlayerTrack_wait] +_081DD938: + ldrb r0, [r5, o_MusicPlayerTrack_wait] + cmp r0, 0 + beq _081DD8E0 + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_wait] + ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] + cmp r1, 0 + beq _081DD994 + ldrb r0, [r5, o_MusicPlayerTrack_mod] + cmp r0, 0 + beq _081DD994 + ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + cmp r0, 0 + beq _081DD95A + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + b _081DD994 +_081DD95A: + ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r0, r1 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r1, r0, 0 + subs r0, 0x40 + lsls r0, 24 + bpl _081DD96E + lsls r2, r1, 24 + asrs r2, 24 + b _081DD972 +_081DD96E: + movs r0, 0x80 + subs r2, r0, r1 +_081DD972: + ldrb r0, [r5, o_MusicPlayerTrack_mod] + muls r0, r2 + asrs r2, r0, 6 + ldrb r0, [r5, o_MusicPlayerTrack_modM] + eors r0, r2 + lsls r0, 24 + beq _081DD994 + strb r2, [r5, o_MusicPlayerTrack_modM] + ldrb r0, [r5] + ldrb r1, [r5, o_MusicPlayerTrack_modT] + cmp r1, 0 + bne _081DD98E + movs r1, 0xC + b _081DD990 +_081DD98E: + movs r1, 0x3 +_081DD990: + orrs r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] +_081DD994: + mov r3, r10 + mov r4, r11 +_081DD998: + subs r6, 0x1 + ble _081DD9A4 + movs r0, 0x50 + adds r5, r0 + lsls r3, 1 + b _081DD87C +_081DD9A4: + ldr r0, [r7, o_MusicPlayerInfo_clock] + adds r0, 0x1 + str r0, [r7, o_MusicPlayerInfo_clock] + cmp r4, 0 + bne _081DD9B6 + movs r0, 0x80 + lsls r0, 24 + str r0, [r7, o_MusicPlayerInfo_status] + b _081DDA6C +_081DD9B6: + str r4, [r7, o_MusicPlayerInfo_status] + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + subs r0, 0x96 +_081DD9BC: + strh r0, [r7, o_MusicPlayerInfo_tempoC] + cmp r0, 0x96 + bcc _081DD9C4 + b _081DD874 +_081DD9C4: + ldrb r2, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] +_081DD9C8: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0x80 + tst r1, r0 + beq _081DDA62 + movs r1, 0xF + tst r1, r0 + beq _081DDA62 + mov r9, r2 + adds r0, r7, 0 + adds r1, r5, 0 + bl TrkVolPitSet + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _081DDA58 +_081DD9E6: + ldrb r1, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r1 + bne _081DD9F6 + adds r0, r4, 0 + bl ClearChain + b _081DDA52 +_081DD9F6: + ldrb r0, [r4, o_SoundChannel_type] + movs r6, 0x7 + ands r6, r0 + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x3 + tst r0, r3 + beq _081DDA14 + bl ChnVolSetAsm + cmp r6, 0 + beq _081DDA14 + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] +_081DDA14: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0xC + tst r0, r3 + beq _081DDA52 + ldrb r1, [r4, o_SoundChannel_ky] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r2, r1, r0 + bpl _081DDA28 + movs r2, 0 +_081DDA28: + cmp r6, 0 + beq _081DDA46 + mov r0, r8 + ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + adds r0, r6, 0 + bl call_r3 + str r0, [r4, o_CgbChannel_fr] + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] + b _081DDA52 +_081DDA46: + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + ldr r0, [r4, o_SoundChannel_wav] + bl MidiKeyToFreq + str r0, [r4, o_SoundChannel_freq] +_081DDA52: + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne _081DD9E6 +_081DDA58: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0xF0 + ands r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] + mov r2, r9 +_081DDA62: + subs r2, 0x1 + ble _081DDA6C + movs r0, 0x50 + adds r5, r0 + bgt _081DD9C8 +_081DDA6C: + ldr r0, lt2_ID_NUMBER + str r0, [r7, o_MusicPlayerInfo_ident] + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} + +call_r3: + bx r3 + + .align 2, 0 +lt_gClockTable: .word gClockTable +lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt2_ID_NUMBER: .word ID_NUMBER + thumb_func_end MPlayMain + + thumb_func_start TrackStop +TrackStop: + push {r4-r6,lr} + adds r5, r1, 0 + ldrb r1, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x80 + tst r0, r1 + beq TrackStop_Done + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq TrackStop_3 + movs r6, 0 +TrackStop_Loop: + ldrb r0, [r4, o_SoundChannel_status] + cmp r0, 0 + beq TrackStop_2 + ldrb r0, [r4, o_SoundChannel_type] + movs r3, 0x7 + ands r0, r3 + beq TrackStop_1 + ldr r3, =SOUND_INFO_PTR + ldr r3, [r3] + ldr r3, [r3, o_SoundInfo_CgbOscOff] + bl call_r3 +TrackStop_1: + strb r6, [r4, o_SoundChannel_status] +TrackStop_2: + str r6, [r4, o_SoundChannel_track] + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne TrackStop_Loop +TrackStop_3: + str r4, [r5, o_MusicPlayerTrack_chan] +TrackStop_Done: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end TrackStop + + thumb_func_start ChnVolSetAsm +ChnVolSetAsm: + ldrb r1, [r4, 0x12] + movs r0, 0x14 + ldrsb r2, [r4, r0] + movs r3, 0x80 + adds r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x10] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _081DDAE8 + movs r0, 0xFF +_081DDAE8: + strb r0, [r4, 0x2] + movs r3, 0x7F + subs r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x11] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _081DDAFC + movs r0, 0xFF +_081DDAFC: + strb r0, [r4, 0x3] + bx lr + thumb_func_end ChnVolSetAsm + + thumb_func_start ply_note +ply_note: + push {r4-r7,lr} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + sub sp, 0x18 + str r1, [sp] + adds r5, r2, 0 + ldr r1, =SOUND_INFO_PTR + ldr r1, [r1] + str r1, [sp, 0x4] + ldr r1, =gClockTable + adds r0, r1 + ldrb r0, [r0] + strb r0, [r5, o_MusicPlayerTrack_gateTime] + ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB46 + strb r0, [r5, o_MusicPlayerTrack_key] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB44 + strb r0, [r5, o_MusicPlayerTrack_velocity] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB44 + ldrb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r1, r0 + strb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r3, 0x1 +_081DDB44: + str r3, [r5, o_MusicPlayerTrack_cmdPtr] +_081DDB46: + movs r0, 0 + str r0, [sp, 0x14] + adds r4, r5, 0 + adds r4, o_MusicPlayerTrack_ToneData_type + ldrb r2, [r4] + movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL + tst r0, r2 + beq _081DDB98 + ldrb r3, [r5, o_MusicPlayerTrack_key] + movs r0, TONEDATA_TYPE_SPL + tst r0, r2 + beq _081DDB66 + ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] + adds r1, r3 + ldrb r0, [r1] + b _081DDB68 +_081DDB66: + adds r0, r3, 0 +_081DDB68: + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] + adds r1, r0 + mov r9, r1 + mov r6, r9 + ldrb r1, [r6] + movs r0, 0xC0 + tst r0, r1 + beq _081DDB80 + b _081DDCEA +_081DDB80: + movs r0, 0x80 + tst r0, r2 + beq _081DDB9C + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + beq _081DDB94 + subs r1, 0xC0 + lsls r1, 1 + str r1, [sp, 0x14] +_081DDB94: + ldrb r3, [r6, 0x1] + b _081DDB9C +_081DDB98: + mov r9, r4 + ldrb r3, [r5, 0x5] +_081DDB9C: + str r3, [sp, 0x8] + ldr r6, [sp] + ldrb r1, [r6, 0x9] + ldrb r0, [r5, 0x1D] + adds r0, r1 + cmp r0, 0xFF + bls _081DDBAC + movs r0, 0xFF +_081DDBAC: + str r0, [sp, 0x10] + mov r6, r9 + ldrb r0, [r6] + movs r6, 0x7 + ands r6, r0 + str r6, [sp, 0xC] + beq _081DDBEC + ldr r0, [sp, 0x4] + ldr r4, [r0, 0x1C] + cmp r4, 0 + bne _081DDBC4 + b _081DDCEA +_081DDBC4: + subs r6, 0x1 + lsls r0, r6, 6 + adds r4, r0 + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DDC40 + movs r0, 0x40 + tst r0, r1 + bne _081DDC40 + ldrb r1, [r4, 0x13] + ldr r0, [sp, 0x10] + cmp r1, r0 + bcc _081DDC40 + beq _081DDBE4 + b _081DDCEA +_081DDBE4: + ldr r0, [r4, 0x2C] + cmp r0, r5 + bcs _081DDC40 + b _081DDCEA +_081DDBEC: + ldr r6, [sp, 0x10] + adds r7, r5, 0 + movs r2, 0 + mov r8, r2 + ldr r4, [sp, 0x4] + ldrb r3, [r4, 0x6] + adds r4, 0x50 +_081DDBFA: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DDC40 + movs r0, 0x40 + tst r0, r1 + beq _081DDC14 + cmp r2, 0 + bne _081DDC18 + adds r2, 0x1 + ldrb r6, [r4, 0x13] + ldr r7, [r4, 0x2C] + b _081DDC32 +_081DDC14: + cmp r2, 0 + bne _081DDC34 +_081DDC18: + ldrb r0, [r4, 0x13] + cmp r0, r6 + bcs _081DDC24 + adds r6, r0, 0 + ldr r7, [r4, 0x2C] + b _081DDC32 +_081DDC24: + bhi _081DDC34 + ldr r0, [r4, 0x2C] + cmp r0, r7 + bls _081DDC30 + adds r7, r0, 0 + b _081DDC32 +_081DDC30: + bcc _081DDC34 +_081DDC32: + mov r8, r4 +_081DDC34: + adds r4, 0x40 + subs r3, 0x1 + bgt _081DDBFA + mov r4, r8 + cmp r4, 0 + beq _081DDCEA +_081DDC40: + adds r0, r4, 0 + bl ClearChain + movs r1, 0 + str r1, [r4, 0x30] + ldr r3, [r5, 0x20] + str r3, [r4, 0x34] + cmp r3, 0 + beq _081DDC54 + str r4, [r3, 0x30] +_081DDC54: + str r4, [r5, 0x20] + str r5, [r4, 0x2C] + ldrb r0, [r5, 0x1B] + strb r0, [r5, 0x1C] + cmp r0, r1 + beq _081DDC66 + adds r1, r5, 0 + bl clear_modM +_081DDC66: + ldr r0, [sp] + adds r1, r5, 0 + bl TrkVolPitSet + ldr r0, [r5, 0x4] + str r0, [r4, 0x10] + ldr r0, [sp, 0x10] + strb r0, [r4, 0x13] + ldr r0, [sp, 0x8] + strb r0, [r4, 0x8] + ldr r0, [sp, 0x14] + strb r0, [r4, 0x14] + mov r6, r9 + ldrb r0, [r6] + strb r0, [r4, 0x1] + ldr r7, [r6, 0x4] + str r7, [r4, 0x24] + ldr r0, [r6, 0x8] + str r0, [r4, 0x4] + ldrh r0, [r5, 0x1E] + strh r0, [r4, 0xC] + bl ChnVolSetAsm + ldrb r1, [r4, 0x8] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r3, r1, r0 + bpl _081DDCA0 + movs r3, 0 +_081DDCA0: + ldr r6, [sp, 0xC] + cmp r6, 0 + beq _081DDCCE + mov r6, r9 + ldrb r0, [r6, 0x2] + strb r0, [r4, 0x1E] + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + bne _081DDCBA + movs r0, 0x70 + tst r0, r1 + bne _081DDCBC +_081DDCBA: + movs r1, 0x8 +_081DDCBC: + strb r1, [r4, 0x1F] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + ldr r0, [sp, 0xC] + ldr r3, [sp, 0x4] + ldr r3, [r3, 0x30] + bl call_r3 + b _081DDCDC +_081DDCCE: + ldr r0, [r5, o_MusicPlayerTrack_unk_3C] + str r0, [r4, 0x18] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + adds r0, r7, 0 + bl MidiKeyToFreq +_081DDCDC: + str r0, [r4, 0x20] + movs r0, 0x80 + strb r0, [r4] + ldrb r1, [r5] + movs r0, 0xF0 + ands r0, r1 + strb r0, [r5] +_081DDCEA: + add sp, 0x18 + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r0} + bx r0 + .pool + thumb_func_end ply_note + + thumb_func_start ply_endtie +ply_endtie: + push {r4,r5} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0x80 + bhs _081DDD16 + strb r3, [r1, o_MusicPlayerTrack_key] + adds r2, 0x1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b _081DDD18 +_081DDD16: + ldrb r3, [r1, o_MusicPlayerTrack_key] +_081DDD18: + ldr r1, [r1, o_MusicPlayerTrack_chan] + cmp r1, 0 + beq _081DDD40 + movs r4, 0x83 + movs r5, 0x40 +_081DDD22: + ldrb r2, [r1, o_SoundChannel_status] + tst r2, r4 + beq _081DDD3A + tst r2, r5 + bne _081DDD3A + ldrb r0, [r1, o_SoundChannel_mk] + cmp r0, r3 + bne _081DDD3A + movs r0, 0x40 + orrs r2, r0 + strb r2, [r1, o_SoundChannel_status] + b _081DDD40 +_081DDD3A: + ldr r1, [r1, o_SoundChannel_np] + cmp r1, 0 + bne _081DDD22 +_081DDD40: + pop {r4,r5} + bx lr + thumb_func_end ply_endtie + + thumb_func_start clear_modM +clear_modM: + movs r2, 0 + strb r2, [r1, o_MusicPlayerTrack_modM] + strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] + ldrb r2, [r1, o_MusicPlayerTrack_modT] + cmp r2, 0 + bne _081DDD54 + movs r2, 0xC + b _081DDD56 +_081DDD54: + movs r2, 0x3 +_081DDD56: + ldrb r3, [r1, o_MusicPlayerTrack_flags] + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx lr + thumb_func_end clear_modM + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i_unchecked: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r3, r2, 1 + str r3, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + bx lr + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_lfos +ply_lfos: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] + cmp r3, 0 + bne _081DDD7C + bl clear_modM +_081DDD7C: + bx r12 + thumb_func_end ply_lfos + + thumb_func_start ply_mod +ply_mod: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_mod] + cmp r3, 0 + bne _081DDD90 + bl clear_modM +_081DDD90: + bx r12 + thumb_func_end ply_mod + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_3.s b/asm/m4a_3.s new file mode 100644 index 000000000..a842ae925 --- /dev/null +++ b/asm/m4a_3.s @@ -0,0 +1,574 @@ + .include "asm/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .text + + thumb_func_start CgbSound +CgbSound: @ 81DEA70 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r0, =SOUND_INFO_PTR + ldr r0, [r0] + str r0, [sp, 0x4] + ldrb r0, [r0, 0xA] + cmp r0, 0 + beq _081DEA94 + subs r0, 0x1 + ldr r1, [sp, 0x4] + strb r0, [r1, 0xA] + b _081DEA9A + .pool +_081DEA94: + movs r0, 0xE + ldr r2, [sp, 0x4] + strb r0, [r2, 0xA] +_081DEA9A: + movs r6, 0x1 + ldr r0, [sp, 0x4] + ldr r4, [r0, 0x1C] +_081DEAA0: + ldrb r1, [r4] + movs r0, 0xC7 + ands r0, r1 + adds r2, r6, 0x1 + mov r10, r2 + movs r2, 0x40 + adds r2, r4 + mov r9, r2 + cmp r0, 0 + bne _081DEAB6 + b _081DEEA0 +_081DEAB6: + cmp r6, 0x2 + beq _081DEAE8 + cmp r6, 0x2 + bgt _081DEAC4 + cmp r6, 0x1 + beq _081DEACA + b _081DEB20 +_081DEAC4: + cmp r6, 0x3 + beq _081DEB00 + b _081DEB20 +_081DEACA: + ldr r0, =REG_NR10 + str r0, [sp, 0x8] + ldr r7, =REG_NR11 + ldr r2, =REG_NR12 + str r2, [sp, 0xC] + adds r0, 0x4 + str r0, [sp, 0x10] + adds r2, 0x2 + b _081DEB30 + .pool +_081DEAE8: + ldr r0, =REG_NR10 + 1 + str r0, [sp, 0x8] + ldr r7, =REG_NR21 + ldr r2, =REG_NR22 + b _081DEB28 + .pool +_081DEB00: + ldr r0, =REG_NR30 + str r0, [sp, 0x8] + ldr r7, =REG_NR31 + ldr r2, =REG_NR32 + str r2, [sp, 0xC] + adds r0, 0x4 + str r0, [sp, 0x10] + adds r2, 0x2 + b _081DEB30 + .pool +_081DEB20: + ldr r0, =REG_NR30 + 1 + str r0, [sp, 0x8] + ldr r7, =REG_NR41 + ldr r2, =REG_NR42 +_081DEB28: + str r2, [sp, 0xC] + adds r0, 0xB + str r0, [sp, 0x10] + adds r2, 0x4 +_081DEB30: + str r2, [sp, 0x14] + ldr r0, [sp, 0x4] + ldrb r0, [r0, 0xA] + str r0, [sp] + ldr r2, [sp, 0xC] + ldrb r0, [r2] + mov r8, r0 + adds r2, r1, 0 + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _081DEC26 + movs r3, 0x40 + adds r0, r3, 0 + ands r0, r2 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0x1 + mov r10, r0 + movs r1, 0x40 + adds r1, r4 + mov r9, r1 + cmp r5, 0 + bne _081DEC4A + movs r0, 0x3 + strb r0, [r4] + strb r0, [r4, 0x1D] + adds r0, r4, 0 + str r3, [sp, 0x18] + bl CgbModVol + ldr r3, [sp, 0x18] + cmp r6, 0x2 + beq _081DEB98 + cmp r6, 0x2 + bgt _081DEB8C + cmp r6, 0x1 + beq _081DEB92 + b _081DEBEC + .pool +_081DEB8C: + cmp r6, 0x3 + beq _081DEBA4 + b _081DEBEC +_081DEB92: + ldrb r0, [r4, 0x1F] + ldr r2, [sp, 0x8] + strb r0, [r2] +_081DEB98: + ldr r0, [r4, 0x24] + lsls r0, 6 + ldrb r1, [r4, 0x1E] + adds r0, r1, r0 + strb r0, [r7] + b _081DEBF8 +_081DEBA4: + ldr r1, [r4, 0x24] + ldr r0, [r4, 0x28] + cmp r1, r0 + beq _081DEBCC + ldr r2, [sp, 0x8] + strb r3, [r2] + ldr r1, =REG_WAVE_RAM + ldr r2, [r4, 0x24] + ldr r0, [r2] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r2, 0x4] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r2, 0x8] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r2, 0xC] + str r0, [r1] + str r2, [r4, 0x28] +_081DEBCC: + ldr r0, [sp, 0x8] + strb r5, [r0] + ldrb r0, [r4, 0x1E] + strb r0, [r7] + ldrb r0, [r4, 0x1E] + cmp r0, 0 + beq _081DEBE4 + movs r0, 0xC0 + b _081DEC06 + .pool +_081DEBE4: + movs r1, 0x80 + negs r1, r1 + strb r1, [r4, 0x1A] + b _081DEC08 +_081DEBEC: + ldrb r0, [r4, 0x1E] + strb r0, [r7] + ldr r0, [r4, 0x24] + lsls r0, 3 + ldr r2, [sp, 0x10] + strb r0, [r2] +_081DEBF8: + ldrb r0, [r4, 0x4] + adds r0, 0x8 + mov r8, r0 + ldrb r0, [r4, 0x1E] + cmp r0, 0 + beq _081DEC06 + movs r0, 0x40 +_081DEC06: + strb r0, [r4, 0x1A] +_081DEC08: + ldrb r1, [r4, 0x4] + movs r2, 0 + strb r1, [r4, 0xB] + movs r0, 0xFF + ands r0, r1 + adds r1, r6, 0x1 + mov r10, r1 + movs r1, 0x40 + adds r1, r4 + mov r9, r1 + cmp r0, 0 + bne _081DEC22 + b _081DED5E +_081DEC22: + strb r2, [r4, 0x9] + b _081DED8C +_081DEC26: + movs r0, 0x4 + ands r0, r2 + cmp r0, 0 + beq _081DEC58 + ldrb r0, [r4, 0xD] + subs r0, 0x1 + strb r0, [r4, 0xD] + movs r2, 0xFF + ands r0, r2 + lsls r0, 24 + adds r1, r6, 0x1 + mov r10, r1 + movs r2, 0x40 + adds r2, r4 + mov r9, r2 + cmp r0, 0 + ble _081DEC4A + b _081DED9E +_081DEC4A: + lsls r0, r6, 24 + lsrs r0, 24 + bl CgbOscOff + movs r0, 0 + strb r0, [r4] + b _081DEE9C +_081DEC58: + movs r0, 0x40 + ands r0, r1 + adds r2, r6, 0x1 + mov r10, r2 + movs r2, 0x40 + adds r2, r4 + mov r9, r2 + cmp r0, 0 + beq _081DEC98 + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _081DEC98 + movs r0, 0xFC + ands r0, r1 + movs r2, 0 + strb r0, [r4] + ldrb r1, [r4, 0x7] + strb r1, [r4, 0xB] + movs r0, 0xFF + ands r0, r1 + cmp r0, 0 + beq _081DECCA + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] + cmp r6, 0x3 + beq _081DED8C + ldrb r2, [r4, 0x7] + mov r8, r2 + b _081DED8C +_081DEC98: + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _081DED8C + cmp r6, 0x3 + bne _081DECAA + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] +_081DECAA: + adds r0, r4, 0 + bl CgbModVol + movs r0, 0x3 + ldrb r2, [r4] + ands r0, r2 + cmp r0, 0 + bne _081DECFE + ldrb r0, [r4, 0x9] + subs r0, 0x1 + strb r0, [r4, 0x9] + movs r1, 0xFF + ands r0, r1 + lsls r0, 24 + cmp r0, 0 + bgt _081DECFA +_081DECCA: + ldrb r2, [r4, 0xC] + ldrb r1, [r4, 0xA] + adds r0, r2, 0 + muls r0, r1 + adds r0, 0xFF + asrs r0, 8 + movs r1, 0 + strb r0, [r4, 0x9] + lsls r0, 24 + cmp r0, 0 + beq _081DEC4A + movs r0, 0x4 + ldrb r2, [r4] + orrs r0, r2 + strb r0, [r4] + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] + cmp r6, 0x3 + beq _081DED9E + movs r2, 0x8 + mov r8, r2 + b _081DED9E +_081DECFA: + ldrb r0, [r4, 0x7] + b _081DED8A +_081DECFE: + cmp r0, 0x1 + bne _081DED0A +_081DED02: + ldrb r0, [r4, 0x19] + strb r0, [r4, 0x9] + movs r0, 0x7 + b _081DED8A +_081DED0A: + cmp r0, 0x2 + bne _081DED4E + ldrb r0, [r4, 0x9] + subs r0, 0x1 + strb r0, [r4, 0x9] + movs r1, 0xFF + ands r0, r1 + lsls r0, 24 + ldrb r2, [r4, 0x19] + lsls r1, r2, 24 + cmp r0, r1 + bgt _081DED4A +_081DED22: + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _081DED32 + movs r0, 0xFC + ldrb r1, [r4] + ands r0, r1 + strb r0, [r4] + b _081DECCA +_081DED32: + ldrb r0, [r4] + subs r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + ldrb r2, [r4, 0x1D] + orrs r0, r2 + strb r0, [r4, 0x1D] + cmp r6, 0x3 + beq _081DED02 + movs r0, 0x8 + mov r8, r0 + b _081DED02 +_081DED4A: + ldrb r0, [r4, 0x5] + b _081DED8A +_081DED4E: + ldrb r0, [r4, 0x9] + adds r0, 0x1 + strb r0, [r4, 0x9] + movs r1, 0xFF + ands r0, r1 + ldrb r2, [r4, 0xA] + cmp r0, r2 + bcc _081DED88 +_081DED5E: + ldrb r0, [r4] + subs r0, 0x1 + movs r2, 0 + strb r0, [r4] + ldrb r1, [r4, 0x5] + strb r1, [r4, 0xB] + movs r0, 0xFF + ands r0, r1 + cmp r0, 0 + beq _081DED22 + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] + ldrb r0, [r4, 0xA] + strb r0, [r4, 0x9] + cmp r6, 0x3 + beq _081DED8C + ldrb r2, [r4, 0x5] + mov r8, r2 + b _081DED8C +_081DED88: + ldrb r0, [r4, 0x4] +_081DED8A: + strb r0, [r4, 0xB] +_081DED8C: + ldrb r0, [r4, 0xB] + subs r0, 0x1 + strb r0, [r4, 0xB] + ldr r0, [sp] + cmp r0, 0 + bne _081DED9E + subs r0, 0x1 + str r0, [sp] + b _081DEC98 +_081DED9E: + movs r0, 0x2 + ldrb r1, [r4, 0x1D] + ands r0, r1 + cmp r0, 0 + beq _081DEE16 + cmp r6, 0x3 + bgt _081DEDDE + movs r0, 0x8 + ldrb r2, [r4, 0x1] + ands r0, r2 + cmp r0, 0 + beq _081DEDDE + ldr r0, =REG_SOUNDBIAS + 1 + ldrb r0, [r0] + cmp r0, 0x3F + bgt _081DEDD0 + ldr r0, [r4, 0x20] + adds r0, 0x2 + ldr r1, =0x000007fc + b _081DEDDA + .pool +_081DEDD0: + cmp r0, 0x7F + bgt _081DEDDE + ldr r0, [r4, 0x20] + adds r0, 0x1 + ldr r1, =0x000007fe +_081DEDDA: + ands r0, r1 + str r0, [r4, 0x20] +_081DEDDE: + cmp r6, 0x4 + beq _081DEDF0 + ldr r0, [r4, 0x20] + ldr r1, [sp, 0x10] + strb r0, [r1] + b _081DEDFE + .pool +_081DEDF0: + ldr r2, [sp, 0x10] + ldrb r0, [r2] + movs r1, 0x8 + ands r1, r0 + ldr r0, [r4, 0x20] + orrs r0, r1 + strb r0, [r2] +_081DEDFE: + movs r0, 0xC0 + ldrb r1, [r4, 0x1A] + ands r0, r1 + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r0, r1, r0 + strb r0, [r4, 0x1A] + movs r2, 0xFF + ands r0, r2 + ldr r1, [sp, 0x14] + strb r0, [r1] +_081DEE16: + movs r0, 0x1 + ldrb r2, [r4, 0x1D] + ands r0, r2 + cmp r0, 0 + beq _081DEE9C + ldr r1, =REG_NR51 + ldrb r0, [r1] + ldrb r2, [r4, 0x1C] + bics r0, r2 + ldrb r2, [r4, 0x1B] + orrs r0, r2 + strb r0, [r1] + cmp r6, 0x3 + bne _081DEE68 + ldr r0, =gCgb3Vol + ldrb r1, [r4, 0x9] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, [sp, 0xC] + strb r0, [r2] + movs r1, 0x80 + adds r0, r1, 0 + ldrb r2, [r4, 0x1A] + ands r0, r2 + cmp r0, 0 + beq _081DEE9C + ldr r0, [sp, 0x8] + strb r1, [r0] + ldrb r0, [r4, 0x1A] + ldr r1, [sp, 0x14] + strb r0, [r1] + movs r0, 0x7F + ldrb r2, [r4, 0x1A] + ands r0, r2 + strb r0, [r4, 0x1A] + b _081DEE9C + .pool +_081DEE68: + movs r0, 0xF + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldrb r2, [r4, 0x9] + lsls r0, r2, 4 + add r0, r8 + ldr r1, [sp, 0xC] + strb r0, [r1] + movs r2, 0x80 + ldrb r0, [r4, 0x1A] + orrs r0, r2 + ldr r1, [sp, 0x14] + strb r0, [r1] + cmp r6, 0x1 + bne _081DEE9C + ldr r0, [sp, 0x8] + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _081DEE9C + ldrb r0, [r4, 0x1A] + orrs r0, r2 + ldr r1, [sp, 0x14] + strb r0, [r1] +_081DEE9C: + movs r0, 0 + strb r0, [r4, 0x1D] +_081DEEA0: + mov r6, r10 + mov r4, r9 + cmp r6, 0x4 + bgt _081DEEAA + b _081DEAA0 +_081DEEAA: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end CgbSound + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/macros.inc b/asm/macros.inc new file mode 100644 index 000000000..6d8657892 --- /dev/null +++ b/asm/macros.inc @@ -0,0 +1,149 @@ + .include "asm/macros/asm.inc" + .include "asm/macros/function.inc" + .include "asm/macros/movement.inc" + .include "asm/macros/pokemon_data.inc" + .include "asm/macros/ec.inc" + .include "asm/macros/map.inc" + + .macro region_map_location x, y, width, height, name + .byte \x + .byte \y + .byte \width + .byte \height + .4byte gMapName_\name + .endm + + .macro obj_tiles address, uncompressed_size, tag + .4byte \address + .2byte \uncompressed_size + .2byte \tag + .endm + + .macro null_obj_tiles + obj_tiles 0, 0, 0 + .endm + + .macro obj_pal address, tag + .4byte \address + .2byte \tag + .2byte 0 @ padding + .endm + + .macro null_obj_pal + obj_pal 0, 0 + .endm + + .macro paired_pals tag, address + .2byte \tag + .2byte 0 @ padding + .4byte \address + .endm + +@ For object animation frames. + .macro obj_frame_tiles address, uncompressed_size + .4byte \address + .2byte \uncompressed_size + .2byte 0 @ padding + .endm + + .macro spr_template tile_tag, pal_tag, oam, anims, images, affine_anims, callback + .2byte \tile_tag + .2byte \pal_tag + .4byte \oam + .4byte \anims + .4byte \images + .4byte \affine_anims + .4byte \callback + .endm + +@ Berry trees have a table defining the palette slot used for each of their 5 +@ stages. However, the first 2 stages always use the same slots regardless of +@ the type of tree and the slots of the last 3 stages always equal each other. + .macro berry_tree_palette_slot_table slot + .byte 3, 4, \slot, \slot, \slot + .endm + + .macro subsprite x, y, priority, tile_num_offset, size + .2byte \x + .2byte \y + .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size + .2byte 0 @ padding + .endm + + .macro obj_image_anim_frame pic_id, duration, flags = 0 + .2byte \pic_id + .byte (\flags) | (\duration) + .byte 0 @ padding + .endm + + .macro obj_image_anim_loop count + .2byte 0xfffd + .byte \count + .byte 0 @ padding + .endm + + .macro obj_image_anim_jump target_index + .2byte 0xfffe + .byte \target_index + .byte 0 @ padding + .endm + + .macro obj_image_anim_end + .2byte 0xffff + .2byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_frame delta_x_scale, delta_y_scale, delta_angle, duration + .2byte \delta_x_scale + .2byte \delta_y_scale + .byte \delta_angle + .byte \duration + .2byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_loop count + .2byte 0x7ffd + .2byte \count + .4byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_jump target_index + .2byte 0x7ffe + .2byte \target_index + .4byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_end unknown=0 + .2byte 0x7fff + .2byte \unknown + .fill 4 @ padding + .endm + + .macro credits_entry number, text + .4byte \number + .4byte \text + .endm + + .macro door_anim_frame unknown, offset + .byte \unknown + .byte 0 @ padding + .2byte \offset + .endm + + .macro door_anim_gfx metatile_num, unknown, tile_addr, palette_addr + .2byte \metatile_num + .2byte \unknown + .4byte \tile_addr + .4byte \palette_addr + .endm + + .macro trainer_eye_trainer opp_1, opp_2, opp_3, opp_4, opp_5, map_name + .2byte OPPONENT_\opp_1 + .2byte OPPONENT_\opp_2 + .2byte OPPONENT_\opp_3 + .2byte OPPONENT_\opp_4 + .2byte OPPONENT_\opp_5 + .2byte GROUP_\map_name + .2byte MAP_\map_name + .space 2 + .endm diff --git a/asm/macros/asm.inc b/asm/macros/asm.inc new file mode 100644 index 000000000..26b2707ca --- /dev/null +++ b/asm/macros/asm.inc @@ -0,0 +1,17 @@ + .ifndef GUARD_ASM_MACROS_ASM_INC + .set GUARD_ASM_MACROS_ASM_INC, 1 + + .macro inc x + .set \x, \x + 1 + .endm + + .macro enum_start x=0 + .set __enum__, \x + .endm + + .macro enum constant + .equiv \constant, __enum__ + inc __enum__ + .endm + + .endif @ GUARD_ASM_MACROS_ASM_INC diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc new file mode 100644 index 000000000..679e30340 --- /dev/null +++ b/asm/macros/battle_ai_script.inc @@ -0,0 +1,554 @@ + .macro if_random_less_than percent, address + .byte 0x00 + .byte \percent + .4byte \address + .endm + + @ unused + .macro if_random_greater_than percent, address + .byte 0x01 + .byte \percent + .4byte \address + .endm + + @ unused + .macro if_random_equal address + .byte 0x02 + .4byte \address + .endm + + @ unused + .macro if_random_not_equal address + .byte 0x03 + .4byte \address + .endm + + .macro score score + .byte 0x04 + .byte \score + .endm + + .macro if_hp_less_than target, percent, address + .byte 0x05 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_hp_more_than target, percent, address + .byte 0x06 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_hp_equal target, percent, address + .byte 0x07 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_hp_not_equal target, percent, address + .byte 0x08 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_status target, status, address + .byte 0x09 + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status target, status, address + .byte 0x0a + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_status2 target, status, address + .byte 0x0b + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status2 target, status, address + .byte 0x0c + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_status3 target, status, address + .byte 0x0d + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status3 target, status, address + .byte 0x0e + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_status4 target, status, address + .byte 0x0f + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status4 target, status, address + .byte 0x10 + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_less_than value, address + .byte 0x11 + .byte \value + .4byte \address + .endm + + .macro if_more_than value, address + .byte 0x12 + .byte \value + .4byte \address + .endm + + .macro if_equal value, address + .byte 0x13 + .byte \value + .4byte \address + .endm + + .macro if_not_equal value, address + .byte 0x14 + .byte \value + .4byte \address + .endm + + .macro if_less_than_32 value, address + .byte 0x15 + .4byte \value + .4byte \address + .endm + + .macro if_more_than_32 value, address + .byte 0x16 + .4byte \value + .4byte \address + .endm + + .macro if_equal_32 value, address + .byte 0x17 + .4byte \value + .4byte \address + .endm + + .macro if_not_equal_32 value, address + .byte 0x18 + .4byte \value + .4byte \address + .endm + + .macro if_move move, address + .byte 0x19 + .2byte \move + .4byte \address + .endm + + .macro if_not_move move, address + .byte 0x1a + .2byte \move + .4byte \address + .endm + + .macro if_in_bytes list, address + .byte 0x1b + .4byte \list + .4byte \address + .endm + + .macro if_not_in_bytes list, address + .byte 0x1c + .4byte \list + .4byte \address + .endm + + .macro if_in_words list, address + .byte 0x1d + .4byte \list + .4byte \address + .endm + + .macro if_not_in_words list, address + .byte 0x1e + .4byte \list + .4byte \address + .endm + + .macro if_user_can_damage address + .byte 0x1f + .4byte \address + .endm + + .macro if_user_cant_damage address + .byte 0x20 + .4byte \address + .endm + + .macro get_turn_count + .byte 0x21 + .endm + + .macro get_type byte + .byte 0x22 + .byte \byte + .endm + + @ unused + .macro get_move_power + .byte 0x23 + .endm + + .macro is_most_powerful_move + .byte 0x24 + .endm + + .macro get_move target + .byte 0x25 + .byte \target + .endm + + .macro if_arg_equal type, address + .byte 0x26 + .byte \type + .4byte \address + .endm + + @ unused + .macro if_arg_not_equal type, address + .byte 0x27 + .byte \type + .4byte \address + .endm + + .macro if_would_go_first target, address + .byte 0x28 + .byte \target + .4byte \address + .endm + + .macro if_would_not_go_first target, address + .byte 0x29 + .byte \target + .4byte \address + .endm + + @ nullsub + .macro ai_2a + .byte 0x2a + .endm + + @ nullsub + .macro ai_2b + .byte 0x2b + .endm + + .macro count_alive_pokemon target + .byte 0x2c + .byte \target + .endm + + @ unused + .macro get_considered_move + .byte 0x2d + .endm + + .macro get_effect + .byte 0x2e + .endm + + .macro get_ability target + .byte 0x2f + .byte \target + .endm + + @ unused + .macro get_highest_possible_damage + .byte 0x30 + .endm + + .macro if_damage_bonus value, address + .byte 0x31 + .byte \value + .4byte \address + .endm + + @ nullsub + .macro ai_32 + .byte 0x32 + .endm + + @ nullsub + .macro ai_33 + .byte 0x33 + .endm + + .macro if_status_in_party target, status, address + .byte 0x34 + .byte \target + .4byte \status + .4byte \address + .endm + + @ bugged + .macro if_status_not_in_party target, status, address + .byte 0x35 + .byte \target + .4byte \status + .4byte \address + .endm + + .macro get_weather + .byte 0x36 + .endm + + .macro if_effect byte, address + .byte 0x37 + .byte \byte + .4byte \address + .endm + + .macro if_not_effect byte, address + .byte 0x38 + .byte \byte + .4byte \address + .endm + + .macro if_stat_level_less_than target, stat, level, address + .byte 0x39 + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_stat_level_more_than target, stat, level, address + .byte 0x3a + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_stat_level_equal target, stat, level, address + .byte 0x3b + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_stat_level_not_equal target, stat, level, address + .byte 0x3c + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_can_faint address + .byte 0x3d + .4byte \address + .endm + + .macro if_cant_faint address + .byte 0x3e + .4byte \address + .endm + + @ unused + .macro if_has_move, target, move, address + .byte 0x3f + .byte \target + .2byte \move + .4byte \address + .endm + + @ unused + .macro if_dont_have_move, target, move, address + .byte 0x40 + .byte \target + .2byte \move + .4byte \address + .endm + + .macro if_move_effect target, effect, address + .byte 0x41 + .byte \target + .byte \effect + .4byte \address + .endm + + .macro if_not_move_effect target, effect, address + .byte 0x42 + .byte \target + .byte \effect + .4byte \address + .endm + + .macro if_last_move_did_damage target, byte, address + .byte 0x43 + .byte \target + .byte \byte + .4byte \address + .endm + + .macro if_encored target, address + .byte 0x44 + .byte \target + .4byte \address + .endm + + .macro flee + .byte 0x45 + .endm + + .macro if_random_100 address + .byte 0x46 + .4byte \address + .endm + + .macro watch + .byte 0x47 + .endm + + .macro get_hold_effect target + .byte 0x48 + .byte \target + .endm + + .macro get_gender target + .byte 0x49 + .byte \target + .endm + + .macro is_first_turn target + .byte 0x4a + .byte \target + .endm + + .macro get_stockpile_count target + .byte 0x4b + .byte \target + .endm + + .macro is_double_battle + .byte 0x4c + .endm + + .macro get_item target + .byte 0x4d + .byte \target + .endm + + .macro get_move_type_from_result + .byte 0x4e + .endm + + .macro get_move_power_from_result + .byte 0x4f + .endm + + .macro get_move_effect_from_result + .byte 0x50 + .endm + + .macro get_protect_count target + .byte 0x51 + .byte \target + .endm + + @ nullsub + .macro ai_52 + .byte 0x52 + .endm + + @ nullsub + .macro ai_53 + .byte 0x53 + .endm + + @ nullsub + .macro ai_54 + .byte 0x54 + .endm + + @ nullsub + .macro ai_55 + .byte 0x55 + .endm + + @ nullsub + .macro ai_56 + .byte 0x56 + .endm + + @ nullsub + .macro ai_57 + .byte 0x57 + .endm + + @ unused + .macro call address + .byte 0x58 + .4byte \address + .endm + + .macro jump address + .byte 0x59 + .4byte \address + .endm + + .macro end + .byte 0x5a + .endm + + .macro if_level_cond cond, address + .byte 0x5b + .byte \cond + .4byte \address + .endm + + .macro if_user_higher_level address + if_level_cond 0, \address + .endm + + .macro if_target_higher_level address + if_level_cond 1, \address + .endm + + .macro if_equal_levels address + if_level_cond 2, \address + .endm + + @ unused + .macro if_taunted address + .byte 0x5c + .4byte \address + .endm + + .macro if_not_taunted address + .byte 0x5d + .4byte \address + .endm diff --git a/asm/macros/battle_anim.inc b/asm/macros/battle_anim.inc new file mode 100644 index 000000000..4ff845032 --- /dev/null +++ b/asm/macros/battle_anim.inc @@ -0,0 +1,266 @@ + .macro loadsprite id + .byte 0x00 + .2byte \id + .endm + + .macro unloadsprite id + .byte 0x01 + .2byte \id + .endm + + .macro sprite template, priority, argv:vararg + .byte 0x02 + .4byte \template + .byte \priority + .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2 +.Lsprite_\@_1: + .2byte \argv +.Lsprite_\@_2: + .endm + + .macro createtask addr, priority, argv:vararg + .byte 0x03 + .4byte \addr + .byte \priority + .byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2 +.Lcreatetask_\@_1: + .2byte \argv +.Lcreatetask_\@_2: + .endm + + .macro pause delay + .byte 0x04 + .byte \delay + .endm + + .macro wait + .byte 0x05 + .endm + + .macro hang1 + .byte 0x06 + .endm + + .macro hang2 + .byte 0x07 + .endm + + .macro end + .byte 0x08 + .endm + + .macro playse id + .byte 0x09 + .2byte \id + .endm + + .macro monbg which + .byte 0x0A + .byte \which + .endm + + .macro clearmonbg which + .byte 0x0B + .byte \which + .endm + + .macro setalpha eva, evb + .byte 0x0C + .2byte ((\evb) << 8) | (\eva) + .endm + + .macro blendoff + .byte 0x0D + .endm + + .macro call addr + .byte 0x0E + .4byte \addr + .endm + + .macro ret + .byte 0x0F + .endm + + .macro setvar var_num, value + .byte 0x10 + .byte \var_num + .2byte \value + .endm + + .macro ifelse addr1, addr2 + .byte 0x11 + .4byte \addr1 + .4byte \addr2 + .endm + + .macro jumpif cond, addr + .byte 0x12 + .byte \cond + .4byte \addr + .endm + + .macro jump addr + .byte 0x13 + .4byte \addr + .endm + + .macro fadetobg id + .byte 0x14 + .byte \id + .endm + + .macro restorebg + .byte 0x15 + .endm + + .macro waitbgfadeout + .byte 0x16 + .endm + + .macro waitbgfadein + .byte 0x17 + .endm + + .macro changebg id + .byte 0x18 + .byte \id + .endm + + .macro panse_19 id, pan + .byte 0x19 + .2byte \id + .byte \pan + .endm + + .macro setpan pan + .byte 0x1A + .byte \pan + .endm + + .macro panse_1B id, pan_start, pan_end, step, delay + .byte 0x1B + .2byte \id + .byte \pan_start + .byte \pan_end + .byte \step + .byte \delay + .endm + + .macro panse_1C id, pan, delay, count + .byte 0x1C + .2byte \id + .byte \pan + .byte \delay + .byte \count + .endm + + .macro panse_1D id, pan, count + .byte 0x1D + .2byte \id + .byte \pan + .byte \count + .endm + + .macro setbldcnt bldcnt + .byte 0x1E + .2byte \bldcnt + .endm + + .macro createtask_1F addr, argv:vararg + .byte 0x1F + .4byte \addr + .byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2 +.Lcreatetask_1F_\@_1: + .2byte \argv +.Lcreatetask_1F_\@_2: + .endm + + .macro waitsound + .byte 0x20 + .endm + + .macro jumpvareq var_num, value, addr + .byte 0x21 + .byte \var_num + .2byte \value + .4byte \addr + .endm + + .macro monbg_22 unk + .byte 0x22 + .byte \unk + .endm + + .macro clearmonbg_23 unk + .byte 0x23 + .byte \unk + .endm + + .macro jumpunkcond addr + .byte 0x24 + .4byte \addr + .endm + + .macro fadetobg_25 a, b, c + .byte 0x25 + .byte \a + .byte \b + .byte \c + .endm + + .macro panse_26 id, pan_start, pan_end, step, delay + .byte 0x26 + .2byte \id + .byte \pan_start + .byte \pan_end + .byte \step + .byte \delay + .endm + + .macro panse_27 id, pan_start, pan_end, step, delay + .byte 0x27 + .2byte \id + .byte \pan_start + .byte \pan_end + .byte \step + .byte \delay + .endm + + .macro monbgprio_28 unk + .byte 0x28 + .byte \unk + .endm + + .macro monbgprio_29 + .byte 0x29 + .endm + + .macro monbgprio_2A unk + .byte 0x2A + .byte \unk + .endm + + .macro invisible side + .byte 0x2B + .byte \side + .endm + + .macro visible side + .byte 0x2C + .byte \side + .endm + + .macro doublebattle_2D unk + .byte 0x2D + .byte \unk + .endm + + .macro doublebattle_2E unk + .byte 0x2E + .byte \unk + .endm + + .macro stopsound + .byte 0x2F + .endm diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc new file mode 100644 index 000000000..5dd1d5a1a --- /dev/null +++ b/asm/macros/battle_script.inc @@ -0,0 +1,1228 @@ +@ 0 == +@ 1 != +@ 2 < +@ 3 > +@ 4 &= + + .macro calculatedamage + critical + atk5 + atk6 + atk7 + .endm + + + .macro attackcanceler + .byte 0x00 + .endm + + .macro accuracycheck address, param1 + .byte 0x01 + .4byte \address + .2byte \param1 + .endm + + .macro attackstring + .byte 0x02 + .endm + + .macro ppreduce + .byte 0x03 + .endm + + .macro critcalc + .byte 0x04 + .endm + + .macro atk5 + .byte 0x05 + .endm + + .macro atk6 + .byte 0x06 + .endm + + .macro atk7 + .byte 0x07 + .endm + + .macro atk8 + .byte 0x08 + .endm + + .macro attackanimation + .byte 0x09 + .endm + + .macro waitanimation + .byte 0x0a + .endm + + .macro graphicalhpupdate bank + .byte 0x0b + .byte \bank + .endm + + .macro datahpupdate bank + .byte 0x0c + .byte \bank + .endm + + .macro critmessage + .byte 0x0d + .endm + + .macro missmessage + .byte 0x0e + .endm + + .macro resultmessage + .byte 0x0f + .endm + + .macro printstring string + .byte 0x10 + .2byte \string + .endm + + .macro printstring2 string + .byte 0x11 + .2byte \string + .endm + + .macro waitmessage delay + .byte 0x12 + .2byte \delay + .endm + + .macro printfromtable table + .byte 0x13 + .4byte \table + .endm + + .macro printfromtable2 table + .byte 0x14 + .4byte \table + .endm + + .macro seteffectwithchancetarget + .byte 0x15 + .endm + + .macro seteffecttarget + .byte 0x16 + .endm + + .macro seteffectuser + .byte 0x17 + .endm + + .macro clearstatus bank + .byte 0x18 + .byte \bank + .endm + + .macro faintpokemon bank, param2, param3 + .byte 0x19 + .byte \bank + .byte \param2 + .4byte \param3 + .endm + + .macro atk1a param1 + .byte 0x1a + .byte \param1 + .endm + + .macro atk1b bank + .byte 0x1b + .byte \bank + .endm + + .macro jumpifstatus bank, status, address + .byte 0x1c + .byte \bank + .4byte \status + .4byte \address + .endm + + .macro jumpifsecondarytstatus bank, status, address + .byte 0x1d + .byte \bank + .4byte \status + .4byte \address + .endm + + .macro jumpifability bank, ability, address + .byte 0x1e + .byte \bank + .byte \ability + .4byte \address + .endm + + .macro jumpifhalverset bank, status, address + .byte 0x1f + .byte \bank + .2byte \status + .4byte \address + .endm + + .macro jumpifstat bank, flag, quantity, statid, address + .byte 0x20 + .byte \bank + .byte \flag + .byte \quantity + .byte \statid + .4byte \address + .endm + + .macro jumpifspecialstatusflag bank, mask, status, address + .byte 0x21 + .byte \bank + .4byte \mask + .byte \status + .4byte \address + .endm + + .macro jumpiftype bank, type, address + .byte 0x22 + .byte \bank + .byte \type + .4byte \address + .endm + + .macro atk23 bank + .byte 0x23 + .byte \bank + .endm + + .macro atk24 address + .byte 0x24 + .4byte \address + .endm + + .macro atk25 + .byte 0x25 + .endm + + .macro atk26 param1 + .byte 0x26 + .byte \param1 + .endm + + .macro atk27 address + .byte 0x27 + .4byte \address + .endm + + .macro jump address + .byte 0x28 + .4byte \address + .endm + + .macro jumpifbyte ifflag, checkaddr, compare, address + .byte 0x29 + .byte \ifflag + .4byte \checkaddr + .byte \compare + .4byte \address + .endm + + .macro jumpifhalfword ifflag, checkaddr, compare, address + .byte 0x2a + .byte \ifflag + .4byte \checkaddr + .2byte \compare + .4byte \address + .endm + + .macro jumpifword ifflag, checkaddr, compare, address + .byte 0x2b + .byte \ifflag + .4byte \checkaddr + .4byte \compare + .4byte \address + .endm + + .macro jumpifarrayequal mem1, mem2, size, address + .byte 0x2c + .4byte \mem1 + .4byte \mem2 + .byte \size + .4byte \address + .endm + + .macro jumpifarraynotequal mem1, mem2, size, address + .byte 0x2d + .4byte \mem1 + .4byte \mem2 + .byte \size + .4byte \address + .endm + + .macro setbyte pointer, value + .byte 0x2e + .4byte \pointer + .byte \value + .endm + + .macro addbyte pointer, value + .byte 0x2f + .4byte \pointer + .byte \value + .endm + + .macro subtractbyte pointer, value + .byte 0x30 + .4byte \pointer + .byte \value + .endm + + .macro copyarray destination, source, size + .byte 0x31 + .4byte \destination + .4byte \source + .byte \size + .endm + + .macro atk32 param1, param2, param3, byte + .byte 0x32 + .4byte \param1 + .4byte \param2 + .4byte \param3 + .byte \byte + .endm + + .macro orbyte pointer, value + .byte 0x33 + .4byte \pointer + .byte \value + .endm + + .macro orhalfword pointer, value + .byte 0x34 + .4byte \pointer + .2byte \value + .endm + + .macro orword pointer, value + .byte 0x35 + .4byte \pointer + .4byte \value + .endm + + .macro bicbyte pointer, value + .byte 0x36 + .4byte \pointer + .byte \value + .endm + + .macro bichalfword pointer, value + .byte 0x37 + .4byte \pointer + .2byte \value + .endm + + .macro bicword pointer, value + .byte 0x38 + .4byte \pointer + .4byte \value + .endm + + .macro pause pause_duration + .byte 0x39 + .2byte \pause_duration + .endm + + .macro waitstateatk + .byte 0x3a + .endm + + .macro somethinghealatk3b bank + .byte 0x3b + .byte \bank + .endm + + .macro return + .byte 0x3c + .endm + + .macro end + .byte 0x3d + .endm + + .macro end2 + .byte 0x3e + .endm + + .macro end3 + .byte 0x3f + .endm + + .macro atk40 address + .byte 0x40 + .4byte \address + .endm + + .macro callatk address + .byte 0x41 + .4byte \address + .endm + + .macro jumpiftype2 bank, type, address + .byte 0x42 + .byte \bank + .byte \type + .4byte \address + .endm + + .macro jumpifabilitypresent ability, address + .byte 0x43 + .byte \ability + .4byte \address + .endm + + .macro atk44 + .byte 0x44 + .endm + + .macro playanimation bank, animation, var_address + .byte 0x45 + .byte \bank + .byte \animation + .4byte \var_address + .endm + + .macro atk46 bank, address, int + .byte 0x46 + .byte \bank + .4byte \address + .4byte \int + .endm + + .macro atk47 + .byte 0x47 + .endm + + .macro playstatchangeanimation bank, color, byte + .byte 0x48 + .byte \bank + .byte \color + .byte \byte + .endm + + .macro atk49 byte1, byte2 + .byte 0x49 + .byte \byte1 + .byte \byte2 + .endm + + .macro damagecalc2 + .byte 0x4a + .endm + + .macro atk4b + .byte 0x4b + .endm + + .macro switch1 bank + .byte 0x4c + .byte \bank + .endm + + .macro switch2 bank + .byte 0x4d + .byte \bank + .endm + + .macro switch3 bank, byte + .byte 0x4e + .byte \bank + .byte \byte + .endm + + .macro jumpifcannotswitch bank, address + .byte 0x4f + .byte \bank + .4byte \address + .endm + + .macro openpartyscreen bank, address + .byte 0x50 + .byte \bank + .4byte \address + .endm + + .macro atk51 bank, param2 + .byte 0x51 + .byte \bank + .byte \param2 + .endm + + .macro atk52 bank + .byte 0x52 + .byte \bank + .endm + + .macro atk53 bank + .byte 0x53 + .byte \bank + .endm + + .macro atk54 word + .byte 0x54 + .2byte \word + .endm + + .macro atk55 int + .byte 0x55 + .4byte \int + .endm + + .macro atk56 bank_or_side + .byte 0x56 + .byte \bank_or_side + .endm + + .macro atk57 + .byte 0x57 + .endm + + .macro atk58 bank + .byte 0x58 + .byte \bank + .endm + + .macro checkiflearnmoveinbattle param1, param2, bank_maybe + .byte 0x59 + .4byte \param1 + .4byte \param2 + .byte \bank_maybe + .endm + + .macro atk5a address + .byte 0x5a + .4byte \address + .endm + + .macro atk5b address + .byte 0x5b + .4byte \address + .endm + + .macro atk5c bank + .byte 0x5c + .byte \bank + .endm + + .macro atk5d + .byte 0x5d + .endm + + .macro atk5e bank + .byte 0x5e + .byte \bank + .endm + + .macro atk5f + .byte 0x5f + .endm + + .macro atk60 byte + .byte 0x60 + .byte \byte + .endm + + .macro atk61 bank_or_side + .byte 0x61 + .byte \bank_or_side + .endm + + .macro atk62 bank_or_side + .byte 0x62 + .byte \bank_or_side + .endm + + .macro jumptoattack bank + .byte 0x63 + .byte \bank + .endm + + .macro statusanimation bank + .byte 0x64 + .byte \bank + .endm + + .macro atk65 bank_or_side, address + .byte 0x65 + .byte \bank_or_side + .4byte \address + .endm + + .macro atk66 bank_or_side, bank_or_side2, address + .byte 0x66 + .byte \bank_or_side + .byte \bank_or_side2 + .4byte \address + .endm + + .macro atk67 + .byte 0x67 + .endm + + .macro atk68 + .byte 0x68 + .endm + + .macro atk69 + .byte 0x69 + .endm + + .macro removeitem bank + .byte 0x6a + .byte \bank + .endm + + .macro atk6b + .byte 0x6b + .endm + + .macro atk6c + .byte 0x6c + .endm + + .macro atk6d + .byte 0x6d + .endm + + .macro atk6e + .byte 0x6e + .endm + + .macro atk6f bank + .byte 0x6f + .byte \bank + .endm + + .macro atk70 bank + .byte 0x70 + .byte \bank + .endm + + .macro atk71 + .byte 0x71 + .endm + + .macro atk72 address + .byte 0x72 + .4byte \address + .endm + + .macro atk73 bank + .byte 0x73 + .byte \bank + .endm + + .macro atk74 bank + .byte 0x74 + .byte \bank + .endm + + .macro atk75 + .byte 0x75 + .endm + + .macro atk76 bank, byte + .byte 0x76 + .byte \bank + .byte \byte + .endm + + .macro setprotect + .byte 0x77 + .endm + + .macro faintifabilitynotdamp + .byte 0x78 + .endm + + .macro setuserhptozero + .byte 0x79 + .endm + + .macro jumpwhiletargetvalid address + .byte 0x7a + .4byte \address + .endm + + .macro setdamageasrestorehalfmaxhp address, byte + .byte 0x7b + .4byte \address + .byte \byte + .endm + + .macro jumptolastusedattack + .byte 0x7c + .endm + + .macro setrain + .byte 0x7d + .endm + + .macro setreflect + .byte 0x7e + .endm + + .macro setleechseed + .byte 0x7f + .endm + + .macro manipulatedamage id + .byte 0x80 + .byte \id + .endm + + .macro setrest address + .byte 0x81 + .4byte \address + .endm + + .macro jumpifnotfirstturn address + .byte 0x82 + .4byte \address + .endm + + .macro nop3 + .byte 0x83 + .endm + + .macro jumpifcannotsleep address + .byte 0x84 + .4byte \address + .endm + + .macro stockpile + .byte 0x85 + .endm + + .macro stockpiletobasedamage address + .byte 0x86 + .4byte \address + .endm + + .macro stockpiletohprecovery address + .byte 0x87 + .4byte \address + .endm + + .macro negativedamage + .byte 0x88 + .endm + + .macro statbuffchange target, address + .byte 0x89 + .byte \target + .4byte \address + .endm + + .macro normalisebuffs + .byte 0x8a + .endm + + .macro setbide + .byte 0x8b + .endm + + .macro confuseifrepeatingattackends + .byte 0x8c + .endm + + .macro setloopcounter count + .byte 0x8d + .byte \count + .endm + + .macro atk8e + .byte 0x8e + .endm + + .macro forcerandomswitch address + .byte 0x8f + .4byte \address + .endm + + .macro changetypestoenemyattacktype address + .byte 0x90 + .4byte \address + .endm + + .macro givemoney + .byte 0x91 + .endm + + .macro setlightscreen + .byte 0x92 + .endm + + .macro koplussomethings address + .byte 0x93 + .4byte \address + .endm + + .macro gethalfcurrentenemyhp + .byte 0x94 + .endm + + .macro setsandstorm + .byte 0x95 + .endm + + .macro weatherdamage + .byte 0x96 + .endm + + .macro tryinfatuatetarget address + .byte 0x97 + .4byte \address + .endm + + .macro atk98 byte + .byte 0x98 + .byte \byte + .endm + + .macro setmisteffect + .byte 0x99 + .endm + + .macro setincreasedcriticalchance + .byte 0x9a + .endm + + .macro transformdataexecution + .byte 0x9b + .endm + + .macro setsubstituteeffect + .byte 0x9c + .endm + + .macro copyattack address + .byte 0x9d + .4byte \address + .endm + + .macro metronomeeffect + .byte 0x9e + .endm + + .macro nightshadedamageeffect + .byte 0x9f + .endm + + .macro psywavedamageeffect + .byte 0xa0 + .endm + + .macro counterdamagecalculator address + .byte 0xa1 + .4byte \address + .endm + + .macro mirrorcoatdamagecalculator address + .byte 0xa2 + .4byte \address + .endm + + .macro disablelastusedattack address + .byte 0xa3 + .4byte \address + .endm + + .macro setencore address + .byte 0xa4 + .4byte \address + .endm + + .macro painsplitdamagecalculator address + .byte 0xa5 + .4byte \address + .endm + + .macro settypetorandomresistance address + .byte 0xa6 + .4byte \address + .endm + + .macro setalwayshitflag + .byte 0xa7 + .endm + + .macro copymovepermanently address + .byte 0xa8 + .4byte \address + .endm + + .macro selectrandommovefromusermoves address + .byte 0xa9 + .4byte \address + .endm + + .macro destinybondeffect + .byte 0xaa + .endm + + .macro atkab + .byte 0xab + .endm + + .macro remaininghptopower + .byte 0xac + .endm + + .macro reducepprandom address + .byte 0xad + .4byte \address + .endm + + .macro clearstatusifnotsoundproofed + .byte 0xae + .endm + + .macro cursetarget address + .byte 0xaf + .4byte \address + .endm + + .macro setspikes address + .byte 0xb0 + .4byte \address + .endm + + .macro setforesight + .byte 0xb1 + .endm + + .macro setperishsong address + .byte 0xb2 + .4byte \address + .endm + + .macro rolloutdamagecalculation + .byte 0xb3 + .endm + + .macro jumpifconfusedandattackmaxed bank, address + .byte 0xb4 + .byte \bank + .4byte \address + .endm + + .macro furycutterdamagecalculation + .byte 0xb5 + .endm + + .macro happinesstodamagecalculation + .byte 0xb6 + .endm + + .macro presentdamagecalculation + .byte 0xb7 + .endm + + .macro setsafeguard + .byte 0xb8 + .endm + + .macro magnitudedamagecalculation + .byte 0xb9 + .endm + + .macro atkba address + .byte 0xba + .4byte \address + .endm + + .macro setsunny + .byte 0xbb + .endm + + .macro maxattackhalvehp address + .byte 0xbc + .4byte \address + .endm + + .macro copyfoestats address + .byte 0xbd + .4byte \address + .endm + + .macro breakfree + .byte 0xbe + .endm + + .macro setcurled + .byte 0xbf + .endm + + .macro recoverbasedonsunlight address + .byte 0xc0 + .4byte \address + .endm + + .macro hiddenpowerdamagecalculation + .byte 0xc1 + .endm + + .macro selectnexttarget + .byte 0xc2 + .endm + + .macro setfutureattack address + .byte 0xc3 + .4byte \address + .endm + + .macro beatupcalculation address1, address2 + .byte 0xc4 + .4byte \address1 + .4byte \address2 + .endm + + .macro hidepreattack + .byte 0xc5 + .endm + + .macro unhidepostattack + .byte 0xc6 + .endm + + .macro setminimize + .byte 0xc7 + .endm + + .macro sethail + .byte 0xc8 + .endm + + .macro jumpifattackandspecialattackcannotfall address + .byte 0xc9 + .4byte \address + .endm + + .macro setforcedtarget + .byte 0xca + .endm + + .macro setcharge + .byte 0xcb + .endm + + .macro callterrainattack + .byte 0xcc + .endm + + .macro cureifburnedparalysedorpoisoned address + .byte 0xcd + .4byte \address + .endm + + .macro settorment address + .byte 0xce + .4byte \address + .endm + + .macro jumpifnodamage address + .byte 0xcf + .4byte \address + .endm + + .macro settaunt address + .byte 0xd0 + .4byte \address + .endm + + .macro sethelpinghand address + .byte 0xd1 + .4byte \address + .endm + + .macro itemswap address + .byte 0xd2 + .4byte \address + .endm + + .macro copyability address + .byte 0xd3 + .4byte \address + .endm + + .macro atkd4 byte, address + .byte 0xd4 + .byte \byte + .4byte \address + .endm + + .macro setroots address + .byte 0xd5 + .4byte \address + .endm + + .macro doubledamagedealtifdamaged + .byte 0xd6 + .endm + + .macro setyawn address + .byte 0xd7 + .4byte \address + .endm + + .macro setdamagetohealthdifference address + .byte 0xd8 + .4byte \address + .endm + + .macro scaledamagebyhealthratio + .byte 0xd9 + .endm + + .macro abilityswap address + .byte 0xda + .4byte \address + .endm + + .macro imprisoneffect address + .byte 0xdb + .4byte \address + .endm + + .macro setgrudge address + .byte 0xdc + .4byte \address + .endm + + .macro weightdamagecalculation + .byte 0xdd + .endm + + .macro assistattackselect address + .byte 0xde + .4byte \address + .endm + + .macro setmagiccoat address + .byte 0xdf + .4byte \address + .endm + + .macro setstealstatchange address + .byte 0xe0 + .4byte \address + .endm + + .macro atke1 address + .byte 0xe1 + .4byte \address + .endm + + .macro atke2 bank + .byte 0xe2 + .byte \bank + .endm + + .macro jumpiffainted bank, address + .byte 0xe3 + .byte \bank + .4byte \address + .endm + + .macro naturepowereffect + .byte 0xe4 + .endm + + .macro pickupitemcalculation + .byte 0xe5 + .endm + + .macro actualcastformswitch + .byte 0xe6 + .endm + + .macro castformswitch + .byte 0xe7 + .endm + + .macro settypebasedhalvers address + .byte 0xe8 + .4byte \address + .endm + + .macro seteffectbyweather + .byte 0xe9 + .endm + + .macro recycleitem address + .byte 0xea + .4byte \address + .endm + + .macro settypetoterrain address + .byte 0xeb + .4byte \address + .endm + + .macro pursuitwhenswitched address + .byte 0xec + .4byte \address + .endm + + .macro snatchmove + .byte 0xed + .endm + + .macro removereflectlightscreen + .byte 0xee + .endm + + .macro pokemoncatchfunction + .byte 0xef + .endm + + .macro catchpoke + .byte 0xf0 + .endm + + .macro capturesomethingf1 address + .byte 0xf1 + .4byte \address + .endm + + .macro capturesomethingf2 + .byte 0xf2 + .endm + + .macro capturesomethingf3 address + .byte 0xf3 + .4byte \address + .endm + + .macro removehp + .byte 0xf4 + .endm + + .macro curestatusfirstword + .byte 0xf5 + .endm + + .macro atkf6 + .byte 0xf6 + .endm + + .macro activesidesomething + .byte 0xf7 + .endm + + .macro atkf8 bank + .byte 0xf8 + .byte \bank + .endm diff --git a/asm/macros/contest_ai_script.inc b/asm/macros/contest_ai_script.inc new file mode 100644 index 000000000..05d70e351 --- /dev/null +++ b/asm/macros/contest_ai_script.inc @@ -0,0 +1,506 @@ +@ Add a positive/negative value to the score of the move being evaluated. + + .macro score score + .byte 0x00 + .byte \score + .endm + +@ turn (AKA "Appeal No.") + + .macro get_turn + .byte 0x01 + .endm + + .macro if_turn_less_than param, addr + .byte 0x02 + .byte \param + .4byte \addr + .endm + + .macro if_turn_more_than param, addr + .byte 0x03 + .byte \param + .4byte \addr + .endm + + .macro if_turn_eq param, addr + .byte 0x04 + .byte \param + .4byte \addr + .endm + + .macro if_turn_not_eq param, addr + .byte 0x05 + .byte \param + .4byte \addr + .endm + +@ audience excitement + + .macro get_excitement + .byte 0x06 + .endm + + .macro if_excitement_less_than param, addr + .byte 0x07 + .byte \param + .4byte \addr + .endm + + .macro if_excitement_more_than param, addr + .byte 0x08 + .byte \param + .4byte \addr + .endm + + .macro if_excitement_eq param, addr + .byte 0x09 + .byte \param + .4byte \addr + .endm + + .macro if_excitement_not_eq param, addr + .byte 0x0A + .byte \param + .4byte \addr + .endm + +@ the order that the user goes in the current turn + + .macro get_user_order + .byte 0x0B + .endm + + .macro if_user_order_less_than param addr + .byte 0x0C + .byte \param + .4byte \addr + .endm + + .macro if_user_order_more_than param addr + .byte 0x0D + .byte \param + .4byte \addr + .endm + + .macro if_user_order_eq param addr + .byte 0x0E + .byte \param + .4byte \addr + .endm + + .macro if_user_order_not_eq param addr + .byte 0x0F + .byte \param + .4byte \addr + .endm + +@ user condition + + .macro get_user_condition + .byte 0x10 + .endm + + .macro if_user_condition_less_than param, addr + .byte 0x11 + .byte \param + .4byte \addr + .endm + + .macro if_user_condition_more_than param, addr + .byte 0x12 + .byte \param + .4byte \addr + .endm + + .macro if_user_condition_eq param, addr + .byte 0x13 + .byte \param + .4byte \addr + .endm + + .macro if_user_condition_not_eq param, addr + .byte 0x14 + .byte \param + .4byte \addr + .endm + +@ 15 +@ 16 +@ 17 +@ 18 +@ 19 +@ 1A +@ 1B +@ 1C +@ 1D +@ 1E + +@ contest type + + .macro get_contest_type + .byte 0x1F + .endm + + .macro if_contest_type_eq param, addr + .byte 0x20 + .byte \param + .4byte \addr + .endm + + .macro if_contest_type_not_eq param, addr + .byte 0x21 + .byte \param + .4byte \addr + .endm + +@ move excitement (change in excitement due to move) + + .macro get_move_excitement + .byte 0x22 + .endm + + .macro if_move_excitement_less_than param, addr + .byte 0x23 + .byte \param + .4byte \addr + .endm + + .macro if_move_excitement_more_than param, addr + .byte 0x24 + .byte \param + .4byte \addr + .endm + + .macro if_move_excitement_eq param, addr + .byte 0x25 + .byte \param + .4byte \addr + .endm + + .macro if_move_excitement_not_eq param, addr + .byte 0x26 + .byte \param + .4byte \addr + .endm + +@ move effect + + .macro get_effect + .byte 0x27 + .endm + + .macro if_effect_eq param, addr + .byte 0x28 + .byte \param + .4byte \addr + .endm + + .macro if_effect_not_eq param, addr + .byte 0x29 + .byte \param + .4byte \addr + .endm + +@ move effect type + + .macro get_effect_type + .byte 0x2A + .endm + + .macro if_effect_type_eq param, addr + .byte 0x2B + .byte \param + .4byte \addr + .endm + + .macro if_effect_type_not_eq param, addr + .byte 0x2C + .byte \param + .4byte \addr + .endm + +@ whether the current move is the most appealing in the user's moveset + + .macro check_most_appealing_move + .byte 0x2D + .endm + + .macro if_most_appealing_move addr + .byte 0x2E + .4byte \addr + .endm + +@ 2F +@ 30 +@ 31 +@ 32 +@ 33 +@ 34 +@ 35 +@ 36 +@ 37 +@ 38 +@ 39 +@ 3A + +@ number of times current move has been used + + .macro get_move_used_count + .byte 0x3B + .endm + + .macro if_move_used_count_less_than param, addr + .byte 0x3C + .byte \param + .4byte \addr + .endm + + .macro if_move_used_count_more_than param, addr + .byte 0x3D + .byte \param + .4byte \addr + .endm + + .macro if_move_used_count_eq param, addr + .byte 0x3E + .byte \param + .4byte \addr + .endm + + .macro if_move_used_count_not_eq param, addr + .byte 0x3F + .byte \param + .4byte \addr + .endm + +@ whether the current move is a combo starter (with another move in the moveset) + + .macro check_combo_starter + .byte 0x40 + .endm + + .macro if_combo_starter addr + .byte 0x41 + .4byte \addr + .endm + + .macro if_not_combo_starter addr + .byte 0x42 + .4byte \addr + .endm + +@ whether the current move is a combo finisher (with another move in the moveset) + + .macro check_combo_finisher + .byte 0x43 + .endm + + .macro if_combo_finisher addr + .byte 0x44 + .4byte \addr + .endm + + .macro if_not_combo_finisher addr + .byte 0x45 + .4byte \addr + .endm + +@ whether the current move would finish a combo + + .macro check_would_finish_combo + .byte 0x46 + .endm + + .macro if_would_finish_combo addr + .byte 0x47 + .4byte \addr + .endm + + .macro if_would_not_finish_combo addr + .byte 0x48 + .4byte \addr + .endm + +@ condition of mon (indexed by order) + + .macro get_condition mon + .byte 0x49 + .byte \mon + .endm + + .macro if_condition_less_than mon, value, addr + .byte 0x4A + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_condition_more_than mon, value, addr + .byte 0x4B + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_condition_eq mon, value, addr + .byte 0x4C + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_condition_not_eq mon, value, addr + .byte 0x4D + .byte \mon + .byte \value + .4byte \addr + .endm + +@ whether the mon used a combo starter move +@ Even though this value is always 1 or 0 (i.e. TRUE/FALSE), +@ there are less-than and greater-than comparison operations for some reason. + + .macro get_used_combo_starter mon + .byte 0x4E + .byte \mon + .endm + + .macro if_used_combo_starter_less_than mon, value, addr + .byte 0x4F + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_used_combo_starter_more_than mon, value, addr + .byte 0x50 + .byte \mon + .byte \value + .4byte \addr + .endm + + + .macro if_used_combo_starter_eq mon, value, addr + .byte 0x51 + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_used_combo_starter_not_eq mon, value, addr + .byte 0x52 + .byte \mon + .byte \value + .4byte \addr + .endm + +@ whether the mon can make an appeal + + .macro check_can_participate mon + .byte 0x53 + .byte \mon + .endm + + .macro if_can_participate mon, addr + .byte 0x54 + .byte \mon + .4byte \addr + .endm + + .macro if_cannot_participate mon, addr + .byte 0x55 + .byte \mon + .4byte \addr + .endm + +@ 56 +@ 57 + + .macro contest_58 param addr + .byte 0x58 + .byte \param + .4byte \addr + .endm + +@ 59 +@ 5A +@ 5B +@ 5C +@ 5D +@ 5E +@ 5F +@ 60 +@ 61 +@ 62 +@ 63 +@ 64 +@ 65 +@ 66 +@ 67 +@ 68 +@ 69 +@ 6A +@ 6B +@ 6C +@ 6D +@ 6E +@ 6F +@ 70 +@ 71 +@ 72 +@ 73 +@ 74 +@ 75 +@ 76 +@ 77 +@ 78 +@ 79 +@ 7A +@ 7B +@ 7C + + .macro if_random param addr + .byte 0x7D + .byte \param + .4byte \addr + .endm + +@ 7E + + .macro jump addr + .byte 0x7F + .4byte \addr + .endm + + .macro call addr + .byte 0x80 + .4byte \addr + .endm + + .macro end + .byte 0x81 + .endm + + .macro check_user_has_exciting_move + .byte 0x82 + .endm + + .macro if_user_has_exciting_move addr + .byte 0x83 + .4byte \addr + .endm + + .macro if_user_doesnt_have_exciting_move addr + .byte 0x84 + .4byte \addr + .endm + +@ 85 +@ 86 + + .macro if_effect_in_user_moveset param addr + .byte 0x87 + .2byte \param + .4byte \addr + .endm diff --git a/asm/macros/ec.inc b/asm/macros/ec.inc new file mode 100644 index 000000000..d3fd45c2f --- /dev/null +++ b/asm/macros/ec.inc @@ -0,0 +1,8 @@ + + .macro ec_duplicates count + .2byte 0xff00 + \count + .endm + + .macro ec_words_by_letter label + .2byte (gEasyChatWordsByLetter_\label - gEasyChatWordsAlphabetized) / 2 + .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc new file mode 100644 index 000000000..960b300b7 --- /dev/null +++ b/asm/macros/event.inc @@ -0,0 +1,1523 @@ + @ Does nothing. + .macro nop + .byte 0x00 + .endm + + @ Does nothing. + .macro nop1 + .byte 0x01 + .endm + + @ Terminates script execution. + .macro end + .byte 0x02 + .endm + + @ Jumps back to after the last-executed call statement, and continues script execution from there. + .macro return + .byte 0x03 + .endm + + @ Jumps to destination and continues script execution from there. The location of the calling script is remembered and can be returned to later. + .macro call destination + .byte 0x04 + .4byte \destination + .endm + + @ Jumps to destination and continues script execution from there. + .macro goto destination + .byte 0x05 + .4byte \destination + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), jumps to destination and continues script execution from there. + .macro goto_if condition, destination + .byte 0x06 + .byte \condition + .4byte \destination + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), calls destination. + .macro call_if condition, destination + .byte 0x07 + .byte \condition + .4byte \destination + .endm + + @ Jumps to the standard function at index function. + .macro gotostd function + .byte 0x08 + .byte \function + .endm + + @ Calls the standard function at index function. + .macro callstd function + .byte 0x09 + .byte \function + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), jumps to the standard function at index function. + .macro gotostd_if condition, function + .byte 0x0a + .byte \condition + .byte \function + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), calls the standard function at index function. + .macro callstd_if condition, function + .byte 0x0b + .byte \condition + .byte \function + .endm + + @ Executes a script stored in a default RAM location. + .macro gotoram + .byte 0x0c + .endm + + @ Terminates script execution and "resets the script RAM". + .macro killscript + .byte 0x0d + .endm + + @ Sets mystery event status + .macro setmysteryeventstatus value + .byte 0x0e + .byte \value + .endm + + @ Sets the specified script bank to immediate value. + .macro loadword destination, value + .byte 0x0f + .byte \destination + .4byte \value + .endm + + @ Sets the specified script bank to immediate value. + .macro loadbyte destination, value + .byte 0x10 + .byte \destination + .byte \value + .endm + + @ Sets the byte at offset to value. + .macro writebytetoaddr value, offset + .byte 0x11 + .byte \value + .4byte \offset + .endm + + @ Copies the byte value at source into the specified script bank. + .macro loadbytefromaddr destination, source + .byte 0x12 + .byte \destination + .4byte \source + .endm + + @ Not sure. Judging from XSE's description I think it takes the least-significant byte in bank source and writes it to destination. + .macro setptrbyte source, destination + .byte 0x13 + .byte \source + .4byte \destination + .endm + + @ Copies the contents of bank source into bank destination. + .macro copylocal destination, source + .byte 0x14 + .byte \destination + .byte \source + .endm + + @ Copies the byte at source to destination, replacing whatever byte was previously there. + .macro copybyte destination, source + .byte 0x15 + .4byte \destination + .4byte \source + .endm + + @ Changes the value of destination to value. + .macro setvar destination, value + .byte 0x16 + .2byte \destination + .2byte \value + .endm + + @ Changes the value of destination by adding value to it. Overflow is not prevented (0xFFFF + 1 = 0x0000). + .macro addvar destination, value + .byte 0x17 + .2byte \destination + .2byte \value + .endm + + @ Changes the value of destination by subtracting value to it. Overflow is not prevented (0x0000 - 1 = 0xFFFF). + .macro subvar destination, value + .byte 0x18 + .2byte \destination + .2byte \value + .endm + + @ Copies the value of source into destination. + .macro copyvar destination, source + .byte 0x19 + .2byte \destination + .2byte \source + .endm + + @ If source is not a variable, then this function acts like setvar. Otherwise, it acts like copyvar. + .macro setorcopyvar destination, source + .byte 0x1a + .2byte \destination + .2byte \source + .endm + + @ Compares the values of script banks a and b, after forcing the values to bytes. + .macro compare_local_to_local byte1, byte2 + .byte 0x1b + .byte \byte1 + .byte \byte2 + .endm + + @ Compares the least-significant byte of the value of script bank a to a fixed byte value (b). + .macro compare_local_to_value a, b + .byte 0x1c + .byte \a + .byte \b + .endm + + @ Compares the least-significant byte of the value of script bank a to the byte located at offset b. + .macro compare_local_to_addr a, b + .byte 0x1d + .byte \a + .4byte \b + .endm + + @ Compares the byte located at offset a to the least-significant byte of the value of script bank b. + .macro compare_addr_to_local a, b + .byte 0x1e + .4byte \a + .byte \b + .endm + + @ Compares the byte located at offset a to a fixed byte value (b). + .macro compare_addr_to_value a, b + .byte 0x1f + .4byte \a + .byte \b + .endm + + @ Compares the byte located at offset a to the byte located at offset b. + .macro compare_addr_to_addr a, b + .byte 0x20 + .4byte \a + .4byte \b + .endm + + @ Compares the value of `var` to a fixed word value (b). + .macro compare_var_to_value var, value + .byte 0x21 + .2byte \var + .2byte \value + .endm + + @ Compares the value of `var` to the value of `var2`. + .macro compare_var_to_var var1, var2 + .byte 0x22 + .2byte \var1 + .2byte \var2 + .endm + + @ Generic compare macro which attempts to deduce argument types based on their values + @ Any values between 0x4000 to 0x4FFF and 0x8000 to 0x8FFF are considered event variable identifiers + .macro compare arg1, arg2 + .if ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && ((\arg2 >> 12) == 4 || (\arg2 >> 12) == 8) + compare_var_to_var \arg1, \arg2 + .elseif ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && (\arg2 >= 0 && \arg2 <= 0xFFFF) + compare_var_to_value \arg1, \arg2 + .else + .error "Invalid arguments for 'compare'" + .endif + .endm + + @ Calls the native C function stored at `func`. + .macro callnative func + .byte 0x23 + .4byte \func + .endm + + @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE. + .macro gotonative func + .byte 0x24 + .4byte \func + .endm + + @ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers. + .macro special function + .byte 0x25 + .2byte SPECIAL_\function + .endm + + @ Calls a special function. That function's output (if any) will be written to the variable you specify. + .macro specialvar output, function + .byte 0x26 + .2byte \output + .2byte SPECIAL_\function + .endm + + @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). + .macro waitstate + .byte 0x27 + .endm + + @ Blocks script execution for time (frames? milliseconds?). + .macro delay time + .byte 0x28 + .2byte \time + .endm + + @ Sets a to 1. + .macro setflag a + .byte 0x29 + .2byte \a + .endm + + @ Sets a to 0. + .macro clearflag a + .byte 0x2a + .2byte \a + .endm + + @ Compares a to 1. + .macro checkflag a + .byte 0x2b + .2byte \a + .endm + + @ In FireRed, this command is a nop. + .macro initclock hour minute + .byte 0x2c + .byte \hour + .byte \minute + .endm + + @ In FireRed, this command is a nop. + .macro dodailyevents + .byte 0x2d + .endm + + @ Resets the values of variables 0x8000, 0x8001, and 0x8002. Related to RTC in RSE? + .macro gettime + .byte 0x2e + .endm + + @ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones. + .macro playse sound_number + .byte 0x2f + .2byte \sound_number + .endm + + @ Blocks script execution until the currently-playing sound (triggered by sound) finishes playing. + .macro waitse + .byte 0x30 + .endm + + @ Plays the specified (fanfare_number) fanfare. + .macro playfanfare fanfare_number + .byte 0x31 + .2byte \fanfare_number + .endm + + @ Blocks script execution until all currently-playing fanfares finish. + .macro waitfanfare + .byte 0x32 + .endm + + @ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00. + .macro playbgm song_number, unknown + .byte 0x33 + .2byte \song_number + .byte \unknown + .endm + + @ Plays the specified (song_number) song. + .macro savebgm song_number + .byte 0x34 + .2byte \song_number + .endm + + @ Crossfades the currently-playing song into the map's default song. + .macro fadedefaultbgm + .byte 0x35 + .endm + + @ Crossfades the currently-playng song into the specified (song_number) song. + .macro fadenewbgm song_number + .byte 0x36 + .2byte \song_number + .endm + + @ Fades out the currently-playing song. + .macro fadeoutbgm speed + .byte 0x37 + .byte \speed + .endm + + @ Fades the currently-playing song back in. + .macro fadeinbgm speed + .byte 0x38 + .byte \speed + .endm + + @ Sends the player to Warp warp on Map bank.map. If the specified warp is 0xFF, then the player will instead be sent to (X, Y) on the map. + .macro warp map, warp, X, Y + .byte 0x39 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp that does not play a sound effect. + .macro warpsilent map, warp, X, Y + .byte 0x3a + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp that uses "a walking effect". + .macro warpdoor map, warp, X, Y + .byte 0x3b + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Warps the player to another map using a hole animation. + .macro warphole map + .byte 0x3c + map \map + .endm + + @ Clone of warp that uses a teleport effect. It is apparently only used in R/S/E.[source] + .macro warpteleport map, warp, X, Y + .byte 0x3d + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp. Used by an (unused?) Safari Zone script to return the player to the gatehouse and end the Safari Game. + .macro setwarp map, warp, X, Y + .byte 0x3e + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets a default warp place. If a warp tries to send the player to Warp 127 on Map 127.127, they will instead be sent here. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). + .macro setdynamicwarp map, warp, X, Y + .byte 0x3f + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp3, except that this writes data to different offsets... + .macro setdivewarp map, warp, X, Y + .byte 0x40 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp3, except that this writes data to different offsets... + .macro setholewarp map, warp, X, Y + .byte 0x41 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Retrieves the player's zero-indexed X- and Y-coordinates in the map, and stores them in the specified variables. + .macro getplayerxy X, Y + .byte 0x42 + .2byte \X + .2byte \Y + .endm + + @ Retrieves the number of Pokmon in the player's party, and stores that number in variable 0x800D (LASTRESULT). + .macro countpokemon + .byte 0x43 + .endm + + @ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and variable 0x800D (LASTRESULT) will be set to 0x0001; otherwise, LASTRESULT is set to 0x0000. + .macro additem index, quantity + .byte 0x44 + .2byte \index + .2byte \quantity + .endm + + @ Removes quantity of item index from the player's Bag. + .macro removeitem index, quantity + .byte 0x45 + .2byte \index + .2byte \quantity + .endm + + @ Checks if the player has enough space in their Bag to hold quantity more of item index. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. + .macro checkitemspace index, quantity + .byte 0x46 + .2byte \index + .2byte \quantity + .endm + + @ Checks if the player has quantity or more of item index in their Bag. Sets variable 0x800D (LASTRESULT) to 0x0001 if the player has enough of the item, or 0x0000 if they have fewer than quantity of the item. + .macro checkitem index, quantity + .byte 0x47 + .2byte \index + .2byte \quantity + .endm + + @ Checks which Bag pocket the specified (index) item belongs in, and writes the value to variable 0x800D (LASTRESULT). This script is used to show the name of the proper Bag pocket when the player receives an item via callstd (simplified to giveitem in XSE). + .macro checkitemtype index + .byte 0x48 + .2byte \index + .endm + + @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. + .macro addpcitem index, quantity + .byte 0x49 + .2byte \index + .2byte \quantity + .endm + + @ Checks for quantity amount of item index in the player's PC. Both arguments can be variables. + .macro checkpcitem index, quantity + .byte 0x4a + .2byte \index + .2byte \quantity + .endm + + @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro adddecor a + .byte 0x4b + .2byte \a + .endm + + @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro removedecor a + .byte 0x4c + .2byte \a + .endm + + @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro hasdecor a + .byte 0x4d + .2byte \a + .endm + + @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro checkdecor a + .byte 0x4e + .2byte \a + .endm + + @ Applies the movement data at movements to the specified (index) Person event. Also closes any standard message boxes that are still open. + @ This command in fact uses variables to access the Person event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Person event 3 will have the movements at @move1 applied to them. Thank you Shiny Quagsire for bringing this to my attention. + .macro applymovement index, movements, mapGroup, mapNum + .ifb \mapGroup + .byte 0x4f + .2byte \index + .4byte \movements + .else + .byte 0x50 + .2byte \index + .4byte \movements + .byte \mapGroup + .byte \mapNum + .endif + .endm + + @ Blocks script execution until the movements being applied to the specified (index) Person event finish. If the specified Person event is 0x0000, then the command will block script execution until all Person events affected by applymovement finish their movements. If the specified Person event is not currently being manipulated with applymovement, then this command does nothing. + .macro waitmovement index, mapBank, mapNum + .ifb \mapBank + .byte 0x51 + .2byte \index + .else + .byte 0x52 + .2byte \index + .byte \mapBank + .byte \mapNum + .endif + .endm + + @ Attempts to hide the specified (local_ID, a local ID) Person event on the specified map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing. + @ If no map is specified, then the current map is used + .macro removeobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x53 + .2byte \localId + .else + .byte 0x54 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif + .endm + + .macro addobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x55 + .2byte \localId + .else + .byte 0x56 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif + .endm + + .macro setobjectxy word1, word2, word3 + .byte 0x57 + .2byte \word1 + .2byte \word2 + .2byte \word3 + .endm + + .macro showobject word, byte1, byte2 + .byte 0x58 + .2byte \word + .byte \byte1 + .byte \byte2 + .endm + + .macro hideobject word, byte1, byte2 + .byte 0x59 + .2byte \word + .byte \byte1 + .byte \byte2 + .endm + + @ If the script was called by a Person event, then that Person will turn to face toward the tile that the player is stepping off of. + .macro faceplayer + .byte 0x5a + .endm + + .macro turnobject word, byte + .byte 0x5b + .2byte \word + .byte \byte + .endm + + @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. + .macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4 + .byte 0x5c + .byte \type + .2byte \trainer + .2byte \word + .if \type == 0 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 1 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 2 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 3 + .4byte \pointer1 @ text + .elseif \type == 4 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 5 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 6 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .elseif \type == 7 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 8 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .endif + .endm + + + @ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes. + .macro battlebegin + .byte 0x5d + .endm + + .macro ontrainerbattleend + .byte 0x5e + .endm + + .macro ontrainerbattleendgoto + .byte 0x5f + .endm + + @ Compares Flag (trainer + 0x500) to 1. (If the flag is set, then the trainer has been defeated by the player.) + .macro checktrainerflag trainer + .byte 0x60 + .2byte \trainer + .endm + + @ Sets Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) + .macro settrainerflag trainer + .byte 0x61 + .2byte \trainer + .endm + + @ Clears Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) + .macro cleartrainerflag trainer + .byte 0x62 + .2byte \trainer + .endm + + .macro setobjectxyperm word1, word2, word3 + .byte 0x63 + .2byte \word1 + .2byte \word2 + .2byte \word3 + .endm + + .macro moveobjectoffscreen word + .byte 0x64 + .2byte \word + .endm + + .macro setobjectmovementtype word, byte + .byte 0x65 + .2byte \word + .byte \byte + .endm + + @ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn. + .macro waitmessage + .byte 0x66 + .endm + + @ Starts displaying a standard message box containing the specified text. If text is a pointer, then the string at that offset will be loaded and used. If text is script bank 0, then the value of script bank 0 will be treated as a pointer to the text. (You can use loadpointer to place a string pointer in a script bank.) + .macro message text + .byte 0x67 + .4byte \text + .endm + + @ Holds the current message box open until the player presses a key. The message box is then closed. + .macro closemessage + .byte 0x68 + .endm + + @ Ceases movement for all OWs on-screen. + .macro lockall + .byte 0x69 + .endm + + @ If the script was called by a Person event, then that Person's movement will cease. + .macro lock + .byte 0x6a + .endm + + @ Resumes normal movement for all OWs on-screen, and closes any standard message boxes that are still open. + .macro releaseall + .byte 0x6b + .endm + + @ If the script was called by a Person event, then that Person's movement will resume. This command also closes any standard message boxes that are still open. + .macro release + .byte 0x6c + .endm + + @ Blocks script execution until the player presses any key. + .macro waitbutton + .byte 0x6d + .endm + + @ Displays a YES/NO multichoice box at the specified coordinates, and blocks script execution until the user makes a selection. Their selection is stored in variable 0x800D (LASTRESULT); 0x0000 for "NO" or if the user pressed B, and 0x0001 for "YES". + .macro yesnobox X, Y + .byte 0x6e + .byte \X + .byte \Y + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro multichoice X, Y, list, B + .byte 0x6f + .byte \X + .byte \Y + .byte \list + .byte \B + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro multichoicedefault X, Y, list, default, B + .byte 0x70 + .byte \X + .byte \Y + .byte \list + .byte \default + .byte \B + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. + .macro multichoicegrid X, Y, list, per_row, B + .byte 0x71 + .byte \X + .byte \Y + .byte \list + .byte \per_row + .byte \B + .endm + + .macro drawbox byte1, byte2, byte3, byte4 + .byte 0x72 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + .macro erasebox byte1, byte2, byte3, byte4 + .byte 0x73 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + .macro drawboxtext byte1, byte2, byte3, byte4 + .byte 0x74 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + @ Displays a box containing the front sprite for the specified (species) Pokmon species. + .macro drawpokepic species, X, Y + .byte 0x75 + .2byte \species + .byte \X + .byte \Y + .endm + + @ Hides all boxes displayed with showpokepic. + .macro erasepokepic + .byte 0x76 + .endm + + @ In FireRed, this command is a nop. (The argument is discarded.) + .macro drawcontestwinner a + .byte 0x77 + .byte \a + .endm + + @ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters. + .macro braillemessage text + .byte 0x78 + .4byte \text + .endm + + @ Gives the player one of the specified (species) Pokmon at level level holding item. The unknown arguments should all be zeroes. + .macro givepoke species, level, item, unknown1, unknown2, unknown3 + .byte 0x79 + .2byte \species + .byte \level + .2byte \item + .4byte \unknown1 + .4byte \unknown2 + .byte \unknown3 + .endm + + .macro giveegg word + .byte 0x7a + .2byte \word + .endm + + .macro setpokemove byte1, byte2, word + .byte 0x7b + .byte \byte1 + .byte \byte2 + .2byte \word + .endm + + @ Checks if at least one Pokmon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the Pokmon that knows the move. If not, LASTRESULT is set to 0x0006. + .macro checkpokemove index + .byte 0x7c + .2byte \index + .endm + + @ Writes the name of the Pokmon at index species to the specified buffer. + .macro getspeciesname out, species + .byte 0x7d + .byte \out + .2byte \species + .endm + + @ Writes the name of the first Pokmon in the player's party to the specified buffer. + .macro getfirstpartypokename out + .byte 0x7e + .byte \out + .endm + + @ Writes the name of the Pokmon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. + .macro getpartypokename out, slot + .byte 0x7f + .byte \out + .2byte \slot + .endm + + @ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. + .macro getitemname out, item + .byte 0x80 + .byte \out + .2byte \item + .endm + + @ In FireRed, this command is a nop. (The first argument is discarded immediately. The second argument is read, but not used for anything.) + .macro getdecorname a, b + .byte 0x81 + .byte \a + .2byte \b + .endm + + @ Writes the name of the attack at index attack to the specified buffer. + .macro getmovename out, attack + .byte 0x82 + .byte \out + .2byte \attack + .endm + + @ Converts the value of input to a decimal string, and writes that string to the specified buffer. + .macro getnumberstring out, input + .byte 0x83 + .byte \out + .2byte \input + .endm + + @ Writes the standard string identified by index to the specified buffer. Specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption (I've observed destruction of the stored player name and crashes when entering/exiting certain menu screens). + .macro getstdstring out, index + .byte 0x84 + .byte \out + .2byte \index + .endm + + @ Copies the string at offset to the specified buffer. + .macro getstring out, offset + .byte 0x85 + .byte \out + .4byte \offset + .endm + + @ Opens the Pokemart system, offering the specified products for sale. + .macro pokemart products + .byte 0x86 + .4byte \products + .endm + + @ Apparent clone of pokemart. + .macro pokemartdecor products + .byte 0x87 + .4byte \products + .endm + + @ Apparent clone of pokemart. + .macro pokemartbp products + .byte 0x88 + .4byte \products + .endm + + .macro playslotmachine word + .byte 0x89 + .2byte \word + .endm + + @ In FireRed, this command is a nop. + .macro plantberrytree byte1, byte2, byte3 + .byte 0x8a + .byte \byte1, \byte2, \byte3 + .endm + + @ In FireRed, this command sets the byte at 0x03000EA8 to 0x01. I do not know what that means. + .macro choosecontestpkmn + .byte 0x8b + .endm + + @ In FireRed, this command is a nop. + .macro startcontest + .byte 0x8c + .endm + + @ In FireRed, this command is a nop. + .macro showcontestresults + .byte 0x8d + .endm + + @ In FireRed, this command is a nop. + .macro contestlinktransfer + .byte 0x8e + .endm + + @ Stores a random integer between 0 and limit in variable 0x800D (LASTRESULT). + .macro random limit + .byte 0x8f + .2byte \limit + .endm + + @ If check is 0x00, this command adds value to the player's money. + .macro givemoney value, check + .byte 0x90 + .4byte \value + .byte \check + .endm + + @ If check is 0x00, this command subtracts value from the player's money. + .macro takemoney value, check + .byte 0x91 + .4byte \value + .byte \check + .endm + + @ If check is 0x00, this command will check if the player has value or more money; script variable 0x800D (LASTRESULT) is set to 0x0001 if the player has enough money, or 0x0000 if the do not. + .macro checkmoney value, check + .byte 0x92 + .4byte \value + .byte \check + .endm + + @ Spawns a secondary box showing how much money the player has. + .macro showmoneybox X, Y + .byte 0x93 + .byte \X + .byte \Y + .endm + + @ Hides the secondary box spawned by showmoney. + .macro hidemoneybox X, Y + .byte 0x94 + .byte \X + .byte \Y + .endm + + @ Updates the secondary box spawned by showmoney. (What does it do with its arguments?) + .macro updatemoneybox X, Y + .byte 0x95 + .byte \X + .byte \Y + .endm + + @ In FireRed, this command is a nop. + .macro getpricereduction word + .byte 0x96 + .2byte \word + .endm + + @ Fades the screen to black or back, using the specified effect. Effect 0x00 fades in, and effect 0x01 fades out. I don't know if other effects exist. + .macro fadescreen effect + .byte 0x97 + .byte \effect + .endm + + .macro fadescreendelay byte1, byte2 + .byte 0x98 + .byte \byte1 + .byte \byte2 + .endm + + .macro setdarklevel word + .byte 0x99 + .2byte \word + .endm + + .macro animdarklevel byte + .byte 0x9a + .byte \byte + .endm + + .macro messageautoscroll pointer + .byte 0x9b + .4byte \pointer + .endm + + @ Executes the specified field move animation. + .macro dofieldeffect animation + .byte 0x9c + .2byte \animation + .endm + + @ Tells the game which party Pokmon to use for the next field move animation. + .macro setfieldeffect animation, slot + .byte 0x9d + .byte \animation + .2byte \slot + .endm + + @ Blocks script execution until all playing field move animations complete. + .macro waitfieldeffect animation + .byte 0x9e + .2byte \animation + .endm + + @ Sets which healing place the player will return to if all of the Pokmon in their party faint. A list of available healing places can be found on PokeCommunity. + .macro sethealplace flightspot + .byte 0x9f + .2byte \flightspot + .endm + + @ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT. + .macro checkplayergender + .byte 0xa0 + .endm + + @ Plays the specified (species) Pokmon's cry. You can use waitcry to block script execution until the sound finishes. + .macro playpokecry species, effect + .byte 0xa1 + .2byte \species + .2byte \effect + .endm + + @ Changes the tile at (X, Y) on the current map. + .macro setmaptile X, Y, tile_number, tile_attrib + .byte 0xa2 + .2byte \X + .2byte \Y + .2byte \tile_number + .2byte \tile_attrib + .endm + + @ Queues a weather change to the default weather for the map. + .macro resetweather + .byte 0xa3 + .endm + + @ Queues a weather change to type weather. + .macro setweather type + .byte 0xa4 + .2byte \type + .endm + + @ Executes the weather change queued with resetweather or setweather. The current weather will smoothly fade into the queued weather. + .macro doweather + .byte 0xa5 + .endm + + @ This command manages cases in which maps have tiles that change state when stepped on (specifically, cracked/breakable floors). + .macro tileeffect subroutine + .byte 0xa6 + .byte \subroutine + .endm + + .macro setmaplayoutindex word + .byte 0xa7 + .2byte \word + .endm + + .macro setobjectpriority word, byte1, byte2, byte3 + .byte 0xa8 + .2byte \word + .byte \byte1 + .byte \byte2 + .byte \byte3 + .endm + + .macro resetobjectpriority word, byte1, byte2 + .byte 0xa9 + .2byte \word + .byte \byte1 + .byte \byte2 + .endm + + .macro createvobject byte1, byte2, word1, word2, byte3, byte4 + .byte 0xaa + .byte \byte1 + .byte \byte2 + .2byte \word1 + .2byte \word2 + .byte \byte3 + .byte \byte4 + .endm + + .macro turnvobject byte1, byte2 + .byte 0xab + .byte \byte1 + .byte \byte2 + .endm + + @ Queues the opening of the door tile at (X, Y) with an animation. + .macro opendoor X, Y + .byte 0xac + .2byte \X + .2byte \Y + .endm + + @ Queues the closing of the door tile at (X, Y) with an animation. + .macro closedoor X, Y + .byte 0xad + .2byte \X + .2byte \Y + .endm + + @ Executes the state changes queued with setdooropened, setdoorclosed, setdooropened2, and setdoorclosed2. + .macro waitdooranim + .byte 0xae + .endm + + @ Queues the opening of the door tile at (X, Y) without an animation. + .macro setdooropen X, Y + .byte 0xaf + .2byte \X + .2byte \Y + .endm + + @ Queues the closing of the door tile at (X, Y) without an animation. + .macro setdoorclosed X, Y + .byte 0xb0 + .2byte \X + .2byte \Y + .endm + + @ In FireRed, this command is a nop. + .macro addelevmenuitem + .byte 0xb1 + .endm + + @ In FireRed, this command is a nop. + .macro showelevmenu + .byte 0xb2 + .endm + + .macro checkcoins word + .byte 0xb3 + .2byte \word + .endm + + .macro givecoins word + .byte 0xb4 + .2byte \word + .endm + + .macro takecoins word + .byte 0xb5 + .2byte \word + .endm + + @ Prepares to start a wild battle against a species at Level level holding item. Running this command will not affect normal wild battles. You start the prepared battle with dowildbattle. + .macro setwildbattle species, level, item + .byte 0xb6 + .2byte \species + .byte \level + .2byte \item + .endm + + @ Starts a wild battle against the Pokmon generated by setwildbattle. Blocks script execution until the battle finishes. + .macro dowildbattle + .byte 0xb7 + .endm + + .macro setvaddress long, word + .byte 0xb8 + .4byte \long + .2byte \word + .endm + + .macro vgoto pointer + .byte 0xb9 + .4byte \pointer + .endm + + .macro vcall pointer + .byte 0xba + .4byte \pointer + .endm + + .macro vgoto_if byte, pointer + .byte 0xbb + .byte \byte + .4byte \pointer + .endm + + .macro vcall_if byte, pointer + .byte 0xbc + .byte \byte + .4byte \pointer + .endm + + .macro vmessage pointer + .byte 0xbd + .4byte \pointer + .endm + + .macro vloadword pointer + .byte 0xbe + .4byte \pointer + .endm + + .macro vgetstring byte, pointer + .byte 0xbf + .byte \byte + .4byte \pointer + .endm + + @ Spawns a secondary box showing how many Coins the player has. + .macro showcoinsbox X, Y + .byte 0xc0 + .byte \X + .byte \Y + .endm + + @ Hides the secondary box spawned by showcoins. It doesn't appear to use its arguments, but they are still required. + .macro hidecoinsbox X, Y + .byte 0xc1 + .byte \X + .byte \Y + .endm + + @ Updates the secondary box spawned by showcoins. (What does it do with its arguments?) + .macro updatecoinsbox X, Y + .byte 0xc2 + .byte \X + .byte \Y + .endm + + @ Increases the value of the specified hidden variable by 1. The hidden variable's value will not be allowed to exceed 0x00FFFFFF. + .macro incrementgamestat a + .byte 0xc3 + .byte \a + .endm + + @ Clone of warp... Except that it doesn't appear to have any effect when used in some of FireRed's default level scripts. (If it did, Berry Forest would be impossible to enter...) + .macro setescapewarp map, warp, X, Y + .byte 0xc4 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Blocks script execution until cry finishes. + .macro waitpokecry + .byte 0xc5 + .endm + + @ Writes the name of the specified (box) PC box to the specified buffer. + .macro bufferboxname out, box + .byte 0xc6 + .byte \out + .2byte \box + .endm + + @ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text, 0xFF resets the color to the default for the current OW's gender, and all other values produce black text. + .macro textcolor color + .byte 0xc7 + .byte \color + .endm + + @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. + .macro loadhelp pointer + .byte 0xc8 + .4byte \pointer + .endm + + @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. + .macro unloadhelp + .byte 0xc9 + .endm + + @ After using this command, all standard message boxes will use the signpost frame. + .macro signmsg + .byte 0xca + .endm + + @ Ends the effects of signmsg, returning message box frames to normal. + .macro normalmsg + .byte 0xcb + .endm + + @ Compares the value of a hidden variable to a dword. + .macro comparehiddenvar a, value + .byte 0xcc + .byte \a + .4byte \value + .endm + + @ Makes the Pokmon in the specified slot of the player's party obedient. It will not randomly disobey orders in battle. + .macro setobedience slot + .byte 0xcd + .2byte \slot + .endm + + @ Checks if the Pokmon in the specified slot of the player's party is obedient. If the Pokmon is disobedient, 0x0001 is written to script variable 0x800D (LASTRESULT). If the Pokmon is obedient (or if the specified slot is empty or invalid), 0x0000 is written. + .macro checkobedience slot + .byte 0xce + .2byte \slot + .endm + + @ Depending on factors I haven't managed to understand yet, this command may cause script execution to jump to the offset specified by the pointer at 0x020370A4. + .macro execram + .byte 0xcf + .endm + + @ Sets worldmapflag to 1. This allows the player to Fly to the corresponding map, if that map has a flightspot. + .macro setworldflag worldmapflag + .byte 0xd0 + .2byte \worldmapflag + .endm + + @ Clone of warpteleport? It is apparently only used in FR/LG, and only with specials.[source] + .macro warpteleport2 map, warp, X, Y + .byte 0xd1 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Changes the location where the player caught the Pokmon in the specified slot of their party. A list of valid catch locations can be found on PokeCommunity. + .macro setcatchlocale slot, location + .byte 0xd2 + .2byte \slot + .byte \location + .endm + + .macro event_d3 unknown + .byte 0xd3 + .2byte \unknown + .endm + + .macro event_d4 + .byte 0xd4 + .endm + + @ In FireRed, this command is a nop. + .macro event_d5 var + .byte 0xd5 + .2byte \var + .endm + + .macro event_d6 + .byte 0xd6 + .endm + + .macro warp7 map, byte, word1, word2 + .byte 0xd7 + map \map + .byte \byte + .2byte \word1 + .2byte \word2 + .endm + + .macro event_d8 + .byte 0xd8 + .endm + + .macro event_d9 + .byte 0xd9 + .endm + + .macro hidebox2 + .byte 0xda + .endm + + .macro message3 pointer + .byte 0xdb + .4byte \pointer + .endm + + .macro fadescreen3 byte + .byte 0xdc + .byte \byte + .endm + + .macro buffertrainerclass byte, word + .byte 0xdd + .byte \byte + .2byte \word + .endm + + .macro buffertrainername byte, word + .byte 0xde + .byte \byte + .2byte \word + .endm + + .macro pokenavcall pointer + .byte 0xdf + .4byte \pointer + .endm + + .macro warp8 map, byte, word1, word2 + .byte 0xe0 + map \map + .byte \byte + .2byte \word1 + .2byte \word2 + .endm + + .macro buffercontesttype byte, word + .byte 0xe1 + .byte \byte + .2byte \word + .endm + + @ Writes the name of the specified (item) item to the specified buffer. If the specified item is a Berry (0x85 - 0xAE) or Poke Ball (0x4) and if the quantity is 2 or more, the buffered string will be pluralized ("IES" or "S" appended). If the specified item is the Enigma Berry, I have no idea what this command does (but testing showed no pluralization). If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. + .macro storeitems out, item, quantity + .byte 0xe2 + .byte \out + .2byte \item + .2byte \quantity + .endm + + +@ Supplementary + + .macro goto_if_eq dest + goto_if 1, \dest + .endm + + .macro switch var + copyvar 0x8000, \var + .endm + + .macro case condition, dest + compare_var_to_value 0x8000, \condition + goto_if_eq \dest + .endm + + .macro msgbox text, type=4 + loadword 0, \text + callstd \type + .endm + + @ Message box types + MSGBOX_YESNO = 5 + + YES = 1 + NO = 0 + + .macro giveitem item, amount=1, function=0 + setorcopyvar 0x8000, \item + setorcopyvar 0x8001, \amount + callstd \function + .endm + + .macro givedecoration decoration + setorcopyvar 0x8000, \decoration + callstd 7 + .endm diff --git a/asm/macros/field_effect_script.inc b/asm/macros/field_effect_script.inc new file mode 100644 index 000000000..d5895b0ef --- /dev/null +++ b/asm/macros/field_effect_script.inc @@ -0,0 +1,42 @@ + .macro loadtiles address + .byte 0 + .4byte \address + .endm + + .macro loadfadedpal address + .byte 1 + .4byte \address + .endm + + .macro loadpal address + .byte 2 + .4byte \address + .endm + + .macro callnative address + .byte 3 + .4byte \address + .endm + + .macro end + .byte 4 + .endm + + .macro loadgfx_callnative tiles_address, palette_address, function_address + .byte 5 + .4byte \tiles_address + .4byte \palette_address + .4byte \function_address + .endm + + .macro loadtiles_callnative tiles_address, function_address + .byte 6 + .4byte \tiles_address + .4byte \function_address + .endm + + .macro loadfadedpal_callnative palette_address, function_address + .byte 7 + .4byte \palette_address + .4byte \function_address + .endm diff --git a/asm/macros/function.inc b/asm/macros/function.inc new file mode 100644 index 000000000..67fb373a8 --- /dev/null +++ b/asm/macros/function.inc @@ -0,0 +1,29 @@ + .macro arm_func_start name + .align 2, 0 + .global \name + .arm + .type \name, function + .endm + + .macro arm_func_end name + .size \name, .-\name + .endm + + .macro thumb_func_start name + .align 2, 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 + .size \name, .-\name + .endm diff --git a/asm/macros/m4a.inc b/asm/macros/m4a.inc new file mode 100644 index 000000000..6c5abc09b --- /dev/null +++ b/asm/macros/m4a.inc @@ -0,0 +1,13 @@ + .macro song label, music_player, unknown + .4byte \label + .2byte \music_player + .2byte \unknown + .endm + + .macro music_player info_struct, track_struct, unknown_1, unknown_2 + .4byte \info_struct + .4byte \track_struct + .byte \unknown_1 + .space 1 + .2byte \unknown_2 + .endm diff --git a/asm/macros/map.inc b/asm/macros/map.inc new file mode 100644 index 000000000..9c68e8414 --- /dev/null +++ b/asm/macros/map.inc @@ -0,0 +1,84 @@ + .macro map map_id + .byte \map_id >> 8 @ map group + .byte \map_id & 0xFF @ map num + .endm + + .macro map_script type, address + .byte \type + .4byte \address + .endm + + .macro map_script_2 word1, word2, address + .2byte \word1 + .2byte \word2 + .4byte \address + .endm + + .macro object_event byte1, word1, byte2, byte3, byte4, byte5, byte6, byte7, byte8, byte9, byte10, byte11, byte12, byte13, byte14, script, word2, byte15, byte16 + .byte \byte1 + .2byte \word1 + .byte \byte2, \byte3, \byte4, \byte5, \byte6, \byte7, \byte8, \byte9, \byte10, \byte11, \byte12, \byte13, \byte14 + .4byte \script + .2byte \word2 + .byte \byte15, \byte16 + inc _num_npcs + .endm + + .macro warp_def x, y, byte, warp, map_id + .2byte \x, \y + .byte \byte, \warp + .byte \map_id & 0xFF @ map num + .byte \map_id >> 8 @ map group + inc _num_warps + .endm + + .macro coord_event x, y, byte1, byte2, word1, word2, word3, script + .2byte \x, \y + .byte \byte1, \byte2 + .2byte \word1, \word2, \word3 + .4byte \script + inc _num_traps + .endm + + .macro bg_event x, y, byte, kind, word, arg6, arg7, arg8 + .2byte \x, \y + .byte \byte, \kind + .2byte \word + .if \kind < 5 + .4byte \arg6 + .else + .2byte \arg6 + .byte \arg7, \arg8 + .endif + inc _num_signs + .endm + + .macro map_events npcs, warps, traps, signs + .byte _num_npcs, _num_warps, _num_traps, _num_signs + .4byte \npcs, \warps, \traps, \signs + reset_map_events + .endm + + .macro reset_map_events + .set _num_npcs, 0 + .set _num_warps, 0 + .set _num_traps, 0 + .set _num_signs, 0 + .endm + + reset_map_events + + + .equiv connection_down, 1 + .equiv connection_up, 2 + .equiv connection_left, 3 + .equiv connection_right, 4 + .equiv connection_dive, 5 + .equiv connection_emerge, 6 + + .macro connection direction, offset, map, filler + .4byte connection_\direction + .4byte \offset + map \map + .space 2 + .endm diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc new file mode 100644 index 000000000..674ce7169 --- /dev/null +++ b/asm/macros/movement.inc @@ -0,0 +1,116 @@ + .macro create_movement name + enum _\name + .macro \name + .byte _\name + .endm + .endm + + enum_start + create_movement step_00 + create_movement step_01 + create_movement step_02 + create_movement step_03 + create_movement slow_step_down + create_movement slow_step_up + create_movement slow_step_left + create_movement slow_step_right + create_movement step_down + create_movement step_up + create_movement step_left + create_movement step_right + create_movement fast_step_down + create_movement fast_step_up + create_movement fast_step_left + create_movement fast_step_right + create_movement step_10 + create_movement step_11 + create_movement step_12 + create_movement step_13 + create_movement step_14 + create_movement step_15 + create_movement step_16 + create_movement step_17 + create_movement step_18 + create_movement step_19 + create_movement step_1a + create_movement step_1b + create_movement step_1c + create_movement step_1d + create_movement step_1e + create_movement step_1f + create_movement step_20 + create_movement step_21 + create_movement step_22 + create_movement step_23 + create_movement step_24 + create_movement step_25 + create_movement step_26 + create_movement step_27 + create_movement step_28 + create_movement step_29 + create_movement step_2a + create_movement step_2b + create_movement step_2c + create_movement step_2d + create_movement step_2e + create_movement step_2f + create_movement step_30 + create_movement step_31 + create_movement step_32 + create_movement step_33 + create_movement step_34 + create_movement step_35 + create_movement step_36 + create_movement step_37 + create_movement step_38 + create_movement step_39 + create_movement step_3a + create_movement step_3b + create_movement step_3c + create_movement step_3d + create_movement step_3e + create_movement step_3f + create_movement step_40 + create_movement step_41 + create_movement step_42 + create_movement step_43 + create_movement step_44 + create_movement step_45 + create_movement step_46 + create_movement step_47 + create_movement step_48 + create_movement step_49 + create_movement step_4a + create_movement step_4b + create_movement step_4c + create_movement step_4d + create_movement step_4e + create_movement step_4f + create_movement step_50 + create_movement step_51 + create_movement step_52 + create_movement step_53 + create_movement step_54 + create_movement step_55 + create_movement step_56 + create_movement step_57 + create_movement step_58 + create_movement step_59 + create_movement step_5a + create_movement step_5b + create_movement step_5c + create_movement step_5d + create_movement step_5e + create_movement step_5f + create_movement step_60 + create_movement step_61 + + enum_start 0x91 + create_movement step_91 + create_movement step_92 + + enum_start 0x96 + create_movement step_96 + + enum_start 0xfe + create_movement step_end diff --git a/asm/macros/music_voice.inc b/asm/macros/music_voice.inc new file mode 100644 index 000000000..b7a9e7f8d --- /dev/null +++ b/asm/macros/music_voice.inc @@ -0,0 +1,125 @@ + .macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte 0 + _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release + .endm + + .macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte 8 + _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release + .endm + + .macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte 16 + _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release + .endm + + .macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte \base_midi_key + .byte 0 + .if \pan != 0 + .byte (0x80 | \pan) + .else + .byte 0 + .endif + .4byte \sample_data_pointer + .byte \attack + .byte \decay + .byte \sustain + .byte \release + .endm + + .macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release + _voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release + _voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release + .byte \type, 60, 0 + .byte \sweep + .byte (\duty_cycle & 0x3) + .byte 0, 0, 0 + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_square_2 duty_cycle, attack, decay, sustain, release + _voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro voice_square_2_alt duty_cycle, attack, decay, sustain, release + _voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release + .byte \type, 60, 0, 0 + .byte (\duty_cycle & 0x3) + .byte 0, 0, 0 + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release + _voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release + .endm + + .macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release + _voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release + .endm + + .macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release + .byte \type, 60, 0, 0 + .4byte \wave_samples_pointer + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_noise period, attack, decay, sustain, release + _voice_noise 4, \period, \attack, \decay, \sustain, \release + .endm + + .macro voice_noise_alt period, attack, decay, sustain, release + _voice_noise 12, \period, \attack, \decay, \sustain, \release + .endm + + .macro _voice_noise type, period, attack, decay, sustain, release + .byte \type, 60, 0, 0 + .byte (\period & 0x1) + .byte 0, 0, 0 + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_keysplit voice_group_pointer, keysplit_table_pointer + .byte 0x40, 0, 0, 0 + .4byte \voice_group_pointer + .4byte \keysplit_table_pointer + .endm + + .macro voice_keysplit_all voice_group_pointer + .byte 0x80, 0, 0, 0 + .4byte \voice_group_pointer + .4byte 0 + .endm + + .macro cry sample + .byte 0x20, 60, 0, 0 + .4byte \sample + .byte 0xff, 0, 0xff, 0 + .endm + + .macro cry2 sample + .byte 0x30, 60, 0, 0 + .4byte \sample + .byte 0xff, 0, 0xff, 0 + .endm diff --git a/asm/macros/pokemon_data.inc b/asm/macros/pokemon_data.inc new file mode 100644 index 000000000..b0a5f22e3 --- /dev/null +++ b/asm/macros/pokemon_data.inc @@ -0,0 +1,57 @@ + .macro pokedex_entry pokemon_name, height, weight, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset + .2byte \height @ in decimeters + .2byte \weight @ in hectograms + .4byte DexDescription_\pokemon_name\()_1 + .4byte DexDescription_\pokemon_name\()_2 + .2byte 0 @ unused + .2byte \pokemon_scale + .2byte \pokemon_offset + .2byte \trainer_scale + .2byte \trainer_offset + .2byte 0 @ padding + .endm + + .macro base_stats hp, attack, defense, speed, sp_attack, sp_defense + .byte \hp + .byte \attack + .byte \defense + .byte \speed + .byte \sp_attack + .byte \sp_defense + .endm + + .macro ev_yield hp, attack, defense, speed, sp_attack, sp_defense + .2byte (\sp_defense << 10) | (\sp_attack << 8) | (\speed << 6) | (\defense << 4) | (\attack << 2) | \hp + .endm + + .macro level_up_move level, move + .2byte (\level << 9) | \move + .endm + + .macro evo_entry method, parameter, target_species + .2byte \method + .2byte \parameter + .2byte \target_species + .2byte 0 @ padding + .endm + + .macro empty_evo_entries count + .fill 8 * \count, 1, 0 + .endm + + .macro egg_moves_begin species + .2byte 20000 + \species + .endm + +@ If the min level equals the max level, only one level argument is needed. + .macro wild_mon species, min_level, max_level + .byte \min_level + + .ifb \max_level + .byte \min_level + .else + .byte \max_level + .endif + + .2byte SPECIES_\species + .endm diff --git a/asm/mail.s b/asm/mail.s new file mode 100644 index 000000000..692bb9793 --- /dev/null +++ b/asm/mail.s @@ -0,0 +1,1041 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BEBEC +sub_80BEBEC: @ 80BEBEC + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r4, _080BEC38 @ =gUnknown_20399C4 + ldr r0, _080BEC3C @ =0x000020fc + bl sub_8002BB0 + str r0, [r4] + adds r0, 0xED + movs r1, 0x2 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xEE + movs r1, 0x1 + strb r1, [r0] + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0xF0 + ldr r0, _080BEC40 @ =sub_80BD850 + str r0, [r1] + adds r1, 0x4 + ldr r0, _080BEC44 @ =sub_80BD89C + str r0, [r1] + ldrh r1, [r5, 0x20] + adds r0, r1, 0 + subs r0, 0x79 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bhi _080BEC48 + subs r1, 0x79 + adds r0, r2, 0 + adds r0, 0xEA + strb r1, [r0] + b _080BEC52 + .align 2, 0 +_080BEC38: .4byte gUnknown_20399C4 +_080BEC3C: .4byte 0x000020fc +_080BEC40: .4byte sub_80BD850 +_080BEC44: .4byte sub_80BD89C +_080BEC48: + adds r1, r2, 0 + adds r1, 0xEA + movs r0, 0 + strb r0, [r1] + movs r6, 0 +_080BEC52: + ldr r0, _080BEC78 @ =gUnknown_20399C4 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0xEE + ldrb r1, [r1] + cmp r1, 0 + beq _080BEC64 + cmp r1, 0x1 + beq _080BEC80 +_080BEC64: + adds r2, r0, 0 + adds r2, 0xF8 + adds r0, 0xEA + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BEC7C @ =gUnknown_83EEAC4 + b _080BEC90 + .align 2, 0 +_080BEC78: .4byte gUnknown_20399C4 +_080BEC7C: .4byte gUnknown_83EEAC4 +_080BEC80: + adds r2, r0, 0 + adds r2, 0xF8 + adds r0, 0xEA + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BECC8 @ =gUnknown_83EEB68 +_080BEC90: + adds r0, r1 + str r0, [r2] + ldrh r0, [r5, 0x1E] + mov r1, sp + bl sub_8097F20 + lsls r0, 16 + ldr r1, _080BECCC @ =0xffff0000 + adds r0, r1 + movs r1, 0xCD + lsls r1, 17 + cmp r0, r1 + bhi _080BECE4 + ldr r0, _080BECD0 @ =gUnknown_20399C4 + ldr r1, [r0] + adds r2, r1, 0 + adds r2, 0xEA + ldrb r2, [r2] + adds r3, r0, 0 + cmp r2, 0x6 + beq _080BECD4 + cmp r2, 0x9 + beq _080BECDC + adds r1, 0xEB + movs r0, 0 + strb r0, [r1] + b _080BECF0 + .align 2, 0 +_080BECC8: .4byte gUnknown_83EEB68 +_080BECCC: .4byte 0xffff0000 +_080BECD0: .4byte gUnknown_20399C4 +_080BECD4: + adds r1, 0xEB + movs r0, 0x1 + strb r0, [r1] + b _080BECF0 +_080BECDC: + adds r1, 0xEB + movs r0, 0x2 + strb r0, [r1] + b _080BECF0 +_080BECE4: + ldr r0, _080BED10 @ =gUnknown_20399C4 + ldr r1, [r0] + adds r1, 0xEB + movs r2, 0 + strb r2, [r1] + adds r3, r0, 0 +_080BECF0: + ldr r1, [r3] + adds r0, r1, 0 + adds r0, 0xE4 + str r5, [r0] + subs r0, 0x8 + str r7, [r0] + adds r0, 0xC + strb r6, [r0] + ldr r0, _080BED14 @ =sub_80BF110 + bl sub_8000544 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BED10: .4byte gUnknown_20399C4 +_080BED14: .4byte sub_80BF110 + thumb_func_end sub_80BEBEC + + thumb_func_start sub_80BED18 +sub_80BED18: @ 80BED18 + push {r4-r6,lr} + sub sp, 0xC + ldr r0, _080BED38 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x12 + bls _080BED2C + b _080BF102 +_080BED2C: + lsls r0, 2 + ldr r1, _080BED3C @ =_080BED40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BED38: .4byte gUnknown_30030F0 +_080BED3C: .4byte _080BED40 + .align 2, 0 +_080BED40: + .4byte _080BED8C + .4byte _080BEDBC + .4byte _080BEDD4 + .4byte _080BEDDA + .4byte _080BEDE0 + .4byte _080BEDE6 + .4byte _080BEE40 + .4byte _080BEE78 + .4byte _080BEE88 + .4byte _080BEEB8 + .4byte _080BEEC6 + .4byte _080BEF14 + .4byte _080BEF28 + .4byte _080BEFE8 + .4byte _080BF000 + .4byte _080BF01C + .4byte _080BF026 + .4byte _080BF040 + .4byte _080BF0A4 +_080BED8C: + movs r0, 0 + bl sub_80006F4 + bl sub_8087E64 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r0, _080BEDB0 @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _080BEDB4 + movs r0, 0x22 + bl sub_812B1F0 + b _080BF0F4 + .align 2, 0 +_080BEDB0: .4byte gUnknown_203AAC4 +_080BEDB4: + movs r0, 0x1E + bl sub_812B1F0 + b _080BF0F4 +_080BEDBC: + add r1, sp, 0x8 + movs r0, 0 + strh r0, [r1] + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _080BEDD0 @ =0x01000200 + add r0, sp, 0x8 + bl CpuSet + b _080BF0F4 + .align 2, 0 +_080BEDD0: .4byte 0x01000200 +_080BEDD4: + bl sub_8070528 + b _080BF0F4 +_080BEDDA: + bl sub_80773BC + b _080BF0F4 +_080BEDE0: + bl sub_8006B10 + b _080BF0F4 +_080BEDE6: + bl sub_80088F0 + bl sub_80F6808 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + b _080BF0F4 +_080BEE40: + movs r0, 0 + bl sub_8001618 + ldr r1, _080BEE6C @ =gUnknown_83EE998 + movs r0, 0 + movs r2, 0x3 + bl sub_8001658 + ldr r4, _080BEE70 @ =gUnknown_20399C4 + ldr r1, [r4] + adds r1, 0xFC + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _080BEE74 @ =0x000010fc + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + b _080BF0F4 + .align 2, 0 +_080BEE6C: .4byte gUnknown_83EE998 +_080BEE70: .4byte gUnknown_20399C4 +_080BEE74: .4byte 0x000010fc +_080BEE78: + ldr r0, _080BEE84 @ =gUnknown_83EE9A4 + bl sub_8003B24 + bl sub_8002C28 + b _080BF0F4 + .align 2, 0 +_080BEE84: .4byte gUnknown_83EE9A4 +_080BEE88: + ldr r2, _080BEEB0 @ =gUnknown_83EE9C8 + ldr r0, _080BEEB4 @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xEA + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x4 + adds r0, r2 + ldr r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _080BF0F4 + .align 2, 0 +_080BEEB0: .4byte gUnknown_83EE9C8 +_080BEEB4: .4byte gUnknown_20399C4 +_080BEEB8: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _080BEEC4 + b _080BF0F4 +_080BEEC4: + b _080BF102 +_080BEEC6: + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r2, _080BEF0C @ =gUnknown_83EE9C8 + ldr r0, _080BEF10 @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xEA + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x8 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _080BF0F4 + .align 2, 0 +_080BEF0C: .4byte gUnknown_83EE9C8 +_080BEF10: .4byte gUnknown_20399C4 +_080BEF14: + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + b _080BF0F4 +_080BEF28: + movs r0, 0 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldr r6, _080BEFD0 @ =gUnknown_20371F8 + ldr r4, _080BEFD4 @ =gUnknown_83EE9C8 + ldr r0, _080BEFD8 @ =gUnknown_20399C4 + ldr r3, [r0] + adds r3, 0xEA + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x10] + movs r2, 0xFA + lsls r2, 1 + adds r0, r6, r2 + strh r1, [r0] + ldr r5, _080BEFDC @ =gUnknown_20375F8 + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x10] + adds r2, r5, r2 + strh r0, [r2] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x12] + movs r2, 0xFB + lsls r2, 1 + adds r0, r6, r2 + strh r1, [r0] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x12] + adds r2, r5, r2 + strh r0, [r2] + ldrb r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _080BEFE0 @ =gUnknown_83EE9C0 + ldr r0, _080BEFE4 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r0, [r2, 0x8] + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r6, 0x14] + ldrb r0, [r2, 0x8] + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r5, 0x14] + ldrb r0, [r2, 0x8] + lsls r0, 2 + adds r1, 0x2 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r6, 0x16] + ldrb r0, [r2, 0x8] + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r5, 0x16] + b _080BF0F4 + .align 2, 0 +_080BEFD0: .4byte gUnknown_20371F8 +_080BEFD4: .4byte gUnknown_83EE9C8 +_080BEFD8: .4byte gUnknown_20399C4 +_080BEFDC: .4byte gUnknown_20375F8 +_080BEFE0: .4byte gUnknown_83EE9C0 +_080BEFE4: .4byte gUnknown_300500C +_080BEFE8: + ldr r0, _080BEFFC @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xE8 + ldrb r0, [r0] + cmp r0, 0 + bne _080BEFF6 + b _080BF0F4 +_080BEFF6: + bl sub_80BF13C + b _080BF0F4 + .align 2, 0 +_080BEFFC: .4byte gUnknown_20399C4 +_080BF000: + ldr r0, _080BF018 @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xE8 + ldrb r0, [r0] + cmp r0, 0 + beq _080BF0F4 + bl sub_80BF224 + bl sub_8002DE8 + b _080BF0F4 + .align 2, 0 +_080BF018: .4byte gUnknown_20399C4 +_080BF01C: + bl sub_8058244 + cmp r0, 0x1 + bne _080BF0F4 + b _080BF102 +_080BF026: + ldr r0, _080BF038 @ =sub_80BF354 + bl sub_80006F4 + ldr r2, _080BF03C @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + b _080BF0F4 + .align 2, 0 +_080BF038: .4byte sub_80BF354 +_080BF03C: .4byte gUnknown_2037AB8 +_080BF040: + ldr r5, _080BF064 @ =gUnknown_20399C4 + ldr r0, [r5] + adds r0, 0xE4 + ldr r0, [r0] + ldrh r0, [r0, 0x1E] + bl sub_8096FD4 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, [r5] + adds r0, 0xEB + ldrb r0, [r0] + cmp r0, 0x1 + beq _080BF068 + cmp r0, 0x2 + beq _080BF080 + b _080BF0F4 + .align 2, 0 +_080BF064: .4byte gUnknown_20399C4 +_080BF068: + adds r0, r4, 0 + bl sub_80970E0 + ldr r1, _080BF07C @ =nullsub_8 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r2, 0x60 + b _080BF092 + .align 2, 0 +_080BF07C: .4byte nullsub_8 +_080BF080: + adds r0, r4, 0 + bl sub_80970E0 + ldr r1, _080BF0A0 @ =nullsub_8 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r2, 0x28 +_080BF092: + movs r3, 0x80 + bl sub_8096ECC + ldr r1, [r5] + adds r1, 0xEC + strb r0, [r1] + b _080BF0F4 + .align 2, 0 +_080BF0A0: .4byte nullsub_8 +_080BF0A4: + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r2, _080BF0E8 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + ldr r0, _080BF0EC @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xE0 + ldr r1, _080BF0F0 @ =sub_80BF394 + str r1, [r0] + movs r0, 0x1 + b _080BF104 + .align 2, 0 +_080BF0E8: .4byte gUnknown_2037AB8 +_080BF0EC: .4byte gUnknown_20399C4 +_080BF0F0: .4byte sub_80BF394 +_080BF0F4: + ldr r1, _080BF10C @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080BF102: + movs r0, 0 +_080BF104: + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080BF10C: .4byte gUnknown_30030F0 + thumb_func_end sub_80BED18 + + thumb_func_start sub_80BF110 +sub_80BF110: @ 80BF110 + push {lr} +_080BF112: + bl sub_80BED18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BF12C + ldr r0, _080BF128 @ =sub_80BF368 + bl sub_8000544 + b _080BF138 + .align 2, 0 +_080BF128: .4byte sub_80BF368 +_080BF12C: + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BF112 +_080BF138: + pop {r0} + bx r0 + thumb_func_end sub_80BF110 + + thumb_func_start sub_80BF13C +sub_80BF13C: @ 80BF13C + push {r4-r7,lr} + movs r6, 0 + movs r5, 0 + ldr r2, _080BF1E0 @ =gUnknown_20399C4 + ldr r0, [r2] + adds r0, 0xF8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r5, r0 + bcs _080BF19C + adds r7, r2, 0 +_080BF152: + movs r0, 0x1A + muls r0, r5 + ldr r2, [r7] + adds r0, r2, r0 + adds r1, r2, 0 + adds r1, 0xE4 + lsls r3, r6, 1 + ldr r1, [r1] + adds r1, r3 + adds r2, 0xF8 + ldr r2, [r2] + ldr r2, [r2, 0x8] + lsls r4, r5, 2 + adds r2, r4, r2 + ldr r2, [r2] + lsls r2, 30 + lsrs r2, 30 + movs r3, 0x1 + bl sub_80BD89C + ldr r0, [r7] + adds r0, 0xF8 + ldr r1, [r0] + ldr r0, [r1, 0x8] + adds r4, r0 + ldr r0, [r4] + lsls r0, 30 + lsrs r0, 30 + adds r0, r6, r0 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldrb r1, [r1] + cmp r5, r1 + bcc _080BF152 +_080BF19C: + ldr r4, _080BF1E0 @ =gUnknown_20399C4 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0xEE + ldrb r0, [r0] + cmp r0, 0 + bne _080BF1E8 + adds r0, r1, 0 + adds r0, 0xD0 + adds r1, 0xE4 + ldr r1, [r1] + adds r1, 0x12 + bl sub_8008D84 + ldr r1, _080BF1E4 @ =gUnknown_841E234 + bl sub_8008D84 + ldr r0, [r4] + adds r0, 0xD0 + bl sub_8008E08 + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0xF8 + ldr r1, [r1] + lsls r0, 16 + lsrs r0, 13 + subs r0, 0x60 + ldrb r1, [r1, 0x2] + subs r1, r0 + adds r2, 0xE9 + strb r1, [r2] + b _080BF21E + .align 2, 0 +_080BF1E0: .4byte gUnknown_20399C4 +_080BF1E4: .4byte gUnknown_841E234 +_080BF1E8: + adds r0, r1, 0 + adds r0, 0xD0 + adds r1, 0xE4 + ldr r1, [r1] + adds r1, 0x12 + bl sub_8008D84 + ldr r0, [r4] + adds r0, 0xD0 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5 + bhi _080BF210 + ldr r0, [r4] + adds r0, 0xD0 + movs r1, 0x1 + bl sub_80093BC +_080BF210: + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0xF8 + ldr r1, [r1] + ldrb r1, [r1, 0x2] + adds r0, 0xE9 + strb r1, [r0] +_080BF21E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BF13C + + thumb_func_start sub_80BF224 +sub_80BF224: @ 80BF224 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + movs r7, 0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r6, 0 + ldr r0, _080BF348 @ =gUnknown_20399C4 + mov r9, r0 + ldr r0, [r0] + adds r0, 0xF8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r6, r0 + bcs _080BF2CE + mov r8, r9 +_080BF260: + mov r0, r8 + ldr r1, [r0] + movs r0, 0x1A + muls r0, r6 + adds r5, r1, r0 + ldrb r0, [r5] + cmp r0, 0xFF + beq _080BF2BA + cmp r0, 0 + beq _080BF2BA + adds r0, r1, 0 + adds r0, 0xF8 + ldr r1, [r0] + ldr r0, [r1, 0x8] + lsls r4, r6, 2 + adds r0, r4, r0 + ldr r2, [r0] + lsls r2, 24 + lsrs r2, 26 + ldrb r0, [r1, 0x4] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r1, 0x3] + adds r3, r7, r3 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _080BF34C @ =gUnknown_83EE9BC + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x1 + bl sub_812E51C + mov r1, r8 + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + ldr r0, [r0, 0x8] + adds r4, r0 + ldrb r0, [r4, 0x1] + adds r0, r7, r0 + lsls r0, 24 + lsrs r7, r0, 24 +_080BF2BA: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + mov r1, r9 + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r6, r0 + bcc _080BF260 +_080BF2CE: + ldr r4, _080BF350 @ =gUnknown_841E234 + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + mov r9, r0 + ldr r5, _080BF348 @ =gUnknown_20399C4 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0xE9 + ldrb r2, [r1] + adds r0, 0xF8 + ldr r0, [r0] + ldrb r3, [r0, 0x1] + ldr r0, _080BF34C @ =gUnknown_83EE9BC + mov r8, r0 + str r0, [sp] + movs r6, 0 + str r6, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + bl sub_812E51C + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0xE9 + ldrb r2, [r0] + add r2, r9 + lsls r2, 24 + lsrs r2, 24 + adds r0, 0xF + ldr r0, [r0] + ldrb r3, [r0, 0x1] + mov r0, r8 + str r0, [sp] + str r6, [sp, 0x4] + adds r0, r1, 0 + adds r0, 0xD0 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + bl sub_812E51C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF348: .4byte gUnknown_20399C4 +_080BF34C: .4byte gUnknown_83EE9BC +_080BF350: .4byte gUnknown_841E234 + thumb_func_end sub_80BF224 + + thumb_func_start sub_80BF354 +sub_80BF354: @ 80BF354 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80BF354 + + thumb_func_start sub_80BF368 +sub_80BF368: @ 80BF368 + push {r4,lr} + ldr r4, _080BF390 @ =gUnknown_20399C4 + ldr r0, [r4] + adds r0, 0xEB + ldrb r0, [r0] + cmp r0, 0 + beq _080BF37E + bl sub_8006B5C + bl sub_8006BA8 +_080BF37E: + ldr r0, [r4] + adds r0, 0xE0 + ldr r0, [r0] + bl _call_via_r0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF390: .4byte gUnknown_20399C4 + thumb_func_end sub_80BF368 + + thumb_func_start sub_80BF394 +sub_80BF394: @ 80BF394 + push {lr} + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080BF3AA + ldr r0, _080BF3B0 @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xE0 + ldr r1, _080BF3B4 @ =sub_80BF3B8 + str r1, [r0] +_080BF3AA: + pop {r0} + bx r0 + .align 2, 0 +_080BF3B0: .4byte gUnknown_20399C4 +_080BF3B4: .4byte sub_80BF3B8 + thumb_func_end sub_80BF394 + + thumb_func_start sub_80BF3B8 +sub_80BF3B8: @ 80BF3B8 + push {lr} + sub sp, 0x4 + ldr r0, _080BF3E8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _080BF3E2 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080BF3EC @ =gUnknown_20399C4 + ldr r0, [r0] + adds r0, 0xE0 + ldr r1, _080BF3F0 @ =sub_80BF3F4 + str r1, [r0] +_080BF3E2: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080BF3E8: .4byte gUnknown_30030F0 +_080BF3EC: .4byte gUnknown_20399C4 +_080BF3F0: .4byte sub_80BF3F4 + thumb_func_end sub_80BF3B8 + + thumb_func_start sub_80BF3F4 +sub_80BF3F4: @ 80BF3F4 + push {r4,lr} + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080BF460 + ldr r4, _080BF468 @ =gUnknown_20399C4 + ldr r0, [r4] + adds r0, 0xDC + ldr r0, [r0] + bl sub_8000544 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0xEB + ldrb r1, [r1] + cmp r1, 0x2 + bgt _080BF442 + cmp r1, 0x1 + blt _080BF442 + adds r0, 0xE4 + ldr r0, [r0] + ldrh r0, [r0, 0x1E] + bl sub_8096FD4 + lsls r0, 16 + lsrs r0, 16 + bl sub_8097168 + ldr r0, [r4] + adds r0, 0xEC + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BF46C @ =gUnknown_202063C + adds r0, r1 + bl sub_8097070 +_080BF442: + ldr r4, _080BF468 @ =gUnknown_20399C4 + ldr r0, [r4] + ldr r2, _080BF470 @ =0x000020fc + movs r1, 0 + bl memset + bl sub_8070528 + bl sub_8003ECC + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080BF460: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF468: .4byte gUnknown_20399C4 +_080BF46C: .4byte gUnknown_202063C +_080BF470: .4byte 0x000020fc + thumb_func_end sub_80BF3F4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mail_data.s b/asm/mail_data.s new file mode 100644 index 000000000..e8cc79b50 --- /dev/null +++ b/asm/mail_data.s @@ -0,0 +1,626 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8097C84 +sub_8097C84: @ 8097C84 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _08097CAC @ =gUnknown_3005008 +_08097C8A: + lsls r1, r4, 3 + adds r1, r4 + lsls r1, 2 + ldr r0, _08097CB0 @ =0x00002cd0 + adds r1, r0 + ldr r0, [r5] + adds r0, r1 + bl sub_8097CB4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08097C8A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08097CAC: .4byte gUnknown_3005008 +_08097CB0: .4byte 0x00002cd0 + thumb_func_end sub_8097C84 + + thumb_func_start sub_8097CB4 +sub_8097CB4: @ 8097CB4 + push {r4-r6,lr} + adds r3, r0, 0 + ldr r0, _08097D04 @ =0x0000ffff + adds r4, r0, 0 + adds r1, r3, 0 + movs r2, 0x8 +_08097CC0: + ldrh r0, [r1] + orrs r0, r4 + strh r0, [r1] + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _08097CC0 + movs r2, 0 + adds r6, r3, 0 + adds r6, 0x1A + adds r4, r3, 0 + adds r4, 0x12 + movs r5, 0xFF +_08097CDA: + adds r1, r4, r2 + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x7 + ble _08097CDA + adds r1, r6, 0 + movs r2, 0 + adds r0, r1, 0x3 +_08097CEE: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08097CEE + movs r1, 0 + movs r0, 0x1 + strh r0, [r3, 0x1E] + strh r1, [r3, 0x20] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08097D04: .4byte 0x0000ffff + thumb_func_end sub_8097CB4 + + thumb_func_start sub_8097D08 +sub_8097D08: @ 8097D08 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _08097D30 + adds r0, r4, 0 + movs r1, 0x40 + bl sub_803FBE8 + cmp r0, 0xFF + beq _08097D30 + movs r0, 0x1 + b _08097D32 +_08097D30: + movs r0, 0 +_08097D32: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8097D08 + + thumb_func_start sub_8097D38 +sub_8097D38: @ 8097D38 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r8, r0 + lsls r1, 16 + lsrs r0, r1, 16 + str r0, [sp, 0x8] + mov r0, sp + movs r2, 0 + ldrb r3, [r0, 0x8] + strb r3, [r0] + lsrs r1, 24 + strb r1, [r0, 0x1] + add r4, sp, 0x4 + strb r2, [r4] + mov r12, r4 + mov r9, r4 + adds r5, r4, 0 +_08097D62: + ldr r2, _08097EC0 @ =gUnknown_3005008 + ldr r0, [r2] + ldrb r3, [r5] + lsls r1, r3, 3 + adds r1, r3 + lsls r1, 2 + adds r0, r1 + ldr r1, _08097EC4 @ =0x00002cf0 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _08097D7C + b _08097EE0 +_08097D7C: + movs r4, 0 + ldr r3, _08097EC8 @ =gUnknown_300500C + mov r10, r3 + adds r7, r2, 0 + mov r5, r12 + ldr r0, _08097ECC @ =0x0000ffff + adds r6, r0, 0 +_08097D8A: + ldr r2, [r7] + lsls r3, r4, 1 + ldrb r1, [r5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r3, r0 + ldr r1, _08097ED0 @ =0x00002cd0 + adds r2, r1 + adds r2, r3 + ldrh r0, [r2] + orrs r0, r6 + strh r0, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bls _08097D8A + movs r4, 0 + mov r2, r10 + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, 0xFF + beq _08097DEE + ldr r3, _08097EC8 @ =gUnknown_300500C +_08097DBC: + ldr r0, _08097EC0 @ =gUnknown_3005008 + ldr r2, [r0] + mov r0, r12 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4, r0 + ldr r1, _08097ED4 @ =0x00002ce2 + adds r2, r1 + adds r2, r0 + ldr r0, [r3] + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bhi _08097DEE + ldr r0, [r3] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08097DBC +_08097DEE: + cmp r4, 0x5 + bhi _08097E16 + ldr r7, _08097EC0 @ =gUnknown_3005008 + mov r3, r12 + ldr r6, _08097ED4 @ =0x00002ce2 + movs r5, 0 +_08097DFA: + ldr r2, [r7] + ldrb r1, [r3] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4, r0 + adds r2, r6 + adds r2, r0 + strb r5, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _08097DFA +_08097E16: + ldr r3, _08097EC0 @ =gUnknown_3005008 + ldr r2, [r3] + mov r0, r12 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4, r0 + ldr r1, _08097ED4 @ =0x00002ce2 + adds r2, r1 + adds r2, r0 + movs r0, 0xFF + strb r0, [r2] + movs r4, 0 + adds r5, r3, 0 + mov r3, r12 +_08097E36: + ldr r2, [r5] + ldrb r1, [r3] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4, r0 + ldr r1, _08097ED8 @ =0x00002cea + adds r2, r1 + adds r2, r0 + mov r1, r10 + ldr r0, [r1] + adds r0, 0xA + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08097E36 + mov r0, r8 + movs r1, 0xB + bl sub_803FD44 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0 + bl sub_803FD44 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8097F00 + ldr r1, _08097EC0 @ =gUnknown_3005008 + ldr r3, [r1] + mov r4, r9 + ldrb r2, [r4] + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r3, r1 + ldr r2, _08097EDC @ =0x00002cee + adds r1, r2 + strh r0, [r1] + ldrb r1, [r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r3, r0 + ldr r4, _08097EC4 @ =0x00002cf0 + adds r3, r4 + mov r0, sp + ldrh r0, [r0, 0x8] + strh r0, [r3] + mov r0, r8 + movs r1, 0x40 + mov r2, r9 + bl sub_804037C + mov r0, r8 + movs r1, 0xC + mov r2, sp + bl sub_804037C + mov r1, r9 + ldrb r0, [r1] + b _08097EEE + .align 2, 0 +_08097EC0: .4byte gUnknown_3005008 +_08097EC4: .4byte 0x00002cf0 +_08097EC8: .4byte gUnknown_300500C +_08097ECC: .4byte 0x0000ffff +_08097ED0: .4byte 0x00002cd0 +_08097ED4: .4byte 0x00002ce2 +_08097ED8: .4byte 0x00002cea +_08097EDC: .4byte 0x00002cee +_08097EE0: + adds r0, r3, 0x1 + strb r0, [r4] + ldrb r0, [r5] + cmp r0, 0x5 + bhi _08097EEC + b _08097D62 +_08097EEC: + movs r0, 0xFF +_08097EEE: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8097D38 + + thumb_func_start sub_8097F00 +sub_8097F00: @ 8097F00 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC9 + bne _08097F18 + adds r0, r1, 0 + bl sub_8096F98 + lsls r0, 16 + ldr r1, _08097F1C @ =0x75300000 + adds r0, r1 + lsrs r0, 16 +_08097F18: + pop {r1} + bx r1 + .align 2, 0 +_08097F1C: .4byte 0x75300000 + thumb_func_end sub_8097F00 + + thumb_func_start sub_8097F20 +sub_8097F20: @ 8097F20 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _08097F38 @ =0xffff8ad0 + adds r2, r3, r0 + lsls r0, r2, 16 + lsrs r0, 16 + cmp r0, 0x1B + bhi _08097F3C + movs r0, 0xC9 + strh r2, [r1] + b _08097F3E + .align 2, 0 +_08097F38: .4byte 0xffff8ad0 +_08097F3C: + adds r0, r3, 0 +_08097F3E: + pop {r1} + bx r1 + thumb_func_end sub_8097F20 + + thumb_func_start sub_8097F44 +sub_8097F44: @ 8097F44 + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r0, 0 + adds r7, r1, 0 + ldrh r5, [r7, 0x20] + adds r1, r5, 0 + bl sub_8097D38 + add r4, sp, 0x4 + strb r0, [r4] + ldrb r2, [r4] + cmp r2, 0xFF + beq _08097FA8 + ldr r0, _08097FA0 @ =gUnknown_3005008 + ldr r1, [r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _08097FA4 @ =0x00002cd0 + adds r1, r0 + adds r0, r7, 0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + adds r0, r6, 0 + movs r1, 0x40 + adds r2, r4, 0 + bl sub_804037C + mov r0, sp + strb r5, [r0] + mov r1, sp + lsrs r0, r5, 8 + strb r0, [r1, 0x1] + adds r0, r6, 0 + movs r1, 0xC + mov r2, sp + bl sub_804037C + ldrb r0, [r4] + b _08097FAA + .align 2, 0 +_08097FA0: .4byte gUnknown_3005008 +_08097FA4: .4byte 0x00002cd0 +_08097FA8: + movs r0, 0xFF +_08097FAA: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8097F44 + + thumb_func_start sub_8097FB4 +sub_8097FB4: @ 8097FB4 + movs r0, 0 + bx lr + thumb_func_end sub_8097FB4 + + thumb_func_start sub_8097FB8 +sub_8097FB8: @ 8097FB8 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + bl sub_8097D08 + lsls r0, 24 + cmp r0, 0 + beq _08098008 + adds r0, r4, 0 + movs r1, 0x40 + bl sub_803FBE8 + add r2, sp, 0x4 + strb r0, [r2] + ldr r0, _08098010 @ =gUnknown_3005008 + ldr r3, [r0] + ldrb r1, [r2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r3, r0 + ldr r0, _08098014 @ =0x00002cf0 + adds r3, r0 + movs r1, 0 + movs r0, 0 + strh r0, [r3] + movs r0, 0xFF + strb r0, [r2] + mov r0, sp + strb r1, [r0] + strb r1, [r0, 0x1] + adds r0, r4, 0 + movs r1, 0x40 + bl sub_804037C + adds r0, r4, 0 + movs r1, 0xC + mov r2, sp + bl sub_804037C +_08098008: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08098010: .4byte gUnknown_3005008 +_08098014: .4byte 0x00002cf0 + thumb_func_end sub_8097FB8 + + thumb_func_start sub_8098018 +sub_8098018: @ 8098018 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08098034 @ =gUnknown_3005008 + ldr r2, [r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r2, r1 + ldr r0, _08098038 @ =0x00002cf0 + adds r2, r0 + movs r0, 0 + strh r0, [r2] + bx lr + .align 2, 0 +_08098034: .4byte gUnknown_3005008 +_08098038: .4byte 0x00002cf0 + thumb_func_end sub_8098018 + + thumb_func_start sub_809803C +sub_809803C: @ 809803C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + adds r5, r0, 0 + mov r0, sp + movs r1, 0 + strb r1, [r0] + strb r1, [r0, 0x1] + add r1, sp, 0x4 + movs r0, 0xFF + strb r0, [r1] + movs r7, 0x6 + mov r9, r1 + ldr r0, _080980D0 @ =gUnknown_3005008 + mov r8, r0 + ldr r3, _080980D4 @ =0x00002cd0 +_08098060: + mov r1, r8 + ldr r0, [r1] + lsls r1, r7, 3 + adds r1, r7 + lsls r1, 2 + adds r4, r0, r1 + ldr r2, _080980D8 @ =0x00002cf0 + adds r0, r4, r2 + ldrh r6, [r0] + cmp r6, 0 + bne _080980DC + adds r4, r3 + adds r0, r5, 0 + movs r1, 0x40 + str r3, [sp, 0x8] + bl sub_803FBE8 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldr r3, [sp, 0x8] + adds r1, r3 + ldm r1!, {r0,r2,r3} + stm r4!, {r0,r2,r3} + ldm r1!, {r0,r2,r3} + stm r4!, {r0,r2,r3} + ldm r1!, {r0,r2,r3} + stm r4!, {r0,r2,r3} + adds r0, r5, 0 + movs r1, 0x40 + bl sub_803FBE8 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r2, r1 + ldr r3, _080980D8 @ =0x00002cf0 + adds r2, r3 + strh r6, [r2] + adds r0, r5, 0 + movs r1, 0x40 + mov r2, r9 + bl sub_804037C + adds r0, r5, 0 + movs r1, 0xC + mov r2, sp + bl sub_804037C + adds r0, r7, 0 + b _080980E8 + .align 2, 0 +_080980D0: .4byte gUnknown_3005008 +_080980D4: .4byte 0x00002cd0 +_080980D8: .4byte 0x00002cf0 +_080980DC: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0xF + bls _08098060 + movs r0, 0xFF +_080980E8: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809803C + + thumb_func_start sub_80980F8 +sub_80980F8: @ 80980F8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x84 + bgt _0809810A + cmp r0, 0x79 + blt _0809810A + movs r0, 0x1 + b _0809810C +_0809810A: + movs r0, 0 +_0809810C: + pop {r1} + bx r1 + thumb_func_end sub_80980F8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s new file mode 100644 index 000000000..194de3d76 --- /dev/null +++ b/asm/mailbox_pc.s @@ -0,0 +1,326 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810EB6C +sub_810EB6C: @ 810EB6C + push {r4,lr} + lsls r0, 24 + ldr r4, _0810EB84 @ =gUnknown_203ADE0 + lsrs r0, 21 + adds r0, 0x8 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + bne _0810EB88 + movs r0, 0 + b _0810EBA2 + .align 2, 0 +_0810EB84: .4byte gUnknown_203ADE0 +_0810EB88: + movs r2, 0 + ldr r4, _0810EBA8 @ =gUnknown_203ADDC + movs r3, 0xFF +_0810EB8E: + adds r0, r2, r4 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _0810EB8E + movs r0, 0x1 +_0810EBA2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0810EBA8: .4byte gUnknown_203ADDC + thumb_func_end sub_810EB6C + + thumb_func_start sub_810EBAC +sub_810EBAC: @ 810EBAC + push {r4,lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0810EBD8 @ =gUnknown_203ADDC + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, 0xFF + bne _0810EBD0 + lsls r0, r1, 3 + ldr r1, _0810EBDC @ =gUnknown_8453FE8 + adds r0, r1 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl sub_80F7750 +_0810EBD0: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0810EBD8: .4byte gUnknown_203ADDC +_0810EBDC: .4byte gUnknown_8453FE8 + thumb_func_end sub_810EBAC + + thumb_func_start sub_810EBE0 +sub_810EBE0: @ 810EBE0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810EC0C @ =gUnknown_203ADDC + adds r4, r0 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810EC0C: .4byte gUnknown_203ADDC + thumb_func_end sub_810EBE0 + + thumb_func_start sub_810EC10 +sub_810EC10: @ 810EC10 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0810EC1C @ =gUnknown_203ADDC + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0810EC1C: .4byte gUnknown_203ADDC + thumb_func_end sub_810EC10 + + thumb_func_start sub_810EC20 +sub_810EC20: @ 810EC20 + push {r4,r5,lr} + sub sp, 0x34 + adds r3, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r0, 0x2 + negs r0, r0 + cmp r3, r0 + beq _0810EC82 + ldr r0, _0810EC8C @ =gUnknown_3005008 + lsls r1, r3, 3 + adds r1, r3 + lsls r1, 2 + ldr r0, [r0] + adds r1, r0 + ldr r0, _0810EC90 @ =0x00002dba + adds r1, r0 + add r0, sp, 0x14 + bl sub_8008D84 + add r0, sp, 0x14 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5 + bhi _0810EC62 + add r0, sp, 0x14 + movs r1, 0x1 + bl sub_80093BC +_0810EC62: + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + ldr r0, _0810EC94 @ =gUnknown_8454000 + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + add r0, sp, 0x14 + str r0, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0x8 + adds r3, r5, 0 + bl sub_812E5A4 +_0810EC82: + add sp, 0x34 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810EC8C: .4byte gUnknown_3005008 +_0810EC90: .4byte 0x00002dba +_0810EC94: .4byte gUnknown_8454000 + thumb_func_end sub_810EC20 + + thumb_func_start sub_810EC98 +sub_810EC98: @ 810EC98 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r3, 0 + ldr r7, _0810ED50 @ =gUnknown_203ADE0 + ldr r0, _0810ED54 @ =gUnknown_84161C1 + mov r12, r0 + ldr r5, _0810ED58 @ =gUnknown_3005E70 + ldr r1, _0810ED5C @ =gUnknown_203ADDC + mov r8, r1 + ldrb r0, [r6, 0x5] + cmp r3, r0 + bcs _0810ECCE + adds r2, r7, 0 + ldr r4, _0810ED60 @ =gUnknown_8454003 +_0810ECB8: + ldr r1, [r2] + lsls r0, r3, 3 + adds r0, r1 + str r4, [r0] + str r3, [r0, 0x4] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrb r1, [r6, 0x5] + cmp r3, r1 + bcc _0810ECB8 +_0810ECCE: + ldr r2, [r7] + lsls r0, r3, 3 + adds r0, r2 + mov r1, r12 + str r1, [r0] + movs r1, 0x2 + negs r1, r1 + str r1, [r0, 0x4] + str r2, [r5] + ldrb r0, [r6, 0x5] + adds r0, 0x1 + movs r4, 0 + strh r0, [r5, 0xC] + mov r1, r8 + ldrb r0, [r1, 0x1] + strb r0, [r5, 0x10] + strb r4, [r5, 0x11] + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + strb r0, [r5, 0x12] + strb r4, [r5, 0x13] + ldrb r0, [r5, 0x16] + movs r2, 0x8 + negs r2, r2 + ands r2, r0 + movs r0, 0x39 + negs r0, r0 + ands r2, r0 + movs r0, 0x10 + orrs r2, r0 + movs r0, 0x8 + strh r0, [r5, 0xE] + ldrb r0, [r5, 0x17] + movs r1, 0x40 + negs r1, r1 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + movs r0, 0x2A + strb r0, [r5, 0x14] + movs r0, 0x31 + strb r0, [r5, 0x15] + ldr r0, _0810ED64 @ =sub_810ED6C + str r0, [r5, 0x4] + ldr r0, _0810ED68 @ =sub_810EC20 + str r0, [r5, 0x8] + movs r0, 0x3F + ands r1, r0 + strb r1, [r5, 0x17] + ands r2, r0 + strb r2, [r5, 0x16] + ldrh r1, [r6, 0x2] + ldrh r2, [r6] + adds r0, r5, 0 + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810ED50: .4byte gUnknown_203ADE0 +_0810ED54: .4byte gUnknown_84161C1 +_0810ED58: .4byte gUnknown_3005E70 +_0810ED5C: .4byte gUnknown_203ADDC +_0810ED60: .4byte gUnknown_8454003 +_0810ED64: .4byte sub_810ED6C +_0810ED68: .4byte sub_810EC20 + thumb_func_end sub_810EC98 + + thumb_func_start sub_810ED6C +sub_810ED6C: @ 810ED6C + push {lr} + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + beq _0810ED7C + movs r0, 0x5 + bl sub_80722CC +_0810ED7C: + pop {r0} + bx r0 + thumb_func_end sub_810ED6C + + thumb_func_start sub_810ED80 +sub_810ED80: @ 810ED80 + push {r4,lr} + sub sp, 0x10 + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + ldrb r1, [r4, 0x4] + subs r0, r1 + adds r0, 0x1 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r4, 0x2 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xC2 + movs r2, 0xC + movs r3, 0x94 + bl sub_8133B40 + strb r0, [r4, 0xA] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810ED80 + + thumb_func_start sub_810EDB0 +sub_810EDB0: @ 810EDB0 + push {lr} + ldr r0, _0810EDC0 @ =gUnknown_203ADE0 + ldr r0, [r0] + bl sub_8002BC4 + pop {r0} + bx r0 + .align 2, 0 +_0810EDC0: .4byte gUnknown_203ADE0 + thumb_func_end sub_810EDB0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/main.s b/asm/main.s new file mode 100644 index 000000000..45b305b9e --- /dev/null +++ b/asm/main.s @@ -0,0 +1,757 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start AgbMain +AgbMain: @ 80003A4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r0, 0xFF + bl RegisterRamReset + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _08000458 @ =0x00007fff + adds r0, r2, 0 + strh r0, [r1] + bl sub_8000968 + ldr r1, _0800045C @ =0x04000204 + ldr r2, _08000460 @ =0x00004014 + adds r0, r2, 0 + strh r0, [r1] + bl sub_80005C0 + bl sub_8000688 + bl m4aSoundInit + bl sub_8000598 + bl sub_80F86C4 + bl sub_804BFE4 + bl sub_80004C4 + bl sub_8071938 + bl sub_8000BFC + bl sub_8001028 + ldr r0, _08000464 @ =gHeap + movs r1, 0xE0 + lsls r1, 9 + bl sub_8002B80 + bl sub_80F79C8 + ldr r0, _08000468 @ =gUnknown_3003530 + movs r4, 0 + strb r4, [r0] + ldr r0, _0800046C @ =gUnknown_3005ECC + strb r4, [r0] + bl sub_80F50F4 + bl AGBPrintInit + ldr r0, _08000470 @ =gUnknown_30030E4 + strb r4, [r0] + ldr r7, _08000474 @ =gUnknown_30030F0 + movs r1, 0 + mov r8, r1 + adds r6, r0, 0 +_0800041A: + bl sub_80005E8 + ldr r0, _08000468 @ =gUnknown_3003530 + ldrb r0, [r0] + cmp r0, 0 + bne _08000444 + ldrh r1, [r7, 0x28] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08000444 + movs r0, 0xE + ands r0, r1 + cmp r0, 0xE + bne _08000444 + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + bl sub_80008D8 +_08000444: + bl sub_80582E0 + cmp r0, 0x1 + bne _08000478 + strb r0, [r6] + bl sub_80004B0 + movs r0, 0 + strb r0, [r6] + b _0800049E + .align 2, 0 +_08000458: .4byte 0x00007fff +_0800045C: .4byte 0x04000204 +_08000460: .4byte 0x00004014 +_08000464: .4byte gHeap +_08000468: .4byte gUnknown_3003530 +_0800046C: .4byte gUnknown_3005ECC +_08000470: .4byte gUnknown_30030E4 +_08000474: .4byte gUnknown_30030F0 +_08000478: + ldr r5, _080004AC @ =gUnknown_30030E4 + movs r0, 0 + strb r0, [r5] + bl sub_80004B0 + bl sub_8058274 + adds r4, r0, 0 + cmp r4, 0x1 + bne _0800049E + movs r0, 0 + strh r0, [r7, 0x2E] + bl sub_8007350 + strb r4, [r5] + bl sub_80004B0 + mov r2, r8 + strb r2, [r5] +_0800049E: + bl sub_805486C + bl sub_807194C + bl sub_8000890 + b _0800041A + .align 2, 0 +_080004AC: .4byte gUnknown_30030E4 + thumb_func_end AgbMain + + thumb_func_start sub_80004B0 +sub_80004B0: @ 80004B0 + push {lr} + bl sub_800B178 + lsls r0, 24 + cmp r0, 0 + bne _080004C0 + bl sub_8000510 +_080004C0: + pop {r0} + bx r0 + thumb_func_end sub_80004B0 + + thumb_func_start sub_80004C4 +sub_80004C4: @ 80004C4 + push {r4,lr} + ldr r0, _080004F4 @ =gUnknown_30030F0 + movs r4, 0 + str r4, [r0, 0x20] + str r4, [r0, 0x24] + str r4, [r0] + ldr r0, _080004F8 @ =sub_80EC820 + bl sub_8000544 + ldr r0, _080004FC @ =gUnknown_300500C + ldr r1, _08000500 @ =gUnknown_2024588 + str r1, [r0] + ldr r2, _08000504 @ =gUnknown_3005008 + ldr r0, _08000508 @ =gUnknown_202552C + str r0, [r2] + movs r0, 0xF2 + lsls r0, 4 + adds r1, r0 + str r4, [r1] + ldr r0, _0800050C @ =gUnknown_3005E88 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080004F4: .4byte gUnknown_30030F0 +_080004F8: .4byte sub_80EC820 +_080004FC: .4byte gUnknown_300500C +_08000500: .4byte gUnknown_2024588 +_08000504: .4byte gUnknown_3005008 +_08000508: .4byte gUnknown_202552C +_0800050C: .4byte gUnknown_3005E88 + thumb_func_end sub_80004C4 + + thumb_func_start sub_8000510 +sub_8000510: @ 8000510 + push {r4,lr} + bl sub_80F5118 + cmp r0, 0 + bne _0800053A + bl sub_813B870 + lsls r0, 24 + cmp r0, 0 + bne _0800053A + ldr r4, _08000540 @ =gUnknown_30030F0 + ldr r0, [r4] + cmp r0, 0 + beq _08000530 + bl _call_via_r0 +_08000530: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0800053A + bl _call_via_r0 +_0800053A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000540: .4byte gUnknown_30030F0 + thumb_func_end sub_8000510 + + thumb_func_start sub_8000544 +sub_8000544: @ 8000544 + ldr r1, _08000554 @ =gUnknown_30030F0 + str r0, [r1, 0x4] + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08000554: .4byte gUnknown_30030F0 + thumb_func_end sub_8000544 + + thumb_func_start sub_8000558 +sub_8000558: @ 8000558 + ldr r1, _08000560 @ =0x04000106 + movs r0, 0x80 + strh r0, [r1] + bx lr + .align 2, 0 +_08000560: .4byte 0x04000106 + thumb_func_end sub_8000558 + + thumb_func_start sub_8000564 +sub_8000564: @ 8000564 + push {r4,lr} + ldr r0, _08000580 @ =0x04000104 + ldrh r4, [r0] + adds r0, r4, 0 + bl sub_8044EE8 + ldr r1, _08000584 @ =0x04000106 + movs r0, 0 + strh r0, [r1] + ldr r0, _08000588 @ =gUnknown_2020000 + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000580: .4byte 0x04000104 +_08000584: .4byte 0x04000106 +_08000588: .4byte gUnknown_2020000 + thumb_func_end sub_8000564 + + thumb_func_start sub_800058C +sub_800058C: @ 800058C + ldr r0, _08000594 @ =gUnknown_2020000 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08000594: .4byte gUnknown_2020000 + thumb_func_end sub_800058C + + thumb_func_start sub_8000598 +sub_8000598: @ 8000598 + push {lr} + movs r0, 0x4 + bl sub_8000AC4 + movs r1, 0xFF + ands r1, r0 + movs r2, 0x96 + lsls r2, 8 + adds r0, r2, 0 + orrs r1, r0 + movs r0, 0x20 + orrs r1, r0 + movs r0, 0x4 + bl sub_8000A38 + movs r0, 0x4 + bl sub_8000B68 + pop {r0} + bx r0 + thumb_func_end sub_8000598 + + thumb_func_start sub_80005C0 +sub_80005C0: @ 80005C0 + ldr r1, _080005DC @ =gUnknown_300352C + movs r0, 0x5 + strh r0, [r1] + ldr r1, _080005E0 @ =gUnknown_30030E0 + movs r0, 0x28 + strh r0, [r1] + ldr r1, _080005E4 @ =gUnknown_30030F0 + movs r0, 0 + strh r0, [r1, 0x2C] + strh r0, [r1, 0x2E] + strh r0, [r1, 0x30] + strh r0, [r1, 0x28] + strh r0, [r1, 0x2A] + bx lr + .align 2, 0 +_080005DC: .4byte gUnknown_300352C +_080005E0: .4byte gUnknown_30030E0 +_080005E4: .4byte gUnknown_30030F0 + thumb_func_end sub_80005C0 + + thumb_func_start sub_80005E8 +sub_80005E8: @ 80005E8 + push {lr} + ldr r0, _08000624 @ =0x04000130 + ldrh r1, [r0] + ldr r2, _08000628 @ =0x000003ff + adds r0, r2, 0 + adds r3, r0, 0 + eors r3, r1 + ldr r1, _0800062C @ =gUnknown_30030F0 + ldrh r2, [r1, 0x28] + adds r0, r3, 0 + bics r0, r2 + strh r0, [r1, 0x2A] + strh r0, [r1, 0x2E] + strh r0, [r1, 0x30] + adds r2, r1, 0 + cmp r3, 0 + beq _08000634 + ldrh r0, [r2, 0x2C] + cmp r0, r3 + bne _08000634 + ldrh r0, [r2, 0x32] + subs r0, 0x1 + strh r0, [r2, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _0800063A + strh r3, [r2, 0x30] + ldr r0, _08000630 @ =gUnknown_300352C + b _08000636 + .align 2, 0 +_08000624: .4byte 0x04000130 +_08000628: .4byte 0x000003ff +_0800062C: .4byte gUnknown_30030F0 +_08000630: .4byte gUnknown_300352C +_08000634: + ldr r0, _08000680 @ =gUnknown_30030E0 +_08000636: + ldrh r0, [r0] + strh r0, [r2, 0x32] +_0800063A: + strh r3, [r2, 0x28] + strh r3, [r2, 0x2C] + ldr r0, _08000684 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x2 + bne _0800066C + ldrh r1, [r2, 0x2E] + movs r3, 0x80 + lsls r3, 2 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0800065C + movs r0, 0x1 + orrs r0, r1 + strh r0, [r2, 0x2E] +_0800065C: + ldrh r1, [r2, 0x2C] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0800066C + movs r0, 0x1 + orrs r0, r1 + strh r0, [r2, 0x2C] +_0800066C: + ldrh r1, [r2, 0x2E] + ldrh r0, [r2, 0x36] + ands r0, r1 + cmp r0, 0 + beq _0800067A + movs r0, 0x1 + strh r0, [r2, 0x34] +_0800067A: + pop {r0} + bx r0 + .align 2, 0 +_08000680: .4byte gUnknown_30030E0 +_08000684: .4byte gUnknown_300500C + thumb_func_end sub_80005E8 + + thumb_func_start sub_8000688 +sub_8000688: @ 8000688 + push {r4,r5,lr} + ldr r5, _080006D4 @ =IntrMain + ldr r4, _080006D8 @ =gUnknown_3003580 + ldr r3, _080006DC @ =gUnknown_81E9F28 + ldr r2, _080006E0 @ =gIntrTable + movs r1, 0xD +_08000694: + ldm r3!, {r0} + stm r2!, {r0} + subs r1, 0x1 + cmp r1, 0 + bge _08000694 + ldr r0, _080006E4 @ =0x040000d4 + str r5, [r0] + str r4, [r0, 0x4] + ldr r1, _080006E8 @ =0x84000200 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + ldr r0, _080006EC @ =INTR_VECTOR + str r4, [r0] + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + bl sub_8000718 + ldr r1, _080006F0 @ =0x04000208 + movs r0, 0x1 + strh r0, [r1] + movs r0, 0x1 + bl sub_8000B68 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080006D4: .4byte IntrMain +_080006D8: .4byte gUnknown_3003580 +_080006DC: .4byte gUnknown_81E9F28 +_080006E0: .4byte gIntrTable +_080006E4: .4byte 0x040000d4 +_080006E8: .4byte 0x84000200 +_080006EC: .4byte INTR_VECTOR +_080006F0: .4byte 0x04000208 + thumb_func_end sub_8000688 + + thumb_func_start sub_80006F4 +sub_80006F4: @ 80006F4 + ldr r1, _080006FC @ =gUnknown_30030F0 + str r0, [r1, 0xC] + bx lr + .align 2, 0 +_080006FC: .4byte gUnknown_30030F0 + thumb_func_end sub_80006F4 + + thumb_func_start sub_8000700 +sub_8000700: @ 8000700 + ldr r1, _08000708 @ =gUnknown_30030F0 + str r0, [r1, 0x10] + bx lr + .align 2, 0 +_08000708: .4byte gUnknown_30030F0 + thumb_func_end sub_8000700 + + thumb_func_start sub_800070C +sub_800070C: @ 800070C + ldr r1, _08000714 @ =gUnknown_30030F0 + str r0, [r1, 0x14] + bx lr + .align 2, 0 +_08000714: .4byte gUnknown_30030F0 + thumb_func_end sub_800070C + + thumb_func_start sub_8000718 +sub_8000718: @ 8000718 + ldr r1, _08000720 @ =gUnknown_30030F0 + str r0, [r1, 0x18] + bx lr + .align 2, 0 +_08000720: .4byte gUnknown_30030F0 + thumb_func_end sub_8000718 + + thumb_func_start sub_8000724 +sub_8000724: @ 8000724 + push {r4,r5,lr} + ldr r0, _08000734 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08000738 + bl sub_80FBA38 + b _08000744 + .align 2, 0 +_08000734: .4byte gUnknown_3003F3C +_08000738: + ldr r0, _080007A8 @ =gUnknown_300357C + ldrb r0, [r0] + cmp r0, 0 + bne _08000744 + bl sub_800B718 +_08000744: + ldr r5, _080007AC @ =gUnknown_30030F0 + ldr r1, [r5, 0x20] + cmp r1, 0 + beq _08000752 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08000752: + ldr r0, [r5, 0xC] + cmp r0, 0 + beq _0800075C + bl _call_via_r0 +_0800075C: + ldr r0, [r5, 0x24] + adds r0, 0x1 + str r0, [r5, 0x24] + bl sub_8000A04 + bl sub_8000C34 + ldr r1, _080007B0 @ =gUnknown_3003D88 + ldr r0, _080007B4 @ =gSoundInfo + ldrb r0, [r0, 0x4] + strb r0, [r1] + ldr r1, _080007B8 @ =gUnknown_3003D84 + ldr r4, _080007BC @ =0x04000006 + ldrh r0, [r4] + strb r0, [r1] + bl m4aSoundMain + ldr r1, _080007C0 @ =gUnknown_3003578 + ldrh r0, [r4] + strb r0, [r1] + bl sub_800DD28 + bl sub_8044EC8 + bl sub_80FCF34 + ldr r2, _080007C4 @ =INTR_CHECK + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r5, 0x1C] + ldrh r2, [r5, 0x1C] + orrs r1, r0 + strh r1, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080007A8: .4byte gUnknown_300357C +_080007AC: .4byte gUnknown_30030F0 +_080007B0: .4byte gUnknown_3003D88 +_080007B4: .4byte gSoundInfo +_080007B8: .4byte gUnknown_3003D84 +_080007BC: .4byte 0x04000006 +_080007C0: .4byte gUnknown_3003578 +_080007C4: .4byte INTR_CHECK + thumb_func_end sub_8000724 + + thumb_func_start sub_80007C8 +sub_80007C8: @ 80007C8 + push {lr} + ldr r0, _080007D8 @ =gUnknown_81E9F60 + ldr r1, [r0] + movs r0, 0x2 + bl SetFlashTimerIntr + pop {r0} + bx r0 + .align 2, 0 +_080007D8: .4byte gUnknown_81E9F60 + thumb_func_end sub_80007C8 + + thumb_func_start sub_80007DC +sub_80007DC: @ 80007DC + push {r4,lr} + ldr r4, _08000804 @ =gUnknown_30030F0 + ldr r0, [r4, 0x10] + cmp r0, 0 + beq _080007EA + bl _call_via_r0 +_080007EA: + ldr r2, _08000808 @ =INTR_CHECK + ldrh r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x1C] + ldrh r2, [r4, 0x1C] + orrs r1, r0 + strh r1, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000804: .4byte gUnknown_30030F0 +_08000808: .4byte INTR_CHECK + thumb_func_end sub_80007DC + + thumb_func_start sub_800080C +sub_800080C: @ 800080C + push {lr} + ldr r1, _08000834 @ =gUnknown_3003D80 + ldr r0, _08000838 @ =0x04000006 + ldrh r0, [r0] + strb r0, [r1] + bl m4aSoundVSync + ldr r2, _0800083C @ =INTR_CHECK + ldrh r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strh r0, [r2] + ldr r0, _08000840 @ =gUnknown_30030F0 + ldrh r2, [r0, 0x1C] + ldrh r3, [r0, 0x1C] + orrs r1, r2 + strh r1, [r0, 0x1C] + pop {r0} + bx r0 + .align 2, 0 +_08000834: .4byte gUnknown_3003D80 +_08000838: .4byte 0x04000006 +_0800083C: .4byte INTR_CHECK +_08000840: .4byte gUnknown_30030F0 + thumb_func_end sub_800080C + + thumb_func_start sub_8000844 +sub_8000844: @ 8000844 + push {r4,lr} + ldr r4, _0800086C @ =gUnknown_30030F0 + ldr r0, [r4, 0x18] + cmp r0, 0 + beq _08000852 + bl _call_via_r0 +_08000852: + ldr r2, _08000870 @ =INTR_CHECK + ldrh r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x1C] + ldrh r2, [r4, 0x1C] + orrs r1, r0 + strh r1, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800086C: .4byte gUnknown_30030F0 +_08000870: .4byte INTR_CHECK + thumb_func_end sub_8000844 + + thumb_func_start sub_8000874 +sub_8000874: @ 8000874 + ldr r0, _08000880 @ =gIntrTable + ldr r1, _08000884 @ =sub_8000844 + str r1, [r0, 0x4] + ldr r1, _08000888 @ =sub_800B788 + str r1, [r0, 0x8] + bx lr + .align 2, 0 +_08000880: .4byte gIntrTable +_08000884: .4byte sub_8000844 +_08000888: .4byte sub_800B788 + thumb_func_end sub_8000874 + + thumb_func_start nullsub_4 +nullsub_4: @ 800088C + bx lr + thumb_func_end nullsub_4 + + thumb_func_start sub_8000890 +sub_8000890: @ 8000890 + push {lr} + ldr r2, _080008B8 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x1C] + ldr r0, _080008BC @ =0x0000fffe + ands r0, r1 + ldrh r1, [r2, 0x1C] + strh r0, [r2, 0x1C] + ldrh r1, [r2, 0x1C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080008B4 + movs r3, 0x1 +_080008AA: + ldrh r1, [r2, 0x1C] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080008AA +_080008B4: + pop {r0} + bx r0 + .align 2, 0 +_080008B8: .4byte gUnknown_30030F0 +_080008BC: .4byte 0x0000fffe + thumb_func_end sub_8000890 + + thumb_func_start sub_80008C0 +sub_80008C0: @ 80008C0 + ldr r1, _080008C8 @ =gUnknown_30030F0 + str r0, [r1, 0x20] + bx lr + .align 2, 0 +_080008C8: .4byte gUnknown_30030F0 + thumb_func_end sub_80008C0 + + thumb_func_start sub_80008CC +sub_80008CC: @ 80008CC + ldr r1, _080008D4 @ =gUnknown_30030F0 + movs r0, 0 + str r0, [r1, 0x20] + bx lr + .align 2, 0 +_080008D4: .4byte gUnknown_30030F0 + thumb_func_end sub_80008CC + + thumb_func_start sub_80008D8 +sub_80008D8: @ 80008D8 + push {r4,lr} + ldr r1, _08000930 @ =0x04000208 + movs r0, 0 + strh r0, [r1] + bl m4aSoundVSyncOff + bl sub_8087E64 + ldr r1, _08000934 @ =0x040000bc + ldrh r2, [r1, 0xA] + ldr r3, _08000938 @ =0x0000c5ff + adds r0, r3, 0 + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r4, [r1, 0xA] + ldr r2, _0800093C @ =0x00007fff + adds r0, r2, 0 + ands r0, r4 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + adds r1, 0xC + ldrh r4, [r1, 0xA] + adds r0, r3, 0 + ands r0, r4 + strh r0, [r1, 0xA] + ldrh r4, [r1, 0xA] + adds r0, r2, 0 + ands r0, r4 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + ldr r0, _08000940 @ =0x040000d4 + ldrh r1, [r0, 0xA] + ands r3, r1 + strh r3, [r0, 0xA] + ldrh r1, [r0, 0xA] + ands r2, r1 + strh r2, [r0, 0xA] + ldrh r0, [r0, 0xA] + movs r0, 0xDF + bl SoftReset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000930: .4byte 0x04000208 +_08000934: .4byte 0x040000bc +_08000938: .4byte 0x0000c5ff +_0800093C: .4byte 0x00007fff +_08000940: .4byte 0x040000d4 + thumb_func_end sub_80008D8 + + thumb_func_start sub_8000944 +sub_8000944: @ 8000944 + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _08000960 @ =gPokemonCrySongs + ldr r2, _08000964 @ =0x01000034 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08000960: .4byte gPokemonCrySongs +_08000964: .4byte 0x01000034 + thumb_func_end sub_8000944 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/main_menu.s b/asm/main_menu.s new file mode 100644 index 000000000..64cf0f1fb --- /dev/null +++ b/asm/main_menu.s @@ -0,0 +1,1853 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800C2D4 +sub_800C2D4: @ 800C2D4 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_800C2D4 + + thumb_func_start sub_800C2EC +sub_800C2EC: @ 800C2EC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_800C2EC + + thumb_func_start sub_800C300 +sub_800C300: @ 800C300 + push {lr} + movs r0, 0x1 + bl sub_800C318 + pop {r0} + bx r0 + thumb_func_end sub_800C300 + + thumb_func_start sub_800C30C +sub_800C30C: @ 800C30C + push {lr} + movs r0, 0x1 + bl sub_800C318 + pop {r0} + bx r0 + thumb_func_end sub_800C30C + + thumb_func_start sub_800C318 +sub_800C318: @ 800C318 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _0800C4A0 @ =0x040000d4 + mov r0, sp + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _0800C4A4 @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r5, 0 + str r5, [sp, 0x4] + add r0, sp, 0x4 + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _0800C4A8 @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + mov r0, sp + strh r5, [r0] + str r0, [r1] + ldr r0, _0800C4AC @ =0x05000002 + str r0, [r1, 0x4] + ldr r0, _0800C4B0 @ =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + bl sub_8087E64 + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + bl sub_8070528 + movs r0, 0 + bl sub_8001618 + ldr r1, _0800C4B4 @ =gUnknown_8234690 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _0800C4B8 @ =gUnknown_8234618 + bl sub_8003B24 + bl sub_8002C28 + ldr r0, _0800C4BC @ =gUnknown_8234648 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0800C4C0 @ =gUnknown_8234668 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r0, _0800C4C4 @ =sub_800C2D4 + bl sub_8000544 + movs r1, 0xC1 + lsls r1, 6 + movs r0, 0 + bl sub_8000A38 + ldr r0, _0800C4C8 @ =sub_800C4D0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0800C4CC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0xA] + strh r4, [r1, 0x18] + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0800C4A0: .4byte 0x040000d4 +_0800C4A4: .4byte 0x8100c000 +_0800C4A8: .4byte 0x85000100 +_0800C4AC: .4byte 0x05000002 +_0800C4B0: .4byte 0x810001ff +_0800C4B4: .4byte gUnknown_8234690 +_0800C4B8: .4byte gUnknown_8234618 +_0800C4BC: .4byte gUnknown_8234648 +_0800C4C0: .4byte gUnknown_8234668 +_0800C4C4: .4byte sub_800C2D4 +_0800C4C8: .4byte sub_800C4D0 +_0800C4CC: .4byte gUnknown_3005090 + thumb_func_end sub_800C318 + + thumb_func_start sub_800C4D0 +sub_800C4D0: @ 800C4D0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0800C538 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _0800C4E8 + b _0800C626 +_0800C4E8: + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x1 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x21 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xFF + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x7 + bl sub_8000A38 + ldr r0, _0800C53C @ =gUnknown_30053A0 + ldrh r4, [r0] + cmp r4, 0x2 + beq _0800C58C + cmp r4, 0x2 + bgt _0800C540 + cmp r4, 0 + beq _0800C5E8 + cmp r4, 0x1 + beq _0800C54A + b _0800C5E8 + .align 2, 0 +_0800C538: .4byte gUnknown_2037AB8 +_0800C53C: .4byte gUnknown_30053A0 +_0800C540: + cmp r4, 0x4 + beq _0800C60C + cmp r4, 0xFF + beq _0800C5B0 + b _0800C5E8 +_0800C54A: + movs r0, 0 + bl sub_800D044 + bl sub_806E2BC + cmp r0, 0x1 + bne _0800C570 + ldr r2, _0800C56C @ =gUnknown_3005090 + lsls r3, r5, 2 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0x2 + strh r1, [r0, 0x8] + adds r1, r2, 0 + adds r2, r3, 0 + b _0800C57E + .align 2, 0 +_0800C56C: .4byte gUnknown_3005090 +_0800C570: + ldr r0, _0800C588 @ =gUnknown_3005090 + lsls r2, r5, 2 + adds r1, r2, r5 + lsls r1, 3 + adds r1, r0 + strh r4, [r1, 0x8] + adds r1, r0, 0 +_0800C57E: + adds r0, r2, r5 + lsls r0, 3 + adds r0, r1 + b _0800C5FC + .align 2, 0 +_0800C588: .4byte gUnknown_3005090 +_0800C58C: + movs r0, 0 + bl sub_800D094 + ldr r0, _0800C5A8 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + strh r6, [r1, 0x8] + ldr r1, _0800C5AC @ =gUnknown_8415C42 + adds r0, r5, 0 + bl sub_800C634 + b _0800C626 + .align 2, 0 +_0800C5A8: .4byte gUnknown_3005090 +_0800C5AC: .4byte gUnknown_8415C42 +_0800C5B0: + movs r0, 0 + bl sub_800D094 + ldr r1, _0800C5DC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r6, 0x1 + strh r6, [r4, 0x8] + ldr r1, _0800C5E0 @ =gUnknown_8415BFF + adds r0, r5, 0 + bl sub_800C634 + bl sub_806E2BC + cmp r0, 0x1 + bne _0800C5E4 + movs r0, 0x2 + strh r0, [r4, 0x8] + b _0800C626 + .align 2, 0 +_0800C5DC: .4byte gUnknown_3005090 +_0800C5E0: .4byte gUnknown_8415BFF +_0800C5E4: + strh r6, [r4, 0x8] + b _0800C626 +_0800C5E8: + movs r0, 0 + bl sub_800D044 + ldr r1, _0800C604 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x8] +_0800C5FC: + ldr r1, _0800C608 @ =sub_800C704 + str r1, [r0] + b _0800C626 + .align 2, 0 +_0800C604: .4byte gUnknown_3005090 +_0800C608: .4byte sub_800C704 +_0800C60C: + movs r0, 0 + bl sub_800D094 + ldr r0, _0800C62C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + strh r6, [r1, 0x8] + ldr r1, _0800C630 @ =gUnknown_8415C64 + adds r0, r5, 0 + bl sub_800C634 +_0800C626: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800C62C: .4byte gUnknown_3005090 +_0800C630: .4byte gUnknown_8415C64 + thumb_func_end sub_800C4D0 + + thumb_func_start sub_800C634 +sub_800C634: @ 800C634 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_800CDF8 + ldr r1, _0800C678 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0800C67C @ =sub_800C688 + str r1, [r0] + movs r0, 0x1 + negs r0, r0 + ldr r1, _0800C680 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + ldr r0, _0800C684 @ =sub_800C2EC + bl sub_80006F4 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800C678: .4byte gUnknown_3005090 +_0800C67C: .4byte sub_800C688 +_0800C680: .4byte 0x0000ffff +_0800C684: .4byte sub_800C2EC + thumb_func_end sub_800C634 + + thumb_func_start sub_800C688 +sub_800C688: @ 800C688 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0800C6E0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0800C6F8 + bl sub_8002DE8 + movs r0, 0x4 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0800C6F8 + ldr r0, _0800C6E4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0800C6F8 + movs r0, 0x4 + bl sub_80040B8 + ldr r0, _0800C6E8 @ =gUnknown_8234638 + bl sub_800D1E8 + movs r0, 0 + bl sub_800D044 + ldr r1, _0800C6EC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0800C6F4 + ldr r0, _0800C6F0 @ =sub_800C704 + b _0800C6F6 + .align 2, 0 +_0800C6E0: .4byte gUnknown_2037AB8 +_0800C6E4: .4byte gUnknown_30030F0 +_0800C6E8: .4byte gUnknown_8234638 +_0800C6EC: .4byte gUnknown_3005090 +_0800C6F0: .4byte sub_800C704 +_0800C6F4: + ldr r0, _0800C700 @ =sub_800C7A0 +_0800C6F6: + str r0, [r1] +_0800C6F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800C700: .4byte sub_800C7A0 + thumb_func_end sub_800C688 + + thumb_func_start sub_800C704 +sub_800C704: @ 800C704 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0800C764 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0800C774 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x1 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x21 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xFF + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x7 + bl sub_8000A38 + ldr r0, _0800C768 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0800C770 + ldr r0, _0800C76C @ =sub_800CA94 + b _0800C772 + .align 2, 0 +_0800C764: .4byte gUnknown_2037AB8 +_0800C768: .4byte gUnknown_3005090 +_0800C76C: .4byte sub_800CA94 +_0800C770: + ldr r0, _0800C77C @ =sub_800C780 +_0800C772: + str r0, [r1] +_0800C774: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800C77C: .4byte sub_800C780 + thumb_func_end sub_800C704 + + thumb_func_start sub_800C780 +sub_800C780: @ 800C780 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0800C79C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0800C798 + adds r0, r2, 0 + bl sub_800C7A0 +_0800C798: + pop {r0} + bx r0 + .align 2, 0 +_0800C79C: .4byte gUnknown_2037AB8 + thumb_func_end sub_800C780 + + thumb_func_start sub_800C7A0 +sub_800C7A0: @ 800C7A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x1 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x21 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xFF + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x7 + bl sub_8000A38 + ldr r0, _0800C7F4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _0800C7FC + ldr r1, _0800C7F8 @ =0x00007e04 + b _0800C7FE + .align 2, 0 +_0800C7F4: .4byte gUnknown_300500C +_0800C7F8: .4byte 0x00007e04 +_0800C7FC: + ldr r1, _0800C85C @ =0x0000547f +_0800C7FE: + add r0, sp, 0xC + strh r1, [r0] + add r0, sp, 0xC + movs r1, 0xF1 + movs r2, 0x2 + bl sub_80703EC + ldr r2, _0800C860 @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r0, r1, r7 + lsls r0, 3 + adds r6, r0, r2 + movs r2, 0x8 + ldrsh r0, [r6, r2] + mov r8, r1 + cmp r0, 0x1 + beq _0800C870 + cmp r0, 0x1 + ble _0800C828 + cmp r0, 0x2 + beq _0800C8F0 +_0800C828: + movs r0, 0 + movs r1, 0xAA + bl sub_800445C + ldr r0, _0800C864 @ =gUnknown_8234688 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r0, _0800C868 @ =gUnknown_8415A6E + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + ldr r0, _0800C86C @ =gUnknown_8234618 + bl sub_800D0B4 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + b _0800C8D8 + .align 2, 0 +_0800C85C: .4byte 0x0000547f +_0800C860: .4byte gUnknown_3005090 +_0800C864: .4byte gUnknown_8234688 +_0800C868: .4byte gUnknown_8415A6E +_0800C86C: .4byte gUnknown_8234618 +_0800C870: + movs r0, 0x1 + movs r1, 0xAA + bl sub_800445C + movs r0, 0x2 + movs r1, 0xAA + bl sub_800445C + ldr r5, _0800C8E0 @ =gUnknown_8234688 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0800C8E4 @ =gUnknown_8415A77 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, _0800C8E8 @ =gUnknown_8415A6E + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + bl sub_800CE58 + ldr r4, _0800C8EC @ =gUnknown_8234620 + adds r0, r4, 0 + bl sub_800D0B4 + adds r4, 0x8 + adds r0, r4, 0 + bl sub_800D0B4 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 +_0800C8D8: + movs r1, 0x3 + bl sub_8003F20 + b _0800C994 + .align 2, 0 +_0800C8E0: .4byte gUnknown_8234688 +_0800C8E4: .4byte gUnknown_8415A77 +_0800C8E8: .4byte gUnknown_8415A6E +_0800C8EC: .4byte gUnknown_8234620 +_0800C8F0: + movs r0, 0x1 + movs r1, 0xAA + bl sub_800445C + movs r0, 0x2 + movs r1, 0xAA + bl sub_800445C + movs r0, 0x3 + movs r1, 0xAA + bl sub_800445C + ldr r5, _0800C9B0 @ =gUnknown_8234688 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0800C9B4 @ =gUnknown_8415A77 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, _0800C9B8 @ =gUnknown_8415A6E + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + movs r0, 0x1 + strh r0, [r6, 0x1C] + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, _0800C9BC @ =gUnknown_8415A97 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + bl sub_800CE58 + ldr r4, _0800C9C0 @ =gUnknown_8234620 + adds r0, r4, 0 + bl sub_800D0B4 + adds r0, r4, 0 + adds r0, 0x8 + bl sub_800D0B4 + adds r4, 0x10 + adds r0, r4, 0 + bl sub_800D0B4 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x3 + movs r1, 0x3 + bl sub_8003F20 +_0800C994: + ldr r0, _0800C9C4 @ =gUnknown_3005090 + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _0800C9C8 @ =sub_800C9CC + str r0, [r1] + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800C9B0: .4byte gUnknown_8234688 +_0800C9B4: .4byte gUnknown_8415A77 +_0800C9B8: .4byte gUnknown_8415A6E +_0800C9BC: .4byte gUnknown_8415A97 +_0800C9C0: .4byte gUnknown_8234620 +_0800C9C4: .4byte gUnknown_3005090 +_0800C9C8: .4byte sub_800C9CC + thumb_func_end sub_800C7A0 + + thumb_func_start sub_800C9CC +sub_800C9CC: @ 800C9CC + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0x1 + negs r5, r5 + adds r0, r5, 0 + bl sub_8000FE8 + lsls r0, 16 + asrs r0, 16 + cmp r0, r5 + beq _0800CA10 + ldr r1, _0800CA18 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0800CA1C @ =sub_800CA28 + str r1, [r0] + ldr r0, _0800CA20 @ =0x0000ffff + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + ldr r0, _0800CA24 @ =sub_800C2EC + bl sub_80006F4 +_0800CA10: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800CA18: .4byte gUnknown_3005090 +_0800CA1C: .4byte sub_800CA28 +_0800CA20: .4byte 0x0000ffff +_0800CA24: .4byte sub_800C2EC + thumb_func_end sub_800C9CC + + thumb_func_start sub_800CA28 +sub_800CA28: @ 800CA28 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0800CA4C @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldrb r0, [r4, 0x8] + ldrb r1, [r4, 0xA] + bl sub_800CC94 + ldr r0, _0800CA50 @ =sub_800CA54 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CA4C: .4byte gUnknown_3005090 +_0800CA50: .4byte sub_800CA54 + thumb_func_end sub_800CA28 + + thumb_func_start sub_800CA54 +sub_800CA54: @ 800CA54 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0800CA88 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0800CA80 + adds r0, r4, 0 + bl sub_800CCF8 + lsls r0, 24 + cmp r0, 0 + beq _0800CA80 + ldr r0, _0800CA8C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0800CA90 @ =sub_800CA28 + str r0, [r1] +_0800CA80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CA88: .4byte gUnknown_2037AB8 +_0800CA8C: .4byte gUnknown_3005090 +_0800CA90: .4byte sub_800CA28 + thumb_func_end sub_800CA54 + + thumb_func_start sub_800CA94 +sub_800CA94: @ 800CA94 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0800CAC4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0800CB84 + ldr r1, _0800CAC8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0800CACC + cmp r0, 0x1 + ble _0800CAEE + cmp r0, 0x2 + beq _0800CADA + b _0800CAEE + .align 2, 0 +_0800CAC4: .4byte gUnknown_2037AB8 +_0800CAC8: .4byte gUnknown_3005090 +_0800CACC: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0800CAEA + cmp r0, 0x1 + bne _0800CAEA + b _0800CAEE +_0800CADA: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0800CAEE + cmp r0, 0x1 + ble _0800CAEA + cmp r0, 0x2 + beq _0800CAF2 +_0800CAEA: + movs r0, 0x1 + b _0800CB22 +_0800CAEE: + movs r0, 0 + b _0800CB22 +_0800CAF2: + bl sub_8009480 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0800CB20 + movs r0, 0 + bl sub_800D094 + ldr r0, _0800CB1C @ =sub_800CB90 + str r0, [r4] + movs r0, 0x1 + negs r0, r0 + str r5, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _0800CB84 + .align 2, 0 +_0800CB1C: .4byte sub_800CB90 +_0800CB20: + movs r0, 0x2 +_0800CB22: + cmp r0, 0x1 + beq _0800CB48 + cmp r0, 0x1 + ble _0800CB2E + cmp r0, 0x2 + beq _0800CB70 +_0800CB2E: + ldr r1, _0800CB44 @ =gUnknown_2031DE0 + movs r0, 0 + strb r0, [r1] + bl sub_8003ECC + adds r0, r6, 0 + bl sub_8077508 + bl sub_812EB2C + b _0800CB84 + .align 2, 0 +_0800CB44: .4byte gUnknown_2031DE0 +_0800CB48: + ldr r0, _0800CB64 @ =gUnknown_20371F8 + movs r2, 0 + movs r1, 0 + strh r1, [r0] + ldr r0, _0800CB68 @ =gUnknown_20375F8 + strh r1, [r0] + ldr r0, _0800CB6C @ =gUnknown_2031DE0 + strb r2, [r0] + bl sub_8003ECC + adds r0, r6, 0 + bl sub_8110F14 + b _0800CB84 + .align 2, 0 +_0800CB64: .4byte gUnknown_20371F8 +_0800CB68: .4byte gUnknown_20375F8 +_0800CB6C: .4byte gUnknown_2031DE0 +_0800CB70: + ldr r0, _0800CB8C @ =sub_81422AC + bl sub_8000544 + bl sub_812B478 + bl sub_8003ECC + adds r0, r6, 0 + bl sub_8077508 +_0800CB84: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800CB8C: .4byte sub_81422AC + thumb_func_end sub_800CA94 + + thumb_func_start sub_800CB90 +sub_800CB90: @ 800CB90 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0800CBB4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r0, 0x1A + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _0800CC0C + cmp r1, 0x1 + bgt _0800CBB8 + cmp r1, 0 + beq _0800CBC2 + b _0800CC58 + .align 2, 0 +_0800CBB4: .4byte gUnknown_3005090 +_0800CBB8: + cmp r1, 0x2 + beq _0800CC1C + cmp r1, 0x3 + beq _0800CC34 + b _0800CC58 +_0800CBC2: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _0800CBEC + ldr r0, _0800CBE8 @ =gUnknown_8415AA4 + bl sub_800CDF8 + b _0800CBF2 + .align 2, 0 +_0800CBE8: .4byte gUnknown_8415AA4 +_0800CBEC: + ldr r0, _0800CC04 @ =gUnknown_8415ACB + bl sub_800CDF8 +_0800CBF2: + ldr r0, _0800CC08 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1A] + adds r0, 0x1 + strh r0, [r1, 0x1A] + b _0800CC58 + .align 2, 0 +_0800CC04: .4byte gUnknown_8415ACB +_0800CC08: .4byte gUnknown_3005090 +_0800CC0C: + ldr r0, _0800CC18 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + b _0800CC28 + .align 2, 0 +_0800CC18: .4byte gUnknown_2037AB8 +_0800CC1C: + bl sub_8002DE8 + movs r0, 0x4 + bl sub_8002E64 + lsls r0, 16 +_0800CC28: + cmp r0, 0 + bne _0800CC58 + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + b _0800CC58 +_0800CC34: + ldr r0, _0800CC60 @ =gUnknown_30030F0 + ldrh r0, [r0, 0x2E] + ands r1, r0 + cmp r1, 0 + beq _0800CC58 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0800CC64 @ =sub_800CC68 + str r0, [r4] +_0800CC58: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800CC60: .4byte gUnknown_30030F0 +_0800CC64: .4byte sub_800CC68 + thumb_func_end sub_800CB90 + + thumb_func_start sub_800CC68 +sub_800CC68: @ 800CC68 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0800CC8C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0800CC86 + ldr r0, _0800CC90 @ =sub_8078914 + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_0800CC86: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CC8C: .4byte gUnknown_2037AB8 +_0800CC90: .4byte sub_8078914 + thumb_func_end sub_800CC68 + + thumb_func_start sub_800CC94 +sub_800CC94: @ 800CC94 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r1, _0800CCB8 @ =0x000012de + movs r0, 0x40 + bl sub_8000A38 + cmp r4, 0 + beq _0800CCB2 + cmp r4, 0 + blt _0800CCB2 + cmp r4, 0x2 + ble _0800CCBC +_0800CCB2: + movs r2, 0 + movs r0, 0x20 + b _0800CCDC + .align 2, 0 +_0800CCB8: .4byte 0x000012de +_0800CCBC: + cmp r5, 0x1 + beq _0800CCCE + cmp r5, 0x1 + ble _0800CCC8 + cmp r5, 0x2 + beq _0800CCD6 +_0800CCC8: + movs r2, 0 + movs r0, 0x60 + b _0800CCDC +_0800CCCE: + movs r2, 0xC0 + lsls r2, 7 + movs r0, 0x80 + b _0800CCDC +_0800CCD6: + movs r2, 0x80 + lsls r2, 8 + movs r0, 0xA0 +_0800CCDC: + movs r3, 0x80 + lsls r3, 2 + adds r1, r3, 0 + adds r1, r2, r1 + subs r0, 0x2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800CC94 + + thumb_func_start sub_800CCF8 +sub_800CCF8: @ 800CCF8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0800CD38 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r5, 0x1 + ands r5, r1 + adds r3, r0, 0 + cmp r5, 0 + beq _0800CD44 + movs r0, 0x5 + bl sub_80722CC + bl sub_8009480 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0800CD3C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0800CD40 @ =sub_800CA94 + str r1, [r0] + b _0800CDEC + .align 2, 0 +_0800CD38: .4byte gUnknown_30030F0 +_0800CD3C: .4byte gUnknown_3005090 +_0800CD40: .4byte sub_800CA94 +_0800CD44: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0800CD8C + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + str r5, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xA0 + bl sub_8000A38 + ldr r1, _0800CD84 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0800CD88 @ =sub_800CC68 + str r1, [r0] + b _0800CDEC + .align 2, 0 +_0800CD84: .4byte gUnknown_3005090 +_0800CD88: .4byte sub_800CC68 +_0800CD8C: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800CDB4 + ldr r0, _0800CDB0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r2, [r1, 0xA] + movs r5, 0xA + ldrsh r0, [r1, r5] + cmp r0, 0 + ble _0800CDB4 + subs r0, r2, 0x1 + strh r0, [r1, 0xA] + movs r0, 0x1 + b _0800CDEE + .align 2, 0 +_0800CDB0: .4byte gUnknown_3005090 +_0800CDB4: + ldrh r1, [r3, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0800CDEC + ldr r1, _0800CDE4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r3, r0, r1 + movs r0, 0xA + ldrsh r2, [r3, r0] + ldr r1, _0800CDE8 @ =gUnknown_8234694 + movs r4, 0x8 + ldrsh r0, [r3, r4] + adds r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bge _0800CDEC + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + movs r0, 0x1 + b _0800CDEE + .align 2, 0 +_0800CDE4: .4byte gUnknown_3005090 +_0800CDE8: .4byte gUnknown_8234694 +_0800CDEC: + movs r0, 0 +_0800CDEE: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800CCF8 + + thumb_func_start sub_800CDF8 +sub_800CDF8: @ 800CDF8 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r0, 0x4 + movs r1, 0xAA + bl sub_800445C + ldr r0, _0800CE48 @ =gUnknown_8234638 + bl sub_800D0B4 + ldr r0, _0800CE4C @ =gUnknown_8234688 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x4 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_812E51C + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x4 + movs r1, 0x2 + bl sub_8003F20 + ldr r1, _0800CE50 @ =0x000013dd + movs r0, 0x40 + bl sub_8000A38 + ldr r1, _0800CE54 @ =0x0000739d + movs r0, 0x44 + bl sub_8000A38 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CE48: .4byte gUnknown_8234638 +_0800CE4C: .4byte gUnknown_8234688 +_0800CE50: .4byte 0x000013dd +_0800CE54: .4byte 0x0000739d + thumb_func_end sub_800CDF8 + + thumb_func_start sub_800CE58 +sub_800CE58: @ 800CE58 + push {lr} + bl sub_800CE70 + bl sub_800CF3C + bl sub_800CED4 + bl sub_800CFC4 + pop {r0} + bx r0 + thumb_func_end sub_800CE58 + + thumb_func_start sub_800CE70 +sub_800CE70: @ 800CE70 + push {lr} + sub sp, 0x14 + ldr r0, _0800CEC8 @ =gUnknown_823468B + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r0, _0800CECC @ =gUnknown_841B6D5 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x12 + bl sub_812E51C + add r1, sp, 0xC + movs r2, 0 + ldr r0, _0800CED0 @ =gUnknown_300500C + ldr r3, [r0] +_0800CE96: + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x6 + ble _0800CE96 + movs r0, 0xFF + strb r0, [r1] + ldr r0, _0800CEC8 @ =gUnknown_823468B + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x3E + movs r3, 0x12 + bl sub_812E51C + add sp, 0x14 + pop {r0} + bx r0 + .align 2, 0 +_0800CEC8: .4byte gUnknown_823468B +_0800CECC: .4byte gUnknown_841B6D5 +_0800CED0: .4byte gUnknown_300500C + thumb_func_end sub_800CE70 + + thumb_func_start sub_800CED4 +sub_800CED4: @ 800CED4 + push {r4-r6,lr} + sub sp, 0x2C + ldr r6, _0800CF30 @ =gUnknown_823468B + str r6, [sp] + movs r5, 0x1 + negs r5, r5 + str r5, [sp, 0x4] + ldr r0, _0800CF34 @ =gUnknown_841B6DC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x22 + bl sub_812E51C + ldr r4, _0800CF38 @ =gUnknown_300500C + ldr r0, [r4] + ldrh r1, [r0, 0xE] + add r0, sp, 0xC + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r1, 0xF0 + strb r1, [r0] + adds r0, 0x1 + ldr r1, [r4] + ldrb r1, [r1, 0x10] + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + str r6, [sp] + str r5, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x3E + movs r3, 0x22 + bl sub_812E51C + add sp, 0x2C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800CF30: .4byte gUnknown_823468B +_0800CF34: .4byte gUnknown_841B6DC +_0800CF38: .4byte gUnknown_300500C + thumb_func_end sub_800CED4 + + thumb_func_start sub_800CF3C +sub_800CF3C: @ 800CF3C + push {r4-r6,lr} + sub sp, 0x2C + ldr r0, _0800CF60 @ =0x00000829 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0800CFAE + bl sub_806E25C + cmp r0, 0 + beq _0800CF64 + movs r0, 0x1 + bl sub_8088E8C + b _0800CF6A + .align 2, 0 +_0800CF60: .4byte 0x00000829 +_0800CF64: + movs r0, 0x1 + bl sub_8088EDC +_0800CF6A: + lsls r0, 16 + lsrs r6, r0, 16 + ldr r5, _0800CFB8 @ =gUnknown_823468B + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0800CFBC @ =gUnknown_841B6E3 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x32 + bl sub_812E51C + add r0, sp, 0xC + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r1, _0800CFC0 @ =gUnknown_841B6EB + bl sub_8008DA4 + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x3E + movs r3, 0x32 + bl sub_812E51C +_0800CFAE: + add sp, 0x2C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800CFB8: .4byte gUnknown_823468B +_0800CFBC: .4byte gUnknown_841B6E3 +_0800CFC0: .4byte gUnknown_841B6EB + thumb_func_end sub_800CF3C + + thumb_func_start sub_800CFC4 +sub_800CFC4: @ 800CFC4 + push {r4-r6,lr} + sub sp, 0x2C + movs r6, 0 + movs r4, 0x82 + lsls r4, 4 +_0800CFCE: + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0800CFE2 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0800CFE2: + adds r4, 0x1 + ldr r0, _0800D034 @ =0x00000827 + cmp r4, r0 + bls _0800CFCE + ldr r5, _0800D038 @ =gUnknown_823468B + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0800D03C @ =gUnknown_841B6EC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x42 + bl sub_812E51C + add r0, sp, 0xC + adds r1, r6, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8008E78 + ldr r1, _0800D040 @ =gUnknown_841B6F3 + bl sub_8008DA4 + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0x3E + movs r3, 0x42 + bl sub_812E51C + add sp, 0x2C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800D034: .4byte 0x00000827 +_0800D038: .4byte gUnknown_823468B +_0800D03C: .4byte gUnknown_841B6EC +_0800D040: .4byte gUnknown_841B6F3 + thumb_func_end sub_800CFC4 + + thumb_func_start sub_800D044 +sub_800D044: @ 800D044 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _0800D088 @ =gUnknown_300500C + ldr r0, [r5] + ldrb r0, [r0, 0x14] + lsrs r0, 3 + bl sub_8069788 + ldr r1, [r0] + movs r2, 0x90 + lsls r2, 1 + ldr r3, _0800D08C @ =0x000001b1 + adds r0, r4, 0 + bl sub_80017D0 + ldr r0, [r5] + ldrb r0, [r0, 0x14] + lsrs r0, 3 + bl sub_8069788 + ldr r0, [r0, 0x4] + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0800D090 @ =gUnknown_8234638 + bl sub_800D1E8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800D088: .4byte gUnknown_300500C +_0800D08C: .4byte 0x000001b1 +_0800D090: .4byte gUnknown_8234638 + thumb_func_end sub_800D044 + + thumb_func_start sub_800D094 +sub_800D094: @ 800D094 + push {lr} + ldr r1, _0800D0AC @ =0x000001b1 + movs r0, 0 + movs r2, 0x20 + bl sub_814FF2C + ldr r0, _0800D0B0 @ =gUnknown_8234638 + bl sub_800D1E8 + pop {r0} + bx r0 + .align 2, 0 +_0800D0AC: .4byte 0x000001b1 +_0800D0B0: .4byte gUnknown_8234638 + thumb_func_end sub_800D094 + + thumb_func_start sub_800D0B4 +sub_800D0B4: @ 800D0B4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r5, r0, 0 + ldrb r0, [r5] + ldr r1, _0800D1D8 @ =0x000001b1 + ldrb r2, [r5, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r5, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + movs r6, 0x1 + str r6, [sp] + str r6, [sp, 0x4] + movs r4, 0x2 + mov r8, r4 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + movs r1, 0xD9 + lsls r1, 1 + ldrb r2, [r5, 0x1] + ldrb r3, [r5, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + ldrb r4, [r5, 0x3] + str r4, [sp] + ldrb r4, [r5, 0x4] + str r4, [sp, 0x4] + mov r4, r8 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + ldr r1, _0800D1DC @ =0x000001b3 + ldrb r2, [r5, 0x3] + ldrb r3, [r5, 0x1] + adds r2, r3 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r5, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + str r6, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + movs r1, 0xDA + lsls r1, 1 + ldrb r2, [r5, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r5, 0x2] + str r6, [sp] + ldrb r4, [r5, 0x4] + str r4, [sp, 0x4] + mov r4, r8 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + movs r1, 0xDB + lsls r1, 1 + ldrb r2, [r5, 0x3] + ldrb r3, [r5, 0x1] + adds r2, r3 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r5, 0x2] + str r6, [sp] + ldrb r4, [r5, 0x4] + str r4, [sp, 0x4] + mov r4, r8 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + ldr r1, _0800D1E0 @ =0x000001b7 + ldrb r2, [r5, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r5, 0x4] + ldrb r4, [r5, 0x2] + adds r3, r4 + lsls r3, 24 + lsrs r3, 24 + str r6, [sp] + str r6, [sp, 0x4] + mov r4, r8 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + movs r1, 0xDC + lsls r1, 1 + ldrb r2, [r5, 0x1] + ldrb r3, [r5, 0x4] + ldrb r4, [r5, 0x2] + adds r3, r4 + lsls r3, 24 + lsrs r3, 24 + ldrb r4, [r5, 0x3] + str r4, [sp] + str r6, [sp, 0x4] + mov r4, r8 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + ldr r1, _0800D1E4 @ =0x000001b9 + ldrb r2, [r5, 0x3] + ldrb r3, [r5, 0x1] + adds r2, r3 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r5, 0x4] + ldrb r4, [r5, 0x2] + adds r3, r4 + lsls r3, 24 + lsrs r3, 24 + str r6, [sp] + str r6, [sp, 0x4] + mov r4, r8 + str r4, [sp, 0x8] + bl sub_8002554 + ldrb r0, [r5] + bl sub_80020BC + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800D1D8: .4byte 0x000001b1 +_0800D1DC: .4byte 0x000001b3 +_0800D1E0: .4byte 0x000001b7 +_0800D1E4: .4byte 0x000001b9 + thumb_func_end sub_800D0B4 + + thumb_func_start sub_800D1E8 +sub_800D1E8: @ 800D1E8 + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + ldrb r0, [r6] + ldrb r1, [r6, 0x1] + subs r2, r1, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r4, [r6, 0x2] + subs r3, r4, 0x1 + lsls r3, 24 + lsrs r3, 24 + ldrb r5, [r6, 0x3] + adds r1, r5 + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + ldrb r1, [r6, 0x4] + adds r4, r1 + adds r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + movs r1, 0x2 + str r1, [sp, 0x8] + movs r1, 0 + bl sub_8002554 + ldrb r0, [r6] + bl sub_80020BC + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_800D1E8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/malloc.s b/asm/malloc.s new file mode 100644 index 000000000..1bc61f442 --- /dev/null +++ b/asm/malloc.s @@ -0,0 +1,423 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800292C +sub_800292C: @ 800292C + push {r4,lr} + movs r4, 0 + strh r4, [r0] + ldr r4, _08002944 @ =0x0000a3a3 + strh r4, [r0, 0x2] + str r3, [r0, 0x4] + str r1, [r0, 0x8] + str r2, [r0, 0xC] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08002944: .4byte 0x0000a3a3 + thumb_func_end sub_800292C + + thumb_func_start sub_8002948 +sub_8002948: @ 8002948 + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + subs r3, 0x10 + adds r1, r2, 0 + bl sub_800292C + pop {r0} + bx r0 + thumb_func_end sub_8002948 + + thumb_func_start sub_800295C +sub_800295C: @ 800295C + push {r4-r7,lr} + adds r5, r1, 0 + ldr r2, _08002998 @ =gUnknown_2020004 + str r0, [r2] + ldr r1, _0800299C @ =gUnknown_2020008 + str r0, [r1] + movs r0, 0x3 + ands r0, r5 + cmp r0, 0 + beq _08002976 + lsrs r0, r5, 2 + adds r0, 0x1 + lsls r5, r0, 2 +_08002976: + adds r6, r1, 0 + ldr r7, _080029A0 @ =gUnknown_202000C +_0800297A: + ldr r4, [r6] + ldrh r0, [r4] + cmp r0, 0 + bne _080029DC + ldr r3, [r4, 0x4] + cmp r3, r5 + bcc _080029DC + subs r0, r3, r5 + cmp r0, 0x1F + bhi _080029A4 + movs r0, 0x1 + strh r0, [r4] + adds r0, r4, 0 + adds r0, 0x10 + b _080029F8 + .align 2, 0 +_08002998: .4byte gUnknown_2020004 +_0800299C: .4byte gUnknown_2020008 +_080029A0: .4byte gUnknown_202000C +_080029A4: + subs r3, 0x10 + subs r3, r5 + adds r0, r5, 0 + adds r0, 0x10 + adds r0, r4, r0 + str r0, [r7] + movs r1, 0x1 + strh r1, [r4] + str r5, [r4, 0x4] + ldr r2, [r4, 0xC] + adds r1, r4, 0 + bl sub_800292C + ldr r0, [r6] + ldr r1, [r7] + str r1, [r0, 0xC] + ldr r0, _080029D8 @ =gUnknown_2020004 + ldr r2, [r1, 0xC] + ldr r0, [r0] + cmp r2, r0 + beq _080029D0 + str r1, [r2, 0x8] +_080029D0: + ldr r0, [r6] + adds r0, 0x10 + b _080029F8 + .align 2, 0 +_080029D8: .4byte gUnknown_2020004 +_080029DC: + ldr r0, [r1] + ldr r3, [r0, 0xC] + ldr r0, [r2] + cmp r3, r0 + beq _080029EA + str r3, [r1] + b _0800297A +_080029EA: + ldr r0, _08002A00 @ =gUnknown_81E9F68 + movs r1, 0xAE + ldr r2, _08002A04 @ =gUnknown_81E9FA0 + movs r3, 0x1 + bl AGBAssert + movs r0, 0 +_080029F8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08002A00: .4byte gUnknown_81E9F68 +_08002A04: .4byte gUnknown_81E9FA0 + thumb_func_end sub_800295C + + thumb_func_start sub_8002A08 +sub_8002A08: @ 8002A08 + push {r4-r7,lr} + cmp r1, 0 + bne _08002A24 + ldr r0, _08002A1C @ =gUnknown_81E9F68 + ldr r2, _08002A20 @ =gUnknown_81E9FA4 + movs r1, 0xC3 + movs r3, 0x1 + bl AGBAssert + b _08002ACA + .align 2, 0 +_08002A1C: .4byte gUnknown_81E9F68 +_08002A20: .4byte gUnknown_81E9FA4 +_08002A24: + adds r6, r0, 0 + adds r4, r1, 0 + subs r4, 0x10 + ldrh r0, [r4, 0x2] + ldr r7, _08002AD0 @ =0x0000a3a3 + cmp r0, r7 + beq _08002A3E + ldr r0, _08002AD4 @ =gUnknown_81E9F68 + ldr r2, _08002AD8 @ =gUnknown_81E9FB0 + movs r1, 0xCC + movs r3, 0x1 + bl AGBAssert +_08002A3E: + ldrh r0, [r4] + cmp r0, 0x1 + beq _08002A50 + ldr r0, _08002AD4 @ =gUnknown_81E9F68 + ldr r2, _08002ADC @ =gUnknown_81E9FD8 + movs r1, 0xCD + movs r3, 0x1 + bl AGBAssert +_08002A50: + movs r0, 0 + strh r0, [r4] + ldr r0, [r4, 0xC] + cmp r0, r6 + beq _08002A8C + ldrh r5, [r0] + cmp r5, 0 + bne _08002A8C + ldrh r0, [r0, 0x2] + cmp r0, r7 + beq _08002A72 + ldr r0, _08002AD4 @ =gUnknown_81E9F68 + ldr r2, _08002AE0 @ =gUnknown_81E9FEC + movs r1, 0xD3 + movs r3, 0x1 + bl AGBAssert +_08002A72: + ldr r0, [r4, 0x4] + adds r0, 0x10 + ldr r2, [r4, 0xC] + ldr r1, [r2, 0x4] + adds r0, r1 + str r0, [r4, 0x4] + strh r5, [r2, 0x2] + ldr r0, [r4, 0xC] + ldr r0, [r0, 0xC] + str r0, [r4, 0xC] + cmp r0, r6 + beq _08002A8C + str r4, [r0, 0x8] +_08002A8C: + cmp r4, r6 + beq _08002ACA + ldr r0, [r4, 0x8] + ldrh r5, [r0] + cmp r5, 0 + bne _08002ACA + ldrh r1, [r0, 0x2] + ldr r0, _08002AD0 @ =0x0000a3a3 + cmp r1, r0 + beq _08002AAC + ldr r0, _08002AD4 @ =gUnknown_81E9F68 + ldr r2, _08002AE4 @ =gUnknown_81EA018 + movs r1, 0xE4 + movs r3, 0x1 + bl AGBAssert +_08002AAC: + ldr r1, [r4, 0x8] + ldr r0, [r4, 0xC] + str r0, [r1, 0xC] + ldr r1, [r4, 0xC] + cmp r1, r6 + beq _08002ABC + ldr r0, [r4, 0x8] + str r0, [r1, 0x8] +_08002ABC: + strh r5, [r4, 0x2] + ldr r0, [r4, 0x8] + ldr r1, [r0, 0x4] + adds r1, 0x10 + ldr r2, [r4, 0x4] + adds r1, r2 + str r1, [r0, 0x4] +_08002ACA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002AD0: .4byte 0x0000a3a3 +_08002AD4: .4byte gUnknown_81E9F68 +_08002AD8: .4byte gUnknown_81E9FB0 +_08002ADC: .4byte gUnknown_81E9FD8 +_08002AE0: .4byte gUnknown_81E9FEC +_08002AE4: .4byte gUnknown_81EA018 + thumb_func_end sub_8002A08 + + thumb_func_start sub_8002AE8 +sub_8002AE8: @ 8002AE8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r1, 0 + bl sub_800295C + adds r5, r0, 0 + cmp r5, 0 + beq _08002B1C + movs r0, 0x3 + ands r0, r4 + cmp r0, 0 + beq _08002B06 + lsrs r0, r4, 2 + adds r0, 0x1 + lsls r4, r0, 2 +_08002B06: + movs r0, 0 + str r0, [sp] + lsls r2, r4, 9 + lsrs r2, 11 + movs r0, 0xA0 + lsls r0, 19 + orrs r2, r0 + mov r0, sp + adds r1, r5, 0 + bl CpuSet +_08002B1C: + adds r0, r5, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8002AE8 + + thumb_func_start sub_8002B28 +sub_8002B28: @ 8002B28 + push {r4,r5,lr} + adds r5, r0, 0 + adds r3, r1, 0 + subs r3, 0x10 + ldrh r2, [r3, 0x2] + ldr r0, _08002B74 @ =0x0000a3a3 + cmp r2, r0 + bne _08002B6E + ldr r0, [r3, 0xC] + ldrh r1, [r0, 0x2] + adds r4, r0, 0 + cmp r1, r2 + bne _08002B6E + cmp r4, r5 + beq _08002B4C + ldr r0, [r4, 0x8] + cmp r0, r3 + bne _08002B6E +_08002B4C: + ldr r2, [r3, 0x8] + ldrh r1, [r2, 0x2] + ldr r0, _08002B74 @ =0x0000a3a3 + cmp r1, r0 + bne _08002B6E + cmp r2, r5 + beq _08002B60 + ldr r0, [r2, 0xC] + cmp r0, r3 + bne _08002B6E +_08002B60: + cmp r4, r5 + beq _08002B78 + ldr r0, [r3, 0x4] + adds r0, 0x10 + adds r0, r3, r0 + cmp r4, r0 + beq _08002B78 +_08002B6E: + movs r0, 0 + b _08002B7A + .align 2, 0 +_08002B74: .4byte 0x0000a3a3 +_08002B78: + movs r0, 0x1 +_08002B7A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8002B28 + + thumb_func_start sub_8002B80 +sub_8002B80: @ 8002B80 + push {lr} + ldr r2, _08002B94 @ =gUnknown_3000A38 + str r0, [r2] + ldr r2, _08002B98 @ =gUnknown_3000A3C + str r1, [r2] + bl sub_8002948 + pop {r0} + bx r0 + .align 2, 0 +_08002B94: .4byte gUnknown_3000A38 +_08002B98: .4byte gUnknown_3000A3C + thumb_func_end sub_8002B80 + + thumb_func_start sub_8002B9C +sub_8002B9C: @ 8002B9C + push {lr} + adds r1, r0, 0 + ldr r0, _08002BAC @ =gUnknown_3000A38 + ldr r0, [r0] + bl sub_800295C + pop {r1} + bx r1 + .align 2, 0 +_08002BAC: .4byte gUnknown_3000A38 + thumb_func_end sub_8002B9C + + thumb_func_start sub_8002BB0 +sub_8002BB0: @ 8002BB0 + push {lr} + adds r1, r0, 0 + ldr r0, _08002BC0 @ =gUnknown_3000A38 + ldr r0, [r0] + bl sub_8002AE8 + pop {r1} + bx r1 + .align 2, 0 +_08002BC0: .4byte gUnknown_3000A38 + thumb_func_end sub_8002BB0 + + thumb_func_start sub_8002BC4 +sub_8002BC4: @ 8002BC4 + push {lr} + adds r1, r0, 0 + ldr r0, _08002BD4 @ =gUnknown_3000A38 + ldr r0, [r0] + bl sub_8002A08 + pop {r0} + bx r0 + .align 2, 0 +_08002BD4: .4byte gUnknown_3000A38 + thumb_func_end sub_8002BC4 + + thumb_func_start sub_8002BD8 +sub_8002BD8: @ 8002BD8 + push {lr} + adds r1, r0, 0 + ldr r0, _08002BE8 @ =gUnknown_3000A38 + ldr r0, [r0] + bl sub_8002B28 + pop {r1} + bx r1 + .align 2, 0 +_08002BE8: .4byte gUnknown_3000A38 + thumb_func_end sub_8002BD8 + + thumb_func_start sub_8002BEC +sub_8002BEC: @ 8002BEC + push {r4,r5,lr} + ldr r0, _08002C10 @ =gUnknown_3000A38 + ldr r4, [r0] + adds r5, r0, 0 +_08002BF4: + ldr r0, [r5] + adds r1, r4, 0 + adds r1, 0x10 + bl sub_8002B28 + cmp r0, 0 + beq _08002C14 + ldr r4, [r4, 0xC] + ldr r0, [r5] + cmp r4, r0 + bne _08002BF4 + movs r0, 0x1 + b _08002C16 + .align 2, 0 +_08002C10: .4byte gUnknown_3000A38 +_08002C14: + movs r0, 0 +_08002C16: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8002BEC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s new file mode 100644 index 000000000..805cf132d --- /dev/null +++ b/asm/map_name_popup.s @@ -0,0 +1,490 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8098110 +sub_8098110: @ 8098110 + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0x80 + lsls r0, 7 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080981A2 + ldr r0, _08098178 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080981A2 + ldr r5, _0809817C @ =sub_80981AC + adds r0, r5, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + bne _08098188 + adds r0, r5, 0 + movs r1, 0x5A + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + ldr r1, _08098180 @ =0xffffef7f + movs r0, 0 + movs r2, 0 + bl sub_8001D08 + ldr r1, _08098184 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x8] + strh r1, [r0, 0xC] + strh r6, [r0, 0x18] + b _080981A2 + .align 2, 0 +_08098178: .4byte gUnknown_203ADFA +_0809817C: .4byte sub_80981AC +_08098180: .4byte 0xffffef7f +_08098184: .4byte gUnknown_3005090 +_08098188: + ldr r0, _080981A8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _0809819E + movs r0, 0x4 + strh r0, [r1, 0x8] +_0809819E: + movs r0, 0x1 + strh r0, [r1, 0xE] +_080981A2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080981A8: .4byte gUnknown_3005090 + thumb_func_end sub_8098110 + + thumb_func_start sub_80981AC +sub_80981AC: @ 80981AC + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080981D0 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bls _080981C6 + b _080982DE +_080981C6: + lsls r0, 2 + ldr r1, _080981D4 @ =_080981D8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080981D0: .4byte gUnknown_3005090 +_080981D4: .4byte _080981D8 + .align 2, 0 +_080981D8: + .4byte _080981FC + .4byte _0809820E + .4byte _08098218 + .4byte _08098234 + .4byte _0809824C + .4byte _080982DE + .4byte _0809827E + .4byte _080982A6 + .4byte _080982D6 +_080981FC: + movs r1, 0x18 + ldrsh r0, [r4, r1] + bl sub_8098340 + strh r0, [r4, 0x10] + movs r0, 0x1 + strh r0, [r4, 0x12] + strh r0, [r4, 0x8] + b _080982DE +_0809820E: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080982DE +_08098218: + ldrh r0, [r4, 0xC] + subs r0, 0x2 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x18 + negs r1, r1 + cmp r0, r1 + bgt _080982DE + movs r0, 0x3 + strh r0, [r4, 0x8] + movs r0, 0 + strh r0, [r4, 0xA] + b _080982DE +_08098234: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x78 + ble _080982DE + movs r0, 0 + strh r0, [r4, 0xA] + movs r0, 0x4 + strh r0, [r4, 0x8] + b _080982DE +_0809824C: + ldrh r0, [r4, 0xC] + adds r0, 0x2 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + blt _080982DE + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08098278 + ldrh r0, [r4, 0x10] + bl sub_8098400 + ldrb r0, [r4, 0x10] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + strh r0, [r4, 0xE] + b _080982DE +_08098278: + movs r0, 0x6 + strh r0, [r4, 0x8] + b _080982E6 +_0809827E: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080982A0 + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080982A0 + ldrb r0, [r4, 0x10] + bl sub_815036C + ldrb r0, [r4, 0x10] + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0x1 + strh r0, [r4, 0x14] +_080982A0: + movs r0, 0x7 + strh r0, [r4, 0x8] + b _080982E6 +_080982A6: + bl sub_8001960 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080982E6 + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080982C6 + ldrb r0, [r4, 0x10] + bl sub_8003E3C + strh r5, [r4, 0x12] + movs r0, 0x1 + strh r0, [r4, 0x16] +_080982C6: + movs r0, 0x8 + strh r0, [r4, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + b _080982E6 +_080982D6: + adds r0, r2, 0 + bl sub_8077508 + b _080982E6 +_080982DE: + ldrh r1, [r4, 0xC] + movs r0, 0x12 + bl sub_8000A38 +_080982E6: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80981AC + + thumb_func_start sub_80982EC +sub_80982EC: @ 80982EC + push {lr} + ldr r0, _08098318 @ =sub_80981AC + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08098312 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0809831C @ =gUnknown_3005098 + adds r1, r0, r1 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x5 + bgt _08098312 + movs r0, 0x6 + strh r0, [r1] +_08098312: + pop {r0} + bx r0 + .align 2, 0 +_08098318: .4byte sub_80981AC +_0809831C: .4byte gUnknown_3005098 + thumb_func_end sub_80982EC + + thumb_func_start sub_8098320 +sub_8098320: @ 8098320 + push {lr} + ldr r0, _0809833C @ =sub_80981AC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xFF + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809833C: .4byte sub_80981AC + thumb_func_end sub_8098320 + + thumb_func_start sub_8098340 +sub_8098340: @ 8098340 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r0, _08098378 @ =gUnknown_83D4164 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + movs r6, 0x1D + ldr r0, _0809837C @ =gUnknown_2036DFC + ldrb r0, [r0, 0x1A] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08098396 + cmp r0, 0x7F + beq _08098384 + ldr r2, [sp] + lsrs r1, r2, 24 + adds r1, 0x5 + lsls r1, 24 + ldr r0, _08098380 @ =0x00ffffff + ands r0, r2 + orrs r0, r1 + str r0, [sp] + movs r6, 0x27 + b _08098396 + .align 2, 0 +_08098378: .4byte gUnknown_83D4164 +_0809837C: .4byte gUnknown_2036DFC +_08098380: .4byte 0x00ffffff +_08098384: + ldr r2, [sp] + lsrs r1, r2, 24 + adds r1, 0x8 + lsls r1, 24 + ldr r0, _080983B4 @ =0x00ffffff + ands r0, r2 + orrs r0, r1 + str r0, [sp] + movs r6, 0x2D +_08098396: + mov r0, sp + bl sub_8003CE4 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0 + beq _080983B8 + movs r0, 0x3 + bl sub_8150408 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + b _080983C6 + .align 2, 0 +_080983B4: .4byte 0x00ffffff +_080983B8: + movs r0, 0x3 + bl sub_8150408 + ldr r1, _080983FC @ =gUnknown_2037398 + movs r2, 0x10 + bl CpuSet +_080983C6: + lsls r4, r5, 24 + lsrs r4, 24 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_814FF6C + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0xD + bl sub_8150048 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r5, 0 + bl sub_8098400 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + adds r0, r5, 0 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080983FC: .4byte gUnknown_2037398 + thumb_func_end sub_8098340 + + thumb_func_start sub_8098400 +sub_8098400: @ 8098400 + push {r4-r6,lr} + sub sp, 0x28 + lsls r0, 16 + lsrs r6, r0, 16 + movs r5, 0x70 + ldr r4, _08098478 @ =gUnknown_2036DFC + ldrb r1, [r4, 0x14] + add r0, sp, 0xC + movs r2, 0 + bl sub_80C4D78 + adds r2, r0, 0 + movs r0, 0x1A + ldrsb r0, [r4, r0] + cmp r0, 0 + beq _08098434 + adds r1, r0, 0 + adds r0, r2, 0 + bl sub_809847C + movs r0, 0x1A + ldrsb r0, [r4, r0] + movs r5, 0xB0 + cmp r0, 0x7F + beq _08098434 + movs r5, 0x98 +_08098434: + movs r2, 0x1 + negs r2, r2 + movs r0, 0x2 + add r1, sp, 0xC + bl sub_8005ED4 + adds r4, r0, 0 + subs r4, r5, r4 + lsrs r4, 1 + lsls r5, r6, 24 + lsrs r5, 24 + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x2 + add r2, sp, 0xC + adds r3, r4, 0 + bl sub_8002C48 + add sp, 0x28 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08098478: .4byte gUnknown_2036DFC + thumb_func_end sub_8098400 + + thumb_func_start sub_809847C +sub_809847C: @ 809847C + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r3, r1, 24 + asrs r1, 24 + cmp r1, 0 + beq _080984D2 + movs r0, 0 + strb r0, [r2] + adds r2, 0x1 + cmp r1, 0x7F + bne _080984A4 + ldr r1, _080984A0 @ =gUnknown_841D18D + adds r0, r2, 0 + bl sub_8008D84 + b _080984D2 + .align 2, 0 +_080984A0: .4byte gUnknown_841D18D +_080984A4: + cmp r1, 0 + bge _080984B4 + movs r0, 0xBC + strb r0, [r2] + adds r2, 0x1 + negs r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 +_080984B4: + lsls r1, r3, 24 + asrs r1, 24 + adds r0, r2, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + adds r2, r0, 0 + adds r1, r2, 0 + movs r0, 0xC0 + strb r0, [r2] + adds r2, 0x1 + movs r0, 0xFF + strb r0, [r1, 0x1] + adds r0, r2, 0 +_080984D2: + pop {r1} + bx r1 + thumb_func_end sub_809847C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/map_obj_80688E4.s b/asm/map_obj_80688E4.s new file mode 100644 index 000000000..7f2d06060 --- /dev/null +++ b/asm/map_obj_80688E4.s @@ -0,0 +1,1503 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80688E4 +sub_80688E4: @ 80688E4 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5] + movs r0, 0xA0 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _0806896C + ldrb r0, [r5, 0x1] + movs r4, 0x1 + orrs r0, r4 + strb r0, [r5, 0x1] + ldr r3, _08068968 @ =gUnknown_202063C + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x2C + ldrb r1, [r0] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 7 + ldrb r2, [r5, 0x2] + movs r0, 0x7F + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x2] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x2C + ldrb r1, [r0] + lsrs r1, 7 + ands r1, r4 + ldrb r2, [r5, 0x3] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + movs r0, 0 + b _0806896E + .align 2, 0 +_08068968: .4byte gUnknown_202063C +_0806896C: + movs r0, 0x1 +_0806896E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80688E4 + + thumb_func_start sub_8068974 +sub_8068974: @ 8068974 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _080689A8 @ =gUnknown_2036E38 +_0806897A: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08068998 + ldr r0, _080689AC @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + cmp r4, r0 + beq _08068998 + adds r0, r1, 0 + bl sub_80688E4 +_08068998: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0806897A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080689A8: .4byte gUnknown_2036E38 +_080689AC: .4byte gUnknown_2037078 + thumb_func_end sub_8068974 + + thumb_func_start sub_80689B0 +sub_80689B0: @ 80689B0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r6, _080689EC @ =gUnknown_2036E38 +_080689BA: + cmp r4, r5 + beq _080689DC + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r6 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _080689DC + ldr r0, _080689F0 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + cmp r4, r0 + beq _080689DC + adds r0, r1, 0 + bl sub_80688E4 +_080689DC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080689BA + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080689EC: .4byte gUnknown_2036E38 +_080689F0: .4byte gUnknown_2037078 + thumb_func_end sub_80689B0 + + thumb_func_start sub_80689F4 +sub_80689F4: @ 80689F4 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r2, [r5] + ldr r1, _08068A54 @ =0x00000101 + adds r0, r1, 0 + ands r0, r2 + cmp r0, r1 + bne _08068A4C + ldrb r1, [r5, 0x1] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + ldr r4, _08068A58 @ =gUnknown_202063C + ldrb r0, [r5, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r5, 0x2] + adds r1, 0x2C + lsrs r2, 7 + lsls r2, 6 + ldrb r3, [r1] + movs r0, 0x41 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1] + ldrb r0, [r5, 0x4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + ldrb r1, [r5, 0x3] + lsls r1, 31 + lsrs r1, 31 + adds r2, 0x2C + lsls r1, 7 + ldrb r3, [r2] + movs r0, 0x7F + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_08068A4C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08068A54: .4byte 0x00000101 +_08068A58: .4byte gUnknown_202063C + thumb_func_end sub_80689F4 + + thumb_func_start sub_8068A5C +sub_8068A5C: @ 8068A5C + push {r4,r5,lr} + movs r4, 0 + ldr r5, _08068A88 @ =gUnknown_2036E38 +_08068A62: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08068A78 + adds r0, r1, 0 + bl sub_80689F4 +_08068A78: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08068A62 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08068A88: .4byte gUnknown_2036E38 + thumb_func_end sub_8068A5C + + thumb_func_start sub_8068A8C +sub_8068A8C: @ 8068A8C + lsls r1, 24 + ldr r2, _08068AA8 @ =gUnknown_83A64C8 + lsrs r1, 22 + adds r1, r2 + ldrh r2, [r1] + ldrh r3, [r0, 0x20] + adds r2, r3 + strh r2, [r0, 0x20] + ldrh r1, [r1, 0x2] + ldrh r2, [r0, 0x22] + adds r1, r2 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08068AA8: .4byte gUnknown_83A64C8 + thumb_func_end sub_8068A8C + + thumb_func_start sub_8068AAC +sub_8068AAC: @ 8068AAC + lsls r1, 24 + ldr r2, _08068ACC @ =gUnknown_83A64C8 + lsrs r1, 22 + adds r1, r2 + ldrh r2, [r1] + lsls r2, 1 + ldrh r3, [r0, 0x20] + adds r2, r3 + strh r2, [r0, 0x20] + ldrh r1, [r1, 0x2] + lsls r1, 1 + ldrh r2, [r0, 0x22] + adds r1, r2 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08068ACC: .4byte gUnknown_83A64C8 + thumb_func_end sub_8068AAC + + thumb_func_start sub_8068AD0 +sub_8068AD0: @ 8068AD0 + lsls r1, 24 + ldr r2, _08068AF4 @ =gUnknown_83A64C8 + lsrs r1, 22 + adds r1, r2 + ldrh r2, [r1] + lsls r3, r2, 1 + adds r2, r3 + ldrh r3, [r0, 0x20] + adds r2, r3 + strh r2, [r0, 0x20] + ldrh r1, [r1, 0x2] + lsls r2, r1, 1 + adds r1, r2 + ldrh r2, [r0, 0x22] + adds r1, r2 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08068AF4: .4byte gUnknown_83A64C8 + thumb_func_end sub_8068AD0 + + thumb_func_start sub_8068AF8 +sub_8068AF8: @ 8068AF8 + lsls r1, 24 + ldr r2, _08068B18 @ =gUnknown_83A64C8 + lsrs r1, 22 + adds r1, r2 + ldrh r2, [r1] + lsls r2, 2 + ldrh r3, [r0, 0x20] + adds r2, r3 + strh r2, [r0, 0x20] + ldrh r1, [r1, 0x2] + lsls r1, 2 + ldrh r2, [r0, 0x22] + adds r1, r2 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08068B18: .4byte gUnknown_83A64C8 + thumb_func_end sub_8068AF8 + + thumb_func_start sub_8068B1C +sub_8068B1C: @ 8068B1C + lsls r1, 24 + ldr r2, _08068B3C @ =gUnknown_83A64C8 + lsrs r1, 22 + adds r1, r2 + ldrh r2, [r1] + lsls r2, 3 + ldrh r3, [r0, 0x20] + adds r2, r3 + strh r2, [r0, 0x20] + ldrh r1, [r1, 0x2] + lsls r1, 3 + ldrh r2, [r0, 0x22] + adds r1, r2 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08068B3C: .4byte gUnknown_83A64C8 + thumb_func_end sub_8068B1C + + thumb_func_start sub_8068B40 +sub_8068B40: @ 8068B40 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0 + strh r1, [r0, 0x34] + strh r2, [r0, 0x36] + strh r3, [r0, 0x38] + bx lr + thumb_func_end sub_8068B40 + + thumb_func_start sub_8068B54 +sub_8068B54: @ 8068B54 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _08068BAC @ =gUnknown_83A71B0 + movs r0, 0x36 + ldrsh r2, [r4, r0] + lsls r0, r2, 1 + adds r0, r5 + movs r3, 0x38 + ldrsh r1, [r4, r3] + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _08068BB4 + ldr r1, _08068BB0 @ =gUnknown_83A719C + lsls r0, r2, 2 + adds r0, r1 + movs r1, 0x38 + ldrsh r2, [r4, r1] + ldr r0, [r0] + lsls r2, 2 + adds r2, r0 + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + movs r2, 0x36 + ldrsh r1, [r4, r2] + lsls r1, 1 + adds r1, r5 + lsls r0, 16 + asrs r0, 16 + movs r3, 0 + ldrsh r1, [r1, r3] + cmp r0, r1 + blt _08068BB4 + movs r0, 0x1 + b _08068BB6 + .align 2, 0 +_08068BAC: .4byte gUnknown_83A71B0 +_08068BB0: .4byte gUnknown_83A719C +_08068BB4: + movs r0, 0 +_08068BB6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8068B54 + + thumb_func_start sub_8068BBC +sub_8068BBC: @ 8068BBC + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r1, [r0, 0x34] + strh r2, [r0, 0x36] + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_8068BBC + + thumb_func_start sub_8068BCC +sub_8068BCC: @ 8068BCC + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x36] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08068BEC + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068A8C + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] +_08068BEC: + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0xF + bgt _08068BFE + movs r0, 0 + b _08068C00 +_08068BFE: + movs r0, 0x1 +_08068C00: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8068BCC + + thumb_func_start sub_8068C08 +sub_8068C08: @ 8068C08 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r1, [r0, 0x34] + strh r2, [r0, 0x36] + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_8068C08 + + thumb_func_start sub_8068C18 +sub_8068C18: @ 8068C18 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bgt _08068C3E + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068A8C + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _08068C42 +_08068C3E: + movs r0, 0 + strh r0, [r4, 0x36] +_08068C42: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0xF + bgt _08068C4E + movs r0, 0 + b _08068C50 +_08068C4E: + movs r0, 0x1 +_08068C50: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8068C18 + + thumb_func_start sub_8068C58 +sub_8068C58: @ 8068C58 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r1, [r0, 0x34] + strh r2, [r0, 0x36] + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_8068C58 + + thumb_func_start sub_8068C68 +sub_8068C68: @ 8068C68 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _08068C90 + movs r0, 0 + strh r0, [r4, 0x36] + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068A8C + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] +_08068C90: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0xF + bgt _08068C9C + movs r0, 0 + b _08068C9E +_08068C9C: + movs r0, 0x1 +_08068C9E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8068C68 + + thumb_func_start sub_8068CA4 +sub_8068CA4: @ 8068CA4 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r1, [r0, 0x34] + strh r2, [r0, 0x36] + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_8068CA4 + + thumb_func_start sub_8068CB4 +sub_8068CB4: @ 8068CB4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08068CD8 + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068A8C + ldrh r0, [r4, 0x38] + adds r0, 0x1 + b _08068CE8 +_08068CD8: + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068AAC + ldrh r0, [r4, 0x38] + adds r0, 0x2 +_08068CE8: + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0xF + bgt _08068CF6 + movs r0, 0 + b _08068CF8 +_08068CF6: + movs r0, 0x1 +_08068CF8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8068CB4 + + thumb_func_start sub_8068D00 +sub_8068D00: @ 8068D00 + lsls r1, 24 + ldr r2, _08068D18 @ =gUnknown_83A71EC + lsrs r1, 22 + adds r1, r2 + lsls r0, 16 + asrs r0, 16 + ldr r1, [r1] + adds r1, r0 + movs r0, 0 + ldrsb r0, [r1, r0] + bx lr + .align 2, 0 +_08068D18: .4byte gUnknown_83A71EC + thumb_func_end sub_8068D00 + + thumb_func_start sub_8068D1C +sub_8068D1C: @ 8068D1C + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + movs r4, 0 + strh r1, [r0, 0x34] + strh r2, [r0, 0x36] + strh r3, [r0, 0x38] + strh r4, [r0, 0x3A] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8068D1C + + thumb_func_start sub_8068D3C +sub_8068D3C: @ 8068D3C + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r1, _08068DBC @ =gUnknown_83A71F8 + mov r0, sp + movs r2, 0x6 + bl memcpy + add r5, sp, 0x8 + ldr r1, _08068DC0 @ =gUnknown_83A71FE + adds r0, r5, 0 + movs r2, 0x3 + bl memcpy + movs r6, 0 + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08068D6E + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068A8C +_08068D6E: + movs r2, 0x3A + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + adds r1, r5, r1 + ldrb r1, [r1] + asrs r0, r1 + ldrh r1, [r4, 0x38] + lsls r1, 24 + lsrs r1, 24 + bl sub_8068D00 + strh r0, [r4, 0x26] + ldrh r1, [r4, 0x3A] + adds r1, 0x1 + strh r1, [r4, 0x3A] + movs r2, 0x36 + ldrsh r0, [r4, r2] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + lsls r0, 16 + asrs r2, r0, 16 + lsls r1, 16 + asrs r1, 16 + asrs r0, 17 + cmp r1, r0 + bne _08068DA8 + movs r6, 0x1 +_08068DA8: + cmp r1, r2 + blt _08068DB2 + movs r0, 0 + strh r0, [r4, 0x26] + movs r6, 0xFF +_08068DB2: + adds r0, r6, 0 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08068DBC: .4byte gUnknown_83A71F8 +_08068DC0: .4byte gUnknown_83A71FE + thumb_func_end sub_8068D3C + + thumb_func_start sub_8068DC4 +sub_8068DC4: @ 8068DC4 + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + ldr r1, _08068E50 @ =gUnknown_83A7202 + mov r0, sp + movs r2, 0x6 + bl memcpy + add r4, sp, 0x8 + ldr r1, _08068E54 @ =gUnknown_83A7208 + adds r0, r4, 0 + movs r2, 0x3 + bl memcpy + movs r6, 0 + movs r1, 0x36 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08068E00 + ldrh r1, [r5, 0x3A] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08068E00 + ldrh r1, [r5, 0x34] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8068A8C +_08068E00: + movs r2, 0x3A + ldrsh r0, [r5, r2] + movs r2, 0x36 + ldrsh r1, [r5, r2] + adds r1, r4, r1 + ldrb r1, [r1] + asrs r0, r1 + ldrh r1, [r5, 0x38] + lsls r1, 24 + lsrs r1, 24 + bl sub_8068D00 + strh r0, [r5, 0x26] + ldrh r1, [r5, 0x3A] + adds r1, 0x1 + strh r1, [r5, 0x3A] + movs r2, 0x36 + ldrsh r0, [r5, r2] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + lsls r0, 16 + asrs r2, r0, 16 + lsls r1, 16 + asrs r1, 16 + asrs r0, 17 + cmp r1, r0 + bne _08068E3A + movs r6, 0x1 +_08068E3A: + cmp r1, r2 + blt _08068E44 + movs r0, 0 + strh r0, [r5, 0x26] + movs r6, 0xFF +_08068E44: + adds r0, r6, 0 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08068E50: .4byte gUnknown_83A7202 +_08068E54: .4byte gUnknown_83A7208 + thumb_func_end sub_8068DC4 + + thumb_func_start sub_8068E58 +sub_8068E58: @ 8068E58 + strh r1, [r0, 0x34] + bx lr + thumb_func_end sub_8068E58 + + thumb_func_start sub_8068E5C +sub_8068E5C: @ 8068E5C + push {lr} + ldrh r1, [r0, 0x34] + subs r1, 0x1 + strh r1, [r0, 0x34] + lsls r1, 16 + cmp r1, 0 + beq _08068E6E + movs r0, 0 + b _08068E70 +_08068E6E: + movs r0, 0x1 +_08068E70: + pop {r1} + bx r1 + thumb_func_end sub_8068E5C + + thumb_func_start sub_8068E74 +sub_8068E74: @ 8068E74 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + adds r3, r0, 0 + adds r3, 0x2A + strb r1, [r3] + adds r4, r0, 0 + adds r4, 0x2C + ldrb r3, [r4] + movs r1, 0x41 + negs r1, r1 + ands r1, r3 + strb r1, [r4] + adds r1, r2, 0 + bl sub_80083C0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8068E74 + + thumb_func_start sub_8068E9C +sub_8068E9C: @ 8068E9C + push {lr} + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08068EAE + movs r0, 0 + b _08068EB0 +_08068EAE: + movs r0, 0x1 +_08068EB0: + pop {r1} + bx r1 + thumb_func_end sub_8068E9C + + thumb_func_start sub_8068EB4 +sub_8068EB4: @ 8068EB4 + push {r4-r6,lr} + mov r12, r0 + lsls r1, 24 + lsrs r1, 24 + mov r3, r12 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08068F1C + mov r0, r12 + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + mov r4, r12 + adds r4, 0x28 + movs r0, 0 + ldrsb r0, [r4, r0] + ldr r2, _08068F14 @ =gUnknown_2021BC8 + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + lsrs r6, r0, 16 + mov r0, r12 + ldrh r1, [r0, 0x26] + ldrh r2, [r0, 0x22] + adds r1, r2 + subs r3, 0x15 + movs r0, 0 + ldrsb r0, [r3, r0] + ldr r2, _08068F18 @ =gUnknown_2021BCA + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + lsrs r5, r0, 16 + adds r2, r3, 0 + b _08068F4A + .align 2, 0 +_08068F14: .4byte gUnknown_2021BC8 +_08068F18: .4byte gUnknown_2021BCA +_08068F1C: + mov r0, r12 + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + mov r3, r12 + adds r3, 0x28 + movs r0, 0 + ldrsb r0, [r3, r0] + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + mov r0, r12 + ldrh r1, [r0, 0x26] + ldrh r2, [r0, 0x22] + adds r1, r2 + mov r2, r12 + adds r2, 0x29 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, r3, 0 +_08068F4A: + ldrb r0, [r4] + lsls r0, 24 + asrs r0, 25 + subs r0, r6, r0 + lsls r0, 16 + lsrs r3, r0, 16 + ldrb r0, [r2] + lsls r0, 24 + asrs r0, 25 + subs r0, r5, r0 + lsls r0, 16 + lsrs r2, r0, 16 + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, 0xFF + bgt _08068F76 + lsls r0, r3, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _08068F82 +_08068F76: + mov r4, r12 + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] +_08068F82: + lsls r0, r5, 16 + asrs r0, 16 + cmp r0, 0xAF + bgt _08068F96 + lsls r0, r2, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _08068FA2 +_08068F96: + mov r0, r12 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_08068FA2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8068EB4 + + thumb_func_start sub_8068FA8 +sub_8068FA8: @ 8068FA8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069248 + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80682F8 + ldrh r1, [r4, 0x32] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8068EB4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8068FA8 + + thumb_func_start sub_8068FD0 +sub_8068FD0: @ 8068FD0 + push {r4,r5,lr} + movs r5, 0 + movs r4, 0x3F +_08068FD6: + ldr r0, _08069004 @ =gUnknown_202063C + adds r2, r5, r0 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08068FF6 + ldr r1, [r2, 0x1C] + ldr r0, _08069008 @ =sub_8068FA8 + cmp r1, r0 + bne _08068FF6 + adds r0, r2, 0 + bl sub_8007280 +_08068FF6: + adds r5, 0x44 + subs r4, 0x1 + cmp r4, 0 + bge _08068FD6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069004: .4byte gUnknown_202063C +_08069008: .4byte sub_8068FA8 + thumb_func_end sub_8068FD0 + + thumb_func_start sub_806900C +sub_806900C: @ 806900C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0 + ldr r6, _08069040 @ =gUnknown_202063C + movs r4, 0 +_08069018: + adds r2, r4, r6 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08069048 + ldr r1, [r2, 0x1C] + ldr r0, _08069044 @ =sub_8068FA8 + cmp r1, r0 + bne _08069048 + ldrh r0, [r2, 0x2E] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bne _08069048 + adds r0, r3, 0 + b _08069052 + .align 2, 0 +_08069040: .4byte gUnknown_202063C +_08069044: .4byte sub_8068FA8 +_08069048: + adds r4, 0x44 + adds r3, 0x1 + cmp r3, 0x3F + ble _08069018 + movs r0, 0x40 +_08069052: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806900C + + thumb_func_start sub_8069058 +sub_8069058: @ 8069058 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_806900C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0806908A + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08069090 @ =gUnknown_202063C + adds r4, r0 + adds r0, r5, 0 + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C +_0806908A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069090: .4byte gUnknown_202063C + thumb_func_end sub_8069058 + + thumb_func_start sub_8069094 +sub_8069094: @ 8069094 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_806900C + adds r1, r0, 0 + cmp r1, 0x40 + beq _0806911E + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080690F8 @ =gUnknown_202063C + adds r4, r0, r1 + adds r0, r5, 0 + bl sub_805F2C8 + ldrh r3, [r4, 0x4] + lsls r3, 22 + ldr r1, [r0, 0x10] + ldr r2, [r1, 0x4] + ldr r1, [r1] + str r1, [r4] + str r2, [r4, 0x4] + lsrs r3, 22 + ldrh r2, [r4, 0x4] + ldr r1, _080690FC @ =0xfffffc00 + ands r1, r2 + orrs r1, r3 + strh r1, [r4, 0x4] + ldrb r2, [r0, 0xC] + lsls r2, 28 + lsrs r2, 24 + ldrb r3, [r4, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r2 + strb r1, [r4, 0x5] + ldr r1, [r0, 0x1C] + str r1, [r4, 0xC] + ldr r1, [r0, 0x14] + cmp r1, 0 + bne _08069100 + str r1, [r4, 0x18] + adds r0, r4, 0 + adds r0, 0x42 + strb r1, [r0] + b _08069116 + .align 2, 0 +_080690F8: .4byte gUnknown_202063C +_080690FC: .4byte 0xfffffc00 +_08069100: + adds r0, r4, 0 + bl sub_8008A58 + adds r2, r4, 0 + adds r2, 0x42 + ldrb r0, [r2] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r2] +_08069116: + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C +_0806911E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8069094 + + thumb_func_start sub_8069124 +sub_8069124: @ 8069124 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + bl sub_806900C + lsls r0, 24 + lsrs r2, r0, 24 + adds r3, r2, 0 + cmp r2, 0x40 + beq _08069160 + cmp r4, 0 + beq _08069154 + ldr r0, _08069150 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x32] + b _08069160 + .align 2, 0 +_08069150: .4byte gUnknown_202063C +_08069154: + ldr r1, _08069168 @ =gUnknown_202063C + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + strh r4, [r0, 0x32] +_08069160: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08069168: .4byte gUnknown_202063C + thumb_func_end sub_8069124 + + thumb_func_start sub_806916C +sub_806916C: @ 806916C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_806900C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + bne _08069182 + movs r0, 0 + b _0806919A +_08069182: + movs r3, 0 + ldr r0, _080691A0 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r2, 0x32 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _08069198 + movs r3, 0x1 +_08069198: + adds r0, r3, 0 +_0806919A: + pop {r1} + bx r1 + .align 2, 0 +_080691A0: .4byte gUnknown_202063C + thumb_func_end sub_806916C + + thumb_func_start sub_80691A4 +sub_80691A4: @ 80691A4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_806900C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080691CA + ldr r0, _080691D0 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r0, 0 + strh r4, [r1, 0x34] + strh r0, [r1, 0x36] +_080691CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080691D0: .4byte gUnknown_202063C + thumb_func_end sub_80691A4 + + thumb_func_start sub_80691D4 +sub_80691D4: @ 80691D4 + push {lr} + adds r2, r0, 0 + movs r1, 0x36 + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080691E6 + cmp r0, 0x1 + beq _080691EE + b _0806920C +_080691E6: + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x36] + adds r0, 0x1 + strh r0, [r2, 0x36] +_080691EE: + ldrh r0, [r2, 0x26] + subs r0, 0x8 + movs r3, 0 + strh r0, [r2, 0x26] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xA0 + negs r1, r1 + cmp r0, r1 + bne _0806920C + strh r3, [r2, 0x26] + movs r0, 0x1 + strh r0, [r2, 0x32] + strh r3, [r2, 0x34] + strh r3, [r2, 0x36] +_0806920C: + pop {r0} + bx r0 + thumb_func_end sub_80691D4 + + thumb_func_start sub_8069210 +sub_8069210: @ 8069210 + push {lr} + adds r1, r0, 0 + movs r2, 0x36 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _08069222 + cmp r0, 0x1 + beq _0806922C + b _0806923E +_08069222: + ldr r0, _08069244 @ =0x0000ff60 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x36] + adds r0, 0x1 + strh r0, [r1, 0x36] +_0806922C: + ldrh r0, [r1, 0x26] + adds r0, 0x8 + strh r0, [r1, 0x26] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _0806923E + strh r0, [r1, 0x34] + strh r0, [r1, 0x36] +_0806923E: + pop {r0} + bx r0 + .align 2, 0 +_08069244: .4byte 0x0000ff60 + thumb_func_end sub_8069210 + + thumb_func_start sub_8069248 +sub_8069248: @ 8069248 + push {lr} + adds r1, r0, 0 + movs r2, 0x34 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _08069264 + cmp r0, 0x1 + bgt _0806925E + cmp r0, 0 + beq _08069284 + b _08069274 +_0806925E: + cmp r0, 0x2 + beq _0806926C + b _08069274 +_08069264: + adds r0, r1, 0 + bl sub_8069210 + b _08069284 +_0806926C: + adds r0, r1, 0 + bl sub_80691D4 + b _08069284 +_08069274: + movs r0, 0 + strh r0, [r1, 0x34] + ldr r0, _08069288 @ =gUnknown_83A720C + ldr r1, _0806928C @ =0x00003413 + ldr r2, _08069290 @ =gUnknown_83A7240 + movs r3, 0x1 + bl AGBAssert +_08069284: + pop {r0} + bx r0 + .align 2, 0 +_08069288: .4byte gUnknown_83A720C +_0806928C: .4byte 0x00003413 +_08069290: .4byte gUnknown_83A7240 + thumb_func_end sub_8069248 + + thumb_func_start sub_8069294 +sub_8069294: @ 8069294 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_806900C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080692B8 + ldr r0, _080692BC @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r2, 0x34 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080692C0 +_080692B8: + movs r0, 0 + b _080692C2 + .align 2, 0 +_080692BC: .4byte gUnknown_202063C +_080692C0: + movs r0, 0x1 +_080692C2: + pop {r1} + bx r1 + thumb_func_end sub_8069294 + + thumb_func_start sub_80692C8 +sub_80692C8: @ 80692C8 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080692EC @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl sub_805F364 + adds r0, r4, 0 + bl sub_8083444 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080692EC: .4byte gUnknown_20386E0 + thumb_func_end sub_80692C8 + + thumb_func_start sub_80692F0 +sub_80692F0: @ 80692F0 + push {lr} + adds r1, r0, 0 + ldrb r2, [r1, 0x2] + lsls r0, r2, 25 + cmp r0, 0 + blt _08069308 + movs r0, 0x40 + orrs r0, r2 + strb r0, [r1, 0x2] + movs r0, 0x3 + bl sub_80692C8 +_08069308: + pop {r0} + bx r0 + thumb_func_end sub_80692F0 + + thumb_func_start sub_806930C +sub_806930C: @ 806930C + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x5] + bl sub_805F2C8 + ldr r2, _08069344 @ =gUnknown_20386E0 + movs r3, 0x20 + ldrsh r1, [r4, r3] + str r1, [r2] + movs r3, 0x22 + ldrsh r1, [r4, r3] + ldrh r0, [r0, 0xA] + lsls r0, 16 + asrs r0, 17 + adds r1, r0 + subs r1, 0x2 + str r1, [r2, 0x4] + movs r0, 0x97 + str r0, [r2, 0x8] + movs r0, 0x3 + str r0, [r2, 0xC] + movs r0, 0x5 + bl sub_8083444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08069344: .4byte gUnknown_20386E0 + thumb_func_end sub_806930C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s new file mode 100644 index 000000000..8d1d027ff --- /dev/null +++ b/asm/map_obj_lock.s @@ -0,0 +1,302 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8069554 +sub_8069554: @ 8069554 + push {lr} + ldr r0, _08069564 @ =gUnknown_2037078 + ldrb r0, [r0, 0x3] + cmp r0, 0x1 + beq _08069568 + movs r0, 0x1 + b _0806956A + .align 2, 0 +_08069564: .4byte gUnknown_2037078 +_08069568: + movs r0, 0 +_0806956A: + pop {r1} + bx r1 + thumb_func_end sub_8069554 + + thumb_func_start sub_8069570 +sub_8069570: @ 8069570 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8069554 + lsls r0, 24 + cmp r0, 0 + beq _0806958A + bl sub_805C270 + adds r0, r4, 0 + bl sub_8077508 +_0806958A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8069570 + + thumb_func_start sub_8069590 +sub_8069590: @ 8069590 + push {lr} + ldr r0, _080695A8 @ =sub_8069570 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _080695AC + bl sub_805C780 + movs r0, 0x1 + b _080695AE + .align 2, 0 +_080695A8: .4byte sub_8069570 +_080695AC: + movs r0, 0 +_080695AE: + pop {r1} + bx r1 + thumb_func_end sub_8069590 + + thumb_func_start sub_80695B4 +sub_80695B4: @ 80695B4 + push {lr} + bl sub_8068974 + ldr r0, _080695C8 @ =sub_8069570 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_080695C8: .4byte sub_8069570 + thumb_func_end sub_80695B4 + + thumb_func_start sub_80695CC +sub_80695CC: @ 80695CC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0806963C @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080695F6 + bl sub_8069554 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _080695F6 + bl sub_805C270 + strh r4, [r5, 0x8] +_080695F6: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0806961E + ldr r2, _08069640 @ =gUnknown_2036E38 + ldr r0, _08069644 @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _0806961E + adds r0, r1, 0 + bl sub_80688E4 + movs r0, 0x1 + strh r0, [r5, 0xA] +_0806961E: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08069634 + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08069634 + adds r0, r6, 0 + bl sub_8077508 +_08069634: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806963C: .4byte gUnknown_3005090 +_08069640: .4byte gUnknown_2036E38 +_08069644: .4byte gUnknown_3005074 + thumb_func_end sub_80695CC + + thumb_func_start sub_8069648 +sub_8069648: @ 8069648 + push {lr} + ldr r0, _08069660 @ =sub_80695CC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08069664 + bl sub_805C780 + movs r0, 0x1 + b _08069666 + .align 2, 0 +_08069660: .4byte sub_80695CC +_08069664: + movs r0, 0 +_08069666: + pop {r1} + bx r1 + thumb_func_end sub_8069648 + + thumb_func_start sub_806966C +sub_806966C: @ 806966C + push {r4,r5,lr} + ldr r4, _080696B0 @ =gUnknown_3005074 + ldrb r0, [r4] + bl sub_80689B0 + ldr r0, _080696B4 @ =sub_80695CC + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _080696B8 @ =gUnknown_2036E38 + ldrb r1, [r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _080696AA + adds r0, r1, 0 + bl sub_80688E4 + ldr r0, _080696BC @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0xA] +_080696AA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080696B0: .4byte gUnknown_3005074 +_080696B4: .4byte sub_80695CC +_080696B8: .4byte gUnknown_2036E38 +_080696BC: .4byte gUnknown_3005090 + thumb_func_end sub_806966C + + thumb_func_start sub_80696C0 +sub_80696C0: @ 80696C0 + push {lr} + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080696EC @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + bl sub_80974D8 + bl sub_8068A5C + pop {r0} + bx r0 + .align 2, 0 +_080696EC: .4byte gUnknown_2036E38 + thumb_func_end sub_80696C0 + + thumb_func_start sub_80696F0 +sub_80696F0: @ 80696F0 + push {r4,lr} + ldr r4, _08069738 @ =gUnknown_2036E38 + ldr r0, _0806973C @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0806970E + adds r0, r1, 0 + bl sub_8063D7C +_0806970E: + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8063D7C + bl sub_80974D8 + bl sub_8068A5C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08069738: .4byte gUnknown_2036E38 +_0806973C: .4byte gUnknown_3005074 + thumb_func_end sub_80696F0 + + thumb_func_start sub_8069740 +sub_8069740: @ 8069740 + push {lr} + ldr r0, _0806975C @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08069760 @ =gUnknown_2036E38 + adds r0, r1 + ldr r1, _08069764 @ =gUnknown_20370D4 + ldrb r1, [r1] + bl sub_80642C8 + pop {r0} + bx r0 + .align 2, 0 +_0806975C: .4byte gUnknown_3005074 +_08069760: .4byte gUnknown_2036E38 +_08069764: .4byte gUnknown_20370D4 + thumb_func_end sub_8069740 + + thumb_func_start sub_8069768 +sub_8069768: @ 8069768 + push {lr} + ldr r0, _08069780 @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08069784 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D1C + pop {r0} + bx r0 + .align 2, 0 +_08069780: .4byte gUnknown_3005074 +_08069784: .4byte gUnknown_2036E38 + thumb_func_end sub_8069768 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/map_preview_screen.s b/asm/map_preview_screen.s new file mode 100644 index 000000000..27a66719d --- /dev/null +++ b/asm/map_preview_screen.s @@ -0,0 +1,657 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F80E4 +sub_80F80E4: @ 80F80E4 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r1, 0 + ldr r2, _080F80FC @ =gUnknown_843E9E8 +_080F80EE: + ldrb r0, [r2] + cmp r0, r3 + bne _080F8100 + lsls r0, r1, 24 + lsrs r0, 24 + b _080F810A + .align 2, 0 +_080F80FC: .4byte gUnknown_843E9E8 +_080F8100: + adds r2, 0x10 + adds r1, 0x1 + cmp r1, 0x1B + bls _080F80EE + movs r0, 0x1C +_080F810A: + pop {r1} + bx r1 + thumb_func_end sub_80F80E4 + + thumb_func_start sub_80F8110 +sub_80F8110: @ 80F8110 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + bl sub_80F80E4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r1, 0x1C + beq _080F814C + cmp r4, 0x2 + bne _080F8132 + movs r0, 0x1 + b _080F814E +_080F8132: + movs r2, 0 + ldr r0, _080F8148 @ =gUnknown_843E9E8 + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, r5 + bne _080F8142 + movs r2, 0x1 +_080F8142: + adds r0, r2, 0 + b _080F814E + .align 2, 0 +_080F8148: .4byte gUnknown_843E9E8 +_080F814C: + movs r0, 0 +_080F814E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80F8110 + + thumb_func_start sub_80F8154 +sub_80F8154: @ 80F8154 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _080F8174 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _080F8178 + adds r0, r2, 0 + bl sub_80F8110 + lsls r0, 24 + lsrs r0, 24 + b _080F817A + .align 2, 0 +_080F8174: .4byte gUnknown_203ADFA +_080F8178: + movs r0, 0 +_080F817A: + pop {r1} + bx r1 + thumb_func_end sub_80F8154 + + thumb_func_start sub_80F8180 +sub_80F8180: @ 80F8180 + push {lr} + ldr r1, _080F8198 @ =gUnknown_843EBB0 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + movs r0, 0 + bl sub_80019BC + pop {r0} + bx r0 + .align 2, 0 +_080F8198: .4byte gUnknown_843EBB0 + thumb_func_end sub_80F8180 + + thumb_func_start sub_80F819C +sub_80F819C: @ 80F819C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80F80E4 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1C + beq _080F8224 + bl sub_80F6808 + ldr r4, _080F8200 @ =gUnknown_843E9E8 + lsls r5, 4 + adds r0, r4, 0 + adds r0, 0xC + adds r0, r5, r0 + ldr r0, [r0] + movs r1, 0xD0 + movs r2, 0x60 + bl sub_80703EC + adds r4, 0x4 + adds r4, r5, r4 + ldr r1, [r4] + movs r4, 0 + str r4, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + movs r0, 0 + bl sub_8002008 + cmp r0, 0 + bne _080F8208 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + ldr r1, _080F8204 @ =gUnknown_203ABED + movs r0, 0x1 + strb r0, [r1] + b _080F820C + .align 2, 0 +_080F8200: .4byte gUnknown_843E9E8 +_080F8204: .4byte gUnknown_203ABED +_080F8208: + ldr r0, _080F822C @ =gUnknown_203ABED + strb r4, [r0] +_080F820C: + ldr r0, _080F8230 @ =gUnknown_843E9E8 + adds r0, 0x8 + adds r0, r5, r0 + ldr r1, [r0] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0 + bl sub_80020BC +_080F8224: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F822C: .4byte gUnknown_203ABED +_080F8230: .4byte gUnknown_843E9E8 + thumb_func_end sub_80F819C + + thumb_func_start sub_80F8234 +sub_80F8234: @ 80F8234 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8003E3C + ldr r0, _080F8254 @ =gUnknown_203ABED + ldrb r0, [r0] + cmp r0, 0 + beq _080F8250 + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 +_080F8250: + pop {r0} + bx r0 + .align 2, 0 +_080F8254: .4byte gUnknown_203ABED + thumb_func_end sub_80F8234 + + thumb_func_start sub_80F8258 +sub_80F8258: @ 80F8258 + push {lr} + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80F8258 + + thumb_func_start sub_80F8268 +sub_80F8268: @ 80F8268 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _080F8308 @ =sub_80F83D0 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0x7 + bl sub_8001AA8 + ldr r1, _080F830C @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r5, r1 + movs r4, 0 + strh r0, [r5, 0xC] + movs r0, 0x50 + bl sub_8000AC4 + strh r0, [r5, 0x10] + movs r0, 0x52 + bl sub_8000AC4 + strh r0, [r5, 0x12] + movs r0, 0 + bl sub_8000AC4 + strh r0, [r5, 0xE] + movs r0, 0x48 + bl sub_8000AC4 + strh r0, [r5, 0x14] + movs r0, 0x4A + bl sub_8000AC4 + strh r0, [r5, 0x16] + adds r0, r6, 0 + bl sub_80F856C + strh r0, [r5, 0x1C] + movs r0, 0x10 + strh r0, [r5, 0x18] + strh r4, [r5, 0x1A] + movs r0, 0 + movs r1, 0x7 + movs r2, 0 + bl sub_80019E4 + ldr r1, _080F8310 @ =0x00003e41 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + ldr r1, _080F8314 @ =0x00002020 + movs r0, 0x48 + bl sub_8000AF4 + movs r0, 0x4A + movs r1, 0x20 + bl sub_8000AF4 + adds r0, r6, 0 + bl sub_80F8318 + strh r0, [r5, 0x1E] + bl sub_8069940 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080F8308: .4byte sub_80F83D0 +_080F830C: .4byte gUnknown_3005090 +_080F8310: .4byte 0x00003e41 +_080F8314: .4byte 0x00002020 + thumb_func_end sub_80F8268 + + thumb_func_start sub_80F8318 +sub_80F8318: @ 80F8318 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080F83A8 @ =gUnknown_843EBA8 + bl sub_8003CE4 + mov r8, r0 + mov r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r6, r0, 24 + lsrs r6, 24 + adds r0, r6, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r6, 0 + bl sub_8003FA0 + add r1, sp, 0x14 + movs r0, 0 + mov r9, r0 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + movs r0, 0x3 + strb r0, [r1, 0x2] + ldr r5, _080F83AC @ =gUnknown_2021D18 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_80C4D78 + movs r0, 0x2 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0x68 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + mov r0, r9 + str r0, [sp] + str r0, [sp, 0x4] + add r0, sp, 0x14 + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + str r5, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0x2 + bl sub_812E5A4 + mov r0, r8 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080F83A8: .4byte gUnknown_843EBA8 +_080F83AC: .4byte gUnknown_2021D18 + thumb_func_end sub_80F8318 + + thumb_func_start sub_80F83B0 +sub_80F83B0: @ 80F83B0 + push {lr} + ldr r0, _080F83C4 @ =sub_80F83D0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080F83C8 + movs r0, 0x1 + b _080F83CA + .align 2, 0 +_080F83C4: .4byte sub_80F83D0 +_080F83C8: + movs r0, 0 +_080F83CA: + pop {r1} + bx r1 + thumb_func_end sub_80F83B0 + + thumb_func_start sub_80F83D0 +sub_80F83D0: @ 80F83D0 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080F83F8 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080F83EC + b _080F853C +_080F83EC: + lsls r0, 2 + ldr r1, _080F83FC @ =_080F8400 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F83F8: .4byte gUnknown_3005098 +_080F83FC: .4byte _080F8400 + .align 2, 0 +_080F8400: + .4byte _080F8418 + .4byte _080F8438 + .4byte _080F8448 + .4byte _080F8458 + .4byte _080F8470 + .4byte _080F84F2 +_080F8418: + bl sub_80F8258 + cmp r0, 0 + beq _080F8422 + b _080F853C +_080F8422: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _080F842E + b _080F853C +_080F842E: + ldrb r0, [r4, 0x16] + movs r1, 0x3 + bl sub_8003F20 + b _080F84EA +_080F8438: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080F853C + bl sub_807DC00 + b _080F84EA +_080F8448: + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _080F853C + bl sub_8055DC4 + b _080F84EA +_080F8458: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x14 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080F853C + movs r0, 0 + strh r0, [r4, 0x2] + b _080F84EA +_080F8470: + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080F847E + cmp r0, 0x1 + beq _080F8492 + b _080F84A2 +_080F847E: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080F84A2 + movs r0, 0x10 + strh r0, [r4, 0x12] + b _080F84A2 +_080F8492: + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _080F84A2 + movs r0, 0 + strh r0, [r4, 0x10] +_080F84A2: + movs r2, 0x2 + ldrsh r0, [r4, r2] + adds r0, 0x1 + movs r1, 0x3 + bl __modsi3 + strh r0, [r4, 0x2] + ldrh r1, [r4, 0x12] + lsls r1, 8 + ldrh r0, [r4, 0x10] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080F853C + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _080F853C + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC +_080F84EA: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _080F853C +_080F84F2: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080F853C + movs r1, 0x16 + ldrsh r0, [r4, r1] + bl sub_80F8234 + ldrb r2, [r4, 0x4] + movs r0, 0 + movs r1, 0x7 + bl sub_80019E4 + ldrh r1, [r4, 0x6] + movs r0, 0 + bl sub_8000A38 + ldrh r1, [r4, 0x8] + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0xA] + movs r0, 0x52 + bl sub_8000A38 + ldrh r1, [r4, 0xC] + movs r0, 0x48 + bl sub_8000A38 + ldrh r1, [r4, 0xE] + movs r0, 0x4A + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8077508 +_080F853C: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F83D0 + + thumb_func_start sub_80F8544 +sub_80F8544: @ 80F8544 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80F80E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1C + beq _080F8564 + lsls r0, 4 + ldr r1, _080F8560 @ =gUnknown_843E9E8 + adds r0, r1 + b _080F8566 + .align 2, 0 +_080F8560: .4byte gUnknown_843E9E8 +_080F8564: + movs r0, 0 +_080F8566: + pop {r1} + bx r1 + thumb_func_end sub_80F8544 + + thumb_func_start sub_80F856C +sub_80F856C: @ 80F856C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80F80E4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1C + bne _080F8582 + movs r0, 0 + b _080F85B6 +_080F8582: + ldr r0, _080F85A0 @ =gUnknown_843E9E8 + lsls r1, 4 + adds r1, r0 + ldrh r2, [r1, 0x2] + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _080F85A4 + adds r0, r2, 0 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080F85B4 + b _080F85AC + .align 2, 0 +_080F85A0: .4byte gUnknown_843E9E8 +_080F85A4: + ldr r0, _080F85B0 @ =gUnknown_203ABEC + ldrb r0, [r0] + cmp r0, 0 + bne _080F85B4 +_080F85AC: + movs r0, 0x28 + b _080F85B6 + .align 2, 0 +_080F85B0: .4byte gUnknown_203ABEC +_080F85B4: + movs r0, 0x78 +_080F85B6: + pop {r1} + bx r1 + thumb_func_end sub_80F856C + + thumb_func_start sub_80F85BC +sub_80F85BC: @ 80F85BC + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080F85D8 + ldr r1, _080F85D4 @ =gUnknown_203ABEC + movs r0, 0x1 + b _080F85DC + .align 2, 0 +_080F85D4: .4byte gUnknown_203ABEC +_080F85D8: + ldr r1, _080F85EC @ =gUnknown_203ABEC + movs r0, 0 +_080F85DC: + strb r0, [r1] + adds r0, r4, 0 + bl sub_806E680 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F85EC: .4byte gUnknown_203ABEC + thumb_func_end sub_80F85BC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/math_util.s b/asm/math_util.s new file mode 100644 index 000000000..fc245ab7f --- /dev/null +++ b/asm/math_util.s @@ -0,0 +1,202 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D8AA0 +sub_80D8AA0: @ 80D8AA0 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + muls r0, r1 + adds r1, r0, 0 + cmp r0, 0 + bge _080D8AB4 + adds r1, 0xFF +_080D8AB4: + lsls r0, r1, 8 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80D8AA0 + + thumb_func_start sub_80D8ABC +sub_80D8ABC: @ 80D8ABC + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + asrs r3, 16 + lsls r2, 16 + asrs r2, 16 + muls r3, r2 + movs r1, 0x1 + lsls r1, r0 + adds r0, r3, 0 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80D8ABC + + thumb_func_start sub_80D8AE0 +sub_80D8AE0: @ 80D8AE0 + push {r4-r7,lr} + adds r2, r1, 0 + adds r4, r0, 0 + asrs r5, r0, 31 + asrs r3, r2, 31 + adds r1, r5, 0 + adds r0, r4, 0 + bl __muldi3 + adds r5, r1, 0 + adds r4, r0, 0 + adds r7, r5, 0 + adds r6, r4, 0 + cmp r5, 0 + bge _080D8B06 + movs r6, 0xFF + movs r7, 0 + adds r6, r4 + adcs r7, r5 +_080D8B06: + lsls r3, r7, 24 + lsrs r2, r6, 8 + adds r0, r3, 0 + orrs r0, r2 + asrs r1, r7, 8 + adds r5, r1, 0 + adds r4, r0, 0 + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D8AE0 + + thumb_func_start sub_80D8B1C +sub_80D8B1C: @ 80D8B1C + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + asrs r1, 16 + cmp r1, 0 + beq _080D8B38 + lsls r0, 16 + asrs r0, 8 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + b _080D8B3A +_080D8B38: + movs r0, 0 +_080D8B3A: + pop {r1} + bx r1 + thumb_func_end sub_80D8B1C + + thumb_func_start sub_80D8B40 +sub_80D8B40: @ 80D8B40 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r0, r1, 16 + lsls r2, 16 + asrs r1, r2, 16 + cmp r1, 0 + beq _080D8B62 + lsls r0, 16 + asrs r0, 16 + lsls r0, r3 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + b _080D8B64 +_080D8B62: + movs r0, 0 +_080D8B64: + pop {r1} + bx r1 + thumb_func_end sub_80D8B40 + + thumb_func_start sub_80D8B68 +sub_80D8B68: @ 80D8B68 + push {r4-r6,lr} + adds r6, r1, 0 + cmp r6, 0 + beq _080D8B88 + adds r2, r0, 0 + asrs r3, r0, 31 + lsrs r5, r2, 24 + lsls r4, r3, 8 + adds r1, r5, 0 + orrs r1, r4 + lsls r0, r2, 8 + adds r2, r6, 0 + asrs r3, r6, 31 + bl __divdi3 + b _080D8B8A +_080D8B88: + movs r0, 0 +_080D8B8A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80D8B68 + + thumb_func_start sub_80D8B90 +sub_80D8B90: @ 80D8B90 + push {lr} + adds r1, r0, 0 + movs r0, 0x80 + lsls r0, 9 + lsls r1, 16 + asrs r1, 16 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80D8B90 + + thumb_func_start sub_80D8BA8 +sub_80D8BA8: @ 80D8BA8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + lsls r2, r0 + lsls r1, 16 + asrs r1, 16 + adds r0, r2, 0 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80D8BA8 + + thumb_func_start sub_80D8BC8 +sub_80D8BC8: @ 80D8BC8 + push {lr} + adds r2, r0, 0 + ldr r1, _080D8BE0 @ =0x00000000 + ldr r0, _080D8BDC @ =0x00010000 + asrs r3, r2, 31 + bl __divdi3 + pop {r1} + bx r1 + .align 2, 0 +_080D8BDC: .4byte 0x00010000 +_080D8BE0: .4byte 0x00000000 + thumb_func_end sub_80D8BC8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/menews_jisan.s b/asm/menews_jisan.s new file mode 100644 index 000000000..69ea1110c --- /dev/null +++ b/asm/menews_jisan.s @@ -0,0 +1,326 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8146C30 +sub_8146C30: @ 8146C30 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8143D94 + adds r5, r0, 0 + movs r0, 0x3 + adds r1, r4, 0 + ands r1, r0 + ldrb r2, [r5] + movs r0, 0x4 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + cmp r4, 0x2 + bhi _08146C56 + cmp r4, 0x1 + bcs _08146C5C + b _08146C80 +_08146C56: + cmp r4, 0x3 + beq _08146C6E + b _08146C80 +_08146C5C: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + bl __umodsi3 + adds r0, 0x10 + b _08146C7E +_08146C6E: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + bl __umodsi3 + adds r0, 0x1 +_08146C7E: + strb r0, [r5, 0x1] +_08146C80: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8146C30 + + thumb_func_start sub_8146C88 +sub_8146C88: @ 8146C88 + push {lr} + bl sub_8143D94 + movs r1, 0 + strb r1, [r0] + strb r1, [r0, 0x1] + ldr r0, _08146CA0 @ =0x00004028 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_08146CA0: .4byte 0x00004028 + thumb_func_end sub_8146C88 + + thumb_func_start sub_8146CA4 +sub_8146CA4: @ 8146CA4 + push {r4,lr} + ldr r0, _08146CE0 @ =0x00004028 + bl sub_806E454 + adds r4, r0, 0 + bl sub_8143D94 + adds r2, r0, 0 + ldr r0, [r2] + lsls r0, 24 + lsrs r0, 29 + cmp r0, 0x4 + bls _08146CD8 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + ldr r1, _08146CE4 @ =0x01f30000 + cmp r0, r1 + bls _08146CD8 + ldrb r0, [r2] + movs r1, 0x1F + ands r1, r0 + strb r1, [r2] + movs r0, 0 + strh r0, [r4] +_08146CD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08146CE0: .4byte 0x00004028 +_08146CE4: .4byte 0x01f30000 + thumb_func_end sub_8146CA4 + + thumb_func_start sub_8146CE8 +sub_8146CE8: @ 8146CE8 + push {r4-r6,lr} + ldr r6, _08146D08 @ =gUnknown_20370D0 + bl sub_8143D94 + adds r4, r0, 0 + bl sub_806E2BC + cmp r0, 0 + beq _08146D02 + bl sub_8143E1C + cmp r0, 0 + bne _08146D0C +_08146D02: + movs r0, 0 + b _08146D6E + .align 2, 0 +_08146D08: .4byte gUnknown_20370D0 +_08146D0C: + adds r0, r4, 0 + bl sub_8146E0C + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x6 + bhi _08146D6C + lsls r0, r5, 2 + ldr r1, _08146D24 @ =_08146D28 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08146D24: .4byte _08146D28 + .align 2, 0 +_08146D28: + .4byte _08146D6C + .4byte _08146D44 + .4byte _08146D44 + .4byte _08146D6C + .4byte _08146D4E + .4byte _08146D5E + .4byte _08146D6C +_08146D44: + adds r0, r4, 0 + bl sub_8146D74 + strh r0, [r6] + b _08146D6C +_08146D4E: + adds r0, r4, 0 + bl sub_8146D74 + strh r0, [r6] + adds r0, r4, 0 + bl sub_8146DA0 + b _08146D6C +_08146D5E: + adds r0, r4, 0 + bl sub_8146D74 + strh r0, [r6] + adds r0, r4, 0 + bl sub_8146D94 +_08146D6C: + adds r0, r5, 0 +_08146D6E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8146CE8 + + thumb_func_start sub_8146D74 +sub_8146D74: @ 8146D74 + push {r4,lr} + ldrb r2, [r0] + movs r1, 0x4 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldrb r4, [r0, 0x1] + adds r4, 0x84 + movs r1, 0 + strb r1, [r0, 0x1] + bl sub_8146DD8 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8146D74 + + thumb_func_start sub_8146D94 +sub_8146D94: @ 8146D94 + ldrb r2, [r0] + movs r1, 0x1D + negs r1, r1 + ands r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8146D94 + + thumb_func_start sub_8146DA0 +sub_8146DA0: @ 8146DA0 + push {r4,lr} + adds r3, r0, 0 + ldr r0, [r3] + lsls r0, 27 + lsrs r0, 29 + adds r0, 0x1 + movs r1, 0x7 + ands r0, r1 + lsls r0, 2 + ldrb r1, [r3] + movs r4, 0x1D + negs r4, r4 + adds r2, r4, 0 + ands r2, r1 + orrs r2, r0 + strb r2, [r3] + ldr r0, [r3] + lsls r0, 27 + lsrs r0, 29 + cmp r0, 0x4 + bls _08146DD2 + ands r2, r4 + movs r0, 0x10 + orrs r2, r0 + strb r2, [r3] +_08146DD2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8146DA0 + + thumb_func_start sub_8146DD8 +sub_8146DD8: @ 8146DD8 + push {r4,lr} + adds r3, r0, 0 + ldr r0, [r3] + lsls r0, 24 + lsrs r0, 29 + adds r0, 0x1 + lsls r0, 5 + ldrb r1, [r3] + movs r4, 0x1F + adds r2, r4, 0 + ands r2, r1 + orrs r2, r0 + strb r2, [r3] + ldr r0, [r3] + lsls r0, 24 + lsrs r0, 29 + cmp r0, 0x5 + bls _08146E04 + ands r2, r4 + movs r0, 0xA0 + orrs r2, r0 + strb r2, [r3] +_08146E04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8146DD8 + + thumb_func_start sub_8146E0C +sub_8146E0C: @ 8146E0C + push {lr} + adds r2, r0, 0 + ldrb r1, [r2] + movs r0, 0xE0 + ands r0, r1 + cmp r0, 0xA0 + bne _08146E1E + movs r0, 0x6 + b _08146E66 +_08146E1E: + ldr r1, [r2] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x1 + beq _08146E40 + cmp r0, 0x1 + bgt _08146E32 + cmp r0, 0 + beq _08146E3C + b _08146E58 +_08146E32: + cmp r0, 0x2 + beq _08146E44 + cmp r0, 0x3 + beq _08146E48 + b _08146E58 +_08146E3C: + movs r0, 0x3 + b _08146E66 +_08146E40: + movs r0, 0x1 + b _08146E66 +_08146E44: + movs r0, 0x2 + b _08146E66 +_08146E48: + lsls r0, r1, 27 + lsrs r0, 29 + cmp r0, 0x2 + bhi _08146E54 + movs r0, 0x4 + b _08146E66 +_08146E54: + movs r0, 0x5 + b _08146E66 +_08146E58: + ldr r0, _08146E6C @ =gUnknown_8468C5C + ldr r1, _08146E70 @ =0x0000017f + ldr r2, _08146E74 @ =gUnknown_8468C94 + movs r3, 0x1 + bl AGBAssert + movs r0, 0 +_08146E66: + pop {r1} + bx r1 + .align 2, 0 +_08146E6C: .4byte gUnknown_8468C5C +_08146E70: .4byte 0x0000017f +_08146E74: .4byte gUnknown_8468C94 + thumb_func_end sub_8146E0C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu.s b/asm/menu.s new file mode 100644 index 000000000..4ac8d7eb9 --- /dev/null +++ b/asm/menu.s @@ -0,0 +1,3455 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810EDC4 +sub_810EDC4: @ 810EDC4 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810EE00 @ =gUnknown_203ADF0 + strh r2, [r0] + ldr r0, _0810EE04 @ =gUnknown_203ADF2 + strb r3, [r0] + ldr r1, _0810EE08 @ =sub_810EE5C + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_8003FA0 + cmp r4, 0x1 + bne _0810EDFA + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_0810EDFA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810EE00: .4byte gUnknown_203ADF0 +_0810EE04: .4byte gUnknown_203ADF2 +_0810EE08: .4byte sub_810EE5C + thumb_func_end sub_810EDC4 + + thumb_func_start sub_810EE0C +sub_810EE0C: @ 810EE0C + push {r4-r6,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810EE50 @ =gUnknown_203ADF0 + strh r2, [r0] + ldr r5, _0810EE54 @ =gUnknown_203ADF2 + adds r0, r6, 0 + movs r1, 0x5 + bl sub_8004950 + strb r0, [r5] + ldr r1, _0810EE58 @ =sub_810EE5C + adds r0, r6, 0 + bl sub_800486C + adds r0, r6, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r6, 0 + bl sub_8003FA0 + cmp r4, 0x1 + bne _0810EE4A + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8003F20 +_0810EE4A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810EE50: .4byte gUnknown_203ADF0 +_0810EE54: .4byte gUnknown_203ADF2 +_0810EE58: .4byte sub_810EE5C + thumb_func_end sub_810EE0C + + thumb_func_start sub_810EE5C +sub_810EE5C: @ 810EE5C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r6, r0, 0 + adds r5, r2, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r0, r1, 24 + lsls r5, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x10] + ldr r1, _0810F228 @ =gUnknown_203ADF0 + mov r9, r1 + ldrh r1, [r1] + lsrs r2, r0, 24 + str r2, [sp, 0xC] + movs r3, 0xFE + lsls r3, 24 + adds r2, r0, r3 + lsrs r2, 24 + str r2, [sp, 0x14] + lsrs r0, r5, 24 + mov r10, r0 + movs r2, 0xFF + lsls r2, 24 + adds r5, r2 + lsrs r5, 24 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + ldr r3, _0810F22C @ =gUnknown_203ADF2 + mov r8, r3 + ldrb r0, [r3] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x14] + adds r3, r5, 0 + bl sub_8002554 + mov r0, r9 + ldrh r1, [r0] + adds r1, 0x1 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0xC] + subs r0, 0x1 + lsls r2, r0, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0x2 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x10] + str r0, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0xC] + adds r3, r5, 0 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0x3 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0xC] + ldr r2, [sp, 0x10] + adds r7, r0, r2 + lsls r2, r7, 24 + lsrs r2, 24 + str r2, [sp, 0x1C] + str r4, [sp] + str r4, [sp, 0x4] + mov r3, r8 + ldrb r0, [r3] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r3, r5, 0 + bl sub_8002554 + mov r0, r9 + ldrh r1, [r0] + adds r1, 0x4 + lsls r1, 16 + lsrs r1, 16 + adds r0, r7, 0x1 + lsls r2, r0, 24 + lsrs r7, r2, 24 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0x5 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x14] + mov r3, r10 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0x6 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x18] + mov r3, r10 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0x8 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x1C] + mov r3, r10 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0x9 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r2, r7, 0 + mov r3, r10 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0xA + lsls r1, 16 + lsrs r1, 16 + mov r5, r10 + adds r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x14] + adds r3, r5, 0 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0xB + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0xC + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + mov r3, r9 + ldrh r1, [r3] + adds r1, 0xD + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F230 @ =0x0000080a + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + mov r5, r10 + adds r5, 0x2 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x14] + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F234 @ =0x0000080b + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F238 @ =0x0000080c + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F23C @ =0x0000080d + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F240 @ =0x00000805 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + mov r5, r10 + adds r5, 0x3 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x14] + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F244 @ =0x00000806 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F248 @ =0x00000808 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + ldr r3, _0810F24C @ =0x00000809 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + movs r3, 0x80 + lsls r3, 4 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r2, 0x4 + add r10, r2 + mov r3, r10 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x14] + bl sub_8002554 + ldr r3, _0810F250 @ =0x00000801 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r2, r8 + ldrb r0, [r2] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x18] + mov r3, r10 + bl sub_8002554 + ldr r3, _0810F254 @ =0x00000802 + adds r1, r3, 0 + mov r0, r9 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, [sp, 0x10] + str r2, [sp] + str r4, [sp, 0x4] + mov r3, r8 + ldrb r0, [r3] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0xC] + mov r3, r10 + bl sub_8002554 + ldr r0, _0810F258 @ =0x00000803 + adds r1, r0, 0 + mov r2, r9 + ldrh r2, [r2] + adds r1, r2 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r3, r8 + ldrb r0, [r3] + str r0, [sp, 0x8] + adds r0, r6, 0 + ldr r2, [sp, 0x1C] + mov r3, r10 + bl sub_8002554 + ldr r0, _0810F25C @ =0x00000804 + adds r1, r0, 0 + mov r2, r9 + ldrh r2, [r2] + adds r1, r2 + lsls r1, 16 + lsrs r1, 16 + str r4, [sp] + str r4, [sp, 0x4] + mov r3, r8 + ldrb r0, [r3] + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r2, r7, 0 + mov r3, r10 + bl sub_8002554 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810F228: .4byte gUnknown_203ADF0 +_0810F22C: .4byte gUnknown_203ADF2 +_0810F230: .4byte 0x0000080a +_0810F234: .4byte 0x0000080b +_0810F238: .4byte 0x0000080c +_0810F23C: .4byte 0x0000080d +_0810F240: .4byte 0x00000805 +_0810F244: .4byte 0x00000806 +_0810F248: .4byte 0x00000808 +_0810F24C: .4byte 0x00000809 +_0810F250: .4byte 0x00000801 +_0810F254: .4byte 0x00000802 +_0810F258: .4byte 0x00000803 +_0810F25C: .4byte 0x00000804 + thumb_func_end sub_810EE5C + + thumb_func_start sub_810F260 +sub_810F260: @ 810F260 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0810F294 @ =sub_810F298 + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0 + bl sub_800445C + adds r0, r5, 0 + bl sub_80040B8 + cmp r4, 0x1 + bne _0810F28E + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_0810F28E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F294: .4byte sub_810F298 + thumb_func_end sub_810F260 + + thumb_func_start sub_810F298 +sub_810F298: @ 810F298 + push {r4,r5,lr} + sub sp, 0xC + adds r4, r1, 0 + adds r5, r2, 0 + ldr r1, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsls r5, 24 + lsls r3, 24 + lsls r1, 24 + movs r2, 0xFE + lsls r2, 24 + adds r4, r2 + lsrs r4, 24 + movs r2, 0xFF + lsls r2, 24 + adds r5, r2 + lsrs r5, 24 + movs r2, 0x80 + lsls r2, 19 + adds r3, r2 + lsrs r3, 24 + str r3, [sp] + movs r2, 0x80 + lsls r2, 18 + adds r1, r2 + lsrs r1, 24 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8002554 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_810F298 + + thumb_func_start sub_810F2E8 +sub_810F2E8: @ 810F2E8 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810F324 @ =gUnknown_203ADF0 + strh r2, [r0] + ldr r0, _0810F328 @ =gUnknown_203ADF2 + strb r3, [r0] + ldr r1, _0810F32C @ =sub_810F380 + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_8003FA0 + cmp r4, 0x1 + bne _0810F31E + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_0810F31E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F324: .4byte gUnknown_203ADF0 +_0810F328: .4byte gUnknown_203ADF2 +_0810F32C: .4byte sub_810F380 + thumb_func_end sub_810F2E8 + + thumb_func_start sub_810F330 +sub_810F330: @ 810F330 + push {r4-r6,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0810F374 @ =gUnknown_203ADF0 + strh r2, [r0] + ldr r5, _0810F378 @ =gUnknown_203ADF2 + adds r0, r6, 0 + movs r1, 0x5 + bl sub_8004950 + strb r0, [r5] + ldr r1, _0810F37C @ =sub_810F380 + adds r0, r6, 0 + bl sub_800486C + adds r0, r6, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r6, 0 + bl sub_8003FA0 + cmp r4, 0x1 + bne _0810F36E + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8003F20 +_0810F36E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810F374: .4byte gUnknown_203ADF0 +_0810F378: .4byte gUnknown_203ADF2 +_0810F37C: .4byte sub_810F380 + thumb_func_end sub_810F330 + + thumb_func_start sub_810F380 +sub_810F380: @ 810F380 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + mov r9, r0 + adds r6, r1, 0 + adds r4, r2, 0 + ldr r0, [sp, 0x38] + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r6, 24 + lsls r4, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x10] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + ldr r2, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r2] + lsrs r0, r6, 24 + str r0, [sp, 0xC] + movs r2, 0xFF + lsls r2, 24 + adds r6, r2 + lsrs r6, 24 + lsrs r0, r4, 24 + mov r8, r0 + adds r4, r2 + lsrs r4, 24 + movs r5, 0x1 + str r5, [sp] + str r5, [sp, 0x4] + ldr r7, _0810F4D4 @ =gUnknown_203ADF2 + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_8002554 + ldr r2, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r2] + adds r1, 0x1 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x10] + str r0, [sp] + str r5, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + ldr r2, [sp, 0xC] + adds r3, r4, 0 + bl sub_8002554 + ldr r2, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r2] + adds r1, 0x2 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0xC] + ldr r2, [sp, 0x10] + adds r0, r2 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + str r5, [sp] + str r5, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + mov r2, r10 + adds r3, r4, 0 + bl sub_8002554 + ldr r0, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r0] + adds r1, 0x3 + lsls r1, 16 + lsrs r1, 16 + str r5, [sp] + ldr r2, [sp, 0x14] + str r2, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + adds r2, r6, 0 + mov r3, r8 + bl sub_8002554 + ldr r0, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r0] + adds r1, 0x5 + lsls r1, 16 + lsrs r1, 16 + str r5, [sp] + ldr r2, [sp, 0x14] + str r2, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + mov r2, r10 + mov r3, r8 + bl sub_8002554 + ldr r0, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r0] + adds r1, 0x6 + lsls r1, 16 + lsrs r1, 16 + ldr r2, [sp, 0x14] + add r8, r2 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + str r5, [sp] + str r5, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + adds r2, r6, 0 + mov r3, r8 + bl sub_8002554 + ldr r2, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r2] + adds r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x10] + str r0, [sp] + str r5, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + ldr r2, [sp, 0xC] + mov r3, r8 + bl sub_8002554 + ldr r2, _0810F4D0 @ =gUnknown_203ADF0 + ldrh r1, [r2] + adds r1, 0x8 + lsls r1, 16 + lsrs r1, 16 + str r5, [sp] + str r5, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0x8] + mov r0, r9 + mov r2, r10 + mov r3, r8 + bl sub_8002554 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810F4D0: .4byte gUnknown_203ADF0 +_0810F4D4: .4byte gUnknown_203ADF2 + thumb_func_end sub_810F380 + + thumb_func_start sub_810F4D8 +sub_810F4D8: @ 810F4D8 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0810F50C @ =sub_810F510 + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0 + bl sub_800445C + adds r0, r5, 0 + bl sub_80040B8 + cmp r4, 0x1 + bne _0810F506 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_0810F506: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F50C: .4byte sub_810F510 + thumb_func_end sub_810F4D8 + + thumb_func_start sub_810F510 +sub_810F510: @ 810F510 + push {r4,r5,lr} + sub sp, 0xC + adds r4, r1, 0 + adds r5, r2, 0 + ldr r1, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsls r5, 24 + lsls r3, 24 + lsls r1, 24 + movs r2, 0xFF + lsls r2, 24 + adds r4, r2 + lsrs r4, 24 + adds r5, r2 + lsrs r5, 24 + movs r2, 0x80 + lsls r2, 18 + adds r3, r2 + lsrs r3, 24 + str r3, [sp] + adds r1, r2 + lsrs r1, 24 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8002554 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_810F510 + + thumb_func_start sub_810F558 +sub_810F558: @ 810F558 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r5, r3, 24 + lsls r4, 16 + lsrs r4, 16 + mov r0, sp + movs r1, 0 + movs r2, 0x8 + bl memset + cmp r6, 0x3 + bls _0810F58E + movs r1, 0 + mov r0, sp + strb r1, [r0] + b _0810F592 +_0810F58E: + mov r0, sp + strb r6, [r0] +_0810F592: + mov r1, sp + mov r0, r8 + strb r0, [r1, 0x2] + movs r0, 0x2 + strb r0, [r1, 0x4] + movs r0, 0x1E + subs r0, r7 + strb r0, [r1, 0x1] + strb r7, [r1, 0x3] + strb r5, [r1, 0x5] + strh r4, [r1, 0x6] + ldr r4, _0810F5BC @ =gUnknown_203ADF4 + mov r0, sp + bl sub_8003CE4 + strb r0, [r4] + cmp r5, 0xF + bls _0810F5C0 + movs r5, 0xF0 + b _0810F5C4 + .align 2, 0 +_0810F5BC: .4byte gUnknown_203ADF4 +_0810F5C0: + lsls r0, r5, 28 + lsrs r5, r0, 24 +_0810F5C4: + movs r0, 0x2 + bl sub_8150408 + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0810F5E4 @ =gUnknown_203ADF4 + ldrb r0, [r0] + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810F5E4: .4byte gUnknown_203ADF4 + thumb_func_end sub_810F558 + + thumb_func_start sub_810F5E8 +sub_810F5E8: @ 810F5E8 + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r4, _0810F648 @ =gUnknown_203ADF4 + ldrb r0, [r4] + cmp r0, 0xFF + beq _0810F63E + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0xFF + bl sub_800445C + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + ldrb r1, [r4] + movs r3, 0x14 + negs r3, r3 + adds r2, r3, 0 + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0810F64C @ =gUnknown_8456618 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0 + movs r3, 0x1 + bl sub_812E51C + cmp r6, 0 + beq _0810F63E + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8003F20 +_0810F63E: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810F648: .4byte gUnknown_203ADF4 +_0810F64C: .4byte gUnknown_8456618 + thumb_func_end sub_810F5E8 + + thumb_func_start sub_810F650 +sub_810F650: @ 810F650 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x18 + mov r8, r0 + adds r5, r1, 0 + ldr r0, [sp, 0x30] + lsls r2, 24 + lsrs r2, 24 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0810F67C @ =gUnknown_203ADF4 + ldrb r1, [r0] + adds r6, r0, 0 + cmp r1, 0xFF + beq _0810F6F6 + cmp r2, 0 + beq _0810F680 + add r1, sp, 0x14 + movs r0, 0 + b _0810F684 + .align 2, 0 +_0810F67C: .4byte gUnknown_203ADF4 +_0810F680: + add r1, sp, 0x14 + movs r0, 0xF +_0810F684: + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x2 + strb r0, [r1, 0x2] + adds r4, r6, 0 + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0xFF + bl sub_800445C + cmp r5, 0 + beq _0810F6CE + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + ldrb r1, [r4] + movs r3, 0x14 + negs r3, r3 + adds r2, r3, 0 + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + add r0, sp, 0x14 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0 + movs r3, 0x1 + bl sub_812E51C +_0810F6CE: + ldrb r0, [r6] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + add r2, sp, 0x14 + str r2, [sp, 0x8] + str r1, [sp, 0xC] + mov r3, r8 + str r3, [sp, 0x10] + movs r1, 0x1 + movs r2, 0x4 + movs r3, 0x1 + bl sub_812E5A4 + cmp r7, 0 + beq _0810F6F6 + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8003F20 +_0810F6F6: + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810F650 + + thumb_func_start sub_810F704 +sub_810F704: @ 810F704 + push {lr} + ldr r1, _0810F718 @ =gUnknown_203ADF4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0810F714 + movs r1, 0x3 + bl sub_8003F20 +_0810F714: + pop {r0} + bx r0 + .align 2, 0 +_0810F718: .4byte gUnknown_203ADF4 + thumb_func_end sub_810F704 + + thumb_func_start sub_810F71C +sub_810F71C: @ 810F71C + push {r4,lr} + ldr r4, _0810F73C @ =gUnknown_203ADF4 + ldrb r0, [r4] + cmp r0, 0xFF + beq _0810F734 + movs r1, 0xFF + bl sub_800445C + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8003F20 +_0810F734: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810F73C: .4byte gUnknown_203ADF4 + thumb_func_end sub_810F71C + + thumb_func_start sub_810F740 +sub_810F740: @ 810F740 + push {r4,lr} + ldr r4, _0810F770 @ =gUnknown_203ADF4 + ldrb r0, [r4] + cmp r0, 0xFF + beq _0810F768 + movs r1, 0 + bl sub_800445C + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] +_0810F768: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810F770: .4byte gUnknown_203ADF4 + thumb_func_end sub_810F740 + + thumb_func_start sub_810F774 +sub_810F774: @ 810F774 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, [sp, 0x18] + mov r8, r4 + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + ldr r6, [sp, 0x24] + mov r12, r6 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r7, r5, 24 + ldr r5, _0810F7B8 @ =gUnknown_203ADE4 + movs r6, 0 + strb r2, [r5] + strb r3, [r5, 0x1] + strb r6, [r5, 0x3] + subs r4, 0x1 + strb r4, [r5, 0x4] + strb r0, [r5, 0x5] + strb r1, [r5, 0x6] + mov r0, r8 + strb r0, [r5, 0x8] + mov r4, r12 + strb r4, [r5, 0xB] + cmp r7, 0 + blt _0810F7B4 + movs r0, 0x4 + ldrsb r0, [r5, r0] + cmp r7, r0 + ble _0810F7BC +_0810F7B4: + strb r6, [r5, 0x2] + b _0810F7BE + .align 2, 0 +_0810F7B8: .4byte gUnknown_203ADE4 +_0810F7BC: + strb r7, [r5, 0x2] +_0810F7BE: + movs r0, 0 + bl sub_810F904 + ldr r0, _0810F7D4 @ =gUnknown_203ADE4 + ldrb r0, [r0, 0x2] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810F7D4: .4byte gUnknown_203ADE4 + thumb_func_end sub_810F774 + + thumb_func_start sub_810F7D8 +sub_810F7D8: @ 810F7D8 + push {r4-r6,lr} + sub sp, 0x10 + ldr r4, [sp, 0x20] + ldr r5, [sp, 0x24] + ldr r6, [sp, 0x28] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + str r4, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r4, 0 + str r4, [sp, 0xC] + bl sub_810F774 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_810F7D8 + + thumb_func_start sub_810F818 +sub_810F818: @ 810F818 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x14 + mov r8, r0 + adds r6, r1, 0 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r6, 24 + lsrs r6, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + movs r1, 0x1 + str r2, [sp, 0xC] + str r3, [sp, 0x10] + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + mov r0, r8 + adds r1, r6, 0 + ldr r2, [sp, 0xC] + ldr r3, [sp, 0x10] + bl sub_810F7D8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_810F818 + + thumb_func_start sub_810F874 +sub_810F874: @ 810F874 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0xC + adds r6, r0, 0 + mov r8, r1 + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r5, _0810F8FC @ =gUnknown_203ADE4 + ldrb r0, [r5, 0x6] + movs r1, 0 + bl sub_80F7AC0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5, 0x6] + movs r1, 0x1 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r5, 0x5] + mov r9, r1 + ldrb r2, [r5] + ldrb r1, [r5, 0x8] + adds r3, r1, 0 + muls r3, r6 + ldrb r6, [r5, 0x1] + adds r3, r6 + lsls r3, 16 + lsrs r3, 16 + str r4, [sp] + str r0, [sp, 0x4] + mov r0, r9 + movs r1, 0x1 + bl sub_8004378 + ldrb r0, [r5, 0x5] + ldrb r1, [r5, 0x6] + ldr r2, _0810F900 @ =gUnknown_841623B + ldrb r3, [r5] + ldrb r4, [r5, 0x8] + mov r6, r8 + muls r6, r4 + adds r4, r6, 0 + ldrb r5, [r5, 0x1] + adds r4, r5 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + str r4, [sp, 0x8] + bl sub_8002C48 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0810F8FC: .4byte gUnknown_203ADE4 +_0810F900: .4byte gUnknown_841623B + thumb_func_end sub_810F874 + + thumb_func_start sub_810F904 +sub_810F904: @ 810F904 + push {r4,r5,lr} + ldr r1, _0810F924 @ =gUnknown_203ADE4 + ldrb r5, [r1, 0x2] + movs r2, 0x2 + ldrsb r2, [r1, r2] + lsls r0, 24 + asrs r3, r0, 24 + adds r2, r3 + movs r0, 0x3 + ldrsb r0, [r1, r0] + adds r4, r1, 0 + cmp r2, r0 + bge _0810F928 + ldrb r0, [r4, 0x4] + b _0810F936 + .align 2, 0 +_0810F924: .4byte gUnknown_203ADE4 +_0810F928: + movs r0, 0x4 + ldrsb r0, [r4, r0] + cmp r2, r0 + ble _0810F934 + ldrb r0, [r4, 0x3] + b _0810F936 +_0810F934: + adds r0, r3, r5 +_0810F936: + strb r0, [r4, 0x2] + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_810F874 + ldrb r0, [r4, 0x2] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810F904 + + thumb_func_start sub_810F948 +sub_810F948: @ 810F948 + push {r4,r5,lr} + ldr r1, _0810F968 @ =gUnknown_203ADE4 + ldrb r5, [r1, 0x2] + movs r2, 0x2 + ldrsb r2, [r1, r2] + lsls r0, 24 + asrs r3, r0, 24 + adds r2, r3 + movs r0, 0x3 + ldrsb r0, [r1, r0] + adds r4, r1, 0 + cmp r2, r0 + bge _0810F96C + ldrb r0, [r4, 0x3] + b _0810F97A + .align 2, 0 +_0810F968: .4byte gUnknown_203ADE4 +_0810F96C: + movs r0, 0x4 + ldrsb r0, [r4, r0] + cmp r2, r0 + ble _0810F978 + ldrb r0, [r4, 0x4] + b _0810F97A +_0810F978: + adds r0, r3, r5 +_0810F97A: + strb r0, [r4, 0x2] + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_810F874 + ldrb r0, [r4, 0x2] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810F948 + + thumb_func_start sub_810F98C +sub_810F98C: @ 810F98C + ldr r0, _0810F994 @ =gUnknown_203ADE4 + ldrb r0, [r0, 0x2] + bx lr + .align 2, 0 +_0810F994: .4byte gUnknown_203ADE4 + thumb_func_end sub_810F98C + + thumb_func_start sub_810F998 +sub_810F998: @ 810F998 + push {r4,lr} + ldr r0, _0810F9BC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810F9C4 + ldr r4, _0810F9C0 @ =gUnknown_203ADE4 + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0810F9B4 + movs r0, 0x5 + bl sub_80722CC +_0810F9B4: + movs r0, 0x2 + ldrsb r0, [r4, r0] + b _0810F9FE + .align 2, 0 +_0810F9BC: .4byte gUnknown_30030F0 +_0810F9C0: .4byte gUnknown_203ADE4 +_0810F9C4: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810F9D2 + movs r0, 0x1 + negs r0, r0 + b _0810F9FE +_0810F9D2: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0810F9E6 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + b _0810F9F6 +_0810F9E6: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0810F9FA + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 +_0810F9F6: + bl sub_810F904 +_0810F9FA: + movs r0, 0x2 + negs r0, r0 +_0810F9FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810F998 + + thumb_func_start sub_810FA04 +sub_810FA04: @ 810FA04 + push {r4-r6,lr} + ldr r4, _0810FA2C @ =gUnknown_203ADE4 + ldrb r5, [r4, 0x2] + adds r6, r5, 0 + ldr r0, _0810FA30 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810FA34 + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0810FA24 + movs r0, 0x5 + bl sub_80722CC +_0810FA24: + movs r0, 0x2 + ldrsb r0, [r4, r0] + b _0810FA7C + .align 2, 0 +_0810FA2C: .4byte gUnknown_203ADE4 +_0810FA30: .4byte gUnknown_30030F0 +_0810FA34: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810FA42 + movs r0, 0x1 + negs r0, r0 + b _0810FA7C +_0810FA42: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0810FA5C + movs r0, 0x1 + negs r0, r0 + bl sub_810F948 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + beq _0810FA78 + b _0810FA72 +_0810FA5C: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0810FA78 + movs r0, 0x1 + bl sub_810F948 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _0810FA78 +_0810FA72: + movs r0, 0x5 + bl sub_80722CC +_0810FA78: + movs r0, 0x2 + negs r0, r0 +_0810FA7C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_810FA04 + + thumb_func_start sub_810FA84 +sub_810FA84: @ 810FA84 + push {r4,lr} + ldr r2, _0810FAA8 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810FAB0 + ldr r4, _0810FAAC @ =gUnknown_203ADE4 + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0810FAA0 + movs r0, 0x5 + bl sub_80722CC +_0810FAA0: + movs r0, 0x2 + ldrsb r0, [r4, r0] + b _0810FAE8 + .align 2, 0 +_0810FAA8: .4byte gUnknown_30030F0 +_0810FAAC: .4byte gUnknown_203ADE4 +_0810FAB0: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810FABE + movs r0, 0x1 + negs r0, r0 + b _0810FAE8 +_0810FABE: + ldrh r0, [r2, 0x30] + movs r1, 0xF0 + ands r1, r0 + cmp r1, 0x40 + bne _0810FAD4 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + b _0810FAE0 +_0810FAD4: + cmp r1, 0x80 + bne _0810FAE4 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 +_0810FAE0: + bl sub_810F904 +_0810FAE4: + movs r0, 0x2 + negs r0, r0 +_0810FAE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810FA84 + + thumb_func_start sub_810FAF0 +sub_810FAF0: @ 810FAF0 + push {r4-r6,lr} + ldr r4, _0810FB18 @ =gUnknown_203ADE4 + ldrb r5, [r4, 0x2] + adds r6, r5, 0 + ldr r2, _0810FB1C @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810FB20 + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _0810FB10 + movs r0, 0x5 + bl sub_80722CC +_0810FB10: + movs r0, 0x2 + ldrsb r0, [r4, r0] + b _0810FB66 + .align 2, 0 +_0810FB18: .4byte gUnknown_203ADE4 +_0810FB1C: .4byte gUnknown_30030F0 +_0810FB20: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810FB2E + movs r0, 0x1 + negs r0, r0 + b _0810FB66 +_0810FB2E: + ldrh r0, [r2, 0x30] + movs r1, 0xF0 + ands r1, r0 + cmp r1, 0x40 + bne _0810FB4A + movs r0, 0x1 + negs r0, r0 + bl sub_810F948 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + beq _0810FB62 + b _0810FB5C +_0810FB4A: + cmp r1, 0x80 + bne _0810FB62 + movs r0, 0x1 + bl sub_810F948 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + beq _0810FB62 +_0810FB5C: + movs r0, 0x5 + bl sub_80722CC +_0810FB62: + movs r0, 0x2 + negs r0, r0 +_0810FB66: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_810FAF0 + + thumb_func_start sub_810FB6C +sub_810FB6C: @ 810FB6C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsls r4, 24 + lsrs r7, r4, 24 + lsls r5, 24 + lsrs r5, 24 + movs r4, 0 + cmp r4, r5 + bcs _0810FBD0 +_0810FBA0: + lsls r0, r4, 3 + ldr r1, [sp, 0x34] + adds r0, r1 + ldr r2, [r0] + adds r0, r7, 0 + muls r0, r4 + add r0, r8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + mov r1, r10 + mov r3, r9 + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _0810FBA0 +_0810FBD0: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810FB6C + + thumb_func_start sub_810FBE8 +sub_810FBE8: @ 810FBE8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x40] + ldr r5, [sp, 0x44] + ldr r6, [sp, 0x4C] + ldr r7, [sp, 0x50] + mov r8, r7 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x14] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x1C] + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + mov r9, r6 + mov r0, r8 + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + cmp r4, r5 + bcs _0810FC68 +_0810FC30: + lsls r0, r4, 3 + ldr r1, [sp, 0x48] + adds r0, r1 + ldr r2, [r0] + mov r0, r10 + muls r0, r4 + ldr r1, [sp, 0x1C] + adds r0, r1, r0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + str r6, [sp, 0x10] + adds r0, r7, 0 + ldr r1, [sp, 0x14] + ldr r3, [sp, 0x18] + bl sub_812E62C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _0810FC30 +_0810FC68: + adds r0, r7, 0 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810FBE8 + + thumb_func_start sub_810FC80 +sub_810FC80: @ 810FC80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + mov r8, r0 + adds r6, r1, 0 + adds r4, r2, 0 + adds r5, r3, 0 + ldr r7, [sp, 0x24] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_80F7AC0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + str r4, [sp] + str r5, [sp, 0x4] + str r7, [sp, 0x8] + mov r0, r8 + adds r1, r6, 0 + movs r3, 0 + bl sub_810FB6C + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810FC80 + + thumb_func_start sub_810FCD0 +sub_810FCD0: @ 810FCD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r6, r1, 0 + mov r8, r2 + ldr r1, [sp, 0x38] + mov r9, r1 + ldr r1, [sp, 0x3C] + ldr r2, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x10] + lsls r6, 24 + lsrs r6, 24 + mov r4, r8 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r7, r2, 24 + mov r0, sp + ldrb r1, [r0, 0x10] + strb r1, [r0, 0x4] + strb r6, [r0, 0x5] + adds r0, r6, 0 + movs r1, 0x5 + bl sub_80F79D8 + mov r3, sp + lsls r0, 4 + ldrb r2, [r3, 0xC] + movs r5, 0xF + adds r1, r5, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xC] + adds r0, r6, 0 + movs r1, 0x6 + bl sub_80F79D8 + mov r3, sp + adds r1, r5, 0 + ands r1, r0 + ldrb r2, [r3, 0xD] + movs r4, 0x10 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0xD] + adds r0, r6, 0 + movs r1, 0x7 + bl sub_80F79D8 + mov r3, sp + lsls r0, 4 + ldrb r2, [r3, 0xD] + adds r1, r5, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xD] + adds r0, r6, 0 + movs r1, 0x4 + bl sub_80F79D8 + mov r1, sp + ands r5, r0 + ldrb r0, [r1, 0xC] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, 0xC] + mov r0, sp + mov r2, r9 + strb r2, [r0, 0xA] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_80F79D8 + mov r1, sp + strb r0, [r1, 0xB] + mov r0, sp + mov r4, r8 + strb r4, [r0, 0x6] + strb r4, [r0, 0x8] + movs r4, 0 + cmp r4, r7 + bcs _0810FDCA + mov r5, sp +_0810FD9A: + ldr r1, [sp, 0x48] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, 3 + ldr r2, [sp, 0x44] + adds r0, r2 + ldr r0, [r0] + str r0, [sp] + mov r0, r10 + muls r0, r4 + ldr r1, [sp, 0x14] + adds r0, r1, r0 + strb r0, [r5, 0x7] + strb r0, [r5, 0x9] + mov r0, sp + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r7 + bcc _0810FD9A +_0810FDCA: + ldr r0, [sp, 0x10] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810FCD0 + + thumb_func_start sub_810FDE4 +sub_810FDE4: @ 810FDE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r0 + adds r4, r1, 0 + adds r6, r2, 0 + mov r8, r3 + ldr r7, [sp, 0x30] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r4, 0 + movs r1, 0 + bl sub_80F79D8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + str r6, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + str r7, [sp, 0xC] + ldr r0, [sp, 0x34] + str r0, [sp, 0x10] + mov r0, r9 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_810FCD0 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810FDE4 + + thumb_func_start sub_810FE50 +sub_810FE50: @ 810FE50 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r4, [sp, 0x28] + mov r12, r4 + ldr r4, [sp, 0x2C] + mov r9, r4 + ldr r4, [sp, 0x30] + mov r10, r4 + ldr r7, [sp, 0x34] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsls r3, 24 + mov r4, r9 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + mov r4, r10 + lsls r4, 24 + mov r10, r4 + ldr r4, _0810FEF0 @ =0xffffff00 + mov r8, r4 + mov r5, r8 + ldr r4, [sp] + ands r5, r4 + orrs r5, r1 + str r5, [sp] + lsrs r2, 16 + ldr r6, _0810FEF4 @ =0xffff00ff + adds r4, r6, 0 + ands r4, r5 + orrs r4, r2 + str r4, [sp] + lsrs r3, 8 + ldr r1, _0810FEF8 @ =0xff00ffff + ands r1, r4 + orrs r1, r3 + str r1, [sp] + mov r2, r12 + lsls r2, 24 + mov r12, r2 + ldr r2, _0810FEFC @ =0x00ffffff + ands r1, r2 + mov r4, r12 + orrs r4, r1 + str r4, [sp] + ldr r1, [sp, 0x4] + mov r2, r8 + ands r1, r2 + mov r4, r9 + orrs r1, r4 + mov r8, r1 + str r1, [sp, 0x4] + mov r1, r10 + lsrs r1, 16 + mov r2, r8 + ands r6, r2 + orrs r6, r1 + str r6, [sp, 0x4] + lsls r2, r7, 16 + ldr r1, _0810FF00 @ =0x0000ffff + ands r6, r1 + orrs r6, r2 + str r6, [sp, 0x4] + ldr r1, [sp] + ldr r2, [sp, 0x4] + str r1, [r0] + str r2, [r0, 0x4] + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r2} + bx r2 + .align 2, 0 +_0810FEF0: .4byte 0xffffff00 +_0810FEF4: .4byte 0xffff00ff +_0810FEF8: .4byte 0xff00ffff +_0810FEFC: .4byte 0x00ffffff +_0810FF00: .4byte 0x0000ffff + thumb_func_end sub_810FE50 + + thumb_func_start sub_810FF04 +sub_810FF04: @ 810FF04 + push {r4-r6,lr} + sub sp, 0x20 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, [sp, 0x30] + ldr r1, [sp, 0x34] + ldr r2, [sp, 0x38] + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + str r3, [sp] + str r0, [sp, 0x4] + str r1, [sp, 0x8] + str r2, [sp, 0xC] + add r0, sp, 0x10 + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + add r0, sp, 0x18 + bl sub_8003CE4 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x20 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_810FF04 + + thumb_func_start sub_810FF60 +sub_810FF60: @ 810FF60 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r6, r1, 0 + mov r8, r2 + mov r9, r3 + ldr r4, [sp, 0x3C] + ldr r5, [sp, 0x40] + ldr r1, [sp, 0x44] + mov r10, r1 + lsls r6, 24 + lsrs r6, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + mov r1, r10 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + ldr r7, _0811009C @ =gUnknown_203ADF3 + bl sub_8003CE4 + strb r0, [r7] + ldrb r0, [r7] + movs r1, 0x1 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_810F2E8 + ldr r0, _081100A0 @ =gUnknown_841623D + str r0, [sp, 0xC] + add r1, sp, 0xC + ldrb r0, [r7] + strb r0, [r1, 0x4] + adds r0, r1, 0 + strb r6, [r0, 0x5] + adds r0, r6, 0 + movs r1, 0 + bl sub_80F7AC0 + add r1, sp, 0xC + add r0, r8 + strb r0, [r1, 0x6] + adds r0, r1, 0 + mov r1, r9 + strb r1, [r0, 0x7] + adds r1, r0, 0 + ldrb r0, [r0, 0x6] + strb r0, [r1, 0x8] + adds r0, r1, 0 + ldrb r0, [r0, 0x7] + strb r0, [r1, 0x9] + adds r0, r6, 0 + movs r1, 0x5 + bl sub_80F79D8 + add r3, sp, 0xC + lsls r0, 4 + ldrb r2, [r3, 0xC] + movs r5, 0xF + adds r1, r5, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xC] + adds r0, r6, 0 + movs r1, 0x6 + bl sub_80F79D8 + add r3, sp, 0xC + adds r1, r5, 0 + ands r1, r0 + ldrb r2, [r3, 0xD] + movs r4, 0x10 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0xD] + adds r0, r6, 0 + movs r1, 0x7 + bl sub_80F79D8 + add r3, sp, 0xC + lsls r0, 4 + ldrb r2, [r3, 0xD] + adds r1, r5, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xD] + adds r0, r6, 0 + movs r1, 0x4 + bl sub_80F79D8 + add r1, sp, 0xC + ands r5, r0 + ldrb r0, [r1, 0xC] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, 0xC] + adds r0, r6, 0 + movs r1, 0x2 + bl sub_80F79D8 + add r1, sp, 0xC + strb r0, [r1, 0xA] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_80F79D8 + add r1, sp, 0xC + strb r0, [r1, 0xB] + adds r0, r1, 0 + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_80F79D8 + add r1, sp, 0xC + ldrb r1, [r1, 0xB] + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r7] + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r1, 0 + adds r1, r6, 0 + mov r2, r8 + mov r3, r9 + bl sub_810F7D8 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811009C: .4byte gUnknown_203ADF3 +_081100A0: .4byte gUnknown_841623D + thumb_func_end sub_810FF60 + + thumb_func_start sub_81100A4 +sub_81100A4: @ 81100A4 + push {lr} + sub sp, 0xC + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 24 + lsrs r3, 24 + str r2, [sp] + str r3, [sp, 0x4] + movs r2, 0 + str r2, [sp, 0x8] + movs r3, 0 + bl sub_810FF60 + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_81100A4 + + thumb_func_start sub_81100C8 +sub_81100C8: @ 81100C8 + push {r4,lr} + bl sub_810FA04 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _081100DE + bl sub_81100E8 +_081100DE: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81100C8 + + thumb_func_start sub_81100E8 +sub_81100E8: @ 81100E8 + push {r4,lr} + ldr r4, _08110100 @ =gUnknown_203ADF3 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110100: .4byte gUnknown_203ADF3 + thumb_func_end sub_81100E8 + + thumb_func_start sub_8110104 +sub_8110104: @ 8110104 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x40] + ldr r5, [sp, 0x44] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + lsls r4, 24 + lsrs r6, r4, 24 + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x18] + mov r0, r9 + movs r1, 0 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + mov r0, r9 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x10 + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x1C] + movs r5, 0 + b _081101B8 +_08110164: + movs r4, 0 + adds r1, r5, 0x1 + mov r8, r1 + cmp r4, r6 + bcs _081101B2 + ldr r1, [sp, 0x14] + adds r0, r1, 0 + muls r0, r5 + ldr r1, [sp, 0x1C] + adds r0, r1, r0 + lsls r0, 24 + lsrs r7, r0, 24 +_0811017C: + adds r0, r5, 0 + muls r0, r6 + adds r0, r4 + lsls r0, 3 + ldr r1, [sp, 0x48] + adds r0, r1 + ldr r2, [r0] + ldr r0, [sp, 0x10] + adds r3, r0, 0 + muls r3, r4 + add r3, r10 + lsls r3, 24 + lsrs r3, 24 + str r7, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + ldr r0, [sp, 0xC] + mov r1, r9 + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _0811017C +_081101B2: + mov r1, r8 + lsls r0, r1, 24 + lsrs r5, r0, 24 +_081101B8: + ldr r0, [sp, 0x18] + cmp r5, r0 + bcc _08110164 + ldr r0, [sp, 0xC] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8110104 + + thumb_func_start sub_81101D8 +sub_81101D8: @ 81101D8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r4, [sp, 0x3C] + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + lsls r4, 24 + lsrs r6, r4, 24 + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x18] + mov r0, r10 + movs r1, 0 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r5, 0 + b _08110272 +_0811021C: + movs r4, 0 + adds r1, r5, 0x1 + mov r8, r1 + cmp r4, r6 + bcs _0811026C + ldr r1, [sp, 0x14] + adds r0, r1, 0 + muls r0, r5 + lsls r0, 24 + lsrs r7, r0, 24 +_08110230: + adds r0, r5, 0 + muls r0, r6 + adds r0, r4 + ldr r1, [sp, 0x48] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, 3 + ldr r1, [sp, 0x44] + adds r0, r1 + ldr r2, [r0] + ldr r0, [sp, 0x10] + adds r3, r0, 0 + muls r3, r4 + add r3, r9 + lsls r3, 24 + lsrs r3, 24 + str r7, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + ldr r0, [sp, 0xC] + mov r1, r10 + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _08110230 +_0811026C: + mov r1, r8 + lsls r0, r1, 24 + lsrs r5, r0, 24 +_08110272: + ldr r0, [sp, 0x18] + cmp r5, r0 + bcc _0811021C + ldr r0, [sp, 0xC] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81101D8 + + thumb_func_start sub_8110290 +sub_8110290: @ 8110290 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, [sp, 0x20] + mov r12, r4 + ldr r4, [sp, 0x24] + mov r8, r4 + ldr r4, [sp, 0x28] + mov r9, r4 + ldr r4, [sp, 0x2C] + mov r10, r4 + ldr r4, [sp, 0x30] + ldr r5, [sp, 0x34] + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r7, r5, 24 + ldr r5, _081102E8 @ =gUnknown_203ADE4 + movs r6, 0 + strb r2, [r5] + strb r3, [r5, 0x1] + strb r6, [r5, 0x3] + subs r4, 0x1 + strb r4, [r5, 0x4] + strb r0, [r5, 0x5] + strb r1, [r5, 0x6] + mov r0, r12 + strb r0, [r5, 0x7] + mov r4, r8 + strb r4, [r5, 0x8] + mov r0, r9 + strb r0, [r5, 0x9] + mov r4, r10 + strb r4, [r5, 0xA] + cmp r7, 0 + blt _081102E4 + movs r0, 0x4 + ldrsb r0, [r5, r0] + cmp r7, r0 + ble _081102EC +_081102E4: + strb r6, [r5, 0x2] + b _081102EE + .align 2, 0 +_081102E8: .4byte gUnknown_203ADE4 +_081102EC: + strb r7, [r5, 0x2] +_081102EE: + movs r0, 0 + movs r1, 0 + bl sub_8110450 + ldr r0, _08110308 @ =gUnknown_203ADE4 + ldrb r0, [r0, 0x2] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08110308: .4byte gUnknown_203ADE4 + thumb_func_end sub_8110290 + + thumb_func_start sub_811030C +sub_811030C: @ 811030C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + ldr r4, [sp, 0x38] + ldr r5, [sp, 0x3C] + ldr r6, [sp, 0x40] + ldr r7, [sp, 0x44] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r7, 24 + adds r4, r7, 0 + lsrs r4, 24 + mov r9, r4 + movs r7, 0x10 + mov r10, r7 + adds r4, r5, 0 + muls r4, r6 + lsls r4, 24 + lsrs r4, 24 + mov r7, r8 + str r7, [sp] + mov r7, r10 + str r7, [sp, 0x4] + str r5, [sp, 0x8] + str r6, [sp, 0xC] + str r4, [sp, 0x10] + mov r4, r9 + str r4, [sp, 0x14] + bl sub_8110290 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811030C + + thumb_func_start sub_811037C +sub_811037C: @ 811037C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, r1, 24 + lsrs r7, r0, 24 + ldr r5, _08110448 @ =gUnknown_203ADE4 + ldrb r0, [r5, 0x6] + movs r1, 0 + bl sub_80F7AC0 + mov r9, r0 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + ldrb r0, [r5, 0x6] + movs r1, 0x1 + bl sub_80F7AC0 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldrb r0, [r5, 0x9] + mov r10, r0 + mov r0, r8 + mov r1, r10 + bl __umodsi3 + ldrb r1, [r5, 0x7] + adds r4, r1, 0 + muls r4, r0 + ldrb r1, [r5] + adds r4, r1 + lsls r4, 24 + lsrs r4, 24 + mov r0, r8 + mov r1, r10 + bl __udivsi3 + ldrb r1, [r5, 0x8] + adds r3, r1, 0 + muls r3, r0 + ldrb r0, [r5, 0x1] + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r5, 0x5] + mov r1, r9 + str r1, [sp] + str r6, [sp, 0x4] + movs r1, 0x11 + adds r2, r4, 0 + bl sub_8004378 + ldrb r6, [r5, 0x9] + adds r0, r7, 0 + adds r1, r6, 0 + bl __umodsi3 + ldrb r1, [r5, 0x7] + adds r4, r1, 0 + muls r4, r0 + ldrb r0, [r5] + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + adds r1, r6, 0 + bl __udivsi3 + ldrb r1, [r5, 0x8] + adds r3, r1, 0 + muls r3, r0 + ldrb r1, [r5, 0x1] + adds r3, r1 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r5, 0x5] + ldrb r1, [r5, 0x6] + ldr r2, _0811044C @ =gUnknown_841623B + str r3, [sp] + movs r3, 0 + str r3, [sp, 0x4] + str r3, [sp, 0x8] + adds r3, r4, 0 + bl sub_8002C48 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08110448: .4byte gUnknown_203ADE4 +_0811044C: .4byte gUnknown_841623B + thumb_func_end sub_811037C + + thumb_func_start sub_8110450 +sub_8110450: @ 8110450 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + ldr r1, _0811048C @ =gUnknown_203ADE4 + ldrb r2, [r1, 0x2] + mov r8, r2 + lsls r0, 24 + asrs r6, r0, 24 + adds r5, r1, 0 + cmp r6, 0 + beq _081104A6 + movs r7, 0x2 + ldrsb r7, [r5, r7] + ldrb r4, [r5, 0x9] + adds r0, r7, 0 + adds r1, r4, 0 + bl __modsi3 + adds r0, r6 + cmp r0, 0 + bge _08110490 + adds r0, r4, 0 + adds r0, 0xFF + add r0, r8 + b _081104A4 + .align 2, 0 +_0811048C: .4byte gUnknown_203ADE4 +_08110490: + cmp r0, r4 + blt _081104A0 + adds r0, r7, 0 + adds r1, r4, 0 + bl __divsi3 + muls r0, r4 + b _081104A4 +_081104A0: + mov r1, r8 + adds r0, r6, r1 +_081104A4: + strb r0, [r5, 0x2] +_081104A6: + mov r2, r9 + lsls r0, r2, 24 + asrs r6, r0, 24 + cmp r6, 0 + beq _081104EA + movs r0, 0x2 + ldrsb r0, [r5, r0] + ldrb r4, [r5, 0x9] + adds r1, r4, 0 + bl __divsi3 + adds r1, r0, r6 + cmp r1, 0 + bge _081104CE + ldrb r0, [r5, 0xA] + subs r0, 0x1 + muls r0, r4 + ldrb r1, [r5, 0x2] + adds r0, r1 + b _081104E8 +_081104CE: + ldrb r0, [r5, 0xA] + cmp r1, r0 + blt _081104E0 + subs r0, 0x1 + adds r1, r4, 0 + muls r1, r0 + ldrb r0, [r5, 0x2] + subs r0, r1 + b _081104E8 +_081104E0: + adds r0, r4, 0 + muls r0, r6 + ldrb r2, [r5, 0x2] + adds r0, r2 +_081104E8: + strb r0, [r5, 0x2] +_081104EA: + movs r1, 0x2 + ldrsb r1, [r5, r1] + movs r0, 0x4 + ldrsb r0, [r5, r0] + cmp r1, r0 + bgt _08110500 + ldrb r1, [r5, 0x2] + mov r0, r8 + bl sub_811037C + b _08110504 +_08110500: + mov r0, r8 + strb r0, [r5, 0x2] +_08110504: + ldrb r0, [r5, 0x2] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8110450 + + thumb_func_start sub_8110514 +sub_8110514: @ 8110514 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + ldr r1, _0811058C @ =gUnknown_203ADE4 + ldrb r7, [r1, 0x2] + lsls r0, 24 + asrs r4, r0, 24 + adds r5, r1, 0 + cmp r4, 0 + beq _08110548 + movs r0, 0x2 + ldrsb r0, [r5, r0] + ldrb r6, [r5, 0x9] + adds r1, r6, 0 + bl __modsi3 + adds r0, r4 + cmp r0, 0 + blt _08110548 + cmp r0, r6 + bge _08110548 + adds r0, r4, r7 + strb r0, [r5, 0x2] +_08110548: + mov r1, r8 + lsls r0, r1, 24 + asrs r4, r0, 24 + cmp r4, 0 + beq _08110574 + movs r0, 0x2 + ldrsb r0, [r5, r0] + ldrb r6, [r5, 0x9] + adds r1, r6, 0 + bl __divsi3 + adds r0, r4 + cmp r0, 0 + blt _08110574 + ldrb r1, [r5, 0xA] + cmp r0, r1 + bge _08110574 + adds r0, r6, 0 + muls r0, r4 + ldrb r1, [r5, 0x2] + adds r0, r1 + strb r0, [r5, 0x2] +_08110574: + movs r1, 0x2 + ldrsb r1, [r5, r1] + movs r0, 0x4 + ldrsb r0, [r5, r0] + cmp r1, r0 + bgt _08110590 + ldrb r1, [r5, 0x2] + adds r0, r7, 0 + bl sub_811037C + b _08110592 + .align 2, 0 +_0811058C: .4byte gUnknown_203ADE4 +_08110590: + strb r7, [r5, 0x2] +_08110592: + ldrb r0, [r5, 0x2] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8110514 + + thumb_func_start sub_81105A0 +sub_81105A0: @ 81105A0 + push {r4,lr} + ldr r4, _081105C0 @ =gUnknown_30030F0 + ldrh r1, [r4, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081105C8 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _081105C4 @ =gUnknown_203ADE4 + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + b _08110648 + .align 2, 0 +_081105C0: .4byte gUnknown_30030F0 +_081105C4: .4byte gUnknown_203ADE4 +_081105C8: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081105D6 + movs r0, 0x1 + negs r0, r0 + b _08110648 +_081105D6: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _081105EC + movs r0, 0x5 + bl sub_80722CC + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + b _08110640 +_081105EC: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08110600 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + movs r1, 0x1 + b _08110640 +_08110600: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08110614 + bl sub_80BF630 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08110620 +_08110614: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + b _0811063E +_08110620: + ldrh r1, [r4, 0x2E] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08110636 + bl sub_80BF630 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08110644 +_08110636: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 +_0811063E: + movs r1, 0 +_08110640: + bl sub_8110450 +_08110644: + movs r0, 0x2 + negs r0, r0 +_08110648: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81105A0 + + thumb_func_start sub_8110650 +sub_8110650: @ 8110650 + push {r4-r6,lr} + ldr r5, _08110670 @ =gUnknown_203ADE4 + ldrb r4, [r5, 0x2] + ldr r6, _08110674 @ =gUnknown_30030F0 + ldrh r1, [r6, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08110678 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x2 + ldrsb r0, [r5, r0] + b _081106EE + .align 2, 0 +_08110670: .4byte gUnknown_203ADE4 +_08110674: .4byte gUnknown_30030F0 +_08110678: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08110686 + movs r0, 0x1 + negs r0, r0 + b _081106EE +_08110686: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08110696 + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + b _081106D8 +_08110696: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _081106A4 + movs r0, 0 + movs r1, 0x1 + b _081106D8 +_081106A4: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _081106B8 + bl sub_80BF630 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081106BE +_081106B8: + movs r0, 0x1 + negs r0, r0 + b _081106D6 +_081106BE: + ldrh r1, [r6, 0x2E] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _081106D4 + bl sub_80BF630 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _081106EA +_081106D4: + movs r0, 0x1 +_081106D6: + movs r1, 0 +_081106D8: + bl sub_8110514 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _081106EA + movs r0, 0x5 + bl sub_80722CC +_081106EA: + movs r0, 0x2 + negs r0, r0 +_081106EE: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8110650 + + thumb_func_start sub_81106F4 +sub_81106F4: @ 81106F4 + push {r4,r5,lr} + ldr r4, _08110714 @ =gUnknown_30030F0 + ldrh r1, [r4, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811071C + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08110718 @ =gUnknown_203ADE4 + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + b _08110798 + .align 2, 0 +_08110714: .4byte gUnknown_30030F0 +_08110718: .4byte gUnknown_203ADE4 +_0811071C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0811072A + movs r0, 0x1 + negs r0, r0 + b _08110798 +_0811072A: + ldrh r0, [r4, 0x30] + movs r5, 0xF0 + adds r1, r5, 0 + ands r1, r0 + cmp r1, 0x40 + bne _08110744 + movs r0, 0x5 + bl sub_80722CC + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + b _08110790 +_08110744: + cmp r1, 0x80 + bne _08110754 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + movs r1, 0x1 + b _08110790 +_08110754: + cmp r1, 0x20 + beq _08110764 + bl sub_80BF66C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08110770 +_08110764: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + b _0811078E +_08110770: + ldrh r1, [r4, 0x30] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0x10 + beq _08110786 + bl sub_80BF66C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08110794 +_08110786: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 +_0811078E: + movs r1, 0 +_08110790: + bl sub_8110450 +_08110794: + movs r0, 0x2 + negs r0, r0 +_08110798: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81106F4 + + thumb_func_start sub_81107A0 +sub_81107A0: @ 81107A0 + push {r4-r6,lr} + ldr r6, _081107C0 @ =gUnknown_203ADE4 + ldrb r4, [r6, 0x2] + ldr r5, _081107C4 @ =gUnknown_30030F0 + ldrh r1, [r5, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081107C8 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x2 + ldrsb r0, [r6, r0] + b _0811083A + .align 2, 0 +_081107C0: .4byte gUnknown_203ADE4 +_081107C4: .4byte gUnknown_30030F0 +_081107C8: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081107D6 + movs r0, 0x1 + negs r0, r0 + b _0811083A +_081107D6: + ldrh r0, [r5, 0x30] + movs r6, 0xF0 + adds r1, r6, 0 + ands r1, r0 + cmp r1, 0x40 + bne _081107EA + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + b _08110824 +_081107EA: + cmp r1, 0x80 + bne _081107F4 + movs r0, 0 + movs r1, 0x1 + b _08110824 +_081107F4: + cmp r1, 0x20 + beq _08110804 + bl sub_80BF66C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0811080A +_08110804: + movs r0, 0x1 + negs r0, r0 + b _08110822 +_0811080A: + ldrh r1, [r5, 0x30] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0x10 + beq _08110820 + bl sub_80BF66C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08110836 +_08110820: + movs r0, 0x1 +_08110822: + movs r1, 0 +_08110824: + bl sub_8110514 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _08110836 + movs r0, 0x5 + bl sub_80722CC +_08110836: + movs r0, 0x2 + negs r0, r0 +_0811083A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81107A0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu2.s b/asm/menu2.s new file mode 100644 index 000000000..4a5b1569b --- /dev/null +++ b/asm/menu2.s @@ -0,0 +1,563 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_812E51C +sub_812E51C: @ 812E51C + push {r4-r6,lr} + sub sp, 0x10 + adds r4, r1, 0 + ldr r6, [sp, 0x20] + ldr r5, [sp, 0x24] + ldr r1, [sp, 0x28] + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + str r1, [sp] + mov r1, sp + strb r0, [r1, 0x4] + mov r0, sp + strb r4, [r0, 0x5] + strb r2, [r0, 0x6] + strb r3, [r0, 0x7] + ldrb r0, [r0, 0x6] + strb r0, [r1, 0x8] + mov r0, sp + ldrb r0, [r0, 0x7] + strb r0, [r1, 0x9] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F79D8 + mov r1, sp + strb r0, [r1, 0xA] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_80F79D8 + mov r1, sp + strb r0, [r1, 0xB] + mov r3, sp + ldrb r2, [r3, 0xC] + movs r1, 0x10 + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0xC] + mov r2, sp + ldrb r0, [r6, 0x1] + lsls r0, 4 + movs r4, 0xF + strb r0, [r2, 0xC] + ldrb r2, [r6] + adds r0, r4, 0 + ands r0, r2 + ldrb r2, [r3, 0xD] + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xD] + mov r2, sp + ldrb r0, [r6, 0x2] + lsls r0, 4 + ands r1, r4 + orrs r1, r0 + strb r1, [r2, 0xD] + mov r0, sp + adds r1, r5, 0 + movs r2, 0 + bl sub_8002CF4 + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_812E51C + + thumb_func_start sub_812E5A4 +sub_812E5A4: @ 812E5A4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + adds r5, r1, 0 + ldr r1, [sp, 0x28] + mov r8, r1 + ldr r1, [sp, 0x2C] + mov r9, r1 + ldr r6, [sp, 0x30] + ldr r1, [sp, 0x34] + ldr r4, [sp, 0x38] + str r4, [sp] + mov r4, sp + strb r0, [r4, 0x4] + mov r0, sp + strb r5, [r0, 0x5] + strb r2, [r0, 0x6] + strb r3, [r0, 0x7] + mov r2, sp + ldrb r0, [r0, 0x6] + strb r0, [r2, 0x8] + mov r0, sp + ldrb r0, [r0, 0x7] + strb r0, [r2, 0x9] + mov r0, sp + mov r2, r8 + strb r2, [r0, 0xA] + mov r2, r9 + strb r2, [r0, 0xB] + ldrb r3, [r4, 0xC] + movs r2, 0x10 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r4, 0xC] + mov r3, sp + ldrb r0, [r6, 0x1] + lsls r0, 4 + movs r5, 0xF + strb r0, [r3, 0xC] + ldrb r3, [r6] + adds r0, r5, 0 + ands r0, r3 + ldrb r3, [r4, 0xD] + ands r2, r3 + orrs r2, r0 + strb r2, [r4, 0xD] + mov r3, sp + ldrb r0, [r6, 0x2] + lsls r0, 4 + ands r2, r5 + orrs r2, r0 + strb r2, [r3, 0xD] + lsls r1, 24 + lsrs r1, 24 + mov r0, sp + movs r2, 0 + bl sub_8002CF4 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_812E5A4 + + thumb_func_start sub_812E62C +sub_812E62C: @ 812E62C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + adds r6, r1, 0 + ldr r4, [sp, 0x2C] + ldr r1, [sp, 0x30] + mov r8, r1 + ldr r7, [sp, 0x34] + ldr r5, [sp, 0x38] + ldr r1, [sp, 0x3C] + mov r9, r1 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + str r2, [sp] + mov r1, sp + strb r0, [r1, 0x4] + mov r0, sp + strb r6, [r0, 0x5] + strb r3, [r0, 0x6] + strb r4, [r0, 0x7] + strb r3, [r0, 0x8] + strb r4, [r0, 0x9] + strb r5, [r0, 0xA] + mov r1, r9 + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r5, 0x10 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + strb r0, [r2, 0xC] + adds r0, r6, 0 + movs r1, 0x5 + bl sub_80F79D8 + mov r3, sp + lsls r0, 4 + ldrb r2, [r3, 0xC] + movs r4, 0xF + adds r1, r4, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xC] + adds r0, r6, 0 + movs r1, 0x6 + bl sub_80F79D8 + mov r2, sp + adds r1, r4, 0 + ands r1, r0 + ldrb r0, [r2, 0xD] + ands r5, r0 + orrs r5, r1 + strb r5, [r2, 0xD] + adds r0, r6, 0 + movs r1, 0x7 + bl sub_80F79D8 + mov r2, sp + lsls r0, 4 + ldrb r1, [r2, 0xD] + ands r4, r1 + orrs r4, r0 + strb r4, [r2, 0xD] + mov r0, sp + mov r1, r8 + adds r2, r7, 0 + bl sub_8002CF4 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812E62C + + thumb_func_start sub_812E6DC +sub_812E6DC: @ 812E6DC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r2, 16 + lsrs r5, r2, 16 + lsls r3, 16 + lsrs r6, r3, 16 + movs r4, 0 + ldr r0, _0812E734 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r0, [r2] + ldr r7, _0812E738 @ =gUnknown_2021D18 + cmp r0, 0xFF + beq _0812E70A +_0812E700: + adds r4, 0x1 + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0812E700 +_0812E70A: + adds r0, r7, 0 + bl sub_8008FCC + cmp r4, 0x5 + beq _0812E73C + lsls r3, r5, 24 + lsrs r3, 24 + lsls r0, r6, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + mov r0, r8 + movs r1, 0x2 + adds r2, r7, 0 + bl sub_8002C48 + b _0812E75C + .align 2, 0 +_0812E734: .4byte gUnknown_300500C +_0812E738: .4byte gUnknown_2021D18 +_0812E73C: + lsls r3, r5, 24 + lsrs r3, 24 + lsls r0, r6, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + mov r0, r8 + movs r1, 0x2 + adds r2, r7, 0 + bl sub_812E62C +_0812E75C: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812E6DC + + thumb_func_start sub_812E768 +sub_812E768: @ 812E768 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + str r0, [sp] + str r1, [sp, 0x4] + ldr r0, [sp, 0x48] + ldr r4, [sp, 0x4C] + ldr r1, [sp, 0x50] + ldr r5, [sp, 0x54] + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x8] + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + lsls r4, 16 + lsrs r4, 16 + lsls r1, 16 + lsrs r1, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r2, [sp, 0x4] + ldrh r0, [r2, 0x4] + ldr r2, [sp, 0xC] + subs r0, r2 + ldr r2, [sp, 0x8] + adds r2, r1, r2 + str r2, [sp, 0x10] + cmp r0, r1 + bge _0812E7B4 + ldr r1, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x10] +_0812E7B4: + ldr r2, [sp, 0x4] + ldrh r1, [r2, 0x6] + subs r0, r1, r4 + cmp r0, r5 + bge _0812E7C6 + adds r0, r3, r1 + subs r0, r4 + str r0, [sp, 0x14] + b _0812E7CA +_0812E7C6: + adds r5, r3, r5 + str r5, [sp, 0x14] +_0812E7CA: + ldr r0, [sp] + ldrh r1, [r0, 0x4] + movs r2, 0x7 + adds r0, r1, 0 + ands r0, r2 + adds r1, r0 + asrs r1, 3 + str r1, [sp, 0x18] + ldr r0, [sp, 0x4] + ldrh r1, [r0, 0x4] + adds r0, r1, 0 + ands r0, r2 + adds r1, r0 + asrs r1, 3 + str r1, [sp, 0x1C] + mov r12, r3 + mov r8, r4 + ldr r1, [sp, 0x14] + cmp r12, r1 + blt _0812E7F4 + b _0812E932 +_0812E7F4: + ldr r5, [sp, 0x8] + ldr r6, [sp, 0xC] + mov r2, r12 + adds r2, 0x1 + str r2, [sp, 0x20] + mov r0, r8 + adds r0, 0x1 + str r0, [sp, 0x24] + ldr r1, [sp, 0x10] + cmp r5, r1 + blt _0812E80C + b _0812E922 +_0812E80C: + movs r7, 0x1 + movs r2, 0xF0 + mov r10, r2 + movs r0, 0xF + mov r9, r0 +_0812E816: + asrs r0, r5, 1 + movs r1, 0x3 + ands r0, r1 + ldr r2, [sp] + ldr r1, [r2] + adds r1, r0 + asrs r0, r5, 3 + lsls r0, 5 + adds r1, r0 + mov r2, r12 + asrs r0, r2, 3 + ldr r2, [sp, 0x18] + muls r0, r2 + lsls r0, 5 + adds r1, r0 + mov r2, r12 + lsls r0, r2, 29 + lsrs r0, 27 + adds r3, r1, r0 + asrs r0, r6, 1 + movs r1, 0x3 + ands r0, r1 + ldr r2, [sp, 0x4] + ldr r1, [r2] + adds r1, r0 + asrs r0, r6, 3 + lsls r0, 5 + adds r1, r0 + mov r2, r8 + asrs r0, r2, 3 + ldr r2, [sp, 0x1C] + muls r0, r2 + lsls r0, 5 + adds r1, r0 + mov r2, r8 + lsls r0, r2, 29 + lsrs r0, 27 + adds r4, r1, r0 + adds r0, r4, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E8C2 + subs r4, 0x1 + adds r0, r6, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E89A + ldrh r0, [r4] + ldr r2, _0812E88C @ =0x00000fff + ands r2, r0 + adds r0, r5, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E890 + ldrb r1, [r3] + mov r0, r10 + ands r0, r1 + lsls r0, 8 + b _0812E912 + .align 2, 0 +_0812E88C: .4byte 0x00000fff +_0812E890: + ldrb r1, [r3] + mov r0, r9 + ands r0, r1 + lsls r0, 12 + b _0812E912 +_0812E89A: + ldrh r0, [r4] + ldr r2, _0812E8B4 @ =0x0000f0ff + ands r2, r0 + adds r0, r5, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E8B8 + ldrb r1, [r3] + mov r0, r10 + ands r0, r1 + lsls r0, 4 + b _0812E912 + .align 2, 0 +_0812E8B4: .4byte 0x0000f0ff +_0812E8B8: + ldrb r1, [r3] + mov r0, r9 + ands r0, r1 + lsls r0, 8 + b _0812E912 +_0812E8C2: + adds r0, r6, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E8EE + ldrh r0, [r4] + ldr r2, _0812E8E0 @ =0x0000ff0f + ands r2, r0 + adds r0, r5, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E8E4 + ldrb r1, [r3] + mov r0, r10 + b _0812E910 + .align 2, 0 +_0812E8E0: .4byte 0x0000ff0f +_0812E8E4: + ldrb r1, [r3] + mov r0, r9 + ands r0, r1 + lsls r0, 4 + b _0812E912 +_0812E8EE: + ldrh r0, [r4] + ldr r2, _0812E908 @ =0x0000fff0 + ands r2, r0 + adds r0, r5, 0 + ands r0, r7 + cmp r0, 0 + beq _0812E90C + ldrb r1, [r3] + mov r0, r10 + ands r0, r1 + lsrs r0, 4 + b _0812E912 + .align 2, 0 +_0812E908: .4byte 0x0000fff0 +_0812E90C: + ldrb r1, [r3] + mov r0, r9 +_0812E910: + ands r0, r1 +_0812E912: + orrs r2, r0 + strh r2, [r4] + adds r5, 0x1 + adds r6, 0x1 + ldr r0, [sp, 0x10] + cmp r5, r0 + bge _0812E922 + b _0812E816 +_0812E922: + ldr r1, [sp, 0x20] + mov r12, r1 + ldr r2, [sp, 0x24] + mov r8, r2 + ldr r0, [sp, 0x14] + cmp r12, r0 + bge _0812E932 + b _0812E7F4 +_0812E932: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812E768 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s new file mode 100644 index 000000000..47ccd5500 --- /dev/null +++ b/asm/menu_helpers.s @@ -0,0 +1,628 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BF474 +sub_80BF474: @ 80BF474 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + adds r6, r1, 0 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r7, r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080BF500 @ =gUnknown_20399D0 + strb r6, [r0] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_810EDC4 + ldr r4, _080BF504 @ =gUnknown_2021D18 + ldr r0, [sp, 0x30] + cmp r0, r4 + beq _080BF4B8 + adds r0, r4, 0 + ldr r1, [sp, 0x30] + bl sub_8008FCC +_080BF4B8: + ldr r2, _080BF508 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + adds r0, r6, 0 + adds r1, r7, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_80F6CD0 + ldr r1, _080BF50C @ =gUnknown_20399CC + ldr r0, [sp, 0x34] + str r0, [r1] + ldr r1, _080BF510 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF514 @ =sub_80BF534 + str r1, [r0] + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF500: .4byte gUnknown_20399D0 +_080BF504: .4byte gUnknown_2021D18 +_080BF508: .4byte gUnknown_3003E50 +_080BF50C: .4byte gUnknown_20399CC +_080BF510: .4byte gUnknown_3005090 +_080BF514: .4byte sub_80BF534 + thumb_func_end sub_80BF474 + + thumb_func_start sub_80BF518 +sub_80BF518: @ 80BF518 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8002DE8 + adds r0, r4, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BF518 + + thumb_func_start sub_80BF534 +sub_80BF534: @ 80BF534 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BF558 @ =gUnknown_20399D0 + ldrb r0, [r0] + bl sub_80BF518 + lsls r0, 16 + cmp r0, 0 + bne _080BF552 + ldr r0, _080BF55C @ =gUnknown_20399CC + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 +_080BF552: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF558: .4byte gUnknown_20399D0 +_080BF55C: .4byte gUnknown_20399CC + thumb_func_end sub_80BF534 + + thumb_func_start sub_80BF560 +sub_80BF560: @ 80BF560 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080BF586 + cmp r1, 0 + bgt _080BF580 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080BF5A8 + b _080BF5C0 +_080BF580: + cmp r1, 0x1 + beq _080BF5A8 + b _080BF5C0 +_080BF586: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080BF5A0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF5A4 @ =gUnknown_20399C8 + ldr r1, [r1] + ldr r1, [r1] + b _080BF5BE + .align 2, 0 +_080BF5A0: .4byte gUnknown_3005090 +_080BF5A4: .4byte gUnknown_20399C8 +_080BF5A8: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080BF5C8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF5CC @ =gUnknown_20399C8 + ldr r1, [r1] + ldr r1, [r1, 0x4] +_080BF5BE: + str r1, [r0] +_080BF5C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF5C8: .4byte gUnknown_3005090 +_080BF5CC: .4byte gUnknown_20399C8 + thumb_func_end sub_80BF560 + + thumb_func_start sub_80BF5D0 +sub_80BF5D0: @ 80BF5D0 + push {r4-r7,lr} + sub sp, 0xC + adds r6, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + ldr r7, [sp, 0x2C] + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + bl sub_810FF60 + ldr r0, _080BF624 @ =gUnknown_20399C8 + str r7, [r0] + ldr r1, _080BF628 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF62C @ =sub_80BF560 + str r1, [r0] + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF624: .4byte gUnknown_20399C8 +_080BF628: .4byte gUnknown_3005090 +_080BF62C: .4byte sub_80BF560 + thumb_func_end sub_80BF5D0 + + thumb_func_start sub_80BF630 +sub_80BF630: @ 80BF630 + push {lr} + ldr r0, _080BF650 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _080BF666 + ldr r0, _080BF654 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080BF658 + movs r0, 0x1 + b _080BF668 + .align 2, 0 +_080BF650: .4byte gUnknown_300500C +_080BF654: .4byte gUnknown_30030F0 +_080BF658: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080BF666 + movs r0, 0x2 + b _080BF668 +_080BF666: + movs r0, 0 +_080BF668: + pop {r1} + bx r1 + thumb_func_end sub_80BF630 + + thumb_func_start sub_80BF66C +sub_80BF66C: @ 80BF66C + push {lr} + ldr r0, _080BF68C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _080BF6A2 + ldr r0, _080BF690 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x30] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080BF694 + movs r0, 0x1 + b _080BF6A4 + .align 2, 0 +_080BF68C: .4byte gUnknown_300500C +_080BF690: .4byte gUnknown_30030F0 +_080BF694: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080BF6A2 + movs r0, 0x2 + b _080BF6A4 +_080BF6A2: + movs r0, 0 +_080BF6A4: + pop {r1} + bx r1 + thumb_func_end sub_80BF66C + + thumb_func_start sub_80BF6A8 +sub_80BF6A8: @ 80BF6A8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _080BF6D0 + ldr r0, _080BF6CC @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _080BF6C8 + bl sub_811B0D0 + cmp r0, 0x1 + bne _080BF6D0 +_080BF6C8: + movs r0, 0 + b _080BF6D2 + .align 2, 0 +_080BF6CC: .4byte gUnknown_3005008 +_080BF6D0: + movs r0, 0x1 +_080BF6D2: + pop {r1} + bx r1 + thumb_func_end sub_80BF6A8 + + thumb_func_start sub_80BF6D8 +sub_80BF6D8: @ 80BF6D8 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_805642C + cmp r0, 0x1 + beq _080BF6EE + bl sub_811B0D0 + cmp r0, 0x1 + bne _080BF700 +_080BF6EE: + adds r0, r4, 0 + bl sub_80980F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BF700 + movs r0, 0 + b _080BF702 +_080BF700: + movs r0, 0x1 +_080BF702: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BF6D8 + + thumb_func_start sub_80BF708 +sub_80BF708: @ 80BF708 + push {lr} + bl sub_805642C + cmp r0, 0x1 + beq _080BF71A + ldr r0, _080BF720 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080BF724 +_080BF71A: + movs r0, 0x1 + b _080BF726 + .align 2, 0 +_080BF720: .4byte gUnknown_3003F64 +_080BF724: + movs r0, 0 +_080BF726: + pop {r1} + bx r1 + thumb_func_end sub_80BF708 + + thumb_func_start sub_80BF72C +sub_80BF72C: @ 80BF72C + push {lr} + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + beq _080BF742 + bl sub_8058244 + lsls r0, 24 + lsrs r0, 24 + b _080BF744 +_080BF742: + movs r0, 0 +_080BF744: + pop {r1} + bx r1 + thumb_func_end sub_80BF72C + + thumb_func_start sub_80BF748 +sub_80BF748: @ 80BF748 + push {lr} + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080BF75E + bl sub_800B270 + cmp r0, 0x1 + bne _080BF762 +_080BF75E: + movs r0, 0x1 + b _080BF764 +_080BF762: + movs r0, 0 +_080BF764: + pop {r1} + bx r1 + thumb_func_end sub_80BF748 + + thumb_func_start sub_80BF768 +sub_80BF768: @ 80BF768 + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_80BF768 + + thumb_func_start sub_80BF77C +sub_80BF77C: @ 80BF77C + push {r4,lr} + sub sp, 0xC + bl sub_80BF7C8 + mov r1, sp + movs r0, 0 + strh r0, [r1] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _080BF7BC @ =0x0100c000 + mov r0, sp + bl CpuSet + movs r4, 0 + str r4, [sp, 0x4] + add r0, sp, 0x4 + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _080BF7C0 @ =0x05000100 + bl CpuSet + add r0, sp, 0x8 + strh r4, [r0] + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _080BF7C4 @ =0x01000200 + bl CpuSet + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF7BC: .4byte 0x0100c000 +_080BF7C0: .4byte 0x05000100 +_080BF7C4: .4byte 0x01000200 + thumb_func_end sub_80BF77C + + thumb_func_start sub_80BF7C8 +sub_80BF7C8: @ 80BF7C8 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xE + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_80BF7C8 + + thumb_func_start sub_80BF848 +sub_80BF848: @ 80BF848 + push {r4-r6,lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r5, r1, 0 + ldrh r4, [r2] + adds r6, r4, 0 + ldr r0, _080BF87C @ =gUnknown_30030F0 + ldrh r0, [r0, 0x30] + movs r3, 0xF0 + ands r3, r0 + cmp r3, 0x40 + bne _080BF880 + adds r0, r4, 0x1 + strh r0, [r2] + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, r1 + ble _080BF872 + movs r0, 0x1 + strh r0, [r2] +_080BF872: + movs r0, 0 + ldrsh r1, [r2, r0] +_080BF876: + lsls r0, r4, 16 + b _080BF8CA + .align 2, 0 +_080BF87C: .4byte gUnknown_30030F0 +_080BF880: + cmp r3, 0x80 + bne _080BF896 + subs r0, r4, 0x1 + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + bgt _080BF890 + strh r1, [r2] +_080BF890: + movs r3, 0 + ldrsh r1, [r2, r3] + b _080BF876 +_080BF896: + cmp r3, 0x10 + bne _080BF8B0 + adds r0, r4, 0 + adds r0, 0xA + strh r0, [r2] + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, r5 + ble _080BF8AA + strh r5, [r2] +_080BF8AA: + movs r3, 0 + ldrsh r1, [r2, r3] + b _080BF876 +_080BF8B0: + cmp r3, 0x20 + bne _080BF8DA + adds r0, r4, 0 + subs r0, 0xA + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + bgt _080BF8C4 + movs r0, 0x1 + strh r0, [r2] +_080BF8C4: + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r0, r6, 16 +_080BF8CA: + asrs r0, 16 + cmp r1, r0 + beq _080BF8DA + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + b _080BF8DC +_080BF8DA: + movs r0, 0 +_080BF8DC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80BF848 + + thumb_func_start sub_80BF8E4 +sub_80BF8E4: @ 80BF8E4 + push {lr} + bl sub_80CBE00 + lsls r0, 24 + cmp r0, 0 + beq _080BF8F4 + movs r0, 0x5 + b _080BF8F6 +_080BF8F4: + movs r0, 0x4 +_080BF8F6: + pop {r1} + bx r1 + thumb_func_end sub_80BF8E4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu_indicators.s b/asm/menu_indicators.s new file mode 100644 index 000000000..e4a817059 --- /dev/null +++ b/asm/menu_indicators.s @@ -0,0 +1,1185 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8133904 +sub_8133904: @ 8133904 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08133916 + cmp r0, 0x1 + beq _0813392A + b _08133984 +_08133916: + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _08133984 +_0813392A: + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813393A + cmp r0, 0x1 + beq _08133960 + ldrh r2, [r4, 0x38] + b _0813397E +_0813393A: + movs r0, 0x34 + ldrsh r3, [r4, r0] + ldr r1, _0813395C @ =gUnknown_825E074 + ldrh r2, [r4, 0x38] + lsls r0, r2, 24 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + muls r0, r3 + cmp r0, 0 + bge _08133954 + adds r0, 0xFF +_08133954: + asrs r0, 8 + strh r0, [r4, 0x24] + b _0813397E + .align 2, 0 +_0813395C: .4byte gUnknown_825E074 +_08133960: + movs r0, 0x34 + ldrsh r3, [r4, r0] + ldr r1, _0813398C @ =gUnknown_825E074 + ldrh r2, [r4, 0x38] + lsls r0, r2, 24 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + muls r0, r3 + cmp r0, 0 + bge _0813397A + adds r0, 0xFF +_0813397A: + asrs r0, 8 + strh r0, [r4, 0x26] +_0813397E: + ldrh r0, [r4, 0x36] + adds r0, r2, r0 + strh r0, [r4, 0x38] +_08133984: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813398C: .4byte gUnknown_825E074 + thumb_func_end sub_8133904 + + thumb_func_start sub_8133990 +sub_8133990: @ 8133990 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x18 + adds r6, r0, 0 + ldr r5, [sp, 0x30] + lsls r6, 24 + lsrs r6, 24 + mov r8, r6 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r5, 16 + lsrs r5, 16 + mov r12, r5 + mov r4, sp + ldr r0, _08133A14 @ =gUnknown_84632A4 + ldm r0!, {r5-r7} + stm r4!, {r5-r7} + ldm r0!, {r5-r7} + stm r4!, {r5-r7} + mov r0, sp + movs r4, 0 + strh r3, [r0] + mov r3, r12 + strh r3, [r0, 0x2] + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08133A18 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r3, r1 + adds r5, r3, 0 + adds r5, 0x3E + ldrb r1, [r5] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r5] + strh r4, [r3, 0x2E] + ldr r1, _08133A1C @ =gUnknown_846325C + mov r5, r8 + lsls r6, r5, 2 + adds r6, r1 + ldrb r2, [r6] + lsls r1, r2, 28 + lsrs r1, 28 + strh r1, [r3, 0x30] + lsrs r2, 4 + strh r2, [r3, 0x32] + ldrb r1, [r6, 0x1] + strh r1, [r3, 0x34] + ldrh r1, [r6, 0x2] + strh r1, [r3, 0x36] + strh r4, [r3, 0x38] + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08133A14: .4byte gUnknown_84632A4 +_08133A18: .4byte gUnknown_202063C +_08133A1C: .4byte gUnknown_846325C + thumb_func_end sub_8133990 + + thumb_func_start sub_8133A20 +sub_8133A20: @ 8133A20 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + adds r6, r0, 0 + mov r9, r1 + ldr r0, _08133A6C @ =gUnknown_8463328 + str r0, [sp, 0x4] + ldr r5, _08133A70 @ =0xffff0000 + ldr r0, [sp, 0x8] + ands r0, r5 + movs r1, 0x80 + lsls r1, 1 + orrs r0, r1 + ldrh r1, [r6, 0xA] + lsls r1, 16 + ldr r4, _08133A74 @ =0x0000ffff + ands r0, r4 + orrs r0, r1 + str r0, [sp, 0x8] + add r0, sp, 0x4 + bl sub_800EBCC + ldrh r2, [r6, 0xC] + cmp r2, r4 + bne _08133A7C + ldr r0, _08133A78 @ =gUnknown_8463308 + ldrb r1, [r6, 0xE] + lsls r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + b _08133A8E + .align 2, 0 +_08133A6C: .4byte gUnknown_8463328 +_08133A70: .4byte 0xffff0000 +_08133A74: .4byte 0x0000ffff +_08133A78: .4byte gUnknown_8463308 +_08133A7C: + ldr r0, _08133B2C @ =gUnknown_8463308 + str r0, [sp, 0xC] + add r0, sp, 0xC + ldr r1, [r0, 0x4] + ands r1, r5 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_8008928 +_08133A8E: + ldr r0, _08133B30 @ =sub_8133BA4 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _08133B34 @ =gUnknown_3005098 + adds r7, r0, r1 + movs r0, 0 + strb r0, [r7] + mov r0, r9 + str r0, [r7, 0x4] + ldrh r0, [r6, 0x6] + strh r0, [r7, 0x8] + ldrh r0, [r6, 0x8] + strh r0, [r7, 0xA] + ldrh r0, [r6, 0xA] + strh r0, [r7, 0xE] + ldrh r0, [r6, 0xC] + strh r0, [r7, 0x10] + ldrb r0, [r6] + ldrb r1, [r6, 0x1] + ldrb r2, [r6, 0x2] + ldrh r3, [r6, 0xA] + ldrh r4, [r6, 0xC] + str r4, [sp] + bl sub_8133990 + strb r0, [r7, 0xC] + ldrb r0, [r6, 0x3] + ldrb r1, [r6, 0x4] + ldrb r2, [r6, 0x5] + ldrh r3, [r6, 0xA] + ldrh r4, [r6, 0xC] + str r4, [sp] + bl sub_8133990 + strb r0, [r7, 0xD] + ldrh r1, [r6, 0xC] + ldr r0, _08133B38 @ =0x0000ffff + cmp r1, r0 + bne _08133B1C + ldr r5, _08133B3C @ =gUnknown_202063C + ldrb r0, [r7, 0xC] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r3, [r6, 0xE] + lsls r3, 4 + ldrb r4, [r1, 0x5] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r4 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r7, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r6, 0xE] + lsls r1, 4 + ldrb r3, [r0, 0x5] + ands r2, r3 + orrs r2, r1 + strb r2, [r0, 0x5] +_08133B1C: + mov r0, r8 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08133B2C: .4byte gUnknown_8463308 +_08133B30: .4byte sub_8133BA4 +_08133B34: .4byte gUnknown_3005098 +_08133B38: .4byte 0x0000ffff +_08133B3C: .4byte gUnknown_202063C + thumb_func_end sub_8133A20 + + thumb_func_start sub_8133B40 +sub_8133B40: @ 8133B40 + push {r4,lr} + adds r4, r1, 0 + subs r0, 0x2 + cmp r0, 0x1 + bhi _08133B64 + ldr r0, _08133B60 @ =gUnknown_203B130 + movs r1, 0x2 + strb r1, [r0] + strb r4, [r0, 0x1] + strb r2, [r0, 0x2] + movs r1, 0x3 + strb r1, [r0, 0x3] + strb r4, [r0, 0x4] + strb r3, [r0, 0x5] + b _08133B76 + .align 2, 0 +_08133B60: .4byte gUnknown_203B130 +_08133B64: + ldr r0, _08133BA0 @ =gUnknown_203B130 + movs r1, 0 + strb r1, [r0] + strb r2, [r0, 0x1] + strb r4, [r0, 0x2] + movs r1, 0x1 + strb r1, [r0, 0x3] + strb r3, [r0, 0x4] + strb r4, [r0, 0x5] +_08133B76: + adds r2, r0, 0 + movs r1, 0 + movs r0, 0 + strh r0, [r2, 0x6] + ldr r0, [sp, 0x8] + strh r0, [r2, 0x8] + ldr r0, [sp, 0xC] + strh r0, [r2, 0xA] + ldr r0, [sp, 0x10] + strh r0, [r2, 0xC] + strb r1, [r2, 0xE] + adds r0, r2, 0 + ldr r1, [sp, 0x14] + bl sub_8133A20 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08133BA0: .4byte gUnknown_203B130 + thumb_func_end sub_8133B40 + + thumb_func_start sub_8133BA4 +sub_8133BA4: @ 8133BA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08133BD4 @ =gUnknown_3005098 + adds r4, r1, r0 + ldr r0, [r4, 0x4] + ldrh r5, [r0] + ldrh r0, [r4, 0x8] + cmp r5, r0 + bne _08133BDC + ldr r3, _08133BD8 @ =gUnknown_202063C + ldrb r1, [r4, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + b _08133BF2 + .align 2, 0 +_08133BD4: .4byte gUnknown_3005098 +_08133BD8: .4byte gUnknown_202063C +_08133BDC: + ldr r3, _08133C10 @ =gUnknown_202063C + ldrb r1, [r4, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 +_08133BF2: + strb r1, [r0] + ldrh r0, [r4, 0xA] + cmp r5, r0 + bne _08133C14 + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + b _08133C28 + .align 2, 0 +_08133C10: .4byte gUnknown_202063C +_08133C14: + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 +_08133C28: + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8133BA4 + + thumb_func_start sub_8133C30 +sub_8133C30: @ 8133C30 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08133C84 @ =gUnknown_3005098 + adds r5, r0, r1 + ldrh r0, [r5, 0xE] + ldr r4, _08133C88 @ =0x0000ffff + cmp r0, r4 + beq _08133C4E + bl sub_800874C +_08133C4E: + ldrh r0, [r5, 0x10] + cmp r0, r4 + beq _08133C58 + bl sub_8008A30 +_08133C58: + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08133C8C @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + ldrb r1, [r5, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + adds r0, r6, 0 + bl sub_8077508 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08133C84: .4byte gUnknown_3005098 +_08133C88: .4byte 0x0000ffff +_08133C8C: .4byte gUnknown_202063C + thumb_func_end sub_8133C30 + + thumb_func_start sub_8133C90 +sub_8133C90: @ 8133C90 + push {lr} + cmp r1, 0 + beq _08133C9A + cmp r1, 0x1 + beq _08133CA0 +_08133C9A: + bl sub_8133E38 + b _08133CA4 +_08133CA0: + bl sub_8134070 +_08133CA4: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8133C90 + + thumb_func_start sub_8133CAC +sub_8133CAC: @ 8133CAC + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + cmp r3, 0 + beq _08133CC4 + cmp r3, 0x1 + beq _08133CCA + b _08133CCE +_08133CC4: + bl sub_8133FA4 + b _08133CCE +_08133CCA: + bl sub_8134178 +_08133CCE: + pop {r0} + bx r0 + thumb_func_end sub_8133CAC + + thumb_func_start sub_8133CD4 +sub_8133CD4: @ 8133CD4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r1, 0 + beq _08133CE4 + cmp r1, 0x1 + beq _08133CEA + b _08133CEE +_08133CE4: + bl sub_8133FE8 + b _08133CEE +_08133CEA: + bl sub_81341B0 +_08133CEE: + pop {r0} + bx r0 + thumb_func_end sub_8133CD4 + + thumb_func_start nullsub_94 +nullsub_94: @ 8133CF4 + bx lr + thumb_func_end nullsub_94 + + thumb_func_start sub_8133CF8 +sub_8133CF8: @ 8133CF8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + movs r3, 0x4 + cmp r0, 0x10 + bls _08133D18 + movs r2, 0x8 + subs r0, 0x8 + cmp r2, r0 + bge _08133D18 +_08133D10: + adds r3, 0x2 + adds r2, 0x8 + cmp r2, r0 + blt _08133D10 +_08133D18: + cmp r1, 0x10 + bls _08133D2C + movs r2, 0x8 + subs r1, 0x8 + cmp r2, r1 + bge _08133D2C +_08133D24: + adds r3, 0x2 + adds r2, 0x8 + cmp r2, r1 + blt _08133D24 +_08133D2C: + lsls r0, r3, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8133CF8 + + thumb_func_start sub_8133D34 +sub_8133D34: @ 8133D34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r3, r2, 0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + ldr r0, _08133E18 @ =gUnknown_84632BC + ldr r0, [r0] + str r0, [r3] + movs r1, 0x88 + strb r1, [r3] + strb r1, [r3, 0x1] + ldr r0, _08133E1C @ =gUnknown_84632C0 + ldr r0, [r0] + str r0, [r3, 0x4] + mov r2, r8 + adds r2, 0x80 + strb r2, [r3, 0x4] + strb r1, [r3, 0x5] + ldr r0, _08133E20 @ =gUnknown_84632D4 + ldr r0, [r0] + str r0, [r3, 0x8] + strb r1, [r3, 0x8] + mov r4, r9 + adds r4, 0x80 + strb r4, [r3, 0x9] + ldr r0, _08133E24 @ =gUnknown_84632D8 + ldr r0, [r0] + str r0, [r3, 0xC] + strb r2, [r3, 0xC] + strb r4, [r3, 0xD] + movs r0, 0x4 + mov r12, r0 + mov r2, r8 + cmp r2, 0x10 + bls _08133DC8 + movs r2, 0x8 + mov r5, r8 + subs r5, 0x8 + cmp r2, r5 + bge _08133DC8 + ldr r0, _08133E28 @ =gUnknown_84632C4 + ldr r0, [r0] + str r0, [sp] + ldr r0, _08133E2C @ =gUnknown_84632D0 + ldr r6, [r0] + adds r1, r3, 0 + adds r1, 0x10 + movs r7, 0x88 + mov r10, r7 +_08133DA6: + ldr r0, [sp] + str r0, [r1] + adds r0, r2, 0 + subs r0, 0x78 + strb r0, [r1] + mov r7, r10 + strb r7, [r1, 0x1] + adds r1, 0x4 + str r6, [r1] + strb r0, [r1] + strb r4, [r1, 0x1] + adds r1, 0x4 + movs r0, 0x2 + add r12, r0 + adds r2, 0x8 + cmp r2, r5 + blt _08133DA6 +_08133DC8: + mov r2, r9 + cmp r2, 0x10 + bls _08133E06 + movs r1, 0x8 + mov r4, r9 + subs r4, 0x8 + cmp r1, r4 + bge _08133E06 + ldr r0, _08133E30 @ =gUnknown_84632C8 + ldr r6, [r0] + ldr r0, _08133E34 @ =gUnknown_84632CC + ldr r5, [r0] + mov r7, r12 + lsls r0, r7, 2 + adds r2, r0, r3 + movs r7, 0x88 + mov r3, r8 + adds r3, 0x80 +_08133DEC: + str r6, [r2] + strb r7, [r2] + adds r0, r1, 0 + subs r0, 0x78 + strb r0, [r2, 0x1] + adds r2, 0x4 + str r5, [r2] + strb r3, [r2] + strb r0, [r2, 0x1] + adds r2, 0x4 + adds r1, 0x8 + cmp r1, r4 + blt _08133DEC +_08133E06: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08133E18: .4byte gUnknown_84632BC +_08133E1C: .4byte gUnknown_84632C0 +_08133E20: .4byte gUnknown_84632D4 +_08133E24: .4byte gUnknown_84632D8 +_08133E28: .4byte gUnknown_84632C4 +_08133E2C: .4byte gUnknown_84632D0 +_08133E30: .4byte gUnknown_84632C8 +_08133E34: .4byte gUnknown_84632CC + thumb_func_end sub_8133D34 + + thumb_func_start sub_8133E38 +sub_8133E38: @ 8133E38 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + adds r6, r0, 0 + ldr r0, _08133E84 @ =gUnknown_8463398 + str r0, [sp, 0x18] + ldr r5, _08133E88 @ =0xffff0000 + add r0, sp, 0x18 + ldr r1, [r0, 0x4] + ands r1, r5 + movs r2, 0x80 + lsls r2, 1 + orrs r1, r2 + ldrh r2, [r6, 0x6] + lsls r2, 16 + ldr r3, _08133E8C @ =0x0000ffff + ands r1, r3 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_800EBCC + ldrh r2, [r6, 0x8] + ldr r7, _08133E8C @ =0x0000ffff + cmp r2, r7 + bne _08133E94 + ldr r0, _08133E90 @ =gUnknown_8463308 + ldrb r1, [r6, 0xA] + lsls r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + b _08133EA6 + .align 2, 0 +_08133E84: .4byte gUnknown_8463398 +_08133E88: .4byte 0xffff0000 +_08133E8C: .4byte 0x0000ffff +_08133E90: .4byte gUnknown_8463308 +_08133E94: + ldr r0, _08133F8C @ =gUnknown_8463308 + str r0, [sp, 0x20] + add r0, sp, 0x20 + ldr r1, [r0, 0x4] + ands r1, r5 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_8008928 +_08133EA6: + ldr r0, _08133F90 @ =nullsub_94 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08133F94 @ =gUnknown_3005098 + adds r5, r0, r1 + ldrh r0, [r6, 0x6] + movs r3, 0 + mov r8, r3 + strh r0, [r5, 0xE] + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x10] + ldrh r0, [r6, 0x2] + ldrh r1, [r6, 0x4] + bl sub_8133CF8 + strb r0, [r5] + ldrb r0, [r5] + lsls r0, 2 + bl sub_8002B9C + adds r2, r0, 0 + str r2, [r5, 0x8] + str r2, [r5, 0x4] + ldrh r0, [r6, 0x2] + ldrh r1, [r6, 0x4] + bl sub_8133D34 + mov r1, sp + ldr r0, _08133F98 @ =gUnknown_8231D00 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + mov r1, sp + ldrh r0, [r6, 0x6] + strh r0, [r1] + ldrh r0, [r6, 0x8] + strh r0, [r1, 0x2] + ldrb r1, [r6] + adds r1, 0x78 + ldrb r2, [r6, 0x1] + adds r2, 0x78 + mov r0, sp + movs r3, 0 + bl sub_8006F8C + strb r0, [r5, 0xC] + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r7, _08133F9C @ =gUnknown_202063C + adds r0, r7 + adds r1, r5, 0 + bl sub_8008A58 + ldrb r0, [r5, 0xC] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + adds r0, 0x43 + mov r1, r8 + strb r1, [r0] + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + adds r0, 0x42 + ldrb r2, [r0] + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldrh r1, [r6, 0x8] + ldr r0, _08133FA0 @ =0x0000ffff + cmp r1, r0 + bne _08133F7E + ldrb r0, [r5, 0xC] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r2, [r6, 0xA] + lsls r2, 4 + ldrb r3, [r1, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_08133F7E: + adds r0, r4, 0 + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08133F8C: .4byte gUnknown_8463308 +_08133F90: .4byte nullsub_94 +_08133F94: .4byte gUnknown_3005098 +_08133F98: .4byte gUnknown_8231D00 +_08133F9C: .4byte gUnknown_202063C +_08133FA0: .4byte 0x0000ffff + thumb_func_end sub_8133E38 + + thumb_func_start sub_8133FA4 +sub_8133FA4: @ 8133FA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + lsls r3, r0, 2 + adds r3, r0 + lsls r3, 3 + ldr r0, _08133FE0 @ =gUnknown_3005098 + adds r3, r0 + ldr r5, _08133FE4 @ =gUnknown_202063C + ldrb r4, [r3, 0xC] + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + adds r1, 0x78 + strh r1, [r0, 0x20] + ldrb r1, [r3, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r2, 0x78 + strh r2, [r0, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08133FE0: .4byte gUnknown_3005098 +_08133FE4: .4byte gUnknown_202063C + thumb_func_end sub_8133FA4 + + thumb_func_start sub_8133FE8 +sub_8133FE8: @ 8133FE8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08134034 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r0, [r4, 0x8] + bl sub_8002BC4 + ldrh r0, [r4, 0xE] + ldr r6, _08134038 @ =0x0000ffff + cmp r0, r6 + beq _0813400C + bl sub_800874C +_0813400C: + ldrh r0, [r4, 0x10] + cmp r0, r6 + beq _08134016 + bl sub_8008A30 +_08134016: + ldrb r1, [r4, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0813403C @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r5, 0 + bl sub_8077508 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08134034: .4byte gUnknown_3005098 +_08134038: .4byte 0x0000ffff +_0813403C: .4byte gUnknown_202063C + thumb_func_end sub_8133FE8 + + thumb_func_start sub_8134040 +sub_8134040: @ 8134040 + push {lr} + adds r2, r0, 0 + ldr r1, _08134068 @ =gUnknown_825E074 + ldrh r3, [r2, 0x2E] + lsls r0, r3, 24 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _08134058 + adds r0, 0x3F +_08134058: + asrs r0, 6 + strh r0, [r2, 0x24] + adds r0, r3, 0 + adds r0, 0x8 + strh r0, [r2, 0x2E] + pop {r0} + bx r0 + .align 2, 0 +_08134068: .4byte gUnknown_825E074 + thumb_func_end sub_8134040 + + thumb_func_start nullsub_95 +nullsub_95: @ 813406C + bx lr + thumb_func_end nullsub_95 + + thumb_func_start sub_8134070 +sub_8134070: @ 8134070 + push {r4-r7,lr} + sub sp, 0x28 + adds r5, r0, 0 + ldr r0, _081340B4 @ =gUnknown_84633D8 + str r0, [sp, 0x18] + ldr r6, _081340B8 @ =0xffff0000 + add r0, sp, 0x18 + ldr r1, [r0, 0x4] + ands r1, r6 + movs r2, 0x80 + orrs r1, r2 + ldrh r2, [r5, 0x6] + lsls r2, 16 + ldr r4, _081340BC @ =0x0000ffff + ands r1, r4 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_800EBCC + ldrh r2, [r5, 0x8] + cmp r2, r4 + bne _081340C4 + ldr r0, _081340C0 @ =gUnknown_8463308 + ldrb r1, [r5, 0xA] + lsls r1, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + b _081340D6 + .align 2, 0 +_081340B4: .4byte gUnknown_84633D8 +_081340B8: .4byte 0xffff0000 +_081340BC: .4byte 0x0000ffff +_081340C0: .4byte gUnknown_8463308 +_081340C4: + ldr r0, _08134160 @ =gUnknown_8463308 + str r0, [sp, 0x20] + add r0, sp, 0x20 + ldr r1, [r0, 0x4] + ands r1, r6 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_8008928 +_081340D6: + ldr r0, _08134164 @ =nullsub_95 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08134168 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x4] + mov r1, sp + ldr r0, _0813416C @ =gUnknown_84632F0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + mov r1, sp + ldrh r0, [r5, 0x6] + strh r0, [r1] + ldrh r0, [r5, 0x8] + strh r0, [r1, 0x2] + ldrb r1, [r5] + ldrb r2, [r5, 0x1] + mov r0, sp + movs r3, 0 + bl sub_8006F8C + strb r0, [r4] + ldr r3, _08134170 @ =gUnknown_202063C + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r2, 0x8 + strh r2, [r0, 0x24] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x26] + ldrh r1, [r5, 0x8] + ldr r0, _08134174 @ =0x0000ffff + cmp r1, r0 + bne _08134156 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r2, [r5, 0xA] + lsls r2, 4 + ldrb r3, [r1, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_08134156: + adds r0, r6, 0 + add sp, 0x28 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08134160: .4byte gUnknown_8463308 +_08134164: .4byte nullsub_95 +_08134168: .4byte gUnknown_3005098 +_0813416C: .4byte gUnknown_84632F0 +_08134170: .4byte gUnknown_202063C +_08134174: .4byte 0x0000ffff + thumb_func_end sub_8134070 + + thumb_func_start sub_8134178 +sub_8134178: @ 8134178 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r3, r0, 2 + adds r3, r0 + lsls r3, 3 + ldr r0, _081341A8 @ =gUnknown_3005098 + adds r3, r0 + ldr r5, _081341AC @ =gUnknown_202063C + ldrb r4, [r3] + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + strh r1, [r0, 0x20] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081341A8: .4byte gUnknown_3005098 +_081341AC: .4byte gUnknown_202063C + thumb_func_end sub_8134178 + + thumb_func_start sub_81341B0 +sub_81341B0: @ 81341B0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _081341F4 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r0, [r4, 0x2] + ldr r6, _081341F8 @ =0x0000ffff + cmp r0, r6 + beq _081341CE + bl sub_800874C +_081341CE: + ldrh r0, [r4, 0x4] + cmp r0, r6 + beq _081341D8 + bl sub_8008A30 +_081341D8: + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081341FC @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r5, 0 + bl sub_8077508 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081341F4: .4byte gUnknown_3005098 +_081341F8: .4byte 0x0000ffff +_081341FC: .4byte gUnknown_202063C + thumb_func_end sub_81341B0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/metatile_behavior.s b/asm/metatile_behavior.s new file mode 100644 index 000000000..4d29a8cd4 --- /dev/null +++ b/asm/metatile_behavior.s @@ -0,0 +1,2194 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8059AF0 +sub_8059AF0: @ 8059AF0 + movs r0, 0x1 + bx lr + thumb_func_end sub_8059AF0 + + thumb_func_start sub_8059AF4 +sub_8059AF4: @ 8059AF4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x38 + beq _08059B02 + movs r0, 0 + b _08059B04 +_08059B02: + movs r0, 0x1 +_08059B04: + pop {r1} + bx r1 + thumb_func_end sub_8059AF4 + + thumb_func_start sub_8059B08 +sub_8059B08: @ 8059B08 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x39 + beq _08059B16 + movs r0, 0 + b _08059B18 +_08059B16: + movs r0, 0x1 +_08059B18: + pop {r1} + bx r1 + thumb_func_end sub_8059B08 + + thumb_func_start sub_8059B1C +sub_8059B1C: @ 8059B1C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3A + beq _08059B2A + movs r0, 0 + b _08059B2C +_08059B2A: + movs r0, 0x1 +_08059B2C: + pop {r1} + bx r1 + thumb_func_end sub_8059B1C + + thumb_func_start sub_8059B30 +sub_8059B30: @ 8059B30 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3B + beq _08059B3E + movs r0, 0 + b _08059B40 +_08059B3E: + movs r0, 0x1 +_08059B40: + pop {r1} + bx r1 + thumb_func_end sub_8059B30 + + thumb_func_start sub_8059B44 +sub_8059B44: @ 8059B44 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _08059B52 + cmp r0, 0xD1 + bne _08059B56 +_08059B52: + movs r0, 0x1 + b _08059B58 +_08059B56: + movs r0, 0 +_08059B58: + pop {r1} + bx r1 + thumb_func_end sub_8059B44 + + thumb_func_start sub_8059B5C +sub_8059B5C: @ 8059B5C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x21 + beq _08059B6A + cmp r0, 0x2B + bne _08059B6E +_08059B6A: + movs r0, 0x1 + b _08059B70 +_08059B6E: + movs r0, 0 +_08059B70: + pop {r1} + bx r1 + thumb_func_end sub_8059B5C + + thumb_func_start sub_8059B74 +sub_8059B74: @ 8059B74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x21 + beq _08059B82 + cmp r0, 0x17 + bne _08059B86 +_08059B82: + movs r0, 0x1 + b _08059B88 +_08059B86: + movs r0, 0 +_08059B88: + pop {r1} + bx r1 + thumb_func_end sub_8059B74 + + thumb_func_start sub_8059B8C +sub_8059B8C: @ 8059B8C + movs r0, 0 + bx lr + thumb_func_end sub_8059B8C + + thumb_func_start sub_8059B90 +sub_8059B90: @ 8059B90 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _08059BAA + cmp r0, 0x16 + beq _08059BAA + cmp r0, 0x1A + beq _08059BAA + cmp r0, 0x1B + beq _08059BAA + cmp r0, 0x23 + bne _08059BAE +_08059BAA: + movs r0, 0x1 + b _08059BB0 +_08059BAE: + movs r0, 0 +_08059BB0: + pop {r1} + bx r1 + thumb_func_end sub_8059B90 + + thumb_func_start sub_8059BB4 +sub_8059BB4: @ 8059BB4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x23 + beq _08059BC2 + movs r0, 0 + b _08059BC4 +_08059BC2: + movs r0, 0x1 +_08059BC4: + pop {r1} + bx r1 + thumb_func_end sub_8059BB4 + + thumb_func_start sub_8059BC8 +sub_8059BC8: @ 8059BC8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x69 + beq _08059BD6 + movs r0, 0 + b _08059BD8 +_08059BD6: + movs r0, 0x1 +_08059BD8: + pop {r1} + bx r1 + thumb_func_end sub_8059BC8 + + thumb_func_start sub_8059BDC +sub_8059BDC: @ 8059BDC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x69 + beq _08059BEA + movs r0, 0 + b _08059BEC +_08059BEA: + movs r0, 0x1 +_08059BEC: + pop {r1} + bx r1 + thumb_func_end sub_8059BDC + + thumb_func_start sub_8059BF0 +sub_8059BF0: @ 8059BF0 + push {lr} + lsls r0, 24 + movs r1, 0x96 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _08059C04 + movs r0, 0 + b _08059C06 +_08059C04: + movs r0, 0x1 +_08059C06: + pop {r1} + bx r1 + thumb_func_end sub_8059BF0 + + thumb_func_start sub_8059C0C +sub_8059C0C: @ 8059C0C + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0x6C + bne _08059C1A + movs r1, 0x1 +_08059C1A: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8059C0C + + thumb_func_start sub_8059C20 +sub_8059C20: @ 8059C20 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0x6D + bne _08059C2E + movs r1, 0x1 +_08059C2E: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8059C20 + + thumb_func_start sub_8059C34 +sub_8059C34: @ 8059C34 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0x6E + bne _08059C42 + movs r1, 0x1 +_08059C42: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8059C34 + + thumb_func_start sub_8059C48 +sub_8059C48: @ 8059C48 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0x6F + bne _08059C56 + movs r1, 0x1 +_08059C56: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8059C48 + + thumb_func_start sub_8059C5C +sub_8059C5C: @ 8059C5C + push {lr} + lsls r0, 24 + movs r1, 0 + movs r2, 0x94 + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08059C70 + movs r1, 0x1 +_08059C70: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8059C5C + + thumb_func_start sub_8059C78 +sub_8059C78: @ 8059C78 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x61 + beq _08059C86 + movs r0, 0 + b _08059C88 +_08059C86: + movs r0, 0x1 +_08059C88: + pop {r1} + bx r1 + thumb_func_end sub_8059C78 + + thumb_func_start sub_8059C8C +sub_8059C8C: @ 8059C8C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x60 + beq _08059C9A + movs r0, 0 + b _08059C9C +_08059C9A: + movs r0, 0x1 +_08059C9C: + pop {r1} + bx r1 + thumb_func_end sub_8059C8C + + thumb_func_start sub_8059CA0 +sub_8059CA0: @ 8059CA0 + movs r0, 0 + bx lr + thumb_func_end sub_8059CA0 + + thumb_func_start sub_8059CA4 +sub_8059CA4: @ 8059CA4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08059CBC @ =gUnknown_8352F78 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08059CC0 + movs r0, 0 + b _08059CC2 + .align 2, 0 +_08059CBC: .4byte gUnknown_8352F78 +_08059CC0: + movs r0, 0x1 +_08059CC2: + pop {r1} + bx r1 + thumb_func_end sub_8059CA4 + + thumb_func_start sub_8059CC8 +sub_8059CC8: @ 8059CC8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x11 + beq _08059CD6 + movs r0, 0 + b _08059CD8 +_08059CD6: + movs r0, 0x1 +_08059CD8: + pop {r1} + bx r1 + thumb_func_end sub_8059CC8 + + thumb_func_start sub_8059CDC +sub_8059CDC: @ 8059CDC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x62 + beq _08059CEA + movs r0, 0 + b _08059CEC +_08059CEA: + movs r0, 0x1 +_08059CEC: + pop {r1} + bx r1 + thumb_func_end sub_8059CDC + + thumb_func_start sub_8059CF0 +sub_8059CF0: @ 8059CF0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x63 + beq _08059CFE + movs r0, 0 + b _08059D00 +_08059CFE: + movs r0, 0x1 +_08059D00: + pop {r1} + bx r1 + thumb_func_end sub_8059CF0 + + thumb_func_start sub_8059D04 +sub_8059D04: @ 8059D04 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x64 + beq _08059D12 + movs r0, 0 + b _08059D14 +_08059D12: + movs r0, 0x1 +_08059D14: + pop {r1} + bx r1 + thumb_func_end sub_8059D04 + + thumb_func_start sub_8059D18 +sub_8059D18: @ 8059D18 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x65 + beq _08059D26 + movs r0, 0 + b _08059D28 +_08059D26: + movs r0, 0x1 +_08059D28: + pop {r1} + bx r1 + thumb_func_end sub_8059D18 + + thumb_func_start sub_8059D2C +sub_8059D2C: @ 8059D2C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + adds r0, r4, 0 + bl sub_8059CDC + lsls r0, 24 + cmp r0, 0 + bne _08059D64 + adds r0, r4, 0 + bl sub_8059CF0 + lsls r0, 24 + cmp r0, 0 + bne _08059D64 + adds r0, r4, 0 + bl sub_8059D04 + lsls r0, 24 + cmp r0, 0 + bne _08059D64 + adds r0, r4, 0 + bl sub_8059D18 + lsls r0, 24 + cmp r0, 0 + beq _08059D66 +_08059D64: + movs r5, 0x1 +_08059D66: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8059D2C + + thumb_func_start sub_8059D70 +sub_8059D70: @ 8059D70 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xC0 + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x8 + bls _08059DA2 + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08059DA2 + cmp r1, 0x13 + beq _08059DA2 + cmp r1, 0x23 + beq _08059DA2 + adds r0, r1, 0 + subs r0, 0x54 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08059DA6 +_08059DA2: + movs r0, 0x1 + b _08059DA8 +_08059DA6: + movs r0, 0 +_08059DA8: + pop {r1} + bx r1 + thumb_func_end sub_8059D70 + + thumb_func_start sub_8059DAC +sub_8059DAC: @ 8059DAC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x23 + beq _08059DBA + movs r0, 0 + b _08059DBC +_08059DBA: + movs r0, 0x1 +_08059DBC: + pop {r1} + bx r1 + thumb_func_end sub_8059DAC + + thumb_func_start sub_8059DC0 +sub_8059DC0: @ 8059DC0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x48 + beq _08059DCE + movs r0, 0 + b _08059DD0 +_08059DCE: + movs r0, 0x1 +_08059DD0: + pop {r1} + bx r1 + thumb_func_end sub_8059DC0 + + thumb_func_start sub_8059DD4 +sub_8059DD4: @ 8059DD4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x42 + beq _08059DE2 + movs r0, 0 + b _08059DE4 +_08059DE2: + movs r0, 0x1 +_08059DE4: + pop {r1} + bx r1 + thumb_func_end sub_8059DD4 + + thumb_func_start sub_8059DE8 +sub_8059DE8: @ 8059DE8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x43 + beq _08059DF6 + movs r0, 0 + b _08059DF8 +_08059DF6: + movs r0, 0x1 +_08059DF8: + pop {r1} + bx r1 + thumb_func_end sub_8059DE8 + + thumb_func_start sub_8059DFC +sub_8059DFC: @ 8059DFC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x41 + beq _08059E0A + movs r0, 0 + b _08059E0C +_08059E0A: + movs r0, 0x1 +_08059E0C: + pop {r1} + bx r1 + thumb_func_end sub_8059DFC + + thumb_func_start sub_8059E10 +sub_8059E10: @ 8059E10 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08059E1E + movs r0, 0 + b _08059E20 +_08059E1E: + movs r0, 0x1 +_08059E20: + pop {r1} + bx r1 + thumb_func_end sub_8059E10 + + thumb_func_start sub_8059E24 +sub_8059E24: @ 8059E24 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x52 + beq _08059E32 + movs r0, 0 + b _08059E34 +_08059E32: + movs r0, 0x1 +_08059E34: + pop {r1} + bx r1 + thumb_func_end sub_8059E24 + + thumb_func_start sub_8059E38 +sub_8059E38: @ 8059E38 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x53 + beq _08059E46 + movs r0, 0 + b _08059E48 +_08059E46: + movs r0, 0x1 +_08059E48: + pop {r1} + bx r1 + thumb_func_end sub_8059E38 + + thumb_func_start sub_8059E4C +sub_8059E4C: @ 8059E4C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x51 + beq _08059E5A + movs r0, 0 + b _08059E5C +_08059E5A: + movs r0, 0x1 +_08059E5C: + pop {r1} + bx r1 + thumb_func_end sub_8059E4C + + thumb_func_start sub_8059E60 +sub_8059E60: @ 8059E60 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x50 + beq _08059E6E + movs r0, 0 + b _08059E70 +_08059E6E: + movs r0, 0x1 +_08059E70: + pop {r1} + bx r1 + thumb_func_end sub_8059E60 + + thumb_func_start sub_8059E74 +sub_8059E74: @ 8059E74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x46 + beq _08059E82 + movs r0, 0 + b _08059E84 +_08059E82: + movs r0, 0x1 +_08059E84: + pop {r1} + bx r1 + thumb_func_end sub_8059E74 + + thumb_func_start sub_8059E88 +sub_8059E88: @ 8059E88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x47 + beq _08059E96 + movs r0, 0 + b _08059E98 +_08059E96: + movs r0, 0x1 +_08059E98: + pop {r1} + bx r1 + thumb_func_end sub_8059E88 + + thumb_func_start sub_8059E9C +sub_8059E9C: @ 8059E9C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x45 + beq _08059EAA + movs r0, 0 + b _08059EAC +_08059EAA: + movs r0, 0x1 +_08059EAC: + pop {r1} + bx r1 + thumb_func_end sub_8059E9C + + thumb_func_start sub_8059EB0 +sub_8059EB0: @ 8059EB0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x44 + beq _08059EBE + movs r0, 0 + b _08059EC0 +_08059EBE: + movs r0, 0x1 +_08059EC0: + pop {r1} + bx r1 + thumb_func_end sub_8059EB0 + + thumb_func_start sub_8059EC4 +sub_8059EC4: @ 8059EC4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x80 + beq _08059ED2 + movs r0, 0 + b _08059ED4 +_08059ED2: + movs r0, 0x1 +_08059ED4: + pop {r1} + bx r1 + thumb_func_end sub_8059EC4 + + thumb_func_start sub_8059ED8 +sub_8059ED8: @ 8059ED8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x2 + bne _08059EEA + cmp r0, 0x86 + beq _08059EEE +_08059EEA: + movs r0, 0 + b _08059EF0 +_08059EEE: + movs r0, 0x1 +_08059EF0: + pop {r1} + bx r1 + thumb_func_end sub_8059ED8 + + thumb_func_start sub_8059EF4 +sub_8059EF4: @ 8059EF4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x83 + beq _08059F02 + movs r0, 0 + b _08059F04 +_08059F02: + movs r0, 0x1 +_08059F04: + pop {r1} + bx r1 + thumb_func_end sub_8059EF4 + + thumb_func_start sub_8059F08 +sub_8059F08: @ 8059F08 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _08059F16 + cmp r0, 0x16 + bne _08059F1A +_08059F16: + movs r0, 0x1 + b _08059F1C +_08059F1A: + movs r0, 0 +_08059F1C: + pop {r1} + bx r1 + thumb_func_end sub_8059F08 + + thumb_func_start sub_8059F20 +sub_8059F20: @ 8059F20 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x16 + beq _08059F2E + movs r0, 0 + b _08059F30 +_08059F2E: + movs r0, 0x1 +_08059F30: + pop {r1} + bx r1 + thumb_func_end sub_8059F20 + + thumb_func_start sub_8059F34 +sub_8059F34: @ 8059F34 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _08059F42 + cmp r0, 0xD1 + bne _08059F46 +_08059F42: + movs r0, 0x1 + b _08059F48 +_08059F46: + movs r0, 0 +_08059F48: + pop {r1} + bx r1 + thumb_func_end sub_8059F34 + + thumb_func_start sub_8059F4C +sub_8059F4C: @ 8059F4C + movs r0, 0 + bx lr + thumb_func_end sub_8059F4C + + thumb_func_start sub_8059F50 +sub_8059F50: @ 8059F50 + movs r0, 0 + bx lr + thumb_func_end sub_8059F50 + + thumb_func_start sub_8059F54 +sub_8059F54: @ 8059F54 + movs r0, 0 + bx lr + thumb_func_end sub_8059F54 + + thumb_func_start sub_8059F58 +sub_8059F58: @ 8059F58 + movs r0, 0 + bx lr + thumb_func_end sub_8059F58 + + thumb_func_start sub_8059F5C +sub_8059F5C: @ 8059F5C + movs r0, 0 + bx lr + thumb_func_end sub_8059F5C + + thumb_func_start sub_8059F60 +sub_8059F60: @ 8059F60 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08059F6E + movs r0, 0 + b _08059F70 +_08059F6E: + movs r0, 0x1 +_08059F70: + pop {r1} + bx r1 + thumb_func_end sub_8059F60 + + thumb_func_start sub_8059F74 +sub_8059F74: @ 8059F74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _08059F82 + movs r0, 0 + b _08059F84 +_08059F82: + movs r0, 0x1 +_08059F84: + pop {r1} + bx r1 + thumb_func_end sub_8059F74 + + thumb_func_start sub_8059F88 +sub_8059F88: @ 8059F88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB + beq _08059F96 + movs r0, 0 + b _08059F98 +_08059F96: + movs r0, 0x1 +_08059F98: + pop {r1} + bx r1 + thumb_func_end sub_8059F88 + + thumb_func_start sub_8059F9C +sub_8059F9C: @ 8059F9C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC + beq _08059FAA + movs r0, 0 + b _08059FAC +_08059FAA: + movs r0, 0x1 +_08059FAC: + pop {r1} + bx r1 + thumb_func_end sub_8059F9C + + thumb_func_start sub_8059FB0 +sub_8059FB0: @ 8059FB0 + push {lr} + lsls r0, 24 + movs r1, 0xEF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _08059FC4 + movs r0, 0 + b _08059FC6 +_08059FC4: + movs r0, 0x1 +_08059FC6: + pop {r1} + bx r1 + thumb_func_end sub_8059FB0 + + thumb_func_start sub_8059FCC +sub_8059FCC: @ 8059FCC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x19 + beq _08059FDA + movs r0, 0 + b _08059FDC +_08059FDA: + movs r0, 0x1 +_08059FDC: + pop {r1} + bx r1 + thumb_func_end sub_8059FCC + + thumb_func_start sub_8059FE0 +sub_8059FE0: @ 8059FE0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x17 + beq _08059FEE + movs r0, 0 + b _08059FF0 +_08059FEE: + movs r0, 0x1 +_08059FF0: + pop {r1} + bx r1 + thumb_func_end sub_8059FE0 + + thumb_func_start sub_8059FF4 +sub_8059FF4: @ 8059FF4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x26 + beq _0805A002 + movs r0, 0 + b _0805A004 +_0805A002: + movs r0, 0x1 +_0805A004: + pop {r1} + bx r1 + thumb_func_end sub_8059FF4 + + thumb_func_start sub_805A008 +sub_805A008: @ 805A008 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x27 + beq _0805A016 + movs r0, 0 + b _0805A018 +_0805A016: + movs r0, 0x1 +_0805A018: + pop {r1} + bx r1 + thumb_func_end sub_805A008 + + thumb_func_start sub_805A01C +sub_805A01C: @ 805A01C + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xEF + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bls _0805A032 + cmp r1, 0x15 + bne _0805A036 +_0805A032: + movs r0, 0x1 + b _0805A038 +_0805A036: + movs r0, 0 +_0805A038: + pop {r1} + bx r1 + thumb_func_end sub_805A01C + + thumb_func_start sub_805A03C +sub_805A03C: @ 805A03C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1A + beq _0805A04A + movs r0, 0 + b _0805A04C +_0805A04A: + movs r0, 0x1 +_0805A04C: + pop {r1} + bx r1 + thumb_func_end sub_805A03C + + thumb_func_start sub_805A050 +sub_805A050: @ 805A050 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + beq _0805A072 + adds r0, r4, 0 + bl sub_805A104 + lsls r0, 24 + cmp r0, 0 + bne _0805A072 + movs r0, 0x1 + b _0805A074 +_0805A072: + movs r0, 0 +_0805A074: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805A050 + + thumb_func_start sub_805A07C +sub_805A07C: @ 805A07C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x30 + beq _0805A08E + cmp r0, 0x34 + beq _0805A08E + cmp r0, 0x36 + bne _0805A092 +_0805A08E: + movs r0, 0x1 + b _0805A094 +_0805A092: + movs r0, 0 +_0805A094: + pop {r1} + bx r1 + thumb_func_end sub_805A07C + + thumb_func_start sub_805A098 +sub_805A098: @ 805A098 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x31 + beq _0805A0AA + cmp r0, 0x35 + beq _0805A0AA + cmp r0, 0x37 + bne _0805A0AE +_0805A0AA: + movs r0, 0x1 + b _0805A0B0 +_0805A0AE: + movs r0, 0 +_0805A0B0: + pop {r1} + bx r1 + thumb_func_end sub_805A098 + + thumb_func_start sub_805A0B4 +sub_805A0B4: @ 805A0B4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x32 + beq _0805A0C6 + cmp r0, 0x34 + beq _0805A0C6 + cmp r0, 0x35 + bne _0805A0CA +_0805A0C6: + movs r0, 0x1 + b _0805A0CC +_0805A0CA: + movs r0, 0 +_0805A0CC: + pop {r1} + bx r1 + thumb_func_end sub_805A0B4 + + thumb_func_start sub_805A0D0 +sub_805A0D0: @ 805A0D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x33 + beq _0805A0E2 + cmp r0, 0x36 + beq _0805A0E2 + cmp r0, 0x37 + bne _0805A0E6 +_0805A0E2: + movs r0, 0x1 + b _0805A0E8 +_0805A0E6: + movs r0, 0 +_0805A0E8: + pop {r1} + bx r1 + thumb_func_end sub_805A0D0 + + thumb_func_start sub_805A0EC +sub_805A0EC: @ 805A0EC + movs r0, 0 + bx lr + thumb_func_end sub_805A0EC + + thumb_func_start sub_805A0F0 +sub_805A0F0: @ 805A0F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x28 + beq _0805A0FE + movs r0, 0 + b _0805A100 +_0805A0FE: + movs r0, 0x1 +_0805A100: + pop {r1} + bx r1 + thumb_func_end sub_805A0F0 + + thumb_func_start sub_805A104 +sub_805A104: @ 805A104 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + beq _0805A112 + movs r0, 0 + b _0805A114 +_0805A112: + movs r0, 0x1 +_0805A114: + pop {r1} + bx r1 + thumb_func_end sub_805A104 + + thumb_func_start sub_805A118 +sub_805A118: @ 805A118 + movs r0, 0 + bx lr + thumb_func_end sub_805A118 + + thumb_func_start sub_805A11C +sub_805A11C: @ 805A11C + movs r0, 0 + bx lr + thumb_func_end sub_805A11C + + thumb_func_start sub_805A120 +sub_805A120: @ 805A120 + movs r0, 0 + bx lr + thumb_func_end sub_805A120 + + thumb_func_start sub_805A124 +sub_805A124: @ 805A124 + movs r0, 0 + bx lr + thumb_func_end sub_805A124 + + thumb_func_start sub_805A128 +sub_805A128: @ 805A128 + movs r0, 0 + bx lr + thumb_func_end sub_805A128 + + thumb_func_start sub_805A12C +sub_805A12C: @ 805A12C + movs r0, 0 + bx lr + thumb_func_end sub_805A12C + + thumb_func_start sub_805A130 +sub_805A130: @ 805A130 + movs r0, 0 + bx lr + thumb_func_end sub_805A130 + + thumb_func_start sub_805A134 +sub_805A134: @ 805A134 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x85 + beq _0805A142 + movs r0, 0 + b _0805A144 +_0805A142: + movs r0, 0x1 +_0805A144: + pop {r1} + bx r1 + thumb_func_end sub_805A134 + + thumb_func_start sub_805A148 +sub_805A148: @ 805A148 + movs r0, 0 + bx lr + thumb_func_end sub_805A148 + + thumb_func_start sub_805A14C +sub_805A14C: @ 805A14C + movs r0, 0 + bx lr + thumb_func_end sub_805A14C + + thumb_func_start sub_805A150 +sub_805A150: @ 805A150 + movs r0, 0 + bx lr + thumb_func_end sub_805A150 + + thumb_func_start sub_805A154 +sub_805A154: @ 805A154 + movs r0, 0 + bx lr + thumb_func_end sub_805A154 + + thumb_func_start sub_805A158 +sub_805A158: @ 805A158 + movs r0, 0 + bx lr + thumb_func_end sub_805A158 + + thumb_func_start sub_805A15C +sub_805A15C: @ 805A15C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x68 + beq _0805A16A + movs r0, 0 + b _0805A16C +_0805A16A: + movs r0, 0x1 +_0805A16C: + pop {r1} + bx r1 + thumb_func_end sub_805A15C + + thumb_func_start sub_805A170 +sub_805A170: @ 805A170 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x67 + beq _0805A17E + movs r0, 0 + b _0805A180 +_0805A17E: + movs r0, 0x1 +_0805A180: + pop {r1} + bx r1 + thumb_func_end sub_805A170 + + thumb_func_start sub_805A184 +sub_805A184: @ 805A184 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x71 + beq _0805A192 + movs r0, 0 + b _0805A194 +_0805A192: + movs r0, 0x1 +_0805A194: + pop {r1} + bx r1 + thumb_func_end sub_805A184 + + thumb_func_start sub_805A198 +sub_805A198: @ 805A198 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xF0 + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x2 + bls _0805A1BA + cmp r1, 0x15 + beq _0805A1BA + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0805A1BE +_0805A1BA: + movs r0, 0x1 + b _0805A1C0 +_0805A1BE: + movs r0, 0 +_0805A1C0: + pop {r1} + bx r1 + thumb_func_end sub_805A198 + + thumb_func_start sub_805A1C4 +sub_805A1C4: @ 805A1C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x66 + beq _0805A1D2 + movs r0, 0 + b _0805A1D4 +_0805A1D2: + movs r0, 0x1 +_0805A1D4: + pop {r1} + bx r1 + thumb_func_end sub_805A1C4 + + thumb_func_start sub_805A1D8 +sub_805A1D8: @ 805A1D8 + movs r0, 0 + bx lr + thumb_func_end sub_805A1D8 + + thumb_func_start sub_805A1DC +sub_805A1DC: @ 805A1DC + push {lr} + lsls r0, 24 + movs r1, 0xC0 + lsls r1, 22 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _0805A1F0 + movs r0, 0 + b _0805A1F2 +_0805A1F0: + movs r0, 0x1 +_0805A1F2: + pop {r1} + bx r1 + thumb_func_end sub_805A1DC + + thumb_func_start sub_805A1F8 +sub_805A1F8: @ 805A1F8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0xD1 + bne _0805A206 + movs r1, 0x1 +_0805A206: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_805A1F8 + + thumb_func_start sub_805A20C +sub_805A20C: @ 805A20C + movs r0, 0 + bx lr + thumb_func_end sub_805A20C + + thumb_func_start sub_805A210 +sub_805A210: @ 805A210 + movs r0, 0 + bx lr + thumb_func_end sub_805A210 + + thumb_func_start sub_805A214 +sub_805A214: @ 805A214 + movs r0, 0 + bx lr + thumb_func_end sub_805A214 + + thumb_func_start sub_805A218 +sub_805A218: @ 805A218 + movs r0, 0 + bx lr + thumb_func_end sub_805A218 + + thumb_func_start sub_805A21C +sub_805A21C: @ 805A21C + movs r0, 0 + bx lr + thumb_func_end sub_805A21C + + thumb_func_start sub_805A220 +sub_805A220: @ 805A220 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x22 + beq _0805A22E + movs r0, 0 + b _0805A230 +_0805A22E: + movs r0, 0x1 +_0805A230: + pop {r1} + bx r1 + thumb_func_end sub_805A220 + + thumb_func_start sub_805A234 +sub_805A234: @ 805A234 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + beq _0805A242 + movs r0, 0 + b _0805A244 +_0805A242: + movs r0, 0x1 +_0805A244: + pop {r1} + bx r1 + thumb_func_end sub_805A234 + + thumb_func_start sub_805A248 +sub_805A248: @ 805A248 + movs r0, 0 + bx lr + thumb_func_end sub_805A248 + + thumb_func_start sub_805A24C +sub_805A24C: @ 805A24C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x81 + beq _0805A25A + movs r0, 0 + b _0805A25C +_0805A25A: + movs r0, 0x1 +_0805A25C: + pop {r1} + bx r1 + thumb_func_end sub_805A24C + + thumb_func_start sub_805A260 +sub_805A260: @ 805A260 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x82 + beq _0805A26E + movs r0, 0 + b _0805A270 +_0805A26E: + movs r0, 0x1 +_0805A270: + pop {r1} + bx r1 + thumb_func_end sub_805A260 + + thumb_func_start sub_805A274 +sub_805A274: @ 805A274 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x2 + bne _0805A286 + cmp r0, 0x87 + beq _0805A28A +_0805A286: + movs r0, 0 + b _0805A28C +_0805A28A: + movs r0, 0x1 +_0805A28C: + pop {r1} + bx r1 + thumb_func_end sub_805A274 + + thumb_func_start sub_805A290 +sub_805A290: @ 805A290 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x2 + bne _0805A2A2 + cmp r0, 0x88 + beq _0805A2A6 +_0805A2A2: + movs r0, 0 + b _0805A2A8 +_0805A2A6: + movs r0, 0x1 +_0805A2A8: + pop {r1} + bx r1 + thumb_func_end sub_805A290 + + thumb_func_start sub_805A2AC +sub_805A2AC: @ 805A2AC + movs r0, 0 + bx lr + thumb_func_end sub_805A2AC + + thumb_func_start sub_805A2B0 +sub_805A2B0: @ 805A2B0 + movs r0, 0 + bx lr + thumb_func_end sub_805A2B0 + + thumb_func_start sub_805A2B4 +sub_805A2B4: @ 805A2B4 + movs r0, 0 + bx lr + thumb_func_end sub_805A2B4 + + thumb_func_start sub_805A2B8 +sub_805A2B8: @ 805A2B8 + movs r0, 0 + bx lr + thumb_func_end sub_805A2B8 + + thumb_func_start sub_805A2BC +sub_805A2BC: @ 805A2BC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805A2D4 @ =gUnknown_8353068 + adds r0, r2 + ldrb r0, [r0] + ands r0, r1 + cmp r0, 0 + bne _0805A2D8 + movs r0, 0 + b _0805A2DA + .align 2, 0 +_0805A2D4: .4byte gUnknown_8353068 +_0805A2D8: + movs r0, 0x1 +_0805A2DA: + pop {r1} + bx r1 + thumb_func_end sub_805A2BC + + thumb_func_start sub_805A2E0 +sub_805A2E0: @ 805A2E0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x54 + beq _0805A2EE + movs r0, 0 + b _0805A2F0 +_0805A2EE: + movs r0, 0x1 +_0805A2F0: + pop {r1} + bx r1 + thumb_func_end sub_805A2E0 + + thumb_func_start sub_805A2F4 +sub_805A2F4: @ 805A2F4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x55 + beq _0805A302 + movs r0, 0 + b _0805A304 +_0805A302: + movs r0, 0x1 +_0805A304: + pop {r1} + bx r1 + thumb_func_end sub_805A2F4 + + thumb_func_start sub_805A308 +sub_805A308: @ 805A308 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x56 + beq _0805A316 + movs r0, 0 + b _0805A318 +_0805A316: + movs r0, 0x1 +_0805A318: + pop {r1} + bx r1 + thumb_func_end sub_805A308 + + thumb_func_start sub_805A31C +sub_805A31C: @ 805A31C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x57 + beq _0805A32A + movs r0, 0 + b _0805A32C +_0805A32A: + movs r0, 0x1 +_0805A32C: + pop {r1} + bx r1 + thumb_func_end sub_805A31C + + thumb_func_start sub_805A330 +sub_805A330: @ 805A330 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x58 + beq _0805A33E + movs r0, 0 + b _0805A340 +_0805A33E: + movs r0, 0x1 +_0805A340: + pop {r1} + bx r1 + thumb_func_end sub_805A330 + + thumb_func_start sub_805A344 +sub_805A344: @ 805A344 + push {lr} + lsls r0, 24 + movs r1, 0 + movs r2, 0xAC + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0805A358 + movs r1, 0x1 +_0805A358: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_805A344 + + thumb_func_start sub_805A360 +sub_805A360: @ 805A360 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x84 + beq _0805A36E + movs r0, 0 + b _0805A370 +_0805A36E: + movs r0, 0x1 +_0805A370: + pop {r1} + bx r1 + thumb_func_end sub_805A360 + + thumb_func_start sub_805A374 +sub_805A374: @ 805A374 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x89 + beq _0805A382 + movs r0, 0 + b _0805A384 +_0805A382: + movs r0, 0x1 +_0805A384: + pop {r1} + bx r1 + thumb_func_end sub_805A374 + + thumb_func_start sub_805A388 +sub_805A388: @ 805A388 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8A + beq _0805A396 + movs r0, 0 + b _0805A398 +_0805A396: + movs r0, 0x1 +_0805A398: + pop {r1} + bx r1 + thumb_func_end sub_805A388 + + thumb_func_start sub_805A39C +sub_805A39C: @ 805A39C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8B + beq _0805A3AA + movs r0, 0 + b _0805A3AC +_0805A3AA: + movs r0, 0x1 +_0805A3AC: + pop {r1} + bx r1 + thumb_func_end sub_805A39C + + thumb_func_start sub_805A3B0 +sub_805A3B0: @ 805A3B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8C + beq _0805A3BE + movs r0, 0 + b _0805A3C0 +_0805A3BE: + movs r0, 0x1 +_0805A3C0: + pop {r1} + bx r1 + thumb_func_end sub_805A3B0 + + thumb_func_start sub_805A3C4 +sub_805A3C4: @ 805A3C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x20 + beq _0805A3D2 + movs r0, 0 + b _0805A3D4 +_0805A3D2: + movs r0, 0x1 +_0805A3D4: + pop {r1} + bx r1 + thumb_func_end sub_805A3C4 + + thumb_func_start sub_805A3D8 +sub_805A3D8: @ 805A3D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x2 + bne _0805A3EA + cmp r0, 0x8D + beq _0805A3EE +_0805A3EA: + movs r0, 0 + b _0805A3F0 +_0805A3EE: + movs r0, 0x1 +_0805A3F0: + pop {r1} + bx r1 + thumb_func_end sub_805A3D8 + + thumb_func_start sub_805A3F4 +sub_805A3F4: @ 805A3F4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x2 + bne _0805A406 + cmp r0, 0x8E + beq _0805A40A +_0805A406: + movs r0, 0 + b _0805A40C +_0805A40A: + movs r0, 0x1 +_0805A40C: + pop {r1} + bx r1 + thumb_func_end sub_805A3F4 + + thumb_func_start sub_805A410 +sub_805A410: @ 805A410 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8F + beq _0805A41E + movs r0, 0 + b _0805A420 +_0805A41E: + movs r0, 0x1 +_0805A420: + pop {r1} + bx r1 + thumb_func_end sub_805A410 + + thumb_func_start sub_805A424 +sub_805A424: @ 805A424 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x91 + beq _0805A432 + movs r0, 0 + b _0805A434 +_0805A432: + movs r0, 0x1 +_0805A434: + pop {r1} + bx r1 + thumb_func_end sub_805A424 + + thumb_func_start sub_805A438 +sub_805A438: @ 805A438 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x92 + beq _0805A446 + movs r0, 0 + b _0805A448 +_0805A446: + movs r0, 0x1 +_0805A448: + pop {r1} + bx r1 + thumb_func_end sub_805A438 + + thumb_func_start sub_805A44C +sub_805A44C: @ 805A44C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x90 + beq _0805A45A + movs r0, 0 + b _0805A45C +_0805A45A: + movs r0, 0x1 +_0805A45C: + pop {r1} + bx r1 + thumb_func_end sub_805A44C + + thumb_func_start sub_805A460 +sub_805A460: @ 805A460 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0x2A + bne _0805A46E + movs r1, 0x1 +_0805A46E: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_805A460 + + thumb_func_start sub_805A474 +sub_805A474: @ 805A474 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x93 + beq _0805A482 + movs r0, 0 + b _0805A484 +_0805A482: + movs r0, 0x1 +_0805A484: + pop {r1} + bx r1 + thumb_func_end sub_805A474 + + thumb_func_start sub_805A488 +sub_805A488: @ 805A488 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x94 + beq _0805A496 + movs r0, 0 + b _0805A498 +_0805A496: + movs r0, 0x1 +_0805A498: + pop {r1} + bx r1 + thumb_func_end sub_805A488 + + thumb_func_start sub_805A49C +sub_805A49C: @ 805A49C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x95 + beq _0805A4AA + movs r0, 0 + b _0805A4AC +_0805A4AA: + movs r0, 0x1 +_0805A4AC: + pop {r1} + bx r1 + thumb_func_end sub_805A49C + + thumb_func_start sub_805A4B0 +sub_805A4B0: @ 805A4B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x96 + beq _0805A4BE + movs r0, 0 + b _0805A4C0 +_0805A4BE: + movs r0, 0x1 +_0805A4C0: + pop {r1} + bx r1 + thumb_func_end sub_805A4B0 + + thumb_func_start sub_805A4C4 +sub_805A4C4: @ 805A4C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x97 + beq _0805A4D2 + movs r0, 0 + b _0805A4D4 +_0805A4D2: + movs r0, 0x1 +_0805A4D4: + pop {r1} + bx r1 + thumb_func_end sub_805A4C4 + + thumb_func_start sub_805A4D8 +sub_805A4D8: @ 805A4D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x98 + beq _0805A4E6 + movs r0, 0 + b _0805A4E8 +_0805A4E6: + movs r0, 0x1 +_0805A4E8: + pop {r1} + bx r1 + thumb_func_end sub_805A4D8 + + thumb_func_start sub_805A4EC +sub_805A4EC: @ 805A4EC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x99 + beq _0805A4FA + movs r0, 0 + b _0805A4FC +_0805A4FA: + movs r0, 0x1 +_0805A4FC: + pop {r1} + bx r1 + thumb_func_end sub_805A4EC + + thumb_func_start sub_805A500 +sub_805A500: @ 805A500 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9A + beq _0805A50E + movs r0, 0 + b _0805A510 +_0805A50E: + movs r0, 0x1 +_0805A510: + pop {r1} + bx r1 + thumb_func_end sub_805A500 + + thumb_func_start sub_805A514 +sub_805A514: @ 805A514 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9B + beq _0805A522 + movs r0, 0 + b _0805A524 +_0805A522: + movs r0, 0x1 +_0805A524: + pop {r1} + bx r1 + thumb_func_end sub_805A514 + + thumb_func_start sub_805A528 +sub_805A528: @ 805A528 + movs r0, 0 + bx lr + thumb_func_end sub_805A528 + + thumb_func_start sub_805A52C +sub_805A52C: @ 805A52C + movs r0, 0 + bx lr + thumb_func_end sub_805A52C + + thumb_func_start sub_805A530 +sub_805A530: @ 805A530 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9E + beq _0805A53E + movs r0, 0 + b _0805A540 +_0805A53E: + movs r0, 0x1 +_0805A540: + pop {r1} + bx r1 + thumb_func_end sub_805A530 + + thumb_func_start sub_805A544 +sub_805A544: @ 805A544 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9F + beq _0805A552 + movs r0, 0 + b _0805A554 +_0805A552: + movs r0, 0x1 +_0805A554: + pop {r1} + bx r1 + thumb_func_end sub_805A544 + + thumb_func_start sub_805A558 +sub_805A558: @ 805A558 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA0 + beq _0805A566 + movs r0, 0 + b _0805A568 +_0805A566: + movs r0, 0x1 +_0805A568: + pop {r1} + bx r1 + thumb_func_end sub_805A558 + + thumb_func_start sub_805A56C +sub_805A56C: @ 805A56C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA1 + beq _0805A57A + movs r0, 0 + b _0805A57C +_0805A57A: + movs r0, 0x1 +_0805A57C: + pop {r1} + bx r1 + thumb_func_end sub_805A56C + + thumb_func_start sub_805A580 +sub_805A580: @ 805A580 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA2 + beq _0805A58E + movs r0, 0 + b _0805A590 +_0805A58E: + movs r0, 0x1 +_0805A590: + pop {r1} + bx r1 + thumb_func_end sub_805A580 + + thumb_func_start sub_805A594 +sub_805A594: @ 805A594 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA3 + beq _0805A5A2 + movs r0, 0 + b _0805A5A4 +_0805A5A2: + movs r0, 0x1 +_0805A5A4: + pop {r1} + bx r1 + thumb_func_end sub_805A594 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mevent.s b/asm/mevent.s new file mode 100644 index 000000000..e3c309666 --- /dev/null +++ b/asm/mevent.s @@ -0,0 +1,2438 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81435DC +sub_81435DC: @ 81435DC + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + mov r1, sp + ldr r4, _08143630 @ =0x04000208 + ldrh r0, [r4] + strh r0, [r1] + movs r0, 0 + strh r0, [r4] + ldr r1, _08143634 @ =gIntrTable + ldr r0, _08143638 @ =sub_815C6D4 + str r0, [r1, 0x4] + ldr r0, _0814363C @ =sub_815C6C4 + str r0, [r1, 0x8] + bl sub_815C8C8 + bl sub_815C960 + ldr r2, _08143640 @ =0x04000200 + ldrh r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strh r0, [r2] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4] + movs r0, 0 + strh r0, [r5] + str r6, [r5, 0x4] + mov r0, r8 + str r0, [r5, 0x8] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08143630: .4byte 0x04000208 +_08143634: .4byte gIntrTable +_08143638: .4byte sub_815C6D4 +_0814363C: .4byte sub_815C6C4 +_08143640: .4byte 0x04000200 + thumb_func_end sub_81435DC + + thumb_func_start sub_8143644 +sub_8143644: @ 8143644 + push {r4,lr} + sub sp, 0x4 + mov r1, sp + ldr r4, _08143670 @ =0x04000208 + ldrh r0, [r4] + strh r0, [r1] + movs r0, 0 + strh r0, [r4] + bl sub_815C960 + bl sub_815C91C + bl sub_8000874 + mov r0, sp + ldrh r0, [r0] + strh r0, [r4] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08143670: .4byte 0x04000208 + thumb_func_end sub_8143644 + + thumb_func_start sub_8143674 +sub_8143674: @ 8143674 + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0 + ldr r1, [r4, 0x4] + ldr r2, [r4, 0x8] + movs r0, 0x1 + movs r3, 0 + bl sub_815C498 + adds r1, r0, 0 + strh r1, [r4] + movs r0, 0x13 + ands r0, r1 + cmp r0, 0x10 + bne _08143694 + movs r5, 0x1 +_08143694: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0814369E + movs r5, 0x2 +_0814369E: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _081436A8 + movs r5, 0x3 +_081436A8: + ldr r1, _081436B8 @ =gUnknown_3003F84 + movs r0, 0 + strb r0, [r1] + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081436B8: .4byte gUnknown_3003F84 + thumb_func_end sub_8143674 + + thumb_func_start sub_81436BC +sub_81436BC: @ 81436BC + push {lr} + ldr r0, _081436E0 @ =gUnknown_201C000 + movs r2, 0x80 + lsls r2, 6 + movs r1, 0 + bl memset + ldr r1, _081436E4 @ =gUnknown_202271A + ldr r2, _081436E8 @ =0x00005502 + adds r0, r2, 0 + strh r0, [r1] + bl sub_8009804 + movs r0, 0x1 + bl sub_800B09C + pop {r0} + bx r0 + .align 2, 0 +_081436E0: .4byte gUnknown_201C000 +_081436E4: .4byte gUnknown_202271A +_081436E8: .4byte 0x00005502 + thumb_func_end sub_81436BC + + thumb_func_start sub_81436EC +sub_81436EC: @ 81436EC + push {lr} + sub sp, 0xC + mov r1, sp + ldr r2, _08143730 @ =0x04000208 + ldrh r0, [r2] + strh r0, [r1] + movs r0, 0 + strh r0, [r2] + ldr r0, _08143734 @ =gUnknown_3003FB4 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x4] + str r1, [sp, 0x8] + mov r0, sp + ldrh r0, [r0] + strh r0, [r2] + add r2, sp, 0x4 + ldrh r1, [r2] + ldr r0, _08143738 @ =0x0000b9a0 + cmp r1, r0 + bne _08143744 + ldrh r1, [r2, 0x2] + ldr r0, _0814373C @ =0x0000ccd0 + cmp r1, r0 + bne _08143744 + ldrh r1, [r2, 0x4] + ldr r0, _08143740 @ =0x0000ffff + cmp r1, r0 + bne _08143744 + ldrh r0, [r2, 0x6] + cmp r0, r1 + bne _08143744 + movs r0, 0x1 + b _08143746 + .align 2, 0 +_08143730: .4byte 0x04000208 +_08143734: .4byte gUnknown_3003FB4 +_08143738: .4byte 0x0000b9a0 +_0814373C: .4byte 0x0000ccd0 +_08143740: .4byte 0x0000ffff +_08143744: + movs r0, 0 +_08143746: + add sp, 0xC + pop {r1} + bx r1 + thumb_func_end sub_81436EC + + thumb_func_start sub_814374C +sub_814374C: @ 814374C + push {lr} + bl sub_800AA48 + lsls r0, 24 + cmp r0, 0 + beq _08143768 + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08143768 + movs r0, 0x1 + b _0814376A +_08143768: + movs r0, 0 +_0814376A: + pop {r1} + bx r1 + thumb_func_end sub_814374C + + thumb_func_start sub_8143770 +sub_8143770: @ 8143770 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + subs r0, 0x3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _08143794 + bl sub_800B0A8 + lsls r0, 24 + cmp r0, 0 + beq _08143794 + movs r0, 0 + strb r0, [r4] + movs r0, 0x3 + b _0814389A +_08143794: + ldrb r0, [r4] + cmp r0, 0x5 + bls _0814379C + b _08143898 +_0814379C: + lsls r0, 2 + ldr r1, _081437A8 @ =_081437AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081437A8: .4byte _081437AC + .align 2, 0 +_081437AC: + .4byte _081437C4 + .4byte _081437E0 + .4byte _081437F8 + .4byte _0814382C + .4byte _08143878 + .4byte _08143884 +_081437C4: + bl sub_800AA48 + lsls r0, 24 + cmp r0, 0 + beq _08143814 + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08143814 + movs r0, 0x1 + strb r0, [r4] + b _08143898 +_081437E0: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5 + bls _08143898 + movs r0, 0 + strh r0, [r5] + movs r0, 0x2 + strb r0, [r4] + b _08143898 +_081437F8: + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08143814 + movs r0, 0x42 + bl sub_80722CC + bl sub_800A5BC + movs r0, 0 + strh r0, [r5] + b _08143872 +_08143814: + ldr r0, _08143828 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08143898 + movs r0, 0 + strb r0, [r4] + movs r0, 0x1 + b _0814389A + .align 2, 0 +_08143828: .4byte gUnknown_30030F0 +_0814382C: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bls _08143842 + movs r0, 0 + strb r0, [r4] + movs r0, 0x5 + b _0814389A +_08143842: + bl sub_800B08C + lsls r0, 24 + cmp r0, 0 + beq _08143898 + ldr r0, _08143868 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08143872 + bl sub_800A1F0 + lsls r0, 24 + cmp r0, 0 + beq _0814386C + movs r0, 0 + strb r0, [r4] + movs r0, 0x2 + b _0814389A + .align 2, 0 +_08143868: .4byte gUnknown_3003F64 +_0814386C: + movs r0, 0x4 + strb r0, [r4] + b _08143898 +_08143872: + movs r0, 0x3 + strb r0, [r4] + b _08143898 +_08143878: + movs r0, 0 + bl sub_800AA80 + movs r0, 0x5 + strb r0, [r4] + b _08143898 +_08143884: + ldr r0, _08143894 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08143898 + strb r0, [r4] + movs r0, 0x4 + b _0814389A + .align 2, 0 +_08143894: .4byte gUnknown_3003F64 +_08143898: + movs r0, 0 +_0814389A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8143770 + + thumb_func_start sub_81438A0 +sub_81438A0: @ 81438A0 + push {r4,lr} + ldr r0, _081438E0 @ =sub_8143910 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _081438E4 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + strb r0, [r4, 0x8] + strb r0, [r4, 0x9] + strb r0, [r4, 0xA] + strb r0, [r4, 0xB] + strb r0, [r4, 0xC] + strb r0, [r4, 0xD] + movs r1, 0 + strh r0, [r4] + strh r0, [r4, 0x2] + strh r0, [r4, 0x4] + strh r0, [r4, 0x6] + strb r1, [r4, 0xE] + movs r0, 0x40 + bl sub_8002BB0 + str r0, [r4, 0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081438E0: .4byte sub_8143910 +_081438E4: .4byte gUnknown_3005098 + thumb_func_end sub_81438A0 + + thumb_func_start sub_81438E8 +sub_81438E8: @ 81438E8 + movs r1, 0 + strh r1, [r0] + bx lr + thumb_func_end sub_81438E8 + + thumb_func_start sub_81438F0 +sub_81438F0: @ 81438F0 + push {lr} + adds r2, r0, 0 + lsls r1, 16 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + cmp r0, r1 + bhi _08143906 + movs r0, 0 + b _0814390C +_08143906: + movs r0, 0 + strh r0, [r2] + movs r0, 0x1 +_0814390C: + pop {r1} + bx r1 + thumb_func_end sub_81438F0 + + thumb_func_start sub_8143910 +sub_8143910: @ 8143910 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08143934 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrb r0, [r4, 0x8] + cmp r0, 0x1A + bls _08143928 + b _08143D1A +_08143928: + lsls r0, 2 + ldr r1, _08143938 @ =_0814393C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08143934: .4byte gUnknown_3005098 +_08143938: .4byte _0814393C + .align 2, 0 +_0814393C: + .4byte _081439A8 + .4byte _081439C4 + .4byte _081439D4 + .4byte _081439E8 + .4byte _081439F8 + .4byte _08143A24 + .4byte _08143A5C + .4byte _08143AD8 + .4byte _08143AF4 + .4byte _08143B1C + .4byte _08143B38 + .4byte _08143B68 + .4byte _08143B7E + .4byte _08143B94 + .4byte _08143BF6 + .4byte _08143C1C + .4byte _08143C34 + .4byte _08143C52 + .4byte _08143C7E + .4byte _08143CA4 + .4byte _08143CD4 + .4byte _08143CE0 + .4byte _08143CEC + .4byte _08143CBC + .4byte _08143D1A + .4byte _08143D1A + .4byte _08143D04 +_081439A8: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _081439C0 @ =gUnknown_841DE52 + bl sub_814257C + cmp r0, 0 + bne _081439B8 + b _08143D1A +_081439B8: + movs r0, 0x1 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_081439C0: .4byte gUnknown_841DE52 +_081439C4: + bl sub_81436BC + adds r0, r4, 0 + bl sub_81438E8 + movs r0, 0x2 + strb r0, [r4, 0x8] + b _08143D1A +_081439D4: + adds r0, r4, 0 + movs r1, 0xA + bl sub_81438F0 + cmp r0, 0 + bne _081439E2 + b _08143D1A +_081439E2: + movs r0, 0x3 + strb r0, [r4, 0x8] + b _08143D1A +_081439E8: + bl sub_814374C + cmp r0, 0 + beq _081439F2 + b _08143B88 +_081439F2: + bl sub_80098B8 + b _08143AE8 +_081439F8: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _08143A1C @ =gUnknown_841DE53 + bl sub_814257C + cmp r0, 0 + bne _08143A08 + b _08143D1A +_08143A08: + ldr r0, _08143A20 @ =gUnknown_841DE54 + bl sub_8142504 + adds r0, r4, 0 + bl sub_81438E8 + movs r0, 0x5 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143A1C: .4byte gUnknown_841DE53 +_08143A20: .4byte gUnknown_841DE54 +_08143A24: + adds r0, r4, 0 + movs r1, 0x5A + bl sub_81438F0 + cmp r0, 0 + beq _08143A3A + bl sub_81436BC + movs r0, 0x6 + strb r0, [r4, 0x8] + b _08143D1A +_08143A3A: + ldr r0, _08143A58 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08143A48 + b _08143D1A +_08143A48: + adds r0, r4, 0 + bl sub_81438E8 + movs r0, 0x5 + bl sub_80722CC + b _08143BE6 + .align 2, 0 +_08143A58: .4byte gUnknown_30030F0 +_08143A5C: + ldr r0, _08143A7C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08143A80 + movs r0, 0x5 + bl sub_80722CC + bl sub_80098B8 + adds r0, r4, 0 + bl sub_81438E8 + b _08143BE6 + .align 2, 0 +_08143A7C: .4byte gUnknown_30030F0 +_08143A80: + bl sub_800AA38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08143A9C + adds r0, r4, 0 + bl sub_81438E8 + bl sub_80098B8 + movs r0, 0x7 + strb r0, [r4, 0x8] + b _08143D1A +_08143A9C: + bl sub_81436EC + cmp r0, 0 + beq _08143ABA + movs r0, 0x5 + bl sub_80722CC + bl sub_80098B8 + adds r0, r4, 0 + bl sub_81438E8 + movs r0, 0x8 + strb r0, [r4, 0x8] + b _08143D1A +_08143ABA: + adds r0, r4, 0 + movs r1, 0xA + bl sub_81438F0 + cmp r0, 0 + bne _08143AC8 + b _08143D1A +_08143AC8: + bl sub_80098B8 + bl sub_81436BC + adds r0, r4, 0 + bl sub_81438E8 + b _08143D1A +_08143AD8: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _08143AF0 @ =gUnknown_841DE7C + bl sub_814257C + cmp r0, 0 + bne _08143AE8 + b _08143D1A +_08143AE8: + movs r0, 0x4 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143AF0: .4byte gUnknown_841DE7C +_08143AF4: + ldr r0, _08143B0C @ =gUnknown_841DE95 + bl sub_8142504 + ldr r0, _08143B10 @ =gUnknown_3005ED0 + ldr r1, _08143B14 @ =gUnknownSerialData_End + ldr r2, _08143B18 @ =gUnknownSerialData_Start + subs r1, r2 + bl sub_81435DC + movs r0, 0x9 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143B0C: .4byte gUnknown_841DE95 +_08143B10: .4byte gUnknown_3005ED0 +_08143B14: .4byte gUnknownSerialData_End +_08143B18: .4byte gUnknownSerialData_Start +_08143B1C: + ldr r0, _08143B34 @ =gUnknown_3005ED0 + bl sub_8143674 + strb r0, [r4, 0xE] + lsls r0, 24 + cmp r0, 0 + bne _08143B2C + b _08143D1A +_08143B2C: + movs r0, 0xA + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143B34: .4byte gUnknown_3005ED0 +_08143B38: + ldr r0, _08143B60 @ =gUnknown_3005ED0 + bl sub_8143644 + ldrb r0, [r4, 0xE] + cmp r0, 0x3 + bne _08143B46 + b _08143C4C +_08143B46: + cmp r0, 0x1 + beq _08143B4C + b _08143CFA +_08143B4C: + adds r0, r4, 0 + bl sub_81438E8 + ldr r0, _08143B64 @ =gUnknown_841DE9B + bl sub_8142504 + movs r0, 0xB + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143B60: .4byte gUnknown_3005ED0 +_08143B64: .4byte gUnknown_841DE9B +_08143B68: + movs r1, 0xD2 + lsls r1, 2 + adds r0, r4, 0 + bl sub_81438F0 + cmp r0, 0 + bne _08143B78 + b _08143D1A +_08143B78: + movs r0, 0xC + strb r0, [r4, 0x8] + b _08143D1A +_08143B7E: + bl sub_81436BC + ldr r0, _08143B90 @ =gUnknown_841DE98 + bl sub_8142504 +_08143B88: + movs r0, 0xD + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143B90: .4byte gUnknown_841DE98 +_08143B94: + adds r0, r4, 0 + adds r0, 0x9 + adds r1, r4, 0 + bl sub_8143770 + cmp r0, 0x5 + bls _08143BA4 + b _08143D1A +_08143BA4: + lsls r0, 2 + ldr r1, _08143BB0 @ =_08143BB4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08143BB0: .4byte _08143BB4 + .align 2, 0 +_08143BB4: + .4byte _08143D1A + .4byte _08143BDC + .4byte _08143BCC + .4byte _08143C00 + .4byte _08143C00 + .4byte _08143BEC +_08143BCC: + ldr r0, _08143BD8 @ =gUnknown_841DE95 + bl sub_8142504 + movs r0, 0xE + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143BD8: .4byte gUnknown_841DE95 +_08143BDC: + movs r0, 0x5 + bl sub_80722CC + bl sub_80098B8 +_08143BE6: + movs r0, 0x17 + strb r0, [r4, 0x8] + b _08143D1A +_08143BEC: + bl sub_80098B8 + movs r0, 0x15 + strb r0, [r4, 0x8] + b _08143D1A +_08143BF6: + bl sub_800B0A8 + lsls r0, 24 + cmp r0, 0 + beq _08143C06 +_08143C00: + bl sub_80098B8 + b _08143C4C +_08143C06: + bl sub_800A4EC + lsls r0, 24 + cmp r0, 0 + bne _08143C12 + b _08143D1A +_08143C12: + bl sub_800A550 + movs r0, 0xF + strb r0, [r4, 0x8] + b _08143D1A +_08143C1C: + ldr r0, _08143C30 @ =gUnknown_201C000 + bl sub_815D6B4 + strb r0, [r4, 0xE] + ldrb r0, [r4, 0xE] + bl sub_800AA80 + movs r0, 0x10 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143C30: .4byte gUnknown_201C000 +_08143C34: + ldr r0, _08143C48 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08143D1A + ldrb r0, [r4, 0xE] + cmp r0, 0x1 + bne _08143C4C + movs r0, 0x11 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143C48: .4byte gUnknown_3003F64 +_08143C4C: + movs r0, 0x14 + strb r0, [r4, 0x8] + b _08143D1A +_08143C52: + ldr r0, _08143C70 @ =gUnknown_201C000 + bl sub_815D794 + cmp r0, 0 + beq _08143C78 + ldr r0, _08143C74 @ =gUnknown_841DE99 + bl sub_8142504 + adds r0, r4, 0 + bl sub_81438E8 + movs r0, 0x12 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143C70: .4byte gUnknown_201C000 +_08143C74: .4byte gUnknown_841DE99 +_08143C78: + movs r0, 0x16 + strb r0, [r4, 0x8] + b _08143D1A +_08143C7E: + adds r0, r4, 0 + movs r1, 0x78 + bl sub_81438F0 + cmp r0, 0 + beq _08143D1A + ldr r0, _08143CA0 @ =gUnknown_841DE9A + bl sub_8142504 + movs r0, 0x81 + lsls r0, 1 + bl sub_8071C60 + movs r0, 0x13 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143CA0: .4byte gUnknown_841DE9A +_08143CA4: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _08143D1A + ldr r0, _08143CB8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + b _08143CC6 + .align 2, 0 +_08143CB8: .4byte gUnknown_30030F0 +_08143CBC: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _08143CD0 @ =gUnknown_841DE7D + bl sub_814257C +_08143CC6: + cmp r0, 0 + beq _08143D1A + movs r0, 0x1A + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143CD0: .4byte gUnknown_841DE7D +_08143CD4: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _08143CDC @ =gUnknown_841DE96 + b _08143CF2 + .align 2, 0 +_08143CDC: .4byte gUnknown_841DE96 +_08143CE0: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _08143CE8 @ =gUnknown_841DE97 + b _08143CF2 + .align 2, 0 +_08143CE8: .4byte gUnknown_841DE97 +_08143CEC: + adds r0, r4, 0 + adds r0, 0x9 + ldr r1, _08143D00 @ =gUnknown_841DE9C +_08143CF2: + bl sub_814257C + cmp r0, 0 + beq _08143D1A +_08143CFA: + movs r0, 0 + strb r0, [r4, 0x8] + b _08143D1A + .align 2, 0 +_08143D00: .4byte gUnknown_841DE9C +_08143D04: + bl sub_812B484 + ldr r0, [r4, 0x10] + bl sub_8002BC4 + adds r0, r5, 0 + bl sub_8077508 + ldr r0, _08143D20 @ =sub_81422FC + bl sub_8000544 +_08143D1A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08143D20: .4byte sub_81422FC + thumb_func_end sub_8143910 + + thumb_func_start sub_8143D24 +sub_8143D24: @ 8143D24 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r0, _08143D4C @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _08143D50 @ =0x00003120 + adds r1, r0 + ldr r2, _08143D54 @ =0x050000db + mov r0, sp + bl CpuSet + bl sub_8143ED0 + bl sub_80BDE28 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08143D4C: .4byte gUnknown_3005008 +_08143D50: .4byte 0x00003120 +_08143D54: .4byte 0x050000db + thumb_func_end sub_8143D24 + + thumb_func_start sub_8143D58 +sub_8143D58: @ 8143D58 + ldr r0, _08143D64 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143D68 @ =0x00003124 + adds r0, r1 + bx lr + .align 2, 0 +_08143D64: .4byte gUnknown_3005008 +_08143D68: .4byte 0x00003124 + thumb_func_end sub_8143D58 + + thumb_func_start sub_8143D6C +sub_8143D6C: @ 8143D6C + ldr r0, _08143D78 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143D7C @ =0x000032e4 + adds r0, r1 + bx lr + .align 2, 0 +_08143D78: .4byte gUnknown_3005008 +_08143D7C: .4byte 0x000032e4 + thumb_func_end sub_8143D6C + + thumb_func_start sub_8143D80 +sub_8143D80: @ 8143D80 + ldr r0, _08143D8C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143D90 @ =0x00003434 + adds r0, r1 + bx lr + .align 2, 0 +_08143D8C: .4byte gUnknown_3005008 +_08143D90: .4byte 0x00003434 + thumb_func_end sub_8143D80 + + thumb_func_start sub_8143D94 +sub_8143D94: @ 8143D94 + ldr r0, _08143DA0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143DA4 @ =0x00003460 + adds r0, r1 + bx lr + .align 2, 0 +_08143DA0: .4byte gUnknown_3005008 +_08143DA4: .4byte 0x00003460 + thumb_func_end sub_8143D94 + + thumb_func_start sub_8143DA8 +sub_8143DA8: @ 8143DA8 + ldr r0, _08143DB4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143DB8 @ =0x00003458 + adds r0, r1 + bx lr + .align 2, 0 +_08143DB4: .4byte gUnknown_3005008 +_08143DB8: .4byte 0x00003458 + thumb_func_end sub_8143DA8 + + thumb_func_start sub_8143DBC +sub_8143DBC: @ 8143DBC + push {lr} + bl sub_8143E9C + pop {r0} + bx r0 + thumb_func_end sub_8143DBC + + thumb_func_start sub_8143DC8 +sub_8143DC8: @ 8143DC8 + push {r4-r7,lr} + adds r7, r0, 0 + bl sub_8143E64 + cmp r0, 0 + beq _08143E14 + bl sub_8143E9C + ldr r4, _08143E08 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r5, _08143E0C @ =0x00003124 + adds r0, r5 + movs r6, 0xDE + lsls r6, 1 + adds r1, r7, 0 + adds r2, r6, 0 + bl memcpy + ldr r0, [r4] + adds r0, r5 + adds r1, r6, 0 + bl sub_8045210 + ldr r1, [r4] + ldr r2, _08143E10 @ =0x00003120 + adds r1, r2 + lsls r0, 16 + lsrs r0, 16 + str r0, [r1] + movs r0, 0x1 + b _08143E16 + .align 2, 0 +_08143E08: .4byte gUnknown_3005008 +_08143E0C: .4byte 0x00003124 +_08143E10: .4byte 0x00003120 +_08143E14: + movs r0, 0 +_08143E16: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8143DC8 + + thumb_func_start sub_8143E1C +sub_8143E1C: @ 8143E1C + push {r4,lr} + ldr r4, _08143E50 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r1, _08143E54 @ =0x00003124 + adds r0, r1 + movs r1, 0xDE + lsls r1, 1 + bl sub_8045210 + lsls r0, 16 + lsrs r0, 16 + ldr r4, [r4] + ldr r2, _08143E58 @ =0x00003120 + adds r1, r4, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08143E5C + ldr r1, _08143E54 @ =0x00003124 + adds r0, r4, r1 + bl sub_8143E64 + cmp r0, 0 + beq _08143E5C + movs r0, 0x1 + b _08143E5E + .align 2, 0 +_08143E50: .4byte gUnknown_3005008 +_08143E54: .4byte 0x00003124 +_08143E58: .4byte 0x00003120 +_08143E5C: + movs r0, 0 +_08143E5E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8143E1C + + thumb_func_start sub_8143E64 +sub_8143E64: @ 8143E64 + push {lr} + ldrh r0, [r0] + cmp r0, 0 + beq _08143E70 + movs r0, 0x1 + b _08143E72 +_08143E70: + movs r0, 0 +_08143E72: + pop {r1} + bx r1 + thumb_func_end sub_8143E64 + + thumb_func_start sub_8143E78 +sub_8143E78: @ 8143E78 + push {lr} + ldr r0, _08143E8C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143E90 @ =0x00003124 + adds r0, r1 + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08143E94 + movs r0, 0x1 + b _08143E96 + .align 2, 0 +_08143E8C: .4byte gUnknown_3005008 +_08143E90: .4byte 0x00003124 +_08143E94: + movs r0, 0 +_08143E96: + pop {r1} + bx r1 + thumb_func_end sub_8143E78 + + thumb_func_start sub_8143E9C +sub_8143E9C: @ 8143E9C + push {r4,lr} + sub sp, 0x4 + movs r4, 0 + str r4, [sp] + bl sub_8143D58 + adds r1, r0, 0 + ldr r2, _08143EC4 @ =0x0500006f + mov r0, sp + bl CpuSet + ldr r0, _08143EC8 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143ECC @ =0x00003120 + adds r0, r1 + str r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08143EC4: .4byte 0x0500006f +_08143EC8: .4byte gUnknown_3005008 +_08143ECC: .4byte 0x00003120 + thumb_func_end sub_8143E9C + + thumb_func_start sub_8143ED0 +sub_8143ED0: @ 8143ED0 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_8143D94 + adds r1, r0, 0 + ldr r2, _08143EF0 @ =0x05000001 + mov r0, sp + bl CpuSet + bl sub_8146C88 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08143EF0: .4byte 0x05000001 + thumb_func_end sub_8143ED0 + + thumb_func_start sub_8143EF4 +sub_8143EF4: @ 8143EF4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08143F0C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08143F10 @ =0x00003124 + adds r4, r0, r1 + bl sub_8143E1C + cmp r0, 0 + bne _08143F14 +_08143F08: + movs r0, 0 + b _08143F2C + .align 2, 0 +_08143F0C: .4byte gUnknown_3005008 +_08143F10: .4byte 0x00003124 +_08143F14: + movs r2, 0 + ldr r3, _08143F34 @ =0x000001bb +_08143F18: + adds r0, r4, r2 + adds r1, r5, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _08143F08 + adds r2, 0x1 + cmp r2, r3 + bls _08143F18 + movs r0, 0x1 +_08143F2C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08143F34: .4byte 0x000001bb + thumb_func_end sub_8143EF4 + + thumb_func_start sub_8143F38 +sub_8143F38: @ 8143F38 + push {lr} + bl sub_814407C + bl sub_81440B4 + bl sub_8144790 + bl sub_8069CD4 + bl sub_806E2D0 + bl sub_806E370 + ldr r0, _08143F64 @ =gUnknown_300500C + ldr r0, [r0] + movs r1, 0x94 + lsls r1, 3 + adds r0, r1 + bl sub_80E7524 + pop {r0} + bx r0 + .align 2, 0 +_08143F64: .4byte gUnknown_300500C + thumb_func_end sub_8143F38 + + thumb_func_start sub_8143F68 +sub_8143F68: @ 8143F68 + push {r4-r7,lr} + adds r7, r0, 0 + bl sub_8144018 + cmp r0, 0 + beq _08143FC0 + bl sub_8143F38 + ldr r4, _08143FB0 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r5, _08143FB4 @ =0x000032e4 + adds r0, r5 + movs r6, 0xA6 + lsls r6, 1 + adds r1, r7, 0 + adds r2, r6, 0 + bl memcpy + ldr r0, [r4] + adds r0, r5 + adds r1, r6, 0 + bl sub_8045210 + ldr r1, [r4] + ldr r3, _08143FB8 @ =0x000032e0 + adds r2, r1, r3 + lsls r0, 16 + lsrs r0, 16 + str r0, [r2] + ldr r0, _08143FBC @ =0x00003434 + adds r2, r1, r0 + adds r1, r5 + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x6] + movs r0, 0x1 + b _08143FC2 + .align 2, 0 +_08143FB0: .4byte gUnknown_3005008 +_08143FB4: .4byte 0x000032e4 +_08143FB8: .4byte 0x000032e0 +_08143FBC: .4byte 0x00003434 +_08143FC0: + movs r0, 0 +_08143FC2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8143F68 + + thumb_func_start sub_8143FC8 +sub_8143FC8: @ 8143FC8 + push {r4,r5,lr} + ldr r5, _08144004 @ =gUnknown_3005008 + ldr r0, [r5] + ldr r1, _08144008 @ =0x000032e0 + adds r4, r0, r1 + adds r1, 0x4 + adds r0, r1 + movs r1, 0xA6 + lsls r1, 1 + bl sub_8045210 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [r4] + cmp r1, r0 + bne _08144010 + ldr r0, [r5] + ldr r1, _0814400C @ =0x000032e4 + adds r0, r1 + bl sub_8144018 + cmp r0, 0 + beq _08144010 + bl sub_8069DFC + cmp r0, 0 + beq _08144010 + movs r0, 0x1 + b _08144012 + .align 2, 0 +_08144004: .4byte gUnknown_3005008 +_08144008: .4byte 0x000032e0 +_0814400C: .4byte 0x000032e4 +_08144010: + movs r0, 0 +_08144012: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8143FC8 + + thumb_func_start sub_8144018 +sub_8144018: @ 8144018 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2] + cmp r0, 0 + beq _0814404E + ldrb r1, [r2, 0x8] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x2 + bhi _0814404E + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + beq _0814403C + cmp r0, 0x40 + beq _0814403C + cmp r0, 0x80 + bne _0814404E +_0814403C: + lsls r0, r1, 26 + lsrs r0, 28 + cmp r0, 0x7 + bhi _0814404E + ldrb r0, [r2, 0x9] + cmp r0, 0x7 + bhi _0814404E + movs r0, 0x1 + b _08144050 +_0814404E: + movs r0, 0 +_08144050: + pop {r1} + bx r1 + thumb_func_end sub_8144018 + + thumb_func_start sub_8144054 +sub_8144054: @ 8144054 + push {lr} + ldr r0, _0814406C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08144070 @ =0x000032e4 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + beq _08144074 + movs r0, 0x1 + b _08144076 + .align 2, 0 +_0814406C: .4byte gUnknown_3005008 +_08144070: .4byte 0x000032e4 +_08144074: + movs r0, 0 +_08144076: + pop {r1} + bx r1 + thumb_func_end sub_8144054 + + thumb_func_start sub_814407C +sub_814407C: @ 814407C + push {r4,r5,lr} + sub sp, 0x4 + movs r5, 0 + str r5, [sp] + ldr r4, _081440A4 @ =gUnknown_3005008 + ldr r1, [r4] + ldr r0, _081440A8 @ =0x000032e4 + adds r1, r0 + ldr r2, _081440AC @ =0x05000053 + mov r0, sp + bl CpuSet + ldr r0, [r4] + ldr r1, _081440B0 @ =0x000032e0 + adds r0, r1 + str r5, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081440A4: .4byte gUnknown_3005008 +_081440A8: .4byte 0x000032e4 +_081440AC: .4byte 0x05000053 +_081440B0: .4byte 0x000032e0 + thumb_func_end sub_814407C + + thumb_func_start sub_81440B4 +sub_81440B4: @ 81440B4 + push {r4,lr} + sub sp, 0x4 + movs r4, 0 + str r4, [sp] + bl sub_8143D80 + adds r1, r0, 0 + ldr r2, _081440DC @ =0x05000009 + mov r0, sp + bl CpuSet + ldr r0, _081440E0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _081440E4 @ =0x00003430 + adds r0, r1 + str r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081440DC: .4byte 0x05000009 +_081440E0: .4byte gUnknown_3005008 +_081440E4: .4byte 0x00003430 + thumb_func_end sub_81440B4 + + thumb_func_start sub_81440E8 +sub_81440E8: @ 81440E8 + push {lr} + bl sub_8143FC8 + cmp r0, 0 + bne _081440F6 + movs r0, 0 + b _08144100 +_081440F6: + ldr r0, _08144104 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08144108 @ =0x000032e4 + adds r0, r1 + ldrh r0, [r0] +_08144100: + pop {r1} + bx r1 + .align 2, 0 +_08144104: .4byte gUnknown_3005008 +_08144108: .4byte 0x000032e4 + thumb_func_end sub_81440E8 + + thumb_func_start sub_814410C +sub_814410C: @ 814410C + push {lr} + adds r2, r0, 0 + ldrb r1, [r2, 0x8] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x40 + bne _08144120 + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x8] +_08144120: + pop {r0} + bx r0 + thumb_func_end sub_814410C + + thumb_func_start sub_8144124 +sub_8144124: @ 8144124 + push {lr} + lsls r0, 16 + ldr r1, _08144138 @ =0xfc180000 + adds r0, r1 + lsrs r0, 16 + cmp r0, 0x13 + bls _0814413C + movs r0, 0 + b _0814413E + .align 2, 0 +_08144138: .4byte 0xfc180000 +_0814413C: + movs r0, 0x1 +_0814413E: + pop {r1} + bx r1 + thumb_func_end sub_8144124 + + thumb_func_start sub_8144144 +sub_8144144: @ 8144144 + push {r4,lr} + bl sub_81440E8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_8144124 + cmp r0, 0 + beq _0814417C + ldr r1, _08144174 @ =gUnknown_8466F00 + ldr r2, _08144178 @ =0xfffffc18 + adds r0, r4, r2 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0814417C + movs r0, 0x1 + b _0814417E + .align 2, 0 +_08144174: .4byte gUnknown_8466F00 +_08144178: .4byte 0xfffffc18 +_0814417C: + movs r0, 0 +_0814417E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8144144 + + thumb_func_start sub_8144184 +sub_8144184: @ 8144184 + push {lr} + movs r3, 0 + cmp r3, r1 + bge _081441A6 + adds r2, r0, 0 + adds r2, 0x8 +_08144190: + ldrh r0, [r2, 0xE] + cmp r0, 0 + beq _0814419E + ldrh r0, [r2] + cmp r0, 0 + beq _0814419E + adds r3, 0x1 +_0814419E: + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _08144190 +_081441A6: + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_8144184 + + thumb_func_start sub_81441AC +sub_81441AC: @ 81441AC + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r1, 0 + cmp r1, r2 + bge _081441E6 + ldrh r6, [r4, 0x2] + movs r0, 0x16 + adds r0, r5 + mov r12, r0 +_081441C0: + lsls r3, r1, 1 + mov r7, r12 + ldrh r0, [r7] + cmp r0, r6 + beq _081441D8 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r3 + ldrh r0, [r0] + ldrh r3, [r4] + cmp r0, r3 + bne _081441DC +_081441D8: + movs r0, 0x1 + b _081441E8 +_081441DC: + movs r7, 0x2 + add r12, r7 + adds r1, 0x1 + cmp r1, r2 + blt _081441C0 +_081441E6: + movs r0, 0 +_081441E8: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81441AC + + thumb_func_start sub_81441F0 +sub_81441F0: @ 81441F0 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2] + cmp r0, 0 + beq _08144210 + ldrh r1, [r1] + cmp r1, 0 + beq _08144210 + ldr r0, _0814420C @ =0x0000019b + cmp r1, r0 + bhi _08144210 + movs r0, 0x1 + b _08144212 + .align 2, 0 +_0814420C: .4byte 0x0000019b +_08144210: + movs r0, 0 +_08144212: + pop {r1} + bx r1 + thumb_func_end sub_81441F0 + + thumb_func_start sub_8144218 +sub_8144218: @ 8144218 + push {lr} + bl sub_8143FC8 + cmp r0, 0 + beq _0814424C + ldr r0, _08144240 @ =gUnknown_3005008 + ldr r3, [r0] + ldr r0, _08144244 @ =0x000032e4 + adds r2, r3, r0 + ldrb r1, [r2, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0814424C + ldr r1, _08144248 @ =0x00003434 + adds r0, r3, r1 + ldrb r1, [r2, 0x9] + bl sub_8144184 + b _0814424E + .align 2, 0 +_08144240: .4byte gUnknown_3005008 +_08144244: .4byte 0x000032e4 +_08144248: .4byte 0x00003434 +_0814424C: + movs r0, 0 +_0814424E: + pop {r1} + bx r1 + thumb_func_end sub_8144218 + + thumb_func_start sub_8144254 +sub_8144254: @ 8144254 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _08144280 @ =gUnknown_3005008 + ldr r0, [r6] + ldr r1, _08144284 @ =0x000032e4 + adds r0, r1 + ldrb r4, [r0, 0x9] + adds r0, r5, 0 + bl sub_81441F0 + cmp r0, 0 + beq _081442BE + ldr r0, [r6] + ldr r1, _08144288 @ =0x00003434 + adds r0, r1 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_81441AC + cmp r0, 0 + beq _08144298 + b _081442BE + .align 2, 0 +_08144280: .4byte gUnknown_3005008 +_08144284: .4byte 0x000032e4 +_08144288: .4byte 0x00003434 +_0814428C: + ldrh r0, [r5, 0x2] + strh r0, [r1] + ldrh r0, [r5] + strh r0, [r2] + movs r0, 0x1 + b _081442C0 +_08144298: + movs r3, 0 + cmp r3, r4 + bge _081442BE + ldr r0, [r6] + ldr r6, _081442C8 @ =0x0000343c + adds r2, r0, r6 + adds r6, 0xE + adds r1, r0, r6 +_081442A8: + ldrh r0, [r2, 0xE] + cmp r0, 0 + bne _081442B4 + ldrh r0, [r2] + cmp r0, 0 + beq _0814428C +_081442B4: + adds r2, 0x2 + adds r1, 0x2 + adds r3, 0x1 + cmp r3, r4 + blt _081442A8 +_081442BE: + movs r0, 0 +_081442C0: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081442C8: .4byte 0x0000343c + thumb_func_end sub_8144254 + + thumb_func_start sub_81442CC +sub_81442CC: @ 81442CC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + movs r0, 0 + str r0, [sp] + ldr r2, _08144328 @ =0x05000019 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + ldr r0, _0814432C @ =0x00000101 + str r0, [r4] + movs r0, 0x1 + strh r0, [r4, 0x4] + str r0, [r4, 0x8] + strh r0, [r4, 0xC] + str r0, [r4, 0x10] + bl sub_8143FC8 + cmp r0, 0 + beq _08144330 + bl sub_8143D6C + ldrh r0, [r0] + strh r0, [r4, 0x14] + bl sub_8143D80 + adds r1, r4, 0 + adds r1, 0x20 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + bl sub_8143D6C + ldrb r1, [r0, 0x9] + adds r0, r4, 0 + adds r0, 0x44 + strb r1, [r0] + b _08144332 + .align 2, 0 +_08144328: .4byte 0x05000019 +_0814432C: .4byte 0x00000101 +_08144330: + strh r0, [r4, 0x14] +_08144332: + adds r5, r4, 0 + adds r5, 0x4C + ldr r0, _081443BC @ =gUnknown_300500C + mov r8, r0 + adds r6, r4, 0 + adds r6, 0x45 + adds r7, r4, 0 + adds r7, 0x50 + movs r1, 0x5C + adds r1, r4 + mov r9, r1 + movs r2, 0x60 + adds r2, r4 + mov r10, r2 + ldr r0, _081443C0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r3, _081443C4 @ =0x00003458 + adds r2, r0, r3 + adds r1, r4, 0 + adds r1, 0x16 + movs r3, 0x3 +_0814435C: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _0814435C + mov r0, r8 + ldr r1, [r0] + adds r1, 0xA + adds r0, r5, 0 + bl sub_805490C + mov r2, r8 + ldr r1, [r2] + adds r0, r6, 0 + bl sub_8008D84 + ldr r0, _081443C0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r3, _081443C8 @ =0x00002ca0 + adds r2, r0, r3 + adds r1, r7, 0 + movs r3, 0x5 +_0814438C: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _0814438C + ldr r1, _081443CC @ =RomHeaderGameCode + mov r0, r9 + movs r2, 0x4 + bl memcpy + ldr r0, _081443D0 @ =RomHeaderSoftwareVersion + ldrb r0, [r0] + mov r5, r10 + strb r0, [r5] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081443BC: .4byte gUnknown_300500C +_081443C0: .4byte gUnknown_3005008 +_081443C4: .4byte 0x00003458 +_081443C8: .4byte 0x00002ca0 +_081443CC: .4byte RomHeaderGameCode +_081443D0: .4byte RomHeaderSoftwareVersion + thumb_func_end sub_81442CC + + thumb_func_start sub_81443D4 +sub_81443D4: @ 81443D4 + push {lr} + adds r2, r0, 0 + ldr r1, [r2] + ldr r0, _0814440C @ =0x00000101 + cmp r1, r0 + bne _08144410 + ldrh r1, [r2, 0x4] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08144410 + ldr r0, [r2, 0x8] + ands r0, r3 + cmp r0, 0 + beq _08144410 + ldrh r1, [r2, 0xC] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08144410 + ldr r0, [r2, 0x10] + movs r1, 0xF + ands r0, r1 + cmp r0, 0 + beq _08144410 + movs r0, 0x1 + b _08144412 + .align 2, 0 +_0814440C: .4byte 0x00000101 +_08144410: + movs r0, 0 +_08144412: + pop {r1} + bx r1 + thumb_func_end sub_81443D4 + + thumb_func_start sub_8144418 +sub_8144418: @ 8144418 + push {lr} + ldrh r1, [r1, 0x14] + cmp r1, 0 + bne _08144424 + movs r0, 0 + b _08144430 +_08144424: + ldrh r0, [r0] + cmp r0, r1 + beq _0814442E + movs r0, 0x2 + b _08144430 +_0814442E: + movs r0, 0x1 +_08144430: + pop {r1} + bx r1 + thumb_func_end sub_8144418 + + thumb_func_start sub_8144434 +sub_8144434: @ 8144434 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r4, 0 + adds r5, 0x20 + adds r4, 0x44 + ldrb r1, [r4] + adds r0, r5, 0 + bl sub_8144184 + ldrb r2, [r4] + subs r4, r2, r0 + cmp r4, 0 + bne _08144454 + movs r0, 0x1 + b _0814446E +_08144454: + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_81441AC + cmp r0, 0 + beq _08144464 + movs r0, 0x3 + b _0814446E +_08144464: + cmp r4, 0x1 + beq _0814446C + movs r0, 0x2 + b _0814446E +_0814446C: + movs r0, 0x4 +_0814446E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8144434 + + thumb_func_start sub_8144474 +sub_8144474: @ 8144474 + push {r4,lr} + movs r3, 0 + adds r2, r0, 0 + adds r2, 0x16 +_0814447C: + ldrh r0, [r2] + ldrh r4, [r1] + cmp r0, r4 + beq _08144488 + movs r0, 0 + b _08144494 +_08144488: + adds r1, 0x2 + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + ble _0814447C + movs r0, 0x1 +_08144494: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8144474 + + thumb_func_start sub_814449C +sub_814449C: @ 814449C + push {lr} + adds r2, r0, 0 + adds r2, 0x20 + adds r0, 0x44 + ldrb r1, [r0] + adds r0, r2, 0 + bl sub_8144184 + pop {r1} + bx r1 + thumb_func_end sub_814449C + + thumb_func_start sub_81444B0 +sub_81444B0: @ 81444B0 + push {lr} + adds r2, r0, 0 + cmp r1, 0x4 + bhi _081444FC + lsls r0, r1, 2 + ldr r1, _081444C4 @ =_081444C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081444C4: .4byte _081444C8 + .align 2, 0 +_081444C8: + .4byte _081444DC + .4byte _081444E0 + .4byte _081444E4 + .4byte _081444E8 + .4byte _081444F4 +_081444DC: + ldrh r0, [r2, 0x20] + b _0814450A +_081444E0: + ldrh r0, [r2, 0x22] + b _0814450A +_081444E4: + ldrh r0, [r2, 0x24] + b _0814450A +_081444E8: + adds r0, r2, 0 + bl sub_814449C + lsls r0, 16 + lsrs r0, 16 + b _0814450A +_081444F4: + adds r0, r2, 0 + adds r0, 0x44 + ldrb r0, [r0] + b _0814450A +_081444FC: + ldr r0, _08144510 @ =gUnknown_8466F28 + ldr r1, _08144514 @ =0x00000339 + ldr r2, _08144518 @ =gUnknown_8466F5C + movs r3, 0x1 + bl AGBAssert + movs r0, 0 +_0814450A: + pop {r1} + bx r1 + .align 2, 0 +_08144510: .4byte gUnknown_8466F28 +_08144514: .4byte 0x00000339 +_08144518: .4byte gUnknown_8466F5C + thumb_func_end sub_81444B0 + + thumb_func_start sub_814451C +sub_814451C: @ 814451C + push {r4,lr} + adds r4, r0, 0 + ldr r2, _08144544 @ =gUnknown_3005008 + ldr r0, [r2] + ldr r1, _08144548 @ =0x000032e4 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x3 + ands r0, r1 + adds r3, r2, 0 + cmp r0, 0x2 + bne _081445B6 + movs r2, 0 + cmp r4, 0x4 + bhi _08144582 + lsls r0, r4, 2 + ldr r1, _0814454C @ =_08144550 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08144544: .4byte gUnknown_3005008 +_08144548: .4byte 0x000032e4 +_0814454C: .4byte _08144550 + .align 2, 0 +_08144550: + .4byte _08144564 + .4byte _08144570 + .4byte _0814457C + .4byte _08144582 + .4byte _08144582 +_08144564: + ldr r0, [r3] + ldr r1, _0814456C @ =0x00003434 + b _08144580 + .align 2, 0 +_0814456C: .4byte 0x00003434 +_08144570: + ldr r0, [r3] + ldr r1, _08144578 @ =0x00003436 + b _08144580 + .align 2, 0 +_08144578: .4byte 0x00003436 +_0814457C: + ldr r0, [r3] + ldr r1, _08144598 @ =0x00003438 +_08144580: + adds r2, r0, r1 +_08144582: + cmp r2, 0 + bne _081445A4 + ldr r0, _0814459C @ =gUnknown_8466F28 + movs r1, 0xD9 + lsls r1, 2 + ldr r2, _081445A0 @ =gUnknown_8466F5C + movs r3, 0x1 + bl AGBAssert + b _081445B6 + .align 2, 0 +_08144598: .4byte 0x00003438 +_0814459C: .4byte gUnknown_8466F28 +_081445A0: .4byte gUnknown_8466F5C +_081445A4: + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + lsrs r0, 16 + ldr r1, _081445BC @ =0x000003e7 + cmp r0, r1 + bls _081445B6 + strh r1, [r2] +_081445B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081445BC: .4byte 0x000003e7 + thumb_func_end sub_814451C + + thumb_func_start sub_81445C0 +sub_81445C0: @ 81445C0 + push {lr} + cmp r0, 0x4 + bhi _081446A4 + lsls r0, 2 + ldr r1, _081445D0 @ =_081445D4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081445D0: .4byte _081445D4 + .align 2, 0 +_081445D4: + .4byte _081445E8 + .4byte _08144610 + .4byte _08144638 + .4byte _08144660 + .4byte _08144684 +_081445E8: + ldr r0, _08144604 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r1, _08144608 @ =0x000032e4 + adds r0, r2, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _081446A4 + ldr r1, _0814460C @ =0x00003434 + adds r0, r2, r1 + ldrh r0, [r0] + b _081446B2 + .align 2, 0 +_08144604: .4byte gUnknown_3005008 +_08144608: .4byte 0x000032e4 +_0814460C: .4byte 0x00003434 +_08144610: + ldr r0, _0814462C @ =gUnknown_3005008 + ldr r2, [r0] + ldr r1, _08144630 @ =0x000032e4 + adds r0, r2, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _081446A4 + ldr r1, _08144634 @ =0x00003434 + adds r0, r2, r1 + ldrh r0, [r0, 0x2] + b _081446B2 + .align 2, 0 +_0814462C: .4byte gUnknown_3005008 +_08144630: .4byte 0x000032e4 +_08144634: .4byte 0x00003434 +_08144638: + ldr r0, _08144654 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r1, _08144658 @ =0x000032e4 + adds r0, r2, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _081446A4 + ldr r1, _0814465C @ =0x00003434 + adds r0, r2, r1 + ldrh r0, [r0, 0x4] + b _081446B2 + .align 2, 0 +_08144654: .4byte gUnknown_3005008 +_08144658: .4byte 0x000032e4 +_0814465C: .4byte 0x00003434 +_08144660: + ldr r0, _0814467C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08144680 @ =0x000032e4 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _081446A4 + bl sub_8144218 + lsls r0, 16 + lsrs r0, 16 + b _081446B2 + .align 2, 0 +_0814467C: .4byte gUnknown_3005008 +_08144680: .4byte 0x000032e4 +_08144684: + ldr r0, _0814469C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _081446A0 @ =0x000032e4 + adds r2, r0, r1 + ldrb r1, [r2, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _081446A4 + ldrb r0, [r2, 0x9] + b _081446B2 + .align 2, 0 +_0814469C: .4byte gUnknown_3005008 +_081446A0: .4byte 0x000032e4 +_081446A4: + ldr r0, _081446B8 @ =gUnknown_8466F28 + ldr r1, _081446BC @ =0x00000391 + ldr r2, _081446C0 @ =gUnknown_8466F5C + movs r3, 0x1 + bl AGBAssert + movs r0, 0 +_081446B2: + pop {r1} + bx r1 + .align 2, 0 +_081446B8: .4byte gUnknown_8466F28 +_081446BC: .4byte 0x00000391 +_081446C0: .4byte gUnknown_8466F5C + thumb_func_end sub_81445C0 + + thumb_func_start sub_81446C4 +sub_81446C4: @ 81446C4 + ldr r1, _081446CC @ =gUnknown_203F3BC + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_081446CC: .4byte gUnknown_203F3BC + thumb_func_end sub_81446C4 + + thumb_func_start sub_81446D0 +sub_81446D0: @ 81446D0 + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + adds r4, r0, 0 + ldr r5, _08144700 @ =gUnknown_203F3BC + movs r0, 0 + str r0, [r5] + cmp r4, 0 + beq _0814470E + bl sub_8143FC8 + cmp r0, 0 + beq _0814470C + ldr r0, _08144704 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08144708 @ =0x000032e4 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0814470C + movs r0, 0x1 + str r0, [r5] + b _0814470E + .align 2, 0 +_08144700: .4byte gUnknown_203F3BC +_08144704: .4byte gUnknown_3005008 +_08144708: .4byte 0x000032e4 +_0814470C: + movs r0, 0 +_0814470E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81446D0 + + thumb_func_start sub_8144714 +sub_8144714: @ 8144714 + push {lr} + adds r2, r0, 0 + ldr r0, _08144738 @ =gUnknown_203F3BC + ldr r0, [r0] + cmp r0, 0 + beq _08144782 + cmp r2, 0x1 + beq _08144758 + cmp r2, 0x1 + bcc _08144744 + cmp r2, 0x2 + bne _08144774 + ldr r0, _0814473C @ =gUnknown_3005008 + ldr r2, [r0] + ldr r0, _08144740 @ =0x00003478 + adds r2, r0 + movs r0, 0x2 + b _08144762 + .align 2, 0 +_08144738: .4byte gUnknown_203F3BC +_0814473C: .4byte gUnknown_3005008 +_08144740: .4byte 0x00003478 +_08144744: + ldr r0, _08144750 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r0, _08144754 @ =0x00003464 + adds r2, r0 + movs r0, 0 + b _08144762 + .align 2, 0 +_08144750: .4byte gUnknown_3005008 +_08144754: .4byte 0x00003464 +_08144758: + ldr r0, _0814476C @ =gUnknown_3005008 + ldr r2, [r0] + ldr r0, _08144770 @ =0x00003464 + adds r2, r0 + movs r0, 0x1 +_08144762: + movs r3, 0x5 + bl sub_8144824 + b _08144782 + .align 2, 0 +_0814476C: .4byte gUnknown_3005008 +_08144770: .4byte 0x00003464 +_08144774: + ldr r0, _08144788 @ =gUnknown_8466F28 + movs r1, 0xF7 + lsls r1, 2 + ldr r2, _0814478C @ =gUnknown_8466F5C + movs r3, 0x1 + bl AGBAssert +_08144782: + pop {r0} + bx r0 + .align 2, 0 +_08144788: .4byte gUnknown_8466F28 +_0814478C: .4byte gUnknown_8466F5C + thumb_func_end sub_8144714 + + thumb_func_start sub_8144790 +sub_8144790: @ 8144790 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r0, _081447B0 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _081447B4 @ =0x00003464 + adds r1, r0 + ldr r2, _081447B8 @ =0x0500000a + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_081447B0: .4byte gUnknown_3005008 +_081447B4: .4byte 0x00003464 +_081447B8: .4byte 0x0500000a + thumb_func_end sub_8144790 + + thumb_func_start sub_81447BC +sub_81447BC: @ 81447BC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r1, 0 + cmp r1, r2 + bge _081447DE + ldr r0, [r4] + cmp r0, r5 + beq _081447DE + adds r3, r4, 0 +_081447D0: + adds r3, 0x4 + adds r1, 0x1 + cmp r1, r2 + bge _081447DE + ldr r0, [r3] + cmp r0, r5 + bne _081447D0 +_081447DE: + cmp r1, r2 + bne _08144800 + subs r3, r1, 0x1 + cmp r3, 0 + ble _081447FA + lsls r0, r3, 2 + subs r0, 0x4 + adds r2, r0, r4 +_081447EE: + ldr r0, [r2] + str r0, [r2, 0x4] + subs r2, 0x4 + subs r3, 0x1 + cmp r3, 0 + bgt _081447EE +_081447FA: + str r5, [r4] + movs r0, 0x1 + b _0814481C +_08144800: + adds r3, r1, 0 + cmp r3, 0 + ble _08144818 + lsls r0, r3, 2 + subs r0, 0x4 + adds r2, r0, r4 +_0814480C: + ldr r0, [r2] + str r0, [r2, 0x4] + subs r2, 0x4 + subs r3, 0x1 + cmp r3, 0 + bgt _0814480C +_08144818: + str r5, [r4] + movs r0, 0 +_0814481C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81447BC + + thumb_func_start sub_8144824 +sub_8144824: @ 8144824 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + bl sub_81447BC + cmp r0, 0 + beq _0814483C + adds r0, r4, 0 + bl sub_814451C +_0814483C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8144824 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s new file mode 100644 index 000000000..65e7e00ce --- /dev/null +++ b/asm/mevent_8145654.s @@ -0,0 +1,2728 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8145654 +sub_8145654: @ 8145654 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + cmp r5, 0 + beq _08145670 + cmp r6, 0 + beq _08145670 + ldr r7, _08145674 @ =gUnknown_203F3C8 + ldr r0, _08145678 @ =0x0000145c + bl sub_8002BB0 + str r0, [r7] + cmp r0, 0 + bne _0814567C +_08145670: + movs r0, 0 + b _081456E6 + .align 2, 0 +_08145674: .4byte gUnknown_203F3C8 +_08145678: .4byte 0x0000145c +_0814567C: + movs r4, 0xA6 + lsls r4, 1 + adds r1, r5, 0 + adds r2, r4, 0 + bl memcpy + ldr r1, [r7] + adds r1, r4 + adds r0, r6, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r2, [r7] + ldrb r1, [r2, 0x8] + lsls r0, r1, 26 + lsrs r0, 28 + cmp r0, 0x7 + bls _081456AE + movs r0, 0x3D + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x8] +_081456AE: + ldr r2, [r7] + ldrb r1, [r2, 0x8] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x2 + bls _081456C2 + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x8] +_081456C2: + ldr r1, [r7] + ldrb r0, [r1, 0x9] + cmp r0, 0x7 + bls _081456CE + movs r0, 0 + strb r0, [r1, 0x9] +_081456CE: + ldr r0, [r7] + movs r1, 0xB8 + lsls r1, 1 + adds r2, r0, r1 + ldrb r0, [r0, 0x8] + lsls r0, 26 + lsrs r0, 28 + lsls r0, 4 + ldr r1, _081456EC @ =gUnknown_8467FB8 + adds r0, r1 + str r0, [r2] + movs r0, 0x1 +_081456E6: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081456EC: .4byte gUnknown_8467FB8 + thumb_func_end sub_8145654 + + thumb_func_start sub_81456F0 +sub_81456F0: @ 81456F0 + push {r4,lr} + ldr r4, _08145714 @ =gUnknown_203F3C8 + ldr r0, [r4] + cmp r0, 0 + beq _0814570C + ldr r2, _08145718 @ =0x0000145c + movs r1, 0 + bl memset + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0814570C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145714: .4byte gUnknown_203F3C8 +_08145718: .4byte 0x0000145c + thumb_func_end sub_81456F0 + + thumb_func_start sub_814571C +sub_814571C: @ 814571C + push {r4-r6,lr} + sub sp, 0x24 + ldr r5, _08145730 @ =gUnknown_203F3C8 + ldr r0, [r5] + cmp r0, 0 + bne _08145734 + movs r0, 0x1 + negs r0, r0 + b _08145930 + .align 2, 0 +_08145730: .4byte gUnknown_203F3C8 +_08145734: + movs r4, 0xBA + lsls r4, 1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x7 + bls _08145742 + b _08145908 +_08145742: + lsls r0, 2 + ldr r1, _0814574C @ =_08145750 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814574C: .4byte _08145750 + .align 2, 0 +_08145750: + .4byte _08145770 + .4byte _08145782 + .4byte _08145790 + .4byte _08145834 + .4byte _081458AC + .4byte _081458B2 + .4byte _081458CC + .4byte _081458D2 +_08145770: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _0814591E +_08145782: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0814578E + b _0814591E +_0814578E: + b _0814592E +_08145790: + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + ldr r5, _0814582C @ =gUnknown_203F3C8 + ldr r0, [r5] + movs r1, 0xB8 + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + ldr r1, [r0, 0x4] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0x8 + bl sub_80F6878 + ldr r4, _08145830 @ =gUnknown_8467074 + adds r0, r4, 0 + bl sub_8003CE4 + ldr r1, [r5] + movs r2, 0xBB + lsls r2, 1 + adds r1, r2 + strh r0, [r1] + adds r0, r4, 0 + adds r0, 0x8 + bl sub_8003CE4 + ldr r1, [r5] + movs r2, 0xBC + lsls r2, 1 + adds r1, r2 + strh r0, [r1] + adds r4, 0x10 + adds r0, r4, 0 + bl sub_8003CE4 + ldr r1, [r5] + movs r2, 0xBD + lsls r2, 1 + adds r1, r2 + strh r0, [r1] + b _0814591E + .align 2, 0 +_0814582C: .4byte gUnknown_203F3C8 +_08145830: .4byte gUnknown_8467074 +_08145834: + bl sub_80F682C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _0814592E + ldr r2, _081458A0 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + ldr r5, _081458A4 @ =gUnknown_203F3C8 + ldr r0, [r5] + movs r4, 0xB8 + lsls r4, 1 + adds r0, r4 + ldr r0, [r0] + ldr r0, [r0, 0xC] + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldr r1, [r5] + adds r4, r1, r4 + ldr r0, [r4] + ldr r0, [r0, 0x8] + ldr r4, _081458A8 @ =0x0000045c + adds r1, r4 + bl LZ77UnCompWram + ldr r1, [r5] + adds r1, r4 + movs r2, 0x1E + str r2, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + str r6, [sp, 0xC] + str r2, [sp, 0x10] + str r0, [sp, 0x14] + movs r0, 0x1 + str r0, [sp, 0x18] + movs r0, 0x8 + str r0, [sp, 0x1C] + str r6, [sp, 0x20] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_800226C + movs r0, 0x2 + bl sub_80020BC + b _0814591E + .align 2, 0 +_081458A0: .4byte gUnknown_2037AB8 +_081458A4: .4byte gUnknown_203F3C8 +_081458A8: .4byte 0x0000045c +_081458AC: + bl sub_8145A98 + b _0814591E +_081458B2: + movs r0, 0 + bl sub_8145D18 + movs r0, 0x1 + bl sub_8145D18 + movs r0, 0x2 + bl sub_8145D18 + movs r0, 0x1 + bl sub_80020BC + b _0814591E +_081458CC: + bl sub_809707C + b _0814591E +_081458D2: + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + ldr r2, _08145904 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + bl sub_8146060 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_80704D0 + b _0814591E + .align 2, 0 +_08145904: .4byte gUnknown_2037AB8 +_08145908: + bl sub_80704D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0814592E + ldr r0, [r5] + adds r0, r4 + strb r1, [r0] + movs r0, 0x1 + b _08145930 +_0814591E: + ldr r0, _08145938 @ =gUnknown_203F3C8 + ldr r1, [r0] + movs r0, 0xBA + lsls r0, 1 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0814592E: + movs r0, 0 +_08145930: + add sp, 0x24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08145938: .4byte gUnknown_203F3C8 + thumb_func_end sub_814571C + + thumb_func_start sub_814593C +sub_814593C: @ 814593C + push {r4,r5,lr} + sub sp, 0x8 + adds r2, r0, 0 + ldr r5, _08145950 @ =gUnknown_203F3C8 + ldr r0, [r5] + cmp r0, 0 + bne _08145954 + movs r0, 0x1 + negs r0, r0 + b _08145A8C + .align 2, 0 +_08145950: .4byte gUnknown_203F3C8 +_08145954: + movs r4, 0xBA + lsls r4, 1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x6 + bls _08145962 + b _08145A64 +_08145962: + lsls r0, 2 + ldr r1, _0814596C @ =_08145970 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814596C: .4byte _08145970 + .align 2, 0 +_08145970: + .4byte _0814598C + .4byte _0814599E + .4byte _081459AA + .4byte _081459F2 + .4byte _08145A30 + .4byte _08145A3A + .4byte _08145A4C +_0814598C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _08145A7A +_0814599E: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _08145A7A + b _08145A8A +_081459AA: + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + b _08145A7A +_081459F2: + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + ldr r4, _08145A2C @ =gUnknown_203F3C8 + ldr r0, [r4] + movs r1, 0xBD + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003E3C + ldr r0, [r4] + movs r1, 0xBC + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003E3C + ldr r0, [r4] + movs r1, 0xBB + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003E3C + b _08145A7A + .align 2, 0 +_08145A2C: .4byte gUnknown_203F3C8 +_08145A30: + bl sub_81461D8 + bl sub_8097114 + b _08145A7A +_08145A3A: + ldr r0, _08145A48 @ =gUnknown_203F3B8 + ldrb r0, [r0] + adds r1, r2, 0 + bl sub_8142344 + b _08145A7A + .align 2, 0 +_08145A48: .4byte gUnknown_203F3B8 +_08145A4C: + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _08145A7A +_08145A64: + bl sub_80704D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08145A8A + ldr r0, [r5] + adds r0, r4 + strb r1, [r0] + movs r0, 0x1 + b _08145A8C +_08145A7A: + ldr r0, _08145A94 @ =gUnknown_203F3C8 + ldr r1, [r0] + movs r0, 0xBA + lsls r0, 1 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08145A8A: + movs r0, 0 +_08145A8C: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08145A94: .4byte gUnknown_203F3C8 + thumb_func_end sub_814593C + + thumb_func_start sub_8145A98 +sub_8145A98: @ 8145A98 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r5, 0 + mov r0, sp + movs r1, 0 + movs r2, 0x6 + bl memset + ldr r4, _08145B7C @ =gUnknown_203F3C8 + ldr r1, [r4] + ldr r2, _08145B80 @ =0x0000018b + adds r0, r1, r2 + adds r1, 0xA + movs r2, 0x28 + bl memcpy + ldr r0, [r4] + ldr r3, _08145B84 @ =0x000001b3 + adds r1, r0, r3 + movs r0, 0xFF + strb r0, [r1] + ldr r1, [r4] + movs r2, 0xDA + lsls r2, 1 + adds r0, r1, r2 + adds r1, 0x32 + movs r2, 0x28 + bl memcpy + ldr r0, [r4] + movs r3, 0xEE + lsls r3, 1 + adds r0, r3 + movs r1, 0x1 + negs r1, r1 + strb r1, [r0] + ldr r1, [r4] + ldr r0, [r1, 0x4] + ldr r2, _08145B88 @ =0x000f423f + cmp r0, r2 + bls _08145AF4 + str r2, [r1, 0x4] +_08145AF4: + ldr r1, [r4] + ldr r2, _08145B8C @ =0x000001dd + adds r0, r1, r2 + ldr r1, [r1, 0x4] + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + adds r6, r4, 0 +_08145B06: + ldr r2, [r6] + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r4, r1, r5 + adds r0, r4, r2 + movs r3, 0xF2 + lsls r3, 1 + adds r0, r3 + adds r1, r2 + adds r1, 0x5A + movs r2, 0x28 + bl memcpy + ldr r1, [r6] + movs r0, 0x83 + lsls r0, 2 + adds r1, r0 + adds r1, r4 + movs r2, 0x1 + negs r2, r2 + adds r7, r2, 0 + movs r0, 0xFF + strb r0, [r1] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _08145B06 + ldr r6, _08145B7C @ =gUnknown_203F3C8 + ldr r1, [r6] + movs r3, 0xA2 + lsls r3, 2 + adds r0, r1, r3 + adds r1, 0xFA + movs r2, 0x28 + bl memcpy + ldr r0, [r6] + movs r4, 0xAC + lsls r4, 2 + adds r0, r4 + movs r1, 0x1 + negs r1, r1 + adds r4, r1, 0 + movs r1, 0xFF + strb r1, [r0] + ldr r1, [r6] + ldrb r0, [r1, 0x8] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + beq _08145BB8 + cmp r0, 0x1 + bgt _08145B90 + cmp r0, 0 + beq _08145B96 + b _08145D08 + .align 2, 0 +_08145B7C: .4byte gUnknown_203F3C8 +_08145B80: .4byte 0x0000018b +_08145B84: .4byte 0x000001b3 +_08145B88: .4byte 0x000f423f +_08145B8C: .4byte 0x000001dd +_08145B90: + cmp r0, 0x2 + beq _08145BC8 + b _08145D08 +_08145B96: + ldr r2, _08145BB0 @ =0x000002b1 + adds r0, r1, r2 + movs r3, 0x91 + lsls r3, 1 + adds r1, r3 + movs r2, 0x28 + bl memcpy + ldr r1, [r6] + ldr r0, _08145BB4 @ =0x000002d9 + adds r1, r0 + b _08145BBC + .align 2, 0 +_08145BB0: .4byte 0x000002b1 +_08145BB4: .4byte 0x000002d9 +_08145BB8: + ldr r2, _08145BC4 @ =0x000002b1 + adds r1, r2 +_08145BBC: + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + b _08145D08 + .align 2, 0 +_08145BC4: .4byte 0x000002b1 +_08145BC8: + ldr r3, _08145C84 @ =0x000002b1 + adds r0, r1, r3 + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + mov r3, sp + ldr r1, [r6] + movs r4, 0xA6 + lsls r4, 1 + adds r0, r1, r4 + ldrh r0, [r0] + ldr r2, _08145C88 @ =0x000003e7 + cmp r0, r2 + bls _08145BE6 + adds r0, r2, 0 +_08145BE6: + strh r0, [r3] + mov r3, sp + movs r4, 0xA7 + lsls r4, 1 + adds r0, r1, r4 + ldrh r0, [r0] + cmp r0, r2 + bls _08145BF8 + adds r0, r2, 0 +_08145BF8: + strh r0, [r3, 0x2] + mov r3, sp + movs r4, 0xA8 + lsls r4, 1 + adds r0, r1, r4 + ldrh r0, [r0] + cmp r0, r2 + bls _08145C0A + adds r0, r2, 0 +_08145C0A: + strh r0, [r3, 0x4] + movs r5, 0 +_08145C0E: + lsls r4, r5, 1 + adds r4, r5 + lsls r4, 4 + movs r0, 0xB7 + lsls r0, 2 + adds r4, r0 + ldr r0, [r6] + adds r0, r4 + adds r0, 0x2A + movs r1, 0xFF + movs r2, 0x4 + bl memset + ldr r0, [r6] + adds r0, r4 + adds r0, 0x1 + movs r1, 0xFF + movs r2, 0x29 + bl memset + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x7 + bls _08145C0E + movs r5, 0 + movs r6, 0 + ldr r1, _08145C8C @ =gUnknown_203F3C8 + mov r8, r1 + movs r2, 0x91 + lsls r2, 1 + mov r10, r2 + ldr r7, _08145C90 @ =0x00000175 + movs r3, 0xB7 + lsls r3, 2 + mov r9, r3 +_08145C56: + mov r4, r8 + ldr r2, [r4] + mov r0, r10 + adds r1, r2, r0 + adds r0, r1, r5 + ldrb r3, [r0] + cmp r3, 0xF7 + beq _08145C98 + ldr r1, _08145C90 @ =0x00000175 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 4 + adds r0, r6, r0 + ldr r4, _08145C94 @ =0x000002dd + adds r1, r2, r4 + adds r1, r0 + strb r3, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + b _08145CFE + .align 2, 0 +_08145C84: .4byte 0x000002b1 +_08145C88: .4byte 0x000003e7 +_08145C8C: .4byte gUnknown_203F3C8 +_08145C90: .4byte 0x00000175 +_08145C94: .4byte 0x000002dd +_08145C98: + adds r0, r5, 0x1 + adds r0, r1, r0 + ldrb r3, [r0] + cmp r3, 0x2 + bls _08145CA8 + adds r0, r5, 0x2 + lsls r0, 16 + b _08145CFC +_08145CA8: + adds r0, r2, r7 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 4 + add r0, r9 + adds r0, r2, r0 + adds r0, 0x2A + lsls r1, r3, 1 + add r1, sp + ldrh r1, [r1] + movs r2, 0x2 + movs r3, 0x3 + bl sub_8008E78 + mov r0, r8 + ldr r1, [r0] + adds r0, r1, r7 + ldrb r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 4 + adds r0, r1, r0 + adds r4, r5, 0x2 + add r1, r10 + adds r1, r4 + ldrb r1, [r1] + add r0, r9 + strb r1, [r0] + mov r2, r8 + ldr r1, [r2] + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r0, r7 + ldrb r0, [r0] + cmp r0, 0x7 + bhi _08145D08 + movs r6, 0 + lsls r0, r4, 16 +_08145CFC: + lsrs r5, r0, 16 +_08145CFE: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x27 + bls _08145C56 +_08145D08: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8145A98 + + thumb_func_start sub_8145D18 +sub_8145D18: @ 8145D18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + movs r0, 0 + str r0, [sp, 0xC] + ldr r7, _08145D60 @ =gUnknown_203F3C8 + ldr r0, [r7] + lsls r1, r4, 1 + movs r2, 0xBB + lsls r2, 1 + adds r0, r2 + adds r0, r1 + ldrh r0, [r0] + lsls r6, r0, 24 + lsrs r5, r6, 24 + adds r0, r5, 0 + bl sub_8003FA0 + adds r0, r5, 0 + movs r1, 0 + bl sub_800445C + cmp r4, 0x1 + beq _08145E40 + cmp r4, 0x1 + bgt _08145D64 + cmp r4, 0 + beq _08145D70 + mov r9, r6 + b _08146038 + .align 2, 0 +_08145D60: .4byte gUnknown_203F3C8 +_08145D64: + mov r0, r8 + cmp r0, 0x2 + bne _08145D6C + b _08145EA4 +_08145D6C: + mov r9, r6 + b _08146038 +_08145D70: + ldr r2, [r7] + movs r1, 0xB8 + lsls r1, 1 + mov r10, r1 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, 28 + lsrs r0, 28 + lsls r1, r0, 1 + adds r1, r0 + ldr r0, _08145E34 @ =gUnknown_8467068 + mov r8, r0 + add r1, r8 + str r1, [sp] + ldr r1, [sp, 0xC] + str r1, [sp, 0x4] + ldr r0, _08145E38 @ =0x0000018b + adds r2, r0 + str r2, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0x1 + bl sub_812E51C + ldr r4, [r7] + movs r1, 0xDA + lsls r1, 1 + mov r9, r1 + add r4, r9 + movs r0, 0x3 + movs r1, 0x2 + bl sub_80F79D8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x3 + adds r1, r4, 0 + bl sub_8005ED4 + movs r1, 0xA0 + subs r1, r0 + cmp r1, 0 + bge _08145DCE + movs r1, 0 +_08145DCE: + lsls r2, r1, 24 + lsrs r2, 24 + ldr r3, [r7] + mov r1, r10 + adds r0, r3, r1 + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + lsls r0, r1, 1 + adds r0, r1 + add r0, r8 + str r0, [sp] + ldr r0, [sp, 0xC] + str r0, [sp, 0x4] + add r3, r9 + str r3, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x3 + movs r3, 0x11 + bl sub_812E51C + ldr r2, [r7] + ldr r0, [r2, 0x4] + mov r9, r6 + cmp r0, 0 + bne _08145E06 + b _08146038 +_08145E06: + mov r1, r10 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + lsls r0, r1, 1 + adds r0, r1 + add r0, r8 + str r0, [sp] + ldr r0, [sp, 0xC] + str r0, [sp, 0x4] + ldr r1, _08145E3C @ =0x000001dd + adds r0, r2, r1 + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0xA6 + movs r3, 0x11 + bl sub_812E51C + b _08146038 + .align 2, 0 +_08145E34: .4byte gUnknown_8467068 +_08145E38: .4byte 0x0000018b +_08145E3C: .4byte 0x000001dd +_08145E40: + mov r9, r6 +_08145E42: + ldr r2, [sp, 0xC] + lsls r4, r2, 24 + asrs r4, 24 + lsls r3, r4, 4 + adds r3, 0x2 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _08145E9C @ =gUnknown_203F3C8 + ldr r2, [r0] + movs r1, 0xB8 + lsls r1, 1 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r0, [r0] + lsrs r0, 4 + lsls r1, r0, 1 + adds r1, r0 + ldr r0, _08145EA0 @ =gUnknown_8467068 + adds r1, r0 + str r1, [sp] + movs r0, 0 + str r0, [sp, 0x4] + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r4 + movs r1, 0xF2 + lsls r1, 1 + adds r0, r1 + adds r2, r0 + str r2, [sp, 0x8] + mov r2, r9 + lsrs r0, r2, 24 + movs r1, 0x3 + movs r2, 0 + bl sub_812E51C + adds r4, 0x1 + lsls r4, 24 + lsrs r0, r4, 24 + str r0, [sp, 0xC] + asrs r4, 24 + cmp r4, 0x3 + ble _08145E42 + b _08146038 + .align 2, 0 +_08145E9C: .4byte gUnknown_203F3C8 +_08145EA0: .4byte gUnknown_8467068 +_08145EA4: + ldr r4, _08145F2C @ =gUnknown_8467070 + ldr r2, [r7] + ldrb r0, [r2, 0x8] + lsls r0, 30 + lsrs r0, 30 + adds r0, r4 + ldrb r3, [r0] + movs r1, 0xB8 + lsls r1, 1 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + lsls r0, 28 + lsrs r0, 28 + lsls r1, r0, 1 + adds r1, r0 + ldr r0, _08145F30 @ =gUnknown_8467068 + mov r10, r0 + add r1, r10 + str r1, [sp] + ldr r1, [sp, 0xC] + str r1, [sp, 0x4] + movs r1, 0xA2 + lsls r1, 2 + adds r0, r2, r1 + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x3 + movs r2, 0 + bl sub_812E51C + ldr r2, [r7] + ldrb r1, [r2, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + beq _08145F38 + lsls r0, r1, 30 + lsrs r0, 30 + adds r0, r4 + ldrb r3, [r0] + adds r3, 0x10 + lsls r3, 24 + lsrs r3, 24 + movs r1, 0xB8 + lsls r1, 1 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r1, 28 + lsrs r1, 28 + lsls r0, r1, 1 + adds r0, r1 + add r0, r10 + str r0, [sp] + ldr r0, [sp, 0xC] + str r0, [sp, 0x4] + ldr r1, _08145F34 @ =0x000002b1 + adds r0, r2, r1 + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x3 + movs r2, 0 + bl sub_812E51C + mov r9, r6 + b _08146038 + .align 2, 0 +_08145F2C: .4byte gUnknown_8467070 +_08145F30: .4byte gUnknown_8467068 +_08145F34: .4byte 0x000002b1 +_08145F38: + movs r2, 0 + mov r8, r2 + lsls r0, r1, 30 + lsrs r0, 30 + adds r0, r4 + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 + movs r0, 0x3 + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, [r7] + ldr r1, _08146054 @ =0x00000175 + adds r0, r1 + mov r9, r6 + ldr r1, [sp, 0xC] + ldrb r0, [r0] + cmp r1, r0 + bge _08146038 + str r5, [sp, 0x10] + lsls r0, r4, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + mov r10, r2 +_08145F6E: + mov r0, r8 + lsls r2, r0, 24 + lsrs r2, 24 + ldr r3, [r7] + movs r1, 0xB8 + lsls r1, 1 + adds r0, r3, r1 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r1, 28 + lsrs r1, 28 + lsls r0, r1, 1 + adds r0, r1 + ldr r1, _08146058 @ =gUnknown_8467068 + adds r0, r1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r1, [sp, 0xC] + lsls r0, r1, 24 + asrs r6, r0, 24 + lsls r0, r6, 1 + adds r0, r6 + lsls r5, r0, 4 + movs r0, 0xB7 + lsls r0, 2 + adds r4, r5, r0 + adds r3, r4 + adds r3, 0x1 + str r3, [sp, 0x8] + ldr r0, [sp, 0x10] + movs r1, 0x3 + ldr r3, [sp, 0x14] + bl sub_812E51C + ldr r1, [r7] + adds r0, r1, r5 + ldr r2, _0814605C @ =0x00000306 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0xFF + beq _08146022 + adds r1, r4 + adds r1, 0x1 + movs r0, 0x3 + mov r2, r10 + bl sub_8005ED4 + add r8, r0 + mov r0, r8 + lsls r2, r0, 24 + lsrs r2, 24 + ldr r3, [r7] + movs r1, 0xB8 + lsls r1, 1 + adds r0, r3, r1 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r1, 28 + lsrs r1, 28 + lsls r0, r1, 1 + adds r0, r1 + ldr r1, _08146058 @ =gUnknown_8467068 + adds r0, r1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r3, r4 + adds r3, 0x2A + str r3, [sp, 0x8] + ldr r0, [sp, 0x10] + movs r1, 0x2 + ldr r3, [sp, 0x14] + bl sub_812E51C + ldr r1, [r7] + adds r1, r4 + adds r1, 0x2A + movs r0, 0x3 + mov r2, r10 + bl sub_8005ED4 + ldr r1, [r7] + adds r1, r5 + movs r2, 0xB7 + lsls r2, 2 + adds r1, r2 + ldrb r1, [r1] + adds r0, r1 + add r8, r0 +_08146022: + adds r1, r6, 0x1 + lsls r1, 24 + lsrs r0, r1, 24 + str r0, [sp, 0xC] + asrs r1, 24 + ldr r0, [r7] + ldr r2, _08146054 @ =0x00000175 + adds r0, r2 + ldrb r0, [r0] + cmp r1, r0 + blt _08145F6E +_08146038: + mov r1, r9 + lsrs r0, r1, 24 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08146054: .4byte 0x00000175 +_08146058: .4byte gUnknown_8467068 +_0814605C: .4byte 0x00000306 + thumb_func_end sub_8145D18 + + thumb_func_start sub_8146060 +sub_8146060: @ 8146060 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r7, 0 + ldr r4, _081461BC @ =gUnknown_203F3C8 + ldr r0, [r4] + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + movs r1, 0xFF + strb r1, [r0] + ldr r0, [r4] + movs r2, 0xA9 + lsls r2, 1 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, 0 + beq _081460C8 + bl sub_8096FD4 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _081461C0 @ =nullsub_8 + str r7, [sp] + str r7, [sp, 0x4] + movs r2, 0xDC + movs r3, 0x14 + bl sub_8096ECC + ldr r1, [r4] + movs r3, 0xBE + lsls r3, 1 + adds r1, r3 + strb r0, [r1] + ldr r2, _081461C4 @ =gUnknown_202063C + ldr r0, [r4] + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x5] +_081460C8: + ldr r1, [r4] + ldrb r0, [r1, 0x9] + cmp r0, 0 + beq _081461AC + ldrb r1, [r1, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _081461AC + ldr r0, _081461C8 @ =gUnknown_8467F58 + bl sub_800F034 + ldr r0, [r4] + movs r1, 0xB8 + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + lsrs r0, 4 + lsls r0, 3 + ldr r1, _081461CC @ =gUnknown_8467F60 + adds r0, r1 + bl sub_8008928 + ldr r0, [r4] + ldrb r0, [r0, 0x9] + cmp r7, r0 + bcs _081461AC + adds r6, r4, 0 + ldr r2, _081461D0 @ =0x0000017d + mov r10, r2 + movs r3, 0 + mov r9, r3 + movs r0, 0xFF + mov r8, r0 +_0814610E: + ldr r1, [r6] + lsls r4, r7, 1 + add r1, r10 + adds r1, r4 + ldrb r0, [r1] + mov r2, r8 + orrs r0, r2 + strb r0, [r1] + ldr r1, [r6] + movs r3, 0xBF + lsls r3, 1 + adds r1, r3 + adds r1, r4 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + lsls r1, r7, 5 + movs r0, 0xD8 + subs r5, r0, r1 + ldr r0, _081461D4 @ =gUnknown_8467FA0 + adds r1, r5, 0 + movs r2, 0x90 + movs r3, 0x8 + bl sub_8006F8C + ldr r1, [r6] + add r1, r10 + adds r1, r4 + strb r0, [r1] + ldr r0, [r6] + movs r1, 0xAA + lsls r1, 1 + adds r0, r1 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, 0 + beq _0814619E + bl sub_8096FD4 + lsls r0, 16 + lsrs r0, 16 + mov r2, r9 + str r2, [sp] + str r2, [sp, 0x4] + ldr r1, _081461C0 @ =nullsub_8 + adds r2, r5, 0 + movs r3, 0x88 + bl sub_8096ECC + ldr r1, [r6] + movs r3, 0xBF + lsls r3, 1 + adds r1, r3 + adds r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, r3 + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081461C4 @ =gUnknown_202063C + adds r0, r1 + ldrb r2, [r0, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x8 + orrs r2, r1 + strb r2, [r0, 0x5] +_0814619E: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r6] + ldrb r0, [r0, 0x9] + cmp r7, r0 + bcc _0814610E +_081461AC: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081461BC: .4byte gUnknown_203F3C8 +_081461C0: .4byte nullsub_8 +_081461C4: .4byte gUnknown_202063C +_081461C8: .4byte gUnknown_8467F58 +_081461CC: .4byte gUnknown_8467F60 +_081461D0: .4byte 0x0000017d +_081461D4: .4byte gUnknown_8467FA0 + thumb_func_end sub_8146060 + + thumb_func_start sub_81461D8 +sub_81461D8: @ 81461D8 + push {r4-r7,lr} + movs r6, 0 + ldr r4, _0814627C @ =gUnknown_203F3C8 + ldr r0, [r4] + movs r2, 0xBE + lsls r2, 1 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0xFF + beq _081461FC + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08146280 @ =gUnknown_202063C + adds r0, r1 + bl sub_8097070 +_081461FC: + ldr r0, [r4] + ldrb r2, [r0, 0x9] + cmp r2, 0 + beq _08146274 + ldrb r1, [r0, 0x8] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _08146274 + cmp r6, r2 + bcs _08146264 + adds r7, r4, 0 +_08146214: + ldr r0, [r7] + lsls r4, r6, 1 + ldr r1, _08146284 @ =0x0000017d + adds r0, r1 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _08146256 + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08146280 @ =gUnknown_202063C + adds r0, r5 + bl sub_8007280 + ldr r1, [r7] + ldr r2, _08146284 @ =0x0000017d + adds r0, r1, r2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0xFF + beq _08146256 + adds r2, 0x1 + adds r0, r1, r2 + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8097070 +_08146256: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, [r7] + ldrb r0, [r0, 0x9] + cmp r6, r0 + bcc _08146214 +_08146264: + movs r4, 0x80 + lsls r4, 8 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 +_08146274: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814627C: .4byte gUnknown_203F3C8 +_08146280: .4byte gUnknown_202063C +_08146284: .4byte 0x0000017d + thumb_func_end sub_81461D8 + + thumb_func_start sub_8146288 +sub_8146288: @ 8146288 + push {r4-r6,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _0814629E + ldr r5, _081462A4 @ =gUnknown_203F3CC + ldr r0, _081462A8 @ =0x000013a4 + bl sub_8002BB0 + str r0, [r5] + cmp r0, 0 + bne _081462AC +_0814629E: + movs r0, 0 + b _081462DC + .align 2, 0 +_081462A4: .4byte gUnknown_203F3CC +_081462A8: .4byte 0x000013a4 +_081462AC: + movs r6, 0xDE + lsls r6, 1 + adds r1, r4, 0 + adds r2, r6, 0 + bl memcpy + ldr r1, [r5] + ldrb r0, [r1, 0x3] + cmp r0, 0x7 + bls _081462C4 + movs r0, 0 + strb r0, [r1, 0x3] +_081462C4: + ldr r2, [r5] + adds r3, r2, r6 + ldrb r0, [r2, 0x3] + lsls r0, 4 + ldr r1, _081462E4 @ =gUnknown_8468720 + adds r0, r1 + str r0, [r3] + ldr r0, _081462E8 @ =0x000001c1 + adds r1, r2, r0 + movs r0, 0xFF + strb r0, [r1] + movs r0, 0x1 +_081462DC: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081462E4: .4byte gUnknown_8468720 +_081462E8: .4byte 0x000001c1 + thumb_func_end sub_8146288 + + thumb_func_start sub_81462EC +sub_81462EC: @ 81462EC + push {r4,lr} + ldr r4, _08146310 @ =gUnknown_203F3CC + ldr r0, [r4] + cmp r0, 0 + beq _08146308 + ldr r2, _08146314 @ =0x000013a4 + movs r1, 0 + bl memset + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08146308: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08146310: .4byte gUnknown_203F3CC +_08146314: .4byte 0x000013a4 + thumb_func_end sub_81462EC + + thumb_func_start sub_8146318 +sub_8146318: @ 8146318 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + ldr r5, _08146334 @ =gUnknown_203F3CC + ldr r0, [r5] + cmp r0, 0 + bne _08146338 + movs r0, 0x1 + negs r0, r0 + b _081465EE + .align 2, 0 +_08146334: .4byte gUnknown_203F3CC +_08146338: + movs r4, 0xE0 + lsls r4, 1 + adds r0, r4 + ldrb r0, [r0] + lsrs r0, 1 + cmp r0, 0x6 + bls _08146348 + b _081465B8 +_08146348: + lsls r0, 2 + ldr r1, _08146354 @ =_08146358 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08146354: .4byte _08146358 + .align 2, 0 +_08146358: + .4byte _08146374 + .4byte _08146386 + .4byte _081463EC + .4byte _08146494 + .4byte _08146544 + .4byte _0814654A + .4byte _0814655C +_08146374: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _081465D2 +_08146386: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _08146392 + b _081465EC +_08146392: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r1, _081463E8 @ =0x00001a98 + movs r0, 0x44 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x1F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x1B + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + b _081465D2 + .align 2, 0 +_081463E8: .4byte 0x00001a98 +_081463EC: + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r5, _0814648C @ =gUnknown_203F3CC + ldr r0, [r5] + movs r1, 0xDE + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + ldr r1, [r0, 0x4] + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0x8 + bl sub_80F6878 + ldr r4, _08146490 @ =gUnknown_8468040 + adds r0, r4, 0 + bl sub_8003CE4 + ldr r1, [r5] + movs r2, 0xE4 + lsls r2, 1 + adds r1, r2 + strh r0, [r1] + adds r4, 0x8 + adds r0, r4, 0 + bl sub_8003CE4 + ldr r1, [r5] + movs r3, 0xE5 + lsls r3, 1 + adds r1, r3 + strh r0, [r1] + b _081465D2 + .align 2, 0 +_0814648C: .4byte gUnknown_203F3CC +_08146490: .4byte gUnknown_8468040 +_08146494: + bl sub_80F682C + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + beq _081464A2 + b _081465EC +_081464A2: + ldr r2, _0814653C @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + ldr r0, _08146540 @ =gUnknown_203F3CC + mov r8, r0 + ldr r0, [r0] + movs r4, 0xDE + lsls r4, 1 + adds r0, r4 + ldr r0, [r0] + ldr r0, [r0, 0xC] + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + mov r2, r8 + ldr r1, [r2] + adds r4, r1, r4 + ldr r0, [r4] + ldr r0, [r0, 0x8] + movs r6, 0xE9 + lsls r6, 2 + adds r1, r6 + bl LZ77UnCompWram + mov r3, r8 + ldr r1, [r3] + adds r1, r6 + movs r4, 0x1E + str r4, [sp] + movs r5, 0x3 + str r5, [sp, 0x4] + str r7, [sp, 0x8] + str r7, [sp, 0xC] + str r4, [sp, 0x10] + str r5, [sp, 0x14] + movs r0, 0x1 + mov r10, r0 + str r0, [sp, 0x18] + movs r2, 0x8 + mov r9, r2 + str r2, [sp, 0x1C] + str r7, [sp, 0x20] + movs r2, 0 + movs r3, 0 + bl sub_800226C + mov r3, r8 + ldr r1, [r3] + adds r1, r6 + str r4, [sp] + movs r0, 0x17 + str r0, [sp, 0x4] + str r7, [sp, 0x8] + str r5, [sp, 0xC] + str r4, [sp, 0x10] + str r0, [sp, 0x14] + mov r0, r10 + str r0, [sp, 0x18] + mov r2, r9 + str r2, [sp, 0x1C] + str r7, [sp, 0x20] + movs r0, 0x3 + movs r2, 0 + movs r3, 0x3 + bl sub_800226C + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _081465D2 + .align 2, 0 +_0814653C: .4byte gUnknown_2037AB8 +_08146540: .4byte gUnknown_203F3CC +_08146544: + bl sub_8146980 + b _081465D2 +_0814654A: + bl sub_8146A30 + movs r0, 0 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + b _081465D2 +_0814655C: + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + ldr r2, _081465AC @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + ldr r4, _081465B0 @ =gUnknown_203F3CC + ldr r1, [r4] + movs r3, 0xE5 + lsls r3, 2 + adds r0, r1, r3 + movs r2, 0xE3 + lsls r2, 1 + adds r1, r2 + bl sub_8133A20 + ldr r1, [r4] + ldr r3, _081465B4 @ =0x000001c1 + adds r2, r1, r3 + movs r1, 0 + strb r0, [r2] + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_80704D0 + b _081465D2 + .align 2, 0 +_081465AC: .4byte gUnknown_2037AB8 +_081465B0: .4byte gUnknown_203F3CC +_081465B4: .4byte 0x000001c1 +_081465B8: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _081465EC + ldr r0, [r5] + adds r0, r4 + ldrb r2, [r0] + movs r1, 0x1 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1 + b _081465EE +_081465D2: + ldr r0, _08146600 @ =gUnknown_203F3CC + ldr r2, [r0] + movs r0, 0xE0 + lsls r0, 1 + adds r2, r0 + ldrb r3, [r2] + lsrs r1, r3, 1 + adds r1, 0x1 + lsls r1, 1 + movs r0, 0x1 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_081465EC: + movs r0, 0 +_081465EE: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08146600: .4byte gUnknown_203F3CC + thumb_func_end sub_8146318 + + thumb_func_start sub_8146604 +sub_8146604: @ 8146604 + push {r4,r5,lr} + sub sp, 0x8 + adds r2, r0, 0 + ldr r5, _08146618 @ =gUnknown_203F3CC + ldr r0, [r5] + cmp r0, 0 + bne _0814661C + movs r0, 0x1 + negs r0, r0 + b _081467E0 + .align 2, 0 +_08146618: .4byte gUnknown_203F3CC +_0814661C: + movs r4, 0xE0 + lsls r4, 1 + adds r0, r4 + ldrb r0, [r0] + lsrs r0, 1 + cmp r0, 0x6 + bls _0814662C + b _081467AA +_0814662C: + lsls r0, 2 + ldr r1, _08146638 @ =_0814663C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08146638: .4byte _0814663C + .align 2, 0 +_0814663C: + .4byte _08146658 + .4byte _0814666A + .4byte _081466AC + .4byte _0814670C + .4byte _0814673C + .4byte _08146778 + .4byte _08146788 +_08146658: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _081467C4 +_0814666A: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _08146676 + b _081467DE +_08146676: + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 + b _081467C4 +_081466AC: + movs r4, 0x1E + str r4, [sp] + movs r5, 0x14 + str r5, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + movs r5, 0x18 + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _081467C4 +_0814670C: + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + ldr r4, _08146738 @ =gUnknown_203F3CC + ldr r0, [r4] + movs r1, 0xE5 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003E3C + ldr r0, [r4] + movs r2, 0xE4 + lsls r2, 1 + adds r0, r2 + ldrb r0, [r0] + bl sub_8003E3C + b _081467C4 + .align 2, 0 +_08146738: .4byte gUnknown_203F3CC +_0814673C: + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r4, _08146770 @ =gUnknown_203F3CC + ldr r0, [r4] + ldr r2, _08146774 @ =0x000001c1 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0xFF + beq _081467C4 + bl sub_8133C30 + ldr r0, [r4] + ldr r2, _08146774 @ =0x000001c1 + adds r1, r0, r2 + movs r0, 0xFF + strb r0, [r1] + b _081467C4 + .align 2, 0 +_08146770: .4byte gUnknown_203F3CC +_08146774: .4byte 0x000001c1 +_08146778: + ldr r0, _08146784 @ =gUnknown_203F3B8 + ldrb r0, [r0] + adds r1, r2, 0 + bl sub_8142344 + b _081467C4 + .align 2, 0 +_08146784: .4byte gUnknown_203F3B8 +_08146788: + bl sub_8142420 + movs r0, 0 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _081467C4 +_081467AA: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _081467DE + ldr r0, [r5] + adds r0, r4 + ldrb r2, [r0] + movs r1, 0x1 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1 + b _081467E0 +_081467C4: + ldr r0, _081467E8 @ =gUnknown_203F3CC + ldr r2, [r0] + movs r0, 0xE0 + lsls r0, 1 + adds r2, r0 + ldrb r3, [r2] + lsrs r1, r3, 1 + adds r1, 0x1 + lsls r1, 1 + movs r0, 0x1 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_081467DE: + movs r0, 0 +_081467E0: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081467E8: .4byte gUnknown_203F3CC + thumb_func_end sub_8146604 + + thumb_func_start sub_81467EC +sub_81467EC: @ 81467EC + push {r4,r5,lr} + ldr r4, _0814682C @ =gUnknown_203F3CC + ldr r2, [r4] + movs r5, 0xE0 + lsls r5, 1 + adds r0, r2, r5 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08146826 + ldr r0, _08146830 @ =0x000001c1 + adds r1, r2, r0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _08146826 + bl sub_8133C30 + ldr r0, [r4] + ldr r2, _08146830 @ =0x000001c1 + adds r1, r0, r2 + movs r0, 0xFF + strb r0, [r1] + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] +_08146826: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814682C: .4byte gUnknown_203F3CC +_08146830: .4byte 0x000001c1 + thumb_func_end sub_81467EC + + thumb_func_start sub_8146834 +sub_8146834: @ 8146834 + push {r4,lr} + ldr r4, _0814687C @ =gUnknown_203F3CC + ldr r2, [r4] + movs r1, 0xE0 + lsls r1, 1 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08146874 + movs r3, 0xE5 + lsls r3, 2 + adds r0, r2, r3 + movs r3, 0xE3 + lsls r3, 1 + adds r1, r2, r3 + bl sub_8133A20 + ldr r1, [r4] + ldr r2, _08146880 @ =0x000001c1 + adds r1, r2 + strb r0, [r1] + ldr r1, [r4] + movs r3, 0xE0 + lsls r3, 1 + adds r1, r3 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_08146874: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814687C: .4byte gUnknown_203F3CC +_08146880: .4byte 0x000001c1 + thumb_func_end sub_8146834 + + thumb_func_start sub_8146884 +sub_8146884: @ 8146884 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r3, r4, 0 + ldr r2, _081468B0 @ =gUnknown_203F3CC + ldr r0, [r2] + mov r12, r0 + movs r0, 0xE1 + lsls r0, 1 + add r0, r12 + ldrb r1, [r0] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _081468B4 + bl sub_8146B58 +_081468AA: + movs r0, 0xFF + b _0814697A + .align 2, 0 +_081468B0: .4byte gUnknown_203F3CC +_081468B4: + cmp r4, 0x2 + beq _081468D0 + cmp r4, 0x2 + bgt _081468C2 + cmp r4, 0x1 + beq _081468CC + b _081468AA +_081468C2: + cmp r3, 0x40 + beq _081468D4 + cmp r3, 0x80 + beq _08146904 + b _081468AA +_081468CC: + movs r0, 0 + b _0814697A +_081468D0: + movs r0, 0x1 + b _0814697A +_081468D4: + movs r0, 0xE3 + lsls r0, 1 + add r0, r12 + ldrh r0, [r0] + cmp r0, 0 + beq _081468AA + movs r0, 0xE0 + lsls r0, 1 + add r0, r12 + ldrb r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _081468AA + ldr r2, _08146900 @ =0x000001c3 + add r2, r12 + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + b _08146932 + .align 2, 0 +_08146900: .4byte 0x000001c3 +_08146904: + movs r0, 0xE3 + lsls r0, 1 + add r0, r12 + movs r1, 0xE2 + lsls r1, 1 + add r1, r12 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _081468AA + movs r0, 0xE0 + lsls r0, 1 + add r0, r12 + ldrb r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _081468AA + ldr r2, _08146974 @ =0x000001c3 + add r2, r12 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 +_08146932: + strb r0, [r2] + ldr r2, [r6] + movs r4, 0xE1 + lsls r4, 1 + adds r2, r4 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r3, [r6] + adds r3, r4 + ldrb r1, [r3] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldr r1, [r6] + adds r4, 0x1 + adds r1, r4 + ldrb r3, [r1] + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + ands r2, r0 + cmp r2, 0 + beq _08146978 + movs r0, 0x3 + b _0814697A + .align 2, 0 +_08146974: .4byte 0x000001c3 +_08146978: + movs r0, 0x2 +_0814697A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8146884 + + thumb_func_start sub_8146980 +sub_8146980: @ 8146980 + push {r4-r6,lr} + movs r5, 0 + ldr r4, _08146A20 @ =gUnknown_203F3CC + ldr r1, [r4] + movs r2, 0xE7 + lsls r2, 1 + adds r0, r1, r2 + adds r1, 0x4 + movs r2, 0x28 + bl memcpy + ldr r0, [r4] + movs r3, 0xFB + lsls r3, 1 + adds r1, r0, r3 + movs r0, 0xFF + strb r0, [r1] + adds r6, r4, 0 +_081469A4: + ldr r2, [r6] + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r4, r1, r5 + adds r0, r4, r2 + ldr r3, _08146A24 @ =0x000001f7 + adds r0, r3 + adds r1, r2 + adds r1, 0x2C + movs r2, 0x28 + bl memcpy + ldr r0, [r6] + ldr r1, _08146A28 @ =0x0000021f + adds r0, r1 + adds r0, r4 + movs r1, 0xFF + strb r1, [r0] + cmp r5, 0x7 + bls _081469E8 + ldr r1, [r6] + ldr r2, _08146A24 @ =0x000001f7 + adds r0, r1, r2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0xFF + beq _081469E8 + movs r3, 0xE2 + lsls r3, 1 + adds r1, r3 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_081469E8: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x9 + bls _081469A4 + ldr r2, _08146A20 @ =gUnknown_203F3CC + ldr r1, [r2] + movs r4, 0xE5 + lsls r4, 2 + adds r1, r4 + ldr r0, _08146A2C @ =gUnknown_8468050 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, [r0] + str r0, [r1] + ldr r2, [r2] + movs r5, 0xE2 + lsls r5, 1 + adds r0, r2, r5 + ldrh r1, [r0] + movs r3, 0xE7 + lsls r3, 2 + adds r0, r2, r3 + strh r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08146A20: .4byte gUnknown_203F3CC +_08146A24: .4byte 0x000001f7 +_08146A28: .4byte 0x0000021f +_08146A2C: .4byte gUnknown_8468050 + thumb_func_end sub_8146980 + + thumb_func_start sub_8146A30 +sub_8146A30: @ 8146A30 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + movs r5, 0 + ldr r6, _08146B4C @ =gUnknown_203F3CC + ldr r0, [r6] + movs r7, 0xE4 + lsls r7, 1 + adds r0, r7 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r6] + movs r4, 0xE5 + lsls r4, 1 + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r6] + adds r0, r7 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r4, [r6] + movs r0, 0xE7 + lsls r0, 1 + mov r8, r0 + add r4, r8 + movs r0, 0x3 + movs r1, 0x2 + bl sub_80F79D8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x3 + adds r1, r4, 0 + bl sub_8005ED4 + movs r1, 0xE0 + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + cmp r1, 0 + bge _08146AA0 + movs r1, 0 +_08146AA0: + ldr r4, [r6] + adds r0, r4, r7 + ldrb r0, [r0] + lsls r2, r1, 24 + lsrs r2, 24 + movs r3, 0xDE + lsls r3, 1 + adds r1, r4, r3 + ldr r1, [r1] + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + lsls r3, r1, 1 + adds r3, r1 + ldr r1, _08146B50 @ =gUnknown_8468038 + adds r3, r1 + str r3, [sp] + str r5, [sp, 0x4] + add r4, r8 + str r4, [sp, 0x8] + movs r1, 0x3 + movs r3, 0x6 + bl sub_812E51C +_08146AD0: + ldr r6, _08146B4C @ =gUnknown_203F3CC + ldr r4, [r6] + movs r1, 0xE5 + lsls r1, 1 + adds r0, r4, r1 + ldrb r0, [r0] + lsls r3, r5, 4 + adds r3, 0x2 + lsls r3, 24 + lsrs r3, 24 + movs r2, 0xDE + lsls r2, 1 + adds r1, r4, r2 + ldr r1, [r1] + ldrb r1, [r1] + lsrs r1, 4 + lsls r2, r1, 1 + adds r2, r1 + ldr r1, _08146B50 @ =gUnknown_8468038 + adds r2, r1 + str r2, [sp] + movs r1, 0 + str r1, [sp, 0x4] + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r5 + ldr r2, _08146B54 @ =0x000001f7 + adds r1, r2 + adds r4, r1 + str r4, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + bl sub_812E51C + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x9 + bls _08146AD0 + ldr r0, [r6] + movs r3, 0xE4 + lsls r3, 1 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + ldr r0, [r6] + movs r1, 0xE5 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08146B4C: .4byte gUnknown_203F3CC +_08146B50: .4byte gUnknown_8468038 +_08146B54: .4byte 0x000001f7 + thumb_func_end sub_8146A30 + + thumb_func_start sub_8146B58 +sub_8146B58: @ 8146B58 + push {r4-r6,lr} + ldr r0, _08146B90 @ =gUnknown_203F3CC + ldr r1, [r0] + movs r2, 0xE1 + lsls r2, 1 + adds r0, r1, r2 + ldrb r0, [r0] + lsrs r4, r0, 1 + lsls r4, 8 + ldr r6, _08146B94 @ =0x000001c3 + adds r0, r1, r6 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08146B98 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8001D08 + movs r0, 0x3 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8001D08 + b _08146BAC + .align 2, 0 +_08146B90: .4byte gUnknown_203F3CC +_08146B94: .4byte 0x000001c3 +_08146B98: + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_8001D08 + movs r0, 0x3 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_8001D08 +_08146BAC: + ldr r3, _08146BF0 @ =gUnknown_203F3CC + ldr r0, [r3] + ldr r2, _08146BF4 @ =0x000001c3 + adds r5, r0, r2 + ldrb r4, [r5] + lsrs r1, r4, 1 + movs r6, 0xE1 + lsls r6, 1 + adds r0, r6 + ldrb r0, [r0] + lsrs r0, 1 + adds r1, r0 + lsls r1, 1 + movs r6, 0x1 + adds r0, r6, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5] + ldr r1, [r3] + adds r2, r1, r2 + ldrb r2, [r2] + lsrs r0, r2, 1 + cmp r0, 0xF + bls _08146C24 + adds r0, r6, 0 + ands r0, r2 + cmp r0, 0 + beq _08146BF8 + movs r0, 0xE3 + lsls r0, 1 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + b _08146C02 + .align 2, 0 +_08146BF0: .4byte gUnknown_203F3CC +_08146BF4: .4byte 0x000001c3 +_08146BF8: + movs r2, 0xE3 + lsls r2, 1 + adds r1, r2 + ldrh r0, [r1] + subs r0, 0x1 +_08146C02: + strh r0, [r1] + ldr r0, [r3] + movs r6, 0xE1 + lsls r6, 1 + adds r2, r0, r6 + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldr r1, _08146C2C @ =0x000001c3 + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + strb r0, [r2] +_08146C24: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08146C2C: .4byte 0x000001c3 + thumb_func_end sub_8146B58 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mevent_server.s b/asm/mevent_server.s new file mode 100644 index 000000000..1d325d9f3 --- /dev/null +++ b/asm/mevent_server.s @@ -0,0 +1,1841 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8144844 +sub_8144844: @ 8144844 + push {lr} + ldr r1, [r0, 0x20] + bl _call_via_r1 + pop {r1} + bx r1 + thumb_func_end sub_8144844 + + thumb_func_start sub_8144850 +sub_8144850: @ 8144850 + push {lr} + ldr r1, [r0, 0x24] + bl _call_via_r1 + pop {r1} + bx r1 + thumb_func_end sub_8144850 + + thumb_func_start sub_814485C +sub_814485C: @ 814485C + movs r3, 0 + strb r1, [r0, 0x4] + strb r2, [r0, 0x5] + str r3, [r0] + strh r3, [r0, 0x12] + strh r3, [r0, 0x14] + strh r3, [r0, 0x10] + strh r3, [r0, 0xA] + strh r3, [r0, 0xC] + strh r3, [r0, 0x8] + str r3, [r0, 0x1C] + str r3, [r0, 0x18] + ldr r1, _08144880 @ =sub_81449E0 + str r1, [r0, 0x24] + ldr r1, _08144884 @ =sub_814490C + str r1, [r0, 0x20] + bx lr + .align 2, 0 +_08144880: .4byte sub_81449E0 +_08144884: .4byte sub_814490C + thumb_func_end sub_814485C + + thumb_func_start sub_8144888 +sub_8144888: @ 8144888 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + str r0, [r4] + strh r1, [r4, 0xE] + strh r0, [r4, 0x10] + strh r0, [r4, 0x12] + cmp r3, 0 + beq _0814489E + strh r3, [r4, 0x14] + b _081448A4 +_0814489E: + movs r0, 0x80 + lsls r0, 3 + strh r0, [r4, 0x14] +_081448A4: + str r2, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8144888 + + thumb_func_start sub_81448AC +sub_81448AC: @ 81448AC + movs r3, 0 + str r3, [r0] + strh r1, [r0, 0x6] + strh r3, [r0, 0x8] + strh r3, [r0, 0xA] + strh r3, [r0, 0xC] + str r2, [r0, 0x18] + bx lr + thumb_func_end sub_81448AC + + thumb_func_start sub_81448BC +sub_81448BC: @ 81448BC + push {lr} + adds r3, r0, 0 + adds r0, r1, 0 + lsls r3, 8 + ldr r1, _081448D4 @ =gUnknown_2022118 + adds r3, r1 + adds r1, r3, 0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_081448D4: .4byte gUnknown_2022118 + thumb_func_end sub_81448BC + + thumb_func_start sub_81448D8 +sub_81448D8: @ 81448D8 + push {r4,lr} + adds r4, r0, 0 + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + asrs r0, r4 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081448F2 + movs r0, 0 + b _081448F4 +_081448F2: + movs r0, 0x1 +_081448F4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81448D8 + + thumb_func_start sub_81448FC +sub_81448FC: @ 81448FC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_800A588 + pop {r0} + bx r0 + thumb_func_end sub_81448FC + + thumb_func_start sub_814490C +sub_814490C: @ 814490C + push {r4-r6,lr} + sub sp, 0x8 + adds r5, r0, 0 + ldr r6, [r5] + cmp r6, 0x1 + beq _08144970 + cmp r6, 0x1 + bgt _08144922 + cmp r6, 0 + beq _08144928 + b _081449D6 +_08144922: + cmp r6, 0x2 + beq _081449BC + b _081449D6 +_08144928: + ldrb r0, [r5, 0x5] + bl sub_81448D8 + cmp r0, 0 + beq _081449D6 + ldrb r0, [r5, 0x5] + mov r4, sp + mov r1, sp + movs r2, 0x8 + bl sub_81448BC + ldrh r1, [r4, 0x4] + strh r1, [r5, 0xC] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0xA] + lsls r1, 16 + movs r0, 0x80 + lsls r0, 19 + cmp r1, r0 + bls _08144956 +_08144950: + bl sub_80FA190 + b _081449D6 +_08144956: + mov r1, sp + ldrh r0, [r5, 0x6] + ldrh r1, [r1] + cmp r0, r1 + bne _08144950 + strh r6, [r5, 0x8] + ldrb r0, [r5, 0x5] + bl sub_81448FC + ldr r0, [r5] + adds r0, 0x1 + str r0, [r5] + b _081449D6 +_08144970: + ldrb r0, [r5, 0x5] + bl sub_81448D8 + cmp r0, 0 + beq _081449D6 + ldrh r0, [r5, 0x8] + lsls r1, r0, 6 + subs r1, r0 + lsls r3, r1, 2 + ldrh r0, [r5, 0xC] + subs r2, r0, r3 + cmp r2, 0xFC + bhi _081449A2 + ldrb r0, [r5, 0x5] + ldr r1, [r5, 0x18] + adds r1, r3 + bl sub_81448BC + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + ldr r0, [r5] + adds r0, 0x1 + str r0, [r5] + b _081449B4 +_081449A2: + ldrb r0, [r5, 0x5] + ldr r1, [r5, 0x18] + adds r1, r3 + movs r2, 0xFC + bl sub_81448BC + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_081449B4: + ldrb r0, [r5, 0x5] + bl sub_81448FC + b _081449D6 +_081449BC: + ldr r0, [r5, 0x18] + ldrh r1, [r5, 0xC] + bl sub_8045210 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r5, 0xA] + cmp r0, r1 + bne _08144950 + movs r0, 0 + str r0, [r5] + movs r0, 0x1 + b _081449D8 +_081449D6: + movs r0, 0 +_081449D8: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_814490C + + thumb_func_start sub_81449E0 +sub_81449E0: @ 81449E0 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r5, [r4] + cmp r5, 0x1 + beq _08144A4C + cmp r5, 0x1 + bgt _081449F6 + cmp r5, 0 + beq _08144A00 + b _08144AE2 +_081449F6: + cmp r5, 0x2 + beq _08144AA0 + cmp r5, 0x3 + beq _08144ACA + b _08144AE2 +_08144A00: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08144AE2 + ldrh r1, [r4, 0xE] + ldr r2, _08144A44 @ =0xffff0000 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + str r0, [sp] + ldrh r1, [r4, 0x14] + ldr r0, [sp, 0x4] + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x4] + ldr r0, [r4, 0x1C] + bl sub_8045210 + lsls r0, 16 + ldr r2, _08144A48 @ =0x0000ffff + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + lsrs r1, 16 + strh r1, [r4, 0x12] + strh r5, [r4, 0x10] + movs r0, 0 + mov r1, sp + movs r2, 0x8 + bl sub_800A448 + b _08144AC2 + .align 2, 0 +_08144A44: .4byte 0xffff0000 +_08144A48: .4byte 0x0000ffff +_08144A4C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08144AE2 + ldrb r0, [r4, 0x4] + bl sub_81448D8 + cmp r0, 0 + beq _08144AE2 + ldrb r0, [r4, 0x4] + bl sub_81448FC + ldrh r1, [r4, 0x10] + lsls r0, r1, 6 + subs r0, r1 + lsls r3, r0, 2 + ldrh r0, [r4, 0x14] + subs r0, r3 + cmp r0, 0xFC + bhi _08144A8C + ldr r1, [r4, 0x1C] + adds r1, r3 + lsls r2, r0, 16 + lsrs r2, 16 + movs r0, 0 + bl sub_800A448 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + b _08144AC2 +_08144A8C: + ldr r1, [r4, 0x1C] + adds r1, r3 + movs r0, 0 + movs r2, 0xFC + bl sub_800A448 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + b _08144AE2 +_08144AA0: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08144AE2 + ldr r0, [r4, 0x1C] + ldrh r1, [r4, 0x14] + bl sub_8045210 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4, 0x12] + cmp r0, r1 + beq _08144AC2 + bl sub_80FA190 + b _08144AE2 +_08144AC2: + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + b _08144AE2 +_08144ACA: + ldrb r0, [r4, 0x4] + bl sub_81448D8 + cmp r0, 0 + beq _08144AE2 + ldrb r0, [r4, 0x4] + bl sub_81448FC + movs r0, 0 + str r0, [r4] + movs r0, 0x1 + b _08144AE4 +_08144AE2: + movs r0, 0 +_08144AE4: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81449E0 + + thumb_func_start sub_8144AEC +sub_8144AEC: @ 8144AEC + push {r4,lr} + ldr r4, _08144B08 @ =gUnknown_203F3C0 + movs r0, 0x4C + bl sub_8002BB0 + str r0, [r4] + movs r1, 0x1 + movs r2, 0 + bl sub_8144B70 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144B08: .4byte gUnknown_203F3C0 + thumb_func_end sub_8144AEC + + thumb_func_start sub_8144B0C +sub_8144B0C: @ 8144B0C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r4, _08144B1C @ =gUnknown_203F3C0 + ldr r0, [r4] + cmp r0, 0 + bne _08144B20 + movs r0, 0x6 + b _08144B40 + .align 2, 0 +_08144B1C: .4byte gUnknown_203F3C0 +_08144B20: + bl sub_8144EF0 + adds r5, r0, 0 + cmp r5, 0x6 + bne _08144B3E + ldr r0, [r4] + ldr r1, [r0, 0x4] + strh r1, [r6] + bl sub_8144BC0 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08144B3E: + adds r0, r5, 0 +_08144B40: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8144B0C + + thumb_func_start sub_8144B48 +sub_8144B48: @ 8144B48 + ldr r0, _08144B54 @ =gUnknown_203F3C0 + ldr r1, [r0] + ldr r0, [r1, 0xC] + adds r0, 0x1 + str r0, [r1, 0xC] + bx lr + .align 2, 0 +_08144B54: .4byte gUnknown_203F3C0 + thumb_func_end sub_8144B48 + + thumb_func_start sub_8144B58 +sub_8144B58: @ 8144B58 + ldr r0, _08144B60 @ =gUnknown_203F3C0 + ldr r0, [r0] + ldr r0, [r0, 0x20] + bx lr + .align 2, 0 +_08144B60: .4byte gUnknown_203F3C0 + thumb_func_end sub_8144B58 + + thumb_func_start sub_8144B64 +sub_8144B64: @ 8144B64 + ldr r1, _08144B6C @ =gUnknown_203F3C0 + ldr r1, [r1] + str r0, [r1, 0x4] + bx lr + .align 2, 0 +_08144B6C: .4byte gUnknown_203F3C0 + thumb_func_end sub_8144B64 + + thumb_func_start sub_8144B70 +sub_8144B70: @ 8144B70 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + adds r6, r1, 0 + mov r8, r2 + movs r0, 0 + str r0, [r4] + str r0, [r4, 0x8] + str r0, [r4, 0xC] + movs r5, 0x80 + lsls r5, 3 + adds r0, r5, 0 + bl sub_8002BB0 + str r0, [r4, 0x14] + adds r0, r5, 0 + bl sub_8002BB0 + str r0, [r4, 0x18] + adds r0, r5, 0 + bl sub_8002BB0 + str r0, [r4, 0x1C] + movs r0, 0x40 + bl sub_8002BB0 + str r0, [r4, 0x20] + adds r4, 0x24 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, r8 + bl sub_814485C + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8144B70 + + thumb_func_start sub_8144BC0 +sub_8144BC0: @ 8144BC0 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x14] + bl sub_8002BC4 + ldr r0, [r4, 0x18] + bl sub_8002BC4 + ldr r0, [r4, 0x1C] + bl sub_8002BC4 + ldr r0, [r4, 0x20] + bl sub_8002BC4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8144BC0 + + thumb_func_start sub_8144BE4 +sub_8144BE4: @ 8144BE4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x1C] + ldr r1, [r4, 0x18] + movs r2, 0x80 + lsls r2, 3 + bl memcpy + movs r0, 0 + str r0, [r4, 0x10] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8144BE4 + + thumb_func_start sub_8144C00 +sub_8144C00: @ 8144C00 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + movs r0, 0 + str r0, [sp] + ldr r1, [r4, 0x14] + ldr r2, _08144C30 @ =0x05000100 + mov r0, sp + bl CpuSet + ldr r2, [r4, 0x14] + str r5, [r2] + adds r4, 0x24 + adds r0, r4, 0 + adds r1, r6, 0 + movs r3, 0x4 + bl sub_8144888 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08144C30: .4byte 0x05000100 + thumb_func_end sub_8144C00 + + thumb_func_start sub_8144C34 +sub_8144C34: @ 8144C34 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x1C] + ldr r1, _08144C58 @ =gUnknown_84687E0 + movs r2, 0x80 + lsls r2, 3 + bl memcpy + movs r1, 0 + str r1, [r4, 0x10] + movs r0, 0x4 + str r0, [r4, 0x8] + str r1, [r4, 0xC] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08144C58: .4byte gUnknown_84687E0 + thumb_func_end sub_8144C34 + + thumb_func_start sub_8144C5C +sub_8144C5C: @ 8144C5C + movs r0, 0x6 + bx lr + thumb_func_end sub_8144C5C + + thumb_func_start sub_8144C60 +sub_8144C60: @ 8144C60 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x24 + bl sub_8144844 + cmp r0, 0 + beq _08144C76 + movs r0, 0x4 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] +_08144C76: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8144C60 + + thumb_func_start sub_8144C80 +sub_8144C80: @ 8144C80 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x24 + bl sub_8144850 + cmp r0, 0 + beq _08144C96 + movs r0, 0x4 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] +_08144C96: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8144C80 + + thumb_func_start sub_8144CA0 +sub_8144CA0: @ 8144CA0 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x10] + lsls r2, r0, 3 + ldr r1, [r4, 0x1C] + adds r2, r1, r2 + adds r0, 0x1 + str r0, [r4, 0x10] + ldr r0, [r2] + cmp r0, 0x15 + bls _08144CB8 + b _08144E60 +_08144CB8: + lsls r0, 2 + ldr r1, _08144CC4 @ =_08144CC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08144CC4: .4byte _08144CC8 + .align 2, 0 +_08144CC8: + .4byte _08144E60 + .4byte _08144D20 + .4byte _08144D28 + .4byte _08144D38 + .4byte _08144D70 + .4byte _08144D78 + .4byte _08144D62 + .4byte _08144D6A + .4byte _08144DC6 + .4byte _08144DF0 + .4byte _08144DE8 + .4byte _08144D8E + .4byte _08144DA4 + .4byte _08144DBA + .4byte _08144DDC + .4byte _08144E18 + .4byte _08144E1C + .4byte _08144E24 + .4byte _08144E30 + .4byte _08144D4E + .4byte _08144D3C + .4byte _08144E4C +_08144D20: + ldr r0, [r2, 0x4] + str r0, [r4, 0x4] + movs r0, 0x1 + b _08144E5A +_08144D28: + adds r0, r4, 0 + adds r0, 0x24 + ldr r1, [r2, 0x4] + ldr r2, [r4, 0x18] + bl sub_81448AC + movs r0, 0x2 + b _08144E5A +_08144D38: + movs r0, 0x3 + b _08144E5A +_08144D3C: + adds r0, r4, 0 + adds r0, 0x24 + ldr r2, [r4, 0x14] + movs r1, 0x14 + movs r3, 0 + bl sub_8144888 + movs r0, 0x3 + b _08144E5A +_08144D4E: + ldrb r0, [r2, 0x4] + bl sub_8054EC4 + adds r2, r0, 0 + adds r0, r4, 0 + movs r1, 0x12 + bl sub_8144C00 + movs r0, 0x3 + b _08144E5A +_08144D62: + ldr r0, [r4, 0x4] + cmp r0, 0 + bne _08144E60 + b _08144D70 +_08144D6A: + ldr r0, [r4, 0x4] + cmp r0, 0x1 + bne _08144E60 +_08144D70: + adds r0, r4, 0 + bl sub_8144BE4 + b _08144E60 +_08144D78: + ldr r0, [r4, 0x20] + ldr r1, [r4, 0x18] + movs r2, 0x40 + bl memcpy + movs r0, 0x5 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] + movs r0, 0x2 + b _08144E62 +_08144D8E: + ldr r0, [r4, 0x20] + ldr r1, [r4, 0x18] + movs r2, 0x40 + bl memcpy + movs r0, 0x5 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] + movs r0, 0x3 + b _08144E62 +_08144DA4: + ldr r0, [r4, 0x20] + ldr r1, [r4, 0x18] + movs r2, 0x40 + bl memcpy + movs r0, 0x5 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] + movs r0, 0x5 + b _08144E62 +_08144DBA: + movs r0, 0x5 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] + movs r0, 0x4 + b _08144E62 +_08144DC6: + ldr r0, [r4, 0x14] + bl sub_81442CC + adds r0, r4, 0 + adds r0, 0x24 + ldr r2, [r4, 0x14] + movs r1, 0x11 + movs r3, 0x64 + bl sub_8144888 + b _08144E60 +_08144DDC: + ldr r2, [r4, 0x4] + adds r0, r4, 0 + movs r1, 0x13 + bl sub_8144C00 + b _08144E60 +_08144DE8: + ldr r0, [r4, 0x18] + bl sub_8143F68 + b _08144E60 +_08144DF0: + ldr r0, [r4, 0x18] + bl sub_8143EF4 + cmp r0, 0 + bne _08144E0C + ldr r0, [r4, 0x18] + bl sub_8143DC8 + adds r0, r4, 0 + movs r1, 0x13 + movs r2, 0 + bl sub_8144C00 + b _08144E60 +_08144E0C: + adds r0, r4, 0 + movs r1, 0x13 + movs r2, 0x1 + bl sub_8144C00 + b _08144E60 +_08144E18: + movs r0, 0x6 + b _08144E5A +_08144E1C: + ldr r0, [r4, 0x18] + bl sub_8144254 + b _08144E60 +_08144E24: + ldr r0, [r4, 0x18] + movs r1, 0xFA + lsls r1, 2 + bl sub_8069EA4 + b _08144E60 +_08144E30: + ldr r0, _08144E48 @ =gUnknown_300500C + ldr r0, [r0] + movs r1, 0x94 + lsls r1, 3 + adds r0, r1 + ldr r1, [r4, 0x18] + movs r2, 0xBC + bl memcpy + bl sub_80E7490 + b _08144E60 + .align 2, 0 +_08144E48: .4byte gUnknown_300500C +_08144E4C: + ldr r0, _08144E68 @ =gUnknown_201C000 + ldr r1, [r4, 0x18] + movs r2, 0x80 + lsls r2, 3 + bl memcpy + movs r0, 0x7 +_08144E5A: + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] +_08144E60: + movs r0, 0x1 +_08144E62: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08144E68: .4byte gUnknown_201C000 + thumb_func_end sub_8144CA0 + + thumb_func_start sub_8144E6C +sub_8144E6C: @ 8144E6C + push {lr} + adds r1, r0, 0 + ldr r0, [r1, 0xC] + cmp r0, 0 + beq _08144E7E + movs r0, 0x4 + str r0, [r1, 0x8] + movs r0, 0 + str r0, [r1, 0xC] +_08144E7E: + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8144E6C + + thumb_func_start sub_8144E84 +sub_8144E84: @ 8144E84 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0xC] + cmp r0, 0 + beq _08144E94 + cmp r0, 0x1 + beq _08144EA2 + b _08144EB4 +_08144E94: + ldr r0, [r4, 0x18] + bl sub_80DA89C + ldr r0, [r4, 0xC] + adds r0, 0x1 + str r0, [r4, 0xC] + b _08144EB4 +_08144EA2: + adds r0, r4, 0x4 + bl sub_80DA8B0 + adds r1, r0, 0 + cmp r1, 0 + bne _08144EB4 + movs r0, 0x4 + str r0, [r4, 0x8] + str r1, [r4, 0xC] +_08144EB4: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8144E84 + + thumb_func_start sub_8144EBC +sub_8144EBC: @ 8144EBC + push {r4,lr} + adds r4, r0, 0 + ldr r3, _08144EE4 @ =gUnknown_201C000 + adds r0, r4, 0x4 + ldr r1, _08144EE8 @ =gUnknown_300500C + ldr r1, [r1] + ldr r2, _08144EEC @ =gUnknown_3005008 + ldr r2, [r2] + bl _call_via_r3 + cmp r0, 0x1 + bne _08144EDC + movs r0, 0x4 + str r0, [r4, 0x8] + movs r0, 0 + str r0, [r4, 0xC] +_08144EDC: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08144EE4: .4byte gUnknown_201C000 +_08144EE8: .4byte gUnknown_300500C +_08144EEC: .4byte gUnknown_3005008 + thumb_func_end sub_8144EBC + + thumb_func_start sub_8144EF0 +sub_8144EF0: @ 8144EF0 + push {r4,r5,lr} + sub sp, 0x20 + mov r2, sp + ldr r1, _08144F18 @ =gUnknown_8466F60 + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + ldm r1!, {r3,r4} + stm r2!, {r3,r4} + ldr r1, [r0, 0x8] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + bl _call_via_r1 + add sp, 0x20 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08144F18: .4byte gUnknown_8466F60 + thumb_func_end sub_8144EF0 + + thumb_func_start sub_8144F1C +sub_8144F1C: @ 8144F1C + push {r4,lr} + ldr r4, _08144F38 @ =gUnknown_203F3C4 + movs r0, 0x60 + bl sub_8002BB0 + str r0, [r4] + ldr r1, _08144F3C @ =gUnknown_8468B6C + movs r2, 0 + movs r3, 0x1 + bl sub_8144FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144F38: .4byte gUnknown_203F3C4 +_08144F3C: .4byte gUnknown_8468B6C + thumb_func_end sub_8144F1C + + thumb_func_start sub_8144F40 +sub_8144F40: @ 8144F40 + push {r4,lr} + ldr r4, _08144F5C @ =gUnknown_203F3C4 + movs r0, 0x60 + bl sub_8002BB0 + str r0, [r4] + ldr r1, _08144F60 @ =gUnknown_8468BCC + movs r2, 0 + movs r3, 0x1 + bl sub_8144FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144F5C: .4byte gUnknown_203F3C4 +_08144F60: .4byte gUnknown_8468BCC + thumb_func_end sub_8144F40 + + thumb_func_start sub_8144F64 +sub_8144F64: @ 8144F64 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r4, _08144F74 @ =gUnknown_203F3C4 + ldr r0, [r4] + cmp r0, 0 + bne _08144F78 + movs r0, 0x3 + b _08144F98 + .align 2, 0 +_08144F74: .4byte gUnknown_203F3C4 +_08144F78: + bl sub_8145600 + adds r5, r0, 0 + cmp r5, 0x3 + bne _08144F96 + ldr r0, [r4] + ldr r1, [r0, 0x4] + strh r1, [r6] + bl sub_8144FF8 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08144F96: + adds r0, r5, 0 +_08144F98: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8144F64 + + thumb_func_start sub_8144FA0 +sub_8144FA0: @ 8144FA0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + adds r4, r0, 0 + adds r6, r1, 0 + mov r8, r2 + mov r9, r3 + movs r5, 0 + str r5, [r4] + str r5, [r4, 0x8] + movs r0, 0xA6 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r4, 0x18] + movs r0, 0xDE + lsls r0, 1 + bl sub_8002BB0 + str r0, [r4, 0x1C] + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + str r0, [r4, 0x14] + movs r0, 0x64 + bl sub_8002BB0 + str r0, [r4, 0x20] + str r6, [r4, 0x10] + str r5, [r4, 0xC] + adds r4, 0x38 + adds r0, r4, 0 + mov r1, r8 + mov r2, r9 + bl sub_814485C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8144FA0 + + thumb_func_start sub_8144FF8 +sub_8144FF8: @ 8144FF8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x18] + bl sub_8002BC4 + ldr r0, [r4, 0x1C] + bl sub_8002BC4 + ldr r0, [r4, 0x14] + bl sub_8002BC4 + ldr r0, [r4, 0x20] + bl sub_8002BC4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8144FF8 + + thumb_func_start sub_814501C +sub_814501C: @ 814501C + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + adds r4, r3, 0 + movs r0, 0x80 + lsls r0, 3 + cmp r4, r0 + bls _0814503A + ldr r0, _08145050 @ =gUnknown_8466F80 + ldr r1, _08145054 @ =0x00000101 + ldr r2, _08145058 @ =gUnknown_8466FB8 + movs r3, 0x1 + bl AGBAssert +_0814503A: + adds r0, r5, 0 + adds r0, 0x38 + adds r1, r6, 0 + adds r2, r7, 0 + adds r3, r4, 0 + bl sub_8144888 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08145050: .4byte gUnknown_8466F80 +_08145054: .4byte 0x00000101 +_08145058: .4byte gUnknown_8466FB8 + thumb_func_end sub_814501C + + thumb_func_start sub_814505C +sub_814505C: @ 814505C + push {lr} + cmp r0, 0 + bne _08145064 + adds r0, r1, 0 +_08145064: + pop {r1} + bx r1 + thumb_func_end sub_814505C + + thumb_func_start sub_8145068 +sub_8145068: @ 8145068 + push {lr} + cmp r1, r0 + bcs _08145072 + movs r0, 0 + b _0814507C +_08145072: + cmp r1, r0 + beq _0814507A + movs r0, 0x2 + b _0814507C +_0814507A: + movs r0, 0x1 +_0814507C: + pop {r1} + bx r1 + thumb_func_end sub_8145068 + + thumb_func_start sub_8145080 +sub_8145080: @ 8145080 + movs r1, 0x4 + str r1, [r0, 0x8] + movs r0, 0 + bx lr + thumb_func_end sub_8145080 + + thumb_func_start sub_8145088 +sub_8145088: @ 8145088 + movs r0, 0x3 + bx lr + thumb_func_end sub_8145088 + + thumb_func_start sub_814508C +sub_814508C: @ 814508C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x38 + bl sub_8144844 + cmp r0, 0 + beq _0814509E + movs r0, 0x4 + str r0, [r4, 0x8] +_0814509E: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814508C + + thumb_func_start sub_81450A8 +sub_81450A8: @ 81450A8 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x38 + bl sub_8144850 + cmp r0, 0 + beq _081450BA + movs r0, 0x4 + str r0, [r4, 0x8] +_081450BA: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81450A8 + + thumb_func_start sub_81450C4 +sub_81450C4: @ 81450C4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, [r5, 0xC] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r2, [r5, 0x10] + adds r4, r2, r1 + adds r0, 0x1 + str r0, [r5, 0xC] + ldr r0, [r4] + cmp r0, 0x1D + bls _081450E0 + b _081455F8 +_081450E0: + lsls r0, 2 + ldr r1, _081450EC @ =_081450F0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081450EC: .4byte _081450F0 + .align 2, 0 +_081450F0: + .4byte _08145168 + .4byte _08145190 + .4byte _08145196 + .4byte _081451C4 + .4byte _08145268 + .4byte _081451E4 + .4byte _08145228 + .4byte _0814527C + .4byte _081452AC + .4byte _081452EC + .4byte _08145320 + .4byte _08145350 + .4byte _08145378 + .4byte _081453D8 + .4byte _081453A4 + .4byte _08145440 + .4byte _0814540C + .4byte _081454AA + .4byte _08145458 + .4byte _08145470 + .4byte _0814549C + .4byte _08145510 + .4byte _081454B8 + .4byte _081454E4 + .4byte _08145538 + .4byte _08145542 + .4byte _0814554C + .4byte _08145588 + .4byte _081455C0 + .4byte _081455EC +_08145168: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _0814517C + ldr r0, _08145188 @ =gUnknown_8466F80 + movs r1, 0xB1 + lsls r1, 1 + ldr r2, _0814518C @ =gUnknown_8466FD4 + movs r3, 0x1 + bl AGBAssert +_0814517C: + movs r0, 0x1 + str r0, [r5, 0x8] + ldr r0, [r4, 0x4] + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_08145188: .4byte gUnknown_8466F80 +_0814518C: .4byte gUnknown_8466FD4 +_08145190: + movs r0, 0x3 + str r0, [r5, 0x8] + b _081455F8 +_08145196: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _081451AA + ldr r0, _081451BC @ =gUnknown_8466F80 + movs r1, 0xB6 + lsls r1, 1 + ldr r2, _081451C0 @ =gUnknown_8466FD4 + movs r3, 0x1 + bl AGBAssert +_081451AA: + adds r0, r5, 0 + adds r0, 0x38 + ldr r1, [r4, 0x4] + ldr r2, [r5, 0x14] + bl sub_81448AC + movs r0, 0x2 + str r0, [r5, 0x8] + b _081455F8 + .align 2, 0 +_081451BC: .4byte gUnknown_8466F80 +_081451C0: .4byte gUnknown_8466FD4 +_081451C4: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145272 + ldr r0, _081451DC @ =gUnknown_8466F80 + movs r1, 0xB9 + lsls r1, 1 + ldr r2, _081451E0 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert + b _08145272 + .align 2, 0 +_081451DC: .4byte gUnknown_8466F80 +_081451E0: .4byte gUnknown_8466FEC +_081451E4: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _081451F8 + ldr r0, _08145218 @ =gUnknown_8466F80 + movs r1, 0xBC + lsls r1, 1 + ldr r2, _0814521C @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_081451F8: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _0814520A + ldr r0, _08145218 @ =gUnknown_8466F80 + ldr r1, _08145220 @ =0x00000179 + ldr r2, _08145224 @ =gUnknown_8466FD4 + movs r3, 0x1 + bl AGBAssert +_0814520A: + ldr r0, [r5, 0x20] + ldr r1, [r5, 0x14] + movs r2, 0x64 + bl memcpy + b _081455F8 + .align 2, 0 +_08145218: .4byte gUnknown_8466F80 +_0814521C: .4byte gUnknown_8466FEC +_08145220: .4byte 0x00000179 +_08145224: .4byte gUnknown_8466FD4 +_08145228: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0814523C + ldr r0, _08145258 @ =gUnknown_8466F80 + movs r1, 0xBF + lsls r1, 1 + ldr r2, _0814525C @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_0814523C: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _0814524E + ldr r0, _08145258 @ =gUnknown_8466F80 + ldr r1, _08145260 @ =0x0000017f + ldr r2, _08145264 @ =gUnknown_8466FD4 + movs r3, 0x1 + bl AGBAssert +_0814524E: + ldr r0, [r5, 0x20] + bl sub_81443D4 + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_08145258: .4byte gUnknown_8466F80 +_0814525C: .4byte gUnknown_8466FEC +_08145260: .4byte 0x0000017f +_08145264: .4byte gUnknown_8466FD4 +_08145268: + ldr r1, [r5, 0x4] + ldr r0, [r4, 0x4] + cmp r1, r0 + beq _08145272 + b _081455F8 +_08145272: + movs r0, 0 + str r0, [r5, 0xC] + ldr r0, [r4, 0x8] + str r0, [r5, 0x10] + b _081455F8 +_0814527C: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145290 + ldr r0, _081452A4 @ =gUnknown_8466F80 + movs r1, 0xC6 + lsls r1, 1 + ldr r2, _081452A8 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_08145290: + ldr r0, [r4, 0x8] + ldr r1, [r5, 0x18] + bl sub_814505C + adds r2, r0, 0 + ldr r1, [r5, 0x20] + bl sub_8144418 + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_081452A4: .4byte gUnknown_8466F80 +_081452A8: .4byte gUnknown_8466FEC +_081452AC: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _081452C0 + ldr r0, _081452DC @ =gUnknown_8466F80 + movs r1, 0xC9 + lsls r1, 1 + ldr r2, _081452E0 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_081452C0: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _081452D2 + ldr r0, _081452DC @ =gUnknown_8466F80 + ldr r1, _081452E4 @ =0x00000193 + ldr r2, _081452E8 @ =gUnknown_8466FD4 + movs r3, 0x1 + bl AGBAssert +_081452D2: + ldr r0, [r5, 0x14] + ldr r0, [r0] + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_081452DC: .4byte gUnknown_8466F80 +_081452E0: .4byte gUnknown_8466FEC +_081452E4: .4byte 0x00000193 +_081452E8: .4byte gUnknown_8466FD4 +_081452EC: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145300 + ldr r0, _08145318 @ =gUnknown_8466F80 + movs r1, 0xCC + lsls r1, 1 + ldr r2, _0814531C @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_08145300: + ldr r0, [r4, 0x8] + adds r1, r5, 0 + adds r1, 0x34 + bl sub_814505C + adds r2, r0, 0 + ldr r1, [r5, 0x20] + bl sub_8144434 + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_08145318: .4byte gUnknown_8466F80 +_0814531C: .4byte gUnknown_8466FEC +_08145320: + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _08145332 + ldr r0, _08145344 @ =gUnknown_8466F80 + ldr r1, _08145348 @ =0x0000019f + ldr r2, _0814534C @ =gUnknown_8466FD4 + movs r3, 0x1 + bl AGBAssert +_08145332: + ldr r0, [r5, 0x20] + ldr r1, [r4, 0x4] + bl sub_81444B0 + lsls r0, 16 + lsrs r0, 16 + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_08145344: .4byte gUnknown_8466F80 +_08145348: .4byte 0x0000019f +_0814534C: .4byte gUnknown_8466FD4 +_08145350: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145364 + ldr r0, _08145370 @ =gUnknown_8466F80 + movs r1, 0xD2 + lsls r1, 1 + ldr r2, _08145374 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_08145364: + ldr r0, [r5, 0x20] + ldr r1, [r4, 0x8] + bl sub_8144474 + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_08145370: .4byte gUnknown_8466F80 +_08145374: .4byte gUnknown_8466FEC +_08145378: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0814538C + ldr r0, _0814539C @ =gUnknown_8466F80 + movs r1, 0xD5 + lsls r1, 1 + ldr r2, _081453A0 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_0814538C: + ldr r0, [r4, 0x8] + ldr r1, [r5, 0x14] + ldr r1, [r1] + bl sub_8145068 + str r0, [r5, 0x4] + b _081455F8 + .align 2, 0 +_0814539C: .4byte gUnknown_8466F80 +_081453A0: .4byte gUnknown_8466FEC +_081453A4: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _081453B8 + ldr r0, _081453D0 @ =gUnknown_8466F80 + movs r1, 0xD8 + lsls r1, 1 + ldr r2, _081453D4 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_081453B8: + ldr r0, [r4, 0x8] + ldr r1, [r5, 0x1C] + bl sub_814505C + adds r2, r0, 0 + movs r3, 0xDE + lsls r3, 1 + adds r0, r5, 0 + movs r1, 0x17 + bl sub_814501C + b _081455F8 + .align 2, 0 +_081453D0: .4byte gUnknown_8466F80 +_081453D4: .4byte gUnknown_8466FEC +_081453D8: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _081453EC + ldr r0, _08145404 @ =gUnknown_8466F80 + movs r1, 0xDB + lsls r1, 1 + ldr r2, _08145408 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_081453EC: + ldr r0, [r4, 0x8] + ldr r1, [r5, 0x18] + bl sub_814505C + adds r2, r0, 0 + movs r3, 0xA6 + lsls r3, 1 + adds r0, r5, 0 + movs r1, 0x16 + bl sub_814501C + b _081455F8 + .align 2, 0 +_08145404: .4byte gUnknown_8466F80 +_08145408: .4byte gUnknown_8466FEC +_0814540C: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145420 + ldr r0, _08145438 @ =gUnknown_8466F80 + movs r1, 0xDE + lsls r1, 1 + ldr r2, _0814543C @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_08145420: + ldr r0, [r4, 0x8] + adds r1, r5, 0 + adds r1, 0x34 + bl sub_814505C + adds r2, r0, 0 + adds r0, r5, 0 + movs r1, 0x18 + movs r3, 0x4 + bl sub_814501C + b _081455F8 + .align 2, 0 +_08145438: .4byte gUnknown_8466F80 +_0814543C: .4byte gUnknown_8466FEC +_08145440: + ldr r2, [r4, 0x8] + cmp r2, 0 + bne _0814544C + ldr r2, [r5, 0x24] + ldr r3, [r5, 0x28] + b _0814544E +_0814544C: + ldr r3, [r4, 0x4] +_0814544E: + adds r0, r5, 0 + movs r1, 0x19 + bl sub_814501C + b _081455F8 +_08145458: + ldr r2, [r4, 0x8] + cmp r2, 0 + bne _08145464 + ldr r2, [r5, 0x2C] + ldr r3, [r5, 0x30] + b _08145466 +_08145464: + ldr r3, [r4, 0x4] +_08145466: + adds r0, r5, 0 + movs r1, 0x10 + bl sub_814501C + b _081455F8 +_08145470: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145484 + ldr r0, _08145494 @ =gUnknown_8466F80 + movs r1, 0xE9 + lsls r1, 1 + ldr r2, _08145498 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_08145484: + ldr r2, [r4, 0x8] + adds r0, r5, 0 + movs r1, 0x1A + movs r3, 0xBC + bl sub_814501C + b _081455F8 + .align 2, 0 +_08145494: .4byte gUnknown_8466F80 +_08145498: .4byte gUnknown_8466FEC +_0814549C: + ldr r2, [r4, 0x8] + ldr r3, [r4, 0x4] + adds r0, r5, 0 + movs r1, 0x15 + bl sub_814501C + b _081455F8 +_081454AA: + ldr r2, [r4, 0x8] + ldr r3, [r4, 0x4] + adds r0, r5, 0 + movs r1, 0x1C + bl sub_814501C + b _081455F8 +_081454B8: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _081454CA + ldr r0, _081454D8 @ =gUnknown_8466F80 + ldr r1, _081454DC @ =0x000001e1 + ldr r2, _081454E0 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_081454CA: + ldr r0, [r5, 0x18] + ldr r1, [r4, 0x8] + movs r2, 0xA6 + lsls r2, 1 + bl memcpy + b _081455F8 + .align 2, 0 +_081454D8: .4byte gUnknown_8466F80 +_081454DC: .4byte 0x000001e1 +_081454E0: .4byte gUnknown_8466FEC +_081454E4: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _081454F8 + ldr r0, _08145508 @ =gUnknown_8466F80 + movs r1, 0xF3 + lsls r1, 1 + ldr r2, _0814550C @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_081454F8: + ldr r0, [r5, 0x1C] + ldr r1, [r4, 0x8] + movs r2, 0xDE + lsls r2, 1 + bl memcpy + b _081455F8 + .align 2, 0 +_08145508: .4byte gUnknown_8466F80 +_0814550C: .4byte gUnknown_8466FEC +_08145510: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08145522 + ldr r0, _0814552C @ =gUnknown_8466F80 + ldr r1, _08145530 @ =0x000001eb + ldr r2, _08145534 @ =gUnknown_8466FEC + movs r3, 0x1 + bl AGBAssert +_08145522: + ldr r0, [r4, 0x8] + ldr r0, [r0] + str r0, [r5, 0x34] + b _081455F8 + .align 2, 0 +_0814552C: .4byte gUnknown_8466F80 +_08145530: .4byte 0x000001eb +_08145534: .4byte gUnknown_8466FEC +_08145538: + ldr r0, [r4, 0x8] + str r0, [r5, 0x24] + ldr r0, [r4, 0x4] + str r0, [r5, 0x28] + b _081455F8 +_08145542: + ldr r0, [r4, 0x8] + str r0, [r5, 0x2C] + ldr r0, [r4, 0x4] + str r0, [r5, 0x30] + b _081455F8 +_0814554C: + ldr r0, [r4, 0x4] + cmp r0, 0 + bne _08145558 + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _08145566 +_08145558: + ldr r0, _08145580 @ =gUnknown_8466F80 + movs r1, 0xFD + lsls r1, 1 + ldr r2, _08145584 @ =gUnknown_8467000 + movs r3, 0x1 + bl AGBAssert +_08145566: + ldr r4, [r5, 0x18] + bl sub_8143D6C + adds r1, r0, 0 + movs r2, 0xA6 + lsls r2, 1 + adds r0, r4, 0 + bl memcpy + ldr r0, [r5, 0x18] + bl sub_814410C + b _081455F8 + .align 2, 0 +_08145580: .4byte gUnknown_8466F80 +_08145584: .4byte gUnknown_8467000 +_08145588: + ldr r0, [r4, 0x4] + cmp r0, 0 + bne _08145594 + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _081455A2 +_08145594: + ldr r0, _081455B8 @ =gUnknown_8466F80 + movs r1, 0x80 + lsls r1, 2 + ldr r2, _081455BC @ =gUnknown_8467000 + movs r3, 0x1 + bl AGBAssert +_081455A2: + ldr r4, [r5, 0x1C] + bl sub_8143D58 + adds r1, r0, 0 + movs r2, 0xDE + lsls r2, 1 + adds r0, r4, 0 + bl memcpy + b _081455F8 + .align 2, 0 +_081455B8: .4byte gUnknown_8466F80 +_081455BC: .4byte gUnknown_8467000 +_081455C0: + ldr r0, [r4, 0x4] + cmp r0, 0 + bne _081455CC + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _081455D8 +_081455CC: + ldr r0, _081455E0 @ =gUnknown_8466F80 + ldr r1, _081455E4 @ =0x00000205 + ldr r2, _081455E8 @ =gUnknown_8467000 + movs r3, 0x1 + bl AGBAssert +_081455D8: + bl sub_8069E48 + str r0, [r5, 0x24] + b _081455F8 + .align 2, 0 +_081455E0: .4byte gUnknown_8466F80 +_081455E4: .4byte 0x00000205 +_081455E8: .4byte gUnknown_8467000 +_081455EC: + ldr r2, [r4, 0x8] + ldr r3, [r4, 0x4] + adds r0, r5, 0 + movs r1, 0x1B + bl sub_814501C +_081455F8: + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81450C4 + + thumb_func_start sub_8145600 +sub_8145600: @ 8145600 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + cmp r0, 0x4 + bls _08145616 + ldr r0, _08145644 @ =gUnknown_8466F80 + ldr r1, _08145648 @ =0x00000222 + ldr r2, _0814564C @ =gUnknown_8467044 + movs r3, 0x1 + bl AGBAssert +_08145616: + ldr r1, _08145650 @ =gUnknown_8467030 + ldr r0, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + adds r5, r0, 0 + ldr r0, [r4, 0x8] + cmp r0, 0x4 + bls _0814563C + ldr r0, _08145644 @ =gUnknown_8466F80 + movs r1, 0x89 + lsls r1, 2 + ldr r2, _0814564C @ =gUnknown_8467044 + movs r3, 0x1 + bl AGBAssert +_0814563C: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08145644: .4byte gUnknown_8466F80 +_08145648: .4byte 0x00000222 +_0814564C: .4byte gUnknown_8467044 +_08145650: .4byte gUnknown_8467030 + thumb_func_end sub_8145600 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mon_markings.s b/asm/mon_markings.s new file mode 100644 index 000000000..f01b9427f --- /dev/null +++ b/asm/mon_markings.s @@ -0,0 +1,984 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BE46C +sub_80BE46C: @ 80BE46C + ldr r1, _080BE474 @ =gUnknown_20399C0 + str r0, [r1] + bx lr + .align 2, 0 +_080BE474: .4byte gUnknown_20399C0 + thumb_func_end sub_80BE46C + + thumb_func_start sub_80BE478 +sub_80BE478: @ 80BE478 + push {lr} + sub sp, 0x4 + ldr r0, _080BE4B0 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x14] + lsrs r0, 3 + bl sub_8069788 + ldr r3, _080BE4B4 @ =gUnknown_20399C0 + ldr r2, [r3] + ldr r1, [r0] + str r1, [r2, 0x2C] + ldr r0, [r0, 0x4] + str r0, [r2, 0x30] + ldr r0, _080BE4B8 @ =0x000010b4 + adds r2, r0 + movs r1, 0 + strb r1, [r2] + mov r0, sp + strh r1, [r0] + ldr r1, [r3] + adds r1, 0x34 + ldr r2, _080BE4BC @ =0x01000800 + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080BE4B0: .4byte gUnknown_300500C +_080BE4B4: .4byte gUnknown_20399C0 +_080BE4B8: .4byte 0x000010b4 +_080BE4BC: .4byte 0x01000800 + thumb_func_end sub_80BE478 + + thumb_func_start sub_80BE4C0 +sub_80BE4C0: @ 80BE4C0 + push {r4-r7,lr} + ldr r0, _080BE4E0 @ =gUnknown_20399C0 + ldr r1, [r0] + ldr r2, _080BE4E4 @ =0x000010b4 + adds r0, r1, r2 + ldrb r2, [r0] + lsls r0, r2, 8 + adds r0, 0x34 + adds r5, r1, r0 + cmp r2, 0xD + beq _080BE590 + cmp r2, 0xD + bgt _080BE4E8 + cmp r2, 0 + beq _080BE4EE + b _080BE538 + .align 2, 0 +_080BE4E0: .4byte gUnknown_20399C0 +_080BE4E4: .4byte 0x000010b4 +_080BE4E8: + cmp r2, 0xE + beq _080BE5DC + b _080BE538 +_080BE4EE: + ldr r0, [r1, 0x2C] + adds r1, r5, 0 + movs r2, 0x8 + bl CpuFastSet + movs r4, 0 + adds r7, r5, 0 + adds r7, 0xE0 +_080BE4FE: + ldr r6, _080BE530 @ =gUnknown_20399C0 + ldr r0, [r6] + ldr r0, [r0, 0x2C] + adds r0, 0x20 + adds r4, 0x1 + lsls r1, r4, 5 + adds r1, r5, r1 + movs r2, 0x8 + bl CpuFastSet + lsls r4, 16 + lsrs r4, 16 + cmp r4, 0x5 + bls _080BE4FE + ldr r0, [r6] + ldr r0, [r0, 0x2C] + adds r0, 0x40 + adds r1, r7, 0 + movs r2, 0x8 + bl CpuFastSet + ldr r1, [r6] + ldr r0, _080BE534 @ =0x000010b4 + adds r1, r0 + b _080BE57E + .align 2, 0 +_080BE530: .4byte gUnknown_20399C0 +_080BE534: .4byte 0x000010b4 +_080BE538: + ldr r0, _080BE588 @ =gUnknown_20399C0 + ldr r0, [r0] + ldr r0, [r0, 0x2C] + adds r0, 0x60 + adds r1, r5, 0 + movs r2, 0x8 + bl CpuFastSet + movs r4, 0 + adds r7, r5, 0 + adds r7, 0xE0 +_080BE54E: + ldr r6, _080BE588 @ =gUnknown_20399C0 + ldr r0, [r6] + ldr r0, [r0, 0x2C] + adds r0, 0x80 + adds r4, 0x1 + lsls r1, r4, 5 + adds r1, r5, r1 + movs r2, 0x8 + bl CpuFastSet + lsls r4, 16 + lsrs r4, 16 + cmp r4, 0x5 + bls _080BE54E + ldr r0, [r6] + ldr r0, [r0, 0x2C] + adds r0, 0xA0 + adds r1, r7, 0 + movs r2, 0x8 + bl CpuFastSet + ldr r1, [r6] + ldr r2, _080BE58C @ =0x000010b4 + adds r1, r2 +_080BE57E: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080BE5E8 + .align 2, 0 +_080BE588: .4byte gUnknown_20399C0 +_080BE58C: .4byte 0x000010b4 +_080BE590: + ldr r0, [r1, 0x2C] + adds r0, 0xC0 + adds r1, r5, 0 + movs r2, 0x8 + bl CpuFastSet + movs r4, 0 + adds r7, r5, 0 + adds r7, 0xE0 +_080BE5A2: + ldr r6, _080BE5E0 @ =gUnknown_20399C0 + ldr r0, [r6] + ldr r0, [r0, 0x2C] + adds r0, 0xE0 + adds r4, 0x1 + lsls r1, r4, 5 + adds r1, r5, r1 + movs r2, 0x8 + bl CpuFastSet + lsls r4, 16 + lsrs r4, 16 + cmp r4, 0x5 + bls _080BE5A2 + ldr r0, [r6] + ldr r0, [r0, 0x2C] + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + adds r1, r7, 0 + movs r2, 0x8 + bl CpuFastSet + ldr r1, [r6] + ldr r2, _080BE5E4 @ =0x000010b4 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080BE5DC: + movs r0, 0 + b _080BE5EA + .align 2, 0 +_080BE5E0: .4byte gUnknown_20399C0 +_080BE5E4: .4byte 0x000010b4 +_080BE5E8: + movs r0, 0x1 +_080BE5EA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80BE4C0 + + thumb_func_start sub_80BE5F0 +sub_80BE5F0: @ 80BE5F0 + push {lr} + bl sub_80BE478 +_080BE5F6: + bl sub_80BE4C0 + lsls r0, 24 + cmp r0, 0 + bne _080BE5F6 + pop {r0} + bx r0 + thumb_func_end sub_80BE5F0 + + thumb_func_start sub_80BE604 +sub_80BE604: @ 80BE604 + push {r4-r7,lr} + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + ldr r2, _080BE654 @ =gUnknown_20399C0 + ldr r3, [r2] + movs r1, 0 + strb r1, [r3, 0x5] + ldr r1, [r2] + strb r0, [r1, 0x4] + movs r3, 0 + adds r7, r2, 0 + adds r4, r7, 0 + movs r2, 0x1 +_080BE622: + ldr r0, [r4] + adds r1, r0, 0x6 + adds r1, r3 + ldrb r0, [r0, 0x4] + asrs r0, r3 + ands r0, r2 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x3 + bls _080BE622 + lsls r0, r5, 16 + asrs r0, 16 + lsls r1, r6, 16 + asrs r1, 16 + ldr r3, [r7] + ldrh r2, [r3] + ldrh r3, [r3, 0x2] + bl sub_80BE7CC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BE654: .4byte gUnknown_20399C0 + thumb_func_end sub_80BE604 + + thumb_func_start sub_80BE658 +sub_80BE658: @ 80BE658 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _080BE6EC @ =gUnknown_20399C0 +_080BE65E: + ldr r0, [r5] + ldrh r0, [r0] + adds r0, r4, r0 + lsls r0, 16 + lsrs r0, 16 + bl sub_800874C + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x2 + bls _080BE65E + ldr r4, _080BE6EC @ =gUnknown_20399C0 + ldr r0, [r4] + ldrh r0, [r0, 0x2] + bl sub_8008A30 + ldr r0, [r4] + ldrh r0, [r0, 0x2] + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + bl sub_8008A30 + movs r4, 0 +_080BE690: + ldr r0, _080BE6EC @ =gUnknown_20399C0 + ldr r0, [r0] + lsls r1, r4, 2 + adds r0, 0xC + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080BE6E6 + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _080BE690 + movs r4, 0 +_080BE6B0: + ldr r5, _080BE6EC @ =gUnknown_20399C0 + ldr r0, [r5] + lsls r1, r4, 2 + adds r0, 0x14 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080BE6E6 + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080BE6B0 + ldr r0, [r5] + ldr r0, [r0, 0x24] + cmp r0, 0 + beq _080BE6DA + bl sub_8007280 +_080BE6DA: + ldr r0, [r5] + ldr r0, [r0, 0x28] + cmp r0, 0 + beq _080BE6E6 + bl sub_8007280 +_080BE6E6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BE6EC: .4byte gUnknown_20399C0 + thumb_func_end sub_80BE658 + + thumb_func_start sub_80BE6F0 +sub_80BE6F0: @ 80BE6F0 + push {r4,r5,lr} + ldr r0, _080BE720 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + beq _080BE728 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _080BE724 @ =gUnknown_20399C0 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + subs r0, 0x1 + strb r0, [r1, 0x5] + lsls r0, 24 + cmp r0, 0 + bge _080BE7B0 + ldr r1, [r2] + movs r0, 0x5 + strb r0, [r1, 0x5] + b _080BE7B0 + .align 2, 0 +_080BE720: .4byte gUnknown_30030F0 +_080BE724: .4byte gUnknown_20399C0 +_080BE728: + movs r0, 0x80 + ands r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _080BE758 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _080BE754 @ =gUnknown_20399C0 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + adds r0, 0x1 + strb r0, [r1, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x5 + ble _080BE7B0 + ldr r0, [r2] + strb r5, [r0, 0x5] + b _080BE7B0 + .align 2, 0 +_080BE754: .4byte gUnknown_20399C0 +_080BE758: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080BE7B4 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _080BE788 @ =gUnknown_20399C0 + ldr r0, [r2] + movs r1, 0x5 + ldrsb r1, [r0, r1] + cmp r1, 0x4 + beq _080BE78C + cmp r1, 0x5 + beq _080BE7C2 + adds r0, 0x6 + adds r1, r0, r1 + movs r2, 0 + ldrb r0, [r1] + cmp r0, 0 + bne _080BE7AE + movs r2, 0x1 + b _080BE7AE + .align 2, 0 +_080BE788: .4byte gUnknown_20399C0 +_080BE78C: + strb r4, [r0, 0x4] + movs r3, 0 + adds r4, r2, 0 +_080BE792: + ldr r2, [r4] + adds r0, r2, 0x6 + adds r0, r3 + ldrb r0, [r0] + lsls r0, r3 + ldrb r1, [r2, 0x4] + orrs r0, r1 + strb r0, [r2, 0x4] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x3 + bls _080BE792 + b _080BE7C2 +_080BE7AE: + strb r2, [r1] +_080BE7B0: + movs r0, 0x1 + b _080BE7C4 +_080BE7B4: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080BE7B0 + movs r0, 0x5 + bl sub_80722CC +_080BE7C2: + movs r0, 0 +_080BE7C4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80BE6F0 + + thumb_func_start sub_80BE7CC +sub_80BE7CC: @ 80BE7CC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x50 + mov r8, r0 + mov r9, r1 + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + ldr r4, _080BE9C4 @ =gUnknown_20399C0 + ldr r0, [r4] + adds r0, 0x34 + str r0, [sp, 0x18] + add r1, sp, 0x1C + movs r7, 0 + movs r0, 0x80 + lsls r0, 5 + strh r0, [r1] + mov r0, sp + adds r0, 0x1E + strh r5, [r0] + add r1, sp, 0x20 + ldr r0, _080BE9C8 @ =gUnknown_8E9CBBC + str r0, [sp, 0x20] + movs r0, 0xC8 + lsls r0, 2 + strh r0, [r1, 0x4] + adds r0, r5, 0x1 + strh r0, [r1, 0x6] + add r0, sp, 0x28 + movs r1, 0 + movs r2, 0x8 + bl memset + add r2, sp, 0x18 + mov r10, r2 + mov r0, sp + mov r1, r10 + movs r2, 0x18 + bl memcpy + ldr r0, [r4] + ldr r0, [r0, 0x30] + str r0, [sp, 0x30] + add r0, sp, 0x34 + strh r6, [r0] + add r1, sp, 0x38 + ldr r0, _080BE9CC @ =gUnknown_8E9CB9C + str r0, [sp, 0x38] + adds r0, r6, 0x1 + strh r0, [r1, 0x4] + add r0, sp, 0x40 + movs r1, 0 + movs r2, 0x8 + bl memset + add r4, sp, 0x30 + mov r0, r10 + adds r1, r4, 0 + movs r2, 0x18 + bl memcpy + strh r5, [r4] + strh r6, [r4, 0x2] + ldr r0, _080BE9D0 @ =gUnknown_83EE830 + str r0, [r4, 0x4] + ldr r0, _080BE9D4 @ =gUnknown_83EE8C8 + str r0, [r4, 0x8] + str r7, [r4, 0xC] + ldr r0, _080BE9D8 @ =gUnknown_8231CFC + str r0, [r4, 0x10] + ldr r0, _080BE9DC @ =nullsub_62 + str r0, [r4, 0x14] + mov r0, sp + bl sub_8008720 + mov r0, r10 + bl sub_8008974 + movs r5, 0 + mov r3, r8 + lsls r3, 16 + mov r8, r3 + movs r0, 0x80 + lsls r0, 14 + add r0, r8 + mov r10, r0 + mov r1, r8 + str r1, [sp, 0x48] + mov r2, r9 + lsls r2, 16 + mov r9, r2 + movs r7, 0x80 + lsls r7, 14 + add r7, r9 + mov r3, r9 + str r3, [sp, 0x4C] +_080BE8A4: + adds r0, r4, 0 + mov r2, r10 + asrs r1, r2, 16 + asrs r2, r7, 16 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x40 + bne _080BE8BC + b _080BEA48 +_080BE8BC: + ldr r6, _080BE9C4 @ =gUnknown_20399C0 + ldr r2, [r6] + lsls r0, r5, 2 + adds r2, 0xC + adds r2, r0 + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + ldr r1, _080BE9E0 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + lsls r1, r5, 24 + lsrs r1, 24 + bl sub_800838C + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x1 + bls _080BE8A4 + ldr r0, [r6] + ldr r1, [r0, 0x10] + ldr r3, [sp, 0x4C] + asrs r0, r3, 16 + adds r0, 0x60 + strh r0, [r1, 0x22] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + ldr r0, _080BE9E4 @ =gUnknown_83EE890 + str r0, [r4, 0x8] + ldr r0, _080BE9E8 @ =sub_80BEA8C + str r0, [r4, 0x14] + ldr r0, _080BE9EC @ =gUnknown_83EE838 + str r0, [r4, 0x4] + movs r5, 0 + ldr r0, [sp, 0x48] + movs r1, 0x80 + lsls r1, 14 + adds r0, r1 + mov r9, r0 +_080BE914: + lsls r2, r5, 4 + adds r2, 0x10 + ldr r3, [sp, 0x4C] + asrs r3, 16 + mov r8, r3 + add r2, r8 + lsls r2, 16 + asrs r2, 16 + adds r0, r4, 0 + mov r3, r9 + asrs r1, r3, 16 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x40 + bne _080BE93A + b _080BEA58 +_080BE93A: + ldr r6, _080BE9C4 @ =gUnknown_20399C0 + ldr r1, [r6] + lsls r0, r5, 2 + adds r1, 0x14 + adds r1, r0 + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + ldr r7, _080BE9E0 @ =gUnknown_202063C + adds r0, r7 + str r0, [r1] + strh r5, [r0, 0x2E] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _080BE914 + ldr r0, _080BE9F0 @ =nullsub_8 + str r0, [r4, 0x14] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x40 + beq _080BE9F4 + ldr r0, [r6] + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r7 + str r1, [r0, 0x28] + ldrb r3, [r1, 0x1] + movs r2, 0x3F + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1, 0x1] + ldr r0, [r6] + ldr r1, [r0, 0x28] + ldrb r0, [r1, 0x3] + ands r2, r0 + movs r0, 0x80 + orrs r2, r0 + strb r2, [r1, 0x3] + ldr r0, [r6] + ldr r0, [r0, 0x28] + movs r1, 0x9 + bl sub_800838C + ldr r1, [r6] + ldr r2, [r1, 0x28] + ldr r3, [sp, 0x48] + asrs r0, r3, 16 + adds r0, 0x20 + strh r0, [r2, 0x20] + ldr r2, [r1, 0x28] + mov r0, r8 + adds r0, 0x50 + strh r0, [r2, 0x22] + ldr r0, [r1, 0x28] + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0 + bl sub_80073F0 + b _080BE9FA + .align 2, 0 +_080BE9C4: .4byte gUnknown_20399C0 +_080BE9C8: .4byte gUnknown_8E9CBBC +_080BE9CC: .4byte gUnknown_8E9CB9C +_080BE9D0: .4byte gUnknown_83EE830 +_080BE9D4: .4byte gUnknown_83EE8C8 +_080BE9D8: .4byte gUnknown_8231CFC +_080BE9DC: .4byte nullsub_62 +_080BE9E0: .4byte gUnknown_202063C +_080BE9E4: .4byte gUnknown_83EE890 +_080BE9E8: .4byte sub_80BEA8C +_080BE9EC: .4byte gUnknown_83EE838 +_080BE9F0: .4byte nullsub_8 +_080BE9F4: + ldr r1, [r6] + movs r0, 0 + str r0, [r1, 0x28] +_080BE9FA: + ldr r0, _080BEA3C @ =sub_80BEAC8 + str r0, [r4, 0x14] + ldr r0, [sp, 0x48] + movs r2, 0xC0 + lsls r2, 12 + adds r1, r0, r2 + asrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x40 + beq _080BEA6C + ldr r0, _080BEA40 @ =gUnknown_20399C0 + ldr r2, [r0] + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + ldr r0, _080BEA44 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2, 0x24] + ldr r3, [sp, 0x4C] + asrs r0, r3, 16 + adds r0, 0x10 + strh r0, [r1, 0x2E] + ldr r0, [r2, 0x24] + movs r1, 0x8 + bl sub_800838C + b _080BEA74 + .align 2, 0 +_080BEA3C: .4byte sub_80BEAC8 +_080BEA40: .4byte gUnknown_20399C0 +_080BEA44: .4byte gUnknown_202063C +_080BEA48: + ldr r0, _080BEA54 @ =gUnknown_20399C0 + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, 0xC + b _080BEA60 + .align 2, 0 +_080BEA54: .4byte gUnknown_20399C0 +_080BEA58: + ldr r0, _080BEA68 @ =gUnknown_20399C0 + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, 0x14 +_080BEA60: + adds r0, r1 + movs r1, 0 + str r1, [r0] + b _080BEA74 + .align 2, 0 +_080BEA68: .4byte gUnknown_20399C0 +_080BEA6C: + ldr r0, _080BEA84 @ =gUnknown_20399C0 + ldr r1, [r0] + movs r0, 0 + str r0, [r1, 0x24] +_080BEA74: + add sp, 0x50 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BEA84: .4byte gUnknown_20399C0 + thumb_func_end sub_80BE7CC + + thumb_func_start nullsub_62 +nullsub_62: @ 80BEA88 + bx lr + thumb_func_end nullsub_62 + + thumb_func_start sub_80BEA8C +sub_80BEA8C: @ 80BEA8C + push {lr} + adds r2, r0, 0 + ldr r0, _080BEAB4 @ =gUnknown_20399C0 + ldr r0, [r0] + movs r3, 0x2E + ldrsh r1, [r2, r3] + adds r0, 0x6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080BEAB8 + lsls r1, 1 + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl sub_800838C + b _080BEAC2 + .align 2, 0 +_080BEAB4: .4byte gUnknown_20399C0 +_080BEAB8: + lsls r1, 25 + lsrs r1, 24 + adds r0, r2, 0 + bl sub_800838C +_080BEAC2: + pop {r0} + bx r0 + thumb_func_end sub_80BEA8C + + thumb_func_start sub_80BEAC8 +sub_80BEAC8: @ 80BEAC8 + ldr r1, _080BEADC @ =gUnknown_20399C0 + ldr r1, [r1] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 4 + ldrh r2, [r0, 0x2E] + adds r1, r2 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_080BEADC: .4byte gUnknown_20399C0 + thumb_func_end sub_80BEAC8 + + thumb_func_start sub_80BEAE0 +sub_80BEAE0: @ 80BEAE0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + cmp r2, 0 + bne _080BEAF0 + ldr r2, _080BEAFC @ =gUnknown_83EE008 +_080BEAF0: + movs r3, 0x10 + bl sub_80BEB20 + pop {r1} + bx r1 + .align 2, 0 +_080BEAFC: .4byte gUnknown_83EE008 + thumb_func_end sub_80BEAE0 + + thumb_func_start sub_80BEB00 +sub_80BEB00: @ 80BEB00 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + cmp r2, 0 + bne _080BEB10 + ldr r2, _080BEB1C @ =gUnknown_83EE008 +_080BEB10: + movs r3, 0x1 + bl sub_80BEB20 + pop {r1} + bx r1 + .align 2, 0 +_080BEB1C: .4byte gUnknown_83EE008 + thumb_func_end sub_80BEB00 + + thumb_func_start sub_80BEB20 +sub_80BEB20: @ 80BEB20 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x28 + lsls r0, 16 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _080BEB9C @ =gUnknown_83EE028 + str r4, [sp, 0x18] + movs r4, 0x80 + add r5, sp, 0x18 + lsrs r6, r0, 16 + orrs r0, r4 + str r0, [r5, 0x4] + str r2, [sp, 0x20] + ldr r0, _080BEBA0 @ =0xffff0000 + mov r8, r0 + add r4, sp, 0x20 + ldr r0, [r4, 0x4] + mov r2, r8 + ands r0, r2 + orrs r0, r1 + str r0, [r4, 0x4] + mov r0, sp + movs r2, 0 + strh r6, [r0] + strh r1, [r0, 0x2] + ldr r0, _080BEBA4 @ =gUnknown_83EE8D0 + str r0, [sp, 0x4] + ldr r0, _080BEBA8 @ =gUnknown_83EE958 + str r0, [sp, 0x8] + str r2, [sp, 0xC] + ldr r0, _080BEBAC @ =gUnknown_8231CFC + str r0, [sp, 0x10] + ldr r0, _080BEBB0 @ =nullsub_62 + str r0, [sp, 0x14] + lsls r3, 23 + lsrs r3, 16 + ldr r0, [r5, 0x4] + mov r1, r8 + ands r0, r1 + orrs r0, r3 + str r0, [r5, 0x4] + adds r0, r5, 0 + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + mov r0, sp + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + bne _080BEBB4 + movs r0, 0 + b _080BEBBE + .align 2, 0 +_080BEB9C: .4byte gUnknown_83EE028 +_080BEBA0: .4byte 0xffff0000 +_080BEBA4: .4byte gUnknown_83EE8D0 +_080BEBA8: .4byte gUnknown_83EE958 +_080BEBAC: .4byte gUnknown_8231CFC +_080BEBB0: .4byte nullsub_62 +_080BEBB4: + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080BEBCC @ =gUnknown_202063C + adds r0, r1 +_080BEBBE: + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080BEBCC: .4byte gUnknown_202063C + thumb_func_end sub_80BEB20 + + thumb_func_start sub_80BEBD0 +sub_80BEBD0: @ 80BEBD0 + push {lr} + lsls r0, 24 + lsrs r0, 17 + ldr r2, _080BEBE8 @ =gUnknown_83EE028 + adds r0, r2 + movs r2, 0x80 + movs r3, 0x1 + bl sub_8000EAC + pop {r0} + bx r0 + .align 2, 0 +_080BEBE8: .4byte gUnknown_83EE028 + thumb_func_end sub_80BEBD0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/money.s b/asm/money.s new file mode 100644 index 000000000..268054afd --- /dev/null +++ b/asm/money.s @@ -0,0 +1,409 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_809FD58 +sub_809FD58: @ 809FD58 + ldr r1, _0809FD6C @ =gUnknown_300500C + ldr r1, [r1] + movs r2, 0xF2 + lsls r2, 4 + adds r1, r2 + ldr r0, [r0] + ldr r1, [r1] + eors r0, r1 + bx lr + .align 2, 0 +_0809FD6C: .4byte gUnknown_300500C + thumb_func_end sub_809FD58 + + thumb_func_start sub_809FD70 +sub_809FD70: @ 809FD70 + ldr r2, _0809FD84 @ =gUnknown_300500C + ldr r2, [r2] + movs r3, 0xF2 + lsls r3, 4 + adds r2, r3 + ldr r2, [r2] + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_0809FD84: .4byte gUnknown_300500C + thumb_func_end sub_809FD70 + + thumb_func_start sub_809FD88 +sub_809FD88: @ 809FD88 + push {r4,lr} + adds r4, r1, 0 + bl sub_809FD58 + cmp r0, r4 + bcs _0809FD98 + movs r0, 0 + b _0809FD9A +_0809FD98: + movs r0, 0x1 +_0809FD9A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809FD88 + + thumb_func_start sub_809FDA0 +sub_809FDA0: @ 809FDA0 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + bl sub_809FD58 + adds r5, r0, 0 + adds r0, r5, r4 + ldr r5, _0809FDD4 @ =0x000f423f + adds r4, r5, 0 + cmp r0, r5 + bhi _0809FDC4 + adds r5, r0, 0 + adds r0, r6, 0 + bl sub_809FD58 + cmp r5, r0 + bcs _0809FDC4 + adds r5, r4, 0 +_0809FDC4: + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_809FD70 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809FDD4: .4byte 0x000f423f + thumb_func_end sub_809FDA0 + + thumb_func_start sub_809FDD8 +sub_809FDD8: @ 809FDD8 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_809FD58 + adds r1, r0, 0 + cmp r1, r4 + bcs _0809FDEC + movs r1, 0 + b _0809FDEE +_0809FDEC: + subs r1, r4 +_0809FDEE: + adds r0, r5, 0 + bl sub_809FD70 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809FDD8 + + thumb_func_start sub_809FDFC +sub_809FDFC: @ 809FDFC + push {lr} + ldr r0, _0809FE18 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + ldr r1, _0809FE1C @ =gUnknown_20370C2 + ldrh r1, [r1] + bl sub_809FD88 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0809FE18: .4byte gUnknown_3005008 +_0809FE1C: .4byte gUnknown_20370C2 + thumb_func_end sub_809FDFC + + thumb_func_start sub_809FE20 +sub_809FE20: @ 809FE20 + push {lr} + ldr r0, _0809FE38 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + ldr r1, _0809FE3C @ =gUnknown_20370C2 + ldrh r1, [r1] + bl sub_809FDD8 + pop {r0} + bx r0 + .align 2, 0 +_0809FE38: .4byte gUnknown_3005008 +_0809FE3C: .4byte gUnknown_20370C2 + thumb_func_end sub_809FE20 + + thumb_func_start sub_809FE40 +sub_809FE40: @ 809FE40 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r4, _0809FEB8 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + subs r1, r0 + ldr r2, _0809FEBC @ =gUnknown_2021D18 + adds r0, r1, 0 + subs r1, 0x1 + cmp r0, 0 + beq _0809FE7E + movs r3, 0 +_0809FE72: + strb r3, [r2] + adds r2, 0x1 + adds r0, r1, 0 + subs r1, 0x1 + cmp r0, 0 + bne _0809FE72 +_0809FE7E: + ldr r1, _0809FEC0 @ =gUnknown_841697A + adds r0, r2, 0 + bl sub_8008FCC + ldr r4, _0809FEBC @ =gUnknown_2021D18 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r3, 0x40 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0xC + str r0, [sp] + str r5, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_8002C48 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809FEB8: .4byte gUnknown_2021CD0 +_0809FEBC: .4byte gUnknown_2021D18 +_0809FEC0: .4byte gUnknown_841697A + thumb_func_end sub_809FE40 + + thumb_func_start sub_809FEC4 +sub_809FEC4: @ 809FEC4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r4, [sp, 0x24] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r4, 24 + lsrs r5, r4, 24 + ldr r4, _0809FF3C @ =gUnknown_2021CD0 + adds r0, r4, 0 + adds r1, r3, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + subs r1, r0 + ldr r2, _0809FF40 @ =gUnknown_2021D18 + adds r0, r1, 0 + subs r1, 0x1 + cmp r0, 0 + beq _0809FF14 + movs r3, 0 +_0809FF08: + strb r3, [r2] + adds r2, 0x1 + adds r0, r1, 0 + subs r1, 0x1 + cmp r0, 0 + bne _0809FF08 +_0809FF14: + ldr r1, _0809FF44 @ =gUnknown_841697A + adds r0, r2, 0 + bl sub_8008FCC + ldr r2, _0809FF40 @ =gUnknown_2021D18 + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0 + mov r3, r8 + bl sub_8002C48 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809FF3C: .4byte gUnknown_2021CD0 +_0809FF40: .4byte gUnknown_2021D18 +_0809FF44: .4byte gUnknown_841697A + thumb_func_end sub_809FEC4 + + thumb_func_start sub_809FF48 +sub_809FF48: @ 809FF48 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + mov r8, r3 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_810F2E8 + ldr r2, _0809FF9C @ =gUnknown_8419CE7 + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + adds r0, r6, 0 + mov r1, r8 + movs r2, 0 + bl sub_809FE40 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809FF9C: .4byte gUnknown_8419CE7 + thumb_func_end sub_809FF48 + + thumb_func_start sub_809FFA0 +sub_809FFA0: @ 809FFA0 + push {lr} + adds r1, r0, 0 + ldr r0, _0809FFB4 @ =gUnknown_2039990 + ldrb r0, [r0] + movs r2, 0 + bl sub_809FE40 + pop {r0} + bx r0 + .align 2, 0 +_0809FFB4: .4byte gUnknown_2039990 + thumb_func_end sub_809FFA0 + + thumb_func_start sub_809FFB8 +sub_809FFB8: @ 809FFB8 + push {r4-r6,lr} + sub sp, 0x20 + adds r6, r0, 0 + adds r4, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsls r3, 24 + movs r0, 0x80 + lsls r0, 17 + adds r4, r0 + lsrs r4, 24 + adds r3, r0 + lsrs r3, 24 + movs r1, 0x8 + str r1, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + str r1, [sp, 0xC] + add r0, sp, 0x10 + movs r1, 0 + adds r2, r4, 0 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + ldr r4, _080A002C @ =gUnknown_2039990 + add r0, sp, 0x18 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl sub_800445C + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + ldr r5, _080A0030 @ =0x0000021d + adds r1, r5, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r0, [r4] + adds r1, r5, 0 + movs r2, 0xD + adds r3, r6, 0 + bl sub_809FF48 + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080A002C: .4byte gUnknown_2039990 +_080A0030: .4byte 0x0000021d + thumb_func_end sub_809FFB8 + + thumb_func_start sub_80A0034 +sub_80A0034: @ 80A0034 + push {r4,lr} + ldr r4, _080A0054 @ =gUnknown_2039990 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A0054: .4byte gUnknown_2039990 + thumb_func_end sub_80A0034 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/multiboot.s b/asm/multiboot.s new file mode 100644 index 000000000..0ba2f50bf --- /dev/null +++ b/asm/multiboot.s @@ -0,0 +1,924 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800BC20 +sub_800BC20: @ 800BC20 + adds r2, r0, 0 + movs r1, 0 + strb r1, [r2, 0x1E] + strb r1, [r2, 0x18] + strb r1, [r2, 0x1D] + adds r3, r2, 0 + adds r3, 0x4A + movs r0, 0xF + strb r0, [r3] + adds r0, r2, 0 + adds r0, 0x48 + strb r1, [r0] + strh r1, [r2, 0x16] + ldr r0, _0800BC4C @ =0x04000134 + strh r1, [r0] + ldr r2, _0800BC50 @ =0x04000128 + ldr r3, _0800BC54 @ =0x00002003 + adds r0, r3, 0 + strh r0, [r2] + ldr r0, _0800BC58 @ =0x0400012a + strh r1, [r0] + bx lr + .align 2, 0 +_0800BC4C: .4byte 0x04000134 +_0800BC50: .4byte 0x04000128 +_0800BC54: .4byte 0x00002003 +_0800BC58: .4byte 0x0400012a + thumb_func_end sub_800BC20 + + thumb_func_start sub_800BC5C +sub_800BC5C: @ 800BC5C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + bl sub_800C180 + cmp r0, 0 + beq _0800BC72 + b _0800C03A +_0800BC72: + adds r0, r7, 0 + adds r0, 0x4A + ldrb r1, [r0] + mov r10, r0 + cmp r1, 0xF + bls _0800BC86 + subs r0, r1, 0x1 + mov r1, r10 + strb r0, [r1] + b _0800C03A +_0800BC86: + adds r1, r7, 0 + adds r1, 0x48 + ldrb r0, [r1] + cmp r0, 0 + beq _0800BCB0 + movs r0, 0 + strb r0, [r1] + ldr r0, _0800BCAC @ =0x04000128 + ldrh r0, [r0] + movs r5, 0xFC + ands r5, r0 + cmp r5, 0x8 + beq _0800BCB0 + adds r0, r7, 0 + bl sub_800BC20 + movs r0, 0x8 + eors r0, r5 + b _0800C03C + .align 2, 0 +_0800BCAC: .4byte 0x04000128 +_0800BCB0: + ldrb r0, [r7, 0x18] + cmp r0, 0xDF + bls _0800BD02 + adds r0, r7, 0 + bl sub_800C194 + adds r5, r0, 0 + cmp r5, 0 + beq _0800BCC4 + b _0800C03C +_0800BCC4: + adds r0, r7, 0 + adds r0, 0x4B + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800BCE0 + ldrb r0, [r7, 0x18] + cmp r0, 0xE1 + bls _0800BCE0 + adds r0, r7, 0 + bl sub_800C180 + cmp r0, 0 + bne _0800BCE0 + b _0800C02A +_0800BCE0: + adds r0, r7, 0 + bl sub_800C180 + cmp r0, 0 + beq _0800BCEC + b _0800C03A +_0800BCEC: + ldrh r0, [r7, 0x16] + cmp r0, 0 + bne _0800BCFC + adds r0, r7, 0 + bl sub_800BC20 + movs r0, 0x71 + b _0800C03C +_0800BCFC: + subs r0, 0x1 + strh r0, [r7, 0x16] + b _0800C03A +_0800BD02: + ldrb r0, [r7, 0x18] + cmp r0, 0x2 + bne _0800BD0A + b _0800BE40 +_0800BD0A: + cmp r0, 0x2 + bgt _0800BD18 + cmp r0, 0 + beq _0800BD26 + cmp r0, 0x1 + beq _0800BDE2 + b _0800BF78 +_0800BD18: + cmp r0, 0xD0 + bne _0800BD1E + b _0800BE8C +_0800BD1E: + cmp r0, 0xD1 + bne _0800BD24 + b _0800BF26 +_0800BD24: + b _0800BF78 +_0800BD26: + movs r3, 0xE + movs r5, 0x3 + ldr r0, _0800BD6C @ =0x04000120 + ldrh r0, [r0, 0x6] + adds r1, r0, 0 + ldr r0, _0800BD70 @ =0x0000ffff + ldrb r2, [r7, 0x1E] + adds r6, r2, 0 + cmp r1, r0 + bne _0800BD4E + adds r4, r1, 0 + ldr r1, _0800BD74 @ =0x04000126 +_0800BD3E: + asrs r3, 1 + subs r1, 0x2 + subs r5, 0x1 + cmp r5, 0 + beq _0800BD4E + ldrh r0, [r1] + cmp r0, r4 + beq _0800BD3E +_0800BD4E: + movs r0, 0xE + ands r3, r0 + strb r3, [r7, 0x1D] + movs r5, 0x3 + ldr r0, _0800BD6C @ =0x04000120 + ldrh r0, [r0, 0x6] + adds r4, r0, 0 + asrs r0, r2, 3 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0800BD7C + ldr r0, _0800BD78 @ =0x00007208 + b _0800BDA2 + .align 2, 0 +_0800BD6C: .4byte 0x04000120 +_0800BD70: .4byte 0x0000ffff +_0800BD74: .4byte 0x04000126 +_0800BD78: .4byte 0x00007208 +_0800BD7C: + subs r5, 0x1 + cmp r5, 0 + beq _0800BDA8 + lsls r0, r5, 1 + ldr r1, _0800BDD0 @ =0x04000120 + adds r0, r1 + ldrh r0, [r0] + adds r4, r0, 0 + adds r0, r2, 0 + asrs r0, r5 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0800BD7C + adds r0, r1, 0 + lsls r0, r5 + movs r1, 0xE4 + lsls r1, 7 + orrs r0, r1 +_0800BDA2: + cmp r4, r0 + beq _0800BD7C + movs r3, 0 +_0800BDA8: + adds r0, r3, 0 + ands r0, r6 + strb r0, [r7, 0x1E] + cmp r3, 0 + bne _0800BDB8 + movs r0, 0xF + mov r2, r10 + strb r0, [r2] +_0800BDB8: + mov r1, r10 + ldrb r0, [r1] + cmp r0, 0 + bne _0800BDD4 + ldrb r0, [r7, 0x1D] + ldrb r2, [r7, 0x1E] + cmp r0, r2 + beq _0800BDDA + adds r0, r7, 0 + bl sub_800C098 + b _0800BDE2 + .align 2, 0 +_0800BDD0: .4byte 0x04000120 +_0800BDD4: + subs r0, 0x1 + mov r1, r10 + strb r0, [r1] +_0800BDDA: + ldrb r1, [r7, 0x1E] + movs r2, 0xC4 + lsls r2, 7 + b _0800BEE2 +_0800BDE2: + adds r1, r7, 0 + adds r1, 0x49 + movs r0, 0 + strb r0, [r1] + movs r5, 0x3 + mov r12, r1 + ldr r3, _0800BE38 @ =gUnknown_3000E6C +_0800BDF0: + lsls r0, r5, 1 + ldr r2, _0800BE3C @ =0x04000120 + adds r0, r2 + ldrh r0, [r0] + adds r4, r0, 0 + asrs r0, r4, 8 + subs r2, r5, 0x1 + cmp r0, 0x72 + bne _0800BE1A + lsls r0, r2, 1 + adds r0, r3 + strh r4, [r0] + movs r0, 0xFF + ands r4, r0 + movs r0, 0x1 + lsls r0, r5 + cmp r4, r0 + bne _0800BE1A + ldrb r0, [r1] + orrs r4, r0 + strb r4, [r1] +_0800BE1A: + adds r5, r2, 0 + cmp r5, 0 + bne _0800BDF0 + ldrb r0, [r7, 0x1D] + mov r1, r12 + ldrb r1, [r1] + cmp r0, r1 + bne _0800BDDA + movs r0, 0x2 + strb r0, [r7, 0x18] + mov r2, r12 + ldrb r1, [r2] + movs r2, 0xC2 + lsls r2, 7 + b _0800BEE2 + .align 2, 0 +_0800BE38: .4byte gUnknown_3000E6C +_0800BE3C: .4byte 0x04000120 +_0800BE40: + movs r5, 0x3 + movs r0, 0x49 + adds r0, r7 + mov r12, r0 + mov r4, r12 + movs r6, 0x1 + ldr r1, _0800BE84 @ =gUnknown_3000E6C + mov r9, r1 + ldr r2, _0800BE88 @ =0x04000120 + mov r8, r2 +_0800BE54: + ldrb r3, [r4] + adds r0, r3, 0 + asrs r0, r5 + ands r0, r6 + subs r2, r5, 0x1 + cmp r0, 0 + beq _0800BE7A + lsls r0, r5, 1 + add r0, r8 + ldrh r1, [r0] + lsls r0, r2, 1 + add r0, r9 + ldrh r0, [r0] + cmp r1, r0 + beq _0800BE7A + adds r0, r6, 0 + lsls r0, r5 + eors r3, r0 + strb r3, [r4] +_0800BE7A: + adds r5, r2, 0 + cmp r5, 0 + bne _0800BE54 + b _0800BFE0 + .align 2, 0 +_0800BE84: .4byte gUnknown_3000E6C +_0800BE88: .4byte 0x04000120 +_0800BE8C: + movs r3, 0x1 + movs r5, 0x3 + movs r0, 0x49 + adds r0, r7 + mov r12, r0 + adds r6, r7, 0 + adds r6, 0x19 + ldr r1, _0800BEF0 @ =gUnknown_3000E6C + mov r8, r1 +_0800BE9E: + lsls r0, r5, 1 + ldr r2, _0800BEF4 @ =0x04000120 + adds r0, r2 + ldrh r0, [r0] + adds r4, r0, 0 + subs r2, r5, 0x1 + adds r0, r6, r2 + strb r4, [r0] + mov r0, r12 + ldrb r1, [r0] + asrs r1, r5 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0800BED2 + asrs r0, r4, 8 + subs r0, 0x72 + cmp r0, 0x1 + bls _0800BEC6 + b _0800C030 +_0800BEC6: + lsls r0, r2, 1 + add r0, r8 + ldrh r0, [r0] + cmp r4, r0 + bne _0800BED2 + movs r3, 0 +_0800BED2: + adds r5, r2, 0 + cmp r5, 0 + bne _0800BE9E + cmp r3, 0 + bne _0800BEF8 + ldrb r1, [r7, 0x1C] + movs r2, 0xC6 + lsls r2, 7 +_0800BEE2: + adds r0, r2, 0 + orrs r1, r0 + adds r0, r7, 0 + bl sub_800C04C + b _0800C03C + .align 2, 0 +_0800BEF0: .4byte gUnknown_3000E6C +_0800BEF4: .4byte 0x04000120 +_0800BEF8: + movs r0, 0xD1 + strb r0, [r7, 0x18] + movs r3, 0x11 + movs r5, 0x3 + adds r1, r6, 0x2 +_0800BF02: + ldrb r0, [r1] + adds r3, r0 + subs r1, 0x1 + subs r5, 0x1 + cmp r5, 0 + bne _0800BF02 + strb r3, [r7, 0x14] + movs r0, 0xFF + ands r3, r0 + movs r1, 0xC8 + lsls r1, 7 + adds r0, r1, 0 + orrs r3, r0 + adds r0, r7, 0 + adds r1, r3, 0 + bl sub_800C04C + b _0800C03C +_0800BF26: + movs r5, 0x3 + movs r2, 0x49 + ldrb r1, [r2, r7] + ldr r2, _0800BF64 @ =0x04000126 + movs r3, 0x1 +_0800BF30: + ldrh r0, [r2] + adds r4, r0, 0 + adds r0, r1, 0 + asrs r0, r5 + ands r0, r3 + cmp r0, 0 + beq _0800BF44 + asrs r0, r4, 8 + cmp r0, 0x73 + bne _0800C030 +_0800BF44: + subs r2, 0x2 + subs r5, 0x1 + cmp r5, 0 + bne _0800BF30 + adds r0, r7, 0 + bl MultiBoot + adds r5, r0, 0 + cmp r5, 0 + bne _0800BF68 + movs r0, 0xE0 + strb r0, [r7, 0x18] + adds r0, 0xB0 + strh r0, [r7, 0x16] + b _0800C03A + .align 2, 0 +_0800BF64: .4byte 0x04000126 +_0800BF68: + adds r0, r7, 0 + bl sub_800BC20 + movs r0, 0x1E + mov r1, r10 + strb r0, [r1] + movs r0, 0x70 + b _0800C03C +_0800BF78: + movs r5, 0x3 + movs r2, 0x49 + adds r2, r7 + mov r12, r2 + mov r8, r12 + movs r0, 0x1 + mov r9, r0 +_0800BF86: + mov r1, r8 + ldrb r6, [r1] + adds r0, r6, 0 + asrs r0, r5 + mov r2, r9 + ands r0, r2 + cmp r0, 0 + beq _0800BFC0 + lsls r0, r5, 1 + ldr r1, _0800BFDC @ =0x04000120 + adds r0, r1 + ldrh r0, [r0] + adds r4, r0, 0 + asrs r2, r4, 8 + ldrb r0, [r7, 0x18] + lsrs r0, 1 + movs r1, 0x62 + subs r1, r0 + mov r3, r9 + lsls r3, r5 + cmp r2, r1 + bne _0800BFBA + movs r0, 0xFF + ands r4, r0 + cmp r4, r3 + beq _0800BFC0 +_0800BFBA: + eors r6, r3 + mov r2, r8 + strb r6, [r2] +_0800BFC0: + subs r5, 0x1 + cmp r5, 0 + bne _0800BF86 + ldrb r0, [r7, 0x18] + cmp r0, 0xC4 + bne _0800BFE0 + mov r0, r12 + ldrb r1, [r0] + movs r0, 0xE + ands r0, r1 + strb r0, [r7, 0x1E] + strb r5, [r7, 0x18] + b _0800BDDA + .align 2, 0 +_0800BFDC: .4byte 0x04000120 +_0800BFE0: + mov r1, r12 + ldrb r0, [r1] + cmp r0, 0 + bne _0800BFF2 + adds r0, r7, 0 + bl sub_800BC20 + movs r0, 0x50 + b _0800C03C +_0800BFF2: + ldrb r0, [r7, 0x18] + adds r0, 0x2 + strb r0, [r7, 0x18] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC4 + bne _0800C002 + b _0800BDDA +_0800C002: + ldrb r0, [r7, 0x18] + ldr r1, [r7, 0x28] + adds r0, r1 + subs r1, r0, 0x3 + ldrb r2, [r1] + lsls r2, 8 + subs r0, 0x4 + ldrb r1, [r0] + orrs r1, r2 + adds r0, r7, 0 + bl sub_800C04C + adds r5, r0, 0 + cmp r5, 0 + bne _0800C03C + adds r0, r7, 0 + adds r0, 0x4B + ldrb r0, [r0] + cmp r0, 0x1 + bne _0800C03A +_0800C02A: + bl sub_800C298 + b _0800BC86 +_0800C030: + adds r0, r7, 0 + bl sub_800BC20 + movs r0, 0x60 + b _0800C03C +_0800C03A: + movs r0, 0 +_0800C03C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_800BC5C + + thumb_func_start sub_800C04C +sub_800C04C: @ 800C04C + push {r4,lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r3, _0800C078 @ =0x04000128 + ldrh r0, [r3] + movs r4, 0x8C + ands r4, r0 + cmp r4, 0x8 + bne _0800C084 + ldr r0, _0800C07C @ =0x0400012a + strh r1, [r0] + ldr r1, _0800C080 @ =0x00002083 + adds r0, r1, 0 + strh r0, [r3] + adds r1, r2, 0 + adds r1, 0x48 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0 + b _0800C090 + .align 2, 0 +_0800C078: .4byte 0x04000128 +_0800C07C: .4byte 0x0400012a +_0800C080: .4byte 0x00002083 +_0800C084: + adds r0, r2, 0 + bl sub_800BC20 + movs r0, 0x8 + eors r4, r0 + adds r0, r4, 0 +_0800C090: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800C04C + + thumb_func_start sub_800C098 +sub_800C098: @ 800C098 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1, 0x18] + cmp r0, 0 + beq _0800C0AA + adds r0, r1, 0 + bl sub_800BC20 + b _0800C0B6 +_0800C0AA: + adds r2, r1, 0 + adds r2, 0x4A + strb r0, [r2] + strb r0, [r1, 0x1E] + movs r0, 0x1 + strb r0, [r1, 0x18] +_0800C0B6: + pop {r0} + bx r0 + thumb_func_end sub_800C098 + + thumb_func_start sub_800C0BC +sub_800C0BC: @ 800C0BC + push {r4-r7,lr} + adds r4, r0, 0 + adds r6, r1, 0 + ldr r0, [sp, 0x14] + lsls r3, 24 + lsrs r5, r3, 24 + lsls r0, 24 + lsrs r7, r0, 24 + movs r3, 0 + ldrb r0, [r4, 0x18] + cmp r0, 0 + bne _0800C0F8 + ldrb r0, [r4, 0x1E] + cmp r0, 0 + beq _0800C0F8 + adds r0, r4, 0 + adds r0, 0x4A + ldrb r0, [r0] + cmp r0, 0 + bne _0800C0F8 + str r6, [r4, 0x20] + adds r2, 0xF + movs r0, 0x10 + negs r0, r0 + ands r2, r0 + subs r0, 0xF0 + adds r1, r2, r0 + ldr r0, _0800C100 @ =0x0003ff00 + cmp r1, r0 + bls _0800C104 +_0800C0F8: + adds r0, r4, 0 + bl sub_800BC20 + b _0800C178 + .align 2, 0 +_0800C100: .4byte 0x0003ff00 +_0800C104: + adds r0, r6, r2 + str r0, [r4, 0x24] + lsls r1, r7, 24 + movs r2, 0x80 + lsls r2, 19 + adds r0, r1, r2 + asrs r0, 24 + adds r2, r1, 0 + cmp r0, 0x8 + bhi _0800C164 + lsls r0, 2 + ldr r1, _0800C124 @ =_0800C128 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800C124: .4byte _0800C128 + .align 2, 0 +_0800C128: + .4byte _0800C14C + .4byte _0800C14C + .4byte _0800C14C + .4byte _0800C14C + .4byte _0800C156 + .4byte _0800C15C + .4byte _0800C15C + .4byte _0800C15C + .4byte _0800C15C +_0800C14C: + lsls r3, r5, 3 + asrs r1, r2, 24 + movs r0, 0x3 + subs r0, r1 + b _0800C162 +_0800C156: + movs r0, 0x38 + adds r3, r5, 0 + b _0800C162 +_0800C15C: + lsls r3, r5, 3 + asrs r0, r2, 24 + subs r0, 0x1 +_0800C162: + orrs r3, r0 +_0800C164: + movs r0, 0x3F + ands r3, r0 + lsls r0, r3, 1 + movs r2, 0x7F + negs r2, r2 + adds r1, r2, 0 + orrs r0, r1 + strb r0, [r4, 0x1C] + movs r0, 0xD0 + strb r0, [r4, 0x18] +_0800C178: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800C0BC + + thumb_func_start sub_800C180 +sub_800C180: @ 800C180 + push {lr} + ldrb r0, [r0, 0x18] + cmp r0, 0xE9 + beq _0800C18C + movs r0, 0 + b _0800C18E +_0800C18C: + movs r0, 0x1 +_0800C18E: + pop {r1} + bx r1 + thumb_func_end sub_800C180 + + thumb_func_start sub_800C194 +sub_800C194: @ 800C194 + push {r4-r6,lr} + adds r3, r0, 0 + ldrb r0, [r3, 0x18] + cmp r0, 0xE0 + beq _0800C1B0 + cmp r0, 0xE0 + blt _0800C1C0 + cmp r0, 0xE8 + bgt _0800C1C0 + cmp r0, 0xE7 + blt _0800C1C0 + movs r4, 0x3 + ldrb r5, [r3, 0x1E] + b _0800C220 +_0800C1B0: + movs r1, 0 + movs r0, 0xE1 + strb r0, [r3, 0x18] + str r1, [r3, 0x4] + movs r0, 0x80 + lsls r0, 13 + str r0, [r3] + b _0800C212 +_0800C1C0: + movs r4, 0x3 + ldrb r5, [r3, 0x1E] + movs r6, 0x1 + ldr r1, _0800C21C @ =0x04000126 +_0800C1C8: + ldrh r0, [r1] + adds r2, r0, 0 + adds r0, r5, 0 + asrs r0, r4 + ands r0, r6 + cmp r0, 0 + beq _0800C1DC + ldr r0, [r3, 0x4] + cmp r2, r0 + bne _0800C1B0 +_0800C1DC: + subs r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bne _0800C1C8 + ldrb r0, [r3, 0x18] + adds r0, 0x1 + strb r0, [r3, 0x18] + ldr r1, [r3] + ldrh r0, [r3] + str r0, [r3, 0x4] + cmp r1, 0 + bne _0800C20A + ldr r0, [r3, 0x28] + adds r1, r0, 0 + adds r1, 0xAC + ldrb r1, [r1] + adds r0, 0xAD + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + str r1, [r3, 0x4] + lsls r1, 5 + str r1, [r3] +_0800C20A: + ldr r0, [r3] + lsrs r0, 5 + str r0, [r3] +_0800C210: + ldrh r1, [r3] +_0800C212: + adds r0, r3, 0 + bl sub_800C04C + b _0800C278 + .align 2, 0 +_0800C21C: .4byte 0x04000126 +_0800C220: + lsls r0, r4, 1 + ldr r1, _0800C268 @ =0x04000120 + adds r0, r1 + ldrh r0, [r0] + adds r2, r0, 0 + adds r0, r5, 0 + asrs r0, r4 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0800C23C + ldr r0, [r3, 0x4] + cmp r2, r0 + bne _0800C26C +_0800C23C: + subs r4, 0x1 + cmp r4, 0 + bne _0800C220 + ldrb r0, [r3, 0x18] + adds r0, 0x1 + strb r0, [r3, 0x18] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE9 + beq _0800C276 + ldr r0, [r3, 0x28] + adds r1, r0, 0 + adds r1, 0xAE + ldrb r1, [r1] + adds r0, 0xAF + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + str r1, [r3] + str r1, [r3, 0x4] + b _0800C210 + .align 2, 0 +_0800C268: .4byte 0x04000120 +_0800C26C: + adds r0, r3, 0 + bl sub_800BC20 + movs r0, 0x71 + b _0800C278 +_0800C276: + movs r0, 0 +_0800C278: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_800C194 + + thumb_func_start sub_800C280 +sub_800C280: @ 800C280 + mov r2, pc + lsrs r2, 24 + movs r1, 0xC + cmp r2, 0x2 + beq _0800C292 + movs r1, 0xD + cmp r2, 0x8 + beq _0800C292 + movs r1, 0x4 +_0800C292: + subs r0, r1 + bgt _0800C292 + bx lr + thumb_func_end sub_800C280 + + thumb_func_start sub_800C298 +sub_800C298: @ 800C298 + push {r4,r5,lr} + movs r2, 0 + ldr r3, _0800C2CC @ =0x04000128 + ldrh r1, [r3] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0800C2BC + ldr r5, _0800C2D0 @ =0x0000795c + movs r4, 0x80 +_0800C2AC: + adds r2, 0x1 + cmp r2, r5 + bgt _0800C2BC + ldrh r1, [r3] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _0800C2AC +_0800C2BC: + movs r0, 0x96 + lsls r0, 2 + bl sub_800C280 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800C2CC: .4byte 0x04000128 +_0800C2D0: .4byte 0x0000795c + thumb_func_end sub_800C298 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s new file mode 100644 index 000000000..52689b50d --- /dev/null +++ b/asm/mystery_event_script.s @@ -0,0 +1,722 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80DA800 +sub_80DA800: @ 80DA800 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r2, 16 + lsrs r2, 16 + movs r4, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080DA828 + ands r1, r4 + cmp r1, 0 + beq _080DA828 + ands r2, r4 + cmp r2, 0 + beq _080DA828 + ands r3, r4 + cmp r3, 0 + beq _080DA828 + movs r0, 0x1 + b _080DA82A +_080DA828: + movs r0, 0 +_080DA82A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DA800 + + thumb_func_start sub_80DA830 +sub_80DA830: @ 80DA830 + push {lr} + ldr r0, _080DA844 @ =gUnknown_2021D18 + ldr r1, _080DA848 @ =gUnknown_8488DFD + bl sub_8008FCC + movs r0, 0x3 + bl sub_80DA8E8 + pop {r0} + bx r0 + .align 2, 0 +_080DA844: .4byte gUnknown_2021D18 +_080DA848: .4byte gUnknown_8488DFD + thumb_func_end sub_80DA830 + + thumb_func_start sub_80DA84C +sub_80DA84C: @ 80DA84C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080DA874 @ =gUnknown_81DBCF0 + ldr r2, _080DA878 @ =0x081dbd34 + bl sub_80697AC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80697E8 + str r5, [r4, 0x64] + movs r0, 0 + str r0, [r4, 0x68] + str r0, [r4, 0x6C] + str r0, [r4, 0x70] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA874: .4byte gUnknown_81DBCF0 +_080DA878: .4byte 0x081dbd34 + thumb_func_end sub_80DA84C + + thumb_func_start sub_80DA87C +sub_80DA87C: @ 80DA87C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069804 + lsls r0, 24 + cmp r0, 0 + beq _080DA894 + ldr r0, [r4, 0x70] + cmp r0, 0 + beq _080DA894 + movs r0, 0x1 + b _080DA896 +_080DA894: + movs r0, 0 +_080DA896: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DA87C + + thumb_func_start sub_80DA89C +sub_80DA89C: @ 80DA89C + push {lr} + adds r1, r0, 0 + ldr r0, _080DA8AC @ =gUnknown_203AA3C + bl sub_80DA84C + pop {r0} + bx r0 + .align 2, 0 +_080DA8AC: .4byte gUnknown_203AA3C + thumb_func_end sub_80DA89C + + thumb_func_start sub_80DA8B0 +sub_80DA8B0: @ 80DA8B0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080DA8C8 @ =gUnknown_203AA3C + adds r0, r4, 0 + bl sub_80DA87C + ldr r1, [r4, 0x6C] + str r1, [r5] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DA8C8: .4byte gUnknown_203AA3C + thumb_func_end sub_80DA8B0 + + thumb_func_start sub_80DA8CC +sub_80DA8CC: @ 80DA8CC + push {lr} + sub sp, 0x4 + bl sub_80DA89C +_080DA8D4: + mov r0, sp + bl sub_80DA8B0 + cmp r0, 0 + bne _080DA8D4 + ldr r0, [sp] + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_80DA8CC + + thumb_func_start sub_80DA8E8 +sub_80DA8E8: @ 80DA8E8 + ldr r1, _080DA8F0 @ =gUnknown_203AA3C + str r0, [r1, 0x6C] + bx lr + .align 2, 0 +_080DA8F0: .4byte gUnknown_203AA3C + thumb_func_end sub_80DA8E8 + + thumb_func_start sub_80DA8F4 +sub_80DA8F4: @ 80DA8F4 + push {lr} + bl sub_80697FC + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_80DA8F4 + + thumb_func_start sub_80DA900 +sub_80DA900: @ 80DA900 + push {r4-r7,lr} + adds r7, r0, 0 + bl sub_8069910 + str r0, [r7, 0x68] + adds r0, r7, 0 + bl sub_80698F8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r7, 0 + bl sub_8069910 + adds r6, r0, 0 + adds r0, r7, 0 + bl sub_80698F8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + bl sub_8069910 + adds r3, r0, 0 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_80DA800 + cmp r0, 0x1 + bne _080DA944 + str r0, [r7, 0x70] + b _080DA948 +_080DA944: + bl sub_80DA830 +_080DA948: + movs r0, 0x1 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80DA900 + + thumb_func_start sub_80DA950 +sub_80DA950: @ 80DA950 + movs r0, 0 + bx lr + thumb_func_end sub_80DA950 + + thumb_func_start sub_80DA954 +sub_80DA954: @ 80DA954 + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + str r2, [r0, 0x6C] + movs r0, 0 + bx lr + thumb_func_end sub_80DA954 + + thumb_func_start sub_80DA964 +sub_80DA964: @ 80DA964 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r5, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_8069910 + ldr r1, [r4, 0x68] + subs r0, r1 + ldr r1, [r4, 0x64] + adds r1, r0, r1 + cmp r5, 0xFF + beq _080DA988 + ldr r0, [r4, 0x6C] + cmp r5, r0 + bne _080DA98E +_080DA988: + ldr r0, _080DA998 @ =gUnknown_2021D18 + bl sub_8008FCC +_080DA98E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DA998: .4byte gUnknown_2021D18 + thumb_func_end sub_80DA964 + + thumb_func_start sub_80DA99C +sub_80DA99C: @ 80DA99C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + ldr r1, [r4, 0x68] + subs r0, r1 + ldr r1, [r4, 0x64] + adds r0, r1 + bl sub_8069B48 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DA99C + + thumb_func_start sub_80DA9B8 +sub_80DA9B8: @ 80DA9B8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + bl sub_809C854 + mov r8, r0 + adds r0, r7, 0 + bl sub_8069910 + adds r4, r0, 0 + ldr r0, [r7, 0x68] + subs r4, r0 + ldr r0, [r7, 0x64] + adds r4, r0 + ldr r0, _080DAA0C @ =gUnknown_2021CD0 + mov r9, r0 + ldr r6, _080DAA10 @ =gUnknown_3005008 + ldr r1, [r6] + ldr r5, _080DAA14 @ =0x000030ec + adds r1, r5 + movs r2, 0x7 + bl sub_8008DBC + adds r0, r4, 0 + bl sub_809C7C4 + ldr r4, _080DAA18 @ =gUnknown_2021CF0 + ldr r1, [r6] + adds r1, r5 + adds r0, r4, 0 + movs r2, 0x7 + bl sub_8008DBC + mov r0, r8 + cmp r0, 0 + bne _080DAA24 + ldr r0, _080DAA1C @ =gUnknown_2021D18 + ldr r1, _080DAA20 @ =gUnknown_8488C70 + b _080DAA44 + .align 2, 0 +_080DAA0C: .4byte gUnknown_2021CD0 +_080DAA10: .4byte gUnknown_3005008 +_080DAA14: .4byte 0x000030ec +_080DAA18: .4byte gUnknown_2021CF0 +_080DAA1C: .4byte gUnknown_2021D18 +_080DAA20: .4byte gUnknown_8488C70 +_080DAA24: + mov r0, r9 + adds r1, r4, 0 + bl sub_8008E28 + cmp r0, 0 + beq _080DAA40 + ldr r0, _080DAA38 @ =gUnknown_2021D18 + ldr r1, _080DAA3C @ =gUnknown_8488CA2 + b _080DAA44 + .align 2, 0 +_080DAA38: .4byte gUnknown_2021D18 +_080DAA3C: .4byte gUnknown_8488CA2 +_080DAA40: + ldr r0, _080DAA60 @ =gUnknown_2021D18 + ldr r1, _080DAA64 @ =gUnknown_8488CCE +_080DAA44: + bl sub_8008FCC + movs r0, 0x2 + str r0, [r7, 0x6C] + bl sub_809C854 + cmp r0, 0x1 + bne _080DAA6C + ldr r0, _080DAA68 @ =0x00004033 + movs r1, 0x1 + bl sub_806E584 + b _080DAA70 + .align 2, 0 +_080DAA60: .4byte gUnknown_2021D18 +_080DAA64: .4byte gUnknown_8488CCE +_080DAA68: .4byte 0x00004033 +_080DAA6C: + movs r0, 0x1 + str r0, [r7, 0x6C] +_080DAA70: + movs r0, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80DA9B8 + + thumb_func_start sub_80DAA80 +sub_80DAA80: @ 80DAA80 + push {r4,lr} + adds r4, r0, 0 + ldr r2, [r4, 0x8] + ldrb r0, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + bl sub_80A09AC + ldr r0, _080DAAAC @ =gUnknown_2021D18 + ldr r1, _080DAAB0 @ =gUnknown_8488CF6 + bl sub_8008FCC + movs r0, 0x2 + str r0, [r4, 0x6C] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DAAAC: .4byte gUnknown_2021D18 +_080DAAB0: .4byte gUnknown_8488CF6 + thumb_func_end sub_80DAA80 + + thumb_func_start sub_80DAAB4 +sub_80DAAB4: @ 80DAAB4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r4, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r4, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r4, 0x8] + adds r0, r4, 0 + bl sub_8069910 + adds r5, r0, 0 + ldr r0, [r4, 0x68] + subs r5, r0 + ldr r0, [r4, 0x64] + adds r5, r0 + adds r0, r4, 0 + bl sub_8069910 + adds r1, r0, 0 + ldr r0, [r4, 0x68] + subs r1, r0 + ldr r0, [r4, 0x64] + adds r1, r0 + subs r1, r5 + lsls r1, 16 + lsrs r1, 16 + str r6, [sp] + adds r0, r5, 0 + mov r2, r9 + mov r3, r8 + bl sub_8069D00 + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80DAAB4 + + thumb_func_start sub_80DAB1C +sub_80DAB1C: @ 80DAB1C + push {r4,lr} + adds r4, r0, 0 + bl sub_806E22C + ldr r0, _080DAB38 @ =gUnknown_2021D18 + ldr r1, _080DAB3C @ =gUnknown_8488D2A + bl sub_8008FCC + movs r0, 0x2 + str r0, [r4, 0x6C] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DAB38: .4byte gUnknown_2021D18 +_080DAB3C: .4byte gUnknown_8488D2A + thumb_func_end sub_80DAB1C + + thumb_func_start sub_80DAB40 +sub_80DAB40: @ 80DAB40 + push {r4,lr} + adds r4, r0, 0 + ldr r1, [r4, 0x8] + ldrb r0, [r1] + adds r1, 0x1 + str r1, [r4, 0x8] + bl sub_80BDB70 + ldr r0, _080DAB64 @ =gUnknown_2021D18 + ldr r1, _080DAB68 @ =gUnknown_8488D60 + bl sub_8008FCC + movs r0, 0x2 + str r0, [r4, 0x6C] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DAB64: .4byte gUnknown_2021D18 +_080DAB68: .4byte gUnknown_8488D60 + thumb_func_end sub_80DAB40 + + thumb_func_start sub_80DAB6C +sub_80DAB6C: @ 80DAB6C + push {r4,lr} + adds r4, r0, 0 + bl sub_80DA830 + movs r0, 0 + str r0, [r4, 0x70] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DAB6C + + thumb_func_start sub_80DAB80 +sub_80DAB80: @ 80DAB80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x88 + adds r6, r0, 0 + bl sub_8069910 + ldr r1, [r6, 0x68] + subs r0, r1 + ldr r1, [r6, 0x64] + adds r5, r0, r1 + movs r0, 0x64 + adds r0, r5 + mov r8, r0 + add r4, sp, 0x24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bne _080DABD0 + ldr r0, _080DABC8 @ =gUnknown_2021CD0 + ldr r1, _080DABCC @ =gUnknown_8415A62 + movs r2, 0xB + bl sub_8008DBC + b _080DABDA + .align 2, 0 +_080DABC8: .4byte gUnknown_2021CD0 +_080DABCC: .4byte gUnknown_8415A62 +_080DABD0: + ldr r0, _080DABF0 @ =gUnknown_2021CD0 + ldr r1, _080DABF4 @ =gUnknown_8415A66 + movs r2, 0xB + bl sub_8008DBC +_080DABDA: + ldr r0, _080DABF8 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r0, 0x6 + bne _080DAC04 + ldr r0, _080DABFC @ =gUnknown_2021D18 + ldr r1, _080DAC00 @ =gUnknown_8488D8E + bl sub_8008FCC + movs r0, 0x3 + b _080DAC6E + .align 2, 0 +_080DABF0: .4byte gUnknown_2021CD0 +_080DABF4: .4byte gUnknown_8415A66 +_080DABF8: .4byte gUnknown_2024029 +_080DABFC: .4byte gUnknown_2021D18 +_080DAC00: .4byte gUnknown_8488D8E +_080DAC04: + ldr r7, _080DAC80 @ =gUnknown_2024478 + adds r0, r7, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + mov r0, sp + mov r1, r8 + movs r2, 0x24 + bl memcpy + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + beq _080DAC3E + adds r0, r4, 0 + bl sub_8043298 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8088E74 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8088E74 +_080DAC3E: + adds r0, r7, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _080DAC5C + adds r0, r7, 0 + mov r1, sp + bl sub_8097F44 +_080DAC5C: + bl sub_80937DC + bl sub_8040C3C + ldr r0, _080DAC84 @ =gUnknown_2021D18 + ldr r1, _080DAC88 @ =gUnknown_8488D7C + bl sub_8008FCC + movs r0, 0x2 +_080DAC6E: + str r0, [r6, 0x6C] + movs r0, 0 + add sp, 0x88 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080DAC80: .4byte gUnknown_2024478 +_080DAC84: .4byte gUnknown_2021D18 +_080DAC88: .4byte gUnknown_8488D7C + thumb_func_end sub_80DAB80 + + thumb_func_start sub_80DAC8C +sub_80DAC8C: @ 80DAC8C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + ldr r0, [r4, 0x68] + subs r1, r0 + ldr r0, [r4, 0x64] + adds r1, r0 + ldr r0, _080DACC8 @ =gUnknown_300500C + ldr r0, [r0] + movs r2, 0x94 + lsls r2, 3 + adds r0, r2 + movs r2, 0xBC + bl memcpy + bl sub_80E7490 + ldr r0, _080DACCC @ =gUnknown_2021D18 + ldr r1, _080DACD0 @ =gUnknown_8488DBD + bl sub_8008FCC + movs r0, 0x2 + str r0, [r4, 0x6C] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DACC8: .4byte gUnknown_300500C +_080DACCC: .4byte gUnknown_2021D18 +_080DACD0: .4byte gUnknown_8488DBD + thumb_func_end sub_80DAC8C + + thumb_func_start sub_80DACD4 +sub_80DACD4: @ 80DACD4 + push {r4,lr} + adds r4, r0, 0 + bl sub_80DA830 + movs r0, 0 + str r0, [r4, 0x70] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DACD4 + + thumb_func_start sub_80DACE8 +sub_80DACE8: @ 80DACE8 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8069910 + adds r5, r0, 0 + adds r0, r6, 0 + bl sub_8069910 + adds r4, r0, 0 + ldr r0, [r6, 0x68] + subs r4, r0 + ldr r0, [r6, 0x64] + adds r4, r0 + adds r0, r6, 0 + bl sub_8069910 + adds r1, r0, 0 + ldr r0, [r6, 0x68] + subs r1, r0 + ldr r0, [r6, 0x64] + adds r1, r0 + subs r1, r4 + adds r0, r4, 0 + bl sub_8045254 + cmp r5, r0 + beq _080DAD26 + movs r0, 0 + str r0, [r6, 0x70] + movs r0, 0x1 + str r0, [r6, 0x6C] +_080DAD26: + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80DACE8 + + thumb_func_start sub_80DAD30 +sub_80DAD30: @ 80DAD30 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8069910 + adds r5, r0, 0 + adds r0, r6, 0 + bl sub_8069910 + adds r4, r0, 0 + ldr r0, [r6, 0x68] + subs r4, r0 + ldr r0, [r6, 0x64] + adds r4, r0 + adds r0, r6, 0 + bl sub_8069910 + adds r1, r0, 0 + ldr r0, [r6, 0x68] + subs r1, r0 + ldr r0, [r6, 0x64] + adds r1, r0 + subs r1, r4 + adds r0, r4, 0 + bl sub_80451B8 + lsls r0, 16 + lsrs r0, 16 + cmp r5, r0 + beq _080DAD72 + movs r0, 0 + str r0, [r6, 0x70] + movs r0, 0x1 + str r0, [r6, 0x6C] +_080DAD72: + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80DAD30 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/mystery_gift_menu.s b/asm/mystery_gift_menu.s new file mode 100644 index 000000000..f94084a27 --- /dev/null +++ b/asm/mystery_gift_menu.s @@ -0,0 +1,410 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8142078 +sub_8142078: @ 8142078 + push {lr} + bl sub_8007610 + bl sub_8007320 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_8142078 + + thumb_func_start sub_814208C +sub_814208C: @ 814208C + push {lr} + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + pop {r0} + bx r0 + thumb_func_end sub_814208C + + thumb_func_start sub_81420A4 +sub_81420A4: @ 81420A4 + push {r4-r7,lr} + sub sp, 0xC + adds r7, r0, 0 + ldr r0, _081420C4 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r6, r0, r1 + ldrb r5, [r6] + cmp r5, 0x1 + bne _081420BA + b _081421EC +_081420BA: + cmp r5, 0x1 + bgt _081420C8 + cmp r5, 0 + beq _081420D6 + b _081422A0 + .align 2, 0 +_081420C4: .4byte gUnknown_30030F0 +_081420C8: + cmp r5, 0x2 + bne _081420CE + b _08142254 +_081420CE: + cmp r5, 0x3 + bne _081420D4 + b _08142274 +_081420D4: + b _081422A0 +_081420D6: + movs r0, 0 + bl sub_80006F4 + bl sub_8070528 + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + bl sub_8087E64 + movs r0, 0x1 + bl sub_8001618 + ldr r1, _081421E0 @ =gUnknown_8466D60 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x3 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x2 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + movs r0, 0 + movs r1, 0xA + movs r2, 0xE0 + bl sub_814FE40 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xF0 + bl sub_814FDA0 + ldr r1, _081421E4 @ =gUnknown_8466D30 + movs r2, 0x80 + lsls r2, 1 + str r5, [sp] + movs r0, 0x3 + movs r3, 0 + bl sub_80F696C + ldr r0, _081421E8 @ =gUnknown_8466D70 + bl sub_8003B24 + bl sub_8002C28 + movs r1, 0xC0 + lsls r1, 7 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + b _0814226C + .align 2, 0 +_081421E0: .4byte gUnknown_8466D60 +_081421E4: .4byte gUnknown_8466D30 +_081421E8: .4byte gUnknown_8466D70 +_081421EC: + ldr r0, _08142250 @ =gUnknown_8466D10 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0x11 + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + bl sub_8142420 + lsls r0, r7, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8142344 + b _0814226C + .align 2, 0 +_08142250: .4byte gUnknown_8466D10 +_08142254: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC +_0814226C: + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _081422A0 +_08142274: + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + ldr r0, _08142298 @ =0x00000149 + bl sub_80722A0 + ldr r0, _0814229C @ =sub_8142078 + bl sub_80006F4 + movs r0, 0xC5 + bl sub_8000B68 + movs r0, 0x1 + b _081422A2 + .align 2, 0 +_08142298: .4byte 0x00000149 +_0814229C: .4byte sub_8142078 +_081422A0: + movs r0, 0 +_081422A2: + add sp, 0xC + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81420A4 + + thumb_func_start sub_81422AC +sub_81422AC: @ 81422AC + push {lr} + movs r0, 0 + bl sub_81420A4 + cmp r0, 0 + beq _081422C8 + ldr r0, _081422CC @ =sub_814208C + bl sub_8000544 + ldr r1, _081422D0 @ =gUnknown_203F3B8 + movs r0, 0 + strb r0, [r1] + bl sub_8142E58 +_081422C8: + pop {r0} + bx r0 + .align 2, 0 +_081422CC: .4byte sub_814208C +_081422D0: .4byte gUnknown_203F3B8 + thumb_func_end sub_81422AC + + thumb_func_start sub_81422D4 +sub_81422D4: @ 81422D4 + push {lr} + movs r0, 0x1 + bl sub_81420A4 + cmp r0, 0 + beq _081422F0 + ldr r0, _081422F4 @ =sub_814208C + bl sub_8000544 + ldr r1, _081422F8 @ =gUnknown_203F3B8 + movs r0, 0x1 + strb r0, [r1] + bl sub_81438A0 +_081422F0: + pop {r0} + bx r0 + .align 2, 0 +_081422F4: .4byte sub_814208C +_081422F8: .4byte gUnknown_203F3B8 + thumb_func_end sub_81422D4 + + thumb_func_start sub_81422FC +sub_81422FC: @ 81422FC + push {lr} + ldr r1, _0814233C @ =gUnknown_203F3B8 + movs r0, 0 + strb r0, [r1] + bl sub_8003ECC + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x1 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x2 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x3 + bl sub_8002008 + bl sub_8002BC4 + ldr r0, _08142340 @ =sub_8078914 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0814233C: .4byte gUnknown_203F3B8 +_08142340: .4byte sub_8078914 + thumb_func_end sub_81422FC + + thumb_func_start sub_8142344 +sub_8142344: @ 8142344 + push {r4-r6,lr} + sub sp, 0x14 + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + movs r1, 0 + bl sub_800445C + cmp r5, 0 + bne _081423B4 + ldr r6, _081423A4 @ =gUnknown_841EDCA + cmp r4, 0x1 + bne _08142362 + ldr r6, _081423A8 @ =gUnknown_8415F51 +_08142362: + str r5, [sp] + str r5, [sp, 0x4] + ldr r4, _081423AC @ =gUnknown_8466EE8 + str r4, [sp, 0x8] + str r5, [sp, 0xC] + ldr r0, _081423B0 @ =gUnknown_841EDBD + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E5A4 + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0xDE + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + str r5, [sp, 0xC] + str r6, [sp, 0x10] + movs r0, 0 + movs r1, 0 + movs r3, 0x2 + bl sub_812E5A4 + b _081423E8 + .align 2, 0 +_081423A4: .4byte gUnknown_841EDCA +_081423A8: .4byte gUnknown_8415F51 +_081423AC: .4byte gUnknown_8466EE8 +_081423B0: .4byte gUnknown_841EDBD +_081423B4: + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + ldr r5, _08142400 @ =gUnknown_8466EE8 + str r5, [sp, 0x8] + str r4, [sp, 0xC] + ldr r0, _08142404 @ =gUnknown_841DE50 + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E5A4 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r4, [sp, 0xC] + ldr r0, _08142408 @ =gUnknown_841DE51 + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0 + movs r2, 0x78 + movs r3, 0x2 + bl sub_812E5A4 +_081423E8: + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_8003FA0 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08142400: .4byte gUnknown_8466EE8 +_08142404: .4byte gUnknown_841DE50 +_08142408: .4byte gUnknown_841DE51 + thumb_func_end sub_8142344 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/naming_screen.s b/asm/naming_screen.s new file mode 100644 index 000000000..9854e147d --- /dev/null +++ b/asm/naming_screen.s @@ -0,0 +1,4594 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_809D954 +sub_809D954: @ 809D954 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r2, 16 + lsrs r5, r2, 16 + lsls r3, 16 + lsrs r6, r3, 16 + ldr r4, _0809D980 @ =gUnknown_203998C + movs r0, 0xF2 + lsls r0, 5 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + bne _0809D984 + ldr r0, [sp, 0x1C] + bl sub_8000544 + b _0809D9BE + .align 2, 0 +_0809D980: .4byte gUnknown_203998C +_0809D984: + ldr r1, _0809D9C8 @ =0x00001e2c + adds r0, r1 + strb r7, [r0] + ldr r0, [r4] + ldr r2, _0809D9CC @ =0x00001e34 + adds r1, r0, r2 + strh r5, [r1] + adds r2, 0x2 + adds r1, r0, r2 + strh r6, [r1] + ldr r1, _0809D9D0 @ =0x00001e38 + adds r2, r0, r1 + ldr r1, [sp, 0x18] + str r1, [r2] + ldr r2, _0809D9D4 @ =0x00001e30 + adds r1, r0, r2 + mov r2, r8 + str r2, [r1] + ldr r1, _0809D9D8 @ =0x00001e3c + adds r0, r1 + ldr r2, [sp, 0x1C] + str r2, [r0] + cmp r7, 0 + bne _0809D9B8 + bl sub_8000558 +_0809D9B8: + ldr r0, _0809D9DC @ =sub_809D9E0 + bl sub_8000544 +_0809D9BE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809D9C8: .4byte 0x00001e2c +_0809D9CC: .4byte 0x00001e34 +_0809D9D0: .4byte 0x00001e38 +_0809D9D4: .4byte 0x00001e30 +_0809D9D8: .4byte 0x00001e3c +_0809D9DC: .4byte sub_809D9E0 + thumb_func_end sub_809D954 + + thumb_func_start sub_809D9E0 +sub_809D9E0: @ 809D9E0 + push {lr} + ldr r0, _0809D9FC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x7 + bhi _0809DA78 + lsls r0, 2 + ldr r1, _0809DA00 @ =_0809DA04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809D9FC: .4byte gUnknown_30030F0 +_0809DA00: .4byte _0809DA04 + .align 2, 0 +_0809DA04: + .4byte _0809DA24 + .4byte _0809DA2E + .4byte _0809DA34 + .4byte _0809DA3A + .4byte _0809DA44 + .4byte _0809DA4A + .4byte _0809DA50 + .4byte _0809DA56 +_0809DA24: + bl sub_809FB88 + bl sub_809DA84 + b _0809DA62 +_0809DA2E: + bl sub_809DBB0 + b _0809DA62 +_0809DA34: + bl sub_8070528 + b _0809DA62 +_0809DA3A: + bl sub_8006B10 + bl sub_80088F0 + b _0809DA62 +_0809DA44: + bl sub_80773BC + b _0809DA62 +_0809DA4A: + bl sub_809F8D0 + b _0809DA62 +_0809DA50: + bl sub_809F85C + b _0809DA62 +_0809DA56: + bl sub_809E898 + bl sub_80704D0 + bl sub_809FC34 +_0809DA62: + ldr r1, _0809DA74 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0809DA80 + .align 2, 0 +_0809DA74: .4byte gUnknown_30030F0 +_0809DA78: + bl sub_809F8C0 + bl sub_809DD60 +_0809DA80: + pop {r0} + bx r0 + thumb_func_end sub_809D9E0 + + thumb_func_start sub_809DA84 +sub_809DA84: @ 809DA84 + push {r4-r6,lr} + ldr r4, _0809DB3C @ =gUnknown_203998C + ldr r0, [r4] + ldr r1, _0809DB40 @ =0x00001e10 + adds r0, r1 + movs r2, 0 + strb r2, [r0] + ldr r1, [r4] + ldr r3, _0809DB44 @ =0x00001e18 + adds r0, r1, r3 + movs r5, 0 + strh r2, [r0] + ldr r6, _0809DB48 @ =0x00001e1a + adds r0, r1, r6 + strh r2, [r0] + ldr r0, _0809DB4C @ =0x00001e1c + adds r2, r1, r0 + movs r3, 0x1 + movs r0, 0x1 + strh r0, [r2] + adds r6, 0x4 + adds r2, r1, r6 + movs r0, 0x2 + strh r0, [r2] + movs r0, 0xF1 + lsls r0, 5 + adds r1, r0 + strb r5, [r1] + ldr r0, [r4] + ldr r1, _0809DB50 @ =0x00001e21 + adds r0, r1 + strb r3, [r0] + ldr r1, [r4] + ldr r5, _0809DB54 @ =0x00001e28 + adds r3, r1, r5 + ldr r2, _0809DB58 @ =gUnknown_83E248C + adds r6, 0xE + adds r0, r1, r6 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r3] + ldrb r0, [r0, 0x4] + ldr r2, _0809DB5C @ =0x00001e22 + adds r1, r2 + strb r0, [r1] + ldr r2, [r4] + adds r0, r2, r5 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + lsls r1, 3 + movs r0, 0xF0 + subs r0, r1 + asrs r0, 1 + adds r0, 0x6 + ldr r3, _0809DB60 @ =0x00001e16 + adds r1, r2, r3 + strh r0, [r1] + ldr r6, _0809DB64 @ =gUnknown_30030E0 + ldrh r0, [r6] + ldr r1, _0809DB68 @ =0x00001e25 + adds r2, r1 + strb r0, [r2] + ldr r0, [r4] + movs r2, 0xC0 + lsls r2, 5 + adds r0, r2 + movs r1, 0xFF + movs r2, 0x10 + bl memset + ldr r1, [r4] + adds r5, r1, r5 + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, 0 + beq _0809DB30 + movs r3, 0xC0 + lsls r3, 5 + adds r0, r1, r3 + ldr r2, _0809DB6C @ =0x00001e30 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 +_0809DB30: + movs r0, 0x10 + strh r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809DB3C: .4byte gUnknown_203998C +_0809DB40: .4byte 0x00001e10 +_0809DB44: .4byte 0x00001e18 +_0809DB48: .4byte 0x00001e1a +_0809DB4C: .4byte 0x00001e1c +_0809DB50: .4byte 0x00001e21 +_0809DB54: .4byte 0x00001e28 +_0809DB58: .4byte gUnknown_83E248C +_0809DB5C: .4byte 0x00001e22 +_0809DB60: .4byte 0x00001e16 +_0809DB64: .4byte gUnknown_30030E0 +_0809DB68: .4byte 0x00001e25 +_0809DB6C: .4byte 0x00001e30 + thumb_func_end sub_809DA84 + + thumb_func_start sub_809DB70 +sub_809DB70: @ 809DB70 + push {r4,r5,lr} + movs r3, 0 + ldr r4, _0809DBAC @ =gUnknown_202063C + movs r5, 0x5 + negs r5, r5 +_0809DB7A: + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + adds r0, r4 + adds r2, r0, 0 + adds r2, 0x3E + ldrb r1, [r2] + lsls r0, r1, 31 + cmp r0, 0 + beq _0809DB94 + adds r0, r5, 0 + ands r0, r1 + strb r0, [r2] +_0809DB94: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _0809DB7A + movs r0, 0 + bl sub_809EA0C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809DBAC: .4byte gUnknown_202063C + thumb_func_end sub_809DB70 + + thumb_func_start sub_809DBB0 +sub_809DBB0: @ 809DBB0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0xC + mov r8, r0 + add r2, sp, 0x8 + movs r6, 0 + ldr r1, _0809DD44 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _0809DD48 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_0809DBD6: + strh r6, [r2] + add r0, sp, 0x8 + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _0809DBD6 + strh r6, [r2] + add r2, sp, 0x8 + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0xC] + ldr r2, _0809DD44 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + add r0, sp, 0x8 + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _0809DD4C @ =gUnknown_83E2290 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + bl sub_80F6C6C + bl sub_80F6C98 +_0809DCA4: + lsls r0, r4, 3 + ldr r1, _0809DD50 @ =gUnknown_83E22A0 + adds r0, r1 + bl sub_8003CE4 + ldr r5, _0809DD54 @ =gUnknown_203998C + ldr r1, [r5] + ldr r2, _0809DD58 @ =0x00001e11 + adds r1, r2 + adds r1, r4 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bls _0809DCA4 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r1, 0xC8 + lsls r1, 3 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _0809DD5C @ =0x0000080c + movs r0, 0x52 + bl sub_8000A38 + ldr r1, [r5] + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r5] + movs r0, 0x80 + lsls r0, 4 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + ldr r1, [r5] + movs r2, 0x80 + lsls r2, 5 + adds r1, r2 + movs r0, 0x3 + bl sub_8001FA0 + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809DD44: .4byte 0x040000d4 +_0809DD48: .4byte 0x81000800 +_0809DD4C: .4byte gUnknown_83E2290 +_0809DD50: .4byte gUnknown_83E22A0 +_0809DD54: .4byte gUnknown_203998C +_0809DD58: .4byte 0x00001e11 +_0809DD5C: .4byte 0x0000080c + thumb_func_end sub_809DBB0 + + thumb_func_start sub_809DD60 +sub_809DD60: @ 809DD60 + push {lr} + ldr r0, _0809DD80 @ =sub_809DD88 + movs r1, 0x2 + bl sub_807741C + ldr r0, _0809DD84 @ =sub_809FB70 + bl sub_8000544 + bl sub_812B234 + movs r0, 0x3 + bl sub_812B1F0 + pop {r0} + bx r0 + .align 2, 0 +_0809DD80: .4byte sub_809DD88 +_0809DD84: .4byte sub_809FB70 + thumb_func_end sub_809DD60 + + thumb_func_start sub_809DD88 +sub_809DD88: @ 809DD88 + push {lr} + ldr r0, _0809DDA4 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809DDA8 @ =0x00001e10 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x9 + bhi _0809DE1A + lsls r0, 2 + ldr r1, _0809DDAC @ =_0809DDB0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809DDA4: .4byte gUnknown_203998C +_0809DDA8: .4byte 0x00001e10 +_0809DDAC: .4byte _0809DDB0 + .align 2, 0 +_0809DDB0: + .4byte _0809DDD8 + .4byte _0809DDE6 + .4byte _0809DDEC + .4byte _0809DDF2 + .4byte _0809DDF8 + .4byte _0809DDFE + .4byte _0809DE04 + .4byte _0809DE0A + .4byte _0809DE10 + .4byte _0809DE16 +_0809DDD8: + bl sub_809DE70 + bl sub_809DB70 + bl sub_809FB9C + b _0809DE1A +_0809DDE6: + bl sub_809DF28 + b _0809DE1A +_0809DDEC: + bl sub_809DF64 + b _0809DE1A +_0809DDF2: + bl sub_809DF74 + b _0809DE1A +_0809DDF8: + bl sub_809E210 + b _0809DE1A +_0809DDFE: + bl sub_809E250 + b _0809DE1A +_0809DE04: + bl sub_809DFA4 + b _0809DE1A +_0809DE0A: + bl sub_809E1D4 + b _0809DE1A +_0809DE10: + bl sub_809E014 + b _0809DE1A +_0809DE16: + bl sub_809E048 +_0809DE1A: + pop {r0} + bx r0 + thumb_func_end sub_809DD88 + + thumb_func_start sub_809DE20 +sub_809DE20: @ 809DE20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809DE2C @ =gUnknown_83E234B + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0809DE2C: .4byte gUnknown_83E234B + thumb_func_end sub_809DE20 + + thumb_func_start sub_809DE30 +sub_809DE30: @ 809DE30 + ldr r1, _0809DE44 @ =gUnknown_83E234E + ldr r0, _0809DE48 @ =gUnknown_203998C + ldr r0, [r0] + ldr r2, _0809DE4C @ =0x00001e22 + adds r0, r2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0809DE44: .4byte gUnknown_83E234E +_0809DE48: .4byte gUnknown_203998C +_0809DE4C: .4byte 0x00001e22 + thumb_func_end sub_809DE30 + + thumb_func_start sub_809DE50 +sub_809DE50: @ 809DE50 + ldr r1, _0809DE64 @ =gUnknown_83E2351 + ldr r0, _0809DE68 @ =gUnknown_203998C + ldr r0, [r0] + ldr r2, _0809DE6C @ =0x00001e22 + adds r0, r2 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0809DE64: .4byte gUnknown_83E2351 +_0809DE68: .4byte gUnknown_203998C +_0809DE6C: .4byte 0x00001e22 + thumb_func_end sub_809DE50 + + thumb_func_start sub_809DE70 +sub_809DE70: @ 809DE70 + push {r4-r6,lr} + sub sp, 0x4 + ldr r1, _0809DF08 @ =gUnknown_8E982BC + movs r0, 0x3 + bl sub_809F900 + ldr r5, _0809DF0C @ =gUnknown_203998C + ldr r0, [r5] + ldr r1, _0809DF10 @ =0x00001e22 + adds r0, r1 + movs r6, 0 + movs r1, 0x1 + strb r1, [r0] + ldr r1, _0809DF14 @ =gUnknown_8E98458 + movs r0, 0x2 + bl sub_809F900 + ldr r1, _0809DF18 @ =gUnknown_8E98398 + movs r0, 0x1 + bl sub_809F900 + ldr r0, [r5] + ldr r1, _0809DF1C @ =0x00001e12 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_809F9E8 + ldr r0, [r5] + ldr r1, _0809DF20 @ =0x00001e11 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_809F9E8 + bl sub_809F914 + bl sub_809F56C + bl sub_809FAE4 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + str r6, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, [r5] + ldr r0, _0809DF24 @ =0x00001e10 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809DF08: .4byte gUnknown_8E982BC +_0809DF0C: .4byte gUnknown_203998C +_0809DF10: .4byte 0x00001e22 +_0809DF14: .4byte gUnknown_8E98458 +_0809DF18: .4byte gUnknown_8E98398 +_0809DF1C: .4byte 0x00001e12 +_0809DF20: .4byte 0x00001e11 +_0809DF24: .4byte 0x00001e10 + thumb_func_end sub_809DE70 + + thumb_func_start sub_809DF28 +sub_809DF28: @ 809DF28 + push {lr} + ldr r0, _0809DF58 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0809DF50 + movs r0, 0x1 + bl sub_809F240 + movs r0, 0x1 + bl sub_809EA64 + ldr r0, _0809DF5C @ =gUnknown_203998C + ldr r1, [r0] + ldr r0, _0809DF60 @ =0x00001e10 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0809DF50: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809DF58: .4byte gUnknown_2037AB8 +_0809DF5C: .4byte gUnknown_203998C +_0809DF60: .4byte 0x00001e10 + thumb_func_end sub_809DF28 + + thumb_func_start sub_809DF64 +sub_809DF64: @ 809DF64 + push {lr} + bl sub_809F0CC + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_809DF64 + + thumb_func_start sub_809DF74 +sub_809DF74: @ 809DF74 + push {lr} + bl sub_809EAD4 + lsls r0, 24 + cmp r0, 0 + beq _0809DF96 + movs r0, 0x1 + bl sub_809F240 + bl sub_809E9F8 + ldr r0, _0809DF9C @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809DFA0 @ =0x00001e10 + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] +_0809DF96: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809DF9C: .4byte gUnknown_203998C +_0809DFA0: .4byte 0x00001e10 + thumb_func_end sub_809DF74 + + thumb_func_start sub_809DFA4 +sub_809DFA4: @ 809DFA4 + push {r4,lr} + bl sub_809F7EC + movs r0, 0 + bl sub_809F240 + movs r0, 0 + bl sub_809EA64 + movs r0, 0x3 + movs r1, 0 + movs r2, 0x1 + bl sub_809E518 + ldr r4, _0809DFEC @ =gUnknown_203998C + ldr r0, [r4] + ldr r1, _0809DFF0 @ =0x00001e2c + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0809DFF8 + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bls _0809DFF8 + bl sub_809E0B4 + ldr r0, [r4] + ldr r1, _0809DFF4 @ =0x00001e10 + adds r0, r1 + movs r1, 0x7 + strb r1, [r0] + movs r0, 0 + b _0809E006 + .align 2, 0 +_0809DFEC: .4byte gUnknown_203998C +_0809DFF0: .4byte 0x00001e2c +_0809DFF4: .4byte 0x00001e10 +_0809DFF8: + ldr r0, _0809E00C @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809E010 @ =0x00001e10 + adds r0, r1 + movs r1, 0x8 + strb r1, [r0] + movs r0, 0x1 +_0809E006: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809E00C: .4byte gUnknown_203998C +_0809E010: .4byte 0x00001e10 + thumb_func_end sub_809DFA4 + + thumb_func_start sub_809E014 +sub_809E014: @ 809E014 + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0809E040 @ =gUnknown_203998C + ldr r1, [r0] + ldr r0, _0809E044 @ =0x00001e10 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 + add sp, 0x4 + pop {r1} + bx r1 + .align 2, 0 +_0809E040: .4byte gUnknown_203998C +_0809E044: .4byte 0x00001e10 + thumb_func_end sub_809E014 + + thumb_func_start sub_809E048 +sub_809E048: @ 809E048 + push {r4,r5,lr} + ldr r0, _0809E0A0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0809E096 + ldr r4, _0809E0A4 @ =gUnknown_203998C + ldr r0, [r4] + ldr r1, _0809E0A8 @ =0x00001e2c + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0809E06C + bl sub_8000564 +_0809E06C: + ldr r0, [r4] + ldr r1, _0809E0AC @ =0x00001e3c + adds r0, r1 + ldr r0, [r0] + bl sub_8000544 + ldr r0, _0809E0B0 @ =sub_809DD88 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + bl sub_8003ECC + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + bl sub_812B248 +_0809E096: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809E0A0: .4byte gUnknown_2037AB8 +_0809E0A4: .4byte gUnknown_203998C +_0809E0A8: .4byte 0x00001e2c +_0809E0AC: .4byte 0x00001e3c +_0809E0B0: .4byte sub_809DD88 + thumb_func_end sub_809E048 + + thumb_func_start sub_809E0B4 +sub_809E0B4: @ 809E0B4 + push {r4,r5,lr} + sub sp, 0x10 + movs r5, 0 + bl sub_80CC7F8 + lsls r0, 24 + cmp r0, 0 + bne _0809E104 + ldr r4, _0809E0F0 @ =gUnknown_2021CD0 + ldr r0, _0809E0F4 @ =0x00004037 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, _0809E0F8 @ =gUnknown_2021CF0 + ldr r1, _0809E0FC @ =gUnknown_203998C + ldr r1, [r1] + ldr r2, _0809E100 @ =0x00001e30 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + b _0809E144 + .align 2, 0 +_0809E0F0: .4byte gUnknown_2021CD0 +_0809E0F4: .4byte 0x00004037 +_0809E0F8: .4byte gUnknown_2021CF0 +_0809E0FC: .4byte gUnknown_203998C +_0809E100: .4byte 0x00001e30 +_0809E104: + ldr r4, _0809E1AC @ =gUnknown_2021CD0 + ldr r0, _0809E1B0 @ =0x00004037 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, _0809E1B4 @ =gUnknown_2021CF0 + ldr r1, _0809E1B8 @ =gUnknown_203998C + ldr r1, [r1] + ldr r2, _0809E1BC @ =0x00001e30 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r4, _0809E1C0 @ =gUnknown_2021D04 + bl sub_80CC7A8 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + movs r5, 0x2 +_0809E144: + ldr r0, _0809E1C4 @ =0x00000834 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0809E156 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0809E156: + ldr r4, _0809E1C8 @ =gUnknown_2021D18 + ldr r1, _0809E1CC @ =gUnknown_83E2280 + lsls r0, r5, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0809E1D0 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809E1AC: .4byte gUnknown_2021CD0 +_0809E1B0: .4byte 0x00004037 +_0809E1B4: .4byte gUnknown_2021CF0 +_0809E1B8: .4byte gUnknown_203998C +_0809E1BC: .4byte 0x00001e30 +_0809E1C0: .4byte gUnknown_2021D04 +_0809E1C4: .4byte 0x00000834 +_0809E1C8: .4byte gUnknown_2021D18 +_0809E1CC: .4byte gUnknown_83E2280 +_0809E1D0: .4byte gUnknown_3003E50 + thumb_func_end sub_809E0B4 + + thumb_func_start sub_809E1D4 +sub_809E1D4: @ 809E1D4 + push {lr} + bl sub_8002DE8 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0809E1FE + ldr r0, _0809E204 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0809E1FE + ldr r0, _0809E208 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809E20C @ =0x00001e10 + adds r0, r1 + movs r1, 0x8 + strb r1, [r0] +_0809E1FE: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809E204: .4byte gUnknown_30030F0 +_0809E208: .4byte gUnknown_203998C +_0809E20C: .4byte 0x00001e10 + thumb_func_end sub_809E1D4 + + thumb_func_start sub_809E210 +sub_809E210: @ 809E210 + push {lr} + movs r0, 0 + bl sub_809F240 + bl sub_809EC20 + bl sub_809E30C + movs r0, 0x1 + bl sub_809EA0C + movs r0, 0 + movs r1, 0 + movs r2, 0x1 + bl sub_809E518 + movs r0, 0x6 + bl sub_80722CC + ldr r0, _0809E248 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809E24C @ =0x00001e10 + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809E248: .4byte gUnknown_203998C +_0809E24C: .4byte 0x00001e10 + thumb_func_end sub_809E210 + + thumb_func_start sub_809E250 +sub_809E250: @ 809E250 + push {r4-r6,lr} + sub sp, 0x4 + bl sub_809E364 + lsls r0, 24 + cmp r0, 0 + beq _0809E302 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_809E9CC + bl sub_809EB40 + movs r5, 0 + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r0, 24 + lsrs r0, 24 + adds r6, r4, 0 + cmp r1, r0 + bne _0809E282 + movs r5, 0x1 +_0809E282: + ldr r2, _0809E2B8 @ =gUnknown_203998C + ldr r0, [r2] + ldr r1, _0809E2BC @ =0x00001e10 + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + ldr r1, [r2] + ldr r3, _0809E2C0 @ =0x00001e22 + adds r1, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r4, [r2] + adds r4, r3 + ldrb r0, [r4] + movs r1, 0x3 + bl __umodsi3 + strb r0, [r4] + cmp r5, 0 + beq _0809E2C4 + mov r4, sp + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + b _0809E2E2 + .align 2, 0 +_0809E2B8: .4byte gUnknown_203998C +_0809E2BC: .4byte 0x00001e10 +_0809E2C0: .4byte 0x00001e22 +_0809E2C4: + mov r0, sp + movs r2, 0 + ldrsh r4, [r0, r2] + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _0809E2E4 + mov r4, sp + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 +_0809E2E2: + strh r0, [r4] +_0809E2E4: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r6, r2] + bl sub_809E948 + bl sub_809FA60 + movs r0, 0x1 + bl sub_809F240 + movs r0, 0 + bl sub_809EA0C +_0809E302: + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809E250 + + thumb_func_start sub_809E30C +sub_809E30C: @ 809E30C + push {r4,lr} + ldr r4, _0809E328 @ =sub_809E32C + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809E328: .4byte sub_809E32C + thumb_func_end sub_809E30C + + thumb_func_start sub_809E32C +sub_809E32C: @ 809E32C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0809E35C @ =gUnknown_83E2354 + ldr r2, _0809E360 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0809E33E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _0809E33E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809E35C: .4byte gUnknown_83E2354 +_0809E360: .4byte gUnknown_3005090 + thumb_func_end sub_809E32C + + thumb_func_start sub_809E364 +sub_809E364: @ 809E364 + push {lr} + ldr r0, _0809E378 @ =sub_809E32C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0809E37C + movs r0, 0 + b _0809E37E + .align 2, 0 +_0809E378: .4byte sub_809E32C +_0809E37C: + movs r0, 0x1 +_0809E37E: + pop {r1} + bx r1 + thumb_func_end sub_809E364 + + thumb_func_start sub_809E384 +sub_809E384: @ 809E384 + ldr r1, _0809E3A0 @ =gUnknown_203998C + ldr r1, [r1] + ldr r3, _0809E3A4 @ =0x00001e18 + adds r2, r1, r3 + movs r3, 0 + strh r3, [r2] + ldr r2, _0809E3A8 @ =0x00001e1a + adds r1, r2 + strh r3, [r1] + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + movs r0, 0 + bx lr + .align 2, 0 +_0809E3A0: .4byte gUnknown_203998C +_0809E3A4: .4byte 0x00001e18 +_0809E3A8: .4byte 0x00001e1a + thumb_func_end sub_809E384 + + thumb_func_start sub_809E3AC +sub_809E3AC: @ 809E3AC + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r5, _0809E42C @ =gUnknown_203998C + ldr r0, [r5] + ldr r2, _0809E430 @ =0x00001e1a + adds r1, r0, r2 + str r1, [sp] + ldr r1, _0809E434 @ =0x00001e18 + adds r0, r1 + str r0, [sp, 0x4] + ldrh r0, [r4, 0xA] + adds r0, 0x4 + strh r0, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + movs r1, 0x28 + bl sub_8044E30 + ldr r1, [r5] + movs r2, 0xF1 + lsls r2, 5 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + strh r0, [r1] + ldrh r0, [r4, 0xA] + adds r0, 0x80 + movs r1, 0xFF + ands r0, r1 + movs r1, 0x28 + bl sub_8044E30 + ldr r1, [r5] + ldr r2, _0809E438 @ =0x00001e21 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + strh r0, [r1] + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x3F + ble _0809E422 + ldr r0, [r5] + ldr r1, _0809E43C @ =0x00001e1c + adds r2, r0, r1 + ldrb r3, [r2] + adds r1, 0x2 + adds r0, r1 + ldrh r1, [r0] + strh r1, [r2] + strh r3, [r0] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0809E422: + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809E42C: .4byte gUnknown_203998C +_0809E430: .4byte 0x00001e1a +_0809E434: .4byte 0x00001e18 +_0809E438: .4byte 0x00001e21 +_0809E43C: .4byte 0x00001e1c + thumb_func_end sub_809E3AC + + thumb_func_start sub_809E440 +sub_809E440: @ 809E440 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r5, _0809E4C4 @ =gUnknown_203998C + ldr r0, [r5] + ldr r2, _0809E4C8 @ =0x00001e1a + adds r1, r0, r2 + str r1, [sp] + ldr r3, _0809E4CC @ =0x00001e18 + adds r0, r3 + str r0, [sp, 0x4] + ldrh r0, [r4, 0xA] + adds r0, 0x4 + strh r0, [r4, 0xA] + movs r1, 0xA + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl sub_8044E30 + ldr r1, [r5] + movs r2, 0xF1 + lsls r2, 5 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + strh r0, [r1] + ldrh r0, [r4, 0xA] + adds r0, 0x80 + movs r1, 0xFF + ands r0, r1 + movs r1, 0x28 + bl sub_8044E30 + ldr r1, [r5] + ldr r3, _0809E4D0 @ =0x00001e21 + adds r1, r3 + ldrb r1, [r1] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + strh r0, [r1] + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _0809E4BA + ldr r0, [r5] + movs r2, 0xF1 + lsls r2, 5 + adds r1, r0, r2 + ldrb r2, [r1] + adds r0, r3 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, [r5] + adds r0, r3 + strb r2, [r0] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0809E4BA: + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809E4C4: .4byte gUnknown_203998C +_0809E4C8: .4byte 0x00001e1a +_0809E4CC: .4byte 0x00001e18 +_0809E4D0: .4byte 0x00001e21 + thumb_func_end sub_809E440 + + thumb_func_start sub_809E4D4 +sub_809E4D4: @ 809E4D4 + push {lr} + ldr r0, _0809E4EC @ =sub_809E32C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809E4EC: .4byte sub_809E32C + thumb_func_end sub_809E4D4 + + thumb_func_start sub_809E4F0 +sub_809E4F0: @ 809E4F0 + push {lr} + ldr r0, _0809E510 @ =sub_809E58C + movs r1, 0x3 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809E514 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x3 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_0809E510: .4byte sub_809E58C +_0809E514: .4byte gUnknown_3005090 + thumb_func_end sub_809E4F0 + + thumb_func_start sub_809E518 +sub_809E518: @ 809E518 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _0809E550 @ =sub_809E58C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0809E554 @ =gUnknown_3005090 + adds r4, r1, r0 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r5, r0 + bne _0809E558 + cmp r6, 0 + bne _0809E558 + strh r7, [r4, 0xA] + movs r0, 0x1 + strh r0, [r4, 0xC] + b _0809E584 + .align 2, 0 +_0809E550: .4byte sub_809E58C +_0809E554: .4byte gUnknown_3005090 +_0809E558: + cmp r5, 0x3 + bne _0809E568 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0809E568 + cmp r6, 0 + beq _0809E584 +_0809E568: + ldrh r1, [r4, 0x8] + movs r2, 0x8 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + beq _0809E57A + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_809E6B8 +_0809E57A: + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r7, 0 + bl sub_809E6E0 +_0809E584: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809E518 + + thumb_func_start sub_809E58C +sub_809E58C: @ 809E58C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0809E5F4 @ =gUnknown_3005090 + adds r4, r1, r0 + ldrh r1, [r4, 0x8] + movs r2, 0x8 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + beq _0809E63E + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _0809E63E + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_809E644 + lsls r0, 16 + lsrs r0, 16 + ldrb r3, [r4, 0xE] + adds r1, r3, 0 + adds r2, r3, 0 + bl sub_8083A88 + ldrh r1, [r4, 0x12] + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0809E5D8 + subs r0, r1, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + cmp r0, 0 + bne _0809E63E +_0809E5D8: + movs r0, 0x2 + strh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r0, 0 + blt _0809E602 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0xD + bgt _0809E5F8 + adds r0, r2, r1 + b _0809E606 + .align 2, 0 +_0809E5F4: .4byte gUnknown_3005090 +_0809E5F8: + movs r0, 0x10 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x14] + adds r0, 0x1 + b _0809E60C +_0809E602: + ldrh r3, [r4, 0xE] + adds r0, r1, r3 +_0809E606: + strh r0, [r4, 0xE] + ldrh r2, [r4, 0x14] + adds r0, r1, r2 +_0809E60C: + strh r0, [r4, 0x14] + movs r3, 0xE + ldrsh r0, [r4, r3] + ldrh r1, [r4, 0xE] + cmp r0, 0x10 + bne _0809E62C + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0x16 + bne _0809E62C + ldr r0, _0809E628 @ =0x0000fffc + strh r0, [r4, 0x10] + b _0809E63E + .align 2, 0 +_0809E628: .4byte 0x0000fffc +_0809E62C: + lsls r0, r1, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _0809E63E + ldrh r0, [r4, 0xA] + strh r0, [r4, 0xC] + movs r0, 0x2 + strh r0, [r4, 0x10] + strh r1, [r4, 0x14] +_0809E63E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809E58C + + thumb_func_start sub_809E644 +sub_809E644: @ 809E644 + push {r4-r6,lr} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x4 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x87 + lsls r1, 1 + adds r5, r1, 0 + adds r0, r5 + add r6, sp, 0x8 + strh r0, [r6] + movs r0, 0x6 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + adds r0, r5 + mov r1, sp + adds r1, 0xA + strh r0, [r1] + movs r0, 0x7 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + adds r0, r5 + add r1, sp, 0xC + strh r0, [r1] + movs r0, 0x7 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 20 + ldr r1, _0809E6B4 @ =0x00000101 + adds r0, r1 + mov r1, sp + adds r1, 0xE + strh r0, [r1] + mov r0, sp + adds r1, r6, 0 + movs r2, 0x8 + bl memcpy + lsls r4, 1 + mov r1, sp + adds r0, r1, r4 + ldrh r0, [r0] + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809E6B4: .4byte 0x00000101 + thumb_func_end sub_809E644 + + thumb_func_start sub_809E6B8 +sub_809E6B8: @ 809E6B8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_809E644 + lsls r0, 16 + ldr r2, _0809E6D8 @ =gUnknown_20375F8 + lsrs r0, 15 + adds r2, r0, r2 + ldr r1, _0809E6DC @ =gUnknown_20371F8 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0809E6D8: .4byte gUnknown_20375F8 +_0809E6DC: .4byte gUnknown_20371F8 + thumb_func_end sub_809E6B8 + + thumb_func_start sub_809E6E0 +sub_809E6E0: @ 809E6E0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0 + strh r1, [r0, 0x8] + strh r2, [r0, 0xA] + movs r1, 0x1 + strh r1, [r0, 0xC] + movs r2, 0x4 + strh r2, [r0, 0xE] + movs r1, 0x2 + strh r1, [r0, 0x10] + strh r3, [r0, 0x12] + strh r2, [r0, 0x14] + bx lr + thumb_func_end sub_809E6E0 + + thumb_func_start sub_809E700 +sub_809E700: @ 809E700 + push {r4-r6,lr} + adds r5, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0809E718 + adds r0, r5, 0 + movs r1, 0 + bl sub_800838C +_0809E718: + ldrh r0, [r5, 0x36] + movs r1, 0xFF + ands r1, r0 + adds r6, r5, 0 + adds r6, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r6] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x2E + ldrsh r4, [r5, r0] + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0809E74C + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] +_0809E74C: + ldrb r1, [r6] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0809E77C + movs r1, 0x36 + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _0809E77C + movs r2, 0x2E + ldrsh r1, [r5, r2] + movs r2, 0x32 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0809E77C + movs r0, 0x30 + ldrsh r1, [r5, r0] + movs r2, 0x34 + ldrsh r0, [r5, r2] + cmp r1, r0 + beq _0809E786 +_0809E77C: + movs r0, 0 + strh r0, [r5, 0x38] + movs r0, 0x2 + strh r0, [r5, 0x3A] + strh r0, [r5, 0x3C] +_0809E786: + ldrh r0, [r5, 0x3C] + subs r0, 0x1 + strh r0, [r5, 0x3C] + lsls r0, 16 + cmp r0, 0 + bne _0809E7AE + ldrh r1, [r5, 0x3A] + ldrh r2, [r5, 0x38] + adds r0, r1, r2 + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + beq _0809E7A6 + cmp r0, 0 + bne _0809E7AA +_0809E7A6: + negs r0, r1 + strh r0, [r5, 0x3A] +_0809E7AA: + movs r0, 0x2 + strh r0, [r5, 0x3C] +_0809E7AE: + movs r1, 0x36 + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _0809E7E4 + ldrh r4, [r5, 0x38] + lsls r5, r4, 24 + lsrs r5, 24 + lsls r4, 16 + asrs r4, 17 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 4 + ldr r2, _0809E7EC @ =0x01010000 + adds r0, r2 + lsrs r0, 16 + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r5, 0 + bl sub_8083A88 +_0809E7E4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E7EC: .4byte 0x01010000 + thumb_func_end sub_809E700 + + thumb_func_start sub_809E7F0 +sub_809E7F0: @ 809E7F0 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _0809E838 @ =gUnknown_83E2364 + mov r0, sp + movs r2, 0x8 + bl memcpy + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0809E814 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _0809E822 +_0809E814: + movs r0, 0x8 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + strh r0, [r4, 0x30] +_0809E822: + movs r1, 0x30 + ldrsh r0, [r4, r1] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x24] + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809E838: .4byte gUnknown_83E2364 + thumb_func_end sub_809E7F0 + + thumb_func_start sub_809E83C +sub_809E83C: @ 809E83C + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _0809E864 @ =gUnknown_83E236C + mov r0, sp + movs r2, 0x8 + bl memcpy + bl sub_809F668 + lsls r0, 24 + ldrh r1, [r4, 0x2E] + lsls r1, 24 + cmp r0, r1 + beq _0809E868 + movs r0, 0 + strh r0, [r4, 0x26] + strh r0, [r4, 0x30] + b _0809E88E + .align 2, 0 +_0809E864: .4byte gUnknown_83E236C +_0809E868: + movs r1, 0x30 + ldrsh r0, [r4, r1] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _0809E890 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + strh r0, [r4, 0x30] + movs r0, 0 +_0809E88E: + strh r0, [r4, 0x32] +_0809E890: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809E83C + + thumb_func_start sub_809E898 +sub_809E898: @ 809E898 + push {lr} + bl sub_809E8B4 + bl sub_809EB5C + bl sub_809EDE8 + bl sub_809EE60 + bl sub_809EF24 + pop {r0} + bx r0 + thumb_func_end sub_809E898 + + thumb_func_start sub_809E8B4 +sub_809E8B4: @ 809E8B4 + push {r4-r6,lr} + ldr r0, _0809E938 @ =gUnknown_83E25EC + movs r1, 0x26 + movs r2, 0x58 + movs r3, 0x1 + bl sub_8006F8C + ldr r5, _0809E93C @ =gUnknown_203998C + ldr r1, [r5] + ldr r4, _0809E940 @ =0x00001e23 + adds r1, r4 + strb r0, [r1] + movs r0, 0x1 + bl sub_809EA0C + ldr r6, _0809E944 @ =gUnknown_202063C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r3, [r1, 0x5] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + movs r3, 0x4 + orrs r0, r3 + strb r0, [r1, 0x5] + ldr r0, [r5] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0, 0x1] + ands r2, r1 + orrs r2, r3 + strb r2, [r0, 0x1] + ldr r2, [r5] + adds r2, r4 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x1 + strh r1, [r0, 0x3A] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x2 + strh r1, [r0, 0x3A] + movs r0, 0 + movs r1, 0 + bl sub_809E948 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E938: .4byte gUnknown_83E25EC +_0809E93C: .4byte gUnknown_203998C +_0809E940: .4byte 0x00001e23 +_0809E944: .4byte gUnknown_202063C + thumb_func_end sub_809E8B4 + + thumb_func_start sub_809E948 +sub_809E948: @ 809E948 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + ldr r1, _0809E994 @ =gUnknown_203998C + ldr r1, [r1] + ldr r2, _0809E998 @ =0x00001e23 + adds r1, r2 + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + ldr r2, _0809E99C @ =gUnknown_202063C + adds r5, r1, r2 + lsrs r1, r0, 16 + mov r8, r1 + asrs r6, r0, 16 + ldr r4, _0809E9A0 @ =gUnknown_83E2330 + bl sub_809DE50 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + cmp r6, r0 + bge _0809E9A8 + bl sub_809DE50 + ldr r1, _0809E9A4 @ =gUnknown_83E2333 + lsls r0, 24 + lsrs r0, 21 + adds r0, r6, r0 + adds r0, r1 + ldrb r0, [r0] + adds r0, 0x26 + b _0809E9AA + .align 2, 0 +_0809E994: .4byte gUnknown_203998C +_0809E998: .4byte 0x00001e23 +_0809E99C: .4byte gUnknown_202063C +_0809E9A0: .4byte gUnknown_83E2330 +_0809E9A4: .4byte gUnknown_83E2333 +_0809E9A8: + movs r0, 0 +_0809E9AA: + strh r0, [r5, 0x20] + lsls r0, r7, 16 + asrs r0, 12 + adds r0, 0x58 + strh r0, [r5, 0x22] + ldrh r0, [r5, 0x2E] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x30] + strh r0, [r5, 0x34] + mov r2, r8 + strh r2, [r5, 0x2E] + strh r7, [r5, 0x30] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809E948 + + thumb_func_start sub_809E9CC +sub_809E9CC: @ 809E9CC + ldr r2, _0809E9EC @ =gUnknown_203998C + ldr r2, [r2] + ldr r3, _0809E9F0 @ =0x00001e23 + adds r2, r3 + ldrb r3, [r2] + lsls r2, r3, 4 + adds r2, r3 + lsls r2, 2 + ldr r3, _0809E9F4 @ =gUnknown_202063C + adds r2, r3 + ldrh r3, [r2, 0x2E] + strh r3, [r0] + ldrh r0, [r2, 0x30] + strh r0, [r1] + bx lr + .align 2, 0 +_0809E9EC: .4byte gUnknown_203998C +_0809E9F0: .4byte 0x00001e23 +_0809E9F4: .4byte gUnknown_202063C + thumb_func_end sub_809E9CC + + thumb_func_start sub_809E9F8 +sub_809E9F8: @ 809E9F8 + push {lr} + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_809E948 + pop {r0} + bx r0 + thumb_func_end sub_809E9F8 + + thumb_func_start sub_809EA0C +sub_809EA0C: @ 809EA0C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0809EA54 @ =gUnknown_202063C + ldr r1, _0809EA58 @ =gUnknown_203998C + ldr r4, [r1] + ldr r1, _0809EA5C @ =0x00001e23 + adds r4, r1 + ldrb r1, [r4] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r5 + ldrh r3, [r2, 0x36] + ldr r1, _0809EA60 @ =0xffffff00 + ands r1, r3 + strh r1, [r2, 0x36] + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + ldrh r2, [r1, 0x36] + orrs r0, r2 + strh r0, [r1, 0x36] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0 + bl sub_800838C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809EA54: .4byte gUnknown_202063C +_0809EA58: .4byte gUnknown_203998C +_0809EA5C: .4byte 0x00001e23 +_0809EA60: .4byte 0xffffff00 + thumb_func_end sub_809EA0C + + thumb_func_start sub_809EA64 +sub_809EA64: @ 809EA64 + push {r4,r5,lr} + lsls r0, 24 + ldr r5, _0809EA9C @ =gUnknown_202063C + ldr r1, _0809EAA0 @ =gUnknown_203998C + ldr r4, [r1] + ldr r1, _0809EAA4 @ =0x00001e23 + adds r4, r1 + ldrb r1, [r4] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r5 + ldrh r3, [r2, 0x36] + movs r1, 0xFF + ands r1, r3 + strh r1, [r2, 0x36] + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + lsrs r0, 16 + ldrh r2, [r1, 0x36] + orrs r0, r2 + strh r0, [r1, 0x36] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809EA9C: .4byte gUnknown_202063C +_0809EAA0: .4byte gUnknown_203998C +_0809EAA4: .4byte 0x00001e23 + thumb_func_end sub_809EA64 + + thumb_func_start sub_809EAA8 +sub_809EAA8: @ 809EAA8 + push {lr} + ldr r0, _0809EAC8 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809EACC @ =0x00001e23 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809EAD0 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_0809EAC8: .4byte gUnknown_203998C +_0809EACC: .4byte 0x00001e23 +_0809EAD0: .4byte gUnknown_202063C + thumb_func_end sub_809EAA8 + + thumb_func_start sub_809EAD4 +sub_809EAD4: @ 809EAD4 + ldr r2, _0809EAF4 @ =gUnknown_202063C + ldr r0, _0809EAF8 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809EAFC @ =0x00001e23 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + lsrs r0, 31 + bx lr + .align 2, 0 +_0809EAF4: .4byte gUnknown_202063C +_0809EAF8: .4byte gUnknown_203998C +_0809EAFC: .4byte 0x00001e23 + thumb_func_end sub_809EAD4 + + thumb_func_start sub_809EB00 +sub_809EB00: @ 809EB00 + push {r4,r5,lr} + sub sp, 0x4 + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl sub_809E9CC + mov r0, sp + movs r1, 0 + ldrsh r4, [r0, r1] + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _0809EB34 + ldr r0, _0809EB30 @ =gUnknown_83E2374 + movs r2, 0 + ldrsh r1, [r5, r2] + adds r1, r0 + ldrb r0, [r1] + b _0809EB36 + .align 2, 0 +_0809EB30: .4byte gUnknown_83E2374 +_0809EB34: + movs r0, 0 +_0809EB36: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809EB00 + + thumb_func_start sub_809EB40 +sub_809EB40: @ 809EB40 + push {r4,lr} + ldr r4, _0809EB58 @ =gUnknown_83E2330 + bl sub_809DE50 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809EB58: .4byte gUnknown_83E2330 + thumb_func_end sub_809EB40 + + thumb_func_start sub_809EB5C +sub_809EB5C: @ 809EB5C + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _0809EC00 @ =gUnknown_83E2574 + movs r1, 0xCC + movs r2, 0x58 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809EC04 @ =gUnknown_203998C + ldr r1, [r1] + ldr r2, _0809EC08 @ =0x00001e24 + adds r1, r2 + strb r0, [r1] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r0, _0809EC0C @ =gUnknown_202063C + mov r8, r0 + add r5, r8 + ldr r1, _0809EC10 @ =gUnknown_83E2504 + adds r0, r5, 0 + bl sub_8008A58 + adds r1, r5, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r6, 0x4 + orrs r0, r6 + strb r0, [r1] + ldr r0, _0809EC14 @ =gUnknown_83E25A4 + movs r1, 0xCC + movs r2, 0x54 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r8 + ldr r1, _0809EC18 @ =gUnknown_83E250C + adds r0, r4, 0 + bl sub_8008A58 + adds r4, 0x3E + ldrb r0, [r4] + orrs r0, r6 + strb r0, [r4] + ldr r0, _0809EC1C @ =gUnknown_83E258C + movs r1, 0xCC + movs r2, 0x53 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + add r2, r8 + ldrb r3, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r6 + strb r1, [r2, 0x5] + strh r0, [r5, 0x3C] + adds r2, 0x3E + ldrb r0, [r2] + orrs r0, r6 + strb r0, [r2] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809EC00: .4byte gUnknown_83E2574 +_0809EC04: .4byte gUnknown_203998C +_0809EC08: .4byte 0x00001e24 +_0809EC0C: .4byte gUnknown_202063C +_0809EC10: .4byte gUnknown_83E2504 +_0809EC14: .4byte gUnknown_83E25A4 +_0809EC18: .4byte gUnknown_83E250C +_0809EC1C: .4byte gUnknown_83E258C + thumb_func_end sub_809EB5C + + thumb_func_start sub_809EC20 +sub_809EC20: @ 809EC20 + ldr r0, _0809EC44 @ =gUnknown_203998C + ldr r2, [r0] + ldr r1, _0809EC48 @ =0x00001e24 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809EC4C @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldr r1, _0809EC50 @ =0x00001e22 + adds r2, r1 + ldrb r1, [r2] + strh r1, [r0, 0x30] + bx lr + .align 2, 0 +_0809EC44: .4byte gUnknown_203998C +_0809EC48: .4byte 0x00001e24 +_0809EC4C: .4byte gUnknown_202063C +_0809EC50: .4byte 0x00001e22 + thumb_func_end sub_809EC20 + + thumb_func_start sub_809EC54 +sub_809EC54: @ 809EC54 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _0809EC78 @ =gUnknown_83E2378 +_0809EC5A: + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _0809EC5A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809EC78: .4byte gUnknown_83E2378 + thumb_func_end sub_809EC54 + + thumb_func_start sub_809EC7C +sub_809EC7C: @ 809EC7C + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x3A + ldrsh r0, [r6, r1] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r1, _0809ECC4 @ =gUnknown_202063C + adds r5, r1 + movs r2, 0x3C + ldrsh r0, [r6, r2] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r1 + ldr r0, _0809ECC8 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809ECCC @ =0x00001e22 + adds r0, r1 + ldrb r0, [r0] + bl sub_809DE20 + lsls r0, 24 + lsrs r0, 24 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_809ED88 + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809ECC4: .4byte gUnknown_202063C +_0809ECC8: .4byte gUnknown_203998C +_0809ECCC: .4byte 0x00001e22 + thumb_func_end sub_809EC7C + + thumb_func_start sub_809ECD0 +sub_809ECD0: @ 809ECD0 + movs r0, 0 + bx lr + thumb_func_end sub_809ECD0 + + thumb_func_start sub_809ECD4 +sub_809ECD4: @ 809ECD4 + push {r4,r5,lr} + adds r3, r0, 0 + movs r0, 0x3A + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r2, _0809ED40 @ =gUnknown_202063C + adds r4, r0, r2 + movs r0, 0x3C + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r5, r0, r2 + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _0809ED38 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + ldr r0, _0809ED44 @ =0x0000fffc + strh r0, [r4, 0x26] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, 0x30] + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + bl __modsi3 + lsls r0, 24 + lsrs r0, 24 + bl sub_809DE20 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_809ED88 +_0809ED38: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809ED40: .4byte gUnknown_202063C +_0809ED44: .4byte 0x0000fffc + thumb_func_end sub_809ECD4 + + thumb_func_start sub_809ED48 +sub_809ED48: @ 809ED48 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x3A + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809ED84 @ =gUnknown_202063C + adds r2, r0, r1 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x26] + adds r0, 0x1 + strh r0, [r2, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _0809ED7C + movs r0, 0 + strh r0, [r2, 0x26] + movs r0, 0x1 + strh r0, [r4, 0x2E] +_0809ED7C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809ED84: .4byte gUnknown_202063C + thumb_func_end sub_809ED48 + + thumb_func_start sub_809ED88 +sub_809ED88: @ 809ED88 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _0809EDE0 @ =gUnknown_83E2388 + lsls r4, r5, 1 + adds r0, r4, r0 + ldrh r0, [r0] + bl sub_80089E8 + lsls r0, 4 + mov r1, r8 + ldrb r2, [r1, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + mov r0, r8 + strb r1, [r0, 0x5] + ldr r0, _0809EDE4 @ =gUnknown_83E238E + adds r4, r0 + ldrh r0, [r4] + bl sub_8008804 + adds r1, r6, 0 + adds r1, 0x40 + strh r0, [r1] + adds r6, 0x42 + movs r1, 0x3F + ands r1, r5 + ldrb r2, [r6] + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809EDE0: .4byte gUnknown_83E2388 +_0809EDE4: .4byte gUnknown_83E238E + thumb_func_end sub_809ED88 + + thumb_func_start sub_809EDE8 +sub_809EDE8: @ 809EDE8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _0809EE50 @ =gUnknown_83E25BC + movs r1, 0xCC + movs r2, 0x74 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r6, _0809EE54 @ =gUnknown_202063C + adds r4, r6 + ldr r0, _0809EE58 @ =gUnknown_83E2524 + mov r8, r0 + adds r0, r4, 0 + mov r1, r8 + bl sub_8008A58 + adds r4, 0x3E + ldrb r0, [r4] + movs r5, 0x4 + orrs r0, r5 + strb r0, [r4] + ldr r0, _0809EE5C @ =gUnknown_83E25D4 + movs r1, 0xCC + movs r2, 0x8C + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r4, r6 + adds r0, r4, 0 + mov r1, r8 + bl sub_8008A58 + adds r4, 0x3E + ldrb r0, [r4] + orrs r0, r5 + strb r0, [r4] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809EE50: .4byte gUnknown_83E25BC +_0809EE54: .4byte gUnknown_202063C +_0809EE58: .4byte gUnknown_83E2524 +_0809EE5C: .4byte gUnknown_83E25D4 + thumb_func_end sub_809EDE8 + + thumb_func_start sub_809EE60 +sub_809EE60: @ 809EE60 + push {r4-r6,lr} + ldr r5, _0809EF0C @ =gUnknown_203998C + ldr r0, [r5] + ldr r4, _0809EF10 @ =0x00001e16 + adds r0, r4 + ldrh r1, [r0] + subs r1, 0x5 + ldr r0, _0809EF14 @ =gUnknown_83E2604 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x38 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + ldr r3, _0809EF18 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r5] + adds r4, r0, r4 + ldrh r1, [r4] + movs r5, 0 + ldr r2, _0809EF1C @ =0x00001e28 + adds r0, r2 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r5, r0 + bcs _0809EF04 + adds r6, r3, 0 +_0809EEB2: + lsls r1, 16 + asrs r4, r1, 16 + movs r0, 0xC0 + lsls r0, 10 + adds r1, r0 + asrs r1, 16 + ldr r0, _0809EF20 @ =gUnknown_83E261C + movs r2, 0x3C + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + strh r5, [r0, 0x2E] + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x8 + lsls r4, 16 + lsrs r1, r4, 16 + ldr r0, _0809EF0C @ =gUnknown_203998C + ldr r0, [r0] + ldr r2, _0809EF1C @ =0x00001e28 + adds r0, r2 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r5, r0 + bcc _0809EEB2 +_0809EF04: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809EF0C: .4byte gUnknown_203998C +_0809EF10: .4byte 0x00001e16 +_0809EF14: .4byte gUnknown_83E2604 +_0809EF18: .4byte gUnknown_202063C +_0809EF1C: .4byte 0x00001e28 +_0809EF20: .4byte gUnknown_83E261C + thumb_func_end sub_809EE60 + + thumb_func_start sub_809EF24 +sub_809EF24: @ 809EF24 + push {lr} + ldr r1, _0809EF44 @ =gUnknown_83E2394 + ldr r0, _0809EF48 @ =gUnknown_203998C + ldr r0, [r0] + ldr r2, _0809EF4C @ =0x00001e28 + adds r0, r2 + ldr r0, [r0] + ldrb r0, [r0, 0x2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + bx r0 + .align 2, 0 +_0809EF44: .4byte gUnknown_83E2394 +_0809EF48: .4byte gUnknown_203998C +_0809EF4C: .4byte 0x00001e28 + thumb_func_end sub_809EF24 + + thumb_func_start nullsub_54 +nullsub_54: @ 809EF50 + bx lr + thumb_func_end nullsub_54 + + thumb_func_start sub_809EF54 +sub_809EF54: @ 809EF54 + push {lr} + sub sp, 0x4 + ldr r0, _0809EFA0 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809EFA4 @ =0x00001e34 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0 + bl sub_805C7C8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809EFA8 @ =nullsub_8 + movs r2, 0 + str r2, [sp] + movs r2, 0x38 + movs r3, 0x25 + bl sub_805E978 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0809EFAC @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + movs r1, 0x4 + bl sub_800838C + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0809EFA0: .4byte gUnknown_203998C +_0809EFA4: .4byte 0x00001e34 +_0809EFA8: .4byte nullsub_8 +_0809EFAC: .4byte gUnknown_202063C + thumb_func_end sub_809EF54 + + thumb_func_start sub_809EFB0 +sub_809EFB0: @ 809EFB0 + push {r4,lr} + ldr r0, _0809EFE4 @ =gUnknown_83E2634 + movs r1, 0x38 + movs r2, 0x29 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0809EFE8 @ =gUnknown_202063C + adds r4, r0 + ldr r1, _0809EFEC @ =gUnknown_83E252C + adds r0, r4, 0 + bl sub_8008A58 + ldrb r0, [r4, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r4, 0x5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809EFE4: .4byte gUnknown_83E2634 +_0809EFE8: .4byte gUnknown_202063C +_0809EFEC: .4byte gUnknown_83E252C + thumb_func_end sub_809EFB0 + + thumb_func_start sub_809EFF0 +sub_809EFF0: @ 809EFF0 + push {lr} + sub sp, 0xC + bl sub_809707C + ldr r0, _0809F038 @ =gUnknown_203998C + ldr r3, [r0] + ldr r1, _0809F03C @ =0x00001e34 + adds r0, r3, r1 + ldrh r0, [r0] + ldr r1, _0809F040 @ =nullsub_8 + movs r2, 0 + str r2, [sp] + ldr r2, _0809F044 @ =0x00001e38 + adds r3, r2 + ldr r2, [r3] + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] + movs r2, 0x38 + movs r3, 0x28 + bl sub_8096E18 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809F048 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x5] + movs r2, 0xC + orrs r0, r2 + strb r0, [r1, 0x5] + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0809F038: .4byte gUnknown_203998C +_0809F03C: .4byte 0x00001e34 +_0809F040: .4byte nullsub_8 +_0809F044: .4byte 0x00001e38 +_0809F048: .4byte gUnknown_202063C + thumb_func_end sub_809EFF0 + + thumb_func_start sub_809F04C +sub_809F04C: @ 809F04C + push {r4,lr} + sub sp, 0x2C + ldr r0, _0809F0B8 @ =gUnknown_83E23C0 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x1C] + str r1, [sp, 0x20] + ldr r0, _0809F0BC @ =gUnknown_83E23C8 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x24] + str r1, [sp, 0x28] + ldr r1, _0809F0C0 @ =nullsub_8 + add r3, sp, 0x18 + movs r0, 0 + mov r2, sp + bl sub_805E8E8 + mov r2, sp + add r0, sp, 0x1C + ldrh r1, [r0, 0x6] + strh r1, [r2] + add r4, sp, 0x24 + ldrh r1, [r4, 0x4] + strh r1, [r2, 0x2] + ldr r1, _0809F0C4 @ =gUnknown_83E23BC + str r1, [sp, 0x8] + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + mov r0, sp + movs r1, 0x38 + movs r2, 0x25 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809F0C8 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x5] + movs r2, 0xC + orrs r0, r2 + strb r0, [r1, 0x5] + add sp, 0x2C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809F0B8: .4byte gUnknown_83E23C0 +_0809F0BC: .4byte gUnknown_83E23C8 +_0809F0C0: .4byte nullsub_8 +_0809F0C4: .4byte gUnknown_83E23BC +_0809F0C8: .4byte gUnknown_202063C + thumb_func_end sub_809F04C + + thumb_func_start sub_809F0CC +sub_809F0CC: @ 809F0CC + push {r4,r5,lr} + bl sub_809F21C + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_809EB00 + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0x8 + bne _0809F0EA + bl sub_809F1F0 + b _0809F106 +_0809F0EA: + cmp r4, 0x6 + bne _0809F0F4 + bl sub_809F700 + b _0809F114 +_0809F0F4: + cmp r5, 0x9 + beq _0809F110 + ldr r1, _0809F10C @ =gUnknown_83E23D0 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_0809F106: + lsls r0, 24 + lsrs r0, 24 + b _0809F116 + .align 2, 0 +_0809F10C: .4byte gUnknown_83E23D0 +_0809F110: + bl sub_809E9F8 +_0809F114: + movs r0, 0 +_0809F116: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809F0CC + + thumb_func_start sub_809F11C +sub_809F11C: @ 809F11C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_809E518 + cmp r4, 0x5 + bne _0809F156 + bl sub_809F75C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_809EAA8 + cmp r4, 0 + beq _0809F156 + movs r0, 0 + bl sub_809F240 + ldr r0, _0809F160 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809F164 @ =0x00001e10 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] +_0809F156: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809F160: .4byte gUnknown_203998C +_0809F164: .4byte 0x00001e10 + thumb_func_end sub_809F11C + + thumb_func_start sub_809F168 +sub_809F168: @ 809F168 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_809E518 + cmp r4, 0x5 + beq _0809F182 + movs r0, 0 + b _0809F18A +_0809F182: + bl sub_809F1F0 + lsls r0, 24 + lsrs r0, 24 +_0809F18A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809F168 + + thumb_func_start sub_809F190 +sub_809F190: @ 809F190 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_809E518 + cmp r4, 0x5 + bne _0809F1AA + bl sub_809F700 +_0809F1AA: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809F190 + + thumb_func_start sub_809F1B4 +sub_809F1B4: @ 809F1B4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_809E518 + cmp r4, 0x5 + beq _0809F1CE + movs r0, 0 + b _0809F1E2 +_0809F1CE: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0809F1E8 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809F1EC @ =0x00001e10 + adds r0, r1 + movs r1, 0x6 + strb r1, [r0] + movs r0, 0x1 +_0809F1E2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809F1E8: .4byte gUnknown_203998C +_0809F1EC: .4byte 0x00001e10 + thumb_func_end sub_809F1B4 + + thumb_func_start sub_809F1F0 +sub_809F1F0: @ 809F1F0 + ldr r0, _0809F200 @ =gUnknown_203998C + ldr r0, [r0] + ldr r1, _0809F204 @ =0x00001e10 + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + movs r0, 0x1 + bx lr + .align 2, 0 +_0809F200: .4byte gUnknown_203998C +_0809F204: .4byte 0x00001e10 + thumb_func_end sub_809F1F0 + + thumb_func_start sub_809F208 +sub_809F208: @ 809F208 + push {lr} + ldr r0, _0809F218 @ =sub_809F26C + movs r1, 0x1 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0809F218: .4byte sub_809F26C + thumb_func_end sub_809F208 + + thumb_func_start sub_809F21C +sub_809F21C: @ 809F21C + push {lr} + ldr r0, _0809F238 @ =sub_809F26C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809F23C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r0, [r1, 0xA] + pop {r1} + bx r1 + .align 2, 0 +_0809F238: .4byte sub_809F26C +_0809F23C: .4byte gUnknown_3005090 + thumb_func_end sub_809F21C + + thumb_func_start sub_809F240 +sub_809F240: @ 809F240 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0809F264 @ =sub_809F26C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809F268 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809F264: .4byte sub_809F26C +_0809F268: .4byte gUnknown_3005090 + thumb_func_end sub_809F240 + + thumb_func_start sub_809F26C +sub_809F26C: @ 809F26C + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0809F294 @ =gUnknown_83E23E0 + ldr r2, _0809F298 @ =gUnknown_3005090 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x8 + ldrsh r1, [r0, r2] + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0809F294: .4byte gUnknown_83E23E0 +_0809F298: .4byte gUnknown_3005090 + thumb_func_end sub_809F26C + + thumb_func_start sub_809F29C +sub_809F29C: @ 809F29C + movs r1, 0 + strh r1, [r0, 0xA] + bx lr + thumb_func_end sub_809F29C + + thumb_func_start sub_809F2A4 +sub_809F2A4: @ 809F2A4 + push {lr} + adds r2, r0, 0 + movs r0, 0 + strh r0, [r2, 0xA] + ldr r0, _0809F2C0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0809F2C4 + movs r0, 0x5 + strh r0, [r2, 0xA] + b _0809F2F4 + .align 2, 0 +_0809F2C0: .4byte gUnknown_30030F0 +_0809F2C4: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0809F2D2 + movs r0, 0x6 + strh r0, [r2, 0xA] + b _0809F2F4 +_0809F2D2: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0809F2E0 + movs r0, 0x8 + strh r0, [r2, 0xA] + b _0809F2F4 +_0809F2E0: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0809F2EE + movs r0, 0x9 + strh r0, [r2, 0xA] + b _0809F2F4 +_0809F2EE: + adds r0, r2, 0 + bl sub_809F2F8 +_0809F2F4: + pop {r0} + bx r0 + thumb_func_end sub_809F2A4 + + thumb_func_start sub_809F2F8 +sub_809F2F8: @ 809F2F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + mov r9, r0 + ldr r1, _0809F3E4 @ =gUnknown_83E23E8 + mov r0, sp + movs r2, 0xA + bl memcpy + add r0, sp, 0xC + mov r10, r0 + ldr r1, _0809F3E8 @ =gUnknown_83E23F2 + movs r2, 0xA + bl memcpy + mov r1, sp + adds r1, 0x18 + str r1, [sp, 0x2C] + ldr r1, _0809F3EC @ =gUnknown_83E23FC + ldr r0, [sp, 0x2C] + movs r2, 0x8 + bl memcpy + mov r2, sp + adds r2, 0x20 + str r2, [sp, 0x30] + ldr r1, _0809F3F0 @ =gUnknown_83E2404 + adds r0, r2, 0 + movs r2, 0x6 + bl memcpy + add r4, sp, 0x28 + mov r5, sp + adds r5, 0x2A + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809E9CC + ldr r0, _0809F3F4 @ =gUnknown_30030F0 + ldrh r2, [r0, 0x30] + movs r0, 0x40 + ands r0, r2 + lsls r0, 16 + lsrs r0, 16 + negs r0, r0 + lsrs r1, r0, 31 + movs r0, 0x80 + ands r0, r2 + adds r6, r4, 0 + cmp r0, 0 + beq _0809F366 + movs r1, 0x2 +_0809F366: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _0809F370 + movs r1, 0x3 +_0809F370: + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + beq _0809F37A + movs r1, 0x4 +_0809F37A: + ldrh r0, [r6] + mov r8, r0 + lsls r1, 1 + mov r2, sp + adds r7, r2, r1 + ldrh r0, [r7] + add r0, r8 + strh r0, [r6] + add r1, r10 + ldrh r0, [r1] + ldrh r1, [r5] + adds r0, r1 + strh r0, [r5] + movs r2, 0 + ldrsh r0, [r6, r2] + cmp r0, 0 + bge _0809F3A6 + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6] +_0809F3A6: + movs r0, 0 + ldrsh r4, [r6, r0] + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + ble _0809F3BA + movs r0, 0 + strh r0, [r6] +_0809F3BA: + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r0, 0 + beq _0809F426 + movs r2, 0 + ldrsh r4, [r6, r2] + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0809F3F8 + ldrh r0, [r5] + mov r1, r9 + strh r0, [r1, 0xC] + movs r2, 0 + ldrsh r0, [r5, r2] + lsls r0, 1 + ldr r1, [sp, 0x2C] + adds r0, r1, r0 + b _0809F422 + .align 2, 0 +_0809F3E4: .4byte gUnknown_83E23E8 +_0809F3E8: .4byte gUnknown_83E23F2 +_0809F3EC: .4byte gUnknown_83E23FC +_0809F3F0: .4byte gUnknown_83E2404 +_0809F3F4: .4byte gUnknown_30030F0 +_0809F3F8: + mov r2, r8 + lsls r4, r2, 16 + asrs r4, 16 + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0809F426 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _0809F418 + mov r2, r9 + ldrh r0, [r2, 0xC] + b _0809F424 +_0809F418: + movs r1, 0 + ldrsh r0, [r5, r1] + lsls r0, 1 + ldr r2, [sp, 0x30] + adds r0, r2, r0 +_0809F422: + ldrh r0, [r0] +_0809F424: + strh r0, [r5] +_0809F426: + movs r0, 0 + ldrsh r4, [r6, r0] + bl sub_809EB40 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0809F468 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + bge _0809F442 + movs r0, 0x2 + strh r0, [r5] +_0809F442: + movs r2, 0 + ldrsh r0, [r5, r2] + cmp r0, 0x2 + ble _0809F44E + movs r0, 0 + strh r0, [r5] +_0809F44E: + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0809F45E + movs r0, 0x1 + mov r2, r9 + strh r0, [r2, 0xC] + b _0809F480 +_0809F45E: + cmp r0, 0x2 + bne _0809F480 + mov r1, r9 + strh r0, [r1, 0xC] + b _0809F480 +_0809F468: + movs r2, 0 + ldrsh r0, [r5, r2] + cmp r0, 0 + bge _0809F474 + movs r0, 0x3 + strh r0, [r5] +_0809F474: + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x3 + ble _0809F480 + movs r0, 0 + strh r0, [r5] +_0809F480: + movs r2, 0 + ldrsh r0, [r6, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_809E948 + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809F2F8 + + thumb_func_start sub_809F49C +sub_809F49C: @ 809F49C + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _0809F4E4 @ =gUnknown_203998C + ldr r0, [r5] + ldr r4, _0809F4E8 @ =0x00001e14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0809F4EC @ =0x00001e28 + adds r1, r2 + ldr r1, [r1] + ldr r2, [r1, 0x8] + movs r1, 0x1 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x1 + movs r3, 0x1 + bl sub_8002C48 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F4E4: .4byte gUnknown_203998C +_0809F4E8: .4byte 0x00001e14 +_0809F4EC: .4byte 0x00001e28 + thumb_func_end sub_809F49C + + thumb_func_start sub_809F4F0 +sub_809F4F0: @ 809F4F0 + push {r4,r5,lr} + sub sp, 0x2C + ldr r5, _0809F558 @ =gUnknown_203998C + ldr r0, [r5] + ldr r1, _0809F55C @ =0x00001e34 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0xB + muls r1, r0 + ldr r0, _0809F560 @ =gUnknown_8245EE0 + adds r1, r0 + add r0, sp, 0xC + bl sub_8008D84 + ldr r0, [r5] + ldr r1, _0809F564 @ =0x00001e28 + adds r0, r1 + ldr r0, [r0] + ldr r1, [r0, 0x8] + add r0, sp, 0xC + movs r2, 0xF + bl sub_8008DEC + ldr r0, [r5] + ldr r4, _0809F568 @ =0x00001e14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x1 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x1 + add r2, sp, 0xC + movs r3, 0x1 + bl sub_8002C48 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + add sp, 0x2C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F558: .4byte gUnknown_203998C +_0809F55C: .4byte 0x00001e34 +_0809F560: .4byte gUnknown_8245EE0 +_0809F564: .4byte 0x00001e28 +_0809F568: .4byte 0x00001e14 + thumb_func_end sub_809F4F0 + + thumb_func_start sub_809F56C +sub_809F56C: @ 809F56C + push {lr} + ldr r1, _0809F588 @ =gUnknown_83E240C + ldr r0, _0809F58C @ =gUnknown_203998C + ldr r0, [r0] + ldr r2, _0809F590 @ =0x00001e2c + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + bx r0 + .align 2, 0 +_0809F588: .4byte gUnknown_83E240C +_0809F58C: .4byte gUnknown_203998C +_0809F590: .4byte 0x00001e2c + thumb_func_end sub_809F56C + + thumb_func_start sub_809F594 +sub_809F594: @ 809F594 + push {lr} + ldr r1, _0809F5B4 @ =gUnknown_83E2420 + ldr r0, _0809F5B8 @ =gUnknown_203998C + ldr r0, [r0] + ldr r2, _0809F5BC @ =0x00001e28 + adds r0, r2 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + bx r0 + .align 2, 0 +_0809F5B4: .4byte gUnknown_83E2420 +_0809F5B8: .4byte gUnknown_203998C +_0809F5BC: .4byte 0x00001e28 + thumb_func_end sub_809F594 + + thumb_func_start nullsub_55 +nullsub_55: @ 809F5C0 + bx lr + thumb_func_end nullsub_55 + + thumb_func_start sub_809F5C4 +sub_809F5C4: @ 809F5C4 + push {r4,r5,lr} + sub sp, 0x10 + movs r4, 0 + ldr r1, _0809F61C @ =gUnknown_841621F + add r0, sp, 0xC + bl sub_8008D84 + ldr r5, _0809F620 @ =gUnknown_203998C + ldr r0, [r5] + ldr r1, _0809F624 @ =0x00001e36 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0xFF + beq _0809F614 + cmp r0, 0xFE + bne _0809F5EE + ldr r1, _0809F628 @ =gUnknown_8416221 + add r0, sp, 0xC + bl sub_8008D84 + movs r4, 0x1 +_0809F5EE: + ldr r0, [r5] + ldr r1, _0809F62C @ =0x00001e13 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r4, 1 + adds r1, r4 + ldr r2, _0809F630 @ =gUnknown_83E2428 + adds r1, r2 + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + add r1, sp, 0xC + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x68 + movs r3, 0x1 + bl sub_812E51C +_0809F614: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F61C: .4byte gUnknown_841621F +_0809F620: .4byte gUnknown_203998C +_0809F624: .4byte 0x00001e36 +_0809F628: .4byte gUnknown_8416221 +_0809F62C: .4byte 0x00001e13 +_0809F630: .4byte gUnknown_83E2428 + thumb_func_end sub_809F5C4 + + thumb_func_start sub_809F634 +sub_809F634: @ 809F634 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r6, _0809F664 @ =gUnknown_83E22D0 + bl sub_809DE50 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 13 + adds r4, r5 + lsls r0, 24 + lsrs r0, 19 + adds r4, r0 + adds r4, r6 + ldrb r0, [r4] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809F664: .4byte gUnknown_83E22D0 + thumb_func_end sub_809F634 + + thumb_func_start sub_809F668 +sub_809F668: @ 809F668 + push {r4,r5,lr} + movs r2, 0 + ldr r0, _0809F690 @ =gUnknown_203998C + ldr r4, [r0] + ldr r3, _0809F694 @ =0x00001e28 + adds r1, r4, r3 + ldr r1, [r1] + ldrb r3, [r1, 0x1] + adds r5, r0, 0 + cmp r2, r3 + bcs _0809F6A2 + movs r0, 0xC0 + lsls r0, 5 + adds r1, r4, r0 +_0809F684: + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0809F698 + adds r0, r2, 0 + b _0809F6B2 + .align 2, 0 +_0809F690: .4byte gUnknown_203998C +_0809F694: .4byte 0x00001e28 +_0809F698: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r3 + bcc _0809F684 +_0809F6A2: + ldr r0, [r5] + ldr r1, _0809F6B8 @ =0x00001e28 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 +_0809F6B2: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809F6B8: .4byte 0x00001e28 + thumb_func_end sub_809F668 + + thumb_func_start sub_809F6BC +sub_809F6BC: @ 809F6BC + push {lr} + ldr r0, _0809F6E8 @ =gUnknown_203998C + ldr r2, [r0] + ldr r1, _0809F6EC @ =0x00001e28 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + subs r0, 0x1 + lsls r1, r0, 24 + cmp r1, 0 + ble _0809F6F8 + movs r0, 0xC0 + lsls r0, 5 + adds r3, r2, r0 +_0809F6D8: + asrs r2, r1, 24 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0xFF + beq _0809F6F0 + lsrs r0, r1, 24 + b _0809F6FA + .align 2, 0 +_0809F6E8: .4byte gUnknown_203998C +_0809F6EC: .4byte 0x00001e28 +_0809F6F0: + subs r0, r2, 0x1 + lsls r1, r0, 24 + cmp r1, 0 + bgt _0809F6D8 +_0809F6F8: + movs r0, 0 +_0809F6FA: + pop {r1} + bx r1 + thumb_func_end sub_809F6BC + + thumb_func_start sub_809F700 +sub_809F700: @ 809F700 + push {r4-r6,lr} + bl sub_809F6BC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _0809F758 @ =gUnknown_203998C + ldr r0, [r6] + movs r5, 0xC0 + lsls r5, 5 + adds r0, r5 + adds r0, r4 + movs r1, 0 + strb r1, [r0] + bl sub_809F914 + movs r0, 0x3 + bl sub_80020BC + ldr r0, [r6] + adds r0, r5 + adds r0, r4 + movs r1, 0xFF + strb r1, [r0] + bl sub_809EB00 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0809F740 + cmp r0, 0x2 + bne _0809F74A +_0809F740: + movs r0, 0x1 + movs r1, 0 + movs r2, 0x1 + bl sub_809E518 +_0809F74A: + movs r0, 0x17 + bl sub_80722CC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809F758: .4byte gUnknown_203998C + thumb_func_end sub_809F700 + + thumb_func_start sub_809F75C +sub_809F75C: @ 809F75C + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_809E9CC + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_809F634 + lsls r0, 24 + lsrs r0, 24 + bl sub_809F7C4 + bl sub_809F914 + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x5 + bl sub_80722CC + bl sub_809F6BC + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809F7B0 @ =gUnknown_203998C + ldr r1, [r1] + ldr r2, _0809F7B4 @ =0x00001e28 + adds r1, r2 + ldr r1, [r1] + ldrb r1, [r1, 0x1] + subs r1, 0x1 + cmp r0, r1 + bne _0809F7B8 + movs r0, 0x1 + b _0809F7BA + .align 2, 0 +_0809F7B0: .4byte gUnknown_203998C +_0809F7B4: .4byte 0x00001e28 +_0809F7B8: + movs r0, 0 +_0809F7BA: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809F75C + + thumb_func_start sub_809F7C4 +sub_809F7C4: @ 809F7C4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_809F668 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809F7E8 @ =gUnknown_203998C + ldr r1, [r1] + movs r2, 0xC0 + lsls r2, 5 + adds r1, r2 + adds r1, r0 + strb r4, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809F7E8: .4byte gUnknown_203998C + thumb_func_end sub_809F7C4 + + thumb_func_start sub_809F7EC +sub_809F7EC: @ 809F7EC + push {r4,r5,lr} + movs r2, 0 + ldr r1, _0809F800 @ =gUnknown_203998C + ldr r0, [r1] + ldr r4, _0809F804 @ =0x00001e28 + adds r0, r4 + ldr r0, [r0] + adds r5, r1, 0 + b _0809F84C + .align 2, 0 +_0809F800: .4byte gUnknown_203998C +_0809F804: .4byte 0x00001e28 +_0809F808: + ldr r1, [r1] + movs r0, 0xC0 + lsls r0, 5 + adds r3, r1, r0 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0809F83C + cmp r0, 0xFF + beq _0809F83C + ldr r2, _0809F838 @ =0x00001e30 + adds r0, r1, r2 + ldr r0, [r0] + adds r1, r4 + ldr r1, [r1] + ldrb r2, [r1, 0x1] + adds r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + adds r1, r3, 0 + bl sub_8008DBC + b _0809F852 + .align 2, 0 +_0809F838: .4byte 0x00001e30 +_0809F83C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r1, r5, 0 + ldr r0, [r1] + ldr r4, _0809F858 @ =0x00001e28 + adds r0, r4 + ldr r0, [r0] +_0809F84C: + ldrb r0, [r0, 0x1] + cmp r2, r0 + bcc _0809F808 +_0809F852: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F858: .4byte 0x00001e28 + thumb_func_end sub_809F7EC + + thumb_func_start sub_809F85C +sub_809F85C: @ 809F85C + push {r4-r6,lr} + ldr r0, _0809F8AC @ =gUnknown_8E980E4 + ldr r6, _0809F8B0 @ =gUnknown_203998C + ldr r1, [r6] + ldr r4, _0809F8B4 @ =0x00001810 + adds r1, r4 + bl LZ77UnCompWram + ldr r1, [r6] + adds r1, r4 + movs r5, 0xC0 + lsls r5, 3 + movs r0, 0x1 + adds r2, r5, 0 + movs r3, 0 + bl sub_80017D0 + ldr r1, [r6] + adds r1, r4 + movs r0, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_80017D0 + ldr r1, [r6] + adds r1, r4 + movs r0, 0x3 + adds r2, r5, 0 + movs r3, 0 + bl sub_80017D0 + ldr r0, _0809F8B8 @ =gUnknown_83E267C + bl sub_8008720 + ldr r0, _0809F8BC @ =gUnknown_83E26E4 + bl sub_8008974 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809F8AC: .4byte gUnknown_8E980E4 +_0809F8B0: .4byte gUnknown_203998C +_0809F8B4: .4byte 0x00001810 +_0809F8B8: .4byte gUnknown_83E267C +_0809F8BC: .4byte gUnknown_83E26E4 + thumb_func_end sub_809F85C + + thumb_func_start sub_809F8C0 +sub_809F8C0: @ 809F8C0 + push {lr} + bl sub_809F208 + bl sub_809E4F0 + pop {r0} + bx r0 + thumb_func_end sub_809F8C0 + + thumb_func_start sub_809F8D0 +sub_809F8D0: @ 809F8D0 + push {lr} + ldr r0, _0809F8F8 @ =gUnknown_8E98024 + movs r1, 0 + movs r2, 0xC0 + bl sub_80703EC + ldr r0, _0809F8FC @ =gUnknown_8E97FE4 + movs r1, 0xA0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xB0 + movs r2, 0x20 + bl sub_80703EC + pop {r0} + bx r0 + .align 2, 0 +_0809F8F8: .4byte gUnknown_8E98024 +_0809F8FC: .4byte gUnknown_8E97FE4 + thumb_func_end sub_809F8D0 + + thumb_func_start sub_809F900 +sub_809F900: @ 809F900 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + pop {r0} + bx r0 + thumb_func_end sub_809F900 + + thumb_func_start sub_809F914 +sub_809F914: @ 809F914 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r7, _0809F9D8 @ =gUnknown_203998C + ldr r1, [r7] + ldr r2, _0809F9DC @ =0x00001e28 + adds r0, r1, r2 + ldr r0, [r0] + ldrb r6, [r0, 0x1] + subs r2, 0x12 + adds r0, r1, r2 + ldrh r0, [r0] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + ldr r0, _0809F9E0 @ =0x00001e13 + adds r1, r0 + ldrb r0, [r1] + movs r1, 0x11 + bl sub_800445C + movs r4, 0 + cmp r4, r6 + bcs _0809F9AA + add r5, sp, 0xC + mov r10, r4 + ldr r0, _0809F9E4 @ =gUnknown_8415A20 + ldrb r0, [r0] + mov r8, r0 +_0809F956: + ldr r0, [r7] + movs r1, 0xC0 + lsls r1, 5 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r5] + mov r2, r8 + strb r2, [r5, 0x1] + ldrb r0, [r5] + bl sub_809FC54 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + cmp r0, 0x1 + bne _0809F97A + movs r1, 0x2 +_0809F97A: + ldr r0, [r7] + ldr r2, _0809F9E0 @ =0x00001e13 + adds r0, r2 + ldrb r0, [r0] + lsls r3, r4, 3 + add r3, r9 + adds r3, r1 + lsls r3, 24 + lsrs r3, 24 + movs r1, 0x1 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + mov r1, r10 + str r1, [sp, 0x8] + movs r1, 0x2 + add r2, sp, 0xC + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _0809F956 +_0809F9AA: + bl sub_809F594 + ldr r5, _0809F9D8 @ =gUnknown_203998C + ldr r0, [r5] + ldr r4, _0809F9E0 @ =0x00001e13 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809F9D8: .4byte gUnknown_203998C +_0809F9DC: .4byte 0x00001e28 +_0809F9E0: .4byte 0x00001e13 +_0809F9E4: .4byte gUnknown_8415A20 + thumb_func_end sub_809F914 + + thumb_func_start sub_809F9E8 +sub_809F9E8: @ 809F9E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _0809FA54 @ =gUnknown_83E243C + adds r0, r5, r0 + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_800445C + movs r4, 0 + ldr r1, _0809FA58 @ =gUnknown_83E2440 + lsls r0, r5, 2 + adds r0, r1 + ldr r7, [r0] + ldr r0, _0809FA5C @ =gUnknown_83E264C + mov r8, r0 +_0809FA12: + lsls r3, r4, 4 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + str r7, [sp] + movs r0, 0 + str r0, [sp, 0x4] + lsls r0, r4, 2 + lsls r1, r5, 4 + adds r0, r1 + add r0, r8 + ldr r0, [r0] + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_812E51C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _0809FA12 + adds r0, r6, 0 + bl sub_8003FA0 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809FA54: .4byte gUnknown_83E243C +_0809FA58: .4byte gUnknown_83E2440 +_0809FA5C: .4byte gUnknown_83E264C + thumb_func_end sub_809F9E8 + + thumb_func_start sub_809FA60 +sub_809FA60: @ 809FA60 + push {r4,r5,lr} + movs r0, 0xA + bl sub_8000AC4 + adds r4, r0, 0 + movs r5, 0x3 + ands r4, r5 + movs r0, 0xC + bl sub_8000AC4 + ands r0, r5 + cmp r4, r0 + bls _0809FA90 + movs r2, 0x1 + movs r5, 0x1 + ldr r1, _0809FA88 @ =gUnknown_203998C + ldr r0, [r1] + ldr r3, _0809FA8C @ =0x00001e11 + b _0809FA9A + .align 2, 0 +_0809FA88: .4byte gUnknown_203998C +_0809FA8C: .4byte 0x00001e11 +_0809FA90: + movs r2, 0x2 + movs r5, 0x2 + ldr r1, _0809FAD4 @ =gUnknown_203998C + ldr r0, [r1] + ldr r3, _0809FAD8 @ =0x00001e12 +_0809FA9A: + adds r0, r3 + ldrb r4, [r0] + adds r0, r1, 0 + ldr r1, _0809FADC @ =gUnknown_83E244C + ldr r0, [r0] + ldr r3, _0809FAE0 @ =0x00001e22 + adds r0, r3 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r2, 0 + bl sub_809F900 + bl sub_809DE30 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_809F9E8 + adds r0, r5, 0 + bl sub_80020BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809FAD4: .4byte gUnknown_203998C +_0809FAD8: .4byte 0x00001e12 +_0809FADC: .4byte gUnknown_83E244C +_0809FAE0: .4byte 0x00001e22 + thumb_func_end sub_809FA60 + + thumb_func_start sub_809FAE4 +sub_809FAE4: @ 809FAE4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + ldr r1, _0809FB60 @ =gUnknown_83E2458 + add r0, sp, 0xC + movs r2, 0x3 + bl memcpy + ldr r0, _0809FB64 @ =gUnknown_8418E77 + mov r8, r0 + movs r0, 0 + mov r1, r8 + movs r2, 0 + bl sub_8005ED4 + adds r6, r0, 0 + ldr r5, _0809FB68 @ =gUnknown_203998C + ldr r0, [r5] + ldr r4, _0809FB6C @ =0x00001e15 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0xFF + bl sub_800445C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x14 + negs r1, r1 + adds r2, r1, 0 + subs r2, r6 + lsls r2, 24 + lsrs r2, 24 + add r1, sp, 0xC + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + movs r1, 0 + movs r3, 0 + bl sub_812E51C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809FB60: .4byte gUnknown_83E2458 +_0809FB64: .4byte gUnknown_8418E77 +_0809FB68: .4byte gUnknown_203998C +_0809FB6C: .4byte 0x00001e15 + thumb_func_end sub_809FAE4 + + thumb_func_start sub_809FB70 +sub_809FB70: @ 809FB70 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_809FB70 + + thumb_func_start sub_809FB88 +sub_809FB88: @ 809FB88 + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_809FB88 + + thumb_func_start sub_809FB9C +sub_809FB9C: @ 809FB9C + push {lr} + ldr r0, _0809FBA8 @ =sub_809FBAC + bl sub_80006F4 + pop {r0} + bx r0 + .align 2, 0 +_0809FBA8: .4byte sub_809FBAC + thumb_func_end sub_809FB9C + + thumb_func_start sub_809FBAC +sub_809FBAC: @ 809FBAC + push {r4,r5,lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + ldr r5, _0809FC1C @ =gUnknown_203998C + ldr r0, [r5] + ldr r1, _0809FC20 @ =0x00001e18 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x16 + bl sub_8000A38 + ldr r0, [r5] + ldr r1, _0809FC24 @ =0x00001e1a + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x1A + bl sub_8000A38 + movs r0, 0xA + bl sub_8000AC4 + ldr r4, _0809FC28 @ =0x0000fffc + adds r1, r4, 0 + ands r1, r0 + movs r0, 0xA + bl sub_8000A38 + ldr r0, [r5] + ldr r1, _0809FC2C @ =0x00001e1c + adds r0, r1 + ldrh r1, [r0] + movs r0, 0xA + bl sub_8000AF4 + movs r0, 0xC + bl sub_8000AC4 + ands r4, r0 + movs r0, 0xC + adds r1, r4, 0 + bl sub_8000A38 + ldr r0, [r5] + ldr r1, _0809FC30 @ =0x00001e1e + adds r0, r1 + ldrh r1, [r0] + movs r0, 0xC + bl sub_8000AF4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809FC1C: .4byte gUnknown_203998C +_0809FC20: .4byte 0x00001e18 +_0809FC24: .4byte 0x00001e1a +_0809FC28: .4byte 0x0000fffc +_0809FC2C: .4byte 0x00001e1c +_0809FC30: .4byte 0x00001e1e + thumb_func_end sub_809FBAC + + thumb_func_start sub_809FC34 +sub_809FC34: @ 809FC34 + push {lr} + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + pop {r0} + bx r0 + thumb_func_end sub_809FC34 + + thumb_func_start sub_809FC54 +sub_809FC54: @ 809FC54 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r2, 0 + ldr r0, _0809FC74 @ =gUnknown_8418E8A + ldrb r1, [r0] + adds r3, r0, 0 + cmp r1, 0xFF + beq _0809FC86 + adds r1, r3, 0 +_0809FC68: + adds r0, r2, r1 + ldrb r0, [r0] + cmp r4, r0 + bne _0809FC78 + movs r0, 0x1 + b _0809FC88 + .align 2, 0 +_0809FC74: .4byte gUnknown_8418E8A +_0809FC78: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0809FC68 +_0809FC86: + movs r0, 0 +_0809FC88: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809FC54 + + thumb_func_start sub_809FC90 +sub_809FC90: @ 809FC90 + push {lr} + sub sp, 0x8 + ldr r0, _0809FCB0 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r2, [r1, 0x8] + movs r0, 0 + str r0, [sp] + ldr r0, _0809FCB4 @ =sub_80568A8 + str r0, [sp, 0x4] + movs r0, 0 + movs r3, 0 + bl sub_809D954 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809FCB0: .4byte gUnknown_300500C +_0809FCB4: .4byte sub_80568A8 + thumb_func_end sub_809FC90 + + thumb_func_start sub_809FCB8 +sub_809FCB8: @ 809FCB8 + push {lr} + sub sp, 0x8 + ldr r0, _0809FCD8 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r2, [r1, 0x8] + movs r0, 0 + str r0, [sp] + ldr r0, _0809FCDC @ =sub_80568A8 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r3, 0 + bl sub_809D954 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809FCD8: .4byte gUnknown_300500C +_0809FCDC: .4byte sub_80568A8 + thumb_func_end sub_809FCB8 + + thumb_func_start sub_809FCE0 +sub_809FCE0: @ 809FCE0 + push {lr} + sub sp, 0x8 + ldr r0, _0809FD00 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r2, [r1, 0x8] + movs r0, 0 + str r0, [sp] + ldr r0, _0809FD04 @ =sub_80568A8 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r3, 0 + bl sub_809D954 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809FD00: .4byte gUnknown_300500C +_0809FD04: .4byte sub_80568A8 + thumb_func_end sub_809FCE0 + + thumb_func_start sub_809FD08 +sub_809FD08: @ 809FD08 + push {lr} + sub sp, 0x8 + ldr r0, _0809FD28 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r2, [r1, 0x8] + movs r0, 0 + str r0, [sp] + ldr r0, _0809FD2C @ =sub_80568A8 + str r0, [sp, 0x4] + movs r0, 0x3 + movs r3, 0 + bl sub_809D954 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809FD28: .4byte gUnknown_300500C +_0809FD2C: .4byte sub_80568A8 + thumb_func_end sub_809FD08 + + thumb_func_start sub_809FD30 +sub_809FD30: @ 809FD30 + push {lr} + sub sp, 0x8 + ldr r0, _0809FD50 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r2, [r1, 0x8] + movs r0, 0 + str r0, [sp] + ldr r0, _0809FD54 @ =sub_80568A8 + str r0, [sp, 0x4] + movs r0, 0x4 + movs r3, 0 + bl sub_809D954 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809FD50: .4byte gUnknown_300500C +_0809FD54: .4byte sub_80568A8 + thumb_func_end sub_809FD30 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/new_game.s b/asm/new_game.s new file mode 100644 index 000000000..83d6bfabe --- /dev/null +++ b/asm/new_game.s @@ -0,0 +1,340 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80548FC +sub_80548FC: @ 80548FC + strb r0, [r1] + lsrs r2, r0, 8 + strb r2, [r1, 0x1] + lsrs r2, r0, 16 + strb r2, [r1, 0x2] + lsrs r0, 24 + strb r0, [r1, 0x3] + bx lr + thumb_func_end sub_80548FC + + thumb_func_start sub_805490C +sub_805490C: @ 805490C + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + movs r2, 0 +_08054914: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _08054914 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805490C + + thumb_func_start sub_8054928 +sub_8054928: @ 8054928 + push {r4,lr} + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_800058C + lsls r4, 16 + lsls r0, 16 + lsrs r0, 16 + orrs r4, r0 + ldr r0, _08054950 @ =gUnknown_300500C + ldr r1, [r0] + adds r1, 0xA + adds r0, r4, 0 + bl sub_80548FC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054950: .4byte gUnknown_300500C + thumb_func_end sub_8054928 + + thumb_func_start sub_8054954 +sub_8054954: @ 8054954 + ldr r3, _080549A8 @ =gUnknown_300500C + ldr r2, [r3] + ldrb r1, [r2, 0x14] + movs r0, 0x8 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x14] + ldr r2, [r3] + ldrb r1, [r2, 0x14] + movs r0, 0x7 + ands r0, r1 + strb r0, [r2, 0x14] + ldr r2, [r3] + ldrb r1, [r2, 0x15] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x15] + ldr r2, [r3] + ldrb r1, [r2, 0x15] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x15] + ldr r2, [r3] + ldrb r1, [r2, 0x15] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x15] + ldr r2, [r3] + ldrb r1, [r2, 0x15] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x15] + ldr r1, [r3] + movs r0, 0 + strb r0, [r1, 0x13] + bx lr + .align 2, 0 +_080549A8: .4byte gUnknown_300500C + thumb_func_end sub_8054954 + + thumb_func_start sub_80549AC +sub_80549AC: @ 80549AC + push {r4,lr} + ldr r4, _080549D0 @ =gUnknown_300500C + ldr r0, [r4] + adds r0, 0x28 + movs r1, 0 + movs r2, 0x34 + bl memset + ldr r0, [r4] + adds r0, 0x5C + movs r1, 0 + movs r2, 0x34 + bl memset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080549D0: .4byte gUnknown_300500C + thumb_func_end sub_80549AC + + thumb_func_start sub_80549D4 +sub_80549D4: @ 80549D4 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r0, _080549F0 @ =gUnknown_300500C + ldr r1, [r0] + adds r1, 0xB0 + ldr r2, _080549F4 @ =0x050001fa + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080549F0: .4byte gUnknown_300500C +_080549F4: .4byte 0x050001fa + thumb_func_end sub_80549D4 + + thumb_func_start sub_80549F8 +sub_80549F8: @ 80549F8 + push {lr} + sub sp, 0x4 + movs r2, 0x1 + negs r2, r2 + movs r0, 0x6 + str r0, [sp] + movs r0, 0x4 + movs r1, 0x1 + movs r3, 0x6 + bl sub_805538C + bl sub_8055378 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80549F8 + + thumb_func_start sub_8054A18 +sub_8054A18: @ 8054A18 + push {lr} + bl sub_804C010 + bl sub_8054954 + pop {r0} + bx r0 + thumb_func_end sub_8054A18 + + thumb_func_start sub_8054A28 +sub_8054A28: @ 8054A28 + push {lr} + ldr r1, _08054A5C @ =gUnknown_2031DB0 + movs r0, 0 + strb r0, [r1] + bl sub_803DA14 + bl sub_803DA34 + bl sub_81089BC + bl sub_81320AC + bl sub_813D6E4 + bl sub_811089C + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8083214 + bl sub_806E6FC + pop {r0} + bx r0 + .align 2, 0 +_08054A5C: .4byte gUnknown_2031DB0 + thumb_func_end sub_8054A28 + + thumb_func_start sub_8054A60 +sub_8054A60: @ 8054A60 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + ldr r6, _08054B50 @ =gUnknown_3005008 + ldr r1, [r6] + ldr r0, _08054B54 @ =0x00003a4c + mov r8, r0 + add r1, r8 + mov r0, sp + bl sub_8008D84 + ldr r1, _08054B58 @ =gUnknown_2031DB0 + movs r0, 0x1 + strb r0, [r1] + ldr r4, _08054B5C @ =gUnknown_300500C + ldr r0, [r4] + movs r1, 0xF2 + lsls r1, 4 + adds r0, r1 + movs r5, 0 + str r5, [r0] + bl sub_803DA14 + bl sub_803DA34 + bl sub_80549D4 + bl sub_804C034 + bl sub_8097C84 + ldr r0, [r4] + strb r5, [r0, 0x9] + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0xA8 + str r5, [r1] + adds r0, 0xAC + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xAD + strb r5, [r0] + bl sub_8054928 + bl sub_8054814 + bl sub_80549AC + bl sub_806E0D0 + bl sub_812D304 + ldr r0, [r6] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + ldr r1, _08054B60 @ =0x00000bb8 + bl sub_809FD70 + bl sub_8054E68 + bl sub_80CD8DC + bl sub_80A0904 + bl sub_80A0958 + bl sub_806E190 + ldr r0, _08054B64 @ =gUnknown_2024029 + strb r5, [r0] + bl sub_803DA14 + bl sub_808C7E0 + bl sub_8141C54 + ldr r0, [r6] + ldr r1, _08054B68 @ =0x00000296 + adds r0, r1 + strh r5, [r0] + bl sub_809A2DC + bl sub_80EB658 + bl sub_809C794 + bl sub_80BDD34 + bl sub_8113044 + bl sub_8129820 + bl sub_8054B70 + bl sub_8143D24 + bl sub_815D838 + bl sub_80549F8 + ldr r0, _08054B6C @ =gUnknown_81A6481 + bl sub_8069B48 + ldr r0, [r6] + add r0, r8 + mov r1, sp + bl sub_8008D84 + bl sub_815EE0C + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08054B50: .4byte gUnknown_3005008 +_08054B54: .4byte 0x00003a4c +_08054B58: .4byte gUnknown_2031DB0 +_08054B5C: .4byte gUnknown_300500C +_08054B60: .4byte 0x00000bb8 +_08054B64: .4byte gUnknown_2024029 +_08054B68: .4byte 0x00000296 +_08054B6C: .4byte gUnknown_81A6481 + thumb_func_end sub_8054A60 + + thumb_func_start sub_8054B70 +sub_8054B70: @ 8054B70 + push {r4-r6,lr} + sub sp, 0x4 + mov r0, sp + movs r5, 0 + strh r5, [r0] + ldr r4, _08054BBC @ =gUnknown_300500C + ldr r1, [r4] + movs r0, 0xAF + lsls r0, 4 + adds r1, r0 + ldr r6, _08054BC0 @ =0x01000008 + mov r0, sp + adds r2, r6, 0 + bl CpuSet + ldr r0, [r4] + ldr r1, _08054BC4 @ =0x00000af8 + adds r0, r1 + movs r1, 0 + bl sub_815EE54 + bl sub_814B47C + mov r0, sp + adds r0, 0x2 + strh r5, [r0] + ldr r1, [r4] + movs r2, 0xB1 + lsls r2, 4 + adds r1, r2 + adds r2, r6, 0 + bl CpuSet + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08054BBC: .4byte gUnknown_300500C +_08054BC0: .4byte 0x01000008 +_08054BC4: .4byte 0x00000af8 + thumb_func_end sub_8054B70 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s new file mode 100644 index 000000000..983e4eb09 --- /dev/null +++ b/asm/new_menu_helpers.s @@ -0,0 +1,2497 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F6790 +sub_80F6790: @ 80F6790 + push {lr} + ldr r0, _080F67A0 @ =gUnknown_203AB58 + movs r1, 0 + movs r2, 0x4 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_080F67A0: .4byte gUnknown_203AB58 + thumb_func_end sub_80F6790 + + thumb_func_start sub_80F67A4 +sub_80F67A4: @ 80F67A4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080F67B4 @ =gUnknown_203AB58 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + bx lr + .align 2, 0 +_080F67B4: .4byte gUnknown_203AB58 + thumb_func_end sub_80F67A4 + + thumb_func_start sub_80F67B8 +sub_80F67B8: @ 80F67B8 + push {r4,lr} + ldr r4, _080F6804 @ =gUnknown_203AB58 + ldrb r0, [r4] + cmp r0, 0x1 + bne _080F67CC + movs r0, 0 + bl sub_80020BC + movs r0, 0 + strb r0, [r4] +_080F67CC: + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + bne _080F67DC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + strb r0, [r4, 0x1] +_080F67DC: + ldrb r0, [r4, 0x2] + cmp r0, 0x1 + bne _080F67EC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0 + strb r0, [r4, 0x2] +_080F67EC: + ldrb r0, [r4, 0x3] + cmp r0, 0x1 + bne _080F67FC + movs r0, 0x3 + bl sub_80020BC + movs r0, 0 + strb r0, [r4, 0x3] +_080F67FC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6804: .4byte gUnknown_203AB58 + thumb_func_end sub_80F67B8 + + thumb_func_start sub_80F6808 +sub_80F6808: @ 80F6808 + push {lr} + ldr r3, _080F6824 @ =gUnknown_203AB5C + ldr r1, _080F6828 @ =gUnknown_203AB60 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0x7C +_080F6814: + str r2, [r0] + subs r0, 0x4 + cmp r0, r1 + bge _080F6814 + movs r0, 0 + strh r0, [r3] + pop {r0} + bx r0 + .align 2, 0 +_080F6824: .4byte gUnknown_203AB5C +_080F6828: .4byte gUnknown_203AB60 + thumb_func_end sub_80F6808 + + thumb_func_start sub_80F682C +sub_80F682C: @ 80F682C + push {r4-r6,lr} + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _080F6870 + ldr r1, _080F6868 @ =gUnknown_203AB5C + ldrh r0, [r1] + cmp r0, 0 + beq _080F6864 + movs r4, 0 + ldrh r1, [r1] + cmp r4, r1 + bge _080F685E + ldr r5, _080F686C @ =gUnknown_203AB60 + movs r6, 0 +_080F684C: + ldr r0, [r5] + bl sub_8002BC4 + stm r5!, {r6} + adds r4, 0x1 + ldr r0, _080F6868 @ =gUnknown_203AB5C + ldrh r0, [r0] + cmp r4, r0 + blt _080F684C +_080F685E: + ldr r1, _080F6868 @ =gUnknown_203AB5C + movs r0, 0 + strh r0, [r1] +_080F6864: + movs r0, 0 + b _080F6872 + .align 2, 0 +_080F6868: .4byte gUnknown_203AB5C +_080F686C: .4byte gUnknown_203AB60 +_080F6870: + movs r0, 0x1 +_080F6872: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80F682C + + thumb_func_start sub_80F6878 +sub_80F6878: @ 80F6878 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r4, r1, 0 + adds r5, r2, 0 + ldr r1, [sp, 0x24] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r6, _080F68D8 @ =gUnknown_203AB5C + ldrh r0, [r6] + cmp r0, 0x1F + bhi _080F68E0 + adds r0, r4, 0 + add r1, sp, 0x4 + bl sub_80F6AA0 + adds r4, r0, 0 + cmp r5, 0 + bne _080F68B0 + ldr r5, [sp, 0x4] +_080F68B0: + cmp r4, 0 + beq _080F68D4 + lsls r2, r5, 16 + lsrs r2, 16 + str r7, [sp] + mov r0, r8 + adds r1, r4, 0 + mov r3, r9 + bl sub_80F6AD0 + ldr r2, _080F68DC @ =gUnknown_203AB60 + ldrh r0, [r6] + adds r1, r0, 0x1 + strh r1, [r6] + lsls r0, 16 + lsrs r0, 14 + adds r0, r2 + str r4, [r0] +_080F68D4: + adds r0, r4, 0 + b _080F68E2 + .align 2, 0 +_080F68D8: .4byte gUnknown_203AB5C +_080F68DC: .4byte gUnknown_203AB60 +_080F68E0: + movs r0, 0 +_080F68E2: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80F6878 + + thumb_func_start sub_80F68F0 +sub_80F68F0: @ 80F68F0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r4, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x24] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r5, _080F6954 @ =gUnknown_203AB5C + ldrh r0, [r5] + cmp r0, 0x1F + bhi _080F695C + adds r0, r4, 0 + add r1, sp, 0x4 + bl sub_80F6AA0 + adds r4, r0, 0 + ldr r0, [sp, 0x4] + cmp r0, r6 + bls _080F692A + str r6, [sp, 0x4] +_080F692A: + cmp r4, 0 + beq _080F6950 + ldr r2, [sp, 0x4] + lsls r2, 16 + lsrs r2, 16 + str r7, [sp] + mov r0, r8 + adds r1, r4, 0 + mov r3, r9 + bl sub_80F6AD0 + ldr r2, _080F6958 @ =gUnknown_203AB60 + ldrh r0, [r5] + adds r1, r0, 0x1 + strh r1, [r5] + lsls r0, 16 + lsrs r0, 14 + adds r0, r2 + str r4, [r0] +_080F6950: + adds r0, r4, 0 + b _080F695E + .align 2, 0 +_080F6954: .4byte gUnknown_203AB5C +_080F6958: .4byte gUnknown_203AB60 +_080F695C: + movs r0, 0 +_080F695E: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80F68F0 + + thumb_func_start sub_80F696C +sub_80F696C: @ 80F696C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r5, r2, 0 + ldr r2, [sp, 0x24] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + lsls r2, 24 + lsrs r7, r2, 24 + adds r0, r1, 0 + add r1, sp, 0x4 + bl sub_80F6AA0 + adds r6, r0, 0 + cmp r5, 0 + bne _080F699A + ldr r5, [sp, 0x4] +_080F699A: + cmp r6, 0 + beq _080F69D2 + ldr r0, _080F69E0 @ =sub_80F6A64 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r2, r5, 16 + lsrs r2, 16 + str r7, [sp] + mov r0, r8 + adds r1, r6, 0 + mov r3, r9 + bl sub_80F6AD0 + ldr r2, _080F69E4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x1 + adds r2, r6, 0 + bl sub_80776E8 +_080F69D2: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F69E0: .4byte sub_80F6A64 +_080F69E4: .4byte gUnknown_3005090 + thumb_func_end sub_80F696C + + thumb_func_start sub_80F69E8 +sub_80F69E8: @ 80F69E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r4, r2, 0 + ldr r2, [sp, 0x20] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r3, 16 + lsrs r3, 16 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + adds r0, r1, 0 + add r1, sp, 0x4 + bl sub_80F6AA0 + adds r5, r0, 0 + ldr r0, [sp, 0x4] + cmp r0, r4 + bls _080F6A14 + str r4, [sp, 0x4] +_080F6A14: + cmp r5, 0 + beq _080F6A4E + ldr r0, _080F6A5C @ =sub_80F6A64 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, [sp, 0x4] + lsls r2, 16 + lsrs r2, 16 + str r6, [sp] + adds r0, r7, 0 + adds r1, r5, 0 + mov r3, r8 + bl sub_80F6AD0 + ldr r2, _080F6A60 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + strh r0, [r1, 0x8] + adds r0, r4, 0 + movs r1, 0x1 + adds r2, r5, 0 + bl sub_80776E8 +_080F6A4E: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F6A5C: .4byte sub_80F6A64 +_080F6A60: .4byte gUnknown_3005090 + thumb_func_end sub_80F69E8 + + thumb_func_start sub_80F6A64 +sub_80F6A64: @ 80F6A64 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080F6A9C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + bl sub_8000FE8 + lsls r0, 16 + cmp r0, 0 + bne _080F6A94 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8077720 + bl sub_8002BC4 + adds r0, r4, 0 + bl sub_8077508 +_080F6A94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6A9C: .4byte gUnknown_3005090 + thumb_func_end sub_80F6A64 + + thumb_func_start sub_80F6AA0 +sub_80F6AA0: @ 80F6AA0 + push {r4,r5,lr} + adds r5, r0, 0 + ldrb r0, [r5, 0x1] + strb r0, [r1] + ldrb r0, [r5, 0x2] + strb r0, [r1, 0x1] + ldrb r0, [r5, 0x3] + strb r0, [r1, 0x2] + movs r0, 0 + strb r0, [r1, 0x3] + ldr r0, [r1] + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + beq _080F6AC8 + adds r0, r5, 0 + adds r1, r4, 0 + bl LZ77UnCompWram +_080F6AC8: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80F6AA0 + + thumb_func_start sub_80F6AD0 +sub_80F6AD0: @ 80F6AD0 + push {r4,lr} + adds r4, r1, 0 + ldr r1, [sp, 0x8] + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + beq _080F6AEE + cmp r1, 0x1 + beq _080F6AF6 +_080F6AEE: + adds r1, r4, 0 + bl sub_80017D0 + b _080F6AFC +_080F6AF6: + adds r1, r4, 0 + bl sub_8001888 +_080F6AFC: + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80F6AD0 + + thumb_func_start sub_80F6B08 +sub_80F6B08: @ 80F6B08 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r2, 0 + ldr r4, [sp, 0x28] + ldr r2, [sp, 0x2C] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + lsls r5, 24 + lsrs r5, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x4] + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + bl sub_8002008 + mov r8, r0 + adds r0, r5, r4 + cmp r5, r0 + bge _080F6B80 + mov r9, r0 +_080F6B46: + ldr r3, [sp] + ldr r1, [sp, 0x4] + adds r0, r3, r1 + adds r7, r5, 0x1 + cmp r3, r0 + bge _080F6B78 + lsls r6, r5, 5 + ldr r1, _080F6B90 @ =0x00000fff + mov r12, r1 + mov r1, r10 + lsls r5, r1, 12 + adds r4, r0, 0 +_080F6B5E: + adds r1, r6, r3 + lsls r1, 1 + add r1, r8 + ldrh r2, [r1] + mov r0, r12 + ands r0, r2 + orrs r0, r5 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r4 + blt _080F6B5E +_080F6B78: + lsls r0, r7, 24 + lsrs r5, r0, 24 + cmp r5, r9 + blt _080F6B46 +_080F6B80: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F6B90: .4byte 0x00000fff + thumb_func_end sub_80F6B08 + + thumb_func_start sub_80F6B94 +sub_80F6B94: @ 80F6B94 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r1 + ldr r1, [sp, 0x24] + ldr r4, [sp, 0x28] + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp] + lsls r1, 24 + lsrs r5, r1, 24 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + bl sub_8002008 + adds r7, r0, 0 + movs r0, 0 + cmp r0, r8 + bcs _080F6C02 +_080F6BCC: + movs r2, 0 + adds r6, r0, 0x1 + cmp r2, r5 + bcs _080F6BFA + adds r4, r0, 0 + muls r4, r5 + ldr r1, [sp] + adds r0, r1 + lsls r3, r0, 5 +_080F6BDE: + adds r1, r4, r2 + lsls r1, 1 + add r1, r10 + adds r0, r3, r2 + add r0, r9 + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r5 + bcc _080F6BDE +_080F6BFA: + lsls r0, r6, 24 + lsrs r0, 24 + cmp r0, r8 + bcc _080F6BCC +_080F6C02: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80F6B94 + + thumb_func_start sub_80F6C14 +sub_80F6C14: @ 80F6C14 + push {lr} + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_80F6C14 + + thumb_func_start sub_80F6C6C +sub_80F6C6C: @ 80F6C6C + push {lr} + ldr r0, _080F6C84 @ =gUnknown_841F42C + bl sub_8003B24 + ldr r1, _080F6C88 @ =gUnknown_203ABE0 + movs r0, 0xFF + strb r0, [r1] + bl sub_8112EA8 + pop {r0} + bx r0 + .align 2, 0 +_080F6C84: .4byte gUnknown_841F42C +_080F6C88: .4byte gUnknown_203ABE0 + thumb_func_end sub_80F6C6C + + thumb_func_start sub_80F6C8C +sub_80F6C8C: @ 80F6C8C + push {lr} + bl sub_8003ECC + pop {r0} + bx r0 + thumb_func_end sub_80F6C8C + + thumb_func_start sub_80F6C98 +sub_80F6C98: @ 80F6C98 + push {lr} + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + bl sub_8002C28 + bl sub_80F6E9C + pop {r0} + bx r0 + thumb_func_end sub_80F6C98 + + thumb_func_start sub_80F6CBC +sub_80F6CBC: @ 80F6CBC + push {lr} + bl sub_8002DE8 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80F6CBC + + thumb_func_start sub_80F6CD0 +sub_80F6CD0: @ 80F6CD0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r7, [sp, 0x28] + ldr r4, [sp, 0x2C] + mov r8, r4 + ldr r5, [sp, 0x30] + ldr r6, [sp, 0x34] + lsls r3, 24 + lsrs r3, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + str r2, [sp] + mov r2, sp + movs r4, 0 + strb r0, [r2, 0x4] + mov r0, sp + strb r1, [r0, 0x5] + strb r4, [r0, 0x6] + movs r1, 0x1 + strb r1, [r0, 0x7] + strb r4, [r0, 0x8] + strb r1, [r0, 0x9] + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r4, sp + ldrb r2, [r4, 0xC] + subs r1, 0x11 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r4, 0xC] + mov r0, sp + mov r2, r8 + lsls r2, 4 + movs r4, 0xF + strb r2, [r0, 0xC] + mov r2, sp + ands r5, r4 + ldrb r0, [r2, 0xD] + ands r1, r0 + orrs r1, r5 + strb r1, [r2, 0xD] + mov r0, sp + lsrs r6, 20 + ands r1, r4 + orrs r1, r6 + strb r1, [r0, 0xD] + ldr r2, _080F6D58 @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + mov r0, sp + adds r1, r3, 0 + adds r2, r7, 0 + bl sub_8002CF4 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F6D58: .4byte gUnknown_3003E50 + thumb_func_end sub_80F6CD0 + + thumb_func_start sub_80F6D5C +sub_80F6D5C: @ 80F6D5C + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + ldr r3, _080F6DA8 @ =gUnknown_3003E50 + movs r4, 0x1 + ands r0, r4 + ldrb r2, [r3] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + bl sub_80CBE00 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080F6DB0 + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldr r2, _080F6DAC @ =gUnknown_2021D18 + str r5, [sp] + movs r0, 0x8 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 + b _080F6DFC + .align 2, 0 +_080F6DA8: .4byte gUnknown_3003E50 +_080F6DAC: .4byte gUnknown_2021D18 +_080F6DB0: + cmp r0, 0x1 + bne _080F6DDC + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldr r2, _080F6DD8 @ =gUnknown_2021D18 + str r5, [sp] + movs r0, 0x4 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x5 + bl sub_80F6CD0 + b _080F6DFC + .align 2, 0 +_080F6DD8: .4byte gUnknown_2021D18 +_080F6DDC: + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldr r2, _080F6E04 @ =gUnknown_2021D18 + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + bl sub_80F6CD0 +_080F6DFC: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6E04: .4byte gUnknown_2021D18 + thumb_func_end sub_80F6D5C + + thumb_func_start sub_80F6E08 +sub_80F6E08: @ 80F6E08 + push {r4,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080F6E4C @ =gUnknown_3003E50 + movs r4, 0x1 + ands r0, r4 + ldrb r2, [r3] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldr r2, _080F6E50 @ =gUnknown_2021D18 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + bl sub_80F6CD0 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6E4C: .4byte gUnknown_3003E50 +_080F6E50: .4byte gUnknown_2021D18 + thumb_func_end sub_80F6E08 + + thumb_func_start sub_80F6E54 +sub_80F6E54: @ 80F6E54 + push {r4,r5,lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r4, _080F6E94 @ =gUnknown_3003E50 + movs r5, 0x1 + ands r0, r5 + ldrb r2, [r4] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] + ldr r2, _080F6E98 @ =gUnknown_2021D18 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + bl sub_80F6CD0 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6E94: .4byte gUnknown_3003E50 +_080F6E98: .4byte gUnknown_2021D18 + thumb_func_end sub_80F6E54 + + thumb_func_start sub_80F6E9C +sub_80F6E9C: @ 80F6E9C + push {lr} + ldr r0, _080F6EBC @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _080F6EC4 + ldr r2, _080F6EC0 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_814FF98 + b _080F6ED4 + .align 2, 0 +_080F6EBC: .4byte gUnknown_203ADFA +_080F6EC0: .4byte gUnknown_3003E50 +_080F6EC4: + bl sub_80F77B8 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + movs r2, 0xF0 + bl sub_814FEAC +_080F6ED4: + movs r1, 0x85 + lsls r1, 2 + movs r0, 0 + movs r2, 0xE0 + bl sub_815001C + pop {r0} + bx r0 + thumb_func_end sub_80F6E9C + + thumb_func_start sub_80F6EE4 +sub_80F6EE4: @ 80F6EE4 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080F6F18 @ =sub_80F7124 + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_8003FA0 + cmp r4, 0x1 + bne _080F6F12 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_080F6F12: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6F18: .4byte sub_80F7124 + thumb_func_end sub_80F6EE4 + + thumb_func_start sub_80F6F1C +sub_80F6F1C: @ 80F6F1C + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080F6F50 @ =sub_80F6FD4 + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_8003FA0 + cmp r4, 0x1 + bne _080F6F4A + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_080F6F4A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6F50: .4byte sub_80F6FD4 + thumb_func_end sub_80F6F1C + + thumb_func_start sub_80F6F54 +sub_80F6F54: @ 80F6F54 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080F6F94 @ =sub_80F76CC + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_80040B8 + cmp r4, 0x1 + bne _080F6F82 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_080F6F82: + ldr r0, _080F6F98 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _080F6F8E + bl sub_8111134 +_080F6F8E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6F94: .4byte sub_80F76CC +_080F6F98: .4byte gUnknown_203ADFA + thumb_func_end sub_80F6F54 + + thumb_func_start sub_80F6F9C +sub_80F6F9C: @ 80F6F9C + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080F6FD0 @ =sub_80F7684 + adds r0, r5, 0 + bl sub_800486C + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_80040B8 + cmp r4, 0x1 + bne _080F6FCA + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 +_080F6FCA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6FD0: .4byte sub_80F7684 + thumb_func_end sub_80F6F9C + + thumb_func_start sub_80F6FD4 +sub_80F6FD4: @ 80F6FD4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r4, r2, 0 + ldr r2, [sp, 0x3C] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsls r4, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x10] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x14] + movs r3, 0x85 + lsls r3, 2 + lsrs r0, r1, 24 + str r0, [sp, 0xC] + movs r2, 0xFF + lsls r2, 24 + adds r2, r1 + mov r8, r2 + lsrs r2, 24 + lsrs r0, r4, 24 + mov r9, r0 + movs r0, 0xFF + lsls r0, 24 + adds r4, r0 + lsrs r4, 24 + movs r5, 0x1 + str r5, [sp] + str r5, [sp, 0x4] + movs r6, 0xE + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r1, r3, 0 + adds r3, r4, 0 + bl sub_8002554 + ldr r1, _080F710C @ =0x00000215 + ldr r2, [sp, 0x10] + str r2, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0xC] + adds r3, r4, 0 + bl sub_8002554 + ldr r1, _080F7110 @ =0x00000216 + ldr r3, [sp, 0xC] + ldr r2, [sp, 0x10] + adds r0, r3, r2 + lsls r0, 24 + mov r10, r0 + lsrs r2, r0, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r4, 0 + bl sub_8002554 + mov r5, r9 + ldr r0, [sp, 0x14] + add r0, r9 + cmp r9, r0 + bge _080F70A8 + mov r3, r8 + str r3, [sp, 0x18] + movs r6, 0x1 + movs r0, 0xE + mov r8, r0 +_080F706E: + lsls r4, r5, 24 + lsrs r4, 24 + str r6, [sp] + str r6, [sp, 0x4] + mov r2, r8 + str r2, [sp, 0x8] + adds r0, r7, 0 + ldr r1, _080F7114 @ =0x00000217 + ldr r3, [sp, 0x18] + lsrs r2, r3, 24 + adds r3, r4, 0 + bl sub_8002554 + str r6, [sp] + str r6, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + adds r0, r7, 0 + ldr r1, _080F7118 @ =0x00000219 + mov r3, r10 + lsrs r2, r3, 24 + adds r3, r4, 0 + bl sub_8002554 + adds r5, 0x1 + ldr r0, [sp, 0x14] + add r0, r9 + cmp r5, r0 + blt _080F706E +_080F70A8: + ldr r1, _080F711C @ =0x0000021a + ldr r2, [sp, 0xC] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r4, [sp, 0x14] + add r4, r9 + lsls r4, 24 + lsrs r4, 24 + movs r5, 0x1 + str r5, [sp] + str r5, [sp, 0x4] + movs r6, 0xE + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r4, 0 + bl sub_8002554 + ldr r1, _080F7120 @ =0x0000021b + ldr r0, [sp, 0x10] + str r0, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0xC] + adds r3, r4, 0 + bl sub_8002554 + movs r1, 0x87 + lsls r1, 2 + ldr r3, [sp, 0xC] + ldr r0, [sp, 0x10] + adds r2, r3, r0 + lsls r2, 24 + lsrs r2, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r4, 0 + bl sub_8002554 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F710C: .4byte 0x00000215 +_080F7110: .4byte 0x00000216 +_080F7114: .4byte 0x00000217 +_080F7118: .4byte 0x00000219 +_080F711C: .4byte 0x0000021a +_080F7120: .4byte 0x0000021b + thumb_func_end sub_80F6FD4 + + thumb_func_start sub_80F7124 +sub_80F7124: @ 80F7124 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0xC] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + bl sub_8069A38 + lsls r0, 24 + cmp r0, 0 + beq _080F715A + ldr r0, _080F7390 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _080F715A + b _080F73E8 +_080F715A: + movs r1, 0x80 + lsls r1, 2 + ldr r0, [sp, 0xC] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r5, [sp, 0x10] + subs r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r6, 0xF + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7394 @ =0x00000201 + ldr r2, [sp, 0xC] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7398 @ =0x00000202 + ldr r0, [sp, 0x14] + str r0, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0xC] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F739C @ =0x00000203 + ldr r2, [sp, 0xC] + ldr r0, [sp, 0x14] + adds r2, r0 + mov r8, r2 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + movs r1, 0x81 + lsls r1, 2 + add r8, r4 + mov r2, r8 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73A0 @ =0x00000205 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + ldr r3, [sp, 0x10] + bl sub_8002554 + ldr r1, _080F73A4 @ =0x00000206 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + ldr r3, [sp, 0x10] + bl sub_8002554 + movs r1, 0x82 + lsls r1, 2 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x10] + bl sub_8002554 + ldr r1, _080F73A8 @ =0x00000209 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + ldr r3, [sp, 0x10] + bl sub_8002554 + ldr r1, _080F73AC @ =0x0000020a + ldr r5, [sp, 0x10] + adds r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73B0 @ =0x0000020b + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + movs r1, 0x83 + lsls r1, 2 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73B4 @ =0x0000020d + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73B8 @ =0x00000a0a + ldr r5, [sp, 0x10] + adds r5, 0x2 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73BC @ =0x00000a0b + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73C0 @ =0x00000a0c + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73C4 @ =0x00000a0d + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73C8 @ =0x00000a05 + ldr r5, [sp, 0x10] + adds r5, 0x3 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73CC @ =0x00000a06 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73D0 @ =0x00000a08 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73D4 @ =0x00000a09 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + movs r1, 0xA0 + lsls r1, 4 + ldr r5, [sp, 0x10] + adds r5, 0x4 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73D8 @ =0x00000a01 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73DC @ =0x00000a02 + ldr r0, [sp, 0x14] + str r0, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0xC] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73E0 @ =0x00000a03 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F73E4 @ =0x00000a04 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + b _080F761E + .align 2, 0 +_080F7390: .4byte gUnknown_203ADFA +_080F7394: .4byte 0x00000201 +_080F7398: .4byte 0x00000202 +_080F739C: .4byte 0x00000203 +_080F73A0: .4byte 0x00000205 +_080F73A4: .4byte 0x00000206 +_080F73A8: .4byte 0x00000209 +_080F73AC: .4byte 0x0000020a +_080F73B0: .4byte 0x0000020b +_080F73B4: .4byte 0x0000020d +_080F73B8: .4byte 0x00000a0a +_080F73BC: .4byte 0x00000a0b +_080F73C0: .4byte 0x00000a0c +_080F73C4: .4byte 0x00000a0d +_080F73C8: .4byte 0x00000a05 +_080F73CC: .4byte 0x00000a06 +_080F73D0: .4byte 0x00000a08 +_080F73D4: .4byte 0x00000a09 +_080F73D8: .4byte 0x00000a01 +_080F73DC: .4byte 0x00000a02 +_080F73E0: .4byte 0x00000a03 +_080F73E4: .4byte 0x00000a04 +_080F73E8: + movs r1, 0x80 + lsls r1, 2 + ldr r2, [sp, 0xC] + subs r2, 0x2 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + ldr r5, [sp, 0x10] + subs r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r6, 0xF + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7630 @ =0x00000201 + ldr r0, [sp, 0xC] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7634 @ =0x00000202 + ldr r2, [sp, 0x14] + str r2, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0xC] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7638 @ =0x00000203 + ldr r0, [sp, 0xC] + ldr r2, [sp, 0x14] + adds r0, r2 + mov r8, r0 + lsls r2, r0, 24 + lsrs r2, 24 + str r2, [sp, 0x1C] + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + adds r3, r5, 0 + bl sub_8002554 + movs r1, 0x81 + lsls r1, 2 + add r8, r4 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F763C @ =0x00000205 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + ldr r3, [sp, 0x10] + bl sub_8002554 + ldr r1, _080F7640 @ =0x00000206 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + ldr r3, [sp, 0x10] + bl sub_8002554 + movs r1, 0x82 + lsls r1, 2 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x1C] + ldr r3, [sp, 0x10] + bl sub_8002554 + ldr r1, _080F7644 @ =0x00000209 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + ldr r3, [sp, 0x10] + bl sub_8002554 + ldr r1, _080F7648 @ =0x0000020a + ldr r5, [sp, 0x10] + adds r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F764C @ =0x0000020b + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + movs r1, 0x83 + lsls r1, 2 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7650 @ =0x0000020d + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7654 @ =0x00000a05 + ldr r5, [sp, 0x10] + adds r5, 0x2 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7658 @ =0x00000a06 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F765C @ =0x00000a08 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7660 @ =0x00000a09 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7664 @ =0x00000a0a + ldr r5, [sp, 0x10] + adds r5, 0x3 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7668 @ =0x00000a0b + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F766C @ =0x00000a0c + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7670 @ =0x00000a0d + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + movs r1, 0xA0 + lsls r1, 4 + ldr r5, [sp, 0x10] + adds r5, 0x4 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7674 @ =0x00000a01 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7678 @ =0x00000a02 + ldr r2, [sp, 0x14] + str r2, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0xC] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F767C @ =0x00000a03 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x1C] + adds r3, r5, 0 + bl sub_8002554 + ldr r1, _080F7680 @ =0x00000a04 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 +_080F761E: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7630: .4byte 0x00000201 +_080F7634: .4byte 0x00000202 +_080F7638: .4byte 0x00000203 +_080F763C: .4byte 0x00000205 +_080F7640: .4byte 0x00000206 +_080F7644: .4byte 0x00000209 +_080F7648: .4byte 0x0000020a +_080F764C: .4byte 0x0000020b +_080F7650: .4byte 0x0000020d +_080F7654: .4byte 0x00000a05 +_080F7658: .4byte 0x00000a06 +_080F765C: .4byte 0x00000a08 +_080F7660: .4byte 0x00000a09 +_080F7664: .4byte 0x00000a0a +_080F7668: .4byte 0x00000a0b +_080F766C: .4byte 0x00000a0c +_080F7670: .4byte 0x00000a0d +_080F7674: .4byte 0x00000a01 +_080F7678: .4byte 0x00000a02 +_080F767C: .4byte 0x00000a03 +_080F7680: .4byte 0x00000a04 + thumb_func_end sub_80F7124 + + thumb_func_start sub_80F7684 +sub_80F7684: @ 80F7684 + push {r4,r5,lr} + sub sp, 0xC + adds r4, r1, 0 + adds r5, r2, 0 + ldr r1, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsls r5, 24 + lsls r3, 24 + lsls r1, 24 + movs r2, 0xFF + lsls r2, 24 + adds r4, r2 + lsrs r4, 24 + adds r5, r2 + lsrs r5, 24 + movs r2, 0x80 + lsls r2, 18 + adds r3, r2 + lsrs r3, 24 + str r3, [sp] + adds r1, r2 + lsrs r1, 24 + str r1, [sp, 0x4] + movs r1, 0xE + str r1, [sp, 0x8] + movs r1, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8002554 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F7684 + + thumb_func_start sub_80F76CC +sub_80F76CC: @ 80F76CC + push {r4,r5,lr} + sub sp, 0xC + adds r4, r1, 0 + adds r5, r2, 0 + ldr r1, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsls r5, 24 + lsls r3, 24 + lsls r1, 24 + movs r2, 0xFE + lsls r2, 24 + adds r4, r2 + lsrs r4, 24 + movs r2, 0xFF + lsls r2, 24 + adds r5, r2 + lsrs r5, 24 + movs r2, 0x80 + lsls r2, 19 + adds r3, r2 + lsrs r3, 24 + str r3, [sp] + movs r2, 0x80 + lsls r2, 18 + adds r1, r2 + lsrs r1, 24 + str r1, [sp, 0x4] + movs r1, 0xE + str r1, [sp, 0x8] + movs r1, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8002554 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F76CC + + thumb_func_start sub_80F771C +sub_80F771C: @ 80F771C + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + cmp r4, 0x1 + bne _080F7746 + movs r0, 0 + bl sub_80020BC +_080F7746: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F771C + + thumb_func_start sub_80F7750 +sub_80F7750: @ 80F7750 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x85 + lsls r2, 2 + movs r3, 0xE + bl sub_810F2E8 + pop {r0} + bx r0 + thumb_func_end sub_80F7750 + + thumb_func_start sub_80F7768 +sub_80F7768: @ 80F7768 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080F7790 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _080F7798 + ldr r2, _080F7794 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + bl sub_814FF98 + b _080F77A4 + .align 2, 0 +_080F7790: .4byte gUnknown_203ADFA +_080F7794: .4byte gUnknown_3003E50 +_080F7798: + movs r1, 0x80 + lsls r1, 2 + adds r0, r4, 0 + movs r2, 0xF0 + bl sub_814FEAC +_080F77A4: + movs r2, 0x80 + lsls r2, 2 + adds r0, r4, 0 + adds r1, r5, 0 + movs r3, 0xF + bl sub_810EDC4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80F7768 + + thumb_func_start sub_80F77B8 +sub_80F77B8: @ 80F77B8 + push {lr} + ldr r0, _080F77C8 @ =gUnknown_841F408 + movs r1, 0xE0 + movs r2, 0x14 + bl sub_80703EC + pop {r0} + bx r0 + .align 2, 0 +_080F77C8: .4byte gUnknown_841F408 + thumb_func_end sub_80F77B8 + + thumb_func_start sub_80F77CC +sub_80F77CC: @ 80F77CC + push {lr} + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _080F77E0 @ =gUnknown_841F408 + movs r2, 0x14 + bl sub_80703EC + pop {r0} + bx r0 + .align 2, 0 +_080F77E0: .4byte gUnknown_841F408 + thumb_func_end sub_80F77CC + + thumb_func_start sub_80F77E4 +sub_80F77E4: @ 80F77E4 + ldr r0, _080F77E8 @ =gUnknown_841F408 + bx lr + .align 2, 0 +_080F77E8: .4byte gUnknown_841F408 + thumb_func_end sub_80F77E4 + + thumb_func_start sub_80F77EC +sub_80F77EC: @ 80F77EC + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _080F77F8 + movs r1, 0 +_080F77F8: + ldr r0, _080F7804 @ =gUnknown_841F408 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_080F7804: .4byte gUnknown_841F408 + thumb_func_end sub_80F77EC + + thumb_func_start sub_80F7808 +sub_80F7808: @ 80F7808 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F6E9C + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 2 + str r4, [sp] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r1, 0 + movs r3, 0xF + bl sub_80BF474 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80F7808 + + thumb_func_start sub_80F7858 +sub_80F7858: @ 80F7858 + push {lr} + sub sp, 0xC + ldr r0, _080F787C @ =gUnknown_841F43C + movs r1, 0x85 + lsls r1, 2 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_080F787C: .4byte gUnknown_841F43C + thumb_func_end sub_80F7858 + + thumb_func_start sub_80F7880 +sub_80F7880: @ 80F7880 + push {lr} + sub sp, 0xC + ldr r0, _080F78A4 @ =gUnknown_841F43C + movs r1, 0x85 + lsls r1, 2 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0x1 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_080F78A4: .4byte gUnknown_841F43C + thumb_func_end sub_80F7880 + + thumb_func_start sub_80F78A8 +sub_80F78A8: @ 80F78A8 + push {lr} + ldr r3, _080F78D8 @ =gUnknown_300500C + ldr r2, [r3] + ldrb r1, [r2, 0x14] + lsls r0, r1, 29 + lsrs r0, 29 + cmp r0, 0x2 + bls _080F78C4 + movs r0, 0x8 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x14] +_080F78C4: + ldr r1, _080F78DC @ =gUnknown_841F428 + ldr r0, [r3] + ldrb r0, [r0, 0x14] + lsls r0, 29 + lsrs r0, 29 + adds r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080F78D8: .4byte gUnknown_300500C +_080F78DC: .4byte gUnknown_841F428 + thumb_func_end sub_80F78A8 + + thumb_func_start sub_80F78E0 +sub_80F78E0: @ 80F78E0 + push {r4,lr} + sub sp, 0x20 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r4, _080F7934 @ =gUnknown_203ABE0 + ldrb r0, [r4] + cmp r0, 0xFF + bne _080F792A + movs r0, 0x7 + str r0, [sp] + lsls r0, r1, 25 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + ldr r0, _080F7938 @ =0x0000013d + str r0, [sp, 0xC] + add r0, sp, 0x10 + movs r1, 0 + movs r2, 0x16 + movs r3, 0x1 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + add r0, sp, 0x18 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + bl sub_8003FA0 +_080F792A: + ldrb r0, [r4] + add sp, 0x20 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F7934: .4byte gUnknown_203ABE0 +_080F7938: .4byte 0x0000013d + thumb_func_end sub_80F78E0 + + thumb_func_start sub_80F793C +sub_80F793C: @ 80F793C + ldr r0, _080F7944 @ =gUnknown_203ABE0 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080F7944: .4byte gUnknown_203ABE0 + thumb_func_end sub_80F793C + + thumb_func_start sub_80F7948 +sub_80F7948: @ 80F7948 + push {r4,lr} + ldr r4, _080F7960 @ =gUnknown_203ABE0 + ldrb r0, [r4] + cmp r0, 0xFF + beq _080F795A + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] +_080F795A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F7960: .4byte gUnknown_203ABE0 + thumb_func_end sub_80F7948 + + thumb_func_start sub_80F7964 +sub_80F7964: @ 80F7964 + movs r0, 0x80 + lsls r0, 2 + bx lr + thumb_func_end sub_80F7964 + + thumb_func_start sub_80F796C +sub_80F796C: @ 80F796C + movs r0, 0x85 + lsls r0, 2 + bx lr + thumb_func_end sub_80F796C + + thumb_func_start sub_80F7974 +sub_80F7974: @ 80F7974 + push {r4,lr} + adds r4, r0, 0 + bl sub_8112EB4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 2 + movs r2, 0xF0 + bl sub_814FE6C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8113018 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80F7974 + + thumb_func_start sub_80F7998 +sub_80F7998: @ 80F7998 + push {lr} + movs r0, 0x2 + bl sub_8112EDC + pop {r0} + bx r0 + thumb_func_end sub_80F7998 + + thumb_func_start sub_80F79A4 +sub_80F79A4: @ 80F79A4 + push {lr} + bl sub_80F77B8 + movs r1, 0x80 + lsls r1, 2 + movs r0, 0 + movs r2, 0xF0 + bl sub_814FEEC + movs r1, 0x85 + lsls r1, 2 + movs r0, 0 + movs r2, 0xE0 + bl sub_815001C + pop {r0} + bx r0 + thumb_func_end sub_80F79A4 + + thumb_func_start sub_80F79C8 +sub_80F79C8: @ 80F79C8 + push {lr} + ldr r0, _080F79D4 @ =gUnknown_841F444 + bl sub_8002C1C + pop {r0} + bx r0 + .align 2, 0 +_080F79D4: .4byte gUnknown_841F444 + thumb_func_end sub_80F79C8 + + thumb_func_start sub_80F79D8 +sub_80F79D8: @ 80F79D8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + cmp r1, 0x7 + bhi _080F7AB6 + lsls r0, r1, 2 + ldr r1, _080F79F4 @ =_080F79F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F79F4: .4byte _080F79F8 + .align 2, 0 +_080F79F8: + .4byte _080F7A18 + .4byte _080F7A2C + .4byte _080F7A40 + .4byte _080F7A54 + .4byte _080F7A68 + .4byte _080F7A7C + .4byte _080F7A90 + .4byte _080F7AA8 +_080F7A18: + ldr r1, _080F7A28 @ =gUnknown_841F444 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x4] + b _080F7AB6 + .align 2, 0 +_080F7A28: .4byte gUnknown_841F444 +_080F7A2C: + ldr r1, _080F7A3C @ =gUnknown_841F444 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + b _080F7AB6 + .align 2, 0 +_080F7A3C: .4byte gUnknown_841F444 +_080F7A40: + ldr r1, _080F7A50 @ =gUnknown_841F444 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x6] + b _080F7AB6 + .align 2, 0 +_080F7A50: .4byte gUnknown_841F444 +_080F7A54: + ldr r1, _080F7A64 @ =gUnknown_841F444 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x7] + b _080F7AB6 + .align 2, 0 +_080F7A64: .4byte gUnknown_841F444 +_080F7A68: + ldr r0, _080F7A78 @ =gUnknown_841F444 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x8] + b _080F7A9C + .align 2, 0 +_080F7A78: .4byte gUnknown_841F444 +_080F7A7C: + ldr r0, _080F7A8C @ =gUnknown_841F444 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x8] + b _080F7AB4 + .align 2, 0 +_080F7A8C: .4byte gUnknown_841F444 +_080F7A90: + ldr r0, _080F7AA4 @ =gUnknown_841F444 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x9] +_080F7A9C: + lsls r0, 28 + lsrs r0, 28 + b _080F7AB6 + .align 2, 0 +_080F7AA4: .4byte gUnknown_841F444 +_080F7AA8: + ldr r0, _080F7ABC @ =gUnknown_841F444 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x9] +_080F7AB4: + lsrs r0, 4 +_080F7AB6: + pop {r1} + bx r1 + .align 2, 0 +_080F7ABC: .4byte gUnknown_841F444 + thumb_func_end sub_80F79D8 + + thumb_func_start sub_80F7AC0 +sub_80F7AC0: @ 80F7AC0 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080F7AD4 @ =gUnknown_841F4A4 + lsrs r0, 23 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080F7AD4: .4byte gUnknown_841F4A4 + thumb_func_end sub_80F7AC0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/oak_speech.s b/asm/oak_speech.s new file mode 100644 index 000000000..2e8c648a6 --- /dev/null +++ b/asm/oak_speech.s @@ -0,0 +1,5728 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_812E944 +sub_812E944: @ 812E944 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r10, r0 + adds r0, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r1, [sp, 0x20] + mov r8, r1 + ldr r1, [sp, 0x24] + mov r2, r10 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0812E9DC @ =sub_812E9F8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0812E9E0 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + mov r1, r10 + lsls r0, r1, 8 + strh r0, [r4, 0x8] + lsls r2, r7, 8 + mov r9, r2 + strh r2, [r4, 0xA] + strh r5, [r4, 0xC] + strh r6, [r4, 0xE] + subs r5, r1 + lsls r5, 8 + adds r0, r5, 0 + mov r1, r8 + bl __divsi3 + strh r0, [r4, 0x10] + subs r6, r7 + lsls r6, 8 + adds r0, r6, 0 + mov r1, r8 + bl __divsi3 + strh r0, [r4, 0x12] + mov r0, r8 + strh r0, [r4, 0x18] + mov r1, r9 + mov r2, r10 + orrs r1, r2 + mov r9, r1 + movs r0, 0x52 + bl sub_8000A38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812E9DC: .4byte sub_812E9F8 +_0812E9E0: .4byte gUnknown_3005090 + thumb_func_end sub_812E944 + + thumb_func_start sub_812E9E4 +sub_812E9E4: @ 812E9E4 + push {lr} + ldr r0, _0812E9F4 @ =sub_812E9F8 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0812E9F4: .4byte sub_812E9F8 + thumb_func_end sub_812E9E4 + + thumb_func_start sub_812E9F8 +sub_812E9F8: @ 812E9F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0812EA28 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0812EA6E + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0812EA2C + ldrh r0, [r4, 0x8] + ldrh r1, [r4] + adds r0, r1 + strh r0, [r4] + movs r0, 0x1 + b _0812EA4C + .align 2, 0 +_0812EA28: .4byte gUnknown_3005098 +_0812EA2C: + subs r0, r1, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + beq _0812EA3E + ldrh r0, [r4, 0xA] + ldrh r2, [r4, 0x2] + adds r0, r2 + b _0812EA48 +_0812EA3E: + ldrh r0, [r4, 0x4] + lsls r0, 8 + strh r0, [r4] + ldrh r0, [r4, 0x6] + lsls r0, 8 +_0812EA48: + strh r0, [r4, 0x2] + movs r0, 0 +_0812EA4C: + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x2] + ldr r1, _0812EA74 @ =0xffffff00 + ands r1, r0 + ldrh r0, [r4] + lsrs r0, 8 + orrs r1, r0 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0812EA6E + adds r0, r5, 0 + bl sub_8077508 +_0812EA6E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812EA74: .4byte 0xffffff00 + thumb_func_end sub_812E9F8 + + thumb_func_start sub_812EA78 +sub_812EA78: @ 812EA78 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r2, 24 + lsrs r5, r2, 24 + cmp r4, 0xC9 + bne _0812EAB8 + adds r0, r1, 0 + bl sub_8082AB8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1A + beq _0812EAA4 + cmp r0, 0x1A + bgt _0812EA9E + cmp r0, 0 + beq _0812EAB8 + b _0812EAB4 +_0812EA9E: + cmp r0, 0x1B + beq _0812EAAA + b _0812EAB4 +_0812EAA4: + movs r4, 0xCE + lsls r4, 1 + b _0812EABC +_0812EAAA: + ldr r4, _0812EAB0 @ =0x0000019d + b _0812EABC + .align 2, 0 +_0812EAB0: .4byte 0x0000019d +_0812EAB4: + adds r4, r0, 0 + adds r4, 0xFB +_0812EAB8: + cmp r4, 0 + beq _0812EAD6 +_0812EABC: + cmp r5, 0x4 + bhi _0812EAD6 + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r1, _0812EAE0 @ =gUnknown_845FD54 + lsls r0, r4, 2 + adds r0, r4 + adds r0, r5, r0 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, 0xFF + bne _0812EAD8 +_0812EAD6: + movs r0, 0x20 +_0812EAD8: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0812EAE0: .4byte gUnknown_845FD54 + thumb_func_end sub_812EA78 + + thumb_func_start sub_812EAE4 +sub_812EAE4: @ 812EAE4 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r2, 24 + lsrs r2, 24 + bl sub_812EA78 + subs r0, 0x20 + lsls r0, 24 + asrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_812EAE4 + + thumb_func_start sub_812EAFC +sub_812EAFC: @ 812EAFC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_812EAFC + + thumb_func_start sub_812EB10 +sub_812EB10: @ 812EB10 + push {lr} + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_812EB10 + + thumb_func_start sub_812EB2C +sub_812EB2C: @ 812EB2C + push {lr} + ldr r0, _0812EB48 @ =gUnknown_20371F8 + movs r1, 0 + strh r1, [r0] + ldr r0, _0812EB4C @ =gUnknown_20375F8 + strh r1, [r0] + ldr r0, _0812EB50 @ =sub_812EB58 + bl sub_807741C + ldr r0, _0812EB54 @ =sub_812EB10 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0812EB48: .4byte gUnknown_20371F8 +_0812EB4C: .4byte gUnknown_20375F8 +_0812EB50: .4byte sub_812EB58 +_0812EB54: .4byte sub_812EB10 + thumb_func_end sub_812EB2C + + thumb_func_start sub_812EB58 +sub_812EB58: @ 812EB58 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0812EB7C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xA + bls _0812EB70 + b _0812EE94 +_0812EB70: + lsls r0, 2 + ldr r1, _0812EB80 @ =_0812EB84 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812EB7C: .4byte gUnknown_30030F0 +_0812EB80: .4byte _0812EB84 + .align 2, 0 +_0812EB84: + .4byte _0812EBB0 + .4byte _0812EC28 + .4byte _0812EC44 + .4byte _0812EC8E + .4byte _0812ED00 + .4byte _0812ED3C + .4byte _0812ED6C + .4byte _0812ED9A + .4byte _0812EE94 + .4byte _0812EE94 + .4byte _0812EE30 +_0812EBB0: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + add r1, sp, 0x8 + movs r0, 0 + strh r0, [r1] + ldr r1, _0812EC14 @ =0x040000d4 + add r0, sp, 0x8 + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _0812EC18 @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0 + str r2, [sp, 0xC] + add r0, sp, 0xC + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _0812EC1C @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + add r0, sp, 0x8 + strh r2, [r0] + str r0, [r1] + ldr r0, _0812EC20 @ =0x05000002 + str r0, [r1, 0x4] + ldr r0, _0812EC24 @ =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + bl sub_8070528 + bl sub_8087E64 + bl sub_8006B10 + bl sub_80088F0 + bl sub_80F6808 + movs r0, 0x2 + bl sub_812B1F0 + b _0812EE94 + .align 2, 0 +_0812EC14: .4byte 0x040000d4 +_0812EC18: .4byte 0x8100c000 +_0812EC1C: .4byte 0x85000100 +_0812EC20: .4byte 0x05000002 +_0812EC24: .4byte 0x810001ff +_0812EC28: + ldr r4, _0812EC3C @ =gUnknown_203B108 + ldr r0, _0812EC40 @ =0x00002420 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0x1 + movs r1, 0x1 + bl sub_8044AF0 + b _0812EE94 + .align 2, 0 +_0812EC3C: .4byte gUnknown_203B108 +_0812EC40: .4byte 0x00002420 +_0812EC44: + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + b _0812EE94 +_0812EC8E: + movs r0, 0 + bl sub_8001618 + ldr r1, _0812ECF0 @ =gUnknown_8462E58 + movs r0, 0x1 + movs r2, 0x3 + bl sub_8001658 + ldr r4, _0812ECF4 @ =gUnknown_203B108 + ldr r1, [r4] + movs r0, 0xE1 + lsls r0, 5 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + movs r0, 0xC1 + lsls r0, 5 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _0812ECF8 @ =gUnknown_2021BC8 + movs r1, 0 + strh r1, [r0] + ldr r0, _0812ECFC @ =gUnknown_2021BCA + strh r1, [r0] + b _0812EE94 + .align 2, 0 +_0812ECF0: .4byte gUnknown_8462E58 +_0812ECF4: .4byte gUnknown_203B108 +_0812ECF8: .4byte gUnknown_2021BC8 +_0812ECFC: .4byte gUnknown_2021BCA +_0812ED00: + ldr r2, _0812ED34 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + bl sub_80F6C6C + bl sub_80F6C98 + movs r0, 0xD0 + bl sub_80F77CC + ldr r0, _0812ED38 @ =gUnknown_8460568 + movs r1, 0 + movs r2, 0x80 + bl sub_80703EC + movs r0, 0x2 + bl sub_8150408 + adds r0, 0x1E + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + b _0812EE94 + .align 2, 0 +_0812ED34: .4byte gUnknown_2037AB8 +_0812ED38: .4byte gUnknown_8460568 +_0812ED3C: + bl sub_80F78A8 + ldr r1, _0812ED60 @ =gUnknown_203B108 + ldr r1, [r1] + movs r3, 0 + strb r0, [r1, 0x1F] + ldr r2, _0812ED64 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0812ED68 @ =gUnknown_84605E8 + str r3, [sp] + movs r0, 0x1 + movs r2, 0 + bl sub_80F6878 + b _0812EE94 + .align 2, 0 +_0812ED60: .4byte gUnknown_203B108 +_0812ED64: .4byte gUnknown_3003E50 +_0812ED68: .4byte gUnknown_84605E8 +_0812ED6C: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + beq _0812ED78 + b _0812EEA2 +_0812ED78: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + b _0812EE94 +_0812ED9A: + movs r0, 0xE2 + lsls r0, 1 + str r0, [sp] + movs r0, 0 + movs r1, 0x1E + movs r2, 0 + movs r3, 0xD + bl sub_810F558 + ldr r1, _0812EE1C @ =0x0000d00f + movs r4, 0x1E + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r1, _0812EE20 @ =0x0000d002 + str r4, [sp] + movs r5, 0x1 + str r5, [sp, 0x4] + movs r0, 0x1 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + ldr r1, _0812EE24 @ =0x0000d00e + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + movs r2, 0 + movs r3, 0x13 + bl sub_8002454 + bl sub_812EEB0 + ldr r2, _0812EE28 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r0, 0 + str r0, [sp] + movs r1, 0xE6 + movs r2, 0x95 + movs r3, 0 + bl sub_8006300 + ldr r2, _0812EE2C @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x12] + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _0812EE94 + .align 2, 0 +_0812EE1C: .4byte 0x0000d00f +_0812EE20: .4byte 0x0000d002 +_0812EE24: .4byte 0x0000d00e +_0812EE28: .4byte gUnknown_2037AB8 +_0812EE2C: .4byte gUnknown_3005090 +_0812EE30: + movs r0, 0x1 + negs r0, r0 + movs r4, 0 + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _0812EE80 @ =sub_812EAFC + bl sub_80006F4 + ldr r0, _0812EE84 @ =0x00000143 + bl sub_80722A0 + ldr r1, _0812EE88 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812EE8C @ =sub_812F0B0 + str r1, [r0] + ldr r0, _0812EE90 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + strb r4, [r0] + b _0812EEA2 + .align 2, 0 +_0812EE80: .4byte sub_812EAFC +_0812EE84: .4byte 0x00000143 +_0812EE88: .4byte gUnknown_3005090 +_0812EE8C: .4byte sub_812F0B0 +_0812EE90: .4byte gUnknown_30030F0 +_0812EE94: + ldr r1, _0812EEAC @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0812EEA2: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812EEAC: .4byte gUnknown_30030F0 + thumb_func_end sub_812EB58 + + thumb_func_start sub_812EEB0 +sub_812EEB0: @ 812EEB0 + push {r4-r6,lr} + sub sp, 0x14 + ldr r0, _0812EF38 @ =gUnknown_8415D2C + ldr r1, _0812EF3C @ =gUnknown_8415D48 + movs r5, 0x1 + str r5, [sp] + movs r2, 0 + movs r3, 0 + bl sub_810F650 + ldr r1, _0812EF40 @ =gUnknown_8462EB4 + ldr r4, _0812EF44 @ =gUnknown_203B108 + ldr r0, [r4] + ldrh r0, [r0, 0x12] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_8003CE4 + ldr r1, [r4] + movs r6, 0 + strh r0, [r1, 0x14] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldr r0, [r4] + ldrb r0, [r0, 0x14] + movs r1, 0 + bl sub_800445C + ldr r0, [r4] + ldrb r0, [r0, 0x14] + str r5, [sp] + str r5, [sp, 0x4] + ldr r1, _0812EF48 @ =gUnknown_8462EE8 + str r1, [sp, 0x8] + str r6, [sp, 0xC] + ldr r1, _0812EF4C @ =gUnknown_81C582D + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0 + bl sub_812E5A4 + ldr r0, [r4] + ldrb r0, [r0, 0x14] + movs r1, 0x3 + bl sub_8003F20 + movs r1, 0xC0 + lsls r1, 6 + movs r0, 0x5 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812EF38: .4byte gUnknown_8415D2C +_0812EF3C: .4byte gUnknown_8415D48 +_0812EF40: .4byte gUnknown_8462EB4 +_0812EF44: .4byte gUnknown_203B108 +_0812EF48: .4byte gUnknown_8462EE8 +_0812EF4C: .4byte gUnknown_81C582D + thumb_func_end sub_812EEB0 + + thumb_func_start sub_812EF50 +sub_812EF50: @ 812EF50 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r6, 0 + ldr r4, _0812EF80 @ =gUnknown_203B108 + ldr r0, [r4] + ldrh r1, [r0, 0x12] + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r1, 0 + bne _0812EF84 + bl sub_812EEB0 + mov r0, r8 + lsls r0, 2 + mov r10, r0 + b _0812F06A + .align 2, 0 +_0812EF80: .4byte gUnknown_203B108 +_0812EF84: + ldr r0, _0812F038 @ =gUnknown_8415D50 + movs r1, 0 + movs r2, 0x1 + bl sub_810F5E8 + lsls r1, r7, 1 + mov r9, r1 + mov r3, r8 + lsls r3, 2 + mov r10, r3 + adds r5, r4, 0 +_0812EF9A: + ldr r1, _0812F03C @ =gUnknown_8462EB4 + ldr r0, [r5] + ldrh r0, [r0, 0x12] + lsls r0, 2 + adds r0, r1 + lsls r1, r6, 3 + ldr r0, [r0] + adds r0, r1 + bl sub_8003CE4 + ldr r1, [r5] + lsls r4, r6, 1 + adds r1, 0x14 + adds r1, r4 + strh r0, [r1] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x1 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _0812F040 @ =gUnknown_8462EE8 + str r1, [sp, 0x8] + movs r1, 0 + str r1, [sp, 0xC] + ldr r2, _0812F044 @ =gUnknown_8463074 + mov r3, r9 + adds r1, r3, r7 + adds r1, r6, r1 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x6 + movs r3, 0 + bl sub_812E5A4 + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x2 + bls _0812EF9A + ldr r0, _0812F048 @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x12] + cmp r0, 0x1 + bne _0812F050 + ldr r1, _0812F04C @ =gUnknown_8460D94 + movs r0, 0x5 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8002124 + b _0812F064 + .align 2, 0 +_0812F038: .4byte gUnknown_8415D50 +_0812F03C: .4byte gUnknown_8462EB4 +_0812F040: .4byte gUnknown_8462EE8 +_0812F044: .4byte gUnknown_8463074 +_0812F048: .4byte gUnknown_203B108 +_0812F04C: .4byte gUnknown_8460D94 +_0812F050: + ldr r1, _0812F0A0 @ =gUnknown_8460E34 + movs r0, 0x5 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8002124 +_0812F064: + movs r0, 0x1 + bl sub_80020BC +_0812F06A: + movs r0, 0x2 + bl sub_8150408 + ldrh r2, [r0, 0x1E] + ldr r0, _0812F0A4 @ =0xffffdfff + movs r1, 0x1 + negs r1, r1 + str r2, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, _0812F0A8 @ =gUnknown_3005090 + mov r0, r10 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812F0AC @ =sub_812F0B0 + str r1, [r0] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F0A0: .4byte gUnknown_8460E34 +_0812F0A4: .4byte 0xffffdfff +_0812F0A8: .4byte gUnknown_3005090 +_0812F0AC: .4byte sub_812F0B0 + thumb_func_end sub_812EF50 + + thumb_func_start sub_812F0B0 +sub_812F0B0: @ 812F0B0 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0812F10C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812F162 + ldr r0, _0812F110 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0812F162 + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0812F120 + ldr r1, _0812F114 @ =gUnknown_3005090 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 3 + adds r0, r1 + strh r3, [r0, 0x26] + ldr r0, _0812F118 @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x12] + adds r4, r2, 0 + cmp r0, 0x1 + bhi _0812F150 + movs r0, 0x2 + bl sub_8150408 + ldrh r2, [r0, 0x1E] + ldr r0, _0812F11C @ =0xffffdfff + movs r1, 0x1 + negs r1, r1 + str r2, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _0812F150 + .align 2, 0 +_0812F10C: .4byte gUnknown_2037AB8 +_0812F110: .4byte gUnknown_30030F0 +_0812F114: .4byte gUnknown_3005090 +_0812F118: .4byte gUnknown_203B108 +_0812F11C: .4byte 0xffffdfff +_0812F120: + ldr r0, _0812F16C @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x12] + cmp r0, 0 + beq _0812F162 + ldr r1, _0812F170 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r0, r4, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812F174 @ =0x0000ffff + strh r1, [r0, 0x26] + movs r0, 0x2 + bl sub_8150408 + ldrh r2, [r0, 0x1E] + ldr r0, _0812F178 @ =0xffffdfff + movs r1, 0x1 + negs r1, r1 + str r2, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_0812F150: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0812F170 @ =gUnknown_3005090 + adds r1, r4, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812F17C @ =sub_812F180 + str r0, [r1] +_0812F162: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812F16C: .4byte gUnknown_203B108 +_0812F170: .4byte gUnknown_3005090 +_0812F174: .4byte 0x0000ffff +_0812F178: .4byte 0xffffdfff +_0812F17C: .4byte sub_812F180 + thumb_func_end sub_812F0B0 + + thumb_func_start sub_812F180 +sub_812F180: @ 812F180 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0 + mov r8, r0 + ldr r0, _0812F1B0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812F260 + ldr r1, _0812F1B4 @ =gUnknown_203B108 + ldr r0, [r1] + ldrh r0, [r0, 0x12] + adds r5, r1, 0 + cmp r0, 0 + bne _0812F1B8 + movs r1, 0x1 + mov r8, r1 + b _0812F1C4 + .align 2, 0 +_0812F1B0: .4byte gUnknown_2037AB8 +_0812F1B4: .4byte gUnknown_203B108 +_0812F1B8: + cmp r0, 0 + blt _0812F1C4 + cmp r0, 0x2 + bgt _0812F1C4 + movs r2, 0x3 + mov r8, r2 +_0812F1C4: + ldr r2, [r5] + ldr r1, _0812F244 @ =gUnknown_3005090 + lsls r3, r7, 2 + adds r0, r3, r7 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x26] + ldrh r1, [r2, 0x12] + adds r0, r1 + movs r1, 0 + strh r0, [r2, 0x12] + lsls r0, 16 + lsrs r0, 16 + mov r9, r3 + cmp r0, 0x2 + bhi _0812F24C + movs r6, 0 + cmp r1, r8 + bcs _0812F234 +_0812F1EA: + ldr r0, [r5] + lsls r4, r6, 1 + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + movs r1, 0 + strh r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r8 + bcc _0812F1EA +_0812F234: + ldr r0, _0812F244 @ =gUnknown_3005090 + mov r2, r9 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812F248 @ =sub_812EF50 + str r0, [r1] + b _0812F260 + .align 2, 0 +_0812F244: .4byte gUnknown_3005090 +_0812F248: .4byte sub_812EF50 +_0812F24C: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0812F270 @ =sub_812F274 + str r0, [r4] +_0812F260: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F270: .4byte sub_812F274 + thumb_func_end sub_812F180 + + thumb_func_start sub_812F274 +sub_812F274: @ 812F274 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r6, 0 + ldr r0, _0812F32C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812F320 + ldr r5, _0812F330 @ =gUnknown_203B108 +_0812F292: + ldr r0, [r5] + lsls r4, r6, 1 + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + ldr r0, [r5] + adds r0, 0x14 + adds r0, r4 + movs r7, 0 + strh r7, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x2 + bls _0812F292 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x12 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + ldr r0, _0812F334 @ =gUnknown_3005090 + mov r1, r8 + lsls r4, r1, 2 + add r4, r8 + lsls r4, 3 + adds r4, r0 + ldrb r0, [r4, 0x12] + bl sub_8006398 + ldr r0, _0812F330 @ =gUnknown_203B108 + ldr r0, [r0] + strh r7, [r0, 0x14] + adds r0, 0x14 + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + movs r0, 0x20 + strh r0, [r4, 0xE] + ldr r0, _0812F338 @ =sub_812F33C + str r0, [r4] +_0812F320: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F32C: .4byte gUnknown_2037AB8 +_0812F330: .4byte gUnknown_203B108 +_0812F334: .4byte gUnknown_3005090 +_0812F338: .4byte sub_812F33C + thumb_func_end sub_812F274 + + thumb_func_start sub_812F33C +sub_812F33C: @ 812F33C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + mov r8, r0 + ldr r0, _0812F370 @ =gUnknown_3005098 + mov r9, r0 + mov r5, r8 + add r5, r9 + movs r0, 0 + str r0, [sp, 0x14] + ldrh r0, [r5, 0x6] + movs r1, 0x6 + ldrsh r6, [r5, r1] + cmp r6, 0 + beq _0812F374 + subs r0, 0x1 + strh r0, [r5, 0x6] + b _0812F476 + .align 2, 0 +_0812F370: .4byte gUnknown_3005098 +_0812F374: + movs r0, 0xA2 + lsls r0, 1 + bl sub_80722A0 + bl sub_810F71C + ldr r0, _0812F484 @ =gUnknown_8415D48 + movs r1, 0 + movs r2, 0x1 + bl sub_810F5E8 + ldr r0, _0812F488 @ =gUnknown_8460BA8 + add r1, sp, 0x14 + bl sub_80F6AA0 + adds r1, r0, 0 + ldr r4, _0812F48C @ =gUnknown_203B108 + ldr r0, [r4] + str r1, [r0, 0x8] + movs r0, 0x1E + str r0, [sp] + movs r0, 0x13 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0 + movs r3, 0x2 + bl sub_8002124 + movs r0, 0x1 + bl sub_80020BC + ldr r0, [r4] + ldr r0, [r0, 0x8] + bl sub_8002BC4 + ldr r0, [r4] + str r6, [r0, 0x8] + ldr r0, _0812F490 @ =gUnknown_8462EC0 + bl sub_8003CE4 + strh r0, [r5, 0x1C] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldrb r0, [r5, 0x1C] + movs r1, 0 + bl sub_800445C + ldrb r0, [r5, 0x1C] + movs r1, 0x3 + bl sub_8003F20 + ldr r0, [r4] + movs r1, 0 + strh r6, [r0, 0x12] + ldr r0, _0812F494 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + strb r1, [r0] + movs r0, 0x10 + strh r0, [r5, 0x1E] + ldrb r0, [r5, 0x1C] + movs r1, 0x1 + str r1, [sp] + str r6, [sp, 0x4] + ldr r1, _0812F498 @ =gUnknown_8462EEC + str r1, [sp, 0x8] + str r6, [sp, 0xC] + ldr r1, _0812F49C @ =gUnknown_8462EF0 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x5 + bl sub_812E5A4 + str r6, [sp] + movs r0, 0 + movs r1, 0xE2 + movs r2, 0x91 + movs r3, 0 + bl sub_8006300 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xA] + ldr r4, _0812F4A0 @ =gUnknown_202063C + movs r1, 0xA + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x1] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r0, r2 + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1, 0x1] + movs r2, 0xA + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x5] + ands r3, r1 + strb r3, [r0, 0x5] + adds r0, r7, 0 + movs r1, 0 + bl sub_8130FD4 + movs r0, 0x1 + negs r0, r0 + str r6, [sp] + movs r1, 0x2 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + mov r0, r9 + subs r0, 0x8 + add r0, r8 + ldr r1, _0812F4A4 @ =sub_812F4A8 + str r1, [r0] +_0812F476: + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F484: .4byte gUnknown_8415D48 +_0812F488: .4byte gUnknown_8460BA8 +_0812F48C: .4byte gUnknown_203B108 +_0812F490: .4byte gUnknown_8462EC0 +_0812F494: .4byte gUnknown_30030F0 +_0812F498: .4byte gUnknown_8462EEC +_0812F49C: .4byte gUnknown_8462EF0 +_0812F4A0: .4byte gUnknown_202063C +_0812F4A4: .4byte sub_812F4A8 + thumb_func_end sub_812F33C + + thumb_func_start sub_812F4A8 +sub_812F4A8: @ 812F4A8 + push {r4-r7,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r6, r0, 3 + ldr r7, _0812F4D8 @ =gUnknown_3005098 + adds r5, r6, r7 + ldr r0, _0812F4DC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r3, r0, r1 + ldrb r1, [r3] + adds r4, r0, 0 + cmp r1, 0x4 + bls _0812F4CC + b _0812F6C0 +_0812F4CC: + lsls r0, r1, 2 + ldr r1, _0812F4E0 @ =_0812F4E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812F4D8: .4byte gUnknown_3005098 +_0812F4DC: .4byte gUnknown_30030F0 +_0812F4E0: .4byte _0812F4E4 + .align 2, 0 +_0812F4E4: + .4byte _0812F4F8 + .4byte _0812F538 + .4byte _0812F5B4 + .4byte _0812F644 + .4byte _0812F688 +_0812F4F8: + ldr r0, _0812F534 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0812F506 + b _0812F71C +_0812F506: + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + movs r1, 0x85 + lsls r1, 5 + movs r0, 0x44 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x1F + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + b _0812F676 + .align 2, 0 +_0812F534: .4byte gUnknown_2037AB8 +_0812F538: + ldrh r1, [r4, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0812F544 + b _0812F71C +_0812F544: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812F55C + ldr r0, _0812F558 @ =gUnknown_203B108 + ldr r1, [r0] + ldrh r0, [r1, 0x12] + adds r0, 0x1 + b _0812F56A + .align 2, 0 +_0812F558: .4byte gUnknown_203B108 +_0812F55C: + ldr r0, _0812F58C @ =gUnknown_203B108 + ldr r1, [r0] + ldrh r0, [r1, 0x12] + cmp r0, 0 + bne _0812F568 + b _0812F71C +_0812F568: + subs r0, 0x1 +_0812F56A: + strh r0, [r1, 0x12] + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0812F58C @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x12] + cmp r0, 0x3 + bne _0812F594 + ldr r0, _0812F590 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + b _0812F71C + .align 2, 0 +_0812F58C: .4byte gUnknown_203B108 +_0812F590: .4byte gUnknown_30030F0 +_0812F594: + ldr r1, _0812F5B0 @ =0x00000241 + movs r0, 0x50 + bl sub_8000A38 + ldrh r0, [r5, 0x1E] + movs r1, 0x10 + subs r1, r0 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + b _0812F6A2 + .align 2, 0 +_0812F5B0: .4byte 0x00000241 +_0812F5B4: + ldrh r1, [r5, 0x1E] + subs r1, 0x2 + strh r1, [r5, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0 + ble _0812F5D6 + b _0812F71C +_0812F5D6: + ldrb r0, [r5, 0x1C] + movs r1, 0 + bl sub_800445C + ldrb r0, [r5, 0x1C] + movs r1, 0x1 + str r1, [sp] + movs r2, 0 + str r2, [sp, 0x4] + ldr r1, _0812F620 @ =gUnknown_8462EEC + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r2, _0812F624 @ =gUnknown_8462EF0 + ldr r4, _0812F628 @ =gUnknown_203B108 + ldr r1, [r4] + ldrh r1, [r1, 0x12] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x5 + bl sub_812E5A4 + ldr r0, [r4] + ldrh r0, [r0, 0x12] + cmp r0, 0 + bne _0812F630 + bl sub_810F71C + ldr r0, _0812F62C @ =gUnknown_8415D48 + movs r1, 0 + movs r2, 0x1 + bl sub_810F5E8 + b _0812F6A2 + .align 2, 0 +_0812F620: .4byte gUnknown_8462EEC +_0812F624: .4byte gUnknown_8462EF0 +_0812F628: .4byte gUnknown_203B108 +_0812F62C: .4byte gUnknown_8415D48 +_0812F630: + bl sub_810F71C + ldr r0, _0812F640 @ =gUnknown_8415D50 + movs r1, 0 + movs r2, 0x1 + bl sub_810F5E8 + b _0812F6A2 + .align 2, 0 +_0812F640: .4byte gUnknown_8415D50 +_0812F644: + ldrh r1, [r5, 0x1E] + adds r1, 0x2 + strh r1, [r5, 0x1E] + movs r4, 0x10 + subs r0, r4, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0xF + ble _0812F71C + strh r4, [r5, 0x1E] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 +_0812F676: + ldr r0, _0812F684 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _0812F71C + .align 2, 0 +_0812F684: .4byte gUnknown_30030F0 +_0812F688: + ldr r1, _0812F6B4 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x12] + bl sub_8006398 + ldr r0, _0812F6B8 @ =0x00000145 + bl sub_80722A0 + movs r0, 0x18 + strh r0, [r5, 0x1E] +_0812F6A2: + ldr r1, _0812F6BC @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0812F71C + .align 2, 0 +_0812F6B4: .4byte gUnknown_3005090 +_0812F6B8: .4byte 0x00000145 +_0812F6BC: .4byte gUnknown_30030F0 +_0812F6C0: + ldrh r0, [r5, 0x1E] + movs r1, 0x1E + ldrsh r4, [r5, r1] + cmp r4, 0 + beq _0812F6D0 + subs r0, 0x1 + strh r0, [r5, 0x1E] + b _0812F71C +_0812F6D0: + strb r4, [r3] + ldr r0, _0812F724 @ =gUnknown_203B108 + ldr r0, [r0] + strh r4, [r0, 0x12] + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0812F728 @ =sub_812F72C + str r1, [r0] +_0812F71C: + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F724: .4byte gUnknown_203B108 +_0812F728: .4byte sub_812F72C + thumb_func_end sub_812F4A8 + + thumb_func_start sub_812F72C +sub_812F72C: @ 812F72C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r7, r0, 3 + ldr r0, _0812F7B4 @ =gUnknown_3005098 + mov r8, r0 + adds r4, r7, r0 + ldr r0, _0812F7B8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _0812F7A6 + bl sub_810F740 + ldrb r0, [r4, 0x1C] + movs r1, 0 + bl sub_800445C + ldrb r0, [r4, 0x1C] + bl sub_80040B8 + ldrb r0, [r4, 0x1C] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4, 0x1C] + bl sub_8003E3C + strh r6, [r4, 0x1C] + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + adds r0, r5, 0 + movs r1, 0 + bl sub_8131168 + movs r0, 0x50 + strh r0, [r4, 0x6] + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0812F7BC @ =sub_812F7C0 + str r1, [r0] +_0812F7A6: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F7B4: .4byte gUnknown_3005098 +_0812F7B8: .4byte gUnknown_2037AB8 +_0812F7BC: .4byte sub_812F7C0 + thumb_func_end sub_812F72C + + thumb_func_start sub_812F7C0 +sub_812F7C0: @ 812F7C0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r7, r0, 3 + ldr r0, _0812F7EC @ =gUnknown_3005098 + mov r8, r0 + adds r5, r7, r0 + movs r0, 0 + str r0, [sp, 0x4] + ldrh r0, [r5, 0x6] + movs r1, 0x6 + ldrsh r6, [r5, r1] + cmp r6, 0 + beq _0812F7F0 + subs r0, 0x1 + strh r0, [r5, 0x6] + b _0812F862 + .align 2, 0 +_0812F7EC: .4byte gUnknown_3005098 +_0812F7F0: + ldr r0, _0812F870 @ =gUnknown_8460CA4 + add r1, sp, 0x4 + bl sub_80F6AA0 + adds r1, r0, 0 + ldr r0, _0812F874 @ =gUnknown_203B108 + ldr r0, [r0] + str r1, [r0] + ldr r2, [sp, 0x4] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r3, 0 + bl sub_80017D0 + ldr r1, _0812F878 @ =gUnknown_8460CE8 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC + adds r0, r4, 0 + bl sub_8130F2C + movs r0, 0x3 + movs r1, 0 + bl sub_81311F4 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8130FD4 + movs r0, 0x92 + lsls r0, 1 + bl sub_80722A0 + movs r0, 0x1 + negs r0, r0 + str r6, [sp] + movs r1, 0x5 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0x50 + strh r0, [r5, 0x6] + movs r0, 0x2 + bl sub_80019BC + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0812F87C @ =sub_812F880 + str r1, [r0] +_0812F862: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812F870: .4byte gUnknown_8460CA4 +_0812F874: .4byte gUnknown_203B108 +_0812F878: .4byte gUnknown_8460CE8 +_0812F87C: .4byte sub_812F880 + thumb_func_end sub_812F7C0 + + thumb_func_start sub_812F880 +sub_812F880: @ 812F880 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0812F8B0 @ =gUnknown_3005098 + adds r2, r0, r1 + ldr r0, _0812F8B4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812F92E + ldrh r0, [r2, 0x6] + movs r1, 0x6 + ldrsh r4, [r2, r1] + cmp r4, 0 + beq _0812F8B8 + subs r0, 0x1 + strh r0, [r2, 0x6] + b _0812F92E + .align 2, 0 +_0812F8B0: .4byte gUnknown_3005098 +_0812F8B4: .4byte gUnknown_2037AB8 +_0812F8B8: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0812F8F0 @ =gUnknown_81C5C78 + ldr r5, _0812F8F4 @ =gUnknown_2021D18 + cmp r2, r5 + beq _0812F8FC + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0812F8F8 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + b _0812F918 + .align 2, 0 +_0812F8F0: .4byte gUnknown_81C5C78 +_0812F8F4: .4byte gUnknown_2021D18 +_0812F8F8: .4byte gUnknown_203B108 +_0812F8FC: + ldr r0, _0812F938 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0812F918: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0812F93C @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812F940 @ =sub_812F944 + str r0, [r1] +_0812F92E: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812F938: .4byte gUnknown_203B108 +_0812F93C: .4byte gUnknown_3005090 +_0812F940: .4byte sub_812F944 + thumb_func_end sub_812F880 + + thumb_func_start sub_812F944 +sub_812F944: @ 812F944 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _0812F9D6 + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0812F994 @ =gUnknown_81C5D06 + ldr r5, _0812F998 @ =gUnknown_2021D18 + cmp r2, r5 + beq _0812F9A0 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0812F99C @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + b _0812F9BC + .align 2, 0 +_0812F994: .4byte gUnknown_81C5D06 +_0812F998: .4byte gUnknown_2021D18 +_0812F99C: .4byte gUnknown_203B108 +_0812F9A0: + ldr r0, _0812F9E0 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0812F9BC: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, _0812F9E4 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1E + strh r1, [r0, 0xE] + ldr r1, _0812F9E8 @ =sub_812F9EC + str r1, [r0] +_0812F9D6: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812F9E0: .4byte gUnknown_203B108 +_0812F9E4: .4byte gUnknown_3005090 +_0812F9E8: .4byte sub_812F9EC + thumb_func_end sub_812F944 + + thumb_func_start sub_812F9EC +sub_812F9EC: @ 812F9EC + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _0812FA68 @ =gUnknown_3005098 + adds r4, r6, r7 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + bne _0812FA5E + ldrh r1, [r4, 0x6] + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0812FA1A + subs r0, r1, 0x1 + strh r0, [r4, 0x6] +_0812FA1A: + adds r4, r7, 0 + subs r4, 0x8 + adds r4, r6, r4 + ldrb r0, [r4, 0x10] + ldr r1, _0812FA6C @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + movs r3, 0x3E + adds r3, r2 + mov r12, r3 + ldrb r3, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + mov r3, r12 + strb r1, [r3] + strh r5, [r2, 0x2E] + ldrb r1, [r2, 0x5] + lsrs r1, 4 + str r5, [sp] + str r5, [sp, 0x4] + movs r2, 0x20 + str r2, [sp, 0x8] + ldr r2, _0812FA70 @ =0xffff1fff + str r2, [sp, 0xC] + movs r2, 0x64 + movs r3, 0x42 + bl sub_804B908 + ldr r0, _0812FA74 @ =sub_812FA78 + str r0, [r4] + strh r5, [r4, 0xE] +_0812FA5E: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812FA68: .4byte gUnknown_3005098 +_0812FA6C: .4byte gUnknown_202063C +_0812FA70: .4byte 0xffff1fff +_0812FA74: .4byte sub_812FA78 + thumb_func_end sub_812F9EC + + thumb_func_start sub_812FA78 +sub_812FA78: @ 812FA78 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + beq _0812FAA0 + ldr r0, _0812FAFC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0x5F + ble _0812FAA0 + ldr r0, _0812FB00 @ =sub_812FB4C + str r0, [r1] +_0812FAA0: + ldr r1, _0812FAFC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + ldrh r3, [r2, 0xE] + movs r0, 0xE + ldrsh r1, [r2, r0] + ldr r0, _0812FB04 @ =0x00003fff + cmp r1, r0 + bgt _0812FB40 + adds r0, r3, 0x1 + movs r5, 0 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + bne _0812FB40 + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0812FB08 @ =gUnknown_81C5D12 + ldr r4, _0812FB0C @ =gUnknown_2021D18 + cmp r2, r4 + beq _0812FB14 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0812FB10 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r4, 0 + bl sub_80F6CD0 + b _0812FB30 + .align 2, 0 +_0812FAFC: .4byte gUnknown_3005090 +_0812FB00: .4byte sub_812FB4C +_0812FB04: .4byte 0x00003fff +_0812FB08: .4byte gUnknown_81C5D12 +_0812FB0C: .4byte gUnknown_2021D18 +_0812FB10: .4byte gUnknown_203B108 +_0812FB14: + ldr r0, _0812FB48 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0812FB30: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x1D + movs r1, 0 + bl sub_8071DF0 +_0812FB40: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812FB48: .4byte gUnknown_203B108 + thumb_func_end sub_812FA78 + + thumb_func_start sub_812FB4C +sub_812FB4C: @ 812FB4C + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _0812FBDA + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0812FB9C @ =gUnknown_81C5D4B + ldr r5, _0812FBA0 @ =gUnknown_2021D18 + cmp r2, r5 + beq _0812FBA8 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0812FBA4 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + b _0812FBC4 + .align 2, 0 +_0812FB9C: .4byte gUnknown_81C5D4B +_0812FBA0: .4byte gUnknown_2021D18 +_0812FBA4: .4byte gUnknown_203B108 +_0812FBA8: + ldr r0, _0812FBE4 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0812FBC4: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0812FBE8 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812FBEC @ =sub_812FBF0 + str r0, [r1] +_0812FBDA: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812FBE4: .4byte gUnknown_203B108 +_0812FBE8: .4byte gUnknown_3005090 +_0812FBEC: .4byte sub_812FBF0 + thumb_func_end sub_812FB4C + + thumb_func_start sub_812FBF0 +sub_812FBF0: @ 812FBF0 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + bne _0812FC4E + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + ldr r0, _0812FC58 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r0 + ldrb r0, [r4, 0x10] + ldr r2, _0812FC5C @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + str r5, [sp] + str r5, [sp, 0x4] + movs r2, 0x20 + str r2, [sp, 0x8] + ldr r2, _0812FC60 @ =0xffff1f3f + str r2, [sp, 0xC] + movs r2, 0x64 + movs r3, 0x42 + bl sub_804BB98 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x14] + movs r0, 0x30 + strh r0, [r4, 0xE] + movs r0, 0x40 + strh r0, [r4, 0x8] + ldr r0, _0812FC64 @ =sub_812FC68 + str r0, [r4] +_0812FC4E: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812FC58: .4byte gUnknown_3005090 +_0812FC5C: .4byte gUnknown_202063C +_0812FC60: .4byte 0xffff1f3f +_0812FC64: .4byte sub_812FC68 + thumb_func_end sub_812FBF0 + + thumb_func_start sub_812FC68 +sub_812FC68: @ 812FC68 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0812FCA4 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0812FCAC + cmp r0, 0x17 + bgt _0812FC9A + ldr r2, _0812FCA8 @ =gUnknown_202063C + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] +_0812FC9A: + ldrh r0, [r5] + subs r0, 0x1 + strh r0, [r5] + b _0812FD62 + .align 2, 0 +_0812FCA4: .4byte gUnknown_3005098 +_0812FCA8: .4byte gUnknown_202063C +_0812FCAC: + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r0, 0x30 + bne _0812FCD6 + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0812FCE8 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 +_0812FCD6: + ldrh r0, [r5, 0x6] + movs r1, 0x6 + ldrsh r4, [r5, r1] + cmp r4, 0 + beq _0812FCEC + subs r0, 0x1 + strh r0, [r5, 0x6] + b _0812FD62 + .align 2, 0 +_0812FCE8: .4byte gUnknown_202063C +_0812FCEC: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0812FD24 @ =gUnknown_81C5DBD + ldr r5, _0812FD28 @ =gUnknown_2021D18 + cmp r2, r5 + beq _0812FD30 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0812FD2C @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + b _0812FD4C + .align 2, 0 +_0812FD24: .4byte gUnknown_81C5DBD +_0812FD28: .4byte gUnknown_2021D18 +_0812FD2C: .4byte gUnknown_203B108 +_0812FD30: + ldr r0, _0812FD6C @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0812FD4C: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0812FD70 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812FD74 @ =sub_812FD78 + str r0, [r1] +_0812FD62: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812FD6C: .4byte gUnknown_203B108 +_0812FD70: .4byte gUnknown_3005090 +_0812FD74: .4byte sub_812FD78 + thumb_func_end sub_812FC68 + + thumb_func_start sub_812FD78 +sub_812FD78: @ 812FD78 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r5, r0, 3 + ldr r7, _0812FDB8 @ =gUnknown_3005098 + adds r6, r5, r7 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0812FDB2 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_813144C + movs r0, 0x30 + strh r0, [r6, 0x6] + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _0812FDBC @ =sub_812FDC0 + str r1, [r0] +_0812FDB2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812FDB8: .4byte gUnknown_3005098 +_0812FDBC: .4byte sub_812FDC0 + thumb_func_end sub_812FD78 + + thumb_func_start sub_812FDC0 +sub_812FDC0: @ 812FDC0 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0812FDEC @ =gUnknown_3005098 + adds r1, r0, r1 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0812FE72 + ldrh r0, [r1, 0x6] + movs r2, 0x6 + ldrsh r4, [r1, r2] + cmp r4, 0 + beq _0812FDF0 + subs r0, 0x1 + strh r0, [r1, 0x6] + b _0812FE72 + .align 2, 0 +_0812FDEC: .4byte gUnknown_3005098 +_0812FDF0: + movs r2, 0x3C + negs r2, r2 + adds r0, r2, 0 + strh r0, [r1, 0x2] + bl sub_8131310 + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0812FE34 @ =gUnknown_81C59D5 + ldr r5, _0812FE38 @ =gUnknown_2021D18 + cmp r2, r5 + beq _0812FE40 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0812FE3C @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + b _0812FE5C + .align 2, 0 +_0812FE34: .4byte gUnknown_81C59D5 +_0812FE38: .4byte gUnknown_2021D18 +_0812FE3C: .4byte gUnknown_203B108 +_0812FE40: + ldr r0, _0812FE7C @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0812FE5C: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0812FE80 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812FE84 @ =sub_812FE88 + str r0, [r1] +_0812FE72: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812FE7C: .4byte gUnknown_203B108 +_0812FE80: .4byte gUnknown_3005090 +_0812FE84: .4byte sub_812FE88 + thumb_func_end sub_812FDC0 + + thumb_func_start sub_812FE88 +sub_812FE88: @ 812FE88 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0 + bne _0812FF7E + ldr r0, _0812FF8C @ =gUnknown_8462EC8 + bl sub_8003CE4 + ldr r1, _0812FF90 @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r5, r1 + strh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldrh r4, [r5, 0x22] + lsls r4, 24 + lsrs r4, 24 + bl sub_80F796C + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + adds r0, r4, 0 + movs r1, 0x1 + movs r3, 0xE + bl sub_810F2E8 + ldrh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x11 + bl sub_800445C + ldr r4, _0812FF94 @ =gUnknown_203B108 + ldr r0, [r4] + movs r1, 0x1 + mov r9, r1 + mov r1, r9 + strb r1, [r0, 0x1C] + ldr r0, [r4] + movs r6, 0x2 + strb r6, [r0, 0x1D] + ldr r0, [r4] + movs r1, 0x3 + mov r8, r1 + mov r1, r8 + strb r1, [r0, 0x1E] + ldrh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x1C + str r1, [sp] + str r7, [sp, 0x4] + ldr r1, _0812FF98 @ =gUnknown_8415D93 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x8 + movs r3, 0x1 + bl sub_812E51C + ldr r0, [r4] + mov r1, r9 + strb r1, [r0, 0x1C] + ldr r0, [r4] + strb r6, [r0, 0x1D] + ldr r0, [r4] + mov r1, r8 + strb r1, [r0, 0x1E] + ldrh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x1C + str r1, [sp] + str r7, [sp, 0x4] + ldr r1, _0812FF9C @ =gUnknown_8415D97 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x8 + movs r3, 0x11 + bl sub_812E51C + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x22] + lsls r1, 24 + lsrs r1, 24 + str r0, [sp] + str r6, [sp, 0x4] + str r7, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x1 + bl sub_810F7D8 + ldrh r0, [r5, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0812FFA0 @ =sub_812FFA4 + str r0, [r5] +_0812FF7E: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812FF8C: .4byte gUnknown_8462EC8 +_0812FF90: .4byte gUnknown_3005090 +_0812FF94: .4byte gUnknown_203B108 +_0812FF98: .4byte gUnknown_8415D93 +_0812FF9C: .4byte gUnknown_8415D97 +_0812FFA0: .4byte sub_812FFA4 + thumb_func_end sub_812FE88 + + thumb_func_start sub_812FFA4 +sub_812FFA4: @ 812FFA4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_810FA04 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0812FFC8 + cmp r1, 0 + bgt _0812FFC4 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + blt _0812FFCE + b _0812FFDC +_0812FFC4: + cmp r1, 0x1 + bne _0812FFCE +_0812FFC8: + ldr r0, _0812FFE4 @ =gUnknown_300500C + ldr r0, [r0] + strb r1, [r0, 0x8] +_0812FFCE: + ldr r0, _0812FFE8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812FFEC @ =sub_812FFF0 + str r0, [r1] +_0812FFDC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812FFE4: .4byte gUnknown_300500C +_0812FFE8: .4byte gUnknown_3005090 +_0812FFEC: .4byte sub_812FFF0 + thumb_func_end sub_812FFA4 + + thumb_func_start sub_812FFF0 +sub_812FFF0: @ 812FFF0 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r5, r0, 2 + adds r5, r0 + lsls r5, 3 + ldr r6, _08130048 @ =gUnknown_3005098 + adds r4, r5, r6 + ldrb r0, [r4, 0x1A] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r4, 0x1A] + bl sub_8003E3C + movs r0, 0 + strh r0, [r4, 0x1A] + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + subs r6, 0x8 + adds r5, r6 + ldr r0, _0813004C @ =sub_8130050 + str r0, [r5] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08130048: .4byte gUnknown_3005098 +_0813004C: .4byte sub_8130050 + thumb_func_end sub_812FFF0 + + thumb_func_start sub_8130050 +sub_8130050: @ 8130050 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813006C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08130070 + movs r0, 0 + movs r1, 0 + bl sub_81311F4 + b _08130078 + .align 2, 0 +_0813006C: .4byte gUnknown_300500C +_08130070: + movs r0, 0x1 + movs r1, 0 + bl sub_81311F4 +_08130078: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_81315CC + ldr r1, _08130098 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x20 + strh r1, [r0, 0xE] + ldr r1, _0813009C @ =sub_81300A0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08130098: .4byte gUnknown_3005090 +_0813009C: .4byte sub_81300A0 + thumb_func_end sub_8130050 + + thumb_func_start sub_81300A0 +sub_81300A0: @ 81300A0 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _081300CC @ =gUnknown_3005098 + adds r1, r0, r1 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0813014A + ldrh r0, [r1, 0x6] + movs r2, 0x6 + ldrsh r4, [r1, r2] + cmp r4, 0 + beq _081300D0 + subs r0, 0x1 + strh r0, [r1, 0x6] + b _0813014A + .align 2, 0 +_081300CC: .4byte gUnknown_3005098 +_081300D0: + strh r4, [r1, 0x2] + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0813010C @ =gUnknown_81C5DEA + ldr r5, _08130110 @ =gUnknown_2021D18 + cmp r2, r5 + beq _08130118 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _08130114 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + b _08130134 + .align 2, 0 +_0813010C: .4byte gUnknown_81C5DEA +_08130110: .4byte gUnknown_2021D18 +_08130114: .4byte gUnknown_203B108 +_08130118: + ldr r0, _08130154 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_08130134: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _08130158 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0813015C @ =sub_8130160 + str r0, [r1] +_0813014A: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08130154: .4byte gUnknown_203B108 +_08130158: .4byte gUnknown_3005090 +_0813015C: .4byte sub_8130160 + thumb_func_end sub_81300A0 + + thumb_func_start sub_8130160 +sub_8130160: @ 8130160 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _0813019A + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _081301A4 @ =gUnknown_203B108 + ldr r0, [r0] + strh r4, [r0, 0x10] + ldr r1, _081301A8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _081301AC @ =sub_81303B4 + str r1, [r0] +_0813019A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081301A4: .4byte gUnknown_203B108 +_081301A8: .4byte gUnknown_3005090 +_081301AC: .4byte sub_81303B4 + thumb_func_end sub_8130160 + + thumb_func_start sub_81301B0 +sub_81301B0: @ 81301B0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + ldr r7, _081301F8 @ =gUnknown_3005098 + adds r4, r6, r7 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _08130218 + ldrh r2, [r4, 0x2] + movs r1, 0x2 + ldrsh r0, [r4, r1] + movs r1, 0x3C + negs r1, r1 + cmp r0, r1 + ble _08130200 + subs r0, r2, 0x2 + strh r0, [r4, 0x2] + ldr r1, _081301FC @ =gUnknown_2021BC8 + ldrh r0, [r1] + adds r0, 0x2 + strh r0, [r1] + movs r1, 0x80 + lsls r1, 2 + movs r0, 0x2 + movs r2, 0x2 + bl sub_8001B90 + b _08130218 + .align 2, 0 +_081301F8: .4byte gUnknown_3005098 +_081301FC: .4byte gUnknown_2021BC8 +_08130200: + strh r1, [r4, 0x2] + ldr r0, _08130220 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r1, [r0, 0x10] + adds r0, r5, 0 + bl sub_8131660 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _08130224 @ =sub_8130324 + str r1, [r0] +_08130218: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08130220: .4byte gUnknown_203B108 +_08130224: .4byte sub_8130324 + thumb_func_end sub_81301B0 + + thumb_func_start sub_8130228 +sub_8130228: @ 8130228 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _08130278 @ =gUnknown_203B108 + ldr r0, [r4] + ldrb r1, [r0, 0x10] + adds r0, r6, 0 + bl sub_8131660 + ldr r0, [r4] + ldrh r4, [r0, 0x10] + cmp r4, 0 + bne _081302A6 + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0813027C @ =gUnknown_81C5DEA + ldr r5, _08130280 @ =gUnknown_2021D18 + cmp r2, r5 + beq _08130284 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_8008FCC + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r5, 0 + movs r3, 0 + bl sub_80F6CD0 + b _0813029C + .align 2, 0 +_08130278: .4byte gUnknown_203B108 +_0813027C: .4byte gUnknown_81C5DEA +_08130280: .4byte gUnknown_2021D18 +_08130284: + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + movs r3, 0 + bl sub_80F6CD0 +_0813029C: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + b _08130306 +_081302A6: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _081302DC @ =gUnknown_81C5E91 + ldr r4, _081302E0 @ =gUnknown_2021D18 + cmp r2, r4 + beq _081302E4 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_8008FCC + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r4, 0 + movs r3, 0 + bl sub_80F6CD0 + b _081302FE + .align 2, 0 +_081302DC: .4byte gUnknown_81C5E91 +_081302E0: .4byte gUnknown_2021D18 +_081302E4: + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + movs r3, 0 + bl sub_80F6CD0 +_081302FE: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 +_08130306: + ldr r0, _0813031C @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _08130320 @ =sub_8130324 + str r0, [r1] + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813031C: .4byte gUnknown_3005090 +_08130320: .4byte sub_8130324 + thumb_func_end sub_8130228 + + thumb_func_start sub_8130324 +sub_8130324: @ 8130324 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _0813037C @ =gUnknown_3005098 + adds r5, r6, r7 + bl sub_810F998 + lsls r0, 24 + asrs r4, r0, 24 + cmp r4, 0 + beq _08130388 + cmp r4, 0 + ble _081303A8 + cmp r4, 0x4 + bgt _081303A8 + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r5, 0x1A] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r5, 0x1A] + bl sub_8003E3C + ldr r0, _08130380 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r0, [r0, 0x10] + subs r1, r4, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_8131754 + movs r0, 0x1 + strh r0, [r5, 0x1E] + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _08130384 @ =sub_8130464 + b _081303A6 + .align 2, 0 +_0813037C: .4byte gUnknown_3005098 +_08130380: .4byte gUnknown_203B108 +_08130384: .4byte sub_8130464 +_08130388: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _081303B0 @ =sub_81303B4 +_081303A6: + str r1, [r0] +_081303A8: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081303B0: .4byte sub_81303B4 + thumb_func_end sub_8130324 + + thumb_func_start sub_81303B4 +sub_81303B4: @ 81303B4 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _081303F8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0813044C + ldr r4, _081303FC @ =gUnknown_203B108 + ldr r0, [r4] + ldrb r0, [r0, 0x10] + movs r1, 0 + bl sub_8131754 + ldr r0, [r4] + ldrh r0, [r0, 0x10] + cmp r0, 0 + bne _08130408 + ldr r0, _08130400 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r2, [r1, 0x8] + str r5, [sp] + ldr r0, _08130404 @ =sub_8130C64 + str r0, [sp, 0x4] + movs r0, 0 + movs r3, 0 + bl sub_809D954 + b _08130440 + .align 2, 0 +_081303F8: .4byte gUnknown_2037AB8 +_081303FC: .4byte gUnknown_203B108 +_08130400: .4byte gUnknown_300500C +_08130404: .4byte sub_8130C64 +_08130408: + ldr r0, _08130454 @ =gUnknown_3005090 + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_810F4D8 + ldrh r0, [r4, 0x22] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003E3C + ldr r0, _08130458 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _0813045C @ =0x00003a4c + adds r1, r0 + str r5, [sp] + ldr r0, _08130460 @ =sub_8130C64 + str r0, [sp, 0x4] + movs r0, 0x4 + movs r2, 0 + movs r3, 0 + bl sub_809D954 +_08130440: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8131168 + bl sub_8003ECC +_0813044C: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08130454: .4byte gUnknown_3005090 +_08130458: .4byte gUnknown_3005008 +_0813045C: .4byte 0x00003a4c +_08130460: .4byte sub_8130C64 + thumb_func_end sub_81303B4 + + thumb_func_start sub_8130464 +sub_8130464: @ 8130464 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _081304A0 @ =gUnknown_3005098 + adds r5, r6, r7 + ldr r0, _081304A4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08130544 + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _08130500 + ldr r0, _081304A8 @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x10] + cmp r0, 0 + bne _081304B4 + ldr r0, _081304AC @ =gUnknown_2021D18 + ldr r1, _081304B0 @ =gUnknown_81C5E13 + bl sub_8008FCC + b _081304BC + .align 2, 0 +_081304A0: .4byte gUnknown_3005098 +_081304A4: .4byte gUnknown_2037AB8 +_081304A8: .4byte gUnknown_203B108 +_081304AC: .4byte gUnknown_2021D18 +_081304B0: .4byte gUnknown_81C5E13 +_081304B4: + ldr r0, _081304F4 @ =gUnknown_2021D18 + ldr r1, _081304F8 @ =gUnknown_81C5EB5 + bl sub_8008FCC +_081304BC: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _081304F4 @ =gUnknown_2021D18 + ldr r0, _081304FC @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + movs r4, 0 + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + strh r4, [r5, 0x1E] + movs r0, 0x19 + strh r0, [r5, 0x6] + b _08130544 + .align 2, 0 +_081304F4: .4byte gUnknown_2021D18 +_081304F8: .4byte gUnknown_81C5EB5 +_081304FC: .4byte gUnknown_203B108 +_08130500: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _08130544 + ldrh r0, [r5, 0x6] + movs r1, 0x6 + ldrsh r4, [r5, r1] + cmp r4, 0 + beq _0813051C + subs r0, 0x1 + strh r0, [r5, 0x6] + b _08130544 +_0813051C: + bl sub_80F796C + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0813054C @ =gUnknown_8462ED0 + str r0, [sp] + movs r0, 0xE + str r0, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _08130550 @ =sub_8130554 + str r1, [r0] +_08130544: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813054C: .4byte gUnknown_8462ED0 +_08130550: .4byte sub_8130554 + thumb_func_end sub_8130464 + + thumb_func_start sub_8130554 +sub_8130554: @ 8130554 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r5, r0, 24 + cmp r5, 0 + beq _0813057C + cmp r5, 0 + bgt _08130576 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _08130604 + b _0813063E +_08130576: + cmp r5, 0x1 + beq _08130604 + b _0813063E +_0813057C: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _081305B0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r6, r0, r1 + movs r0, 0x28 + strh r0, [r6, 0xE] + ldr r7, _081305B4 @ =gUnknown_203B108 + ldr r0, [r7] + ldrh r0, [r0, 0x10] + cmp r0, 0 + bne _081305BC + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_813144C + ldr r0, _081305B8 @ =sub_8130650 + str r0, [r6] + b _0813063E + .align 2, 0 +_081305B0: .4byte gUnknown_3005090 +_081305B4: .4byte gUnknown_203B108 +_081305B8: .4byte sub_8130650 +_081305BC: + ldr r4, _081305F8 @ =gUnknown_2021D18 + ldr r1, _081305FC @ =gUnknown_81C5EC5 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r0, [r7] + ldrb r3, [r0, 0x1F] + str r5, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r4, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _08130600 @ =sub_8130694 + str r0, [r6] + b _0813063E + .align 2, 0 +_081305F8: .4byte gUnknown_2021D18 +_081305FC: .4byte gUnknown_81C5EC5 +_08130600: .4byte sub_8130694 +_08130604: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08130624 @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x10] + cmp r0, 0 + bne _08130630 + ldr r0, _08130628 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0813062C @ =sub_8130160 + b _0813063C + .align 2, 0 +_08130624: .4byte gUnknown_203B108 +_08130628: .4byte gUnknown_3005090 +_0813062C: .4byte sub_8130160 +_08130630: + ldr r0, _08130648 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0813064C @ =sub_8130228 +_0813063C: + str r0, [r1] +_0813063E: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08130648: .4byte gUnknown_3005090 +_0813064C: .4byte sub_8130228 + thumb_func_end sub_8130554 + + thumb_func_start sub_8130650 +sub_8130650: @ 8130650 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r5, r1, 3 + ldr r6, _0813067C @ =gUnknown_3005098 + adds r4, r5, r6 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813068A + bl sub_8131310 + ldrh r1, [r4, 0x6] + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08130680 + subs r0, r1, 0x1 + strh r0, [r4, 0x6] + b _0813068A + .align 2, 0 +_0813067C: .4byte gUnknown_3005098 +_08130680: + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _08130690 @ =sub_81306D4 + str r1, [r0] +_0813068A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08130690: .4byte sub_81306D4 + thumb_func_end sub_8130650 + + thumb_func_start sub_8130694 +sub_8130694: @ 8130694 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _081306C4 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_813144C + ldr r0, _081306CC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _081306D0 @ =sub_81307D0 + str r0, [r1] +_081306C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081306CC: .4byte gUnknown_3005090 +_081306D0: .4byte sub_81307D0 + thumb_func_end sub_8130694 + + thumb_func_start sub_81306D4 +sub_81306D4: @ 81306D4 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + ldr r0, _08130710 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + movs r1, 0 + strh r1, [r4, 0xA] + ldr r0, _08130714 @ =gUnknown_2021BC8 + strh r1, [r0] + movs r0, 0x2 + bl sub_81311F4 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_81315CC + ldr r0, _08130718 @ =sub_813071C + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08130710: .4byte gUnknown_3005090 +_08130714: .4byte gUnknown_2021BC8 +_08130718: .4byte sub_813071C + thumb_func_end sub_81306D4 + + thumb_func_start sub_813071C +sub_813071C: @ 813071C + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08130770 @ =gUnknown_3005098 + adds r0, r1 + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _081307BC + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _08130774 @ =gUnknown_81C5E2E + ldr r4, _08130778 @ =gUnknown_2021D18 + cmp r2, r4 + beq _08130780 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_8008FCC + ldr r0, _0813077C @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r4, 0 + bl sub_80F6CD0 + b _0813079E + .align 2, 0 +_08130770: .4byte gUnknown_3005098 +_08130774: .4byte gUnknown_81C5E2E +_08130778: .4byte gUnknown_2021D18 +_0813077C: .4byte gUnknown_203B108 +_08130780: + ldr r0, _081307C4 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + bl sub_80F6CD0 +_0813079E: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _081307C4 @ =gUnknown_203B108 + ldr r1, [r0] + movs r0, 0x1 + strh r0, [r1, 0x10] + ldr r1, _081307C8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _081307CC @ =sub_81301B0 + str r1, [r0] +_081307BC: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081307C4: .4byte gUnknown_203B108 +_081307C8: .4byte gUnknown_3005090 +_081307CC: .4byte sub_81301B0 + thumb_func_end sub_813071C + + thumb_func_start sub_81307D0 +sub_81307D0: @ 81307D0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _081307FC @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08130846 + bl sub_8131310 + ldrh r1, [r4, 0x6] + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08130800 + subs r0, r1, 0x1 + strh r0, [r4, 0x6] + b _08130846 + .align 2, 0 +_081307FC: .4byte gUnknown_3005098 +_08130800: + ldr r0, _08130814 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08130818 + movs r0, 0 + movs r1, 0 + bl sub_81311F4 + b _08130820 + .align 2, 0 +_08130814: .4byte gUnknown_300500C +_08130818: + movs r0, 0x1 + movs r1, 0 + bl sub_81311F4 +_08130820: + ldr r0, _0813084C @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + movs r1, 0 + strh r1, [r4, 0xA] + ldr r0, _08130850 @ =gUnknown_2021BC8 + strh r1, [r0] + movs r0, 0x2 + movs r2, 0 + bl sub_8001B90 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_81315CC + ldr r0, _08130854 @ =sub_8130858 + str r0, [r4] +_08130846: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813084C: .4byte gUnknown_3005090 +_08130850: .4byte gUnknown_2021BC8 +_08130854: .4byte sub_8130858 + thumb_func_end sub_81307D0 + + thumb_func_start sub_8130858 +sub_8130858: @ 8130858 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081308BC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _081308B4 + ldr r4, _081308C0 @ =gUnknown_2021D18 + ldr r1, _081308C4 @ =gUnknown_81C5EF4 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r0, _081308C8 @ =gUnknown_203B108 + ldr r0, [r0] + ldrb r3, [r0, 0x1F] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r4, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x1E + strh r0, [r5, 0xE] + ldr r0, _081308CC @ =sub_81308D0 + str r0, [r5] +_081308B4: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081308BC: .4byte gUnknown_3005090 +_081308C0: .4byte gUnknown_2021D18 +_081308C4: .4byte gUnknown_81C5EF4 +_081308C8: .4byte gUnknown_203B108 +_081308CC: .4byte sub_81308D0 + thumb_func_end sub_8130858 + + thumb_func_start sub_81308D0 +sub_81308D0: @ 81308D0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0813090A + ldr r0, _081308FC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r4, r1, r0 + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08130900 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _0813090A + .align 2, 0 +_081308FC: .4byte gUnknown_3005090 +_08130900: + movs r0, 0x4 + bl sub_8071DBC + ldr r0, _08130910 @ =sub_8130914 + str r0, [r4] +_0813090A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08130910: .4byte sub_8130914 + thumb_func_end sub_81308D0 + + thumb_func_start sub_8130914 +sub_8130914: @ 8130914 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0813093C @ =gUnknown_203B108 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x12] + adds r0, r4, 0 + bl sub_8130A38 + adds r0, r4, 0 + bl sub_8130ADC + adds r0, r4, 0 + bl sub_8130940 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813093C: .4byte gUnknown_203B108 + thumb_func_end sub_8130914 + + thumb_func_start sub_8130940 +sub_8130940: @ 8130940 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r6, _08130978 @ =gUnknown_3005098 + adds r5, r4, r6 + movs r0, 0x2 + movs r1, 0x6 + movs r2, 0x1 + bl sub_80019E4 + movs r1, 0 + strh r1, [r5] + strh r1, [r5, 0x2] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r5, 0x4] + strh r1, [r5, 0x1E] + subs r6, 0x8 + adds r4, r6 + ldr r0, _0813097C @ =sub_8130980 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08130978: .4byte gUnknown_3005098 +_0813097C: .4byte sub_8130980 + thumb_func_end sub_8130940 + + thumb_func_start sub_8130980 +sub_8130980: @ 8130980 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r7, r1, 3 + ldr r0, _08130A2C @ =gUnknown_3005098 + mov r8, r0 + adds r5, r7, r0 + ldr r0, _08130A30 @ =gUnknown_203B108 + ldr r1, [r0] + ldrh r0, [r1, 0x12] + adds r0, 0x1 + strh r0, [r1, 0x12] + ldrh r4, [r1, 0x12] + adds r0, r4, 0 + movs r1, 0x14 + bl __umodsi3 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0 + bne _08130A1E + cmp r4, 0x28 + bne _081309BE + movs r0, 0x27 + bl sub_80722CC +_081309BE: + ldrh r0, [r5, 0x4] + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r5, 0x4] + subs r0, 0x8 + lsls r0, 16 + asrs r0, 16 + bl sub_80D8B90 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrh r0, [r5, 0x4] + subs r0, 0x10 + lsls r0, 16 + asrs r0, 16 + bl sub_80D8B90 + movs r1, 0xF0 + lsls r1, 7 + movs r2, 0xA8 + lsls r2, 7 + movs r3, 0x54 + str r3, [sp] + lsls r4, 16 + asrs r4, 16 + str r4, [sp, 0x4] + lsls r0, 16 + asrs r0, 16 + str r0, [sp, 0x8] + str r6, [sp, 0xC] + movs r0, 0x2 + movs r3, 0x78 + bl sub_8001E80 + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0x60 + bgt _08130A1E + movs r0, 0x1 + strh r0, [r5, 0x1E] + movs r0, 0x24 + strh r0, [r5] + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _08130A34 @ =sub_8130BA8 + str r1, [r0] +_08130A1E: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08130A2C: .4byte gUnknown_3005098 +_08130A30: .4byte gUnknown_203B108 +_08130A34: .4byte sub_8130BA8 + thumb_func_end sub_8130980 + + thumb_func_start sub_8130A38 +sub_8130A38: @ 8130A38 + push {lr} + sub sp, 0x4 + ldr r0, _08130A74 @ =sub_8130A80 + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08130A78 @ =gUnknown_3005098 + adds r1, r0 + movs r0, 0 + strh r0, [r1] + strh r0, [r1, 0x2] + strh r0, [r1, 0x4] + strh r0, [r1, 0x1E] + ldr r0, _08130A7C @ =0xffff0fcf + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08130A74: .4byte sub_8130A80 +_08130A78: .4byte gUnknown_3005098 +_08130A7C: .4byte 0xffff0fcf + thumb_func_end sub_8130A38 + + thumb_func_start sub_8130A80 +sub_8130A80: @ 8130A80 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08130AB8 @ =gUnknown_3005098 + adds r2, r0, r1 + ldr r0, _08130ABC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08130AD4 + ldrh r0, [r2, 0x2] + movs r3, 0x2 + ldrsh r1, [r2, r3] + cmp r1, 0 + beq _08130AC0 + adds r0, r4, 0 + bl sub_8077508 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8131168 + b _08130AD4 + .align 2, 0 +_08130AB8: .4byte gUnknown_3005098 +_08130ABC: .4byte gUnknown_2037AB8 +_08130AC0: + adds r0, 0x1 + strh r0, [r2, 0x2] + movs r0, 0xF0 + lsls r0, 8 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_08130AD4: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8130A80 + + thumb_func_start sub_8130ADC +sub_8130ADC: @ 8130ADC + push {lr} + ldr r0, _08130B08 @ =sub_8130B10 + movs r1, 0x2 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08130B0C @ =gUnknown_3005098 + adds r1, r0 + movs r2, 0x8 + strh r2, [r1] + movs r0, 0 + strh r0, [r1, 0x2] + strh r2, [r1, 0x4] + strh r0, [r1, 0x1C] + strh r0, [r1, 0x1E] + pop {r0} + bx r0 + .align 2, 0 +_08130B08: .4byte sub_8130B10 +_08130B0C: .4byte gUnknown_3005098 + thumb_func_end sub_8130ADC + + thumb_func_start sub_8130B10 +sub_8130B10: @ 8130B10 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08130B30 @ =gUnknown_3005098 + adds r4, r0, r1 + ldrh r1, [r4] + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08130B34 + subs r0, r1, 0x1 + strh r0, [r4] + b _08130B96 + .align 2, 0 +_08130B30: .4byte gUnknown_3005098 +_08130B34: + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + bgt _08130B4A + ldrh r1, [r4, 0x4] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08130B4A + subs r0, r1, 0x1 + strh r0, [r4, 0x4] +_08130B4A: + ldrb r2, [r4, 0x1C] + ldr r7, _08130B9C @ =0x00007fff + movs r0, 0x40 + movs r1, 0x20 + adds r3, r7, 0 + bl sub_8045274 + ldrh r1, [r4, 0x1C] + adds r1, 0x1 + strh r1, [r4, 0x1C] + ldrh r0, [r4, 0x2] + subs r0, 0x1 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x4] + strh r0, [r4] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0xE + ble _08130B96 + movs r2, 0 + ldr r6, _08130BA0 @ =gUnknown_20375F8 + adds r3, r7, 0 + ldr r4, _08130BA4 @ =gUnknown_20371F8 +_08130B78: + adds r0, r2, 0 + adds r0, 0x40 + lsls r0, 1 + adds r1, r0, r6 + strh r3, [r1] + adds r0, r4 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _08130B78 + adds r0, r5, 0 + bl sub_8077508 +_08130B96: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08130B9C: .4byte 0x00007fff +_08130BA0: .4byte gUnknown_20375F8 +_08130BA4: .4byte gUnknown_20371F8 + thumb_func_end sub_8130B10 + + thumb_func_start sub_8130BA8 +sub_8130BA8: @ 8130BA8 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08130BCC @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r0, [r4, 0x8] + movs r2, 0x8 + ldrsh r1, [r4, r2] + cmp r1, 0 + beq _08130BD0 + subs r0, 0x1 + strh r0, [r4, 0x8] + b _08130BE2 + .align 2, 0 +_08130BCC: .4byte gUnknown_3005090 +_08130BD0: + str r1, [sp] + movs r0, 0x30 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08130BEC @ =sub_8130BF0 + str r0, [r4] +_08130BE2: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08130BEC: .4byte sub_8130BF0 + thumb_func_end sub_8130BA8 + + thumb_func_start sub_8130BF0 +sub_8130BF0: @ 8130BF0 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08130C14 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08130C10 + ldr r0, _08130C18 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _08130C1C @ =sub_8130C20 + str r0, [r1] +_08130C10: + pop {r0} + bx r0 + .align 2, 0 +_08130C14: .4byte gUnknown_2037AB8 +_08130C18: .4byte gUnknown_3005090 +_08130C1C: .4byte sub_8130C20 + thumb_func_end sub_8130BF0 + + thumb_func_start sub_8130C20 +sub_8130C20: @ 8130C20 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8003ECC + bl sub_8044D80 + ldr r5, _08130C58 @ =gUnknown_203B108 + ldr r0, [r5] + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] + ldr r2, _08130C5C @ =gUnknown_3003E50 + ldrb r1, [r2] + subs r0, 0x2 + ands r0, r1 + strb r0, [r2] + ldr r0, _08130C60 @ =sub_8056644 + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08130C58: .4byte gUnknown_203B108 +_08130C5C: .4byte gUnknown_3003E50 +_08130C60: .4byte sub_8056644 + thumb_func_end sub_8130C20 + + thumb_func_start sub_8130C64 +sub_8130C64: @ 8130C64 + push {r4,r5,lr} + sub sp, 0x10 + ldr r0, _08130C84 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x7 + bls _08130C78 + b _08130F10 +_08130C78: + lsls r0, 2 + ldr r1, _08130C88 @ =_08130C8C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08130C84: .4byte gUnknown_30030F0 +_08130C88: .4byte _08130C8C + .align 2, 0 +_08130C8C: + .4byte _08130CAC + .4byte _08130D18 + .4byte _08130D78 + .4byte _08130DB2 + .4byte _08130DD0 + .4byte _08130DE8 + .4byte _08130E38 + .4byte _08130EB8 +_08130CAC: + movs r0, 0 + bl sub_80006F4 + add r1, sp, 0x8 + movs r0, 0 + strh r0, [r1] + ldr r1, _08130D04 @ =0x040000d4 + add r0, sp, 0x8 + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _08130D08 @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0 + str r2, [sp, 0xC] + add r0, sp, 0xC + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _08130D0C @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + add r0, sp, 0x8 + strh r2, [r0] + str r0, [r1] + ldr r0, _08130D10 @ =0x05000002 + str r0, [r1, 0x4] + ldr r0, _08130D14 @ =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + bl sub_8070528 + bl sub_8087E64 + bl sub_8006B10 + bl sub_80088F0 + bl sub_80F6808 + b _08130F10 + .align 2, 0 +_08130D04: .4byte 0x040000d4 +_08130D08: .4byte 0x8100c000 +_08130D0C: .4byte 0x85000100 +_08130D10: .4byte 0x05000002 +_08130D14: .4byte 0x810001ff +_08130D18: + movs r0, 0 + bl sub_8001618 + ldr r1, _08130D70 @ =gUnknown_8462E58 + movs r0, 0x1 + movs r2, 0x3 + bl sub_8001658 + ldr r4, _08130D74 @ =gUnknown_203B108 + ldr r1, [r4] + movs r0, 0xE1 + lsls r0, 5 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + movs r0, 0xC1 + lsls r0, 5 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + b _08130F10 + .align 2, 0 +_08130D70: .4byte gUnknown_8462E58 +_08130D74: .4byte gUnknown_203B108 +_08130D78: + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + b _08130F10 +_08130DB2: + bl sub_8003ECC + bl sub_80F6C6C + bl sub_80F6C98 + ldr r0, _08130DCC @ =gUnknown_8460568 + movs r1, 0 + movs r2, 0xE0 + bl sub_80703EC + b _08130F10 + .align 2, 0 +_08130DCC: .4byte gUnknown_8460568 +_08130DD0: + ldr r1, _08130DE4 @ =gUnknown_8460CA4 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _08130F10 + .align 2, 0 +_08130DE4: .4byte gUnknown_8460CA4 +_08130DE8: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + beq _08130DF4 + b _08130F1E +_08130DF4: + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r1, _08130E34 @ =gUnknown_8460CE8 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + b _08130F10 + .align 2, 0 +_08130E34: .4byte gUnknown_8460CE8 +_08130E38: + ldr r0, _08130E5C @ =sub_8130464 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08130E60 @ =gUnknown_203B108 + ldr r0, [r0] + ldrh r0, [r0, 0x10] + cmp r0, 0 + bne _08130E72 + ldr r0, _08130E64 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08130E68 + movs r0, 0 + b _08130E6A + .align 2, 0 +_08130E5C: .4byte sub_8130464 +_08130E60: .4byte gUnknown_203B108 +_08130E64: .4byte gUnknown_300500C +_08130E68: + movs r0, 0x1 +_08130E6A: + movs r1, 0 + bl sub_81311F4 + b _08130E7A +_08130E72: + movs r0, 0x2 + movs r1, 0 + bl sub_81311F4 +_08130E7A: + ldr r0, _08130EA8 @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + ldr r0, _08130EAC @ =0x0000ffc4 + strh r0, [r4, 0xA] + ldr r1, _08130EB0 @ =gUnknown_2021BC8 + ldrh r0, [r1] + adds r0, 0x3C + strh r0, [r1] + ldr r1, _08130EB4 @ =0xffffc400 + movs r0, 0x2 + movs r2, 0 + bl sub_8001B90 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8130FD4 + movs r0, 0x1 + strh r0, [r4, 0x26] + b _08130F10 + .align 2, 0 +_08130EA8: .4byte gUnknown_3005090 +_08130EAC: .4byte 0x0000ffc4 +_08130EB0: .4byte gUnknown_2021BC8 +_08130EB4: .4byte 0xffffc400 +_08130EB8: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_8000B68 + ldr r0, _08130F04 @ =sub_812EAFC + bl sub_80006F4 + ldr r2, _08130F08 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08130F0C @ =sub_812EB10 + bl sub_8000544 + b _08130F1E + .align 2, 0 +_08130F04: .4byte sub_812EAFC +_08130F08: .4byte gUnknown_3003E50 +_08130F0C: .4byte sub_812EB10 +_08130F10: + ldr r1, _08130F28 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08130F1E: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08130F28: .4byte gUnknown_30030F0 + thumb_func_end sub_8130C64 + + thumb_func_start sub_8130F2C +sub_8130F2C: @ 8130F2C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _08130FA0 @ =gUnknown_8235194 + movs r0, 0 + bl sub_8044E00 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0x1D + bl sub_800EC8C + ldr r0, _08130FA4 @ =gUnknown_82373F4 + bl sub_800F078 + movs r0, 0x1D + movs r1, 0 + bl sub_803F7D4 + ldr r0, _08130FA8 @ =gUnknown_20244DC + movs r1, 0x60 + movs r2, 0x60 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08130FAC @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r1, r2, r1 + ldr r3, _08130FB0 @ =nullsub_8 + str r3, [r1] + adds r2, r4 + ldrb r3, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x5] + adds r2, 0x3E + ldrb r1, [r2] + orrs r1, r3 + strb r1, [r2] + ldr r2, _08130FB4 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r2 + strh r0, [r1, 0x10] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08130FA0: .4byte gUnknown_8235194 +_08130FA4: .4byte gUnknown_82373F4 +_08130FA8: .4byte gUnknown_20244DC +_08130FAC: .4byte gUnknown_202063C +_08130FB0: .4byte nullsub_8 +_08130FB4: .4byte gUnknown_3005090 + thumb_func_end sub_8130F2C + + thumb_func_start sub_8130FB8 +sub_8130FB8: @ 8130FB8 + ldr r3, _08130FD0 @ =gUnknown_202063C + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + adds r1, 0x2B + ldrb r1, [r1] + strh r1, [r0, 0x26] + bx lr + .align 2, 0 +_08130FD0: .4byte gUnknown_202063C + thumb_func_end sub_8130FB8 + + thumb_func_start sub_8130FD4 +sub_8130FD4: @ 8130FD4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + movs r4, 0 + cmp r1, 0 + beq _08130FF4 + cmp r1, 0x1 + beq _081310C8 + b _08131146 +_08130FF4: + ldr r4, _081310B0 @ =gUnknown_8462EFC + adds r0, r4, 0 + bl sub_800EBCC + adds r0, r4, 0 + adds r0, 0x8 + bl sub_800EBCC + adds r4, 0x10 + adds r0, r4, 0 + bl sub_800EBCC + ldr r0, _081310B4 @ =gUnknown_8462F1C + bl sub_8008928 + ldr r0, _081310B8 @ =gUnknown_846302C + mov r8, r0 + movs r1, 0x10 + movs r2, 0x11 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + ldr r6, _081310BC @ =gUnknown_202063C + lsls r1, r7, 4 + adds r1, r7 + lsls r1, 2 + adds r1, r6 + ldrb r2, [r1, 0x5] + movs r5, 0xD + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + strb r0, [r1, 0x5] + ldr r0, _081310C0 @ =gUnknown_3005090 + mov r1, r9 + lsls r4, r1, 2 + add r4, r9 + lsls r4, 3 + adds r4, r0 + strh r7, [r4, 0x16] + mov r0, r8 + adds r0, 0x18 + movs r1, 0x10 + movs r2, 0x9 + movs r3, 0x3 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, r7, 4 + adds r1, r7 + lsls r1, 2 + adds r2, r1, r6 + ldrb r3, [r2, 0x5] + adds r0, r5, 0 + ands r0, r3 + strb r0, [r2, 0x5] + ldrh r0, [r4, 0x16] + strh r0, [r2, 0x2E] + movs r2, 0x1C + adds r2, r6 + mov r10, r2 + add r1, r10 + ldr r3, _081310C4 @ =sub_8130FB8 + mov r9, r3 + str r3, [r1] + strh r7, [r4, 0x18] + movs r0, 0x30 + add r8, r0 + mov r0, r8 + movs r1, 0x18 + movs r2, 0xD + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + adds r6, r0, r6 + ldrb r1, [r6, 0x5] + ands r5, r1 + strb r5, [r6, 0x5] + ldrh r1, [r4, 0x16] + strh r1, [r6, 0x2E] + add r0, r10 + mov r1, r9 + str r1, [r0] + strh r7, [r4, 0x1A] + b _08131146 + .align 2, 0 +_081310B0: .4byte gUnknown_8462EFC +_081310B4: .4byte gUnknown_8462F1C +_081310B8: .4byte gUnknown_846302C +_081310BC: .4byte gUnknown_202063C +_081310C0: .4byte gUnknown_3005090 +_081310C4: .4byte sub_8130FB8 +_081310C8: + ldr r0, _08131154 @ =gUnknown_8462F14 + bl sub_800EBCC + ldr r0, _08131158 @ =gUnknown_8462F24 + bl sub_8008928 + mov r2, r9 + lsls r5, r2, 2 + ldr r3, _0813115C @ =gUnknown_3005098 + mov r8, r3 + ldr r6, _08131160 @ =gUnknown_202063C +_081310DE: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + ldr r1, _08131164 @ =gUnknown_8462F50 + adds r0, r1 + lsls r1, r4, 21 + movs r2, 0xB0 + lsls r2, 15 + adds r1, r2 + asrs r1, 16 + movs r2, 0x70 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + lsls r2, r7, 4 + adds r2, r7 + lsls r2, 2 + adds r2, r6 + ldrb r1, [r2, 0x5] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r1, r0 + movs r0, 0x8 + orrs r1, r0 + strb r1, [r2, 0x5] + adds r3, r2, 0 + adds r3, 0x2C + ldrb r0, [r3] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r3] + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, 0x7 + lsls r1, 1 + mov r2, r9 + adds r0, r5, r2 + lsls r0, 3 + adds r1, r0 + add r1, r8 + strh r7, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _081310DE +_08131146: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131154: .4byte gUnknown_8462F14 +_08131158: .4byte gUnknown_8462F24 +_0813115C: .4byte gUnknown_3005098 +_08131160: .4byte gUnknown_202063C +_08131164: .4byte gUnknown_8462F50 + thumb_func_end sub_8130FD4 + + thumb_func_start sub_8131168 +sub_8131168: @ 8131168 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + movs r4, 0 + lsls r1, r0, 2 + adds r1, r0 + lsls r5, r1, 3 + ldr r7, _081311AC @ =gUnknown_3005098 +_0813117C: + adds r0, r4, 0x7 + lsls r0, 1 + adds r0, r5 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081311B0 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0813117C + cmp r6, 0 + beq _081311B4 + cmp r6, 0x1 + beq _081311DC + b _081311EC + .align 2, 0 +_081311AC: .4byte gUnknown_3005098 +_081311B0: .4byte gUnknown_202063C +_081311B4: + ldr r0, _081311D0 @ =0x00001003 + bl sub_800874C + ldr r0, _081311D4 @ =0x00001002 + bl sub_800874C + ldr r4, _081311D8 @ =0x00001001 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + b _081311EC + .align 2, 0 +_081311D0: .4byte 0x00001003 +_081311D4: .4byte 0x00001002 +_081311D8: .4byte 0x00001001 +_081311DC: + movs r4, 0x80 + lsls r4, 5 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 +_081311EC: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8131168 + + thumb_func_start sub_81311F4 +sub_81311F4: @ 81311F4 + push {r4-r6,lr} + sub sp, 0x24 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + cmp r0, 0x1 + beq _08131230 + cmp r0, 0x1 + bgt _08131210 + cmp r0, 0 + beq _0813121A + b _081312F6 +_08131210: + cmp r2, 0x2 + beq _08131248 + cmp r2, 0x3 + beq _0813126C + b _081312F6 +_0813121A: + ldr r0, _08131228 @ =gUnknown_84615FC + movs r1, 0x40 + movs r2, 0x40 + bl sub_80703EC + ldr r0, _0813122C @ =gUnknown_846163C + b _08131254 + .align 2, 0 +_08131228: .4byte gUnknown_84615FC +_0813122C: .4byte gUnknown_846163C +_08131230: + ldr r0, _08131240 @ =gUnknown_8460ED4 + movs r1, 0x40 + movs r2, 0x40 + bl sub_80703EC + ldr r0, _08131244 @ =gUnknown_8460F14 + b _08131254 + .align 2, 0 +_08131240: .4byte gUnknown_8460ED4 +_08131244: .4byte gUnknown_8460F14 +_08131248: + ldr r0, _08131260 @ =gUnknown_84623AC + movs r1, 0x60 + movs r2, 0x40 + bl sub_80703EC + ldr r0, _08131264 @ =gUnknown_84623EC +_08131254: + ldr r2, _08131268 @ =0x06000600 + adds r1, r4, r2 + bl LZ77UnCompVram + b _08131280 + .align 2, 0 +_08131260: .4byte gUnknown_84623AC +_08131264: .4byte gUnknown_84623EC +_08131268: .4byte 0x06000600 +_0813126C: + ldr r0, _08131300 @ =gUnknown_8461CD4 + movs r1, 0x60 + movs r2, 0x40 + bl sub_80703EC + ldr r0, _08131304 @ =gUnknown_8461D14 + ldr r2, _08131308 @ =0x06000600 + adds r1, r4, r2 + bl LZ77UnCompVram +_08131280: + movs r0, 0x60 + bl sub_8002BB0 + ldr r2, _0813130C @ =gUnknown_203B108 + ldr r1, [r2] + str r0, [r1, 0x4] + movs r1, 0 + lsrs r6, r4, 6 +_08131290: + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r0, r1 + strb r1, [r0] + adds r1, 0x1 + cmp r1, 0x5F + bls _08131290 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r5, 0x10 + str r5, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + ldr r4, _0813130C @ =gUnknown_203B108 + ldr r0, [r4] + ldr r1, [r0, 0x4] + movs r3, 0x8 + str r3, [sp] + movs r2, 0xC + str r2, [sp, 0x4] + movs r0, 0xB + str r0, [sp, 0x8] + movs r0, 0x2 + str r0, [sp, 0xC] + str r3, [sp, 0x10] + str r2, [sp, 0x14] + str r5, [sp, 0x18] + adds r0, r6, 0 + adds r0, 0x18 + str r0, [sp, 0x1C] + movs r5, 0 + str r5, [sp, 0x20] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_800226C + movs r0, 0x2 + bl sub_80020BC + ldr r0, [r4] + ldr r0, [r0, 0x4] + bl sub_8002BC4 + ldr r0, [r4] + str r5, [r0, 0x4] +_081312F6: + add sp, 0x24 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08131300: .4byte gUnknown_8461CD4 +_08131304: .4byte gUnknown_8461D14 +_08131308: .4byte 0x06000600 +_0813130C: .4byte gUnknown_203B108 + thumb_func_end sub_81311F4 + + thumb_func_start sub_8131310 +sub_8131310: @ 8131310 + push {lr} + sub sp, 0xC + movs r0, 0x8 + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + movs r0, 0x10 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r2, 0xB + movs r3, 0x1 + bl sub_8002554 + movs r0, 0x2 + bl sub_80020BC + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_8131310 + + thumb_func_start sub_8131338 +sub_8131338: @ 8131338 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r1, _081313A8 @ =gUnknown_3005090 + lsls r0, r6, 2 + mov r9, r0 + adds r0, r6 + lsls r5, r0, 3 + adds r2, r5, r1 + ldrh r3, [r2, 0xA] + movs r7, 0xA + ldrsh r0, [r2, r7] + mov r8, r1 + cmp r0, 0 + bne _081313B0 + movs r1, 0x8 + ldrsh r0, [r2, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r8 + movs r0, 0x1 + strh r0, [r1, 0xC] + adds r0, r6, 0 + bl sub_8077508 + ldr r6, _081313AC @ =gUnknown_202063C + adds r2, r5, 0 + mov r5, r8 + adds r5, 0x8 + movs r3, 0x4 +_08131380: + adds r0, r4, 0x7 + lsls r0, 1 + adds r0, r2 + adds r0, r5 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _08131380 + b _0813143A + .align 2, 0 +_081313A8: .4byte gUnknown_3005090 +_081313AC: .4byte gUnknown_202063C +_081313B0: + ldrh r1, [r2, 0x10] + movs r7, 0x10 + ldrsh r0, [r2, r7] + cmp r0, 0 + beq _081313C0 + subs r0, r1, 0x1 + strh r0, [r2, 0x10] + b _0813143A +_081313C0: + ldrh r0, [r2, 0xE] + strh r0, [r2, 0x10] + subs r1, r3, 0x1 + strh r1, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + lsls r1, 16 + asrs r1, 16 + mov r12, r9 + cmp r1, 0x8 + bne _0813141E + adds r7, r5, 0 + movs r0, 0x8 + add r0, r8 + mov r10, r0 + movs r5, 0x1 + movs r1, 0x5 + negs r1, r1 + mov r9, r1 +_081313E8: + adds r0, r4, 0x7 + lsls r0, 1 + adds r0, r7 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _08131448 @ =gUnknown_202063C + adds r2, r0 + adds r2, 0x3E + ldrb r3, [r2] + lsls r1, r3, 29 + lsrs r1, 31 + eors r1, r5 + ands r1, r5 + lsls r1, 2 + mov r0, r9 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _081313E8 +_0813141E: + mov r1, r12 + adds r0, r1, r6 + lsls r0, 3 + add r0, r8 + movs r2, 0xC + ldrsh r1, [r0, r2] + lsls r1, 8 + ldrh r0, [r0, 0xA] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_0813143A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131448: .4byte gUnknown_202063C + thumb_func_end sub_8131338 + + thumb_func_start sub_813144C +sub_813144C: @ 813144C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r6, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + movs r7, 0 + ldr r1, _081314D0 @ =0x00001244 + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0x10 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r0, _081314D4 @ =gUnknown_3005090 + mov r8, r0 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r0, r5, r0 + strh r7, [r0, 0xC] + ldr r0, _081314D8 @ =sub_8131338 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + mov r1, r8 + adds r0, r2, r1 + strh r4, [r0, 0x8] + movs r1, 0x10 + strh r1, [r0, 0xA] + strh r7, [r0, 0xC] + strh r6, [r0, 0xE] + strh r6, [r0, 0x10] + mov r3, r8 + adds r3, 0x8 +_081314AC: + adds r0, r7, 0x7 + lsls r0, 1 + adds r1, r0, r2 + adds r1, r3 + adds r0, r5 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x2 + bls _081314AC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081314D0: .4byte 0x00001244 +_081314D4: .4byte gUnknown_3005090 +_081314D8: .4byte sub_8131338 + thumb_func_end sub_813144C + + thumb_func_start sub_81314DC +sub_81314DC: @ 81314DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r1, _08131528 @ =gUnknown_3005090 + lsls r5, r6, 2 + adds r0, r5, r6 + lsls r0, 3 + mov r9, r0 + adds r2, r0, r1 + ldrh r3, [r2, 0xA] + movs r7, 0xA + ldrsh r0, [r2, r7] + mov r12, r1 + cmp r0, 0x10 + bne _08131530 + ldr r0, _0813152C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081315BA + movs r1, 0x8 + ldrsh r0, [r2, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + add r1, r12 + movs r0, 0x1 + strh r0, [r1, 0xC] + adds r0, r6, 0 + bl sub_8077508 + b _081315BA + .align 2, 0 +_08131528: .4byte gUnknown_3005090 +_0813152C: .4byte gUnknown_2037AB8 +_08131530: + ldrh r1, [r2, 0x10] + movs r7, 0x10 + ldrsh r0, [r2, r7] + cmp r0, 0 + beq _08131540 + subs r0, r1, 0x1 + strh r0, [r2, 0x10] + b _081315BA +_08131540: + ldrh r0, [r2, 0xE] + strh r0, [r2, 0x10] + adds r1, r3, 0x2 + strh r1, [r2, 0xA] + ldrh r0, [r2, 0xC] + subs r0, 0x2 + strh r0, [r2, 0xC] + lsls r1, 16 + asrs r1, 16 + mov r8, r5 + cmp r1, 0x8 + bne _0813159E + mov r7, r9 + movs r0, 0x8 + add r0, r12 + mov r10, r0 + movs r5, 0x1 + movs r1, 0x5 + negs r1, r1 + mov r9, r1 +_08131568: + adds r0, r4, 0x7 + lsls r0, 1 + adds r0, r7 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _081315C8 @ =gUnknown_202063C + adds r2, r0 + adds r2, 0x3E + ldrb r3, [r2] + lsls r1, r3, 29 + lsrs r1, 31 + eors r1, r5 + ands r1, r5 + lsls r1, 2 + mov r0, r9 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _08131568 +_0813159E: + mov r1, r8 + adds r0, r1, r6 + lsls r0, 3 + add r0, r12 + movs r2, 0xC + ldrsh r1, [r0, r2] + lsls r1, 8 + ldrh r0, [r0, 0xA] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl sub_8000A38 +_081315BA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081315C8: .4byte gUnknown_202063C + thumb_func_end sub_81314DC + + thumb_func_start sub_81315CC +sub_81315CC: @ 81315CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r6, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + movs r7, 0 + ldr r1, _08131654 @ =0x00001244 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r0, _08131658 @ =gUnknown_3005090 + mov r8, r0 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r0, r5, r0 + strh r7, [r0, 0xC] + ldr r0, _0813165C @ =sub_81314DC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + mov r1, r8 + adds r0, r2, r1 + strh r4, [r0, 0x8] + strh r7, [r0, 0xA] + movs r1, 0x10 + strh r1, [r0, 0xC] + strh r6, [r0, 0xE] + strh r6, [r0, 0x10] + mov r3, r8 + adds r3, 0x8 +_0813162E: + adds r0, r7, 0x7 + lsls r0, 1 + adds r1, r0, r2 + adds r1, r3 + adds r0, r5 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x2 + bls _0813162E + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131654: .4byte 0x00001244 +_08131658: .4byte gUnknown_3005090 +_0813165C: .4byte sub_81314DC + thumb_func_end sub_81315CC + + thumb_func_start sub_8131660 +sub_8131660: @ 8131660 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r5, _081316DC @ =gUnknown_3005098 + adds r7, r4, r5 + ldr r0, _081316E0 @ =gUnknown_8462ED8 + bl sub_8003CE4 + strh r0, [r7, 0x1A] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldrb r6, [r7, 0x1A] + bl sub_80F796C + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + adds r0, r6, 0 + movs r1, 0x1 + movs r3, 0xE + bl sub_810F2E8 + adds r5, r4 + ldrb r0, [r5, 0x1A] + movs r1, 0x11 + bl sub_800445C + ldrb r0, [r7, 0x1A] + ldr r2, _081316E4 @ =gUnknown_81C574F + movs r1, 0x1 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + mov r0, r8 + cmp r0, 0 + bne _081316F4 + ldr r0, _081316E8 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + ldr r6, _081316EC @ =gUnknown_84630D8 + cmp r0, 0 + bne _081316F6 + ldr r6, _081316F0 @ =gUnknown_846308C + b _081316F6 + .align 2, 0 +_081316DC: .4byte gUnknown_3005098 +_081316E0: .4byte gUnknown_8462ED8 +_081316E4: .4byte gUnknown_81C574F +_081316E8: .4byte gUnknown_300500C +_081316EC: .4byte gUnknown_84630D8 +_081316F0: .4byte gUnknown_846308C +_081316F4: + ldr r6, _08131750 @ =gUnknown_8463124 +_081316F6: + movs r4, 0 + movs r5, 0 +_081316FA: + ldrb r0, [r7, 0x1A] + lsls r1, r4, 2 + adds r1, r6 + ldr r2, [r1] + adds r4, 0x1 + lsls r1, r4, 4 + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + lsls r4, 24 + lsrs r4, 24 + cmp r4, 0x3 + bls _081316FA + ldrb r0, [r7, 0x1A] + movs r1, 0x10 + str r1, [sp] + movs r1, 0x5 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x1 + bl sub_810F7D8 + ldrb r0, [r7, 0x1A] + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131750: .4byte gUnknown_8463124 + thumb_func_end sub_8131660 + + thumb_func_start sub_8131754 +sub_8131754: @ 8131754 + push {r4,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + cmp r0, 0 + bne _081317A0 + ldr r0, _08131770 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08131778 + ldr r4, _08131774 @ =gUnknown_846308C + b _0813177A + .align 2, 0 +_08131770: .4byte gUnknown_300500C +_08131774: .4byte gUnknown_846308C +_08131778: + ldr r4, _08131798 @ =gUnknown_84630D8 +_0813177A: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x13 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 14 + adds r0, r4 + ldr r3, [r0] + ldr r0, _0813179C @ =gUnknown_300500C + ldr r4, [r0] + b _081317B0 + .align 2, 0 +_08131798: .4byte gUnknown_84630D8 +_0813179C: .4byte gUnknown_300500C +_081317A0: + ldr r1, _081317EC @ =gUnknown_8463124 + lsls r0, r2, 2 + adds r0, r1 + ldr r3, [r0] + ldr r0, _081317F0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _081317F4 @ =0x00003a4c + adds r4, r0, r1 +_081317B0: + movs r2, 0 + ldrb r0, [r3] + cmp r0, 0xFF + beq _081317D2 +_081317B8: + adds r1, r4, r2 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x6 + bhi _081317D2 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0xFF + bne _081317B8 +_081317D2: + cmp r2, 0x7 + bhi _081317E6 + movs r1, 0xFF +_081317D8: + adds r0, r4, r2 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _081317D8 +_081317E6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081317EC: .4byte gUnknown_8463124 +_081317F0: .4byte gUnknown_3005008 +_081317F4: .4byte 0x00003a4c + thumb_func_end sub_8131754 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/option_menu.s b/asm/option_menu.s new file mode 100644 index 000000000..6b383e590 --- /dev/null +++ b/asm/option_menu.s @@ -0,0 +1,1337 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_808835C +sub_808835C: @ 808835C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_808835C + + thumb_func_start sub_8088374 +sub_8088374: @ 8088374 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_8088374 + + thumb_func_start sub_8088388 +sub_8088388: @ 8088388 + push {r4-r6,lr} + ldr r1, _08088418 @ =gUnknown_30030F0 + ldr r0, [r1, 0x8] + cmp r0, 0 + bne _08088396 + ldr r0, _0808841C @ =sub_80568A8 + str r0, [r1, 0x8] +_08088396: + ldr r4, _08088420 @ =gUnknown_2039620 + movs r0, 0x14 + bl sub_8002BB0 + str r0, [r4] + movs r1, 0 + strb r1, [r0, 0x10] + ldr r0, [r4] + strb r1, [r0, 0x12] + ldr r0, [r4] + strb r1, [r0, 0x11] + ldr r2, [r4] + strh r1, [r2, 0xE] + ldr r0, _08088424 @ =gUnknown_300500C + ldr r1, [r0] + ldrb r0, [r1, 0x14] + lsls r0, 29 + lsrs r0, 29 + strh r0, [r2] + ldrb r0, [r1, 0x15] + lsls r0, 29 + lsrs r0, 31 + strh r0, [r2, 0x2] + ldrb r0, [r1, 0x15] + lsls r0, 30 + lsrs r0, 31 + strh r0, [r2, 0x4] + ldrb r0, [r1, 0x15] + lsls r0, 31 + lsrs r0, 31 + strh r0, [r2, 0x6] + ldrb r0, [r1, 0x13] + strh r0, [r2, 0x8] + ldrb r0, [r1, 0x14] + lsrs r0, 3 + strh r0, [r2, 0xA] + movs r3, 0 + adds r6, r4, 0 + ldr r5, _08088428 @ =gUnknown_83CC304 + movs r4, 0 +_080883E6: + ldr r1, [r6] + lsls r0, r3, 1 + adds r2, r1, r0 + ldrh r1, [r2] + adds r0, r5 + ldrh r0, [r0] + subs r0, 0x1 + cmp r1, r0 + ble _080883FA + strh r4, [r2] +_080883FA: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x5 + bls _080883E6 + movs r0, 0xD + bl sub_812B1F0 + ldr r0, _0808842C @ =sub_8088454 + bl sub_8000544 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08088418: .4byte gUnknown_30030F0 +_0808841C: .4byte sub_80568A8 +_08088420: .4byte gUnknown_2039620 +_08088424: .4byte gUnknown_300500C +_08088428: .4byte gUnknown_83CC304 +_0808842C: .4byte sub_8088454 + thumb_func_end sub_8088388 + + thumb_func_start sub_8088430 +sub_8088430: @ 8088430 + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_8088430 + + thumb_func_start sub_8088444 +sub_8088444: @ 8088444 + push {lr} + ldr r0, _08088450 @ =sub_8088374 + bl sub_80006F4 + pop {r0} + bx r0 + .align 2, 0 +_08088450: .4byte sub_8088374 + thumb_func_end sub_8088444 + + thumb_func_start sub_8088454 +sub_8088454: @ 8088454 + push {r4,lr} + ldr r0, _0808846C @ =gUnknown_2039620 + ldr r0, [r0] + ldrb r0, [r0, 0x11] + cmp r0, 0x9 + bhi _080884FA + lsls r0, 2 + ldr r1, _08088470 @ =_08088474 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808846C: .4byte gUnknown_2039620 +_08088470: .4byte _08088474 + .align 2, 0 +_08088474: + .4byte _0808849C + .4byte _080884A2 + .4byte _080884A8 + .4byte _080884AE + .4byte _080884BC + .4byte _080884C2 + .4byte _080884C8 + .4byte _080884CE + .4byte _080884E2 + .4byte _080884F4 +_0808849C: + bl sub_8088430 + b _080884FE +_080884A2: + bl sub_8088530 + b _080884FE +_080884A8: + bl sub_80886D4 + b _080884FE +_080884AE: + bl sub_80886F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08088508 + b _080884FE +_080884BC: + bl sub_8088BD0 + b _080884FE +_080884C2: + bl sub_8088C0C + b _080884FE +_080884C8: + bl sub_8088D8C + b _080884FE +_080884CE: + movs r4, 0 +_080884D0: + adds r0, r4, 0 + bl sub_80889A8 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bls _080884D0 + b _080884FE +_080884E2: + ldr r0, _080884F0 @ =gUnknown_2039620 + ldr r0, [r0] + ldrh r0, [r0, 0xE] + bl sub_8088DE0 + b _080884FE + .align 2, 0 +_080884F0: .4byte gUnknown_2039620 +_080884F4: + bl sub_8088680 + b _080884FE +_080884FA: + bl sub_8088514 +_080884FE: + ldr r0, _08088510 @ =gUnknown_2039620 + ldr r1, [r0] + ldrb r0, [r1, 0x11] + adds r0, 0x1 + strb r0, [r1, 0x11] +_08088508: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08088510: .4byte gUnknown_2039620 + thumb_func_end sub_8088454 + + thumb_func_start sub_8088514 +sub_8088514: @ 8088514 + push {lr} + ldr r0, _08088528 @ =sub_8088780 + movs r1, 0 + bl sub_807741C + ldr r0, _0808852C @ =sub_808835C + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_08088528: .4byte sub_8088780 +_0808852C: .4byte sub_808835C + thumb_func_end sub_8088514 + + thumb_func_start sub_8088530 +sub_8088530: @ 8088530 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _08088670 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _08088674 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_08088556: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _08088556 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _08088670 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _08088678 @ =gUnknown_83CC2D8 + movs r0, 0 + movs r2, 0x3 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _0808867C @ =gUnknown_83CC2B8 + bl sub_8003B24 + bl sub_8002C28 + movs r0, 0x50 + movs r1, 0xC1 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x2 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x1 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x27 + bl sub_8000A38 + movs r1, 0xC1 + lsls r1, 6 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08088670: .4byte 0x040000d4 +_08088674: .4byte 0x81000800 +_08088678: .4byte gUnknown_83CC2D8 +_0808867C: .4byte gUnknown_83CC2B8 + thumb_func_end sub_8088530 + + thumb_func_start sub_8088680 +sub_8088680: @ 8088680 + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _080886CC @ =gUnknown_8419E57 + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r4, 0xE4 + subs r4, r0 + movs r0, 0x2 + movs r1, 0xFF + bl sub_800445C + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080886D0 @ =gUnknown_83CC360 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0 + bl sub_812E51C + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080886CC: .4byte gUnknown_8419E57 +_080886D0: .4byte gUnknown_83CC360 + thumb_func_end sub_8088680 + + thumb_func_start sub_80886D4 +sub_80886D4: @ 80886D4 + push {lr} + bl sub_8006B10 + bl sub_8070528 + bl sub_80088F0 + bl sub_80773BC + bl sub_8087E64 + pop {r0} + bx r0 + thumb_func_end sub_80886D4 + + thumb_func_start sub_80886F0 +sub_80886F0: @ 80886F0 + push {lr} + ldr r0, _08088708 @ =gUnknown_2039620 + ldr r0, [r0] + ldrb r1, [r0, 0x12] + cmp r1, 0x1 + beq _0808872E + cmp r1, 0x1 + bgt _0808870C + cmp r1, 0 + beq _08088716 + b _08088768 + .align 2, 0 +_08088708: .4byte gUnknown_2039620 +_0808870C: + cmp r1, 0x2 + beq _0808873A + cmp r1, 0x3 + beq _08088758 + b _08088768 +_08088716: + ldrb r0, [r0, 0xA] + bl sub_8069788 + ldr r1, [r0] + movs r2, 0x90 + lsls r2, 1 + movs r3, 0xD5 + lsls r3, 1 + movs r0, 0x1 + bl sub_80017D0 + b _0808876C +_0808872E: + ldrb r0, [r0, 0xA] + bl sub_8069788 + ldr r0, [r0, 0x4] + movs r1, 0x20 + b _0808874C +_0808873A: + ldr r0, _08088754 @ =gUnknown_83CC2E4 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xF0 +_0808874C: + movs r2, 0x20 + bl sub_80703EC + b _0808876C + .align 2, 0 +_08088754: .4byte gUnknown_83CC2E4 +_08088758: + ldr r1, _08088764 @ =0x000001b3 + movs r0, 0x1 + movs r2, 0x30 + bl sub_814FDA0 + b _0808876C + .align 2, 0 +_08088764: .4byte 0x000001b3 +_08088768: + movs r0, 0x1 + b _08088778 +_0808876C: + ldr r0, _0808877C @ =gUnknown_2039620 + ldr r1, [r0] + ldrb r0, [r1, 0x12] + adds r0, 0x1 + strb r0, [r1, 0x12] + movs r0, 0 +_08088778: + pop {r1} + bx r1 + .align 2, 0 +_0808877C: .4byte gUnknown_2039620 + thumb_func_end sub_80886F0 + + thumb_func_start sub_8088780 +sub_8088780: @ 8088780 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080887A0 @ =gUnknown_2039620 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + adds r3, r1, 0 + cmp r0, 0x5 + bls _08088796 + b _080888B6 +_08088796: + lsls r0, 2 + ldr r1, _080887A4 @ =_080887A8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080887A0: .4byte gUnknown_2039620 +_080887A4: .4byte _080887A8 + .align 2, 0 +_080887A8: + .4byte _080887C0 + .4byte _08088894 + .4byte _080887E0 + .4byte _08088878 + .4byte _08088894 + .4byte _080888B0 +_080887C0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_8088444 + ldr r0, _080887DC @ =gUnknown_2039620 + ldr r1, [r0] + b _080888A2 + .align 2, 0 +_080887DC: .4byte gUnknown_2039620 +_080887E0: + bl sub_80BF72C + cmp r0, 0x1 + beq _080888B6 + bl sub_80888C0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _080888B6 + lsls r0, 2 + ldr r1, _08088800 @ =_08088804 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08088800: .4byte _08088804 + .align 2, 0 +_08088804: + .4byte _080888B6 + .4byte _08088818 + .4byte _08088824 + .4byte _08088858 + .4byte _08088868 +_08088818: + ldr r0, _08088820 @ =gUnknown_2039620 + ldr r1, [r0] + b _080888A2 + .align 2, 0 +_08088820: .4byte gUnknown_2039620 +_08088824: + ldr r4, _08088854 @ =gUnknown_2039620 + ldr r0, [r4] + ldrb r0, [r0, 0xA] + bl sub_8069788 + ldr r1, [r0] + movs r2, 0x90 + lsls r2, 1 + movs r3, 0xD5 + lsls r3, 1 + movs r0, 0x1 + bl sub_80017D0 + ldr r0, [r4] + ldrb r0, [r0, 0xA] + bl sub_8069788 + ldr r0, [r0, 0x4] + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703EC + ldr r0, [r4] + b _0808886C + .align 2, 0 +_08088854: .4byte gUnknown_2039620 +_08088858: + ldr r0, _08088864 @ =gUnknown_2039620 + ldr r0, [r0] + ldrh r0, [r0, 0xE] + bl sub_8088DE0 + b _080888B6 + .align 2, 0 +_08088864: .4byte gUnknown_2039620 +_08088868: + ldr r0, _08088874 @ =gUnknown_2039620 + ldr r0, [r0] +_0808886C: + ldrb r0, [r0, 0xE] + bl sub_80889A8 + b _080888B6 + .align 2, 0 +_08088874: .4byte gUnknown_2039620 +_08088878: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08088890 @ =gUnknown_2039620 + ldr r1, [r0] + b _080888A2 + .align 2, 0 +_08088890: .4byte gUnknown_2039620 +_08088894: + ldr r0, _080888AC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080888B6 + ldr r1, [r3] +_080888A2: + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _080888B6 + .align 2, 0 +_080888AC: .4byte gUnknown_2037AB8 +_080888B0: + adds r0, r2, 0 + bl sub_8088B00 +_080888B6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8088780 + + thumb_func_start sub_80888C0 +sub_80888C0: @ 80888C0 + push {r4,lr} + ldr r3, _080888EC @ =gUnknown_30030F0 + ldrh r1, [r3, 0x30] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08088906 + ldr r2, _080888F0 @ =gUnknown_2039620 + ldr r1, [r2] + ldrh r0, [r1, 0xE] + lsls r0, 1 + adds r3, r1, r0 + ldrh r4, [r3] + ldr r1, _080888F4 @ =gUnknown_83CC304 + adds r0, r1 + ldrh r0, [r0] + subs r0, 0x1 + cmp r4, r0 + bne _080888F8 + movs r0, 0 + b _080888FA + .align 2, 0 +_080888EC: .4byte gUnknown_30030F0 +_080888F0: .4byte gUnknown_2039620 +_080888F4: .4byte gUnknown_83CC304 +_080888F8: + adds r0, r4, 0x1 +_080888FA: + strh r0, [r3] + ldr r0, [r2] + ldrh r0, [r0, 0xE] + cmp r0, 0x5 + beq _08088930 + b _0808893C +_08088906: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08088940 + ldr r2, _08088934 @ =gUnknown_2039620 + ldr r1, [r2] + ldrh r0, [r1, 0xE] + lsls r3, r0, 1 + adds r1, r3 + ldrh r0, [r1] + cmp r0, 0 + bne _08088924 + ldr r0, _08088938 @ =gUnknown_83CC304 + adds r0, r3, r0 + ldrh r0, [r0] +_08088924: + subs r0, 0x1 + strh r0, [r1] + ldr r0, [r2] + ldrh r0, [r0, 0xE] + cmp r0, 0x5 + bne _0808893C +_08088930: + movs r0, 0x2 + b _080889A0 + .align 2, 0 +_08088934: .4byte gUnknown_2039620 +_08088938: .4byte gUnknown_83CC304 +_0808893C: + movs r0, 0x4 + b _080889A0 +_08088940: + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08088964 + ldr r0, _0808895C @ =gUnknown_2039620 + ldr r1, [r0] + ldrh r0, [r1, 0xE] + cmp r0, 0 + bne _08088960 + movs r0, 0x6 + b _08088982 + .align 2, 0 +_0808895C: .4byte gUnknown_2039620 +_08088960: + subs r0, 0x1 + b _08088982 +_08088964: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08088988 + ldr r0, _0808897C @ =gUnknown_2039620 + ldr r1, [r0] + ldrh r0, [r1, 0xE] + cmp r0, 0x6 + bne _08088980 + strh r2, [r1, 0xE] + b _08088984 + .align 2, 0 +_0808897C: .4byte gUnknown_2039620 +_08088980: + adds r0, 0x1 +_08088982: + strh r0, [r1, 0xE] +_08088984: + movs r0, 0x3 + b _080889A0 +_08088988: + ldrh r1, [r3, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0808899A + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0808899E +_0808899A: + movs r0, 0x1 + b _080889A0 +_0808899E: + movs r0, 0 +_080889A0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80888C0 + + thumb_func_start sub_80889A8 +sub_80889A8: @ 80889A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x30 + lsls r0, 24 + lsrs r5, r0, 24 + add r4, sp, 0x2C + ldr r1, _08088A08 @ =gUnknown_83CC363 + adds r0, r4, 0 + movs r2, 0x3 + bl memcpy + movs r0, 0x82 + mov r8, r0 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + muls r0, r5 + adds r0, 0x2 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x46 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x82 + adds r3, r7, 0 + bl sub_8004378 + adds r6, r4, 0 + cmp r5, 0x5 + bhi _08088ADE + lsls r0, r5, 2 + ldr r1, _08088A0C @ =_08088A10 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08088A08: .4byte gUnknown_83CC363 +_08088A0C: .4byte _08088A10 + .align 2, 0 +_08088A10: + .4byte _08088A28 + .4byte _08088A38 + .4byte _08088A48 + .4byte _08088A58 + .4byte _08088A68 + .4byte _08088A9C +_08088A28: + str r6, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r2, _08088A34 @ =gUnknown_83CC330 + b _08088A72 + .align 2, 0 +_08088A34: .4byte gUnknown_83CC330 +_08088A38: + str r6, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r2, _08088A44 @ =gUnknown_83CC33C + b _08088A72 + .align 2, 0 +_08088A44: .4byte gUnknown_83CC33C +_08088A48: + str r6, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r2, _08088A54 @ =gUnknown_83CC344 + b _08088A72 + .align 2, 0 +_08088A54: .4byte gUnknown_83CC344 +_08088A58: + str r6, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r2, _08088A64 @ =gUnknown_83CC34C + b _08088A72 + .align 2, 0 +_08088A64: .4byte gUnknown_83CC34C +_08088A68: + str r6, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r2, _08088A94 @ =gUnknown_83CC354 +_08088A72: + ldr r0, _08088A98 @ =gUnknown_2039620 + ldr r0, [r0] + lsls r1, r5, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + mov r2, r8 + adds r3, r7, 0 + bl sub_812E51C + b _08088ADE + .align 2, 0 +_08088A94: .4byte gUnknown_83CC354 +_08088A98: .4byte gUnknown_2039620 +_08088A9C: + ldr r1, _08088AF8 @ =gUnknown_8419E52 + add r0, sp, 0xC + bl sub_8008D84 + add r4, sp, 0x20 + ldr r0, _08088AFC @ =gUnknown_2039620 + ldr r0, [r0] + lsls r1, r5, 1 + adds r0, r1 + ldrh r1, [r0] + adds r1, 0x1 + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + add r0, sp, 0xC + adds r1, r4, 0 + movs r2, 0x3 + bl sub_8008DEC + str r6, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + mov r2, r8 + adds r3, r7, 0 + bl sub_812E51C +_08088ADE: + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x30 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08088AF8: .4byte gUnknown_8419E52 +_08088AFC: .4byte gUnknown_2039620 + thumb_func_end sub_80889A8 + + thumb_func_start sub_8088B00 +sub_8088B00: @ 8088B00 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _08088BBC @ =gUnknown_3005020 + ldr r0, _08088BC0 @ =sub_807DF64 + str r0, [r1] + ldr r0, _08088BC4 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 + bl sub_8003ECC + ldr r3, _08088BC8 @ =gUnknown_300500C + ldr r5, [r3] + ldr r4, _08088BCC @ =gUnknown_2039620 + ldr r0, [r4] + movs r2, 0x7 + ldrb r1, [r0] + ands r1, r2 + ldrb r2, [r5, 0x14] + movs r0, 0x8 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x14] + ldr r5, [r3] + ldr r0, [r4] + movs r6, 0x1 + ldrb r1, [r0, 0x2] + ands r1, r6 + lsls r1, 2 + ldrb r2, [r5, 0x15] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x15] + ldr r5, [r3] + ldr r0, [r4] + ldrb r1, [r0, 0x4] + ands r1, r6 + lsls r1, 1 + ldrb r2, [r5, 0x15] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x15] + ldr r5, [r3] + ldr r0, [r4] + ldrb r1, [r0, 0x6] + ands r1, r6 + ldrb r2, [r5, 0x15] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x15] + ldr r1, [r3] + ldr r0, [r4] + ldrh r0, [r0, 0x8] + movs r6, 0 + strb r0, [r1, 0x13] + ldr r5, [r3] + ldr r0, [r4] + ldrb r1, [r0, 0xA] + lsls r1, 3 + ldrb r2, [r5, 0x14] + movs r0, 0x7 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x14] + ldr r0, [r3] + ldrb r0, [r0, 0x15] + lsls r0, 31 + lsrs r0, 31 + bl SetPokemonCryStereo + ldr r0, [r4] + bl sub_8002BC4 + str r6, [r4] + mov r0, r8 + bl sub_8077508 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08088BBC: .4byte gUnknown_3005020 +_08088BC0: .4byte sub_807DF64 +_08088BC4: .4byte gUnknown_30030F0 +_08088BC8: .4byte gUnknown_300500C +_08088BCC: .4byte gUnknown_2039620 + thumb_func_end sub_8088B00 + + thumb_func_start sub_8088BD0 +sub_8088BD0: @ 8088BD0 + push {lr} + sub sp, 0xC + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _08088C08 @ =gUnknown_8419DCC + movs r0, 0x1 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08088C08: .4byte gUnknown_8419DCC + thumb_func_end sub_8088BD0 + + thumb_func_start sub_8088C0C +sub_8088C0C: @ 8088C0C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + movs r6, 0x2 + ldr r1, _08088D6C @ =0x000001b3 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0x3 + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8002554 + movs r1, 0xDA + lsls r1, 1 + movs r0, 0x1B + mov r8, r0 + str r0, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8002554 + ldr r1, _08088D70 @ =0x000001b5 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1C + movs r3, 0x2 + bl sub_8002554 + movs r1, 0xDB + lsls r1, 1 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8002554 + movs r1, 0xDC + lsls r1, 1 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1C + movs r3, 0x3 + bl sub_8002554 + ldr r1, _08088D74 @ =0x000001b9 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x5 + bl sub_8002554 + movs r1, 0xDD + lsls r1, 1 + mov r0, r8 + str r0, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x2 + movs r3, 0x5 + bl sub_8002554 + ldr r1, _08088D78 @ =0x000001bb + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1C + movs r3, 0x5 + bl sub_8002554 + movs r1, 0xD5 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x6 + bl sub_8002554 + ldr r1, _08088D7C @ =0x000001ab + movs r0, 0x1A + mov r8, r0 + str r0, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x2 + movs r3, 0x6 + bl sub_8002554 + movs r1, 0xD6 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1C + movs r3, 0x6 + bl sub_8002554 + ldr r1, _08088D80 @ =0x000001ad + str r4, [sp] + movs r5, 0x10 + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x7 + bl sub_8002554 + ldr r1, _08088D84 @ =0x000001af + str r4, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1C + movs r3, 0x7 + bl sub_8002554 + movs r1, 0xD8 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x13 + bl sub_8002554 + ldr r1, _08088D88 @ =0x000001b1 + mov r0, r8 + str r0, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x2 + movs r3, 0x13 + bl sub_8002554 + movs r1, 0xD9 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x1C + movs r3, 0x13 + bl sub_8002554 + movs r0, 0x1 + bl sub_80020BC + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08088D6C: .4byte 0x000001b3 +_08088D70: .4byte 0x000001b5 +_08088D74: .4byte 0x000001b9 +_08088D78: .4byte 0x000001bb +_08088D7C: .4byte 0x000001ab +_08088D80: .4byte 0x000001ad +_08088D84: .4byte 0x000001af +_08088D88: .4byte 0x000001b1 + thumb_func_end sub_8088C0C + + thumb_func_start sub_8088D8C +sub_8088D8C: @ 8088D8C + push {r4,lr} + sub sp, 0xC + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + movs r4, 0 +_08088D9A: + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r1, r4, 0 + muls r1, r0 + adds r1, 0x2 + subs r1, r4 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08088DDC @ =gUnknown_83CC314 + lsls r0, r4, 2 + adds r0, r2 + ldr r2, [r0] + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bls _08088D9A + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08088DDC: .4byte gUnknown_83CC314 + thumb_func_end sub_8088D8C + + thumb_func_start sub_8088DE0 +sub_8088DE0: @ 8088DE0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + subs r1, r0, 0x1 + adds r2, r4, 0 + muls r2, r1 + adds r2, 0x3A + lsls r2, 16 + lsrs r2, 16 + lsls r1, r2, 8 + adds r2, r0 + orrs r1, r2 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + movs r1, 0x87 + lsls r1, 5 + movs r0, 0x40 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8088DE0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s new file mode 100644 index 000000000..a55e4900a --- /dev/null +++ b/asm/overworld.s @@ -0,0 +1,8010 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8054BC8 +sub_8054BC8: @ 8054BC8 + push {r4,lr} + ldr r0, _08054BFC @ =gUnknown_81A654B + bl sub_8069B48 + ldr r0, _08054C00 @ =gUnknown_3005008 + ldr r4, [r0] + movs r0, 0xA4 + lsls r0, 2 + adds r4, r0 + bl sub_8054C04 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_809FDD8 + bl sub_80A0058 + bl sub_8054DD8 + bl sub_80554BC + bl sub_8055378 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054BFC: .4byte gUnknown_81A654B +_08054C00: .4byte gUnknown_3005008 + thumb_func_end sub_8054BC8 + + thumb_func_start sub_8054C04 +sub_8054C04: @ 8054C04 + push {r4,lr} + bl sub_8054C70 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80444F8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08054C40 @ =gUnknown_826D294 + adds r4, r1 + ldrb r1, [r4] + lsls r1, 2 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _08054C44 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + cmp r4, r0 + bls _08054C38 + adds r4, r0, 0 +_08054C38: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08054C40: .4byte gUnknown_826D294 +_08054C44: .4byte gUnknown_3005008 + thumb_func_end sub_8054C04 + + thumb_func_start sub_8054C48 +sub_8054C48: @ 8054C48 + push {r4,r5,lr} + bl sub_8054C04 + adds r4, r0, 0 + ldr r5, _08054C6C @ =gUnknown_2021CD0 + bl sub_80CBF04 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8008E78 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08054C6C: .4byte gUnknown_2021CD0 + thumb_func_end sub_8054C48 + + thumb_func_start sub_8054C70 +sub_8054C70: @ 8054C70 + push {r4-r6,lr} + movs r6, 0 + movs r5, 0 + ldr r4, _08054C9C @ =gUnknown_826D29E +_08054C78: + ldrh r0, [r4] + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _08054C8A + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08054C8A: + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x7 + bls _08054C78 + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08054C9C: .4byte gUnknown_826D29E + thumb_func_end sub_8054C70 + + thumb_func_start sub_8054CA0 +sub_8054CA0: @ 8054CA0 + push {lr} + bl sub_80559E4 + movs r0, 0x83 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054CEC @ =0x0000405e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054CF0 @ =0x00000802 + bl sub_806E6A8 + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054CF4 @ =0x0000406e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054CF8 @ =0x00000805 + bl sub_806E6A8 + ldr r0, _08054CFC @ =0x00000806 + bl sub_806E6A8 + ldr r0, _08054D00 @ =0x00000808 + bl sub_806E6A8 + ldr r0, _08054D04 @ =0x0000404d + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_08054CEC: .4byte 0x0000405e +_08054CF0: .4byte 0x00000802 +_08054CF4: .4byte 0x0000406e +_08054CF8: .4byte 0x00000805 +_08054CFC: .4byte 0x00000806 +_08054D00: .4byte 0x00000808 +_08054D04: .4byte 0x0000404d + thumb_func_end sub_8054CA0 + + thumb_func_start sub_8054D08 +sub_8054D08: @ 8054D08 + push {lr} + bl sub_80559E4 + movs r0, 0x83 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054D54 @ =0x0000405e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054D58 @ =0x00000802 + bl sub_806E6A8 + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054D5C @ =0x0000406e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054D60 @ =0x00000805 + bl sub_806E6A8 + ldr r0, _08054D64 @ =0x00000806 + bl sub_806E6A8 + ldr r0, _08054D68 @ =0x00000808 + bl sub_806E6A8 + ldr r0, _08054D6C @ =0x0000404d + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_08054D54: .4byte 0x0000405e +_08054D58: .4byte 0x00000802 +_08054D5C: .4byte 0x0000406e +_08054D60: .4byte 0x00000805 +_08054D64: .4byte 0x00000806 +_08054D68: .4byte 0x00000808 +_08054D6C: .4byte 0x0000404d + thumb_func_end sub_8054D08 + + thumb_func_start sub_8054D70 +sub_8054D70: @ 8054D70 + push {lr} + bl sub_80559E4 + movs r0, 0x83 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054DBC @ =0x0000405e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054DC0 @ =0x00000802 + bl sub_806E6A8 + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054DC4 @ =0x0000406e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054DC8 @ =0x00000805 + bl sub_806E6A8 + ldr r0, _08054DCC @ =0x00000806 + bl sub_806E6A8 + ldr r0, _08054DD0 @ =0x00000808 + bl sub_806E6A8 + ldr r0, _08054DD4 @ =0x0000404d + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_08054DBC: .4byte 0x0000405e +_08054DC0: .4byte 0x00000802 +_08054DC4: .4byte 0x0000406e +_08054DC8: .4byte 0x00000805 +_08054DCC: .4byte 0x00000806 +_08054DD0: .4byte 0x00000808 +_08054DD4: .4byte 0x0000404d + thumb_func_end sub_8054D70 + + thumb_func_start sub_8054DD8 +sub_8054DD8: @ 8054DD8 + push {lr} + bl sub_80559E4 + movs r0, 0x83 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054E24 @ =0x0000405e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054E28 @ =0x00000802 + bl sub_806E6A8 + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054E2C @ =0x0000406e + movs r1, 0 + bl sub_806E584 + ldr r0, _08054E30 @ =0x00000805 + bl sub_806E6A8 + ldr r0, _08054E34 @ =0x00000806 + bl sub_806E6A8 + ldr r0, _08054E38 @ =0x00000808 + bl sub_806E6A8 + ldr r0, _08054E3C @ =0x0000404d + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_08054E24: .4byte 0x0000405e +_08054E28: .4byte 0x00000802 +_08054E2C: .4byte 0x0000406e +_08054E30: .4byte 0x00000805 +_08054E34: .4byte 0x00000806 +_08054E38: .4byte 0x00000808 +_08054E3C: .4byte 0x0000404d + thumb_func_end sub_8054DD8 + + thumb_func_start sub_8054E40 +sub_8054E40: @ 8054E40 + push {lr} + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6A8 + ldr r0, _08054E64 @ =0x0000406e + movs r1, 0 + bl sub_806E584 + bl sub_805610C + bl sub_8141DAC + bl sub_8141DD4 + pop {r0} + bx r0 + .align 2, 0 +_08054E64: .4byte 0x0000406e + thumb_func_end sub_8054E40 + + thumb_func_start sub_8054E68 +sub_8054E68: @ 8054E68 + push {r4,r5,lr} + movs r2, 0 + ldr r5, _08054E8C @ =gUnknown_3005008 + movs r4, 0x90 + lsls r4, 5 + movs r3, 0 +_08054E74: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + str r3, [r0] + adds r2, 0x1 + cmp r2, 0x3F + ble _08054E74 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08054E8C: .4byte gUnknown_3005008 + thumb_func_end sub_8054E68 + + thumb_func_start sub_8054E90 +sub_8054E90: @ 8054E90 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x33 + bhi _08054EB8 + adds r0, r4, 0 + bl sub_8054EC4 + adds r1, r0, 0 + ldr r0, _08054EAC @ =0x00fffffe + cmp r1, r0 + bhi _08054EB0 + adds r1, 0x1 + b _08054EB2 + .align 2, 0 +_08054EAC: .4byte 0x00fffffe +_08054EB0: + ldr r1, _08054EC0 @ =0x00ffffff +_08054EB2: + adds r0, r4, 0 + bl sub_8054F00 +_08054EB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054EC0: .4byte 0x00ffffff + thumb_func_end sub_8054E90 + + thumb_func_start sub_8054EC4 +sub_8054EC4: @ 8054EC4 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x33 + bhi _08054EF8 + ldr r0, _08054EF0 @ =gUnknown_3005008 + ldr r2, [r0] + lsls r0, r1, 2 + movs r1, 0x90 + lsls r1, 5 + adds r2, r1 + adds r2, r0 + ldr r0, _08054EF4 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0xF2 + lsls r0, 4 + adds r1, r0 + ldr r0, [r2] + ldr r1, [r1] + eors r0, r1 + b _08054EFA + .align 2, 0 +_08054EF0: .4byte gUnknown_3005008 +_08054EF4: .4byte gUnknown_300500C +_08054EF8: + movs r0, 0 +_08054EFA: + pop {r1} + bx r1 + thumb_func_end sub_8054EC4 + + thumb_func_start sub_8054F00 +sub_8054F00: @ 8054F00 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x33 + bhi _08054F2A + ldr r0, _08054F30 @ =gUnknown_3005008 + ldr r1, [r0] + lsls r0, r2, 2 + movs r2, 0x90 + lsls r2, 5 + adds r1, r2 + adds r1, r0 + ldr r0, _08054F34 @ =gUnknown_300500C + ldr r0, [r0] + movs r2, 0xF2 + lsls r2, 4 + adds r0, r2 + ldr r0, [r0] + eors r0, r3 + str r0, [r1] +_08054F2A: + pop {r0} + bx r0 + .align 2, 0 +_08054F30: .4byte gUnknown_3005008 +_08054F34: .4byte gUnknown_300500C + thumb_func_end sub_8054F00 + + thumb_func_start sub_8054F38 +sub_8054F38: @ 8054F38 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r6, _08054F64 @ =gUnknown_3005008 +_08054F40: + lsls r1, r4, 2 + movs r0, 0x90 + lsls r0, 5 + adds r1, r0 + ldr r0, [r6] + adds r0, r1 + adds r1, r5, 0 + bl sub_804C588 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3F + bls _08054F40 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08054F64: .4byte gUnknown_3005008 + thumb_func_end sub_8054F38 + + thumb_func_start sub_8054F68 +sub_8054F68: @ 8054F68 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0 + mov r9, r0 + mov r8, r0 + ldr r1, _08055040 @ =gUnknown_2036DFC + ldr r0, [r1, 0x4] + ldrb r0, [r0] + cmp r9, r0 + bcc _08054F86 + b _08055092 +_08054F86: + ldr r2, _08055044 @ =gUnknown_3005008 + mov r10, r2 +_08054F8A: + ldr r3, _08055040 @ =gUnknown_2036DFC + ldr r0, [r3, 0x4] + ldr r1, [r0, 0x4] + mov r4, r9 + lsls r0, r4, 1 + add r0, r9 + lsls r7, r0, 3 + adds r2, r7, r1 + ldrb r0, [r2, 0x2] + cmp r0, 0xFF + bne _08055054 + ldrb r4, [r2, 0x8] + ldrb r5, [r2, 0xC] + str r5, [sp] + ldrb r2, [r2, 0xE] + str r2, [sp, 0x4] + adds r0, r2, 0 + adds r1, r5, 0 + bl sub_8055238 + mov r6, r10 + ldr r1, [r6] + mov r2, r8 + lsls r3, r2, 1 + add r3, r8 + lsls r3, 3 + adds r1, r3 + ldr r0, [r0, 0x4] + ldr r2, [r0, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + adds r0, r2 + movs r5, 0x8E + lsls r5, 4 + adds r1, r5 + subs r0, 0x18 + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + mov r6, r10 + ldr r1, [r6] + adds r1, r3 + ldr r2, _08055040 @ =gUnknown_2036DFC + ldr r0, [r2, 0x4] + ldr r0, [r0, 0x4] + adds r0, r7, r0 + ldrb r0, [r0] + movs r5, 0x8E + lsls r5, 4 + adds r1, r5 + strb r0, [r1] + ldr r1, [r6] + adds r1, r3 + ldr r0, [r2, 0x4] + ldr r0, [r0, 0x4] + adds r0, r7, r0 + ldrh r2, [r0, 0x4] + ldr r6, _08055048 @ =0x000008e4 + adds r0, r1, r6 + strh r2, [r0] + ldr r2, _08055040 @ =gUnknown_2036DFC + ldr r0, [r2, 0x4] + ldr r0, [r0, 0x4] + adds r0, r7, r0 + ldrh r2, [r0, 0x6] + adds r5, 0x6 + adds r0, r1, r5 + strh r2, [r0] + adds r6, 0x4 + adds r1, r6 + strb r4, [r1] + mov r1, r10 + ldr r0, [r1] + adds r0, r3 + ldr r2, _0805504C @ =0x000008ec + adds r1, r0, r2 + mov r3, sp + ldrh r3, [r3] + strh r3, [r1] + ldr r4, _08055050 @ =0x000008ee + adds r1, r0, r4 + mov r5, sp + ldrh r5, [r5, 0x4] + strh r5, [r1] + subs r6, 0x6 + adds r0, r6 + movs r1, 0xFF + strb r1, [r0] + b _08055072 + .align 2, 0 +_08055040: .4byte gUnknown_2036DFC +_08055044: .4byte gUnknown_3005008 +_08055048: .4byte 0x000008e4 +_0805504C: .4byte 0x000008ec +_08055050: .4byte 0x000008ee +_08055054: + mov r0, r10 + ldr r1, [r0] + mov r3, r8 + lsls r0, r3, 1 + add r0, r8 + lsls r0, 3 + adds r1, r0 + movs r4, 0x8E + lsls r4, 4 + adds r1, r4 + adds r0, r2, 0 + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldm r0!, {r3-r5} + stm r1!, {r3-r5} +_08055072: + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r6, _080550A4 @ =gUnknown_2036DFC + ldr r0, [r6, 0x4] + ldrb r0, [r0] + cmp r9, r0 + bcs _08055092 + b _08054F8A +_08055092: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080550A4: .4byte gUnknown_2036DFC + thumb_func_end sub_8054F68 + + thumb_func_start sub_80550A8 +sub_80550A8: @ 80550A8 + push {lr} + ldr r0, _080550D0 @ =gUnknown_2036DFC + ldr r1, [r0, 0x4] + ldr r0, _080550D4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, [r1, 0x4] + movs r3, 0x8E + lsls r3, 4 + adds r1, r0, r3 + movs r3, 0x3F +_080550BC: + ldr r0, [r2, 0x10] + str r0, [r1, 0x10] + adds r2, 0x18 + adds r1, 0x18 + subs r3, 0x1 + cmp r3, 0 + bge _080550BC + pop {r0} + bx r0 + .align 2, 0 +_080550D0: .4byte gUnknown_2036DFC +_080550D4: .4byte gUnknown_3005008 + thumb_func_end sub_80550A8 + + thumb_func_start sub_80550D8 +sub_80550D8: @ 80550D8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _08055100 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0 + movs r6, 0x8E + lsls r6, 4 + adds r3, r0, r6 +_080550F2: + ldrb r0, [r3] + cmp r0, r5 + bne _08055104 + strh r4, [r3, 0x4] + strh r2, [r3, 0x6] + b _0805510C + .align 2, 0 +_08055100: .4byte gUnknown_3005008 +_08055104: + adds r3, 0x18 + adds r1, 0x1 + cmp r1, 0x3F + ble _080550F2 +_0805510C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80550D8 + + thumb_func_start sub_8055114 +sub_8055114: @ 8055114 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08055134 @ =gUnknown_3005008 + ldr r0, [r0] + movs r3, 0 + movs r5, 0x8E + lsls r5, 4 + adds r2, r0, r5 +_0805512A: + ldrb r0, [r2] + cmp r0, r4 + bne _08055138 + strb r1, [r2, 0x9] + b _08055140 + .align 2, 0 +_08055134: .4byte gUnknown_3005008 +_08055138: + adds r2, 0x18 + adds r3, 0x1 + cmp r3, 0x3F + ble _0805512A +_08055140: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8055114 + + thumb_func_start sub_8055148 +sub_8055148: @ 8055148 + push {r4,lr} + bl sub_805A5E4 + ldr r4, _0805516C @ =gUnknown_2036DFC + ldr r0, [r4] + bl sub_8059AB0 + ldr r0, [r4] + bl sub_8059AD8 + bl sub_805A684 + bl sub_806FF9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805516C: .4byte gUnknown_2036DFC + thumb_func_end sub_8055148 + + thumb_func_start sub_8055170 +sub_8055170: @ 8055170 + push {lr} + ldr r0, _08055180 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x32] + cmp r1, 0 + bne _08055184 + movs r0, 0 + b _0805518E + .align 2, 0 +_08055180: .4byte gUnknown_3005008 +_08055184: + ldr r0, _08055194 @ =gUnknown_834EB8C + subs r1, 0x1 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_0805518E: + pop {r1} + bx r1 + .align 2, 0 +_08055194: .4byte gUnknown_834EB8C + thumb_func_end sub_8055170 + + thumb_func_start sub_8055198 +sub_8055198: @ 8055198 + ldr r3, _080551C4 @ =gUnknown_2031DB4 + ldr r0, _080551C8 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r0, [r2, 0x4] + ldr r1, [r2, 0x8] + str r0, [r3] + str r1, [r3, 0x4] + ldr r0, _080551CC @ =gUnknown_2031DBC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2, 0x4] + str r1, [r2, 0x8] + ldr r2, _080551D0 @ =gUnknown_2031DC4 + ldr r0, _080551D4 @ =gUnknown_826D2B0 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + ldr r2, _080551D8 @ =gUnknown_2031DCC + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_080551C4: .4byte gUnknown_2031DB4 +_080551C8: .4byte gUnknown_3005008 +_080551CC: .4byte gUnknown_2031DBC +_080551D0: .4byte gUnknown_2031DC4 +_080551D4: .4byte gUnknown_826D2B0 +_080551D8: .4byte gUnknown_2031DCC + thumb_func_end sub_8055198 + + thumb_func_start sub_80551DC +sub_80551DC: @ 80551DC + push {r4,r5,lr} + ldr r4, [sp, 0xC] + ldr r5, [sp, 0x10] + strb r1, [r0] + strb r2, [r0, 0x1] + strb r3, [r0, 0x2] + lsls r4, 24 + asrs r4, 24 + strh r4, [r0, 0x4] + lsls r5, 24 + asrs r5, 24 + strh r5, [r0, 0x6] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80551DC + + thumb_func_start sub_80551FC +sub_80551FC: @ 80551FC + push {lr} + adds r1, r0, 0 + movs r2, 0 + ldrsb r2, [r1, r2] + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bne _08055230 + movs r0, 0x1 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _08055230 + movs r2, 0x2 + ldrsb r2, [r1, r2] + cmp r2, r0 + bne _08055230 + movs r0, 0x4 + ldrsh r3, [r1, r0] + cmp r3, r2 + bne _08055230 + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, r3 + bne _08055230 + movs r0, 0x1 + b _08055232 +_08055230: + movs r0, 0 +_08055232: + pop {r1} + bx r1 + thumb_func_end sub_80551FC + + thumb_func_start sub_8055238 +sub_8055238: @ 8055238 + lsls r0, 16 + lsls r1, 16 + ldr r2, _0805524C @ =gUnknown_83526A8 + lsrs r0, 14 + adds r0, r2 + ldr r0, [r0] + lsrs r1, 14 + adds r1, r0 + ldr r0, [r1] + bx lr + .align 2, 0 +_0805524C: .4byte gUnknown_83526A8 + thumb_func_end sub_8055238 + + thumb_func_start sub_8055250 +sub_8055250: @ 8055250 + push {lr} + ldr r1, _08055270 @ =gUnknown_2031DBC + movs r0, 0 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + pop {r1} + bx r1 + .align 2, 0 +_08055270: .4byte gUnknown_2031DBC + thumb_func_end sub_8055250 + + thumb_func_start sub_8055274 +sub_8055274: @ 8055274 + push {r4-r6,lr} + ldr r4, _080552B4 @ =gUnknown_2036DFC + ldr r5, _080552B8 @ =gUnknown_3005008 + ldr r1, [r5] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r1, r4, 0 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + ldr r1, [r5] + ldrh r0, [r4, 0x12] + strh r0, [r1, 0x32] + bl sub_8055170 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080552B4: .4byte gUnknown_2036DFC +_080552B8: .4byte gUnknown_3005008 + thumb_func_end sub_8055274 + + thumb_func_start sub_80552BC +sub_80552BC: @ 80552BC + push {r4,r5,lr} + ldr r4, _080552F4 @ =gUnknown_2036DFC + ldr r0, _080552F8 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r1, r4, 0 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r0] + str r0, [r1] + bl sub_8055170 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080552F4: .4byte gUnknown_2036DFC +_080552F8: .4byte gUnknown_3005008 + thumb_func_end sub_80552BC + + thumb_func_start sub_80552FC +sub_80552FC: @ 80552FC + push {r4,r5,lr} + ldr r0, _0805532C @ =gUnknown_3005008 + ldr r2, [r0] + movs r1, 0x6 + ldrsb r1, [r2, r1] + adds r4, r0, 0 + cmp r1, 0 + blt _08055334 + ldr r3, _08055330 @ =gUnknown_2036DFC + ldr r0, [r3, 0x4] + ldrb r5, [r0, 0x1] + cmp r1, r5 + bge _08055334 + ldr r0, [r0, 0x8] + lsls r1, 3 + adds r0, r1, r0 + ldrh r0, [r0] + strh r0, [r2] + ldr r0, [r3, 0x4] + ldr r0, [r0, 0x8] + adds r1, r0 + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x2] + b _0805536C + .align 2, 0 +_0805532C: .4byte gUnknown_3005008 +_08055330: .4byte gUnknown_2036DFC +_08055334: + ldr r1, [r4] + ldrh r3, [r1, 0x8] + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + blt _08055350 + ldrh r2, [r1, 0xA] + movs r5, 0xA + ldrsh r0, [r1, r5] + cmp r0, 0 + blt _08055350 + strh r3, [r1] + strh r2, [r1, 0x2] + b _0805536C +_08055350: + ldr r3, [r4] + ldr r2, _08055374 @ =gUnknown_2036DFC + ldr r0, [r2] + ldr r0, [r0] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r3] + ldr r0, [r2] + ldr r0, [r0, 0x4] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r3, 0x2] +_0805536C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08055374: .4byte gUnknown_2036DFC + thumb_func_end sub_80552FC + + thumb_func_start sub_8055378 +sub_8055378: @ 8055378 + push {lr} + bl sub_8055198 + bl sub_8055274 + bl sub_80552FC + pop {r0} + bx r0 + thumb_func_end sub_8055378 + + thumb_func_start sub_805538C +sub_805538C: @ 805538C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, _080553C4 @ =gUnknown_2031DBC + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80551DC + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080553C4: .4byte gUnknown_2031DBC + thumb_func_end sub_805538C + + thumb_func_start sub_80553C8 +sub_80553C8: @ 80553C8 + push {lr} + sub sp, 0x4 + lsls r0, 24 + asrs r0, 24 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + movs r3, 0x1 + negs r3, r3 + str r3, [sp] + bl sub_805538C + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80553C8 + + thumb_func_start sub_80553E8 +sub_80553E8: @ 80553E8 + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _08055418 @ =gUnknown_3005008 + ldr r5, [r0] + adds r0, r5, 0 + adds r0, 0x14 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + lsls r3, 24 + asrs r3, 24 + movs r4, 0 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, 0x2 + ldrsb r4, [r5, r4] + str r4, [sp, 0x4] + bl sub_80551DC + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08055418: .4byte gUnknown_3005008 + thumb_func_end sub_80553E8 + + thumb_func_start sub_805541C +sub_805541C: @ 805541C + push {r4,r5,lr} + sub sp, 0x8 + ldr r4, [sp, 0x14] + ldr r5, [sp, 0x18] + ldr r0, _08055450 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x14 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + lsls r3, 24 + asrs r3, 24 + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + lsls r5, 24 + asrs r5, 24 + str r5, [sp, 0x4] + bl sub_80551DC + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08055450: .4byte gUnknown_3005008 + thumb_func_end sub_805541C + + thumb_func_start sub_8055454 +sub_8055454: @ 8055454 + ldr r2, _08055464 @ =gUnknown_2031DBC + ldr r0, _08055468 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, [r0, 0x18] + ldr r0, [r0, 0x14] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_08055464: .4byte gUnknown_2031DBC +_08055468: .4byte gUnknown_3005008 + thumb_func_end sub_8055454 + + thumb_func_start sub_805546C +sub_805546C: @ 805546C + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80BFCB0 + adds r4, r0, 0 + cmp r4, 0 + beq _0805549A + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x1 + ldrsb r1, [r4, r1] + movs r2, 0x1 + negs r2, r2 + movs r3, 0x2 + ldrsb r3, [r4, r3] + ldrb r4, [r4, 0x4] + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + bl sub_805538C +_0805549A: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805546C + + thumb_func_start sub_80554A4 +sub_80554A4: @ 80554A4 + ldr r2, _080554B4 @ =gUnknown_2031DBC + ldr r0, _080554B8 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, [r0, 0x20] + ldr r0, [r0, 0x1C] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_080554B4: .4byte gUnknown_2031DBC +_080554B8: .4byte gUnknown_3005008 + thumb_func_end sub_80554A4 + + thumb_func_start sub_80554BC +sub_80554BC: @ 80554BC + push {lr} + ldr r0, _080554C8 @ =gUnknown_2031DBC + bl sub_80BFCD0 + pop {r0} + bx r0 + .align 2, 0 +_080554C8: .4byte gUnknown_2031DBC + thumb_func_end sub_80554BC + + thumb_func_start sub_80554CC +sub_80554CC: @ 80554CC + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80BFCB0 + adds r5, r0, 0 + cmp r5, 0 + beq _08055500 + ldr r0, _08055508 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x1C + movs r1, 0 + ldrsb r1, [r5, r1] + movs r2, 0x1 + ldrsb r2, [r5, r2] + movs r3, 0x1 + negs r3, r3 + movs r4, 0x2 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, 0x4 + ldrsb r4, [r5, r4] + str r4, [sp, 0x4] + bl sub_80551DC +_08055500: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08055508: .4byte gUnknown_3005008 + thumb_func_end sub_80554CC + + thumb_func_start sub_805550C +sub_805550C: @ 805550C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + bl sub_8056188 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _08055598 @ =gUnknown_2031DBC + movs r0, 0 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + bl sub_8056158 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + bl sub_80561D8 + lsls r0, 24 + cmp r0, 0 + beq _08055590 + adds r0, r5, 0 + bl sub_80561D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055590 + ldr r5, _0805559C @ =gUnknown_3005008 + ldr r0, [r5] + ldrh r0, [r0, 0x4] + cmp r0, 0x1 + beq _08055590 + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r4, r0 + orrs r4, r0 + ldr r1, [r5] + movs r0, 0x4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + subs r3, r6, 0x7 + lsls r3, 24 + asrs r3, 24 + lsrs r4, 31 + subs r4, 0x7 + adds r4, r7, r4 + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + bl sub_80555A0 +_08055590: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08055598: .4byte gUnknown_2031DBC +_0805559C: .4byte gUnknown_3005008 + thumb_func_end sub_805550C + + thumb_func_start sub_80555A0 +sub_80555A0: @ 80555A0 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, _080555DC @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x24 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80551DC + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080555DC: .4byte gUnknown_3005008 + thumb_func_end sub_80555A0 + + thumb_func_start sub_80555E0 +sub_80555E0: @ 80555E0 + ldr r2, _080555F0 @ =gUnknown_2031DBC + ldr r0, _080555F4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, [r0, 0x28] + ldr r0, [r0, 0x24] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_080555F0: .4byte gUnknown_2031DBC +_080555F4: .4byte gUnknown_3005008 + thumb_func_end sub_80555E0 + + thumb_func_start sub_80555F8 +sub_80555F8: @ 80555F8 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, _08055630 @ =gUnknown_2031DC4 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80551DC + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08055630: .4byte gUnknown_2031DC4 + thumb_func_end sub_80555F8 + + thumb_func_start sub_8055634 +sub_8055634: @ 8055634 + ldr r2, _08055644 @ =gUnknown_2031DBC + ldr r0, _08055648 @ =gUnknown_2031DC4 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_08055644: .4byte gUnknown_2031DBC +_08055648: .4byte gUnknown_2031DC4 + thumb_func_end sub_8055634 + + thumb_func_start sub_805564C +sub_805564C: @ 805564C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, _08055684 @ =gUnknown_2031DCC + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80551DC + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08055684: .4byte gUnknown_2031DCC + thumb_func_end sub_805564C + + thumb_func_start sub_8055688 +sub_8055688: @ 8055688 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r4, _080556B0 @ =gUnknown_2031DCC + adds r0, r4, 0 + bl sub_80551FC + cmp r0, 0x1 + bne _080556BC + ldr r2, _080556B4 @ =gUnknown_2031DBC + ldr r0, _080556B8 @ =gUnknown_2031DB4 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + b _080556D6 + .align 2, 0 +_080556B0: .4byte gUnknown_2031DCC +_080556B4: .4byte gUnknown_2031DBC +_080556B8: .4byte gUnknown_2031DB4 +_080556BC: + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x1 + ldrsb r1, [r4, r1] + movs r2, 0x1 + negs r2, r2 + lsls r3, r5, 24 + asrs r3, 24 + lsls r4, r6, 24 + asrs r4, 24 + str r4, [sp] + bl sub_805538C +_080556D6: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8055688 + + thumb_func_start sub_80556E0 +sub_80556E0: @ 80556E0 + ldr r2, _080556F0 @ =gUnknown_2031DBC + ldr r0, _080556F4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, [r0, 0x10] + ldr r0, [r0, 0xC] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_080556F0: .4byte gUnknown_2031DBC +_080556F4: .4byte gUnknown_3005008 + thumb_func_end sub_80556E0 + + thumb_func_start sub_80556F8 +sub_80556F8: @ 80556F8 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, _08055734 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0xC + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_80551DC + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08055734: .4byte gUnknown_3005008 + thumb_func_end sub_80556F8 + + thumb_func_start sub_8055738 +sub_8055738: @ 8055738 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + bl sub_80BFCB0 + adds r5, r0, 0 + cmp r5, 0 + beq _0805576C + ldr r0, _08055774 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0xC + movs r1, 0 + ldrsb r1, [r5, r1] + movs r2, 0x1 + ldrsb r2, [r5, r2] + movs r3, 0x1 + negs r3, r3 + movs r4, 0x2 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, 0x4 + ldrsb r4, [r5, r4] + str r4, [sp, 0x4] + bl sub_80551DC +_0805576C: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08055774: .4byte gUnknown_3005008 + thumb_func_end sub_8055738 + + thumb_func_start sub_8055778 +sub_8055778: @ 8055778 + ldr r0, _08055788 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r0, [r2, 0x14] + ldr r1, [r2, 0x18] + str r0, [r2, 0xC] + str r1, [r2, 0x10] + bx lr + .align 2, 0 +_08055788: .4byte gUnknown_3005008 + thumb_func_end sub_8055778 + + thumb_func_start sub_805578C +sub_805578C: @ 805578C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080557A0 @ =gUnknown_2036DFC + ldr r0, [r0, 0xC] + ldr r3, [r0] + ldr r1, [r0, 0x4] + cmp r1, 0 + bne _080557A8 + b _080557BC + .align 2, 0 +_080557A0: .4byte gUnknown_2036DFC +_080557A4: + adds r0, r1, 0 + b _080557BE +_080557A8: + movs r2, 0 + cmp r2, r3 + bge _080557BC +_080557AE: + ldrb r0, [r1] + cmp r0, r4 + beq _080557A4 + adds r2, 0x1 + adds r1, 0xC + cmp r2, r3 + blt _080557AE +_080557BC: + movs r0, 0 +_080557BE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805578C + + thumb_func_start sub_80557C4 +sub_80557C4: @ 80557C4 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + bl sub_805578C + adds r1, r0, 0 + cmp r1, 0 + beq _080557FC + movs r0, 0x8 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x9] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + lsls r3, r4, 24 + asrs r3, 24 + lsls r4, r5, 24 + asrs r4, 24 + str r4, [sp] + bl sub_805538C + b _08055818 +_080557FC: + bl sub_8069C68 + ldr r0, _08055810 @ =gUnknown_2031DC4 + bl sub_80551FC + cmp r0, 0 + beq _08055814 + movs r0, 0 + b _0805581A + .align 2, 0 +_08055810: .4byte gUnknown_2031DC4 +_08055814: + bl sub_8055634 +_08055818: + movs r0, 0x1 +_0805581A: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80557C4 + + thumb_func_start sub_8055824 +sub_8055824: @ 8055824 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x6 + adds r1, r3, 0 + bl sub_80557C4 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8055824 + + thumb_func_start sub_8055844 +sub_8055844: @ 8055844 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x5 + adds r1, r3, 0 + bl sub_80557C4 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8055844 + + thumb_func_start sub_8055864 +sub_8055864: @ 8055864 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsls r1, 24 + lsrs r5, r0, 24 + asrs r0, 24 + lsrs r4, r1, 24 + asrs r1, 24 + movs r3, 0x1 + negs r3, r3 + str r3, [sp] + adds r2, r3, 0 + bl sub_805538C + bl sub_8055E94 + bl sub_8055198 + bl sub_8055274 + bl sub_8054F68 + bl sub_810B7FC + bl sub_806E110 + bl nullsub_74 + bl sub_806D7E8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_810C578 + bl sub_807B140 + bl sub_805610C + bl sub_8055CB8 + bl sub_8055E84 + bl sub_8069C44 + bl sub_815D8F8 + bl sub_80589D4 + ldr r4, _0805591C @ =gUnknown_2036DFC + ldr r0, [r4] + bl sub_8059A7C + ldr r0, [r4] + bl sub_8059AA0 + movs r4, 0x7 +_080558D4: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_807AB74 + adds r4, 0x1 + cmp r4, 0xC + ble _080558D4 + bl sub_806FFB0 + bl sub_8141DAC + bl sub_8141E28 + bl sub_8110920 + bl sub_807B1A4 + bl sub_806E918 + bl sub_8069C50 + bl sub_80561B4 + ldr r1, _0805591C @ =gUnknown_2036DFC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1, 0x14] + cmp r0, r1 + beq _08055914 + movs r0, 0x1 + bl sub_8098110 +_08055914: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805591C: .4byte gUnknown_2036DFC + thumb_func_end sub_8055864 + + thumb_func_start sub_8055920 +sub_8055920: @ 8055920 + push {r4,lr} + bl sub_8055274 + bl sub_8054F68 + ldr r0, _0805599C @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + bl sub_80561D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_810B7FC + bl sub_806E110 + bl nullsub_74 + bl sub_806D7E8 + ldr r0, _080559A0 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_810C578 + bl sub_807B140 + bl sub_805610C + cmp r4, 0 + beq _08055974 + ldr r0, _080559A4 @ =0x00000806 + bl sub_806E6A8 +_08055974: + bl sub_8055CB8 + bl sub_8055E84 + bl sub_8069C44 + bl sub_815D8F8 + bl sub_8141DAC + bl sub_8141DD4 + bl sub_8110920 + bl sub_80589D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805599C: .4byte gUnknown_2036DFC +_080559A0: .4byte gUnknown_3005008 +_080559A4: .4byte 0x00000806 + thumb_func_end sub_8055920 + + thumb_func_start sub_80559A8 +sub_80559A8: @ 80559A8 + push {lr} + bl sub_8055274 + bl sub_8054F68 + ldr r0, _080559E0 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + bl sub_80561D8 + bl sub_810B7FC + bl sub_807B140 + bl sub_805610C + bl sub_8055CB8 + bl sub_8110920 + bl sub_8111708 + bl sub_80552BC + bl sub_80589D4 + pop {r0} + bx r0 + .align 2, 0 +_080559E0: .4byte gUnknown_2036DFC + thumb_func_end sub_80559A8 + + thumb_func_start sub_80559E4 +sub_80559E4: @ 80559E4 + ldr r0, _080559F4 @ =gUnknown_2031DD4 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0, 0x1] + strb r1, [r0] + strb r2, [r0, 0x2] + bx lr + .align 2, 0 +_080559F4: .4byte gUnknown_2031DD4 + thumb_func_end sub_80559E4 + + thumb_func_start sub_80559F8 +sub_80559F8: @ 80559F8 + ldr r1, _08055A04 @ =gUnknown_2031DD4 + strb r0, [r1, 0x1] + movs r0, 0x1 + strb r0, [r1] + strb r0, [r1, 0x2] + bx lr + .align 2, 0 +_08055A04: .4byte gUnknown_2031DD4 + thumb_func_end sub_80559F8 + + thumb_func_start sub_8055A08 +sub_8055A08: @ 8055A08 + push {r4,lr} + bl sub_805C6C4 + ldr r4, _08055A24 @ =gUnknown_2031DD4 + strb r0, [r4, 0x1] + movs r0, 0x2 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055A28 + movs r0, 0x2 + b _08055A5A + .align 2, 0 +_08055A24: .4byte gUnknown_2031DD4 +_08055A28: + movs r0, 0x4 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055A38 + movs r0, 0x4 + b _08055A5A +_08055A38: + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055A48 + movs r0, 0x8 + b _08055A5A +_08055A48: + movs r0, 0x10 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055A58 + movs r0, 0x10 + b _08055A5A +_08055A58: + movs r0, 0x1 +_08055A5A: + strb r0, [r4] + ldr r1, _08055A68 @ =gUnknown_2031DD4 + movs r0, 0 + strb r0, [r1, 0x2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055A68: .4byte gUnknown_2031DD4 + thumb_func_end sub_8055A08 + + thumb_func_start sub_8055A6C +sub_8055A6C: @ 8055A6C + push {r4-r7,lr} + bl sub_8056188 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + bl sub_8055C74 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r6, _08055ABC @ =gUnknown_2031DD4 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8055ACC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08055AC0 @ =0xffffff00 + ands r7, r0 + orrs r7, r1 + adds r0, r6, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8055B74 + lsls r0, 24 + lsrs r0, 16 + ldr r1, _08055AC4 @ =0xffff00ff + ands r7, r1 + orrs r7, r0 + ldr r0, _08055AC8 @ =0xff00ffff + ands r7, r0 + str r7, [r6] + adds r0, r6, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08055ABC: .4byte gUnknown_2031DD4 +_08055AC0: .4byte 0xffffff00 +_08055AC4: .4byte 0xffff00ff +_08055AC8: .4byte 0xff00ffff + thumb_func_end sub_8055A6C + + thumb_func_start sub_8055ACC +sub_8055ACC: @ 8055ACC + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 24 + lsrs r4, r2, 24 + cmp r4, 0x8 + beq _08055AE8 + ldr r0, _08055AF0 @ =0x00000802 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _08055B30 +_08055AE8: + cmp r4, 0x5 + bne _08055AF4 + movs r0, 0x10 + b _08055B32 + .align 2, 0 +_08055AF0: .4byte 0x00000802 +_08055AF4: + adds r0, r5, 0 + bl sub_8055B38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055B30 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8059CA4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08055B16 + movs r0, 0x8 + b _08055B32 +_08055B16: + bl sub_8055C9C + cmp r0, 0x1 + bne _08055B30 + ldrb r0, [r6] + cmp r0, 0x2 + bne _08055B28 + movs r0, 0x2 + b _08055B32 +_08055B28: + cmp r0, 0x4 + bne _08055B30 + movs r0, 0x4 + b _08055B32 +_08055B30: + movs r0, 0x1 +_08055B32: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8055ACC + + thumb_func_start sub_8055B38 +sub_8055B38: @ 8055B38 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CA4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08055B6C + ldr r0, _08055B60 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _08055B64 @ =0x00005601 + cmp r1, r0 + beq _08055B5C + ldr r0, _08055B68 @ =0x00005701 + cmp r1, r0 + bne _08055B6C +_08055B5C: + movs r0, 0x1 + b _08055B6E + .align 2, 0 +_08055B60: .4byte gUnknown_3005008 +_08055B64: .4byte 0x00005601 +_08055B68: .4byte 0x00005701 +_08055B6C: + movs r0, 0 +_08055B6E: + pop {r1} + bx r1 + thumb_func_end sub_8055B38 + + thumb_func_start sub_8055B74 +sub_8055B74: @ 8055B74 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 16 + lsrs r4, r2, 16 + lsls r3, 24 + lsrs r5, r3, 24 + ldr r0, _08055BD4 @ =0x00000802 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _08055B94 + cmp r5, 0x6 + beq _08055C3E +_08055B94: + lsls r4, 24 + lsrs r5, r4, 24 + adds r0, r5, 0 + bl sub_8059CA0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055BD0 + adds r0, r5, 0 + bl sub_8059C8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C68 + adds r0, r5, 0 + bl sub_8059BDC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C68 + adds r0, r5, 0 + bl sub_8059D18 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08055BD8 +_08055BD0: + movs r0, 0x2 + b _08055C6E + .align 2, 0 +_08055BD4: .4byte 0x00000802 +_08055BD8: + adds r0, r5, 0 + bl sub_8059D04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C68 + adds r0, r5, 0 + bl sub_8059CF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C3E + adds r0, r5, 0 + bl sub_8059CDC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C1E + adds r0, r5, 0 + bl sub_8059C0C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C1E + adds r0, r5, 0 + bl sub_8059C34 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08055C22 +_08055C1E: + movs r0, 0x3 + b _08055C6E +_08055C22: + adds r0, r5, 0 + bl sub_8059C20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C3E + adds r0, r5, 0 + bl sub_8059C48 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08055C42 +_08055C3E: + movs r0, 0x4 + b _08055C6E +_08055C42: + ldrb r0, [r6] + cmp r0, 0x10 + bne _08055C4C + cmp r7, 0x8 + beq _08055C6C +_08055C4C: + cmp r0, 0x8 + bne _08055C54 + cmp r7, 0x10 + beq _08055C6C +_08055C54: + lsrs r0, r4, 24 + bl sub_8059C78 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055C6C + ldrb r0, [r6, 0x2] + cmp r0, 0 + bne _08055C6C +_08055C68: + movs r0, 0x1 + b _08055C6E +_08055C6C: + ldrb r0, [r6, 0x1] +_08055C6E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8055B74 + + thumb_func_start sub_8055C74 +sub_8055C74: @ 8055C74 + push {lr} + ldr r0, _08055C98 @ =gUnknown_3005008 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, 0x7 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r1, 0x2] + adds r1, 0x7 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08055C98: .4byte gUnknown_3005008 + thumb_func_end sub_8055C74 + + thumb_func_start sub_8055C9C +sub_8055C9C: @ 8055C9C + push {lr} + ldr r0, _08055CAC @ =gUnknown_2036DFC + ldrb r0, [r0, 0x18] + cmp r0, 0 + beq _08055CB0 + movs r0, 0x1 + b _08055CB2 + .align 2, 0 +_08055CAC: .4byte gUnknown_2036DFC +_08055CB0: + movs r0, 0 +_08055CB2: + pop {r1} + bx r1 + thumb_func_end sub_8055C9C + + thumb_func_start sub_8055CB8 +sub_8055CB8: @ 8055CB8 + push {lr} + ldr r0, _08055CC8 @ =gUnknown_2036DFC + ldrb r1, [r0, 0x15] + cmp r1, 0 + bne _08055CD0 + ldr r0, _08055CCC @ =gUnknown_3005008 + ldr r0, [r0] + b _08055CF8 + .align 2, 0 +_08055CC8: .4byte gUnknown_2036DFC +_08055CCC: .4byte gUnknown_3005008 +_08055CD0: + ldr r0, _08055CE8 @ =0x00000806 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _08055CF0 + ldr r0, _08055CEC @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x30 + movs r1, 0 + b _08055CFA + .align 2, 0 +_08055CE8: .4byte 0x00000806 +_08055CEC: .4byte gUnknown_3005008 +_08055CF0: + ldr r0, _08055D00 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08055D04 @ =gUnknown_83C68E0 + ldr r1, [r1] +_08055CF8: + adds r0, 0x30 +_08055CFA: + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08055D00: .4byte gUnknown_3005008 +_08055D04: .4byte gUnknown_83C68E0 + thumb_func_end sub_8055CB8 + + thumb_func_start sub_8055D08 +sub_8055D08: @ 8055D08 + push {lr} + adds r1, r0, 0 + cmp r1, 0 + blt _08055D18 + ldr r0, _08055D28 @ =gUnknown_83C68E0 + ldr r0, [r0] + cmp r1, r0 + ble _08055D1A +_08055D18: + movs r1, 0 +_08055D1A: + ldr r0, _08055D2C @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x30 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08055D28: .4byte gUnknown_83C68E0 +_08055D2C: .4byte gUnknown_3005008 + thumb_func_end sub_8055D08 + + thumb_func_start sub_8055D30 +sub_8055D30: @ 8055D30 + ldr r0, _08055D3C @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x30 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08055D3C: .4byte gUnknown_3005008 + thumb_func_end sub_8055D30 + + thumb_func_start sub_8055D40 +sub_8055D40: @ 8055D40 + push {lr} + ldr r1, _08055D54 @ =gUnknown_3005008 + ldr r1, [r1] + strh r0, [r1, 0x32] + bl sub_8055170 + ldr r1, _08055D58 @ =gUnknown_2036DFC + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08055D54: .4byte gUnknown_3005008 +_08055D58: .4byte gUnknown_2036DFC + thumb_func_end sub_8055D40 + + thumb_func_start sub_8055D5C +sub_8055D5C: @ 8055D5C + ldr r2, _08055D68 @ =gUnknown_2031DBC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .align 2, 0 +_08055D68: .4byte gUnknown_2031DBC + thumb_func_end sub_8055D5C + + thumb_func_start sub_8055D6C +sub_8055D6C: @ 8055D6C + push {lr} + adds r1, r0, 0 + movs r0, 0 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + ldrh r0, [r0, 0x10] + pop {r1} + bx r1 + thumb_func_end sub_8055D6C + + thumb_func_start sub_8055D8C +sub_8055D8C: @ 8055D8C + push {lr} + ldr r0, _08055DA0 @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x4 + bl sub_8055D6C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08055DA0: .4byte gUnknown_3005008 + thumb_func_end sub_8055D8C + + thumb_func_start sub_8055DA4 +sub_8055DA4: @ 8055DA4 + push {lr} + ldr r0, _08055DB4 @ =gUnknown_2031DBC + bl sub_8055D6C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08055DB4: .4byte gUnknown_2031DBC + thumb_func_end sub_8055DA4 + + thumb_func_start sub_8055DB8 +sub_8055DB8: @ 8055DB8 + push {lr} + bl sub_8071A44 + pop {r0} + bx r0 + thumb_func_end sub_8055DB8 + + thumb_func_start sub_8055DC4 +sub_8055DC4: @ 8055DC4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _08055DD8 @ =gUnknown_2031DD8 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08055DDC + bl sub_8071A94 + b _08055E6C + .align 2, 0 +_08055DD8: .4byte gUnknown_2031DD8 +_08055DDC: + cmp r0, 0x2 + beq _08055E6C + ldr r0, _08055E14 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _08055E18 @ =0x00004f01 + cmp r1, r0 + bne _08055E24 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + movs r1, 0 + ldrsh r0, [r4, r1] + subs r0, 0x7 + cmp r0, 0xA + bgt _08055E24 + ldr r0, _08055E1C @ =gMPlay_BGM + ldr r1, [r0] + ldr r0, _08055E20 @ =gUnknown_86E6B0C + cmp r1, r0 + bne _08055E24 + movs r0, 0x4 + bl sub_8071DA4 + b _08055E6C + .align 2, 0 +_08055E14: .4byte gUnknown_3005008 +_08055E18: .4byte 0x00004f01 +_08055E1C: .4byte gMPlay_BGM +_08055E20: .4byte gUnknown_86E6B0C +_08055E24: + bl sub_8055D8C + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _08055E3C @ =gUnknown_3005008 + ldr r1, [r0] + ldrh r0, [r1, 0x2C] + cmp r0, 0 + beq _08055E40 + adds r4, r0, 0 + b _08055E5A + .align 2, 0 +_08055E3C: .4byte gUnknown_3005008 +_08055E40: + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055E5A + ldr r5, _08055E74 @ =0x00000131 + adds r0, r5, 0 + bl sub_8056124 + cmp r0, 0 + beq _08055E5A + adds r4, r5, 0 +_08055E5A: + bl sub_8071A68 + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _08055E6C + adds r0, r4, 0 + bl sub_8071A74 +_08055E6C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08055E74: .4byte 0x00000131 + thumb_func_end sub_8055DC4 + + thumb_func_start sub_8055E78 +sub_8055E78: @ 8055E78 + ldr r1, _08055E80 @ =gUnknown_3005008 + ldr r1, [r1] + strh r0, [r1, 0x2C] + bx lr + .align 2, 0 +_08055E80: .4byte gUnknown_3005008 + thumb_func_end sub_8055E78 + + thumb_func_start sub_8055E84 +sub_8055E84: @ 8055E84 + ldr r0, _08055E90 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x2C] + bx lr + .align 2, 0 +_08055E90: .4byte gUnknown_3005008 + thumb_func_end sub_8055E84 + + thumb_func_start sub_8055E94 +sub_8055E94: @ 8055E94 + push {r4-r6,lr} + ldr r0, _08055EA4 @ =gUnknown_2031DD8 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08055EA8 + bl sub_8071A94 + b _08055F14 + .align 2, 0 +_08055EA4: .4byte gUnknown_2031DD8 +_08055EA8: + cmp r0, 0x2 + beq _08055F14 + ldr r0, _08055F04 @ =0x00004001 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055F14 + bl sub_8055DA4 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8071A68 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r5, _08055F08 @ =0x00000131 + cmp r6, r5 + beq _08055F14 + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055EE8 + adds r0, r5, 0 + bl sub_8056124 + cmp r0, 0 + beq _08055EE8 + adds r4, r5, 0 +_08055EE8: + cmp r4, r6 + beq _08055F14 + movs r0, 0x6 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08055F0C + adds r0, r4, 0 + movs r1, 0x4 + movs r2, 0x4 + bl sub_8071B20 + b _08055F14 + .align 2, 0 +_08055F04: .4byte 0x00004001 +_08055F08: .4byte 0x00000131 +_08055F0C: + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8071AEC +_08055F14: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8055E94 + + thumb_func_start sub_8055F1C +sub_8055F1C: @ 8055F1C + push {r4,lr} + bl sub_8071A68 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8055D8C + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _08055F42 + bl sub_8055D8C + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x8 + bl sub_8071AEC +_08055F42: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8055F1C + + thumb_func_start sub_8055F48 +sub_8055F48: @ 8055F48 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8071A68 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + beq _08055F62 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8071AEC +_08055F62: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8055F48 + + thumb_func_start sub_8055F68 +sub_8055F68: @ 8055F68 + push {lr} + bl sub_8055250 + ldrb r0, [r0, 0x17] + bl sub_805621C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055F80 + movs r0, 0x4 + b _08055F82 +_08055F80: + movs r0, 0x2 +_08055F82: + pop {r1} + bx r1 + thumb_func_end sub_8055F68 + + thumb_func_start sub_8055F88 +sub_8055F88: @ 8055F88 + push {r4,lr} + bl sub_8055DA4 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _08055FC0 @ =0x00004001 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08055FB8 + bl sub_8071A68 + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _08055FB8 + bl sub_8055F68 + lsls r0, 24 + lsrs r0, 24 + bl sub_8071AB4 +_08055FB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055FC0: .4byte 0x00004001 + thumb_func_end sub_8055F88 + + thumb_func_start sub_8055FC4 +sub_8055FC4: @ 8055FC4 + push {lr} + bl sub_8071BA0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8055FC4 + + thumb_func_start sub_8055FD4 +sub_8055FD4: @ 8055FD4 + push {lr} + movs r0, 0x4 + bl sub_8071AB4 + pop {r0} + bx r0 + thumb_func_end sub_8055FD4 + + thumb_func_start sub_8055FE0 +sub_8055FE0: @ 8055FE0 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + ldr r0, _0805604C @ =gUnknown_2031DDC + ldrb r0, [r0] + cmp r0, 0x1 + bne _08056014 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + beq _0805606A +_08056014: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x58 + bl __umodsi3 + adds r0, 0xD4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1E + bl __umodsi3 + adds r0, 0x32 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08056050 @ =gUnknown_2031DD8 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08056054 + bl sub_8071A94 + b _0805606A + .align 2, 0 +_0805604C: .4byte gUnknown_2031DDC +_08056050: .4byte gUnknown_2031DD8 +_08056054: + cmp r0, 0x2 + beq _0805606A + ldr r0, _08056074 @ =gUnknown_2031DDA + ldrh r0, [r0] + lsls r1, r4, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + movs r3, 0x1 + bl sub_8071E3C +_0805606A: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08056074: .4byte gUnknown_2031DDA + thumb_func_end sub_8055FE0 + + thumb_func_start sub_8056078 +sub_8056078: @ 8056078 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x4 + bhi _08056106 + lsls r0, 2 + ldr r1, _08056090 @ =_08056094 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056090: .4byte _08056094 + .align 2, 0 +_08056094: + .4byte _080560A8 + .4byte _080560BC + .4byte _080560D8 + .4byte _080560F2 + .4byte _08056106 +_080560A8: + ldr r0, _080560B4 @ =gUnknown_2031DDA + ldrh r0, [r0] + cmp r0, 0 + bne _080560B8 + movs r0, 0x4 + b _08056104 + .align 2, 0 +_080560B4: .4byte gUnknown_2031DDA +_080560B8: + movs r0, 0x1 + b _08056104 +_080560BC: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x96 + lsls r1, 4 + bl __umodsi3 + movs r1, 0x96 + lsls r1, 3 + adds r0, r1 + strh r0, [r5] + movs r0, 0x3 + b _08056104 +_080560D8: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r4, 0x96 + lsls r4, 3 + adds r1, r4, 0 + bl __umodsi3 + adds r0, r4 + strh r0, [r5] + movs r0, 0x3 + b _08056104 +_080560F2: + ldrh r0, [r5] + subs r0, 0x1 + strh r0, [r5] + lsls r0, 16 + cmp r0, 0 + bne _08056106 + bl sub_8055FE0 + movs r0, 0x2 +_08056104: + strh r0, [r6] +_08056106: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8056078 + + thumb_func_start sub_805610C +sub_805610C: @ 805610C + push {lr} + ldr r0, _0805611C @ =gUnknown_2031DDC + bl sub_8082FE8 + ldr r1, _08056120 @ =gUnknown_2031DDA + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0805611C: .4byte gUnknown_2031DDC +_08056120: .4byte gUnknown_2031DDA + thumb_func_end sub_805610C + + thumb_func_start sub_8056124 +sub_8056124: @ 8056124 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0x8D + lsls r0, 1 + cmp r1, r0 + beq _08056138 + adds r0, 0x17 + cmp r1, r0 + bne _08056150 +_08056138: + ldr r0, _0805614C @ =gUnknown_2036DFC + ldrb r0, [r0, 0x14] + cmp r0, 0x84 + beq _08056148 + cmp r0, 0x7B + beq _08056148 + cmp r0, 0x61 + bne _08056150 +_08056148: + movs r0, 0 + b _08056152 + .align 2, 0 +_0805614C: .4byte gUnknown_2036DFC +_08056150: + movs r0, 0x1 +_08056152: + pop {r1} + bx r1 + thumb_func_end sub_8056124 + + thumb_func_start sub_8056158 +sub_8056158: @ 8056158 + push {lr} + lsls r0, 24 + asrs r0, 8 + lsrs r0, 16 + lsls r1, 24 + asrs r1, 8 + lsrs r1, 16 + bl sub_8055238 + ldrb r0, [r0, 0x17] + pop {r1} + bx r1 + thumb_func_end sub_8056158 + + thumb_func_start sub_8056170 +sub_8056170: @ 8056170 + push {lr} + movs r2, 0 + ldrsb r2, [r0, r2] + movs r1, 0x1 + ldrsb r1, [r0, r1] + adds r0, r2, 0 + bl sub_8056158 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8056170 + + thumb_func_start sub_8056188 +sub_8056188: @ 8056188 + push {lr} + ldr r0, _0805619C @ =gUnknown_3005008 + ldr r0, [r0] + adds r0, 0x4 + bl sub_8056170 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805619C: .4byte gUnknown_3005008 + thumb_func_end sub_8056188 + + thumb_func_start sub_80561A0 +sub_80561A0: @ 80561A0 + push {lr} + ldr r0, _080561B0 @ =gUnknown_2031DB4 + bl sub_8056170 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080561B0: .4byte gUnknown_2031DB4 + thumb_func_end sub_80561A0 + + thumb_func_start sub_80561B4 +sub_80561B4: @ 80561B4 + push {lr} + ldr r1, _080561D4 @ =gUnknown_2031DB4 + movs r0, 0 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + .align 2, 0 +_080561D4: .4byte gUnknown_2031DB4 + thumb_func_end sub_80561B4 + + thumb_func_start sub_80561D8 +sub_80561D8: @ 80561D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080561F2 + cmp r0, 0x1 + beq _080561F2 + cmp r0, 0x5 + beq _080561F2 + cmp r0, 0x2 + beq _080561F2 + cmp r0, 0x6 + bne _080561F6 +_080561F2: + movs r0, 0x1 + b _080561F8 +_080561F6: + movs r0, 0 +_080561F8: + pop {r1} + bx r1 + thumb_func_end sub_80561D8 + + thumb_func_start sub_80561FC +sub_80561FC: @ 80561FC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _08056212 + cmp r0, 0x1 + beq _08056212 + cmp r0, 0x6 + beq _08056212 + cmp r0, 0x2 + bne _08056216 +_08056212: + movs r0, 0x1 + b _08056218 +_08056216: + movs r0, 0 +_08056218: + pop {r1} + bx r1 + thumb_func_end sub_80561FC + + thumb_func_start sub_805621C +sub_805621C: @ 805621C + push {lr} + lsls r0, 24 + movs r1, 0xF8 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _08056230 + movs r0, 0 + b _08056232 +_08056230: + movs r0, 0x1 +_08056232: + pop {r1} + bx r1 + thumb_func_end sub_805621C + + thumb_func_start sub_8056238 +sub_8056238: @ 8056238 + push {lr} + ldr r0, _0805625C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x14 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x15] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + .align 2, 0 +_0805625C: .4byte gUnknown_3005008 + thumb_func_end sub_8056238 + + thumb_func_start sub_8056260 +sub_8056260: @ 8056260 + push {lr} + ldr r0, _08056284 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + .align 2, 0 +_08056284: .4byte gUnknown_3005008 + thumb_func_end sub_8056260 + + thumb_func_start sub_8056288 +sub_8056288: @ 8056288 + push {lr} + ldr r0, _080562AC @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + ldrb r0, [r0, 0x1B] + pop {r1} + bx r1 + .align 2, 0 +_080562AC: .4byte gUnknown_3005008 + thumb_func_end sub_8056288 + + thumb_func_start sub_80562B0 +sub_80562B0: @ 80562B0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + bl sub_8056E74 + bl sub_8056E80 + movs r0, 0 + bl sub_8001618 + ldr r1, _08056344 @ =gUnknown_826D320 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0x1 + movs r1, 0x5 + movs r2, 0x1 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x5 + movs r2, 0x1 + bl sub_80019E4 + movs r0, 0x3 + movs r1, 0x5 + movs r2, 0x1 + bl sub_80019E4 + ldr r0, _08056348 @ =gUnknown_3005018 + mov r8, r0 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + ldr r6, _0805634C @ =gUnknown_3005014 + adds r0, r4, 0 + bl sub_8002BB0 + str r0, [r6] + ldr r5, _08056350 @ =gUnknown_300501C + adds r0, r4, 0 + bl sub_8002BB0 + str r0, [r5] + mov r0, r8 + ldr r1, [r0] + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r6] + movs r0, 0x2 + bl sub_8001FA0 + ldr r1, [r5] + movs r0, 0x3 + bl sub_8001FA0 + bl sub_80F6C6C + bl sub_80F6C98 + bl sub_8069348 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08056344: .4byte gUnknown_826D320 +_08056348: .4byte gUnknown_3005018 +_0805634C: .4byte gUnknown_3005014 +_08056350: .4byte gUnknown_300501C + thumb_func_end sub_80562B0 + + thumb_func_start sub_8056354 +sub_8056354: @ 8056354 + push {r4-r6,lr} + mov r6, r8 + push {r6} + movs r0, 0 + bl sub_8001618 + ldr r1, _080563E0 @ =gUnknown_826D320 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0x1 + movs r1, 0x5 + movs r2, 0x1 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x5 + movs r2, 0x1 + bl sub_80019E4 + movs r0, 0x3 + movs r1, 0x5 + movs r2, 0x1 + bl sub_80019E4 + ldr r0, _080563E4 @ =gUnknown_3005018 + mov r8, r0 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + ldr r6, _080563E8 @ =gUnknown_3005014 + adds r0, r4, 0 + bl sub_8002BB0 + str r0, [r6] + ldr r5, _080563EC @ =gUnknown_300501C + adds r0, r4, 0 + bl sub_8002BB0 + str r0, [r5] + mov r0, r8 + ldr r1, [r0] + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r6] + movs r0, 0x2 + bl sub_8001FA0 + ldr r1, [r5] + movs r0, 0x3 + bl sub_8001FA0 + bl sub_80F6C6C + bl sub_80F6C98 + bl sub_8069348 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080563E0: .4byte gUnknown_826D320 +_080563E4: .4byte gUnknown_3005018 +_080563E8: .4byte gUnknown_3005014 +_080563EC: .4byte gUnknown_300501C + thumb_func_end sub_8056354 + + thumb_func_start sub_80563F0 +sub_80563F0: @ 80563F0 + push {lr} + bl sub_80F6C8C + ldr r0, _08056414 @ =gUnknown_300501C + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _08056418 @ =gUnknown_3005014 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _0805641C @ =gUnknown_3005018 + ldr r0, [r0] + bl sub_8002BC4 + pop {r0} + bx r0 + .align 2, 0 +_08056414: .4byte gUnknown_300501C +_08056418: .4byte gUnknown_3005014 +_0805641C: .4byte gUnknown_3005018 + thumb_func_end sub_80563F0 + + thumb_func_start sub_8056420 +sub_8056420: @ 8056420 + push {lr} + bl sub_80A0EB4 + pop {r0} + bx r0 + thumb_func_end sub_8056420 + + thumb_func_start sub_805642C +sub_805642C: @ 805642C + push {lr} + ldr r0, _0805643C @ =gUnknown_30030F0 + ldr r1, [r0] + ldr r0, _08056440 @ =sub_8057884 + cmp r1, r0 + beq _08056444 + movs r0, 0 + b _08056446 + .align 2, 0 +_0805643C: .4byte gUnknown_30030F0 +_08056440: .4byte sub_8057884 +_08056444: + movs r0, 0x1 +_08056446: + pop {r1} + bx r1 + thumb_func_end sub_805642C + + thumb_func_start sub_805644C +sub_805644C: @ 805644C + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r4, r1, 0 + bl sub_8112B3C + bl sub_805BEB8 + mov r6, sp + mov r0, sp + bl sub_806C888 + mov r0, sp + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_806C8BC + mov r0, sp + bl sub_806CD30 + bl sub_8069958 + lsls r0, 24 + cmp r0, 0 + bne _080564BA + mov r0, sp + bl sub_806CAC8 + cmp r0, 0x1 + bne _080564B0 + ldr r0, _080564A8 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0805649E + ldr r0, _080564AC @ =gUnknown_3005078 + bl sub_81127F8 +_0805649E: + bl sub_8069940 + bl sub_80982EC + b _080564BA + .align 2, 0 +_080564A8: .4byte gUnknown_3005E88 +_080564AC: .4byte gUnknown_3005078 +_080564B0: + ldrb r0, [r6, 0x2] + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_805B3E0 +_080564BA: + bl sub_811092C + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805644C + + thumb_func_start sub_80564C8 +sub_80564C8: @ 80564C8 + push {lr} + sub sp, 0x4 + bl sub_8112B3C + bl sub_805BEB8 + bl sub_8111C68 + mov r0, sp + bl sub_806C888 + ldr r0, _08056508 @ =gUnknown_3005E90 + ldr r0, [r0] + str r0, [sp] + mov r0, sp + bl sub_806CD30 + bl sub_8069958 + lsls r0, 24 + cmp r0, 0 + bne _08056512 + mov r0, sp + bl sub_806CAC8 + cmp r0, 0x1 + bne _0805650C + bl sub_8069940 + bl sub_80982EC + b _08056522 + .align 2, 0 +_08056508: .4byte gUnknown_3005E90 +_0805650C: + bl sub_811092C + b _08056522 +_08056512: + bl sub_8111CD0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08056522 + bl sub_811092C +_08056522: + ldr r0, _08056530 @ =gUnknown_3005E90 + bl sub_806C888 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08056530: .4byte gUnknown_3005E90 + thumb_func_end sub_80564C8 + + thumb_func_start sub_8056534 +sub_8056534: @ 8056534 + push {r4,lr} + ldr r4, _0805655C @ =gUnknown_30030F0 + ldr r1, [r4, 0x4] + ldr r0, _08056560 @ =sub_80565B4 + cmp r1, r0 + bne _08056570 + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08056554 + ldr r0, _08056564 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _08056568 +_08056554: + bl sub_80564C8 + b _08056570 + .align 2, 0 +_0805655C: .4byte gUnknown_30030F0 +_08056560: .4byte sub_80565B4 +_08056564: .4byte gUnknown_203ADFA +_08056568: + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x2C] + bl sub_805644C +_08056570: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8056534 + + thumb_func_start sub_8056578 +sub_8056578: @ 8056578 + push {lr} + bl sub_8069AA8 + bl sub_8077578 + bl sub_8006B5C + bl sub_805ABB0 + bl sub_8115798 + bl sub_805AE28 + bl sub_8006BA8 + bl sub_80704D0 + bl sub_806FFBC + bl sub_80F67B8 + pop {r0} + bx r0 + thumb_func_end sub_8056578 + + thumb_func_start sub_80565A8 +sub_80565A8: @ 80565A8 + push {lr} + bl sub_8056578 + pop {r0} + bx r0 + thumb_func_end sub_80565A8 + + thumb_func_start sub_80565B4 +sub_80565B4: @ 80565B4 + push {r4,lr} + ldr r0, _080565DC @ =gUnknown_2037AB8 + ldrb r0, [r0, 0x7] + lsrs r0, 7 + adds r4, r0, 0 + cmp r4, 0 + beq _080565C8 + movs r0, 0 + bl sub_80006F4 +_080565C8: + bl sub_8056578 + cmp r4, 0 + beq _080565D4 + bl sub_8056A04 +_080565D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080565DC: .4byte gUnknown_2037AB8 + thumb_func_end sub_80565B4 + + thumb_func_start sub_80565E0 +sub_80565E0: @ 80565E0 + ldr r1, _080565E8 @ =gUnknown_30030F0 + str r0, [r1] + bx lr + .align 2, 0 +_080565E8: .4byte gUnknown_30030F0 + thumb_func_end sub_80565E0 + + thumb_func_start sub_80565EC +sub_80565EC: @ 80565EC + push {r4,lr} + ldr r4, _08056604 @ =gUnknown_3005024 + ldr r0, [r4] + cmp r0, 0 + beq _08056618 + bl _call_via_r0 + lsls r0, 24 + cmp r0, 0 + bne _08056608 + movs r0, 0 + b _08056638 + .align 2, 0 +_08056604: .4byte gUnknown_3005024 +_08056608: + movs r1, 0 + str r1, [r4] + ldr r0, _08056614 @ =gUnknown_3005020 + str r1, [r0] + b _08056636 + .align 2, 0 +_08056614: .4byte gUnknown_3005020 +_08056618: + ldr r0, _08056628 @ =gUnknown_3005020 + ldr r0, [r0] + cmp r0, 0 + beq _0805662C + bl _call_via_r0 + b _08056630 + .align 2, 0 +_08056628: .4byte gUnknown_3005020 +_0805662C: + bl sub_807DF64 +_08056630: + ldr r1, _08056640 @ =gUnknown_3005020 + movs r0, 0 + str r0, [r1] +_08056636: + movs r0, 0x1 +_08056638: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08056640: .4byte gUnknown_3005020 + thumb_func_end sub_80565EC + + thumb_func_start sub_8056644 +sub_8056644: @ 8056644 + push {lr} + bl sub_80569BC + bl sub_8071A94 + bl sub_8056420 + bl sub_8054A60 + bl sub_80559E4 + bl sub_8054838 + bl sub_8069A80 + bl sub_806994C + ldr r1, _0805668C @ =gUnknown_3005020 + ldr r0, _08056690 @ =sub_807DF7C + str r0, [r1] + ldr r1, _08056694 @ =gUnknown_3005024 + movs r0, 0 + str r0, [r1] + ldr r0, _08056698 @ =gUnknown_3003528 + bl sub_8056E5C + bl sub_8056A04 + ldr r0, _0805669C @ =sub_8056534 + bl sub_80565E0 + ldr r0, _080566A0 @ =sub_80565B4 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0805668C: .4byte gUnknown_3005020 +_08056690: .4byte sub_807DF7C +_08056694: .4byte gUnknown_3005024 +_08056698: .4byte gUnknown_3003528 +_0805669C: .4byte sub_8056534 +_080566A0: .4byte sub_80565B4 + thumb_func_end sub_8056644 + + thumb_func_start sub_80566A4 +sub_80566A4: @ 80566A4 + push {lr} + sub sp, 0x4 + ldr r1, _08056708 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x77 + bls _08056702 + bl sub_80569BC + bl sub_8071A94 + bl sub_8056420 + bl sub_8054BC8 + movs r0, 0x2 + bl sub_80559F8 + bl sub_8069A80 + bl sub_806994C + ldr r1, _0805670C @ =gUnknown_3005020 + ldr r0, _08056710 @ =sub_807F5F0 + str r0, [r1] + mov r1, sp + movs r0, 0 + strb r0, [r1] + mov r0, sp + bl sub_8056E5C + bl sub_8112364 + bl sub_8056A04 + ldr r0, _08056714 @ =sub_8056534 + bl sub_80565E0 + ldr r0, _08056718 @ =sub_80565B4 + bl sub_8000544 +_08056702: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08056708: .4byte gUnknown_30030F0 +_0805670C: .4byte gUnknown_3005020 +_08056710: .4byte sub_807F5F0 +_08056714: .4byte sub_8056534 +_08056718: .4byte sub_80565B4 + thumb_func_end sub_80566A4 + + thumb_func_start sub_805671C +sub_805671C: @ 805671C + push {lr} + bl sub_80569BC + bl sub_8069A80 + bl sub_806994C + movs r0, 0 + bl sub_80565E0 + ldr r0, _08056740 @ =sub_80C9BFC + bl sub_8000544 + ldr r1, _08056744 @ =gUnknown_30030F0 + ldr r0, _08056748 @ =sub_805674C + str r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_08056740: .4byte sub_80C9BFC +_08056744: .4byte gUnknown_30030F0 +_08056748: .4byte sub_805674C + thumb_func_end sub_805671C + + thumb_func_start sub_805674C +sub_805674C: @ 805674C + push {lr} + ldr r0, _08056768 @ =gUnknown_3003528 + bl sub_8056E5C + bl sub_8113748 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0805676C + bl sub_81119C8 + b _0805677C + .align 2, 0 +_08056768: .4byte gUnknown_3003528 +_0805676C: + bl sub_8056A04 + ldr r0, _08056780 @ =sub_8056534 + bl sub_80565E0 + ldr r0, _08056784 @ =sub_80565B4 + bl sub_8000544 +_0805677C: + pop {r0} + bx r0 + .align 2, 0 +_08056780: .4byte sub_8056534 +_08056784: .4byte sub_80565B4 + thumb_func_end sub_805674C + + thumb_func_start sub_8056788 +sub_8056788: @ 8056788 + push {lr} + bl sub_80569BC + ldr r0, _080567A0 @ =gUnknown_3005020 + ldr r1, _080567A4 @ =sub_807DE58 + str r1, [r0] + ldr r0, _080567A8 @ =sub_80567AC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080567A0: .4byte gUnknown_3005020 +_080567A4: .4byte sub_807DE58 +_080567A8: .4byte sub_80567AC + thumb_func_end sub_8056788 + + thumb_func_start sub_80567AC +sub_80567AC: @ 80567AC + push {lr} + ldr r0, _080567D0 @ =gUnknown_3003528 + bl sub_8056A5C + cmp r0, 0 + beq _080567CC + bl sub_8056A04 + ldr r0, _080567D4 @ =sub_8057884 + bl sub_80565E0 + bl sub_80578D8 + ldr r0, _080567D8 @ =sub_80565B4 + bl sub_8000544 +_080567CC: + pop {r0} + bx r0 + .align 2, 0 +_080567D0: .4byte gUnknown_3003528 +_080567D4: .4byte sub_8057884 +_080567D8: .4byte sub_80565B4 + thumb_func_end sub_80567AC + + thumb_func_start sub_80567DC +sub_80567DC: @ 80567DC + push {lr} + bl sub_805642C + cmp r0, 0x1 + bne _080567F4 + ldr r0, _080567F0 @ =sub_805682C + bl sub_8000544 + b _080567FE + .align 2, 0 +_080567F0: .4byte sub_805682C +_080567F4: + bl sub_80569BC + ldr r0, _08056804 @ =sub_8056808 + bl sub_8000544 +_080567FE: + pop {r0} + bx r0 + .align 2, 0 +_08056804: .4byte sub_8056808 + thumb_func_end sub_80567DC + + thumb_func_start sub_8056808 +sub_8056808: @ 8056808 + push {lr} + ldr r0, _08056824 @ =gUnknown_3003528 + bl sub_8056CD8 + cmp r0, 0 + beq _0805681E + bl sub_8056A04 + ldr r0, _08056828 @ =sub_80565B4 + bl sub_8000544 +_0805681E: + pop {r0} + bx r0 + .align 2, 0 +_08056824: .4byte gUnknown_3003528 +_08056828: .4byte sub_80565B4 + thumb_func_end sub_8056808 + + thumb_func_start sub_805682C +sub_805682C: @ 805682C + push {lr} + bl sub_8058244 + cmp r0, 0 + bne _08056846 + ldr r0, _0805684C @ =gUnknown_3003528 + bl sub_8056D44 + cmp r0, 0 + beq _08056846 + ldr r0, _08056850 @ =sub_80565B4 + bl sub_8000544 +_08056846: + pop {r0} + bx r0 + .align 2, 0 +_0805684C: .4byte gUnknown_3003528 +_08056850: .4byte sub_80565B4 + thumb_func_end sub_805682C + + thumb_func_start sub_8056854 +sub_8056854: @ 8056854 + push {lr} + bl sub_80569BC + bl sub_8071A94 + ldr r0, _08056878 @ =sub_8057884 + bl sub_80565E0 + bl sub_80578D8 + ldr r0, _0805687C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08056888 + ldr r1, _08056880 @ =gUnknown_3005020 + ldr r0, _08056884 @ =sub_807DE58 + b _0805688C + .align 2, 0 +_08056878: .4byte sub_8057884 +_0805687C: .4byte gUnknown_3003F3C +_08056880: .4byte gUnknown_3005020 +_08056884: .4byte sub_807DE58 +_08056888: + ldr r1, _080568A0 @ =gUnknown_3005020 + ldr r0, _080568A4 @ =sub_807DDD0 +_0805688C: + str r0, [r1] + bl sub_8069A80 + bl sub_806994C + bl sub_80567DC + pop {r0} + bx r0 + .align 2, 0 +_080568A0: .4byte gUnknown_3005020 +_080568A4: .4byte sub_807DDD0 + thumb_func_end sub_8056854 + + thumb_func_start sub_80568A8 +sub_80568A8: @ 80568A8 + push {lr} + bl sub_80569BC + ldr r1, _080568BC @ =gUnknown_3005024 + ldr r0, _080568C0 @ =sub_807E3BC + str r0, [r1] + bl sub_80567DC + pop {r0} + bx r0 + .align 2, 0 +_080568BC: .4byte gUnknown_3005024 +_080568C0: .4byte sub_807E3BC + thumb_func_end sub_80568A8 + + thumb_func_start sub_80568C4 +sub_80568C4: @ 80568C4 + push {lr} + bl sub_80569BC + ldr r1, _080568D8 @ =gUnknown_3005020 + ldr r0, _080568DC @ =sub_807DD44 + str r0, [r1] + bl sub_80567DC + pop {r0} + bx r0 + .align 2, 0 +_080568D8: .4byte gUnknown_3005020 +_080568DC: .4byte sub_807DD44 + thumb_func_end sub_80568C4 + + thumb_func_start sub_80568E0 +sub_80568E0: @ 80568E0 + push {lr} + bl sub_80569BC + ldr r1, _080568F4 @ =gUnknown_3005020 + ldr r0, _080568F8 @ =sub_807DD24 + str r0, [r1] + bl sub_80567DC + pop {r0} + bx r0 + .align 2, 0 +_080568F4: .4byte gUnknown_3005020 +_080568F8: .4byte sub_807DD24 + thumb_func_end sub_80568E0 + + thumb_func_start sub_80568FC +sub_80568FC: @ 80568FC + push {lr} + bl sub_80569BC + ldr r1, _08056910 @ =gUnknown_3005020 + ldr r0, _08056914 @ =sub_807DF7C + str r0, [r1] + bl sub_80567DC + pop {r0} + bx r0 + .align 2, 0 +_08056910: .4byte gUnknown_3005020 +_08056914: .4byte sub_807DF7C + thumb_func_end sub_80568FC + + thumb_func_start sub_8056918 +sub_8056918: @ 8056918 + push {lr} + ldr r0, _08056934 @ =gUnknown_2036DFC + ldrb r1, [r0, 0x19] + movs r0, 0xFC + ands r0, r1 + cmp r0, 0x4 + bne _0805692C + movs r0, 0 + bl sub_8098110 +_0805692C: + bl sub_807DF7C + pop {r0} + bx r0 + .align 2, 0 +_08056934: .4byte gUnknown_2036DFC + thumb_func_end sub_8056918 + + thumb_func_start sub_8056938 +sub_8056938: @ 8056938 + push {lr} + bl sub_80569BC + bl sub_8071A94 + bl sub_8056420 + bl sub_80552BC + bl sub_80550A8 + bl sub_8068A5C + bl sub_8054E40 + bl sub_80589E8 + bl sub_8054838 + bl sub_8069A80 + bl sub_806994C + ldr r1, _08056990 @ =gUnknown_3005024 + movs r0, 0 + str r0, [r1] + ldr r1, _08056994 @ =gUnknown_2031DE0 + movs r0, 0x1 + strb r0, [r1] + bl sub_804C188 + cmp r0, 0x1 + bne _0805699C + bl sub_804C198 + bl sub_80556E0 + bl sub_8055378 + ldr r0, _08056998 @ =sub_805671C + bl sub_8000544 + b _080569AC + .align 2, 0 +_08056990: .4byte gUnknown_3005024 +_08056994: .4byte gUnknown_2031DE0 +_08056998: .4byte sub_805671C +_0805699C: + ldr r0, _080569B0 @ =gUnknown_3005020 + ldr r1, _080569B4 @ =sub_8056918 + str r1, [r0] + ldr r0, _080569B8 @ =sub_8056534 + bl sub_80565E0 + bl sub_80567DC +_080569AC: + pop {r0} + bx r0 + .align 2, 0 +_080569B0: .4byte gUnknown_3005020 +_080569B4: .4byte sub_8056918 +_080569B8: .4byte sub_8056534 + thumb_func_end sub_8056938 + + thumb_func_start sub_80569BC +sub_80569BC: @ 80569BC + push {lr} + bl sub_80CC87C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080569CE + bl sub_80098B8 +_080569CE: + ldr r0, _080569E4 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _080569E8 + movs r0, 0xC5 + bl sub_8000B68 + movs r0, 0x2 + bl sub_8000B94 + b _080569F4 + .align 2, 0 +_080569E4: .4byte gUnknown_3003F3C +_080569E8: + movs r0, 0x2 + bl sub_8000B94 + movs r0, 0x1 + bl sub_8000B68 +_080569F4: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_80569BC + + thumb_func_start sub_8056A04 +sub_8056A04: @ 8056A04 + push {lr} + ldr r0, _08056A10 @ =sub_8056A14 + bl sub_80006F4 + pop {r0} + bx r0 + .align 2, 0 +_08056A10: .4byte sub_8056A14 + thumb_func_end sub_8056A04 + + thumb_func_start sub_8056A14 +sub_8056A14: @ 8056A14 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8087F54 + bl sub_805A5F4 + bl sub_8070474 + bl sub_806FF54 + pop {r0} + bx r0 + thumb_func_end sub_8056A14 + + thumb_func_start sub_8056A34 +sub_8056A34: @ 8056A34 + push {lr} + bl sub_8055D30 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08056A52 + bl sub_807F074 + ldr r2, _08056A58 @ =gUnknown_826D330 + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [r2, 0x8] + bl sub_8087EE4 +_08056A52: + pop {r0} + bx r0 + .align 2, 0 +_08056A58: .4byte gUnknown_826D330 + thumb_func_end sub_8056A34 + + thumb_func_start sub_8056A5C +sub_8056A5C: @ 8056A5C + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xD + bls _08056A68 + b _08056B6E +_08056A68: + lsls r0, 2 + ldr r1, _08056A74 @ =_08056A78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056A74: .4byte _08056A78 + .align 2, 0 +_08056A78: + .4byte _08056AB0 + .4byte _08056ABE + .4byte _08056AC6 + .4byte _08056ACE + .4byte _08056AE4 + .4byte _08056AEE + .4byte _08056AF4 + .4byte _08056B04 + .4byte _08056B14 + .4byte _08056B30 + .4byte _08056B36 + .4byte _08056B3C + .4byte _08056B58 + .4byte _08056B6A +_08056AB0: + bl sub_80562B0 + bl sub_8069A80 + bl sub_806994C + b _08056B62 +_08056ABE: + movs r0, 0x1 + bl sub_8055920 + b _08056B62 +_08056AC6: + movs r0, 0x1 + bl sub_8057024 + b _08056B62 +_08056ACE: + bl sub_8057178 + bl sub_8057074 + bl sub_80571A8 + bl sub_8057140 + bl sub_812B35C + b _08056B62 +_08056AE4: + bl sub_8056A34 + bl sub_8056F1C + b _08056B62 +_08056AEE: + bl sub_805A5E4 + b _08056B62 +_08056AF4: + ldr r0, _08056B00 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A54 + b _08056B62 + .align 2, 0 +_08056B00: .4byte gUnknown_2036DFC +_08056B04: + ldr r0, _08056B10 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A68 + b _08056B62 + .align 2, 0 +_08056B10: .4byte gUnknown_2036DFC +_08056B14: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08056B6E + ldr r0, _08056B2C @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059AD8 + b _08056B62 + .align 2, 0 +_08056B2C: .4byte gUnknown_2036DFC +_08056B30: + bl sub_805A684 + b _08056B62 +_08056B36: + bl sub_806FF9C + b _08056B62 +_08056B3C: + ldr r0, _08056B54 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08056B62 + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _08056B62 + .align 2, 0 +_08056B54: .4byte gUnknown_3003F3C +_08056B58: + bl sub_80565EC + lsls r0, 24 + cmp r0, 0 + beq _08056B6E +_08056B62: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08056B6E +_08056B6A: + movs r0, 0x1 + b _08056B70 +_08056B6E: + movs r0, 0 +_08056B70: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8056A5C + + thumb_func_start sub_8056B78 +sub_8056B78: @ 8056B78 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0xE + bls _08056B86 + b _08056CD0 +_08056B86: + lsls r0, 2 + ldr r1, _08056B90 @ =_08056B94 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056B90: .4byte _08056B94 + .align 2, 0 +_08056B94: + .4byte _08056BD0 + .4byte _08056BE0 + .4byte _08056BE6 + .4byte _08056BEE + .4byte _08056BFE + .4byte _08056C20 + .4byte _08056C2A + .4byte _08056C30 + .4byte _08056C40 + .4byte _08056C50 + .4byte _08056C6C + .4byte _08056C72 + .4byte _08056C78 + .4byte _08056CC0 + .4byte _08056BFA +_08056BD0: + bl sub_80562B0 + bl sub_80569BC + adds r0, r5, 0 + bl sub_8055920 + b _08056CCA +_08056BE0: + bl sub_8111F14 + b _08056CCA +_08056BE6: + adds r0, r5, 0 + bl sub_8057024 + b _08056CCA +_08056BEE: + bl sub_8113748 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08056CCA +_08056BFA: + movs r0, 0x1 + b _08056CD2 +_08056BFE: + bl sub_805709C + bl sub_8057114 + ldr r0, _08056C1C @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _08056C16 + bl sub_80CC534 + bl sub_80CC59C +_08056C16: + bl sub_812B35C + b _08056CCA + .align 2, 0 +_08056C1C: .4byte gUnknown_203ADFA +_08056C20: + bl sub_8056A34 + bl sub_8056F1C + b _08056CCA +_08056C2A: + bl sub_805A5E4 + b _08056CCA +_08056C30: + ldr r0, _08056C3C @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A54 + b _08056CCA + .align 2, 0 +_08056C3C: .4byte gUnknown_2036DFC +_08056C40: + ldr r0, _08056C4C @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A68 + b _08056CCA + .align 2, 0 +_08056C4C: .4byte gUnknown_2036DFC +_08056C50: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08056CD0 + ldr r0, _08056C68 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059AD8 + b _08056CCA + .align 2, 0 +_08056C68: .4byte gUnknown_2036DFC +_08056C6C: + bl sub_805A684 + b _08056CCA +_08056C72: + bl sub_806FF9C + b _08056CCA +_08056C78: + bl sub_80561B4 + ldr r5, _08056CA4 @ =gUnknown_2036DFC + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r5, 0x14] + cmp r0, r1 + beq _08056CA8 + ldrb r0, [r5, 0x14] + movs r1, 0x1 + bl sub_80F8154 + cmp r0, 0x1 + bne _08056CA8 + ldrb r0, [r5, 0x14] + bl sub_80F819C + ldrb r0, [r5, 0x14] + bl sub_80F8268 + b _08056CCA + .align 2, 0 +_08056CA4: .4byte gUnknown_2036DFC +_08056CA8: + ldr r0, _08056CBC @ =gUnknown_2036DFC + ldrb r1, [r0, 0x19] + movs r0, 0xFC + ands r0, r1 + cmp r0, 0x4 + bne _08056CCA + movs r0, 0 + bl sub_8098110 + b _08056CCA + .align 2, 0 +_08056CBC: .4byte gUnknown_2036DFC +_08056CC0: + bl sub_80565EC + lsls r0, 24 + cmp r0, 0 + beq _08056CD0 +_08056CCA: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_08056CD0: + movs r0, 0 +_08056CD2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8056B78 + + thumb_func_start sub_8056CD8 +sub_8056CD8: @ 8056CD8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0x4 + bhi _08056D3C + lsls r0, 2 + ldr r1, _08056CEC @ =_08056CF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056CEC: .4byte _08056CF0 + .align 2, 0 +_08056CF0: + .4byte _08056D04 + .4byte _08056D30 + .4byte _08056D1C + .4byte _08056D26 + .4byte _08056D38 +_08056D04: + bl sub_80562B0 + bl sub_8111F14 + movs r0, 0 + bl sub_8057024 + bl sub_8057100 + bl sub_8057114 + b _08056D30 +_08056D1C: + bl sub_8056F08 + bl sub_812B35C + b _08056D30 +_08056D26: + bl sub_80565EC + lsls r0, 24 + cmp r0, 0 + beq _08056D3C +_08056D30: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08056D3C +_08056D38: + movs r0, 0x1 + b _08056D3E +_08056D3C: + movs r0, 0 +_08056D3E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8056CD8 + + thumb_func_start sub_8056D44 +sub_8056D44: @ 8056D44 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xD + bls _08056D50 + b _08056E54 +_08056D50: + lsls r0, 2 + ldr r1, _08056D5C @ =_08056D60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056D5C: .4byte _08056D60 + .align 2, 0 +_08056D60: + .4byte _08056D98 + .4byte _08056DA2 + .4byte _08056DAE + .4byte _08056DC0 + .4byte _08056DCA + .4byte _08056DD0 + .4byte _08056DE0 + .4byte _08056DF0 + .4byte _08056E0C + .4byte _08056E12 + .4byte _08056E3E + .4byte _08056E18 + .4byte _08056E34 + .4byte _08056E46 +_08056D98: + bl sub_80562B0 + bl sub_80569BC + b _08056E3E +_08056DA2: + bl sub_8111F14 + movs r0, 0x1 + bl sub_8057024 + b _08056E3E +_08056DAE: + bl sub_8057230 + bl sub_8057100 + bl sub_805715C + bl sub_812B35C + b _08056E3E +_08056DC0: + bl sub_8056A34 + bl sub_8056F1C + b _08056E3E +_08056DCA: + bl sub_805A5E4 + b _08056E3E +_08056DD0: + ldr r0, _08056DDC @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A54 + b _08056E3E + .align 2, 0 +_08056DDC: .4byte gUnknown_2036DFC +_08056DE0: + ldr r0, _08056DEC @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A68 + b _08056E3E + .align 2, 0 +_08056DEC: .4byte gUnknown_2036DFC +_08056DF0: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08056E54 + ldr r0, _08056E08 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059AD8 + b _08056E3E + .align 2, 0 +_08056E08: .4byte gUnknown_2036DFC +_08056E0C: + bl sub_805A684 + b _08056E3E +_08056E12: + bl sub_806FF9C + b _08056E3E +_08056E18: + ldr r0, _08056E30 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08056E3E + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _08056E3E + .align 2, 0 +_08056E30: .4byte gUnknown_3003F3C +_08056E34: + bl sub_80565EC + lsls r0, 24 + cmp r0, 0 + beq _08056E54 +_08056E3E: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08056E54 +_08056E46: + bl sub_8056A04 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + b _08056E56 +_08056E54: + movs r0, 0 +_08056E56: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8056D44 + + thumb_func_start sub_8056E5C +sub_8056E5C: @ 8056E5C + push {r4,lr} + adds r4, r0, 0 +_08056E60: + adds r0, r4, 0 + movs r1, 0 + bl sub_8056B78 + cmp r0, 0 + beq _08056E60 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8056E5C + + thumb_func_start sub_8056E74 +sub_8056E74: @ 8056E74 + push {lr} + bl sub_804C0A4 + pop {r0} + bx r0 + thumb_func_end sub_8056E74 + + thumb_func_start sub_8056E80 +sub_8056E80: @ 8056E80 + push {r4-r7,lr} + sub sp, 0x4 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_8087E64 + ldr r2, _08056EF8 @ =0x05000002 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _08056EFC @ =0x040000d4 + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _08056F00 @ =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0xC0 + lsls r2, 19 + movs r3, 0xC0 + lsls r3, 9 + mov r4, sp + movs r6, 0 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _08056F04 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_08056EBE: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r5 + subs r3, r5 + cmp r3, r5 + bhi _08056EBE + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0 + movs r1, 0x80 + bl sub_80072E8 + bl sub_8007320 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08056EF8: .4byte 0x05000002 +_08056EFC: .4byte 0x040000d4 +_08056F00: .4byte 0x810001ff +_08056F04: .4byte 0x81000800 + thumb_func_end sub_8056E80 + + thumb_func_start sub_8056F08 +sub_8056F08: @ 8056F08 + push {lr} + bl sub_8056A34 + bl sub_8056F1C + bl sub_8055148 + pop {r0} + bx r0 + thumb_func_end sub_8056F08 + + thumb_func_start sub_8056F1C +sub_8056F1C: @ 8056F1C + push {r4,lr} + bl sub_80F6790 + bl sub_80F6808 + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + ldr r1, _0805700C @ =0x00001f1f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _08057010 @ =0x00000101 + movs r0, 0x4A + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0xFF + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xFF + bl sub_8000A38 + ldr r4, _08057014 @ =0x0000ffff + movs r0, 0x42 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x46 + adds r1, r4, 0 + bl sub_8000A38 + ldr r0, _08057018 @ =gUnknown_8231E10 + ldrh r1, [r0, 0x2] + ldrh r2, [r0, 0x4] + orrs r1, r2 + ldrh r0, [r0, 0x6] + orrs r1, r0 + movs r2, 0x82 + lsls r2, 5 + adds r0, r2, 0 + orrs r1, r0 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _0805701C @ =0x0000070d + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0x3 + bl sub_80F67A4 + ldr r1, _08057020 @ =0x00007060 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805700C: .4byte 0x00001f1f +_08057010: .4byte 0x00000101 +_08057014: .4byte 0x0000ffff +_08057018: .4byte gUnknown_8231E10 +_0805701C: .4byte 0x0000070d +_08057020: .4byte 0x00007060 + thumb_func_end sub_8056F1C + + thumb_func_start sub_8057024 +sub_8057024: @ 8057024 + push {r4,lr} + adds r4, r0, 0 + bl sub_80773BC + bl sub_8006B10 + bl sub_8070528 + bl sub_8087EA4 + bl sub_810BB8C + bl sub_805AB58 + bl sub_805ADF8 + cmp r4, 0 + bne _08057050 + movs r0, 0 + bl sub_805FECC + b _08057056 +_08057050: + movs r0, 0x1 + bl sub_805FECC +_08057056: + bl sub_80837AC + bl sub_8079C08 + bl sub_807B1B8 + cmp r4, 0 + bne _0805706A + bl sub_806E87C +_0805706A: + bl sub_8069C50 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8057024 + + thumb_func_start sub_8057074 +sub_8057074: @ 8057074 + push {lr} + ldr r0, _08057094 @ =gUnknown_300506C + movs r1, 0 + strh r1, [r0] + ldr r0, _08057098 @ =gUnknown_3005068 + strh r1, [r0] + bl sub_805DE74 + movs r0, 0 + movs r1, 0 + bl sub_805EC30 + bl sub_8069C9C + pop {r0} + bx r0 + .align 2, 0 +_08057094: .4byte gUnknown_300506C +_08057098: .4byte gUnknown_3005068 + thumb_func_end sub_8057074 + + thumb_func_start sub_805709C +sub_805709C: @ 805709C + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _080570F4 @ =gUnknown_300506C + movs r1, 0 + strh r1, [r0] + ldr r0, _080570F8 @ =gUnknown_3005068 + strh r1, [r0] + bl sub_805DE74 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_8059808 + bl sub_8055A6C + adds r5, r0, 0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldrb r2, [r5, 0x1] + ldr r3, _080570FC @ =gUnknown_300500C + ldr r3, [r3] + ldrb r3, [r3, 0x8] + bl sub_805CA3C + ldrb r0, [r5] + bl sub_805BDEC + bl sub_80559E4 + movs r0, 0 + movs r1, 0 + bl sub_805EC30 + bl sub_8069C9C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080570F4: .4byte gUnknown_300506C +_080570F8: .4byte gUnknown_3005068 +_080570FC: .4byte gUnknown_300500C + thumb_func_end sub_805709C + + thumb_func_start sub_8057100 +sub_8057100: @ 8057100 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_805EDF0 + bl sub_8069C5C + pop {r0} + bx r0 + thumb_func_end sub_8057100 + + thumb_func_start sub_8057114 +sub_8057114: @ 8057114 + push {lr} + ldr r2, _08057138 @ =gUnknown_2036E38 + ldr r3, _0805713C @ =gUnknown_2037078 + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0, 0x1] + ldrb r0, [r3, 0x4] + bl sub_805AB70 + pop {r0} + bx r0 + .align 2, 0 +_08057138: .4byte gUnknown_2036E38 +_0805713C: .4byte gUnknown_2037078 + thumb_func_end sub_8057114 + + thumb_func_start sub_8057140 +sub_8057140: @ 8057140 + push {lr} + ldr r0, _08057158 @ =gUnknown_300502C + ldrb r0, [r0] + bl sub_8058504 + lsls r0, 24 + lsrs r0, 24 + bl sub_805AB70 + pop {r0} + bx r0 + .align 2, 0 +_08057158: .4byte gUnknown_300502C + thumb_func_end sub_8057140 + + thumb_func_start sub_805715C +sub_805715C: @ 805715C + push {lr} + ldr r0, _08057174 @ =gUnknown_300502C + ldrb r0, [r0] + bl sub_8058504 + lsls r0, 24 + lsrs r0, 24 + bl sub_805AB70 + pop {r0} + bx r0 + .align 2, 0 +_08057174: .4byte gUnknown_300502C + thumb_func_end sub_805715C + + thumb_func_start sub_8057178 +sub_8057178: @ 8057178 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_8059808 + mov r2, sp + ldr r0, _080571A4 @ =gUnknown_300502C + ldrb r1, [r0] + ldrh r0, [r2] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4] + bl sub_80597EC + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080571A4: .4byte gUnknown_300502C + thumb_func_end sub_8057178 + + thumb_func_start sub_80571A8 +sub_80571A8: @ 80571A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_8059808 + mov r3, sp + mov r2, sp + ldr r0, _08057224 @ =gUnknown_300502C + ldrb r1, [r0] + ldrh r0, [r2] + subs r0, r1 + strh r0, [r3] + movs r6, 0 + ldr r0, _08057228 @ =gUnknown_3005030 + mov r8, r4 + ldrb r0, [r0] + cmp r6, r0 + bcs _08057212 + ldr r7, _0805722C @ =gUnknown_202273C +_080571D8: + lsls r5, r6, 24 + lsrs r5, 24 + mov r0, sp + ldrh r1, [r0] + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + mov r0, r8 + movs r3, 0 + ldrsh r2, [r0, r3] + lsls r4, r6, 3 + subs r4, r6 + lsls r4, 2 + adds r4, r7 + ldrb r3, [r4, 0x13] + adds r0, r5, 0 + bl sub_805839C + ldrb r1, [r4] + adds r0, r5, 0 + bl sub_8058878 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _08057228 @ =gUnknown_3005030 + ldrb r0, [r0] + cmp r6, r0 + bcc _080571D8 +_08057212: + bl sub_80578EC + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057224: .4byte gUnknown_300502C +_08057228: .4byte gUnknown_3005030 +_0805722C: .4byte gUnknown_202273C + thumb_func_end sub_80571A8 + + thumb_func_start sub_8057230 +sub_8057230: @ 8057230 + push {r4,r5,lr} + movs r4, 0 + ldr r0, _08057264 @ =gUnknown_3005030 + ldrb r0, [r0] + cmp r4, r0 + bcs _0805725E + ldr r5, _08057268 @ =gUnknown_202273C +_0805723E: + lsls r0, r4, 24 + lsrs r0, 24 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r5 + ldrb r1, [r1] + bl sub_8058878 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _08057264 @ =gUnknown_3005030 + ldrb r0, [r0] + cmp r4, r0 + bcc _0805723E +_0805725E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08057264: .4byte gUnknown_3005030 +_08057268: .4byte gUnknown_202273C + thumb_func_end sub_8057230 + + thumb_func_start sub_805726C +sub_805726C: @ 805726C + push {lr} + bl sub_80569BC + ldr r1, _08057298 @ =gUnknown_2036E28 + movs r0, 0x1 + strb r0, [r1] + bl sub_8069A80 + bl sub_806994C + movs r0, 0 + bl sub_80565E0 + ldr r0, _0805729C @ =sub_80C9BFC + bl sub_8000544 + ldr r1, _080572A0 @ =gUnknown_30030F0 + ldr r0, _080572A4 @ =sub_80572D8 + str r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_08057298: .4byte gUnknown_2036E28 +_0805729C: .4byte sub_80C9BFC +_080572A0: .4byte gUnknown_30030F0 +_080572A4: .4byte sub_80572D8 + thumb_func_end sub_805726C + + thumb_func_start sub_80572A8 +sub_80572A8: @ 80572A8 + push {lr} + bl sub_80569BC + ldr r0, _080572D0 @ =gUnknown_2036E28 + movs r1, 0x1 + strb r1, [r0] + bl sub_80552BC + bl sub_8069A80 + bl sub_806994C + movs r0, 0 + bl sub_80565E0 + ldr r0, _080572D4 @ =sub_80572D8 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080572D0: .4byte gUnknown_2036E28 +_080572D4: .4byte sub_80572D8 + thumb_func_end sub_80572A8 + + thumb_func_start sub_80572D8 +sub_80572D8: @ 80572D8 + push {lr} + ldr r0, _080572F4 @ =gUnknown_3003528 + bl sub_8057300 + bl sub_8056A04 + ldr r0, _080572F8 @ =sub_8056534 + bl sub_80565E0 + ldr r0, _080572FC @ =sub_80565B4 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080572F4: .4byte gUnknown_3003528 +_080572F8: .4byte sub_8056534 +_080572FC: .4byte sub_80565B4 + thumb_func_end sub_80572D8 + + thumb_func_start sub_8057300 +sub_8057300: @ 8057300 + push {r4,lr} + adds r4, r0, 0 +_08057304: + adds r0, r4, 0 + bl sub_8057314 + cmp r0, 0 + beq _08057304 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8057300 + + thumb_func_start sub_8057314 +sub_8057314: @ 8057314 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xA + bls _08057320 + b _0805741A +_08057320: + lsls r0, 2 + ldr r1, _0805732C @ =_08057330 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805732C: .4byte _08057330 + .align 2, 0 +_08057330: + .4byte _0805735C + .4byte _080573A0 + .4byte _080573A6 + .4byte _080573AE + .4byte _080573B8 + .4byte _080573C2 + .4byte _080573C8 + .4byte _080573D8 + .4byte _080573E8 + .4byte _08057404 + .4byte _0805740A +_0805735C: + bl sub_80562B0 + bl sub_80569BC + bl sub_8111F14 + bl sub_81113E4 + bl sub_8111438 + bl sub_8110AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08057390 + ldr r1, _0805738C @ =gUnknown_2031DE0 + movs r0, 0 + strb r0, [r1] + movs r0, 0 + bl sub_8055920 + b _08057412 + .align 2, 0 +_0805738C: .4byte gUnknown_2031DE0 +_08057390: + ldr r1, _0805739C @ =gUnknown_2031DE0 + movs r0, 0x1 + strb r0, [r1] + bl sub_80559A8 + b _08057412 + .align 2, 0 +_0805739C: .4byte gUnknown_2031DE0 +_080573A0: + bl sub_8110FCC + b _08057412 +_080573A6: + movs r0, 0 + bl sub_8057024 + b _08057412 +_080573AE: + bl sub_8057100 + bl sub_8057114 + b _08057412 +_080573B8: + bl sub_8056A34 + bl sub_8056F1C + b _08057412 +_080573C2: + bl sub_805A5E4 + b _08057412 +_080573C8: + ldr r0, _080573D4 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A54 + b _08057412 + .align 2, 0 +_080573D4: .4byte gUnknown_2036DFC +_080573D8: + ldr r0, _080573E4 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A68 + b _08057412 + .align 2, 0 +_080573E4: .4byte gUnknown_2036DFC +_080573E8: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08057428 + ldr r0, _08057400 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059AD8 + b _08057412 + .align 2, 0 +_08057400: .4byte gUnknown_2036DFC +_08057404: + bl sub_805A684 + b _08057412 +_0805740A: + bl sub_806FF9C + bl sub_815A540 +_08057412: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08057428 +_0805741A: + bl sub_80565EC + lsls r0, 24 + cmp r0, 0 + beq _08057428 + movs r0, 0x1 + b _0805742A +_08057428: + movs r0, 0 +_0805742A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8057314 + + thumb_func_start sub_8057430 +sub_8057430: @ 8057430 + push {lr} + bl sub_80569BC + bl sub_8071A94 + ldr r1, _08057484 @ =gUnknown_2036E28 + movs r0, 0x3 + strb r0, [r1] + bl sub_8056420 + bl sub_80552BC + bl sub_80550A8 + bl sub_8068A5C + bl sub_8054E40 + bl sub_80589E8 + bl sub_8054838 + bl sub_8069A80 + ldr r1, _08057488 @ =gUnknown_2031DE0 + movs r0, 0x1 + strb r0, [r1] + bl sub_804C188 + cmp r0, 0x1 + bne _08057490 + bl sub_804C198 + bl sub_80556E0 + bl sub_8055378 + ldr r0, _0805748C @ =sub_805671C + bl sub_8000544 + b _0805749A + .align 2, 0 +_08057484: .4byte gUnknown_2036E28 +_08057488: .4byte gUnknown_2031DE0 +_0805748C: .4byte sub_805671C +_08057490: + ldr r0, _080574A0 @ =sub_8056534 + bl sub_80565E0 + bl sub_80567DC +_0805749A: + pop {r0} + bx r0 + .align 2, 0 +_080574A0: .4byte sub_8056534 + thumb_func_end sub_8057430 + + thumb_func_start sub_80574A4 +sub_80574A4: @ 80574A4 + push {r4,lr} + ldr r0, _080574E8 @ =gUnknown_2037AB8 + ldrb r0, [r0, 0x7] + lsrs r0, 7 + adds r4, r0, 0 + cmp r4, 0 + beq _080574B8 + movs r0, 0 + bl sub_80006F4 +_080574B8: + bl sub_8077578 + bl sub_8006B5C + bl sub_805ACF0 + bl sub_805AE28 + bl sub_8006BA8 + bl sub_80704D0 + bl sub_806FFBC + bl sub_80F67B8 + cmp r4, 0 + beq _080574E0 + bl sub_8056A04 +_080574E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080574E8: .4byte gUnknown_2037AB8 + thumb_func_end sub_80574A4 + + thumb_func_start sub_80574EC +sub_80574EC: @ 80574EC + push {lr} + ldr r0, _08057500 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08057504 + movs r0, 0 + b _08057506 + .align 2, 0 +_08057500: .4byte gUnknown_2037AB8 +_08057504: + movs r0, 0x1 +_08057506: + pop {r1} + bx r1 + thumb_func_end sub_80574EC + + thumb_func_start sub_805750C +sub_805750C: @ 805750C + push {lr} + ldr r3, _08057520 @ =gUnknown_2031DE4 + str r1, [r3] + ldr r1, _08057524 @ =gUnknown_2036E28 + strb r2, [r1] + movs r1, 0 + bl sub_8057528 + pop {r1} + bx r1 + .align 2, 0 +_08057520: .4byte gUnknown_2031DE4 +_08057524: .4byte gUnknown_2036E28 + thumb_func_end sub_805750C + + thumb_func_start sub_8057528 +sub_8057528: @ 8057528 + push {r4-r7,lr} + adds r7, r0, 0 + ldrb r1, [r7] + cmp r1, 0x1 + beq _08057560 + cmp r1, 0x1 + bgt _0805753C + cmp r1, 0 + beq _08057546 + b _08057648 +_0805753C: + cmp r1, 0x2 + beq _08057620 + cmp r1, 0x3 + beq _0805762C + b _08057648 +_08057546: + ldr r0, _08057558 @ =gUnknown_2031DEA + strh r1, [r0] + ldr r0, _0805755C @ =gUnknown_2031DE8 + strh r1, [r0] +_0805754E: + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + b _08057648 + .align 2, 0 +_08057558: .4byte gUnknown_2031DEA +_0805755C: .4byte gUnknown_2031DE8 +_08057560: + ldr r3, _080575F0 @ =gUnknown_2031DEA + movs r0, 0 + ldrsh r1, [r3, r0] + ldr r0, _080575F4 @ =gUnknown_2031DE4 + ldr r4, [r0] + lsls r1, 3 + adds r1, r4 + ldrb r2, [r1, 0x2] + ldr r0, _080575F8 @ =0xffffff00 + ands r0, r5 + orrs r0, r2 + ldrb r1, [r1, 0x4] + lsls r1, 8 + ldr r2, _080575FC @ =0xffff00ff + ands r0, r2 + adds r5, r0, 0 + orrs r5, r1 + movs r0, 0xFF + lsls r0, 16 + orrs r5, r0 + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] + movs r2, 0 + ldrsh r1, [r3, r2] + lsls r1, 3 + adds r1, r4 + ldrh r2, [r1] + ldr r0, _08057600 @ =0xffff0000 + ands r0, r6 + orrs r0, r2 + ldrh r1, [r1, 0x2] + lsls r1, 16 + ldr r2, _08057604 @ =0x0000ffff + ands r0, r2 + adds r6, r0, 0 + orrs r6, r1 + ldr r0, _08057608 @ =gUnknown_2031DBC + str r5, [r0] + str r6, [r0, 0x4] + ldr r1, _0805760C @ =gUnknown_2031DE8 + movs r2, 0 + ldrsh r0, [r3, r2] + lsls r0, 3 + adds r0, r4 + ldrh r0, [r0, 0x4] + strh r0, [r1] + bl sub_8055378 + ldr r2, _08057610 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + bl sub_8069A80 + bl sub_806994C + movs r0, 0 + bl sub_80565E0 + ldr r1, _08057614 @ =gUnknown_3005024 + ldr r0, _08057618 @ =sub_80574EC + str r0, [r1] + ldr r0, _0805761C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + b _0805754E + .align 2, 0 +_080575F0: .4byte gUnknown_2031DEA +_080575F4: .4byte gUnknown_2031DE4 +_080575F8: .4byte 0xffffff00 +_080575FC: .4byte 0xffff00ff +_08057600: .4byte 0xffff0000 +_08057604: .4byte 0x0000ffff +_08057608: .4byte gUnknown_2031DBC +_0805760C: .4byte gUnknown_2031DE8 +_08057610: .4byte gUnknown_2037AB8 +_08057614: .4byte gUnknown_3005024 +_08057618: .4byte sub_80574EC +_0805761C: .4byte gUnknown_30030F0 +_08057620: + bl sub_8057650 + lsls r0, 24 + cmp r0, 0 + beq _08057648 + b _0805754E +_0805762C: + ldr r0, _08057640 @ =gUnknown_3005050 + ldr r1, _08057644 @ =sub_8057748 + str r1, [r0] + bl sub_8056A04 + movs r0, 0 + strb r0, [r7] + movs r0, 0x1 + b _0805764A + .align 2, 0 +_08057640: .4byte gUnknown_3005050 +_08057644: .4byte sub_8057748 +_08057648: + movs r0, 0 +_0805764A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8057528 + + thumb_func_start sub_8057650 +sub_8057650: @ 8057650 + push {r4,lr} + ldr r4, _08057664 @ =gUnknown_3003528 + ldrb r0, [r4] + cmp r0, 0x8 + bhi _0805773C + lsls r0, 2 + ldr r1, _08057668 @ =_0805766C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08057664: .4byte gUnknown_3003528 +_08057668: .4byte _0805766C + .align 2, 0 +_0805766C: + .4byte _08057690 + .4byte _0805769C + .4byte _080576C2 + .4byte _080576CC + .4byte _080576D2 + .4byte _080576E0 + .4byte _080576F0 + .4byte _0805770C + .4byte _08057712 +_08057690: + bl sub_8056354 + movs r0, 0 + bl sub_8055920 + b _0805772A +_0805769C: + bl sub_8087EA4 + bl sub_810BB8C + bl sub_805AB58 + bl sub_805ADF8 + bl sub_80837AC + bl sub_8079C08 + bl sub_807B1B8 + bl sub_806E87C + bl sub_8069C50 + b _0805772A +_080576C2: + bl sub_8056A34 + bl sub_8056F1C + b _0805772A +_080576CC: + bl sub_805A5E4 + b _0805772A +_080576D2: + ldr r0, _080576DC @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A54 + b _0805772A + .align 2, 0 +_080576DC: .4byte gUnknown_2036DFC +_080576E0: + ldr r0, _080576EC @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059A68 + b _0805772A + .align 2, 0 +_080576EC: .4byte gUnknown_2036DFC +_080576F0: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08057740 + ldr r0, _08057708 @ =gUnknown_2036DFC + ldr r0, [r0] + bl sub_8059AD8 + b _0805772A + .align 2, 0 +_08057708: .4byte gUnknown_2036DFC +_0805770C: + bl sub_805A684 + b _0805772A +_08057712: + bl sub_806FF9C + ldr r2, _08057734 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + ldr r2, _08057738 @ =0x3fffffff + movs r0, 0 + movs r1, 0 + bl sub_807A944 +_0805772A: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08057740 + .align 2, 0 +_08057734: .4byte gUnknown_2037AB8 +_08057738: .4byte 0x3fffffff +_0805773C: + movs r0, 0x1 + b _08057742 +_08057740: + movs r0, 0 +_08057742: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8057650 + + thumb_func_start sub_8057748 +sub_8057748: @ 8057748 + push {r4-r6,lr} + adds r2, r0, 0 + ldr r0, _08057784 @ =gUnknown_2031DE8 + movs r3, 0 + ldrsh r1, [r0, r3] + adds r5, r0, 0 + ldr r4, _08057788 @ =gUnknown_2031DEA + ldr r6, _0805778C @ =gUnknown_2031DE4 + cmp r1, 0 + bne _080577F4 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + movs r1, 0 + ldrsh r0, [r4, r1] + ldr r1, [r6] + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3] + subs r0, 0xFB + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bhi _080577D4 + lsls r0, 2 + ldr r1, _08057790 @ =_08057794 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08057784: .4byte gUnknown_2031DE8 +_08057788: .4byte gUnknown_2031DEA +_0805778C: .4byte gUnknown_2031DE4 +_08057790: .4byte _08057794 + .align 2, 0 +_08057794: + .4byte _080577C0 + .4byte _08057814 + .4byte _080577CA + .4byte _08057814 + .4byte _080577A8 +_080577A8: + movs r0, 0 + str r0, [r2, 0x8] + str r0, [r2, 0xC] + str r0, [r2] + ldr r0, _080577BC @ =sub_805781C + movs r1, 0 + bl sub_807741C + b _08057814 + .align 2, 0 +_080577BC: .4byte sub_805781C +_080577C0: + movs r0, 0 + str r0, [r2, 0x8] + str r0, [r2, 0xC] + str r0, [r2] + b _080577F4 +_080577CA: + movs r0, 0 + str r0, [r2, 0x8] + str r0, [r2, 0xC] + str r0, [r2] + b _08057814 +_080577D4: + ldrh r0, [r3, 0x4] + strh r0, [r5] + movs r3, 0 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, r1 + movs r3, 0 + ldrsh r0, [r0, r3] + str r0, [r2, 0x8] + movs r3, 0 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, r1 + movs r1, 0x2 + ldrsh r0, [r0, r1] + str r0, [r2, 0xC] +_080577F4: + movs r3, 0 + ldrsh r0, [r4, r3] + ldr r1, [r6] + lsls r0, 3 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0xFF + bne _0805780E + movs r0, 0 + str r0, [r2, 0x8] + str r0, [r2, 0xC] + b _08057814 +_0805780E: + ldrh r0, [r5] + subs r0, 0x1 + strh r0, [r5] +_08057814: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8057748 + + thumb_func_start sub_805781C +sub_805781C: @ 805781C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0805784C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08057850 @ =sub_8057854 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805784C: .4byte gUnknown_3005090 +_08057850: .4byte sub_8057854 + thumb_func_end sub_805781C + + thumb_func_start sub_8057854 +sub_8057854: @ 8057854 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0805787C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08057876 + bl sub_80563F0 + ldr r0, _08057880 @ =sub_805671C + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_08057876: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805787C: .4byte gUnknown_2037AB8 +_08057880: .4byte sub_805671C + thumb_func_end sub_8057854 + + thumb_func_start sub_8057884 +sub_8057884: @ 8057884 + push {r4,lr} + ldr r0, _080578C8 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0805789E + bl sub_80F90DC + cmp r0, 0 + beq _0805789E + bl sub_800A00C + cmp r0, 0 + bne _080578C0 +_0805789E: + ldr r0, _080578CC @ =gUnknown_300502C + ldrb r4, [r0] + ldr r0, _080578D0 @ =gUnknown_3003E60 + adds r1, r4, 0 + bl sub_8057BE4 + ldr r0, _080578D4 @ =gUnknown_3000E84 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 16 + lsrs r0, 16 + bl sub_8057C4C + bl sub_80578EC +_080578C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080578C8: .4byte gUnknown_3003F3C +_080578CC: .4byte gUnknown_300502C +_080578D0: .4byte gUnknown_3003E60 +_080578D4: .4byte gUnknown_3000E84 + thumb_func_end sub_8057884 + + thumb_func_start sub_80578D8 +sub_80578D8: @ 80578D8 + push {lr} + bl sub_805793C + ldr r0, _080578E8 @ =sub_8057D5C + bl sub_80578FC + pop {r0} + bx r0 + .align 2, 0 +_080578E8: .4byte sub_8057D5C + thumb_func_end sub_80578D8 + + thumb_func_start sub_80578EC +sub_80578EC: @ 80578EC + push {lr} + ldr r0, _080578F8 @ =gUnknown_3003E60 + bl sub_8057D48 + pop {r0} + bx r0 + .align 2, 0 +_080578F8: .4byte gUnknown_3003E60 + thumb_func_end sub_80578EC + + thumb_func_start sub_80578FC +sub_80578FC: @ 80578FC + ldr r2, _08057908 @ =gUnknown_3000E89 + movs r1, 0 + strb r1, [r2] + ldr r1, _0805790C @ =gUnknown_3000E84 + str r0, [r1] + bx lr + .align 2, 0 +_08057908: .4byte gUnknown_3000E89 +_0805790C: .4byte gUnknown_3000E84 + thumb_func_end sub_80578FC + + thumb_func_start sub_8057910 +sub_8057910: @ 8057910 + push {lr} + ldr r0, _08057934 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0805792E + ldr r1, _08057938 @ =gUnknown_3000E89 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3C + bls _0805792E + bl sub_80FA190 +_0805792E: + pop {r0} + bx r0 + .align 2, 0 +_08057934: .4byte gUnknown_3003F3C +_08057938: .4byte gUnknown_3000E89 + thumb_func_end sub_8057910 + + thumb_func_start sub_805793C +sub_805793C: @ 805793C + push {lr} + ldr r1, _08057950 @ =gUnknown_3000E80 + movs r2, 0x80 + adds r0, r1, 0x3 +_08057944: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08057944 + pop {r0} + bx r0 + .align 2, 0 +_08057950: .4byte gUnknown_3000E80 + thumb_func_end sub_805793C + + thumb_func_start sub_8057954 +sub_8057954: @ 8057954 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _08057974 @ =gUnknown_3005030 + ldrb r2, [r0] + movs r1, 0 + cmp r1, r2 + bge _08057982 + ldr r4, _08057978 @ =gUnknown_3000E80 +_08057966: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + beq _0805797C + movs r0, 0 + b _08057984 + .align 2, 0 +_08057974: .4byte gUnknown_3005030 +_08057978: .4byte gUnknown_3000E80 +_0805797C: + adds r1, 0x1 + cmp r1, r2 + blt _08057966 +_08057982: + movs r0, 0x1 +_08057984: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8057954 + + thumb_func_start sub_805798C +sub_805798C: @ 805798C + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _080579AC @ =gUnknown_3005030 + ldrb r2, [r0] + movs r1, 0 + cmp r1, r2 + bge _080579BA + ldr r4, _080579B0 @ =gUnknown_3000E80 +_0805799E: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _080579B4 + movs r0, 0x1 + b _080579BC + .align 2, 0 +_080579AC: .4byte gUnknown_3005030 +_080579B0: .4byte gUnknown_3000E80 +_080579B4: + adds r1, 0x1 + cmp r1, r2 + blt _0805799E +_080579BA: + movs r0, 0 +_080579BC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805798C + + thumb_func_start sub_80579C4 +sub_80579C4: @ 80579C4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + adds r6, r2, 0 + mov r9, r3 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldr r0, _08057A14 @ =gUnknown_3000E80 + adds r5, r7, r0 + ldrb r0, [r5] + cmp r0, 0x80 + beq _080579E4 + b _08057B5E +_080579E4: + adds r0, r6, 0 + bl sub_805801C + adds r4, r0, 0 + cmp r4, 0 + beq _08057A1C + bl sub_805812C + mov r1, r9 + strh r0, [r1] + movs r0, 0x81 + strb r0, [r5] + ldrb r0, [r6, 0x1] + cmp r0, 0 + bne _08057A04 + b _08057BD2 +_08057A04: + ldr r0, _08057A18 @ =sub_8057DA4 + bl sub_80578FC + adds r0, r4, 0 + bl sub_80581DC + b _08057BD2 + .align 2, 0 +_08057A14: .4byte gUnknown_3000E80 +_08057A18: .4byte sub_8057DA4 +_08057A1C: + movs r0, 0x83 + bl sub_805798C + cmp r0, 0x1 + bne _08057A44 + movs r0, 0x81 + strb r0, [r5] + ldrb r0, [r6, 0x1] + cmp r0, 0 + bne _08057A32 + b _08057BD2 +_08057A32: + ldr r0, _08057A40 @ =sub_8057DA4 + bl sub_80578FC + bl sub_8058230 + b _08057BD2 + .align 2, 0 +_08057A40: .4byte sub_8057DA4 +_08057A44: + mov r0, r8 + subs r0, 0x12 + cmp r0, 0xA + bls _08057A4E + b _08057B5E +_08057A4E: + lsls r0, 2 + ldr r1, _08057A58 @ =_08057A5C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08057A58: .4byte _08057A5C + .align 2, 0 +_08057A5C: + .4byte _08057AB4 + .4byte _08057B5E + .4byte _08057B5E + .4byte _08057B5E + .4byte _08057B5E + .4byte _08057B5E + .4byte _08057A88 + .4byte _08057AE0 + .4byte _08057B5E + .4byte _08057B10 + .4byte _08057B3C +_08057A88: + adds r0, r6, 0 + bl sub_8058004 + cmp r0, 0 + beq _08057B5E + ldr r0, _08057AAC @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08057B5E + ldr r0, _08057AB0 @ =sub_8057DA4 + bl sub_80578FC + bl sub_80581C8 + b _08057B5E + .align 2, 0 +_08057AAC: .4byte gUnknown_3000E80 +_08057AB0: .4byte sub_8057DA4 +_08057AB4: + adds r0, r6, 0 + bl sub_8058034 + cmp r0, 0x1 + bne _08057B5E + ldr r0, _08057AD8 @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08057B5E + ldr r0, _08057ADC @ =sub_8057DA4 + bl sub_80578FC + bl sub_80581F8 + b _08057B5E + .align 2, 0 +_08057AD8: .4byte gUnknown_3000E80 +_08057ADC: .4byte sub_8057DA4 +_08057AE0: + adds r0, r6, 0 + bl sub_8058060 + adds r4, r0, 0 + cmp r4, 0 + beq _08057B5E + ldr r0, _08057B08 @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08057B5E + ldr r0, _08057B0C @ =sub_8057DA4 + bl sub_80578FC + adds r0, r4, 0 + bl sub_8058214 + b _08057B5E + .align 2, 0 +_08057B08: .4byte gUnknown_3000E80 +_08057B0C: .4byte sub_8057DA4 +_08057B10: + adds r0, r6, 0 + bl sub_8057FEC + cmp r0, 0 + beq _08057B5E + ldr r0, _08057B34 @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08057B5E + ldr r0, _08057B38 @ =sub_8057DC8 + bl sub_80578FC + bl sub_80581BC + b _08057B5E + .align 2, 0 +_08057B34: .4byte gUnknown_3000E80 +_08057B38: .4byte sub_8057DC8 +_08057B3C: + adds r0, r6, 0 + bl sub_8057FEC + cmp r0, 0 + beq _08057B5E + ldr r0, _08057B70 @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08057B5E + ldr r0, _08057B74 @ =sub_8057DEC + bl sub_80578FC + bl sub_80581BC +_08057B5E: + mov r0, r8 + cmp r0, 0x17 + beq _08057B84 + cmp r0, 0x17 + bgt _08057B78 + cmp r0, 0x16 + beq _08057B94 + b _08057BD2 + .align 2, 0 +_08057B70: .4byte gUnknown_3000E80 +_08057B74: .4byte sub_8057DEC +_08057B78: + mov r1, r8 + cmp r1, 0x1A + beq _08057BA4 + cmp r1, 0x1D + beq _08057BC4 + b _08057BD2 +_08057B84: + ldr r0, _08057B90 @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x83 + strb r1, [r0] + b _08057BD2 + .align 2, 0 +_08057B90: .4byte gUnknown_3000E80 +_08057B94: + ldr r0, _08057BA0 @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x82 + strb r1, [r0] + b _08057BD2 + .align 2, 0 +_08057BA0: .4byte gUnknown_3000E80 +_08057BA4: + ldr r0, _08057BBC @ =gUnknown_3000E80 + adds r0, r7, r0 + movs r1, 0x80 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08057BD2 + ldr r0, _08057BC0 @ =sub_8057D5C + bl sub_80578FC + b _08057BD2 + .align 2, 0 +_08057BBC: .4byte gUnknown_3000E80 +_08057BC0: .4byte sub_8057D5C +_08057BC4: + ldr r0, _08057BE0 @ =gUnknown_3000E80 + adds r1, r7, r0 + ldrb r0, [r1] + cmp r0, 0x82 + bne _08057BD2 + movs r0, 0x81 + strb r0, [r1] +_08057BD2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057BE0: .4byte gUnknown_3000E80 + thumb_func_end sub_80579C4 + + thumb_func_start sub_8057BE4 +sub_8057BE4: @ 8057BE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r8, r1 + movs r6, 0 + add r5, sp, 0x10 + mov r9, r5 + adds r7, r0, 0 +_08057BF8: + ldrb r4, [r7] + movs r0, 0 + strh r0, [r5] + adds r0, r6, 0 + mov r1, r8 + mov r2, sp + bl sub_8057F84 + adds r0, r6, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_80579C4 + ldr r0, _08057C48 @ =gUnknown_3000E80 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, 0x80 + bne _08057C28 + adds r0, r4, 0 + bl sub_8057D14 + mov r1, r9 + strh r0, [r1] +_08057C28: + lsls r0, r6, 24 + lsrs r0, 24 + ldrb r1, [r5] + bl sub_8058618 + adds r7, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08057BF8 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057C48: .4byte gUnknown_3000E80 + thumb_func_end sub_8057BE4 + + thumb_func_start sub_8057C4C +sub_8057C4C: @ 8057C4C + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + ldr r1, _08057C64 @ =0xffef0000 + adds r0, r1 + lsrs r0, 16 + cmp r0, 0xC + bhi _08057C6C + ldr r0, _08057C68 @ =gUnknown_3005028 + strh r4, [r0] + b _08057C72 + .align 2, 0 +_08057C64: .4byte 0xffef0000 +_08057C68: .4byte gUnknown_3005028 +_08057C6C: + ldr r1, _08057CB0 @ =gUnknown_3005028 + movs r0, 0x11 + strh r0, [r1] +_08057C72: + ldr r0, _08057CB4 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08057CA8 + bl sub_805833C + cmp r0, 0x1 + bls _08057CA8 + bl sub_805642C + cmp r0, 0x1 + bne _08057CA8 + bl sub_800A00C + cmp r0, 0x1 + bne _08057CA8 + cmp r4, 0x11 + blt _08057CA8 + cmp r4, 0x15 + ble _08057CA2 + cmp r4, 0x19 + bgt _08057CA8 + cmp r4, 0x18 + blt _08057CA8 +_08057CA2: + ldr r1, _08057CB0 @ =gUnknown_3005028 + movs r0, 0 + strh r0, [r1] +_08057CA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08057CB0: .4byte gUnknown_3005028 +_08057CB4: .4byte gUnknown_3003F3C + thumb_func_end sub_8057C4C + + thumb_func_start sub_8057CB8 +sub_8057CB8: @ 8057CB8 + push {lr} + ldr r2, _08057CCC @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08057CD0 + movs r0, 0x13 + b _08057D10 + .align 2, 0 +_08057CCC: .4byte gUnknown_30030F0 +_08057CD0: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08057CDC + movs r0, 0x12 + b _08057D10 +_08057CDC: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08057CE8 + movs r0, 0x14 + b _08057D10 +_08057CE8: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08057CF4 + movs r0, 0x15 + b _08057D10 +_08057CF4: + ldrh r1, [r2, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08057D02 + movs r0, 0x18 + b _08057D10 +_08057D02: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08057D0E + movs r0, 0x11 + b _08057D10 +_08057D0E: + movs r0, 0x19 +_08057D10: + pop {r1} + bx r1 + thumb_func_end sub_8057CB8 + + thumb_func_start sub_8057D14 +sub_8057D14: @ 8057D14 + push {lr} + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0x13 + beq _08057D3A + cmp r0, 0x13 + bgt _08057D2A + cmp r0, 0x12 + beq _08057D3E + b _08057D42 +_08057D2A: + cmp r1, 0x14 + beq _08057D36 + cmp r1, 0x15 + bne _08057D42 + movs r0, 0x4 + b _08057D44 +_08057D36: + movs r0, 0x3 + b _08057D44 +_08057D3A: + movs r0, 0x1 + b _08057D44 +_08057D3E: + movs r0, 0x2 + b _08057D44 +_08057D42: + movs r0, 0 +_08057D44: + pop {r1} + bx r1 + thumb_func_end sub_8057D14 + + thumb_func_start sub_8057D48 +sub_8057D48: @ 8057D48 + push {lr} + movs r2, 0x11 + adds r1, r0, 0x6 +_08057D4E: + strh r2, [r1] + subs r1, 0x2 + cmp r1, r0 + bge _08057D4E + pop {r0} + bx r0 + thumb_func_end sub_8057D48 + + thumb_func_start sub_8057D5C +sub_8057D5C: @ 8057D5C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08057D70 + movs r0, 0x11 + b _08057D92 +_08057D70: + bl sub_800B248 + cmp r0, 0x4 + bls _08057D7C + movs r0, 0x1B + b _08057D92 +_08057D7C: + bl sub_805833C + cmp r0, 0x4 + bls _08057D88 + movs r0, 0x1C + b _08057D92 +_08057D88: + adds r0, r4, 0 + bl sub_8057CB8 + lsls r0, 16 + lsrs r0, 16 +_08057D92: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8057D5C + + thumb_func_start sub_8057D98 +sub_8057D98: @ 8057D98 + push {lr} + bl sub_8057910 + movs r0, 0x11 + pop {r1} + bx r1 + thumb_func_end sub_8057D98 + + thumb_func_start sub_8057DA4 +sub_8057DA4: @ 8057DA4 + push {r4,lr} + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x11 + cmp r0, 0x1 + beq _08057DBC + movs r4, 0x1A + ldr r0, _08057DC4 @ =sub_8057D98 + bl sub_80578FC +_08057DBC: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08057DC4: .4byte sub_8057D98 + thumb_func_end sub_8057DA4 + + thumb_func_start sub_8057DC8 +sub_8057DC8: @ 8057DC8 + push {r4,lr} + bl sub_800B248 + movs r4, 0x11 + cmp r0, 0x2 + bhi _08057DE0 + movs r4, 0x1A + bl sub_806994C + ldr r0, _08057DE8 @ =sub_8057D98 + bl sub_80578FC +_08057DE0: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08057DE8: .4byte sub_8057D98 + thumb_func_end sub_8057DC8 + + thumb_func_start sub_8057DEC +sub_8057DEC: @ 8057DEC + push {r4,lr} + bl sub_805833C + movs r4, 0x11 + cmp r0, 0x2 + bhi _08057E04 + movs r4, 0x1A + bl sub_806994C + ldr r0, _08057E0C @ =sub_8057D98 + bl sub_80578FC +_08057E04: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08057E0C: .4byte sub_8057D98 + thumb_func_end sub_8057DEC + + thumb_func_start sub_8057E10 +sub_8057E10: @ 8057E10 + push {lr} + bl sub_8057910 + movs r0, 0x11 + pop {r1} + bx r1 + thumb_func_end sub_8057E10 + + thumb_func_start sub_8057E1C +sub_8057E1C: @ 8057E1C + push {lr} + ldr r1, _08057E40 @ =gUnknown_3000E80 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x82 + bne _08057E4C + ldr r0, _08057E44 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08057E50 + ldr r0, _08057E48 @ =sub_8057E10 + bl sub_80578FC + movs r0, 0x1D + b _08057E52 + .align 2, 0 +_08057E40: .4byte gUnknown_3000E80 +_08057E44: .4byte gUnknown_30030F0 +_08057E48: .4byte sub_8057E10 +_08057E4C: + bl sub_8057910 +_08057E50: + movs r0, 0x11 +_08057E52: + pop {r1} + bx r1 + thumb_func_end sub_8057E1C + + thumb_func_start sub_8057E58 +sub_8057E58: @ 8057E58 + push {lr} + ldr r0, _08057E68 @ =sub_8057E1C + bl sub_80578FC + movs r0, 0x16 + pop {r1} + bx r1 + .align 2, 0 +_08057E68: .4byte sub_8057E1C + thumb_func_end sub_8057E58 + + thumb_func_start sub_8057E6C +sub_8057E6C: @ 8057E6C + movs r0, 0x11 + bx lr + thumb_func_end sub_8057E6C + + thumb_func_start sub_8057E70 +sub_8057E70: @ 8057E70 + push {lr} + ldr r1, _08057E9C @ =gUnknown_3000E80 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x83 + beq _08057E80 + bl sub_8057910 +_08057E80: + movs r0, 0x83 + bl sub_8057954 + cmp r0, 0x1 + bne _08057E96 + ldr r0, _08057EA0 @ =gUnknown_81BB9FC + bl sub_8069AE4 + ldr r0, _08057EA4 @ =sub_8057E6C + bl sub_80578FC +_08057E96: + movs r0, 0x11 + pop {r1} + bx r1 + .align 2, 0 +_08057E9C: .4byte gUnknown_3000E80 +_08057EA0: .4byte gUnknown_81BB9FC +_08057EA4: .4byte sub_8057E6C + thumb_func_end sub_8057E70 + + thumb_func_start sub_8057EA8 +sub_8057EA8: @ 8057EA8 + push {lr} + ldr r0, _08057EB8 @ =sub_8057E70 + bl sub_80578FC + movs r0, 0x17 + pop {r1} + bx r1 + .align 2, 0 +_08057EB8: .4byte sub_8057E70 + thumb_func_end sub_8057EA8 + + thumb_func_start sub_8057EBC +sub_8057EBC: @ 8057EBC + movs r0, 0x11 + bx lr + thumb_func_end sub_8057EBC + + thumb_func_start sub_8057EC0 +sub_8057EC0: @ 8057EC0 + push {lr} + movs r0, 0x83 + bl sub_805798C + cmp r0, 0x1 + beq _08057EFC + ldr r0, _08057F00 @ =gUnknown_3000E84 + ldr r2, [r0] + ldr r1, _08057F04 @ =sub_8057E1C + adds r3, r0, 0 + cmp r2, r1 + bne _08057EE6 + ldr r1, _08057F08 @ =gUnknown_3000E80 + ldr r0, _08057F0C @ =gUnknown_300502C + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x82 + bne _08057F1E +_08057EE6: + ldr r1, [r3] + ldr r0, _08057F10 @ =sub_8057E10 + cmp r1, r0 + bne _08057F14 + ldr r1, _08057F08 @ =gUnknown_3000E80 + ldr r0, _08057F0C @ =gUnknown_300502C + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x81 + bne _08057F14 +_08057EFC: + movs r0, 0x2 + b _08057F24 + .align 2, 0 +_08057F00: .4byte gUnknown_3000E84 +_08057F04: .4byte sub_8057E1C +_08057F08: .4byte gUnknown_3000E80 +_08057F0C: .4byte gUnknown_300502C +_08057F10: .4byte sub_8057E10 +_08057F14: + movs r0, 0x82 + bl sub_8057954 + cmp r0, 0 + bne _08057F22 +_08057F1E: + movs r0, 0 + b _08057F24 +_08057F22: + movs r0, 0x1 +_08057F24: + pop {r1} + bx r1 + thumb_func_end sub_8057EC0 + + thumb_func_start sub_8057F28 +sub_8057F28: @ 8057F28 + push {lr} + movs r0, 0x83 + bl sub_805798C + pop {r1} + bx r1 + thumb_func_end sub_8057F28 + + thumb_func_start sub_8057F34 +sub_8057F34: @ 8057F34 + push {lr} + ldr r0, _08057F44 @ =sub_8057E58 + bl sub_80578FC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08057F44: .4byte sub_8057E58 + thumb_func_end sub_8057F34 + + thumb_func_start sub_8057F48 +sub_8057F48: @ 8057F48 + push {lr} + ldr r0, _08057F58 @ =sub_8057DA4 + bl sub_80578FC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08057F58: .4byte sub_8057DA4 + thumb_func_end sub_8057F48 + + thumb_func_start sub_8057F5C +sub_8057F5C: @ 8057F5C + push {lr} + ldr r0, _08057F6C @ =sub_8057EA8 + bl sub_80578FC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08057F6C: .4byte sub_8057EA8 + thumb_func_end sub_8057F5C + + thumb_func_start sub_8057F70 +sub_8057F70: @ 8057F70 + push {lr} + ldr r0, _08057F80 @ =sub_8057EBC + bl sub_80578FC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08057F80: .4byte sub_8057EBC + thumb_func_end sub_8057F70 + + thumb_func_start sub_8057F84 +sub_8057F84: @ 8057F84 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r2, 0 + strb r4, [r6] + movs r0, 0 + cmp r4, r1 + bne _08057F96 + movs r0, 0x1 +_08057F96: + strb r0, [r6, 0x1] + ldr r1, _08057FE8 @ =gUnknown_2031DEC + lsls r0, r4, 2 + adds r0, r1 + ldrb r0, [r0, 0x3] + strb r0, [r6, 0x2] + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_805854C + strb r0, [r6, 0x3] + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + mov r1, sp + adds r2, r5, 0 + bl sub_8058524 + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, 0x4] + ldrh r0, [r5] + strh r0, [r6, 0x6] + adds r0, r4, 0 + bl sub_805856C + strb r0, [r6, 0x8] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl sub_8058F78 + strh r0, [r6, 0xC] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08057FE8: .4byte gUnknown_2031DEC + thumb_func_end sub_8057F84 + + thumb_func_start sub_8057FEC +sub_8057FEC: @ 8057FEC + push {lr} + ldrb r0, [r0, 0x2] + cmp r0, 0x2 + beq _08057FF8 + cmp r0, 0 + bne _08057FFC +_08057FF8: + movs r0, 0x1 + b _08057FFE +_08057FFC: + movs r0, 0 +_08057FFE: + pop {r1} + bx r1 + thumb_func_end sub_8057FEC + + thumb_func_start sub_8058004 +sub_8058004: @ 8058004 + push {lr} + ldrb r0, [r0, 0x2] + cmp r0, 0x2 + beq _08058010 + cmp r0, 0 + bne _08058014 +_08058010: + movs r0, 0x1 + b _08058016 +_08058014: + movs r0, 0 +_08058016: + pop {r1} + bx r1 + thumb_func_end sub_8058004 + + thumb_func_start sub_805801C +sub_805801C: @ 805801C + push {lr} + adds r1, r0, 0 + ldrb r0, [r1, 0x2] + cmp r0, 0x2 + bne _0805802E + adds r0, r1, 0x4 + bl sub_806DEC4 + b _08058030 +_0805802E: + movs r0, 0 +_08058030: + pop {r1} + bx r1 + thumb_func_end sub_805801C + + thumb_func_start sub_8058034 +sub_8058034: @ 8058034 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + beq _08058042 + cmp r0, 0 + bne _08058058 +_08058042: + ldrb r0, [r4, 0xC] + bl sub_8059D18 + lsls r0, 24 + cmp r0, 0 + beq _08058058 + ldrb r0, [r4, 0x3] + cmp r0, 0x1 + bne _08058058 + movs r0, 0x1 + b _0805805A +_08058058: + movs r0, 0 +_0805805A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8058034 + + thumb_func_start sub_8058060 +sub_8058060: @ 8058060 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _08058074 + cmp r0, 0x2 + beq _08058074 + movs r0, 0 + b _08058122 +_08058074: + ldr r0, [r4, 0x4] + ldr r1, [r4, 0x8] + str r0, [sp] + str r1, [sp, 0x4] + ldr r3, _080580E4 @ =gUnknown_826D2D8 + ldrb r0, [r4, 0x3] + lsls r0, 3 + adds r0, r3 + ldr r0, [r0] + mov r1, sp + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080580E8 @ =0xffff0000 + ldr r2, [sp] + ands r2, r1 + orrs r2, r0 + str r2, [sp] + asrs r1, r2, 16 + ldrb r0, [r4, 0x3] + lsls r0, 3 + adds r3, 0x4 + adds r0, r3 + ldr r0, [r0] + adds r0, r1 + lsls r0, 16 + ldr r1, _080580EC @ =0x0000ffff + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldr r2, _080580F0 @ =0xffffff00 + ldr r0, [sp, 0x4] + ands r0, r2 + str r0, [sp, 0x4] + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + asrs r1, 16 + bl sub_80585B8 + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + cmp r1, 0x4 + beq _08058118 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _080580E0 + ldr r0, _080580F4 @ =gUnknown_3000E80 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0x80 + beq _080580FC +_080580E0: + ldr r0, _080580F8 @ =gUnknown_81BB9A3 + b _08058122 + .align 2, 0 +_080580E4: .4byte gUnknown_826D2D8 +_080580E8: .4byte 0xffff0000 +_080580EC: .4byte 0x0000ffff +_080580F0: .4byte 0xffffff00 +_080580F4: .4byte gUnknown_3000E80 +_080580F8: .4byte gUnknown_81BB9A3 +_080580FC: + adds r0, r2, 0 + bl sub_8081A34 + cmp r0, 0 + bne _08058110 + ldr r0, _0805810C @ =gUnknown_81BB981 + b _08058122 + .align 2, 0 +_0805810C: .4byte gUnknown_81BB981 +_08058110: + ldr r0, _08058114 @ =gUnknown_81BB992 + b _08058122 + .align 2, 0 +_08058114: .4byte gUnknown_81BB992 +_08058118: + ldrb r1, [r4, 0xC] + ldrb r2, [r4, 0x3] + mov r0, sp + bl sub_806CF38 +_08058122: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8058060 + + thumb_func_start sub_805812C +sub_805812C: @ 805812C + push {lr} + adds r1, r0, 0 + ldr r0, _08058178 @ =gUnknown_81BB8DB + cmp r1, r0 + beq _08058172 + ldr r0, _0805817C @ =gUnknown_81BB8F8 + cmp r1, r0 + beq _080581B4 + ldr r0, _08058180 @ =gUnknown_81BB915 + cmp r1, r0 + beq _08058172 + ldr r0, _08058184 @ =gUnknown_81BB932 + cmp r1, r0 + beq _080581B4 + ldr r0, _08058188 @ =gUnknown_81BB980 + cmp r1, r0 + beq _08058172 + ldr r0, _0805818C @ =gUnknown_81BB980 + cmp r1, r0 + beq _080581B4 + ldr r0, _08058190 @ =gUnknown_81BB980 + cmp r1, r0 + beq _08058172 + ldr r0, _08058194 @ =gUnknown_81BB980 + cmp r1, r0 + beq _080581B4 + ldr r0, _08058198 @ =gUnknown_81BB8C3 + cmp r1, r0 + beq _08058172 + ldr r0, _0805819C @ =gUnknown_81BB8CF + cmp r1, r0 + beq _080581B4 + ldr r0, _080581A0 @ =gUnknown_81BB950 + cmp r1, r0 + bne _080581A4 +_08058172: + movs r0, 0xA + b _080581B6 + .align 2, 0 +_08058178: .4byte gUnknown_81BB8DB +_0805817C: .4byte gUnknown_81BB8F8 +_08058180: .4byte gUnknown_81BB915 +_08058184: .4byte gUnknown_81BB932 +_08058188: .4byte gUnknown_81BB980 +_0805818C: .4byte gUnknown_81BB980 +_08058190: .4byte gUnknown_81BB980 +_08058194: .4byte gUnknown_81BB980 +_08058198: .4byte gUnknown_81BB8C3 +_0805819C: .4byte gUnknown_81BB8CF +_080581A0: .4byte gUnknown_81BB950 +_080581A4: + ldr r0, _080581B0 @ =gUnknown_81BB95C + cmp r1, r0 + beq _080581B4 + movs r0, 0 + b _080581B6 + .align 2, 0 +_080581B0: .4byte gUnknown_81BB95C +_080581B4: + movs r0, 0x9 +_080581B6: + pop {r1} + bx r1 + thumb_func_end sub_805812C + + thumb_func_start sub_80581BC +sub_80581BC: @ 80581BC + push {lr} + bl sub_8069940 + pop {r0} + bx r0 + thumb_func_end sub_80581BC + + thumb_func_start sub_80581C8 +sub_80581C8: @ 80581C8 + push {lr} + movs r0, 0x6 + bl sub_80722CC + bl sub_806F258 + bl sub_8069940 + pop {r0} + bx r0 + thumb_func_end sub_80581C8 + + thumb_func_start sub_80581DC +sub_80581DC: @ 80581DC + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_8069AE4 + bl sub_8069940 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80581DC + + thumb_func_start sub_80581F8 +sub_80581F8: @ 80581F8 + push {lr} + movs r0, 0x6 + bl sub_80722CC + ldr r0, _08058210 @ =gUnknown_81BB9D4 + bl sub_8069AE4 + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_08058210: .4byte gUnknown_81BB9D4 + thumb_func_end sub_80581F8 + + thumb_func_start sub_8058214 +sub_8058214: @ 8058214 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_8069AE4 + bl sub_8069940 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8058214 + + thumb_func_start sub_8058230 +sub_8058230: @ 8058230 + push {lr} + ldr r0, _08058240 @ =gUnknown_81BB9F0 + bl sub_8069AE4 + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_08058240: .4byte gUnknown_81BB9F0 + thumb_func_end sub_8058230 + + thumb_func_start sub_8058244 +sub_8058244: @ 8058244 + push {lr} + bl sub_805642C + cmp r0, 0 + bne _08058252 + movs r0, 0 + b _0805826C +_08058252: + bl sub_800B248 + cmp r0, 0x2 + bls _08058264 + ldr r1, _08058260 @ =gUnknown_3000E88 + movs r0, 0x1 + b _08058268 + .align 2, 0 +_08058260: .4byte gUnknown_3000E88 +_08058264: + ldr r1, _08058270 @ =gUnknown_3000E88 + movs r0, 0 +_08058268: + strb r0, [r1] + ldrb r0, [r1] +_0805826C: + pop {r1} + bx r1 + .align 2, 0 +_08058270: .4byte gUnknown_3000E88 + thumb_func_end sub_8058244 + + thumb_func_start sub_8058274 +sub_8058274: @ 8058274 + push {lr} + bl sub_800B248 + cmp r0, 0x1 + bls _080582D8 + bl sub_805642C + cmp r0, 0x1 + bne _080582D8 + bl sub_800A00C + cmp r0, 0x1 + bne _080582D8 + ldr r0, _080582C4 @ =gUnknown_3000E84 + ldr r1, [r0] + ldr r0, _080582C8 @ =sub_8057DC8 + cmp r1, r0 + beq _080582C0 + ldr r0, _080582CC @ =sub_8057DA4 + cmp r1, r0 + bne _080582D8 + ldr r0, _080582D0 @ =gUnknown_3000E88 + ldrb r2, [r0] + movs r1, 0 + strb r1, [r0] + cmp r2, 0x1 + beq _080582C0 + ldr r2, _080582D4 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080582D8 + ldrb r1, [r2, 0xA] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080582D8 +_080582C0: + movs r0, 0x1 + b _080582DA + .align 2, 0 +_080582C4: .4byte gUnknown_3000E84 +_080582C8: .4byte sub_8057DC8 +_080582CC: .4byte sub_8057DA4 +_080582D0: .4byte gUnknown_3000E88 +_080582D4: .4byte gUnknown_2037AB8 +_080582D8: + movs r0, 0 +_080582DA: + pop {r1} + bx r1 + thumb_func_end sub_8058274 + + thumb_func_start sub_80582E0 +sub_80582E0: @ 80582E0 + push {lr} + bl sub_805833C + cmp r0, 0x1 + bls _08058304 + bl sub_805642C + cmp r0, 0x1 + bne _08058304 + bl sub_800A00C + cmp r0, 0x1 + bne _08058304 + ldr r0, _08058308 @ =gUnknown_3000E84 + ldr r1, [r0] + ldr r0, _0805830C @ =sub_8057DEC + cmp r1, r0 + beq _08058310 +_08058304: + movs r0, 0 + b _08058312 + .align 2, 0 +_08058308: .4byte gUnknown_3000E84 +_0805830C: .4byte sub_8057DEC +_08058310: + movs r0, 0x1 +_08058312: + pop {r1} + bx r1 + thumb_func_end sub_80582E0 + + thumb_func_start sub_8058318 +sub_8058318: @ 8058318 + push {lr} + ldr r0, _08058330 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _08058334 + bl sub_800A00C + cmp r0, 0 + beq _08058334 + movs r0, 0x1 + b _08058336 + .align 2, 0 +_08058330: .4byte gUnknown_3003F3C +_08058334: + movs r0, 0 +_08058336: + pop {r1} + bx r1 + thumb_func_end sub_8058318 + + thumb_func_start sub_805833C +sub_805833C: @ 805833C + push {lr} + ldr r0, _08058350 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0805835C + ldr r0, _08058354 @ =gUnknown_3003FB0 + ldr r1, _08058358 @ =0x00000339 + adds r0, r1 + ldrb r0, [r0] + b _08058364 + .align 2, 0 +_08058350: .4byte gUnknown_3003F3C +_08058354: .4byte gUnknown_3003FB0 +_08058358: .4byte 0x00000339 +_0805835C: + ldr r0, _08058368 @ =gUnknown_3005450 + ldr r1, _0805836C @ =0x000008d2 + adds r0, r1 + ldrb r0, [r0] +_08058364: + pop {r1} + bx r1 + .align 2, 0 +_08058368: .4byte gUnknown_3005450 +_0805836C: .4byte 0x000008d2 + thumb_func_end sub_805833C + + thumb_func_start sub_8058370 +sub_8058370: @ 8058370 + movs r1, 0 + str r1, [r0] + bx lr + thumb_func_end sub_8058370 + + thumb_func_start sub_8058378 +sub_8058378: @ 8058378 + push {lr} + ldr r0, _08058388 @ =gUnknown_2031DEC + movs r1, 0 + movs r2, 0x10 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_08058388: .4byte gUnknown_2031DEC + thumb_func_end sub_8058378 + + thumb_func_start sub_805838C +sub_805838C: @ 805838C + push {lr} + movs r1, 0 + movs r2, 0x24 + bl memset + pop {r0} + bx r0 + thumb_func_end sub_805838C + + thumb_func_start sub_805839C +sub_805839C: @ 805839C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r1 + mov r10, r2 + mov r8, r3 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r9 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + mov r1, r10 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + mov r2, r8 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + bl sub_805DF30 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, r7, 2 + ldr r0, _08058440 @ =gUnknown_2031DEC + adds r4, r0 + lsls r5, r6, 3 + adds r5, r6 + lsls r5, 2 + ldr r0, _08058444 @ =gUnknown_2036E38 + adds r5, r0 + adds r0, r4, 0 + bl sub_8058370 + adds r0, r5, 0 + bl sub_805838C + movs r2, 0 + movs r1, 0x1 + movs r0, 0x1 + strb r0, [r4] + strb r7, [r4, 0x1] + strb r6, [r4, 0x2] + strb r2, [r4, 0x3] + ldrb r0, [r5] + orrs r0, r1 + mov r2, r8 + ands r2, r1 + lsls r2, 1 + movs r1, 0x3 + negs r1, r1 + ands r0, r1 + orrs r0, r2 + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, 0x19] + movs r0, 0x40 + strb r0, [r5, 0x4] + mov r0, r9 + lsls r0, 16 + asrs r0, 16 + mov r9, r0 + mov r1, r10 + lsls r1, 16 + asrs r1, 16 + mov r10, r1 + adds r0, r5, 0 + mov r1, r9 + mov r2, r10 + bl sub_8058448 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08058440: .4byte gUnknown_2031DEC +_08058444: .4byte gUnknown_2036E38 + thumb_func_end sub_805839C + + thumb_func_start sub_8058448 +sub_8058448: @ 8058448 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + strh r0, [r4, 0x10] + strh r1, [r4, 0x12] + strh r0, [r4, 0x14] + strh r1, [r4, 0x16] + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0xC + adds r3, r4, 0 + adds r3, 0xE + bl sub_8063B1C + ldrh r0, [r4, 0xC] + adds r0, 0x8 + strh r0, [r4, 0xC] + adds r0, r4, 0 + bl sub_80682A4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8058448 + + thumb_func_start sub_8058488 +sub_8058488: @ 8058488 + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + ldr r1, _080584B0 @ =gUnknown_2031DEC + lsrs r0, 22 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + beq _080584AA + ldrb r0, [r1, 0x2] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080584B4 @ =gUnknown_2036E38 + adds r1, r0 + strb r2, [r1, 0x19] +_080584AA: + pop {r0} + bx r0 + .align 2, 0 +_080584B0: .4byte gUnknown_2031DEC +_080584B4: .4byte gUnknown_2036E38 + thumb_func_end sub_8058488 + + thumb_func_start sub_80584B8 +sub_80584B8: @ 80584B8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080584F8 @ =gUnknown_2031DEC + adds r5, r0, r1 + ldrb r1, [r5, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080584FC @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + cmp r0, 0x40 + beq _080584E4 + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058500 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 +_080584E4: + movs r0, 0 + strb r0, [r5] + ldrb r1, [r4] + subs r0, 0x2 + ands r0, r1 + strb r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080584F8: .4byte gUnknown_2031DEC +_080584FC: .4byte gUnknown_2036E38 +_08058500: .4byte gUnknown_202063C + thumb_func_end sub_80584B8 + + thumb_func_start sub_8058504 +sub_8058504: @ 8058504 + lsls r0, 24 + ldr r1, _0805851C @ =gUnknown_2031DEC + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058520 @ =gUnknown_2036E38 + adds r0, r1 + ldrb r0, [r0, 0x4] + bx lr + .align 2, 0 +_0805851C: .4byte gUnknown_2031DEC +_08058520: .4byte gUnknown_2036E38 + thumb_func_end sub_8058504 + + thumb_func_start sub_8058524 +sub_8058524: @ 8058524 + lsls r0, 24 + ldr r3, _08058544 @ =gUnknown_2031DEC + lsrs r0, 22 + adds r0, r3 + ldrb r3, [r0, 0x2] + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r3, _08058548 @ =gUnknown_2036E38 + adds r0, r3 + ldrh r3, [r0, 0x10] + strh r3, [r1] + ldrh r0, [r0, 0x12] + strh r0, [r2] + bx lr + .align 2, 0 +_08058544: .4byte gUnknown_2031DEC +_08058548: .4byte gUnknown_2036E38 + thumb_func_end sub_8058524 + + thumb_func_start sub_805854C +sub_805854C: @ 805854C + lsls r0, 24 + ldr r1, _08058564 @ =gUnknown_2031DEC + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058568 @ =gUnknown_2036E38 + adds r0, r1 + ldrb r0, [r0, 0x19] + bx lr + .align 2, 0 +_08058564: .4byte gUnknown_2031DEC +_08058568: .4byte gUnknown_2036E38 + thumb_func_end sub_805854C + + thumb_func_start sub_805856C +sub_805856C: @ 805856C + lsls r0, 24 + ldr r1, _08058588 @ =gUnknown_2031DEC + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805858C @ =gUnknown_2036E38 + adds r0, r1 + ldrb r0, [r0, 0xB] + lsls r0, 28 + lsrs r0, 28 + bx lr + .align 2, 0 +_08058588: .4byte gUnknown_2031DEC +_0805858C: .4byte gUnknown_2036E38 + thumb_func_end sub_805856C + + thumb_func_start sub_8058590 +sub_8058590: @ 8058590 + lsls r0, 24 + ldr r1, _080585B0 @ =gUnknown_2031DEC + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080585B4 @ =gUnknown_2036E38 + adds r0, r1 + adds r0, 0x21 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x10 + subs r0, r1 + bx lr + .align 2, 0 +_080585B0: .4byte gUnknown_2031DEC +_080585B4: .4byte gUnknown_2036E38 + thumb_func_end sub_8058590 + + thumb_func_start sub_80585B8 +sub_80585B8: @ 80585B8 + push {r4-r6,lr} + movs r2, 0 + ldr r5, _080585FC @ =gUnknown_2031DEC + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r3, r1, 16 +_080585C6: + lsls r0, r2, 2 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0 + beq _08058604 + ldrb r0, [r1, 0x3] + cmp r0, 0 + beq _080585DA + cmp r0, 0x2 + bne _08058604 +_080585DA: + ldrb r1, [r1, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058600 @ =gUnknown_2036E38 + adds r1, r0, r1 + movs r6, 0x10 + ldrsh r0, [r1, r6] + cmp r0, r4 + bne _08058604 + movs r6, 0x12 + ldrsh r0, [r1, r6] + cmp r0, r3 + bne _08058604 + adds r0, r2, 0 + b _08058610 + .align 2, 0 +_080585FC: .4byte gUnknown_2031DEC +_08058600: .4byte gUnknown_2036E38 +_08058604: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080585C6 + movs r0, 0x4 +_08058610: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80585B8 + + thumb_func_start sub_8058618 +sub_8058618: @ 8058618 + push {r4-r6,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + adds r2, r3, 0 + lsrs r0, 22 + ldr r1, _08058648 @ =gUnknown_2031DEC + adds r5, r0, r1 + ldrb r1, [r5, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805864C @ =gUnknown_2036E38 + adds r6, r0, r1 + ldrb r0, [r5] + cmp r0, 0 + beq _08058674 + cmp r3, 0xA + bls _08058650 + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + b _08058674 + .align 2, 0 +_08058648: .4byte gUnknown_2031DEC +_0805864C: .4byte gUnknown_2036E38 +_08058650: + ldr r4, _0805867C @ =gUnknown_826D374 + ldr r1, _08058680 @ =gUnknown_826D33C + ldrb r0, [r5, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl _call_via_r2 +_08058674: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805867C: .4byte gUnknown_826D374 +_08058680: .4byte gUnknown_826D33C + thumb_func_end sub_8058618 + + thumb_func_start sub_8058684 +sub_8058684: @ 8058684 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + ldr r4, _080586A0 @ =gUnknown_826D348 + lsls r3, r2, 2 + adds r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080586A0: .4byte gUnknown_826D348 + thumb_func_end sub_8058684 + + thumb_func_start sub_80586A4 +sub_80586A4: @ 80586A4 + movs r0, 0x1 + bx lr + thumb_func_end sub_80586A4 + + thumb_func_start sub_80586A8 +sub_80586A8: @ 80586A8 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + ldr r4, _080586C4 @ =gUnknown_826D348 + lsls r3, r2, 2 + adds r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080586C4: .4byte gUnknown_826D348 + thumb_func_end sub_80586A8 + + thumb_func_start sub_80586C8 +sub_80586C8: @ 80586C8 + movs r0, 0 + bx lr + thumb_func_end sub_80586C8 + + thumb_func_start sub_80586CC +sub_80586CC: @ 80586CC + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r2, 24 + lsrs r0, 24 + ldrb r1, [r5, 0x19] + bl sub_805878C + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x19] + mov r6, sp + adds r6, 0x2 + adds r0, r5, 0 + mov r2, sp + adds r3, r6, 0 + bl sub_8063C50 + ldrb r0, [r4, 0x2] + ldrb r1, [r5, 0x19] + mov r2, sp + movs r3, 0 + ldrsh r2, [r2, r3] + movs r4, 0 + ldrsh r3, [r6, r4] + bl sub_80587EC + lsls r0, 24 + cmp r0, 0 + bne _0805872A + adds r1, r5, 0 + adds r1, 0x21 + movs r0, 0x10 + strb r0, [r1] + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r3, 0 + ldrsh r2, [r6, r3] + adds r0, r5, 0 + bl sub_805F700 + adds r0, r5, 0 + bl sub_80682A4 + movs r0, 0x1 + b _0805872C +_0805872A: + movs r0, 0 +_0805872C: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80586CC + + thumb_func_start sub_8058734 +sub_8058734: @ 8058734 + push {r4,lr} + adds r4, r1, 0 + lsls r0, r2, 24 + lsrs r0, 24 + ldrb r1, [r4, 0x19] + bl sub_805878C + strb r0, [r4, 0x19] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8058734 + + thumb_func_start sub_805874C +sub_805874C: @ 805874C + movs r1, 0 + strb r1, [r0, 0x3] + bx lr + thumb_func_end sub_805874C + + thumb_func_start sub_8058754 +sub_8058754: @ 8058754 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r4, 0 + adds r5, 0x21 + ldrb r0, [r5] + subs r0, 0x1 + strb r0, [r5] + movs r0, 0x1 + strb r0, [r6, 0x3] + ldrb r0, [r4, 0x19] + adds r1, 0xC + adds r2, r4, 0 + adds r2, 0xE + bl sub_8063A20 + ldrb r0, [r5] + cmp r0, 0 + bne _08058784 + adds r0, r4, 0 + bl sub_805F818 + movs r0, 0x2 + strb r0, [r6, 0x3] +_08058784: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8058754 + + thumb_func_start sub_805878C +sub_805878C: @ 805878C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + subs r0, 0x1 + cmp r0, 0x9 + bhi _080587E4 + lsls r0, 2 + ldr r1, _080587A8 @ =_080587AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080587A8: .4byte _080587AC + .align 2, 0 +_080587AC: + .4byte _080587D4 + .4byte _080587D8 + .4byte _080587DC + .4byte _080587E0 + .4byte _080587E4 + .4byte _080587E4 + .4byte _080587D4 + .4byte _080587D8 + .4byte _080587DC + .4byte _080587E0 +_080587D4: + movs r0, 0x2 + b _080587E6 +_080587D8: + movs r0, 0x1 + b _080587E6 +_080587DC: + movs r0, 0x3 + b _080587E6 +_080587E0: + movs r0, 0x4 + b _080587E6 +_080587E4: + adds r0, r2, 0 +_080587E6: + pop {r1} + bx r1 + thumb_func_end sub_805878C + + thumb_func_start sub_80587EC +sub_80587EC: @ 80587EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r2, 16 + lsrs r2, 16 + mov r12, r2 + lsls r3, 16 + movs r4, 0 + ldr r0, _08058850 @ =gUnknown_2036E38 + mov r9, r0 + lsrs r2, r3, 16 + mov r10, r2 + asrs r6, r3, 16 +_08058810: + mov r7, r12 + lsls r3, r7, 16 + mov r0, r10 + lsls r5, r0, 16 + cmp r4, r8 + beq _08058854 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + mov r2, r9 + adds r1, r0, r2 + movs r7, 0x10 + ldrsh r0, [r1, r7] + asrs r2, r3, 16 + cmp r0, r2 + bne _08058838 + movs r7, 0x12 + ldrsh r0, [r1, r7] + cmp r0, r6 + beq _0805884A +_08058838: + movs r7, 0x14 + ldrsh r0, [r1, r7] + cmp r0, r2 + bne _08058854 + movs r0, 0x16 + ldrsh r1, [r1, r0] + asrs r0, r5, 16 + cmp r1, r0 + bne _08058854 +_0805884A: + movs r0, 0x1 + b _0805886A + .align 2, 0 +_08058850: .4byte gUnknown_2036E38 +_08058854: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08058810 + asrs r0, r3, 16 + asrs r1, r5, 16 + bl sub_8058DC4 + lsls r0, 24 + lsrs r0, 24 +_0805886A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80587EC + + thumb_func_start sub_8058878 +sub_8058878: @ 8058878 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, r5, 2 + ldr r0, _080588B4 @ =gUnknown_2031DEC + adds r2, r0 + ldrb r1, [r2, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080588B8 @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r0, [r2] + cmp r0, 0 + beq _080588FC + subs r0, r3, 0x4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080588BC + ldrb r1, [r4] + lsls r1, 30 + lsrs r1, 31 + movs r0, 0 + bl sub_805C7C8 + b _080588C6 + .align 2, 0 +_080588B4: .4byte gUnknown_2031DEC +_080588B8: .4byte gUnknown_2036E38 +_080588BC: + ldrb r0, [r4] + lsls r0, 30 + lsrs r0, 31 + bl sub_805C7F8 +_080588C6: + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08058904 @ =sub_805890C + movs r2, 0 + str r2, [sp] + movs r3, 0 + bl sub_805E978 + strb r0, [r4, 0x4] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058908 @ =gUnknown_202063C + adds r0, r1 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r3] + strh r5, [r0, 0x2E] + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4] +_080588FC: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08058904: .4byte sub_805890C +_08058908: .4byte gUnknown_202063C + thumb_func_end sub_8058878 + + thumb_func_start sub_805890C +sub_805890C: @ 805890C + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r4, [r5, r0] + lsls r4, 2 + ldr r0, _08058970 @ =gUnknown_2031DEC + adds r4, r0 + ldrb r1, [r4, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058974 @ =gUnknown_2036E38 + adds r6, r0, r1 + ldrh r0, [r6, 0xC] + strh r0, [r5, 0x20] + ldrh r0, [r6, 0xE] + strh r0, [r5, 0x22] + ldrb r0, [r6, 0xB] + lsrs r0, 4 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80682F8 + ldrb r0, [r6, 0xB] + lsrs r0, 4 + bl sub_8068294 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldrb r0, [r4, 0x3] + cmp r0, 0 + bne _08058978 + ldrb r0, [r6, 0x19] + bl sub_8063430 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C + b _0805898A + .align 2, 0 +_08058970: .4byte gUnknown_2031DEC +_08058974: .4byte gUnknown_2036E38 +_08058978: + ldrb r0, [r6, 0x19] + bl sub_8063440 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_80083A4 +_0805898A: + adds r0, r5, 0 + movs r1, 0 + bl sub_8068EB4 + ldrb r0, [r6] + lsls r0, 29 + cmp r0, 0 + bge _080589BC + ldrh r0, [r5, 0x3C] + movs r1, 0x4 + ands r1, r0 + lsls r1, 16 + adds r3, r5, 0 + adds r3, 0x3E + lsrs r1, 18 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_080589BC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805890C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/palette.s b/asm/palette.s new file mode 100644 index 000000000..596238614 --- /dev/null +++ b/asm/palette.s @@ -0,0 +1,2945 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80703A8 +sub_80703A8: @ 80703A8 + push {r4-r6,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + ldr r6, _080703E0 @ =gUnknown_2037ACC + adds r1, r6, 0 + bl sub_800EBB4 + lsls r4, 1 + ldr r1, _080703E4 @ =gUnknown_20371F8 + adds r1, r4, r1 + lsrs r5, 17 + adds r0, r6, 0 + adds r2, r5, 0 + bl CpuSet + ldr r0, _080703E8 @ =gUnknown_20375F8 + adds r4, r0 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl CpuSet + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080703E0: .4byte gUnknown_2037ACC +_080703E4: .4byte gUnknown_20371F8 +_080703E8: .4byte gUnknown_20375F8 + thumb_func_end sub_80703A8 + + thumb_func_start sub_80703EC +sub_80703EC: @ 80703EC + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsls r5, 16 + lsrs r4, 15 + ldr r1, _0807041C @ =gUnknown_20371F8 + adds r1, r4, r1 + lsrs r5, 17 + adds r2, r5, 0 + bl CpuSet + ldr r0, _08070420 @ =gUnknown_20375F8 + adds r4, r0 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl CpuSet + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807041C: .4byte gUnknown_20371F8 +_08070420: .4byte gUnknown_20375F8 + thumb_func_end sub_80703EC + + thumb_func_start sub_8070424 +sub_8070424: @ 8070424 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r6, 16 + lsrs r6, 16 + lsls r4, 16 + lsls r5, 16 + mov r0, sp + strh r6, [r0] + lsrs r4, 15 + ldr r1, _0807046C @ =gUnknown_20371F8 + adds r1, r4, r1 + lsrs r5, 17 + movs r0, 0x80 + lsls r0, 17 + orrs r5, r0 + mov r0, sp + adds r2, r5, 0 + bl CpuSet + mov r0, sp + adds r0, 0x2 + strh r6, [r0] + ldr r1, _08070470 @ =gUnknown_20375F8 + adds r4, r1 + adds r1, r4, 0 + adds r2, r5, 0 + bl CpuSet + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807046C: .4byte gUnknown_20371F8 +_08070470: .4byte gUnknown_20375F8 + thumb_func_end sub_8070424 + + thumb_func_start sub_8070474 +sub_8070474: @ 8070474 + push {r4,r5,lr} + ldr r4, _080704BC @ =gUnknown_2037AB8 + ldrb r1, [r4, 0x8] + movs r5, 0x80 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + bne _080704B6 + ldr r1, _080704C0 @ =gUnknown_20375F8 + movs r2, 0xA0 + lsls r2, 19 + ldr r0, _080704C4 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _080704C8 @ =0x80000200 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + ldr r0, _080704CC @ =gUnknown_2037AC8 + str r3, [r0] + ldrb r1, [r4, 0x9] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _080704B6 + ldrb r1, [r4, 0x7] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080704B6 + bl sub_807141C +_080704B6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080704BC: .4byte gUnknown_2037AB8 +_080704C0: .4byte gUnknown_20375F8 +_080704C4: .4byte 0x040000d4 +_080704C8: .4byte 0x80000200 +_080704CC: .4byte gUnknown_2037AC8 + thumb_func_end sub_8070474 + + thumb_func_start sub_80704D0 +sub_80704D0: @ 80704D0 + push {lr} + ldr r0, _080704E0 @ =gUnknown_2037AC8 + ldr r0, [r0] + cmp r0, 0 + beq _080704E4 + movs r0, 0xFF + b _0807051C + .align 2, 0 +_080704E0: .4byte gUnknown_2037AC8 +_080704E4: + ldr r0, _080704F8 @ =gUnknown_2037AB8 + ldrb r0, [r0, 0x9] + movs r1, 0x3 + ands r1, r0 + cmp r1, 0 + bne _080704FC + bl sub_8070B8C + b _0807050A + .align 2, 0 +_080704F8: .4byte gUnknown_2037AB8 +_080704FC: + cmp r1, 0x1 + bne _08070506 + bl sub_8070EEC + b _0807050A +_08070506: + bl sub_8071300 +_0807050A: + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _08070520 @ =gUnknown_2037AC8 + ldr r0, _08070524 @ =gUnknown_2037AB8 + ldr r0, [r0] + movs r1, 0 + orrs r0, r1 + str r0, [r2] + adds r0, r3, 0 +_0807051C: + pop {r1} + bx r1 + .align 2, 0 +_08070520: .4byte gUnknown_2037AC8 +_08070524: .4byte gUnknown_2037AB8 + thumb_func_end sub_80704D0 + + thumb_func_start sub_8070528 +sub_8070528: @ 8070528 + push {r4,lr} + movs r4, 0 +_0807052C: + adds r0, r4, 0 + bl sub_8070A28 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0807052C + bl sub_8070A84 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8070528 + + thumb_func_start sub_8070548 +sub_8070548: @ 8070548 + push {r4-r7,lr} + movs r0, 0xA0 + lsls r0, 19 + mov r12, r0 + movs r4, 0 + ldr r7, _0807057C @ =gUnknown_20371F8 + ldr r6, _08070580 @ =gUnknown_20375F8 + ldr r5, _08070584 @ =0x000001ff +_08070558: + lsls r1, r4, 1 + adds r3, r1, r7 + mov r0, r12 + adds r2, r1, r0 + ldrh r0, [r2] + strh r0, [r3] + adds r1, r6 + ldrh r0, [r2] + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r5 + bls _08070558 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807057C: .4byte gUnknown_20371F8 +_08070580: .4byte gUnknown_20375F8 +_08070584: .4byte 0x000001ff + thumb_func_end sub_8070548 + + thumb_func_start sub_8070588 +sub_8070588: @ 8070588 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + ldr r0, [sp, 0x18] + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r12, r2 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r5, _080705B8 @ =gUnknown_2037AB8 + ldrb r1, [r5, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080705BC + movs r0, 0 + b _080706B4 + .align 2, 0 +_080705B8: .4byte gUnknown_2037AB8 +_080705BC: + ldrb r0, [r5, 0xA] + movs r3, 0x79 + negs r3, r3 + adds r2, r3, 0 + ands r2, r0 + movs r0, 0x10 + orrs r2, r0 + strb r2, [r5, 0xA] + lsls r0, r6, 24 + asrs r1, r0, 24 + cmp r1, 0 + bge _080705EA + lsls r0, r2, 25 + lsrs r0, 28 + negs r1, r1 + adds r0, r1 + movs r1, 0xF + ands r0, r1 + lsls r0, 3 + ands r2, r3 + orrs r2, r0 + strb r2, [r5, 0xA] + movs r6, 0 +_080705EA: + str r4, [r5] + movs r4, 0x3F + adds r1, r6, 0 + ands r1, r4 + ldrb r2, [r5, 0x4] + movs r3, 0x40 + negs r3, r3 + adds r0, r3, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x4] + ands r6, r4 + ldrb r0, [r5, 0x8] + ands r3, r0 + orrs r3, r6 + strb r3, [r5, 0x8] + movs r0, 0x1F + mov r1, r12 + ands r1, r0 + lsls r1, 6 + ldrh r2, [r5, 0x4] + ldr r0, _08070658 @ =0xfffff83f + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + lsls r2, r7, 3 + ldrb r1, [r5, 0x5] + movs r0, 0x7 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, 0x5] + ldr r1, _0807065C @ =0x00007fff + mov r0, r8 + ands r1, r0 + ldrh r2, [r5, 0x6] + ldr r0, _08070660 @ =0xffff8000 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x6] + ldrb r0, [r5, 0x7] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r5, 0x7] + ldrb r1, [r5, 0x9] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x9] + cmp r12, r7 + bcs _08070664 + movs r0, 0x41 + negs r0, r0 + ands r3, r0 + b _08070668 + .align 2, 0 +_08070658: .4byte 0xfffff83f +_0807065C: .4byte 0x00007fff +_08070660: .4byte 0xffff8000 +_08070664: + movs r0, 0x40 + orrs r3, r0 +_08070668: + strb r3, [r5, 0x8] + bl sub_80704D0 + ldr r4, _080706C0 @ =gUnknown_2037AB8 + ldrb r1, [r4, 0x8] + lsrs r5, r1, 7 + movs r0, 0x7F + ands r0, r1 + strb r0, [r4, 0x8] + ldr r0, _080706C4 @ =gUnknown_20375F8 + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _080706C8 @ =0x04000100 + bl CpuSet + ldr r1, _080706CC @ =gUnknown_2037AC8 + movs r0, 0 + str r0, [r1] + ldrb r1, [r4, 0x9] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _080706A4 + ldrb r1, [r4, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080706A4 + bl sub_807141C +_080706A4: + ldr r2, _080706C0 @ =gUnknown_2037AB8 + lsls r3, r5, 7 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2, 0x8] + movs r0, 0x1 +_080706B4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080706C0: .4byte gUnknown_2037AB8 +_080706C4: .4byte gUnknown_20375F8 +_080706C8: .4byte 0x04000100 +_080706CC: .4byte gUnknown_2037AC8 + thumb_func_end sub_8070588 + + thumb_func_start sub_80706D0 +sub_80706D0: @ 80706D0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + mov r8, r0 + adds r4, r1, 0 + adds r6, r2, 0 + ldr r5, [sp, 0x1C] + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r5, 16 + lsrs r5, 16 + str r3, [sp, 0x4] + bl sub_8070548 + lsls r4, 24 + asrs r4, 24 + str r5, [sp] + mov r0, r8 + adds r1, r4, 0 + adds r2, r6, 0 + ldr r3, [sp, 0x4] + bl sub_8070588 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80706D0 + + thumb_func_start sub_8070718 +sub_8070718: @ 8070718 + push {r4-r7,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r7, r0, 24 + movs r5, 0 +_08070722: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + ldr r1, _08070770 @ =gUnknown_20379F8 + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + lsls r0, 31 + cmp r0, 0 + beq _08070780 + ldr r2, [r4] + ldrb r0, [r2, 0x8] + lsls r0, 31 + lsrs r0, 31 + cmp r0, r7 + bne _08070780 + ldrh r1, [r4, 0x6] + lsls r1, 20 + lsrs r1, 25 + ldrb r0, [r2, 0xB] + lsls r0, 27 + lsrs r0, 27 + cmp r1, r0 + bne _0807075E + adds r0, r4, 0 + bl sub_80709B4 + ldrb r0, [r4, 0x4] + lsls r0, 31 + cmp r0, 0 + beq _08070780 +_0807075E: + ldrb r0, [r4, 0x8] + cmp r0, 0 + bne _08070774 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8070790 + b _08070778 + .align 2, 0 +_08070770: .4byte gUnknown_20379F8 +_08070774: + subs r0, 0x1 + strb r0, [r4, 0x8] +_08070778: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80708F4 +_08070780: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _08070722 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8070718 + + thumb_func_start sub_8070790 +sub_8070790: @ 8070790 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + mov r8, r1 + movs r6, 0 + ldrh r1, [r4, 0x6] + lsls r1, 20 + lsrs r1, 25 + ldr r3, [r4] + ldrb r0, [r3, 0x9] + lsls r2, r0, 25 + lsrs r0, r2, 27 + adds r5, r1, 0 + muls r5, r0 + ldrb r1, [r3, 0x8] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0807082C + lsrs r0, r2, 27 + cmp r6, r0 + bcs _08070878 + ldr r0, _0807081C @ =gUnknown_20371F8 + mov r12, r0 + ldr r7, _08070820 @ =gUnknown_20375F8 +_080707C4: + ldr r0, [r4, 0x4] + lsls r0, 11 + lsrs r0, 22 + lsls r0, 1 + add r0, r12 + ldr r1, [r3, 0x4] + lsls r2, r5, 1 + adds r1, r2, r1 + ldrh r1, [r1] + strh r1, [r0] + ldr r0, [r4, 0x4] + lsls r0, 11 + lsrs r0, 22 + lsls r0, 1 + adds r0, r7 + ldr r1, [r4] + ldr r1, [r1, 0x4] + adds r2, r1 + ldrh r1, [r2] + strh r1, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, [r4, 0x4] + lsls r1, r2, 11 + lsrs r1, 22 + adds r1, 0x1 + ldr r0, _08070824 @ =0x000003ff + ands r1, r0 + lsls r1, 11 + ldr r0, _08070828 @ =0xffe007ff + ands r0, r2 + orrs r0, r1 + str r0, [r4, 0x4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r3, [r4] + ldrb r0, [r3, 0x9] + lsls r0, 25 + lsrs r0, 27 + cmp r6, r0 + bcc _080707C4 + b _08070878 + .align 2, 0 +_0807081C: .4byte gUnknown_20371F8 +_08070820: .4byte gUnknown_20375F8 +_08070824: .4byte 0x000003ff +_08070828: .4byte 0xffe007ff +_0807082C: + lsrs r0, r2, 27 + cmp r6, r0 + bcs _08070878 + ldr r3, _080708E4 @ =gUnknown_20375F8 +_08070834: + ldr r1, [r4, 0x4] + lsls r1, 11 + lsrs r1, 22 + lsls r1, 1 + adds r1, r3 + ldr r0, [r4] + ldr r2, [r0, 0x4] + lsls r0, r5, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, [r4, 0x4] + lsls r1, r2, 11 + lsrs r1, 22 + adds r1, 0x1 + ldr r0, _080708E8 @ =0x000003ff + ands r1, r0 + lsls r1, 11 + ldr r0, _080708EC @ =0xffe007ff + ands r0, r2 + orrs r0, r1 + str r0, [r4, 0x4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [r4] + ldrb r0, [r0, 0x9] + lsls r0, 25 + lsrs r0, 27 + cmp r6, r0 + bcc _08070834 +_08070878: + ldrh r0, [r4, 0x4] + lsls r0, 21 + lsrs r0, 23 + lsls r0, 11 + ldr r1, [r4, 0x4] + ldr r2, _080708EC @ =0xffe007ff + ands r1, r2 + orrs r1, r0 + str r1, [r4, 0x4] + ldr r3, [r4] + ldrb r0, [r3, 0xA] + strb r0, [r4, 0x8] + ldrh r2, [r4, 0x6] + lsls r0, r2, 20 + lsrs r0, 25 + adds r0, 0x1 + movs r1, 0x7F + ands r0, r1 + lsls r0, 5 + ldr r5, _080708F0 @ =0xfffff01f + adds r1, r5, 0 + ands r1, r2 + orrs r1, r0 + strh r1, [r4, 0x6] + lsls r1, 20 + lsrs r1, 25 + ldrb r0, [r3, 0xB] + lsls r0, 27 + lsrs r0, 27 + cmp r1, r0 + blt _080708C8 + ldrb r0, [r4, 0x9] + cmp r0, 0 + beq _080708C0 + subs r0, 0x1 + strb r0, [r4, 0x9] +_080708C0: + ldrh r1, [r4, 0x6] + adds r0, r5, 0 + ands r0, r1 + strh r0, [r4, 0x6] +_080708C8: + ldrh r0, [r4, 0x4] + lsls r0, 21 + lsrs r0, 27 + movs r1, 0x1 + lsls r1, r0 + mov r2, r8 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080708E4: .4byte gUnknown_20375F8 +_080708E8: .4byte 0x000003ff +_080708EC: .4byte 0xffe007ff +_080708F0: .4byte 0xfffff01f + thumb_func_end sub_8070790 + + thumb_func_start sub_80708F4 +sub_80708F4: @ 80708F4 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r3, _0807094C @ =gUnknown_2037AB8 + ldrb r1, [r3, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080709A8 + ldrh r0, [r4, 0x4] + lsls r0, 21 + lsrs r6, r0, 23 + asrs r1, r6, 4 + movs r5, 0x1 + adds r0, r5, 0 + lsls r0, r1 + ldr r1, [r3] + ands r0, r1 + cmp r0, 0 + beq _080709A8 + ldr r2, [r4] + ldrb r1, [r2, 0x8] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _08070950 + ldrb r1, [r3, 0x4] + lsls r1, 26 + ldrb r0, [r3, 0x8] + lsls r0, 26 + cmp r1, r0 + beq _080709A8 + adds r0, r6, 0 + ldrb r1, [r2, 0x9] + lsls r1, 25 + lsrs r1, 27 + ldrh r2, [r3, 0x4] + lsls r2, 21 + lsrs r2, 27 + ldrh r3, [r3, 0x6] + lsls r3, 17 + lsrs r3, 17 + bl sub_8045274 + b _080709A8 + .align 2, 0 +_0807094C: .4byte gUnknown_2037AB8 +_08070950: + ldrb r1, [r3, 0x4] + movs r0, 0x3F + ands r0, r1 + cmp r0, 0 + bne _080709A8 + ldrb r0, [r4, 0x8] + ldrb r1, [r2, 0xA] + cmp r0, r1 + beq _080709A8 + ldrh r0, [r4, 0x6] + lsls r0, 20 + lsrs r0, 25 + ldrb r1, [r2, 0x9] + lsls r1, 25 + lsrs r2, r1, 27 + adds r5, r0, 0 + muls r5, r2 + movs r3, 0 + adds r1, r2, 0 + cmp r3, r1 + bcs _080709A8 + ldr r6, _080709B0 @ =gUnknown_20375F8 +_0807097C: + ldrh r1, [r4, 0x4] + lsls r1, 21 + lsrs r1, 23 + adds r1, r3 + lsls r1, 1 + adds r1, r6 + ldr r2, [r4] + adds r0, r5, r3 + ldr r2, [r2, 0x4] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, [r4] + ldrb r0, [r0, 0x9] + lsls r0, 25 + lsrs r0, 27 + cmp r3, r0 + bcc _0807097C +_080709A8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080709B0: .4byte gUnknown_20375F8 + thumb_func_end sub_80708F4 + + thumb_func_start sub_80709B4 +sub_80709B4: @ 80709B4 + push {lr} + adds r3, r0, 0 + ldrb r0, [r3, 0x9] + cmp r0, 0 + bne _08070A04 + ldr r2, [r3] + ldrb r0, [r2, 0xB] + lsrs r0, 5 + cmp r0, 0 + bne _080709F4 + ldrh r1, [r3, 0x6] + ldr r0, _080709EC @ =0xfffff01f + ands r0, r1 + strh r0, [r3, 0x6] + ldrb r0, [r2, 0xA] + strb r0, [r3, 0x8] + ldrb r0, [r2, 0xC] + strb r0, [r3, 0x9] + ldrh r0, [r3, 0x4] + lsls r0, 21 + lsrs r0, 23 + lsls r0, 11 + ldr r1, [r3, 0x4] + ldr r2, _080709F0 @ =0xffe007ff + ands r1, r2 + orrs r1, r0 + str r1, [r3, 0x4] + b _08070A08 + .align 2, 0 +_080709EC: .4byte 0xfffff01f +_080709F0: .4byte 0xffe007ff +_080709F4: + cmp r0, 0 + blt _08070A08 + cmp r0, 0x2 + bgt _08070A08 + ldrh r0, [r2] + bl sub_8070A0C + b _08070A08 +_08070A04: + subs r0, 0x1 + strb r0, [r3, 0x9] +_08070A08: + pop {r0} + bx r0 + thumb_func_end sub_80709B4 + + thumb_func_start sub_8070A0C +sub_8070A0C: @ 8070A0C + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8070B58 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _08070A22 + bl sub_8070A28 +_08070A22: + pop {r0} + bx r0 + thumb_func_end sub_8070A0C + + thumb_func_start sub_8070A28 +sub_8070A28: @ 8070A28 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08070A70 @ =gUnknown_20379F8 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldr r0, _08070A74 @ =gUnknown_83AC960 + str r0, [r1] + ldrb r2, [r1, 0x4] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x4] + ldrh r2, [r1, 0x4] + ldr r0, _08070A78 @ =0xfffff803 + ands r0, r2 + strh r0, [r1, 0x4] + ldr r0, [r1, 0x4] + ldr r2, _08070A7C @ =0xffe007ff + ands r0, r2 + str r0, [r1, 0x4] + ldrh r2, [r1, 0x6] + ldr r0, _08070A80 @ =0xfffff01f + ands r0, r2 + strh r0, [r1, 0x6] + ldrb r2, [r1, 0x4] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x4] + movs r0, 0 + strb r0, [r1, 0x8] + strb r0, [r1, 0x9] + bx lr + .align 2, 0 +_08070A70: .4byte gUnknown_20379F8 +_08070A74: .4byte gUnknown_83AC960 +_08070A78: .4byte 0xfffff803 +_08070A7C: .4byte 0xffe007ff +_08070A80: .4byte 0xfffff01f + thumb_func_end sub_8070A28 + + thumb_func_start sub_8070A84 +sub_8070A84: @ 8070A84 + ldr r2, _08070AEC @ =gUnknown_2037AB8 + movs r0, 0 + str r0, [r2] + subs r0, 0x40 + ldrb r1, [r2, 0x4] + ands r0, r1 + strb r0, [r2, 0x4] + ldrh r1, [r2, 0x4] + ldr r0, _08070AF0 @ =0xfffff83f + ands r0, r1 + strh r0, [r2, 0x4] + ldrb r1, [r2, 0x5] + movs r0, 0x7 + ands r0, r1 + strb r0, [r2, 0x5] + ldrh r1, [r2, 0x6] + ldr r0, _08070AF4 @ =0xffff8000 + ands r0, r1 + strh r0, [r2, 0x6] + ldrb r1, [r2, 0x7] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x7] + movs r0, 0 + strb r0, [r2, 0x8] + ldrb r1, [r2, 0x9] + movs r3, 0x5 + negs r3, r3 + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x9 + negs r1, r1 + ands r0, r1 + strb r0, [r2, 0x9] + ldrb r1, [r2, 0xA] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0xA] + ldr r0, [r2, 0x8] + ldr r1, _08070AF8 @ =0xfffe0fff + ands r0, r1 + str r0, [r2, 0x8] + ldrb r0, [r2, 0xA] + ands r3, r0 + movs r0, 0x79 + negs r0, r0 + ands r3, r0 + movs r0, 0x10 + orrs r3, r0 + strb r3, [r2, 0xA] + bx lr + .align 2, 0 +_08070AEC: .4byte gUnknown_2037AB8 +_08070AF0: .4byte 0xfffff83f +_08070AF4: .4byte 0xffff8000 +_08070AF8: .4byte 0xfffe0fff + thumb_func_end sub_8070A84 + + thumb_func_start sub_8070AFC +sub_8070AFC: @ 8070AFC + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8070B58 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x10 + beq _08070B20 + ldr r1, _08070B24 @ =gUnknown_20379F8 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x4] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0, 0x4] +_08070B20: + pop {r0} + bx r0 + .align 2, 0 +_08070B24: .4byte gUnknown_20379F8 + thumb_func_end sub_8070AFC + + thumb_func_start sub_8070B28 +sub_8070B28: @ 8070B28 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8070B58 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x10 + beq _08070B4E + ldr r0, _08070B54 @ =gUnknown_20379F8 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1, 0x4] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x4] +_08070B4E: + pop {r0} + bx r0 + .align 2, 0 +_08070B54: .4byte gUnknown_20379F8 + thumb_func_end sub_8070B28 + + thumb_func_start sub_8070B58 +sub_8070B58: @ 8070B58 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0 + ldr r3, _08070B78 @ =gUnknown_20379F8 +_08070B62: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, r2 + bne _08070B7C + adds r0, r1, 0 + b _08070B88 + .align 2, 0 +_08070B78: .4byte gUnknown_20379F8 +_08070B7C: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _08070B62 + movs r0, 0x10 +_08070B88: + pop {r1} + bx r1 + thumb_func_end sub_8070B58 + + thumb_func_start sub_8070B8C +sub_8070B8C: @ 8070B8C + push {r4-r7,lr} + ldr r4, _08070BA0 @ =gUnknown_2037AB8 + ldrb r1, [r4, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08070BA4 + movs r0, 0 + b _08070CC0 + .align 2, 0 +_08070BA0: .4byte gUnknown_2037AB8 +_08070BA4: + bl sub_8071470 + lsls r0, 24 + cmp r0, 0 + beq _08070BB2 + ldrb r0, [r4, 0x7] + b _08070CBE +_08070BB2: + ldrb r1, [r4, 0xA] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08070BE6 + ldrb r2, [r4, 0x4] + lsls r1, r2, 26 + ldrb r0, [r4, 0x8] + lsls r0, 26 + cmp r1, r0 + bcs _08070BDE + lsrs r0, r1, 26 + adds r0, 0x1 + movs r1, 0x3F + ands r0, r1 + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x4] + movs r0, 0x2 + b _08070CC0 +_08070BDE: + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + strb r0, [r4, 0x4] +_08070BE6: + movs r5, 0 + ldr r2, _08070BFC @ =gUnknown_2037AB8 + ldrb r1, [r2, 0xA] + movs r0, 0x4 + ands r0, r1 + adds r7, r2, 0 + cmp r0, 0 + bne _08070C00 + ldrh r4, [r7] + b _08070C06 + .align 2, 0 +_08070BFC: .4byte gUnknown_2037AB8 +_08070C00: + ldrh r4, [r7, 0x2] + movs r5, 0x80 + lsls r5, 1 +_08070C06: + cmp r4, 0 + beq _08070C38 + ldr r7, _08070C74 @ =gUnknown_2037AB8 + adds r6, r7, 0 +_08070C0E: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08070C2A + ldrh r2, [r6, 0x4] + lsls r2, 21 + lsrs r2, 27 + ldrh r3, [r6, 0x6] + lsls r3, 17 + lsrs r3, 17 + adds r0, r5, 0 + movs r1, 0x10 + bl sub_8045274 +_08070C2A: + lsrs r4, 1 + adds r0, r5, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0 + bne _08070C0E +_08070C38: + ldrb r2, [r7, 0xA] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r4, 0x5 + negs r4, r4 + ands r4, r2 + orrs r4, r1 + strb r4, [r7, 0xA] + movs r0, 0x4 + ands r0, r4 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + bne _08070CBC + ldrh r6, [r7, 0x4] + lsls r2, r6, 21 + ldrb r0, [r7, 0x5] + lsls r5, r0, 24 + lsrs r1, r2, 27 + lsrs r0, r5, 27 + cmp r1, r0 + bne _08070C78 + str r3, [r7] + movs r0, 0x2 + orrs r4, r0 + strb r4, [r7, 0xA] + b _08070CBC + .align 2, 0 +_08070C74: .4byte gUnknown_2037AB8 +_08070C78: + ldrb r1, [r7, 0x8] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08070C94 + lsrs r3, r2, 27 + lsls r0, r4, 25 + lsrs r0, 28 + adds r3, r0, r3 + lsrs r0, r5, 27 + cmp r3, r0 + ble _08070CAA + adds r3, r0, 0 + b _08070CAA +_08070C94: + lsrs r3, r2, 27 + lsls r0, r4, 25 + lsrs r0, 28 + subs r0, r3, r0 + lsls r0, 24 + lsrs r3, r0, 24 + asrs r0, 24 + lsrs r1, r5, 27 + cmp r0, r1 + bge _08070CAA + adds r3, r1, 0 +_08070CAA: + lsls r0, r3, 24 + asrs r0, 24 + movs r1, 0x1F + ands r0, r1 + lsls r0, 6 + ldr r1, _08070CC8 @ =0xfffff83f + ands r1, r6 + orrs r1, r0 + strh r1, [r7, 0x4] +_08070CBC: + ldrb r0, [r7, 0x7] +_08070CBE: + lsrs r0, 7 +_08070CC0: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08070CC8: .4byte 0xfffff83f + thumb_func_end sub_8070B8C + + thumb_func_start sub_8070CCC +sub_8070CCC: @ 8070CCC + push {r4-r7,lr} + adds r1, r0, 0 + movs r3, 0 + cmp r1, 0 + beq _08070D0A + ldr r7, _08070D10 @ =gUnknown_20375F8 +_08070CD8: + movs r0, 0x1 + ands r0, r1 + lsrs r4, r1, 1 + adds r5, r3, 0 + adds r5, 0x10 + cmp r0, 0 + beq _08070D00 + movs r2, 0 + adds r6, r7, 0 +_08070CEA: + adds r0, r3, r2 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r0] + mvns r1, r1 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _08070CEA +_08070D00: + adds r1, r4, 0 + lsls r0, r5, 16 + lsrs r3, r0, 16 + cmp r1, 0 + bne _08070CD8 +_08070D0A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08070D10: .4byte gUnknown_20375F8 + thumb_func_end sub_8070CCC + + thumb_func_start sub_8070D14 +sub_8070D14: @ 8070D14 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x4] + movs r0, 0 + mov r9, r0 + cmp r4, 0 + beq _08070DD0 + lsls r1, 24 + str r1, [sp, 0x8] +_08070D3E: + movs r0, 0x1 + ands r0, r4 + lsrs r4, 1 + str r4, [sp, 0xC] + movs r1, 0x10 + add r1, r9 + mov r10, r1 + cmp r0, 0 + beq _08070DC2 + movs r4, 0 + ldr r2, _08070DE0 @ =gUnknown_20375F8 + mov r8, r2 + ldr r1, [sp] + lsls r0, r1, 24 + ldr r2, [sp, 0x4] + lsls r1, r2, 24 + ldr r2, [sp, 0x8] + asrs r2, 24 + mov r12, r2 + movs r5, 0x1F + asrs r7, r0, 24 + asrs r6, r1, 24 +_08070D6A: + mov r0, r9 + adds r2, r0, r4 + lsls r2, 1 + add r2, r8 + ldr r1, [r2] + lsls r1, 27 + lsrs r1, 27 + add r1, r12 + ands r1, r5 + ldrb r3, [r2] + movs r0, 0x20 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r2] + lsls r1, 22 + lsrs r1, 27 + adds r1, r7 + movs r0, 0x1F + ands r1, r0 + lsls r1, 5 + ldrh r3, [r2] + ldr r0, _08070DE4 @ =0xfffffc1f + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + ldr r1, [r2] + lsls r1, 17 + lsrs r1, 27 + adds r1, r6 + ands r1, r5 + lsls r1, 2 + ldrb r3, [r2, 0x1] + movs r0, 0x7D + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08070D6A +_08070DC2: + ldr r4, [sp, 0xC] + mov r1, r10 + lsls r0, r1, 16 + lsrs r0, 16 + mov r9, r0 + cmp r4, 0 + bne _08070D3E +_08070DD0: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08070DE0: .4byte gUnknown_20375F8 +_08070DE4: .4byte 0xfffffc1f + thumb_func_end sub_8070D14 + + thumb_func_start sub_8070DE8 +sub_8070DE8: @ 8070DE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r1, r0, 0 + movs r3, 0 + cmp r1, 0 + beq _08070E32 + ldr r0, _08070E3C @ =gUnknown_20375F8 + mov r8, r0 + ldr r0, _08070E40 @ =gUnknown_20371F8 + mov r12, r0 +_08070DFE: + movs r0, 0x1 + ands r0, r1 + lsrs r4, r1, 1 + adds r5, r3, 0 + adds r5, 0x10 + cmp r0, 0 + beq _08070E28 + movs r2, 0 + mov r7, r8 + mov r6, r12 +_08070E12: + adds r0, r3, r2 + lsls r0, 1 + adds r1, r0, r7 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _08070E12 +_08070E28: + adds r1, r4, 0 + lsls r0, r5, 16 + lsrs r3, r0, 16 + cmp r1, 0 + bne _08070DFE +_08070E32: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08070E3C: .4byte gUnknown_20375F8 +_08070E40: .4byte gUnknown_20371F8 + thumb_func_end sub_8070DE8 + + thumb_func_start sub_8070E44 +sub_8070E44: @ 8070E44 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08070E64 @ =gUnknown_2037AB8 + ldrb r2, [r3, 0xA] + movs r1, 0x79 + negs r1, r1 + ands r1, r2 + movs r2, 0x10 + orrs r1, r2 + strb r1, [r3, 0xA] + bl sub_8070E68 + pop {r0} + bx r0 + .align 2, 0 +_08070E64: .4byte gUnknown_2037AB8 + thumb_func_end sub_8070E44 + + thumb_func_start sub_8070E68 +sub_8070E68: @ 8070E68 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r2, _08070EDC @ =gUnknown_2037AB8 + ldrh r0, [r2, 0x4] + movs r3, 0xF8 + lsls r3, 3 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2, 0x4] + movs r1, 0x3F + ands r1, r4 + ldrb r3, [r2, 0x8] + movs r0, 0x40 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x8] + ldrb r0, [r2, 0x7] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x7] + ldrb r1, [r2, 0x9] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x9] + cmp r4, 0x2 + bne _08070EBA + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _08070EE0 @ =gUnknown_20375F8 + ldr r2, _08070EE4 @ =0x01000200 + mov r0, sp + bl CpuSet +_08070EBA: + cmp r4, 0 + bne _08070ED0 + mov r0, sp + adds r0, 0x2 + ldr r2, _08070EE8 @ =0x00007fff + adds r1, r2, 0 + strh r1, [r0] + ldr r1, _08070EE0 @ =gUnknown_20375F8 + ldr r2, _08070EE4 @ =0x01000200 + bl CpuSet +_08070ED0: + bl sub_80704D0 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08070EDC: .4byte gUnknown_2037AB8 +_08070EE0: .4byte gUnknown_20375F8 +_08070EE4: .4byte 0x01000200 +_08070EE8: .4byte 0x00007fff + thumb_func_end sub_8070E68 + + thumb_func_start sub_8070EEC +sub_8070EEC: @ 8070EEC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r4, _08070F08 @ =gUnknown_2037AB8 + ldrb r1, [r4, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08070F0C + movs r0, 0 + b _08071246 + .align 2, 0 +_08070F08: .4byte gUnknown_2037AB8 +_08070F0C: + bl sub_8071470 + lsls r0, 24 + cmp r0, 0 + beq _08070F1A + ldrb r0, [r4, 0x7] + b _08071244 +_08070F1A: + ldrb r1, [r4, 0xA] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08070F30 + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 2 + mov r10, r0 + b _08070F38 +_08070F30: + movs r2, 0 + movs r1, 0x80 + lsls r1, 1 + mov r10, r1 +_08070F38: + ldr r1, _08070F50 @ =gUnknown_2037AB8 + ldrb r0, [r1, 0x8] + lsls r0, 26 + lsrs r0, 26 + cmp r0, 0x1 + beq _08070FF8 + cmp r0, 0x1 + bgt _08070F54 + cmp r0, 0 + beq _08070F62 + b _08071148 + .align 2, 0 +_08070F50: .4byte gUnknown_2037AB8 +_08070F54: + cmp r0, 0x2 + bne _08070F5A + b _0807105C +_08070F5A: + cmp r0, 0x3 + bne _08070F60 + b _080710E4 +_08070F60: + b _08071148 +_08070F62: + adds r7, r2, 0 + cmp r7, r10 + bcc _08070F6A + b _08071148 +_08070F6A: + lsls r2, r7, 1 + ldr r0, _08070FF0 @ =gUnknown_20371F8 + adds r0, r2, r0 + ldr r1, [r0] + lsls r3, r1, 27 + lsls r0, r1, 22 + lsrs r0, 27 + mov r12, r0 + lsls r1, 17 + lsrs r1, 27 + mov r8, r1 + ldr r0, _08070FF4 @ =gUnknown_20375F8 + adds r2, r0 + mov r9, r2 + ldr r1, [r2] + lsls r2, r1, 27 + lsrs r2, 3 + movs r4, 0xFE + lsls r4, 24 + adds r2, r4 + lsls r0, r1, 22 + lsrs r0, 27 + subs r0, 0x2 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 17 + lsrs r1, 27 + subs r1, 0x2 + lsls r1, 24 + lsrs r4, r1, 24 + lsrs r6, r2, 24 + asrs r2, 24 + lsrs r3, 3 + asrs r0, r3, 24 + cmp r2, r0 + bge _08070FB4 + lsrs r6, r3, 24 +_08070FB4: + lsls r0, r5, 24 + asrs r0, 24 + mov r2, r12 + lsls r1, r2, 24 + cmp r0, r12 + bge _08070FC2 + lsrs r5, r1, 24 +_08070FC2: + lsls r0, r4, 24 + asrs r0, 24 + mov r3, r8 + lsls r1, r3, 24 + cmp r0, r8 + bge _08070FD0 + lsrs r4, r1, 24 +_08070FD0: + lsls r1, r6, 24 + asrs r1, 24 + lsls r0, r5, 24 + asrs r0, 19 + orrs r1, r0 + lsls r0, r4, 24 + asrs r0, 14 + orrs r1, r0 + mov r4, r9 + strh r1, [r4] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, r10 + bcc _08070F6A + b _08071148 + .align 2, 0 +_08070FF0: .4byte gUnknown_20371F8 +_08070FF4: .4byte gUnknown_20375F8 +_08070FF8: + adds r7, r2, 0 + cmp r7, r10 + bcc _08071000 + b _08071148 +_08071000: + lsls r1, r7, 1 + ldr r0, _08071058 @ =gUnknown_20375F8 + adds r2, r1, r0 + ldr r1, [r2] + lsls r0, r1, 27 + lsrs r0, 3 + movs r3, 0x80 + lsls r3, 18 + adds r0, r3 + lsrs r6, r0, 24 + lsls r0, r1, 22 + lsrs r0, 27 + adds r5, r0, 0x2 + lsls r1, 17 + lsrs r1, 27 + adds r4, r1, 0x2 + cmp r6, 0x1F + ble _08071026 + movs r6, 0x1F +_08071026: + lsls r0, r5, 24 + asrs r0, 24 + cmp r0, 0x1F + ble _08071030 + movs r5, 0x1F +_08071030: + lsls r0, r4, 24 + asrs r0, 24 + cmp r0, 0x1F + ble _0807103A + movs r4, 0x1F +_0807103A: + lsls r1, r6, 24 + asrs r1, 24 + lsls r0, r5, 24 + asrs r0, 19 + orrs r1, r0 + lsls r0, r4, 24 + asrs r0, 14 + orrs r1, r0 + strh r1, [r2] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, r10 + bcc _08071000 + b _08071148 + .align 2, 0 +_08071058: .4byte gUnknown_20375F8 +_0807105C: + adds r7, r2, 0 + cmp r7, r10 + bcs _08071148 +_08071062: + lsls r2, r7, 1 + ldr r0, _080710DC @ =gUnknown_20371F8 + adds r0, r2, r0 + ldr r1, [r0] + lsls r3, r1, 27 + lsls r0, r1, 22 + lsrs r0, 27 + mov r12, r0 + lsls r1, 17 + lsrs r1, 27 + mov r8, r1 + ldr r0, _080710E0 @ =gUnknown_20375F8 + adds r2, r0 + ldr r1, [r2] + lsls r0, r1, 27 + lsrs r0, 3 + movs r4, 0x80 + lsls r4, 18 + adds r0, r4 + lsrs r6, r0, 24 + lsls r0, r1, 22 + lsrs r0, 27 + adds r5, r0, 0x2 + lsls r1, 17 + lsrs r1, 27 + adds r4, r1, 0x2 + lsrs r3, 3 + asrs r0, r3, 24 + cmp r6, r0 + ble _080710A0 + lsrs r6, r3, 24 +_080710A0: + lsls r0, r5, 24 + asrs r0, 24 + mov r3, r12 + lsls r1, r3, 24 + cmp r0, r12 + ble _080710AE + lsrs r5, r1, 24 +_080710AE: + lsls r0, r4, 24 + asrs r0, 24 + mov r3, r8 + lsls r1, r3, 24 + cmp r0, r8 + ble _080710BC + lsrs r4, r1, 24 +_080710BC: + lsls r1, r6, 24 + asrs r1, 24 + lsls r0, r5, 24 + asrs r0, 19 + orrs r1, r0 + lsls r0, r4, 24 + asrs r0, 14 + orrs r1, r0 + strh r1, [r2] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, r10 + bcc _08071062 + b _08071148 + .align 2, 0 +_080710DC: .4byte gUnknown_20371F8 +_080710E0: .4byte gUnknown_20375F8 +_080710E4: + adds r7, r2, 0 + cmp r7, r10 + bcs _08071148 + ldr r4, _08071170 @ =gUnknown_20375F8 + mov r8, r4 +_080710EE: + lsls r0, r7, 1 + mov r1, r8 + adds r3, r0, r1 + ldr r1, [r3] + lsls r2, r1, 27 + lsrs r2, 3 + movs r4, 0xFE + lsls r4, 24 + adds r2, r4 + lsls r0, r1, 22 + lsrs r0, 27 + subs r0, 0x2 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 17 + lsrs r1, 27 + subs r1, 0x2 + lsls r1, 24 + lsrs r4, r1, 24 + lsrs r6, r2, 24 + cmp r2, 0 + bge _0807111C + movs r6, 0 +_0807111C: + lsls r0, r5, 24 + cmp r0, 0 + bge _08071124 + movs r5, 0 +_08071124: + lsls r0, r4, 24 + cmp r0, 0 + bge _0807112C + movs r4, 0 +_0807112C: + lsls r1, r6, 24 + asrs r1, 24 + lsls r0, r5, 24 + asrs r0, 19 + orrs r1, r0 + lsls r0, r4, 24 + asrs r0, 14 + orrs r1, r0 + strh r1, [r3] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, r10 + bcc _080710EE +_08071148: + ldr r0, _08071174 @ =gUnknown_2037AB8 + ldrb r2, [r0, 0xA] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r3, 0x5 + negs r3, r3 + ands r3, r2 + orrs r3, r1 + ldr r1, _08071174 @ =gUnknown_2037AB8 + strb r3, [r1, 0xA] + movs r0, 0x4 + ands r0, r3 + cmp r0, 0 + beq _08071178 + ldrb r0, [r1, 0x7] + b _08071244 + .align 2, 0 +_08071170: .4byte gUnknown_20375F8 +_08071174: .4byte gUnknown_2037AB8 +_08071178: + ldr r2, _08071194 @ =gUnknown_2037AB8 + ldrh r4, [r2, 0x4] + lsls r5, r4, 21 + lsrs r0, r5, 27 + lsls r2, r3, 25 + lsrs r1, r2, 28 + subs r0, r1 + cmp r0, 0 + bge _0807119C + ldr r0, _08071198 @ =0xfffff83f + ands r0, r4 + ldr r3, _08071194 @ =gUnknown_2037AB8 + strh r0, [r3, 0x4] + b _080711B2 + .align 2, 0 +_08071194: .4byte gUnknown_2037AB8 +_08071198: .4byte 0xfffff83f +_0807119C: + lsrs r1, r5, 27 + lsrs r0, r2, 28 + subs r1, r0 + movs r0, 0x1F + ands r1, r0 + lsls r1, 6 + ldr r0, _080711D8 @ =0xfffff83f + ands r0, r4 + orrs r0, r1 + ldr r4, _080711DC @ =gUnknown_2037AB8 + strh r0, [r4, 0x4] +_080711B2: + ldr r1, _080711DC @ =gUnknown_2037AB8 + ldrh r0, [r1, 0x4] + movs r1, 0xF8 + lsls r1, 3 + ands r1, r0 + cmp r1, 0 + bne _08071240 + ldr r2, _080711DC @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + lsls r0, 26 + lsrs r0, 26 + cmp r0, 0x1 + beq _08071204 + cmp r0, 0x1 + bgt _080711E0 + cmp r0, 0 + beq _080711EA + b _0807122C + .align 2, 0 +_080711D8: .4byte 0xfffff83f +_080711DC: .4byte gUnknown_2037AB8 +_080711E0: + cmp r0, 0x2 + beq _080711EA + cmp r0, 0x3 + beq _08071220 + b _0807122C +_080711EA: + ldr r0, _080711F8 @ =gUnknown_20371F8 + ldr r1, _080711FC @ =gUnknown_20375F8 + ldr r2, _08071200 @ =0x04000100 + bl CpuSet + b _0807122C + .align 2, 0 +_080711F8: .4byte gUnknown_20371F8 +_080711FC: .4byte gUnknown_20375F8 +_08071200: .4byte 0x04000100 +_08071204: + movs r0, 0x1 + negs r0, r0 + str r0, [sp] + ldr r1, _08071218 @ =gUnknown_20375F8 + ldr r2, _0807121C @ =0x05000100 + mov r0, sp + bl CpuSet + b _0807122C + .align 2, 0 +_08071218: .4byte gUnknown_20375F8 +_0807121C: .4byte 0x05000100 +_08071220: + str r1, [sp, 0x4] + add r0, sp, 0x4 + ldr r1, _08071258 @ =gUnknown_20375F8 + ldr r2, _0807125C @ =0x05000100 + bl CpuSet +_0807122C: + ldr r2, _08071260 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x9] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x9] + ldrb r0, [r2, 0xA] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0xA] +_08071240: + ldr r3, _08071260 @ =gUnknown_2037AB8 + ldrb r0, [r3, 0x7] +_08071244: + lsrs r0, 7 +_08071246: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08071258: .4byte gUnknown_20375F8 +_0807125C: .4byte 0x05000100 +_08071260: .4byte gUnknown_2037AB8 + thumb_func_end sub_8070EEC + + thumb_func_start sub_8071264 +sub_8071264: @ 8071264 + push {r4-r7,lr} + ldr r5, [sp, 0x14] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r7, _080712EC @ =gUnknown_2037AB8 + str r0, [r7] + movs r0, 0x3F + ands r1, r0 + ldrb r4, [r7, 0x4] + movs r6, 0x40 + negs r6, r6 + adds r0, r6, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r7, 0x4] + ldrb r0, [r7, 0x8] + ands r6, r0 + orrs r6, r1 + strb r6, [r7, 0x8] + movs r0, 0x1F + adds r1, r2, 0 + ands r1, r0 + lsls r1, 6 + ldrh r4, [r7, 0x4] + ldr r0, _080712F0 @ =0xfffff83f + ands r0, r4 + orrs r0, r1 + strh r0, [r7, 0x4] + lsls r4, r3, 3 + ldrb r1, [r7, 0x5] + movs r0, 0x7 + ands r0, r1 + orrs r0, r4 + strb r0, [r7, 0x5] + ldrb r0, [r7, 0x7] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r7, 0x7] + ldrb r1, [r7, 0x9] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + movs r1, 0x1 + ands r5, r1 + lsls r5, 2 + subs r1, 0x6 + ands r0, r1 + orrs r0, r5 + subs r1, 0x4 + ands r0, r1 + strb r0, [r7, 0x9] + cmp r2, r3 + bcs _080712F4 + movs r0, 0x41 + negs r0, r0 + ands r6, r0 + b _080712F8 + .align 2, 0 +_080712EC: .4byte gUnknown_2037AB8 +_080712F0: .4byte 0xfffff83f +_080712F4: + movs r0, 0x40 + orrs r6, r0 +_080712F8: + strb r6, [r7, 0x8] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8071264 + + thumb_func_start sub_8071300 +sub_8071300: @ 8071300 + push {r4-r7,lr} + ldr r2, _08071314 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x7] + movs r0, 0x80 + ands r0, r1 + adds r4, r2, 0 + cmp r0, 0 + bne _08071318 + movs r0, 0 + b _08071410 + .align 2, 0 +_08071314: .4byte gUnknown_2037AB8 +_08071318: + ldrb r2, [r4, 0x4] + lsls r1, r2, 26 + ldrb r3, [r4, 0x8] + lsls r0, r3, 26 + cmp r1, r0 + bcs _0807133A + lsrs r0, r1, 26 + adds r0, 0x1 + movs r1, 0x3F + ands r0, r1 + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x4] + movs r0, 0x2 + b _08071410 +_0807133A: + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + strb r0, [r4, 0x4] + movs r0, 0x40 + ands r0, r3 + cmp r0, 0 + bne _08071398 + ldrh r1, [r4, 0x4] + lsls r0, r1, 21 + lsrs r0, 27 + adds r0, 0x1 + movs r7, 0x1F + ands r0, r7 + lsls r0, 6 + ldr r6, _08071394 @ =0xfffff83f + adds r3, r6, 0 + ands r3, r1 + orrs r3, r0 + strh r3, [r4, 0x4] + lsls r5, r3, 21 + ldrb r0, [r4, 0x5] + lsrs r1, r5, 27 + lsrs r0, 3 + cmp r1, r0 + bls _080713E4 + ldrb r2, [r4, 0x9] + lsls r1, r2, 28 + lsrs r1, 31 + adds r1, 0x1 + movs r0, 0x1 + ands r1, r0 + lsls r1, 3 + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x9] + lsrs r0, r5, 27 + subs r0, 0x1 + ands r0, r7 + lsls r0, 6 + ands r3, r6 + b _080713E0 + .align 2, 0 +_08071394: .4byte 0xfffff83f +_08071398: + ldrh r2, [r4, 0x4] + lsls r1, r2, 21 + lsrs r0, r1, 27 + subs r0, 0x1 + movs r6, 0x1F + ands r0, r6 + lsls r0, 6 + ldr r5, _08071418 @ =0xfffff83f + adds r3, r5, 0 + ands r3, r2 + orrs r3, r0 + strh r3, [r4, 0x4] + lsrs r1, 27 + subs r1, 0x1 + ldrb r0, [r4, 0x5] + lsrs r0, 3 + cmp r1, r0 + bge _080713E4 + ldrb r2, [r4, 0x9] + lsls r1, r2, 28 + lsrs r1, 31 + adds r1, 0x1 + movs r0, 0x1 + ands r1, r0 + lsls r1, 3 + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x9] + lsls r0, r3, 21 + lsrs r0, 27 + adds r0, 0x1 + ands r0, r6 + lsls r0, 6 + ands r3, r5 +_080713E0: + orrs r3, r0 + strh r3, [r4, 0x4] +_080713E4: + ldrb r1, [r4, 0x9] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0807140C + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08071402 + movs r0, 0 + str r0, [r4] + ldrh r1, [r4, 0x4] + ldr r0, _08071418 @ =0xfffff83f + ands r0, r1 + strh r0, [r4, 0x4] +_08071402: + ldrb r1, [r4, 0x9] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x9] +_0807140C: + ldrb r0, [r4, 0x7] + lsrs r0, 7 +_08071410: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08071418: .4byte 0xfffff83f + thumb_func_end sub_8071300 + + thumb_func_start sub_807141C +sub_807141C: @ 807141C + push {r4,lr} + ldr r4, _08071468 @ =gUnknown_2037AB8 + ldrh r1, [r4] + movs r0, 0x50 + bl sub_8000A38 + ldrh r1, [r4, 0x4] + lsls r1, 21 + lsrs r1, 27 + movs r0, 0x54 + bl sub_8000A38 + ldrb r1, [r4, 0x9] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08071460 + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + negs r1, r1 + ands r0, r1 + strb r0, [r4, 0x9] + movs r0, 0 + str r0, [r4] + ldrh r1, [r4, 0x4] + ldr r0, _0807146C @ =0xfffff83f + ands r0, r1 + strh r0, [r4, 0x4] + ldrb r1, [r4, 0x7] + movs r0, 0x7F + ands r0, r1 + strb r0, [r4, 0x7] +_08071460: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071468: .4byte gUnknown_2037AB8 +_0807146C: .4byte 0xfffff83f + thumb_func_end sub_807141C + + thumb_func_start sub_8071470 +sub_8071470: @ 8071470 + push {r4,lr} + ldr r3, _080714A8 @ =gUnknown_2037AB8 + ldrb r4, [r3, 0xA] + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _080714CC + ldr r2, [r3, 0x8] + movs r0, 0xF8 + lsls r0, 9 + ands r0, r2 + movs r1, 0x80 + lsls r1, 7 + cmp r0, r1 + bne _080714B0 + ldrb r1, [r3, 0x7] + movs r0, 0x7F + ands r0, r1 + strb r0, [r3, 0x7] + movs r0, 0x3 + negs r0, r0 + ands r0, r4 + strb r0, [r3, 0xA] + ldr r0, [r3, 0x8] + ldr r1, _080714AC @ =0xfffe0fff + ands r0, r1 + str r0, [r3, 0x8] + b _080714C4 + .align 2, 0 +_080714A8: .4byte gUnknown_2037AB8 +_080714AC: .4byte 0xfffe0fff +_080714B0: + lsls r0, r2, 15 + lsrs r0, 27 + adds r0, 0x1 + movs r1, 0x1F + ands r0, r1 + lsls r0, 12 + ldr r1, _080714C8 @ =0xfffe0fff + ands r1, r2 + orrs r1, r0 + str r1, [r3, 0x8] +_080714C4: + movs r0, 0x1 + b _080714CE + .align 2, 0 +_080714C8: .4byte 0xfffe0fff +_080714CC: + movs r0, 0 +_080714CE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8071470 + + thumb_func_start sub_80714D4 +sub_80714D4: @ 80714D4 + push {r4-r7,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 16 + lsrs r6, r2, 16 + movs r5, 0 + cmp r4, 0 + beq _08071508 +_080714E6: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080714FA + adds r0, r5, 0 + movs r1, 0x10 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_8045274 +_080714FA: + lsrs r4, 1 + adds r0, r5, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0 + bne _080714E6 +_08071508: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80714D4 + + thumb_func_start sub_8071510 +sub_8071510: @ 8071510 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _0807153C @ =gUnknown_20371F8 + ldr r1, _08071540 @ =gUnknown_20375F8 + movs r2, 0x80 + lsls r2, 1 + bl CpuFastSet + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80714D4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807153C: .4byte gUnknown_20371F8 +_08071540: .4byte gUnknown_20375F8 + thumb_func_end sub_8071510 + + thumb_func_start sub_8071544 +sub_8071544: @ 8071544 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0 + beq _0807158C + movs r6, 0x1F + adds r5, r1, 0 +_08071554: + ldrh r1, [r4] + movs r2, 0x1F + ands r2, r1 + lsls r1, 16 + lsrs r3, r1, 21 + ands r3, r6 + lsrs r1, 26 + ands r1, r6 + movs r0, 0x4C + muls r2, r0 + movs r0, 0x97 + muls r0, r3 + adds r2, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r1 + adds r2, r0 + asrs r2, 8 + lsls r0, r2, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r4] + adds r4, 0x2 + subs r5, 0x1 + cmp r5, 0 + bne _08071554 +_0807158C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8071544 + + thumb_func_start sub_8071594 +sub_8071594: @ 8071594 + push {r4-r7,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0 + beq _080715E8 + movs r6, 0x1F + ldr r7, _080715F0 @ =gUnknown_83AC970 + adds r5, r1, 0 +_080715A6: + ldrh r1, [r4] + movs r2, 0x1F + ands r2, r1 + lsls r1, 16 + lsrs r3, r1, 21 + ands r3, r6 + lsrs r1, 26 + ands r1, r6 + movs r0, 0x4C + muls r2, r0 + movs r0, 0x97 + muls r0, r3 + adds r2, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r1 + adds r2, r0 + asrs r2, 8 + cmp r2, 0x1F + bls _080715D2 + movs r2, 0x1F +_080715D2: + adds r0, r2, r7 + ldrb r2, [r0] + lsls r0, r2, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r4] + adds r4, 0x2 + subs r5, 0x1 + cmp r5, 0 + bne _080715A6 +_080715E8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080715F0: .4byte gUnknown_83AC970 + thumb_func_end sub_8071594 + + thumb_func_start sub_80715F4 +sub_80715F4: @ 80715F4 + push {r4-r7,lr} + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0 + beq _08071656 + movs r7, 0x1F + adds r6, r1, 0 +_08071604: + ldrh r0, [r5] + movs r1, 0x1F + ands r1, r0 + lsls r0, 16 + lsrs r2, r0, 21 + ands r2, r7 + lsrs r3, r0, 26 + ands r3, r7 + movs r0, 0x4C + muls r1, r0 + movs r0, 0x97 + muls r0, r2 + adds r1, r0 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r3 + adds r1, r0 + asrs r1, 8 + ldr r0, _0807165C @ =0x00000133 + muls r0, r1 + lsls r0, 16 + lsrs r2, r0, 24 + lsls r0, r1, 24 + lsrs r4, r0, 24 + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 20 + lsrs r3, r0, 24 + cmp r2, 0x1F + ble _08071644 + movs r2, 0x1F +_08071644: + lsls r0, r3, 10 + lsls r1, r4, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r5] + adds r5, 0x2 + subs r6, 0x1 + cmp r6, 0 + bne _08071604 +_08071656: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807165C: .4byte 0x00000133 + thumb_func_end sub_80715F4 + + thumb_func_start sub_8071660 +sub_8071660: @ 8071660 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + ldr r0, [sp, 0x1C] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + lsls r3, 16 + lsrs r3, 16 + mov r8, r3 + lsls r0, 16 + lsrs r0, 16 + mov r12, r0 + cmp r1, 0 + beq _080716EC + movs r7, 0x1F + adds r6, r1, 0 +_0807168A: + ldrh r0, [r5] + movs r1, 0x1F + ands r1, r0 + lsls r0, 16 + lsrs r2, r0, 21 + ands r2, r7 + lsrs r3, r0, 26 + ands r3, r7 + movs r0, 0x4C + muls r1, r0 + movs r0, 0x97 + muls r0, r2 + adds r1, r0 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r3 + adds r1, r0 + asrs r1, 8 + mov r0, r9 + muls r0, r1 + lsls r0, 16 + lsrs r4, r0, 24 + mov r0, r8 + muls r0, r1 + lsls r0, 16 + lsrs r2, r0, 24 + mov r0, r12 + muls r0, r1 + lsls r0, 16 + lsrs r3, r0, 24 + cmp r4, 0x1F + ble _080716CE + movs r4, 0x1F +_080716CE: + cmp r2, 0x1F + ble _080716D4 + movs r2, 0x1F +_080716D4: + cmp r3, 0x1F + ble _080716DA + movs r3, 0x1F +_080716DA: + lsls r0, r3, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r4 + strh r0, [r5] + adds r5, 0x2 + subs r6, 0x1 + cmp r6, 0 + bne _0807168A +_080716EC: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8071660 + + thumb_func_start sub_80716F8 +sub_80716F8: @ 80716F8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + adds r6, r1, 0 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 24 + lsrs r3, 24 + mov r12, r3 + cmp r3, 0 + bne _0807172C + cmp r2, 0 + beq _0807179A + adds r5, r2, 0 +_08071718: + mov r1, r9 + ldrh r0, [r1] + strh r0, [r6] + movs r7, 0x2 + add r9, r7 + adds r6, 0x2 + subs r5, 0x1 + cmp r5, 0 + bne _08071718 + b _0807179A +_0807172C: + cmp r2, 0 + beq _0807179A + movs r0, 0x1F + mov r8, r0 + adds r5, r2, 0 +_08071736: + mov r7, r9 + ldrh r1, [r7] + movs r4, 0x1F + ands r4, r1 + lsls r1, 16 + lsrs r3, r1, 21 + mov r0, r8 + ands r3, r0 + lsrs r1, 26 + ands r1, r0 + movs r0, 0x4C + adds r2, r4, 0 + muls r2, r0 + movs r0, 0x97 + muls r0, r3 + adds r2, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r1 + adds r2, r0 + asrs r2, 8 + subs r0, r2, r4 + mov r7, r12 + muls r7, r0 + adds r0, r7, 0 + lsrs r0, 4 + adds r4, r0 + subs r0, r2, r3 + mov r7, r12 + muls r7, r0 + adds r0, r7, 0 + lsrs r0, 4 + adds r3, r0 + subs r2, r1 + mov r0, r12 + muls r0, r2 + lsrs r0, 4 + adds r1, r0 + lsls r1, 10 + lsls r3, 5 + orrs r1, r3 + orrs r1, r4 + strh r1, [r6] + movs r0, 0x2 + add r9, r0 + adds r6, 0x2 + subs r5, 0x1 + cmp r5, 0 + bne _08071736 +_0807179A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80716F8 + + thumb_func_start sub_80717A8 +sub_80717A8: @ 80717A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r10, r0 + adds r4, r1, 0 + ldr r0, [sp, 0x20] + ldr r1, [sp, 0x24] + ldr r5, [sp, 0x28] + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + ldr r0, _08071800 @ =sub_80718B8 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08071804 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r1 + strh r7, [r1, 0x8] + strh r6, [r1, 0xA] + lsls r4, 24 + asrs r4, 24 + cmp r4, 0 + blt _08071808 + strh r4, [r1, 0xE] + movs r0, 0x1 + b _08071810 + .align 2, 0 +_08071800: .4byte sub_80718B8 +_08071804: .4byte gUnknown_3005090 +_08071808: + movs r0, 0 + strh r0, [r1, 0xE] + negs r0, r4 + adds r0, 0x1 +_08071810: + strh r0, [r1, 0xC] + lsls r4, r5, 2 + cmp r6, r7 + bcs _08071828 + ldr r0, _08071858 @ =gUnknown_3005090 + adds r1, r4, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0xC + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0xC] +_08071828: + adds r0, r5, 0 + movs r1, 0x5 + mov r2, r10 + bl sub_80776E8 + ldr r0, _08071858 @ =gUnknown_3005090 + adds r1, r4, r5 + lsls r1, 3 + adds r1, r0 + mov r0, r9 + strh r0, [r1, 0x16] + mov r2, r8 + strh r2, [r1, 0x18] + ldr r1, [r1] + adds r0, r5, 0 + bl _call_via_r1 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08071858: .4byte gUnknown_3005090 + thumb_func_end sub_80717A8 + + thumb_func_start sub_807185C +sub_807185C: @ 807185C + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r4, _08071880 @ =sub_80718B8 + ldr r1, _08071884 @ =gUnknown_3005090 +_08071868: + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + bne _08071888 + ldr r0, [r1] + cmp r0, r4 + bne _08071888 + movs r5, 0x18 + ldrsh r0, [r1, r5] + cmp r0, r3 + bne _08071888 + movs r0, 0x1 + b _08071892 + .align 2, 0 +_08071880: .4byte sub_80718B8 +_08071884: .4byte gUnknown_3005090 +_08071888: + adds r1, 0x28 + adds r2, 0x1 + cmp r2, 0xF + ble _08071868 + movs r0, 0 +_08071892: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_807185C + + thumb_func_start sub_8071898 +sub_8071898: @ 8071898 + push {lr} + b _080718A0 +_0807189C: + bl sub_8077508 +_080718A0: + ldr r0, _080718B4 @ =sub_80718B8 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0807189C + pop {r0} + bx r0 + .align 2, 0 +_080718B4: .4byte sub_80718B8 + thumb_func_end sub_8071898 + + thumb_func_start sub_80718B8 +sub_80718B8: @ 80718B8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807190C @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r5, 0 + movs r1, 0x5 + bl sub_8077720 + adds r3, r0, 0 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x6 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _08071930 + movs r0, 0 + strh r0, [r4, 0x8] + ldrb r1, [r4] + ldrh r2, [r4, 0xE] + adds r0, r3, 0 + bl sub_80714D4 + ldrh r1, [r4] + movs r6, 0 + ldrsh r0, [r4, r6] + ldrh r3, [r4, 0x2] + movs r6, 0x2 + ldrsh r2, [r4, r6] + cmp r0, r2 + bne _08071910 + adds r0, r5, 0 + bl sub_8077508 + b _08071930 + .align 2, 0 +_0807190C: .4byte gUnknown_3005098 +_08071910: + ldrh r0, [r4, 0x4] + adds r1, r0 + strh r1, [r4] + lsls r0, 16 + cmp r0, 0 + blt _08071926 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r2 + blt _08071930 + b _0807192E +_08071926: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r2 + bgt _08071930 +_0807192E: + strh r3, [r4] +_08071930: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80718B8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s new file mode 100644 index 000000000..471663d34 --- /dev/null +++ b/asm/party_menu.s @@ -0,0 +1,19390 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_811EA44 +sub_811EA44: @ 811EA44 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp] + lsls r4, 24 + lsrs r7, r4, 24 + bl sub_811EEA8 + ldr r6, _0811EA8C @ =gUnknown_203B09C + movs r0, 0x8E + lsls r0, 2 + bl sub_8002B9C + adds r5, r0, 0 + str r5, [r6] + cmp r5, 0 + bne _0811EA90 + ldr r0, [sp, 0x2C] + bl sub_8000544 + b _0811EB80 + .align 2, 0 +_0811EA8C: .4byte gUnknown_203B09C +_0811EA90: + ldr r3, _0811EAE0 @ =gUnknown_203B0A0 + movs r1, 0xF + mov r0, r9 + ands r1, r0 + ldrb r2, [r3, 0x8] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x8] + ldr r1, [sp, 0x2C] + str r1, [r3] + movs r4, 0 + mov r0, r8 + strb r0, [r3, 0xB] + lsls r2, r7, 2 + ldrh r1, [r5, 0xA] + movs r0, 0x3 + ands r0, r1 + orrs r0, r2 + strh r0, [r5, 0xA] + ldr r0, [sp, 0x28] + str r0, [r5] + str r4, [r5, 0x4] + ldrb r1, [r5, 0x8] + movs r0, 0xF + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x8] + adds r7, r3, 0 + mov r1, r9 + cmp r1, 0x4 + bne _0811EAE4 + ldr r0, [r6] + ldrb r1, [r0, 0x8] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x8] + b _0811EAF0 + .align 2, 0 +_0811EAE0: .4byte gUnknown_203B0A0 +_0811EAE4: + ldr r2, [r6] + ldrb r1, [r2, 0x8] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x8] +_0811EAF0: + mov r5, r10 + cmp r5, 0xFF + beq _0811EB08 + movs r0, 0x3 + ands r0, r5 + lsls r0, 4 + ldrb r2, [r7, 0x8] + movs r1, 0x31 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x8] +_0811EB08: + movs r2, 0 + ldr r5, _0811EB90 @ =gUnknown_203B09C + movs r4, 0x86 + lsls r4, 2 + movs r3, 0 +_0811EB12: + ldr r0, [r5] + lsls r1, r2, 1 + adds r0, r4 + adds r0, r1 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0xF + bls _0811EB12 + movs r2, 0 + ldr r4, _0811EB90 @ =gUnknown_203B09C + movs r3, 0xFF +_0811EB2C: + ldr r0, [r4] + adds r0, 0xC + adds r0, r2 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x2 + bls _0811EB2C + ldr r0, [sp] + cmp r0, 0 + beq _0811EB68 + adds r1, r7, 0 + movs r0, 0x9 + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _0811EB66 + adds r1, r0, 0 + movs r0, 0x64 + muls r0, r1 + ldr r1, _0811EB94 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + bne _0811EB6A +_0811EB66: + movs r0, 0 +_0811EB68: + strb r0, [r7, 0x9] +_0811EB6A: + ldr r2, _0811EB98 @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl sub_8040C3C + ldr r0, _0811EB9C @ =sub_811EBD0 + bl sub_8000544 +_0811EB80: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811EB90: .4byte gUnknown_203B09C +_0811EB94: .4byte gUnknown_2024284 +_0811EB98: .4byte gUnknown_3003E50 +_0811EB9C: .4byte sub_811EBD0 + thumb_func_end sub_811EA44 + + thumb_func_start sub_811EBA0 +sub_811EBA0: @ 811EBA0 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80F67B8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_811EBA0 + + thumb_func_start sub_811EBBC +sub_811EBBC: @ 811EBBC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_811EBBC + + thumb_func_start sub_811EBD0 +sub_811EBD0: @ 811EBD0 + push {lr} +_0811EBD2: + bl sub_80BF748 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811EBF6 + bl sub_811EBFC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811EBF6 + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0811EBD2 +_0811EBF6: + pop {r0} + bx r0 + thumb_func_end sub_811EBD0 + + thumb_func_start sub_811EBFC +sub_811EBFC: @ 811EBFC + push {r4,lr} + sub sp, 0x4 + ldr r0, _0811EC1C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x16 + bls _0811EC10 + b _0811EE14 +_0811EC10: + lsls r0, 2 + ldr r1, _0811EC20 @ =_0811EC24 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811EC1C: .4byte gUnknown_30030F0 +_0811EC20: .4byte _0811EC24 + .align 2, 0 +_0811EC24: + .4byte _0811EC80 + .4byte _0811EC8E + .4byte _0811EC94 + .4byte _0811ECA8 + .4byte _0811ECAE + .4byte _0811ECB4 + .4byte _0811ECC6 + .4byte _0811ECCC + .4byte _0811ECF4 + .4byte _0811ED02 + .4byte _0811ED14 + .4byte _0811ED38 + .4byte _0811ED3E + .4byte _0811ED44 + .4byte _0811ED4A + .4byte _0811ED50 + .4byte _0811ED70 + .4byte _0811ED90 + .4byte _0811ED96 + .4byte _0811EDAC + .4byte _0811EDB4 + .4byte _0811EDD0 + .4byte _0811EDDE +_0811EC80: + bl sub_80BF768 + bl sub_80BF77C + bl sub_80F6790 + b _0811EDFC +_0811EC8E: + bl sub_8087E64 + b _0811EDFC +_0811EC94: + bl sub_8070528 + ldr r2, _0811ECA4 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + b _0811EDFA + .align 2, 0 +_0811ECA4: .4byte gUnknown_2037AB8 +_0811ECA8: + bl sub_8006B10 + b _0811EDFC +_0811ECAE: + bl sub_80088F0 + b _0811EDFC +_0811ECB4: + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + beq _0811ECC0 + b _0811EDFC +_0811ECC0: + bl sub_80773BC + b _0811EDFC +_0811ECC6: + bl sub_81208E4 + b _0811EDFC +_0811ECCC: + bl sub_811EECC + lsls r0, 24 + cmp r0, 0 + bne _0811ECDE + bl sub_811EE38 + movs r0, 0x1 + b _0811EE2E +_0811ECDE: + ldr r0, _0811ECF0 @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0] + b _0811EDFC + .align 2, 0 +_0811ECF0: .4byte gUnknown_203B09C +_0811ECF4: + bl sub_811EF44 + lsls r0, 24 + cmp r0, 0 + bne _0811ED00 + b _0811EE2C +_0811ED00: + b _0811EDFC +_0811ED02: + ldr r0, _0811ED10 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + lsls r0, 26 + lsrs r0, 30 + bl sub_8121060 + b _0811EDFC + .align 2, 0 +_0811ED10: .4byte gUnknown_203B0A0 +_0811ED14: + ldr r0, _0811ED30 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + lsls r0, 26 + lsrs r0, 30 + bl sub_811F0BC + ldr r0, _0811ED34 @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0] + b _0811EDFC + .align 2, 0 +_0811ED30: .4byte gUnknown_203B0A0 +_0811ED34: .4byte gUnknown_203B09C +_0811ED38: + bl sub_8122550 + b _0811EDFC +_0811ED3E: + bl sub_8122860 + b _0811EDFC +_0811ED44: + bl sub_8122980 + b _0811EDFC +_0811ED4A: + bl sub_809707C + b _0811EDFC +_0811ED50: + bl sub_811F740 + lsls r0, 24 + cmp r0, 0 + beq _0811EE2C + ldr r0, _0811ED6C @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0] + b _0811EDFC + .align 2, 0 +_0811ED6C: .4byte gUnknown_203B09C +_0811ED70: + bl sub_811F5EC + lsls r0, 24 + cmp r0, 0 + beq _0811EE2C + ldr r0, _0811ED8C @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strh r1, [r0] + b _0811EDFC + .align 2, 0 +_0811ED8C: .4byte gUnknown_203B09C +_0811ED90: + bl sub_811F774 + b _0811EDFC +_0811ED96: + ldr r0, _0811EDA8 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + lsrs r0, 31 + bl sub_81210F8 + b _0811EDFC + .align 2, 0 +_0811EDA8: .4byte gUnknown_203B09C +_0811EDAC: + movs r0, 0x5 + bl sub_812B1F0 + b _0811EDFC +_0811EDB4: + ldr r4, _0811EDCC @ =gUnknown_203B09C + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0 + bl sub_807741C + ldr r0, [r4] + ldrh r0, [r0, 0xA] + lsrs r0, 2 + bl sub_8121D0C + b _0811EDFC + .align 2, 0 +_0811EDCC: .4byte gUnknown_203B09C +_0811EDD0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _0811EDFC +_0811EDDE: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r2, _0811EE0C @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 +_0811EDFA: + strb r0, [r2, 0x8] +_0811EDFC: + ldr r1, _0811EE10 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0811EE2C + .align 2, 0 +_0811EE0C: .4byte gUnknown_2037AB8 +_0811EE10: .4byte gUnknown_30030F0 +_0811EE14: + ldr r0, _0811EE24 @ =sub_811EBBC + bl sub_80006F4 + ldr r0, _0811EE28 @ =sub_811EBA0 + bl sub_8000544 + movs r0, 0x1 + b _0811EE2E + .align 2, 0 +_0811EE24: .4byte sub_811EBBC +_0811EE28: .4byte sub_811EBA0 +_0811EE2C: + movs r0, 0 +_0811EE2E: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811EBFC + + thumb_func_start sub_811EE38 +sub_811EE38: @ 811EE38 + push {lr} + sub sp, 0x4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0811EE68 @ =sub_811EE74 + movs r1, 0 + bl sub_807741C + ldr r0, _0811EE6C @ =sub_811EBBC + bl sub_80006F4 + ldr r0, _0811EE70 @ =sub_811EBA0 + bl sub_8000544 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0811EE68: .4byte sub_811EE74 +_0811EE6C: .4byte sub_811EBBC +_0811EE70: .4byte sub_811EBA0 + thumb_func_end sub_811EE38 + + thumb_func_start sub_811EE74 +sub_811EE74: @ 811EE74 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0811EEA0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811EE98 + ldr r0, _0811EEA4 @ =gUnknown_203B0A0 + ldr r0, [r0] + bl sub_8000544 + bl sub_811F070 + adds r0, r4, 0 + bl sub_8077508 +_0811EE98: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811EEA0: .4byte gUnknown_2037AB8 +_0811EEA4: .4byte gUnknown_203B0A0 + thumb_func_end sub_811EE74 + + thumb_func_start sub_811EEA8 +sub_811EEA8: @ 811EEA8 + ldr r0, _0811EEBC @ =gUnknown_203B09C + movs r1, 0 + str r1, [r0] + ldr r0, _0811EEC0 @ =gUnknown_203B0BC + str r1, [r0] + ldr r0, _0811EEC4 @ =gUnknown_203B0B4 + str r1, [r0] + ldr r0, _0811EEC8 @ =gUnknown_203B0B8 + str r1, [r0] + bx lr + .align 2, 0 +_0811EEBC: .4byte gUnknown_203B09C +_0811EEC0: .4byte gUnknown_203B0BC +_0811EEC4: .4byte gUnknown_203B0B4 +_0811EEC8: .4byte gUnknown_203B0B8 + thumb_func_end sub_811EEA8 + + thumb_func_start sub_811EECC +sub_811EECC: @ 811EECC + push {r4,r5,lr} + bl sub_80BF7C8 + ldr r5, _0811EF34 @ =gUnknown_203B0BC + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + beq _0811EF3C + movs r1, 0 + adds r2, r4, 0 + bl memset + movs r0, 0 + bl sub_8001618 + ldr r1, _0811EF38 @ =gUnknown_8459EB8 + movs r0, 0 + movs r2, 0x3 + bl sub_8001658 + ldr r1, [r5] + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x1 + bl sub_80F67A4 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + b _0811EF3E + .align 2, 0 +_0811EF34: .4byte gUnknown_203B0BC +_0811EF38: .4byte gUnknown_8459EB8 +_0811EF3C: + movs r0, 0 +_0811EF3E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811EECC + + thumb_func_start sub_811EF44 +sub_811EF44: @ 811EF44 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0811EF64 @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x7 + bhi _0811F02C + lsls r0, 2 + ldr r1, _0811EF68 @ =_0811EF6C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811EF64: .4byte gUnknown_203B09C +_0811EF68: .4byte _0811EF6C + .align 2, 0 +_0811EF6C: + .4byte _0811EF8C + .4byte _0811EFB4 + .4byte _0811EFD4 + .4byte _0811F000 + .4byte _0811F004 + .4byte _0811F008 + .4byte _0811F00C + .4byte _0811F010 +_0811EF8C: + ldr r4, _0811EFAC @ =gUnknown_203B0B8 + ldr r0, _0811EFB0 @ =gUnknown_8E82700 + mov r1, sp + bl sub_80F6AA0 + adds r1, r0, 0 + str r1, [r4] + ldr r2, [sp] + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r3, 0 + bl sub_80017D0 + b _0811F016 + .align 2, 0 +_0811EFAC: .4byte gUnknown_203B0B8 +_0811EFB0: .4byte gUnknown_8E82700 +_0811EFB4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0811F030 + ldr r0, _0811EFCC @ =gUnknown_8E82AB0 + ldr r1, _0811EFD0 @ =gUnknown_203B0BC + ldr r1, [r1] + bl sub_800EBB4 + b _0811F016 + .align 2, 0 +_0811EFCC: .4byte gUnknown_8E82AB0 +_0811EFD0: .4byte gUnknown_203B0BC +_0811EFD4: + ldr r0, _0811EFF4 @ =gUnknown_8E829C8 + movs r2, 0xB0 + lsls r2, 1 + movs r1, 0 + bl sub_80703A8 + ldr r0, _0811EFF8 @ =gUnknown_20371F8 + ldr r4, _0811EFFC @ =gUnknown_203B09C + ldr r1, [r4] + adds r1, 0x18 + movs r2, 0xB0 + bl CpuSet + ldr r1, [r4] + b _0811F01A + .align 2, 0 +_0811EFF4: .4byte gUnknown_8E829C8 +_0811EFF8: .4byte gUnknown_20371F8 +_0811EFFC: .4byte gUnknown_203B09C +_0811F000: + movs r0, 0x4 + b _0811F012 +_0811F004: + movs r0, 0x5 + b _0811F012 +_0811F008: + movs r0, 0x6 + b _0811F012 +_0811F00C: + movs r0, 0x7 + b _0811F012 +_0811F010: + movs r0, 0x8 +_0811F012: + bl sub_811F03C +_0811F016: + ldr r0, _0811F028 @ =gUnknown_203B09C + ldr r1, [r0] +_0811F01A: + movs r0, 0x86 + lsls r0, 2 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0811F030 + .align 2, 0 +_0811F028: .4byte gUnknown_203B09C +_0811F02C: + movs r0, 0x1 + b _0811F032 +_0811F030: + movs r0, 0 +_0811F032: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811EF44 + + thumb_func_start sub_811F03C +sub_811F03C: @ 811F03C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 28 + ldr r5, _0811F068 @ =gUnknown_2037258 + lsrs r4, 23 + adds r1, r5, 0 + subs r1, 0x60 + adds r1, r4, r1 + adds r0, r5, 0 + movs r2, 0x10 + bl CpuSet + ldr r0, _0811F06C @ =gUnknown_20375F8 + adds r4, r0 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x10 + bl CpuSet + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811F068: .4byte gUnknown_2037258 +_0811F06C: .4byte gUnknown_20375F8 + thumb_func_end sub_811F03C + + thumb_func_start sub_811F070 +sub_811F070: @ 811F070 + push {lr} + ldr r0, _0811F0AC @ =gUnknown_203B09C + ldr r0, [r0] + cmp r0, 0 + beq _0811F07E + bl sub_8002BC4 +_0811F07E: + ldr r0, _0811F0B0 @ =gUnknown_203B0BC + ldr r0, [r0] + cmp r0, 0 + beq _0811F08A + bl sub_8002BC4 +_0811F08A: + ldr r0, _0811F0B4 @ =gUnknown_203B0B8 + ldr r0, [r0] + cmp r0, 0 + beq _0811F096 + bl sub_8002BC4 +_0811F096: + ldr r0, _0811F0B8 @ =gUnknown_203B0B4 + ldr r0, [r0] + cmp r0, 0 + beq _0811F0A2 + bl sub_8002BC4 +_0811F0A2: + bl sub_8003ECC + pop {r0} + bx r0 + .align 2, 0 +_0811F0AC: .4byte gUnknown_203B09C +_0811F0B0: .4byte gUnknown_203B0BC +_0811F0B4: .4byte gUnknown_203B0B8 +_0811F0B8: .4byte gUnknown_203B0B4 + thumb_func_end sub_811F070 + + thumb_func_start sub_811F0BC +sub_811F0BC: @ 811F0BC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0811F108 @ =gUnknown_203B0B4 + movs r0, 0x60 + bl sub_8002B9C + str r0, [r4] + movs r2, 0 + ldr r7, _0811F10C @ =gUnknown_8459EE4 + lsls r0, r5, 1 + adds r0, r5 + lsls r3, r0, 4 + mov r12, r4 + ldr r6, _0811F110 @ =gUnknown_8459F04 +_0811F0DA: + ldr r0, [r4] + lsls r1, r2, 4 + adds r1, r0 + str r7, [r1] + lsls r0, r2, 3 + adds r0, r6 + adds r0, r3, r0 + str r0, [r1, 0x4] + strb r2, [r1, 0x8] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x5 + bls _0811F0DA + mov r1, r12 + ldr r0, [r1] + ldr r1, _0811F114 @ =gUnknown_8459EC4 + str r1, [r0] + cmp r5, 0x3 + bne _0811F118 + str r1, [r0, 0x30] + b _0811F11E + .align 2, 0 +_0811F108: .4byte gUnknown_203B0B4 +_0811F10C: .4byte gUnknown_8459EE4 +_0811F110: .4byte gUnknown_8459F04 +_0811F114: .4byte gUnknown_8459EC4 +_0811F118: + cmp r5, 0 + beq _0811F11E + str r1, [r0, 0x10] +_0811F11E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811F0BC + + thumb_func_start sub_811F124 +sub_811F124: @ 811F124 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0811F16C @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x5 + bne _0811F174 + cmp r4, 0x2 + bls _0811F174 + adds r0, r4, 0 + bl sub_811F528 + ldr r5, _0811F170 @ =gUnknown_203B0B4 + lsls r4, 4 + ldr r0, [r5] + adds r0, r4 + movs r1, 0x8 + bl sub_812142C + ldr r0, [r5] + adds r0, r4, r0 + ldrb r0, [r0, 0x8] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + adds r4, r0 + ldrb r0, [r4, 0x8] + bl sub_8003FA0 + movs r0, 0x2 + bl sub_80F67A4 + b _0811F22A + .align 2, 0 +_0811F16C: .4byte gUnknown_203B0A0 +_0811F170: .4byte gUnknown_203B0B4 +_0811F174: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0811F1A4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + bne _0811F1AC + ldr r5, _0811F1A8 @ =gUnknown_203B0B4 + ldr r0, [r5] + lsls r4, 4 + adds r0, r4, r0 + ldrb r0, [r0, 0x8] + bl sub_8121404 + ldr r0, [r5] + adds r0, r4, r0 + ldrb r0, [r0, 0x8] + movs r1, 0x2 + bl sub_8003F20 + b _0811F218 + .align 2, 0 +_0811F1A4: .4byte gUnknown_2024284 +_0811F1A8: .4byte gUnknown_203B0B4 +_0811F1AC: + ldr r0, _0811F1C0 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + movs r1, 0xF + ands r1, r0 + cmp r1, 0x4 + bne _0811F1C4 + adds r0, r4, 0 + bl sub_811F388 + b _0811F1E2 + .align 2, 0 +_0811F1C0: .4byte gUnknown_203B0A0 +_0811F1C4: + cmp r1, 0xB + bne _0811F1D0 + adds r0, r4, 0 + bl sub_811F404 + b _0811F1E2 +_0811F1D0: + adds r0, r4, 0 + bl sub_811F430 + lsls r0, 24 + cmp r0, 0 + bne _0811F1E2 + adds r0, r4, 0 + bl sub_811F234 +_0811F1E2: + ldr r2, _0811F1F8 @ =gUnknown_203B0A0 + ldrb r1, [r2, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x5 + bne _0811F1FC + adds r0, r4, 0 + movs r1, 0 + bl sub_811F818 + b _0811F216 + .align 2, 0 +_0811F1F8: .4byte gUnknown_203B0A0 +_0811F1FC: + movs r0, 0x9 + ldrsb r0, [r2, r0] + cmp r0, r4 + bne _0811F20E + adds r0, r4, 0 + movs r1, 0x1 + bl sub_811F818 + b _0811F216 +_0811F20E: + adds r0, r4, 0 + movs r1, 0 + bl sub_811F818 +_0811F216: + lsls r4, 4 +_0811F218: + ldr r0, _0811F230 @ =gUnknown_203B0B4 + ldr r0, [r0] + adds r0, r4, r0 + ldrb r0, [r0, 0x8] + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 +_0811F22A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811F230: .4byte gUnknown_203B0B4 + thumb_func_end sub_811F124 + + thumb_func_start sub_811F234 +sub_811F234: @ 811F234 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x64 + adds r1, r4, 0 + muls r1, r0 + ldr r0, _0811F284 @ =gUnknown_2024284 + adds r7, r1, r0 + adds r0, r7, 0 + movs r1, 0x2D + bl sub_803FBE8 + adds r2, r0, 0 + cmp r2, 0 + beq _0811F28C + ldr r6, _0811F288 @ =gUnknown_203B0B4 + ldr r0, [r6] + lsls r5, r4, 4 + adds r0, r5, r0 + ldr r2, [r0] + ldrb r0, [r0, 0x8] + movs r1, 0 + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + ldr r4, [r2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl _call_via_r4 + ldr r1, [r6] + adds r1, r5 + adds r0, r7, 0 + movs r2, 0 + bl sub_8121738 + b _0811F2EE + .align 2, 0 +_0811F284: .4byte gUnknown_2024284 +_0811F288: .4byte gUnknown_203B0B4 +_0811F28C: + ldr r5, _0811F2F8 @ =gUnknown_203B0B4 + ldr r0, [r5] + lsls r4, 4 + adds r0, r4, r0 + ldr r1, [r0] + ldrb r0, [r0, 0x8] + str r2, [sp] + str r2, [sp, 0x4] + ldr r6, [r1] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl _call_via_r6 + ldr r1, [r5] + adds r1, r4 + adds r0, r7, 0 + movs r2, 0 + bl sub_8121738 + ldr r1, [r5] + adds r1, r4 + adds r0, r7, 0 + movs r2, 0 + bl sub_8121790 + ldr r1, [r5] + adds r1, r4 + adds r0, r7, 0 + movs r2, 0 + bl sub_8121854 + ldr r1, [r5] + adds r1, r4 + adds r0, r7, 0 + movs r2, 0 + bl sub_812199C + ldr r1, [r5] + adds r1, r4 + adds r0, r7, 0 + movs r2, 0 + bl sub_8121A3C + ldr r1, [r5] + adds r1, r4 + adds r0, r7, 0 + bl sub_8121AF0 +_0811F2EE: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F2F8: .4byte gUnknown_203B0B4 + thumb_func_end sub_811F234 + + thumb_func_start sub_811F2FC +sub_811F2FC: @ 811F2FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r1, 0x64 + adds r2, r0, 0 + muls r2, r1 + ldr r1, _0811F380 @ =gUnknown_2024284 + adds r6, r2, r1 + ldr r7, _0811F384 @ =gUnknown_203B0B4 + ldr r1, [r7] + lsls r5, r0, 4 + adds r1, r5, r1 + ldr r2, [r1] + ldrb r0, [r1, 0x8] + movs r1, 0 + str r1, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + ldr r4, [r2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl _call_via_r4 + ldr r1, [r7] + adds r1, r5 + adds r0, r6, 0 + movs r2, 0 + bl sub_8121738 + adds r0, r6, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0811F368 + ldr r1, [r7] + adds r1, r5 + adds r0, r6, 0 + movs r2, 0 + bl sub_8121790 + ldr r1, [r7] + adds r1, r5 + adds r0, r6, 0 + movs r2, 0 + bl sub_8121854 +_0811F368: + ldr r1, [r7] + adds r1, r5 + mov r0, r8 + movs r2, 0 + bl sub_8121C70 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F380: .4byte gUnknown_2024284 +_0811F384: .4byte gUnknown_203B0B4 + thumb_func_end sub_811F2FC + + thumb_func_start sub_811F388 +sub_811F388: @ 811F388 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x64 + muls r0, r4 + ldr r1, _0811F3AC @ =gUnknown_2024284 + adds r0, r1 + ldr r5, _0811F3B0 @ =gUnknown_203B0D4 + bl sub_8127550 + lsls r0, 24 + cmp r0, 0 + bne _0811F3C2 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_811F2FC + b _0811F3F8 + .align 2, 0 +_0811F3AC: .4byte gUnknown_2024284 +_0811F3B0: .4byte gUnknown_203B0D4 +_0811F3B4: + adds r1, 0x2 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_811F2FC + b _0811F3F8 +_0811F3C2: + ldr r0, _0811F400 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xC0 + ands r0, r1 + movs r3, 0x3 + cmp r0, 0x80 + bne _0811F3D2 + movs r3, 0x2 +_0811F3D2: + movs r1, 0 + cmp r1, r3 + bcs _0811F3F0 +_0811F3D8: + adds r2, r5, r1 + ldrb r0, [r2] + cmp r0, 0 + beq _0811F3E6 + subs r0, 0x1 + cmp r0, r4 + beq _0811F3B4 +_0811F3E6: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r3 + bcc _0811F3D8 +_0811F3F0: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_811F2FC +_0811F3F8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811F400: .4byte gUnknown_203B0A0 + thumb_func_end sub_811F388 + + thumb_func_start sub_811F404 +sub_811F404: @ 811F404 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_81209D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0811F422 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_811F2FC + b _0811F42A +_0811F422: + adds r0, r4, 0 + movs r1, 0x6 + bl sub_811F2FC +_0811F42A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811F404 + + thumb_func_start sub_811F430 +sub_811F430: @ 811F430 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0811F468 @ =gUnknown_2024284 + adds r6, r1, r0 + ldr r0, _0811F46C @ =gUnknown_203AD30 + ldrh r4, [r0] + ldr r0, _0811F470 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0xC + bne _0811F47C + ldr r0, _0811F474 @ =gUnknown_20370D0 + movs r1, 0 + strh r1, [r0] + ldr r0, _0811F478 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0xE + bhi _0811F492 + lsls r2, r0, 24 + lsrs r2, 24 + adds r0, r5, 0 + movs r1, 0 + bl sub_811F4D0 + b _0811F4C6 + .align 2, 0 +_0811F468: .4byte gUnknown_2024284 +_0811F46C: .4byte gUnknown_203AD30 +_0811F470: .4byte gUnknown_203B0A0 +_0811F474: .4byte gUnknown_20370D0 +_0811F478: .4byte gUnknown_20370C2 +_0811F47C: + cmp r0, 0x3 + bne _0811F492 + adds r0, r4, 0 + bl sub_80A1150 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811F496 + cmp r0, 0x2 + beq _0811F4A2 +_0811F492: + movs r0, 0 + b _0811F4C8 +_0811F496: + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_811F4D0 + b _0811F4C6 +_0811F4A2: + adds r0, r6, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0811F4BE + adds r0, r6, 0 + movs r1, 0x3 + adds r2, r4, 0 + bl sub_8042EC4 + lsls r0, 16 + cmp r0, 0 + bne _0811F492 +_0811F4BE: + adds r0, r5, 0 + movs r1, 0 + bl sub_811F2FC +_0811F4C6: + movs r0, 0x1 +_0811F4C8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811F430 + + thumb_func_start sub_811F4D0 +sub_811F4D0: @ 811F4D0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x64 + muls r0, r4 + ldr r3, _0811F4FC @ =gUnknown_2024284 + adds r0, r3 + bl sub_8120B20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _0811F50E + cmp r0, 0x2 + bgt _0811F500 + cmp r0, 0x1 + beq _0811F504 + b _0811F518 + .align 2, 0 +_0811F4FC: .4byte gUnknown_2024284 +_0811F500: + cmp r0, 0x3 + bne _0811F518 +_0811F504: + adds r0, r4, 0 + movs r1, 0x8 + bl sub_811F2FC + b _0811F520 +_0811F50E: + adds r0, r4, 0 + movs r1, 0x9 + bl sub_811F2FC + b _0811F520 +_0811F518: + adds r0, r4, 0 + movs r1, 0x7 + bl sub_811F2FC +_0811F520: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811F4D0 + + thumb_func_start sub_811F528 +sub_811F528: @ 811F528 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0811F558 @ =gUnknown_203B0B4 + lsls r2, r0, 4 + ldr r1, [r1] + adds r5, r1, r2 + subs r0, 0x3 + lsls r0, 24 + ldr r1, _0811F55C @ =gUnknown_2022B58 + mov r8, r1 + lsrs r7, r0, 19 + adds r6, r7, r1 + ldrh r0, [r6] + cmp r0, 0 + bne _0811F560 + ldrb r0, [r5, 0x8] + bl sub_8121404 + b _0811F5DC + .align 2, 0 +_0811F558: .4byte gUnknown_203B0B4 +_0811F55C: .4byte gUnknown_2022B58 +_0811F560: + ldr r2, [r5] + ldrb r0, [r5, 0x8] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r4, [r2] + movs r2, 0 + movs r3, 0 + bl _call_via_r4 + ldr r4, _0811F5E8 @ =gUnknown_2021CD0 + mov r0, r8 + adds r0, 0x4 + adds r7, r0 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_8008D84 + adds r0, r4, 0 + bl sub_8008D28 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x5 + bhi _0811F5A0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80093BC +_0811F5A0: + ldrb r0, [r5, 0x8] + ldr r3, [r5] + adds r3, 0x4 + adds r1, r4, 0 + movs r2, 0 + bl sub_8121704 + ldrb r0, [r6, 0xF] + adds r1, r5, 0 + bl sub_8121808 + ldrb r0, [r6, 0x1C] + ldrh r1, [r6] + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_81218BC + ldrh r0, [r6, 0x10] + adds r1, r5, 0 + bl sub_8121A04 + ldrh r0, [r6, 0x12] + adds r1, r5, 0 + bl sub_8121AA4 + ldrh r0, [r6, 0x10] + ldrh r1, [r6, 0x12] + adds r2, r5, 0 + bl sub_8121B2C +_0811F5DC: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F5E8: .4byte gUnknown_2021CD0 + thumb_func_end sub_811F528 + + thumb_func_start sub_811F5EC +sub_811F5EC: @ 811F5EC + push {r4,r5,lr} + ldr r5, _0811F614 @ =gUnknown_203B09C + ldr r0, [r5] + movs r4, 0x86 + lsls r4, 2 + adds r0, r4 + ldrb r0, [r0] + bl sub_811F124 + ldr r1, [r5] + adds r1, r4 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + beq _0811F618 + movs r0, 0 + b _0811F61A + .align 2, 0 +_0811F614: .4byte gUnknown_203B09C +_0811F618: + movs r0, 0x1 +_0811F61A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811F5EC + + thumb_func_start sub_811F620 +sub_811F620: @ 811F620 + lsls r0, 16 + ldr r1, _0811F630 @ =gUnknown_203B0B8 + lsrs r0, 11 + ldr r1, [r1] + adds r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_0811F630: .4byte gUnknown_203B0B8 + thumb_func_end sub_811F620 + + thumb_func_start sub_811F634 +sub_811F634: @ 811F634 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0811F6A8 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x5 + bne _0811F6E4 + cmp r7, 0x2 + bls _0811F6E4 + subs r0, r7, 0x3 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _0811F6AC @ =gUnknown_2022B58 + mov r9, r0 + mov r2, r10 + lsls r2, 5 + mov r8, r2 + mov r6, r8 + add r6, r9 + ldrh r0, [r6] + cmp r0, 0 + beq _0811F728 + mov r1, r9 + adds r1, 0x18 + add r1, r8 + ldr r1, [r1] + ldr r4, _0811F6B0 @ =gUnknown_203B0B4 + lsls r5, r7, 4 + ldr r2, [r4] + adds r2, r5 + movs r3, 0 + str r3, [sp] + bl sub_812224C + ldrh r0, [r6] + ldrh r1, [r6, 0x2] + ldr r2, [r4] + adds r2, r5 + bl sub_8122468 + ldrh r0, [r6] + ldr r1, [r4] + adds r1, r5 + bl sub_8122714 + ldrh r0, [r6, 0x10] + cmp r0, 0 + bne _0811F6B4 + movs r3, 0x7 + b _0811F6C4 + .align 2, 0 +_0811F6A8: .4byte gUnknown_203B0A0 +_0811F6AC: .4byte gUnknown_2022B58 +_0811F6B0: .4byte gUnknown_203B0B4 +_0811F6B4: + mov r0, r9 + adds r0, 0x14 + add r0, r8 + ldr r0, [r0] + bl sub_812085C + lsls r0, 24 + lsrs r3, r0, 24 +_0811F6C4: + ldr r1, _0811F6DC @ =gUnknown_2022B58 + mov r2, r10 + lsls r0, r2, 5 + adds r0, r1 + ldrh r0, [r0] + ldr r1, _0811F6E0 @ =gUnknown_203B0B4 + ldr r2, [r1] + adds r2, r5 + adds r1, r3, 0 + bl sub_81228B8 + b _0811F728 + .align 2, 0 +_0811F6DC: .4byte gUnknown_2022B58 +_0811F6E0: .4byte gUnknown_203B0B4 +_0811F6E4: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _0811F738 @ =gUnknown_2024284 + adds r6, r1, r0 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0811F728 + ldr r4, _0811F73C @ =gUnknown_203B0B4 + lsls r5, r7, 4 + ldr r1, [r4] + adds r1, r5 + adds r0, r6, 0 + adds r2, r7, 0 + bl sub_81221D4 + ldr r1, [r4] + adds r1, r5 + adds r0, r6, 0 + bl sub_8122434 + ldr r1, [r4] + adds r1, r5 + adds r0, r6, 0 + bl sub_81226EC + ldr r1, [r4] + adds r1, r5 + adds r0, r6, 0 + bl sub_8122884 +_0811F728: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F738: .4byte gUnknown_2024284 +_0811F73C: .4byte gUnknown_203B0B4 + thumb_func_end sub_811F634 + + thumb_func_start sub_811F740 +sub_811F740: @ 811F740 + push {r4,r5,lr} + ldr r5, _0811F768 @ =gUnknown_203B09C + ldr r0, [r5] + movs r4, 0x86 + lsls r4, 2 + adds r0, r4 + ldrb r0, [r0] + bl sub_811F634 + ldr r1, [r5] + adds r1, r4 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + beq _0811F76C + movs r0, 0 + b _0811F76E + .align 2, 0 +_0811F768: .4byte gUnknown_203B09C +_0811F76C: + movs r0, 0x1 +_0811F76E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811F740 + + thumb_func_start sub_811F774 +sub_811F774: @ 811F774 + push {r4,lr} + sub sp, 0xC + ldr r0, _0811F79C @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x5 + bne _0811F7A0 + movs r0, 0x7 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r1, 0xE + movs r2, 0x17 + movs r3, 0x11 + bl sub_8002554 + b _0811F808 + .align 2, 0 +_0811F79C: .4byte gUnknown_203B0A0 +_0811F7A0: + ldr r4, _0811F7D8 @ =gUnknown_203B09C + ldr r0, [r4] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _0811F7E0 + movs r0, 0xBF + movs r1, 0x88 + bl sub_8122794 + ldr r3, [r4] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x7F + ands r0, r1 + lsls r0, 4 + ldrh r2, [r3, 0x8] + ldr r1, _0811F7DC @ =0xfffff80f + ands r1, r2 + orrs r1, r0 + strh r1, [r3, 0x8] + bl sub_811F9DC + movs r0, 0xBF + movs r1, 0x98 + bl sub_8122794 + b _0811F7E8 + .align 2, 0 +_0811F7D8: .4byte gUnknown_203B09C +_0811F7DC: .4byte 0xfffff80f +_0811F7E0: + movs r0, 0xC6 + movs r1, 0x94 + bl sub_8122754 +_0811F7E8: + ldr r3, [r4] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x7F + ands r0, r1 + lsls r0, 11 + ldr r1, [r3, 0x8] + ldr r2, _0811F810 @ =0xfffc07ff + ands r1, r2 + orrs r1, r0 + str r1, [r3, 0x8] + ldr r0, _0811F814 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + movs r1, 0x1 + bl sub_811F818 +_0811F808: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811F810: .4byte 0xfffc07ff +_0811F814: .4byte gUnknown_203B0A0 + thumb_func_end sub_811F774 + + thumb_func_start sub_811F818 +sub_811F818: @ 811F818 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + cmp r7, 0x6 + beq _0811F884 + cmp r7, 0x7 + beq _0811F8C0 + movs r0, 0x64 + muls r0, r7 + ldr r1, _0811F87C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0811F934 + ldr r6, _0811F880 @ =gUnknown_203B0B4 + lsls r5, r7, 4 + ldr r4, [r6] + adds r4, r5 + adds r0, r7, 0 + mov r1, r8 + bl sub_811F944 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_812142C + ldr r0, [r6] + adds r0, r5, r0 + ldrb r0, [r0, 0x9] + mov r1, r8 + bl sub_812238C + ldr r0, [r6] + adds r5, r0 + ldrb r0, [r5, 0xB] + mov r1, r8 + bl sub_81227B8 + b _0811F934 + .align 2, 0 +_0811F87C: .4byte gUnknown_2024284 +_0811F880: .4byte gUnknown_203B0B4 +_0811F884: + mov r0, r8 + cmp r0, 0 + bne _0811F89E + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r1, 0x17 + movs r2, 0x10 + movs r3, 0x7 + bl sub_80F6B08 + b _0811F8B0 +_0811F89E: + movs r0, 0x2 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x17 + movs r2, 0x10 + movs r3, 0x7 + bl sub_80F6B08 +_0811F8B0: + ldr r0, _0811F8BC @ =gUnknown_203B09C + ldr r0, [r0] + ldrh r0, [r0, 0x8] + lsls r0, 21 + b _0811F926 + .align 2, 0 +_0811F8BC: .4byte gUnknown_203B09C +_0811F8C0: + ldr r0, _0811F8E0 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + bne _0811F8F2 + mov r0, r8 + cmp r0, 0 + bne _0811F8E4 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r1, 0x17 + movs r2, 0x11 + b _0811F904 + .align 2, 0 +_0811F8E0: .4byte gUnknown_203B09C +_0811F8E4: + movs r0, 0x2 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x17 + movs r2, 0x11 + b _0811F904 +_0811F8F2: + mov r0, r8 + cmp r0, 0 + bne _0811F90C + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r1, 0x17 + movs r2, 0x12 +_0811F904: + movs r3, 0x7 + bl sub_80F6B08 + b _0811F91E +_0811F90C: + movs r0, 0x2 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x17 + movs r2, 0x12 + movs r3, 0x7 + bl sub_80F6B08 +_0811F91E: + ldr r0, _0811F940 @ =gUnknown_203B09C + ldr r0, [r0] + ldr r0, [r0, 0x8] + lsls r0, 14 +_0811F926: + lsrs r0, 25 + mov r1, r8 + bl sub_81227B8 + movs r0, 0x1 + bl sub_80F67A4 +_0811F934: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F940: .4byte gUnknown_203B09C + thumb_func_end sub_811F818 + + thumb_func_start sub_811F944 +sub_811F944: @ 811F944 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r4, 0 + cmp r1, 0x1 + bne _0811F956 + movs r4, 0x1 +_0811F956: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0811F9D4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _0811F96C + movs r0, 0x2 + orrs r4, r0 +_0811F96C: + ldr r2, _0811F9D8 @ =gUnknown_203B0A0 + ldrb r1, [r2, 0x8] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0x20 + bne _0811F98C + cmp r5, 0x1 + beq _0811F984 + cmp r5, 0x4 + beq _0811F984 + cmp r5, 0x5 + bne _0811F98C +_0811F984: + movs r0, 0x8 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0811F98C: + ldrb r1, [r2, 0xB] + cmp r1, 0x9 + bne _0811F99A + movs r0, 0x10 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0811F99A: + cmp r1, 0x8 + bne _0811F9B6 + movs r0, 0x9 + ldrsb r0, [r2, r0] + cmp r5, r0 + beq _0811F9AE + movs r0, 0xA + ldrsb r0, [r2, r0] + cmp r5, r0 + bne _0811F9B6 +_0811F9AE: + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0811F9B6: + ldrb r0, [r2, 0xB] + cmp r0, 0xA + bne _0811F9CC + movs r0, 0x9 + ldrsb r0, [r2, r0] + cmp r5, r0 + bne _0811F9CC + movs r0, 0x20 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0811F9CC: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811F9D4: .4byte gUnknown_2024284 +_0811F9D8: .4byte gUnknown_203B0A0 + thumb_func_end sub_811F944 + + thumb_func_start sub_811F9DC +sub_811F9DC: @ 811F9DC + push {r4-r6,lr} + sub sp, 0xC + ldr r1, _0811FA18 @ =gUnknown_8459FC4 + movs r6, 0x7 + str r6, [sp] + movs r5, 0x2 + str r5, [sp, 0x4] + movs r4, 0x11 + str r4, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x17 + movs r3, 0x10 + bl sub_8002228 + ldr r1, _0811FA1C @ =gUnknown_8459FE0 + str r6, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x17 + movs r3, 0x12 + bl sub_8002228 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811FA18: .4byte gUnknown_8459FC4 +_0811FA1C: .4byte gUnknown_8459FE0 + thumb_func_end sub_811F9DC + + thumb_func_start sub_811FA20 +sub_811FA20: @ 811FA20 + push {lr} + ldr r0, _0811FA34 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x4B + ands r0, r1 + cmp r0, 0x4B + beq _0811FA38 + movs r0, 0 + b _0811FA3A + .align 2, 0 +_0811FA34: .4byte gUnknown_2022B4C +_0811FA38: + movs r0, 0x1 +_0811FA3A: + pop {r1} + bx r1 + thumb_func_end sub_811FA20 + + thumb_func_start sub_811FA40 +sub_811FA40: @ 811FA40 + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + movs r0, 0x64 + bl sub_8002B9C + adds r5, r0, 0 + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0x64 + bl memcpy + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + adds r0, r5, 0 + bl sub_8002BC4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_811FA40 + + thumb_func_start sub_811FA78 +sub_811FA78: @ 811FA78 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0811FAAC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0811FAB0 @ =sub_811FAB4 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811FAAC: .4byte gUnknown_3005090 +_0811FAB0: .4byte sub_811FAB4 + thumb_func_end sub_811FA78 + + thumb_func_start sub_811FAB4 +sub_811FAB4: @ 811FAB4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0811FAE8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811FB04 + ldr r4, _0811FAEC @ =gUnknown_203B0A0 + ldrb r1, [r4, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _0811FAD6 + bl sub_81280C4 +_0811FAD6: + ldr r0, _0811FAF0 @ =gUnknown_203B09C + ldr r0, [r0] + ldr r0, [r0, 0x4] + cmp r0, 0 + beq _0811FAF4 + bl sub_8000544 + b _0811FAFA + .align 2, 0 +_0811FAE8: .4byte gUnknown_2037AB8 +_0811FAEC: .4byte gUnknown_203B0A0 +_0811FAF0: .4byte gUnknown_203B09C +_0811FAF4: + ldr r0, [r4] + bl sub_8000544 +_0811FAFA: + bl sub_811F070 + adds r0, r5, 0 + bl sub_8077508 +_0811FB04: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811FAB4 + + thumb_func_start sub_811FB0C +sub_811FB0C: @ 811FB0C + ldr r0, _0811FB14 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + bx lr + .align 2, 0 +_0811FB14: .4byte gUnknown_203B0A0 + thumb_func_end sub_811FB0C + + thumb_func_start sub_811FB18 +sub_811FB18: @ 811FB18 + ldr r0, _0811FB24 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + lsls r0, 28 + lsrs r0, 28 + bx lr + .align 2, 0 +_0811FB24: .4byte gUnknown_203B0A0 + thumb_func_end sub_811FB18 + + thumb_func_start sub_811FB28 +sub_811FB28: @ 811FB28 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + ldr r0, _0811FB64 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811FB98 + bl sub_80BF748 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811FB98 + bl sub_811FBA4 + adds r4, r0, 0 + bl sub_811FEFC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + beq _0811FB78 + cmp r0, 0x2 + bgt _0811FB68 + cmp r0, 0x1 + beq _0811FB6E + b _0811FB98 + .align 2, 0 +_0811FB64: .4byte gUnknown_2037AB8 +_0811FB68: + cmp r0, 0x8 + beq _0811FB82 + b _0811FB98 +_0811FB6E: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811FBC4 + b _0811FB98 +_0811FB78: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_811FD88 + b _0811FB98 +_0811FB82: + ldr r0, _0811FBA0 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _0811FB98 + movs r0, 0x5 + bl sub_80722CC + bl sub_8124258 +_0811FB98: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811FBA0: .4byte gUnknown_203B09C + thumb_func_end sub_811FB28 + + thumb_func_start sub_811FBA4 +sub_811FBA4: @ 811FBA4 + push {lr} + ldr r0, _0811FBB8 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0xB] + cmp r1, 0x8 + beq _0811FBB2 + cmp r1, 0xA + bne _0811FBBC +_0811FBB2: + adds r0, 0xA + b _0811FBBE + .align 2, 0 +_0811FBB8: .4byte gUnknown_203B0A0 +_0811FBBC: + adds r0, 0x9 +_0811FBBE: + pop {r1} + bx r1 + thumb_func_end sub_811FBA4 + + thumb_func_start sub_811FBC4 +sub_811FBC4: @ 811FBC4 + push {r4-r6,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0x6 + bne _0811FBE4 + ldr r0, _0811FBE0 @ =gUnknown_203B0A0 + ldr r1, [r0, 0x4] + adds r0, r6, 0 + bl _call_via_r1 + b _0811FD56 + .align 2, 0 +_0811FBE0: .4byte gUnknown_203B0A0 +_0811FBE4: + ldr r0, _0811FBFC @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + subs r0, 0x3 + cmp r0, 0xA + bls _0811FBF0 + b _0811FD4A +_0811FBF0: + lsls r0, 2 + ldr r1, _0811FC00 @ =_0811FC04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811FBFC: .4byte gUnknown_203B0A0 +_0811FC00: .4byte _0811FC04 + .align 2, 0 +_0811FC04: + .4byte _0811FC46 + .4byte _0811FD4A + .4byte _0811FCC0 + .4byte _0811FCC0 + .4byte _0811FCA6 + .4byte _0811FCDA + .4byte _0811FD4A + .4byte _0811FC30 + .4byte _0811FCE8 + .4byte _0811FC8C + .4byte _0811FD34 +_0811FC30: + adds r0, r5, 0 + bl sub_811FD5C + lsls r0, 24 + cmp r0, 0 + bne _0811FC3E + b _0811FD56 +_0811FC3E: + adds r0, r6, 0 + bl sub_80E5724 + b _0811FD56 +_0811FC46: + adds r0, r5, 0 + bl sub_811FD5C + lsls r0, 24 + cmp r0, 0 + bne _0811FC54 + b _0811FD56 +_0811FC54: + ldr r0, _0811FC78 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _0811FC68 + ldr r0, _0811FC7C @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _0811FC80 @ =sub_8128184 + str r0, [r1, 0x4] +_0811FC68: + ldr r0, _0811FC84 @ =gUnknown_3005E98 + ldr r1, _0811FC88 @ =sub_81255BC + ldr r2, [r0] + adds r0, r6, 0 + bl _call_via_r2 + b _0811FD56 + .align 2, 0 +_0811FC78: .4byte gUnknown_203B0A0 +_0811FC7C: .4byte gUnknown_203B09C +_0811FC80: .4byte sub_8128184 +_0811FC84: .4byte gUnknown_3005E98 +_0811FC88: .4byte sub_81255BC +_0811FC8C: + adds r0, r5, 0 + bl sub_811FD5C + lsls r0, 24 + cmp r0, 0 + beq _0811FD56 + movs r0, 0x5 + bl sub_80722CC + adds r0, r6, 0 + bl sub_8126DC8 + b _0811FD56 +_0811FCA6: + adds r0, r5, 0 + bl sub_811FD5C + lsls r0, 24 + cmp r0, 0 + beq _0811FD56 + movs r0, 0x5 + bl sub_80722CC + adds r0, r6, 0 + bl sub_8127404 + b _0811FD56 +_0811FCC0: + adds r0, r5, 0 + bl sub_811FD5C + lsls r0, 24 + cmp r0, 0 + beq _0811FD56 + movs r0, 0x5 + bl sub_80722CC + adds r0, r6, 0 + bl sub_8126F40 + b _0811FD56 +_0811FCDA: + movs r0, 0x5 + bl sub_80722CC + adds r0, r6, 0 + bl sub_8122E5C + b _0811FD56 +_0811FCE8: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0811FD24 @ =gUnknown_20370C0 + movs r0, 0 + ldrsb r0, [r5, r0] + strh r0, [r1] + ldr r0, _0811FD28 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x7 + bne _0811FD1A + ldr r4, _0811FD2C @ =gUnknown_20370C2 + movs r1, 0 + ldrsb r1, [r5, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0811FD30 @ =gUnknown_2024284 + adds r0, r1 + bl sub_8043E2C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] +_0811FD1A: + adds r0, r6, 0 + bl sub_811FA78 + b _0811FD56 + .align 2, 0 +_0811FD24: .4byte gUnknown_20370C0 +_0811FD28: .4byte gUnknown_203B0A0 +_0811FD2C: .4byte gUnknown_20370C2 +_0811FD30: .4byte gUnknown_2024284 +_0811FD34: + adds r0, r5, 0 + bl sub_811FD5C + lsls r0, 24 + cmp r0, 0 + beq _0811FD56 + ldrb r1, [r5] + adds r0, r6, 0 + bl sub_81209F4 + b _0811FD56 +_0811FD4A: + movs r0, 0x5 + bl sub_80722CC + adds r0, r6, 0 + bl sub_8122C30 +_0811FD56: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_811FBC4 + + thumb_func_start sub_811FD5C +sub_811FD5C: @ 811FD5C + push {lr} + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0811FD78 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _0811FD7C + movs r0, 0x1 + b _0811FD84 + .align 2, 0 +_0811FD78: .4byte gUnknown_2024284 +_0811FD7C: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0 +_0811FD84: + pop {r1} + bx r1 + thumb_func_end sub_811FD5C + + thumb_func_start sub_811FD88 +sub_811FD88: @ 811FD88 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0811FDA4 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x8 + beq _0811FDBA + cmp r0, 0x8 + bgt _0811FDA8 + cmp r0, 0x1 + beq _0811FDB2 + b _0811FDD6 + .align 2, 0 +_0811FDA4: .4byte gUnknown_203B0A0 +_0811FDA8: + cmp r0, 0xA + beq _0811FDBA + cmp r0, 0xD + beq _0811FDC8 + b _0811FDD6 +_0811FDB2: + movs r0, 0x1A + bl sub_80722CC + b _0811FE14 +_0811FDBA: + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_81235E8 + b _0811FE14 +_0811FDC8: + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_8120A58 + b _0811FE14 +_0811FDD6: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0811FDF0 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x4 + bne _0811FDF4 + adds r0, r4, 0 + bl sub_811FE24 + b _0811FE14 + .align 2, 0 +_0811FDF0: .4byte gUnknown_203B0A0 +_0811FDF4: + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _0811FE04 + ldr r1, _0811FE1C @ =gUnknown_20370C0 + movs r0, 0x7 + strh r0, [r1] +_0811FE04: + ldr r0, _0811FE20 @ =gUnknown_203B0C0 + movs r1, 0 + strb r1, [r0] + movs r0, 0x7 + strb r0, [r5] + adds r0, r4, 0 + bl sub_811FA78 +_0811FE14: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811FE1C: .4byte gUnknown_20370C0 +_0811FE20: .4byte gUnknown_203B0C0 + thumb_func_end sub_811FD88 + + thumb_func_start sub_811FE24 +sub_811FE24: @ 811FE24 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0811FE5C @ =gUnknown_203B09C + ldr r0, [r0] + adds r0, 0xD + bl sub_8121CE4 + ldr r5, _0811FE60 @ =gUnknown_2021D18 + ldr r1, _0811FE64 @ =gUnknown_84176CF + adds r0, r5, 0 + bl sub_8008FCC + adds r0, r5, 0 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _0811FE68 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0811FE6C @ =sub_811FE70 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811FE5C: .4byte gUnknown_203B09C +_0811FE60: .4byte gUnknown_2021D18 +_0811FE64: .4byte gUnknown_84176CF +_0811FE68: .4byte gUnknown_3005090 +_0811FE6C: .4byte sub_811FE70 + thumb_func_end sub_811FE24 + + thumb_func_start sub_811FE70 +sub_811FE70: @ 811FE70 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811FE94 + bl sub_812200C + ldr r0, _0811FE9C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0811FEA0 @ =sub_811FEA4 + str r0, [r1] +_0811FE94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811FE9C: .4byte gUnknown_3005090 +_0811FEA0: .4byte sub_811FEA4 + thumb_func_end sub_811FE70 + + thumb_func_start sub_811FEA4 +sub_811FEA4: @ 811FEA4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0811FECA + cmp r1, 0 + bgt _0811FEC4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0811FEE8 + b _0811FEF4 +_0811FEC4: + cmp r1, 0x1 + beq _0811FEEE + b _0811FEF4 +_0811FECA: + ldr r0, _0811FEE0 @ =gUnknown_203B0C0 + strb r1, [r0] + ldr r1, _0811FEE4 @ =gUnknown_203B0A0 + movs r0, 0x7 + strb r0, [r1, 0x9] + bl sub_81274FC + adds r0, r4, 0 + bl sub_811FA78 + b _0811FEF4 + .align 2, 0 +_0811FEE0: .4byte gUnknown_203B0C0 +_0811FEE4: .4byte gUnknown_203B0A0 +_0811FEE8: + movs r0, 0x5 + bl sub_80722CC +_0811FEEE: + adds r0, r4, 0 + bl sub_81203B8 +_0811FEF4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811FEA4 + + thumb_func_start sub_811FEFC +sub_811FEFC: @ 811FEFC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0811FF14 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x30] + adds r3, r0, 0 + cmp r1, 0x20 + beq _0811FF2A + cmp r1, 0x20 + bgt _0811FF18 + cmp r1, 0x10 + beq _0811FF2E + b _0811FF32 + .align 2, 0 +_0811FF14: .4byte gUnknown_30030F0 +_0811FF18: + cmp r1, 0x40 + beq _0811FF22 + cmp r1, 0x80 + beq _0811FF26 + b _0811FF32 +_0811FF22: + movs r1, 0xFF + b _0811FF4E +_0811FF26: + movs r1, 0x1 + b _0811FF4E +_0811FF2A: + movs r1, 0xFE + b _0811FF4E +_0811FF2E: + movs r1, 0x2 + b _0811FF4E +_0811FF32: + bl sub_80BF66C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811FF46 + cmp r0, 0x2 + beq _0811FF4A + movs r1, 0 + b _0811FF4C +_0811FF46: + movs r1, 0xFF + b _0811FF4C +_0811FF4A: + movs r1, 0x1 +_0811FF4C: + ldr r3, _0811FF5C @ =gUnknown_30030F0 +_0811FF4E: + ldrh r2, [r3, 0x2E] + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _0811FF60 + movs r0, 0x8 + b _0811FF8C + .align 2, 0 +_0811FF5C: .4byte gUnknown_30030F0 +_0811FF60: + lsls r0, r1, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0811FF72 + adds r0, r4, 0 + bl sub_811FF94 + movs r0, 0 + b _0811FF8C +_0811FF72: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _0811FF86 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x7 + bne _0811FF86 + movs r0, 0x2 + b _0811FF8C +_0811FF86: + ldrh r1, [r3, 0x2E] + movs r0, 0x3 + ands r0, r1 +_0811FF8C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811FEFC + + thumb_func_start sub_811FF94 +sub_811FF94: @ 811FF94 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldrb r4, [r5] + ldr r0, _0811FFB8 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + lsls r0, 26 + lsrs r0, 30 + cmp r0, 0 + bne _0811FFBC + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl sub_811FFF0 + b _0811FFC6 + .align 2, 0 +_0811FFB8: .4byte gUnknown_203B0A0 +_0811FFBC: + lsls r1, 24 + asrs r1, 24 + adds r0, r5, 0 + bl sub_81200F8 +_0811FFC6: + movs r1, 0 + ldrsb r1, [r5, r1] + lsls r4, 24 + asrs r0, r4, 24 + cmp r1, r0 + beq _0811FFE8 + movs r0, 0x5 + bl sub_80722CC + lsrs r0, r4, 24 + movs r1, 0 + bl sub_811F818 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_811F818 +_0811FFE8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811FF94 + + thumb_func_start sub_811FFF0 +sub_811FFF0: @ 811FFF0 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08120016 + cmp r1, r0 + bgt _0812000C + subs r0, 0x1 + cmp r1, r0 + beq _081200C0 + b _081200EE +_0812000C: + cmp r1, 0x1 + beq _0812005C + cmp r1, 0x2 + beq _08120094 + b _081200EE +_08120016: + ldrb r0, [r4] + movs r1, 0 + ldrsb r1, [r4, r1] + cmp r1, 0 + bne _08120024 + movs r0, 0x7 + b _081200EC +_08120024: + cmp r1, 0x6 + bne _08120034 + ldr r0, _08120030 @ =gUnknown_2024029 + ldrb r0, [r0] + subs r0, 0x1 + b _081200EC + .align 2, 0 +_08120030: .4byte gUnknown_2024029 +_08120034: + cmp r1, 0x7 + bne _08120058 + ldr r0, _08120048 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _0812004C + movs r0, 0x6 + b _081200EC + .align 2, 0 +_08120048: .4byte gUnknown_203B09C +_0812004C: + ldr r0, _08120054 @ =gUnknown_2024029 + ldrb r0, [r0] + subs r0, 0x1 + b _081200EC + .align 2, 0 +_08120054: .4byte gUnknown_2024029 +_08120058: + subs r0, 0x1 + b _081200EC +_0812005C: + ldrb r2, [r4] + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x7 + beq _081200EA + movs r1, 0 + ldrsb r1, [r4, r1] + ldr r0, _08120084 @ =gUnknown_2024029 + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _08120090 + ldr r0, _08120088 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _0812008C + movs r0, 0x6 + b _081200EC + .align 2, 0 +_08120084: .4byte gUnknown_2024029 +_08120088: .4byte gUnknown_203B09C +_0812008C: + movs r0, 0x7 + b _081200EC +_08120090: + adds r0, r2, 0x1 + b _081200EC +_08120094: + ldr r0, _081200B8 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r0, 0x1 + beq _081200EE + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + bne _081200EE + ldr r0, _081200BC @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 28 + lsrs r0, 29 + cmp r0, 0 + bne _081200EC + movs r0, 0x1 + b _081200EC + .align 2, 0 +_081200B8: .4byte gUnknown_2024029 +_081200BC: .4byte gUnknown_203B09C +_081200C0: + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + beq _081200EE + cmp r0, 0x6 + beq _081200EE + cmp r0, 0x7 + beq _081200EE + ldr r0, _081200F4 @ =gUnknown_203B09C + ldr r3, [r0] + movs r1, 0 + ldrsb r1, [r4, r1] + movs r0, 0x7 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r3, 0x8] + movs r0, 0xF + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x8] +_081200EA: + movs r0, 0 +_081200EC: + strb r0, [r4] +_081200EE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081200F4: .4byte gUnknown_203B09C + thumb_func_end sub_811FFF0 + + thumb_func_start sub_81200F8 +sub_81200F8: @ 81200F8 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r2, r1, 24 + asrs r5, r1, 24 + movs r6, 0x1 + negs r6, r6 + cmp r5, r6 + beq _08120124 + cmp r5, r6 + bgt _0812011A + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + bne _08120118 + b _08120238 +_08120118: + b _08120290 +_0812011A: + cmp r5, 0x1 + beq _08120180 + cmp r5, 0x2 + beq _081201C0 + b _08120290 +_08120124: + ldrb r1, [r4] + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + bne _08120132 + movs r0, 0x7 + b _0812028E +_08120132: + cmp r0, 0x6 + bne _08120144 + ldr r0, _08120140 @ =gUnknown_2024029 + ldrb r0, [r0] + subs r0, 0x1 + b _0812028E + .align 2, 0 +_08120140: .4byte gUnknown_2024029 +_08120144: + cmp r0, 0x7 + bne _08120160 + ldr r0, _08120158 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _0812015C + movs r0, 0x6 + b _0812028E + .align 2, 0 +_08120158: .4byte gUnknown_203B09C +_0812015C: + subs r0, r1, 0x1 + strb r0, [r4] +_08120160: + movs r0, 0 + ldrsb r0, [r4, r0] + lsls r1, r2, 24 + asrs r1, 24 + bl sub_812029C + lsls r0, 24 + lsrs r2, r0, 24 + asrs r0, 24 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _0812017C + b _08120290 +_0812017C: + strb r2, [r4] + b _08120290 +_08120180: + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x6 + bne _0812018C + movs r0, 0x7 + b _0812028E +_0812018C: + cmp r0, 0x7 + bne _08120194 + movs r0, 0 + b _0812028E +_08120194: + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x1 + bl sub_812029C + lsls r0, 24 + lsrs r2, r0, 24 + asrs r0, 24 + cmp r0, r6 + bne _0812017C + ldr r0, _081201B8 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _081201BC + movs r0, 0x6 + b _0812028E + .align 2, 0 +_081201B8: .4byte gUnknown_203B09C +_081201BC: + movs r0, 0x7 + b _0812028E +_081201C0: + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + bne _081201F8 + ldr r0, _081201E8 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 28 + lsrs r6, r0, 29 + cmp r6, 0x3 + bne _081201F0 + ldr r0, _081201EC @ =gUnknown_20243B0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08120290 + strb r6, [r4] + b _08120290 + .align 2, 0 +_081201E8: .4byte gUnknown_203B09C +_081201EC: .4byte gUnknown_20243B0 +_081201F0: + ldr r0, _081201F4 @ =gUnknown_202434C + b _0812020C + .align 2, 0 +_081201F4: .4byte gUnknown_202434C +_081201F8: + cmp r0, 0x1 + bne _08120290 + ldr r0, _0812021C @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 28 + lsrs r5, r0, 29 + cmp r5, 0x5 + bne _08120224 + ldr r0, _08120220 @ =gUnknown_2024478 +_0812020C: + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08120290 + strb r5, [r4] + b _08120290 + .align 2, 0 +_0812021C: .4byte gUnknown_203B09C +_08120220: .4byte gUnknown_2024478 +_08120224: + ldr r0, _08120234 @ =gUnknown_2024414 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08120290 + movs r0, 0x4 + b _0812028E + .align 2, 0 +_08120234: .4byte gUnknown_2024414 +_08120238: + ldrb r1, [r4] + subs r0, r1, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08120268 + ldr r0, _08120264 @ =gUnknown_203B09C + ldr r3, [r0] + movs r1, 0 + ldrsb r1, [r4, r1] + movs r0, 0x7 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r3, 0x8] + movs r0, 0xF + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x8] + movs r0, 0 + b _0812028E + .align 2, 0 +_08120264: .4byte gUnknown_203B09C +_08120268: + subs r0, r1, 0x4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08120290 + ldr r0, _08120298 @ =gUnknown_203B09C + ldr r3, [r0] + movs r1, 0 + ldrsb r1, [r4, r1] + movs r0, 0x7 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r3, 0x8] + movs r0, 0xF + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x8] + movs r0, 0x1 +_0812028E: + strb r0, [r4] +_08120290: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08120298: .4byte gUnknown_203B09C + thumb_func_end sub_81200F8 + + thumb_func_start sub_812029C +sub_812029C: @ 812029C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + asrs r6, r1, 24 +_081202A6: + lsls r0, r5, 24 + asrs r0, 24 + adds r0, r6 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, r5, 24 + lsrs r0, r1, 24 + cmp r0, 0x5 + bhi _081202D4 + asrs r4, r1, 24 + movs r0, 0x64 + muls r0, r4 + ldr r1, _081202D0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _081202A6 + adds r0, r4, 0 + b _081202D8 + .align 2, 0 +_081202D0: .4byte gUnknown_2024284 +_081202D4: + movs r0, 0x1 + negs r0, r0 +_081202D8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_812029C + + thumb_func_start sub_81202E0 +sub_81202E0: @ 81202E0 + push {r4,lr} + adds r4, r1, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_803FBE8 + adds r0, r4, 0 + bl sub_8008D28 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81202E0 + + thumb_func_start sub_81202F8 +sub_81202F8: @ 81202F8 + push {r4,lr} + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8121FC0 + ldr r0, _08120320 @ =sub_8120328 + movs r1, 0x1 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08120324 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08120320: .4byte sub_8120328 +_08120324: .4byte gUnknown_3005090 + thumb_func_end sub_81202F8 + + thumb_func_start sub_8120328 +sub_8120328: @ 8120328 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + movs r0, 0x6 + bl sub_80BF518 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _08120364 + ldr r0, _0812036C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0812035E + movs r0, 0x6 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x6 + bl sub_80040B8 +_0812035E: + adds r0, r5, 0 + bl sub_8077508 +_08120364: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812036C: .4byte gUnknown_3005090 + thumb_func_end sub_8120328 + + thumb_func_start sub_8120370 +sub_8120370: @ 8120370 + push {lr} + ldr r0, _08120380 @ =sub_8120328 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08120380: .4byte sub_8120328 + thumb_func_end sub_8120370 + + thumb_func_start sub_8120384 +sub_8120384: @ 8120384 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80BF748 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081203AA + movs r0, 0 + bl sub_8121D0C + ldr r0, _081203B0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _081203B4 @ =sub_811FB28 + str r0, [r1] +_081203AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081203B0: .4byte gUnknown_3005090 +_081203B4: .4byte sub_811FB28 + thumb_func_end sub_8120384 + + thumb_func_start sub_81203B8 +sub_81203B8: @ 81203B8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08120410 + movs r0, 0x6 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x6 + bl sub_80040B8 + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081203FC + ldr r0, _081203F4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _081203F8 @ =sub_8120384 + b _0812040E + .align 2, 0 +_081203F4: .4byte gUnknown_3005090 +_081203F8: .4byte sub_8120384 +_081203FC: + movs r0, 0 + bl sub_8121D0C + ldr r0, _08120418 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812041C @ =sub_811FB28 +_0812040E: + str r0, [r1] +_08120410: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120418: .4byte gUnknown_3005090 +_0812041C: .4byte sub_811FB28 + thumb_func_end sub_81203B8 + + thumb_func_start sub_8120420 +sub_8120420: @ 8120420 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + cmp r3, 0 + bne _0812043C + ldr r3, _08120438 @ =0x0000ffff + movs r0, 0x5 + b _08120448 + .align 2, 0 +_08120438: .4byte 0x0000ffff +_0812043C: + ldr r0, _08120454 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x6 + bne _0812045C + ldr r3, _08120458 @ =0x0000ffff + movs r0, 0x7 +_08120448: + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_80A2294 + b _08120468 + .align 2, 0 +_08120454: .4byte gUnknown_203B0A0 +_08120458: .4byte 0x0000ffff +_0812045C: + ldr r3, _08120498 @ =0x0000ffff + movs r0, 0x6 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_80A2294 +_08120468: + ldr r1, _0812049C @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + ldr r1, _081204A0 @ =gUnknown_2021CF0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r4, _081204A4 @ =gUnknown_2021D18 + ldr r1, _081204A8 @ =gUnknown_8416C2A + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08120498: .4byte 0x0000ffff +_0812049C: .4byte gUnknown_2021CD0 +_081204A0: .4byte gUnknown_2021CF0 +_081204A4: .4byte gUnknown_2021D18 +_081204A8: .4byte gUnknown_8416C2A + thumb_func_end sub_8120420 + + thumb_func_start sub_81204AC +sub_81204AC: @ 81204AC + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + ldr r3, _081204F8 @ =0x0000ffff + movs r0, 0x8 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_80A2294 + ldr r1, _081204FC @ =gUnknown_2021CD0 + adds r0, r6, 0 + bl sub_81202E0 + ldr r1, _08120500 @ =gUnknown_2021CF0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r4, _08120504 @ =gUnknown_2021D18 + ldr r1, _08120508 @ =gUnknown_8416CAC + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081204F8: .4byte 0x0000ffff +_081204FC: .4byte gUnknown_2021CD0 +_08120500: .4byte gUnknown_2021CF0 +_08120504: .4byte gUnknown_2021D18 +_08120508: .4byte gUnknown_8416CAC + thumb_func_end sub_81204AC + + thumb_func_start sub_812050C +sub_812050C: @ 812050C + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _08120548 @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r1, _0812054C @ =gUnknown_2021CF0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r4, _08120550 @ =gUnknown_2021D18 + ldr r1, _08120554 @ =gUnknown_8416C49 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120548: .4byte gUnknown_2021CD0 +_0812054C: .4byte gUnknown_2021CF0 +_08120550: .4byte gUnknown_2021D18 +_08120554: .4byte gUnknown_8416C49 + thumb_func_end sub_812050C + + thumb_func_start sub_8120558 +sub_8120558: @ 8120558 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _081205B0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081205B4 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8124B60 + ldr r1, _081205B8 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r1, _081205BC @ =gUnknown_2021CF0 + adds r0, r5, 0 + bl sub_8099E90 + ldr r4, _081205C0 @ =gUnknown_2021D18 + ldr r1, _081205C4 @ =gUnknown_8416CEA + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081205B0: .4byte gUnknown_203B0A0 +_081205B4: .4byte gUnknown_2024284 +_081205B8: .4byte gUnknown_2021CD0 +_081205BC: .4byte gUnknown_2021CF0 +_081205C0: .4byte gUnknown_2021D18 +_081205C4: .4byte gUnknown_8416CEA + thumb_func_end sub_8120558 + + thumb_func_start sub_81205C8 +sub_81205C8: @ 81205C8 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + lsls r5, r1, 16 + lsrs r4, r5, 16 + adds r7, r4, 0 + adds r0, r4, 0 + bl sub_80980F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081205F2 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8097D38 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08120606 +_081205F2: + mov r0, sp + strb r7, [r0] + mov r1, sp + lsrs r0, r5, 24 + strb r0, [r1, 0x1] + adds r0, r6, 0 + movs r1, 0xC + mov r2, sp + bl sub_804037C +_08120606: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81205C8 + + thumb_func_start sub_8120610 +sub_8120610: @ 8120610 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + strh r0, [r1] + cmp r0, 0 + bne _0812062C + movs r0, 0 + b _0812064E +_0812062C: + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + cmp r0, 0 + beq _0812064C + movs r1, 0 + mov r0, sp + strh r1, [r0] + adds r0, r4, 0 + movs r1, 0xC + mov r2, sp + bl sub_804037C + movs r0, 0x2 + b _0812064E +_0812064C: + movs r0, 0x1 +_0812064E: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8120610 + + thumb_func_start sub_8120658 +sub_8120658: @ 8120658 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _08120678 + cmp r0, 0x5 + beq _0812067E + ldr r1, _08120674 @ =gUnknown_8416285 + b _08120686 + .align 2, 0 +_08120674: .4byte gUnknown_8416285 +_08120678: + movs r0, 0xB6 + lsls r0, 1 + b _08120680 +_0812067E: + ldr r0, _08120698 @ =0x0000016d +_08120680: + bl sub_809A8BC + adds r1, r0, 0 +_08120686: + ldr r0, _0812069C @ =gUnknown_2021CD0 + bl sub_8008D84 + ldr r0, _081206A0 @ =gUnknown_2021D18 + ldr r1, _081206A4 @ =gUnknown_8416D78 + bl sub_8008FCC + pop {r0} + bx r0 + .align 2, 0 +_08120698: .4byte 0x0000016d +_0812069C: .4byte gUnknown_2021CD0 +_081206A0: .4byte gUnknown_2021D18 +_081206A4: .4byte gUnknown_8416D78 + thumb_func_end sub_8120658 + + thumb_func_start sub_81206A8 +sub_81206A8: @ 81206A8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _08120750 @ =gUnknown_3005098 + adds r7, r0, r1 + ldrh r0, [r7, 0x4] + ldrh r1, [r7] + adds r0, r1 + strh r0, [r7] + ldrh r0, [r7, 0x6] + subs r0, 0x1 + strh r0, [r7, 0x6] + movs r2, 0x8 + ldrsh r0, [r7, r2] + movs r5, 0x64 + muls r0, r5 + ldr r4, _08120754 @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x39 + adds r2, r7, 0 + bl sub_804037C + movs r3, 0x8 + ldrsh r2, [r7, r3] + adds r0, r2, 0 + muls r0, r5 + adds r0, r4 + ldr r6, _08120758 @ =gUnknown_203B0B4 + lsls r2, 4 + ldr r1, [r6] + adds r1, r2 + movs r2, 0x1 + bl sub_812199C + movs r0, 0x8 + ldrsh r2, [r7, r0] + adds r0, r2, 0 + muls r0, r5 + adds r0, r4 + lsls r2, 4 + ldr r1, [r6] + adds r1, r2 + bl sub_8121AF0 + movs r1, 0x6 + ldrsh r0, [r7, r1] + cmp r0, 0 + beq _08120724 + movs r2, 0 + ldrsh r1, [r7, r2] + cmp r1, 0 + beq _08120724 + movs r3, 0x2 + ldrsh r0, [r7, r3] + cmp r1, r0 + bne _08120746 +_08120724: + movs r0, 0 + ldrsh r1, [r7, r0] + movs r2, 0xA + ldrsh r0, [r7, r2] + cmp r1, r0 + ble _08120740 + ldr r0, _0812075C @ =gUnknown_2021CF0 + movs r3, 0xA + ldrsh r2, [r7, r3] + subs r1, r2 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 +_08120740: + mov r0, r8 + bl sub_807761C +_08120746: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08120750: .4byte gUnknown_3005098 +_08120754: .4byte gUnknown_2024284 +_08120758: .4byte gUnknown_203B0B4 +_0812075C: .4byte gUnknown_2021CF0 + thumb_func_end sub_81206A8 + + thumb_func_start sub_8120760 +sub_8120760: @ 8120760 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + mov r9, r1 + adds r5, r2, 0 + mov r10, r3 + ldr r7, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r5, 24 + lsrs r5, 24 + mov r0, r10 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + movs r0, 0x64 + mov r6, r9 + muls r6, r0 + ldr r0, _081207E4 @ =gUnknown_2024284 + adds r6, r0 + mov r0, r8 + lsls r4, r0, 2 + add r4, r8 + lsls r4, 3 + ldr r0, _081207E8 @ =gUnknown_3005098 + adds r4, r0 + adds r0, r6, 0 + movs r1, 0x39 + bl sub_803FBE8 + strh r0, [r4] + adds r0, r6, 0 + movs r1, 0x3A + bl sub_803FBE8 + strh r0, [r4, 0x2] + lsls r5, 24 + asrs r5, 24 + strh r5, [r4, 0x4] + mov r0, r10 + strh r0, [r4, 0x6] + mov r0, r9 + strh r0, [r4, 0x8] + ldrh r0, [r4] + strh r0, [r4, 0xA] + ldr r1, _081207EC @ =sub_81206A8 + mov r0, r8 + adds r2, r7, 0 + bl sub_80775E8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081207E4: .4byte gUnknown_2024284 +_081207E8: .4byte gUnknown_3005098 +_081207EC: .4byte sub_81206A8 + thumb_func_end sub_8120760 + + thumb_func_start sub_81207F0 +sub_81207F0: @ 81207F0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08120814 @ =gUnknown_3005098 + adds r3, r0, r1 + cmp r5, 0x5 + bhi _08120852 + lsls r0, r5, 2 + ldr r1, _08120818 @ =_0812081C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08120814: .4byte gUnknown_3005098 +_08120818: .4byte _0812081C + .align 2, 0 +_0812081C: + .4byte _08120834 + .4byte _0812083A + .4byte _0812083E + .4byte _08120842 + .4byte _08120846 + .4byte _0812084A +_08120834: + strh r2, [r3] + strh r2, [r3, 0xA] + b _08120852 +_0812083A: + strh r2, [r3, 0x2] + b _08120852 +_0812083E: + strh r2, [r3, 0x4] + b _08120852 +_08120842: + strh r2, [r3, 0x6] + b _08120852 +_08120846: + strh r2, [r3, 0x8] + b _08120852 +_0812084A: + ldr r1, _08120858 @ =sub_81206A8 + adds r0, r4, 0 + bl sub_80775E8 +_08120852: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120858: .4byte sub_81206A8 + thumb_func_end sub_81207F0 + + thumb_func_start sub_812085C +sub_812085C: @ 812085C + push {lr} + adds r1, r0, 0 + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + beq _0812086C + movs r0, 0x1 + b _0812089E +_0812086C: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08120878 + movs r0, 0x2 + b _0812089E +_08120878: + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _08120884 + movs r0, 0x3 + b _0812089E +_08120884: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08120890 + movs r0, 0x4 + b _0812089E +_08120890: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0812089C + movs r0, 0 + b _0812089E +_0812089C: + movs r0, 0x5 +_0812089E: + pop {r1} + bx r1 + thumb_func_end sub_812085C + + thumb_func_start sub_81208A4 +sub_81208A4: @ 81208A4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _081208B6 + movs r0, 0x7 + b _081208DE +_081208B6: + adds r0, r4, 0 + movs r1, 0x37 + bl sub_803FBE8 + bl sub_812085C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _081208DE + adds r0, r4, 0 + movs r1, 0 + bl sub_8043A70 + lsls r0, 24 + cmp r0, 0 + bne _081208DC + movs r0, 0 + b _081208DE +_081208DC: + movs r0, 0x6 +_081208DE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81208A4 + + thumb_func_start sub_81208E4 +sub_81208E4: @ 81208E4 + push {r4,r5,lr} + ldr r2, _08120934 @ =gUnknown_203B0A0 + ldrb r1, [r2, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0xB + bne _0812096E + adds r5, r2, 0 + adds r5, 0xE + movs r0, 0 + strh r0, [r2, 0xE] + ldr r0, _08120938 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0 + bne _08120944 + movs r4, 0 + ldr r0, _0812093C @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r4, r0 + bcs _0812096E +_0812090C: + movs r0, 0x64 + muls r0, r4 + ldr r1, _08120940 @ =gUnknown_2024284 + adds r0, r1 + bl sub_812097C + lsls r0, 16 + lsrs r0, 16 + lsls r0, r4 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r5] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0812093C @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r4, r0 + bcc _0812090C + b _0812096E + .align 2, 0 +_08120934: .4byte gUnknown_203B0A0 +_08120938: .4byte gUnknown_20370C2 +_0812093C: .4byte gUnknown_2024029 +_08120940: .4byte gUnknown_2024284 +_08120944: + movs r4, 0 + b _08120966 +_08120948: + movs r0, 0x64 + muls r0, r4 + ldr r1, _08120974 @ =gUnknown_2024284 + adds r0, r1 + bl sub_81209AC + lsls r0, 16 + lsrs r0, 16 + lsls r0, r4 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r5] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_08120966: + ldr r0, _08120978 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r4, r0 + bcc _08120948 +_0812096E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120974: .4byte gUnknown_2024284 +_08120978: .4byte gUnknown_2024029 + thumb_func_end sub_81208E4 + + thumb_func_start sub_812097C +sub_812097C: @ 812097C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _081209A2 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8149A00 + cmp r0, 0 + beq _081209A2 + movs r0, 0x1 + b _081209A4 +_081209A2: + movs r0, 0 +_081209A4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812097C + + thumb_func_start sub_81209AC +sub_81209AC: @ 81209AC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _081209CA + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0x55 + bne _081209CA + movs r0, 0x1 + b _081209CC +_081209CA: + movs r0, 0 +_081209CC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81209AC + + thumb_func_start sub_81209D4 +sub_81209D4: @ 81209D4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081209F0 @ =gUnknown_203B0A0 + movs r2, 0xE + ldrsh r1, [r1, r2] + asrs r1, r0 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + bne _081209EC + movs r0, 0 +_081209EC: + pop {r1} + bx r1 + .align 2, 0 +_081209F0: .4byte gUnknown_203B0A0 + thumb_func_end sub_81209D4 + + thumb_func_start sub_81209F4 +sub_81209F4: @ 81209F4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r5, 0 + bl sub_81209D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08120A24 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08120A20 @ =gUnknown_20370C0 + strh r5, [r0] + adds r0, r4, 0 + bl sub_811FA78 + b _08120A46 + .align 2, 0 +_08120A20: .4byte gUnknown_20370C0 +_08120A24: + movs r0, 0x1A + bl sub_80722CC + ldr r0, _08120A4C @ =gUnknown_8417696 + movs r1, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08120A50 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08120A54 @ =sub_81203B8 + str r1, [r0] +_08120A46: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120A4C: .4byte gUnknown_8417696 +_08120A50: .4byte gUnknown_3005090 +_08120A54: .4byte sub_81203B8 + thumb_func_end sub_81209F4 + + thumb_func_start sub_8120A58 +sub_8120A58: @ 8120A58 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08120A84 @ =gUnknown_84176B8 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08120A88 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08120A8C @ =sub_8120A90 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120A84: .4byte gUnknown_84176B8 +_08120A88: .4byte gUnknown_3005090 +_08120A8C: .4byte sub_8120A90 + thumb_func_end sub_8120A58 + + thumb_func_start sub_8120A90 +sub_8120A90: @ 8120A90 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08120AB4 + bl sub_812200C + ldr r0, _08120ABC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08120AC0 @ =sub_8120AC4 + str r0, [r1] +_08120AB4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120ABC: .4byte gUnknown_3005090 +_08120AC0: .4byte sub_8120AC4 + thumb_func_end sub_8120A90 + + thumb_func_start sub_8120AC4 +sub_8120AC4: @ 8120AC4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08120AEA + cmp r1, 0 + bgt _08120AE4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08120AFC + b _08120B10 +_08120AE4: + cmp r1, 0x1 + beq _08120B02 + b _08120B10 +_08120AEA: + ldr r1, _08120AF8 @ =gUnknown_20370C0 + movs r0, 0x7 + strh r0, [r1] + adds r0, r4, 0 + bl sub_811FA78 + b _08120B10 + .align 2, 0 +_08120AF8: .4byte gUnknown_20370C0 +_08120AFC: + movs r0, 0x5 + bl sub_80722CC +_08120B02: + ldr r0, _08120B18 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08120B1C @ =sub_81203B8 + str r0, [r1] +_08120B10: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120B18: .4byte gUnknown_3005090 +_08120B1C: .4byte sub_81203B8 + thumb_func_end sub_8120AC4 + + thumb_func_start sub_8120B20 +sub_8120B20: @ 8120B20 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r7, r4, 0 + lsls r2, 24 + lsrs r6, r2, 24 + mov r8, r6 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + beq _08120B42 + movs r0, 0x3 + b _08120B9E +_08120B42: + movs r0, 0x90 + lsls r0, 1 + cmp r4, r0 + bls _08120B64 + adds r1, r4, 0 + subs r1, 0x21 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8043C2C + cmp r0, 0 + beq _08120B7C + adds r0, r7, 0 + bl sub_8125A78 + b _08120B86 +_08120B64: + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r6, 0 + bl sub_8120BE8 + lsls r0, 24 + cmp r0, 0 + bne _08120B80 +_08120B7C: + movs r0, 0x1 + b _08120B9E +_08120B80: + mov r0, r8 + bl sub_8120BA8 +_08120B86: + lsls r0, 16 + lsrs r1, r0, 16 + adds r0, r5, 0 + bl sub_8125AC0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08120B9C + movs r0, 0 + b _08120B9E +_08120B9C: + movs r0, 0x2 +_08120B9E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8120B20 + + thumb_func_start sub_8120BA8 +sub_8120BA8: @ 8120BA8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x10 + beq _08120BC8 + cmp r1, 0x10 + bgt _08120BBC + cmp r1, 0xF + beq _08120BC2 + b _08120BD6 +_08120BBC: + cmp r1, 0x11 + beq _08120BD0 + b _08120BD6 +_08120BC2: + movs r0, 0xA9 + lsls r0, 1 + b _08120BDE +_08120BC8: + ldr r0, _08120BCC @ =0x00000133 + b _08120BDE + .align 2, 0 +_08120BCC: .4byte 0x00000133 +_08120BD0: + movs r0, 0x9A + lsls r0, 1 + b _08120BDE +_08120BD6: + ldr r0, _08120BE4 @ =gUnknown_8459B60 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] +_08120BDE: + pop {r1} + bx r1 + .align 2, 0 +_08120BE4: .4byte gUnknown_8459B60 + thumb_func_end sub_8120BA8 + + thumb_func_start sub_8120BE8 +sub_8120BE8: @ 8120BE8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r2, r1, 24 + cmp r2, 0x10 + beq _08120C0C + cmp r2, 0x10 + bgt _08120C00 + cmp r2, 0xF + beq _08120C06 + b _08120C18 +_08120C00: + cmp r2, 0x11 + beq _08120C12 + b _08120C18 +_08120C06: + cmp r0, 0x3 + beq _08120C34 + b _08120C2A +_08120C0C: + cmp r0, 0x6 + beq _08120C34 + b _08120C2A +_08120C12: + cmp r0, 0x9 + beq _08120C34 + b _08120C2A +_08120C18: + ldr r1, _08120C30 @ =gUnknown_8459B7E + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + asrs r0, r2 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08120C34 +_08120C2A: + movs r0, 0 + b _08120C36 + .align 2, 0 +_08120C30: .4byte gUnknown_8459B7E +_08120C34: + movs r0, 0x1 +_08120C36: + pop {r1} + bx r1 + thumb_func_end sub_8120BE8 + + thumb_func_start sub_8120C3C +sub_8120C3C: @ 8120C3C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08120C60 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08120C5C + ldr r0, _08120C64 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _08120C68 @ =sub_8120C6C + str r0, [r1] +_08120C5C: + pop {r0} + bx r0 + .align 2, 0 +_08120C60: .4byte gUnknown_2037AB8 +_08120C64: .4byte gUnknown_3005090 +_08120C68: .4byte sub_8120C6C + thumb_func_end sub_8120C3C + + thumb_func_start sub_8120C6C +sub_8120C6C: @ 8120C6C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08120C9C @ =0xffff1fff + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x6 + bl sub_8070588 + ldr r1, _08120CA0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08120CA4 @ =sub_8120CA8 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120C9C: .4byte 0xffff1fff +_08120CA0: .4byte gUnknown_3005090 +_08120CA4: .4byte sub_8120CA8 + thumb_func_end sub_8120C6C + + thumb_func_start sub_8120CA8 +sub_8120CA8: @ 8120CA8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08120CCC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08120CC8 + ldr r0, _08120CD0 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _08120CD4 @ =sub_8120CD8 + str r0, [r1] +_08120CC8: + pop {r0} + bx r0 + .align 2, 0 +_08120CCC: .4byte gUnknown_2037AB8 +_08120CD0: .4byte gUnknown_3005090 +_08120CD4: .4byte sub_8120CD8 + thumb_func_end sub_8120CA8 + + thumb_func_start sub_8120CD8 +sub_8120CD8: @ 8120CD8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_81220D4 + ldr r2, _08120D00 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x8] + ldr r0, _08120D04 @ =sub_8120D08 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120D00: .4byte gUnknown_3005090 +_08120D04: .4byte sub_8120D08 + thumb_func_end sub_8120CD8 + + thumb_func_start sub_8120D08 +sub_8120D08: @ 8120D08 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r4, r1, 3 + ldr r5, _08120D38 @ =gUnknown_3005098 + adds r0, r4, r5 + ldrb r0, [r0] + bl sub_80BF518 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _08120D30 + adds r0, r5, 0 + subs r0, 0x8 + adds r0, r4, r0 + ldr r1, _08120D3C @ =sub_8120D40 + str r1, [r0] +_08120D30: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120D38: .4byte gUnknown_3005098 +_08120D3C: .4byte sub_8120D40 + thumb_func_end sub_8120D08 + + thumb_func_start sub_8120D40 +sub_8120D40: @ 8120D40 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08120D70 @ =0xffff0008 + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0x6 + movs r3, 0 + bl sub_8070588 + ldr r1, _08120D74 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08120D78 @ =sub_8120D7C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120D70: .4byte 0xffff0008 +_08120D74: .4byte gUnknown_3005090 +_08120D78: .4byte sub_8120D7C + thumb_func_end sub_8120D40 + + thumb_func_start sub_8120D7C +sub_8120D7C: @ 8120D7C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08120DA0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08120D9C + ldr r0, _08120DA4 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _08120DA8 @ =sub_8120DAC + str r0, [r1] +_08120D9C: + pop {r0} + bx r0 + .align 2, 0 +_08120DA0: .4byte gUnknown_2037AB8 +_08120DA4: .4byte gUnknown_3005090 +_08120DA8: .4byte sub_8120DAC + thumb_func_end sub_8120D7C + + thumb_func_start sub_8120DAC +sub_8120DAC: @ 8120DAC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r5, _08120DD4 @ =gUnknown_3005098 + adds r0, r4, r5 + ldrb r0, [r0] + ldr r1, _08120DD8 @ =gUnknown_8417494 + bl sub_8122084 + subs r5, 0x8 + adds r4, r5 + ldr r0, _08120DDC @ =sub_8120DE0 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08120DD4: .4byte gUnknown_3005098 +_08120DD8: .4byte gUnknown_8417494 +_08120DDC: .4byte sub_8120DE0 + thumb_func_end sub_8120DAC + + thumb_func_start sub_8120DE0 +sub_8120DE0: @ 8120DE0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r5, r1, 3 + ldr r6, _08120E14 @ =gUnknown_3005098 + adds r4, r5, r6 + ldrb r0, [r4] + bl sub_80BF518 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _08120E0E + ldrb r0, [r4] + bl sub_8122110 + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _08120E18 @ =sub_8120E1C + str r1, [r0] +_08120E0E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08120E14: .4byte gUnknown_3005098 +_08120E18: .4byte sub_8120E1C + thumb_func_end sub_8120DE0 + + thumb_func_start sub_8120E1C +sub_8120E1C: @ 8120E1C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08120E4C @ =0x0000fff7 + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0x6 + movs r3, 0 + bl sub_8070588 + ldr r1, _08120E50 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08120E54 @ =sub_8120E58 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120E4C: .4byte 0x0000fff7 +_08120E50: .4byte gUnknown_3005090 +_08120E54: .4byte sub_8120E58 + thumb_func_end sub_8120E1C + + thumb_func_start sub_8120E58 +sub_8120E58: @ 8120E58 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08120E90 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08120EAC + movs r0, 0 + movs r1, 0x4F + movs r2, 0xD0 + bl sub_815001C + movs r0, 0 + movs r1, 0x58 + movs r2, 0xF0 + bl sub_814FF2C + ldr r0, _08120E94 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x3 + bne _08120E98 + movs r0, 0x5 + bl sub_8121D0C + b _08120E9E + .align 2, 0 +_08120E90: .4byte gUnknown_2037AB8 +_08120E94: .4byte gUnknown_203B0A0 +_08120E98: + movs r0, 0 + bl sub_8121D0C +_08120E9E: + ldr r0, _08120EB4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08120EB8 @ =sub_811FB28 + str r0, [r1] +_08120EAC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120EB4: .4byte gUnknown_3005090 +_08120EB8: .4byte sub_811FB28 + thumb_func_end sub_8120E58 + + thumb_func_start sub_8120EBC +sub_8120EBC: @ 8120EBC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08120ED8 @ =gUnknown_3005098 + adds r3, r1, r0 + movs r2, 0 + strh r2, [r3] + subs r0, 0x8 + adds r1, r0 + ldr r0, _08120EDC @ =sub_8120EE0 + str r0, [r1] + bx lr + .align 2, 0 +_08120ED8: .4byte gUnknown_3005098 +_08120EDC: .4byte sub_8120EE0 + thumb_func_end sub_8120EBC + + thumb_func_start sub_8120EE0 +sub_8120EE0: @ 8120EE0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08120F1C @ =gUnknown_3005098 + adds r6, r0, r1 + ldr r0, _08120F20 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08120F68 + adds r0, r5, 0 + bl sub_8120F78 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08120F68 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0xA0 + beq _08120F38 + cmp r0, 0xA0 + bgt _08120F24 + cmp r0, 0x50 + beq _08120F2A + b _08120F62 + .align 2, 0 +_08120F1C: .4byte gUnknown_3005098 +_08120F20: .4byte gUnknown_2037AB8 +_08120F24: + cmp r0, 0xF0 + beq _08120F44 + b _08120F62 +_08120F2A: + ldr r0, _08120F34 @ =gUnknown_203B0A9 + movs r1, 0x2 + bl sub_811FF94 + b _08120F62 + .align 2, 0 +_08120F34: .4byte gUnknown_203B0A9 +_08120F38: + movs r0, 0x5 + bl sub_80722CC + bl sub_8122BD4 + b _08120F62 +_08120F44: + ldr r4, _08120F70 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xE + bl sub_8121CE4 + ldr r1, _08120F74 @ =gUnknown_845A618 + ldr r0, [r4] + ldrb r0, [r0, 0xF] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_08120F62: + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] +_08120F68: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08120F70: .4byte gUnknown_203B09C +_08120F74: .4byte gUnknown_845A618 + thumb_func_end sub_8120EE0 + + thumb_func_start sub_8120F78 +sub_8120F78: @ 8120F78 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08120F90 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08120F94 + movs r0, 0 + b _08120FA4 + .align 2, 0 +_08120F90: .4byte gUnknown_30030F0 +_08120F94: + ldr r0, _08120FA8 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _08120FAC @ =sub_8120FB0 + str r0, [r1, 0x4] + adds r0, r2, 0 + bl sub_811FA78 + movs r0, 0x1 +_08120FA4: + pop {r1} + bx r1 + .align 2, 0 +_08120FA8: .4byte gUnknown_203B09C +_08120FAC: .4byte sub_8120FB0 + thumb_func_end sub_8120F78 + + thumb_func_start sub_8120FB0 +sub_8120FB0: @ 8120FB0 + push {lr} + bl sub_8011174 + bl sub_804C230 + bl sub_815AC20 + ldr r0, _08120FC8 @ =sub_815ABFC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_08120FC8: .4byte sub_815ABFC + thumb_func_end sub_8120FB0 + + thumb_func_start sub_8120FCC +sub_8120FCC: @ 8120FCC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08120FE8 @ =gUnknown_3005098 + adds r3, r1, r0 + movs r2, 0 + strh r2, [r3] + subs r0, 0x8 + adds r1, r0 + ldr r0, _08120FEC @ =sub_8120FF0 + str r0, [r1] + bx lr + .align 2, 0 +_08120FE8: .4byte gUnknown_3005098 +_08120FEC: .4byte sub_8120FF0 + thumb_func_end sub_8120FCC + + thumb_func_start sub_8120FF0 +sub_8120FF0: @ 8120FF0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _0812102C @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r0, _08121030 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08121048 + adds r0, r2, 0 + bl sub_8120F78 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08121048 + ldrh r1, [r4] + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0x50 + beq _08121034 + adds r0, r1, 0x1 + strh r0, [r4] + b _08121048 + .align 2, 0 +_0812102C: .4byte gUnknown_3005098 +_08121030: .4byte gUnknown_2037AB8 +_08121034: + ldr r0, _08121050 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _08121054 @ =sub_8128184 + str r0, [r1, 0x4] + ldr r0, _08121058 @ =gUnknown_3005E98 + ldr r1, _0812105C @ =sub_81255BC + ldr r2, [r0] + adds r0, r5, 0 + bl _call_via_r2 +_08121048: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08121050: .4byte gUnknown_203B09C +_08121054: .4byte sub_8128184 +_08121058: .4byte gUnknown_3005E98 +_0812105C: .4byte sub_81255BC + thumb_func_end sub_8120FF0 + + thumb_func_start sub_8121060 +sub_8121060: @ 8121060 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x1 + beq _08121088 + cmp r0, 0x1 + bgt _08121076 + cmp r0, 0 + beq _0812107C + b _081210A0 +_08121076: + cmp r1, 0x2 + beq _08121094 + b _081210A0 +_0812107C: + ldr r0, _08121084 @ =gUnknown_845A010 + bl sub_8003B24 + b _081210A6 + .align 2, 0 +_08121084: .4byte gUnknown_845A010 +_08121088: + ldr r0, _08121090 @ =gUnknown_845A050 + bl sub_8003B24 + b _081210A6 + .align 2, 0 +_08121090: .4byte gUnknown_845A050 +_08121094: + ldr r0, _0812109C @ =gUnknown_845A090 + bl sub_8003B24 + b _081210A6 + .align 2, 0 +_0812109C: .4byte gUnknown_845A090 +_081210A0: + ldr r0, _081210F4 @ =gUnknown_845A0D0 + bl sub_8003B24 +_081210A6: + bl sub_8002C28 + movs r4, 0 +_081210AC: + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _081210AC + movs r0, 0 + movs r1, 0x4F + movs r2, 0xD0 + bl sub_815001C + movs r0, 0 + movs r1, 0x58 + movs r2, 0xF0 + bl sub_814FF2C + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xC0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0 + bl sub_8150408 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081210F4: .4byte gUnknown_845A0D0 + thumb_func_end sub_8121060 + + thumb_func_start sub_81210F8 +sub_81210F8: @ 81210F8 + push {r4-r6,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08121174 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x5 + bne _0812110E + b _08121238 +_0812110E: + cmp r2, 0x1 + bne _08121188 + ldr r0, _08121178 @ =gUnknown_845A118 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + ldr r5, _0812117C @ =gUnknown_84169D5 + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0x30 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + ldr r0, _08121180 @ =gUnknown_8459FFC + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + str r5, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0 + movs r3, 0x1 + bl sub_812E5A4 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8003F20 + ldr r0, _08121184 @ =gUnknown_845A110 + bl sub_8003CE4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + b _08121194 + .align 2, 0 +_08121174: .4byte gUnknown_203B0A0 +_08121178: .4byte gUnknown_845A118 +_0812117C: .4byte gUnknown_84169D5 +_08121180: .4byte gUnknown_8459FFC +_08121184: .4byte gUnknown_845A110 +_08121188: + ldr r0, _081211E0 @ =gUnknown_845A108 + bl sub_8003CE4 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0x3 +_08121194: + adds r0, r6, 0 + movs r1, 0 + bl sub_800445C + ldr r0, _081211E4 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0xA + beq _081211F0 + ldr r4, _081211E8 @ =gUnknown_84161C1 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0x30 + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + adds r1, r5, r1 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _081211EC @ =gUnknown_8459FFC + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0x1 + bl sub_812E51C + b _08121224 + .align 2, 0 +_081211E0: .4byte gUnknown_845A108 +_081211E4: .4byte gUnknown_203B0A0 +_081211E8: .4byte gUnknown_84161C1 +_081211EC: .4byte gUnknown_8459FFC +_081211F0: + ldr r4, _08121240 @ =gUnknown_84161C8 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0x30 + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + adds r1, r5, r1 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _08121244 @ =gUnknown_8459FFC + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0x1 + bl sub_812E51C +_08121224: + adds r0, r6, 0 + bl sub_8003FA0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80F67A4 +_08121238: + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08121240: .4byte gUnknown_84161C8 +_08121244: .4byte gUnknown_8459FFC + thumb_func_end sub_81210F8 + + thumb_func_start sub_8121248 +sub_8121248: @ 8121248 + lsls r0, 24 + ldr r1, _08121258 @ =gUnknown_203B09C + lsrs r0, 23 + adds r0, 0x18 + ldr r1, [r1] + adds r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_08121258: .4byte gUnknown_203B09C + thumb_func_end sub_8121248 + + thumb_func_start sub_812125C +sub_812125C: @ 812125C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + str r1, [sp, 0xC] + ldr r1, [sp, 0x4C] + ldr r4, [sp, 0x50] + ldr r5, [sp, 0x54] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x14] + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x18] + lsls r4, 24 + lsrs r6, r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r10, r5 + mov r0, r10 + muls r0, r6 + lsls r0, 5 + bl sub_8002BB0 + mov r9, r0 + cmp r0, 0 + beq _0812132A + movs r5, 0 + ldr r0, [sp, 0x14] + lsls r0, 19 + str r0, [sp, 0x1C] + ldr r1, [sp, 0x18] + lsls r1, 19 + str r1, [sp, 0x20] + lsls r2, r6, 19 + str r2, [sp, 0x24] + mov r0, r10 + lsls r0, 19 + str r0, [sp, 0x28] + cmp r5, r10 + bcs _08121308 +_081212BE: + movs r4, 0 + adds r1, r5, 0x1 + mov r8, r1 + cmp r4, r6 + bcs _081212FE + ldr r2, [sp, 0x18] + adds r0, r2, r5 + ldr r2, [sp, 0x10] + adds r1, r0, 0 + muls r1, r2 + adds r7, r1, 0 +_081212D4: + ldr r1, [sp, 0x14] + adds r0, r1, r4 + adds r0, r7 + ldr r2, [sp, 0xC] + adds r0, r2, r0 + ldrb r0, [r0] + bl sub_811F620 + adds r1, r5, 0 + muls r1, r6 + adds r1, r4 + lsls r1, 5 + add r1, r9 + movs r2, 0x10 + bl CpuSet + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _081212D4 +_081212FE: + mov r1, r8 + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, r10 + bcc _081212BE +_08121308: + ldr r0, [sp, 0x1C] + lsrs r2, r0, 16 + ldr r1, [sp, 0x20] + lsrs r3, r1, 16 + ldr r1, [sp, 0x24] + lsrs r0, r1, 16 + str r0, [sp] + ldr r1, [sp, 0x28] + lsrs r0, r1, 16 + str r0, [sp, 0x4] + ldr r0, [sp, 0x8] + mov r1, r9 + bl sub_80041B8 + mov r0, r9 + bl sub_8002BC4 +_0812132A: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812125C + + thumb_func_start sub_812133C +sub_812133C: @ 812133C + push {r4-r6,lr} + sub sp, 0xC + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + cmp r3, 0 + bne _08121368 + cmp r4, 0 + bne _08121368 + movs r3, 0xA + movs r4, 0x7 +_08121368: + cmp r5, 0 + bne _08121384 + ldr r1, _08121380 @ =gUnknown_845A180 + str r2, [sp] + str r3, [sp, 0x4] + str r4, [sp, 0x8] + movs r2, 0xA + adds r3, r6, 0 + bl sub_812125C + b _08121394 + .align 2, 0 +_08121380: .4byte gUnknown_845A180 +_08121384: + ldr r1, _0812139C @ =gUnknown_845A1C6 + str r2, [sp] + str r3, [sp, 0x4] + str r4, [sp, 0x8] + movs r2, 0xA + adds r3, r6, 0 + bl sub_812125C +_08121394: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812139C: .4byte gUnknown_845A1C6 + thumb_func_end sub_812133C + + thumb_func_start sub_81213A0 +sub_81213A0: @ 81213A0 + push {r4-r6,lr} + sub sp, 0xC + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + cmp r3, 0 + bne _081213CC + cmp r4, 0 + bne _081213CC + movs r3, 0x12 + movs r4, 0x3 +_081213CC: + cmp r5, 0 + bne _081213E8 + ldr r1, _081213E4 @ =gUnknown_845A20C + str r2, [sp] + str r3, [sp, 0x4] + str r4, [sp, 0x8] + movs r2, 0x12 + adds r3, r6, 0 + bl sub_812125C + b _081213F8 + .align 2, 0 +_081213E4: .4byte gUnknown_845A20C +_081213E8: + ldr r1, _08121400 @ =gUnknown_845A242 + str r2, [sp] + str r3, [sp, 0x4] + str r4, [sp, 0x8] + movs r2, 0x12 + adds r3, r6, 0 + bl sub_812125C +_081213F8: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08121400: .4byte gUnknown_845A242 + thumb_func_end sub_81213A0 + + thumb_func_start sub_8121404 +sub_8121404: @ 8121404 + push {lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08121428 @ =gUnknown_845A278 + movs r2, 0 + str r2, [sp] + movs r2, 0x12 + str r2, [sp, 0x4] + movs r2, 0x3 + str r2, [sp, 0x8] + movs r2, 0x12 + movs r3, 0 + bl sub_812125C + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08121428: .4byte gUnknown_845A278 + thumb_func_end sub_8121404 + + thumb_func_start sub_812142C +sub_812142C: @ 812142C + push {r4-r7,lr} + lsls r1, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + ldrb r0, [r0, 0x8] + movs r1, 0x5 + bl sub_8004950 + lsls r0, 28 + lsrs r6, r0, 24 + adds r7, r6, 0 + movs r0, 0x20 + ands r0, r4 + cmp r0, 0 + beq _081214A0 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0812145C + ldr r5, _08121458 @ =gUnknown_845A2D4 + b _0812160A + .align 2, 0 +_08121458: .4byte gUnknown_845A2D4 +_0812145C: + ldr r5, _08121494 @ =gUnknown_845A2D4 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121498 @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _0812149C @ =gUnknown_845A2E3 + b _0812163E + .align 2, 0 +_08121494: .4byte gUnknown_845A2D4 +_08121498: .4byte gUnknown_845A2B2 +_0812149C: .4byte gUnknown_845A2E3 +_081214A0: + movs r0, 0x10 + ands r0, r4 + cmp r0, 0 + beq _081214EC + ldr r5, _081214E0 @ =gUnknown_845A2D4 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _081214E4 @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _081214E8 @ =gUnknown_845A2E3 + b _0812163E + .align 2, 0 +_081214E0: .4byte gUnknown_845A2D4 +_081214E4: .4byte gUnknown_845A2B2 +_081214E8: .4byte gUnknown_845A2E3 +_081214EC: + movs r0, 0x4 + ands r0, r4 + cmp r0, 0 + beq _08121548 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08121504 + ldr r5, _08121500 @ =gUnknown_845A2D4 + b _0812160A + .align 2, 0 +_08121500: .4byte gUnknown_845A2D4 +_08121504: + ldr r5, _0812153C @ =gUnknown_845A2D4 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121540 @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _08121544 @ =gUnknown_845A2E3 + b _0812163E + .align 2, 0 +_0812153C: .4byte gUnknown_845A2D4 +_08121540: .4byte gUnknown_845A2B2 +_08121544: .4byte gUnknown_845A2E3 +_08121548: + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _081215A4 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08121560 + ldr r5, _0812155C @ =gUnknown_845A2D1 + b _0812160A + .align 2, 0 +_0812155C: .4byte gUnknown_845A2D1 +_08121560: + ldr r5, _08121598 @ =gUnknown_845A2C8 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _0812159C @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _081215A0 @ =gUnknown_845A2DD + b _0812163E + .align 2, 0 +_08121598: .4byte gUnknown_845A2C8 +_0812159C: .4byte gUnknown_845A2B2 +_081215A0: .4byte gUnknown_845A2DD +_081215A4: + movs r0, 0x8 + ands r0, r4 + cmp r0, 0 + beq _08121600 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _081215BC + ldr r5, _081215B8 @ =gUnknown_845A2CE + b _0812160A + .align 2, 0 +_081215B8: .4byte gUnknown_845A2CE +_081215BC: + ldr r5, _081215F4 @ =gUnknown_845A2C5 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _081215F8 @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _081215FC @ =gUnknown_845A2DA + b _0812163E + .align 2, 0 +_081215F4: .4byte gUnknown_845A2C5 +_081215F8: .4byte gUnknown_845A2B2 +_081215FC: .4byte gUnknown_845A2DA +_08121600: + movs r0, 0x1 + ands r5, r0 + cmp r5, 0 + beq _08121684 + ldr r5, _08121674 @ =gUnknown_845A2CB +_0812160A: + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121678 @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _0812167C @ =gUnknown_845A2E0 +_0812163E: + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121680 @ =gUnknown_845A2B5 + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + b _081216EC + .align 2, 0 +_08121674: .4byte gUnknown_845A2CB +_08121678: .4byte gUnknown_845A2B2 +_0812167C: .4byte gUnknown_845A2E0 +_08121680: .4byte gUnknown_845A2B5 +_08121684: + ldr r5, _081216F4 @ =gUnknown_845A2C2 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _081216F8 @ =gUnknown_845A2B2 + ldrb r1, [r4] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldr r5, _081216FC @ =gUnknown_845A2D7 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121700 @ =gUnknown_845A2B5 + ldrb r1, [r4] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x2] + bl sub_8121248 + ldrb r1, [r4, 0x2] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC +_081216EC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081216F4: .4byte gUnknown_845A2C2 +_081216F8: .4byte gUnknown_845A2B2 +_081216FC: .4byte gUnknown_845A2D7 +_08121700: .4byte gUnknown_845A2B5 + thumb_func_end sub_812142C + + thumb_func_start sub_8121704 +sub_8121704: @ 8121704 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + ldrb r5, [r3] + ldrb r3, [r3, 0x1] + lsls r4, r2, 1 + adds r4, r2 + ldr r2, _08121734 @ =gUnknown_8459FFC + adds r4, r2 + str r4, [sp] + movs r2, 0 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0 + adds r2, r5, 0 + bl sub_812E51C + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08121734: .4byte gUnknown_8459FFC + thumb_func_end sub_8121704 + + thumb_func_start sub_8121738 +sub_8121738: @ 8121738 + push {r4-r7,lr} + sub sp, 0x14 + adds r7, r0, 0 + adds r6, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08121788 + cmp r4, 0x1 + bne _08121772 + ldr r5, [r6] + ldrb r0, [r6, 0x8] + ldrb r1, [r5, 0x4] + lsrs r1, 3 + ldrb r2, [r5, 0x5] + lsrs r2, 3 + ldrb r3, [r5, 0x6] + lsrs r3, 3 + ldrb r4, [r5, 0x7] + lsrs r4, 3 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r4, [r5] + bl _call_via_r4 +_08121772: + adds r0, r7, 0 + add r1, sp, 0x8 + bl sub_81202E0 + ldrb r0, [r6, 0x8] + ldr r3, [r6] + adds r3, 0x4 + add r1, sp, 0x8 + movs r2, 0 + bl sub_8121704 +_08121788: + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8121738 + + thumb_func_start sub_8121790 +sub_8121790: @ 8121790 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r6, r0, 0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + mov r8, r4 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _081217FC + adds r0, r6, 0 + bl sub_81208A4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _081217BE + cmp r0, 0x6 + bne _081217FC +_081217BE: + cmp r4, 0 + beq _081217E4 + ldr r5, [r7] + ldrb r0, [r7, 0x8] + ldrb r1, [r5, 0x8] + lsrs r1, 3 + ldrb r2, [r5, 0x9] + lsrs r2, 3 + adds r2, 0x1 + ldrb r3, [r5, 0xA] + lsrs r3, 3 + ldrb r4, [r5, 0xB] + lsrs r4, 3 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r4, [r5] + bl _call_via_r4 +_081217E4: + mov r0, r8 + cmp r0, 0x2 + beq _081217FC + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r7, 0 + bl sub_8121808 +_081217FC: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8121790 + + thumb_func_start sub_8121808 +sub_8121808: @ 8121808 + push {r4-r6,lr} + adds r2, r0, 0 + adds r6, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r5, _08121848 @ =gUnknown_2021CF0 + adds r0, r5, 0 + adds r1, r2, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0812184C @ =gUnknown_2021CD0 + ldr r1, _08121850 @ =gUnknown_8416223 + adds r0, r4, 0 + bl sub_8008D84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8008DA4 + ldrb r0, [r6, 0x8] + ldr r3, [r6] + adds r3, 0x8 + adds r1, r4, 0 + movs r2, 0 + bl sub_8121704 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08121848: .4byte gUnknown_2021CF0 +_0812184C: .4byte gUnknown_2021CD0 +_08121850: .4byte gUnknown_8416223 + thumb_func_end sub_8121808 + + thumb_func_start sub_8121854 +sub_8121854: @ 8121854 + push {r4-r7,lr} + sub sp, 0x14 + adds r6, r0, 0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r2, 24 + cmp r2, 0x1 + bne _08121886 + ldr r5, [r7] + ldrb r0, [r7, 0x8] + ldrb r1, [r5, 0xC] + lsrs r1, 3 + ldrb r2, [r5, 0xD] + lsrs r2, 3 + adds r2, 0x1 + ldrb r3, [r5, 0xE] + lsrs r3, 3 + ldrb r4, [r5, 0xF] + lsrs r4, 3 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r4, [r5] + bl _call_via_r4 +_08121886: + adds r0, r6, 0 + add r1, sp, 0x8 + bl sub_81202E0 + adds r0, r6, 0 + bl sub_803F720 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + add r2, sp, 0x8 + adds r3, r7, 0 + bl sub_81218BC + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8121854 + + thumb_func_start sub_81218BC +sub_81218BC: @ 81218BC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r2 + adds r7, r3, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r5, r4, 0 + ldrb r0, [r7, 0x8] + movs r1, 0x5 + bl sub_8004950 + lsls r0, 28 + lsrs r6, r0, 24 + cmp r4, 0 + beq _08121982 + cmp r4, 0x20 + beq _081218EC + cmp r4, 0x1D + bne _08121900 +_081218EC: + movs r0, 0xB + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0812190C @ =gUnknown_8245EE0 + adds r1, r0 + mov r0, r9 + bl sub_8008E28 + cmp r0, 0 + beq _08121982 +_08121900: + mov r0, r8 + cmp r0, 0 + beq _08121910 + cmp r0, 0xFE + beq _08121950 + b _08121982 + .align 2, 0 +_0812190C: .4byte gUnknown_8245EE0 +_08121910: + ldr r5, _08121944 @ =gUnknown_845A2B8 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121948 @ =gUnknown_845A2AE + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r7, 0x8] + ldr r1, _0812194C @ =gUnknown_841621F + ldr r3, [r7] + adds r3, 0xC + movs r2, 0x2 + bl sub_8121704 + b _08121982 + .align 2, 0 +_08121944: .4byte gUnknown_845A2B8 +_08121948: .4byte gUnknown_845A2AE +_0812194C: .4byte gUnknown_841621F +_08121950: + ldr r5, _08121990 @ =gUnknown_845A2BA + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121994 @ =gUnknown_845A2AE + ldrb r1, [r4] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r6 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r7, 0x8] + ldr r1, _08121998 @ =gUnknown_8416221 + ldr r3, [r7] + adds r3, 0xC + movs r2, 0x2 + bl sub_8121704 +_08121982: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08121990: .4byte gUnknown_845A2BA +_08121994: .4byte gUnknown_845A2AE +_08121998: .4byte gUnknown_8416221 + thumb_func_end sub_81218BC + + thumb_func_start sub_812199C +sub_812199C: @ 812199C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r7, r0, 0 + adds r6, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + mov r8, r4 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _081219F6 + cmp r4, 0 + beq _081219DE + ldr r5, [r6] + ldrb r0, [r6, 0x8] + ldrb r1, [r5, 0x10] + lsrs r1, 3 + ldrb r2, [r5, 0x11] + lsrs r2, 3 + adds r2, 0x1 + ldrb r3, [r5, 0x12] + lsrs r3, 3 + ldrb r4, [r5, 0x13] + lsrs r4, 3 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r4, [r5] + bl _call_via_r4 +_081219DE: + mov r0, r8 + cmp r0, 0x2 + beq _081219F6 + adds r0, r7, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r6, 0 + bl sub_8121A04 +_081219F6: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812199C + + thumb_func_start sub_8121A04 +sub_8121A04: @ 8121A04 + push {r4,r5,lr} + adds r2, r0, 0 + adds r4, r1, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r5, _08121A38 @ =gUnknown_2021CD0 + adds r0, r5, 0 + adds r1, r2, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + movs r1, 0xBA + strb r1, [r0] + movs r1, 0xFF + strb r1, [r0, 0x1] + ldrb r0, [r4, 0x8] + ldr r3, [r4] + adds r3, 0x10 + adds r1, r5, 0 + movs r2, 0 + bl sub_8121704 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08121A38: .4byte gUnknown_2021CD0 + thumb_func_end sub_8121A04 + + thumb_func_start sub_8121A3C +sub_8121A3C: @ 8121A3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r7, r0, 0 + adds r6, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + mov r8, r4 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08121A98 + cmp r4, 0 + beq _08121A80 + ldr r5, [r6] + ldrb r0, [r6, 0x8] + ldrb r1, [r5, 0x14] + lsrs r1, 3 + adds r1, 0x1 + ldrb r2, [r5, 0x15] + lsrs r2, 3 + adds r2, 0x1 + ldrb r3, [r5, 0x16] + lsrs r3, 3 + ldrb r4, [r5, 0x17] + lsrs r4, 3 + str r4, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r4, [r5] + bl _call_via_r4 +_08121A80: + mov r0, r8 + cmp r0, 0x2 + beq _08121A98 + adds r0, r7, 0 + movs r1, 0x3A + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r6, 0 + bl sub_8121AA4 +_08121A98: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8121A3C + + thumb_func_start sub_8121AA4 +sub_8121AA4: @ 8121AA4 + push {r4-r6,lr} + adds r2, r0, 0 + adds r6, r1, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r5, _08121AE4 @ =gUnknown_2021CF0 + adds r0, r5, 0 + adds r1, r2, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _08121AE8 @ =gUnknown_2021CD0 + ldr r1, _08121AEC @ =gUnknown_841620C + adds r0, r4, 0 + bl sub_8008D84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8008DA4 + ldrb r0, [r6, 0x8] + ldr r3, [r6] + adds r3, 0x14 + adds r1, r4, 0 + movs r2, 0 + bl sub_8121704 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08121AE4: .4byte gUnknown_2021CF0 +_08121AE8: .4byte gUnknown_2021CD0 +_08121AEC: .4byte gUnknown_841620C + thumb_func_end sub_8121AA4 + + thumb_func_start sub_8121AF0 +sub_8121AF0: @ 8121AF0 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08121B24 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + adds r2, r6, 0 + bl sub_8121B2C +_08121B24: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8121AF0 + + thumb_func_start sub_8121B2C +sub_8121B2C: @ 8121B2C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r6, r2, 0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + ldrb r0, [r6, 0x8] + movs r1, 0x5 + bl sub_8004950 + lsls r0, 28 + lsrs r7, r0, 24 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + mov r2, r9 + lsls r1, r2, 16 + asrs r1, 16 + bl sub_804A614 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _08121B78 + cmp r0, 0x2 + blt _08121BA8 + cmp r0, 0x4 + bgt _08121BA8 + ldr r5, _08121B74 @ =gUnknown_845A2BC + b _08121B7A + .align 2, 0 +_08121B74: .4byte gUnknown_845A2BC +_08121B78: + ldr r5, _08121BA0 @ =gUnknown_845A2BE +_08121B7A: + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121BA4 @ =gUnknown_845A2B0 + ldrb r1, [r4] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + b _08121BCC + .align 2, 0 +_08121BA0: .4byte gUnknown_845A2BE +_08121BA4: .4byte gUnknown_845A2B0 +_08121BA8: + ldr r5, _08121C68 @ =gUnknown_845A2C0 + ldrb r0, [r5] + bl sub_8121248 + ldr r4, _08121C6C @ =gUnknown_845A2B0 + ldrb r1, [r4] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC + ldrb r0, [r5, 0x1] + bl sub_8121248 + ldrb r1, [r4, 0x1] + adds r1, r7 + movs r2, 0x2 + bl sub_80703EC +_08121BCC: + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + mov r2, r9 + lsls r1, r2, 16 + asrs r1, 16 + ldr r2, [r6] + ldrb r2, [r2, 0x1A] + bl sub_804A5E8 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r6, 0x8] + ldr r4, _08121C6C @ =gUnknown_845A2B0 + ldrb r1, [r4, 0x1] + ldr r3, [r6] + ldrb r2, [r3, 0x18] + ldrb r3, [r3, 0x19] + str r5, [sp] + movs r7, 0x1 + str r7, [sp, 0x4] + bl sub_8004378 + ldrb r0, [r6, 0x8] + ldrb r1, [r4] + ldr r3, [r6] + ldrb r2, [r3, 0x18] + ldrb r3, [r3, 0x19] + adds r3, 0x1 + str r5, [sp] + movs r4, 0x2 + str r4, [sp, 0x4] + bl sub_8004378 + ldr r1, [r6] + ldrb r0, [r1, 0x1A] + cmp r5, r0 + beq _08121C50 + ldrb r0, [r6, 0x8] + ldrb r2, [r1, 0x18] + adds r2, r5 + ldrb r3, [r1, 0x19] + ldrb r1, [r1, 0x1A] + subs r1, r5 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + str r7, [sp, 0x4] + movs r1, 0xD + bl sub_8004378 + ldrb r0, [r6, 0x8] + ldr r1, [r6] + ldrb r2, [r1, 0x18] + adds r2, r5 + ldrb r3, [r1, 0x19] + adds r3, 0x1 + ldrb r1, [r1, 0x1A] + subs r1, r5 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + str r4, [sp, 0x4] + movs r1, 0x2 + bl sub_8004378 +_08121C50: + ldrb r0, [r6, 0x8] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08121C68: .4byte gUnknown_845A2C0 +_08121C6C: .4byte gUnknown_845A2B0 + thumb_func_end sub_8121B2C + + thumb_func_start sub_8121C70 +sub_8121C70: @ 8121C70 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + adds r6, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r2, 24 + lsrs r2, 24 + adds r7, r2, 0 + cmp r7, 0 + beq _08121CAA + ldr r5, [r6] + ldrb r0, [r6, 0x8] + ldrb r1, [r5, 0x1C] + lsrs r1, 3 + ldrb r2, [r5, 0x1D] + lsrs r2, 3 + ldrb r3, [r5, 0x1E] + lsrs r3, 3 + ldrb r4, [r5, 0x1F] + lsrs r4, 3 + str r4, [sp] + movs r4, 0x1 + str r4, [sp, 0x4] + ldr r4, [r5] + bl _call_via_r4 +_08121CAA: + cmp r7, 0x2 + beq _08121CD0 + ldrb r0, [r6, 0x8] + ldr r1, [r6] + ldrb r2, [r1, 0x1C] + ldrb r3, [r1, 0x1D] + ldr r1, _08121CDC @ =gUnknown_8459FFC + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + ldr r4, _08121CE0 @ =gUnknown_845A354 + mov r5, r8 + lsls r1, r5, 2 + adds r1, r4 + ldr r1, [r1] + str r1, [sp, 0x8] + movs r1, 0x1 + bl sub_812E51C +_08121CD0: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08121CDC: .4byte gUnknown_8459FFC +_08121CE0: .4byte gUnknown_845A354 + thumb_func_end sub_8121C70 + + thumb_func_start sub_8121CE4 +sub_8121CE4: @ 8121CE4 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xFF + beq _08121D04 + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] + movs r0, 0x2 + bl sub_80F67A4 +_08121D04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8121CE4 + + thumb_func_start sub_8121D0C +sub_8121D0C: @ 8121D0C + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + ldr r0, _08121D3C @ =gUnknown_203B09C + ldr r4, [r0] + adds r5, r4, 0 + adds r5, 0xD + ldrb r0, [r4, 0xD] + cmp r0, 0xFF + beq _08121D26 + adds r0, r5, 0 + bl sub_8121CE4 +_08121D26: + cmp r6, 0x7F + beq _08121DE8 + adds r0, r6, 0 + subs r0, 0x16 + cmp r0, 0x4 + bhi _08121D80 + lsls r0, 2 + ldr r1, _08121D40 @ =_08121D44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08121D3C: .4byte gUnknown_203B09C +_08121D40: .4byte _08121D44 + .align 2, 0 +_08121D44: + .4byte _08121D58 + .4byte _08121D70 + .4byte _08121D70 + .4byte _08121D60 + .4byte _08121D68 +_08121D58: + ldr r0, _08121D5C @ =gUnknown_845A128 + b _08121D72 + .align 2, 0 +_08121D5C: .4byte gUnknown_845A128 +_08121D60: + ldr r0, _08121D64 @ =gUnknown_845A130 + b _08121D72 + .align 2, 0 +_08121D64: .4byte gUnknown_845A130 +_08121D68: + ldr r0, _08121D6C @ =gUnknown_845A138 + b _08121D72 + .align 2, 0 +_08121D6C: .4byte gUnknown_845A138 +_08121D70: + ldr r0, _08121D7C @ =gUnknown_845A140 +_08121D72: + bl sub_8003CE4 + strb r0, [r5] + b _08121D88 + .align 2, 0 +_08121D7C: .4byte gUnknown_845A140 +_08121D80: + ldr r0, _08121D9C @ =gUnknown_845A120 + bl sub_8003CE4 + strb r0, [r4, 0xD] +_08121D88: + cmp r6, 0 + bne _08121DB0 + ldr r0, _08121DA0 @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + lsls r0, 31 + cmp r0, 0 + beq _08121DA4 + movs r6, 0x2 + b _08121DB0 + .align 2, 0 +_08121D9C: .4byte gUnknown_845A120 +_08121DA0: .4byte gUnknown_203B09C +_08121DA4: + bl sub_8121DF8 + lsls r0, 24 + cmp r0, 0 + bne _08121DB0 + movs r6, 0x1 +_08121DB0: + ldrb r0, [r5] + movs r1, 0 + movs r2, 0x58 + movs r3, 0xF + bl sub_810F2E8 + ldr r4, _08121DF0 @ =gUnknown_2021D18 + ldr r1, _08121DF4 @ =gUnknown_845A2E8 + lsls r0, r6, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008FCC + ldrb r0, [r5] + movs r1, 0x2 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_8002C48 + movs r0, 0x2 + bl sub_80F67A4 +_08121DE8: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08121DF0: .4byte gUnknown_2021D18 +_08121DF4: .4byte gUnknown_845A2E8 + thumb_func_end sub_8121D0C + + thumb_func_start sub_8121DF8 +sub_8121DF8: @ 8121DF8 + push {r4-r7,lr} + ldr r7, _08121E0C @ =gUnknown_2024284 + movs r6, 0 + ldr r0, _08121E10 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x1 + bne _08121E14 +_08121E06: + movs r0, 0x1 + b _08121E56 + .align 2, 0 +_08121E0C: .4byte gUnknown_2024284 +_08121E10: .4byte gUnknown_203B0A0 +_08121E14: + movs r5, 0 +_08121E16: + movs r0, 0x64 + muls r0, r5 + adds r4, r7, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08121E46 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08121E40 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + beq _08121E46 +_08121E40: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08121E46: + cmp r6, 0x1 + bhi _08121E06 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08121E16 + movs r0, 0 +_08121E56: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8121DF8 + + thumb_func_start sub_8121E5C +sub_8121E5C: @ 8121E5C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x24 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + beq _08121EBC + cmp r4, 0x1 + bgt _08121E78 + cmp r4, 0 + beq _08121E7E + b _08121ECC +_08121E78: + cmp r4, 0x2 + beq _08121EC4 + b _08121ECC +_08121E7E: + ldr r0, _08121EB4 @ =gUnknown_203B09C + ldr r1, [r0] + ldrb r0, [r1, 0x17] + lsls r0, 1 + movs r3, 0x13 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0xA + str r0, [sp] + ldrb r0, [r1, 0x17] + lsls r0, 25 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0xE + str r0, [sp, 0x8] + ldr r0, _08121EB8 @ =0x000002bf + str r0, [sp, 0xC] + add r0, sp, 0x14 + movs r1, 0x2 + movs r2, 0x13 + bl sub_810FE50 + ldr r0, [sp, 0x14] + ldr r1, [sp, 0x18] + b _08121ED2 + .align 2, 0 +_08121EB4: .4byte gUnknown_203B09C +_08121EB8: .4byte 0x000002bf +_08121EBC: + ldr r0, _08121EC0 @ =gUnknown_845A148 + b _08121ECE + .align 2, 0 +_08121EC0: .4byte gUnknown_845A148 +_08121EC4: + ldr r0, _08121EC8 @ =gUnknown_845A150 + b _08121ECE + .align 2, 0 +_08121EC8: .4byte gUnknown_845A150 +_08121ECC: + ldr r0, _08121EF8 @ =gUnknown_845A158 +_08121ECE: + ldr r1, [r0, 0x4] + ldr r0, [r0] +_08121ED2: + str r0, [sp, 0x1C] + str r1, [sp, 0x20] + add r0, sp, 0x1C + bl sub_8003CE4 + ldr r6, _08121EFC @ =gUnknown_203B09C + ldr r1, [r6] + strb r0, [r1, 0xC] + ldr r0, [r6] + ldrb r0, [r0, 0xC] + movs r1, 0 + movs r2, 0x4F + movs r3, 0xD + bl sub_810F2E8 + cmp r4, 0x3 + bne _08121F00 + ldr r0, [r6] + b _08121FA2 + .align 2, 0 +_08121EF8: .4byte gUnknown_845A158 +_08121EFC: .4byte gUnknown_203B09C +_08121F00: + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0x2 + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + ldr r0, [r6] + ldrb r0, [r0, 0x17] + cmp r5, r0 + bcs _08121F7A + adds r7, r6, 0 + movs r6, 0 +_08121F2A: + ldr r1, [r7] + adds r0, r1, 0 + adds r0, 0xF + adds r4, r0, r5 + ldrb r0, [r4] + movs r2, 0x3 + cmp r0, 0x11 + bls _08121F3C + movs r2, 0x4 +_08121F3C: + ldrb r0, [r1, 0xC] + lsls r3, r5, 4 + adds r3, 0x2 + lsls r3, 24 + lsrs r3, 24 + mov r1, r8 + str r1, [sp] + str r6, [sp, 0x4] + lsls r1, r2, 1 + adds r1, r2 + ldr r2, _08121FB4 @ =gUnknown_8459FFC + adds r1, r2 + str r1, [sp, 0x8] + str r6, [sp, 0xC] + ldr r2, _08121FB8 @ =gUnknown_845A618 + ldrb r1, [r4] + lsls r1, 3 + adds r1, r2 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + mov r2, r9 + bl sub_812E5A4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [r7] + ldrb r0, [r0, 0x17] + cmp r5, r0 + bcc _08121F2A +_08121F7A: + ldr r4, _08121FBC @ =gUnknown_203B09C + ldr r2, [r4] + ldrb r0, [r2, 0xC] + movs r1, 0x10 + str r1, [sp] + ldrb r1, [r2, 0x17] + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x1 + str r1, [sp, 0xC] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F774 + movs r0, 0x2 + bl sub_80F67A4 + ldr r0, [r4] +_08121FA2: + ldrb r0, [r0, 0xC] + add sp, 0x24 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08121FB4: .4byte gUnknown_8459FFC +_08121FB8: .4byte gUnknown_845A618 +_08121FBC: .4byte gUnknown_203B09C + thumb_func_end sub_8121E5C + + thumb_func_start sub_8121FC0 +sub_8121FC0: @ 8121FC0 + push {r4,lr} + sub sp, 0x10 + adds r4, r0, 0 + movs r0, 0x6 + movs r1, 0 + movs r2, 0x4F + movs r3, 0xD + bl sub_810F2E8 + ldr r2, _08122008 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0x6 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F6CD0 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122008: .4byte gUnknown_3003E50 + thumb_func_end sub_8121FC0 + + thumb_func_start sub_812200C +sub_812200C: @ 812200C + push {lr} + sub sp, 0xC + ldr r0, _08122030 @ =gUnknown_845A160 + movs r1, 0x4F + str r1, [sp] + movs r1, 0xD + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08122030: .4byte gUnknown_845A160 + thumb_func_end sub_812200C + + thumb_func_start sub_8122034 +sub_8122034: @ 8122034 + push {r4,lr} + ldr r0, _0812205C @ =gUnknown_845A168 + bl sub_8003CE4 + ldr r4, _08122060 @ =gUnknown_203B09C + ldr r1, [r4] + strb r0, [r1, 0xC] + ldr r0, [r4] + ldrb r0, [r0, 0xC] + movs r1, 0 + movs r2, 0x4F + movs r3, 0xD + bl sub_810F2E8 + ldr r0, [r4] + ldrb r0, [r0, 0xC] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812205C: .4byte gUnknown_845A168 +_08122060: .4byte gUnknown_203B09C + thumb_func_end sub_8122034 + + thumb_func_start sub_8122064 +sub_8122064: @ 8122064 + push {r4,lr} + ldr r4, _08122080 @ =gUnknown_203B09C + ldr r0, [r4] + ldrb r0, [r0, 0xC] + bl sub_80040B8 + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122080: .4byte gUnknown_203B09C + thumb_func_end sub_8122064 + + thumb_func_start sub_8122084 +sub_8122084: @ 8122084 + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _081220CC @ =gUnknown_2021D18 + adds r0, r5, 0 + bl sub_8008FCC + ldr r2, _081220D0 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0x4 + adds r2, r5, 0 + bl sub_80F6CD0 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081220CC: .4byte gUnknown_2021D18 +_081220D0: .4byte gUnknown_3003E50 + thumb_func_end sub_8122084 + + thumb_func_start sub_81220D4 +sub_81220D4: @ 81220D4 + push {r4,lr} + ldr r0, _08122108 @ =gUnknown_845A170 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x4F + movs r2, 0xE0 + bl sub_814FEAC + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x4F + movs r3, 0xE + bl sub_810EDC4 + ldr r1, _0812210C @ =gUnknown_8417457 + adds r0, r4, 0 + bl sub_8122084 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08122108: .4byte gUnknown_845A170 +_0812210C: .4byte gUnknown_8417457 + thumb_func_end sub_81220D4 + + thumb_func_start sub_8122110 +sub_8122110: @ 8122110 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80040B8 + adds r0, r4, 0 + movs r1, 0 + bl sub_810F260 + adds r0, r4, 0 + bl sub_8003E3C + movs r0, 0x2 + bl sub_80F67A4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8122110 + + thumb_func_start sub_8122138 +sub_8122138: @ 8122138 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r0, _08122168 @ =gUnknown_203B09C + ldr r4, [r0] + cmp r5, 0x11 + bhi _0812216C + ldrb r0, [r4, 0xE] + cmp r0, 0xFF + beq _081221C0 + bl sub_80040B8 + ldrb r0, [r4, 0xE] + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4, 0xE] + movs r0, 0x2 + bl sub_80F67A4 + b _081221C0 + .align 2, 0 +_08122168: .4byte gUnknown_203B09C +_0812216C: + ldrb r0, [r4, 0xE] + cmp r0, 0xFF + bne _0812217A + ldr r0, _081221C8 @ =gUnknown_845A178 + bl sub_8003CE4 + strb r0, [r4, 0xE] +_0812217A: + ldrb r0, [r4, 0xE] + bl sub_8112F18 + movs r0, 0x2 + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4, 0xE] + str r0, [sp] + movs r1, 0 + str r1, [sp, 0x4] + ldr r0, _081221CC @ =gUnknown_845A00B + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldr r1, _081221D0 @ =gUnknown_845A37C + adds r0, r5, 0 + subs r0, 0x12 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [sp, 0x10] + adds r0, r2, 0 + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x6 + bl sub_812E5A4 + ldrb r0, [r4, 0xE] + bl sub_8003FA0 + movs r0, 0x2 + bl sub_80F67A4 +_081221C0: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081221C8: .4byte gUnknown_845A178 +_081221CC: .4byte gUnknown_845A00B +_081221D0: .4byte gUnknown_845A37C + thumb_func_end sub_8122138 + + thumb_func_start sub_81221D4 +sub_81221D4: @ 81221D4 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r7, r1, 0 + adds r4, r2, 0 + movs r6, 0x1 + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0812220A + ldr r0, _08122240 @ =gUnknown_30030F0 + ldr r1, _08122244 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812220A + ldr r0, _08122248 @ =gUnknown_845A59C + adds r0, r4, r0 + ldrb r1, [r0] + eors r1, r6 + negs r0, r1 + orrs r0, r1 + lsrs r6, r0, 31 +_0812220A: + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0 + bl sub_803FBE8 + adds r1, r0, 0 + str r6, [sp] + adds r0, r4, 0 + adds r2, r7, 0 + movs r3, 0x1 + bl sub_812224C + ldrb r0, [r7, 0x9] + adds r1, r5, 0 + bl sub_8122358 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08122240: .4byte gUnknown_30030F0 +_08122244: .4byte 0x00000439 +_08122248: .4byte gUnknown_845A59C + thumb_func_end sub_81221D4 + + thumb_func_start sub_812224C +sub_812224C: @ 812224C + push {r4-r7,lr} + sub sp, 0xC + adds r6, r1, 0 + adds r4, r2, 0 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r3, 24 + lsrs r7, r3, 24 + cmp r5, 0 + beq _0812229A + ldr r1, _081222A4 @ =sub_809718C + ldr r0, [r4, 0x4] + ldrb r2, [r0] + ldrb r3, [r0, 0x1] + movs r0, 0x4 + str r0, [sp] + str r6, [sp, 0x4] + ldr r0, [sp, 0x20] + str r0, [sp, 0x8] + adds r0, r5, 0 + bl sub_8096E18 + strb r0, [r4, 0x9] + ldr r2, _081222A8 @ =gUnknown_202063C + ldrb r0, [r4, 0x9] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r7, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_0812229A: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081222A4: .4byte sub_809718C +_081222A8: .4byte gUnknown_202063C + thumb_func_end sub_812224C + + thumb_func_start sub_81222AC +sub_81222AC: @ 81222AC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_804A614 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _0812230C + cmp r0, 0x2 + bgt _081222D4 + cmp r0, 0x1 + beq _08122324 + b _0812233C +_081222D4: + cmp r0, 0x3 + beq _081222F4 + cmp r0, 0x4 + bne _0812233C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _081222F0 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_8097414 + b _0812234C + .align 2, 0 +_081222F0: .4byte gUnknown_202063C +_081222F4: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _08122308 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_8097414 + b _0812234C + .align 2, 0 +_08122308: .4byte gUnknown_202063C +_0812230C: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _08122320 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x2 + bl sub_8097414 + b _0812234C + .align 2, 0 +_08122320: .4byte gUnknown_202063C +_08122324: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _08122338 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x3 + bl sub_8097414 + b _0812234C + .align 2, 0 +_08122338: .4byte gUnknown_202063C +_0812233C: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _08122354 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x4 + bl sub_8097414 +_0812234C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122354: .4byte gUnknown_202063C + thumb_func_end sub_81222AC + + thumb_func_start sub_8122358 +sub_8122358: @ 8122358 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r6, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81222AC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8122358 + + thumb_func_start sub_812238C +sub_812238C: @ 812238C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + ldr r5, _081223BC @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r6, r0, 2 + adds r2, r6, r5 + movs r7, 0 + movs r3, 0 + strh r3, [r2, 0x2E] + mov r12, r5 + cmp r1, 0 + bne _081223E4 + movs r1, 0x20 + ldrsh r0, [r2, r1] + cmp r0, 0x10 + bne _081223C4 + strh r3, [r2, 0x24] + ldr r0, _081223C0 @ =0x0000fffc + strh r0, [r2, 0x26] + b _081223CA + .align 2, 0 +_081223BC: .4byte gUnknown_202063C +_081223C0: .4byte 0x0000fffc +_081223C4: + ldr r0, _081223DC @ =0x0000fffc + strh r0, [r2, 0x24] + strh r3, [r2, 0x26] +_081223CA: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + mov r1, r12 + adds r1, 0x1C + adds r0, r1 + ldr r1, _081223E0 @ =sub_8122428 + b _081223F0 + .align 2, 0 +_081223DC: .4byte 0x0000fffc +_081223E0: .4byte sub_8122428 +_081223E4: + strh r3, [r2, 0x24] + strh r3, [r2, 0x26] + adds r0, r5, 0 + adds r0, 0x1C + adds r0, r6, r0 + ldr r1, _081223F8 @ =sub_81223FC +_081223F0: + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081223F8: .4byte sub_81223FC + thumb_func_end sub_812238C + + thumb_func_start sub_81223FC +sub_81223FC: @ 81223FC + push {r4,lr} + adds r4, r0, 0 + bl sub_8097228 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08122422 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08122420 + ldr r0, _0812241C @ =0x0000fffd + strh r0, [r4, 0x26] + b _08122422 + .align 2, 0 +_0812241C: .4byte 0x0000fffd +_08122420: + strh r1, [r4, 0x26] +_08122422: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81223FC + + thumb_func_start sub_8122428 +sub_8122428: @ 8122428 + push {lr} + bl sub_8097228 + pop {r0} + bx r0 + thumb_func_end sub_8122428 + + thumb_func_start sub_8122434 +sub_8122434: @ 8122434 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0812245C + ldr r0, _08122464 @ =gUnknown_845A43C + ldr r2, [r4, 0x4] + ldrb r1, [r2, 0x2] + ldrb r2, [r2, 0x3] + movs r3, 0 + bl sub_8006F8C + strb r0, [r4, 0xA] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81224B4 +_0812245C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08122464: .4byte gUnknown_845A43C + thumb_func_end sub_8122434 + + thumb_func_start sub_8122468 +sub_8122468: @ 8122468 + push {r4,r5,lr} + adds r4, r2, 0 + lsls r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + cmp r0, 0 + beq _081224A4 + ldr r0, _081224AC @ =gUnknown_845A43C + ldr r2, [r4, 0x4] + ldrb r1, [r2, 0x2] + ldrb r2, [r2, 0x3] + movs r3, 0 + bl sub_8006F8C + strb r0, [r4, 0xA] + ldr r2, _081224B0 @ =gUnknown_202063C + ldrb r0, [r4, 0xA] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_81224D0 +_081224A4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081224AC: .4byte gUnknown_845A43C +_081224B0: .4byte gUnknown_202063C + thumb_func_end sub_8122468 + + thumb_func_start sub_81224B4 +sub_81224B4: @ 81224B4 + push {r4,lr} + adds r4, r1, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl sub_81224D0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81224B4 + + thumb_func_start sub_81224D0 +sub_81224D0: @ 81224D0 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _081224F8 + ldr r2, _081224F4 @ =gUnknown_202063C + ldrb r1, [r4, 0xA] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + b _08122544 + .align 2, 0 +_081224F4: .4byte gUnknown_202063C +_081224F8: + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _0812251C + ldrb r1, [r4, 0xA] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08122518 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C + b _0812252E + .align 2, 0 +_08122518: .4byte gUnknown_202063C +_0812251C: + ldrb r1, [r4, 0xA] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0812254C @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800838C +_0812252E: + ldr r2, _0812254C @ =gUnknown_202063C + ldrb r1, [r4, 0xA] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 +_08122544: + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812254C: .4byte gUnknown_202063C + thumb_func_end sub_81224D0 + + thumb_func_start sub_8122550 +sub_8122550: @ 8122550 + push {lr} + ldr r0, _08122564 @ =gUnknown_845A42C + bl sub_80086DC + ldr r0, _08122568 @ =gUnknown_845A434 + bl sub_8008928 + pop {r0} + bx r0 + .align 2, 0 +_08122564: .4byte gUnknown_845A42C +_08122568: .4byte gUnknown_845A434 + thumb_func_end sub_8122550 + + thumb_func_start sub_812256C +sub_812256C: @ 812256C + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r2, 24 + cmp r2, 0 + beq _08122580 + cmp r2, 0x1 + beq _081225C8 + b _08122604 +_08122580: + movs r5, 0 + ldrb r0, [r6] + cmp r5, r0 + bcs _08122604 +_08122588: + movs r0, 0x64 + muls r0, r5 + ldr r1, _081225C4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _081225B4 + adds r0, r7, r5 + ldrb r4, [r0] + adds r0, r1, 0 + bl sub_80980F8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8122610 +_081225B4: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldrb r0, [r6] + cmp r5, r0 + bcc _08122588 + b _08122604 + .align 2, 0 +_081225C4: .4byte gUnknown_2024284 +_081225C8: + movs r5, 0 + b _081225FE +_081225CC: + movs r0, 0x64 + muls r0, r5 + ldr r1, _0812260C @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _081225F8 + adds r0, r5, r7 + ldrb r4, [r0, 0x6] + adds r0, r1, 0 + bl sub_80980F8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8122610 +_081225F8: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_081225FE: + ldrb r0, [r6, 0x1] + cmp r5, r0 + bcc _081225CC +_08122604: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812260C: .4byte gUnknown_202402C + thumb_func_end sub_812256C + + thumb_func_start sub_8122610 +sub_8122610: @ 8122610 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + adds r6, r0, 0 + mov r9, r1 + lsls r6, 24 + lsrs r6, 24 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _08122688 @ =gUnknown_202063C + mov r8, r0 + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + add r0, r8 + adds r0, 0x43 + ldrb r3, [r0] + ldr r0, _0812268C @ =gUnknown_845A43C + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + movs r1, 0xFA + movs r2, 0xAA + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + mov r0, r8 + adds r5, r4, r0 + movs r0, 0x4 + strh r0, [r5, 0x24] + movs r0, 0xA + strh r0, [r5, 0x26] + movs r0, 0x1C + add r8, r0 + add r4, r8 + ldr r0, _08122690 @ =sub_8122694 + str r0, [r4] + strh r6, [r5, 0x3C] + adds r0, r5, 0 + mov r1, r9 + bl sub_800838C + ldr r1, [r4] + adds r0, r5, 0 + bl _call_via_r1 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08122688: .4byte gUnknown_202063C +_0812268C: .4byte gUnknown_845A43C +_08122690: .4byte sub_8122694 + thumb_func_end sub_8122610 + + thumb_func_start sub_8122694 +sub_8122694: @ 8122694 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x3C] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _081226C4 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _081226C8 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _081226E6 + .align 2, 0 +_081226C4: .4byte gUnknown_202063C +_081226C8: + adds r3, r4, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x24] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x26] + ldrh r2, [r2, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] +_081226E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8122694 + + thumb_func_start sub_81226EC +sub_81226EC: @ 81226EC + push {r4,lr} + adds r4, r1, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0812270A + ldr r0, _08122710 @ =gUnknown_845A484 + ldr r2, [r4, 0x4] + ldrb r1, [r2, 0x6] + ldrb r2, [r2, 0x7] + movs r3, 0x8 + bl sub_8006F8C + strb r0, [r4, 0xB] +_0812270A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122710: .4byte gUnknown_845A484 + thumb_func_end sub_81226EC + + thumb_func_start sub_8122714 +sub_8122714: @ 8122714 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + cmp r0, 0 + beq _08122744 + ldr r0, _0812274C @ =gUnknown_845A484 + ldr r2, [r4, 0x4] + ldrb r1, [r2, 0x6] + ldrb r2, [r2, 0x7] + movs r3, 0x8 + bl sub_8006F8C + strb r0, [r4, 0xB] + ldr r2, _08122750 @ =gUnknown_202063C + ldrb r0, [r4, 0xB] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] +_08122744: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812274C: .4byte gUnknown_845A484 +_08122750: .4byte gUnknown_202063C + thumb_func_end sub_8122714 + + thumb_func_start sub_8122754 +sub_8122754: @ 8122754 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 24 + lsrs r3, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0812278C @ =gUnknown_845A484 + adds r1, r3, 0 + movs r3, 0x8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08122790 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r3, [r1, 0x5] + movs r2, 0xD + negs r2, r2 + ands r2, r3 + movs r3, 0x8 + orrs r2, r3 + strb r2, [r1, 0x5] + pop {r1} + bx r1 + .align 2, 0 +_0812278C: .4byte gUnknown_845A484 +_08122790: .4byte gUnknown_202063C + thumb_func_end sub_8122754 + + thumb_func_start sub_8122794 +sub_8122794: @ 8122794 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 24 + lsrs r3, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _081227B4 @ =gUnknown_845A4F4 + adds r1, r3, 0 + movs r3, 0x8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_081227B4: .4byte gUnknown_845A4F4 + thumb_func_end sub_8122794 + + thumb_func_start sub_81227B8 +sub_81227B8: @ 81227B8 + push {lr} + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r2, _081227D8 @ =gUnknown_202063C + adds r0, r2 + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_081227D8: .4byte gUnknown_202063C + thumb_func_end sub_81227B8 + + thumb_func_start sub_81227DC +sub_81227DC: @ 81227DC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + cmp r6, 0 + bne _08122820 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0812281C @ =gUnknown_202063C + mov r8, r0 + add r4, r8 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + lsls r5, r7, 4 + adds r5, r7 + lsls r5, 2 + add r5, r8 + adds r0, r5, 0 + movs r1, 0x4 + bl sub_800838C + strh r6, [r4, 0x26] + strh r6, [r5, 0x26] + b _0812284C + .align 2, 0 +_0812281C: .4byte gUnknown_202063C +_08122820: + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r0, _08122858 @ =gUnknown_202063C + mov r8, r0 + add r5, r8 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_800838C + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + add r4, r8 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_800838C + ldr r0, _0812285C @ =0x0000fffc + strh r0, [r5, 0x26] + movs r0, 0x4 + strh r0, [r4, 0x26] +_0812284C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08122858: .4byte gUnknown_202063C +_0812285C: .4byte 0x0000fffc + thumb_func_end sub_81227DC + + thumb_func_start sub_8122860 +sub_8122860: @ 8122860 + push {lr} + ldr r0, _08122878 @ =gUnknown_845A474 + bl sub_800EBCC + ldr r0, _0812287C @ =gUnknown_845A4EC + bl sub_800EBCC + ldr r0, _08122880 @ =gUnknown_845A47C + bl sub_800EC28 + pop {r0} + bx r0 + .align 2, 0 +_08122878: .4byte gUnknown_845A474 +_0812287C: .4byte gUnknown_845A4EC +_08122880: .4byte gUnknown_845A47C + thumb_func_end sub_8122860 + + thumb_func_start sub_8122884 +sub_8122884: @ 8122884 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _081228AC + ldr r0, _081228B4 @ =gUnknown_845A584 + ldr r2, [r4, 0x4] + ldrb r1, [r2, 0x4] + ldrb r2, [r2, 0x5] + movs r3, 0 + bl sub_8006F8C + strb r0, [r4, 0xC] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8122904 +_081228AC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081228B4: .4byte gUnknown_845A584 + thumb_func_end sub_8122884 + + thumb_func_start sub_81228B8 +sub_81228B8: @ 81228B8 + push {r4,r5,lr} + adds r4, r2, 0 + lsls r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r0, 0 + beq _081228F4 + ldr r0, _081228FC @ =gUnknown_845A584 + ldr r2, [r4, 0x4] + ldrb r1, [r2, 0x4] + ldrb r2, [r2, 0x5] + movs r3, 0 + bl sub_8006F8C + strb r0, [r4, 0xC] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_812291C + ldr r2, _08122900 @ =gUnknown_202063C + ldrb r0, [r4, 0xC] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] +_081228F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081228FC: .4byte gUnknown_845A584 +_08122900: .4byte gUnknown_202063C + thumb_func_end sub_81228B8 + + thumb_func_start sub_8122904 +sub_8122904: @ 8122904 + push {r4,lr} + adds r4, r1, 0 + bl sub_81208A4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_812291C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8122904 + + thumb_func_start sub_812291C +sub_812291C: @ 812291C + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0812292C + cmp r2, 0x6 + bne _08122948 +_0812292C: + ldr r2, _08122944 @ =gUnknown_202063C + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + b _08122972 + .align 2, 0 +_08122944: .4byte gUnknown_202063C +_08122948: + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0812297C @ =gUnknown_202063C + adds r0, r4 + subs r1, r2, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_800838C + ldrb r1, [r5, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 +_08122972: + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812297C: .4byte gUnknown_202063C + thumb_func_end sub_812291C + + thumb_func_start sub_8122980 +sub_8122980: @ 8122980 + push {lr} + ldr r0, _08122994 @ =gUnknown_845A574 + bl sub_800EBCC + ldr r0, _08122998 @ =gUnknown_845A57C + bl sub_800EC28 + pop {r0} + bx r0 + .align 2, 0 +_08122994: .4byte gUnknown_845A574 +_08122998: .4byte gUnknown_845A57C + thumb_func_end sub_8122980 + + thumb_func_start sub_812299C +sub_812299C: @ 812299C + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + cmp r2, 0 + bne _081229B0 + bl sub_81229FC + b _081229E8 +_081229B0: + ldr r4, _081229F0 @ =gUnknown_203B09C + ldr r1, [r4] + ldr r0, _081229F4 @ =gUnknown_845A760 + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1, 0x17] + movs r3, 0 + ldr r0, [r4] + ldrb r0, [r0, 0x17] + cmp r3, r0 + bcs _081229E8 + ldr r1, _081229F8 @ =gUnknown_845A72C + lsls r0, r2, 2 + adds r2, r0, r1 +_081229CC: + ldr r1, [r4] + adds r1, 0xF + adds r1, r3 + ldr r0, [r2] + adds r0, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, [r4] + ldrb r0, [r0, 0x17] + cmp r3, r0 + bcc _081229CC +_081229E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081229F0: .4byte gUnknown_203B09C +_081229F4: .4byte gUnknown_845A760 +_081229F8: .4byte gUnknown_845A72C + thumb_func_end sub_812299C + + thumb_func_start sub_81229FC +sub_81229FC: @ 81229FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + ldr r2, _08122A78 @ =gUnknown_203B09C + ldr r1, [r2] + movs r0, 0 + strb r0, [r1, 0x17] + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0xF + adds r1, 0x17 + movs r2, 0 + bl sub_806FEC8 + movs r7, 0 + ldr r0, _08122A7C @ =gUnknown_845A76E + ldrh r0, [r0] + str r0, [sp] + mov r0, r9 + adds r0, 0x64 + str r0, [sp, 0x4] +_08122A34: + movs r4, 0 + adds r1, r7, 0x1 + mov r8, r1 + ldr r0, [sp] + cmp r0, 0xC + beq _08122A90 + movs r0, 0x64 + mov r6, r10 + muls r6, r0 + ldr r5, _08122A7C @ =gUnknown_845A76E +_08122A48: + mov r1, r9 + adds r0, r1, r6 + adds r1, r7, 0 + adds r1, 0xD + bl sub_803FBE8 + lsls r1, r4, 1 + adds r1, r5 + ldrh r1, [r1] + cmp r0, r1 + bne _08122A80 + ldr r0, _08122A78 @ =gUnknown_203B09C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xF + adds r1, 0x17 + adds r2, r4, 0 + adds r2, 0x12 + lsls r2, 24 + lsrs r2, 24 + bl sub_806FEC8 + b _08122A90 + .align 2, 0 +_08122A78: .4byte gUnknown_203B09C +_08122A7C: .4byte gUnknown_845A76E +_08122A80: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r0, 0xC + bne _08122A48 +_08122A90: + mov r1, r8 + lsls r0, r1, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _08122A34 + ldr r0, [sp, 0x4] + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08122AB6 + ldr r0, _08122AE8 @ =gUnknown_203B09C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xF + adds r1, 0x17 + movs r2, 0x1 + bl sub_806FEC8 +_08122AB6: + movs r0, 0x64 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _08122AEC + ldr r0, _08122AE8 @ =gUnknown_203B09C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xF + adds r1, 0x17 + movs r2, 0x6 + bl sub_806FEC8 + b _08122AFC + .align 2, 0 +_08122AE8: .4byte gUnknown_203B09C +_08122AEC: + ldr r0, _08122B1C @ =gUnknown_203B09C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xF + adds r1, 0x17 + movs r2, 0x3 + bl sub_806FEC8 +_08122AFC: + ldr r0, _08122B1C @ =gUnknown_203B09C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xF + adds r1, 0x17 + movs r2, 0x2 + bl sub_806FEC8 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08122B1C: .4byte gUnknown_203B09C + thumb_func_end sub_81229FC + + thumb_func_start sub_8122B20 +sub_8122B20: @ 8122B20 + push {lr} + adds r2, r0, 0 + ldr r1, _08122B3C @ =gUnknown_203B0A0 + ldrb r0, [r1, 0x8] + lsls r0, 28 + lsrs r0, 28 + adds r3, r1, 0 + cmp r0, 0xA + bhi _08122BCA + lsls r0, 2 + ldr r1, _08122B40 @ =_08122B44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08122B3C: .4byte gUnknown_203B0A0 +_08122B40: .4byte _08122B44 + .align 2, 0 +_08122B44: + .4byte _08122B70 + .4byte _08122B80 + .4byte _08122BCA + .4byte _08122BCA + .4byte _08122B8C + .4byte _08122BCA + .4byte _08122BAC + .4byte _08122BCA + .4byte _08122BBE + .4byte _08122BC2 + .4byte _08122BC6 +_08122B70: + adds r0, r2, 0 + movs r1, 0x2D + bl sub_803FBE8 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + b _08122BCC +_08122B80: + adds r0, r2, 0 + bl sub_8127A84 + lsls r0, 24 + lsrs r1, r0, 24 + b _08122BCC +_08122B8C: + movs r0, 0x9 + ldrsb r0, [r3, r0] + bl sub_8127510 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08122BA4 + cmp r0, 0x1 + beq _08122BA8 + movs r1, 0x7 + b _08122BCC +_08122BA4: + movs r1, 0x4 + b _08122BCC +_08122BA8: + movs r1, 0x5 + b _08122BCC +_08122BAC: + adds r0, r2, 0 + movs r1, 0x2D + bl sub_803FBE8 + movs r1, 0x6 + cmp r0, 0 + beq _08122BCC + movs r1, 0x7 + b _08122BCC +_08122BBE: + movs r1, 0xA + b _08122BCC +_08122BC2: + movs r1, 0xB + b _08122BCC +_08122BC6: + movs r1, 0xC + b _08122BCC +_08122BCA: + movs r1, 0 +_08122BCC: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8122B20 + + thumb_func_start sub_8122BD4 +sub_8122BD4: @ 8122BD4 + push {r4-r6,lr} + ldr r5, _08122C20 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r5, r1] + movs r0, 0x64 + adds r4, r1, 0 + muls r4, r0 + ldr r6, _08122C24 @ =gUnknown_2024284 + adds r4, r6 + ldr r1, _08122C28 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_81202E0 + ldr r0, _08122C2C @ =gUnknown_203B09C + ldr r0, [r0] + adds r0, 0xD + bl sub_8121CE4 + ldrb r5, [r5, 0x9] + adds r0, r4, 0 + bl sub_8122B20 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_812299C + movs r0, 0 + bl sub_8121E5C + movs r0, 0x16 + bl sub_8121D0C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08122C20: .4byte gUnknown_203B0A0 +_08122C24: .4byte gUnknown_2024284 +_08122C28: .4byte gUnknown_2021CD0 +_08122C2C: .4byte gUnknown_203B09C + thumb_func_end sub_8122BD4 + + thumb_func_start sub_8122C30 +sub_8122C30: @ 8122C30 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8122BD4 + ldr r1, _08122C54 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0xFF + strh r1, [r0, 0x8] + ldr r1, _08122C58 @ =sub_8122C5C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122C54: .4byte gUnknown_3005090 +_08122C58: .4byte sub_8122C5C + thumb_func_end sub_8122C30 + + thumb_func_start sub_8122C5C +sub_8122C5C: @ 8122C5C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08122C94 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08122D3E + bl sub_80BF748 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08122D3E + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08122C98 @ =gUnknown_3005098 + adds r7, r0, r1 + ldr r0, _08122C9C @ =gUnknown_203B09C + ldr r0, [r0] + ldrb r0, [r0, 0x17] + cmp r0, 0x3 + bhi _08122CA0 + bl sub_810FAF0 + b _08122CA4 + .align 2, 0 +_08122C94: .4byte gUnknown_2037AB8 +_08122C98: .4byte gUnknown_3005098 +_08122C9C: .4byte gUnknown_203B09C +_08122CA0: + bl sub_810FA84 +_08122CA4: + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + ldrsh r4, [r7, r0] + bl sub_810F98C + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _08122CCE + ldr r0, _08122D14 @ =gUnknown_203B09C + ldr r4, [r0] + bl sub_810F98C + lsls r0, 24 + lsrs r0, 24 + adds r4, 0xF + adds r4, r0 + ldrb r0, [r4] + bl sub_8122138 +_08122CCE: + bl sub_810F98C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7] + lsls r0, r5, 24 + asrs r5, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _08122D3E + adds r0, 0x1 + cmp r5, r0 + bne _08122D1C + movs r0, 0x5 + bl sub_80722CC + ldr r4, _08122D14 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xE + bl sub_8121CE4 + ldr r2, _08122D18 @ =gUnknown_845A618 + ldr r0, [r4] + ldrb r1, [r0, 0x17] + adds r0, r1 + ldrb r0, [r0, 0xE] + lsls r0, 3 + adds r2, 0x4 + adds r0, r2 + ldr r1, [r0] + adds r0, r6, 0 + bl _call_via_r1 + b _08122D3E + .align 2, 0 +_08122D14: .4byte gUnknown_203B09C +_08122D18: .4byte gUnknown_845A618 +_08122D1C: + ldr r4, _08122D44 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xE + bl sub_8121CE4 + ldr r1, _08122D48 @ =gUnknown_845A618 + ldr r0, [r4] + adds r0, 0xF + adds r0, r5 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + adds r0, r6, 0 + bl _call_via_r1 +_08122D3E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08122D44: .4byte gUnknown_203B09C +_08122D48: .4byte gUnknown_845A618 + thumb_func_end sub_8122C5C + + thumb_func_start sub_8122D4C +sub_8122D4C: @ 8122D4C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08122D70 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _08122D74 @ =sub_8122D78 + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_811FA78 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122D70: .4byte gUnknown_203B09C +_08122D74: .4byte sub_8122D78 + thumb_func_end sub_8122D4C + + thumb_func_start sub_8122D78 +sub_8122D78: @ 8122D78 + push {r4,lr} + sub sp, 0x4 + ldr r4, _08122DAC @ =gUnknown_203B0A0 + ldrb r1, [r4, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08122D8C + bl sub_8128074 +_08122D8C: + ldr r0, _08122DB0 @ =gUnknown_2024284 + ldrb r1, [r4, 0x9] + ldr r2, _08122DB4 @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08122DB8 @ =sub_8122DBC + movs r4, 0 + str r4, [sp] + bl sub_81344F8 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122DAC: .4byte gUnknown_203B0A0 +_08122DB0: .4byte gUnknown_2024284 +_08122DB4: .4byte gUnknown_2024029 +_08122DB8: .4byte sub_8122DBC + thumb_func_end sub_8122D78 + + thumb_func_start sub_8122DBC +sub_8122DBC: @ 8122DBC + push {lr} + sub sp, 0xC + ldr r2, _08122DF4 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + bl sub_8138B20 + ldr r3, _08122DF8 @ =gUnknown_203B0A0 + strb r0, [r3, 0x9] + ldrb r0, [r3, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r3, 0xB] + movs r1, 0x16 + str r1, [sp] + ldr r1, _08122DFC @ =sub_8122C30 + str r1, [sp, 0x4] + ldr r1, [r3] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08122DF4: .4byte gUnknown_2037AB8 +_08122DF8: .4byte gUnknown_203B0A0 +_08122DFC: .4byte sub_8122C30 + thumb_func_end sub_8122DBC + + thumb_func_start sub_8122E00 +sub_8122E00: @ 8122E00 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r5, _08122E4C @ =gUnknown_203B0A0 + movs r0, 0x8 + strb r0, [r5, 0xB] + ldr r4, _08122E50 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + movs r0, 0x3 + bl sub_8121D0C + ldrb r0, [r5, 0x9] + movs r1, 0x1 + bl sub_811F818 + ldrb r0, [r5, 0x9] + strb r0, [r5, 0xA] + ldr r1, _08122E54 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08122E58 @ =sub_811FB28 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08122E4C: .4byte gUnknown_203B0A0 +_08122E50: .4byte gUnknown_203B09C +_08122E54: .4byte gUnknown_3005090 +_08122E58: .4byte sub_811FB28 + thumb_func_end sub_8122E00 + + thumb_func_start sub_8122E5C +sub_8122E5C: @ 8122E5C + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _08122E84 @ =gUnknown_3005098 + adds r6, r0, r1 + ldr r4, _08122E88 @ =gUnknown_203B0A0 + movs r1, 0xA + ldrsb r1, [r4, r1] + movs r0, 0x9 + ldrsb r0, [r4, r0] + cmp r1, r0 + bne _08122E8C + adds r0, r7, 0 + bl sub_81235E8 + b _08122FE2 + .align 2, 0 +_08122E84: .4byte gUnknown_3005098 +_08122E88: .4byte gUnknown_203B0A0 +_08122E8C: + bl sub_812358C + add r2, sp, 0x8 + movs r0, 0x9 + ldrsb r0, [r4, r0] + ldr r1, _08122EE8 @ =gUnknown_203B0B4 + ldr r1, [r1] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + movs r4, 0 + strb r0, [r2] + adds r0, r2, 0 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8004950 + strh r0, [r6] + add r0, sp, 0x8 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8004950 + strh r0, [r6, 0x2] + add r0, sp, 0x8 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8004950 + strh r0, [r6, 0x4] + add r0, sp, 0x8 + ldrb r0, [r0] + movs r1, 0x4 + bl sub_8004950 + strh r0, [r6, 0x6] + strh r4, [r6, 0x10] + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0xA + bne _08122EEC + movs r2, 0x1 + negs r2, r2 + adds r0, r2, 0 + b _08122EEE + .align 2, 0 +_08122EE8: .4byte gUnknown_203B0B4 +_08122EEC: + movs r0, 0x1 +_08122EEE: + strh r0, [r6, 0x14] + add r2, sp, 0x8 + ldr r0, _08122F4C @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xA] + lsls r0, 24 + asrs r0, 24 + ldr r1, _08122F50 @ =gUnknown_203B0B4 + ldr r1, [r1] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + movs r4, 0 + strb r0, [r2, 0x1] + adds r0, r2, 0 + ldrb r0, [r0, 0x1] + movs r1, 0x1 + bl sub_8004950 + strh r0, [r6, 0x8] + add r0, sp, 0x8 + ldrb r0, [r0, 0x1] + movs r1, 0x2 + bl sub_8004950 + strh r0, [r6, 0xA] + add r0, sp, 0x8 + ldrb r0, [r0, 0x1] + movs r1, 0x3 + bl sub_8004950 + strh r0, [r6, 0xC] + add r0, sp, 0x8 + ldrb r0, [r0, 0x1] + movs r1, 0x4 + bl sub_8004950 + strh r0, [r6, 0xE] + strh r4, [r6, 0x12] + movs r1, 0xC + ldrsh r0, [r6, r1] + cmp r0, 0xA + bne _08122F54 + movs r2, 0x1 + negs r2, r2 + adds r0, r2, 0 + b _08122F56 + .align 2, 0 +_08122F4C: .4byte gUnknown_203B0A0 +_08122F50: .4byte gUnknown_203B0B4 +_08122F54: + movs r0, 0x1 +_08122F56: + strh r0, [r6, 0x16] + ldr r4, _08122FEC @ =gUnknown_203B0C8 + movs r0, 0x4 + ldrsh r1, [r6, r0] + movs r2, 0x6 + ldrsh r0, [r6, r2] + lsls r0, 1 + muls r0, r1 + bl sub_8002B9C + str r0, [r4] + ldr r5, _08122FF0 @ =gUnknown_203B0CC + movs r0, 0xC + ldrsh r1, [r6, r0] + movs r2, 0xE + ldrsh r0, [r6, r2] + lsls r0, 1 + muls r0, r1 + bl sub_8002B9C + str r0, [r5] + ldr r1, [r4] + ldrb r2, [r6] + ldrb r3, [r6, 0x2] + ldrb r0, [r6, 0x4] + str r0, [sp] + ldrb r0, [r6, 0x6] + str r0, [sp, 0x4] + movs r0, 0 + bl sub_80F6B94 + ldr r1, [r5] + ldrb r2, [r6, 0x8] + ldrb r3, [r6, 0xA] + ldrb r0, [r6, 0xC] + str r0, [sp] + ldrb r0, [r6, 0xE] + str r0, [sp, 0x4] + movs r0, 0 + bl sub_80F6B94 + add r0, sp, 0x8 + ldrb r0, [r0] + bl sub_80040B8 + add r0, sp, 0x8 + ldrb r0, [r0, 0x1] + bl sub_80040B8 + ldr r4, _08122FF4 @ =gUnknown_203B0A0 + movs r0, 0x9 + strb r0, [r4, 0xB] + ldrb r0, [r4, 0x9] + movs r1, 0x1 + bl sub_811F818 + ldrb r0, [r4, 0xA] + movs r1, 0x1 + bl sub_811F818 + adds r0, r7, 0 + bl sub_81231E8 + ldr r1, _08122FF8 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _08122FFC @ =sub_8123270 + str r1, [r0] +_08122FE2: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08122FEC: .4byte gUnknown_203B0C8 +_08122FF0: .4byte gUnknown_203B0CC +_08122FF4: .4byte gUnknown_203B0A0 +_08122FF8: .4byte gUnknown_3005090 +_08122FFC: .4byte sub_8123270 + thumb_func_end sub_8122E5C + + thumb_func_start sub_8123000 +sub_8123000: @ 8123000 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r2, 0 + mov r12, r3 + ldr r7, [sp, 0x18] + lsls r0, 16 + lsrs r3, r0, 16 + adds r5, r3, 0 + lsls r1, 16 + lsrs r2, r1, 16 + mov r8, r2 + lsls r0, r3, 16 + asrs r1, r0, 16 + lsls r0, r2, 16 + asrs r0, 16 + adds r4, r1, r0 + cmp r4, 0 + blt _0812302A + cmp r1, 0x1F + ble _0812302E +_0812302A: + movs r0, 0 + b _0812305C +_0812302E: + cmp r1, 0 + bge _08123042 + negs r0, r1 + strb r0, [r6] + movs r0, 0 + mov r1, r12 + strb r0, [r1] + adds r0, r2, r3 + strb r0, [r7] + b _0812305A +_08123042: + movs r0, 0 + strb r0, [r6] + mov r0, r12 + strb r5, [r0] + cmp r4, 0x1F + ble _08123056 + movs r0, 0x20 + subs r0, r5 + strb r0, [r7] + b _0812305A +_08123056: + mov r1, r8 + strb r1, [r7] +_0812305A: + movs r0, 0x1 +_0812305C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8123000 + + thumb_func_start sub_8123068 +sub_8123068: @ 8123068 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + str r0, [sp, 0x28] + ldr r0, [sp, 0x54] + ldr r4, [sp, 0x58] + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + lsls r3, 16 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsls r4, 16 + lsrs r4, 16 + str r4, [sp, 0x30] + lsls r1, 16 + asrs r7, r1, 16 + lsrs r0, r3, 16 + str r0, [sp, 0x2C] + asrs r3, 16 + mov r8, r3 + mov r5, sp + adds r5, 0x25 + mov r6, sp + adds r6, 0x26 + str r6, [sp] + adds r0, r7, 0 + mov r1, r8 + add r2, sp, 0x24 + adds r3, r5, 0 + bl sub_8123000 + lsls r0, 24 + cmp r0, 0 + beq _08123122 + ldrb r2, [r5] + mov r1, r9 + lsls r0, r1, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r0, [r6] + str r0, [sp] + mov r1, r10 + lsls r0, r1, 24 + lsrs r4, r0, 24 + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + mov r3, r9 + bl sub_8002454 + ldr r1, [sp, 0x30] + lsls r0, r1, 16 + asrs r0, 16 + adds r0, r7, r0 + lsls r0, 16 + asrs r0, 16 + str r6, [sp] + mov r1, r8 + add r2, sp, 0x24 + adds r3, r5, 0 + bl sub_8123000 + lsls r0, 24 + cmp r0, 0 + beq _08123122 + add r0, sp, 0x24 + ldrb r2, [r0] + ldr r1, [sp, 0x2C] + lsls r0, r1, 24 + lsrs r0, 24 + str r0, [sp] + str r4, [sp, 0x4] + ldrb r0, [r5] + str r0, [sp, 0x8] + mov r0, r9 + str r0, [sp, 0xC] + ldrb r0, [r6] + str r0, [sp, 0x10] + str r4, [sp, 0x14] + movs r0, 0x11 + str r0, [sp, 0x18] + movs r0, 0 + str r0, [sp, 0x1C] + str r0, [sp, 0x20] + ldr r1, [sp, 0x28] + movs r3, 0 + bl sub_800226C +_08123122: + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8123068 + + thumb_func_start sub_8123134 +sub_8123134: @ 8123134 + push {r4,lr} + ldr r4, _08123184 @ =gUnknown_202063C + ldrb r2, [r0, 0xB] + lsls r3, r2, 4 + adds r3, r2 + lsls r3, 2 + adds r3, r4 + lsls r1, 16 + asrs r1, 13 + ldrh r2, [r3, 0x24] + adds r2, r1 + strh r2, [r3, 0x24] + ldrb r3, [r0, 0xA] + lsls r2, r3, 4 + adds r2, r3 + lsls r2, 2 + adds r2, r4 + ldrh r3, [r2, 0x24] + adds r3, r1 + strh r3, [r2, 0x24] + ldrb r3, [r0, 0x9] + lsls r2, r3, 4 + adds r2, r3 + lsls r2, 2 + adds r2, r4 + ldrh r3, [r2, 0x24] + adds r3, r1 + strh r3, [r2, 0x24] + ldrb r2, [r0, 0xC] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r4 + ldrh r2, [r0, 0x24] + adds r2, r1 + strh r2, [r0, 0x24] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123184: .4byte gUnknown_202063C + thumb_func_end sub_8123134 + + thumb_func_start sub_8123188 +sub_8123188: @ 8123188 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081231DC @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _081231B6 + ldr r2, _081231E0 @ =gUnknown_203B0B4 + ldr r0, _081231E4 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + lsls r1, 4 + ldr r0, [r2] + adds r0, r1 + movs r2, 0x14 + ldrsh r1, [r4, r2] + bl sub_8123134 +_081231B6: + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _081231D4 + ldr r2, _081231E0 @ =gUnknown_203B0B4 + ldr r0, _081231E4 @ =gUnknown_203B0A0 + movs r1, 0xA + ldrsb r1, [r0, r1] + lsls r1, 4 + ldr r0, [r2] + adds r0, r1 + movs r2, 0x16 + ldrsh r1, [r4, r2] + bl sub_8123134 +_081231D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081231DC: .4byte gUnknown_3005098 +_081231E0: .4byte gUnknown_203B0B4 +_081231E4: .4byte gUnknown_203B0A0 + thumb_func_end sub_8123188 + + thumb_func_start sub_81231E8 +sub_81231E8: @ 81231E8 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08123264 @ =gUnknown_3005098 + adds r5, r1, r0 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08123228 + ldr r0, _08123268 @ =gUnknown_203B0C8 + ldr r0, [r0] + ldrh r1, [r5, 0x10] + ldrh r2, [r5] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + movs r3, 0x2 + ldrsh r2, [r5, r3] + movs r4, 0x4 + ldrsh r3, [r5, r4] + movs r6, 0x6 + ldrsh r4, [r5, r6] + str r4, [sp] + movs r6, 0x14 + ldrsh r4, [r5, r6] + str r4, [sp, 0x4] + bl sub_8123068 +_08123228: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08123256 + ldr r0, _0812326C @ =gUnknown_203B0CC + ldr r0, [r0] + ldrh r1, [r5, 0x12] + ldrh r2, [r5, 0x8] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + movs r3, 0xA + ldrsh r2, [r5, r3] + movs r4, 0xC + ldrsh r3, [r5, r4] + movs r6, 0xE + ldrsh r4, [r5, r6] + str r4, [sp] + movs r6, 0x16 + ldrsh r4, [r5, r6] + str r4, [sp, 0x4] + bl sub_8123068 +_08123256: + movs r0, 0 + bl sub_80F67A4 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08123264: .4byte gUnknown_3005098 +_08123268: .4byte gUnknown_203B0C8 +_0812326C: .4byte gUnknown_203B0CC + thumb_func_end sub_81231E8 + + thumb_func_start sub_8123270 +sub_8123270: @ 8123270 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r7, r0, 3 + ldr r0, _08123370 @ =gUnknown_3005098 + mov r8, r0 + adds r6, r7, r0 + adds r0, r4, 0 + bl sub_81231E8 + adds r0, r4, 0 + bl sub_8123188 + ldrh r1, [r6, 0x14] + ldrh r2, [r6, 0x10] + adds r1, r2 + strh r1, [r6, 0x10] + ldrh r0, [r6, 0x16] + ldrh r3, [r6, 0x12] + adds r0, r3 + strh r0, [r6, 0x12] + add r2, sp, 0x8 + ldrh r0, [r6] + adds r0, r1 + strh r0, [r2] + adds r1, r2, 0 + ldrh r0, [r6, 0x12] + ldrh r3, [r6, 0x8] + adds r2, r0, r3 + strh r2, [r1, 0x2] + adds r0, r1, 0 + ldrh r0, [r0] + cmp r0, 0x21 + bls _08123362 + lsls r0, r2, 16 + lsrs r0, 16 + cmp r0, 0x21 + bls _08123362 + movs r1, 0x14 + ldrsh r0, [r6, r1] + negs r0, r0 + strh r0, [r6, 0x14] + movs r2, 0x16 + ldrsh r0, [r6, r2] + negs r0, r0 + strh r0, [r6, 0x16] + bl sub_81234EC + ldr r4, _08123374 @ =gUnknown_203B0A0 + ldrb r0, [r4, 0x9] + bl sub_811F234 + ldrb r0, [r4, 0xA] + bl sub_811F234 + movs r0, 0x9 + ldrsb r0, [r4, r0] + ldr r5, _08123378 @ =gUnknown_203B0B4 + ldr r1, [r5] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_8003FA0 + movs r0, 0xA + ldrsb r0, [r4, r0] + ldr r1, [r5] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_8003FA0 + ldr r0, _0812337C @ =gUnknown_203B0C8 + ldr r1, [r0] + ldrb r2, [r6] + ldrb r3, [r6, 0x2] + ldrb r0, [r6, 0x4] + str r0, [sp] + ldrb r0, [r6, 0x6] + str r0, [sp, 0x4] + movs r0, 0 + bl sub_80F6B94 + ldr r0, _08123380 @ =gUnknown_203B0CC + ldr r1, [r0] + ldrb r2, [r6, 0x8] + ldrb r3, [r6, 0xA] + ldrb r0, [r6, 0xC] + str r0, [sp] + ldrb r0, [r6, 0xE] + str r0, [sp, 0x4] + movs r0, 0 + bl sub_80F6B94 + movs r0, 0x9 + ldrsb r0, [r4, r0] + ldr r1, [r5] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_80040B8 + movs r0, 0xA + ldrsb r0, [r4, r0] + ldr r1, [r5] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_80040B8 + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _08123384 @ =sub_8123388 + str r1, [r0] +_08123362: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08123370: .4byte gUnknown_3005098 +_08123374: .4byte gUnknown_203B0A0 +_08123378: .4byte gUnknown_203B0B4 +_0812337C: .4byte gUnknown_203B0C8 +_08123380: .4byte gUnknown_203B0CC +_08123384: .4byte sub_8123388 + thumb_func_end sub_8123270 + + thumb_func_start sub_8123388 +sub_8123388: @ 8123388 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _081233E8 @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r6, 0 + bl sub_81231E8 + adds r0, r6, 0 + bl sub_8123188 + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _081233F4 + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _081233F4 + ldr r5, _081233EC @ =gUnknown_203B0A0 + movs r0, 0x9 + ldrsb r0, [r5, r0] + ldr r4, _081233F0 @ =gUnknown_203B0B4 + ldr r1, [r4] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_8003FA0 + movs r0, 0xA + ldrsb r0, [r5, r0] + ldr r1, [r4] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + adds r0, r6, 0 + bl sub_81235E8 + b _08123418 + .align 2, 0 +_081233E8: .4byte gUnknown_3005098 +_081233EC: .4byte gUnknown_203B0A0 +_081233F0: .4byte gUnknown_203B0B4 +_081233F4: + ldrh r1, [r4, 0x14] + ldrh r0, [r4, 0x10] + adds r1, r0 + strh r1, [r4, 0x10] + ldrh r0, [r4, 0x16] + ldrh r2, [r4, 0x12] + adds r0, r2 + strh r0, [r4, 0x12] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0 + bne _0812340E + strh r1, [r4, 0x14] +_0812340E: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08123418 + strh r0, [r4, 0x16] +_08123418: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8123388 + + thumb_func_start sub_8123420 +sub_8123420: @ 8123420 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + ldrb r3, [r0] + ldrb r2, [r1] + strb r2, [r0] + strb r3, [r1] + ldr r5, _081234E8 @ =gUnknown_202063C + ldrb r2, [r0] + lsls r3, r2, 4 + adds r3, r2 + lsls r3, 2 + adds r3, r5 + ldrh r6, [r3, 0x20] + ldrh r2, [r3, 0x22] + mov r8, r2 + ldrh r2, [r3, 0x24] + mov r9, r2 + ldrh r2, [r3, 0x26] + mov r10, r2 + ldrb r4, [r1] + lsls r2, r4, 4 + adds r2, r4 + lsls r2, 2 + adds r2, r5 + ldrh r2, [r2, 0x20] + strh r2, [r3, 0x20] + ldrb r2, [r0] + lsls r3, r2, 4 + adds r3, r2 + lsls r3, 2 + adds r3, r5 + ldrb r4, [r1] + lsls r2, r4, 4 + adds r2, r4 + lsls r2, 2 + adds r2, r5 + ldrh r2, [r2, 0x22] + strh r2, [r3, 0x22] + ldrb r2, [r0] + lsls r3, r2, 4 + adds r3, r2 + lsls r3, 2 + adds r3, r5 + ldrb r4, [r1] + lsls r2, r4, 4 + adds r2, r4 + lsls r2, 2 + adds r2, r5 + ldrh r2, [r2, 0x24] + strh r2, [r3, 0x24] + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + ldrb r3, [r1] + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + adds r0, r5 + ldrh r0, [r0, 0x26] + strh r0, [r2, 0x26] + ldrb r2, [r1] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r5 + strh r6, [r0, 0x20] + ldrb r2, [r1] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r5 + mov r2, r8 + strh r2, [r0, 0x22] + ldrb r2, [r1] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r5 + mov r2, r9 + strh r2, [r0, 0x24] + ldrb r1, [r1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + mov r1, r10 + strh r1, [r0, 0x26] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081234E8: .4byte gUnknown_202063C + thumb_func_end sub_8123420 + + thumb_func_start sub_81234EC +sub_81234EC: @ 81234EC + push {r4-r6,lr} + sub sp, 0x8 + ldr r1, _08123580 @ =gUnknown_203B0B4 + ldr r2, _08123584 @ =gUnknown_203B0A0 + movs r3, 0x9 + ldrsb r3, [r2, r3] + lsls r0, r3, 4 + ldr r1, [r1] + adds r0, r1, r0 + str r0, [sp] + ldrb r2, [r2, 0xA] + lsls r2, 24 + asrs r2, 24 + lsls r0, r2, 4 + adds r0, r1, r0 + str r0, [sp, 0x4] + movs r1, 0x64 + adds r4, r3, 0 + muls r4, r1 + ldr r0, _08123588 @ =gUnknown_2024284 + adds r4, r0 + adds r5, r2, 0 + muls r5, r1 + adds r5, r0 + movs r0, 0x64 + bl sub_8002B9C + adds r6, r0, 0 + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x64 + bl memcpy + adds r0, r6, 0 + bl sub_8002BC4 + ldr r0, [sp] + adds r0, 0xB + ldr r1, [sp, 0x4] + adds r1, 0xB + bl sub_8123420 + ldr r0, [sp] + adds r0, 0xA + ldr r1, [sp, 0x4] + adds r1, 0xA + bl sub_8123420 + ldr r0, [sp] + adds r0, 0x9 + ldr r1, [sp, 0x4] + adds r1, 0x9 + bl sub_8123420 + ldr r0, [sp] + adds r0, 0xC + ldr r1, [sp, 0x4] + adds r1, 0xC + bl sub_8123420 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08123580: .4byte gUnknown_203B0B4 +_08123584: .4byte gUnknown_203B0A0 +_08123588: .4byte gUnknown_2024284 + thumb_func_end sub_81234EC + + thumb_func_start sub_812358C +sub_812358C: @ 812358C + push {r4-r6,lr} + mov r6, r8 + push {r6} + movs r0, 0x4 + bl sub_8002B9C + adds r4, r0, 0 + ldr r0, _081235E0 @ =gUnknown_203B0A0 + mov r8, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r6, 0x64 + muls r0, r6 + ldr r5, _081235E4 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r4] + mov r1, r8 + movs r0, 0xA + ldrsb r0, [r1, r0] + muls r0, r6 + adds r0, r5 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r4, 0x2] + movs r0, 0x3 + adds r1, r4, 0 + bl sub_8113550 + adds r0, r4, 0 + bl sub_8002BC4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081235E0: .4byte gUnknown_203B0A0 +_081235E4: .4byte gUnknown_2024284 + thumb_func_end sub_812358C + + thumb_func_start sub_81235E8 +sub_81235E8: @ 81235E8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08123630 @ =gUnknown_203B09C + ldr r0, [r0] + adds r0, 0xD + bl sub_8121CE4 + ldr r4, _08123634 @ =gUnknown_203B0A0 + movs r0, 0 + strb r0, [r4, 0xB] + ldrb r0, [r4, 0x9] + movs r1, 0 + bl sub_811F818 + ldrb r0, [r4, 0xA] + strb r0, [r4, 0x9] + ldrb r0, [r4, 0xA] + movs r1, 0x1 + bl sub_811F818 + movs r0, 0 + bl sub_8121D0C + ldr r1, _08123638 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812363C @ =sub_811FB28 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08123630: .4byte gUnknown_203B09C +_08123634: .4byte gUnknown_203B0A0 +_08123638: .4byte gUnknown_3005090 +_0812363C: .4byte sub_811FB28 + thumb_func_end sub_81235E8 + + thumb_func_start sub_8123640 +sub_8123640: @ 8123640 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r4, _08123674 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + ldr r0, _08123678 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x6 + bne _0812367C + movs r0, 0xF + bl sub_8121D0C + b _08123682 + .align 2, 0 +_08123674: .4byte gUnknown_203B09C +_08123678: .4byte gUnknown_203B0A0 +_0812367C: + movs r0, 0 + bl sub_8121D0C +_08123682: + ldr r0, _08123698 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812369C @ =sub_811FB28 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08123698: .4byte gUnknown_3005090 +_0812369C: .4byte sub_811FB28 + thumb_func_end sub_8123640 + + thumb_func_start sub_81236A0 +sub_81236A0: @ 81236A0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r4, _081236F0 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + ldr r0, _081236F4 @ =gUnknown_2024284 + ldr r1, _081236F8 @ =gUnknown_203B0A0 + ldrb r1, [r1, 0x9] + movs r2, 0x8 + bl sub_812299C + movs r0, 0x1 + bl sub_8121E5C + movs r0, 0x19 + bl sub_8121D0C + ldr r1, _081236FC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0xFF + strh r1, [r0, 0x8] + ldr r1, _08123700 @ =sub_8122C5C + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081236F0: .4byte gUnknown_203B09C +_081236F4: .4byte gUnknown_2024284 +_081236F8: .4byte gUnknown_203B0A0 +_081236FC: .4byte gUnknown_3005090 +_08123700: .4byte sub_8122C5C + thumb_func_end sub_81236A0 + + thumb_func_start sub_8123704 +sub_8123704: @ 8123704 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08123728 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _0812372C @ =sub_8123730 + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_811FA78 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123728: .4byte gUnknown_203B09C +_0812372C: .4byte sub_8123730 + thumb_func_end sub_8123704 + + thumb_func_start sub_8123730 +sub_8123730: @ 8123730 + push {lr} + ldr r2, _08123740 @ =sub_8123744 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8107DB4 + pop {r0} + bx r0 + .align 2, 0 +_08123740: .4byte sub_8123744 + thumb_func_end sub_8123730 + + thumb_func_start sub_8123744 +sub_8123744: @ 8123744 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r6, _0812376C @ =gUnknown_203AD30 + ldrh r0, [r6] + cmp r0, 0 + bne _08123778 + ldr r3, _08123770 @ =gUnknown_203B0A0 + ldrb r0, [r3, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r3, 0xB] + movs r1, 0x7F + str r1, [sp] + ldr r1, _08123774 @ =sub_8122C30 + str r1, [sp, 0x4] + ldr r1, [r3] + b _081237AE + .align 2, 0 +_0812376C: .4byte gUnknown_203AD30 +_08123770: .4byte gUnknown_203B0A0 +_08123774: .4byte sub_8122C30 +_08123778: + ldr r4, _081237BC @ =gUnknown_203B0D8 + ldr r5, _081237C0 @ =gUnknown_203B0A0 + movs r0, 0x9 + ldrsb r0, [r5, r0] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r7, _081237C4 @ =gUnknown_2024284 + adds r0, r7 + movs r1, 0xC + bl sub_803FBE8 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + beq _081237CC + ldrb r0, [r5, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r5, 0xB] + movs r1, 0x7F + str r1, [sp] + ldr r1, _081237C8 @ =sub_81238A4 + str r1, [sp, 0x4] + ldr r1, [r5] +_081237AE: + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 + b _08123814 + .align 2, 0 +_081237BC: .4byte gUnknown_203B0D8 +_081237C0: .4byte gUnknown_203B0A0 +_081237C4: .4byte gUnknown_2024284 +_081237C8: .4byte sub_81238A4 +_081237CC: + ldrh r0, [r6] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _081237F8 + ldrh r0, [r6] + movs r1, 0x1 + bl sub_809A1D8 + movs r0, 0x9 + ldrsb r0, [r5, r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + ldrh r1, [r6] + bl sub_81205C8 + bl sub_8123A80 + b _08123814 +_081237F8: + ldrb r0, [r5, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r5, 0xB] + movs r1, 0x7F + str r1, [sp] + ldr r1, _08123820 @ =sub_8123824 + str r1, [sp, 0x4] + ldr r1, [r5] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 +_08123814: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08123820: .4byte sub_8123824 + thumb_func_end sub_8123744 + + thumb_func_start sub_8123824 +sub_8123824: @ 8123824 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0812388C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08123880 + ldr r0, _08123890 @ =gUnknown_203AD30 + ldrh r4, [r0] + ldr r0, _08123894 @ =gUnknown_203B0A0 + mov r8, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r6, 0x64 + muls r0, r6 + ldr r5, _08123898 @ =gUnknown_2024284 + adds r0, r5 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_8120420 + mov r1, r8 + movs r0, 0x9 + ldrsb r0, [r1, r0] + muls r0, r6 + adds r0, r5 + adds r1, r4, 0 + bl sub_81205C8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_809A1D8 + ldr r1, _0812389C @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _081238A0 @ =sub_8123BF0 + str r1, [r0] +_08123880: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812388C: .4byte gUnknown_2037AB8 +_08123890: .4byte gUnknown_203AD30 +_08123894: .4byte gUnknown_203B0A0 +_08123898: .4byte gUnknown_2024284 +_0812389C: .4byte gUnknown_3005090 +_081238A0: .4byte sub_8123BF0 + thumb_func_end sub_8123824 + + thumb_func_start sub_81238A4 +sub_81238A4: @ 81238A4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081238E4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081238DC + ldr r0, _081238E8 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081238EC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _081238F0 @ =gUnknown_203B0D8 + ldrh r1, [r1] + movs r2, 0x1 + bl sub_812050C + ldr r1, _081238F4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _081238F8 @ =sub_81238FC + str r1, [r0] +_081238DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081238E4: .4byte gUnknown_2037AB8 +_081238E8: .4byte gUnknown_203B0A0 +_081238EC: .4byte gUnknown_2024284 +_081238F0: .4byte gUnknown_203B0D8 +_081238F4: .4byte gUnknown_3005090 +_081238F8: .4byte sub_81238FC + thumb_func_end sub_81238A4 + + thumb_func_start sub_81238FC +sub_81238FC: @ 81238FC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08123920 + bl sub_812200C + ldr r0, _08123928 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812392C @ =sub_8123930 + str r0, [r1] +_08123920: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123928: .4byte gUnknown_3005090 +_0812392C: .4byte sub_8123930 + thumb_func_end sub_81238FC + + thumb_func_start sub_8123930 +sub_8123930: @ 8123930 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08123956 + cmp r1, 0 + bgt _08123950 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08123A2C + b _08123A40 +_08123950: + cmp r1, 0x1 + beq _08123A32 + b _08123A40 +_08123956: + ldr r5, _08123998 @ =gUnknown_203AD30 + ldrh r0, [r5] + movs r1, 0x1 + bl sub_809A1D8 + ldr r6, _0812399C @ =gUnknown_203B0D8 + ldrh r0, [r6] + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + cmp r0, 0 + bne _081239AC + ldrh r0, [r5] + movs r1, 0x1 + bl sub_809A084 + ldrh r0, [r6] + bl sub_8120658 + ldr r0, _081239A0 @ =gUnknown_2021D18 + movs r1, 0 + bl sub_81202F8 + ldr r1, _081239A4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _081239A8 @ =sub_81203B8 + str r1, [r0] + b _08123A40 + .align 2, 0 +_08123998: .4byte gUnknown_203AD30 +_0812399C: .4byte gUnknown_203B0D8 +_081239A0: .4byte gUnknown_2021D18 +_081239A4: .4byte gUnknown_3005090 +_081239A8: .4byte sub_81203B8 +_081239AC: + ldrh r0, [r5] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _081239EC + ldr r0, _081239DC @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081239E0 @ =gUnknown_2024284 + adds r0, r1 + ldrh r1, [r5] + bl sub_81205C8 + ldr r1, _081239E4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _081239E8 @ =sub_8123A50 + str r1, [r0] + b _08123A40 + .align 2, 0 +_081239DC: .4byte gUnknown_203B0A0 +_081239E0: .4byte gUnknown_2024284 +_081239E4: .4byte gUnknown_3005090 +_081239E8: .4byte sub_8123A50 +_081239EC: + ldr r0, _08123A1C @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08123A20 @ =gUnknown_2024284 + adds r0, r1 + ldrh r1, [r5] + bl sub_81205C8 + ldrh r0, [r5] + ldrh r1, [r6] + movs r2, 0x1 + bl sub_8120558 + ldr r1, _08123A24 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08123A28 @ =sub_8123BF0 + str r1, [r0] + b _08123A40 + .align 2, 0 +_08123A1C: .4byte gUnknown_203B0A0 +_08123A20: .4byte gUnknown_2024284 +_08123A24: .4byte gUnknown_3005090 +_08123A28: .4byte sub_8123BF0 +_08123A2C: + movs r0, 0x5 + bl sub_80722CC +_08123A32: + ldr r0, _08123A48 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08123A4C @ =sub_81203B8 + str r0, [r1] +_08123A40: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08123A48: .4byte gUnknown_3005090 +_08123A4C: .4byte sub_81203B8 + thumb_func_end sub_8123930 + + thumb_func_start sub_8123A50 +sub_8123A50: @ 8123A50 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08123A70 + ldr r0, _08123A78 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _08123A7C @ =sub_8123A80 + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_811FA78 +_08123A70: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123A78: .4byte gUnknown_203B09C +_08123A7C: .4byte sub_8123A80 + thumb_func_end sub_8123A50 + + thumb_func_start sub_8123A80 +sub_8123A80: @ 8123A80 + push {lr} + ldr r0, _08123AB8 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08123ABC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x40 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08123AC0 @ =gUnknown_3005008 + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + ldr r0, _08123AC4 @ =0x00002cd0 + adds r2, r0 + ldr r1, [r1] + adds r1, r2 + ldr r2, _08123AC8 @ =sub_8123ACC + movs r0, 0x4 + bl sub_80FEBAC + pop {r0} + bx r0 + .align 2, 0 +_08123AB8: .4byte gUnknown_203B0A0 +_08123ABC: .4byte gUnknown_2024284 +_08123AC0: .4byte gUnknown_3005008 +_08123AC4: .4byte 0x00002cd0 +_08123AC8: .4byte sub_8123ACC + thumb_func_end sub_8123A80 + + thumb_func_start sub_8123ACC +sub_8123ACC: @ 8123ACC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r6, _08123B38 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r6, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08123B3C @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _08123B40 @ =gUnknown_20370D0 + ldrh r7, [r0] + cmp r7, 0 + bne _08123B4C + adds r0, r5, 0 + bl sub_8097FB8 + ldr r4, _08123B44 @ =gUnknown_203B0D8 + adds r0, r5, 0 + movs r1, 0xC + adds r2, r4, 0 + bl sub_804037C + ldrh r0, [r4] + movs r1, 0x1 + bl sub_809A1D8 + mov r0, r8 + movs r1, 0x1 + bl sub_809A084 + ldrb r0, [r6, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r6, 0xB] + str r7, [sp] + ldr r1, _08123B48 @ =sub_8122C30 + str r1, [sp, 0x4] + ldr r1, [r6] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 + b _08123B68 + .align 2, 0 +_08123B38: .4byte gUnknown_203B0A0 +_08123B3C: .4byte gUnknown_2024284 +_08123B40: .4byte gUnknown_20370D0 +_08123B44: .4byte gUnknown_203B0D8 +_08123B48: .4byte sub_8122C30 +_08123B4C: + ldrb r0, [r6, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r6, 0xB] + movs r1, 0 + str r1, [sp] + ldr r1, _08123B74 @ =sub_8123B78 + str r1, [sp, 0x4] + ldr r1, [r6] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 +_08123B68: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08123B74: .4byte sub_8123B78 + thumb_func_end sub_8123ACC + + thumb_func_start sub_8123B78 +sub_8123B78: @ 8123B78 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08123BB0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08123BDE + ldr r1, _08123BB4 @ =gUnknown_203B0D8 + ldrh r0, [r1] + cmp r0, 0 + bne _08123BC4 + ldr r0, _08123BB8 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08123BBC @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08123BC0 @ =gUnknown_203AD30 + ldrh r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8120420 + b _08123BD0 + .align 2, 0 +_08123BB0: .4byte gUnknown_2037AB8 +_08123BB4: .4byte gUnknown_203B0D8 +_08123BB8: .4byte gUnknown_203B0A0 +_08123BBC: .4byte gUnknown_2024284 +_08123BC0: .4byte gUnknown_203AD30 +_08123BC4: + ldr r0, _08123BE4 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldrh r1, [r1] + movs r2, 0 + bl sub_8120558 +_08123BD0: + ldr r0, _08123BE8 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08123BEC @ =sub_8123BF0 + str r0, [r1] +_08123BDE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123BE4: .4byte gUnknown_203AD30 +_08123BE8: .4byte gUnknown_3005090 +_08123BEC: .4byte sub_8123BF0 + thumb_func_end sub_8123B78 + + thumb_func_start sub_8123BF0 +sub_8123BF0: @ 8123BF0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08123C2C @ =gUnknown_203B0A0 + ldrb r4, [r0, 0x9] + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08123C24 + lsls r2, r4, 24 + asrs r2, 24 + movs r0, 0x64 + muls r0, r2 + ldr r1, _08123C30 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08123C34 @ =gUnknown_203B0B4 + lsls r2, 4 + ldr r1, [r1] + adds r1, r2 + bl sub_81224B4 + adds r0, r5, 0 + bl sub_81203B8 +_08123C24: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08123C2C: .4byte gUnknown_203B0A0 +_08123C30: .4byte gUnknown_2024284 +_08123C34: .4byte gUnknown_203B0B4 + thumb_func_end sub_8123BF0 + + thumb_func_start sub_8123C38 +sub_8123C38: @ 8123C38 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08123C90 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08123C94 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + movs r0, 0x5 + bl sub_80722CC + ldr r4, _08123C98 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + adds r0, r5, 0 + bl sub_8120610 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08123C9C + cmp r0, 0x1 + beq _08123CC0 + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x1 + bl sub_81204AC + b _08123CCE + .align 2, 0 +_08123C90: .4byte gUnknown_203B0A0 +_08123C94: .4byte gUnknown_2024284 +_08123C98: .4byte gUnknown_203B09C +_08123C9C: + ldr r1, _08123CB4 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + ldr r4, _08123CB8 @ =gUnknown_2021D18 + ldr r1, _08123CBC @ =gUnknown_8416C8F + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + b _08123CC8 + .align 2, 0 +_08123CB4: .4byte gUnknown_2021CD0 +_08123CB8: .4byte gUnknown_2021D18 +_08123CBC: .4byte gUnknown_8416C8F +_08123CC0: + adds r0, r6, 0 + bl sub_8120658 + ldr r0, _08123CE8 @ =gUnknown_2021D18 +_08123CC8: + movs r1, 0x1 + bl sub_81202F8 +_08123CCE: + movs r0, 0x2 + bl sub_80F67A4 + ldr r0, _08123CEC @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08123CF0 @ =sub_8123BF0 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08123CE8: .4byte gUnknown_2021D18 +_08123CEC: .4byte gUnknown_3005090 +_08123CF0: .4byte sub_8123BF0 + thumb_func_end sub_8123C38 + + thumb_func_start sub_8123CF4 +sub_8123CF4: @ 8123CF4 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r4, _08123D44 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + ldr r0, _08123D48 @ =gUnknown_2024284 + ldr r1, _08123D4C @ =gUnknown_203B0A0 + ldrb r1, [r1, 0x9] + movs r2, 0x9 + bl sub_812299C + movs r0, 0x2 + bl sub_8121E5C + movs r0, 0x1A + bl sub_8121D0C + ldr r1, _08123D50 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0xFF + strh r1, [r0, 0x8] + ldr r1, _08123D54 @ =sub_8122C5C + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08123D44: .4byte gUnknown_203B09C +_08123D48: .4byte gUnknown_2024284 +_08123D4C: .4byte gUnknown_203B0A0 +_08123D50: .4byte gUnknown_3005090 +_08123D54: .4byte sub_8122C5C + thumb_func_end sub_8123CF4 + + thumb_func_start sub_8123D58 +sub_8123D58: @ 8123D58 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08123D7C @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _08123D80 @ =sub_8123D84 + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_811FA78 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123D7C: .4byte gUnknown_203B09C +_08123D80: .4byte sub_8123D84 + thumb_func_end sub_8123D58 + + thumb_func_start sub_8123D84 +sub_8123D84: @ 8123D84 + push {lr} + ldr r0, _08123DB8 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08123DBC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x40 + bl sub_803FBE8 + ldr r2, _08123DC0 @ =gUnknown_3005008 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08123DC4 @ =0x00002cd0 + adds r1, r0 + ldr r0, [r2] + adds r0, r1 + ldr r1, _08123DC8 @ =sub_8123DCC + movs r2, 0x1 + bl sub_80BEBEC + pop {r0} + bx r0 + .align 2, 0 +_08123DB8: .4byte gUnknown_203B0A0 +_08123DBC: .4byte gUnknown_2024284 +_08123DC0: .4byte gUnknown_3005008 +_08123DC4: .4byte 0x00002cd0 +_08123DC8: .4byte sub_8123DCC + thumb_func_end sub_8123D84 + + thumb_func_start sub_8123DCC +sub_8123DCC: @ 8123DCC + push {lr} + sub sp, 0xC + ldr r2, _08123E00 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + ldr r3, _08123E04 @ =gUnknown_203B0A0 + ldrb r0, [r3, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r3, 0xB] + movs r1, 0x16 + str r1, [sp] + ldr r1, _08123E08 @ =sub_8122C30 + str r1, [sp, 0x4] + ldr r1, [r3] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08123E00: .4byte gUnknown_2037AB8 +_08123E04: .4byte gUnknown_203B0A0 +_08123E08: .4byte sub_8122C30 + thumb_func_end sub_8123DCC + + thumb_func_start sub_8123E0C +sub_8123E0C: @ 8123E0C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r5, _08123E48 @ =gUnknown_203B09C + ldr r0, [r5] + adds r0, 0xD + bl sub_8121CE4 + ldr r0, [r5] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, _08123E4C @ =gUnknown_8416B64 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _08123E50 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08123E54 @ =sub_8123E58 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08123E48: .4byte gUnknown_203B09C +_08123E4C: .4byte gUnknown_8416B64 +_08123E50: .4byte gUnknown_3005090 +_08123E54: .4byte sub_8123E58 + thumb_func_end sub_8123E0C + + thumb_func_start sub_8123E58 +sub_8123E58: @ 8123E58 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08123E7C + bl sub_812200C + ldr r0, _08123E84 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08123E88 @ =sub_8123E8C + str r0, [r1] +_08123E7C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123E84: .4byte gUnknown_3005090 +_08123E88: .4byte sub_8123E8C + thumb_func_end sub_8123E58 + + thumb_func_start sub_8123E8C +sub_8123E8C: @ 8123E8C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08123EB2 + cmp r1, 0 + bgt _08123EAC + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08123F1C + b _08123F38 +_08123EAC: + cmp r1, 0x1 + beq _08123F22 + b _08123F38 +_08123EB2: + ldr r0, _08123EE4 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08123EE8 @ =gUnknown_2024284 + adds r0, r1 + bl sub_809803C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08123EF8 + ldr r0, _08123EEC @ =gUnknown_8416B86 + movs r1, 0 + bl sub_81202F8 + ldr r1, _08123EF0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08123EF4 @ =sub_8123BF0 + b _08123F36 + .align 2, 0 +_08123EE4: .4byte gUnknown_203B0A0 +_08123EE8: .4byte gUnknown_2024284 +_08123EEC: .4byte gUnknown_8416B86 +_08123EF0: .4byte gUnknown_3005090 +_08123EF4: .4byte sub_8123BF0 +_08123EF8: + ldr r0, _08123F10 @ =gUnknown_8416BA6 + movs r1, 0 + bl sub_81202F8 + ldr r1, _08123F14 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08123F18 @ =sub_81203B8 + b _08123F36 + .align 2, 0 +_08123F10: .4byte gUnknown_8416BA6 +_08123F14: .4byte gUnknown_3005090 +_08123F18: .4byte sub_81203B8 +_08123F1C: + movs r0, 0x5 + bl sub_80722CC +_08123F22: + ldr r0, _08123F40 @ =gUnknown_8416BC3 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _08123F44 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08123F48 @ =sub_8123F4C +_08123F36: + str r1, [r0] +_08123F38: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123F40: .4byte gUnknown_8416BC3 +_08123F44: .4byte gUnknown_3005090 +_08123F48: .4byte sub_8123F4C + thumb_func_end sub_8123E8C + + thumb_func_start sub_8123F4C +sub_8123F4C: @ 8123F4C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08123F70 + bl sub_812200C + ldr r0, _08123F78 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08123F7C @ =sub_8123F80 + str r0, [r1] +_08123F70: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123F78: .4byte gUnknown_3005090 +_08123F7C: .4byte sub_8123F80 + thumb_func_end sub_8123F4C + + thumb_func_start sub_8123F80 +sub_8123F80: @ 8123F80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08123FAA + cmp r1, 0 + bgt _08123FA4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0812403C + b _08124050 +_08123FA4: + cmp r1, 0x1 + beq _08124042 + b _08124050 +_08123FAA: + ldr r0, _08123FFC @ =gUnknown_203B0A0 + mov r8, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r7, 0x64 + muls r0, r7 + ldr r6, _08124000 @ =gUnknown_2024284 + adds r0, r6 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124010 + mov r1, r8 + movs r0, 0x9 + ldrsb r0, [r1, r0] + muls r0, r7 + adds r0, r6 + bl sub_8097FB8 + ldr r0, _08124004 @ =gUnknown_8416CC7 + movs r1, 0 + bl sub_81202F8 + ldr r1, _08124008 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812400C @ =sub_8123BF0 + str r1, [r0] + b _08124050 + .align 2, 0 +_08123FFC: .4byte gUnknown_203B0A0 +_08124000: .4byte gUnknown_2024284 +_08124004: .4byte gUnknown_8416CC7 +_08124008: .4byte gUnknown_3005090 +_0812400C: .4byte sub_8123BF0 +_08124010: + adds r0, r4, 0 + bl sub_8120658 + ldr r0, _08124030 @ =gUnknown_2021D18 + movs r1, 0 + bl sub_81202F8 + ldr r1, _08124034 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08124038 @ =sub_81203B8 + str r1, [r0] + b _08124050 + .align 2, 0 +_08124030: .4byte gUnknown_2021D18 +_08124034: .4byte gUnknown_3005090 +_08124038: .4byte sub_81203B8 +_0812403C: + movs r0, 0x5 + bl sub_80722CC +_08124042: + ldr r0, _0812405C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08124060 @ =sub_81203B8 + str r0, [r1] +_08124050: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812405C: .4byte gUnknown_3005090 +_08124060: .4byte sub_81203B8 + thumb_func_end sub_8123F80 + + thumb_func_start sub_8124064 +sub_8124064: @ 8124064 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _081240E0 @ =gUnknown_203B0A0 + mov r8, r0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + adds r5, r1, 0 + muls r5, r0 + ldr r0, _081240E4 @ =gUnknown_2024284 + mov r9, r0 + add r5, r9 + movs r0, 0x5 + bl sub_80722CC + ldr r4, _081240E8 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + mov r0, r8 + ldrb r4, [r0, 0x9] + adds r0, r5, 0 + bl sub_8122B20 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + mov r0, r9 + adds r1, r4, 0 + bl sub_812299C + movs r0, 0 + bl sub_8121E5C + movs r0, 0x16 + bl sub_8121D0C + ldr r1, _081240EC @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + movs r1, 0xFF + strh r1, [r0, 0x8] + ldr r1, _081240F0 @ =sub_8122C5C + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081240E0: .4byte gUnknown_203B0A0 +_081240E4: .4byte gUnknown_2024284 +_081240E8: .4byte gUnknown_203B09C +_081240EC: .4byte gUnknown_3005090 +_081240F0: .4byte sub_8122C5C + thumb_func_end sub_8124064 + + thumb_func_start sub_81240F4 +sub_81240F4: @ 81240F4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r5, _08124120 @ =gUnknown_203B09C + ldr r0, [r5] + adds r0, 0xC + bl sub_8121CE4 + bl sub_8127AC0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124124 + adds r0, r4, 0 + bl sub_811FA78 + b _08124142 + .align 2, 0 +_08124120: .4byte gUnknown_203B09C +_08124124: + ldr r0, [r5] + adds r0, 0xD + bl sub_8121CE4 + ldr r0, _08124148 @ =gUnknown_2021D18 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _0812414C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08124150 @ =sub_81203B8 + str r1, [r0] +_08124142: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08124148: .4byte gUnknown_2021D18 +_0812414C: .4byte gUnknown_3005090 +_08124150: .4byte sub_81203B8 + thumb_func_end sub_81240F4 + + thumb_func_start sub_8124154 +sub_8124154: @ 8124154 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0812417C @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x80 + bne _08124184 + movs r0, 0x2 + mov r8, r0 + ldr r1, _08124180 @ =gUnknown_8416B3E + str r1, [sp] + b _0812418C + .align 2, 0 +_0812417C: .4byte gUnknown_203B0A0 +_08124180: .4byte gUnknown_8416B3E +_08124184: + movs r2, 0x3 + mov r8, r2 + ldr r0, _081241FC @ =gUnknown_8416B16 + str r0, [sp] +_0812418C: + ldr r4, _08124200 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + movs r5, 0 + lsls r1, r7, 2 + mov r9, r1 + cmp r5, r8 + bcs _08124222 + ldr r6, _08124204 @ =gUnknown_203B0A0 + ldr r1, _08124208 @ =gUnknown_3005090 + mov r2, r9 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r1 + mov r10, r0 +_081241B6: + ldr r0, _0812420C @ =gUnknown_203B0D4 + adds r4, r5, r0 + ldrb r0, [r4] + cmp r0, 0 + bne _08124218 + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r6, 0x9] + adds r0, 0x1 + strb r0, [r4] + adds r0, r5, 0x2 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08124210 @ =gUnknown_203B0B4 + movs r2, 0x9 + ldrsb r2, [r6, r2] + lsls r2, 4 + ldr r1, [r1] + adds r1, r2 + movs r2, 0x1 + bl sub_8121C70 + mov r0, r8 + subs r0, 0x1 + cmp r5, r0 + bne _081241F0 + bl sub_8124258 +_081241F0: + movs r0, 0 + bl sub_8121D0C + ldr r0, _08124214 @ =sub_811FB28 + mov r1, r10 + b _0812423C + .align 2, 0 +_081241FC: .4byte gUnknown_8416B16 +_08124200: .4byte gUnknown_203B09C +_08124204: .4byte gUnknown_203B0A0 +_08124208: .4byte gUnknown_3005090 +_0812420C: .4byte gUnknown_203B0D4 +_08124210: .4byte gUnknown_203B0B4 +_08124214: .4byte sub_811FB28 +_08124218: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r8 + bcc _081241B6 +_08124222: + movs r0, 0x1A + bl sub_80722CC + ldr r0, [sp] + movs r1, 0x1 + bl sub_81202F8 + ldr r0, _08124250 @ =gUnknown_3005090 + mov r2, r9 + adds r1, r2, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08124254 @ =sub_81203B8 +_0812423C: + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08124250: .4byte gUnknown_3005090 +_08124254: .4byte sub_81203B8 + thumb_func_end sub_8124154 + + thumb_func_start sub_8124258 +sub_8124258: @ 8124258 + push {r4,lr} + ldr r4, _08124274 @ =gUnknown_203B0A0 + ldrb r0, [r4, 0x9] + movs r1, 0 + bl sub_811F818 + movs r0, 0x6 + strb r0, [r4, 0x9] + movs r1, 0x1 + bl sub_811F818 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124274: .4byte gUnknown_203B0A0 + thumb_func_end sub_8124258 + + thumb_func_start sub_8124278 +sub_8124278: @ 8124278 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r4, _081242BC @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + movs r4, 0 + ldr r3, _081242C0 @ =gUnknown_203B0D4 + ldr r6, _081242C4 @ =gUnknown_203B0A0 + adds r5, r6, 0 +_0812429E: + adds r2, r4, r3 + ldrb r1, [r2] + movs r0, 0x9 + ldrsb r0, [r5, r0] + adds r0, 0x1 + cmp r1, r0 + bne _081242DC + movs r1, 0 + strb r1, [r2] + cmp r4, 0 + beq _081242C8 + cmp r4, 0x1 + beq _081242D4 + b _081242E6 + .align 2, 0 +_081242BC: .4byte gUnknown_203B09C +_081242C0: .4byte gUnknown_203B0D4 +_081242C4: .4byte gUnknown_203B0A0 +_081242C8: + ldrb r0, [r3, 0x1] + strb r0, [r3] + ldrb r0, [r3, 0x2] + strb r0, [r3, 0x1] + strb r4, [r3, 0x2] + b _081242E6 +_081242D4: + ldrb r0, [r3, 0x2] + strb r0, [r3, 0x1] + strb r1, [r3, 0x2] + b _081242E6 +_081242DC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0812429E +_081242E6: + ldr r5, _08124344 @ =gUnknown_203B0B4 + movs r0, 0x9 + ldrsb r0, [r6, r0] + lsls r0, 4 + ldr r1, [r5] + adds r1, r0 + movs r0, 0x1 + movs r2, 0x1 + bl sub_8121C70 + ldr r4, _08124348 @ =gUnknown_203B0D4 + ldrb r0, [r4] + cmp r0, 0 + beq _08124312 + lsls r0, 4 + subs r0, 0x10 + ldr r1, [r5] + adds r1, r0 + movs r0, 0x2 + movs r2, 0x1 + bl sub_8121C70 +_08124312: + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08124328 + lsls r0, 4 + subs r0, 0x10 + ldr r1, [r5] + adds r1, r0 + movs r0, 0x3 + movs r2, 0x1 + bl sub_8121C70 +_08124328: + movs r0, 0 + bl sub_8121D0C + ldr r0, _0812434C @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08124350 @ =sub_811FB28 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08124344: .4byte gUnknown_203B0B4 +_08124348: .4byte gUnknown_203B0D4 +_0812434C: .4byte gUnknown_3005090 +_08124350: .4byte sub_811FB28 + thumb_func_end sub_8124278 + + thumb_func_start sub_8124354 +sub_8124354: @ 8124354 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0812437C @ =gUnknown_20370C0 + ldr r0, _08124380 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + strh r0, [r1] + adds r0, r4, 0 + bl sub_811FA78 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812437C: .4byte gUnknown_20370C0 +_08124380: .4byte gUnknown_203B0A0 + thumb_func_end sub_8124354 + + thumb_func_start sub_8124384 +sub_8124384: @ 8124384 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08124410 @ =gUnknown_203B0A0 + mov r9, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r4, _08124414 @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x41 + bl sub_803FBE8 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + mov r1, r9 + movs r0, 0x9 + ldrsb r0, [r1, r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r4 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r1, r9 + movs r0, 0x9 + ldrsb r0, [r1, r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r4 + movs r1, 0x50 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F9800 + ldr r0, [r0] + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_804FCE0 + cmp r0, 0x1 + beq _08124418 + cmp r0, 0x2 + beq _0812442C + movs r0, 0x5 + bl sub_80722CC + adds r0, r7, 0 + bl sub_811FA78 + b _0812446C + .align 2, 0 +_08124410: .4byte gUnknown_203B0A0 +_08124414: .4byte gUnknown_2024284 +_08124418: + ldr r0, _08124424 @ =gUnknown_2021D18 + ldr r1, _08124428 @ =gUnknown_84170BC + bl sub_8008FCC + b _08124434 + .align 2, 0 +_08124424: .4byte gUnknown_2021D18 +_08124428: .4byte gUnknown_84170BC +_0812442C: + ldr r0, _08124478 @ =gUnknown_2021D18 + ldr r1, _0812447C @ =gUnknown_84170E0 + bl sub_8008FCC +_08124434: + movs r0, 0x1A + bl sub_80722CC + ldr r4, _08124480 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + ldr r4, _08124478 @ =gUnknown_2021D18 + ldr r1, _08124484 @ =gUnknown_84169D9 + adds r0, r4, 0 + bl sub_8008DA4 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _08124488 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812448C @ =sub_81203B8 + str r1, [r0] +_0812446C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08124478: .4byte gUnknown_2021D18 +_0812447C: .4byte gUnknown_84170E0 +_08124480: .4byte gUnknown_203B09C +_08124484: .4byte gUnknown_84169D9 +_08124488: .4byte gUnknown_3005090 +_0812448C: .4byte sub_81203B8 + thumb_func_end sub_8124384 + + thumb_func_start sub_8124490 +sub_8124490: @ 8124490 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08124558 @ =gUnknown_203B0A0 + mov r8, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r6, 0x64 + muls r0, r6 + ldr r4, _0812455C @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x41 + bl sub_803FBE8 + mov r9, r0 + mov r1, r9 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + mov r1, r8 + movs r0, 0x9 + ldrsb r0, [r1, r0] + muls r0, r6 + adds r0, r4 + movs r1, 0xB + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r1, r8 + movs r0, 0x9 + ldrsb r0, [r1, r0] + muls r0, r6 + adds r0, r4 + movs r1, 0x50 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F9800 + ldr r0, [r0] + ldr r1, _08124560 @ =gUnknown_203B064 + ldr r1, [r1] + ldr r2, _08124564 @ =gUnknown_203B068 + ldrh r3, [r2] + ldr r2, _08124568 @ =gUnknown_203B06A + ldrb r2, [r2] + str r2, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + mov r2, r9 + bl sub_804FBEC + cmp r0, 0 + beq _08124584 + ldr r5, _0812456C @ =gUnknown_2021D18 + ldr r1, _08124570 @ =gUnknown_845A7E8 + subs r0, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0x1A + bl sub_80722CC + ldr r4, _08124574 @ =gUnknown_203B09C + ldr r0, [r4] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r4] + adds r0, 0xD + bl sub_8121CE4 + ldr r1, _08124578 @ =gUnknown_84169D9 + adds r0, r5, 0 + bl sub_8008DA4 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _0812457C @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _08124580 @ =sub_81203B8 + str r1, [r0] + b _08124590 + .align 2, 0 +_08124558: .4byte gUnknown_203B0A0 +_0812455C: .4byte gUnknown_2024284 +_08124560: .4byte gUnknown_203B064 +_08124564: .4byte gUnknown_203B068 +_08124568: .4byte gUnknown_203B06A +_0812456C: .4byte gUnknown_2021D18 +_08124570: .4byte gUnknown_845A7E8 +_08124574: .4byte gUnknown_203B09C +_08124578: .4byte gUnknown_84169D9 +_0812457C: .4byte gUnknown_3005090 +_08124580: .4byte sub_81203B8 +_08124584: + movs r0, 0x5 + bl sub_80722CC + adds r0, r7, 0 + bl sub_811FA78 +_08124590: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8124490 + + thumb_func_start nullsub_93 +nullsub_93: @ 81245A0 + bx lr + thumb_func_end nullsub_93 + + thumb_func_start sub_81245A4 +sub_81245A4: @ 81245A4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_810F98C + ldr r5, _08124610 @ =gUnknown_203B09C + ldr r1, [r5] + lsls r0, 24 + lsrs r0, 24 + adds r1, 0xF + adds r1, r0 + ldrb r0, [r1] + subs r0, 0x12 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _08124614 @ =gUnknown_845A788 + lsls r0, r4, 3 + adds r7, r0, r1 + ldr r0, [r7] + cmp r0, 0 + bne _081245D6 + b _081247B4 +_081245D6: + ldr r0, [r5] + adds r0, 0xC + bl sub_8121CE4 + ldr r0, [r5] + adds r0, 0xD + bl sub_8121CE4 + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081245FA + bl sub_811B0D0 + cmp r0, 0x1 + bne _0812461C +_081245FA: + adds r0, r4, 0 + subs r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08124618 + movs r0, 0xD + bl sub_8121D0C + b _081247A6 + .align 2, 0 +_08124610: .4byte gUnknown_203B09C +_08124614: .4byte gUnknown_845A788 +_08124618: + ldrb r0, [r7, 0x4] + b _081247A2 +_0812461C: + cmp r4, 0x6 + bhi _08124658 + movs r1, 0x82 + lsls r1, 4 + adds r0, r4, r1 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08124658 + ldr r0, _0812464C @ =gUnknown_8416AE2 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _08124650 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08124654 @ =sub_81203B8 + str r1, [r0] + b _081247B4 + .align 2, 0 +_0812464C: .4byte gUnknown_8416AE2 +_08124650: .4byte gUnknown_3005090 +_08124654: .4byte sub_81203B8 +_08124658: + ldr r1, _08124680 @ =gUnknown_845A788 + lsls r0, r4, 3 + adds r5, r0, r1 + ldr r0, [r5] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0812466E + b _0812478C +_0812466E: + subs r0, r4, 0x2 + cmp r0, 0x8 + bhi _0812475C + lsls r0, 2 + ldr r1, _08124684 @ =_08124688 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08124680: .4byte gUnknown_845A788 +_08124684: .4byte _08124688 + .align 2, 0 +_08124688: + .4byte _0812474C + .4byte _0812475C + .4byte _0812475C + .4byte _0812475C + .4byte _0812475C + .4byte _081246B4 + .4byte _081246F0 + .4byte _081246AC + .4byte _081246AC +_081246AC: + adds r0, r6, 0 + bl sub_80E56DC + b _081247B4 +_081246B4: + ldr r0, _081246E0 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x1C + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1D] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r1, r0, 0 + ldr r0, _081246E4 @ =gUnknown_2021CD0 + ldrb r1, [r1, 0x14] + bl sub_80C4DF8 + ldr r0, _081246E8 @ =gUnknown_2021D18 + ldr r1, _081246EC @ =gUnknown_8417640 + b _08124720 + .align 2, 0 +_081246E0: .4byte gUnknown_3005008 +_081246E4: .4byte gUnknown_2021CD0 +_081246E8: .4byte gUnknown_2021D18 +_081246EC: .4byte gUnknown_8417640 +_081246F0: + ldr r0, _08124738 @ =gUnknown_3005008 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x24 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + lsls r0, 16 + lsrs r0, 16 + adds r1, 0x25 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r1, r0, 0 + ldr r0, _0812473C @ =gUnknown_2021CD0 + ldrb r1, [r1, 0x14] + bl sub_80C4DF8 + ldr r0, _08124740 @ =gUnknown_2021D18 + ldr r1, _08124744 @ =gUnknown_8417615 +_08124720: + bl sub_8008FCC + adds r0, r6, 0 + bl sub_81247C4 + ldr r0, _08124748 @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 2 + adds r0, r1 + strh r4, [r0] + b _081247B4 + .align 2, 0 +_08124738: .4byte gUnknown_3005008 +_0812473C: .4byte gUnknown_2021CD0 +_08124740: .4byte gUnknown_2021D18 +_08124744: .4byte gUnknown_8417615 +_08124748: .4byte gUnknown_203B09C +_0812474C: + ldr r1, _08124754 @ =gUnknown_203B0A0 + ldr r0, _08124758 @ =sub_80C4EF8 + str r0, [r1] + b _08124778 + .align 2, 0 +_08124754: .4byte gUnknown_203B0A0 +_08124758: .4byte sub_80C4EF8 +_0812475C: + ldr r1, _08124780 @ =gUnknown_203B0A0 + ldr r0, _08124784 @ =sub_80567DC + str r0, [r1] + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _08124788 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + bl sub_8124BB0 +_08124778: + adds r0, r6, 0 + bl sub_811FA78 + b _081247B4 + .align 2, 0 +_08124780: .4byte gUnknown_203B0A0 +_08124784: .4byte sub_80567DC +_08124788: .4byte gUnknown_2024284 +_0812478C: + cmp r4, 0 + beq _0812479A + cmp r4, 0x4 + bne _081247A0 + bl sub_8124A0C + b _081247A6 +_0812479A: + bl sub_8124954 + b _081247A6 +_081247A0: + ldrb r0, [r5, 0x4] +_081247A2: + bl sub_8121D0C +_081247A6: + ldr r0, _081247BC @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _081247C0 @ =sub_812492C + str r0, [r1] +_081247B4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081247BC: .4byte gUnknown_3005090 +_081247C0: .4byte sub_812492C + thumb_func_end sub_81245A4 + + thumb_func_start sub_81247C4 +sub_81247C4: @ 81247C4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _081247E8 @ =gUnknown_2021D18 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _081247EC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _081247F0 @ =sub_81247F4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081247E8: .4byte gUnknown_2021D18 +_081247EC: .4byte gUnknown_3005090 +_081247F0: .4byte sub_81247F4 + thumb_func_end sub_81247C4 + + thumb_func_start sub_81247F4 +sub_81247F4: @ 81247F4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08124818 + bl sub_812200C + ldr r0, _08124820 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08124824 @ =sub_8124828 + str r0, [r1] +_08124818: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124820: .4byte gUnknown_3005090 +_08124824: .4byte sub_8124828 + thumb_func_end sub_81247F4 + + thumb_func_start sub_8124828 +sub_8124828: @ 8124828 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0812484E + cmp r1, 0 + bgt _08124848 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0812488C + b _081248A2 +_08124848: + cmp r1, 0x1 + beq _08124892 + b _081248A2 +_0812484E: + ldr r1, _0812487C @ =gUnknown_203B0A0 + ldr r0, _08124880 @ =sub_80567DC + str r0, [r1] + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _08124884 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08124888 @ =gUnknown_203B09C + ldr r1, [r1] + movs r2, 0x86 + lsls r2, 2 + adds r1, r2 + ldrb r1, [r1] + bl sub_8124BB0 + adds r0, r4, 0 + bl sub_811FA78 + b _081248A2 + .align 2, 0 +_0812487C: .4byte gUnknown_203B0A0 +_08124880: .4byte sub_80567DC +_08124884: .4byte gUnknown_2024284 +_08124888: .4byte gUnknown_203B09C +_0812488C: + movs r0, 0x5 + bl sub_80722CC +_08124892: + ldr r0, _081248A8 @ =gUnknown_3005024 + movs r1, 0 + str r1, [r0] + ldr r0, _081248AC @ =gUnknown_203B0C4 + str r1, [r0] + adds r0, r4, 0 + bl sub_81203B8 +_081248A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081248A8: .4byte gUnknown_3005024 +_081248AC: .4byte gUnknown_203B0C4 + thumb_func_end sub_8124828 + + thumb_func_start sub_81248B0 +sub_81248B0: @ 81248B0 + push {lr} + bl sub_807DC00 + ldr r0, _081248C4 @ =sub_81248C8 + movs r1, 0x8 + bl sub_807741C + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_081248C4: .4byte sub_81248C8 + thumb_func_end sub_81248B0 + + thumb_func_start sub_81248C8 +sub_81248C8: @ 81248C8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081248F4 + bl sub_8124904 + ldr r1, _081248FC @ =gUnknown_20386E0 + lsls r0, 16 + lsrs r0, 16 + str r0, [r1] + ldr r0, _08124900 @ =gUnknown_203B0C4 + ldr r0, [r0] + bl _call_via_r0 + adds r0, r4, 0 + bl sub_8077508 +_081248F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081248FC: .4byte gUnknown_20386E0 +_08124900: .4byte gUnknown_203B0C4 + thumb_func_end sub_81248C8 + + thumb_func_start sub_8124904 +sub_8124904: @ 8124904 + push {lr} + ldr r0, _08124924 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08124928 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08124924: .4byte gUnknown_203B0A0 +_08124928: .4byte gUnknown_2024284 + thumb_func_end sub_8124904 + + thumb_func_start sub_812492C +sub_812492C: @ 812492C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08124950 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08124946 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812494C +_08124946: + adds r0, r2, 0 + bl sub_8123640 +_0812494C: + pop {r0} + bx r0 + .align 2, 0 +_08124950: .4byte gUnknown_30030F0 + thumb_func_end sub_812492C + + thumb_func_start sub_8124954 +sub_8124954: @ 8124954 + push {lr} + ldr r0, _0812496C @ =0x00000806 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124970 + movs r0, 0xC + bl sub_8121D0C + b _08124976 + .align 2, 0 +_0812496C: .4byte 0x00000806 +_08124970: + movs r0, 0xD + bl sub_8121D0C +_08124976: + pop {r0} + bx r0 + thumb_func_end sub_8124954 + + thumb_func_start sub_812497C +sub_812497C: @ 812497C + push {lr} + bl sub_811FB0C + ldr r1, _08124994 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + movs r0, 0x9 + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_08124994: .4byte gUnknown_20386E0 + thumb_func_end sub_812497C + + thumb_func_start sub_8124998 +sub_8124998: @ 8124998 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08124A00 + bl sub_805C83C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124A00 + bl sub_805C8B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124A00 + ldr r1, _081249F0 @ =gUnknown_3005024 + ldr r0, _081249F4 @ =sub_81248B0 + str r0, [r1] + ldr r1, _081249F8 @ =gUnknown_203B0C4 + ldr r0, _081249FC @ =sub_812497C + str r0, [r1] + movs r0, 0x1 + b _08124A02 + .align 2, 0 +_081249F0: .4byte gUnknown_3005024 +_081249F4: .4byte sub_81248B0 +_081249F8: .4byte gUnknown_203B0C4 +_081249FC: .4byte sub_812497C +_08124A00: + movs r0, 0 +_08124A02: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8124998 + + thumb_func_start sub_8124A0C +sub_8124A0C: @ 8124A0C + push {r4,lr} + sub sp, 0x4 + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08124A24 + movs r0, 0x9 + bl sub_8121D0C + b _08124A82 +_08124A24: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124A56 + movs r0, 0xA + bl sub_8121D0C + b _08124A82 +_08124A56: + ldr r0, _08124A78 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, 0x3 + bne _08124A7C + ldrb r0, [r1, 0x5] + subs r0, 0x23 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08124A7C + movs r0, 0xB + bl sub_8121D0C + b _08124A82 + .align 2, 0 +_08124A78: .4byte gUnknown_3005008 +_08124A7C: + movs r0, 0x8 + bl sub_8121D0C +_08124A82: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8124A0C + + thumb_func_start sub_8124A8C +sub_8124A8C: @ 8124A8C + push {lr} + ldr r0, _08124AA4 @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + bl sub_80561FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08124AA8 + movs r0, 0 + b _08124AAA + .align 2, 0 +_08124AA4: .4byte gUnknown_2036DFC +_08124AA8: + movs r0, 0x1 +_08124AAA: + pop {r1} + bx r1 + thumb_func_end sub_8124A8C + + thumb_func_start sub_8124AB0 +sub_8124AB0: @ 8124AB0 + push {lr} + sub sp, 0xC + movs r0, 0 + str r0, [sp] + ldr r0, _08124AD4 @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _08124AD8 @ =sub_80568A8 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08124AD4: .4byte sub_811FB28 +_08124AD8: .4byte sub_80568A8 + thumb_func_end sub_8124AB0 + + thumb_func_start sub_8124ADC +sub_8124ADC: @ 8124ADC + push {lr} + bl sub_811FB0C + ldr r1, _08124AF4 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + movs r0, 0x2B + bl sub_8083444 + pop {r0} + bx r0 + .align 2, 0 +_08124AF4: .4byte gUnknown_20386E0 + thumb_func_end sub_8124ADC + + thumb_func_start sub_8124AF8 +sub_8124AF8: @ 8124AF8 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_805A104 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124B54 + bl sub_805C88C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124B54 + ldr r1, _08124B44 @ =gUnknown_3005024 + ldr r0, _08124B48 @ =sub_81248B0 + str r0, [r1] + ldr r1, _08124B4C @ =gUnknown_203B0C4 + ldr r0, _08124B50 @ =sub_8124ADC + str r0, [r1] + movs r0, 0x1 + b _08124B56 + .align 2, 0 +_08124B44: .4byte gUnknown_3005024 +_08124B48: .4byte sub_81248B0 +_08124B4C: .4byte gUnknown_203B0C4 +_08124B50: .4byte sub_8124ADC +_08124B54: + movs r0, 0 +_08124B56: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8124AF8 + + thumb_func_start sub_8124B60 +sub_8124B60: @ 8124B60 + push {r4-r7,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0x8 + bl sub_8002B9C + adds r7, r0, 0 + adds r0, r6, 0 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r7, 0x4] + strh r4, [r7] + strh r5, [r7, 0x2] + ldr r0, _08124B98 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x6 + bne _08124B9C + movs r0, 0xA + adds r1, r7, 0 + bl sub_8113550 + b _08124BA4 + .align 2, 0 +_08124B98: .4byte gUnknown_203B0A0 +_08124B9C: + movs r0, 0x9 + adds r1, r7, 0 + bl sub_8113550 +_08124BA4: + adds r0, r7, 0 + bl sub_8002BC4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8124B60 + + thumb_func_start sub_8124BB0 +sub_8124BB0: @ 8124BB0 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + movs r0, 0x4 + bl sub_8002B9C + adds r6, r0, 0 + adds r0, r5, 0 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r6] + strb r4, [r6, 0x2] + ldrb r0, [r6, 0x2] + cmp r0, 0x7 + beq _08124BDA + cmp r0, 0x8 + beq _08124BFC + movs r0, 0xFF + b _08124C00 +_08124BDA: + ldr r0, _08124BF8 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x1C + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1D] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + b _08124BFE + .align 2, 0 +_08124BF8: .4byte gUnknown_3005008 +_08124BFC: + ldr r0, _08124C18 @ =gUnknown_2036DFC +_08124BFE: + ldrb r0, [r0, 0x14] +_08124C00: + strb r0, [r6, 0x3] + movs r0, 0x24 + adds r1, r6, 0 + bl sub_8113550 + adds r0, r6, 0 + bl sub_8002BC4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08124C18: .4byte gUnknown_2036DFC + thumb_func_end sub_8124BB0 + + thumb_func_start sub_8124C1C +sub_8124C1C: @ 8124C1C + push {r4,r5,lr} + adds r5, r0, 0 + movs r0, 0x8 + bl sub_8002B9C + adds r4, r0, 0 + ldrb r0, [r5] + strb r0, [r4] + ldrb r0, [r5, 0x1] + strb r0, [r4, 0x1] + movs r0, 0 + ldrsb r0, [r4, r0] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ldrsb r1, [r4, r1] + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_8002BC4 + movs r0, 0x4 + bl sub_8002B9C + adds r4, r0, 0 + bl sub_811FB0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _08124C88 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + strh r0, [r4] + movs r0, 0x2 + strb r0, [r4, 0x2] + ldrb r0, [r5, 0x14] + strb r0, [r4, 0x3] + movs r0, 0x24 + adds r1, r4, 0 + bl sub_8113550 + adds r0, r4, 0 + bl sub_8002BC4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08124C88: .4byte gUnknown_2024284 + thumb_func_end sub_8124C1C + + thumb_func_start sub_8124C8C +sub_8124C8C: @ 8124C8C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r6, _08124CB4 @ =sub_8124D90 + ldr r0, _08124CB8 @ =gUnknown_30030F0 + ldr r1, _08124CBC @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08124CCC + movs r0, 0x1 + mov r8, r0 + bl sub_81278B4 + lsls r0, 24 + lsrs r7, r0, 24 + b _08124CD2 + .align 2, 0 +_08124CB4: .4byte sub_8124D90 +_08124CB8: .4byte gUnknown_30030F0 +_08124CBC: .4byte 0x00000439 +_08124CC0: + ldr r0, _08124CC8 @ =gUnknown_203B0A0 + strb r5, [r0, 0x9] + b _08124D16 + .align 2, 0 +_08124CC8: .4byte gUnknown_203B0A0 +_08124CCC: + movs r1, 0 + mov r8, r1 + movs r7, 0 +_08124CD2: + ldr r4, _08124D30 @ =gUnknown_203AD30 + ldrh r0, [r4] + bl sub_8126C68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + bne _08124D44 + ldr r1, _08124D34 @ =gUnknown_203B0A0 + movs r0, 0 + strb r0, [r1, 0x9] + movs r5, 0 +_08124CEA: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08124D38 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08124D0C + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08124CC0 +_08124D0C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08124CEA +_08124D16: + ldr r0, _08124D30 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bne _08124D28 + ldr r6, _08124D3C @ =sub_8124DB0 +_08124D28: + ldr r1, _08124D40 @ =sub_8124FC8 + movs r0, 0x7F + b _08124D6A + .align 2, 0 +_08124D30: .4byte gUnknown_203AD30 +_08124D34: .4byte gUnknown_203B0A0 +_08124D38: .4byte gUnknown_2024284 +_08124D3C: .4byte sub_8124DB0 +_08124D40: .4byte sub_8124FC8 +_08124D44: + ldrh r0, [r4] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _08124D5A + cmp r0, 0x5 + beq _08124D64 + movs r0, 0x5 + b _08124D68 +_08124D5A: + movs r0, 0x4 + ldr r6, _08124D60 @ =sub_8124DA0 + b _08124D68 + .align 2, 0 +_08124D60: .4byte sub_8124DA0 +_08124D64: + movs r0, 0x5 + ldr r6, _08124D88 @ =sub_8124DB0 +_08124D68: + ldr r1, _08124D8C @ =sub_811FB28 +_08124D6A: + str r0, [sp] + str r1, [sp, 0x4] + str r6, [sp, 0x8] + mov r0, r8 + adds r1, r7, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_811EA44 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08124D88: .4byte sub_8124DB0 +_08124D8C: .4byte sub_811FB28 + thumb_func_end sub_8124C8C + + thumb_func_start sub_8124D90 +sub_8124D90: @ 8124D90 + push {lr} + movs r0, 0xB + movs r1, 0x3 + movs r2, 0 + bl sub_8107DB4 + pop {r0} + bx r0 + thumb_func_end sub_8124D90 + + thumb_func_start sub_8124DA0 +sub_8124DA0: @ 8124DA0 + push {lr} + movs r0, 0x5 + movs r1, 0 + movs r2, 0xFF + bl sub_81317F8 + pop {r0} + bx r0 + thumb_func_end sub_8124DA0 + + thumb_func_start sub_8124DB0 +sub_8124DB0: @ 8124DB0 + push {lr} + movs r0, 0x6 + movs r1, 0 + movs r2, 0xFF + bl sub_813CD50 + pop {r0} + bx r0 + thumb_func_end sub_8124DB0 + + thumb_func_start sub_8124DC0 +sub_8124DC0: @ 8124DC0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08124DD8 @ =gUnknown_203B09C + ldr r2, [r1] + ldr r1, _08124DDC @ =sub_8124DE0 + str r1, [r2, 0x4] + bl sub_811FA78 + pop {r0} + bx r0 + .align 2, 0 +_08124DD8: .4byte gUnknown_203B09C +_08124DDC: .4byte sub_8124DE0 + thumb_func_end sub_8124DC0 + + thumb_func_start sub_8124DE0 +sub_8124DE0: @ 8124DE0 + push {r4,lr} + ldr r4, _08124E0C @ =gUnknown_203AD30 + ldrh r0, [r4] + bl sub_80A1150 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08124E2C + bl sub_8126C24 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08124E18 + ldr r0, _08124E10 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + ldrh r1, [r4] + ldr r2, _08124E14 @ =sub_8126BD4 + bl sub_811C540 + b _08124E38 + .align 2, 0 +_08124E0C: .4byte gUnknown_203AD30 +_08124E10: .4byte gUnknown_203B0A0 +_08124E14: .4byte sub_8126BD4 +_08124E18: + ldr r2, _08124E28 @ =gUnknown_203B0A0 + ldrb r0, [r2, 0x9] + ldrh r1, [r4] + ldr r2, [r2] + bl sub_811C5AC + b _08124E38 + .align 2, 0 +_08124E28: .4byte gUnknown_203B0A0 +_08124E2C: + ldr r0, _08124E40 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + ldrh r1, [r4] + ldr r2, _08124E44 @ =sub_8124E48 + bl sub_811C540 +_08124E38: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124E40: .4byte gUnknown_203B0A0 +_08124E44: .4byte sub_8124E48 + thumb_func_end sub_8124DE0 + + thumb_func_start sub_8124E48 +sub_8124E48: @ 8124E48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r7, _08124EBC @ =gUnknown_203AD30 + ldrh r0, [r7] + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _08124EC8 + bl sub_811D178 + cmp r0, 0x1 + bne _08124EC8 + ldr r0, _08124EC0 @ =gUnknown_203B0A0 + mov r8, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r6, 0x64 + adds r4, r0, 0 + muls r4, r6 + ldr r5, _08124EC4 @ =gUnknown_2024284 + adds r4, r5 + ldrh r0, [r7] + bl sub_8125A78 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_803E89C + mov r1, r8 + movs r0, 0x9 + ldrsb r0, [r1, r0] + muls r0, r6 + adds r0, r5 + movs r1, 0x4 + bl sub_80436F8 + ldrh r1, [r7] + movs r0, 0xA9 + lsls r0, 1 + cmp r1, r0 + bhi _08124EB0 + adds r0, r1, 0 + movs r1, 0x1 + bl sub_809A1D8 +_08124EB0: + mov r1, r8 + ldr r0, [r1] + bl sub_8000544 + b _08124EE6 + .align 2, 0 +_08124EBC: .4byte gUnknown_203AD30 +_08124EC0: .4byte gUnknown_203B0A0 +_08124EC4: .4byte gUnknown_2024284 +_08124EC8: + ldr r2, _08124EF4 @ =gUnknown_203B0A0 + ldrb r0, [r2, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r3, [r2, 0x9] + movs r1, 0x7F + str r1, [sp] + ldr r1, _08124EF8 @ =sub_8124FC8 + str r1, [sp, 0x4] + ldr r1, [r2] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r2, 0 + bl sub_811EA44 +_08124EE6: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08124EF4: .4byte gUnknown_203B0A0 +_08124EF8: .4byte sub_8124FC8 + thumb_func_end sub_8124E48 + + thumb_func_start sub_8124EFC +sub_8124EFC: @ 8124EFC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + bl sub_811D178 + cmp r0, 0x1 + bne _08124F94 + ldr r0, _08124F88 @ =gUnknown_203B0A0 + mov r8, r0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + adds r5, r1, 0 + muls r5, r0 + ldr r0, _08124F8C @ =gUnknown_2024284 + adds r5, r0 + bl sub_8138B2C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r1, r4, 0 + adds r1, 0xD + adds r0, r5, 0 + bl sub_803FBE8 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8041064 + ldr r7, _08124F90 @ =gUnknown_203AD30 + ldrh r0, [r7] + bl sub_8125A78 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_803E964 + adds r0, r5, 0 + movs r1, 0x4 + bl sub_80436F8 + ldrh r2, [r7] + movs r0, 0x4 + adds r1, r5, 0 + adds r3, r6, 0 + bl sub_80A2294 + ldrh r1, [r7] + movs r0, 0xA9 + lsls r0, 1 + cmp r1, r0 + bhi _08124F7C + adds r0, r1, 0 + movs r1, 0x1 + bl sub_809A1D8 +_08124F7C: + mov r1, r8 + ldr r0, [r1] + bl sub_8000544 + b _08124FB2 + .align 2, 0 +_08124F88: .4byte gUnknown_203B0A0 +_08124F8C: .4byte gUnknown_2024284 +_08124F90: .4byte gUnknown_203AD30 +_08124F94: + ldr r4, _08124FC0 @ =gUnknown_203B0A0 + ldrb r0, [r4, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r4, 0xB] + ldrb r3, [r4, 0x9] + movs r1, 0x7F + str r1, [sp] + ldr r1, _08124FC4 @ =sub_8124FC8 + str r1, [sp, 0x4] + ldr r1, [r4] + str r1, [sp, 0x8] + movs r1, 0xFF + bl sub_811EA44 +_08124FB2: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08124FC0: .4byte gUnknown_203B0A0 +_08124FC4: .4byte sub_8124FC8 + thumb_func_end sub_8124EFC + + thumb_func_start sub_8124FC8 +sub_8124FC8: @ 8124FC8 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _08125000 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08124FFA + ldr r0, _08125004 @ =gUnknown_203B0A0 + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08124FEE + ldr r0, _08125008 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _0812500C @ =sub_8128184 + str r0, [r1, 0x4] +_08124FEE: + ldr r0, _08125010 @ =gUnknown_3005E98 + ldr r1, _08125014 @ =sub_81255BC + ldr r2, [r0] + adds r0, r3, 0 + bl _call_via_r2 +_08124FFA: + pop {r0} + bx r0 + .align 2, 0 +_08125000: .4byte gUnknown_2037AB8 +_08125004: .4byte gUnknown_203B0A0 +_08125008: .4byte gUnknown_203B09C +_0812500C: .4byte sub_8128184 +_08125010: .4byte gUnknown_3005E98 +_08125014: .4byte sub_81255BC + thumb_func_end sub_8124FC8 + + thumb_func_start sub_8125018 +sub_8125018: @ 8125018 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08125034 + ldr r0, _0812502C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08125030 @ =0x00003108 + adds r0, r1 + b _0812503E + .align 2, 0 +_0812502C: .4byte gUnknown_3005008 +_08125030: .4byte 0x00003108 +_08125034: + ldr r1, _0812504C @ =gUnknown_82528BC + subs r0, 0xD + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] +_0812503E: + ldrb r1, [r0, 0x4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08125050 + movs r0, 0 + b _08125052 + .align 2, 0 +_0812504C: .4byte gUnknown_82528BC +_08125050: + movs r0, 0x1 +_08125052: + pop {r1} + bx r1 + thumb_func_end sub_8125018 + + thumb_func_start sub_8125058 +sub_8125058: @ 8125058 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8126C68 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x3 + cmp r0, 0x12 + bls _0812506E + b _08125204 +_0812506E: + lsls r0, 2 + ldr r1, _08125078 @ =_0812507C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08125078: .4byte _0812507C + .align 2, 0 +_0812507C: + .4byte _081250C8 + .4byte _081250DC + .4byte _081250F0 + .4byte _08125104 + .4byte _08125118 + .4byte _0812512C + .4byte _08125140 + .4byte _08125204 + .4byte _08125154 + .4byte _08125178 + .4byte _08125168 + .4byte _081251A8 + .4byte _081251B8 + .4byte _08125198 + .4byte _08125188 + .4byte _08125204 + .4byte _081251DC + .4byte _081251DC + .4byte _081251F0 +_081250C8: + ldr r0, _081250D4 @ =gUnknown_2021D18 + ldr r1, _081250D8 @ =gUnknown_8416F4E + bl sub_8008FCC + b _0812520C + .align 2, 0 +_081250D4: .4byte gUnknown_2021D18 +_081250D8: .4byte gUnknown_8416F4E +_081250DC: + ldr r0, _081250E8 @ =gUnknown_2021D18 + ldr r1, _081250EC @ =gUnknown_8416F8C + bl sub_8008FCC + b _0812520C + .align 2, 0 +_081250E8: .4byte gUnknown_2021D18 +_081250EC: .4byte gUnknown_8416F8C +_081250F0: + ldr r0, _081250FC @ =gUnknown_2021D18 + ldr r1, _08125100 @ =gUnknown_8416F9A + bl sub_8008FCC + b _0812520C + .align 2, 0 +_081250FC: .4byte gUnknown_2021D18 +_08125100: .4byte gUnknown_8416F9A +_08125104: + ldr r0, _08125110 @ =gUnknown_2021D18 + ldr r1, _08125114 @ =gUnknown_8416FB2 + bl sub_8008FCC + b _0812520C + .align 2, 0 +_08125110: .4byte gUnknown_2021D18 +_08125114: .4byte gUnknown_8416FB2 +_08125118: + ldr r0, _08125124 @ =gUnknown_2021D18 + ldr r1, _08125128 @ =gUnknown_8416F6F + bl sub_8008FCC + b _0812520C + .align 2, 0 +_08125124: .4byte gUnknown_2021D18 +_08125128: .4byte gUnknown_8416F6F +_0812512C: + ldr r0, _08125138 @ =gUnknown_2021D18 + ldr r1, _0812513C @ =gUnknown_8417052 + bl sub_8008FCC + b _0812520C + .align 2, 0 +_08125138: .4byte gUnknown_2021D18 +_0812513C: .4byte gUnknown_8417052 +_08125140: + ldr r0, _0812514C @ =gUnknown_2021D18 + ldr r1, _08125150 @ =gUnknown_8417075 + bl sub_8008FCC + b _0812520C + .align 2, 0 +_0812514C: .4byte gUnknown_2021D18 +_08125150: .4byte gUnknown_8417075 +_08125154: + ldr r0, _08125160 @ =gUnknown_2021D18 + ldr r1, _08125164 @ =gUnknown_8416FED + bl sub_8008FCC + b _0812520C + .align 2, 0 +_08125160: .4byte gUnknown_2021D18 +_08125164: .4byte gUnknown_8416FED +_08125168: + ldr r0, _08125170 @ =gUnknown_2021CF0 + ldr r1, _08125174 @ =gUnknown_84169C2 + b _081251BC + .align 2, 0 +_08125170: .4byte gUnknown_2021CF0 +_08125174: .4byte gUnknown_84169C2 +_08125178: + ldr r0, _08125180 @ =gUnknown_2021CF0 + ldr r1, _08125184 @ =gUnknown_8417674 + b _081251BC + .align 2, 0 +_08125180: .4byte gUnknown_2021CF0 +_08125184: .4byte gUnknown_8417674 +_08125188: + ldr r0, _08125190 @ =gUnknown_2021CF0 + ldr r1, _08125194 @ =gUnknown_841767B + b _081251BC + .align 2, 0 +_08125190: .4byte gUnknown_2021CF0 +_08125194: .4byte gUnknown_841767B +_08125198: + ldr r0, _081251A0 @ =gUnknown_2021CF0 + ldr r1, _081251A4 @ =gUnknown_841768D + b _081251BC + .align 2, 0 +_081251A0: .4byte gUnknown_2021CF0 +_081251A4: .4byte gUnknown_841768D +_081251A8: + ldr r0, _081251B0 @ =gUnknown_2021CF0 + ldr r1, _081251B4 @ =gUnknown_84169C5 + b _081251BC + .align 2, 0 +_081251B0: .4byte gUnknown_2021CF0 +_081251B4: .4byte gUnknown_84169C5 +_081251B8: + ldr r0, _081251CC @ =gUnknown_2021CF0 + ldr r1, _081251D0 @ =gUnknown_84169CD +_081251BC: + bl sub_8008D84 + ldr r0, _081251D4 @ =gUnknown_2021D18 + ldr r1, _081251D8 @ =gUnknown_8417032 + bl sub_8008FCC + b _0812520C + .align 2, 0 +_081251CC: .4byte gUnknown_2021CF0 +_081251D0: .4byte gUnknown_84169CD +_081251D4: .4byte gUnknown_2021D18 +_081251D8: .4byte gUnknown_8417032 +_081251DC: + ldr r0, _081251E8 @ =gUnknown_2021D18 + ldr r1, _081251EC @ =gUnknown_8417002 + bl sub_8008FCC + b _0812520C + .align 2, 0 +_081251E8: .4byte gUnknown_2021D18 +_081251EC: .4byte gUnknown_8417002 +_081251F0: + ldr r0, _081251FC @ =gUnknown_2021D18 + ldr r1, _08125200 @ =gUnknown_8416FC7 + bl sub_8008FCC + b _0812520C + .align 2, 0 +_081251FC: .4byte gUnknown_2021D18 +_08125200: .4byte gUnknown_8416FC7 +_08125204: + ldr r0, _08125210 @ =gUnknown_2021D18 + ldr r1, _08125214 @ =gUnknown_84169DC + bl sub_8008FCC +_0812520C: + pop {r0} + bx r0 + .align 2, 0 +_08125210: .4byte gUnknown_2021D18 +_08125214: .4byte gUnknown_84169DC + thumb_func_end sub_8125058 + + thumb_func_start sub_8125218 +sub_8125218: @ 8125218 + push {r4,lr} + adds r4, r0, 0 + lsls r0, r1, 16 + lsrs r0, 16 + bl sub_8126C68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD + bne _08125244 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + ldr r1, _08125240 @ =0x0000012f + cmp r0, r1 + bne _08125244 + movs r0, 0 + b _08125246 + .align 2, 0 +_08125240: .4byte 0x0000012f +_08125244: + movs r0, 0x1 +_08125246: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8125218 + + thumb_func_start sub_812524C +sub_812524C: @ 812524C + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x27 + beq _0812525E + cmp r0, 0x29 + beq _0812525E + cmp r0, 0x28 + bne _08125262 +_0812525E: + movs r0, 0x1 + b _08125264 +_08125262: + movs r0, 0 +_08125264: + pop {r1} + bx r1 + thumb_func_end sub_812524C + + thumb_func_start sub_8125268 +sub_8125268: @ 8125268 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _08125294 @ =gUnknown_30030F0 + ldr r1, _08125298 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081252A0 + movs r0, 0x64 + muls r0, r3 + ldr r1, _0812529C @ =gUnknown_2024284 + adds r0, r1 + adds r1, r5, 0 + adds r2, r3, 0 + b _081252BA + .align 2, 0 +_08125294: .4byte gUnknown_30030F0 +_08125298: .4byte 0x00000439 +_0812529C: .4byte gUnknown_2024284 +_081252A0: + movs r0, 0x64 + adds r4, r3, 0 + muls r4, r0 + ldr r0, _081252CC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r3, 0 + bl sub_8127F7C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 +_081252BA: + adds r3, r6, 0 + bl sub_80413C0 + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081252CC: .4byte gUnknown_2024284 + thumb_func_end sub_8125268 + + thumb_func_start sub_81252D0 +sub_81252D0: @ 81252D0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08125300 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08125304 @ =gUnknown_2024284 + adds r5, r1, r0 + ldr r0, _08125308 @ =gUnknown_203AD30 + ldrh r6, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8125218 + lsls r0, 24 + cmp r0, 0 + bne _0812530C + movs r4, 0x1 + b _08125342 + .align 2, 0 +_08125300: .4byte gUnknown_203B0A0 +_08125304: .4byte gUnknown_2024284 +_08125308: .4byte gUnknown_203AD30 +_0812530C: + adds r0, r6, 0 + bl sub_8125018 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08125330 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 +_08125330: + ldr r0, _08125370 @ =gUnknown_203B0A0 + ldrb r2, [r0, 0x9] + adds r0, r5, 0 + adds r1, r6, 0 + movs r3, 0 + bl sub_8042414 + lsls r0, 24 + lsrs r4, r0, 24 +_08125342: + movs r0, 0x5 + bl sub_80722CC + cmp r4, 0 + beq _08125380 + ldr r1, _08125374 @ =gUnknown_203B0C0 + movs r0, 0 + strb r0, [r1] + ldr r0, _08125378 @ =gUnknown_84169DC + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _0812537C @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + mov r1, r8 + str r1, [r0] + b _08125398 + .align 2, 0 +_08125370: .4byte gUnknown_203B0A0 +_08125374: .4byte gUnknown_203B0C0 +_08125378: .4byte gUnknown_84169DC +_0812537C: .4byte gUnknown_3005090 +_08125380: + ldr r3, _081253A4 @ =0x0000ffff + movs r0, 0x4 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80A2294 + adds r0, r7, 0 + bl sub_8124DC0 + ldr r1, _081253A8 @ =gUnknown_3005E98 + ldr r0, _081253AC @ =sub_81253B0 + str r0, [r1] +_08125398: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081253A4: .4byte 0x0000ffff +_081253A8: .4byte gUnknown_3005E98 +_081253AC: .4byte sub_81253B0 + thumb_func_end sub_81252D0 + + thumb_func_start sub_81253B0 +sub_81253B0: @ 81253B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + str r1, [sp, 0x4] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0 + mov r10, r0 + ldr r0, _08125438 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0812543C @ =gUnknown_2024284 + adds r5, r1, r0 + ldr r0, _08125440 @ =gUnknown_203AD30 + ldrh r6, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8125218 + lsls r0, 24 + cmp r0, 0 + beq _08125428 + adds r0, r6, 0 + bl sub_8125018 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x1 + bne _08125416 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + adds r0, r5, 0 + movs r1, 0x3A + bl sub_803FBE8 + cmp r10, r0 + bne _08125416 + movs r1, 0 + mov r8, r1 +_08125416: + ldr r4, _08125438 @ =gUnknown_203B0A0 + ldrb r0, [r4, 0x9] + adds r1, r6, 0 + movs r2, 0 + bl sub_8125268 + lsls r0, 24 + cmp r0, 0 + beq _0812544C +_08125428: + ldr r1, _08125444 @ =gUnknown_203B0C0 + movs r0, 0 + strb r0, [r1] + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08125448 @ =gUnknown_84169DC + b _0812551C + .align 2, 0 +_08125438: .4byte gUnknown_203B0A0 +_0812543C: .4byte gUnknown_2024284 +_08125440: .4byte gUnknown_203AD30 +_08125444: .4byte gUnknown_203B0C0 +_08125448: .4byte gUnknown_84169DC +_0812544C: + ldr r1, _08125474 @ =gUnknown_203B0C0 + movs r0, 0x1 + strb r0, [r1] + adds r0, r6, 0 + bl sub_812524C + lsls r0, 24 + cmp r0, 0 + bne _08125478 + movs r0, 0x1 + bl sub_80722CC + ldrb r0, [r4, 0xB] + cmp r0, 0xE + beq _0812547E + adds r0, r6, 0 + movs r1, 0x1 + bl sub_809A1D8 + b _0812547E + .align 2, 0 +_08125474: .4byte gUnknown_203B0C0 +_08125478: + movs r0, 0x6E + bl sub_80722CC +_0812547E: + ldr r4, _081254FC @ =gUnknown_203B0B4 + ldr r7, _08125500 @ =gUnknown_203B0A0 + movs r0, 0x9 + ldrsb r0, [r7, r0] + lsls r0, 4 + ldr r1, [r4] + adds r1, r0 + adds r0, r5, 0 + bl sub_8122904 + ldr r2, _08125504 @ =gUnknown_202063C + movs r0, 0x9 + ldrsb r0, [r7, r0] + ldr r1, [r4] + lsls r0, 4 + adds r3, r0, r1 + ldrb r1, [r3, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _081254BC + adds r0, r5, 0 + adds r1, r3, 0 + movs r2, 0x1 + bl sub_8121790 +_081254BC: + mov r2, r8 + cmp r2, 0x1 + bne _0812550C + mov r0, r10 + cmp r0, 0 + bne _081254D0 + ldrb r0, [r7, 0x9] + movs r1, 0x1 + bl sub_811F818 +_081254D0: + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r1, r10 + subs r3, r1 + lsls r3, 16 + asrs r3, 16 + ldrb r1, [r7, 0x9] + ldr r0, _08125508 @ =sub_8125554 + str r0, [sp] + mov r0, r9 + movs r2, 0x1 + bl sub_8120760 + mov r0, r9 + movs r1, 0 + mov r2, r10 + bl sub_81207F0 + b _08125538 + .align 2, 0 +_081254FC: .4byte gUnknown_203B0B4 +_08125500: .4byte gUnknown_203B0A0 +_08125504: .4byte gUnknown_202063C +_08125508: .4byte sub_8125554 +_0812550C: + ldr r1, _08125548 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + adds r0, r6, 0 + bl sub_8125058 + ldr r0, _0812554C @ =gUnknown_2021D18 +_0812551C: + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08125550 @ =gUnknown_3005090 + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldr r1, [sp, 0x4] + str r1, [r0] +_08125538: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08125548: .4byte gUnknown_2021CD0 +_0812554C: .4byte gUnknown_2021D18 +_08125550: .4byte gUnknown_3005090 + thumb_func_end sub_81253B0 + + thumb_func_start sub_8125554 +sub_8125554: @ 8125554 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _081255A0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081255A4 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _081255A8 @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r4, _081255AC @ =gUnknown_2021D18 + ldr r1, _081255B0 @ =gUnknown_8416F27 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + bl sub_803539C + ldr r1, _081255B4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _081255B8 @ =sub_81255BC + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081255A0: .4byte gUnknown_203B0A0 +_081255A4: .4byte gUnknown_2024284 +_081255A8: .4byte gUnknown_2021CD0 +_081255AC: .4byte gUnknown_2021D18 +_081255B0: .4byte gUnknown_8416F27 +_081255B4: .4byte gUnknown_3005090 +_081255B8: .4byte sub_81255BC + thumb_func_end sub_8125554 + + thumb_func_start sub_81255BC +sub_81255BC: @ 81255BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081255E2 + ldr r0, _081255E8 @ =gUnknown_203B0C0 + ldrb r1, [r0] + cmp r1, 0 + bne _081255DC + ldr r0, _081255EC @ =gUnknown_203B09C + ldr r0, [r0] + str r1, [r0, 0x4] +_081255DC: + adds r0, r4, 0 + bl sub_811FA78 +_081255E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081255E8: .4byte gUnknown_203B0C0 +_081255EC: .4byte gUnknown_203B09C + thumb_func_end sub_81255BC + + thumb_func_start sub_81255F0 +sub_81255F0: @ 81255F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + mov r10, r0 + movs r1, 0x2 + mov r8, r1 + movs r0, 0x3 + bl sub_8121E5C + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r6, 0 + movs r0, 0x64 + adds r2, r4, 0 + muls r2, r0 + str r2, [sp, 0xC] +_08125620: + ldr r0, _081256B8 @ =gUnknown_2024284 + adds r1, r6, 0 + adds r1, 0xD + ldr r2, [sp, 0xC] + adds r0, r2, r0 + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r0, r8 + movs r1, 0 + bl sub_80F79D8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x2 + bl sub_80F79D8 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xD + adds r2, r5, 0 + muls r2, r0 + ldr r0, _081256BC @ =gUnknown_8247094 + adds r2, r0 + lsls r0, r6, 4 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r7, 0 + str r7, [sp, 0x8] + mov r0, r9 + mov r1, r8 + adds r3, r4, 0 + bl sub_8002C48 + cmp r5, 0 + beq _08125680 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_08125680: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _08125620 + movs r0, 0x10 + str r0, [sp] + mov r0, r10 + str r0, [sp, 0x4] + str r7, [sp, 0x8] + mov r0, r9 + mov r1, r8 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0x2 + bl sub_80F67A4 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081256B8: .4byte gUnknown_2024284 +_081256BC: .4byte gUnknown_8247094 + thumb_func_end sub_81255F0 + + thumb_func_start sub_81256C0 +sub_81256C0: @ 81256C0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_810F998 + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _081256F2 + adds r0, 0x1 + cmp r1, r0 + bne _081256EC + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_81257D4 + b _081256F2 +_081256EC: + adds r0, r5, 0 + bl sub_8125790 +_081256F2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81256C0 + + thumb_func_start sub_81256F8 +sub_81256F8: @ 81256F8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08125710 @ =gUnknown_203AD30 + ldrh r0, [r0] + cmp r0, 0xAF + bne _0812571C + ldr r0, _08125714 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08125718 @ =0x00003108 + adds r0, r1 + b _08125726 + .align 2, 0 +_08125710: .4byte gUnknown_203AD30 +_08125714: .4byte gUnknown_3005008 +_08125718: .4byte 0x00003108 +_0812571C: + ldr r1, _0812574C @ =gUnknown_82528BC + subs r0, 0xD + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] +_08125726: + ldrb r1, [r0, 0x4] + movs r0, 0x10 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0812575C + ldr r0, _08125750 @ =gUnknown_203B0A0 + strh r1, [r0, 0xE] + ldrb r1, [r0, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08125754 + adds r0, r4, 0 + bl sub_8125958 + b _0812577E + .align 2, 0 +_0812574C: .4byte gUnknown_82528BC +_08125750: .4byte gUnknown_203B0A0 +_08125754: + adds r0, r4, 0 + bl sub_812580C + b _0812577E +_0812575C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x17 + bl sub_8121D0C + ldr r0, _08125784 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + bl sub_81255F0 + ldr r1, _08125788 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812578C @ =sub_81256C0 + str r1, [r0] +_0812577E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125784: .4byte gUnknown_203B0A0 +_08125788: .4byte gUnknown_3005090 +_0812578C: .4byte sub_81256C0 + thumb_func_end sub_81256F8 + + thumb_func_start sub_8125790 +sub_8125790: @ 8125790 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081257C0 @ =gUnknown_203B09C + ldr r0, [r0] + adds r0, 0xC + bl sub_8121CE4 + bl sub_810F98C + ldr r1, _081257C4 @ =gUnknown_203B0A0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0xE] + ldrb r1, [r1, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _081257C8 + adds r0, r4, 0 + bl sub_8125958 + b _081257CE + .align 2, 0 +_081257C0: .4byte gUnknown_203B09C +_081257C4: .4byte gUnknown_203B0A0 +_081257C8: + adds r0, r4, 0 + bl sub_812580C +_081257CE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8125790 + + thumb_func_start sub_81257D4 +sub_81257D4: @ 81257D4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08125800 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _08125804 @ =sub_811FB28 + str r0, [r1] + ldr r0, _08125808 @ =gUnknown_203B09C + ldr r0, [r0] + movs r1, 0 + str r1, [r0, 0x4] + adds r0, 0xC + bl sub_8121CE4 + movs r0, 0x5 + bl sub_8121D0C + pop {r0} + bx r0 + .align 2, 0 +_08125800: .4byte gUnknown_3005090 +_08125804: .4byte sub_811FB28 +_08125808: .4byte gUnknown_203B09C + thumb_func_end sub_81257D4 + + thumb_func_start sub_812580C +sub_812580C: @ 812580C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r3, _08125860 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r3, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08125864 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08125868 @ =gUnknown_203AD30 + ldrh r1, [r1] + ldrb r2, [r3, 0x9] + ldrb r3, [r3, 0xE] + bl sub_8042414 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + cmp r4, 0 + beq _0812587C + ldr r1, _0812586C @ =gUnknown_203B0C0 + movs r0, 0 + strb r0, [r1] + ldr r0, _08125870 @ =gUnknown_84169DC + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08125874 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125878 @ =sub_81255BC + str r1, [r0] + b _08125888 + .align 2, 0 +_08125860: .4byte gUnknown_203B0A0 +_08125864: .4byte gUnknown_2024284 +_08125868: .4byte gUnknown_203AD30 +_0812586C: .4byte gUnknown_203B0C0 +_08125870: .4byte gUnknown_84169DC +_08125874: .4byte gUnknown_3005090 +_08125878: .4byte sub_81255BC +_0812587C: + adds r0, r5, 0 + bl sub_8124DC0 + ldr r1, _08125890 @ =gUnknown_3005E98 + ldr r0, _08125894 @ =sub_8125898 + str r0, [r1] +_08125888: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08125890: .4byte gUnknown_3005E98 +_08125894: .4byte sub_8125898 + thumb_func_end sub_812580C + + thumb_func_start sub_8125898 +sub_8125898: @ 8125898 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r5, _08125930 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r5, r1] + movs r0, 0x64 + adds r4, r1, 0 + muls r4, r0 + ldr r0, _08125934 @ =gUnknown_2024284 + adds r4, r0 + ldrb r0, [r5, 0x9] + ldr r6, _08125938 @ =gUnknown_203AD30 + ldrh r1, [r6] + ldrb r2, [r5, 0xE] + bl sub_8125268 + ldr r1, _0812593C @ =gUnknown_203B0C0 + movs r0, 0x1 + strb r0, [r1] + ldrh r2, [r6] + ldr r3, _08125940 @ =0x0000ffff + movs r0, 0x4 + adds r1, r4, 0 + bl sub_80A2294 + movs r0, 0x1 + bl sub_80722CC + ldrh r0, [r6] + movs r1, 0x1 + bl sub_809A1D8 + movs r2, 0xE + ldrsh r1, [r5, r2] + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08125944 @ =gUnknown_2021CD0 + movs r1, 0xD + muls r1, r0 + ldr r0, _08125948 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r2, 0 + bl sub_8008D84 + ldrh r0, [r6] + bl sub_8125058 + ldr r0, _0812594C @ =gUnknown_2021D18 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08125950 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125954 @ =sub_81255BC + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08125930: .4byte gUnknown_203B0A0 +_08125934: .4byte gUnknown_2024284 +_08125938: .4byte gUnknown_203AD30 +_0812593C: .4byte gUnknown_203B0C0 +_08125940: .4byte 0x0000ffff +_08125944: .4byte gUnknown_2021CD0 +_08125948: .4byte gUnknown_8247094 +_0812594C: .4byte gUnknown_2021D18 +_08125950: .4byte gUnknown_3005090 +_08125954: .4byte sub_81255BC + thumb_func_end sub_8125898 + + thumb_func_start sub_8125958 +sub_8125958: @ 8125958 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r7, _08125990 @ =gUnknown_203B0AE + ldr r0, _08125994 @ =gUnknown_203AD30 + ldrh r5, [r0] + movs r0, 0xE + negs r0, r0 + adds r0, r7 + mov r8, r0 + ldrb r0, [r0, 0x9] + ldrb r2, [r7] + adds r1, r5, 0 + bl sub_8125268 + lsls r0, 24 + cmp r0, 0 + beq _081259A0 + ldr r0, _08125998 @ =gUnknown_203B0C0 + strb r4, [r0] + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0812599C @ =gUnknown_84169DC + b _081259F6 + .align 2, 0 +_08125990: .4byte gUnknown_203B0AE +_08125994: .4byte gUnknown_203AD30 +_08125998: .4byte gUnknown_203B0C0 +_0812599C: .4byte gUnknown_84169DC +_081259A0: + ldr r1, _08125A1C @ =gUnknown_203B0C0 + movs r0, 0x1 + strb r0, [r1] + mov r0, r8 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + adds r4, r1, 0 + muls r4, r0 + ldr r0, _08125A20 @ =gUnknown_2024284 + adds r4, r0 + ldr r3, _08125A24 @ =0x0000ffff + movs r0, 0x4 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A2294 + movs r0, 0x1 + bl sub_80722CC + adds r0, r5, 0 + movs r1, 0x1 + bl sub_809A1D8 + movs r0, 0 + ldrsh r1, [r7, r0] + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _08125A28 @ =gUnknown_2021CD0 + movs r1, 0xD + muls r1, r4 + ldr r2, _08125A2C @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + adds r0, r5, 0 + bl sub_8125058 + ldr r0, _08125A30 @ =gUnknown_2021D18 +_081259F6: + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08125A34 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125A38 @ =sub_81255BC + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08125A1C: .4byte gUnknown_203B0C0 +_08125A20: .4byte gUnknown_2024284 +_08125A24: .4byte 0x0000ffff +_08125A28: .4byte gUnknown_2021CD0 +_08125A2C: .4byte gUnknown_8247094 +_08125A30: .4byte gUnknown_2021D18 +_08125A34: .4byte gUnknown_3005090 +_08125A38: .4byte sub_81255BC + thumb_func_end sub_8125958 + + thumb_func_start sub_8125A3C +sub_8125A3C: @ 8125A3C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x18 + bl sub_8121D0C + ldr r0, _08125A6C @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x9] + bl sub_81255F0 + ldr r1, _08125A70 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125A74 @ =sub_81256C0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125A6C: .4byte gUnknown_203B0A0 +_08125A70: .4byte gUnknown_3005090 +_08125A74: .4byte sub_81256C0 + thumb_func_end sub_8125A3C + + thumb_func_start sub_8125A78 +sub_8125A78: @ 8125A78 + lsls r0, 16 + ldr r1, _08125A88 @ =0xfedf0000 + adds r0, r1 + ldr r1, _08125A8C @ =gUnknown_845A80C + lsrs r0, 15 + adds r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08125A88: .4byte 0xfedf0000 +_08125A8C: .4byte gUnknown_845A80C + thumb_func_end sub_8125A78 + + thumb_func_start sub_8125A90 +sub_8125A90: @ 8125A90 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0 + ldr r3, _08125AAC @ =gUnknown_845A80C +_08125A9A: + adds r0, r1, 0 + adds r0, 0x32 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08125AB0 + movs r0, 0x1 + b _08125ABC + .align 2, 0 +_08125AAC: .4byte gUnknown_845A80C +_08125AB0: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x6 + bls _08125A9A + movs r0, 0 +_08125ABC: + pop {r1} + bx r1 + thumb_func_end sub_8125A90 + + thumb_func_start sub_8125AC0 +sub_8125AC0: @ 8125AC0 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + movs r4, 0 +_08125ACA: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + cmp r0, r5 + bne _08125ADC + movs r0, 0x1 + b _08125AE8 +_08125ADC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08125ACA + movs r0, 0 +_08125AE8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8125AC0 + + thumb_func_start sub_8125AF0 +sub_8125AF0: @ 8125AF0 + push {r4,lr} + adds r1, r0, 0 + ldr r4, _08125B10 @ =gUnknown_2021D18 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125B10: .4byte gUnknown_2021D18 + thumb_func_end sub_8125AF0 + + thumb_func_start sub_8125B14 +sub_8125B14: @ 8125B14 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8125AF0 + ldr r1, _08125B38 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125B3C @ =sub_81255BC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125B38: .4byte gUnknown_3005090 +_08125B3C: .4byte sub_81255BC + thumb_func_end sub_8125B14 + + thumb_func_start sub_8125B40 +sub_8125B40: @ 8125B40 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r7, _08125BD0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r7, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08125BD4 @ =gUnknown_2024284 + adds r4, r1, r0 + movs r0, 0xE + adds r0, r7 + mov r8, r0 + ldr r0, _08125BD8 @ =gUnknown_203AD30 + ldrh r5, [r0] + ldr r1, _08125BDC @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_81202E0 + adds r0, r5, 0 + bl sub_8125A78 + strh r0, [r7, 0xE] + ldr r0, _08125BE0 @ =gUnknown_2021CF0 + movs r1, 0xE + ldrsh r2, [r7, r1] + movs r1, 0xD + muls r1, r2 + ldr r2, _08125BE4 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + movs r0, 0 + mov r1, r8 + strh r0, [r1, 0x2] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8120B20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08125BF4 + cmp r0, 0x2 + beq _08125BFC + ldrh r1, [r7, 0xE] + adds r0, r4, 0 + bl sub_803E89C + lsls r0, 16 + lsrs r0, 16 + ldr r3, _08125BE8 @ =0x0000ffff + cmp r0, r3 + beq _08125C0C + movs r0, 0x4 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A2294 + adds r0, r6, 0 + bl sub_8124DC0 + ldr r1, _08125BEC @ =gUnknown_3005E98 + ldr r0, _08125BF0 @ =sub_8125C38 + str r0, [r1] + b _08125C20 + .align 2, 0 +_08125BD0: .4byte gUnknown_203B0A0 +_08125BD4: .4byte gUnknown_2024284 +_08125BD8: .4byte gUnknown_203AD30 +_08125BDC: .4byte gUnknown_2021CD0 +_08125BE0: .4byte gUnknown_2021CF0 +_08125BE4: .4byte gUnknown_8247094 +_08125BE8: .4byte 0x0000ffff +_08125BEC: .4byte gUnknown_3005E98 +_08125BF0: .4byte sub_8125C38 +_08125BF4: + ldr r1, _08125BF8 @ =gUnknown_8416DC2 + b _08125BFE + .align 2, 0 +_08125BF8: .4byte gUnknown_8416DC2 +_08125BFC: + ldr r1, _08125C08 @ =gUnknown_8416F10 +_08125BFE: + adds r0, r6, 0 + bl sub_8125B14 + b _08125C20 + .align 2, 0 +_08125C08: .4byte gUnknown_8416F10 +_08125C0C: + ldr r0, _08125C2C @ =gUnknown_8416DF7 + bl sub_8125AF0 + ldr r1, _08125C30 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125C34 @ =sub_8125D88 + str r1, [r0] +_08125C20: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08125C2C: .4byte gUnknown_8416DF7 +_08125C30: .4byte gUnknown_3005090 +_08125C34: .4byte sub_8125D88 + thumb_func_end sub_8125B40 + + thumb_func_start sub_8125C38 +sub_8125C38: @ 8125C38 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8125C48 + pop {r0} + bx r0 + thumb_func_end sub_8125C38 + + thumb_func_start sub_8125C48 +sub_8125C48: @ 8125C48 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _08125CCC @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r2, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08125CD0 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r6, r2, 0 + adds r6, 0xE + ldr r0, _08125CD4 @ =gUnknown_203AD30 + ldrh r4, [r0] + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _08125C84 + adds r0, r5, 0 + movs r1, 0x4 + bl sub_80436F8 + movs r0, 0xA9 + lsls r0, 1 + cmp r4, r0 + bhi _08125C84 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_809A1D8 +_08125C84: + ldr r1, _08125CD8 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + ldr r0, _08125CDC @ =gUnknown_2021CF0 + movs r1, 0 + ldrsh r2, [r6, r1] + movs r1, 0xD + muls r1, r2 + ldr r2, _08125CE0 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r4, _08125CE4 @ =gUnknown_2021D18 + ldr r1, _08125CE8 @ =gUnknown_8416DB3 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08125CEC @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125CF0 @ =sub_8125CF4 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08125CCC: .4byte gUnknown_203B0A0 +_08125CD0: .4byte gUnknown_2024284 +_08125CD4: .4byte gUnknown_203AD30 +_08125CD8: .4byte gUnknown_2021CD0 +_08125CDC: .4byte gUnknown_2021CF0 +_08125CE0: .4byte gUnknown_8247094 +_08125CE4: .4byte gUnknown_2021D18 +_08125CE8: .4byte gUnknown_8416DB3 +_08125CEC: .4byte gUnknown_3005090 +_08125CF0: .4byte sub_8125CF4 + thumb_func_end sub_8125C48 + + thumb_func_start sub_8125CF4 +sub_8125CF4: @ 8125CF4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08125D1A + ldr r0, _08125D20 @ =0x00000101 + bl sub_8071C60 + ldr r1, _08125D24 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125D28 @ =sub_8125D2C + str r1, [r0] +_08125D1A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125D20: .4byte 0x00000101 +_08125D24: .4byte gUnknown_3005090 +_08125D28: .4byte sub_8125D2C + thumb_func_end sub_8125CF4 + + thumb_func_start sub_8125D2C +sub_8125D2C: @ 8125D2C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _08125D7E + ldr r0, _08125D68 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08125D54 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08125D7E +_08125D54: + ldr r0, _08125D6C @ =gUnknown_203B0A0 + movs r1, 0x10 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _08125D70 + adds r0, r4, 0 + bl sub_81266A0 + b _08125D7E + .align 2, 0 +_08125D68: .4byte gUnknown_30030F0 +_08125D6C: .4byte gUnknown_203B0A0 +_08125D70: + cmp r0, 0x2 + bne _08125D78 + ldr r0, _08125D84 @ =gUnknown_20370D0 + strh r2, [r0] +_08125D78: + adds r0, r5, 0 + bl sub_811FA78 +_08125D7E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08125D84: .4byte gUnknown_20370D0 + thumb_func_end sub_8125D2C + + thumb_func_start sub_8125D88 +sub_8125D88: @ 8125D88 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08125DAC + bl sub_812200C + ldr r0, _08125DB4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08125DB8 @ =sub_8125DBC + str r0, [r1] +_08125DAC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125DB4: .4byte gUnknown_3005090 +_08125DB8: .4byte sub_8125DBC + thumb_func_end sub_8125D88 + + thumb_func_start sub_8125DBC +sub_8125DBC: @ 8125DBC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08125DE2 + cmp r1, 0 + bgt _08125DDC + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08125E08 + b _08125E14 +_08125DDC: + cmp r1, 0x1 + beq _08125E0E + b _08125E14 +_08125DE2: + ldr r0, _08125DFC @ =gUnknown_8416EA4 + movs r1, 0x1 + bl sub_81202F8 + ldr r1, _08125E00 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08125E04 @ =sub_8125E1C + str r1, [r0] + b _08125E14 + .align 2, 0 +_08125DFC: .4byte gUnknown_8416EA4 +_08125E00: .4byte gUnknown_3005090 +_08125E04: .4byte sub_8125E1C +_08125E08: + movs r0, 0x5 + bl sub_80722CC +_08125E0E: + adds r0, r4, 0 + bl sub_81260D8 +_08125E14: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8125DBC + + thumb_func_start sub_8125E1C +sub_8125E1C: @ 8125E1C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08125E3C + ldr r0, _08125E44 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _08125E48 @ =sub_8125E4C + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_811FA78 +_08125E3C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125E44: .4byte gUnknown_203B09C +_08125E48: .4byte sub_8125E4C + thumb_func_end sub_8125E1C + + thumb_func_start sub_8125E4C +sub_8125E4C: @ 8125E4C + push {r4,lr} + sub sp, 0x4 + ldr r0, _08125E74 @ =gUnknown_2024284 + ldr r4, _08125E78 @ =gUnknown_203B0A0 + ldrb r1, [r4, 0x9] + ldr r2, _08125E7C @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08125E80 @ =sub_8125E84 + ldrh r4, [r4, 0xE] + str r4, [sp] + bl sub_8134738 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08125E74: .4byte gUnknown_2024284 +_08125E78: .4byte gUnknown_203B0A0 +_08125E7C: .4byte gUnknown_2024029 +_08125E80: .4byte sub_8125E84 + thumb_func_end sub_8125E4C + + thumb_func_start sub_8125E84 +sub_8125E84: @ 8125E84 + push {r4,r5,lr} + sub sp, 0xC + bl sub_8138B2C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r4, _08125ED0 @ =gUnknown_203B0A0 + movs r0, 0x10 + ldrsh r5, [r4, r0] + cmp r5, 0 + bne _08125EE8 + cmp r2, 0x4 + beq _08125EE8 + movs r1, 0x9 + ldrsb r1, [r4, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08125ED4 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r2, 0 + adds r1, 0xD + bl sub_803FBE8 + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + ldrb r0, [r4, 0x9] + ldr r1, _08125ED8 @ =gUnknown_203AD30 + ldrh r1, [r1] + ldr r3, _08125EDC @ =sub_8124EFC + bl sub_811C568 + ldr r1, _08125EE0 @ =gUnknown_3005E98 + ldr r0, _08125EE4 @ =sub_8125F4C + str r0, [r1] + strb r5, [r4, 0xB] + b _08125F02 + .align 2, 0 +_08125ED0: .4byte gUnknown_203B0A0 +_08125ED4: .4byte gUnknown_2024284 +_08125ED8: .4byte gUnknown_203AD30 +_08125EDC: .4byte sub_8124EFC +_08125EE0: .4byte gUnknown_3005E98 +_08125EE4: .4byte sub_8125F4C +_08125EE8: + movs r0, 0x7F + str r0, [sp] + ldr r0, _08125F0C @ =sub_8125F14 + str r0, [sp, 0x4] + ldr r0, _08125F10 @ =gUnknown_203B0A0 + ldr r0, [r0] + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_811EA44 +_08125F02: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08125F0C: .4byte sub_8125F14 +_08125F10: .4byte gUnknown_203B0A0 + thumb_func_end sub_8125E84 + + thumb_func_start sub_8125F14 +sub_8125F14: @ 8125F14 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + ldr r0, _08125F3C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08125F46 + bl sub_8138B2C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _08125F40 + adds r0, r4, 0 + bl sub_8125FFC + b _08125F46 + .align 2, 0 +_08125F3C: .4byte gUnknown_2037AB8 +_08125F40: + adds r0, r5, 0 + bl sub_81260D8 +_08125F46: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8125F14 + + thumb_func_start sub_8125F4C +sub_8125F4C: @ 8125F4C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8125F5C + pop {r0} + bx r0 + thumb_func_end sub_8125F4C + + thumb_func_start sub_8125F5C +sub_8125F5C: @ 8125F5C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08125FE4 @ =gUnknown_203B0A0 + mov r9, r0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + adds r6, r1, 0 + muls r6, r0 + ldr r0, _08125FE8 @ =gUnknown_2024284 + adds r6, r0 + bl sub_8138B2C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r1, r5, 0 + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _08125FEC @ =gUnknown_203AD30 + ldrh r2, [r0] + movs r0, 0x4 + adds r1, r6, 0 + adds r3, r4, 0 + bl sub_80A2294 + ldr r1, _08125FF0 @ =gUnknown_2021CD0 + adds r0, r6, 0 + bl sub_81202E0 + ldr r0, _08125FF4 @ =gUnknown_2021CF0 + movs r1, 0xD + muls r1, r4 + ldr r2, _08125FF8 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8041064 + mov r0, r9 + ldrh r1, [r0, 0xE] + adds r0, r6, 0 + adds r2, r5, 0 + bl sub_803E964 + mov r0, r8 + bl sub_8125C48 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08125FE4: .4byte gUnknown_203B0A0 +_08125FE8: .4byte gUnknown_2024284 +_08125FEC: .4byte gUnknown_203AD30 +_08125FF0: .4byte gUnknown_2021CD0 +_08125FF4: .4byte gUnknown_2021CF0 +_08125FF8: .4byte gUnknown_8247094 + thumb_func_end sub_8125F5C + + thumb_func_start sub_8125FFC +sub_8125FFC: @ 8125FFC + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _0812605C @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + adds r5, r1, 0 + muls r5, r0 + ldr r0, _08126060 @ =gUnknown_2024284 + adds r5, r0 + bl sub_8138B2C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r1, 0xD + adds r0, r5, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r1, _08126064 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + ldr r0, _08126068 @ =gUnknown_2021CF0 + movs r1, 0xD + muls r1, r4 + ldr r2, _0812606C @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r0, _08126070 @ =gUnknown_8416EC6 + bl sub_8125AF0 + ldr r1, _08126074 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126078 @ =sub_812607C + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812605C: .4byte gUnknown_203B0A0 +_08126060: .4byte gUnknown_2024284 +_08126064: .4byte gUnknown_2021CD0 +_08126068: .4byte gUnknown_2021CF0 +_0812606C: .4byte gUnknown_8247094 +_08126070: .4byte gUnknown_8416EC6 +_08126074: .4byte gUnknown_3005090 +_08126078: .4byte sub_812607C + thumb_func_end sub_8125FFC + + thumb_func_start sub_812607C +sub_812607C: @ 812607C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081260C8 + ldr r5, _081260D0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r5, r1] + movs r0, 0x64 + adds r4, r1, 0 + muls r4, r0 + ldr r0, _081260D4 @ =gUnknown_2024284 + adds r4, r0 + bl sub_8138B2C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8041064 + ldrh r5, [r5, 0xE] + bl sub_8138B2C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_803E964 + adds r0, r6, 0 + bl sub_8125C48 +_081260C8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081260D0: .4byte gUnknown_203B0A0 +_081260D4: .4byte gUnknown_2024284 + thumb_func_end sub_812607C + + thumb_func_start sub_81260D8 +sub_81260D8: @ 81260D8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08126120 @ =gUnknown_2021CF0 + ldr r1, _08126124 @ =gUnknown_203B0A0 + movs r3, 0xE + ldrsh r2, [r1, r3] + movs r1, 0xD + muls r1, r2 + ldr r2, _08126128 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r4, _0812612C @ =gUnknown_2021D18 + ldr r1, _08126130 @ =gUnknown_8416E6B + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08126134 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126138 @ =sub_812613C + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08126120: .4byte gUnknown_2021CF0 +_08126124: .4byte gUnknown_203B0A0 +_08126128: .4byte gUnknown_8247094 +_0812612C: .4byte gUnknown_2021D18 +_08126130: .4byte gUnknown_8416E6B +_08126134: .4byte gUnknown_3005090 +_08126138: .4byte sub_812613C + thumb_func_end sub_81260D8 + + thumb_func_start sub_812613C +sub_812613C: @ 812613C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08126160 + bl sub_812200C + ldr r0, _08126168 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812616C @ =sub_8126170 + str r0, [r1] +_08126160: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126168: .4byte gUnknown_3005090 +_0812616C: .4byte sub_8126170 + thumb_func_end sub_812613C + + thumb_func_start sub_8126170 +sub_8126170: @ 8126170 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r7, _081261A0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r7, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _081261A4 @ =gUnknown_2024284 + adds r4, r1, r0 + bl sub_81100C8 + lsls r0, 24 + asrs r5, r0, 24 + cmp r5, 0 + beq _081261AE + cmp r5, 0 + bgt _081261A8 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _08126234 + b _0812626A + .align 2, 0 +_081261A0: .4byte gUnknown_203B0A0 +_081261A4: .4byte gUnknown_2024284 +_081261A8: + cmp r5, 0x1 + beq _0812623A + b _0812626A +_081261AE: + ldr r1, _081261F4 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_81202E0 + ldr r0, _081261F8 @ =gUnknown_2021CF0 + movs r1, 0xE + ldrsh r2, [r7, r1] + movs r1, 0xD + muls r1, r2 + ldr r2, _081261FC @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r4, _08126200 @ =gUnknown_2021D18 + ldr r1, _08126204 @ =gUnknown_8416E84 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r3, 0x10 + ldrsh r0, [r7, r3] + cmp r0, 0x1 + bne _08126210 + ldr r0, _08126208 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812620C @ =sub_812628C + str r0, [r1] + b _0812626A + .align 2, 0 +_081261F4: .4byte gUnknown_2021CD0 +_081261F8: .4byte gUnknown_2021CF0 +_081261FC: .4byte gUnknown_8247094 +_08126200: .4byte gUnknown_2021D18 +_08126204: .4byte gUnknown_8416E84 +_08126208: .4byte gUnknown_3005090 +_0812620C: .4byte sub_812628C +_08126210: + cmp r0, 0x2 + bne _08126218 + ldr r0, _08126228 @ =gUnknown_20370D0 + strh r5, [r0] +_08126218: + ldr r0, _0812622C @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _08126230 @ =sub_81255BC + str r0, [r1] + b _0812626A + .align 2, 0 +_08126228: .4byte gUnknown_20370D0 +_0812622C: .4byte gUnknown_3005090 +_08126230: .4byte sub_81255BC +_08126234: + movs r0, 0x5 + bl sub_80722CC +_0812623A: + ldr r1, _08126270 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_81202E0 + ldr r0, _08126274 @ =gUnknown_2021CF0 + ldr r1, _08126278 @ =gUnknown_203B0A0 + movs r3, 0xE + ldrsh r2, [r1, r3] + movs r1, 0xD + muls r1, r2 + ldr r2, _0812627C @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r0, _08126280 @ =gUnknown_8416DF7 + bl sub_8125AF0 + ldr r1, _08126284 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126288 @ =sub_8125D88 + str r1, [r0] +_0812626A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126270: .4byte gUnknown_2021CD0 +_08126274: .4byte gUnknown_2021CF0 +_08126278: .4byte gUnknown_203B0A0 +_0812627C: .4byte gUnknown_8247094 +_08126280: .4byte gUnknown_8416DF7 +_08126284: .4byte gUnknown_3005090 +_08126288: .4byte sub_8125D88 + thumb_func_end sub_8126170 + + thumb_func_start sub_812628C +sub_812628C: @ 812628C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081262A4 + adds r0, r4, 0 + bl sub_81266A0 +_081262A4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812628C + + thumb_func_start sub_81262AC +sub_81262AC: @ 81262AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r7, _081262E8 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r7, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _081262EC @ =gUnknown_2024284 + adds r4, r1, r0 + ldr r0, _081262F0 @ =gUnknown_203AD30 + ldrh r5, [r0] + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x64 + beq _081262F4 + ldrb r2, [r7, 0x9] + adds r0, r4, 0 + adds r1, r5, 0 + movs r3, 0 + bl sub_8042414 + lsls r0, 24 + lsrs r4, r0, 24 + b _081262F6 + .align 2, 0 +_081262E8: .4byte gUnknown_203B0A0 +_081262EC: .4byte gUnknown_2024284 +_081262F0: .4byte gUnknown_203AD30 +_081262F4: + movs r4, 0x1 +_081262F6: + movs r0, 0x5 + bl sub_80722CC + cmp r4, 0 + beq _08126330 + ldr r1, _08126324 @ =gUnknown_203B0C0 + movs r0, 0 + strb r0, [r1] + ldr r0, _08126328 @ =gUnknown_84169DC + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _0812632C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + mov r1, r8 + str r1, [r0] + b _0812633C + .align 2, 0 +_08126324: .4byte gUnknown_203B0C0 +_08126328: .4byte gUnknown_84169DC +_0812632C: .4byte gUnknown_3005090 +_08126330: + adds r0, r6, 0 + bl sub_8124DC0 + ldr r1, _08126348 @ =gUnknown_3005E98 + ldr r0, _0812634C @ =sub_8126350 + str r0, [r1] +_0812633C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126348: .4byte gUnknown_3005E98 +_0812634C: .4byte sub_8126350 + thumb_func_end sub_81262AC + + thumb_func_start sub_8126350 +sub_8126350: @ 8126350 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r6, _08126410 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r6, r1] + movs r0, 0x64 + adds r4, r1, 0 + muls r4, r0 + ldr r0, _08126414 @ =gUnknown_2024284 + adds r4, r0 + ldr r0, _08126418 @ =gUnknown_203B09C + ldr r7, [r0] + movs r2, 0x86 + lsls r2, 2 + adds r1, r7, r2 + adds r0, r4, 0 + bl sub_811D130 + ldrb r0, [r6, 0x9] + ldr r5, _0812641C @ =gUnknown_203AD30 + ldrh r1, [r5] + movs r2, 0 + bl sub_8125268 + movs r0, 0x89 + lsls r0, 2 + adds r1, r7, r0 + adds r0, r4, 0 + bl sub_811D130 + ldr r1, _08126420 @ =gUnknown_203B0C0 + movs r0, 0x1 + strb r0, [r1] + ldrh r2, [r5] + ldr r3, _08126424 @ =0x0000ffff + movs r0, 0x4 + adds r1, r4, 0 + bl sub_80A2294 + movs r0, 0 + bl sub_8071BC4 + ldrb r0, [r6, 0x9] + adds r1, r4, 0 + bl sub_8126440 + ldrh r0, [r5] + movs r1, 0x1 + bl sub_809A1D8 + ldr r1, _08126428 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_81202E0 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0812642C @ =gUnknown_2021CF0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _08126430 @ =gUnknown_2021D18 + ldr r1, _08126434 @ =gUnknown_8417017 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08126438 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _0812643C @ =sub_81264C8 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126410: .4byte gUnknown_203B0A0 +_08126414: .4byte gUnknown_2024284 +_08126418: .4byte gUnknown_203B09C +_0812641C: .4byte gUnknown_203AD30 +_08126420: .4byte gUnknown_203B0C0 +_08126424: .4byte 0x0000ffff +_08126428: .4byte gUnknown_2021CD0 +_0812642C: .4byte gUnknown_2021CF0 +_08126430: .4byte gUnknown_2021D18 +_08126434: .4byte gUnknown_8417017 +_08126438: .4byte gUnknown_3005090 +_0812643C: .4byte sub_81264C8 + thumb_func_end sub_8126350 + + thumb_func_start sub_8126440 +sub_8126440: @ 8126440 + push {r4-r7,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + ldr r6, _081264C0 @ =gUnknown_203B0B4 + lsls r4, r7, 4 + ldr r1, [r6] + adds r1, r4 + adds r0, r5, 0 + bl sub_8122904 + ldr r2, _081264C4 @ =gUnknown_202063C + ldr r0, [r6] + adds r3, r4, r0 + ldrb r1, [r3, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _0812647C + adds r0, r5, 0 + adds r1, r3, 0 + movs r2, 0x1 + bl sub_8121790 +_0812647C: + ldr r1, [r6] + adds r1, r4 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_812199C + ldr r1, [r6] + adds r1, r4 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8121A3C + ldr r1, [r6] + adds r1, r4 + adds r0, r5, 0 + bl sub_8121AF0 + ldr r0, [r6] + adds r0, r4, r0 + ldrb r0, [r0, 0x9] + adds r1, r5, 0 + bl sub_8122358 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_811F818 + movs r0, 0 + bl sub_80F67A4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081264C0: .4byte gUnknown_203B0B4 +_081264C4: .4byte gUnknown_202063C + thumb_func_end sub_8126440 + + thumb_func_start sub_81264C8 +sub_81264C8: @ 81264C8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + bl sub_8071C10 + lsls r0, 24 + cmp r0, 0 + beq _08126514 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08126514 + ldr r0, _0812651C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081264FA + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08126514 +_081264FA: + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_8126570 + ldr r0, _08126520 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08126524 @ =sub_8126528 + str r0, [r1] +_08126514: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812651C: .4byte gUnknown_30030F0 +_08126520: .4byte gUnknown_3005090 +_08126524: .4byte sub_8126528 + thumb_func_end sub_81264C8 + + thumb_func_start sub_8126528 +sub_8126528: @ 8126528 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08126564 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08126542 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812655C +_08126542: + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_81265BC + ldr r0, _08126568 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812656C @ =sub_81265F8 + str r0, [r1] +_0812655C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126564: .4byte gUnknown_30030F0 +_08126568: .4byte gUnknown_3005090 +_0812656C: .4byte sub_81265F8 + thumb_func_end sub_8126528 + + thumb_func_start sub_8126570 +sub_8126570: @ 8126570 + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _081265B8 @ =gUnknown_203B09C + ldr r5, [r0] + movs r0, 0x86 + lsls r0, 2 + adds r4, r5, r0 + bl sub_8122034 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x18] + ldrh r0, [r4, 0x18] + movs r1, 0x89 + lsls r1, 2 + adds r2, r5, r1 + movs r1, 0x2 + str r1, [sp] + movs r1, 0x3 + str r1, [sp, 0x4] + adds r1, r4, 0 + movs r3, 0x1 + bl sub_811E7F0 + ldrb r0, [r4, 0x18] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 + bl sub_80F67A4 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081265B8: .4byte gUnknown_203B09C + thumb_func_end sub_8126570 + + thumb_func_start sub_81265BC +sub_81265BC: @ 81265BC + push {r4,lr} + sub sp, 0x4 + ldr r0, _081265F4 @ =gUnknown_203B09C + ldr r1, [r0] + movs r0, 0x86 + lsls r0, 2 + adds r4, r1, r0 + ldrh r0, [r4, 0x18] + movs r2, 0x89 + lsls r2, 2 + adds r1, r2 + movs r2, 0x3 + str r2, [sp] + movs r2, 0x1 + movs r3, 0x2 + bl sub_811E93C + ldrb r0, [r4, 0x18] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x2 + bl sub_80F67A4 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081265F4: .4byte gUnknown_203B09C + thumb_func_end sub_81265BC + + thumb_func_start sub_81265F8 +sub_81265F8: @ 81265F8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + bl sub_8071C10 + lsls r0, 24 + cmp r0, 0 + beq _0812669A + ldr r0, _08126650 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r6, 0x1 + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _08126620 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812669A +_08126620: + bl sub_8122064 + ldr r4, _08126654 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r4, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08126658 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x1 + bl sub_803EA88 + lsls r0, 16 + lsrs r1, r0, 16 + strh r6, [r4, 0x10] + ldr r0, _0812665C @ =0x0000fffe + cmp r1, r0 + beq _0812667C + cmp r1, r0 + bgt _08126660 + cmp r1, 0 + beq _0812666C + b _08126694 + .align 2, 0 +_08126650: .4byte gUnknown_30030F0 +_08126654: .4byte gUnknown_203B0A0 +_08126658: .4byte gUnknown_2024284 +_0812665C: .4byte 0x0000fffe +_08126660: + ldr r0, _08126668 @ =0x0000ffff + cmp r1, r0 + beq _08126674 + b _08126694 + .align 2, 0 +_08126668: .4byte 0x0000ffff +_0812666C: + adds r0, r5, 0 + bl sub_8126704 + b _0812669A +_08126674: + adds r0, r5, 0 + bl sub_8126770 + b _0812669A +_0812667C: + ldr r0, _0812668C @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08126690 @ =sub_81266A0 + str r0, [r1] + b _0812669A + .align 2, 0 +_0812668C: .4byte gUnknown_3005090 +_08126690: .4byte sub_81266A0 +_08126694: + adds r0, r5, 0 + bl sub_8126804 +_0812669A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81265F8 + + thumb_func_start sub_81266A0 +sub_81266A0: @ 81266A0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081266D0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081266D4 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + bl sub_803EA88 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _081266D8 @ =0x0000fffe + cmp r1, r0 + beq _081266FE + cmp r1, r0 + bgt _081266DC + cmp r1, 0 + beq _081266E8 + b _081266F8 + .align 2, 0 +_081266D0: .4byte gUnknown_203B0A0 +_081266D4: .4byte gUnknown_2024284 +_081266D8: .4byte 0x0000fffe +_081266DC: + ldr r0, _081266E4 @ =0x0000ffff + cmp r1, r0 + beq _081266F0 + b _081266F8 + .align 2, 0 +_081266E4: .4byte 0x0000ffff +_081266E8: + adds r0, r4, 0 + bl sub_8126704 + b _081266FE +_081266F0: + adds r0, r4, 0 + bl sub_8126770 + b _081266FE +_081266F8: + adds r0, r4, 0 + bl sub_8126804 +_081266FE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81266A0 + + thumb_func_start sub_8126704 +sub_8126704: @ 8126704 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _08126748 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r6, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0812674C @ =gUnknown_2024284 + adds r7, r1, r0 + adds r0, r7, 0 + movs r1, 0 + movs r2, 0 + bl sub_8042EC4 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08126754 + bl sub_811F070 + ldr r0, _08126750 @ =gUnknown_300537C + ldr r1, [r6] + str r1, [r0] + ldrb r3, [r6, 0x9] + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80CDDA8 + adds r0, r5, 0 + bl sub_8077508 + b _08126762 + .align 2, 0 +_08126748: .4byte gUnknown_203B0A0 +_0812674C: .4byte gUnknown_2024284 +_08126750: .4byte gUnknown_300537C +_08126754: + ldr r0, _08126768 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _0812676C @ =sub_81255BC + str r0, [r1] +_08126762: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126768: .4byte gUnknown_3005090 +_0812676C: .4byte sub_81255BC + thumb_func_end sub_8126704 + + thumb_func_start sub_8126770 +sub_8126770: @ 8126770 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _081267DC @ =gUnknown_203B0A0 + mov r8, r0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _081267E0 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _081267E4 @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r0, _081267E8 @ =gUnknown_2021CF0 + ldr r6, _081267EC @ =gUnknown_2024022 + ldrh r2, [r6] + movs r1, 0xD + muls r1, r2 + ldr r2, _081267F0 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r4, _081267F4 @ =gUnknown_2021D18 + ldr r1, _081267F8 @ =gUnknown_8416DF7 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldrh r0, [r6] + mov r1, r8 + strh r0, [r1, 0xE] + ldr r1, _081267FC @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126800 @ =sub_8125D88 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081267DC: .4byte gUnknown_203B0A0 +_081267E0: .4byte gUnknown_2024284 +_081267E4: .4byte gUnknown_2021CD0 +_081267E8: .4byte gUnknown_2021CF0 +_081267EC: .4byte gUnknown_2024022 +_081267F0: .4byte gUnknown_8247094 +_081267F4: .4byte gUnknown_2021D18 +_081267F8: .4byte gUnknown_8416DF7 +_081267FC: .4byte gUnknown_3005090 +_08126800: .4byte sub_8125D88 + thumb_func_end sub_8126770 + + thumb_func_start sub_8126804 +sub_8126804: @ 8126804 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r6, r0, 0 + adds r5, r1, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _08126870 @ =gUnknown_203B0A0 + mov r8, r0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08126874 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08126878 @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r0, _0812687C @ =gUnknown_2021CF0 + movs r1, 0xD + muls r1, r5 + ldr r2, _08126880 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + ldr r4, _08126884 @ =gUnknown_2021D18 + ldr r1, _08126888 @ =gUnknown_8416DB3 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + mov r0, r8 + strh r5, [r0, 0xE] + ldr r1, _0812688C @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126890 @ =sub_8125CF4 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08126870: .4byte gUnknown_203B0A0 +_08126874: .4byte gUnknown_2024284 +_08126878: .4byte gUnknown_2021CD0 +_0812687C: .4byte gUnknown_2021CF0 +_08126880: .4byte gUnknown_8247094 +_08126884: .4byte gUnknown_2021D18 +_08126888: .4byte gUnknown_8416DB3 +_0812688C: .4byte gUnknown_3005090 +_08126890: .4byte sub_8125CF4 + thumb_func_end sub_8126804 + + thumb_func_start sub_8126894 +sub_8126894: @ 8126894 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081268C8 @ =gUnknown_203B09C + ldr r2, [r1] + movs r3, 0x86 + lsls r3, 2 + adds r1, r2, r3 + movs r3, 0 + strh r3, [r1] + ldr r4, _081268CC @ =0x0000021a + adds r1, r2, r4 + strh r3, [r1] + ldr r1, _081268D0 @ =gUnknown_203B0A0 + ldrb r1, [r1, 0x9] + lsls r1, 24 + asrs r1, 24 + movs r3, 0x87 + lsls r3, 2 + adds r2, r3 + strh r1, [r2] + bl sub_81268D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081268C8: .4byte gUnknown_203B09C +_081268CC: .4byte 0x0000021a +_081268D0: .4byte gUnknown_203B0A0 + thumb_func_end sub_8126894 + + thumb_func_start sub_81268D4 +sub_81268D4: @ 81268D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + mov r9, r4 + ldr r6, _08126930 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r6, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08126934 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08126920 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldrb r0, [r6, 0x9] + ldr r1, _08126938 @ =gUnknown_203AD30 + ldrh r1, [r1] + movs r2, 0 + bl sub_8125268 + lsls r0, 24 + cmp r0, 0 + beq _08126944 +_08126920: + ldr r0, _0812693C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08126940 @ =sub_8126A18 + str r0, [r1] + b _081269EE + .align 2, 0 +_08126930: .4byte gUnknown_203B0A0 +_08126934: .4byte gUnknown_2024284 +_08126938: .4byte gUnknown_203AD30 +_0812693C: .4byte gUnknown_3005090 +_08126940: .4byte sub_8126A18 +_08126944: + movs r0, 0x1 + bl sub_80722CC + ldr r7, _08126A00 @ =gUnknown_203B09C + ldr r0, [r7] + ldr r1, _08126A04 @ =0x0000021a + mov r10, r1 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _08126960 + ldr r0, _08126A08 @ =gUnknown_203B0D0 + str r5, [r0] +_08126960: + ldr r4, _08126A0C @ =gUnknown_203B0B4 + movs r0, 0x9 + ldrsb r0, [r6, r0] + lsls r0, 4 + ldr r1, [r4] + adds r1, r0 + adds r0, r5, 0 + bl sub_8122904 + ldr r2, _08126A10 @ =gUnknown_202063C + movs r0, 0x9 + ldrsb r0, [r6, r0] + ldr r1, [r4] + lsls r0, 4 + adds r3, r0, r1 + ldrb r1, [r3, 0xC] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _0812699C + adds r0, r5, 0 + adds r1, r3, 0 + movs r2, 0x1 + bl sub_8121790 +_0812699C: + ldr r0, [r7] + movs r1, 0x87 + lsls r1, 2 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_811F818 + ldrb r0, [r6, 0x9] + movs r1, 0x1 + bl sub_811F818 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r3, r0, 0 + mov r2, r8 + subs r3, r2 + lsls r3, 16 + asrs r3, 16 + ldrb r1, [r6, 0x9] + ldr r0, _08126A14 @ =sub_8126AFC + str r0, [sp] + mov r0, r9 + movs r2, 0x1 + bl sub_8120760 + mov r0, r9 + movs r1, 0 + mov r2, r8 + bl sub_81207F0 + ldr r0, [r7] + movs r2, 0x86 + lsls r2, 2 + adds r1, r0, r2 + movs r2, 0x1 + strh r2, [r1] + add r0, r10 + strh r2, [r0] +_081269EE: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126A00: .4byte gUnknown_203B09C +_08126A04: .4byte 0x0000021a +_08126A08: .4byte gUnknown_203B0D0 +_08126A0C: .4byte gUnknown_203B0B4 +_08126A10: .4byte gUnknown_202063C +_08126A14: .4byte sub_8126AFC + thumb_func_end sub_81268D4 + + thumb_func_start sub_8126A18 +sub_8126A18: @ 8126A18 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08126AF6 + ldr r5, _08126A80 @ =gUnknown_203B09C + ldr r2, [r5] + movs r0, 0x86 + lsls r0, 2 + adds r1, r2, r0 + movs r3, 0 + ldrsh r0, [r1, r3] + ldr r3, _08126A84 @ =gUnknown_203B0A0 + cmp r0, 0x1 + bne _08126A4E + movs r0, 0 + strh r0, [r1] + movs r1, 0x9 + ldrsb r1, [r3, r1] + movs r6, 0x87 + lsls r6, 2 + adds r0, r2, r6 + strh r1, [r0] +_08126A4E: + adds r1, r3, 0 + ldrb r0, [r1, 0x9] + adds r0, 0x1 + strb r0, [r1, 0x9] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x6 + bne _08126AF0 + ldr r0, [r5] + ldr r1, _08126A88 @ =0x0000021a + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + cmp r1, 0 + bne _08126A94 + ldr r0, _08126A8C @ =gUnknown_203B0C0 + strb r1, [r0] + ldr r0, _08126A90 @ =gUnknown_84169DC + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + b _08126ABE + .align 2, 0 +_08126A80: .4byte gUnknown_203B09C +_08126A84: .4byte gUnknown_203B0A0 +_08126A88: .4byte 0x0000021a +_08126A8C: .4byte gUnknown_203B0C0 +_08126A90: .4byte gUnknown_84169DC +_08126A94: + ldr r1, _08126AD4 @ =gUnknown_203B0C0 + movs r0, 0x1 + strb r0, [r1] + ldrb r1, [r3, 0x8] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _08126AB4 + ldr r0, _08126AD8 @ =gUnknown_203B0D0 + ldr r1, [r0] + ldr r0, _08126ADC @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _08126AE0 @ =0x0000ffff + movs r0, 0x4 + bl sub_80A2294 +_08126AB4: + ldr r0, _08126ADC @ =gUnknown_203AD30 + ldrh r0, [r0] + movs r1, 0x1 + bl sub_809A1D8 +_08126ABE: + ldr r1, _08126AE4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126AE8 @ =sub_81255BC + str r1, [r0] + ldr r1, _08126AEC @ =gUnknown_203B0A0 + movs r0, 0 + strb r0, [r1, 0x9] + b _08126AF6 + .align 2, 0 +_08126AD4: .4byte gUnknown_203B0C0 +_08126AD8: .4byte gUnknown_203B0D0 +_08126ADC: .4byte gUnknown_203AD30 +_08126AE0: .4byte 0x0000ffff +_08126AE4: .4byte gUnknown_3005090 +_08126AE8: .4byte sub_81255BC +_08126AEC: .4byte gUnknown_203B0A0 +_08126AF0: + adds r0, r4, 0 + bl sub_81268D4 +_08126AF6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8126A18 + + thumb_func_start sub_8126AFC +sub_8126AFC: @ 8126AFC + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08126B44 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08126B48 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08126B4C @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r4, _08126B50 @ =gUnknown_2021D18 + ldr r1, _08126B54 @ =gUnknown_8416F27 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r4, 0 + movs r1, 0 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08126B58 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126B5C @ =sub_8126A18 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08126B44: .4byte gUnknown_203B0A0 +_08126B48: .4byte gUnknown_2024284 +_08126B4C: .4byte gUnknown_2021CD0 +_08126B50: .4byte gUnknown_2021D18 +_08126B54: .4byte gUnknown_8416F27 +_08126B58: .4byte gUnknown_3005090 +_08126B5C: .4byte sub_8126A18 + thumb_func_end sub_8126AFC + + thumb_func_start sub_8126B60 +sub_8126B60: @ 8126B60 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _08126BB0 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r2, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08126BB4 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08126BB8 @ =gUnknown_203AD30 + ldrh r1, [r1] + ldrb r2, [r2, 0x9] + movs r3, 0 + bl sub_8042414 + lsls r0, 24 + cmp r0, 0 + beq _08126BC8 + ldr r1, _08126BBC @ =gUnknown_203B0C0 + movs r0, 0 + strb r0, [r1] + ldr r0, _08126BC0 @ =gUnknown_84169DC + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _08126BC4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + str r5, [r0] + b _08126BCE + .align 2, 0 +_08126BB0: .4byte gUnknown_203B0A0 +_08126BB4: .4byte gUnknown_2024284 +_08126BB8: .4byte gUnknown_203AD30 +_08126BBC: .4byte gUnknown_203B0C0 +_08126BC0: .4byte gUnknown_84169DC +_08126BC4: .4byte gUnknown_3005090 +_08126BC8: + adds r0, r4, 0 + bl sub_8124DC0 +_08126BCE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8126B60 + + thumb_func_start sub_8126BD4 +sub_8126BD4: @ 8126BD4 + push {r4,r5,lr} + ldr r1, _08126C10 @ =gUnknown_300537C + ldr r4, _08126C14 @ =gUnknown_203B0A0 + ldr r0, [r4] + str r0, [r1] + ldrb r0, [r4, 0x9] + ldr r5, _08126C18 @ =gUnknown_203AD30 + ldrh r1, [r5] + movs r2, 0 + bl sub_8125268 + movs r1, 0x9 + ldrsb r1, [r4, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08126C1C @ =gUnknown_2024284 + adds r1, r0 + ldrh r2, [r5] + ldr r3, _08126C20 @ =0x0000ffff + movs r0, 0x4 + bl sub_80A2294 + ldrh r0, [r5] + movs r1, 0x1 + bl sub_809A1D8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08126C10: .4byte gUnknown_300537C +_08126C14: .4byte gUnknown_203B0A0 +_08126C18: .4byte gUnknown_203AD30 +_08126C1C: .4byte gUnknown_2024284 +_08126C20: .4byte 0x0000ffff + thumb_func_end sub_8126BD4 + + thumb_func_start sub_8126C24 +sub_8126C24: @ 8126C24 + push {lr} + bl sub_806E25C + cmp r0, 0 + bne _08126C60 + ldr r0, _08126C54 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08126C58 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08126C5C @ =gUnknown_203AD30 + ldrh r2, [r1] + movs r1, 0x2 + bl sub_8042EC4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x97 + bls _08126C60 + movs r0, 0 + b _08126C62 + .align 2, 0 +_08126C54: .4byte gUnknown_203B0A0 +_08126C58: .4byte gUnknown_2024284 +_08126C5C: .4byte gUnknown_203AD30 +_08126C60: + movs r0, 0x1 +_08126C62: + pop {r1} + bx r1 + thumb_func_end sub_8126C24 + + thumb_func_start sub_8126C68 +sub_8126C68: @ 8126C68 + push {r4,r5,lr} + lsls r0, 16 + lsrs r1, r0, 16 + adds r2, r1, 0 + subs r2, 0xD + lsls r0, r2, 16 + lsrs r0, 16 + cmp r0, 0xA5 + bls _08126C7C + b _08126DBC +_08126C7C: + cmp r1, 0xAF + bne _08126C94 + ldr r0, _08126C8C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08126C90 @ =0x00003108 + adds r4, r0, r1 + b _08126C9C + .align 2, 0 +_08126C8C: .4byte gUnknown_3005008 +_08126C90: .4byte 0x00003108 +_08126C94: + ldr r1, _08126CC4 @ =gUnknown_82528BC + lsls r0, r2, 2 + adds r0, r1 + ldr r4, [r0] +_08126C9C: + ldrb r1, [r4] + movs r5, 0x3F + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _08126CBE + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08126CBE + ldrb r0, [r4, 0x2] + cmp r0, 0 + bne _08126CBE + ldrb r3, [r4, 0x3] + movs r0, 0x80 + ands r0, r3 + cmp r0, 0 + beq _08126CC8 +_08126CBE: + movs r0, 0 + b _08126DC2 + .align 2, 0 +_08126CC4: .4byte gUnknown_82528BC +_08126CC8: + movs r2, 0x40 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08126CD6 + movs r0, 0xA + b _08126DC2 +_08126CD6: + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _08126CE2 + movs r0, 0x1 + b _08126DC2 +_08126CE2: + adds r2, r5, 0 + ands r2, r3 + cmp r2, 0 + bne _08126CF0 + lsrs r0, r1, 7 + cmp r0, 0 + beq _08126D32 +_08126CF0: + cmp r2, 0x20 + bne _08126CF8 + movs r0, 0x4 + b _08126DC2 +_08126CF8: + cmp r2, 0x10 + bne _08126D00 + movs r0, 0x3 + b _08126DC2 +_08126D00: + cmp r2, 0x8 + bne _08126D08 + movs r0, 0x5 + b _08126DC2 +_08126D08: + cmp r2, 0x4 + bne _08126D10 + movs r0, 0x6 + b _08126DC2 +_08126D10: + cmp r2, 0x2 + bne _08126D18 + movs r0, 0x7 + b _08126DC2 +_08126D18: + cmp r2, 0x1 + bne _08126D20 + movs r0, 0x8 + b _08126DC2 +_08126D20: + lsrs r0, r1, 7 + cmp r0, 0 + beq _08126D2E + cmp r2, 0 + bne _08126D2E + movs r0, 0x9 + b _08126DC2 +_08126D2E: + movs r0, 0xB + b _08126DC2 +_08126D32: + ldrb r1, [r4, 0x4] + movs r0, 0x44 + ands r0, r1 + adds r2, r1, 0 + cmp r0, 0 + beq _08126D42 + movs r0, 0x2 + b _08126DC2 +_08126D42: + movs r5, 0x2 + adds r0, r5, 0 + ands r0, r2 + cmp r0, 0 + beq _08126D50 + movs r0, 0xC + b _08126DC2 +_08126D50: + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r2 + cmp r0, 0 + beq _08126D5E + movs r0, 0xD + b _08126DC2 +_08126D5E: + ldrb r1, [r4, 0x5] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08126D6C + movs r0, 0xE + b _08126DC2 +_08126D6C: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08126D78 + movs r0, 0xF + b _08126DC2 +_08126D78: + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08126D84 + movs r0, 0x10 + b _08126DC2 +_08126D84: + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08126D90 + movs r0, 0x11 + b _08126DC2 +_08126D90: + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _08126D9C + movs r0, 0x12 + b _08126DC2 +_08126D9C: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _08126DA8 + movs r0, 0x13 + b _08126DC2 +_08126DA8: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08126DB4 + movs r0, 0x14 + b _08126DC2 +_08126DB4: + movs r0, 0x18 + ands r0, r2 + cmp r0, 0 + bne _08126DC0 +_08126DBC: + movs r0, 0x16 + b _08126DC2 +_08126DC0: + movs r0, 0x15 +_08126DC2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8126C68 + + thumb_func_start sub_8126DC8 +sub_8126DC8: @ 8126DC8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08126E4C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08126E98 + ldr r7, _08126E50 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r7, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08126E54 @ =gUnknown_2024284 + adds r5, r1, r0 + movs r0, 0xE + adds r0, r7 + mov r8, r0 + ldr r1, _08126E58 @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + ldr r4, _08126E5C @ =gUnknown_20370C2 + ldrb r0, [r4] + bl sub_8120BA8 + strh r0, [r7, 0xE] + ldr r0, _08126E60 @ =gUnknown_2021CF0 + movs r1, 0xE + ldrsh r2, [r7, r1] + movs r1, 0xD + muls r1, r2 + ldr r2, _08126E64 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + movs r0, 0x2 + mov r1, r8 + strh r0, [r1, 0x2] + ldrb r2, [r4] + adds r0, r5, 0 + movs r1, 0 + bl sub_8120B20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08126E6C + cmp r0, 0x2 + beq _08126E74 + ldrh r1, [r7, 0xE] + adds r0, r5, 0 + bl sub_803E89C + lsls r0, 16 + ldr r1, _08126E68 @ =0xffff0000 + cmp r0, r1 + beq _08126E84 + adds r0, r6, 0 + bl sub_8125C48 + b _08126E98 + .align 2, 0 +_08126E4C: .4byte gUnknown_2037AB8 +_08126E50: .4byte gUnknown_203B0A0 +_08126E54: .4byte gUnknown_2024284 +_08126E58: .4byte gUnknown_2021CD0 +_08126E5C: .4byte gUnknown_20370C2 +_08126E60: .4byte gUnknown_2021CF0 +_08126E64: .4byte gUnknown_8247094 +_08126E68: .4byte 0xffff0000 +_08126E6C: + ldr r1, _08126E70 @ =gUnknown_8416DC2 + b _08126E76 + .align 2, 0 +_08126E70: .4byte gUnknown_8416DC2 +_08126E74: + ldr r1, _08126E80 @ =gUnknown_8416F10 +_08126E76: + adds r0, r6, 0 + bl sub_8125B14 + b _08126E98 + .align 2, 0 +_08126E80: .4byte gUnknown_8416F10 +_08126E84: + ldr r0, _08126EA4 @ =gUnknown_8416DF7 + bl sub_8125AF0 + ldr r1, _08126EA8 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126EAC @ =sub_8125D88 + str r1, [r0] +_08126E98: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126EA4: .4byte gUnknown_8416DF7 +_08126EA8: .4byte gUnknown_3005090 +_08126EAC: .4byte sub_8125D88 + thumb_func_end sub_8126DC8 + + thumb_func_start sub_8126EB0 +sub_8126EB0: @ 8126EB0 + push {lr} + sub sp, 0xC + movs r0, 0 + str r0, [sp] + ldr r0, _08126ED4 @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _08126ED8 @ =sub_80568A8 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08126ED4: .4byte sub_811FB28 +_08126ED8: .4byte sub_80568A8 + thumb_func_end sub_8126EB0 + + thumb_func_start sub_8126EDC +sub_8126EDC: @ 8126EDC + push {lr} + sub sp, 0xC + ldr r0, _08126EF8 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _08126F00 + cmp r0, 0x5 + beq _08126F08 + ldr r1, _08126EFC @ =sub_8124D90 + b _08126F0A + .align 2, 0 +_08126EF8: .4byte gUnknown_203AD30 +_08126EFC: .4byte sub_8124D90 +_08126F00: + ldr r1, _08126F04 @ =sub_8124DA0 + b _08126F0A + .align 2, 0 +_08126F04: .4byte sub_8124DA0 +_08126F08: + ldr r1, _08126F30 @ =sub_8124DB0 +_08126F0A: + movs r0, 0x6 + str r0, [sp] + ldr r0, _08126F34 @ =sub_811FB28 + str r0, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0x5 + movs r3, 0 + bl sub_811EA44 + ldr r1, _08126F38 @ =gUnknown_203B0A0 + ldr r0, _08126F3C @ =gUnknown_203AD30 + ldrh r0, [r0] + strh r0, [r1, 0xC] + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08126F30: .4byte sub_8124DB0 +_08126F34: .4byte sub_811FB28 +_08126F38: .4byte gUnknown_203B0A0 +_08126F3C: .4byte gUnknown_203AD30 + thumb_func_end sub_8126EDC + + thumb_func_start sub_8126F40 +sub_8126F40: @ 8126F40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + ldr r5, _08126F80 @ =gUnknown_203B0D8 + ldr r0, _08126F84 @ =gUnknown_203B0A0 + mov r9, r0 + ldrb r0, [r0, 0x9] + lsls r0, 24 + asrs r0, 24 + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r7, _08126F88 @ =gUnknown_2024284 + adds r0, r7 + movs r1, 0xC + bl sub_803FBE8 + strh r0, [r5] + lsls r0, 16 + cmp r0, 0 + bne _08126F8C + adds r0, r4, 0 + bl sub_8126FD8 + b _08126FC4 + .align 2, 0 +_08126F80: .4byte gUnknown_203B0D8 +_08126F84: .4byte gUnknown_203B0A0 +_08126F88: .4byte gUnknown_2024284 +_08126F8C: + ldrh r0, [r5] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _08126FA0 + adds r0, r4, 0 + bl sub_812734C + b _08126FC4 +_08126FA0: + mov r1, r9 + movs r0, 0x9 + ldrsb r0, [r1, r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + ldrh r1, [r5] + movs r2, 0x1 + bl sub_812050C + ldr r1, _08126FD0 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _08126FD4 @ =sub_8127234 + str r1, [r0] +_08126FC4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08126FD0: .4byte gUnknown_3005090 +_08126FD4: .4byte sub_8127234 + thumb_func_end sub_8126F40 + + thumb_func_start sub_8126FD8 +sub_8126FD8: @ 8126FD8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _08127004 @ =gUnknown_203B0A0 + ldrh r0, [r5, 0xC] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _08127010 + ldrh r0, [r5, 0xC] + bl sub_8127384 + ldr r0, _08127008 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _0812700C @ =sub_81270E0 + str r0, [r1, 0x4] + adds r0, r4, 0 + bl sub_811FA78 + b _08127016 + .align 2, 0 +_08127004: .4byte gUnknown_203B0A0 +_08127008: .4byte gUnknown_203B09C +_0812700C: .4byte sub_81270E0 +_08127010: + adds r0, r4, 0 + bl sub_812701C +_08127016: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8126FD8 + + thumb_func_start sub_812701C +sub_812701C: @ 812701C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08127084 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08127078 + ldr r4, _08127088 @ =gUnknown_203B0A0 + ldrh r5, [r4, 0xC] + movs r0, 0x9 + ldrsb r0, [r4, r0] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r6, _0812708C @ =gUnknown_2024284 + adds r0, r6 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8120420 + movs r0, 0x9 + ldrsb r0, [r4, r0] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + adds r1, r5, 0 + bl sub_81205C8 + adds r0, r5, 0 + bl sub_8127384 + ldr r1, _08127090 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _08127094 @ =sub_8127098 + str r1, [r0] +_08127078: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08127084: .4byte gUnknown_2037AB8 +_08127088: .4byte gUnknown_203B0A0 +_0812708C: .4byte gUnknown_2024284 +_08127090: .4byte gUnknown_3005090 +_08127094: .4byte sub_8127098 + thumb_func_end sub_812701C + + thumb_func_start sub_8127098 +sub_8127098: @ 8127098 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _081270D4 @ =gUnknown_203B0A0 + ldrb r4, [r0, 0x9] + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081270CC + lsls r2, r4, 24 + asrs r2, 24 + movs r0, 0x64 + muls r0, r2 + ldr r1, _081270D8 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _081270DC @ =gUnknown_203B0B4 + lsls r2, 4 + ldr r1, [r1] + adds r1, r2 + bl sub_81224B4 + adds r0, r5, 0 + bl sub_811FA78 +_081270CC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081270D4: .4byte gUnknown_203B0A0 +_081270D8: .4byte gUnknown_2024284 +_081270DC: .4byte gUnknown_203B0B4 + thumb_func_end sub_8127098 + + thumb_func_start sub_81270E0 +sub_81270E0: @ 81270E0 + push {r4-r6,lr} + ldr r4, _08127128 @ =gUnknown_203B0A0 + movs r0, 0x9 + ldrsb r0, [r4, r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _0812712C @ =gUnknown_2024284 + adds r0, r5 + ldrh r1, [r4, 0xC] + bl sub_81205C8 + movs r0, 0x9 + ldrsb r0, [r4, r0] + muls r0, r6 + adds r0, r5 + movs r1, 0x40 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08127130 @ =gUnknown_3005008 + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + ldr r0, _08127134 @ =0x00002cd0 + adds r2, r0 + ldr r1, [r1] + adds r1, r2 + ldr r2, _08127138 @ =sub_812713C + movs r0, 0x4 + bl sub_80FEBAC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08127128: .4byte gUnknown_203B0A0 +_0812712C: .4byte gUnknown_2024284 +_08127130: .4byte gUnknown_3005008 +_08127134: .4byte 0x00002cd0 +_08127138: .4byte sub_812713C + thumb_func_end sub_81270E0 + + thumb_func_start sub_812713C +sub_812713C: @ 812713C + push {r4-r7,lr} + sub sp, 0xC + ldr r6, _0812718C @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r6, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08127190 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08127194 @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0 + bne _0812719C + adds r0, r5, 0 + bl sub_8097FB8 + ldr r4, _08127198 @ =gUnknown_203B0D8 + adds r0, r5, 0 + movs r1, 0xC + adds r2, r4, 0 + bl sub_804037C + ldrh r0, [r4] + movs r1, 0x1 + bl sub_809A1D8 + adds r0, r7, 0 + bl sub_81273AC + ldr r0, [r6] + bl sub_8000544 + b _081271B8 + .align 2, 0 +_0812718C: .4byte gUnknown_203B0A0 +_08127190: .4byte gUnknown_2024284 +_08127194: .4byte gUnknown_20370D0 +_08127198: .4byte gUnknown_203B0D8 +_0812719C: + ldrb r0, [r6, 0x8] + lsls r0, 28 + lsrs r0, 28 + ldrb r2, [r6, 0xB] + movs r1, 0x7F + str r1, [sp] + ldr r1, _081271C0 @ =sub_81271C4 + str r1, [sp, 0x4] + ldr r1, [r6] + str r1, [sp, 0x8] + movs r1, 0xFF + movs r3, 0x1 + bl sub_811EA44 +_081271B8: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081271C0: .4byte sub_81271C4 + thumb_func_end sub_812713C + + thumb_func_start sub_81271C4 +sub_81271C4: @ 81271C4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081271EC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812721E + ldr r1, _081271F0 @ =gUnknown_203B0D8 + ldrh r0, [r1] + cmp r0, 0 + beq _081271F8 + ldr r0, _081271F4 @ =gUnknown_203B0A0 + ldrh r0, [r0, 0xC] + ldrh r1, [r1] + movs r2, 0 + bl sub_8120558 + b _08127210 + .align 2, 0 +_081271EC: .4byte gUnknown_2037AB8 +_081271F0: .4byte gUnknown_203B0D8 +_081271F4: .4byte gUnknown_203B0A0 +_081271F8: + ldr r2, _08127224 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r2, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08127228 @ =gUnknown_2024284 + adds r0, r1 + ldrh r1, [r2, 0xC] + movs r2, 0 + movs r3, 0x1 + bl sub_8120420 +_08127210: + ldr r0, _0812722C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08127230 @ =sub_8127098 + str r0, [r1] +_0812721E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127224: .4byte gUnknown_203B0A0 +_08127228: .4byte gUnknown_2024284 +_0812722C: .4byte gUnknown_3005090 +_08127230: .4byte sub_8127098 + thumb_func_end sub_81271C4 + + thumb_func_start sub_8127234 +sub_8127234: @ 8127234 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8120370 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08127258 + bl sub_812200C + ldr r0, _08127260 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08127264 @ =sub_8127268 + str r0, [r1] +_08127258: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127260: .4byte gUnknown_3005090 +_08127264: .4byte sub_8127268 + thumb_func_end sub_8127234 + + thumb_func_start sub_8127268 +sub_8127268: @ 8127268 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0812728E + cmp r1, 0 + bgt _08127288 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08127328 + b _0812733C +_08127288: + cmp r1, 0x1 + beq _0812732E + b _0812733C +_0812728E: + ldr r7, _081272C0 @ =gUnknown_203B0A0 + ldrh r4, [r7, 0xC] + adds r0, r4, 0 + bl sub_8127384 + ldr r6, _081272C4 @ =gUnknown_203B0D8 + ldrh r0, [r6] + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + cmp r0, 0 + bne _081272CC + adds r0, r4, 0 + bl sub_81273AC + ldrh r0, [r6] + bl sub_8120658 + ldr r0, _081272C8 @ =gUnknown_2021D18 + movs r1, 0 + bl sub_81202F8 + b _0812730C + .align 2, 0 +_081272C0: .4byte gUnknown_203B0A0 +_081272C4: .4byte gUnknown_203B0D8 +_081272C8: .4byte gUnknown_2021D18 +_081272CC: + adds r0, r4, 0 + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _081272F0 + ldr r0, _081272E8 @ =gUnknown_203B09C + ldr r1, [r0] + ldr r0, _081272EC @ =sub_81270E0 + str r0, [r1, 0x4] + adds r0, r5, 0 + bl sub_811FA78 + b _0812733C + .align 2, 0 +_081272E8: .4byte gUnknown_203B09C +_081272EC: .4byte sub_81270E0 +_081272F0: + movs r1, 0x9 + ldrsb r1, [r7, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0812731C @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + bl sub_81205C8 + ldrh r1, [r6] + adds r0, r4, 0 + movs r2, 0x1 + bl sub_8120558 +_0812730C: + ldr r1, _08127320 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08127324 @ =sub_8127098 + str r1, [r0] + b _0812733C + .align 2, 0 +_0812731C: .4byte gUnknown_2024284 +_08127320: .4byte gUnknown_3005090 +_08127324: .4byte sub_8127098 +_08127328: + movs r0, 0x5 + bl sub_80722CC +_0812732E: + ldr r0, _08127344 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08127348 @ =sub_8127098 + str r0, [r1] +_0812733C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08127344: .4byte gUnknown_3005090 +_08127348: .4byte sub_8127098 + thumb_func_end sub_8127268 + + thumb_func_start sub_812734C +sub_812734C: @ 812734C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08127378 @ =gUnknown_8416BFB + movs r1, 0x1 + bl sub_81202F8 + movs r0, 0x2 + bl sub_80F67A4 + ldr r1, _0812737C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08127380 @ =sub_8127098 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127378: .4byte gUnknown_8416BFB +_0812737C: .4byte gUnknown_3005090 +_08127380: .4byte sub_8127098 + thumb_func_end sub_812734C + + thumb_func_start sub_8127384 +sub_8127384: @ 8127384 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _0812739C @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x6 + bne _081273A0 + adds r0, r1, 0 + movs r1, 0x1 + bl sub_809A460 + b _081273A8 + .align 2, 0 +_0812739C: .4byte gUnknown_203B0A0 +_081273A0: + adds r0, r1, 0 + movs r1, 0x1 + bl sub_809A1D8 +_081273A8: + pop {r0} + bx r0 + thumb_func_end sub_8127384 + + thumb_func_start sub_81273AC +sub_81273AC: @ 81273AC + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _081273C4 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x5 + beq _081273C8 + adds r0, r1, 0 + movs r1, 0x1 + bl sub_809A3C8 + b _081273D0 + .align 2, 0 +_081273C4: .4byte gUnknown_203B0A0 +_081273C8: + adds r0, r1, 0 + movs r1, 0x1 + bl sub_809A084 +_081273D0: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_81273AC + + thumb_func_start sub_81273D8 +sub_81273D8: @ 81273D8 + push {lr} + sub sp, 0xC + movs r0, 0x6 + str r0, [sp] + ldr r0, _081273FC @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _08127400 @ =sub_80EC500 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0x7 + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_081273FC: .4byte sub_811FB28 +_08127400: .4byte sub_80EC500 + thumb_func_end sub_81273D8 + + thumb_func_start sub_8127404 +sub_8127404: @ 8127404 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08127450 @ =gUnknown_203B0A0 + movs r1, 0x9 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08127454 @ =gUnknown_2024284 + adds r5, r1, r0 + ldr r1, _08127458 @ =gUnknown_203B0C0 + movs r0, 0 + strb r0, [r1] + ldr r2, _0812745C @ =gUnknown_3005008 + ldr r0, _08127460 @ =gUnknown_203AAC4 + ldrh r1, [r0] + adds r1, 0x6 + ldrh r0, [r0, 0x2] + adds r1, r0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08127464 @ =0x00002cd0 + adds r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + adds r0, r5, 0 + movs r1, 0xC + bl sub_803FBE8 + cmp r0, 0 + beq _0812746C + ldr r0, _08127468 @ =gUnknown_8416D17 + movs r1, 0x1 + bl sub_81202F8 + b _08127482 + .align 2, 0 +_08127450: .4byte gUnknown_203B0A0 +_08127454: .4byte gUnknown_2024284 +_08127458: .4byte gUnknown_203B0C0 +_0812745C: .4byte gUnknown_3005008 +_08127460: .4byte gUnknown_203AAC4 +_08127464: .4byte 0x00002cd0 +_08127468: .4byte gUnknown_8416D17 +_0812746C: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8097F44 + adds r0, r4, 0 + bl sub_8097CB4 + ldr r0, _0812749C @ =gUnknown_8416D4F + movs r1, 0x1 + bl sub_81202F8 +_08127482: + movs r0, 0x2 + bl sub_80F67A4 + ldr r0, _081274A0 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _081274A4 @ =sub_8127098 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812749C: .4byte gUnknown_8416D4F +_081274A0: .4byte gUnknown_3005090 +_081274A4: .4byte sub_8127098 + thumb_func_end sub_8127404 + + thumb_func_start sub_81274A8 +sub_81274A8: @ 81274A8 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_81274FC + movs r0, 0 + str r0, [sp] + ldr r0, _081274EC @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _081274F0 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + str r0, [sp, 0x8] + movs r0, 0x4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_811EA44 + ldr r1, _081274F4 @ =gUnknown_203B0A0 + lsls r4, 6 + ldrb r2, [r1, 0x8] + movs r0, 0x3F + ands r0, r2 + orrs r0, r4 + strb r0, [r1, 0x8] + ldr r0, _081274F8 @ =sub_812773C + str r0, [r1, 0x4] + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081274EC: .4byte sub_811FB28 +_081274F0: .4byte gUnknown_30030F0 +_081274F4: .4byte gUnknown_203B0A0 +_081274F8: .4byte sub_812773C + thumb_func_end sub_81274A8 + + thumb_func_start sub_81274FC +sub_81274FC: @ 81274FC + push {lr} + ldr r0, _0812750C @ =gUnknown_203B0D4 + movs r1, 0 + movs r2, 0x3 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_0812750C: .4byte gUnknown_203B0D4 + thumb_func_end sub_81274FC + + thumb_func_start sub_8127510 +sub_8127510: @ 8127510 + push {r4,lr} + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x64 + muls r0, r4 + ldr r1, _0812752C @ =gUnknown_2024284 + adds r0, r1 + bl sub_8127550 + lsls r0, 24 + cmp r0, 0 + bne _08127530 + movs r0, 0x2 + b _08127548 + .align 2, 0 +_0812752C: .4byte gUnknown_2024284 +_08127530: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r0, 24 + bl sub_8127710 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08127546 + movs r0, 0 + b _08127548 +_08127546: + movs r0, 0x1 +_08127548: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8127510 + + thumb_func_start sub_8127550 +sub_8127550: @ 8127550 + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0812757A + ldr r0, _08127580 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + lsrs r1, r0, 6 + cmp r1, 0 + beq _08127584 + cmp r1, 0x1 + beq _08127592 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x1E + bls _081275E0 +_0812757A: + movs r0, 0 + b _081275E2 + .align 2, 0 +_08127580: .4byte gUnknown_203B0A0 +_08127584: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _081275E0 + b _0812757A +_08127592: + ldr r0, _081275E8 @ =gUnknown_300500C + ldr r0, [r0] + ldr r2, _081275EC @ =0x0000055c + adds r0, r2 + ldrb r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _081275AE + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + cmp r0, 0x32 + bhi _0812757A +_081275AE: + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r3, _081275F0 @ =gUnknown_84020C4 + lsls r1, r5, 1 + adds r0, r1, r3 + ldrh r0, [r0] + ldr r2, _081275F4 @ =0x0000ffff + cmp r0, r2 + beq _081275E0 +_081275C8: + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r4 + beq _0812757A + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, r5, 1 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _081275C8 +_081275E0: + movs r0, 0x1 +_081275E2: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081275E8: .4byte gUnknown_300500C +_081275EC: .4byte 0x0000055c +_081275F0: .4byte gUnknown_84020C4 +_081275F4: .4byte 0x0000ffff + thumb_func_end sub_8127550 + + thumb_func_start sub_81275F8 +sub_81275F8: @ 81275F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08127618 @ =gUnknown_2024284 + mov r10, r0 + ldr r0, _0812761C @ =gUnknown_203B0A0 + ldrb r0, [r0, 0x8] + lsrs r0, 6 + cmp r0, 0x1 + beq _08127620 + cmp r0, 0x2 + beq _081276E8 + b _08127700 + .align 2, 0 +_08127618: .4byte gUnknown_2024284 +_0812761C: .4byte gUnknown_203B0A0 +_08127620: + ldr r1, _0812762C @ =gUnknown_203B0D4 + ldrb r0, [r1, 0x2] + cmp r0, 0 + bne _08127630 + movs r0, 0x11 + b _08127702 + .align 2, 0 +_0812762C: .4byte gUnknown_203B0D4 +_08127630: + movs r5, 0 +_08127632: + ldr r2, _081276DC @ =gUnknown_203B0D4 + adds r4, r2, r5 + ldrb r0, [r4] + movs r1, 0x64 + muls r0, r1 + subs r0, 0x64 + add r0, r10 + movs r1, 0xB + bl sub_803FBE8 + ldr r2, _081276E0 @ =gUnknown_203B09C + ldr r1, [r2] + ldr r2, _081276E4 @ =0x00000236 + adds r1, r2 + strh r0, [r1] + ldrb r0, [r4] + movs r1, 0x64 + muls r0, r1 + subs r0, 0x64 + add r0, r10 + movs r1, 0xC + bl sub_803FBE8 + ldr r2, _081276E0 @ =gUnknown_203B09C + ldr r1, [r2] + movs r2, 0x8D + lsls r2, 2 + adds r1, r2 + strh r0, [r1] + adds r1, r5, 0x1 + lsls r0, r1, 24 + lsrs r5, r0, 24 + mov r9, r1 + cmp r5, 0x2 + bhi _081276D0 + ldr r0, _081276E0 @ =gUnknown_203B09C + mov r8, r0 + movs r7, 0x64 +_0812767E: + mov r1, r8 + ldr r0, [r1] + ldr r2, _081276E4 @ =0x00000236 + adds r0, r2 + movs r1, 0 + ldrsh r4, [r0, r1] + ldr r2, _081276DC @ =gUnknown_203B0D4 + adds r6, r2, r5 + ldrb r0, [r6] + muls r0, r7 + subs r0, 0x64 + add r0, r10 + movs r1, 0xB + bl sub_803FBE8 + cmp r4, r0 + beq _081276F8 + mov r1, r8 + ldr r0, [r1] + movs r2, 0x8D + lsls r2, 2 + adds r1, r0, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _081276C6 + adds r4, r0, 0 + ldrb r0, [r6] + muls r0, r7 + subs r0, 0x64 + add r0, r10 + movs r1, 0xC + bl sub_803FBE8 + cmp r4, r0 + beq _081276FC +_081276C6: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _0812767E +_081276D0: + mov r1, r9 + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _08127632 + b _08127700 + .align 2, 0 +_081276DC: .4byte gUnknown_203B0D4 +_081276E0: .4byte gUnknown_203B09C +_081276E4: .4byte 0x00000236 +_081276E8: + ldr r2, _081276F4 @ =gUnknown_203B0D4 + ldrb r0, [r2, 0x1] + cmp r0, 0 + bne _08127700 + movs r0, 0x12 + b _08127702 + .align 2, 0 +_081276F4: .4byte gUnknown_203B0D4 +_081276F8: + movs r0, 0x13 + b _08127702 +_081276FC: + movs r0, 0x14 + b _08127702 +_08127700: + movs r0, 0xFF +_08127702: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81275F8 + + thumb_func_start sub_8127710 +sub_8127710: @ 8127710 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0 + ldr r3, _08127728 @ =gUnknown_203B0D4 +_0812771A: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _0812772C + movs r0, 0x1 + b _08127738 + .align 2, 0 +_08127728: .4byte gUnknown_203B0D4 +_0812772C: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bls _0812771A + movs r0, 0 +_08127738: + pop {r1} + bx r1 + thumb_func_end sub_8127710 + + thumb_func_start sub_812773C +sub_812773C: @ 812773C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_81275F8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _08127768 + movs r0, 0x1A + bl sub_80722CC + adds r0, r4, 0 + bl sub_8121D0C + ldr r0, _08127764 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + b _08127796 + .align 2, 0 +_08127764: .4byte gUnknown_3005090 +_08127768: + ldr r0, _08127780 @ =gUnknown_203B0D4 + ldrb r0, [r0] + cmp r0, 0 + beq _08127784 + movs r0, 0x5 + bl sub_80722CC + adds r0, r5, 0 + bl sub_811FA78 + b _0812779E + .align 2, 0 +_08127780: .4byte gUnknown_203B0D4 +_08127784: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0xE + bl sub_8121D0C + ldr r0, _081277A4 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 +_08127796: + lsls r1, 3 + adds r1, r0 + ldr r0, _081277A8 @ =sub_81277AC + str r0, [r1] +_0812779E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081277A4: .4byte gUnknown_3005090 +_081277A8: .4byte sub_81277AC + thumb_func_end sub_812773C + + thumb_func_start sub_81277AC +sub_81277AC: @ 81277AC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081277E8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081277C6 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081277E0 +_081277C6: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_8121D0C + ldr r0, _081277EC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _081277F0 @ =sub_811FB28 + str r0, [r1] +_081277E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081277E8: .4byte gUnknown_30030F0 +_081277EC: .4byte gUnknown_3005090 +_081277F0: .4byte sub_811FB28 + thumb_func_end sub_81277AC + + thumb_func_start sub_81277F4 +sub_81277F4: @ 81277F4 + push {lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + str r2, [sp] + ldr r2, _08127818 @ =sub_811FB28 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08127818: .4byte sub_811FB28 + thumb_func_end sub_81277F4 + + thumb_func_start sub_812781C +sub_812781C: @ 812781C + push {lr} + sub sp, 0xC + ldr r0, _08127844 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0xE + bhi _08127850 + movs r0, 0x4 + str r0, [sp] + ldr r0, _08127848 @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _0812784C @ =sub_80568E0 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0xC + movs r3, 0 + bl sub_811EA44 + b _08127870 + .align 2, 0 +_08127844: .4byte gUnknown_20370C2 +_08127848: .4byte sub_811FB28 +_0812784C: .4byte sub_80568E0 +_08127850: + movs r0, 0x7F + str r0, [sp] + ldr r0, _08127878 @ =sub_8126DC8 + str r0, [sp, 0x4] + ldr r0, _0812787C @ =sub_80568E0 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0xC + movs r3, 0 + bl sub_811EA44 + ldr r1, _08127880 @ =gUnknown_203B0A0 + ldr r0, _08127884 @ =gUnknown_20370C6 + ldrh r0, [r0] + strb r0, [r1, 0x9] +_08127870: + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08127878: .4byte sub_8126DC8 +_0812787C: .4byte sub_80568E0 +_08127880: .4byte gUnknown_203B0A0 +_08127884: .4byte gUnknown_20370C6 + thumb_func_end sub_812781C + + thumb_func_start sub_8127888 +sub_8127888: @ 8127888 + push {lr} + sub sp, 0xC + movs r0, 0x1 + str r0, [sp] + ldr r0, _081278AC @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _081278B0 @ =sub_80568E0 + str r0, [sp, 0x8] + movs r0, 0xB + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_081278AC: .4byte sub_811FB28 +_081278B0: .4byte sub_80568E0 + thumb_func_end sub_8127888 + + thumb_func_start sub_81278B4 +sub_81278B4: @ 81278B4 + push {lr} + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _081278C4 + movs r0, 0 + b _081278D6 +_081278C4: + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081278D4 + movs r0, 0x1 + b _081278D6 +_081278D4: + movs r0, 0x2 +_081278D6: + pop {r1} + bx r1 + thumb_func_end sub_81278B4 + + thumb_func_start sub_81278DC +sub_81278DC: @ 81278DC + push {r4,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x8 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _08127930 + ldr r0, _08127924 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08127930 + bl sub_81278B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x7F + str r0, [sp] + ldr r0, _08127928 @ =sub_8120C3C + str r0, [sp, 0x4] + ldr r0, _0812792C @ =sub_8030ADC + str r0, [sp, 0x8] + movs r0, 0x1 + adds r2, r4, 0 + movs r3, 0 + bl sub_811EA44 + movs r0, 0x8 + bl sub_80EB2F4 + b _08127950 + .align 2, 0 +_08127924: .4byte gUnknown_2022B4C +_08127928: .4byte sub_8120C3C +_0812792C: .4byte sub_8030ADC +_08127930: + bl sub_81278B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + str r0, [sp] + ldr r0, _08127960 @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _08127964 @ =sub_8030ADC + str r0, [sp, 0x8] + movs r0, 0x1 + adds r2, r4, 0 + movs r3, 0 + bl sub_811EA44 +_08127950: + bl nullsub_44 + bl sub_8128074 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127960: .4byte sub_811FB28 +_08127964: .4byte sub_8030ADC + thumb_func_end sub_81278DC + + thumb_func_start sub_8127968 +sub_8127968: @ 8127968 + push {lr} + sub sp, 0xC + bl sub_81278B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + str r0, [sp] + ldr r0, _0812799C @ =sub_8120EBC + str r0, [sp, 0x4] + ldr r0, _081279A0 @ =sub_8030ADC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_811EA44 + bl nullsub_44 + bl sub_8128074 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0812799C: .4byte sub_8120EBC +_081279A0: .4byte sub_8030ADC + thumb_func_end sub_8127968 + + thumb_func_start sub_81279A4 +sub_81279A4: @ 81279A4 + push {lr} + sub sp, 0xC + bl sub_81278B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + str r0, [sp] + ldr r0, _081279D8 @ =sub_8120FCC + str r0, [sp, 0x4] + ldr r0, _081279DC @ =sub_8107ECC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0xE + movs r3, 0 + bl sub_811EA44 + bl nullsub_44 + bl sub_8128074 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_081279D8: .4byte sub_8120FCC +_081279DC: .4byte sub_8107ECC + thumb_func_end sub_81279A4 + + thumb_func_start sub_81279E0 +sub_81279E0: @ 81279E0 + push {r4,lr} + sub sp, 0xC + movs r0, 0x8 + bl sub_80EB2E0 + lsls r0, 24 + cmp r0, 0 + bne _08127A30 + ldr r0, _08127A24 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08127A30 + bl sub_81278B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x7F + str r0, [sp] + ldr r0, _08127A28 @ =sub_8120C3C + str r0, [sp, 0x4] + ldr r0, _08127A2C @ =sub_8107ECC + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x3 + movs r3, 0 + bl sub_811EA44 + movs r0, 0x8 + bl sub_80EB2F4 + b _08127A62 + .align 2, 0 +_08127A24: .4byte gUnknown_2022B4C +_08127A28: .4byte sub_8120C3C +_08127A2C: .4byte sub_8107ECC +_08127A30: + ldr r0, _08127A74 @ =gUnknown_203AD30 + ldrh r0, [r0] + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08127A78 @ =sub_8107ECC + cmp r0, 0x5 + bne _08127A44 + ldr r4, _08127A7C @ =sub_8124DB0 +_08127A44: + bl sub_81278B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + str r0, [sp] + ldr r0, _08127A80 @ =sub_811FB28 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x3 + movs r3, 0 + bl sub_811EA44 +_08127A62: + bl nullsub_44 + bl sub_8128074 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127A74: .4byte gUnknown_203AD30 +_08127A78: .4byte sub_8107ECC +_08127A7C: .4byte sub_8124DB0 +_08127A80: .4byte sub_811FB28 + thumb_func_end sub_81279E0 + + thumb_func_start sub_8127A84 +sub_8127A84: @ 8127A84 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08127AA4 @ =gUnknown_20242E8 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08127AA0 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + beq _08127AA8 +_08127AA0: + movs r0, 0x7 + b _08127ABA + .align 2, 0 +_08127AA4: .4byte gUnknown_20242E8 +_08127AA8: + ldr r0, _08127AB4 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x1 + beq _08127AB8 + movs r0, 0x2 + b _08127ABA + .align 2, 0 +_08127AB4: .4byte gUnknown_203B0A0 +_08127AB8: + movs r0, 0x3 +_08127ABA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8127A84 + + thumb_func_start sub_8127AC0 +sub_8127AC0: @ 8127AC0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + bl sub_811FB0C + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08127B08 + cmp r5, 0x1 + beq _08127AE6 + cmp r5, 0x4 + beq _08127AE6 + cmp r5, 0x5 + bne _08127B08 +_08127AE6: + ldr r4, _08127AFC @ =gUnknown_2021CD0 + bl sub_80444C4 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, _08127B00 @ =gUnknown_2021D18 + ldr r1, _08127B04 @ =gUnknown_8416A98 + b _08127C86 + .align 2, 0 +_08127AFC: .4byte gUnknown_2021CD0 +_08127B00: .4byte gUnknown_2021D18 +_08127B04: .4byte gUnknown_8416A98 +_08127B08: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08127B2C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08127B3C + ldr r1, _08127B30 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_81202E0 + ldr r0, _08127B34 @ =gUnknown_2021D18 + ldr r1, _08127B38 @ =gUnknown_8416A75 + b _08127C86 + .align 2, 0 +_08127B2C: .4byte gUnknown_2024284 +_08127B30: .4byte gUnknown_2021CD0 +_08127B34: .4byte gUnknown_2021D18 +_08127B38: .4byte gUnknown_8416A75 +_08127B3C: + movs r4, 0 + b _08127B68 +_08127B40: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08127B62 + adds r0, r5, 0 + bl sub_8127F7C + lsls r0, 24 + ldr r2, _08127B90 @ =gUnknown_2023BCE + lsls r1, r4, 1 + adds r1, r2 + lsrs r0, 24 + ldrh r1, [r1] + cmp r0, r1 + beq _08127C40 +_08127B62: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_08127B68: + ldr r0, _08127B94 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bcc _08127B40 + movs r7, 0x64 + adds r0, r5, 0 + muls r0, r7 + ldr r1, _08127B98 @ =gUnknown_2024284 + mov r8, r1 + adds r6, r0, r1 + adds r0, r6, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + beq _08127BA4 + ldr r0, _08127B9C @ =gUnknown_2021D18 + ldr r1, _08127BA0 @ =gUnknown_8416ACB + b _08127C86 + .align 2, 0 +_08127B90: .4byte gUnknown_2023BCE +_08127B94: .4byte gUnknown_2023BCC +_08127B98: .4byte gUnknown_2024284 +_08127B9C: .4byte gUnknown_2021D18 +_08127BA0: .4byte gUnknown_8416ACB +_08127BA4: + adds r0, r5, 0 + bl sub_8127F7C + ldr r1, _08127BC8 @ =gUnknown_2023FE8 + ldr r1, [r1] + adds r1, 0x8B + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _08127BD8 + ldr r1, _08127BCC @ =gUnknown_2021CD0 + adds r0, r6, 0 + bl sub_81202E0 + ldr r0, _08127BD0 @ =gUnknown_2021D18 + ldr r1, _08127BD4 @ =gUnknown_8416A55 + b _08127C86 + .align 2, 0 +_08127BC8: .4byte gUnknown_2023FE8 +_08127BCC: .4byte gUnknown_2021CD0 +_08127BD0: .4byte gUnknown_2021D18 +_08127BD4: .4byte gUnknown_8416A55 +_08127BD8: + ldr r0, _08127BE8 @ =gUnknown_203B0A0 + ldrb r0, [r0, 0xB] + cmp r0, 0x4 + bne _08127BEC + bl sub_8044348 + b _08127C8A + .align 2, 0 +_08127BE8: .4byte gUnknown_203B0A0 +_08127BEC: + cmp r0, 0x2 + beq _08127C64 + adds r0, r5, 0 + bl sub_8127F7C + ldr r1, _08127C30 @ =gUnknown_203B0C1 + strb r0, [r1] + ldr r1, _08127C34 @ =gUnknown_203B0C0 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _08127C38 @ =gUnknown_2023BCE + ldr r0, _08127C3C @ =gUnknown_2024004 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8128030 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8127FF4 + adds r0, r4, 0 + muls r0, r7 + add r0, r8 + adds r1, r6, 0 + bl sub_811FA40 + movs r0, 0x1 + b _08127C8C + .align 2, 0 +_08127C30: .4byte gUnknown_203B0C1 +_08127C34: .4byte gUnknown_203B0C0 +_08127C38: .4byte gUnknown_2023BCE +_08127C3C: .4byte gUnknown_2024004 +_08127C40: + movs r0, 0x64 + muls r0, r5 + ldr r1, _08127C54 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08127C58 @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r0, _08127C5C @ =gUnknown_2021D18 + ldr r1, _08127C60 @ =gUnknown_8416A3A + b _08127C86 + .align 2, 0 +_08127C54: .4byte gUnknown_2024284 +_08127C58: .4byte gUnknown_2021CD0 +_08127C5C: .4byte gUnknown_2021D18 +_08127C60: .4byte gUnknown_8416A3A +_08127C64: + ldr r0, _08127C98 @ =gUnknown_2024004 + ldrb r0, [r0] + ldr r1, _08127C9C @ =gUnknown_2023BCE + lsls r0, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8128030 + lsls r0, 24 + lsrs r0, 24 + muls r0, r7 + add r0, r8 + ldr r1, _08127CA0 @ =gUnknown_2021CD0 + bl sub_81202E0 + ldr r0, _08127CA4 @ =gUnknown_2021D18 + ldr r1, _08127CA8 @ =gUnknown_8416A1E +_08127C86: + bl sub_8008FCC +_08127C8A: + movs r0, 0 +_08127C8C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08127C98: .4byte gUnknown_2024004 +_08127C9C: .4byte gUnknown_2023BCE +_08127CA0: .4byte gUnknown_2021CD0 +_08127CA4: .4byte gUnknown_2021D18 +_08127CA8: .4byte gUnknown_8416A1E + thumb_func_end sub_8127AC0 + + thumb_func_start sub_8127CAC +sub_8127CAC: @ 8127CAC + push {r4,lr} + ldr r4, _08127CC8 @ =gUnknown_203B0DC + bl sub_80435E0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8127CCC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127CC8: .4byte gUnknown_203B0DC + thumb_func_end sub_8127CAC + + thumb_func_start sub_8127CCC +sub_8127CCC: @ 8127CCC + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08127D02 + cmp r4, 0 + beq _08127CF4 + movs r0, 0x30 + strb r0, [r6] + movs r0, 0x45 + strb r0, [r6, 0x1] + movs r0, 0x12 + strb r0, [r6, 0x2] + b _08127D9C +_08127CF4: + movs r0, 0x3 + strb r0, [r6] + movs r0, 0x12 + strb r0, [r6, 0x1] + movs r0, 0x45 + strb r0, [r6, 0x2] + b _08127D9C +_08127D02: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08127D40 + movs r5, 0x1 + movs r0, 0 + bl sub_80751E8 + mov r2, sp + ldr r1, _08127D3C @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r0, [r0] + strb r0, [r2] + movs r4, 0 + mov r1, sp +_08127D26: + ldrb r0, [r1] + cmp r4, r0 + beq _08127D34 + mov r2, sp + adds r0, r2, r5 + strb r4, [r0] + adds r5, 0x1 +_08127D34: + adds r4, 0x1 + cmp r4, 0x5 + ble _08127D26 + b _08127D84 + .align 2, 0 +_08127D3C: .4byte gUnknown_2023BCE +_08127D40: + movs r5, 0x2 + movs r0, 0 + bl sub_80751E8 + mov r1, sp + ldr r4, _08127DA4 @ =gUnknown_2023BCE + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrh r0, [r0] + strb r0, [r1] + movs r0, 0x2 + bl sub_80751E8 + mov r1, sp + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrh r0, [r0] + strb r0, [r1, 0x1] + movs r4, 0 +_08127D6A: + ldrb r0, [r1] + cmp r4, r0 + beq _08127D7E + ldrb r0, [r1, 0x1] + cmp r4, r0 + beq _08127D7E + mov r2, sp + adds r0, r2, r5 + strb r4, [r0] + adds r5, 0x1 +_08127D7E: + adds r4, 0x1 + cmp r4, 0x5 + ble _08127D6A +_08127D84: + movs r4, 0 + mov r3, sp +_08127D88: + adds r0, r6, r4 + ldrb r1, [r3] + lsls r1, 4 + ldrb r2, [r3, 0x1] + orrs r1, r2 + strb r1, [r0] + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + ble _08127D88 +_08127D9C: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08127DA4: .4byte gUnknown_2023BCE + thumb_func_end sub_8127CCC + + thumb_func_start sub_8127DA8 +sub_8127DA8: @ 8127DA8 + push {lr} + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08127DC8 @ =gUnknown_2023FE8 + lsls r3, r2, 1 + adds r3, r2 + adds r3, 0x60 + ldr r0, [r0] + adds r0, r3 + bl sub_8127DCC + pop {r0} + bx r0 + .align 2, 0 +_08127DC8: .4byte gUnknown_2023FE8 + thumb_func_end sub_8127DA8 + + thumb_func_start sub_8127DCC +sub_8127DCC: @ 8127DCC + push {r4-r7,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r0, r2, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r0, 24 + lsrs r0, 24 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08127DF4 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x2 + b _08127E00 +_08127DF4: + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x3 +_08127E00: + bl sub_80751E8 + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08127E34 + cmp r7, 0 + beq _08127E26 + movs r0, 0x30 + strb r0, [r5] + movs r0, 0x45 + strb r0, [r5, 0x1] + movs r0, 0x12 + strb r0, [r5, 0x2] + b _08127EB6 +_08127E26: + movs r0, 0x3 + strb r0, [r5] + movs r0, 0x12 + strb r0, [r5, 0x1] + movs r0, 0x45 + strb r0, [r5, 0x2] + b _08127EB6 +_08127E34: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + bne _08127E6C + movs r3, 0x1 + mov r2, sp + ldr r1, _08127E68 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + strb r0, [r2] + movs r4, 0 + mov r1, sp +_08127E50: + ldrb r0, [r1] + cmp r4, r0 + beq _08127E5E + mov r2, sp + adds r0, r2, r3 + strb r4, [r0] + adds r3, 0x1 +_08127E5E: + adds r4, 0x1 + cmp r4, 0x5 + ble _08127E50 + b _08127E9E + .align 2, 0 +_08127E68: .4byte gUnknown_2023BCE +_08127E6C: + movs r3, 0x2 + mov r1, sp + ldr r2, _08127EC0 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + lsls r0, r6, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x1] + movs r4, 0 +_08127E84: + ldrb r0, [r1] + cmp r4, r0 + beq _08127E98 + ldrb r0, [r1, 0x1] + cmp r4, r0 + beq _08127E98 + mov r2, sp + adds r0, r2, r3 + strb r4, [r0] + adds r3, 0x1 +_08127E98: + adds r4, 0x1 + cmp r4, 0x5 + ble _08127E84 +_08127E9E: + movs r4, 0 + mov r3, sp +_08127EA2: + adds r0, r5, r4 + ldrb r1, [r3] + lsls r1, 4 + ldrb r2, [r3, 0x1] + orrs r1, r2 + strb r1, [r0] + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + ble _08127EA2 +_08127EB6: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08127EC0: .4byte gUnknown_2023BCE + thumb_func_end sub_8127DCC + + thumb_func_start sub_8127EC4 +sub_8127EC4: @ 8127EC4 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + movs r7, 0 + bl sub_811FA20 + lsls r0, 24 + cmp r0, 0 + beq _08127F72 + ldr r0, _08127F28 @ =gUnknown_2023FE8 + lsls r1, r4, 1 + adds r1, r4 + adds r1, 0x60 + ldr r0, [r0] + adds r4, r0, r1 + movs r2, 0 + add r6, sp + mov r12, r6 + movs r6, 0xF + mov r3, sp +_08127EF6: + adds r1, r4, r2 + ldrb r0, [r1] + lsrs r0, 4 + strb r0, [r3] + adds r3, 0x1 + ldrb r1, [r1] + adds r0, r6, 0 + ands r0, r1 + strb r0, [r3] + adds r3, 0x1 + adds r2, 0x1 + cmp r2, 0x2 + ble _08127EF6 + mov r0, r12 + ldrb r3, [r0] + movs r2, 0 + mov r0, sp + ldrb r0, [r0] + cmp r0, r5 + bne _08127F2C + mov r0, sp + ldrb r7, [r0] + strb r3, [r0] + b _08127F40 + .align 2, 0 +_08127F28: .4byte gUnknown_2023FE8 +_08127F2C: + adds r2, 0x1 + cmp r2, 0x5 + bgt _08127F40 + mov r0, sp + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, r5 + bne _08127F2C + adds r7, r0, 0 + strb r3, [r1] +_08127F40: + cmp r2, 0x6 + beq _08127F72 + mov r0, r12 + strb r7, [r0] + mov r0, sp + ldrb r0, [r0] + lsls r0, 4 + mov r1, sp + ldrb r1, [r1, 0x1] + orrs r0, r1 + strb r0, [r4] + mov r0, sp + ldrb r0, [r0, 0x2] + lsls r0, 4 + mov r1, sp + ldrb r1, [r1, 0x3] + orrs r0, r1 + strb r0, [r4, 0x1] + mov r0, sp + ldrb r0, [r0, 0x4] + lsls r0, 4 + mov r1, sp + ldrb r1, [r1, 0x5] + orrs r0, r1 + strb r0, [r4, 0x2] +_08127F72: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8127EC4 + + thumb_func_start sub_8127F7C +sub_8127F7C: @ 8127F7C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0x1 + ands r1, r2 + lsrs r2, r0, 25 + cmp r1, 0 + beq _08127F9C + ldr r0, _08127F98 @ =gUnknown_203B0DC + adds r0, r2, r0 + ldrb r0, [r0] + movs r1, 0xF + ands r1, r0 + b _08127FA4 + .align 2, 0 +_08127F98: .4byte gUnknown_203B0DC +_08127F9C: + ldr r0, _08127FAC @ =gUnknown_203B0DC + adds r0, r2, r0 + ldrb r0, [r0] + lsrs r1, r0, 4 +_08127FA4: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_08127FAC: .4byte gUnknown_203B0DC + thumb_func_end sub_8127F7C + + thumb_func_start sub_8127FB0 +sub_8127FB0: @ 8127FB0 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + movs r1, 0x1 + ands r1, r3 + lsrs r3, r0, 25 + cmp r1, 0 + beq _08127FD8 + ldr r0, _08127FD4 @ =gUnknown_203B0DC + adds r0, r3, r0 + ldrb r2, [r0] + movs r1, 0xF0 + ands r1, r2 + orrs r1, r4 + strb r1, [r0] + b _08127FE8 + .align 2, 0 +_08127FD4: .4byte gUnknown_203B0DC +_08127FD8: + ldr r2, _08127FF0 @ =gUnknown_203B0DC + adds r2, r3, r2 + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + lsls r1, r4, 4 + orrs r0, r1 + strb r0, [r2] +_08127FE8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127FF0: .4byte gUnknown_203B0DC + thumb_func_end sub_8127FB0 + + thumb_func_start sub_8127FF4 +sub_8127FF4: @ 8127FF4 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + adds r0, r5, 0 + bl sub_8127F7C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r6, 0 + bl sub_8127F7C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8127FB0 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8127FB0 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8127FF4 + + thumb_func_start sub_8128030 +sub_8128030: @ 8128030 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0 + movs r2, 0 + ldr r5, _08128058 @ =gUnknown_203B0DC +_0812803C: + adds r0, r3, r5 + ldrb r1, [r0] + lsrs r0, r1, 4 + cmp r0, r4 + beq _08128054 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0xF + ands r0, r1 + cmp r0, r4 + bne _0812805C +_08128054: + adds r0, r2, 0 + b _0812806E + .align 2, 0 +_08128058: .4byte gUnknown_203B0DC +_0812805C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x2 + bls _0812803C + movs r0, 0 +_0812806E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8128030 + + thumb_func_start sub_8128074 +sub_8128074: @ 8128074 + push {r4-r6,lr} + movs r4, 0x96 + lsls r4, 2 + adds r0, r4, 0 + bl sub_8002B9C + adds r5, r0, 0 + ldr r1, _081280C0 @ =gUnknown_2024284 + adds r2, r4, 0 + bl memcpy + movs r4, 0 + movs r6, 0x64 +_0812808E: + adds r0, r4, 0 + bl sub_8128030 + lsls r0, 24 + lsrs r0, 24 + muls r0, r6 + ldr r1, _081280C0 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + muls r1, r6 + adds r1, r5 + movs r2, 0x64 + bl memcpy + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0812808E + adds r0, r5, 0 + bl sub_8002BC4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081280C0: .4byte gUnknown_2024284 + thumb_func_end sub_8128074 + + thumb_func_start sub_81280C4 +sub_81280C4: @ 81280C4 + push {r4-r6,lr} + movs r4, 0x96 + lsls r4, 2 + adds r0, r4, 0 + bl sub_8002B9C + adds r5, r0, 0 + ldr r1, _08128110 @ =gUnknown_2024284 + adds r2, r4, 0 + bl memcpy + movs r4, 0 + movs r6, 0x64 +_081280DE: + adds r0, r4, 0 + bl sub_8127F7C + lsls r0, 24 + lsrs r0, 24 + muls r0, r6 + ldr r1, _08128110 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + muls r1, r6 + adds r1, r5 + movs r2, 0x64 + bl memcpy + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _081280DE + adds r0, r5, 0 + bl sub_8002BC4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08128110: .4byte gUnknown_2024284 + thumb_func_end sub_81280C4 + + thumb_func_start sub_8128114 +sub_8128114: @ 8128114 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0x1 + movs r7, 0x64 + ldr r0, _0812816C @ =gUnknown_2024284 + mov r8, r0 +_08128122: + adds r0, r6, 0 + bl sub_8127F7C + lsls r0, 24 + lsrs r0, 24 + muls r0, r7 + mov r1, r8 + adds r5, r0, r1 + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _08128170 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08128170 + movs r0, 0 + bl sub_8127F7C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + adds r1, r6, 0 + bl sub_8127FF4 + adds r0, r4, 0 + muls r0, r7 + add r0, r8 + adds r1, r5, 0 + bl sub_811FA40 + b _0812817A + .align 2, 0 +_0812816C: .4byte gUnknown_2024284 +_08128170: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x5 + bls _08128122 +_0812817A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8128114 + + thumb_func_start sub_8128184 +sub_8128184: @ 8128184 + push {lr} + bl sub_8108CF0 + ldr r0, _08128194 @ =sub_8030ADC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_08128194: .4byte sub_8030ADC + thumb_func_end sub_8128184 + + thumb_func_start sub_8128198 +sub_8128198: @ 8128198 + push {lr} + sub sp, 0xC + movs r0, 0x7F + str r0, [sp] + ldr r0, _081281BC @ =sub_81281C4 + str r0, [sp, 0x4] + ldr r0, _081281C0 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + str r0, [sp, 0x8] + movs r0, 0x5 + movs r1, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_081281BC: .4byte sub_81281C4 +_081281C0: .4byte gUnknown_30030F0 + thumb_func_end sub_8128198 + + thumb_func_start sub_81281C4 +sub_81281C4: @ 81281C4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081281F4 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r1, 0x80 + lsls r1, 1 + strh r1, [r4, 0x8] + bl sub_81282DC + movs r1, 0x80 + lsls r1, 9 + movs r0, 0x2 + movs r2, 0 + bl sub_8001B90 + ldr r0, _081281F8 @ =sub_81281FC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081281F4: .4byte gUnknown_3005090 +_081281F8: .4byte sub_81281FC + thumb_func_end sub_81281C4 + + thumb_func_start sub_81281FC +sub_81281FC: @ 81281FC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r6, r5, 2 + adds r0, r6, r5 + lsls r0, 3 + ldr r1, _08128270 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r0, _08128274 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08128268 + ldrh r0, [r4] + subs r0, 0x8 + strh r0, [r4] + adds r0, r5, 0 + bl sub_81282DC + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08128268 + movs r4, 0x3 + ldr r7, _08128278 @ =gUnknown_2022B58 +_08128230: + subs r0, r4, 0x3 + lsls r0, 5 + adds r0, r7 + ldrh r0, [r0] + cmp r0, 0 + beq _0812824C + ldr r0, _0812827C @ =gUnknown_203B0B4 + ldr r1, [r0] + lsls r0, r4, 4 + adds r0, r1 + ldrb r0, [r0, 0x9] + movs r1, 0 + bl sub_812238C +_0812824C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _08128230 + movs r0, 0x71 + bl sub_80722CC + ldr r0, _08128280 @ =gUnknown_3005090 + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _08128284 @ =sub_8128288 + str r0, [r1] +_08128268: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08128270: .4byte gUnknown_3005098 +_08128274: .4byte gUnknown_2037AB8 +_08128278: .4byte gUnknown_2022B58 +_0812827C: .4byte gUnknown_203B0B4 +_08128280: .4byte gUnknown_3005090 +_08128284: .4byte sub_8128288 + thumb_func_end sub_81281FC + + thumb_func_start sub_8128288 +sub_8128288: @ 8128288 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _081282B4 @ =gUnknown_3005098 + adds r0, r1 + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] + lsls r1, 16 + movs r0, 0x80 + lsls r0, 17 + cmp r1, r0 + bne _081282AE + adds r0, r2, 0 + bl sub_811FA78 +_081282AE: + pop {r0} + bx r0 + .align 2, 0 +_081282B4: .4byte gUnknown_3005098 + thumb_func_end sub_8128288 + + thumb_func_start sub_81282B8 +sub_81282B8: @ 81282B8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 16 + lsrs r3, r1, 16 + cmp r1, 0 + blt _081282D2 + ldr r1, _081282D8 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strh r3, [r0, 0x24] +_081282D2: + pop {r0} + bx r0 + .align 2, 0 +_081282D8: .4byte gUnknown_202063C + thumb_func_end sub_81282B8 + + thumb_func_start sub_81282DC +sub_81282DC: @ 81282DC + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08128364 @ =gUnknown_3005098 + adds r5, r1, r0 + movs r6, 0x3 + ldr r7, _08128368 @ =gUnknown_203B0B4 +_081282F0: + ldr r0, _0812836C @ =gUnknown_2022B58 + subs r1, r6, 0x3 + lsls r1, 5 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _08128348 + ldr r0, [r7] + lsls r4, r6, 4 + adds r0, r4, r0 + ldrb r0, [r0, 0x9] + ldrh r1, [r5] + subs r1, 0x8 + lsls r1, 16 + asrs r1, 16 + bl sub_81282B8 + ldr r0, [r7] + adds r0, r4, r0 + ldrb r0, [r0, 0xA] + ldrh r1, [r5] + subs r1, 0x8 + lsls r1, 16 + asrs r1, 16 + bl sub_81282B8 + ldr r0, [r7] + adds r0, r4, r0 + ldrb r0, [r0, 0xB] + ldrh r1, [r5] + subs r1, 0x8 + lsls r1, 16 + asrs r1, 16 + bl sub_81282B8 + ldr r0, [r7] + adds r4, r0 + ldrb r0, [r4, 0xC] + ldrh r1, [r5] + subs r1, 0x8 + lsls r1, 16 + asrs r1, 16 + bl sub_81282B8 +_08128348: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x5 + bls _081282F0 + movs r1, 0x80 + lsls r1, 4 + movs r0, 0x2 + movs r2, 0x1 + bl sub_8001B90 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08128364: .4byte gUnknown_3005098 +_08128368: .4byte gUnknown_203B0B4 +_0812836C: .4byte gUnknown_2022B58 + thumb_func_end sub_81282DC + + thumb_func_start sub_8128370 +sub_8128370: @ 8128370 + push {lr} + sub sp, 0xC + ldr r1, _08128398 @ =gUnknown_3005024 + ldr r0, _0812839C @ =sub_81283E4 + str r0, [r1] + movs r0, 0xF + str r0, [sp] + ldr r0, _081283A0 @ =sub_811FB28 + str r0, [sp, 0x4] + ldr r0, _081283A4 @ =sub_80567DC + str r0, [sp, 0x8] + movs r0, 0x6 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08128398: .4byte gUnknown_3005024 +_0812839C: .4byte sub_81283E4 +_081283A0: .4byte sub_811FB28 +_081283A4: .4byte sub_80567DC + thumb_func_end sub_8128370 + + thumb_func_start sub_81283A8 +sub_81283A8: @ 81283A8 + push {lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081283D4 @ =gUnknown_3005024 + ldr r1, _081283D8 @ =sub_81283E4 + str r1, [r2] + movs r1, 0 + str r1, [sp] + ldr r1, _081283DC @ =sub_811FB28 + str r1, [sp, 0x4] + ldr r1, _081283E0 @ =sub_80567DC + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0xB + movs r3, 0 + bl sub_811EA44 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_081283D4: .4byte gUnknown_3005024 +_081283D8: .4byte sub_81283E4 +_081283DC: .4byte sub_811FB28 +_081283E0: .4byte sub_80567DC + thumb_func_end sub_81283A8 + + thumb_func_start sub_81283E4 +sub_81283E4: @ 81283E4 + push {lr} + bl sub_807DC00 + ldr r0, _081283F8 @ =sub_81283FC + movs r1, 0xA + bl sub_807741C + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_081283F8: .4byte sub_81283FC + thumb_func_end sub_81283E4 + + thumb_func_start sub_81283FC +sub_81283FC: @ 81283FC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + beq _0812841A + adds r0, r4, 0 + bl sub_8077508 + bl sub_806994C + bl sub_8069B34 +_0812841A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81283FC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pc_screen_effect.s b/asm/pc_screen_effect.s new file mode 100644 index 000000000..ab44e330a --- /dev/null +++ b/asm/pc_screen_effect.s @@ -0,0 +1,477 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0A48 +sub_80A0A48: @ 80A0A48 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _080A0A6C @ =sub_80A0B0C + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A0AC0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A0A6C: .4byte sub_80A0B0C + thumb_func_end sub_80A0A48 + + thumb_func_start sub_80A0A70 +sub_80A0A70: @ 80A0A70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _080A0A94 @ =sub_80A0C78 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80A0AC0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A0A94: .4byte sub_80A0C78 + thumb_func_end sub_80A0A70 + + thumb_func_start sub_80A0A98 +sub_80A0A98: @ 80A0A98 + push {lr} + ldr r0, _080A0AA8 @ =sub_80A0B0C + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080A0AA8: .4byte sub_80A0B0C + thumb_func_end sub_80A0A98 + + thumb_func_start sub_80A0AAC +sub_80A0AAC: @ 80A0AAC + push {lr} + ldr r0, _080A0ABC @ =sub_80A0C78 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080A0ABC: .4byte sub_80A0C78 + thumb_func_end sub_80A0AAC + + thumb_func_start sub_80A0AC0 +sub_80A0AC0: @ 80A0AC0 + push {r4,r5,lr} + lsls r1, 16 + lsrs r4, r1, 16 + adds r5, r4, 0 + lsls r3, 24 + lsrs r3, 24 + adds r1, r3, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + ldr r1, _080A0B08 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r1 + movs r0, 0 + strh r0, [r1, 0x8] + movs r0, 0x10 + cmp r4, 0 + beq _080A0AEE + adds r0, r4, 0 +_080A0AEE: + strh r0, [r1, 0xA] + movs r0, 0x14 + cmp r5, 0 + beq _080A0AF8 + adds r0, r5, 0 +_080A0AF8: + strh r0, [r1, 0xC] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A0B08: .4byte gUnknown_3005090 + thumb_func_end sub_80A0AC0 + + thumb_func_start sub_80A0B0C +sub_80A0B0C: @ 80A0B0C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A0B30 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080A0B8C + cmp r0, 0x1 + bgt _080A0B34 + cmp r0, 0 + beq _080A0B3E + b _080A0C5A + .align 2, 0 +_080A0B30: .4byte gUnknown_3005090 +_080A0B34: + cmp r0, 0x2 + beq _080A0BAE + cmp r0, 0x3 + beq _080A0C10 + b _080A0C5A +_080A0B3E: + movs r0, 0x78 + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + movs r0, 0x50 + strh r0, [r4, 0x12] + movs r0, 0x51 + strh r0, [r4, 0x14] + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0x10] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4, 0x12] + lsls r1, 8 + ldrh r0, [r4, 0x14] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + b _080A0C6A +_080A0B8C: + movs r0, 0x50 + bl sub_8000AC4 + strh r0, [r4, 0x16] + movs r0, 0x54 + bl sub_8000AC4 + strh r0, [r4, 0x18] + movs r0, 0x50 + movs r1, 0xBF + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x10 + bl sub_8000A38 + b _080A0C6A +_080A0BAE: + ldrh r0, [r4, 0xE] + ldrh r1, [r4, 0xA] + subs r0, r1 + movs r5, 0 + strh r0, [r4, 0xE] + ldrh r2, [r4, 0x10] + adds r1, r2 + strh r1, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + ble _080A0BCC + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xEF + ble _080A0BF2 +_080A0BCC: + strh r5, [r4, 0xE] + movs r0, 0xF0 + strh r0, [r4, 0x10] + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldrh r1, [r4, 0x16] + movs r0, 0x50 + bl sub_8000A38 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + movs r2, 0 + bl sub_80714D4 + ldr r0, _080A0C0C @ =gUnknown_20375F8 + strh r5, [r0] +_080A0BF2: + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0x10] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x40 + bl sub_8000A38 + movs r1, 0xE + ldrsh r0, [r4, r1] + b _080A0C54 + .align 2, 0 +_080A0C0C: .4byte gUnknown_20375F8 +_080A0C10: + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0xC] + subs r0, r1 + strh r0, [r4, 0x12] + ldrh r2, [r4, 0x14] + adds r1, r2 + strh r1, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + ble _080A0C2C + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _080A0C3E +_080A0C2C: + movs r0, 0 + strh r0, [r4, 0x12] + movs r0, 0xA0 + strh r0, [r4, 0x14] + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 +_080A0C3E: + ldrh r1, [r4, 0x12] + lsls r1, 8 + ldrh r0, [r4, 0x14] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + movs r1, 0x12 + ldrsh r0, [r4, r1] +_080A0C54: + cmp r0, 0 + bne _080A0C70 + b _080A0C6A +_080A0C5A: + ldrh r1, [r4, 0x16] + movs r0, 0x50 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8077508 + b _080A0C70 +_080A0C6A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080A0C70: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A0B0C + + thumb_func_start sub_80A0C78 +sub_80A0C78: @ 80A0C78 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080A0C9C @ =gUnknown_3005090 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080A0CB4 + cmp r1, 0x1 + bgt _080A0CA0 + cmp r1, 0 + beq _080A0CAA + b _080A0DA8 + .align 2, 0 +_080A0C9C: .4byte gUnknown_3005090 +_080A0CA0: + cmp r1, 0x2 + beq _080A0D02 + cmp r1, 0x3 + beq _080A0D54 + b _080A0DA8 +_080A0CAA: + ldr r0, _080A0CB0 @ =gUnknown_20375F8 + strh r1, [r0] + b _080A0DCA + .align 2, 0 +_080A0CB0: .4byte gUnknown_20375F8 +_080A0CB4: + movs r1, 0 + strh r1, [r4, 0xE] + movs r0, 0xF0 + strh r0, [r4, 0x10] + strh r1, [r4, 0x12] + movs r0, 0xA0 + strh r0, [r4, 0x14] + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0x10] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x40 + bl sub_8000A38 + ldrh r1, [r4, 0x12] + lsls r1, 8 + ldrh r0, [r4, 0x14] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + b _080A0DCA +_080A0D02: + ldrh r0, [r4, 0xC] + ldrh r2, [r4, 0x12] + adds r1, r0, r2 + strh r1, [r4, 0x12] + ldrh r2, [r4, 0x14] + subs r0, r2, r0 + strh r0, [r4, 0x14] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x4F + bgt _080A0D20 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x51 + bgt _080A0D38 +_080A0D20: + movs r0, 0x50 + strh r0, [r4, 0x12] + movs r0, 0x51 + strh r0, [r4, 0x14] + movs r0, 0x50 + movs r1, 0xBF + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x10 + bl sub_8000A38 +_080A0D38: + ldrh r1, [r4, 0x12] + lsls r1, 8 + ldrh r0, [r4, 0x14] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0x50 + bne _080A0DD0 + b _080A0DCA +_080A0D54: + ldrh r0, [r4, 0xA] + ldrh r2, [r4, 0xE] + adds r1, r0, r2 + strh r1, [r4, 0xE] + ldrh r2, [r4, 0x10] + subs r0, r2, r0 + strh r0, [r4, 0x10] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x77 + bgt _080A0D72 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x78 + bgt _080A0D88 +_080A0D72: + movs r0, 0x78 + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + subs r0, 0x79 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r1, _080A0DA4 @ =gUnknown_20375F8 + movs r0, 0 + strh r0, [r1] +_080A0D88: + ldrh r1, [r4, 0xE] + lsls r1, 8 + ldrh r0, [r4, 0x10] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x40 + bl sub_8000A38 + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x78 + bne _080A0DD0 + b _080A0DCA + .align 2, 0 +_080A0DA4: .4byte gUnknown_20375F8 +_080A0DA8: + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + adds r0, r5, 0 + bl sub_8077508 + b _080A0DD0 +_080A0DCA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080A0DD0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80A0C78 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/play_time.s b/asm/play_time.s new file mode 100644 index 000000000..83ebe2de9 --- /dev/null +++ b/asm/play_time.s @@ -0,0 +1,137 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8054814 +sub_8054814: @ 8054814 + ldr r1, _08054830 @ =gUnknown_3000E7C + movs r0, 0 + strb r0, [r1] + ldr r2, _08054834 @ =gUnknown_300500C + ldr r3, [r2] + movs r1, 0 + movs r0, 0 + strh r0, [r3, 0xE] + strb r1, [r3, 0x10] + ldr r0, [r2] + strb r1, [r0, 0x11] + ldr r0, [r2] + strb r1, [r0, 0x12] + bx lr + .align 2, 0 +_08054830: .4byte gUnknown_3000E7C +_08054834: .4byte gUnknown_300500C + thumb_func_end sub_8054814 + + thumb_func_start sub_8054838 +sub_8054838: @ 8054838 + push {lr} + ldr r1, _08054854 @ =gUnknown_3000E7C + movs r0, 0x1 + strb r0, [r1] + ldr r0, _08054858 @ =gUnknown_300500C + ldr r0, [r0] + ldrh r1, [r0, 0xE] + ldr r0, _0805485C @ =0x000003e7 + cmp r1, r0 + bls _08054850 + bl sub_80548D4 +_08054850: + pop {r0} + bx r0 + .align 2, 0 +_08054854: .4byte gUnknown_3000E7C +_08054858: .4byte gUnknown_300500C +_0805485C: .4byte 0x000003e7 + thumb_func_end sub_8054838 + + thumb_func_start sub_8054860 +sub_8054860: @ 8054860 + ldr r1, _08054868 @ =gUnknown_3000E7C + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08054868: .4byte gUnknown_3000E7C + thumb_func_end sub_8054860 + + thumb_func_start sub_805486C +sub_805486C: @ 805486C + push {lr} + ldr r0, _080548C8 @ =gUnknown_3000E7C + ldrb r0, [r0] + cmp r0, 0x1 + bne _080548C4 + ldr r2, _080548CC @ =gUnknown_300500C + ldr r0, [r2] + ldrb r1, [r0, 0x12] + adds r1, 0x1 + movs r3, 0 + strb r1, [r0, 0x12] + ldr r1, [r2] + ldrb r0, [r1, 0x12] + cmp r0, 0x3B + bls _080548C4 + strb r3, [r1, 0x12] + ldr r0, [r2] + ldrb r1, [r0, 0x11] + adds r1, 0x1 + strb r1, [r0, 0x11] + ldr r1, [r2] + ldrb r0, [r1, 0x11] + cmp r0, 0x3B + bls _080548C4 + strb r3, [r1, 0x11] + ldr r0, [r2] + ldrb r1, [r0, 0x10] + adds r1, 0x1 + strb r1, [r0, 0x10] + ldr r1, [r2] + ldrb r0, [r1, 0x10] + cmp r0, 0x3B + bls _080548C4 + strb r3, [r1, 0x10] + ldr r0, [r2] + ldrh r1, [r0, 0xE] + adds r1, 0x1 + strh r1, [r0, 0xE] + lsls r1, 16 + ldr r0, _080548D0 @ =0x03e70000 + cmp r1, r0 + bls _080548C4 + bl sub_80548D4 +_080548C4: + pop {r0} + bx r0 + .align 2, 0 +_080548C8: .4byte gUnknown_3000E7C +_080548CC: .4byte gUnknown_300500C +_080548D0: .4byte 0x03e70000 + thumb_func_end sub_805486C + + thumb_func_start sub_80548D4 +sub_80548D4: @ 80548D4 + ldr r1, _080548F0 @ =gUnknown_3000E7C + movs r0, 0x2 + strb r0, [r1] + ldr r2, _080548F4 @ =gUnknown_300500C + ldr r3, [r2] + ldr r0, _080548F8 @ =0x000003e7 + strh r0, [r3, 0xE] + movs r1, 0x3B + strb r1, [r3, 0x10] + ldr r0, [r2] + strb r1, [r0, 0x11] + ldr r0, [r2] + strb r1, [r0, 0x12] + bx lr + .align 2, 0 +_080548F0: .4byte gUnknown_3000E7C +_080548F4: .4byte gUnknown_300500C +_080548F8: .4byte 0x000003e7 + thumb_func_end sub_80548D4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/player_pc.s b/asm/player_pc.s new file mode 100644 index 000000000..74c94642f --- /dev/null +++ b/asm/player_pc.s @@ -0,0 +1,1919 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80EB658 +sub_80EB658: @ 80EB658 + push {r4-r6,lr} + movs r4, 0 + bl sub_809A2A4 + ldr r1, _080EB6A8 @ =gUnknown_8402220 + ldrh r0, [r1] + cmp r0, 0 + beq _080EB6A0 + ldrh r0, [r1, 0x2] + cmp r0, 0 + beq _080EB6A0 + adds r5, r1, 0 + adds r6, r5, 0x2 +_080EB672: + lsls r1, r4, 2 + adds r0, r1, r5 + ldrh r0, [r0] + adds r1, r6 + ldrh r1, [r1] + bl sub_809A3C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080EB6A0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, r4, 2 + adds r0, r1, r5 + ldrh r0, [r0] + cmp r0, 0 + beq _080EB6A0 + adds r0, r1, r6 + ldrh r0, [r0] + cmp r0, 0 + bne _080EB672 +_080EB6A0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EB6A8: .4byte gUnknown_8402220 + thumb_func_end sub_80EB658 + + thumb_func_start sub_80EB6AC +sub_80EB6AC: @ 80EB6AC + push {lr} + ldr r1, _080EB6E0 @ =gUnknown_203AAC4 + movs r0, 0 + strb r0, [r1, 0x9] + bl sub_812B234 + ldr r1, _080EB6E4 @ =gUnknown_203AABC + ldr r0, _080EB6E8 @ =gUnknown_8402200 + str r0, [r1] + ldr r1, _080EB6EC @ =gUnknown_203AAC0 + movs r0, 0x3 + strb r0, [r1] + ldr r0, _080EB6F0 @ =nullsub_43 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EB6F4 @ =gUnknown_8416262 + ldr r3, _080EB6F8 @ =sub_80EB74C + movs r1, 0x2 + bl sub_80F7808 + pop {r0} + bx r0 + .align 2, 0 +_080EB6E0: .4byte gUnknown_203AAC4 +_080EB6E4: .4byte gUnknown_203AABC +_080EB6E8: .4byte gUnknown_8402200 +_080EB6EC: .4byte gUnknown_203AAC0 +_080EB6F0: .4byte nullsub_43 +_080EB6F4: .4byte gUnknown_8416262 +_080EB6F8: .4byte sub_80EB74C + thumb_func_end sub_80EB6AC + + thumb_func_start sub_80EB6FC +sub_80EB6FC: @ 80EB6FC + push {lr} + ldr r1, _080EB730 @ =gUnknown_203AAC4 + movs r0, 0x1 + strb r0, [r1, 0x9] + bl sub_812B234 + ldr r1, _080EB734 @ =gUnknown_203AABC + ldr r0, _080EB738 @ =gUnknown_8402203 + str r0, [r1] + ldr r1, _080EB73C @ =gUnknown_203AAC0 + movs r0, 0x3 + strb r0, [r1] + ldr r0, _080EB740 @ =nullsub_43 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EB744 @ =gUnknown_8416262 + ldr r3, _080EB748 @ =sub_80EB74C + movs r1, 0x2 + bl sub_80F7808 + pop {r0} + bx r0 + .align 2, 0 +_080EB730: .4byte gUnknown_203AAC4 +_080EB734: .4byte gUnknown_203AABC +_080EB738: .4byte gUnknown_8402203 +_080EB73C: .4byte gUnknown_203AAC0 +_080EB740: .4byte nullsub_43 +_080EB744: .4byte gUnknown_8416262 +_080EB748: .4byte sub_80EB74C + thumb_func_end sub_80EB6FC + + thumb_func_start sub_80EB74C +sub_80EB74C: @ 80EB74C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r0, 2 + add r0, r8 + lsls r0, 3 + ldr r1, _080EB770 @ =gUnknown_3005098 + adds r7, r0, r1 + ldr r0, _080EB774 @ =gUnknown_203AAC0 + ldrb r0, [r0] + cmp r0, 0x3 + bne _080EB77C + ldr r0, _080EB778 @ =gUnknown_8402248 + b _080EB77E + .align 2, 0 +_080EB770: .4byte gUnknown_3005098 +_080EB774: .4byte gUnknown_203AAC0 +_080EB778: .4byte gUnknown_8402248 +_080EB77C: + ldr r0, _080EB804 @ =gUnknown_8402250 +_080EB77E: + bl sub_8003CE4 + strh r0, [r7, 0x14] + ldrb r0, [r7, 0x14] + movs r1, 0 + bl sub_80F7750 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r7, 0x14] + str r0, [sp] + movs r6, 0x10 + str r6, [sp, 0x4] + ldr r5, _080EB808 @ =gUnknown_203AAC0 + ldrb r0, [r5] + str r0, [sp, 0x8] + ldr r0, _080EB80C @ =gUnknown_84021E8 + str r0, [sp, 0xC] + ldr r0, _080EB810 @ =gUnknown_203AABC + ldr r0, [r0] + str r0, [sp, 0x10] + adds r0, r1, 0 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_810FCD0 + ldrb r0, [r7, 0x14] + str r6, [sp] + ldrb r1, [r5] + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0 + bl sub_80F67A4 + ldr r1, _080EB814 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EB818 @ =sub_80EB81C + str r1, [r0] + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EB804: .4byte gUnknown_8402250 +_080EB808: .4byte gUnknown_203AAC0 +_080EB80C: .4byte gUnknown_84021E8 +_080EB810: .4byte gUnknown_203AABC +_080EB814: .4byte gUnknown_3005090 +_080EB818: .4byte sub_80EB81C + thumb_func_end sub_80EB74C + + thumb_func_start sub_80EB81C +sub_80EB81C: @ 80EB81C + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _080EB870 @ =gUnknown_3005098 + adds r4, r6, r7 + bl sub_810FA04 + lsls r0, 24 + asrs r5, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _080EB8AC + adds r0, 0x1 + cmp r5, r0 + bne _080EB878 + movs r0, 0x5 + bl sub_80722CC + ldrb r0, [r4, 0x14] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4, 0x14] + bl sub_80040B8 + ldrb r0, [r4, 0x14] + bl sub_8003E3C + movs r0, 0 + bl sub_80F67A4 + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _080EB874 @ =sub_80EB9B8 + str r1, [r0] + b _080EB8AC + .align 2, 0 +_080EB870: .4byte gUnknown_3005098 +_080EB874: .4byte sub_80EB9B8 +_080EB878: + ldrb r0, [r4, 0x14] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4, 0x14] + bl sub_80040B8 + ldrb r0, [r4, 0x14] + bl sub_8003E3C + movs r0, 0 + bl sub_80F67A4 + adds r2, r7, 0 + subs r2, 0x8 + adds r2, r6, r2 + ldr r1, _080EB8B4 @ =gUnknown_84021E8 + ldr r0, _080EB8B8 @ =gUnknown_203AABC + ldr r0, [r0] + adds r0, r5 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] +_080EB8AC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EB8B4: .4byte gUnknown_84021E8 +_080EB8B8: .4byte gUnknown_203AABC + thumb_func_end sub_80EB81C + + thumb_func_start sub_80EB8BC +sub_80EB8BC: @ 80EB8BC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_812B248 + ldr r2, _080EB8DC @ =gUnknown_8416262 + ldr r3, _080EB8E0 @ =sub_80EB74C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F7808 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EB8DC: .4byte gUnknown_8416262 +_080EB8E0: .4byte sub_80EB74C + thumb_func_end sub_80EB8BC + + thumb_func_start sub_80EB8E4 +sub_80EB8E4: @ 80EB8E4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_80EB9E8 + ldr r1, _080EB908 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EB90C @ =sub_80EBAB8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EB908: .4byte gUnknown_3005090 +_080EB90C: .4byte sub_80EBAB8 + thumb_func_end sub_80EB8E4 + + thumb_func_start sub_80EB910 +sub_80EB910: @ 80EB910 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_80EBDC8 + ldr r4, _080EB934 @ =gUnknown_203AAC4 + movs r1, 0 + strb r0, [r4, 0x5] + lsls r0, 24 + cmp r0, 0 + bne _080EB940 + ldr r2, _080EB938 @ =gUnknown_84177EE + ldr r3, _080EB93C @ =sub_80EB8BC + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F7808 + b _080EB9A8 + .align 2, 0 +_080EB934: .4byte gUnknown_203AAC4 +_080EB938: .4byte gUnknown_84177EE +_080EB93C: .4byte sub_80EB8BC +_080EB940: + strh r1, [r4] + strh r1, [r4, 0x2] + bl sub_80EBE04 + adds r0, r5, 0 + bl sub_80EBD88 + ldrb r0, [r4, 0x9] + cmp r0, 0 + bne _080EB95C + movs r0, 0x22 + bl sub_812B1F0 + b _080EB962 +_080EB95C: + movs r0, 0x1E + bl sub_812B1F0 +_080EB962: + ldr r0, _080EB990 @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x5] + bl sub_810EB6C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080EB99C + movs r0, 0 + movs r1, 0 + bl sub_80F6F54 + adds r0, r5, 0 + bl sub_80EBEB0 + ldr r0, _080EB994 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080EB998 @ =sub_80EBF40 + str r0, [r1] + b _080EB9A8 + .align 2, 0 +_080EB990: .4byte gUnknown_203AAC4 +_080EB994: .4byte gUnknown_3005090 +_080EB998: .4byte sub_80EBF40 +_080EB99C: + ldr r2, _080EB9B0 @ =gUnknown_84177EE + ldr r3, _080EB9B4 @ =sub_80EB8BC + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F7808 +_080EB9A8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EB9B0: .4byte gUnknown_84177EE +_080EB9B4: .4byte sub_80EB8BC + thumb_func_end sub_80EB910 + + thumb_func_start sub_80EB9B8 +sub_80EB9B8: @ 80EB9B8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080EB9D0 @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _080EB9D8 + ldr r0, _080EB9D4 @ =gUnknown_8168D17 + bl sub_8069AE4 + b _080EB9DC + .align 2, 0 +_080EB9D0: .4byte gUnknown_203AAC4 +_080EB9D4: .4byte gUnknown_8168D17 +_080EB9D8: + bl sub_8069B34 +_080EB9DC: + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80EB9B8 + + thumb_func_start sub_80EB9E8 +sub_80EB9E8: @ 80EB9E8 + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080EBA10 @ =gUnknown_3005098 + adds r6, r1, r0 + ldr r0, _080EBA14 @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _080EBA18 + movs r0, 0x21 + bl sub_812B1F0 + b _080EBA1E + .align 2, 0 +_080EBA10: .4byte gUnknown_3005098 +_080EBA14: .4byte gUnknown_203AAC4 +_080EBA18: + movs r0, 0x1D + bl sub_812B1F0 +_080EBA1E: + ldr r0, _080EBA80 @ =gUnknown_8402258 + bl sub_8003CE4 + strh r0, [r6, 0x14] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80F7750 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r6, 0x14] + movs r5, 0x10 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + ldr r1, _080EBA84 @ =gUnknown_8402208 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x2 + bl sub_810FB6C + ldrb r0, [r6, 0x14] + str r5, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0 + bl sub_80F67A4 + ldr r1, _080EBA88 @ =gUnknown_84021DC + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_80EBA8C + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EBA80: .4byte gUnknown_8402258 +_080EBA84: .4byte gUnknown_8402208 +_080EBA88: .4byte gUnknown_84021DC + thumb_func_end sub_80EB9E8 + + thumb_func_start sub_80EBA8C +sub_80EBA8C: @ 80EBA8C + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_8002C48 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80EBA8C + + thumb_func_start sub_80EBAB8 +sub_80EBAB8: @ 80EBAB8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, r5, 0 + ldr r2, _080EBAE4 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080EBAE8 + bl sub_810F98C + lsls r0, 24 + cmp r0, 0 + beq _080EBB64 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + b _080EBB04 + .align 2, 0 +_080EBAE4: .4byte gUnknown_30030F0 +_080EBAE8: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080EBB20 + bl sub_810F98C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080EBB64 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 +_080EBB04: + bl sub_810F904 + ldr r4, _080EBB1C @ =gUnknown_84021DC + bl sub_810F98C + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r0, [r0] + bl sub_80EBA8C + b _080EBB64 + .align 2, 0 +_080EBB1C: .4byte gUnknown_84021DC +_080EBB20: + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080EBB4C + movs r0, 0x5 + bl sub_80722CC + ldr r4, _080EBB48 @ =gUnknown_8402208 + bl sub_810F98C + lsls r0, 24 + lsrs r0, 21 + adds r4, 0x4 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + b _080EBB64 + .align 2, 0 +_080EBB48: .4byte gUnknown_8402208 +_080EBB4C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080EBB64 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080EBB6C @ =gUnknown_8402208 + ldr r1, [r0, 0x14] + adds r0, r4, 0 + bl _call_via_r1 +_080EBB64: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EBB6C: .4byte gUnknown_8402208 + thumb_func_end sub_80EBAB8 + + thumb_func_start sub_80EBB70 +sub_80EBB70: @ 80EBB70 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080EBBA4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080EBB9C + bl sub_80563F0 + ldr r2, _080EBBA8 @ =sub_80567DC + movs r0, 0x3 + movs r1, 0 + bl sub_8107DB4 + ldr r1, _080EBBAC @ =gUnknown_3005020 + ldr r0, _080EBBB0 @ =sub_80EBC0C + str r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_080EBB9C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EBBA4: .4byte gUnknown_2037AB8 +_080EBBA8: .4byte sub_80567DC +_080EBBAC: .4byte gUnknown_3005020 +_080EBBB0: .4byte sub_80EBC0C + thumb_func_end sub_80EBB70 + + thumb_func_start sub_80EBBB4 +sub_80EBBB4: @ 80EBBB4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EBBD4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080EBBD8 @ =sub_80EBB70 + str r0, [r1] + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + pop {r0} + bx r0 + .align 2, 0 +_080EBBD4: .4byte gUnknown_3005090 +_080EBBD8: .4byte sub_80EBB70 + thumb_func_end sub_80EBBB4 + + thumb_func_start sub_80EBBDC +sub_80EBBDC: @ 80EBBDC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080EBBFC + ldr r0, _080EBC04 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080EBC08 @ =sub_80EBAB8 + str r0, [r1] +_080EBBFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EBC04: .4byte gUnknown_3005090 +_080EBC08: .4byte sub_80EBAB8 + thumb_func_end sub_80EBBDC + + thumb_func_start sub_80EBC0C +sub_80EBC0C: @ 80EBC0C + push {lr} + bl sub_80F6E9C + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 + ldr r0, _080EBC34 @ =sub_80EBBDC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_80EB9E8 + bl sub_807DC00 + pop {r0} + bx r0 + .align 2, 0 +_080EBC34: .4byte sub_80EBBDC + thumb_func_end sub_80EBC0C + + thumb_func_start sub_80EBC38 +sub_80EBC38: @ 80EBC38 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r6, r0, 3 + ldr r7, _080EBC6C @ =gUnknown_3005098 + adds r4, r6, r7 + bl sub_809A33C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x4] + cmp r0, 0 + beq _080EBC7C + movs r0, 0 + strh r0, [r4, 0xC] + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _080EBC70 @ =sub_80EBD18 + str r1, [r0] + ldr r1, _080EBC74 @ =gUnknown_3005020 + ldr r0, _080EBC78 @ =sub_80EBCAC + str r0, [r1] + b _080EBC9C + .align 2, 0 +_080EBC6C: .4byte gUnknown_3005098 +_080EBC70: .4byte sub_80EBD18 +_080EBC74: .4byte gUnknown_3005020 +_080EBC78: .4byte sub_80EBCAC +_080EBC7C: + ldrb r0, [r4, 0x14] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4, 0x14] + bl sub_80040B8 + ldrb r0, [r4, 0x14] + bl sub_8003E3C + ldr r2, _080EBCA4 @ =gUnknown_8417774 + ldr r3, _080EBCA8 @ =sub_80EB8E4 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F7808 +_080EBC9C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EBCA4: .4byte gUnknown_8417774 +_080EBCA8: .4byte sub_80EB8E4 + thumb_func_end sub_80EBC38 + + thumb_func_start sub_80EBCAC +sub_80EBCAC: @ 80EBCAC + push {lr} + bl sub_80F6E9C + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 + ldr r0, _080EBCD4 @ =sub_80EBBDC + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80EB9E8 + bl sub_807DC00 + pop {r0} + bx r0 + .align 2, 0 +_080EBCD4: .4byte sub_80EBBDC + thumb_func_end sub_80EBCAC + + thumb_func_start sub_80EBCD8 +sub_80EBCD8: @ 80EBCD8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080EBD0C @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _080EBD10 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080EBD06 + bl sub_80563F0 + ldrb r0, [r5, 0xC] + ldr r1, _080EBD14 @ =sub_80567DC + bl sub_810D3F4 + adds r0, r4, 0 + bl sub_8077508 +_080EBD06: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EBD0C: .4byte gUnknown_3005098 +_080EBD10: .4byte gUnknown_2037AB8 +_080EBD14: .4byte sub_80567DC + thumb_func_end sub_80EBCD8 + + thumb_func_start sub_80EBD18 +sub_80EBD18: @ 80EBD18 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EBD40 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080EBD44 @ =sub_80EBCD8 + str r0, [r1] + movs r0, 0 + bl sub_810DE94 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + pop {r0} + bx r0 + .align 2, 0 +_080EBD40: .4byte gUnknown_3005090 +_080EBD44: .4byte sub_80EBCD8 + thumb_func_end sub_80EBD18 + + thumb_func_start sub_80EBD48 +sub_80EBD48: @ 80EBD48 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _080EBD84 @ =gUnknown_3005098 + adds r4, r0 + ldrb r0, [r4, 0x14] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4, 0x14] + bl sub_80040B8 + ldrb r0, [r4, 0x14] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r4, 0x14] + bl sub_8003E3C + adds r0, r5, 0 + bl sub_80EB8BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EBD84: .4byte gUnknown_3005098 + thumb_func_end sub_80EBD48 + + thumb_func_start sub_80EBD88 +sub_80EBD88: @ 80EBD88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080EBDA8 @ =gUnknown_3005098 + adds r1, r0 + ldrh r2, [r1, 0x4] + movs r3, 0x4 + ldrsh r0, [r1, r3] + cmp r0, 0x7 + ble _080EBDAC + movs r0, 0x8 + b _080EBDAE + .align 2, 0 +_080EBDA8: .4byte gUnknown_3005098 +_080EBDAC: + adds r0, r2, 0x1 +_080EBDAE: + strh r0, [r1, 0x8] + ldr r1, _080EBDBC @ =gUnknown_203AAC4 + ldrb r0, [r1, 0x5] + cmp r0, 0x7 + bls _080EBDC0 + movs r0, 0x8 + b _080EBDC2 + .align 2, 0 +_080EBDBC: .4byte gUnknown_203AAC4 +_080EBDC0: + adds r0, 0x1 +_080EBDC2: + strb r0, [r1, 0x4] + pop {r0} + bx r0 + thumb_func_end sub_80EBD88 + + thumb_func_start sub_80EBDC8 +sub_80EBDC8: @ 80EBDC8 + push {r4,lr} + movs r2, 0 + movs r1, 0x6 + ldr r0, _080EBDFC @ =gUnknown_3005008 + ldr r3, [r0] + ldr r4, _080EBE00 @ =0x00002cf0 +_080EBDD4: + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3, r0 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0 + beq _080EBDEA + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_080EBDEA: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _080EBDD4 + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080EBDFC: .4byte gUnknown_3005008 +_080EBE00: .4byte 0x00002cf0 + thumb_func_end sub_80EBDC8 + + thumb_func_start sub_80EBE04 +sub_80EBE04: @ 80EBE04 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + movs r2, 0x6 +_080EBE12: + adds r1, r2, 0x1 + lsls r0, r1, 24 + lsrs r4, r0, 24 + mov r8, r1 + cmp r4, 0xF + bhi _080EBE8A + ldr r0, _080EBEA4 @ =gUnknown_3005008 + mov r10, r0 + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + mov r12, r0 + ldr r6, _080EBEA8 @ =0x00002cd0 +_080EBE2C: + mov r1, r10 + ldr r1, [r1] + mov r9, r1 + mov r2, r9 + add r2, r12 + ldr r3, _080EBEAC @ =0x00002cf0 + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, 0 + bne _080EBE80 + adds r2, r6 + mov r1, sp + adds r0, r2, 0 + ldm r0!, {r3,r5,r7} + stm r1!, {r3,r5,r7} + ldm r0!, {r3,r5,r7} + stm r1!, {r3,r5,r7} + ldm r0!, {r3,r5,r7} + stm r1!, {r3,r5,r7} + lsls r3, r4, 3 + adds r3, r4 + lsls r3, 2 + mov r5, r9 + adds r0, r5, r3 + adds r0, r6 + ldm r0!, {r1,r5,r7} + stm r2!, {r1,r5,r7} + ldm r0!, {r1,r5,r7} + stm r2!, {r1,r5,r7} + ldm r0!, {r1,r5,r7} + stm r2!, {r1,r5,r7} + mov r7, r10 + ldr r1, [r7] + adds r1, r3 + adds r1, r6 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} +_080EBE80: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080EBE2C +_080EBE8A: + mov r3, r8 + lsls r0, r3, 24 + lsrs r2, r0, 24 + cmp r2, 0xE + bls _080EBE12 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EBEA4: .4byte gUnknown_3005008 +_080EBEA8: .4byte 0x00002cd0 +_080EBEAC: .4byte 0x00002cf0 + thumb_func_end sub_80EBE04 + + thumb_func_start sub_80EBEB0 +sub_80EBEB0: @ 80EBEB0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0 + bl sub_810EBAC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080EBF34 @ =gUnknown_84176FE + mov r8, r0 + movs r0, 0x2 + mov r1, r8 + movs r2, 0 + bl sub_8005ED4 + adds r5, r0, 0 + movs r0, 0x1 + bl sub_810EBAC + movs r3, 0x50 + subs r3, r5 + lsrs r0, r3, 31 + adds r3, r0 + asrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x2 + mov r2, r8 + bl sub_8002C48 + movs r0, 0 + bl sub_80F67A4 + ldr r4, _080EBF38 @ =gUnknown_203AAC4 + adds r0, r4, 0 + bl sub_810EC98 + ldr r2, _080EBF3C @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x1E] + adds r0, r4, 0 + bl sub_810ED80 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EBF34: .4byte gUnknown_84176FE +_080EBF38: .4byte gUnknown_203AAC4 +_080EBF3C: .4byte gUnknown_3005090 + thumb_func_end sub_80EBEB0 + + thumb_func_start sub_80EBF40 +sub_80EBF40: @ 80EBF40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + mov r9, r0 + ldr r0, _080EBF94 @ =gUnknown_3005098 + mov r10, r0 + mov r4, r9 + add r4, r10 + ldr r0, _080EBF98 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080EBFEA + ldrb r0, [r4, 0x16] + bl sub_8107078 + adds r6, r0, 0 + ldrb r0, [r4, 0x16] + ldr r7, _080EBF9C @ =gUnknown_203AAC6 + subs r1, r7, 0x2 + mov r8, r1 + adds r1, r7, 0 + mov r2, r8 + bl sub_81072D4 + movs r0, 0x2 + negs r0, r0 + cmp r6, r0 + beq _080EBFA0 + adds r0, 0x1 + cmp r6, r0 + bne _080EBFB6 + b _080EBFEA + .align 2, 0 +_080EBF94: .4byte gUnknown_3005098 +_080EBF98: .4byte gUnknown_2037AB8 +_080EBF9C: .4byte gUnknown_203AAC6 +_080EBFA0: + movs r0, 0x5 + bl sub_80722CC + mov r1, r8 + ldrb r0, [r1, 0xA] + bl sub_8133C30 + adds r0, r5, 0 + bl sub_80EC094 + b _080EBFEA +_080EBFB6: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_810EBE0 + movs r0, 0x1 + bl sub_810EBE0 + ldrb r0, [r4, 0x16] + adds r1, r7, 0 + mov r2, r8 + bl sub_810713C + movs r0, 0 + bl sub_80F67A4 + mov r1, r8 + ldrb r0, [r1, 0xA] + bl sub_8133C30 + mov r0, r10 + subs r0, 0x8 + add r0, r9 + ldr r1, _080EBFF8 @ =sub_80EBFFC + str r1, [r0] +_080EBFEA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080EBFF8: .4byte sub_80EBFFC + thumb_func_end sub_80EBF40 + + thumb_func_start sub_80EBFFC +sub_80EBFFC: @ 80EBFFC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080EC054 @ =gUnknown_2021CD0 + ldr r2, _080EC058 @ =gUnknown_3005008 + ldr r1, _080EC05C @ =gUnknown_203AAC4 + ldrh r0, [r1] + adds r0, 0x6 + ldrh r1, [r1, 0x2] + adds r0, r1 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, [r2] + adds r1, r0 + ldr r0, _080EC060 @ =0x00002ce2 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008D84 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x5 + ble _080EC064 + subs r0, r4, 0x1 + adds r1, r0 + cmp r1, r4 + bcc _080EC06C + ldrb r0, [r1] + cmp r0, 0 + bne _080EC06C + movs r3, 0xFF + adds r2, r4, 0 +_080EC044: + strb r3, [r1] + subs r1, 0x1 + cmp r1, r2 + bcc _080EC06C + ldrb r0, [r1] + cmp r0, 0 + beq _080EC044 + b _080EC06C + .align 2, 0 +_080EC054: .4byte gUnknown_2021CD0 +_080EC058: .4byte gUnknown_3005008 +_080EC05C: .4byte gUnknown_203AAC4 +_080EC060: .4byte 0x00002ce2 +_080EC064: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80093BC +_080EC06C: + ldr r4, _080EC088 @ =gUnknown_2021D18 + ldr r1, _080EC08C @ =gUnknown_8417806 + adds r0, r4, 0 + bl sub_8008FCC + ldr r3, _080EC090 @ =sub_80EC0D8 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F7808 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EC088: .4byte gUnknown_2021D18 +_080EC08C: .4byte gUnknown_8417806 +_080EC090: .4byte sub_80EC0D8 + thumb_func_end sub_80EBFFC + + thumb_func_start sub_80EC094 +sub_80EC094: @ 80EC094 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _080EC0D4 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + bl sub_810EBE0 + movs r0, 0x1 + bl sub_810EBE0 + ldrb r0, [r4, 0x16] + movs r1, 0 + movs r2, 0 + bl sub_810713C + movs r0, 0 + bl sub_80F67A4 + bl sub_810EDB0 + adds r0, r5, 0 + bl sub_80EB8BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080EC0D4: .4byte gUnknown_3005098 + thumb_func_end sub_80EC094 + + thumb_func_start sub_80EC0D8 +sub_80EC0D8: @ 80EC0D8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x2 + bl sub_810EBAC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x10 + mov r8, r0 + str r0, [sp] + movs r6, 0x4 + str r6, [sp, 0x4] + ldr r0, _080EC150 @ =gUnknown_8402228 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x2 + movs r3, 0x2 + bl sub_810FB6C + mov r0, r8 + str r0, [sp] + str r6, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0 + bl sub_80F67A4 + ldr r1, _080EC154 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EC158 @ =sub_80EC15C + str r1, [r0] + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EC150: .4byte gUnknown_8402228 +_080EC154: .4byte gUnknown_3005090 +_080EC158: .4byte sub_80EC15C + thumb_func_end sub_80EC0D8 + + thumb_func_start sub_80EC15C +sub_80EC15C: @ 80EC15C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_810FA84 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _080EC19E + adds r0, 0x1 + cmp r4, r0 + bne _080EC188 + movs r0, 0x5 + bl sub_80722CC + adds r0, r5, 0 + bl sub_80EC574 + b _080EC19E +_080EC188: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _080EC1A4 @ =gUnknown_8402228 + lsls r1, r4, 3 + adds r0, 0x4 + adds r1, r0 + ldr r1, [r1] + adds r0, r6, 0 + bl _call_via_r1 +_080EC19E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EC1A4: .4byte gUnknown_8402228 + thumb_func_end sub_80EC15C + + thumb_func_start sub_80EC1A8 +sub_80EC1A8: @ 80EC1A8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r1, _080EC1CC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EC1D0 @ =sub_80EC1D4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC1CC: .4byte gUnknown_3005090 +_080EC1D0: .4byte sub_80EC1D4 + thumb_func_end sub_80EC1A8 + + thumb_func_start sub_80EC1D4 +sub_80EC1D4: @ 80EC1D4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080EC21C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080EC216 + bl sub_810EDB0 + bl sub_80563F0 + ldr r2, _080EC220 @ =gUnknown_3005008 + ldr r1, _080EC224 @ =gUnknown_203AAC4 + ldrh r0, [r1] + adds r0, 0x6 + ldrh r1, [r1, 0x2] + adds r0, r1 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _080EC228 @ =0x00002cd0 + adds r1, r0 + ldr r0, [r2] + adds r0, r1 + ldr r1, _080EC22C @ =sub_80EC2C0 + movs r2, 0x1 + bl sub_80BEBEC + adds r0, r4, 0 + bl sub_8077508 +_080EC216: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC21C: .4byte gUnknown_2037AB8 +_080EC220: .4byte gUnknown_3005008 +_080EC224: .4byte gUnknown_203AAC4 +_080EC228: .4byte 0x00002cd0 +_080EC22C: .4byte sub_80EC2C0 + thumb_func_end sub_80EC1D4 + + thumb_func_start sub_80EC230 +sub_80EC230: @ 80EC230 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080EC250 + ldr r0, _080EC258 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080EC25C @ =sub_80EBF40 + str r0, [r1] +_080EC250: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC258: .4byte gUnknown_3005090 +_080EC25C: .4byte sub_80EBF40 + thumb_func_end sub_80EC230 + + thumb_func_start sub_80EC260 +sub_80EC260: @ 80EC260 + push {r4,lr} + ldr r0, _080EC274 @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _080EC278 + movs r0, 0x22 + bl sub_812B1F0 + b _080EC27E + .align 2, 0 +_080EC274: .4byte gUnknown_203AAC4 +_080EC278: + movs r0, 0x1E + bl sub_812B1F0 +_080EC27E: + bl sub_80F6E9C + ldr r0, _080EC2A8 @ =sub_80EC230 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080EC2AC @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x5] + bl sub_810EB6C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080EC2B0 + adds r0, r4, 0 + bl sub_80EBEB0 + b _080EC2B6 + .align 2, 0 +_080EC2A8: .4byte sub_80EC230 +_080EC2AC: .4byte gUnknown_203AAC4 +_080EC2B0: + adds r0, r4, 0 + bl sub_8077508 +_080EC2B6: + bl sub_807DC00 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80EC260 + + thumb_func_start sub_80EC2C0 +sub_80EC2C0: @ 80EC2C0 + push {lr} + ldr r0, _080EC2D4 @ =gUnknown_3005020 + ldr r1, _080EC2D8 @ =sub_80EC260 + str r1, [r0] + ldr r0, _080EC2DC @ =sub_80567DC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080EC2D4: .4byte gUnknown_3005020 +_080EC2D8: .4byte sub_80EC260 +_080EC2DC: .4byte sub_80567DC + thumb_func_end sub_80EC2C0 + + thumb_func_start sub_80EC2E0 +sub_80EC2E0: @ 80EC2E0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EC2F4 @ =gUnknown_8417830 + ldr r3, _080EC2F8 @ =sub_80EC2FC + movs r1, 0x2 + bl sub_80F7808 + pop {r0} + bx r0 + .align 2, 0 +_080EC2F4: .4byte gUnknown_8417830 +_080EC2F8: .4byte sub_80EC2FC + thumb_func_end sub_80EC2E0 + + thumb_func_start sub_80EC2FC +sub_80EC2FC: @ 80EC2FC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F7858 + ldr r1, _080EC31C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EC320 @ =sub_80EC324 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC31C: .4byte gUnknown_3005090 +_080EC320: .4byte sub_80EC324 + thumb_func_end sub_80EC2FC + + thumb_func_start sub_80EC324 +sub_80EC324: @ 80EC324 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r0, 24 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _080EC350 + cmp r0, r1 + ble _080EC35C + cmp r0, 0 + beq _080EC348 + cmp r0, 0x1 + beq _080EC356 + b _080EC35C +_080EC348: + adds r0, r4, 0 + bl sub_80EC364 + b _080EC35C +_080EC350: + movs r0, 0x5 + bl sub_80722CC +_080EC356: + adds r0, r4, 0 + bl sub_80EC3F8 +_080EC35C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80EC324 + + thumb_func_start sub_80EC364 +sub_80EC364: @ 80EC364 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _080EC3A0 @ =gUnknown_3005008 + ldr r4, _080EC3A4 @ =gUnknown_203AAC4 + ldrh r1, [r4] + adds r1, 0x6 + ldrh r0, [r4, 0x2] + adds r1, r0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080EC3A8 @ =0x00002cd0 + adds r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldrh r0, [r5, 0x20] + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + cmp r0, 0 + bne _080EC3B4 + ldr r2, _080EC3AC @ =gUnknown_8417858 + ldr r3, _080EC3B0 @ =sub_80EC574 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_80F7808 + b _080EC3EA + .align 2, 0 +_080EC3A0: .4byte gUnknown_3005008 +_080EC3A4: .4byte gUnknown_203AAC4 +_080EC3A8: .4byte 0x00002cd0 +_080EC3AC: .4byte gUnknown_8417858 +_080EC3B0: .4byte sub_80EC574 +_080EC3B4: + ldr r2, _080EC3F0 @ =gUnknown_841786B + ldr r3, _080EC3F4 @ =sub_80EC574 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_80F7808 + adds r0, r5, 0 + bl sub_8097CB4 + bl sub_80EBE04 + ldrb r0, [r4, 0x5] + subs r0, 0x1 + strb r0, [r4, 0x5] + ldrb r1, [r4, 0x5] + ldrb r0, [r4, 0x4] + ldrh r2, [r4, 0x2] + adds r0, r2 + cmp r1, r0 + bge _080EC3E4 + cmp r2, 0 + beq _080EC3E4 + subs r0, r2, 0x1 + strh r0, [r4, 0x2] +_080EC3E4: + adds r0, r6, 0 + bl sub_80EBD88 +_080EC3EA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080EC3F0: .4byte gUnknown_841786B +_080EC3F4: .4byte sub_80EC574 + thumb_func_end sub_80EC364 + + thumb_func_start sub_80EC3F8 +sub_80EC3F8: @ 80EC3F8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80EC574 + pop {r0} + bx r0 + thumb_func_end sub_80EC3F8 + + thumb_func_start sub_80EC408 +sub_80EC408: @ 80EC408 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _080EC420 + adds r0, r4, 0 + bl sub_80EC520 + b _080EC436 +_080EC420: + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r0, _080EC43C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080EC440 @ =sub_80EC444 + str r0, [r1] +_080EC436: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC43C: .4byte gUnknown_3005090 +_080EC440: .4byte sub_80EC444 + thumb_func_end sub_80EC408 + + thumb_func_start sub_80EC444 +sub_80EC444: @ 80EC444 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080EC470 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080EC468 + bl sub_810EDB0 + bl sub_80563F0 + bl sub_81273D8 + adds r0, r4, 0 + bl sub_8077508 +_080EC468: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC470: .4byte gUnknown_2037AB8 + thumb_func_end sub_80EC444 + + thumb_func_start sub_80EC474 +sub_80EC474: @ 80EC474 + push {r4-r6,lr} + ldr r0, _080EC488 @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _080EC48C + movs r0, 0x22 + bl sub_812B1F0 + b _080EC492 + .align 2, 0 +_080EC488: .4byte gUnknown_203AAC4 +_080EC48C: + movs r0, 0x1E + bl sub_812B1F0 +_080EC492: + ldr r0, _080EC4E8 @ =sub_80EC230 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _080EC4EC @ =gUnknown_203AAC4 + ldrb r4, [r5, 0x5] + bl sub_80EBDC8 + strb r0, [r5, 0x5] + bl sub_80EBE04 + ldrb r0, [r5, 0x5] + cmp r4, r0 + beq _080EC4C6 + ldrb r1, [r5, 0x5] + ldrb r0, [r5, 0x4] + ldrh r2, [r5, 0x2] + adds r0, r2 + cmp r1, r0 + bge _080EC4C6 + cmp r2, 0 + beq _080EC4C6 + subs r0, r2, 0x1 + strh r0, [r5, 0x2] +_080EC4C6: + adds r0, r6, 0 + bl sub_80EBD88 + bl sub_80F6E9C + ldr r0, _080EC4EC @ =gUnknown_203AAC4 + ldrb r0, [r0, 0x5] + bl sub_810EB6C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080EC4F0 + adds r0, r6, 0 + bl sub_80EBEB0 + b _080EC4F6 + .align 2, 0 +_080EC4E8: .4byte sub_80EC230 +_080EC4EC: .4byte gUnknown_203AAC4 +_080EC4F0: + adds r0, r6, 0 + bl sub_8077508 +_080EC4F6: + bl sub_807DC00 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80EC474 + + thumb_func_start sub_80EC500 +sub_80EC500: @ 80EC500 + push {lr} + ldr r0, _080EC514 @ =gUnknown_3005020 + ldr r1, _080EC518 @ =sub_80EC474 + str r1, [r0] + ldr r0, _080EC51C @ =sub_80567DC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080EC514: .4byte gUnknown_3005020 +_080EC518: .4byte sub_80EC474 +_080EC51C: .4byte sub_80567DC + thumb_func_end sub_80EC500 + + thumb_func_start sub_80EC520 +sub_80EC520: @ 80EC520 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080EC534 @ =gUnknown_841632A + ldr r3, _080EC538 @ =sub_80EC574 + movs r1, 0x2 + bl sub_80F7808 + pop {r0} + bx r0 + .align 2, 0 +_080EC534: .4byte gUnknown_841632A +_080EC538: .4byte sub_80EC574 + thumb_func_end sub_80EC520 + + thumb_func_start sub_80EC53C +sub_80EC53C: @ 80EC53C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0 + bl sub_80F6F54 + adds r0, r4, 0 + bl sub_80EBEB0 + movs r0, 0 + bl sub_80F67A4 + ldr r1, _080EC56C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EC570 @ =sub_80EBF40 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC56C: .4byte gUnknown_3005090 +_080EC570: .4byte sub_80EBF40 + thumb_func_end sub_80EC53C + + thumb_func_start sub_80EC574 +sub_80EC574: @ 80EC574 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + bl sub_810EBE0 + movs r0, 0 + bl sub_80F67A4 + ldr r1, _080EC59C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080EC5A0 @ =sub_80EC53C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC59C: .4byte gUnknown_3005090 +_080EC5A0: .4byte sub_80EC53C + thumb_func_end sub_80EC574 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokeball.s b/asm/pokeball.s new file mode 100644 index 000000000..f16c22700 --- /dev/null +++ b/asm/pokeball.s @@ -0,0 +1,2896 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_804A938 +sub_804A938: @ 804A938 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _0804A98C @ =gUnknown_2024005 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _0804A990 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r6, _0804A994 @ =gUnknown_2023BC4 + ldrb r1, [r6] + ldr r2, [r0, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] + ldr r0, _0804A998 @ =sub_804A9A0 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0804A99C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + strh r5, [r1, 0xC] + ldrb r0, [r6] + strh r0, [r1, 0xE] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0804A98C: .4byte gUnknown_2024005 +_0804A990: .4byte gUnknown_2024018 +_0804A994: .4byte gUnknown_2023BC4 +_0804A998: .4byte sub_804A9A0 +_0804A99C: .4byte gUnknown_3005090 + thumb_func_end sub_804A938 + + thumb_func_start sub_804A9A0 +sub_804A9A0: @ 804A9A0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r1, _0804A9D4 @ =gUnknown_3005090 + ldr r2, [sp] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0x8] + movs r3, 0x8 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _0804A9D8 + adds r0, r2, 0x1 + strh r0, [r1, 0x8] + b _0804ABB8 + .align 2, 0 +_0804A9D4: .4byte gUnknown_3005090 +_0804A9D8: + ldrh r0, [r1, 0xC] + mov r9, r0 + ldrb r6, [r1, 0xE] + adds r0, r6, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0804AA04 + ldr r1, _0804A9FC @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0804AA00 @ =gUnknown_202402C + b _0804AA12 + .align 2, 0 +_0804A9FC: .4byte gUnknown_2023BCE +_0804AA00: .4byte gUnknown_202402C +_0804AA04: + ldr r1, _0804AA50 @ =gUnknown_2023BCE + lsls r0, r6, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0804AA54 @ =gUnknown_2024284 +_0804AA12: + adds r0, r1 + movs r1, 0x26 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80EF52C + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_804BEF4 + ldr r0, _0804AA58 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804AA60 + ldr r4, _0804AA5C @ =gUnknown_202273C + adds r0, r6, 0 + bl sub_8043658 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r1, [r1, 0x13] + mov r10, r1 + b _0804AA68 + .align 2, 0 +_0804AA50: .4byte gUnknown_2023BCE +_0804AA54: .4byte gUnknown_2024284 +_0804AA58: .4byte gUnknown_2022B4C +_0804AA5C: .4byte gUnknown_202273C +_0804AA60: + ldr r0, _0804AAB8 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + mov r10, r0 +_0804AA68: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + ldr r1, _0804AABC @ =gUnknown_82606F4 + adds r0, r1 + movs r1, 0x20 + movs r2, 0x50 + movs r3, 0x1D + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + lsls r5, r7, 4 + adds r0, r5, r7 + lsls r0, 2 + mov r8, r0 + ldr r4, _0804AAC0 @ =gUnknown_202063C + add r4, r8 + movs r0, 0x80 + strh r0, [r4, 0x2E] + movs r1, 0 + strh r1, [r4, 0x30] + mov r2, r9 + strh r2, [r4, 0x3C] + mov r3, r9 + cmp r3, 0xFE + beq _0804AAF8 + cmp r3, 0xFF + bne _0804AB38 + ldr r0, _0804AAC4 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 9 + ands r0, r1 + cmp r0, 0 + beq _0804AAC8 + movs r5, 0x20 + movs r4, 0x40 + b _0804AACE + .align 2, 0 +_0804AAB8: .4byte gUnknown_300500C +_0804AABC: .4byte gUnknown_82606F4 +_0804AAC0: .4byte gUnknown_202063C +_0804AAC4: .4byte gUnknown_2022B4C +_0804AAC8: + mov r0, r10 + movs r5, 0x30 + movs r4, 0x46 +_0804AACE: + ldr r0, _0804AAEC @ =gUnknown_2023D6C + strb r6, [r0] + ldr r2, _0804AAF0 @ =gUnknown_202063C + lsls r3, r7, 4 + adds r1, r3, r7 + lsls r1, 2 + adds r0, r1, r2 + strh r5, [r0, 0x20] + strh r4, [r0, 0x22] + adds r2, 0x1C + adds r1, r2 + ldr r0, _0804AAF4 @ =sub_804B684 + str r0, [r1] + b _0804AB48 + .align 2, 0 +_0804AAEC: .4byte gUnknown_2023D6C +_0804AAF0: .4byte gUnknown_202063C +_0804AAF4: .4byte sub_804B684 +_0804AAF8: + adds r0, r6, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x18 + strh r0, [r4, 0x22] + ldr r0, _0804AB2C @ =gUnknown_2023D6C + strb r6, [r0] + movs r1, 0 + strh r1, [r4, 0x2E] + ldr r0, _0804AB30 @ =gUnknown_202063C + adds r0, 0x1C + add r0, r8 + ldr r1, _0804AB34 @ =sub_804B868 + str r1, [r0] + b _0804AB46 + .align 2, 0 +_0804AB2C: .4byte gUnknown_2023D6C +_0804AB30: .4byte gUnknown_202063C +_0804AB34: .4byte sub_804B868 +_0804AB38: + movs r0, 0x1 + bl sub_80751E8 + ldr r1, _0804AB64 @ =gUnknown_2023D6C + strb r0, [r1] + movs r2, 0x1 + str r2, [sp, 0x4] +_0804AB46: + adds r3, r5, 0 +_0804AB48: + ldr r0, _0804AB68 @ =gUnknown_202063C + adds r1, r3, r7 + lsls r1, 2 + adds r4, r1, r0 + ldr r5, _0804AB64 @ =gUnknown_2023D6C + ldrb r0, [r5] + strh r0, [r4, 0x3A] + ldr r3, [sp, 0x4] + cmp r3, 0 + bne _0804AB6C + ldr r0, [sp] + bl sub_8077508 + b _0804ABB8 + .align 2, 0 +_0804AB64: .4byte gUnknown_2023D6C +_0804AB68: .4byte gUnknown_202063C +_0804AB6C: + movs r0, 0x22 + strh r0, [r4, 0x2E] + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x10 + strh r0, [r4, 0x36] + ldr r0, _0804ABC8 @ =0x0000ffd8 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x6] + ldr r1, _0804ABCC @ =gUnknown_3005090 + ldr r2, [sp] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + ldrb r1, [r5] + strh r1, [r0, 0x10] + ldr r1, _0804ABD0 @ =nullsub_43 + str r1, [r0] + movs r0, 0x36 + bl sub_80722CC +_0804ABB8: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804ABC8: .4byte 0x0000ffd8 +_0804ABCC: .4byte gUnknown_3005090 +_0804ABD0: .4byte nullsub_43 + thumb_func_end sub_804A9A0 + + thumb_func_start sub_804ABD4 +sub_804ABD4: @ 804ABD4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _0804AC74 + ldrb r6, [r7, 0x6] + ldr r1, _0804AC80 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldrb r5, [r0, 0x10] + ldrb r0, [r0, 0xC] + mov r8, r0 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_800838C + adds r2, r7, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r7, 0x24] + ldrh r1, [r7, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r7, 0x20] + ldrh r0, [r7, 0x26] + ldrh r2, [r7, 0x22] + adds r0, r2 + strh r0, [r7, 0x22] + strh r1, [r7, 0x24] + strh r1, [r7, 0x26] + strh r1, [r7, 0x38] + adds r0, r5, 0 + bl sub_804BF90 + lsls r0, 16 + lsrs r0, 16 + bl sub_80EF52C + adds r4, r0, 0 + ldrh r0, [r7, 0x20] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r7, 0x22] + subs r1, 0x5 + lsls r1, 24 + lsrs r1, 24 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + movs r2, 0x1 + movs r3, 0x1C + bl sub_80F05EC + movs r0, 0 + adds r1, r5, 0 + movs r2, 0xE + adds r3, r4, 0 + bl sub_80F1218 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x2E] + strh r5, [r7, 0x3A] + mov r0, r8 + strh r0, [r7, 0x3C] + adds r0, r6, 0 + bl sub_8077508 + ldr r0, _0804AC84 @ =sub_804AC88 + str r0, [r7, 0x1C] +_0804AC74: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804AC80: .4byte gUnknown_3005090 +_0804AC84: .4byte sub_804AC88 + thumb_func_end sub_804ABD4 + + thumb_func_start sub_804AC88 +sub_804AC88: @ 804AC88 + ldr r1, _0804AC90 @ =sub_804AC94 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_0804AC90: .4byte sub_804AC94 + thumb_func_end sub_804AC88 + + thumb_func_start sub_804AC94 +sub_804AC94: @ 804AC94 + push {r4-r7,lr} + adds r6, r0, 0 + ldrh r0, [r6, 0x38] + adds r0, 0x1 + movs r7, 0 + strh r0, [r6, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _0804ACEE + strh r7, [r6, 0x38] + ldr r0, _0804ACF4 @ =sub_804AD00 + str r0, [r6, 0x1C] + ldr r5, _0804ACF8 @ =gUnknown_2023D44 + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0804ACFC @ =gUnknown_202063C + adds r0, r4 + movs r1, 0x2 + bl sub_800843C + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007824 + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r7, [r0, 0x30] +_0804ACEE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804ACF4: .4byte sub_804AD00 +_0804ACF8: .4byte gUnknown_2023D44 +_0804ACFC: .4byte gUnknown_202063C + thumb_func_end sub_804AC94 + + thumb_func_start sub_804AD00 +sub_804AD00: @ 804AD00 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _0804AD18 + movs r0, 0x35 + bl sub_80722CC +_0804AD18: + ldr r6, _0804AD64 @ =gUnknown_202063C + ldr r5, _0804AD68 @ =gUnknown_2023D44 + movs r1, 0x3A + ldrsh r0, [r4, r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r6 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _0804AD70 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + movs r2, 0x3A + ldrsh r0, [r4, r2] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0 + strh r0, [r4, 0x38] + ldr r0, _0804AD6C @ =sub_804AD98 + str r0, [r4, 0x1C] + b _0804AD90 + .align 2, 0 +_0804AD64: .4byte gUnknown_202063C +_0804AD68: .4byte gUnknown_2023D44 +_0804AD6C: .4byte sub_804AD98 +_0804AD70: + ldrh r0, [r1, 0x30] + adds r0, 0x60 + strh r0, [r1, 0x30] + movs r1, 0x3A + ldrsh r0, [r4, r1] + adds r0, r5 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + movs r2, 0x30 + ldrsh r0, [r1, r2] + negs r0, r0 + asrs r0, 8 + strh r0, [r1, 0x26] +_0804AD90: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_804AD00 + + thumb_func_start sub_804AD98 +sub_804AD98: @ 804AD98 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804ADE0 + ldrh r0, [r4, 0x38] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _0804ADE0 + strh r1, [r4, 0x34] + movs r0, 0x20 + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + movs r0, 0 + movs r1, 0x20 + bl sub_8044E4C + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0x36 + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldr r0, _0804ADE8 @ =sub_804ADEC + str r0, [r4, 0x1C] +_0804ADE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804ADE8: .4byte sub_804ADEC + thumb_func_end sub_804AD98 + + thumb_func_start sub_804ADEC +sub_804ADEC: @ 804ADEC + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0 + ldrh r0, [r4, 0x34] + movs r1, 0xFF + ands r1, r0 + cmp r1, 0 + beq _0804AE02 + cmp r1, 0x1 + beq _0804AE76 + b _0804AEA2 +_0804AE02: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r1, [r4, 0x38] + adds r1, 0x4 + ldrh r2, [r4, 0x34] + lsls r0, r2, 16 + asrs r0, 24 + adds r1, r0 + strh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x3F + ble _0804AEA2 + ldrh r0, [r4, 0x36] + subs r0, 0xA + strh r0, [r4, 0x36] + ldr r1, _0804AE4C @ =0x00000101 + adds r0, r2, r1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + cmp r0, 0x4 + bne _0804AE3E + movs r5, 0x1 +_0804AE3E: + cmp r0, 0x2 + beq _0804AE5E + cmp r0, 0x2 + bgt _0804AE50 + cmp r0, 0x1 + beq _0804AE56 + b _0804AE6E + .align 2, 0 +_0804AE4C: .4byte 0x00000101 +_0804AE50: + cmp r0, 0x3 + beq _0804AE66 + b _0804AE6E +_0804AE56: + movs r0, 0x31 + bl sub_80722CC + b _0804AEA2 +_0804AE5E: + movs r0, 0x32 + bl sub_80722CC + b _0804AEA2 +_0804AE66: + movs r0, 0x33 + bl sub_80722CC + b _0804AEA2 +_0804AE6E: + movs r0, 0x34 + bl sub_80722CC + b _0804AEA2 +_0804AE76: + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl sub_8044E4C + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r1, [r4, 0x38] + subs r1, 0x4 + ldrh r2, [r4, 0x34] + lsls r0, r2, 16 + asrs r0, 24 + subs r1, r0 + strh r1, [r4, 0x38] + lsls r1, 16 + cmp r1, 0 + bgt _0804AEA2 + strh r5, [r4, 0x38] + ldr r0, _0804AEC8 @ =0xffffff00 + ands r0, r2 + strh r0, [r4, 0x34] +_0804AEA2: + cmp r5, 0 + beq _0804AEDA + movs r5, 0 + strh r5, [r4, 0x34] + movs r0, 0x40 + movs r1, 0x20 + bl sub_8044E4C + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r5, [r4, 0x26] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0804AED0 + ldr r0, _0804AECC @ =sub_804B268 + str r0, [r4, 0x1C] + b _0804AEDA + .align 2, 0 +_0804AEC8: .4byte 0xffffff00 +_0804AECC: .4byte sub_804B268 +_0804AED0: + ldr r0, _0804AEE0 @ =sub_804AEE4 + str r0, [r4, 0x1C] + movs r0, 0x1 + strh r0, [r4, 0x36] + strh r5, [r4, 0x38] +_0804AEDA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804AEE0: .4byte sub_804AEE4 + thumb_func_end sub_804ADEC + + thumb_func_start sub_804AEE4 +sub_804AEE4: @ 804AEE4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _0804AF18 + movs r0, 0 + strh r0, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + ldr r0, _0804AF20 @ =sub_804AF24 + str r0, [r4, 0x1C] + movs r0, 0x17 + bl sub_80722CC +_0804AF18: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804AF20: .4byte sub_804AF24 + thumb_func_end sub_804AEE4 + + thumb_func_start sub_804AF24 +sub_804AF24: @ 804AF24 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x34] + movs r1, 0xFF + ands r1, r0 + cmp r1, 0x4 + bhi _0804B024 + lsls r0, r1, 2 + ldr r1, _0804AF3C @ =_0804AF40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804AF3C: .4byte _0804AF40 + .align 2, 0 +_0804AF40: + .4byte _0804AF54 + .4byte _0804AF86 + .4byte _0804AF54 + .4byte _0804AFDA + .4byte _0804B024 +_0804AF54: + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x24] + adds r1, r0, r2 + strh r1, [r4, 0x24] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x38] + adds r0, 0x3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x6 + bls _0804B06A + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + movs r0, 0 + strh r0, [r4, 0x38] + b _0804B06A +_0804AF86: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _0804AFCC + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x36] + negs r0, r0 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0 + bge _0804AFC2 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800849C + b _0804B06A +_0804AFC2: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800849C + b _0804B06A +_0804AFCC: + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + b _0804B06A +_0804AFDA: + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ldrh r2, [r4, 0x34] + adds r0, r2 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x3C + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _0804AFFC + ldr r0, _0804AFF8 @ =sub_804B268 + str r0, [r4, 0x1C] + b _0804B06A + .align 2, 0 +_0804AFF8: .4byte sub_804B268 +_0804AFFC: + cmp r1, 0x4 + bne _0804B010 + cmp r0, 0x3 + bne _0804B010 + ldr r0, _0804B00C @ =sub_804B484 + str r0, [r4, 0x1C] + b _0804B016 + .align 2, 0 +_0804B00C: .4byte sub_804B484 +_0804B010: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] +_0804B016: + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + b _0804B06A +_0804B024: + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _0804B06A + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r1, [r4, 0x34] + ldr r0, _0804B058 @ =0xffffff00 + ands r0, r1 + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800843C + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _0804B05C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800843C + b _0804B064 + .align 2, 0 +_0804B058: .4byte 0xffffff00 +_0804B05C: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_0804B064: + movs r0, 0x17 + bl sub_80722CC +_0804B06A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804AF24 + + thumb_func_start sub_804B070 +sub_804B070: @ 804B070 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _0804B0A4 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r2 + ldrb r7, [r0, 0xC] + ldrb r5, [r0, 0xA] + ldrh r6, [r0, 0x8] + movs r3, 0xE + ldrsh r1, [r0, r3] + lsls r3, r1, 16 + ldrh r1, [r0, 0x10] + orrs r3, r1 + movs r1, 0x26 + ldrsh r0, [r0, r1] + cmp r0, 0x20 + bhi _0804B130 + lsls r0, 2 + ldr r1, _0804B0A8 @ =_0804B0AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804B0A4: .4byte gUnknown_3005090 +_0804B0A8: .4byte _0804B0AC + .align 2, 0 +_0804B0AC: + .4byte _0804B130 + .4byte _0804B14E + .4byte _0804B174 + .4byte _0804B1CE + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B190 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B130 + .4byte _0804B1E0 + .4byte _0804B1F8 + .4byte _0804B220 +_0804B130: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r2, [r1, 0x18] + movs r3, 0x18 + ldrsh r0, [r1, r3] + cmp r0, 0x2 + bgt _0804B148 + adds r0, r2, 0x1 + strh r0, [r1, 0x18] + b _0804B262 +_0804B148: + adds r0, r7, 0x1 + strh r0, [r1, 0x26] + b _0804B262 +_0804B14E: + adds r0, r3, 0 + bl sub_8035A28 + cmp r0, 0x1 + bne _0804B166 + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0 + bl sub_8071E60 + b _0804B1C6 +_0804B166: + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0xB + bl sub_8071E60 + b _0804B1C6 +_0804B174: + bl sub_80721C4 + ldr r1, _0804B18C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x3 + strh r1, [r0, 0x1C] + movs r1, 0x14 + strh r1, [r0, 0x26] + b _0804B262 + .align 2, 0 +_0804B18C: .4byte gUnknown_3005090 +_0804B190: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r2, [r1, 0x1C] + movs r7, 0x1C + ldrsh r0, [r1, r7] + cmp r0, 0 + bne _0804B232 + adds r0, r3, 0 + bl sub_8035A28 + cmp r0, 0x1 + bne _0804B1BA + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0x1 + bl sub_8071EC0 + b _0804B1C6 +_0804B1BA: + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0xC + bl sub_8071EC0 +_0804B1C6: + adds r0, r4, 0 + bl sub_8077508 + b _0804B262 +_0804B1CE: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r2 + movs r1, 0x6 + strh r1, [r0, 0x1C] + movs r1, 0x1E + strh r1, [r0, 0x26] + b _0804B262 +_0804B1E0: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r2, [r1, 0x1C] + movs r3, 0x1C + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _0804B232 + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] +_0804B1F8: + bl sub_80721F0 + lsls r0, 24 + cmp r0, 0 + bne _0804B262 + bl sub_80721C4 + ldr r0, _0804B21C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x3 + strh r0, [r1, 0x1C] + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _0804B262 + .align 2, 0 +_0804B21C: .4byte gUnknown_3005090 +_0804B220: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r2, [r1, 0x1C] + movs r7, 0x1C + ldrsh r0, [r1, r7] + cmp r0, 0 + beq _0804B238 +_0804B232: + subs r0, r2, 0x1 + strh r0, [r1, 0x1C] + b _0804B262 +_0804B238: + adds r0, r3, 0 + bl sub_8035A28 + cmp r0, 0x1 + bne _0804B250 + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0 + bl sub_8071EC0 + b _0804B25C +_0804B250: + lsls r1, r5, 24 + asrs r1, 24 + adds r0, r6, 0 + movs r2, 0xB + bl sub_8071EC0 +_0804B25C: + adds r0, r4, 0 + bl sub_8077508 +_0804B262: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804B070 + + thumb_func_start sub_804B268 +sub_804B268: @ 804B268 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r6, r0, 0 + ldrh r0, [r6, 0x3A] + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_800838C + adds r0, r5, 0 + bl sub_804BF90 + lsls r0, 16 + lsrs r0, 16 + bl sub_80EF52C + adds r4, r0, 0 + ldrh r0, [r6, 0x20] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x22] + subs r1, 0x5 + lsls r1, 24 + lsrs r1, 24 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + movs r2, 0x1 + movs r3, 0x1C + bl sub_80F05EC + ldrh r1, [r6, 0x3A] + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + movs r2, 0xE + adds r3, r4, 0 + bl sub_80F1218 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x2E] + ldr r0, _0804B2FC @ =sub_804B4A4 + str r0, [r6, 0x1C] + ldr r0, _0804B300 @ =gUnknown_30030F0 + ldr r1, _0804B304 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0804B2DA + b _0804B420 +_0804B2DA: + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0804B310 + ldr r1, _0804B308 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0804B30C @ =gUnknown_202402C + adds r7, r1, r0 + movs r3, 0x19 + mov r9, r3 + b _0804B324 + .align 2, 0 +_0804B2FC: .4byte sub_804B4A4 +_0804B300: .4byte gUnknown_30030F0 +_0804B304: .4byte 0x00000439 +_0804B308: .4byte gUnknown_2023BCE +_0804B30C: .4byte gUnknown_202402C +_0804B310: + ldr r1, _0804B388 @ =gUnknown_2023BCE + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _0804B38C @ =gUnknown_2024284 + adds r7, r1, r0 + movs r0, 0xE7 + mov r9, r0 +_0804B324: + adds r0, r7, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + beq _0804B34E + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bne _0804B3A6 +_0804B34E: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0804B3A6 + ldr r0, _0804B390 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r1, [r0, 0x9] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0804B3A6 + ldr r0, _0804B394 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0804B39C + bl sub_8072424 + lsls r0, 24 + cmp r0, 0 + beq _0804B3A6 + ldr r0, _0804B398 @ =gMPlay_BGM + bl m4aMPlayStop + b _0804B3A6 + .align 2, 0 +_0804B388: .4byte gUnknown_2023BCE +_0804B38C: .4byte gUnknown_2024284 +_0804B390: .4byte gUnknown_2024018 +_0804B394: .4byte gUnknown_2022B4C +_0804B398: .4byte gMPlay_BGM +_0804B39C: + ldr r0, _0804B3C4 @ =gMPlay_BGM + ldr r1, _0804B3C8 @ =0x0000ffff + movs r2, 0x80 + bl m4aMPlayVolumeControl +_0804B3A6: + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0804B3C0 + ldr r0, _0804B3CC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r1, [r0, 0x9] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0804B3D0 +_0804B3C0: + movs r4, 0 + b _0804B3F2 + .align 2, 0 +_0804B3C4: .4byte gMPlay_BGM +_0804B3C8: .4byte 0x0000ffff +_0804B3CC: .4byte gUnknown_2024018 +_0804B3D0: + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + beq _0804B3EC + movs r0, 0x1 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bne _0804B3F0 +_0804B3EC: + movs r4, 0x1 + b _0804B3F2 +_0804B3F0: + movs r4, 0x2 +_0804B3F2: + ldr r0, _0804B474 @ =sub_804B070 + movs r1, 0x3 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0804B478 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + mov r3, r8 + strh r3, [r1, 0x8] + mov r3, r9 + lsls r0, r3, 24 + asrs r0, 24 + strh r0, [r1, 0xA] + strh r4, [r1, 0xC] + lsrs r0, r7, 16 + strh r0, [r1, 0xE] + strh r7, [r1, 0x10] + strh r2, [r1, 0x26] +_0804B420: + ldr r5, _0804B47C @ =gUnknown_2023D44 + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0804B480 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0x1 + bl sub_800843C + movs r3, 0x3A + ldrsh r0, [r6, r3] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007824 + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x80 + lsls r1, 5 + strh r1, [r0, 0x30] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B474: .4byte sub_804B070 +_0804B478: .4byte gUnknown_3005090 +_0804B47C: .4byte gUnknown_2023D44 +_0804B480: .4byte gUnknown_202063C + thumb_func_end sub_804B268 + + thumb_func_start sub_804B484 +sub_804B484: @ 804B484 + adds r3, r0, 0 + adds r3, 0x2C + ldrb r1, [r3] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r3] + ldr r1, _0804B4A0 @ =sub_804B5C8 + str r1, [r0, 0x1C] + movs r1, 0 + strh r1, [r0, 0x34] + strh r1, [r0, 0x36] + strh r1, [r0, 0x38] + bx lr + .align 2, 0 +_0804B4A0: .4byte sub_804B5C8 + thumb_func_end sub_804B484 + + thumb_func_start sub_804B4A4 +sub_804B4A4: @ 804B4A4 + push {r4-r7,lr} + adds r5, r0, 0 + movs r7, 0 + ldrh r0, [r5, 0x3A] + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _0804B508 @ =gUnknown_202063C + ldr r0, _0804B50C @ =gUnknown_2023D44 + adds r3, r6, r0 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804B4E6 + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_0804B4E6: + ldrb r0, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _0804B510 + adds r0, r1, 0 + movs r1, 0 + bl sub_800843C + movs r7, 0x1 + b _0804B52C + .align 2, 0 +_0804B508: .4byte gUnknown_202063C +_0804B50C: .4byte gUnknown_2023D44 +_0804B510: + ldr r2, _0804B5B4 @ =0xfffffee0 + adds r0, r2, 0 + ldrh r2, [r1, 0x30] + adds r0, r2 + strh r0, [r1, 0x30] + ldrb r0, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 24 + strh r0, [r1, 0x26] +_0804B52C: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804B5AE + cmp r7, 0 + beq _0804B5AE + ldr r2, _0804B5B8 @ =gUnknown_202063C + ldr r0, _0804B5BC @ =gUnknown_2023D44 + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r2, 0 + movs r1, 0 + strh r1, [r0, 0x26] + ldr r0, _0804B5C0 @ =gUnknown_2024005 + strb r2, [r0] + ldr r4, _0804B5C4 @ =gUnknown_2024018 + ldr r0, [r4] + ldr r0, [r0, 0x4] + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80077D8 + adds r0, r5, 0 + bl sub_8007280 + movs r3, 0 + ldr r0, [r4] + ldr r2, [r0, 0x4] + movs r5, 0x8 + movs r4, 0x3 +_0804B586: + ldrb r1, [r2] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _0804B592 + adds r3, 0x1 +_0804B592: + adds r2, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _0804B586 + cmp r3, 0x4 + bne _0804B5AE + movs r4, 0 +_0804B5A0: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_804BF64 + adds r4, 0x1 + cmp r4, 0xB + ble _0804B5A0 +_0804B5AE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B5B4: .4byte 0xfffffee0 +_0804B5B8: .4byte gUnknown_202063C +_0804B5BC: .4byte gUnknown_2023D44 +_0804B5C0: .4byte gUnknown_2024005 +_0804B5C4: .4byte gUnknown_2024018 + thumb_func_end sub_804B4A4 + + thumb_func_start sub_804B5C8 +sub_804B5C8: @ 804B5C8 + push {r4-r7,lr} + adds r6, r0, 0 + ldrh r0, [r6, 0x3A] + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r0, [r6, 0x36] + adds r0, 0x1 + strh r0, [r6, 0x36] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0x28 + beq _0804B666 + cmp r1, 0x5F + bne _0804B600 + ldr r0, _0804B5F8 @ =gUnknown_2024005 + movs r1, 0 + strb r1, [r0] + bl m4aMPlayAllStop + ldr r0, _0804B5FC @ =0x0000013f + bl sub_80722CC + b _0804B666 + .align 2, 0 +_0804B5F8: .4byte gUnknown_2024005 +_0804B5FC: .4byte 0x0000013f +_0804B600: + ldr r0, _0804B66C @ =0x0000013b + cmp r1, r0 + bne _0804B666 + ldr r5, _0804B670 @ =gUnknown_202063C + ldr r4, _0804B674 @ =gUnknown_2023D44 + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + movs r1, 0x3A + ldrsh r0, [r6, r1] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + adds r0, r6, 0 + bl sub_8007804 + ldr r0, _0804B678 @ =gUnknown_30030F0 + ldr r1, _0804B67C @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804B666 + ldr r0, _0804B680 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x4] + lsls r1, r7, 1 + adds r1, r7 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_0804B666: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B66C: .4byte 0x0000013b +_0804B670: .4byte gUnknown_202063C +_0804B674: .4byte gUnknown_2023D44 +_0804B678: .4byte gUnknown_30030F0 +_0804B67C: .4byte 0x00000439 +_0804B680: .4byte gUnknown_2024018 + thumb_func_end sub_804B5C8 + + thumb_func_start sub_804B684 +sub_804B684: @ 804B684 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x19 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x3A] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x18 + strh r0, [r4, 0x36] + ldr r0, _0804B6CC @ =0x0000ffe2 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x3A] + strh r0, [r4, 0x6] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _0804B6D0 @ =sub_804B6D4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B6CC: .4byte 0x0000ffe2 +_0804B6D0: .4byte sub_804B6D4 + thumb_func_end sub_804B684 + + thumb_func_start sub_804B6D4 +sub_804B6D4: @ 804B6D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldrh r0, [r5, 0x3C] + movs r1, 0xFF + mov r8, r1 + lsrs r0, 8 + subs r0, 0x23 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2C + bhi _0804B7C8 + ldrh r1, [r5, 0x6] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + bne _0804B736 + ldrh r0, [r5, 0x30] + movs r1, 0x1 + adds r6, r1, 0 + ands r6, r0 + ldrh r0, [r5, 0x32] + adds r7, r1, 0 + ands r7, r0 + movs r2, 0x30 + ldrsh r0, [r5, r2] + movs r1, 0x3 + bl __divsi3 + movs r1, 0x2 + negs r1, r1 + adds r4, r1, 0 + ands r0, r4 + orrs r6, r0 + strh r6, [r5, 0x30] + movs r2, 0x32 + ldrsh r0, [r5, r2] + movs r1, 0x3 + bl __divsi3 + ands r0, r4 + orrs r7, r0 + strh r7, [r5, 0x32] + adds r0, r5, 0 + movs r1, 0x4 + bl sub_800843C +_0804B736: + ldrh r4, [r5, 0x2E] + adds r0, r5, 0 + bl sub_80755E0 + movs r1, 0x3A + ldrsh r0, [r5, r1] + movs r1, 0x3 + bl __divsi3 + adds r1, r0, 0 + ldrh r0, [r5, 0x3C] + adds r0, r1 + strh r0, [r5, 0x3C] + lsls r0, 16 + asrs r0, 24 + mov r2, r8 + ands r0, r2 + movs r2, 0x38 + ldrsh r1, [r5, r2] + bl sub_8044E30 + ldrh r1, [r5, 0x26] + adds r0, r1 + strh r0, [r5, 0x26] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ldrh r1, [r5, 0x6] + adds r0, r1 + strh r0, [r5, 0x6] + lsls r0, 16 + lsrs r0, 24 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + beq _0804B786 + strh r4, [r5, 0x2E] + b _0804B78E +_0804B786: + lsls r0, r4, 16 + asrs r0, 16 + subs r0, 0x1 + strh r0, [r5, 0x2E] +_0804B78E: + ldrh r0, [r5, 0x3C] + lsrs r0, 8 + cmp r0, 0x4F + ble _0804B834 + ldrh r0, [r5, 0x30] + movs r1, 0x1 + adds r6, r1, 0 + ands r6, r0 + ldrh r0, [r5, 0x32] + adds r7, r1, 0 + ands r7, r0 + movs r2, 0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, 1 + adds r0, r1 + movs r1, 0x2 + negs r1, r1 + adds r2, r1, 0 + ands r0, r2 + orrs r0, r6 + strh r0, [r5, 0x30] + movs r0, 0x32 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + ands r0, r2 + orrs r0, r7 + strh r0, [r5, 0x32] + b _0804B834 +_0804B7C8: + adds r0, r5, 0 + bl sub_8075094 + lsls r0, 24 + cmp r0, 0 + beq _0804B834 + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + ldrb r0, [r5, 0x6] + strh r0, [r5, 0x3A] + strh r1, [r5, 0x2E] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0804B828 + ldr r0, _0804B820 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r1, [r0, 0x9] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0804B828 + movs r0, 0x3A + ldrsh r4, [r5, r0] + movs r0, 0x2 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0804B828 + ldr r0, _0804B824 @ =sub_804B844 + b _0804B82A + .align 2, 0 +_0804B820: .4byte gUnknown_2024018 +_0804B824: .4byte sub_804B844 +_0804B828: + ldr r0, _0804B840 @ =sub_804B268 +_0804B82A: + str r0, [r5, 0x1C] + adds r0, r5, 0 + movs r1, 0 + bl sub_800843C +_0804B834: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B840: .4byte sub_804B268 + thumb_func_end sub_804B6D4 + + thumb_func_start sub_804B844 +sub_804B844: @ 804B844 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r1, r0, 0x1 + strh r1, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + ble _0804B85E + movs r0, 0 + strh r0, [r2, 0x2E] + ldr r0, _0804B864 @ =sub_804B268 + str r0, [r2, 0x1C] +_0804B85E: + pop {r0} + bx r0 + .align 2, 0 +_0804B864: .4byte sub_804B268 + thumb_func_end sub_804B844 + + thumb_func_start sub_804B868 +sub_804B868: @ 804B868 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _0804B8BC + movs r0, 0 + strh r0, [r5, 0x2E] + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _0804B8B8 + ldr r0, _0804B8B0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrb r1, [r0, 0x9] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0804B8B8 + movs r0, 0x3A + ldrsh r4, [r5, r0] + movs r0, 0x3 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0804B8B8 + ldr r0, _0804B8B4 @ =sub_804B844 + b _0804B8BA + .align 2, 0 +_0804B8B0: .4byte gUnknown_2024018 +_0804B8B4: .4byte sub_804B844 +_0804B8B8: + ldr r0, _0804B8C4 @ =sub_804B268 +_0804B8BA: + str r0, [r5, 0x1C] +_0804B8BC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804B8C4: .4byte sub_804B268 + thumb_func_end sub_804B868 + + thumb_func_start sub_804B8C8 +sub_804B8C8: @ 804B8C8 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + movs r4, 0 + str r4, [sp] + bl sub_80F05EC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_804B8C8 + + thumb_func_start sub_804B8F0 +sub_804B8F0: @ 804B8F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r3, 0 + bl sub_80F1218 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_804B8F0 + + thumb_func_start sub_804B908 +sub_804B908: @ 804B908 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r0, 0 + mov r9, r2 + mov r10, r3 + ldr r6, [sp, 0x24] + ldr r4, [sp, 0x28] + ldr r0, [sp, 0x2C] + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + mov r2, r10 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0804B9D4 @ =gUnknown_826056C + bl sub_800F034 + ldr r0, _0804B9D8 @ =gUnknown_82605CC + bl sub_800F078 + ldr r0, _0804B9DC @ =gUnknown_82606F4 + mov r1, r9 + mov r2, r10 + adds r3, r4, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0804B9E0 @ =gUnknown_202063C + mov r8, r3 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r1, r4, r3 + strh r5, [r1, 0x2E] + lsls r2, r5, 4 + adds r2, r5 + lsls r2, 2 + add r2, r8 + ldrh r0, [r2, 0x20] + strh r0, [r1, 0x38] + ldrh r0, [r2, 0x22] + strh r0, [r1, 0x3A] + mov r0, r9 + strh r0, [r2, 0x20] + mov r3, r10 + strh r3, [r2, 0x22] + strh r7, [r1, 0x30] + mov r0, sp + ldrh r0, [r0] + strh r0, [r1, 0x32] + mov r3, sp + ldrh r3, [r3, 0x30] + strh r3, [r1, 0x34] + ldr r3, [sp, 0x30] + lsrs r0, r3, 16 + strh r0, [r1, 0x36] + movs r0, 0x3 + ands r6, r0 + lsls r6, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r6 + strb r0, [r1, 0x5] + movs r0, 0x1C + add r8, r0 + add r4, r8 + ldr r0, _0804B9E4 @ =sub_804B9E8 + str r0, [r4] + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B9D4: .4byte gUnknown_826056C +_0804B9D8: .4byte gUnknown_82605CC +_0804B9DC: .4byte gUnknown_82606F4 +_0804B9E0: .4byte gUnknown_202063C +_0804B9E4: .4byte sub_804B9E8 + thumb_func_end sub_804B908 + + thumb_func_start sub_804B9E8 +sub_804B9E8: @ 804B9E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldrh r1, [r6, 0x30] + movs r2, 0x30 + ldrsh r0, [r6, r2] + cmp r0, 0 + bne _0804BA94 + ldrh r0, [r6, 0x2E] + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r0, [r6, 0x32] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrh r4, [r6, 0x34] + ldrh r0, [r6, 0x36] + lsls r0, 16 + orrs r4, r0 + adds r0, r6, 0 + adds r0, 0x43 + ldrb r0, [r0] + cmp r0, 0 + beq _0804BA22 + subs r0, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + b _0804BA24 +_0804BA22: + movs r5, 0 +_0804BA24: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_800838C + ldrh r0, [r6, 0x20] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x22] + subs r1, 0x5 + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r6, 0x5] + lsls r2, 28 + lsrs r2, 30 + adds r3, r5, 0 + bl sub_804B8C8 + movs r0, 0x1 + mov r1, r8 + adds r2, r4, 0 + bl sub_804B8F0 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r6, 0x30] + ldr r0, _0804BA8C @ =sub_804BAA4 + str r0, [r6, 0x1C] + ldr r0, _0804BA90 @ =gUnknown_202063C + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C + adds r0, r4, 0 + bl sub_8007824 + movs r0, 0x80 + lsls r0, 5 + strh r0, [r4, 0x30] + strh r5, [r6, 0x3C] + b _0804BA98 + .align 2, 0 +_0804BA8C: .4byte sub_804BAA4 +_0804BA90: .4byte gUnknown_202063C +_0804BA94: + subs r0, r1, 0x1 + strh r0, [r6, 0x30] +_0804BA98: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804B9E8 + + thumb_func_start sub_804BAA4 +sub_804BAA4: @ 804BAA4 + push {r4-r7,lr} + adds r4, r0, 0 + movs r0, 0 + mov r12, r0 + movs r6, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804BACE + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_0804BACE: + ldr r0, _0804BB5C @ =gUnknown_202063C + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r5, r1, r0 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _0804BAF0 + adds r0, r5, 0 + movs r1, 0 + bl sub_800843C + movs r1, 0x1 + mov r12, r1 +_0804BAF0: + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r7, 0x20 + ldrsh r1, [r4, r7] + subs r0, r1 + movs r1, 0x3C + ldrsh r2, [r4, r1] + muls r0, r2 + cmp r0, 0 + bge _0804BB06 + adds r0, 0x7F +_0804BB06: + asrs r0, 7 + ldrh r7, [r4, 0x20] + adds r0, r7 + lsls r0, 16 + lsrs r3, r0, 16 + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r7, 0x22 + ldrsh r1, [r4, r7] + subs r0, r1 + muls r0, r2 + cmp r0, 0 + bge _0804BB22 + adds r0, 0x7F +_0804BB22: + asrs r0, 7 + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r3, [r5, 0x20] + strh r0, [r5, 0x22] + ldrh r2, [r4, 0x3C] + movs r7, 0x3C + ldrsh r0, [r4, r7] + cmp r0, 0x7F + bgt _0804BB64 + ldr r1, _0804BB60 @ =gUnknown_825E074 + lsls r0, r2, 24 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _0804BB48 + adds r0, 0x7 +_0804BB48: + asrs r0, 3 + negs r0, r0 + lsls r0, 16 + lsrs r0, 16 + adds r1, r2, 0x4 + strh r1, [r4, 0x3C] + strh r0, [r5, 0x24] + strh r0, [r5, 0x26] + b _0804BB72 + .align 2, 0 +_0804BB5C: .4byte gUnknown_202063C +_0804BB60: .4byte gUnknown_825E074 +_0804BB64: + ldrh r0, [r4, 0x38] + strh r0, [r5, 0x20] + ldrh r0, [r4, 0x3A] + strh r0, [r5, 0x22] + strh r6, [r5, 0x24] + strh r6, [r5, 0x26] + movs r6, 0x1 +_0804BB72: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804BB90 + mov r2, r12 + cmp r2, 0 + beq _0804BB90 + cmp r6, 0 + beq _0804BB90 + adds r0, r4, 0 + bl sub_8007804 +_0804BB90: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804BAA4 + + thumb_func_start sub_804BB98 +sub_804BB98: @ 804BB98 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r10, r0 + adds r6, r2, 0 + mov r8, r3 + ldr r5, [sp, 0x20] + ldr r4, [sp, 0x24] + ldr r0, [sp, 0x28] + mov r9, r0 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r6, 24 + lsrs r6, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _0804BC3C @ =gUnknown_826056C + bl sub_800F034 + ldr r0, _0804BC40 @ =gUnknown_82605CC + bl sub_800F078 + ldr r0, _0804BC44 @ =gUnknown_82606F4 + adds r1, r6, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r6, _0804BC48 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r2, r3, r6 + mov r1, r10 + strh r1, [r2, 0x2E] + mov r4, r9 + strh r4, [r2, 0x30] + strh r7, [r2, 0x32] + mov r1, sp + ldrh r1, [r1, 0x2C] + strh r1, [r2, 0x34] + ldr r4, [sp, 0x2C] + lsrs r1, r4, 16 + strh r1, [r2, 0x36] + movs r1, 0x3 + ands r5, r1 + lsls r5, 2 + ldrb r4, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r4 + orrs r1, r5 + strb r1, [r2, 0x5] + adds r6, 0x1C + adds r3, r6 + ldr r1, _0804BC4C @ =sub_804BC50 + str r1, [r3] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0804BC3C: .4byte gUnknown_826056C +_0804BC40: .4byte gUnknown_82605CC +_0804BC44: .4byte gUnknown_82606F4 +_0804BC48: .4byte gUnknown_202063C +_0804BC4C: .4byte sub_804BC50 + thumb_func_end sub_804BB98 + + thumb_func_start sub_804BC50 +sub_804BC50: @ 804BC50 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0804BCE8 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrh r5, [r4, 0x34] + ldrh r0, [r4, 0x36] + lsls r0, 16 + orrs r5, r0 + adds r0, r4, 0 + adds r0, 0x43 + ldrb r0, [r0] + cmp r0, 0 + beq _0804BC8A + subs r0, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + b _0804BC8C +_0804BC8A: + movs r6, 0 +_0804BC8C: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + ldrh r0, [r4, 0x20] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + subs r1, 0x5 + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + lsls r2, 28 + lsrs r2, 30 + adds r3, r6, 0 + bl sub_804B8C8 + movs r0, 0x1 + mov r1, r8 + adds r2, r5, 0 + bl sub_804B8F0 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x30] + ldr r0, _0804BCE0 @ =sub_804BCF8 + str r0, [r4, 0x1C] + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + ldr r0, _0804BCE4 @ =gUnknown_202063C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800843C + adds r0, r4, 0 + bl sub_8007824 + strh r5, [r4, 0x30] + b _0804BCEC + .align 2, 0 +_0804BCE0: .4byte sub_804BCF8 +_0804BCE4: .4byte gUnknown_202063C +_0804BCE8: + subs r0, r1, 0x1 + strh r0, [r4, 0x30] +_0804BCEC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804BC50 + + thumb_func_start sub_804BCF8 +sub_804BCF8: @ 804BCF8 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x38] + adds r0, 0x1 + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _0804BD10 + movs r0, 0x35 + bl sub_80722CC +_0804BD10: + ldrh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0804BD4C @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _0804BD54 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + strh r0, [r5, 0x38] + ldr r0, _0804BD50 @ =sub_804BD6C + str r0, [r5, 0x1C] + b _0804BD64 + .align 2, 0 +_0804BD4C: .4byte gUnknown_202063C +_0804BD50: .4byte sub_804BD6C +_0804BD54: + ldrh r0, [r4, 0x30] + adds r0, 0x60 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + negs r0, r0 + asrs r0, 8 + strh r0, [r4, 0x26] +_0804BD64: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_804BCF8 + + thumb_func_start sub_804BD6C +sub_804BD6C: @ 804BD6C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804BD80 + ldr r0, _0804BD84 @ =nullsub_8 + str r0, [r2, 0x1C] +_0804BD80: + pop {r0} + bx r0 + .align 2, 0 +_0804BD84: .4byte nullsub_8 + thumb_func_end sub_804BD6C + + thumb_func_start sub_804BD88 +sub_804BD88: @ 804BD88 + push {lr} + bl sub_8007804 + pop {r0} + bx r0 + thumb_func_end sub_804BD88 + + thumb_func_start sub_804BD94 +sub_804BD94: @ 804BD94 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r0, _0804BE14 @ =gUnknown_3004FF0 + adds r0, r5, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r6, _0804BE18 @ =gUnknown_202063C + adds r4, r0, r6 + movs r1, 0 + movs r0, 0x5 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r0, 0x73 + strh r0, [r4, 0x24] + strh r1, [r4, 0x26] + ldr r0, _0804BE1C @ =sub_804BE48 + str r0, [r4, 0x1C] + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0804BDE2 + ldrh r0, [r4, 0x2E] + negs r0, r0 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + negs r0, r0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x26] + negs r0, r0 + strh r0, [r4, 0x26] +_0804BDE2: + movs r0, 0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r6, 0 + adds r1, 0x1C + adds r1, r0, r1 + adds r0, r6 + ldr r1, [r1] + bl _call_via_r1 + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0804BE0C + ldr r0, _0804BE20 @ =sub_804BE24 + str r0, [r4, 0x1C] +_0804BE0C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804BE14: .4byte gUnknown_3004FF0 +_0804BE18: .4byte gUnknown_202063C +_0804BE1C: .4byte sub_804BE48 +_0804BE20: .4byte sub_804BE24 + thumb_func_end sub_804BD94 + + thumb_func_start sub_804BE24 +sub_804BE24: @ 804BE24 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _0804BE3E + movs r0, 0 + strh r0, [r1, 0x30] + ldr r0, _0804BE44 @ =sub_804BE48 + str r0, [r1, 0x1C] +_0804BE3E: + pop {r0} + bx r0 + .align 2, 0 +_0804BE44: .4byte sub_804BE48 + thumb_func_end sub_804BE24 + + thumb_func_start sub_804BE48 +sub_804BE48: @ 804BE48 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x24] + ldrh r1, [r2, 0x2E] + subs r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x26] + ldrh r1, [r2, 0x30] + subs r0, r1 + strh r0, [r2, 0x26] + ldr r0, [r2, 0x24] + cmp r0, 0 + bne _0804BE66 + ldr r0, _0804BE6C @ =nullsub_8 + str r0, [r2, 0x1C] +_0804BE66: + pop {r0} + bx r0 + .align 2, 0 +_0804BE6C: .4byte nullsub_8 + thumb_func_end sub_804BE48 + + thumb_func_start sub_804BE70 +sub_804BE70: @ 804BE70 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _0804BEA8 @ =sub_804BEB4 + adds r0, r5, 0 + bl sub_8044EF8 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0804BEAC @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r3, r1, r2 + movs r0, 0x1 + strh r0, [r3, 0x2E] + ldr r0, _0804BEB0 @ =gUnknown_3004FF0 + adds r4, r0 + ldrb r0, [r4] + strh r0, [r3, 0x30] + adds r2, 0x1C + adds r1, r2 + str r5, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804BEA8: .4byte sub_804BEB4 +_0804BEAC: .4byte gUnknown_202063C +_0804BEB0: .4byte gUnknown_3004FF0 + thumb_func_end sub_804BE70 + + thumb_func_start sub_804BEB4 +sub_804BEB4: @ 804BEB4 + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0804BEF0 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrh r0, [r3, 0x2E] + movs r2, 0 + strh r0, [r1, 0x26] + ldrh r0, [r3, 0x2E] + negs r0, r0 + strh r0, [r3, 0x2E] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _0804BEEC + strh r2, [r1, 0x24] + strh r2, [r1, 0x26] + adds r0, r3, 0 + bl sub_8007280 +_0804BEEC: + pop {r0} + bx r0 + .align 2, 0 +_0804BEF0: .4byte gUnknown_202063C + thumb_func_end sub_804BEB4 + + thumb_func_start sub_804BEF4 +sub_804BEF4: @ 804BEF4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0804BF50 @ =gUnknown_826056C + lsls r6, r4, 3 + adds r5, r6, r0 + ldrh r0, [r5, 0x6] + bl sub_8008804 + lsls r0, 16 + ldr r1, _0804BF54 @ =0xffff0000 + cmp r0, r1 + bne _0804BF1C + adds r0, r5, 0 + bl sub_800F034 + ldr r0, _0804BF58 @ =gUnknown_82605CC + adds r0, r6, r0 + bl sub_800F078 +_0804BF1C: + cmp r4, 0x6 + beq _0804BF48 + cmp r4, 0x6 + blt _0804BF2C + cmp r4, 0xB + bgt _0804BF2C + cmp r4, 0xA + bge _0804BF48 +_0804BF2C: + ldr r1, _0804BF50 @ =gUnknown_826056C + lsls r0, r4, 3 + adds r0, r1 + ldrh r0, [r0, 0x6] + bl sub_8008804 + adds r1, r0, 0 + lsls r1, 16 + ldr r0, _0804BF5C @ =gUnknown_8D022E8 + lsrs r1, 11 + ldr r2, _0804BF60 @ =0x06010100 + adds r1, r2 + bl sub_800EBC0 +_0804BF48: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804BF50: .4byte gUnknown_826056C +_0804BF54: .4byte 0xffff0000 +_0804BF58: .4byte gUnknown_82605CC +_0804BF5C: .4byte gUnknown_8D022E8 +_0804BF60: .4byte 0x06010100 + thumb_func_end sub_804BEF4 + + thumb_func_start sub_804BF64 +sub_804BF64: @ 804BF64 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + ldr r0, _0804BF88 @ =gUnknown_826056C + lsrs r4, 21 + adds r0, r4, r0 + ldrh r0, [r0, 0x6] + bl sub_800874C + ldr r0, _0804BF8C @ =gUnknown_82605CC + adds r4, r0 + ldrh r0, [r4, 0x4] + bl sub_8008A30 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804BF88: .4byte gUnknown_826056C +_0804BF8C: .4byte gUnknown_82605CC + thumb_func_end sub_804BF64 + + thumb_func_start sub_804BF90 +sub_804BF90: @ 804BF90 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0804BFBC + ldr r1, _0804BFB4 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0804BFB8 @ =gUnknown_202402C + b _0804BFCA + .align 2, 0 +_0804BFB4: .4byte gUnknown_2023BCE +_0804BFB8: .4byte gUnknown_202402C +_0804BFBC: + ldr r1, _0804BFDC @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0804BFE0 @ =gUnknown_2024284 +_0804BFCA: + adds r0, r1 + movs r1, 0x26 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0804BFDC: .4byte gUnknown_2023BCE +_0804BFE0: .4byte gUnknown_2024284 + thumb_func_end sub_804BF90 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex.s b/asm/pokedex.s new file mode 100644 index 000000000..35c369cb1 --- /dev/null +++ b/asm/pokedex.s @@ -0,0 +1,282 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8088E20 +sub_8088E20: @ 8088E20 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08088E34 @ =gUnknown_844E850 + adds r0, r1 + bx lr + .align 2, 0 +_08088E34: .4byte gUnknown_844E850 + thumb_func_end sub_8088E20 + + thumb_func_start sub_8088E38 +sub_8088E38: @ 8088E38 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + beq _08088E4E + cmp r1, 0x1 + beq _08088E60 + movs r0, 0x1 + b _08088E6C +_08088E4E: + ldr r0, _08088E5C @ =gUnknown_844E850 + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0xC] + b _08088E6C + .align 2, 0 +_08088E5C: .4byte gUnknown_844E850 +_08088E60: + ldr r0, _08088E70 @ =gUnknown_844E850 + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0xE] +_08088E6C: + pop {r1} + bx r1 + .align 2, 0 +_08088E70: .4byte gUnknown_844E850 + thumb_func_end sub_8088E38 + + thumb_func_start sub_8088E74 +sub_8088E74: @ 8088E74 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + asrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8088E74 + + thumb_func_start sub_8088E8C +sub_8088E8C: @ 8088E8C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + movs r0, 0 + ldr r7, _08088EA4 @ =0x00000181 +_08088E98: + cmp r6, 0 + beq _08088EA8 + cmp r6, 0x1 + beq _08088EB2 + adds r4, r0, 0x1 + b _08088ECA + .align 2, 0 +_08088EA4: .4byte 0x00000181 +_08088EA8: + adds r4, r0, 0x1 + lsls r0, r4, 16 + lsrs r0, 16 + movs r1, 0 + b _08088EBA +_08088EB2: + adds r4, r0, 0x1 + lsls r0, r4, 16 + lsrs r0, 16 + movs r1, 0x1 +_08088EBA: + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _08088ECA + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08088ECA: + lsls r0, r4, 16 + lsrs r0, 16 + cmp r0, r7 + bls _08088E98 + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8088E8C + + thumb_func_start sub_8088EDC +sub_8088EDC: @ 8088EDC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + movs r0, 0 +_08088EE6: + cmp r6, 0 + beq _08088EF2 + cmp r6, 0x1 + beq _08088EFC + adds r4, r0, 0x1 + b _08088F14 +_08088EF2: + adds r4, r0, 0x1 + lsls r0, r4, 16 + lsrs r0, 16 + movs r1, 0 + b _08088F04 +_08088EFC: + adds r4, r0, 0x1 + lsls r0, r4, 16 + lsrs r0, 16 + movs r1, 0x1 +_08088F04: + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _08088F14 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08088F14: + lsls r0, r4, 16 + lsrs r0, 16 + cmp r0, 0x96 + bls _08088EE6 + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8088EDC + + thumb_func_start sub_8088F24 +sub_8088F24: @ 8088F24 + push {r4,lr} + movs r0, 0 +_08088F28: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_80432E0 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + bne _08088F48 + movs r0, 0 + b _08088F50 +_08088F48: + adds r0, r4, 0 + cmp r0, 0xC7 + bls _08088F28 + movs r0, 0x1 +_08088F50: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8088F24 + + thumb_func_start sub_8088F58 +sub_8088F58: @ 8088F58 + push {r4,lr} + movs r0, 0 +_08088F5C: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + bne _08088F74 + movs r0, 0 + b _08088F7C +_08088F74: + adds r0, r4, 0 + cmp r0, 0x95 + bls _08088F5C + movs r0, 0x1 +_08088F7C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8088F58 + + thumb_func_start sub_8088F84 +sub_8088F84: @ 8088F84 + push {r4,r5,lr} + movs r0, 0 +_08088F88: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _08088FD6 + adds r0, r4, 0 + cmp r0, 0x95 + bls _08088F88 + movs r0, 0x97 +_08088FA4: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _08088FD6 + adds r0, r4, 0 + cmp r0, 0xF7 + bls _08088FA4 + movs r0, 0xFB + ldr r5, _08088FDC @ =0x0000017f +_08088FC2: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + bne _08088FE0 +_08088FD6: + movs r0, 0 + b _08088FE8 + .align 2, 0 +_08088FDC: .4byte 0x0000017f +_08088FE0: + adds r0, r4, 0 + cmp r0, r5 + bls _08088FC2 + movs r0, 0x1 +_08088FE8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8088F84 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_area_markers.s b/asm/pokedex_area_markers.s new file mode 100644 index 000000000..a38fc5c6a --- /dev/null +++ b/asm/pokedex_area_markers.s @@ -0,0 +1,357 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8134200 +sub_8134200: @ 8134200 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08134228 @ =gUnknown_3005098 + adds r1, r0 + ldr r2, _0813422C @ =gUnknown_202063C + ldrb r1, [r1, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_08134228: .4byte gUnknown_3005098 +_0813422C: .4byte gUnknown_202063C + thumb_func_end sub_8134200 + + thumb_func_start sub_8134230 +sub_8134230: @ 8134230 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + mov r9, r0 + mov r8, r2 + adds r6, r3, 0 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + lsls r1, 16 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _081343C4 @ =gUnknown_846343C + str r0, [sp, 0x20] + ldr r3, _081343C8 @ =0xffff0000 + add r0, sp, 0x20 + ldr r2, [r0, 0x4] + ands r2, r3 + movs r3, 0x94 + lsls r3, 3 + orrs r2, r3 + lsrs r7, r1, 16 + ldr r5, _081343CC @ =0x0000ffff + ands r2, r5 + orrs r2, r1 + str r2, [r0, 0x4] + bl sub_800EBCC + ldr r0, _081343D0 @ =gUnknown_846341C + mov r3, r8 + lsls r3, 4 + mov r8, r3 + movs r1, 0x80 + lsls r1, 1 + add r1, r8 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _081343D4 @ =sub_8134200 + movs r1, 0 + bl sub_807741C + mov r10, r0 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r4, r0, 2 + add r4, r10 + lsls r4, 3 + ldr r0, _081343D8 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + strb r0, [r4, 0xC] + strh r7, [r4, 0xE] + ldrh r0, [r4, 0x10] + orrs r5, r0 + strh r5, [r4, 0x10] + movs r0, 0xF0 + lsls r0, 1 + bl sub_8002B9C + adds r1, r0, 0 + str r1, [r4, 0x8] + str r1, [r4, 0x4] + mov r0, r9 + bl sub_813C9DC + strb r0, [r4] + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _081343DC @ =0x00002f42 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _081343E0 @ =0x0000080c + movs r0, 0x52 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r1, _081343E4 @ =0x00001f1f + movs r0, 0x48 + bl sub_8000A38 + ldr r1, _081343E8 @ =0x00002f3d + movs r0, 0x4A + bl sub_8000A38 + add r1, sp, 0x8 + ldr r0, _081343EC @ =gUnknown_8231D00 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + add r0, sp, 0x8 + strh r7, [r0] + adds r6, 0x20 + movs r1, 0x68 + adds r2, r6, 0 + movs r3, 0 + bl sub_8006F8C + strb r0, [r4, 0xD] + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _081343F0 @ =gUnknown_202063C + adds r0, r5 + adds r1, r4, 0 + bl sub_8008A58 + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r2, [r0, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x1] + ldrb r0, [r4, 0xD] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, 0x5] + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x42 + ldrb r2, [r0] + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0xF + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x1 + bl sub_80019BC + mov r0, r10 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081343C4: .4byte gUnknown_846343C +_081343C8: .4byte 0xffff0000 +_081343CC: .4byte 0x0000ffff +_081343D0: .4byte gUnknown_846341C +_081343D4: .4byte sub_8134200 +_081343D8: .4byte gUnknown_3005098 +_081343DC: .4byte 0x00002f42 +_081343E0: .4byte 0x0000080c +_081343E4: .4byte 0x00001f1f +_081343E8: .4byte 0x00002f3d +_081343EC: .4byte gUnknown_8231D00 +_081343F0: .4byte gUnknown_202063C + thumb_func_end sub_8134230 + + thumb_func_start sub_81343F4 +sub_81343F4: @ 81343F4 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08134498 @ =gUnknown_3005098 + adds r4, r0 + ldrh r0, [r4, 0xE] + bl sub_800874C + ldrb r1, [r4, 0xD] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0813449C @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r0, [r4, 0x8] + bl sub_8002BC4 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r4, _081344A0 @ =0x00001f1f + movs r0, 0x48 + adds r1, r4, 0 + bl sub_8000A38 + movs r0, 0x4A + adds r1, r4, 0 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x2 + bl sub_80019E4 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x1 + bl sub_80019BC + adds r0, r5, 0 + bl sub_8077508 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08134498: .4byte gUnknown_3005098 +_0813449C: .4byte gUnknown_202063C +_081344A0: .4byte 0x00001f1f + thumb_func_end sub_81343F4 + + thumb_func_start sub_81344A4 +sub_81344A4: @ 81344A4 + push {r4,lr} + lsls r0, 2 + adds r0, r2 + ldr r4, _081344D8 @ =gUnknown_8463564 + ldr r3, _081344DC @ =gUnknown_8463580 + lsls r1, 2 + adds r2, r1, r3 + ldrb r2, [r2] + lsls r2, 24 + asrs r2, 24 + lsls r2, 2 + adds r2, r4 + ldr r2, [r2] + ldr r2, [r2] + str r2, [r0] + adds r2, r3, 0x1 + adds r2, r1, r2 + ldrb r2, [r2] + strb r2, [r0] + adds r3, 0x2 + adds r1, r3 + ldrb r1, [r1] + strb r1, [r0, 0x1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081344D8: .4byte gUnknown_8463564 +_081344DC: .4byte gUnknown_8463580 + thumb_func_end sub_81344A4 + + thumb_func_start sub_81344E0 +sub_81344E0: @ 81344E0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081344F4 @ =gUnknown_3005098 + adds r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_081344F4: .4byte gUnknown_3005098 + thumb_func_end sub_81344E0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s new file mode 100644 index 000000000..c96b634fe --- /dev/null +++ b/asm/pokedex_screen.s @@ -0,0 +1,9015 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81024C0 +sub_81024C0: @ 81024C0 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_81024C0 + + thumb_func_start sub_81024D4 +sub_81024D4: @ 81024D4 + push {lr} + ldr r0, _08102500 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _081024EC + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _08102504 +_081024EC: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + b _08102508 + .align 2, 0 +_08102500: .4byte gUnknown_2037AB8 +_08102504: + bl sub_80704D0 +_08102508: + pop {r0} + bx r0 + thumb_func_end sub_81024D4 + + thumb_func_start sub_810250C +sub_810250C: @ 810250C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + bl sub_806E25C + lsls r0, 24 + lsrs r6, r0, 24 + bl m4aSoundVSyncOff + movs r0, 0 + bl sub_80006F4 + bl sub_8070528 + bl sub_8006B10 + bl sub_80773BC + bl sub_8087E64 + movs r0, 0x1 + bl sub_8001618 + ldr r1, _08102598 @ =gUnknown_8451EBC + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x3 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x2 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + cmp r6, 0 + beq _081025A0 + ldr r1, _0810259C @ =gUnknown_84403AC + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + adds r2, r4, 0 + movs r3, 0 + bl sub_80F696C + b _081025AE + .align 2, 0 +_08102598: .4byte gUnknown_8451EBC +_0810259C: .4byte gUnknown_84403AC +_081025A0: + ldr r1, _081026A4 @ =gUnknown_8440274 + str r6, [sp] + movs r0, 0x3 + adds r2, r4, 0 + movs r3, 0 + bl sub_80F696C +_081025AE: + ldr r0, _081026A8 @ =gUnknown_8451ECC + bl sub_8003B24 + bl sub_8002C28 + bl m4aSoundVSyncOn + ldr r0, _081026AC @ =sub_81024C0 + bl sub_80006F4 + movs r0, 0x1 + bl sub_8000B68 + ldr r0, _081026B0 @ =sub_810287C + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _081026B4 @ =gUnknown_203ACF0 + movs r0, 0x70 + bl sub_8002B9C + str r0, [r5] + ldr r1, _081026B8 @ =gUnknown_8451EE4 + movs r2, 0x70 + bl memcpy + ldr r0, [r5] + strb r4, [r0] + movs r0, 0xC1 + lsls r0, 4 + bl sub_8002B9C + ldr r1, [r5] + str r0, [r1, 0x44] + movs r0, 0 + movs r1, 0x1 + bl sub_8104BBC + ldr r1, [r5] + adds r1, 0x6A + strh r0, [r1] + movs r0, 0x1 + movs r1, 0x1 + bl sub_8104BBC + ldr r1, [r5] + adds r1, 0x6C + strh r0, [r1] + movs r0, 0 + movs r1, 0 + bl sub_8104BBC + ldr r1, [r5] + adds r1, 0x66 + strh r0, [r1] + movs r0, 0x1 + movs r1, 0 + bl sub_8104BBC + ldr r1, [r5] + adds r1, 0x68 + strh r0, [r1] + movs r0, 0x80 + bl sub_8072474 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r2, _081026BC @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + cmp r6, 0 + beq _081026C4 + ldr r0, _081026C0 @ =gUnknown_84406E0 + movs r2, 0x80 + lsls r2, 2 + movs r1, 0 + bl sub_80703EC + b _081026D0 + .align 2, 0 +_081026A4: .4byte gUnknown_8440274 +_081026A8: .4byte gUnknown_8451ECC +_081026AC: .4byte sub_81024C0 +_081026B0: .4byte sub_810287C +_081026B4: .4byte gUnknown_203ACF0 +_081026B8: .4byte gUnknown_8451EE4 +_081026BC: .4byte gUnknown_2037AB8 +_081026C0: .4byte gUnknown_84406E0 +_081026C4: + ldr r0, _08102758 @ =gUnknown_84404C8 + movs r2, 0x80 + lsls r2, 2 + movs r1, 0 + bl sub_80703EC +_081026D0: + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0x11 + str r5, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + movs r0, 0x2 + mov r8, r0 + str r0, [sp, 0x4] + movs r6, 0xF + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002554 + str r4, [sp] + mov r0, r8 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0x12 + bl sub_8002554 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08102758: .4byte gUnknown_84404C8 + thumb_func_end sub_810250C + + thumb_func_start sub_810275C +sub_810275C: @ 810275C + push {lr} + bl sub_810250C + movs r1, 0xC0 + lsls r1, 7 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + ldr r0, _08102794 @ =sub_81024D4 + bl sub_8000544 + movs r0, 0x4 + bl sub_812B1F0 + pop {r0} + bx r0 + .align 2, 0 +_08102794: .4byte sub_81024D4 + thumb_func_end sub_810275C + + thumb_func_start sub_8102798 +sub_8102798: @ 8102798 + push {r4,lr} + sub sp, 0x4 + ldr r0, _081027B4 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r1, [r4] + cmp r1, 0x1 + beq _081027D8 + cmp r1, 0x1 + bgt _081027B8 + cmp r1, 0 + beq _081027BE + b _0810284A + .align 2, 0 +_081027B4: .4byte gUnknown_30030F0 +_081027B8: + cmp r1, 0x2 + beq _081027F2 + b _0810284A +_081027BE: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldrb r0, [r4] + adds r0, 0x1 +_081027D2: + strb r0, [r4] +_081027D4: + movs r0, 0 + b _0810284C +_081027D8: + ldr r0, _081027E8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081027EC + movs r0, 0x2 + b _081027D2 + .align 2, 0 +_081027E8: .4byte gUnknown_2037AB8 +_081027EC: + bl sub_80704D0 + b _081027D4 +_081027F2: + ldr r4, _08102854 @ =gUnknown_203ACF0 + ldr r0, [r4] + ldr r0, [r0, 0x44] + cmp r0, 0 + beq _08102800 + bl sub_8002BC4 +_08102800: + ldr r0, [r4] + cmp r0, 0 + beq _0810280A + bl sub_8002BC4 +_0810280A: + bl sub_8003ECC + movs r0, 0 + bl sub_8002008 + cmp r0, 0 + beq _0810281C + bl sub_8002BC4 +_0810281C: + movs r0, 0x1 + bl sub_8002008 + cmp r0, 0 + beq _0810282A + bl sub_8002BC4 +_0810282A: + movs r0, 0x2 + bl sub_8002008 + cmp r0, 0 + beq _08102838 + bl sub_8002BC4 +_08102838: + movs r0, 0x3 + bl sub_8002008 + cmp r0, 0 + beq _08102846 + bl sub_8002BC4 +_08102846: + bl sub_807249C +_0810284A: + movs r0, 0x1 +_0810284C: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08102854: .4byte gUnknown_203ACF0 + thumb_func_end sub_8102798 + + thumb_func_start sub_8102858 +sub_8102858: @ 8102858 + push {lr} + bl sub_8102798 + lsls r0, 24 + cmp r0, 0 + beq _08102874 + movs r1, 0xC0 + lsls r1, 7 + movs r0, 0 + bl sub_8000AF4 + ldr r0, _08102878 @ =sub_80568A8 + bl sub_8000544 +_08102874: + pop {r0} + bx r0 + .align 2, 0 +_08102878: .4byte sub_80568A8 + thumb_func_end sub_8102858 + + thumb_func_start sub_810287C +sub_810287C: @ 810287C + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0810289C @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0x9 + bls _08102892 + b _08102C18 +_08102892: + lsls r0, 2 + ldr r1, _081028A0 @ =_081028A4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810289C: .4byte gUnknown_203ACF0 +_081028A0: .4byte _081028A4 + .align 2, 0 +_081028A4: + .4byte _081028CC + .4byte _081028FC + .4byte _08102930 + .4byte _08102940 + .4byte _08102964 + .4byte _081029D0 + .4byte _08102A14 + .4byte _08102B24 + .4byte _08102B94 + .4byte _08102BD8 +_081028CC: + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x8] + movs r4, 0 +_081028D4: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_81068A0 + ldr r1, _081028F8 @ =gUnknown_203ACF0 + ldr r2, [r1] + lsls r0, 24 + lsrs r0, 24 + lsls r0, r4 + ldr r1, [r2, 0x8] + orrs r1, r0 + str r1, [r2, 0x8] + adds r4, 0x1 + cmp r4, 0x8 + ble _081028D4 + movs r0, 0x2 + strb r0, [r2, 0x1] + b _08102C18 + .align 2, 0 +_081028F8: .4byte gUnknown_203ACF0 +_081028FC: + ldr r0, [r4] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, [r4] + adds r0, 0x14 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x15 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x16 + bl sub_81047B0 + ldr r0, _0810292C @ =sub_8102858 + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 + b _08102C18 + .align 2, 0 +_0810292C: .4byte sub_8102858 +_08102930: + bl sub_8102C28 + ldr r0, _0810293C @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x3 + b _08102C16 + .align 2, 0 +_0810293C: .4byte gUnknown_203ACF0 +_08102940: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _08102960 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x4 + b _08102C16 + .align 2, 0 +_08102960: .4byte gUnknown_203ACF0 +_08102964: + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0 + bl sub_80019BC + ldr r2, _081029A4 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _081029AC + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r0, 0x1 + negs r0, r0 + ldr r1, _081029A8 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8070588 + b _081029BC + .align 2, 0 +_081029A4: .4byte gUnknown_2037AB8 +_081029A8: .4byte 0x0000ffff +_081029AC: + ldr r0, _081029C4 @ =0xffff7fff + ldr r1, _081029C8 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_081029BC: + ldr r0, _081029CC @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x5 + b _08102C16 + .align 2, 0 +_081029C4: .4byte 0xffff7fff +_081029C8: .4byte 0x0000ffff +_081029CC: .4byte gUnknown_203ACF0 +_081029D0: + ldr r4, _081029EC @ =gUnknown_203ACF0 + ldr r1, [r4] + ldrb r0, [r1, 0x17] + adds r1, 0x62 + movs r2, 0 + bl sub_81072D4 + bl sub_806E25C + cmp r0, 0 + beq _081029F4 + ldr r0, _081029F0 @ =gUnknown_84520E4 + b _081029F6 + .align 2, 0 +_081029EC: .4byte gUnknown_203ACF0 +_081029F0: .4byte gUnknown_84520E4 +_081029F4: + ldr r0, _08102A0C @ =gUnknown_84520D4 +_081029F6: + ldr r1, [r4] + adds r1, 0x62 + bl sub_8133A20 + ldr r1, [r4] + adds r1, 0x60 + strb r0, [r1] + ldr r0, _08102A10 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x6 + b _08102C16 + .align 2, 0 +_08102A0C: .4byte gUnknown_84520D4 +_08102A10: .4byte gUnknown_203ACF0 +_08102A14: + ldr r0, [r4] + ldrb r0, [r0, 0x17] + bl sub_8107078 + ldr r1, [r4] + str r0, [r1, 0xC] + ldrb r0, [r1, 0x17] + adds r1, 0x62 + movs r2, 0 + bl sub_81072D4 + ldr r0, _08102A4C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r3, 0x1 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08102B14 + ldr r2, [r4] + ldr r1, [r2, 0xC] + cmp r1, 0xD + bhi _08102A50 + cmp r1, 0xA + bcs _08102ADC + cmp r1, 0x8 + bls _08102A62 + b _08102AA4 + .align 2, 0 +_08102A4C: .4byte gUnknown_30030F0 +_08102A50: + cmp r1, 0xE + beq _08102AA4 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _08102A5E + b _08102C18 +_08102A5E: + strb r3, [r2, 0x1] + b _08102C18 +_08102A62: + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_81068A0 + lsls r0, 24 + cmp r0, 0 + bne _08102A72 + b _08102C18 +_08102A72: + ldr r0, [r4] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, [r4] + ldr r1, [r0, 0xC] + adds r0, 0x28 + strb r1, [r0] + ldr r0, _08102A9C @ =0xffff7fff + ldr r1, _08102AA0 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x7 + b _08102C16 + .align 2, 0 +_08102A9C: .4byte 0xffff7fff +_08102AA0: .4byte 0x0000ffff +_08102AA4: + ldr r4, _08102AD0 @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r1, [r4] + ldr r0, [r1, 0xC] + subs r0, 0x9 + adds r1, 0x42 + strb r0, [r1] + ldr r0, _08102AD4 @ =0xffff7fff + ldr r1, _08102AD8 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x9 + b _08102C16 + .align 2, 0 +_08102AD0: .4byte gUnknown_203ACF0 +_08102AD4: .4byte 0xffff7fff +_08102AD8: .4byte 0x0000ffff +_08102ADC: + adds r0, r2, 0 + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, [r4] + ldr r1, [r0, 0xC] + subs r1, 0x9 + adds r0, 0x42 + movs r2, 0 + strb r1, [r0] + ldr r0, [r4] + strh r2, [r0, 0x3A] + strh r2, [r0, 0x38] + ldr r0, _08102B0C @ =0xffff7fff + ldr r1, _08102B10 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x8 + b _08102C16 + .align 2, 0 +_08102B0C: .4byte 0xffff7fff +_08102B10: .4byte 0x0000ffff +_08102B14: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08102B1E + b _08102C18 +_08102B1E: + ldr r0, [r4] + strb r3, [r0, 0x1] + b _08102C18 +_08102B24: + ldr r2, [r4] + ldrb r0, [r2, 0x17] + adds r1, r2, 0 + adds r1, 0x12 + adds r2, 0x10 + bl sub_810713C + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + ldr r0, [r4] + adds r0, 0x14 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x15 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x16 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x2B + movs r2, 0 + strb r2, [r0] + ldr r0, [r4] + adds r0, 0x2D + strb r2, [r0] + ldr r0, [r4] + adds r0, 0x2F + strb r2, [r0] + ldr r1, _08102B8C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08102B90 @ =sub_8103AC8 + str r1, [r0] + ldr r0, [r4] + strb r2, [r0, 0x1] + b _08102C18 + .align 2, 0 +_08102B8C: .4byte gUnknown_3005090 +_08102B90: .4byte sub_8103AC8 +_08102B94: + ldr r2, [r4] + ldrb r0, [r2, 0x17] + adds r1, r2, 0 + adds r1, 0x12 + adds r2, 0x10 + bl sub_810713C + movs r0, 0x1 + bl sub_80019D0 + ldr r0, [r4] + adds r0, 0x14 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x15 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x16 + bl sub_81047B0 + ldr r1, _08102BD0 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08102BD4 @ =sub_8103238 + b _08102C10 + .align 2, 0 +_08102BD0: .4byte gUnknown_3005090 +_08102BD4: .4byte sub_8103238 +_08102BD8: + ldr r2, [r4] + ldrb r0, [r2, 0x17] + adds r1, r2, 0 + adds r1, 0x12 + adds r2, 0x10 + bl sub_810713C + movs r0, 0x1 + bl sub_80019D0 + ldr r0, [r4] + adds r0, 0x14 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x15 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x16 + bl sub_81047B0 + ldr r1, _08102C20 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08102C24 @ =sub_8102F80 +_08102C10: + str r1, [r0] + ldr r1, [r4] + movs r0, 0 +_08102C16: + strb r0, [r1, 0x1] +_08102C18: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08102C20: .4byte gUnknown_3005090 +_08102C24: .4byte sub_8102F80 + thumb_func_end sub_810287C + + thumb_func_start sub_8102C28 +sub_8102C28: @ 8102C28 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x24 + movs r5, 0x1E + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0 + mov r9, r0 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0xE + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + movs r6, 0x11 + str r6, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + str r5, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + ldr r0, _08102DA4 @ =gUnknown_8451F54 + bl sub_8003CE4 + ldr r7, _08102DA8 @ =gUnknown_203ACF0 + ldr r1, [r7] + strb r0, [r1, 0x14] + ldr r0, _08102DAC @ =gUnknown_8451F5C + bl sub_8003CE4 + ldr r1, [r7] + strb r0, [r1, 0x15] + ldr r0, _08102DB0 @ =gUnknown_8451F64 + bl sub_8003CE4 + ldr r1, [r7] + strb r0, [r1, 0x16] + bl sub_806E25C + adds r5, r0, 0 + cmp r5, 0 + bne _08102C9E + b _08102DC8 +_08102C9E: + add r1, sp, 0xC + ldr r0, _08102DB4 @ =gUnknown_84520BC + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + add r2, sp, 0xC + ldr r0, [r7] + ldrb r1, [r0, 0x14] + strb r1, [r2, 0x10] + ldrh r1, [r0, 0x12] + ldrh r2, [r0, 0x10] + add r0, sp, 0xC + bl sub_8106FF8 + ldr r1, [r7] + strb r0, [r1, 0x17] + ldr r0, [r7] + ldrb r0, [r0, 0x16] + movs r1, 0 + bl sub_800445C + ldr r0, [r7] + ldrb r0, [r0, 0x16] + ldr r2, _08102DB8 @ =gUnknown_8415DC4 + movs r5, 0x2 + str r5, [sp] + mov r1, r9 + str r1, [sp, 0x4] + movs r1, 0 + movs r3, 0 + bl sub_81047C8 + ldr r0, [r7] + ldrb r0, [r0, 0x16] + ldr r2, _08102DBC @ =gUnknown_8415DD1 + mov r8, r2 + movs r4, 0xD + str r4, [sp] + mov r3, r9 + str r3, [sp, 0x4] + movs r1, 0 + movs r3, 0x8 + bl sub_81047C8 + ldr r1, [r7] + ldrb r0, [r1, 0x16] + adds r1, 0x66 + ldrh r2, [r1] + str r4, [sp] + str r5, [sp, 0x4] + movs r1, 0 + movs r3, 0x34 + bl sub_810491C + ldr r0, [r7] + ldrb r0, [r0, 0x16] + ldr r6, _08102DC0 @ =gUnknown_8415DD7 + movs r4, 0x18 + str r4, [sp] + mov r1, r9 + str r1, [sp, 0x4] + movs r1, 0 + adds r2, r6, 0 + movs r3, 0x8 + bl sub_81047C8 + ldr r1, [r7] + ldrb r0, [r1, 0x16] + adds r1, 0x6A + ldrh r2, [r1] + str r4, [sp] + str r5, [sp, 0x4] + movs r1, 0 + movs r3, 0x34 + bl sub_810491C + ldr r0, [r7] + ldrb r0, [r0, 0x16] + ldr r2, _08102DC4 @ =gUnknown_8415DCA + movs r1, 0x25 + str r1, [sp] + mov r3, r9 + str r3, [sp, 0x4] + movs r1, 0 + movs r3, 0 + bl sub_81047C8 + ldr r0, [r7] + ldrb r0, [r0, 0x16] + movs r4, 0x30 + str r4, [sp] + mov r1, r9 + str r1, [sp, 0x4] + movs r1, 0 + mov r2, r8 + movs r3, 0x8 + bl sub_81047C8 + ldr r1, [r7] + ldrb r0, [r1, 0x16] + adds r1, 0x68 + ldrh r2, [r1] + str r4, [sp] + str r5, [sp, 0x4] + movs r1, 0 + movs r3, 0x34 + bl sub_810491C + ldr r0, [r7] + ldrb r0, [r0, 0x16] + movs r4, 0x3B + str r4, [sp] + mov r2, r9 + str r2, [sp, 0x4] + movs r1, 0 + adds r2, r6, 0 + movs r3, 0x8 + bl sub_81047C8 + ldr r1, [r7] + ldrb r0, [r1, 0x16] + adds r1, 0x6C + ldrh r2, [r1] + str r4, [sp] + str r5, [sp, 0x4] + movs r1, 0 + movs r3, 0x34 + bl sub_810491C + b _08102E4A + .align 2, 0 +_08102DA4: .4byte gUnknown_8451F54 +_08102DA8: .4byte gUnknown_203ACF0 +_08102DAC: .4byte gUnknown_8451F5C +_08102DB0: .4byte gUnknown_8451F64 +_08102DB4: .4byte gUnknown_84520BC +_08102DB8: .4byte gUnknown_8415DC4 +_08102DBC: .4byte gUnknown_8415DD1 +_08102DC0: .4byte gUnknown_8415DD7 +_08102DC4: .4byte gUnknown_8415DCA +_08102DC8: + add r1, sp, 0xC + ldr r0, _08102EA8 @ =gUnknown_8452004 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + add r2, sp, 0xC + ldr r0, [r7] + ldrb r1, [r0, 0x14] + strb r1, [r2, 0x10] + ldrh r1, [r0, 0x12] + ldrh r2, [r0, 0x10] + add r0, sp, 0xC + bl sub_8106FF8 + ldr r1, [r7] + strb r0, [r1, 0x17] + ldr r0, [r7] + ldrb r0, [r0, 0x16] + movs r1, 0 + bl sub_800445C + ldr r0, [r7] + ldrb r0, [r0, 0x16] + ldr r2, _08102EAC @ =gUnknown_8415DC4 + movs r1, 0x9 + str r1, [sp] + str r5, [sp, 0x4] + movs r1, 0x1 + movs r3, 0 + bl sub_81047C8 + ldr r1, [r7] + ldrb r0, [r1, 0x16] + adds r1, 0x66 + ldrh r2, [r1] + movs r1, 0x15 + str r1, [sp] + movs r4, 0x2 + str r4, [sp, 0x4] + movs r1, 0x1 + movs r3, 0x20 + bl sub_810491C + ldr r0, [r7] + ldrb r0, [r0, 0x16] + ldr r2, _08102EB0 @ =gUnknown_8415DCA + movs r1, 0x25 + str r1, [sp] + str r5, [sp, 0x4] + movs r1, 0x1 + movs r3, 0 + bl sub_81047C8 + ldr r1, [r7] + ldrb r0, [r1, 0x16] + adds r1, 0x68 + ldrh r2, [r1] + movs r1, 0x31 + str r1, [sp] + str r4, [sp, 0x4] + movs r1, 0x1 + movs r3, 0x20 + bl sub_810491C +_08102E4A: + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + ldr r0, _08102EB4 @ =gUnknown_8415D9C + movs r1, 0x1 + bl sub_8106E78 + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + ldr r0, _08102EB8 @ =gUnknown_8415DB8 + bl sub_8104C2C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + ldr r4, _08102EBC @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrb r0, [r0, 0x16] + bl sub_8003FA0 + ldr r0, [r4] + ldrb r0, [r0, 0x16] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x24 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08102EA8: .4byte gUnknown_8452004 +_08102EAC: .4byte gUnknown_8415DC4 +_08102EB0: .4byte gUnknown_8415DCA +_08102EB4: .4byte gUnknown_8415D9C +_08102EB8: .4byte gUnknown_8415DB8 +_08102EBC: .4byte gUnknown_203ACF0 + thumb_func_end sub_8102C28 + + thumb_func_start sub_8102EC0 +sub_8102EC0: @ 8102EC0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _08102ED0 + movs r0, 0x5 + bl sub_80722CC +_08102ED0: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + bne _08102F00 + ldr r0, _08102EF4 @ =gUnknown_203ACF0 + ldr r0, [r0] + ldrb r0, [r0, 0x15] + ldr r1, _08102EF8 @ =gUnknown_8440EF0 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r0, _08102EFC @ =gUnknown_8443460 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + b _08102F24 + .align 2, 0 +_08102EF4: .4byte gUnknown_203ACF0 +_08102EF8: .4byte gUnknown_8440EF0 +_08102EFC: .4byte gUnknown_8443460 +_08102F00: + ldr r0, _08102F40 @ =gUnknown_203ACF0 + ldr r0, [r0] + ldrb r0, [r0, 0x15] + ldr r4, _08102F44 @ =gUnknown_84520F4 + lsls r5, 3 + adds r1, r5, r4 + ldr r1, [r1] + movs r2, 0 + movs r3, 0 + bl sub_8004404 + adds r4, 0x4 + adds r5, r4 + ldr r0, [r5] + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC +_08102F24: + ldr r4, _08102F40 @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrb r0, [r0, 0x15] + bl sub_8003FA0 + ldr r0, [r4] + ldrb r0, [r0, 0x15] + movs r1, 0x2 + bl sub_8003F20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08102F40: .4byte gUnknown_203ACF0 +_08102F44: .4byte gUnknown_84520F4 + thumb_func_end sub_8102EC0 + + thumb_func_start sub_8102F48 +sub_8102F48: @ 8102F48 + push {lr} + adds r2, r1, 0 + cmp r2, 0x8 + bhi _08102F60 + ldr r0, _08102F6C @ =gUnknown_203ACF0 + ldr r0, [r0] + movs r1, 0x1 + lsls r1, r2 + ldr r0, [r0, 0x8] + ands r0, r1 + cmp r0, 0 + beq _08102F70 +_08102F60: + movs r0, 0x1 + movs r1, 0 + movs r2, 0x3 + bl sub_8107A9C + b _08102F7A + .align 2, 0 +_08102F6C: .4byte gUnknown_203ACF0 +_08102F70: + movs r0, 0xA + movs r1, 0 + movs r2, 0xB + bl sub_8107A9C +_08102F7A: + pop {r0} + bx r0 + thumb_func_end sub_8102F48 + + thumb_func_start sub_8102F80 +sub_8102F80: @ 8102F80 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08102FA0 @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0x7 + bls _08102F96 + b _0810316C +_08102F96: + lsls r0, 2 + ldr r1, _08102FA4 @ =_08102FA8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08102FA0: .4byte gUnknown_203ACF0 +_08102FA4: .4byte _08102FA8 + .align 2, 0 +_08102FA8: + .4byte _08102FC8 + .4byte _08102FF8 + .4byte _08103028 + .4byte _08103038 + .4byte _08103050 + .4byte _0810307C + .4byte _08103098 + .4byte _0810312C +_08102FC8: + movs r0, 0x10 + movs r1, 0 + bl sub_8107D38 + movs r0, 0x20 + movs r1, 0x1 + bl sub_8107D38 + ldr r4, _08102FF4 @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x42 + ldrb r0, [r0] + bl sub_8103518 + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0x48 + strh r0, [r1] + movs r0, 0x2 + strb r0, [r2, 0x1] + b _0810316C + .align 2, 0 +_08102FF4: .4byte gUnknown_203ACF0 +_08102FF8: + ldr r0, [r4] + adds r0, 0x42 + ldrb r0, [r0] + bl sub_8103988 + movs r0, 0x1 + bl sub_80019D0 + ldr r0, [r4] + adds r0, 0x40 + bl sub_81047B0 + ldr r1, _08103020 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08103024 @ =sub_810287C + b _08103164 + .align 2, 0 +_08103020: .4byte gUnknown_3005090 +_08103024: .4byte sub_810287C +_08103028: + bl sub_810317C + ldr r0, _08103034 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x3 + b _0810316A + .align 2, 0 +_08103034: .4byte gUnknown_203ACF0 +_08103038: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + ldr r0, _0810304C @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x4 + b _0810316A + .align 2, 0 +_0810304C: .4byte gUnknown_203ACF0 +_08103050: + movs r0, 0x1 + bl sub_80019BC + ldr r0, _08103070 @ =0xffff7fff + ldr r1, _08103074 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _08103078 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x5 + b _0810316A + .align 2, 0 +_08103070: .4byte 0xffff7fff +_08103074: .4byte 0x0000ffff +_08103078: .4byte gUnknown_203ACF0 +_0810307C: + ldr r1, [r4] + ldrb r0, [r1, 0x17] + adds r1, 0x62 + movs r2, 0 + bl sub_81072D4 + bl sub_81039F0 + ldr r1, [r4] + adds r1, 0x60 + strb r0, [r1] + ldr r1, [r4] + movs r0, 0x6 + b _0810316A +_08103098: + ldr r0, [r4] + adds r0, 0x41 + ldrb r0, [r0] + bl sub_8107078 + ldr r1, [r4] + str r0, [r1, 0x30] + ldrb r0, [r1, 0x17] + adds r1, 0x62 + movs r2, 0 + bl sub_81072D4 + ldr r0, _081030F0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _081030FC + ldr r1, [r4] + ldr r2, [r1, 0x30] + lsrs r0, r2, 16 + ands r0, r3 + cmp r0, 0 + beq _0810316C + adds r0, r1, 0 + adds r0, 0x5A + strh r2, [r0] + adds r0, 0x6 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, _081030F4 @ =0xffff7fff + ldr r1, _081030F8 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x7 + b _0810316A + .align 2, 0 +_081030F0: .4byte gUnknown_30030F0 +_081030F4: .4byte 0xffff7fff +_081030F8: .4byte 0x0000ffff +_081030FC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810316C + ldr r0, [r4] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, _08103124 @ =0xffff7fff + ldr r1, _08103128 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x1 + b _0810316A + .align 2, 0 +_08103124: .4byte 0xffff7fff +_08103128: .4byte 0x0000ffff +_0810312C: + ldr r0, [r4] + adds r0, 0x42 + ldrb r0, [r0] + bl sub_8103988 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + ldr r0, [r4] + adds r0, 0x40 + bl sub_81047B0 + ldr r1, _08103174 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08103178 @ =sub_81042EC +_08103164: + str r1, [r0] + ldr r1, [r4] + movs r0, 0 +_0810316A: + strb r0, [r1, 0x1] +_0810316C: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08103174: .4byte gUnknown_3005090 +_08103178: .4byte sub_81042EC + thumb_func_end sub_8102F80 + + thumb_func_start sub_810317C +sub_810317C: @ 810317C + push {r4,r5,lr} + sub sp, 0x24 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0xE + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + ldr r0, _08103224 @ =gUnknown_845216C + bl sub_8003CE4 + ldr r2, _08103228 @ =gUnknown_203ACF0 + ldr r1, [r2] + adds r1, 0x40 + strb r0, [r1] + add r1, sp, 0xC + ldr r0, _0810322C @ =gUnknown_8452174 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r2, [r2] + ldr r0, [r2, 0x44] + str r0, [sp, 0xC] + add r1, sp, 0xC + adds r0, r2, 0 + adds r0, 0x40 + ldrb r0, [r0] + strb r0, [r1, 0x10] + adds r0, r2, 0 + adds r0, 0x48 + ldrh r0, [r0] + strh r0, [r1, 0xC] + adds r0, r2, 0 + adds r0, 0x42 + ldrb r1, [r0] + add r0, sp, 0xC + bl sub_8103924 + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + ldr r0, _08103230 @ =gUnknown_8415F3D + movs r1, 0x1 + bl sub_8106E78 + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + ldr r0, _08103234 @ =gUnknown_8415F51 + bl sub_8104C2C + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x24 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08103224: .4byte gUnknown_845216C +_08103228: .4byte gUnknown_203ACF0 +_0810322C: .4byte gUnknown_8452174 +_08103230: .4byte gUnknown_8415F3D +_08103234: .4byte gUnknown_8415F51 + thumb_func_end sub_810317C + + thumb_func_start sub_8103238 +sub_8103238: @ 8103238 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08103258 @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0x7 + bls _0810324E + b _0810344C +_0810324E: + lsls r0, 2 + ldr r1, _0810325C @ =_08103260 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08103258: .4byte gUnknown_203ACF0 +_0810325C: .4byte _08103260 + .align 2, 0 +_08103260: + .4byte _08103280 + .4byte _081032B0 + .4byte _081032E8 + .4byte _081032FC + .4byte _08103318 + .4byte _08103344 + .4byte _08103362 + .4byte _08103404 +_08103280: + movs r0, 0x10 + movs r1, 0 + bl sub_8107D38 + movs r0, 0x20 + movs r1, 0x1 + bl sub_8107D38 + ldr r4, _081032AC @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x42 + ldrb r0, [r0] + bl sub_8103518 + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0x48 + strh r0, [r1] + movs r0, 0x2 + strb r0, [r2, 0x1] + b _0810344C + .align 2, 0 +_081032AC: .4byte gUnknown_203ACF0 +_081032B0: + ldr r0, [r4] + adds r0, 0x42 + ldrb r0, [r0] + bl sub_8103988 + movs r0, 0x1 + bl sub_80019D0 + ldr r0, [r4] + adds r0, 0x40 + bl sub_81047B0 + ldr r1, _081032E0 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _081032E4 @ =sub_810287C + str r1, [r0] + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x1] + b _0810344C + .align 2, 0 +_081032E0: .4byte gUnknown_3005090 +_081032E4: .4byte sub_810287C +_081032E8: + bl sub_810345C + ldr r0, _081032F8 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x3 + strb r0, [r1, 0x1] + b _0810344C + .align 2, 0 +_081032F8: .4byte gUnknown_203ACF0 +_081032FC: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + ldr r0, _08103314 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x4 + strb r0, [r1, 0x1] + b _0810344C + .align 2, 0 +_08103314: .4byte gUnknown_203ACF0 +_08103318: + movs r0, 0x1 + bl sub_80019BC + ldr r0, _08103338 @ =0xffff7fff + ldr r1, _0810333C @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _08103340 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x5 + strb r0, [r1, 0x1] + b _0810344C + .align 2, 0 +_08103338: .4byte 0xffff7fff +_0810333C: .4byte 0x0000ffff +_08103340: .4byte gUnknown_203ACF0 +_08103344: + ldr r1, [r4] + ldrb r0, [r1, 0x17] + adds r1, 0x62 + movs r2, 0 + bl sub_81072D4 + bl sub_81039F0 + ldr r1, [r4] + adds r1, 0x60 + strb r0, [r1] + ldr r1, [r4] + movs r0, 0x6 + strb r0, [r1, 0x1] + b _0810344C +_08103362: + ldr r0, [r4] + adds r0, 0x41 + ldrb r0, [r0] + bl sub_8107078 + ldr r1, [r4] + str r0, [r1, 0x30] + ldrb r0, [r1, 0x17] + adds r1, 0x62 + movs r2, 0 + bl sub_81072D4 + ldr r0, _081033C4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _081033D0 + ldr r0, [r4] + ldr r1, [r0, 0x30] + lsrs r0, r1, 16 + ands r0, r2 + cmp r0, 0 + beq _0810344C + lsls r0, r1, 16 + lsrs r0, 16 + bl sub_8106A20 + lsls r0, 24 + cmp r0, 0 + bne _0810344C + ldr r0, [r4] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, _081033C8 @ =0xffff7fff + ldr r1, _081033CC @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x7 + strb r0, [r1, 0x1] + b _0810344C + .align 2, 0 +_081033C4: .4byte gUnknown_30030F0 +_081033C8: .4byte 0xffff7fff +_081033CC: .4byte 0x0000ffff +_081033D0: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0810344C + ldr r0, [r4] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, _081033FC @ =0xffff7fff + ldr r1, _08103400 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + movs r0, 0x1 + strb r0, [r1, 0x1] + b _0810344C + .align 2, 0 +_081033FC: .4byte 0xffff7fff +_08103400: .4byte 0x0000ffff +_08103404: + ldr r0, [r4] + adds r0, 0x42 + ldrb r0, [r0] + bl sub_8103988 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + ldr r0, [r4] + adds r0, 0x40 + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x2F + movs r2, 0 + movs r1, 0x1 + strb r1, [r0] + ldr r1, _08103454 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _08103458 @ =sub_8103AC8 + str r1, [r0] + ldr r0, [r4] + strb r2, [r0, 0x1] +_0810344C: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08103454: .4byte gUnknown_3005090 +_08103458: .4byte sub_8103AC8 + thumb_func_end sub_8103238 + + thumb_func_start sub_810345C +sub_810345C: @ 810345C + push {r4,r5,lr} + sub sp, 0x24 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0xE + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + ldr r0, _08103504 @ =gUnknown_845216C + bl sub_8003CE4 + ldr r2, _08103508 @ =gUnknown_203ACF0 + ldr r1, [r2] + adds r1, 0x40 + strb r0, [r1] + add r1, sp, 0xC + ldr r0, _0810350C @ =gUnknown_8452174 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r2, [r2] + ldr r0, [r2, 0x44] + str r0, [sp, 0xC] + add r1, sp, 0xC + adds r0, r2, 0 + adds r0, 0x40 + ldrb r0, [r0] + strb r0, [r1, 0x10] + adds r0, r2, 0 + adds r0, 0x48 + ldrh r0, [r0] + strh r0, [r1, 0xC] + adds r0, r2, 0 + adds r0, 0x42 + ldrb r1, [r0] + add r0, sp, 0xC + bl sub_8103924 + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + ldr r0, _08103510 @ =gUnknown_8415F4A + movs r1, 0x1 + bl sub_8106E78 + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + ldr r0, _08103514 @ =gUnknown_8415F51 + bl sub_8104C2C + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x24 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08103504: .4byte gUnknown_845216C +_08103508: .4byte gUnknown_203ACF0 +_0810350C: .4byte gUnknown_8452174 +_08103510: .4byte gUnknown_8415F4A +_08103514: .4byte gUnknown_8415F51 + thumb_func_end sub_810345C + + thumb_func_start sub_8103518 +sub_8103518: @ 8103518 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_806E25C + movs r1, 0x97 + str r1, [sp] + cmp r0, 0 + beq _0810353A + movs r2, 0xC1 + lsls r2, 1 + str r2, [sp] +_0810353A: + movs r0, 0 + mov r10, r0 + cmp r4, 0x5 + bhi _08103568 + lsls r0, r4, 2 + ldr r1, _0810354C @ =_08103550 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810354C: .4byte _08103550 + .align 2, 0 +_08103550: + .4byte _08103568 + .4byte _08103604 + .4byte _0810369C + .4byte _0810373C + .4byte _081037D8 + .4byte _08103874 +_08103568: + movs r1, 0 + mov r8, r1 +_0810356C: + mov r4, r8 + adds r4, 0x1 + lsls r0, r4, 16 + lsrs r5, r0, 16 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r6, r0, 24 + mov r9, r4 + cmp r7, 0 + beq _081035C4 + adds r0, r5, 0 + bl sub_8043200 + ldr r2, _081035BC @ =gUnknown_203ACF0 + ldr r1, [r2] + ldr r2, [r1, 0x44] + mov r1, r8 + lsls r3, r1, 3 + adds r2, r3, r2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r0, r1 + ldr r1, _081035C0 @ =gUnknown_8245EE0 + adds r0, r1 + str r0, [r2] + mov r10, r5 + adds r4, r3, 0 + b _081035D6 + .align 2, 0 +_081035BC: .4byte gUnknown_203ACF0 +_081035C0: .4byte gUnknown_8245EE0 +_081035C4: + ldr r2, _081035FC @ =gUnknown_203ACF0 + ldr r0, [r2] + ldr r1, [r0, 0x44] + mov r0, r8 + lsls r2, r0, 3 + adds r1, r2, r1 + ldr r0, _08103600 @ =gUnknown_8415F66 + str r0, [r1] + adds r4, r2, 0 +_081035D6: + adds r0, r5, 0 + bl sub_8043200 + ldr r2, _081035FC @ =gUnknown_203ACF0 + ldr r1, [r2] + ldr r3, [r1, 0x44] + adds r3, r4, r3 + lsls r2, r6, 17 + lsls r1, r7, 16 + adds r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0 + str r2, [r3, 0x4] + mov r8, r9 + mov r0, r8 + cmp r0, 0x96 + ble _0810356C + b _08103906 + .align 2, 0 +_081035FC: .4byte gUnknown_203ACF0 +_08103600: .4byte gUnknown_8415F66 +_08103604: + movs r1, 0 + mov r8, r1 + ldr r2, _08103690 @ =gUnknown_203ACF0 + mov r9, r2 +_0810360C: + ldr r1, _08103694 @ =gUnknown_8443FC0 + mov r2, r8 + lsls r0, r2, 1 + adds r0, r1 + ldrh r5, [r0] + ldr r0, [sp] + cmp r5, r0 + bgt _08103682 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r7, 0 + beq _08103682 + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r2, [r1, 0x44] + mov r1, r10 + lsls r4, r1, 3 + adds r2, r4, r2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r0, r1 + ldr r1, _08103698 @ =gUnknown_8245EE0 + adds r0, r1 + str r0, [r2] + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r1, [r1, 0x44] + adds r4, r1 + lsls r2, r6, 17 + lsls r1, r7, 16 + adds r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0 + str r2, [r4, 0x4] + mov r0, r10 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 +_08103682: + movs r0, 0x1 + add r8, r0 + movs r0, 0xCD + lsls r0, 1 + cmp r8, r0 + ble _0810360C + b _08103906 + .align 2, 0 +_08103690: .4byte gUnknown_203ACF0 +_08103694: .4byte gUnknown_8443FC0 +_08103698: .4byte gUnknown_8245EE0 +_0810369C: + movs r1, 0 + mov r8, r1 + ldr r2, _08103730 @ =gUnknown_203ACF0 + mov r9, r2 +_081036A4: + ldr r1, _08103734 @ =gUnknown_84448FE + mov r2, r8 + lsls r0, r2, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_8043298 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [sp] + cmp r5, r0 + bgt _08103722 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _08103722 + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r2, [r1, 0x44] + mov r1, r10 + lsls r4, r1, 3 + adds r2, r4, r2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r0, r1 + ldr r1, _08103738 @ =gUnknown_8245EE0 + adds r0, r1 + str r0, [r2] + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r1, [r1, 0x44] + adds r4, r1 + lsls r2, r6, 17 + lsls r1, r7, 16 + adds r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0 + str r2, [r4, 0x4] + mov r0, r10 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 +_08103722: + movs r0, 0x1 + add r8, r0 + movs r0, 0xCD + lsls r0, 1 + cmp r8, r0 + ble _081036A4 + b _08103906 + .align 2, 0 +_08103730: .4byte gUnknown_203ACF0 +_08103734: .4byte gUnknown_84448FE +_08103738: .4byte gUnknown_8245EE0 +_0810373C: + movs r1, 0 + mov r8, r1 + ldr r2, _081037C8 @ =gUnknown_203ACF0 + mov r9, r2 +_08103744: + ldr r1, _081037CC @ =gUnknown_84442F6 + mov r2, r8 + lsls r0, r2, 1 + adds r0, r1 + ldrh r5, [r0] + ldr r0, [sp] + cmp r5, r0 + bgt _081037BA + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _081037BA + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r2, [r1, 0x44] + mov r1, r10 + lsls r4, r1, 3 + adds r2, r4, r2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r0, r1 + ldr r1, _081037D0 @ =gUnknown_8245EE0 + adds r0, r1 + str r0, [r2] + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r1, [r1, 0x44] + adds r4, r1 + lsls r2, r6, 17 + lsls r1, r7, 16 + adds r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0 + str r2, [r4, 0x4] + mov r0, r10 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 +_081037BA: + movs r0, 0x1 + add r8, r0 + ldr r0, _081037D4 @ =0x00000181 + cmp r8, r0 + ble _08103744 + b _08103906 + .align 2, 0 +_081037C8: .4byte gUnknown_203ACF0 +_081037CC: .4byte gUnknown_84442F6 +_081037D0: .4byte gUnknown_8245EE0 +_081037D4: .4byte 0x00000181 +_081037D8: + movs r1, 0 + mov r8, r1 + ldr r2, _08103864 @ =gUnknown_203ACF0 + mov r9, r2 +_081037E0: + ldr r1, _08103868 @ =gUnknown_84445FA + mov r2, r8 + lsls r0, r2, 1 + adds r0, r1 + ldrh r5, [r0] + ldr r0, [sp] + cmp r5, r0 + bgt _08103856 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _08103856 + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r2, [r1, 0x44] + mov r1, r10 + lsls r4, r1, 3 + adds r2, r4, r2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r0, r1 + ldr r1, _0810386C @ =gUnknown_8245EE0 + adds r0, r1 + str r0, [r2] + adds r0, r5, 0 + bl sub_8043200 + mov r2, r9 + ldr r1, [r2] + ldr r1, [r1, 0x44] + adds r4, r1 + lsls r2, r6, 17 + lsls r1, r7, 16 + adds r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0 + str r2, [r4, 0x4] + mov r0, r10 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 +_08103856: + movs r0, 0x1 + add r8, r0 + ldr r0, _08103870 @ =0x00000181 + cmp r8, r0 + ble _081037E0 + b _08103906 + .align 2, 0 +_08103864: .4byte gUnknown_203ACF0 +_08103868: .4byte gUnknown_84445FA +_0810386C: .4byte gUnknown_8245EE0 +_08103870: .4byte 0x00000181 +_08103874: + movs r1, 0 + mov r8, r1 +_08103878: + mov r4, r8 + adds r4, 0x1 + lsls r0, r4, 16 + lsrs r5, r0, 16 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + lsrs r6, r0, 24 + mov r9, r4 + cmp r7, 0 + beq _081038D0 + adds r0, r5, 0 + bl sub_8043200 + ldr r2, _081038C8 @ =gUnknown_203ACF0 + ldr r1, [r2] + ldr r2, [r1, 0x44] + mov r1, r8 + lsls r3, r1, 3 + adds r2, r3, r2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB + muls r0, r1 + ldr r1, _081038CC @ =gUnknown_8245EE0 + adds r0, r1 + str r0, [r2] + mov r10, r5 + adds r4, r3, 0 + b _081038E2 + .align 2, 0 +_081038C8: .4byte gUnknown_203ACF0 +_081038CC: .4byte gUnknown_8245EE0 +_081038D0: + ldr r2, _08103918 @ =gUnknown_203ACF0 + ldr r0, [r2] + ldr r1, [r0, 0x44] + mov r0, r8 + lsls r2, r0, 3 + adds r1, r2, r1 + ldr r0, _0810391C @ =gUnknown_8415F66 + str r0, [r1] + adds r4, r2, 0 +_081038E2: + adds r0, r5, 0 + bl sub_8043200 + ldr r2, _08103918 @ =gUnknown_203ACF0 + ldr r1, [r2] + ldr r3, [r1, 0x44] + adds r3, r4, r3 + lsls r2, r6, 17 + lsls r1, r7, 16 + adds r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r2, r0 + str r2, [r3, 0x4] + mov r8, r9 + ldr r0, _08103920 @ =0x00000181 + cmp r8, r0 + ble _08103878 +_08103906: + mov r0, r10 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08103918: .4byte gUnknown_203ACF0 +_0810391C: .4byte gUnknown_8415F66 +_08103920: .4byte 0x00000181 + thumb_func_end sub_8103518 + + thumb_func_start sub_8103924 +sub_8103924: @ 8103924 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x4 + bgt _08103936 + cmp r1, 0x1 + bge _08103950 + b _0810393A +_08103936: + cmp r1, 0x5 + beq _08103964 +_0810393A: + ldr r1, _08103948 @ =gUnknown_845218C + ldr r4, _0810394C @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrh r2, [r0, 0x36] + ldrh r3, [r0, 0x34] + b _0810396E + .align 2, 0 +_08103948: .4byte gUnknown_845218C +_0810394C: .4byte gUnknown_203ACF0 +_08103950: + ldr r1, _0810395C @ =gUnknown_845218C + ldr r4, _08103960 @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrh r2, [r0, 0x3A] + ldrh r3, [r0, 0x38] + b _0810396E + .align 2, 0 +_0810395C: .4byte gUnknown_845218C +_08103960: .4byte gUnknown_203ACF0 +_08103964: + ldr r1, _08103980 @ =gUnknown_845218C + ldr r4, _08103984 @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrh r2, [r0, 0x3E] + ldrh r3, [r0, 0x3C] +_0810396E: + adds r0, r5, 0 + bl sub_8107024 + ldr r1, [r4] + adds r1, 0x41 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08103980: .4byte gUnknown_845218C +_08103984: .4byte gUnknown_203ACF0 + thumb_func_end sub_8103924 + + thumb_func_start sub_8103988 +sub_8103988: @ 8103988 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bgt _08103998 + cmp r0, 0x1 + bge _081039B8 + b _0810399C +_08103998: + cmp r0, 0x5 + beq _081039D4 +_0810399C: + ldr r0, _081039B4 @ =gUnknown_203ACF0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x41 + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x36 + adds r2, 0x34 + bl sub_810713C + b _081039E8 + .align 2, 0 +_081039B4: .4byte gUnknown_203ACF0 +_081039B8: + ldr r0, _081039D0 @ =gUnknown_203ACF0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x41 + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x3A + adds r2, 0x38 + bl sub_810713C + b _081039E8 + .align 2, 0 +_081039D0: .4byte gUnknown_203ACF0 +_081039D4: + ldr r0, _081039EC @ =gUnknown_203ACF0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x41 + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x3E + adds r2, 0x3C + bl sub_810713C +_081039E8: + pop {r0} + bx r0 + .align 2, 0 +_081039EC: .4byte gUnknown_203ACF0 + thumb_func_end sub_8103988 + + thumb_func_start sub_81039F0 +sub_81039F0: @ 81039F0 + push {r4,lr} + sub sp, 0x10 + mov r1, sp + ldr r0, _08103A18 @ =gUnknown_84521B4 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + ldr r2, _08103A1C @ =gUnknown_203ACF0 + ldr r0, [r2] + adds r0, 0x48 + ldr r1, _08103A20 @ =gUnknown_8452174 + ldrh r3, [r0] + ldrh r0, [r1, 0xE] + cmp r3, r0 + bls _08103A24 + mov r1, sp + subs r0, r3, r0 + b _08103A28 + .align 2, 0 +_08103A18: .4byte gUnknown_84521B4 +_08103A1C: .4byte gUnknown_203ACF0 +_08103A20: .4byte gUnknown_8452174 +_08103A24: + mov r1, sp + movs r0, 0 +_08103A28: + strh r0, [r1, 0x8] + ldr r1, [r2] + adds r1, 0x62 + mov r0, sp + bl sub_8133A20 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x10 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81039F0 + + thumb_func_start sub_8103A40 +sub_8103A40: @ 8103A40 + push {r4-r7,lr} + sub sp, 0x4 + adds r4, r1, 0 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r0, r4, 16 + lsrs r5, r0, 16 + movs r0, 0x1 + lsrs r4, 17 + ands r4, r0 + ldr r7, _08103AC0 @ =gUnknown_203ACF0 + ldr r0, [r7] + adds r0, 0x40 + ldrb r0, [r0] + str r6, [sp] + movs r1, 0 + adds r2, r5, 0 + movs r3, 0xC + bl sub_8104A34 + cmp r4, 0 + beq _08103AB6 + ldr r0, [r7] + adds r0, 0x40 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0x28 + adds r3, r6, 0 + bl sub_8107D68 + ldr r0, _08103AC4 @ =gUnknown_8254784 + lsls r4, r5, 3 + subs r4, r5 + lsls r4, 2 + adds r4, r0 + ldrb r5, [r4, 0x6] + ldr r0, [r7] + adds r0, 0x40 + ldrb r0, [r0] + adds r1, r5, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x78 + adds r3, r6, 0 + bl sub_8107D68 + ldrb r1, [r4, 0x7] + cmp r5, r1 + beq _08103AB6 + ldr r0, [r7] + adds r0, 0x40 + ldrb r0, [r0] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x98 + adds r3, r6, 0 + bl sub_8107D68 +_08103AB6: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08103AC0: .4byte gUnknown_203ACF0 +_08103AC4: .4byte gUnknown_8254784 + thumb_func_end sub_8103A40 + + thumb_func_start sub_8103AC8 +sub_8103AC8: @ 8103AC8 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08103AE8 @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r5, r1, 0 + cmp r0, 0x1A + bls _08103ADE + b _08104228 +_08103ADE: + lsls r0, 2 + ldr r1, _08103AEC @ =_08103AF0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08103AE8: .4byte gUnknown_203ACF0 +_08103AEC: .4byte _08103AF0 + .align 2, 0 +_08103AF0: + .4byte _08103B5C + .4byte _08103B98 + .4byte _08103BF8 + .4byte _08103C24 + .4byte _08103C5C + .4byte _08103C84 + .4byte _08103E6C + .4byte _08103E6C + .4byte _08103EA0 + .4byte _08103ED4 + .4byte _08103EA0 + .4byte _08103EFC + .4byte _08103F20 + .4byte _08103F42 + .4byte _08103F54 + .4byte _08103F68 + .4byte _08103F7A + .4byte _08103FF0 + .4byte _0810403A + .4byte _0810406C + .4byte _08104080 + .4byte _081040E4 + .4byte _081040F4 + .4byte _08104118 + .4byte _081041DE + .4byte _081041F0 + .4byte _0810421C +_08103B5C: + movs r0, 0x3 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + ldr r4, _08103B94 @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x28 + ldrb r0, [r0] + bl sub_810699C + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0x2B + adds r0, 0x29 + ldrb r1, [r0] + ldrb r0, [r2] + cmp r0, r1 + bcs _08103B8C + strb r1, [r2] +_08103B8C: + ldr r1, [r4] + movs r0, 0x2 + b _08104226 + .align 2, 0 +_08103B94: .4byte gUnknown_203ACF0 +_08103B98: + bl sub_8104E90 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + ldr r0, _08103BC8 @ =gUnknown_203ACF0 + ldr r0, [r0] + adds r0, 0x2F + ldrb r0, [r0] + cmp r0, 0 + beq _08103BB8 + cmp r0, 0x1 + beq _08103BD4 +_08103BB8: + ldr r0, _08103BCC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08103BD0 @ =sub_810287C + b _08103BE0 + .align 2, 0 +_08103BC8: .4byte gUnknown_203ACF0 +_08103BCC: .4byte gUnknown_3005090 +_08103BD0: .4byte sub_810287C +_08103BD4: + ldr r0, _08103BEC @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _08103BF0 @ =sub_8103238 +_08103BE0: + str r0, [r1] + ldr r0, _08103BF4 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0 + b _08104226 + .align 2, 0 +_08103BEC: .4byte gUnknown_3005090 +_08103BF0: .4byte sub_8103238 +_08103BF4: .4byte gUnknown_203ACF0 +_08103BF8: + movs r0, 0 + bl sub_8104F0C + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0xFF + bl sub_8105058 + ldr r0, _08103C20 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x3 + b _08104226 + .align 2, 0 +_08103C20: .4byte gUnknown_203ACF0 +_08103C24: + ldr r0, _08103C50 @ =0xffff7fff + ldr r1, _08103C54 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _08103C58 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x4 + b _08104226 + .align 2, 0 +_08103C50: .4byte 0xffff7fff +_08103C54: .4byte 0x0000ffff +_08103C58: .4byte gUnknown_203ACF0 +_08103C5C: + bl sub_8104234 + ldr r4, _08103C7C @ =gUnknown_203ACF0 + ldr r1, [r4] + adds r1, 0x60 + strb r0, [r1] + ldr r0, _08103C80 @ =gUnknown_84524C4 + movs r1, 0 + bl sub_8133C90 + ldr r1, [r4] + adds r1, 0x61 + strb r0, [r1] + ldr r1, [r4] + movs r0, 0x5 + b _08104226 + .align 2, 0 +_08103C7C: .4byte gUnknown_203ACF0 +_08103C80: .4byte gUnknown_84524C4 +_08103C84: + ldr r0, [r5] + adds r0, 0x2D + ldrb r0, [r0] + bl sub_8105058 + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0x61 + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x2D + ldrb r1, [r1] + adds r2, 0x2C + ldrb r2, [r2] + bl sub_8105178 + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0x2B + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x62 + strh r0, [r1] + movs r4, 0 + ldr r0, _08103CF8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08103CFC + adds r0, r2, 0 + adds r0, 0x2D + ldrb r1, [r0] + lsls r1, 1 + subs r0, 0x15 + adds r0, r1 + ldrh r0, [r0] + movs r1, 0 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08103CFC + ldr r0, [r5] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, [r5] + adds r0, 0x61 + ldrb r0, [r0] + movs r1, 0 + bl sub_8133CD4 + ldr r1, [r5] + movs r0, 0xC + b _08104226 + .align 2, 0 +_08103CF8: .4byte gUnknown_30030F0 +_08103CFC: + ldr r2, _08103D28 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _08103D6E + ldrh r1, [r2, 0x30] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08103D32 + ldr r0, _08103D2C @ =gUnknown_203ACF0 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x2D + ldrb r0, [r1] + cmp r0, 0 + beq _08103D30 + subs r0, 0x1 + strb r0, [r1] + b _08103D60 + .align 2, 0 +_08103D28: .4byte gUnknown_30030F0 +_08103D2C: .4byte gUnknown_203ACF0 +_08103D30: + movs r4, 0x1 +_08103D32: + ldrh r1, [r2, 0x2C] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _08103D6E + ldrh r1, [r2, 0x30] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08103D6E + ldr r0, _08103D68 @ =gUnknown_203ACF0 + ldr r0, [r0] + adds r2, r0, 0 + adds r2, 0x2D + ldrb r1, [r2] + adds r0, 0x2C + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bge _08103D6C + adds r0, r1, 0x1 + strb r0, [r2] +_08103D60: + movs r0, 0x5 + bl sub_80722CC + b _08104228 + .align 2, 0 +_08103D68: .4byte gUnknown_203ACF0 +_08103D6C: + movs r4, 0x2 +_08103D6E: + cmp r4, 0 + bne _08103D78 + bl sub_8104284 + adds r4, r0, 0 +_08103D78: + cmp r4, 0x1 + beq _08103D94 + cmp r4, 0x1 + ble _08103E4E + cmp r4, 0x2 + beq _08103DF8 + b _08103E4E +_08103D86: + ldr r1, [r4] + movs r0, 0x8 + strb r0, [r1, 0x1] + ldr r5, _08103D90 @ =gUnknown_203ACF0 + b _08103DDA + .align 2, 0 +_08103D90: .4byte gUnknown_203ACF0 +_08103D94: + ldr r0, _08103DE4 @ =gUnknown_203ACF0 + ldr r1, [r0] + adds r2, r1, 0 + adds r2, 0x2B + adds r1, 0x29 + ldrb r2, [r2] + adds r5, r0, 0 + ldrb r1, [r1] + cmp r2, r1 + bls _08103DDA + adds r4, r5, 0 +_08103DAA: + ldr r1, [r4] + adds r1, 0x2B + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x28 + ldrb r0, [r0] + adds r1, 0x2B + ldrb r1, [r1] + bl sub_8106838 + lsls r0, 24 + cmp r0, 0 + bne _08103D86 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x2B + adds r1, 0x29 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhi _08103DAA +_08103DDA: + ldr r1, [r5] + ldrb r0, [r1, 0x1] + cmp r0, 0x8 + beq _08103E4E + b _08103E4A + .align 2, 0 +_08103DE4: .4byte gUnknown_203ACF0 +_08103DE8: + ldr r1, [r4] + movs r0, 0xA + strb r0, [r1, 0x1] + ldr r5, _08103DF4 @ =gUnknown_203ACF0 + b _08103E42 + .align 2, 0 +_08103DF4: .4byte gUnknown_203ACF0 +_08103DF8: + ldr r1, _08103E64 @ =gUnknown_203ACF0 + ldr r0, [r1] + adds r2, r0, 0 + adds r2, 0x2B + ldrb r2, [r2] + adds r0, 0x2A + ldrb r0, [r0] + subs r0, 0x1 + adds r5, r1, 0 + cmp r2, r0 + bge _08103E42 + adds r4, r5, 0 +_08103E10: + ldr r1, [r4] + adds r1, 0x2B + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x28 + ldrb r0, [r0] + adds r1, 0x2B + ldrb r1, [r1] + bl sub_8106838 + lsls r0, 24 + cmp r0, 0 + bne _08103DE8 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x2B + ldrb r1, [r1] + adds r0, 0x2A + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + blt _08103E10 +_08103E42: + ldr r1, [r5] + ldrb r0, [r1, 0x1] + cmp r0, 0xA + beq _08103E4E +_08103E4A: + movs r0, 0x6 + strb r0, [r1, 0x1] +_08103E4E: + ldr r0, _08103E68 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08103E5C + b _08104228 +_08103E5C: + ldr r0, _08103E64 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x6 + b _08104226 + .align 2, 0 +_08103E64: .4byte gUnknown_203ACF0 +_08103E68: .4byte gUnknown_30030F0 +_08103E6C: + ldr r0, [r5] + adds r0, 0x60 + ldrb r0, [r0] + bl sub_8133C30 + ldr r0, [r5] + adds r0, 0x61 + ldrb r0, [r0] + movs r1, 0 + bl sub_8133CD4 + ldr r0, _08103E98 @ =0xffff7fff + ldr r1, _08103E9C @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r5] + movs r0, 0x1 + b _08104226 + .align 2, 0 +_08103E98: .4byte 0xffff7fff +_08103E9C: .4byte 0x0000ffff +_08103EA0: + bl sub_8104E90 + movs r0, 0xFF + bl sub_8105058 + ldr r4, _08103ED0 @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x61 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0xA0 + movs r3, 0 + bl sub_8133CAC + ldr r0, [r4] + adds r0, 0x2E + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + strb r1, [r0, 0x2] + ldr r1, [r4] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + b _08104226 + .align 2, 0 +_08103ED0: .4byte gUnknown_203ACF0 +_08103ED4: + movs r0, 0 + bl sub_81052D0 + lsls r0, 24 + cmp r0, 0 + bne _08103EE2 + b _08104228 +_08103EE2: + ldr r2, _08103EF8 @ =gUnknown_203ACF0 + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0x2C + ldrb r0, [r0] + subs r0, 0x1 + adds r1, 0x2D + strb r0, [r1] + ldr r1, [r2] + movs r0, 0x5 + b _08104226 + .align 2, 0 +_08103EF8: .4byte gUnknown_203ACF0 +_08103EFC: + movs r0, 0x1 + bl sub_81052D0 + lsls r0, 24 + cmp r0, 0 + bne _08103F0A + b _08104228 +_08103F0A: + ldr r2, _08103F1C @ =gUnknown_203ACF0 + ldr r0, [r2] + adds r0, 0x2D + movs r1, 0 + strb r1, [r0] + ldr r1, [r2] + movs r0, 0x5 + b _08104226 + .align 2, 0 +_08103F1C: .4byte gUnknown_203ACF0 +_08103F20: + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0x2D + ldrb r1, [r0] + lsls r1, 1 + subs r0, 0x15 + adds r0, r1 + ldrh r1, [r0] + adds r0, r2, 0 + adds r0, 0x5A + strh r1, [r0] + movs r0, 0x5 + bl sub_80722CC + ldr r1, [r5] + movs r0, 0xE + b _08104226 +_08103F42: + bl sub_8106014 + ldr r0, _08103F50 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x4 + b _08104226 + .align 2, 0 +_08103F50: .4byte gUnknown_203ACF0 +_08103F54: + movs r0, 0 + bl sub_8105E1C + ldr r0, _08103F64 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0xF + b _08104226 + .align 2, 0 +_08103F64: .4byte gUnknown_203ACF0 +_08103F68: + ldr r0, [r5] + movs r1, 0 + strb r1, [r0, 0x2] + ldr r0, [r5] + strb r1, [r0, 0x3] + ldr r1, [r5] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_08103F7A: + ldr r1, [r5] + ldrb r0, [r1, 0x3] + cmp r0, 0x5 + bhi _08103FA8 + ldrb r0, [r1, 0x2] + cmp r0, 0 + bne _08103F8A + b _081040BE +_08103F8A: + ldrb r1, [r1, 0x3] + movs r0, 0 + bl sub_8105594 + movs r0, 0 + bl sub_80020BC + ldr r1, [r5] + movs r0, 0x4 + strb r0, [r1, 0x2] + ldr r1, [r5] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + b _08104228 +_08103FA8: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, [r5] + adds r0, 0x5A + ldrh r0, [r0] + movs r1, 0 + movs r2, 0x7D + movs r3, 0xA + bl sub_8071E3C + ldr r1, [r5] + movs r0, 0 + strb r0, [r1, 0x2] + ldr r1, [r5] + movs r0, 0x11 + b _08104226 +_08103FF0: + ldr r0, _08104024 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810402C + bl sub_8106014 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + ldr r0, _08104028 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x15 + b _08104226 + .align 2, 0 +_08104024: .4byte gUnknown_30030F0 +_08104028: .4byte gUnknown_203ACF0 +_0810402C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08104036 + b _081041D8 +_08104036: + ldr r1, [r5] + b _08104224 +_0810403A: + movs r0, 0 + bl sub_8104F0C + movs r0, 0 + movs r1, 0x6 + bl sub_8105594 + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _08104068 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x13 + b _08104226 + .align 2, 0 +_08104068: .4byte gUnknown_203ACF0 +_0810406C: + ldr r1, [r5] + movs r0, 0 + strb r0, [r1, 0x2] + ldr r1, [r5] + movs r0, 0x6 + strb r0, [r1, 0x3] + ldr r1, [r5] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_08104080: + ldr r1, [r5] + ldrb r2, [r1, 0x3] + cmp r2, 0 + beq _081040C4 + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _081040BE + subs r0, r2, 0x1 + strb r0, [r1, 0x3] + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + ldr r0, [r5] + ldrb r1, [r0, 0x3] + movs r0, 0 + bl sub_8105594 + movs r0, 0 + bl sub_80020BC + ldr r1, [r5] + movs r0, 0x1 + strb r0, [r1, 0x2] + b _08104228 +_081040BE: + subs r0, 0x1 + strb r0, [r1, 0x2] + b _08104228 +_081040C4: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r1, [r5] + movs r0, 0xD + b _08104226 +_081040E4: + bl sub_810603C + ldr r0, _081040F0 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x16 + b _08104226 + .align 2, 0 +_081040F0: .4byte gUnknown_203ACF0 +_081040F4: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _08104114 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x17 + b _08104226 + .align 2, 0 +_08104114: .4byte gUnknown_203ACF0 +_08104118: + ldr r0, _08104174 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0810417C + movs r5, 0x1E + str r5, [sp] + movs r4, 0x10 + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _08104178 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x1A + b _08104226 + .align 2, 0 +_08104174: .4byte gUnknown_30030F0 +_08104178: .4byte gUnknown_203ACF0 +_0810417C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081041D8 + movs r5, 0x1E + str r5, [sp] + movs r4, 0x10 + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _081041D4 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x18 + b _08104226 + .align 2, 0 +_081041D4: .4byte gUnknown_203ACF0 +_081041D8: + bl sub_8106B34 + b _08104228 +_081041DE: + bl sub_81067C0 + ldr r0, _081041EC @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x19 + b _08104226 + .align 2, 0 +_081041EC: .4byte gUnknown_203ACF0 +_081041F0: + movs r0, 0 + bl sub_8105E1C + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _08104218 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x11 + b _08104226 + .align 2, 0 +_08104218: .4byte gUnknown_203ACF0 +_0810421C: + bl sub_81067C0 + ldr r0, _08104230 @ =gUnknown_203ACF0 + ldr r1, [r0] +_08104224: + movs r0, 0x12 +_08104226: + strb r0, [r1, 0x1] +_08104228: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08104230: .4byte gUnknown_203ACF0 + thumb_func_end sub_8103AC8 + + thumb_func_start sub_8104234 +sub_8104234: @ 8104234 + push {r4,lr} + sub sp, 0x10 + mov r1, sp + ldr r0, _0810427C @ =gUnknown_84524B4 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + mov r1, sp + ldr r0, _08104280 @ =gUnknown_203ACF0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x29 + ldrb r0, [r0] + strh r0, [r1, 0x6] + adds r0, r2, 0 + adds r0, 0x2A + ldrb r0, [r0] + subs r0, 0x1 + strh r0, [r1, 0x8] + adds r0, r2, 0 + adds r0, 0x2B + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x62 + strh r0, [r1] + mov r0, sp + bl sub_8133A20 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0810427C: .4byte gUnknown_84524B4 +_08104280: .4byte gUnknown_203ACF0 + thumb_func_end sub_8104234 + + thumb_func_start sub_8104284 +sub_8104284: @ 8104284 + push {lr} + ldr r0, _081042B0 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + beq _081042C0 + cmp r0, 0x1 + ble _081042E6 + cmp r0, 0x2 + bne _081042E6 + ldr r0, _081042B4 @ =gUnknown_30030F0 + ldr r2, [r0, 0x2C] + ldr r1, _081042B8 @ =0x00200100 + adds r0, r2, 0 + ands r0, r1 + cmp r0, r1 + beq _081042CE + ldr r0, _081042BC @ =0x00100100 + ands r2, r0 + cmp r2, r0 + beq _081042E2 + b _081042E6 + .align 2, 0 +_081042B0: .4byte gUnknown_300500C +_081042B4: .4byte gUnknown_30030F0 +_081042B8: .4byte 0x00200100 +_081042BC: .4byte 0x00100100 +_081042C0: + ldr r0, _081042D4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _081042D8 +_081042CE: + movs r0, 0x1 + b _081042E8 + .align 2, 0 +_081042D4: .4byte gUnknown_30030F0 +_081042D8: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _081042E6 +_081042E2: + movs r0, 0x2 + b _081042E8 +_081042E6: + movs r0, 0 +_081042E8: + pop {r1} + bx r1 + thumb_func_end sub_8104284 + + thumb_func_start sub_81042EC +sub_81042EC: @ 81042EC + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0810430C @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r5, r1, 0 + cmp r0, 0xC + bls _08104302 + b _08104656 +_08104302: + lsls r0, 2 + ldr r1, _08104310 @ =_08104314 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810430C: .4byte gUnknown_203ACF0 +_08104310: .4byte _08104314 + .align 2, 0 +_08104314: + .4byte _08104348 + .4byte _08104368 + .4byte _08104398 + .4byte _081043AC + .4byte _081043E0 + .4byte _08104418 + .4byte _08104508 + .4byte _08104528 + .4byte _08104538 + .4byte _0810455C + .4byte _081045F2 + .4byte _08104604 + .4byte _08104630 +_08104348: + movs r0, 0x3 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + ldr r0, _08104364 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x2 + b _08104654 + .align 2, 0 +_08104364: .4byte gUnknown_203ACF0 +_08104368: + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + ldr r1, _0810438C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08104390 @ =sub_8102F80 + str r1, [r0] + ldr r0, _08104394 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0 + b _08104654 + .align 2, 0 +_0810438C: .4byte gUnknown_3005090 +_08104390: .4byte sub_8102F80 +_08104394: .4byte gUnknown_203ACF0 +_08104398: + ldr r0, [r5] + adds r0, 0x2C + movs r1, 0x1 + strb r1, [r0] + movs r0, 0 + bl sub_8105E1C + ldr r1, [r5] + movs r0, 0x3 + b _08104654 +_081043AC: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r4, _081043DC @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x5A + ldrh r0, [r0] + movs r1, 0 + movs r2, 0x7D + movs r3, 0xA + bl sub_8071E3C + ldr r1, [r4] + movs r0, 0x4 + b _08104654 + .align 2, 0 +_081043DC: .4byte gUnknown_203ACF0 +_081043E0: + ldr r0, _0810440C @ =0xffff7fff + ldr r1, _08104410 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _08104414 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x5 + b _08104654 + .align 2, 0 +_0810440C: .4byte 0xffff7fff +_08104410: .4byte 0x0000ffff +_08104414: .4byte gUnknown_203ACF0 +_08104418: + ldr r0, _0810444C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08104454 + bl sub_8106014 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + ldr r0, _08104450 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x7 + b _08104654 + .align 2, 0 +_0810444C: .4byte gUnknown_30030F0 +_08104450: .4byte gUnknown_203ACF0 +_08104454: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08104484 + bl sub_8106014 + ldr r0, _08104478 @ =0xffff7fff + ldr r1, _0810447C @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08104480 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x1 + b _08104654 + .align 2, 0 +_08104478: .4byte 0xffff7fff +_0810447C: .4byte 0x0000ffff +_08104480: .4byte gUnknown_203ACF0 +_08104484: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _081044C0 + movs r0, 0x1 + bl sub_8104664 + cmp r0, 0 + beq _081044C0 + bl sub_8106014 + ldr r0, _081044B4 @ =0xffff7fff + ldr r1, _081044B8 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _081044BC @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x6 + b _08104654 + .align 2, 0 +_081044B4: .4byte 0xffff7fff +_081044B8: .4byte 0x0000ffff +_081044BC: .4byte gUnknown_203ACF0 +_081044C0: + ldr r0, _081044F8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081044CE + b _081045EC +_081044CE: + movs r0, 0 + bl sub_8104664 + cmp r0, 0 + bne _081044DA + b _081045EC +_081044DA: + bl sub_8106014 + ldr r0, _081044FC @ =0xffff7fff + ldr r1, _08104500 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08104504 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x6 + b _08104654 + .align 2, 0 +_081044F8: .4byte gUnknown_30030F0 +_081044FC: .4byte 0xffff7fff +_08104500: .4byte 0x0000ffff +_08104504: .4byte gUnknown_203ACF0 +_08104508: + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019D0 + ldr r0, _08104524 @ =gUnknown_203ACF0 + ldr r1, [r0] + ldr r0, [r1, 0x30] + adds r2, r1, 0 + adds r2, 0x5A + strh r0, [r2] + movs r0, 0x2 + b _08104654 + .align 2, 0 +_08104524: .4byte gUnknown_203ACF0 +_08104528: + bl sub_810603C + ldr r0, _08104534 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x8 + b _08104654 + .align 2, 0 +_08104534: .4byte gUnknown_203ACF0 +_08104538: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _08104558 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x9 + b _08104654 + .align 2, 0 +_08104558: .4byte gUnknown_203ACF0 +_0810455C: + ldr r0, _08104580 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08104590 + ldr r0, _08104584 @ =0xffff7fff + ldr r1, _08104588 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0810458C @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0xC + b _08104654 + .align 2, 0 +_08104580: .4byte gUnknown_30030F0 +_08104584: .4byte 0xffff7fff +_08104588: .4byte 0x0000ffff +_0810458C: .4byte gUnknown_203ACF0 +_08104590: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081045EC + movs r5, 0x1E + str r5, [sp] + movs r4, 0x10 + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _081045E8 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0xA + b _08104654 + .align 2, 0 +_081045E8: .4byte gUnknown_203ACF0 +_081045EC: + bl sub_8106B34 + b _08104656 +_081045F2: + bl sub_81067C0 + ldr r0, _08104600 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0xB + b _08104654 + .align 2, 0 +_08104600: .4byte gUnknown_203ACF0 +_08104604: + movs r0, 0 + bl sub_8105E1C + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, _0810462C @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x5 + b _08104654 + .align 2, 0 +_0810462C: .4byte gUnknown_203ACF0 +_08104630: + bl sub_81067C0 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r0, _08104660 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x1 +_08104654: + strb r0, [r1, 0x1] +_08104656: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08104660: .4byte gUnknown_203ACF0 + thumb_func_end sub_81042EC + + thumb_func_start sub_8104664 +sub_8104664: @ 8104664 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08104684 @ =gUnknown_203ACF0 + ldr r3, [r0] + adds r2, r3, 0 + adds r2, 0x42 + ldrb r2, [r2] + mov r8, r0 + cmp r2, 0x4 + bgt _08104688 + cmp r2, 0x1 + bge _0810469C + b _0810468C + .align 2, 0 +_08104684: .4byte gUnknown_203ACF0 +_08104688: + cmp r2, 0x5 + beq _081046A8 +_0810468C: + mov r1, r8 + ldr r0, [r1] + movs r2, 0x36 + adds r2, r0 + mov r12, r2 + adds r6, r0, 0 + adds r6, 0x34 + b _081046B2 +_0810469C: + movs r0, 0x3A + adds r0, r3 + mov r12, r0 + adds r6, r3, 0 + adds r6, 0x38 + b _081046B2 +_081046A8: + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + adds r6, r3, 0 + adds r6, 0x3C +_081046B2: + mov r2, r12 + ldrh r1, [r2] + ldrh r0, [r6] + adds r3, r1, r0 + cmp r4, 0 + beq _08104700 + cmp r3, 0 + beq _0810474C + subs r3, 0x1 + cmp r3, 0 + blt _0810474C + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, 0x44] + lsls r2, r3, 3 + adds r0, r2, r0 + ldrh r0, [r0, 0x6] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081046FA + mov r5, r8 + movs r4, 0x1 + adds r1, r2, 0 +_081046E2: + subs r1, 0x8 + subs r3, 0x1 + cmp r3, 0 + blt _0810474C + ldr r0, [r5] + ldr r0, [r0, 0x44] + adds r0, r1, r0 + ldrh r0, [r0, 0x6] + ands r0, r4 + adds r2, r1, 0 + cmp r0, 0 + beq _081046E2 +_081046FA: + cmp r3, 0 + bge _08104750 + b _0810474C +_08104700: + mov r2, r8 + ldr r5, [r2] + adds r0, r5, 0 + adds r0, 0x48 + ldrh r4, [r0] + subs r0, r4, 0x1 + cmp r3, r0 + beq _0810474C + adds r3, 0x1 + cmp r3, r4 + bge _0810474C + ldr r0, [r5, 0x44] + lsls r2, r3, 3 + adds r0, r2, r0 + ldrh r0, [r0, 0x6] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08104740 + adds r1, r2, 0 + movs r7, 0x1 +_0810472A: + adds r1, 0x8 + adds r3, 0x1 + cmp r3, r4 + bge _0810474C + ldr r0, [r5, 0x44] + adds r0, r1, r0 + ldrh r0, [r0, 0x6] + ands r0, r7 + adds r2, r1, 0 + cmp r0, 0 + beq _0810472A +_08104740: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x48 + ldrh r0, [r0] + cmp r3, r0 + blt _08104750 +_0810474C: + movs r0, 0 + b _081047A6 +_08104750: + mov r0, r8 + ldr r1, [r0] + ldr r0, [r1, 0x44] + adds r0, r2, r0 + ldr r0, [r0, 0x4] + str r0, [r1, 0x30] + adds r1, 0x48 + ldrh r0, [r1] + cmp r0, 0x9 + bls _0810479C + cmp r3, 0x3 + bgt _08104770 + movs r0, 0 + mov r1, r12 + strh r0, [r1] + b _081047A2 +_08104770: + ldrh r1, [r1] + subs r0, r1, 0x4 + cmp r3, r0 + blt _08104790 + subs r0, 0x5 + mov r2, r12 + strh r0, [r2] + adds r1, r3, 0 + adds r1, 0x9 + mov r2, r8 + ldr r0, [r2] + adds r0, 0x48 + ldrh r0, [r0] + subs r1, r0 + strh r1, [r6] + b _081047A4 +_08104790: + subs r0, r3, 0x4 + mov r1, r12 + strh r0, [r1] + movs r0, 0x4 + strh r0, [r6] + b _081047A4 +_0810479C: + movs r0, 0 + mov r2, r12 + strh r0, [r2] +_081047A2: + strh r3, [r6] +_081047A4: + movs r0, 0x1 +_081047A6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8104664 + + thumb_func_start sub_81047B0 +sub_81047B0: @ 81047B0 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xFF + beq _081047C2 + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] +_081047C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81047B0 + + thumb_func_start sub_81047C8 +sub_81047C8: @ 81047C8 + push {r4-r7,lr} + sub sp, 0x18 + mov r12, r2 + ldr r2, [sp, 0x2C] + ldr r4, [sp, 0x30] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r2, 24 + lsrs r3, r2, 24 + lsls r4, 24 + lsrs r0, r4, 24 + cmp r0, 0x4 + bhi _08104852 + lsls r0, 2 + ldr r1, _081047F4 @ =_081047F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081047F4: .4byte _081047F8 + .align 2, 0 +_081047F8: + .4byte _0810480C + .4byte _0810481A + .4byte _08104828 + .4byte _08104836 + .4byte _08104844 +_0810480C: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x3 + b _08104850 +_0810481A: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + movs r0, 0x1 + b _08104850 +_08104828: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0xF + strb r0, [r1, 0x1] + movs r0, 0xE + b _08104850 +_08104836: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0xB + strb r0, [r1, 0x1] + movs r0, 0x1 + b _08104850 +_08104844: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x2 +_08104850: + strb r0, [r1, 0x2] +_08104852: + negs r0, r5 + orrs r0, r5 + lsrs r0, 31 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + add r0, sp, 0x14 + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + mov r0, r12 + str r0, [sp, 0x10] + adds r0, r7, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_812E5A4 + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81047C8 + + thumb_func_start sub_8104880 +sub_8104880: @ 8104880 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r9, r0 + mov r10, r1 + adds r4, r2, 0 + ldr r6, [sp, 0x2C] + ldr r0, [sp, 0x30] + mov r8, r0 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r4, 16 + lsrs r4, 16 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + add r5, sp, 0x8 + adds r0, r4, 0 + movs r1, 0x64 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r5] + add r5, sp, 0x8 + adds r0, r4, 0 + movs r1, 0x64 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r5, 0x1] + add r5, sp, 0x8 + adds r0, r4, 0 + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r5, 0x2] + add r1, sp, 0x8 + movs r0, 0xFF + strb r0, [r1, 0x3] + str r6, [sp] + mov r0, r8 + str r0, [sp, 0x4] + mov r0, r9 + mov r1, r10 + add r2, sp, 0x8 + adds r3, r7, 0 + bl sub_81047C8 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8104880 + + thumb_func_start sub_810491C +sub_810491C: @ 810491C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r5, r2, 0 + ldr r2, [sp, 0x30] + ldr r4, [sp, 0x34] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r5, 16 + lsrs r5, 16 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r4, 24 + lsrs r7, r4, 24 + add r4, sp, 0x8 + adds r0, r5, 0 + movs r1, 0x64 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + add r6, sp, 0x8 + adds r0, r5, 0 + movs r1, 0x64 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r6, 0x1] + add r5, sp, 0x8 + adds r0, r4, 0 + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r5, 0x2] + add r1, sp, 0x8 + movs r0, 0xFF + strb r0, [r1, 0x3] + adds r0, r1, 0 + ldrb r0, [r0] + cmp r0, 0xA1 + bne _081049A8 + movs r3, 0 + mov r2, sp + adds r2, 0xA +_0810499A: + strb r3, [r1] + adds r1, 0x1 + cmp r1, r2 + bgt _081049A8 + ldrb r0, [r1] + cmp r0, 0xA1 + beq _0810499A +_081049A8: + mov r0, r8 + str r0, [sp] + str r7, [sp, 0x4] + ldr r0, [sp, 0xC] + mov r1, r10 + add r2, sp, 0x8 + mov r3, r9 + bl sub_81047C8 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_810491C + + thumb_func_start sub_81049CC +sub_81049CC: @ 81049CC + push {lr} + adds r1, r0, 0 + cmp r1, 0xC9 + beq _081049E8 + movs r0, 0x9A + lsls r0, 1 + cmp r1, r0 + bne _081049F4 + ldr r0, _081049E4 @ =gUnknown_300500C + ldr r0, [r0] + ldr r0, [r0, 0x20] + b _081049F6 + .align 2, 0 +_081049E4: .4byte gUnknown_300500C +_081049E8: + ldr r0, _081049F0 @ =gUnknown_300500C + ldr r0, [r0] + ldr r0, [r0, 0x1C] + b _081049F6 + .align 2, 0 +_081049F0: .4byte gUnknown_300500C +_081049F4: + movs r0, 0 +_081049F6: + pop {r1} + bx r1 + thumb_func_end sub_81049CC + + thumb_func_start sub_81049FC +sub_81049FC: @ 81049FC + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + adds r0, r5, 0 + bl sub_81049CC + adds r2, r0, 0 + lsrs r4, 20 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + str r6, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x8 + movs r3, 0x1 + bl sub_810C228 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81049FC + + thumb_func_start sub_8104A34 +sub_8104A34: @ 8104A34 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x8 + mov r8, r0 + mov r9, r1 + adds r0, r2, 0 + adds r4, r3, 0 + ldr r6, [sp, 0x24] + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + bl sub_8043298 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + ldr r2, _08104AAC @ =gUnknown_8415FFF + str r6, [sp] + movs r0, 0 + mov r10, r0 + str r0, [sp, 0x4] + mov r0, r8 + mov r1, r9 + adds r3, r4, 0 + bl sub_81047C8 + adds r4, 0x9 + lsls r4, 24 + lsrs r4, 24 + str r6, [sp] + mov r1, r10 + str r1, [sp, 0x4] + mov r0, r8 + mov r1, r9 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_8104880 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08104AAC: .4byte gUnknown_8415FFF + thumb_func_end sub_8104A34 + + thumb_func_start sub_8104AB0 +sub_8104AB0: @ 8104AB0 + push {r4-r7,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + adds r7, r5, 0 + lsls r2, 24 + cmp r2, 0 + beq _08104ACA + adds r0, r3, 0 + bl sub_8043298 + adds r3, r0, 0 +_08104ACA: + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + lsrs r0, 19 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x7 + ands r3, r0 + movs r0, 0x80 + lsls r0, 17 + lsls r0, r3 + lsrs r6, r0, 24 + movs r0, 0 + mov r12, r0 + cmp r5, 0x1 + beq _08104B14 + cmp r5, 0x1 + bgt _08104AF4 + cmp r5, 0 + beq _08104AFE + b _08104BB0 +_08104AF4: + cmp r7, 0x2 + beq _08104B68 + cmp r7, 0x3 + beq _08104BA0 + b _08104BB0 +_08104AFE: + ldr r0, _08104B10 @ =gUnknown_300500C + ldr r0, [r0] + adds r0, 0x5C + adds r0, r4 + ldrb r1, [r0] + ands r1, r6 + cmp r1, 0 + beq _08104BB0 + b _08104B34 + .align 2, 0 +_08104B10: .4byte gUnknown_300500C +_08104B14: + ldr r0, _08104B5C @ =gUnknown_300500C + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x28 + adds r0, r4 + ldrb r1, [r0] + ands r1, r6 + cmp r1, 0 + beq _08104BB0 + adds r0, r2, 0 + adds r0, 0x5C + adds r0, r4 + ldrb r0, [r0] + ands r0, r6 + cmp r1, r0 + bne _08104BB0 +_08104B34: + ldr r0, _08104B60 @ =gUnknown_3005008 + ldr r2, [r0] + movs r3, 0xBF + lsls r3, 3 + adds r0, r2, r3 + adds r0, r4 + ldrb r0, [r0] + ands r0, r6 + cmp r1, r0 + bne _08104BB0 + ldr r3, _08104B64 @ =0x00003a18 + adds r0, r2, r3 + adds r0, r4 + ldrb r0, [r0] + ands r0, r6 + cmp r1, r0 + bne _08104BB0 + movs r0, 0x1 + mov r12, r0 + b _08104BB0 + .align 2, 0 +_08104B5C: .4byte gUnknown_300500C +_08104B60: .4byte gUnknown_3005008 +_08104B64: .4byte 0x00003a18 +_08104B68: + ldr r0, _08104B94 @ =gUnknown_300500C + ldr r1, [r0] + adds r1, 0x5C + adds r1, r4 + ldrb r2, [r1] + adds r0, r6, 0 + orrs r0, r2 + strb r0, [r1] + ldr r3, _08104B98 @ =gUnknown_3005008 + ldr r1, [r3] + movs r0, 0xBF + lsls r0, 3 + adds r1, r0 + adds r1, r4 + ldrb r2, [r1] + adds r0, r6, 0 + orrs r0, r2 + strb r0, [r1] + ldr r1, [r3] + ldr r3, _08104B9C @ =0x00003a18 + adds r1, r3 + b _08104BA6 + .align 2, 0 +_08104B94: .4byte gUnknown_300500C +_08104B98: .4byte gUnknown_3005008 +_08104B9C: .4byte 0x00003a18 +_08104BA0: + ldr r0, _08104BB8 @ =gUnknown_300500C + ldr r1, [r0] + adds r1, 0x28 +_08104BA6: + adds r1, r4 + ldrb r2, [r1] + adds r0, r6, 0 + orrs r0, r2 + strb r0, [r1] +_08104BB0: + mov r0, r12 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08104BB8: .4byte gUnknown_300500C + thumb_func_end sub_8104AB0 + + thumb_func_start sub_8104BBC +sub_8104BBC: @ 8104BBC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r5, 0 + cmp r1, 0 + beq _08104BD2 + cmp r1, 0x1 + beq _08104BF8 + b _08104C1E +_08104BD2: + movs r0, 0 +_08104BD4: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08104BF0 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08104BF0: + adds r0, r4, 0 + cmp r0, 0x96 + bls _08104BD4 + b _08104C1E +_08104BF8: + movs r0, 0 + ldr r7, _08104C28 @ =0x00000181 +_08104BFC: + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08104C18 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08104C18: + adds r0, r4, 0 + cmp r0, r7 + bls _08104BFC +_08104C1E: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08104C28: .4byte 0x00000181 + thumb_func_end sub_8104BBC + + thumb_func_start sub_8104C2C +sub_8104C2C: @ 8104C2C + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0x14 + negs r1, r1 + adds r3, r1, 0 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x4 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + adds r2, r4, 0 + bl sub_81047C8 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8104C2C + + thumb_func_start sub_8104C64 +sub_8104C64: @ 8104C64 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x20 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + movs r0, 0xFF + lsls r0, 24 + adds r2, r0 + lsrs r2, 24 + mov r9, r2 + ldr r1, _08104D50 @ =gUnknown_845228C + ldr r2, _08104D54 @ =gUnknown_8452334 + mov r3, r9 + lsls r0, r3, 2 + adds r6, r0, r2 + ldr r0, [r6] + lsls r4, r5, 2 + adds r0, r4, r0 + ldrb r2, [r0] + ldrb r3, [r0, 0x1] + movs r0, 0x8 + str r0, [sp] + str r0, [sp, 0x4] + adds r0, r5, 0x5 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + movs r0, 0x3 + bl sub_8002228 + ldr r7, _08104D58 @ =gUnknown_203ACF0 + ldr r0, [r7] + adds r0, 0x20 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08104D6C + ldr r0, _08104D5C @ =gUnknown_84521C4 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + ldr r0, [r6] + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, 8 + ldr r3, _08104D60 @ =0xffff00ff + ldr r2, [sp, 0x18] + ands r2, r3 + orrs r2, r0 + str r2, [sp, 0x18] + ldr r0, [r6] + adds r0, r4, r0 + ldrb r1, [r0, 0x1] + lsls r1, 16 + ldr r0, _08104D64 @ =0xff00ffff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x18] + adds r1, r5, 0x1 + lsls r1, 24 + lsrs r1, 16 + ldr r0, [sp, 0x1C] + ands r0, r3 + orrs r0, r1 + lsls r1, r5, 6 + adds r1, 0x8 + lsls r1, 16 + ldr r2, _08104D68 @ =0x0000ffff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x1C] + add r0, sp, 0x18 + bl sub_8003CE4 + ldr r1, [r7] + adds r1, 0x20 + adds r1, r5 + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x20 + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r7] + adds r0, 0x20 + adds r0, r5 + ldrb r0, [r0] + lsls r2, r5, 20 + movs r1, 0x80 + lsls r1, 13 + adds r2, r1 + lsrs r2, 16 + mov r1, r8 + bl sub_81049FC + ldr r0, [r7] + adds r0, 0x20 + adds r0, r5 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r7] + adds r0, 0x20 + adds r0, r5 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + b _08104D72 + .align 2, 0 +_08104D50: .4byte gUnknown_845228C +_08104D54: .4byte gUnknown_8452334 +_08104D58: .4byte gUnknown_203ACF0 +_08104D5C: .4byte gUnknown_84521C4 +_08104D60: .4byte 0xffff00ff +_08104D64: .4byte 0xff00ffff +_08104D68: .4byte 0x0000ffff +_08104D6C: + ldrb r0, [r1] + bl sub_8003FA0 +_08104D72: + ldr r6, _08104E60 @ =gUnknown_203ACF0 + ldr r0, [r6] + adds r0, 0x24 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08104E78 + mov r3, r8 + cmp r3, 0 + beq _08104E7E + ldr r0, _08104E64 @ =gUnknown_84521CC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + ldr r0, _08104E68 @ =gUnknown_8452334 + mov r1, r9 + lsls r2, r1, 2 + adds r2, r0 + ldr r0, [r2] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrb r0, [r0, 0x2] + add r3, sp, 0x18 + movs r4, 0 + strb r0, [r3, 0x1] + ldr r0, [r2] + adds r0, r1, r0 + ldrb r0, [r0, 0x3] + strb r0, [r3, 0x2] + adds r1, r5 + lsls r1, 3 + movs r0, 0x84 + lsls r0, 1 + adds r1, r0 + strh r1, [r3, 0x6] + adds r0, r3, 0 + bl sub_8003CE4 + ldr r1, [r6] + adds r1, 0x24 + adds r1, r5 + strb r0, [r1] + ldr r0, [r6] + adds r0, 0x24 + adds r0, r5 + ldrb r0, [r0] + ldr r1, _08104E6C @ =gUnknown_8440124 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r0, [r6] + adds r0, 0x24 + adds r0, r5 + ldrb r0, [r0] + str r4, [sp] + movs r1, 0 + mov r2, r8 + movs r3, 0xC + bl sub_8104A34 + ldr r0, [r6] + adds r0, 0x24 + adds r0, r5 + ldrb r0, [r0] + movs r1, 0xB + mov r2, r8 + muls r2, r1 + ldr r1, _08104E70 @ =gUnknown_8245EE0 + adds r2, r1 + movs r1, 0xD + str r1, [sp] + str r4, [sp, 0x4] + movs r1, 0x2 + movs r3, 0x2 + bl sub_81047C8 + mov r0, r8 + movs r1, 0x1 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08104E42 + ldr r0, [r6] + adds r0, 0x24 + adds r0, r5 + ldrb r0, [r0] + ldr r1, _08104E74 @ =gUnknown_8443600 + movs r3, 0x8 + str r3, [sp] + str r3, [sp, 0x4] + movs r2, 0x2 + str r2, [sp, 0x8] + movs r2, 0x3 + str r2, [sp, 0xC] + str r3, [sp, 0x10] + str r3, [sp, 0x14] + movs r2, 0 + movs r3, 0 + bl sub_80041F0 +_08104E42: + ldr r0, [r6] + adds r0, 0x24 + adds r0, r5 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r6] + adds r0, 0x24 + adds r0, r5 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + b _08104E7E + .align 2, 0 +_08104E60: .4byte gUnknown_203ACF0 +_08104E64: .4byte gUnknown_84521CC +_08104E68: .4byte gUnknown_8452334 +_08104E6C: .4byte gUnknown_8440124 +_08104E70: .4byte gUnknown_8245EE0 +_08104E74: .4byte gUnknown_8443600 +_08104E78: + ldrb r0, [r1] + bl sub_8003FA0 +_08104E7E: + movs r0, 0x1 + add sp, 0x20 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8104C64 + + thumb_func_start sub_8104E90 +sub_8104E90: @ 8104E90 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _08104EBC @ =gUnknown_203ACF0 +_08104E96: + adds r1, r4, 0 + adds r1, 0x20 + ldr r0, [r5] + adds r0, r1 + bl sub_81047B0 + adds r1, r4, 0 + adds r1, 0x24 + ldr r0, [r5] + adds r0, r1 + bl sub_81047B0 + adds r4, 0x1 + cmp r4, 0x3 + ble _08104E96 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08104EBC: .4byte gUnknown_203ACF0 + thumb_func_end sub_8104E90 + + thumb_func_start sub_8104EC0 +sub_8104EC0: @ 8104EC0 + push {r4,r5,lr} + sub sp, 0x20 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r1, _08104F08 @ =gUnknown_8416002 + mov r0, sp + bl sub_8008D84 + adds r1, r0, 0 + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + adds r1, r0, 0 + movs r0, 0xBA + strb r0, [r1] + adds r1, 0x1 + adds r0, r1, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + mov r0, sp + movs r1, 0x2 + bl sub_8106E78 + add sp, 0x20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08104F08: .4byte gUnknown_8416002 + thumb_func_end sub_8104EC0 + + thumb_func_start sub_8104F0C +sub_8104F0C: @ 8104F0C + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x1E + str r0, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r5, 0x20 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r5, _08104F80 @ =gUnknown_203ACF0 + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x28 + ldrb r0, [r0] + adds r1, 0x2B + ldrb r1, [r1] + bl sub_81068DC + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + cmp r6, 0 + beq _08104F88 + ldr r1, _08104F84 @ =gUnknown_8452344 + ldr r0, [r5] + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_8106E78 + b _08104FD0 + .align 2, 0 +_08104F80: .4byte gUnknown_203ACF0 +_08104F84: .4byte gUnknown_8452344 +_08104F88: + ldr r1, _08105048 @ =gUnknown_8452344 + ldr r0, [r5] + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_8106E78 + ldr r0, [r5] + adds r0, 0x2B + ldrb r0, [r0] + bl sub_8106AF8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, [r5] + adds r0, 0x2A + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + bl sub_8106AF8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + adds r1, r4, 0 + movs r3, 0xA0 + bl sub_8104EC0 +_08104FD0: + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + cmp r6, 0 + bne _08104FEA + ldr r0, _0810504C @ =gUnknown_8415F6C + bl sub_8104C2C +_08104FEA: + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + ldr r5, _08105050 @ =gUnknown_203ACF0 + ldr r1, [r5] + ldrh r0, [r1, 0x18] + ldr r4, _08105054 @ =0x0000ffff + cmp r0, r4 + beq _08105008 + adds r1, 0x2C + ldrb r2, [r1] + movs r1, 0 + bl sub_8104C64 +_08105008: + ldr r1, [r5] + ldrh r0, [r1, 0x1A] + cmp r0, r4 + beq _0810501A + adds r1, 0x2C + ldrb r2, [r1] + movs r1, 0x1 + bl sub_8104C64 +_0810501A: + ldr r1, [r5] + ldrh r0, [r1, 0x1C] + cmp r0, r4 + beq _0810502C + adds r1, 0x2C + ldrb r2, [r1] + movs r1, 0x2 + bl sub_8104C64 +_0810502C: + ldr r1, [r5] + ldrh r0, [r1, 0x1E] + cmp r0, r4 + beq _0810503E + adds r1, 0x2C + ldrb r2, [r1] + movs r1, 0x3 + bl sub_8104C64 +_0810503E: + movs r0, 0 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08105048: .4byte gUnknown_8452344 +_0810504C: .4byte gUnknown_8415F6C +_08105050: .4byte gUnknown_203ACF0 +_08105054: .4byte 0x0000ffff + thumb_func_end sub_8104F0C + + thumb_func_start sub_8105058 +sub_8105058: @ 8105058 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + cmp r0, 0xFF + bne _081050C0 + ldr r7, _081050B4 @ =gUnknown_84406C8 + movs r6, 0xB0 + lsls r6, 15 + movs r5, 0xA4 + lsls r5, 15 + movs r4, 0x3 +_0810507A: + lsrs r1, r5, 16 + adds r0, r7, 0 + movs r2, 0x2 + bl sub_80703EC + lsrs r1, r6, 16 + adds r0, r7, 0x2 + movs r2, 0x2 + bl sub_80703EC + movs r0, 0x80 + lsls r0, 13 + adds r6, r0 + adds r5, r0 + subs r4, 0x1 + cmp r4, 0 + bge _0810507A + ldr r0, _081050B4 @ =gUnknown_84406C8 + ldr r1, _081050B8 @ =0x00000141 + movs r2, 0x2 + bl sub_80703EC + ldr r0, _081050BC @ =gUnknown_203ACF0 + ldr r0, [r0] + adds r0, 0x2E + movs r1, 0 + strb r1, [r0] + b _0810515E + .align 2, 0 +_081050B4: .4byte gUnknown_84406C8 +_081050B8: .4byte 0x00000141 +_081050BC: .4byte gUnknown_203ACF0 +_081050C0: + ldr r2, _08105120 @ =gUnknown_203ACF0 + ldr r1, [r2] + adds r1, 0x2E + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r1, r0, 0 + adds r1, 0x2E + ldrb r0, [r1] + cmp r0, 0x10 + bne _081050DC + movs r0, 0 + strb r0, [r1] +_081050DC: + ldr r0, [r2] + adds r0, 0x2E + ldrb r0, [r0] + lsrs r7, r0, 2 + movs r4, 0 + lsls r0, r7, 2 + mov r8, r0 + ldr r0, _08105124 @ =gUnknown_84406CC + mov r10, r0 + movs r6, 0xB0 + lsls r6, 15 + movs r5, 0xA4 + lsls r5, 15 + movs r0, 0x4 + negs r0, r0 + add r0, r10 + mov r9, r0 +_081050FE: + ldr r0, [sp] + cmp r4, r0 + bne _0810512C + lsrs r1, r5, 16 + mov r0, r8 + add r0, r10 + movs r2, 0x2 + bl sub_80703EC + lsrs r1, r6, 16 + ldr r0, _08105128 @ =gUnknown_84406CE + add r0, r8 + movs r2, 0x2 + bl sub_80703EC + b _08105142 + .align 2, 0 +_08105120: .4byte gUnknown_203ACF0 +_08105124: .4byte gUnknown_84406CC +_08105128: .4byte gUnknown_84406CE +_0810512C: + lsrs r1, r5, 16 + mov r0, r9 + movs r2, 0x2 + bl sub_80703EC + lsrs r1, r6, 16 + mov r0, r9 + adds r0, 0x2 + movs r2, 0x2 + bl sub_80703EC +_08105142: + lsls r1, r7, 2 + movs r0, 0x80 + lsls r0, 13 + adds r6, r0 + adds r5, r0 + adds r4, 0x1 + cmp r4, 0x3 + ble _081050FE + ldr r0, _08105170 @ =gUnknown_84406CC + adds r0, r1, r0 + ldr r1, _08105174 @ =0x00000141 + movs r2, 0x2 + bl sub_80703EC +_0810515E: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08105170: .4byte gUnknown_84406CC +_08105174: .4byte 0x00000141 + thumb_func_end sub_8105058 + + thumb_func_start sub_8105178 +sub_8105178: @ 8105178 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsls r2, 24 + movs r3, 0xFF + lsls r3, 24 + adds r2, r3 + ldr r3, _081051A8 @ =gUnknown_8452334 + lsrs r2, 22 + adds r2, r3 + ldr r2, [r2] + lsrs r1, 22 + adds r1, r2 + ldrb r3, [r1, 0x2] + lsls r3, 3 + ldrb r2, [r1, 0x3] + lsls r2, 3 + adds r1, r3, 0 + movs r3, 0 + bl sub_8133CAC + pop {r0} + bx r0 + .align 2, 0 +_081051A8: .4byte gUnknown_8452334 + thumb_func_end sub_8105178 + + thumb_func_start sub_81051AC +sub_81051AC: @ 81051AC + push {lr} + lsls r1, 24 + lsls r3, 24 + lsrs r1, 23 + adds r1, r0, r1 + lsrs r3, 23 + adds r2, r3 + movs r3, 0x13 +_081051BC: + ldrh r0, [r1] + strh r0, [r2] + adds r2, 0x40 + adds r1, 0x40 + subs r3, 0x1 + cmp r3, 0 + bge _081051BC + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_81051AC + + thumb_func_start sub_81051D0 +sub_81051D0: @ 81051D0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r2, 24 + lsrs r2, 23 + adds r1, r2 + movs r2, 0x13 +_081051DE: + strh r0, [r1] + adds r1, 0x40 + subs r2, 0x1 + cmp r2, 0 + bge _081051DE + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_81051D0 + + thumb_func_start sub_81051F0 +sub_81051F0: @ 81051F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_8002008 + mov r10, r0 + movs r0, 0x2 + bl sub_8002008 + mov r9, r0 + movs r0, 0x3 + bl sub_8002008 + mov r8, r0 + ldr r0, _0810526C @ =gUnknown_203ACF0 + ldr r0, [r0] + ldr r0, [r0, 0x5C] + movs r1, 0x80 + lsls r1, 5 + adds r1, r0, r1 + str r1, [sp, 0x4] + movs r1, 0x80 + lsls r1, 4 + adds r1, r0, r1 + str r1, [sp, 0x8] + str r0, [sp, 0xC] + movs r0, 0 + str r0, [sp] + ldr r1, _08105270 @ =gUnknown_8452388 + movs r7, 0 + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 1 + adds r6, r0, r1 +_08105242: + ldrb r4, [r6] + cmp r4, 0x1E + bne _08105274 + lsrs r4, r7, 24 + movs r0, 0 + mov r1, r10 + adds r2, r4, 0 + bl sub_81051D0 + movs r0, 0 + mov r1, r9 + adds r2, r4, 0 + bl sub_81051D0 + movs r0, 0xC + mov r1, r8 + adds r2, r4, 0 + bl sub_81051D0 + b _0810529A + .align 2, 0 +_0810526C: .4byte gUnknown_203ACF0 +_08105270: .4byte gUnknown_8452388 +_08105274: + lsrs r5, r7, 24 + ldr r0, [sp, 0x4] + adds r1, r4, 0 + mov r2, r10 + adds r3, r5, 0 + bl sub_81051AC + ldr r0, [sp, 0x8] + adds r1, r4, 0 + mov r2, r9 + adds r3, r5, 0 + bl sub_81051AC + ldr r0, [sp, 0xC] + adds r1, r4, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_81051AC +_0810529A: + movs r1, 0x80 + lsls r1, 17 + adds r7, r1 + adds r6, 0x1 + ldr r0, [sp] + adds r0, 0x1 + str r0, [sp] + cmp r0, 0x1D + ble _08105242 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + movs r0, 0 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81051F0 + + thumb_func_start sub_81052D0 +sub_81052D0: @ 81052D0 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_806E25C + cmp r0, 0 + beq _081052E8 + ldr r0, _081052E4 @ =gUnknown_84406E0 + b _081052EA + .align 2, 0 +_081052E4: .4byte gUnknown_84406E0 +_081052E8: + ldr r0, _08105304 @ =gUnknown_84404C8 +_081052EA: + ldrh r4, [r0, 0xE] + ldr r1, _08105308 @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x2] + adds r5, r1, 0 + cmp r0, 0x9 + bls _081052FA + b _0810557C +_081052FA: + lsls r0, 2 + ldr r1, _0810530C @ =_08105310 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08105304: .4byte gUnknown_84404C8 +_08105308: .4byte gUnknown_203ACF0 +_0810530C: .4byte _08105310 + .align 2, 0 +_08105310: + .4byte _08105338 + .4byte _08105358 + .4byte _08105364 + .4byte _08105384 + .4byte _081053DC + .4byte _0810547C + .4byte _08105492 + .4byte _081054F0 + .4byte _08105528 + .4byte _0810555C +_08105338: + movs r0, 0xC0 + lsls r0, 5 + bl sub_8002B9C + ldr r1, _08105350 @ =gUnknown_203ACF0 + ldr r1, [r1] + str r0, [r1, 0x5C] + cmp r6, 0 + beq _08105354 + movs r0, 0x6 + b _0810557A + .align 2, 0 +_08105350: .4byte gUnknown_203ACF0 +_08105354: + movs r0, 0x2 + b _0810557A +_08105358: + ldr r0, [r5] + ldr r0, [r0, 0x5C] + bl sub_8002BC4 + movs r0, 0x1 + b _0810557E +_08105364: + ldr r0, _0810537C @ =0x00007fff + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08105380 @ =gUnknown_203ACF0 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + b _0810557A + .align 2, 0 +_0810537C: .4byte 0x00007fff +_08105380: .4byte gUnknown_203ACF0 +_08105384: + movs r0, 0x1E + str r0, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0xC + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r5, 0x20 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r0, _081053D8 @ =gUnknown_203ACF0 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + b _0810557A + .align 2, 0 +_081053D8: .4byte gUnknown_203ACF0 +_081053DC: + ldr r0, _08105474 @ =0x00007fff + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_8104F0C + movs r0, 0x3 + bl sub_8002008 + ldr r6, _08105478 @ =gUnknown_203ACF0 + ldr r1, [r6] + ldr r1, [r1, 0x5C] + movs r4, 0x80 + lsls r4, 2 + adds r2, r4, 0 + bl CpuFastSet + movs r0, 0x2 + bl sub_8002008 + ldr r1, [r6] + ldr r1, [r1, 0x5C] + movs r2, 0x80 + lsls r2, 4 + adds r1, r2 + adds r2, r4, 0 + bl CpuFastSet + movs r0, 0x1 + bl sub_8002008 + ldr r1, [r6] + ldr r1, [r1, 0x5C] + movs r2, 0x80 + lsls r2, 5 + adds r1, r2 + adds r2, r4, 0 + bl CpuFastSet + movs r0, 0x1E + str r0, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0xC + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r5, 0x20 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r1, [r6] + movs r0, 0 + strb r0, [r1, 0x3] + ldr r1, [r6] + b _081054DC + .align 2, 0 +_08105474: .4byte 0x00007fff +_08105478: .4byte gUnknown_203ACF0 +_0810547C: + ldr r1, [r5] + ldrb r0, [r1, 0x3] + cmp r0, 0x9 + bhi _08105578 + bl sub_81051F0 + ldr r1, [r5] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + b _0810557C +_08105492: + movs r0, 0x3 + bl sub_8002008 + ldr r4, _081054EC @ =gUnknown_203ACF0 + ldr r1, [r4] + ldr r1, [r1, 0x5C] + movs r5, 0x80 + lsls r5, 2 + adds r2, r5, 0 + bl CpuFastSet + movs r0, 0x2 + bl sub_8002008 + ldr r1, [r4] + ldr r1, [r1, 0x5C] + movs r2, 0x80 + lsls r2, 4 + adds r1, r2 + adds r2, r5, 0 + bl CpuFastSet + movs r0, 0x1 + bl sub_8002008 + ldr r1, [r4] + ldr r1, [r1, 0x5C] + movs r2, 0x80 + lsls r2, 5 + adds r1, r2 + adds r2, r5, 0 + bl CpuFastSet + ldr r1, [r4] + movs r0, 0x9 + strb r0, [r1, 0x3] + ldr r1, [r4] +_081054DC: + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + movs r0, 0x6B + bl sub_80722CC + b _0810557C + .align 2, 0 +_081054EC: .4byte gUnknown_203ACF0 +_081054F0: + ldr r1, [r5] + ldrb r0, [r1, 0x3] + cmp r0, 0 + beq _08105506 + bl sub_81051F0 + ldr r1, [r5] + ldrb r0, [r1, 0x3] + subs r0, 0x1 + strb r0, [r1, 0x3] + b _0810557C +_08105506: + ldrb r0, [r1, 0x2] + bl sub_81051F0 + ldr r0, _08105524 @ =0x00007fff + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r5] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + b _0810557A + .align 2, 0 +_08105524: .4byte 0x00007fff +_08105528: + ldr r2, _08105554 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + movs r0, 0 + bl sub_8104F0C + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r0, _08105558 @ =gUnknown_203ACF0 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + b _0810557A + .align 2, 0 +_08105554: .4byte gUnknown_2037AB8 +_08105558: .4byte gUnknown_203ACF0 +_0810555C: + ldr r2, _08105588 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + ldr r0, _0810558C @ =0x00007fff + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _08105590 @ =gUnknown_203ACF0 + ldr r1, [r0] +_08105578: + movs r0, 0x1 +_0810557A: + strb r0, [r1, 0x2] +_0810557C: + movs r0, 0 +_0810557E: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08105588: .4byte gUnknown_2037AB8 +_0810558C: .4byte 0x00007fff +_08105590: .4byte gUnknown_203ACF0 + thumb_func_end sub_81052D0 + + thumb_func_start sub_8105594 +sub_8105594: @ 8105594 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _081055C0 @ =gUnknown_203ACF0 + ldr r3, [r0] + adds r2, r3, 0 + adds r2, 0x2C + ldrb r0, [r2] + cmp r0, 0 + bne _081055C8 + ldr r0, _081055C4 @ =gUnknown_8452334 + ldr r0, [r0] + ldrb r3, [r0, 0x2] + ldrb r1, [r0, 0x3] + b _081055E2 + .align 2, 0 +_081055C0: .4byte gUnknown_203ACF0 +_081055C4: .4byte gUnknown_8452334 +_081055C8: + ldr r1, _08105634 @ =gUnknown_8452334 + ldrb r0, [r2] + subs r0, 0x1 + lsls r0, 2 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x2D + ldrb r1, [r1] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrb r3, [r1, 0x2] + ldrb r1, [r1, 0x3] +_081055E2: + lsls r0, r4, 26 + movs r2, 0xC0 + lsls r2, 19 + adds r0, r2 + lsrs r0, 24 + str r0, [sp, 0x8] + lsls r2, r4, 1 + adds r0, r2, 0x3 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + ldr r0, [sp, 0x8] + cmp r0, 0x1B + bls _08105602 + movs r0, 0x1C + str r0, [sp, 0x8] +_08105602: + ldr r0, [sp, 0xC] + cmp r0, 0xD + bls _0810560C + movs r0, 0xE + str r0, [sp, 0xC] +_0810560C: + subs r0, r3, r2 + lsls r0, 16 + subs r1, r4 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x10] + lsrs r6, r0, 16 + asrs r1, r0, 16 + ldr r2, [sp, 0x8] + adds r0, r1, r2 + adds r0, 0x2 + cmp r0, 0x1D + ble _08105638 + adds r0, r1, 0 + adds r0, 0x1C + adds r1, r6, r2 + subs r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + b _0810563E + .align 2, 0 +_08105634: .4byte gUnknown_8452334 +_08105638: + cmp r1, 0 + bge _0810563E + movs r6, 0 +_0810563E: + ldr r3, [sp, 0x10] + lsls r0, r3, 16 + asrs r1, r0, 16 + ldr r2, [sp, 0xC] + adds r0, r1, r2 + adds r0, 0x2 + cmp r0, 0x11 + ble _0810565E + adds r0, r1, 0 + adds r0, 0x10 + adds r1, r3, r2 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x10] + b _08105666 +_0810565E: + cmp r1, 0x1 + bgt _08105666 + movs r3, 0x2 + str r3, [sp, 0x10] +_08105666: + ldr r1, [sp, 0xC] + lsrs r0, r1, 1 + adds r0, 0x2 + ldr r2, [sp, 0x10] + lsls r2, 16 + asrs r2, 16 + mov r10, r2 + add r10, r0 + mov r3, r10 + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + lsls r2, r6, 24 + lsrs r2, 24 + str r2, [sp, 0x14] + ldr r0, [sp, 0x10] + lsls r4, r0, 24 + lsrs r4, 24 + movs r5, 0x1 + str r5, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x4 + adds r3, r4, 0 + bl sub_8002454 + adds r6, 0x1 + lsls r2, r6, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + ldr r1, [sp, 0x8] + str r1, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x5 + adds r3, r4, 0 + bl sub_8002454 + ldr r1, _081057EC @ =0x00000404 + ldr r2, [sp, 0x8] + lsls r2, 24 + asrs r2, 24 + mov r8, r2 + add r8, r6 + mov r3, r8 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + str r5, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_8002454 + ldr r6, [sp, 0x10] + adds r6, 0x1 + ldr r0, [sp, 0xC] + lsls r4, r0, 24 + asrs r4, 24 + adds r4, r6 + lsls r4, 24 + lsrs r4, 24 + str r5, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0xA + ldr r2, [sp, 0x14] + adds r3, r4, 0 + bl sub_8002454 + ldr r1, [sp, 0x8] + str r1, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0xB + ldr r2, [sp, 0x18] + adds r3, r4, 0 + bl sub_8002454 + ldr r1, _081057F0 @ =0x0000040a + str r5, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_8002454 + lsls r3, r6, 24 + lsrs r3, 24 + str r3, [sp, 0x1C] + str r5, [sp] + mov r2, r10 + ldr r3, [sp, 0x10] + subs r6, r2, r3 + subs r6, 0x1 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x6 + ldr r2, [sp, 0x14] + ldr r3, [sp, 0x1C] + bl sub_8002454 + mov r0, r10 + lsls r3, r0, 24 + lsrs r3, 24 + str r3, [sp, 0x20] + str r5, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x7 + ldr r2, [sp, 0x14] + bl sub_8002454 + movs r1, 0x1 + add r1, r10 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + str r5, [sp] + ldr r2, [sp, 0xC] + ldr r3, [sp, 0x10] + adds r4, r2, r3 + mov r0, r10 + subs r4, r0 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x9 + ldr r2, [sp, 0x14] + mov r3, r9 + bl sub_8002454 + ldr r1, _081057F4 @ =0x00000406 + str r5, [sp] + str r6, [sp, 0x4] + adds r0, r7, 0 + mov r2, r8 + ldr r3, [sp, 0x1C] + bl sub_8002454 + ldr r1, _081057F8 @ =0x00000407 + str r5, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + mov r2, r8 + ldr r3, [sp, 0x20] + bl sub_8002454 + ldr r1, _081057FC @ =0x00000409 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r7, 0 + mov r2, r8 + mov r3, r9 + bl sub_8002454 + ldr r1, [sp, 0x8] + str r1, [sp] + str r6, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x1 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl sub_8002454 + ldr r2, [sp, 0x8] + str r2, [sp] + str r5, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x8 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x20] + bl sub_8002454 + ldr r3, [sp, 0x8] + str r3, [sp] + str r4, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x2 + ldr r2, [sp, 0x18] + mov r3, r9 + bl sub_8002454 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081057EC: .4byte 0x00000404 +_081057F0: .4byte 0x0000040a +_081057F4: .4byte 0x00000406 +_081057F8: .4byte 0x00000407 +_081057FC: .4byte 0x00000409 + thumb_func_end sub_8105594 + + thumb_func_start sub_8105800 +sub_8105800: @ 8105800 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + adds r0, r1, 0 + bl sub_8043298 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r2, _08105860 @ =gUnknown_844E850 + adds r5, r1, r2 + movs r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08105864 + ldrb r0, [r5] + cmp r0, 0 + beq _08105878 +_08105840: + mov r1, sp + adds r1, r4 + adds r1, 0x8 + adds r0, r5, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _08105878 + cmp r4, 0xA + bls _08105840 + b _08105878 + .align 2, 0 +_08105860: .4byte gUnknown_844E850 +_08105864: + movs r1, 0xAC +_08105866: + mov r0, sp + adds r0, r4 + adds r0, 0x8 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _08105866 +_08105878: + mov r1, sp + adds r1, r4 + adds r1, 0x8 + movs r0, 0xFF + strb r0, [r1] + str r7, [sp] + movs r4, 0 + str r4, [sp, 0x4] + mov r0, r8 + movs r1, 0 + add r2, sp, 0x8 + adds r3, r6, 0 + bl sub_81047C8 + movs r0, 0 + add r1, sp, 0x8 + movs r2, 0 + bl sub_8005ED4 + adds r0, r6, r0 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _081058C0 @ =gUnknown_8415F8F + str r7, [sp] + str r4, [sp, 0x4] + mov r0, r8 + movs r1, 0 + adds r3, r6, 0 + bl sub_81047C8 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081058C0: .4byte gUnknown_8415F8F + thumb_func_end sub_8105800 + + thumb_func_start sub_81058C4 +sub_81058C4: @ 81058C4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + adds r0, r1, 0 + bl sub_8043298 + ldr r2, _08105974 @ =gUnknown_844E850 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r4, [r1, 0xC] + ldr r1, _08105978 @ =gUnknown_8415F98 + mov r10, r1 + movs r3, 0 + add r2, sp, 0x8 + movs r1, 0xFC + strb r1, [r2] + adds r2, 0x1 + movs r1, 0x14 + strb r1, [r2] + adds r2, 0x1 + movs r1, 0x5 + strb r1, [r2] + mov r1, sp + adds r1, 0xB + strb r3, [r1] + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _081059CE + ldr r0, _0810597C @ =0x00002710 + muls r0, r4 + movs r1, 0xFE + bl __divsi3 + adds r5, r0, 0 + movs r1, 0xA + bl __umodsi3 + cmp r0, 0x4 + bls _0810593A + adds r5, 0xA +_0810593A: + adds r0, r5, 0 + movs r1, 0x78 + bl __udivsi3 + adds r6, r0, 0 + lsls r0, r6, 4 + subs r0, r6 + lsls r0, 3 + subs r0, r5, r0 + movs r1, 0xA + bl __udivsi3 + adds r5, r0, 0 + adds r0, r6, 0 + movs r1, 0xA + bl __udivsi3 + adds r2, r0, 0 + cmp r2, 0 + bne _08105980 + add r0, sp, 0xC + strb r2, [r0] + mov r1, sp + adds r1, 0xD + adds r0, r6, 0 + adds r0, 0xA1 + strb r0, [r1] + b _08105998 + .align 2, 0 +_08105974: .4byte gUnknown_844E850 +_08105978: .4byte gUnknown_8415F98 +_0810597C: .4byte 0x00002710 +_08105980: + add r1, sp, 0xC + adds r0, r2, 0 + adds r0, 0xA1 + strb r0, [r1] + mov r4, sp + adds r4, 0xD + adds r0, r6, 0 + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r4] +_08105998: + mov r1, sp + adds r1, 0xE + movs r0, 0xB4 + strb r0, [r1] + mov r4, sp + adds r4, 0xF + adds r0, r5, 0 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + add r4, sp, 0x10 + adds r0, r5, 0 + movs r1, 0xA + bl __umodsi3 + adds r0, 0xA1 + strb r0, [r4] + mov r1, sp + adds r1, 0x11 + movs r0, 0xB2 + strb r0, [r1] + movs r2, 0xB + adds r1, 0x1 + movs r0, 0xFF + b _081059F2 +_081059CE: + add r0, sp, 0xC + movs r1, 0xAC + strb r1, [r0] + adds r0, 0x1 + strb r1, [r0] + mov r2, sp + adds r2, 0xE + movs r0, 0xB4 + strb r0, [r2] + mov r0, sp + adds r0, 0xF + strb r1, [r0] + add r0, sp, 0x10 + strb r1, [r0] + movs r2, 0xA + mov r1, sp + adds r1, 0x11 + movs r0, 0xB2 +_081059F2: + strb r0, [r1] + mov r1, sp + adds r1, r2 + adds r1, 0x8 + movs r0, 0xFF + strb r0, [r1] + mov r0, r8 + str r0, [sp] + movs r4, 0 + str r4, [sp, 0x4] + mov r0, r9 + movs r1, 0 + mov r2, r10 + adds r3, r7, 0 + bl sub_81047C8 + adds r0, r7, 0 + adds r0, 0x1E + lsls r0, 24 + lsrs r7, r0, 24 + mov r1, r8 + str r1, [sp] + str r4, [sp, 0x4] + mov r0, r9 + movs r1, 0 + add r2, sp, 0x8 + adds r3, r7, 0 + bl sub_81047C8 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81058C4 + + thumb_func_start sub_8105A3C +sub_8105A3C: @ 8105A3C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + adds r0, r1, 0 + bl sub_8043298 + ldr r2, _08105ACC @ =gUnknown_844E850 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r4, [r1, 0xE] + add r2, sp, 0x8 + movs r1, 0xFC + strb r1, [r2] + adds r2, 0x1 + movs r1, 0x14 + strb r1, [r2] + adds r2, 0x1 + movs r1, 0x5 + strb r1, [r2] + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + bne _08105A92 + b _08105BC4 +_08105A92: + ldr r7, _08105AD0 @ =0x000186a0 + adds r0, r4, 0 + muls r0, r7 + ldr r1, _08105AD4 @ =0x000011b8 + bl __divsi3 + adds r6, r0, 0 + movs r1, 0xA + bl __umodsi3 + cmp r0, 0x4 + bls _08105AAC + adds r6, 0xA +_08105AAC: + movs r5, 0 + mov r4, sp + adds r4, 0xB + adds r0, r6, 0 + adds r1, r7, 0 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA1 + bne _08105AD8 + movs r7, 0x4 + strb r5, [r4] + b _08105ADC + .align 2, 0 +_08105ACC: .4byte gUnknown_844E850 +_08105AD0: .4byte 0x000186a0 +_08105AD4: .4byte 0x000011b8 +_08105AD8: + movs r5, 0x1 + movs r7, 0x4 +_08105ADC: + ldr r1, _08105B14 @ =0x000186a0 + adds r0, r6, 0 + bl __umodsi3 + adds r6, r0, 0 + mov r4, sp + adds r4, r7 + adds r4, 0x8 + ldr r1, _08105B18 @ =0x00002710 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA1 + bne _08105B1C + cmp r5, 0 + bne _08105B1C + adds r0, r7, 0 + adds r1, r0, 0x1 + lsls r1, 24 + lsrs r7, r1, 24 + add r0, sp + adds r0, 0x8 + strb r5, [r0] + b _08105B24 + .align 2, 0 +_08105B14: .4byte 0x000186a0 +_08105B18: .4byte 0x00002710 +_08105B1C: + movs r5, 0x1 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_08105B24: + ldr r1, _08105B5C @ =0x00002710 + adds r0, r6, 0 + bl __umodsi3 + adds r6, r0, 0 + mov r4, sp + adds r4, r7 + adds r4, 0x8 + movs r1, 0xFA + lsls r1, 2 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA1 + bne _08105B60 + cmp r5, 0 + bne _08105B60 + adds r0, r7, 0 + adds r1, r0, 0x1 + lsls r1, 24 + lsrs r7, r1, 24 + add r0, sp + adds r0, 0x8 + strb r5, [r0] + b _08105B66 + .align 2, 0 +_08105B5C: .4byte 0x00002710 +_08105B60: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_08105B66: + movs r1, 0xFA + lsls r1, 2 + adds r0, r6, 0 + bl __umodsi3 + adds r6, r0, 0 + adds r1, r7, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r5, r7, 0 + mov r4, sp + adds r4, r1 + adds r4, 0x8 + adds r0, r6, 0 + movs r1, 0x64 + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + adds r0, r6, 0 + movs r1, 0x64 + bl __umodsi3 + adds r6, r0, 0 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r2, r7, 0 + mov r1, sp + adds r1, r5 + adds r1, 0x8 + movs r0, 0xAD + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + mov r4, sp + adds r4, r2 + adds r4, 0x8 + adds r0, r6, 0 + movs r1, 0xA + bl __udivsi3 + adds r0, 0xA1 + strb r0, [r4] + b _08105BE6 +_08105BC4: + mov r0, sp + adds r0, 0xB + movs r2, 0xAC + strb r2, [r0] + add r0, sp, 0xC + strb r2, [r0] + adds r0, 0x1 + strb r2, [r0] + adds r0, 0x1 + strb r2, [r0] + mov r1, sp + adds r1, 0xF + movs r0, 0xAD + strb r0, [r1] + movs r7, 0x9 + add r0, sp, 0x10 + strb r2, [r0] +_08105BE6: + adds r1, r7, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r2, r7, 0 + mov r0, sp + adds r0, r1 + adds r0, 0x8 + movs r4, 0 + strb r4, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r3, r7, 0 + mov r1, sp + adds r1, r2 + adds r1, 0x8 + movs r0, 0xFC + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r2, r7, 0 + mov r1, sp + adds r1, r3 + adds r1, 0x8 + movs r0, 0x14 + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, sp + adds r0, r2 + adds r0, 0x8 + strb r4, [r0] + movs r2, 0 + movs r0, 0x21 + subs r1, r0, r7 + mov r5, r8 + adds r5, 0x1E + cmp r2, r1 + bcs _08105C60 + ldr r3, _08105CA8 @ =gUnknown_8415FA0 + ldrb r0, [r3] + cmp r0, 0xFF + beq _08105C60 + adds r3, r1, 0 + ldr r4, _08105CA8 @ =gUnknown_8415FA0 + adds r1, r7, 0 + add r1, sp + adds r1, 0x8 +_08105C4C: + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x1 + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r3 + bcs _08105C60 + ldrb r0, [r4] + cmp r0, 0xFF + bne _08105C4C +_08105C60: + adds r0, r7, r2 + mov r1, sp + adds r1, r0 + adds r1, 0x8 + movs r0, 0xFF + strb r0, [r1] + mov r0, r9 + str r0, [sp] + movs r4, 0 + str r4, [sp, 0x4] + mov r0, r10 + movs r1, 0 + ldr r2, _08105CAC @ =gUnknown_8415F9B + mov r3, r8 + bl sub_81047C8 + lsls r0, r5, 24 + lsrs r0, 24 + mov r8, r0 + mov r1, r9 + str r1, [sp] + str r4, [sp, 0x4] + mov r0, r10 + movs r1, 0 + add r2, sp, 0x8 + mov r3, r8 + bl sub_81047C8 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08105CA8: .4byte gUnknown_8415FA0 +_08105CAC: .4byte gUnknown_8415F9B + thumb_func_end sub_8105A3C + + thumb_func_start sub_8105CB0 +sub_8105CB0: @ 8105CB0 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r5, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + adds r0, r1, 0 + bl sub_8043298 + adds r4, r0, 0 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08105D5C + ldr r1, _08105D44 @ =gUnknown_844E850 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, 0x10 + adds r0, r1 + ldr r1, [r0] + str r1, [sp] + mov r0, sp + movs r3, 0 + strb r6, [r0, 0x4] + mov r2, sp + movs r0, 0x2 + strb r0, [r2, 0x5] + movs r0, 0x1 + strb r0, [r2, 0xA] + mov r0, sp + strb r3, [r0, 0xB] + mov r4, sp + ldrb r3, [r4, 0xC] + movs r2, 0x10 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r4, 0xC] + mov r3, sp + movs r0, 0x10 + strb r0, [r3, 0xC] + ldrb r0, [r3, 0xD] + ands r2, r0 + strb r2, [r3, 0xD] + mov r2, sp + movs r0, 0x20 + strb r0, [r2, 0xD] + movs r0, 0x2 + movs r2, 0 + bl sub_8005ED4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + adds r0, r5, r1 + cmp r0, 0 + ble _08105D48 + lsls r0, 24 + lsrs r5, r0, 24 + b _08105D4A + .align 2, 0 +_08105D44: .4byte gUnknown_844E850 +_08105D48: + movs r5, 0 +_08105D4A: + mov r0, sp + strb r5, [r0, 0x6] + strb r7, [r0, 0x7] + strb r5, [r0, 0x8] + strb r7, [r0, 0x9] + movs r1, 0xFF + movs r2, 0 + bl sub_8002CF4 +_08105D5C: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8105CB0 + + thumb_func_start sub_8105D64 +sub_8105D64: @ 8105D64 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _08105E02 + ldr r1, _08105E14 @ =gUnknown_843FAB0 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + mov r12, r0 + ldr r7, _08105E18 @ =gUnknown_201C000 + movs r5, 0 + movs r1, 0 +_08105DA6: + mov r2, r12 + adds r0, r2, r1 + ldrb r3, [r0] + movs r4, 0 + adds r6, r1, 0x1 +_08105DB0: + lsls r1, r4, 1 + adds r2, r3, 0 + asrs r2, r1 + movs r0, 0x1 + ands r2, r0 + movs r0, 0x2 + lsls r0, r1 + ands r0, r3 + cmp r0, 0 + beq _08105DC8 + movs r0, 0x10 + orrs r2, r0 +_08105DC8: + adds r0, r7, r5 + strb r2, [r0] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08105DB0 + lsls r0, r6, 16 + lsrs r1, r0, 16 + cmp r1, 0x1F + bls _08105DA6 + movs r0, 0x10 + str r0, [sp] + str r0, [sp, 0x4] + mov r1, r9 + str r1, [sp, 0x8] + mov r2, r8 + str r2, [sp, 0xC] + str r0, [sp, 0x10] + str r0, [sp, 0x14] + mov r0, r10 + adds r1, r7, 0 + movs r2, 0 + movs r3, 0 + bl sub_80041F0 +_08105E02: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08105E14: .4byte gUnknown_843FAB0 +_08105E18: .4byte gUnknown_201C000 + thumb_func_end sub_8105D64 + + thumb_func_start sub_8105E1C +sub_8105E1C: @ 8105E1C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0x3 + movs r1, 0x6 + bl sub_8105594 + movs r4, 0x1E + str r4, [sp] + movs r5, 0x14 + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + ldr r0, _08105FD0 @ =gUnknown_84521D4 + bl sub_8003CE4 + ldr r4, _08105FD4 @ =gUnknown_203ACF0 + ldr r1, [r4] + adds r1, 0x4A + movs r2, 0 + mov r8, r2 + strb r0, [r1] + ldr r0, _08105FD8 @ =gUnknown_84521DC + bl sub_8003CE4 + ldr r1, [r4] + adds r1, 0x4B + strb r0, [r1] + ldr r0, _08105FDC @ =gUnknown_84521E4 + bl sub_8003CE4 + ldr r1, [r4] + adds r1, 0x4C + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x4A + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4A + ldrb r0, [r0] + adds r1, 0x5A + ldrh r1, [r1] + movs r2, 0x90 + bl sub_81049FC + ldr r0, [r4] + adds r0, 0x4A + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + adds r0, 0x4A + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + adds r0, 0x4B + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4B + ldrb r0, [r0] + adds r1, 0x5A + ldrh r2, [r1] + movs r5, 0x8 + str r5, [sp] + movs r1, 0 + movs r3, 0 + bl sub_8104A34 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4B + ldrb r0, [r0] + adds r1, 0x5A + ldrh r2, [r1] + movs r1, 0xB + muls r2, r1 + ldr r1, _08105FE0 @ =gUnknown_8245EE0 + adds r2, r1 + str r5, [sp] + mov r1, r8 + str r1, [sp, 0x4] + movs r1, 0x2 + movs r3, 0x1C + bl sub_81047C8 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4B + ldrb r0, [r0] + adds r1, 0x5A + ldrh r1, [r1] + movs r2, 0 + movs r3, 0x18 + bl sub_8105800 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4B + ldrb r0, [r0] + adds r1, 0x5A + ldrh r1, [r1] + movs r2, 0 + movs r3, 0x24 + bl sub_81058C4 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4B + ldrb r0, [r0] + adds r1, 0x5A + ldrh r1, [r1] + movs r2, 0 + movs r3, 0x30 + bl sub_8105A3C + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4B + ldrb r0, [r0] + adds r1, 0x5A + ldrh r1, [r1] + movs r2, 0x58 + movs r3, 0x28 + bl sub_8105D64 + ldr r0, [r4] + adds r0, 0x4B + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + adds r0, 0x4B + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + adds r0, 0x4C + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4C + ldrb r0, [r0] + adds r1, 0x5A + ldrh r1, [r1] + movs r2, 0 + movs r3, 0x8 + bl sub_8105CB0 + ldr r0, [r4] + adds r0, 0x4C + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + adds r0, 0x4C + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + cmp r6, 0 + bne _08105FEC + ldr r2, _08105FE4 @ =gUnknown_8415FAD + movs r0, 0x2 + str r0, [sp] + movs r0, 0x4 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r3, 0x8 + bl sub_81047C8 + ldr r0, _08105FE8 @ =gUnknown_8415FB3 + bl sub_8104C2C + b _08105FF2 + .align 2, 0 +_08105FD0: .4byte gUnknown_84521D4 +_08105FD4: .4byte gUnknown_203ACF0 +_08105FD8: .4byte gUnknown_84521DC +_08105FDC: .4byte gUnknown_84521E4 +_08105FE0: .4byte gUnknown_8245EE0 +_08105FE4: .4byte gUnknown_8415FAD +_08105FE8: .4byte gUnknown_8415FB3 +_08105FEC: + ldr r0, _08106010 @ =gUnknown_8415FC8 + bl sub_8104C2C +_08105FF2: + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08106010: .4byte gUnknown_8415FC8 + thumb_func_end sub_8105E1C + + thumb_func_start sub_8106014 +sub_8106014: @ 8106014 + push {r4,lr} + ldr r4, _08106038 @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r0, 0x4A + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x4B + bl sub_81047B0 + ldr r0, [r4] + adds r0, 0x4C + bl sub_81047B0 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08106038: .4byte gUnknown_203ACF0 + thumb_func_end sub_8106014 + + thumb_func_start sub_810603C +sub_810603C: @ 810603C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + ldr r6, _08106424 @ =gUnknown_203ACF0 + ldr r0, [r6] + adds r0, 0x5A + ldrh r0, [r0] + str r0, [sp, 0x1C] + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] + ldr r0, [sp, 0x1C] + movs r1, 0x1 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r7, 0x1C + movs r0, 0xE + mov r8, r0 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x4 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + ldr r1, _08106428 @ =0x00000404 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r2, 0x1D + movs r3, 0x2 + bl sub_8002454 + ldr r1, _0810642C @ =0x00000804 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r2, 0 + movs r3, 0x11 + bl sub_8002454 + ldr r1, _08106430 @ =0x00000c04 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r2, 0x1D + movs r3, 0x11 + bl sub_8002454 + str r7, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x5 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8002454 + ldr r1, _08106434 @ =0x00000805 + str r7, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r2, 0x1 + movs r3, 0x11 + bl sub_8002454 + str r4, [sp] + mov r1, r8 + str r1, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x6 + movs r2, 0 + movs r3, 0x3 + bl sub_8002454 + ldr r1, _08106438 @ =0x00000406 + str r4, [sp] + mov r2, r8 + str r2, [sp, 0x4] + movs r0, 0x3 + movs r2, 0x1D + movs r3, 0x3 + bl sub_8002454 + str r7, [sp] + mov r3, r8 + str r3, [sp, 0x4] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8002454 + movs r5, 0x1E + str r5, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r7, 0xA + movs r0, 0x6 + mov r8, r0 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0x1D + movs r2, 0x1 + movs r3, 0x9 + bl sub_8002454 + ldr r1, _0810643C @ =0x0000041d + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r2, 0xC + movs r3, 0x9 + bl sub_8002454 + ldr r1, _08106440 @ =0x0000081d + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r2, 0x1 + movs r3, 0x10 + bl sub_8002454 + ldr r1, _08106444 @ =0x00000c1d + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r2, 0xC + movs r3, 0x10 + bl sub_8002454 + str r7, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0x1E + movs r2, 0x2 + movs r3, 0x9 + bl sub_8002454 + ldr r1, _08106448 @ =0x0000081e + str r7, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r2, 0x2 + movs r3, 0x10 + bl sub_8002454 + str r4, [sp] + mov r1, r8 + str r1, [sp, 0x4] + movs r0, 0 + movs r1, 0x1F + movs r2, 0x1 + movs r3, 0xA + bl sub_8002454 + ldr r1, _0810644C @ =0x0000041f + str r4, [sp] + mov r2, r8 + str r2, [sp, 0x4] + movs r0, 0 + movs r2, 0xC + movs r3, 0xA + bl sub_8002454 + str r5, [sp] + movs r4, 0x14 + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r5, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + bl sub_80CC204 + ldr r1, [r6] + adds r1, 0x64 + strb r0, [r1] + movs r3, 0x4 + mov r9, r3 + movs r4, 0x3 + ldr r0, [r6] + adds r0, 0x64 + ldrb r1, [r0] + movs r2, 0x1 +_081061E2: + adds r0, r1, 0 + asrs r0, r4 + ands r0, r2 + cmp r0, 0 + beq _081061F0 + movs r0, 0 + mov r9, r0 +_081061F0: + adds r4, 0x1 + cmp r4, 0x6 + ble _081061E2 + ldr r0, _08106450 @ =gUnknown_8452214 + bl sub_8003CE4 + ldr r5, _08106424 @ =gUnknown_203ACF0 + ldr r1, [r5] + adds r1, 0x4A + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x4A + ldrb r0, [r0] + ldr r1, _08106454 @ =gUnknown_8443620 + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r0, [r5] + adds r0, 0x4A + ldrb r4, [r0] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8004950 + adds r2, r0, 0 + add r2, r9 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80048BC + ldr r0, [r5] + adds r0, 0x4A + ldrb r0, [r0] + bl sub_8003FA0 + movs r4, 0 + mov r1, r9 + lsls r1, 27 + str r1, [sp, 0x20] + ldr r7, _08106458 @ =gUnknown_8452254 + adds r2, r7, 0x4 + mov r8, r2 +_08106246: + ldr r0, [r5] + adds r0, 0x64 + ldrb r1, [r0] + asrs r1, r4 + movs r0, 0x1 + ands r1, r0 + adds r6, r4, 0x1 + cmp r1, 0 + beq _081062B4 + lsls r4, 3 + adds r0, r4, r7 + ldr r0, [r0] + bl sub_8003CE4 + ldr r1, [r5] + adds r1, 0x4A + adds r1, r6 + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x4A + adds r0, r6 + ldrb r0, [r0] + add r4, r8 + ldr r1, [r4] + movs r2, 0 + movs r3, 0 + bl sub_8004404 + ldr r0, [r5] + adds r0, 0x4A + adds r0, r6 + ldrb r4, [r0] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8004950 + adds r2, r0, 0 + add r2, r9 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80048BC + ldr r0, [r5] + adds r0, 0x4A + adds r0, r6 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r5] + adds r0, 0x4A + adds r0, r6 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 +_081062B4: + adds r4, r6, 0 + cmp r4, 0x6 + ble _08106246 + ldr r0, _0810645C @ =gUnknown_84521F4 + bl sub_8003CE4 + ldr r7, _08106424 @ =gUnknown_203ACF0 + ldr r1, [r7] + adds r1, 0x52 + movs r6, 0 + strb r0, [r1] + ldr r5, _08106460 @ =gUnknown_84521FC + adds r0, r5, 0 + bl sub_8003CE4 + ldr r1, [r7] + adds r1, 0x53 + strb r0, [r1] + ldr r3, _08106464 @ =gUnknown_8452204 + mov r8, r3 + mov r0, r8 + bl sub_8003CE4 + ldr r1, [r7] + adds r1, 0x54 + strb r0, [r1] + ldr r0, _08106468 @ =gUnknown_84521EC + bl sub_8003CE4 + ldr r1, [r7] + adds r1, 0x55 + strb r0, [r1] + ldr r0, _0810646C @ =gUnknown_845220C + bl sub_8003CE4 + ldr r1, [r7] + adds r1, 0x56 + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x55 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + movs r0, 0xA0 + ldr r1, [sp, 0x1C] + bl sub_8107CD8 + ldr r0, [sp, 0x1C] + bl sub_81049CC + adds r2, r0, 0 + ldr r0, [r7] + adds r0, 0x55 + ldrb r0, [r0] + str r6, [sp] + ldr r1, [sp, 0x1C] + movs r3, 0 + bl sub_8107CF8 + ldr r0, [r7] + adds r0, 0x55 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r7] + adds r0, 0x55 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r7] + adds r0, 0x53 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r4, _08106470 @ =gUnknown_8415FED + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + ldr r1, [r7] + adds r1, 0x53 + ldrb r1, [r1] + ldrb r3, [r5, 0x3] + lsls r3, 3 + subs r3, r0 + lsrs r0, r3, 31 + adds r3, r0 + asrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + movs r5, 0x4 + str r5, [sp] + str r6, [sp, 0x4] + adds r0, r1, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_81047C8 + ldr r0, [r7] + adds r0, 0x53 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r7] + adds r0, 0x53 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r7] + adds r0, 0x54 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r4, _08106474 @ =gUnknown_8415FE8 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + ldr r1, [r7] + adds r1, 0x54 + ldrb r1, [r1] + mov r2, r8 + ldrb r3, [r2, 0x3] + lsls r3, 3 + subs r3, r0 + lsrs r0, r3, 31 + adds r3, r0 + asrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r6, [sp, 0x4] + adds r0, r1, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_81047C8 + ldr r0, [r7] + adds r0, 0x54 + ldrb r4, [r0] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8004950 + adds r2, r0, 0 + add r2, r9 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80048BC + ldr r0, [r7] + adds r0, 0x54 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r7] + adds r0, 0x54 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r7] + adds r0, 0x52 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r7] + adds r0, 0x52 + ldrb r0, [r0] + str r6, [sp] + movs r1, 0 + ldr r2, [sp, 0x1C] + movs r3, 0 + bl sub_8104A34 + b _08106478 + .align 2, 0 +_08106424: .4byte gUnknown_203ACF0 +_08106428: .4byte 0x00000404 +_0810642C: .4byte 0x00000804 +_08106430: .4byte 0x00000c04 +_08106434: .4byte 0x00000805 +_08106438: .4byte 0x00000406 +_0810643C: .4byte 0x0000041d +_08106440: .4byte 0x0000081d +_08106444: .4byte 0x00000c1d +_08106448: .4byte 0x0000081e +_0810644C: .4byte 0x0000041f +_08106450: .4byte gUnknown_8452214 +_08106454: .4byte gUnknown_8443620 +_08106458: .4byte gUnknown_8452254 +_0810645C: .4byte gUnknown_84521F4 +_08106460: .4byte gUnknown_84521FC +_08106464: .4byte gUnknown_8452204 +_08106468: .4byte gUnknown_84521EC +_0810646C: .4byte gUnknown_845220C +_08106470: .4byte gUnknown_8415FED +_08106474: .4byte gUnknown_8415FE8 +_08106478: + ldr r0, [r7] + adds r0, 0x52 + ldrb r0, [r0] + movs r1, 0xB + ldr r3, [sp, 0x1C] + adds r2, r3, 0 + muls r2, r1 + ldr r1, _081066B0 @ =gUnknown_8245EE0 + adds r2, r1 + movs r1, 0xC + str r1, [sp] + str r6, [sp, 0x4] + movs r1, 0x2 + movs r3, 0x3 + bl sub_81047C8 + ldr r0, [r7] + adds r0, 0x52 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r7] + adds r0, 0x52 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r7] + adds r0, 0x56 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + movs r0, 0xB0 + movs r1, 0x1 + bl sub_8107D38 + mov r0, r10 + cmp r0, 0 + beq _08106504 + ldr r0, [r7] + adds r0, 0x56 + ldrb r0, [r0] + ldr r1, _081066B4 @ =gUnknown_8254784 + ldr r2, [sp, 0x1C] + lsls r4, r2, 3 + subs r4, r2 + lsls r4, 2 + adds r4, r1 + ldrb r5, [r4, 0x6] + adds r1, r5, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + movs r3, 0x1 + bl sub_8107D68 + ldrb r1, [r4, 0x7] + cmp r5, r1 + beq _08106504 + ldr r0, [r7] + adds r0, 0x56 + ldrb r0, [r0] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x20 + movs r3, 0x1 + bl sub_8107D68 +_08106504: + ldr r7, _081066B8 @ =gUnknown_203ACF0 + ldr r0, [r7] + adds r0, 0x56 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r7] + adds r0, 0x56 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + bl sub_810BB8C + ldr r0, _081066BC @ =gUnknown_8452368 + movs r1, 0x90 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC + mov r3, r10 + cmp r3, 0 + bne _08106534 + b _081066D0 +_08106534: + ldr r0, [sp, 0x1C] + bl sub_81049CC + adds r2, r0, 0 + movs r0, 0x28 + str r0, [sp] + movs r0, 0x68 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + ldr r1, _081066C0 @ =0x0000ffff + str r1, [sp, 0xC] + ldr r0, [sp, 0x1C] + movs r1, 0x8 + movs r3, 0x1 + bl sub_810C1CC + ldr r1, [r7] + adds r1, 0x58 + strb r0, [r1] + ldr r2, _081066C4 @ =gUnknown_202063C + mov r10, r2 + ldr r0, [r7] + adds r0, 0x58 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r10 + ldrb r2, [r1, 0x5] + movs r3, 0xF + mov r9, r3 + mov r0, r9 + ands r0, r2 + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x5] + ldr r0, [r7] + adds r0, 0x58 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r10 + ldrb r2, [r1, 0x1] + subs r3, 0x13 + mov r8, r3 + mov r0, r8 + ands r0, r2 + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1, 0x1] + ldr r0, [r7] + adds r0, 0x58 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r10 + ldrb r2, [r1, 0x3] + movs r6, 0x3F + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + movs r3, 0x4 + orrs r0, r3 + strb r0, [r1, 0x3] + ldr r0, [r7] + adds r0, 0x58 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r10 + ldrb r2, [r1, 0x5] + movs r5, 0xD + negs r5, r5 + adds r0, r5, 0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldr r0, [r7] + adds r0, 0x58 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldr r1, _081066C8 @ =gUnknown_844E850 + ldr r2, [sp, 0x18] + lsls r4, r2, 3 + adds r4, r2 + lsls r4, 2 + adds r4, r1 + ldrh r1, [r4, 0x1C] + strh r1, [r0, 0x26] + ldrh r1, [r4, 0x1A] + str r1, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80073BC + ldr r0, _081066CC @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + movs r1, 0x1 + bl sub_810C374 + lsls r0, 16 + lsrs r0, 16 + movs r3, 0 + str r3, [sp] + ldr r1, _081066C0 @ =0x0000ffff + str r1, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x50 + movs r3, 0x68 + bl sub_810C2A4 + ldr r1, [r7] + adds r1, 0x59 + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x59 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r1, [r0, 0x5] + mov r2, r9 + ands r2, r1 + movs r3, 0x20 + orrs r2, r3 + strb r2, [r0, 0x5] + ldr r0, [r7] + adds r0, 0x59 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r1, [r0, 0x1] + mov r2, r8 + ands r2, r1 + movs r3, 0x1 + orrs r2, r3 + strb r2, [r0, 0x1] + ldr r0, [r7] + adds r0, 0x59 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r1, [r0, 0x3] + ands r6, r1 + movs r1, 0x2 + orrs r6, r1 + strb r6, [r0, 0x3] + ldr r0, [r7] + adds r0, 0x59 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r1, [r0, 0x5] + ands r5, r1 + movs r1, 0x4 + orrs r5, r1 + strb r5, [r0, 0x5] + ldr r0, [r7] + adds r0, 0x59 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r1, [r4, 0x20] + strh r1, [r0, 0x26] + ldrh r1, [r4, 0x1E] + str r1, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80073BC + b _081066E2 + .align 2, 0 +_081066B0: .4byte gUnknown_8245EE0 +_081066B4: .4byte gUnknown_8254784 +_081066B8: .4byte gUnknown_203ACF0 +_081066BC: .4byte gUnknown_8452368 +_081066C0: .4byte 0x0000ffff +_081066C4: .4byte gUnknown_202063C +_081066C8: .4byte gUnknown_844E850 +_081066CC: .4byte gUnknown_300500C +_081066D0: + ldr r0, [r7] + adds r0, 0x58 + movs r1, 0xFF + strb r1, [r0] + ldr r0, [r7] + adds r0, 0x59 + movs r1, 0x1 + negs r1, r1 + strb r1, [r0] +_081066E2: + ldr r1, _081067A8 @ =0x000007d1 + ldr r2, [sp, 0x20] + lsrs r3, r2, 24 + ldr r0, [sp, 0x1C] + movs r2, 0x3 + bl sub_8134230 + ldr r5, _081067AC @ =gUnknown_203ACF0 + ldr r1, [r5] + strb r0, [r1, 0x4] + ldr r0, [r5] + ldrb r0, [r0, 0x4] + bl sub_81344E0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _0810675A + ldr r0, [r5] + adds r0, 0x4A + ldrb r0, [r0] + ldr r1, _081067B0 @ =gUnknown_8443D00 + movs r4, 0x58 + str r4, [sp] + movs r3, 0x10 + str r3, [sp, 0x4] + movs r2, 0x4 + str r2, [sp, 0x8] + movs r2, 0x1C + str r2, [sp, 0xC] + str r4, [sp, 0x10] + str r3, [sp, 0x14] + movs r2, 0 + movs r3, 0 + bl sub_80041F0 + ldr r4, _081067B4 @ =gUnknown_8415FF2 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + ldr r1, [r5] + adds r1, 0x4A + ldrb r1, [r1] + movs r3, 0x60 + subs r3, r0 + lsrs r0, r3, 31 + adds r3, r0 + asrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x1D + str r0, [sp] + str r6, [sp, 0x4] + adds r0, r1, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_81047C8 +_0810675A: + ldr r0, [r5] + adds r0, 0x4A + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + ldr r2, _081067B8 @ =gUnknown_8415FAD + movs r0, 0x2 + str r0, [sp] + movs r0, 0x4 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r3, 0x8 + bl sub_81047C8 + ldr r0, _081067BC @ =gUnknown_8415FCF + bl sub_8104C2C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081067A8: .4byte 0x000007d1 +_081067AC: .4byte gUnknown_203ACF0 +_081067B0: .4byte gUnknown_8443D00 +_081067B4: .4byte gUnknown_8415FF2 +_081067B8: .4byte gUnknown_8415FAD +_081067BC: .4byte gUnknown_8415FCF + thumb_func_end sub_810603C + + thumb_func_start sub_81067C0 +sub_81067C0: @ 81067C0 + push {r4,r5,lr} + ldr r4, _0810680C @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrb r0, [r0, 0x4] + bl sub_81343F4 + movs r5, 0 +_081067CE: + adds r1, r5, 0 + adds r1, 0x4A + ldr r0, [r4] + adds r0, r1 + bl sub_81047B0 + adds r5, 0x1 + cmp r5, 0xC + ble _081067CE + ldr r4, _0810680C @ =gUnknown_203ACF0 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x59 + ldrb r0, [r1] + cmp r0, 0xFF + beq _081067F2 + bl sub_810C2E8 +_081067F2: + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x58 + ldrb r0, [r1] + cmp r0, 0xFF + beq _08106802 + bl sub_810C214 +_08106802: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0810680C: .4byte gUnknown_203ACF0 + thumb_func_end sub_81067C0 + + thumb_func_start sub_8106810 +sub_8106810: @ 8106810 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_806E25C + cmp r0, 0x1 + beq _08106830 + adds r0, r4, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x97 + bls _08106830 + movs r0, 0 + b _08106832 +_08106830: + movs r0, 0x1 +_08106832: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8106810 + + thumb_func_start sub_8106838 +sub_8106838: @ 8106838 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r1, _08106888 @ =gUnknown_8452C4C + lsrs r0, 21 + adds r0, r1 + ldr r2, [r0] + lsls r1, r6, 3 + adds r1, r2 + ldrb r1, [r1, 0x4] + mov r8, r1 + movs r5, 0 + adds r7, r0, 0 +_08106858: + cmp r5, r8 + bge _0810688C + ldr r1, [r7] + lsls r0, r6, 3 + adds r0, r1 + ldr r1, [r0] + lsls r0, r5, 1 + adds r0, r1 + ldrh r4, [r0] + adds r0, r4, 0 + bl sub_8106810 + cmp r0, 0x1 + bne _0810688C + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _0810688C + movs r0, 0x1 + b _08106894 + .align 2, 0 +_08106888: .4byte gUnknown_8452C4C +_0810688C: + adds r5, 0x1 + cmp r5, 0x3 + ble _08106858 + movs r0, 0 +_08106894: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8106838 + + thumb_func_start sub_81068A0 +sub_81068A0: @ 81068A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _081068C8 @ =gUnknown_8452C4C + lsls r0, r6, 3 + adds r0, r1 + ldrb r5, [r0, 0x4] + movs r4, 0 + cmp r4, r5 + bge _081068D2 +_081068B4: + lsls r1, r4, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8106838 + lsls r0, 24 + cmp r0, 0 + beq _081068CC + movs r0, 0x1 + b _081068D4 + .align 2, 0 +_081068C8: .4byte gUnknown_8452C4C +_081068CC: + adds r4, 0x1 + cmp r4, r5 + blt _081068B4 +_081068D2: + movs r0, 0 +_081068D4: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81068A0 + + thumb_func_start sub_81068DC +sub_81068DC: @ 81068DC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r1, _08106990 @ =gUnknown_8452C4C + lsls r0, r4, 3 + adds r0, r1 + ldr r1, [r0] + lsls r0, r6, 3 + adds r0, r1 + ldrb r0, [r0, 0x4] + mov r9, r0 + ldr r2, _08106994 @ =gUnknown_203ACF0 + ldr r0, [r2] + adds r0, 0x2C + movs r1, 0 + strb r1, [r0] + movs r5, 0 + ldr r0, _08106998 @ =0x0000ffff + adds r3, r0, 0 +_0810690C: + ldr r0, [r2] + lsls r1, r5, 1 + adds r0, 0x18 + adds r0, r1 + ldrh r1, [r0] + orrs r1, r3 + strh r1, [r0] + adds r5, 0x1 + cmp r5, 0x3 + ble _0810690C + movs r5, 0 + cmp r5, r9 + bge _08106982 + ldr r1, _08106990 @ =gUnknown_8452C4C + lsls r0, r4, 3 + adds r0, r1 + mov r8, r0 + lsls r7, r6, 3 +_08106930: + mov r1, r8 + ldr r0, [r1] + adds r0, r7, r0 + ldr r0, [r0] + lsls r6, r5, 1 + adds r0, r6, r0 + ldrh r4, [r0] + adds r0, r4, 0 + bl sub_8106810 + cmp r0, 0x1 + bne _0810697C + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + cmp r0, 0 + beq _0810697C + ldr r0, _08106994 @ =gUnknown_203ACF0 + ldr r1, [r0] + adds r2, r1, 0 + adds r2, 0x2C + ldrb r0, [r2] + lsls r0, 1 + adds r1, 0x18 + adds r1, r0 + mov r3, r8 + ldr r0, [r3] + adds r0, r7, r0 + ldr r0, [r0] + adds r0, r6, r0 + ldrh r0, [r0] + strh r0, [r1] + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] +_0810697C: + adds r5, 0x1 + cmp r5, r9 + blt _08106930 +_08106982: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08106990: .4byte gUnknown_8452C4C +_08106994: .4byte gUnknown_203ACF0 +_08106998: .4byte 0x0000ffff + thumb_func_end sub_81068DC + + thumb_func_start sub_810699C +sub_810699C: @ 810699C + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _081069F8 @ =gUnknown_8452C4C + lsls r0, r7, 3 + adds r0, r1 + ldrb r6, [r0, 0x4] + movs r2, 0xFF + movs r3, 0xFF + movs r5, 0 + cmp r5, r6 + bge _081069DE +_081069B6: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + adds r1, r4, 0 + str r2, [sp] + str r3, [sp, 0x4] + bl sub_8106838 + lsls r0, 24 + ldr r2, [sp] + ldr r3, [sp, 0x4] + cmp r0, 0 + beq _081069D8 + cmp r2, 0xFF + bne _081069D6 + adds r2, r4, 0 +_081069D6: + adds r3, r4, 0 +_081069D8: + adds r5, 0x1 + cmp r5, r6 + blt _081069B6 +_081069DE: + cmp r3, 0xFF + bne _08106A00 + ldr r2, _081069FC @ =gUnknown_203ACF0 + ldr r0, [r2] + adds r0, 0x29 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x2A + strb r1, [r0] + movs r0, 0x1 + b _08106A12 + .align 2, 0 +_081069F8: .4byte gUnknown_8452C4C +_081069FC: .4byte gUnknown_203ACF0 +_08106A00: + ldr r1, _08106A1C @ =gUnknown_203ACF0 + ldr r0, [r1] + adds r0, 0x29 + strb r2, [r0] + ldr r0, [r1] + adds r1, r3, 0x1 + adds r0, 0x2A + strb r1, [r0] + movs r0, 0 +_08106A12: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08106A1C: .4byte gUnknown_203ACF0 + thumb_func_end sub_810699C + + thumb_func_start sub_8106A20 +sub_8106A20: @ 8106A20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r1, _08106A98 @ =gUnknown_8452C4C + str r1, [sp, 0x10] +_08106A3A: + ldr r2, [sp, 0x10] + ldrb r2, [r2, 0x4] + str r2, [sp, 0x8] + movs r7, 0 + cmp r7, r2 + bge _08106AD6 + ldr r0, [sp, 0x10] + str r0, [sp, 0xC] + movs r1, 0 + mov r9, r1 +_08106A4E: + ldr r2, [sp, 0xC] + ldr r0, [r2] + add r0, r9 + ldrb r6, [r0, 0x4] + movs r5, 0 + mov r8, r5 + cmp r5, r6 + bge _08106ACA + ldr r0, [sp, 0x10] + mov r10, r0 + ldr r3, _08106A9C @ =gUnknown_203ACF0 +_08106A64: + mov r1, r10 + ldr r0, [r1] + add r0, r9 + ldr r1, [r0] + lsls r0, r5, 1 + adds r0, r1 + ldrh r0, [r0] + adds r4, r0, 0 + ldr r2, [sp] + cmp r2, r4 + bne _08106AA0 + ldr r0, [r3] + adds r0, 0x28 + mov r1, sp + ldrb r1, [r1, 0x4] + strb r1, [r0] + ldr r0, [r3] + adds r0, 0x2B + strb r7, [r0] + ldr r0, [r3] + adds r0, 0x2D + mov r2, r8 + strb r2, [r0] + movs r0, 0 + b _08106AE8 + .align 2, 0 +_08106A98: .4byte gUnknown_8452C4C +_08106A9C: .4byte gUnknown_203ACF0 +_08106AA0: + adds r0, r4, 0 + str r3, [sp, 0x14] + bl sub_8106810 + ldr r3, [sp, 0x14] + cmp r0, 0x1 + bne _08106AC4 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + bl sub_8104AB0 + lsls r0, 24 + ldr r3, [sp, 0x14] + cmp r0, 0 + beq _08106AC4 + movs r0, 0x1 + add r8, r0 +_08106AC4: + adds r5, 0x1 + cmp r5, r6 + blt _08106A64 +_08106ACA: + movs r1, 0x8 + add r9, r1 + adds r7, 0x1 + ldr r2, [sp, 0x8] + cmp r7, r2 + blt _08106A4E +_08106AD6: + ldr r0, [sp, 0x10] + adds r0, 0x8 + str r0, [sp, 0x10] + ldr r1, [sp, 0x4] + adds r1, 0x1 + str r1, [sp, 0x4] + cmp r1, 0x8 + bls _08106A3A + movs r0, 0x1 +_08106AE8: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8106A20 + + thumb_func_start sub_8106AF8 +sub_8106AF8: @ 8106AF8 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + movs r4, 0 + movs r6, 0 + cmp r6, r5 + bge _08106B24 +_08106B06: + ldr r0, _08106B30 @ =gUnknown_203ACF0 + ldr r0, [r0] + adds r0, 0x28 + ldrb r0, [r0] + lsls r1, r4, 24 + lsrs r1, 24 + bl sub_8106838 + lsls r0, 24 + cmp r0, 0 + beq _08106B1E + adds r6, 0x1 +_08106B1E: + adds r4, 0x1 + cmp r4, r5 + blt _08106B06 +_08106B24: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08106B30: .4byte gUnknown_203ACF0 + thumb_func_end sub_8106AF8 + + thumb_func_start sub_8106B34 +sub_8106B34: @ 8106B34 + push {lr} + ldr r0, _08106B58 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08106B54 + ldr r0, _08106B5C @ =gUnknown_203ACF0 + ldr r0, [r0] + adds r0, 0x5A + ldrh r0, [r0] + movs r1, 0 + movs r2, 0x7D + movs r3, 0xA + bl sub_8071E3C +_08106B54: + pop {r0} + bx r0 + .align 2, 0 +_08106B58: .4byte gUnknown_30030F0 +_08106B5C: .4byte gUnknown_203ACF0 + thumb_func_end sub_8106B34 + + thumb_func_start sub_8106B60 +sub_8106B60: @ 8106B60 + push {r4,r5,lr} + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0x1 + bl sub_8104AB0 + adds r0, r5, 0 + movs r1, 0x3 + movs r2, 0x1 + bl sub_8104AB0 + bl sub_806E25C + cmp r0, 0 + bne _08106BA4 + adds r0, r5, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x97 + bls _08106BA4 + ldr r0, _08106BA0 @ =sub_8106BD8 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + b _08106BC6 + .align 2, 0 +_08106BA0: .4byte sub_8106BD8 +_08106BA4: + bl sub_810250C + ldr r2, _08106BCC @ =gUnknown_3005090 + ldr r4, _08106BD0 @ =gUnknown_203ACF0 + ldr r0, [r4] + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _08106BD4 @ =sub_8106BE8 + str r1, [r0] + adds r0, r5, 0 + bl sub_8106A20 + ldr r0, [r4] + ldrb r0, [r0] +_08106BC6: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08106BCC: .4byte gUnknown_3005090 +_08106BD0: .4byte gUnknown_203ACF0 +_08106BD4: .4byte sub_8106BE8 + thumb_func_end sub_8106B60 + + thumb_func_start sub_8106BD8 +sub_8106BD8: @ 8106BD8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + pop {r0} + bx r0 + thumb_func_end sub_8106BD8 + + thumb_func_start sub_8106BE8 +sub_8106BE8: @ 8106BE8 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08106C08 @ =gUnknown_203ACF0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + adds r4, r1, 0 + cmp r0, 0xB + bls _08106BFE + b _08106E6A +_08106BFE: + lsls r0, 2 + ldr r1, _08106C0C @ =_08106C10 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08106C08: .4byte gUnknown_203ACF0 +_08106C0C: .4byte _08106C10 + .align 2, 0 +_08106C10: + .4byte _08106C40 + .4byte _08106C62 + .4byte _08106C84 + .4byte _08106C98 + .4byte _08106CD4 + .4byte _08106D1C + .4byte _08106D4C + .4byte _08106D9E + .4byte _08106DBA + .4byte _08106DCC + .4byte _08106DDE + .4byte _08106E58 +_08106C40: + ldr r0, [r4] + adds r0, 0x28 + ldrb r0, [r0] + bl sub_810699C + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0x2B + adds r0, 0x29 + ldrb r1, [r0] + ldrb r0, [r2] + cmp r0, r1 + bcs _08106C5C + strb r1, [r2] +_08106C5C: + ldr r1, [r4] + movs r0, 0x3 + b _08106E68 +_08106C62: + bl sub_8106014 + bl sub_8104E90 + ldr r0, _08106C7C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, _08106C80 @ =gUnknown_203ACF0 + ldr r1, [r0] + b _08106E66 + .align 2, 0 +_08106C7C: .4byte gUnknown_30030F0 +_08106C80: .4byte gUnknown_203ACF0 +_08106C84: + bl sub_8102798 + lsls r0, 24 + cmp r0, 0 + bne _08106C90 + b _08106E6A +_08106C90: + adds r0, r5, 0 + bl sub_8077508 + b _08106E6A +_08106C98: + movs r0, 0x1 + bl sub_8104F0C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + movs r0, 0xFF + bl sub_8105058 + ldr r0, _08106CD0 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x4 + b _08106E68 + .align 2, 0 +_08106CD0: .4byte gUnknown_203ACF0 +_08106CD4: + ldr r2, _08106D10 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r0, 0x1 + negs r0, r0 + ldr r1, _08106D14 @ =0x0000ffff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0 + bl sub_80019BC + ldr r0, _08106D18 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x5 + b _08106E68 + .align 2, 0 +_08106D10: .4byte gUnknown_2037AB8 +_08106D14: .4byte 0x0000ffff +_08106D18: .4byte gUnknown_203ACF0 +_08106D1C: + ldr r1, _08106D40 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1E + strh r1, [r0, 0x8] + ldr r0, _08106D44 @ =gUnknown_84524C4 + movs r1, 0 + bl sub_8133C90 + ldr r2, _08106D48 @ =gUnknown_203ACF0 + ldr r1, [r2] + adds r1, 0x61 + strb r0, [r1] + ldr r1, [r2] + movs r0, 0x6 + b _08106E68 + .align 2, 0 +_08106D40: .4byte gUnknown_3005090 +_08106D44: .4byte gUnknown_84524C4 +_08106D48: .4byte gUnknown_203ACF0 +_08106D4C: + ldr r0, [r4] + adds r0, 0x2D + ldrb r0, [r0] + bl sub_8105058 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x61 + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x2D + ldrb r1, [r1] + adds r2, 0x2C + ldrb r2, [r2] + bl sub_8105178 + ldr r1, _08106D88 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0x8] + movs r3, 0x8 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _08106D8C + subs r0, r2, 0x1 + strh r0, [r1, 0x8] + b _08106E6A + .align 2, 0 +_08106D88: .4byte gUnknown_3005090 +_08106D8C: + ldr r0, [r4] + adds r0, 0x61 + ldrb r0, [r0] + movs r1, 0 + bl sub_8133CD4 + ldr r1, [r4] + movs r0, 0x7 + b _08106E68 +_08106D9E: + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x2D + ldrb r1, [r0] + lsls r1, 1 + subs r0, 0x15 + adds r0, r1 + ldrh r0, [r0] + adds r1, r2, 0 + adds r1, 0x5A + strh r0, [r1] + movs r0, 0x8 + strb r0, [r2, 0x1] + b _08106E6A +_08106DBA: + movs r0, 0x1 + bl sub_8105E1C + ldr r0, _08106DC8 @ =gUnknown_203ACF0 + ldr r1, [r0] + movs r0, 0x9 + b _08106E68 + .align 2, 0 +_08106DC8: .4byte gUnknown_203ACF0 +_08106DCC: + ldr r0, [r4] + movs r1, 0 + strb r1, [r0, 0x2] + ldr r0, [r4] + strb r1, [r0, 0x3] + ldr r1, [r4] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] +_08106DDE: + ldr r1, [r4] + ldrb r0, [r1, 0x3] + cmp r0, 0x5 + bhi _08106E10 + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _08106E0A + ldrb r1, [r1, 0x3] + movs r0, 0 + bl sub_8105594 + movs r0, 0 + bl sub_80020BC + ldr r1, [r4] + movs r0, 0x4 + strb r0, [r1, 0x2] + ldr r1, [r4] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + b _08106E6A +_08106E0A: + subs r0, 0x1 + strb r0, [r1, 0x2] + b _08106E6A +_08106E10: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r0, [r4] + adds r0, 0x5A + ldrh r0, [r0] + movs r1, 0 + movs r2, 0x7D + movs r3, 0xA + bl sub_8071E3C + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x2] + ldr r1, [r4] + movs r0, 0xB + b _08106E68 +_08106E58: + ldr r0, _08106E74 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08106E6A + ldr r1, [r4] +_08106E66: + movs r0, 0x2 +_08106E68: + strb r0, [r1, 0x1] +_08106E6A: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08106E74: .4byte gUnknown_30030F0 + thumb_func_end sub_8106BE8 + + thumb_func_start sub_8106E78 +sub_8106E78: @ 8106E78 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + cmp r1, 0x1 + beq _08106E8E + cmp r1, 0x1 + bgt _08106EA0 + cmp r1, 0 + bne _08106EA0 + movs r1, 0x8 + b _08106EAE +_08106E8E: + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0xF0 + subs r1, r0 + lsrs r1, 1 + b _08106EAE +_08106EA0: + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0xE8 + subs r1, r0 +_08106EAE: + lsls r3, r1, 24 + lsrs r3, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x4 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_81047C8 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8106E78 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s new file mode 100644 index 000000000..406627af4 --- /dev/null +++ b/asm/pokemon_1.s @@ -0,0 +1,2431 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_803D97C +sub_803D97C: @ 803D97C + push {lr} + adds r2, r0, 0 + movs r1, 0 + movs r3, 0 +_0803D984: + adds r0, r2, r1 + strb r3, [r0] + adds r1, 0x1 + cmp r1, 0x4F + bls _0803D984 + pop {r0} + bx r0 + thumb_func_end sub_803D97C + + thumb_func_start sub_803D994 +sub_803D994: @ 803D994 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + bl sub_803D97C + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x38 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3B + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + mov r2, sp + bl sub_804037C + movs r0, 0xFF + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x40 + mov r2, sp + bl sub_804037C + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_803D994 + + thumb_func_start sub_803DA14 +sub_803DA14: @ 803DA14 + push {r4,r5,lr} + ldr r4, _0803DA30 @ =gUnknown_2024284 + movs r0, 0xFA + lsls r0, 1 + adds r5, r4, r0 +_0803DA1E: + adds r0, r4, 0 + bl sub_803D994 + adds r4, 0x64 + cmp r4, r5 + ble _0803DA1E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803DA30: .4byte gUnknown_2024284 + thumb_func_end sub_803DA14 + + thumb_func_start sub_803DA34 +sub_803DA34: @ 803DA34 + push {r4,r5,lr} + ldr r4, _0803DA50 @ =gUnknown_202402C + movs r0, 0xFA + lsls r0, 1 + adds r5, r4, r0 +_0803DA3E: + adds r0, r4, 0 + bl sub_803D994 + adds r4, 0x64 + cmp r4, r5 + ble _0803DA3E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803DA50: .4byte gUnknown_202402C + thumb_func_end sub_803DA34 + + thumb_func_start sub_803DA54 +sub_803DA54: @ 803DA54 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x1C + mov r8, r0 + adds r6, r1, 0 + ldr r4, [sp, 0x34] + ldr r7, [sp, 0x38] + ldr r5, [sp, 0x3C] + lsls r6, 16 + lsrs r6, 16 + add r0, sp, 0x10 + strb r2, [r0] + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r0, r8 + str r3, [sp, 0x18] + bl sub_803D994 + str r4, [sp] + str r7, [sp, 0x4] + str r5, [sp, 0x8] + ldr r0, [sp, 0x40] + str r0, [sp, 0xC] + mov r0, r8 + adds r1, r6, 0 + add r2, sp, 0x10 + ldrb r2, [r2] + ldr r3, [sp, 0x18] + bl sub_803DAC4 + mov r0, r8 + movs r1, 0x38 + add r2, sp, 0x10 + bl sub_804037C + movs r0, 0xFF + str r0, [sp, 0x14] + add r2, sp, 0x14 + mov r0, r8 + movs r1, 0x40 + bl sub_804037C + mov r0, r8 + bl sub_803E47C + add sp, 0x1C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803DA54 + + thumb_func_start sub_803DAC4 +sub_803DAC4: @ 803DAC4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r7, r0, 0 + ldr r4, [sp, 0x40] + ldr r0, [sp, 0x48] + movs r5, 0xE + add r5, sp + strh r1, [r5] + add r6, sp, 0x10 + strb r2, [r6] + mov r5, sp + adds r5, 0x11 + strb r3, [r5] + lsls r4, 24 + lsrs r4, 24 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + adds r0, r7, 0 + bl sub_803D97C + cmp r4, 0 + beq _0803DB00 + ldr r0, [sp, 0x44] + str r0, [sp, 0x14] + b _0803DB14 +_0803DB00: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + orrs r4, r0 + str r4, [sp, 0x14] +_0803DB14: + add r2, sp, 0x14 + adds r0, r7, 0 + movs r1, 0 + bl sub_80404D0 + add r0, sp, 0x18 + mov r9, r0 + add r5, sp, 0xC + mov r1, r10 + cmp r1, 0x2 + bne _0803DB6C + ldr r2, _0803DB64 @ =0xffff0000 + mov r8, r2 + ldr r6, _0803DB68 @ =0x0000ffff +_0803DB30: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + orrs r4, r0 + str r4, [sp, 0x18] + adds r1, r4, 0 + mov r3, r8 + ands r1, r3 + lsrs r1, 16 + ands r4, r6 + eors r1, r4 + ldr r2, [sp, 0x14] + adds r0, r2, 0 + ands r0, r3 + lsrs r0, 16 + eors r1, r0 + ands r2, r6 + eors r1, r2 + cmp r1, 0x7 + bls _0803DB30 + b _0803DB92 + .align 2, 0 +_0803DB64: .4byte 0xffff0000 +_0803DB68: .4byte 0x0000ffff +_0803DB6C: + mov r0, r10 + cmp r0, 0x1 + bne _0803DB78 + ldr r0, [sp, 0x4C] + str r0, [sp, 0x18] + b _0803DB92 +_0803DB78: + ldr r0, _0803DCBC @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0xA] + ldrb r0, [r2, 0xB] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0xC] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0xD] + lsls r0, 24 + orrs r1, r0 + str r1, [sp, 0x18] +_0803DB92: + adds r0, r7, 0 + movs r1, 0x1 + mov r2, r9 + bl sub_80404D0 + adds r0, r7, 0 + bl sub_803E3E8 + strh r0, [r5] + adds r0, r7, 0 + movs r1, 0x9 + adds r2, r5, 0 + bl sub_80404D0 + adds r0, r7, 0 + bl sub_803F8F8 + mov r0, sp + ldrh r1, [r0, 0xE] + bl sub_8040FD0 + adds r0, r7, 0 + movs r1, 0x2 + mov r2, sp + bl sub_80404D0 + ldr r2, _0803DCC0 @ =gUnknown_81E9F11 + adds r0, r7, 0 + movs r1, 0x3 + bl sub_80404D0 + ldr r5, _0803DCBC @ =gUnknown_300500C + ldr r2, [r5] + adds r0, r7, 0 + movs r1, 0x7 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0xB + mov r2, sp + adds r2, 0xE + bl sub_80404D0 + ldr r4, _0803DCC4 @ =gUnknown_8254784 + mov r2, sp + ldrh r1, [r2, 0xE] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + adds r2, r1, 0 + muls r2, r0 + mov r3, sp + ldrb r0, [r3, 0x10] + lsls r0, 2 + ldr r1, _0803DCC8 @ =gUnknown_8253AE4 + adds r0, r1 + adds r2, r0 + adds r0, r7, 0 + movs r1, 0x19 + bl sub_80404D0 + mov r1, sp + ldrh r0, [r1, 0xE] + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + adds r4, 0x12 + adds r2, r4 + adds r0, r7, 0 + movs r1, 0x20 + bl sub_80404D0 + bl sub_8056260 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x18] + adds r0, r7, 0 + movs r1, 0x23 + mov r2, r9 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0x24 + add r2, sp, 0x10 + bl sub_80404D0 + ldr r2, _0803DCCC @ =gUnknown_81E9F10 + adds r0, r7, 0 + movs r1, 0x25 + bl sub_80404D0 + movs r0, 0x4 + str r0, [sp, 0x18] + adds r0, r7, 0 + movs r1, 0x26 + mov r2, r9 + bl sub_80404D0 + ldr r2, [r5] + adds r2, 0x8 + adds r0, r7, 0 + movs r1, 0x31 + bl sub_80404D0 + mov r2, sp + ldrb r0, [r2, 0x11] + cmp r0, 0x1F + bhi _0803DCD0 + adds r0, r7, 0 + movs r1, 0x27 + adds r2, 0x11 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0x28 + mov r2, sp + adds r2, 0x11 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0x29 + mov r2, sp + adds r2, 0x11 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0x2A + mov r2, sp + adds r2, 0x11 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0x2B + mov r2, sp + adds r2, 0x11 + bl sub_80404D0 + adds r0, r7, 0 + movs r1, 0x2C + mov r2, sp + adds r2, 0x11 + bl sub_80404D0 + b _0803DD58 + .align 2, 0 +_0803DCBC: .4byte gUnknown_300500C +_0803DCC0: .4byte gUnknown_81E9F11 +_0803DCC4: .4byte gUnknown_8254784 +_0803DCC8: .4byte gUnknown_8253AE4 +_0803DCCC: .4byte gUnknown_81E9F10 +_0803DCD0: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] + movs r3, 0x1F + mov r8, r3 + ands r0, r3 + str r0, [sp, 0x1C] + add r4, sp, 0x1C + adds r0, r7, 0 + movs r1, 0x27 + adds r2, r4, 0 + bl sub_80404D0 + ldr r0, [sp, 0x18] + movs r6, 0xF8 + lsls r6, 2 + ands r0, r6 + lsrs r0, 5 + str r0, [sp, 0x1C] + adds r0, r7, 0 + movs r1, 0x28 + adds r2, r4, 0 + bl sub_80404D0 + ldr r0, [sp, 0x18] + movs r5, 0xF8 + lsls r5, 7 + ands r0, r5 + lsrs r0, 10 + str r0, [sp, 0x1C] + adds r0, r7, 0 + movs r1, 0x29 + adds r2, r4, 0 + bl sub_80404D0 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] + mov r1, r8 + ands r0, r1 + str r0, [sp, 0x1C] + adds r0, r7, 0 + movs r1, 0x2A + adds r2, r4, 0 + bl sub_80404D0 + ldr r0, [sp, 0x18] + ands r0, r6 + lsrs r0, 5 + str r0, [sp, 0x1C] + adds r0, r7, 0 + movs r1, 0x2B + adds r2, r4, 0 + bl sub_80404D0 + ldr r0, [sp, 0x18] + ands r0, r5 + lsrs r0, 10 + str r0, [sp, 0x1C] + adds r0, r7, 0 + movs r1, 0x2C + adds r2, r4, 0 + bl sub_80404D0 +_0803DD58: + ldr r2, _0803DD94 @ =gUnknown_8254784 + mov r3, sp + ldrh r1, [r3, 0xE] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x17] + cmp r0, 0 + beq _0803DD7E + ldr r0, [sp, 0x14] + movs r1, 0x1 + ands r0, r1 + str r0, [sp, 0x18] + adds r0, r7, 0 + movs r1, 0x2E + mov r2, r9 + bl sub_80404D0 +_0803DD7E: + adds r0, r7, 0 + bl sub_803E9E0 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803DD94: .4byte gUnknown_8254784 + thumb_func_end sub_803DAC4 + + thumb_func_start sub_803DD98 +sub_803DD98: @ 803DD98 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + mov r9, r0 + ldr r0, [sp, 0x2C] + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r0, 24 + lsrs r5, r0, 24 +_0803DDB8: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + orrs r4, r0 + adds r0, r4, 0 + bl sub_8042EB4 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bne _0803DDB8 + movs r0, 0x1 + str r0, [sp] + str r4, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + mov r0, r9 + mov r1, r8 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_803DA54 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803DD98 + + thumb_func_start sub_803DE00 +sub_803DE00: @ 803DE00 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + str r0, [sp, 0x10] + ldr r4, [sp, 0x38] + ldr r5, [sp, 0x3C] + ldr r0, [sp, 0x40] + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x14] + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + lsls r5, 24 + lsrs r6, r5, 24 + lsls r0, 24 + lsrs r1, r0, 24 + mov r9, r1 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1B + bhi _0803DEA6 +_0803DE40: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + orrs r4, r0 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r4 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r4 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r4 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r4 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + bl sub_8042EB4 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _0803DE40 + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r8, r0 + bne _0803DE40 + mov r0, r9 + subs r0, 0x1 + cmp r5, r0 + bne _0803DE40 + b _0803DED6 +_0803DEA6: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + orrs r4, r0 + adds r0, r4, 0 + bl sub_8042EB4 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _0803DEA6 + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + cmp r8, r0 + bne _0803DEA6 +_0803DED6: + movs r0, 0x1 + str r0, [sp] + str r4, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + ldr r0, [sp, 0x10] + adds r1, r7, 0 + ldr r2, [sp, 0x14] + mov r3, r10 + bl sub_803DA54 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803DE00 + + thumb_func_start sub_803DF00 +sub_803DF00: @ 803DF00 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + mov r8, r0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r7, r2, 24 +_0803DF12: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r5, r4, 16 + lsls r0, 16 + orrs r5, r0 + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + orrs r4, r0 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_803F78C + lsls r0, 24 + cmp r0, 0 + bne _0803DF12 + movs r0, 0x1 + str r0, [sp] + str r4, [sp, 0x4] + str r0, [sp, 0x8] + str r5, [sp, 0xC] + mov r0, r8 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x20 + bl sub_803DA54 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803DF00 + + thumb_func_start sub_803DF68 +sub_803DF68: @ 803DF68 + push {r4,lr} + sub sp, 0x14 + adds r4, r0, 0 + str r3, [sp, 0x10] + ldr r3, [sp, 0x1C] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x1 + str r0, [sp] + str r3, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r4, 0 + movs r3, 0 + bl sub_803DA54 + adds r0, r4, 0 + movs r1, 0x42 + add r2, sp, 0x10 + bl sub_804037C + adds r0, r4, 0 + bl sub_803E47C + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_803DF68 + + thumb_func_start sub_803DFA8 +sub_803DFA8: @ 803DFA8 + push {r4,r5,lr} + sub sp, 0x10 + adds r5, r0, 0 + adds r4, r3, 0 + ldr r3, [sp, 0x1C] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + str r3, [sp, 0xC] + adds r0, r5, 0 + movs r3, 0 + bl sub_803DA54 + adds r0, r5, 0 + movs r1, 0x27 + adds r2, r4, 0 + bl sub_804037C + adds r2, r4, 0x1 + adds r0, r5, 0 + movs r1, 0x28 + bl sub_804037C + adds r2, r4, 0x2 + adds r0, r5, 0 + movs r1, 0x29 + bl sub_804037C + adds r2, r4, 0x3 + adds r0, r5, 0 + movs r1, 0x2A + bl sub_804037C + adds r2, r4, 0x4 + adds r0, r5, 0 + movs r1, 0x2B + bl sub_804037C + adds r4, 0x5 + adds r0, r5, 0 + movs r1, 0x2C + adds r2, r4, 0 + bl sub_804037C + adds r0, r5, 0 + bl sub_803E47C + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_803DFA8 + + thumb_func_start sub_803E01C +sub_803E01C: @ 803E01C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r7, r0, 0 + ldr r0, [sp, 0x2C] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r6, 0 + str r6, [sp] + str r6, [sp, 0x4] + str r6, [sp, 0x8] + str r6, [sp, 0xC] + adds r0, r7, 0 + bl sub_803DA54 + mov r4, r8 + movs r1, 0x1 + movs r5, 0x5 +_0803E050: + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0803E05A + adds r6, 0x1 +_0803E05A: + lsrs r4, 1 + subs r5, 0x1 + cmp r5, 0 + bge _0803E050 + movs r0, 0xFF + lsls r0, 1 + adds r1, r6, 0 + bl __divsi3 + add r1, sp, 0x10 + strh r0, [r1] + movs r4, 0x1 + movs r5, 0 +_0803E074: + mov r0, r8 + ands r0, r4 + cmp r0, 0 + beq _0803E088 + adds r1, r5, 0 + adds r1, 0x1A + adds r0, r7, 0 + add r2, sp, 0x10 + bl sub_804037C +_0803E088: + lsls r0, r4, 25 + lsrs r4, r0, 24 + adds r5, 0x1 + cmp r5, 0x5 + ble _0803E074 + adds r0, r7, 0 + bl sub_803E47C + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803E01C + + thumb_func_start sub_803E0A4 +sub_803E0A4: @ 803E0A4 + push {r4-r7,lr} + sub sp, 0x14 + adds r7, r0, 0 + adds r6, r1, 0 + ldrh r1, [r6] + ldrb r2, [r6, 0xC] + movs r3, 0x1 + str r3, [sp] + ldr r0, [r6, 0x1C] + str r0, [sp, 0x4] + str r3, [sp, 0x8] + ldr r0, [r6, 0x14] + str r0, [sp, 0xC] + adds r0, r7, 0 + movs r3, 0 + bl sub_803DA54 + movs r5, 0 + adds r4, r6, 0x4 +_0803E0CA: + ldrh r1, [r4] + lsls r2, r5, 24 + lsrs r2, 24 + adds r0, r7, 0 + bl sub_803E964 + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _0803E0CA + adds r2, r6, 0 + adds r2, 0xD + adds r0, r7, 0 + movs r1, 0x15 + bl sub_804037C + adds r2, r6, 0x2 + adds r0, r7, 0 + movs r1, 0xC + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x20 + adds r0, r7, 0 + movs r1, 0x2 + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x2B + adds r0, r7, 0 + movs r1, 0x20 + bl sub_804037C + adds r2, r6, 0 + adds r2, 0xE + adds r0, r7, 0 + movs r1, 0x1A + bl sub_804037C + adds r2, r6, 0 + adds r2, 0xF + adds r0, r7, 0 + movs r1, 0x1B + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x10 + adds r0, r7, 0 + movs r1, 0x1C + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x11 + adds r0, r7, 0 + movs r1, 0x1D + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x12 + adds r0, r7, 0 + movs r1, 0x1E + bl sub_804037C + adds r2, r6, 0 + adds r2, 0x13 + adds r0, r7, 0 + movs r1, 0x1F + bl sub_804037C + ldrb r0, [r6, 0x1B] + lsrs r0, 7 + add r1, sp, 0x10 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x2E + add r2, sp, 0x10 + bl sub_804037C + add r1, sp, 0x10 + ldrb r0, [r6, 0x18] + lsls r0, 27 + lsrs r0, 27 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x27 + add r2, sp, 0x10 + bl sub_804037C + add r1, sp, 0x10 + ldrh r0, [r6, 0x18] + lsls r0, 22 + lsrs r0, 27 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x28 + add r2, sp, 0x10 + bl sub_804037C + add r1, sp, 0x10 + ldrb r0, [r6, 0x19] + lsls r0, 25 + lsrs r0, 27 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x29 + add r2, sp, 0x10 + bl sub_804037C + add r1, sp, 0x10 + ldr r0, [r6, 0x18] + lsls r0, 12 + lsrs r0, 27 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x2A + add r2, sp, 0x10 + bl sub_804037C + add r1, sp, 0x10 + ldrh r0, [r6, 0x1A] + lsls r0, 23 + lsrs r0, 27 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x2B + add r2, sp, 0x10 + bl sub_804037C + add r1, sp, 0x10 + ldrb r0, [r6, 0x1B] + lsls r0, 26 + lsrs r0, 27 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x2C + add r2, sp, 0x10 + bl sub_804037C + adds r0, r7, 0 + bl sub_803E47C + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803E0A4 + + thumb_func_start sub_803E1EC +sub_803E1EC: @ 803E1EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + mov r8, r0 + ldr r4, [sp, 0x2C] + ldr r6, [sp, 0x30] + ldr r5, [sp, 0x34] + ldr r7, [sp, 0x38] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x1 + str r0, [sp, 0x10] + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + str r7, [sp, 0xC] + mov r0, r8 + bl sub_803DA54 + mov r0, r8 + movs r1, 0x50 + add r2, sp, 0x10 + bl sub_804037C + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803E1EC + + thumb_func_start sub_803E23C +sub_803E23C: @ 803E23C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + adds r6, r1, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + strh r0, [r6] + adds r0, r7, 0 + movs r1, 0xC + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _0803E266 + movs r0, 0 +_0803E266: + strh r0, [r6, 0x2] + movs r5, 0 + movs r0, 0x2B + adds r0, r6 + mov r8, r0 + movs r1, 0x20 + adds r1, r6 + mov r9, r1 + adds r4, r6, 0x4 +_0803E278: + adds r1, r5, 0 + adds r1, 0xD + adds r0, r7, 0 + movs r2, 0 + bl sub_803FBE8 + strh r0, [r4] + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _0803E278 + adds r0, r7, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0xC] + adds r0, r7, 0 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0xD] + adds r0, r7, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + str r0, [r6, 0x14] + adds r0, r7, 0 + movs r1, 0x1A + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0xE] + adds r0, r7, 0 + movs r1, 0x1B + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0xF] + adds r0, r7, 0 + movs r1, 0x1C + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0x10] + adds r0, r7, 0 + movs r1, 0x1D + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0x11] + adds r0, r7, 0 + movs r1, 0x1E + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0x12] + adds r0, r7, 0 + movs r1, 0x1F + movs r2, 0 + bl sub_803FBE8 + strb r0, [r6, 0x13] + adds r0, r7, 0 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + mov r1, r8 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x27 + movs r2, 0 + bl sub_803FBE8 + movs r4, 0x1F + ands r0, r4 + ldrb r2, [r6, 0x18] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, 0x18] + adds r0, r7, 0 + movs r1, 0x28 + movs r2, 0 + bl sub_803FBE8 + movs r5, 0x1F + ands r0, r5 + lsls r0, 5 + ldrh r2, [r6, 0x18] + ldr r1, _0803E3DC @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r6, 0x18] + adds r0, r7, 0 + movs r1, 0x29 + movs r2, 0 + bl sub_803FBE8 + ands r0, r4 + lsls r0, 2 + ldrb r2, [r6, 0x19] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, 0x19] + adds r0, r7, 0 + movs r1, 0x2A + movs r2, 0 + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [r6, 0x18] + ldr r2, _0803E3E0 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [r6, 0x18] + adds r0, r7, 0 + movs r1, 0x2B + movs r2, 0 + bl sub_803FBE8 + ands r0, r5 + lsls r0, 4 + ldrh r2, [r6, 0x1A] + ldr r1, _0803E3E4 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r6, 0x1A] + adds r0, r7, 0 + movs r1, 0x2C + movs r2, 0 + bl sub_803FBE8 + ands r0, r4 + lsls r0, 1 + ldrb r2, [r6, 0x1B] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, 0x1B] + adds r0, r7, 0 + movs r1, 0x2E + movs r2, 0 + bl sub_803FBE8 + lsls r0, 7 + ldrb r2, [r6, 0x1B] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r6, 0x1B] + adds r0, r7, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + str r0, [r6, 0x1C] + adds r0, r7, 0 + movs r1, 0x2 + mov r2, r9 + bl sub_803FBE8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803E3DC: .4byte 0xfffffc1f +_0803E3E0: .4byte 0xfff07fff +_0803E3E4: .4byte 0xfffffe0f + thumb_func_end sub_803E23C + + thumb_func_start sub_803E3E8 +sub_803E3E8: @ 803E3E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + movs r6, 0 + ldr r1, [r4] + movs r2, 0 + bl sub_803F940 + adds r5, r0, 0 + ldr r1, [r4] + adds r0, r4, 0 + movs r2, 0x1 + bl sub_803F940 + adds r7, r0, 0 + ldr r1, [r4] + adds r0, r4, 0 + movs r2, 0x2 + bl sub_803F940 + mov r8, r0 + ldr r1, [r4] + adds r0, r4, 0 + movs r2, 0x3 + bl sub_803F940 + adds r3, r0, 0 + movs r1, 0x5 +_0803E422: + ldrh r0, [r5] + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r5, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0803E422 + adds r2, r7, 0 + movs r1, 0x5 +_0803E436: + ldrh r0, [r2] + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0803E436 + mov r2, r8 + movs r1, 0x5 +_0803E44A: + ldrh r0, [r2] + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0803E44A + adds r2, r3, 0 + movs r1, 0x5 +_0803E45E: + ldrh r0, [r2] + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0803E45E + adds r0, r6, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_803E3E8 + + thumb_func_start sub_803E47C +sub_803E47C: @ 803E47C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + adds r5, r0, 0 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + mov r8, r0 + adds r0, r5, 0 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x1C] + adds r0, r5, 0 + movs r1, 0x27 + movs r2, 0 + bl sub_803FBE8 + adds r6, r0, 0 + adds r0, r5, 0 + movs r1, 0x1A + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0x28 + movs r2, 0 + bl sub_803FBE8 + mov r10, r0 + adds r0, r5, 0 + movs r1, 0x1B + movs r2, 0 + bl sub_803FBE8 + mov r9, r0 + adds r0, r5, 0 + movs r1, 0x29 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x20] + adds r0, r5, 0 + movs r1, 0x1C + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x24] + adds r0, r5, 0 + movs r1, 0x2A + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x28] + adds r0, r5, 0 + movs r1, 0x1D + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x2C] + adds r0, r5, 0 + movs r1, 0x2B + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x30] + adds r0, r5, 0 + movs r1, 0x1E + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x34] + adds r0, r5, 0 + movs r1, 0x2C + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x38] + adds r0, r5, 0 + movs r1, 0x1F + movs r2, 0 + bl sub_803FBE8 + str r0, [sp, 0x3C] + adds r0, r5, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r5, 0 + bl sub_803E7C4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0x38 + mov r2, sp + bl sub_804037C + ldr r0, _0803E564 @ =0x0000012f + cmp r7, r0 + bne _0803E568 + movs r0, 0x1 + str r0, [sp, 0x4] + lsls r6, r7, 3 + b _0803E596 + .align 2, 0 +_0803E564: .4byte 0x0000012f +_0803E568: + ldr r1, _0803E734 @ =gUnknown_8254784 + lsls r2, r7, 3 + subs r0, r2, r7 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 1 + adds r1, r0, r6 + adds r0, r4, 0 + adds r6, r2, 0 + cmp r0, 0 + bge _0803E582 + adds r0, 0x3 +_0803E582: + asrs r0, 2 + adds r0, r1, r0 + ldr r4, [sp] + muls r0, r4 + movs r1, 0x64 + bl __divsi3 + adds r0, r4 + adds r0, 0xA + str r0, [sp, 0x4] +_0803E596: + ldr r1, _0803E738 @ =gUnknown_2023FC4 + add r2, sp, 0x4 + ldrb r0, [r2] + mov r3, r8 + subs r0, r3 + adds r1, 0x23 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _0803E5AE + movs r0, 0x1 + strb r0, [r1] +_0803E5AE: + adds r0, r5, 0 + movs r1, 0x3A + bl sub_804037C + ldr r0, _0803E734 @ =gUnknown_8254784 + subs r1, r6, r7 + lsls r1, 2 + adds r6, r1, r0 + ldrb r0, [r6, 0x1] + lsls r0, 1 + mov r2, r10 + adds r1, r0, r2 + mov r0, r9 + cmp r0, 0 + bge _0803E5CE + adds r0, 0x3 +_0803E5CE: + asrs r0, 2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, 0x5 + str r0, [sp, 0x8] + adds r0, r5, 0 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + add r4, sp, 0x8 + ldrh r1, [r4] + movs r2, 0x1 + bl sub_8043698 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x3B + adds r2, r4, 0 + bl sub_804037C + ldrb r0, [r6, 0x2] + lsls r0, 1 + ldr r3, [sp, 0x20] + adds r1, r0, r3 + ldr r0, [sp, 0x24] + cmp r0, 0 + bge _0803E614 + adds r0, 0x3 +_0803E614: + asrs r0, 2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, 0x5 + str r0, [sp, 0xC] + adds r0, r5, 0 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + add r4, sp, 0xC + ldrh r1, [r4] + movs r2, 0x2 + bl sub_8043698 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r1, 0x3C + adds r2, r4, 0 + bl sub_804037C + ldrb r0, [r6, 0x3] + lsls r0, 1 + ldr r2, [sp, 0x28] + adds r1, r0, r2 + ldr r0, [sp, 0x2C] + cmp r0, 0 + bge _0803E65A + adds r0, 0x3 +_0803E65A: + asrs r0, 2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, 0x5 + str r0, [sp, 0x10] + adds r0, r5, 0 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + add r4, sp, 0x10 + ldrh r1, [r4] + movs r2, 0x3 + bl sub_8043698 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x3D + adds r2, r4, 0 + bl sub_804037C + ldrb r0, [r6, 0x4] + lsls r0, 1 + ldr r3, [sp, 0x30] + adds r1, r0, r3 + ldr r0, [sp, 0x34] + cmp r0, 0 + bge _0803E6A0 + adds r0, 0x3 +_0803E6A0: + asrs r0, 2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, 0x5 + str r0, [sp, 0x14] + adds r0, r5, 0 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + add r4, sp, 0x14 + ldrh r1, [r4] + movs r2, 0x4 + bl sub_8043698 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x14] + adds r0, r5, 0 + movs r1, 0x3E + adds r2, r4, 0 + bl sub_804037C + ldrb r0, [r6, 0x5] + lsls r0, 1 + ldr r2, [sp, 0x38] + adds r1, r0, r2 + ldr r0, [sp, 0x3C] + cmp r0, 0 + bge _0803E6E6 + adds r0, 0x3 +_0803E6E6: + asrs r0, 2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, 0x5 + str r0, [sp, 0x18] + adds r0, r5, 0 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + add r4, sp, 0x18 + ldrh r1, [r4] + movs r2, 0x5 + bl sub_8043698 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] + adds r0, r5, 0 + movs r1, 0x3F + adds r2, r4, 0 + bl sub_804037C + ldr r0, _0803E73C @ =0x0000012f + cmp r7, r0 + bne _0803E740 + ldr r0, [sp, 0x1C] + cmp r0, 0 + bne _0803E72E + mov r3, r8 + cmp r3, 0 + bne _0803E764 +_0803E72E: + movs r0, 0x1 + b _0803E758 + .align 2, 0 +_0803E734: .4byte gUnknown_8254784 +_0803E738: .4byte gUnknown_2023FC4 +_0803E73C: .4byte 0x0000012f +_0803E740: + ldr r1, [sp, 0x1C] + cmp r1, 0 + bne _0803E750 + mov r0, r8 + cmp r0, 0 + bne _0803E764 + ldr r0, [sp, 0x4] + b _0803E758 +_0803E750: + ldr r0, [sp, 0x4] + mov r2, r8 + subs r0, r2 + adds r0, r1, r0 +_0803E758: + str r0, [sp, 0x1C] + add r2, sp, 0x1C + adds r0, r5, 0 + movs r1, 0x39 + bl sub_804037C +_0803E764: + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803E47C + + thumb_func_start sub_803E774 +sub_803E774: @ 803E774 + push {r4,lr} + sub sp, 0x4 + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + adds r1, r2, 0 + movs r2, 0x50 + bl memcpy + adds r0, r4, 0 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x39 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3A + mov r2, sp + bl sub_804037C + movs r0, 0xFF + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x40 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + bl sub_803E47C + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_803E774 + + thumb_func_start sub_803E7C4 +sub_803E7C4: @ 803E7C4 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x19 + movs r2, 0 + bl sub_803FBE8 + adds r3, r0, 0 + movs r2, 0x1 + ldr r6, _0803E828 @ =gUnknown_8253AE4 + ldr r1, _0803E82C @ =gUnknown_8254784 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x13] + movs r5, 0xCA + lsls r5, 1 + muls r0, r5 + adds r0, 0x4 + adds r0, r6 + ldr r0, [r0] + cmp r0, r3 + bhi _0803E81A + adds r4, r1, 0 +_0803E804: + adds r2, 0x1 + cmp r2, 0x64 + bgt _0803E81A + lsls r1, r2, 2 + ldrb r0, [r4, 0x13] + muls r0, r5 + adds r1, r0 + adds r1, r6 + ldr r0, [r1] + cmp r0, r3 + bls _0803E804 +_0803E81A: + subs r0, r2, 0x1 + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0803E828: .4byte gUnknown_8253AE4 +_0803E82C: .4byte gUnknown_8254784 + thumb_func_end sub_803E7C4 + + thumb_func_start sub_803E830 +sub_803E830: @ 803E830 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FD44 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x19 + movs r2, 0 + bl sub_803FD44 + adds r3, r0, 0 + movs r2, 0x1 + ldr r6, _0803E894 @ =gUnknown_8253AE4 + ldr r1, _0803E898 @ =gUnknown_8254784 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x13] + movs r5, 0xCA + lsls r5, 1 + muls r0, r5 + adds r0, 0x4 + adds r0, r6 + ldr r0, [r0] + cmp r0, r3 + bhi _0803E886 + adds r4, r1, 0 +_0803E870: + adds r2, 0x1 + cmp r2, 0x64 + bgt _0803E886 + lsls r1, r2, 2 + ldrb r0, [r4, 0x13] + muls r0, r5 + adds r1, r0 + adds r1, r6 + ldr r0, [r1] + cmp r0, r3 + bls _0803E870 +_0803E886: + subs r0, r2, 0x1 + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0803E894: .4byte gUnknown_8253AE4 +_0803E898: .4byte gUnknown_8254784 + thumb_func_end sub_803E830 + + thumb_func_start sub_803E89C +sub_803E89C: @ 803E89C + push {lr} + lsls r1, 16 + lsrs r1, 16 + bl sub_803E8B0 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_803E89C + + thumb_func_start sub_803E8B0 +sub_803E8B0: @ 803E8B0 + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + mov r0, sp + strh r1, [r0] + movs r5, 0 + mov r6, sp +_0803E8BE: + adds r4, r5, 0 + adds r4, 0xD + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_803FD44 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0803E8FC + adds r0, r7, 0 + adds r1, r4, 0 + mov r2, sp + bl sub_80404D0 + adds r1, r5, 0 + adds r1, 0x11 + ldrh r0, [r6] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, _0803E8F8 @ =gUnknown_8250C08 + adds r2, r0 + adds r0, r7, 0 + bl sub_80404D0 + ldrh r0, [r6] + b _0803E914 + .align 2, 0 +_0803E8F8: .4byte gUnknown_8250C08 +_0803E8FC: + ldrh r1, [r6] + cmp r0, r1 + bne _0803E90C + ldr r0, _0803E908 @ =0x0000fffe + b _0803E914 + .align 2, 0 +_0803E908: .4byte 0x0000fffe +_0803E90C: + adds r5, 0x1 + cmp r5, 0x3 + ble _0803E8BE + ldr r0, _0803E91C @ =0x0000ffff +_0803E914: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803E91C: .4byte 0x0000ffff + thumb_func_end sub_803E8B0 + + thumb_func_start sub_803E920 +sub_803E920: @ 803E920 + push {r4,r5,lr} + lsls r1, 16 + lsrs r4, r1, 16 + movs r3, 0 + adds r5, r0, 0 + adds r5, 0x24 + ldr r2, _0803E94C @ =gUnknown_8250C04 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r2, r1, r2 + adds r1, r0, 0 + adds r1, 0xC +_0803E93A: + ldrh r0, [r1] + cmp r0, 0 + bne _0803E950 + strh r4, [r1] + adds r1, r5, r3 + ldrb r0, [r2, 0x4] + strb r0, [r1] + adds r0, r4, 0 + b _0803E95A + .align 2, 0 +_0803E94C: .4byte gUnknown_8250C04 +_0803E950: + adds r1, 0x2 + adds r3, 0x1 + cmp r3, 0x3 + ble _0803E93A + ldr r0, _0803E960 @ =0x0000ffff +_0803E95A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0803E960: .4byte 0x0000ffff + thumb_func_end sub_803E920 + + thumb_func_start sub_803E964 +sub_803E964: @ 803E964 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r4, r2, 0 + mov r0, sp + strh r1, [r0] + lsls r4, 24 + lsrs r4, 24 + adds r1, r4, 0 + adds r1, 0xD + adds r0, r5, 0 + mov r2, sp + bl sub_804037C + adds r4, 0x11 + mov r0, sp + ldrh r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, _0803E9A0 @ =gUnknown_8250C08 + adds r2, r0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_804037C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803E9A0: .4byte gUnknown_8250C08 + thumb_func_end sub_803E964 + + thumb_func_start sub_803E9A4 +sub_803E9A4: @ 803E9A4 + push {r4,lr} + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r4, r2, 1 + adds r3, r0, 0 + adds r3, 0xC + adds r3, r4 + strh r1, [r3] + adds r0, 0x24 + adds r0, r2 + ldr r3, _0803E9D0 @ =gUnknown_8250C04 + lsls r2, r1, 1 + adds r2, r1 + lsls r2, 2 + adds r2, r3 + ldrb r1, [r2, 0x4] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803E9D0: .4byte gUnknown_8250C04 + thumb_func_end sub_803E9A4 + + thumb_func_start sub_803E9D4 +sub_803E9D4: @ 803E9D4 + push {lr} + bl sub_803E9E0 + pop {r0} + bx r0 + thumb_func_end sub_803E9D4 + + thumb_func_start sub_803E9E0 +sub_803E9E0: @ 803E9E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + movs r1, 0xB + movs r2, 0 + bl sub_803FD44 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + bl sub_803E830 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _0803EA7C @ =gUnknown_825D7B4 + lsls r6, r4, 2 + adds r0, r6, r0 + ldr r0, [r0] + ldrh r1, [r0] + ldr r2, _0803EA80 @ =0xffff0000 + lsrs r0, r2, 16 + cmp r1, r0 + beq _0803EA6C + mov r9, r2 + movs r3, 0 +_0803EA1E: + ldr r0, _0803EA7C @ =gUnknown_825D7B4 + adds r7, r6, r0 + ldr r0, [r7] + adds r0, r3, r0 + ldrh r2, [r0] + movs r1, 0xFE + lsls r1, 8 + adds r0, r1, 0 + ands r0, r2 + mov r4, r10 + lsls r1, r4, 9 + cmp r0, r1 + bgt _0803EA6C + ldr r1, _0803EA84 @ =0x000001ff + adds r0, r1, 0 + adds r4, r0, 0 + ands r4, r2 + mov r0, r8 + adds r1, r4, 0 + str r3, [sp] + bl sub_803E8B0 + lsls r0, 16 + mov r1, r9 + lsrs r5, r1, 16 + ldr r3, [sp] + cmp r0, r9 + bne _0803EA60 + mov r0, r8 + adds r1, r4, 0 + bl sub_803EC40 + ldr r3, [sp] +_0803EA60: + adds r3, 0x2 + ldr r0, [r7] + adds r0, r3, r0 + ldrh r0, [r0] + cmp r0, r5 + bne _0803EA1E +_0803EA6C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803EA7C: .4byte gUnknown_825D7B4 +_0803EA80: .4byte 0xffff0000 +_0803EA84: .4byte 0x000001ff + thumb_func_end sub_803E9E0 + + thumb_func_start sub_803EA88 +sub_803EA88: @ 803EA88 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + lsls r4, r1, 24 + lsrs r4, 24 + movs r0, 0 + str r0, [sp] + mov r0, r8 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + mov r0, r8 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r4, 0 + beq _0803EB20 + ldr r4, _0803EB0C @ =gUnknown_2024028 + mov r1, sp + ldrb r1, [r1] + strb r1, [r4] + ldr r2, _0803EB10 @ =gUnknown_825D7B4 + mov r5, r9 + lsls r3, r5, 2 + adds r5, r3, r2 + ldr r0, [r5] + ldrh r1, [r0] + movs r7, 0xFE + lsls r7, 8 + adds r0, r7, 0 + ands r0, r1 + adds r6, r4, 0 + mov r12, r2 + mov r1, r10 + lsls r4, r1, 9 + cmp r0, r4 + beq _0803EB48 + adds r2, r6, 0 + ldr r0, _0803EB14 @ =0x0000ffff + mov r12, r0 + adds r6, r7, 0 + adds r3, r5, 0 +_0803EAF4: + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + ldrb r0, [r2] + ldr r1, [r3] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + cmp r1, r12 + bne _0803EB18 + movs r0, 0 + b _0803EB74 + .align 2, 0 +_0803EB0C: .4byte gUnknown_2024028 +_0803EB10: .4byte gUnknown_825D7B4 +_0803EB14: .4byte 0x0000ffff +_0803EB18: + adds r0, r6, 0 + ands r0, r1 + cmp r0, r4 + bne _0803EAF4 +_0803EB20: + ldr r3, _0803EB84 @ =gUnknown_825D7B4 + mov r1, r9 + lsls r4, r1, 2 + adds r1, r4, r3 + ldr r2, _0803EB88 @ =gUnknown_2024028 + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0xFE + lsls r0, 8 + ands r0, r1 + mov r5, r10 + lsls r1, r5, 9 + adds r6, r2, 0 + mov r12, r3 + adds r3, r4, 0 + cmp r0, r1 + bne _0803EB72 +_0803EB48: + ldr r2, _0803EB8C @ =gUnknown_2024022 + mov r0, r12 + adds r1, r3, r0 + ldrb r0, [r6] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _0803EB90 @ =0x000001ff + ands r0, r1 + strh r0, [r2] + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + ldrh r1, [r2] + mov r0, r8 + bl sub_803E89C + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] +_0803EB72: + ldr r0, [sp] +_0803EB74: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803EB84: .4byte gUnknown_825D7B4 +_0803EB88: .4byte gUnknown_2024028 +_0803EB8C: .4byte gUnknown_2024022 +_0803EB90: .4byte 0x000001ff + thumb_func_end sub_803EA88 + + thumb_func_start sub_803EB94 +sub_803EB94: @ 803EB94 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + adds r6, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + movs r4, 0 + add r7, sp, 0x8 + add r0, sp, 0xC + mov r9, r0 + mov r5, sp +_0803EBB0: + adds r1, r4, 0 + adds r1, 0xE + adds r0, r6, 0 + movs r2, 0 + bl sub_803FBE8 + strh r0, [r5] + adds r1, r4, 0 + adds r1, 0x12 + adds r0, r6, 0 + movs r2, 0 + bl sub_803FBE8 + adds r1, r7, r4 + strb r0, [r1] + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + ble _0803EBB0 + adds r0, r6, 0 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + mov r1, r9 + strb r0, [r1] + ldrb r0, [r1] + lsrs r0, 2 + strb r0, [r1] + mov r0, sp + mov r2, r8 + strh r2, [r0, 0x6] + ldr r1, _0803EC3C @ =gUnknown_8250C04 + mov r2, r8 + lsls r0, r2, 1 + add r0, r8 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x4] + strb r0, [r7, 0x3] + movs r4, 0 + mov r5, sp +_0803EC04: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + adds r2, r5, 0 + bl sub_804037C + adds r1, r4, 0 + adds r1, 0x11 + adds r2, r7, r4 + adds r0, r6, 0 + bl sub_804037C + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0803EC04 + adds r0, r6, 0 + movs r1, 0x15 + mov r2, r9 + bl sub_804037C + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803EC3C: .4byte gUnknown_8250C04 + thumb_func_end sub_803EB94 + + thumb_func_start sub_803EC40 +sub_803EC40: @ 803EC40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + adds r6, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + movs r4, 0 + add r7, sp, 0x8 + add r0, sp, 0xC + mov r9, r0 + mov r5, sp +_0803EC5C: + adds r1, r4, 0 + adds r1, 0xE + adds r0, r6, 0 + movs r2, 0 + bl sub_803FD44 + strh r0, [r5] + adds r1, r4, 0 + adds r1, 0x12 + adds r0, r6, 0 + movs r2, 0 + bl sub_803FD44 + adds r1, r7, r4 + strb r0, [r1] + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x2 + ble _0803EC5C + adds r0, r6, 0 + movs r1, 0x15 + movs r2, 0 + bl sub_803FD44 + mov r1, r9 + strb r0, [r1] + ldrb r0, [r1] + lsrs r0, 2 + strb r0, [r1] + mov r0, sp + mov r2, r8 + strh r2, [r0, 0x6] + ldr r1, _0803ECE8 @ =gUnknown_8250C04 + mov r2, r8 + lsls r0, r2, 1 + add r0, r8 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x4] + strb r0, [r7, 0x3] + movs r4, 0 + mov r5, sp +_0803ECB0: + adds r1, r4, 0 + adds r1, 0xD + adds r0, r6, 0 + adds r2, r5, 0 + bl sub_80404D0 + adds r1, r4, 0 + adds r1, 0x11 + adds r2, r7, r4 + adds r0, r6, 0 + bl sub_80404D0 + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0803ECB0 + adds r0, r6, 0 + movs r1, 0x15 + mov r2, r9 + bl sub_80404D0 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803ECE8: .4byte gUnknown_8250C04 + thumb_func_end sub_803EC40 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_2.s b/asm/pokemon_2.s new file mode 100644 index 000000000..f579b7a19 --- /dev/null +++ b/asm/pokemon_2.s @@ -0,0 +1,3902 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_803F5B4 +sub_803F5B4: @ 803F5B4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + movs r6, 0 + cmp r0, 0x1 + beq _0803F608 + cmp r0, 0x1 + bgt _0803F5CC + cmp r0, 0 + beq _0803F5D2 + b _0803F68A +_0803F5CC: + cmp r1, 0x2 + beq _0803F650 + b _0803F68A +_0803F5D2: + movs r5, 0 + ldr r0, _0803F5FC @ =gUnknown_2023BC4 + ldrb r3, [r0] + ldr r4, _0803F600 @ =gUnknown_2023D70 + ldr r2, _0803F604 @ =gUnknown_825E45C +_0803F5DC: + cmp r5, r3 + beq _0803F5F0 + ldrb r0, [r4] + ldr r1, [r2] + ands r0, r1 + cmp r0, 0 + bne _0803F5F0 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0803F5F0: + adds r2, 0x4 + adds r5, 0x1 + cmp r5, 0x3 + ble _0803F5DC + b _0803F68A + .align 2, 0 +_0803F5FC: .4byte gUnknown_2023BC4 +_0803F600: .4byte gUnknown_2023D70 +_0803F604: .4byte gUnknown_825E45C +_0803F608: + movs r5, 0 +_0803F60A: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + adds r4, r0, 0 + ldr r0, _0803F644 @ =gUnknown_2023D6B + ldrb r0, [r0] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _0803F63C + ldr r0, _0803F648 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0803F64C @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803F63C + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0803F63C: + adds r5, 0x1 + cmp r5, 0x3 + ble _0803F60A + b _0803F68A + .align 2, 0 +_0803F644: .4byte gUnknown_2023D6B +_0803F648: .4byte gUnknown_2023D70 +_0803F64C: .4byte gUnknown_825E45C +_0803F650: + movs r5, 0 +_0803F652: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_80751C4 + adds r4, r0, 0 + ldr r0, _0803F694 @ =gUnknown_2023D6C + ldrb r0, [r0] + bl sub_80751C4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _0803F684 + ldr r0, _0803F698 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0803F69C @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803F684 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0803F684: + adds r5, 0x1 + cmp r5, 0x3 + ble _0803F652 +_0803F68A: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0803F694: .4byte gUnknown_2023D6C +_0803F698: .4byte gUnknown_2023D70 +_0803F69C: .4byte gUnknown_825E45C + thumb_func_end sub_803F5B4 + + thumb_func_start sub_803F6A0 +sub_803F6A0: @ 803F6A0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80751D8 + movs r1, 0x1 + movs r6, 0x1 + adds r4, r6, 0 + ands r4, r0 + eors r4, r1 + adds r5, r4, 0 + ldr r0, _0803F6C4 @ =gUnknown_2022B4C + ldr r0, [r0] + ands r0, r6 + cmp r0, 0 + bne _0803F6C8 + adds r0, r4, 0 + b _0803F712 + .align 2, 0 +_0803F6C4: .4byte gUnknown_2022B4C +_0803F6C8: + movs r0, 0 + bl sub_803F5B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0803F6EC + bl sub_8044EC8 + adds r1, r6, 0 + ands r1, r0 + cmp r1, 0 + bne _0803F6E8 + movs r0, 0x2 + eors r0, r4 + b _0803F712 +_0803F6E8: + adds r0, r4, 0 + b _0803F712 +_0803F6EC: + ldr r0, _0803F704 @ =gUnknown_2023D70 + ldrb r1, [r0] + ldr r2, _0803F708 @ =gUnknown_825E45C + lsls r0, r4, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0803F70C + adds r0, r4, 0 + b _0803F712 + .align 2, 0 +_0803F704: .4byte gUnknown_2023D70 +_0803F708: .4byte gUnknown_825E45C +_0803F70C: + movs r0, 0x2 + eors r5, r0 + adds r0, r5, 0 +_0803F712: + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_803F6A0 + + thumb_func_start sub_803F720 +sub_803F720: @ 803F720 + push {lr} + bl sub_803F730 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_803F720 + + thumb_func_start sub_803F730 +sub_803F730: @ 803F730 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FD44 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FD44 + adds r2, r0, 0 + ldr r1, _0803F780 @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x10] + cmp r0, 0 + beq _0803F786 + cmp r0, 0 + blt _0803F768 + cmp r0, 0xFF + bgt _0803F768 + cmp r0, 0xFE + bge _0803F786 +_0803F768: + ldr r1, _0803F780 @ =gUnknown_8254784 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x10] + movs r0, 0xFF + ands r0, r2 + cmp r1, r0 + bhi _0803F784 + movs r0, 0 + b _0803F786 + .align 2, 0 +_0803F780: .4byte gUnknown_8254784 +_0803F784: + movs r0, 0xFE +_0803F786: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_803F730 + + thumb_func_start sub_803F78C +sub_803F78C: @ 803F78C + push {lr} + adds r3, r1, 0 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _0803F7C8 @ =gUnknown_8254784 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x10] + cmp r0, 0 + beq _0803F7CE + cmp r0, 0 + blt _0803F7B0 + cmp r0, 0xFF + bgt _0803F7B0 + cmp r0, 0xFE + bge _0803F7CE +_0803F7B0: + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x10] + movs r0, 0xFF + ands r0, r3 + cmp r1, r0 + bhi _0803F7CC + movs r0, 0 + b _0803F7CE + .align 2, 0 +_0803F7C8: .4byte gUnknown_8254784 +_0803F7CC: + movs r0, 0xFE +_0803F7CE: + pop {r1} + bx r1 + thumb_func_end sub_803F78C + + thumb_func_start sub_803F7D4 +sub_803F7D4: @ 803F7D4 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _0803F808 @ =gUnknown_202401C + ldr r2, [r0] + cmp r2, 0 + beq _0803F810 + cmp r4, 0x3 + bls _0803F7EC + movs r4, 0 +_0803F7EC: + ldr r0, _0803F80C @ =gUnknown_20244DC + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 3 + adds r1, r2, r1 + adds r2, r0, 0 + adds r1, 0x14 + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + adds r3, r0, 0 + b _0803F84C + .align 2, 0 +_0803F808: .4byte gUnknown_202401C +_0803F80C: .4byte gUnknown_20244DC +_0803F810: + ldr r0, _0803F828 @ =gUnknown_20244F4 + ldr r1, [r0] + cmp r1, 0 + beq _0803F830 + ldrb r0, [r1] + lsrs r0, 4 + cmp r4, r0 + blt _0803F822 + movs r4, 0 +_0803F822: + ldr r3, _0803F82C @ =gUnknown_20244DC + ldr r2, [r1, 0x10] + b _0803F83A + .align 2, 0 +_0803F828: .4byte gUnknown_20244F4 +_0803F82C: .4byte gUnknown_20244DC +_0803F830: + cmp r4, 0x3 + bls _0803F836 + movs r4, 0 +_0803F836: + ldr r3, _0803F858 @ =gUnknown_20244DC + ldr r2, _0803F85C @ =gUnknown_825DEF0 +_0803F83A: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + adds r1, r3, 0 + adds r0, r2 + ldm r0!, {r2,r4,r6} + stm r1!, {r2,r4,r6} + ldm r0!, {r2,r4,r6} + stm r1!, {r2,r4,r6} +_0803F84C: + strh r5, [r3, 0x2] + ldr r0, _0803F860 @ =gUnknown_82349BC + str r0, [r3, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803F858: .4byte gUnknown_20244DC +_0803F85C: .4byte gUnknown_825DEF0 +_0803F860: .4byte gUnknown_82349BC + thumb_func_end sub_803F7D4 + + thumb_func_start sub_803F864 +sub_803F864: @ 803F864 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r3, r1, 24 + ldr r0, _0803F89C @ =gUnknown_20244DC + strh r4, [r0, 0x2] + adds r5, r0, 0 + cmp r3, 0 + beq _0803F87C + cmp r3, 0x2 + bne _0803F8A8 +_0803F87C: + ldr r2, _0803F8A0 @ =gUnknown_825DF50 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + adds r1, r5, 0 + adds r0, r2 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r1, _0803F8A4 @ =gUnknown_8239F74 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + b _0803F8E8 + .align 2, 0 +_0803F89C: .4byte gUnknown_20244DC +_0803F8A0: .4byte gUnknown_825DF50 +_0803F8A4: .4byte gUnknown_8239F74 +_0803F8A8: + ldr r0, _0803F8C8 @ =gUnknown_202401C + ldr r1, [r0] + cmp r1, 0 + beq _0803F8CC + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r0, r1, r0 + adds r1, r5, 0 + adds r0, 0x14 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + b _0803F8E0 + .align 2, 0 +_0803F8C8: .4byte gUnknown_202401C +_0803F8CC: + ldr r0, _0803F8F0 @ =gUnknown_825DEF0 + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 3 + adds r2, r5, 0 + adds r1, r0 + ldm r1!, {r0,r3,r6} + stm r2!, {r0,r3,r6} + ldm r1!, {r0,r3,r6} + stm r2!, {r0,r3,r6} +_0803F8E0: + ldr r0, _0803F8F4 @ =gUnknown_82390DC + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] +_0803F8E8: + str r0, [r5, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803F8F0: .4byte gUnknown_825DEF0 +_0803F8F4: .4byte gUnknown_82390DC + thumb_func_end sub_803F864 + + thumb_func_start sub_803F8F8 +sub_803F8F8: @ 803F8F8 + push {r4,lr} + adds r3, r0, 0 + movs r4, 0 + adds r2, r3, 0 + adds r2, 0x20 +_0803F902: + ldr r0, [r2] + ldr r1, [r3] + eors r0, r1 + str r0, [r2] + ldr r1, [r3, 0x4] + eors r0, r1 + stm r2!, {r0} + adds r4, 0x1 + cmp r4, 0xB + bls _0803F902 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_803F8F8 + + thumb_func_start sub_803F91C +sub_803F91C: @ 803F91C + push {r4,lr} + adds r3, r0, 0 + movs r4, 0 + adds r2, r3, 0 + adds r2, 0x20 +_0803F926: + ldr r0, [r2] + ldr r1, [r3, 0x4] + eors r0, r1 + str r0, [r2] + ldr r1, [r3] + eors r0, r1 + stm r2!, {r0} + adds r4, 0x1 + cmp r4, 0xB + bls _0803F926 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_803F91C + + thumb_func_start sub_803F940 +sub_803F940: @ 803F940 + push {r4-r6,lr} + adds r5, r0, 0 + adds r0, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + movs r6, 0 + movs r1, 0x18 + bl __umodsi3 + cmp r0, 0x17 + bls _0803F958 + b _0803FBE0 +_0803F958: + lsls r0, 2 + ldr r1, _0803F964 @ =_0803F968 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803F964: .4byte _0803F968 + .align 2, 0 +_0803F968: + .4byte _0803F9C8 + .4byte _0803F9EC + .4byte _0803FA08 + .4byte _0803FA1E + .4byte _0803FA34 + .4byte _0803FA50 + .4byte _0803FA66 + .4byte _0803FA7C + .4byte _0803FA8C + .4byte _0803FAAA + .4byte _0803FAC2 + .4byte _0803FAD2 + .4byte _0803FAE6 + .4byte _0803FAF8 + .4byte _0803FB0A + .4byte _0803FB1C + .4byte _0803FB2E + .4byte _0803FB40 + .4byte _0803FB52 + .4byte _0803FB68 + .4byte _0803FB7C + .4byte _0803FB8A + .4byte _0803FB9C + .4byte _0803FBB0 +_0803F9C8: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803F9D2 + b _0803FBD8 +_0803F9D2: + cmp r4, 0x1 + bgt _0803F9DE +_0803F9D6: + cmp r4, 0 + bne _0803F9DC + b _0803FBDE +_0803F9DC: + b _0803FBE0 +_0803F9DE: + cmp r4, 0x2 + bne _0803F9E4 + b _0803FBD2 +_0803F9E4: + cmp r4, 0x3 + beq _0803F9EA + b _0803FBE0 +_0803F9EA: + b _0803FBCC +_0803F9EC: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803F9F6 + b _0803FBD8 +_0803F9F6: + cmp r4, 0x1 + ble _0803F9D6 +_0803F9FA: + cmp r4, 0x2 + bne _0803FA00 + b _0803FBCC +_0803FA00: + cmp r4, 0x3 + beq _0803FA06 + b _0803FBE0 +_0803FA06: + b _0803FBD2 +_0803FA08: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA12 + b _0803FBD2 +_0803FA12: + cmp r4, 0x1 + ble _0803F9D6 + cmp r4, 0x2 + bne _0803FA1C + b _0803FBD8 +_0803FA1C: + b _0803F9E4 +_0803FA1E: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA28 + b _0803FBCC +_0803FA28: + cmp r4, 0x1 + ble _0803F9D6 + cmp r4, 0x2 + bne _0803FA32 + b _0803FBD8 +_0803FA32: + b _0803FA00 +_0803FA34: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA3E + b _0803FBD2 +_0803FA3E: + cmp r4, 0x1 + ble _0803F9D6 +_0803FA42: + cmp r4, 0x2 + bne _0803FA48 + b _0803FBCC +_0803FA48: + cmp r4, 0x3 + beq _0803FA4E + b _0803FBE0 +_0803FA4E: + b _0803FBD8 +_0803FA50: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA5A + b _0803FBCC +_0803FA5A: + cmp r4, 0x1 + ble _0803F9D6 + cmp r4, 0x2 + bne _0803FA64 + b _0803FBD2 +_0803FA64: + b _0803FA48 +_0803FA66: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA70 + b _0803FBDE +_0803FA70: + cmp r4, 0x1 + bgt _0803F9DE +_0803FA74: + cmp r4, 0 + bne _0803FA7A + b _0803FBD8 +_0803FA7A: + b _0803FBE0 +_0803FA7C: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA86 + b _0803FBDE +_0803FA86: + cmp r4, 0x1 + ble _0803FA74 + b _0803F9FA +_0803FA8C: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FA96 + b _0803FBDE +_0803FA96: + cmp r4, 0x1 + bgt _0803FAA2 +_0803FA9A: + cmp r4, 0 + bne _0803FAA0 + b _0803FBD2 +_0803FAA0: + b _0803FBE0 +_0803FAA2: + cmp r4, 0x2 + bne _0803FAA8 + b _0803FBD8 +_0803FAA8: + b _0803F9E4 +_0803FAAA: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FAB4 + b _0803FBDE +_0803FAB4: + cmp r4, 0x1 + bgt _0803FABA + b _0803FBBC +_0803FABA: + cmp r4, 0x2 + bne _0803FAC0 + b _0803FBD8 +_0803FAC0: + b _0803FA00 +_0803FAC2: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FACC + b _0803FBDE +_0803FACC: + cmp r4, 0x1 + ble _0803FA9A + b _0803FA42 +_0803FAD2: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + bne _0803FADC + b _0803FBDE +_0803FADC: + cmp r4, 0x1 + ble _0803FBBC + cmp r4, 0x2 + beq _0803FBD2 + b _0803FA48 +_0803FAE6: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD2 + cmp r4, 0x1 + ble _0803FA74 + cmp r4, 0x2 + beq _0803FBDE + b _0803F9E4 +_0803FAF8: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBCC + cmp r4, 0x1 + ble _0803FA74 + cmp r4, 0x2 + beq _0803FBDE + b _0803FA00 +_0803FB0A: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD8 + cmp r4, 0x1 + ble _0803FA9A + cmp r4, 0x2 + beq _0803FBDE + b _0803F9E4 +_0803FB1C: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD8 + cmp r4, 0x1 + ble _0803FBBC + cmp r4, 0x2 + beq _0803FBDE + b _0803FA00 +_0803FB2E: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBCC + cmp r4, 0x1 + ble _0803FA9A + cmp r4, 0x2 + beq _0803FBDE + b _0803FA48 +_0803FB40: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD2 + cmp r4, 0x1 + ble _0803FBBC + cmp r4, 0x2 + beq _0803FBDE + b _0803FA48 +_0803FB52: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD2 + cmp r4, 0x1 + ble _0803FA74 +_0803FB5E: + cmp r4, 0x2 + beq _0803FBCC +_0803FB62: + cmp r4, 0x3 + bne _0803FBE0 + b _0803FBDE +_0803FB68: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBCC + cmp r4, 0x1 + bgt _0803FB76 + b _0803FA74 +_0803FB76: + cmp r4, 0x2 + beq _0803FBD2 + b _0803FB62 +_0803FB7C: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD8 + cmp r4, 0x1 + ble _0803FA9A + b _0803FB5E +_0803FB8A: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD8 + cmp r4, 0x1 + ble _0803FBBC + cmp r4, 0x2 + beq _0803FBD2 + b _0803FB62 +_0803FB9C: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBCC + cmp r4, 0x1 + bgt _0803FBAA + b _0803FA9A +_0803FBAA: + cmp r4, 0x2 + beq _0803FBD8 + b _0803FB62 +_0803FBB0: + adds r0, r5, 0 + adds r0, 0x20 + cmp r4, 0x1 + beq _0803FBD2 + cmp r4, 0x1 + bgt _0803FBC2 +_0803FBBC: + cmp r4, 0 + beq _0803FBCC + b _0803FBE0 +_0803FBC2: + cmp r4, 0x2 + beq _0803FBD8 + cmp r4, 0x3 + beq _0803FBDE + b _0803FBE0 +_0803FBCC: + adds r6, r5, 0 + adds r6, 0x44 + b _0803FBE0 +_0803FBD2: + adds r6, r5, 0 + adds r6, 0x38 + b _0803FBE0 +_0803FBD8: + adds r6, r5, 0 + adds r6, 0x2C + b _0803FBE0 +_0803FBDE: + adds r6, r0, 0 +_0803FBE0: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_803F940 + + thumb_func_start sub_803FBE8 +sub_803FBE8: @ 803FBE8 + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + adds r0, r3, 0 + subs r0, 0x37 + cmp r0, 0x21 + bls _0803FBF8 + b _0803FD36 +_0803FBF8: + lsls r0, 2 + ldr r1, _0803FC04 @ =_0803FC08 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803FC04: .4byte _0803FC08 + .align 2, 0 +_0803FC08: + .4byte _0803FC90 + .4byte _0803FC94 + .4byte _0803FC9C + .4byte _0803FCA4 + .4byte _0803FCAC + .4byte _0803FCBE + .4byte _0803FCD0 + .4byte _0803FCE2 + .4byte _0803FCF4 + .4byte _0803FD2E + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD36 + .4byte _0803FD06 + .4byte _0803FD0E + .4byte _0803FD16 + .4byte _0803FD1E + .4byte _0803FD26 +_0803FC90: + ldr r0, [r4, 0x50] + b _0803FD3E +_0803FC94: + adds r0, r4, 0 + adds r0, 0x54 + ldrb r0, [r0] + b _0803FD3E +_0803FC9C: + adds r0, r4, 0 + adds r0, 0x56 + ldrh r0, [r0] + b _0803FD3E +_0803FCA4: + adds r0, r4, 0 + adds r0, 0x58 + ldrh r0, [r0] + b _0803FD3E +_0803FCAC: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8044674 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0803FD3E + b _0803FD06 +_0803FCBE: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8044674 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0803FD3E + b _0803FD0E +_0803FCD0: + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8044674 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0803FD3E + b _0803FD16 +_0803FCE2: + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8044674 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0803FD3E + b _0803FD1E +_0803FCF4: + adds r0, r4, 0 + movs r1, 0x5 + bl sub_8044674 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0803FD3E + b _0803FD26 +_0803FD06: + adds r0, r4, 0 + adds r0, 0x5A + ldrh r0, [r0] + b _0803FD3E +_0803FD0E: + adds r0, r4, 0 + adds r0, 0x5C + ldrh r0, [r0] + b _0803FD3E +_0803FD16: + adds r0, r4, 0 + adds r0, 0x5E + ldrh r0, [r0] + b _0803FD3E +_0803FD1E: + adds r0, r4, 0 + adds r0, 0x60 + ldrh r0, [r0] + b _0803FD3E +_0803FD26: + adds r0, r4, 0 + adds r0, 0x62 + ldrh r0, [r0] + b _0803FD3E +_0803FD2E: + adds r0, r4, 0 + adds r0, 0x55 + ldrb r0, [r0] + b _0803FD3E +_0803FD36: + adds r0, r4, 0 + adds r1, r3, 0 + bl sub_803FD44 +_0803FD3E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_803FBE8 + + thumb_func_start sub_803FD44 +sub_803FD44: @ 803FD44 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + str r1, [sp] + adds r6, r2, 0 + movs r4, 0 + mov r9, r4 + mov r10, r4 + movs r7, 0 + movs r5, 0 + cmp r1, 0xA + ble _0803FDC2 + ldr r1, [r0] + movs r2, 0 + bl sub_803F940 + mov r9, r0 + mov r0, r8 + ldr r1, [r0] + movs r2, 0x1 + bl sub_803F940 + mov r10, r0 + mov r2, r8 + ldr r1, [r2] + mov r0, r8 + movs r2, 0x2 + bl sub_803F940 + adds r7, r0, 0 + mov r0, r8 + ldr r1, [r0] + movs r2, 0x3 + bl sub_803F940 + adds r5, r0, 0 + mov r0, r8 + bl sub_803F91C + mov r0, r8 + bl sub_803E3E8 + lsls r0, 16 + lsrs r0, 16 + mov r1, r8 + ldrh r1, [r1, 0x1C] + cmp r0, r1 + beq _0803FDC2 + mov r2, r8 + ldrb r0, [r2, 0x13] + movs r1, 0x1 + orrs r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x13] + ldrb r0, [r5, 0x7] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x7] +_0803FDC2: + ldr r0, [sp] + cmp r0, 0x53 + bls _0803FDCA + b _0804035C +_0803FDCA: + lsls r0, 2 + ldr r1, _0803FDD4 @ =_0803FDD8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803FDD4: .4byte _0803FDD8 + .align 2, 0 +_0803FDD8: + .4byte _0803FF28 + .4byte _0803FF2E + .4byte _0803FF34 + .4byte _0803FFE8 + .4byte _0803FFEE + .4byte _0803FFF4 + .4byte _0803FFFA + .4byte _08040000 + .4byte _0804001C + .4byte _08040022 + .4byte _08040028 + .4byte _0804002E + .4byte _08040046 + .4byte _0804005E + .4byte _0804005E + .4byte _0804005E + .4byte _0804005E + .4byte _0804006A + .4byte _0804006A + .4byte _0804006A + .4byte _0804006A + .4byte _08040052 + .4byte _0804008C + .4byte _08040090 + .4byte _08040094 + .4byte _0804004C + .4byte _08040074 + .4byte _08040078 + .4byte _0804007C + .4byte _08040080 + .4byte _08040084 + .4byte _08040088 + .4byte _08040058 + .4byte _08040098 + .4byte _080400A4 + .4byte _080400A8 + .4byte _080400AC + .4byte _080400B4 + .4byte _080400BC + .4byte _080400C6 + .4byte _080400CE + .4byte _080400D6 + .4byte _080400DE + .4byte _080400E6 + .4byte _080400EE + .4byte _080400F6 + .4byte _080400FA + .4byte _0804009C + .4byte _080400A0 + .4byte _080400C0 + .4byte _08040100 + .4byte _08040108 + .4byte _08040110 + .4byte _08040118 + .4byte _08040120 + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _0804035C + .4byte _08040186 + .4byte _080401AC + .4byte _08040128 + .4byte _0804012E + .4byte _08040132 + .4byte _08040136 + .4byte _0804013A + .4byte _08040142 + .4byte _0804014A + .4byte _08040152 + .4byte _0804015A + .4byte _08040160 + .4byte _08040168 + .4byte _08040170 + .4byte _08040178 + .4byte _08040180 + .4byte _080401E6 + .4byte _08040240 + .4byte _080402C2 +_0803FF28: + mov r1, r8 + ldr r4, [r1] + b _0804035C +_0803FF2E: + mov r2, r8 + ldr r4, [r2, 0x4] + b _0804035C +_0803FF34: + mov r0, r8 + ldrb r1, [r0, 0x13] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803FF6C + movs r4, 0 + ldr r0, _0803FF68 @ =gUnknown_83FE868 + ldrb r1, [r0] + adds r2, r0, 0 + cmp r1, 0xFF + beq _08040014 + adds r3, r2, 0 +_0803FF4E: + adds r0, r6, r4 + adds r1, r4, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x9 + bhi _08040014 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0803FF4E + b _08040014 + .align 2, 0 +_0803FF68: .4byte gUnknown_83FE868 +_0803FF6C: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0803FF8C + ldr r1, _0803FF88 @ =gUnknown_8415A62 + adds r0, r6, 0 + bl sub_8008D84 + adds r0, r6, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r4, r0, 16 + b _0804035C + .align 2, 0 +_0803FF88: .4byte gUnknown_8415A62 +_0803FF8C: + mov r1, r8 + ldrb r0, [r1, 0x12] + cmp r0, 0x1 + bne _0803FFD2 + movs r0, 0xFC + strb r0, [r6] + movs r0, 0x15 + strb r0, [r6, 0x1] + movs r4, 0x2 + movs r3, 0 + ldrb r0, [r1, 0x8] + cmp r0, 0xFF + beq _0803FFC0 + mov r2, r8 + adds r2, 0x8 +_0803FFAA: + adds r1, r6, r4 + ldrb r0, [r2] + strb r0, [r1] + adds r4, 0x1 + adds r2, 0x1 + adds r3, 0x1 + cmp r3, 0x5 + bgt _0803FFC0 + ldrb r0, [r2] + cmp r0, 0xFF + bne _0803FFAA +_0803FFC0: + adds r1, r6, r4 + movs r0, 0xFC + strb r0, [r1] + adds r4, 0x1 + adds r1, r6, r4 + movs r0, 0x16 + strb r0, [r1] + adds r4, 0x1 + b _08040014 +_0803FFD2: + movs r4, 0 + mov r2, r8 + adds r2, 0x8 +_0803FFD8: + adds r0, r6, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x9 + bls _0803FFD8 + b _08040014 +_0803FFE8: + mov r2, r8 + ldrb r4, [r2, 0x12] + b _0804035C +_0803FFEE: + mov r6, r8 + ldrb r0, [r6, 0x13] + b _08040162 +_0803FFF4: + mov r1, r8 + ldrb r0, [r1, 0x13] + b _0804016A +_0803FFFA: + mov r2, r8 + ldrb r0, [r2, 0x13] + b _08040172 +_08040000: + movs r4, 0 + mov r2, r8 + adds r2, 0x14 +_08040006: + adds r0, r6, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x6 + bls _08040006 +_08040014: + adds r1, r6, r4 + movs r0, 0xFF + strb r0, [r1] + b _0804035C +_0804001C: + mov r6, r8 + ldrb r4, [r6, 0x1B] + b _0804035C +_08040022: + mov r0, r8 + ldrh r4, [r0, 0x1C] + b _0804035C +_08040028: + mov r1, r8 + ldrh r4, [r1, 0x1E] + b _0804035C +_0804002E: + mov r2, r8 + ldrb r1, [r2, 0x13] + movs r0, 0x1 + ands r0, r1 + movs r4, 0xCE + lsls r4, 1 + cmp r0, 0 + beq _08040040 + b _0804035C +_08040040: + mov r6, r9 + ldrh r4, [r6] + b _0804035C +_08040046: + mov r0, r9 + ldrh r4, [r0, 0x2] + b _0804035C +_0804004C: + mov r1, r9 + ldr r4, [r1, 0x4] + b _0804035C +_08040052: + mov r2, r9 + ldrb r4, [r2, 0x8] + b _0804035C +_08040058: + mov r6, r9 + ldrb r4, [r6, 0x9] + b _0804035C +_0804005E: + ldr r0, [sp] + subs r0, 0xD + lsls r0, 1 + add r0, r10 + ldrh r4, [r0] + b _0804035C +_0804006A: + ldr r0, [sp] + add r0, r10 + subs r0, 0x9 + ldrb r4, [r0] + b _0804035C +_08040074: + ldrb r4, [r7] + b _0804035C +_08040078: + ldrb r4, [r7, 0x1] + b _0804035C +_0804007C: + ldrb r4, [r7, 0x2] + b _0804035C +_08040080: + ldrb r4, [r7, 0x3] + b _0804035C +_08040084: + ldrb r4, [r7, 0x4] + b _0804035C +_08040088: + ldrb r4, [r7, 0x5] + b _0804035C +_0804008C: + ldrb r4, [r7, 0x6] + b _0804035C +_08040090: + ldrb r4, [r7, 0x7] + b _0804035C +_08040094: + ldrb r4, [r7, 0x8] + b _0804035C +_08040098: + ldrb r4, [r7, 0x9] + b _0804035C +_0804009C: + ldrb r4, [r7, 0xA] + b _0804035C +_080400A0: + ldrb r4, [r7, 0xB] + b _0804035C +_080400A4: + ldrb r4, [r5] + b _0804035C +_080400A8: + ldrb r4, [r5, 0x1] + b _0804035C +_080400AC: + ldrb r0, [r5, 0x2] + lsls r0, 25 + lsrs r4, r0, 25 + b _0804035C +_080400B4: + ldrh r0, [r5, 0x2] + lsls r0, 21 + lsrs r4, r0, 28 + b _0804035C +_080400BC: + ldrb r0, [r5, 0x3] + b _0804017A +_080400C0: + ldrb r0, [r5, 0x3] + lsrs r4, r0, 7 + b _0804035C +_080400C6: + ldrb r0, [r5, 0x4] + lsls r0, 27 + lsrs r4, r0, 27 + b _0804035C +_080400CE: + ldrh r0, [r5, 0x4] + lsls r0, 22 + lsrs r4, r0, 27 + b _0804035C +_080400D6: + ldrb r0, [r5, 0x5] + lsls r0, 25 + lsrs r4, r0, 27 + b _0804035C +_080400DE: + ldr r0, [r5, 0x4] + lsls r0, 12 + lsrs r4, r0, 27 + b _0804035C +_080400E6: + ldrh r0, [r5, 0x6] + lsls r0, 23 + lsrs r4, r0, 27 + b _0804035C +_080400EE: + ldrb r0, [r5, 0x7] + lsls r0, 26 + lsrs r4, r0, 27 + b _0804035C +_080400F6: + ldrb r0, [r5, 0x7] + b _08040154 +_080400FA: + ldrb r0, [r5, 0x7] + lsrs r4, r0, 7 + b _0804035C +_08040100: + ldrb r0, [r5, 0x8] + lsls r0, 29 + lsrs r4, r0, 29 + b _0804035C +_08040108: + ldrb r0, [r5, 0x8] + lsls r0, 26 + lsrs r4, r0, 29 + b _0804035C +_08040110: + ldrh r0, [r5, 0x8] + lsls r0, 23 + lsrs r4, r0, 29 + b _0804035C +_08040118: + ldrb r0, [r5, 0x9] + lsls r0, 28 + lsrs r4, r0, 29 + b _0804035C +_08040120: + ldrb r0, [r5, 0x9] + lsls r0, 25 + lsrs r4, r0, 29 + b _0804035C +_08040128: + ldrb r0, [r5, 0x9] + lsrs r4, r0, 7 + b _0804035C +_0804012E: + ldrb r0, [r5, 0xA] + b _08040162 +_08040132: + ldrb r0, [r5, 0xA] + b _0804016A +_08040136: + ldrb r0, [r5, 0xA] + b _08040172 +_0804013A: + ldrb r0, [r5, 0xA] + lsls r0, 28 + lsrs r4, r0, 31 + b _0804035C +_08040142: + ldrb r0, [r5, 0xA] + lsls r0, 27 + lsrs r4, r0, 31 + b _0804035C +_0804014A: + ldrb r0, [r5, 0xA] + lsls r0, 26 + lsrs r4, r0, 31 + b _0804035C +_08040152: + ldrb r0, [r5, 0xA] +_08040154: + lsls r0, 25 + lsrs r4, r0, 31 + b _0804035C +_0804015A: + ldrb r0, [r5, 0xA] + lsrs r4, r0, 7 + b _0804035C +_08040160: + ldrb r0, [r5, 0xB] +_08040162: + lsls r0, 31 + lsrs r4, r0, 31 + b _0804035C +_08040168: + ldrb r0, [r5, 0xB] +_0804016A: + lsls r0, 30 + lsrs r4, r0, 31 + b _0804035C +_08040170: + ldrb r0, [r5, 0xB] +_08040172: + lsls r0, 29 + lsrs r4, r0, 31 + b _0804035C +_08040178: + ldrb r0, [r5, 0xB] +_0804017A: + lsls r0, 25 + lsrs r4, r0, 28 + b _0804035C +_08040180: + ldrb r0, [r5, 0xB] + lsrs r4, r0, 7 + b _0804035C +_08040186: + mov r0, r9 + ldrh r4, [r0] + cmp r4, 0 + bne _08040190 + b _0804035C +_08040190: + ldrb r0, [r5, 0x7] + lsls r0, 25 + cmp r0, 0 + blt _080401A6 + mov r2, r8 + ldrb r1, [r2, 0x13] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080401A6 + b _0804035C +_080401A6: + movs r4, 0xCE + lsls r4, 1 + b _0804035C +_080401AC: + ldrb r0, [r5, 0x4] + lsls r0, 27 + lsrs r4, r0, 27 + ldrh r1, [r5, 0x4] + movs r0, 0xF8 + lsls r0, 2 + ands r0, r1 + orrs r4, r0 + ldrb r0, [r5, 0x5] + lsls r0, 25 + lsrs r0, 27 + lsls r0, 10 + orrs r4, r0 + ldr r0, [r5, 0x4] + movs r1, 0xF8 + lsls r1, 12 + ands r0, r1 + orrs r4, r0 + ldrh r0, [r5, 0x6] + lsls r0, 23 + lsrs r0, 27 + lsls r0, 20 + orrs r4, r0 + ldrb r0, [r5, 0x7] + lsls r0, 26 + lsrs r0, 27 + lsls r0, 25 + orrs r4, r0 + b _0804035C +_080401E6: + mov r1, r9 + ldrh r0, [r1] + cmp r0, 0 + bne _080401F0 + b _0804035C +_080401F0: + ldrb r0, [r5, 0x7] + lsls r0, 25 + cmp r0, 0 + bge _080401FA + b _0804035C +_080401FA: + ldrh r0, [r6] + ldr r1, _08040238 @ =0x00000163 + cmp r0, r1 + bne _08040204 + b _0804035C +_08040204: + mov r2, r10 + ldrh r5, [r2] + adds r7, r1, 0 + adds r2, r6, 0 + ldr r1, _0804023C @ =gUnknown_825E45C +_0804020E: + ldrh r3, [r2] + cmp r5, r3 + beq _08040228 + mov r6, r10 + ldrh r0, [r6, 0x2] + cmp r0, r3 + beq _08040228 + ldrh r0, [r6, 0x4] + cmp r0, r3 + beq _08040228 + ldrh r0, [r6, 0x6] + cmp r0, r3 + bne _0804022C +_08040228: + ldr r0, [r1] + orrs r4, r0 +_0804022C: + adds r2, 0x2 + adds r1, 0x4 + ldrh r0, [r2] + cmp r0, r7 + bne _0804020E + b _0804035C + .align 2, 0 +_08040238: .4byte 0x00000163 +_0804023C: .4byte gUnknown_825E45C +_08040240: + movs r4, 0 + mov r1, r9 + ldrh r0, [r1] + cmp r0, 0 + bne _0804024C + b _0804035C +_0804024C: + ldrb r0, [r5, 0x7] + lsls r0, 25 + cmp r0, 0 + bge _08040256 + b _0804035C +_08040256: + ldrb r0, [r5, 0x8] + lsls r1, r0, 29 + lsrs r4, r1, 29 + lsls r0, 26 + lsrs r0, 29 + adds r4, r0 + ldrh r0, [r5, 0x8] + lsls r0, 23 + lsrs r0, 29 + adds r4, r0 + ldrb r1, [r5, 0x9] + lsls r0, r1, 28 + lsrs r0, 29 + adds r4, r0 + lsls r0, r1, 25 + lsrs r0, 29 + adds r4, r0 + lsrs r1, 7 + adds r4, r1 + ldrb r1, [r5, 0xA] + lsls r0, r1, 31 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 30 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 29 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 28 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 27 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 26 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 25 + lsrs r0, 31 + adds r4, r0 + lsrs r1, 7 + adds r4, r1 + ldrb r1, [r5, 0xB] + lsls r0, r1, 31 + lsrs r0, 31 + adds r4, r0 + lsls r0, r1, 30 + lsrs r0, 31 + adds r4, r0 + lsls r1, 29 + lsrs r1, 31 + adds r4, r1 + b _0804035C +_080402C2: + movs r4, 0 + mov r2, r9 + ldrh r0, [r2] + cmp r0, 0 + beq _0804035C + ldrb r0, [r5, 0x7] + lsls r0, 25 + cmp r0, 0 + blt _0804035C + ldrb r2, [r5, 0x9] + lsrs r4, r2, 7 + ldrb r1, [r5, 0x8] + lsls r0, r1, 29 + lsrs r0, 28 + orrs r4, r0 + lsls r1, 26 + lsrs r1, 29 + lsls r1, 4 + orrs r4, r1 + ldrh r0, [r5, 0x8] + lsls r0, 23 + lsrs r0, 29 + lsls r0, 7 + orrs r4, r0 + lsls r0, r2, 28 + lsrs r0, 29 + lsls r0, 10 + orrs r4, r0 + lsls r2, 25 + lsrs r2, 29 + lsls r2, 13 + orrs r4, r2 + ldrb r1, [r5, 0xA] + lsls r0, r1, 31 + lsrs r0, 31 + lsls r0, 16 + orrs r4, r0 + lsls r0, r1, 30 + lsrs r0, 31 + lsls r0, 17 + orrs r4, r0 + lsls r0, r1, 29 + lsrs r0, 31 + lsls r0, 18 + orrs r4, r0 + lsls r0, r1, 28 + lsrs r0, 31 + lsls r0, 19 + orrs r4, r0 + lsls r0, r1, 27 + lsrs r0, 31 + lsls r0, 20 + orrs r4, r0 + lsls r0, r1, 26 + lsrs r0, 31 + lsls r0, 21 + orrs r4, r0 + lsls r0, r1, 25 + lsrs r0, 31 + lsls r0, 22 + orrs r4, r0 + lsrs r1, 7 + lsls r1, 23 + orrs r4, r1 + ldrb r1, [r5, 0xB] + lsls r0, r1, 31 + lsrs r0, 31 + lsls r0, 24 + orrs r4, r0 + lsls r0, r1, 30 + lsrs r0, 31 + lsls r0, 25 + orrs r4, r0 + lsls r1, 29 + lsrs r1, 31 + lsls r1, 26 + orrs r4, r1 +_0804035C: + ldr r6, [sp] + cmp r6, 0xA + ble _08040368 + mov r0, r8 + bl sub_803F8F8 +_08040368: + adds r0, r4, 0 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_803FD44 + + thumb_func_start sub_804037C +sub_804037C: @ 804037C + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + subs r0, 0x37 + cmp r0, 0x21 + bls _0804038C + b _080404C0 +_0804038C: + lsls r0, 2 + ldr r1, _08040398 @ =_0804039C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08040398: .4byte _0804039C + .align 2, 0 +_0804039C: + .4byte _08040424 + .4byte _0804043C + .4byte _08040446 + .4byte _08040456 + .4byte _08040466 + .4byte _08040476 + .4byte _08040486 + .4byte _08040496 + .4byte _080404A6 + .4byte _080404B6 + .4byte _080404C8 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _080404C0 + .4byte _08040466 + .4byte _08040476 + .4byte _08040486 + .4byte _08040496 + .4byte _080404A6 +_08040424: + ldrb r1, [r2] + ldrb r0, [r2, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r3, 0x50] + b _080404C8 +_0804043C: + ldrb r1, [r2] + adds r0, r3, 0 + adds r0, 0x54 + strb r1, [r0] + b _080404C8 +_08040446: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x56 + strh r0, [r1] + b _080404C8 +_08040456: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x58 + strh r0, [r1] + b _080404C8 +_08040466: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x5A + strh r0, [r1] + b _080404C8 +_08040476: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x5C + strh r0, [r1] + b _080404C8 +_08040486: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x5E + strh r0, [r1] + b _080404C8 +_08040496: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x60 + strh r0, [r1] + b _080404C8 +_080404A6: + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x62 + strh r0, [r1] + b _080404C8 +_080404B6: + ldrb r1, [r2] + adds r0, r3, 0 + adds r0, 0x55 + strb r1, [r0] + b _080404C8 +_080404C0: + adds r0, r3, 0 + adds r1, r4, 0 + bl sub_80404D0 +_080404C8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804037C + + thumb_func_start sub_80404D0 +sub_80404D0: @ 80404D0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + mov r10, r1 + adds r4, r2, 0 + movs r0, 0 + mov r8, r0 + mov r9, r0 + movs r6, 0 + movs r5, 0 + cmp r1, 0xA + ble _08040550 + ldr r1, [r7] + adds r0, r7, 0 + movs r2, 0 + bl sub_803F940 + mov r8, r0 + ldr r1, [r7] + adds r0, r7, 0 + movs r2, 0x1 + bl sub_803F940 + mov r9, r0 + ldr r1, [r7] + adds r0, r7, 0 + movs r2, 0x2 + bl sub_803F940 + adds r6, r0, 0 + ldr r1, [r7] + adds r0, r7, 0 + movs r2, 0x3 + bl sub_803F940 + adds r5, r0, 0 + adds r0, r7, 0 + bl sub_803F91C + adds r0, r7, 0 + bl sub_803E3E8 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r7, 0x1C] + cmp r0, r1 + beq _08040550 + ldrb r0, [r7, 0x13] + movs r1, 0x1 + orrs r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r7, 0x13] + ldrb r0, [r5, 0x7] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x7] + adds r0, r7, 0 + bl sub_803F8F8 + b _08040AEE +_08040550: + mov r0, r10 + cmp r0, 0x50 + bls _08040558 + b _08040ADA +_08040558: + lsls r0, 2 + ldr r1, _08040564 @ =_08040568 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08040564: .4byte _08040568 + .align 2, 0 +_08040568: + .4byte _080406AC + .4byte _080406C4 + .4byte _080406DC + .4byte _080406F2 + .4byte _080406F8 + .4byte _08040708 + .4byte _0804071A + .4byte _0804072C + .4byte _08040742 + .4byte _08040748 + .4byte _08040754 + .4byte _08040760 + .4byte _08040780 + .4byte _080407B8 + .4byte _080407B8 + .4byte _080407B8 + .4byte _080407B8 + .4byte _080407CC + .4byte _080407CC + .4byte _080407CC + .4byte _080407CC + .4byte _080407A8 + .4byte _080407FC + .4byte _08040802 + .4byte _08040808 + .4byte _0804078E + .4byte _080407D8 + .4byte _080407DE + .4byte _080407E4 + .4byte _080407EA + .4byte _080407F0 + .4byte _080407F6 + .4byte _080407B0 + .4byte _0804080E + .4byte _08040820 + .4byte _08040826 + .4byte _0804082C + .4byte _08040840 + .4byte _08040858 + .4byte _0804087E + .4byte _08040892 + .4byte _080408AC + .4byte _080408C2 + .4byte _080408DC + .4byte _080408F4 + .4byte _08040908 + .4byte _08040938 + .4byte _08040814 + .4byte _0804081A + .4byte _0804086E + .4byte _08040948 + .4byte _08040956 + .4byte _0804096C + .4byte _08040984 + .4byte _08040994 + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040ADA + .4byte _08040A92 + .4byte _080409AA + .4byte _080409BA + .4byte _080409C8 + .4byte _080409D8 + .4byte _080409E8 + .4byte _080409F8 + .4byte _08040A08 + .4byte _08040A18 + .4byte _08040A2E + .4byte _08040A3E + .4byte _08040A4C + .4byte _08040A5C + .4byte _08040A6C + .4byte _08040A82 +_080406AC: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r4, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r4, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r7] + b _08040ADA +_080406C4: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r4, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r4, 0x3] + lsls r0, 24 + adds r1, r0 + str r1, [r7, 0x4] + b _08040ADA +_080406DC: + movs r2, 0 + adds r3, r7, 0 + adds r3, 0x8 +_080406E2: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x9 + ble _080406E2 + b _08040ADA +_080406F2: + ldrb r0, [r4] + strb r0, [r7, 0x12] + b _08040ADA +_080406F8: + ldrb r0, [r4] + movs r1, 0x1 + ands r1, r0 + ldrb r2, [r7, 0x13] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + b _08040926 +_08040708: + ldrb r0, [r4] + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r7, 0x13] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + b _08040926 +_0804071A: + ldrb r0, [r4] + movs r1, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x13] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + b _08040926 +_0804072C: + movs r2, 0 + adds r3, r7, 0 + adds r3, 0x14 +_08040732: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x6 + ble _08040732 + b _08040ADA +_08040742: + ldrb r0, [r4] + strb r0, [r7, 0x1B] + b _08040ADA +_08040748: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + strh r1, [r7, 0x1C] + b _08040ADA +_08040754: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + strh r1, [r7, 0x1E] + b _08040ADA +_08040760: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + mov r0, r8 + strh r1, [r0] + lsls r1, 16 + cmp r1, 0 + beq _08040778 + ldrb r0, [r7, 0x13] + movs r1, 0x2 + b _08040926 +_08040778: + ldrb r1, [r7, 0x13] + movs r0, 0x3 + negs r0, r0 + b _08040932 +_08040780: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + mov r0, r8 + strh r1, [r0, 0x2] + b _08040ADA +_0804078E: + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r4, 0x2] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r4, 0x3] + lsls r0, 24 + adds r1, r0 + mov r0, r8 + str r1, [r0, 0x4] + b _08040ADA +_080407A8: + ldrb r0, [r4] + mov r1, r8 + strb r0, [r1, 0x8] + b _08040ADA +_080407B0: + ldrb r0, [r4] + mov r1, r8 + strb r0, [r1, 0x9] + b _08040ADA +_080407B8: + mov r2, r10 + subs r2, 0xD + lsls r2, 1 + add r2, r9 + ldrb r1, [r4] + ldrb r0, [r4, 0x1] + lsls r0, 8 + adds r1, r0 + strh r1, [r2] + b _08040ADA +_080407CC: + mov r0, r9 + add r0, r10 + subs r0, 0x9 + ldrb r1, [r4] + strb r1, [r0] + b _08040ADA +_080407D8: + ldrb r0, [r4] + strb r0, [r6] + b _08040ADA +_080407DE: + ldrb r0, [r4] + strb r0, [r6, 0x1] + b _08040ADA +_080407E4: + ldrb r0, [r4] + strb r0, [r6, 0x2] + b _08040ADA +_080407EA: + ldrb r0, [r4] + strb r0, [r6, 0x3] + b _08040ADA +_080407F0: + ldrb r0, [r4] + strb r0, [r6, 0x4] + b _08040ADA +_080407F6: + ldrb r0, [r4] + strb r0, [r6, 0x5] + b _08040ADA +_080407FC: + ldrb r0, [r4] + strb r0, [r6, 0x6] + b _08040ADA +_08040802: + ldrb r0, [r4] + strb r0, [r6, 0x7] + b _08040ADA +_08040808: + ldrb r0, [r4] + strb r0, [r6, 0x8] + b _08040ADA +_0804080E: + ldrb r0, [r4] + strb r0, [r6, 0x9] + b _08040ADA +_08040814: + ldrb r0, [r4] + strb r0, [r6, 0xA] + b _08040ADA +_0804081A: + ldrb r0, [r4] + strb r0, [r6, 0xB] + b _08040ADA +_08040820: + ldrb r0, [r4] + strb r0, [r5] + b _08040ADA +_08040826: + ldrb r0, [r4] + strb r0, [r5, 0x1] + b _08040ADA +_0804082C: + ldrb r1, [r4] + movs r0, 0x7F + ands r1, r0 + ldrb r2, [r5, 0x2] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x2] + b _08040ADA +_08040840: + ldrb r1, [r4] + movs r0, 0xF + ands r1, r0 + lsls r1, 7 + ldrh r2, [r5, 0x2] + ldr r0, _08040854 @ =0xfffff87f + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x2] + b _08040ADA + .align 2, 0 +_08040854: .4byte 0xfffff87f +_08040858: + ldrb r1, [r4] + movs r0, 0xF + ands r1, r0 + lsls r1, 3 + ldrb r2, [r5, 0x3] + movs r0, 0x79 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] + b _08040ADA +_0804086E: + ldrb r0, [r4] + lsls r0, 7 + ldrb r2, [r5, 0x3] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x3] + b _08040ADA +_0804087E: + ldrb r1, [r4] + movs r0, 0x1F + ands r1, r0 + ldrb r2, [r5, 0x4] + movs r0, 0x20 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x4] + b _08040ADA +_08040892: + ldrb r1, [r4] + movs r0, 0x1F + ands r1, r0 + lsls r1, 5 + ldrh r2, [r5, 0x4] + ldr r0, _080408A8 @ =0xfffffc1f + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + b _08040ADA + .align 2, 0 +_080408A8: .4byte 0xfffffc1f +_080408AC: + ldrb r1, [r4] + movs r0, 0x1F + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0x7D + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _08040ADA +_080408C2: + ldrb r2, [r4] + movs r0, 0x1F + ands r2, r0 + lsls r2, 15 + ldr r0, [r5, 0x4] + ldr r1, _080408D8 @ =0xfff07fff + ands r0, r1 + orrs r0, r2 + str r0, [r5, 0x4] + b _08040ADA + .align 2, 0 +_080408D8: .4byte 0xfff07fff +_080408DC: + ldrb r1, [r4] + movs r0, 0x1F + ands r1, r0 + lsls r1, 4 + ldrh r2, [r5, 0x6] + ldr r0, _080408F0 @ =0xfffffe0f + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x6] + b _08040ADA + .align 2, 0 +_080408F0: .4byte 0xfffffe0f +_080408F4: + ldrb r1, [r4] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r5, 0x7] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + b _08040AD8 +_08040908: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 6 + ldrb r2, [r5, 0x7] + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x7] + lsls r0, 25 + cmp r0, 0 + bge _0804092C + ldrb r0, [r7, 0x13] + movs r1, 0x4 +_08040926: + orrs r0, r1 + strb r0, [r7, 0x13] + b _08040ADA +_0804092C: + ldrb r1, [r7, 0x13] + movs r0, 0x5 + negs r0, r0 +_08040932: + ands r0, r1 + strb r0, [r7, 0x13] + b _08040ADA +_08040938: + ldrb r0, [r4] + lsls r0, 7 + ldrb r2, [r5, 0x7] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x7] + b _08040ADA +_08040948: + ldrb r1, [r4] + movs r0, 0x7 + ands r1, r0 + ldrb r2, [r5, 0x8] + movs r0, 0x8 + negs r0, r0 + b _08040964 +_08040956: + ldrb r1, [r4] + movs r0, 0x7 + ands r1, r0 + lsls r1, 3 + ldrb r2, [r5, 0x8] + movs r0, 0x39 + negs r0, r0 +_08040964: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x8] + b _08040ADA +_0804096C: + ldrb r1, [r4] + movs r0, 0x7 + ands r1, r0 + lsls r1, 6 + ldrh r2, [r5, 0x8] + ldr r0, _08040980 @ =0xfffffe3f + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x8] + b _08040ADA + .align 2, 0 +_08040980: .4byte 0xfffffe3f +_08040984: + ldrb r1, [r4] + movs r0, 0x7 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r5, 0x9] + movs r0, 0xF + negs r0, r0 + b _080409A2 +_08040994: + ldrb r1, [r4] + movs r0, 0x7 + ands r1, r0 + lsls r1, 4 + ldrb r2, [r5, 0x9] + movs r0, 0x71 + negs r0, r0 +_080409A2: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x9] + b _08040ADA +_080409AA: + ldrb r0, [r4] + lsls r0, 7 + ldrb r2, [r5, 0x9] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x9] + b _08040ADA +_080409BA: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + ldrb r2, [r5, 0xA] + movs r0, 0x2 + negs r0, r0 + b _08040A26 +_080409C8: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r5, 0xA] + movs r0, 0x3 + negs r0, r0 + b _08040A26 +_080409D8: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0xA] + movs r0, 0x5 + negs r0, r0 + b _08040A26 +_080409E8: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 3 + ldrb r2, [r5, 0xA] + movs r0, 0x9 + negs r0, r0 + b _08040A26 +_080409F8: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 4 + ldrb r2, [r5, 0xA] + movs r0, 0x11 + negs r0, r0 + b _08040A26 +_08040A08: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 5 + ldrb r2, [r5, 0xA] + movs r0, 0x21 + negs r0, r0 + b _08040A26 +_08040A18: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 6 + ldrb r2, [r5, 0xA] + movs r0, 0x41 + negs r0, r0 +_08040A26: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0xA] + b _08040ADA +_08040A2E: + ldrb r0, [r4] + lsls r0, 7 + ldrb r2, [r5, 0xA] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0xA] + b _08040ADA +_08040A3E: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + ldrb r2, [r5, 0xB] + movs r0, 0x2 + negs r0, r0 + b _08040A7A +_08040A4C: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r5, 0xB] + movs r0, 0x3 + negs r0, r0 + b _08040A7A +_08040A5C: + ldrb r1, [r4] + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0xB] + movs r0, 0x5 + negs r0, r0 + b _08040A7A +_08040A6C: + ldrb r1, [r4] + movs r0, 0xF + ands r1, r0 + lsls r1, 3 + ldrb r2, [r5, 0xB] + movs r0, 0x79 + negs r0, r0 +_08040A7A: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0xB] + b _08040ADA +_08040A82: + ldrb r0, [r4] + lsls r0, 7 + ldrb r2, [r5, 0xB] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0xB] + b _08040ADA +_08040A92: + ldrb r1, [r4] + movs r4, 0x1F + adds r2, r1, 0 + ands r2, r4 + ldrb r3, [r5, 0x4] + movs r0, 0x20 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, 0x4] + lsrs r1, 5 + ands r1, r4 + lsls r1, 5 + ldrh r2, [r5, 0x4] + ldr r0, _08040AFC @ =0xfffffc1f + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldrb r1, [r5, 0x5] + movs r0, 0x7D + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x5] + ldr r0, [r5, 0x4] + ldr r1, _08040B00 @ =0xfff07fff + ands r0, r1 + str r0, [r5, 0x4] + ldrh r1, [r5, 0x6] + ldr r0, _08040B04 @ =0xfffffe0f + ands r0, r1 + strh r0, [r5, 0x6] + ldrb r1, [r5, 0x7] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 +_08040AD8: + strb r0, [r5, 0x7] +_08040ADA: + mov r0, r10 + cmp r0, 0xA + ble _08040AEE + adds r0, r7, 0 + bl sub_803E3E8 + strh r0, [r7, 0x1C] + adds r0, r7, 0 + bl sub_803F8F8 +_08040AEE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08040AFC: .4byte 0xfffffc1f +_08040B00: .4byte 0xfff07fff +_08040B04: .4byte 0xfffffe0f + thumb_func_end sub_80404D0 + + thumb_func_start sub_8040B08 +sub_8040B08: @ 8040B08 + push {lr} + bl memcpy + pop {r0} + bx r0 + thumb_func_end sub_8040B08 + + thumb_func_start sub_8040B14 +sub_8040B14: @ 8040B14 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r4, _08040B40 @ =gUnknown_300500C + ldr r2, [r4] + movs r1, 0x7 + bl sub_804037C + ldr r2, [r4] + adds r2, 0x8 + adds r0, r6, 0 + movs r1, 0x31 + bl sub_804037C + ldr r2, [r4] + adds r2, 0xA + adds r0, r6, 0 + movs r1, 0x1 + bl sub_804037C + movs r5, 0 + b _08040B46 + .align 2, 0 +_08040B40: .4byte gUnknown_300500C +_08040B44: + adds r5, 0x1 +_08040B46: + cmp r5, 0x5 + bgt _08040B80 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08040B78 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08040B44 + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0x64 + bl sub_8040B08 + ldr r1, _08040B7C @ =gUnknown_2024029 + adds r0, r5, 0x1 + strb r0, [r1] + movs r0, 0 + b _08040B8A + .align 2, 0 +_08040B78: .4byte gUnknown_2024284 +_08040B7C: .4byte gUnknown_2024029 +_08040B80: + adds r0, r6, 0 + bl sub_8040B90 + lsls r0, 24 + lsrs r0, 24 +_08040B8A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8040B14 + + thumb_func_start sub_8040B90 +sub_8040B90: @ 8040B90 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + ldr r0, _08040C04 @ =0x00004037 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_80CC79C + bl sub_808B9F4 + lsls r0, 24 + lsrs r5, r0, 24 +_08040BAE: + movs r6, 0 + lsls r7, r5, 24 +_08040BB2: + lsls r1, r6, 24 + lsrs r1, 24 + lsrs r0, r7, 24 + bl sub_808BD30 + adds r4, r0, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FD44 + cmp r0, 0 + bne _08040C14 + mov r0, r8 + bl sub_80442D8 + adds r0, r4, 0 + mov r1, r8 + movs r2, 0x50 + bl sub_8040B08 + ldr r0, _08040C08 @ =gUnknown_20370D6 + strh r5, [r0] + ldr r0, _08040C0C @ =gUnknown_20370D8 + strh r6, [r0] + bl sub_80CC7A8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r5 + beq _08040BF4 + ldr r0, _08040C10 @ =0x00000843 + bl sub_806E6A8 +_08040BF4: + lsls r1, r5, 16 + ldr r0, _08040C04 @ =0x00004037 + lsrs r1, 16 + bl sub_806E584 + movs r0, 0x1 + b _08040C30 + .align 2, 0 +_08040C04: .4byte 0x00004037 +_08040C08: .4byte gUnknown_20370D6 +_08040C0C: .4byte gUnknown_20370D8 +_08040C10: .4byte 0x00000843 +_08040C14: + adds r6, 0x1 + cmp r6, 0x1D + ble _08040BB2 + adds r5, 0x1 + cmp r5, 0xE + bne _08040C22 + movs r5, 0 +_08040C22: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + bne _08040BAE + movs r0, 0x2 +_08040C30: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8040B90 + + thumb_func_start sub_8040C3C +sub_8040C3C: @ 8040C3C + push {r4,lr} + ldr r0, _08040C48 @ =gUnknown_2024029 + movs r1, 0 + strb r1, [r0] + b _08040C54 + .align 2, 0 +_08040C48: .4byte gUnknown_2024029 +_08040C4C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + adds r0, r4, 0 +_08040C54: + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0x5 + bhi _08040C72 + adds r1, r0, 0 + movs r0, 0x64 + muls r0, r1 + ldr r1, _08040C7C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08040C4C +_08040C72: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08040C7C: .4byte gUnknown_2024284 + thumb_func_end sub_8040C3C + + thumb_func_start sub_8040C80 +sub_8040C80: @ 8040C80 + push {r4,lr} + ldr r0, _08040C8C @ =gUnknown_202402A + movs r1, 0 + strb r1, [r0] + b _08040C98 + .align 2, 0 +_08040C8C: .4byte gUnknown_202402A +_08040C90: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + adds r0, r4, 0 +_08040C98: + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0x5 + bhi _08040CB6 + adds r1, r0, 0 + movs r0, 0x64 + muls r0, r1 + ldr r1, _08040CC0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08040C90 +_08040CB6: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08040CC0: .4byte gUnknown_202402C + thumb_func_end sub_8040C80 + + thumb_func_start sub_8040CC4 +sub_8040CC4: @ 8040CC4 + push {r4-r6,lr} + movs r6, 0 + bl sub_8040C3C + ldr r1, _08040D30 @ =gUnknown_2024029 + ldrb r0, [r1] + cmp r0, 0x1 + beq _08040D28 + movs r5, 0 + ldrb r1, [r1] + cmp r6, r1 + bge _08040D20 +_08040CDC: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08040D34 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _08040D16 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _08040D16 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _08040D16 + adds r6, 0x1 +_08040D16: + adds r5, 0x1 + ldr r0, _08040D30 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r5, r0 + blt _08040CDC +_08040D20: + movs r0, 0 + cmp r6, 0x1 + bgt _08040D28 + movs r0, 0x2 +_08040D28: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08040D30: .4byte gUnknown_2024029 +_08040D34: .4byte gUnknown_2024284 + thumb_func_end sub_8040CC4 + + thumb_func_start sub_8040D38 +sub_8040D38: @ 8040D38 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 24 + cmp r1, 0 + beq _08040D5C + ldr r2, _08040D54 @ =gUnknown_2023D6A + ldr r1, _08040D58 @ =gUnknown_8254784 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x17] + b _08040D6A + .align 2, 0 +_08040D54: .4byte gUnknown_2023D6A +_08040D58: .4byte gUnknown_8254784 +_08040D5C: + ldr r2, _08040D74 @ =gUnknown_2023D6A + ldr r1, _08040D78 @ =gUnknown_8254784 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x16] +_08040D6A: + strb r0, [r2] + ldrb r0, [r2] + pop {r1} + bx r1 + .align 2, 0 +_08040D74: .4byte gUnknown_2023D6A +_08040D78: .4byte gUnknown_8254784 + thumb_func_end sub_8040D38 + + thumb_func_start sub_8040D7C +sub_8040D7C: @ 8040D7C + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x2E + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8040D38 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8040D7C + + thumb_func_start sub_8040DB0 +sub_8040DB0: @ 8040DB0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r5, r0, 0 + bl sub_803DA34 + ldr r4, _08040ED8 @ =gUnknown_2023FF4 + ldr r0, [r4] + ldr r0, [r0] + adds r1, r5, 0 + movs r2, 0xA0 + bl memcpy + movs r0, 0 + mov r9, r0 +_08040DD4: + ldr r1, _08040ED8 @ =gUnknown_2023FF4 + ldr r3, [r1] + ldr r2, [r3] + mov r4, r9 + lsls r7, r4, 1 + adds r0, r2, 0 + adds r0, 0x7C + adds r1, r0, r7 + ldrh r0, [r1] + adds r4, 0x1 + str r4, [sp, 0x10] + cmp r0, 0 + beq _08040EAE + movs r0, 0x64 + mov r6, r9 + muls r6, r0 + ldr r4, _08040EDC @ =gUnknown_202402C + mov r8, r4 + adds r5, r6, r4 + ldrh r1, [r1] + adds r0, r2, 0 + adds r0, 0x94 + add r0, r9 + ldrb r2, [r0] + movs r0, 0x1 + str r0, [sp] + ldr r0, [r3] + mov r3, r9 + lsls r4, r3, 2 + adds r0, 0x34 + adds r0, r4 + ldr r0, [r0] + str r0, [sp, 0x4] + movs r0, 0x2 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r3, 0xF + bl sub_803DA54 + ldr r1, _08040ED8 @ =gUnknown_2023FF4 + ldr r0, [r1] + adds r1, r7, 0 + adds r1, 0x88 + ldr r2, [r0] + adds r2, r1 + adds r0, r5, 0 + movs r1, 0xC + bl sub_804037C + movs r5, 0 + mov r10, r4 + mov r7, r9 + adds r7, 0x9A + mov r4, r8 +_08040E44: + adds r1, r5, 0 + adds r1, 0x1A + ldr r2, _08040ED8 @ =gUnknown_2023FF4 + ldr r0, [r2] + ldr r2, [r0] + adds r2, r7 + adds r0, r6, r4 + bl sub_804037C + adds r5, 0x1 + cmp r5, 0x5 + ble _08040E44 + movs r5, 0 + movs r3, 0x64 + mov r0, r9 + muls r0, r3 + ldr r1, _08040EDC @ =gUnknown_202402C + adds r7, r0, r1 + mov r4, r10 + lsls r0, r4, 1 + adds r6, r0, 0 + adds r6, 0x4C + adds r4, r0, 0 +_08040E72: + adds r1, r5, 0 + adds r1, 0xD + ldr r2, _08040ED8 @ =gUnknown_2023FF4 + ldr r0, [r2] + ldr r2, [r0] + adds r2, r6 + adds r0, r7, 0 + bl sub_804037C + adds r1, r5, 0 + adds r1, 0x11 + ldr r3, _08040ED8 @ =gUnknown_2023FF4 + ldr r0, [r3] + ldr r0, [r0] + adds r0, 0x4C + adds r0, r4 + ldrh r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + ldr r0, _08040EE0 @ =gUnknown_8250C08 + adds r2, r0 + adds r0, r7, 0 + bl sub_804037C + adds r6, 0x2 + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08040E72 +_08040EAE: + ldr r4, [sp, 0x10] + mov r9, r4 + cmp r4, 0x5 + ble _08040DD4 + ldr r1, _08040EE4 @ =gUnknown_2022B4C + movs r0, 0x8 + str r0, [r1] + ldr r1, _08040EE8 @ =gUnknown_20386AE + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + strh r0, [r1] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08040ED8: .4byte gUnknown_2023FF4 +_08040EDC: .4byte gUnknown_202402C +_08040EE0: .4byte gUnknown_8250C08 +_08040EE4: .4byte gUnknown_2022B4C +_08040EE8: .4byte gUnknown_20386AE + thumb_func_end sub_8040DB0 + + thumb_func_start sub_8040EEC +sub_8040EEC: @ 8040EEC + push {r4,r5,lr} + ldr r5, _08040F20 @ =gUnknown_825DFE0 + ldr r0, _08040F24 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r4, [r0] + ldrb r0, [r4, 0x9] + movs r1, 0x5 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4, 0x1] + lsls r2, 27 + lsrs r2, 31 + lsls r1, r2, 2 + adds r1, r2 + adds r0, r1 + adds r0, r5 + ldrb r0, [r0] + ldr r1, _08040F28 @ =gUnknown_82538A8 + adds r0, r1 + ldrb r0, [r0] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08040F20: .4byte gUnknown_825DFE0 +_08040F24: .4byte gUnknown_2023FF4 +_08040F28: .4byte gUnknown_82538A8 + thumb_func_end sub_8040EEC + + thumb_func_start sub_8040F2C +sub_8040F2C: @ 8040F2C + push {r4,r5,lr} + ldr r5, _08040F60 @ =gUnknown_825DFE0 + ldr r0, _08040F64 @ =gUnknown_2023FF4 + ldr r0, [r0] + ldr r4, [r0] + ldrb r0, [r4, 0x9] + movs r1, 0x5 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4, 0x1] + lsls r2, 27 + lsrs r2, 31 + lsls r1, r2, 2 + adds r1, r2 + adds r0, r1 + adds r0, r5 + ldrb r0, [r0] + ldr r1, _08040F68 @ =gUnknown_825393E + adds r0, r1 + ldrb r0, [r0] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08040F60: .4byte gUnknown_825DFE0 +_08040F64: .4byte gUnknown_2023FF4 +_08040F68: .4byte gUnknown_825393E + thumb_func_end sub_8040F2C + + thumb_func_start sub_8040F6C +sub_8040F6C: @ 8040F6C + push {r4,lr} + movs r4, 0 +_08040F70: + movs r0, 0x64 + muls r0, r4 + ldr r1, _08040F88 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08040F8C + movs r0, 0 + b _08040F9A + .align 2, 0 +_08040F88: .4byte gUnknown_2024284 +_08040F8C: + adds r4, 0x1 + cmp r4, 0x5 + ble _08040F70 + bl sub_8040FA0 + lsls r0, 24 + lsrs r0, 24 +_08040F9A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8040F6C + + thumb_func_start sub_8040FA0 +sub_8040FA0: @ 8040FA0 + push {r4-r6,lr} + movs r6, 0 +_08040FA4: + movs r4, 0 + lsls r5, r6, 24 +_08040FA8: + lsls r1, r4, 24 + lsrs r1, 24 + lsrs r0, r5, 24 + movs r2, 0xB + bl sub_808BA18 + cmp r0, 0 + bne _08040FBC + movs r0, 0 + b _08040FCA +_08040FBC: + adds r4, 0x1 + cmp r4, 0x1D + ble _08040FA8 + adds r6, 0x1 + cmp r6, 0xD + ble _08040FA4 + movs r0, 0x1 +_08040FCA: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8040FA0 + + thumb_func_start sub_8040FD0 +sub_8040FD0: @ 8040FD0 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + movs r1, 0 + movs r0, 0xCE + lsls r0, 1 + mov r12, r0 + ldr r7, _08040FEC @ =gUnknown_8245EE0 + movs r0, 0xB + muls r0, r5 + adds r3, r0, r7 + adds r2, r6, 0 + b _08040FF6 + .align 2, 0 +_08040FEC: .4byte gUnknown_8245EE0 +_08040FF0: + adds r3, 0x1 + adds r2, 0x1 + adds r1, 0x1 +_08040FF6: + adds r4, r6, r1 + cmp r1, 0x9 + bgt _08041010 + cmp r5, r12 + bls _08041006 + adds r0, r1, r7 + ldrb r0, [r0] + b _08041008 +_08041006: + ldrb r0, [r3] +_08041008: + strb r0, [r2] + ldrb r0, [r4] + cmp r0, 0xFF + bne _08040FF0 +_08041010: + movs r0, 0xFF + strb r0, [r4] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8040FD0 + + thumb_func_start sub_804101C +sub_804101C: @ 804101C + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r2, 24 + lsrs r2, 24 + ldr r4, _0804105C @ =gUnknown_8250C04 + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r3, r4 + ldrb r4, [r3, 0x4] + ldr r0, _08041060 @ =gUnknown_825DEA1 + adds r0, r2, r0 + ldrb r3, [r0] + ands r3, r1 + lsls r2, 1 + asrs r3, r2 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + muls r0, r4 + movs r1, 0x64 + bl __divsi3 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0804105C: .4byte gUnknown_8250C04 +_08041060: .4byte gUnknown_825DEA1 + thumb_func_end sub_804101C + + thumb_func_start sub_8041064 +sub_8041064: @ 8041064 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + ldr r1, _0804109C @ =gUnknown_825DEA5 + adds r4, r1 + ldrb r1, [r4] + ands r1, r0 + mov r0, sp + strb r1, [r0] + adds r0, r5, 0 + movs r1, 0x15 + mov r2, sp + bl sub_804037C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804109C: .4byte gUnknown_825DEA5 + thumb_func_end sub_8041064 + + thumb_func_start sub_80410A0 +sub_80410A0: @ 80410A0 + lsls r1, 24 + lsrs r1, 24 + adds r0, 0x3B + ldr r2, _080410B4 @ =gUnknown_825DEA5 + adds r1, r2 + ldrb r2, [r0] + ldrb r1, [r1] + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_080410B4: .4byte gUnknown_825DEA5 + thumb_func_end sub_80410A0 + + thumb_func_start sub_80410B8 +sub_80410B8: @ 80410B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r0, 0x64 + mov r5, r9 + muls r5, r0 + ldr r0, _080413A4 @ =gUnknown_2024284 + adds r5, r0 + adds r0, r5, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + ldr r1, _080413A8 @ =gUnknown_2023BE4 + mov r8, r1 + movs r1, 0x58 + ldr r2, [sp, 0x14] + adds r4, r2, 0 + muls r4, r1 + mov r3, r8 + adds r6, r4, r3 + strh r0, [r6] + adds r0, r5, 0 + movs r1, 0xC + movs r2, 0 + bl sub_803FBE8 + strh r0, [r6, 0x2E] + movs r6, 0 + mov r0, r8 + adds r0, 0x24 + adds r7, r4, r0 +_0804110A: + adds r1, r6, 0 + adds r1, 0xD + adds r0, r5, 0 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xC + add r1, r8 + mov r10, r1 + adds r1, r4, r1 + strh r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r5, 0 + movs r2, 0 + bl sub_803FBE8 + strb r0, [r7] + adds r7, 0x1 + adds r4, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _0804110A + movs r0, 0x64 + mov r4, r9 + muls r4, r0 + ldr r0, _080413A4 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + movs r2, 0xC + negs r2, r2 + add r2, r10 + mov r9, r2 + movs r1, 0x58 + ldr r3, [sp, 0x14] + adds r5, r3, 0 + muls r5, r1 + adds r7, r5, r2 + adds r1, r7, 0 + adds r1, 0x3B + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + adds r1, r7, 0 + adds r1, 0x2B + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x19 + movs r2, 0 + bl sub_803FBE8 + mov r1, r10 + adds r1, 0x38 + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, 0 + movs r1, 0x27 + movs r2, 0 + bl sub_803FBE8 + movs r6, 0x1F + ands r0, r6 + ldrb r2, [r7, 0x14] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x14] + adds r0, r4, 0 + movs r1, 0x28 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0x1F + mov r8, r1 + mov r2, r8 + ands r0, r2 + lsls r0, 5 + ldrh r2, [r7, 0x14] + ldr r1, _080413AC @ =0xfffffc1f + ands r1, r2 + orrs r1, r0 + strh r1, [r7, 0x14] + adds r0, r4, 0 + movs r1, 0x29 + movs r2, 0 + bl sub_803FBE8 + ands r0, r6 + lsls r0, 2 + ldrb r2, [r7, 0x15] + movs r1, 0x7D + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x15] + adds r0, r4, 0 + movs r1, 0x2A + movs r2, 0 + bl sub_803FBE8 + movs r1, 0x1F + ands r1, r0 + lsls r1, 15 + ldr r0, [r7, 0x14] + ldr r2, _080413B0 @ =0xfff07fff + ands r0, r2 + orrs r0, r1 + str r0, [r7, 0x14] + adds r0, r4, 0 + movs r1, 0x2B + movs r2, 0 + bl sub_803FBE8 + mov r3, r8 + ands r0, r3 + lsls r0, 4 + ldrh r2, [r7, 0x16] + ldr r1, _080413B4 @ =0xfffffe0f + ands r1, r2 + orrs r1, r0 + strh r1, [r7, 0x16] + adds r0, r4, 0 + movs r1, 0x2C + movs r2, 0 + bl sub_803FBE8 + ands r0, r6 + lsls r0, 1 + ldrb r2, [r7, 0x17] + movs r1, 0x3F + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x17] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + mov r1, r10 + adds r1, 0x3C + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, 0 + movs r1, 0x37 + movs r2, 0 + bl sub_803FBE8 + mov r1, r10 + adds r1, 0x40 + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0x28] + adds r0, r4, 0 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0x2C] + adds r0, r4, 0 + movs r1, 0x3B + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + movs r2, 0 + bl sub_803FBE8 + strh r0, [r7, 0xA] + adds r0, r4, 0 + movs r1, 0x2D + movs r2, 0 + bl sub_803FBE8 + movs r1, 0x1 + ands r0, r1 + lsls r0, 6 + ldrb r2, [r7, 0x17] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x17] + adds r0, r4, 0 + movs r1, 0x2E + movs r2, 0 + bl sub_803FBE8 + lsls r0, 7 + ldrb r2, [r7, 0x17] + movs r1, 0x7F + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x17] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + mov r1, r10 + adds r1, 0x48 + adds r1, r5, r1 + str r0, [r1] + ldr r2, _080413B8 @ =gUnknown_8254784 + ldrh r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + adds r1, r7, 0 + adds r1, 0x21 + strb r0, [r1] + ldrh r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x7] + adds r1, r7, 0 + adds r1, 0x22 + strb r0, [r1] + ldrh r0, [r7] + ldrb r1, [r7, 0x17] + lsrs r1, 7 + bl sub_8040D38 + adds r1, r7, 0 + adds r1, 0x20 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + mov r0, r10 + adds r0, 0x24 + adds r0, r5, r0 + mov r1, sp + bl sub_8008CF4 + mov r2, r10 + adds r2, 0x30 + adds r2, r5, r2 + adds r0, r4, 0 + movs r1, 0x7 + bl sub_803FBE8 + ldr r0, [sp, 0x14] + bl sub_80751C4 + ldr r1, _080413BC @ =gUnknown_2023FE8 + lsls r0, 24 + lsrs r0, 23 + adds r0, 0xA8 + ldr r1, [r1] + adds r1, r0 + ldrh r0, [r7, 0x28] + strh r0, [r1] + movs r2, 0x6 + mov r1, r9 + movs r6, 0x7 + add r5, r10 + adds r0, r5, 0 + adds r0, 0x13 +_0804136E: + strb r2, [r0] + subs r0, 0x1 + subs r6, 0x1 + cmp r6, 0 + bge _0804136E + movs r2, 0 + movs r0, 0x58 + ldr r3, [sp, 0x14] + muls r0, r3 + adds r1, 0x50 + adds r0, r1 + str r2, [r0] + ldr r0, [sp, 0x14] + bl sub_80174B8 + ldr r0, [sp, 0x14] + movs r1, 0 + bl sub_803589C + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080413A4: .4byte gUnknown_2024284 +_080413A8: .4byte gUnknown_2023BE4 +_080413AC: .4byte 0xfffffc1f +_080413B0: .4byte 0xfff07fff +_080413B4: .4byte 0xfffffe0f +_080413B8: .4byte gUnknown_8254784 +_080413BC: .4byte gUnknown_2023FE8 + thumb_func_end sub_80410B8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s new file mode 100644 index 000000000..72aaad8e9 --- /dev/null +++ b/asm/pokemon_3.s @@ -0,0 +1,5693 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80423A4 +sub_80423A4: @ 80423A4 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r4, r2, 0 + lsls r3, 24 + lsrs r6, r3, 24 + movs r1, 0x37 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + str r1, [sp] + ands r0, r4 + cmp r0, 0 + beq _08042408 + mvns r4, r4 + ands r1, r4 + str r1, [sp] + adds r0, r5, 0 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + ldr r0, _080423FC @ =gUnknown_30030F0 + ldr r1, _08042400 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080423F6 + cmp r6, 0x4 + beq _080423F6 + ldr r0, _08042404 @ =gUnknown_2023BE4 + movs r1, 0x58 + muls r1, r6 + adds r0, 0x4C + adds r1, r0 + ldr r0, [r1] + ands r0, r4 + str r0, [r1] +_080423F6: + movs r0, 0 + b _0804240A + .align 2, 0 +_080423FC: .4byte gUnknown_30030F0 +_08042400: .4byte 0x00000439 +_08042404: .4byte gUnknown_2023BE4 +_08042408: + movs r0, 0x1 +_0804240A: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80423A4 + + thumb_func_start sub_8042414 +sub_8042414: @ 8042414 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x4] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x8] + movs r0, 0x1 + str r0, [sp, 0x10] + movs r1, 0x6 + mov r10, r1 + movs r2, 0 + str r2, [sp, 0x18] + movs r0, 0x4 + str r0, [sp, 0x1C] + mov r0, r8 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + beq _08042458 + bl sub_809A924 +_08042458: + ldr r1, _080424B0 @ =gUnknown_2023D6F + ldr r0, _080424B4 @ =gUnknown_2024004 + ldrb r2, [r0] + strb r2, [r1] + ldr r0, _080424B8 @ =gUnknown_30030F0 + ldr r1, _080424BC @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080424F8 + ldr r0, _080424C0 @ =gUnknown_2023BC4 + strb r2, [r0] + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0xC] + ldr r0, _080424C4 @ =gUnknown_2023BCC + ldr r4, [sp] + subs r4, 0xD + ldrb r0, [r0] + cmp r1, r0 + bge _08042504 + ldr r2, _080424C8 @ =gUnknown_2023BCE + lsls r0, r1, 1 + adds r0, r2 + ldrh r3, [r0] + ldr r1, [sp, 0x4] + lsls r0, r1, 16 + lsrs r1, r0, 16 + adds r5, r0, 0 + cmp r3, r1 + bne _080424CC + ldr r2, [sp, 0xC] + str r2, [sp, 0x1C] + b _08042504 + .align 2, 0 +_080424B0: .4byte gUnknown_2023D6F +_080424B4: .4byte gUnknown_2024004 +_080424B8: .4byte gUnknown_30030F0 +_080424BC: .4byte 0x00000439 +_080424C0: .4byte gUnknown_2023BC4 +_080424C4: .4byte gUnknown_2023BCC +_080424C8: .4byte gUnknown_2023BCE +_080424CC: + ldr r0, [sp, 0xC] + adds r0, 0x2 + str r0, [sp, 0xC] + ldr r0, _080424F4 @ =gUnknown_2023BCC + ldr r1, [sp, 0xC] + ldrb r0, [r0] + cmp r1, r0 + bge _08042504 + lsls r0, r1, 1 + adds r0, r2 + ldrh r1, [r0] + lsrs r0, r5, 16 + cmp r1, r0 + bne _080424CC + ldr r2, [sp, 0xC] + lsls r0, r2, 24 + lsrs r0, 24 + str r0, [sp, 0x1C] + b _08042504 + .align 2, 0 +_080424F4: .4byte gUnknown_2023BCC +_080424F8: + ldr r0, _08042520 @ =gUnknown_2023BC4 + strb r1, [r0] + movs r0, 0x4 + str r0, [sp, 0x1C] + ldr r4, [sp] + subs r4, 0xD +_08042504: + lsls r0, r4, 16 + lsrs r0, 16 + cmp r0, 0xA5 + bhi _08042578 + ldr r1, _08042524 @ =gUnknown_82528BC + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _08042528 + ldr r1, [sp] + cmp r1, 0xAF + beq _0804252E + b _08042578 + .align 2, 0 +_08042520: .4byte gUnknown_2023BC4 +_08042524: .4byte gUnknown_82528BC +_08042528: + ldr r2, [sp] + cmp r2, 0xAF + bne _0804257C +_0804252E: + ldr r0, _08042550 @ =gUnknown_30030F0 + ldr r1, _08042554 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08042560 + ldr r0, _08042558 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0804255C @ =gUnknown_2023F5C + adds r0, r1 + b _0804257C + .align 2, 0 +_08042550: .4byte gUnknown_30030F0 +_08042554: .4byte 0x00000439 +_08042558: .4byte gUnknown_2023BC4 +_0804255C: .4byte gUnknown_2023F5C +_08042560: + ldr r0, _0804256C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _08042570 @ =0x00003108 + adds r2, r0, r2 + str r2, [sp, 0x14] + b _0804257E + .align 2, 0 +_0804256C: .4byte gUnknown_3005008 +_08042570: .4byte 0x00003108 +_08042574: + movs r0, 0 + b _08042BD8 +_08042578: + movs r0, 0x1 + b _08042BD8 +_0804257C: + str r0, [sp, 0x14] +_0804257E: + movs r0, 0 + str r0, [sp, 0xC] +_08042582: + ldr r1, [sp, 0xC] + cmp r1, 0x5 + bls _0804258A + b _08042BCA +_0804258A: + lsls r0, r1, 2 + ldr r1, _08042594 @ =_08042598 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042594: .4byte _08042598 + .align 2, 0 +_08042598: + .4byte _080425B0 + .4byte _0804264C + .4byte _080426A8 + .4byte _08042708 + .4byte _08042850 + .4byte _08042A6A +_080425B0: + ldr r0, [sp, 0x14] + ldr r1, [sp, 0xC] + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, 0x80 + ands r0, r1 + adds r5, r2, 0 + cmp r0, 0 + beq _080425F4 + ldr r0, _0804263C @ =gUnknown_30030F0 + ldr r2, _08042640 @ =0x00000439 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080425F4 + ldr r0, [sp, 0x1C] + cmp r0, 0x4 + beq _080425F4 + ldr r1, _08042644 @ =gUnknown_2023BE4 + movs r0, 0x58 + ldr r2, [sp, 0x1C] + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xF0 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + beq _080425F4 + movs r0, 0 + str r0, [sp, 0x10] +_080425F4: + ldrb r1, [r5] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _0804261C + ldr r1, _08042644 @ =gUnknown_2023BE4 + ldr r0, _08042648 @ =gUnknown_2023BC4 + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0804261C + movs r1, 0 + str r1, [sp, 0x10] +_0804261C: + ldrb r1, [r5] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _08042628 + b _08042BCA +_08042628: + ldr r2, _08042644 @ =gUnknown_2023BE4 + ldr r0, _08042648 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrb r0, [r0, 0x19] + lsls r0, 24 + asrs r0, 24 + b _080426F2 + .align 2, 0 +_0804263C: .4byte gUnknown_30030F0 +_08042640: .4byte 0x00000439 +_08042644: .4byte gUnknown_2023BE4 +_08042648: .4byte gUnknown_2023BC4 +_0804264C: + ldr r0, [sp, 0x14] + ldr r1, [sp, 0xC] + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + adds r5, r2, 0 + cmp r0, 0 + beq _08042678 + ldr r2, _080426A0 @ =gUnknown_2023BE4 + ldr r0, _080426A4 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrb r0, [r0, 0x1A] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xB + bgt _08042678 + movs r2, 0 + str r2, [sp, 0x10] +_08042678: + ldrb r1, [r5] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _08042684 + b _08042BCA +_08042684: + ldr r2, _080426A0 @ =gUnknown_2023BE4 + ldr r0, _080426A4 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrb r0, [r0, 0x1B] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xB + ble _0804269C + b _08042BCA +_0804269C: + b _08042832 + .align 2, 0 +_080426A0: .4byte gUnknown_2023BE4 +_080426A4: .4byte gUnknown_2023BC4 +_080426A8: + ldr r1, [sp, 0x14] + ldr r0, [sp, 0xC] + adds r2, r1, r0 + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + adds r5, r2, 0 + cmp r0, 0 + beq _080426D4 + ldr r2, _08042700 @ =gUnknown_2023BE4 + ldr r0, _08042704 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrb r0, [r0, 0x1E] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xB + bgt _080426D4 + movs r1, 0 + str r1, [sp, 0x10] +_080426D4: + ldrb r1, [r5] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _080426E0 + b _08042BCA +_080426E0: + ldr r2, _08042700 @ =gUnknown_2023BE4 + ldr r0, _08042704 @ =gUnknown_2023BC4 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrb r0, [r0, 0x1C] + lsls r0, 24 + asrs r0, 24 +_080426F2: + cmp r0, 0xB + ble _080426F8 + b _08042BCA +_080426F8: + movs r2, 0 + str r2, [sp, 0x10] + b _08042BCA + .align 2, 0 +_08042700: .4byte gUnknown_2023BE4 +_08042704: .4byte gUnknown_2023BC4 +_08042708: + ldr r0, [sp, 0x14] + ldr r1, [sp, 0xC] + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, 0x80 + ands r0, r1 + adds r5, r2, 0 + cmp r0, 0 + beq _0804273A + ldr r4, _08042838 @ =gUnknown_2023DE4 + ldr r0, _0804283C @ =gUnknown_2023BC4 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x4] + cmp r0, 0 + bne _0804273A + movs r2, 0 + str r2, [sp, 0x10] +_0804273A: + ldrb r1, [r5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08042756 + mov r0, r8 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x64 + beq _08042756 + movs r0, 0 + str r0, [sp, 0x10] +_08042756: + ldrb r1, [r5] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08042776 + mov r0, r8 + ldr r1, [sp, 0x4] + movs r2, 0x7 + ldr r3, [sp, 0x1C] + bl sub_8042BE8 + lsls r0, 24 + cmp r0, 0 + beq _08042776 + movs r1, 0 + str r1, [sp, 0x10] +_08042776: + ldrb r1, [r5] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08042796 + ldr r2, _08042840 @ =0x00000f88 + mov r0, r8 + ldr r1, [sp, 0x4] + ldr r3, [sp, 0x1C] + bl sub_8042BE8 + lsls r0, 24 + cmp r0, 0 + beq _08042796 + movs r2, 0 + str r2, [sp, 0x10] +_08042796: + ldrb r1, [r5] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080427B6 + mov r0, r8 + ldr r1, [sp, 0x4] + movs r2, 0x10 + ldr r3, [sp, 0x1C] + bl sub_8042BE8 + lsls r0, 24 + cmp r0, 0 + beq _080427B6 + movs r0, 0 + str r0, [sp, 0x10] +_080427B6: + ldrb r1, [r5] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080427D6 + mov r0, r8 + ldr r1, [sp, 0x4] + movs r2, 0x20 + ldr r3, [sp, 0x1C] + bl sub_8042BE8 + lsls r0, 24 + cmp r0, 0 + beq _080427D6 + movs r1, 0 + str r1, [sp, 0x10] +_080427D6: + ldrb r1, [r5] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080427F6 + mov r0, r8 + ldr r1, [sp, 0x4] + movs r2, 0x40 + ldr r3, [sp, 0x1C] + bl sub_8042BE8 + lsls r0, 24 + cmp r0, 0 + beq _080427F6 + movs r2, 0 + str r2, [sp, 0x10] +_080427F6: + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08042802 + b _08042BCA +_08042802: + ldr r0, _08042844 @ =gUnknown_30030F0 + ldr r1, _08042848 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08042814 + b _08042BCA +_08042814: + ldr r2, [sp, 0x1C] + cmp r2, 0x4 + bne _0804281C + b _08042BCA +_0804281C: + ldr r1, _0804284C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _08042832 + b _08042BCA +_08042832: + movs r0, 0 + str r0, [sp, 0x10] + b _08042BCA + .align 2, 0 +_08042838: .4byte gUnknown_2023DE4 +_0804283C: .4byte gUnknown_2023BC4 +_08042840: .4byte 0x00000f88 +_08042844: .4byte gUnknown_30030F0 +_08042848: .4byte 0x00000439 +_0804284C: .4byte gUnknown_2023BE4 +_08042850: + ldr r1, [sp, 0x14] + ldr r2, [sp, 0xC] + adds r0, r1, r2 + ldrb r7, [r0] + movs r0, 0x20 + ands r0, r7 + cmp r0, 0 + beq _080428B6 + movs r0, 0xDF + ands r7, r0 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + ldr r0, _080428DC @ =gUnknown_825DEA1 + ldr r1, [sp, 0x8] + adds r0, r1, r0 + ldrb r0, [r0] + ands r5, r0 + lsls r0, r1, 1 + lsrs r5, r0 + adds r1, 0xD + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x8] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + cmp r5, 0x2 + bhi _080428B6 + cmp r0, 0x4 + bls _080428B6 + movs r2, 0 + str r2, [sp, 0x10] +_080428B6: + movs r0, 0 + mov r9, r0 + cmp r7, 0 + bne _080428C0 + b _08042BCA +_080428C0: + movs r0, 0x1 + ands r0, r7 + cmp r0, 0 + bne _080428CA + b _08042A5C +_080428CA: + mov r1, r9 + cmp r1, 0x7 + bls _080428D2 + b _08042A5C +_080428D2: + lsls r0, r1, 2 + ldr r1, _080428E0 @ =_080428E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080428DC: .4byte gUnknown_825DEA1 +_080428E0: .4byte _080428E4 + .align 2, 0 +_080428E4: + .4byte _08042904 + .4byte _08042904 + .4byte _08042934 + .4byte _08042996 + .4byte _08042A5C + .4byte _08042A5C + .4byte _08042A5C + .4byte _08042A4A +_08042904: + mov r0, r8 + bl sub_8043A40 + lsls r0, 16 + ldr r1, _0804292C @ =0x01fd0000 + cmp r0, r1 + bls _08042914 + b _08042578 +_08042914: + ldr r0, _08042930 @ =gUnknown_825DFEA + add r0, r9 + ldrb r1, [r0] + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + cmp r5, 0x63 + bls _0804292A + b _08042A5C +_0804292A: + b _08042A3A + .align 2, 0 +_0804292C: .4byte 0x01fd0000 +_08042930: .4byte gUnknown_825DFEA +_08042934: + movs r0, 0x10 + ands r0, r7 + cmp r0, 0 + beq _08042952 + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _08042968 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + b _080429F4 +_08042952: + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08042968 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + b _080429F4 +_08042968: + mov r0, r8 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + beq _08042986 + movs r0, 0 + str r0, [sp, 0x10] +_08042986: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r0, 0xEF + ands r7, r0 + b _08042A5C +_08042996: + movs r0, 0x2 + ands r0, r7 + cmp r0, 0 + bne _080429FA + movs r6, 0 + movs r1, 0x1 + add r10, r1 +_080429A4: + adds r1, r6, 0 + adds r1, 0x11 + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + adds r1, r6, 0 + adds r1, 0xD + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, r6, 24 + lsrs r2, 24 + adds r0, r4, 0 + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + beq _080429EA + movs r2, 0 + str r2, [sp, 0x10] +_080429EA: + adds r6, 0x1 + cmp r6, 0x3 + ble _080429A4 + mov r1, r10 + lsls r0, r1, 24 +_080429F4: + lsrs r0, 24 + mov r10, r0 + b _08042A5C +_080429FA: + ldr r1, [sp, 0x8] + adds r1, 0x11 + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + ldr r1, [sp, 0x8] + adds r1, 0xD + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x8] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + cmp r5, r0 + beq _08042A5C +_08042A3A: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r2, 0 + str r2, [sp, 0x10] + b _08042A5C +_08042A4A: + mov r0, r8 + movs r1, 0x2 + ldr r2, [sp] + bl sub_8042EC4 + lsls r0, 16 + cmp r0, 0 + beq _08042A5C + b _08042574 +_08042A5C: + movs r0, 0x1 + add r9, r0 + lsrs r7, 1 + cmp r7, 0 + beq _08042A68 + b _080428C0 +_08042A68: + b _08042BCA +_08042A6A: + ldr r1, [sp, 0x14] + ldr r2, [sp, 0xC] + adds r0, r1, r2 + ldrb r7, [r0] + movs r0, 0 + mov r9, r0 + cmp r7, 0 + bne _08042A7C + b _08042BCA +_08042A7C: + movs r0, 0x1 + ands r0, r7 + cmp r0, 0 + bne _08042A86 + b _08042BBE +_08042A86: + mov r1, r9 + cmp r1, 0x7 + bls _08042A8E + b _08042BBE +_08042A8E: + lsls r0, r1, 2 + ldr r1, _08042A98 @ =_08042A9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042A98: .4byte _08042A9C + .align 2, 0 +_08042A9C: + .4byte _08042ABC + .4byte _08042ABC + .4byte _08042ABC + .4byte _08042ABC + .4byte _08042AF4 + .4byte _08042B4C + .4byte _08042B68 + .4byte _08042B92 +_08042ABC: + mov r0, r8 + bl sub_8043A40 + lsls r0, 16 + ldr r1, _08042AEC @ =0x01fd0000 + cmp r0, r1 + bls _08042ACC + b _08042578 +_08042ACC: + ldr r0, _08042AF0 @ =gUnknown_825DFEA + mov r1, r9 + adds r1, 0x2 + adds r1, r0 + ldrb r1, [r1] + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + cmp r5, 0x63 + bhi _08042BBE + movs r2, 0 + str r2, [sp, 0x10] + b _08042BB4 + .align 2, 0 +_08042AEC: .4byte 0x01fd0000 +_08042AF0: .4byte gUnknown_825DFEA +_08042AF4: + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + ldr r0, _08042B48 @ =gUnknown_825DEA1 + ldr r1, [sp, 0x8] + adds r0, r1, r0 + ldrb r0, [r0] + ands r5, r0 + lsls r0, r1, 1 + lsrs r5, r0 + adds r1, 0xD + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x8] + bl sub_804101C + lsls r0, 24 + lsrs r6, r0, 24 + cmp r5, 0x2 + bhi _08042BBE + cmp r6, 0x4 + ble _08042BBE + movs r2, 0 + str r2, [sp, 0x10] + b _08042BBE + .align 2, 0 +_08042B48: .4byte gUnknown_825DEA1 +_08042B4C: + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x63 + bhi _08042BB4 + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _08042BB4 + ldr r1, [sp, 0x18] + cmp r1, 0 + bne _08042BB4 + b _08042BAC +_08042B68: + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x63 + bls _08042BB4 + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0xC7 + bhi _08042BB4 + ldr r2, [sp, 0x10] + cmp r2, 0 + bne _08042BB4 + ldr r0, [sp, 0x18] + cmp r0, 0 + bne _08042BB4 + b _08042BAC +_08042B92: + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0xC7 + bls _08042BB4 + ldr r1, [sp, 0x10] + cmp r1, 0 + bne _08042BB4 + ldr r2, [sp, 0x18] + cmp r2, 0 + bne _08042BB4 +_08042BAC: + ldr r0, [sp, 0x14] + add r0, r10 + ldrb r0, [r0] + str r0, [sp, 0x18] +_08042BB4: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_08042BBE: + movs r0, 0x1 + add r9, r0 + lsrs r7, 1 + cmp r7, 0 + beq _08042BCA + b _08042A7C +_08042BCA: + ldr r1, [sp, 0xC] + adds r1, 0x1 + str r1, [sp, 0xC] + cmp r1, 0x5 + bgt _08042BD6 + b _08042582 +_08042BD6: + ldr r0, [sp, 0x10] +_08042BD8: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8042414 + + thumb_func_start sub_8042BE8 +sub_8042BE8: @ 8042BE8 + push {r4,lr} + adds r4, r2, 0 + movs r1, 0x37 + movs r2, 0 + bl sub_803FBE8 + ands r0, r4 + cmp r0, 0 + bne _08042BFE + movs r0, 0 + b _08042C00 +_08042BFE: + movs r0, 0x1 +_08042C00: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8042BE8 + + thumb_func_start sub_8042C08 +sub_8042C08: @ 8042C08 + push {r4-r7,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r7, 0x6 + ldr r1, _08042C30 @ =gUnknown_82528BC + adds r0, r3, 0 + subs r0, 0xD + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _08042C34 + cmp r3, 0xAF + beq _08042C38 +_08042C2C: + movs r0, 0 + b _08042D48 + .align 2, 0 +_08042C30: .4byte gUnknown_82528BC +_08042C34: + cmp r3, 0xAF + bne _08042C46 +_08042C38: + ldr r0, _08042C58 @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _08042C5C @ =gUnknown_2023F5C + adds r0, r1 +_08042C46: + mov r12, r0 + movs r2, 0 +_08042C4A: + cmp r2, 0x4 + beq _08042C6A + cmp r2, 0x4 + ble _08042C60 + cmp r2, 0x5 + beq _08042CF4 + b _08042D3E + .align 2, 0 +_08042C58: .4byte gUnknown_2023BC4 +_08042C5C: .4byte gUnknown_2023F5C +_08042C60: + cmp r2, 0 + blt _08042D3E + cmp r2, r4 + bne _08042D3E + b _08042C2C +_08042C6A: + mov r0, r12 + ldrb r3, [r0, 0x4] + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _08042C7A + movs r0, 0xDF + ands r3, r0 +_08042C7A: + movs r6, 0 + cmp r3, 0 + beq _08042D3E +_08042C80: + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08042CE0 + cmp r6, 0x7 + bhi _08042CE0 + lsls r0, r6, 2 + ldr r1, _08042C98 @ =_08042C9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042C98: .4byte _08042C9C + .align 2, 0 +_08042C9C: + .4byte _08042CC8 + .4byte _08042CC8 + .4byte _08042CBC + .4byte _08042CC8 + .4byte _08042CE0 + .4byte _08042CE0 + .4byte _08042CE0 + .4byte _08042CDC +_08042CBC: + movs r0, 0x10 + ands r0, r3 + cmp r0, 0 + beq _08042CC8 + movs r0, 0xEF + ands r3, r0 +_08042CC8: + cmp r2, r4 + bne _08042CD4 + adds r0, r3, 0 + ands r0, r5 + cmp r0, 0 + bne _08042D46 +_08042CD4: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _08042CE0 +_08042CDC: + cmp r2, r4 + beq _08042C2C +_08042CE0: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + lsrs r3, 1 + cmp r2, r4 + bne _08042CEE + lsrs r5, 1 +_08042CEE: + cmp r3, 0 + bne _08042C80 + b _08042D3E +_08042CF4: + mov r0, r12 + ldrb r3, [r0, 0x5] + movs r6, 0 +_08042CFA: + cmp r3, 0 + beq _08042D3E + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08042D2E + cmp r6, 0 + blt _08042D2E + cmp r6, 0x6 + ble _08042D14 + cmp r6, 0x7 + beq _08042D28 + b _08042D2E +_08042D14: + cmp r2, r4 + bne _08042D20 + adds r0, r3, 0 + ands r0, r5 + cmp r0, 0 + bne _08042D46 +_08042D20: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _08042D2E +_08042D28: + cmp r2, r4 + bne _08042D2E + b _08042C2C +_08042D2E: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + lsrs r3, 1 + cmp r2, r4 + bne _08042CFA + lsrs r5, 1 + b _08042CFA +_08042D3E: + adds r2, 0x1 + cmp r2, 0x5 + bgt _08042D46 + b _08042C4A +_08042D46: + adds r0, r7, 0 +_08042D48: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8042C08 + + thumb_func_start sub_8042D50 +sub_8042D50: @ 8042D50 + push {lr} + ldr r2, _08042D84 @ =gUnknown_2023D6C + ldr r1, _08042D88 @ =gUnknown_2024004 + ldrb r1, [r1] + strb r1, [r2] + ldr r3, _08042D8C @ =gUnknown_2022AB8 + ldr r2, _08042D90 @ =gUnknown_83FD5D0 + ldr r1, _08042D94 @ =gUnknown_825DFF0 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + adds r0, r3, 0 + bl sub_8008D84 + ldr r0, _08042D98 @ =gUnknown_2022AC8 + ldr r1, _08042D9C @ =gUnknown_83FCB4A + bl sub_8008D84 + ldr r0, _08042DA0 @ =gUnknown_83FCB6A + bl sub_80D77F4 + pop {r0} + bx r0 + .align 2, 0 +_08042D84: .4byte gUnknown_2023D6C +_08042D88: .4byte gUnknown_2024004 +_08042D8C: .4byte gUnknown_2022AB8 +_08042D90: .4byte gUnknown_83FD5D0 +_08042D94: .4byte gUnknown_825DFF0 +_08042D98: .4byte gUnknown_2022AC8 +_08042D9C: .4byte gUnknown_83FCB4A +_08042DA0: .4byte gUnknown_83FCB6A + thumb_func_end sub_8042D50 + + thumb_func_start sub_8042DA4 +sub_8042DA4: @ 8042DA4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08042DF8 + ldr r0, _08042DD4 @ =gUnknown_30030F0 + ldr r1, _08042DD8 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08042DE4 + ldr r2, _08042DDC @ =gUnknown_2024004 + ldrb r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _08042DE0 @ =gUnknown_2023F5C + adds r7, r0, r1 + b _08042E04 + .align 2, 0 +_08042DD4: .4byte gUnknown_30030F0 +_08042DD8: .4byte 0x00000439 +_08042DDC: .4byte gUnknown_2024004 +_08042DE0: .4byte gUnknown_2023F5C +_08042DE4: + ldr r0, _08042DF0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08042DF4 @ =0x00003108 + adds r7, r0, r1 + b _08042E02 + .align 2, 0 +_08042DF0: .4byte gUnknown_3005008 +_08042DF4: .4byte 0x00003108 +_08042DF8: + ldr r1, _08042E3C @ =gUnknown_82528BC + subs r0, 0xD + lsls r0, 2 + adds r0, r1 + ldr r7, [r0] +_08042E02: + ldr r2, _08042E40 @ =gUnknown_2024004 +_08042E04: + ldr r1, _08042E44 @ =gUnknown_2023D6F + ldrb r0, [r2] + strb r0, [r1] + movs r5, 0 + ldr r0, _08042E48 @ =gUnknown_2023D6B + mov r8, r0 + movs r6, 0 +_08042E12: + adds r4, r7, r5 + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + beq _08042E24 + adds r0, r6, 0 + bl sub_8042D50 +_08042E24: + ldrb r1, [r4] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _08042E5A + cmp r5, 0 + beq _08042E4C + adds r0, r6, 0x1 + bl sub_8042D50 + b _08042E5A + .align 2, 0 +_08042E3C: .4byte gUnknown_82528BC +_08042E40: .4byte gUnknown_2024004 +_08042E44: .4byte gUnknown_2023D6F +_08042E48: .4byte gUnknown_2023D6B +_08042E4C: + ldr r0, _08042E88 @ =gUnknown_2024004 + ldrb r0, [r0] + mov r1, r8 + strb r0, [r1] + ldr r0, _08042E8C @ =gUnknown_83FBBE9 + bl sub_80D77F4 +_08042E5A: + adds r6, 0x2 + adds r5, 0x1 + cmp r5, 0x2 + ble _08042E12 + ldrb r1, [r7, 0x3] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08042E7A + ldr r1, _08042E90 @ =gUnknown_2023D6B + ldr r0, _08042E88 @ =gUnknown_2024004 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _08042E94 @ =gUnknown_83FBBB4 + bl sub_80D77F4 +_08042E7A: + ldr r0, _08042E98 @ =gUnknown_202298C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08042E88: .4byte gUnknown_2024004 +_08042E8C: .4byte gUnknown_83FBBE9 +_08042E90: .4byte gUnknown_2023D6B +_08042E94: .4byte gUnknown_83FBBB4 +_08042E98: .4byte gUnknown_202298C + thumb_func_end sub_8042DA4 + + thumb_func_start sub_8042E9C +sub_8042E9C: @ 8042E9C + push {lr} + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0x19 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8042E9C + + thumb_func_start sub_8042EB4 +sub_8042EB4: @ 8042EB4 + push {lr} + movs r1, 0x19 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8042EB4 + + thumb_func_start sub_8042EC4 +sub_8042EC4: @ 8042EC4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r8, r0 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + movs r0, 0 + mov r10, r0 + mov r0, r8 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + mov r0, r8 + movs r1, 0xC + movs r2, 0 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + mov r0, r8 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x17 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + lsrs r4, 16 + str r4, [sp, 0x10] + mov r0, sp + ldrh r0, [r0] + cmp r0, 0xAF + bne _08042F38 + ldr r0, _08042F30 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08042F34 @ =0x0000311a + adds r0, r1 + ldrb r0, [r0] + b _08042F40 + .align 2, 0 +_08042F30: .4byte gUnknown_3005008 +_08042F34: .4byte 0x0000311a +_08042F38: + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 +_08042F40: + cmp r0, 0x26 + bne _08042F4C + cmp r5, 0x3 + beq _08042F4C + movs r0, 0 + b _080431A4 +_08042F4C: + cmp r5, 0x1 + bne _08042F52 + b _0804311E +_08042F52: + cmp r5, 0x1 + bgt _08042F5C + cmp r5, 0 + beq _08042F70 + b _080431A2 +_08042F5C: + cmp r5, 0x3 + ble _08042F62 + b _080431A2 +_08042F62: + movs r2, 0 + str r2, [sp, 0x4] + ldr r3, _08042F6C @ =gUnknown_8259754 + lsls r6, r7, 2 + b _08043182 + .align 2, 0 +_08042F6C: .4byte gUnknown_8259754 +_08042F70: + mov r0, r8 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0x4] + lsls r6, r7, 2 +_08042F96: + ldr r1, _08042FBC @ =gUnknown_8259754 + ldr r0, [sp, 0x4] + lsls r2, r0, 3 + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r0, r1 + ldrh r0, [r0] + subs r0, 0x1 + adds r3, r1, 0 + cmp r0, 0xE + bls _08042FB0 + b _08043110 +_08042FB0: + lsls r0, 2 + ldr r1, _08042FC0 @ =_08042FC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042FBC: .4byte gUnknown_8259754 +_08042FC0: .4byte _08042FC4 + .align 2, 0 +_08042FC4: + .4byte _08043000 + .4byte _08043110 + .4byte _08043110 + .4byte _08043016 + .4byte _08043110 + .4byte _08043110 + .4byte _08043110 + .4byte _08043026 + .4byte _08043050 + .4byte _0804307A + .4byte _080430A8 + .4byte _080430C8 + .4byte _080430EC + .4byte _08043110 + .4byte _080430FC +_08043000: + ldr r1, [sp, 0x8] + cmp r1, 0xDB + bhi _08043008 + b _08043110 +_08043008: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r0, r3 + ldrh r0, [r0, 0x4] + mov r10, r0 + b _08043110 +_08043016: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r1, r0, r3 + ldrh r0, [r1, 0x2] + cmp r0, r9 + bhi _08043110 + b _0804310C +_08043026: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r5, r0, r3 + ldrh r0, [r5, 0x2] + cmp r0, r9 + bhi _08043110 + mov r0, r8 + movs r1, 0x3B + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x3C + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + bls _08043110 + b _080430A2 +_08043050: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r5, r0, r3 + ldrh r0, [r5, 0x2] + cmp r0, r9 + bhi _08043110 + mov r0, r8 + movs r1, 0x3B + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x3C + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + bne _08043110 + b _080430A2 +_0804307A: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r5, r0, r3 + ldrh r0, [r5, 0x2] + cmp r0, r9 + bhi _08043110 + mov r0, r8 + movs r1, 0x3B + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x3C + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + bcs _08043110 +_080430A2: + ldrh r5, [r5, 0x4] + mov r10, r5 + b _08043110 +_080430A8: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r4, r0, r3 + ldrh r0, [r4, 0x2] + cmp r0, r9 + bhi _08043110 + ldr r0, [sp, 0x10] + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _08043110 + b _080430E6 +_080430C8: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r4, r0, r3 + ldrh r0, [r4, 0x2] + cmp r0, r9 + bhi _08043110 + ldr r0, [sp, 0x10] + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bls _08043110 +_080430E6: + ldrh r4, [r4, 0x4] + mov r10, r4 + b _08043110 +_080430EC: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r1, r0, r3 + ldrh r0, [r1, 0x2] + cmp r0, r9 + bhi _08043110 + b _0804310C +_080430FC: + adds r0, r6, r7 + lsls r0, 3 + adds r0, r2, r0 + adds r1, r0, r3 + ldrh r0, [r1, 0x2] + ldr r2, [sp, 0xC] + cmp r0, r2 + bhi _08043110 +_0804310C: + ldrh r1, [r1, 0x4] + mov r10, r1 +_08043110: + ldr r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x4] + cmp r0, 0x4 + bgt _0804311C + b _08042F96 +_0804311C: + b _080431A2 +_0804311E: + movs r1, 0 + str r1, [sp, 0x4] + lsls r6, r7, 2 + ldr r1, _08043138 @ =gUnknown_8259754 + adds r0, r6, r7 + lsls r0, 3 + adds r4, r0, r1 +_0804312C: + ldrh r0, [r4] + cmp r0, 0x5 + beq _0804313C + cmp r0, 0x6 + beq _08043142 + b _0804316E + .align 2, 0 +_08043138: .4byte gUnknown_8259754 +_0804313C: + ldrh r2, [r4, 0x4] + mov r10, r2 + b _0804316E +_08043142: + ldrh r1, [r4, 0x2] + mov r0, sp + ldrh r0, [r0] + cmp r1, r0 + bne _0804316E + ldrh r0, [r4, 0x4] + mov r10, r0 + bl sub_806E25C + cmp r0, 0 + bne _0804315E + mov r1, r10 + cmp r1, 0x97 + bhi _0804316E +_0804315E: + movs r1, 0 + mov r0, sp + strh r1, [r0] + mov r0, r8 + movs r1, 0xC + mov r2, sp + bl sub_804037C +_0804316E: + adds r4, 0x8 + ldr r2, [sp, 0x4] + adds r2, 0x1 + str r2, [sp, 0x4] + cmp r2, 0x4 + ble _0804312C + b _080431A2 +_0804317C: + ldrh r1, [r1, 0x4] + mov r10, r1 + b _080431A2 +_08043182: + adds r0, r6, r7 + ldr r1, [sp, 0x4] + adds r0, r1 + lsls r0, 3 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, 0x7 + bne _08043198 + ldrh r0, [r1, 0x2] + cmp r0, r9 + beq _0804317C +_08043198: + ldr r2, [sp, 0x4] + adds r2, 0x1 + str r2, [sp, 0x4] + cmp r2, 0x4 + ble _08043182 +_080431A2: + mov r0, r10 +_080431A4: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8042EC4 + + thumb_func_start sub_80431B4 +sub_80431B4: @ 80431B4 + push {r4,lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _080431F8 + movs r1, 0 + ldr r3, _080431F0 @ =gUnknown_8251CB8 + ldrh r0, [r3] + cmp r0, r2 + beq _080431E0 + movs r4, 0xCD + lsls r4, 1 +_080431CC: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + bhi _080431E0 + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _080431CC +_080431E0: + ldr r0, _080431F4 @ =0x0000019b + cmp r1, r0 + beq _080431F8 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + b _080431FA + .align 2, 0 +_080431F0: .4byte gUnknown_8251CB8 +_080431F4: .4byte 0x0000019b +_080431F8: + movs r0, 0 +_080431FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80431B4 + + thumb_func_start sub_8043200 +sub_8043200: @ 8043200 + push {r4,lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08043244 + movs r1, 0 + ldr r3, _0804323C @ =gUnknown_8251FEE + ldrh r0, [r3] + cmp r0, r2 + beq _0804322C + movs r4, 0xCD + lsls r4, 1 +_08043218: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + bhi _0804322C + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08043218 +_0804322C: + ldr r0, _08043240 @ =0x0000019b + cmp r1, r0 + beq _08043244 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + b _08043246 + .align 2, 0 +_0804323C: .4byte gUnknown_8251FEE +_08043240: .4byte 0x0000019b +_08043244: + movs r0, 0 +_08043246: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8043200 + + thumb_func_start sub_804324C +sub_804324C: @ 804324C + push {r4,lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08043290 + movs r1, 0 + ldr r3, _08043288 @ =gUnknown_8252324 + ldrh r0, [r3] + cmp r0, r2 + beq _08043278 + movs r4, 0xCD + lsls r4, 1 +_08043264: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + bhi _08043278 + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08043264 +_08043278: + ldr r0, _0804328C @ =0x0000019b + cmp r1, r0 + beq _08043290 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + b _08043292 + .align 2, 0 +_08043288: .4byte gUnknown_8252324 +_0804328C: .4byte 0x0000019b +_08043290: + movs r0, 0 +_08043292: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_804324C + + thumb_func_start sub_8043298 +sub_8043298: @ 8043298 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080432B4 + ldr r0, _080432B0 @ =gUnknown_8251FEE + subs r1, 0x1 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + b _080432B6 + .align 2, 0 +_080432B0: .4byte gUnknown_8251FEE +_080432B4: + movs r0, 0 +_080432B6: + pop {r1} + bx r1 + thumb_func_end sub_8043298 + + thumb_func_start sub_80432BC +sub_80432BC: @ 80432BC + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080432D8 + ldr r0, _080432D4 @ =gUnknown_8251CB8 + subs r1, 0x1 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + b _080432DA + .align 2, 0 +_080432D4: .4byte gUnknown_8251CB8 +_080432D8: + movs r0, 0 +_080432DA: + pop {r1} + bx r1 + thumb_func_end sub_80432BC + + thumb_func_start sub_80432E0 +sub_80432E0: @ 80432E0 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080432FC + ldr r0, _080432F8 @ =gUnknown_8252324 + subs r1, 0x1 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + b _080432FE + .align 2, 0 +_080432F8: .4byte gUnknown_8252324 +_080432FC: + movs r0, 0 +_080432FE: + pop {r1} + bx r1 + thumb_func_end sub_80432E0 + + thumb_func_start sub_8043304 +sub_8043304: @ 8043304 + push {lr} + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0xFA + bls _08043332 + ldr r0, _08043324 @ =0x00000113 + cmp r1, r0 + bls _08043330 + ldr r0, _08043328 @ =gUnknown_82539D4 + ldr r2, _0804332C @ =0xfffffeec + adds r1, r2 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + b _08043332 + .align 2, 0 +_08043324: .4byte 0x00000113 +_08043328: .4byte gUnknown_82539D4 +_0804332C: .4byte 0xfffffeec +_08043330: + movs r0, 0xC8 +_08043332: + pop {r1} + bx r1 + thumb_func_end sub_8043304 + + thumb_func_start sub_8043338 +sub_8043338: @ 8043338 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r6, r1, 0 + mov r10, r2 + lsls r0, 16 + movs r1, 0x9A + lsls r1, 17 + cmp r0, r1 + bne _08043446 + ldr r0, _08043408 @ =gUnknown_202401C + ldr r1, [r0] + ldr r0, [r1, 0x4] + cmp r10, r0 + beq _08043446 + ldr r0, [r1, 0xC] + cmp r10, r0 + beq _08043446 + movs r5, 0 +_08043364: + lsls r3, r5, 3 + adds r3, r5 + lsls r3, 2 + ldr r0, _0804340C @ =gUnknown_825265C + adds r4, r3, r0 + ldrb r1, [r4] + adds r1, 0xF8 + movs r2, 0xF + adds r0, r6, 0 + ands r0, r2 + adds r1, r0 + lsls r1, 24 + lsrs r1, 24 + mov r12, r1 + ldrb r1, [r4, 0x1] + adds r1, 0xF8 + movs r0, 0xF0 + ands r0, r6 + lsrs r0, 4 + adds r1, r0 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + lsrs r6, 8 + str r6, [sp, 0x4] + adds r5, 0x1 + str r5, [sp] + mov r9, r3 +_0804339C: + lsls r0, r2, 1 + add r0, r9 + ldr r3, _08043410 @ =gUnknown_825265E + adds r0, r3 + ldrh r3, [r0] + mov r4, r12 + adds r0, r4, 0 + adds r0, 0x10 + adds r7, r1, 0x1 + adds r2, 0x1 + mov r8, r2 + cmp r4, r0 + bge _08043434 + lsrs r0, r1, 3 + lsls r6, r0, 8 + movs r0, 0x7 + ands r1, r0 + lsls r5, r1, 2 +_080433C0: + adds r0, r4, 0 + cmp r4, 0 + bge _080433C8 + adds r0, r4, 0x7 +_080433C8: + asrs r0, 3 + lsls r2, r0, 5 + add r2, r10 + lsls r0, 3 + subs r0, r4, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r2, r0 + adds r2, r6 + adds r2, r5 + movs r1, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08043428 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08043414 + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x20 + bhi _08043428 + adds r0, r1, 0 + adds r0, 0x40 + b _08043426 + .align 2, 0 +_08043408: .4byte gUnknown_202401C +_0804340C: .4byte gUnknown_825265C +_08043410: .4byte gUnknown_825265E +_08043414: + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _08043428 + adds r0, r1, 0x4 +_08043426: + strb r0, [r2] +_08043428: + asrs r3, 1 + adds r4, 0x1 + mov r0, r12 + adds r0, 0x10 + cmp r4, r0 + blt _080433C0 +_08043434: + lsls r0, r7, 24 + lsrs r1, r0, 24 + mov r2, r8 + cmp r2, 0xF + ble _0804339C + ldr r6, [sp, 0x4] + ldr r5, [sp] + cmp r5, 0x3 + ble _08043364 +_08043446: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8043338 + + thumb_func_start sub_8043458 +sub_8043458: @ 8043458 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r1, 0 + str r2, [sp] + lsls r0, 16 + lsls r3, 24 + lsrs r3, 24 + movs r1, 0x9A + lsls r1, 17 + cmp r0, r1 + bne _0804355A + cmp r3, 0 + beq _0804355A + movs r6, 0 +_0804347C: + lsls r3, r6, 3 + adds r3, r6 + lsls r3, 2 + ldr r0, _08043520 @ =gUnknown_825265C + adds r4, r3, r0 + ldrb r1, [r4] + adds r1, 0xF8 + movs r2, 0xF + adds r0, r5, 0 + ands r0, r2 + adds r1, r0 + lsls r1, 24 + lsrs r1, 24 + mov r12, r1 + ldrb r1, [r4, 0x1] + adds r1, 0xF8 + movs r0, 0xF0 + ands r0, r5 + lsrs r0, 4 + adds r1, r0 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + lsrs r5, 8 + str r5, [sp, 0x4] + adds r6, 0x1 + mov r10, r6 + mov r9, r3 +_080434B4: + lsls r0, r2, 1 + add r0, r9 + ldr r3, _08043524 @ =gUnknown_825265E + adds r0, r3 + ldrh r3, [r0] + mov r4, r12 + adds r0, r4, 0 + adds r0, 0x10 + adds r7, r1, 0x1 + adds r2, 0x1 + mov r8, r2 + cmp r4, r0 + bge _08043548 + lsrs r0, r1, 3 + lsls r6, r0, 8 + movs r0, 0x7 + ands r1, r0 + lsls r5, r1, 2 +_080434D8: + adds r0, r4, 0 + cmp r4, 0 + bge _080434E0 + adds r0, r4, 0x7 +_080434E0: + asrs r0, 3 + lsls r2, r0, 5 + ldr r1, [sp] + adds r2, r1, r2 + lsls r0, 3 + subs r0, r4, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r2, r0 + adds r2, r6 + adds r2, r5 + movs r1, 0x1 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0804353C + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08043528 + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x20 + bhi _0804353C + adds r0, r1, 0 + adds r0, 0x40 + b _0804353A + .align 2, 0 +_08043520: .4byte gUnknown_825265C +_08043524: .4byte gUnknown_825265E +_08043528: + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0804353C + adds r0, r1, 0x4 +_0804353A: + strb r0, [r2] +_0804353C: + asrs r3, 1 + adds r4, 0x1 + mov r0, r12 + adds r0, 0x10 + cmp r4, r0 + blt _080434D8 +_08043548: + lsls r0, r7, 24 + lsrs r1, r0, 24 + mov r2, r8 + cmp r2, 0xF + ble _080434B4 + ldr r5, [sp, 0x4] + mov r6, r10 + cmp r6, 0x3 + ble _0804347C +_0804355A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8043458 + + thumb_func_start sub_804356C +sub_804356C: @ 804356C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r5, r0, 0 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + ldr r0, _080435D8 @ =gUnknown_2021CD0 + mov r9, r0 + adds r0, r5, 0 + movs r1, 0x2 + mov r2, r9 + bl sub_803FBE8 + mov r4, sp + adds r0, r5, 0 + movs r1, 0x3 + mov r2, sp + bl sub_803FBE8 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080435C8 + movs r6, 0xB + adds r0, r7, 0 + muls r0, r6 + ldr r4, _080435DC @ =gUnknown_8245EE0 + adds r0, r4 + mov r1, r9 + bl sub_8008E28 + cmp r0, 0 + bne _080435C8 + mov r2, r8 + muls r2, r6 + adds r2, r4 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_804037C +_080435C8: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080435D8: .4byte gUnknown_2021CD0 +_080435DC: .4byte gUnknown_8245EE0 + thumb_func_end sub_804356C + + thumb_func_start sub_80435E0 +sub_80435E0: @ 80435E0 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _08043608 @ =gUnknown_202273C + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x18] + cmp r0, 0x2 + bgt _0804360C + cmp r0, 0x1 + bge _08043614 + cmp r0, 0 + beq _08043610 + b _08043616 + .align 2, 0 +_08043608: .4byte gUnknown_202273C +_0804360C: + cmp r0, 0x3 + bne _08043616 +_08043610: + movs r5, 0 + b _08043616 +_08043614: + movs r5, 0x1 +_08043616: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80435E0 + + thumb_func_start sub_8043620 +sub_8043620: @ 8043620 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r2, _08043644 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r1, 0x18] + cmp r0, 0x2 + bgt _08043648 + cmp r0, 0x1 + bge _08043650 + cmp r0, 0 + beq _0804364C + b _08043652 + .align 2, 0 +_08043644: .4byte gUnknown_202273C +_08043648: + cmp r0, 0x3 + bne _08043652 +_0804364C: + movs r3, 0 + b _08043652 +_08043650: + movs r3, 0x1 +_08043652: + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_8043620 + + thumb_func_start sub_8043658 +sub_8043658: @ 8043658 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r1, _08043664 @ =gUnknown_202273C + b _08043670 + .align 2, 0 +_08043664: .4byte gUnknown_202273C +_08043668: + adds r1, 0x1C + adds r2, 0x1 + cmp r2, 0x3 + bgt _08043676 +_08043670: + ldrh r0, [r1, 0x18] + cmp r0, r3 + bne _08043668 +_08043676: + adds r0, r2, 0 + pop {r1} + bx r1 + thumb_func_end sub_8043658 + + thumb_func_start sub_804367C +sub_804367C: @ 804367C + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08043694 @ =gUnknown_823EAC8 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrb r1, [r1, 0x2] + movs r0, 0x7F + ands r0, r1 + bx lr + .align 2, 0 +_08043694: .4byte gUnknown_823EAC8 + thumb_func_end sub_804367C + + thumb_func_start sub_8043698 +sub_8043698: @ 8043698 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 24 + lsrs r5, r2, 24 + movs r0, 0xFF + lsls r0, 24 + adds r2, r0 + lsrs r2, 24 + cmp r2, 0x4 + bls _080436B6 + adds r0, r3, 0 + b _080436F2 +_080436B6: + ldr r0, _080436D8 @ =gUnknown_8252B48 + lsls r1, r4, 2 + adds r1, r4 + subs r1, 0x1 + adds r1, r5, r1 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080436DC + cmp r1, 0x1 + bne _080436F0 + movs r0, 0x6E + b _080436DE + .align 2, 0 +_080436D8: .4byte gUnknown_8252B48 +_080436DC: + movs r0, 0x5A +_080436DE: + muls r0, r3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __udivsi3 + lsls r0, 16 + lsrs r0, 16 + b _080436F2 +_080436F0: + adds r0, r3, 0 +_080436F2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8043698 + + thumb_func_start sub_80436F8 +sub_80436F8: @ 80436F8 + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r7, 0 + movs r1, 0xC + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08043758 + ldr r0, _08043738 @ =gUnknown_30030F0 + ldr r1, _0804373C @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08043744 + ldr r0, _08043740 @ =gUnknown_2023F54 + ldrb r4, [r0, 0x7] + b _08043760 + .align 2, 0 +_08043738: .4byte gUnknown_30030F0 +_0804373C: .4byte 0x00000439 +_08043740: .4byte gUnknown_2023F54 +_08043744: + ldr r0, _08043750 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08043754 @ =0x0000311a + adds r0, r1 + ldrb r4, [r0] + b _08043760 + .align 2, 0 +_08043750: .4byte gUnknown_3005008 +_08043754: .4byte 0x0000311a +_08043758: + bl sub_809A924 + lsls r0, 24 + lsrs r4, r0, 24 +_08043760: + cmp r6, 0 + bne _08043766 + b _08043876 +_08043766: + movs r0, 0xCE + lsls r0, 1 + cmp r6, r0 + bne _08043770 + b _08043876 +_08043770: + movs r6, 0 + adds r0, r7, 0 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x63 + ble _0804378E + movs r6, 0x1 +_0804378E: + cmp r0, 0xC7 + ble _08043798 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08043798: + cmp r5, 0x5 + bne _080437A8 + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _08043876 +_080437A8: + cmp r5, 0x3 + bne _080437D4 + ldr r0, _08043880 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08043876 + ldr r2, _08043884 @ =gUnknown_823EAC8 + ldr r0, _08043888 @ =gUnknown_20386AE + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0x54 + beq _080437D4 + cmp r0, 0x57 + beq _080437D4 + cmp r0, 0x5A + bne _08043876 +_080437D4: + ldr r1, _0804388C @ =gUnknown_825DFF6 + lsls r0, r5, 1 + adds r0, r5 + adds r0, r6, r0 + adds r0, r1 + ldrb r2, [r0] + movs r1, 0 + ldrsb r1, [r0, r1] + cmp r1, 0 + ble _080437FA + cmp r4, 0x1B + bne _080437FA + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 24 + lsrs r2, r0, 24 +_080437FA: + lsls r2, 24 + asrs r2, 24 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + adds r0, r2 + mov r1, sp + strh r0, [r1] + cmp r2, 0 + ble _0804384C + adds r0, r7, 0 + movs r1, 0x26 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0xB + bne _08043828 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + adds r0, 0x1 + mov r1, sp + strh r0, [r1] +_08043828: + adds r0, r7, 0 + movs r1, 0x23 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + bl sub_8056260 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0804384C + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + adds r0, 0x1 + mov r1, sp + strh r0, [r1] +_0804384C: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _0804385C + movs r1, 0 + mov r0, sp + strh r1, [r0] +_0804385C: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0xFF + ble _0804386C + movs r1, 0xFF + mov r0, sp + strh r1, [r0] +_0804386C: + adds r0, r7, 0 + movs r1, 0x20 + mov r2, sp + bl sub_804037C +_08043876: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08043880: .4byte gUnknown_2022B4C +_08043884: .4byte gUnknown_823EAC8 +_08043888: .4byte gUnknown_20386AE +_0804388C: .4byte gUnknown_825DFF6 + thumb_func_end sub_80436F8 + + thumb_func_start sub_8043890 +sub_8043890: @ 8043890 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + mov r8, r0 + lsls r1, 16 + lsrs r5, r1, 16 + movs r4, 0 + movs r7, 0 + movs r6, 0 +_080438A4: + adds r1, r6, 0 + adds r1, 0x1A + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + mov r2, sp + adds r1, r2, r6 + strb r0, [r1] + ldrb r0, [r1] + adds r0, r7, r0 + lsls r0, 16 + lsrs r7, r0, 16 + adds r6, 0x1 + cmp r6, 0x5 + ble _080438A4 + movs r6, 0 + b _08043A26 +_080438C8: + mov r0, r8 + movs r1, 0 + bl sub_8043AD8 + lsls r0, 24 + movs r2, 0x1 + cmp r0, 0 + beq _080438DA + movs r2, 0x2 +_080438DA: + cmp r6, 0x5 + bhi _0804397C + lsls r0, r6, 2 + ldr r1, _080438E8 @ =_080438EC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080438E8: .4byte _080438EC + .align 2, 0 +_080438EC: + .4byte _08043904 + .4byte _08043918 + .4byte _0804392C + .4byte _08043940 + .4byte _08043954 + .4byte _08043968 +_08043904: + ldr r0, _08043914 @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 30 + b _08043976 + .align 2, 0 +_08043914: .4byte gUnknown_8254784 +_08043918: + ldr r0, _08043928 @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + b _08043974 + .align 2, 0 +_08043928: .4byte gUnknown_8254784 +_0804392C: + ldr r0, _0804393C @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 26 + b _08043976 + .align 2, 0 +_0804393C: .4byte gUnknown_8254784 +_08043940: + ldr r0, _08043950 @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsrs r0, 6 + b _08043978 + .align 2, 0 +_08043950: .4byte gUnknown_8254784 +_08043954: + ldr r0, _08043964 @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xB] + lsls r0, 30 + b _08043976 + .align 2, 0 +_08043964: .4byte gUnknown_8254784 +_08043968: + ldr r0, _080439A4 @ =gUnknown_8254784 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xB] +_08043974: + lsls r0, 28 +_08043976: + lsrs r0, 30 +_08043978: + adds r4, r0, 0 + muls r4, r2 +_0804397C: + mov r0, r8 + movs r1, 0xC + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _080439C8 + ldr r0, _080439A8 @ =gUnknown_30030F0 + ldr r1, _080439AC @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080439B4 + ldr r0, _080439B0 @ =gUnknown_2023F54 + ldrb r0, [r0, 0x7] + b _080439D0 + .align 2, 0 +_080439A4: .4byte gUnknown_8254784 +_080439A8: .4byte gUnknown_30030F0 +_080439AC: .4byte 0x00000439 +_080439B0: .4byte gUnknown_2023F54 +_080439B4: + ldr r0, _080439C0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _080439C4 @ =0x0000311a + adds r0, r2 + ldrb r0, [r0] + b _080439D0 + .align 2, 0 +_080439C0: .4byte gUnknown_3005008 +_080439C4: .4byte 0x0000311a +_080439C8: + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 +_080439D0: + cmp r0, 0x18 + bne _080439D8 + lsls r0, r4, 17 + lsrs r4, r0, 16 +_080439D8: + lsls r0, r4, 16 + asrs r2, r0, 16 + adds r1, r7, r2 + movs r0, 0xFF + lsls r0, 1 + cmp r1, r0 + ble _080439F0 + adds r0, r2, r0 + adds r1, r7, r4 + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080439F0: + mov r0, sp + adds r2, r0, r6 + ldrb r3, [r2] + lsls r0, r4, 16 + asrs r1, r0, 16 + adds r0, r3, r1 + cmp r0, 0xFF + ble _08043A0C + adds r0, r1, 0 + adds r0, 0xFF + adds r1, r3, r4 + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_08043A0C: + adds r0, r3, r4 + strb r0, [r2] + adds r0, r7, r4 + lsls r0, 16 + lsrs r7, r0, 16 + adds r1, r6, 0 + adds r1, 0x1A + mov r0, r8 + bl sub_804037C + adds r6, 0x1 + cmp r6, 0x5 + bgt _08043A2E +_08043A26: + ldr r0, _08043A3C @ =0x000001fd + cmp r7, r0 + bhi _08043A2E + b _080438C8 +_08043A2E: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08043A3C: .4byte 0x000001fd + thumb_func_end sub_8043890 + + thumb_func_start sub_8043A40 +sub_8043A40: @ 8043A40 + push {r4-r6,lr} + adds r6, r0, 0 + movs r5, 0 + movs r4, 0 +_08043A48: + adds r1, r4, 0 + adds r1, 0x1A + adds r0, r6, 0 + movs r2, 0 + bl sub_803FBE8 + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, 0x1 + cmp r4, 0x5 + ble _08043A48 + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8043A40 + + thumb_func_start sub_8043A68 +sub_8043A68: @ 8043A68 + sub sp, 0x4 + add sp, 0x4 + bx lr + thumb_func_end sub_8043A68 + + thumb_func_start sub_8043A70 +sub_8043A70: @ 8043A70 + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + movs r3, 0 + movs r6, 0x1 + movs r5, 0 + cmp r4, 0 + beq _08043AB8 +_08043A84: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08043AAC + movs r0, 0x64 + muls r0, r3 + adds r0, r7, r0 + movs r1, 0x22 + movs r2, 0 + str r3, [sp] + bl sub_803FBE8 + movs r1, 0xF + ands r1, r0 + ldr r3, [sp] + cmp r1, 0 + beq _08043AAC + orrs r5, r6 + lsls r0, r5, 24 + lsrs r5, r0, 24 +_08043AAC: + adds r3, 0x1 + lsls r6, 1 + lsrs r4, 1 + cmp r4, 0 + bne _08043A84 + b _08043ACC +_08043AB8: + adds r0, r7, 0 + movs r1, 0x22 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xF + ands r1, r0 + cmp r1, 0 + beq _08043ACC + movs r5, 0x1 +_08043ACC: + adds r0, r5, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8043A70 + + thumb_func_start sub_8043AD8 +sub_8043AD8: @ 8043AD8 + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + movs r3, 0 + movs r6, 0x1 + movs r5, 0 + cmp r4, 0 + beq _08043B1C +_08043AEC: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _08043B10 + movs r0, 0x64 + muls r0, r3 + adds r0, r7, r0 + movs r1, 0x22 + movs r2, 0 + str r3, [sp] + bl sub_803FBE8 + ldr r3, [sp] + cmp r0, 0 + beq _08043B10 + orrs r5, r6 + lsls r0, r5, 24 + lsrs r5, r0, 24 +_08043B10: + adds r3, 0x1 + lsls r6, 1 + lsrs r4, 1 + cmp r4, 0 + bne _08043AEC + b _08043B2C +_08043B1C: + adds r0, r7, 0 + movs r1, 0x22 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _08043B2C + movs r5, 0x1 +_08043B2C: + adds r0, r5, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8043AD8 + + thumb_func_start sub_8043B38 +sub_8043B38: @ 8043B38 + sub sp, 0x4 + add sp, 0x4 + bx lr + thumb_func_end sub_8043B38 + + thumb_func_start sub_8043B40 +sub_8043B40: @ 8043B40 + sub sp, 0x4 + add sp, 0x4 + bx lr + thumb_func_end sub_8043B40 + + thumb_func_start sub_8043B48 +sub_8043B48: @ 8043B48 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + str r3, [sp] + ldr r2, _08043B88 @ =gUnknown_8253AE4 + ldr r3, _08043B8C @ =gUnknown_8254784 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r1, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r1 + movs r1, 0xC8 + lsls r1, 1 + adds r2, r1 + adds r0, r2 + ldr r1, [r0] + ldr r0, [sp] + cmp r0, r1 + bls _08043B80 + str r1, [sp] + adds r0, r4, 0 + movs r1, 0x19 + mov r2, sp + bl sub_804037C +_08043B80: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08043B88: .4byte gUnknown_8253AE4 +_08043B8C: .4byte gUnknown_8254784 + thumb_func_end sub_8043B48 + + thumb_func_start sub_8043B90 +sub_8043B90: @ 8043B90 + push {r4-r7,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r7, r0, 24 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0x19 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + cmp r7, 0x63 + bhi _08043C14 + ldr r3, _08043C0C @ =gUnknown_8253AE4 + mov r0, sp + ldrb r1, [r0] + lsls r1, 2 + ldr r2, _08043C10 @ =gUnknown_8254784 + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r2 + adds r1, r0 + adds r1, r3 + ldr r0, [r1] + cmp r5, r0 + bls _08043C20 + adds r0, r4, 0 + movs r1, 0x38 + mov r2, sp + bl sub_804037C + mov r0, sp + ldrb r2, [r0] + adds r0, r4, 0 + adds r1, r6, 0 + adds r3, r5, 0 + bl sub_8043B48 + movs r0, 0x1 + b _08043C22 + .align 2, 0 +_08043C0C: .4byte gUnknown_8253AE4 +_08043C10: .4byte gUnknown_8254784 +_08043C14: + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_8043B48 +_08043C20: + movs r0, 0 +_08043C22: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8043B90 + + thumb_func_start sub_8043C2C +sub_8043C2C: @ 8043C2C + push {r4,r5,lr} + lsls r1, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + adds r3, r1, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bne _08043C4E + movs r0, 0 + b _08043C7A +_08043C4E: + cmp r4, 0x1F + bls _08043C6C + adds r0, r4, 0 + subs r0, 0x20 + movs r2, 0x1 + lsls r2, r0 + ldr r0, _08043C68 @ =gUnknown_8252BC8 + lsls r1, 3 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + ands r0, r2 + b _08043C7A + .align 2, 0 +_08043C68: .4byte gUnknown_8252BC8 +_08043C6C: + movs r1, 0x1 + lsls r1, r5 + ldr r2, _08043C80 @ =gUnknown_8252BC8 + lsls r0, r3, 3 + adds r0, r2 + ldr r0, [r0] + ands r0, r1 +_08043C7A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08043C80: .4byte gUnknown_8252BC8 + thumb_func_end sub_8043C2C + + thumb_func_start sub_8043C84 +sub_8043C84: @ 8043C84 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r6, r0, 0 + str r1, [sp, 0x8] + movs r0, 0 + mov r10, r0 + adds r0, r6, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r6, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + movs r5, 0 + mov r4, sp +_08043CBA: + adds r1, r5, 0 + adds r1, 0xD + adds r0, r6, 0 + movs r2, 0 + bl sub_803FBE8 + strh r0, [r4] + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08043CBA + movs r5, 0 + ldr r6, _08043DC8 @ =gUnknown_825D7B4 + lsls r1, r7, 2 + adds r2, r1, r6 + ldr r3, [r2] + ldrh r0, [r3] + ldr r4, _08043DCC @ =0x0000ffff + str r1, [sp, 0x14] + cmp r0, r4 + beq _08043DB4 + mov r9, r2 + str r3, [sp, 0x10] +_08043CE8: + lsls r2, r5, 1 + ldr r1, [sp, 0x10] + adds r0, r2, r1 + ldrh r3, [r0] + movs r0, 0xFE + lsls r0, 8 + ands r0, r3 + ldr r4, [sp, 0xC] + lsls r1, r4, 9 + adds r7, r2, 0 + adds r5, 0x1 + mov r12, r5 + cmp r0, r1 + bgt _08043D9E + movs r4, 0 + mov r0, sp + ldrh r1, [r0] + ldr r0, _08043DD0 @ =0x000001ff + ands r0, r3 + cmp r1, r0 + beq _08043D38 + ldr r0, [sp, 0x14] + ldr r1, _08043DC8 @ =gUnknown_825D7B4 + adds r6, r0, r1 + ldr r2, _08043DD0 @ =0x000001ff + mov r8, r2 + mov r3, sp + adds r5, r7, 0 +_08043D20: + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + bgt _08043D38 + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _08043D20 +_08043D38: + cmp r4, 0x4 + bne _08043D9E + movs r4, 0 + cmp r4, r10 + bge _08043D7C + mov r1, r9 + ldr r0, [r1] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, [sp, 0x8] + ldrh r2, [r0] + ldr r0, _08043DD0 @ =0x000001ff + ands r0, r1 + cmp r2, r0 + beq _08043D7C + ldr r1, [sp, 0x14] + ldr r2, _08043DC8 @ =gUnknown_825D7B4 + adds r6, r1, r2 + ldr r0, _08043DD0 @ =0x000001ff + mov r8, r0 + ldr r3, [sp, 0x8] + adds r5, r7, 0 +_08043D64: + adds r3, 0x2 + adds r4, 0x1 + cmp r4, r10 + bge _08043D7C + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _08043D64 +_08043D7C: + cmp r4, r10 + bne _08043D9E + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r2, r4, 1 + ldr r1, [sp, 0x8] + adds r2, r1 + mov r4, r9 + ldr r0, [r4] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, _08043DD0 @ =0x000001ff + ands r0, r1 + strh r0, [r2] +_08043D9E: + mov r5, r12 + cmp r5, 0x13 + bgt _08043DB4 + mov r1, r9 + ldr r0, [r1] + lsls r1, r5, 1 + adds r1, r0 + ldrh r0, [r1] + ldr r2, _08043DCC @ =0x0000ffff + cmp r0, r2 + bne _08043CE8 +_08043DB4: + mov r0, r10 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08043DC8: .4byte gUnknown_825D7B4 +_08043DCC: .4byte 0x0000ffff +_08043DD0: .4byte 0x000001ff + thumb_func_end sub_8043C84 + + thumb_func_start sub_8043DD4 +sub_8043DD4: @ 8043DD4 + push {r4-r7,lr} + adds r6, r1, 0 + lsls r0, 16 + movs r5, 0 + movs r4, 0 + ldr r1, _08043E20 @ =gUnknown_825D7B4 + lsrs r0, 14 + adds r0, r1 + ldr r2, [r0] + ldrh r0, [r2] + ldr r1, _08043E24 @ =0x0000ffff + cmp r0, r1 + beq _08043E18 + ldr r0, _08043E28 @ =0x000001ff + mov r12, r0 + adds r7, r1, 0 + adds r3, r2, 0 +_08043DF6: + adds r1, r5, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 1 + adds r1, r6 + ldrh r2, [r3] + mov r0, r12 + ands r0, r2 + strh r0, [r1] + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x13 + bgt _08043E18 + ldrh r0, [r3] + cmp r0, r7 + bne _08043DF6 +_08043E18: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08043E20: .4byte gUnknown_825D7B4 +_08043E24: .4byte 0x0000ffff +_08043E28: .4byte 0x000001ff + thumb_func_end sub_8043DD4 + + thumb_func_start sub_8043E2C +sub_8043E2C: @ 8043E2C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + adds r6, r0, 0 + movs r0, 0 + mov r10, r0 + adds r0, r6, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r6, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x30] + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bne _08043E68 + movs r0, 0 + b _08043F72 +_08043E68: + movs r5, 0 + lsls r4, 2 + str r4, [sp, 0x38] + mov r4, sp +_08043E70: + adds r1, r5, 0 + adds r1, 0xD + adds r0, r6, 0 + movs r2, 0 + bl sub_803FBE8 + strh r0, [r4] + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08043E70 + movs r5, 0 + ldr r3, _08043F84 @ =gUnknown_825D7B4 + ldr r2, [sp, 0x38] + adds r1, r2, r3 + ldr r0, [r1] + ldrh r0, [r0] + ldr r2, _08043F88 @ =0x0000ffff + cmp r0, r2 + beq _08043F70 + mov r9, r1 + mov r4, sp + adds r4, 0x8 + str r4, [sp, 0x34] +_08043EA0: + mov r1, r9 + ldr r0, [r1] + lsls r2, r5, 1 + adds r0, r2, r0 + ldrh r3, [r0] + movs r0, 0xFE + lsls r0, 8 + ands r0, r3 + ldr r4, [sp, 0x30] + lsls r1, r4, 9 + adds r7, r2, 0 + adds r5, 0x1 + mov r12, r5 + cmp r0, r1 + bgt _08043F5A + movs r4, 0 + mov r0, sp + ldrh r1, [r0] + ldr r0, _08043F8C @ =0x000001ff + ands r0, r3 + cmp r1, r0 + beq _08043EF2 + ldr r0, [sp, 0x38] + ldr r1, _08043F84 @ =gUnknown_825D7B4 + adds r6, r0, r1 + ldr r2, _08043F8C @ =0x000001ff + mov r8, r2 + mov r3, sp + adds r5, r7, 0 +_08043EDA: + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + bgt _08043EF2 + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _08043EDA +_08043EF2: + cmp r4, 0x4 + bne _08043F5A + movs r4, 0 + cmp r4, r10 + bge _08043F38 + mov r1, r9 + ldr r0, [r1] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, [sp, 0x34] + ldrh r2, [r0] + ldr r0, _08043F8C @ =0x000001ff + ands r0, r1 + add r1, sp, 0x8 + cmp r2, r0 + beq _08043F38 + ldr r2, [sp, 0x38] + ldr r0, _08043F84 @ =gUnknown_825D7B4 + adds r6, r2, r0 + ldr r2, _08043F8C @ =0x000001ff + mov r8, r2 + adds r3, r1, 0 + adds r5, r7, 0 +_08043F20: + adds r3, 0x2 + adds r4, 0x1 + cmp r4, r10 + bge _08043F38 + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _08043F20 +_08043F38: + cmp r4, r10 + bne _08043F5A + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r2, r4, 1 + ldr r4, [sp, 0x34] + adds r2, r4, r2 + mov r1, r9 + ldr r0, [r1] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, _08043F8C @ =0x000001ff + ands r0, r1 + strh r0, [r2] +_08043F5A: + mov r5, r12 + cmp r5, 0x13 + bgt _08043F70 + mov r2, r9 + ldr r0, [r2] + lsls r1, r5, 1 + adds r1, r0 + ldrh r0, [r1] + ldr r4, _08043F88 @ =0x0000ffff + cmp r0, r4 + bne _08043EA0 +_08043F70: + mov r0, r10 +_08043F72: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08043F84: .4byte gUnknown_825D7B4 +_08043F88: .4byte 0x0000ffff +_08043F8C: .4byte 0x000001ff + thumb_func_end sub_8043E2C + + thumb_func_start sub_8043F90 +sub_8043F90: @ 8043F90 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_8043298 + adds r4, r0, 0 + bl sub_806E25C + cmp r0, 0 + bne _08043FB4 + cmp r4, 0x97 + bls _08043FB4 + ldr r0, _08043FB0 @ =0x0000ffff + b _08043FB6 + .align 2, 0 +_08043FB0: .4byte 0x0000ffff +_08043FB4: + adds r0, r4, 0 +_08043FB6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8043F90 + + thumb_func_start sub_8043FBC +sub_8043FBC: @ 8043FBC + push {lr} + ldr r1, _08043FD0 @ =gUnknown_2024024 + movs r2, 0 + adds r0, r1, 0x3 +_08043FC4: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08043FC4 + pop {r0} + bx r0 + .align 2, 0 +_08043FD0: .4byte gUnknown_2024024 + thumb_func_end sub_8043FBC + + thumb_func_start sub_8043FD4 +sub_8043FD4: @ 8043FD4 + push {lr} + ldr r0, _08043FFC @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _0804406C + movs r0, 0x80 + lsls r0, 7 + ands r0, r1 + cmp r0, 0 + bne _08043FF6 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08044000 +_08043FF6: + movs r0, 0x85 + lsls r0, 1 + b _08044070 + .align 2, 0 +_08043FFC: .4byte gUnknown_2022B4C +_08044000: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _0804406C + ldr r2, _08044028 @ =gUnknown_823EAC8 + ldr r0, _0804402C @ =gUnknown_20386AE + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x1] + subs r0, 0x53 + cmp r0, 0x7 + bhi _08044062 + lsls r0, 2 + ldr r1, _08044030 @ =_08044034 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08044028: .4byte gUnknown_823EAC8 +_0804402C: .4byte gUnknown_20386AE +_08044030: .4byte _08044034 + .align 2, 0 +_08044034: + .4byte _08044062 + .4byte _0804405C + .4byte _08044062 + .4byte _08044062 + .4byte _0804405C + .4byte _08044062 + .4byte _08044062 + .4byte _08044054 +_08044054: + ldr r0, _08044058 @ =0x0000012b + b _08044070 + .align 2, 0 +_08044058: .4byte 0x0000012b +_0804405C: + movs r0, 0x94 + lsls r0, 1 + b _08044070 +_08044062: + ldr r0, _08044068 @ =0x00000129 + b _08044070 + .align 2, 0 +_08044068: .4byte 0x00000129 +_0804406C: + movs r0, 0x95 + lsls r0, 1 +_08044070: + pop {r1} + bx r1 + thumb_func_end sub_8043FD4 + + thumb_func_start sub_8044074 +sub_8044074: @ 8044074 + push {lr} + bl sub_8071A44 + bl m4aMPlayAllStop + bl sub_8043FD4 + lsls r0, 16 + lsrs r0, 16 + bl sub_80722A0 + pop {r0} + bx r0 + thumb_func_end sub_8044074 + + thumb_func_start sub_8044090 +sub_8044090: @ 8044090 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_8071A44 + bl m4aMPlayAllStop + cmp r4, 0 + beq _080440AA + adds r0, r4, 0 + bl sub_8071A74 + b _080440B6 +_080440AA: + bl sub_8043FD4 + lsls r0, 16 + lsrs r0, 16 + bl sub_8071A74 +_080440B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8044090 + + thumb_func_start sub_80440BC +sub_80440BC: @ 80440BC + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + adds r6, r0, 0 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + adds r2, r0, 0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80440F4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80440BC + + thumb_func_start sub_80440F4 +sub_80440F4: @ 80440F4 + push {r4,r5,lr} + adds r3, r2, 0 + lsls r0, 16 + lsrs r4, r0, 16 + adds r5, r4, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08044110 + ldr r0, _0804410C @ =gUnknown_823730C + ldr r0, [r0] + b _0804413C + .align 2, 0 +_0804410C: .4byte gUnknown_823730C +_08044110: + lsrs r0, r1, 16 + ldr r2, _0804412C @ =0x0000ffff + ands r1, r2 + eors r0, r1 + lsrs r1, r3, 16 + eors r0, r1 + ands r3, r2 + eors r0, r3 + cmp r0, 0x7 + bls _08044134 + ldr r0, _08044130 @ =gUnknown_823730C + lsls r1, r4, 3 + b _08044138 + .align 2, 0 +_0804412C: .4byte 0x0000ffff +_08044130: .4byte gUnknown_823730C +_08044134: + ldr r0, _08044144 @ =gUnknown_82380CC + lsls r1, r5, 3 +_08044138: + adds r1, r0 + ldr r0, [r1] +_0804413C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08044144: .4byte gUnknown_82380CC + thumb_func_end sub_80440F4 + + thumb_func_start sub_8044148 +sub_8044148: @ 8044148 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + adds r6, r0, 0 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + adds r2, r0, 0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8044180 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8044148 + + thumb_func_start sub_8044180 +sub_8044180: @ 8044180 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsrs r0, r1, 16 + ldr r3, _080441A0 @ =0x0000ffff + ands r1, r3 + eors r0, r1 + lsrs r1, r2, 16 + eors r0, r1 + ands r2, r3 + eors r0, r2 + cmp r0, 0x7 + bls _080441A8 + lsls r0, r4, 3 + ldr r1, _080441A4 @ =gUnknown_823730C + b _080441AC + .align 2, 0 +_080441A0: .4byte 0x0000ffff +_080441A4: .4byte gUnknown_823730C +_080441A8: + lsls r0, r4, 3 + ldr r1, _080441B4 @ =gUnknown_82380CC +_080441AC: + adds r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080441B4: .4byte gUnknown_82380CC + thumb_func_end sub_8044180 + + thumb_func_start sub_80441B8 +sub_80441B8: @ 80441B8 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r2, _080441DC @ =gUnknown_825E014 + ldrh r0, [r2] + ldr r1, _080441E0 @ =0x0000ffff + cmp r0, r1 + beq _080441EA + adds r4, r1, 0 + adds r1, r2, 0 +_080441CC: + ldrh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + cmp r0, r3 + bne _080441E4 + movs r0, 0x1 + b _080441EC + .align 2, 0 +_080441DC: .4byte gUnknown_825E014 +_080441E0: .4byte 0x0000ffff +_080441E4: + ldrh r0, [r1] + cmp r0, r4 + bne _080441CC +_080441EA: + movs r0, 0 +_080441EC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80441B8 + + thumb_func_start sub_80441F4 +sub_80441F4: @ 80441F4 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08044208 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x19] + lsrs r0, 7 + bx lr + .align 2, 0 +_08044208: .4byte gUnknown_8254784 + thumb_func_end sub_80441F4 + + thumb_func_start sub_804420C +sub_804420C: @ 804420C + push {r4,lr} + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08044230 @ =gUnknown_825DE24 + lsls r1, r0, 2 + adds r1, r0 + adds r1, r4 + adds r1, r2 + movs r0, 0 + ldrsb r0, [r1, r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08044230: .4byte gUnknown_825DE24 + thumb_func_end sub_804420C + + thumb_func_start sub_8044234 +sub_8044234: @ 8044234 + push {r4,lr} + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8042EB4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08044258 @ =gUnknown_825DE24 + lsls r1, r0, 2 + adds r1, r0 + adds r1, r4 + adds r1, r2 + movs r0, 0 + ldrsb r0, [r1, r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08044258: .4byte gUnknown_825DE24 + thumb_func_end sub_8044234 + + thumb_func_start sub_804425C +sub_804425C: @ 804425C + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + movs r1, 0x7 + mov r2, sp + bl sub_803FBE8 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + mov r1, sp + bl sub_8044288 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_804425C + + thumb_func_start sub_8044288 +sub_8044288: @ 8044288 + push {r4,r5,lr} + adds r5, r1, 0 + ldr r1, _080442CC @ =gUnknown_300500C + ldr r3, [r1] + ldrb r2, [r3, 0xA] + ldrb r1, [r3, 0xB] + lsls r1, 8 + orrs r2, r1 + ldrb r1, [r3, 0xC] + lsls r1, 16 + orrs r2, r1 + ldrb r1, [r3, 0xD] + lsls r1, 24 + orrs r2, r1 + cmp r0, r2 + bne _080442D0 + movs r4, 0 + ldrb r0, [r5] + cmp r0, 0xFF + beq _080442C6 + adds r2, r5, 0 +_080442B2: + adds r1, r3, r4 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _080442D0 + adds r2, 0x1 + adds r4, 0x1 + ldrb r0, [r2] + cmp r0, 0xFF + bne _080442B2 +_080442C6: + movs r0, 0 + b _080442D2 + .align 2, 0 +_080442CC: .4byte gUnknown_300500C +_080442D0: + movs r0, 0x1 +_080442D2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8044288 + + thumb_func_start sub_80442D8 +sub_80442D8: @ 80442D8 + push {lr} + bl sub_80442E4 + pop {r0} + bx r0 + thumb_func_end sub_80442D8 + + thumb_func_start sub_80442E4 +sub_80442E4: @ 80442E4 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r6, 0 +_080442EC: + adds r4, r6, 0 + adds r4, 0xD + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_803FD44 + cmp r0, 0 + beq _08044338 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_803FD44 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0x15 + movs r2, 0 + bl sub_803FD44 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, r6, 24 + lsrs r2, 24 + adds r0, r4, 0 + bl sub_804101C + mov r1, sp + strb r0, [r1] + adds r1, r6, 0 + adds r1, 0x11 + adds r0, r5, 0 + mov r2, sp + bl sub_80404D0 +_08044338: + adds r6, 0x1 + cmp r6, 0x3 + ble _080442EC + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80442E4 + + thumb_func_start sub_8044348 +sub_8044348: @ 8044348 + push {r4,r5,lr} + ldr r2, _0804438C @ =gUnknown_2023D6A + ldr r5, _08044390 @ =gUnknown_2023FE8 + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0xAC + ldrb r0, [r0] + strb r0, [r2] + ldr r4, _08044394 @ =gUnknown_2022AB8 + movs r0, 0xFD + strb r0, [r4] + movs r0, 0x4 + strb r0, [r4, 0x1] + adds r1, 0x49 + ldrb r0, [r1] + strb r0, [r4, 0x2] + movs r0, 0xFF + strb r0, [r4, 0x4] + ldrb r0, [r1] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0804439C + ldr r1, _08044398 @ =gUnknown_2023BCE + ldr r0, [r5] + adds r0, 0x49 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8128030 + b _080443AA + .align 2, 0 +_0804438C: .4byte gUnknown_2023D6A +_08044390: .4byte gUnknown_2023FE8 +_08044394: .4byte gUnknown_2022AB8 +_08044398: .4byte gUnknown_2023BCE +_0804439C: + ldr r1, _080443E0 @ =gUnknown_2023BCE + ldr r0, [r5] + adds r0, 0x49 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] +_080443AA: + strb r0, [r4, 0x3] + ldr r4, _080443E4 @ =gUnknown_2022AC8 + movs r0, 0xFD + strb r0, [r4] + movs r0, 0x4 + strb r0, [r4, 0x1] + ldr r1, _080443E8 @ =gUnknown_2024004 + ldrb r0, [r1] + strb r0, [r4, 0x2] + ldr r2, _080443E0 @ =gUnknown_2023BCE + ldrb r0, [r1] + lsls r0, 1 + adds r0, r2 + ldrb r0, [r0] + bl sub_8128030 + strb r0, [r4, 0x3] + movs r0, 0xFF + strb r0, [r4, 0x4] + ldr r0, _080443EC @ =gUnknown_83FCA2C + ldr r1, _080443F0 @ =gUnknown_2021D18 + bl sub_80D7868 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080443E0: .4byte gUnknown_2023BCE +_080443E4: .4byte gUnknown_2022AC8 +_080443E8: .4byte gUnknown_2024004 +_080443EC: .4byte gUnknown_83FCA2C +_080443F0: .4byte gUnknown_2021D18 + thumb_func_end sub_8044348 + + thumb_func_start sub_80443F4 +sub_80443F4: @ 80443F4 + push {r4,r5,lr} + ldr r0, _0804444C @ =gUnknown_2022B4C + ldr r0, [r0] + ldr r1, _08044450 @ =0x00012008 + ands r0, r1 + cmp r0, 0 + bne _08044468 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r4, _08044454 @ =gUnknown_202402C + adds r0, r4, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08044458 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r3, r1, 2 + adds r1, r3, r2 + ldrh r0, [r1, 0xC] + ldrh r1, [r1, 0xE] + cmp r0, r1 + beq _0804443E + cmp r5, 0x2C + bls _08044468 + cmp r5, 0x5E + bhi _0804445C +_0804443E: + adds r2, 0xC + adds r2, r3, r2 + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + b _08044468 + .align 2, 0 +_0804444C: .4byte gUnknown_2022B4C +_08044450: .4byte 0x00012008 +_08044454: .4byte gUnknown_202402C +_08044458: .4byte gUnknown_8254784 +_0804445C: + adds r2, 0xE + adds r2, r3, r2 + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C +_08044468: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80443F4 + + thumb_func_start sub_8044470 +sub_8044470: @ 8044470 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_804449C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8044470 + + thumb_func_start sub_804449C +sub_804449C: @ 804449C + push {r4,lr} + movs r4, 0 + lsrs r2, r0, 16 + ldr r3, _080444C0 @ =0x0000ffff + ands r0, r3 + eors r2, r0 + lsrs r0, r1, 16 + eors r2, r0 + ands r1, r3 + eors r2, r1 + cmp r2, 0x7 + bhi _080444B6 + movs r4, 0x1 +_080444B6: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080444C0: .4byte 0x0000ffff + thumb_func_end sub_804449C + + thumb_func_start sub_80444C4 +sub_80444C4: @ 80444C4 + push {r4,lr} + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080444F4 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x18] + movs r0, 0x2 + eors r0, r1 + bl sub_8043658 + adds r1, r0, 0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r4, 0x8 + adds r0, r4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080444F4: .4byte gUnknown_202273C + thumb_func_end sub_80444C4 + + thumb_func_start sub_80444F8 +sub_80444F8: @ 80444F8 + push {r4-r6,lr} + movs r6, 0x1 + movs r5, 0 +_080444FE: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08044548 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x5 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x1 + bne _08044538 + adds r0, r4, 0 + movs r1, 0x6 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08044538 + adds r0, r4, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r6 + bls _08044538 + adds r6, r0, 0 +_08044538: + adds r5, 0x1 + cmp r5, 0x5 + ble _080444FE + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08044548: .4byte gUnknown_2024284 + thumb_func_end sub_80444F8 + + thumb_func_start sub_804454C +sub_804454C: @ 804454C + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08044558 @ =gUnknown_82538A8 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08044558: .4byte gUnknown_82538A8 + thumb_func_end sub_804454C + + thumb_func_start sub_804455C +sub_804455C: @ 804455C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r0, 0x5 + bhi _08044632 + lsls r0, 2 + ldr r1, _08044574 @ =_08044578 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08044574: .4byte _08044578 + .align 2, 0 +_08044578: + .4byte _08044632 + .4byte _08044590 + .4byte _08044664 + .4byte _080445BC + .4byte _08044664 + .4byte _080445F4 +_08044590: + ldr r0, _080445B0 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08044632 + ldr r0, _080445B4 @ =gUnknown_30030F0 + ldr r1, _080445B8 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08044632 + b _0804461A + .align 2, 0 +_080445B0: .4byte gUnknown_2022B4C +_080445B4: .4byte gUnknown_30030F0 +_080445B8: .4byte 0x00000439 +_080445BC: + ldr r0, _080445E8 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08044632 + ldr r0, _080445EC @ =gUnknown_30030F0 + ldr r1, _080445F0 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08044632 + cmp r5, 0x1 + beq _08044664 + cmp r5, 0x4 + beq _08044664 + cmp r5, 0x5 + beq _08044664 + b _08044632 + .align 2, 0 +_080445E8: .4byte gUnknown_2022B4C +_080445EC: .4byte gUnknown_30030F0 +_080445F0: .4byte 0x00000439 +_080445F4: + ldr r0, _08044638 @ =gUnknown_2022B4C + ldr r2, [r0] + movs r3, 0x2 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _08044648 + ldr r0, _0804463C @ =gUnknown_30030F0 + ldr r1, _08044640 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08044632 + movs r0, 0x40 + ands r2, r0 + cmp r2, 0 + beq _08044658 +_0804461A: + ldr r4, _08044644 @ =gUnknown_202273C + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x18] + cmp r0, r5 + bne _08044664 +_08044632: + movs r0, 0 + b _08044666 + .align 2, 0 +_08044638: .4byte gUnknown_2022B4C +_0804463C: .4byte gUnknown_30030F0 +_08044640: .4byte 0x00000439 +_08044644: .4byte gUnknown_202273C +_08044648: + ldr r0, _0804466C @ =gUnknown_30030F0 + ldr r1, _08044670 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08044632 +_08044658: + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08044632 +_08044664: + movs r0, 0x1 +_08044666: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0804466C: .4byte gUnknown_30030F0 +_08044670: .4byte 0x00000439 + thumb_func_end sub_804455C + + thumb_func_start sub_8044674 +sub_8044674: @ 8044674 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r0, _0804469C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08044698 + adds r0, r5, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xCD + lsls r1, 1 + cmp r0, r1 + beq _080446A0 +_08044698: + movs r0, 0 + b _080446FE + .align 2, 0 +_0804469C: .4byte gUnknown_2022B4C +_080446A0: + adds r1, r6, 0 + adds r1, 0x27 + adds r0, r5, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + adds r1, r6, 0 + adds r1, 0x1A + adds r0, r5, 0 + movs r2, 0 + bl sub_803FBE8 + ldr r2, _08044704 @ =gUnknown_825E026 + lsls r1, r6, 1 + adds r1, r2 + ldrh r1, [r1] + lsls r1, 1 + adds r1, r4 + cmp r0, 0 + bge _080446CC + adds r0, 0x3 +_080446CC: + asrs r0, 2 + adds r0, r1, r0 + adds r1, r5, 0 + adds r1, 0x54 + ldrb r1, [r1] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, 0x5 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + bl sub_8042E9C + lsls r0, 24 + lsrs r0, 24 + lsls r2, r6, 24 + lsrs r2, 24 + adds r1, r4, 0 + bl sub_8043698 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 +_080446FE: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08044704: .4byte gUnknown_825E026 + thumb_func_end sub_8044674 + + thumb_func_start sub_8044708 +sub_8044708: @ 8044708 + push {r4,r5,lr} + sub sp, 0x4 + movs r5, 0 +_0804470E: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080447A8 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xCD + lsls r1, 1 + cmp r0, r1 + bne _08044798 + adds r0, r4, 0 + movs r1, 0x3B + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x3B + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3C + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x3C + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3D + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x3D + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3E + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x3E + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x3F + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x3F + mov r2, sp + bl sub_804037C +_08044798: + adds r5, 0x1 + cmp r5, 0x5 + ble _0804470E + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080447A8: .4byte gUnknown_2024284 + thumb_func_end sub_8044708 + + thumb_func_start sub_80447AC +sub_80447AC: @ 80447AC + push {lr} + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080447E8 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r0, r3, 0x4 + adds r0, r1, r0 + ldr r2, [r0] + movs r0, 0x7 + ands r2, r0 + adds r1, r3 + ldrb r0, [r1, 0x13] + lsls r0, 3 + orrs r2, r0 + ldr r0, _080447EC @ =gUnknown_825E032 + lsls r2, 1 + adds r2, r0 + ldrh r0, [r2] + bl sub_804454C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_080447E8: .4byte gUnknown_202273C +_080447EC: .4byte gUnknown_825E032 + thumb_func_end sub_80447AC + + thumb_func_start sub_80447F0 +sub_80447F0: @ 80447F0 + push {lr} + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0804482C @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r0, r3, 0x4 + adds r0, r1, r0 + ldr r2, [r0] + movs r0, 0x7 + ands r2, r0 + adds r1, r3 + ldrb r0, [r1, 0x13] + lsls r0, 3 + orrs r2, r0 + ldr r1, _08044830 @ =gUnknown_825393E + ldr r0, _08044834 @ =gUnknown_825E032 + lsls r2, 1 + adds r2, r0 + ldrh r0, [r2] + adds r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_0804482C: .4byte gUnknown_202273C +_08044830: .4byte gUnknown_825393E +_08044834: .4byte gUnknown_825E032 + thumb_func_end sub_80447F0 + + thumb_func_start sub_8044838 +sub_8044838: @ 8044838 + push {r4-r7,lr} + sub sp, 0x14 + ldr r0, _08044888 @ =gUnknown_20370C0 + ldrh r5, [r0] + ldr r0, _0804488C @ =gUnknown_20370C2 + ldrh r4, [r0] + ldr r0, _08044890 @ =gUnknown_20370C4 + ldrh r6, [r0] + bl sub_803DA34 + ldr r7, _08044894 @ =gUnknown_202402C + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r7, 0 + adds r1, r5, 0 + adds r2, r4, 0 + movs r3, 0x20 + bl sub_803E1EC + cmp r6, 0 + beq _08044880 + add r0, sp, 0x10 + strb r6, [r0] + adds r1, r0, 0 + asrs r0, r6, 8 + strb r0, [r1, 0x1] + adds r0, r7, 0 + movs r1, 0xC + add r2, sp, 0x10 + bl sub_804037C +_08044880: + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08044888: .4byte gUnknown_20370C0 +_0804488C: .4byte gUnknown_20370C2 +_08044890: .4byte gUnknown_20370C4 +_08044894: .4byte gUnknown_202402C + thumb_func_end sub_8044838 + + thumb_func_start sub_8044898 +sub_8044898: @ 8044898 + push {r4-r7,lr} + adds r7, r2, 0 + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, r4, 0 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0x2 + eors r0, r5 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + adds r0, r4, 0 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + bne _080448EE + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8088E74 + adds r0, r4, 0 + bl sub_8043200 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC9 + bne _080448D8 + ldr r0, _080448F4 @ =gUnknown_300500C + ldr r0, [r0] + str r7, [r0, 0x1C] +_080448D8: + adds r0, r6, 0 + bl sub_8043200 + lsls r0, 16 + movs r1, 0x9A + lsls r1, 17 + cmp r0, r1 + bne _080448EE + ldr r0, _080448F4 @ =gUnknown_300500C + ldr r0, [r0] + str r7, [r0, 0x20] +_080448EE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080448F4: .4byte gUnknown_300500C + thumb_func_end sub_8044898 + + thumb_func_start sub_80448F8 +sub_80448F8: @ 80448F8 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r1, 24 + lsrs r2, r1, 24 + ldr r0, _0804493C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _08044944 + adds r0, r2, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08044944 + adds r0, r4, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + mov r0, sp + bl sub_8008D28 + ldr r1, _08044940 @ =gUnknown_841D148 + mov r0, sp + bl sub_8008E28 + cmp r0, 0 + bne _08044944 + movs r0, 0x1 + b _08044946 + .align 2, 0 +_0804493C: .4byte gUnknown_2022B4C +_08044940: .4byte gUnknown_841D148 +_08044944: + movs r0, 0 +_08044946: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80448F8 + + thumb_func_start sub_8044950 +sub_8044950: @ 8044950 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r6, 0 + cmp r1, 0x3 + bls _080449EC + adds r5, r6, 0 + ldrb r0, [r4] + lsls r0, 28 + lsrs r0, 28 + cmp r5, r0 + bge _08044A2C +_08044972: + ldr r1, [r4, 0x10] + lsls r3, r5, 1 + adds r0, r3, r5 + lsls r0, 3 + ldr r2, _080449E8 @ =gUnknown_825DEF0 + adds r1, r0, r1 + adds r0, r2 + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + movs r6, 0 + ldrb r2, [r4, 0x1] + ldr r0, [r4, 0x10] + mov r10, r0 + mov r8, r3 + ldr r7, [r4, 0x14] + adds r1, r5, 0x1 + mov r9, r1 + cmp r6, r2 + bcs _080449C2 + mov r12, r7 + ldr r1, [r4, 0xC] + lsls r0, r5, 2 + adds r0, r1 + ldr r3, [r0] +_080449A6: + adds r0, r5, 0 + muls r0, r2 + adds r0, r6 + lsls r0, 3 + add r0, r12 + lsls r1, r6, 11 + adds r1, r3, r1 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldrb r2, [r4, 0x1] + cmp r6, r2 + bcc _080449A6 +_080449C2: + mov r2, r8 + adds r1, r2, r5 + lsls r1, 3 + add r1, r10 + ldrb r0, [r4, 0x1] + muls r0, r5 + lsls r0, 3 + adds r0, r7, r0 + str r0, [r1, 0xC] + mov r3, r9 + lsls r0, r3, 16 + lsrs r5, r0, 16 + ldrb r0, [r4] + lsls r0, 28 + lsrs r0, 28 + cmp r5, r0 + blt _08044972 + b _08044A2C + .align 2, 0 +_080449E8: .4byte gUnknown_825DEF0 +_080449EC: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r2, _08044A3C @ =gUnknown_825DEF0 + ldr r1, [r4, 0x10] + adds r0, r2 + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + ldm r0!, {r3,r5,r7} + stm r1!, {r3,r5,r7} + ldr r0, [r4, 0x10] + mov r10, r0 + ldr r7, [r4, 0x14] + ldrb r1, [r4, 0x1] + cmp r6, r1 + bcs _08044A28 + adds r3, r7, 0 + ldr r0, [r4, 0xC] + ldr r2, [r0] +_08044A12: + lsls r0, r6, 3 + adds r0, r3 + lsls r1, r6, 11 + adds r1, r2, r1 + str r1, [r0] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldrb r5, [r4, 0x1] + cmp r6, r5 + bcc _08044A12 +_08044A28: + mov r6, r10 + str r7, [r6, 0xC] +_08044A2C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08044A3C: .4byte gUnknown_825DEF0 + thumb_func_end sub_8044950 + + thumb_func_start sub_8044A40 +sub_8044A40: @ 8044A40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r0, 0 + ldrb r0, [r4] + lsls r0, 28 + movs r3, 0 + cmp r0, 0 + beq _08044ADA + ldr r0, _08044AE8 @ =gUnknown_825E05C + mov r10, r0 +_08044A5A: + ldr r0, [r4, 0x10] + lsls r2, r3, 1 + adds r1, r2, r3 + lsls r1, 3 + adds r1, r0 + mov r0, r10 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + movs r5, 0 + ldr r0, [r4, 0x10] + mov r8, r0 + mov r12, r2 + ldr r7, [r4, 0x14] + adds r1, r3, 0x1 + mov r9, r1 + ldrb r6, [r4, 0x1] + cmp r5, r6 + bcs _08044AAE + adds r6, r7, 0 + ldr r1, [r4, 0xC] + lsls r0, r3, 2 + adds r0, r1 + ldr r2, [r0] +_08044A8C: + ldrb r0, [r4] + lsls r0, 28 + lsrs r0, 28 + adds r1, r3, 0 + muls r1, r0 + adds r1, r5 + lsls r1, 3 + adds r1, r6 + lsls r0, r5, 11 + adds r0, r2, r0 + str r0, [r1] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldrb r0, [r4, 0x1] + cmp r5, r0 + bcc _08044A8C +_08044AAE: + mov r5, r12 + adds r1, r5, r3 + lsls r1, 3 + add r1, r8 + ldrb r0, [r4] + lsls r0, 28 + lsrs r0, 28 + muls r0, r3 + lsls r0, 3 + adds r0, r7, r0 + str r0, [r1, 0xC] + ldr r6, _08044AEC @ =gUnknown_82349BC + str r6, [r1, 0x8] + strh r3, [r1, 0x2] + mov r7, r9 + lsls r0, r7, 16 + lsrs r3, r0, 16 + ldrb r0, [r4] + lsls r0, 28 + lsrs r0, 28 + cmp r3, r0 + blt _08044A5A +_08044ADA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08044AE8: .4byte gUnknown_825E05C +_08044AEC: .4byte gUnknown_82349BC + thumb_func_end sub_8044A40 + + thumb_func_start sub_8044AF0 +sub_8044AF0: @ 8044AF0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0 + mov r8, r0 + ldr r4, _08044B34 @ =gUnknown_20244F4 + ldr r1, [r4] + cmp r1, 0 + beq _08044B1E + ldrb r0, [r1, 0x2] + cmp r0, 0xA3 + beq _08044B2E + adds r0, r1, 0 + movs r1, 0 + movs r2, 0x18 + bl memset + mov r1, r8 + str r1, [r4] +_08044B1E: + ldr r4, _08044B34 @ =gUnknown_20244F4 + movs r0, 0x18 + bl sub_8002BB0 + adds r2, r0, 0 + str r2, [r4] + cmp r2, 0 + bne _08044B38 +_08044B2E: + movs r0, 0 + b _08044D70 + .align 2, 0 +_08044B34: .4byte gUnknown_20244F4 +_08044B38: + cmp r5, 0 + beq _08044B94 + cmp r5, 0x1 + bne _08044B94 + cmp r6, 0x4 + bne _08044B5E + ldrb r1, [r2] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r4] + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + movs r1, 0x40 + b _08044B7C +_08044B5E: + cmp r6, 0x4 + bls _08044B64 + movs r6, 0 +_08044B64: + ldrb r1, [r2] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r4] + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + movs r1, 0x10 +_08044B7C: + orrs r0, r1 + strb r0, [r2] + ldr r2, _08044B90 @ =gUnknown_20244F4 + ldr r1, [r2] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x3] + b _08044BD0 + .align 2, 0 +_08044B90: .4byte gUnknown_20244F4 +_08044B94: + cmp r6, 0 + bne _08044B9A + movs r6, 0x1 +_08044B9A: + cmp r6, 0x8 + bls _08044BA0 + movs r6, 0x8 +_08044BA0: + ldr r4, _08044C10 @ =gUnknown_20244F4 + ldr r3, [r4] + movs r0, 0xF + adds r1, r6, 0 + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldr r2, [r4] + lsls r3, r6, 4 + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldr r1, [r4] + movs r2, 0 + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r0, [r4] + strb r2, [r0, 0x3] +_08044BD0: + ldr r5, _08044C10 @ =gUnknown_20244F4 + ldr r0, [r5] + ldrb r1, [r0, 0x1] + lsls r1, 11 + str r1, [r0, 0x4] + ldrb r0, [r0] + lsls r0, 28 + lsrs r0, 28 + muls r0, r1 + bl sub_8002BB0 + ldr r1, [r5] + str r0, [r1, 0x8] + ldrb r0, [r1] + lsls r0, 28 + lsrs r0, 23 + bl sub_8002BB0 + adds r2, r0, 0 + ldr r1, [r5] + str r2, [r1, 0xC] + ldr r0, [r1, 0x8] + cmp r0, 0 + beq _08044C04 + cmp r2, 0 + bne _08044C14 +_08044C04: + movs r0, 0x1 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + b _08044C44 + .align 2, 0 +_08044C10: .4byte gUnknown_20244F4 +_08044C14: + ldrb r0, [r1] + lsls r0, 28 + movs r4, 0 + adds r3, r5, 0 + cmp r0, 0 + beq _08044C44 +_08044C20: + ldr r3, [r5] + ldr r0, [r3, 0xC] + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r3, 0x4] + adds r2, r0, 0 + muls r2, r4 + ldr r0, [r3, 0x8] + adds r0, r2 + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r3] + lsls r0, 28 + lsrs r0, 28 + cmp r4, r0 + blt _08044C20 +_08044C44: + ldr r5, _08044C8C @ =gUnknown_20244F4 + ldr r0, [r5] + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + bl sub_8002BB0 + ldr r2, [r5] + str r0, [r2, 0x10] + ldrb r1, [r2] + lsls r1, 28 + lsrs r1, 28 + ldrb r0, [r2, 0x1] + lsls r0, 3 + muls r0, r1 + bl sub_8002BB0 + adds r2, r0, 0 + ldr r1, [r5] + str r2, [r1, 0x14] + ldr r0, [r1, 0x10] + cmp r0, 0 + beq _08044C7C + cmp r2, 0 + bne _08044C90 +_08044C7C: + movs r0, 0x2 + mov r1, r8 + orrs r1, r0 + lsls r0, r1, 24 + lsrs r0, 24 + mov r8, r0 + b _08044CE2 + .align 2, 0 +_08044C8C: .4byte gUnknown_20244F4 +_08044C90: + movs r4, 0 + ldrb r0, [r1, 0x1] + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + muls r0, r1 + adds r3, r5, 0 + cmp r4, r0 + bge _08044CC6 + adds r7, r3, 0 + movs r5, 0x80 + lsls r5, 4 +_08044CA8: + ldr r2, [r7] + ldr r1, [r2, 0x14] + lsls r0, r4, 3 + adds r0, r1 + strh r5, [r0, 0x4] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r1, [r2, 0x1] + ldrb r0, [r2] + lsls r0, 28 + lsrs r0, 28 + muls r0, r1 + cmp r4, r0 + blt _08044CA8 +_08044CC6: + ldr r0, [r3] + ldrb r4, [r0, 0x3] + cmp r4, 0 + beq _08044CDA + cmp r4, 0x1 + bne _08044CDA + adds r1, r6, 0 + bl sub_8044950 + b _08044CE2 +_08044CDA: + ldr r0, _08044D60 @ =gUnknown_20244F4 + ldr r0, [r0] + bl sub_8044A40 +_08044CE2: + movs r0, 0x2 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _08044D12 + ldr r4, _08044D60 @ =gUnknown_20244F4 + ldr r0, [r4] + ldr r0, [r0, 0x14] + cmp r0, 0 + beq _08044D00 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x14] +_08044D00: + ldr r0, [r4] + ldr r0, [r0, 0x10] + cmp r0, 0 + beq _08044D12 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x10] +_08044D12: + movs r0, 0x1 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _08044D42 + ldr r4, _08044D60 @ =gUnknown_20244F4 + ldr r0, [r4] + ldr r0, [r0, 0xC] + cmp r0, 0 + beq _08044D30 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0xC] +_08044D30: + ldr r0, [r4] + ldr r0, [r0, 0x8] + cmp r0, 0 + beq _08044D42 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x8] +_08044D42: + mov r0, r8 + cmp r0, 0 + beq _08044D64 + ldr r4, _08044D60 @ =gUnknown_20244F4 + ldr r0, [r4] + movs r1, 0 + movs r2, 0x18 + bl memset + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + b _08044D6C + .align 2, 0 +_08044D60: .4byte gUnknown_20244F4 +_08044D64: + ldr r0, _08044D7C @ =gUnknown_20244F4 + ldr r1, [r0] + movs r0, 0xA3 + strb r0, [r1, 0x2] +_08044D6C: + ldr r0, _08044D7C @ =gUnknown_20244F4 + ldr r0, [r0] +_08044D70: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08044D7C: .4byte gUnknown_20244F4 + thumb_func_end sub_8044AF0 + + thumb_func_start sub_8044D80 +sub_8044D80: @ 8044D80 + push {r4,lr} + ldr r4, _08044D9C @ =gUnknown_20244F4 + ldr r1, [r4] + cmp r1, 0 + beq _08044DFA + ldrb r0, [r1, 0x2] + cmp r0, 0xA3 + beq _08044DA0 + adds r0, r1, 0 + movs r1, 0 + movs r2, 0x18 + bl memset + b _08044DF6 + .align 2, 0 +_08044D9C: .4byte gUnknown_20244F4 +_08044DA0: + ldr r0, [r1, 0x14] + cmp r0, 0 + beq _08044DB0 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x14] +_08044DB0: + ldr r0, [r4] + ldr r0, [r0, 0x10] + cmp r0, 0 + beq _08044DC2 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x10] +_08044DC2: + ldr r0, [r4] + ldr r0, [r0, 0xC] + cmp r0, 0 + beq _08044DD4 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0xC] +_08044DD4: + ldr r0, [r4] + ldr r0, [r0, 0x8] + cmp r0, 0 + beq _08044DE6 + bl sub_8002BC4 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x8] +_08044DE6: + ldr r0, [r4] + movs r1, 0 + movs r2, 0x18 + bl memset + ldr r0, [r4] + bl sub_8002BC4 +_08044DF6: + movs r0, 0 + str r0, [r4] +_08044DFA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8044D80 + + thumb_func_start sub_8044E00 +sub_8044E00: @ 8044E00 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08044E14 @ =gUnknown_20244F4 + ldr r2, [r0] + ldrb r0, [r2, 0x2] + cmp r0, 0xA3 + beq _08044E18 + movs r0, 0 + b _08044E2C + .align 2, 0 +_08044E14: .4byte gUnknown_20244F4 +_08044E18: + ldrb r0, [r2] + lsls r0, 28 + lsrs r0, 28 + cmp r1, r0 + blt _08044E24 + movs r1, 0 +_08044E24: + ldr r0, [r2, 0xC] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_08044E2C: + pop {r1} + bx r1 + thumb_func_end sub_8044E00 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s new file mode 100644 index 000000000..648fb9418 --- /dev/null +++ b/asm/pokemon_icon.s @@ -0,0 +1,848 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8096E18 +sub_8096E18: @ 8096E18 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x30 + adds r4, r0, 0 + adds r6, r1, 0 + ldr r0, [sp, 0x4C] + ldr r1, [sp, 0x50] + ldr r5, [sp, 0x54] + lsls r4, 16 + lsrs r4, 16 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + lsls r3, 16 + lsrs r7, r3, 16 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _08096EB4 @ =gUnknown_83D4068 + str r0, [sp, 0x18] + adds r0, r4, 0 + adds r2, r5, 0 + bl sub_8097054 + str r0, [sp, 0x1C] + ldr r0, _08096EB8 @ =gUnknown_83D40AC + str r0, [sp, 0x20] + ldr r0, _08096EBC @ =gUnknown_83D40E0 + str r0, [sp, 0x24] + str r6, [sp, 0x28] + ldr r0, _08096EC0 @ =gUnknown_83D3E80 + adds r0, r4, r0 + ldr r1, _08096EC4 @ =0x0000dac0 + adds r5, r1, 0 + ldrb r0, [r0] + adds r1, r5, r0 + add r0, sp, 0x2C + strh r1, [r0] + add r1, sp, 0x18 + mov r0, sp + movs r2, 0x18 + bl memcpy + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08096E7E + mov r0, sp + strh r5, [r0, 0x14] +_08096E7E: + mov r0, r8 + lsls r1, r0, 16 + asrs r1, 16 + lsls r2, r7, 16 + asrs r2, 16 + mov r0, sp + mov r3, r9 + bl sub_8097300 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _08096EC8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8097228 + adds r0, r4, 0 + add sp, 0x30 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08096EB4: .4byte gUnknown_83D4068 +_08096EB8: .4byte gUnknown_83D40AC +_08096EBC: .4byte gUnknown_83D40E0 +_08096EC0: .4byte gUnknown_83D3E80 +_08096EC4: .4byte 0x0000dac0 +_08096EC8: .4byte gUnknown_202063C + thumb_func_end sub_8096E18 + + thumb_func_start sub_8096ECC +sub_8096ECC: @ 8096ECC + push {r4-r7,lr} + sub sp, 0x18 + adds r4, r2, 0 + adds r5, r3, 0 + ldr r6, [sp, 0x2C] + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + mov r3, sp + ldr r2, _08096F44 @ =gUnknown_83D4068 + str r2, [sp] + movs r2, 0 + str r2, [sp, 0x4] + ldr r2, _08096F48 @ =gUnknown_83D40AC + str r2, [sp, 0x8] + ldr r2, _08096F4C @ =gUnknown_83D40E0 + str r2, [sp, 0xC] + str r1, [sp, 0x10] + ldr r2, _08096F50 @ =gUnknown_83D3E80 + adds r2, r0, r2 + ldr r7, _08096F54 @ =0x0000dac0 + adds r1, r7, 0 + ldrb r2, [r2] + adds r1, r2 + strh r1, [r3, 0x14] + ldr r1, [sp, 0x30] + bl sub_8097028 + str r0, [sp, 0x4] + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8097300 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _08096F58 @ =gUnknown_202063C + adds r0, r1 + bl sub_8097228 + adds r0, r4, 0 + add sp, 0x18 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08096F44: .4byte gUnknown_83D4068 +_08096F48: .4byte gUnknown_83D40AC +_08096F4C: .4byte gUnknown_83D40E0 +_08096F50: .4byte gUnknown_83D3E80 +_08096F54: .4byte 0x0000dac0 +_08096F58: .4byte gUnknown_202063C + thumb_func_end sub_8096ECC + + thumb_func_start sub_8096F5C +sub_8096F5C: @ 8096F5C + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0xC9 + bne _08096F86 + adds r0, r1, 0 + bl sub_8096F98 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08096F78 + movs r0, 0xC9 + b _08096F82 +_08096F78: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08096F82: + adds r1, r0, 0 + b _08096F92 +_08096F86: + movs r0, 0xCE + lsls r0, 1 + adds r1, r2, 0 + cmp r1, r0 + bls _08096F92 + movs r1, 0 +_08096F92: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8096F5C + + thumb_func_start sub_8096F98 +sub_8096F98: @ 8096F98 + push {lr} + adds r2, r0, 0 + cmp r2, 0 + beq _08096FCE + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + b _08096FD0 +_08096FCE: + movs r0, 0 +_08096FD0: + pop {r1} + bx r1 + thumb_func_end sub_8096F98 + + thumb_func_start sub_8096FD4 +sub_8096FD4: @ 8096FD4 + push {r4,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + mov r1, sp + bl sub_8097F20 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC9 + bne _0809700A + mov r0, sp + ldrh r0, [r0] + cmp r0, 0 + bne _08096FFA + mov r1, sp + adds r0, 0xC9 + b _08097002 +_08096FFA: + mov r1, sp + movs r2, 0xCE + lsls r2, 1 + adds r0, r2 +_08097002: + strh r0, [r1] + mov r0, sp + ldrh r0, [r0] + b _08097020 +_0809700A: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08097014 + movs r4, 0 +_08097014: + adds r0, r4, 0 + movs r1, 0 + bl sub_8096F5C + lsls r0, 16 + lsrs r0, 16 +_08097020: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096FD4 + + thumb_func_start sub_8097028 +sub_8097028: @ 8097028 + push {lr} + adds r3, r1, 0 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08097050 @ =gUnknown_83D37A0 + lsls r1, r0, 2 + adds r1, r2 + ldr r2, [r1] + movs r1, 0xCD + lsls r1, 1 + cmp r0, r1 + bne _0809704A + cmp r3, 0x1 + bne _0809704A + movs r0, 0x80 + lsls r0, 3 + adds r2, r0 +_0809704A: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_08097050: .4byte gUnknown_83D37A0 + thumb_func_end sub_8097028 + + thumb_func_start sub_8097054 +sub_8097054: @ 8097054 + push {r4,lr} + adds r4, r2, 0 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096F5C + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl sub_8097028 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8097054 + + thumb_func_start sub_8097070 +sub_8097070: @ 8097070 + push {lr} + bl sub_80973D8 + pop {r0} + bx r0 + thumb_func_end sub_8097070 + + thumb_func_start sub_809707C +sub_809707C: @ 809707C + push {r4,r5,lr} + movs r4, 0 + ldr r5, _0809709C @ =gUnknown_83D4038 +_08097082: + lsls r0, r4, 3 + adds r0, r5 + bl sub_8008928 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _08097082 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809709C: .4byte gUnknown_83D4038 + thumb_func_end sub_809707C + + thumb_func_start sub_80970A0 +sub_80970A0: @ 80970A0 + push {r4,lr} + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bls _080970B0 + movs r1, 0 +_080970B0: + ldr r0, _080970D8 @ =gUnknown_83D3E80 + adds r0, r1, r0 + ldrb r0, [r0] + ldr r1, _080970DC @ =gUnknown_83D4038 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080970D0 + adds r0, r4, 0 + bl sub_8008928 +_080970D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080970D8: .4byte gUnknown_83D3E80 +_080970DC: .4byte gUnknown_83D4038 + thumb_func_end sub_80970A0 + + thumb_func_start sub_80970E0 +sub_80970E0: @ 80970E0 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0809710C @ =gUnknown_83D3E80 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _08097110 @ =gUnknown_83D4038 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08097106 + adds r0, r4, 0 + bl sub_8008928 +_08097106: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809710C: .4byte gUnknown_83D3E80 +_08097110: .4byte gUnknown_83D4038 + thumb_func_end sub_80970E0 + + thumb_func_start sub_8097114 +sub_8097114: @ 8097114 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _08097134 @ =gUnknown_83D4038 +_0809711A: + lsls r0, r4, 3 + adds r0, r5 + ldrh r0, [r0, 0x4] + bl sub_8008A30 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0809711A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08097134: .4byte gUnknown_83D4038 + thumb_func_end sub_8097114 + + thumb_func_start sub_8097138 +sub_8097138: @ 8097138 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bls _08097148 + movs r1, 0 +_08097148: + ldr r0, _08097160 @ =gUnknown_83D3E80 + adds r0, r1, r0 + ldrb r0, [r0] + ldr r1, _08097164 @ =gUnknown_83D4038 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x4] + bl sub_8008A30 + pop {r0} + bx r0 + .align 2, 0 +_08097160: .4byte gUnknown_83D3E80 +_08097164: .4byte gUnknown_83D4038 + thumb_func_end sub_8097138 + + thumb_func_start sub_8097168 +sub_8097168: @ 8097168 + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08097184 @ =gUnknown_83D3E80 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _08097188 @ =gUnknown_83D4038 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x4] + bl sub_8008A30 + pop {r0} + bx r0 + .align 2, 0 +_08097184: .4byte gUnknown_83D3E80 +_08097188: .4byte gUnknown_83D4038 + thumb_func_end sub_8097168 + + thumb_func_start sub_809718C +sub_809718C: @ 809718C + push {lr} + bl sub_8097228 + pop {r0} + bx r0 + thumb_func_end sub_809718C + + thumb_func_start sub_8097198 +sub_8097198: @ 8097198 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xA0 + bhi _080971C0 + ldr r6, _080971C8 @ =gUnknown_83D4038 + movs r5, 0x5 +_080971A6: + ldr r0, [r6] + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r4, r0, 16 + adds r6, 0x8 + subs r5, 0x1 + cmp r5, 0 + bge _080971A6 +_080971C0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080971C8: .4byte gUnknown_83D4038 + thumb_func_end sub_8097198 + + thumb_func_start sub_80971CC +sub_80971CC: @ 80971CC + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r0, 0xCE + lsls r0, 1 + cmp r2, r0 + bls _080971DC + movs r2, 0 +_080971DC: + ldr r1, _080971F0 @ =gUnknown_83D4038 + ldr r0, _080971F4 @ =gUnknown_83D3E80 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r1 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080971F0: .4byte gUnknown_83D4038 +_080971F4: .4byte gUnknown_83D3E80 + thumb_func_end sub_80971CC + + thumb_func_start sub_80971F8 +sub_80971F8: @ 80971F8 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bls _08097208 + movs r1, 0 +_08097208: + ldr r0, _08097214 @ =gUnknown_83D3E80 + adds r0, r1, r0 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_08097214: .4byte gUnknown_83D3E80 + thumb_func_end sub_80971F8 + + thumb_func_start sub_8097218 +sub_8097218: @ 8097218 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08097224 @ =gUnknown_83D3E80 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08097224: .4byte gUnknown_83D3E80 + thumb_func_end sub_8097218 + + thumb_func_start sub_8097228 +sub_8097228: @ 8097228 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + movs r7, 0 + adds r6, r4, 0 + adds r6, 0x2C + ldrb r2, [r6] + movs r0, 0x3F + mov r9, r0 + ands r0, r2 + cmp r0, 0 + bne _080972DC + movs r1, 0x2A + adds r1, r4 + mov r8, r1 + ldrb r1, [r1] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r5, r4, 0 + adds r5, 0x2B + ldrb r0, [r5] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + movs r1, 0 + ldrsh r3, [r0, r1] + movs r0, 0x2 + negs r0, r0 + cmp r3, r0 + beq _08097272 + adds r0, 0x1 + cmp r3, r0 + bne _08097276 + b _080972F0 +_08097272: + strb r7, [r5] + b _080972F0 +_08097276: + ldr r2, _080972D4 @ =gUnknown_83D40E8 + ldrb r1, [r4, 0x3] + lsrs r1, 6 + lsls r1, 1 + ldrb r0, [r4, 0x1] + lsrs r0, 6 + lsls r0, 3 + adds r1, r0 + adds r1, r2 + ldrh r2, [r1] + adds r1, r2, 0 + muls r1, r3 + ldr r0, [r4, 0xC] + adds r0, r1 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 17 + ldr r3, _080972D8 @ =0x06010000 + adds r1, r3 + bl sub_80076D0 + mov r0, r8 + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r5] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + mov r1, r9 + ands r1, r0 + ldrb r2, [r6] + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldrb r7, [r5] + b _080972F0 + .align 2, 0 +_080972D4: .4byte gUnknown_83D40E8 +_080972D8: .4byte 0x06010000 +_080972DC: + lsls r0, r2, 26 + lsrs r0, 26 + subs r0, 0x1 + movs r1, 0x3F + ands r0, r1 + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r6] +_080972F0: + adds r0, r7, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8097228 + + thumb_func_start sub_8097300 +sub_8097300: @ 8097300 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x38 + mov r9, r0 + adds r4, r1, 0 + adds r5, r2, 0 + mov r8, r3 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0 + str r0, [sp, 0x30] + ldr r2, _080973C8 @ =gUnknown_83D40E8 + mov r0, r9 + ldr r6, [r0] + ldrb r1, [r6, 0x3] + lsrs r1, 6 + lsls r1, 1 + ldrb r0, [r6, 0x1] + lsrs r0, 6 + lsls r0, 3 + adds r1, r0 + adds r1, r2 + ldrh r2, [r1] + ldr r1, _080973CC @ =0xffff0000 + add r3, sp, 0x30 + ldr r0, [r3, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [r3, 0x4] + add r1, sp, 0x18 + ldr r0, _080973D0 @ =0x0000ffff + strh r0, [r1] + mov r0, r9 + ldrh r2, [r0, 0x14] + mov r0, sp + adds r0, 0x1A + strh r2, [r0] + str r6, [sp, 0x1C] + mov r2, r9 + ldr r0, [r2, 0x8] + str r0, [sp, 0x20] + str r3, [sp, 0x24] + ldr r0, [r2, 0xC] + str r0, [sp, 0x28] + ldr r0, [r2, 0x10] + str r0, [sp, 0x2C] + mov r0, sp + movs r2, 0x18 + bl memcpy + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r6, _080973D4 @ =gUnknown_202063C + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r4, r3, r6 + adds r5, r4, 0 + adds r5, 0x2C + ldrb r1, [r5] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r5] + adds r4, 0x3F + ldrb r2, [r4] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r4] + adds r6, 0xC + adds r3, r6 + mov r2, r9 + ldr r1, [r2, 0x4] + str r1, [r3] + add sp, 0x38 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080973C8: .4byte gUnknown_83D40E8 +_080973CC: .4byte 0xffff0000 +_080973D0: .4byte 0x0000ffff +_080973D4: .4byte gUnknown_202063C + thumb_func_end sub_8097300 + + thumb_func_start sub_80973D8 +sub_80973D8: @ 80973D8 + push {lr} + sub sp, 0x8 + movs r1, 0 + str r1, [sp] + ldr r3, _0809740C @ =gUnknown_83D40E8 + ldrb r2, [r0, 0x3] + lsrs r2, 6 + lsls r2, 1 + ldrb r1, [r0, 0x1] + lsrs r1, 6 + lsls r1, 3 + adds r2, r1 + adds r2, r3 + ldrh r3, [r2] + ldr r2, _08097410 @ =0xffff0000 + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r3 + str r1, [sp, 0x4] + mov r1, sp + str r1, [r0, 0xC] + bl sub_8007280 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809740C: .4byte gUnknown_83D40E8 +_08097410: .4byte 0xffff0000 + thumb_func_end sub_80973D8 + + thumb_func_start sub_8097414 +sub_8097414: @ 8097414 + mov r12, r0 + adds r0, 0x2A + movs r3, 0 + strb r1, [r0] + mov r2, r12 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x40 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + mov r0, r12 + adds r0, 0x2B + strb r3, [r0] + bx lr + thumb_func_end sub_8097414 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s new file mode 100644 index 000000000..520ae3bb6 --- /dev/null +++ b/asm/pokemon_item_effect.s @@ -0,0 +1,1972 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80413C0 +sub_80413C0: @ 80413C0 + push {r4,lr} + sub sp, 0x4 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + movs r4, 0 + str r4, [sp] + bl sub_80413E4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80413C0 + + thumb_func_start sub_80413E4 +sub_80413E4: @ 80413E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + mov r8, r0 + ldr r0, [sp, 0x5C] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x8] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0xC] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x10] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + movs r0, 0x1 + str r0, [sp, 0x1C] + movs r1, 0x6 + str r1, [sp, 0x24] + movs r2, 0 + str r2, [sp, 0x2C] + movs r3, 0x4 + str r3, [sp, 0x34] + mov r0, r8 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _08041474 + ldr r0, _08041450 @ =gUnknown_30030F0 + ldr r4, _08041454 @ =0x00000439 + adds r0, r4 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08041460 + ldr r2, _08041458 @ =gUnknown_2023F54 + ldr r0, _0804145C @ =gUnknown_2024004 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x7] + b _0804147C + .align 2, 0 +_08041450: .4byte gUnknown_30030F0 +_08041454: .4byte 0x00000439 +_08041458: .4byte gUnknown_2023F54 +_0804145C: .4byte gUnknown_2024004 +_08041460: + ldr r0, _0804146C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r5, _08041470 @ =0x0000311a + adds r0, r5 + ldrb r0, [r0] + b _0804147C + .align 2, 0 +_0804146C: .4byte gUnknown_3005008 +_08041470: .4byte 0x0000311a +_08041474: + bl sub_809A924 + lsls r0, 24 + lsrs r0, 24 +_0804147C: + str r0, [sp, 0x30] + ldr r1, _080414D8 @ =gUnknown_2023D6F + ldr r0, _080414DC @ =gUnknown_2024004 + ldrb r2, [r0] + strb r2, [r1] + ldr r0, _080414E0 @ =gUnknown_30030F0 + ldr r1, _080414E4 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0804151C + ldr r0, _080414E8 @ =gUnknown_2023BC4 + strb r2, [r0] + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0x18] + ldr r0, _080414EC @ =gUnknown_2023BCC + ldr r4, [sp, 0x8] + subs r4, 0xD + ldrb r0, [r0] + cmp r1, r0 + bge _08041528 + ldr r2, _080414F0 @ =gUnknown_2023BCE + lsls r0, r1, 1 + adds r0, r2 + ldrh r3, [r0] + ldr r5, [sp, 0xC] + lsls r0, r5, 16 + lsrs r1, r0, 16 + adds r5, r0, 0 + cmp r3, r1 + bne _080414F4 + ldr r0, [sp, 0x18] + str r0, [sp, 0x34] + b _08041528 + .align 2, 0 +_080414D8: .4byte gUnknown_2023D6F +_080414DC: .4byte gUnknown_2024004 +_080414E0: .4byte gUnknown_30030F0 +_080414E4: .4byte 0x00000439 +_080414E8: .4byte gUnknown_2023BC4 +_080414EC: .4byte gUnknown_2023BCC +_080414F0: .4byte gUnknown_2023BCE +_080414F4: + ldr r1, [sp, 0x18] + adds r1, 0x2 + str r1, [sp, 0x18] + ldr r0, _08041518 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r1, r0 + bge _08041528 + lsls r0, r1, 1 + adds r0, r2 + ldrh r1, [r0] + lsrs r0, r5, 16 + cmp r1, r0 + bne _080414F4 + ldr r2, [sp, 0x18] + lsls r0, r2, 24 + lsrs r0, 24 + str r0, [sp, 0x34] + b _08041528 + .align 2, 0 +_08041518: .4byte gUnknown_2023BCC +_0804151C: + ldr r0, _08041544 @ =gUnknown_2023BC4 + strb r1, [r0] + movs r3, 0x4 + str r3, [sp, 0x34] + ldr r4, [sp, 0x8] + subs r4, 0xD +_08041528: + lsls r0, r4, 16 + lsrs r0, 16 + cmp r0, 0xA5 + bhi _080415A8 + ldr r1, _08041548 @ =gUnknown_82528BC + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _0804154C + ldr r4, [sp, 0x8] + cmp r4, 0xAF + beq _08041552 + b _080415A8 + .align 2, 0 +_08041544: .4byte gUnknown_2023BC4 +_08041548: .4byte gUnknown_82528BC +_0804154C: + ldr r5, [sp, 0x8] + cmp r5, 0xAF + bne _080415AE +_08041552: + ldr r0, _08041574 @ =gUnknown_30030F0 + ldr r1, _08041578 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08041584 + ldr r0, _0804157C @ =gUnknown_2023BC4 + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _08041580 @ =gUnknown_2023F5C + adds r0, r1 + b _080415AE + .align 2, 0 +_08041574: .4byte gUnknown_30030F0 +_08041578: .4byte 0x00000439 +_0804157C: .4byte gUnknown_2023BC4 +_08041580: .4byte gUnknown_2023F5C +_08041584: + ldr r0, _08041590 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _08041594 @ =0x00003108 + adds r2, r0, r2 + str r2, [sp, 0x20] + b _080415B0 + .align 2, 0 +_08041590: .4byte gUnknown_3005008 +_08041594: .4byte 0x00003108 +_08041598: + mov r0, r8 + movs r2, 0 + ldr r3, [sp, 0xC] + bl sub_80CDDA8 + movs r0, 0 + bl _08042394 +_080415A8: + movs r0, 0x1 + bl _08042394 +_080415AE: + str r0, [sp, 0x20] +_080415B0: + movs r3, 0 + str r3, [sp, 0x18] +_080415B4: + ldr r4, [sp, 0x18] + cmp r4, 0x5 + bls _080415BE + bl _08042384 +_080415BE: + lsls r0, r4, 2 + ldr r1, _080415C8 @ =_080415CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080415C8: .4byte _080415CC + .align 2, 0 +_080415CC: + .4byte _080415E4 + .4byte _080416B0 + .4byte _08041744 + .4byte _080417D8 + .4byte _080419B8 + .4byte _08042056 +_080415E4: + ldr r5, [sp, 0x20] + ldr r0, [sp, 0x18] + adds r2, r5, r0 + ldrb r1, [r2] + movs r0, 0x80 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _0804162C + ldr r0, _0804169C @ =gUnknown_30030F0 + ldr r1, _080416A0 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804162C + ldr r2, [sp, 0x34] + cmp r2, 0x4 + beq _0804162C + ldr r1, _080416A4 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0xF0 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + beq _0804162C + ldr r0, _080416A8 @ =0xfff0ffff + ands r1, r0 + str r1, [r2] + movs r3, 0 + str r3, [sp, 0x1C] +_0804162C: + ldrb r1, [r6] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _0804165A + ldr r1, _080416A4 @ =gUnknown_2023BE4 + ldr r0, _080416AC @ =gUnknown_2023BC4 + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 13 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + bne _0804165A + orrs r1, r3 + str r1, [r2] + movs r4, 0 + str r4, [sp, 0x1C] +_0804165A: + ldrb r0, [r6] + movs r3, 0xF + ands r3, r0 + cmp r3, 0 + bne _08041668 + bl _08042384 +_08041668: + ldr r6, _080416A4 @ =gUnknown_2023BE4 + ldr r5, _080416AC @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + adds r1, r0, r6 + ldrb r2, [r1, 0x19] + movs r0, 0x19 + ldrsb r0, [r1, r0] + cmp r0, 0xB + ble _08041682 + bl _08042384 +_08041682: + adds r0, r2, r3 + strb r0, [r1, 0x19] + ldrb r0, [r5] + muls r0, r4 + adds r1, r0, r6 + movs r0, 0x19 + ldrsb r0, [r1, r0] + cmp r0, 0xC + bgt _08041696 + b _0804198A +_08041696: + movs r0, 0xC + strb r0, [r1, 0x19] + b _0804198A + .align 2, 0 +_0804169C: .4byte gUnknown_30030F0 +_080416A0: .4byte 0x00000439 +_080416A4: .4byte gUnknown_2023BE4 +_080416A8: .4byte 0xfff0ffff +_080416AC: .4byte gUnknown_2023BC4 +_080416B0: + ldr r0, [sp, 0x20] + ldr r1, [sp, 0x18] + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + lsls r3, r0, 24 + adds r6, r2, 0 + cmp r3, 0 + beq _080416F6 + ldr r7, _0804173C @ =gUnknown_2023BE4 + ldr r5, _08041740 @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + adds r1, r0, r7 + ldrb r2, [r1, 0x1A] + movs r0, 0x1A + ldrsb r0, [r1, r0] + cmp r0, 0xB + bgt _080416F6 + lsrs r0, r3, 28 + adds r0, r2, r0 + strb r0, [r1, 0x1A] + ldrb r0, [r5] + muls r0, r4 + adds r1, r0, r7 + movs r0, 0x1A + ldrsb r0, [r1, r0] + cmp r0, 0xC + ble _080416F2 + movs r0, 0xC + strb r0, [r1, 0x1A] +_080416F2: + movs r2, 0 + str r2, [sp, 0x1C] +_080416F6: + ldrb r0, [r6] + movs r3, 0xF + ands r3, r0 + cmp r3, 0 + bne _08041704 + bl _08042384 +_08041704: + ldr r6, _0804173C @ =gUnknown_2023BE4 + ldr r5, _08041740 @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + adds r1, r0, r6 + ldrb r2, [r1, 0x1B] + movs r0, 0x1B + ldrsb r0, [r1, r0] + cmp r0, 0xB + ble _0804171E + bl _08042384 +_0804171E: + adds r0, r2, r3 + strb r0, [r1, 0x1B] + ldrb r0, [r5] + muls r0, r4 + adds r1, r0, r6 + movs r0, 0x1B + ldrsb r0, [r1, r0] + cmp r0, 0xC + ble _08041734 + movs r0, 0xC + strb r0, [r1, 0x1B] +_08041734: + movs r3, 0 + str r3, [sp, 0x1C] + bl _08042384 + .align 2, 0 +_0804173C: .4byte gUnknown_2023BE4 +_08041740: .4byte gUnknown_2023BC4 +_08041744: + ldr r4, [sp, 0x20] + ldr r5, [sp, 0x18] + adds r2, r4, r5 + ldrb r1, [r2] + movs r0, 0xF0 + ands r0, r1 + lsls r3, r0, 24 + adds r6, r2, 0 + cmp r3, 0 + beq _0804178A + ldr r7, _080417D0 @ =gUnknown_2023BE4 + ldr r5, _080417D4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + adds r1, r0, r7 + ldrb r2, [r1, 0x1E] + movs r0, 0x1E + ldrsb r0, [r1, r0] + cmp r0, 0xB + bgt _0804178A + lsrs r0, r3, 28 + adds r0, r2, r0 + strb r0, [r1, 0x1E] + ldrb r0, [r5] + muls r0, r4 + adds r1, r0, r7 + movs r0, 0x1E + ldrsb r0, [r1, r0] + cmp r0, 0xC + ble _08041786 + movs r0, 0xC + strb r0, [r1, 0x1E] +_08041786: + movs r0, 0 + str r0, [sp, 0x1C] +_0804178A: + ldrb r0, [r6] + movs r3, 0xF + ands r3, r0 + cmp r3, 0 + bne _08041798 + bl _08042384 +_08041798: + ldr r6, _080417D0 @ =gUnknown_2023BE4 + ldr r5, _080417D4 @ =gUnknown_2023BC4 + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + adds r1, r0, r6 + ldrb r2, [r1, 0x1C] + movs r0, 0x1C + ldrsb r0, [r1, r0] + cmp r0, 0xB + ble _080417B2 + bl _08042384 +_080417B2: + adds r0, r2, r3 + strb r0, [r1, 0x1C] + ldrb r0, [r5] + muls r0, r4 + adds r1, r0, r6 + movs r0, 0x1C + ldrsb r0, [r1, r0] + cmp r0, 0xC + ble _080417C8 + movs r0, 0xC + strb r0, [r1, 0x1C] +_080417C8: + movs r1, 0 + str r1, [sp, 0x1C] + bl _08042384 + .align 2, 0 +_080417D0: .4byte gUnknown_2023BE4 +_080417D4: .4byte gUnknown_2023BC4 +_080417D8: + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x18] + adds r2, r3, r4 + ldrb r1, [r2] + movs r0, 0x80 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _08041820 + ldr r5, _08041994 @ =gUnknown_2023DE4 + ldr r4, _08041998 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1, 0x4] + cmp r0, 0 + bne _08041820 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + movs r0, 0x5 + strb r0, [r1, 0x4] + movs r5, 0 + str r5, [sp, 0x1C] +_08041820: + ldrb r1, [r6] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08041882 + mov r0, r8 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x64 + beq _08041882 + ldr r5, _0804199C @ =gUnknown_8253AE4 + mov r0, r8 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + adds r4, 0x1 + lsls r4, 2 + ldr r2, _080419A0 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r1 + adds r4, r0 + adds r4, r5 + ldr r0, [r4] + str r0, [sp] + mov r0, r8 + movs r1, 0x19 + mov r2, sp + bl sub_804037C + mov r0, r8 + bl sub_803E47C + movs r0, 0 + str r0, [sp, 0x1C] +_08041882: + ldrb r1, [r6] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080418BE + mov r0, r8 + ldr r1, [sp, 0xC] + movs r2, 0x7 + ldr r3, [sp, 0x34] + bl sub_80423A4 + lsls r0, 24 + cmp r0, 0 + bne _080418BE + ldr r1, [sp, 0x34] + cmp r1, 0x4 + beq _080418BA + ldr r1, _080419A4 @ =gUnknown_2023BE4 + movs r0, 0x58 + ldr r3, [sp, 0x34] + adds r2, r3, 0 + muls r2, r0 + adds r1, 0x50 + adds r2, r1 + ldr r0, [r2] + ldr r1, _080419A8 @ =0xf7ffffff + ands r0, r1 + str r0, [r2] +_080418BA: + movs r4, 0 + str r4, [sp, 0x1C] +_080418BE: + ldrb r1, [r6] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080418DE + ldr r2, _080419AC @ =0x00000f88 + mov r0, r8 + ldr r1, [sp, 0xC] + ldr r3, [sp, 0x34] + bl sub_80423A4 + lsls r0, 24 + cmp r0, 0 + bne _080418DE + movs r5, 0 + str r5, [sp, 0x1C] +_080418DE: + ldrb r1, [r6] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080418FE + mov r0, r8 + ldr r1, [sp, 0xC] + movs r2, 0x10 + ldr r3, [sp, 0x34] + bl sub_80423A4 + lsls r0, 24 + cmp r0, 0 + bne _080418FE + movs r0, 0 + str r0, [sp, 0x1C] +_080418FE: + ldrb r1, [r6] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0804191E + mov r0, r8 + ldr r1, [sp, 0xC] + movs r2, 0x20 + ldr r3, [sp, 0x34] + bl sub_80423A4 + lsls r0, 24 + cmp r0, 0 + bne _0804191E + movs r1, 0 + str r1, [sp, 0x1C] +_0804191E: + ldrb r1, [r6] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804193E + mov r0, r8 + ldr r1, [sp, 0xC] + movs r2, 0x40 + ldr r3, [sp, 0x34] + bl sub_80423A4 + lsls r0, 24 + cmp r0, 0 + bne _0804193E + movs r2, 0 + str r2, [sp, 0x1C] +_0804193E: + ldrb r1, [r6] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0804194C + bl _08042384 +_0804194C: + ldr r0, _080419B0 @ =gUnknown_30030F0 + ldr r3, _080419B4 @ =0x00000439 + adds r0, r3 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08041960 + bl _08042384 +_08041960: + ldr r4, [sp, 0x34] + cmp r4, 0x4 + bne _0804196A + bl _08042384 +_0804196A: + ldr r1, _080419A4 @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r4 + adds r1, 0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _08041982 + bl _08042384 +_08041982: + movs r0, 0x8 + negs r0, r0 + ands r1, r0 + str r1, [r2] +_0804198A: + movs r5, 0 + str r5, [sp, 0x1C] + bl _08042384 + .align 2, 0 +_08041994: .4byte gUnknown_2023DE4 +_08041998: .4byte gUnknown_2023BC4 +_0804199C: .4byte gUnknown_8253AE4 +_080419A0: .4byte gUnknown_8254784 +_080419A4: .4byte gUnknown_2023BE4 +_080419A8: .4byte 0xf7ffffff +_080419AC: .4byte 0x00000f88 +_080419B0: .4byte gUnknown_30030F0 +_080419B4: .4byte 0x00000439 +_080419B8: + ldr r1, [sp, 0x20] + ldr r2, [sp, 0x18] + adds r0, r1, r2 + ldrb r0, [r0] + mov r10, r0 + movs r0, 0x20 + mov r3, r10 + ands r0, r3 + cmp r0, 0 + beq _08041A90 + movs r0, 0xDF + ands r3, r0 + mov r10, r3 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + ldr r1, _08041ABC @ =gUnknown_825DEA1 + ldr r4, [sp, 0x10] + adds r1, r4, r1 + ldrb r1, [r1] + ands r0, r1 + lsls r1, r4, 1 + lsrs r0, r1 + str r0, [sp] + adds r5, r4, 0 + adds r5, 0xD + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x28] + ldr r0, [sp] + cmp r0, 0x2 + bhi _08041A90 + ldr r0, [sp, 0x28] + cmp r0, 0x4 + bls _08041A90 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + ldr r1, _08041AC0 @ =gUnknown_825DEA9 + ldr r2, [sp, 0x10] + adds r1, r2, r1 + ldrb r1, [r1] + adds r0, r1 + str r0, [sp] + mov r0, r8 + movs r1, 0x15 + mov r2, sp + bl sub_804037C + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp] + lsls r1, 24 + lsrs r1, 24 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + ldr r3, [sp, 0x28] + subs r0, r3 + str r0, [sp] + ldr r4, [sp, 0x10] + adds r4, 0x11 + mov r0, r8 + adds r1, r4, 0 + movs r2, 0 + bl sub_803FBE8 + ldr r1, [sp] + adds r0, r1 + str r0, [sp] + mov r0, r8 + adds r1, r4, 0 + mov r2, sp + bl sub_804037C + movs r4, 0 + str r4, [sp, 0x1C] +_08041A90: + movs r5, 0 + str r5, [sp, 0x28] + mov r0, r10 + cmp r0, 0 + bne _08041A9E + bl _08042384 +_08041A9E: + movs r0, 0x1 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + bne _08041AAA + b _08042042 +_08041AAA: + ldr r2, [sp, 0x28] + cmp r2, 0x7 + bls _08041AB2 + b _08042042 +_08041AB2: + lsls r0, r2, 2 + ldr r1, _08041AC4 @ =_08041AC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08041ABC: .4byte gUnknown_825DEA1 +_08041AC0: .4byte gUnknown_825DEA9 +_08041AC4: .4byte _08041AC8 + .align 2, 0 +_08041AC8: + .4byte _08041AE8 + .4byte _08041AE8 + .4byte _08041B70 + .4byte _08041D94 + .4byte _08042042 + .4byte _08042042 + .4byte _08042042 + .4byte _0804202C +_08041AE8: + mov r0, r8 + bl sub_8043A40 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08041B28 @ =0x000001fd + cmp r5, r0 + bls _08041AFA + b _080415A8 +_08041AFA: + ldr r0, _08041B2C @ =gUnknown_825DFEA + ldr r3, [sp, 0x28] + adds r0, r3, r0 + ldrb r1, [r0] + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + str r1, [sp] + cmp r1, 0x63 + bls _08041B14 + b _08042042 +_08041B14: + ldr r4, [sp, 0x20] + ldr r2, [sp, 0x24] + adds r0, r4, r2 + ldrb r0, [r0] + adds r1, r0 + cmp r1, 0x64 + bls _08041B30 + adds r0, 0x64 + subs r4, r0, r1 + b _08041B32 + .align 2, 0 +_08041B28: .4byte 0x000001fd +_08041B2C: .4byte gUnknown_825DFEA +_08041B30: + adds r4, r0, 0 +_08041B32: + adds r1, r5, r4 + movs r0, 0xFF + lsls r0, 1 + cmp r1, r0 + bls _08041B40 + adds r0, r4, r0 + subs r4, r0, r1 +_08041B40: + ldr r0, [sp] + adds r0, r4 + str r0, [sp] + ldr r0, _08041B6C @ =gUnknown_825DFEA + ldr r3, [sp, 0x28] + adds r0, r3, r0 + ldrb r1, [r0] + mov r0, r8 + mov r2, sp + bl sub_804037C + mov r0, r8 + bl sub_803E47C + ldr r0, [sp, 0x24] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] + movs r4, 0 + str r4, [sp, 0x1C] + b _08042042 + .align 2, 0 +_08041B6C: .4byte gUnknown_825DFEA +_08041B70: + movs r0, 0x10 + mov r5, r10 + ands r0, r5 + cmp r0, 0 + beq _08041C30 + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _08041B90 + ldr r0, [sp, 0x24] + adds r0, 0x1 + lsls r0, 24 + b _08041ED6 +_08041B90: + ldr r0, _08041BD8 @ =gUnknown_30030F0 + ldr r1, _08041BDC @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r4, 0x2 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08041C46 + ldr r2, [sp, 0x34] + cmp r2, 0x4 + beq _08041BF0 + ldr r2, _08041BE0 @ =gUnknown_2023D70 + ldr r1, _08041BE4 @ =gUnknown_825E45C + ldr r3, [sp, 0x34] + lsls r0, r3, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldr r1, _08041BE8 @ =gUnknown_2023BCE + lsls r0, r3, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_8128030 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, [sp, 0x34] + bl sub_80410B8 + ldr r0, _08041BEC @ =gUnknown_2023BC4 + ldrb r0, [r0] + b _08041C08 + .align 2, 0 +_08041BD8: .4byte gUnknown_30030F0 +_08041BDC: .4byte 0x00000439 +_08041BE0: .4byte gUnknown_2023D70 +_08041BE4: .4byte gUnknown_825E45C +_08041BE8: .4byte gUnknown_2023BCE +_08041BEC: .4byte gUnknown_2023BC4 +_08041BF0: + ldr r3, _08041C20 @ =gUnknown_2023D70 + ldr r1, _08041C24 @ =gUnknown_825E45C + ldr r2, _08041C28 @ =gUnknown_2023BC4 + ldrb r0, [r2] + eors r0, r4 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r3] + bics r0, r1 + strb r0, [r3] + ldrb r0, [r2] +_08041C08: + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08041C46 + ldr r1, _08041C2C @ =gUnknown_3004F90 + ldrb r0, [r1, 0x4] + cmp r0, 0xFE + bhi _08041C46 + adds r0, 0x1 + strb r0, [r1, 0x4] + b _08041C46 + .align 2, 0 +_08041C20: .4byte gUnknown_2023D70 +_08041C24: .4byte gUnknown_825E45C +_08041C28: .4byte gUnknown_2023BC4 +_08041C2C: .4byte gUnknown_3004F90 +_08041C30: + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + bne _08041C46 + ldr r0, [sp, 0x24] + adds r0, 0x1 + lsls r0, 24 + b _08041ED6 +_08041C46: + ldr r1, [sp, 0x24] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] + ldr r4, [sp, 0x20] + adds r1, r4, r1 + ldrb r1, [r1] + str r1, [sp] + adds r0, r1, 0 + cmp r0, 0xFE + beq _08041C88 + cmp r0, 0xFE + bhi _08041C68 + cmp r0, 0xFD + beq _08041C9E + b _08041CA6 +_08041C68: + cmp r1, 0xFF + bne _08041CA6 + mov r0, r8 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + subs r4, r0 + str r4, [sp] + b _08041CA6 +_08041C88: + mov r0, r8 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + lsrs r0, 1 + str r0, [sp] + cmp r0, 0 + bne _08041CA6 + movs r0, 0x1 + b _08041CA4 +_08041C9E: + ldr r0, _08041D60 @ =gUnknown_2023FC4 + adds r0, 0x23 + ldrb r0, [r0] +_08041CA4: + str r0, [sp] +_08041CA6: + mov r0, r8 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + cmp r4, r0 + beq _08041D84 + ldr r5, [sp, 0x14] + cmp r5, 0 + bne _08041D78 + mov r0, r8 + movs r1, 0x39 + movs r2, 0 + bl sub_803FBE8 + ldr r1, [sp] + adds r0, r1 + str r0, [sp] + mov r0, r8 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + ldr r1, [sp] + cmp r1, r0 + bls _08041CF2 + mov r0, r8 + movs r1, 0x3A + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] +_08041CF2: + mov r0, r8 + movs r1, 0x39 + mov r2, sp + bl sub_804037C + ldr r0, _08041D64 @ =gUnknown_30030F0 + ldr r1, _08041D68 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08041D80 + ldr r2, [sp, 0x34] + cmp r2, 0x4 + beq _08041D80 + ldr r1, _08041D6C @ =gUnknown_2023BE4 + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldr r1, [sp] + strh r1, [r0, 0x28] + movs r0, 0x10 + mov r3, r10 + ands r0, r3 + cmp r0, 0 + bne _08041D80 + ldr r4, _08041D70 @ =gUnknown_2023BC4 + ldrb r0, [r4] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08041D80 + ldr r1, _08041D74 @ =gUnknown_3004F90 + ldrb r0, [r1, 0x3] + cmp r0, 0xFE + bhi _08041D42 + adds r0, 0x1 + strb r0, [r1, 0x3] +_08041D42: + ldrb r5, [r4] + add r0, sp, 0x34 + ldrb r0, [r0] + strb r0, [r4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_800DFA4 + ldrb r0, [r4] + bl sub_8017248 + strb r5, [r4] + b _08041D80 + .align 2, 0 +_08041D60: .4byte gUnknown_2023FC4 +_08041D64: .4byte gUnknown_30030F0 +_08041D68: .4byte 0x00000439 +_08041D6C: .4byte gUnknown_2023BE4 +_08041D70: .4byte gUnknown_2023BC4 +_08041D74: .4byte gUnknown_3004F90 +_08041D78: + ldr r1, _08041D90 @ =gUnknown_2023D50 + ldr r0, [sp] + negs r0, r0 + str r0, [r1] +_08041D80: + movs r1, 0 + str r1, [sp, 0x1C] +_08041D84: + movs r0, 0xEF + mov r2, r10 + ands r2, r0 + mov r10, r2 + b _08042042 + .align 2, 0 +_08041D90: .4byte gUnknown_2023D50 +_08041D94: + movs r7, 0x2 + mov r0, r10 + ands r0, r7 + cmp r0, 0 + beq _08041DA0 + b _08041EF0 +_08041DA0: + movs r5, 0 + ldr r3, [sp, 0x24] + adds r3, 0x1 + str r3, [sp, 0x38] +_08041DA8: + movs r4, 0x11 + adds r4, r5 + mov r9, r4 + mov r0, r8 + mov r1, r9 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + adds r7, r5, 0 + adds r7, 0xD + mov r0, r8 + adds r1, r7, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r5, 24 + lsrs r6, r0, 24 + adds r0, r4, 0 + adds r2, r6, 0 + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [sp] + cmp r1, r0 + beq _08041ECA + ldr r2, [sp, 0x20] + ldr r3, [sp, 0x24] + adds r0, r2, r3 + ldrb r0, [r0] + adds r0, r1, r0 + str r0, [sp] + mov r0, r8 + adds r1, r7, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + adds r2, r6, 0 + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [sp] + cmp r1, r0 + bls _08041E60 + mov r0, r8 + adds r1, r7, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + adds r2, r6, 0 + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] +_08041E60: + mov r0, r8 + mov r1, r9 + mov r2, sp + bl sub_804037C + ldr r0, _08041EDC @ =gUnknown_30030F0 + ldr r4, _08041EE0 @ =0x00000439 + adds r0, r4 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08041EC6 + ldr r0, [sp, 0x34] + cmp r0, 0x4 + beq _08041EC6 + ldr r4, _08041EE4 @ =gUnknown_2023BE4 + movs r0, 0x58 + ldr r1, [sp, 0x34] + adds r3, r1, 0 + muls r3, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 14 + ands r1, r0 + cmp r1, 0 + bne _08041EC6 + ldr r1, _08041EE8 @ =gUnknown_2023E0C + ldr r2, [sp, 0x34] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _08041EEC @ =gUnknown_825E45C + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08041EC6 + adds r0, r5, r3 + adds r1, r4, 0 + adds r1, 0x24 + adds r0, r1 + ldr r1, [sp] + strb r1, [r0] +_08041EC6: + movs r3, 0 + str r3, [sp, 0x1C] +_08041ECA: + adds r5, 0x1 + cmp r5, 0x3 + bgt _08041ED2 + b _08041DA8 +_08041ED2: + ldr r4, [sp, 0x38] + lsls r0, r4, 24 +_08041ED6: + lsrs r0, 24 + str r0, [sp, 0x24] + b _08042042 + .align 2, 0 +_08041EDC: .4byte gUnknown_30030F0 +_08041EE0: .4byte 0x00000439 +_08041EE4: .4byte gUnknown_2023BE4 +_08041EE8: .4byte gUnknown_2023E0C +_08041EEC: .4byte gUnknown_825E45C +_08041EF0: + ldr r6, [sp, 0x10] + adds r6, 0x11 + mov r0, r8 + adds r1, r6, 0 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + ldr r5, [sp, 0x10] + adds r5, 0xD + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [sp] + cmp r2, r0 + bne _08041F38 + b _08042042 +_08041F38: + ldr r1, [sp, 0x24] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] + ldr r0, [sp, 0x20] + adds r1, r0, r1 + ldrb r0, [r1] + adds r0, r2, r0 + str r0, [sp] + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [sp] + cmp r1, r0 + bls _08041FAC + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] +_08041FAC: + mov r0, r8 + adds r1, r6, 0 + mov r2, sp + bl sub_804037C + ldr r0, _08042018 @ =gUnknown_30030F0 + ldr r1, _0804201C @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08042010 + ldr r2, [sp, 0x34] + cmp r2, 0x4 + beq _08042010 + ldr r4, _08042020 @ =gUnknown_2023BE4 + movs r0, 0x58 + adds r3, r2, 0 + muls r3, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08042010 + ldr r1, _08042024 @ =gUnknown_2023E0C + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _08042028 @ =gUnknown_825E45C + ldr r5, [sp, 0x10] + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08042010 + adds r0, r5, r3 + adds r1, r4, 0 + adds r1, 0x24 + adds r0, r1 + ldr r1, [sp] + strb r1, [r0] +_08042010: + movs r0, 0 + str r0, [sp, 0x1C] + b _08042042 + .align 2, 0 +_08042018: .4byte gUnknown_30030F0 +_0804201C: .4byte 0x00000439 +_08042020: .4byte gUnknown_2023BE4 +_08042024: .4byte gUnknown_2023E0C +_08042028: .4byte gUnknown_825E45C +_0804202C: + mov r0, r8 + movs r1, 0x2 + ldr r2, [sp, 0x8] + bl sub_8042EC4 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _08042042 + bl _08041598 +_08042042: + ldr r1, [sp, 0x28] + adds r1, 0x1 + str r1, [sp, 0x28] + mov r2, r10 + lsrs r2, 1 + mov r10, r2 + cmp r2, 0 + beq _08042054 + b _08041A9E +_08042054: + b _08042384 +_08042056: + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x18] + adds r0, r3, r4 + ldrb r0, [r0] + mov r10, r0 + movs r5, 0 + str r5, [sp, 0x28] + cmp r0, 0 + bne _0804206A + b _08042384 +_0804206A: + movs r0, 0x1 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + bne _08042076 + b _08042372 +_08042076: + ldr r2, [sp, 0x28] + cmp r2, 0x7 + bls _0804207E + b _08042372 +_0804207E: + lsls r0, r2, 2 + ldr r1, _08042088 @ =_0804208C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042088: .4byte _0804208C + .align 2, 0 +_0804208C: + .4byte _080420AC + .4byte _080420AC + .4byte _080420AC + .4byte _080420AC + .4byte _08042130 + .4byte _08042204 + .4byte _0804225E + .4byte _080422B4 +_080420AC: + mov r0, r8 + bl sub_8043A40 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080420F4 @ =0x000001fd + cmp r5, r0 + bls _080420C0 + bl _080415A8 +_080420C0: + ldr r0, _080420F8 @ =gUnknown_825DFEA + ldr r4, [sp, 0x28] + adds r4, 0x2 + adds r0, r4, r0 + ldrb r1, [r0] + mov r0, r8 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + str r1, [sp] + adds r2, r4, 0 + cmp r1, 0x63 + bls _080420DE + b _08042372 +_080420DE: + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x24] + adds r0, r3, r4 + ldrb r0, [r0] + adds r1, r0 + cmp r1, 0x64 + bls _080420FC + adds r0, 0x64 + subs r4, r0, r1 + b _080420FE + .align 2, 0 +_080420F4: .4byte 0x000001fd +_080420F8: .4byte gUnknown_825DFEA +_080420FC: + adds r4, r0, 0 +_080420FE: + adds r1, r5, r4 + movs r0, 0xFF + lsls r0, 1 + cmp r1, r0 + bls _0804210C + adds r0, r4, r0 + subs r4, r0, r1 +_0804210C: + ldr r0, [sp] + adds r0, r4 + str r0, [sp] + ldr r0, _0804212C @ =gUnknown_825DFEA + adds r0, r2, r0 + ldrb r1, [r0] + mov r0, r8 + mov r2, sp + bl sub_804037C + mov r0, r8 + bl sub_803E47C + movs r5, 0 + str r5, [sp, 0x1C] + b _08042368 + .align 2, 0 +_0804212C: .4byte gUnknown_825DFEA +_08042130: + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + ldr r1, _080421F8 @ =gUnknown_825DEA1 + ldr r2, [sp, 0x10] + adds r1, r2, r1 + ldrb r1, [r1] + ands r0, r1 + lsls r1, r2, 1 + lsrs r0, r1 + str r0, [sp] + cmp r0, 0x2 + bls _08042150 + b _08042372 +_08042150: + adds r5, r2, 0 + adds r5, 0xD + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, r8 + movs r1, 0x15 + movs r2, 0 + bl sub_803FBE8 + str r0, [sp] + ldr r1, _080421FC @ =gUnknown_825DEA5 + ldr r3, [sp, 0x10] + adds r1, r3, r1 + ldrb r2, [r1] + ands r2, r0 + str r2, [sp] + ldr r0, _08042200 @ =gUnknown_825DEA9 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + adds r2, r0 + str r2, [sp] + mov r0, r8 + movs r1, 0x15 + mov r2, sp + bl sub_804037C + mov r0, r8 + adds r1, r5, 0 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp] + lsls r1, 24 + lsrs r1, 24 + ldr r2, [sp, 0x10] + bl sub_804101C + lsls r0, 24 + lsrs r0, 24 + subs r0, r4 + str r0, [sp] + ldr r4, [sp, 0x10] + adds r4, 0x11 + mov r0, r8 + adds r1, r4, 0 + movs r2, 0 + bl sub_803FBE8 + ldr r1, [sp] + adds r0, r1 + str r0, [sp] + mov r0, r8 + adds r1, r4, 0 + mov r2, sp + bl sub_804037C + movs r4, 0 + str r4, [sp, 0x1C] + b _08042372 + .align 2, 0 +_080421F8: .4byte gUnknown_825DEA1 +_080421FC: .4byte gUnknown_825DEA5 +_08042200: .4byte gUnknown_825DEA9 +_08042204: + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x63 + bls _08042214 + b _08042368 +_08042214: + ldr r5, [sp, 0x1C] + cmp r5, 0 + beq _0804221C + b _08042368 +_0804221C: + ldr r0, [sp, 0x2C] + cmp r0, 0 + beq _08042224 + b _08042368 +_08042224: + ldr r1, [sp, 0x20] + ldr r2, [sp, 0x24] + adds r0, r1, r2 + ldrb r0, [r0] + str r0, [sp, 0x2C] + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + str r5, [sp, 0x4] + ldr r3, [sp, 0x2C] + lsls r4, r3, 24 + asrs r1, r4, 24 + cmp r1, 0 + ble _08042308 + ldr r0, [sp, 0x30] + cmp r0, 0x1B + bne _08042308 + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, r5, r0 + str r0, [sp, 0x4] + adds r2, r4, 0 + b _08042314 +_0804225E: + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0x63 + bls _08042368 + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0xC7 + bhi _08042368 + ldr r2, [sp, 0x1C] + cmp r2, 0 + bne _08042368 + ldr r3, [sp, 0x2C] + cmp r3, 0 + bne _08042368 + ldr r4, [sp, 0x20] + ldr r5, [sp, 0x24] + adds r0, r4, r5 + ldrb r0, [r0] + str r0, [sp, 0x2C] + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + str r4, [sp, 0x4] + ldr r0, [sp, 0x2C] + lsls r5, r0, 24 + asrs r1, r5, 24 + cmp r1, 0 + ble _080422AE + ldr r2, [sp, 0x30] + cmp r2, 0x1B + beq _080422F6 +_080422AE: + ldr r3, [sp, 0x2C] + lsls r2, r3, 24 + b _0804230C +_080422B4: + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0xC7 + bls _08042368 + ldr r4, [sp, 0x1C] + cmp r4, 0 + bne _08042368 + ldr r5, [sp, 0x2C] + cmp r5, 0 + bne _08042368 + ldr r1, [sp, 0x20] + ldr r2, [sp, 0x24] + adds r0, r1, r2 + ldrb r0, [r0] + str r0, [sp, 0x2C] + mov r0, r8 + movs r1, 0x20 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + str r4, [sp, 0x4] + ldr r3, [sp, 0x2C] + lsls r5, r3, 24 + asrs r1, r5, 24 + cmp r1, 0 + ble _08042308 + ldr r0, [sp, 0x30] + cmp r0, 0x1B + bne _08042308 +_080422F6: + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r0, r4, r0 + str r0, [sp, 0x4] + adds r2, r5, 0 + b _08042314 +_08042308: + ldr r1, [sp, 0x2C] + lsls r2, r1, 24 +_0804230C: + asrs r1, r2, 24 + ldr r0, [sp, 0x4] + adds r0, r1 + str r0, [sp, 0x4] +_08042314: + cmp r2, 0 + ble _0804234A + mov r0, r8 + movs r1, 0x26 + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0xB + bne _0804232C + ldr r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x4] +_0804232C: + mov r0, r8 + movs r1, 0x23 + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + bl sub_8056260 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0804234A + ldr r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x4] +_0804234A: + ldr r0, [sp, 0x4] + cmp r0, 0 + bge _08042354 + movs r0, 0 + str r0, [sp, 0x4] +_08042354: + ldr r0, [sp, 0x4] + cmp r0, 0xFF + ble _0804235E + movs r0, 0xFF + str r0, [sp, 0x4] +_0804235E: + add r2, sp, 0x4 + mov r0, r8 + movs r1, 0x20 + bl sub_804037C +_08042368: + ldr r0, [sp, 0x24] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x24] +_08042372: + ldr r2, [sp, 0x28] + adds r2, 0x1 + str r2, [sp, 0x28] + mov r3, r10 + lsrs r3, 1 + mov r10, r3 + cmp r3, 0 + beq _08042384 + b _0804206A +_08042384: + ldr r4, [sp, 0x18] + adds r4, 0x1 + str r4, [sp, 0x18] + cmp r4, 0x5 + bgt _08042392 + bl _080415B4 +_08042392: + ldr r0, [sp, 0x1C] +_08042394: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80413E4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_size_record.s b/asm/pokemon_size_record.s new file mode 100644 index 000000000..45d89f39d --- /dev/null +++ b/asm/pokemon_size_record.s @@ -0,0 +1,482 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A069C +sub_80A069C: @ 80A069C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + movs r1, 0 + bl sub_803FBE8 + lsls r0, 16 + str r0, [sp, 0x4] + lsrs r0, 16 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0x27 + bl sub_803FBE8 + adds r7, r0, 0 + movs r6, 0xF + ands r7, r6 + adds r0, r5, 0 + movs r1, 0x28 + bl sub_803FBE8 + mov r8, r0 + mov r1, r8 + ands r1, r6 + mov r8, r1 + adds r0, r5, 0 + movs r1, 0x29 + bl sub_803FBE8 + mov r9, r0 + mov r3, r9 + ands r3, r6 + mov r9, r3 + adds r0, r5, 0 + movs r1, 0x2A + bl sub_803FBE8 + mov r10, r0 + ands r0, r6 + mov r10, r0 + adds r0, r5, 0 + movs r1, 0x2B + bl sub_803FBE8 + adds r4, r0, 0 + ands r4, r6 + adds r0, r5, 0 + movs r1, 0x2C + bl sub_803FBE8 + adds r2, r0, 0 + ands r2, r6 + mov r1, r8 + mov r3, r9 + eors r1, r3 + mov r8, r1 + mov r0, r8 + muls r0, r7 + movs r1, 0xFF + ldr r3, [sp] + ands r3, r1 + eors r0, r3 + eors r4, r2 + mov r1, r10 + muls r1, r4 + ldr r3, [sp, 0x4] + lsrs r2, r3, 24 + eors r1, r2 + lsls r0, 8 + adds r0, r1 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A069C + + thumb_func_start sub_80A0740 +sub_80A0740: @ 80A0740 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x1 + ldr r3, _080A075C @ =gUnknown_83E272C +_080A074A: + lsls r0, r1, 3 + adds r0, r3 + ldrh r0, [r0, 0x4] + cmp r2, r0 + bcs _080A0760 + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + b _080A076C + .align 2, 0 +_080A075C: .4byte gUnknown_83E272C +_080A0760: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xE + bls _080A074A + adds r0, r1, 0 +_080A076C: + pop {r1} + bx r1 + thumb_func_end sub_80A0740 + + thumb_func_start sub_80A0770 +sub_80A0770: @ 80A0770 + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r6, 16 + lsrs r6, 16 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8088E38 + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r6, 0 + bl sub_80A0740 + lsls r0, 24 + ldr r1, _080A07E0 @ =gUnknown_83E272C + lsrs r0, 21 + adds r0, r1 + ldrh r1, [r0] + str r1, [sp] + movs r2, 0 + str r2, [sp, 0x4] + ldrb r2, [r0, 0x2] + movs r3, 0 + ldrh r4, [r0, 0x4] + movs r5, 0 + adds r0, r6, 0 + movs r1, 0 + subs r0, r4 + sbcs r1, r5 + bl __udivdi3 + ldr r2, [sp] + ldr r3, [sp, 0x4] + adds r2, r0 + adcs r3, r1 + str r2, [sp] + str r3, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0 + bl __muldi3 + movs r2, 0xA + movs r3, 0 + bl __udivdi3 + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080A07E0: .4byte gUnknown_83E272C + thumb_func_end sub_80A0770 + + thumb_func_start sub_80A07E4 +sub_80A07E4: @ 80A07E4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x64 + muls r0, r1 + movs r1, 0xFE + bl __udivsi3 + adds r5, r0, 0 + movs r1, 0xA + bl __udivsi3 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x8 + bl sub_8008E78 + ldr r1, _080A0828 @ =gUnknown_8417FB9 + bl sub_8008DA4 + adds r4, r0, 0 + adds r0, r5, 0 + movs r1, 0xA + bl __umodsi3 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080A0828: .4byte gUnknown_8417FB9 + thumb_func_end sub_80A07E4 + + thumb_func_start sub_80A082C +sub_80A082C: @ 80A082C + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r1, 0 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r1, _080A0844 @ =gUnknown_20370D0 + ldrh r0, [r1] + cmp r0, 0x5 + bls _080A0848 + movs r0, 0 + b _080A08C4 + .align 2, 0 +_080A0844: .4byte gUnknown_20370D0 +_080A0848: + ldrh r1, [r1] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080A0870 @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0x1 + beq _080A086A + adds r0, r5, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, r6 + beq _080A0874 +_080A086A: + movs r0, 0x1 + b _080A08C4 + .align 2, 0 +_080A0870: .4byte gUnknown_2024284 +_080A0874: + mov r4, sp + adds r0, r5, 0 + bl sub_80A069C + strh r0, [r4] + mov r0, sp + ldrh r1, [r0] + adds r0, r6, 0 + bl sub_80A0770 + adds r5, r0, 0 + ldrh r1, [r7] + adds r0, r6, 0 + bl sub_80A0770 + adds r4, r0, 0 + ldr r0, _080A08AC @ =gUnknown_2021D04 + adds r1, r4, 0 + bl sub_80A07E4 + ldr r0, _080A08B0 @ =gUnknown_2021CF0 + adds r1, r5, 0 + bl sub_80A07E4 + cmp r5, r4 + bne _080A08B4 + movs r0, 0x4 + b _080A08C4 + .align 2, 0 +_080A08AC: .4byte gUnknown_2021D04 +_080A08B0: .4byte gUnknown_2021CF0 +_080A08B4: + cmp r5, r4 + bcc _080A08C2 + mov r0, sp + ldrh r0, [r0] + strh r0, [r7] + movs r0, 0x3 + b _080A08C4 +_080A08C2: + movs r0, 0x2 +_080A08C4: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A082C + + thumb_func_start sub_80A08CC +sub_80A08CC: @ 80A08CC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldrh r1, [r1] + adds r0, r4, 0 + bl sub_80A0770 + adds r1, r0, 0 + ldr r0, _080A08F8 @ =gUnknown_2021D04 + bl sub_80A07E4 + ldr r0, _080A08FC @ =gUnknown_2021CD0 + movs r1, 0xB + muls r1, r4 + ldr r2, _080A0900 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008D84 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A08F8: .4byte gUnknown_2021D04 +_080A08FC: .4byte gUnknown_2021CD0 +_080A0900: .4byte gUnknown_8245EE0 + thumb_func_end sub_80A08CC + + thumb_func_start sub_80A0904 +sub_80A0904: @ 80A0904 + push {lr} + ldr r0, _080A0914 @ =0x0000403d + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_080A0914: .4byte 0x0000403d + thumb_func_end sub_80A0904 + + thumb_func_start sub_80A0918 +sub_80A0918: @ 80A0918 + push {lr} + ldr r0, _080A092C @ =0x0000403d + bl sub_806E454 + adds r1, r0, 0 + movs r0, 0xD6 + bl sub_80A08CC + pop {r0} + bx r0 + .align 2, 0 +_080A092C: .4byte 0x0000403d + thumb_func_end sub_80A0918 + + thumb_func_start sub_80A0930 +sub_80A0930: @ 80A0930 + push {r4,lr} + ldr r0, _080A0950 @ =0x0000403d + bl sub_806E454 + adds r1, r0, 0 + ldr r4, _080A0954 @ =gUnknown_20370D0 + movs r0, 0xD6 + bl sub_80A082C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A0950: .4byte 0x0000403d +_080A0954: .4byte gUnknown_20370D0 + thumb_func_end sub_80A0930 + + thumb_func_start sub_80A0958 +sub_80A0958: @ 80A0958 + push {lr} + ldr r0, _080A0968 @ =0x00004040 + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_080A0968: .4byte 0x00004040 + thumb_func_end sub_80A0958 + + thumb_func_start sub_80A096C +sub_80A096C: @ 80A096C + push {lr} + ldr r0, _080A0980 @ =0x00004040 + bl sub_806E454 + adds r1, r0, 0 + movs r0, 0x81 + bl sub_80A08CC + pop {r0} + bx r0 + .align 2, 0 +_080A0980: .4byte 0x00004040 + thumb_func_end sub_80A096C + + thumb_func_start sub_80A0984 +sub_80A0984: @ 80A0984 + push {r4,lr} + ldr r0, _080A09A4 @ =0x00004040 + bl sub_806E454 + adds r1, r0, 0 + ldr r4, _080A09A8 @ =gUnknown_20370D0 + movs r0, 0x81 + bl sub_80A082C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A09A4: .4byte 0x00004040 +_080A09A8: .4byte gUnknown_20370D0 + thumb_func_end sub_80A0984 + + thumb_func_start sub_80A09AC +sub_80A09AC: @ 80A09AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r7, 0 + add r4, sp, 0x8 + movs r0, 0x1 + strb r0, [r4] + ldr r1, _080A0A34 @ =gUnknown_83E27AC + mov r0, sp + movs r2, 0x7 + bl memcpy + mov r8, r4 + cmp r6, 0xA + bhi _080A0A28 + cmp r5, 0x40 + bhi _080A0A28 + ldr r0, _080A0A38 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _080A0A3C @ =0x0000309c + adds r0, r1 + adds r0, r6 + strb r5, [r0] + movs r5, 0 +_080A09E6: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080A0A40 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _080A0A18 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_803FBE8 + cmp r0, 0 + bne _080A0A18 + mov r1, sp + adds r0, r1, r6 + ldrb r1, [r0] + adds r0, r4, 0 + mov r2, r8 + bl sub_804037C + movs r7, 0x1 +_080A0A18: + adds r5, 0x1 + cmp r5, 0x5 + ble _080A09E6 + cmp r7, 0 + beq _080A0A28 + ldr r0, _080A0A44 @ =0x0000083b + bl sub_806E680 +_080A0A28: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A0A34: .4byte gUnknown_83E27AC +_080A0A38: .4byte gUnknown_3005008 +_080A0A3C: .4byte 0x0000309c +_080A0A40: .4byte gUnknown_2024284 +_080A0A44: .4byte 0x0000083b + thumb_func_end sub_80A09AC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s new file mode 100644 index 000000000..a28202219 --- /dev/null +++ b/asm/pokemon_special_anim.s @@ -0,0 +1,4760 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_811C540 +sub_811C540: @ 811C540 + push {r4,lr} + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_811C5D4 + cmp r0, 0 + bne _0811C55C + adds r0, r4, 0 + bl sub_8000544 + b _0811C560 +_0811C55C: + bl sub_811C748 +_0811C560: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811C540 + + thumb_func_start sub_811C568 +sub_811C568: @ 811C568 + push {r4-r6,lr} + adds r5, r3, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + adds r2, r5, 0 + bl sub_811C5D4 + adds r4, r0, 0 + cmp r4, 0 + bne _0811C58C + adds r0, r5, 0 + bl sub_8000544 + b _0811C5A2 +_0811C58C: + adds r0, r4, 0 + adds r0, 0x77 + movs r1, 0xD + muls r1, r6 + ldr r2, _0811C5A8 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + adds r0, r4, 0 + bl sub_811C7BC +_0811C5A2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811C5A8: .4byte gUnknown_8247094 + thumb_func_end sub_811C568 + + thumb_func_start sub_811C5AC +sub_811C5AC: @ 811C5AC + push {r4,lr} + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_811C5D4 + cmp r0, 0 + bne _0811C5C8 + adds r0, r4, 0 + bl sub_8000544 + b _0811C5CC +_0811C5C8: + bl sub_811C7FC +_0811C5CC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811C5AC + + thumb_func_start sub_811C5D4 +sub_811C5D4: @ 811C5D4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _0811C61C @ =gUnknown_30030F0 + ldr r1, _0811C620 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0811C5FC + bl sub_80773BC +_0811C5FC: + bl sub_8006B10 + bl sub_80088F0 + ldr r0, _0811C624 @ =0x000028dc + bl sub_8002B9C + adds r7, r0, 0 + cmp r7, 0 + bne _0811C628 + adds r0, r5, 0 + bl sub_8000544 + movs r0, 0 + b _0811C6D2 + .align 2, 0 +_0811C61C: .4byte gUnknown_30030F0 +_0811C620: .4byte 0x00000439 +_0811C624: .4byte 0x000028dc +_0811C628: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + ldr r0, _0811C6E0 @ =gUnknown_2024284 + adds r4, r0 + adds r0, r7, 0 + adds r0, 0x92 + movs r1, 0 + mov r9, r1 + mov r1, r9 + strh r1, [r0] + str r5, [r7, 0x4] + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r7, 0 + adds r1, 0x94 + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0x20 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_811D058 + lsls r0, 24 + lsrs r0, 24 + adds r1, r7, 0 + adds r1, 0x9C + strh r0, [r1] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r1, r7, 0 + adds r1, 0xA0 + str r0, [r1] + adds r0, r7, 0 + adds r0, 0x9A + mov r1, r8 + strh r1, [r0] + subs r0, 0x4 + strh r6, [r0] + adds r0, r6, 0 + bl sub_811D018 + adds r5, r7, 0 + adds r5, 0x98 + strh r0, [r5] + adds r0, r7, 0 + adds r0, 0x8 + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy + adds r0, r7, 0 + adds r0, 0xA4 + mov r1, r9 + str r1, [r0] + adds r2, r7, 0 + adds r2, 0x6C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_803FBE8 + ldrh r0, [r5] + cmp r0, 0x4 + bne _0811C6D0 + adds r0, r6, 0 + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + adds r2, r7, 0 + adds r2, 0x84 + movs r1, 0xD + muls r1, r0 + ldr r0, _0811C6E4 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r2, 0 + bl sub_8008D84 +_0811C6D0: + adds r0, r7, 0 +_0811C6D2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811C6E0: .4byte gUnknown_2024284 +_0811C6E4: .4byte gUnknown_8247094 + thumb_func_end sub_811C5D4 + + thumb_func_start sub_811C6E8 +sub_811C6E8: @ 811C6E8 + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + pop {r0} + bx r0 + thumb_func_end sub_811C6E8 + + thumb_func_start sub_811C6FC +sub_811C6FC: @ 811C6FC + push {lr} + bl sub_8002DE8 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_811C6FC + + thumb_func_start sub_811C718 +sub_811C718: @ 811C718 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_8077720 + adds r0, 0x92 + movs r1, 0 + strh r1, [r0] + ldr r1, _0811C744 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + str r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C744: .4byte gUnknown_3005090 + thumb_func_end sub_811C718 + + thumb_func_start sub_811C748 +sub_811C748: @ 811C748 + push {r4,r5,lr} + adds r5, r0, 0 + adds r0, 0x98 + ldrh r0, [r0] + cmp r0, 0x3 + beq _0811C766 + cmp r0, 0x3 + ble _0811C75E + cmp r0, 0x4 + beq _0811C770 + b _0811C784 +_0811C75E: + cmp r0, 0x1 + bgt _0811C784 + cmp r0, 0 + blt _0811C784 +_0811C766: + ldr r0, _0811C76C @ =sub_811C834 + b _0811C772 + .align 2, 0 +_0811C76C: .4byte sub_811C834 +_0811C770: + ldr r0, _0811C780 @ =sub_811CD68 +_0811C772: + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + b _0811C792 + .align 2, 0 +_0811C780: .4byte sub_811CD68 +_0811C784: + ldr r0, [r5, 0x4] + bl sub_8000544 + adds r0, r5, 0 + bl sub_8002BC4 + b _0811C7AE +_0811C792: + adds r1, r5, 0 + adds r1, 0x91 + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + bl sub_80776E8 + ldr r0, _0811C7B4 @ =sub_811C6FC + bl sub_8000544 + ldr r0, _0811C7B8 @ =gUnknown_203B094 + strb r4, [r0] +_0811C7AE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C7B4: .4byte sub_811C6FC +_0811C7B8: .4byte gUnknown_203B094 + thumb_func_end sub_811C748 + + thumb_func_start sub_811C7BC +sub_811C7BC: @ 811C7BC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _0811C7F0 @ =sub_811CA20 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + bl sub_80776E8 + ldr r0, _0811C7F4 @ =sub_811C6FC + bl sub_8000544 + ldr r0, _0811C7F8 @ =gUnknown_203B094 + strb r4, [r0] + adds r5, 0x91 + movs r0, 0 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C7F0: .4byte sub_811CA20 +_0811C7F4: .4byte sub_811C6FC +_0811C7F8: .4byte gUnknown_203B094 + thumb_func_end sub_811C7BC + + thumb_func_start sub_811C7FC +sub_811C7FC: @ 811C7FC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _0811C828 @ =sub_811CBE4 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + bl sub_80776E8 + ldr r0, _0811C82C @ =sub_811C6FC + bl sub_8000544 + ldr r0, _0811C830 @ =gUnknown_203B094 + strb r4, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C828: .4byte sub_811CBE4 +_0811C82C: .4byte sub_811C6FC +_0811C830: .4byte gUnknown_203B094 + thumb_func_end sub_811C7FC + + thumb_func_start sub_811C834 +sub_811C834: @ 811C834 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_8077720 + adds r4, r0, 0 + adds r0, 0x91 + ldrb r0, [r0] + cmp r0, 0 + bne _0811C870 + ldr r0, _0811C868 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0811C870 + bl sub_811E040 + ldr r1, _0811C86C @ =sub_811CF88 + adds r0, r6, 0 + bl sub_811C718 + b _0811CA16 + .align 2, 0 +_0811C868: .4byte gUnknown_30030F0 +_0811C86C: .4byte sub_811CF88 +_0811C870: + adds r0, r4, 0 + adds r0, 0x92 + ldrh r1, [r0] + adds r5, r0, 0 + cmp r1, 0xE + bls _0811C87E + b _0811CA16 +_0811C87E: + lsls r0, r1, 2 + ldr r1, _0811C888 @ =_0811C88C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811C888: .4byte _0811C88C + .align 2, 0 +_0811C88C: + .4byte _0811C8C8 + .4byte _0811C8E4 + .4byte _0811C9E8 + .4byte _0811C914 + .4byte _0811C920 + .4byte _0811C934 + .4byte _0811C93C + .4byte _0811C950 + .4byte _0811C97E + .4byte _0811C986 + .4byte _0811C98E + .4byte _0811C996 + .4byte _0811C9AA + .4byte _0811C9E8 + .4byte _0811CA00 +_0811C8C8: + movs r0, 0 + bl sub_80006F4 + adds r0, r4, 0 + adds r0, 0xA8 + adds r1, r4, 0 + adds r1, 0x98 + ldrh r1, [r1] + bl sub_811D184 + movs r0, 0 + bl sub_811D830 + b _0811C9F4 +_0811C8E4: + bl sub_811D280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0811C8F2 + b _0811CA16 +_0811C8F2: + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + ldr r0, _0811C910 @ =sub_811C6E8 + bl sub_80006F4 + b _0811CA16 + .align 2, 0 +_0811C910: .4byte sub_811C6E8 +_0811C914: + adds r0, r4, 0 + adds r0, 0x9C + ldrb r0, [r0] + bl sub_811D948 + b _0811C9F4 +_0811C920: + bl sub_811D9A8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0811CA16 + adds r0, r4, 0 + adds r0, 0x9E + strh r1, [r0] + b _0811C9F4 +_0811C934: + bl sub_811D754 + lsls r0, 24 + b _0811C9F0 +_0811C93C: + adds r0, r4, 0 + adds r0, 0x96 + ldrh r0, [r0] + adds r1, r4, 0 + adds r1, 0x9C + ldrb r1, [r1] + movs r2, 0x1 + bl sub_811DC54 + b _0811C9F4 +_0811C950: + bl sub_811DD90 + lsls r0, 24 + cmp r0, 0 + bne _0811CA16 + adds r1, r4, 0 + adds r1, 0x91 + movs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + adds r0, 0x9C + ldrh r0, [r0] + cmp r0, 0x3 + bne _0811C978 + adds r0, r4, 0 + adds r0, 0x94 + ldrh r0, [r0] + movs r1, 0 + bl sub_8071DF0 +_0811C978: + bl sub_811D2A8 + b _0811C9F4 +_0811C97E: + movs r0, 0 + bl sub_811D2EC + b _0811C9F4 +_0811C986: + bl sub_811D4EC + lsls r0, 24 + b _0811C9F0 +_0811C98E: + movs r0, 0 + bl sub_811D948 + b _0811C9F4 +_0811C996: + bl sub_811D9A8 + lsls r0, 24 + cmp r0, 0 + bne _0811CA16 + adds r1, r4, 0 + adds r1, 0x91 + movs r0, 0x1 + strb r0, [r1] + b _0811C9F4 +_0811C9AA: + ldr r0, _0811C9DC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0811CA16 + adds r0, r4, 0 + adds r0, 0x96 + ldrh r0, [r0] + bl sub_80A1150 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _0811C9E0 + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _0811C9F4 + .align 2, 0 +_0811C9DC: .4byte gUnknown_30030F0 +_0811C9E0: + ldrh r0, [r5] + adds r0, 0x2 + strh r0, [r5] + b _0811CA16 +_0811C9E8: + ldr r0, _0811C9FC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 +_0811C9F0: + cmp r0, 0 + bne _0811CA16 +_0811C9F4: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0811CA16 + .align 2, 0 +_0811C9FC: .4byte gUnknown_2037AB8 +_0811CA00: + ldr r0, [r4, 0x4] + bl sub_8000544 + bl sub_811D29C + adds r0, r4, 0 + bl sub_8002BC4 + adds r0, r6, 0 + bl sub_8077508 +_0811CA16: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_811C834 + + thumb_func_start sub_811CA20 +sub_811CA20: @ 811CA20 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_8077720 + adds r5, r0, 0 + adds r0, 0x92 + ldrh r0, [r0] + cmp r0, 0xD + bls _0811CA3C + b _0811CBD6 +_0811CA3C: + lsls r0, 2 + ldr r1, _0811CA48 @ =_0811CA4C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CA48: .4byte _0811CA4C + .align 2, 0 +_0811CA4C: + .4byte _0811CA84 + .4byte _0811CAA0 + .4byte _0811CAD4 + .4byte _0811CAF4 + .4byte _0811CB0C + .4byte _0811CB14 + .4byte _0811CB2A + .4byte _0811CB44 + .4byte _0811CB5A + .4byte _0811CB7E + .4byte _0811CB9A + .4byte _0811CBA2 + .4byte _0811CBB4 + .4byte _0811CBCE +_0811CA84: + movs r0, 0 + bl sub_80006F4 + adds r0, r5, 0 + adds r0, 0xA8 + adds r1, r5, 0 + adds r1, 0x98 + ldrh r1, [r1] + bl sub_811D184 + movs r0, 0x3 + bl sub_811D830 + b _0811CBC2 +_0811CAA0: + bl sub_811D280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0811CAAE + b _0811CBD6 +_0811CAAE: + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + adds r1, r5, 0 + adds r1, 0x92 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldr r0, _0811CAD0 @ =sub_811C6E8 + bl sub_80006F4 + b _0811CBD6 + .align 2, 0 +_0811CAD0: .4byte sub_811C6E8 +_0811CAD4: + ldr r0, _0811CAF0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0811CBD6 + adds r1, r5, 0 + adds r1, 0x9E + strh r0, [r1] + subs r1, 0xC + b _0811CBC6 + .align 2, 0 +_0811CAF0: .4byte gUnknown_2037AB8 +_0811CAF4: + adds r1, r5, 0 + adds r1, 0x9E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bls _0811CBD6 + bl sub_811D2A8 + b _0811CBC2 +_0811CB0C: + movs r0, 0x2 + bl sub_811D2EC + b _0811CBC2 +_0811CB14: + bl sub_811D4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0811CBD6 + adds r1, r5, 0 + adds r1, 0x9E + strh r0, [r1] + subs r1, 0xC + b _0811CBC6 +_0811CB2A: + adds r1, r5, 0 + adds r1, 0x9E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bls _0811CBD6 + movs r0, 0x3 + bl sub_811D2EC + b _0811CBC2 +_0811CB44: + bl sub_811D4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0811CBD6 + adds r1, r5, 0 + adds r1, 0x9E + strh r0, [r1] + subs r1, 0xC + b _0811CBC6 +_0811CB5A: + adds r1, r5, 0 + adds r1, 0x9E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bls _0811CBD6 + movs r0, 0xE1 + bl sub_80722CC + movs r0, 0x4 + bl sub_811D2EC + bl sub_811D4FC + b _0811CBC2 +_0811CB7E: + bl sub_811D530 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_811D4EC + orrs r4, r0 + lsls r4, 24 + cmp r4, 0 + bne _0811CBD6 + bl sub_811D4D4 + b _0811CBC2 +_0811CB9A: + movs r0, 0x5 + bl sub_811D2EC + b _0811CBC2 +_0811CBA2: + bl sub_811D4EC + lsls r0, 24 + cmp r0, 0 + bne _0811CBD6 + movs r0, 0x6 + bl sub_811D2EC + b _0811CBC2 +_0811CBB4: + bl sub_811D4EC + lsls r0, 24 + cmp r0, 0 + bne _0811CBD6 + bl sub_811D2D0 +_0811CBC2: + adds r1, r5, 0 + adds r1, 0x92 +_0811CBC6: + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0811CBD6 +_0811CBCE: + ldr r1, _0811CBE0 @ =sub_811CE4C + adds r0, r4, 0 + bl sub_811C718 +_0811CBD6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811CBE0: .4byte sub_811CE4C + thumb_func_end sub_811CA20 + + thumb_func_start sub_811CBE4 +sub_811CBE4: @ 811CBE4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_8077720 + adds r5, r0, 0 + adds r0, 0x91 + ldrb r0, [r0] + cmp r0, 0 + bne _0811CC1C + ldr r0, _0811CC14 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0811CC1C + ldr r1, _0811CC18 @ =sub_811CF88 + adds r0, r6, 0 + bl sub_811C718 + b _0811CD5A + .align 2, 0 +_0811CC14: .4byte gUnknown_30030F0 +_0811CC18: .4byte sub_811CF88 +_0811CC1C: + adds r0, r5, 0 + adds r0, 0x92 + ldrh r1, [r0] + adds r4, r0, 0 + cmp r1, 0x9 + bls _0811CC2A + b _0811CD5A +_0811CC2A: + lsls r0, r1, 2 + ldr r1, _0811CC34 @ =_0811CC38 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CC34: .4byte _0811CC38 + .align 2, 0 +_0811CC38: + .4byte _0811CC60 + .4byte _0811CC7C + .4byte _0811CCAC + .4byte _0811CCC0 + .4byte _0811CCCC + .4byte _0811CCE0 + .4byte _0811CCF0 + .4byte _0811CCF8 + .4byte _0811CD0C + .4byte _0811CD38 +_0811CC60: + movs r0, 0 + bl sub_80006F4 + adds r0, r5, 0 + adds r0, 0xA8 + adds r1, r5, 0 + adds r1, 0x98 + ldrh r1, [r1] + bl sub_811D184 + movs r0, 0 + bl sub_811D830 + b _0811CD2A +_0811CC7C: + bl sub_811D280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0811CD5A + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldr r0, _0811CCA8 @ =sub_811C6E8 + bl sub_80006F4 + b _0811CD5A + .align 2, 0 +_0811CCA8: .4byte sub_811C6E8 +_0811CCAC: + ldr r0, _0811CCBC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811CD5A + b _0811CD2A + .align 2, 0 +_0811CCBC: .4byte gUnknown_2037AB8 +_0811CCC0: + adds r0, r5, 0 + adds r0, 0x9C + ldrb r0, [r0] + bl sub_811D948 + b _0811CD2A +_0811CCCC: + adds r0, r5, 0 + adds r0, 0x96 + ldrh r0, [r0] + adds r1, r5, 0 + adds r1, 0x9C + ldrb r1, [r1] + movs r2, 0 + bl sub_811DC54 + b _0811CD2A +_0811CCE0: + bl sub_811DD90 + lsls r0, 24 + cmp r0, 0 + bne _0811CD5A + bl sub_811D2A8 + b _0811CD2A +_0811CCF0: + movs r0, 0x8 + bl sub_811D2EC + b _0811CD2A +_0811CCF8: + bl sub_811D4EC + lsls r0, 24 + cmp r0, 0 + bne _0811CD5A + adds r1, r5, 0 + adds r1, 0x91 + movs r0, 0x1 + strb r0, [r1] + b _0811CD2A +_0811CD0C: + ldr r0, _0811CD34 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0811CD5A + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_0811CD2A: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811CD5A + .align 2, 0 +_0811CD34: .4byte gUnknown_30030F0 +_0811CD38: + ldr r0, _0811CD64 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811CD5A + ldr r0, [r5, 0x4] + bl sub_8000544 + bl sub_811D29C + adds r0, r5, 0 + bl sub_8002BC4 + adds r0, r6, 0 + bl sub_8077508 +_0811CD5A: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811CD64: .4byte gUnknown_2037AB8 + thumb_func_end sub_811CBE4 + + thumb_func_start sub_811CD68 +sub_811CD68: @ 811CD68 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_8077720 + adds r5, r0, 0 + ldr r0, _0811CD90 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0811CD98 + ldr r1, _0811CD94 @ =sub_811CF88 + adds r0, r6, 0 + bl sub_811C718 + b _0811CE3E + .align 2, 0 +_0811CD90: .4byte gUnknown_30030F0 +_0811CD94: .4byte sub_811CF88 +_0811CD98: + adds r4, r5, 0 + adds r4, 0x92 + ldrh r0, [r4] + cmp r0, 0x1 + beq _0811CDD2 + cmp r0, 0x1 + bgt _0811CDAC + cmp r0, 0 + beq _0811CDB6 + b _0811CE3E +_0811CDAC: + cmp r0, 0x2 + beq _0811CE00 + cmp r0, 0x3 + beq _0811CE24 + b _0811CE3E +_0811CDB6: + movs r0, 0 + bl sub_80006F4 + adds r0, r5, 0 + adds r0, 0xA8 + adds r1, r5, 0 + adds r1, 0x98 + ldrh r1, [r1] + bl sub_811D184 + movs r0, 0x3 + bl sub_811D830 + b _0811CE16 +_0811CDD2: + bl sub_811D280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0811CE3E + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldr r0, _0811CDFC @ =sub_811C6E8 + bl sub_80006F4 + b _0811CE3E + .align 2, 0 +_0811CDFC: .4byte sub_811C6E8 +_0811CE00: + ldr r0, _0811CE20 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0811CE3E + adds r0, r5, 0 + adds r0, 0x9E + strh r1, [r0] +_0811CE16: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811CE3E + .align 2, 0 +_0811CE20: .4byte gUnknown_2037AB8 +_0811CE24: + adds r1, r5, 0 + adds r1, 0x9E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x14 + bls _0811CE3E + ldr r1, _0811CE48 @ =sub_811CE4C + adds r0, r6, 0 + bl sub_811C718 +_0811CE3E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811CE48: .4byte sub_811CE4C + thumb_func_end sub_811CD68 + + thumb_func_start sub_811CE4C +sub_811CE4C: @ 811CE4C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_8077720 + adds r5, r0, 0 + adds r0, 0x91 + ldrb r0, [r0] + cmp r0, 0 + bne _0811CE88 + ldr r0, _0811CE80 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0811CE88 + bl sub_811D5B0 + ldr r1, _0811CE84 @ =sub_811CF88 + adds r0, r6, 0 + bl sub_811C718 + b _0811CF7E + .align 2, 0 +_0811CE80: .4byte gUnknown_30030F0 +_0811CE84: .4byte sub_811CF88 +_0811CE88: + adds r0, r5, 0 + adds r0, 0x92 + ldrh r1, [r0] + adds r4, r0, 0 + cmp r1, 0x9 + bhi _0811CF7E + lsls r0, r1, 2 + ldr r1, _0811CEA0 @ =_0811CEA4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CEA0: .4byte _0811CEA4 + .align 2, 0 +_0811CEA4: + .4byte _0811CECC + .4byte _0811CEE0 + .4byte _0811CEEC + .4byte _0811CEFC + .4byte _0811CF02 + .4byte _0811CF0E + .4byte _0811CF14 + .4byte _0811CF28 + .4byte _0811CF46 + .4byte _0811CF6C +_0811CECC: + adds r0, r5, 0 + adds r0, 0x96 + ldrh r0, [r0] + bl sub_811DCF0 + adds r1, r5, 0 + adds r1, 0x9E + movs r0, 0 + strh r0, [r1] + b _0811CF5E +_0811CEE0: + bl sub_811D2A8 + movs r0, 0x7 + bl sub_811D2EC + b _0811CF5E +_0811CEEC: + bl sub_811D4EC + lsls r0, 24 + cmp r0, 0 + bne _0811CF7E + bl sub_811D2D0 + b _0811CF5E +_0811CEFC: + bl sub_811D6EC + b _0811CF5E +_0811CF02: + bl sub_811D6FC + lsls r0, 24 + cmp r0, 0 + bne _0811CF7E + b _0811CF5E +_0811CF0E: + bl sub_811D5A0 + b _0811CF5E +_0811CF14: + bl sub_811D5C0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0811CF7E + adds r0, r5, 0 + adds r0, 0x9E + strh r1, [r0] + b _0811CF5E +_0811CF28: + adds r1, r5, 0 + adds r1, 0x9E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bls _0811CF7E + bl sub_811D2A8 + movs r0, 0x9 + bl sub_811D2EC + b _0811CF5E +_0811CF46: + bl sub_811D4EC + lsls r0, 24 + cmp r0, 0 + bne _0811CF7E + ldr r0, _0811CF68 @ =0x00000101 + bl sub_8071C60 + adds r1, r5, 0 + adds r1, 0x91 + movs r0, 0x1 + strb r0, [r1] +_0811CF5E: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811CF7E + .align 2, 0 +_0811CF68: .4byte 0x00000101 +_0811CF6C: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _0811CF7E + ldr r1, _0811CF84 @ =sub_811CF88 + adds r0, r6, 0 + bl sub_811C718 +_0811CF7E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811CF84: .4byte sub_811CF88 + thumb_func_end sub_811CE4C + + thumb_func_start sub_811CF88 +sub_811CF88: @ 811CF88 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_8077720 + adds r5, r0, 0 + adds r4, r5, 0 + adds r4, 0x92 + ldrh r0, [r4] + cmp r0, 0 + beq _0811CFA8 + cmp r0, 0x1 + beq _0811CFC8 + b _0811D008 +_0811CFA8: + ldr r0, _0811CFC4 @ =sub_811C6E8 + bl sub_80006F4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811D008 + .align 2, 0 +_0811CFC4: .4byte sub_811C6E8 +_0811CFC8: + ldr r0, _0811D010 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811D008 + adds r0, r5, 0 + adds r0, 0xA4 + ldr r0, [r0] + cmp r0, 0x1 + bne _0811CFE8 + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + beq _0811D008 +_0811CFE8: + ldr r0, _0811D014 @ =gUnknown_203B090 + adds r1, r5, 0 + adds r1, 0x91 + ldrb r1, [r1] + str r1, [r0] + ldr r0, [r5, 0x4] + bl sub_8000544 + adds r0, r6, 0 + bl sub_8077508 + bl sub_811D29C + adds r0, r5, 0 + bl sub_8002BC4 +_0811D008: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811D010: .4byte gUnknown_2037AB8 +_0811D014: .4byte gUnknown_203B090 + thumb_func_end sub_811CF88 + + thumb_func_start sub_811D018 +sub_811D018: @ 811D018 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r4, _0811D044 @ =gUnknown_8459634 +_0811D022: + adds r1, r4, 0 + ldrh r0, [r1] + cmp r0, r3 + beq _0811D04C + adds r4, r1, 0x4 + adds r2, 0x1 + cmp r2, 0x1 + bls _0811D022 + ldr r1, _0811D048 @ =0xfffffedf + adds r0, r3, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x39 + bls _0811D050 + movs r0, 0 + b _0811D052 + .align 2, 0 +_0811D044: .4byte gUnknown_8459634 +_0811D048: .4byte 0xfffffedf +_0811D04C: + ldrh r0, [r4, 0x2] + b _0811D052 +_0811D050: + movs r0, 0x4 +_0811D052: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811D018 + + thumb_func_start sub_811D058 +sub_811D058: @ 811D058 + push {lr} + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0x64 + bhi _0811D068 + movs r0, 0 + b _0811D07A +_0811D068: + cmp r0, 0x96 + bhi _0811D070 + movs r0, 0x1 + b _0811D07A +_0811D070: + cmp r1, 0xC8 + bls _0811D078 + movs r0, 0x3 + b _0811D07A +_0811D078: + movs r0, 0x2 +_0811D07A: + pop {r1} + bx r1 + thumb_func_end sub_811D058 + + thumb_func_start sub_811D080 +sub_811D080: @ 811D080 + push {lr} + ldr r0, _0811D090 @ =gUnknown_203B094 + ldrb r0, [r0] + movs r1, 0 + bl sub_8077720 + pop {r1} + bx r1 + .align 2, 0 +_0811D090: .4byte gUnknown_203B094 + thumb_func_end sub_811D080 + + thumb_func_start sub_811D094 +sub_811D094: @ 811D094 + push {lr} + bl sub_811D080 + ldr r1, _0811D0A4 @ =gUnknown_203B098 + str r0, [r1] + adds r0, 0x8 + pop {r1} + bx r1 + .align 2, 0 +_0811D0A4: .4byte gUnknown_203B098 + thumb_func_end sub_811D094 + + thumb_func_start sub_811D0A8 +sub_811D0A8: @ 811D0A8 + push {lr} + bl sub_811D080 + adds r0, 0xA8 + pop {r1} + bx r1 + thumb_func_end sub_811D0A8 + + thumb_func_start sub_811D0B4 +sub_811D0B4: @ 811D0B4 + push {lr} + bl sub_811D080 + adds r0, 0x96 + ldrh r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_811D0B4 + + thumb_func_start sub_811D0C4 +sub_811D0C4: @ 811D0C4 + push {lr} + bl sub_811D080 + adds r0, 0x77 + pop {r1} + bx r1 + thumb_func_end sub_811D0C4 + + thumb_func_start sub_811D0D0 +sub_811D0D0: @ 811D0D0 + push {lr} + bl sub_811D080 + adds r0, 0x84 + pop {r1} + bx r1 + thumb_func_end sub_811D0D0 + + thumb_func_start sub_811D0DC +sub_811D0DC: @ 811D0DC + push {r4,lr} + adds r4, r0, 0 + bl sub_811D080 + adds r1, r0, 0 + adds r1, 0x6C + adds r0, r4, 0 + bl sub_8008D84 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811D0DC + + thumb_func_start sub_811D0F4 +sub_811D0F4: @ 811D0F4 + push {lr} + bl sub_811D080 + adds r0, 0x6C + pop {r1} + bx r1 + thumb_func_end sub_811D0F4 + + thumb_func_start sub_811D100 +sub_811D100: @ 811D100 + push {lr} + bl sub_811D080 + adds r0, 0x98 + ldrb r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_811D100 + + thumb_func_start sub_811D110 +sub_811D110: @ 811D110 + push {lr} + bl sub_811D080 + adds r0, 0x94 + ldrh r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_811D110 + + thumb_func_start sub_811D120 +sub_811D120: @ 811D120 + push {lr} + bl sub_811D080 + adds r0, 0xA0 + ldr r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_811D120 + + thumb_func_start sub_811D130 +sub_811D130: @ 811D130 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r1, 0x3A + bl sub_803FBE8 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x3B + bl sub_803FBE8 + strh r0, [r5, 0x2] + adds r0, r4, 0 + movs r1, 0x3C + bl sub_803FBE8 + strh r0, [r5, 0x4] + adds r0, r4, 0 + movs r1, 0x3D + bl sub_803FBE8 + strh r0, [r5, 0x6] + adds r0, r4, 0 + movs r1, 0x3E + bl sub_803FBE8 + strh r0, [r5, 0x8] + adds r0, r4, 0 + movs r1, 0x3F + bl sub_803FBE8 + strh r0, [r5, 0xA] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811D130 + + thumb_func_start sub_811D178 +sub_811D178: @ 811D178 + ldr r0, _0811D180 @ =gUnknown_203B090 + ldr r0, [r0] + bx lr + .align 2, 0 +_0811D180: .4byte gUnknown_203B090 + thumb_func_end sub_811D178 + + thumb_func_start sub_811D184 +sub_811D184: @ 811D184 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r5, r1, 16 + lsrs r5, 16 + bl sub_8003ECC + bl sub_80F6808 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _0811D270 @ =gUnknown_8459980 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + ldr r0, _0811D274 @ =gUnknown_8459988 + bl sub_8003B24 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _0811D278 @ =0x00000914 + adds r1, r4, r0 + movs r0, 0 + bl sub_8001FA0 + ldr r0, _0811D27C @ =0x00001914 + adds r4, r0 + movs r0, 0x3 + adds r1, r4, 0 + bl sub_8001FA0 + movs r1, 0xC0 + lsls r1, 19 + movs r0, 0 + movs r2, 0x20 + movs r3, 0x1 + bl sub_8000F44 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + adds r0, r5, 0 + bl sub_811D7D4 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0 + movs r1, 0 + movs r2, 0xE0 + bl sub_815001C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811D270: .4byte gUnknown_8459980 +_0811D274: .4byte gUnknown_8459988 +_0811D278: .4byte 0x00000914 +_0811D27C: .4byte 0x00001914 + thumb_func_end sub_811D184 + + thumb_func_start sub_811D280 +sub_811D280: @ 811D280 + push {lr} + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + beq _0811D290 + movs r0, 0x1 + b _0811D298 +_0811D290: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 +_0811D298: + pop {r1} + bx r1 + thumb_func_end sub_811D280 + + thumb_func_start sub_811D29C +sub_811D29C: @ 811D29C + push {lr} + bl sub_8003ECC + pop {r0} + bx r0 + thumb_func_end sub_811D29C + + thumb_func_start sub_811D2A8 +sub_811D2A8: @ 811D2A8 + push {lr} + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + movs r0, 0 + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_811D2A8 + + thumb_func_start sub_811D2D0 +sub_811D2D0: @ 811D2D0 + push {lr} + movs r0, 0 + bl sub_80040B8 + movs r0, 0 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0 + movs r1, 0x1 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_811D2D0 + + thumb_func_start sub_811D2EC +sub_811D2EC: @ 811D2EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_811D0A8 + adds r4, r0, 0 + bl sub_811D0B4 + lsls r0, 16 + lsrs r7, r0, 16 + movs r0, 0 + mov r8, r0 + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + bl sub_811D094 + adds r6, r0, 0 + cmp r5, 0x9 + bls _0811D322 + b _0811D4C2 +_0811D322: + lsls r0, r5, 2 + ldr r1, _0811D32C @ =_0811D330 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D32C: .4byte _0811D330 + .align 2, 0 +_0811D330: + .4byte _0811D358 + .4byte _0811D38C + .4byte _0811D42C + .4byte _0811D418 + .4byte _0811D404 + .4byte _0811D450 + .4byte _0811D47C + .4byte _0811D488 + .4byte _0811D498 + .4byte _0811D3DC +_0811D358: + adds r4, 0x14 + adds r0, r7, 0 + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + adds r2, r0, 0 + ldr r1, _0811D384 @ =gUnknown_841B285 + bl sub_8008D84 + adds r2, r0, 0 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_803FBE8 + ldr r1, _0811D388 @ =gUnknown_841B293 + adds r0, r4, 0 + bl sub_8008DA4 + b _0811D4A2 + .align 2, 0 +_0811D384: .4byte gUnknown_841B285 +_0811D388: .4byte gUnknown_841B293 +_0811D38C: + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r4, 0x14 + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_803FBE8 + ldr r1, _0811D3D4 @ =gUnknown_841B295 + adds r0, r4, 0 + bl sub_8008DA4 + adds r2, r0, 0 + cmp r5, 0x63 + bhi _0811D3B8 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_0811D3B8: + movs r3, 0x3 + cmp r5, 0x63 + bhi _0811D3C0 + movs r3, 0x2 +_0811D3C0: + adds r0, r2, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8008E78 + adds r2, r0, 0 + ldr r1, _0811D3D8 @ =gUnknown_841B2A7 + bl sub_8008DA4 + b _0811D4A2 + .align 2, 0 +_0811D3D4: .4byte gUnknown_841B295 +_0811D3D8: .4byte gUnknown_841B2A7 +_0811D3DC: + bl sub_813CC90 + bl sub_811D0F4 + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + bl sub_811D0D0 + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC + adds r4, 0x14 + ldr r1, _0811D400 @ =gUnknown_841B32E + b _0811D470 + .align 2, 0 +_0811D400: .4byte gUnknown_841B32E +_0811D404: + ldr r1, _0811D444 @ =gUnknown_841B2F1 + movs r2, 0x1 + negs r2, r2 + movs r0, 0x2 + bl sub_8005ED4 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0811D418: + ldr r1, _0811D448 @ =gUnknown_841B2ED + movs r2, 0x1 + negs r2, r2 + movs r0, 0x2 + bl sub_8005ED4 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0811D42C: + adds r4, 0x14 + ldr r1, _0811D44C @ =gUnknown_8459998 + subs r0, r5, 0x2 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008D84 + movs r1, 0x1 + mov r9, r1 + b _0811D4A2 + .align 2, 0 +_0811D444: .4byte gUnknown_841B2F1 +_0811D448: .4byte gUnknown_841B2ED +_0811D44C: .4byte gUnknown_8459998 +_0811D450: + bl sub_813CC90 + bl sub_811D0F4 + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + bl sub_811D0C4 + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC + adds r4, 0x14 + ldr r1, _0811D478 @ =gUnknown_841B306 +_0811D470: + adds r0, r4, 0 + bl sub_813CCC8 + b _0811D4A2 + .align 2, 0 +_0811D478: .4byte gUnknown_841B306 +_0811D47C: + adds r4, 0x14 + ldr r1, _0811D484 @ =gUnknown_841B315 + b _0811D48C + .align 2, 0 +_0811D484: .4byte gUnknown_841B315 +_0811D488: + adds r4, 0x14 + ldr r1, _0811D494 @ =gUnknown_841B31B +_0811D48C: + adds r0, r4, 0 + bl sub_8008D84 + b _0811D4A2 + .align 2, 0 +_0811D494: .4byte gUnknown_841B31B +_0811D498: + adds r4, 0x14 + ldr r1, _0811D4D0 @ =gUnknown_841B329 + adds r0, r4, 0 + bl sub_8008D84 +_0811D4A2: + mov r0, r8 + lsls r3, r0, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + mov r1, r9 + str r1, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + movs r0, 0x4 + str r0, [sp, 0x10] + movs r0, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_812E62C +_0811D4C2: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811D4D0: .4byte gUnknown_841B329 + thumb_func_end sub_811D2EC + + thumb_func_start sub_811D4D4 +sub_811D4D4: @ 811D4D4 + push {lr} + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_811D4D4 + + thumb_func_start sub_811D4EC +sub_811D4EC: @ 811D4EC + push {lr} + movs r0, 0 + bl sub_8002E64 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_811D4EC + + thumb_func_start sub_811D4FC +sub_811D4FC: @ 811D4FC + push {r4,lr} + bl sub_811D0A8 + adds r4, r0, 0 + movs r0, 0 + strh r0, [r4] + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r0 + movs r0, 0x4 + orrs r1, r0 + adds r0, r1, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + adds r0, r4, 0 + bl sub_811E204 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811D4FC + + thumb_func_start sub_811D530 +sub_811D530: @ 811D530 + push {r4,r5,lr} + sub sp, 0x4 + bl sub_811D0A8 + adds r4, r0, 0 + ldrh r0, [r4] + cmp r0, 0 + beq _0811D546 + cmp r0, 0x1 + beq _0811D57E + b _0811D594 +_0811D546: + bl sub_811E2F4 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0811D594 + movs r0, 0 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 9 + lsls r2, r0 + movs r0, 0x4 + orrs r2, r0 + movs r1, 0x1 + negs r1, r1 + str r5, [sp] + adds r0, r2, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811D594 +_0811D57E: + ldr r0, _0811D590 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811D594 + movs r0, 0 + b _0811D596 + .align 2, 0 +_0811D590: .4byte gUnknown_2037AB8 +_0811D594: + movs r0, 0x1 +_0811D596: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811D530 + + thumb_func_start sub_811D5A0 +sub_811D5A0: @ 811D5A0 + push {lr} + bl sub_811D0A8 + movs r1, 0 + strh r1, [r0] + pop {r0} + bx r0 + thumb_func_end sub_811D5A0 + + thumb_func_start sub_811D5B0 +sub_811D5B0: @ 811D5B0 + push {lr} + bl sub_811E388 + bl sub_8070A84 + pop {r0} + bx r0 + thumb_func_end sub_811D5B0 + + thumb_func_start sub_811D5C0 +sub_811D5C0: @ 811D5C0 + push {r4,lr} + sub sp, 0x4 + bl sub_811D0A8 + adds r4, r0, 0 + ldrh r0, [r4] + cmp r0, 0x8 + bls _0811D5D2 + b _0811D6DE +_0811D5D2: + lsls r0, 2 + ldr r1, _0811D5DC @ =_0811D5E0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D5DC: .4byte _0811D5E0 + .align 2, 0 +_0811D5E0: + .4byte _0811D604 + .4byte _0811D60C + .4byte _0811D61C + .4byte _0811D62C + .4byte _0811D63E + .4byte _0811D670 + .4byte _0811D6A0 + .4byte _0811D6BA + .4byte _0811D6CA +_0811D604: + movs r0, 0 + bl sub_811E194 + b _0811D6D6 +_0811D60C: + bl sub_811D9A8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0811D6E2 + strh r0, [r4, 0x4] + b _0811D6D6 +_0811D61C: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x14 + bls _0811D6E2 + b _0811D6D6 +_0811D62C: + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + movs r3, 0x1 + bl sub_811DB7C + movs r0, 0 + strh r0, [r4, 0x4] + b _0811D6D6 +_0811D63E: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + cmp r0, 0 + beq _0811D6E2 + movs r0, 0 + strh r0, [r4, 0x4] + movs r0, 0x85 + bl sub_80722CC + ldr r0, _0811D66C @ =0x00007da8 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + movs r3, 0xC + bl sub_8070588 + adds r0, r4, 0 + bl sub_811E348 + b _0811D6D6 + .align 2, 0 +_0811D66C: .4byte 0x00007da8 +_0811D670: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x46 + bls _0811D6E2 + adds r0, r4, 0 + bl sub_811DBA8 + ldr r0, _0811D69C @ =0x00007da8 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x6 + movs r2, 0xC + movs r3, 0 + bl sub_8070588 + movs r0, 0 + strh r0, [r4, 0x4] + b _0811D6D6 + .align 2, 0 +_0811D69C: .4byte 0x00007da8 +_0811D6A0: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + bl sub_811E5A4 + adds r1, r0, 0 + cmp r1, 0 + bne _0811D6E2 + ldrh r0, [r4, 0x4] + cmp r0, 0x28 + bls _0811D6E2 + strh r1, [r4, 0x4] + b _0811D6D6 +_0811D6BA: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x14 + bls _0811D6E2 + b _0811D6D6 +_0811D6CA: + movs r0, 0x54 + bl sub_80722CC + ldr r0, [r4, 0x10] + bl sub_8007280 +_0811D6D6: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811D6E2 +_0811D6DE: + movs r0, 0 + b _0811D6E4 +_0811D6E2: + movs r0, 0x1 +_0811D6E4: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811D5C0 + + thumb_func_start sub_811D6EC +sub_811D6EC: @ 811D6EC + push {lr} + bl sub_811D0A8 + movs r1, 0 + strh r1, [r0] + pop {r0} + bx r0 + thumb_func_end sub_811D6EC + + thumb_func_start sub_811D6FC +sub_811D6FC: @ 811D6FC + push {r4,lr} + bl sub_811D0A8 + adds r4, r0, 0 + ldrh r0, [r4] + cmp r0, 0 + beq _0811D710 + cmp r0, 0x1 + beq _0811D722 + b _0811D72C +_0811D710: + bl sub_811E10C + movs r0, 0x1D + bl sub_80722CC + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811D72C +_0811D722: + bl sub_811E138 + lsls r0, 24 + lsrs r0, 24 + b _0811D72E +_0811D72C: + movs r0, 0x1 +_0811D72E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811D6FC + + thumb_func_start sub_811D734 +sub_811D734: @ 811D734 + push {lr} + sub sp, 0x8 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r0, 0x78 + movs r1, 0x38 + movs r2, 0x4 + movs r3, 0x4 + bl sub_811E5B8 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_811D734 + + thumb_func_start sub_811D754 +sub_811D754: @ 811D754 + push {lr} + bl sub_811E680 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_811D754 + + thumb_func_start sub_811D764 +sub_811D764: @ 811D764 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0x1 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x1 + bl sub_811E7F0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811D764 + + thumb_func_start sub_811D7A0 +sub_811D7A0: @ 811D7A0 + push {lr} + sub sp, 0x4 + adds r1, r0, 0 + movs r0, 0x3 + str r0, [sp] + movs r0, 0x1 + movs r2, 0x1 + movs r3, 0x2 + bl sub_811E93C + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_811D7A0 + + thumb_func_start sub_811D7C4 +sub_811D7C4: @ 811D7C4 + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_811D7C4 + + thumb_func_start sub_811D7D4 +sub_811D7D4: @ 811D7D4 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r1, _0811D80C @ =gUnknown_845973C + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r1, _0811D810 @ =gUnknown_845967C + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + cmp r4, 0x4 + beq _0811D818 + ldr r0, _0811D814 @ =gUnknown_845963C + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + b _0811D822 + .align 2, 0 +_0811D80C: .4byte gUnknown_845973C +_0811D810: .4byte gUnknown_845967C +_0811D814: .4byte gUnknown_845963C +_0811D818: + ldr r0, _0811D82C @ =gUnknown_845965C + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC +_0811D822: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811D82C: .4byte gUnknown_845965C + thumb_func_end sub_811D7D4 + + thumb_func_start sub_811D830 +sub_811D830: @ 811D830 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + bl sub_811D0A8 + adds r5, r0, 0 + bl sub_811D094 + mov r8, r0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + mov r0, r8 + movs r1, 0 + bl sub_803FBE8 + mov r10, r0 + adds r0, r7, 0 + mov r1, r10 + movs r2, 0x2 + bl sub_812EA78 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0811D87E + movs r0, 0x48 + strh r0, [r5, 0x6] + adds r0, r1, 0 + adds r0, 0x30 + b _0811D884 +_0811D87E: + movs r0, 0x48 + strh r0, [r5, 0x6] + movs r0, 0x60 +_0811D884: + strh r0, [r5, 0x8] + movs r4, 0x80 + lsls r4, 6 + adds r0, r4, 0 + bl sub_8002B9C + adds r6, r0, 0 + adds r0, r4, 0 + bl sub_8002B9C + mov r9, r0 + movs r0, 0x80 + lsls r0, 1 + bl sub_8002B9C + adds r4, r0, 0 + cmp r6, 0 + beq _0811D920 + mov r0, r9 + cmp r0, 0 + beq _0811D916 + cmp r4, 0 + beq _0811D916 + lsls r0, r7, 3 + ldr r1, _0811D900 @ =gUnknown_82350AC + adds r0, r1 + adds r1, r6, 0 + adds r2, r7, 0 + mov r3, r10 + bl sub_800ECC4 + mov r0, r8 + bl sub_80440BC + adds r1, r4, 0 + bl LZ77UnCompWram + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_811DC14 + ldr r0, _0811D904 @ =gUnknown_8459A30 + movs r1, 0x6 + ldrsh r2, [r5, r1] + movs r1, 0x78 + movs r3, 0x4 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0811D90C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0811D908 @ =gUnknown_202063C + adds r0, r1 + str r0, [r5, 0xC] + ldr r1, [sp] + bl sub_811DB14 + b _0811D910 + .align 2, 0 +_0811D900: .4byte gUnknown_82350AC +_0811D904: .4byte gUnknown_8459A30 +_0811D908: .4byte gUnknown_202063C +_0811D90C: + movs r0, 0 + str r0, [r5, 0xC] +_0811D910: + mov r0, sp + ldrb r0, [r0] + strb r0, [r5, 0xA] +_0811D916: + cmp r6, 0 + beq _0811D920 + adds r0, r6, 0 + bl sub_8002BC4 +_0811D920: + mov r1, r9 + cmp r1, 0 + beq _0811D92C + mov r0, r9 + bl sub_8002BC4 +_0811D92C: + cmp r4, 0 + beq _0811D936 + adds r0, r4, 0 + bl sub_8002BC4 +_0811D936: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811D830 + + thumb_func_start sub_811D948 +sub_811D948: @ 811D948 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_811D0A8 + adds r5, r0, 0 + ldrb r0, [r5, 0xA] + cmp r6, r0 + beq _0811D99C + ldr r0, _0811D990 @ =sub_811D9BC + movs r1, 0x4 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, [r5, 0xC] + adds r0, r4, 0 + movs r1, 0x6 + bl sub_80776E8 + ldr r1, _0811D994 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrb r0, [r5, 0xA] + strh r0, [r1, 0xA] + strh r6, [r1, 0xC] + movs r0, 0x6 + strh r0, [r1, 0x12] + ldrb r5, [r5, 0xA] + cmp r6, r5 + bls _0811D998 + movs r0, 0x1 + b _0811D99A + .align 2, 0 +_0811D990: .4byte sub_811D9BC +_0811D994: .4byte gUnknown_3005090 +_0811D998: + ldr r0, _0811D9A4 @ =0x0000ffff +_0811D99A: + strh r0, [r1, 0xE] +_0811D99C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811D9A4: .4byte 0x0000ffff + thumb_func_end sub_811D948 + + thumb_func_start sub_811D9A8 +sub_811D9A8: @ 811D9A8 + push {lr} + ldr r0, _0811D9B8 @ =sub_811D9BC + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0811D9B8: .4byte sub_811D9BC + thumb_func_end sub_811D9A8 + + thumb_func_start sub_811D9BC +sub_811D9BC: @ 811D9BC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + mov r8, r6 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0811D9F0 @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r6, 0 + movs r1, 0x6 + bl sub_8077720 + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0811DA26 + cmp r0, 0x1 + bgt _0811D9F4 + cmp r0, 0 + beq _0811D9FA + b _0811DA90 + .align 2, 0 +_0811D9F0: .4byte gUnknown_3005098 +_0811D9F4: + cmp r0, 0x2 + beq _0811DA7A + b _0811DA90 +_0811D9FA: + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_811DA9C + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0811DA18 + adds r0, r6, 0 + movs r1, 0x9 + bl sub_8077720 + ldrb r1, [r4, 0x2] + bl sub_811DA9C +_0811DA18: + ldrh r0, [r4, 0x6] + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r4, 0x2] + ldrh r0, [r4] + adds r0, 0x1 + b _0811DA8E +_0811DA26: + adds r0, r5, 0 + bl sub_811DAAC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _0811DA90 + movs r0, 0x6D + bl sub_80722CC + ldrb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_811DB14 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0811DA58 + adds r0, r6, 0 + movs r1, 0x9 + bl sub_8077720 + ldrb r1, [r4, 0x2] + bl sub_811DB48 +_0811DA58: + movs r0, 0x2 + ldrsh r1, [r4, r0] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0811DA74 + bl sub_811D0A8 + ldrh r1, [r4, 0x4] + strb r1, [r0, 0xA] + mov r0, r8 + bl sub_8077508 + b _0811DA90 +_0811DA74: + strh r7, [r4, 0x8] + movs r0, 0x2 + b _0811DA8E +_0811DA7A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xA + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _0811DA90 + movs r0, 0 +_0811DA8E: + strh r0, [r4] +_0811DA90: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811D9BC + + thumb_func_start sub_811DA9C +sub_811DA9C: @ 811DA9C + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r2, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r1, [r0, 0x32] + bx lr + thumb_func_end sub_811DA9C + + thumb_func_start sub_811DAAC +sub_811DAAC: @ 811DAAC + ldr r1, [r0, 0x1C] + ldr r0, _0811DABC @ =nullsub_8 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + bx lr + .align 2, 0 +_0811DABC: .4byte nullsub_8 + thumb_func_end sub_811DAAC + + thumb_func_start sub_811DAC0 +sub_811DAC0: @ 811DAC0 + lsls r1, 24 + lsls r0, 16 + asrs r0, 16 + ldr r2, _0811DAD8 @ =gUnknown_84599AA + lsrs r1, 23 + adds r1, r2 + ldrh r1, [r1] + muls r0, r1 + lsls r0, 8 + asrs r0, 16 + bx lr + .align 2, 0 +_0811DAD8: .4byte gUnknown_84599AA + thumb_func_end sub_811DAC0 + + thumb_func_start sub_811DADC +sub_811DADC: @ 811DADC + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_811D0A8 + ldrh r1, [r0, 0x8] + ldrh r2, [r0, 0x6] + subs r1, r2 + lsls r1, 16 + asrs r1, 8 + cmp r1, 0 + bge _0811DAF6 + adds r1, 0xFF +_0811DAF6: + asrs r1, 8 + ldr r3, _0811DB10 @ =0xffffff00 + adds r0, r4, r3 + muls r0, r1 + lsls r0, 8 + asrs r0, 16 + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811DB10: .4byte 0xffffff00 + thumb_func_end sub_811DADC + + thumb_func_start sub_811DB14 +sub_811DB14: @ 811DB14 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r4, 0x3 + bls _0811DB22 + movs r4, 0x3 +_0811DB22: + bl sub_811D0A8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_800843C + ldr r1, _0811DB44 @ =gUnknown_84599AA + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_811DADC + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811DB44: .4byte gUnknown_84599AA + thumb_func_end sub_811DB14 + + thumb_func_start sub_811DB48 +sub_811DB48: @ 811DB48 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + adds r1, r4, 0 + bl sub_811DB14 + ldrh r0, [r5, 0x3A] + subs r0, 0x20 + lsls r0, 16 + asrs r0, 16 + adds r1, r4, 0 + bl sub_811DAC0 + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x3C] + subs r0, 0x20 + lsls r0, 16 + asrs r0, 16 + adds r1, r4, 0 + bl sub_811DAC0 + strh r0, [r5, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811DB48 + + thumb_func_start sub_811DB7C +sub_811DB7C: @ 811DB7C + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r4, [r0, 0xC] + strh r1, [r4, 0x2E] + ldr r1, [r0, 0xC] + strh r2, [r1, 0x30] + ldr r1, [r0, 0xC] + strh r3, [r1, 0x32] + ldr r1, [r0, 0xC] + ldr r0, _0811DBA4 @ =sub_811DBBC + str r0, [r1, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811DBA4: .4byte sub_811DBBC + thumb_func_end sub_811DB7C + + thumb_func_start sub_811DBA8 +sub_811DBA8: @ 811DBA8 + ldr r2, [r0, 0xC] + movs r1, 0 + strh r1, [r2, 0x24] + ldr r1, [r0, 0xC] + ldr r0, _0811DBB8 @ =nullsub_8 + str r0, [r1, 0x1C] + bx lr + .align 2, 0 +_0811DBB8: .4byte nullsub_8 + thumb_func_end sub_811DBA8 + + thumb_func_start sub_811DBBC +sub_811DBBC: @ 811DBBC + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x3C] + adds r0, 0x1 + movs r3, 0 + strh r0, [r2, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r4, 0x2E + ldrsh r1, [r2, r4] + cmp r0, r1 + ble _0811DC0C + strh r3, [r2, 0x3C] + ldrh r0, [r2, 0x3A] + adds r0, 0x1 + strh r0, [r2, 0x3A] + movs r4, 0x30 + ldrsh r1, [r2, r4] + cmp r1, 0 + beq _0811DBF8 + lsls r0, 16 + asrs r0, 16 + cmp r0, r1 + blt _0811DBF8 + strh r3, [r2, 0x24] + ldr r0, _0811DBF4 @ =nullsub_8 + str r0, [r2, 0x1C] + b _0811DC0C + .align 2, 0 +_0811DBF4: .4byte nullsub_8 +_0811DBF8: + ldrh r1, [r2, 0x3A] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811DC06 + ldrh r0, [r2, 0x32] + b _0811DC0A +_0811DC06: + ldrh r0, [r2, 0x32] + negs r0, r0 +_0811DC0A: + strh r0, [r2, 0x24] +_0811DC0C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811DBBC + + thumb_func_start sub_811DC14 +sub_811DC14: @ 811DC14 + push {r4,lr} + sub sp, 0x10 + str r0, [sp] + ldr r3, _0811DC4C @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r3 + movs r2, 0x80 + lsls r2, 4 + orrs r0, r2 + ldr r2, _0811DC50 @ =0x0000ffff + ands r0, r2 + str r0, [sp, 0x4] + str r1, [sp, 0x8] + add r4, sp, 0x8 + ldr r0, [r4, 0x4] + ands r0, r3 + str r0, [r4, 0x4] + mov r0, sp + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811DC4C: .4byte 0xffff0000 +_0811DC50: .4byte 0x0000ffff + thumb_func_end sub_811DC14 + + thumb_func_start sub_811DC54 +sub_811DC54: @ 811DC54 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r2 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + bl sub_811D0A8 + adds r5, r0, 0 + adds r0, r7, 0 + bl sub_811DD20 + adds r1, r0, 0 + str r1, [r5, 0x10] + cmp r1, 0 + beq _0811DCD2 + adds r0, r5, 0 + adds r2, r6, 0 + bl sub_811E06C + ldr r0, [r5, 0x10] + adds r1, r6, 0 + bl sub_800843C + ldr r1, [r5, 0x10] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, _0811DCDC @ =sub_811DDA4 + movs r1, 0x2 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, [r5, 0x10] + adds r0, r4, 0 + movs r1, 0x4 + bl sub_80776E8 + ldr r0, _0811DCE0 @ =gUnknown_3005090 + lsls r5, r4, 2 + adds r5, r4 + lsls r5, 3 + adds r5, r0 + strh r6, [r5, 0xC] + ldr r1, _0811DCE4 @ =gUnknown_84599AA + lsls r0, r6, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_811DADC + strh r0, [r5, 0xE] + mov r0, r8 + strh r0, [r5, 0x14] + adds r0, r7, 0 + bl sub_811DCE8 + strh r0, [r5, 0x1A] +_0811DCD2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811DCDC: .4byte sub_811DDA4 +_0811DCE0: .4byte gUnknown_3005090 +_0811DCE4: .4byte gUnknown_84599AA + thumb_func_end sub_811DC54 + + thumb_func_start sub_811DCE8 +sub_811DCE8: @ 811DCE8 + ldr r0, _0811DCEC @ =0x00007fff + bx lr + .align 2, 0 +_0811DCEC: .4byte 0x00007fff + thumb_func_end sub_811DCE8 + + thumb_func_start sub_811DCF0 +sub_811DCF0: @ 811DCF0 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_811D0A8 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_811DD20 + str r0, [r5, 0x10] + cmp r0, 0 + beq _0811DD1A + movs r1, 0x3 + bl sub_800843C + ldr r1, [r5, 0x10] + adds r0, r5, 0 + movs r2, 0x3 + bl sub_811E06C +_0811DD1A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811DCF0 + + thumb_func_start sub_811DD20 +sub_811DD20: @ 811DD20 + push {r4,lr} + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x1 + movs r1, 0x1 + bl sub_8098758 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0811DD88 + ldr r3, _0811DD7C @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r4, r2, r3 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1 + strb r0, [r1] + adds r0, r3, 0 + adds r0, 0x10 + adds r0, r2, r0 + ldr r1, _0811DD80 @ =gUnknown_8459A20 + str r1, [r0] + adds r3, 0x1C + adds r2, r3 + ldr r0, _0811DD84 @ =nullsub_8 + str r0, [r2] + adds r0, r4, 0 + bl sub_800860C + adds r0, r4, 0 + b _0811DD8A + .align 2, 0 +_0811DD7C: .4byte gUnknown_202063C +_0811DD80: .4byte gUnknown_8459A20 +_0811DD84: .4byte nullsub_8 +_0811DD88: + movs r0, 0 +_0811DD8A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811DD20 + + thumb_func_start sub_811DD90 +sub_811DD90: @ 811DD90 + push {lr} + ldr r0, _0811DDA0 @ =sub_811DDA4 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0811DDA0: .4byte sub_811DDA4 + thumb_func_end sub_811DD90 + + thumb_func_start sub_811DDA4 +sub_811DDA4: @ 811DDA4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0811DDD4 @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r6, 0 + movs r1, 0x4 + bl sub_8077720 + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _0811DDCA + b _0811DF0C +_0811DDCA: + lsls r0, 2 + ldr r1, _0811DDD8 @ =_0811DDDC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811DDD4: .4byte gUnknown_3005098 +_0811DDD8: .4byte _0811DDDC + .align 2, 0 +_0811DDDC: + .4byte _0811DDF0 + .4byte _0811DE2A + .4byte _0811DE7C + .4byte _0811DEA0 + .4byte _0811DEF0 +_0811DDF0: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bgt _0811DE00 + b _0811DF0C +_0811DE00: + movs r0, 0 + strh r0, [r4, 0x2] + movs r0, 0xBB + bl sub_80722CC + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0811DE24 + bl sub_811E588 +_0811DE24: + movs r0, 0x1 + strh r0, [r4] + b _0811DF0C +_0811DE2A: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _0811DF0C + movs r0, 0 + strh r0, [r4, 0x2] + ldr r0, _0811DE78 @ =gUnknown_8459AA8 + str r0, [r5, 0x10] + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl sub_800843C + movs r0, 0x1 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 9 + lsls r2, r0 + movs r1, 0x2 + negs r1, r1 + ldrh r0, [r4, 0x12] + str r0, [sp] + adds r0, r2, 0 + movs r2, 0 + movs r3, 0xC + bl sub_8070588 + movs r0, 0x2 + strh r0, [r4] + movs r0, 0xDA + bl sub_80722CC + b _0811DF0C + .align 2, 0 +_0811DE78: .4byte gUnknown_8459AA8 +_0811DE7C: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0811DF0C + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x14 + strh r0, [r4, 0x14] + movs r0, 0x3 + strh r0, [r4] + b _0811DF0C +_0811DEA0: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x14 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _0811DF0C + movs r0, 0 + strh r0, [r4, 0x2] + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0811DEC8 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_811DF14 +_0811DEC8: + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0811DED6 + movs r0, 0xD2 + bl sub_80722CC +_0811DED6: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _0811DEEA + movs r0, 0x4 + strh r0, [r4] + b _0811DF0C +_0811DEEA: + movs r0, 0x8 + strh r0, [r4, 0x14] + b _0811DF0C +_0811DEF0: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0811DF0C + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0811DF06 + adds r0, r5, 0 + bl sub_8007280 +_0811DF06: + adds r0, r6, 0 + bl sub_8077508 +_0811DF0C: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_811DDA4 + + thumb_func_start sub_811DF14 +sub_811DF14: @ 811DF14 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0x20 + ldrsh r5, [r2, r0] + movs r1, 0x24 + ldrsh r0, [r2, r1] + adds r5, r0 + subs r5, 0x4 + movs r0, 0x22 + ldrsh r4, [r2, r0] + movs r1, 0x26 + ldrsh r0, [r2, r1] + adds r4, r0 + subs r4, 0x4 + movs r0, 0x5 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r0 + ldrh r2, [r7, 0x12] + adds r0, r1, 0 + movs r1, 0x10 + bl sub_80714D4 + movs r6, 0 + ldr r2, _0811DFB4 @ =gUnknown_202063C + mov r8, r2 + movs r0, 0x1C + add r0, r8 + mov r10, r0 + lsls r5, 16 + lsls r4, 16 +_0811DF68: + ldr r0, _0811DFB8 @ =gUnknown_8459B30 + asrs r1, r5, 16 + asrs r2, r4, 16 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0811DFA0 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + mov r2, r8 + adds r0, r1, r2 + lsls r2, r6, 4 + strh r2, [r0, 0x30] + mov r2, r9 + strh r2, [r0, 0x3C] + add r1, r10 + ldr r2, _0811DFBC @ =sub_811DFC0 + str r2, [r1] + movs r1, 0x1 + bl sub_800838C + ldrh r0, [r7, 0x10] + adds r0, 0x1 + strh r0, [r7, 0x10] +_0811DFA0: + adds r6, 0x1 + cmp r6, 0xE + ble _0811DF68 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811DFB4: .4byte gUnknown_202063C +_0811DFB8: .4byte gUnknown_8459B30 +_0811DFBC: .4byte sub_811DFC0 + thumb_func_end sub_811DF14 + + thumb_func_start sub_811DFC0 +sub_811DFC0: @ 811DFC0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x2E + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _0811E01C + adds r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r0, [r3, 0x2] + adds r0, 0x7 + movs r1, 0xFF + ands r0, r1 + strh r0, [r3, 0x2] + ldrh r0, [r3, 0x4] + adds r0, 0x4 + strh r0, [r3, 0x4] + movs r5, 0x4 + ldrsh r1, [r3, r5] + ldr r2, _0811E018 @ =gUnknown_825E074 + movs r5, 0x2 + ldrsh r0, [r3, r5] + adds r0, 0x40 + lsls r0, 1 + adds r0, r2 + movs r5, 0 + ldrsh r0, [r0, r5] + muls r0, r1 + asrs r0, 8 + strh r0, [r4, 0x24] + movs r0, 0x4 + ldrsh r1, [r3, r0] + movs r5, 0x2 + ldrsh r0, [r3, r5] + lsls r0, 1 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r4, 0x26] + b _0811E036 + .align 2, 0 +_0811E018: .4byte gUnknown_825E074 +_0811E01C: + ldr r2, _0811E03C @ =gUnknown_3005090 + movs r5, 0xE + ldrsh r1, [r3, r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x18] + subs r1, 0x1 + strh r1, [r0, 0x18] + adds r0, r4, 0 + bl sub_8007280 +_0811E036: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811E03C: .4byte gUnknown_3005090 + thumb_func_end sub_811DFC0 + + thumb_func_start sub_811E040 +sub_811E040: @ 811E040 + push {lr} + ldr r0, _0811E064 @ =sub_811DDA4 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _0811E05E + ldr r0, _0811E068 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x1E] +_0811E05E: + pop {r0} + bx r0 + .align 2, 0 +_0811E064: .4byte sub_811DDA4 +_0811E068: .4byte gUnknown_3005090 + thumb_func_end sub_811E040 + + thumb_func_start sub_811E06C +sub_811E06C: @ 811E06C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r3, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + cmp r2, 0x3 + bne _0811E088 + movs r0, 0x78 + strh r0, [r5, 0x20] + ldrh r0, [r3, 0x8] + b _0811E08E +_0811E088: + movs r0, 0x78 + strh r0, [r5, 0x20] + ldrh r0, [r3, 0x6] +_0811E08E: + strh r0, [r5, 0x22] + ldrh r0, [r5, 0x20] + adds r0, 0x4 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0x4 + strh r0, [r5, 0x22] + bl sub_811D110 + lsls r0, 16 + lsrs r6, r0, 16 + bl sub_811D120 + adds r7, r0, 0 + bl sub_811D100 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0811E0CC + adds r0, r6, 0 + adds r1, r7, 0 + movs r2, 0 + bl sub_812EA78 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0 + adds r1, r7, 0 + movs r2, 0x1 + b _0811E0E0 +_0811E0CC: + adds r0, r6, 0 + adds r1, r7, 0 + movs r2, 0x3 + bl sub_812EA78 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0 + adds r1, r7, 0 + movs r2, 0x4 +_0811E0E0: + bl sub_812EA78 + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0xFF + bne _0811E0EE + movs r4, 0 +_0811E0EE: + cmp r0, 0xFF + bne _0811E0F4 + movs r0, 0 +_0811E0F4: + strh r4, [r5, 0x3A] + strh r0, [r5, 0x3C] + adds r0, r5, 0 + mov r1, r8 + bl sub_811DB48 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811E06C + + thumb_func_start sub_811E10C +sub_811E10C: @ 811E10C + push {r4,lr} + bl sub_811D0A8 + adds r4, r0, 0 + ldr r0, [r4, 0xC] + bl sub_811E128 + ldr r0, [r4, 0x10] + bl sub_811E128 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811E10C + + thumb_func_start sub_811E128 +sub_811E128: @ 811E128 + movs r1, 0 + strh r1, [r0, 0x2E] + strh r1, [r0, 0x30] + ldr r1, _0811E134 @ =sub_811E154 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_0811E134: .4byte sub_811E154 + thumb_func_end sub_811E128 + + thumb_func_start sub_811E138 +sub_811E138: @ 811E138 + push {lr} + bl sub_811D0A8 + ldr r0, [r0, 0xC] + ldr r1, [r0, 0x1C] + ldr r0, _0811E150 @ =nullsub_8 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + pop {r1} + bx r1 + .align 2, 0 +_0811E150: .4byte nullsub_8 + thumb_func_end sub_811E138 + + thumb_func_start sub_811E154 +sub_811E154: @ 811E154 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0811E166 + cmp r0, 0x1 + beq _0811E174 + b _0811E18C +_0811E166: + ldrh r0, [r1, 0x20] + adds r0, 0x3 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _0811E18C +_0811E174: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _0811E18C + ldrh r0, [r1, 0x20] + subs r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, _0811E190 @ =nullsub_8 + str r0, [r1, 0x1C] +_0811E18C: + pop {r0} + bx r0 + .align 2, 0 +_0811E190: .4byte nullsub_8 + thumb_func_end sub_811E154 + + thumb_func_start sub_811E194 +sub_811E194: @ 811E194 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_811D0A8 + adds r5, r0, 0 + ldrb r0, [r5, 0xA] + cmp r6, r0 + beq _0811E1F8 + ldr r0, _0811E1EC @ =sub_811D9BC + movs r1, 0x1 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, [r5, 0xC] + adds r0, r4, 0 + movs r1, 0x6 + bl sub_80776E8 + ldr r2, [r5, 0x10] + adds r0, r4, 0 + movs r1, 0x9 + bl sub_80776E8 + ldr r1, _0811E1F0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrb r0, [r5, 0xA] + strh r0, [r1, 0xA] + strh r6, [r1, 0xC] + movs r2, 0x1 + strh r2, [r1, 0x18] + movs r0, 0x6 + strh r0, [r1, 0x12] + ldrb r5, [r5, 0xA] + cmp r6, r5 + bls _0811E1F4 + strh r2, [r1, 0xE] + b _0811E1F8 + .align 2, 0 +_0811E1EC: .4byte sub_811D9BC +_0811E1F0: .4byte gUnknown_3005090 +_0811E1F4: + ldr r0, _0811E200 @ =0x0000ffff + strh r0, [r1, 0xE] +_0811E1F8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811E200: .4byte 0x0000ffff + thumb_func_end sub_811E194 + + thumb_func_start sub_811E204 +sub_811E204: @ 811E204 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r10, r0 + ldr r0, _0811E2E0 @ =gUnknown_84599B8 + bl sub_800EBCC + ldr r0, _0811E2E4 @ =gUnknown_84599C0 + bl sub_8008928 + movs r0, 0 + mov r1, r10 + strh r0, [r1, 0x2] + ldr r0, _0811E2E8 @ =gUnknown_84599B2 + str r0, [sp, 0x4] + movs r1, 0x2 + str r1, [sp] +_0811E22C: + ldr r0, [sp, 0x4] + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + mov r9, r0 + mov r1, r9 + adds r1, 0x78 + ldr r0, [sp, 0x4] + ldrb r0, [r0, 0x1] + lsls r0, 24 + asrs r0, 24 + mov r8, r0 + mov r0, r10 + ldrh r2, [r0, 0x8] + add r2, r8 + lsls r2, 16 + asrs r2, 16 + ldr r0, _0811E2EC @ =gUnknown_8459AEC + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x40 + beq _0811E2C0 + bl sub_811D110 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + bl sub_811D120 + adds r6, r0, 0 + ldr r0, _0811E2F0 @ =gUnknown_202063C + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r0 + mov r1, r9 + lsls r0, r1, 3 + strh r0, [r4, 0x34] + mov r1, r8 + lsls r0, r1, 3 + strh r0, [r4, 0x36] + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_812EAE4 + lsls r0, 24 + asrs r0, 24 + movs r1, 0x3 + bl sub_811DAC0 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x1 + bl sub_812EAE4 + lsls r0, 24 + asrs r0, 24 + movs r1, 0x3 + bl sub_811DAC0 + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + mov r1, r10 + ldrh r0, [r1, 0x2] + adds r0, 0x1 + strh r0, [r1, 0x2] +_0811E2C0: + ldr r0, [sp, 0x4] + adds r0, 0x2 + str r0, [sp, 0x4] + ldr r1, [sp] + subs r1, 0x1 + str r1, [sp] + cmp r1, 0 + bge _0811E22C + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811E2E0: .4byte gUnknown_84599B8 +_0811E2E4: .4byte gUnknown_84599C0 +_0811E2E8: .4byte gUnknown_84599B2 +_0811E2EC: .4byte gUnknown_8459AEC +_0811E2F0: .4byte gUnknown_202063C + thumb_func_end sub_811E204 + + thumb_func_start sub_811E2F4 +sub_811E2F4: @ 811E2F4 + push {lr} + bl sub_811D0A8 + ldrb r0, [r0, 0x2] + pop {r1} + bx r1 + thumb_func_end sub_811E2F4 + + thumb_func_start sub_811E300 +sub_811E300: @ 811E300 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bgt _0811E330 + ldrh r0, [r4, 0x34] + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + ldrh r2, [r4, 0x32] + adds r1, r2 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x26] + b _0811E340 +_0811E330: + bl sub_811D0A8 + ldrh r1, [r0, 0x2] + subs r1, 0x1 + strh r1, [r0, 0x2] + adds r0, r4, 0 + bl sub_8007280 +_0811E340: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811E300 + + thumb_func_start sub_811E348 +sub_811E348: @ 811E348 + push {r4,lr} + bl sub_811E588 + ldr r0, _0811E37C @ =sub_811E3B4 + movs r1, 0x1 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _0811E380 @ =0x78865321 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_80776E8 + ldr r1, _0811E384 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0xE0 + strh r1, [r0, 0x12] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811E37C: .4byte sub_811E3B4 +_0811E380: .4byte 0x78865321 +_0811E384: .4byte gUnknown_3005090 + thumb_func_end sub_811E348 + + thumb_func_start sub_811E388 +sub_811E388: @ 811E388 + push {lr} + ldr r0, _0811E3AC @ =sub_811E3B4 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _0811E3A6 + ldr r0, _0811E3B0 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x8] +_0811E3A6: + pop {r0} + bx r0 + .align 2, 0 +_0811E3AC: .4byte sub_811E3B4 +_0811E3B0: .4byte gUnknown_3005090 + thumb_func_end sub_811E388 + + thumb_func_start sub_811E3B4 +sub_811E3B4: @ 811E3B4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0811E3DC @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0811E3E0 + cmp r0, 0x1 + beq _0811E4CE + b _0811E4DC + .align 2, 0 +_0811E3DC: .4byte gUnknown_3005098 +_0811E3E0: + ldrh r0, [r5, 0x2] + movs r3, 0x2 + ldrsh r2, [r5, r3] + mov r9, r2 + cmp r2, 0 + bne _0811E4C8 + bl sub_811D0A8 + ldr r0, [r0, 0x10] + movs r4, 0x20 + ldrsh r2, [r0, r4] + movs r3, 0x24 + ldrsh r1, [r0, r3] + adds r2, r1 + str r2, [sp] + movs r4, 0x22 + ldrsh r1, [r0, r4] + movs r2, 0x26 + ldrsh r0, [r0, r2] + adds r1, r0 + mov r10, r1 + adds r0, r6, 0 + bl sub_811E4EC + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x15 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x46 + ldr r3, _0811E4BC @ =gUnknown_825E074 + movs r4, 0xA + ldrsh r2, [r5, r4] + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 1 + adds r1, r3 + movs r4, 0 + ldrsh r1, [r1, r4] + muls r1, r0 + lsrs r1, 8 + ldr r4, [sp] + adds r4, r1 + mov r8, r4 + lsls r2, 1 + adds r2, r3 + movs r3, 0 + ldrsh r1, [r2, r3] + muls r0, r1 + lsrs r0, 8 + mov r4, r10 + adds r7, r4, r0 + ldrh r0, [r5, 0xA] + adds r0, 0x4C + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0xA] + ldr r0, _0811E4C0 @ =gUnknown_8459B30 + mov r2, r8 + lsls r1, r2, 16 + asrs r1, 16 + lsls r2, r7, 16 + asrs r2, 16 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0811E4A4 + ldr r0, _0811E4C4 @ =gUnknown_202063C + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r0 + mov r3, r9 + strh r3, [r4, 0x2E] + adds r0, r6, 0 + bl sub_811E4EC + movs r1, 0x1 + ands r1, r0 + adds r1, 0x6 + strh r1, [r4, 0x30] + mov r0, r8 + strh r0, [r4, 0x32] + strh r7, [r4, 0x34] + mov r1, sp + ldrh r1, [r1] + strh r1, [r4, 0x36] + mov r2, r10 + strh r2, [r4, 0x38] + strh r6, [r4, 0x3A] + ldrh r0, [r5, 0x4] + adds r0, 0x1 + strh r0, [r5, 0x4] +_0811E4A4: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2F + ble _0811E4DC + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0811E4DC + .align 2, 0 +_0811E4BC: .4byte gUnknown_825E074 +_0811E4C0: .4byte gUnknown_8459B30 +_0811E4C4: .4byte gUnknown_202063C +_0811E4C8: + subs r0, 0x1 + strh r0, [r5, 0x2] + b _0811E4DC +_0811E4CE: + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r0, 0 + bne _0811E4DC + adds r0, r6, 0 + bl sub_8077508 +_0811E4DC: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811E3B4 + + thumb_func_start sub_811E4EC +sub_811E4EC: @ 811E4EC + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8077720 + adds r5, r0, 0 + ldr r0, _0811E518 @ =0x41c64e6d + muls r0, r5 + ldr r1, _0811E51C @ =0x00006073 + adds r5, r0, r1 + adds r0, r4, 0 + movs r1, 0x3 + adds r2, r5, 0 + bl sub_80776E8 + lsrs r0, r5, 16 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811E518: .4byte 0x41c64e6d +_0811E51C: .4byte 0x00006073 + thumb_func_end sub_811E4EC + + thumb_func_start sub_811E520 +sub_811E520: @ 811E520 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + adds r0, r1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _0811E554 + ldr r2, _0811E550 @ =gUnknown_3005090 + movs r5, 0x3A + ldrsh r1, [r4, r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xC] + subs r1, 0x1 + strh r1, [r0, 0xC] + adds r0, r4, 0 + bl sub_8007280 + b _0811E582 + .align 2, 0 +_0811E550: .4byte gUnknown_3005090 +_0811E554: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + subs r0, r1 + movs r5, 0x2E + ldrsh r3, [r4, r5] + adds r2, r0, 0 + muls r2, r3 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r5, 0x34 + ldrsh r1, [r4, r5] + subs r0, r1 + muls r0, r3 + asrs r2, 8 + ldrh r1, [r4, 0x32] + adds r2, r1 + strh r2, [r4, 0x20] + asrs r0, 8 + ldrh r2, [r4, 0x34] + adds r0, r2 + strh r0, [r4, 0x22] +_0811E582: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811E520 + + thumb_func_start sub_811E588 +sub_811E588: @ 811E588 + push {lr} + ldr r0, _0811E59C @ =gUnknown_84599C8 + bl sub_800EBCC + ldr r0, _0811E5A0 @ =gUnknown_84599D0 + bl sub_8008928 + pop {r0} + bx r0 + .align 2, 0 +_0811E59C: .4byte gUnknown_84599C8 +_0811E5A0: .4byte gUnknown_84599D0 + thumb_func_end sub_811E588 + + thumb_func_start sub_811E5A4 +sub_811E5A4: @ 811E5A4 + push {lr} + ldr r0, _0811E5B4 @ =sub_811E3B4 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0811E5B4: .4byte sub_811E3B4 + thumb_func_end sub_811E5A4 + + thumb_func_start sub_811E5B8 +sub_811E5B8: @ 811E5B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + mov r9, r3 + ldr r0, [sp, 0x20] + mov r10, r0 + ldr r0, [sp, 0x24] + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + mov r1, r8 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + mov r1, r9 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + mov r1, r10 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _0811E664 @ =gUnknown_3002030 + mov r1, r8 + strh r1, [r0, 0x6] + ldr r1, _0811E668 @ =gUnknown_8459888 + str r1, [r0] + ldr r1, [r1] + lsrs r1, 8 + strh r1, [r0, 0x4] + ldr r4, _0811E66C @ =gUnknown_3002038 + ldr r1, _0811E670 @ =gUnknown_8459868 + str r1, [r4] + mov r1, r9 + strh r1, [r4, 0x4] + bl sub_800EBCC + adds r0, r4, 0 + bl sub_8008928 + ldr r0, _0811E674 @ =sub_811E694 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0811E678 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + subs r5, 0x20 + strh r5, [r1, 0x10] + adds r6, 0x20 + strh r6, [r1, 0x12] + mov r0, r8 + strh r0, [r1, 0x14] + mov r0, r9 + strh r0, [r1, 0x16] + mov r0, r10 + strh r0, [r1, 0x18] + strh r7, [r1, 0x1A] + movs r1, 0xFC + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _0811E67C @ =0x0000060c + movs r0, 0x52 + bl sub_8000A38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811E664: .4byte gUnknown_3002030 +_0811E668: .4byte gUnknown_8459888 +_0811E66C: .4byte gUnknown_3002038 +_0811E670: .4byte gUnknown_8459868 +_0811E674: .4byte sub_811E694 +_0811E678: .4byte gUnknown_3005090 +_0811E67C: .4byte 0x0000060c + thumb_func_end sub_811E5B8 + + thumb_func_start sub_811E680 +sub_811E680: @ 811E680 + push {lr} + ldr r0, _0811E690 @ =sub_811E694 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0811E690: .4byte sub_811E694 + thumb_func_end sub_811E680 + + thumb_func_start sub_811E694 +sub_811E694: @ 811E694 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0811E6B4 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0 + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _0811E6B8 + cmp r1, 0x1 + beq _0811E6EE + b _0811E708 + .align 2, 0 +_0811E6B4: .4byte gUnknown_3005098 +_0811E6B8: + ldrh r2, [r4, 0x6] + movs r3, 0x6 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _0811E6DE + adds r0, r2, 0x1 + strh r0, [r4, 0x6] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811E710 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x11 + ble _0811E708 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811E708 +_0811E6DE: + adds r0, r2, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _0811E708 + strh r1, [r4, 0x6] + b _0811E708 +_0811E6EE: + movs r3, 0x2 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _0811E708 + ldrh r0, [r4, 0xC] + bl sub_800874C + ldrh r0, [r4, 0xE] + bl sub_8008A30 + adds r0, r5, 0 + bl sub_8077508 +_0811E708: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811E694 + + thumb_func_start sub_811E710 +sub_811E710: @ 811E710 + push {r4-r6,lr} + sub sp, 0x18 + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + mov r1, sp + ldr r0, _0811E7A4 @ =gUnknown_8459ACC + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + mov r1, sp + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r0, [r4, 0xE] + strh r0, [r1, 0x2] + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + movs r0, 0x4 + ldrsh r1, [r4, r0] + movs r0, 0xDB + muls r1, r0 + movs r5, 0x3F + ands r1, r5 + ldrh r2, [r4, 0x8] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + movs r3, 0xA + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x12] + mov r0, sp + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0811E79A + ldr r0, _0811E7A8 @ =gUnknown_202063C + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r0 + movs r0, 0x3 + ldrb r1, [r4, 0x10] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0 + strh r0, [r2, 0x30] + movs r0, 0x4 + ldrsh r1, [r4, r0] + ldr r0, _0811E7AC @ =0x41c64e6d + muls r0, r1 + ldr r1, _0811E7B0 @ =0x00006073 + adds r0, r1 + ands r0, r5 + adds r0, 0x20 + strh r0, [r2, 0x32] + strh r6, [r2, 0x3C] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] +_0811E79A: + add sp, 0x18 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811E7A4: .4byte gUnknown_8459ACC +_0811E7A8: .4byte gUnknown_202063C +_0811E7AC: .4byte 0x41c64e6d +_0811E7B0: .4byte 0x00006073 + thumb_func_end sub_811E710 + + thumb_func_start sub_811E7B4 +sub_811E7B4: @ 811E7B4 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x30] + ldrh r1, [r3, 0x32] + subs r0, r1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 20 + strh r0, [r3, 0x26] + movs r1, 0x40 + negs r1, r1 + cmp r0, r1 + bge _0811E7E8 + ldr r2, _0811E7EC @ =gUnknown_3005090 + movs r0, 0x3C + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0xA] + subs r1, 0x1 + strh r1, [r0, 0xA] + adds r0, r3, 0 + bl sub_8007280 +_0811E7E8: + pop {r0} + bx r0 + .align 2, 0 +_0811E7EC: .4byte gUnknown_3005090 + thumb_func_end sub_811E7B4 + + thumb_func_start sub_811E7F0 +sub_811E7F0: @ 811E7F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + mov r8, r0 + adds r6, r1, 0 + adds r5, r2, 0 + adds r4, r3, 0 + ldr r3, [sp, 0x50] + ldr r0, [sp, 0x54] + mov r9, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, r4, 4 + orrs r1, r4 + lsls r1, 24 + lsrs r1, 24 + str r3, [sp, 0x2C] + bl sub_800445C + add r2, sp, 0xC + ldrh r0, [r5] + ldrh r1, [r6] + subs r0, r1 + strh r0, [r2] + ldrh r0, [r5, 0x2] + ldrh r1, [r6, 0x2] + subs r0, r1 + strh r0, [r2, 0x2] + ldrh r0, [r5, 0x4] + ldrh r1, [r6, 0x4] + subs r0, r1 + strh r0, [r2, 0x4] + ldrh r0, [r5, 0x8] + ldrh r1, [r6, 0x8] + subs r0, r1 + strh r0, [r2, 0x6] + ldrh r0, [r5, 0xA] + ldrh r1, [r6, 0xA] + subs r0, r1 + strh r0, [r2, 0x8] + ldrh r0, [r5, 0x6] + ldrh r1, [r6, 0x6] + subs r0, r1 + strh r0, [r2, 0xA] + add r0, sp, 0x24 + strb r4, [r0] + ldr r3, [sp, 0x2C] + strb r3, [r0, 0x1] + mov r1, r9 + strb r1, [r0, 0x2] + movs r7, 0 + mov r1, sp + adds r1, 0x19 + str r1, [sp, 0x28] + mov r10, r0 + movs r0, 0x1 + negs r0, r0 + mov r9, r0 + add r6, sp, 0x18 +_0811E880: + lsls r0, r7, 4 + subs r0, r7 + lsls r0, 24 + lsrs r5, r0, 24 + mov r1, r10 + str r1, [sp] + mov r0, r9 + str r0, [sp, 0x4] + ldr r1, _0811E930 @ =gUnknown_8459B48 + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [sp, 0x8] + mov r0, r8 + movs r1, 0x2 + movs r2, 0 + adds r3, r5, 0 + bl sub_812E51C + lsls r0, r7, 1 + mov r4, sp + adds r4, r0 + adds r4, 0xC + movs r1, 0 + ldrsh r0, [r4, r1] + ldr r1, _0811E934 @ =gUnknown_841B2E5 + cmp r0, 0 + blt _0811E8BA + ldr r1, _0811E938 @ =gUnknown_841B2DC +_0811E8BA: + adds r0, r6, 0 + bl sub_8008D84 + mov r0, r10 + str r0, [sp] + mov r1, r9 + str r1, [sp, 0x4] + str r6, [sp, 0x8] + mov r0, r8 + movs r1, 0x2 + movs r2, 0x38 + adds r3, r5, 0 + bl sub_812E51C + movs r0, 0 + strb r0, [r6] + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r1, 0 + cmp r1, 0 + bge _0811E8E6 + negs r0, r1 +_0811E8E6: + movs r4, 0x6 + cmp r0, 0x9 + bgt _0811E8EE + movs r4, 0xC +_0811E8EE: + cmp r1, 0 + bge _0811E8F4 + negs r1, r1 +_0811E8F4: + ldr r0, [sp, 0x28] + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + adds r2, r4, 0 + adds r2, 0x38 + mov r1, r10 + str r1, [sp] + mov r0, r9 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + mov r0, r8 + movs r1, 0x2 + adds r3, r5, 0 + bl sub_812E51C + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x5 + bls _0811E880 + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811E930: .4byte gUnknown_8459B48 +_0811E934: .4byte gUnknown_841B2E5 +_0811E938: .4byte gUnknown_841B2DC + thumb_func_end sub_811E7F0 + + thumb_func_start sub_811E93C +sub_811E93C: @ 811E93C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + mov r8, r0 + adds r5, r1, 0 + adds r4, r2, 0 + adds r6, r3, 0 + ldr r2, [sp, 0x4C] + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, r4, 4 + orrs r1, r4 + lsls r1, 24 + lsrs r1, 24 + str r2, [sp, 0x28] + bl sub_800445C + add r1, sp, 0xC + ldrh r0, [r5] + strh r0, [r1] + ldrh r0, [r5, 0x2] + strh r0, [r1, 0x2] + ldrh r0, [r5, 0x4] + strh r0, [r1, 0x4] + ldrh r0, [r5, 0x8] + strh r0, [r1, 0x6] + ldrh r0, [r5, 0xA] + strh r0, [r1, 0x8] + ldrh r0, [r5, 0x6] + strh r0, [r1, 0xA] + add r0, sp, 0x24 + strb r4, [r0] + strb r6, [r0, 0x1] + ldr r2, [sp, 0x28] + strb r2, [r0, 0x2] + movs r6, 0 + add r1, sp, 0x18 + mov r9, r1 + mov r7, r8 + mov r10, r0 + movs r2, 0x1 + negs r2, r2 + mov r8, r2 +_0811E9A6: + lsls r1, r6, 1 + mov r0, sp + adds r0, r1 + adds r0, 0xC + movs r2, 0 + ldrsh r0, [r0, r2] + movs r4, 0x3 + cmp r0, 0x63 + bgt _0811E9C0 + movs r4, 0x1 + cmp r0, 0x9 + ble _0811E9C0 + movs r4, 0x2 +_0811E9C0: + mov r0, sp + adds r0, r1 + adds r0, 0xC + movs r2, 0 + ldrsh r1, [r0, r2] + mov r0, r9 + movs r2, 0 + adds r3, r4, 0 + bl sub_8008E78 + movs r0, 0x4 + subs r0, r4 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 17 + lsrs r4, 16 + lsls r5, r6, 4 + subs r5, r6 + lsls r5, 24 + lsrs r5, 24 + mov r0, r10 + str r0, [sp] + mov r1, r8 + str r1, [sp, 0x4] + ldr r1, _0811EA40 @ =gUnknown_8459B48 + lsls r0, r6, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + movs r2, 0 + adds r3, r5, 0 + bl sub_812E51C + adds r4, 0x38 + lsls r4, 24 + lsrs r4, 24 + mov r2, r10 + str r2, [sp] + mov r0, r8 + str r0, [sp, 0x4] + mov r1, r9 + str r1, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_812E51C + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _0811E9A6 + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811EA40: .4byte gUnknown_8459B48 + thumb_func_end sub_811E93C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s new file mode 100644 index 000000000..037e29c03 --- /dev/null +++ b/asm/pokemon_storage_system.s @@ -0,0 +1,23034 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_808B9C0 +sub_808B9C0: @ 808B9C0 + push {lr} + ldr r1, _0808B9D0 @ =gUnknown_3005010 + ldr r1, [r1] + ldr r2, _0808B9D4 @ =0x000083d0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_0808B9D0: .4byte gUnknown_3005010 +_0808B9D4: .4byte 0x000083d0 + thumb_func_end sub_808B9C0 + + thumb_func_start sub_808B9D8 +sub_808B9D8: @ 808B9D8 + push {lr} + adds r1, r0, 0 + ldr r0, _0808B9EC @ =gUnknown_3005010 + ldr r0, [r0] + ldr r2, _0808B9F0 @ =0x000083d0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_0808B9EC: .4byte gUnknown_3005010 +_0808B9F0: .4byte 0x000083d0 + thumb_func_end sub_808B9D8 + + thumb_func_start sub_808B9F4 +sub_808B9F4: @ 808B9F4 + ldr r0, _0808B9FC @ =gUnknown_3005010 + ldr r0, [r0] + ldrb r0, [r0] + bx lr + .align 2, 0 +_0808B9FC: .4byte gUnknown_3005010 + thumb_func_end sub_808B9F4 + + thumb_func_start sub_808BA00 +sub_808BA00: @ 808BA00 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xD + bhi _0808BA10 + ldr r0, _0808BA14 @ =gUnknown_3005010 + ldr r0, [r0] + strb r1, [r0] +_0808BA10: + pop {r0} + bx r0 + .align 2, 0 +_0808BA14: .4byte gUnknown_3005010 + thumb_func_end sub_808BA00 + + thumb_func_start sub_808BA18 +sub_808BA18: @ 808BA18 + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BA54 + cmp r4, 0x1D + bhi _0808BA54 + ldr r2, _0808BA50 @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + adds r1, r5, 0 + bl sub_803FD44 + b _0808BA56 + .align 2, 0 +_0808BA50: .4byte gUnknown_3005010 +_0808BA54: + movs r0, 0 +_0808BA56: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808BA18 + + thumb_func_start sub_808BA5C +sub_808BA5C: @ 808BA5C + push {r4-r6,lr} + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BA94 + cmp r4, 0x1D + bhi _0808BA94 + ldr r2, _0808BA9C @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80404D0 +_0808BA94: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BA9C: .4byte gUnknown_3005010 + thumb_func_end sub_808BA5C + + thumb_func_start sub_808BAA0 +sub_808BAA0: @ 808BAA0 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _0808BABC @ =gUnknown_3005010 + ldr r0, [r0] + ldrb r0, [r0] + adds r1, r3, 0 + bl sub_808BA18 + pop {r1} + bx r1 + .align 2, 0 +_0808BABC: .4byte gUnknown_3005010 + thumb_func_end sub_808BAA0 + + thumb_func_start sub_808BAC0 +sub_808BAC0: @ 808BAC0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0808BAE0 @ =gUnknown_3005010 + ldr r0, [r0] + ldrb r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_808BA5C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BAE0: .4byte gUnknown_3005010 + thumb_func_end sub_808BAC0 + + thumb_func_start sub_808BAE4 +sub_808BAE4: @ 808BAE4 + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BB20 + cmp r4, 0x1D + bhi _0808BB20 + ldr r2, _0808BB1C @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_803FD44 + b _0808BB24 + .align 2, 0 +_0808BB1C: .4byte gUnknown_3005010 +_0808BB20: + movs r0, 0xFF + strb r0, [r5] +_0808BB24: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808BAE4 + + thumb_func_start sub_808BB2C +sub_808BB2C: @ 808BB2C + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BB62 + cmp r4, 0x1D + bhi _0808BB62 + ldr r2, _0808BB68 @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_80404D0 +_0808BB62: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BB68: .4byte gUnknown_3005010 + thumb_func_end sub_808BB2C + + thumb_func_start sub_808BB6C +sub_808BB6C: @ 808BB6C + push {r4-r6,lr} + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BBAC + cmp r4, 0x1D + bhi _0808BBAC + ldr r2, _0808BBA8 @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_803FD44 + b _0808BBAE + .align 2, 0 +_0808BBA8: .4byte gUnknown_3005010 +_0808BBAC: + movs r0, 0 +_0808BBAE: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808BB6C + + thumb_func_start sub_808BBB4 +sub_808BBB4: @ 808BBB4 + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r4, 0xD + bhi _0808BBEA + cmp r1, 0x1D + bhi _0808BBEA + ldr r0, _0808BBF0 @ =gUnknown_3005010 + ldr r0, [r0] + lsls r3, r1, 2 + adds r3, r1 + lsls r3, 4 + lsls r2, r4, 2 + adds r2, r4 + lsls r1, r2, 4 + subs r1, r2 + lsls r1, 5 + adds r3, r1 + adds r0, r3 + adds r0, 0x4 + adds r1, r5, 0 + movs r2, 0x50 + bl memcpy +_0808BBEA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BBF0: .4byte gUnknown_3005010 + thumb_func_end sub_808BBB4 + + thumb_func_start sub_808BBF4 +sub_808BBF4: @ 808BBF4 + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + cmp r4, 0xD + bhi _0808BC2A + cmp r2, 0x1D + bhi _0808BC2A + ldr r0, _0808BC30 @ =gUnknown_3005010 + ldr r1, [r0] + lsls r3, r2, 2 + adds r3, r2 + lsls r3, 4 + lsls r2, r4, 2 + adds r2, r4 + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 5 + adds r3, r0 + adds r1, r3 + adds r1, 0x4 + adds r0, r5, 0 + movs r2, 0x50 + bl memcpy +_0808BC2A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BC30: .4byte gUnknown_3005010 + thumb_func_end sub_808BBF4 + + thumb_func_start sub_808BC34 +sub_808BC34: @ 808BC34 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + ldr r4, [sp, 0x30] + ldr r5, [sp, 0x34] + ldr r6, [sp, 0x3C] + mov r12, r6 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r0, r12 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r7, 0xD + bhi _0808BCA0 + cmp r6, 0x1D + bhi _0808BCA0 + ldr r2, _0808BCB0 @ =gUnknown_3005010 + lsls r0, r7, 2 + adds r0, r7 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 4 + adds r0, r1 + str r5, [sp] + ldr r1, [sp, 0x38] + str r1, [sp, 0x4] + str r3, [sp, 0x8] + ldr r1, [sp, 0x40] + str r1, [sp, 0xC] + mov r1, r9 + mov r2, r8 + adds r3, r4, 0 + bl sub_803DAC4 +_0808BCA0: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808BCB0: .4byte gUnknown_3005010 + thumb_func_end sub_808BC34 + + thumb_func_start sub_808BCB4 +sub_808BCB4: @ 808BCB4 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BCE4 + cmp r4, 0x1D + bhi _0808BCE4 + ldr r2, _0808BCEC @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + bl sub_803D97C +_0808BCE4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808BCEC: .4byte gUnknown_3005010 + thumb_func_end sub_808BCB4 + + thumb_func_start sub_808BCF0 +sub_808BCF0: @ 808BCF0 + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BD24 + cmp r4, 0x1D + bhi _0808BD24 + ldr r2, _0808BD2C @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + adds r1, r5, 0 + bl sub_803E774 +_0808BD24: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BD2C: .4byte gUnknown_3005010 + thumb_func_end sub_808BCF0 + + thumb_func_start sub_808BD30 +sub_808BD30: @ 808BD30 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r3, 0xD + bhi _0808BD64 + cmp r4, 0x1D + bhi _0808BD64 + ldr r2, _0808BD60 @ =gUnknown_3005010 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + adds r1, 0x4 + ldr r0, [r2] + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 4 + adds r0, r1 + b _0808BD66 + .align 2, 0 +_0808BD60: .4byte gUnknown_3005010 +_0808BD64: + movs r0, 0 +_0808BD66: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808BD30 + + thumb_func_start sub_808BD6C +sub_808BD6C: @ 808BD6C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xD + bls _0808BD7A + movs r0, 0 + b _0808BD88 +_0808BD7A: + ldr r0, _0808BD8C @ =gUnknown_3005010 + lsls r1, r2, 3 + adds r1, r2 + ldr r2, _0808BD90 @ =0x00008344 + adds r1, r2 + ldr r0, [r0] + adds r0, r1 +_0808BD88: + pop {r1} + bx r1 + .align 2, 0 +_0808BD8C: .4byte gUnknown_3005010 +_0808BD90: .4byte 0x00008344 + thumb_func_end sub_808BD6C + + thumb_func_start sub_808BD94 +sub_808BD94: @ 808BD94 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xD + bls _0808BDA2 + movs r0, 0 + b _0808BDAE +_0808BDA2: + ldr r0, _0808BDB4 @ =gUnknown_3005010 + ldr r0, [r0] + ldr r2, _0808BDB8 @ =0x000083c2 + adds r0, r2 + adds r0, r1 + ldrb r0, [r0] +_0808BDAE: + pop {r1} + bx r1 + .align 2, 0 +_0808BDB4: .4byte gUnknown_3005010 +_0808BDB8: .4byte 0x000083c2 + thumb_func_end sub_808BD94 + + thumb_func_start sub_808BDBC +sub_808BDBC: @ 808BDBC + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r2, 0xD + bhi _0808BDDA + cmp r1, 0xF + bhi _0808BDDA + ldr r0, _0808BDE0 @ =gUnknown_3005010 + ldr r0, [r0] + ldr r3, _0808BDE4 @ =0x000083c2 + adds r0, r3 + adds r0, r2 + strb r1, [r0] +_0808BDDA: + pop {r0} + bx r0 + .align 2, 0 +_0808BDE0: .4byte gUnknown_3005010 +_0808BDE4: .4byte 0x000083c2 + thumb_func_end sub_808BDBC + + thumb_func_start sub_808BDE8 +sub_808BDE8: @ 808BDE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + lsls r1, 24 + lsrs r0, r1, 24 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r3, 24 + adds r4, r3, 0 + ldr r2, _0808BE4C @ =0x0000ffff + cmp r3, 0x1 + bhi _0808BE0A + movs r2, 0x1 + cmp r3, 0x1 + beq _0808BE0E +_0808BE0A: + cmp r4, 0x3 + bne _0808BE58 +_0808BE0E: + lsls r0, 24 + asrs r0, 24 + lsls r2, 16 + asrs r1, r2, 16 + adds r1, r0 + lsls r0, r1, 16 + asrs r1, r0, 16 + adds r6, r2, 0 + cmp r1, 0 + blt _0808BEA4 + cmp r1, r7 + bgt _0808BEA4 +_0808BE26: + asrs r4, r0, 16 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + add r0, r8 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + bne _0808BE50 + asrs r0, r6, 16 + adds r0, r4, r0 + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + blt _0808BEA4 + cmp r2, r7 + ble _0808BE26 + b _0808BEA4 + .align 2, 0 +_0808BE4C: .4byte 0x0000ffff +_0808BE50: + adds r0, r4, 0 + b _0808BEA8 +_0808BE54: + adds r0, r5, 0 + b _0808BEA8 +_0808BE58: + lsls r0, 24 + asrs r0, 24 + lsls r2, 16 + asrs r1, r2, 16 + adds r1, r0 + lsls r0, r1, 16 + asrs r1, r0, 16 + adds r6, r2, 0 + cmp r1, 0 + blt _0808BEA4 + cmp r1, r7 + bgt _0808BEA4 +_0808BE70: + asrs r5, r0, 16 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 4 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FD44 + cmp r0, 0 + beq _0808BE94 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FD44 + cmp r0, 0 + beq _0808BE54 +_0808BE94: + asrs r0, r6, 16 + adds r0, r5, r0 + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + blt _0808BEA4 + cmp r2, r7 + ble _0808BE70 +_0808BEA4: + movs r0, 0x1 + negs r0, r0 +_0808BEA8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808BDE8 + + thumb_func_start sub_808BEB4 +sub_808BEB4: @ 808BEB4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + str r0, [sp, 0x24] + adds r7, r1, 0 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x28] + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + movs r0, 0 + movs r1, 0 + str r0, [sp, 0x1C] + str r1, [sp, 0x20] + ldr r1, _0808BF30 @ =0x00ffffff + ldr r0, [sp, 0x1C] + ands r0, r1 + movs r1, 0xC0 + lsls r1, 21 + orrs r0, r1 + str r0, [sp, 0x1C] + ldr r1, _0808BF34 @ =0xffffff00 + add r5, sp, 0x1C + ldr r0, [r5, 0x4] + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + str r0, [r5, 0x4] + adds r0, r5, 0 + bl sub_8003CE4 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsls r4, r0, 24 + lsrs r4, 24 + mov r0, r9 + lsls r1, r0, 4 + orrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800445C + adds r0, r4, 0 + movs r1, 0x7 + bl sub_8004950 + adds r6, r0, 0 + ldrb r0, [r5, 0x3] + lsls r0, 5 + adds r0, r6 + mov r8, r0 + ldr r1, [sp, 0x28] + cmp r1, 0 + bne _0808BF38 + add r0, sp, 0x14 + b _0808BF3C + .align 2, 0 +_0808BF30: .4byte 0x00ffffff +_0808BF34: .4byte 0xffffff00 +_0808BF38: + add r0, sp, 0x14 + mov r1, r9 +_0808BF3C: + strb r1, [r0] + add r1, sp, 0x14 + movs r2, 0 + movs r0, 0xF + strb r0, [r1, 0x1] + movs r0, 0xE + strb r0, [r1, 0x2] + mov r0, r10 + lsls r4, r0, 24 + lsrs r0, r4, 24 + str r2, [sp] + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + ldr r1, [sp, 0x24] + str r1, [sp, 0x10] + movs r1, 0x1 + movs r3, 0x2 + bl sub_812E5A4 + ldr r0, [sp, 0x50] + mov r10, r4 + cmp r0, 0x6 + ble _0808BF72 + movs r0, 0x6 +_0808BF72: + ldr r4, [sp, 0x50] + subs r4, 0x6 + cmp r0, 0 + ble _0808BFA4 + adds r5, r0, 0 +_0808BF7C: + adds r0, r6, 0 + adds r1, r7, 0 + movs r2, 0x40 + bl CpuSet + adds r1, r7, 0 + adds r1, 0x80 + mov r0, r8 + movs r2, 0x40 + bl CpuSet + adds r6, 0x80 + movs r2, 0x80 + add r8, r2 + movs r0, 0x80 + lsls r0, 1 + adds r7, r0 + subs r5, 0x1 + cmp r5, 0 + bne _0808BF7C +_0808BFA4: + cmp r4, 0 + ble _0808BFC4 + add r0, sp, 0x18 + mov r2, r9 + lsls r1, r2, 4 + orrs r1, r2 + strh r1, [r0] + lsls r2, r4, 7 + ldr r1, _0808BFDC @ =0x001fffff + ands r2, r1 + movs r1, 0x80 + lsls r1, 17 + orrs r2, r1 + adds r1, r7, 0 + bl CpuSet +_0808BFC4: + mov r1, r10 + lsrs r0, r1, 24 + bl sub_8003E3C + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808BFDC: .4byte 0x001fffff + thumb_func_end sub_808BEB4 + + thumb_func_start sub_808BFE0 +sub_808BFE0: @ 808BFE0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + str r0, [sp, 0x20] + str r1, [sp, 0x24] + adds r6, r3, 0 + ldr r0, [sp, 0x4C] + mov r9, r0 + ldr r1, [sp, 0x50] + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x28] + lsls r6, 24 + lsrs r6, 24 + mov r2, r9 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r0, 0 + movs r1, 0 + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + ldr r0, [sp, 0x20] + bl sub_80092D4 + lsls r0, 24 + ldr r2, _0808C0CC @ =0x00ffffff + ldr r1, [sp, 0x18] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x18] + ldr r1, _0808C0D0 @ =0xffffff00 + add r2, sp, 0x18 + mov r8, r2 + ldr r0, [r2, 0x4] + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + str r0, [r2, 0x4] + ldr r5, [sp, 0x18] + lsrs r5, 24 + lsls r5, 5 + mov r0, r8 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, r6, 4 + orrs r1, r6 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800445C + adds r0, r4, 0 + movs r1, 0x7 + bl sub_8004950 + adds r7, r0, 0 + mov r0, r8 + ldrb r0, [r0, 0x3] + lsls r0, 5 + mov r8, r0 + add r8, r7 + add r0, sp, 0x14 + movs r1, 0 + strb r6, [r0] + mov r2, r9 + strb r2, [r0, 0x1] + mov r2, r10 + strb r2, [r0, 0x2] + str r1, [sp] + str r1, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + ldr r0, [sp, 0x20] + str r0, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + movs r3, 0x2 + bl sub_812E5A4 + lsrs r5, 1 + adds r0, r7, 0 + ldr r1, [sp, 0x24] + adds r2, r5, 0 + bl CpuSet + ldr r2, [sp, 0x24] + ldr r0, [sp, 0x28] + adds r1, r2, r0 + mov r0, r8 + adds r2, r5, 0 + bl CpuSet + adds r0, r4, 0 + bl sub_8003E3C + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808C0CC: .4byte 0x00ffffff +_0808C0D0: .4byte 0xffffff00 + thumb_func_end sub_808BFE0 + + thumb_func_start sub_808C0D4 +sub_808C0D4: @ 808C0D4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + movs r5, 0 +_0808C0DE: + lsls r1, r4, 24 + lsrs r1, 24 + adds r0, r6, 0 + movs r2, 0xB + bl sub_808BA18 + cmp r0, 0 + beq _0808C0F4 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_0808C0F4: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _0808C0DE + lsls r0, r5, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808C0D4 + + thumb_func_start sub_808C108 +sub_808C108: @ 808C108 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 +_0808C110: + lsls r1, r4, 24 + lsrs r1, 24 + adds r0, r5, 0 + movs r2, 0xB + bl sub_808BA18 + cmp r0, 0 + bne _0808C126 + lsls r0, r4, 16 + asrs r0, 16 + b _0808C134 +_0808C126: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _0808C110 + movs r0, 0x1 + negs r0, r0 +_0808C134: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808C108 + + thumb_func_start sub_808C13C +sub_808C13C: @ 808C13C + push {r4-r6,lr} + movs r5, 0 + movs r6, 0 +_0808C142: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0808C180 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0808C16A + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0808C16A + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 +_0808C16A: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x5 + bls _0808C142 + lsls r0, r6, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0808C180: .4byte gUnknown_2024284 + thumb_func_end sub_808C13C + + thumb_func_start sub_808C184 +sub_808C184: @ 808C184 + push {r4-r7,lr} + lsls r0, 24 + movs r5, 0 + movs r6, 0 + lsrs r7, r0, 24 +_0808C18E: + cmp r5, r7 + beq _0808C1C6 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0808C1DC @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0808C1C6 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0808C1C6 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _0808C1C6 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 +_0808C1C6: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x5 + bls _0808C18E + lsls r0, r6, 24 + lsrs r0, 24 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0808C1DC: .4byte gUnknown_2024284 + thumb_func_end sub_808C184 + + thumb_func_start sub_808C1E0 +sub_808C1E0: @ 808C1E0 + push {lr} + ldr r0, _0808C1F4 @ =gUnknown_20370C0 + ldrb r0, [r0] + bl sub_808C184 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0808C1F4: .4byte gUnknown_20370C0 + thumb_func_end sub_808C1E0 + + thumb_func_start sub_808C1F8 +sub_808C1F8: @ 808C1F8 + push {r4,r5,lr} + movs r4, 0 + movs r5, 0 +_0808C1FE: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0808C22C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0808C216 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_0808C216: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x5 + bls _0808C1FE + lsls r0, r5, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C22C: .4byte gUnknown_2024284 + thumb_func_end sub_808C1F8 + + thumb_func_start sub_808C230 +sub_808C230: @ 808C230 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r2, 16 + lsrs r4, 16 + bl sub_8008D84 + adds r1, r0, 0 + adds r5, r4 + cmp r1, r5 + bcs _0808C24E + movs r0, 0 +_0808C246: + strb r0, [r1] + adds r1, 0x1 + cmp r1, r5 + bcc _0808C246 +_0808C24E: + movs r0, 0xFF + strb r0, [r1] + adds r0, r1, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808C230 + + thumb_func_start sub_808C25C +sub_808C25C: @ 808C25C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + adds r7, r3, 0 + ldr r5, [sp, 0x1C] + ldr r4, [sp, 0x20] + ldr r0, [sp, 0x24] + mov r9, r0 + ldr r0, [sp, 0x28] + ldr r3, [sp, 0x2C] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r3, 16 + lsrs r3, 16 + mov r0, r9 + lsls r0, 17 + mov r9, r0 + lsrs r2, 11 + adds r2, r1 + lsls r2, 1 + adds r6, r2 + adds r0, r4, 0 + muls r0, r3 + adds r0, r5 + lsls r0, 1 + adds r7, r0 + movs r4, 0 + cmp r4, r8 + bcs _0808C2CC + mov r0, r9 + lsrs r0, 1 + mov r9, r0 + lsls r5, r3, 1 +_0808C2B2: + adds r0, r7, 0 + adds r1, r6, 0 + mov r3, r9 + lsrs r2, r3, 16 + bl CpuSet + adds r6, 0x40 + adds r7, r5 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r8 + bcc _0808C2B2 +_0808C2CC: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808C25C + + thumb_func_start sub_808C2D8 +sub_808C2D8: @ 808C2D8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r4, r0, 0 + ldr r0, [sp, 0x28] + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsrs r2, 11 + adds r2, r1 + lsls r2, 1 + adds r4, r2 + lsls r3, 17 + lsrs r0, r3, 16 + str r0, [sp, 0x4] + movs r0, 0 + cmp r0, r10 + bcs _0808C382 + movs r6, 0x80 + lsls r6, 5 + mov r5, sp + ldr r7, _0808C344 @ =0x040000d4 + lsrs r3, 17 + mov r9, r3 + mov r1, r9 + movs r2, 0x81 + lsls r2, 24 + orrs r1, r2 + mov r9, r1 +_0808C31E: + adds r3, r4, 0 + ldr r2, [sp, 0x4] + movs r1, 0x40 + adds r1, r4 + mov r8, r1 + adds r0, 0x1 + mov r12, r0 + cmp r2, r6 + bhi _0808C348 + movs r0, 0 + strh r0, [r5] + mov r2, sp + str r2, [r7] + str r4, [r7, 0x4] + mov r0, r9 + str r0, [r7, 0x8] + ldr r0, [r7, 0x8] + b _0808C376 + .align 2, 0 +_0808C344: .4byte 0x040000d4 +_0808C348: + movs r4, 0 + strh r4, [r5] + ldr r1, _0808C394 @ =0x040000d4 + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + ldr r0, _0808C398 @ =0x81000800 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r6 + subs r2, r6 + cmp r2, r6 + bhi _0808C348 + strh r4, [r5] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + lsrs r0, r2, 1 + movs r2, 0x81 + lsls r2, 24 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_0808C376: + mov r4, r8 + mov r1, r12 + lsls r0, r1, 16 + lsrs r0, 16 + cmp r0, r10 + bcc _0808C31E +_0808C382: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808C394: .4byte 0x040000d4 +_0808C398: .4byte 0x81000800 + thumb_func_end sub_808C2D8 + + thumb_func_start sub_808C39C +sub_808C39C: @ 808C39C + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0808C3C4 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _0808C3B8 + b _0808C69C +_0808C3B8: + lsls r0, 2 + ldr r1, _0808C3C8 @ =_0808C3CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808C3C4: .4byte gUnknown_3005090 +_0808C3C8: .4byte _0808C3CC + .align 2, 0 +_0808C3CC: + .4byte _0808C3E0 + .4byte _0808C448 + .4byte _0808C45C + .4byte _0808C5A6 + .4byte _0808C680 +_0808C3E0: + movs r0, 0x1C + bl sub_812B1F0 + ldrb r0, [r5, 0xA] + adds r1, r5, 0 + adds r1, 0x26 + bl sub_808C72C + bl sub_80F6E9C + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r1, _0808C444 @ =gUnknown_83CDA20 + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r2, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0xFF + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldrh r0, [r5, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8003F20 + b _0808C454 + .align 2, 0 +_0808C444: .4byte gUnknown_83CDA20 +_0808C448: + bl sub_807AA70 + lsls r0, 24 + cmp r0, 0 + bne _0808C454 + b _0808C69C +_0808C454: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _0808C69C +_0808C45C: + bl sub_810F998 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0xC] + movs r3, 0xC + ldrsh r1, [r5, r3] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0808C50C + cmp r1, r0 + bgt _0808C47E + subs r0, 0x1 + cmp r1, r0 + beq _0808C484 + b _0808C530 +_0808C47E: + cmp r1, 0x4 + beq _0808C50C + b _0808C530 +_0808C484: + ldrh r3, [r5, 0xA] + strh r3, [r5, 0xE] + ldr r2, _0808C504 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0808C4A2 + subs r0, r3, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + cmp r0, 0 + bge _0808C4A2 + movs r0, 0x4 + strh r0, [r5, 0xE] +_0808C4A2: + ldrh r1, [r2, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0808C4BE + ldrh r0, [r5, 0xE] + adds r0, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _0808C4BE + movs r0, 0 + strh r0, [r5, 0xE] +_0808C4BE: + lsls r0, r3, 16 + asrs r0, 16 + ldrh r2, [r5, 0xE] + movs r3, 0xE + ldrsh r1, [r5, r3] + cmp r0, r1 + bne _0808C4CE + b _0808C69C +_0808C4CE: + movs r4, 0 + strh r2, [r5, 0xA] + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r1, _0808C508 @ =gUnknown_83CDA20 + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r2, [r0] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + b _0808C69C + .align 2, 0 +_0808C504: .4byte gUnknown_30030F0 +_0808C508: .4byte gUnknown_83CDA20 +_0808C50C: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F9C + ldrh r0, [r5, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_80F6F9C + bl sub_806994C + bl sub_8069B34 + adds r0, r4, 0 + bl sub_8077508 + b _0808C69C +_0808C530: + movs r3, 0xC + ldrsh r4, [r5, r3] + cmp r4, 0 + bne _0808C564 + bl sub_808C1F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bne _0808C564 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _0808C560 @ =gUnknown_84186B0 + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r4, 0x3 + str r4, [sp, 0xC] + b _0808C66E + .align 2, 0 +_0808C560: .4byte gUnknown_84186B0 +_0808C564: + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _0808C598 + bl sub_808C1F8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _0808C598 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _0808C594 @ =gUnknown_8418690 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r4, 0x3 + str r4, [sp, 0xC] + b _0808C66E + .align 2, 0 +_0808C594: .4byte gUnknown_8418690 +_0808C598: + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + movs r0, 0x4 + strh r0, [r5, 0x8] + b _0808C69C +_0808C5A6: + ldr r0, _0808C5D0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r7, 0x3 + adds r4, r7, 0 + ands r4, r1 + cmp r4, 0 + beq _0808C5D8 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r1, _0808C5D4 @ =gUnknown_83CDA20 + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r2, [r0] + movs r0, 0 + str r0, [sp] + b _0808C664 + .align 2, 0 +_0808C5D0: .4byte gUnknown_30030F0 +_0808C5D4: .4byte gUnknown_83CDA20 +_0808C5D8: + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0 + beq _0808C624 + ldrh r0, [r5, 0xA] + subs r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + cmp r0, 0 + bge _0808C5F4 + movs r0, 0x4 + strh r0, [r5, 0xA] +_0808C5F4: + movs r0, 0x1 + negs r0, r0 + bl sub_810F904 + bl sub_810F98C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xA] + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r1, _0808C620 @ =gUnknown_83CDA20 + movs r3, 0xA + ldrsh r0, [r5, r3] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r2, [r0] + str r4, [sp] + b _0808C664 + .align 2, 0 +_0808C620: .4byte gUnknown_83CDA20 +_0808C624: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0808C69C + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _0808C63C + strh r6, [r5, 0xA] +_0808C63C: + movs r0, 0x1 + bl sub_810F904 + bl sub_810F98C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xA] + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r1, _0808C67C @ =gUnknown_83CDA20 + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r2, [r0] + str r6, [sp] +_0808C664: + movs r4, 0x2 + str r4, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + str r7, [sp, 0xC] +_0808C66E: + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + strh r4, [r5, 0x8] + b _0808C69C + .align 2, 0 +_0808C67C: .4byte gUnknown_83CDA20 +_0808C680: + ldr r0, _0808C6A4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0808C69C + bl sub_80563F0 + ldrb r0, [r5, 0xC] + bl sub_808CDE4 + adds r0, r4, 0 + bl sub_8077508 +_0808C69C: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808C6A4: .4byte gUnknown_2037AB8 + thumb_func_end sub_808C39C + + thumb_func_start sub_808C6A8 +sub_808C6A8: @ 808C6A8 + push {lr} + ldr r0, _0808C6D0 @ =sub_808C39C + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0808C6D4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + strh r0, [r1, 0xA] + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_0808C6D0: .4byte sub_808C39C +_0808C6D4: .4byte gUnknown_3005090 + thumb_func_end sub_808C6A8 + + thumb_func_start sub_808C6D8 +sub_808C6D8: @ 808C6D8 + push {r4,r5,lr} + ldr r0, _0808C71C @ =gUnknown_30030F0 + ldr r5, [r0, 0xC] + movs r0, 0 + bl sub_80006F4 + ldr r4, _0808C720 @ =sub_808C39C + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0808C724 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + strh r2, [r1, 0x8] + ldr r2, _0808C728 @ =gUnknown_20397A8 + ldrb r2, [r2] + strh r2, [r1, 0xA] + bl _call_via_r4 + adds r0, r5, 0 + bl sub_80006F4 + bl sub_807DC00 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808C71C: .4byte gUnknown_30030F0 +_0808C720: .4byte sub_808C39C +_0808C724: .4byte gUnknown_3005090 +_0808C728: .4byte gUnknown_20397A8 + thumb_func_end sub_808C6D8 + + thumb_func_start sub_808C72C +sub_808C72C: @ 808C72C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0xC + adds r6, r0, 0 + mov r10, r1 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _0808C7AC @ =gUnknown_83CDA48 + bl sub_8003CE4 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r4, r5, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_80F6F1C + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x10 + mov r9, r0 + str r0, [sp] + movs r0, 0x5 + mov r8, r0 + str r0, [sp, 0x4] + ldr r0, _0808C7B0 @ =gUnknown_83CDA20 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x2 + movs r3, 0x2 + bl sub_810FB6C + mov r0, r9 + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + mov r0, r10 + strh r5, [r0] + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808C7AC: .4byte gUnknown_83CDA48 +_0808C7B0: .4byte gUnknown_83CDA20 + thumb_func_end sub_808C72C + + thumb_func_start sub_808C7B4 +sub_808C7B4: @ 808C7B4 + push {lr} + bl sub_808FDF0 + ldr r1, _0808C7D0 @ =gUnknown_20397A8 + strb r0, [r1] + ldr r1, _0808C7D4 @ =gUnknown_3005020 + ldr r0, _0808C7D8 @ =sub_808C6D8 + str r0, [r1] + ldr r0, _0808C7DC @ =sub_80567DC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0808C7D0: .4byte gUnknown_20397A8 +_0808C7D4: .4byte gUnknown_3005020 +_0808C7D8: .4byte sub_808C6D8 +_0808C7DC: .4byte sub_80567DC + thumb_func_end sub_808C7B4 + + thumb_func_start sub_808C7E0 +sub_808C7E0: @ 808C7E0 + push {r4-r6,lr} + movs r0, 0 + bl sub_808BA00 + movs r5, 0 +_0808C7EA: + movs r4, 0 + lsls r6, r5, 24 +_0808C7EE: + lsls r1, r4, 24 + lsrs r1, 24 + lsrs r0, r6, 24 + bl sub_808BCB4 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _0808C7EE + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xD + bls _0808C7EA + movs r5, 0 +_0808C80E: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_808BD6C + ldr r1, _0808C850 @ =gUnknown_84186CD + bl sub_8008D84 + adds r4, r5, 0x1 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + lsls r4, 16 + lsrs r5, r4, 16 + cmp r5, 0xD + bls _0808C80E + movs r5, 0 +_0808C832: + lsls r0, r5, 24 + lsrs r0, 24 + movs r1, 0x3 + ands r1, r5 + bl sub_808BDBC + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xD + bls _0808C832 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808C850: .4byte gUnknown_84186CD + thumb_func_end sub_808C7E0 + + thumb_func_start sub_808C854 +sub_808C854: @ 808C854 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x20 + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r6, r1, 0 + lsls r2, 16 + lsrs r2, 16 + adds r7, r2, 0 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + ldr r0, _0808C8E8 @ =gUnknown_83CDA98 + str r0, [sp, 0x18] + ldr r1, _0808C8EC @ =0xffff0000 + add r4, sp, 0x18 + ldr r0, [r4, 0x4] + ands r0, r1 + orrs r0, r7 + str r0, [r4, 0x4] + mov r1, sp + ldr r0, _0808C8F0 @ =gUnknown_83CDAB8 + str r0, [sp] + movs r0, 0x80 + lsls r0, 4 + strh r0, [r1, 0x4] + strh r6, [r1, 0x6] + ldr r0, _0808C8F4 @ =gUnknown_83CE2B8 + str r0, [sp, 0x8] + movs r0, 0xC0 + lsls r0, 1 + strh r0, [r1, 0xC] + adds r0, r6, 0x1 + strh r0, [r1, 0xE] + add r0, sp, 0x10 + movs r1, 0 + movs r2, 0x8 + bl memset + ldr r0, [sp, 0x38] + cmp r0, 0 + beq _0808C8B2 + adds r0, r4, 0 + bl sub_8008928 +_0808C8B2: + mov r0, sp + bl sub_8008720 + ldr r0, _0808C8F8 @ =gUnknown_20397AC + str r5, [r0] + movs r1, 0x90 + lsls r1, 2 + adds r0, r5, r1 + strh r6, [r0] + adds r1, 0x2 + adds r0, r5, r1 + strh r7, [r0] + adds r1, 0x4 + adds r0, r5, r1 + mov r1, r8 + strb r1, [r0] + movs r1, 0x8F + lsls r1, 2 + adds r0, r5, r1 + ldr r1, [sp, 0x38] + str r1, [r0] + add sp, 0x20 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808C8E8: .4byte gUnknown_83CDA98 +_0808C8EC: .4byte 0xffff0000 +_0808C8F0: .4byte gUnknown_83CDAB8 +_0808C8F4: .4byte gUnknown_83CE2B8 +_0808C8F8: .4byte gUnknown_20397AC + thumb_func_end sub_808C854 + + thumb_func_start sub_808C8FC +sub_808C8FC: @ 808C8FC + push {r4,r5,lr} + ldr r5, _0808C93C @ =gUnknown_20397AC + ldr r1, [r5] + movs r2, 0x8F + lsls r2, 2 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + beq _0808C918 + adds r2, 0x6 + adds r0, r1, r2 + ldrh r0, [r0] + bl sub_8008A30 +_0808C918: + ldr r0, [r5] + movs r4, 0x90 + lsls r4, 2 + adds r0, r4 + ldrh r0, [r0] + bl sub_800874C + ldr r0, [r5] + adds r0, r4 + ldrh r0, [r0] + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + bl sub_800874C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808C93C: .4byte gUnknown_20397AC + thumb_func_end sub_808C8FC + + thumb_func_start sub_808C940 +sub_808C940: @ 808C940 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_808C9C4 + pop {r0} + bx r0 + thumb_func_end sub_808C940 + + thumb_func_start sub_808C950 +sub_808C950: @ 808C950 + push {lr} + bl sub_808CBA4 + pop {r0} + bx r0 + thumb_func_end sub_808C950 + + thumb_func_start sub_808C95C +sub_808C95C: @ 808C95C + push {lr} + ldr r0, _0808C974 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0808C978 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0xC9 + b _0808C9C0 + .align 2, 0 +_0808C974: .4byte gUnknown_30030F0 +_0808C978: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0808C998 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808C994 @ =gUnknown_20397AC + ldr r0, [r0] + movs r1, 0x91 + lsls r1, 2 + adds r0, r1 + ldrb r0, [r0] + b _0808C9C0 + .align 2, 0 +_0808C994: .4byte gUnknown_20397AC +_0808C998: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0808C9AC + movs r0, 0x5 + bl sub_80722CC + bl sub_808CC44 + b _0808C9BE +_0808C9AC: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0808C9BE + movs r0, 0x5 + bl sub_80722CC + bl sub_808CC10 +_0808C9BE: + movs r0, 0xC8 +_0808C9C0: + pop {r1} + bx r1 + thumb_func_end sub_808C95C + + thumb_func_start sub_808C9C4 +sub_808C9C4: @ 808C9C4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x3C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0 + movs r1, 0 + str r0, [sp, 0x34] + str r1, [sp, 0x38] + movs r1, 0xC0 + lsls r1, 24 + ldr r0, [sp, 0x34] + orrs r0, r1 + str r0, [sp, 0x34] + ldr r1, _0808CB78 @ =0xffff0fff + add r4, sp, 0x34 + ldr r0, [r4, 0x4] + ands r0, r1 + movs r1, 0x80 + lsls r1, 5 + orrs r0, r1 + str r0, [r4, 0x4] + add r0, sp, 0x1C + mov r8, r0 + movs r1, 0 + strh r1, [r0] + mov r0, sp + adds r0, 0x1E + strh r1, [r0] + str r4, [sp, 0x20] + ldr r0, _0808CB7C @ =gUnknown_8231CF0 + str r0, [sp, 0x24] + str r1, [sp, 0x28] + ldr r0, _0808CB80 @ =gUnknown_8231CFC + str r0, [sp, 0x2C] + ldr r0, _0808CB84 @ =nullsub_8 + str r0, [sp, 0x30] + add r0, sp, 0x4 + mov r1, r8 + movs r2, 0x18 + bl memcpy + ldr r1, _0808CB88 @ =gUnknown_83CDA94 + mov r0, r8 + movs r2, 0x4 + bl memcpy + ldr r6, _0808CB8C @ =gUnknown_20397AC + ldr r0, [r6] + movs r1, 0x91 + lsls r1, 2 + adds r0, r1 + strb r5, [r0] + add r2, sp, 0x4 + ldr r1, [r6] + movs r5, 0x90 + lsls r5, 2 + adds r0, r1, r5 + ldrh r0, [r0] + strh r0, [r2] + ldr r3, _0808CB90 @ =0x00000242 + adds r1, r3 + ldrh r0, [r1] + strh r0, [r2, 0x2] + adds r0, r2, 0 + movs r1, 0xA0 + movs r2, 0x60 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + ldr r3, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0808CB94 @ =gUnknown_202063C + adds r0, r1 + str r0, [r3] + ldrb r2, [r4, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + movs r2, 0x80 + orrs r0, r2 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + ands r1, r0 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4, 0x3] + add r1, sp, 0x4 + adds r3, r5 + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r1] + ldr r0, _0808CB98 @ =gUnknown_83CDA70 + str r0, [sp, 0xC] + movs r4, 0 + mov r7, r8 +_0808CA90: + ldr r0, [r6] + ldr r1, _0808CB9C @ =0x00000246 + adds r0, r1 + ldrb r3, [r0] + add r0, sp, 0x4 + movs r1, 0x7C + movs r2, 0x50 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + ldr r2, [r6] + lsls r3, r4, 2 + adds r2, 0x4 + adds r2, r3 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0808CB94 @ =gUnknown_202063C + adds r1, r0, r1 + str r1, [r2] + movs r5, 0 + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _0808CACA + movs r0, 0xC4 + strh r0, [r1, 0x20] + movs r5, 0x2 +_0808CACA: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0808CAEE + ldr r1, [r6] + adds r1, 0x4 + adds r1, r3 + ldr r2, [r1] + movs r0, 0x70 + strh r0, [r2, 0x22] + ldr r2, [r1] + ldrb r1, [r2, 0x3] + movs r0, 0x3F + ands r0, r1 + strb r0, [r2, 0x3] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_0808CAEE: + ldr r0, [r6] + adds r0, 0x4 + adds r0, r3 + ldr r0, [r0] + lsls r1, r5, 24 + lsrs r1, 24 + bl sub_800838C + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _0808CA90 + movs r4, 0 + ldr r5, _0808CB8C @ =gUnknown_20397AC +_0808CB0C: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 19 + movs r3, 0xF8 + lsls r3, 15 + adds r0, r3 + lsrs r0, 16 + lsls r2, r4, 24 + lsrs r2, 24 + ldr r1, [r5] + ldr r3, _0808CB9C @ =0x00000246 + adds r1, r3 + ldrb r1, [r1] + str r1, [sp] + movs r1, 0x58 + movs r3, 0 + bl sub_809223C + adds r2, r0, 0 + ldr r0, [r5] + lsls r1, r4, 2 + adds r0, 0x20 + adds r0, r1 + str r2, [r0] + cmp r2, 0 + beq _0808CB54 + movs r1, 0x1 + cmp r4, 0 + bne _0808CB4C + movs r3, 0x1 + negs r3, r3 + adds r1, r3, 0 +_0808CB4C: + strh r1, [r2, 0x2E] + ldr r1, [r0] + ldr r0, _0808CBA0 @ =sub_808CD64 + str r0, [r1, 0x1C] +_0808CB54: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _0808CB0C + bl sub_808CC74 + adds r0, r7, 0 + movs r1, 0x5 + movs r2, 0x3 + bl sub_808CCFC + add sp, 0x3C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808CB78: .4byte 0xffff0fff +_0808CB7C: .4byte gUnknown_8231CF0 +_0808CB80: .4byte gUnknown_8231CFC +_0808CB84: .4byte nullsub_8 +_0808CB88: .4byte gUnknown_83CDA94 +_0808CB8C: .4byte gUnknown_20397AC +_0808CB90: .4byte 0x00000242 +_0808CB94: .4byte gUnknown_202063C +_0808CB98: .4byte gUnknown_83CDA70 +_0808CB9C: .4byte 0x00000246 +_0808CBA0: .4byte sub_808CD64 + thumb_func_end sub_808C9C4 + + thumb_func_start sub_808CBA4 +sub_808CBA4: @ 808CBA4 + push {r4-r6,lr} + ldr r4, _0808CC0C @ =gUnknown_20397AC + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0 + beq _0808CBBA + bl sub_8007280 + ldr r1, [r4] + movs r0, 0 + str r0, [r1] +_0808CBBA: + movs r5, 0 + adds r6, r4, 0 +_0808CBBE: + ldr r0, [r6] + lsls r4, r5, 2 + adds r0, 0x4 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _0808CBDA + bl sub_8007280 + ldr r0, [r6] + adds r0, 0x4 + adds r0, r4 + movs r1, 0 + str r1, [r0] +_0808CBDA: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _0808CBBE + movs r5, 0 +_0808CBE6: + ldr r0, _0808CC0C @ =gUnknown_20397AC + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, 0x20 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0808CBFA + bl sub_8007280 +_0808CBFA: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x1 + bls _0808CBE6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808CC0C: .4byte gUnknown_20397AC + thumb_func_end sub_808CBA4 + + thumb_func_start sub_808CC10 +sub_808CC10: @ 808CC10 + push {lr} + ldr r2, _0808CC40 @ =gUnknown_20397AC + ldr r1, [r2] + movs r0, 0x91 + lsls r0, 2 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD + bls _0808CC36 + ldr r0, [r2] + movs r1, 0x91 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0808CC36: + bl sub_808CC74 + pop {r0} + bx r0 + .align 2, 0 +_0808CC40: .4byte gUnknown_20397AC + thumb_func_end sub_808CC10 + + thumb_func_start sub_808CC44 +sub_808CC44: @ 808CC44 + push {lr} + ldr r0, _0808CC5C @ =gUnknown_20397AC + ldr r2, [r0] + movs r1, 0x91 + lsls r1, 2 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808CC60 + subs r1, r0, 0x1 + b _0808CC62 + .align 2, 0 +_0808CC5C: .4byte gUnknown_20397AC +_0808CC60: + movs r1, 0xD +_0808CC62: + movs r3, 0x91 + lsls r3, 2 + adds r0, r2, r3 + strb r1, [r0] + bl sub_808CC74 + pop {r0} + bx r0 + thumb_func_end sub_808CC44 + + thumb_func_start sub_808CC74 +sub_808CC74: @ 808CC74 + push {r4-r7,lr} + ldr r6, _0808CCF8 @ =gUnknown_20397AC + ldr r0, [r6] + movs r5, 0x91 + lsls r5, 2 + adds r0, r5 + ldrb r0, [r0] + bl sub_808C0D4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r6] + movs r1, 0x8A + lsls r1, 2 + adds r4, r0, r1 + adds r0, r5 + ldrb r0, [r0] + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + adds r1, r0, 0 + ldr r0, [r6] + movs r2, 0x8C + lsls r2, 2 + adds r0, r2 + cmp r1, r0 + bcs _0808CCC0 + movs r4, 0 + adds r3, r6, 0 +_0808CCB4: + strb r4, [r1] + adds r1, 0x1 + ldr r0, [r3] + adds r0, r2 + cmp r1, r0 + bcc _0808CCB4 +_0808CCC0: + movs r0, 0xFF + strb r0, [r1] + ldr r5, _0808CCF8 @ =gUnknown_20397AC + ldr r0, [r5] + movs r4, 0x8A + lsls r4, 2 + adds r0, r4 + movs r1, 0 + movs r2, 0x1 + bl sub_808CCFC + ldr r0, [r5] + adds r0, r4 + adds r1, r7, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, [r5] + adds r0, r4 + movs r1, 0x3 + movs r2, 0x3 + bl sub_808CCFC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808CCF8: .4byte gUnknown_20397AC + thumb_func_end sub_808CC74 + + thumb_func_start sub_808CCFC +sub_808CCFC: @ 808CCFC + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + mov r8, r0 + adds r5, r1, 0 + adds r4, r2, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 16 + lsrs r4, 16 + ldr r6, _0808CD5C @ =gUnknown_20397AC + ldr r0, [r6] + movs r1, 0x90 + lsls r1, 2 + adds r0, r1 + ldrh r0, [r0] + bl sub_8008804 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 11 + lsls r4, 8 + ldr r0, _0808CD60 @ =0x06010000 + adds r4, r0 + adds r1, r4 + lsls r5, 5 + adds r1, r5 + movs r2, 0x80 + lsls r2, 1 + movs r0, 0xF + str r0, [sp] + movs r0, 0xE + str r0, [sp, 0x4] + ldr r0, [r6] + adds r0, 0x28 + str r0, [sp, 0x8] + mov r0, r8 + movs r3, 0x4 + bl sub_808BFE0 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808CD5C: .4byte gUnknown_20397AC +_0808CD60: .4byte 0x06010000 + thumb_func_end sub_808CCFC + + thumb_func_start sub_808CD64 +sub_808CD64: @ 808CD64 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + movs r2, 0 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _0808CD94 + strh r2, [r1, 0x30] + ldrh r0, [r1, 0x2E] + ldrh r3, [r1, 0x24] + adds r0, r3 + strh r0, [r1, 0x24] + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _0808CD94 + strh r2, [r1, 0x32] + strh r2, [r1, 0x24] +_0808CD94: + pop {r0} + bx r0 + thumb_func_end sub_808CD64 + + thumb_func_start sub_808CD98 +sub_808CD98: @ 808CD98 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8096BF8 + bl sub_8070474 + ldr r0, _0808CDC0 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xB3 + lsls r1, 2 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x18 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0808CDC0: .4byte gUnknown_20397B0 + thumb_func_end sub_808CD98 + + thumb_func_start sub_808CDC4 +sub_808CDC4: @ 808CDC4 + push {lr} + bl sub_8077578 + bl sub_80F67B8 + bl sub_808EFC8 + bl sub_808F99C + bl sub_8006B5C + bl sub_8006BA8 + pop {r0} + bx r0 + thumb_func_end sub_808CDC4 + + thumb_func_start sub_808CDE4 +sub_808CDE4: @ 808CDE4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_80773BC + ldr r0, _0808CE08 @ =gUnknown_20397B5 + strb r5, [r0] + ldr r4, _0808CE0C @ =gUnknown_20397B0 + ldr r0, _0808CE10 @ =0x000062bc + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + bne _0808CE18 + ldr r0, _0808CE14 @ =sub_808C7B4 + bl sub_8000544 + b _0808CE4A + .align 2, 0 +_0808CE08: .4byte gUnknown_20397B5 +_0808CE0C: .4byte gUnknown_20397B0 +_0808CE10: .4byte 0x000062bc +_0808CE14: .4byte sub_808C7B4 +_0808CE18: + movs r2, 0 + strb r5, [r0, 0x1] + ldr r0, [r4] + strb r2, [r0, 0x3] + ldr r0, _0808CE50 @ =gUnknown_20397BA + movs r1, 0 + strh r2, [r0] + ldr r0, [r4] + strb r1, [r0] + ldr r0, _0808CE54 @ =sub_808D020 + movs r1, 0x3 + bl sub_807741C + ldr r1, [r4] + strb r0, [r1, 0x4] + movs r0, 0x1C + bl sub_812B1F0 + bl sub_808B9F4 + ldr r1, _0808CE58 @ =gUnknown_20397B8 + strb r0, [r1] + ldr r0, _0808CE5C @ =sub_808CDC4 + bl sub_8000544 +_0808CE4A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808CE50: .4byte gUnknown_20397BA +_0808CE54: .4byte sub_808D020 +_0808CE58: .4byte gUnknown_20397B8 +_0808CE5C: .4byte sub_808CDC4 + thumb_func_end sub_808CDE4 + + thumb_func_start sub_808CE60 +sub_808CE60: @ 808CE60 + push {r4,lr} + bl sub_80773BC + ldr r4, _0808CE80 @ =gUnknown_20397B0 + ldr r0, _0808CE84 @ =0x000062bc + bl sub_8002B9C + adds r1, r0, 0 + str r1, [r4] + cmp r1, 0 + bne _0808CE8C + ldr r0, _0808CE88 @ =sub_808C7B4 + bl sub_8000544 + b _0808CEB6 + .align 2, 0 +_0808CE80: .4byte gUnknown_20397B0 +_0808CE84: .4byte 0x000062bc +_0808CE88: .4byte sub_808C7B4 +_0808CE8C: + ldr r0, _0808CEBC @ =gUnknown_20397B5 + ldrb r0, [r0] + movs r2, 0 + strb r0, [r1, 0x1] + ldr r1, [r4] + movs r0, 0x1 + strb r0, [r1, 0x3] + ldr r0, [r4] + strb r2, [r0] + ldr r0, _0808CEC0 @ =sub_808D020 + movs r1, 0x3 + bl sub_807741C + ldr r1, [r4] + strb r0, [r1, 0x4] + movs r0, 0x1C + bl sub_812B1F0 + ldr r0, _0808CEC4 @ =sub_808CDC4 + bl sub_8000544 +_0808CEB6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808CEBC: .4byte gUnknown_20397B5 +_0808CEC0: .4byte sub_808D020 +_0808CEC4: .4byte sub_808CDC4 + thumb_func_end sub_808CE60 + + thumb_func_start sub_808CEC8 +sub_808CEC8: @ 808CEC8 + push {lr} + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_808CEC8 + + thumb_func_start sub_808CF10 +sub_808CF10: @ 808CF10 + push {r4,lr} + sub sp, 0x4 + bl sub_8070528 + bl sub_8006B10 + bl sub_80087C4 + bl sub_80088F0 + bl sub_8000BFC + ldr r1, _0808CF80 @ =gUnknown_2021B46 + movs r2, 0xA0 + lsls r2, 2 + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _0808CF84 @ =gUnknown_20397B0 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x8 + adds r1, 0x10 + movs r2, 0x8 + bl sub_8096BE4 + ldr r1, _0808CF88 @ =gUnknown_30030E0 + movs r0, 0x14 + strh r0, [r1] + bl sub_80F6790 + movs r0, 0x3 + bl sub_80F7AD8 + ldr r2, _0808CF8C @ =gUnknown_83CE6F8 + movs r0, 0x4 + str r0, [sp] + movs r0, 0 + movs r1, 0x1 + movs r3, 0x8 + bl sub_80F7B80 + movs r0, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_80F7CAC + ldr r0, [r4] + ldr r1, _0808CF90 @ =0x000002c7 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808CF80: .4byte gUnknown_2021B46 +_0808CF84: .4byte gUnknown_20397B0 +_0808CF88: .4byte gUnknown_30030E0 +_0808CF8C: .4byte gUnknown_83CE6F8 +_0808CF90: .4byte 0x000002c7 + thumb_func_end sub_808CF10 + + thumb_func_start sub_808CF94 +sub_808CF94: @ 808CF94 + push {lr} + bl sub_8092B50 + ldr r2, _0808CFB8 @ =gUnknown_20397B4 + movs r1, 0 + ldr r0, _0808CFBC @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _0808CFAA + movs r1, 0x1 +_0808CFAA: + strb r1, [r2] + ldr r1, _0808CFC0 @ =gUnknown_20397B6 + movs r0, 0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0808CFB8: .4byte gUnknown_20397B4 +_0808CFBC: .4byte gUnknown_20397B0 +_0808CFC0: .4byte gUnknown_20397B6 + thumb_func_end sub_808CF94 + + thumb_func_start sub_808CFC4 +sub_808CFC4: @ 808CFC4 + push {lr} + ldr r0, _0808CFF0 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _0808CFE2 + movs r1, 0xFC + lsls r1, 6 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _0808CFF4 @ =0x00000b07 + movs r0, 0x52 + bl sub_8000A38 +_0808CFE2: + movs r1, 0xFA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0808CFF0: .4byte gUnknown_20397B0 +_0808CFF4: .4byte 0x00000b07 + thumb_func_end sub_808CFC4 + + thumb_func_start sub_808CFF8 +sub_808CFF8: @ 808CFF8 + push {r4,lr} + ldr r4, _0808D018 @ =gUnknown_3005090 + ldr r1, _0808D01C @ =gUnknown_20397B0 + ldr r3, [r1] + ldrb r2, [r3, 0x4] + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r4 + str r0, [r1] + movs r0, 0 + strb r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D018: .4byte gUnknown_3005090 +_0808D01C: .4byte gUnknown_20397B0 + thumb_func_end sub_808CFF8 + + thumb_func_start sub_808D020 +sub_808D020: @ 808D020 + push {lr} + sub sp, 0x4 + ldr r0, _0808D03C @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xA + bls _0808D030 + b _0808D216 +_0808D030: + lsls r0, 2 + ldr r1, _0808D040 @ =_0808D044 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808D03C: .4byte gUnknown_20397B0 +_0808D040: .4byte _0808D044 + .align 2, 0 +_0808D044: + .4byte _0808D070 + .4byte _0808D0C8 + .4byte _0808D0D6 + .4byte _0808D104 + .4byte _0808D120 + .4byte _0808D13E + .4byte _0808D15E + .4byte _0808D164 + .4byte _0808D16A + .4byte _0808D178 + .4byte _0808D1BE +_0808D070: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_808CF10 + ldr r0, _0808D0A0 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _0808D0BE + ldr r0, _0808D0A4 @ =gUnknown_20397B7 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808D0AE + cmp r0, 0x1 + bgt _0808D0A8 + cmp r0, 0 + beq _0808D0B4 + b _0808D0BE + .align 2, 0 +_0808D0A0: .4byte gUnknown_20397B0 +_0808D0A4: .4byte gUnknown_20397B7 +_0808D0A8: + cmp r0, 0x2 + beq _0808D0BA + b _0808D0BE +_0808D0AE: + bl sub_8093660 + b _0808D0BE +_0808D0B4: + bl sub_80937B4 + b _0808D0BE +_0808D0BA: + bl sub_808EF0C +_0808D0BE: + bl sub_808EFE4 + bl sub_808F068 + b _0808D20C +_0808D0C8: + bl sub_808F044 + lsls r0, 24 + cmp r0, 0 + beq _0808D0D4 + b _0808D20C +_0808D0D4: + b _0808D148 +_0808D0D6: + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_80040B8 + movs r0, 0 + str r0, [sp] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _0808D100 @ =0x05000080 + mov r0, sp + bl CpuSet + movs r0, 0x1 + movs r1, 0xB + movs r2, 0xE0 + bl sub_815001C + b _0808D20C + .align 2, 0 +_0808D100: .4byte 0x05000080 +_0808D104: + bl sub_808CEC8 + ldr r0, _0808D11C @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _0808D114 + b _0808D20C +_0808D114: + bl sub_808CF94 + b _0808D20C + .align 2, 0 +_0808D11C: .4byte gUnknown_20397B0 +_0808D120: + bl sub_808FFAC + ldr r0, _0808D134 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0 + bne _0808D138 + bl sub_80922C0 + b _0808D20C + .align 2, 0 +_0808D134: .4byte gUnknown_20397B0 +_0808D138: + bl sub_8092340 + b _0808D20C +_0808D13E: + bl sub_8095050 + lsls r0, 24 + cmp r0, 0 + bne _0808D154 +_0808D148: + ldr r0, _0808D150 @ =sub_808EE18 + bl sub_808CFF8 + b _0808D216 + .align 2, 0 +_0808D150: .4byte sub_808EE18 +_0808D154: + bl sub_808EF8C + bl sub_808FB68 + b _0808D20C +_0808D15E: + bl sub_808F078 + b _0808D20C +_0808D164: + bl sub_808F68C + b _0808D20C +_0808D16A: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80913DC + b _0808D20C +_0808D178: + bl sub_809140C + lsls r0, 24 + cmp r0, 0 + bne _0808D216 + ldr r0, _0808D1A8 @ =gUnknown_20397B0 + ldr r2, [r0] + ldrb r0, [r2, 0x1] + cmp r0, 0x3 + beq _0808D1B4 + movs r1, 0xDA + lsls r1, 4 + adds r0, r2, r1 + movs r1, 0xD + strh r1, [r0] + ldr r1, _0808D1AC @ =0x00000da2 + adds r2, r1 + ldr r1, _0808D1B0 @ =0x0000dace + strh r1, [r2] + bl sub_80BE46C + bl sub_80BE5F0 + b _0808D20C + .align 2, 0 +_0808D1A8: .4byte gUnknown_20397B0 +_0808D1AC: .4byte 0x00000da2 +_0808D1B0: .4byte 0x0000dace +_0808D1B4: + bl sub_8095B5C + bl sub_808FDFC + b _0808D20C +_0808D1BE: + bl sub_808CFC4 + ldr r0, _0808D1E0 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0 + bne _0808D1E8 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _0808D1E4 @ =sub_808D220 + bl sub_808CFF8 + b _0808D1FA + .align 2, 0 +_0808D1E0: .4byte gUnknown_20397B0 +_0808D1E4: .4byte sub_808D220 +_0808D1E8: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _0808D204 @ =sub_808D26C + bl sub_808CFF8 +_0808D1FA: + ldr r0, _0808D208 @ =sub_808CD98 + bl sub_80006F4 + b _0808D216 + .align 2, 0 +_0808D204: .4byte sub_808D26C +_0808D208: .4byte sub_808CD98 +_0808D20C: + ldr r0, _0808D21C @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0808D216: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0808D21C: .4byte gUnknown_20397B0 + thumb_func_end sub_808D020 + + thumb_func_start sub_808D220 +sub_808D220: @ 808D220 + push {r4,lr} + ldr r4, _0808D234 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808D238 + cmp r0, 0x1 + beq _0808D252 + b _0808D262 + .align 2, 0 +_0808D234: .4byte gUnknown_20397B0 +_0808D238: + movs r0, 0x2 + bl sub_80722CC + movs r0, 0x14 + movs r1, 0 + movs r2, 0x1 + bl sub_80A0A48 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808D262 +_0808D252: + bl sub_80A0A98 + lsls r0, 24 + cmp r0, 0 + bne _0808D262 + ldr r0, _0808D268 @ =sub_808D2BC + bl sub_808CFF8 +_0808D262: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D268: .4byte sub_808D2BC + thumb_func_end sub_808D220 + + thumb_func_start sub_808D26C +sub_808D26C: @ 808D26C + push {r4,lr} + sub sp, 0x4 + ldr r4, _0808D280 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808D284 + cmp r0, 0x1 + beq _0808D29E + b _0808D2AE + .align 2, 0 +_0808D280: .4byte gUnknown_20397B0 +_0808D284: + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808D2AE +_0808D29E: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0808D2AE + ldr r0, _0808D2B8 @ =sub_808D2BC + bl sub_808CFF8 +_0808D2AE: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D2B8: .4byte sub_808D2BC + thumb_func_end sub_808D26C + + thumb_func_start sub_808D2BC +sub_808D2BC: @ 808D2BC + push {r4,r5,lr} + ldr r0, _0808D2D4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xB + bls _0808D2CA + b _0808D7B2 +_0808D2CA: + lsls r0, 2 + ldr r1, _0808D2D8 @ =_0808D2DC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808D2D4: .4byte gUnknown_20397B0 +_0808D2D8: .4byte _0808D2DC + .align 2, 0 +_0808D2DC: + .4byte _0808D30C + .4byte _0808D630 + .4byte _0808D670 + .4byte _0808D6C8 + .4byte _0808D6EC + .4byte _0808D6F6 + .4byte _0808D710 + .4byte _0808D730 + .4byte _0808D736 + .4byte _0808D74C + .4byte _0808D778 + .4byte _0808D7A0 +_0808D30C: + bl sub_80948B4 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x19 + bls _0808D31C + b _0808D7B2 +_0808D31C: + lsls r0, 2 + ldr r1, _0808D328 @ =_0808D32C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808D328: .4byte _0808D32C + .align 2, 0 +_0808D32C: + .4byte _0808D394 + .4byte _0808D7B2 + .4byte _0808D7B2 + .4byte _0808D424 + .4byte _0808D3A8 + .4byte _0808D3DC + .4byte _0808D43C + .4byte _0808D450 + .4byte _0808D45C + .4byte _0808D494 + .4byte _0808D4D8 + .4byte _0808D55C + .4byte _0808D51C + .4byte _0808D52E + .4byte _0808D570 + .4byte _0808D584 + .4byte _0808D598 + .4byte _0808D5AC + .4byte _0808D430 + .4byte _0808D5C0 + .4byte _0808D5E0 + .4byte _0808D5CA + .4byte _0808D5EA + .4byte _0808D628 + .4byte _0808D5EE + .4byte _0808D608 +_0808D394: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D3A4 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D3A4: .4byte gUnknown_20397B0 +_0808D3A8: + ldr r4, _0808D3C8 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0808D3CC + movs r0, 0x10 + bl sub_808FBA4 + ldr r1, [r4] + movs r0, 0x3 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D3C8: .4byte gUnknown_20397B0 +_0808D3CC: + bl sub_8092B50 + ldr r0, _0808D3D8 @ =sub_808D7BC + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D3D8: .4byte sub_808D7BC +_0808D3DC: + ldr r4, _0808D408 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0x2 + bne _0808D410 + bl sub_80939A0 + lsls r0, 24 + cmp r0, 0 + beq _0808D416 + ldr r0, [r4] + ldr r1, _0808D40C @ =0x00000ce2 + adds r0, r1 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _0808D404 + b _0808D4F6 +_0808D404: + b _0808D416 + .align 2, 0 +_0808D408: .4byte gUnknown_20397B0 +_0808D40C: .4byte 0x00000ce2 +_0808D410: + cmp r0, 0x3 + beq _0808D416 + b _0808D7B2 +_0808D416: + ldr r0, _0808D420 @ =sub_808D7FC + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D420: .4byte sub_808D7FC +_0808D424: + ldr r0, _0808D42C @ =sub_808EBB0 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D42C: .4byte sub_808EBB0 +_0808D430: + ldr r0, _0808D438 @ =sub_808ECE4 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D438: .4byte sub_808ECE4 +_0808D43C: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D44C @ =sub_808E744 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D44C: .4byte sub_808E744 +_0808D450: + ldr r0, _0808D458 @ =sub_808D878 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D458: .4byte sub_808D878 +_0808D45C: + movs r0, 0x5 + bl sub_80722CC + bl sub_808B9F4 + ldr r4, _0808D48C @ =gUnknown_20397B0 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + ldr r2, _0808D490 @ =0x000002ca + adds r1, r2 + strh r0, [r1] + cmp r0, 0xD + ble _0808D47E + movs r0, 0 + strh r0, [r1] +_0808D47E: + ldr r1, [r4] + ldrb r0, [r1, 0x1] + cmp r0, 0x3 + beq _0808D4CC + adds r0, r1, r2 + b _0808D78A + .align 2, 0 +_0808D48C: .4byte gUnknown_20397B0 +_0808D490: .4byte 0x000002ca +_0808D494: + movs r0, 0x5 + bl sub_80722CC + bl sub_808B9F4 + ldr r4, _0808D4C4 @ =gUnknown_20397B0 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + ldr r2, _0808D4C8 @ =0x000002ca + adds r1, r2 + strh r0, [r1] + cmp r0, 0 + bge _0808D4B6 + movs r0, 0xD + strh r0, [r1] +_0808D4B6: + ldr r1, [r4] + ldrb r0, [r1, 0x1] + cmp r0, 0x3 + beq _0808D4CC + adds r0, r1, r2 + b _0808D78A + .align 2, 0 +_0808D4C4: .4byte gUnknown_20397B0 +_0808D4C8: .4byte 0x000002ca +_0808D4CC: + bl sub_8094D60 + ldr r1, [r4] + movs r0, 0xA + strb r0, [r1] + b _0808D7B2 +_0808D4D8: + bl sub_8093900 + lsls r0, 24 + cmp r0, 0 + bne _0808D538 + ldr r4, _0808D500 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _0808D504 @ =0x00000ce2 + adds r0, r1 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _0808D508 +_0808D4F6: + ldr r1, [r4] + movs r0, 0x5 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D500: .4byte gUnknown_20397B0 +_0808D504: .4byte 0x00000ce2 +_0808D508: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D518 @ =sub_808DD88 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D518: .4byte sub_808DD88 +_0808D51C: + bl sub_8093900 + lsls r0, 24 + cmp r0, 0 + bne _0808D538 + movs r0, 0x5 + bl sub_80722CC + b _0808D740 +_0808D52E: + bl sub_809393C + lsls r0, 24 + cmp r0, 0 + bne _0808D548 +_0808D538: + ldr r0, _0808D544 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x4 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D544: .4byte gUnknown_20397B0 +_0808D548: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D558 @ =sub_808DC50 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D558: .4byte sub_808DC50 +_0808D55C: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D56C @ =sub_808DC9C + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D56C: .4byte sub_808DC9C +_0808D570: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D580 @ =sub_808DBF0 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D580: .4byte sub_808DBF0 +_0808D584: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D594 @ =sub_808E140 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D594: .4byte sub_808E140 +_0808D598: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D5A8 @ =sub_808E1F4 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D5A8: .4byte sub_808E1F4 +_0808D5AC: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808D5BC @ =sub_808E3C8 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D5BC: .4byte sub_808E3C8 +_0808D5C0: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + b _0808D616 +_0808D5CA: + movs r0, 0x1 + bl sub_80950BC + ldr r0, _0808D5DC @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x8 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D5DC: .4byte gUnknown_20397B0 +_0808D5E0: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x2 + b _0808D5F6 +_0808D5EA: + movs r0, 0x3 + b _0808D616 +_0808D5EE: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x4 +_0808D5F6: + bl sub_80950BC + ldr r0, _0808D604 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x9 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D604: .4byte gUnknown_20397B0 +_0808D608: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x3 + bl sub_808FE54 + movs r0, 0x5 +_0808D616: + bl sub_80950BC + ldr r0, _0808D624 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x7 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D624: .4byte gUnknown_20397B0 +_0808D628: + movs r0, 0x1A + bl sub_80722CC + b _0808D7B2 +_0808D630: + bl sub_80924A8 + lsls r0, 24 + cmp r0, 0 + beq _0808D63C + b _0808D7B2 +_0808D63C: + bl sub_80939C8 + lsls r0, 24 + cmp r0, 0 + beq _0808D64C + bl sub_808F948 + b _0808D650 +_0808D64C: + bl sub_808F974 +_0808D650: + ldr r4, _0808D668 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _0808D66C @ =0x00000ce6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808D662 + bl sub_808F200 +_0808D662: + ldr r1, [r4] + b _0808D6DC + .align 2, 0 +_0808D668: .4byte gUnknown_20397B0 +_0808D66C: .4byte 0x00000ce6 +_0808D670: + bl sub_80915FC + lsls r0, 24 + cmp r0, 0 + beq _0808D67C + b _0808D7B2 +_0808D67C: + ldr r0, _0808D6BC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0808D6C0 @ =0x000002ca + adds r0, r1 + ldrb r0, [r0] + bl sub_808BA00 + ldr r0, _0808D6C4 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + bne _0808D6A4 + bl sub_80939A0 + lsls r0, 24 + cmp r0, 0 + bne _0808D6A4 + bl sub_8092F54 + bl sub_808F200 +_0808D6A4: + ldr r4, _0808D6BC @ =gUnknown_20397B0 + ldr r1, [r4] + ldrb r0, [r1, 0x1] + cmp r0, 0x3 + bne _0808D6DC + bl sub_8094D84 + ldr r1, [r4] + movs r0, 0xB + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D6BC: .4byte gUnknown_20397B0 +_0808D6C0: .4byte 0x000002ca +_0808D6C4: .4byte gUnknown_20397B4 +_0808D6C8: + ldr r0, _0808D6E4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808D7B2 + bl sub_808FD20 + ldr r0, _0808D6E8 @ =gUnknown_20397B0 + ldr r1, [r0] +_0808D6DC: + movs r0, 0 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D6E4: .4byte gUnknown_30030F0 +_0808D6E8: .4byte gUnknown_20397B0 +_0808D6EC: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0xD + b _0808D6FE +_0808D6F6: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0x16 +_0808D6FE: + bl sub_808FBA4 + ldr r0, _0808D70C @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x6 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D70C: .4byte gUnknown_20397B0 +_0808D710: + ldr r0, _0808D728 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808D7B2 + bl sub_808FD20 + ldr r0, _0808D72C @ =sub_808D2BC + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D728: .4byte gUnknown_30030F0 +_0808D72C: .4byte sub_808D2BC +_0808D730: + bl sub_80950D0 + b _0808D7A4 +_0808D736: + bl sub_80950D0 + lsls r0, 24 + cmp r0, 0 + bne _0808D7B2 +_0808D740: + ldr r0, _0808D748 @ =sub_808DB94 + bl sub_808CFF8 + b _0808D7B2 + .align 2, 0 +_0808D748: .4byte sub_808DB94 +_0808D74C: + bl sub_80950D0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0808D7B2 + ldr r5, _0808D770 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r1, _0808D774 @ =0x00000ce6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808D76A + bl sub_808F200 +_0808D76A: + ldr r0, [r5] + strb r4, [r0] + b _0808D7B2 + .align 2, 0 +_0808D770: .4byte gUnknown_20397B0 +_0808D774: .4byte 0x00000ce6 +_0808D778: + bl sub_809610C + lsls r0, 24 + cmp r0, 0 + bne _0808D7B2 + ldr r4, _0808D798 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _0808D79C @ =0x000002ca + adds r0, r1 +_0808D78A: + ldrb r0, [r0] + bl sub_8091514 + ldr r1, [r4] + movs r0, 0x2 + strb r0, [r1] + b _0808D7B2 + .align 2, 0 +_0808D798: .4byte gUnknown_20397B0 +_0808D79C: .4byte 0x000002ca +_0808D7A0: + bl sub_809610C +_0808D7A4: + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0808D7B2 + ldr r0, _0808D7B8 @ =gUnknown_20397B0 + ldr r0, [r0] + strb r1, [r0] +_0808D7B2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808D7B8: .4byte gUnknown_20397B0 + thumb_func_end sub_808D2BC + + thumb_func_start sub_808D7BC +sub_808D7BC: @ 808D7BC + push {r4,lr} + ldr r4, _0808D7D0 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808D7D4 + cmp r0, 0x1 + beq _0808D7E2 + b _0808D7F2 + .align 2, 0 +_0808D7D0: .4byte gUnknown_20397B0 +_0808D7D4: + bl sub_808FAD4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808D7F2 +_0808D7E2: + bl sub_808FAF8 + lsls r0, 24 + cmp r0, 0 + bne _0808D7F2 + ldr r0, _0808D7F8 @ =sub_808D2BC + bl sub_808CFF8 +_0808D7F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D7F8: .4byte sub_808D2BC + thumb_func_end sub_808D7BC + + thumb_func_start sub_808D7FC +sub_808D7FC: @ 808D7FC + push {r4,lr} + ldr r4, _0808D814 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808D82A + cmp r0, 0x1 + bgt _0808D818 + cmp r0, 0 + beq _0808D81E + b _0808D86A + .align 2, 0 +_0808D814: .4byte gUnknown_20397B0 +_0808D818: + cmp r0, 0x2 + beq _0808D84A + b _0808D86A +_0808D81E: + movs r0, 0x5 + bl sub_80722CC + bl sub_808F810 + b _0808D840 +_0808D82A: + bl sub_808F850 + lsls r0, 24 + cmp r0, 0 + bne _0808D86A + bl sub_8092B70 + lsls r0, 24 + lsrs r0, 24 + bl sub_8092B3C +_0808D840: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808D86A +_0808D84A: + bl sub_80924A8 + lsls r0, 24 + cmp r0, 0 + bne _0808D86A + ldr r0, [r4] + ldr r1, _0808D870 @ =0x00000ce6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808D864 + bl sub_808F200 +_0808D864: + ldr r0, _0808D874 @ =sub_808D2BC + bl sub_808CFF8 +_0808D86A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D870: .4byte 0x00000ce6 +_0808D874: .4byte sub_808D2BC + thumb_func_end sub_808D7FC + + thumb_func_start sub_808D878 +sub_808D878: @ 808D878 + push {r4,lr} + ldr r0, _0808D890 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x6 + bls _0808D886 + b _0808DB86 +_0808D886: + lsls r0, 2 + ldr r1, _0808D894 @ =_0808D898 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808D890: .4byte gUnknown_20397B0 +_0808D894: .4byte _0808D898 + .align 2, 0 +_0808D898: + .4byte _0808D8B4 + .4byte _0808D918 + .4byte _0808D934 + .4byte _0808DB40 + .4byte _0808DB54 + .4byte _0808DB4A + .4byte _0808DB70 +_0808D8B4: + bl sub_808F258 + lsls r0, 24 + cmp r0, 0 + beq _0808D8C0 + b _0808DB86 +_0808D8C0: + movs r0, 0x5 + bl sub_80722CC + ldr r4, _0808D8D8 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + beq _0808D8DC + movs r0, 0x4 + bl sub_808FBA4 + b _0808D906 + .align 2, 0 +_0808D8D8: .4byte gUnknown_20397B0 +_0808D8DC: + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + bne _0808D8F2 + ldr r0, [r4] + ldr r1, _0808D8FC @ =0x00000ce2 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _0808D900 +_0808D8F2: + movs r0, 0x17 + bl sub_808FBA4 + b _0808D906 + .align 2, 0 +_0808D8FC: .4byte 0x00000ce2 +_0808D900: + movs r0, 0x18 + bl sub_808FBA4 +_0808D906: + bl sub_8094E88 + ldr r0, _0808D914 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1] + b _0808DB86 + .align 2, 0 +_0808D914: .4byte gUnknown_20397B0 +_0808D918: + bl sub_8094F90 + lsls r0, 24 + cmp r0, 0 + beq _0808D924 + b _0808DB86 +_0808D924: + ldr r0, _0808D930 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1] + b _0808DB86 + .align 2, 0 +_0808D930: .4byte gUnknown_20397B0 +_0808D934: + bl sub_8094F94 + adds r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x12 + bls _0808D944 + b _0808DB86 +_0808D944: + lsls r0, 2 + ldr r1, _0808D950 @ =_0808D954 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808D950: .4byte _0808D954 + .align 2, 0 +_0808D954: + .4byte _0808D9A0 + .4byte _0808D9A0 + .4byte _0808DA20 + .4byte _0808DA08 + .4byte _0808D9B0 + .4byte _0808D9E8 + .4byte _0808D9D0 + .4byte _0808DAC0 + .4byte _0808DA5C + .4byte _0808DAD4 + .4byte _0808DB86 + .4byte _0808DB86 + .4byte _0808DB86 + .4byte _0808DAE8 + .4byte _0808DAFC + .4byte _0808DB28 + .4byte _0808DB1C + .4byte _0808DB10 + .4byte _0808DB34 +_0808D9A0: + bl sub_808FD20 + ldr r0, _0808D9AC @ =sub_808D2BC + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808D9AC: .4byte sub_808D2BC +_0808D9B0: + bl sub_8093900 + lsls r0, 24 + cmp r0, 0 + bne _0808DA66 + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808D9CC @ =sub_808DB94 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808D9CC: .4byte sub_808DB94 +_0808D9D0: + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808D9E4 @ =sub_808DBF0 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808D9E4: .4byte sub_808DBF0 +_0808D9E8: + bl sub_809393C + lsls r0, 24 + cmp r0, 0 + beq _0808DA66 + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808DA04 @ =sub_808DC50 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DA04: .4byte sub_808DC50 +_0808DA08: + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808DA1C @ =sub_808DC9C + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DA1C: .4byte sub_808DC9C +_0808DA20: + bl sub_8093900 + lsls r0, 24 + cmp r0, 0 + bne _0808DA66 + ldr r4, _0808DA50 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r2, _0808DA54 @ =0x00000ce2 + adds r0, r2 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + bne _0808DAA0 + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808DA58 @ =sub_808DD88 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DA50: .4byte gUnknown_20397B0 +_0808DA54: .4byte 0x00000ce2 +_0808DA58: .4byte sub_808DD88 +_0808DA5C: + bl sub_8093900 + lsls r0, 24 + cmp r0, 0 + beq _0808DA74 +_0808DA66: + ldr r0, _0808DA70 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x3 + strb r0, [r1] + b _0808DB86 + .align 2, 0 +_0808DA70: .4byte gUnknown_20397B0 +_0808DA74: + ldr r4, _0808DA88 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r2, _0808DA8C @ =0x00000ce9 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0808DA90 + movs r0, 0x5 + strb r0, [r1] + b _0808DB86 + .align 2, 0 +_0808DA88: .4byte gUnknown_20397B0 +_0808DA8C: .4byte 0x00000ce9 +_0808DA90: + ldr r2, _0808DAA8 @ =0x00000ce2 + adds r0, r1, r2 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _0808DAAC +_0808DAA0: + ldr r1, [r4] + movs r0, 0x4 + strb r0, [r1] + b _0808DB86 + .align 2, 0 +_0808DAA8: .4byte 0x00000ce2 +_0808DAAC: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808DABC @ =sub_808DECC + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DABC: .4byte sub_808DECC +_0808DAC0: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808DAD0 @ =sub_808EAF0 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DAD0: .4byte sub_808EAF0 +_0808DAD4: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808DAE4 @ =sub_808E0BC + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DAE4: .4byte sub_808E0BC +_0808DAE8: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808DAF8 @ =sub_808E140 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DAF8: .4byte sub_808E140 +_0808DAFC: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808DB0C @ =sub_808E1F4 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DB0C: .4byte sub_808E1F4 +_0808DB10: + ldr r0, _0808DB18 @ =sub_808E2B0 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DB18: .4byte sub_808E2B0 +_0808DB1C: + ldr r0, _0808DB24 @ =sub_808E3C8 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DB24: .4byte sub_808E3C8 +_0808DB28: + ldr r0, _0808DB30 @ =sub_808EB50 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DB30: .4byte sub_808EB50 +_0808DB34: + ldr r0, _0808DB3C @ =sub_808E4B0 + bl sub_808CFF8 + b _0808DB86 + .align 2, 0 +_0808DB3C: .4byte sub_808E4B0 +_0808DB40: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0xD + b _0808DB5C +_0808DB4A: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0x11 + b _0808DB5C +_0808DB54: + movs r0, 0x1A + bl sub_80722CC + movs r0, 0x16 +_0808DB5C: + bl sub_808FBA4 + ldr r0, _0808DB6C @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x6 + strb r0, [r1] + b _0808DB86 + .align 2, 0 +_0808DB6C: .4byte gUnknown_20397B0 +_0808DB70: + ldr r0, _0808DB8C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808DB86 + bl sub_808FD20 + ldr r0, _0808DB90 @ =sub_808D2BC + bl sub_808CFF8 +_0808DB86: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DB8C: .4byte gUnknown_30030F0 +_0808DB90: .4byte sub_808D2BC + thumb_func_end sub_808D878 + + thumb_func_start sub_808DB94 +sub_808DB94: @ 808DB94 + push {r4,lr} + ldr r4, _0808DBA8 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808DBAC + cmp r0, 0x1 + beq _0808DBBC + b _0808DBE6 + .align 2, 0 +_0808DBA8: .4byte gUnknown_20397B0 +_0808DBAC: + movs r0, 0 + bl sub_8092B7C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808DBE6 +_0808DBBC: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0808DBE6 + ldr r0, _0808DBD8 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808DBE0 + ldr r0, _0808DBDC @ =sub_808E688 + bl sub_808CFF8 + b _0808DBE6 + .align 2, 0 +_0808DBD8: .4byte gUnknown_20397B4 +_0808DBDC: .4byte sub_808E688 +_0808DBE0: + ldr r0, _0808DBEC @ =sub_808D2BC + bl sub_808CFF8 +_0808DBE6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DBEC: .4byte sub_808D2BC + thumb_func_end sub_808DB94 + + thumb_func_start sub_808DBF0 +sub_808DBF0: @ 808DBF0 + push {r4,lr} + ldr r4, _0808DC04 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808DC08 + cmp r0, 0x1 + beq _0808DC1E + b _0808DC46 + .align 2, 0 +_0808DC04: .4byte gUnknown_20397B0 +_0808DC08: + movs r0, 0x1 + bl sub_808FE54 + movs r0, 0x1 + bl sub_8092B7C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808DC46 +_0808DC1E: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0808DC46 + ldr r0, _0808DC38 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808DC40 + ldr r0, _0808DC3C @ =sub_808E688 + bl sub_808CFF8 + b _0808DC46 + .align 2, 0 +_0808DC38: .4byte gUnknown_20397B4 +_0808DC3C: .4byte sub_808E688 +_0808DC40: + ldr r0, _0808DC4C @ =sub_808D2BC + bl sub_808CFF8 +_0808DC46: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DC4C: .4byte sub_808D2BC + thumb_func_end sub_808DBF0 + + thumb_func_start sub_808DC50 +sub_808DC50: @ 808DC50 + push {r4,lr} + ldr r4, _0808DC64 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808DC68 + cmp r0, 0x1 + beq _0808DC7E + b _0808DC92 + .align 2, 0 +_0808DC64: .4byte gUnknown_20397B0 +_0808DC68: + movs r0, 0 + bl sub_808FE54 + movs r0, 0x2 + bl sub_8092B7C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808DC92 +_0808DC7E: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0808DC92 + bl sub_808F200 + ldr r0, _0808DC98 @ =sub_808D2BC + bl sub_808CFF8 +_0808DC92: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DC98: .4byte sub_808D2BC + thumb_func_end sub_808DC50 + + thumb_func_start sub_808DC9C +sub_808DC9C: @ 808DC9C + push {lr} + ldr r0, _0808DCB4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x5 + bhi _0808DD7E + lsls r0, 2 + ldr r1, _0808DCB8 @ =_0808DCBC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808DCB4: .4byte gUnknown_20397B0 +_0808DCB8: .4byte _0808DCBC + .align 2, 0 +_0808DCBC: + .4byte _0808DCD4 + .4byte _0808DD0C + .4byte _0808DD2C + .4byte _0808DD42 + .4byte _0808DD5A + .4byte _0808DD78 +_0808DCD4: + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bne _0808DCF4 + movs r0, 0xE + bl sub_808FBA4 + ldr r0, _0808DCF0 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1] + b _0808DD7E + .align 2, 0 +_0808DCF0: .4byte gUnknown_20397B0 +_0808DCF4: + bl sub_8092B5C + movs r0, 0 + bl sub_8092B7C + ldr r0, _0808DD08 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1] + b _0808DD7E + .align 2, 0 +_0808DD08: .4byte gUnknown_20397B0 +_0808DD0C: + ldr r0, _0808DD24 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808DD7E + bl sub_808FD20 + ldr r0, _0808DD28 @ =sub_808D2BC + bl sub_808CFF8 + b _0808DD7E + .align 2, 0 +_0808DD24: .4byte gUnknown_30030F0 +_0808DD28: .4byte sub_808D2BC +_0808DD2C: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0808DD7E + movs r0, 0x1 + bl sub_8091184 + bl sub_808FAD4 + b _0808DD68 +_0808DD42: + bl sub_808FAF8 + lsls r0, 24 + cmp r0, 0 + bne _0808DD7E + movs r0, 0x1 + bl sub_808FE54 + movs r0, 0x1 + bl sub_8092B7C + b _0808DD68 +_0808DD5A: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0808DD7E + bl sub_808FAA8 +_0808DD68: + ldr r0, _0808DD74 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808DD7E + .align 2, 0 +_0808DD74: .4byte gUnknown_20397B0 +_0808DD78: + ldr r0, _0808DD84 @ =sub_808D7FC + bl sub_808CFF8 +_0808DD7E: + pop {r0} + bx r0 + .align 2, 0 +_0808DD84: .4byte sub_808D7FC + thumb_func_end sub_808DC9C + + thumb_func_start sub_808DD88 +sub_808DD88: @ 808DD88 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0808DDA4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x4 + bls _0808DD98 + b _0808DEBA +_0808DD98: + lsls r0, 2 + ldr r1, _0808DDA8 @ =_0808DDAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808DDA4: .4byte gUnknown_20397B0 +_0808DDA8: .4byte _0808DDAC + .align 2, 0 +_0808DDAC: + .4byte _0808DDC0 + .4byte _0808DDFC + .4byte _0808DE64 + .4byte _0808DE7C + .4byte _0808DEA0 +_0808DDC0: + movs r0, 0x6 + bl sub_808FBA4 + ldr r4, _0808DDEC @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _0808DDF0 @ =0x00001e58 + adds r0, r1 + ldr r2, _0808DDF4 @ =0x0000dac7 + movs r1, 0 + str r1, [sp] + movs r1, 0xA + movs r3, 0x3 + bl sub_808C854 + ldr r0, _0808DDF8 @ =gUnknown_20397B6 + ldrb r0, [r0] + bl sub_808C940 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + b _0808DEB8 + .align 2, 0 +_0808DDEC: .4byte gUnknown_20397B0 +_0808DDF0: .4byte 0x00001e58 +_0808DDF4: .4byte 0x0000dac7 +_0808DDF8: .4byte gUnknown_20397B6 +_0808DDFC: + bl sub_808C95C + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + cmp r0, 0xC8 + beq _0808DEBA + cmp r0, 0xC9 + bne _0808DE1C + bl sub_808FD20 + bl sub_808C950 + bl sub_808C8FC + b _0808DE92 +_0808DE1C: + adds r0, r4, 0 + bl sub_80930E4 + lsls r0, 24 + cmp r0, 0 + beq _0808DE50 + ldr r0, _0808DE48 @ =gUnknown_20397B6 + strb r4, [r0] + movs r0, 0x2 + bl sub_808FE54 + bl sub_808FD20 + bl sub_808C950 + bl sub_808C8FC + ldr r0, _0808DE4C @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x2 + b _0808DEB8 + .align 2, 0 +_0808DE48: .4byte gUnknown_20397B6 +_0808DE4C: .4byte gUnknown_20397B0 +_0808DE50: + movs r0, 0x8 + bl sub_808FBA4 + ldr r0, _0808DE60 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x4 + b _0808DEB8 + .align 2, 0 +_0808DE60: .4byte gUnknown_20397B0 +_0808DE64: + bl sub_80937DC + bl sub_80909F4 + ldr r0, _0808DE78 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + b _0808DEB8 + .align 2, 0 +_0808DE78: .4byte gUnknown_20397B0 +_0808DE7C: + bl sub_8090A60 + lsls r0, 24 + cmp r0, 0 + bne _0808DEBA + bl sub_8093174 + bl sub_808F200 + bl sub_808FAA8 +_0808DE92: + ldr r0, _0808DE9C @ =sub_808D2BC + bl sub_808CFF8 + b _0808DEBA + .align 2, 0 +_0808DE9C: .4byte sub_808D2BC +_0808DEA0: + ldr r0, _0808DEC4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808DEBA + movs r0, 0x6 + bl sub_808FBA4 + ldr r0, _0808DEC8 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 +_0808DEB8: + strb r0, [r1] +_0808DEBA: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DEC4: .4byte gUnknown_30030F0 +_0808DEC8: .4byte gUnknown_20397B0 + thumb_func_end sub_808DD88 + + thumb_func_start sub_808DECC +sub_808DECC: @ 808DECC + push {lr} + ldr r0, _0808DEE4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0xD + bls _0808DEDA + b _0808E0AE +_0808DEDA: + lsls r0, 2 + ldr r1, _0808DEE8 @ =_0808DEEC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808DEE4: .4byte gUnknown_20397B0 +_0808DEE8: .4byte _0808DEEC + .align 2, 0 +_0808DEEC: + .4byte _0808DF24 + .4byte _0808DF3A + .4byte _0808DF72 + .4byte _0808DF98 + .4byte _0808DFA4 + .4byte _0808DFBC + .4byte _0808DFF8 + .4byte _0808E010 + .4byte _0808E01C + .4byte _0808E020 + .4byte _0808E034 + .4byte _0808E050 + .4byte _0808E062 + .4byte _0808E098 +_0808DF24: + movs r0, 0x9 + bl sub_808FBA4 + movs r0, 0x1 + bl sub_808FCE8 + ldr r0, _0808DF54 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0808DF3A: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0808DF64 + cmp r1, 0 + bgt _0808DF58 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0808DF5E + b _0808E0AE + .align 2, 0 +_0808DF54: .4byte gUnknown_20397B0 +_0808DF58: + cmp r1, 0x1 + beq _0808DF5E + b _0808E0AE +_0808DF5E: + bl sub_808FD20 + b _0808E010 +_0808DF64: + bl sub_808FD20 + bl sub_809328C + bl sub_8093194 + b _0808E074 +_0808DF72: + bl sub_8093420 + bl sub_80931EC + lsls r0, 24 + cmp r0, 0 + beq _0808DF82 + b _0808E0AE +_0808DF82: + b _0808DF8A +_0808DF84: + cmp r0, 0 + bne _0808DF8A + b _0808E088 +_0808DF8A: + bl sub_8093420 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _0808DF84 + b _0808E074 +_0808DF98: + bl sub_8093218 + bl sub_808F1D0 + movs r0, 0xA + b _0808E070 +_0808DFA4: + ldr r0, _0808DFB8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + bne _0808DFB2 + b _0808E0AE +_0808DFB2: + movs r0, 0xB + b _0808E070 + .align 2, 0 +_0808DFB8: .4byte gUnknown_30030F0 +_0808DFBC: + ldr r0, _0808DFE0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E0AE + bl sub_808FD20 + ldr r0, _0808DFE4 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808DFE8 + bl sub_80937DC + bl sub_80909F4 + b _0808E074 + .align 2, 0 +_0808DFE0: .4byte gUnknown_30030F0 +_0808DFE4: .4byte gUnknown_20397B4 +_0808DFE8: + ldr r0, _0808DFF4 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x7 + strb r0, [r1] + b _0808E0AE + .align 2, 0 +_0808DFF4: .4byte gUnknown_20397B0 +_0808DFF8: + bl sub_8090A60 + lsls r0, 24 + cmp r0, 0 + bne _0808E0AE + bl sub_8092F54 + bl sub_808F200 + bl sub_808FAA8 + b _0808E074 +_0808E010: + ldr r0, _0808E018 @ =sub_808D2BC + bl sub_808CFF8 + b _0808E0AE + .align 2, 0 +_0808E018: .4byte sub_808D2BC +_0808E01C: + movs r0, 0xA + b _0808E070 +_0808E020: + ldr r0, _0808E030 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E0AE + movs r0, 0x15 + b _0808E070 + .align 2, 0 +_0808E030: .4byte gUnknown_30030F0 +_0808E034: + ldr r0, _0808E04C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E0AE + bl sub_808FD20 + bl sub_8091114 + b _0808E074 + .align 2, 0 +_0808E04C: .4byte gUnknown_30030F0 +_0808E050: + bl sub_8091150 + lsls r0, 24 + cmp r0, 0 + bne _0808E0AE + bl sub_8093264 + movs r0, 0x13 + b _0808E070 +_0808E062: + ldr r0, _0808E080 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E0AE + movs r0, 0x14 +_0808E070: + bl sub_808FBA4 +_0808E074: + ldr r0, _0808E084 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E0AE + .align 2, 0 +_0808E080: .4byte gUnknown_30030F0 +_0808E084: .4byte gUnknown_20397B0 +_0808E088: + ldr r0, _0808E094 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x8 + strb r0, [r1] + b _0808E0AE + .align 2, 0 +_0808E094: .4byte gUnknown_20397B0 +_0808E098: + ldr r0, _0808E0B4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E0AE + bl sub_808FD20 + ldr r0, _0808E0B8 @ =sub_808D2BC + bl sub_808CFF8 +_0808E0AE: + pop {r0} + bx r0 + .align 2, 0 +_0808E0B4: .4byte gUnknown_30030F0 +_0808E0B8: .4byte sub_808D2BC + thumb_func_end sub_808DECC + + thumb_func_start sub_808E0BC +sub_808E0BC: @ 808E0BC + push {r4,lr} + ldr r4, _0808E0D0 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808E0D4 + cmp r0, 0x1 + beq _0808E108 + b _0808E130 + .align 2, 0 +_0808E0D0: .4byte gUnknown_20397B0 +_0808E0D4: + movs r0, 0xC + bl sub_808FBA4 + ldr r0, [r4] + ldr r2, _0808E100 @ =0x00000ce7 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r3, _0808E104 @ =0x00000da4 + adds r0, r3 + strb r1, [r0] + ldr r0, [r4] + adds r0, r2 + ldrb r0, [r0] + movs r1, 0xB0 + movs r2, 0x10 + bl sub_80BE604 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E130 + .align 2, 0 +_0808E100: .4byte 0x00000ce7 +_0808E104: .4byte 0x00000da4 +_0808E108: + bl sub_80BE6F0 + lsls r0, 24 + cmp r0, 0 + bne _0808E130 + bl sub_80BE658 + bl sub_808FD20 + ldr r0, [r4] + ldr r1, _0808E138 @ =0x00000da4 + adds r0, r1 + ldrb r0, [r0] + bl sub_8093878 + bl sub_808F1D0 + ldr r0, _0808E13C @ =sub_808D2BC + bl sub_808CFF8 +_0808E130: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E138: .4byte 0x00000da4 +_0808E13C: .4byte sub_808D2BC + thumb_func_end sub_808E0BC + + thumb_func_start sub_808E140 +sub_808E140: @ 808E140 + push {r4,r5,lr} + ldr r5, _0808E158 @ =gUnknown_20397B0 + ldr r0, [r5] + ldrb r1, [r0] + cmp r1, 0x1 + beq _0808E18C + cmp r1, 0x1 + bgt _0808E15C + cmp r1, 0 + beq _0808E166 + b _0808E1EA + .align 2, 0 +_0808E158: .4byte gUnknown_20397B0 +_0808E15C: + cmp r1, 0x2 + beq _0808E1B4 + cmp r1, 0x3 + beq _0808E1DA + b _0808E1EA +_0808E166: + ldr r1, _0808E17C @ =0x00000ce2 + adds r0, r1 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + bne _0808E180 + bl sub_808FD20 + b _0808E1D0 + .align 2, 0 +_0808E17C: .4byte 0x00000ce2 +_0808E180: + ldr r0, _0808E188 @ =sub_808E6D0 + bl sub_808CFF8 + b _0808E1EA + .align 2, 0 +_0808E188: .4byte sub_808E6D0 +_0808E18C: + movs r0, 0x2 + bl sub_8094D14 + ldr r0, _0808E1B0 @ =gUnknown_20397B4 + ldrb r0, [r0] + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_8094CC8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8095D84 + b _0808E1D0 + .align 2, 0 +_0808E1B0: .4byte gUnknown_20397B4 +_0808E1B4: + bl sub_809610C + lsls r0, 24 + cmp r0, 0 + bne _0808E1EA + movs r0, 0x3 + bl sub_8094D14 + bl sub_808FD20 + bl sub_8092F54 + bl sub_808F49C +_0808E1D0: + ldr r1, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E1EA +_0808E1DA: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E1EA + ldr r0, _0808E1F0 @ =sub_808D2BC + bl sub_808CFF8 +_0808E1EA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E1F0: .4byte sub_808D2BC + thumb_func_end sub_808E140 + + thumb_func_start sub_808E1F4 +sub_808E1F4: @ 808E1F4 + push {r4,lr} + ldr r0, _0808E20C @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x4 + bhi _0808E2A4 + lsls r0, 2 + ldr r1, _0808E210 @ =_0808E214 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E20C: .4byte gUnknown_20397B0 +_0808E210: .4byte _0808E214 + .align 2, 0 +_0808E214: + .4byte _0808E27C + .4byte _0808E228 + .4byte _0808E250 + .4byte _0808E270 + .4byte _0808E294 +_0808E228: + movs r0, 0x2 + bl sub_8094D14 + ldr r0, _0808E24C @ =gUnknown_20397B4 + ldrb r0, [r0] + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_8094CC8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8095F74 + b _0808E280 + .align 2, 0 +_0808E24C: .4byte gUnknown_20397B4 +_0808E250: + bl sub_809610C + lsls r0, 24 + cmp r0, 0 + bne _0808E2A4 + movs r0, 0 + bl sub_8094D14 + bl sub_8092F54 + bl sub_808F49C + movs r0, 0x1C + bl sub_808FBA4 + b _0808E280 +_0808E270: + ldr r0, _0808E28C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E2A4 +_0808E27C: + bl sub_808FD20 +_0808E280: + ldr r0, _0808E290 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E2A4 + .align 2, 0 +_0808E28C: .4byte gUnknown_30030F0 +_0808E290: .4byte gUnknown_20397B0 +_0808E294: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E2A4 + ldr r0, _0808E2AC @ =sub_808D2BC + bl sub_808CFF8 +_0808E2A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E2AC: .4byte sub_808D2BC + thumb_func_end sub_808E1F4 + + thumb_func_start sub_808E2B0 +sub_808E2B0: @ 808E2B0 + push {r4,r5,lr} + ldr r1, _0808E2CC @ =gUnknown_20397B0 + ldr r0, [r1] + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0x4 + bls _0808E2C0 + b _0808E3BA +_0808E2C0: + lsls r0, 2 + ldr r1, _0808E2D0 @ =_0808E2D4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E2CC: .4byte gUnknown_20397B0 +_0808E2D0: .4byte _0808E2D4 + .align 2, 0 +_0808E2D4: + .4byte _0808E2E8 + .4byte _0808E340 + .4byte _0808E360 + .4byte _0808E3A4 + .4byte _0808E38C +_0808E2E8: + ldr r0, [r5] + ldr r1, _0808E310 @ =0x00000ce2 + adds r0, r1 + ldrh r0, [r0] + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + cmp r0, 0 + bne _0808E314 + movs r0, 0x1A + bl sub_80722CC + movs r0, 0x1A + bl sub_808FBA4 + ldr r1, [r5] + movs r0, 0x3 + strb r0, [r1] + b _0808E3BA + .align 2, 0 +_0808E310: .4byte 0x00000ce2 +_0808E314: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808E33C @ =gUnknown_20397B4 + ldrb r0, [r0] + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_8094CC8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8096008 + ldr r1, [r5] + movs r0, 0x1 + strb r0, [r1] + b _0808E3BA + .align 2, 0 +_0808E33C: .4byte gUnknown_20397B4 +_0808E340: + bl sub_809610C + lsls r0, 24 + cmp r0, 0 + bne _0808E3BA + movs r0, 0x19 + bl sub_808FBA4 + ldr r0, _0808E35C @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1] + b _0808E3BA + .align 2, 0 +_0808E35C: .4byte gUnknown_20397B0 +_0808E360: + ldr r0, _0808E384 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E3BA + bl sub_808FD20 + bl sub_8092F54 + bl sub_808F49C + ldr r0, _0808E388 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x4 + strb r0, [r1] + b _0808E3BA + .align 2, 0 +_0808E384: .4byte gUnknown_30030F0 +_0808E388: .4byte gUnknown_20397B0 +_0808E38C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E3BA + ldr r0, _0808E3A0 @ =sub_808D2BC + bl sub_808CFF8 + b _0808E3BA + .align 2, 0 +_0808E3A0: .4byte sub_808D2BC +_0808E3A4: + ldr r0, _0808E3C0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E3BA + bl sub_808FD20 + ldr r0, _0808E3C4 @ =sub_808D2BC + bl sub_808CFF8 +_0808E3BA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E3C0: .4byte gUnknown_30030F0 +_0808E3C4: .4byte sub_808D2BC + thumb_func_end sub_808E2B0 + + thumb_func_start sub_808E3C8 +sub_808E3C8: @ 808E3C8 + push {r4,lr} + ldr r1, _0808E3E0 @ =gUnknown_20397B0 + ldr r0, [r1] + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x4 + bhi _0808E4A4 + lsls r0, 2 + ldr r1, _0808E3E4 @ =_0808E3E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E3E0: .4byte gUnknown_20397B0 +_0808E3E4: .4byte _0808E3E8 + .align 2, 0 +_0808E3E8: + .4byte _0808E3FC + .4byte _0808E428 + .4byte _0808E450 + .4byte _0808E470 + .4byte _0808E494 +_0808E3FC: + ldr r0, [r4] + ldr r1, _0808E418 @ =0x00000ce2 + adds r0, r1 + ldrh r0, [r0] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + bne _0808E41C + bl sub_808FD20 + ldr r1, [r4] + b _0808E484 + .align 2, 0 +_0808E418: .4byte 0x00000ce2 +_0808E41C: + ldr r0, _0808E424 @ =sub_808E6D0 + bl sub_808CFF8 + b _0808E4A4 + .align 2, 0 +_0808E424: .4byte sub_808E6D0 +_0808E428: + movs r0, 0x2 + bl sub_8094D14 + ldr r0, _0808E44C @ =gUnknown_20397B4 + ldrb r0, [r0] + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_8094CC8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8095EA0 + b _0808E480 + .align 2, 0 +_0808E44C: .4byte gUnknown_20397B4 +_0808E450: + bl sub_809610C + lsls r0, 24 + cmp r0, 0 + bne _0808E4A4 + movs r0, 0x3 + bl sub_8094D14 + bl sub_8092F54 + bl sub_808F49C + movs r0, 0x1D + bl sub_808FBA4 + b _0808E480 +_0808E470: + ldr r0, _0808E48C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E4A4 + bl sub_808FD20 +_0808E480: + ldr r0, _0808E490 @ =gUnknown_20397B0 + ldr r1, [r0] +_0808E484: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E4A4 + .align 2, 0 +_0808E48C: .4byte gUnknown_30030F0 +_0808E490: .4byte gUnknown_20397B0 +_0808E494: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E4A4 + ldr r0, _0808E4AC @ =sub_808D2BC + bl sub_808CFF8 +_0808E4A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E4AC: .4byte sub_808D2BC + thumb_func_end sub_808E3C8 + + thumb_func_start sub_808E4B0 +sub_808E4B0: @ 808E4B0 + push {lr} + ldr r0, _0808E4C8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x6 + bhi _0808E55C + lsls r0, 2 + ldr r1, _0808E4CC @ =_0808E4D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E4C8: .4byte gUnknown_20397B0 +_0808E4CC: .4byte _0808E4D0 + .align 2, 0 +_0808E4D0: + .4byte _0808E4EC + .4byte _0808E4F2 + .4byte _0808E50C + .4byte _0808E512 + .4byte _0808E518 + .4byte _0808E530 + .4byte _0808E54C +_0808E4EC: + bl sub_808FD20 + b _0808E53A +_0808E4F2: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E55C + movs r0, 0x6 + bl sub_80722CC + bl sub_8096694 + bl sub_80966F4 + b _0808E53A +_0808E50C: + bl sub_8096728 + b _0808E534 +_0808E512: + bl sub_8001960 + b _0808E534 +_0808E518: + ldr r0, _0808E52C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E55C + movs r0, 0x6 + bl sub_80722CC + b _0808E53A + .align 2, 0 +_0808E52C: .4byte gUnknown_30030F0 +_0808E530: + bl sub_80967C0 +_0808E534: + lsls r0, 24 + cmp r0, 0 + bne _0808E55C +_0808E53A: + ldr r0, _0808E548 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E55C + .align 2, 0 +_0808E548: .4byte gUnknown_20397B0 +_0808E54C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E55C + ldr r0, _0808E560 @ =sub_808D2BC + bl sub_808CFF8 +_0808E55C: + pop {r0} + bx r0 + .align 2, 0 +_0808E560: .4byte sub_808D2BC + thumb_func_end sub_808E4B0 + + thumb_func_start sub_808E564 +sub_808E564: @ 808E564 + push {r4,lr} + ldr r0, _0808E57C @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x5 + bls _0808E572 + b _0808E67C +_0808E572: + lsls r0, 2 + ldr r1, _0808E580 @ =_0808E584 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E57C: .4byte gUnknown_20397B0 +_0808E580: .4byte _0808E584 + .align 2, 0 +_0808E584: + .4byte _0808E59C + .4byte _0808E5BC + .4byte _0808E61A + .4byte _0808E63C + .4byte _0808E650 + .4byte _0808E66C +_0808E59C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1B + bl sub_808FBA4 + movs r0, 0 + bl sub_808FCE8 + ldr r0, _0808E5B8 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1] + b _0808E67C + .align 2, 0 +_0808E5B8: .4byte gUnknown_20397B0 +_0808E5BC: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0808E5E0 + cmp r1, 0 + bgt _0808E5D6 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0808E5DA + b _0808E67C +_0808E5D6: + cmp r1, 0x1 + bne _0808E67C +_0808E5DA: + bl sub_808FD20 + b _0808E660 +_0808E5E0: + ldr r4, _0808E604 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _0808E608 @ =0x00002224 + adds r0, r1 + ldrh r0, [r0] + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808E60C + bl sub_808FD20 + ldr r1, [r4] + movs r0, 0x3 + strb r0, [r1] + b _0808E67C + .align 2, 0 +_0808E604: .4byte gUnknown_20397B0 +_0808E608: .4byte 0x00002224 +_0808E60C: + movs r0, 0x1A + bl sub_808FBA4 + ldr r1, [r4] + movs r0, 0x2 + strb r0, [r1] + b _0808E67C +_0808E61A: + ldr r0, _0808E634 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E67C + bl sub_808FD20 + ldr r0, _0808E638 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x5 + strb r0, [r1] + b _0808E67C + .align 2, 0 +_0808E634: .4byte gUnknown_30030F0 +_0808E638: .4byte gUnknown_20397B0 +_0808E63C: + bl sub_8096088 + ldr r0, _0808E64C @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x4 + strb r0, [r1] + b _0808E67C + .align 2, 0 +_0808E64C: .4byte gUnknown_20397B0 +_0808E650: + bl sub_809610C + lsls r0, 24 + cmp r0, 0 + bne _0808E67C + movs r0, 0 + bl sub_8094D14 +_0808E660: + ldr r0, _0808E668 @ =sub_808D2BC + bl sub_808CFF8 + b _0808E67C + .align 2, 0 +_0808E668: .4byte sub_808D2BC +_0808E66C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E67C + ldr r0, _0808E684 @ =sub_808D2BC + bl sub_808CFF8 +_0808E67C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E684: .4byte sub_808D2BC + thumb_func_end sub_808E564 + + thumb_func_start sub_808E688 +sub_808E688: @ 808E688 + push {r4,lr} + ldr r4, _0808E69C @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + beq _0808E6A0 + cmp r0, 0x1 + beq _0808E6B2 + b _0808E6C6 + .align 2, 0 +_0808E69C: .4byte gUnknown_20397B0 +_0808E6A0: + bl sub_80937DC + bl sub_80909F4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E6C6 +_0808E6B2: + bl sub_8090A60 + lsls r0, 24 + cmp r0, 0 + bne _0808E6C6 + bl sub_808FAA8 + ldr r0, _0808E6CC @ =sub_808D2BC + bl sub_808CFF8 +_0808E6C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E6CC: .4byte sub_808D2BC + thumb_func_end sub_808E688 + + thumb_func_start sub_808E6D0 +sub_808E6D0: @ 808E6D0 + push {r4,lr} + ldr r4, _0808E6E8 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808E6FE + cmp r0, 0x1 + bgt _0808E6EC + cmp r0, 0 + beq _0808E6F6 + b _0808E738 + .align 2, 0 +_0808E6E8: .4byte gUnknown_20397B0 +_0808E6EC: + cmp r0, 0x2 + beq _0808E70A + cmp r0, 0x3 + beq _0808E728 + b _0808E738 +_0808E6F6: + movs r0, 0x1E + bl sub_808FBA4 + b _0808E71A +_0808E6FE: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E738 + b _0808E71A +_0808E70A: + ldr r0, _0808E724 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808E738 + bl sub_808FD20 +_0808E71A: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E738 + .align 2, 0 +_0808E724: .4byte gUnknown_30030F0 +_0808E728: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E738 + ldr r0, _0808E740 @ =sub_808D2BC + bl sub_808CFF8 +_0808E738: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E740: .4byte sub_808D2BC + thumb_func_end sub_808E6D0 + + thumb_func_start sub_808E744 +sub_808E744: @ 808E744 + push {r4,lr} + ldr r4, _0808E75C @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808E77A + cmp r0, 0x1 + bgt _0808E760 + cmp r0, 0 + beq _0808E766 + b _0808E830 + .align 2, 0 +_0808E75C: .4byte gUnknown_20397B0 +_0808E760: + cmp r0, 0x2 + beq _0808E78C + b _0808E830 +_0808E766: + movs r0, 0x1 + bl sub_808FBA4 + bl sub_8094E88 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E830 +_0808E77A: + bl sub_8094F90 + lsls r0, 24 + cmp r0, 0 + bne _0808E830 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0808E78C: + bl sub_8094F94 + adds r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bhi _0808E830 + lsls r0, 2 + ldr r1, _0808E7A4 @ =_0808E7A8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E7A4: .4byte _0808E7A8 + .align 2, 0 +_0808E7A8: + .4byte _0808E7DC + .4byte _0808E7DC + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E830 + .4byte _0808E820 + .4byte _0808E808 + .4byte _0808E7F4 +_0808E7DC: + movs r0, 0x1 + bl sub_80920FC + bl sub_808FD20 + ldr r0, _0808E7F0 @ =sub_808D2BC + bl sub_808CFF8 + b _0808E830 + .align 2, 0 +_0808E7F0: .4byte sub_808D2BC +_0808E7F4: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _0808E804 @ =sub_808EA90 + bl sub_808CFF8 + b _0808E830 + .align 2, 0 +_0808E804: .4byte sub_808EA90 +_0808E808: + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808E81C @ =sub_808E83C + bl sub_808CFF8 + b _0808E830 + .align 2, 0 +_0808E81C: .4byte sub_808E83C +_0808E820: + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r0, _0808E838 @ =sub_808E9A0 + bl sub_808CFF8 +_0808E830: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E838: .4byte sub_808E9A0 + thumb_func_end sub_808E744 + + thumb_func_start sub_808E83C +sub_808E83C: @ 808E83C + push {r4,r5,lr} + ldr r0, _0808E854 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x5 + bls _0808E84A + b _0808E994 +_0808E84A: + lsls r0, 2 + ldr r1, _0808E858 @ =_0808E85C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808E854: .4byte gUnknown_20397B0 +_0808E858: .4byte _0808E85C + .align 2, 0 +_0808E85C: + .4byte _0808E874 + .4byte _0808E888 + .4byte _0808E8A0 + .4byte _0808E8FA + .4byte _0808E924 + .4byte _0808E97E +_0808E874: + bl sub_808FD34 + movs r0, 0x2 + bl sub_808FBA4 + ldr r0, _0808E884 @ =gUnknown_20397B0 + ldr r1, [r0] + b _0808E976 + .align 2, 0 +_0808E884: .4byte gUnknown_20397B0 +_0808E888: + bl sub_8094F90 + lsls r0, 24 + cmp r0, 0 + beq _0808E894 + b _0808E994 +_0808E894: + ldr r0, _0808E89C @ =gUnknown_20397B0 + ldr r1, [r0] + b _0808E976 + .align 2, 0 +_0808E89C: .4byte gUnknown_20397B0 +_0808E8A0: + bl sub_8094F94 + ldr r5, _0808E8CC @ =gUnknown_20397B0 + ldr r1, [r5] + ldr r4, _0808E8D0 @ =0x0000078e + adds r1, r4 + strh r0, [r1] + movs r2, 0 + ldrsh r0, [r1, r2] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _0808E8D8 + movs r0, 0x1 + bl sub_80920FC + bl sub_808FD20 + ldr r0, _0808E8D4 @ =sub_808D2BC + bl sub_808CFF8 + b _0808E994 + .align 2, 0 +_0808E8CC: .4byte gUnknown_20397B0 +_0808E8D0: .4byte 0x0000078e +_0808E8D4: .4byte sub_808D2BC +_0808E8D8: + cmp r0, r1 + blt _0808E994 + cmp r0, 0x15 + bgt _0808E994 + cmp r0, 0x12 + blt _0808E994 + movs r0, 0x5 + bl sub_80722CC + bl sub_8095024 + ldr r1, [r5] + adds r2, r1, r4 + ldrh r0, [r2] + subs r0, 0x12 + strh r0, [r2] + b _0808E976 +_0808E8FA: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0808E994 + ldr r4, _0808E91C @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _0808E920 @ =0x0000078e + adds r0, r1 + ldrb r0, [r0] + bl sub_808FD5C + movs r0, 0x3 + bl sub_808FBA4 + b _0808E974 + .align 2, 0 +_0808E91C: .4byte gUnknown_20397B0 +_0808E920: .4byte 0x0000078e +_0808E924: + bl sub_8094F94 + ldr r4, _0808E954 @ =gUnknown_20397B0 + ldr r1, [r4] + movs r5, 0xF2 + lsls r5, 3 + adds r1, r5 + strh r0, [r1] + movs r2, 0 + ldrsh r1, [r1, r2] + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _0808E994 + adds r0, 0x1 + cmp r1, r0 + bne _0808E958 + bl sub_808FD20 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1] + b _0808E994 + .align 2, 0 +_0808E954: .4byte gUnknown_20397B0 +_0808E958: + movs r0, 0x5 + bl sub_80722CC + bl sub_808FD20 + ldr r1, [r4] + adds r1, r5 + ldrh r0, [r1] + subs r0, 0x16 + strh r0, [r1] + lsls r0, 24 + lsrs r0, 24 + bl sub_8091730 +_0808E974: + ldr r1, [r4] +_0808E976: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808E994 +_0808E97E: + bl sub_8091760 + lsls r0, 24 + cmp r0, 0 + bne _0808E994 + movs r0, 0x1 + bl sub_80920FC + ldr r0, _0808E99C @ =sub_808D2BC + bl sub_808CFF8 +_0808E994: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E99C: .4byte sub_808D2BC + thumb_func_end sub_808E83C + + thumb_func_start sub_808E9A0 +sub_808E9A0: @ 808E9A0 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _0808E9B8 @ =gUnknown_20397B0 + ldr r0, [r5] + ldrb r4, [r0] + cmp r4, 0x1 + beq _0808E9F4 + cmp r4, 0x1 + bgt _0808E9BC + cmp r4, 0 + beq _0808E9C6 + b _0808EA80 + .align 2, 0 +_0808E9B8: .4byte gUnknown_20397B0 +_0808E9BC: + cmp r4, 0x2 + beq _0808EA4C + cmp r4, 0x3 + beq _0808EA64 + b _0808EA80 +_0808E9C6: + movs r0, 0x5 + bl sub_808FBA4 + ldr r0, [r5] + ldr r1, _0808E9EC @ =0x00001e58 + adds r0, r1 + ldr r2, _0808E9F0 @ =0x0000dac7 + str r4, [sp] + movs r1, 0xA + movs r3, 0x3 + bl sub_808C854 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + bl sub_808C940 + b _0808EA56 + .align 2, 0 +_0808E9EC: .4byte 0x00001e58 +_0808E9F0: .4byte 0x0000dac7 +_0808E9F4: + bl sub_808C95C + ldr r1, [r5] + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0808EA44 @ =0x000002ca + adds r1, r2 + strh r0, [r1] + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0xC8 + beq _0808EA80 + bl sub_808FD20 + bl sub_808C950 + bl sub_808C8FC + ldr r0, [r5] + ldr r2, _0808EA44 @ =0x000002ca + adds r1, r0, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0xC9 + beq _0808EA34 + adds r4, r0, 0 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _0808EA56 +_0808EA34: + movs r0, 0x1 + bl sub_80920FC + ldr r0, _0808EA48 @ =sub_808D2BC + bl sub_808CFF8 + b _0808EA80 + .align 2, 0 +_0808EA44: .4byte 0x000002ca +_0808EA48: .4byte sub_808D2BC +_0808EA4C: + ldr r1, _0808EA60 @ =0x000002ca + adds r0, r1 + ldrb r0, [r0] + bl sub_8091514 +_0808EA56: + ldr r1, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808EA80 + .align 2, 0 +_0808EA60: .4byte 0x000002ca +_0808EA64: + bl sub_80915FC + lsls r0, 24 + cmp r0, 0 + bne _0808EA80 + ldr r0, [r5] + ldr r2, _0808EA88 @ =0x000002ca + adds r0, r2 + ldrb r0, [r0] + bl sub_808BA00 + ldr r0, _0808EA8C @ =sub_808D2BC + bl sub_808CFF8 +_0808EA80: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808EA88: .4byte 0x000002ca +_0808EA8C: .4byte sub_808D2BC + thumb_func_end sub_808E9A0 + + thumb_func_start sub_808EA90 +sub_808EA90: @ 808EA90 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _0808EAA4 @ =gUnknown_20397B0 + ldr r0, [r5] + ldrb r4, [r0] + cmp r4, 0 + beq _0808EAA8 + cmp r4, 0x1 + beq _0808EAC6 + b _0808EAE0 + .align 2, 0 +_0808EAA4: .4byte gUnknown_20397B0 +_0808EAA8: + bl sub_8093630 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808EAE0 +_0808EAC6: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0808EAE0 + ldr r0, _0808EAE8 @ =gUnknown_20397B7 + strb r4, [r0] + ldr r1, [r5] + movs r0, 0x2 + strb r0, [r1, 0x2] + ldr r0, _0808EAEC @ =sub_808EE18 + bl sub_808CFF8 +_0808EAE0: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808EAE8: .4byte gUnknown_20397B7 +_0808EAEC: .4byte sub_808EE18 + thumb_func_end sub_808EA90 + + thumb_func_start sub_808EAF0 +sub_808EAF0: @ 808EAF0 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _0808EB04 @ =gUnknown_20397B0 + ldr r0, [r5] + ldrb r4, [r0] + cmp r4, 0 + beq _0808EB08 + cmp r4, 0x1 + beq _0808EB26 + b _0808EB40 + .align 2, 0 +_0808EB04: .4byte gUnknown_20397B0 +_0808EB08: + bl sub_80936B8 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r5] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808EB40 +_0808EB26: + bl sub_80704D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0808EB40 + ldr r0, _0808EB48 @ =gUnknown_20397B7 + strb r1, [r0] + ldr r0, [r5] + strb r4, [r0, 0x2] + ldr r0, _0808EB4C @ =sub_808EE18 + bl sub_808CFF8 +_0808EB40: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808EB48: .4byte gUnknown_20397B7 +_0808EB4C: .4byte sub_808EE18 + thumb_func_end sub_808EAF0 + + thumb_func_start sub_808EB50 +sub_808EB50: @ 808EB50 + push {r4,lr} + sub sp, 0x4 + ldr r4, _0808EB64 @ =gUnknown_20397B0 + ldr r0, [r4] + ldrb r1, [r0] + cmp r1, 0 + beq _0808EB68 + cmp r1, 0x1 + beq _0808EB82 + b _0808EB9E + .align 2, 0 +_0808EB64: .4byte gUnknown_20397B0 +_0808EB68: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808EB9E +_0808EB82: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0808EB9E + ldr r1, _0808EBA8 @ =gUnknown_20397B7 + movs r0, 0x2 + strb r0, [r1] + ldr r1, [r4] + movs r0, 0x3 + strb r0, [r1, 0x2] + ldr r0, _0808EBAC @ =sub_808EE18 + bl sub_808CFF8 +_0808EB9E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808EBA8: .4byte gUnknown_20397B7 +_0808EBAC: .4byte sub_808EE18 + thumb_func_end sub_808EB50 + + thumb_func_start sub_808EBB0 +sub_808EBB0: @ 808EBB0 + push {r4,lr} + ldr r0, _0808EBC8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x4 + bls _0808EBBE + b _0808ECD0 +_0808EBBE: + lsls r0, 2 + ldr r1, _0808EBCC @ =_0808EBD0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808EBC8: .4byte gUnknown_20397B0 +_0808EBCC: .4byte _0808EBD0 + .align 2, 0 +_0808EBD0: + .4byte _0808EBE4 + .4byte _0808EC40 + .4byte _0808EC54 + .4byte _0808EC90 + .4byte _0808ECAC +_0808EBE4: + bl sub_80939A0 + lsls r0, 24 + cmp r0, 0 + beq _0808EC08 + movs r0, 0x1A + bl sub_80722CC + movs r0, 0xF + bl sub_808FBA4 + ldr r0, _0808EC04 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1] + b _0808ECD0 + .align 2, 0 +_0808EC04: .4byte gUnknown_20397B0 +_0808EC08: + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + beq _0808EC20 + ldr r0, _0808EC1C @ =sub_808E564 + bl sub_808CFF8 + b _0808ECD0 + .align 2, 0 +_0808EC1C: .4byte sub_808E564 +_0808EC20: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_808FBA4 + movs r0, 0 + bl sub_808FCE8 + ldr r0, _0808EC3C @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1] + b _0808ECD0 + .align 2, 0 +_0808EC3C: .4byte gUnknown_20397B0 +_0808EC40: + ldr r0, _0808EC50 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808ECD0 + b _0808EC72 + .align 2, 0 +_0808EC50: .4byte gUnknown_30030F0 +_0808EC54: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0808EC84 + cmp r1, 0 + bgt _0808EC6E + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0808EC72 + b _0808ECD0 +_0808EC6E: + cmp r1, 0x1 + bne _0808ECD0 +_0808EC72: + bl sub_808FD20 + ldr r0, _0808EC80 @ =sub_808D2BC + bl sub_808CFF8 + b _0808ECD0 + .align 2, 0 +_0808EC80: .4byte sub_808D2BC +_0808EC84: + movs r0, 0x3 + bl sub_80722CC + bl sub_808FD20 + b _0808EC9A +_0808EC90: + movs r0, 0x14 + movs r1, 0 + movs r2, 0x1 + bl sub_80A0A70 +_0808EC9A: + ldr r0, _0808ECA8 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808ECD0 + .align 2, 0 +_0808ECA8: .4byte gUnknown_20397B0 +_0808ECAC: + bl sub_80A0AAC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0808ECD0 + bl sub_808FF70 + bl sub_8040C3C + ldr r1, _0808ECD8 @ =gUnknown_2024029 + strb r0, [r1] + ldr r0, _0808ECDC @ =gUnknown_20397B0 + ldr r0, [r0] + strb r4, [r0, 0x2] + ldr r0, _0808ECE0 @ =sub_808EE18 + bl sub_808CFF8 +_0808ECD0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808ECD8: .4byte gUnknown_2024029 +_0808ECDC: .4byte gUnknown_20397B0 +_0808ECE0: .4byte sub_808EE18 + thumb_func_end sub_808EBB0 + + thumb_func_start sub_808ECE4 +sub_808ECE4: @ 808ECE4 + push {r4,lr} + ldr r0, _0808ECFC @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x4 + bls _0808ECF2 + b _0808EE04 +_0808ECF2: + lsls r0, 2 + ldr r1, _0808ED00 @ =_0808ED04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808ECFC: .4byte gUnknown_20397B0 +_0808ED00: .4byte _0808ED04 + .align 2, 0 +_0808ED04: + .4byte _0808ED18 + .4byte _0808ED74 + .4byte _0808ED88 + .4byte _0808EDC4 + .4byte _0808EDE0 +_0808ED18: + bl sub_80939A0 + lsls r0, 24 + cmp r0, 0 + beq _0808ED3C + movs r0, 0x1A + bl sub_80722CC + movs r0, 0xF + bl sub_808FBA4 + ldr r0, _0808ED38 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1] + b _0808EE04 + .align 2, 0 +_0808ED38: .4byte gUnknown_20397B0 +_0808ED3C: + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + beq _0808ED54 + ldr r0, _0808ED50 @ =sub_808E564 + bl sub_808CFF8 + b _0808EE04 + .align 2, 0 +_0808ED50: .4byte sub_808E564 +_0808ED54: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x12 + bl sub_808FBA4 + movs r0, 0 + bl sub_808FCE8 + ldr r0, _0808ED70 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1] + b _0808EE04 + .align 2, 0 +_0808ED70: .4byte gUnknown_20397B0 +_0808ED74: + ldr r0, _0808ED84 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0808EE04 + b _0808EDA8 + .align 2, 0 +_0808ED84: .4byte gUnknown_30030F0 +_0808ED88: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0808EDA8 + cmp r1, 0 + bgt _0808EDA2 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0808EDB8 + b _0808EE04 +_0808EDA2: + cmp r1, 0x1 + beq _0808EDB8 + b _0808EE04 +_0808EDA8: + bl sub_808FD20 + ldr r0, _0808EDB4 @ =sub_808D2BC + bl sub_808CFF8 + b _0808EE04 + .align 2, 0 +_0808EDB4: .4byte sub_808D2BC +_0808EDB8: + movs r0, 0x3 + bl sub_80722CC + bl sub_808FD20 + b _0808EDCE +_0808EDC4: + movs r0, 0x14 + movs r1, 0 + movs r2, 0 + bl sub_80A0A70 +_0808EDCE: + ldr r0, _0808EDDC @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808EE04 + .align 2, 0 +_0808EDDC: .4byte gUnknown_20397B0 +_0808EDE0: + bl sub_80A0AAC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0808EE04 + bl sub_808FF70 + bl sub_8040C3C + ldr r1, _0808EE0C @ =gUnknown_2024029 + strb r0, [r1] + ldr r0, _0808EE10 @ =gUnknown_20397B0 + ldr r0, [r0] + strb r4, [r0, 0x2] + ldr r0, _0808EE14 @ =sub_808EE18 + bl sub_808CFF8 +_0808EE04: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808EE0C: .4byte gUnknown_2024029 +_0808EE10: .4byte gUnknown_20397B0 +_0808EE14: .4byte sub_808EE18 + thumb_func_end sub_808ECE4 + + thumb_func_start sub_808EE18 +sub_808EE18: @ 808EE18 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0808EE44 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r4, [r0, 0x2] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _0808EE4C + bl sub_809616C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808EE4C + bl sub_80961C4 + ldr r1, _0808EE48 @ =gUnknown_20397BA + b _0808EE50 + .align 2, 0 +_0808EE44: .4byte gUnknown_20397B0 +_0808EE48: .4byte gUnknown_20397BA +_0808EE4C: + ldr r1, _0808EE70 @ =gUnknown_20397BA + movs r0, 0 +_0808EE50: + strh r0, [r1] + cmp r4, 0x1 + beq _0808EE78 + cmp r4, 0x1 + ble _0808EE62 + cmp r4, 0x2 + beq _0808EEBC + cmp r4, 0x3 + beq _0808EEE8 +_0808EE62: + bl sub_808EF68 + ldr r0, _0808EE74 @ =sub_808C7B4 + bl sub_8000544 + b _0808EEF6 + .align 2, 0 +_0808EE70: .4byte gUnknown_20397BA +_0808EE74: .4byte sub_808C7B4 +_0808EE78: + ldr r0, _0808EEAC @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _0808EEB0 @ =0x0000217c + adds r0, r1, r2 + ldr r0, [r0] + mov r8, r0 + subs r2, 0x3 + adds r0, r1, r2 + ldrb r6, [r0] + subs r2, 0x1 + adds r0, r1, r2 + ldrb r5, [r0] + ldr r0, _0808EEB4 @ =0x0000217a + adds r1, r0 + ldrb r4, [r1] + bl sub_808EF68 + ldr r3, _0808EEB8 @ =sub_808CE60 + str r4, [sp] + mov r0, r8 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_81344F8 + b _0808EEF6 + .align 2, 0 +_0808EEAC: .4byte gUnknown_20397B0 +_0808EEB0: .4byte 0x0000217c +_0808EEB4: .4byte 0x0000217a +_0808EEB8: .4byte sub_808CE60 +_0808EEBC: + bl sub_808EF68 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + str r0, [sp] + ldr r0, _0808EEE4 @ =sub_808CE60 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_809D954 + b _0808EEF6 + .align 2, 0 +_0808EEE4: .4byte sub_808CE60 +_0808EEE8: + bl sub_808EF68 + ldr r2, _0808EF08 @ =sub_808CE60 + movs r0, 0x4 + movs r1, 0 + bl sub_8107DB4 +_0808EEF6: + adds r0, r7, 0 + bl sub_8077508 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808EF08: .4byte sub_808CE60 + thumb_func_end sub_808EE18 + + thumb_func_start sub_808EF0C +sub_808EF0C: @ 808EF0C + push {lr} + sub sp, 0x4 + ldr r0, _0808EF40 @ =gUnknown_203AD30 + ldrh r1, [r0] + mov r0, sp + strh r1, [r0] + cmp r1, 0 + beq _0808EF60 + bl sub_8094CC8 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0808EF44 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808EF4C + movs r0, 0x64 + muls r0, r1 + ldr r1, _0808EF48 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + mov r2, sp + bl sub_804037C + b _0808EF56 + .align 2, 0 +_0808EF40: .4byte gUnknown_203AD30 +_0808EF44: .4byte gUnknown_20397B4 +_0808EF48: .4byte gUnknown_2024284 +_0808EF4C: + adds r0, r1, 0 + movs r1, 0xC + mov r2, sp + bl sub_808BAC0 +_0808EF56: + mov r0, sp + ldrh r0, [r0] + movs r1, 0x1 + bl sub_809A1D8 +_0808EF60: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_808EF0C + + thumb_func_start sub_808EF68 +sub_808EF68: @ 808EF68 + push {r4,lr} + bl sub_80F7B2C + bl sub_80950A4 + ldr r4, _0808EF88 @ =gUnknown_20397B0 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + bl sub_8003ECC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808EF88: .4byte gUnknown_20397B0 + thumb_func_end sub_808EF68 + + thumb_func_start sub_808EF8C +sub_808EF8C: @ 808EF8C + push {lr} + sub sp, 0x4 + ldr r1, _0808EFB8 @ =0x00001f0f + movs r0, 0xE + bl sub_8000A38 + ldr r1, _0808EFBC @ =gUnknown_83CE438 + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r0, _0808EFC0 @ =gUnknown_83CE4D0 + ldr r1, _0808EFC4 @ =0x0600f800 + bl LZ77UnCompVram + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0808EFB8: .4byte 0x00001f0f +_0808EFBC: .4byte gUnknown_83CE438 +_0808EFC0: .4byte gUnknown_83CE4D0 +_0808EFC4: .4byte 0x0600f800 + thumb_func_end sub_808EF8C + + thumb_func_start sub_808EFC8 +sub_808EFC8: @ 808EFC8 + push {lr} + movs r0, 0x3 + movs r1, 0x80 + movs r2, 0x1 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0x80 + movs r2, 0x2 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_808EFC8 + + thumb_func_start sub_808EFE4 +sub_808EFE4: @ 808EFE4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r1, _0808F030 @ =gUnknown_83CEA50 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r1, _0808F034 @ =gUnknown_8E9C438 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r0, _0808F038 @ =gUnknown_83CE5FC + ldr r5, _0808F03C @ =gUnknown_20397B0 + ldr r1, [r5] + ldr r4, _0808F040 @ =0x00005abc + adds r1, r4 + bl LZ77UnCompWram + ldr r1, [r5] + adds r1, r4 + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808F030: .4byte gUnknown_83CEA50 +_0808F034: .4byte gUnknown_8E9C438 +_0808F038: .4byte gUnknown_83CE5FC +_0808F03C: .4byte gUnknown_20397B0 +_0808F040: .4byte 0x00005abc + thumb_func_end sub_808EFE4 + + thumb_func_start sub_808F044 +sub_808F044: @ 808F044 + push {lr} + ldr r0, _0808F05C @ =gUnknown_83CEA30 + bl sub_8003B24 + lsls r0, 16 + cmp r0, 0 + beq _0808F060 + bl sub_8002C28 + movs r0, 0x1 + b _0808F062 + .align 2, 0 +_0808F05C: .4byte gUnknown_83CEA30 +_0808F060: + movs r0, 0 +_0808F062: + pop {r1} + bx r1 + thumb_func_end sub_808F044 + + thumb_func_start sub_808F068 +sub_808F068: @ 808F068 + push {lr} + ldr r0, _0808F074 @ =gUnknown_83CEA60 + bl sub_8008928 + pop {r0} + bx r0 + .align 2, 0 +_0808F074: .4byte gUnknown_83CEA60 + thumb_func_end sub_808F068 + + thumb_func_start sub_808F078 +sub_808F078: @ 808F078 + push {lr} + ldr r0, _0808F0B0 @ =gUnknown_8E9C3F8 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808F0B4 @ =gUnknown_8E9C418 + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808F0B8 @ =gUnknown_83CEA10 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808F0BC @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + beq _0808F0C4 + ldr r0, _0808F0C0 @ =gUnknown_83CE738 + movs r1, 0x30 + movs r2, 0x20 + bl sub_80703EC + b _0808F0CE + .align 2, 0 +_0808F0B0: .4byte gUnknown_8E9C3F8 +_0808F0B4: .4byte gUnknown_8E9C418 +_0808F0B8: .4byte gUnknown_83CEA10 +_0808F0BC: .4byte gUnknown_20397B0 +_0808F0C0: .4byte gUnknown_83CE738 +_0808F0C4: + ldr r0, _0808F0EC @ =gUnknown_83CE758 + movs r1, 0x30 + movs r2, 0x20 + bl sub_80703EC +_0808F0CE: + ldr r1, _0808F0F0 @ =0x00001e05 + movs r0, 0xA + bl sub_8000A38 + bl sub_808F2BC + bl sub_808F0F4 + bl sub_808F164 + bl sub_808F1D0 + pop {r0} + bx r0 + .align 2, 0 +_0808F0EC: .4byte gUnknown_83CE758 +_0808F0F0: .4byte 0x00001e05 + thumb_func_end sub_808F078 + + thumb_func_start sub_808F0F4 +sub_808F0F4: @ 808F0F4 + push {r4,lr} + ldr r1, _0808F154 @ =0x0000dac8 + movs r0, 0x10 + movs r2, 0 + bl sub_80BEB00 + ldr r4, _0808F158 @ =gUnknown_20397B0 + ldr r1, [r4] + movs r3, 0xD9 + lsls r3, 4 + adds r1, r3 + str r0, [r1] + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r0, [r4] + adds r0, r3 + ldr r0, [r0] + adds r0, 0x43 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + adds r0, r3 + ldr r2, [r0] + movs r1, 0x28 + strh r1, [r2, 0x20] + ldr r1, [r0] + movs r0, 0x96 + strh r0, [r1, 0x22] + movs r0, 0x10 + bl sub_8008804 + ldr r1, [r4] + ldr r2, _0808F15C @ =0x00000d9c + adds r1, r2 + lsls r0, 16 + lsrs r0, 11 + ldr r2, _0808F160 @ =0x06010000 + adds r0, r2 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F154: .4byte 0x0000dac8 +_0808F158: .4byte gUnknown_20397B0 +_0808F15C: .4byte 0x00000d9c +_0808F160: .4byte 0x06010000 + thumb_func_end sub_808F0F4 + + thumb_func_start sub_808F164 +sub_808F164: @ 808F164 + push {r4,lr} + sub sp, 0x8 + ldr r0, _0808F1BC @ =gUnknown_83CEA68 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + bl sub_80086DC + movs r4, 0 +_0808F17A: + lsls r1, r4, 6 + subs r1, r4 + adds r1, 0x8 + lsls r1, 16 + asrs r1, 16 + ldr r0, _0808F1C0 @ =gUnknown_83CEBD8 + movs r2, 0x9 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0808F1C4 @ =gUnknown_20397B0 + ldr r2, [r1] + lsls r1, r4, 2 + ldr r3, _0808F1C8 @ =0x00000d94 + adds r2, r3 + adds r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0808F1CC @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _0808F17A + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F1BC: .4byte gUnknown_83CEA68 +_0808F1C0: .4byte gUnknown_83CEBD8 +_0808F1C4: .4byte gUnknown_20397B0 +_0808F1C8: .4byte 0x00000d94 +_0808F1CC: .4byte gUnknown_202063C + thumb_func_end sub_808F164 + + thumb_func_start sub_808F1D0 +sub_808F1D0: @ 808F1D0 + push {lr} + ldr r0, _0808F1FC @ =gUnknown_20397B0 + ldr r1, [r0] + movs r2, 0xCE + lsls r2, 4 + adds r0, r1, r2 + ldrh r0, [r0] + subs r2, 0x4 + adds r1, r2 + ldr r1, [r1] + bl sub_808F3F8 + bl sub_808F49C + bl sub_808F5E8 + movs r0, 0 + bl sub_80F67A4 + pop {r0} + bx r0 + .align 2, 0 +_0808F1FC: .4byte gUnknown_20397B0 + thumb_func_end sub_808F1D0 + + thumb_func_start sub_808F200 +sub_808F200: @ 808F200 + push {lr} + bl sub_808F1D0 + ldr r3, _0808F24C @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r1, _0808F250 @ =0x00002238 + adds r0, r1 + ldr r2, [r0] + cmp r2, 0 + beq _0808F248 + ldrb r0, [r2, 0x1] + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0x1] + ldr r1, [r3] + ldr r0, _0808F250 @ =0x00002238 + adds r1, r0 + ldr r2, [r1] + movs r0, 0xA + strh r0, [r2, 0x2E] + ldr r2, [r1] + movs r0, 0x1 + strh r0, [r2, 0x30] + ldr r2, [r1] + ldr r0, _0808F254 @ =sub_808F274 + str r0, [r2, 0x1C] + ldr r0, [r1] + ldrh r0, [r0, 0x2E] + lsls r1, r0, 12 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4C + bl sub_8000A38 +_0808F248: + pop {r0} + bx r0 + .align 2, 0 +_0808F24C: .4byte gUnknown_20397B0 +_0808F250: .4byte 0x00002238 +_0808F254: .4byte sub_808F274 + thumb_func_end sub_808F200 + + thumb_func_start sub_808F258 +sub_808F258: @ 808F258 + ldr r0, _0808F26C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0808F270 @ =0x00002238 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + lsls r0, 27 + lsrs r0, 31 + bx lr + .align 2, 0 +_0808F26C: .4byte gUnknown_20397B0 +_0808F270: .4byte 0x00002238 + thumb_func_end sub_808F258 + + thumb_func_start sub_808F274 +sub_808F274: @ 808F274 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + subs r0, r1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bge _0808F28A + movs r0, 0 + strh r0, [r4, 0x2E] +_0808F28A: + ldrh r0, [r4, 0x2E] + lsls r1, r0, 12 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4C + bl sub_8000A38 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0808F2B2 + ldrb r0, [r4, 0x1] + movs r1, 0x11 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x1] + ldr r0, _0808F2B8 @ =nullsub_8 + str r0, [r4, 0x1C] +_0808F2B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F2B8: .4byte nullsub_8 + thumb_func_end sub_808F274 + + thumb_func_start sub_808F2BC +sub_808F2BC: @ 808F2BC + push {r4-r7,lr} + sub sp, 0x28 + ldr r0, _0808F350 @ =gUnknown_20397B0 + mov r12, r0 + ldr r1, [r0] + ldr r4, _0808F354 @ =0x000022bc + adds r0, r1, r4 + str r0, [sp, 0x18] + add r3, sp, 0x18 + movs r0, 0x82 + lsls r0, 10 + str r0, [r3, 0x4] + ldr r5, _0808F358 @ =0x0000223c + adds r1, r5 + str r1, [sp, 0x20] + ldr r0, _0808F35C @ =0x0000dac6 + add r2, sp, 0x20 + str r0, [r2, 0x4] + mov r1, sp + ldr r0, _0808F360 @ =gUnknown_83CEA70 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + movs r6, 0 + adds r7, r2, 0 + mov r5, r12 + movs r2, 0 + ldr r1, _0808F364 @ =0x000007ff +_0808F2F6: + ldr r0, [r5] + adds r0, r4 + adds r0, r6 + strb r2, [r0] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r1 + bls _0808F2F6 + movs r6, 0 + ldr r5, _0808F350 @ =gUnknown_20397B0 + ldr r4, _0808F358 @ =0x0000223c + movs r2, 0 +_0808F310: + ldr r0, [r5] + lsls r1, r6, 1 + adds r0, r4 + adds r0, r1 + strh r2, [r0] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0xF + bls _0808F310 + ldr r0, _0808F350 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r6, _0808F368 @ =0x00002238 + adds r0, r6 + movs r1, 0 + str r1, [r0] + adds r0, r3, 0 + bl sub_80086DC + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + beq _0808F3C8 + adds r0, r7, 0 + bl sub_8008928 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _0808F3C8 + b _0808F3B4 + .align 2, 0 +_0808F350: .4byte gUnknown_20397B0 +_0808F354: .4byte 0x000022bc +_0808F358: .4byte 0x0000223c +_0808F35C: .4byte 0x0000dac6 +_0808F360: .4byte gUnknown_83CEA70 +_0808F364: .4byte 0x000007ff +_0808F368: .4byte 0x00002238 +_0808F36C: + ldr r0, _0808F39C @ =gUnknown_20397B0 + ldr r2, [r0] + ldr r7, _0808F3A0 @ =0x00002238 + adds r3, r2, r7 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0808F3A4 @ =gUnknown_202063C + adds r0, r1 + str r0, [r3] + lsls r0, r4, 4 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + ldr r3, _0808F3A8 @ =0x00002232 + adds r1, r2, r3 + strh r0, [r1] + ldr r6, _0808F3AC @ =0x00002234 + adds r2, r6 + lsls r0, r5, 5 + ldr r7, _0808F3B0 @ =0x06010000 + adds r0, r7 + str r0, [r2] + b _0808F3C8 + .align 2, 0 +_0808F39C: .4byte gUnknown_20397B0 +_0808F3A0: .4byte 0x00002238 +_0808F3A4: .4byte gUnknown_202063C +_0808F3A8: .4byte 0x00002232 +_0808F3AC: .4byte 0x00002234 +_0808F3B0: .4byte 0x06010000 +_0808F3B4: + mov r0, sp + movs r1, 0x28 + movs r2, 0x30 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + bne _0808F36C +_0808F3C8: + ldr r0, _0808F3EC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0808F3F0 @ =0x00002238 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _0808F3E2 + movs r0, 0x2 + bl sub_800874C + ldr r0, _0808F3F4 @ =0x0000dac6 + bl sub_8008A30 +_0808F3E2: + add sp, 0x28 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808F3EC: .4byte gUnknown_20397B0 +_0808F3F0: .4byte 0x00002238 +_0808F3F4: .4byte 0x0000dac6 + thumb_func_end sub_808F2BC + + thumb_func_start sub_808F3F8 +sub_808F3F8: @ 808F3F8 + push {r4-r7,lr} + adds r3, r1, 0 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r6, _0808F468 @ =gUnknown_20397B0 + ldr r4, [r6] + ldr r7, _0808F46C @ =0x00002238 + adds r0, r4, r7 + ldr r0, [r0] + cmp r0, 0 + beq _0808F496 + cmp r2, 0 + beq _0808F48C + lsls r0, r2, 3 + ldr r1, _0808F470 @ =gUnknown_82350AC + adds r0, r1 + ldr r5, _0808F474 @ =0x000022bc + adds r1, r4, r5 + bl sub_800ECC4 + ldr r1, [r6] + ldr r2, _0808F478 @ =0x00000cd8 + adds r0, r1, r2 + ldr r0, [r0] + ldr r4, _0808F47C @ =0x0000223c + adds r1, r4 + bl LZ77UnCompWram + ldr r0, [r6] + adds r5, r0, r5 + ldr r1, _0808F480 @ =0x00002234 + adds r0, r1 + ldr r1, [r0] + ldr r2, _0808F484 @ =0x04000200 + adds r0, r5, 0 + bl CpuSet + ldr r0, [r6] + adds r4, r0, r4 + ldr r2, _0808F488 @ =0x00002232 + adds r0, r2 + ldrh r1, [r0] + adds r0, r4, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, [r6] + adds r0, r7 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + b _0808F496 + .align 2, 0 +_0808F468: .4byte gUnknown_20397B0 +_0808F46C: .4byte 0x00002238 +_0808F470: .4byte gUnknown_82350AC +_0808F474: .4byte 0x000022bc +_0808F478: .4byte 0x00000cd8 +_0808F47C: .4byte 0x0000223c +_0808F480: .4byte 0x00002234 +_0808F484: .4byte 0x04000200 +_0808F488: .4byte 0x00002232 +_0808F48C: + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_0808F496: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808F3F8 + + thumb_func_start sub_808F49C +sub_808F49C: @ 808F49C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r6, _0808F51C @ =gUnknown_20397B0 + ldr r2, [r6] + ldrb r0, [r2, 0x1] + cmp r0, 0x3 + beq _0808F528 + movs r4, 0 + movs r5, 0 + mov r8, r6 +_0808F4BC: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _0808F520 @ =0x00000cf5 + adds r0, r1 + mov r2, r8 + ldr r1, [r2] + adds r2, r1, r0 + movs r3, 0x6 + cmp r4, 0x2 + bne _0808F4D4 + movs r3, 0xA +_0808F4D4: + lsls r0, r5, 24 + lsrs r0, 24 + str r0, [sp] + movs r7, 0xFF + str r7, [sp, 0x4] + movs r6, 0 + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + adds r0, 0xE + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0x2 + bls _0808F4BC + ldr r0, _0808F51C @ =gUnknown_20397B0 + ldr r2, [r0] + ldr r0, _0808F524 @ =0x00000d61 + adds r2, r0 + adds r0, r5, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + str r7, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r3, 0x6 + bl sub_8002C48 + b _0808F57E + .align 2, 0 +_0808F51C: .4byte gUnknown_20397B0 +_0808F520: .4byte 0x00000cf5 +_0808F524: .4byte 0x00000d61 +_0808F528: + ldr r1, _0808F5BC @ =0x00000d61 + adds r2, r1 + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0 + movs r3, 0x6 + bl sub_8002C48 + movs r4, 0 + movs r5, 0xF +_0808F542: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r2, _0808F5C0 @ =0x00000cf5 + adds r0, r2 + ldr r1, [r6] + adds r2, r1, r0 + movs r3, 0x6 + cmp r4, 0x2 + bne _0808F558 + movs r3, 0xA +_0808F558: + lsls r0, r5, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0x2 + bl sub_8002C48 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + adds r0, 0xE + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0x2 + bls _0808F542 +_0808F57E: + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + ldr r4, _0808F5C4 @ =gUnknown_20397B0 + ldr r1, [r4] + movs r2, 0xCE + lsls r2, 4 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, 0 + beq _0808F5C8 + adds r2, 0x7 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, 0xB5 + adds r1, r2 + ldr r1, [r1] + bl sub_80BEBD0 + ldr r0, [r4] + movs r1, 0xD9 + lsls r1, 4 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + b _0808F5D8 + .align 2, 0 +_0808F5BC: .4byte 0x00000d61 +_0808F5C0: .4byte 0x00000cf5 +_0808F5C4: .4byte gUnknown_20397B0 +_0808F5C8: + movs r2, 0xD9 + lsls r2, 4 + adds r0, r1, r2 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 +_0808F5D8: + strb r0, [r1] + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808F49C + + thumb_func_start sub_808F5E8 +sub_808F5E8: @ 808F5E8 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0808F634 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCE + lsls r1, 4 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _0808F63C + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x8 + bl sub_80F7CE8 + movs r4, 0 +_0808F60E: + ldr r0, _0808F634 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _0808F638 @ =0x00000d94 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + lsls r1, r4, 1 + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_80083A4 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _0808F60E + b _0808F66E + .align 2, 0 +_0808F634: .4byte gUnknown_20397B0 +_0808F638: .4byte 0x00000d94 +_0808F63C: + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x8 + bl sub_80F7CE8 + movs r4, 0 +_0808F64E: + ldr r0, _0808F684 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _0808F688 @ =0x00000d94 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + lsls r1, r4, 25 + lsrs r1, 24 + bl sub_800838C + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _0808F64E +_0808F66E: + movs r0, 0 + bl sub_80F7E54 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F684: .4byte gUnknown_20397B0 +_0808F688: .4byte 0x00000d94 + thumb_func_end sub_808F5E8 + + thumb_func_start sub_808F68C +sub_808F68C: @ 808F68C + push {r4,lr} + sub sp, 0x4 + ldr r0, _0808F704 @ =gUnknown_8E9CAEC + ldr r4, _0808F708 @ =gUnknown_20397B0 + ldr r1, [r4] + adds r1, 0xB0 + bl LZ77UnCompWram + ldr r0, _0808F70C @ =gUnknown_8E9C3D8 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldr r2, [r4] + adds r2, 0xB0 + movs r0, 0x16 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x1 + movs r3, 0xC + bl sub_80F7B80 + ldr r2, _0808F710 @ =gUnknown_83CE778 + movs r0, 0x4 + str r0, [sp] + movs r0, 0x2 + movs r1, 0x1 + movs r3, 0x9 + bl sub_80F7B80 + movs r0, 0x1 + movs r1, 0xA + movs r2, 0 + bl sub_80F7CAC + movs r0, 0x2 + movs r1, 0x15 + movs r2, 0 + bl sub_80F7CAC + bl sub_808F9FC + ldr r0, _0808F714 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808F718 + movs r0, 0x1 + bl sub_808F90C + movs r0, 0x1 + bl sub_809088C + movs r0, 0x2 + bl sub_80F7E54 + movs r0, 0x1 + bl sub_80F7E54 + b _0808F73A + .align 2, 0 +_0808F704: .4byte gUnknown_8E9CAEC +_0808F708: .4byte gUnknown_20397B0 +_0808F70C: .4byte gUnknown_8E9C3D8 +_0808F710: .4byte gUnknown_83CE778 +_0808F714: .4byte gUnknown_20397B4 +_0808F718: + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x14 + movs r3, 0xC + bl sub_80F7CE8 + movs r0, 0x1 + bl sub_808F90C + movs r0, 0x1 + bl sub_80F7E54 + movs r0, 0x2 + bl sub_80F7E54 +_0808F73A: + movs r0, 0x1 + bl sub_80F67A4 + ldr r0, _0808F754 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0808F758 @ =0x000002c7 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F754: .4byte gUnknown_20397B0 +_0808F758: .4byte 0x000002c7 + thumb_func_end sub_808F68C + + thumb_func_start sub_808F75C +sub_808F75C: @ 808F75C + push {lr} + ldr r0, _0808F788 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r0, 0xB0 + lsls r0, 2 + adds r2, r1, r0 + movs r3, 0 + movs r0, 0x14 + strh r0, [r2] + ldr r0, _0808F78C @ =0x000002c2 + adds r2, r1, r0 + movs r0, 0x2 + strh r0, [r2] + ldr r0, _0808F790 @ =0x000002c5 + adds r1, r0 + strb r3, [r1] + movs r0, 0 + bl sub_809088C + pop {r0} + bx r0 + .align 2, 0 +_0808F788: .4byte gUnknown_20397B0 +_0808F78C: .4byte 0x000002c2 +_0808F790: .4byte 0x000002c5 + thumb_func_end sub_808F75C + + thumb_func_start sub_808F794 +sub_808F794: @ 808F794 + push {r4,lr} + ldr r4, _0808F7F0 @ =gUnknown_20397B0 + ldr r2, [r4] + ldr r1, _0808F7F4 @ =0x000002c5 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x14 + beq _0808F802 + movs r0, 0xB0 + lsls r0, 2 + adds r1, r2, r0 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldr r0, _0808F7F8 @ =0x000002c2 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl sub_80F7D30 + movs r0, 0x1 + bl sub_80F7E54 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x8 + bl sub_8090B98 + ldr r1, [r4] + ldr r0, _0808F7F4 @ =0x000002c5 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x14 + beq _0808F7FC + movs r0, 0x1 + b _0808F804 + .align 2, 0 +_0808F7F0: .4byte gUnknown_20397B0 +_0808F7F4: .4byte 0x000002c5 +_0808F7F8: .4byte 0x000002c2 +_0808F7FC: + ldr r1, _0808F80C @ =gUnknown_20397B4 + movs r0, 0x1 + strb r0, [r1] +_0808F802: + movs r0, 0 +_0808F804: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F80C: .4byte gUnknown_20397B4 + thumb_func_end sub_808F794 + + thumb_func_start sub_808F810 +sub_808F810: @ 808F810 + push {r4,lr} + ldr r4, _0808F844 @ =gUnknown_20397B0 + ldr r1, [r4] + movs r0, 0xB0 + lsls r0, 2 + adds r2, r1, r0 + movs r3, 0 + movs r0, 0 + strh r0, [r2] + ldr r0, _0808F848 @ =0x000002c2 + adds r2, r1, r0 + movs r0, 0x16 + strh r0, [r2] + ldr r0, _0808F84C @ =0x000002c5 + adds r1, r0 + strb r3, [r1] + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _0808F83C + bl sub_80960C0 +_0808F83C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F844: .4byte gUnknown_20397B0 +_0808F848: .4byte 0x000002c2 +_0808F84C: .4byte 0x000002c5 + thumb_func_end sub_808F810 + + thumb_func_start sub_808F850 +sub_808F850: @ 808F850 + push {r4,r5,lr} + sub sp, 0x8 + ldr r5, _0808F8C8 @ =gUnknown_20397B0 + ldr r2, [r5] + ldr r1, _0808F8CC @ =0x000002c5 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x14 + beq _0808F8FC + movs r0, 0xB0 + lsls r0, 2 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldr r4, _0808F8D0 @ =0x000002c2 + adds r1, r2, r4 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + movs r2, 0x1 + negs r2, r2 + movs r0, 0x1 + movs r1, 0x3 + bl sub_80F7D30 + movs r0, 0x1 + bl sub_80F7E54 + movs r1, 0x80 + lsls r1, 1 + ldr r0, [r5] + adds r0, r4 + ldrb r3, [r0] + movs r0, 0xC + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r2, 0xA + bl sub_8002454 + movs r0, 0x8 + negs r0, r0 + bl sub_8090B98 + ldr r1, [r5] + ldr r0, _0808F8CC @ =0x000002c5 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x14 + beq _0808F8D4 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x1 + b _0808F8FE + .align 2, 0 +_0808F8C8: .4byte gUnknown_20397B0 +_0808F8CC: .4byte 0x000002c5 +_0808F8D0: .4byte 0x000002c2 +_0808F8D4: + ldr r0, _0808F908 @ =gUnknown_20397B4 + movs r1, 0 + strb r1, [r0] + bl sub_8090C44 + bl sub_80937DC + movs r0, 0x2 + str r0, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x9 + bl sub_80F7CE8 + movs r0, 0x2 + bl sub_80F7E54 + movs r0, 0x1 + bl sub_80F67A4 +_0808F8FC: + movs r0, 0 +_0808F8FE: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808F908: .4byte gUnknown_20397B4 + thumb_func_end sub_808F850 + + thumb_func_start sub_808F90C +sub_808F90C: @ 808F90C + push {lr} + sub sp, 0x4 + lsls r0, 24 + cmp r0, 0 + beq _0808F926 + movs r0, 0x2 + str r0, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x9 + bl sub_80F7CE8 + b _0808F934 +_0808F926: + movs r0, 0x2 + str r0, [sp] + movs r1, 0 + movs r2, 0x2 + movs r3, 0x9 + bl sub_80F7CE8 +_0808F934: + movs r0, 0x2 + bl sub_80F7E54 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_808F90C + + thumb_func_start sub_808F948 +sub_808F948: @ 808F948 + ldr r2, _0808F968 @ =gUnknown_20397B0 + ldr r0, [r2] + ldr r1, _0808F96C @ =0x000002c7 + adds r0, r1 + movs r3, 0x1 + strb r3, [r0] + ldr r0, [r2] + adds r1, 0x1 + adds r0, r1 + movs r1, 0x1E + strb r1, [r0] + ldr r0, [r2] + ldr r1, _0808F970 @ =0x000002c9 + adds r0, r1 + strb r3, [r0] + bx lr + .align 2, 0 +_0808F968: .4byte gUnknown_20397B0 +_0808F96C: .4byte 0x000002c7 +_0808F970: .4byte 0x000002c9 + thumb_func_end sub_808F948 + + thumb_func_start sub_808F974 +sub_808F974: @ 808F974 + push {lr} + ldr r0, _0808F994 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _0808F998 @ =0x000002c7 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _0808F98E + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + bl sub_808F90C +_0808F98E: + pop {r0} + bx r0 + .align 2, 0 +_0808F994: .4byte gUnknown_20397B0 +_0808F998: .4byte 0x000002c7 + thumb_func_end sub_808F974 + + thumb_func_start sub_808F99C +sub_808F99C: @ 808F99C + push {r4,lr} + ldr r3, _0808F9F0 @ =gUnknown_20397B0 + ldr r1, [r3] + ldr r2, _0808F9F4 @ =0x000002c7 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0808F9E8 + movs r0, 0xB2 + lsls r0, 2 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1E + bls _0808F9E8 + ldr r0, [r3] + movs r1, 0xB2 + lsls r1, 2 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r3] + movs r2, 0 + ldr r4, _0808F9F8 @ =0x000002c9 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, 0 + bne _0808F9DC + movs r2, 0x1 +_0808F9DC: + strb r2, [r1] + ldr r0, [r3] + adds r0, r4 + ldrb r0, [r0] + bl sub_808F90C +_0808F9E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808F9F0: .4byte gUnknown_20397B0 +_0808F9F4: .4byte 0x000002c7 +_0808F9F8: .4byte 0x000002c9 + thumb_func_end sub_808F99C + + thumb_func_start sub_808F9FC +sub_808F9FC: @ 808F9FC + push {r4,lr} + movs r4, 0x1 +_0808FA00: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0808FA2C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + adds r0, r4, 0 + bl sub_808FA30 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0808FA00 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808FA2C: .4byte gUnknown_2024284 + thumb_func_end sub_808F9FC + + thumb_func_start sub_808FA30 +sub_808FA30: @ 808FA30 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r7, _0808FA9C @ =gUnknown_83CE7D8 + cmp r1, 0 + beq _0808FA40 + ldr r7, _0808FAA0 @ =gUnknown_83CE7C0 +_0808FA40: + subs r0, 0x1 + lsls r1, r0, 1 + adds r1, r0 + adds r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 18 + movs r1, 0xE0 + lsls r1, 11 + adds r0, r1 + lsrs r3, r0, 16 + movs r0, 0 + ldr r1, _0808FAA4 @ =gUnknown_20397B0 + mov r12, r1 +_0808FA5C: + movs r2, 0 + adds r4, r7, 0 + adds r4, 0x8 + adds r5, r3, 0 + adds r5, 0xC + adds r6, r0, 0x1 +_0808FA68: + mov r0, r12 + ldr r1, [r0] + adds r0, r3, r2 + lsls r0, 1 + adds r1, 0xB0 + adds r1, r0 + lsls r0, r2, 1 + adds r0, r7 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x3 + bls _0808FA68 + adds r7, r4, 0 + lsls r0, r5, 16 + lsrs r3, r0, 16 + lsls r0, r6, 16 + lsrs r0, 16 + cmp r0, 0x2 + bls _0808FA5C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808FA9C: .4byte gUnknown_83CE7D8 +_0808FAA0: .4byte gUnknown_83CE7C0 +_0808FAA4: .4byte gUnknown_20397B0 + thumb_func_end sub_808FA30 + + thumb_func_start sub_808FAA8 +sub_808FAA8: @ 808FAA8 + push {lr} + sub sp, 0x4 + bl sub_808F9FC + movs r0, 0x16 + str r0, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0xC + bl sub_80F7CE8 + movs r0, 0x1 + bl sub_80F7E54 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_808FAA8 + + thumb_func_start sub_808FAD4 +sub_808FAD4: @ 808FAD4 + push {lr} + ldr r0, _0808FAF0 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0808FAF4 @ =0x000002c6 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + movs r0, 0x6 + bl sub_80722CC + bl sub_808F75C + pop {r0} + bx r0 + .align 2, 0 +_0808FAF0: .4byte gUnknown_20397B0 +_0808FAF4: .4byte 0x000002c6 + thumb_func_end sub_808FAD4 + + thumb_func_start sub_808FAF8 +sub_808FAF8: @ 808FAF8 + push {r4,r5,lr} + ldr r4, _0808FB14 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r5, _0808FB18 @ =0x000002c6 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808FB32 + cmp r0, 0x1 + bgt _0808FB1C + cmp r0, 0 + beq _0808FB22 + b _0808FB60 + .align 2, 0 +_0808FB14: .4byte gUnknown_20397B0 +_0808FB18: .4byte 0x000002c6 +_0808FB1C: + cmp r0, 0x2 + beq _0808FB5C + b _0808FB60 +_0808FB22: + bl sub_808F794 + lsls r0, 24 + cmp r0, 0 + bne _0808FB60 + bl sub_8092AE4 + b _0808FB4C +_0808FB32: + bl sub_80924A8 + lsls r0, 24 + cmp r0, 0 + bne _0808FB60 + ldr r0, [r4] + ldr r1, _0808FB58 @ =0x00000ce6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808FB4C + bl sub_808F200 +_0808FB4C: + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808FB60 + .align 2, 0 +_0808FB58: .4byte 0x00000ce6 +_0808FB5C: + movs r0, 0 + b _0808FB62 +_0808FB60: + movs r0, 0x1 +_0808FB62: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FAF8 + + thumb_func_start sub_808FB68 +sub_808FB68: @ 808FB68 + push {lr} + sub sp, 0xC + movs r1, 0xE8 + lsls r1, 5 + movs r0, 0x8 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0xD0 + bl sub_814FF2C + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + bl sub_80020BC + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_808FB68 + + thumb_func_start sub_808FBA4 +sub_808FBA4: @ 808FBA4 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_813CC90 + ldr r1, _0808FBC8 @ =gUnknown_83CEA88 + lsls r0, r6, 3 + adds r0, r1 + ldrb r0, [r0, 0x4] + cmp r0, 0x7 + bhi _0808FC7C + lsls r0, 2 + ldr r1, _0808FBCC @ =_0808FBD0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808FBC8: .4byte gUnknown_83CEA88 +_0808FBCC: .4byte _0808FBD0 + .align 2, 0 +_0808FBD0: + .4byte _0808FC7C + .4byte _0808FBF0 + .4byte _0808FBF0 + .4byte _0808FBF0 + .4byte _0808FC04 + .4byte _0808FC04 + .4byte _0808FC04 + .4byte _0808FC1C +_0808FBF0: + ldr r0, _0808FBFC @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r0, _0808FC00 @ =0x00000cea + adds r1, r0 + b _0808FC0C + .align 2, 0 +_0808FBFC: .4byte gUnknown_20397B0 +_0808FC00: .4byte 0x00000cea +_0808FC04: + ldr r0, _0808FC14 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _0808FC18 @ =0x000021d0 + adds r1, r2 +_0808FC0C: + movs r0, 0 + bl sub_813CCAC + b _0808FC7C + .align 2, 0 +_0808FC14: .4byte gUnknown_20397B0 +_0808FC18: .4byte 0x000021d0 +_0808FC1C: + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + beq _0808FC40 + ldr r0, _0808FC38 @ =gUnknown_20397B0 + ldr r4, [r0] + ldr r0, _0808FC3C @ =0x000021db + adds r4, r0 + bl sub_80961A8 + adds r1, r0, 0 + adds r0, r4, 0 + b _0808FC4C + .align 2, 0 +_0808FC38: .4byte gUnknown_20397B0 +_0808FC3C: .4byte 0x000021db +_0808FC40: + ldr r0, _0808FC54 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _0808FC58 @ =0x000021db + adds r0, r1, r2 + ldr r2, _0808FC5C @ =0x00000d61 + adds r1, r2 +_0808FC4C: + bl sub_8008D84 + adds r2, r0, 0 + b _0808FC62 + .align 2, 0 +_0808FC54: .4byte gUnknown_20397B0 +_0808FC58: .4byte 0x000021db +_0808FC5C: .4byte 0x00000d61 +_0808FC60: + adds r2, r1, 0 +_0808FC62: + subs r1, r2, 0x1 + ldrb r0, [r1] + cmp r0, 0 + beq _0808FC60 + movs r0, 0xFF + strb r0, [r2] + ldr r0, _0808FCDC @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r0, _0808FCE0 @ =0x000021db + adds r1, r0 + movs r0, 0 + bl sub_813CCAC +_0808FC7C: + ldr r5, _0808FCDC @ =gUnknown_20397B0 + ldr r0, [r5] + movs r4, 0x86 + lsls r4, 6 + adds r0, r4 + ldr r2, _0808FCE4 @ =gUnknown_83CEA88 + lsls r1, r6, 3 + adds r1, r2 + ldr r1, [r1] + bl sub_813CCC8 + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + ldr r2, [r5] + adds r2, r4 + movs r0, 0x2 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x1 + movs r3, 0 + bl sub_8002C48 + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0xD + bl sub_8150048 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80F67A4 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808FCDC: .4byte gUnknown_20397B0 +_0808FCE0: .4byte 0x000021db +_0808FCE4: .4byte gUnknown_83CEA88 + thumb_func_end sub_808FBA4 + + thumb_func_start sub_808FCE8 +sub_808FCE8: @ 808FCE8 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0808FD1C @ =gUnknown_83CEB80 + movs r1, 0xB + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0x1 + str r1, [sp, 0x8] + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + lsls r4, 24 + asrs r4, 24 + adds r0, r4, 0 + bl sub_810F948 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808FD1C: .4byte gUnknown_83CEB80 + thumb_func_end sub_808FCE8 + + thumb_func_start sub_808FD20 +sub_808FD20: @ 808FD20 + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0 + bl sub_80F67A4 + pop {r0} + bx r0 + thumb_func_end sub_808FD20 + + thumb_func_start sub_808FD34 +sub_808FD34: @ 808FD34 + push {lr} + bl sub_8094DA8 + movs r0, 0x12 + bl sub_8094DEC + movs r0, 0x13 + bl sub_8094DEC + movs r0, 0x14 + bl sub_8094DEC + movs r0, 0x15 + bl sub_8094DEC + bl sub_8094E88 + pop {r0} + bx r0 + thumb_func_end sub_808FD34 + + thumb_func_start sub_808FD5C +sub_808FD5C: @ 808FD5C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_8094DA8 + cmp r4, 0x1 + beq _0808FD9A + cmp r4, 0x1 + bgt _0808FD76 + cmp r4, 0 + beq _0808FD80 + b _0808FDE6 +_0808FD76: + cmp r5, 0x2 + beq _0808FDB4 + cmp r5, 0x3 + beq _0808FDCE + b _0808FDE6 +_0808FD80: + movs r0, 0x16 + bl sub_8094DEC + movs r0, 0x17 + bl sub_8094DEC + movs r0, 0x18 + bl sub_8094DEC + movs r0, 0x19 + bl sub_8094DEC + b _0808FDE6 +_0808FD9A: + movs r0, 0x1A + bl sub_8094DEC + movs r0, 0x1B + bl sub_8094DEC + movs r0, 0x1C + bl sub_8094DEC + movs r0, 0x1D + bl sub_8094DEC + b _0808FDE6 +_0808FDB4: + movs r0, 0x1E + bl sub_8094DEC + movs r0, 0x1F + bl sub_8094DEC + movs r0, 0x20 + bl sub_8094DEC + movs r0, 0x21 + bl sub_8094DEC + b _0808FDE6 +_0808FDCE: + movs r0, 0x22 + bl sub_8094DEC + movs r0, 0x23 + bl sub_8094DEC + movs r0, 0x24 + bl sub_8094DEC + movs r0, 0x25 + bl sub_8094DEC +_0808FDE6: + bl sub_8094E88 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808FD5C + + thumb_func_start sub_808FDF0 +sub_808FDF0: @ 808FDF0 + ldr r0, _0808FDF8 @ =gUnknown_20397B5 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0808FDF8: .4byte gUnknown_20397B5 + thumb_func_end sub_808FDF0 + + thumb_func_start sub_808FDFC +sub_808FDFC: @ 808FDFC + push {lr} + bl sub_80939AC + lsls r0, 24 + cmp r0, 0 + bne _0808FE38 + ldr r0, _0808FE24 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808FE28 + bl sub_8094CC8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1 + bl sub_8095C84 + b _0808FE38 + .align 2, 0 +_0808FE24: .4byte gUnknown_20397B4 +_0808FE28: + bl sub_8094CC8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_8095C84 +_0808FE38: + ldr r1, _0808FE50 @ =gUnknown_20397BA + ldrh r0, [r1] + cmp r0, 0 + beq _0808FE4A + bl sub_8095E2C + movs r0, 0x3 + bl sub_8094D14 +_0808FE4A: + pop {r0} + bx r0 + .align 2, 0 +_0808FE50: .4byte gUnknown_20397BA + thumb_func_end sub_808FDFC + + thumb_func_start sub_808FE54 +sub_808FE54: @ 808FE54 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8094D34 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0808FE90 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCE + lsls r1, 4 + adds r0, r1 + ldrh r7, [r0] + ldr r0, _0808FE94 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808FE9C + movs r6, 0xE + bl sub_8094CC8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _0808FE98 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + b _0808FEB2 + .align 2, 0 +_0808FE90: .4byte gUnknown_20397B0 +_0808FE94: .4byte gUnknown_20397B4 +_0808FE98: .4byte gUnknown_2024284 +_0808FE9C: + bl sub_808B9F4 + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_8094CC8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x41 + bl sub_808BAA0 +_0808FEB2: + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _0808FECC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _0808FED0 @ =0x00002228 + adds r1, r0, r2 + cmp r5, 0x1 + beq _0808FF08 + cmp r5, 0x1 + bgt _0808FED4 + cmp r5, 0 + beq _0808FEDE + b _0808FF6A + .align 2, 0 +_0808FECC: .4byte gUnknown_20397B0 +_0808FED0: .4byte 0x00002228 +_0808FED4: + cmp r5, 0x2 + beq _0808FF3E + cmp r5, 0x3 + beq _0808FF58 + b _0808FF6A +_0808FEDE: + ldr r0, _0808FEF0 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808FEF4 + cmp r4, 0xE + beq _0808FF6A +_0808FEEA: + movs r2, 0x16 + b _0808FF02 + .align 2, 0 +_0808FEF0: .4byte gUnknown_20397B4 +_0808FEF4: + cmp r4, 0xE + beq _0808FEEA + movs r0, 0x15 + cmp r4, r6 + beq _0808FF00 + movs r0, 0x14 +_0808FF00: + adds r2, r0, 0 +_0808FF02: + strh r7, [r1] + strh r3, [r1, 0x2] + b _0808FF60 +_0808FF08: + movs r0, 0 + strh r7, [r1] + strh r0, [r1, 0x2] + strb r4, [r1, 0x4] + movs r0, 0xFF + strb r0, [r1, 0x5] + ldr r0, _0808FF24 @ =gUnknown_20397B4 + ldrb r0, [r0] + cmp r0, 0 + beq _0808FF28 + cmp r4, 0xE + beq _0808FF6A + movs r2, 0x19 + b _0808FF64 + .align 2, 0 +_0808FF24: .4byte gUnknown_20397B4 +_0808FF28: + cmp r4, 0xE + bne _0808FF32 + movs r2, 0x1A + strb r6, [r1, 0x4] + b _0808FF64 +_0808FF32: + cmp r4, r6 + beq _0808FF3A + movs r2, 0x17 + b _0808FF62 +_0808FF3A: + movs r2, 0x18 + b _0808FF64 +_0808FF3E: + movs r2, 0x1A + movs r0, 0 + strh r7, [r1] + strh r0, [r1, 0x2] + ldr r0, _0808FF54 @ =gUnknown_20397B6 + ldrb r0, [r0] + strb r0, [r1, 0x4] + movs r0, 0xFF + strb r0, [r1, 0x5] + b _0808FF64 + .align 2, 0 +_0808FF54: .4byte gUnknown_20397B6 +_0808FF58: + movs r2, 0x1B + movs r0, 0 + strh r0, [r1] + strh r0, [r1, 0x2] +_0808FF60: + strb r4, [r1, 0x4] +_0808FF62: + strb r6, [r1, 0x5] +_0808FF64: + adds r0, r2, 0 + bl sub_8113550 +_0808FF6A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808FE54 + + thumb_func_start sub_808FF70 +sub_808FF70: @ 808FF70 + push {r4,lr} + ldr r4, _0808FFA0 @ =gUnknown_20397B8 + bl sub_808B9F4 + ldrb r1, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + beq _0808FF9A + ldr r0, _0808FFA4 @ =0x00000843 + bl sub_806E6A8 + ldr r4, _0808FFA8 @ =0x00004037 + bl sub_808B9F4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_806E584 +_0808FF9A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808FFA0: .4byte gUnknown_20397B8 +_0808FFA4: .4byte 0x00000843 +_0808FFA8: .4byte 0x00004037 + thumb_func_end sub_808FF70 + + thumb_func_start sub_808FFAC +sub_808FFAC: @ 808FFAC + push {r4-r6,lr} + bl sub_809707C + movs r2, 0 + ldr r3, _0809003C @ =gUnknown_20397B0 + ldr r5, _08090040 @ =0x00000b04 + movs r4, 0 + adds r6, r3, 0 +_0808FFBC: + ldr r0, [r3] + lsls r1, r2, 1 + adds r0, r5 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x27 + bls _0808FFBC + movs r2, 0 + ldr r5, _0809003C @ =gUnknown_20397B0 + ldr r4, _08090044 @ =0x00000b54 + movs r3, 0 +_0808FFD8: + ldr r0, [r5] + lsls r1, r2, 1 + adds r0, r4 + adds r0, r1 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x27 + bls _0808FFD8 + movs r2, 0 + ldr r5, _0809003C @ =gUnknown_20397B0 + ldr r4, _08090048 @ =0x00000a6c + movs r3, 0 +_0808FFF4: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + str r3, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x5 + bls _0808FFF4 + movs r2, 0 + ldr r5, _0809003C @ =gUnknown_20397B0 + ldr r4, _0809004C @ =0x00000a84 + movs r3, 0 +_08090010: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + str r3, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x1D + bls _08090010 + ldr r0, [r6] + ldr r2, _08090050 @ =0x00000a68 + adds r1, r0, r2 + movs r2, 0 + str r2, [r1] + ldr r1, _08090054 @ =0x0000078c + adds r0, r1 + strh r2, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809003C: .4byte gUnknown_20397B0 +_08090040: .4byte 0x00000b04 +_08090044: .4byte 0x00000b54 +_08090048: .4byte 0x00000a6c +_0809004C: .4byte 0x00000a84 +_08090050: .4byte 0x00000a68 +_08090054: .4byte 0x0000078c + thumb_func_end sub_808FFAC + + thumb_func_start sub_8090058 +sub_8090058: @ 8090058 + push {lr} + bl sub_80939F4 + lsls r0, 24 + movs r1, 0x1 + cmp r0, 0 + beq _08090068 + movs r1, 0x2 +_08090068: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8090058 + + thumb_func_start sub_8090070 +sub_8090070: @ 8090070 + push {r4-r6,lr} + sub sp, 0x8 + ldr r5, _080900C4 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r4, _080900C8 @ =0x000020a0 + adds r0, r4 + movs r1, 0 + bl sub_803FBE8 + adds r6, r0, 0 + ldr r0, [r5] + adds r0, r4 + movs r1, 0x41 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8090058 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0x7 + str r0, [sp, 0x4] + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0 + bl sub_80912E0 + ldr r1, [r5] + ldr r2, _080900CC @ =0x00000a68 + adds r1, r2 + str r0, [r1] + ldr r1, _080900D0 @ =sub_80911B0 + str r1, [r0, 0x1C] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080900C4: .4byte gUnknown_20397B0 +_080900C8: .4byte 0x000020a0 +_080900CC: .4byte 0x00000a68 +_080900D0: .4byte sub_80911B0 + thumb_func_end sub_8090070 + + thumb_func_start sub_80900D4 +sub_80900D4: @ 80900D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0 + mov r8, r0 + movs r6, 0 + movs r7, 0 +_080900EE: + movs r5, 0 + adds r1, r7, 0x1 + mov r10, r1 +_080900F4: + mov r0, r9 + adds r1, r6, 0 + movs r2, 0x41 + bl sub_808BA18 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _0809015C + mov r0, r9 + adds r1, r6, 0 + movs r2, 0 + bl sub_808BA18 + adds r1, r0, 0 + lsls r2, r5, 1 + adds r2, r5 + lsls r2, 19 + movs r3, 0xC8 + lsls r3, 15 + adds r2, r3 + asrs r2, 16 + lsls r3, r7, 1 + adds r3, r7 + lsls r3, 19 + movs r0, 0xB0 + lsls r0, 14 + adds r3, r0 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x13 + subs r0, r5 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + adds r0, r4, 0 + asrs r3, 16 + bl sub_80912E0 + ldr r1, _08090154 @ =gUnknown_20397B0 + ldr r1, [r1] + mov r3, r8 + lsls r2, r3, 2 + ldr r3, _08090158 @ =0x00000a84 + adds r1, r3 + adds r1, r2 + str r0, [r1] + b _0809016C + .align 2, 0 +_08090154: .4byte gUnknown_20397B0 +_08090158: .4byte 0x00000a84 +_0809015C: + ldr r0, _080901E4 @ =gUnknown_20397B0 + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, 2 + ldr r3, _080901E8 @ =0x00000a84 + adds r0, r3 + adds r0, r1 + str r4, [r0] +_0809016C: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + mov r0, r8 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x5 + bls _080900F4 + mov r1, r10 + lsls r0, r1, 16 + lsrs r7, r0, 16 + cmp r7, 0x4 + bls _080900EE + ldr r0, _080901E4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _080901D2 + movs r6, 0 + movs r2, 0xD + negs r2, r2 + adds r4, r2, 0 +_080901A2: + mov r0, r9 + adds r1, r6, 0 + movs r2, 0xC + bl sub_808BA18 + cmp r0, 0 + bne _080901C8 + ldr r0, _080901E4 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r3, _080901E8 @ =0x00000a84 + adds r0, r3 + adds r0, r1 + ldr r2, [r0] + ldrb r0, [r2, 0x1] + ands r0, r4 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x1] +_080901C8: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1D + bls _080901A2 +_080901D2: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080901E4: .4byte gUnknown_20397B0 +_080901E8: .4byte 0x00000a84 + thumb_func_end sub_80900D4 + + thumb_func_start sub_80901EC +sub_80901EC: @ 80901EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r7, 0 + movs r1, 0x41 + bl sub_808BAA0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + cmp r0, 0 + beq _08090286 + adds r0, r7, 0 + movs r1, 0x6 + bl __umodsi3 + adds r6, r0, 0 + lsls r0, r6, 24 + lsrs r0, 24 + lsls r5, r0, 1 + adds r5, r0 + lsls r5, 19 + movs r0, 0xC8 + lsls r0, 15 + adds r5, r0 + lsrs r5, 16 + adds r0, r7, 0 + movs r1, 0x6 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 19 + movs r0, 0xB0 + lsls r0, 14 + adds r4, r0 + lsrs r4, 16 + adds r0, r7, 0 + movs r1, 0 + bl sub_808BAA0 + adds r1, r0, 0 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x13 + subs r0, r6 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + mov r0, r8 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_80912E0 + adds r3, r0, 0 + ldr r0, _08090294 @ =gUnknown_20397B0 + ldr r2, [r0] + lsls r1, r7, 2 + ldr r4, _08090298 @ =0x00000a84 + adds r0, r2, r4 + adds r0, r1 + str r3, [r0] + ldrb r0, [r2, 0x1] + cmp r0, 0x3 + bne _08090286 + ldrb r0, [r3, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r3, 0x1] +_08090286: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08090294: .4byte gUnknown_20397B0 +_08090298: .4byte 0x00000a84 + thumb_func_end sub_80901EC + + thumb_func_start sub_809029C +sub_809029C: @ 809029C + push {r4-r7,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r7, _080902D4 @ =gUnknown_20397B0 + ldr r6, _080902D8 @ =0x00000a84 + movs r5, 0x1 + ldr r4, _080902DC @ =sub_8090324 +_080902AC: + ldr r0, [r7] + lsls r1, r2, 2 + adds r0, r6 + adds r1, r0, r1 + ldr r0, [r1] + cmp r0, 0 + beq _080902C4 + strh r3, [r0, 0x32] + ldr r0, [r1] + strh r5, [r0, 0x36] + ldr r0, [r1] + str r4, [r0, 0x1C] +_080902C4: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x1D + bls _080902AC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080902D4: .4byte gUnknown_20397B0 +_080902D8: .4byte 0x00000a84 +_080902DC: .4byte sub_8090324 + thumb_func_end sub_809029C + + thumb_func_start sub_80902E0 +sub_80902E0: @ 80902E0 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x30] + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080902FC + subs r0, r1, 0x1 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] + b _08090312 +_080902FC: + ldr r0, _08090318 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r3, _0809031C @ =0x00000c62 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrh r0, [r2, 0x34] + strh r0, [r2, 0x20] + ldr r0, _08090320 @ =nullsub_8 + str r0, [r2, 0x1C] +_08090312: + pop {r0} + bx r0 + .align 2, 0 +_08090318: .4byte gUnknown_20397B0 +_0809031C: .4byte 0x00000c62 +_08090320: .4byte nullsub_8 + thumb_func_end sub_80902E0 + + thumb_func_start sub_8090324 +sub_8090324: @ 8090324 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x36] + movs r3, 0x36 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _08090338 + subs r0, r1, 0x1 + strh r0, [r2, 0x36] + b _08090354 +_08090338: + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x38] + subs r0, 0x45 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB6 + bls _08090354 + ldr r0, _08090358 @ =nullsub_8 + str r0, [r2, 0x1C] +_08090354: + pop {r0} + bx r0 + .align 2, 0 +_08090358: .4byte nullsub_8 + thumb_func_end sub_8090324 + + thumb_func_start sub_809035C +sub_809035C: @ 809035C + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r7, _0809039C @ =gUnknown_20397B0 +_08090366: + ldr r0, [r7] + lsls r4, r5, 2 + ldr r1, _080903A0 @ =0x00000a84 + adds r0, r1 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _08090386 + bl sub_80913C4 + ldr r0, [r7] + ldr r1, _080903A0 @ =0x00000a84 + adds r0, r1 + adds r0, r4 + movs r1, 0 + str r1, [r0] +_08090386: + adds r0, r5, 0x6 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x4 + bls _08090366 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809039C: .4byte gUnknown_20397B0 +_080903A0: .4byte 0x00000a84 + thumb_func_end sub_809035C + + thumb_func_start sub_80903A4 +sub_80903A4: @ 80903A4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x8] + lsls r2, 16 + movs r1, 0x2C + mov r8, r1 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 19 + movs r3, 0xC8 + lsls r3, 15 + adds r1, r3 + lsrs r1, 16 + str r1, [sp, 0x10] + ldr r1, [sp, 0x8] + adds r1, 0x1 + lsrs r6, r2, 16 + str r6, [sp, 0xC] + asrs r2, 16 + muls r1, r2 + ldr r2, [sp, 0x10] + subs r1, r2, r1 + lsls r1, 16 + lsrs r2, r1, 16 + movs r1, 0x13 + subs r1, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x14] + movs r3, 0 + mov r9, r3 + adds r5, r0, 0 + ldr r1, _08090488 @ =gUnknown_20397B0 + ldr r0, [r1] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + beq _08090498 + movs r7, 0x4 + lsls r2, 16 + mov r10, r2 +_08090404: + ldr r6, _08090488 @ =gUnknown_20397B0 + ldr r2, [r6] + lsls r0, r5, 1 + ldr r3, _0809048C @ =0x00000ba4 + adds r1, r2, r3 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _08090470 + lsls r4, r5, 2 + movs r6, 0xBE + lsls r6, 4 + adds r1, r2, r6 + adds r1, r4 + ldr r1, [r1] + mov r2, r8 + lsls r3, r2, 16 + asrs r3, 16 + movs r2, 0x2 + str r2, [sp] + ldr r6, [sp, 0x14] + str r6, [sp, 0x4] + mov r6, r10 + asrs r2, r6, 16 + bl sub_80912E0 + adds r2, r0, 0 + ldr r1, _08090488 @ =gUnknown_20397B0 + ldr r0, [r1] + ldr r3, _08090490 @ =0x00000a84 + adds r0, r3 + adds r1, r0, r4 + str r2, [r1] + cmp r2, 0 + beq _08090470 + mov r6, sp + ldrh r6, [r6, 0x8] + strh r6, [r2, 0x30] + ldr r0, [r1] + mov r2, sp + ldrh r2, [r2, 0xC] + strh r2, [r0, 0x32] + ldr r0, [r1] + mov r3, sp + ldrh r3, [r3, 0x10] + strh r3, [r0, 0x34] + ldr r1, [r1] + ldr r0, _08090494 @ =sub_80902E0 + str r0, [r1, 0x1C] + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08090470: + adds r0, r5, 0x6 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + adds r0, 0x18 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + subs r7, 0x1 + cmp r7, 0 + bge _08090404 + b _08090550 + .align 2, 0 +_08090488: .4byte gUnknown_20397B0 +_0809048C: .4byte 0x00000ba4 +_08090490: .4byte 0x00000a84 +_08090494: .4byte sub_80902E0 +_08090498: + mov r10, r1 + movs r7, 0x4 + lsls r2, 16 + str r2, [sp, 0x18] +_080904A0: + mov r6, r10 + ldr r2, [r6] + lsls r0, r5, 1 + ldr r3, _08090564 @ =0x00000ba4 + adds r1, r2, r3 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _0809053A + lsls r4, r5, 2 + movs r6, 0xBE + lsls r6, 4 + adds r1, r2, r6 + adds r1, r4 + ldr r1, [r1] + mov r2, r8 + lsls r3, r2, 16 + asrs r3, 16 + movs r2, 0x2 + str r2, [sp] + ldr r6, [sp, 0x14] + str r6, [sp, 0x4] + ldr r6, [sp, 0x18] + asrs r2, r6, 16 + bl sub_80912E0 + adds r2, r0, 0 + mov r0, r10 + ldr r3, [r0] + ldr r1, _08090568 @ =0x00000a84 + adds r0, r3, r1 + adds r1, r0, r4 + str r2, [r1] + cmp r2, 0 + beq _0809053A + mov r6, sp + ldrh r6, [r6, 0x8] + strh r6, [r2, 0x30] + ldr r0, [r1] + mov r2, sp + ldrh r2, [r2, 0xC] + strh r2, [r0, 0x32] + ldr r0, [r1] + mov r6, sp + ldrh r6, [r6, 0x10] + strh r6, [r0, 0x34] + ldr r1, [r1] + ldr r0, _0809056C @ =sub_80902E0 + str r0, [r1, 0x1C] + ldr r1, _08090570 @ =0x00000c58 + adds r0, r3, r1 + ldrb r0, [r0] + adds r1, r5, 0 + movs r2, 0xC + bl sub_808BA18 + cmp r0, 0 + bne _08090530 + mov r2, r10 + ldr r0, [r2] + ldr r3, _08090568 @ =0x00000a84 + adds r0, r3 + adds r0, r4 + ldr r2, [r0] + ldrb r1, [r2, 0x1] + movs r6, 0xD + negs r6, r6 + adds r0, r6, 0 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r2, 0x1] +_08090530: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0809053A: + adds r0, r5, 0x6 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + adds r0, 0x18 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + subs r7, 0x1 + cmp r7, 0 + bge _080904A0 +_08090550: + mov r0, r9 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08090564: .4byte 0x00000ba4 +_08090568: .4byte 0x00000a84 +_0809056C: .4byte sub_80902E0 +_08090570: .4byte 0x00000c58 + thumb_func_end sub_80903A4 + + thumb_func_start sub_8090574 +sub_8090574: @ 8090574 + push {r4-r7,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _080905D0 @ =gUnknown_20397B0 + ldr r1, [r6] + ldr r2, _080905D4 @ =0x00000c66 + adds r1, r2 + movs r5, 0 + strb r5, [r1] + ldr r1, [r6] + ldr r3, _080905D8 @ =0x00000c67 + adds r1, r3 + strb r0, [r1] + ldr r1, [r6] + ldr r7, _080905DC @ =0x00000c65 + adds r1, r7 + strb r4, [r1] + ldr r3, [r6] + ldr r1, _080905E0 @ =0x00000c5c + adds r2, r3, r1 + movs r1, 0x20 + strh r1, [r2] + lsls r4, 24 + asrs r4, 24 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 1 + negs r1, r1 + subs r7, 0x5 + adds r2, r3, r7 + strh r1, [r2] + ldr r1, _080905E4 @ =0x00000c62 + adds r3, r1 + strh r5, [r3] + bl sub_8090794 + cmp r4, 0 + ble _080905EC + ldr r0, [r6] + ldr r2, _080905E8 @ =0x00000c64 + adds r0, r2 + movs r1, 0 + b _080905F4 + .align 2, 0 +_080905D0: .4byte gUnknown_20397B0 +_080905D4: .4byte 0x00000c66 +_080905D8: .4byte 0x00000c67 +_080905DC: .4byte 0x00000c65 +_080905E0: .4byte 0x00000c5c +_080905E4: .4byte 0x00000c62 +_080905E8: .4byte 0x00000c64 +_080905EC: + ldr r0, [r6] + ldr r3, _08090620 @ =0x00000c64 + adds r0, r3 + movs r1, 0x5 +_080905F4: + strb r1, [r0] + ldr r0, _08090624 @ =gUnknown_20397B0 + ldr r2, [r0] + ldr r7, _08090620 @ =0x00000c64 + adds r0, r2, r7 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, 0x64 + ldr r3, _08090628 @ =0x00000c5e + adds r1, r2, r3 + strh r0, [r1] + subs r7, 0x4 + adds r2, r7 + movs r1, 0 + ldrsh r0, [r2, r1] + bl sub_809029C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08090620: .4byte 0x00000c64 +_08090624: .4byte gUnknown_20397B0 +_08090628: .4byte 0x00000c5e + thumb_func_end sub_8090574 + + thumb_func_start sub_809062C +sub_809062C: @ 809062C + push {r4-r6,lr} + ldr r5, _08090658 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r4, _0809065C @ =0x00000c5c + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, 0 + beq _08090640 + subs r0, 0x1 + strh r0, [r1] +_08090640: + ldr r3, [r5] + ldr r6, _08090660 @ =0x00000c66 + adds r0, r3, r6 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080906C4 + cmp r0, 0x1 + bgt _08090664 + cmp r0, 0 + beq _0809066C + b _08090782 + .align 2, 0 +_08090658: .4byte gUnknown_20397B0 +_0809065C: .4byte 0x00000c5c +_08090660: .4byte 0x00000c66 +_08090664: + cmp r0, 0x2 + bne _0809066A + b _08090770 +_0809066A: + b _08090782 +_0809066C: + ldr r0, _080906B8 @ =0x00000c5e + adds r1, r3, r0 + movs r2, 0xC6 + lsls r2, 4 + adds r0, r3, r2 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + subs r0, 0x41 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBA + bhi _0809068A + b _0809078C +_0809068A: + ldr r1, _080906BC @ =0x00000c64 + adds r0, r3, r1 + ldrb r0, [r0] + bl sub_809035C + ldr r2, [r5] + ldr r0, _080906B8 @ =0x00000c5e + adds r3, r2, r0 + ldr r1, _080906C0 @ =0x00000c65 + adds r0, r2, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldrh r1, [r3] + adds r0, r1 + strh r0, [r3] + adds r2, r6 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + b _0809078C + .align 2, 0 +_080906B8: .4byte 0x00000c5e +_080906BC: .4byte 0x00000c64 +_080906C0: .4byte 0x00000c65 +_080906C4: + ldr r2, _08090728 @ =0x00000c5e + adds r1, r3, r2 + movs r6, 0xC6 + lsls r6, 4 + adds r2, r3, r6 + ldrh r0, [r2] + ldrh r6, [r1] + adds r0, r6 + strh r0, [r1] + ldr r6, _0809072C @ =0x00000c64 + adds r0, r3, r6 + ldrb r0, [r0] + adds r1, r3, r4 + ldrh r1, [r1] + movs r3, 0 + ldrsh r2, [r2, r3] + bl sub_80903A4 + ldr r2, [r5] + ldr r3, _08090730 @ =0x00000c62 + adds r1, r2, r3 + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r1] + adds r0, r3 + strh r0, [r1] + ldr r1, _08090734 @ =0x00000c65 + adds r0, r2, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + cmp r1, 0 + ble _0809070C + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, 0x5 + beq _08090718 +_0809070C: + cmp r1, 0 + bge _08090740 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, 0 + bne _08090740 +_08090718: + ldr r0, _08090738 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _0809073C @ =0x00000c66 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0809078C + .align 2, 0 +_08090728: .4byte 0x00000c5e +_0809072C: .4byte 0x00000c64 +_08090730: .4byte 0x00000c62 +_08090734: .4byte 0x00000c65 +_08090738: .4byte gUnknown_20397B0 +_0809073C: .4byte 0x00000c66 +_08090740: + ldr r3, _08090760 @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r6, _08090764 @ =0x00000c64 + adds r1, r0, r6 + ldr r2, _08090768 @ =0x00000c65 + adds r0, r2 + ldrb r0, [r0] + ldrb r6, [r1] + adds r0, r6 + movs r2, 0 + strb r0, [r1] + ldr r0, [r3] + ldr r1, _0809076C @ =0x00000c66 + adds r0, r1 + strb r2, [r0] + b _0809078C + .align 2, 0 +_08090760: .4byte gUnknown_20397B0 +_08090764: .4byte 0x00000c64 +_08090768: .4byte 0x00000c65 +_0809076C: .4byte 0x00000c66 +_08090770: + ldr r2, _08090788 @ =0x00000c62 + adds r0, r3, r2 + ldrh r0, [r0] + cmp r0, 0 + bne _0809078C + adds r1, r3, r4 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08090782: + movs r0, 0 + b _0809078E + .align 2, 0 +_08090788: .4byte 0x00000c62 +_0809078C: + movs r0, 0x1 +_0809078E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809062C + + thumb_func_start sub_8090794 +sub_8090794: @ 8090794 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + movs r0, 0 + ldr r1, _08090810 @ =gUnknown_20397B0 + mov r9, r1 +_080907A8: + adds r0, 0x1 + mov r8, r0 + movs r7, 0x5 +_080907AE: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0x41 + bl sub_808BA18 + mov r2, r9 + ldr r1, [r2] + lsls r2, r5, 1 + ldr r3, _08090814 @ =0x00000ba4 + adds r1, r3 + adds r1, r2 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _080907EA + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_808BA18 + mov r2, r9 + ldr r1, [r2] + lsls r2, r5, 2 + movs r3, 0xBE + lsls r3, 4 + adds r1, r3 + adds r1, r2 + str r0, [r1] +_080907EA: + adds r5, 0x1 + subs r7, 0x1 + cmp r7, 0 + bge _080907AE + mov r0, r8 + cmp r0, 0x4 + ble _080907A8 + ldr r0, _08090810 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08090818 @ =0x00000c58 + adds r0, r1 + strb r6, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08090810: .4byte gUnknown_20397B0 +_08090814: .4byte 0x00000ba4 +_08090818: .4byte 0x00000c58 + thumb_func_end sub_8090794 + + thumb_func_start sub_809081C +sub_809081C: @ 809081C + push {r4,r5,lr} + lsls r0, 24 + ldr r5, _08090848 @ =gUnknown_20397B0 + ldr r1, [r5] + lsrs r4, r0, 22 + ldr r0, _0809084C @ =0x00000a84 + adds r1, r0 + adds r1, r4 + ldr r0, [r1] + cmp r0, 0 + beq _08090842 + bl sub_80913C4 + ldr r0, [r5] + ldr r1, _0809084C @ =0x00000a84 + adds r0, r1 + adds r0, r4 + movs r1, 0 + str r1, [r0] +_08090842: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08090848: .4byte gUnknown_20397B0 +_0809084C: .4byte 0x00000a84 + thumb_func_end sub_809081C + + thumb_func_start sub_8090850 +sub_8090850: @ 8090850 + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + ldr r1, _08090884 @ =gUnknown_20397B0 + ldr r1, [r1] + lsrs r0, 22 + ldr r3, _08090888 @ =0x00000a84 + adds r1, r3 + adds r1, r0 + ldr r3, [r1] + cmp r3, 0 + beq _0809087E + movs r0, 0x3 + adds r1, r2, 0 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] +_0809087E: + pop {r0} + bx r0 + .align 2, 0 +_08090884: .4byte gUnknown_20397B0 +_08090888: .4byte 0x00000a84 + thumb_func_end sub_8090850 + + thumb_func_start sub_809088C +sub_809088C: @ 809088C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, _0809092C @ =gUnknown_2024284 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r1, r0, 0 + movs r0, 0x1 + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r2, 0x68 + movs r3, 0x40 + bl sub_80912E0 + ldr r1, _08090930 @ =gUnknown_20397B0 + ldr r1, [r1] + ldr r2, _08090934 @ =0x00000a6c + adds r1, r2 + str r0, [r1] + movs r7, 0x1 + movs r6, 0x1 +_080908D2: + movs r0, 0x64 + adds r1, r6, 0 + muls r1, r0 + ldr r0, _0809092C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + beq _08090938 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + adds r1, r0, 0 + subs r0, r6, 0x1 + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 19 + movs r0, 0x80 + lsls r0, 13 + adds r3, r0 + asrs r3, 16 + movs r0, 0x1 + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r2, 0x98 + bl sub_80912E0 + ldr r1, _08090930 @ =gUnknown_20397B0 + ldr r1, [r1] + lsls r2, r6, 2 + ldr r3, _08090934 @ =0x00000a6c + adds r1, r3 + adds r1, r2 + str r0, [r1] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + b _08090946 + .align 2, 0 +_0809092C: .4byte gUnknown_2024284 +_08090930: .4byte gUnknown_20397B0 +_08090934: .4byte 0x00000a6c +_08090938: + ldr r0, _080909E8 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _080909EC @ =0x00000a6c + adds r0, r2 + adds r0, r1 + str r5, [r0] +_08090946: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _080908D2 + ldr r3, _080909E8 @ =gUnknown_20397B0 + mov r0, r8 + cmp r0, 0 + bne _0809098A + movs r6, 0 + cmp r6, r7 + bcs _0809098A + mov r12, r3 + ldr r5, _080909EC @ =0x00000a6c + movs r4, 0x4 +_08090964: + mov r2, r12 + ldr r1, [r2] + lsls r0, r6, 2 + adds r1, r5 + adds r1, r0 + ldr r2, [r1] + ldrh r0, [r2, 0x22] + subs r0, 0xA0 + strh r0, [r2, 0x22] + ldr r1, [r1] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, r7 + bcc _08090964 +_0809098A: + ldr r0, [r3] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _080909DA + movs r6, 0 + adds r7, r3, 0 + ldr r5, _080909EC @ =0x00000a6c +_08090998: + ldr r0, [r7] + lsls r4, r6, 2 + adds r0, r5 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _080909D0 + movs r0, 0x64 + muls r0, r6 + ldr r1, _080909F0 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + bl sub_803FBE8 + cmp r0, 0 + bne _080909D0 + ldr r0, [r7] + adds r0, r5 + adds r0, r4 + ldr r2, [r0] + ldrb r1, [r2, 0x1] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r2, 0x1] +_080909D0: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _08090998 +_080909DA: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080909E8: .4byte gUnknown_20397B0 +_080909EC: .4byte 0x00000a6c +_080909F0: .4byte gUnknown_2024284 + thumb_func_end sub_809088C + + thumb_func_start sub_80909F4 +sub_80909F4: @ 80909F4 + push {r4-r7,lr} + sub sp, 0x4 + ldr r0, _08090A54 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _08090A58 @ =0x00000c5a + adds r1, r2 + movs r2, 0 + strb r2, [r1] + movs r5, 0 + movs r6, 0 + adds r3, r0, 0 + ldr r7, _08090A5C @ =0x00000a6c +_08090A0C: + ldr r0, [r3] + lsls r4, r5, 2 + adds r0, r7 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _08090A42 + cmp r5, r6 + beq _08090A3C + adds r1, r6, 0 + str r3, [sp] + bl sub_8090A74 + ldr r3, [sp] + ldr r2, [r3] + adds r0, r2, r7 + adds r0, r4 + movs r1, 0 + str r1, [r0] + ldr r0, _08090A58 @ =0x00000c5a + adds r2, r0 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] +_08090A3C: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 +_08090A42: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x5 + bls _08090A0C + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08090A54: .4byte gUnknown_20397B0 +_08090A58: .4byte 0x00000c5a +_08090A5C: .4byte 0x00000a6c + thumb_func_end sub_80909F4 + + thumb_func_start sub_8090A60 +sub_8090A60: @ 8090A60 + ldr r0, _08090A6C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08090A70 @ =0x00000c5a + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08090A6C: .4byte gUnknown_20397B0 +_08090A70: .4byte 0x00000c5a + thumb_func_end sub_8090A60 + + thumb_func_start sub_8090A74 +sub_8090A74: @ 8090A74 + push {r4,lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + strh r1, [r2, 0x30] + cmp r1, 0 + bne _08090A88 + movs r3, 0x68 + movs r4, 0x40 + b _08090A9A +_08090A88: + movs r3, 0x98 + subs r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 19 + movs r1, 0x80 + lsls r1, 13 + adds r0, r1 + lsrs r4, r0, 16 +_08090A9A: + ldrh r0, [r2, 0x20] + lsls r0, 3 + strh r0, [r2, 0x32] + ldrh r0, [r2, 0x22] + lsls r0, 3 + strh r0, [r2, 0x34] + lsls r1, r3, 3 + movs r3, 0x32 + ldrsh r0, [r2, r3] + subs r0, r1, r0 + cmp r0, 0 + bge _08090AB4 + adds r0, 0x7 +_08090AB4: + asrs r0, 3 + strh r0, [r2, 0x36] + lsls r0, r4, 16 + asrs r0, 13 + movs r3, 0x34 + ldrsh r1, [r2, r3] + subs r0, r1 + cmp r0, 0 + bge _08090AC8 + adds r0, 0x7 +_08090AC8: + asrs r0, 3 + strh r0, [r2, 0x38] + movs r0, 0x8 + strh r0, [r2, 0x3A] + ldr r0, _08090ADC @ =sub_8090AE0 + str r0, [r2, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08090ADC: .4byte sub_8090AE0 + thumb_func_end sub_8090A74 + + thumb_func_start sub_8090AE0 +sub_8090AE0: @ 8090AE0 + push {r4,lr} + adds r3, r0, 0 + ldrh r2, [r3, 0x3A] + movs r1, 0x3A + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _08090B10 + ldrh r0, [r3, 0x36] + ldrh r4, [r3, 0x32] + adds r0, r4 + strh r0, [r3, 0x32] + ldrh r1, [r3, 0x38] + ldrh r4, [r3, 0x34] + adds r1, r4 + strh r1, [r3, 0x34] + lsls r0, 16 + asrs r0, 19 + strh r0, [r3, 0x20] + lsls r1, 16 + asrs r1, 19 + strh r1, [r3, 0x22] + subs r0, r2, 0x1 + strh r0, [r3, 0x3A] + b _08090B54 +_08090B10: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _08090B20 + movs r0, 0x68 + strh r0, [r3, 0x20] + movs r0, 0x40 + b _08090B32 +_08090B20: + movs r0, 0x98 + strh r0, [r3, 0x20] + movs r4, 0x30 + ldrsh r1, [r3, r4] + subs r1, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, 0x10 +_08090B32: + strh r0, [r3, 0x22] + ldr r0, _08090B5C @ =nullsub_8 + str r0, [r3, 0x1C] + ldr r0, _08090B60 @ =gUnknown_20397B0 + ldr r2, [r0] + movs r0, 0x30 + ldrsh r1, [r3, r0] + lsls r1, 2 + ldr r4, _08090B64 @ =0x00000a6c + adds r0, r2, r4 + adds r0, r1 + str r3, [r0] + ldr r0, _08090B68 @ =0x00000c5a + adds r2, r0 + ldrb r0, [r2] + subs r0, 0x1 + strb r0, [r2] +_08090B54: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08090B5C: .4byte nullsub_8 +_08090B60: .4byte gUnknown_20397B0 +_08090B64: .4byte 0x00000a6c +_08090B68: .4byte 0x00000c5a + thumb_func_end sub_8090AE0 + + thumb_func_start sub_8090B6C +sub_8090B6C: @ 8090B6C + push {r4,lr} + ldr r4, _08090B90 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _08090B94 @ =0x00000a68 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _08090B8A + bl sub_80913C4 + ldr r0, [r4] + ldr r1, _08090B94 @ =0x00000a68 + adds r0, r1 + movs r1, 0 + str r1, [r0] +_08090B8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08090B90: .4byte gUnknown_20397B0 +_08090B94: .4byte 0x00000a68 + thumb_func_end sub_8090B6C + + thumb_func_start sub_8090B98 +sub_8090B98: @ 8090B98 + push {r4-r6,lr} + movs r3, 0 + ldr r6, _08090BEC @ =gUnknown_20397B0 + lsls r0, 16 + asrs r4, r0, 16 + movs r5, 0x5 + negs r5, r5 +_08090BA6: + ldr r0, [r6] + lsls r1, r3, 2 + ldr r2, _08090BF0 @ =0x00000a6c + adds r0, r2 + adds r2, r0, r1 + ldr r1, [r2] + cmp r1, 0 + beq _08090BFE + ldrh r0, [r1, 0x22] + adds r0, r4, r0 + strh r0, [r1, 0x22] + ldr r2, [r2] + ldrh r1, [r2, 0x26] + ldrh r0, [r2, 0x22] + adds r1, r0 + adds r0, r2, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 13 + adds r0, r1 + lsrs r0, 16 + cmp r0, 0xC0 + bls _08090BF4 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _08090BFE + .align 2, 0 +_08090BEC: .4byte gUnknown_20397B0 +_08090BF0: .4byte 0x00000a6c +_08090BF4: + adds r2, 0x3E + ldrb r1, [r2] + adds r0, r5, 0 + ands r0, r1 + strb r0, [r2] +_08090BFE: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x5 + bls _08090BA6 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8090B98 + + thumb_func_start sub_8090C10 +sub_8090C10: @ 8090C10 + push {r4,r5,lr} + lsls r0, 24 + ldr r5, _08090C3C @ =gUnknown_20397B0 + ldr r1, [r5] + lsrs r4, r0, 22 + ldr r0, _08090C40 @ =0x00000a6c + adds r1, r0 + adds r1, r4 + ldr r0, [r1] + cmp r0, 0 + beq _08090C36 + bl sub_80913C4 + ldr r0, [r5] + ldr r1, _08090C40 @ =0x00000a6c + adds r0, r1 + adds r0, r4 + movs r1, 0 + str r1, [r0] +_08090C36: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08090C3C: .4byte gUnknown_20397B0 +_08090C40: .4byte 0x00000a6c + thumb_func_end sub_8090C10 + + thumb_func_start sub_8090C44 +sub_8090C44: @ 8090C44 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _08090C7C @ =gUnknown_20397B0 +_08090C4A: + ldr r0, [r6] + lsls r4, r5, 2 + ldr r1, _08090C80 @ =0x00000a6c + adds r0, r1 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _08090C6A + bl sub_80913C4 + ldr r0, [r6] + ldr r1, _08090C80 @ =0x00000a6c + adds r0, r1 + adds r0, r4 + movs r1, 0 + str r1, [r0] +_08090C6A: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x5 + bls _08090C4A + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08090C7C: .4byte gUnknown_20397B0 +_08090C80: .4byte 0x00000a6c + thumb_func_end sub_8090C44 + + thumb_func_start sub_8090C84 +sub_8090C84: @ 8090C84 + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + ldr r1, _08090CB8 @ =gUnknown_20397B0 + ldr r1, [r1] + lsrs r0, 22 + ldr r3, _08090CBC @ =0x00000a6c + adds r1, r3 + adds r1, r0 + ldr r3, [r1] + cmp r3, 0 + beq _08090CB2 + movs r0, 0x3 + adds r1, r2, 0 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] +_08090CB2: + pop {r0} + bx r0 + .align 2, 0 +_08090CB8: .4byte gUnknown_20397B0 +_08090CBC: .4byte 0x00000a6c + thumb_func_end sub_8090C84 + + thumb_func_start sub_8090CC0 +sub_8090CC0: @ 8090CC0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + adds r5, r1, 0 + cmp r4, 0 + bne _08090CF0 + ldr r3, _08090CE8 @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r5, _08090CEC @ =0x00000a68 + adds r2, r0, r5 + lsls r1, 2 + adds r5, 0x4 + adds r0, r5 + adds r0, r1 + ldr r1, [r0] + str r1, [r2] + str r4, [r0] + b _08090D0C + .align 2, 0 +_08090CE8: .4byte gUnknown_20397B0 +_08090CEC: .4byte 0x00000a68 +_08090CF0: + cmp r4, 0x1 + bne _08090D42 + ldr r3, _08090D48 @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r1, _08090D4C @ =0x00000a68 + adds r2, r0, r1 + lsls r1, r5, 2 + ldr r4, _08090D50 @ =0x00000a84 + adds r0, r4 + adds r0, r1 + ldr r1, [r0] + str r1, [r2] + movs r1, 0 + str r1, [r0] +_08090D0C: + adds r5, r3, 0 + ldr r0, [r5] + ldr r4, _08090D4C @ =0x00000a68 + adds r0, r4 + ldr r1, [r0] + ldr r0, _08090D54 @ =sub_80911B0 + str r0, [r1, 0x1C] + bl sub_8090058 + ldr r1, [r5] + adds r1, r4 + ldr r3, [r1] + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r0, [r5] + adds r0, r4 + ldr r0, [r0] + adds r0, 0x43 + movs r1, 0x7 + strb r1, [r0] +_08090D42: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08090D48: .4byte gUnknown_20397B0 +_08090D4C: .4byte 0x00000a68 +_08090D50: .4byte 0x00000a84 +_08090D54: .4byte sub_80911B0 + thumb_func_end sub_8090CC0 + + thumb_func_start sub_8090D58 +sub_8090D58: @ 8090D58 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r0, 0xE + bne _08090DA4 + ldr r3, _08090D98 @ =gUnknown_20397B0 + ldr r1, [r3] + lsls r5, r6, 2 + ldr r4, _08090D9C @ =0x00000a6c + adds r0, r1, r4 + adds r0, r5 + ldr r2, _08090DA0 @ =0x00000a68 + adds r1, r2 + ldr r2, [r1] + str r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r3] + adds r0, r4 + adds r0, r5 + ldr r0, [r0] + adds r0, 0x43 + movs r1, 0xC + strb r1, [r0] + b _08090DE0 + .align 2, 0 +_08090D98: .4byte gUnknown_20397B0 +_08090D9C: .4byte 0x00000a6c +_08090DA0: .4byte 0x00000a68 +_08090DA4: + ldr r5, _08090DF8 @ =gUnknown_20397B0 + ldr r1, [r5] + lsls r4, r6, 2 + ldr r3, _08090DFC @ =0x00000a84 + adds r0, r1, r3 + adds r0, r4 + ldr r2, _08090E00 @ =0x00000a68 + adds r1, r2 + ldr r2, [r1] + str r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r5] + adds r0, r3 + adds r0, r4 + ldr r4, [r0] + adds r0, r6, 0 + movs r1, 0x6 + bl __umodsi3 + movs r1, 0x13 + subs r1, r0 + adds r4, 0x43 + strb r1, [r4] + adds r3, r5, 0 +_08090DE0: + ldr r1, [r3] + ldr r0, _08090E00 @ =0x00000a68 + adds r1, r0 + ldr r2, [r1] + ldr r0, _08090E04 @ =nullsub_8 + str r0, [r2, 0x1C] + movs r0, 0 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08090DF8: .4byte gUnknown_20397B0 +_08090DFC: .4byte 0x00000a84 +_08090E00: .4byte 0x00000a68 +_08090E04: .4byte nullsub_8 + thumb_func_end sub_8090D58 + + thumb_func_start sub_8090E08 +sub_8090E08: @ 8090E08 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r0, 0xE + bne _08090E30 + ldr r3, _08090E24 @ =gUnknown_20397B0 + ldr r1, [r3] + ldr r0, _08090E28 @ =0x00000afc + adds r2, r1, r0 + lsls r0, r4, 2 + ldr r4, _08090E2C @ =0x00000a6c + b _08090E3C + .align 2, 0 +_08090E24: .4byte gUnknown_20397B0 +_08090E28: .4byte 0x00000afc +_08090E2C: .4byte 0x00000a6c +_08090E30: + ldr r3, _08090E5C @ =gUnknown_20397B0 + ldr r1, [r3] + ldr r0, _08090E60 @ =0x00000afc + adds r2, r1, r0 + lsls r0, r4, 2 + ldr r4, _08090E64 @ =0x00000a84 +_08090E3C: + adds r0, r4 + adds r1, r0 + str r1, [r2] + ldr r1, [r3] + ldr r2, _08090E68 @ =0x00000a68 + adds r0, r1, r2 + ldr r2, [r0] + ldr r0, _08090E6C @ =nullsub_8 + str r0, [r2, 0x1C] + ldr r4, _08090E70 @ =0x00000c59 + adds r1, r4 + movs r0, 0 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08090E5C: .4byte gUnknown_20397B0 +_08090E60: .4byte 0x00000afc +_08090E64: .4byte 0x00000a84 +_08090E68: .4byte 0x00000a68 +_08090E6C: .4byte nullsub_8 +_08090E70: .4byte 0x00000c59 + thumb_func_end sub_8090E08 + + thumb_func_start sub_8090E74 +sub_8090E74: @ 8090E74 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r6, _08090E90 @ =gUnknown_20397B0 + ldr r0, [r6] + ldr r1, _08090E94 @ =0x00000c59 + mov r9, r1 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x10 + bne _08090E98 + movs r0, 0 + b _08090FA0 + .align 2, 0 +_08090E90: .4byte gUnknown_20397B0 +_08090E94: .4byte 0x00000c59 +_08090E98: + adds r0, 0x1 + strb r0, [r1] + ldr r2, [r6] + ldr r5, _08090FAC @ =0x00000c59 + adds r0, r2, r5 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08090EC6 + ldr r1, _08090FB0 @ =0x00000afc + adds r0, r2, r1 + ldr r0, [r0] + ldr r1, [r0] + ldrh r0, [r1, 0x22] + subs r0, 0x1 + strh r0, [r1, 0x22] + ldr r5, _08090FB4 @ =0x00000a68 + adds r0, r2, r5 + ldr r1, [r0] + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] +_08090EC6: + ldr r3, [r6] + ldr r7, _08090FB0 @ =0x00000afc + adds r4, r3, r7 + ldr r0, [r4] + ldr r0, [r0] + mov r8, r0 + ldr r5, _08090FB8 @ =gUnknown_825E074 + mov r0, r9 + adds r1, r3, r0 + ldrb r0, [r1] + lsls r0, 4 + adds r0, r5 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bge _08090EE8 + adds r0, 0xF +_08090EE8: + asrs r0, 4 + mov r2, r8 + strh r0, [r2, 0x24] + ldr r0, _08090FB4 @ =0x00000a68 + mov r8, r0 + add r3, r8 + ldr r2, [r3] + ldrb r0, [r1] + lsls r0, 4 + adds r0, r5 + movs r5, 0 + ldrsh r0, [r0, r5] + cmp r0, 0 + bge _08090F06 + adds r0, 0xF +_08090F06: + asrs r0, 4 + negs r0, r0 + strh r0, [r2, 0x24] + ldrb r0, [r1] + cmp r0, 0x8 + bne _08090F6A + ldr r3, [r3] + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0, 0x5] + movs r5, 0x3 + movs r1, 0xC + ands r1, r0 + ldrb r2, [r3, 0x5] + movs r4, 0xD + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r0, [r6] + mov r2, r8 + adds r1, r0, r2 + ldr r1, [r1] + adds r0, r7 + ldr r0, [r0] + ldr r0, [r0] + adds r0, 0x43 + ldrb r0, [r0] + adds r1, 0x43 + strb r0, [r1] + bl sub_8090058 + ldr r1, [r6] + adds r1, r7 + ldr r1, [r1] + ldr r1, [r1] + ands r5, r0 + lsls r5, 2 + ldrb r0, [r1, 0x5] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, 0x5] + ldr r0, [r6] + adds r0, r7 + ldr r0, [r0] + ldr r0, [r0] + adds r0, 0x43 + movs r1, 0x7 + strb r1, [r0] +_08090F6A: + ldr r1, [r6] + mov r5, r9 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0x10 + bne _08090F9E + mov r0, r8 + adds r2, r1, r0 + ldr r3, [r2] + adds r1, r7 + ldr r0, [r1] + ldr r0, [r0] + str r0, [r2] + ldr r0, [r1] + str r3, [r0] + ldr r1, [r6] + mov r2, r8 + adds r0, r1, r2 + ldr r2, [r0] + ldr r0, _08090FBC @ =sub_80911B0 + str r0, [r2, 0x1C] + adds r1, r7 + ldr r0, [r1] + ldr r1, [r0] + ldr r0, _08090FC0 @ =nullsub_8 + str r0, [r1, 0x1C] +_08090F9E: + movs r0, 0x1 +_08090FA0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08090FAC: .4byte 0x00000c59 +_08090FB0: .4byte 0x00000afc +_08090FB4: .4byte 0x00000a68 +_08090FB8: .4byte gUnknown_825E074 +_08090FBC: .4byte sub_80911B0 +_08090FC0: .4byte nullsub_8 + thumb_func_end sub_8090E74 + + thumb_func_start sub_8090FC4 +sub_8090FC4: @ 8090FC4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r0, 0x1 + beq _08090FFC + cmp r0, 0x1 + bgt _08090FDE + cmp r0, 0 + beq _08090FE4 + b _08091072 +_08090FDE: + cmp r2, 0x2 + beq _0809101C + b _08091072 +_08090FE4: + ldr r3, _08090FF4 @ =gUnknown_20397B0 + ldr r1, [r3] + movs r0, 0xB0 + lsls r0, 4 + adds r2, r1, r0 + lsls r0, r4, 2 + ldr r4, _08090FF8 @ =0x00000a6c + b _0809100A + .align 2, 0 +_08090FF4: .4byte gUnknown_20397B0 +_08090FF8: .4byte 0x00000a6c +_08090FFC: + ldr r3, _08091014 @ =gUnknown_20397B0 + ldr r1, [r3] + movs r0, 0xB0 + lsls r0, 4 + adds r2, r1, r0 + lsls r0, r4, 2 + ldr r4, _08091018 @ =0x00000a84 +_0809100A: + adds r0, r4 + adds r1, r0 + str r1, [r2] + adds r4, r3, 0 + b _0809102E + .align 2, 0 +_08091014: .4byte gUnknown_20397B0 +_08091018: .4byte 0x00000a84 +_0809101C: + ldr r0, _08091078 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r3, 0xB0 + lsls r3, 4 + adds r2, r1, r3 + ldr r4, _0809107C @ =0x00000a68 + adds r1, r4 + str r1, [r2] + adds r4, r0, 0 +_0809102E: + ldr r0, [r4] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _08091072 + bl sub_800860C + ldr r0, [r4] + movs r3, 0xB0 + lsls r3, 4 + adds r0, r3 + ldr r0, [r0] + ldr r2, [r0] + ldrb r1, [r2, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1] + ldr r1, [r4] + adds r1, r3 + ldr r0, [r1] + ldr r2, [r0] + ldr r0, _08091080 @ =gUnknown_83CEC38 + str r0, [r2, 0x10] + ldr r0, [r1] + ldr r0, [r0] + movs r1, 0 + bl sub_800843C +_08091072: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08091078: .4byte gUnknown_20397B0 +_0809107C: .4byte 0x00000a68 +_08091080: .4byte gUnknown_83CEC38 + thumb_func_end sub_8090FC4 + + thumb_func_start sub_8091084 +sub_8091084: @ 8091084 + push {lr} + ldr r0, _080910AC @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + ldr r1, [r0] + cmp r1, 0 + beq _080910A6 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r0, 0x4 + ands r0, r2 + cmp r0, 0 + beq _080910B0 +_080910A6: + movs r0, 0 + b _080910C6 + .align 2, 0 +_080910AC: .4byte gUnknown_20397B0 +_080910B0: + adds r0, r1, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080910C4 + movs r0, 0x4 + orrs r0, r2 + strb r0, [r3] +_080910C4: + movs r0, 0x1 +_080910C6: + pop {r1} + bx r1 + thumb_func_end sub_8091084 + + thumb_func_start sub_80910CC +sub_80910CC: @ 80910CC + push {r4,lr} + ldr r4, _08091110 @ =gUnknown_20397B0 + ldr r0, [r4] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _08091108 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldr r0, [r4] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + bl sub_80913C4 + ldr r0, [r4] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r1, [r0] + movs r0, 0 + str r0, [r1] +_08091108: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08091110: .4byte gUnknown_20397B0 + thumb_func_end sub_80910CC + + thumb_func_start sub_8091114 +sub_8091114: @ 8091114 + push {lr} + ldr r3, _0809114C @ =gUnknown_20397B0 + ldr r0, [r3] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _08091148 + adds r2, r0, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + movs r1, 0x1 + bl sub_800843C +_08091148: + pop {r0} + bx r0 + .align 2, 0 +_0809114C: .4byte gUnknown_20397B0 + thumb_func_end sub_8091114 + + thumb_func_start sub_8091150 +sub_8091150: @ 8091150 + push {lr} + ldr r0, _08091168 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xB0 + lsls r1, 4 + adds r2, r0, r1 + ldr r0, [r2] + cmp r0, 0 + bne _0809116C + movs r0, 0 + b _08091180 + .align 2, 0 +_08091168: .4byte gUnknown_20397B0 +_0809116C: + ldr r0, [r0] + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0809117E + movs r0, 0 + str r0, [r2] +_0809117E: + movs r0, 0x1 +_08091180: + pop {r1} + bx r1 + thumb_func_end sub_8091150 + + thumb_func_start sub_8091184 +sub_8091184: @ 8091184 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080911A8 @ =gUnknown_20397B0 + ldr r1, [r1] + ldr r2, _080911AC @ =0x00000a68 + adds r1, r2 + ldr r3, [r1] + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r3, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x5] + bx lr + .align 2, 0 +_080911A8: .4byte gUnknown_20397B0 +_080911AC: .4byte 0x00000a68 + thumb_func_end sub_8091184 + + thumb_func_start sub_80911B0 +sub_80911B0: @ 80911B0 + ldr r1, _080911D0 @ =gUnknown_20397B0 + ldr r1, [r1] + movs r2, 0xCB + lsls r2, 4 + adds r1, r2 + ldr r2, [r1] + ldrh r2, [r2, 0x20] + strh r2, [r0, 0x20] + ldr r2, [r1] + ldrh r1, [r2, 0x26] + ldrh r2, [r2, 0x22] + adds r1, r2 + adds r1, 0x4 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_080911D0: .4byte gUnknown_20397B0 + thumb_func_end sub_80911B0 + + thumb_func_start sub_80911D4 +sub_80911D4: @ 80911D4 + push {r4-r6,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r4, 0 + ldr r1, _0809123C @ =gUnknown_20397B0 + ldr r0, [r1] + ldr r2, _08091240 @ =0x00000b54 + adds r0, r2 + ldrh r0, [r0] + adds r2, r1, 0 + cmp r0, r3 + beq _08091208 + adds r6, r2, 0 + ldr r5, _08091240 @ =0x00000b54 +_080911F0: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x27 + bhi _08091208 + ldr r0, [r6] + lsls r1, r4, 1 + adds r0, r5 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _080911F0 +_08091208: + cmp r4, 0x28 + bne _08091248 + movs r4, 0 + ldr r0, [r2] + ldr r5, _08091240 @ =0x00000b54 + adds r0, r5 + ldrh r0, [r0] + cmp r0, 0 + beq _08091234 + adds r6, r2, 0 +_0809121C: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x27 + bhi _08091234 + ldr r0, [r6] + lsls r1, r4, 1 + adds r0, r5 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + bne _0809121C +_08091234: + cmp r4, 0x28 + bne _08091248 + ldr r0, _08091244 @ =0x0000ffff + b _0809127A + .align 2, 0 +_0809123C: .4byte gUnknown_20397B0 +_08091240: .4byte 0x00000b54 +_08091244: .4byte 0x0000ffff +_08091248: + ldr r1, [r2] + lsls r2, r4, 1 + ldr r5, _08091280 @ =0x00000b54 + adds r0, r1, r5 + adds r0, r2 + strh r3, [r0] + ldr r0, _08091284 @ =0x00000b04 + adds r1, r0 + adds r1, r2 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r4, 20 + lsrs r4, 16 + adds r0, r3, 0 + movs r1, 0x1 + bl sub_8097028 + lsls r1, r4, 5 + ldr r2, _08091288 @ =0x06010000 + adds r1, r2 + ldr r2, _0809128C @ =0x04000080 + bl CpuSet + adds r0, r4, 0 +_0809127A: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08091280: .4byte 0x00000b54 +_08091284: .4byte 0x00000b04 +_08091288: .4byte 0x06010000 +_0809128C: .4byte 0x04000080 + thumb_func_end sub_80911D4 + + thumb_func_start sub_8091290 +sub_8091290: @ 8091290 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + movs r3, 0 + ldr r6, _080912C4 @ =gUnknown_20397B0 +_0809129A: + ldr r1, [r6] + lsls r2, r3, 1 + ldr r4, _080912C8 @ =0x00000b54 + adds r0, r1, r4 + adds r4, r0, r2 + ldrh r0, [r4] + cmp r0, r5 + bne _080912D0 + ldr r0, _080912CC @ =0x00000b04 + adds r1, r0 + adds r1, r2 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _080912DA + strh r0, [r4] + b _080912DA + .align 2, 0 +_080912C4: .4byte gUnknown_20397B0 +_080912C8: .4byte 0x00000b54 +_080912CC: .4byte 0x00000b04 +_080912D0: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x27 + bls _0809129A +_080912DA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8091290 + + thumb_func_start sub_80912E0 +sub_80912E0: @ 80912E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r4, [sp, 0x3C] + ldr r5, [sp, 0x40] + lsls r0, 16 + lsrs r6, r0, 16 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x18] + lsls r3, 16 + lsrs r3, 16 + mov r8, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r9, r5 + mov r2, sp + ldr r0, _08091390 @ =gUnknown_83CEBF0 + ldm r0!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldm r0!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + adds r0, r6, 0 + bl sub_8096F5C + mov r10, r0 + mov r6, r10 + mov r2, sp + ldr r1, _08091394 @ =gUnknown_83D3E80 + adds r1, r6, r1 + ldr r3, _08091398 @ =0x0000dac0 + adds r0, r3, 0 + ldrb r1, [r1] + adds r0, r1 + strh r0, [r2, 0x2] + adds r0, r6, 0 + bl sub_80911D4 + lsls r0, 16 + lsrs r0, 16 + adds r5, r0, 0 + ldr r0, _0809139C @ =0x0000ffff + cmp r5, r0 + beq _080913B2 + ldr r7, [sp, 0x18] + lsls r1, r7, 16 + asrs r1, 16 + mov r0, r8 + lsls r2, r0, 16 + asrs r2, 16 + mov r0, sp + mov r3, r9 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080913AC + ldr r1, _080913A0 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldr r2, _080913A4 @ =0x000003ff + ands r2, r5 + ldrh r3, [r0, 0x4] + ldr r1, _080913A8 @ =0xfffffc00 + ands r1, r3 + orrs r1, r2 + strh r1, [r0, 0x4] + movs r1, 0x3 + ands r4, r1 + lsls r3, r4, 2 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, 0x5] + mov r1, r10 + strh r1, [r0, 0x2E] + b _080913B4 + .align 2, 0 +_08091390: .4byte gUnknown_83CEBF0 +_08091394: .4byte gUnknown_83D3E80 +_08091398: .4byte 0x0000dac0 +_0809139C: .4byte 0x0000ffff +_080913A0: .4byte gUnknown_202063C +_080913A4: .4byte 0x000003ff +_080913A8: .4byte 0xfffffc00 +_080913AC: + adds r0, r6, 0 + bl sub_8091290 +_080913B2: + movs r0, 0 +_080913B4: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80912E0 + + thumb_func_start sub_80913C4 +sub_80913C4: @ 80913C4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + bl sub_8091290 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80913C4 + + thumb_func_start sub_80913DC +sub_80913DC: @ 80913DC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08091404 @ =sub_8091420 + movs r1, 0x2 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08091408 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xC] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08091404: .4byte sub_8091420 +_08091408: .4byte gUnknown_3005090 + thumb_func_end sub_80913DC + + thumb_func_start sub_809140C +sub_809140C: @ 809140C + push {lr} + ldr r0, _0809141C @ =sub_8091420 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0809141C: .4byte sub_8091420 + thumb_func_end sub_809140C + + thumb_func_start sub_8091420 +sub_8091420: @ 8091420 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _08091444 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _08091504 + lsls r0, 2 + ldr r1, _08091448 @ =_0809144C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08091444: .4byte gUnknown_3005090 +_08091448: .4byte _0809144C + .align 2, 0 +_0809144C: + .4byte _08091460 + .4byte _08091498 + .4byte _080914CC + .4byte _080914D6 + .4byte _080914FC +_08091460: + ldr r1, _0809148C @ =gUnknown_20397B0 + ldr r0, [r1] + ldr r2, _08091490 @ =0x000002d2 + adds r0, r2 + movs r2, 0 + strb r2, [r0] + ldr r1, [r1] + movs r3, 0xB3 + lsls r3, 2 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _08091494 @ =0x00004abc + adds r1, r0 + movs r2, 0x80 + lsls r2, 5 + movs r0, 0 + movs r3, 0x1 + bl sub_8000F44 + strh r0, [r4, 0xA] + b _08091508 + .align 2, 0 +_0809148C: .4byte gUnknown_20397B0 +_08091490: .4byte 0x000002d2 +_08091494: .4byte 0x00004abc +_08091498: + movs r1, 0xA + ldrsh r0, [r4, r1] + bl sub_8000FE8 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0809150E + ldr r0, _080914C4 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _080914C8 @ =0x00004abc + adds r1, r2 + movs r0, 0x2 + bl sub_8001FA0 + movs r0, 0x2 + bl sub_80019BC + b _08091508 + .align 2, 0 +_080914C4: .4byte gUnknown_20397B0 +_080914C8: .4byte 0x00004abc +_080914CC: + ldrb r0, [r4, 0xC] + movs r1, 0 + bl sub_8091850 + b _08091508 +_080914D6: + bl sub_809196C + cmp r0, 0 + beq _0809150E + ldrb r0, [r4, 0xC] + bl sub_8091A94 + bl sub_8091F80 + ldrb r0, [r4, 0xC] + bl sub_80900D4 + ldr r1, _080914F8 @ =0x00005b0a + movs r0, 0xC + bl sub_8000A38 + b _08091508 + .align 2, 0 +_080914F8: .4byte 0x00005b0a +_080914FC: + adds r0, r2, 0 + bl sub_8077508 + b _08091508 +_08091504: + movs r0, 0 + b _0809150C +_08091508: + ldrh r0, [r4, 0x8] + adds r0, 0x1 +_0809150C: + strh r0, [r4, 0x8] +_0809150E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8091420 + + thumb_func_start sub_8091514 +sub_8091514: @ 8091514 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + adds r0, r4, 0 + bl sub_80916F4 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r5, _080915D8 @ =gUnknown_20397B0 + ldr r2, [r5] + lsls r0, r6, 24 + asrs r3, r0, 24 + movs r0, 0x6 + negs r0, r0 + adds r1, r0, 0 + cmp r3, 0 + ble _08091540 + movs r1, 0x6 +_08091540: + ldr r7, _080915DC @ =0x000002ce + adds r0, r2, r7 + strh r1, [r0] + movs r1, 0x2 + cmp r3, 0 + ble _0809154E + movs r1, 0x1 +_0809154E: + ldr r7, _080915E0 @ =0x000002d3 + adds r0, r2, r7 + strb r1, [r0] + ldr r2, [r5] + movs r0, 0xB4 + lsls r0, 2 + adds r1, r2, r0 + movs r0, 0x20 + strh r0, [r1] + movs r1, 0xB5 + lsls r1, 2 + adds r0, r2, r1 + strb r4, [r0] + ldr r2, [r5] + movs r1, 0 + cmp r3, 0 + bgt _08091572 + movs r1, 0x5 +_08091572: + ldr r4, _080915E4 @ =0x000002d6 + adds r0, r2, r4 + strh r1, [r0] + movs r7, 0xB6 + lsls r7, 2 + adds r0, r2, r7 + strh r3, [r0] + movs r1, 0x38 + cmp r3, 0 + ble _0809158C + movs r0, 0x84 + lsls r0, 1 + adds r1, r0, 0 +_0809158C: + ldr r4, _080915E8 @ =0x000002da + adds r0, r2, r4 + strh r1, [r0] + movs r1, 0 + cmp r3, 0 + bgt _0809159A + movs r1, 0x5 +_0809159A: + movs r7, 0xB7 + lsls r7, 2 + adds r0, r2, r7 + strh r1, [r0] + ldr r0, _080915EC @ =0x000002de + adds r1, r2, r0 + movs r0, 0 + strh r0, [r1] + movs r3, 0xB8 + lsls r3, 2 + adds r1, r2, r3 + movs r0, 0x2 + strh r0, [r1] + ldr r4, _080915F0 @ =0x00000a64 + adds r0, r2, r4 + mov r7, r8 + strb r7, [r0] + ldr r0, [r5] + ldr r1, _080915F4 @ =0x00000a65 + adds r0, r1 + strb r6, [r0] + ldr r0, [r5] + ldr r3, _080915F8 @ =0x00000a63 + adds r0, r3 + movs r1, 0 + strb r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080915D8: .4byte gUnknown_20397B0 +_080915DC: .4byte 0x000002ce +_080915E0: .4byte 0x000002d3 +_080915E4: .4byte 0x000002d6 +_080915E8: .4byte 0x000002da +_080915EC: .4byte 0x000002de +_080915F0: .4byte 0x00000a64 +_080915F4: .4byte 0x00000a65 +_080915F8: .4byte 0x00000a63 + thumb_func_end sub_8091514 + + thumb_func_start sub_80915FC +sub_80915FC: @ 80915FC + push {r4-r6,lr} + ldr r4, _08091618 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r5, _0809161C @ =0x00000a63 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08091644 + cmp r0, 0x1 + bgt _08091620 + cmp r0, 0 + beq _08091626 + b _080916D4 + .align 2, 0 +_08091618: .4byte gUnknown_20397B0 +_0809161C: .4byte 0x00000a63 +_08091620: + cmp r0, 0x2 + beq _08091694 + b _080916D4 +_08091626: + ldr r2, _08091688 @ =0x00000a64 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, 0x1 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + bl sub_8091850 + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08091644: + bl sub_809196C + cmp r0, 0 + beq _080916E2 + ldr r6, _0809168C @ =gUnknown_20397B0 + ldr r1, [r6] + ldr r4, _08091688 @ =0x00000a64 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r5, _08091690 @ =0x00000a65 + adds r1, r5 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + bl sub_8090574 + ldr r1, [r6] + adds r4, r1, r4 + ldrb r0, [r4] + adds r1, r5 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + bl sub_8091C48 + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + bl sub_809200C + b _080916D4 + .align 2, 0 +_08091688: .4byte 0x00000a64 +_0809168C: .4byte gUnknown_20397B0 +_08091690: .4byte 0x00000a65 +_08091694: + bl sub_809062C + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, [r4] + movs r4, 0xB4 + lsls r4, 2 + adds r3, r2, r4 + ldrh r0, [r3] + cmp r0, 0 + beq _080916D0 + movs r0, 0xB3 + lsls r0, 2 + adds r1, r2, r0 + subs r4, 0x2 + adds r0, r2, r4 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + ldrh r0, [r3] + subs r0, 0x1 + strh r0, [r3] + lsls r0, 16 + cmp r0, 0 + bne _080916E2 + bl sub_8091E34 + bl sub_80920AC +_080916D0: + adds r0, r5, 0 + b _080916E4 +_080916D4: + ldr r0, _080916EC @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r4, _080916F0 @ =0x00000a63 + adds r1, r4 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080916E2: + movs r0, 0x1 +_080916E4: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080916EC: .4byte gUnknown_20397B0 +_080916F0: .4byte 0x00000a63 + thumb_func_end sub_80915FC + + thumb_func_start sub_80916F4 +sub_80916F4: @ 80916F4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_808B9F4 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0 + cmp r1, r4 + beq _0809171E +_08091708: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xD + bls _08091714 + movs r1, 0 +_08091714: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r1, r4 + bne _08091708 +_0809171E: + movs r0, 0x1 + negs r0, r0 + cmp r2, 0x6 + bhi _08091728 + movs r0, 0x1 +_08091728: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80916F4 + + thumb_func_start sub_8091730 +sub_8091730: @ 8091730 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_808BDBC + ldr r0, _08091758 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0809175C @ =0x00000a62 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08091758: .4byte gUnknown_20397B0 +_0809175C: .4byte 0x00000a62 + thumb_func_end sub_8091730 + + thumb_func_start sub_8091760 +sub_8091760: @ 8091760 + push {r4,lr} + sub sp, 0x4 + ldr r1, _08091780 @ =gUnknown_20397B0 + ldr r0, [r1] + ldr r2, _08091784 @ =0x00000a62 + adds r0, r2 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x4 + bhi _08091844 + lsls r0, 2 + ldr r1, _08091788 @ =_0809178C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08091780: .4byte gUnknown_20397B0 +_08091784: .4byte 0x00000a62 +_08091788: .4byte _0809178C + .align 2, 0 +_0809178C: + .4byte _080917A0 + .4byte _080917C8 + .4byte _080917E2 + .4byte _0809181C + .4byte _08091840 +_080917A0: + ldr r0, [r4] + movs r1, 0xE7 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080917C0 @ =0x0000ffff + str r1, [sp] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + ldr r2, _080917C4 @ =0x00000a62 + adds r1, r2 + b _0809182E + .align 2, 0 +_080917C0: .4byte 0x0000ffff +_080917C4: .4byte 0x00000a62 +_080917C8: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _08091844 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8091850 + b _08091826 +_080917E2: + bl sub_809196C + cmp r0, 0x1 + bne _08091844 + bl sub_8091EF0 + ldr r4, _08091810 @ =gUnknown_20397B0 + ldr r0, [r4] + movs r1, 0xE7 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08091814 @ =0x0000ffff + str r1, [sp] + movs r1, 0x1 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, [r4] + ldr r2, _08091818 @ =0x00000a62 + adds r1, r2 + b _0809182E + .align 2, 0 +_08091810: .4byte gUnknown_20397B0 +_08091814: .4byte 0x0000ffff +_08091818: .4byte 0x00000a62 +_0809181C: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _08091844 +_08091826: + ldr r0, _08091838 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r0, _0809183C @ =0x00000a62 + adds r1, r0 +_0809182E: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08091844 + .align 2, 0 +_08091838: .4byte gUnknown_20397B0 +_0809183C: .4byte 0x00000a62 +_08091840: + movs r0, 0 + b _08091846 +_08091844: + movs r0, 0x1 +_08091846: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8091760 + + thumb_func_start sub_8091850 +sub_8091850: @ 8091850 + push {r4-r7,lr} + sub sp, 0x4 + ldr r4, _08091904 @ =gUnknown_20397B0 + ldr r2, [r4] + ldr r3, _08091908 @ =0x000006f9 + adds r2, r3 + movs r3, 0 + strb r3, [r2] + ldr r2, [r4] + ldr r3, _0809190C @ =0x000006fa + adds r2, r3 + strb r0, [r2] + ldr r0, [r4] + ldr r2, _08091910 @ =0x000006fb + adds r0, r2 + strb r1, [r0] + ldr r1, [r4] + adds r2, r1, r2 + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r0, 0 + beq _08091896 + movs r3, 0 + ldr r0, _08091914 @ =0x000002d2 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0 + bne _0809188A + movs r3, 0x1 +_0809188A: + strb r3, [r2] + ldr r0, [r4] + ldr r1, _08091918 @ =0x00004abc + adds r0, r1 + bl sub_8091A24 +_08091896: + ldr r6, _08091904 @ =gUnknown_20397B0 + ldr r0, [r6] + ldr r2, _0809190C @ =0x000006fa + adds r0, r2 + ldrb r0, [r0] + bl sub_808BD94 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, _0809191C @ =gUnknown_83D2A10 + adds r7, r1, r0 + ldr r0, [r7, 0x4] + ldr r1, [r6] + ldr r5, _08091920 @ =0x00000792 + adds r1, r5 + bl LZ77UnCompWram + ldr r1, [r6] + ldr r3, _08091918 @ =0x00004abc + adds r0, r1, r3 + adds r5, r1, r5 + ldr r4, _08091910 @ =0x000006fb + adds r2, r1, r4 + ldrb r2, [r2] + lsls r2, 24 + asrs r2, 24 + ldr r3, _08091914 @ =0x000002d2 + adds r1, r3 + ldrb r3, [r1] + adds r1, r5, 0 + bl sub_8091984 + ldr r1, [r6] + adds r4, r1, r4 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + beq _08091924 + ldr r0, [r7, 0x8] + ldr r2, _08091914 @ =0x000002d2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 21 + movs r3, 0x80 + lsls r3, 15 + adds r1, r3 + lsrs r1, 16 + movs r2, 0x40 + bl sub_80703EC + b _08091938 + .align 2, 0 +_08091904: .4byte gUnknown_20397B0 +_08091908: .4byte 0x000006f9 +_0809190C: .4byte 0x000006fa +_08091910: .4byte 0x000006fb +_08091914: .4byte 0x000002d2 +_08091918: .4byte 0x00004abc +_0809191C: .4byte gUnknown_83D2A10 +_08091920: .4byte 0x00000792 +_08091924: + ldr r0, [r7, 0x8] + ldr r2, _08091960 @ =0x000002d2 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 6 + ldr r2, _08091964 @ =gUnknown_2037278 + adds r1, r2 + movs r2, 0x20 + bl CpuSet +_08091938: + ldr r1, [r7] + ldr r0, _08091968 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r3, _08091960 @ =0x000002d2 + adds r0, r3 + ldrb r3, [r0] + lsls r3, 8 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + movs r2, 0 + bl sub_80F696C + movs r0, 0x2 + bl sub_80020BC + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08091960: .4byte 0x000002d2 +_08091964: .4byte gUnknown_2037278 +_08091968: .4byte gUnknown_20397B0 + thumb_func_end sub_8091850 + + thumb_func_start sub_809196C +sub_809196C: @ 809196C + push {lr} + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809197E + movs r0, 0x1 + b _08091980 +_0809197E: + movs r0, 0 +_08091980: + pop {r1} + bx r1 + thumb_func_end sub_809196C + + thumb_func_start sub_8091984 +sub_8091984: @ 8091984 + push {r4-r7,lr} + sub sp, 0x24 + lsls r3, 24 + lsrs r3, 24 + lsls r5, r3, 17 + ldr r0, _080919F0 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r4, 0xB3 + lsls r4, 2 + adds r0, r4 + ldrh r4, [r0] + lsrs r4, 3 + adds r4, 0xA + lsls r2, 24 + asrs r7, r2, 24 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + adds r6, r4, r0 + movs r0, 0x3F + ands r6, r0 + movs r4, 0x14 + str r4, [sp] + movs r2, 0x12 + str r2, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x2 + str r0, [sp, 0xC] + str r4, [sp, 0x10] + str r2, [sp, 0x14] + movs r0, 0x11 + str r0, [sp, 0x18] + lsls r3, 24 + asrs r3, 16 + str r3, [sp, 0x1C] + movs r0, 0xC0 + lsls r0, 10 + adds r5, r0 + asrs r5, 16 + str r5, [sp, 0x20] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_800226C + cmp r7, 0 + beq _08091A16 + cmp r7, 0 + ble _080919F4 + lsls r0, r6, 16 + movs r1, 0xA0 + lsls r1, 13 + adds r0, r1 + b _080919FA + .align 2, 0 +_080919F0: .4byte gUnknown_20397B0 +_080919F4: + lsls r0, r6, 16 + ldr r4, _08091A20 @ =0xfffc0000 + adds r0, r4 +_080919FA: + lsrs r6, r0, 16 + lsls r2, r6, 24 + lsrs r2, 24 + movs r0, 0x4 + str r0, [sp] + movs r0, 0x12 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r3, 0x2 + bl sub_8002554 +_08091A16: + add sp, 0x24 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08091A20: .4byte 0xfffc0000 + thumb_func_end sub_8091984 + + thumb_func_start sub_8091A24 +sub_8091A24: @ 8091A24 + push {r4-r6,lr} + adds r2, r0, 0 + ldr r0, _08091A50 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xB3 + lsls r1, 2 + adds r0, r1 + ldrh r0, [r0] + lsrs r0, 3 + adds r3, r0, 0 + adds r3, 0x1E + movs r0, 0x3F + ands r3, r0 + adds r0, r3, 0 + cmp r0, 0x1F + bgt _08091A54 + lsls r0, 1 + movs r6, 0x98 + lsls r6, 3 + adds r0, r6 + b _08091A5C + .align 2, 0 +_08091A50: .4byte gUnknown_20397B0 +_08091A54: + lsls r0, 1 + movs r1, 0xC8 + lsls r1, 4 + adds r0, r1 +_08091A5C: + adds r2, r0 + movs r0, 0 + movs r5, 0 + movs r4, 0x3F +_08091A64: + strh r5, [r2] + adds r2, 0x2 + adds r3, 0x1 + ands r3, r4 + adds r1, r3, 0 + cmp r1, 0 + bne _08091A76 + ldr r6, _08091A90 @ =0xfffff7c0 + adds r2, r6 +_08091A76: + cmp r1, 0x20 + bne _08091A80 + movs r1, 0xF8 + lsls r1, 3 + adds r2, r1 +_08091A80: + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2B + bls _08091A64 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08091A90: .4byte 0xfffff7c0 + thumb_func_end sub_8091A24 + + thumb_func_start sub_8091A94 +sub_8091A94: @ 8091A94 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + mov r8, r0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _08091C1C @ =gUnknown_20397B0 + mov r10, r1 + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 2 + adds r0, r1, r2 + str r0, [sp, 0x28] + mov r3, sp + adds r3, 0x28 + str r3, [sp, 0x30] + ldr r0, _08091C20 @ =0x00030200 + str r0, [r3, 0x4] + ldr r4, _08091C24 @ =0x000006fc + adds r1, r4 + str r1, [sp, 0x18] + add r0, sp, 0x1C + ldr r7, _08091C28 @ =0x0000dac9 + strh r7, [r0] + add r0, sp, 0x20 + movs r1, 0 + movs r2, 0x8 + bl memset + add r1, sp, 0x18 + add r0, sp, 0x8 + movs r2, 0x10 + bl memcpy + mov r0, r8 + bl sub_808BD94 + lsls r0, 24 + mov r5, r10 + ldr r4, [r5] + ldr r2, _08091C2C @ =gUnknown_83D29D0 + lsrs r0, 22 + adds r1, r0, r2 + ldrh r3, [r1] + movs r5, 0xE3 + lsls r5, 3 + adds r1, r4, r5 + strh r3, [r1] + adds r2, 0x2 + adds r0, r2 + ldrh r0, [r0] + ldr r1, _08091C30 @ =0x0000071a + adds r4, r1 + strh r0, [r4] + add r0, sp, 0x8 + bl sub_8008974 + mov r2, r10 + ldr r0, [r2] + movs r6, 0xE7 + lsls r6, 3 + adds r0, r6 + movs r1, 0xFC + lsls r1, 2 + str r1, [r0] + adds r0, r7, 0 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + mov r4, r10 + ldr r3, [r4] + lsls r1, r0, 4 + movs r5, 0x87 + lsls r5, 1 + mov r9, r5 + add r1, r9 + ldr r4, _08091C34 @ =0x0000071c + adds r2, r3, r4 + strh r1, [r2] + adds r3, r6 + movs r5, 0x80 + lsls r5, 9 + adds r1, r5, 0 + lsls r1, r0 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r0, r7, 0 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + mov r1, r10 + ldr r4, [r1] + lsls r1, r0, 4 + add r1, r9 + ldr r3, _08091C38 @ =0x0000071e + adds r2, r4, r3 + strh r1, [r2] + adds r6, r4, r6 + lsls r5, r0 + ldr r0, [r6] + orrs r0, r5 + str r0, [r6] + ldr r5, _08091C3C @ =0x000021a8 + adds r4, r5 + mov r0, r8 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x8 + bl sub_8009230 + mov r4, r10 + ldr r0, [r4] + adds r5, r0, r5 + movs r2, 0xBE + lsls r2, 2 + adds r1, r0, r2 + movs r3, 0x9F + lsls r3, 3 + adds r0, r3 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + ldr r0, [sp, 0x30] + bl sub_80086DC + mov r0, r8 + bl sub_808BD6C + bl sub_8091F60 + movs r4, 0 + lsls r0, 16 + asrs r6, r0, 16 +_08091BBC: + lsls r1, r4, 5 + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + ldr r0, _08091C40 @ =gUnknown_83D2B7C + movs r2, 0x1C + movs r3, 0x18 + bl sub_8006F8C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r5, _08091C1C @ =gUnknown_20397B0 + ldr r2, [r5] + lsls r0, r4, 2 + movs r3, 0xE4 + lsls r3, 3 + adds r2, r3 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08091C44 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + lsls r1, r4, 24 + lsrs r1, 24 + bl sub_800838C + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + bls _08091BBC + ldr r0, [r5] + movs r4, 0xDF + lsls r4, 3 + adds r0, r4 + movs r1, 0 + strb r1, [r0] + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08091C1C: .4byte gUnknown_20397B0 +_08091C20: .4byte 0x00030200 +_08091C24: .4byte 0x000006fc +_08091C28: .4byte 0x0000dac9 +_08091C2C: .4byte gUnknown_83D29D0 +_08091C30: .4byte 0x0000071a +_08091C34: .4byte 0x0000071c +_08091C38: .4byte 0x0000071e +_08091C3C: .4byte 0x000021a8 +_08091C40: .4byte gUnknown_83D2B7C +_08091C44: .4byte gUnknown_202063C + thumb_func_end sub_8091A94 + + thumb_func_start sub_8091C48 +sub_8091C48: @ 8091C48 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x2C] + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + ldr r4, _08091CC4 @ =gUnknown_20397B0 + ldr r2, [r4] + movs r1, 0xBE + lsls r1, 2 + adds r0, r2, r1 + str r0, [sp, 0x20] + add r3, sp, 0x20 + ldr r5, _08091CC8 @ =0x0000ffff + mov r12, r5 + movs r6, 0xC0 + lsls r6, 10 + mov r9, r6 + ldr r0, _08091CCC @ =0x00030200 + str r0, [r3, 0x4] + add r1, sp, 0x8 + ldr r0, _08091CD0 @ =gUnknown_83D2B7C + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + movs r1, 0 + movs r5, 0xDF + lsls r5, 3 + adds r2, r5 + ldrb r0, [r2] + mov r8, r4 + adds r6, r3, 0 + cmp r0, 0 + bne _08091C9C + movs r1, 0x1 +_08091C9C: + strb r1, [r2] + mov r7, r8 + ldr r0, [r7] + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _08091CD8 + ldr r0, [r6, 0x4] + mov r1, r12 + ands r0, r1 + mov r2, r9 + orrs r0, r2 + str r0, [r6, 0x4] + ldr r0, [r7] + ldr r3, _08091CD4 @ =0x0000071c + adds r0, r3 + ldrh r0, [r0] + mov r9, r0 + b _08091CFC + .align 2, 0 +_08091CC4: .4byte gUnknown_20397B0 +_08091CC8: .4byte 0x0000ffff +_08091CCC: .4byte 0x00030200 +_08091CD0: .4byte gUnknown_83D2B7C +_08091CD4: .4byte 0x0000071c +_08091CD8: + ldr r0, [r6, 0x4] + mov r5, r12 + ands r0, r5 + movs r1, 0x80 + lsls r1, 11 + orrs r0, r1 + str r0, [r6, 0x4] + mov r7, r8 + ldr r0, [r7] + ldr r1, _08091E18 @ =0x0000071c + adds r0, r1 + ldrh r0, [r0] + mov r9, r0 + add r1, sp, 0x8 + movs r0, 0x4 + strh r0, [r1] + ldr r0, _08091E1C @ =0x0000dac9 + strh r0, [r1, 0x2] +_08091CFC: + mov r2, r8 + ldr r4, [r2] + ldr r5, _08091E20 @ =0x000021a8 + adds r4, r5 + ldr r0, [sp, 0x2C] + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x8 + bl sub_8009230 + mov r3, r8 + ldr r0, [r3] + adds r5, r0, r5 + movs r7, 0xBE + lsls r7, 2 + adds r1, r0, r7 + movs r2, 0x9F + lsls r2, 3 + adds r0, r2 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + adds r0, r6, 0 + bl sub_80086DC + ldr r0, [sp, 0x2C] + bl sub_808BD94 + lsls r0, 24 + lsrs r0, 22 + ldr r1, _08091E24 @ =gUnknown_83D29D0 + adds r0, r1 + mov r1, r9 + movs r2, 0x4 + bl sub_80703EC + ldr r0, [sp, 0x2C] + bl sub_808BD6C + bl sub_8091F60 + lsls r0, 16 + mov r3, r10 + lsls r2, r3, 24 + asrs r2, 24 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 6 + lsrs r5, r0, 16 + str r5, [sp, 0x28] + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + movs r7, 0 + mov r9, r8 + negs r2, r2 + mov r8, r2 +_08091D82: + lsls r6, r7, 5 + mov r0, r10 + lsls r1, r0, 16 + asrs r1, 16 + adds r1, r6 + lsls r1, 16 + asrs r1, 16 + add r0, sp, 0x8 + movs r2, 0x1C + movs r3, 0x18 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r1, r9 + ldr r2, [r1] + lsls r5, r7, 2 + movs r3, 0xE5 + lsls r3, 3 + adds r2, r3 + adds r2, r5 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08091E28 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + mov r0, r8 + lsls r4, r0, 1 + add r4, r8 + lsls r4, 1 + strh r4, [r1, 0x2E] + ldr r1, [r2] + ldr r3, [sp, 0x28] + lsls r0, r3, 16 + asrs r0, 16 + adds r0, r6 + strh r0, [r1, 0x30] + ldr r0, [r2] + movs r6, 0 + strh r6, [r0, 0x32] + ldr r0, [r2] + ldr r1, _08091E2C @ =sub_8091E84 + str r1, [r0, 0x1C] + lsls r1, r7, 24 + lsrs r1, 24 + bl sub_800838C + mov r1, r9 + ldr r0, [r1] + movs r2, 0xE4 + lsls r2, 3 + adds r0, r2 + adds r0, r5 + ldr r1, [r0] + strh r4, [r1, 0x2E] + ldr r2, [r0] + movs r1, 0x1 + strh r1, [r2, 0x30] + ldr r1, [r0] + ldr r0, _08091E30 @ =sub_8091EB8 + str r0, [r1, 0x1C] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x1 + bls _08091D82 + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08091E18: .4byte 0x0000071c +_08091E1C: .4byte 0x0000dac9 +_08091E20: .4byte 0x000021a8 +_08091E24: .4byte gUnknown_83D29D0 +_08091E28: .4byte gUnknown_202063C +_08091E2C: .4byte sub_8091E84 +_08091E30: .4byte sub_8091EB8 + thumb_func_end sub_8091C48 + + thumb_func_start sub_8091E34 +sub_8091E34: @ 8091E34 + push {lr} + ldr r0, _08091E50 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xDF + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08091E54 + movs r0, 0x4 + bl sub_800874C + b _08091E5A + .align 2, 0 +_08091E50: .4byte gUnknown_20397B0 +_08091E54: + movs r0, 0x3 + bl sub_800874C +_08091E5A: + ldr r0, _08091E7C @ =gUnknown_20397B0 + ldr r0, [r0] + movs r3, 0xE4 + lsls r3, 3 + adds r2, r0, r3 + adds r3, 0x8 + adds r1, r0, r3 + ldr r1, [r1] + str r1, [r2] + ldr r2, _08091E80 @ =0x00000724 + adds r1, r0, r2 + adds r3, 0x4 + adds r0, r3 + ldr r0, [r0] + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08091E7C: .4byte gUnknown_20397B0 +_08091E80: .4byte 0x00000724 + thumb_func_end sub_8091E34 + + thumb_func_start sub_8091E84 +sub_8091E84: @ 8091E84 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x32] + movs r3, 0x32 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _08091E98 + subs r0, r1, 0x1 + strh r0, [r2, 0x32] + b _08091EB0 +_08091E98: + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x30 + ldrsh r1, [r2, r3] + cmp r0, r1 + bne _08091EB0 + ldr r0, _08091EB4 @ =nullsub_8 + str r0, [r2, 0x1C] +_08091EB0: + pop {r0} + bx r0 + .align 2, 0 +_08091EB4: .4byte nullsub_8 + thumb_func_end sub_8091E84 + + thumb_func_start sub_8091EB8 +sub_8091EB8: @ 8091EB8 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x30] + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _08091ECC + subs r0, r1, 0x1 + strh r0, [r2, 0x30] + b _08091EEA +_08091ECC: + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x32] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC0 + bls _08091EEA + adds r0, r2, 0 + bl sub_8007280 +_08091EEA: + pop {r0} + bx r0 + thumb_func_end sub_8091EB8 + + thumb_func_start sub_8091EF0 +sub_8091EF0: @ 8091EF0 + push {lr} + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD94 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08091F2C @ =gUnknown_20397B0 + ldr r2, [r0] + movs r3, 0xDF + lsls r3, 3 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _08091F38 + lsls r0, r1, 2 + ldr r1, _08091F30 @ =gUnknown_83D29D0 + adds r0, r1 + adds r3, 0x24 + adds r1, r2, r3 + ldrh r1, [r1] + lsls r1, 1 + ldr r2, _08091F34 @ =gUnknown_20371F8 + adds r1, r2 + movs r2, 0x2 + bl CpuSet + b _08091F50 + .align 2, 0 +_08091F2C: .4byte gUnknown_20397B0 +_08091F30: .4byte gUnknown_83D29D0 +_08091F34: .4byte gUnknown_20371F8 +_08091F38: + lsls r0, r1, 2 + ldr r1, _08091F54 @ =gUnknown_83D29D0 + adds r0, r1 + ldr r3, _08091F58 @ =0x0000071e + adds r1, r2, r3 + ldrh r1, [r1] + lsls r1, 1 + ldr r2, _08091F5C @ =gUnknown_20371F8 + adds r1, r2 + movs r2, 0x2 + bl CpuSet +_08091F50: + pop {r0} + bx r0 + .align 2, 0 +_08091F54: .4byte gUnknown_83D29D0 +_08091F58: .4byte 0x0000071e +_08091F5C: .4byte gUnknown_20371F8 + thumb_func_end sub_8091EF0 + + thumb_func_start sub_8091F60 +sub_8091F60: @ 8091F60 + push {lr} + adds r1, r0, 0 + movs r0, 0x1 + movs r2, 0 + bl sub_8005ED4 + adds r1, r0, 0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + movs r0, 0xB0 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8091F60 + + thumb_func_start sub_8091F80 +sub_8091F80: @ 8091F80 + push {r4,r5,lr} + ldr r0, _08091FFC @ =gUnknown_83D2B54 + bl sub_80086DC + movs r5, 0 +_08091F8A: + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 19 + movs r0, 0xB8 + lsls r0, 15 + adds r1, r0 + asrs r1, 16 + ldr r0, _08092000 @ =gUnknown_83D2BB4 + movs r2, 0x1C + movs r3, 0x16 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08091FDC + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08092004 @ =gUnknown_202063C + adds r4, r0, r1 + lsls r1, r5, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + movs r0, 0x1 + cmp r5, 0 + bne _08091FCA + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_08091FCA: + strh r0, [r4, 0x34] + ldr r0, _08092008 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r5, 2 + movs r2, 0xE6 + lsls r2, 3 + adds r0, r2 + adds r0, r1 + str r4, [r0] +_08091FDC: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x1 + bls _08091F8A + bl sub_80939AC + lsls r0, 24 + cmp r0, 0 + beq _08091FF6 + movs r0, 0x1 + bl sub_80920FC +_08091FF6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08091FFC: .4byte gUnknown_83D2B54 +_08092000: .4byte gUnknown_83D2BB4 +_08092004: .4byte gUnknown_202063C +_08092008: .4byte gUnknown_20397B0 + thumb_func_end sub_8091F80 + + thumb_func_start sub_809200C +sub_809200C: @ 809200C + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r2, 0 + ldr r7, _08092060 @ =gUnknown_20397B0 + mov r12, r7 + movs r6, 0xE6 + lsls r6, 3 + movs r4, 0 + movs r3, 0x2 +_08092020: + mov r0, r12 + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r6 + adds r1, r0 + ldr r0, [r1] + strh r4, [r0, 0x24] + ldr r0, [r1] + strh r3, [r0, 0x2E] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x1 + bls _08092020 + lsls r0, r5, 24 + cmp r0, 0 + bge _08092068 + ldr r1, [r7] + movs r2, 0xE6 + lsls r2, 3 + adds r3, r1, r2 + ldr r2, [r3] + movs r0, 0x1D + strh r0, [r2, 0x30] + ldr r0, _08092064 @ =0x00000734 + adds r1, r0 + ldr r2, [r1] + movs r0, 0x5 + strh r0, [r2, 0x30] + ldr r0, [r3] + movs r2, 0x48 + b _08092084 + .align 2, 0 +_08092060: .4byte gUnknown_20397B0 +_08092064: .4byte 0x00000734 +_08092068: + ldr r1, [r7] + movs r2, 0xE6 + lsls r2, 3 + adds r3, r1, r2 + ldr r2, [r3] + movs r0, 0x5 + strh r0, [r2, 0x30] + ldr r0, _080920A8 @ =0x00000734 + adds r1, r0 + ldr r2, [r1] + movs r0, 0x1D + strh r0, [r2, 0x30] + ldr r0, [r3] + movs r2, 0xF8 +_08092084: + strh r2, [r0, 0x32] + ldr r0, [r1] + strh r2, [r0, 0x32] + ldr r1, [r7] + movs r2, 0xE6 + lsls r2, 3 + adds r0, r1, r2 + ldr r2, [r0] + movs r0, 0 + strh r0, [r2, 0x3C] + ldr r0, _080920A8 @ =0x00000734 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x1 + strh r0, [r1, 0x3C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080920A8: .4byte 0x00000734 + thumb_func_end sub_809200C + + thumb_func_start sub_80920AC +sub_80920AC: @ 80920AC + push {r4-r6,lr} + movs r3, 0 + movs r5, 0 + movs r6, 0x5 + negs r6, r6 + ldr r4, _080920F8 @ =gUnknown_20397B0 +_080920B8: + ldr r1, [r4] + lsls r0, r3, 2 + movs r2, 0xE6 + lsls r2, 3 + adds r1, r2 + adds r1, r0 + ldr r2, [r1] + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 3 + adds r0, 0x5C + strh r0, [r2, 0x20] + ldr r0, [r1] + strh r5, [r0, 0x24] + ldr r1, [r1] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x1 + bls _080920B8 + movs r0, 0x1 + bl sub_80920FC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080920F8: .4byte gUnknown_20397B0 + thumb_func_end sub_80920AC + + thumb_func_start sub_80920FC +sub_80920FC: @ 80920FC + push {r4-r6,lr} + lsls r0, 24 + cmp r0, 0 + beq _08092138 + movs r2, 0 + ldr r6, _08092134 @ =gUnknown_20397B0 + movs r5, 0xE6 + lsls r5, 3 + movs r3, 0 + movs r4, 0x1 +_08092110: + ldr r1, [r6] + lsls r0, r2, 2 + adds r1, r5 + adds r1, r0 + ldr r0, [r1] + strh r4, [r0, 0x2E] + ldr r0, [r1] + strh r3, [r0, 0x30] + ldr r0, [r1] + strh r3, [r0, 0x32] + ldr r0, [r1] + strh r3, [r0, 0x36] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x1 + bls _08092110 + b _08092158 + .align 2, 0 +_08092134: .4byte gUnknown_20397B0 +_08092138: + movs r2, 0 + ldr r5, _08092160 @ =gUnknown_20397B0 + movs r4, 0xE6 + lsls r4, 3 + movs r3, 0 +_08092142: + ldr r0, [r5] + lsls r1, r2, 2 + adds r0, r4 + adds r0, r1 + ldr r0, [r0] + strh r3, [r0, 0x2E] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x1 + bls _08092142 +_08092158: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08092160: .4byte gUnknown_20397B0 + thumb_func_end sub_80920FC + + thumb_func_start sub_8092164 +sub_8092164: @ 8092164 + push {lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x4 + bhi _08092230 + lsls r0, 2 + ldr r1, _0809217C @ =_08092180 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809217C: .4byte _08092180 + .align 2, 0 +_08092180: + .4byte _08092194 + .4byte _0809219A + .4byte _080921C8 + .4byte _080921CE + .4byte _08092220 +_08092194: + movs r0, 0 + strh r0, [r2, 0x24] + b _08092230 +_0809219A: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + movs r1, 0 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _08092230 + strh r1, [r2, 0x30] + ldrh r0, [r2, 0x34] + ldrh r3, [r2, 0x24] + adds r0, r3 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _08092230 + strh r1, [r2, 0x32] + strh r1, [r2, 0x24] + b _08092230 +_080921C8: + movs r0, 0x3 + strh r0, [r2, 0x2E] + b _08092230 +_080921CE: + ldr r0, _08092218 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r0, _0809221C @ =0x000002ce + adds r1, r0 + ldrh r0, [r2, 0x20] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2, 0x20] + subs r0, 0x49 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAE + bls _080921F4 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] +_080921F4: + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _08092230 + ldrh r0, [r2, 0x32] + strh r0, [r2, 0x20] + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + movs r0, 0x4 + strh r0, [r2, 0x2E] + b _08092230 + .align 2, 0 +_08092218: .4byte gUnknown_20397B0 +_0809221C: .4byte 0x000002ce +_08092220: + ldr r0, _08092234 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08092238 @ =0x000002ce + adds r0, r1 + ldrh r1, [r2, 0x20] + ldrh r0, [r0] + subs r1, r0 + strh r1, [r2, 0x20] +_08092230: + pop {r0} + bx r0 + .align 2, 0 +_08092234: .4byte gUnknown_20397B0 +_08092238: .4byte 0x000002ce + thumb_func_end sub_8092164 + + thumb_func_start sub_809223C +sub_809223C: @ 809223C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r4, [sp, 0x18] + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080922A8 @ =gUnknown_83D2BB4 + lsls r5, 16 + asrs r5, 16 + lsls r6, 16 + asrs r6, 16 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080922B4 + movs r1, 0x1 + ands r1, r7 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r5, _080922AC @ =gUnknown_202063C + adds r6, r4, r5 + adds r0, r6, 0 + bl sub_800838C + movs r0, 0x3 + mov r1, r8 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r6, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x5] + adds r5, 0x1C + adds r4, r5 + ldr r0, _080922B0 @ =nullsub_8 + str r0, [r4] + adds r0, r6, 0 + b _080922B6 + .align 2, 0 +_080922A8: .4byte gUnknown_83D2BB4 +_080922AC: .4byte gUnknown_202063C +_080922B0: .4byte nullsub_8 +_080922B4: + movs r0, 0 +_080922B6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809223C + + thumb_func_start sub_80922C0 +sub_80922C0: @ 80922C0 + push {lr} + ldr r0, _080922D4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r1, [r0, 0x1] + cmp r1, 0x1 + beq _080922DC + ldr r1, _080922D8 @ =gUnknown_2039820 + movs r0, 0 + strb r0, [r1] + b _080922E0 + .align 2, 0 +_080922D4: .4byte gUnknown_20397B0 +_080922D8: .4byte gUnknown_2039820 +_080922DC: + ldr r0, _0809231C @ =gUnknown_2039820 + strb r1, [r0] +_080922E0: + ldr r0, _08092320 @ =gUnknown_2039821 + movs r1, 0 + strb r1, [r0] + ldr r0, _08092324 @ =gUnknown_2039822 + strb r1, [r0] + ldr r0, _08092328 @ =gUnknown_2039823 + strb r1, [r0] + ldr r0, _0809232C @ =gUnknown_2039824 + strb r1, [r0] + ldr r0, _08092330 @ =gUnknown_2039825 + strb r1, [r0] + bl sub_8092B50 + bl sub_8094AD8 + ldr r2, _08092334 @ =gUnknown_20397B0 + ldr r0, [r2] + ldr r1, _08092338 @ =0x00000cd2 + adds r0, r1 + movs r3, 0 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _0809233C @ =0x000021ef + adds r0, r1 + strb r3, [r0] + bl sub_8093A10 + pop {r0} + bx r0 + .align 2, 0 +_0809231C: .4byte gUnknown_2039820 +_08092320: .4byte gUnknown_2039821 +_08092324: .4byte gUnknown_2039822 +_08092328: .4byte gUnknown_2039823 +_0809232C: .4byte gUnknown_2039824 +_08092330: .4byte gUnknown_2039825 +_08092334: .4byte gUnknown_20397B0 +_08092338: .4byte 0x00000cd2 +_0809233C: .4byte 0x000021ef + thumb_func_end sub_80922C0 + + thumb_func_start sub_8092340 +sub_8092340: @ 8092340 + push {lr} + bl sub_8094AD8 + bl sub_8093AAC + ldr r3, _08092380 @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r1, _08092384 @ =0x00000cd2 + adds r0, r1 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r3] + ldr r1, _08092388 @ =0x000021ef + adds r0, r1 + strb r2, [r0] + ldr r0, _0809238C @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _0809237A + ldr r0, [r3] + ldr r1, _08092390 @ =0x000020a0 + adds r0, r1 + ldr r1, _08092394 @ =gUnknown_20397BC + movs r2, 0x64 + bl memcpy + bl sub_8090070 +_0809237A: + pop {r0} + bx r0 + .align 2, 0 +_08092380: .4byte gUnknown_20397B0 +_08092384: .4byte 0x00000cd2 +_08092388: .4byte 0x000021ef +_0809238C: .4byte gUnknown_2039822 +_08092390: .4byte 0x000020a0 +_08092394: .4byte gUnknown_20397BC + thumb_func_end sub_8092340 + + thumb_func_start sub_8092398 +sub_8092398: @ 8092398 + push {r4-r6,lr} + adds r4, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r0, 0x4 + bhi _08092450 + lsls r0, 2 + ldr r1, _080923B4 @ =_080923B8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080923B4: .4byte _080923B8 + .align 2, 0 +_080923B8: + .4byte _080923CC + .4byte _080923FA + .4byte _08092422 + .4byte _0809242A + .4byte _08092448 +_080923CC: + adds r0, r5, 0 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, 0x64 + strh r1, [r4] + adds r0, r5, 0 + movs r1, 0x6 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, 0x20 + strh r1, [r6] + b _08092450 +_080923FA: + cmp r5, 0 + bne _08092406 + movs r0, 0x68 + strh r0, [r4] + movs r0, 0x34 + b _0809244E +_08092406: + cmp r5, 0x6 + bne _08092412 + movs r0, 0x98 + strh r0, [r4] + movs r0, 0x84 + b _0809244E +_08092412: + movs r0, 0x98 + strh r0, [r4] + subs r1, r5, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, 0x4 + b _0809244E +_08092422: + movs r0, 0xA2 + strh r0, [r4] + movs r0, 0xC + b _0809244E +_0809242A: + ldr r0, _08092444 @ =gUnknown_2039822 + ldrb r0, [r0] + movs r1, 0xE + cmp r0, 0 + beq _08092436 + movs r1, 0x8 +_08092436: + strh r1, [r6] + movs r0, 0x58 + muls r0, r5 + adds r0, 0x78 + strh r0, [r4] + b _08092450 + .align 2, 0 +_08092444: .4byte gUnknown_2039822 +_08092448: + movs r0, 0xA0 + strh r0, [r4] + movs r0, 0x60 +_0809244E: + strh r0, [r6] +_08092450: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8092398 + + thumb_func_start sub_8092458 +sub_8092458: @ 8092458 + push {lr} + ldr r0, _08092480 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _0809248C + cmp r0, 0x1 + bne _080924A0 + ldr r0, _08092484 @ =gUnknown_2039821 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08092488 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + b _08092496 + .align 2, 0 +_08092480: .4byte gUnknown_2039820 +_08092484: .4byte gUnknown_2039821 +_08092488: .4byte gUnknown_2024284 +_0809248C: + ldr r0, _0809249C @ =gUnknown_2039821 + ldrb r0, [r0] + movs r1, 0xB + bl sub_808BAA0 +_08092496: + lsls r0, 16 + lsrs r0, 16 + b _080924A2 + .align 2, 0 +_0809249C: .4byte gUnknown_2039821 +_080924A0: + movs r0, 0 +_080924A2: + pop {r1} + bx r1 + thumb_func_end sub_8092458 + + thumb_func_start sub_80924A8 +sub_80924A8: @ 80924A8 + push {r4-r7,lr} + ldr r7, _080924C4 @ =gUnknown_20397B0 + ldr r5, [r7] + ldr r0, _080924C8 @ =0x00000ccc + adds r1, r5, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _080924D6 + ldrb r0, [r5, 0x1] + cmp r0, 0x3 + beq _080924CC + movs r0, 0 + b _080925F4 + .align 2, 0 +_080924C4: .4byte gUnknown_20397B0 +_080924C8: .4byte 0x00000ccc +_080924CC: + bl sub_809610C + lsls r0, 24 + lsrs r0, 24 + b _080925F4 +_080924D6: + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _080925D4 + ldr r1, _080925C4 @ =0x00000cb8 + adds r4, r5, r1 + movs r2, 0xCC + lsls r2, 4 + adds r1, r5, r2 + ldr r0, [r4] + ldr r1, [r1] + adds r0, r1 + str r0, [r4] + ldr r0, _080925C8 @ =0x00000cbc + adds r3, r5, r0 + adds r2, 0x4 + adds r1, r5, r2 + ldr r0, [r3] + ldr r1, [r1] + adds r0, r1 + str r0, [r3] + movs r6, 0xCB + lsls r6, 4 + adds r1, r5, r6 + ldr r2, [r1] + ldr r0, [r4] + asrs r0, 8 + strh r0, [r2, 0x20] + ldr r2, [r1] + ldr r0, [r3] + asrs r0, 8 + strh r0, [r2, 0x22] + ldr r1, [r1] + ldrh r2, [r1, 0x20] + movs r3, 0x20 + ldrsh r0, [r1, r3] + movs r3, 0x80 + lsls r3, 1 + cmp r0, r3 + ble _08092534 + ldr r4, _080925CC @ =0xffffff00 + adds r0, r2, r4 + lsls r0, 16 + asrs r0, 16 + adds r0, 0x40 + strh r0, [r1, 0x20] +_08092534: + ldr r0, [r7] + adds r0, r6 + ldr r1, [r0] + ldrh r2, [r1, 0x20] + movs r4, 0x20 + ldrsh r0, [r1, r4] + cmp r0, 0x3F + bgt _08092550 + movs r0, 0x40 + subs r0, r2 + lsls r0, 16 + asrs r0, 16 + subs r0, r3, r0 + strh r0, [r1, 0x20] +_08092550: + ldr r0, [r7] + adds r0, r6 + ldr r1, [r0] + ldrh r2, [r1, 0x22] + movs r3, 0x22 + ldrsh r0, [r1, r3] + cmp r0, 0xB0 + ble _0809256C + adds r0, r2, 0 + subs r0, 0xB0 + lsls r0, 16 + asrs r0, 16 + subs r0, 0x10 + strh r0, [r1, 0x22] +_0809256C: + ldr r0, [r7] + adds r0, r6 + ldr r2, [r0] + ldrh r3, [r2, 0x22] + movs r4, 0x22 + ldrsh r0, [r2, r4] + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _0809258C + subs r0, r1, r3 + movs r1, 0xB0 + lsls r0, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r2, 0x22] +_0809258C: + ldr r0, [r7] + ldr r2, _080925D0 @ =0x00000cd3 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _080925F2 + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _080925F2 + ldr r0, [r7] + adds r0, r6 + ldr r2, [r0] + adds r2, 0x3F + ldrb r3, [r2] + lsrs r1, r3, 1 + movs r0, 0x1 + eors r1, r0 + ands r1, r0 + lsls r1, 1 + movs r0, 0x3 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _080925F2 + .align 2, 0 +_080925C4: .4byte 0x00000cb8 +_080925C8: .4byte 0x00000cbc +_080925CC: .4byte 0xffffff00 +_080925D0: .4byte 0x00000cd3 +_080925D4: + movs r3, 0xCB + lsls r3, 4 + adds r2, r5, r3 + ldr r1, [r2] + ldr r4, _080925FC @ =0x00000cc8 + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r1, 0x20] + ldr r1, [r2] + ldr r2, _08092600 @ =0x00000cca + adds r0, r5, r2 + ldrh r0, [r0] + strh r0, [r1, 0x22] + bl sub_80929B0 +_080925F2: + movs r0, 0x1 +_080925F4: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080925FC: .4byte 0x00000cc8 +_08092600: .4byte 0x00000cca + thumb_func_end sub_80924A8 + + thumb_func_start sub_8092604 +sub_8092604: @ 8092604 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r6, sp + adds r6, 0x2 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + adds r3, r6, 0 + bl sub_8092398 + ldr r1, _08092654 @ =gUnknown_20397B0 + ldr r0, [r1] + movs r2, 0xCD + lsls r2, 4 + adds r0, r2 + strb r4, [r0] + ldr r0, [r1] + ldr r3, _08092658 @ =0x00000cd1 + adds r0, r3 + strb r5, [r0] + ldr r1, [r1] + mov r0, sp + ldrh r2, [r0] + subs r3, 0x9 + adds r0, r1, r3 + strh r2, [r0] + ldrh r0, [r6] + ldr r2, _0809265C @ =0x00000cca + adds r1, r2 + strh r0, [r1] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08092654: .4byte gUnknown_20397B0 +_08092658: .4byte 0x00000cd1 +_0809265C: .4byte 0x00000cca + thumb_func_end sub_8092604 + + thumb_func_start sub_8092660 +sub_8092660: @ 8092660 + push {r4-r7,lr} + ldr r0, _0809267C @ =gUnknown_20397B0 + ldr r2, [r0] + ldr r3, _08092680 @ =0x00000cce + adds r1, r2, r3 + ldrh r1, [r1] + adds r4, r0, 0 + cmp r1, 0 + beq _08092688 + ldr r0, _08092684 @ =0x00000ccc + adds r1, r2, r0 + movs r0, 0xC + b _0809268E + .align 2, 0 +_0809267C: .4byte gUnknown_20397B0 +_08092680: .4byte 0x00000cce +_08092684: .4byte 0x00000ccc +_08092688: + ldr r3, _080926D4 @ =0x00000ccc + adds r1, r2, r3 + movs r0, 0x6 +_0809268E: + strh r0, [r1] + ldr r1, [r4] + ldr r0, _080926D8 @ =0x00000cd3 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0 + beq _080926A6 + ldr r3, _080926D4 @ =0x00000ccc + adds r0, r1, r3 + ldrh r0, [r0] + lsrs r0, 1 + strb r0, [r2] +_080926A6: + ldr r2, [r4] + ldr r1, _080926DC @ =0x00000cce + adds r0, r2, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080926E4 + cmp r1, 0x1 + beq _08092700 + ldr r3, _080926E0 @ =0x00000cca + adds r0, r2, r3 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0xCB + lsls r3, 4 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, 0x22 + ldrsh r0, [r0, r2] + b _08092716 + .align 2, 0 +_080926D4: .4byte 0x00000ccc +_080926D8: .4byte 0x00000cd3 +_080926DC: .4byte 0x00000cce +_080926E0: .4byte 0x00000cca +_080926E4: + ldr r3, _080926FC @ =0x00000cca + adds r0, r2, r3 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0xCB + lsls r3, 4 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, 0x22 + ldrsh r0, [r0, r2] + adds r0, 0xC0 + b _08092716 + .align 2, 0 +_080926FC: .4byte 0x00000cca +_08092700: + ldr r3, _08092744 @ =0x00000cca + adds r0, r2, r3 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0xCB + lsls r3, 4 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, 0x22 + ldrsh r0, [r0, r2] + subs r0, 0xC0 +_08092716: + subs r7, r1, r0 + ldr r2, [r4] + ldr r3, _08092748 @ =0x00000ccf + adds r0, r2, r3 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08092750 + cmp r1, 0x1 + beq _0809276C + ldr r1, _0809274C @ =0x00000cc8 + adds r0, r2, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0xCB + lsls r3, 4 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, 0x20 + ldrsh r0, [r0, r2] + b _08092782 + .align 2, 0 +_08092744: .4byte 0x00000cca +_08092748: .4byte 0x00000ccf +_0809274C: .4byte 0x00000cc8 +_08092750: + ldr r3, _08092768 @ =0x00000cc8 + adds r0, r2, r3 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0xCB + lsls r3, 4 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r0, 0xC0 + b _08092782 + .align 2, 0 +_08092768: .4byte 0x00000cc8 +_0809276C: + ldr r3, _080927D4 @ =0x00000cc8 + adds r0, r2, r3 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0xCB + lsls r3, 4 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, 0x20 + ldrsh r0, [r0, r2] + subs r0, 0xC0 +_08092782: + subs r0, r1, r0 + lsls r7, 8 + lsls r0, 8 + ldr r4, [r4] + movs r3, 0xCC + lsls r3, 4 + adds r6, r4, r3 + ldr r1, _080927D8 @ =0x00000ccc + adds r5, r4, r1 + ldrh r1, [r5] + bl __divsi3 + str r0, [r6] + ldr r2, _080927DC @ =0x00000cc4 + adds r6, r4, r2 + ldrh r1, [r5] + adds r0, r7, 0 + bl __divsi3 + str r0, [r6] + ldr r3, _080927E0 @ =0x00000cb8 + adds r2, r4, r3 + movs r0, 0xCB + lsls r0, 4 + adds r1, r4, r0 + ldr r0, [r1] + movs r3, 0x20 + ldrsh r0, [r0, r3] + lsls r0, 8 + str r0, [r2] + ldr r0, _080927E4 @ =0x00000cbc + adds r4, r0 + ldr r0, [r1] + movs r1, 0x22 + ldrsh r0, [r0, r1] + lsls r0, 8 + str r0, [r4] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080927D4: .4byte 0x00000cc8 +_080927D8: .4byte 0x00000ccc +_080927DC: .4byte 0x00000cc4 +_080927E0: .4byte 0x00000cb8 +_080927E4: .4byte 0x00000cbc + thumb_func_end sub_8092660 + + thumb_func_start sub_80927E8 +sub_80927E8: @ 80927E8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8092604 + bl sub_8092660 + ldr r5, _0809282C @ =gUnknown_20397B0 + ldr r1, [r5] + ldrb r0, [r1, 0x1] + cmp r0, 0x3 + beq _08092838 + ldr r2, _08092830 @ =0x000021ef + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08092852 + ldr r0, _08092834 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + bne _08092852 + movs r2, 0xCB + lsls r2, 4 + adds r0, r1, r2 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + b _08092852 + .align 2, 0 +_0809282C: .4byte gUnknown_20397B0 +_08092830: .4byte 0x000021ef +_08092834: .4byte gUnknown_2039822 +_08092838: + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + bne _08092852 + ldr r0, [r5] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C +_08092852: + ldr r0, _08092874 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _080928AC + ldr r0, _08092878 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _08092880 + ldr r0, _0809287C @ =gUnknown_2039821 + ldrb r1, [r0] + movs r0, 0 + bl sub_8095D44 + b _0809288E + .align 2, 0 +_08092874: .4byte gUnknown_20397B0 +_08092878: .4byte gUnknown_2039820 +_0809287C: .4byte gUnknown_2039821 +_08092880: + cmp r0, 0x1 + bne _0809288E + ldr r0, _0809289C @ =gUnknown_2039821 + ldrb r1, [r0] + movs r0, 0x1 + bl sub_8095D44 +_0809288E: + cmp r4, 0 + bne _080928A0 + movs r0, 0 + adds r1, r6, 0 + bl sub_8095C84 + b _080928AC + .align 2, 0 +_0809289C: .4byte gUnknown_2039821 +_080928A0: + cmp r4, 0x1 + bne _080928D8 + movs r0, 0x1 + adds r1, r6, 0 + bl sub_8095C84 +_080928AC: + cmp r4, 0x1 + bne _080928D8 + ldr r0, _08092920 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + beq _080928D8 + ldr r1, _08092924 @ =gUnknown_20397B0 + ldr r0, [r1] + ldr r2, _08092928 @ =0x00000cd2 + adds r0, r2 + strb r4, [r0] + ldr r0, [r1] + ldr r1, _0809292C @ =0x00000cb4 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] +_080928D8: + cmp r4, 0 + beq _08092930 + cmp r4, 0 + blt _080929A0 + cmp r4, 0x3 + bgt _080929A0 + ldr r5, _08092924 @ =gUnknown_20397B0 + ldr r0, [r5] + movs r2, 0xCB + lsls r2, 4 + adds r0, r2 + ldr r4, [r0] + ldrb r1, [r4, 0x5] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + movs r3, 0x4 + orrs r0, r3 + strb r0, [r4, 0x5] + ldr r0, [r5] + ldr r4, _0809292C @ =0x00000cb4 + adds r0, r4 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + ldr r0, [r5] + adds r0, r4 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + ands r2, r0 + orrs r2, r3 + strb r2, [r1, 0x5] + b _080929A0 + .align 2, 0 +_08092920: .4byte gUnknown_2039820 +_08092924: .4byte gUnknown_20397B0 +_08092928: .4byte 0x00000cd2 +_0809292C: .4byte 0x00000cb4 +_08092930: + ldr r3, _08092964 @ =gUnknown_20397B0 + ldr r1, [r3] + ldr r2, _08092968 @ =0x000021ef + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08092970 + movs r2, 0xCB + lsls r2, 4 + adds r0, r1, r2 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r3] + ldr r1, _0809296C @ =0x00000cb4 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + b _080929A0 + .align 2, 0 +_08092964: .4byte gUnknown_20397B0 +_08092968: .4byte 0x000021ef +_0809296C: .4byte 0x00000cb4 +_08092970: + movs r2, 0xCB + lsls r2, 4 + adds r0, r1, r2 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, _080929A8 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _080929A0 + ldr r0, _080929AC @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080929A0 + movs r0, 0x2 + bl sub_8091184 +_080929A0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080929A8: .4byte gUnknown_2039820 +_080929AC: .4byte gUnknown_2039822 + thumb_func_end sub_80927E8 + + thumb_func_start sub_80929B0 +sub_80929B0: @ 80929B0 + push {r4,lr} + ldr r1, _080929F4 @ =gUnknown_2039820 + ldr r4, _080929F8 @ =gUnknown_20397B0 + ldr r2, [r4] + movs r3, 0xCD + lsls r3, 4 + adds r0, r2, r3 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _080929FC @ =gUnknown_2039821 + adds r3, 0x1 + adds r0, r2, r3 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2, 0x1] + cmp r0, 0x3 + beq _08092A08 + ldr r1, _08092A00 @ =0x000021ef + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08092A22 + ldr r0, _08092A04 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + bne _08092A22 + subs r3, 0x21 + adds r0, r2, r3 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + b _08092A22 + .align 2, 0 +_080929F4: .4byte gUnknown_2039820 +_080929F8: .4byte gUnknown_20397B0 +_080929FC: .4byte gUnknown_2039821 +_08092A00: .4byte 0x000021ef +_08092A04: .4byte gUnknown_2039822 +_08092A08: + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + bne _08092A22 + ldr r0, [r4] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C +_08092A22: + bl sub_8093A10 + ldr r0, _08092A3C @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + beq _08092A52 + cmp r0, 0x1 + bgt _08092A40 + cmp r0, 0 + beq _08092A74 + b _08092AD0 + .align 2, 0 +_08092A3C: .4byte gUnknown_2039820 +_08092A40: + cmp r0, 0x2 + beq _08092A4A + cmp r0, 0x3 + bne _08092AD0 + b _08092A62 +_08092A4A: + movs r0, 0x1 + bl sub_80920FC + b _08092AD0 +_08092A52: + ldr r0, _08092A6C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _08092A70 @ =0x00000cb4 + adds r0, r2 + ldr r0, [r0] + adds r0, 0x43 + movs r1, 0xD + strb r1, [r0] +_08092A62: + movs r0, 0x1 + bl sub_8091184 + b _08092AD0 + .align 2, 0 +_08092A6C: .4byte gUnknown_20397B0 +_08092A70: .4byte 0x00000cb4 +_08092A74: + ldr r4, _08092AD8 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r3, _08092ADC @ =0x000021ef + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _08092AD0 + movs r2, 0xCB + lsls r2, 4 + adds r0, r1, r2 + ldr r3, [r0] + ldrb r1, [r3, 0x5] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r0, [r4] + ldr r3, _08092AE0 @ =0x00000cb4 + adds r0, r3 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + ands r2, r0 + movs r0, 0x8 + orrs r2, r0 + strb r2, [r1, 0x5] + ldr r0, [r4] + adds r0, r3 + ldr r0, [r0] + adds r0, 0x43 + movs r1, 0x15 + strb r1, [r0] + ldr r0, [r4] + adds r0, r3 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + movs r0, 0x2 + bl sub_8091184 +_08092AD0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08092AD8: .4byte gUnknown_20397B0 +_08092ADC: .4byte 0x000021ef +_08092AE0: .4byte 0x00000cb4 + thumb_func_end sub_80929B0 + + thumb_func_start sub_8092AE4 +sub_8092AE4: @ 8092AE4 + push {lr} + ldr r0, _08092AF4 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + bne _08092AF8 + movs r3, 0 + b _08092B06 + .align 2, 0 +_08092AF4: .4byte gUnknown_2039822 +_08092AF8: + bl sub_8040C3C + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x5 + bls _08092B06 + movs r3, 0x5 +_08092B06: + ldr r0, _08092B34 @ =gUnknown_20397B0 + ldr r2, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r2, r1 + ldr r0, [r0] + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08092B26 + ldr r0, _08092B38 @ =0x00000cd3 + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_08092B26: + movs r0, 0x1 + adds r1, r3, 0 + bl sub_80927E8 + pop {r0} + bx r0 + .align 2, 0 +_08092B34: .4byte gUnknown_20397B0 +_08092B38: .4byte 0x00000cd3 + thumb_func_end sub_8092AE4 + + thumb_func_start sub_8092B3C +sub_8092B3C: @ 8092B3C + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80927E8 + pop {r0} + bx r0 + thumb_func_end sub_8092B3C + + thumb_func_start sub_8092B50 +sub_8092B50: @ 8092B50 + ldr r1, _08092B58 @ =gUnknown_2039826 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08092B58: .4byte gUnknown_2039826 + thumb_func_end sub_8092B50 + + thumb_func_start sub_8092B5C +sub_8092B5C: @ 8092B5C + ldr r0, _08092B68 @ =gUnknown_2039826 + ldr r1, _08092B6C @ =gUnknown_2039821 + ldrb r1, [r1] + strb r1, [r0] + bx lr + .align 2, 0 +_08092B68: .4byte gUnknown_2039826 +_08092B6C: .4byte gUnknown_2039821 + thumb_func_end sub_8092B5C + + thumb_func_start sub_8092B70 +sub_8092B70: @ 8092B70 + ldr r0, _08092B78 @ =gUnknown_2039826 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092B78: .4byte gUnknown_2039826 + thumb_func_end sub_8092B70 + + thumb_func_start sub_8092B7C +sub_8092B7C: @ 8092B7C + lsls r0, 24 + ldr r1, _08092B9C @ =gUnknown_20397B0 + ldr r1, [r1] + ldr r2, _08092BA0 @ =0x00000d88 + adds r3, r1, r2 + ldr r2, _08092BA4 @ =gUnknown_83D346C + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + str r0, [r3] + ldr r0, _08092BA8 @ =0x00000d8c + adds r1, r0 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08092B9C: .4byte gUnknown_20397B0 +_08092BA0: .4byte 0x00000d88 +_08092BA4: .4byte gUnknown_83D346C +_08092BA8: .4byte 0x00000d8c + thumb_func_end sub_8092B7C + + thumb_func_start sub_8092BAC +sub_8092BAC: @ 8092BAC + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _08092BCC + ldr r0, _08092BC0 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _08092BC4 @ =0x00000d88 + adds r1, r2 + ldr r2, _08092BC8 @ =sub_8092E00 + b _08092BD6 + .align 2, 0 +_08092BC0: .4byte gUnknown_20397B0 +_08092BC4: .4byte 0x00000d88 +_08092BC8: .4byte sub_8092E00 +_08092BCC: + ldr r0, _08092BE8 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _08092BEC @ =0x00000d88 + adds r1, r2 + ldr r2, _08092BF0 @ =sub_8092E10 +_08092BD6: + str r2, [r1] + ldr r0, [r0] + ldr r1, _08092BF4 @ =0x00000d8c + adds r0, r1 + movs r1, 0 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08092BE8: .4byte gUnknown_20397B0 +_08092BEC: .4byte 0x00000d88 +_08092BF0: .4byte sub_8092E10 +_08092BF4: .4byte 0x00000d8c + thumb_func_end sub_8092BAC + + thumb_func_start sub_8092BF8 +sub_8092BF8: @ 8092BF8 + push {lr} + ldr r0, _08092C10 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08092C14 @ =0x00000d88 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08092C10: .4byte gUnknown_20397B0 +_08092C14: .4byte 0x00000d88 + thumb_func_end sub_8092BF8 + + thumb_func_start sub_8092C18 +sub_8092C18: @ 8092C18 + push {r4,r5,lr} + ldr r4, _08092C34 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r5, _08092C38 @ =0x00000d8c + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08092C68 + cmp r0, 0x1 + bgt _08092C3C + cmp r0, 0 + beq _08092C46 + b _08092C9C + .align 2, 0 +_08092C34: .4byte gUnknown_20397B0 +_08092C38: .4byte 0x00000d8c +_08092C3C: + cmp r0, 0x2 + beq _08092C88 + cmp r0, 0x3 + beq _08092C4E + b _08092C9C +_08092C46: + ldr r0, _08092C54 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _08092C58 +_08092C4E: + movs r0, 0 + b _08092C9E + .align 2, 0 +_08092C54: .4byte gUnknown_2039822 +_08092C58: + movs r2, 0xCB + lsls r2, 4 + adds r0, r1, r2 + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C + b _08092C92 +_08092C68: + bl sub_8092E20 + lsls r0, 24 + cmp r0, 0 + bne _08092C9C + ldr r0, [r4] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x3 + bl sub_800838C + bl sub_8092E80 + b _08092C92 +_08092C88: + bl sub_8092E54 + lsls r0, 24 + cmp r0, 0 + bne _08092C9C +_08092C92: + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08092C9C: + movs r0, 0x1 +_08092C9E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8092C18 + + thumb_func_start sub_8092CA4 +sub_8092CA4: @ 8092CA4 + push {r4,r5,lr} + ldr r4, _08092CC0 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r5, _08092CC4 @ =0x00000d8c + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08092CEE + cmp r0, 0x1 + bgt _08092CC8 + cmp r0, 0 + beq _08092CCE + b _08092D18 + .align 2, 0 +_08092CC0: .4byte gUnknown_20397B0 +_08092CC4: .4byte 0x00000d8c +_08092CC8: + cmp r0, 0x2 + beq _08092D14 + b _08092D18 +_08092CCE: + bl sub_8092E20 + lsls r0, 24 + cmp r0, 0 + bne _08092D18 + ldr r0, [r4] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C + bl sub_8092EF4 + b _08092D08 +_08092CEE: + bl sub_8092E54 + lsls r0, 24 + cmp r0, 0 + bne _08092D18 + ldr r0, [r4] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C +_08092D08: + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08092D18 +_08092D14: + movs r0, 0 + b _08092D1A +_08092D18: + movs r0, 0x1 +_08092D1A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8092CA4 + + thumb_func_start sub_8092D20 +sub_8092D20: @ 8092D20 + push {r4,r5,lr} + ldr r4, _08092D3C @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r5, _08092D40 @ =0x00000d8c + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08092DB4 + cmp r0, 0x1 + bgt _08092D44 + cmp r0, 0 + beq _08092D4A + b _08092DF8 + .align 2, 0 +_08092D3C: .4byte gUnknown_20397B0 +_08092D40: .4byte 0x00000d8c +_08092D44: + cmp r0, 0x2 + beq _08092DF4 + b _08092DF8 +_08092D4A: + ldr r0, _08092D64 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08092D6C + cmp r0, 0x1 + bne _08092DF4 + ldr r0, _08092D68 @ =0x00000d8d + adds r1, r0 + movs r0, 0xE + b _08092D76 + .align 2, 0 +_08092D64: .4byte gUnknown_2039820 +_08092D68: .4byte 0x00000d8d +_08092D6C: + bl sub_808B9F4 + ldr r1, [r4] + ldr r2, _08092DA4 @ =0x00000d8d + adds r1, r2 +_08092D76: + strb r0, [r1] + ldr r4, _08092DA8 @ =gUnknown_20397B0 + ldr r0, [r4] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C + ldr r0, [r4] + ldr r2, _08092DA4 @ =0x00000d8d + adds r0, r2 + ldrb r0, [r0] + ldr r1, _08092DAC @ =gUnknown_2039821 + ldrb r1, [r1] + bl sub_8090E08 + ldr r1, [r4] + ldr r0, _08092DB0 @ =0x00000d8c + adds r1, r0 + b _08092DE2 + .align 2, 0 +_08092DA4: .4byte 0x00000d8d +_08092DA8: .4byte gUnknown_20397B0 +_08092DAC: .4byte gUnknown_2039821 +_08092DB0: .4byte 0x00000d8c +_08092DB4: + bl sub_8090E74 + lsls r0, 24 + cmp r0, 0 + bne _08092DF8 + ldr r0, [r4] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x3 + bl sub_800838C + ldr r0, [r4] + ldr r2, _08092DEC @ =0x00000d8d + adds r0, r2 + ldrb r0, [r0] + ldr r1, _08092DF0 @ =gUnknown_2039821 + ldrb r1, [r1] + bl sub_8093058 + ldr r1, [r4] + adds r1, r5 +_08092DE2: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08092DF8 + .align 2, 0 +_08092DEC: .4byte 0x00000d8d +_08092DF0: .4byte gUnknown_2039821 +_08092DF4: + movs r0, 0 + b _08092DFA +_08092DF8: + movs r0, 0x1 +_08092DFA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8092D20 + + thumb_func_start sub_8092E00 +sub_8092E00: @ 8092E00 + push {lr} + bl sub_8092E20 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8092E00 + + thumb_func_start sub_8092E10 +sub_8092E10: @ 8092E10 + push {lr} + bl sub_8092E54 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8092E10 + + thumb_func_start sub_8092E20 +sub_8092E20: @ 8092E20 + push {lr} + ldr r0, _08092E44 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r1, [r0] + movs r2, 0x26 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _08092E3A + cmp r0, 0x8 + beq _08092E48 +_08092E3A: + ldrh r0, [r1, 0x26] + adds r0, 0x1 + strh r0, [r1, 0x26] + b _08092E4C + .align 2, 0 +_08092E44: .4byte gUnknown_20397B0 +_08092E48: + movs r0, 0 + b _08092E4E +_08092E4C: + movs r0, 0x1 +_08092E4E: + pop {r1} + bx r1 + thumb_func_end sub_8092E20 + + thumb_func_start sub_8092E54 +sub_8092E54: @ 8092E54 + push {lr} + ldr r0, _08092E74 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r1, [r0] + movs r2, 0x26 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _08092E78 + ldrh r0, [r1, 0x26] + subs r0, 0x1 + strh r0, [r1, 0x26] + movs r0, 0x1 + b _08092E7A + .align 2, 0 +_08092E74: .4byte gUnknown_20397B0 +_08092E78: + movs r0, 0 +_08092E7A: + pop {r1} + bx r1 + thumb_func_end sub_8092E54 + + thumb_func_start sub_8092E80 +sub_8092E80: @ 8092E80 + push {r4,lr} + ldr r0, _08092EA8 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08092EB0 + cmp r0, 0x1 + bne _08092EDC + ldr r4, _08092EAC @ =gUnknown_2039821 + ldrb r1, [r4] + movs r0, 0xE + bl sub_8092F60 + ldrb r1, [r4] + movs r0, 0 + bl sub_8090CC0 + b _08092ED6 + .align 2, 0 +_08092EA8: .4byte gUnknown_2039820 +_08092EAC: .4byte gUnknown_2039821 +_08092EB0: + ldr r0, _08092EE4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08092EE8 @ =0x000021ef + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08092ED6 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08092EEC @ =gUnknown_2039821 + ldrb r1, [r4] + bl sub_8092F60 + ldrb r1, [r4] + movs r0, 0x1 + bl sub_8090CC0 +_08092ED6: + ldr r1, _08092EF0 @ =gUnknown_2039822 + movs r0, 0x1 + strb r0, [r1] +_08092EDC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08092EE4: .4byte gUnknown_20397B0 +_08092EE8: .4byte 0x000021ef +_08092EEC: .4byte gUnknown_2039821 +_08092EF0: .4byte gUnknown_2039822 + thumb_func_end sub_8092E80 + + thumb_func_start sub_8092EF4 +sub_8092EF4: @ 8092EF4 + push {r4,r5,lr} + ldr r0, _08092F1C @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08092F24 + cmp r0, 0x1 + bne _08092F46 + ldr r4, _08092F20 @ =gUnknown_2039821 + ldrb r1, [r4] + movs r0, 0xE + bl sub_8092FD4 + ldrb r1, [r4] + movs r0, 0xE + bl sub_8090D58 + b _08092F40 + .align 2, 0 +_08092F1C: .4byte gUnknown_2039820 +_08092F20: .4byte gUnknown_2039821 +_08092F24: + bl sub_808B9F4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _08092F4C @ =gUnknown_2039821 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_8092FD4 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_8090D58 +_08092F40: + ldr r1, _08092F50 @ =gUnknown_2039822 + movs r0, 0 + strb r0, [r1] +_08092F46: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08092F4C: .4byte gUnknown_2039821 +_08092F50: .4byte gUnknown_2039822 + thumb_func_end sub_8092EF4 + + thumb_func_start sub_8092F54 +sub_8092F54: @ 8092F54 + push {lr} + bl sub_8093A10 + pop {r0} + bx r0 + thumb_func_end sub_8092F54 + + thumb_func_start sub_8092F60 +sub_8092F60: @ 8092F60 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r4, 0xE + bne _08092F9C + ldr r0, _08092F8C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08092F90 @ =0x000020a0 + adds r0, r1 + ldr r3, _08092F94 @ =gUnknown_2024284 + ldr r1, _08092F98 @ =gUnknown_2039821 + movs r2, 0 + ldrsb r2, [r1, r2] + movs r1, 0x64 + muls r1, r2 + adds r1, r3 + movs r2, 0x64 + bl memcpy + b _08092FAC + .align 2, 0 +_08092F8C: .4byte gUnknown_20397B0 +_08092F90: .4byte 0x000020a0 +_08092F94: .4byte gUnknown_2024284 +_08092F98: .4byte gUnknown_2039821 +_08092F9C: + ldr r0, _08092FC4 @ =gUnknown_20397B0 + ldr r2, [r0] + ldr r0, _08092FC8 @ =0x000020a0 + adds r2, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_808BCF0 +_08092FAC: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093030 + ldr r0, _08092FCC @ =gUnknown_2039823 + strb r4, [r0] + ldr r0, _08092FD0 @ =gUnknown_2039824 + strb r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08092FC4: .4byte gUnknown_20397B0 +_08092FC8: .4byte 0x000020a0 +_08092FCC: .4byte gUnknown_2039823 +_08092FD0: .4byte gUnknown_2039824 + thumb_func_end sub_8092F60 + + thumb_func_start sub_8092FD4 +sub_8092FD4: @ 8092FD4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + cmp r6, 0xE + bne _08093008 + ldr r1, _08092FFC @ =gUnknown_2024284 + movs r0, 0x64 + muls r0, r7 + adds r0, r1 + ldr r1, _08093000 @ =gUnknown_20397B0 + ldr r1, [r1] + ldr r2, _08093004 @ =0x000020a0 + adds r1, r2 + movs r2, 0x64 + bl memcpy + b _08093020 + .align 2, 0 +_08092FFC: .4byte gUnknown_2024284 +_08093000: .4byte gUnknown_20397B0 +_08093004: .4byte 0x000020a0 +_08093008: + ldr r5, _08093028 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r4, _0809302C @ =0x000020a0 + adds r0, r4 + bl sub_80442E4 + ldr r2, [r5] + adds r2, r4 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_808BBB4 +_08093020: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08093028: .4byte gUnknown_20397B0 +_0809302C: .4byte 0x000020a0 + thumb_func_end sub_8092FD4 + + thumb_func_start sub_8093030 +sub_8093030: @ 8093030 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r0, 0xE + bne _08093050 + movs r0, 0x64 + muls r0, r1 + ldr r1, _0809304C @ =gUnknown_2024284 + adds r0, r1 + bl sub_803D994 + b _08093054 + .align 2, 0 +_0809304C: .4byte gUnknown_2024284 +_08093050: + bl sub_808BCB4 +_08093054: + pop {r0} + bx r0 + thumb_func_end sub_8093030 + + thumb_func_start sub_8093058 +sub_8093058: @ 8093058 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + cmp r6, 0xE + bne _0809308C + ldr r0, _08093080 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08093084 @ =0x00002104 + adds r0, r1 + ldr r2, _08093088 @ =gUnknown_2024284 + movs r1, 0x64 + muls r1, r7 + adds r1, r2 + movs r2, 0x64 + bl memcpy + b _0809309C + .align 2, 0 +_08093080: .4byte gUnknown_20397B0 +_08093084: .4byte 0x00002104 +_08093088: .4byte gUnknown_2024284 +_0809308C: + ldr r0, _080930D0 @ =gUnknown_20397B0 + ldr r2, [r0] + ldr r0, _080930D4 @ =0x00002104 + adds r2, r0 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_808BCF0 +_0809309C: + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_8092FD4 + ldr r5, _080930D0 @ =gUnknown_20397B0 + ldr r1, [r5] + ldr r4, _080930D8 @ =0x000020a0 + adds r0, r1, r4 + ldr r2, _080930D4 @ =0x00002104 + adds r1, r2 + movs r2, 0x64 + bl memcpy + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + bl sub_8093AD0 + ldr r0, _080930DC @ =gUnknown_2039823 + strb r6, [r0] + ldr r0, _080930E0 @ =gUnknown_2039824 + strb r7, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080930D0: .4byte gUnknown_20397B0 +_080930D4: .4byte 0x00002104 +_080930D8: .4byte 0x000020a0 +_080930DC: .4byte gUnknown_2039823 +_080930E0: .4byte gUnknown_2039824 + thumb_func_end sub_8093058 + + thumb_func_start sub_80930E4 +sub_80930E4: @ 80930E4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + bl sub_808C108 + lsls r0, 16 + lsrs r4, r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _08093102 + movs r0, 0 + b _08093164 +_08093102: + ldr r5, _08093120 @ =gUnknown_2039822 + ldrb r0, [r5] + cmp r0, 0 + beq _08093124 + lsls r4, 24 + lsrs r1, r4, 24 + adds r0, r6, 0 + bl sub_8092FD4 + bl sub_8090B6C + movs r0, 0 + strb r0, [r5] + b _0809313E + .align 2, 0 +_08093120: .4byte gUnknown_2039822 +_08093124: + ldr r5, _0809316C @ =gUnknown_2039821 + ldrb r1, [r5] + movs r0, 0xE + bl sub_8092F60 + lsls r4, 24 + lsrs r1, r4, 24 + adds r0, r6, 0 + bl sub_8092FD4 + ldrb r0, [r5] + bl sub_8090C10 +_0809313E: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _08093150 + lsrs r0, r4, 24 + bl sub_80901EC +_08093150: + ldr r0, _08093170 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + movs r0, 0x1 +_08093164: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809316C: .4byte gUnknown_2039821 +_08093170: .4byte gUnknown_20397B0 + thumb_func_end sub_80930E4 + + thumb_func_start sub_8093174 +sub_8093174: @ 8093174 + push {lr} + ldr r0, _08093190 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + bl sub_8093A10 + pop {r0} + bx r0 + .align 2, 0 +_08093190: .4byte gUnknown_20397B0 + thumb_func_end sub_8093174 + + thumb_func_start sub_8093194 +sub_8093194: @ 8093194 + push {lr} + ldr r0, _080931A4 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080931A8 + movs r2, 0x2 + b _080931B8 + .align 2, 0 +_080931A4: .4byte gUnknown_2039822 +_080931A8: + ldr r0, _080931D8 @ =gUnknown_2039820 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r2, 0x1 + eors r1, r2 + negs r0, r1 + orrs r0, r1 + lsrs r2, r0, 31 +_080931B8: + ldr r0, _080931DC @ =gUnknown_2039821 + ldrb r1, [r0] + adds r0, r2, 0 + bl sub_8090FC4 + ldr r0, _080931E0 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _080931E4 @ =0x000021d0 + adds r0, r1, r2 + ldr r2, _080931E8 @ =0x00000cea + adds r1, r2 + bl sub_8008D84 + pop {r0} + bx r0 + .align 2, 0 +_080931D8: .4byte gUnknown_2039820 +_080931DC: .4byte gUnknown_2039821 +_080931E0: .4byte gUnknown_20397B0 +_080931E4: .4byte 0x000021d0 +_080931E8: .4byte 0x00000cea + thumb_func_end sub_8093194 + + thumb_func_start sub_80931EC +sub_80931EC: @ 80931EC + push {lr} + bl sub_8091084 + lsls r0, 24 + cmp r0, 0 + beq _080931FC + movs r0, 0x1 + b _08093210 +_080931FC: + ldr r0, _08093214 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + movs r0, 0 +_08093210: + pop {r1} + bx r1 + .align 2, 0 +_08093214: .4byte gUnknown_20397B0 + thumb_func_end sub_80931EC + + thumb_func_start sub_8093218 +sub_8093218: @ 8093218 + push {lr} + bl sub_80910CC + ldr r1, _0809322C @ =gUnknown_2039822 + ldrb r0, [r1] + cmp r0, 0 + beq _08093230 + movs r0, 0 + strb r0, [r1] + b _08093256 + .align 2, 0 +_0809322C: .4byte gUnknown_2039822 +_08093230: + ldr r0, _08093240 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _08093244 + movs r2, 0xE + b _0809324C + .align 2, 0 +_08093240: .4byte gUnknown_2039820 +_08093244: + bl sub_808B9F4 + lsls r0, 24 + lsrs r2, r0, 24 +_0809324C: + ldr r0, _08093260 @ =gUnknown_2039821 + ldrb r1, [r0] + adds r0, r2, 0 + bl sub_8093030 +_08093256: + bl sub_8093A10 + pop {r0} + bx r0 + .align 2, 0 +_08093260: .4byte gUnknown_2039821 + thumb_func_end sub_8093218 + + thumb_func_start sub_8093264 +sub_8093264: @ 8093264 + push {lr} + ldr r0, _08093284 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _08093280 + ldr r0, _08093288 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x3 + bl sub_800838C +_08093280: + pop {r0} + bx r0 + .align 2, 0 +_08093284: .4byte gUnknown_2039822 +_08093288: .4byte gUnknown_20397B0 + thumb_func_end sub_8093264 + + thumb_func_start sub_809328C +sub_809328C: @ 809328C + push {r4-r6,lr} + ldr r0, _080932C0 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080932D8 + ldr r4, _080932C4 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r2, _080932C8 @ =0x00002104 + adds r0, r1, r2 + ldr r3, _080932CC @ =0x000020a0 + adds r1, r3 + movs r2, 0x64 + bl memcpy + ldr r0, [r4] + ldr r1, _080932D0 @ =0x0000216e + adds r0, r1 + movs r1, 0xFF + strb r1, [r0] + ldr r0, [r4] + ldr r2, _080932D4 @ =0x0000216f + adds r0, r2 + movs r1, 0x1 + negs r1, r1 + b _08093354 + .align 2, 0 +_080932C0: .4byte gUnknown_2039822 +_080932C4: .4byte gUnknown_20397B0 +_080932C8: .4byte 0x00002104 +_080932CC: .4byte 0x000020a0 +_080932D0: .4byte 0x0000216e +_080932D4: .4byte 0x0000216f +_080932D8: + ldr r0, _0809330C @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _08093324 + ldr r4, _08093310 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r3, _08093314 @ =0x00002104 + adds r0, r3 + ldr r3, _08093318 @ =gUnknown_2024284 + ldr r1, _0809331C @ =gUnknown_2039821 + movs r2, 0 + ldrsb r2, [r1, r2] + movs r1, 0x64 + muls r1, r2 + adds r1, r3 + movs r2, 0x64 + bl memcpy + ldr r0, [r4] + ldr r1, _08093320 @ =0x0000216e + adds r0, r1 + movs r1, 0xE + strb r1, [r0] + b _08093348 + .align 2, 0 +_0809330C: .4byte gUnknown_2039820 +_08093310: .4byte gUnknown_20397B0 +_08093314: .4byte 0x00002104 +_08093318: .4byte gUnknown_2024284 +_0809331C: .4byte gUnknown_2039821 +_08093320: .4byte 0x0000216e +_08093324: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080933BC @ =gUnknown_2039821 + ldrb r1, [r1] + ldr r4, _080933C0 @ =gUnknown_20397B0 + ldr r2, [r4] + ldr r3, _080933C4 @ =0x00002104 + adds r2, r3 + bl sub_808BCF0 + bl sub_808B9F4 + ldr r1, [r4] + ldr r2, _080933C8 @ =0x0000216e + adds r1, r2 + strb r0, [r1] +_08093348: + ldr r0, _080933C0 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080933BC @ =gUnknown_2039821 + ldrb r1, [r1] + ldr r3, _080933CC @ =0x0000216f + adds r0, r3 +_08093354: + strb r1, [r0] + ldr r6, _080933C0 @ =gUnknown_20397B0 + ldr r0, [r6] + ldr r4, _080933D0 @ =0x0000216a + adds r0, r4 + movs r1, 0 + strb r1, [r0] + ldr r0, [r6] + ldr r5, _080933D4 @ =0x0000216b + adds r0, r5 + strb r1, [r0] + ldr r0, [r6] + ldr r1, _080933D8 @ =0x00002172 + adds r2, r0, r1 + movs r1, 0x39 + strh r1, [r2] + ldr r1, _080933DC @ =0x00002174 + adds r3, r0, r1 + ldr r1, _080933E0 @ =0x00000123 + strh r1, [r3] + ldr r1, _080933E4 @ =0x00002176 + adds r3, r0, r1 + ldr r1, _080933E8 @ =0x00000163 + strh r1, [r3] + ldr r3, _080933C4 @ =0x00002104 + adds r0, r3 + movs r1, 0x51 + bl sub_803FBE8 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r1, [r6] + movs r2, 0x1 + ands r3, r2 + adds r1, r4 + strb r3, [r1] + ldr r1, [r6] + lsrs r0, 17 + movs r2, 0x1 + ands r0, r2 + adds r1, r5 + strb r0, [r1] + ldr r1, [r6] + adds r4, r1, r4 + ldrh r0, [r4] + cmp r0, 0 + beq _080933F0 + ldr r0, _080933EC @ =0x00002169 + adds r1, r0 + movs r0, 0 + strb r0, [r1] + b _080933FE + .align 2, 0 +_080933BC: .4byte gUnknown_2039821 +_080933C0: .4byte gUnknown_20397B0 +_080933C4: .4byte 0x00002104 +_080933C8: .4byte 0x0000216e +_080933CC: .4byte 0x0000216f +_080933D0: .4byte 0x0000216a +_080933D4: .4byte 0x0000216b +_080933D8: .4byte 0x00002172 +_080933DC: .4byte 0x00002174 +_080933E0: .4byte 0x00000123 +_080933E4: .4byte 0x00002176 +_080933E8: .4byte 0x00000163 +_080933EC: .4byte 0x00002169 +_080933F0: + ldr r3, _08093410 @ =0x00002169 + adds r0, r1, r3 + strb r2, [r0] + ldr r0, [r6] + ldr r1, _08093414 @ =0x00002168 + adds r0, r1 + strb r2, [r0] +_080933FE: + ldr r0, _08093418 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _0809341C @ =0x00002170 + adds r0, r2 + movs r1, 0 + strh r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08093410: .4byte 0x00002169 +_08093414: .4byte 0x00002168 +_08093418: .4byte gUnknown_20397B0 +_0809341C: .4byte 0x00002170 + thumb_func_end sub_809328C + + thumb_func_start sub_8093420 +sub_8093420: @ 8093420 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08093444 @ =gUnknown_20397B0 + ldr r3, [r0] + ldr r2, _08093448 @ =0x00002169 + adds r1, r3, r2 + ldrb r1, [r1] + mov r12, r0 + cmp r1, 0 + beq _08093450 + ldr r1, _0809344C @ =0x00002168 + adds r0, r3, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + b _08093604 + .align 2, 0 +_08093444: .4byte gUnknown_20397B0 +_08093448: .4byte 0x00002169 +_0809344C: .4byte 0x00002168 +_08093450: + ldr r2, _08093460 @ =0x00002170 + adds r0, r3, r2 + ldrh r0, [r0] + cmp r0, 0 + beq _08093464 + cmp r0, 0x1 + beq _0809353C + b _08093600 + .align 2, 0 +_08093460: .4byte 0x00002170 +_08093464: + movs r6, 0 + mov r5, r12 + movs r7, 0 +_0809346A: + ldr r2, [r5] + ldr r1, _08093500 @ =0x0000216e + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xE + bne _08093488 + adds r1, 0x1 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, r6 + beq _080934C2 +_08093488: + movs r0, 0x64 + muls r0, r6 + ldr r1, _08093504 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _08093508 @ =0x00002172 + adds r2, r1 + movs r1, 0x51 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080934AE + ldr r0, [r5] + ldr r2, _0809350C @ =0x0000216a + adds r0, r2 + strb r7, [r0] +_080934AE: + movs r0, 0x2 + ands r4, r0 + ldr r0, _08093510 @ =gUnknown_20397B0 + mov r12, r0 + cmp r4, 0 + beq _080934C2 + ldr r0, [r5] + ldr r1, _08093514 @ =0x0000216b + adds r0, r1 + strb r7, [r0] +_080934C2: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _0809346A + mov r2, r12 + ldr r1, [r2] + ldr r2, _0809350C @ =0x0000216a + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, 0 + bne _080934DC + b _080935EE +_080934DC: + ldr r2, _08093518 @ =0x0000216c + adds r0, r1, r2 + movs r1, 0 + strb r1, [r0] + mov r2, r12 + ldr r0, [r2] + ldr r2, _0809351C @ =0x0000216d + adds r0, r2 + strb r1, [r0] + mov r0, r12 + ldr r1, [r0] + adds r2, 0x3 + adds r1, r2 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08093600 + .align 2, 0 +_08093500: .4byte 0x0000216e +_08093504: .4byte gUnknown_2024284 +_08093508: .4byte 0x00002172 +_0809350C: .4byte 0x0000216a +_08093510: .4byte gUnknown_20397B0 +_08093514: .4byte 0x0000216b +_08093518: .4byte 0x0000216c +_0809351C: .4byte 0x0000216d +_08093520: + mov r1, r12 + ldr r0, [r1] + ldr r2, _08093538 @ =0x00002169 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] + mov r1, r12 + ldr r0, [r1] + subs r2, 0x1 + adds r0, r2 + strb r3, [r0] + b _080935E0 + .align 2, 0 +_08093538: .4byte 0x00002169 +_0809353C: + movs r6, 0 + mov r7, r12 + ldr r0, _08093610 @ =0x0000ffff + mov r8, r0 +_08093544: + ldr r3, [r7] + ldr r1, _08093614 @ =0x0000216c + adds r0, r3, r1 + ldrb r0, [r0] + ldr r2, _08093618 @ =0x0000216d + adds r1, r3, r2 + ldrb r1, [r1] + adds r2, 0x5 + adds r3, r2 + movs r2, 0x51 + bl sub_808BB6C + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _080935A0 + ldr r5, [r7] + ldr r1, _0809361C @ =0x0000216e + adds r0, r5, r1 + ldrh r2, [r0] + subs r1, 0x2 + adds r0, r5, r1 + ldrh r3, [r0] + mov r1, r8 + ands r1, r2 + mov r0, r8 + ands r0, r3 + cmp r1, r0 + beq _080935A0 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0809358E + ldr r2, _08093620 @ =0x0000216a + adds r1, r5, r2 + movs r0, 0 + strb r0, [r1] +_0809358E: + movs r0, 0x2 + ands r4, r0 + cmp r4, 0 + beq _080935A0 + ldr r0, [r7] + ldr r1, _08093624 @ =0x0000216b + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_080935A0: + ldr r2, _08093628 @ =gUnknown_20397B0 + ldr r1, [r2] + ldr r0, _08093618 @ =0x0000216d + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + movs r3, 0 + strb r0, [r1] + lsls r0, 24 + asrs r0, 24 + mov r12, r2 + cmp r0, 0x1D + ble _080935D6 + ldr r0, [r2] + ldr r1, _08093618 @ =0x0000216d + adds r0, r1 + strb r3, [r0] + ldr r1, [r2] + ldr r2, _08093614 @ =0x0000216c + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xD + bgt _08093520 +_080935D6: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x4 + bls _08093544 +_080935E0: + mov r0, r12 + ldr r1, [r0] + ldr r2, _08093620 @ =0x0000216a + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, 0 + bne _08093600 +_080935EE: + subs r2, 0x1 + adds r0, r1, r2 + movs r1, 0x1 + strb r1, [r0] + mov r2, r12 + ldr r0, [r2] + ldr r2, _0809362C @ =0x00002168 + adds r0, r2 + strb r1, [r0] +_08093600: + movs r0, 0x1 + negs r0, r0 +_08093604: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08093610: .4byte 0x0000ffff +_08093614: .4byte 0x0000216c +_08093618: .4byte 0x0000216d +_0809361C: .4byte 0x0000216e +_08093620: .4byte 0x0000216a +_08093624: .4byte 0x0000216b +_08093628: .4byte gUnknown_20397B0 +_0809362C: .4byte 0x00002168 + thumb_func_end sub_8093420 + + thumb_func_start sub_8093630 +sub_8093630: @ 8093630 + push {lr} + ldr r0, _08093650 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _0809364A + ldr r0, _08093654 @ =gUnknown_20397BC + ldr r1, _08093658 @ =gUnknown_20397B0 + ldr r1, [r1] + ldr r2, _0809365C @ =0x000020a0 + adds r1, r2 + movs r2, 0x64 + bl memcpy +_0809364A: + pop {r0} + bx r0 + .align 2, 0 +_08093650: .4byte gUnknown_2039822 +_08093654: .4byte gUnknown_20397BC +_08093658: .4byte gUnknown_20397B0 +_0809365C: .4byte 0x000020a0 + thumb_func_end sub_8093630 + + thumb_func_start sub_8093660 +sub_8093660: @ 8093660 + push {lr} + ldr r0, _08093684 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080936A8 + ldr r0, _08093688 @ =gUnknown_2039823 + ldrb r0, [r0] + cmp r0, 0xE + bne _08093698 + ldr r0, _0809368C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08093690 @ =0x000020a0 + adds r0, r1 + ldr r1, _08093694 @ =gUnknown_20397BC + movs r2, 0x64 + bl memcpy + b _080936A8 + .align 2, 0 +_08093684: .4byte gUnknown_2039822 +_08093688: .4byte gUnknown_2039823 +_0809368C: .4byte gUnknown_20397B0 +_08093690: .4byte 0x000020a0 +_08093694: .4byte gUnknown_20397BC +_08093698: + ldr r0, _080936AC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080936B0 @ =0x000020a0 + adds r0, r1 + ldr r1, _080936B4 @ =gUnknown_20397BC + movs r2, 0x50 + bl memcpy +_080936A8: + pop {r0} + bx r0 + .align 2, 0 +_080936AC: .4byte gUnknown_20397B0 +_080936B0: .4byte 0x000020a0 +_080936B4: .4byte gUnknown_20397BC + thumb_func_end sub_8093660 + + thumb_func_start sub_80936B8 +sub_80936B8: @ 80936B8 + push {r4,r5,lr} + ldr r0, _080936EC @ =gUnknown_2039822 + ldrb r5, [r0] + cmp r5, 0 + beq _08093708 + bl sub_8093630 + ldr r3, _080936F0 @ =gUnknown_20397B0 + ldr r1, [r3] + ldr r0, _080936F4 @ =0x0000217c + adds r2, r1, r0 + ldr r0, _080936F8 @ =gUnknown_20397BC + str r0, [r2] + ldr r2, _080936FC @ =0x00002179 + adds r1, r2 + movs r2, 0 + strb r2, [r1] + ldr r0, [r3] + ldr r4, _08093700 @ =0x00002178 + adds r0, r4 + strb r2, [r0] + ldr r0, [r3] + ldr r1, _08093704 @ =0x0000217a + adds r0, r1 + strb r2, [r0] + b _0809379A + .align 2, 0 +_080936EC: .4byte gUnknown_2039822 +_080936F0: .4byte gUnknown_20397B0 +_080936F4: .4byte 0x0000217c +_080936F8: .4byte gUnknown_20397BC +_080936FC: .4byte 0x00002179 +_08093700: .4byte 0x00002178 +_08093704: .4byte 0x0000217a +_08093708: + ldr r0, _08093744 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _08093764 + ldr r4, _08093748 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r0, _0809374C @ =0x0000217c + adds r2, r1, r0 + ldr r0, _08093750 @ =gUnknown_2024284 + str r0, [r2] + ldr r0, _08093754 @ =gUnknown_2039821 + ldrb r0, [r0] + ldr r2, _08093758 @ =0x00002179 + adds r1, r2 + strb r0, [r1] + bl sub_808C1F8 + ldr r1, [r4] + subs r0, 0x1 + ldr r2, _0809375C @ =0x00002178 + adds r1, r2 + strb r0, [r1] + ldr r0, [r4] + ldr r4, _08093760 @ =0x0000217a + adds r0, r4 + strb r5, [r0] + b _0809379A + .align 2, 0 +_08093744: .4byte gUnknown_2039820 +_08093748: .4byte gUnknown_20397B0 +_0809374C: .4byte 0x0000217c +_08093750: .4byte gUnknown_2024284 +_08093754: .4byte gUnknown_2039821 +_08093758: .4byte 0x00002179 +_0809375C: .4byte 0x00002178 +_08093760: .4byte 0x0000217a +_08093764: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_808BD30 + ldr r3, _080937A0 @ =gUnknown_20397B0 + ldr r2, [r3] + ldr r4, _080937A4 @ =0x0000217c + adds r1, r2, r4 + str r0, [r1] + ldr r0, _080937A8 @ =gUnknown_2039821 + ldrb r0, [r0] + ldr r1, _080937AC @ =0x00002179 + adds r2, r1 + strb r0, [r2] + ldr r0, [r3] + ldr r2, _080937B0 @ =0x00002178 + adds r0, r2 + movs r1, 0x1D + strb r1, [r0] + ldr r0, [r3] + subs r4, 0x2 + adds r0, r4 + movs r1, 0x5 + strb r1, [r0] +_0809379A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080937A0: .4byte gUnknown_20397B0 +_080937A4: .4byte 0x0000217c +_080937A8: .4byte gUnknown_2039821 +_080937AC: .4byte 0x00002179 +_080937B0: .4byte 0x00002178 + thumb_func_end sub_80936B8 + + thumb_func_start sub_80937B4 +sub_80937B4: @ 80937B4 + push {r4,lr} + ldr r0, _080937C4 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080937C8 + bl sub_8093660 + b _080937D0 + .align 2, 0 +_080937C4: .4byte gUnknown_2039822 +_080937C8: + ldr r4, _080937D8 @ =gUnknown_2039821 + bl sub_8138B20 + strb r0, [r4] +_080937D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080937D8: .4byte gUnknown_2039821 + thumb_func_end sub_80937B4 + + thumb_func_start sub_80937DC +sub_80937DC: @ 80937DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r7, _08093828 @ =0x0000ffff + movs r6, 0 + movs r5, 0 + movs r0, 0x64 + mov r9, r0 + ldr r1, _0809382C @ =gUnknown_2024284 + mov r8, r1 + subs r0, 0x65 + mov r10, r0 +_080937F8: + mov r0, r9 + muls r0, r6 + mov r1, r8 + adds r4, r0, r1 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + cmp r0, 0 + beq _08093830 + cmp r6, r5 + beq _08093820 + mov r0, r9 + muls r0, r5 + add r0, r8 + adds r1, r4, 0 + movs r2, 0x64 + bl memcpy +_08093820: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + b _0809383A + .align 2, 0 +_08093828: .4byte 0x0000ffff +_0809382C: .4byte gUnknown_2024284 +_08093830: + lsls r0, r7, 16 + asrs r0, 16 + cmp r0, r10 + bne _0809383A + adds r7, r6, 0 +_0809383A: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _080937F8 + lsls r7, 16 + cmp r5, 0x5 + bhi _08093862 + movs r6, 0x64 + ldr r4, _08093874 @ =gUnknown_2024284 +_0809384E: + adds r0, r5, 0 + muls r0, r6 + adds r0, r4 + bl sub_803D994 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x5 + bls _0809384E +_08093862: + asrs r0, r7, 16 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08093874: .4byte gUnknown_2024284 + thumb_func_end sub_80937DC + + thumb_func_start sub_8093878 +sub_8093878: @ 8093878 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + ldr r2, _080938A8 @ =gUnknown_20397B0 + ldr r1, [r2] + ldr r3, _080938AC @ =0x00000ce7 + adds r1, r3 + strb r0, [r1] + ldr r0, _080938B0 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080938B8 + ldr r0, [r2] + ldr r1, _080938B4 @ =0x000020a0 + adds r0, r1 + movs r1, 0x8 + mov r2, sp + bl sub_804037C + b _080938EC + .align 2, 0 +_080938A8: .4byte gUnknown_20397B0 +_080938AC: .4byte 0x00000ce7 +_080938B0: .4byte gUnknown_2039822 +_080938B4: .4byte 0x000020a0 +_080938B8: + ldr r4, _080938F4 @ =gUnknown_2039820 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x1 + bne _080938D8 + ldr r0, _080938F8 @ =gUnknown_2039821 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080938FC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x8 + mov r2, sp + bl sub_804037C +_080938D8: + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + bne _080938EC + ldr r0, _080938F8 @ =gUnknown_2039821 + ldrb r0, [r0] + movs r1, 0x8 + mov r2, sp + bl sub_808BAC0 +_080938EC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080938F4: .4byte gUnknown_2039820 +_080938F8: .4byte gUnknown_2039821 +_080938FC: .4byte gUnknown_2024284 + thumb_func_end sub_8093878 + + thumb_func_start sub_8093900 +sub_8093900: @ 8093900 + push {lr} + ldr r0, _08093928 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _08093934 + ldr r0, _0809392C @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + bne _08093934 + ldr r0, _08093930 @ =gUnknown_2039821 + ldrb r0, [r0] + bl sub_808C184 + lsls r0, 24 + cmp r0, 0 + bne _08093934 + movs r0, 0x1 + b _08093936 + .align 2, 0 +_08093928: .4byte gUnknown_2039820 +_0809392C: .4byte gUnknown_2039822 +_08093930: .4byte gUnknown_2039821 +_08093934: + movs r0, 0 +_08093936: + pop {r1} + bx r1 + thumb_func_end sub_8093900 + + thumb_func_start sub_809393C +sub_809393C: @ 809393C + push {lr} + ldr r0, _08093980 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _08093998 + ldr r0, _08093984 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _0809397C + ldr r0, _08093988 @ =gUnknown_2039821 + ldrb r0, [r0] + bl sub_808C184 + lsls r0, 24 + cmp r0, 0 + bne _0809397C + ldr r0, _0809398C @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r2, _08093990 @ =0x00000ce9 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08093998 + ldr r2, _08093994 @ =0x000020a0 + adds r0, r1, r2 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08093998 +_0809397C: + movs r0, 0x1 + b _0809399A + .align 2, 0 +_08093980: .4byte gUnknown_2039822 +_08093984: .4byte gUnknown_2039820 +_08093988: .4byte gUnknown_2039821 +_0809398C: .4byte gUnknown_20397B0 +_08093990: .4byte 0x00000ce9 +_08093994: .4byte 0x000020a0 +_08093998: + movs r0, 0 +_0809399A: + pop {r1} + bx r1 + thumb_func_end sub_809393C + + thumb_func_start sub_80939A0 +sub_80939A0: @ 80939A0 + ldr r0, _080939A8 @ =gUnknown_2039822 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080939A8: .4byte gUnknown_2039822 + thumb_func_end sub_80939A0 + + thumb_func_start sub_80939AC +sub_80939AC: @ 80939AC + push {lr} + movs r1, 0 + ldr r0, _080939C4 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x2 + bne _080939BE + movs r1, 0x1 +_080939BE: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_080939C4: .4byte gUnknown_2039820 + thumb_func_end sub_80939AC + + thumb_func_start sub_80939C8 +sub_80939C8: @ 80939C8 + push {lr} + movs r1, 0 + ldr r0, _080939EC @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x3 + bne _080939E6 + ldr r0, _080939F0 @ =gUnknown_2039821 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _080939E6 + movs r1, 0x1 +_080939E6: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_080939EC: .4byte gUnknown_2039820 +_080939F0: .4byte gUnknown_2039821 + thumb_func_end sub_80939C8 + + thumb_func_start sub_80939F4 +sub_80939F4: @ 80939F4 + push {lr} + movs r1, 0 + ldr r0, _08093A0C @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _08093A06 + movs r1, 0x1 +_08093A06: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_08093A0C: .4byte gUnknown_2039820 + thumb_func_end sub_80939F4 + + thumb_func_start sub_8093A10 +sub_8093A10: @ 8093A10 + push {r4,lr} + ldr r0, _08093A44 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r2, 0 + ldr r3, _08093A48 @ =gUnknown_2039822 + ldrb r0, [r3] + cmp r0, 0 + bne _08093A22 + movs r2, 0x1 +_08093A22: + ldr r4, _08093A4C @ =0x00000ce6 + adds r0, r1, r4 + strb r2, [r0] + ldrb r0, [r3] + cmp r0, 0 + bne _08093AA0 + ldr r0, _08093A50 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + beq _08093A5A + cmp r0, 0x1 + bgt _08093A54 + cmp r0, 0 + beq _08093A8A + b _08093AA0 + .align 2, 0 +_08093A44: .4byte gUnknown_20397B0 +_08093A48: .4byte gUnknown_2039822 +_08093A4C: .4byte 0x00000ce6 +_08093A50: .4byte gUnknown_2039820 +_08093A54: + cmp r0, 0x3 + bgt _08093AA0 + b _08093A80 +_08093A5A: + ldr r1, _08093A78 @ =gUnknown_2039821 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _08093A80 + adds r1, r0, 0 + movs r0, 0x64 + muls r0, r1 + ldr r1, _08093A7C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0 + bl sub_8093AD0 + b _08093AA0 + .align 2, 0 +_08093A78: .4byte gUnknown_2039821 +_08093A7C: .4byte gUnknown_2024284 +_08093A80: + movs r0, 0 + movs r1, 0x2 + bl sub_8093AD0 + b _08093AA0 +_08093A8A: + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08093AA8 @ =gUnknown_2039821 + ldrb r1, [r1] + bl sub_808BD30 + movs r1, 0x1 + bl sub_8093AD0 +_08093AA0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08093AA8: .4byte gUnknown_2039821 + thumb_func_end sub_8093A10 + + thumb_func_start sub_8093AAC +sub_8093AAC: @ 8093AAC + push {lr} + ldr r0, _08093AC0 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _08093AC8 + ldr r0, _08093AC4 @ =gUnknown_20397BC + movs r1, 0 + bl sub_8093AD0 + b _08093ACC + .align 2, 0 +_08093AC0: .4byte gUnknown_2039822 +_08093AC4: .4byte gUnknown_20397BC +_08093AC8: + bl sub_8093A10 +_08093ACC: + pop {r0} + bx r0 + thumb_func_end sub_8093AAC + + thumb_func_start sub_8093AD0 +sub_8093AD0: @ 8093AD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r5, r1, 0 + ldr r0, _08093B38 @ =gUnknown_20397B0 + mov r8, r0 + ldr r1, [r0] + ldr r3, _08093B3C @ =0x00000ce2 + adds r2, r1, r3 + movs r0, 0 + strh r0, [r2] + mov r9, r0 + mov r10, r0 + cmp r5, 0 + bne _08093BEC + adds r6, r4, 0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + mov r2, r8 + ldr r1, [r2] + movs r3, 0xCE + lsls r3, 4 + adds r1, r3 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _08093B16 + b _08093D0C +_08093B16: + adds r0, r4, 0 + movs r1, 0x4 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0 + beq _08093B44 + mov r1, r8 + ldr r0, [r1] + ldr r2, _08093B40 @ =0x00000ce9 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] + b _08093B56 + .align 2, 0 +_08093B38: .4byte gUnknown_20397B0 +_08093B3C: .4byte 0x00000ce2 +_08093B40: .4byte 0x00000ce9 +_08093B44: + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + mov r3, r8 + ldr r1, [r3] + ldr r2, _08093BCC @ =0x00000ce9 + adds r1, r2 + strb r0, [r1] +_08093B56: + ldr r4, _08093BD0 @ =gUnknown_20397B0 + ldr r2, [r4] + ldr r5, _08093BD4 @ =0x00000cea + adds r2, r5 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_803FBE8 + ldr r0, [r4] + adds r0, r5 + bl sub_8008D28 + adds r0, r6, 0 + movs r1, 0x38 + bl sub_803FBE8 + ldr r1, [r4] + ldr r3, _08093BD8 @ =0x00000ce8 + adds r1, r3 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0x8 + bl sub_803FBE8 + ldr r1, [r4] + ldr r2, _08093BDC @ =0x00000ce7 + adds r1, r2 + strb r0, [r1] + adds r0, r6, 0 + movs r1, 0 + bl sub_803FBE8 + ldr r1, [r4] + ldr r3, _08093BE0 @ =0x00000cdc + adds r1, r3 + str r0, [r1] + adds r0, r6, 0 + bl sub_80440BC + ldr r1, [r4] + ldr r2, _08093BE4 @ =0x00000cd8 + adds r1, r2 + str r0, [r1] + adds r0, r6, 0 + bl sub_803F720 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + adds r0, r6, 0 + movs r1, 0xC + bl sub_803FBE8 + ldr r1, [r4] + ldr r3, _08093BE8 @ =0x00000ce2 + adds r1, r3 + strh r0, [r1] + b _08093CFC + .align 2, 0 +_08093BCC: .4byte 0x00000ce9 +_08093BD0: .4byte gUnknown_20397B0 +_08093BD4: .4byte 0x00000cea +_08093BD8: .4byte 0x00000ce8 +_08093BDC: .4byte 0x00000ce7 +_08093BE0: .4byte 0x00000cdc +_08093BE4: .4byte 0x00000cd8 +_08093BE8: .4byte 0x00000ce2 +_08093BEC: + cmp r5, 0x1 + beq _08093BF2 + b _08093CF0 +_08093BF2: + adds r7, r4, 0 + adds r0, r7, 0 + movs r1, 0x41 + bl sub_803FD44 + mov r2, r8 + ldr r1, [r2] + movs r3, 0xCE + lsls r3, 4 + adds r1, r3 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _08093C10 + b _08093D0C +_08093C10: + adds r0, r7, 0 + movs r1, 0x1 + bl sub_803FD44 + mov r9, r0 + adds r0, r7, 0 + movs r1, 0x4 + bl sub_803FD44 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0 + beq _08093C3C + mov r1, r8 + ldr r0, [r1] + ldr r2, _08093C38 @ =0x00000ce9 + adds r0, r2 + strb r5, [r0] + b _08093C4E + .align 2, 0 +_08093C38: .4byte 0x00000ce9 +_08093C3C: + adds r0, r7, 0 + movs r1, 0x2D + bl sub_803FD44 + mov r3, r8 + ldr r1, [r3] + ldr r2, _08093CD0 @ =0x00000ce9 + adds r1, r2 + strb r0, [r1] +_08093C4E: + ldr r5, _08093CD4 @ =gUnknown_20397B0 + ldr r2, [r5] + ldr r4, _08093CD8 @ =0x00000cea + adds r2, r4 + adds r0, r7, 0 + movs r1, 0x2 + bl sub_803FD44 + ldr r0, [r5] + adds r0, r4 + bl sub_8008D28 + adds r0, r7, 0 + bl sub_803E830 + ldr r1, [r5] + ldr r3, _08093CDC @ =0x00000ce8 + adds r1, r3 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0x8 + bl sub_803FD44 + ldr r1, [r5] + ldr r2, _08093CE0 @ =0x00000ce7 + adds r1, r2 + strb r0, [r1] + adds r0, r7, 0 + movs r1, 0 + bl sub_803FD44 + adds r2, r0, 0 + ldr r1, [r5] + ldr r6, _08093CE4 @ =0x00000cdc + adds r0, r1, r6 + str r2, [r0] + subs r4, 0xA + adds r1, r4 + ldrh r0, [r1] + mov r1, r9 + bl sub_80440F4 + ldr r1, [r5] + ldr r3, _08093CE8 @ =0x00000cd8 + adds r2, r1, r3 + str r0, [r2] + adds r4, r1, r4 + ldrh r0, [r4] + adds r1, r6 + ldr r1, [r1] + bl sub_803F78C + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + adds r0, r7, 0 + movs r1, 0xC + bl sub_803FD44 + ldr r1, [r5] + ldr r2, _08093CEC @ =0x00000ce2 + adds r1, r2 + strh r0, [r1] + b _08093CFC + .align 2, 0 +_08093CD0: .4byte 0x00000ce9 +_08093CD4: .4byte gUnknown_20397B0 +_08093CD8: .4byte 0x00000cea +_08093CDC: .4byte 0x00000ce8 +_08093CE0: .4byte 0x00000ce7 +_08093CE4: .4byte 0x00000cdc +_08093CE8: .4byte 0x00000cd8 +_08093CEC: .4byte 0x00000ce2 +_08093CF0: + movs r3, 0xCE + lsls r3, 4 + adds r0, r1, r3 + mov r1, r9 + strh r1, [r0] + strh r1, [r2] +_08093CFC: + ldr r0, _08093D50 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r2, 0xCE + lsls r2, 4 + adds r0, r1, r2 + ldrh r2, [r0] + cmp r2, 0 + bne _08093D68 +_08093D0C: + ldr r4, _08093D50 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r3, _08093D54 @ =0x00000cea + adds r0, r3 + movs r1, 0 + movs r2, 0x5 + bl sub_8009204 + ldr r0, [r4] + ldr r1, _08093D58 @ =0x00000cf5 + adds r0, r1 + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 + ldr r0, [r4] + ldr r2, _08093D5C @ =0x00000d19 + adds r0, r2 + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 + ldr r0, [r4] + ldr r3, _08093D60 @ =0x00000d3d + adds r0, r3 + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 + ldr r0, [r4] + ldr r1, _08093D64 @ =0x00000d61 + adds r0, r1 + b _08093DC6 + .align 2, 0 +_08093D50: .4byte gUnknown_20397B0 +_08093D54: .4byte 0x00000cea +_08093D58: .4byte 0x00000cf5 +_08093D5C: .4byte 0x00000d19 +_08093D60: .4byte 0x00000d3d +_08093D64: .4byte 0x00000d61 +_08093D68: + ldr r3, _08093D8C @ =0x00000ce9 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _08093DE8 + mov r0, r10 + cmp r0, 0 + beq _08093D94 + ldr r2, _08093D90 @ =0x00000cf5 + adds r0, r1, r2 + adds r3, 0x1 + adds r1, r3 + movs r2, 0 + movs r3, 0x5 + bl sub_8009230 + b _08093DA2 + .align 2, 0 +_08093D8C: .4byte 0x00000ce9 +_08093D90: .4byte 0x00000cf5 +_08093D94: + ldr r2, _08093DD0 @ =0x00000cf5 + adds r0, r1, r2 + ldr r1, _08093DD4 @ =gUnknown_8415A62 + movs r2, 0 + movs r3, 0x8 + bl sub_8009230 +_08093DA2: + ldr r4, _08093DD8 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r3, _08093DDC @ =0x00000d19 + adds r0, r3 + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 + ldr r0, [r4] + ldr r1, _08093DE0 @ =0x00000d3d + adds r0, r1 + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 + ldr r0, [r4] + ldr r2, _08093DE4 @ =0x00000d61 + adds r0, r2 +_08093DC6: + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 + b _08093F84 + .align 2, 0 +_08093DD0: .4byte 0x00000cf5 +_08093DD4: .4byte gUnknown_8415A62 +_08093DD8: .4byte gUnknown_20397B0 +_08093DDC: .4byte 0x00000d19 +_08093DE0: .4byte 0x00000d3d +_08093DE4: .4byte 0x00000d61 +_08093DE8: + cmp r2, 0x1D + beq _08093DF0 + cmp r2, 0x20 + bne _08093DF4 +_08093DF0: + movs r3, 0xFF + mov r9, r3 +_08093DF4: + ldr r4, _08093E78 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r2, _08093E7C @ =0x00000cf5 + adds r0, r1, r2 + ldr r3, _08093E80 @ =0x00000cea + adds r1, r3 + movs r2, 0 + movs r3, 0x5 + bl sub_8009230 + ldr r1, [r4] + ldr r0, _08093E84 @ =0x00000d19 + adds r2, r1, r0 + movs r0, 0xBA + strb r0, [r2] + ldr r3, _08093E88 @ =0x00000d1a + adds r2, r1, r3 + ldr r0, [r4] + movs r1, 0xCE + lsls r1, 4 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0xB + muls r1, r0 + ldr r0, _08093E8C @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r2, 0 + movs r2, 0 + movs r3, 0x5 + bl sub_8009230 + ldr r4, [r4] + ldr r3, _08093E90 @ =0x00000d3d + adds r2, r4, r3 + movs r0, 0xFC + strb r0, [r2] + ldr r0, _08093E94 @ =0x00000d3e + adds r2, r4, r0 + movs r0, 0x4 + strb r0, [r2] + ldr r1, _08093E98 @ =0x00000d3f + adds r2, r4, r1 + mov r3, r9 + cmp r3, 0 + beq _08093EA4 + cmp r3, 0xFE + beq _08093ED0 + movs r0, 0x2 + strb r0, [r2] + movs r0, 0xD4 + lsls r0, 4 + adds r2, r4, r0 + movs r0, 0x1 + strb r0, [r2] + adds r1, 0x2 + adds r2, r4, r1 + movs r0, 0x3 + strb r0, [r2] + ldr r3, _08093E9C @ =0x00000d42 + adds r2, r4, r3 + movs r0, 0 + strb r0, [r2] + ldr r0, _08093EA0 @ =0x00000d43 + adds r2, r4, r0 + b _08093EF2 + .align 2, 0 +_08093E78: .4byte gUnknown_20397B0 +_08093E7C: .4byte 0x00000cf5 +_08093E80: .4byte 0x00000cea +_08093E84: .4byte 0x00000d19 +_08093E88: .4byte 0x00000d1a +_08093E8C: .4byte gUnknown_8245EE0 +_08093E90: .4byte 0x00000d3d +_08093E94: .4byte 0x00000d3e +_08093E98: .4byte 0x00000d3f +_08093E9C: .4byte 0x00000d42 +_08093EA0: .4byte 0x00000d43 +_08093EA4: + strb r0, [r2] + movs r1, 0xD4 + lsls r1, 4 + adds r2, r4, r1 + movs r0, 0x1 + strb r0, [r2] + ldr r3, _08093EC8 @ =0x00000d41 + adds r2, r4, r3 + movs r0, 0x5 + strb r0, [r2] + ldr r0, _08093ECC @ =0x00000d42 + adds r2, r4, r0 + movs r0, 0xB5 + strb r0, [r2] + adds r1, 0x3 + adds r2, r4, r1 + b _08093EF2 + .align 2, 0 +_08093EC8: .4byte 0x00000d41 +_08093ECC: .4byte 0x00000d42 +_08093ED0: + movs r0, 0x6 + strb r0, [r2] + movs r3, 0xD4 + lsls r3, 4 + adds r2, r4, r3 + movs r0, 0x1 + strb r0, [r2] + ldr r0, _08093F60 @ =0x00000d41 + adds r2, r4, r0 + movs r0, 0x7 + strb r0, [r2] + ldr r1, _08093F64 @ =0x00000d42 + adds r2, r4, r1 + movs r0, 0xB6 + strb r0, [r2] + adds r3, 0x3 + adds r2, r4, r3 +_08093EF2: + movs r0, 0xFC + strb r0, [r2] + adds r2, 0x1 + movs r0, 0x4 + strb r0, [r2] + adds r2, 0x1 + movs r0, 0x2 + strb r0, [r2] + adds r2, 0x1 + movs r0, 0x1 + strb r0, [r2] + adds r2, 0x1 + movs r0, 0x3 + strb r0, [r2] + adds r2, 0x1 + movs r5, 0 + strb r5, [r2] + adds r2, 0x1 + movs r0, 0xF9 + strb r0, [r2] + adds r2, 0x1 + movs r0, 0x5 + strb r0, [r2] + adds r2, 0x1 + ldr r4, _08093F68 @ =gUnknown_20397B0 + ldr r0, [r4] + ldr r1, _08093F6C @ =0x00000ce8 + adds r0, r1 + ldrb r1, [r0] + adds r0, r2, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + adds r2, r0, 0 + strb r5, [r2] + movs r0, 0xFF + strb r0, [r2, 0x1] + ldr r4, [r4] + ldr r2, _08093F70 @ =0x00000ce2 + adds r1, r4, r2 + ldrh r0, [r1] + cmp r0, 0 + beq _08093F78 + ldr r3, _08093F74 @ =0x00000d61 + adds r4, r3 + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x8 + bl sub_8009230 + b _08093F84 + .align 2, 0 +_08093F60: .4byte 0x00000d41 +_08093F64: .4byte 0x00000d42 +_08093F68: .4byte gUnknown_20397B0 +_08093F6C: .4byte 0x00000ce8 +_08093F70: .4byte 0x00000ce2 +_08093F74: .4byte 0x00000d61 +_08093F78: + ldr r1, _08093F94 @ =0x00000d61 + adds r0, r4, r1 + movs r1, 0 + movs r2, 0x8 + bl sub_8009204 +_08093F84: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08093F94: .4byte 0x00000d61 + thumb_func_end sub_8093AD0 + + thumb_func_start sub_8093F98 +sub_8093F98: @ 8093F98 + push {lr} + ldr r0, _08093FB8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08093FBC @ =0x000021ef + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08093FC0 + cmp r0, 0x1 + ble _08093FB0 + cmp r0, 0x2 + beq _08093FC6 +_08093FB0: + bl sub_8093FD4 + b _08093FCA + .align 2, 0 +_08093FB8: .4byte gUnknown_20397B0 +_08093FBC: .4byte 0x000021ef +_08093FC0: + bl sub_8094240 + b _08093FCA +_08093FC6: + bl sub_8094378 +_08093FCA: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8093F98 + + thumb_func_start sub_8093FD4 +sub_8093FD4: @ 8093FD4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08094058 @ =gUnknown_2039820 + ldrb r0, [r0] + mov r8, r0 + ldr r2, _0809405C @ =gUnknown_2039821 + ldrb r4, [r2] + ldr r5, _08094060 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r1, _08094064 @ =0x00000cce + mov r10, r1 + add r0, r10 + movs r1, 0 + strb r1, [r0] + ldr r0, [r5] + ldr r7, _08094068 @ =0x00000ccf + adds r0, r7 + strb r1, [r0] + ldr r0, [r5] + ldr r3, _0809406C @ =0x00000cd3 + mov r9, r3 + add r0, r9 + strb r1, [r0] + ldr r6, _08094070 @ =gUnknown_30030F0 + ldrh r1, [r6, 0x30] + movs r0, 0x40 + ands r0, r1 + adds r3, r2, 0 + cmp r0, 0 + beq _08094018 + b _08094208 +_08094018: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08094074 + movs r6, 0x1 + lsls r0, r4, 24 + movs r1, 0xC0 + lsls r1, 19 + adds r0, r1 + lsrs r4, r0, 24 + asrs r0, 24 + cmp r0, 0x1D + bgt _08094034 + b _08094224 +_08094034: + movs r2, 0x3 + mov r8, r2 + subs r0, 0x1E + lsls r0, 24 + asrs r0, 24 + movs r1, 0x3 + bl __divsi3 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, [r5] + add r0, r10 + strb r6, [r0] + ldr r0, [r5] + add r0, r9 + strb r6, [r0] + b _08094224 + .align 2, 0 +_08094058: .4byte gUnknown_2039820 +_0809405C: .4byte gUnknown_2039821 +_08094060: .4byte gUnknown_20397B0 +_08094064: .4byte 0x00000cce +_08094068: .4byte 0x00000ccf +_0809406C: .4byte 0x00000cd3 +_08094070: .4byte gUnknown_30030F0 +_08094074: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080940AA + movs r6, 0x1 + movs r0, 0 + ldrsb r0, [r3, r0] + movs r1, 0x6 + bl __modsi3 + lsls r0, 24 + cmp r0, 0 + beq _08094096 + lsls r0, r4, 24 + movs r3, 0xFF + lsls r3, 24 + b _08094218 +_08094096: + ldr r0, [r5] + adds r0, r7 + movs r1, 0xFF + strb r1, [r0] + lsls r0, r4, 24 + movs r1, 0xA0 + lsls r1, 19 + adds r0, r1 + lsrs r4, r0, 24 + b _08094224 +_080940AA: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080940DE + movs r6, 0x1 + movs r0, 0 + ldrsb r0, [r3, r0] + adds r0, 0x1 + movs r1, 0x6 + bl __modsi3 + cmp r0, 0 + beq _080940D0 + lsls r0, r4, 24 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r4, r0, 24 + b _08094224 +_080940D0: + ldr r0, [r5] + adds r0, r7 + strb r6, [r0] + lsls r0, r4, 24 + movs r3, 0xFB + lsls r3, 24 + b _08094218 +_080940DE: + ldrh r1, [r6, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080940EC + movs r6, 0x1 + b _0809421E +_080940EC: + movs r4, 0x1 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080941B0 + bl sub_8094924 + lsls r0, 24 + cmp r0, 0 + beq _080941B0 + ldr r0, _0809410C @ =gUnknown_2039825 + ldrb r0, [r0] + cmp r0, 0 + bne _08094110 + movs r0, 0x8 + b _08094232 + .align 2, 0 +_0809410C: .4byte gUnknown_2039825 +_08094110: + ldr r1, [r5] + ldrb r0, [r1, 0x1] + cmp r0, 0x2 + bne _08094120 + ldr r0, _0809413C @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080941A0 +_08094120: + movs r0, 0 + bl sub_8094E50 + subs r0, 0x1 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xE + bhi _080941B0 + lsls r0, 2 + ldr r1, _08094140 @ =_08094144 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809413C: .4byte gUnknown_2039822 +_08094140: .4byte _08094144 + .align 2, 0 +_08094144: + .4byte _08094180 + .4byte _08094184 + .4byte _08094188 + .4byte _0809418C + .4byte _08094190 + .4byte _080941B0 + .4byte _080941B0 + .4byte _080941B0 + .4byte _080941B0 + .4byte _080941B0 + .4byte _080941B0 + .4byte _08094194 + .4byte _08094198 + .4byte _080941B0 + .4byte _0809419C +_08094180: + movs r0, 0xB + b _08094232 +_08094184: + movs r0, 0xC + b _08094232 +_08094188: + movs r0, 0xD + b _08094232 +_0809418C: + movs r0, 0xE + b _08094232 +_08094190: + movs r0, 0xF + b _08094232 +_08094194: + movs r0, 0x10 + b _08094232 +_08094198: + movs r0, 0x11 + b _08094232 +_0809419C: + movs r0, 0x12 + b _08094232 +_080941A0: + ldr r2, _080941AC @ =0x000021ef + adds r0, r1, r2 + strb r4, [r0] + movs r0, 0x14 + b _08094232 + .align 2, 0 +_080941AC: .4byte 0x000021ef +_080941B0: + ldr r2, _080941C0 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080941C4 + movs r0, 0x13 + b _08094232 + .align 2, 0 +_080941C0: .4byte gUnknown_30030F0 +_080941C4: + ldr r0, _080941E0 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _080941F2 + ldrh r1, [r2, 0x2C] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080941E4 + movs r0, 0xA + b _08094232 + .align 2, 0 +_080941E0: .4byte gUnknown_300500C +_080941E4: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080941F2 + movs r0, 0x9 + b _08094232 +_080941F2: + ldrh r1, [r2, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08094204 + bl sub_8094C84 + movs r0, 0 + b _08094232 +_08094204: + movs r6, 0 + b _08094230 +_08094208: + movs r6, 0x1 + movs r0, 0 + ldrsb r0, [r2, r0] + cmp r0, 0x5 + ble _0809421E + lsls r0, r4, 24 + movs r3, 0xFA + lsls r3, 24 +_08094218: + adds r0, r3 + lsrs r4, r0, 24 + b _08094224 +_0809421E: + movs r0, 0x2 + mov r8, r0 + movs r4, 0 +_08094224: + cmp r6, 0 + beq _08094230 + mov r0, r8 + adds r1, r4, 0 + bl sub_80927E8 +_08094230: + adds r0, r6, 0 +_08094232: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8093FD4 + + thumb_func_start sub_8094240 +sub_8094240: @ 8094240 + push {r4,lr} + ldr r1, _08094270 @ =gUnknown_30030F0 + ldrh r0, [r1, 0x2C] + movs r4, 0x1 + ands r4, r0 + cmp r4, 0 + beq _080942F4 + ldrh r1, [r1, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08094278 + ldr r4, _08094274 @ =gUnknown_2039821 + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x6 + bl __divsi3 + lsls r0, 24 + cmp r0, 0 + beq _080942EC + ldrb r1, [r4] + subs r1, 0x6 + b _080942DA + .align 2, 0 +_08094270: .4byte gUnknown_30030F0 +_08094274: .4byte gUnknown_2039821 +_08094278: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08094298 + ldr r1, _08094294 @ =gUnknown_2039821 + movs r0, 0 + ldrsb r0, [r1, r0] + adds r0, 0x6 + cmp r0, 0x1D + bgt _080942EC + ldrb r1, [r1] + adds r1, 0x6 + b _080942DA + .align 2, 0 +_08094294: .4byte gUnknown_2039821 +_08094298: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080942BC + ldr r4, _080942B8 @ =gUnknown_2039821 + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x6 + bl __modsi3 + lsls r0, 24 + cmp r0, 0 + beq _080942EC + ldrb r1, [r4] + subs r1, 0x1 + b _080942DA + .align 2, 0 +_080942B8: .4byte gUnknown_2039821 +_080942BC: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080942F0 + ldr r4, _080942E8 @ =gUnknown_2039821 + movs r0, 0 + ldrsb r0, [r4, r0] + adds r0, 0x1 + movs r1, 0x6 + bl __modsi3 + cmp r0, 0 + beq _080942EC + ldrb r1, [r4] + adds r1, 0x1 +_080942DA: + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80927E8 + movs r0, 0x15 + b _08094364 + .align 2, 0 +_080942E8: .4byte gUnknown_2039821 +_080942EC: + movs r0, 0x18 + b _08094364 +_080942F0: + movs r0, 0 + b _08094364 +_080942F4: + bl sub_8095AA0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08094330 @ =gUnknown_2039821 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + cmp r0, r1 + beq _08094344 + ldr r2, _08094334 @ =gUnknown_2039822 + ldr r0, _08094338 @ =gUnknown_20397B0 + ldr r1, [r0] + movs r3, 0xCE + lsls r3, 4 + adds r0, r1, r3 + ldrh r0, [r0] + negs r0, r0 + lsrs r0, 31 + strb r0, [r2] + ldr r0, _0809433C @ =0x000021ef + adds r1, r0 + movs r0, 0x2 + strb r0, [r1] + bl sub_808B9F4 + ldr r1, _08094340 @ =gUnknown_2039823 + strb r0, [r1] + movs r0, 0x17 + b _08094364 + .align 2, 0 +_08094330: .4byte gUnknown_2039821 +_08094334: .4byte gUnknown_2039822 +_08094338: .4byte gUnknown_20397B0 +_0809433C: .4byte 0x000021ef +_08094340: .4byte gUnknown_2039823 +_08094344: + ldr r1, _0809436C @ =gUnknown_20397B0 + ldr r0, [r1] + ldr r2, _08094370 @ =0x000021ef + adds r0, r2 + strb r4, [r0] + ldr r0, [r1] + ldr r3, _08094374 @ =0x00000cb4 + adds r0, r3 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + movs r0, 0x16 +_08094364: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809436C: .4byte gUnknown_20397B0 +_08094370: .4byte 0x000021ef +_08094374: .4byte 0x00000cb4 + thumb_func_end sub_8094240 + + thumb_func_start sub_8094378 +sub_8094378: @ 8094378 + push {r4,lr} + ldr r2, _0809439C @ =gUnknown_30030F0 + ldrh r1, [r2, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080943A4 + movs r0, 0 + bl sub_8095474 + lsls r0, 24 + cmp r0, 0 + beq _08094450 + ldr r0, _080943A0 @ =gUnknown_2039821 + ldrb r1, [r0] + subs r1, 0x6 + b _08094402 + .align 2, 0 +_0809439C: .4byte gUnknown_30030F0 +_080943A0: .4byte gUnknown_2039821 +_080943A4: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080943C4 + movs r0, 0x1 + bl sub_8095474 + lsls r0, 24 + cmp r0, 0 + beq _08094450 + ldr r0, _080943C0 @ =gUnknown_2039821 + ldrb r1, [r0] + adds r1, 0x6 + b _08094402 + .align 2, 0 +_080943C0: .4byte gUnknown_2039821 +_080943C4: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080943E4 + movs r0, 0x2 + bl sub_8095474 + lsls r0, 24 + cmp r0, 0 + beq _0809446A + ldr r0, _080943E0 @ =gUnknown_2039821 + ldrb r1, [r0] + subs r1, 0x1 + b _08094402 + .align 2, 0 +_080943E0: .4byte gUnknown_2039821 +_080943E4: + movs r0, 0x10 + ands r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08094414 + movs r0, 0x3 + bl sub_8095474 + lsls r0, 24 + cmp r0, 0 + beq _0809447E + ldr r0, _08094410 @ =gUnknown_2039821 + ldrb r1, [r0] + adds r1, 0x1 +_08094402: + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80927E8 + movs r0, 0x19 + b _08094484 + .align 2, 0 +_08094410: .4byte gUnknown_2039821 +_08094414: + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094448 + bl sub_8095ABC + lsls r0, 24 + cmp r0, 0 + beq _08094450 + ldr r0, _0809443C @ =gUnknown_2039822 + strb r4, [r0] + ldr r0, _08094440 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08094444 @ =0x000021ef + adds r0, r1 + strb r4, [r0] + movs r0, 0x1A + b _08094484 + .align 2, 0 +_0809443C: .4byte gUnknown_2039822 +_08094440: .4byte gUnknown_20397B0 +_08094444: .4byte 0x000021ef +_08094448: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08094454 +_08094450: + movs r0, 0x18 + b _08094484 +_08094454: + ldr r0, _08094470 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _08094482 + ldrh r1, [r2, 0x2C] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _08094474 +_0809446A: + movs r0, 0xA + b _08094484 + .align 2, 0 +_08094470: .4byte gUnknown_300500C +_08094474: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _08094482 +_0809447E: + movs r0, 0x9 + b _08094484 +_08094482: + movs r0, 0 +_08094484: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094378 + + thumb_func_start sub_809448C +sub_809448C: @ 809448C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _080944FC @ =gUnknown_2039820 + ldrb r0, [r0] + mov r9, r0 + ldr r6, _08094500 @ =gUnknown_2039821 + ldrb r4, [r6] + ldr r2, _08094504 @ =gUnknown_20397B0 + ldr r0, [r2] + ldr r1, _08094508 @ =0x00000ccf + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r3, _0809450C @ =0x00000cce + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x5 + adds r0, r3 + strb r1, [r0] + mov r8, r1 + movs r7, 0 + ldr r1, _08094510 @ =gUnknown_30030F0 + ldrh r3, [r1, 0x30] + movs r0, 0x40 + ands r0, r3 + adds r5, r6, 0 + mov r12, r1 + cmp r0, 0 + beq _080944D0 + b _08094670 +_080944D0: + movs r0, 0x80 + ands r0, r3 + cmp r0, 0 + beq _08094514 + lsls r0, r4, 24 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r4, r0, 24 + asrs r0, 24 + cmp r0, 0x6 + ble _080944EA + movs r4, 0 +_080944EA: + lsls r0, r4, 24 + asrs r0, 24 + movs r1, 0 + ldrsb r1, [r5, r1] + cmp r0, r1 + bne _080944F8 + b _0809468E +_080944F8: + movs r7, 0x1 + b _08094692 + .align 2, 0 +_080944FC: .4byte gUnknown_2039820 +_08094500: .4byte gUnknown_2039821 +_08094504: .4byte gUnknown_20397B0 +_08094508: .4byte 0x00000ccf +_0809450C: .4byte 0x00000cce +_08094510: .4byte gUnknown_30030F0 +_08094514: + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _08094538 + ldrb r1, [r5] + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0 + beq _08094538 + movs r7, 0x1 + ldr r0, [r2] + ldr r2, _08094534 @ =0x00000cd2 + adds r0, r2 + strb r1, [r0] + movs r4, 0 + b _0809468E + .align 2, 0 +_08094534: .4byte 0x00000cd2 +_08094538: + mov r3, r12 + ldrh r1, [r3, 0x30] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08094566 + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0 + bne _0809455C + movs r7, 0x1 + ldr r0, [r2] + ldr r1, _08094558 @ =0x00000cd2 + adds r0, r1 + ldrb r4, [r0] + b _0809468E + .align 2, 0 +_08094558: .4byte 0x00000cd2 +_0809455C: + movs r7, 0x6 + movs r2, 0 + mov r9, r2 + movs r4, 0 + b _0809468E +_08094566: + mov r3, r12 + ldrh r1, [r3, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094624 + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0x6 + bne _0809458C + ldr r0, [r2] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _08094586 + movs r0, 0x4 + b _080946A0 +_08094586: + movs r0, 0x1 + mov r8, r0 + b _08094624 +_0809458C: + bl sub_8094924 + lsls r0, 24 + cmp r0, 0 + beq _08094624 + ldr r0, _080945A4 @ =gUnknown_2039825 + ldrb r0, [r0] + cmp r0, 0 + bne _080945A8 + movs r0, 0x8 + b _080946A0 + .align 2, 0 +_080945A4: .4byte gUnknown_2039825 +_080945A8: + movs r0, 0 + bl sub_8094E50 + subs r0, 0x1 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xE + bhi _08094624 + lsls r0, 2 + ldr r1, _080945C4 @ =_080945C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080945C4: .4byte _080945C8 + .align 2, 0 +_080945C8: + .4byte _08094604 + .4byte _08094608 + .4byte _0809460C + .4byte _08094610 + .4byte _08094614 + .4byte _08094624 + .4byte _08094624 + .4byte _08094624 + .4byte _08094624 + .4byte _08094624 + .4byte _08094624 + .4byte _08094618 + .4byte _0809461C + .4byte _08094624 + .4byte _08094620 +_08094604: + movs r0, 0xB + b _080946A0 +_08094608: + movs r0, 0xC + b _080946A0 +_0809460C: + movs r0, 0xD + b _080946A0 +_08094610: + movs r0, 0xE + b _080946A0 +_08094614: + movs r0, 0xF + b _080946A0 +_08094618: + movs r0, 0x10 + b _080946A0 +_0809461C: + movs r0, 0x11 + b _080946A0 +_08094620: + movs r0, 0x12 + b _080946A0 +_08094624: + ldr r2, _08094640 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x2 + ands r0, r1 + mov r12, r2 + cmp r0, 0 + beq _0809464C + ldr r0, _08094644 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + bne _08094648 + movs r0, 0x13 + b _080946A0 + .align 2, 0 +_08094640: .4byte gUnknown_30030F0 +_08094644: .4byte gUnknown_20397B0 +_08094648: + movs r1, 0x1 + mov r8, r1 +_0809464C: + mov r2, r8 + cmp r2, 0 + beq _0809465C + movs r7, 0x6 + movs r3, 0 + mov r9, r3 + movs r4, 0 + b _0809468E +_0809465C: + mov r0, r12 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0809468E + bl sub_8094C84 + movs r0, 0 + b _080946A0 +_08094670: + lsls r0, r4, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r4, r0, 24 + cmp r0, 0 + bge _08094680 + movs r4, 0x6 +_08094680: + lsls r0, r4, 24 + asrs r0, 24 + movs r1, 0 + ldrsb r1, [r6, r1] + cmp r0, r1 + beq _0809468E + movs r7, 0x1 +_0809468E: + cmp r7, 0 + beq _0809469E +_08094692: + cmp r7, 0x6 + beq _0809469E + mov r0, r9 + adds r1, r4, 0 + bl sub_80927E8 +_0809469E: + adds r0, r7, 0 +_080946A0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809448C + + thumb_func_start sub_80946AC +sub_80946AC: @ 80946AC + push {r4-r6,lr} + ldr r3, _080946E8 @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r1, _080946EC @ =0x00000ccf + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r3] + ldr r2, _080946F0 @ =0x00000cce + adds r0, r2 + strb r1, [r0] + ldr r0, [r3] + ldr r5, _080946F4 @ =0x00000cd3 + adds r0, r5 + strb r1, [r0] + ldr r1, _080946F8 @ =gUnknown_30030F0 + ldrh r2, [r1, 0x30] + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _08094772 + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _080946FC + movs r4, 0x1 + movs r1, 0 + movs r6, 0x2 + b _0809477E + .align 2, 0 +_080946E8: .4byte gUnknown_20397B0 +_080946EC: .4byte 0x00000ccf +_080946F0: .4byte 0x00000cce +_080946F4: .4byte 0x00000cd3 +_080946F8: .4byte gUnknown_30030F0 +_080946FC: + ldrh r2, [r1, 0x2C] + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _08094722 + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + bne _08094736 + ldr r0, _08094728 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _0809473A + movs r0, 0x80 + lsls r0, 2 + ands r0, r2 + cmp r0, 0 + beq _0809472C +_08094722: + movs r0, 0xA + b _0809479A + .align 2, 0 +_08094728: .4byte gUnknown_300500C +_0809472C: + movs r0, 0x80 + lsls r0, 1 + ands r0, r2 + cmp r0, 0 + beq _0809473A +_08094736: + movs r0, 0x9 + b _0809479A +_0809473A: + ldrh r1, [r1, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094752 + movs r0, 0 + bl sub_80920FC + bl sub_8094900 + movs r0, 0x7 + b _0809479A +_08094752: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0809475E + movs r0, 0x13 + b _0809479A +_0809475E: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0809476E + bl sub_8094C84 + movs r0, 0 + b _0809479A +_0809476E: + movs r4, 0 + b _08094798 +_08094772: + movs r4, 0x1 + movs r1, 0x3 + movs r6, 0 + ldr r0, [r3] + adds r0, r5 + strb r4, [r0] +_0809477E: + cmp r4, 0 + beq _08094798 + lsls r5, r1, 24 + cmp r1, 0x2 + beq _0809478E + movs r0, 0 + bl sub_80920FC +_0809478E: + lsrs r0, r5, 24 + lsls r1, r6, 24 + lsrs r1, 24 + bl sub_80927E8 +_08094798: + adds r0, r4, 0 +_0809479A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80946AC + + thumb_func_start sub_80947A0 +sub_80947A0: @ 80947A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080947F0 @ =gUnknown_2039820 + ldrb r0, [r0] + mov r8, r0 + ldr r0, _080947F4 @ =gUnknown_2039821 + mov r12, r0 + ldrb r2, [r0] + ldr r3, _080947F8 @ =gUnknown_20397B0 + ldr r0, [r3] + ldr r1, _080947FC @ =0x00000ccf + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r3] + ldr r6, _08094800 @ =0x00000cce + adds r0, r6 + strb r1, [r0] + ldr r0, [r3] + ldr r5, _08094804 @ =0x00000cd3 + adds r0, r5 + strb r1, [r0] + ldr r7, _08094808 @ =gUnknown_30030F0 + ldrh r1, [r7, 0x30] + movs r0, 0x40 + ands r0, r1 + adds r4, r3, 0 + cmp r0, 0 + bne _0809487A + movs r0, 0x88 + ands r0, r1 + cmp r0, 0 + beq _0809480C + movs r7, 0x1 + movs r0, 0x2 + mov r8, r0 + movs r2, 0 + ldr r0, [r4] + b _08094898 + .align 2, 0 +_080947F0: .4byte gUnknown_2039820 +_080947F4: .4byte gUnknown_2039821 +_080947F8: .4byte gUnknown_20397B0 +_080947FC: .4byte 0x00000ccf +_08094800: .4byte 0x00000cce +_08094804: .4byte 0x00000cd3 +_08094808: .4byte gUnknown_30030F0 +_0809480C: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08094828 + movs r7, 0x1 + lsls r0, r2, 24 + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + lsrs r2, r0, 24 + cmp r0, 0 + bge _0809489C + movs r2, 0x1 + b _0809489C +_08094828: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08094846 + movs r7, 0x1 + lsls r0, r2, 24 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r2, r0, 24 + asrs r0, 24 + cmp r0, 0x1 + ble _0809489C + movs r2, 0 + b _0809489C +_08094846: + ldrh r1, [r7, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0809485A + movs r0, 0x4 + cmp r2, 0 + bne _080948AA + movs r0, 0x5 + b _080948AA +_0809485A: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08094866 + movs r0, 0x13 + b _080948AA +_08094866: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08094876 + bl sub_8094C84 + movs r0, 0 + b _080948AA +_08094876: + movs r7, 0 + b _080948A8 +_0809487A: + movs r7, 0x1 + movs r0, 0 + mov r8, r0 + ldr r0, [r3] + adds r0, r6 + movs r1, 0xFF + strb r1, [r0] + mov r1, r12 + movs r0, 0 + ldrsb r0, [r1, r0] + movs r2, 0x1D + cmp r0, 0 + bne _08094896 + movs r2, 0x18 +_08094896: + ldr r0, [r3] +_08094898: + adds r0, r5 + strb r7, [r0] +_0809489C: + cmp r7, 0 + beq _080948A8 + mov r0, r8 + adds r1, r2, 0 + bl sub_80927E8 +_080948A8: + adds r0, r7, 0 +_080948AA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80947A0 + + thumb_func_start sub_80948B4 +sub_80948B4: @ 80948B4 + push {r4,r5,lr} + movs r3, 0 + ldr r0, _080948E0 @ =gUnknown_83D3478 + ldr r1, [r0] + adds r4, r0, 0 + cmp r1, 0 + beq _080948F8 + ldr r5, _080948E4 @ =gUnknown_2039820 +_080948C4: + lsls r0, r3, 3 + adds r2, r0, r4 + movs r1, 0x4 + ldrsb r1, [r2, r1] + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r1, r0 + bne _080948E8 + ldr r0, [r2] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + b _080948FA + .align 2, 0 +_080948E0: .4byte gUnknown_83D3478 +_080948E4: .4byte gUnknown_2039820 +_080948E8: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + lsls r0, r3, 3 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + bne _080948C4 +_080948F8: + movs r0, 0 +_080948FA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80948B4 + + thumb_func_start sub_8094900 +sub_8094900: @ 8094900 + push {lr} + bl sub_8094DA8 + movs r0, 0x9 + bl sub_8094DEC + movs r0, 0xA + bl sub_8094DEC + movs r0, 0xB + bl sub_8094DEC + movs r0, 0 + bl sub_8094DEC + pop {r0} + bx r0 + thumb_func_end sub_8094900 + + thumb_func_start sub_8094924 +sub_8094924: @ 8094924 + push {lr} + bl sub_8094DA8 + ldr r0, _0809493C @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08094940 + bl sub_8094A0C + b _08094944 + .align 2, 0 +_0809493C: .4byte gUnknown_20397B0 +_08094940: + bl sub_809494C +_08094944: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8094924 + + thumb_func_start sub_809494C +sub_809494C: @ 809494C + push {lr} + bl sub_8092458 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _0809496C @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + beq _08094976 + cmp r0, 0x1 + bgt _08094970 + cmp r0, 0 + beq _08094982 + b _080949BC + .align 2, 0 +_0809496C: .4byte gUnknown_20397B0 +_08094970: + cmp r0, 0x2 + beq _0809498E + b _080949BC +_08094976: + cmp r1, 0 + beq _080949BC + movs r0, 0x1 + bl sub_8094DEC + b _080949C0 +_08094982: + cmp r1, 0 + beq _080949BC + movs r0, 0x2 + bl sub_8094DEC + b _080949C0 +_0809498E: + ldr r0, _080949A4 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _080949B0 + cmp r1, 0 + beq _080949A8 + movs r0, 0x4 + bl sub_8094DEC + b _080949C0 + .align 2, 0 +_080949A4: .4byte gUnknown_2039822 +_080949A8: + movs r0, 0x5 + bl sub_8094DEC + b _080949C0 +_080949B0: + cmp r1, 0 + beq _080949BC + movs r0, 0x3 + bl sub_8094DEC + b _080949C0 +_080949BC: + movs r0, 0 + b _08094A06 +_080949C0: + movs r0, 0x6 + bl sub_8094DEC + ldr r0, _080949E4 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x2 + bne _080949F2 + ldr r0, _080949E8 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _080949EC + movs r0, 0x2 + bl sub_8094DEC + b _080949F2 + .align 2, 0 +_080949E4: .4byte gUnknown_20397B0 +_080949E8: .4byte gUnknown_2039820 +_080949EC: + movs r0, 0x1 + bl sub_8094DEC +_080949F2: + movs r0, 0x8 + bl sub_8094DEC + movs r0, 0x7 + bl sub_8094DEC + movs r0, 0 + bl sub_8094DEC + movs r0, 0x1 +_08094A06: + pop {r1} + bx r1 + thumb_func_end sub_809494C + + thumb_func_start sub_8094A0C +sub_8094A0C: @ 8094A0C + push {r4,r5,lr} + ldr r4, _08094A48 @ =gUnknown_20397B0 + ldr r0, [r4] + movs r5, 0xCE + lsls r5, 4 + adds r0, r5 + ldrh r1, [r0] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _08094A9E + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + bne _08094A70 + ldr r2, [r4] + ldr r0, _08094A4C @ =0x00000ce2 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08094A50 + adds r0, r2, r5 + ldrh r0, [r0] + cmp r0, 0 + beq _08094A9E + movs r0, 0xE + bl sub_8094DEC + b _08094AA8 + .align 2, 0 +_08094A48: .4byte gUnknown_20397B0 +_08094A4C: .4byte 0x00000ce2 +_08094A50: + ldrh r0, [r1] + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + bne _08094A68 + movs r0, 0xC + bl sub_8094DEC + movs r0, 0x10 + bl sub_8094DEC +_08094A68: + movs r0, 0x11 + bl sub_8094DEC + b _08094AA8 +_08094A70: + ldr r2, [r4] + ldr r0, _08094A8C @ =0x00000ce2 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08094A90 + adds r0, r2, r5 + ldrh r0, [r0] + cmp r0, 0 + beq _08094A9E + movs r0, 0xD + bl sub_8094DEC + b _08094AA8 + .align 2, 0 +_08094A8C: .4byte 0x00000ce2 +_08094A90: + ldrh r0, [r1] + bl sub_80980F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08094AA2 +_08094A9E: + movs r0, 0 + b _08094AB0 +_08094AA2: + movs r0, 0xF + bl sub_8094DEC +_08094AA8: + movs r0, 0 + bl sub_8094DEC + movs r0, 0x1 +_08094AB0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094A0C + + thumb_func_start sub_8094AB8 +sub_8094AB8: @ 8094AB8 + ldr r1, _08094AD4 @ =gUnknown_20397B0 + ldr r1, [r1] + movs r2, 0xCB + lsls r2, 4 + adds r1, r2 + ldr r2, [r1] + ldrh r2, [r2, 0x20] + strh r2, [r0, 0x20] + ldr r1, [r1] + ldrh r1, [r1, 0x22] + adds r1, 0x14 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08094AD4: .4byte gUnknown_20397B0 + thumb_func_end sub_8094AB8 + + thumb_func_start sub_8094AD8 +sub_8094AD8: @ 8094AD8 + push {r4-r6,lr} + sub sp, 0x2C + mov r1, sp + ldr r0, _08094BA4 @ =gUnknown_83D34A0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + add r4, sp, 0x18 + adds r1, r4, 0 + ldr r0, _08094BA8 @ =gUnknown_83D34B8 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r0] + str r0, [r1] + mov r0, sp + bl sub_8008720 + adds r0, r4, 0 + bl sub_8008974 + ldr r0, _08094BAC @ =0x0000daca + bl sub_80089E8 + ldr r6, _08094BB0 @ =gUnknown_20397B0 + ldr r1, [r6] + ldr r4, _08094BB4 @ =0x00000cd4 + adds r1, r4 + strb r0, [r1] + ldr r0, _08094BB8 @ =0x0000dac7 + bl sub_80089E8 + ldr r1, [r6] + ldr r5, _08094BBC @ =0x00000cd5 + adds r1, r5 + strb r0, [r1] + ldr r0, _08094BC0 @ =gUnknown_2039820 + ldrb r0, [r0] + ldr r1, _08094BC4 @ =gUnknown_2039821 + ldrb r1, [r1] + add r4, sp, 0x28 + mov r5, sp + adds r5, 0x2A + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8092398 + ldr r0, _08094BC8 @ =gUnknown_83D350C + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0 + ldrsh r2, [r5, r3] + movs r3, 0x6 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08094BD8 + ldr r2, [r6] + movs r4, 0xCB + lsls r4, 4 + adds r3, r2, r4 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08094BCC @ =gUnknown_202063C + adds r1, r0 + str r1, [r3] + ldr r0, _08094BD0 @ =gUnknown_2039825 + ldr r5, _08094BB4 @ =0x00000cd4 + adds r2, r5 + ldrb r0, [r0] + adds r2, r0 + ldrb r2, [r2] + lsls r2, 4 + ldrb r3, [r1, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] + ldr r0, [r6] + adds r0, r4 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, _08094BD4 @ =gUnknown_2039822 + ldrb r0, [r0] + cmp r0, 0 + beq _08094BE4 + ldr r0, [r6] + adds r0, r4 + ldr r0, [r0] + movs r1, 0x3 + bl sub_800838C + b _08094BE4 + .align 2, 0 +_08094BA4: .4byte gUnknown_83D34A0 +_08094BA8: .4byte gUnknown_83D34B8 +_08094BAC: .4byte 0x0000daca +_08094BB0: .4byte gUnknown_20397B0 +_08094BB4: .4byte 0x00000cd4 +_08094BB8: .4byte 0x0000dac7 +_08094BBC: .4byte 0x00000cd5 +_08094BC0: .4byte gUnknown_2039820 +_08094BC4: .4byte gUnknown_2039821 +_08094BC8: .4byte gUnknown_83D350C +_08094BCC: .4byte gUnknown_202063C +_08094BD0: .4byte gUnknown_2039825 +_08094BD4: .4byte gUnknown_2039822 +_08094BD8: + ldr r0, [r6] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + movs r1, 0 + str r1, [r0] +_08094BE4: + ldr r0, _08094BF8 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _08094BFC + movs r3, 0xD + movs r4, 0x1 + b _08094C00 + .align 2, 0 +_08094BF8: .4byte gUnknown_2039820 +_08094BFC: + movs r3, 0x15 + movs r4, 0x2 +_08094C00: + ldr r0, _08094C54 @ =gUnknown_83D3524 + movs r1, 0 + movs r2, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08094C68 + ldr r5, _08094C58 @ =gUnknown_20397B0 + ldr r2, [r5] + ldr r3, _08094C5C @ =0x00000cb4 + adds r2, r3 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08094C60 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + lsls r3, r4, 2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldr r0, _08094C64 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08094C74 + ldr r0, [r5] + ldr r4, _08094C5C @ =0x00000cb4 + adds r0, r4 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + b _08094C74 + .align 2, 0 +_08094C54: .4byte gUnknown_83D3524 +_08094C58: .4byte gUnknown_20397B0 +_08094C5C: .4byte 0x00000cb4 +_08094C60: .4byte gUnknown_202063C +_08094C64: .4byte gUnknown_2039820 +_08094C68: + ldr r0, _08094C7C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r5, _08094C80 @ =0x00000cb4 + adds r0, r5 + movs r1, 0 + str r1, [r0] +_08094C74: + add sp, 0x2C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08094C7C: .4byte gUnknown_20397B0 +_08094C80: .4byte 0x00000cb4 + thumb_func_end sub_8094AD8 + + thumb_func_start sub_8094C84 +sub_8094C84: @ 8094C84 + push {lr} + ldr r2, _08094CBC @ =gUnknown_2039825 + movs r1, 0 + ldrb r0, [r2] + cmp r0, 0 + bne _08094C92 + movs r1, 0x1 +_08094C92: + strb r1, [r2] + ldr r0, _08094CC0 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r3, 0xCB + lsls r3, 4 + adds r1, r0, r3 + ldr r3, [r1] + ldr r1, _08094CC4 @ =0x00000cd4 + adds r0, r1 + ldrb r2, [r2] + adds r0, r2 + ldrb r1, [r0] + lsls r1, 4 + ldrb r2, [r3, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + pop {r0} + bx r0 + .align 2, 0 +_08094CBC: .4byte gUnknown_2039825 +_08094CC0: .4byte gUnknown_20397B0 +_08094CC4: .4byte 0x00000cd4 + thumb_func_end sub_8094C84 + + thumb_func_start sub_8094CC8 +sub_8094CC8: @ 8094CC8 + ldr r0, _08094CD0 @ =gUnknown_2039821 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08094CD0: .4byte gUnknown_2039821 + thumb_func_end sub_8094CC8 + + thumb_func_start sub_8094CD4 +sub_8094CD4: @ 8094CD4 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r0, _08094D00 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _08094D08 + ldr r4, _08094D04 @ =gUnknown_2039821 + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x6 + bl __modsi3 + strb r0, [r5] + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x6 + bl __divsi3 + b _08094D0C + .align 2, 0 +_08094D00: .4byte gUnknown_2039820 +_08094D04: .4byte gUnknown_2039821 +_08094D08: + movs r0, 0 + strb r0, [r5] +_08094D0C: + strb r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8094CD4 + + thumb_func_start sub_8094D14 +sub_8094D14: @ 8094D14 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08094D30 @ =gUnknown_20397B0 + ldr r0, [r0] + movs r2, 0xCB + lsls r2, 4 + adds r0, r2 + ldr r0, [r0] + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_08094D30: .4byte gUnknown_20397B0 + thumb_func_end sub_8094D14 + + thumb_func_start sub_8094D34 +sub_8094D34: @ 8094D34 + ldr r0, _08094D3C @ =gUnknown_2039823 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08094D3C: .4byte gUnknown_2039823 + thumb_func_end sub_8094D34 + + thumb_func_start sub_8094D40 +sub_8094D40: @ 8094D40 + ldr r0, _08094D5C @ =gUnknown_20397B0 + ldr r0, [r0] + movs r1, 0xCB + lsls r1, 4 + adds r0, r1 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x5] + bx lr + .align 2, 0 +_08094D5C: .4byte gUnknown_20397B0 + thumb_func_end sub_8094D40 + + thumb_func_start sub_8094D60 +sub_8094D60: @ 8094D60 + push {lr} + ldr r0, _08094D7C @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _08094D78 + ldr r0, _08094D80 @ =gUnknown_2039821 + ldrb r1, [r0] + movs r0, 0 + bl sub_8095D44 +_08094D78: + pop {r0} + bx r0 + .align 2, 0 +_08094D7C: .4byte gUnknown_2039820 +_08094D80: .4byte gUnknown_2039821 + thumb_func_end sub_8094D60 + + thumb_func_start sub_8094D84 +sub_8094D84: @ 8094D84 + push {lr} + ldr r0, _08094DA0 @ =gUnknown_2039820 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _08094D9C + ldr r0, _08094DA4 @ =gUnknown_2039821 + ldrb r1, [r0] + movs r0, 0 + bl sub_8095C84 +_08094D9C: + pop {r0} + bx r0 + .align 2, 0 +_08094DA0: .4byte gUnknown_2039820 +_08094DA4: .4byte gUnknown_2039821 + thumb_func_end sub_8094D84 + + thumb_func_start sub_8094DA8 +sub_8094DA8: @ 8094DA8 + ldr r2, _08094DDC @ =gUnknown_20397B0 + ldr r0, [r2] + ldr r1, _08094DE0 @ =0x00000ca8 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r3, _08094DE4 @ =0x00000ca9 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + subs r3, 0x41 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _08094DE8 @ =0x00000c6d + adds r0, r1 + movs r1, 0xF + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x6 + adds r0, r3 + movs r1, 0x5C + strh r1, [r0] + bx lr + .align 2, 0 +_08094DDC: .4byte gUnknown_20397B0 +_08094DE0: .4byte 0x00000ca8 +_08094DE4: .4byte 0x00000ca9 +_08094DE8: .4byte 0x00000c6d + thumb_func_end sub_8094DA8 + + thumb_func_start sub_8094DEC +sub_8094DEC: @ 8094DEC + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r4, _08094E40 @ =gUnknown_20397B0 + ldr r2, [r4] + ldr r5, _08094E44 @ =0x00000ca8 + adds r1, r2, r5 + ldrb r0, [r1] + cmp r0, 0x6 + bhi _08094E38 + adds r1, r0, 0 + lsls r1, 3 + movs r0, 0xC7 + lsls r0, 4 + adds r1, r0 + adds r1, r2, r1 + ldr r2, _08094E48 @ =gUnknown_83D353C + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + str r3, [r1, 0x4] + bl sub_8008E08 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, [r4] + ldr r2, _08094E4C @ =0x00000ca9 + adds r0, r2 + ldrb r2, [r0] + cmp r1, r2 + bls _08094E2E + strb r1, [r0] +_08094E2E: + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08094E38: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08094E40: .4byte gUnknown_20397B0 +_08094E44: .4byte 0x00000ca8 +_08094E48: .4byte gUnknown_83D353C +_08094E4C: .4byte 0x00000ca9 + thumb_func_end sub_8094DEC + + thumb_func_start sub_8094E50 +sub_8094E50: @ 8094E50 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08094E74 @ =gUnknown_20397B0 + ldr r1, [r0] + ldr r3, _08094E78 @ =0x00000ca8 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bcs _08094E80 + lsls r0, r2, 3 + ldr r2, _08094E7C @ =0x00000c74 + adds r1, r2 + adds r1, r0 + movs r0, 0 + ldrsb r0, [r1, r0] + b _08094E84 + .align 2, 0 +_08094E74: .4byte gUnknown_20397B0 +_08094E78: .4byte 0x00000ca8 +_08094E7C: .4byte 0x00000c74 +_08094E80: + movs r0, 0x1 + negs r0, r0 +_08094E84: + pop {r1} + bx r1 + thumb_func_end sub_8094E50 + + thumb_func_start sub_8094E88 +sub_8094E88: @ 8094E88 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0xC + ldr r5, _08094F6C @ =gUnknown_20397B0 + ldr r1, [r5] + ldr r2, _08094F70 @ =0x00000ca9 + adds r0, r1, r2 + ldrb r0, [r0] + adds r0, 0x2 + subs r2, 0x3E + adds r1, r2 + movs r3, 0 + mov r10, r3 + strb r0, [r1] + ldr r1, [r5] + ldr r0, _08094F74 @ =0x00000ca8 + mov r8, r0 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, 1 + ldr r3, _08094F78 @ =0x00000c6c + adds r1, r3 + strb r0, [r1] + ldr r1, [r5] + adds r2, r1, r2 + ldrb r2, [r2] + movs r0, 0x1D + subs r0, r2 + ldr r2, _08094F7C @ =0x00000c69 + adds r1, r2 + strb r0, [r1] + ldr r1, [r5] + adds r3, r1, r3 + ldrb r2, [r3] + movs r0, 0xF + subs r0, r2 + ldr r3, _08094F80 @ =0x00000c6a + adds r1, r3 + strb r0, [r1] + ldr r0, [r5] + ldr r1, _08094F84 @ =0x00000c68 + adds r0, r1 + bl sub_8003CE4 + ldr r1, [r5] + ldr r4, _08094F88 @ =0x00000cac + adds r1, r4 + movs r2, 0 + mov r9, r2 + strh r0, [r1] + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0xB + movs r3, 0xE + bl sub_810F2E8 + ldr r2, [r5] + adds r0, r2, r4 + ldrb r0, [r0] + movs r6, 0x10 + str r6, [sp] + mov r3, r8 + adds r1, r2, r3 + ldrb r1, [r1] + str r1, [sp, 0x4] + movs r1, 0xC7 + lsls r1, 4 + adds r2, r1 + str r2, [sp, 0x8] + movs r1, 0x1 + movs r2, 0x8 + movs r3, 0x2 + bl sub_810FB6C + ldr r1, [r5] + adds r4, r1, r4 + ldrb r0, [r4] + str r6, [sp] + add r1, r8 + ldrb r1, [r1] + str r1, [sp, 0x4] + mov r2, r10 + str r2, [sp, 0x8] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0 + bl sub_80F67A4 + ldr r0, [r5] + ldr r3, _08094F8C @ =0x00000caa + adds r0, r3 + mov r1, r9 + strb r1, [r0] + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08094F6C: .4byte gUnknown_20397B0 +_08094F70: .4byte 0x00000ca9 +_08094F74: .4byte 0x00000ca8 +_08094F78: .4byte 0x00000c6c +_08094F7C: .4byte 0x00000c69 +_08094F80: .4byte 0x00000c6a +_08094F84: .4byte 0x00000c68 +_08094F88: .4byte 0x00000cac +_08094F8C: .4byte 0x00000caa + thumb_func_end sub_8094E88 + + thumb_func_start sub_8094F90 +sub_8094F90: @ 8094F90 + movs r0, 0 + bx lr + thumb_func_end sub_8094F90 + + thumb_func_start sub_8094F94 +sub_8094F94: @ 8094F94 + push {r4,r5,lr} + movs r5, 0x2 + negs r5, r5 + ldr r4, _08094FD0 @ =gUnknown_30030F0 + ldrh r1, [r4, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08094FEA + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08094FB6 + movs r0, 0x5 + bl sub_80722CC + adds r5, 0x1 +_08094FB6: + ldrh r1, [r4, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08094FD4 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + bl sub_810F904 + b _08094FF2 + .align 2, 0 +_08094FD0: .4byte gUnknown_30030F0 +_08094FD4: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08094FF2 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_810F904 + b _08094FF2 +_08094FEA: + bl sub_810F98C + lsls r0, 24 + lsrs r5, r0, 24 +_08094FF2: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _08094FFE + bl sub_8095024 +_08094FFE: + cmp r5, 0 + blt _08095010 + ldr r0, _0809501C @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r5, 3 + ldr r2, _08095020 @ =0x00000c74 + adds r0, r2 + adds r0, r1 + ldr r5, [r0] +_08095010: + lsls r0, r5, 16 + asrs r0, 16 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809501C: .4byte gUnknown_20397B0 +_08095020: .4byte 0x00000c74 + thumb_func_end sub_8094F94 + + thumb_func_start sub_8095024 +sub_8095024: @ 8095024 + push {r4,r5,lr} + ldr r5, _08095048 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r4, _0809504C @ =0x00000cac + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_810F4D8 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08095048: .4byte gUnknown_20397B0 +_0809504C: .4byte 0x00000cac + thumb_func_end sub_8095024 + + thumb_func_start sub_8095050 +sub_8095050: @ 8095050 + push {r4,lr} + ldr r4, _08095088 @ =gUnknown_2039828 + ldr r0, _0809508C @ =0x00000974 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0809509C + ldr r0, _08095090 @ =gUnknown_83D35D4 + bl sub_8005038 + adds r1, r0, 0 + ldr r0, _08095094 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _08095098 @ =0x000021f0 + adds r0, r2 + strh r1, [r0] + lsls r0, r1, 16 + lsrs r0, 16 + cmp r0, 0xFF + beq _0809509C + lsls r0, r1, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_800445C + movs r0, 0x1 + b _0809509E + .align 2, 0 +_08095088: .4byte gUnknown_2039828 +_0809508C: .4byte 0x00000974 +_08095090: .4byte gUnknown_83D35D4 +_08095094: .4byte gUnknown_20397B0 +_08095098: .4byte 0x000021f0 +_0809509C: + movs r0, 0 +_0809509E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095050 + + thumb_func_start sub_80950A4 +sub_80950A4: @ 80950A4 + push {lr} + ldr r0, _080950B8 @ =gUnknown_2039828 + ldr r0, [r0] + cmp r0, 0 + beq _080950B2 + bl sub_8002BC4 +_080950B2: + pop {r0} + bx r0 + .align 2, 0 +_080950B8: .4byte gUnknown_2039828 + thumb_func_end sub_80950A4 + + thumb_func_start sub_80950BC +sub_80950BC: @ 80950BC + ldr r2, _080950CC @ =gUnknown_2039828 + ldr r1, [r2] + movs r3, 0 + strb r0, [r1] + ldr r0, [r2] + strb r3, [r0, 0x1] + bx lr + .align 2, 0 +_080950CC: .4byte gUnknown_2039828 + thumb_func_end sub_80950BC + + thumb_func_start sub_80950D0 +sub_80950D0: @ 80950D0 + push {lr} + ldr r0, _080950E8 @ =gUnknown_2039828 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0x5 + bhi _08095130 + lsls r0, 2 + ldr r1, _080950EC @ =_080950F0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080950E8: .4byte gUnknown_2039828 +_080950EC: .4byte _080950F0 + .align 2, 0 +_080950F0: + .4byte _08095108 + .4byte _0809510E + .4byte _08095114 + .4byte _0809511A + .4byte _08095120 + .4byte _08095126 +_08095108: + bl sub_8095138 + b _0809512A +_0809510E: + bl sub_8095234 + b _0809512A +_08095114: + bl sub_80952A0 + b _0809512A +_0809511A: + bl sub_8095314 + b _0809512A +_08095120: + bl sub_8095394 + b _0809512A +_08095126: + bl sub_80953BC +_0809512A: + lsls r0, 24 + lsrs r0, 24 + b _08095132 +_08095130: + movs r0, 0 +_08095132: + pop {r1} + bx r1 + thumb_func_end sub_80950D0 + + thumb_func_start sub_8095138 +sub_8095138: @ 8095138 + push {r4-r6,lr} + sub sp, 0x8 + ldr r6, _08095150 @ =gUnknown_2039828 + ldr r1, [r6] + ldrb r0, [r1, 0x1] + cmp r0, 0x1 + beq _08095168 + cmp r0, 0x1 + bgt _08095154 + cmp r0, 0 + beq _0809515A + b _08095228 + .align 2, 0 +_08095150: .4byte gUnknown_2039828 +_08095154: + cmp r0, 0x2 + beq _08095214 + b _08095228 +_0809515A: + movs r0, 0 + bl sub_80019D0 + movs r0, 0x80 + bl sub_8097198 + b _080951F8 +_08095168: + adds r0, r1, 0x2 + adds r1, 0x3 + bl sub_8094CD4 + ldr r1, [r6] + ldrb r0, [r1, 0x2] + strb r0, [r1, 0x4] + ldr r1, [r6] + ldrb r0, [r1, 0x3] + strb r0, [r1, 0x5] + ldr r4, _08095204 @ =0xfffffc00 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r5, _08095208 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r4, _0809520C @ =0x000021f0 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_8005140 + ldr r1, [r6] + ldrb r0, [r1, 0x2] + ldrb r1, [r1, 0x3] + bl sub_80956A4 + movs r0, 0 + movs r1, 0x4 + movs r2, 0x1 + bl sub_80019E4 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_80052D8 + movs r0, 0xFC + lsls r0, 6 + ldr r2, _08095210 @ =0x00007fff + movs r1, 0x8 + bl sub_80714D4 + movs r0, 0x2 + bl sub_8094D14 + movs r0, 0x8 + movs r1, 0x80 + bl sub_8000AF4 +_080951F8: + ldr r1, [r6] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _08095228 + .align 2, 0 +_08095204: .4byte 0xfffffc00 +_08095208: .4byte gUnknown_20397B0 +_0809520C: .4byte 0x000021f0 +_08095210: .4byte 0x00007fff +_08095214: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08095228 + movs r0, 0 + bl sub_80019BC + movs r0, 0 + b _0809522A +_08095228: + movs r0, 0x1 +_0809522A: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8095138 + + thumb_func_start sub_8095234 +sub_8095234: @ 8095234 + push {r4,lr} + ldr r4, _0809524C @ =gUnknown_2039828 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + beq _0809525E + cmp r0, 0x1 + bgt _08095250 + cmp r0, 0 + beq _08095256 + b _08095298 + .align 2, 0 +_0809524C: .4byte gUnknown_2039828 +_08095250: + cmp r0, 0x2 + beq _08095272 + b _08095298 +_08095256: + movs r0, 0 + bl sub_80019D0 + b _08095268 +_0809525E: + bl sub_8095A58 + movs r0, 0 + bl sub_8094D14 +_08095268: + ldr r1, [r4] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _08095298 +_08095272: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08095298 + bl sub_8094D40 + movs r0, 0x3 + bl sub_8150408 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0 + bl sub_80019BC + movs r0, 0 + b _0809529A +_08095298: + movs r0, 0x1 +_0809529A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095234 + + thumb_func_start sub_80952A0 +sub_80952A0: @ 80952A0 + push {r4,lr} + ldr r4, _080952B4 @ =gUnknown_2039828 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _080952B8 + cmp r0, 0x1 + beq _08095300 + b _0809530A + .align 2, 0 +_080952B4: .4byte gUnknown_2039828 +_080952B8: + bl sub_80924A8 + lsls r0, 24 + cmp r0, 0 + bne _0809530A + ldr r1, [r4] + adds r0, r1, 0x6 + adds r1, 0x7 + bl sub_8094CD4 + bl sub_8095520 + ldr r1, [r4] + ldrb r0, [r1, 0x6] + strb r0, [r1, 0x4] + ldr r1, [r4] + ldrb r0, [r1, 0x7] + strb r0, [r1, 0x5] + ldr r0, _080952F8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080952FC @ =0x000021f0 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_80052D8 + ldr r1, [r4] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _0809530A + .align 2, 0 +_080952F8: .4byte gUnknown_20397B0 +_080952FC: .4byte 0x000021f0 +_08095300: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0809530C +_0809530A: + movs r0, 0x1 +_0809530C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80952A0 + + thumb_func_start sub_8095314 +sub_8095314: @ 8095314 + push {r4,lr} + ldr r4, _0809532C @ =gUnknown_2039828 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + beq _08095342 + cmp r0, 0x1 + bgt _08095330 + cmp r0, 0 + beq _08095336 + b _0809538C + .align 2, 0 +_0809532C: .4byte gUnknown_2039828 +_08095330: + cmp r0, 0x2 + beq _0809536E + b _0809538C +_08095336: + bl sub_80957C8 + bl sub_80958A0 + movs r0, 0 + b _08095360 +_08095342: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0809538C + movs r0, 0x3 + bl sub_8094D14 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0 + movs r2, 0x8 + bl sub_8095780 + movs r0, 0x1 +_08095360: + bl sub_8092BAC + ldr r1, [r4] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _0809538C +_0809536E: + bl sub_8095790 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8092BF8 + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0 + bne _0809538C + cmp r0, 0 + bne _0809538C + movs r0, 0 + b _0809538E +_0809538C: + movs r0, 0x1 +_0809538E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095314 + + thumb_func_start sub_8095394 +sub_8095394: @ 8095394 + push {r4,lr} + bl sub_80924A8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8095790 + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0 + bne _080953B4 + cmp r0, 0 + bne _080953B4 + movs r0, 0 + b _080953B6 +_080953B4: + movs r0, 0x1 +_080953B6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095394 + + thumb_func_start sub_80953BC +sub_80953BC: @ 80953BC + push {r4,lr} + ldr r4, _080953D4 @ =gUnknown_2039828 + ldr r0, [r4] + ldrb r0, [r0, 0x1] + cmp r0, 0x1 + beq _080953FA + cmp r0, 0x1 + bgt _080953D8 + cmp r0, 0 + beq _080953E2 + b _0809546A + .align 2, 0 +_080953D4: .4byte gUnknown_2039828 +_080953D8: + cmp r0, 0x2 + beq _08095426 + cmp r0, 0x3 + beq _08095444 + b _0809546A +_080953E2: + bl sub_80959A8 + movs r1, 0xFF + lsls r1, 8 + movs r0, 0 + movs r2, 0x8 + bl sub_8095780 + movs r0, 0 + bl sub_8092BAC + b _0809543A +_080953FA: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0809546A + bl sub_8095790 + lsls r0, 24 + cmp r0, 0 + bne _0809546A + bl sub_8095918 + movs r0, 0x2 + bl sub_8094D14 + movs r0, 0x1 + bl sub_8092BAC + movs r0, 0 + bl sub_80019D0 + b _0809543A +_08095426: + bl sub_8092BF8 + lsls r0, 24 + cmp r0, 0 + bne _0809546A + movs r0, 0 + bl sub_8094D14 + bl sub_8095A58 +_0809543A: + ldr r1, [r4] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + b _0809546A +_08095444: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0809546A + movs r0, 0x3 + bl sub_8150408 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + bl sub_8094D40 + movs r0, 0 + bl sub_80019BC + movs r0, 0 + b _0809546C +_0809546A: + movs r0, 0x1 +_0809546C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80953BC + + thumb_func_start sub_8095474 +sub_8095474: @ 8095474 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x1 + beq _080954B0 + cmp r0, 0x1 + bgt _0809548A + cmp r0, 0 + beq _08095494 + b _08095518 +_0809548A: + cmp r1, 0x2 + beq _080954D0 + cmp r1, 0x3 + beq _080954F0 + b _08095518 +_08095494: + ldr r0, _080954AC @ =gUnknown_2039828 + ldr r1, [r0] + ldrb r0, [r1, 0x9] + cmp r0, 0 + beq _080954FE + subs r0, 0x1 + strb r0, [r1, 0x9] + movs r1, 0x80 + lsls r1, 3 + movs r0, 0 + b _080954E4 + .align 2, 0 +_080954AC: .4byte gUnknown_2039828 +_080954B0: + ldr r0, _080954CC @ =gUnknown_2039828 + ldr r1, [r0] + ldrb r2, [r1, 0x9] + ldrb r0, [r1, 0xB] + adds r0, r2, r0 + cmp r0, 0x4 + bgt _080954FE + adds r0, r2, 0x1 + strb r0, [r1, 0x9] + movs r1, 0xFC + lsls r1, 8 + movs r0, 0 + b _080954E4 + .align 2, 0 +_080954CC: .4byte gUnknown_2039828 +_080954D0: + ldr r0, _080954EC @ =gUnknown_2039828 + ldr r1, [r0] + ldrb r0, [r1, 0x8] + cmp r0, 0 + beq _080954FE + subs r0, 0x1 + strb r0, [r1, 0x8] + movs r0, 0x80 + lsls r0, 3 + movs r1, 0 +_080954E4: + movs r2, 0x6 + bl sub_8095780 + b _08095518 + .align 2, 0 +_080954EC: .4byte gUnknown_2039828 +_080954F0: + ldr r0, _08095504 @ =gUnknown_2039828 + ldr r1, [r0] + ldrb r2, [r1, 0x8] + ldrb r0, [r1, 0xA] + adds r0, r2, r0 + cmp r0, 0x5 + ble _08095508 +_080954FE: + movs r0, 0 + b _0809551A + .align 2, 0 +_08095504: .4byte gUnknown_2039828 +_08095508: + adds r0, r2, 0x1 + strb r0, [r1, 0x8] + movs r0, 0xFC + lsls r0, 8 + movs r1, 0 + movs r2, 0x6 + bl sub_8095780 +_08095518: + movs r0, 0x1 +_0809551A: + pop {r1} + bx r1 + thumb_func_end sub_8095474 + + thumb_func_start sub_8095520 +sub_8095520: @ 8095520 + push {r4-r7,lr} + ldr r6, _080955C0 @ =gUnknown_2039828 + ldr r2, [r6] + ldrb r3, [r2, 0x2] + ldrb r5, [r2, 0x6] + subs r1, r3, r5 + cmp r1, 0 + bge _08095532 + negs r1, r1 +_08095532: + ldrb r0, [r2, 0x4] + subs r0, r3, r0 + cmp r0, 0 + bge _0809553C + negs r0, r0 +_0809553C: + subs r0, r1, r0 + lsls r0, 16 + lsrs r4, r0, 16 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x7] + subs r3, r1, r0 + cmp r3, 0 + bge _0809554E + negs r3, r3 +_0809554E: + ldrb r2, [r2, 0x5] + subs r0, r1, r2 + cmp r0, 0 + bge _08095558 + negs r0, r0 +_08095558: + subs r0, r3, r0 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r0, r4, 16 + asrs r4, r0, 16 + cmp r4, 0 + ble _0809556C + adds r0, r5, 0 + bl sub_80955C4 +_0809556C: + cmp r4, 0 + bge _08095588 + ldr r2, [r6] + ldrb r0, [r2, 0x4] + ldrb r1, [r2, 0x3] + ldrb r2, [r2, 0x5] + bl sub_8095634 + ldr r2, [r6] + ldrb r0, [r2, 0x6] + ldrb r1, [r2, 0x3] + ldrb r2, [r2, 0x5] + bl sub_80955C4 +_08095588: + lsls r0, r7, 16 + asrs r4, r0, 16 + cmp r4, 0 + ble _0809559C + ldr r2, [r6] + ldrb r0, [r2, 0x7] + ldrb r1, [r2, 0x2] + ldrb r2, [r2, 0x4] + bl sub_80955FC +_0809559C: + cmp r4, 0 + bge _080955B8 + ldr r2, [r6] + ldrb r0, [r2, 0x5] + ldrb r1, [r2, 0x2] + ldrb r2, [r2, 0x4] + bl sub_809566C + ldr r2, [r6] + ldrb r0, [r2, 0x7] + ldrb r1, [r2, 0x2] + ldrb r2, [r2, 0x4] + bl sub_80955FC +_080955B8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080955C0: .4byte gUnknown_2039828 + thumb_func_end sub_8095520 + + thumb_func_start sub_80955C4 +sub_80955C4: @ 80955C4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r1, r4, 0 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r5, 0 + cmp r4, r5 + bls _080955E2 + adds r4, r5, 0 + adds r5, r1, 0 + cmp r0, r5 + bhi _080955F4 +_080955E2: + adds r1, r4, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0 + bl sub_80956A4 + cmp r4, r5 + bls _080955E2 +_080955F4: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80955C4 + + thumb_func_start sub_80955FC +sub_80955FC: @ 80955FC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r1, r4, 0 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r5, 0 + cmp r4, r5 + bls _0809561A + adds r4, r5, 0 + adds r5, r1, 0 + cmp r0, r5 + bhi _0809562C +_0809561A: + adds r0, r4, 0 + adds r1, r0, 0x1 + lsls r1, 24 + lsrs r4, r1, 24 + adds r1, r6, 0 + bl sub_80956A4 + cmp r4, r5 + bls _0809561A +_0809562C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80955FC + + thumb_func_start sub_8095634 +sub_8095634: @ 8095634 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r1, r4, 0 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r5, 0 + cmp r4, r5 + bls _08095652 + adds r4, r5, 0 + adds r5, r1, 0 + cmp r0, r5 + bhi _08095664 +_08095652: + adds r1, r4, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0 + bl sub_809572C + cmp r4, r5 + bls _08095652 +_08095664: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8095634 + + thumb_func_start sub_809566C +sub_809566C: @ 809566C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + adds r1, r4, 0 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r5, 0 + cmp r4, r5 + bls _0809568A + adds r4, r5, 0 + adds r5, r1, 0 + cmp r0, r5 + bhi _0809569C +_0809568A: + adds r0, r4, 0 + adds r1, r0, 0x1 + lsls r1, 24 + lsrs r4, r1, 24 + adds r1, r6, 0 + bl sub_809572C + cmp r4, r5 + bls _0809568A +_0809569C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_809566C + + thumb_func_start sub_80956A4 +sub_80956A4: @ 80956A4 + push {r4-r7,lr} + sub sp, 0x1C + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 1 + adds r7, r0, r1 + lsls r4, r7, 1 + adds r4, r6, r4 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_808BAA0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_808BAA0 + adds r1, r0, 0 + cmp r5, 0 + beq _0809571A + adds r0, r5, 0 + movs r2, 0x1 + bl sub_8097054 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_80971F8 + adds r0, 0x8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08095724 @ =gUnknown_20397B0 + ldr r1, [r1] + ldr r2, _08095728 @ =0x000021f0 + adds r1, r2 + ldrb r3, [r1] + movs r2, 0x20 + str r2, [sp] + str r2, [sp, 0x4] + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 3 + str r1, [sp, 0x8] + lsls r1, r7, 3 + str r1, [sp, 0xC] + str r2, [sp, 0x10] + str r2, [sp, 0x14] + str r0, [sp, 0x18] + adds r0, r3, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_800520C +_0809571A: + add sp, 0x1C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095724: .4byte gUnknown_20397B0 +_08095728: .4byte 0x000021f0 + thumb_func_end sub_80956A4 + + thumb_func_start sub_809572C +sub_809572C: @ 809572C + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 1 + adds r5, r0, r1 + lsls r0, r5, 1 + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x41 + bl sub_808BAA0 + lsls r0, 16 + cmp r0, 0 + beq _0809576E + ldr r0, _08095778 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0809577C @ =0x000021f0 + adds r0, r1 + ldrb r0, [r0] + lsls r2, r4, 1 + adds r2, r4 + lsls r2, 3 + lsls r3, r5, 3 + movs r1, 0x20 + str r1, [sp] + str r1, [sp, 0x4] + movs r1, 0 + bl sub_8005180 +_0809576E: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08095778: .4byte gUnknown_20397B0 +_0809577C: .4byte 0x000021f0 + thumb_func_end sub_809572C + + thumb_func_start sub_8095780 +sub_8095780: @ 8095780 + ldr r3, _0809578C @ =gUnknown_2039828 + ldr r3, [r3] + strh r0, [r3, 0xC] + strh r1, [r3, 0xE] + strh r2, [r3, 0x10] + bx lr + .align 2, 0 +_0809578C: .4byte gUnknown_2039828 + thumb_func_end sub_8095780 + + thumb_func_start sub_8095790 +sub_8095790: @ 8095790 + push {r4,lr} + ldr r4, _080957C4 @ =gUnknown_2039828 + ldr r1, [r4] + ldrh r0, [r1, 0x10] + cmp r0, 0 + beq _080957BA + ldrh r1, [r1, 0xC] + movs r0, 0 + movs r2, 0x1 + bl sub_8001B90 + ldr r0, [r4] + ldrh r1, [r0, 0xE] + movs r0, 0 + movs r2, 0x1 + bl sub_8001D08 + ldr r1, [r4] + ldrh r0, [r1, 0x10] + subs r0, 0x1 + strh r0, [r1, 0x10] +_080957BA: + ldr r0, [r4] + ldrb r0, [r0, 0x10] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080957C4: .4byte gUnknown_2039828 + thumb_func_end sub_8095790 + + thumb_func_start sub_80957C8 +sub_80957C8: @ 80957C8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0809589C @ =gUnknown_2039828 + ldr r1, [r4] + ldrb r0, [r1, 0x4] + ldrb r2, [r1, 0x2] + cmp r0, r2 + bls _080957E0 + adds r0, r2, 0 +_080957E0: + strb r0, [r1, 0x8] + ldr r1, [r4] + ldrb r0, [r1, 0x5] + ldrb r2, [r1, 0x3] + cmp r0, r2 + bls _080957EE + adds r0, r2, 0 +_080957EE: + strb r0, [r1, 0x9] + ldr r2, [r4] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x4] + subs r0, r1, r0 + cmp r0, 0 + bge _080957FE + negs r0, r0 +_080957FE: + adds r0, 0x1 + strb r0, [r2, 0xA] + ldr r2, [r4] + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x5] + subs r0, r1, r0 + cmp r0, 0 + bge _08095810 + negs r0, r0 +_08095810: + adds r0, 0x1 + strb r0, [r2, 0xB] + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r6, 0 + ldr r0, [r4] + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0xA] + adds r2, r1 + mov r8, r2 + ldrb r1, [r0, 0x9] + ldrb r0, [r0, 0xB] + adds r0, r1 + mov r9, r0 + adds r2, r1, 0 + cmp r2, r9 + bge _0809588C +_08095838: + lsls r0, r2, 1 + adds r0, r2 + ldr r3, _0809589C @ =gUnknown_2039828 + ldr r1, [r3] + lsls r0, 1 + ldrb r3, [r1, 0x8] + adds r0, r3 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r4, [r1, 0x8] + adds r7, r2, 0x1 + cmp r4, r8 + bge _08095886 + mov r0, r8 + subs r4, r0, r4 +_08095856: + mov r0, r10 + adds r1, r5, 0 + bl sub_808BD30 + adds r1, r0, 0 + ldr r2, _0809589C @ =gUnknown_2039828 + ldr r0, [r2] + lsls r2, r6, 2 + adds r2, r6 + lsls r2, 4 + adds r0, r2 + adds r0, 0x14 + movs r2, 0x50 + bl memcpy + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + subs r4, 0x1 + cmp r4, 0 + bne _08095856 +_08095886: + adds r2, r7, 0 + cmp r2, r9 + blt _08095838 +_0809588C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809589C: .4byte gUnknown_2039828 + thumb_func_end sub_80957C8 + + thumb_func_start sub_80958A0 +sub_80958A0: @ 80958A0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, _08095914 @ =gUnknown_2039828 + ldr r0, [r4] + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0xA] + adds r7, r2, r1 + ldrb r1, [r0, 0x9] + ldrb r0, [r0, 0xB] + adds r1, r0 + mov r9, r1 + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, [r4] + ldrb r2, [r0, 0x9] + cmp r2, r9 + bge _08095908 +_080958CC: + lsls r0, r2, 1 + adds r0, r2 + ldr r1, _08095914 @ =gUnknown_2039828 + ldr r1, [r1] + lsls r0, 1 + ldrb r3, [r1, 0x8] + adds r0, r3 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r4, [r1, 0x8] + adds r6, r2, 0x1 + cmp r4, r7 + bge _08095902 + subs r4, r7, r4 +_080958E8: + adds r0, r5, 0 + bl sub_809081C + mov r0, r8 + adds r1, r5, 0 + bl sub_808BCB4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + subs r4, 0x1 + cmp r4, 0 + bne _080958E8 +_08095902: + adds r2, r6, 0 + cmp r2, r9 + blt _080958CC +_08095908: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095914: .4byte gUnknown_2039828 + thumb_func_end sub_80958A0 + + thumb_func_start sub_8095918 +sub_8095918: @ 8095918 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080959A4 @ =gUnknown_2039828 + ldr r0, [r0] + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0xA] + adds r2, r1 + mov r8, r2 + ldrb r1, [r0, 0x9] + ldrb r0, [r0, 0xB] + adds r0, r1 + mov r10, r0 + movs r6, 0 + adds r2, r1, 0 + cmp r2, r10 + bge _08095994 +_0809593E: + lsls r0, r2, 1 + adds r0, r2 + ldr r3, _080959A4 @ =gUnknown_2039828 + ldr r1, [r3] + lsls r0, 1 + ldrb r4, [r1, 0x8] + adds r0, r4 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r4, [r1, 0x8] + adds r7, r2, 0x1 + cmp r4, r8 + bge _0809598E + mov r9, r3 + mov r0, r8 + subs r4, r0, r4 +_0809595E: + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 4 + adds r1, 0x14 + mov r2, r9 + ldr r0, [r2] + adds r0, r1 + movs r1, 0x5 + bl sub_803FD44 + cmp r0, 0 + beq _0809597C + adds r0, r5, 0 + bl sub_80901EC +_0809597C: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + subs r4, 0x1 + cmp r4, 0 + bne _0809595E +_0809598E: + adds r2, r7, 0 + cmp r2, r10 + blt _0809593E +_08095994: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080959A4: .4byte gUnknown_2039828 + thumb_func_end sub_8095918 + + thumb_func_start sub_80959A8 +sub_80959A8: @ 80959A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r4, _08095A54 @ =gUnknown_2039828 + ldr r0, [r4] + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0xA] + adds r2, r1 + mov r10, r2 + ldrb r1, [r0, 0x9] + ldrb r0, [r0, 0xB] + adds r1, r0 + str r1, [sp] + bl sub_808B9F4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r7, 0 + ldr r0, [r4] + ldrb r3, [r0, 0x9] + ldr r0, [sp] + cmp r3, r0 + bge _08095A42 +_080959DE: + lsls r0, r3, 1 + adds r0, r3 + ldr r2, _08095A54 @ =gUnknown_2039828 + ldr r1, [r2] + lsls r0, 1 + ldrb r4, [r1, 0x8] + adds r0, r4 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r5, [r1, 0x8] + adds r3, 0x1 + mov r9, r3 + cmp r5, r10 + bge _08095A3A + mov r8, r2 + mov r0, r10 + subs r5, r0, r5 +_08095A00: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 4 + adds r4, r0, 0 + adds r4, 0x14 + mov r1, r8 + ldr r0, [r1] + adds r0, r4 + movs r1, 0x5 + bl sub_803FD44 + cmp r0, 0 + beq _08095A28 + mov r0, r8 + ldr r2, [r0] + adds r2, r4 + ldr r0, [sp, 0x4] + adds r1, r6, 0 + bl sub_808BBB4 +_08095A28: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + subs r5, 0x1 + cmp r5, 0 + bne _08095A00 +_08095A3A: + mov r3, r9 + ldr r1, [sp] + cmp r3, r1 + blt _080959DE +_08095A42: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095A54: .4byte gUnknown_2039828 + thumb_func_end sub_80959A8 + + thumb_func_start sub_8095A58 +sub_8095A58: @ 8095A58 + push {lr} + sub sp, 0x8 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0 + movs r1, 0x4 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x8 + movs r1, 0x80 + bl sub_8000B14 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_8095A58 + + thumb_func_start sub_8095AA0 +sub_8095AA0: @ 8095AA0 + ldr r0, _08095AB8 @ =gUnknown_2039828 + ldr r2, [r0] + ldrb r1, [r2, 0x3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 1 + ldrb r2, [r2, 0x2] + adds r0, r2 + lsls r0, 24 + lsrs r0, 24 + bx lr + .align 2, 0 +_08095AB8: .4byte gUnknown_2039828 + thumb_func_end sub_8095AA0 + + thumb_func_start sub_8095ABC +sub_8095ABC: @ 8095ABC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _08095B28 @ =gUnknown_2039828 + ldr r0, [r0] + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0xA] + adds r2, r1 + mov r9, r2 + ldrb r1, [r0, 0x9] + ldrb r0, [r0, 0xB] + adds r0, r1, r0 + str r0, [sp] + movs r7, 0 + adds r6, r1, 0 + cmp r6, r0 + bge _08095B4A + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 1 + mov r8, r0 +_08095AEC: + ldr r2, _08095B28 @ =gUnknown_2039828 + ldr r1, [r2] + ldrb r0, [r1, 0x8] + add r0, r8 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r4, [r1, 0x8] + cmp r4, r9 + bge _08095B3E + mov r10, r2 +_08095B00: + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 4 + adds r1, 0x14 + mov r2, r10 + ldr r0, [r2] + adds r0, r1 + movs r1, 0x5 + bl sub_803FD44 + cmp r0, 0 + beq _08095B2C + adds r0, r5, 0 + movs r1, 0x5 + bl sub_808BAA0 + cmp r0, 0 + beq _08095B2C + movs r0, 0 + b _08095B4C + .align 2, 0 +_08095B28: .4byte gUnknown_2039828 +_08095B2C: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x1 + cmp r4, r9 + blt _08095B00 +_08095B3E: + movs r0, 0x6 + add r8, r0 + adds r6, 0x1 + ldr r2, [sp] + cmp r6, r2 + blt _08095AEC +_08095B4A: + movs r0, 0x1 +_08095B4C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8095ABC + + thumb_func_start sub_8095B5C +sub_8095B5C: @ 8095B5C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r3, _08095C58 @ =gUnknown_20397B0 + ldr r0, [r3] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08095C3C + ldr r0, _08095C5C @ =gUnknown_3000FE8 + str r0, [sp, 0x18] + ldr r1, _08095C60 @ =0xffff0000 + add r2, sp, 0x18 + ldr r0, [r2, 0x4] + ands r0, r1 + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + str r0, [r2, 0x4] + mov r1, sp + ldr r0, _08095C64 @ =gUnknown_83D3728 + ldm r0!, {r4-r6} + stm r1!, {r4-r6} + ldm r0!, {r4-r6} + stm r1!, {r4-r6} + movs r7, 0 + mov r9, r2 + mov r8, r3 + movs r0, 0 + mov r10, r0 +_08095B9C: + adds r6, r7, 0x7 + lsls r1, r6, 16 + mov r2, r9 + ldrh r0, [r2, 0x4] + orrs r0, r1 + str r0, [r2, 0x4] + mov r0, r9 + bl sub_800EBCC + mov r4, r9 + ldrh r0, [r4, 0x6] + bl sub_8008804 + mov r5, r8 + ldr r1, [r5] + lsls r5, r7, 4 + ldr r2, _08095C68 @ =0x000021f8 + adds r1, r2 + adds r1, r5 + lsls r0, 16 + lsrs r0, 11 + ldr r4, _08095C6C @ =0x06010000 + adds r0, r4 + str r0, [r1] + ldr r0, _08095C70 @ =0xffffdacb + adds r4, r7, r0 + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_80089B8 + mov r2, r8 + ldr r1, [r2] + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08095C74 @ =0x000021fc + adds r1, r2 + strh r0, [r1] + ldrh r0, [r1] + lsls r0, 4 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2 + strh r0, [r1] + mov r0, sp + strh r6, [r0] + strh r4, [r0, 0x2] + movs r1, 0 + movs r2, 0 + movs r3, 0xB + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r4, r8 + ldr r2, [r4] + ldr r6, _08095C78 @ =0x000021f4 + adds r2, r6 + adds r2, r5 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08095C7C @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r4] + adds r0, r5 + movs r1, 0x88 + lsls r1, 6 + adds r0, r1 + mov r2, r10 + strb r2, [r0] + adds r7, 0x1 + cmp r7, 0x2 + ble _08095B9C +_08095C3C: + ldr r0, _08095C58 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r4, _08095C80 @ =0x00002224 + adds r0, r4 + movs r1, 0 + strh r1, [r0] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095C58: .4byte gUnknown_20397B0 +_08095C5C: .4byte gUnknown_3000FE8 +_08095C60: .4byte 0xffff0000 +_08095C64: .4byte gUnknown_83D3728 +_08095C68: .4byte 0x000021f8 +_08095C6C: .4byte 0x06010000 +_08095C70: .4byte 0xffffdacb +_08095C74: .4byte 0x000021fc +_08095C78: .4byte 0x000021f4 +_08095C7C: .4byte gUnknown_202063C +_08095C80: .4byte 0x00002224 + thumb_func_end sub_8095B5C + + thumb_func_start sub_8095C84 +sub_8095C84: @ 8095C84 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r0, _08095CB8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08095D36 + mov r0, r8 + adds r1, r7, 0 + bl sub_8096210 + cmp r0, 0 + bne _08095D36 + mov r0, r8 + cmp r0, 0 + beq _08095CBC + cmp r0, 0x1 + beq _08095CD2 + b _08095D36 + .align 2, 0 +_08095CB8: .4byte gUnknown_20397B0 +_08095CBC: + adds r0, r7, 0 + movs r1, 0x5 + bl sub_808BAA0 + cmp r0, 0 + beq _08095D36 + adds r0, r7, 0 + movs r1, 0xC + bl sub_808BAA0 + b _08095CF0 +_08095CD2: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08095D40 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _08095D36 + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 +_08095CF0: + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08095D36 + adds r0, r4, 0 + bl sub_8096674 + adds r6, r0, 0 + adds r0, r4, 0 + bl sub_8096684 + adds r5, r0, 0 + bl sub_80961D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + mov r1, r8 + adds r2, r7, 0 + bl sub_80962F0 + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_8096408 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8096624 +_08095D36: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095D40: .4byte gUnknown_2024284 + thumb_func_end sub_8095C84 + + thumb_func_start sub_8095D44 +sub_8095D44: @ 8095D44 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _08095D80 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08095D7A + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8096258 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_80964E8 +_08095D7A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08095D80: .4byte gUnknown_20397B0 + thumb_func_end sub_8095D44 + + thumb_func_start sub_8095D84 +sub_8095D84: @ 8095D84 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + adds r7, r5, 0 + ldr r0, _08095DE8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08095E14 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8096258 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + mov r0, sp + strh r1, [r0] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0x1 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_80964E8 + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0 + bl sub_80962F0 + cmp r6, 0 + bne _08095DEC + adds r0, r5, 0 + movs r1, 0xC + mov r2, sp + bl sub_808BAC0 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8090850 + b _08095E04 + .align 2, 0 +_08095DE8: .4byte gUnknown_20397B0 +_08095DEC: + movs r0, 0x64 + muls r0, r7 + ldr r1, _08095E1C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + mov r2, sp + bl sub_804037C + adds r0, r7, 0 + movs r1, 0x1 + bl sub_8090C84 +_08095E04: + ldr r0, _08095E20 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _08095E24 @ =0x00000ce2 + adds r1, r0, r2 + ldrh r1, [r1] + ldr r2, _08095E28 @ =0x00002224 + adds r0, r2 + strh r1, [r0] +_08095E14: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095E1C: .4byte gUnknown_2024284 +_08095E20: .4byte gUnknown_20397B0 +_08095E24: .4byte 0x00000ce2 +_08095E28: .4byte 0x00002224 + thumb_func_end sub_8095D84 + + thumb_func_start sub_8095E2C +sub_8095E2C: @ 8095E2C + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r5, 0 + bl sub_8096674 + mov r8, r0 + adds r0, r5, 0 + bl sub_8096684 + adds r6, r0, 0 + bl sub_80961D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + mov r1, r8 + adds r2, r6, 0 + bl sub_8096408 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80964E8 + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0 + bl sub_80962F0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8096624 + ldr r0, _08095E98 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08095E9C @ =0x00002224 + adds r0, r1 + strh r5, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08095E98: .4byte gUnknown_20397B0 +_08095E9C: .4byte 0x00002224 + thumb_func_end sub_8095E2C + + thumb_func_start sub_8095EA0 +sub_8095EA0: @ 8095EA0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r0, _08095F08 @ =gUnknown_20397B0 + mov r8, r0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08095F5E + mov r0, r9 + adds r1, r7, 0 + bl sub_8096258 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0x3 + movs r2, 0x2 + movs r3, 0 + bl sub_80964E8 + mov r1, r9 + cmp r1, 0 + bne _08095F10 + adds r0, r7, 0 + movs r1, 0xC + bl sub_808BAA0 + lsls r0, 16 + lsrs r6, r0, 16 + mov r0, r8 + ldr r2, [r0] + ldr r4, _08095F0C @ =0x00002224 + adds r2, r4 + adds r0, r7, 0 + movs r1, 0xC + bl sub_808BAC0 + mov r1, r8 + ldr r0, [r1] + adds r0, r4 + b _08095F3C + .align 2, 0 +_08095F08: .4byte gUnknown_20397B0 +_08095F0C: .4byte 0x00002224 +_08095F10: + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _08095F6C @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + mov r0, r8 + ldr r2, [r0] + ldr r5, _08095F70 @ =0x00002224 + adds r2, r5 + adds r0, r4, 0 + movs r1, 0xC + bl sub_804037C + mov r1, r8 + ldr r0, [r1] + adds r0, r5 +_08095F3C: + strh r6, [r0] + movs r0, 0x2 + movs r1, 0 + bl sub_8096258 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0x4 + mov r2, r9 + adds r3, r7, 0 + bl sub_80964E8 +_08095F5E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095F6C: .4byte gUnknown_2024284 +_08095F70: .4byte 0x00002224 + thumb_func_end sub_8095EA0 + + thumb_func_start sub_8095F74 +sub_8095F74: @ 8095F74 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + mov r8, r5 + ldr r6, _08095FCC @ =gUnknown_20397B0 + ldr r0, [r6] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08095FF4 + movs r0, 0x2 + movs r1, 0 + bl sub_8096258 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r7, 0 + adds r3, r5, 0 + bl sub_80964E8 + cmp r7, 0 + bne _08095FD4 + ldr r2, [r6] + ldr r0, _08095FD0 @ =0x00002224 + adds r2, r0 + adds r0, r5, 0 + movs r1, 0xC + bl sub_808BAC0 + adds r0, r5, 0 + movs r1, 0 + bl sub_8090850 + b _08095FF4 + .align 2, 0 +_08095FCC: .4byte gUnknown_20397B0 +_08095FD0: .4byte 0x00002224 +_08095FD4: + movs r0, 0x64 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _08096000 @ =gUnknown_2024284 + adds r0, r1 + ldr r2, [r6] + ldr r1, _08096004 @ =0x00002224 + adds r2, r1 + movs r1, 0xC + bl sub_804037C + mov r0, r8 + movs r1, 0 + bl sub_8090C84 +_08095FF4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096000: .4byte gUnknown_2024284 +_08096004: .4byte 0x00002224 + thumb_func_end sub_8095F74 + + thumb_func_start sub_8096008 +sub_8096008: @ 8096008 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + adds r7, r5, 0 + ldr r0, _08096060 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _0809607C + movs r1, 0 + mov r0, sp + strh r1, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8096258 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_80964E8 + cmp r6, 0 + bne _08096064 + adds r0, r5, 0 + movs r1, 0xC + mov r2, sp + bl sub_808BAC0 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8090850 + b _0809607C + .align 2, 0 +_08096060: .4byte gUnknown_20397B0 +_08096064: + movs r0, 0x64 + muls r0, r7 + ldr r1, _08096084 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xC + mov r2, sp + bl sub_804037C + adds r0, r7, 0 + movs r1, 0x1 + bl sub_8090C84 +_0809607C: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096084: .4byte gUnknown_2024284 + thumb_func_end sub_8096008 + + thumb_func_start sub_8096088 +sub_8096088: @ 8096088 + push {r4,lr} + ldr r0, _080960BC @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _080960B6 + movs r0, 0x2 + movs r1, 0 + bl sub_8096258 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_80964B8 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_80964E8 +_080960B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080960BC: .4byte gUnknown_20397B0 + thumb_func_end sub_8096088 + + thumb_func_start sub_80960C0 +sub_80960C0: @ 80960C0 + push {r4,lr} + ldr r0, _08096108 @ =gUnknown_20397B0 + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0x3 + bne _08096100 + movs r4, 0 +_080960CE: + ldr r0, _08096108 @ =gUnknown_20397B0 + ldr r1, [r0] + lsls r0, r4, 4 + adds r1, r0 + movs r2, 0x88 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080960FA + subs r2, 0x2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080960FA + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0x7 + movs r2, 0x2 + movs r3, 0 + bl sub_80964E8 +_080960FA: + adds r4, 0x1 + cmp r4, 0x2 + ble _080960CE +_08096100: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096108: .4byte gUnknown_20397B0 + thumb_func_end sub_80960C0 + + thumb_func_start sub_809610C +sub_809610C: @ 809610C + push {r4,r5,lr} + movs r5, 0 + ldr r0, _08096148 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _0809614C @ =0x000021f4 + adds r4, r0, r1 + adds r3, r0, 0 +_0809611A: + movs r1, 0x88 + lsls r1, 6 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08096158 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x28 + ands r0, r1 + cmp r0, 0x8 + beq _08096144 + ldr r1, [r2, 0x1C] + ldr r0, _08096150 @ =nullsub_8 + cmp r1, r0 + beq _08096158 + ldr r0, _08096154 @ =sub_80969BC + cmp r1, r0 + beq _08096158 +_08096144: + movs r0, 0x1 + b _08096164 + .align 2, 0 +_08096148: .4byte gUnknown_20397B0 +_0809614C: .4byte 0x000021f4 +_08096150: .4byte nullsub_8 +_08096154: .4byte sub_80969BC +_08096158: + adds r4, 0x10 + adds r3, 0x10 + adds r5, 0x1 + cmp r5, 0x2 + ble _0809611A + movs r0, 0 +_08096164: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809610C + + thumb_func_start sub_809616C +sub_809616C: @ 809616C + push {lr} + ldr r0, _08096190 @ =gUnknown_20397B0 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + cmp r0, 0x3 + bne _080961A0 + movs r2, 0 + ldr r0, _08096194 @ =0x000021fe + adds r1, r0 +_0809617E: + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _08096198 + ldrb r0, [r1] + cmp r0, 0x2 + bne _08096198 + movs r0, 0x1 + b _080961A2 + .align 2, 0 +_08096190: .4byte gUnknown_20397B0 +_08096194: .4byte 0x000021fe +_08096198: + adds r1, 0x10 + adds r2, 0x1 + cmp r2, 0x2 + ble _0809617E +_080961A0: + movs r0, 0 +_080961A2: + pop {r1} + bx r1 + thumb_func_end sub_809616C + + thumb_func_start sub_80961A8 +sub_80961A8: @ 80961A8 + push {lr} + ldr r0, _080961BC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080961C0 @ =0x00002224 + adds r0, r1 + ldrh r0, [r0] + bl sub_809A8BC + pop {r1} + bx r1 + .align 2, 0 +_080961BC: .4byte gUnknown_20397B0 +_080961C0: .4byte 0x00002224 + thumb_func_end sub_80961A8 + + thumb_func_start sub_80961C4 +sub_80961C4: @ 80961C4 + ldr r0, _080961D0 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080961D4 @ =0x00002224 + adds r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_080961D0: .4byte gUnknown_20397B0 +_080961D4: .4byte 0x00002224 + thumb_func_end sub_80961C4 + + thumb_func_start sub_80961D8 +sub_80961D8: @ 80961D8 + push {r4,r5,lr} + movs r2, 0 + ldr r5, _080961F8 @ =gUnknown_20397B0 + movs r3, 0x88 + lsls r3, 6 + movs r4, 0x1 +_080961E4: + ldr r0, [r5] + lsls r1, r2, 4 + adds r0, r1 + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, 0 + bne _080961FC + strb r4, [r1] + adds r0, r2, 0 + b _08096208 + .align 2, 0 +_080961F8: .4byte gUnknown_20397B0 +_080961FC: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _080961E4 + movs r0, 0x3 +_08096208: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80961D8 + + thumb_func_start sub_8096210 +sub_8096210: @ 8096210 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r3, 0 + ldr r0, _08096244 @ =gUnknown_20397B0 + ldr r2, [r0] +_08096220: + movs r5, 0x88 + lsls r5, 6 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, 0 + beq _08096248 + subs r5, 0x2 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r4 + bne _08096248 + adds r5, 0x1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r1 + bne _08096248 + movs r0, 0x1 + b _08096252 + .align 2, 0 +_08096244: .4byte gUnknown_20397B0 +_08096248: + adds r2, 0x10 + adds r3, 0x1 + cmp r3, 0x2 + ble _08096220 + movs r0, 0 +_08096252: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096210 + + thumb_func_start sub_8096258 +sub_8096258: @ 8096258 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + movs r3, 0 + ldr r0, _08096290 @ =gUnknown_20397B0 + ldr r1, [r0] +_08096268: + lsls r0, r3, 4 + adds r2, r1, r0 + movs r6, 0x88 + lsls r6, 6 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _08096294 + subs r6, 0x2 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, r5 + bne _08096294 + adds r6, 0x1 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, r4 + bne _08096294 + adds r0, r3, 0 + b _080962A0 + .align 2, 0 +_08096290: .4byte gUnknown_20397B0 +_08096294: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x2 + bls _08096268 + movs r0, 0x3 +_080962A0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8096258 + + thumb_func_start sub_80962A8 +sub_80962A8: @ 80962A8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r2, 0 + ldr r0, _080962D4 @ =gUnknown_20397B0 + ldr r3, [r0] + ldr r0, _080962D8 @ =0x000021f4 + adds r4, r3, r0 + movs r6, 0x88 + lsls r6, 6 +_080962BA: + lsls r1, r2, 4 + adds r0, r3, r1 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _080962DC + adds r0, r4, r1 + ldr r0, [r0] + cmp r0, r5 + bne _080962DC + adds r0, r2, 0 + b _080962E8 + .align 2, 0 +_080962D4: .4byte gUnknown_20397B0 +_080962D8: .4byte 0x000021f4 +_080962DC: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _080962BA + movs r0, 0x3 +_080962E8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80962A8 + + thumb_func_start sub_80962F0 +sub_80962F0: @ 80962F0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r7, r2, 24 + cmp r5, 0x2 + bhi _080963EE + cmp r1, 0 + beq _0809631C + cmp r1, 0x1 + beq _08096378 + ldr r4, _08096318 @ =gUnknown_20397B0 + lsls r3, r5, 4 + b _080963D8 + .align 2, 0 +_08096318: .4byte gUnknown_20397B0 +_0809631C: + adds r0, r7, 0 + movs r1, 0x6 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + movs r1, 0x6 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + ldr r6, _08096370 @ =gUnknown_20397B0 + ldr r2, [r6] + lsls r5, 4 + ldr r1, _08096374 @ =0x000021f4 + adds r2, r1 + adds r2, r5 + ldr r3, [r2] + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 3 + adds r1, 0x70 + strh r1, [r3, 0x20] + ldr r3, [r2] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, 0x38 + strh r1, [r3, 0x22] + ldr r2, [r2] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2, 0x5] + adds r4, r6, 0 + adds r3, r5, 0 + b _080963D8 + .align 2, 0 +_08096370: .4byte gUnknown_20397B0 +_08096374: .4byte 0x000021f4 +_08096378: + cmp r7, 0 + bne _080963A0 + ldr r4, _08096398 @ =gUnknown_20397B0 + ldr r0, [r4] + lsls r3, r5, 4 + ldr r1, _0809639C @ =0x000021f4 + adds r0, r1 + adds r0, r3 + ldr r2, [r0] + movs r1, 0x74 + strh r1, [r2, 0x20] + ldr r1, [r0] + movs r0, 0x4C + strh r0, [r1, 0x22] + b _080963C0 + .align 2, 0 +_08096398: .4byte gUnknown_20397B0 +_0809639C: .4byte 0x000021f4 +_080963A0: + ldr r4, _080963F8 @ =gUnknown_20397B0 + ldr r0, [r4] + lsls r3, r5, 4 + ldr r1, _080963FC @ =0x000021f4 + adds r0, r1 + adds r0, r3 + ldr r2, [r0] + movs r1, 0xA4 + strh r1, [r2, 0x20] + ldr r2, [r0] + subs r1, r7, 0x1 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r0, 0x1C + strh r0, [r2, 0x22] +_080963C0: + ldr r0, [r4] + ldr r1, _080963FC @ =0x000021f4 + adds r0, r1 + adds r0, r3 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x5] +_080963D8: + ldr r0, [r4] + adds r0, r3 + ldr r1, _08096400 @ =0x000021fe + adds r0, r1 + mov r1, r8 + strb r1, [r0] + ldr r0, [r4] + adds r0, r3 + ldr r1, _08096404 @ =0x000021ff + adds r0, r1 + strb r7, [r0] +_080963EE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080963F8: .4byte gUnknown_20397B0 +_080963FC: .4byte 0x000021f4 +_08096400: .4byte 0x000021fe +_08096404: .4byte 0x000021ff + thumb_func_end sub_80962F0 + + thumb_func_start sub_8096408 +sub_8096408: @ 8096408 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + mov r8, r1 + mov r9, r2 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x2 + bhi _08096490 + movs r0, 0 + str r0, [sp] + ldr r4, _080964A0 @ =gUnknown_20397B0 + ldr r1, [r4] + ldr r6, _080964A4 @ =0x000042bc + adds r1, r6 + ldr r2, _080964A8 @ =0x01000080 + mov r0, sp + bl CpuFastSet + ldr r1, [r4] + ldr r5, _080964AC @ =0x000022bc + adds r1, r5 + mov r0, r8 + bl LZ77UnCompWram + lsls r7, 4 + mov r8, r7 + adds r7, r4, 0 + movs r4, 0x2 +_08096446: + ldr r1, [r7] + adds r0, r1, r5 + adds r1, r6 + movs r2, 0x18 + bl CpuFastSet + adds r6, 0x80 + adds r5, 0x60 + subs r4, 0x1 + cmp r4, 0 + bge _08096446 + ldr r5, _080964A0 @ =gUnknown_20397B0 + ldr r1, [r5] + ldr r4, _080964A4 @ =0x000042bc + adds r0, r1, r4 + ldr r2, _080964B0 @ =0x000021f8 + adds r1, r2 + add r1, r8 + ldr r1, [r1] + movs r2, 0x80 + bl CpuFastSet + ldr r1, [r5] + adds r1, r4 + mov r0, r9 + bl LZ77UnCompWram + ldr r0, [r5] + adds r4, r0, r4 + add r0, r8 + ldr r1, _080964B4 @ =0x000021fc + adds r0, r1 + ldrh r1, [r0] + adds r0, r4, 0 + movs r2, 0x20 + bl sub_80703EC +_08096490: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080964A0: .4byte gUnknown_20397B0 +_080964A4: .4byte 0x000042bc +_080964A8: .4byte 0x01000080 +_080964AC: .4byte 0x000022bc +_080964B0: .4byte 0x000021f8 +_080964B4: .4byte 0x000021fc + thumb_func_end sub_8096408 + + thumb_func_start sub_80964B8 +sub_80964B8: @ 80964B8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + cmp r2, 0x2 + bhi _080964DA + ldr r0, _080964E0 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r2, 4 + ldr r2, _080964E4 @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + adds r1, r3, 0 + bl sub_800843C +_080964DA: + pop {r0} + bx r0 + .align 2, 0 +_080964E0: .4byte gUnknown_20397B0 +_080964E4: .4byte 0x000021f4 + thumb_func_end sub_80964B8 + + thumb_func_start sub_80964E8 +sub_80964E8: @ 80964E8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r0, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + lsls r3, 24 + lsrs r3, 24 + cmp r4, 0x2 + bls _08096500 + b _08096612 +_08096500: + cmp r0, 0x7 + bls _08096506 + b _08096612 +_08096506: + lsls r0, 2 + ldr r1, _08096510 @ =_08096514 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08096510: .4byte _08096514 + .align 2, 0 +_08096514: + .4byte _08096534 + .4byte _08096558 + .4byte _0809657C + .4byte _080965A8 + .4byte _080965D4 + .4byte _08096612 + .4byte _08096612 + .4byte _08096600 +_08096534: + ldr r0, _0809654C @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 4 + ldr r2, _08096550 @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r1, [r0] + strh r4, [r1, 0x2E] + ldr r1, [r0] + ldr r0, _08096554 @ =sub_809692C + b _08096610 + .align 2, 0 +_0809654C: .4byte gUnknown_20397B0 +_08096550: .4byte 0x000021f4 +_08096554: .4byte sub_809692C +_08096558: + ldr r0, _08096570 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 4 + ldr r2, _08096574 @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r2, [r0] + movs r1, 0 + strh r1, [r2, 0x2E] + ldr r1, [r0] + ldr r0, _08096578 @ =sub_8096958 + b _08096610 + .align 2, 0 +_08096570: .4byte gUnknown_20397B0 +_08096574: .4byte 0x000021f4 +_08096578: .4byte sub_8096958 +_0809657C: + ldr r0, _0809659C @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 4 + ldr r2, _080965A0 @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r2, [r0] + movs r1, 0 + strh r1, [r2, 0x2E] + ldr r1, [r0] + strh r5, [r1, 0x3A] + ldr r1, [r0] + strh r3, [r1, 0x3C] + ldr r1, [r0] + ldr r0, _080965A4 @ =sub_80969F4 + b _08096610 + .align 2, 0 +_0809659C: .4byte gUnknown_20397B0 +_080965A0: .4byte 0x000021f4 +_080965A4: .4byte sub_80969F4 +_080965A8: + ldr r0, _080965C8 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 4 + ldr r2, _080965CC @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r2, [r0] + movs r1, 0 + strh r1, [r2, 0x2E] + ldr r2, [r0] + ldr r1, _080965D0 @ =sub_8096A74 + str r1, [r2, 0x1C] + strh r5, [r2, 0x3A] + ldr r0, [r0] + strh r3, [r0, 0x3C] + b _08096612 + .align 2, 0 +_080965C8: .4byte gUnknown_20397B0 +_080965CC: .4byte 0x000021f4 +_080965D0: .4byte sub_8096A74 +_080965D4: + ldr r0, _080965F4 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 4 + ldr r2, _080965F8 @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r2, [r0] + movs r1, 0 + strh r1, [r2, 0x2E] + ldr r1, [r0] + strh r5, [r1, 0x3A] + ldr r1, [r0] + strh r3, [r1, 0x3C] + ldr r1, [r0] + ldr r0, _080965FC @ =sub_8096B10 + b _08096610 + .align 2, 0 +_080965F4: .4byte gUnknown_20397B0 +_080965F8: .4byte 0x000021f4 +_080965FC: .4byte sub_8096B10 +_08096600: + ldr r0, _08096618 @ =gUnknown_20397B0 + ldr r0, [r0] + lsls r1, r4, 4 + ldr r2, _0809661C @ =0x000021f4 + adds r0, r2 + adds r0, r1 + ldr r1, [r0] + ldr r0, _08096620 @ =sub_8096BAC +_08096610: + str r0, [r1, 0x1C] +_08096612: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08096618: .4byte gUnknown_20397B0 +_0809661C: .4byte 0x000021f4 +_08096620: .4byte sub_8096BAC + thumb_func_end sub_80964E8 + + thumb_func_start sub_8096624 +sub_8096624: @ 8096624 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r2, 0x2 + bhi _08096666 + ldr r1, _0809666C @ =gUnknown_20397B0 + ldr r0, [r1] + lsls r2, 4 + adds r0, r2 + movs r3, 0x88 + lsls r3, 6 + adds r0, r3 + strb r4, [r0] + ldr r0, [r1] + ldr r1, _08096670 @ =0x000021f4 + adds r0, r1 + adds r0, r2 + ldr r0, [r0] + movs r3, 0 + cmp r4, 0 + bne _08096654 + movs r3, 0x1 +_08096654: + adds r2, r0, 0 + adds r2, 0x3E + lsls r3, 2 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_08096666: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809666C: .4byte gUnknown_20397B0 +_08096670: .4byte 0x000021f4 + thumb_func_end sub_8096624 + + thumb_func_start sub_8096674 +sub_8096674: @ 8096674 + push {lr} + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + bl sub_8098974 + pop {r1} + bx r1 + thumb_func_end sub_8096674 + + thumb_func_start sub_8096684 +sub_8096684: @ 8096684 + push {lr} + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8098974 + pop {r1} + bx r1 + thumb_func_end sub_8096684 + + thumb_func_start sub_8096694 +sub_8096694: @ 8096694 + push {r4,lr} + sub sp, 0x14 + bl sub_809616C + lsls r0, 24 + cmp r0, 0 + beq _080966B4 + ldr r0, _080966AC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080966B0 @ =0x00002224 + b _080966BA + .align 2, 0 +_080966AC: .4byte gUnknown_20397B0 +_080966B0: .4byte 0x00002224 +_080966B4: + ldr r0, _080966EC @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080966F0 @ =0x00000ce2 +_080966BA: + adds r0, r1 + ldrh r0, [r0] + bl sub_809A96C + adds r4, r0, 0 + movs r0, 0x2 + movs r1, 0x11 + bl sub_800445C + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x2 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_812E62C + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080966EC: .4byte gUnknown_20397B0 +_080966F0: .4byte 0x00000ce2 + thumb_func_end sub_8096694 + + thumb_func_start sub_80966F4 +sub_80966F4: @ 80966F4 + push {lr} + ldr r0, _0809671C @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08096720 @ =0x00002226 + adds r0, r1 + movs r1, 0x19 + strh r1, [r0] + ldr r1, _08096724 @ =gUnknown_83D35DC + movs r3, 0xD2 + lsls r3, 1 + movs r0, 0 + movs r2, 0x80 + bl sub_80017D0 + movs r0, 0 + bl sub_8096898 + pop {r0} + bx r0 + .align 2, 0 +_0809671C: .4byte gUnknown_20397B0 +_08096720: .4byte 0x00002226 +_08096724: .4byte gUnknown_83D35DC + thumb_func_end sub_80966F4 + + thumb_func_start sub_8096728 +sub_8096728: @ 8096728 + push {r4,r5,lr} + sub sp, 0x10 + ldr r0, _08096740 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _08096744 @ =0x00002226 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, 0 + bne _08096748 + movs r0, 0 + b _080967AE + .align 2, 0 +_08096740: .4byte gUnknown_20397B0 +_08096744: .4byte 0x00002226 +_08096748: + subs r0, 0x1 + strh r0, [r1] + ldrh r1, [r1] + movs r0, 0x19 + subs r5, r0, r1 + movs r4, 0 + cmp r4, r5 + bge _08096798 +_08096758: + movs r0, 0 + movs r1, 0xA + bl sub_8001AA8 + adds r1, r0, 0 + ldr r0, _080967B8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _080967BC @ =0x00002226 + adds r0, r2 + adds r1, 0x14 + ldrh r0, [r0] + adds r1, r0 + adds r1, r4 + lsls r1, 16 + lsrs r1, 16 + lsls r2, r4, 24 + lsrs r2, 24 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x8 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0x19 + str r0, [sp, 0xC] + movs r0, 0 + movs r3, 0xC + bl sub_8002590 + adds r4, 0x1 + cmp r4, r5 + blt _08096758 +_08096798: + adds r0, r5, 0 + bl sub_8096898 + ldr r0, _080967B8 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _080967BC @ =0x00002226 + adds r0, r1 + ldrh r1, [r0] + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_080967AE: + add sp, 0x10 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080967B8: .4byte gUnknown_20397B0 +_080967BC: .4byte 0x00002226 + thumb_func_end sub_8096728 + + thumb_func_start sub_80967C0 +sub_80967C0: @ 80967C0 + push {r4,r5,lr} + sub sp, 0x10 + ldr r5, _080967D8 @ =gUnknown_20397B0 + ldr r0, [r5] + ldr r4, _080967DC @ =0x00002226 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0x19 + bne _080967E0 + movs r0, 0 + b _08096886 + .align 2, 0 +_080967D8: .4byte gUnknown_20397B0 +_080967DC: .4byte 0x00002226 +_080967E0: + cmp r0, 0 + bne _080967FC + movs r0, 0x1 + str r0, [sp] + movs r0, 0xA + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0x19 + movs r3, 0xB + bl sub_8002554 +_080967FC: + ldr r1, [r5] + adds r1, r4 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldrh r1, [r1] + movs r0, 0x19 + subs r5, r0, r1 + movs r4, 0 + cmp r4, r5 + bge _08096852 +_08096812: + movs r0, 0 + movs r1, 0xA + bl sub_8001AA8 + adds r1, r0, 0 + ldr r0, _08096890 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r2, _08096894 @ =0x00002226 + adds r0, r2 + adds r1, 0x14 + ldrh r0, [r0] + adds r1, r0 + adds r1, r4 + lsls r1, 16 + lsrs r1, 16 + lsls r2, r4, 24 + lsrs r2, 24 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x8 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0x19 + str r0, [sp, 0xC] + movs r0, 0 + movs r3, 0xC + bl sub_8002590 + adds r4, 0x1 + cmp r4, r5 + blt _08096812 +_08096852: + adds r0, r5, 0 + bl sub_8096898 + lsls r2, r5, 24 + lsrs r2, 24 + movs r0, 0x1 + str r0, [sp] + movs r0, 0xA + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r3, 0xB + bl sub_8002554 + ldr r0, _08096890 @ =gUnknown_20397B0 + ldr r0, [r0] + ldr r1, _08096894 @ =0x00002226 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x19 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_08096886: + add sp, 0x10 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08096890: .4byte gUnknown_20397B0 +_08096894: .4byte 0x00002226 + thumb_func_end sub_80967C0 + + thumb_func_start sub_8096898 +sub_8096898: @ 8096898 + push {r4-r7,lr} + sub sp, 0xC + adds r7, r0, 0 + cmp r7, 0 + beq _080968D0 + movs r1, 0xD2 + lsls r1, 1 + lsls r4, r7, 24 + lsrs r4, 24 + str r4, [sp] + movs r6, 0x1 + str r6, [sp, 0x4] + movs r5, 0xF + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0 + movs r3, 0xB + bl sub_8002554 + ldr r1, _08096920 @ =0x000009a4 + str r4, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r2, 0 + movs r3, 0x14 + bl sub_8002554 +_080968D0: + ldr r1, _08096924 @ =0x000001a5 + lsls r5, r7, 24 + lsrs r5, 24 + movs r4, 0x1 + str r4, [sp] + movs r0, 0x8 + str r0, [sp, 0x4] + movs r6, 0xF + str r6, [sp, 0x8] + movs r0, 0 + adds r2, r5, 0 + movs r3, 0xC + bl sub_8002554 + movs r1, 0xD3 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + adds r2, r5, 0 + movs r3, 0xB + bl sub_8002554 + ldr r1, _08096928 @ =0x000001a7 + str r4, [sp] + str r4, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + adds r2, r5, 0 + movs r3, 0x14 + bl sub_8002554 + movs r0, 0 + bl sub_80F67A4 + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096920: .4byte 0x000009a4 +_08096924: .4byte 0x000001a5 +_08096928: .4byte 0x000001a7 + thumb_func_end sub_8096898 + + thumb_func_start sub_809692C +sub_809692C: @ 809692C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0809694C + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8096624 + ldr r0, _08096954 @ =nullsub_8 + str r0, [r4, 0x1C] +_0809694C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096954: .4byte nullsub_8 + thumb_func_end sub_809692C + + thumb_func_start sub_8096958 +sub_8096958: @ 8096958 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _0809696A + cmp r1, 0x1 + beq _08096986 + b _080969B4 +_0809696A: + ldrh r0, [r3, 0x20] + lsls r0, 4 + strh r0, [r3, 0x30] + ldrh r0, [r3, 0x22] + lsls r0, 4 + strh r0, [r3, 0x32] + movs r0, 0xA + strh r0, [r3, 0x34] + movs r0, 0x15 + strh r0, [r3, 0x36] + strh r1, [r3, 0x38] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] +_08096986: + ldrh r1, [r3, 0x30] + ldrh r0, [r3, 0x34] + subs r1, r0 + strh r1, [r3, 0x30] + ldrh r0, [r3, 0x32] + ldrh r2, [r3, 0x36] + subs r0, r2 + strh r0, [r3, 0x32] + lsls r1, 16 + asrs r1, 20 + strh r1, [r3, 0x20] + lsls r0, 16 + asrs r0, 20 + strh r0, [r3, 0x22] + ldrh r0, [r3, 0x38] + adds r0, 0x1 + strh r0, [r3, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + ble _080969B4 + ldr r0, _080969B8 @ =sub_80969BC + str r0, [r3, 0x1C] +_080969B4: + pop {r0} + bx r0 + .align 2, 0 +_080969B8: .4byte sub_80969BC + thumb_func_end sub_8096958 + + thumb_func_start sub_80969BC +sub_80969BC: @ 80969BC + ldr r1, _080969F0 @ =gUnknown_20397B0 + ldr r3, [r1] + movs r1, 0xCB + lsls r1, 4 + adds r3, r1 + ldr r1, [r3] + ldrh r1, [r1, 0x20] + adds r1, 0x4 + strh r1, [r0, 0x20] + ldr r2, [r3] + ldrh r1, [r2, 0x26] + ldrh r2, [r2, 0x22] + adds r1, r2 + adds r1, 0x8 + strh r1, [r0, 0x22] + ldr r1, [r3] + ldrb r1, [r1, 0x5] + movs r2, 0xC + ands r2, r1 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + bx lr + .align 2, 0 +_080969F0: .4byte gUnknown_20397B0 + thumb_func_end sub_80969BC + + thumb_func_start sub_80969F4 +sub_80969F4: @ 80969F4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _08096A06 + cmp r1, 0x1 + beq _08096A22 + b _08096A6A +_08096A06: + ldrh r0, [r4, 0x20] + lsls r0, 4 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + lsls r0, 4 + strh r0, [r4, 0x32] + movs r0, 0xA + strh r0, [r4, 0x34] + movs r0, 0x15 + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_08096A22: + ldrh r0, [r4, 0x34] + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + ldrh r2, [r4, 0x32] + adds r1, r2 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x22] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + ble _08096A6A + adds r0, r4, 0 + bl sub_80962A8 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x3C] + lsls r2, 24 + lsrs r2, 24 + bl sub_80962F0 + ldr r0, _08096A70 @ =nullsub_8 + str r0, [r4, 0x1C] +_08096A6A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096A70: .4byte nullsub_8 + thumb_func_end sub_80969F4 + + thumb_func_start sub_8096A74 +sub_8096A74: @ 8096A74 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _08096A86 + cmp r1, 0x1 + beq _08096AA2 + b _08096B00 +_08096A86: + ldrh r0, [r4, 0x20] + lsls r0, 4 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + lsls r0, 4 + strh r0, [r4, 0x32] + movs r0, 0xA + strh r0, [r4, 0x34] + movs r0, 0x15 + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_08096AA2: + ldrh r1, [r4, 0x30] + ldrh r0, [r4, 0x34] + subs r1, r0 + strh r1, [r4, 0x30] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + subs r0, r2 + strh r0, [r4, 0x32] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x20] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x22] + ldr r1, _08096B08 @ =gUnknown_825E074 + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 4 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + ble _08096B00 + adds r0, r4, 0 + bl sub_80962A8 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x3C] + lsls r2, 24 + lsrs r2, 24 + bl sub_80962F0 + movs r0, 0 + strh r0, [r4, 0x24] + ldr r0, _08096B0C @ =sub_80969BC + str r0, [r4, 0x1C] +_08096B00: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096B08: .4byte gUnknown_825E074 +_08096B0C: .4byte sub_80969BC + thumb_func_end sub_8096A74 + + thumb_func_start sub_8096B10 +sub_8096B10: @ 8096B10 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _08096B22 + cmp r1, 0x1 + beq _08096B3E + b _08096B9E +_08096B22: + ldrh r0, [r4, 0x20] + lsls r0, 4 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + lsls r0, 4 + strh r0, [r4, 0x32] + movs r0, 0xA + strh r0, [r4, 0x34] + movs r0, 0x15 + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_08096B3E: + ldrh r0, [r4, 0x34] + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + ldrh r2, [r4, 0x32] + adds r1, r2 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r4, 0x22] + ldr r1, _08096BA4 @ =gUnknown_825E074 + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 4 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + negs r0, r0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + ble _08096B9E + adds r0, r4, 0 + bl sub_80962A8 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x3C] + lsls r2, 24 + lsrs r2, 24 + bl sub_80962F0 + ldr r0, _08096BA8 @ =nullsub_8 + str r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r4, 0x24] +_08096B9E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096BA4: .4byte gUnknown_825E074 +_08096BA8: .4byte nullsub_8 + thumb_func_end sub_8096B10 + + thumb_func_start sub_8096BAC +sub_8096BAC: @ 8096BAC + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x22] + subs r0, 0x8 + strh r0, [r2, 0x22] + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _08096BDC + ldr r0, _08096BE0 @ =nullsub_8 + str r0, [r2, 0x1C] + adds r0, r2, 0 + bl sub_80962A8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8096624 +_08096BDC: + pop {r0} + bx r0 + .align 2, 0 +_08096BE0: .4byte nullsub_8 + thumb_func_end sub_8096BAC + + thumb_func_start sub_8096BE4 +sub_8096BE4: @ 8096BE4 + ldr r3, _08096BF4 @ =gUnknown_203982C + str r0, [r3] + str r1, [r0] + movs r1, 0 + strb r2, [r0, 0x5] + strb r1, [r0, 0x4] + bx lr + .align 2, 0 +_08096BF4: .4byte gUnknown_203982C + thumb_func_end sub_8096BE4 + + thumb_func_start sub_8096BF8 +sub_8096BF8: @ 8096BF8 + push {r4,r5,lr} + ldr r2, _08096C3C @ =gUnknown_203982C + ldr r1, [r2] + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _08096C36 + movs r4, 0 + ldrb r1, [r1, 0x4] + cmp r4, r1 + bcs _08096C2E + adds r5, r2, 0 +_08096C0E: + ldr r0, [r5] + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 2 + ldr r0, [r0] + adds r0, r1 + ldr r1, [r0, 0x10] + bl _call_via_r1 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, [r5] + ldrb r0, [r0, 0x4] + cmp r4, r0 + bcc _08096C0E +_08096C2E: + ldr r0, _08096C3C @ =gUnknown_203982C + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x4] +_08096C36: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08096C3C: .4byte gUnknown_203982C + thumb_func_end sub_8096BF8 + + thumb_func_start sub_8096C40 +sub_8096C40: @ 8096C40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r0 + mov r10, r3 + ldr r0, [sp, 0x24] + ldr r3, [sp, 0x28] + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + ldr r6, [sp, 0x34] + lsls r1, 16 + lsrs r1, 16 + mov r12, r1 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp] + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + ldr r0, _08096CC0 @ =gUnknown_203982C + ldr r2, [r0] + ldrb r0, [r2, 0x4] + adds r1, r0, 0 + ldrb r7, [r2, 0x5] + cmp r1, r7 + bcs _08096CC8 + adds r0, 0x1 + strb r0, [r2, 0x4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + ldr r1, [r2] + adds r1, r0 + lsls r0, r4, 1 + strh r0, [r1, 0x8] + ldr r2, [sp] + lsls r0, r2, 5 + add r0, r12 + lsls r0, 1 + add r0, r9 + str r0, [r1, 0x4] + adds r0, r3, 0 + muls r0, r6 + add r0, r8 + lsls r0, 1 + add r0, r10 + str r0, [r1] + strh r5, [r1, 0xC] + strh r6, [r1, 0xA] + ldr r0, _08096CC4 @ =sub_8096CDC + str r0, [r1, 0x10] + movs r0, 0x1 + b _08096CCA + .align 2, 0 +_08096CC0: .4byte gUnknown_203982C +_08096CC4: .4byte sub_8096CDC +_08096CC8: + movs r0, 0 +_08096CCA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8096C40 + + thumb_func_start sub_8096CDC +sub_8096CDC: @ 8096CDC + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0 + b _08096D06 +_08096CE4: + ldr r0, [r4] + ldr r1, [r4, 0x4] + ldrh r2, [r4, 0x8] + lsrs r2, 1 + bl CpuSet + ldr r0, [r4, 0x4] + adds r0, 0x40 + str r0, [r4, 0x4] + ldrh r1, [r4, 0xA] + lsls r1, 1 + ldr r0, [r4] + adds r0, r1 + str r0, [r4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08096D06: + ldrh r0, [r4, 0xC] + cmp r5, r0 + bcc _08096CE4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8096CDC + + thumb_func_start sub_8096D14 +sub_8096D14: @ 8096D14 + push {r4-r7,lr} + mov r12, r0 + ldr r0, [sp, 0x14] + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08096D60 @ =gUnknown_203982C + ldr r2, [r0] + ldrb r0, [r2, 0x4] + adds r1, r0, 0 + ldrb r7, [r2, 0x5] + cmp r1, r7 + bcs _08096D68 + adds r0, 0x1 + strb r0, [r2, 0x4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + ldr r1, [r2] + adds r1, r0 + lsls r0, r3, 1 + strh r0, [r1, 0x8] + lsls r0, r4, 5 + adds r0, r6 + lsls r0, 1 + add r0, r12 + str r0, [r1, 0x4] + strh r5, [r1, 0xC] + ldr r0, _08096D64 @ =sub_8096D70 + str r0, [r1, 0x10] + movs r0, 0x1 + b _08096D6A + .align 2, 0 +_08096D60: .4byte gUnknown_203982C +_08096D64: .4byte sub_8096D70 +_08096D68: + movs r0, 0 +_08096D6A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8096D14 + + thumb_func_start sub_8096D70 +sub_8096D70: @ 8096D70 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + movs r0, 0 + ldrh r1, [r6, 0xC] + cmp r0, r1 + bcs _08096DFE + movs r7, 0x80 + lsls r7, 5 + mov r5, sp + ldr r2, _08096DBC @ =0x040000d4 + mov r8, r2 + movs r1, 0x81 + lsls r1, 24 + mov r10, r1 +_08096D96: + ldr r2, [r6, 0x4] + ldrh r3, [r6, 0x8] + mov r12, r2 + adds r0, 0x1 + mov r9, r0 + cmp r3, r7 + bhi _08096DC0 + movs r0, 0 + strh r0, [r5] + mov r2, sp + mov r0, r8 + str r2, [r0] + mov r1, r12 + str r1, [r0, 0x4] + lsrs r0, r3, 1 + mov r2, r10 + orrs r0, r2 + mov r1, r8 + b _08096DE8 + .align 2, 0 +_08096DBC: .4byte 0x040000d4 +_08096DC0: + movs r4, 0 + strh r4, [r5] + ldr r1, _08096E10 @ =0x040000d4 + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _08096E14 @ =0x81000800 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r7 + subs r3, r7 + cmp r3, r7 + bhi _08096DC0 + strh r4, [r5] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 1 + mov r2, r10 + orrs r0, r2 +_08096DE8: + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + mov r0, r12 + adds r0, 0x40 + str r0, [r6, 0x4] + mov r1, r9 + lsls r0, r1, 16 + lsrs r0, 16 + ldrh r2, [r6, 0xC] + cmp r0, r2 + bcc _08096D96 +_08096DFE: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096E10: .4byte 0x040000d4 +_08096E14: .4byte 0x81000800 + thumb_func_end sub_8096D70 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s new file mode 100644 index 000000000..42fe39446 --- /dev/null +++ b/asm/pokemon_summary_screen.s @@ -0,0 +1,14104 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81344F8 +sub_81344F8: @ 81344F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + adds r7, r3, 0 + ldr r0, [sp, 0x20] + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r5, _0813453C @ =gUnknown_203B140 + ldr r0, _08134540 @ =0x00003308 + bl sub_8002BB0 + str r0, [r5] + ldr r4, _08134544 @ =gUnknown_203B144 + movs r0, 0x28 + bl sub_8002BB0 + str r0, [r4] + ldr r5, [r5] + cmp r5, 0 + bne _08134548 + adds r0, r7, 0 + bl sub_8000544 + b _08134702 + .align 2, 0 +_0813453C: .4byte gUnknown_203B140 +_08134540: .4byte 0x00003308 +_08134544: .4byte gUnknown_203B144 +_08134548: + ldr r0, _08134574 @ =gUnknown_203B16C + strb r6, [r0] + ldr r0, _08134578 @ =gUnknown_203B16D + movs r1, 0 + strb r1, [r0] + ldr r0, _0813457C @ =gUnknown_203B16E + strb r1, [r0] + ldr r1, _08134580 @ =0x000032f8 + adds r0, r5, r1 + str r7, [r0] + ldr r2, _08134584 @ =0x000032f4 + adds r0, r5, r2 + mov r3, r8 + str r3, [r0] + ldr r0, _08134588 @ =gUnknown_202402C + cmp r8, r0 + bne _08134590 + ldr r0, _0813458C @ =0x00003024 + adds r1, r5, r0 + movs r0, 0x1 + b _08134596 + .align 2, 0 +_08134574: .4byte gUnknown_203B16C +_08134578: .4byte gUnknown_203B16D +_0813457C: .4byte gUnknown_203B16E +_08134580: .4byte 0x000032f8 +_08134584: .4byte 0x000032f4 +_08134588: .4byte gUnknown_202402C +_0813458C: .4byte 0x00003024 +_08134590: + ldr r2, _081345C0 @ =0x00003024 + adds r1, r5, r2 + movs r0, 0 +_08134596: + str r0, [r1] + ldr r4, _081345C4 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r3, _081345C8 @ =0x00003210 + adds r0, r3 + movs r5, 0 + mov r1, r9 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _081345CC @ =0x00003208 + adds r0, r1 + mov r2, r10 + strb r2, [r0] + ldr r0, [r4] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3 + bgt _081345D0 + cmp r0, 0x2 + bge _08134634 + b _081345D4 + .align 2, 0 +_081345C0: .4byte 0x00003024 +_081345C4: .4byte gUnknown_203B140 +_081345C8: .4byte 0x00003210 +_081345CC: .4byte 0x00003208 +_081345D0: + cmp r0, 0x5 + beq _08134604 +_081345D4: + movs r0, 0x6 + bl sub_812B1F0 + ldr r2, _081345F8 @ =gUnknown_203B140 + ldr r0, [r2] + ldr r3, _081345FC @ =0x00003214 + adds r0, r3 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r3, 0x8 + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _08134600 @ =0x00003234 + adds r0, r2 + b _08134654 + .align 2, 0 +_081345F8: .4byte gUnknown_203B140 +_081345FC: .4byte 0x00003214 +_08134600: .4byte 0x00003234 +_08134604: + movs r0, 0x6 + bl sub_812B1F0 + ldr r0, [r4] + ldr r3, _08134628 @ =0x00003214 + adds r0, r3 + strb r5, [r0] + ldr r0, [r4] + ldr r1, _0813462C @ =0x0000321c + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _08134630 @ =0x00003234 + adds r0, r2 + strb r5, [r0] + b _08134656 + .align 2, 0 +_08134628: .4byte 0x00003214 +_0813462C: .4byte 0x0000321c +_08134630: .4byte 0x00003234 +_08134634: + movs r0, 0x8 + bl sub_812B1F0 + ldr r0, [r4] + ldr r3, _08134710 @ =0x00003214 + adds r0, r3 + movs r1, 0x3 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _08134714 @ =0x0000321c + adds r0, r1 + strb r5, [r0] + ldr r0, [r4] + ldr r2, _08134718 @ =0x00003234 + adds r0, r2 + movs r1, 0x1 +_08134654: + strb r1, [r0] +_08134656: + ldr r5, _0813471C @ =gUnknown_203B140 + ldr r0, [r5] + ldr r3, _08134720 @ =0x00003270 + adds r0, r3 + movs r2, 0 + strb r2, [r0] + ldr r0, [r5] + ldr r1, _08134724 @ =0x00003274 + adds r0, r1 + strb r2, [r0] + ldr r0, [r5] + adds r3, 0x8 + adds r0, r3 + strb r2, [r0] + ldr r0, [r5] + adds r1, 0x8 + adds r0, r1 + strb r2, [r0] + ldr r0, [r5] + subs r3, 0x40 + adds r0, r3 + strb r2, [r0] + ldr r0, [r5] + subs r1, 0x40 + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + ldr r0, [r5] + adds r3, 0x8 + adds r0, r3 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r5] + adds r3, 0x4 + adds r0, r3 + strb r2, [r0] + ldr r0, [r5] + subs r3, 0x1C + adds r0, r3 + strb r2, [r0] + ldr r0, [r5] + ldr r2, _08134728 @ =0x0000322c + adds r0, r2 + strb r1, [r0] + ldr r0, [r5] + ldr r4, _0813472C @ =0x00003290 + adds r0, r4 + bl sub_8138B8C + ldr r0, [r5] + adds r0, r4 + movs r1, 0x2D + bl sub_803FBE8 + ldr r1, [r5] + movs r3, 0xC8 + lsls r3, 6 + adds r1, r3 + strb r0, [r1] + ldr r0, [r5] + adds r0, r4 + movs r1, 0x4 + bl sub_803FBE8 + ldr r1, [r5] + ldr r2, _08134730 @ =0x00003204 + adds r1, r2 + strb r0, [r1] + ldr r0, [r5] + adds r2, r0, r2 + ldrb r1, [r2] + cmp r1, 0x1 + bne _081346F0 + movs r2, 0xC8 + lsls r2, 6 + adds r0, r2 + strb r1, [r0] +_081346F0: + ldr r0, [r5] + movs r3, 0xCC + lsls r3, 6 + adds r0, r3 + movs r1, 0xFF + strb r1, [r0] + ldr r0, _08134734 @ =sub_8135C34 + bl sub_8000544 +_08134702: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08134710: .4byte 0x00003214 +_08134714: .4byte 0x0000321c +_08134718: .4byte 0x00003234 +_0813471C: .4byte gUnknown_203B140 +_08134720: .4byte 0x00003270 +_08134724: .4byte 0x00003274 +_08134728: .4byte 0x0000322c +_0813472C: .4byte 0x00003290 +_08134730: .4byte 0x00003204 +_08134734: .4byte sub_8135C34 + thumb_func_end sub_81344F8 + + thumb_func_start sub_8134738 +sub_8134738: @ 8134738 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, [sp, 0x10] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r5, 16 + lsrs r5, 16 + movs r4, 0x2 + str r4, [sp] + bl sub_81344F8 + ldr r0, _08134764 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08134768 @ =0x00003260 + adds r0, r1 + strh r5, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08134764: .4byte gUnknown_203B140 +_08134768: .4byte 0x00003260 + thumb_func_end sub_8134738 + + thumb_func_start sub_813476C +sub_813476C: @ 813476C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08134790 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r3, _08134794 @ =0x0000301c + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0813479C + ldr r3, _08134798 @ =0x00003224 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + beq _0813479C + movs r0, 0x1 + b _0813479E + .align 2, 0 +_08134790: .4byte gUnknown_203B140 +_08134794: .4byte 0x0000301c +_08134798: .4byte 0x00003224 +_0813479C: + movs r0, 0 +_0813479E: + pop {r1} + bx r1 + thumb_func_end sub_813476C + + thumb_func_start sub_81347A4 +sub_81347A4: @ 81347A4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081347D4 @ =gUnknown_203B140 + ldr r1, [r0] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08134830 + movs r0, 0xCC + lsls r0, 6 + adds r2, r1, r0 + ldrb r1, [r2] + adds r0, r1, 0 + cmp r0, 0xFF + beq _081347D8 + cmp r0, r4 + bne _081347D8 + movs r0, 0xFF + strb r0, [r2] +_081347D0: + movs r0, 0x1 + b _08134832 + .align 2, 0 +_081347D4: .4byte gUnknown_203B140 +_081347D8: + adds r0, r4, 0 + bl sub_813476C + lsls r0, 24 + cmp r0, 0 + bne _08134830 + cmp r4, 0 + beq _08134810 + cmp r4, 0x1 + bne _08134830 + ldr r0, _08134808 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _081347D0 + ldr r0, _0813480C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _08134830 + movs r0, 0x80 + lsls r0, 1 + b _0813482A + .align 2, 0 +_08134808: .4byte gUnknown_30030F0 +_0813480C: .4byte gUnknown_300500C +_08134810: + ldr r0, _08134838 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _081347D0 + ldr r0, _0813483C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _08134830 + movs r0, 0x80 + lsls r0, 2 +_0813482A: + ands r0, r1 + cmp r0, 0 + bne _081347D0 +_08134830: + movs r0, 0 +_08134832: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08134838: .4byte gUnknown_30030F0 +_0813483C: .4byte gUnknown_300500C + thumb_func_end sub_81347A4 + + thumb_func_start sub_8134840 +sub_8134840: @ 8134840 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _0813486C @ =gUnknown_203B140 + ldr r0, [r1] + ldr r2, _08134870 @ =0x00003270 + adds r0, r2 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x5 + bls _08134860 + b _08134B88 +_08134860: + lsls r0, 2 + ldr r1, _08134874 @ =_08134878 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813486C: .4byte gUnknown_203B140 +_08134870: .4byte 0x00003270 +_08134874: .4byte _08134878 + .align 2, 0 +_08134878: + .4byte _08134890 + .4byte _081348AC + .4byte _081348E4 + .4byte _08134ADC + .4byte _08134B38 + .4byte _08134B60 +_08134890: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _081348A8 @ =gUnknown_203B140 + ldr r0, [r0] + b _081348D6 + .align 2, 0 +_081348A8: .4byte gUnknown_203B140 +_081348AC: + ldr r0, _081348C8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081348D4 + bl sub_813B784 + ldr r0, _081348CC @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _081348D0 @ =0x00003270 + adds r0, r2 + b _08134AF6 + .align 2, 0 +_081348C8: .4byte gUnknown_2037AB8 +_081348CC: .4byte gUnknown_203B140 +_081348D0: .4byte 0x00003270 +_081348D4: + ldr r0, [r4] +_081348D6: + ldr r1, _081348E0 @ =0x00003270 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _08134B9A + .align 2, 0 +_081348E0: .4byte 0x00003270 +_081348E4: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081348F2 + b _08134B9A +_081348F2: + bl sub_800B270 + cmp r0, 0x1 + bne _081348FC + b _08134B9A +_081348FC: + ldr r0, _08134940 @ =sub_813B3F0 + bl sub_8077650 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + beq _0813490C + b _08134B9A +_0813490C: + ldr r5, _08134944 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r6, _08134948 @ =0x00003214 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x3 + beq _081349F8 + movs r0, 0x1 + bl sub_81347A4 + adds r4, r0, 0 + cmp r4, 0x1 + bne _0813498C + ldr r0, _0813494C @ =sub_8134BAC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08134950 + ldr r0, [r5] + movs r2, 0xCC + lsls r2, 6 + adds r0, r2 + strb r4, [r0] + b _08134B9A + .align 2, 0 +_08134940: .4byte sub_813B3F0 +_08134944: .4byte gUnknown_203B140 +_08134948: .4byte 0x00003214 +_0813494C: .4byte sub_8134BAC +_08134950: + ldr r0, [r5] + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x1 + bls _0813495C + b _08134B9A +_0813495C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_80019D0 + ldr r0, [r5] + ldr r1, _08134988 @ =0x00003224 + adds r0, r1 + strb r4, [r0] + ldr r0, [r5] + adds r0, r6 + ldrb r0, [r0] + bl sub_8138414 + ldr r1, [r5] + adds r1, r6 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r5] + b _08134AA8 + .align 2, 0 +_08134988: .4byte 0x00003224 +_0813498C: + movs r0, 0 + bl sub_81347A4 + cmp r0, 0x1 + bne _081349F8 + ldr r0, _081349B0 @ =sub_8134BAC + bl sub_8077650 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _081349B4 + ldr r0, [r5] + movs r1, 0xCC + lsls r1, 6 + adds r0, r1 + strb r7, [r0] + b _08134B9A + .align 2, 0 +_081349B0: .4byte sub_8134BAC +_081349B4: + ldr r0, [r5] + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0 + bne _081349C0 + b _08134B9A +_081349C0: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_80019D0 + ldr r0, [r5] + ldr r2, _081349F0 @ =0x00003224 + adds r0, r2 + strb r4, [r0] + ldr r0, [r5] + adds r0, r6 + ldrb r0, [r0] + bl sub_8138414 + ldr r1, [r5] + adds r1, r6 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + ldr r0, [r5] + ldr r1, _081349F4 @ =0x00003270 + adds r0, r1 + b _08134AAC + .align 2, 0 +_081349F0: .4byte 0x00003224 +_081349F4: .4byte 0x00003270 +_081349F8: + ldr r0, _08134A2C @ =sub_8134BAC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08134A12 + ldr r0, _08134A30 @ =sub_813B3F0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08134A12 + b _08134B9A +_08134A12: + ldr r0, _08134A34 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08134A38 + movs r1, 0x1 + negs r1, r1 + mov r0, r8 + bl sub_813B120 + b _08134B9A + .align 2, 0 +_08134A2C: .4byte sub_8134BAC +_08134A30: .4byte sub_813B3F0 +_08134A34: .4byte gUnknown_30030F0 +_08134A38: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08134A4A + mov r0, r8 + movs r1, 0x1 + bl sub_813B120 + b _08134B9A +_08134A4A: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08134ABC + ldr r4, _08134A70 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r5, _08134A74 @ =0x00003214 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _08134A7C + movs r0, 0x5 + bl sub_80722CC + ldr r0, [r4] + ldr r2, _08134A78 @ =0x00003270 + adds r0, r2 + b _08134ACC + .align 2, 0 +_08134A70: .4byte gUnknown_203B140 +_08134A74: .4byte 0x00003214 +_08134A78: .4byte 0x00003270 +_08134A7C: + cmp r0, 0x2 + beq _08134A82 + b _08134B9A +_08134A82: + movs r0, 0x5 + bl sub_80722CC + ldr r0, [r4] + ldr r1, _08134AB4 @ =0x00003224 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8138414 + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r4] +_08134AA8: + ldr r2, _08134AB8 @ =0x00003270 + adds r0, r2 +_08134AAC: + movs r1, 0x3 + strb r1, [r0] + b _08134B9A + .align 2, 0 +_08134AB4: .4byte 0x00003224 +_08134AB8: .4byte 0x00003270 +_08134ABC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08134B9A + ldr r0, _08134AD4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08134AD8 @ =0x00003270 + adds r0, r1 +_08134ACC: + movs r1, 0x4 + strb r1, [r0] + b _08134B9A + .align 2, 0 +_08134AD4: .4byte gUnknown_203B140 +_08134AD8: .4byte 0x00003270 +_08134ADC: + ldr r3, [r4] + ldr r2, _08134AFC @ =0x00003214 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08134B08 + ldr r0, _08134B00 @ =sub_8134BAC + movs r1, 0 + bl sub_807741C + ldr r0, [r4] + ldr r1, _08134B04 @ =0x00003270 + adds r0, r1 +_08134AF6: + movs r1, 0x2 + strb r1, [r0] + b _08134B9A + .align 2, 0 +_08134AFC: .4byte 0x00003214 +_08134B00: .4byte sub_8134BAC +_08134B04: .4byte 0x00003270 +_08134B08: + ldr r2, _08134B28 @ =gUnknown_3005090 + ldr r1, _08134B2C @ =0x00003018 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _08134B30 @ =sub_8134E84 + str r1, [r0] + ldr r2, _08134B34 @ =0x00003270 + adds r1, r3, r2 + movs r0, 0x2 + strb r0, [r1] + b _08134B9A + .align 2, 0 +_08134B28: .4byte gUnknown_3005090 +_08134B2C: .4byte 0x00003018 +_08134B30: .4byte sub_8134E84 +_08134B34: .4byte 0x00003270 +_08134B38: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08134B58 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08134B5C @ =0x00003270 + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] + b _08134B9A + .align 2, 0 +_08134B58: .4byte gUnknown_203B140 +_08134B5C: .4byte 0x00003270 +_08134B60: + bl sub_8058244 + cmp r0, 0x1 + beq _08134B9A + bl sub_800B270 + cmp r0, 0x1 + beq _08134B9A + ldr r0, _08134B80 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _08134B84 @ =0x00003270 + adds r0, r2 + movs r1, 0x6 + strb r1, [r0] + b _08134B9A + .align 2, 0 +_08134B80: .4byte gUnknown_203B140 +_08134B84: .4byte 0x00003270 +_08134B88: + ldr r0, _08134BA8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08134B9A + mov r0, r8 + bl sub_8137E64 +_08134B9A: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08134BA8: .4byte gUnknown_2037AB8 + thumb_func_end sub_8134840 + + thumb_func_start sub_8134BAC +sub_8134BAC: @ 8134BAC + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r6, _08134BD4 @ =gUnknown_3005098 + adds r7, r0, r6 + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r0, 0x9 + bls _08134BCA + b _08134E18 +_08134BCA: + lsls r0, 2 + ldr r1, _08134BD8 @ =_08134BDC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08134BD4: .4byte gUnknown_3005098 +_08134BD8: .4byte _08134BDC + .align 2, 0 +_08134BDC: + .4byte _08134C04 + .4byte _08134C48 + .4byte _08134CD4 + .4byte _08134CF8 + .4byte _08134D2C + .4byte _08134D4C + .4byte _08134D68 + .4byte _08134D88 + .4byte _08134DB0 + .4byte _08134E00 +_08134C04: + bl sub_8135638 + bl sub_81356EC + ldr r4, _08134C38 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r2, _08134C3C @ =0x00003234 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + ldr r3, _08134C40 @ =0x0000301c + adds r0, r3 + strb r1, [r0] + ldr r0, [r4] + ldr r5, _08134C44 @ =0x00003214 + adds r0, r5 + ldrb r0, [r0] + bl sub_813B750 + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_8138280 + b _08134E74 + .align 2, 0 +_08134C38: .4byte gUnknown_203B140 +_08134C3C: .4byte 0x00003234 +_08134C40: .4byte 0x0000301c +_08134C44: .4byte 0x00003214 +_08134C48: + ldr r0, _08134CC8 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08134CCC @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08134C7E + cmp r0, 0x2 + bne _08134C64 + ldr r3, _08134CD0 @ =0x00003224 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _08134C7E +_08134C64: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC +_08134C7E: + movs r4, 0x1E + str r4, [sp] + movs r5, 0x2 + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r6, 0xF + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + b _08134E74 + .align 2, 0 +_08134CC8: .4byte gUnknown_203B140 +_08134CCC: .4byte 0x00003214 +_08134CD0: .4byte 0x00003224 +_08134CD4: + bl sub_8135AA4 + bl sub_8135B90 + bl sub_8138538 + ldr r0, _08134CF0 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08134CF4 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_8137D28 + b _08134E74 + .align 2, 0 +_08134CF0: .4byte gUnknown_203B140 +_08134CF4: .4byte 0x00003214 +_08134CF8: + ldr r4, _08134D20 @ =gUnknown_203B140 + ldr r0, [r4] + movs r2, 0xC0 + lsls r2, 6 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r3, _08134D24 @ =0x00003001 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08134D28 @ =0x00003002 + adds r0, r1 + b _08134DE2 + .align 2, 0 +_08134D20: .4byte gUnknown_203B140 +_08134D24: .4byte 0x00003001 +_08134D28: .4byte 0x00003002 +_08134D2C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _08134D38 + b _08134E7A +_08134D38: + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + b _08134E74 +_08134D4C: + bl sub_8135514 + ldr r0, _08134D60 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _08134D64 @ =0x00003244 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] + b _08134E74 + .align 2, 0 +_08134D60: .4byte gUnknown_203B140 +_08134D64: .4byte 0x00003244 +_08134D68: + ldr r0, _08134D80 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r3, _08134D84 @ =0x00003224 + adds r0, r3 + ldrb r0, [r0] + bl sub_81357A0 + lsls r0, 24 + cmp r0, 0 + bne _08134D7E + b _08134E7A +_08134D7E: + b _08134E74 + .align 2, 0 +_08134D80: .4byte gUnknown_203B140 +_08134D84: .4byte 0x00003224 +_08134D88: + bl sub_8136F4C + ldr r0, _08134DA8 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08134DAC @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08134D9E + bl sub_81374E8 +_08134D9E: + bl sub_8137BD0 + bl sub_8138A38 + b _08134E74 + .align 2, 0 +_08134DA8: .4byte gUnknown_203B140 +_08134DAC: .4byte 0x00003214 +_08134DB0: + ldr r4, _08134DEC @ =gUnknown_203B140 + ldr r0, [r4] + ldr r2, _08134DF0 @ =0x00003003 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r3, _08134DF4 @ =0x00003004 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08134DF8 @ =0x00003005 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08134DFC @ =0x00003006 + adds r0, r2 +_08134DE2: + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + b _08134E74 + .align 2, 0 +_08134DEC: .4byte gUnknown_203B140 +_08134DF0: .4byte 0x00003003 +_08134DF4: .4byte 0x00003004 +_08134DF8: .4byte 0x00003005 +_08134DFC: .4byte 0x00003006 +_08134E00: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08134E7A + movs r0, 0 + bl sub_80020BC + movs r0, 0 + bl sub_80019BC + b _08134E74 +_08134E18: + bl sub_8138440 + ldr r5, _08134E5C @ =gUnknown_203B140 + ldr r1, [r5] + ldr r3, _08134E60 @ =0x00003214 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x3 + bne _08134E40 + adds r2, r6, 0 + subs r2, 0x8 + ldr r3, _08134E64 @ =0x00003018 + adds r0, r1, r3 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _08134E68 @ =sub_8138CD8 + str r1, [r0] +_08134E40: + adds r0, r4, 0 + bl sub_8077508 + movs r0, 0 + strh r0, [r7] + ldr r1, [r5] + ldr r2, _08134E6C @ =0x00003234 + adds r1, r2 + strb r0, [r1] + ldr r1, [r5] + ldr r3, _08134E70 @ =0x0000301c + adds r1, r3 + strb r0, [r1] + b _08134E7A + .align 2, 0 +_08134E5C: .4byte gUnknown_203B140 +_08134E60: .4byte 0x00003214 +_08134E64: .4byte 0x00003018 +_08134E68: .4byte sub_8138CD8 +_08134E6C: .4byte 0x00003234 +_08134E70: .4byte 0x0000301c +_08134E74: + ldrh r0, [r7] + adds r0, 0x1 + strh r0, [r7] +_08134E7A: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8134BAC + + thumb_func_start sub_8134E84 +sub_8134E84: @ 8134E84 + push {r4-r6,lr} + sub sp, 0x8 + ldr r4, _08134EA4 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08134EA8 @ =0x00003284 + adds r0, r1 + ldrb r0, [r0] + adds r5, r4, 0 + cmp r0, 0xB + bls _08134E9A + b _08135132 +_08134E9A: + lsls r0, 2 + ldr r1, _08134EAC @ =_08134EB0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08134EA4: .4byte gUnknown_203B140 +_08134EA8: .4byte 0x00003284 +_08134EAC: .4byte _08134EB0 + .align 2, 0 +_08134EB0: + .4byte _08134EE0 + .4byte _08134F14 + .4byte _08134FA0 + .4byte _08134FC8 + .4byte _08135010 + .4byte _08135034 + .4byte _08135054 + .4byte _08135080 + .4byte _081350AC + .4byte _081350D4 + .4byte _081350E4 + .4byte _08135114 +_08134EE0: + ldr r1, _08134F04 @ =gUnknown_203B140 + ldr r0, [r1] + ldr r2, _08134F08 @ =0x00003234 + adds r0, r2 + movs r2, 0x1 + strb r2, [r0] + ldr r0, [r1] + ldr r3, _08134F0C @ =0x0000301c + adds r0, r3 + strb r2, [r0] + ldr r0, [r1] + ldr r1, _08134F10 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_8138280 + b _08135180 + .align 2, 0 +_08134F04: .4byte gUnknown_203B140 +_08134F08: .4byte 0x00003234 +_08134F0C: .4byte 0x0000301c +_08134F10: .4byte 0x00003214 +_08134F14: + ldr r0, _08134F94 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08134F98 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08134F4A + cmp r0, 0x2 + bne _08134F30 + ldr r3, _08134F9C @ =0x00003224 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _08134F4A +_08134F30: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC +_08134F4A: + movs r4, 0x1E + str r4, [sp] + movs r5, 0x2 + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r6, 0xF + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + b _08135180 + .align 2, 0 +_08134F94: .4byte gUnknown_203B140 +_08134F98: .4byte 0x00003214 +_08134F9C: .4byte 0x00003224 +_08134FA0: + bl sub_8135638 + ldr r0, _08134FC0 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08134FC4 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_813B750 + bl sub_8135B90 + bl sub_8138538 + bl sub_8135AA4 + b _08135180 + .align 2, 0 +_08134FC0: .4byte gUnknown_203B140 +_08134FC4: .4byte 0x00003214 +_08134FC8: + ldr r0, _08134FF0 @ =gUnknown_8419C39 + bl sub_8136DA4 + ldr r0, _08134FF4 @ =gUnknown_30030F0 + ldr r2, _08134FF8 @ =0x00000439 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08135004 + ldr r0, _08134FFC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08135004 + ldr r0, _08135000 @ =gUnknown_8419C92 + bl sub_8136DF0 + b _08135180 + .align 2, 0 +_08134FF0: .4byte gUnknown_8419C39 +_08134FF4: .4byte gUnknown_30030F0 +_08134FF8: .4byte 0x00000439 +_08134FFC: .4byte gUnknown_3003F64 +_08135000: .4byte gUnknown_8419C92 +_08135004: + ldr r0, _0813500C @ =gUnknown_8419CA2 + bl sub_8136DF0 + b _08135180 + .align 2, 0 +_0813500C: .4byte gUnknown_8419CA2 +_08135010: + ldr r4, _0813502C @ =gUnknown_203B140 + ldr r0, [r4] + movs r3, 0xC0 + lsls r3, 6 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08135030 @ =0x00003001 + adds r0, r1 + b _081350FE + .align 2, 0 +_0813502C: .4byte gUnknown_203B140 +_08135030: .4byte 0x00003001 +_08135034: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _08135040 + b _0813518E +_08135040: + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _08135180 +_08135054: + bl sub_8136F4C + bl sub_8137BD0 + ldr r4, _08135074 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r2, _08135078 @ =0x00003003 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r3, _0813507C @ =0x00003005 + adds r0, r3 + b _081350FE + .align 2, 0 +_08135074: .4byte gUnknown_203B140 +_08135078: .4byte 0x00003003 +_0813507C: .4byte 0x00003005 +_08135080: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _0813508C + b _0813518E +_0813508C: + movs r0, 0 + bl sub_80020BC + bl sub_8135514 + ldr r0, _081350A4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _081350A8 @ =0x00003244 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _08135180 + .align 2, 0 +_081350A4: .4byte gUnknown_203B140 +_081350A8: .4byte 0x00003244 +_081350AC: + ldr r0, [r5] + ldr r2, _081350CC @ =0x00003224 + adds r0, r2 + ldrb r0, [r0] + bl sub_81357A0 + lsls r0, 24 + cmp r0, 0 + beq _0813518E + bl sub_81374E8 + ldr r0, [r5] + ldr r3, _081350D0 @ =0x00003004 + adds r0, r3 + b _081350FE + .align 2, 0 +_081350CC: .4byte 0x00003224 +_081350D0: .4byte 0x00003004 +_081350D4: + bl sub_8138A38 + ldr r0, _081350E0 @ =gUnknown_8419C45 + bl sub_8136E50 + b _08135180 + .align 2, 0 +_081350E0: .4byte gUnknown_8419C45 +_081350E4: + bl sub_81356EC + ldr r4, _08135108 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813510C @ =0x00003006 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08135110 @ =0x00003002 + adds r0, r2 +_081350FE: + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + b _08135180 + .align 2, 0 +_08135108: .4byte gUnknown_203B140 +_0813510C: .4byte 0x00003006 +_08135110: .4byte 0x00003002 +_08135114: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0813518E + movs r0, 0 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + b _08135180 +_08135132: + bl sub_8138440 + ldr r3, _08135168 @ =gUnknown_3005090 + ldr r2, [r4] + ldr r1, _0813516C @ =0x00003018 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r3 + ldr r1, _08135170 @ =sub_8138CD8 + str r1, [r0] + ldr r3, _08135174 @ =0x00003284 + adds r2, r3 + movs r1, 0 + strb r1, [r2] + ldr r0, [r4] + ldr r2, _08135178 @ =0x00003234 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + ldr r3, _0813517C @ =0x0000301c + adds r0, r3 + strb r1, [r0] + b _0813518E + .align 2, 0 +_08135168: .4byte gUnknown_3005090 +_0813516C: .4byte 0x00003018 +_08135170: .4byte sub_8138CD8 +_08135174: .4byte 0x00003284 +_08135178: .4byte 0x00003234 +_0813517C: .4byte 0x0000301c +_08135180: + ldr r0, _08135198 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _0813519C @ =0x00003284 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0813518E: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08135198: .4byte gUnknown_203B140 +_0813519C: .4byte 0x00003284 + thumb_func_end sub_8134E84 + + thumb_func_start sub_81351A0 +sub_81351A0: @ 81351A0 + push {r4-r6,lr} + sub sp, 0x8 + ldr r4, _081351C0 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _081351C4 @ =0x00003284 + adds r0, r1 + ldrb r0, [r0] + adds r2, r4, 0 + cmp r0, 0xA + bls _081351B6 + b _08135400 +_081351B6: + lsls r0, 2 + ldr r1, _081351C8 @ =_081351CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081351C0: .4byte gUnknown_203B140 +_081351C4: .4byte 0x00003284 +_081351C8: .4byte _081351CC + .align 2, 0 +_081351CC: + .4byte _081351F8 + .4byte _0813522C + .4byte _081352B8 + .4byte _081352BE + .4byte _08135310 + .4byte _08135328 + .4byte _08135354 + .4byte _0813544C + .4byte _08135388 + .4byte _081353AC + .4byte _081353EC +_081351F8: + ldr r1, _0813521C @ =gUnknown_203B140 + ldr r0, [r1] + ldr r2, _08135220 @ =0x00003234 + adds r0, r2 + movs r2, 0x1 + strb r2, [r0] + ldr r0, [r1] + ldr r3, _08135224 @ =0x0000301c + adds r0, r3 + strb r2, [r0] + ldr r0, [r1] + ldr r1, _08135228 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_8138280 + b _0813544C + .align 2, 0 +_0813521C: .4byte gUnknown_203B140 +_08135220: .4byte 0x00003234 +_08135224: .4byte 0x0000301c +_08135228: .4byte 0x00003214 +_0813522C: + ldr r0, _081352AC @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _081352B0 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08135262 + cmp r0, 0x2 + bne _08135248 + ldr r3, _081352B4 @ =0x00003224 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _08135262 +_08135248: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC +_08135262: + movs r4, 0x1E + str r4, [sp] + movs r5, 0x2 + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r6, 0xF + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r6, [sp] + str r5, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + b _0813544C + .align 2, 0 +_081352AC: .4byte gUnknown_203B140 +_081352B0: .4byte 0x00003214 +_081352B4: .4byte 0x00003224 +_081352B8: + bl sub_8135AA4 + b _0813544C +_081352BE: + bl sub_8136F4C + bl sub_81374E8 + bl sub_8137BD0 + ldr r4, _08135300 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08135304 @ =0x00003003 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08135308 @ =0x00003004 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r3, _0813530C @ =0x00003005 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + b _0813544C + .align 2, 0 +_08135300: .4byte gUnknown_203B140 +_08135304: .4byte 0x00003003 +_08135308: .4byte 0x00003004 +_0813530C: .4byte 0x00003005 +_08135310: + ldr r0, _08135320 @ =gUnknown_8419C39 + bl sub_8136DA4 + ldr r0, _08135324 @ =gUnknown_8419C82 + bl sub_8136DF0 + b _0813544C + .align 2, 0 +_08135320: .4byte gUnknown_8419C39 +_08135324: .4byte gUnknown_8419C82 +_08135328: + ldr r4, _0813534C @ =gUnknown_203B140 + ldr r0, [r4] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08135350 @ =0x00003001 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + b _081353D0 + .align 2, 0 +_0813534C: .4byte gUnknown_203B140 +_08135350: .4byte 0x00003001 +_08135354: + bl sub_8135514 + ldr r4, _0813537C @ =gUnknown_203B140 + ldr r0, [r4] + ldr r3, _08135380 @ =0x00003244 + adds r0, r3 + movs r1, 0x1 + strb r1, [r0] + bl sub_8135638 + ldr r0, [r4] + ldr r1, _08135384 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_813B750 + bl sub_8138A38 + b _0813544C + .align 2, 0 +_0813537C: .4byte gUnknown_203B140 +_08135380: .4byte 0x00003244 +_08135384: .4byte 0x00003214 +_08135388: + ldr r0, [r2] + ldr r2, _081353A4 @ =0x00003224 + adds r0, r2 + ldrb r0, [r0] + bl sub_81357A0 + lsls r0, 24 + cmp r0, 0 + beq _0813545A + ldr r0, _081353A8 @ =gUnknown_8419C45 + bl sub_8136E50 + b _0813544C + .align 2, 0 +_081353A4: .4byte 0x00003224 +_081353A8: .4byte gUnknown_8419C45 +_081353AC: + ldr r4, _081353E0 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r3, _081353E4 @ =0x00003006 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _081353E8 @ =0x00003002 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC +_081353D0: + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + b _0813544C + .align 2, 0 +_081353E0: .4byte gUnknown_203B140 +_081353E4: .4byte 0x00003006 +_081353E8: .4byte 0x00003002 +_081353EC: + bl sub_8135B90 + bl sub_8138538 + movs r0, 0x3 + bl sub_80020BC + bl sub_81356EC + b _0813544C +_08135400: + bl sub_8138440 + ldr r3, _08135434 @ =gUnknown_3005090 + ldr r2, [r4] + ldr r1, _08135438 @ =0x00003018 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r3 + ldr r1, _0813543C @ =sub_8134840 + str r1, [r0] + ldr r3, _08135440 @ =0x00003284 + adds r2, r3 + movs r1, 0 + strb r1, [r2] + ldr r0, [r4] + ldr r2, _08135444 @ =0x00003234 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + ldr r3, _08135448 @ =0x0000301c + adds r0, r3 + strb r1, [r0] + b _0813545A + .align 2, 0 +_08135434: .4byte gUnknown_3005090 +_08135438: .4byte 0x00003018 +_0813543C: .4byte sub_8134840 +_08135440: .4byte 0x00003284 +_08135444: .4byte 0x00003234 +_08135448: .4byte 0x0000301c +_0813544C: + ldr r0, _08135464 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _08135468 @ =0x00003284 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0813545A: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08135464: .4byte gUnknown_203B140 +_08135468: .4byte 0x00003284 + thumb_func_end sub_81351A0 + + thumb_func_start sub_813546C +sub_813546C: @ 813546C + push {r4-r6,lr} + movs r4, 0 + ldr r6, _081354BC @ =gUnknown_203B160 +_08135472: + ldr r1, [r6] + lsls r5, r4, 1 + adds r0, r1, 0 + adds r0, 0x2C + adds r0, r5 + lsls r2, r4, 3 + mov r12, r2 + movs r2, 0xC6 + lsls r2, 1 + add r2, r12 + strh r2, [r0] + lsls r3, r4, 2 + adds r1, r3 + ldr r0, [r1] + strh r2, [r0, 0x20] + cmp r4, 0x8 + bhi _081354AC + ldr r0, _081354C0 @ =gUnknown_203B15C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x28 + adds r0, r5 + movs r2, 0xCE + lsls r2, 1 + add r2, r12 + strh r2, [r0] + adds r1, r3 + ldr r0, [r1] + strh r2, [r0, 0x20] +_081354AC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _08135472 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081354BC: .4byte gUnknown_203B160 +_081354C0: .4byte gUnknown_203B15C + thumb_func_end sub_813546C + + thumb_func_start sub_81354C4 +sub_81354C4: @ 81354C4 + push {r4-r7,lr} + movs r5, 0 + ldr r7, _0813550C @ =gUnknown_203B160 +_081354CA: + ldr r1, [r7] + lsls r6, r5, 1 + adds r0, r1, 0 + adds r0, 0x2C + adds r0, r6 + lsls r4, r5, 3 + adds r2, r4, 0 + adds r2, 0x9C + strh r2, [r0] + lsls r3, r5, 2 + adds r1, r3 + ldr r0, [r1] + strh r2, [r0, 0x20] + cmp r5, 0x8 + bhi _081354FC + ldr r0, _08135510 @ =gUnknown_203B15C + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x28 + adds r0, r6 + adds r2, 0x10 + strh r2, [r0] + adds r1, r3 + ldr r0, [r1] + strh r2, [r0, 0x20] +_081354FC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _081354CA + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813550C: .4byte gUnknown_203B160 +_08135510: .4byte gUnknown_203B15C + thumb_func_end sub_81354C4 + + thumb_func_start sub_8135514 +sub_8135514: @ 8135514 + push {r4-r6,lr} + movs r4, 0x1 + ldr r6, _0813553C @ =gUnknown_203B140 + ldr r1, [r6] + ldr r2, _08135540 @ =0x00003224 + adds r0, r1, r2 + ldrb r3, [r0] + cmp r3, 0x1 + bne _08135528 + movs r4, 0xFF +_08135528: + ldr r0, _08135544 @ =0x00003214 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0x3 + bne _0813554C + ldr r2, _08135548 @ =0x0000324c + adds r1, r2 + movs r0, 0xF0 + strh r0, [r1] + b _08135632 + .align 2, 0 +_0813553C: .4byte gUnknown_203B140 +_08135540: .4byte 0x00003224 +_08135544: .4byte 0x00003214 +_08135548: .4byte 0x0000324c +_0813554C: + lsls r0, r4, 24 + asrs r0, 24 + ldrb r2, [r2] + adds r0, r2 + cmp r0, 0x3 + bne _08135580 + movs r0, 0 + movs r1, 0 + bl sub_81358DC + ldr r0, [r6] + ldr r1, _0813557C @ =0x0000324c + adds r0, r1 + movs r1, 0 + strh r1, [r0] + movs r0, 0x14 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + b _08135632 + .align 2, 0 +_0813557C: .4byte 0x0000324c +_08135580: + cmp r3, 0x1 + bne _081355B4 + ldr r2, _081355B0 @ =0x0000324c + adds r1, r2 + movs r0, 0 + strh r0, [r1] + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0x1 + bl sub_81358DC + b _081355FC + .align 2, 0 +_081355B0: .4byte 0x0000324c +_081355B4: + movs r0, 0xA + bl sub_8000AC4 + movs r4, 0x3 + adds r5, r4, 0 + ands r5, r0 + movs r0, 0xC + bl sub_8000AC4 + ands r4, r0 + ldr r0, [r6] + ldr r1, _081355E0 @ =0x0000324c + adds r0, r1 + movs r1, 0xF0 + strh r1, [r0] + cmp r5, r4 + bls _081355E4 + movs r0, 0x14 + bl sub_8000A38 + b _081355EC + .align 2, 0 +_081355E0: .4byte 0x0000324c +_081355E4: + movs r0, 0x18 + movs r1, 0xF0 + bl sub_8000A38 +_081355EC: + movs r0, 0x10 + movs r1, 0xF0 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0 + bl sub_81358DC +_081355FC: + ldr r0, _0813561C @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08135620 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0813562A + adds r2, 0x10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135624 + bl sub_81354C4 + b _08135632 + .align 2, 0 +_0813561C: .4byte gUnknown_203B140 +_08135620: .4byte 0x00003214 +_08135624: + bl sub_813546C + b _08135632 +_0813562A: + cmp r0, 0x2 + bne _08135632 + bl sub_81354C4 +_08135632: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8135514 + + thumb_func_start sub_8135638 +sub_8135638: @ 8135638 + push {lr} + ldr r0, _08135654 @ =gUnknown_203B140 + ldr r2, [r0] + ldr r3, _08135658 @ =0x00003224 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, r0, 0 + cmp r1, 0x1 + bne _08135660 + ldr r1, _0813565C @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, 0x1 + b _08135668 + .align 2, 0 +_08135654: .4byte gUnknown_203B140 +_08135658: .4byte 0x00003224 +_0813565C: .4byte 0x00003214 +_08135660: + ldr r1, _08135680 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, 0x1 +_08135668: + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08135684 + cmp r0, 0x1 + ble _081356E6 + cmp r0, 0x2 + beq _08135692 + cmp r0, 0x3 + beq _081356C8 + b _081356E6 + .align 2, 0 +_08135680: .4byte 0x00003214 +_08135684: + movs r0, 0x1 + bl sub_813A838 + movs r0, 0x1 + bl sub_813AB70 + b _081356E6 +_08135692: + ldr r0, [r3] + ldr r3, _081356C4 @ =0x00003224 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0x1 + bne _081356E6 + movs r0, 0x1 + bl sub_8139C44 + movs r0, 0x1 + bl sub_813B084 + movs r0, 0x1 + bl sub_8139D54 + movs r0, 0x1 + bl sub_813A3B8 + movs r0, 0x1 + bl sub_813ACF8 + movs r0, 0x1 + bl sub_813AEB0 + b _081356E6 + .align 2, 0 +_081356C4: .4byte 0x00003224 +_081356C8: + movs r0, 0x1 + bl sub_813A0E8 + movs r0, 0x1 + bl sub_8139EE4 + movs r0, 0x1 + bl sub_813A3B8 + movs r0, 0x1 + bl sub_813ACF8 + movs r0, 0x1 + bl sub_813AEB0 +_081356E6: + pop {r0} + bx r0 + thumb_func_end sub_8135638 + + thumb_func_start sub_81356EC +sub_81356EC: @ 81356EC + push {lr} + ldr r0, _08135708 @ =gUnknown_203B140 + ldr r2, [r0] + ldr r3, _0813570C @ =0x00003224 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, r0, 0 + cmp r1, 0x1 + bne _08135714 + ldr r1, _08135710 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, 0x1 + b _0813571C + .align 2, 0 +_08135708: .4byte gUnknown_203B140 +_0813570C: .4byte 0x00003224 +_08135710: .4byte 0x00003214 +_08135714: + ldr r1, _08135730 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, 0x1 +_0813571C: + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813579A + cmp r0, 0x1 + bgt _08135734 + cmp r0, 0 + beq _0813574A + b _0813579A + .align 2, 0 +_08135730: .4byte 0x00003214 +_08135734: + cmp r0, 0x2 + beq _0813573E + cmp r0, 0x3 + beq _08135776 + b _0813579A +_0813573E: + ldr r0, [r3] + ldr r3, _08135758 @ =0x00003224 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _0813575C +_0813574A: + movs r0, 0 + bl sub_813A838 + movs r0, 0 + bl sub_813AB70 + b _0813579A + .align 2, 0 +_08135758: .4byte 0x00003224 +_0813575C: + movs r0, 0 + bl sub_813A0E8 + movs r0, 0 + bl sub_813ACF8 + movs r0, 0 + bl sub_8139EE4 + movs r0, 0 + bl sub_813AEB0 + b _0813579A +_08135776: + movs r0, 0 + bl sub_8139C44 + movs r0, 0 + bl sub_813B084 + movs r0, 0 + bl sub_813A3B8 + movs r0, 0 + bl sub_8139D54 + movs r0, 0 + bl sub_813ACF8 + movs r0, 0 + bl sub_813AEB0 +_0813579A: + pop {r0} + bx r0 + thumb_func_end sub_81356EC + + thumb_func_start sub_81357A0 +sub_81357A0: @ 81357A0 + push {r4-r6,lr} + movs r3, 0x1 + ldr r0, _081357EC @ =gUnknown_203B140 + ldr r2, [r0] + ldr r4, _081357F0 @ =0x00003224 + adds r1, r2, r4 + ldrb r1, [r1] + adds r5, r0, 0 + cmp r1, 0x1 + bne _081357B6 + movs r3, 0xFF +_081357B6: + ldr r1, _081357F4 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _08135800 + ldr r4, _081357F8 @ =0x0000324c + adds r1, r2, r4 + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + bgt _08135800 + movs r4, 0 + movs r0, 0 + strh r0, [r1] + ldr r0, _081357FC @ =0x00003238 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x1 + eors r0, r1 + strb r0, [r2] + movs r0, 0 + movs r1, 0 + bl sub_81358DC + ldr r0, [r5] + b _0813587E + .align 2, 0 +_081357EC: .4byte gUnknown_203B140 +_081357F0: .4byte 0x00003224 +_081357F4: .4byte 0x00003214 +_081357F8: .4byte 0x0000324c +_081357FC: .4byte 0x00003238 +_08135800: + ldr r2, [r5] + ldr r4, _0813583C @ =0x00003214 + adds r1, r2, r4 + lsls r0, r3, 24 + asrs r0, 24 + ldrb r1, [r1] + adds r0, r1 + cmp r0, 0x3 + bne _08135848 + ldr r0, _08135840 @ =0x0000324c + adds r1, r2, r0 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0xEF + ble _08135848 + movs r3, 0 + movs r0, 0xF0 + strh r0, [r1] + adds r4, 0x24 + adds r2, r4 + ldrb r0, [r2] + movs r1, 0x1 + eors r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, _08135844 @ =0x00003244 + adds r0, r1 + strb r3, [r0] + movs r0, 0x1 + b _081358D6 + .align 2, 0 +_0813583C: .4byte 0x00003214 +_08135840: .4byte 0x0000324c +_08135844: .4byte 0x00003244 +_08135848: + adds r6, r5, 0 + ldr r2, [r6] + ldr r3, _08135888 @ =0x00003224 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135898 + ldr r4, _0813588C @ =0x0000324c + adds r1, r2, r4 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0xEF + ble _081358D4 + movs r4, 0 + movs r0, 0xF0 + strh r0, [r1] + ldr r0, _08135890 @ =0x00003238 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x1 + eors r0, r1 + strb r0, [r2] + movs r0, 0 + movs r1, 0 + bl sub_81358DC + ldr r0, [r6] +_0813587E: + ldr r1, _08135894 @ =0x00003244 + adds r0, r1 + strb r4, [r0] + movs r0, 0x1 + b _081358D6 + .align 2, 0 +_08135888: .4byte 0x00003224 +_0813588C: .4byte 0x0000324c +_08135890: .4byte 0x00003238 +_08135894: .4byte 0x00003244 +_08135898: + ldr r3, _081358C8 @ =0x0000324c + adds r0, r2, r3 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r0, 0 + bgt _081358D4 + ldr r0, _081358CC @ =0x00003238 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x1 + eors r0, r1 + movs r3, 0 + strb r0, [r2] + ldr r0, [r5] + ldr r2, _081358C8 @ =0x0000324c + adds r1, r0, r2 + movs r2, 0 + strh r3, [r1] + ldr r3, _081358D0 @ =0x00003244 + adds r0, r3 + strb r2, [r0] + movs r0, 0x1 + b _081358D6 + .align 2, 0 +_081358C8: .4byte 0x0000324c +_081358CC: .4byte 0x00003238 +_081358D0: .4byte 0x00003244 +_081358D4: + movs r0, 0 +_081358D6: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81357A0 + + thumb_func_start sub_81358DC +sub_81358DC: @ 81358DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r0, 0x8 + bl sub_8000AC4 + movs r4, 0x3 + mov r8, r4 + mov r1, r8 + ands r1, r0 + mov r8, r1 + movs r0, 0xA + bl sub_8000AC4 + adds r5, r4, 0 + ands r5, r0 + movs r0, 0xC + bl sub_8000AC4 + adds r6, r4, 0 + ands r6, r0 + ldr r0, _08135938 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _0813593C @ =0x00003224 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135970 + cmp r7, 0 + bne _0813594E + movs r0, 0 + mov r8, r0 + mov r1, r9 + cmp r1, 0 + bne _08135940 + cmp r5, r6 + bhi _0813594A + b _08135944 + .align 2, 0 +_08135938: .4byte gUnknown_203B140 +_0813593C: .4byte 0x00003224 +_08135940: + cmp r5, r6 + bls _0813594A +_08135944: + movs r5, 0x2 + movs r6, 0x1 + b _0813594E +_0813594A: + movs r5, 0x1 + movs r6, 0x2 +_0813594E: + cmp r7, 0x1 + bne _08135970 + movs r2, 0x1 + mov r8, r2 + mov r0, r9 + cmp r0, 0 + bne _08135962 + cmp r5, r6 + bhi _0813596C + b _08135966 +_08135962: + cmp r5, r6 + bls _0813596C +_08135966: + movs r5, 0x2 + movs r6, 0 + b _08135970 +_0813596C: + movs r5, 0 + movs r6, 0x2 +_08135970: + ldr r0, _0813598C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08135990 @ =0x00003224 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08135998 + movs r2, 0 + mov r8, r2 + cmp r5, r6 + bls _08135994 + movs r5, 0x1 + movs r6, 0x2 + b _08135998 + .align 2, 0 +_0813598C: .4byte gUnknown_203B140 +_08135990: .4byte 0x00003224 +_08135994: + movs r5, 0x2 + movs r6, 0x1 +_08135998: + movs r4, 0 + mov r0, r8 + lsls r0, 2 + mov r9, r0 + movs r7, 0xD + negs r7, r7 + lsls r1, r5, 2 + mov r12, r1 + ldr r2, _081359D8 @ =gUnknown_203B160 + mov r10, r2 +_081359AC: + ldr r0, _081359DC @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _081359E0 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _081359E4 + adds r2, 0x10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _081359E4 + mov r1, r10 + ldr r0, [r1] + lsls r3, r4, 2 + adds r0, r3 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + adds r0, r7, 0 + ands r0, r1 + mov r1, r9 + b _081359F6 + .align 2, 0 +_081359D8: .4byte gUnknown_203B160 +_081359DC: .4byte gUnknown_203B140 +_081359E0: .4byte 0x00003214 +_081359E4: + mov r2, r10 + ldr r0, [r2] + lsls r3, r4, 2 + adds r0, r3 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + adds r0, r7, 0 + ands r0, r1 + mov r1, r12 +_081359F6: + orrs r0, r1 + strb r0, [r2, 0x5] + cmp r4, 0x8 + bhi _08135A48 + ldr r2, _08135A28 @ =gUnknown_203B140 + ldr r1, [r2] + ldr r2, _08135A2C @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135A34 + adds r2, 0x10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135A34 + ldr r0, _08135A30 @ =gUnknown_203B15C + ldr r0, [r0] + adds r0, r3 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + adds r0, r7, 0 + ands r0, r1 + mov r1, r9 + b _08135A44 + .align 2, 0 +_08135A28: .4byte gUnknown_203B140 +_08135A2C: .4byte 0x00003214 +_08135A30: .4byte gUnknown_203B15C +_08135A34: + ldr r0, _08135A9C @ =gUnknown_203B15C + ldr r0, [r0] + adds r0, r3 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + adds r0, r7, 0 + ands r0, r1 + mov r1, r12 +_08135A44: + orrs r0, r1 + strb r0, [r2, 0x5] +_08135A48: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _081359AC + movs r0, 0x8 + bl sub_8000AC4 + ldr r4, _08135AA0 @ =0x0000fffc + adds r1, r4, 0 + ands r1, r0 + mov r2, r8 + orrs r1, r2 + movs r0, 0x8 + bl sub_8000A38 + movs r0, 0xA + bl sub_8000AC4 + adds r1, r4, 0 + ands r1, r0 + orrs r1, r5 + movs r0, 0xA + bl sub_8000A38 + movs r0, 0xC + bl sub_8000AC4 + ands r4, r0 + orrs r4, r6 + movs r0, 0xC + adds r1, r4, 0 + bl sub_8000A38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08135A9C: .4byte gUnknown_203B15C +_08135AA0: .4byte 0x0000fffc + thumb_func_end sub_81358DC + + thumb_func_start sub_8135AA4 +sub_8135AA4: @ 8135AA4 + push {lr} + ldr r0, _08135AC0 @ =gUnknown_203B140 + ldr r2, [r0] + ldr r3, _08135AC4 @ =0x00003224 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, r0, 0 + cmp r1, 0x1 + bne _08135ACC + ldr r1, _08135AC8 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, 0x1 + b _08135AD4 + .align 2, 0 +_08135AC0: .4byte gUnknown_203B140 +_08135AC4: .4byte 0x00003224 +_08135AC8: .4byte 0x00003214 +_08135ACC: + ldr r1, _08135AE8 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, 0x1 +_08135AD4: + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08135B00 + cmp r0, 0x1 + bgt _08135AEC + cmp r0, 0 + beq _08135AF6 + b _08135B82 + .align 2, 0 +_08135AE8: .4byte 0x00003214 +_08135AEC: + cmp r0, 0x2 + beq _08135B38 + cmp r0, 0x3 + beq _08135B70 + b _08135B82 +_08135AF6: + ldr r0, [r3] + movs r2, 0xC9 + lsls r2, 6 + adds r0, r2 + b _08135B5E +_08135B00: + ldr r1, [r3] + ldr r3, _08135B18 @ =0x00003224 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135B24 + ldr r2, _08135B1C @ =0x0000323c + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _08135B20 @ =gUnknown_8E9B950 + b _08135B62 + .align 2, 0 +_08135B18: .4byte 0x00003224 +_08135B1C: .4byte 0x0000323c +_08135B20: .4byte gUnknown_8E9B950 +_08135B24: + ldr r3, _08135B30 @ =0x0000323c + adds r0, r1, r3 + ldrb r0, [r0] + ldr r1, _08135B34 @ =gUnknown_8E9B598 + b _08135B62 + .align 2, 0 +_08135B30: .4byte 0x0000323c +_08135B34: .4byte gUnknown_8E9B598 +_08135B38: + ldr r1, [r3] + ldr r2, _08135B50 @ =0x00003224 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135B58 + movs r3, 0xC9 + lsls r3, 6 + adds r0, r1, r3 + ldrb r0, [r0] + ldr r1, _08135B54 @ =gUnknown_8E9BA9C + b _08135B62 + .align 2, 0 +_08135B50: .4byte 0x00003224 +_08135B54: .4byte gUnknown_8E9BA9C +_08135B58: + movs r2, 0xC9 + lsls r2, 6 + adds r0, r1, r2 +_08135B5E: + ldrb r0, [r0] + ldr r1, _08135B6C @ =gUnknown_8E9B750 +_08135B62: + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _08135B82 + .align 2, 0 +_08135B6C: .4byte gUnknown_8E9B750 +_08135B70: + ldr r0, [r3] + ldr r3, _08135B88 @ =0x0000323c + adds r0, r3 + ldrb r0, [r0] + ldr r1, _08135B8C @ =gUnknown_8E9B950 + movs r2, 0 + movs r3, 0 + bl sub_8002040 +_08135B82: + pop {r0} + bx r0 + .align 2, 0 +_08135B88: .4byte 0x0000323c +_08135B8C: .4byte gUnknown_8E9B950 + thumb_func_end sub_8135AA4 + + thumb_func_start sub_8135B90 +sub_8135B90: @ 8135B90 + push {lr} + ldr r0, _08135BAC @ =gUnknown_203B140 + ldr r2, [r0] + ldr r3, _08135BB0 @ =0x00003224 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, r0, 0 + cmp r1, 0x1 + bne _08135BB8 + ldr r1, _08135BB4 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, 0x1 + b _08135BC0 + .align 2, 0 +_08135BAC: .4byte gUnknown_203B140 +_08135BB0: .4byte 0x00003224 +_08135BB4: .4byte 0x00003214 +_08135BB8: + ldr r1, _08135BD4 @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, 0x1 +_08135BC0: + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08135C2C + cmp r0, 0x1 + bgt _08135BD8 + cmp r0, 0 + beq _08135BE2 + b _08135C2C + .align 2, 0 +_08135BD4: .4byte 0x00003214 +_08135BD8: + cmp r0, 0x2 + beq _08135BF4 + cmp r0, 0x3 + beq _08135C20 + b _08135C2C +_08135BE2: + ldr r0, [r3] + movs r3, 0xC9 + lsls r3, 6 + adds r0, r3 + ldrb r0, [r0] + ldr r1, _08135BF0 @ =gUnknown_8E9B750 + b _08135C10 + .align 2, 0 +_08135BF0: .4byte gUnknown_8E9B750 +_08135BF4: + ldr r0, [r3] + ldr r1, _08135C04 @ =0x00003224 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08135C0C + ldr r1, _08135C08 @ =gUnknown_8463C80 + b _08135C0E + .align 2, 0 +_08135C04: .4byte 0x00003224 +_08135C08: .4byte gUnknown_8463C80 +_08135C0C: + ldr r1, _08135C1C @ =gUnknown_8463B88 +_08135C0E: + movs r0, 0x3 +_08135C10: + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _08135C2C + .align 2, 0 +_08135C1C: .4byte gUnknown_8463B88 +_08135C20: + ldr r1, _08135C30 @ =gUnknown_8463B88 + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 +_08135C2C: + pop {r0} + bx r0 + .align 2, 0 +_08135C30: .4byte gUnknown_8463B88 + thumb_func_end sub_8135B90 + + thumb_func_start sub_8135C34 +sub_8135C34: @ 8135C34 + push {r4,lr} + sub sp, 0x4 + ldr r0, _08135C54 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08135C58 @ =0x00003274 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xF + bls _08135C48 + b _08135EF6 +_08135C48: + lsls r0, 2 + ldr r1, _08135C5C @ =_08135C60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08135C54: .4byte gUnknown_203B140 +_08135C58: .4byte 0x00003274 +_08135C5C: .4byte _08135C60 + .align 2, 0 +_08135C60: + .4byte _08135CA0 + .4byte _08135CA6 + .4byte _08135CAC + .4byte _08135CB2 + .4byte _08135CB8 + .4byte _08135CBE + .4byte _08135CC4 + .4byte _08135CD2 + .4byte _08135CD8 + .4byte _08135CDE + .4byte _08135CE8 + .4byte _08135D30 + .4byte _08135DC4 + .4byte _08135DEC + .4byte _08135E80 + .4byte _08135E9A +_08135CA0: + bl sub_81381AC + b _08135F00 +_08135CA6: + bl sub_8136BC4 + b _08135F00 +_08135CAC: + bl sub_8136BAC + b _08135F00 +_08135CB2: + bl sub_8135F20 + b _08135CC8 +_08135CB8: + bl sub_8136AEC + b _08135CC8 +_08135CBE: + bl sub_81381D0 + b _08135F00 +_08135CC4: + bl sub_8136040 +_08135CC8: + lsls r0, 24 + cmp r0, 0 + bne _08135CD0 + b _08135F0E +_08135CD0: + b _08135F00 +_08135CD2: + bl sub_8136F4C + b _08135F00 +_08135CD8: + bl sub_81374E8 + b _08135F00 +_08135CDE: + bl sub_8137BD0 + bl sub_8138A38 + b _08135F00 +_08135CE8: + ldr r0, _08135D0C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _08135D10 @ =0x00003208 + adds r0, r2 + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08135D18 + ldr r1, _08135D14 @ =gUnknown_8463C80 + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _08135D24 + .align 2, 0 +_08135D0C: .4byte gUnknown_203B140 +_08135D10: .4byte 0x00003208 +_08135D14: .4byte gUnknown_8463C80 +_08135D18: + ldr r1, _08135D2C @ =gUnknown_8463B88 + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 +_08135D24: + bl sub_8138538 + b _08135F00 + .align 2, 0 +_08135D2C: .4byte gUnknown_8463B88 +_08135D30: + ldr r4, _08135D4C @ =gUnknown_203B140 + ldr r1, [r4] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08135D54 + adds r2, 0x3C + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _08135D50 @ =gUnknown_8E9BBCC + b _08135DAC + .align 2, 0 +_08135D4C: .4byte gUnknown_203B140 +_08135D50: .4byte gUnknown_8E9BBCC +_08135D54: + ldr r2, _08135D84 @ =0x00003208 + adds r0, r1, r2 + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08135D90 + adds r2, 0x34 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _08135D88 @ =gUnknown_8E9B950 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r0, [r4] + movs r1, 0xC9 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _08135D8C @ =gUnknown_8E9BA9C + b _08135DAC + .align 2, 0 +_08135D84: .4byte 0x00003208 +_08135D88: .4byte gUnknown_8E9B950 +_08135D8C: .4byte gUnknown_8E9BA9C +_08135D90: + ldr r2, _08135DB8 @ =0x0000323c + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _08135DBC @ =gUnknown_8E9B598 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r0, [r4] + movs r1, 0xC9 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _08135DC0 @ =gUnknown_8E9B750 +_08135DAC: + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _08135F00 + .align 2, 0 +_08135DB8: .4byte 0x0000323c +_08135DBC: .4byte gUnknown_8E9B598 +_08135DC0: .4byte gUnknown_8E9B750 +_08135DC4: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _08135DE4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _08135DE8 @ =0x00003214 + adds r0, r2 + ldrb r0, [r0] + bl sub_8137D28 + bl sub_8137E28 + b _08135F00 + .align 2, 0 +_08135DE4: .4byte gUnknown_203B140 +_08135DE8: .4byte 0x00003214 +_08135DEC: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r4, _08135E64 @ =gUnknown_203B140 + ldr r0, [r4] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08135E68 @ =0x00003001 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08135E6C @ =0x00003002 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08135E70 @ =0x00003006 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08135E74 @ =0x00003003 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08135E78 @ =0x00003004 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08135E7C @ =0x00003005 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + b _08135F00 + .align 2, 0 +_08135E64: .4byte gUnknown_203B140 +_08135E68: .4byte 0x00003001 +_08135E6C: .4byte 0x00003002 +_08135E70: .4byte 0x00003006 +_08135E74: .4byte 0x00003003 +_08135E78: .4byte 0x00003004 +_08135E7C: .4byte 0x00003005 +_08135E80: + movs r0, 0 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _08135F00 +_08135E9A: + ldr r0, _08135EBC @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _08135EC0 @ =0x00003208 + adds r0, r2 + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08135EC4 + movs r0, 0 + bl sub_8139EE4 + movs r0, 0 + bl sub_813A0E8 + b _08135EE2 + .align 2, 0 +_08135EBC: .4byte gUnknown_203B140 +_08135EC0: .4byte 0x00003208 +_08135EC4: + movs r0, 0 + bl sub_8139C44 + movs r0, 0 + bl sub_813B084 + movs r0, 0 + bl sub_8139D54 + movs r0, 0 + bl sub_813A838 + movs r0, 0 + bl sub_813AB70 +_08135EE2: + movs r0, 0 + bl sub_813A3B8 + movs r0, 0 + bl sub_813ACF8 + movs r0, 0 + bl sub_813AEB0 + b _08135F00 +_08135EF6: + bl sub_81381C0 + bl sub_8136D54 + b _08135F0E +_08135F00: + ldr r0, _08135F18 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _08135F1C @ =0x00003274 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08135F0E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08135F18: .4byte gUnknown_203B140 +_08135F1C: .4byte 0x00003274 + thumb_func_end sub_8135C34 + + thumb_func_start sub_8135F20 +sub_8135F20: @ 8135F20 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _08135F3C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08135F40 @ =0x00003278 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x6 + bhi _0813600E + lsls r0, 2 + ldr r1, _08135F44 @ =_08135F48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08135F3C: .4byte gUnknown_203B140 +_08135F40: .4byte 0x00003278 +_08135F44: .4byte _08135F48 + .align 2, 0 +_08135F48: + .4byte _08135F64 + .4byte _08135FCC + .4byte _08135FE4 + .4byte _08135FEA + .4byte _08136000 + .4byte _08136020 + .4byte _08136020 +_08135F64: + ldr r4, _08135FA8 @ =gUnknown_8E9B310 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0xA0 + bl sub_80703EC + ldr r5, _08135FAC @ =gUnknown_203B140 + ldr r0, [r5] + ldr r1, _08135FB0 @ =0x00003290 + adds r0, r1 + bl sub_8044470 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08135FB4 + ldr r0, [r5] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08135FB4 + adds r0, r4, 0 + adds r0, 0xC0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + adds r0, 0xA0 + movs r1, 0x10 + b _08135FD8 + .align 2, 0 +_08135FA8: .4byte gUnknown_8E9B310 +_08135FAC: .4byte gUnknown_203B140 +_08135FB0: .4byte 0x00003290 +_08135FB4: + ldr r4, _08135FC8 @ =gUnknown_8E9B310 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + adds r4, 0x20 + adds r0, r4, 0 + movs r1, 0x10 + b _08135FD8 + .align 2, 0 +_08135FC8: .4byte gUnknown_8E9B310 +_08135FCC: + movs r0, 0x60 + movs r1, 0x1 + bl sub_8107D38 + ldr r0, _08135FE0 @ =gUnknown_84636C0 + movs r1, 0x70 +_08135FD8: + movs r2, 0x20 + bl sub_80703EC + b _08136020 + .align 2, 0 +_08135FE0: .4byte gUnknown_84636C0 +_08135FE4: + bl sub_80F6808 + b _08136020 +_08135FEA: + ldr r1, _08135FFC @ =gUnknown_8E9A460 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _08136020 + .align 2, 0 +_08135FFC: .4byte gUnknown_8E9A460 +_08136000: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08136020 + b _0813602E +_0813600E: + ldr r0, _0813601C @ =gUnknown_8463700 + movs r1, 0x80 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x1 + b _08136030 + .align 2, 0 +_0813601C: .4byte gUnknown_8463700 +_08136020: + ldr r0, _08136038 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _0813603C @ =0x00003278 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0813602E: + movs r0, 0 +_08136030: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08136038: .4byte gUnknown_203B140 +_0813603C: .4byte 0x00003278 + thumb_func_end sub_8135F20 + + thumb_func_start sub_8136040 +sub_8136040: @ 8136040 + push {r4-r6,lr} + ldr r1, _08136060 @ =gUnknown_203B140 + ldr r2, [r1] + movs r6, 0xCA + lsls r6, 6 + adds r0, r2, r6 + ldrb r4, [r0] + adds r5, r1, 0 + cmp r4, 0x1 + beq _08136084 + cmp r4, 0x1 + bgt _08136064 + cmp r4, 0 + beq _0813606A + b _081360A8 + .align 2, 0 +_08136060: .4byte gUnknown_203B140 +_08136064: + cmp r4, 0x2 + beq _08136096 + b _081360A8 +_0813606A: + bl sub_81360D4 + ldr r1, [r5] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _081360B8 + adds r0, r1, r6 + strb r4, [r0] + movs r0, 0x1 + b _081360CA +_08136084: + movs r1, 0xC8 + lsls r1, 6 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _081360B8 + bl sub_8136350 + b _081360B8 +_08136096: + movs r1, 0xC8 + lsls r1, 6 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _081360B8 + bl sub_81367B0 + b _081360B8 +_081360A8: + ldr r0, [r5] + movs r2, 0xCA + lsls r2, 6 + adds r0, r2 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081360CA +_081360B8: + ldr r0, _081360D0 @ =gUnknown_203B140 + ldr r1, [r0] + movs r0, 0xCA + lsls r0, 6 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_081360CA: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081360D0: .4byte gUnknown_203B140 + thumb_func_end sub_8136040 + + thumb_func_start sub_81360D4 +sub_81360D4: @ 81360D4 + push {r4-r7,lr} + sub sp, 0x14 + ldr r5, _08136108 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r1, _0813610C @ =0x00003290 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8043F90 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _08136110 @ =0x0000ffff + cmp r4, r0 + bne _0813611C + ldr r0, [r5] + ldr r2, _08136114 @ =0x00003064 + adds r0, r2 + ldr r1, _08136118 @ =gUnknown_8416202 + bl sub_8008D84 + b _0813612C + .align 2, 0 +_08136108: .4byte gUnknown_203B140 +_0813610C: .4byte 0x00003290 +_08136110: .4byte 0x0000ffff +_08136114: .4byte 0x00003064 +_08136118: .4byte gUnknown_8416202 +_0813611C: + ldr r0, [r5] + ldr r3, _08136154 @ =0x00003064 + adds r0, r3 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_8008E78 +_0813612C: + ldr r0, _08136158 @ =gUnknown_203B144 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1] + ldr r6, _0813615C @ =gUnknown_203B140 + ldr r2, [r6] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08136168 + ldr r3, _08136160 @ =0x00003290 + adds r0, r2, r3 + ldr r1, _08136164 @ =0x00003028 + adds r2, r1 + movs r1, 0x2 + bl sub_803FBE8 + b _08136342 + .align 2, 0 +_08136154: .4byte 0x00003064 +_08136158: .4byte gUnknown_203B144 +_0813615C: .4byte gUnknown_203B140 +_08136160: .4byte 0x00003290 +_08136164: .4byte 0x00003028 +_08136168: + ldr r5, _081361F0 @ =0x00003290 + adds r0, r2, r5 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, [r6] + ldr r2, _081361F4 @ =0x00003028 + adds r0, r2 + adds r1, r4, 0 + bl sub_8040FD0 + ldr r1, [r6] + ldr r2, _081361F8 @ =gUnknown_8254784 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x6] + ldr r3, _081361FC @ =0x00003220 + adds r1, r3 + strb r2, [r1] + ldr r1, [r6] + ldrb r0, [r0, 0x7] + ldr r2, _08136200 @ =0x00003221 + adds r1, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, r5 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, [r6] + ldr r4, _08136204 @ =0x00003034 + adds r0, r4 + mov r1, sp + movs r2, 0xA + bl sub_8009294 + ldr r0, [r6] + adds r0, r4 + bl sub_8008D28 + ldr r0, [r6] + adds r0, r5 + bl sub_803F720 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r6] + adds r0, r5 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r7, 0xFE + bne _08136210 + ldr r0, [r6] + ldr r3, _08136208 @ =0x00003084 + adds r0, r3 + ldr r1, _0813620C @ =gUnknown_8416221 + bl sub_8008D84 + b _08136238 + .align 2, 0 +_081361F0: .4byte 0x00003290 +_081361F4: .4byte 0x00003028 +_081361F8: .4byte gUnknown_8254784 +_081361FC: .4byte 0x00003220 +_08136200: .4byte 0x00003221 +_08136204: .4byte 0x00003034 +_08136208: .4byte 0x00003084 +_0813620C: .4byte gUnknown_8416221 +_08136210: + cmp r7, 0 + bne _0813622C + ldr r0, [r6] + ldr r1, _08136224 @ =0x00003084 + adds r0, r1 + ldr r1, _08136228 @ =gUnknown_841621F + bl sub_8008D84 + b _08136238 + .align 2, 0 +_08136224: .4byte 0x00003084 +_08136228: .4byte gUnknown_841621F +_0813622C: + ldr r0, [r6] + ldr r2, _08136308 @ =0x00003084 + adds r0, r2 + ldr r1, _0813630C @ =gUnknown_84161CD + bl sub_8008D84 +_08136238: + cmp r4, 0x20 + beq _08136240 + cmp r4, 0x1D + bne _08136264 +_08136240: + ldr r5, _08136310 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r3, _08136314 @ =0x00003034 + adds r0, r3 + movs r1, 0xB + muls r1, r4 + ldr r2, _08136318 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008E28 + cmp r0, 0 + bne _08136264 + ldr r0, [r5] + ldr r1, _08136308 @ =0x00003084 + adds r0, r1 + ldr r1, _0813630C @ =gUnknown_84161CD + bl sub_8008D84 +_08136264: + ldr r6, _08136310 @ =gUnknown_203B140 + ldr r0, [r6] + ldr r5, _0813631C @ =0x00003290 + adds r0, r5 + movs r1, 0x7 + mov r2, sp + bl sub_803FBE8 + ldr r0, [r6] + movs r4, 0xC1 + lsls r4, 6 + adds r0, r4 + mov r1, sp + movs r2, 0x7 + bl sub_8009294 + ldr r0, [r6] + adds r4, r0, r4 + adds r0, r5 + movs r1, 0x3 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80093BC + ldr r0, [r6] + adds r0, r5 + movs r1, 0x1 + bl sub_803FBE8 + ldr r1, _08136320 @ =0x0000ffff + ands r1, r0 + ldr r0, [r6] + ldr r2, _08136324 @ =0x0000306c + adds r0, r2 + movs r2, 0x2 + movs r3, 0x5 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r5 + movs r1, 0x38 + bl sub_803FBE8 + adds r1, r0, 0 + mov r0, sp + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + ldr r4, _08136328 @ =0x00003088 + adds r0, r4 + ldr r1, _0813632C @ =gUnknown_8416223 + bl sub_8008D84 + ldr r0, [r6] + adds r0, r4 + mov r1, sp + movs r2, 0x4 + bl sub_8008DEC + ldr r0, [r6] + adds r0, r5 + movs r1, 0xC + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08136338 + ldr r0, [r6] + ldr r3, _08136330 @ =0x00003074 + adds r0, r3 + ldr r1, _08136334 @ =gUnknown_84161EF + bl sub_8008D84 + b _08136342 + .align 2, 0 +_08136308: .4byte 0x00003084 +_0813630C: .4byte gUnknown_84161CD +_08136310: .4byte gUnknown_203B140 +_08136314: .4byte 0x00003034 +_08136318: .4byte gUnknown_8245EE0 +_0813631C: .4byte 0x00003290 +_08136320: .4byte 0x0000ffff +_08136324: .4byte 0x0000306c +_08136328: .4byte 0x00003088 +_0813632C: .4byte gUnknown_8416223 +_08136330: .4byte 0x00003074 +_08136334: .4byte gUnknown_84161EF +_08136338: + ldr r1, [r6] + ldr r2, _0813634C @ =0x00003074 + adds r1, r2 + bl sub_8099E90 +_08136342: + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813634C: .4byte 0x00003074 + thumb_func_end sub_81360D4 + + thumb_func_start sub_8136350 +sub_8136350: @ 8136350 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + ldr r6, _081364F8 @ =gUnknown_203B140 + ldr r0, [r6] + ldr r7, _081364FC @ =0x00003290 + adds r0, r7 + movs r1, 0x39 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [r6] + ldr r4, _08136500 @ =0x00003090 + adds r0, r4 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + ldr r1, _08136504 @ =gUnknown_841620C + bl sub_8008DA4 + ldr r0, [r6] + adds r0, r7 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r0, sp + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + mov r1, sp + bl sub_8008DA4 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + ldr r1, _08136508 @ =gUnknown_203B144 + mov r8, r1 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r0, 0x3F + subs r0, r1 + strh r0, [r2, 0x2] + ldr r2, [r6] + ldr r1, _0813650C @ =0x000032f8 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _08136510 @ =sub_804CF14 + cmp r1, r0 + beq _081363DA + b _08136518 +_081363DA: + ldr r1, _08136514 @ =0x00003024 + adds r0, r2, r1 + ldr r0, [r0] + cmp r0, 0x1 + beq _081363E6 + b _08136518 +_081363E6: + adds r0, r2, r7 + movs r1, 0x54 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r6] + adds r4, 0xC + adds r0, r4 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r5, 0x1B + subs r1, r5, r1 + strh r1, [r2, 0x4] + ldr r0, [r6] + adds r0, r7 + movs r1, 0x55 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r6] + adds r4, 0x5 + adds r0, r4 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r1, r5, r1 + strh r1, [r2, 0x6] + ldr r0, [r6] + adds r0, r7 + movs r1, 0x57 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r6] + adds r4, 0x5 + adds r0, r4 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r1, r5, r1 + strh r1, [r2, 0x8] + ldr r0, [r6] + adds r0, r7 + movs r1, 0x58 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r6] + adds r4, 0x5 + adds r0, r4 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r1, r5, r1 + strh r1, [r2, 0xA] + ldr r0, [r6] + adds r0, r7 + movs r1, 0x56 + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r6] + adds r4, 0x5 + adds r0, r4 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r5, r1 + strh r5, [r2, 0xC] + b _08136630 + .align 2, 0 +_081364F8: .4byte gUnknown_203B140 +_081364FC: .4byte 0x00003290 +_08136500: .4byte 0x00003090 +_08136504: .4byte gUnknown_841620C +_08136508: .4byte gUnknown_203B144 +_0813650C: .4byte 0x000032f8 +_08136510: .4byte sub_804CF14 +_08136514: .4byte 0x00003024 +_08136518: + ldr r4, _0813677C @ =gUnknown_203B140 + ldr r0, [r4] + ldr r2, _08136780 @ =0x00003290 + mov r9, r2 + add r0, r9 + movs r1, 0x3B + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r4] + ldr r5, _08136784 @ =0x0000309c + adds r0, r5 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r4] + adds r0, r5 + bl sub_8008E08 + ldr r1, _08136788 @ =gUnknown_203B144 + mov r8, r1 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r6, 0x1B + subs r1, r6, r1 + strh r1, [r2, 0x4] + ldr r0, [r4] + add r0, r9 + movs r1, 0x3C + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r4] + adds r5, 0x5 + adds r0, r5 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r4] + adds r0, r5 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r1, r6, r1 + strh r1, [r2, 0x6] + ldr r0, [r4] + add r0, r9 + movs r1, 0x3E + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r4] + adds r5, 0x5 + adds r0, r5 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r4] + adds r0, r5 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r1, r6, r1 + strh r1, [r2, 0x8] + ldr r0, [r4] + add r0, r9 + movs r1, 0x3F + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r4] + adds r5, 0x5 + adds r0, r5 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r4] + adds r0, r5 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r1, r6, r1 + strh r1, [r2, 0xA] + ldr r0, [r4] + add r0, r9 + movs r1, 0x3D + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, [r4] + adds r5, 0x5 + adds r0, r5 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r4] + adds r0, r5 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r6, r1 + strh r6, [r2, 0xC] +_08136630: + ldr r6, _0813677C @ =gUnknown_203B140 + ldr r0, [r6] + ldr r2, _08136780 @ =0x00003290 + mov r8, r2 + add r0, r8 + movs r1, 0x19 + bl sub_803FBE8 + adds r7, r0, 0 + ldr r0, [r6] + ldr r4, _0813678C @ =0x000031a4 + adds r0, r4 + adds r1, r7, 0 + movs r2, 0 + movs r3, 0x7 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + ldr r1, _08136788 @ =gUnknown_203B144 + mov r10, r1 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r0, 0x3F + mov r9, r0 + mov r0, r9 + subs r1, r0, r1 + strh r1, [r2, 0xE] + ldr r0, [r6] + add r0, r8 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0 + cmp r5, 0x63 + bhi _081366B8 + ldr r0, [r6] + ldr r1, _08136780 @ =0x00003290 + adds r0, r1 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + ldr r4, _08136790 @ =gUnknown_8253AE4 + adds r2, r5, 0x1 + lsls r2, 2 + ldr r3, _08136794 @ =gUnknown_8254784 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r3 + ldrb r1, [r1, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r0, r1 + adds r2, r0 + adds r2, r4 + ldr r0, [r2] + subs r1, r0, r7 +_081366B8: + ldr r0, [r6] + ldr r4, _08136798 @ =0x000031b0 + adds r0, r4 + movs r2, 0 + movs r3, 0x7 + bl sub_8008E78 + ldr r0, [r6] + adds r0, r4 + bl sub_8008E08 + mov r1, r10 + ldr r2, [r1] + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + mov r0, r9 + subs r1, r0, r1 + strh r1, [r2, 0x10] + ldr r0, [r6] + add r0, r8 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, [r6] + add r0, r8 + movs r1, 0x2E + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8040D38 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, [r6] + ldr r1, _0813679C @ =0x000031bc + adds r0, r1 + movs r1, 0xD + muls r1, r4 + ldr r2, _081367A0 @ =gUnknown_824FC40 + adds r1, r2 + bl sub_8008D84 + ldr r0, [r6] + ldr r2, _081367A4 @ =0x000031cc + adds r0, r2 + ldr r1, _081367A8 @ =gUnknown_824FB08 + lsls r4, 2 + adds r4, r1 + ldr r1, [r4] + bl sub_8008D84 + ldr r0, [r6] + add r0, r8 + movs r1, 0x37 + bl sub_803FBE8 + bl sub_8138C5C + ldr r1, [r6] + ldr r4, _081367AC @ =0x0000326c + adds r1, r4 + strb r0, [r1] + ldr r1, [r6] + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0813676A + mov r2, r8 + adds r0, r1, r2 + movs r1, 0 + bl sub_8043A70 + lsls r0, 24 + cmp r0, 0 + beq _0813676A + ldr r0, [r6] + adds r0, r4 + movs r1, 0x6 + strb r1, [r0] +_0813676A: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813677C: .4byte gUnknown_203B140 +_08136780: .4byte 0x00003290 +_08136784: .4byte 0x0000309c +_08136788: .4byte gUnknown_203B144 +_0813678C: .4byte 0x000031a4 +_08136790: .4byte gUnknown_8253AE4 +_08136794: .4byte gUnknown_8254784 +_08136798: .4byte 0x000031b0 +_0813679C: .4byte 0x000031bc +_081367A0: .4byte gUnknown_824FC40 +_081367A4: .4byte 0x000031cc +_081367A8: .4byte gUnknown_824FB08 +_081367AC: .4byte 0x0000326c + thumb_func_end sub_8136350 + + thumb_func_start sub_81367B0 +sub_81367B0: @ 81367B0 + push {r4,lr} + movs r4, 0 +_081367B4: + adds r0, r4, 0 + bl sub_81367E8 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081367B4 + ldr r0, _081367E0 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _081367E4 @ =0x00003208 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x2 + bne _081367D8 + movs r0, 0x4 + bl sub_81367E8 +_081367D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081367E0: .4byte gUnknown_203B140 +_081367E4: .4byte 0x00003208 + thumb_func_end sub_81367B0 + + thumb_func_start sub_81367E8 +sub_81367E8: @ 81367E8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bhi _08136812 + ldr r4, _08136884 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08136888 @ =0x00003290 + adds r0, r1 + adds r1, r7, 0 + bl sub_8138BEC + ldr r1, [r4] + lsls r2, r7, 1 + ldr r3, _0813688C @ =0x00003258 + adds r1, r3 + adds r1, r2 + strh r0, [r1] +_08136812: + ldr r6, _08136884 @ =gUnknown_203B140 + ldr r2, [r6] + lsls r0, r7, 1 + ldr r4, _0813688C @ =0x00003258 + mov r8, r4 + adds r1, r2, r4 + adds r1, r0 + ldrh r1, [r1] + mov r9, r0 + cmp r1, 0 + bne _081368B0 + movs r0, 0xD + muls r0, r7 + ldr r1, _08136890 @ =0x00003128 + adds r0, r1 + adds r0, r2, r0 + ldr r1, _08136894 @ =gUnknown_841620E + bl sub_8008D84 + movs r0, 0xB + adds r1, r7, 0 + muls r1, r0 + ldr r2, _08136898 @ =0x000030b8 + adds r1, r2 + ldr r0, [r6] + adds r0, r1 + ldr r1, _0813689C @ =gUnknown_8416210 + bl sub_8008D84 + lsls r4, r7, 2 + adds r4, r7 + ldr r3, _081368A0 @ =0x0000316c + adds r1, r4, r3 + ldr r0, [r6] + adds r0, r1 + ldr r5, _081368A4 @ =gUnknown_8416213 + adds r1, r5, 0 + bl sub_8008D84 + ldr r0, _081368A8 @ =0x00003188 + adds r4, r0 + ldr r0, [r6] + adds r0, r4 + adds r1, r5, 0 + bl sub_8008D84 + ldr r0, _081368AC @ =gUnknown_203B144 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x12 + add r0, r9 + movs r2, 0xFF + strh r2, [r0] + adds r1, 0x1C + add r1, r9 + strh r2, [r1] + b _08136ADA + .align 2, 0 +_08136884: .4byte gUnknown_203B140 +_08136888: .4byte 0x00003290 +_0813688C: .4byte 0x00003258 +_08136890: .4byte 0x00003128 +_08136894: .4byte gUnknown_841620E +_08136898: .4byte 0x000030b8 +_0813689C: .4byte gUnknown_8416210 +_081368A0: .4byte 0x0000316c +_081368A4: .4byte gUnknown_8416213 +_081368A8: .4byte 0x00003188 +_081368AC: .4byte gUnknown_203B144 +_081368B0: + ldr r3, _08136948 @ =0x00003264 + adds r1, r2, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r6] + ldr r1, _0813694C @ =0x0000324e + adds r4, r0, r1 + add r4, r9 + ldr r5, _08136950 @ =gUnknown_8250C04 + ldr r2, _08136954 @ =0x00003258 + adds r3, r0, r2 + add r3, r9 + ldrh r2, [r3] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + ldrb r1, [r1, 0x2] + strh r1, [r4] + movs r2, 0xD + adds r1, r7, 0 + muls r1, r2 + ldr r4, _08136958 @ =0x00003128 + adds r1, r4 + adds r0, r1 + ldrh r1, [r3] + muls r1, r2 + ldr r2, _0813695C @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + cmp r7, 0x3 + bls _0813696C + ldr r1, [r6] + ldr r2, _08136960 @ =0x00003208 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0813696C + movs r0, 0xB + adds r4, r7, 0 + muls r4, r0 + ldr r3, _08136964 @ =0x000030b8 + adds r0, r4, r3 + adds r0, r1, r0 + add r1, r8 + add r1, r9 + ldrh r2, [r1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + ldrb r1, [r1, 0x4] + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, _08136968 @ =0x000030f0 + adds r4, r0 + ldr r0, [r6] + adds r4, r0, r4 + add r0, r8 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0, 0x4] + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + b _081369D0 + .align 2, 0 +_08136948: .4byte 0x00003264 +_0813694C: .4byte 0x0000324e +_08136950: .4byte gUnknown_8250C04 +_08136954: .4byte 0x00003258 +_08136958: .4byte 0x00003128 +_0813695C: .4byte gUnknown_8247094 +_08136960: .4byte 0x00003208 +_08136964: .4byte 0x000030b8 +_08136968: .4byte 0x000030f0 +_0813696C: + ldr r1, _08136A4C @ =gUnknown_203B140 + mov r8, r1 + movs r0, 0xB + adds r5, r7, 0 + muls r5, r0 + ldr r2, _08136A50 @ =0x000030b8 + adds r4, r5, r2 + ldr r0, [r1] + adds r4, r0, r4 + ldr r6, _08136A54 @ =0x00003290 + adds r0, r6 + adds r1, r7, 0 + bl sub_8138C24 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r3, _08136A58 @ =0x000030f0 + adds r5, r3 + mov r4, r8 + ldr r0, [r4] + adds r5, r0, r5 + ldr r2, _08136A5C @ =0x00003258 + adds r1, r0, r2 + add r1, r9 + ldrh r4, [r1] + adds r0, r6 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + adds r2, r7, 0 + bl sub_804101C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 +_081369D0: + ldr r6, _08136A4C @ =gUnknown_203B140 + movs r0, 0xB + adds r5, r7, 0 + muls r5, r0 + ldr r3, _08136A50 @ =0x000030b8 + adds r1, r5, r3 + ldr r0, [r6] + adds r0, r1 + bl sub_8008E08 + ldr r4, _08136A60 @ =gUnknown_203B144 + mov r8, r4 + ldr r2, [r4] + adds r2, 0x12 + add r2, r9 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r4, 0xC + subs r1, r4, r1 + strh r1, [r2] + ldr r0, _08136A58 @ =0x000030f0 + adds r5, r0 + ldr r0, [r6] + adds r0, r5 + bl sub_8008E08 + mov r1, r8 + ldr r2, [r1] + adds r2, 0x1C + add r2, r9 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + subs r4, r1 + strh r4, [r2] + ldr r2, _08136A64 @ =gUnknown_8250C04 + ldr r6, [r6] + ldr r3, _08136A5C @ =0x00003258 + adds r0, r6, r3 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1, 0x1] + cmp r0, 0x1 + bhi _08136A70 + lsls r4, r7, 2 + adds r0, r4, r7 + ldr r1, _08136A68 @ =0x0000316c + adds r0, r1 + adds r0, r6, r0 + ldr r1, _08136A6C @ =gUnknown_8416213 + bl sub_8008D84 + b _08136A84 + .align 2, 0 +_08136A4C: .4byte gUnknown_203B140 +_08136A50: .4byte 0x000030b8 +_08136A54: .4byte 0x00003290 +_08136A58: .4byte 0x000030f0 +_08136A5C: .4byte 0x00003258 +_08136A60: .4byte gUnknown_203B144 +_08136A64: .4byte gUnknown_8250C04 +_08136A68: .4byte 0x0000316c +_08136A6C: .4byte gUnknown_8416213 +_08136A70: + lsls r4, r7, 2 + adds r0, r4, r7 + ldr r2, _08136AB0 @ =0x0000316c + adds r0, r2 + adds r0, r6, r0 + ldrb r1, [r1, 0x1] + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 +_08136A84: + ldr r2, _08136AB4 @ =gUnknown_8250C04 + ldr r0, _08136AB8 @ =gUnknown_203B140 + ldr r3, [r0] + ldr r1, _08136ABC @ =0x00003258 + adds r0, r3, r1 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1, 0x3] + cmp r0, 0 + bne _08136AC8 + adds r0, r4, r7 + ldr r2, _08136AC0 @ =0x00003188 + adds r0, r2 + adds r0, r3, r0 + ldr r1, _08136AC4 @ =gUnknown_8416213 + bl sub_8008D84 + b _08136ADA + .align 2, 0 +_08136AB0: .4byte 0x0000316c +_08136AB4: .4byte gUnknown_8250C04 +_08136AB8: .4byte gUnknown_203B140 +_08136ABC: .4byte 0x00003258 +_08136AC0: .4byte 0x00003188 +_08136AC4: .4byte gUnknown_8416213 +_08136AC8: + adds r0, r4, r7 + ldr r4, _08136AE8 @ =0x00003188 + adds r0, r4 + adds r0, r3, r0 + ldrb r1, [r1, 0x3] + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 +_08136ADA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08136AE8: .4byte 0x00003188 + thumb_func_end sub_81367E8 + + thumb_func_start sub_8136AEC +sub_8136AEC: @ 8136AEC + push {lr} + ldr r0, _08136B08 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08136B0C @ =0x0000327c + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x8 + bhi _08136B86 + lsls r0, 2 + ldr r1, _08136B10 @ =_08136B14 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08136B08: .4byte gUnknown_203B140 +_08136B0C: .4byte 0x0000327c +_08136B10: .4byte _08136B14 + .align 2, 0 +_08136B14: + .4byte _08136B38 + .4byte _08136B42 + .4byte _08136B4C + .4byte _08136B52 + .4byte _08136B5C + .4byte _08136B66 + .4byte _08136B70 + .4byte _08136B7A + .4byte _08136B80 +_08136B38: + movs r0, 0xA0 + movs r1, 0xA0 + bl sub_813ADA8 + b _08136B8E +_08136B42: + movs r0, 0x96 + movs r1, 0x96 + bl sub_813ABAC + b _08136B8E +_08136B4C: + bl sub_813AFFC + b _08136B8E +_08136B52: + movs r0, 0x64 + movs r1, 0x64 + bl sub_8139F64 + b _08136B8E +_08136B5C: + movs r0, 0x6E + movs r1, 0x6E + bl sub_813A254 + b _08136B8E +_08136B66: + movs r0, 0x78 + movs r1, 0x78 + bl sub_813A45C + b _08136B8E +_08136B70: + movs r0, 0x82 + movs r1, 0x82 + bl sub_813A874 + b _08136B8E +_08136B7A: + bl sub_8139CB0 + b _08136B8E +_08136B80: + bl sub_8139DBC + b _08136B8E +_08136B86: + bl sub_813995C + movs r0, 0x1 + b _08136B9E +_08136B8E: + ldr r0, _08136BA4 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _08136BA8 @ =0x0000327c + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_08136B9E: + pop {r1} + bx r1 + .align 2, 0 +_08136BA4: .4byte gUnknown_203B140 +_08136BA8: .4byte 0x0000327c + thumb_func_end sub_8136AEC + + thumb_func_start sub_8136BAC +sub_8136BAC: @ 8136BAC + push {lr} + bl sub_8006B10 + bl sub_8070528 + bl sub_80088F0 + bl sub_8087E64 + pop {r0} + bx r0 + thumb_func_end sub_8136BAC + + thumb_func_start sub_8136BC4 +sub_8136BC4: @ 8136BC4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _08136D38 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _08136D3C @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_08136BEA: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _08136BEA + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _08136D38 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _08136D40 @ =gUnknown_8463EFC + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + bl sub_8002C28 + ldr r1, _08136D44 @ =0x00005040 + movs r0, 0 + bl sub_8000A38 + ldr r4, _08136D48 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r2, _08136D4C @ =0x00003214 + adds r0, r2 + ldrb r0, [r0] + bl sub_813B750 + movs r1, 0xF8 + lsls r1, 5 + movs r0, 0x48 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0xF + bl sub_8000A38 + ldr r1, _08136D50 @ =0x00002087 + movs r0, 0x46 + bl sub_8000A38 + movs r1, 0xBC + lsls r1, 2 + movs r0, 0x42 + bl sub_8000A38 + ldr r1, [r4] + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + movs r0, 0x80 + lsls r0, 5 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 6 + adds r1, r2 + movs r0, 0x3 + bl sub_8001FA0 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08136D38: .4byte 0x040000d4 +_08136D3C: .4byte 0x81000800 +_08136D40: .4byte gUnknown_8463EFC +_08136D44: .4byte 0x00005040 +_08136D48: .4byte gUnknown_203B140 +_08136D4C: .4byte 0x00003214 +_08136D50: .4byte 0x00002087 + thumb_func_end sub_8136BC4 + + thumb_func_start sub_8136D54 +sub_8136D54: @ 8136D54 + push {r4,lr} + ldr r4, _08136D70 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08136D74 @ =0x00003208 + adds r0, r1 + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08136D7C + ldr r0, _08136D78 @ =sub_81393D4 + b _08136D7E + .align 2, 0 +_08136D70: .4byte gUnknown_203B140 +_08136D74: .4byte 0x00003208 +_08136D78: .4byte sub_81393D4 +_08136D7C: + ldr r0, _08136D98 @ =sub_8134840 +_08136D7E: + movs r1, 0 + bl sub_807741C + ldr r1, [r4] + ldr r2, _08136D9C @ =0x00003018 + adds r1, r2 + strb r0, [r1] + ldr r0, _08136DA0 @ =sub_8137EE8 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08136D98: .4byte sub_8134840 +_08136D9C: .4byte 0x00003018 +_08136DA0: .4byte sub_8137EE8 + thumb_func_end sub_8136D54 + + thumb_func_start sub_8136DA4 +sub_8136DA4: @ 8136DA4 + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + ldr r5, _08136DE8 @ =gUnknown_203B140 + ldr r0, [r5] + movs r4, 0xC0 + lsls r4, 6 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + ldr r1, _08136DEC @ =gUnknown_8463FA7 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + str r6, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0x1 + bl sub_812E51C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08136DE8: .4byte gUnknown_203B140 +_08136DEC: .4byte gUnknown_8463FA7 + thumb_func_end sub_8136DA4 + + thumb_func_start sub_8136DF0 +sub_8136DF0: @ 8136DF0 + push {r4-r6,lr} + sub sp, 0xC + adds r6, r0, 0 + ldr r5, _08136E44 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r4, _08136E48 @ =0x00003001 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8005ED4 + ldr r1, [r5] + adds r1, r4 + ldrb r1, [r1] + movs r2, 0x54 + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _08136E4C @ =gUnknown_8463FA7 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0 + movs r3, 0 + bl sub_812E51C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003FA0 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08136E44: .4byte gUnknown_203B140 +_08136E48: .4byte 0x00003001 +_08136E4C: .4byte gUnknown_8463FA7 + thumb_func_end sub_8136DF0 + + thumb_func_start sub_8136E50 +sub_8136E50: @ 8136E50 + push {r4-r7,lr} + sub sp, 0xC + ldr r6, _08136EEC @ =gUnknown_203B140 + ldr r0, [r6] + ldr r7, _08136EF0 @ =0x00003002 + adds r0, r7 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r2, [r6] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r2, r1 + ldrb r5, [r0] + cmp r5, 0 + bne _08136F28 + ldr r3, _08136EF4 @ =0x00003214 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08136E9A + adds r0, r2, r7 + ldrb r0, [r0] + ldr r1, _08136EF8 @ =gUnknown_8463FA7 + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + ldr r3, _08136EFC @ =0x00003088 + adds r1, r2, r3 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0x2 + bl sub_812E51C +_08136E9A: + ldr r2, [r6] + adds r0, r2, r7 + ldrb r0, [r0] + ldr r4, _08136EF8 @ =gUnknown_8463FA7 + str r4, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + ldr r1, _08136F00 @ =0x00003034 + adds r2, r1 + str r2, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x28 + movs r3, 0x2 + bl sub_812E51C + ldr r0, [r6] + ldr r3, _08136F04 @ =0x00003290 + adds r0, r3 + bl sub_803F720 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFE + bne _08136F0C + ldr r2, [r6] + adds r0, r2, r7 + ldrb r0, [r0] + adds r1, r4, 0x6 + str r1, [sp] + str r5, [sp, 0x4] + ldr r1, _08136F08 @ =0x00003084 + adds r2, r1 + str r2, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x69 + movs r3, 0x2 + bl sub_812E51C + b _08136F28 + .align 2, 0 +_08136EEC: .4byte gUnknown_203B140 +_08136EF0: .4byte 0x00003002 +_08136EF4: .4byte 0x00003214 +_08136EF8: .4byte gUnknown_8463FA7 +_08136EFC: .4byte 0x00003088 +_08136F00: .4byte 0x00003034 +_08136F04: .4byte 0x00003290 +_08136F08: .4byte 0x00003084 +_08136F0C: + ldr r2, [r6] + adds r0, r2, r7 + ldrb r0, [r0] + adds r1, r4, 0x3 + str r1, [sp] + str r5, [sp, 0x4] + ldr r3, _08136F40 @ =0x00003084 + adds r2, r3 + str r2, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x69 + movs r3, 0x2 + bl sub_812E51C +_08136F28: + ldr r0, _08136F44 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08136F48 @ =0x00003002 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08136F40: .4byte 0x00003084 +_08136F44: .4byte gUnknown_203B140 +_08136F48: .4byte 0x00003002 + thumb_func_end sub_8136E50 + + thumb_func_start sub_8136F4C +sub_8136F4C: @ 8136F4C + push {r4,lr} + ldr r4, _08136F74 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08136F78 @ =0x00003003 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r4] + ldr r1, _08136F7C @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08136F90 + cmp r0, 0x1 + bgt _08136F80 + cmp r0, 0 + beq _08136F8A + b _08136F94 + .align 2, 0 +_08136F74: .4byte gUnknown_203B140 +_08136F78: .4byte 0x00003003 +_08136F7C: .4byte 0x00003214 +_08136F80: + cmp r0, 0x3 + bgt _08136F94 + bl sub_8137270 + b _08136F94 +_08136F8A: + bl sub_8136FB0 + b _08136F94 +_08136F90: + bl sub_81370EC +_08136F94: + ldr r0, _08136FA8 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08136FAC @ =0x00003003 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08136FA8: .4byte gUnknown_203B140 +_08136FAC: .4byte 0x00003003 + thumb_func_end sub_8136F4C + + thumb_func_start sub_8136FB0 +sub_8136FB0: @ 8136FB0 + push {r4-r7,lr} + sub sp, 0xC + ldr r6, _08137060 @ =gUnknown_203B140 + ldr r1, [r6] + ldr r2, _08137064 @ =0x00003003 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r5, _08137068 @ =gUnknown_8463FA4 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r7, _0813706C @ =0x00003028 + adds r1, r7 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2F + movs r3, 0x13 + bl sub_812E51C + ldr r3, [r6] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08137074 + ldr r2, _08137064 @ =0x00003003 + adds r0, r3, r2 + ldrb r0, [r0] + ldr r1, _08137070 @ =gUnknown_203B144 + ldr r1, [r1] + ldrb r2, [r1] + adds r2, 0x2F + lsls r2, 24 + lsrs r2, 24 + str r5, [sp] + str r4, [sp, 0x4] + adds r7, 0x3C + adds r1, r3, r7 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x5 + bl sub_812E51C + ldr r1, [r6] + ldr r2, _08137064 @ =0x00003003 + adds r0, r1, r2 + ldrb r0, [r0] + str r5, [sp] + str r4, [sp, 0x4] + subs r7, 0x24 + adds r1, r7 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2F + movs r3, 0x31 + bl sub_812E51C + ldr r1, [r6] + ldr r2, _08137064 @ =0x00003003 + adds r0, r1, r2 + ldrb r0, [r0] + str r5, [sp] + str r4, [sp, 0x4] + adds r7, 0x2C + adds r1, r7 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2F + movs r3, 0x40 + bl sub_812E51C + ldr r1, [r6] + ldr r2, _08137064 @ =0x00003003 + adds r0, r1, r2 + ldrb r0, [r0] + str r5, [sp] + str r4, [sp, 0x4] + adds r7, 0x8 + adds r1, r7 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2F + movs r3, 0x4F + bl sub_812E51C + b _081370CA + .align 2, 0 +_08137060: .4byte gUnknown_203B140 +_08137064: .4byte 0x00003003 +_08137068: .4byte gUnknown_8463FA4 +_0813706C: .4byte 0x00003028 +_08137070: .4byte gUnknown_203B144 +_08137074: + ldr r1, _081370D4 @ =0x00003290 + adds r0, r3, r1 + movs r1, 0x20 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + movs r3, 0x3 + cmp r0, 0x5 + bls _08137096 + movs r3, 0x2 + cmp r0, 0xA + bls _08137096 + movs r3, 0 + cmp r0, 0x28 + bhi _08137096 + movs r3, 0x1 +_08137096: + ldr r0, _081370D8 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _081370DC @ =0x00003204 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _081370A6 + movs r3, 0 +_081370A6: + ldr r7, _081370E0 @ =0x00003003 + adds r0, r1, r7 + ldrb r0, [r0] + ldr r1, _081370E4 @ =gUnknown_8463FA4 + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + ldr r2, _081370E8 @ =gUnknown_8463EC4 + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x7 + movs r3, 0x2D + bl sub_812E51C +_081370CA: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081370D4: .4byte 0x00003290 +_081370D8: .4byte gUnknown_203B140 +_081370DC: .4byte 0x00003204 +_081370E0: .4byte 0x00003003 +_081370E4: .4byte gUnknown_8463FA4 +_081370E8: .4byte gUnknown_8463EC4 + thumb_func_end sub_8136FB0 + + thumb_func_start sub_81370EC +sub_81370EC: @ 81370EC + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0xC + ldr r0, _08137240 @ =gUnknown_203B140 + mov r9, r0 + ldr r3, [r0] + ldr r4, _08137244 @ =0x00003003 + adds r0, r3, r4 + ldrb r0, [r0] + ldr r1, _08137248 @ =gUnknown_203B144 + mov r8, r1 + ldr r1, [r1] + ldrb r2, [r1, 0x2] + adds r2, 0xE + lsls r2, 24 + lsrs r2, 24 + ldr r6, _0813724C @ =gUnknown_8463FA4 + str r6, [sp] + movs r5, 0x1 + negs r5, r5 + str r5, [sp, 0x4] + ldr r1, _08137250 @ =0x00003090 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x4 + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r0, r3, r4 + ldrb r0, [r0] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0x4] + adds r2, 0x32 + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _08137254 @ =0x0000309c + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x16 + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r0, r3, r4 + ldrb r0, [r0] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0x6] + adds r2, 0x32 + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _08137258 @ =0x000030a1 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x23 + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r0, r3, r4 + ldrb r0, [r0] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0x8] + adds r2, 0x32 + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _0813725C @ =0x000030a6 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x30 + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r0, r3, r4 + ldrb r0, [r0] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0xA] + adds r2, 0x32 + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _08137260 @ =0x000030ab + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x3D + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r0, r3, r4 + ldrb r0, [r0] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0xC] + adds r2, 0x32 + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _08137264 @ =0x000030b0 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x4A + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r0, r3, r4 + ldrb r0, [r0] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0xE] + adds r2, 0xF + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _08137268 @ =0x000031a4 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x57 + bl sub_812E51C + mov r2, r9 + ldr r3, [r2] + adds r4, r3, r4 + ldrb r0, [r4] + mov r2, r8 + ldr r1, [r2] + ldrb r2, [r1, 0x10] + adds r2, 0xF + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r5, [sp, 0x4] + ldr r1, _0813726C @ =0x000031b0 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x64 + bl sub_812E51C + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08137240: .4byte gUnknown_203B140 +_08137244: .4byte 0x00003003 +_08137248: .4byte gUnknown_203B144 +_0813724C: .4byte gUnknown_8463FA4 +_08137250: .4byte 0x00003090 +_08137254: .4byte 0x0000309c +_08137258: .4byte 0x000030a1 +_0813725C: .4byte 0x000030a6 +_08137260: .4byte 0x000030ab +_08137264: .4byte 0x000030b0 +_08137268: .4byte 0x000031a4 +_0813726C: .4byte 0x000031b0 + thumb_func_end sub_81370EC + + thumb_func_start sub_8137270 +sub_8137270: @ 8137270 + push {r4,lr} + sub sp, 0xC + movs r4, 0 +_08137276: + adds r0, r4, 0 + bl sub_81372E4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08137276 + ldr r0, _081372A8 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _081372AC @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x3 + bne _081372CE + subs r2, 0xC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + bne _081372B0 + movs r0, 0x4 + bl sub_81372E4 + b _081372CE + .align 2, 0 +_081372A8: .4byte gUnknown_203B140 +_081372AC: .4byte 0x00003214 +_081372B0: + ldr r2, _081372D8 @ =0x00003003 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _081372DC @ =gUnknown_8463EF0 + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + ldr r1, _081372E0 @ =gUnknown_84161C1 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0x75 + bl sub_812E51C +_081372CE: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081372D8: .4byte 0x00003003 +_081372DC: .4byte gUnknown_8463EF0 +_081372E0: .4byte gUnknown_84161C1 + thumb_func_end sub_8137270 + + thumb_func_start sub_81372E4 +sub_81372E4: @ 81372E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0 + mov r9, r0 + ldr r1, _0813739C @ =gUnknown_203B140 + mov r10, r1 + ldr r0, [r1] + ldr r5, _081373A0 @ =0x00003290 + adds r0, r5 + adds r1, r7, 0 + bl sub_8138C24 + lsls r0, 24 + lsrs r6, r0, 24 + mov r2, r10 + ldr r0, [r2] + lsls r3, r7, 1 + str r3, [sp, 0xC] + ldr r2, _081373A4 @ =0x00003258 + adds r1, r0, r2 + adds r1, r3 + ldrh r4, [r1] + adds r0, r5 + movs r1, 0x15 + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + adds r2, r7, 0 + bl sub_804101C + lsls r0, 24 + mov r8, r0 + lsrs r5, r0, 24 + cmp r7, 0x4 + bne _0813733E + adds r6, r5, 0 +_0813733E: + mov r3, r10 + ldr r2, [r3] + ldr r1, _081373A8 @ =0x00003003 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r4, r7, 3 + subs r3, r4, r7 + lsls r3, 26 + movs r1, 0xA0 + lsls r1, 19 + adds r3, r1 + lsrs r3, 24 + mov r12, r3 + ldr r1, _081373AC @ =gUnknown_8463EF0 + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + movs r1, 0xD + muls r1, r7 + ldr r3, _081373B0 @ =0x00003128 + adds r1, r3 + adds r2, r1 + str r2, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x3 + mov r3, r12 + bl sub_812E51C + mov r1, r10 + ldr r0, [r1] + ldr r2, _081373A4 @ =0x00003258 + adds r0, r2 + ldr r3, [sp, 0xC] + adds r0, r3 + ldrh r0, [r0] + adds r1, r4, 0 + cmp r0, 0 + beq _081373EA + cmp r6, r5 + beq _081373EA + cmp r6, 0 + bne _081373B4 + movs r5, 0x3 + mov r9, r5 + b _081373EA + .align 2, 0 +_0813739C: .4byte gUnknown_203B140 +_081373A0: .4byte 0x00003290 +_081373A4: .4byte 0x00003258 +_081373A8: .4byte 0x00003003 +_081373AC: .4byte gUnknown_8463EF0 +_081373B0: .4byte 0x00003128 +_081373B4: + cmp r5, 0x3 + bne _081373C6 + cmp r6, 0x2 + beq _081373D8 + cmp r6, 0x1 + bne _081373EA + movs r2, 0x1 + mov r9, r2 + b _081373EA +_081373C6: + cmp r5, 0x2 + bne _081373D0 + cmp r6, 0x1 + bne _081373EA + b _081373E6 +_081373D0: + mov r5, r8 + lsrs r0, r5, 26 + cmp r6, r0 + bhi _081373DE +_081373D8: + movs r0, 0x2 + mov r9, r0 + b _081373EA +_081373DE: + mov r2, r8 + lsrs r0, r2, 25 + cmp r6, r0 + bhi _081373EA +_081373E6: + movs r3, 0x1 + mov r9, r3 +_081373EA: + ldr r5, _081374C4 @ =gUnknown_203B140 + mov r10, r5 + ldr r0, [r5] + ldr r4, _081374C8 @ =0x00003003 + adds r0, r4 + ldrb r0, [r0] + subs r1, r7 + lsls r1, 26 + movs r2, 0x80 + lsls r2, 21 + adds r1, r2 + lsrs r1, 24 + mov r8, r1 + mov r3, r9 + lsls r1, r3, 1 + add r1, r9 + ldr r2, _081374CC @ =gUnknown_8463EF0 + adds r6, r1, r2 + str r6, [sp] + movs r5, 0x1 + negs r5, r5 + mov r9, r5 + str r5, [sp, 0x4] + ldr r1, _081374D0 @ =gUnknown_8416238 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x24 + mov r3, r8 + bl sub_812E51C + mov r0, r10 + ldr r3, [r0] + adds r4, r3, r4 + ldrb r0, [r4] + ldr r2, _081374D4 @ =gUnknown_203B144 + ldr r1, [r2] + lsls r5, r7, 1 + adds r1, 0x12 + adds r1, r5 + ldrb r2, [r1] + adds r2, 0x2E + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + mov r1, r9 + str r1, [sp, 0x4] + movs r1, 0xB + adds r4, r7, 0 + muls r4, r1 + ldr r7, _081374D8 @ =0x000030b8 + adds r1, r4, r7 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + mov r3, r8 + bl sub_812E51C + mov r0, r10 + ldr r1, [r0] + ldr r2, _081374DC @ =0x00003258 + adds r0, r1, r2 + adds r0, r5 + ldrh r0, [r0] + cmp r0, 0 + beq _081374B4 + ldr r3, _081374C8 @ =0x00003003 + adds r0, r1, r3 + ldrb r0, [r0] + str r6, [sp] + mov r7, r9 + str r7, [sp, 0x4] + ldr r1, _081374E0 @ =gUnknown_841620C + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x3A + mov r3, r8 + bl sub_812E51C + mov r0, r10 + ldr r3, [r0] + ldr r1, _081374C8 @ =0x00003003 + adds r0, r3, r1 + ldrb r0, [r0] + ldr r2, _081374D4 @ =gUnknown_203B144 + ldr r1, [r2] + adds r1, 0x1C + adds r1, r5 + ldrb r2, [r1] + adds r2, 0x40 + lsls r2, 24 + lsrs r2, 24 + str r6, [sp] + str r7, [sp, 0x4] + ldr r5, _081374E4 @ =0x000030f0 + adds r1, r4, r5 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + mov r3, r8 + bl sub_812E51C +_081374B4: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081374C4: .4byte gUnknown_203B140 +_081374C8: .4byte 0x00003003 +_081374CC: .4byte gUnknown_8463EF0 +_081374D0: .4byte gUnknown_8416238 +_081374D4: .4byte gUnknown_203B144 +_081374D8: .4byte 0x000030b8 +_081374DC: .4byte 0x00003258 +_081374E0: .4byte gUnknown_841620C +_081374E4: .4byte 0x000030f0 + thumb_func_end sub_81372E4 + + thumb_func_start sub_81374E8 +sub_81374E8: @ 81374E8 + push {r4,lr} + ldr r4, _08137510 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08137514 @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r4] + ldr r1, _08137518 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0813752C + cmp r0, 0x1 + bgt _0813751C + cmp r0, 0 + beq _08137526 + b _08137536 + .align 2, 0 +_08137510: .4byte gUnknown_203B140 +_08137514: .4byte 0x00003004 +_08137518: .4byte 0x00003214 +_0813751C: + cmp r0, 0x2 + beq _08137536 + cmp r0, 0x3 + beq _08137532 + b _08137536 +_08137526: + bl sub_8137554 + b _08137536 +_0813752C: + bl sub_8137A90 + b _08137536 +_08137532: + bl sub_8137AF8 +_08137536: + ldr r0, _0813754C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137550 @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813754C: .4byte gUnknown_203B140 +_08137550: .4byte 0x00003004 + thumb_func_end sub_81374E8 + + thumb_func_start sub_8137554 +sub_8137554: @ 8137554 + push {lr} + ldr r0, _0813756C @ =gUnknown_203B140 + ldr r0, [r0] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08137570 + bl sub_8137944 + b _08137574 + .align 2, 0 +_0813756C: .4byte gUnknown_203B140 +_08137570: + bl sub_8137970 +_08137574: + pop {r0} + bx r0 + thumb_func_end sub_8137554 + + thumb_func_start sub_8137578 +sub_8137578: @ 8137578 + push {r4-r7,lr} + sub sp, 0xD4 + bl sub_813CC90 + ldr r7, _081375E8 @ =gUnknown_203B140 + ldr r0, [r7] + ldr r4, _081375EC @ =0x00003290 + adds r0, r4 + bl sub_8042E9C + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _081375F0 @ =gUnknown_8463E60 + lsls r0, r6, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + ldr r0, [r7] + adds r0, r4 + movs r1, 0x24 + bl sub_803FBE8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _081375B2 + movs r1, 0x5 +_081375B2: + add r0, sp, 0x14 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x1 + add r1, sp, 0x14 + bl sub_813CCAC + ldr r0, [r7] + adds r0, r4 + movs r1, 0x23 + bl sub_803FBE8 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_813B838 + cmp r0, 0x1 + bne _081375F4 + add r4, sp, 0x1C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80C4E08 + b _08137626 + .align 2, 0 +_081375E8: .4byte gUnknown_203B140 +_081375EC: .4byte 0x00003290 +_081375F0: .4byte gUnknown_8463E60 +_081375F4: + ldr r0, [r7] + ldr r1, _08137614 @ =0x00003024 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + beq _08137608 + bl sub_8138B4C + cmp r0, 0x1 + bne _0813761C +_08137608: + add r4, sp, 0x1C + ldr r1, _08137618 @ =gUnknown_8419C13 + adds r0, r4, 0 + bl sub_8008D84 + b _08137626 + .align 2, 0 +_08137614: .4byte 0x00003024 +_08137618: .4byte gUnknown_8419C13 +_0813761C: + add r4, sp, 0x1C + ldr r1, _08137660 @ =gUnknown_8419C0B + adds r0, r4, 0 + bl sub_8008D84 +_08137626: + adds r1, r4, 0 + movs r0, 0x2 + bl sub_813CCAC + ldr r4, _08137664 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08137668 @ =0x00003290 + adds r0, r1 + movs r1, 0x24 + bl sub_803FBE8 + cmp r0, 0 + bne _0813769C + ldr r0, [r4] + ldr r1, _08137668 @ =0x00003290 + adds r0, r1 + movs r1, 0x50 + bl sub_803FBE8 + cmp r0, 0x1 + bne _0813767C + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _08137670 + add r4, sp, 0x3C + ldr r1, _0813766C @ =gUnknown_841996D + b _081376CE + .align 2, 0 +_08137660: .4byte gUnknown_8419C0B +_08137664: .4byte gUnknown_203B140 +_08137668: .4byte 0x00003290 +_0813766C: .4byte gUnknown_841996D +_08137670: + add r4, sp, 0x3C + ldr r1, _08137678 @ =gUnknown_841992F + b _081376CE + .align 2, 0 +_08137678: .4byte gUnknown_841992F +_0813767C: + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _08137690 + add r4, sp, 0x3C + ldr r1, _0813768C @ =gUnknown_84198D5 + b _081376CE + .align 2, 0 +_0813768C: .4byte gUnknown_84198D5 +_08137690: + add r4, sp, 0x3C + ldr r1, _08137698 @ =gUnknown_84198B4 + b _081376CE + .align 2, 0 +_08137698: .4byte gUnknown_84198B4 +_0813769C: + cmp r5, 0xFF + bne _081376C0 + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _081376B4 + add r4, sp, 0x3C + ldr r1, _081376B0 @ =gUnknown_84197ED + b _081376CE + .align 2, 0 +_081376B0: .4byte gUnknown_84197ED +_081376B4: + add r4, sp, 0x3C + ldr r1, _081376BC @ =gUnknown_84197B8 + b _081376CE + .align 2, 0 +_081376BC: .4byte gUnknown_84197B8 +_081376C0: + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _081376DC + add r4, sp, 0x3C + ldr r1, _081376D8 @ =gUnknown_8419841 +_081376CE: + adds r0, r4, 0 + bl sub_813CCC8 + b _081376E6 + .align 2, 0 +_081376D8: .4byte gUnknown_8419841 +_081376DC: + add r4, sp, 0x3C + ldr r1, _08137714 @ =gUnknown_8419822 + adds r0, r4, 0 + bl sub_813CCC8 +_081376E6: + ldr r0, _08137718 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813771C @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _08137720 @ =gUnknown_8463FA4 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + str r4, [sp, 0x10] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x3 + bl sub_812E5A4 + add sp, 0xD4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08137714: .4byte gUnknown_8419822 +_08137718: .4byte gUnknown_203B140 +_0813771C: .4byte 0x00003004 +_08137720: .4byte gUnknown_8463FA4 + thumb_func_end sub_8137578 + + thumb_func_start sub_8137724 +sub_8137724: @ 8137724 + push {r4-r6,lr} + sub sp, 0xD4 + bl sub_813CC90 + ldr r5, _081377A0 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r4, _081377A4 @ =0x00003290 + adds r0, r4 + bl sub_8042E9C + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _081377A8 @ =gUnknown_8463E60 + lsls r0, r6, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + ldr r0, [r5] + adds r0, r4 + movs r1, 0x24 + bl sub_803FBE8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0813775E + movs r1, 0x5 +_0813775E: + add r0, sp, 0x14 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x1 + add r1, sp, 0x14 + bl sub_813CCAC + ldr r0, [r5] + adds r0, r4 + movs r1, 0x23 + bl sub_803FBE8 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_813B838 + cmp r0, 0 + beq _08137790 + bl sub_813B7F8 + cmp r0, 0 + bne _08137830 +_08137790: + bl sub_8138B4C + cmp r0, 0x1 + bne _081377AC + bl sub_8137578 + b _0813792C + .align 2, 0 +_081377A0: .4byte gUnknown_203B140 +_081377A4: .4byte 0x00003290 +_081377A8: .4byte gUnknown_8463E60 +_081377AC: + cmp r5, 0xFF + bne _081377D0 + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _081377C4 + add r4, sp, 0x3C + ldr r1, _081377C0 @ =gUnknown_84197ED + b _081377DE + .align 2, 0 +_081377C0: .4byte gUnknown_84197ED +_081377C4: + add r4, sp, 0x3C + ldr r1, _081377CC @ =gUnknown_84197B8 + b _081377DE + .align 2, 0 +_081377CC: .4byte gUnknown_84197B8 +_081377D0: + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _081377EC + add r4, sp, 0x3C + ldr r1, _081377E8 @ =gUnknown_841979D +_081377DE: + adds r0, r4, 0 + bl sub_813CCC8 + b _081377F6 + .align 2, 0 +_081377E8: .4byte gUnknown_841979D +_081377EC: + add r4, sp, 0x3C + ldr r1, _08137820 @ =gUnknown_8419782 + adds r0, r4, 0 + bl sub_813CCC8 +_081377F6: + ldr r0, _08137824 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137828 @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _0813782C @ =gUnknown_8463FA4 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + str r4, [sp, 0x10] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x3 + bl sub_812E5A4 + b _0813792C + .align 2, 0 +_08137820: .4byte gUnknown_8419782 +_08137824: .4byte gUnknown_203B140 +_08137828: .4byte 0x00003004 +_0813782C: .4byte gUnknown_8463FA4 +_08137830: + adds r0, r5, 0 + bl sub_813B838 + cmp r0, 0x1 + bne _08137846 + add r4, sp, 0x1C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80C4E08 + b _08137850 +_08137846: + add r4, sp, 0x1C + ldr r1, _0813788C @ =gUnknown_8419C0B + adds r0, r4, 0 + bl sub_8008D84 +_08137850: + adds r1, r4, 0 + movs r0, 0x2 + bl sub_813CCAC + ldr r4, _08137890 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08137894 @ =0x00003290 + adds r0, r1 + movs r1, 0x24 + bl sub_803FBE8 + cmp r0, 0 + bne _081378BC + ldr r0, [r4] + ldr r1, _08137894 @ =0x00003290 + adds r0, r1 + movs r1, 0x50 + bl sub_803FBE8 + cmp r0, 0x1 + bne _081378A8 + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _0813789C + add r4, sp, 0x3C + ldr r1, _08137898 @ =gUnknown_84199F4 + b _081378EE + .align 2, 0 +_0813788C: .4byte gUnknown_8419C0B +_08137890: .4byte gUnknown_203B140 +_08137894: .4byte 0x00003290 +_08137898: .4byte gUnknown_84199F4 +_0813789C: + add r4, sp, 0x3C + ldr r1, _081378A4 @ =gUnknown_84199AB + b _081378EE + .align 2, 0 +_081378A4: .4byte gUnknown_84199AB +_081378A8: + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + bne _081378EA + add r4, sp, 0x3C + ldr r1, _081378B8 @ =gUnknown_8419860 + b _081378EE + .align 2, 0 +_081378B8: .4byte gUnknown_8419860 +_081378BC: + cmp r5, 0xFF + bne _081378E0 + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _081378D4 + add r4, sp, 0x3C + ldr r1, _081378D0 @ =gUnknown_84197ED + b _081378EE + .align 2, 0 +_081378D0: .4byte gUnknown_84197ED +_081378D4: + add r4, sp, 0x3C + ldr r1, _081378DC @ =gUnknown_84197B8 + b _081378EE + .align 2, 0 +_081378DC: .4byte gUnknown_84197B8 +_081378E0: + adds r0, r6, 0 + bl sub_813B7E0 + cmp r0, 0 + beq _081378FC +_081378EA: + add r4, sp, 0x3C + ldr r1, _081378F8 @ =gUnknown_841988A +_081378EE: + adds r0, r4, 0 + bl sub_813CCC8 + b _08137906 + .align 2, 0 +_081378F8: .4byte gUnknown_841988A +_081378FC: + add r4, sp, 0x3C + ldr r1, _08137934 @ =gUnknown_8419860 + adds r0, r4, 0 + bl sub_813CCC8 +_08137906: + ldr r0, _08137938 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813793C @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _08137940 @ =gUnknown_8463FA4 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + str r4, [sp, 0x10] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x3 + bl sub_812E5A4 +_0813792C: + add sp, 0xD4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08137934: .4byte gUnknown_8419860 +_08137938: .4byte gUnknown_203B140 +_0813793C: .4byte 0x00003004 +_08137940: .4byte gUnknown_8463FA4 + thumb_func_end sub_8137724 + + thumb_func_start sub_8137944 +sub_8137944: @ 8137944 + push {lr} + ldr r0, _08137960 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137964 @ =0x00003290 + adds r0, r1 + bl sub_813847C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08137968 + bl sub_8137578 + b _0813796C + .align 2, 0 +_08137960: .4byte gUnknown_203B140 +_08137964: .4byte 0x00003290 +_08137968: + bl sub_8137724 +_0813796C: + pop {r0} + bx r0 + thumb_func_end sub_8137944 + + thumb_func_start sub_8137970 +sub_8137970: @ 8137970 + push {r4-r7,lr} + sub sp, 0x14 + movs r5, 0 + ldr r7, _081379C4 @ =gUnknown_203B140 + ldr r0, [r7] + ldr r6, _081379C8 @ =0x00003290 + adds r0, r6 + movs r1, 0x23 + bl sub_803FBE8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, [r7] + ldr r1, _081379CC @ =0x000032f4 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _081379D0 @ =gUnknown_202402C + cmp r1, r0 + beq _081379E4 + cmp r4, 0xFF + beq _081379F4 + adds r0, r2, r6 + movs r1, 0x50 + bl sub_803FBE8 + cmp r0, 0x1 + beq _081379F4 + ldr r0, [r7] + adds r0, r6 + movs r1, 0x25 + bl sub_803FBE8 + lsls r0, 24 + movs r2, 0xFC + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bls _081379D4 + movs r5, 0x1 + b _081379DE + .align 2, 0 +_081379C4: .4byte gUnknown_203B140 +_081379C8: .4byte 0x00003290 +_081379CC: .4byte 0x000032f4 +_081379D0: .4byte gUnknown_202402C +_081379D4: + cmp r4, 0xFD + bne _081379DA + movs r5, 0x2 +_081379DA: + cmp r5, 0 + beq _08137A1E +_081379DE: + cmp r5, 0x2 + bne _08137A36 + b _08137A1E +_081379E4: + cmp r4, 0xFF + beq _081379F4 + adds r0, r2, r6 + movs r1, 0x50 + bl sub_803FBE8 + cmp r0, 0x1 + bne _081379F8 +_081379F4: + movs r5, 0x4 + b _08137A36 +_081379F8: + ldr r0, [r7] + adds r0, r6 + movs r1, 0x25 + bl sub_803FBE8 + lsls r0, 24 + movs r2, 0xFC + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bls _08137A18 + cmp r4, 0xFD + bne _08137A1E + movs r5, 0x5 + b _08137A1E +_08137A18: + cmp r4, 0xFD + bne _08137A1E + movs r5, 0x2 +_08137A1E: + ldr r0, _08137A78 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137A7C @ =0x00003290 + adds r0, r1 + bl sub_813847C + lsls r0, 24 + cmp r0, 0 + bne _08137A36 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08137A36: + ldr r0, _08137A78 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08137A80 @ =0x00003204 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08137A46 + movs r5, 0 +_08137A46: + ldr r2, _08137A84 @ =0x00003004 + adds r0, r1, r2 + ldrb r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _08137A88 @ =gUnknown_8463FA4 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + ldr r2, _08137A8C @ =gUnknown_8463ED4 + lsls r1, r5, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x3 + bl sub_812E5A4 + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08137A78: .4byte gUnknown_203B140 +_08137A7C: .4byte 0x00003290 +_08137A80: .4byte 0x00003204 +_08137A84: .4byte 0x00003004 +_08137A88: .4byte gUnknown_8463FA4 +_08137A8C: .4byte gUnknown_8463ED4 + thumb_func_end sub_8137970 + + thumb_func_start sub_8137A90 +sub_8137A90: @ 8137A90 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + ldr r0, _08137AE4 @ =gUnknown_203B140 + mov r8, r0 + ldr r0, [r0] + ldr r6, _08137AE8 @ =0x00003004 + adds r0, r6 + ldrb r0, [r0] + ldr r5, _08137AEC @ =gUnknown_8463FA4 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r1, _08137AF0 @ =gUnknown_8419C4D + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x1A + movs r3, 0x7 + bl sub_812E51C + mov r1, r8 + ldr r0, [r1] + adds r0, r6 + ldrb r0, [r0] + str r5, [sp] + str r4, [sp, 0x4] + ldr r1, _08137AF4 @ =gUnknown_8419C59 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x1A + movs r3, 0x14 + bl sub_812E51C + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08137AE4: .4byte gUnknown_203B140 +_08137AE8: .4byte 0x00003004 +_08137AEC: .4byte gUnknown_8463FA4 +_08137AF0: .4byte gUnknown_8419C4D +_08137AF4: .4byte gUnknown_8419C59 + thumb_func_end sub_8137A90 + + thumb_func_start sub_8137AF8 +sub_8137AF8: @ 8137AF8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + ldr r0, _08137BAC @ =gUnknown_203B16D + mov r8, r0 + ldrb r1, [r0] + cmp r1, 0x4 + bhi _08137B9E + ldr r7, _08137BB0 @ =gUnknown_203B140 + ldr r3, [r7] + ldr r2, _08137BB4 @ =0x00003208 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08137B1C + cmp r1, 0x4 + beq _08137B9E +_08137B1C: + ldr r4, _08137BB8 @ =0x00003004 + adds r0, r3, r4 + ldrb r0, [r0] + ldr r6, _08137BBC @ =gUnknown_8463FA4 + str r6, [sp] + movs r5, 0x1 + negs r5, r5 + str r5, [sp, 0x4] + mov r1, r8 + ldrb r2, [r1] + lsls r1, r2, 2 + adds r1, r2 + ldr r2, _08137BC0 @ =0x0000316c + adds r1, r2 + adds r1, r3, r1 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x39 + movs r3, 0x1 + bl sub_812E51C + ldr r3, [r7] + adds r0, r3, r4 + ldrb r0, [r0] + str r6, [sp] + str r5, [sp, 0x4] + mov r1, r8 + ldrb r2, [r1] + lsls r1, r2, 2 + adds r1, r2 + ldr r2, _08137BC4 @ =0x00003188 + adds r1, r2 + adds r3, r1 + str r3, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x39 + movs r3, 0xF + bl sub_812E51C + ldr r2, [r7] + adds r4, r2, r4 + ldrb r0, [r4] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + str r6, [sp, 0x8] + str r5, [sp, 0xC] + ldr r3, _08137BC8 @ =gUnknown_84886E8 + mov r4, r8 + ldrb r1, [r4] + lsls r1, 1 + ldr r4, _08137BCC @ =0x00003258 + adds r2, r4 + adds r2, r1 + ldrh r1, [r2] + subs r1, 0x1 + lsls r1, 2 + adds r1, r3 + ldr r1, [r1] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x7 + movs r3, 0x2A + bl sub_812E5A4 +_08137B9E: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08137BAC: .4byte gUnknown_203B16D +_08137BB0: .4byte gUnknown_203B140 +_08137BB4: .4byte 0x00003208 +_08137BB8: .4byte 0x00003004 +_08137BBC: .4byte gUnknown_8463FA4 +_08137BC0: .4byte 0x0000316c +_08137BC4: .4byte 0x00003188 +_08137BC8: .4byte gUnknown_84886E8 +_08137BCC: .4byte 0x00003258 + thumb_func_end sub_8137AF8 + + thumb_func_start sub_8137BD0 +sub_8137BD0: @ 8137BD0 + push {lr} + ldr r0, _08137BE8 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137BEC @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08137BF0 + bl sub_8137C18 + b _08137BFC + .align 2, 0 +_08137BE8: .4byte gUnknown_203B140 +_08137BEC: .4byte 0x00003214 +_08137BF0: + cmp r0, 0x1 + ble _08137BFC + cmp r0, 0x3 + bgt _08137BFC + bl sub_8137C90 +_08137BFC: + ldr r0, _08137C10 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137C14 @ =0x00003005 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + pop {r0} + bx r0 + .align 2, 0 +_08137C10: .4byte gUnknown_203B140 +_08137C14: .4byte 0x00003005 + thumb_func_end sub_8137BD0 + + thumb_func_start sub_8137C18 +sub_8137C18: @ 8137C18 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + ldr r5, _08137C7C @ =gUnknown_203B140 + ldr r0, [r5] + ldr r4, _08137C80 @ =0x00003005 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08137C84 @ =gUnknown_8463FA4 + mov r8, r2 + str r2, [sp] + movs r6, 0x1 + negs r6, r6 + str r6, [sp, 0x4] + ldr r2, _08137C88 @ =0x000031bc + adds r1, r2 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x42 + movs r3, 0x1 + bl sub_812E51C + ldr r1, [r5] + adds r4, r1, r4 + ldrb r0, [r4] + mov r2, r8 + str r2, [sp] + str r6, [sp, 0x4] + ldr r2, _08137C8C @ =0x000031cc + adds r1, r2 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0xF + bl sub_812E51C + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08137C7C: .4byte gUnknown_203B140 +_08137C80: .4byte 0x00003005 +_08137C84: .4byte gUnknown_8463FA4 +_08137C88: .4byte 0x000031bc +_08137C8C: .4byte 0x000031cc + thumb_func_end sub_8137C18 + + thumb_func_start sub_8137C90 +sub_8137C90: @ 8137C90 + push {r4,r5,lr} + ldr r0, _08137D14 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08137D18 @ =0x00003005 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + movs r4, 0 +_08137CA4: + ldr r5, _08137D14 @ =gUnknown_203B140 + ldr r1, [r5] + lsls r2, r4, 1 + ldr r3, _08137D1C @ =0x00003258 + adds r0, r1, r3 + adds r0, r2 + ldrh r0, [r0] + cmp r0, 0 + beq _08137CDE + ldr r3, _08137D18 @ =0x00003005 + adds r0, r1, r3 + ldrb r0, [r0] + ldr r3, _08137D20 @ =0x0000324e + adds r1, r3 + adds r1, r2 + ldrb r1, [r1] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + lsls r3, r4, 3 + subs r3, r4 + lsls r3, 18 + movs r2, 0xA0 + lsls r2, 11 + adds r3, r2 + lsrs r3, 16 + movs r2, 0x3 + bl sub_8107D68 +_08137CDE: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08137CA4 + ldr r1, [r5] + ldr r3, _08137D24 @ =0x00003208 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x2 + bne _08137D0E + ldr r2, _08137D18 @ =0x00003005 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, 0x4E + adds r1, r3 + ldrb r1, [r1] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x3 + movs r3, 0x75 + bl sub_8107D68 +_08137D0E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08137D14: .4byte gUnknown_203B140 +_08137D18: .4byte 0x00003005 +_08137D1C: .4byte 0x00003258 +_08137D20: .4byte 0x0000324e +_08137D24: .4byte 0x00003208 + thumb_func_end sub_8137C90 + + thumb_func_start sub_8137D28 +sub_8137D28: @ 8137D28 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bhi _08137E16 + lsls r0, 2 + ldr r1, _08137D3C @ =_08137D40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08137D3C: .4byte _08137D40 + .align 2, 0 +_08137D40: + .4byte _08137D58 + .4byte _08137D8C + .4byte _08137DA4 + .4byte _08137DBC + .4byte _08137E16 + .4byte _08137E04 +_08137D58: + ldr r0, _08137D78 @ =gUnknown_8419C1D + bl sub_8136DA4 + ldr r0, _08137D7C @ =gUnknown_203B140 + ldr r0, [r0] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08137D84 + ldr r0, _08137D80 @ =gUnknown_8419C62 + bl sub_8136DF0 + b _08137DF2 + .align 2, 0 +_08137D78: .4byte gUnknown_8419C1D +_08137D7C: .4byte gUnknown_203B140 +_08137D80: .4byte gUnknown_8419C62 +_08137D84: + ldr r0, _08137D88 @ =gUnknown_8419C72 + b _08137DEE + .align 2, 0 +_08137D88: .4byte gUnknown_8419C72 +_08137D8C: + ldr r0, _08137D9C @ =gUnknown_8419C2A + bl sub_8136DA4 + ldr r0, _08137DA0 @ =gUnknown_8419C7B + bl sub_8136DF0 + b _08137DF2 + .align 2, 0 +_08137D9C: .4byte gUnknown_8419C2A +_08137DA0: .4byte gUnknown_8419C7B +_08137DA4: + ldr r0, _08137DB4 @ =gUnknown_8419C39 + bl sub_8136DA4 + ldr r0, _08137DB8 @ =gUnknown_8419C82 + bl sub_8136DF0 + b _08137DF2 + .align 2, 0 +_08137DB4: .4byte gUnknown_8419C39 +_08137DB8: .4byte gUnknown_8419C82 +_08137DBC: + ldr r0, _08137DDC @ =gUnknown_8419C39 + bl sub_8136DA4 + ldr r0, _08137DE0 @ =gUnknown_30030F0 + ldr r1, _08137DE4 @ =0x00000439 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08137DEC + ldr r0, _08137DE8 @ =gUnknown_8419C92 + bl sub_8136DF0 + b _08137DF2 + .align 2, 0 +_08137DDC: .4byte gUnknown_8419C39 +_08137DE0: .4byte gUnknown_30030F0 +_08137DE4: .4byte 0x00000439 +_08137DE8: .4byte gUnknown_8419C92 +_08137DEC: + ldr r0, _08137DFC @ =gUnknown_8419CA2 +_08137DEE: + bl sub_8136DF0 +_08137DF2: + ldr r0, _08137E00 @ =gUnknown_8419C45 + bl sub_8136E50 + b _08137E16 + .align 2, 0 +_08137DFC: .4byte gUnknown_8419CA2 +_08137E00: .4byte gUnknown_8419C45 +_08137E04: + ldr r0, _08137E1C @ =gUnknown_8419C39 + bl sub_8136DA4 + ldr r0, _08137E20 @ =gUnknown_8419CA9 + bl sub_8136DF0 + ldr r0, _08137E24 @ =gUnknown_8419C45 + bl sub_8136E50 +_08137E16: + pop {r0} + bx r0 + .align 2, 0 +_08137E1C: .4byte gUnknown_8419C39 +_08137E20: .4byte gUnknown_8419CA9 +_08137E24: .4byte gUnknown_8419C45 + thumb_func_end sub_8137D28 + + thumb_func_start sub_8137E28 +sub_8137E28: @ 8137E28 + push {r4,lr} + ldr r4, _08137E58 @ =gUnknown_203B140 + ldr r0, [r4] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + ldr r1, _08137E5C @ =0x00003001 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + ldr r1, _08137E60 @ =0x00003002 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08137E58: .4byte gUnknown_203B140 +_08137E5C: .4byte 0x00003001 +_08137E60: .4byte 0x00003002 + thumb_func_end sub_8137E28 + + thumb_func_start sub_8137E64 +sub_8137E64: @ 8137E64 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_813AF90 + bl sub_80088F0 + bl sub_80721F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08137E82 + bl sub_80721C4 +_08137E82: + ldr r4, _08137ED4 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08137ED8 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_8138414 + bl sub_8003ECC + adds r0, r5, 0 + bl sub_8077508 + ldr r0, [r4] + ldr r1, _08137EDC @ =0x000032f8 + adds r0, r1 + ldr r0, [r0] + bl sub_8000544 + bl sub_8138B20 + ldr r1, _08137EE0 @ =gUnknown_203B16C + strb r0, [r1] + ldr r0, [r4] + cmp r0, 0 + beq _08137EBC + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08137EBC: + ldr r4, _08137EE4 @ =gUnknown_203B144 + ldr r0, [r4] + cmp r0, 0 + beq _08137ECC + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08137ECC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08137ED4: .4byte gUnknown_203B140 +_08137ED8: .4byte 0x00003214 +_08137EDC: .4byte 0x000032f8 +_08137EE0: .4byte gUnknown_203B16C +_08137EE4: .4byte gUnknown_203B144 + thumb_func_end sub_8137E64 + + thumb_func_start sub_8137EE8 +sub_8137EE8: @ 8137EE8 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8137EE8 + + thumb_func_start sub_8137F00 +sub_8137F00: @ 8137F00 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _08137F60 @ =gUnknown_203B160 +_08137F06: + ldr r3, [r6] + lsls r4, r5, 1 + adds r0, r3, 0 + adds r0, 0x2C + adds r1, r0, r4 + ldrh r2, [r1] + cmp r2, 0xEF + bhi _08137F28 + adds r0, r2, 0 + adds r0, 0x3C + strh r0, [r1] + lsls r0, r5, 2 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r2, 0 + adds r0, 0x78 + strh r0, [r1, 0x20] +_08137F28: + cmp r5, 0x8 + bhi _08137F4E + ldr r0, _08137F64 @ =gUnknown_203B15C + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0x28 + adds r1, r0, r4 + ldrh r2, [r1] + cmp r2, 0xEF + bhi _08137F4E + adds r0, r2, 0 + adds r0, 0x3C + strh r0, [r1] + lsls r0, r5, 2 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r2, 0 + adds r0, 0x78 + strh r0, [r1, 0x20] +_08137F4E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _08137F06 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08137F60: .4byte gUnknown_203B160 +_08137F64: .4byte gUnknown_203B15C + thumb_func_end sub_8137F00 + + thumb_func_start sub_8137F68 +sub_8137F68: @ 8137F68 + push {r4-r7,lr} + movs r5, 0 + ldr r0, _08137FEC @ =gUnknown_203B160 + mov r12, r0 +_08137F70: + mov r1, r12 + ldr r0, [r1] + lsls r1, r5, 1 + adds r0, 0x2C + adds r3, r0, r1 + ldrh r4, [r3] + lsls r0, r5, 3 + adds r2, r0, 0 + adds r2, 0x9C + adds r6, r1, 0 + adds r7, r0, 0 + cmp r4, r2 + ble _08137FAA + adds r0, r4, 0 + subs r0, 0x3C + strh r0, [r3] + ldrh r0, [r3] + cmp r0, r2 + bge _08137F98 + strh r2, [r3] +_08137F98: + mov r0, r12 + ldr r1, [r0] + lsls r0, r5, 2 + adds r0, r1, r0 + ldr r2, [r0] + adds r1, 0x2C + adds r1, r6 + ldrh r0, [r1] + strh r0, [r2, 0x20] +_08137FAA: + cmp r5, 0x8 + bhi _08137FDC + ldr r1, _08137FF0 @ =gUnknown_203B15C + ldr r0, [r1] + adds r0, 0x28 + adds r2, r0, r6 + ldrh r0, [r2] + adds r3, r7, 0 + adds r3, 0xAC + cmp r0, r3 + ble _08137FDC + subs r0, 0x3C + strh r0, [r2] + ldrh r0, [r2] + cmp r0, r3 + bge _08137FCC + strh r3, [r2] +_08137FCC: + ldr r1, [r1] + lsls r0, r5, 2 + adds r0, r1, r0 + ldr r2, [r0] + adds r1, 0x28 + adds r1, r6 + ldrh r0, [r1] + strh r0, [r2, 0x20] +_08137FDC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _08137F70 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08137FEC: .4byte gUnknown_203B160 +_08137FF0: .4byte gUnknown_203B15C + thumb_func_end sub_8137F68 + + thumb_func_start sub_8137FF4 +sub_8137FF4: @ 8137FF4 + push {r4,r5,lr} + ldr r4, _08138038 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r3, _0813803C @ =0x0000324c + adds r1, r0, r3 + ldrh r2, [r1] + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r0, 0xEF + bgt _08138054 + adds r0, r2, 0 + adds r0, 0x3C + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF0 + ble _0813801A + movs r0, 0xF0 + strh r0, [r1] +_0813801A: + ldr r1, [r4] + ldr r2, _08138040 @ =0x00003238 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08138044 + adds r0, r1, r3 + ldrh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x18 + bl sub_8000A38 + b _08138054 + .align 2, 0 +_08138038: .4byte gUnknown_203B140 +_0813803C: .4byte 0x0000324c +_08138040: .4byte 0x00003238 +_08138044: + adds r0, r1, r3 + ldrh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x14 + bl sub_8000A38 +_08138054: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8137FF4 + + thumb_func_start sub_813805C +sub_813805C: @ 813805C + push {r4,r5,lr} + ldr r4, _081380A0 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r3, _081380A4 @ =0x0000324c + adds r1, r0, r3 + ldrh r2, [r1] + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r0, 0x3B + ble _081380DC + adds r0, r2, 0 + subs r0, 0x3C + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bge _08138080 + movs r0, 0 + strh r0, [r1] +_08138080: + ldr r1, [r4] + ldr r2, _081380A8 @ =0x00003238 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _081380AC + adds r0, r1, r3 + ldrh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x14 + bl sub_8000A38 + b _081380BC + .align 2, 0 +_081380A0: .4byte gUnknown_203B140 +_081380A4: .4byte 0x0000324c +_081380A8: .4byte 0x00003238 +_081380AC: + adds r0, r1, r3 + ldrh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x18 + bl sub_8000A38 +_081380BC: + ldr r0, _081380E4 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r5, _081380E8 @ =0x00003214 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, 0x3 + beq _081380DC + ldr r2, _081380EC @ =0x0000324c + adds r0, r1, r2 + ldrh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x10 + bl sub_8000A38 +_081380DC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081380E4: .4byte gUnknown_203B140 +_081380E8: .4byte 0x00003214 +_081380EC: .4byte 0x0000324c + thumb_func_end sub_813805C + + thumb_func_start sub_81380F0 +sub_81380F0: @ 81380F0 + push {lr} + ldr r0, _08138110 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08138114 @ =0x00003224 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08138118 + subs r2, 0x10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x3 + beq _08138122 + bl sub_8137FF4 + b _08138130 + .align 2, 0 +_08138110: .4byte gUnknown_203B140 +_08138114: .4byte 0x00003224 +_08138118: + ldr r2, _08138128 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0813812C +_08138122: + bl sub_813805C + b _08138130 + .align 2, 0 +_08138128: .4byte 0x00003214 +_0813812C: + bl sub_8137FF4 +_08138130: + pop {r0} + bx r0 + thumb_func_end sub_81380F0 + + thumb_func_start sub_8138134 +sub_8138134: @ 8138134 + push {lr} + ldr r0, _08138174 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08138178 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08138152 + adds r2, 0x10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08138152 + bl sub_8137F68 +_08138152: + ldr r0, _08138174 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08138178 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0813816E + adds r2, 0x10 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0813816E + bl sub_8137F00 +_0813816E: + pop {r0} + bx r0 + .align 2, 0 +_08138174: .4byte gUnknown_203B140 +_08138178: .4byte 0x00003214 + thumb_func_end sub_8138134 + + thumb_func_start sub_813817C +sub_813817C: @ 813817C + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + ldr r0, _081381A4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _081381A8 @ =0x00003244 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _081381A0 + bl sub_81380F0 + bl sub_8138134 +_081381A0: + pop {r0} + bx r0 + .align 2, 0 +_081381A4: .4byte gUnknown_203B140 +_081381A8: .4byte 0x00003244 + thumb_func_end sub_813817C + + thumb_func_start sub_81381AC +sub_81381AC: @ 81381AC + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_81381AC + + thumb_func_start sub_81381C0 +sub_81381C0: @ 81381C0 + push {lr} + ldr r0, _081381CC @ =sub_813817C + bl sub_80006F4 + pop {r0} + bx r0 + .align 2, 0 +_081381CC: .4byte sub_813817C + thumb_func_end sub_81381C0 + + thumb_func_start sub_81381D0 +sub_81381D0: @ 81381D0 + push {r4,r5,lr} + ldr r0, _08138218 @ =gUnknown_8463F9C + bl sub_8003B24 + movs r4, 0 +_081381DA: + lsls r0, r4, 3 + ldr r1, _0813821C @ =gUnknown_8463F0C + adds r0, r1 + bl sub_8003CE4 + ldr r2, _08138220 @ =gUnknown_203B140 + ldr r1, [r2] + movs r3, 0xC0 + lsls r3, 6 + adds r1, r3 + adds r1, r4 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _081381DA + movs r4, 0 + adds r5, r2, 0 +_08138200: + ldr r0, [r5] + ldr r1, _08138224 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08138254 + cmp r0, 0x1 + bgt _08138228 + cmp r0, 0 + beq _08138238 + b _08138268 + .align 2, 0 +_08138218: .4byte gUnknown_8463F9C +_0813821C: .4byte gUnknown_8463F0C +_08138220: .4byte gUnknown_203B140 +_08138224: .4byte 0x00003214 +_08138228: + cmp r0, 0x3 + bgt _08138268 + lsls r0, r4, 3 + ldr r1, _08138234 @ =gUnknown_8463F7C + b _08138258 + .align 2, 0 +_08138234: .4byte gUnknown_8463F7C +_08138238: + lsls r0, r4, 3 + ldr r1, _0813824C @ =gUnknown_8463F3C + adds r0, r1 + bl sub_8003CE4 + ldr r1, [r5] + adds r1, r4 + ldr r3, _08138250 @ =0x00003003 + adds r1, r3 + b _08138266 + .align 2, 0 +_0813824C: .4byte gUnknown_8463F3C +_08138250: .4byte 0x00003003 +_08138254: + lsls r0, r4, 3 + ldr r1, _08138278 @ =gUnknown_8463F5C +_08138258: + adds r0, r1 + bl sub_8003CE4 + ldr r1, [r5] + adds r1, r4 + ldr r2, _0813827C @ =0x00003003 + adds r1, r2 +_08138266: + strb r0, [r1] +_08138268: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _08138200 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08138278: .4byte gUnknown_8463F5C +_0813827C: .4byte 0x00003003 + thumb_func_end sub_81381D0 + + thumb_func_start sub_8138280 +sub_8138280: @ 8138280 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0xA + bl sub_8000AC4 + movs r4, 0x3 + adds r5, r4, 0 + ands r5, r0 + movs r0, 0xC + bl sub_8000AC4 + adds r3, r4, 0 + ands r3, r0 + movs r4, 0 + ldr r2, _08138314 @ =gUnknown_203B140 + movs r0, 0xC0 + lsls r0, 6 + mov r12, r0 + movs r7, 0xFF + mov r8, r2 +_081382AE: + ldr r0, [r2] + add r0, r12 + adds r0, r4 + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bls _081382AE + mov r2, r8 + ldr r1, [r2] + ldr r4, _08138318 @ =0x00003224 + adds r0, r1, r4 + ldrb r2, [r0] + cmp r2, 0x1 + bne _081382DC + subs r4, 0x10 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _081382EA +_081382DC: + cmp r2, 0 + bne _08138354 + ldr r2, _0813831C @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + bne _08138354 +_081382EA: + cmp r3, r5 + bls _08138324 + movs r4, 0 +_081382F0: + lsls r0, r4, 3 + ldr r1, _08138320 @ =gUnknown_8463F24 + adds r0, r1 + bl sub_8003CE4 + ldr r1, _08138314 @ =gUnknown_203B140 + ldr r1, [r1] + movs r2, 0xC0 + lsls r2, 6 + adds r1, r2 + adds r1, r4 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _081382F0 + b _081383AC + .align 2, 0 +_08138314: .4byte gUnknown_203B140 +_08138318: .4byte 0x00003224 +_0813831C: .4byte 0x00003214 +_08138320: .4byte gUnknown_8463F24 +_08138324: + movs r4, 0 +_08138326: + lsls r0, r4, 3 + ldr r1, _0813834C @ =gUnknown_8463F0C + adds r0, r1 + bl sub_8003CE4 + ldr r1, _08138350 @ =gUnknown_203B140 + ldr r1, [r1] + movs r2, 0xC0 + lsls r2, 6 + adds r1, r2 + adds r1, r4 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _08138326 + b _081383AC + .align 2, 0 +_0813834C: .4byte gUnknown_8463F0C +_08138350: .4byte gUnknown_203B140 +_08138354: + cmp r3, r5 + bls _08138388 + movs r4, 0 +_0813835A: + lsls r0, r4, 3 + ldr r1, _08138380 @ =gUnknown_8463F0C + adds r0, r1 + bl sub_8003CE4 + ldr r1, _08138384 @ =gUnknown_203B140 + ldr r1, [r1] + movs r2, 0xC0 + lsls r2, 6 + adds r1, r2 + adds r1, r4 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0813835A + b _081383AC + .align 2, 0 +_08138380: .4byte gUnknown_8463F0C +_08138384: .4byte gUnknown_203B140 +_08138388: + movs r4, 0 +_0813838A: + lsls r0, r4, 3 + ldr r1, _081383C0 @ =gUnknown_8463F24 + adds r0, r1 + bl sub_8003CE4 + ldr r1, _081383C4 @ =gUnknown_203B140 + ldr r1, [r1] + movs r2, 0xC0 + lsls r2, 6 + adds r1, r2 + adds r1, r4 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0813838A +_081383AC: + movs r4, 0 + ldr r5, _081383C4 @ =gUnknown_203B140 +_081383B0: + cmp r6, 0x1 + beq _081383E4 + cmp r6, 0x1 + bgt _081383C8 + cmp r6, 0 + beq _081383D8 + b _081383E4 + .align 2, 0 +_081383C0: .4byte gUnknown_8463F24 +_081383C4: .4byte gUnknown_203B140 +_081383C8: + cmp r6, 0x3 + bgt _081383E4 + lsls r0, r4, 3 + ldr r1, _081383D4 @ =gUnknown_8463F7C + b _081383E8 + .align 2, 0 +_081383D4: .4byte gUnknown_8463F7C +_081383D8: + lsls r0, r4, 3 + ldr r1, _081383E0 @ =gUnknown_8463F3C + b _081383E8 + .align 2, 0 +_081383E0: .4byte gUnknown_8463F3C +_081383E4: + lsls r0, r4, 3 + ldr r1, _0813840C @ =gUnknown_8463F5C +_081383E8: + adds r0, r1 + bl sub_8003CE4 + ldr r1, [r5] + adds r1, r4 + ldr r2, _08138410 @ =0x00003003 + adds r1, r2 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _081383B0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813840C: .4byte gUnknown_8463F5C +_08138410: .4byte 0x00003003 + thumb_func_end sub_8138280 + + thumb_func_start sub_8138414 +sub_8138414: @ 8138414 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _0813843C @ =gUnknown_203B140 +_0813841A: + ldr r0, [r5] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bls _0813841A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813843C: .4byte gUnknown_203B140 + thumb_func_end sub_8138414 + + thumb_func_start sub_8138440 +sub_8138440: @ 8138440 + push {lr} + ldr r0, _0813845C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08138460 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08138470 + cmp r0, 0x1 + bgt _08138464 + cmp r0, 0 + beq _0813846C + b _08138476 + .align 2, 0 +_0813845C: .4byte gUnknown_203B140 +_08138460: .4byte 0x00003214 +_08138464: + cmp r0, 0x3 + bgt _08138476 + movs r0, 0x8 + b _08138472 +_0813846C: + movs r0, 0x6 + b _08138472 +_08138470: + movs r0, 0x7 +_08138472: + bl sub_812B1F0 +_08138476: + pop {r0} + bx r0 + thumb_func_end sub_8138440 + + thumb_func_start sub_813847C +sub_813847C: @ 813847C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _081384BC @ =gUnknown_203B140 + ldr r0, [r5] + ldr r1, _081384C0 @ =0x000032f4 + adds r0, r1 + ldr r1, [r0] + ldr r0, _081384C4 @ =gUnknown_202402C + cmp r1, r0 + bne _081384D0 + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081384C8 @ =gUnknown_202273C + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldrh r4, [r0] + ldr r0, [r5] + ldr r3, _081384CC @ =0x0000304c + adds r0, r3 + adds r2, 0x8 + adds r1, r2 + bl sub_8008D84 + b _081384E8 + .align 2, 0 +_081384BC: .4byte gUnknown_203B140 +_081384C0: .4byte 0x000032f4 +_081384C4: .4byte gUnknown_202402C +_081384C8: .4byte gUnknown_202273C +_081384CC: .4byte 0x0000304c +_081384D0: + bl sub_80CC1E4 + adds r4, r0, 0 + ldr r0, _0813851C @ =0x0000ffff + ands r4, r0 + ldr r0, [r5] + ldr r1, _08138520 @ =0x0000304c + adds r0, r1 + ldr r1, _08138524 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 +_081384E8: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_803FBE8 + ldr r1, _0813851C @ =0x0000ffff + ands r1, r0 + cmp r4, r1 + bne _08138518 + ldr r4, _08138528 @ =gUnknown_203B140 + ldr r2, [r4] + ldr r5, _0813852C @ =0x00003058 + adds r2, r5 + adds r0, r6, 0 + movs r1, 0x7 + bl sub_803FBE8 + ldr r1, [r4] + ldr r2, _08138520 @ =0x0000304c + adds r0, r1, r2 + adds r1, r5 + bl sub_8009370 + cmp r0, 0 + beq _08138530 +_08138518: + movs r0, 0 + b _08138532 + .align 2, 0 +_0813851C: .4byte 0x0000ffff +_08138520: .4byte 0x0000304c +_08138524: .4byte gUnknown_300500C +_08138528: .4byte gUnknown_203B140 +_0813852C: .4byte 0x00003058 +_08138530: + movs r0, 0x1 +_08138532: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_813847C + + thumb_func_start sub_8138538 +sub_8138538: @ 8138538 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldr r0, _08138560 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08138564 @ =0x00003214 + adds r0, r1, r2 + ldrb r7, [r0] + cmp r7, 0x1 + bne _08138554 + b _081386EC +_08138554: + cmp r7, 0x1 + bgt _08138568 + cmp r7, 0 + beq _08138576 + b _08138A16 + .align 2, 0 +_08138560: .4byte gUnknown_203B140 +_08138564: .4byte 0x00003214 +_08138568: + cmp r7, 0x2 + bne _0813856E + b _081387E0 +_0813856E: + cmp r7, 0x3 + bne _08138574 + b _081388E0 +_08138574: + b _08138A16 +_08138576: + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08138678 + movs r1, 0xB5 + lsls r1, 1 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0 + bl sub_8002554 + movs r1, 0xBD + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0x1 + bl sub_8002554 + ldr r1, _08138660 @ =0x00000169 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xE + movs r3, 0 + bl sub_8002554 + ldr r1, _08138664 @ =0x00000179 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xE + movs r3, 0x1 + bl sub_8002554 + ldr r6, _08138668 @ =0x0000016b + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + adds r1, r6, 0 + movs r2, 0xF + movs r3, 0 + bl sub_8002554 + ldr r5, _0813866C @ =0x0000017b + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + adds r1, r5, 0 + movs r2, 0xF + movs r3, 0x1 + bl sub_8002554 + ldr r1, _08138670 @ =0x0000016d + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x10 + movs r3, 0 + bl sub_8002554 + ldr r1, _08138674 @ =0x0000017d + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x10 + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + adds r1, r6, 0 + movs r2, 0x11 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + adds r1, r5, 0 + movs r2, 0x11 + movs r3, 0x1 + bl sub_8002554 + movs r1, 0xB7 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x12 + movs r3, 0 + bl sub_8002554 + movs r1, 0xBF + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + b _081388CC + .align 2, 0 +_08138660: .4byte 0x00000169 +_08138664: .4byte 0x00000179 +_08138668: .4byte 0x0000016b +_0813866C: .4byte 0x0000017b +_08138670: .4byte 0x0000016d +_08138674: .4byte 0x0000017d +_08138678: + movs r1, 0xB5 + lsls r1, 1 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0 + bl sub_8002554 + movs r1, 0xBD + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0x1 + bl sub_8002554 + ldr r1, _081386E0 @ =0x00000189 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xE + movs r3, 0 + bl sub_8002554 + ldr r1, _081386E4 @ =0x00000199 + str r4, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xE + movs r3, 0x1 + bl sub_8002554 + ldr r1, _081386E8 @ =0x0000015b + movs r0, 0x4 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + str r7, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xF + movs r3, 0 + bl sub_8002554 + b _08138A16 + .align 2, 0 +_081386E0: .4byte 0x00000189 +_081386E4: .4byte 0x00000199 +_081386E8: .4byte 0x0000015b +_081386EC: + movs r1, 0xC5 + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0 + bl sub_8002554 + movs r1, 0xCD + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0x1 + bl sub_8002554 + movs r1, 0xAD + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xE + movs r3, 0 + bl sub_8002554 + movs r1, 0xB6 + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xE + movs r3, 0x1 + bl sub_8002554 + movs r1, 0xB5 + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xF + movs r3, 0 + bl sub_8002554 + movs r1, 0xBD + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xF + movs r3, 0x1 + bl sub_8002554 + ldr r1, _081387D0 @ =0x00000169 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x10 + movs r3, 0 + bl sub_8002554 + ldr r1, _081387D4 @ =0x00000179 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x10 + movs r3, 0x1 + bl sub_8002554 + ldr r1, _081387D8 @ =0x0000016b + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x11 + movs r3, 0 + bl sub_8002554 + ldr r1, _081387DC @ =0x0000017b + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x11 + movs r3, 0x1 + bl sub_8002554 + movs r1, 0xB7 + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x12 + movs r3, 0 + bl sub_8002554 + movs r1, 0xBF + lsls r1, 1 + str r7, [sp] + str r7, [sp, 0x4] + str r4, [sp, 0x8] + b _081388CC + .align 2, 0 +_081387D0: .4byte 0x00000169 +_081387D4: .4byte 0x00000179 +_081387D8: .4byte 0x0000016b +_081387DC: .4byte 0x0000017b +_081387E0: + movs r0, 0xC5 + lsls r0, 1 + mov r10, r0 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r10 + movs r2, 0xD + movs r3, 0 + bl sub_8002554 + movs r2, 0xCD + lsls r2, 1 + mov r9, r2 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r9 + movs r2, 0xD + movs r3, 0x1 + bl sub_8002554 + movs r0, 0xAD + lsls r0, 1 + mov r8, r0 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r8 + movs r2, 0xE + movs r3, 0 + bl sub_8002554 + movs r6, 0xB6 + lsls r6, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + adds r1, r6, 0 + movs r2, 0xE + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r10 + movs r2, 0xF + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r9 + movs r2, 0xF + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r8 + movs r2, 0x10 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + adds r1, r6, 0 + movs r2, 0x10 + movs r3, 0x1 + bl sub_8002554 + movs r1, 0xB5 + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x11 + movs r3, 0 + bl sub_8002554 + movs r1, 0xBD + lsls r1, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x11 + movs r3, 0x1 + bl sub_8002554 + ldr r1, _081388D8 @ =0x00000189 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x12 + movs r3, 0 + bl sub_8002554 + ldr r1, _081388DC @ =0x00000199 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] +_081388CC: + movs r0, 0x3 + movs r2, 0x12 + movs r3, 0x1 + bl sub_8002554 + b _08138A16 + .align 2, 0 +_081388D8: .4byte 0x00000189 +_081388DC: .4byte 0x00000199 +_081388E0: + ldr r2, _0813891C @ =0x00003208 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + bne _08138920 + movs r1, 0xAD + lsls r1, 1 + movs r6, 0x4 + str r6, [sp] + movs r5, 0x1 + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0 + bl sub_8002554 + movs r1, 0xB6 + lsls r1, 1 + str r6, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r2, 0xD + movs r3, 0x1 + bl sub_8002554 + b _081389CA + .align 2, 0 +_0813891C: .4byte 0x00003208 +_08138920: + movs r0, 0xC5 + lsls r0, 1 + mov r10, r0 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r10 + movs r2, 0xD + movs r3, 0 + bl sub_8002554 + movs r2, 0xCD + lsls r2, 1 + mov r9, r2 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r9 + movs r2, 0xD + movs r3, 0x1 + bl sub_8002554 + movs r0, 0xAD + lsls r0, 1 + mov r8, r0 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r8 + movs r2, 0xE + movs r3, 0 + bl sub_8002554 + movs r6, 0xB6 + lsls r6, 1 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + adds r1, r6, 0 + movs r2, 0xE + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r10 + movs r2, 0xF + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r9 + movs r2, 0xF + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + mov r1, r8 + movs r2, 0x10 + movs r3, 0 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + adds r1, r6, 0 + movs r2, 0x10 + movs r3, 0x1 + bl sub_8002554 +_081389CA: + ldr r1, _08138A28 @ =0x0000018b + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x11 + movs r3, 0 + bl sub_8002554 + ldr r1, _08138A2C @ =0x0000019b + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x11 + movs r3, 0x1 + bl sub_8002554 + ldr r1, _08138A30 @ =0x00000189 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x12 + movs r3, 0 + bl sub_8002554 + ldr r1, _08138A34 @ =0x00000199 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x3 + movs r2, 0x12 + movs r3, 0x1 + bl sub_8002554 +_08138A16: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08138A28: .4byte 0x0000018b +_08138A2C: .4byte 0x0000019b +_08138A30: .4byte 0x00000189 +_08138A34: .4byte 0x00000199 + thumb_func_end sub_8138538 + + thumb_func_start sub_8138A38 +sub_8138A38: @ 8138A38 + push {r4-r6,lr} + ldr r6, _08138A54 @ =gUnknown_203B140 + ldr r1, [r6] + ldr r2, _08138A58 @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x2 + bgt _08138A5C + cmp r0, 0x1 + bge _08138B0E + cmp r0, 0 + beq _08138A62 + b _08138B0E + .align 2, 0 +_08138A54: .4byte gUnknown_203B140 +_08138A58: .4byte 0x00003214 +_08138A5C: + cmp r0, 0x3 + beq _08138ABC + b _08138B0E +_08138A62: + movs r3, 0xC8 + lsls r3, 6 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _08138B0E + ldr r2, _08138AB0 @ =0x00003003 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r4, _08138AB4 @ =0x00003220 + adds r1, r4 + ldrb r1, [r1] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x2F + movs r3, 0x23 + bl sub_8107D68 + ldr r1, [r6] + adds r4, r1, r4 + ldr r3, _08138AB8 @ =0x00003221 + adds r0, r1, r3 + ldrb r2, [r0] + ldrb r0, [r4] + cmp r0, r2 + beq _08138B0E + ldr r3, _08138AB0 @ =0x00003003 + adds r0, r1, r3 + ldrb r0, [r0] + adds r1, r2, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x53 + movs r3, 0x23 + bl sub_8107D68 + b _08138B0E + .align 2, 0 +_08138AB0: .4byte 0x00003003 +_08138AB4: .4byte 0x00003220 +_08138AB8: .4byte 0x00003221 +_08138ABC: + ldr r5, _08138B14 @ =0x00003006 + adds r0, r1, r5 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r1, [r6] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r4, _08138B18 @ =0x00003220 + adds r1, r4 + ldrb r1, [r1] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + movs r3, 0x3 + bl sub_8107D68 + ldr r2, [r6] + adds r4, r2, r4 + ldr r1, _08138B1C @ =0x00003221 + adds r0, r2, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r0, r1 + beq _08138B04 + adds r0, r2, r5 + ldrb r0, [r0] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x24 + movs r3, 0x3 + bl sub_8107D68 +_08138B04: + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0] + bl sub_8003FA0 +_08138B0E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08138B14: .4byte 0x00003006 +_08138B18: .4byte 0x00003220 +_08138B1C: .4byte 0x00003221 + thumb_func_end sub_8138A38 + + thumb_func_start sub_8138B20 +sub_8138B20: @ 8138B20 + ldr r0, _08138B28 @ =gUnknown_203B16C + ldrb r0, [r0] + bx lr + .align 2, 0 +_08138B28: .4byte gUnknown_203B16C + thumb_func_end sub_8138B20 + + thumb_func_start sub_8138B2C +sub_8138B2C: @ 8138B2C + ldr r0, _08138B34 @ =gUnknown_203B16E + ldrb r0, [r0] + bx lr + .align 2, 0 +_08138B34: .4byte gUnknown_203B16E + thumb_func_end sub_8138B2C + + thumb_func_start sub_8138B38 +sub_8138B38: @ 8138B38 + ldr r1, _08138B44 @ =gUnknown_203B140 + ldr r1, [r1] + ldr r2, _08138B48 @ =0x00003208 + adds r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_08138B44: .4byte gUnknown_203B140 +_08138B48: .4byte 0x00003208 + thumb_func_end sub_8138B38 + + thumb_func_start sub_8138B4C +sub_8138B4C: @ 8138B4C + push {lr} + bl sub_805642C + cmp r0, 0 + bne _08138B84 + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08138B84 + ldr r0, _08138B7C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08138B84 + ldr r0, _08138B80 @ =gUnknown_203B16C + ldrb r0, [r0] + cmp r0, 0x3 + bhi _08138B76 + cmp r0, 0x1 + bne _08138B84 +_08138B76: + movs r0, 0x1 + b _08138B86 + .align 2, 0 +_08138B7C: .4byte gUnknown_3003F64 +_08138B80: .4byte gUnknown_203B16C +_08138B84: + movs r0, 0 +_08138B86: + pop {r1} + bx r1 + thumb_func_end sub_8138B4C + + thumb_func_start sub_8138B8C +sub_8138B8C: @ 8138B8C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08138BBC @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08138BC0 @ =0x0000321c + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08138BC4 + adds r2, 0xD8 + adds r0, r1, r2 + ldr r4, [r0] + bl sub_8138B20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + adds r1, r4 + adds r0, r5, 0 + movs r2, 0x64 + bl memcpy + b _08138BE2 + .align 2, 0 +_08138BBC: .4byte gUnknown_203B140 +_08138BC0: .4byte 0x0000321c +_08138BC4: + ldr r2, _08138BE8 @ =0x000032f4 + adds r0, r1, r2 + ldr r4, [r0] + bl sub_8138B20 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + adds r4, r1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_803E774 +_08138BE2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08138BE8: .4byte 0x000032f4 + thumb_func_end sub_8138B8C + + thumb_func_start sub_8138BEC +sub_8138BEC: @ 8138BEC + push {lr} + lsls r1, 24 + lsrs r1, 24 + adds r2, r1, 0 + cmp r1, 0x1 + beq _08138C0C + cmp r1, 0x1 + bgt _08138C02 + cmp r1, 0 + beq _08138C08 + b _08138C14 +_08138C02: + cmp r2, 0x2 + beq _08138C10 + b _08138C14 +_08138C08: + movs r1, 0xD + b _08138C16 +_08138C0C: + movs r1, 0xE + b _08138C16 +_08138C10: + movs r1, 0xF + b _08138C16 +_08138C14: + movs r1, 0x10 +_08138C16: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8138BEC + + thumb_func_start sub_8138C24 +sub_8138C24: @ 8138C24 + push {lr} + lsls r1, 24 + lsrs r1, 24 + adds r2, r1, 0 + cmp r1, 0x1 + beq _08138C44 + cmp r1, 0x1 + bgt _08138C3A + cmp r1, 0 + beq _08138C40 + b _08138C4C +_08138C3A: + cmp r2, 0x2 + beq _08138C48 + b _08138C4C +_08138C40: + movs r1, 0x11 + b _08138C4E +_08138C44: + movs r1, 0x12 + b _08138C4E +_08138C48: + movs r1, 0x13 + b _08138C4E +_08138C4C: + movs r1, 0x14 +_08138C4E: + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8138C24 + + thumb_func_start sub_8138C5C +sub_8138C5C: @ 8138C5C + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _08138C78 @ =gUnknown_203B140 + ldr r0, [r6] + ldr r5, _08138C7C @ =0x00003290 + adds r0, r5 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08138C80 + movs r0, 0x7 + b _08138CD2 + .align 2, 0 +_08138C78: .4byte gUnknown_203B140 +_08138C7C: .4byte 0x00003290 +_08138C80: + movs r0, 0x88 + ands r0, r4 + cmp r0, 0 + beq _08138C8C + movs r0, 0x1 + b _08138CD2 +_08138C8C: + movs r0, 0x40 + ands r0, r4 + cmp r0, 0 + beq _08138C98 + movs r0, 0x2 + b _08138CD2 +_08138C98: + movs r0, 0x7 + ands r0, r4 + cmp r0, 0 + beq _08138CA4 + movs r0, 0x3 + b _08138CD2 +_08138CA4: + movs r0, 0x20 + ands r0, r4 + cmp r0, 0 + beq _08138CB0 + movs r0, 0x4 + b _08138CD2 +_08138CB0: + movs r0, 0x10 + ands r0, r4 + cmp r0, 0 + beq _08138CBC + movs r0, 0x5 + b _08138CD2 +_08138CBC: + ldr r0, [r6] + adds r0, r5 + movs r1, 0 + bl sub_8043A70 + lsls r0, 24 + cmp r0, 0 + bne _08138CD0 + movs r0, 0 + b _08138CD2 +_08138CD0: + movs r0, 0x6 +_08138CD2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8138C5C + + thumb_func_start sub_8138CD8 +sub_8138CD8: @ 8138CD8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r6, _08138CFC @ =gUnknown_203B140 + ldr r0, [r6] + ldr r7, _08138D00 @ =0x00003288 + adds r3, r0, r7 + ldrb r1, [r3] + cmp r1, 0x1 + bne _08138CF0 + b _08138FE8 +_08138CF0: + cmp r1, 0x1 + bgt _08138D04 + cmp r1, 0 + beq _08138D12 + b _08139094 + .align 2, 0 +_08138CFC: .4byte gUnknown_203B140 +_08138D00: .4byte 0x00003288 +_08138D04: + cmp r1, 0x2 + bne _08138D0A + b _08139010 +_08138D0A: + cmp r1, 0x3 + bne _08138D10 + b _08139034 +_08138D10: + b _08139094 +_08138D12: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08138D20 + b _08139094 +_08138D20: + bl sub_800B270 + cmp r0, 0x1 + bne _08138D2A + b _08139094 +_08138D2A: + ldr r0, _08138D78 @ =gUnknown_30030F0 + mov r9, r0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08138DD0 + ldr r4, _08138D7C @ =gUnknown_203B16D + ldrb r0, [r4] + cmp r0, 0 + beq _08138D84 + ldr r0, [r6] + adds r0, r7 + movs r1, 0x2 + strb r1, [r0] + movs r0, 0x5 + bl sub_80722CC + ldrb r4, [r4] + cmp r4, 0 + bne _08138D5A + b _08139094 +_08138D5A: + ldr r0, [r6] + ldr r2, _08138D80 @ =0x00003258 + adds r1, r0, r2 +_08138D60: + subs r4, 0x1 + lsls r0, r4, 1 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, 0 + beq _08138D6E + b _08139024 +_08138D6E: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08138D60 + b _08139094 + .align 2, 0 +_08138D78: .4byte gUnknown_30030F0 +_08138D7C: .4byte gUnknown_203B16D +_08138D80: .4byte 0x00003258 +_08138D84: + movs r0, 0x4 + strb r0, [r4] + ldr r0, [r6] + adds r0, r7 + movs r1, 0x2 + strb r1, [r0] + movs r0, 0x5 + bl sub_80722CC + ldr r1, [r6] + ldr r3, _08138DC8 @ =0x00003268 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08138DA4 + b _08139094 +_08138DA4: + ldrb r4, [r4] + cmp r4, 0 + bne _08138DAC + b _08139094 +_08138DAC: + ldr r6, _08138DCC @ =0x00003258 + adds r1, r6 +_08138DB0: + subs r4, 0x1 + lsls r0, r4, 1 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, 0 + beq _08138DBE + b _08139024 +_08138DBE: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08138DB0 + b _08139094 + .align 2, 0 +_08138DC8: .4byte 0x00003268 +_08138DCC: .4byte 0x00003258 +_08138DD0: + movs r0, 0x80 + ands r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08138E80 + ldr r3, _08138E0C @ =gUnknown_203B16D + ldrb r0, [r3] + mov r12, r3 + cmp r0, 0x3 + bhi _08138E68 + movs r5, 0x4 + ldr r0, [r6] + adds r0, r7 + movs r4, 0x2 + strb r4, [r0] + ldr r1, [r6] + ldr r6, _08138E10 @ =0x00003268 + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08138E16 + ldrb r0, [r3] + cmp r0, 0x3 + bne _08138E14 + strb r2, [r3] + adds r0, r1, r7 + strb r4, [r0] + b _08138E78 + .align 2, 0 +_08138E0C: .4byte gUnknown_203B16D +_08138E10: .4byte 0x00003268 +_08138E14: + movs r5, 0x3 +_08138E16: + mov r0, r12 + ldrb r4, [r0] + ldr r2, _08138E58 @ =gUnknown_203B140 + cmp r4, r5 + bcs _08138E3C + ldr r0, [r2] + ldr r3, _08138E5C @ =0x00003258 + adds r1, r0, r3 +_08138E26: + adds r4, 0x1 + lsls r0, r4, 1 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, 0 + beq _08138E34 + b _08139024 +_08138E34: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08138E26 +_08138E3C: + ldr r0, [r2] + ldr r6, _08138E60 @ =0x00003268 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0 + bne _08138E4A + b _08139024 +_08138E4A: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _08138E64 @ =gUnknown_203B16D + movs r0, 0 + strb r0, [r1] + b _08139094 + .align 2, 0 +_08138E58: .4byte gUnknown_203B140 +_08138E5C: .4byte 0x00003258 +_08138E60: .4byte 0x00003268 +_08138E64: .4byte gUnknown_203B16D +_08138E68: + cmp r0, 0x4 + beq _08138E6E + b _08139094 +_08138E6E: + strb r2, [r3] + ldr r0, [r6] + adds r0, r7 + movs r1, 0x2 + strb r1, [r0] +_08138E78: + movs r0, 0x5 + bl sub_80722CC + b _08139094 +_08138E80: + movs r0, 0x1 + mov r8, r0 + movs r5, 0x1 + ands r5, r1 + cmp r5, 0 + beq _08138F6C + movs r0, 0x5 + bl sub_80722CC + ldr r3, _08138EB8 @ =gUnknown_203B16D + ldrb r5, [r3] + cmp r5, 0x4 + bne _08138EC8 + strb r4, [r3] + ldr r0, _08138EBC @ =gUnknown_203B16E + strb r4, [r0] + ldr r0, [r6] + ldr r1, _08138EC0 @ =0x00003268 + adds r0, r1 + strb r4, [r0] + movs r0, 0x1 + bl sub_813A0E8 + ldr r0, [r6] + ldr r2, _08138EC4 @ =0x00003224 + adds r0, r2 + strb r4, [r0] + b _08138FB8 + .align 2, 0 +_08138EB8: .4byte gUnknown_203B16D +_08138EBC: .4byte gUnknown_203B16E +_08138EC0: .4byte 0x00003268 +_08138EC4: .4byte 0x00003224 +_08138EC8: + ldr r1, [r6] + ldr r0, _08138F04 @ =0x00003268 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, 0x1 + beq _08138F18 + ldr r3, _08138F08 @ =0x00003024 + adds r0, r1, r3 + ldr r0, [r0] + cmp r0, 0 + beq _08138EE0 + b _08139094 +_08138EE0: + ldr r0, _08138F0C @ =0x00000439 + add r0, r9 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08138EF0 + b _08139094 +_08138EF0: + ldr r0, _08138F10 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08138EFA + b _08139094 +_08138EFA: + ldr r0, _08138F14 @ =gUnknown_203B16E + strb r5, [r0] + mov r6, r8 + strb r6, [r2] + b _08139094 + .align 2, 0 +_08138F04: .4byte 0x00003268 +_08138F08: .4byte 0x00003024 +_08138F0C: .4byte 0x00000439 +_08138F10: .4byte gUnknown_3003F64 +_08138F14: .4byte gUnknown_203B16E +_08138F18: + strb r4, [r2] + ldr r1, _08138F38 @ =gUnknown_203B16E + ldrb r0, [r3] + ldrb r1, [r1] + cmp r0, r1 + bne _08138F26 + b _08139094 +_08138F26: + ldr r0, [r6] + ldr r1, _08138F3C @ =0x0000321c + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08138F40 + bl sub_81390B0 + b _08138F44 + .align 2, 0 +_08138F38: .4byte gUnknown_203B16E +_08138F3C: .4byte 0x0000321c +_08138F40: + bl sub_81391EC +_08138F44: + ldr r4, _08138F60 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r2, _08138F64 @ =0x00003290 + adds r0, r2 + bl sub_8139328 + bl sub_81367B0 + ldr r0, [r4] + ldr r3, _08138F68 @ =0x00003288 + adds r0, r3 + movs r1, 0x2 + b _08139092 + .align 2, 0 +_08138F60: .4byte gUnknown_203B140 +_08138F64: .4byte 0x00003290 +_08138F68: .4byte 0x00003288 +_08138F6C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08138F76 + b _08139094 +_08138F76: + ldr r0, [r6] + ldr r1, _08138F90 @ =0x00003268 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08138F9C + ldr r0, _08138F94 @ =gUnknown_203B16E + ldr r1, _08138F98 @ =gUnknown_203B16D + ldrb r1, [r1] + strb r1, [r0] + strb r5, [r2] + b _08139094 + .align 2, 0 +_08138F90: .4byte 0x00003268 +_08138F94: .4byte gUnknown_203B16E +_08138F98: .4byte gUnknown_203B16D +_08138F9C: + ldr r1, _08138FD8 @ =gUnknown_203B16D + ldrb r0, [r1] + cmp r0, 0x4 + bne _08138FAA + strb r5, [r1] + ldr r0, _08138FDC @ =gUnknown_203B16E + strb r5, [r0] +_08138FAA: + movs r0, 0x1 + bl sub_813A0E8 + ldr r0, [r6] + ldr r2, _08138FE0 @ =0x00003224 + adds r0, r2 + strb r5, [r0] +_08138FB8: + ldr r0, [r6] + ldr r4, _08138FE4 @ =0x00003214 + adds r0, r4 + ldrb r0, [r0] + bl sub_8138414 + ldr r1, [r6] + adds r1, r4 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + ldr r0, [r6] + adds r0, r7 + mov r3, r8 + strb r3, [r0] + b _08139094 + .align 2, 0 +_08138FD8: .4byte gUnknown_203B16D +_08138FDC: .4byte gUnknown_203B16E +_08138FE0: .4byte 0x00003224 +_08138FE4: .4byte 0x00003214 +_08138FE8: + ldr r2, _08139004 @ =gUnknown_3005090 + ldr r6, _08139008 @ =0x00003018 + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _0813900C @ =sub_81351A0 + str r1, [r0] + movs r0, 0 + strb r0, [r3] + b _08139094 + .align 2, 0 +_08139004: .4byte gUnknown_3005090 +_08139008: .4byte 0x00003018 +_0813900C: .4byte sub_81351A0 +_08139010: + bl sub_8136F4C + bl sub_81374E8 + bl sub_8137BD0 + ldr r0, [r6] + adds r0, r7 + movs r1, 0x3 + b _08139092 +_08139024: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08139030 @ =gUnknown_203B16D + strb r4, [r0] + b _08139094 + .align 2, 0 +_08139030: .4byte gUnknown_203B16D +_08139034: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08139094 + bl sub_800B270 + cmp r0, 0x1 + beq _08139094 + ldr r0, [r6] + ldr r1, _081390A0 @ =0x00003003 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r6] + ldr r2, _081390A4 @ =0x00003004 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r6] + ldr r3, _081390A8 @ =0x00003005 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r6] + ldr r1, _081390AC @ =0x00003006 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r0, [r6] + adds r0, r7 + movs r1, 0 +_08139092: + strb r1, [r0] +_08139094: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081390A0: .4byte 0x00003003 +_081390A4: .4byte 0x00003004 +_081390A8: .4byte 0x00003005 +_081390AC: .4byte 0x00003006 + thumb_func_end sub_8138CD8 + + thumb_func_start sub_81390B0 +sub_81390B0: @ 81390B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldr r0, _081391D8 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _081391DC @ =0x000032f4 + adds r0, r1 + ldr r6, [r0] + bl sub_8138B20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + adds r6, r0 + ldr r3, _081391E0 @ =gUnknown_203B16D + ldrb r1, [r3] + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + mov r1, sp + adds r1, 0x2 + str r1, [sp, 0x8] + strh r0, [r1] + ldr r3, _081391E4 @ =gUnknown_203B16E + mov r8, r3 + ldrb r1, [r3] + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + ldr r0, _081391E0 @ =gUnknown_203B16D + ldrb r1, [r0] + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FBE8 + movs r1, 0x5 + add r1, sp + mov r10, r1 + strb r0, [r1] + mov r3, r8 + ldrb r1, [r3] + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FBE8 + add r7, sp, 0x4 + strb r0, [r7] + adds r0, r6, 0 + movs r1, 0x15 + bl sub_803FBE8 + mov r4, sp + adds r4, 0x6 + strb r0, [r4] + ldr r5, _081391E8 @ =gUnknown_825DEA1 + ldr r0, _081391E0 @ =gUnknown_203B16D + ldrb r1, [r0] + adds r0, r1, r5 + ldrb r0, [r0] + mov r9, r0 + ldrb r3, [r4] + adds r2, r3, 0 + mov r0, r9 + ands r2, r0 + lsls r1, 1 + asrs r2, r1 + lsls r2, 24 + lsrs r2, 24 + mov r1, r8 + ldrb r0, [r1] + adds r1, r0, r5 + ldrb r1, [r1] + ands r1, r3 + lsls r0, 1 + asrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r9 + bics r3, r0 + strb r3, [r4] + mov r3, r8 + ldrb r0, [r3] + adds r0, r5 + ldrb r3, [r0] + ldrb r0, [r4] + bics r0, r3 + strb r0, [r4] + mov r3, r8 + ldrb r0, [r3] + lsls r0, 1 + lsls r2, r0 + ldr r3, _081391E0 @ =gUnknown_203B16D + ldrb r0, [r3] + lsls r0, 1 + lsls r1, r0 + adds r2, r1 + ldrb r0, [r4] + orrs r0, r2 + strb r0, [r4] + ldrb r1, [r3] + adds r1, 0xD + adds r0, r6, 0 + mov r2, sp + bl sub_804037C + mov r0, r8 + ldrb r1, [r0] + adds r1, 0xD + adds r0, r6, 0 + ldr r2, [sp, 0x8] + bl sub_804037C + ldr r3, _081391E0 @ =gUnknown_203B16D + ldrb r1, [r3] + adds r1, 0x11 + adds r0, r6, 0 + adds r2, r7, 0 + bl sub_804037C + mov r0, r8 + ldrb r1, [r0] + adds r1, 0x11 + adds r0, r6, 0 + mov r2, r10 + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x15 + adds r2, r4, 0 + bl sub_804037C + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081391D8: .4byte gUnknown_203B140 +_081391DC: .4byte 0x000032f4 +_081391E0: .4byte gUnknown_203B16D +_081391E4: .4byte gUnknown_203B16E +_081391E8: .4byte gUnknown_825DEA1 + thumb_func_end sub_81390B0 + + thumb_func_start sub_81391EC +sub_81391EC: @ 81391EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldr r0, _08139314 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08139318 @ =0x000032f4 + adds r0, r1 + ldr r6, [r0] + bl sub_8138B20 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + adds r6, r1 + ldr r3, _0813931C @ =gUnknown_203B16D + ldrb r1, [r3] + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FD44 + mov r1, sp + adds r1, 0x2 + str r1, [sp, 0x8] + strh r0, [r1] + ldr r3, _08139320 @ =gUnknown_203B16E + mov r8, r3 + ldrb r1, [r3] + adds r1, 0xD + adds r0, r6, 0 + bl sub_803FD44 + mov r1, sp + strh r0, [r1] + ldr r0, _0813931C @ =gUnknown_203B16D + ldrb r1, [r0] + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FD44 + movs r1, 0x5 + add r1, sp + mov r10, r1 + strb r0, [r1] + mov r3, r8 + ldrb r1, [r3] + adds r1, 0x11 + adds r0, r6, 0 + bl sub_803FD44 + add r7, sp, 0x4 + strb r0, [r7] + adds r0, r6, 0 + movs r1, 0x15 + bl sub_803FD44 + mov r4, sp + adds r4, 0x6 + strb r0, [r4] + ldr r5, _08139324 @ =gUnknown_825DEA1 + ldr r0, _0813931C @ =gUnknown_203B16D + ldrb r1, [r0] + adds r0, r1, r5 + ldrb r0, [r0] + mov r9, r0 + ldrb r3, [r4] + adds r2, r3, 0 + mov r0, r9 + ands r2, r0 + lsls r1, 1 + asrs r2, r1 + lsls r2, 24 + lsrs r2, 24 + mov r1, r8 + ldrb r0, [r1] + adds r1, r0, r5 + ldrb r1, [r1] + ands r1, r3 + lsls r0, 1 + asrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r9 + bics r3, r0 + strb r3, [r4] + mov r3, r8 + ldrb r0, [r3] + adds r0, r5 + ldrb r3, [r0] + ldrb r0, [r4] + bics r0, r3 + strb r0, [r4] + mov r3, r8 + ldrb r0, [r3] + lsls r0, 1 + lsls r2, r0 + ldr r3, _0813931C @ =gUnknown_203B16D + ldrb r0, [r3] + lsls r0, 1 + lsls r1, r0 + adds r2, r1 + ldrb r0, [r4] + orrs r0, r2 + strb r0, [r4] + ldrb r1, [r3] + adds r1, 0xD + adds r0, r6, 0 + mov r2, sp + bl sub_80404D0 + mov r0, r8 + ldrb r1, [r0] + adds r1, 0xD + adds r0, r6, 0 + ldr r2, [sp, 0x8] + bl sub_80404D0 + ldr r3, _0813931C @ =gUnknown_203B16D + ldrb r1, [r3] + adds r1, 0x11 + adds r0, r6, 0 + adds r2, r7, 0 + bl sub_80404D0 + mov r0, r8 + ldrb r1, [r0] + adds r1, 0x11 + adds r0, r6, 0 + mov r2, r10 + bl sub_80404D0 + adds r0, r6, 0 + movs r1, 0x15 + adds r2, r4, 0 + bl sub_80404D0 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08139314: .4byte gUnknown_203B140 +_08139318: .4byte 0x000032f4 +_0813931C: .4byte gUnknown_203B16D +_08139320: .4byte gUnknown_203B16E +_08139324: .4byte gUnknown_825DEA1 + thumb_func_end sub_81391EC + + thumb_func_start sub_8139328 +sub_8139328: @ 8139328 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _08139358 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _0813935C @ =0x0000321c + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08139360 + adds r2, 0xD8 + adds r0, r1, r2 + ldr r4, [r0] + bl sub_8138B20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + adds r1, r4 + adds r0, r5, 0 + movs r2, 0x64 + bl memcpy + b _0813937E + .align 2, 0 +_08139358: .4byte gUnknown_203B140 +_0813935C: .4byte 0x0000321c +_08139360: + ldr r2, _08139384 @ =0x000032f4 + adds r0, r1, r2 + ldr r4, [r0] + bl sub_8138B20 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + adds r4, r1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_803E774 +_0813937E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08139384: .4byte 0x000032f4 + thumb_func_end sub_8139328 + + thumb_func_start sub_8139388 +sub_8139388: @ 8139388 + push {r4,lr} + ldr r4, _081393BC @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _081393C0 @ =0x00003290 + adds r0, r1 + ldr r1, _081393C4 @ =gUnknown_203B16D + ldrb r1, [r1] + bl sub_8138BEC + lsls r0, 16 + lsrs r0, 16 + bl sub_8125A90 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081393CC + ldr r0, [r4] + ldr r1, _081393C8 @ =0x00003208 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3 + beq _081393CC + movs r0, 0 + b _081393CE + .align 2, 0 +_081393BC: .4byte gUnknown_203B140 +_081393C0: .4byte 0x00003290 +_081393C4: .4byte gUnknown_203B16D +_081393C8: .4byte 0x00003208 +_081393CC: + movs r0, 0x1 +_081393CE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8139388 + + thumb_func_start sub_81393D4 +sub_81393D4: @ 81393D4 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _081393F8 @ =gUnknown_203B140 + ldr r0, [r1] + ldr r3, _081393FC @ =0x00003288 + adds r0, r3 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0x6 + bls _081393EE + b _08139748 +_081393EE: + lsls r0, 2 + ldr r1, _08139400 @ =_08139404 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081393F8: .4byte gUnknown_203B140 +_081393FC: .4byte 0x00003288 +_08139400: .4byte _08139404 + .align 2, 0 +_08139404: + .4byte _08139420 + .4byte _08139444 + .4byte _0813946C + .4byte _08139604 + .4byte _08139628 + .4byte _081396A8 + .4byte _08139710 +_08139420: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _0813943C @ =gUnknown_203B140 + ldr r1, [r0] + ldr r4, _08139440 @ =0x00003288 + adds r1, r4 + b _08139728 + .align 2, 0 +_0813943C: .4byte gUnknown_203B140 +_08139440: .4byte 0x00003288 +_08139444: + ldr r0, _08139460 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08139452 + b _0813975A +_08139452: + bl sub_813B784 + ldr r0, _08139464 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _08139468 @ =0x00003288 + adds r1, r0 + b _08139728 + .align 2, 0 +_08139460: .4byte gUnknown_2037AB8 +_08139464: .4byte gUnknown_203B140 +_08139468: .4byte 0x00003288 +_0813946C: + ldr r0, _081394BC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _081394DC + ldr r4, _081394C0 @ =gUnknown_203B16D + ldrb r0, [r4] + cmp r0, 0 + beq _081394CC + ldr r0, [r5] + ldr r1, _081394C4 @ =0x00003288 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + movs r0, 0x5 + bl sub_80722CC + ldrb r4, [r4] + cmp r4, 0 + bne _0813949C + b _0813975A +_0813949C: + ldr r0, [r5] + ldr r2, _081394C8 @ =0x00003258 + adds r1, r0, r2 +_081394A2: + subs r4, 0x1 + lsls r0, r4, 1 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, 0 + beq _081394B0 + b _08139738 +_081394B0: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _081394A2 + b _0813975A + .align 2, 0 +_081394BC: .4byte gUnknown_30030F0 +_081394C0: .4byte gUnknown_203B16D +_081394C4: .4byte 0x00003288 +_081394C8: .4byte 0x00003258 +_081394CC: + movs r0, 0x4 + strb r0, [r4] + ldr r0, [r5] + ldr r3, _081394D8 @ =0x00003288 + adds r0, r3 + b _08139556 + .align 2, 0 +_081394D8: .4byte 0x00003288 +_081394DC: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08139568 + ldr r3, _08139538 @ =gUnknown_203B16D + ldrb r0, [r3] + cmp r0, 0x3 + bhi _08139548 + movs r2, 0x4 + ldr r0, [r5] + ldr r4, _0813953C @ =0x00003288 + adds r0, r4 + movs r1, 0x3 + strb r1, [r0] + ldr r1, [r5] + subs r4, 0x20 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08139506 + movs r2, 0x3 +_08139506: + ldrb r4, [r3] + cmp r4, r2 + bcs _08139526 + ldr r0, _08139540 @ =0x00003258 + adds r1, r0 +_08139510: + adds r4, 0x1 + lsls r0, r4, 1 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, 0 + beq _0813951E + b _08139738 +_0813951E: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, r2 + bcc _08139510 +_08139526: + ldr r0, [r5] + ldr r1, _08139544 @ =0x00003268 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08139534 + b _0813975A +_08139534: + b _08139738 + .align 2, 0 +_08139538: .4byte gUnknown_203B16D +_0813953C: .4byte 0x00003288 +_08139540: .4byte 0x00003258 +_08139544: .4byte 0x00003268 +_08139548: + cmp r0, 0x4 + beq _0813954E + b _0813975A +_0813954E: + strb r2, [r3] + ldr r0, [r5] + ldr r2, _08139564 @ =0x00003288 + adds r0, r2 +_08139556: + movs r1, 0x3 + strb r1, [r0] + movs r0, 0x5 + bl sub_80722CC + b _0813975A + .align 2, 0 +_08139564: .4byte 0x00003288 +_08139568: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081395D4 + bl sub_8139388 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08139584 + ldr r0, _081395A4 @ =gUnknown_203B16D + ldrb r0, [r0] + cmp r0, 0x4 + bne _081395B8 +_08139584: + movs r0, 0x5 + bl sub_80722CC + ldr r2, _081395A8 @ =gUnknown_203B16E + ldr r0, _081395A4 @ =gUnknown_203B16D + ldrb r0, [r0] + strb r0, [r2] + ldr r1, _081395AC @ =gUnknown_20370C2 + ldrb r0, [r2] + strh r0, [r1] + ldr r0, _081395B0 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r3, _081395B4 @ =0x00003288 + adds r0, r3 + b _081395F0 + .align 2, 0 +_081395A4: .4byte gUnknown_203B16D +_081395A8: .4byte gUnknown_203B16E +_081395AC: .4byte gUnknown_20370C2 +_081395B0: .4byte gUnknown_203B140 +_081395B4: .4byte 0x00003288 +_081395B8: + movs r0, 0x1A + bl sub_80722CC + ldr r0, _081395CC @ =gUnknown_203B140 + ldr r0, [r0] + ldr r4, _081395D0 @ =0x00003288 + adds r0, r4 + movs r1, 0x5 + strb r1, [r0] + b _0813975A + .align 2, 0 +_081395CC: .4byte gUnknown_203B140 +_081395D0: .4byte 0x00003288 +_081395D4: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081395DE + b _0813975A +_081395DE: + ldr r1, _081395F8 @ =gUnknown_203B16E + movs r0, 0x4 + strb r0, [r1] + ldr r1, _081395FC @ =gUnknown_20370C2 + movs r0, 0x4 + strh r0, [r1] + ldr r0, [r5] + ldr r1, _08139600 @ =0x00003288 + adds r0, r1 +_081395F0: + movs r1, 0x6 + strb r1, [r0] + b _0813975A + .align 2, 0 +_081395F8: .4byte gUnknown_203B16E +_081395FC: .4byte gUnknown_20370C2 +_08139600: .4byte 0x00003288 +_08139604: + bl sub_8136F4C + bl sub_81374E8 + bl sub_8137BD0 + ldr r0, _08139620 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _08139624 @ =0x00003288 + adds r0, r2 + movs r1, 0x4 + strb r1, [r0] + b _0813975A + .align 2, 0 +_08139620: .4byte gUnknown_203B140 +_08139624: .4byte 0x00003288 +_08139628: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08139636 + b _0813975A +_08139636: + bl sub_800B270 + cmp r0, 0x1 + bne _08139640 + b _0813975A +_08139640: + ldr r4, _08139690 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r3, _08139694 @ =0x00003003 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r1, _08139698 @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _0813969C @ =0x00003005 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r3, _081396A0 @ =0x00003006 + adds r0, r3 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r0, [r4] + ldr r4, _081396A4 @ =0x00003288 + adds r0, r4 + b _081396F8 + .align 2, 0 +_08139690: .4byte gUnknown_203B140 +_08139694: .4byte 0x00003003 +_08139698: .4byte 0x00003004 +_0813969C: .4byte 0x00003005 +_081396A0: .4byte 0x00003006 +_081396A4: .4byte 0x00003288 +_081396A8: + ldr r0, [r5] + ldr r4, _08139700 @ =0x00003004 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _08139704 @ =gUnknown_8463FA4 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + ldr r1, _08139708 @ =gUnknown_8419CB9 + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x7 + movs r3, 0x2A + bl sub_812E5A4 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r0, [r5] + ldr r1, _0813970C @ =0x00003288 + adds r0, r1 +_081396F8: + movs r1, 0x2 + strb r1, [r0] + b _0813975A + .align 2, 0 +_08139700: .4byte 0x00003004 +_08139704: .4byte gUnknown_8463FA4 +_08139708: .4byte gUnknown_8419CB9 +_0813970C: .4byte 0x00003288 +_08139710: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08139730 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _08139734 @ =0x00003288 + adds r1, r2 +_08139728: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0813975A + .align 2, 0 +_08139730: .4byte gUnknown_203B140 +_08139734: .4byte 0x00003288 +_08139738: + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08139744 @ =gUnknown_203B16D + strb r4, [r0] + b _0813975A + .align 2, 0 +_08139744: .4byte gUnknown_203B16D +_08139748: + ldr r0, _08139764 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0813975A + adds r0, r2, 0 + bl sub_8137E64 +_0813975A: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08139764: .4byte gUnknown_2037AB8 + thumb_func_end sub_81393D4 + + thumb_func_start sub_8139768 +sub_8139768: @ 8139768 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, _081397A4 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r2, _081397A8 @ =0x00003020 + adds r1, r2 + ldrb r1, [r1] + adds r6, r0, 0 + cmp r1, 0x1 + bhi _08139858 + ldr r3, _081397AC @ =gUnknown_203B170 + ldr r2, [r3] + ldrb r0, [r2, 0x4] + adds r1, r0, 0x1 + strb r1, [r2, 0x4] + lsls r0, 24 + lsrs r0, 24 + adds r5, r3, 0 + cmp r0, 0x1 + bls _08139858 + ldr r3, [r5] + ldrb r0, [r3, 0x8] + cmp r0, 0x1 + beq _081397D8 + cmp r0, 0x1 + bgt _081397B0 + cmp r0, 0 + beq _081397B6 + b _0813981C + .align 2, 0 +_081397A4: .4byte gUnknown_203B140 +_081397A8: .4byte 0x00003020 +_081397AC: .4byte gUnknown_203B170 +_081397B0: + cmp r0, 0x2 + beq _081397FC + b _0813981C +_081397B6: + ldr r2, _081397D4 @ =gUnknown_8463FBE + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 24 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r1, 0x3 + b _0813983A + .align 2, 0 +_081397D4: .4byte gUnknown_8463FBE +_081397D8: + ldr r2, _081397F8 @ =gUnknown_8463FC1 + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 24 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + movs r1, 0x5 + b _0813983A + .align 2, 0 +_081397F8: .4byte gUnknown_8463FC1 +_081397FC: + ldr r2, _08139818 @ =gUnknown_8463FC6 + ldrb r0, [r3] + adds r1, r0, 0x1 + strb r1, [r3] + lsls r0, 24 + lsrs r0, 24 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r4, 0x22] + adds r0, r1 + b _08139836 + .align 2, 0 +_08139818: .4byte gUnknown_8463FC6 +_0813981C: + ldr r3, _08139860 @ =gUnknown_8463FCD + ldr r2, [r5] + ldrb r0, [r2] + adds r1, r0, 0x1 + strb r1, [r2] + lsls r0, 24 + lsrs r0, 24 + adds r0, r3 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r2, [r4, 0x22] + adds r0, r2 +_08139836: + strh r0, [r4, 0x22] + movs r1, 0x7 +_0813983A: + ldr r2, [r5] + ldrb r0, [r2] + cmp r0, r1 + bcc _08139852 + movs r0, 0 + strb r0, [r2] + ldr r1, [r6] + ldr r0, _08139864 @ =0x00003020 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08139852: + ldr r1, [r5] + movs r0, 0 + strb r0, [r1, 0x4] +_08139858: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08139860: .4byte gUnknown_8463FCD +_08139864: .4byte 0x00003020 + thumb_func_end sub_8139768 + + thumb_func_start sub_8139868 +sub_8139868: @ 8139868 + push {r4-r6,lr} + adds r3, r0, 0 + ldr r5, _081398C0 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r6, _081398C4 @ =0x00003020 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x1 + bhi _0813994C + ldr r4, _081398C8 @ =gUnknown_203B170 + ldr r2, [r4] + ldrb r0, [r2, 0x8] + cmp r0, 0x1 + beq _081398D0 + cmp r0, 0x1 + ble _0813988C + cmp r0, 0x2 + beq _08139908 +_0813988C: + ldrb r0, [r2, 0x4] + adds r1, r0, 0x1 + strb r1, [r2, 0x4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x77 + bls _0813994C + ldr r2, _081398CC @ =gUnknown_8463FD4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r2, [r3, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r3, 0x20] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + bls _0813994C + b _0813993A + .align 2, 0 +_081398C0: .4byte gUnknown_203B140 +_081398C4: .4byte 0x00003020 +_081398C8: .4byte gUnknown_203B170 +_081398CC: .4byte gUnknown_8463FD4 +_081398D0: + ldrb r0, [r2, 0x4] + adds r1, r0, 0x1 + strb r1, [r2, 0x4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x59 + bls _0813994C + ldr r2, _08139904 @ =gUnknown_8463FDF + ldr r1, [r4] + ldrb r0, [r1] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r2, [r3, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r3, 0x20] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + bls _0813994C + b _0813993A + .align 2, 0 +_08139904: .4byte gUnknown_8463FDF +_08139908: + ldrb r0, [r2, 0x4] + adds r1, r0, 0x1 + strb r1, [r2, 0x4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3B + bls _0813994C + ldr r2, _08139954 @ =gUnknown_8463FEA + ldr r1, [r4] + ldrb r0, [r1] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r2, [r3, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r3, 0x20] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE + bls _0813994C +_0813993A: + ldr r0, [r4] + strb r2, [r0] + ldr r0, [r4] + strb r2, [r0, 0x4] + ldr r1, [r5] + adds r1, r6 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0813994C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08139954: .4byte gUnknown_8463FEA + thumb_func_end sub_8139868 + + thumb_func_start nullsub_96 +nullsub_96: @ 8139958 + bx lr + thumb_func_end nullsub_96 + + thumb_func_start sub_813995C +sub_813995C: @ 813995C + push {r4-r7,lr} + sub sp, 0x14 + ldr r4, _081399CC @ =gUnknown_203B170 + movs r0, 0xC + bl sub_8002BB0 + str r0, [r4] + ldr r5, _081399D0 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r4, _081399D4 @ =0x00003290 + adds r0, r4 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + bl sub_803FBE8 + adds r6, r0, 0 + ldr r0, [r5] + adds r0, r4 + movs r1, 0x1 + bl sub_803FBE8 + adds r4, r0, 0 + ldr r5, [r5] + ldr r1, _081399D8 @ =0x000032f8 + adds r0, r5, r1 + ldr r1, [r0] + ldr r0, _081399DC @ =sub_804CF14 + cmp r1, r0 + bne _081399E8 + ldr r1, _081399E0 @ =0x00003024 + adds r0, r5, r1 + ldr r5, [r0] + cmp r5, 0x1 + bne _08139A24 + movs r0, 0x3C + str r0, [sp] + movs r0, 0x41 + str r0, [sp, 0x4] + movs r0, 0xC + str r0, [sp, 0x8] + ldr r0, _081399E4 @ =0x0000ffff + str r0, [sp, 0xC] + str r5, [sp, 0x10] + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r6, 0 + movs r3, 0x1 + bl sub_810C16C + b _08139A40 + .align 2, 0 +_081399CC: .4byte gUnknown_203B170 +_081399D0: .4byte gUnknown_203B140 +_081399D4: .4byte 0x00003290 +_081399D8: .4byte 0x000032f8 +_081399DC: .4byte sub_804CF14 +_081399E0: .4byte 0x00003024 +_081399E4: .4byte 0x0000ffff +_081399E8: + ldr r0, _08139A1C @ =gUnknown_203B16C + ldrb r1, [r0] + movs r0, 0x3 + bl sub_804455C + lsls r0, 24 + cmp r0, 0 + beq _08139A24 + movs r0, 0x3C + str r0, [sp] + movs r0, 0x41 + str r0, [sp, 0x4] + movs r0, 0xC + str r0, [sp, 0x8] + ldr r0, _08139A20 @ =0x0000ffff + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r6, 0 + movs r3, 0x1 + bl sub_810C16C + b _08139A40 + .align 2, 0 +_08139A1C: .4byte gUnknown_203B16C +_08139A20: .4byte 0x0000ffff +_08139A24: + movs r0, 0x3C + str r0, [sp] + movs r0, 0x41 + str r0, [sp, 0x4] + movs r0, 0xC + str r0, [sp, 0x8] + ldr r0, _08139A70 @ =0x0000ffff + str r0, [sp, 0xC] + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r6, 0 + movs r3, 0x1 + bl sub_810C1CC +_08139A40: + lsls r0, 16 + lsrs r5, r0, 16 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r1, _08139A74 @ =gUnknown_202063C + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r7, 0 + bl sub_80441F4 + lsls r0, 24 + cmp r0, 0 + bne _08139A78 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _08139A86 + .align 2, 0 +_08139A70: .4byte 0x0000ffff +_08139A74: .4byte gUnknown_202063C +_08139A78: + adds r2, r4, 0 + adds r2, 0x3F + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_08139A86: + ldr r0, _08139AA4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08139AA8 @ =0x00003010 + adds r0, r1 + strb r5, [r0] + movs r0, 0x1 + bl sub_8139C44 + adds r0, r5, 0 + bl sub_8139AAC + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08139AA4: .4byte gUnknown_203B140 +_08139AA8: .4byte 0x00003010 + thumb_func_end sub_813995C + + thumb_func_start sub_8139AAC +sub_8139AAC: @ 8139AAC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r1, _08139AF4 @ =gUnknown_203B140 + ldr r0, [r1] + ldr r2, _08139AF8 @ =0x00003020 + adds r0, r2 + movs r6, 0 + strb r6, [r0] + ldr r2, [r1] + movs r3, 0xC8 + lsls r3, 6 + adds r0, r2, r3 + ldrb r4, [r0] + adds r7, r1, 0 + cmp r4, 0x1 + bne _08139B3C + ldr r1, _08139AFC @ =0x00003290 + adds r0, r2, r1 + movs r1, 0x20 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x5 + bhi _08139B04 + ldr r0, _08139B00 @ =gUnknown_203B170 + ldr r1, [r0] + movs r0, 0x2 + strb r0, [r1, 0x8] + b _08139B1E + .align 2, 0 +_08139AF4: .4byte gUnknown_203B140 +_08139AF8: .4byte 0x00003020 +_08139AFC: .4byte 0x00003290 +_08139B00: .4byte gUnknown_203B170 +_08139B04: + cmp r0, 0xA + bhi _08139B14 + ldr r0, _08139B10 @ =gUnknown_203B170 + ldr r0, [r0] + strb r4, [r0, 0x8] + b _08139B1E + .align 2, 0 +_08139B10: .4byte gUnknown_203B170 +_08139B14: + cmp r1, 0x28 + bhi _08139B1E + ldr r0, _08139B30 @ =gUnknown_203B170 + ldr r0, [r0] + strb r6, [r0, 0x8] +_08139B1E: + ldr r0, _08139B34 @ =gUnknown_202063C + mov r2, r8 + lsls r1, r2, 4 + add r1, r8 + lsls r1, 2 + adds r0, 0x1C + adds r1, r0 + ldr r0, _08139B38 @ =sub_8139868 + b _08139C28 + .align 2, 0 +_08139B30: .4byte gUnknown_203B170 +_08139B34: .4byte gUnknown_202063C +_08139B38: .4byte sub_8139868 +_08139B3C: + ldr r3, _08139B60 @ =0x0000326c + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _08139B6C + cmp r0, 0x6 + beq _08139B6C + cmp r0, 0x7 + beq _08139C2A + ldr r0, _08139B64 @ =gUnknown_202063C + mov r2, r8 + lsls r1, r2, 4 + add r1, r8 + lsls r1, 2 + adds r0, 0x1C + adds r1, r0 + ldr r0, _08139B68 @ =nullsub_96 + b _08139C28 + .align 2, 0 +_08139B60: .4byte 0x0000326c +_08139B64: .4byte gUnknown_202063C +_08139B68: .4byte nullsub_96 +_08139B6C: + ldr r0, [r7] + ldr r4, _08139B98 @ =0x00003290 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, [r7] + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r6, r0 + bne _08139BA0 + ldr r0, _08139B9C @ =gUnknown_203B170 + ldr r1, [r0] + movs r0, 0x3 + b _08139C16 + .align 2, 0 +_08139B98: .4byte 0x00003290 +_08139B9C: .4byte gUnknown_203B170 +_08139BA0: + bl __floatsidf + str r0, [sp] + str r1, [sp, 0x4] + ldr r3, _08139BDC @ =0x9999999a + ldr r2, _08139BD8 @ =0x3fe99999 + bl __muldf3 + adds r5, r1, 0 + adds r4, r0, 0 + adds r0, r6, 0 + bl __floatsidf + adds r7, r1, 0 + adds r6, r0, 0 + adds r1, r5, 0 + adds r0, r4, 0 + adds r3, r7, 0 + adds r2, r6, 0 + bl __ledf2 + cmp r0, 0 + bgt _08139BE4 + ldr r0, _08139BE0 @ =gUnknown_203B170 + ldr r1, [r0] + movs r0, 0x2 + b _08139C16 + .align 2, 0 +_08139BD8: .4byte 0x3fe99999 +_08139BDC: .4byte 0x9999999a +_08139BE0: .4byte gUnknown_203B170 +_08139BE4: + ldr r3, _08139C08 @ =0x33333333 + ldr r2, _08139C04 @ =0x3fe33333 + ldr r0, [sp] + ldr r1, [sp, 0x4] + bl __muldf3 + adds r3, r7, 0 + adds r2, r6, 0 + bl __ledf2 + cmp r0, 0 + bgt _08139C10 + ldr r0, _08139C0C @ =gUnknown_203B170 + ldr r1, [r0] + movs r0, 0x1 + b _08139C16 + .align 2, 0 +_08139C04: .4byte 0x3fe33333 +_08139C08: .4byte 0x33333333 +_08139C0C: .4byte gUnknown_203B170 +_08139C10: + ldr r0, _08139C38 @ =gUnknown_203B170 + ldr r1, [r0] + movs r0, 0 +_08139C16: + strb r0, [r1, 0x8] + ldr r0, _08139C3C @ =gUnknown_202063C + mov r3, r8 + lsls r1, r3, 4 + add r1, r8 + lsls r1, 2 + adds r0, 0x1C + adds r1, r0 + ldr r0, _08139C40 @ =sub_8139768 +_08139C28: + str r0, [r1] +_08139C2A: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08139C38: .4byte gUnknown_203B170 +_08139C3C: .4byte gUnknown_202063C +_08139C40: .4byte sub_8139768 + thumb_func_end sub_8139AAC + + thumb_func_start sub_8139C44 +sub_8139C44: @ 8139C44 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08139C74 @ =gUnknown_202063C + ldr r1, _08139C78 @ =gUnknown_203B140 + ldr r1, [r1] + ldr r2, _08139C7C @ =0x00003010 + adds r1, r2 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r3 + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08139C74: .4byte gUnknown_202063C +_08139C78: .4byte gUnknown_203B140 +_08139C7C: .4byte 0x00003010 + thumb_func_end sub_8139C44 + + thumb_func_start sub_8139C80 +sub_8139C80: @ 8139C80 + push {r4,lr} + ldr r0, _08139CA4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08139CA8 @ =0x00003010 + adds r0, r1 + ldrb r0, [r0] + bl sub_810C214 + ldr r4, _08139CAC @ =gUnknown_203B170 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139CA4: .4byte gUnknown_203B140 +_08139CA8: .4byte 0x00003010 +_08139CAC: .4byte gUnknown_203B170 + thumb_func_end sub_8139C80 + + thumb_func_start sub_8139CB0 +sub_8139CB0: @ 8139CB0 + push {r4,lr} + ldr r0, _08139CD4 @ =gUnknown_203B140 + ldr r1, [r0] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08139CD8 + adds r2, 0x90 + adds r0, r1, r2 + movs r1, 0x26 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + b _08139CDA + .align 2, 0 +_08139CD4: .4byte gUnknown_203B140 +_08139CD8: + movs r0, 0 +_08139CDA: + bl sub_80EF52C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_804BEF4 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + ldr r1, _08139D40 @ =gUnknown_82606F4 + adds r0, r1 + movs r1, 0x6A + movs r2, 0x58 + movs r3, 0 + bl sub_8006F8C + ldr r2, _08139D44 @ =gUnknown_203B140 + ldr r1, [r2] + ldr r3, _08139D48 @ =0x0000300c + adds r1, r3 + strb r0, [r1] + ldr r4, _08139D4C @ =gUnknown_202063C + ldr r2, [r2] + adds r2, r3 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08139D50 @ =nullsub_8 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] + movs r0, 0x1 + bl sub_8139D54 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139D40: .4byte gUnknown_82606F4 +_08139D44: .4byte gUnknown_203B140 +_08139D48: .4byte 0x0000300c +_08139D4C: .4byte gUnknown_202063C +_08139D50: .4byte nullsub_8 + thumb_func_end sub_8139CB0 + + thumb_func_start sub_8139D54 +sub_8139D54: @ 8139D54 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08139D84 @ =gUnknown_202063C + ldr r1, _08139D88 @ =gUnknown_203B140 + ldr r1, [r1] + ldr r2, _08139D8C @ =0x0000300c + adds r1, r2 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r3 + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08139D84: .4byte gUnknown_202063C +_08139D88: .4byte gUnknown_203B140 +_08139D8C: .4byte 0x0000300c + thumb_func_end sub_8139D54 + + thumb_func_start sub_8139D90 +sub_8139D90: @ 8139D90 + push {lr} + ldr r0, _08139DB0 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08139DB4 @ =0x0000300c + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08139DB8 @ =gUnknown_202063C + adds r0, r1 + bl sub_804BD88 + pop {r0} + bx r0 + .align 2, 0 +_08139DB0: .4byte gUnknown_203B140 +_08139DB4: .4byte 0x0000300c +_08139DB8: .4byte gUnknown_202063C + thumb_func_end sub_8139D90 + + thumb_func_start sub_8139DBC +sub_8139DBC: @ 8139DBC + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _08139E08 @ =gUnknown_203B140 + ldr r0, [r6] + ldr r4, _08139E0C @ =0x00003290 + adds r0, r4 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [r6] + adds r0, r4 + movs r1, 0 + bl sub_803FBE8 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_80970A0 + ldr r2, [r6] + ldr r1, _08139E10 @ =0x000032f8 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _08139E14 @ =sub_804CF14 + cmp r1, r0 + bne _08139E2C + ldr r1, _08139E18 @ =0x00003024 + adds r0, r2, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _08139E20 + ldr r1, _08139E1C @ =nullsub_8 + movs r0, 0 + str r0, [sp] + str r4, [sp, 0x4] + b _08139E58 + .align 2, 0 +_08139E08: .4byte gUnknown_203B140 +_08139E0C: .4byte 0x00003290 +_08139E10: .4byte 0x000032f8 +_08139E14: .4byte sub_804CF14 +_08139E18: .4byte 0x00003024 +_08139E1C: .4byte nullsub_8 +_08139E20: + ldr r1, _08139E28 @ =nullsub_8 + movs r0, 0 + b _08139E52 + .align 2, 0 +_08139E28: .4byte nullsub_8 +_08139E2C: + ldr r0, _08139E48 @ =gUnknown_203B16C + ldrb r1, [r0] + movs r0, 0x3 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08139E50 + ldr r1, _08139E4C @ =nullsub_8 + movs r0, 0 + str r0, [sp] + str r4, [sp, 0x4] + b _08139E58 + .align 2, 0 +_08139E48: .4byte gUnknown_203B16C +_08139E4C: .4byte nullsub_8 +_08139E50: + ldr r1, _08139E98 @ =nullsub_8 +_08139E52: + str r0, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 +_08139E58: + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r2, 0x18 + movs r3, 0x20 + bl sub_8096E18 + ldr r1, [r6] + ldr r2, _08139E9C @ =0x00003014 + adds r1, r2 + strb r0, [r1] + adds r0, r5, 0 + bl sub_80441F4 + lsls r0, 24 + cmp r0, 0 + bne _08139EA8 + ldr r2, _08139EA0 @ =gUnknown_202063C + ldr r0, _08139EA4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08139E9C @ =0x00003014 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + b _08139EC6 + .align 2, 0 +_08139E98: .4byte nullsub_8 +_08139E9C: .4byte 0x00003014 +_08139EA0: .4byte gUnknown_202063C +_08139EA4: .4byte gUnknown_203B140 +_08139EA8: + ldr r2, _08139ED8 @ =gUnknown_202063C + ldr r0, _08139EDC @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _08139EE0 @ =0x00003014 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3F + ldrb r2, [r0] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 +_08139EC6: + strb r1, [r0] + movs r0, 0x1 + bl sub_8139EE4 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08139ED8: .4byte gUnknown_202063C +_08139EDC: .4byte gUnknown_203B140 +_08139EE0: .4byte 0x00003014 + thumb_func_end sub_8139DBC + + thumb_func_start sub_8139EE4 +sub_8139EE4: @ 8139EE4 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08139F14 @ =gUnknown_202063C + ldr r1, _08139F18 @ =gUnknown_203B140 + ldr r1, [r1] + ldr r2, _08139F1C @ =0x00003014 + adds r1, r2 + ldrb r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r3 + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08139F14: .4byte gUnknown_202063C +_08139F18: .4byte gUnknown_203B140 +_08139F1C: .4byte 0x00003014 + thumb_func_end sub_8139EE4 + + thumb_func_start sub_8139F20 +sub_8139F20: @ 8139F20 + push {r4,lr} + ldr r4, _08139F54 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _08139F58 @ =0x00003290 + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8097138 + ldr r0, [r4] + ldr r1, _08139F5C @ =0x00003014 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08139F60 @ =gUnknown_202063C + adds r0, r1 + bl sub_8097070 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139F54: .4byte gUnknown_203B140 +_08139F58: .4byte 0x00003290 +_08139F5C: .4byte 0x00003014 +_08139F60: .4byte gUnknown_202063C + thumb_func_end sub_8139F20 + + thumb_func_start sub_8139F64 +sub_8139F64: @ 8139F64 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x30] + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + movs r6, 0x80 + lsls r6, 4 + adds r0, r6, 0 + bl sub_8002BB0 + str r0, [sp, 0x18] + adds r0, r6, 0 + bl sub_8002BB0 + add r5, sp, 0x18 + str r0, [r5, 0x4] + movs r0, 0xC + bl sub_8002BB0 + ldr r4, _0813A0BC @ =gUnknown_203B148 + str r0, [r4] + movs r0, 0xC + bl sub_8002BB0 + str r0, [r4, 0x4] + movs r0, 0xC + bl sub_8002BB0 + str r0, [r4, 0x8] + movs r0, 0xC + bl sub_8002BB0 + str r0, [r4, 0xC] + ldr r0, _0813A0C0 @ =gUnknown_8463740 + ldr r1, [sp, 0x18] + bl LZ77UnCompWram + ldr r0, _0813A0C4 @ =gUnknown_846386C + ldr r1, [r5, 0x4] + bl LZ77UnCompWram + movs r7, 0 + add r0, sp, 0x20 + mov r8, r0 + add r6, sp, 0x28 +_08139FCC: + movs r4, 0x1 + ands r4, r7 + lsls r0, r4, 2 + add r0, sp + adds r0, 0x18 + ldr r0, [r0] + str r0, [sp, 0x20] + ldr r1, [sp, 0x30] + adds r5, r1, r7 + lsls r0, r5, 16 + movs r1, 0x80 + lsls r1, 4 + orrs r0, r1 + mov r1, r8 + str r0, [r1, 0x4] + ldr r0, _0813A0C8 @ =gUnknown_8463720 + str r0, [sp, 0x28] + ldr r1, _0813A0CC @ =0xffff0000 + ldr r0, [r6, 0x4] + ands r0, r1 + mov r1, r9 + orrs r0, r1 + str r0, [r6, 0x4] + mov r0, sp + movs r1, 0 + mov r10, r1 + strh r5, [r0] + mov r1, r9 + strh r1, [r0, 0x2] + ldr r0, _0813A0D0 @ =gUnknown_846398C + str r0, [sp, 0x4] + ldr r0, _0813A0D4 @ =gUnknown_84639A4 + str r0, [sp, 0x8] + mov r0, r10 + str r0, [sp, 0xC] + ldr r0, _0813A0D8 @ =gUnknown_8231CFC + str r0, [sp, 0x10] + ldr r0, _0813A0DC @ =sub_813A124 + str r0, [sp, 0x14] + mov r0, r8 + bl sub_80086DC + adds r0, r6, 0 + bl sub_8008928 + lsls r1, r4, 6 + adds r1, 0x98 + ldr r0, _0813A0E0 @ =gUnknown_203B16D + ldrb r0, [r0] + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 18 + movs r0, 0x88 + lsls r0, 14 + adds r2, r0 + asrs r2, 16 + mov r0, sp + adds r3, r4, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0813A0BC @ =gUnknown_203B148 + lsls r1, r7, 2 + adds r3, r1, r2 + ldr r2, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0813A0E4 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + strh r7, [r2, 0x4] + ldr r0, [r3] + strh r5, [r0, 0x6] + ldr r0, [r3] + mov r1, r9 + strh r1, [r0, 0x8] + ldr r0, [r3] + ldr r0, [r0] + adds r0, 0x43 + strb r7, [r0] + cmp r7, 0x1 + bls _0813A07E + ldr r0, [r3] + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C +_0813A07E: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _08139FCC + movs r0, 0x1 + bl sub_813A0E8 + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _0813A09C + bl sub_8002BC4 + mov r0, r10 + str r0, [sp, 0x18] +_0813A09C: + ldr r0, [sp, 0x1C] + cmp r0, 0 + beq _0813A0AA + bl sub_8002BC4 + mov r1, r10 + str r1, [sp, 0x1C] +_0813A0AA: + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A0BC: .4byte gUnknown_203B148 +_0813A0C0: .4byte gUnknown_8463740 +_0813A0C4: .4byte gUnknown_846386C +_0813A0C8: .4byte gUnknown_8463720 +_0813A0CC: .4byte 0xffff0000 +_0813A0D0: .4byte gUnknown_846398C +_0813A0D4: .4byte gUnknown_84639A4 +_0813A0D8: .4byte gUnknown_8231CFC +_0813A0DC: .4byte sub_813A124 +_0813A0E0: .4byte gUnknown_203B16D +_0813A0E4: .4byte gUnknown_202063C + thumb_func_end sub_8139F64 + + thumb_func_start sub_813A0E8 +sub_813A0E8: @ 813A0E8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r6, _0813A120 @ =gUnknown_203B148 + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_0813A0FC: + lsls r0, r3, 2 + adds r0, r6 + ldr r0, [r0] + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _0813A0FC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813A120: .4byte gUnknown_203B148 + thumb_func_end sub_813A0E8 + + thumb_func_start sub_813A124 +sub_813A124: @ 813A124 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r6, 0 + ldr r3, _0813A19C @ =gUnknown_203B140 + ldr r4, _0813A1A0 @ =gUnknown_203B148 +_0813A132: + ldr r0, [r3] + ldr r1, _0813A1A4 @ =0x00003268 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0813A142 + cmp r6, 0x1 + bhi _0813A158 +_0813A142: + lsls r0, r6, 2 + adds r0, r4 + ldr r0, [r0] + ldr r2, [r0] + ldr r0, _0813A1A8 @ =gUnknown_203B16D + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, 0x22 + strh r0, [r2, 0x22] +_0813A158: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _0813A132 + ldr r1, [r3] + ldr r2, _0813A1A4 @ =0x00003268 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0813A1AC + subs r2, 0x54 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0813A20E + ldr r4, _0813A1A0 @ =gUnknown_203B148 + ldr r0, [r4] + ldr r1, [r0] + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r4, 0x4] + ldr r0, [r0] + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _0813A20E + .align 2, 0 +_0813A19C: .4byte gUnknown_203B140 +_0813A1A0: .4byte gUnknown_203B148 +_0813A1A4: .4byte 0x00003268 +_0813A1A8: .4byte gUnknown_203B16D +_0813A1AC: + movs r6, 0 + ldr r0, _0813A1F0 @ =gUnknown_203B148 + mov r9, r0 + mov r8, r6 + movs r7, 0x4 + movs r1, 0x5 + negs r1, r1 + mov r12, r1 +_0813A1BC: + lsls r0, r6, 2 + add r0, r9 + ldr r0, [r0] + ldr r3, [r0] + ldrh r0, [r3, 0x2E] + adds r1, r0, 0x1 + strh r1, [r3, 0x2E] + adds r4, r3, 0 + adds r4, 0x3E + ldrb r2, [r4] + movs r0, 0x4 + ands r0, r2 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _0813A1F4 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _0813A204 + mov r0, r12 + ands r0, r2 + strb r0, [r4] + mov r2, r8 + strh r2, [r3, 0x2E] + b _0813A204 + .align 2, 0 +_0813A1F0: .4byte gUnknown_203B148 +_0813A1F4: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _0813A204 + adds r0, r2, 0 + orrs r0, r7 + strb r0, [r4] + strh r5, [r3, 0x2E] +_0813A204: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1 + bls _0813A1BC +_0813A20E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_813A124 + + thumb_func_start sub_813A21C +sub_813A21C: @ 813A21C + push {r4-r6,lr} + movs r5, 0 + ldr r6, _0813A250 @ =gUnknown_203B148 +_0813A222: + lsls r0, r5, 2 + adds r4, r0, r6 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0 + beq _0813A232 + bl sub_8007804 +_0813A232: + ldr r0, [r4] + cmp r0, 0 + beq _0813A240 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0813A240: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _0813A222 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813A250: .4byte gUnknown_203B148 + thumb_func_end sub_813A21C + + thumb_func_start sub_813A254 +sub_813A254: @ 813A254 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _0813A310 @ =gUnknown_203B158 + mov r8, r0 + movs r0, 0x8 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + movs r4, 0x80 + lsls r4, 3 + adds r0, r4, 0 + bl sub_8002BB0 + adds r5, r0, 0 + ldr r0, _0813A314 @ =gUnknown_8E9BF48 + adds r1, r5, 0 + bl LZ77UnCompWram + mov r1, r8 + ldr r0, [r1] + cmp r0, 0 + beq _0813A2F0 + str r5, [sp, 0x18] + add r0, sp, 0x18 + lsls r1, r7, 16 + orrs r1, r4 + str r1, [r0, 0x4] + ldr r1, _0813A318 @ =gUnknown_8E9BF28 + str r1, [sp, 0x20] + ldr r2, _0813A31C @ =0xffff0000 + add r4, sp, 0x20 + ldr r1, [r4, 0x4] + ands r1, r2 + orrs r1, r6 + str r1, [r4, 0x4] + mov r1, sp + movs r2, 0 + strh r7, [r1] + strh r6, [r1, 0x2] + ldr r1, _0813A320 @ =gUnknown_84639AC + str r1, [sp, 0x4] + ldr r1, _0813A324 @ =gUnknown_84639F4 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _0813A328 @ =gUnknown_8231CFC + str r1, [sp, 0x10] + ldr r1, _0813A32C @ =nullsub_8 + str r1, [sp, 0x14] + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + mov r0, sp + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0813A330 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + strh r7, [r2, 0x4] + strh r6, [r2, 0x6] +_0813A2F0: + movs r0, 0x1 + bl sub_813A3B8 + bl sub_813A35C + cmp r5, 0 + beq _0813A304 + adds r0, r5, 0 + bl sub_8002BC4 +_0813A304: + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A310: .4byte gUnknown_203B158 +_0813A314: .4byte gUnknown_8E9BF48 +_0813A318: .4byte gUnknown_8E9BF28 +_0813A31C: .4byte 0xffff0000 +_0813A320: .4byte gUnknown_84639AC +_0813A324: .4byte gUnknown_84639F4 +_0813A328: .4byte gUnknown_8231CFC +_0813A32C: .4byte nullsub_8 +_0813A330: .4byte gUnknown_202063C + thumb_func_end sub_813A254 + + thumb_func_start sub_813A334 +sub_813A334: @ 813A334 + push {r4,lr} + ldr r4, _0813A358 @ =gUnknown_203B158 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0 + beq _0813A344 + bl sub_8007804 +_0813A344: + ldr r0, [r4] + cmp r0, 0 + beq _0813A352 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0813A352: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A358: .4byte gUnknown_203B158 + thumb_func_end sub_813A334 + + thumb_func_start sub_813A35C +sub_813A35C: @ 813A35C + push {r4,lr} + ldr r4, _0813A38C @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813A390 @ =0x00003290 + adds r0, r1 + movs r1, 0x37 + bl sub_803FBE8 + bl sub_8138C5C + ldr r1, [r4] + ldr r2, _0813A394 @ =0x0000326c + adds r1, r2 + strb r0, [r1] + ldr r0, [r4] + adds r0, r2 + ldrb r1, [r0] + cmp r1, 0 + bne _0813A398 + movs r0, 0x1 + bl sub_813A3B8 + b _0813A3AE + .align 2, 0 +_0813A38C: .4byte gUnknown_203B140 +_0813A390: .4byte 0x00003290 +_0813A394: .4byte 0x0000326c +_0813A398: + ldr r0, _0813A3B4 @ =gUnknown_203B158 + ldr r0, [r0] + ldr r0, [r0] + subs r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_800838C + movs r0, 0 + bl sub_813A3B8 +_0813A3AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A3B4: .4byte gUnknown_203B158 + thumb_func_end sub_813A35C + + thumb_func_start sub_813A3B8 +sub_813A3B8: @ 813A3B8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _0813A3EC @ =gUnknown_203B140 + ldr r2, [r1] + ldr r4, _0813A3F0 @ =0x0000326c + adds r0, r2, r4 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0 + beq _0813A3DA + movs r1, 0xC8 + lsls r1, 6 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0813A3F8 +_0813A3DA: + ldr r3, _0813A3F4 @ =gUnknown_203B158 + ldr r0, [r3] + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + b _0813A416 + .align 2, 0 +_0813A3EC: .4byte gUnknown_203B140 +_0813A3F0: .4byte 0x0000326c +_0813A3F4: .4byte gUnknown_203B158 +_0813A3F8: + ldr r4, _0813A438 @ =gUnknown_203B158 + ldr r0, [r4] + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r3, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + adds r3, r4, 0 +_0813A416: + ldr r0, [r5] + ldr r4, _0813A43C @ =0x00003214 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0813A440 + ldr r1, [r3] + ldr r2, [r1] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r0, 0x2D + beq _0813A456 + movs r0, 0x10 + strh r0, [r2, 0x20] + ldr r1, [r1] + movs r0, 0x2D + b _0813A454 + .align 2, 0 +_0813A438: .4byte gUnknown_203B158 +_0813A43C: .4byte 0x00003214 +_0813A440: + ldr r1, [r3] + ldr r2, [r1] + movs r4, 0x22 + ldrsh r0, [r2, r4] + cmp r0, 0x26 + beq _0813A456 + movs r0, 0x10 + strh r0, [r2, 0x20] + ldr r1, [r1] + movs r0, 0x26 +_0813A454: + strh r0, [r1, 0x22] +_0813A456: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813A3B8 + + thumb_func_start sub_813A45C +sub_813A45C: @ 813A45C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsls r1, 16 + lsrs r7, r1, 16 + movs r0, 0 + str r0, [sp, 0x38] + ldr r4, _0813A4BC @ =gUnknown_203B15C + movs r0, 0x40 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0xC0 + lsls r0, 1 + bl sub_8002BB0 + mov r9, r0 + ldr r0, _0813A4C0 @ =gUnknown_8E9B4B8 + mov r1, r9 + bl LZ77UnCompWram + ldr r5, _0813A4C4 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r4, _0813A4C8 @ =0x00003290 + adds r0, r4 + movs r1, 0x39 + bl sub_803FBE8 + adds r6, r0, 0 + ldr r0, [r5] + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsrs r0, r1, 2 + cmp r0, r6 + bls _0813A4CC + movs r1, 0x2 + str r1, [sp, 0x38] + b _0813A4D6 + .align 2, 0 +_0813A4BC: .4byte gUnknown_203B15C +_0813A4C0: .4byte gUnknown_8E9B4B8 +_0813A4C4: .4byte gUnknown_203B140 +_0813A4C8: .4byte 0x00003290 +_0813A4CC: + lsrs r0, r1, 1 + cmp r0, r6 + bls _0813A4D6 + movs r2, 0x1 + str r2, [sp, 0x38] +_0813A4D6: + mov r3, r9 + cmp r3, 0 + beq _0813A540 + str r3, [sp, 0x18] + movs r2, 0xC0 + lsls r2, 1 + add r0, sp, 0x18 + mov r6, r10 + lsls r1, r6, 16 + orrs r1, r2 + str r1, [r0, 0x4] + ldr r3, _0813A600 @ =gUnknown_8463FFC + ldr r1, [r3] + str r1, [sp, 0x20] + ldr r6, _0813A604 @ =0xffff0000 + add r1, sp, 0x20 + mov r8, r1 + ldr r1, [r1, 0x4] + ands r1, r6 + orrs r1, r7 + mov r2, r8 + str r1, [r2, 0x4] + ldr r1, [r3, 0x4] + str r1, [sp, 0x28] + adds r2, r7, 0x1 + lsls r2, 16 + lsrs r2, 16 + add r5, sp, 0x28 + ldr r1, [r5, 0x4] + ands r1, r6 + orrs r1, r2 + str r1, [r5, 0x4] + ldr r1, [r3, 0x8] + str r1, [sp, 0x30] + adds r2, r7, 0x2 + lsls r2, 16 + lsrs r2, 16 + add r4, sp, 0x30 + ldr r1, [r4, 0x4] + ands r1, r6 + orrs r1, r2 + str r1, [r4, 0x4] + bl sub_80086DC + mov r0, r8 + bl sub_8008928 + adds r0, r5, 0 + bl sub_8008928 + adds r0, r4, 0 + bl sub_8008928 +_0813A540: + movs r4, 0 + ldr r3, [sp, 0x38] + adds r3, r7, r3 + str r3, [sp, 0x3C] + mov r8, r4 + ldr r5, _0813A608 @ =gUnknown_203B15C +_0813A54C: + mov r0, sp + mov r6, r10 + strh r6, [r0] + ldrh r1, [r0, 0x3C] + strh r1, [r0, 0x2] + ldr r0, _0813A60C @ =gUnknown_8463A14 + str r0, [sp, 0x4] + ldr r0, _0813A610 @ =gUnknown_8463A7C + str r0, [sp, 0x8] + mov r2, r8 + str r2, [sp, 0xC] + ldr r0, _0813A614 @ =gUnknown_8231CFC + str r0, [sp, 0x10] + ldr r0, _0813A618 @ =nullsub_8 + str r0, [sp, 0x14] + ldr r1, [r5] + lsls r0, r4, 1 + adds r1, 0x28 + adds r1, r0 + lsls r0, r4, 3 + adds r0, 0xAC + strh r0, [r1] + movs r3, 0 + ldrsh r1, [r1, r3] + mov r0, sp + movs r2, 0x24 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + lsls r3, r4, 2 + adds r2, r3 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0813A61C @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r1, 0x3E + ldrb r0, [r1] + movs r6, 0x5 + negs r6, r6 + adds r2, r6, 0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, r3 + ldr r2, [r0] + ldrb r1, [r2, 0x5] + subs r6, 0x8 + adds r0, r6, 0 + ands r1, r0 + movs r0, 0x8 + orrs r1, r0 + strb r1, [r2, 0x5] + ldr r0, [r5] + mov r1, r10 + strh r1, [r0, 0x3C] + strh r7, [r0, 0x3E] + adds r0, r3 + ldr r0, [r0] + movs r1, 0x8 + bl sub_800838C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bls _0813A54C + bl sub_813A620 + movs r0, 0x1 + bl sub_813A838 + mov r2, r9 + cmp r2, 0 + beq _0813A5F0 + mov r0, r9 + bl sub_8002BC4 +_0813A5F0: + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A600: .4byte gUnknown_8463FFC +_0813A604: .4byte 0xffff0000 +_0813A608: .4byte gUnknown_203B15C +_0813A60C: .4byte gUnknown_8463A14 +_0813A610: .4byte gUnknown_8463A7C +_0813A614: .4byte gUnknown_8231CFC +_0813A618: .4byte nullsub_8 +_0813A61C: .4byte gUnknown_202063C + thumb_func_end sub_813A45C + + thumb_func_start sub_813A620 +sub_813A620: @ 813A620 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0 + mov r10, r0 + ldr r5, _0813A688 @ =gUnknown_203B140 + ldr r1, [r5] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0813A642 + b _0813A7EA +_0813A642: + ldr r4, _0813A68C @ =0x00003290 + adds r0, r1, r4 + movs r1, 0x39 + bl sub_803FBE8 + mov r9, r0 + ldr r0, [r5] + adds r0, r4 + movs r1, 0x3A + bl sub_803FBE8 + adds r4, r0, 0 + movs r1, 0x5 + bl __udivsi3 + cmp r0, r9 + bcs _0813A666 + lsrs r0, r4, 1 +_0813A666: + mov r3, r9 + lsls r0, r3, 16 + asrs r0, 16 + lsls r1, r4, 16 + asrs r1, 16 + bl sub_804A614 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _0813A690 + cmp r0, 0x2 + bgt _0813A684 + cmp r0, 0x1 + beq _0813A694 +_0813A684: + movs r6, 0 + b _0813A696 + .align 2, 0 +_0813A688: .4byte gUnknown_203B140 +_0813A68C: .4byte 0x00003290 +_0813A690: + movs r6, 0x1 + b _0813A696 +_0813A694: + movs r6, 0x2 +_0813A696: + movs r0, 0 + mov r8, r0 +_0813A69A: + movs r0, 0x78 + bl sub_80089E8 + ldr r5, _0813A6FC @ =gUnknown_203B15C + ldr r1, [r5] + mov r3, r8 + lsls r2, r3, 2 + adds r1, r2 + ldr r3, [r1] + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + lsls r0, 4 + ldrb r2, [r3, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x5] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x8 + bls _0813A69A + cmp r9, r4 + bne _0813A700 + movs r0, 0x2 + mov r8, r0 + cmp r0, 0x7 + bls _0813A6DA + b _0813A7CA +_0813A6DA: + adds r4, r5, 0 +_0813A6DC: + ldr r0, [r4] + mov r2, r8 + lsls r1, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x8 + bl sub_800838C + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x7 + bls _0813A6DC + b _0813A7CA + .align 2, 0 +_0813A6FC: .4byte gUnknown_203B15C +_0813A700: + lsls r0, r4, 2 + movs r1, 0x6 + bl __udivsi3 + adds r6, r0, 0 + movs r7, 0 + mov r3, r9 + lsls r0, r3, 2 + adds r4, r0, 0 + movs r5, 0 + b _0813A724 +_0813A716: + subs r4, r6 + sbcs r5, r7 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_0813A724: + cmp r5, r7 + bgt _0813A716 + cmp r5, r7 + bne _0813A730 + cmp r4, r6 + bhi _0813A716 +_0813A730: + mov r0, r10 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r0, 0x2 + mov r8, r0 + lsrs r1, r4, 31 + str r1, [sp, 0x4] + lsls r2, r5, 1 + str r2, [sp] + cmp r8, r10 + bcs _0813A76E + ldr r3, _0813A7A8 @ =gUnknown_203B15C + mov r9, r3 +_0813A74E: + mov r1, r9 + ldr r0, [r1] + mov r2, r8 + lsls r1, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x8 + bl sub_800838C + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r8, r10 + bcc _0813A74E +_0813A76E: + ldr r3, [sp, 0x4] + ldr r0, [sp] + orrs r3, r0 + lsls r2, r4, 1 + adds r2, r4 + adcs r3, r5 + lsrs r5, r2, 31 + lsls r4, r3, 1 + adds r1, r5, 0 + orrs r1, r4 + lsls r0, r2, 1 + adds r3, r7, 0 + adds r2, r6, 0 + bl __divdi3 + adds r2, r1, 0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r4, _0813A7A8 @ =gUnknown_203B15C + ldr r0, [r4] + mov r2, r10 + lsls r3, r2, 2 + adds r0, r3 + ldr r0, [r0] + bl sub_800838C + mov r0, r10 + b _0813A7BE + .align 2, 0 +_0813A7A8: .4byte gUnknown_203B15C +_0813A7AC: + ldr r0, [r4] + mov r3, r8 + lsls r1, r3, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + mov r0, r8 +_0813A7BE: + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x7 + bls _0813A7AC +_0813A7CA: + ldr r4, _0813A7FC @ =gUnknown_203B15C + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0x9 + bl sub_800838C + ldr r0, [r4] + ldr r0, [r0, 0x4] + movs r1, 0xA + bl sub_800838C + ldr r0, [r4] + ldr r0, [r0, 0x20] + movs r1, 0xB + bl sub_800838C +_0813A7EA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A7FC: .4byte gUnknown_203B15C + thumb_func_end sub_813A620 + + thumb_func_start sub_813A800 +sub_813A800: @ 813A800 + push {r4,r5,lr} + movs r4, 0 +_0813A804: + ldr r5, _0813A834 @ =gUnknown_203B15C + ldr r0, [r5] + lsls r1, r4, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0813A816 + bl sub_8007804 +_0813A816: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bls _0813A804 + ldr r0, [r5] + cmp r0, 0 + beq _0813A82E + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] +_0813A82E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813A834: .4byte gUnknown_203B15C + thumb_func_end sub_813A800 + + thumb_func_start sub_813A838 +sub_813A838: @ 813A838 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r6, _0813A870 @ =gUnknown_203B15C + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_0813A84C: + ldr r0, [r6] + lsls r1, r3, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x8 + bls _0813A84C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813A870: .4byte gUnknown_203B15C + thumb_func_end sub_813A838 + + thumb_func_start sub_813A874 +sub_813A874: @ 813A874 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x28 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _0813A970 @ =gUnknown_203B160 + mov r8, r0 + movs r0, 0x48 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + movs r4, 0xC0 + lsls r4, 1 + adds r0, r4, 0 + bl sub_8002BB0 + adds r5, r0, 0 + ldr r0, _0813A974 @ =gUnknown_8E9B3F0 + adds r1, r5, 0 + bl LZ77UnCompWram + cmp r5, 0 + beq _0813A8D0 + str r5, [sp, 0x18] + add r0, sp, 0x18 + lsls r1, r7, 16 + orrs r1, r4 + str r1, [r0, 0x4] + ldr r1, _0813A978 @ =gUnknown_8E9B578 + str r1, [sp, 0x20] + ldr r2, _0813A97C @ =0xffff0000 + add r4, sp, 0x20 + ldr r1, [r4, 0x4] + ands r1, r2 + orrs r1, r6 + str r1, [r4, 0x4] + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 +_0813A8D0: + movs r4, 0 + mov r9, r4 +_0813A8D4: + mov r0, sp + strh r7, [r0] + strh r6, [r0, 0x2] + ldr r0, _0813A980 @ =gUnknown_8463A14 + str r0, [sp, 0x4] + ldr r0, _0813A984 @ =gUnknown_8463A7C + str r0, [sp, 0x8] + mov r3, r9 + str r3, [sp, 0xC] + ldr r0, _0813A988 @ =gUnknown_8231CFC + str r0, [sp, 0x10] + ldr r0, _0813A98C @ =nullsub_8 + str r0, [sp, 0x14] + mov r0, r8 + ldr r1, [r0] + lsls r0, r4, 1 + adds r1, 0x2C + adds r1, r0 + lsls r0, r4, 3 + adds r0, 0x9C + strh r0, [r1] + movs r3, 0 + ldrsh r1, [r1, r3] + mov r0, sp + movs r2, 0x84 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + ldr r2, [r1] + lsls r1, r4, 2 + adds r2, r1 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0813A990 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + ldrb r2, [r1, 0x5] + movs r3, 0xD + negs r3, r3 + adds r0, r3, 0 + ands r2, r0 + movs r0, 0x8 + orrs r2, r0 + strb r2, [r1, 0x5] + mov r1, r8 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0x42 + strh r7, [r1] + adds r0, 0x44 + strh r6, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _0813A8D4 + bl sub_813A994 + movs r0, 0x1 + bl sub_813AB70 + cmp r5, 0 + beq _0813A960 + adds r0, r5, 0 + bl sub_8002BC4 +_0813A960: + add sp, 0x28 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A970: .4byte gUnknown_203B160 +_0813A974: .4byte gUnknown_8E9B3F0 +_0813A978: .4byte gUnknown_8E9B578 +_0813A97C: .4byte 0xffff0000 +_0813A980: .4byte gUnknown_8463A14 +_0813A984: .4byte gUnknown_8463A7C +_0813A988: .4byte gUnknown_8231CFC +_0813A98C: .4byte nullsub_8 +_0813A990: .4byte gUnknown_202063C + thumb_func_end sub_813A874 + + thumb_func_start sub_813A994 +sub_813A994: @ 813A994 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r7, 0 + ldr r6, _0813AAD4 @ =gUnknown_203B140 + ldr r1, [r6] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0813A9B4 + b _0813AB24 +_0813A9B4: + ldr r4, _0813AAD8 @ =0x00003290 + adds r0, r1, r4 + movs r1, 0x19 + bl sub_803FBE8 + mov r8, r0 + ldr r0, [r6] + adds r0, r4 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [r6] + adds r0, r4 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r5, 0x63 + bls _0813A9E2 + b _0813AAE8 +_0813A9E2: + ldr r3, _0813AADC @ =gUnknown_8253AE4 + adds r1, r5, 0x1 + lsls r1, 2 + ldr r2, _0813AAE0 @ =gUnknown_8254784 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x13] + movs r0, 0xCA + lsls r0, 1 + muls r2, r0 + adds r1, r2 + adds r1, r3 + lsls r0, r5, 2 + adds r0, r2 + adds r0, r3 + ldr r1, [r1] + ldr r0, [r0] + subs r1, r0 + mov r10, r1 + mov r1, r8 + subs r1, r0 + mov r9, r1 + mov r2, r10 + lsls r0, r2, 2 + lsrs r0, 3 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + lsls r0, r1, 2 + adds r4, r0, 0 + movs r5, 0 + ldr r1, [sp, 0x4] + cmp r5, r1 + ble _0813AA3E +_0813AA2A: + ldr r0, [sp] + ldr r1, [sp, 0x4] + subs r4, r0 + sbcs r5, r1 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r5, r1 + bgt _0813AA2A + ldr r1, [sp, 0x4] +_0813AA3E: + cmp r5, r1 + bne _0813AA48 + ldr r2, [sp] + cmp r4, r2 + bhi _0813AA2A +_0813AA48: + adds r0, r7, 0x2 + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0x2 + cmp r6, r7 + bcs _0813AA72 + ldr r0, _0813AAE4 @ =gUnknown_203B160 + mov r8, r0 +_0813AA58: + mov r1, r8 + ldr r0, [r1] + lsls r1, r6, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x8 + bl sub_800838C + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r7 + bcc _0813AA58 +_0813AA72: + cmp r7, 0x9 + bls _0813AA86 + cmp r10, r9 + beq _0813AB24 + ldr r0, _0813AAE4 @ =gUnknown_203B160 + ldr r0, [r0] + ldr r0, [r0, 0x24] + movs r1, 0x7 + bl sub_800838C +_0813AA86: + lsrs r3, r4, 29 + lsls r2, r5, 3 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 3 + ldr r2, [sp] + ldr r3, [sp, 0x4] + bl __divdi3 + adds r2, r1, 0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r4, _0813AAE4 @ =gUnknown_203B160 + ldr r0, [r4] + lsls r3, r7, 2 + adds r0, r3 + ldr r0, [r0] + bl sub_800838C + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x9 + bhi _0813AB04 +_0813AAB8: + ldr r0, [r4] + lsls r1, r6, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x9 + bls _0813AAB8 + b _0813AB04 + .align 2, 0 +_0813AAD4: .4byte gUnknown_203B140 +_0813AAD8: .4byte 0x00003290 +_0813AADC: .4byte gUnknown_8253AE4 +_0813AAE0: .4byte gUnknown_8254784 +_0813AAE4: .4byte gUnknown_203B160 +_0813AAE8: + movs r6, 0x2 + ldr r4, _0813AB34 @ =gUnknown_203B160 +_0813AAEC: + ldr r0, [r4] + lsls r1, r6, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x9 + bls _0813AAEC +_0813AB04: + ldr r4, _0813AB34 @ =gUnknown_203B160 + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0x9 + bl sub_800838C + ldr r0, [r4] + ldr r0, [r0, 0x4] + movs r1, 0xA + bl sub_800838C + ldr r0, [r4] + ldr r0, [r0, 0x28] + movs r1, 0xB + bl sub_800838C +_0813AB24: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813AB34: .4byte gUnknown_203B160 + thumb_func_end sub_813A994 + + thumb_func_start sub_813AB38 +sub_813AB38: @ 813AB38 + push {r4,r5,lr} + movs r4, 0 +_0813AB3C: + ldr r5, _0813AB6C @ =gUnknown_203B160 + ldr r0, [r5] + lsls r1, r4, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0813AB4E + bl sub_8007804 +_0813AB4E: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _0813AB3C + ldr r0, [r5] + cmp r0, 0 + beq _0813AB66 + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] +_0813AB66: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813AB6C: .4byte gUnknown_203B160 + thumb_func_end sub_813AB38 + + thumb_func_start sub_813AB70 +sub_813AB70: @ 813AB70 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r6, _0813ABA8 @ =gUnknown_203B160 + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_0813AB84: + ldr r0, [r6] + lsls r1, r3, 2 + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xA + bls _0813AB84 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813ABA8: .4byte gUnknown_203B160 + thumb_func_end sub_813AB70 + + thumb_func_start sub_813ABAC +sub_813ABAC: @ 813ABAC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _0813AC68 @ =gUnknown_203B164 + mov r8, r0 + movs r0, 0x8 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + movs r0, 0x20 + bl sub_8002BB0 + adds r5, r0, 0 + ldr r0, _0813AC6C @ =gUnknown_8463B20 + adds r1, r5, 0 + bl LZ77UnCompWram + mov r1, r8 + ldr r0, [r1] + cmp r0, 0 + beq _0813AC46 + str r5, [sp, 0x18] + movs r2, 0x20 + add r0, sp, 0x18 + lsls r1, r7, 16 + orrs r1, r2 + str r1, [r0, 0x4] + ldr r1, _0813AC70 @ =gUnknown_8463B00 + str r1, [sp, 0x20] + ldr r2, _0813AC74 @ =0xffff0000 + add r4, sp, 0x20 + ldr r1, [r4, 0x4] + ands r1, r2 + orrs r1, r6 + str r1, [r4, 0x4] + mov r1, sp + movs r2, 0 + strh r7, [r1] + strh r6, [r1, 0x2] + ldr r1, _0813AC78 @ =gUnknown_8463AEC + str r1, [sp, 0x4] + ldr r1, _0813AC7C @ =gUnknown_8463AFC + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _0813AC80 @ =gUnknown_8231CFC + str r1, [sp, 0x10] + ldr r1, _0813AC84 @ =nullsub_8 + str r1, [sp, 0x14] + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + mov r0, sp + movs r1, 0x72 + movs r2, 0x5C + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0813AC88 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + strh r7, [r2, 0x4] + strh r6, [r2, 0x6] +_0813AC46: + movs r0, 0x1 + bl sub_813ACF8 + bl sub_813ACB4 + cmp r5, 0 + beq _0813AC5A + adds r0, r5, 0 + bl sub_8002BC4 +_0813AC5A: + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813AC68: .4byte gUnknown_203B164 +_0813AC6C: .4byte gUnknown_8463B20 +_0813AC70: .4byte gUnknown_8463B00 +_0813AC74: .4byte 0xffff0000 +_0813AC78: .4byte gUnknown_8463AEC +_0813AC7C: .4byte gUnknown_8463AFC +_0813AC80: .4byte gUnknown_8231CFC +_0813AC84: .4byte nullsub_8 +_0813AC88: .4byte gUnknown_202063C + thumb_func_end sub_813ABAC + + thumb_func_start sub_813AC8C +sub_813AC8C: @ 813AC8C + push {r4,lr} + ldr r4, _0813ACB0 @ =gUnknown_203B164 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0 + beq _0813AC9C + bl sub_8007804 +_0813AC9C: + ldr r0, [r4] + cmp r0, 0 + beq _0813ACAA + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0813ACAA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813ACB0: .4byte gUnknown_203B164 + thumb_func_end sub_813AC8C + + thumb_func_start sub_813ACB4 +sub_813ACB4: @ 813ACB4 + push {r4,lr} + ldr r4, _0813ACE4 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813ACE8 @ =0x00003290 + adds r0, r1 + movs r1, 0 + bl sub_8043A70 + lsls r0, 24 + cmp r0, 0 + bne _0813ACEC + ldr r0, [r4] + ldr r1, _0813ACE8 @ =0x00003290 + adds r0, r1 + movs r1, 0 + bl sub_8043AD8 + lsls r0, 24 + cmp r0, 0 + beq _0813ACEC + movs r0, 0 + bl sub_813ACF8 + b _0813ACF2 + .align 2, 0 +_0813ACE4: .4byte gUnknown_203B140 +_0813ACE8: .4byte 0x00003290 +_0813ACEC: + movs r0, 0x1 + bl sub_813ACF8 +_0813ACF2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813ACB4 + + thumb_func_start sub_813ACF8 +sub_813ACF8: @ 813ACF8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0813AD44 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813AD48 @ =0x00003290 + adds r0, r1 + movs r1, 0 + bl sub_8043A70 + lsls r0, 24 + cmp r0, 0 + bne _0813AD50 + ldr r0, [r4] + ldr r1, _0813AD48 @ =0x00003290 + adds r0, r1 + movs r1, 0 + bl sub_8043AD8 + lsls r0, 24 + cmp r0, 0 + beq _0813AD50 + ldr r0, _0813AD4C @ =gUnknown_203B164 + ldr r0, [r0] + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _0813ADA2 + .align 2, 0 +_0813AD44: .4byte gUnknown_203B140 +_0813AD48: .4byte 0x00003290 +_0813AD4C: .4byte gUnknown_203B164 +_0813AD50: + ldr r2, _0813AD88 @ =gUnknown_203B164 + ldr r0, [r2] + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r3, 0x4 + orrs r0, r3 + strb r0, [r1] + ldr r0, _0813AD8C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813AD90 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0813AD94 + ldr r0, [r2] + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + ldr r2, [r2] + ldr r1, [r2] + movs r0, 0x10 + strh r0, [r1, 0x20] + ldr r1, [r2] + movs r0, 0x2C + b _0813ADA0 + .align 2, 0 +_0813AD88: .4byte gUnknown_203B164 +_0813AD8C: .4byte gUnknown_203B140 +_0813AD90: .4byte 0x00003214 +_0813AD94: + ldr r2, [r2] + ldr r1, [r2] + movs r0, 0x72 + strh r0, [r1, 0x20] + ldr r1, [r2] + movs r0, 0x5C +_0813ADA0: + strh r0, [r1, 0x22] +_0813ADA2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813ACF8 + + thumb_func_start sub_813ADA8 +sub_813ADA8: @ 813ADA8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _0813AE64 @ =gUnknown_203B168 + mov r8, r0 + movs r0, 0x8 + bl sub_8002BB0 + mov r1, r8 + str r0, [r1] + movs r0, 0x40 + bl sub_8002BB0 + adds r5, r0, 0 + ldr r0, _0813AE68 @ =gUnknown_8463B64 + adds r1, r5, 0 + bl LZ77UnCompWram + mov r1, r8 + ldr r0, [r1] + cmp r0, 0 + beq _0813AE42 + str r5, [sp, 0x18] + movs r2, 0x40 + add r0, sp, 0x18 + lsls r1, r7, 16 + orrs r1, r2 + str r1, [r0, 0x4] + ldr r1, _0813AE6C @ =gUnknown_8463B44 + str r1, [sp, 0x20] + ldr r2, _0813AE70 @ =0xffff0000 + add r4, sp, 0x20 + ldr r1, [r4, 0x4] + ands r1, r2 + orrs r1, r6 + str r1, [r4, 0x4] + mov r1, sp + movs r2, 0 + strh r7, [r1] + strh r6, [r1, 0x2] + ldr r1, _0813AE74 @ =gUnknown_8463B30 + str r1, [sp, 0x4] + ldr r1, _0813AE78 @ =gUnknown_8463B40 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _0813AE7C @ =gUnknown_8231CFC + str r1, [sp, 0x10] + ldr r1, _0813AE80 @ =nullsub_8 + str r1, [sp, 0x14] + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + mov r0, sp + movs r1, 0x6A + movs r2, 0x28 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0813AE84 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + strh r7, [r2, 0x4] + strh r6, [r2, 0x6] +_0813AE42: + movs r0, 0x1 + bl sub_813AEB0 + bl sub_813AF50 + cmp r5, 0 + beq _0813AE56 + adds r0, r5, 0 + bl sub_8002BC4 +_0813AE56: + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813AE64: .4byte gUnknown_203B168 +_0813AE68: .4byte gUnknown_8463B64 +_0813AE6C: .4byte gUnknown_8463B44 +_0813AE70: .4byte 0xffff0000 +_0813AE74: .4byte gUnknown_8463B30 +_0813AE78: .4byte gUnknown_8463B40 +_0813AE7C: .4byte gUnknown_8231CFC +_0813AE80: .4byte nullsub_8 +_0813AE84: .4byte gUnknown_202063C + thumb_func_end sub_813ADA8 + + thumb_func_start sub_813AE88 +sub_813AE88: @ 813AE88 + push {r4,lr} + ldr r4, _0813AEAC @ =gUnknown_203B168 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0 + beq _0813AE98 + bl sub_8007804 +_0813AE98: + ldr r0, [r4] + cmp r0, 0 + beq _0813AEA6 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0813AEA6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813AEAC: .4byte gUnknown_203B168 + thumb_func_end sub_813AE88 + + thumb_func_start sub_813AEB0 +sub_813AEB0: @ 813AEB0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0813AEF8 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813AEFC @ =0x00003290 + adds r0, r1 + bl sub_8044470 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813AF04 + ldr r0, [r4] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0813AF04 + ldr r4, _0813AF00 @ =gUnknown_203B168 + ldr r0, [r4] + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + adds r3, r4, 0 + b _0813AF14 + .align 2, 0 +_0813AEF8: .4byte gUnknown_203B140 +_0813AEFC: .4byte 0x00003290 +_0813AF00: .4byte gUnknown_203B168 +_0813AF04: + ldr r3, _0813AF30 @ =gUnknown_203B168 + ldr r0, [r3] + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] +_0813AF14: + ldr r0, _0813AF34 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813AF38 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0813AF3C + ldr r2, [r3] + ldr r1, [r2] + movs r0, 0x8 + strh r0, [r1, 0x20] + ldr r1, [r2] + movs r0, 0x18 + b _0813AF48 + .align 2, 0 +_0813AF30: .4byte gUnknown_203B168 +_0813AF34: .4byte gUnknown_203B140 +_0813AF38: .4byte 0x00003214 +_0813AF3C: + ldr r2, [r3] + ldr r1, [r2] + movs r0, 0x6A + strh r0, [r1, 0x20] + ldr r1, [r2] + movs r0, 0x28 +_0813AF48: + strh r0, [r1, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813AEB0 + + thumb_func_start sub_813AF50 +sub_813AF50: @ 813AF50 + push {r4,lr} + ldr r4, _0813AF7C @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813AF80 @ =0x00003290 + adds r0, r1 + bl sub_8044470 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813AF84 + ldr r0, [r4] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0813AF84 + movs r0, 0 + bl sub_813AEB0 + b _0813AF8A + .align 2, 0 +_0813AF7C: .4byte gUnknown_203B140 +_0813AF80: .4byte 0x00003290 +_0813AF84: + movs r0, 0x1 + bl sub_813AEB0 +_0813AF8A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813AF50 + + thumb_func_start sub_813AF90 +sub_813AF90: @ 813AF90 + push {lr} + bl sub_813A21C + bl sub_813A800 + bl sub_813AB38 + bl sub_8139C80 + bl sub_8139F20 + bl sub_8139D90 + bl sub_813B068 + bl sub_813A334 + bl sub_813AC8C + bl sub_813AE88 + bl sub_8006B10 + pop {r0} + bx r0 + thumb_func_end sub_813AF90 + + thumb_func_start sub_813AFC4 +sub_813AFC4: @ 813AFC4 + push {lr} + bl sub_8139CB0 + movs r0, 0 + bl sub_8139D54 + bl sub_8139DBC + bl sub_813995C + movs r0, 0 + bl sub_8139C44 + bl sub_813A620 + bl sub_813A994 + bl sub_813B0E4 + bl sub_813A35C + bl sub_813ACB4 + bl sub_813AF50 + pop {r0} + bx r0 + thumb_func_end sub_813AFC4 + + thumb_func_start sub_813AFFC +sub_813AFFC: @ 813AFFC + push {r4-r6,lr} + ldr r5, _0813B058 @ =gUnknown_203B140 + ldr r0, [r5] + ldr r1, _0813B05C @ =0x00003290 + adds r0, r1 + movs r1, 0x8 + bl sub_803FBE8 + adds r6, r0, 0 + ldr r0, [r5] + ldr r4, _0813B060 @ =0x000032fc + adds r0, r4 + ldr r0, [r0] + bl sub_8007804 + ldr r2, _0813B064 @ =gUnknown_84636E0 + movs r0, 0x8C + movs r1, 0x8C + bl sub_80BEAE0 + adds r2, r0, 0 + ldr r0, [r5] + adds r0, r4 + str r2, [r0] + cmp r2, 0 + beq _0813B04A + lsls r1, r6, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl sub_800838C + ldr r0, [r5] + adds r0, r4 + ldr r2, [r0] + movs r1, 0x14 + strh r1, [r2, 0x20] + ldr r1, [r0] + movs r0, 0x5B + strh r0, [r1, 0x22] +_0813B04A: + movs r0, 0x1 + bl sub_813B084 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813B058: .4byte gUnknown_203B140 +_0813B05C: .4byte 0x00003290 +_0813B060: .4byte 0x000032fc +_0813B064: .4byte gUnknown_84636E0 + thumb_func_end sub_813AFFC + + thumb_func_start sub_813B068 +sub_813B068: @ 813B068 + push {lr} + ldr r0, _0813B07C @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813B080 @ =0x000032fc + adds r0, r1 + ldr r0, [r0] + bl sub_8007804 + pop {r0} + bx r0 + .align 2, 0 +_0813B07C: .4byte gUnknown_203B140 +_0813B080: .4byte 0x000032fc + thumb_func_end sub_813B068 + + thumb_func_start sub_813B084 +sub_813B084: @ 813B084 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _0813B0B0 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813B0B4 @ =0x00003290 + adds r0, r1 + movs r1, 0x8 + bl sub_803FBE8 + cmp r0, 0 + bne _0813B0BC + ldr r0, [r4] + ldr r1, _0813B0B8 @ =0x000032fc + adds r0, r1 + ldr r1, [r0] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + b _0813B0DA + .align 2, 0 +_0813B0B0: .4byte gUnknown_203B140 +_0813B0B4: .4byte 0x00003290 +_0813B0B8: .4byte 0x000032fc +_0813B0BC: + ldr r0, [r4] + ldr r1, _0813B0E0 @ =0x000032fc + adds r0, r1 + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_0813B0DA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813B0E0: .4byte 0x000032fc + thumb_func_end sub_813B084 + + thumb_func_start sub_813B0E4 +sub_813B0E4: @ 813B0E4 + push {r4,lr} + ldr r4, _0813B114 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813B118 @ =0x00003290 + adds r0, r1 + movs r1, 0x8 + bl sub_803FBE8 + adds r1, r0, 0 + ldr r0, [r4] + ldr r2, _0813B11C @ =0x000032fc + adds r0, r2 + ldr r0, [r0] + lsls r1, 24 + lsrs r1, 24 + bl sub_800838C + movs r0, 0 + bl sub_813B084 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813B114: .4byte gUnknown_203B140 +_0813B118: .4byte 0x00003290 +_0813B11C: .4byte 0x000032fc + thumb_func_end sub_813B0E4 + + thumb_func_start sub_813B120 +sub_813B120: @ 813B120 + push {r4-r6,lr} + lsls r1, 24 + lsrs r5, r1, 24 + ldr r1, _0813B154 @ =gUnknown_203B140 + ldr r2, [r1] + ldr r3, _0813B158 @ =0x0000321c + adds r0, r2, r3 + ldrb r3, [r0] + adds r6, r1, 0 + cmp r3, 0x1 + bne _0813B198 + ldr r1, _0813B15C @ =0x00003214 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0813B160 + lsls r1, r5, 24 + asrs r1, 24 + movs r5, 0x2 + eors r1, r3 + negs r0, r1 + orrs r0, r1 + asrs r0, 31 + ands r5, r0 + b _0813B16C + .align 2, 0 +_0813B154: .4byte gUnknown_203B140 +_0813B158: .4byte 0x0000321c +_0813B15C: .4byte 0x00003214 +_0813B160: + lsls r0, r5, 24 + asrs r0, 24 + movs r5, 0x3 + cmp r0, 0x1 + bne _0813B16C + movs r5, 0x1 +_0813B16C: + ldr r0, [r6] + ldr r2, _0813B190 @ =0x000032f4 + adds r0, r2 + ldr r4, [r0] + bl sub_8138B20 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, [r6] + ldr r3, _0813B194 @ =0x00003210 + adds r0, r3 + ldrb r2, [r0] + adds r3, r5, 0 + adds r0, r4, 0 + bl sub_808BDE8 + b _0813B1CC + .align 2, 0 +_0813B190: .4byte 0x000032f4 +_0813B194: .4byte 0x00003210 +_0813B198: + bl sub_805642C + cmp r0, 0 + bne _0813B1C4 + ldr r0, _0813B1C0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0813B1C4 + bl sub_811FA20 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813B1C4 + lsls r0, r5, 24 + asrs r0, 24 + bl sub_813B38C + b _0813B1CC + .align 2, 0 +_0813B1C0: .4byte gUnknown_3003F64 +_0813B1C4: + lsls r0, r5, 24 + asrs r0, 24 + bl sub_813B20C +_0813B1CC: + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 24 + asrs r0, 24 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0813B1F4 + ldr r0, _0813B1FC @ =gUnknown_203B16C + strb r2, [r0] + ldr r0, _0813B200 @ =sub_813B3F0 + movs r1, 0 + bl sub_807741C + ldr r0, _0813B204 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813B208 @ =0x0000328c + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0813B1F4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813B1FC: .4byte gUnknown_203B16C +_0813B200: .4byte sub_813B3F0 +_0813B204: .4byte gUnknown_203B140 +_0813B208: .4byte 0x0000328c + thumb_func_end sub_813B120 + + thumb_func_start sub_813B20C +sub_813B20C: @ 813B20C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _0813B258 @ =gUnknown_203B140 + ldr r0, [r2] + ldr r3, _0813B25C @ =0x000032f4 + adds r1, r0, r3 + ldr r7, [r1] + movs r6, 0 + ldr r1, _0813B260 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B26C + lsls r0, r4, 24 + asrs r3, r0, 24 + movs r1, 0x1 + negs r1, r1 + adds r5, r0, 0 + ldr r6, _0813B264 @ =gUnknown_203B16C + cmp r3, r1 + bne _0813B23E + ldrb r0, [r6] + cmp r0, 0 + beq _0813B294 +_0813B23E: + asrs r0, r5, 24 + cmp r0, 0x1 + bne _0813B252 + ldr r0, [r2] + ldr r2, _0813B268 @ =0x00003210 + adds r0, r2 + ldrb r1, [r6] + ldrb r0, [r0] + cmp r1, r0 + bcs _0813B294 +_0813B252: + ldrb r0, [r6] + adds r0, r4 + b _0813B2BC + .align 2, 0 +_0813B258: .4byte gUnknown_203B140 +_0813B25C: .4byte 0x000032f4 +_0813B260: .4byte 0x00003214 +_0813B264: .4byte gUnknown_203B16C +_0813B268: .4byte 0x00003210 +_0813B26C: + lsls r5, r4, 24 +_0813B26E: + lsls r0, r6, 24 + asrs r0, 24 + asrs r1, r5, 24 + adds r0, r1 + lsls r0, 24 + ldr r4, _0813B29C @ =gUnknown_203B16C + lsrs r6, r0, 24 + asrs r0, 24 + ldrb r3, [r4] + adds r1, r0, r3 + cmp r1, 0 + blt _0813B294 + ldr r0, _0813B2A0 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r2, _0813B2A4 @ =0x00003210 + adds r0, r2 + ldrb r0, [r0] + cmp r1, r0 + ble _0813B2A8 +_0813B294: + movs r0, 0x1 + negs r0, r0 + b _0813B2C0 + .align 2, 0 +_0813B29C: .4byte gUnknown_203B16C +_0813B2A0: .4byte gUnknown_203B140 +_0813B2A4: .4byte 0x00003210 +_0813B2A8: + movs r0, 0x64 + muls r0, r1 + adds r0, r7, r0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0813B26E + ldrb r0, [r4] + adds r0, r6 +_0813B2BC: + lsls r0, 24 + asrs r0, 24 +_0813B2C0: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_813B20C + + thumb_func_start sub_813B2C8 +sub_813B2C8: @ 813B2C8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0xB + bl sub_803FBE8 + cmp r0, 0 + beq _0813B2FC + ldr r0, _0813B2F4 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813B2F8 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B2F0 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0813B2FC +_0813B2F0: + movs r0, 0x1 + b _0813B2FE + .align 2, 0 +_0813B2F4: .4byte gUnknown_203B140 +_0813B2F8: .4byte 0x00003214 +_0813B2FC: + movs r0, 0 +_0813B2FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_813B2C8 + + thumb_func_start sub_813B304 +sub_813B304: @ 813B304 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 +_0813B30A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + beq _0813B33C + ldr r0, _0813B334 @ =gUnknown_8463FB8 + adds r5, r4, r0 + ldrb r1, [r5] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0813B338 @ =gUnknown_2024284 + adds r0, r1 + bl sub_813B2C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813B30A + movs r0, 0 + ldrsb r0, [r5, r0] + b _0813B340 + .align 2, 0 +_0813B334: .4byte gUnknown_8463FB8 +_0813B338: .4byte gUnknown_2024284 +_0813B33C: + movs r0, 0x1 + negs r0, r0 +_0813B340: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813B304 + + thumb_func_start sub_813B348 +sub_813B348: @ 813B348 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 +_0813B34E: + cmp r4, 0 + beq _0813B380 + subs r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813B378 @ =gUnknown_8463FB8 + adds r5, r4, r0 + ldrb r1, [r5] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0813B37C @ =gUnknown_2024284 + adds r0, r1 + bl sub_813B2C8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813B34E + movs r0, 0 + ldrsb r0, [r5, r0] + b _0813B384 + .align 2, 0 +_0813B378: .4byte gUnknown_8463FB8 +_0813B37C: .4byte gUnknown_2024284 +_0813B380: + movs r0, 0x1 + negs r0, r0 +_0813B384: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813B348 + + thumb_func_start sub_813B38C +sub_813B38C: @ 813B38C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + movs r5, 0 + b _0813B39E +_0813B398: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0813B39E: + cmp r5, 0x5 + bhi _0813B3B6 + ldr r4, _0813B3D4 @ =gUnknown_8463FB8 + adds r4, r5, r4 + bl sub_8138B20 + ldrb r1, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + bne _0813B398 + adds r6, r5, 0 +_0813B3B6: + lsls r0, r7, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0813B3C6 + cmp r6, 0 + beq _0813B3CE +_0813B3C6: + cmp r1, 0x1 + bne _0813B3D8 + cmp r6, 0x5 + bne _0813B3E0 +_0813B3CE: + movs r0, 0x1 + negs r0, r0 + b _0813B3EA + .align 2, 0 +_0813B3D4: .4byte gUnknown_8463FB8 +_0813B3D8: + adds r0, r6, 0 + bl sub_813B348 + b _0813B3E6 +_0813B3E0: + adds r0, r6, 0 + bl sub_813B304 +_0813B3E6: + lsls r0, 24 + asrs r0, 24 +_0813B3EA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_813B38C + + thumb_func_start sub_813B3F0 +sub_813B3F0: @ 813B3F0 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _0813B414 @ =gUnknown_203B140 + ldr r0, [r1] + ldr r4, _0813B418 @ =0x0000328c + adds r2, r0, r4 + ldrb r0, [r2] + adds r5, r1, 0 + cmp r0, 0xB + bls _0813B40A + b _0813B73C +_0813B40A: + lsls r0, 2 + ldr r1, _0813B41C @ =_0813B420 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813B414: .4byte gUnknown_203B140 +_0813B418: .4byte 0x0000328c +_0813B41C: .4byte _0813B420 + .align 2, 0 +_0813B420: + .4byte _0813B450 + .4byte _0813B478 + .4byte _0813B486 + .4byte _0813B4DC + .4byte _0813B568 + .4byte _0813B5FC + .4byte _0813B602 + .4byte _0813B620 + .4byte _0813B636 + .4byte _0813B654 + .4byte _0813B678 + .4byte _0813B70C +_0813B450: + bl sub_80721C4 + ldr r0, _0813B468 @ =gUnknown_203B16D + movs r1, 0 + strb r1, [r0] + ldr r0, _0813B46C @ =gUnknown_203B16E + strb r1, [r0] + ldr r0, _0813B470 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _0813B474 @ =0x0000328c + adds r1, r0 + b _0813B72C + .align 2, 0 +_0813B468: .4byte gUnknown_203B16D +_0813B46C: .4byte gUnknown_203B16E +_0813B470: .4byte gUnknown_203B140 +_0813B474: .4byte 0x0000328c +_0813B478: + bl sub_8139C80 + bl sub_8139F20 + bl sub_8139D90 + b _0813B724 +_0813B486: + ldr r0, [r5] + ldr r4, _0813B4D0 @ =0x00003290 + adds r0, r4 + bl sub_8138B8C + ldr r0, [r5] + adds r0, r4 + movs r1, 0x2D + bl sub_803FBE8 + ldr r1, [r5] + movs r2, 0xC8 + lsls r2, 6 + adds r1, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, r4 + movs r1, 0x4 + bl sub_803FBE8 + ldr r1, [r5] + ldr r2, _0813B4D4 @ =0x00003204 + adds r1, r2 + strb r0, [r1] + ldr r0, [r5] + adds r2, r0, r2 + ldrb r1, [r2] + cmp r1, 0x1 + bne _0813B4C6 + subs r4, 0x90 + adds r0, r4 + strb r1, [r0] +_0813B4C6: + ldr r1, [r5] + ldr r0, _0813B4D8 @ =0x0000328c + adds r1, r0 + b _0813B72C + .align 2, 0 +_0813B4D0: .4byte 0x00003290 +_0813B4D4: .4byte 0x00003204 +_0813B4D8: .4byte 0x0000328c +_0813B4DC: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r4, _0813B52C @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813B530 @ =0x00003290 + adds r0, r1 + bl sub_8044470 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0813B538 + ldr r0, [r4] + movs r2, 0xC8 + lsls r2, 6 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B538 + ldr r4, _0813B534 @ =gUnknown_8E9B3D0 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + subs r4, 0x20 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + b _0813B550 + .align 2, 0 +_0813B52C: .4byte gUnknown_203B140 +_0813B530: .4byte 0x00003290 +_0813B534: .4byte gUnknown_8E9B3D0 +_0813B538: + ldr r4, _0813B55C @ =gUnknown_8E9B310 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + adds r4, 0x20 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC +_0813B550: + ldr r0, _0813B560 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r4, _0813B564 @ =0x0000328c + adds r1, r4 + b _0813B72C + .align 2, 0 +_0813B55C: .4byte gUnknown_8E9B310 +_0813B560: .4byte gUnknown_203B140 +_0813B564: .4byte 0x0000328c +_0813B568: + ldr r4, _0813B5A8 @ =gUnknown_203B140 + ldr r1, [r4] + ldr r2, _0813B5AC @ =0x00003214 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B5DC + subs r2, 0x14 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0813B5B8 + adds r2, 0x3C + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _0813B5B0 @ =gUnknown_8E9BBCC + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r0, [r4] + movs r4, 0xC9 + lsls r4, 6 + adds r0, r4 + ldrb r0, [r0] + ldr r1, _0813B5B4 @ =gUnknown_8E9B750 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + b _0813B5DC + .align 2, 0 +_0813B5A8: .4byte gUnknown_203B140 +_0813B5AC: .4byte 0x00003214 +_0813B5B0: .4byte gUnknown_8E9BBCC +_0813B5B4: .4byte gUnknown_8E9B750 +_0813B5B8: + ldr r2, _0813B5E8 @ =0x0000323c + adds r0, r1, r2 + ldrb r0, [r0] + ldr r1, _0813B5EC @ =gUnknown_8E9B598 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r0, [r4] + movs r4, 0xC9 + lsls r4, 6 + adds r0, r4 + ldrb r0, [r0] + ldr r1, _0813B5F0 @ =gUnknown_8E9B750 + movs r2, 0 + movs r3, 0 + bl sub_8002040 +_0813B5DC: + ldr r0, _0813B5F4 @ =gUnknown_203B140 + ldr r1, [r0] + ldr r0, _0813B5F8 @ =0x0000328c + adds r1, r0 + b _0813B72C + .align 2, 0 +_0813B5E8: .4byte 0x0000323c +_0813B5EC: .4byte gUnknown_8E9B598 +_0813B5F0: .4byte gUnknown_8E9B750 +_0813B5F4: .4byte gUnknown_203B140 +_0813B5F8: .4byte 0x0000328c +_0813B5FC: + bl sub_81360D4 + b _0813B724 +_0813B602: + ldr r0, [r5] + movs r4, 0xC8 + lsls r4, 6 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B614 + bl sub_8136350 +_0813B614: + ldr r1, [r5] + ldr r0, _0813B61C @ =0x0000328c + adds r1, r0 + b _0813B72C + .align 2, 0 +_0813B61C: .4byte 0x0000328c +_0813B620: + ldr r0, [r5] + movs r1, 0xC8 + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0813B632 + bl sub_81367B0 +_0813B632: + ldr r1, [r5] + b _0813B728 +_0813B636: + bl sub_8136F4C + bl sub_81374E8 + bl sub_8137BD0 + ldr r0, _0813B64C @ =gUnknown_203B140 + ldr r1, [r0] + ldr r4, _0813B650 @ =0x0000328c + adds r1, r4 + b _0813B72C + .align 2, 0 +_0813B64C: .4byte gUnknown_203B140 +_0813B650: .4byte 0x0000328c +_0813B654: + bl sub_8138A38 + bl sub_8138538 + ldr r4, _0813B670 @ =gUnknown_203B140 + ldr r0, [r4] + ldr r1, _0813B674 @ =0x00003214 + adds r0, r1 + ldrb r0, [r0] + bl sub_8137D28 + ldr r1, [r4] + b _0813B728 + .align 2, 0 +_0813B670: .4byte gUnknown_203B140 +_0813B674: .4byte 0x00003214 +_0813B678: + ldr r0, [r5] + movs r4, 0xC0 + lsls r4, 6 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + ldr r1, _0813B6F8 @ =0x00003001 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + ldr r2, _0813B6FC @ =0x00003002 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + adds r4, 0x6 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + ldr r1, _0813B700 @ =0x00003003 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + ldr r2, _0813B704 @ =0x00003004 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r5] + subs r4, 0x1 + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r1, [r5] + ldr r0, _0813B708 @ =0x0000328c + adds r1, r0 + b _0813B72C + .align 2, 0 +_0813B6F8: .4byte 0x00003001 +_0813B6FC: .4byte 0x00003002 +_0813B700: .4byte 0x00003003 +_0813B704: .4byte 0x00003004 +_0813B708: .4byte 0x0000328c +_0813B70C: + bl sub_8058244 + cmp r0, 0 + bne _0813B746 + bl sub_800B270 + cmp r0, 0 + bne _0813B746 + bl sub_813AFC4 + bl sub_813B784 +_0813B724: + ldr r0, _0813B734 @ =gUnknown_203B140 + ldr r1, [r0] +_0813B728: + ldr r2, _0813B738 @ =0x0000328c + adds r1, r2 +_0813B72C: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0813B746 + .align 2, 0 +_0813B734: .4byte gUnknown_203B140 +_0813B738: .4byte 0x0000328c +_0813B73C: + movs r0, 0 + strb r0, [r2] + adds r0, r3, 0 + bl sub_8077508 +_0813B746: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813B3F0 + + thumb_func_start sub_813B750 +sub_813B750: @ 813B750 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0x80 + lsls r5, 7 + movs r0, 0 + adds r1, r5, 0 + bl sub_8000B14 + cmp r4, 0x2 + bgt _0813B77E + cmp r4, 0 + blt _0813B77E + movs r0, 0 + bl sub_8000AC4 + adds r1, r5, 0 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 +_0813B77E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813B750 + + thumb_func_start sub_813B784 +sub_813B784: @ 813B784 + push {r4,r5,lr} + ldr r4, _0813B7BC @ =gUnknown_203B140 + ldr r0, [r4] + ldr r5, _0813B7C0 @ =0x00003290 + adds r0, r5 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0813B7DA + ldr r0, [r4] + adds r0, r5 + bl sub_8035A28 + cmp r0, 0x1 + bne _0813B7C4 + ldr r0, [r4] + adds r0, r5 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + movs r2, 0 + bl sub_8071E60 + b _0813B7DA + .align 2, 0 +_0813B7BC: .4byte gUnknown_203B140 +_0813B7C0: .4byte 0x00003290 +_0813B7C4: + ldr r0, [r4] + adds r0, r5 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + movs r2, 0xB + bl sub_8071E60 +_0813B7DA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813B784 + + thumb_func_start sub_813B7E0 +sub_813B7E0: @ 813B7E0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + beq _0813B7EE + cmp r0, 0x15 + bne _0813B7F2 +_0813B7EE: + movs r0, 0x1 + b _0813B7F4 +_0813B7F2: + movs r0, 0 +_0813B7F4: + pop {r1} + bx r1 + thumb_func_end sub_813B7E0 + + thumb_func_start sub_813B7F8 +sub_813B7F8: @ 813B7F8 + push {lr} + ldr r0, _0813B828 @ =gUnknown_203B140 + ldr r0, [r0] + ldr r1, _0813B82C @ =0x00003290 + adds r0, r1 + movs r1, 0x25 + bl sub_803FBE8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xFC + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bls _0813B824 + cmp r1, 0x2 + beq _0813B824 + cmp r1, 0x1 + beq _0813B824 + cmp r1, 0x3 + bne _0813B830 +_0813B824: + movs r0, 0x1 + b _0813B832 + .align 2, 0 +_0813B828: .4byte gUnknown_203B140 +_0813B82C: .4byte 0x00003290 +_0813B830: + movs r0, 0 +_0813B832: + pop {r1} + bx r1 + thumb_func_end sub_813B7F8 + + thumb_func_start sub_813B838 +sub_813B838: @ 813B838 + push {lr} + lsls r0, 24 + movs r1, 0xA8 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x6C + bls _0813B84C + movs r0, 0 + b _0813B84E +_0813B84C: + movs r0, 0x1 +_0813B84E: + pop {r1} + bx r1 + thumb_func_end sub_813B838 + + thumb_func_start sub_813B854 +sub_813B854: @ 813B854 + push {lr} + sub sp, 0x4 + ldr r3, _0813B86C @ =sub_80567DC + movs r0, 0 + str r0, [sp] + movs r1, 0 + movs r2, 0 + bl sub_81344F8 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0813B86C: .4byte sub_80567DC + thumb_func_end sub_813B854 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s new file mode 100644 index 000000000..5075f8835 --- /dev/null +++ b/asm/post_battle_event_funcs.s @@ -0,0 +1,121 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80CA2E4 +sub_80CA2E4: @ 80CA2E4 + push {r4-r7,lr} + sub sp, 0x4 + bl sub_80A0058 + ldr r4, _080CA304 @ =0x0000082c + adds r0, r4, 0 + bl sub_806E6D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + bne _080CA30C + ldr r0, _080CA308 @ =gUnknown_203AB44 + strb r1, [r0] + b _080CA318 + .align 2, 0 +_080CA304: .4byte 0x0000082c +_080CA308: .4byte gUnknown_203AB44 +_080CA30C: + ldr r1, _080CA3B0 @ =gUnknown_203AB44 + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl sub_806E680 +_080CA318: + movs r0, 0x1 + bl sub_8054EC4 + cmp r0, 0 + bne _080CA33A + ldr r0, _080CA3B4 @ =gUnknown_300500C + ldr r2, [r0] + ldrh r1, [r2, 0xE] + lsls r1, 16 + ldrb r0, [r2, 0x10] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x11] + orrs r1, r0 + movs r0, 0x1 + bl sub_8054F00 +_080CA33A: + bl sub_804C1AC + movs r0, 0x1 + bl sub_8055738 + movs r6, 0 + movs r5, 0 + mov r7, sp +_080CA34A: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080CA3B8 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _080CA388 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_803FBE8 + cmp r0, 0 + bne _080CA388 + adds r0, r4, 0 + movs r1, 0x43 + bl sub_803FBE8 + cmp r0, 0 + bne _080CA388 + movs r0, 0x1 + strb r0, [r7] + adds r0, r4, 0 + movs r1, 0x43 + mov r2, sp + bl sub_804037C + movs r6, 0x1 +_080CA388: + adds r5, 0x1 + cmp r5, 0x5 + ble _080CA34A + cmp r6, 0x1 + bne _080CA39E + movs r0, 0x2A + bl sub_8054E90 + ldr r0, _080CA3BC @ =0x0000083b + bl sub_806E680 +_080CA39E: + ldr r0, _080CA3C0 @ =sub_80F1EFC + bl sub_8000544 + movs r0, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080CA3B0: .4byte gUnknown_203AB44 +_080CA3B4: .4byte gUnknown_300500C +_080CA3B8: .4byte gUnknown_2024284 +_080CA3BC: .4byte 0x0000083b +_080CA3C0: .4byte sub_80F1EFC + thumb_func_end sub_80CA2E4 + + thumb_func_start sub_80CA3C4 +sub_80CA3C4: @ 80CA3C4 + push {lr} + ldr r0, _080CA3D4 @ =sub_80566A4 + bl sub_8000544 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080CA3D4: .4byte sub_80566A4 + thumb_func_end sub_80CA3C4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/prof_pc.s b/asm/prof_pc.s new file mode 100644 index 000000000..39de560db --- /dev/null +++ b/asm/prof_pc.s @@ -0,0 +1,204 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80CA3D8 +sub_80CA3D8: @ 80CA3D8 + push {lr} + ldr r0, _080CA3F4 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + bne _080CA3FC + movs r0, 0 + bl sub_8088EDC + ldr r1, _080CA3F8 @ =gUnknown_20370C2 + strh r0, [r1] + movs r0, 0x1 + bl sub_8088EDC + b _080CA40C + .align 2, 0 +_080CA3F4: .4byte gUnknown_20370C0 +_080CA3F8: .4byte gUnknown_20370C2 +_080CA3FC: + movs r0, 0 + bl sub_8088E8C + ldr r1, _080CA41C @ =gUnknown_20370C2 + strh r0, [r1] + movs r0, 0x1 + bl sub_8088E8C +_080CA40C: + ldr r1, _080CA420 @ =gUnknown_20370C4 + strh r0, [r1] + bl sub_806E25C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_080CA41C: .4byte gUnknown_20370C2 +_080CA420: .4byte gUnknown_20370C4 + thumb_func_end sub_80CA3D8 + + thumb_func_start sub_80CA424 +sub_80CA424: @ 80CA424 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _080CA440 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + cmp r2, 0x9 + bhi _080CA436 + b _080CA50C +_080CA436: + cmp r2, 0x13 + bhi _080CA448 + ldr r0, _080CA444 @ =gUnknown_81A6D6D + b _080CA51A + .align 2, 0 +_080CA440: .4byte gUnknown_20370D0 +_080CA444: .4byte gUnknown_81A6D6D +_080CA448: + cmp r2, 0x1D + bhi _080CA454 + ldr r0, _080CA450 @ =gUnknown_81A6DDF + b _080CA51A + .align 2, 0 +_080CA450: .4byte gUnknown_81A6DDF +_080CA454: + cmp r2, 0x27 + bhi _080CA460 + ldr r0, _080CA45C @ =gUnknown_81A6E36 + b _080CA51A + .align 2, 0 +_080CA45C: .4byte gUnknown_81A6E36 +_080CA460: + cmp r2, 0x31 + bhi _080CA46C + ldr r0, _080CA468 @ =gUnknown_81A6EA4 + b _080CA51A + .align 2, 0 +_080CA468: .4byte gUnknown_81A6EA4 +_080CA46C: + cmp r2, 0x3B + bhi _080CA478 + ldr r0, _080CA474 @ =gUnknown_81A6F0B + b _080CA51A + .align 2, 0 +_080CA474: .4byte gUnknown_81A6F0B +_080CA478: + cmp r2, 0x45 + bhi _080CA484 + ldr r0, _080CA480 @ =gUnknown_81A6F71 + b _080CA51A + .align 2, 0 +_080CA480: .4byte gUnknown_81A6F71 +_080CA484: + cmp r2, 0x4F + bhi _080CA490 + ldr r0, _080CA48C @ =gUnknown_81A6FAB + b _080CA51A + .align 2, 0 +_080CA48C: .4byte gUnknown_81A6FAB +_080CA490: + cmp r2, 0x59 + bhi _080CA49C + ldr r0, _080CA498 @ =gUnknown_81A6FF1 + b _080CA51A + .align 2, 0 +_080CA498: .4byte gUnknown_81A6FF1 +_080CA49C: + cmp r2, 0x63 + bhi _080CA4A8 + ldr r0, _080CA4A4 @ =gUnknown_81A7031 + b _080CA51A + .align 2, 0 +_080CA4A4: .4byte gUnknown_81A7031 +_080CA4A8: + cmp r2, 0x6D + bhi _080CA4B4 + ldr r0, _080CA4B0 @ =gUnknown_81A7063 + b _080CA51A + .align 2, 0 +_080CA4B0: .4byte gUnknown_81A7063 +_080CA4B4: + cmp r2, 0x77 + bhi _080CA4C0 + ldr r0, _080CA4BC @ =gUnknown_81A70A5 + b _080CA51A + .align 2, 0 +_080CA4BC: .4byte gUnknown_81A70A5 +_080CA4C0: + cmp r2, 0x81 + bhi _080CA4CC + ldr r0, _080CA4C8 @ =gUnknown_81A70D8 + b _080CA51A + .align 2, 0 +_080CA4C8: .4byte gUnknown_81A70D8 +_080CA4CC: + cmp r2, 0x8B + bhi _080CA4D8 + ldr r0, _080CA4D4 @ =gUnknown_81A7108 + b _080CA51A + .align 2, 0 +_080CA4D4: .4byte gUnknown_81A7108 +_080CA4D8: + cmp r2, 0x95 + bls _080CA4F6 + cmp r2, 0x96 + bne _080CA508 + movs r0, 0x97 + bl sub_8043298 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl sub_8088E74 + lsls r0, 24 + cmp r0, 0 + beq _080CA500 +_080CA4F6: + ldr r0, _080CA4FC @ =gUnknown_81A7137 + b _080CA51A + .align 2, 0 +_080CA4FC: .4byte gUnknown_81A7137 +_080CA500: + ldr r1, _080CA504 @ =gUnknown_20370D0 + b _080CA514 + .align 2, 0 +_080CA504: .4byte gUnknown_20370D0 +_080CA508: + cmp r2, 0x97 + beq _080CA514 +_080CA50C: + ldr r0, _080CA510 @ =gUnknown_81A6D17 + b _080CA51A + .align 2, 0 +_080CA510: .4byte gUnknown_81A6D17 +_080CA514: + movs r0, 0x1 + strh r0, [r1] + ldr r0, _080CA520 @ =gUnknown_81A7175 +_080CA51A: + pop {r1} + bx r1 + .align 2, 0 +_080CA520: .4byte gUnknown_81A7175 + thumb_func_end sub_80CA424 + + thumb_func_start sub_80CA524 +sub_80CA524: @ 80CA524 + push {lr} + ldr r0, _080CA538 @ =gUnknown_20370C0 + ldrh r0, [r0] + bl sub_80CA424 + bl sub_806943C + pop {r0} + bx r0 + .align 2, 0 +_080CA538: .4byte gUnknown_20370C0 + thumb_func_end sub_80CA524 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/quest_log.s b/asm/quest_log.s new file mode 100644 index 000000000..9c453d6e4 --- /dev/null +++ b/asm/quest_log.s @@ -0,0 +1,10369 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8110840 +sub_8110840: @ 8110840 + push {lr} + ldr r1, _08110888 @ =gUnknown_3005008 + ldr r1, [r1] + subs r1, r0 + ldr r2, _0811088C @ =gUnknown_203AE04 + ldr r0, [r2] + cmp r0, 0 + beq _08110854 + adds r0, r1 + str r0, [r2] +_08110854: + ldr r0, _08110890 @ =gUnknown_203ADFA + ldrb r2, [r0] + cmp r2, 0 + beq _08110882 + ldr r3, _08110894 @ =gUnknown_203AE08 + ldr r0, [r3] + cmp r0, 0 + beq _08110868 + adds r0, r1 + str r0, [r3] +_08110868: + cmp r2, 0x2 + bne _08110882 + ldr r2, _08110898 @ =gUnknown_203AE0C + movs r3, 0x1F +_08110870: + ldr r0, [r2] + cmp r0, 0 + beq _0811087A + adds r0, r1 + str r0, [r2] +_0811087A: + adds r2, 0x4 + subs r3, 0x1 + cmp r3, 0 + bge _08110870 +_08110882: + pop {r0} + bx r0 + .align 2, 0 +_08110888: .4byte gUnknown_3005008 +_0811088C: .4byte gUnknown_203AE04 +_08110890: .4byte gUnknown_203ADFA +_08110894: .4byte gUnknown_203AE08 +_08110898: .4byte gUnknown_203AE0C + thumb_func_end sub_8110840 + + thumb_func_start sub_811089C +sub_811089C: @ 811089C + push {lr} + ldr r0, _081108D8 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + movs r2, 0xCD + lsls r2, 5 + movs r1, 0 + bl memset + ldr r0, _081108DC @ =gUnknown_203ADF8 + movs r1, 0 + strb r1, [r0] + ldr r0, _081108E0 @ =gUnknown_203ADFA + strb r1, [r0] + ldr r0, _081108E4 @ =gUnknown_203AE8C + movs r1, 0 + str r1, [r0] + ldr r0, _081108E8 @ =gUnknown_203AE08 + str r1, [r0] + ldr r0, _081108EC @ =gUnknown_203AE04 + str r1, [r0] + bl sub_8113BD8 + bl sub_81138F8 + pop {r0} + bx r0 + .align 2, 0 +_081108D8: .4byte gUnknown_3005008 +_081108DC: .4byte gUnknown_203ADF8 +_081108E0: .4byte gUnknown_203ADFA +_081108E4: .4byte gUnknown_203AE8C +_081108E8: .4byte gUnknown_203AE08 +_081108EC: .4byte gUnknown_203AE04 + thumb_func_end sub_811089C + + thumb_func_start sub_81108F0 +sub_81108F0: @ 81108F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08110918 @ =gUnknown_3005008 + ldr r1, [r1] + movs r2, 0xCD + lsls r2, 3 + muls r0, r2 + adds r0, r1 + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + movs r1, 0 + bl memset + ldr r1, _0811091C @ =gUnknown_203AE04 + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08110918: .4byte gUnknown_3005008 +_0811091C: .4byte gUnknown_203AE04 + thumb_func_end sub_81108F0 + + thumb_func_start sub_8110920 +sub_8110920: @ 8110920 + ldr r1, _08110928 @ =gUnknown_203AE04 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_08110928: .4byte gUnknown_203AE04 + thumb_func_end sub_8110920 + + thumb_func_start sub_811092C +sub_811092C: @ 811092C + push {lr} + ldr r0, _08110940 @ =gUnknown_203AE8C + ldr r0, [r0] + cmp r0, 0 + beq _0811093A + bl _call_via_r0 +_0811093A: + pop {r0} + bx r0 + .align 2, 0 +_08110940: .4byte gUnknown_203AE8C + thumb_func_end sub_811092C + + thumb_func_start sub_8110944 +sub_8110944: @ 8110944 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08110978 @ =gUnknown_3005008 + ldr r0, _0811097C @ =gUnknown_203ADF8 + ldrb r0, [r0] + movs r3, 0xCD + lsls r3, 3 + adds r2, r0, 0 + muls r2, r3 + movs r0, 0x98 + lsls r0, 5 + adds r2, r0 + ldr r0, [r4] + adds r0, r2 + movs r4, 0xAD + lsls r4, 3 + adds r2, r0, r4 + adds r0, r3 + subs r0, r1 + cmp r5, r2 + bcc _08110972 + cmp r5, r0 + bls _08110980 +_08110972: + movs r0, 0 + b _08110982 + .align 2, 0 +_08110978: .4byte gUnknown_3005008 +_0811097C: .4byte gUnknown_203ADF8 +_08110980: + movs r0, 0x1 +_08110982: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8110944 + + thumb_func_start sub_8110988 +sub_8110988: @ 8110988 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _081109BC @ =gUnknown_3005008 + ldr r0, _081109C0 @ =gUnknown_203ADF8 + ldrb r0, [r0] + movs r3, 0xCD + lsls r3, 3 + adds r2, r0, 0 + muls r2, r3 + movs r0, 0x98 + lsls r0, 5 + adds r2, r0 + ldr r0, [r4] + adds r0, r2 + movs r4, 0xAD + lsls r4, 3 + adds r2, r0, r4 + adds r0, r3 + subs r0, r1 + cmp r5, r2 + bcc _081109B6 + cmp r5, r0 + bls _081109C4 +_081109B6: + movs r0, 0 + b _081109C6 + .align 2, 0 +_081109BC: .4byte gUnknown_3005008 +_081109C0: .4byte gUnknown_203ADF8 +_081109C4: + movs r0, 0x1 +_081109C6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8110988 + + thumb_func_start sub_81109CC +sub_81109CC: @ 81109CC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081109E0 @ =gUnknown_203ADFA + strb r0, [r1] + cmp r0, 0x1 + bne _081109EC + ldr r1, _081109E4 @ =gUnknown_203AE8C + ldr r0, _081109E8 @ =sub_8110A00 + b _081109F0 + .align 2, 0 +_081109E0: .4byte gUnknown_203ADFA +_081109E4: .4byte gUnknown_203AE8C +_081109E8: .4byte sub_8110A00 +_081109EC: + ldr r1, _081109F8 @ =gUnknown_203AE8C + ldr r0, _081109FC @ =sub_8110A3C +_081109F0: + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081109F8: .4byte gUnknown_203AE8C +_081109FC: .4byte sub_8110A3C + thumb_func_end sub_81109CC + + thumb_func_start sub_8110A00 +sub_8110A00: @ 8110A00 + push {r4,lr} + ldr r0, _08110A2C @ =gUnknown_203AE98 + bl sub_8110E68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08110A24 + ldr r0, _08110A30 @ =gUnknown_3005E88 + movs r4, 0 + strb r4, [r0] + bl sub_8110E3C + ldr r0, _08110A34 @ =gUnknown_203ADFA + strb r4, [r0] + ldr r1, _08110A38 @ =gUnknown_203AE8C + movs r0, 0 + str r0, [r1] +_08110A24: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110A2C: .4byte gUnknown_203AE98 +_08110A30: .4byte gUnknown_3005E88 +_08110A34: .4byte gUnknown_203ADFA +_08110A38: .4byte gUnknown_203AE8C + thumb_func_end sub_8110A00 + + thumb_func_start sub_8110A3C +sub_8110A3C: @ 8110A3C + push {r4,lr} + ldr r1, _08110A8C @ =gUnknown_203AE94 + ldrb r2, [r1] + movs r4, 0xF + adds r0, r4, 0 + ands r0, r2 + adds r3, r1, 0 + cmp r0, 0x2 + bne _08110A56 + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r3] +_08110A56: + ldrb r1, [r3] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + bne _08110AAE + ldr r0, _08110A90 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0 + bne _08110A84 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0x1 + beq _08110A84 + ldrb r0, [r3, 0x1] + cmp r0, 0x1F + bhi _08110A98 + ldr r0, _08110A94 @ =gUnknown_203AE0C + ldrb r1, [r3, 0x1] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + beq _08110A98 +_08110A84: + bl sub_8111AD8 + b _08110AAE + .align 2, 0 +_08110A8C: .4byte gUnknown_203AE94 +_08110A90: .4byte gUnknown_3005E88 +_08110A94: .4byte gUnknown_203AE0C +_08110A98: + ldrb r0, [r3] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r3] + bl sub_8069940 + movs r0, 0 + bl sub_81118F4 +_08110AAE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8110A3C + + thumb_func_start sub_8110AB4 +sub_8110AB4: @ 8110AB4 + ldr r0, _08110AC0 @ =gUnknown_20370D0 + ldr r1, _08110AC4 @ =gUnknown_203ADFA + ldrb r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_08110AC0: .4byte gUnknown_20370D0 +_08110AC4: .4byte gUnknown_203ADFA + thumb_func_end sub_8110AB4 + + thumb_func_start sub_8110AC8 +sub_8110AC8: @ 8110AC8 + ldr r0, _08110AE4 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _08110AE8 @ =gUnknown_203ADF8 + ldrb r2, [r0] + movs r0, 0xCD + lsls r0, 3 + muls r0, r2 + adds r1, r0 + movs r0, 0x98 + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_08110AE4: .4byte gUnknown_3005008 +_08110AE8: .4byte gUnknown_203ADF8 + thumb_func_end sub_8110AC8 + + thumb_func_start sub_8110AEC +sub_8110AEC: @ 8110AEC + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + ldr r4, _08110B44 @ =gUnknown_203ADF8 + ldrb r0, [r4] + cmp r0, 0x3 + bls _08110AFE + movs r0, 0 + strb r0, [r4] +_08110AFE: + ldrb r0, [r4] + bl sub_81108F0 + bl sub_8113B88 + ldr r2, _08110B48 @ =gUnknown_203AE08 + ldr r1, _08110B4C @ =gUnknown_3005008 + ldrb r0, [r4] + movs r3, 0xCD + lsls r3, 3 + muls r0, r3 + movs r5, 0x98 + lsls r5, 5 + adds r0, r5 + ldr r1, [r1] + adds r0, r1, r0 + movs r7, 0xAD + lsls r7, 3 + adds r0, r7 + str r0, [r2] + adds r0, r6, 0 + subs r0, 0xC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7 + bls _08110B36 + cmp r6, 0x23 + bne _08110B50 +_08110B36: + ldrb r0, [r4] + muls r0, r3 + adds r0, r1, r0 + adds r0, r5 + movs r1, 0x2 + b _08110B5A + .align 2, 0 +_08110B44: .4byte gUnknown_203ADF8 +_08110B48: .4byte gUnknown_203AE08 +_08110B4C: .4byte gUnknown_3005008 +_08110B50: + ldrb r0, [r4] + muls r0, r3 + adds r0, r1, r0 + adds r0, r5 + movs r1, 0x1 +_08110B5A: + strb r1, [r0] + bl sub_81115E8 + ldr r4, _08110BA4 @ =gUnknown_203ADF8 + ldrb r0, [r4] + bl sub_8110BB0 + ldrb r0, [r4] + bl sub_8110BE8 + bl sub_8110D94 + bl sub_8110E20 + ldrb r0, [r4] + bl sub_8110D48 + ldr r1, _08110BA8 @ =gUnknown_203ADFC + movs r0, 0 + strh r0, [r1] + ldr r4, _08110BAC @ =gUnknown_203AE98 + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_8112940 + adds r0, r4, 0 + bl sub_8110E68 + movs r0, 0x1 + bl sub_81109CC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08110BA4: .4byte gUnknown_203ADF8 +_08110BA8: .4byte gUnknown_203ADFC +_08110BAC: .4byte gUnknown_203AE98 + thumb_func_end sub_8110AEC + + thumb_func_start sub_8110BB0 +sub_8110BB0: @ 8110BB0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08110BE4 @ =gUnknown_3005008 + movs r1, 0xCD + lsls r1, 3 + muls r1, r0 + movs r0, 0x98 + lsls r0, 5 + adds r1, r0 + ldr r0, [r2] + adds r1, r0, r1 + ldrb r0, [r0, 0x4] + strb r0, [r1, 0x1] + ldr r0, [r2] + ldrb r0, [r0, 0x5] + strb r0, [r1, 0x2] + ldr r0, [r2] + ldrb r0, [r0, 0x6] + strb r0, [r1, 0x3] + ldr r2, [r2] + ldrh r0, [r2] + strh r0, [r1, 0x4] + ldrh r0, [r2, 0x2] + strh r0, [r1, 0x6] + bx lr + .align 2, 0 +_08110BE4: .4byte gUnknown_3005008 + thumb_func_end sub_8110BB0 + + thumb_func_start sub_8110BE8 +sub_8110BE8: @ 8110BE8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08110C54 @ =gUnknown_3005008 + movs r1, 0xCD + lsls r1, 3 + muls r0, r1 + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + ldr r1, [r4] + adds r7, r1, r0 + adds r0, r7, 0 + bl sub_815A008 + movs r6, 0 + mov r9, r4 + movs r2, 0x8D + lsls r2, 3 + mov r8, r2 + ldr r3, _08110C58 @ =0x0000046a + mov r10, r3 +_08110C1C: + mov r4, r9 + ldr r1, [r4] + lsls r2, r6, 1 + adds r0, r2, r6 + lsls r0, 3 + adds r1, r0 + ldr r0, _08110C5C @ =0x000008e4 + adds r1, r0 + ldrh r4, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + mov r12, r2 + cmp r0, 0 + bge _08110C64 + lsls r3, r6, 2 + adds r2, r7, r3 + negs r0, r0 + mov r4, r8 + adds r1, r2, r4 + strb r0, [r1] + ldr r0, _08110C60 @ =0x00000469 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + b _08110C7C + .align 2, 0 +_08110C54: .4byte gUnknown_3005008 +_08110C58: .4byte 0x0000046a +_08110C5C: .4byte 0x000008e4 +_08110C60: .4byte 0x00000469 +_08110C64: + lsls r3, r6, 2 + adds r1, r7, r3 + mov r2, r8 + adds r0, r1, r2 + strb r4, [r0] + ldr r4, _08110CBC @ =0x00000469 + adds r1, r4 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_08110C7C: + adds r5, r3, 0 + mov r1, r9 + ldr r0, [r1] + mov r2, r12 + adds r1, r2, r6 + lsls r1, 3 + adds r0, r1 + ldr r3, _08110CC0 @ =0x000008e6 + adds r1, r0, r3 + ldrh r2, [r1] + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + bge _08110CC8 + adds r3, r7, r5 + adds r1, r0, 0 + negs r1, r1 + lsls r1, 24 + mov r2, r8 + adds r4, r3, r2 + lsrs r1, 15 + ldr r0, [r4] + ldr r2, _08110CC4 @ =0xfffe01ff + ands r0, r2 + orrs r0, r1 + str r0, [r4] + add r3, r10 + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + b _08110CE6 + .align 2, 0 +_08110CBC: .4byte 0x00000469 +_08110CC0: .4byte 0x000008e6 +_08110CC4: .4byte 0xfffe01ff +_08110CC8: + adds r3, r7, r5 + lsls r2, 24 + mov r0, r8 + adds r4, r3, r0 + lsrs r2, 15 + ldr r0, [r4] + ldr r1, _08110D38 @ =0xfffe01ff + ands r0, r1 + orrs r0, r2 + str r0, [r4] + add r3, r10 + ldrb r1, [r3] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 +_08110CE6: + strb r0, [r3] + adds r5, r7, r5 + mov r1, r9 + ldr r0, [r1] + mov r2, r12 + adds r3, r2, r6 + lsls r3, 3 + adds r0, r3 + ldr r4, _08110D3C @ =0x000008e8 + adds r0, r4 + ldrb r1, [r0] + mov r0, r10 + adds r4, r5, r0 + lsls r1, 2 + ldrb r2, [r4] + movs r0, 0x3 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + mov r1, r9 + ldr r0, [r1] + adds r0, r3 + ldr r2, _08110D40 @ =0x000008e9 + adds r0, r2 + ldrb r0, [r0] + ldr r3, _08110D44 @ =0x0000046b + adds r5, r3 + strb r0, [r5] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x3F + bhi _08110D2A + b _08110C1C +_08110D2A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08110D38: .4byte 0xfffe01ff +_08110D3C: .4byte 0x000008e8 +_08110D40: .4byte 0x000008e9 +_08110D44: .4byte 0x0000046b + thumb_func_end sub_8110BE8 + + thumb_func_start sub_8110D48 +sub_8110D48: @ 8110D48 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _08110D90 @ =gUnknown_3005008 + movs r1, 0xCD + lsls r1, 3 + muls r1, r0 + movs r0, 0x98 + lsls r0, 5 + adds r1, r0 + ldr r0, [r4] + adds r5, r0, r1 + movs r1, 0xEE + lsls r1, 4 + adds r0, r1 + movs r2, 0xA4 + lsls r2, 1 + adds r1, r5, r2 + movs r2, 0x90 + bl CpuSet + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 5 + adds r0, r1 + movs r2, 0x9A + lsls r2, 2 + adds r1, r5, r2 + movs r2, 0x80 + lsls r2, 1 + bl CpuSet + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08110D90: .4byte gUnknown_3005008 + thumb_func_end sub_8110D48 + + thumb_func_start sub_8110D94 +sub_8110D94: @ 8110D94 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r4, 0 + ldr r0, _08110E14 @ =gUnknown_3005008 + mov r10, r0 + ldr r1, _08110E18 @ =0x0000063a + mov r9, r1 + movs r2, 0x1 + mov r8, r2 +_08110DAE: + lsls r1, r4, 1 + mov r7, sp + adds r2, r7, r1 + movs r0, 0 + strh r0, [r2] + movs r3, 0 + adds r6, r1, 0 + adds r0, r4, 0x1 + str r0, [sp, 0x8] + mov r1, r10 + ldr r0, [r1] + mov r7, r9 + adds r5, r0, r7 + lsls r1, r4, 4 +_08110DCA: + adds r0, r1, r3 + adds r0, r5, r0 + ldrb r0, [r0] + cmp r0, 0 + beq _08110DDE + mov r0, r8 + lsls r0, r3 + ldrh r7, [r2] + adds r0, r7 + strh r0, [r2] +_08110DDE: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0xF + bls _08110DCA + ldr r1, _08110E1C @ =0x000040aa + adds r0, r4, r1 + lsls r0, 16 + lsrs r0, 16 + mov r2, sp + adds r1, r2, r6 + ldrh r1, [r1] + bl sub_806E584 + ldr r7, [sp, 0x8] + lsls r0, r7, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08110DAE + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08110E14: .4byte gUnknown_3005008 +_08110E18: .4byte 0x0000063a +_08110E1C: .4byte 0x000040aa + thumb_func_end sub_8110D94 + + thumb_func_start sub_8110E20 +sub_8110E20: @ 8110E20 + push {lr} + ldr r0, _08110E34 @ =0x000040ae + ldr r1, _08110E38 @ =gUnknown_3005008 + ldr r1, [r1] + ldrh r1, [r1, 0x32] + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_08110E34: .4byte 0x000040ae +_08110E38: .4byte gUnknown_3005008 + thumb_func_end sub_8110E20 + + thumb_func_start sub_8110E3C +sub_8110E3C: @ 8110E3C + push {lr} + ldr r0, _08110E60 @ =gUnknown_203AE08 + ldr r0, [r0] + bl sub_8113BF4 + ldr r1, _08110E64 @ =gUnknown_203ADF8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08110E5A + movs r0, 0 + strb r0, [r1] +_08110E5A: + pop {r0} + bx r0 + .align 2, 0 +_08110E60: .4byte gUnknown_203AE08 +_08110E64: .4byte gUnknown_203ADF8 + thumb_func_end sub_8110E3C + + thumb_func_start sub_8110E68 +sub_8110E68: @ 8110E68 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + ldr r0, _08110EA0 @ =gUnknown_203ADFC + ldrh r5, [r0] + ldr r0, _08110EA4 @ =gUnknown_203AF98 + mov r8, r0 + ldrh r0, [r0] + cmp r5, r0 + bcs _08110ECA + ldr r6, _08110EA8 @ =gUnknown_203AE08 +_08110E80: + ldr r4, [r6] + cmp r4, 0 + beq _08110F02 + lsls r0, r5, 3 + adds r1, r0, r7 + ldrb r2, [r1, 0x6] + adds r3, r0, 0 + cmp r2, 0x1 + bgt _08110EAC + cmp r2, 0 + blt _08110EAC + adds r0, r4, 0 + bl sub_8113D48 + b _08110EB4 + .align 2, 0 +_08110EA0: .4byte gUnknown_203ADFC +_08110EA4: .4byte gUnknown_203AF98 +_08110EA8: .4byte gUnknown_203AE08 +_08110EAC: + ldr r0, [r6] + adds r1, r7, r3 + bl sub_8113CC8 +_08110EB4: + str r0, [r6] + ldr r1, [r6] + cmp r1, 0 + beq _08110EEC + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08110EE0 @ =gUnknown_203AF98 + ldrh r0, [r0] + cmp r5, r0 + bcc _08110E80 +_08110ECA: + ldr r0, _08110EE4 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0 + beq _08110EF8 + ldr r1, _08110EE8 @ =gUnknown_203ADFC + mov r2, r8 + ldrh r0, [r2] + strh r0, [r1] + movs r0, 0x1 + b _08110F04 + .align 2, 0 +_08110EE0: .4byte gUnknown_203AF98 +_08110EE4: .4byte gUnknown_3005E88 +_08110EE8: .4byte gUnknown_203ADFC +_08110EEC: + ldr r0, _08110EF4 @ =gUnknown_3005E88 + strb r1, [r0] + b _08110F02 + .align 2, 0 +_08110EF4: .4byte gUnknown_3005E88 +_08110EF8: + ldr r4, _08110F10 @ =gUnknown_203AE08 + ldr r0, [r4] + bl sub_8113BF4 + str r0, [r4] +_08110F02: + movs r0, 0 +_08110F04: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08110F10: .4byte gUnknown_203AE08 + thumb_func_end sub_8110E68 + + thumb_func_start sub_8110F14 +sub_8110F14: @ 8110F14 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_811381C + ldr r1, _08110F6C @ =gUnknown_203ADF9 + movs r0, 0 + strb r0, [r1] + movs r2, 0 + ldr r0, _08110F70 @ =gUnknown_3005008 + ldr r5, [r0] + movs r7, 0xCD + lsls r7, 3 + movs r6, 0x98 + lsls r6, 5 +_08110F32: + adds r0, r2, 0 + muls r0, r7 + adds r0, r5, r0 + adds r0, r6 + ldrb r0, [r0] + ldr r3, _08110F6C @ =gUnknown_203ADF9 + cmp r0, 0 + beq _08110F48 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08110F48: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _08110F32 + ldrb r0, [r3] + cmp r0, 0 + beq _08110F78 + ldr r1, _08110F74 @ =gUnknown_3005ECC + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8110F90 + adds r0, r4, 0 + bl sub_8077508 + b _08110F84 + .align 2, 0 +_08110F6C: .4byte gUnknown_203ADF9 +_08110F70: .4byte gUnknown_3005008 +_08110F74: .4byte gUnknown_3005ECC +_08110F78: + ldr r0, _08110F8C @ =sub_8056938 + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_08110F84: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08110F8C: .4byte sub_8056938 + thumb_func_end sub_8110F14 + + thumb_func_start sub_8110F90 +sub_8110F90: @ 8110F90 + push {lr} + ldr r1, _08110FC0 @ =gUnknown_3005008 + ldr r2, [r1] + movs r3, 0 + movs r0, 0x3 + strb r0, [r2, 0x4] + ldr r2, [r1] + movs r0, 0x13 + strb r0, [r2, 0x5] + ldr r1, [r1] + movs r0, 0xFF + strb r0, [r1, 0x6] + ldr r0, _08110FC4 @ =gUnknown_203ADF8 + strb r3, [r0] + ldr r1, _08110FC8 @ =gUnknown_2031DD8 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1 + bl sub_8082740 + bl sub_8111368 + pop {r0} + bx r0 + .align 2, 0 +_08110FC0: .4byte gUnknown_3005008 +_08110FC4: .4byte gUnknown_203ADF8 +_08110FC8: .4byte gUnknown_2031DD8 + thumb_func_end sub_8110F90 + + thumb_func_start sub_8110FCC +sub_8110FCC: @ 8110FCC + push {r4,r5,lr} + ldr r5, _08110FF8 @ =gUnknown_203ADF8 + ldrb r0, [r5] + ldr r4, _08110FFC @ =gUnknown_203AE98 + adds r1, r4, 0 + bl sub_811175C + bl sub_8113B88 + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x1 + adds r1, r4, 0 + bl sub_8112940 + ldrb r0, [r5] + bl sub_8111150 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08110FF8: .4byte gUnknown_203ADF8 +_08110FFC: .4byte gUnknown_203AE98 + thumb_func_end sub_8110FCC + + thumb_func_start sub_8111000 +sub_8111000: @ 8111000 + push {lr} + movs r0, 0x4 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + bl sub_81109CC + bl sub_807DF64 + ldr r2, _08111034 @ =gUnknown_203AE94 + movs r0, 0 + str r0, [r2] + ldrb r1, [r2] + subs r0, 0x10 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08111034: .4byte gUnknown_203AE94 + thumb_func_end sub_8111000 + + thumb_func_start sub_8111038 +sub_8111038: @ 8111038 + push {lr} + movs r0, 0x4 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + bl sub_81109CC + bl sub_807DF7C + ldr r2, _0811106C @ =gUnknown_203AE94 + movs r0, 0 + str r0, [r2] + ldrb r1, [r2] + subs r0, 0x10 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0811106C: .4byte gUnknown_203AE94 + thumb_func_end sub_8111038 + + thumb_func_start sub_8111070 +sub_8111070: @ 8111070 + push {r4-r7,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r7, r0, 24 + movs r5, 0 +_0811107A: + lsls r4, r5, 3 + ldr r0, _0811111C @ =gUnknown_845661C + adds r4, r0 + adds r0, r4, 0 + bl sub_8003CE4 + ldr r6, _08111120 @ =gUnknown_203ADFE + adds r1, r5, r6 + strb r0, [r1] + ldrb r0, [r1] + ldrb r1, [r4, 0x3] + lsls r1, 3 + str r1, [sp] + ldrb r1, [r4, 0x4] + lsls r1, 3 + str r1, [sp, 0x4] + movs r1, 0xF + movs r2, 0 + movs r3, 0 + bl sub_8004378 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _0811107A + ldr r5, _08111124 @ =gUnknown_2021D18 + ldr r1, _08111128 @ =gUnknown_841A155 + adds r0, r5, 0 + bl sub_8008FCC + cmp r7, 0 + beq _081110D2 + ldr r4, _0811112C @ =gUnknown_2021CD0 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 +_081110D2: + ldrb r0, [r6] + movs r1, 0x1 + str r1, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + ldr r1, _08111130 @ =gUnknown_8456634 + str r1, [sp, 0x8] + movs r1, 0 + str r1, [sp, 0xC] + str r5, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E5A4 + ldrb r0, [r6] + bl sub_8003FA0 + ldrb r0, [r6, 0x1] + bl sub_8003FA0 + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r6, 0x2] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r6, 0x1] + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811111C: .4byte gUnknown_845661C +_08111120: .4byte gUnknown_203ADFE +_08111124: .4byte gUnknown_2021D18 +_08111128: .4byte gUnknown_841A155 +_0811112C: .4byte gUnknown_2021CD0 +_08111130: .4byte gUnknown_8456634 + thumb_func_end sub_8111070 + + thumb_func_start sub_8111134 +sub_8111134: @ 8111134 + push {r4,lr} + ldr r4, _0811114C @ =gUnknown_203ADFE + ldrb r0, [r4, 0x1] + bl sub_8003FA0 + ldrb r0, [r4, 0x1] + movs r1, 0x1 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811114C: .4byte gUnknown_203ADFE + thumb_func_end sub_8111134 + + thumb_func_start sub_8111150 +sub_8111150: @ 8111150 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081111A8 @ =gUnknown_3005008 + movs r1, 0xCD + lsls r1, 3 + muls r0, r1 + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + movs r4, 0 + mov r9, r2 + mov r6, r9 + movs r2, 0x8D + lsls r2, 3 + mov r12, r2 + ldr r7, _081111AC @ =0x000008e4 + mov r8, r7 +_08111180: + lsls r0, r4, 2 + adds r3, r5, r0 + ldr r2, _081111B0 @ =0x00000469 + adds r1, r3, r2 + ldrb r1, [r1] + lsls r1, 31 + mov r10, r0 + cmp r1, 0 + beq _081111B4 + ldr r1, [r6] + lsls r2, r4, 1 + adds r0, r2, r4 + lsls r0, 3 + adds r1, r0 + mov r7, r12 + adds r0, r3, r7 + ldrb r0, [r0] + negs r0, r0 + b _081111C4 + .align 2, 0 +_081111A8: .4byte gUnknown_3005008 +_081111AC: .4byte 0x000008e4 +_081111B0: .4byte 0x00000469 +_081111B4: + ldr r1, [r6] + lsls r2, r4, 1 + adds r0, r2, r4 + lsls r0, 3 + adds r1, r0 + mov r7, r12 + adds r0, r3, r7 + ldrb r0, [r0] +_081111C4: + add r1, r8 + strh r0, [r1] + adds r3, r2, 0 + mov r0, r10 + adds r2, r5, r0 + ldr r1, _081111F0 @ =0x0000046a + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _081111F4 + ldr r1, [r6] + adds r0, r3, r4 + lsls r0, 3 + adds r1, r0 + mov r7, r12 + adds r0, r2, r7 + ldr r0, [r0] + lsls r0, 15 + lsrs r0, 24 + negs r0, r0 + b _08111206 + .align 2, 0 +_081111F0: .4byte 0x0000046a +_081111F4: + ldr r1, [r6] + adds r0, r3, r4 + lsls r0, 3 + adds r1, r0 + mov r7, r12 + adds r0, r2, r7 + ldr r0, [r0] + lsls r0, 15 + lsrs r0, 24 +_08111206: + ldr r2, _08111260 @ =0x000008e6 + adds r1, r2 + strh r0, [r1] + ldr r1, [r6] + adds r3, r4 + lsls r3, 3 + adds r1, r3 + mov r7, r10 + adds r2, r5, r7 + ldr r7, _08111264 @ =0x0000046a + adds r0, r2, r7 + ldrb r0, [r0] + lsrs r0, 2 + ldr r7, _08111268 @ =0x000008e8 + adds r1, r7 + strb r0, [r1] + ldr r0, [r6] + adds r0, r3 + ldr r1, _0811126C @ =0x0000046b + adds r2, r1 + ldrb r1, [r2] + ldr r2, _08111270 @ =0x000008e9 + adds r0, r2 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3F + bls _08111180 + mov r7, r9 + ldr r1, [r7] + movs r0, 0x8E + lsls r0, 4 + adds r1, r0 + adds r0, r5, 0 + bl sub_815A1F8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08111260: .4byte 0x000008e6 +_08111264: .4byte 0x0000046a +_08111268: .4byte 0x000008e8 +_0811126C: .4byte 0x0000046b +_08111270: .4byte 0x000008e9 + thumb_func_end sub_8111150 + + thumb_func_start sub_8111274 +sub_8111274: @ 8111274 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + cmp r1, 0 + bne _081112D4 + ldr r3, _081112C8 @ =gUnknown_3005008 + ldr r2, [r3] + movs r0, 0xCD + lsls r0, 3 + adds r1, r4, 0 + muls r1, r0 + adds r0, r2, r1 + ldr r4, _081112CC @ =0x00001301 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2, 0x4] + ldr r2, [r3] + adds r0, r2, r1 + adds r4, 0x1 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2, 0x5] + ldr r2, [r3] + adds r0, r2, r1 + adds r4, 0x1 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2, 0x6] + ldr r2, [r3] + adds r1, r2, r1 + ldr r3, _081112D0 @ =0x00001304 + adds r0, r1, r3 + ldrh r0, [r0] + strh r0, [r2] + adds r4, 0x3 + adds r1, r4 + ldrh r0, [r1] + strh r0, [r2, 0x2] + b _08111336 + .align 2, 0 +_081112C8: .4byte gUnknown_3005008 +_081112CC: .4byte 0x00001301 +_081112D0: .4byte 0x00001304 +_081112D4: + ldr r0, _08111340 @ =gUnknown_3005008 + ldr r3, [r0] + movs r0, 0xCD + lsls r0, 3 + muls r0, r4 + adds r3, r0 + ldr r1, _08111344 @ =0x00001301 + adds r0, r3, r1 + ldrb r2, [r0] + ldr r0, _08111348 @ =0xffffff00 + ldr r1, [sp] + ands r1, r0 + orrs r1, r2 + str r1, [sp] + ldr r2, _0811134C @ =0x00001302 + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, 8 + ldr r2, _08111350 @ =0xffff00ff + ands r2, r1 + orrs r2, r0 + str r2, [sp] + ldr r4, _08111354 @ =0x00001303 + adds r0, r3, r4 + ldrb r1, [r0] + lsls r1, 16 + ldr r0, _08111358 @ =0xff00ffff + ands r0, r2 + orrs r0, r1 + str r0, [sp] + ldr r1, _0811135C @ =0x00001304 + adds r0, r3, r1 + ldrh r1, [r0] + ldr r0, _08111360 @ =0xffff0000 + ldr r2, [sp, 0x4] + ands r2, r0 + orrs r2, r1 + str r2, [sp, 0x4] + adds r4, 0x3 + adds r3, r4 + ldrh r1, [r3] + lsls r1, 16 + ldr r0, _08111364 @ =0x0000ffff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8055D5C +_08111336: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111340: .4byte gUnknown_3005008 +_08111344: .4byte 0x00001301 +_08111348: .4byte 0xffffff00 +_0811134C: .4byte 0x00001302 +_08111350: .4byte 0xffff00ff +_08111354: .4byte 0x00001303 +_08111358: .4byte 0xff00ffff +_0811135C: .4byte 0x00001304 +_08111360: .4byte 0xffff0000 +_08111364: .4byte 0x0000ffff + thumb_func_end sub_8111274 + + thumb_func_start sub_8111368 +sub_8111368: @ 8111368 + push {lr} + ldr r1, _081113A0 @ =gUnknown_203ADFA + movs r0, 0x2 + strb r0, [r1] + bl sub_806E6FC + bl sub_809A2DC + bl sub_809A2A4 + bl sub_8110AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081113B4 + ldr r0, _081113A4 @ =gUnknown_203ADF8 + ldrb r0, [r0] + movs r1, 0 + bl sub_8111274 + ldr r1, _081113A8 @ =gUnknown_3005024 + ldr r0, _081113AC @ =sub_8111038 + str r0, [r1] + ldr r0, _081113B0 @ =sub_80572A8 + bl sub_8000544 + b _081113CE + .align 2, 0 +_081113A0: .4byte gUnknown_203ADFA +_081113A4: .4byte gUnknown_203ADF8 +_081113A8: .4byte gUnknown_3005024 +_081113AC: .4byte sub_8111038 +_081113B0: .4byte sub_80572A8 +_081113B4: + ldr r0, _081113D4 @ =gUnknown_203ADF8 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8111274 + bl sub_8055378 + ldr r1, _081113D8 @ =gUnknown_3005024 + ldr r0, _081113DC @ =sub_8111000 + str r0, [r1] + ldr r0, _081113E0 @ =sub_805726C + bl sub_8000544 +_081113CE: + pop {r0} + bx r0 + .align 2, 0 +_081113D4: .4byte gUnknown_203ADF8 +_081113D8: .4byte gUnknown_3005024 +_081113DC: .4byte sub_8111000 +_081113E0: .4byte sub_805726C + thumb_func_end sub_8111368 + + thumb_func_start sub_81113E4 +sub_81113E4: @ 81113E4 + push {r4,r5,lr} + ldr r4, _08111430 @ =gUnknown_3005008 + ldr r0, _08111434 @ =gUnknown_203ADF8 + ldrb r1, [r0] + movs r0, 0xCD + lsls r0, 3 + muls r0, r1 + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + ldr r1, [r4] + adds r5, r1, r0 + movs r2, 0xA4 + lsls r2, 1 + adds r0, r5, r2 + movs r2, 0xEE + lsls r2, 4 + adds r1, r2 + movs r2, 0x90 + bl CpuSet + movs r1, 0x9A + lsls r1, 2 + adds r0, r5, r1 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 5 + adds r1, r2 + movs r2, 0x80 + lsls r2, 1 + bl CpuSet + bl sub_8111688 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08111430: .4byte gUnknown_3005008 +_08111434: .4byte gUnknown_203ADF8 + thumb_func_end sub_81113E4 + + thumb_func_start sub_8111438 +sub_8111438: @ 8111438 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + movs r0, 0x68 + bl sub_8002BB0 + mov r9, r0 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + mov r0, r9 + movs r1, 0x13 + movs r2, 0x1 + movs r3, 0x20 + bl sub_803DA54 + ldr r0, _081114BC @ =0x00004027 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 28 + mov r6, r9 + adds r6, 0x64 + strh r1, [r6] + lsls r0, 4 + lsrs r0, 20 + mov r4, r9 + adds r4, 0x66 + strh r0, [r4] + bl sub_8111618 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r6] + cmp r5, r0 + bls _081114C4 + movs r3, 0 + subs r0, r5, r0 + mov r8, r4 + cmp r3, r0 + bge _0811150E +_08111492: + movs r0, 0x5 + subs r0, r3 + movs r1, 0x64 + muls r0, r1 + ldr r1, _081114C0 @ =gUnknown_2024284 + adds r0, r1 + str r3, [sp, 0x10] + bl sub_803D994 + ldr r3, [sp, 0x10] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + mov r0, r9 + adds r0, 0x64 + ldrh r0, [r0] + subs r0, r5, r0 + cmp r3, r0 + blt _08111492 + b _0811150E + .align 2, 0 +_081114BC: .4byte 0x00004027 +_081114C0: .4byte gUnknown_2024284 +_081114C4: + mov r8, r4 + cmp r5, r0 + bcs _0811150E + movs r3, 0 + adds r4, r6, 0 +_081114CE: + lsls r1, r3, 24 + lsrs r1, 24 + movs r0, 0 + str r3, [sp, 0x10] + bl sub_808BCB4 + ldr r3, [sp, 0x10] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x4 + bls _081114CE + adds r3, r5, 0 + ldrh r0, [r4] + cmp r3, r0 + bcs _0811150E +_081114EE: + movs r0, 0x64 + muls r0, r3 + ldr r1, _08111574 @ =gUnknown_2024284 + adds r0, r1 + mov r1, r9 + movs r2, 0x64 + str r3, [sp, 0x10] + bl sub_8040B08 + ldr r3, [sp, 0x10] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r1, [r4] + cmp r3, r1 + bcc _081114EE +_0811150E: + bl sub_811164C + lsls r0, 16 + lsrs r5, r0, 16 + mov r1, r8 + ldrh r0, [r1] + cmp r5, r0 + bls _08111578 + movs r3, 0 +_08111520: + movs r6, 0 + lsls r7, r3, 24 + lsrs r7, 24 +_08111526: + lsls r0, r6, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0x5 + str r3, [sp, 0x10] + bl sub_808BA18 + ldr r3, [sp, 0x10] + cmp r0, 0 + beq _08111554 + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_808BCB4 + subs r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r3, [sp, 0x10] + mov r0, r8 + ldrh r0, [r0] + cmp r5, r0 + beq _081115D2 +_08111554: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x1D + bls _08111526 + mov r1, r8 + ldrh r1, [r1] + cmp r5, r1 + beq _081115D2 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0xD + bls _08111520 + b _081115D2 + .align 2, 0 +_08111574: .4byte gUnknown_2024284 +_08111578: + cmp r5, r0 + bcs _081115D2 + movs r3, 0 +_0811157E: + movs r6, 0 + lsls r7, r3, 24 +_08111582: + lsls r1, r6, 24 + lsrs r1, 24 + lsrs r0, r7, 24 + str r3, [sp, 0x10] + bl sub_808BD30 + adds r4, r0, 0 + movs r1, 0x5 + bl sub_803FD44 + ldr r3, [sp, 0x10] + cmp r0, 0 + bne _081115B6 + adds r0, r4, 0 + mov r1, r9 + movs r2, 0x50 + bl sub_8040B08 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r3, [sp, 0x10] + mov r0, r8 + ldrh r0, [r0] + cmp r5, r0 + beq _081115D2 +_081115B6: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x1D + bls _08111582 + mov r1, r8 + ldrh r1, [r1] + cmp r5, r1 + beq _081115D2 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0xD + bls _0811157E +_081115D2: + mov r0, r9 + bl sub_8002BC4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8111438 + + thumb_func_start sub_81115E8 +sub_81115E8: @ 81115E8 + push {r4,lr} + bl sub_8111618 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_811164C + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _08111614 @ =0x00004027 + lsls r4, 12 + adds r1, r4 + lsls r1, 16 + lsrs r1, 16 + bl sub_806E584 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111614: .4byte 0x00004027 + thumb_func_end sub_81115E8 + + thumb_func_start sub_8111618 +sub_8111618: @ 8111618 + push {r4,r5,lr} + movs r5, 0 + movs r4, 0 +_0811161E: + movs r0, 0x64 + muls r0, r4 + ldr r1, _08111648 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _08111636 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08111636: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x5 + bls _0811161E + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08111648: .4byte gUnknown_2024284 + thumb_func_end sub_8111618 + + thumb_func_start sub_811164C +sub_811164C: @ 811164C + push {r4-r7,lr} + movs r6, 0 + movs r0, 0 +_08111652: + movs r4, 0 + lsls r5, r0, 24 + adds r7, r0, 0x1 +_08111658: + lsls r1, r4, 24 + lsrs r1, 24 + lsrs r0, r5, 24 + movs r2, 0x5 + bl sub_808BA18 + cmp r0, 0 + beq _0811166E + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 +_0811166E: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1D + bls _08111658 + lsls r0, r7, 16 + lsrs r0, 16 + cmp r0, 0xD + bls _08111652 + adds r0, r6, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811164C + + thumb_func_start sub_8111688 +sub_8111688: @ 8111688 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r5, 0 + ldr r0, _081116CC @ =gUnknown_3005008 + mov r8, r0 + ldr r7, _081116D0 @ =0x0000063a +_08111698: + ldr r1, _081116D4 @ =0x000040aa + adds r0, r5, r1 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r1, r5, 1 + add r1, sp + strh r0, [r1] + movs r4, 0 + adds r6, r5, 0x1 + adds r3, r1, 0 + lsls r5, 4 +_081116B2: + ldrh r0, [r3] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + beq _081116D8 + mov r1, r8 + ldr r0, [r1] + adds r1, r5, r4 + adds r0, r7 + adds r0, r1 + movs r1, 0x1E + strb r1, [r0] + b _081116E4 + .align 2, 0 +_081116CC: .4byte gUnknown_3005008 +_081116D0: .4byte 0x0000063a +_081116D4: .4byte 0x000040aa +_081116D8: + mov r1, r8 + ldr r0, [r1] + adds r1, r5, r4 + adds r0, r7 + adds r0, r1 + strb r2, [r0] +_081116E4: + ldrh r0, [r3] + lsrs r0, 1 + strh r0, [r3] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xF + bls _081116B2 + lsls r0, r6, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _08111698 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8111688 + + thumb_func_start sub_8111708 +sub_8111708: @ 8111708 + push {r4,r5,lr} + sub sp, 0x1C + ldr r0, _08111754 @ =0x000040ae + bl sub_806E568 + ldr r4, _08111758 @ =gUnknown_3005008 + ldr r1, [r4] + strh r0, [r1, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _0811174A + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + mov r1, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r0] + str r0, [r1] + ldr r1, [r4] + mov r0, sp + ldrh r0, [r0, 0x12] + strh r0, [r1, 0x32] +_0811174A: + add sp, 0x1C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08111754: .4byte 0x000040ae +_08111758: .4byte gUnknown_3005008 + thumb_func_end sub_8111708 + + thumb_func_start sub_811175C +sub_811175C: @ 811175C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r1 + lsls r0, 24 + lsrs r4, r0, 24 + movs r6, 0 + mov r9, r6 + movs r2, 0x80 + lsls r2, 1 + mov r0, r8 + movs r1, 0 + bl memset + movs r7, 0 + ldr r2, _081117B8 @ =gUnknown_203AE0C + movs r1, 0 +_08111780: + lsls r0, r7, 2 + adds r0, r2 + str r1, [r0] + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x1F + bls _08111780 + ldr r1, _081117BC @ =gUnknown_3005008 + movs r0, 0xCD + lsls r0, 3 + muls r0, r4 + ldr r1, [r1] + adds r0, r1 + ldr r1, _081117C0 @ =0x00001868 + adds r4, r0, r1 + movs r7, 0 +_081117A2: + ldrh r0, [r4] + ldr r1, _081117C4 @ =0x00000fff + ands r1, r0 + cmp r1, 0x29 + bls _081117AE + b _081118AC +_081117AE: + lsls r0, r1, 2 + ldr r1, _081117C8 @ =_081117CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081117B8: .4byte gUnknown_203AE0C +_081117BC: .4byte gUnknown_3005008 +_081117C0: .4byte 0x00001868 +_081117C4: .4byte 0x00000fff +_081117C8: .4byte _081117CC + .align 2, 0 +_081117CC: + .4byte _08111874 + .4byte _08111880 + .4byte _08111880 + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _081118AC + .4byte _0811188C + .4byte _081118AC + .4byte _08111898 +_08111874: + lsls r1, r6, 3 + add r1, r8 + adds r0, r4, 0 + bl sub_8113D08 + b _081118A2 +_08111880: + lsls r1, r6, 3 + add r1, r8 + adds r0, r4, 0 + bl sub_8113D94 + b _081118A2 +_0811188C: + lsls r1, r6, 3 + add r1, r8 + adds r0, r4, 0 + bl sub_8113C20 + b _081118A2 +_08111898: + lsls r1, r6, 3 + add r1, r8 + adds r0, r4, 0 + bl sub_8113C8C +_081118A2: + adds r4, r0, 0 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + b _081118D2 +_081118AC: + mov r0, r9 + lsls r1, r0, 2 + ldr r5, _081118F0 @ =gUnknown_203AE0C + adds r1, r5 + adds r0, r4, 0 + bl sub_8113A78 + adds r4, r0, 0 + mov r1, r9 + cmp r1, 0 + bne _081118C8 + ldr r0, [r5] + bl sub_8113ABC +_081118C8: + mov r0, r9 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 +_081118D2: + cmp r4, 0 + beq _081118E2 + adds r0, r7, 0x1 + lsls r0, 16 + lsrs r7, r0, 16 + cmp r7, 0x1F + bhi _081118E2 + b _081117A2 +_081118E2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081118F0: .4byte gUnknown_203AE0C + thumb_func_end sub_811175C + + thumb_func_start sub_81118F4 +sub_81118F4: @ 81118F4 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x1 + bl sub_807A818 + ldr r1, _0811190C @ =gUnknown_203AE8C + ldr r0, _08111910 @ =sub_8111914 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0811190C: .4byte gUnknown_203AE8C +_08111910: .4byte sub_8111914 + thumb_func_end sub_81118F4 + + thumb_func_start sub_8111914 +sub_8111914: @ 8111914 + push {lr} + ldr r0, _08111960 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811197A + bl sub_8069940 + ldr r1, _08111964 @ =gUnknown_203ADF8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08111970 + ldr r0, _08111968 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r2, [r1] + movs r1, 0xCD + lsls r1, 3 + muls r1, r2 + adds r0, r1 + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08111970 + ldr r1, _0811196C @ =gUnknown_203ADF9 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + bl sub_8111368 + b _0811197A + .align 2, 0 +_08111960: .4byte gUnknown_2037AB8 +_08111964: .4byte gUnknown_203ADF8 +_08111968: .4byte gUnknown_3005008 +_0811196C: .4byte gUnknown_203ADF9 +_08111970: + ldr r1, _08111980 @ =gUnknown_3005E88 + movs r0, 0 + strb r0, [r1] + bl sub_8111984 +_0811197A: + pop {r0} + bx r0 + .align 2, 0 +_08111980: .4byte gUnknown_3005E88 + thumb_func_end sub_8111914 + + thumb_func_start sub_8111984 +sub_8111984: @ 8111984 + push {lr} + bl sub_806E6FC + bl sub_80D9750 + movs r0, 0 + bl sub_80DA4FC + ldr r0, _081119B4 @ =sub_8057430 + bl sub_8000544 + ldr r1, _081119B8 @ =gUnknown_3005024 + ldr r0, _081119BC @ =sub_8111F60 + str r0, [r1] + bl sub_8003ECC + ldr r1, _081119C0 @ =gUnknown_203ADFA + movs r0, 0x3 + strb r0, [r1] + ldr r1, _081119C4 @ =gUnknown_203AE8C + movs r0, 0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081119B4: .4byte sub_8057430 +_081119B8: .4byte gUnknown_3005024 +_081119BC: .4byte sub_8111F60 +_081119C0: .4byte gUnknown_203ADFA +_081119C4: .4byte gUnknown_203AE8C + thumb_func_end sub_8111984 + + thumb_func_start sub_81119C8 +sub_81119C8: @ 81119C8 + push {lr} + bl sub_8111914 + pop {r0} + bx r0 + thumb_func_end sub_81119C8 + + thumb_func_start sub_81119D4 +sub_81119D4: @ 81119D4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _081119E8 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x1 + beq _081119EC + cmp r0, 0x2 + beq _081119F2 + b _08111A2C + .align 2, 0 +_081119E8: .4byte gUnknown_203ADFA +_081119EC: + bl sub_8112364 + b _08111A2C +_081119F2: + ldr r1, _08111A20 @ =gUnknown_3005E88 + movs r0, 0x3 + strb r0, [r1] + ldr r0, _08111A24 @ =sub_8111A34 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08111A28 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + strh r2, [r1, 0x8] + strh r2, [r1, 0xA] + movs r1, 0xE + adds r2, r4, 0 + bl sub_80776E8 + movs r0, 0x1 + b _08111A2E + .align 2, 0 +_08111A20: .4byte gUnknown_3005E88 +_08111A24: .4byte sub_8111A34 +_08111A28: .4byte gUnknown_3005090 +_08111A2C: + movs r0, 0 +_08111A2E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81119D4 + + thumb_func_start sub_8111A34 +sub_8111A34: @ 8111A34 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08111A54 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0x2 + ldrsh r1, [r4, r0] + cmp r1, 0 + beq _08111A58 + cmp r1, 0x1 + beq _08111A90 + b _08111AC0 + .align 2, 0 +_08111A54: .4byte gUnknown_3005098 +_08111A58: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + bne _08111AC0 + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r2, _08111A8C @ =gUnknown_203AE94 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + b _08111AC0 + .align 2, 0 +_08111A8C: .4byte gUnknown_203AE94 +_08111A90: + ldr r0, _08111AC8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08111AC0 + ldr r0, _08111ACC @ =gUnknown_3005E88 + strb r1, [r0] + adds r0, r5, 0 + movs r1, 0xE + bl sub_8077720 + cmp r0, 0 + beq _08111AB4 + bl _call_via_r0 +_08111AB4: + adds r0, r5, 0 + bl sub_8077508 + ldr r1, _08111AD0 @ =gUnknown_203AE8C + ldr r0, _08111AD4 @ =sub_8111914 + str r0, [r1] +_08111AC0: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08111AC8: .4byte gUnknown_2037AB8 +_08111ACC: .4byte gUnknown_3005E88 +_08111AD0: .4byte gUnknown_203AE8C +_08111AD4: .4byte sub_8111914 + thumb_func_end sub_8111A34 + + thumb_func_start sub_8111AD8 +sub_8111AD8: @ 8111AD8 + push {r4,r5,lr} + ldr r4, _08111B58 @ =gUnknown_203AE94 + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08111B0A + ldrb r0, [r4, 0x2] + subs r0, 0x1 + strb r0, [r4, 0x2] + lsls r0, 24 + cmp r0, 0 + bne _08111B78 + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x31 + negs r1, r1 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + bl sub_8112888 +_08111B0A: + ldrb r1, [r4] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0x10 + bne _08111B34 + ldrb r0, [r4, 0x3] + adds r0, 0x1 + strb r0, [r4, 0x3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bls _08111B34 + bl sub_8111E20 + ldrb r0, [r4] + movs r1, 0x31 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0 + strb r0, [r4, 0x3] +_08111B34: + ldr r4, _08111B58 @ =gUnknown_203AE94 + ldrb r0, [r4, 0x1] + cmp r0, 0x1F + bhi _08111B78 + ldr r5, _08111B5C @ =gUnknown_203AE0C + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + bl sub_8113B44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08111B60 + bl sub_8111B80 + b _08111B78 + .align 2, 0 +_08111B58: .4byte gUnknown_203AE94 +_08111B5C: .4byte gUnknown_203AE0C +_08111B60: + ldrb r0, [r4, 0x1] + lsls r0, 2 + adds r0, r5 + ldr r0, [r0] + bl sub_8113AE8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08111B78 + bl sub_8111B80 +_08111B78: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8111AD8 + + thumb_func_start sub_8111B80 +sub_8111B80: @ 8111B80 + push {r4,lr} + ldr r4, _08111BCC @ =gUnknown_203AE94 + ldrb r1, [r4] + movs r2, 0xF + ands r2, r1 + cmp r2, 0 + bne _08111BC0 + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + movs r1, 0x31 + negs r1, r1 + ands r0, r1 + strb r0, [r4] + strb r2, [r4, 0x3] + bl sub_8111BD4 + strb r0, [r4, 0x2] + ldr r0, _08111BD0 @ =gUnknown_203B044 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _08111BB6 + ldrb r0, [r4, 0x1] + adds r0, 0x1 + strb r0, [r4, 0x1] +_08111BB6: + ldrb r0, [r4, 0x1] + cmp r0, 0x20 + bhi _08111BC6 + bl sub_8111D10 +_08111BC0: + movs r0, 0x1 + bl sub_8112888 +_08111BC6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111BCC: .4byte gUnknown_203AE94 +_08111BD0: .4byte gUnknown_203B044 + thumb_func_end sub_8111B80 + + thumb_func_start sub_8111BD4 +sub_8111BD4: @ 8111BD4 + push {r4,lr} + movs r2, 0 + movs r1, 0 + ldr r3, _08111C0C @ =gUnknown_2021D18 + ldrb r0, [r3] + cmp r0, 0xFF + beq _08111C04 + ldr r4, _08111C10 @ =0x000003ff +_08111BE4: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0xFE + beq _08111BF2 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 +_08111BF2: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + bhi _08111C04 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08111BE4 +_08111C04: + cmp r2, 0x13 + bhi _08111C14 + movs r0, 0x5F + b _08111C26 + .align 2, 0 +_08111C0C: .4byte gUnknown_2021D18 +_08111C10: .4byte 0x000003ff +_08111C14: + cmp r2, 0x23 + bhi _08111C1C + movs r0, 0x7F + b _08111C26 +_08111C1C: + cmp r2, 0x2D + bls _08111C24 + movs r0, 0xFF + b _08111C26 +_08111C24: + movs r0, 0xBF +_08111C26: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8111BD4 + + thumb_func_start sub_8111C2C +sub_8111C2C: @ 8111C2C + push {lr} + ldr r0, _08111C54 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _08111C60 + ldr r0, _08111C58 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0 + beq _08111C4E + ldr r0, _08111C5C @ =gUnknown_203AE94 + ldrb r0, [r0] + movs r1, 0xF + ands r1, r0 + cmp r1, 0x1 + beq _08111C4E + cmp r1, 0x2 + bne _08111C60 +_08111C4E: + movs r0, 0x1 + b _08111C62 + .align 2, 0 +_08111C54: .4byte gUnknown_203ADFA +_08111C58: .4byte gUnknown_3005E88 +_08111C5C: .4byte gUnknown_203AE94 +_08111C60: + movs r0, 0 +_08111C62: + pop {r1} + bx r1 + thumb_func_end sub_8111C2C + + thumb_func_start sub_8111C68 +sub_8111C68: @ 8111C68 + push {r4,r5,lr} + ldr r5, _08111C9C @ =gUnknown_203AE94 + ldrb r2, [r5] + movs r4, 0xC0 + ands r4, r2 + cmp r4, 0 + bne _08111CC6 + ldr r0, _08111CA0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r3, 0x1 + ands r3, r1 + cmp r3, 0 + beq _08111CA8 + movs r0, 0x3F + ands r0, r2 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r5] + ldr r0, _08111CA4 @ =gUnknown_3005E88 + strb r4, [r0] + movs r0, 0x3 + negs r0, r0 + bl sub_81118F4 + b _08111CC6 + .align 2, 0 +_08111C9C: .4byte gUnknown_203AE94 +_08111CA0: .4byte gUnknown_30030F0 +_08111CA4: .4byte gUnknown_3005E88 +_08111CA8: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08111CC6 + movs r0, 0x3F + ands r0, r2 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5] + ldr r0, _08111CCC @ =gUnknown_3005E88 + strb r3, [r0] + movs r0, 0x3 + negs r0, r0 + bl sub_8111E64 +_08111CC6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08111CCC: .4byte gUnknown_3005E88 + thumb_func_end sub_8111C68 + + thumb_func_start sub_8111CD0 +sub_8111CD0: @ 8111CD0 + push {lr} + ldr r0, _08111CE4 @ =gUnknown_203AE94 + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + bne _08111CE8 + movs r0, 0 + b _08111CEA + .align 2, 0 +_08111CE4: .4byte gUnknown_203AE94 +_08111CE8: + movs r0, 0x1 +_08111CEA: + pop {r1} + bx r1 + thumb_func_end sub_8111CD0 + + thumb_func_start sub_8111CF0 +sub_8111CF0: @ 8111CF0 + push {lr} + ldr r0, _08111D08 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _08111D02 + ldr r0, _08111D0C @ =gUnknown_203ADF9 + ldrb r0, [r0] + bl sub_8111070 +_08111D02: + pop {r0} + bx r0 + .align 2, 0 +_08111D08: .4byte gUnknown_203ADFA +_08111D0C: .4byte gUnknown_203ADF9 + thumb_func_end sub_8111CF0 + + thumb_func_start sub_8111D10 +sub_8111D10: @ 8111D10 + push {r4,r5,lr} + sub sp, 0x14 + movs r4, 0 + movs r1, 0 + ldr r2, _08111D80 @ =gUnknown_2021D18 + ldrb r0, [r2] + ldr r5, _08111D84 @ =gUnknown_203ADFE + cmp r0, 0xFF + beq _08111D42 +_08111D22: + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0xFE + bne _08111D30 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_08111D30: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xFF + bhi _08111D42 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08111D22 +_08111D42: + ldrb r0, [r5, 0x2] + bl sub_8003FA0 + ldrb r0, [r5, 0x2] + bl sub_8111D90 + ldrb r0, [r5, 0x2] + ldr r1, _08111D88 @ =gUnknown_8456698 + adds r1, r4, r1 + ldrb r3, [r1] + movs r1, 0x1 + str r1, [sp] + movs r2, 0 + str r2, [sp, 0x4] + ldr r1, _08111D8C @ =gUnknown_8456634 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _08111D80 @ =gUnknown_2021D18 + str r1, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x2 + bl sub_812E5A4 + movs r0, 0 + bl sub_80F67A4 + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08111D80: .4byte gUnknown_2021D18 +_08111D84: .4byte gUnknown_203ADFE +_08111D88: .4byte gUnknown_8456698 +_08111D8C: .4byte gUnknown_8456634 + thumb_func_end sub_8111D10 + + thumb_func_start sub_8111D90 +sub_8111D90: @ 8111D90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _08111DC0 @ =gUnknown_8456638 + mov r9, r0 + movs r0, 0xB4 + lsls r0, 5 + bl sub_8002B9C + mov r8, r0 + cmp r0, 0 + beq _08111E0C + movs r1, 0 +_08111DB4: + cmp r1, 0 + beq _08111DC4 + cmp r1, 0x5 + beq _08111DC8 + movs r0, 0x1 + b _08111DCA + .align 2, 0 +_08111DC0: .4byte gUnknown_8456638 +_08111DC4: + movs r0, 0 + b _08111DCA +_08111DC8: + movs r0, 0x2 +_08111DCA: + movs r4, 0 + lsls r6, r0, 5 + lsls r0, r1, 4 + adds r7, r1, 0x1 + subs r0, r1 + lsls r5, r0, 1 +_08111DD6: + adds r1, r5, r4 + lsls r1, 5 + add r1, r8 + mov r2, r9 + adds r0, r2, r6 + ldr r2, _08111E1C @ =0x04000008 + bl CpuSet + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1D + bls _08111DD6 + lsls r0, r7, 24 + lsrs r1, r0, 24 + cmp r1, 0x5 + bls _08111DB4 + movs r2, 0xB4 + lsls r2, 5 + mov r0, r10 + mov r1, r8 + movs r3, 0 + bl sub_8004404 + mov r0, r8 + bl sub_8002BC4 +_08111E0C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08111E1C: .4byte 0x04000008 + thumb_func_end sub_8111D90 + + thumb_func_start sub_8111E20 +sub_8111E20: @ 8111E20 + push {r4,lr} + sub sp, 0x8 + ldr r4, _08111E60 @ =gUnknown_203ADFE + ldrb r0, [r4, 0x2] + bl sub_80040B8 + ldrb r0, [r4, 0x2] + movs r1, 0xF0 + str r1, [sp] + movs r1, 0x30 + str r1, [sp, 0x4] + movs r1, 0xF + movs r2, 0 + movs r3, 0 + bl sub_8004378 + ldrb r0, [r4, 0x2] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r4, 0x1] + bl sub_8003FA0 + ldrb r0, [r4, 0x1] + movs r1, 0x1 + bl sub_8003F20 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111E60: .4byte gUnknown_203ADFE + thumb_func_end sub_8111E20 + + thumb_func_start sub_8111E64 +sub_8111E64: @ 8111E64 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x1 + bl sub_807A818 + ldr r1, _08111E7C @ =gUnknown_203AE8C + ldr r0, _08111E80 @ =sub_8111E84 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08111E7C: .4byte gUnknown_203AE8C +_08111E80: .4byte sub_8111E84 + thumb_func_end sub_8111E64 + + thumb_func_start sub_8111E84 +sub_8111E84: @ 8111E84 + push {r4,lr} + ldr r0, _08111F00 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08111EF8 + bl sub_8069940 + ldr r3, _08111F04 @ =gUnknown_203ADF8 + ldrb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08111EEE + ldr r0, _08111F08 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r2, [r3] + movs r1, 0xCD + lsls r1, 3 + muls r1, r2 + adds r0, r1 + movs r1, 0x98 + lsls r1, 5 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08111EEE + adds r4, r3, 0 +_08111EBE: + ldrb r0, [r4] + ldr r1, _08111F0C @ =gUnknown_203AE98 + bl sub_811175C + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08111EEE + ldr r0, _08111F08 @ =gUnknown_3005008 + ldr r1, [r0] + ldrb r2, [r4] + movs r0, 0xCD + lsls r0, 3 + muls r0, r2 + adds r1, r0 + movs r0, 0x98 + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _08111EBE +_08111EEE: + ldr r1, _08111F10 @ =gUnknown_3005E88 + movs r0, 0 + strb r0, [r1] + bl sub_8111984 +_08111EF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111F00: .4byte gUnknown_2037AB8 +_08111F04: .4byte gUnknown_203ADF8 +_08111F08: .4byte gUnknown_3005008 +_08111F0C: .4byte gUnknown_203AE98 +_08111F10: .4byte gUnknown_3005E88 + thumb_func_end sub_8111E84 + + thumb_func_start sub_8111F14 +sub_8111F14: @ 8111F14 + push {r4,lr} + ldr r0, _08111F30 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x3 + bne _08111F2A + ldr r4, _08111F34 @ =gUnknown_203AE90 + movs r0, 0x80 + lsls r0, 3 + bl sub_8002BB0 + str r0, [r4] +_08111F2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111F30: .4byte gUnknown_203ADFA +_08111F34: .4byte gUnknown_203AE90 + thumb_func_end sub_8111F14 + + thumb_func_start sub_8111F38 +sub_8111F38: @ 8111F38 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 16 + lsls r2, 16 + lsrs r2, 16 + lsrs r3, 15 + ldr r0, _08111F58 @ =gUnknown_20371F8 + adds r0, r3, r0 + ldr r1, _08111F5C @ =gUnknown_203AE90 + ldr r1, [r1] + adds r1, r3 + bl CpuSet + pop {r0} + bx r0 + .align 2, 0 +_08111F58: .4byte gUnknown_20371F8 +_08111F5C: .4byte gUnknown_203AE90 + thumb_func_end sub_8111F38 + + thumb_func_start sub_8111F60 +sub_8111F60: @ 8111F60 + push {lr} + movs r0, 0x4 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0 + bl sub_8111070 + bl sub_807DF7C + ldr r0, _08111F88 @ =sub_8111F8C + movs r1, 0xFF + bl sub_807741C + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08111F88: .4byte sub_8111F8C + thumb_func_end sub_8111F60 + + thumb_func_start sub_8111F8C +sub_8111F8C: @ 8111F8C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08111FC4 @ =gUnknown_3005090 + adds r4, r1, r0 + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08111FBC + bl sub_8068974 + bl sub_805C270 + bl sub_805C780 + bl sub_8069940 + ldr r0, _08111FC8 @ =sub_8111FCC + str r0, [r4] +_08111FBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111FC4: .4byte gUnknown_3005090 +_08111FC8: .4byte sub_8111FCC + thumb_func_end sub_8111F8C + + thumb_func_start sub_8111FCC +sub_8111FCC: @ 8111FCC + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08112024 @ =gUnknown_3005090 + adds r5, r1, r0 + ldr r0, _08112028 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0811201E + ldr r0, _0811202C @ =gUnknown_203AE94 + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x40 + beq _0811200E + ldr r0, _08112030 @ =gUnknown_2021CD0 + ldr r1, _08112034 @ =gUnknown_2036DFC + ldrb r1, [r1, 0x14] + bl sub_80C4DF8 + ldr r0, _08112038 @ =gUnknown_2021D18 + ldr r1, _0811203C @ =gUnknown_841B073 + bl sub_8008FCC + bl sub_8111D10 +_0811200E: + strh r4, [r5, 0x8] + strh r4, [r5, 0xA] + ldr r0, _08112040 @ =sub_8112044 + str r0, [r5] + bl sub_8068974 + bl sub_8069940 +_0811201E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08112024: .4byte gUnknown_3005090 +_08112028: .4byte gUnknown_2037AB8 +_0811202C: .4byte gUnknown_203AE94 +_08112030: .4byte gUnknown_2021CD0 +_08112034: .4byte gUnknown_2036DFC +_08112038: .4byte gUnknown_2021D18 +_0811203C: .4byte gUnknown_841B073 +_08112040: .4byte sub_8112044 + thumb_func_end sub_8111FCC + + thumb_func_start sub_8112044 +sub_8112044: @ 8112044 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0811208C @ =gUnknown_3005090 + adds r4, r1, r0 + ldr r0, _08112090 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08112076 + ldrh r2, [r4, 0x8] + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x7E + bgt _08112076 + ldr r0, _08112094 @ =gUnknown_203AE94 + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x40 + bne _081120A0 +_08112076: + bl sub_8111E20 + movs r1, 0 + movs r0, 0 + strh r0, [r4, 0x8] + ldr r0, _08112098 @ =sub_81120AC + str r0, [r4] + ldr r0, _0811209C @ =gUnknown_203ADFA + strb r1, [r0] + b _081120A4 + .align 2, 0 +_0811208C: .4byte gUnknown_3005090 +_08112090: .4byte gUnknown_30030F0 +_08112094: .4byte gUnknown_203AE94 +_08112098: .4byte sub_81120AC +_0811209C: .4byte gUnknown_203ADFA +_081120A0: + adds r0, r2, 0x1 + strh r0, [r4, 0x8] +_081120A4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8112044 + + thumb_func_start sub_81120AC +sub_81120AC: @ 81120AC + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _081120D0 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r0, 0 + ldrsh r1, [r6, r0] + cmp r1, 0x1 + beq _08112110 + cmp r1, 0x1 + bgt _081120D4 + cmp r1, 0 + beq _081120DA + b _08112164 + .align 2, 0 +_081120D0: .4byte gUnknown_3005098 +_081120D4: + cmp r1, 0x2 + beq _0811214C + b _08112164 +_081120DA: + ldr r0, _08112104 @ =gUnknown_2031DD8 + strb r1, [r0] + bl sub_8055DC4 + bl sub_811229C + ldr r0, _08112108 @ =gUnknown_203ADFE + ldrb r0, [r0] + ldr r2, _0811210C @ =gUnknown_845661C + ldrb r1, [r2, 0x3] + lsls r1, 3 + str r1, [sp] + ldrb r1, [r2, 0x4] + lsls r1, 3 + str r1, [sp, 0x4] + movs r1, 0xF + movs r2, 0 + movs r3, 0 + bl sub_8004378 + b _0811215C + .align 2, 0 +_08112104: .4byte gUnknown_2031DD8 +_08112108: .4byte gUnknown_203ADFE +_0811210C: .4byte gUnknown_845661C +_08112110: + adds r0, r5, 0 + bl sub_81121D8 + lsls r0, 24 + cmp r0, 0 + beq _081121B8 + movs r5, 0 +_0811211E: + ldr r4, _08112148 @ =gUnknown_203ADFE + adds r4, r5, r4 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003E3C + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _0811211E + movs r0, 0 + strh r0, [r6, 0x2] + b _0811215C + .align 2, 0 +_08112148: .4byte gUnknown_203ADFE +_0811214C: + ldrh r1, [r6, 0x2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + cmp r0, 0x1F + bgt _0811215C + adds r0, r1, 0x1 + strh r0, [r6, 0x2] + b _081121B8 +_0811215C: + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + b _081121B8 +_08112164: + ldr r6, _081121C0 @ =gUnknown_203AE94 + ldrb r1, [r6] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x40 + bne _08112176 + movs r0, 0x1 + bl sub_8098110 +_08112176: + ldr r4, _081121C4 @ =gUnknown_203AE90 + ldr r0, [r4] + ldr r1, _081121C8 @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 2 + bl CpuSet + ldr r0, [r4] + bl sub_8002BC4 + movs r4, 0 + str r4, [r6] + bl sub_80696C0 + bl sub_806994C + ldr r2, _081121CC @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _081121D0 @ =gUnknown_2036E28 + strb r4, [r0] + movs r0, 0 + bl sub_8082740 + ldr r1, _081121D4 @ =gUnknown_3005ECC + movs r0, 0x1 + strb r0, [r1] + adds r0, r5, 0 + bl sub_8077508 +_081121B8: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081121C0: .4byte gUnknown_203AE94 +_081121C4: .4byte gUnknown_203AE90 +_081121C8: .4byte gUnknown_20371F8 +_081121CC: .4byte gUnknown_3003E50 +_081121D0: .4byte gUnknown_2036E28 +_081121D4: .4byte gUnknown_3005ECC + thumb_func_end sub_81120AC + + thumb_func_start sub_81121D8 +sub_81121D8: @ 81121D8 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0811227C @ =gUnknown_3005098 + adds r7, r1, r0 + ldrh r1, [r7, 0x2] + movs r2, 0x2 + ldrsh r0, [r7, r2] + cmp r0, 0xF + bgt _08112290 + ldr r5, _08112280 @ =gUnknown_20371FA + ldr r6, _08112284 @ =gUnknown_20375FA + movs r4, 0xF + subs r3, r4, r1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0xDF + bl sub_80716F8 + movs r0, 0xFF + lsls r0, 1 + adds r5, r0 + adds r6, r0 + movs r2, 0x80 + lsls r2, 1 + ldrb r0, [r7, 0x2] + subs r4, r0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r1, r6, 0 + adds r3, r4, 0 + bl sub_80716F8 + ldr r5, _08112288 @ =gUnknown_203ADFE + ldrb r0, [r5] + ldr r4, _0811228C @ =gUnknown_845661C + ldrb r3, [r4, 0x4] + lsls r3, 3 + subs r3, 0x1 + ldrh r1, [r7, 0x2] + subs r3, r1 + lsls r3, 16 + lsrs r3, 16 + ldrb r1, [r4, 0x3] + lsls r1, 3 + str r1, [sp] + movs r6, 0x1 + str r6, [sp, 0x4] + movs r1, 0 + movs r2, 0 + bl sub_8004378 + ldrb r0, [r5, 0x1] + ldrh r3, [r7, 0x2] + ldrb r1, [r4, 0xB] + lsls r1, 3 + str r1, [sp] + str r6, [sp, 0x4] + movs r1, 0 + movs r2, 0 + bl sub_8004378 + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r5, 0x1] + movs r1, 0x2 + bl sub_8003F20 + ldrh r0, [r7, 0x2] + adds r0, 0x1 + strh r0, [r7, 0x2] + movs r0, 0 + b _08112292 + .align 2, 0 +_0811227C: .4byte gUnknown_3005098 +_08112280: .4byte gUnknown_20371FA +_08112284: .4byte gUnknown_20375FA +_08112288: .4byte gUnknown_203ADFE +_0811228C: .4byte gUnknown_845661C +_08112290: + movs r0, 0x1 +_08112292: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81121D8 + + thumb_func_start sub_811229C +sub_811229C: @ 811229C + push {r4-r6,lr} + movs r0, 0x80 + lsls r0, 3 + bl sub_8002B9C + adds r6, r0, 0 + ldr r4, _08112314 @ =gUnknown_203AE90 + ldr r0, [r4] + movs r5, 0x80 + lsls r5, 2 + adds r1, r6, 0 + adds r2, r5, 0 + bl CpuSet + ldr r1, [r4] + adds r0, r1, 0 + movs r2, 0xD0 + bl sub_807B0C4 + ldr r1, [r4] + movs r0, 0x88 + lsls r0, 2 + adds r1, r0 + adds r0, r1, 0 + movs r2, 0x10 + bl sub_807B0C4 + ldr r1, [r4] + movs r0, 0xB0 + lsls r0, 2 + adds r1, r0 + adds r0, r1, 0 + movs r2, 0x40 + bl sub_807B0C4 + ldr r1, [r4] + movs r0, 0xD8 + lsls r0, 2 + adds r1, r0 + adds r0, r1, 0 + movs r2, 0x50 + bl sub_807B0C4 + ldr r0, [r4] + ldr r1, _08112318 @ =gUnknown_20371F8 + adds r2, r5, 0 + bl CpuSet + ldr r1, [r4] + adds r0, r6, 0 + adds r2, r5, 0 + bl CpuSet + adds r0, r6, 0 + bl sub_8002BC4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08112314: .4byte gUnknown_203AE90 +_08112318: .4byte gUnknown_20371F8 + thumb_func_end sub_811229C + + thumb_func_start sub_811231C +sub_811231C: @ 811231C + push {r4,lr} + ldr r4, _0811234C @ =gUnknown_203ADFA + ldrb r0, [r4] + cmp r0, 0x1 + bne _08112346 + ldr r0, _08112350 @ =gUnknown_203AE98 + bl sub_8110E68 + bl sub_8110E3C + movs r0, 0 + strb r0, [r4] + ldr r0, _08112354 @ =gUnknown_203AE8C + movs r1, 0 + str r1, [r0] + ldr r0, _08112358 @ =gUnknown_203AE04 + str r1, [r0] + ldr r0, _0811235C @ =gUnknown_203AE08 + str r1, [r0] + ldr r0, _08112360 @ =gUnknown_3005E88 + strb r1, [r0] +_08112346: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811234C: .4byte gUnknown_203ADFA +_08112350: .4byte gUnknown_203AE98 +_08112354: .4byte gUnknown_203AE8C +_08112358: .4byte gUnknown_203AE04 +_0811235C: .4byte gUnknown_203AE08 +_08112360: .4byte gUnknown_3005E88 + thumb_func_end sub_811231C + + thumb_func_start sub_8112364 +sub_8112364: @ 8112364 + push {r4,r5,lr} + ldr r5, _081123A4 @ =gUnknown_3005E88 + ldrb r0, [r5] + cmp r0, 0 + beq _08112392 + ldr r4, _081123A8 @ =gUnknown_203ADFA + ldrb r0, [r4] + cmp r0, 0x1 + bne _08112392 + ldr r0, _081123AC @ =gUnknown_203AE98 + bl sub_8110E68 + movs r0, 0x1 + bl sub_8113A1C + bl sub_8110E3C + movs r0, 0 + strb r0, [r5] + strb r0, [r4] + ldr r1, _081123B0 @ =gUnknown_203AE8C + movs r0, 0 + str r0, [r1] +_08112392: + ldr r0, _081123B4 @ =gUnknown_203AE04 + movs r1, 0 + str r1, [r0] + ldr r0, _081123B8 @ =gUnknown_203AE08 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081123A4: .4byte gUnknown_3005E88 +_081123A8: .4byte gUnknown_203ADFA +_081123AC: .4byte gUnknown_203AE98 +_081123B0: .4byte gUnknown_203AE8C +_081123B4: .4byte gUnknown_203AE04 +_081123B8: .4byte gUnknown_203AE08 + thumb_func_end sub_8112364 + + thumb_func_start sub_81123BC +sub_81123BC: @ 81123BC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r0, 0xCD + lsls r0, 5 + bl sub_8002BB0 + mov r8, r0 + ldr r0, _08112448 @ =gUnknown_203ADF8 + ldrb r4, [r0] + movs r5, 0 + movs r6, 0 +_081123D6: + cmp r4, 0x3 + bls _081123DC + movs r4, 0 +_081123DC: + ldr r3, _0811244C @ =gUnknown_3005008 + ldr r0, [r3] + movs r2, 0xCD + lsls r2, 3 + adds r1, r4, 0 + muls r1, r2 + adds r0, r1 + movs r7, 0x98 + lsls r7, 5 + adds r1, r0, r7 + ldrb r0, [r1] + cmp r0, 0 + beq _0811240A + adds r0, r5, 0 + muls r0, r2 + add r0, r8 + str r3, [sp] + bl memcpy + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r3, [sp] +_0811240A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bls _081123D6 + ldr r1, _08112448 @ =gUnknown_203ADF8 + movs r0, 0x3 + ands r5, r0 + strb r5, [r1] + ldr r1, [r3] + movs r0, 0x98 + lsls r0, 5 + adds r1, r0 + movs r2, 0xCD + lsls r2, 4 + mov r0, r8 + bl CpuSet + mov r0, r8 + bl sub_8002BC4 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112448: .4byte gUnknown_203ADF8 +_0811244C: .4byte gUnknown_3005008 + thumb_func_end sub_81123BC + + thumb_func_start sub_8112450 +sub_8112450: @ 8112450 + push {lr} + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08112466 + bl sub_8112364 + bl sub_81123BC +_08112466: + pop {r0} + bx r0 + thumb_func_end sub_8112450 + + thumb_func_start sub_811246C +sub_811246C: @ 811246C + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0x2E + ldrsh r1, [r6, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _081124B0 @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r0, [r4, 0x8] + cmp r0, 0xFF + bne _081124B8 + ldr r5, _081124B4 @ =gUnknown_203AF9A + ldrb r0, [r5] + cmp r0, 0xFF + beq _08112498 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8063CA4 + movs r0, 0xFF + strb r0, [r5] +_08112498: + ldrb r0, [r5, 0x1] + cmp r0, 0xFF + beq _081124A6 + bl sub_8150454 + movs r0, 0xFF + strb r0, [r5, 0x1] +_081124A6: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8063E28 + b _081124E0 + .align 2, 0 +_081124B0: .4byte gUnknown_2036E38 +_081124B4: .4byte gUnknown_203AF9A +_081124B8: + ldr r5, _081124E8 @ =gUnknown_203AF9A + ldrb r0, [r4, 0x8] + lsls r0, 1 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0xFF + beq _081124D8 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8063CA4 + ldrb r0, [r4, 0x8] + lsls r0, 1 + adds r0, r5 + movs r1, 0xFF + strb r1, [r0] +_081124D8: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8063E28 +_081124E0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081124E8: .4byte gUnknown_203AF9A + thumb_func_end sub_811246C + + thumb_func_start sub_81124EC +sub_81124EC: @ 81124EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + bl sub_8112CEC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _0811256E + ldr r2, _0811257C @ =gUnknown_203AF98 + ldrh r0, [r2] + ldr r3, _08112580 @ =gUnknown_3005E94 + ldr r5, [r3] + lsls r0, 3 + adds r0, r5 + ldr r1, _08112584 @ =gUnknown_203B01A + mov r12, r1 + ldrh r1, [r1] + movs r4, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r5 + strb r4, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r6, [r0] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + mov r4, r8 + strb r4, [r0, 0x1] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + mov r1, r9 + strb r1, [r0, 0x2] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + mov r4, r10 + strb r4, [r0, 0x3] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + mov r0, r12 + strh r7, [r0] +_0811256E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811257C: .4byte gUnknown_203AF98 +_08112580: .4byte gUnknown_3005E94 +_08112584: .4byte gUnknown_203B01A + thumb_func_end sub_81124EC + + thumb_func_start sub_8112588 +sub_8112588: @ 8112588 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + bl sub_8112D1C + lsls r0, 24 + cmp r0, 0 + bne _0811260E + ldr r2, _0811261C @ =gUnknown_203AF98 + ldrh r0, [r2] + ldr r3, _08112620 @ =gUnknown_3005E94 + ldr r5, [r3] + lsls r0, 3 + adds r0, r5 + ldr r1, _08112624 @ =gUnknown_203B01A + mov r12, r1 + ldrh r1, [r1] + movs r4, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r5 + strb r4, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r7, [r0] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r6, [r0, 0x1] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + mov r4, r8 + strb r4, [r0, 0x2] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + mov r1, r9 + strb r1, [r0, 0x3] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + mov r0, r10 + mov r4, r12 + strh r0, [r4] +_0811260E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811261C: .4byte gUnknown_203AF98 +_08112620: .4byte gUnknown_3005E94 +_08112624: .4byte gUnknown_203B01A + thumb_func_end sub_8112588 + + thumb_func_start sub_8112628 +sub_8112628: @ 8112628 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + bl sub_8112CEC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _08112692 + ldr r0, _0811269C @ =gUnknown_203B01C + mov r12, r0 + ldrh r0, [r0] + ldr r6, _081126A0 @ =gUnknown_3005E94 + ldr r5, [r6] + lsls r0, 3 + adds r0, r5 + ldrb r0, [r0, 0x3] + cmp r4, r0 + bne _08112658 + cmp r4, 0x3 + bls _08112692 +_08112658: + ldr r2, _081126A4 @ =gUnknown_203AF98 + ldrh r0, [r2] + lsls r0, 3 + adds r0, r5 + ldr r4, _081126A8 @ =gUnknown_203B01A + ldrh r1, [r4] + movs r3, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r5 + strb r3, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r6] + lsls r0, 3 + adds r0, r1 + strb r3, [r0] + ldrh r0, [r2] + ldr r1, [r6] + lsls r0, 3 + adds r0, r1 + mov r1, r8 + strb r1, [r0, 0x3] + ldrh r0, [r2] + mov r1, r12 + strh r0, [r1] + adds r0, 0x1 + strh r0, [r2] + strh r7, [r4] +_08112692: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811269C: .4byte gUnknown_203B01C +_081126A0: .4byte gUnknown_3005E94 +_081126A4: .4byte gUnknown_203AF98 +_081126A8: .4byte gUnknown_203B01A + thumb_func_end sub_8112628 + + thumb_func_start sub_81126AC +sub_81126AC: @ 81126AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + bl sub_8112D1C + lsls r0, 24 + cmp r0, 0 + bne _08112704 + ldr r2, _08112710 @ =gUnknown_203AF98 + ldrh r0, [r2] + ldr r3, _08112714 @ =gUnknown_3005E94 + ldr r4, [r3] + lsls r0, 3 + adds r0, r4 + ldr r6, _08112718 @ =gUnknown_203B01A + ldrh r1, [r6] + movs r5, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r4 + strb r5, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r7, [r0, 0x3] + ldr r1, _0811271C @ =gUnknown_203B01C + ldrh r0, [r2] + strh r0, [r1] + adds r0, 0x1 + strh r0, [r2] + mov r0, r8 + strh r0, [r6] +_08112704: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112710: .4byte gUnknown_203AF98 +_08112714: .4byte gUnknown_3005E94 +_08112718: .4byte gUnknown_203B01A +_0811271C: .4byte gUnknown_203B01C + thumb_func_end sub_81126AC + + thumb_func_start sub_8112720 +sub_8112720: @ 8112720 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + bl sub_8112D1C + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _08112774 + ldr r2, _08112780 @ =gUnknown_203AF98 + ldrh r0, [r2] + ldr r3, _08112784 @ =gUnknown_3005E94 + ldr r4, [r3] + lsls r0, 3 + adds r0, r4 + ldr r6, _08112788 @ =gUnknown_203B01A + ldrh r1, [r6] + movs r5, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r4 + movs r1, 0x1 + strb r1, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + mov r1, r8 + strb r1, [r0, 0x3] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + strh r7, [r6] +_08112774: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112780: .4byte gUnknown_203AF98 +_08112784: .4byte gUnknown_3005E94 +_08112788: .4byte gUnknown_203B01A + thumb_func_end sub_8112720 + + thumb_func_start sub_811278C +sub_811278C: @ 811278C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + bl sub_8112D1C + lsls r0, 24 + cmp r0, 0 + bne _081127E2 + ldr r2, _081127EC @ =gUnknown_203AF98 + ldrh r0, [r2] + ldr r3, _081127F0 @ =gUnknown_3005E94 + ldr r4, [r3] + lsls r0, 3 + adds r0, r4 + ldr r6, _081127F4 @ =gUnknown_203B01A + ldrh r1, [r6] + movs r5, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r4 + movs r1, 0x1 + strb r1, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r7, [r0, 0x3] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + mov r0, r8 + strh r0, [r6] +_081127E2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081127EC: .4byte gUnknown_203AF98 +_081127F0: .4byte gUnknown_3005E94 +_081127F4: .4byte gUnknown_203B01A + thumb_func_end sub_811278C + + thumb_func_start sub_81127F8 +sub_81127F8: @ 81127F8 + push {r4-r6,lr} + adds r2, r0, 0 + ldr r5, _08112874 @ =gUnknown_203AF98 + ldr r1, _08112878 @ =gUnknown_3005E8C + ldrh r0, [r5] + ldrh r1, [r1] + cmp r0, r1 + bcs _0811286C + ldr r2, [r2] + ldr r0, _0811287C @ =0x00ff00f3 + ands r2, r0 + ldrh r1, [r5] + ldr r3, _08112880 @ =gUnknown_3005E94 + ldr r4, [r3] + lsls r1, 3 + adds r1, r4 + ldr r6, _08112884 @ =gUnknown_203B01A + ldrh r0, [r6] + strh r0, [r1, 0x4] + ldrh r0, [r5] + lsls r0, 3 + adds r0, r4 + movs r1, 0x2 + strb r1, [r0, 0x6] + ldrh r0, [r5] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r2, [r0] + ldrh r0, [r5] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + lsrs r1, r2, 8 + strb r1, [r0, 0x1] + ldrh r0, [r5] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + lsrs r1, r2, 16 + strb r1, [r0, 0x2] + ldrh r0, [r5] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + lsrs r2, 24 + strb r2, [r0, 0x3] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0811286A + movs r0, 0x1 +_0811286A: + strh r0, [r6] +_0811286C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08112874: .4byte gUnknown_203AF98 +_08112878: .4byte gUnknown_3005E8C +_0811287C: .4byte 0x00ff00f3 +_08112880: .4byte gUnknown_3005E94 +_08112884: .4byte gUnknown_203B01A + thumb_func_end sub_81127F8 + + thumb_func_start sub_8112888 +sub_8112888: @ 8112888 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08112898 + cmp r0, 0x2 + beq _081128A8 + b _081128B4 +_08112898: + ldr r1, _081128A4 @ =gUnknown_3005E88 + ldrb r0, [r1] + cmp r0, 0x1 + bne _081128B4 + movs r0, 0x3 + b _081128B2 + .align 2, 0 +_081128A4: .4byte gUnknown_3005E88 +_081128A8: + ldr r1, _081128B8 @ =gUnknown_3005E88 + ldrb r0, [r1] + cmp r0, 0x3 + bne _081128B4 + movs r0, 0x1 +_081128B2: + strb r0, [r1] +_081128B4: + pop {r0} + bx r0 + .align 2, 0 +_081128B8: .4byte gUnknown_3005E88 + thumb_func_end sub_8112888 + + thumb_func_start sub_81128BC +sub_81128BC: @ 81128BC + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8112CAC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0x1 + beq _081128D4 + cmp r4, 0x2 + beq _08112928 + b _08112934 +_081128D4: + cmp r1, 0x1 + bne _081128E4 + ldr r1, _081128E0 @ =gUnknown_3005E88 + movs r0, 0x3 + strb r0, [r1] + b _08112934 + .align 2, 0 +_081128E0: .4byte gUnknown_3005E88 +_081128E4: + cmp r1, 0x2 + bne _08112934 + ldr r2, _08112918 @ =gUnknown_203AF98 + ldrh r1, [r2] + ldr r0, _0811291C @ =gUnknown_3005E94 + ldr r3, [r0] + lsls r1, 3 + adds r1, r3 + ldr r4, _08112920 @ =gUnknown_203B01A + ldrh r0, [r4] + movs r5, 0 + strh r0, [r1, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r3 + movs r1, 0x3 + strb r1, [r0, 0x6] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + strh r5, [r4] + ldr r1, _08112924 @ =gUnknown_3005E88 + movs r0, 0x4 + strb r0, [r1] + b _08112934 + .align 2, 0 +_08112918: .4byte gUnknown_203AF98 +_0811291C: .4byte gUnknown_3005E94 +_08112920: .4byte gUnknown_203B01A +_08112924: .4byte gUnknown_3005E88 +_08112928: + cmp r1, 0x1 + beq _08112930 + cmp r1, 0x2 + bne _08112934 +_08112930: + ldr r0, _0811293C @ =gUnknown_3005E88 + strb r1, [r0] +_08112934: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811293C: .4byte gUnknown_3005E88 + thumb_func_end sub_81128BC + + thumb_func_start sub_8112940 +sub_8112940: @ 8112940 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r2, 16 + cmp r0, 0x1 + beq _08112964 + cmp r0, 0x2 + beq _081129E0 + ldr r1, _08112960 @ =gUnknown_3005E88 + movs r0, 0 + strb r0, [r1] + b _08112B20 + .align 2, 0 +_08112960: .4byte gUnknown_3005E88 +_08112964: + ldr r2, _081129C0 @ =gUnknown_3005E94 + str r3, [r2] + ldr r1, _081129C4 @ =gUnknown_3005E8C + lsrs r0, r4, 19 + strh r0, [r1] + ldr r0, _081129C8 @ =gUnknown_3005E88 + mov r9, r0 + adds r1, r2, 0 + ldr r6, _081129CC @ =gUnknown_203AF9A + ldr r2, _081129D0 @ =gUnknown_203AF98 + ldr r7, _081129D4 @ =gUnknown_203B01C + ldr r0, _081129D8 @ =gUnknown_3005E90 + mov r12, r0 + ldr r0, _081129DC @ =gUnknown_203B01A + mov r8, r0 + movs r5, 0xFF + adds r3, r6, 0 + movs r4, 0x3F +_08112988: + ldrb r0, [r3] + orrs r0, r5 + strb r0, [r3] + ldrb r0, [r3, 0x1] + orrs r0, r5 + strb r0, [r3, 0x1] + adds r3, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _08112988 + movs r0, 0 + strh r0, [r2] + strh r0, [r7] + movs r0, 0 + mov r2, r12 + str r0, [r2] + ldr r1, [r1] + ldrh r0, [r1, 0x4] + mov r2, r8 + strh r0, [r2] + ldrb r0, [r1, 0x3] + strb r0, [r6] + movs r0, 0xFF + strb r0, [r6, 0x1] + movs r0, 0x1 + mov r1, r9 + strb r0, [r1] + b _08112B20 + .align 2, 0 +_081129C0: .4byte gUnknown_3005E94 +_081129C4: .4byte gUnknown_3005E8C +_081129C8: .4byte gUnknown_3005E88 +_081129CC: .4byte gUnknown_203AF9A +_081129D0: .4byte gUnknown_203AF98 +_081129D4: .4byte gUnknown_203B01C +_081129D8: .4byte gUnknown_3005E90 +_081129DC: .4byte gUnknown_203B01A +_081129E0: + ldr r1, _08112A44 @ =gUnknown_3005E94 + str r3, [r1] + ldr r5, _08112A48 @ =gUnknown_3005E8C + lsrs r0, r4, 19 + strh r0, [r5] + movs r4, 0 + ldr r2, _08112A4C @ =gUnknown_203B01A + mov r8, r2 + cmp r4, r0 + bge _08112A0E + adds r6, r1, 0 + ldr r0, _08112A50 @ =gUnknown_845669C + ldr r2, [r0] + ldr r3, [r0, 0x4] +_081129FC: + ldr r1, [r6] + lsls r0, r4, 3 + adds r0, r1 + str r2, [r0] + str r3, [r0, 0x4] + adds r4, 0x1 + ldrh r0, [r5] + cmp r4, r0 + blt _081129FC +_08112A0E: + ldr r4, _08112A54 @ =gUnknown_203AF98 + movs r2, 0 + strh r2, [r4] + mov r1, r8 + strh r2, [r1] + movs r1, 0 + ldr r3, _08112A44 @ =gUnknown_3005E94 + ldr r0, [r3] + strh r1, [r0, 0x4] + strb r2, [r0, 0x6] + ldrh r0, [r4] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r2, [r0] + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _08112AC8 + lsls r0, 2 + ldr r1, _08112A58 @ =_08112A5C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08112A44: .4byte gUnknown_3005E94 +_08112A48: .4byte gUnknown_3005E8C +_08112A4C: .4byte gUnknown_203B01A +_08112A50: .4byte gUnknown_845669C +_08112A54: .4byte gUnknown_203AF98 +_08112A58: .4byte _08112A5C + .align 2, 0 +_08112A5C: + .4byte _08112A70 + .4byte _08112A70 + .4byte _08112AA0 + .4byte _08112AB8 + .4byte _08112A88 +_08112A70: + ldr r0, _08112A80 @ =gUnknown_203AF98 + ldrh r0, [r0] + ldr r1, _08112A84 @ =gUnknown_3005E94 + ldr r1, [r1] + lsls r0, 3 + adds r0, r1 + movs r1, 0 + b _08112AC6 + .align 2, 0 +_08112A80: .4byte gUnknown_203AF98 +_08112A84: .4byte gUnknown_3005E94 +_08112A88: + ldr r0, _08112A98 @ =gUnknown_203AF98 + ldrh r0, [r0] + ldr r1, _08112A9C @ =gUnknown_3005E94 + ldr r1, [r1] + lsls r0, 3 + adds r0, r1 + movs r1, 0x3 + b _08112AC6 + .align 2, 0 +_08112A98: .4byte gUnknown_203AF98 +_08112A9C: .4byte gUnknown_3005E94 +_08112AA0: + ldr r0, _08112AB0 @ =gUnknown_203AF98 + ldrh r0, [r0] + ldr r1, _08112AB4 @ =gUnknown_3005E94 + ldr r1, [r1] + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + b _08112AC6 + .align 2, 0 +_08112AB0: .4byte gUnknown_203AF98 +_08112AB4: .4byte gUnknown_3005E94 +_08112AB8: + ldr r0, _08112B2C @ =gUnknown_203AF98 + ldrh r0, [r0] + ldr r1, _08112B30 @ =gUnknown_3005E94 + ldr r1, [r1] + lsls r0, 3 + adds r0, r1 + movs r1, 0x2 +_08112AC6: + strb r1, [r0, 0x3] +_08112AC8: + ldr r0, _08112B34 @ =gUnknown_203B01C + movs r5, 0 + strh r5, [r0] + ldr r2, _08112B2C @ =gUnknown_203AF98 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + ldrh r0, [r2] + ldr r3, _08112B30 @ =gUnknown_3005E94 + ldr r4, [r3] + lsls r0, 3 + adds r0, r4 + movs r1, 0 + strh r1, [r0, 0x4] + ldrh r0, [r2] + lsls r0, 3 + adds r0, r4 + movs r4, 0x2 + strb r4, [r0, 0x6] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0, 0x1] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0, 0x2] + ldrh r0, [r2] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + strb r5, [r0, 0x3] + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + ldr r0, _08112B38 @ =gUnknown_3005E88 + strb r4, [r0] +_08112B20: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112B2C: .4byte gUnknown_203AF98 +_08112B30: .4byte gUnknown_3005E94 +_08112B34: .4byte gUnknown_203B01C +_08112B38: .4byte gUnknown_3005E88 + thumb_func_end sub_8112940 + + thumb_func_start sub_8112B3C +sub_8112B3C: @ 8112B3C + push {r4-r7,lr} + ldr r0, _08112B54 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x4 + bls _08112B48 + b _08112C84 +_08112B48: + lsls r0, 2 + ldr r1, _08112B58 @ =_08112B5C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08112B54: .4byte gUnknown_3005E88 +_08112B58: .4byte _08112B5C + .align 2, 0 +_08112B5C: + .4byte _08112C84 + .4byte _08112B70 + .4byte _08112C5E + .4byte _08112C84 + .4byte _08112C84 +_08112B70: + bl sub_8112CEC + lsls r0, 24 + cmp r0, 0 + beq _08112B7C + b _08112C72 +_08112B7C: + ldr r0, _08112B8C @ =gUnknown_203B01A + ldrh r1, [r0] + adds r7, r0, 0 + cmp r1, 0 + beq _08112B90 + subs r0, r1, 0x1 + strh r0, [r7] + b _08112C84 + .align 2, 0 +_08112B8C: .4byte gUnknown_203B01A +_08112B90: + ldr r5, _08112B98 @ =gUnknown_3005E88 + ldr r4, _08112B9C @ =gUnknown_203AF98 + ldr r6, _08112BA0 @ =gUnknown_3005E94 + b _08112BD4 + .align 2, 0 +_08112B98: .4byte gUnknown_3005E88 +_08112B9C: .4byte gUnknown_203AF98 +_08112BA0: .4byte gUnknown_3005E94 +_08112BA4: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldr r1, _08112BF0 @ =gUnknown_3005E8C + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bcs _08112C58 + ldrh r0, [r4] + ldr r1, [r6] + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x4] + strh r0, [r7] + cmp r2, 0x3 + beq _08112C84 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _08112BD4 + ldr r0, _08112BF4 @ =0x0000ffff + cmp r1, r0 + bne _08112C84 +_08112BD4: + ldrh r0, [r4] + ldr r1, [r6] + lsls r0, 3 + adds r3, r0, r1 + ldrb r0, [r3, 0x6] + cmp r0, 0x2 + beq _08112C2C + cmp r0, 0x2 + bgt _08112BF8 + cmp r0, 0 + beq _08112C0C + cmp r0, 0x1 + beq _08112C18 + b _08112C50 + .align 2, 0 +_08112BF0: .4byte gUnknown_3005E8C +_08112BF4: .4byte 0x0000ffff +_08112BF8: + cmp r0, 0xFE + beq _08112C50 + cmp r0, 0xFE + bgt _08112C06 + cmp r0, 0x3 + beq _08112C4E + b _08112C50 +_08112C06: + cmp r0, 0xFF + beq _08112C4C + b _08112C50 +_08112C0C: + ldr r0, _08112C14 @ =gUnknown_203AF9A + ldrb r1, [r3] + lsls r1, 1 + b _08112C20 + .align 2, 0 +_08112C14: .4byte gUnknown_203AF9A +_08112C18: + ldr r0, _08112C28 @ =gUnknown_203AF9A + ldrb r1, [r3] + lsls r1, 1 + adds r0, 0x1 +_08112C20: + adds r1, r0 + ldrb r0, [r3, 0x3] + strb r0, [r1] + b _08112C50 + .align 2, 0 +_08112C28: .4byte gUnknown_203AF9A +_08112C2C: + ldr r2, _08112C48 @ =gUnknown_3005E90 + ldrb r1, [r3, 0x3] + lsls r1, 24 + ldrb r0, [r3, 0x2] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x1] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3] + orrs r1, r0 + str r1, [r2] + b _08112C50 + .align 2, 0 +_08112C48: .4byte gUnknown_3005E90 +_08112C4C: + movs r0, 0 +_08112C4E: + strb r0, [r5] +_08112C50: + ldrb r2, [r5] + cmp r2, 0 + bne _08112BA4 + b _08112C84 +_08112C58: + movs r0, 0 + strb r0, [r5] + b _08112C84 +_08112C5E: + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08112C84 + ldr r1, _08112C8C @ =gUnknown_203B01A + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08112C72: + ldr r0, _08112C90 @ =gUnknown_203AF98 + ldr r1, _08112C94 @ =gUnknown_3005E8C + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bcc _08112C84 + ldr r1, _08112C98 @ =gUnknown_3005E88 + movs r0, 0 + strb r0, [r1] +_08112C84: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112C8C: .4byte gUnknown_203B01A +_08112C90: .4byte gUnknown_203AF98 +_08112C94: .4byte gUnknown_3005E8C +_08112C98: .4byte gUnknown_3005E88 + thumb_func_end sub_8112B3C + + thumb_func_start sub_8112C9C +sub_8112C9C: @ 8112C9C + ldr r1, _08112CA8 @ =gUnknown_203B01A + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + bx lr + .align 2, 0 +_08112CA8: .4byte gUnknown_203B01A + thumb_func_end sub_8112C9C + + thumb_func_start sub_8112CAC +sub_8112CAC: @ 8112CAC + push {lr} + ldr r0, _08112CC0 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x4 + bhi _08112CDC + lsls r0, 2 + ldr r1, _08112CC4 @ =_08112CC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08112CC0: .4byte gUnknown_3005E88 +_08112CC4: .4byte _08112CC8 + .align 2, 0 +_08112CC8: + .4byte _08112CDC + .4byte _08112CE0 + .4byte _08112CE4 + .4byte _08112CE0 + .4byte _08112CE4 +_08112CDC: + movs r0, 0 + b _08112CE6 +_08112CE0: + movs r0, 0x1 + b _08112CE6 +_08112CE4: + movs r0, 0x2 +_08112CE6: + pop {r1} + bx r1 + thumb_func_end sub_8112CAC + + thumb_func_start sub_8112CEC +sub_8112CEC: @ 8112CEC + push {lr} + ldr r0, _08112D0C @ =gUnknown_203AF98 + ldr r1, _08112D10 @ =gUnknown_3005E8C + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bcs _08112D06 + bl sub_8069958 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08112D14 +_08112D06: + movs r0, 0x1 + b _08112D16 + .align 2, 0 +_08112D0C: .4byte gUnknown_203AF98 +_08112D10: .4byte gUnknown_3005E8C +_08112D14: + movs r0, 0 +_08112D16: + pop {r1} + bx r1 + thumb_func_end sub_8112CEC + + thumb_func_start sub_8112D1C +sub_8112D1C: @ 8112D1C + push {lr} + ldr r0, _08112D30 @ =gUnknown_203AF98 + ldr r1, _08112D34 @ =gUnknown_3005E8C + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bcs _08112D38 + movs r0, 0 + b _08112D3A + .align 2, 0 +_08112D30: .4byte gUnknown_203AF98 +_08112D34: .4byte gUnknown_3005E8C +_08112D38: + movs r0, 0x1 +_08112D3A: + pop {r1} + bx r1 + thumb_func_end sub_8112D1C + + thumb_func_start sub_8112D40 +sub_8112D40: @ 8112D40 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r0, _08112D6C @ =gUnknown_203AF98 + ldrh r1, [r0] + cmp r1, 0 + beq _08112D66 + ldr r0, _08112D70 @ =gUnknown_3005E8C + ldrh r0, [r0] + cmp r1, r0 + bcs _08112D66 + ldr r4, _08112D74 @ =gUnknown_203B01E + ldr r1, _08112D78 @ =gUnknown_3002020 + ldrh r0, [r4] + ldrh r1, [r1] + cmp r0, r1 + bcc _08112D7C +_08112D66: + movs r0, 0 + b _08112DA8 + .align 2, 0 +_08112D6C: .4byte gUnknown_203AF98 +_08112D70: .4byte gUnknown_3005E8C +_08112D74: .4byte gUnknown_203B01E +_08112D78: .4byte gUnknown_3002020 +_08112D7C: + ldrh r3, [r4] + ldr r0, _08112DA0 @ =gUnknown_300201C + ldr r1, [r0] + lsls r0, r3, 2 + adds r2, r0, r1 + ldr r1, [r2] + lsls r0, r1, 17 + lsrs r0, 17 + cmp r0, r5 + bne _08112DA4 + lsls r0, r1, 16 + lsrs r0, 31 + cmp r0, r6 + bne _08112DA4 + adds r1, r2, 0x2 + adds r0, r3, 0x1 + strh r0, [r4] + b _08112DA6 + .align 2, 0 +_08112DA0: .4byte gUnknown_300201C +_08112DA4: + movs r1, 0 +_08112DA6: + adds r0, r1, 0 +_08112DA8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8112D40 + + thumb_func_start sub_8112DB0 +sub_8112DB0: @ 8112DB0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 16 + lsrs r2, 16 + mov r12, r2 + ldr r0, _08112E20 @ =gUnknown_203AF98 + ldrh r1, [r0] + cmp r1, 0 + beq _08112E18 + ldr r0, _08112E24 @ =gUnknown_3005E8C + ldrh r0, [r0] + cmp r1, r0 + bcs _08112E18 + ldr r6, _08112E28 @ =gUnknown_203B01E + ldr r1, _08112E2C @ =gUnknown_3002020 + ldrh r0, [r6] + ldrh r1, [r1] + cmp r0, r1 + bcs _08112E18 + adds r2, r0, 0 + ldr r5, _08112E30 @ =gUnknown_300201C + ldr r4, [r5] + lsls r2, 2 + adds r2, r4 + ldr r1, _08112E34 @ =0x00007fff + ands r1, r3 + ldrh r3, [r2] + ldr r0, _08112E38 @ =0xffff8000 + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + ldrh r1, [r6] + lsls r1, 2 + adds r1, r4 + lsls r3, r7, 7 + ldrb r2, [r1, 0x1] + movs r0, 0x7F + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x1] + ldrh r0, [r6] + ldr r1, [r5] + lsls r0, 2 + adds r0, r1 + mov r1, r12 + strh r1, [r0, 0x2] + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] +_08112E18: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112E20: .4byte gUnknown_203AF98 +_08112E24: .4byte gUnknown_3005E8C +_08112E28: .4byte gUnknown_203B01E +_08112E2C: .4byte gUnknown_3002020 +_08112E30: .4byte gUnknown_300201C +_08112E34: .4byte 0x00007fff +_08112E38: .4byte 0xffff8000 + thumb_func_end sub_8112DB0 + + thumb_func_start sub_8112E3C +sub_8112E3C: @ 8112E3C + push {r4,r5,lr} + lsls r0, 24 + lsls r2, 16 + lsrs r3, r0, 24 + movs r4, 0xFF + lsls r4, 24 + adds r0, r4 + lsrs r0, 24 + cmp r0, 0x1 + bls _08112E5C + ldr r1, _08112E58 @ =gUnknown_3005E88 + movs r0, 0 + strb r0, [r1] + b _08112E8E + .align 2, 0 +_08112E58: .4byte gUnknown_3005E88 +_08112E5C: + ldr r5, _08112E94 @ =gUnknown_300201C + str r1, [r5] + ldr r1, _08112E98 @ =gUnknown_3002020 + lsrs r0, r2, 18 + strh r0, [r1] + ldr r1, _08112E9C @ =gUnknown_203B01E + movs r0, 0 + strh r0, [r1] + cmp r3, 0x2 + bne _08112E8E + movs r2, 0 + ldr r4, _08112EA0 @ =gUnknown_3005E8C + ldrh r0, [r4] + cmp r2, r0 + bge _08112E8E + ldr r0, _08112EA4 @ =gUnknown_84566A4 + ldr r3, [r0] +_08112E7E: + ldr r1, [r5] + lsls r0, r2, 2 + adds r0, r1 + str r3, [r0] + adds r2, 0x1 + ldrh r0, [r4] + cmp r2, r0 + blt _08112E7E +_08112E8E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08112E94: .4byte gUnknown_300201C +_08112E98: .4byte gUnknown_3002020 +_08112E9C: .4byte gUnknown_203B01E +_08112EA0: .4byte gUnknown_3005E8C +_08112EA4: .4byte gUnknown_84566A4 + thumb_func_end sub_8112E3C + + thumb_func_start sub_8112EA8 +sub_8112EA8: @ 8112EA8 + ldr r1, _08112EB0 @ =gUnknown_203B020 + movs r0, 0xFF + strb r0, [r1] + bx lr + .align 2, 0 +_08112EB0: .4byte gUnknown_203B020 + thumb_func_end sub_8112EA8 + + thumb_func_start sub_8112EB4 +sub_8112EB4: @ 8112EB4 + push {r4,lr} + ldr r4, _08112ED4 @ =gUnknown_203B020 + ldrb r0, [r4] + cmp r0, 0xFF + bne _08112ECC + ldr r0, _08112ED8 @ =gUnknown_8456928 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + bl sub_8003FA0 +_08112ECC: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08112ED4: .4byte gUnknown_203B020 +_08112ED8: .4byte gUnknown_8456928 + thumb_func_end sub_8112EB4 + + thumb_func_start sub_8112EDC +sub_8112EDC: @ 8112EDC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08112F14 @ =gUnknown_203B020 + ldrb r0, [r4] + cmp r0, 0xFF + beq _08112F0C + movs r1, 0 + bl sub_800445C + ldrb r0, [r4] + bl sub_80040B8 + cmp r5, 0 + beq _08112F02 + ldrb r0, [r4] + adds r1, r5, 0 + bl sub_8003F20 +_08112F02: + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0xFF + strb r0, [r4] +_08112F0C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08112F14: .4byte gUnknown_203B020 + thumb_func_end sub_8112EDC + + thumb_func_start sub_8112F18 +sub_8112F18: @ 8112F18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r1, 0x3 + bl sub_8004950 + lsls r0, 24 + lsrs r6, r0, 24 + mov r0, r10 + movs r1, 0x4 + bl sub_8004950 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 5 + muls r0, r6 + bl sub_8002B9C + mov r8, r0 + cmp r0, 0 + beq _08112FB8 + movs r5, 0 + adds r0, r6, 0 + muls r0, r7 + str r0, [sp] + cmp r5, r7 + bcs _08112FA2 +_08112F5A: + movs r4, 0 + adds r1, r5, 0x1 + mov r9, r1 + cmp r4, r6 + bcs _08112F98 + subs r3, r7, 0x1 +_08112F66: + movs r0, 0 + cmp r5, 0 + beq _08112F74 + movs r0, 0x5 + cmp r5, r3 + bne _08112F74 + movs r0, 0xE +_08112F74: + lsls r0, 5 + ldr r1, _08112FC8 @ =gUnknown_84566A8 + adds r0, r1, r0 + adds r1, r5, 0 + muls r1, r6 + adds r1, r4 + lsls r1, 5 + add r1, r8 + ldr r2, _08112FCC @ =0x04000008 + str r3, [sp, 0x4] + bl CpuSet + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r3, [sp, 0x4] + cmp r4, r6 + bcc _08112F66 +_08112F98: + mov r1, r9 + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _08112F5A +_08112FA2: + ldr r0, [sp] + lsls r2, r0, 21 + lsrs r2, 16 + mov r0, r10 + mov r1, r8 + movs r3, 0 + bl sub_8004404 + mov r0, r8 + bl sub_8002BC4 +_08112FB8: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08112FC8: .4byte gUnknown_84566A8 +_08112FCC: .4byte 0x04000008 + thumb_func_end sub_8112F18 + + thumb_func_start sub_8112FD0 +sub_8112FD0: @ 8112FD0 + push {lr} + ldr r0, _08112FE0 @ =gUnknown_203B020 + ldrb r0, [r0] + bl sub_8112F18 + pop {r0} + bx r0 + .align 2, 0 +_08112FE0: .4byte gUnknown_203B020 + thumb_func_end sub_8112FD0 + + thumb_func_start sub_8112FE4 +sub_8112FE4: @ 8112FE4 + push {lr} + sub sp, 0x14 + adds r2, r0, 0 + ldr r0, _08113010 @ =gUnknown_203B020 + ldrb r0, [r0] + movs r1, 0x1 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _08113014 @ =gUnknown_8456930 + str r1, [sp, 0x8] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x5 + bl sub_812E5A4 + add sp, 0x14 + pop {r0} + bx r0 + .align 2, 0 +_08113010: .4byte gUnknown_203B020 +_08113014: .4byte gUnknown_8456930 + thumb_func_end sub_8112FE4 + + thumb_func_start sub_8113018 +sub_8113018: @ 8113018 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_8112FD0 + adds r0, r4, 0 + bl sub_8112FE4 + cmp r5, 0 + beq _08113038 + ldr r0, _08113040 @ =gUnknown_203B020 + ldrb r0, [r0] + adds r1, r5, 0 + bl sub_8003F20 +_08113038: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08113040: .4byte gUnknown_203B020 + thumb_func_end sub_8113018 + + thumb_func_start sub_8113044 +sub_8113044: @ 8113044 + push {lr} + ldr r0, _0811305C @ =0x00004038 + movs r1, 0 + bl sub_806E584 + ldr r0, _08113060 @ =0x00004039 + movs r1, 0 + bl sub_806E584 + pop {r0} + bx r0 + .align 2, 0 +_0811305C: .4byte 0x00004038 +_08113060: .4byte 0x00004039 + thumb_func_end sub_8113044 + + thumb_func_start sub_8113064 +sub_8113064: @ 8113064 + push {lr} + ldr r0, _08113074 @ =0x00004038 + bl sub_806E454 + bl sub_8113078 + pop {r0} + bx r0 + .align 2, 0 +_08113074: .4byte 0x00004038 + thumb_func_end sub_8113064 + + thumb_func_start sub_8113078 +sub_8113078: @ 8113078 + push {r4,lr} + adds r4, r0, 0 + bl sub_8113508 + lsls r0, 24 + cmp r0, 0 + beq _08113098 + adds r0, r4, 0 + bl sub_81132E0 + ldr r0, _081130A0 @ =0x00004039 + ldr r1, _081130A4 @ =gUnknown_300500C + ldr r1, [r1] + ldrh r1, [r1, 0xE] + bl sub_806E584 +_08113098: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081130A0: .4byte 0x00004039 +_081130A4: .4byte gUnknown_300500C + thumb_func_end sub_8113078 + + thumb_func_start sub_81130A8 +sub_81130A8: @ 81130A8 + push {lr} + ldr r0, _081130B8 @ =0x00004038 + bl sub_806E454 + bl sub_81130BC + pop {r0} + bx r0 + .align 2, 0 +_081130B8: .4byte 0x00004038 + thumb_func_end sub_81130A8 + + thumb_func_start sub_81130BC +sub_81130BC: @ 81130BC + push {r4,lr} + adds r4, r0, 0 + ldrb r1, [r4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08113102 + adds r0, r4, 0 + bl sub_8113524 + adds r0, r4, 0 + bl sub_8113390 + ldr r0, _08113108 @ =0x00004039 + ldr r1, _0811310C @ =gUnknown_300500C + ldr r1, [r1] + ldrh r1, [r1, 0xE] + bl sub_806E584 + movs r0, 0x6C + bl sub_806E6A8 + movs r0, 0x6D + bl sub_806E6A8 + movs r0, 0x6E + bl sub_806E6A8 + movs r0, 0x6F + bl sub_806E6A8 + ldr r0, _08113110 @ =0x00004073 + movs r1, 0x1 + bl sub_806E584 +_08113102: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08113108: .4byte 0x00004039 +_0811310C: .4byte gUnknown_300500C +_08113110: .4byte 0x00004073 + thumb_func_end sub_81130BC + + thumb_func_start sub_8113114 +sub_8113114: @ 8113114 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _0811315C @ =0x00004073 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bne _08113188 + ldr r0, [r4] + lsls r2, r0, 25 + lsrs r1, r2, 25 + ldr r0, _08113160 @ =gUnknown_8456934 + adds r0, r5, r0 + ldrb r0, [r0] + adds r1, r0 + cmp r1, 0x13 + ble _08113174 + adds r0, r4, 0 + bl sub_81132A0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bhi _08113164 + adds r0, r4, 0 + bl sub_8113194 + ldrb r1, [r4] + movs r0, 0x80 + negs r0, r0 + ands r0, r1 + b _08113186 + .align 2, 0 +_0811315C: .4byte 0x00004073 +_08113160: .4byte gUnknown_8456934 +_08113164: + ldrb r0, [r4] + movs r1, 0x80 + negs r1, r1 + ands r1, r0 + movs r0, 0x14 + orrs r1, r0 + strb r1, [r4] + b _08113188 +_08113174: + lsrs r1, r2, 25 + adds r1, r0 + movs r0, 0x7F + ands r1, r0 + ldrb r2, [r4] + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 +_08113186: + strb r0, [r4] +_08113188: + ldr r0, [r4] + lsls r0, 25 + lsrs r0, 25 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8113114 + + thumb_func_start sub_8113194 +sub_8113194: @ 8113194 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + movs r0, 0 + mov r8, r0 + movs r6, 0 + movs r7, 0x1 +_081131A4: + ldrb r1, [r5, 0x1] + ldr r0, _081131D0 @ =gUnknown_8456938 + adds r0, r6, r0 + ldrb r4, [r0] + asrs r1, r4 + ands r1, r7 + cmp r1, 0 + bne _081131D4 + mov r8, r6 + bl sub_8044EC8 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _081131D4 + adds r0, r7, 0 + lsls r0, r4 + ldrb r1, [r5, 0x1] + orrs r0, r1 + strb r0, [r5, 0x1] + adds r0, r4, 0 + b _081131EE + .align 2, 0 +_081131D0: .4byte gUnknown_8456938 +_081131D4: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x7 + bls _081131A4 + ldr r0, _081131F8 @ =gUnknown_8456938 + add r0, r8 + ldrb r0, [r0] + movs r1, 0x1 + lsls r1, r0 + ldrb r2, [r5, 0x1] + orrs r1, r2 + strb r1, [r5, 0x1] +_081131EE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081131F8: .4byte gUnknown_8456938 + thumb_func_end sub_8113194 + + thumb_func_start sub_81131FC +sub_81131FC: @ 81131FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + movs r0, 0 + mov r8, r0 + adds r0, r7, 0 + bl sub_81132A0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _08113228 + movs r0, 0 + b _08113276 +_0811321C: + lsls r4, r6 + ldrb r0, [r7, 0x1] + eors r4, r0 + strb r4, [r7, 0x1] + adds r0, r6, 0 + b _08113276 +_08113228: + movs r5, 0 + movs r4, 0x1 +_0811322C: + ldrb r1, [r7, 0x1] + ldr r2, _08113284 @ =gUnknown_8456940 + adds r0, r5, r2 + ldrb r6, [r0] + asrs r1, r6 + ands r1, r4 + cmp r1, 0 + beq _0811324E + mov r8, r5 + str r2, [sp] + bl sub_8044EC8 + adds r1, r4, 0 + ands r1, r0 + ldr r2, [sp] + cmp r1, 0 + bne _0811321C +_0811324E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x7 + bls _0811322C + ldrb r1, [r7, 0x1] + mov r3, r8 + adds r0, r3, r2 + ldrb r2, [r0] + adds r0, r1, 0 + asrs r0, r2 + movs r3, 0x1 + ands r0, r3 + cmp r0, 0 + beq _08113274 + adds r0, r3, 0 + lsls r0, r2 + eors r1, r0 + strb r1, [r7, 0x1] +_08113274: + adds r0, r2, 0 +_08113276: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08113284: .4byte gUnknown_8456940 + thumb_func_end sub_81131FC + + thumb_func_start sub_8113288 +sub_8113288: @ 8113288 + push {lr} + ldr r0, _0811329C @ =0x00004038 + bl sub_806E454 + bl sub_81132A0 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_0811329C: .4byte 0x00004038 + thumb_func_end sub_8113288 + + thumb_func_start sub_81132A0 +sub_81132A0: @ 81132A0 + push {r4,lr} + movs r2, 0 + movs r1, 0 + ldrb r3, [r0, 0x1] + movs r4, 0x1 +_081132AA: + adds r0, r3, 0 + asrs r0, r1 + ands r0, r4 + cmp r0, 0 + beq _081132BA + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_081132BA: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x7 + bls _081132AA + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81132A0 + + thumb_func_start sub_81132CC +sub_81132CC: @ 81132CC + push {lr} + ldr r0, _081132DC @ =0x00004038 + bl sub_806E454 + bl sub_81132E0 + pop {r0} + bx r0 + .align 2, 0 +_081132DC: .4byte 0x00004038 + thumb_func_end sub_81132CC + + thumb_func_start sub_81132E0 +sub_81132E0: @ 81132E0 + push {r4-r6,lr} + adds r4, r0, 0 + movs r5, 0 + ldr r2, _081132F8 @ =gUnknown_300500C + ldr r0, [r2] + ldrh r1, [r0, 0xE] + ldr r0, _081132FC @ =0x000003e6 + cmp r1, r0 + bhi _0811335C + adds r6, r2, 0 + b _08113338 + .align 2, 0 +_081132F8: .4byte gUnknown_300500C +_081132FC: .4byte 0x000003e6 +_08113300: + ldr r0, _08113354 @ =0x00004039 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [r6] + ldrh r1, [r1, 0xE] + subs r1, r0 + cmp r1, 0xB + ble _0811335C + adds r0, r4, 0 + bl sub_81131FC + ldr r0, _08113354 @ =0x00004039 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 16 + movs r0, 0xC0 + lsls r0, 12 + adds r1, r0 + lsrs r1, 16 + ldr r0, _08113354 @ =0x00004039 + bl sub_806E584 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08113338: + adds r0, r4, 0 + bl sub_81132A0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _08113358 + ldr r0, [r6] + ldrh r1, [r0, 0xE] + ldr r0, _08113354 @ =0x00004039 + bl sub_806E584 + b _0811335C + .align 2, 0 +_08113354: .4byte 0x00004039 +_08113358: + cmp r5, 0x8 + bne _08113300 +_0811335C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81132E0 + + thumb_func_start sub_8113364 +sub_8113364: @ 8113364 + push {lr} + ldr r0, _08113378 @ =0x00004038 + bl sub_806E454 + bl sub_811337C + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08113378: .4byte 0x00004038 + thumb_func_end sub_8113364 + + thumb_func_start sub_811337C +sub_811337C: @ 811337C + ldrb r0, [r0, 0x1] + ldr r1, _0811338C @ =gUnknown_20370C0 + ldrh r1, [r1] + asrs r0, r1 + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0811338C: .4byte gUnknown_20370C0 + thumb_func_end sub_811337C + + thumb_func_start sub_8113390 +sub_8113390: @ 8113390 + ldrb r2, [r0, 0x1] + movs r1, 0x1 + orrs r1, r2 + movs r2, 0x2 + orrs r1, r2 + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0, 0x1] + bx lr + thumb_func_end sub_8113390 + + thumb_func_start sub_81133A4 +sub_81133A4: @ 81133A4 + push {lr} + movs r3, 0 + movs r2, 0 + ldr r0, _081133BC @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x7 + bhi _081133F8 + lsls r0, 2 + ldr r1, _081133C0 @ =_081133C4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081133BC: .4byte gUnknown_20370C0 +_081133C0: .4byte _081133C4 + .align 2, 0 +_081133C4: + .4byte _081133E4 + .4byte _081133F8 + .4byte _081133F8 + .4byte _081133F8 + .4byte _081133EA + .4byte _081133F0 + .4byte _081133F4 + .4byte _081133F8 +_081133E4: + movs r2, 0 + movs r3, 0 + b _081133F8 +_081133EA: + movs r2, 0x1 + movs r3, 0 + b _081133F8 +_081133F0: + movs r2, 0 + b _081133F6 +_081133F4: + movs r2, 0x2 +_081133F6: + movs r3, 0x1 +_081133F8: + ldr r0, _0811340C @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _08113410 @ =0x00000a98 + adds r0, r1 + adds r1, r3, 0 + bl sub_8113414 + pop {r0} + bx r0 + .align 2, 0 +_0811340C: .4byte gUnknown_300500C +_08113410: .4byte 0x00000a98 + thumb_func_end sub_81133A4 + + thumb_func_start sub_8113414 +sub_8113414: @ 8113414 + push {r4,lr} + lsls r1, 24 + lsls r2, 24 + lsrs r2, 24 + adds r3, r2, 0 + lsrs r1, 20 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08113478 + cmp r2, 0x1 + beq _08113436 + cmp r2, 0x1 + ble _0811345C + cmp r3, 0x2 + beq _08113448 + b _0811345C +_08113436: + ldr r0, _08113440 @ =gUnknown_2021CD0 + ldr r1, _08113444 @ =gUnknown_84178D0 + bl sub_8008D84 + b _081134B2 + .align 2, 0 +_08113440: .4byte gUnknown_2021CD0 +_08113444: .4byte gUnknown_84178D0 +_08113448: + ldr r0, _08113454 @ =gUnknown_2021CD0 + ldr r1, _08113458 @ =gUnknown_84178DA + bl sub_8008D84 + b _081134B2 + .align 2, 0 +_08113454: .4byte gUnknown_2021CD0 +_08113458: .4byte gUnknown_84178DA +_0811345C: + ldr r0, _0811346C @ =gUnknown_2021CD0 + ldr r1, _08113470 @ =gUnknown_3005008 + ldr r1, [r1] + ldr r2, _08113474 @ =0x00003a4c + adds r1, r2 + bl sub_8008D84 + b _081134B2 + .align 2, 0 +_0811346C: .4byte gUnknown_2021CD0 +_08113470: .4byte gUnknown_3005008 +_08113474: .4byte 0x00003a4c +_08113478: + ldr r4, _08113498 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r2, 0x7 + bl sub_8008DBC + movs r0, 0xFF + strb r0, [r4, 0x7] + ldrb r0, [r4] + cmp r0, 0xFC + bne _081134B2 + ldrb r0, [r4, 0x1] + cmp r0, 0x15 + bne _081134B2 + adds r4, 0x2 + b _0811349E + .align 2, 0 +_08113498: .4byte gUnknown_2021CD0 +_0811349C: + adds r4, 0x1 +_0811349E: + ldrb r0, [r4] + cmp r0, 0xFF + bne _0811349C + movs r0, 0xFC + strb r0, [r4] + adds r4, 0x1 + movs r0, 0x16 + strb r0, [r4] + movs r0, 0xFF + strb r0, [r4, 0x1] +_081134B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8113414 + + thumb_func_start sub_81134B8 +sub_81134B8: @ 81134B8 + push {lr} + ldr r0, _081134C8 @ =0x00004038 + bl sub_806E454 + bl sub_81134CC + pop {r0} + bx r0 + .align 2, 0 +_081134C8: .4byte 0x00004038 + thumb_func_end sub_81134B8 + + thumb_func_start sub_81134CC +sub_81134CC: @ 81134CC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _081134F4 @ =0x00004073 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bne _08113502 + adds r0, r4, 0 + bl sub_8113078 + ldr r0, _081134F8 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x1 + bne _081134FC + adds r0, r4, 0 + bl sub_8113194 + b _08113502 + .align 2, 0 +_081134F4: .4byte 0x00004073 +_081134F8: .4byte gUnknown_2023E8A +_081134FC: + adds r0, r4, 0 + bl sub_81131FC +_08113502: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81134CC + + thumb_func_start sub_8113508 +sub_8113508: @ 8113508 + ldr r0, [r0] + lsls r0, 24 + lsrs r0, 31 + bx lr + thumb_func_end sub_8113508 + + thumb_func_start sub_8113510 +sub_8113510: @ 8113510 + push {lr} + ldr r0, _08113520 @ =0x00004038 + bl sub_806E454 + bl sub_8113524 + pop {r0} + bx r0 + .align 2, 0 +_08113520: .4byte 0x00004038 + thumb_func_end sub_8113510 + + thumb_func_start sub_8113524 +sub_8113524: @ 8113524 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8113524 + + thumb_func_start sub_8113530 +sub_8113530: @ 8113530 + push {lr} + ldr r0, _08113548 @ =0x00004038 + bl sub_806E454 + ldr r1, _0811354C @ =gUnknown_20370C0 + ldrb r1, [r1] + bl sub_8113114 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08113548: .4byte 0x00004038 +_0811354C: .4byte gUnknown_20370C0 + thumb_func_end sub_8113530 + + thumb_func_start sub_8113550 +sub_8113550: @ 8113550 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x23 + bne _08113570 + ldr r0, _0811356C @ =gUnknown_203B048 + ldrb r0, [r0] + cmp r0, 0x2 + bne _08113570 + bl sub_811381C + b _081136BC + .align 2, 0 +_0811356C: .4byte gUnknown_203B048 +_08113570: + bl sub_811381C + ldr r0, _0811362C @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _0811357E + b _081136BC +_0811357E: + subs r0, r4, 0x3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x27 + bls _0811358A + b _081136BC +_0811358A: + bl sub_81136D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08113598 + b _081136BC +_08113598: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81138A0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081135AA + b _081136BC +_081135AA: + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081135B8 + b _081136BC +_081135B8: + bl sub_811B0D0 + cmp r0, 0x1 + bne _081135C2 + b _081136BC +_081135C2: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8113954 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081136BC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8113A44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081136BC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81153E4 + lsls r0, 24 + cmp r0, 0 + beq _081136BC + ldr r0, _08113630 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0 + bne _08113638 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8113778 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081136BC + cmp r4, 0x1F + bne _08113614 + ldr r0, _08113634 @ =gUnknown_203AE04 + ldr r0, [r0] + cmp r0, 0 + bne _0811363C +_08113614: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81153A8 + lsls r0, 24 + cmp r0, 0 + beq _081136BC + adds r0, r4, 0 + bl sub_8110AEC + b _0811363C + .align 2, 0 +_0811362C: .4byte gUnknown_203ADFA +_08113630: .4byte gUnknown_3005E88 +_08113634: .4byte gUnknown_203AE04 +_08113638: + cmp r4, 0x28 + beq _081136BC +_0811363C: + adds r0, r4, 0 + bl sub_8113B94 + cmp r4, 0x1F + bne _0811367C + ldr r2, _0811365C @ =gUnknown_203AE04 + ldr r1, [r2] + cmp r1, 0 + bne _08113668 + ldr r0, _08113660 @ =gUnknown_203AE08 + ldr r0, [r0] + str r0, [r2] + ldr r1, _08113664 @ =gUnknown_8456948 + ldr r2, [r1, 0x7C] + b _0811368E + .align 2, 0 +_0811365C: .4byte gUnknown_203AE04 +_08113660: .4byte gUnknown_203AE08 +_08113664: .4byte gUnknown_8456948 +_08113668: + ldr r0, _08113678 @ =gUnknown_8456948 + ldr r2, [r0, 0x7C] + adds r0, r1, 0 + adds r1, r5, 0 + bl _call_via_r2 + b _081136BC + .align 2, 0 +_08113678: .4byte gUnknown_8456948 +_0811367C: + ldr r1, _081136C4 @ =gUnknown_203AE04 + movs r0, 0 + str r0, [r1] + ldr r0, _081136C8 @ =gUnknown_8456948 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, _081136CC @ =gUnknown_203AE08 + ldr r0, [r0] + ldr r2, [r1] +_0811368E: + adds r1, r5, 0 + bl _call_via_r2 + adds r1, r0, 0 + cmp r1, 0 + bne _081136AC + bl sub_811231C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8113828 + adds r1, r0, 0 + cmp r1, 0 + beq _081136BC +_081136AC: + ldr r0, _081136CC @ =gUnknown_203AE08 + str r1, [r0] + ldr r0, _081136D0 @ =gUnknown_203B048 + ldrb r0, [r0] + cmp r0, 0 + beq _081136BC + bl sub_811231C +_081136BC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081136C4: .4byte gUnknown_203AE04 +_081136C8: .4byte gUnknown_8456948 +_081136CC: .4byte gUnknown_203AE08 +_081136D0: .4byte gUnknown_203B048 + thumb_func_end sub_8113550 + + thumb_func_start sub_81136D4 +sub_81136D4: @ 81136D4 + push {lr} + ldr r0, _08113728 @ =gUnknown_3005008 + ldr r2, [r0] + movs r1, 0x4 + ldrsb r1, [r2, r1] + adds r3, r0, 0 + cmp r1, 0x2 + bne _081136F0 + ldrb r0, [r2, 0x5] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + bls _08113724 +_081136F0: + ldr r2, [r3] + ldrh r1, [r2, 0x4] + ldr r0, _0811372C @ =0x0000090e + cmp r1, r0 + beq _08113724 + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r0, 0x1F + bne _08113708 + ldrb r0, [r2, 0x5] + cmp r0, 0x1 + bls _08113724 +_08113708: + ldr r0, [r3] + ldrh r1, [r0, 0x4] + ldr r0, _08113730 @ =0x00002e01 + cmp r1, r0 + beq _08113724 + ldr r0, _08113734 @ =0x00003a01 + cmp r1, r0 + beq _08113724 + ldr r0, _08113738 @ =0x00000b02 + cmp r1, r0 + beq _08113724 + ldr r0, _0811373C @ =0x0000060a + cmp r1, r0 + bne _08113740 +_08113724: + movs r0, 0x1 + b _08113742 + .align 2, 0 +_08113728: .4byte gUnknown_3005008 +_0811372C: .4byte 0x0000090e +_08113730: .4byte 0x00002e01 +_08113734: .4byte 0x00003a01 +_08113738: .4byte 0x00000b02 +_0811373C: .4byte 0x0000060a +_08113740: + movs r0, 0 +_08113742: + pop {r1} + bx r1 + thumb_func_end sub_81136D4 + + thumb_func_start sub_8113748 +sub_8113748: @ 8113748 + push {lr} + bl sub_81136D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08113770 + ldr r0, _08113764 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _08113768 + movs r0, 0x1 + b _08113772 + .align 2, 0 +_08113764: .4byte gUnknown_203ADFA +_08113768: + cmp r0, 0x1 + bne _08113770 + bl sub_8112364 +_08113770: + movs r0, 0 +_08113772: + pop {r1} + bx r1 + thumb_func_end sub_8113748 + + thumb_func_start sub_8113778 +sub_8113778: @ 8113778 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x24 + beq _081137CE + cmp r4, 0xB + beq _081137CE + ldr r0, _081137D4 @ =0x0000082c + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _081137AC + cmp r4, 0x3 + beq _081137CE + cmp r4, 0x1F + beq _081137CE + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81137E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081137CE +_081137AC: + ldr r0, _081137D8 @ =0x00000844 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _081137DC + subs r0, r4, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x6 + bls _081137CE + cmp r4, 0x16 + beq _081137CE + cmp r4, 0x19 + beq _081137CE + cmp r4, 0x1A + bne _081137DC +_081137CE: + movs r0, 0x1 + b _081137DE + .align 2, 0 +_081137D4: .4byte 0x0000082c +_081137D8: .4byte 0x00000844 +_081137DC: + movs r0, 0 +_081137DE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8113778 + + thumb_func_start sub_81137E4 +sub_81137E4: @ 81137E4 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x22 + bne _08113814 + ldr r2, _08113810 @ =gUnknown_823EAC8 + ldrh r1, [r1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r1, [r0, 0x1] + cmp r1, 0x51 + beq _08113814 + cmp r1, 0x59 + beq _08113814 + cmp r1, 0x5A + beq _08113814 + cmp r1, 0x53 + beq _08113814 + movs r0, 0x1 + b _08113816 + .align 2, 0 +_08113810: .4byte gUnknown_823EAC8 +_08113814: + movs r0, 0 +_08113816: + pop {r1} + bx r1 + thumb_func_end sub_81137E4 + + thumb_func_start sub_811381C +sub_811381C: @ 811381C + ldr r1, _08113824 @ =gUnknown_203B048 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08113824: .4byte gUnknown_203B048 + thumb_func_end sub_811381C + + thumb_func_start sub_8113828 +sub_8113828: @ 8113828 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_8113778 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811384C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81153A8 + lsls r0, 24 + cmp r0, 0 + bne _08113850 +_0811384C: + movs r0, 0 + b _0811388C +_08113850: + adds r0, r4, 0 + bl sub_8110AEC + adds r0, r4, 0 + bl sub_8113B94 + cmp r4, 0x1F + bne _08113874 + ldr r2, _0811386C @ =gUnknown_203AE04 + ldr r1, _08113870 @ =gUnknown_203AE08 + ldr r0, [r1] + str r0, [r2] + adds r2, r1, 0 + b _0811387C + .align 2, 0 +_0811386C: .4byte gUnknown_203AE04 +_08113870: .4byte gUnknown_203AE08 +_08113874: + ldr r1, _08113894 @ =gUnknown_203AE04 + movs r0, 0 + str r0, [r1] + ldr r2, _08113898 @ =gUnknown_203AE08 +_0811387C: + ldr r0, _0811389C @ =gUnknown_8456948 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r2] + ldr r2, [r1] + adds r1, r5, 0 + bl _call_via_r2 +_0811388C: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08113894: .4byte gUnknown_203AE04 +_08113898: .4byte gUnknown_203AE08 +_0811389C: .4byte gUnknown_8456948 + thumb_func_end sub_8113828 + + thumb_func_start sub_81138A0 +sub_81138A0: @ 81138A0 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 16 + lsrs r0, 16 + adds r4, r0, 0 + subs r0, 0xC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7 + bls _081138B8 + movs r0, 0 + b _081138F0 +_081138B8: + bl sub_81138F8 + ldr r1, _081138E0 @ =gUnknown_203B024 + strh r4, [r1] + adds r0, r4, 0 + subs r0, 0x10 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _081138EE + cmp r4, 0xC + beq _081138D4 + cmp r4, 0x12 + bne _081138E4 +_081138D4: + adds r0, r1, 0x4 + adds r1, r5, 0 + movs r2, 0xC + bl memcpy + b _081138EE + .align 2, 0 +_081138E0: .4byte gUnknown_203B024 +_081138E4: + adds r0, r1, 0x4 + adds r1, r5, 0 + movs r2, 0x18 + bl memcpy +_081138EE: + movs r0, 0x1 +_081138F0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81138A0 + + thumb_func_start sub_81138F8 +sub_81138F8: @ 81138F8 + push {lr} + ldr r0, _08113908 @ =gUnknown_203B024 + movs r1, 0 + movs r2, 0x20 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_08113908: .4byte gUnknown_203B024 + thumb_func_end sub_81138F8 + + thumb_func_start sub_811390C +sub_811390C: @ 811390C + push {r4,r5,lr} + ldr r5, _08113944 @ =gUnknown_203B024 + ldrh r0, [r5] + cmp r0, 0 + beq _0811393C + ldr r1, _08113948 @ =gUnknown_203B04A + movs r0, 0 + strb r0, [r1] + ldrh r0, [r5] + bl sub_8110AEC + ldr r0, _0811394C @ =gUnknown_8456948 + ldrh r2, [r5] + lsls r2, 2 + adds r2, r0 + ldr r4, _08113950 @ =gUnknown_203AE08 + ldr r0, [r4] + adds r1, r5, 0x4 + ldr r2, [r2] + bl _call_via_r2 + str r0, [r4] + bl sub_81138F8 +_0811393C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08113944: .4byte gUnknown_203B024 +_08113948: .4byte gUnknown_203B04A +_0811394C: .4byte gUnknown_8456948 +_08113950: .4byte gUnknown_203AE08 + thumb_func_end sub_811390C + + thumb_func_start sub_8113954 +sub_8113954: @ 8113954 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x22 + beq _08113970 + cmp r4, 0x1E + beq _08113970 + cmp r4, 0x20 + beq _08113970 + cmp r4, 0x21 + beq _08113970 + movs r0, 0 + b _081139A8 +_08113970: + bl sub_81138F8 + ldr r0, _081139B0 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0 + bne _08113998 + ldr r0, _081139B4 @ =0x0000082c + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _08113998 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_81137E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081139A6 +_08113998: + ldr r0, _081139B8 @ =gUnknown_203B024 + strh r4, [r0] + adds r0, 0x4 + adds r1, r5, 0 + movs r2, 0x8 + bl memcpy +_081139A6: + movs r0, 0x1 +_081139A8: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081139B0: .4byte gUnknown_3005E88 +_081139B4: .4byte 0x0000082c +_081139B8: .4byte gUnknown_203B024 + thumb_func_end sub_8113954 + + thumb_func_start sub_81139BC +sub_81139BC: @ 81139BC + push {r4,r5,lr} + ldr r5, _08113A08 @ =gUnknown_203B024 + ldrh r0, [r5] + cmp r0, 0 + beq _08113A02 + ldr r0, _08113A0C @ =gUnknown_3005E88 + ldrb r1, [r0] + cmp r1, 0 + bne _081139D8 + ldr r0, _08113A10 @ =gUnknown_203B04A + strb r1, [r0] + ldrh r0, [r5] + bl sub_8110AEC +_081139D8: + ldrh r0, [r5] + bl sub_8113B94 + ldr r0, _08113A14 @ =gUnknown_8456948 + ldrh r2, [r5] + lsls r2, 2 + adds r2, r0 + ldr r4, _08113A18 @ =gUnknown_203AE08 + ldr r0, [r4] + adds r1, r5, 0x4 + ldr r2, [r2] + bl _call_via_r2 + str r0, [r4] + movs r0, 0x1 + bl sub_8113A1C + bl sub_81138F8 + bl sub_811231C +_08113A02: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08113A08: .4byte gUnknown_203B024 +_08113A0C: .4byte gUnknown_3005E88 +_08113A10: .4byte gUnknown_203B04A +_08113A14: .4byte gUnknown_8456948 +_08113A18: .4byte gUnknown_203AE08 + thumb_func_end sub_81139BC + + thumb_func_start sub_8113A1C +sub_8113A1C: @ 8113A1C + push {r4,lr} + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _08113A3C @ =gUnknown_203AE08 + ldr r0, [r4] + bl sub_8113C5C + str r0, [r4] + ldr r1, _08113A40 @ =gUnknown_203AF98 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08113A3C: .4byte gUnknown_203AE08 +_08113A40: .4byte gUnknown_203AF98 + thumb_func_end sub_8113A1C + + thumb_func_start sub_8113A44 +sub_8113A44: @ 8113A44 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1F + bne _08113A6C + ldrh r0, [r4] + bl sub_8114FBC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08113A70 + ldrh r0, [r4, 0x2] + bl sub_8114FBC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08113A70 +_08113A6C: + movs r0, 0 + b _08113A72 +_08113A70: + movs r0, 0x1 +_08113A72: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8113A44 + + thumb_func_start sub_8113A78 +sub_8113A78: @ 8113A78 + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r1, 0 + ldrh r1, [r3] + ldr r0, _08113AAC @ =0x00000fff + ands r0, r1 + adds r2, r0, 0 + lsrs r4, r1, 12 + cmp r2, 0x21 + bne _08113A8E + movs r4, 0 +_08113A8E: + subs r0, r2, 0x3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x27 + bhi _08113AB4 + str r3, [r5] + ldr r0, _08113AB0 @ =gUnknown_8456AA0 + adds r0, r2, r0 + ldrb r0, [r0] + subs r1, r0, 0x4 + muls r1, r4 + adds r0, r1 + adds r0, r3, r0 + b _08113AB6 + .align 2, 0 +_08113AAC: .4byte 0x00000fff +_08113AB0: .4byte gUnknown_8456AA0 +_08113AB4: + movs r0, 0 +_08113AB6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8113A78 + + thumb_func_start sub_8113ABC +sub_8113ABC: @ 8113ABC + push {lr} + adds r2, r0, 0x4 + ldrh r1, [r0] + ldr r0, _08113AD0 @ =0x00000fff + ands r0, r1 + cmp r0, 0x23 + beq _08113AD8 + ldr r1, _08113AD4 @ =gUnknown_203B04A + movs r0, 0 + b _08113ADE + .align 2, 0 +_08113AD0: .4byte 0x00000fff +_08113AD4: .4byte gUnknown_203B04A +_08113AD8: + ldr r1, _08113AE4 @ =gUnknown_203B04A + ldrb r0, [r2, 0x1] + adds r0, 0x1 +_08113ADE: + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08113AE4: .4byte gUnknown_203B04A + thumb_func_end sub_8113ABC + + thumb_func_start sub_8113AE8 +sub_8113AE8: @ 8113AE8 + push {r4,lr} + adds r4, r0, 0 + cmp r0, 0 + beq _08113AFA + ldr r1, _08113B00 @ =gUnknown_203AF98 + ldrh r0, [r0, 0x2] + ldrh r1, [r1] + cmp r0, r1 + bls _08113B04 +_08113AFA: + movs r0, 0 + b _08113B32 + .align 2, 0 +_08113B00: .4byte gUnknown_203AF98 +_08113B04: + ldr r2, _08113B38 @ =gUnknown_84569F4 + ldrh r1, [r4] + ldr r0, _08113B3C @ =0x00000fff + ands r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + ldr r2, _08113B40 @ =gUnknown_203B044 + ldrh r1, [r4] + strb r1, [r2] + movs r0, 0xF0 + lsls r0, 8 + ands r0, r1 + lsrs r0, 12 + strb r0, [r2, 0x1] + cmp r0, 0 + beq _08113B30 + movs r0, 0x1 + strh r0, [r2, 0x2] +_08113B30: + movs r0, 0x1 +_08113B32: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08113B38: .4byte gUnknown_84569F4 +_08113B3C: .4byte 0x00000fff +_08113B40: .4byte gUnknown_203B044 + thumb_func_end sub_8113AE8 + + thumb_func_start sub_8113B44 +sub_8113B44: @ 8113B44 + push {r4,lr} + adds r2, r0, 0 + ldr r4, _08113B54 @ =gUnknown_203B044 + ldrh r0, [r4, 0x2] + cmp r0, 0 + bne _08113B58 + movs r0, 0 + b _08113B7E + .align 2, 0 +_08113B54: .4byte gUnknown_203B044 +_08113B58: + ldr r1, _08113B84 @ =gUnknown_84569F4 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + lsrs r0, 16 + ldrb r4, [r4, 0x1] + cmp r0, r4 + bls _08113B7C + bl sub_8113B88 +_08113B7C: + movs r0, 0x1 +_08113B7E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08113B84: .4byte gUnknown_84569F4 + thumb_func_end sub_8113B44 + + thumb_func_start sub_8113B88 +sub_8113B88: @ 8113B88 + ldr r1, _08113B90 @ =gUnknown_203B044 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_08113B90: .4byte gUnknown_203B044 + thumb_func_end sub_8113B88 + + thumb_func_start sub_8113B94 +sub_8113B94: @ 8113B94 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + adds r4, r0, 0 + ldr r2, _08113BC0 @ =gUnknown_203B044 + ldrb r1, [r2] + lsls r0, r4, 24 + lsrs r0, 24 + ldr r3, _08113BC4 @ =gUnknown_203AF98 + cmp r1, r0 + bne _08113BB2 + ldrh r1, [r2, 0x2] + ldrh r0, [r3] + cmp r1, r0 + beq _08113BC8 +_08113BB2: + movs r0, 0 + strb r4, [r2] + strb r0, [r2, 0x1] + ldrh r0, [r3] + strh r0, [r2, 0x2] + b _08113BD2 + .align 2, 0 +_08113BC0: .4byte gUnknown_203B044 +_08113BC4: .4byte gUnknown_203AF98 +_08113BC8: + ldrb r0, [r2, 0x1] + cmp r0, 0x4 + bhi _08113BD2 + adds r0, 0x1 + strb r0, [r2, 0x1] +_08113BD2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8113B94 + + thumb_func_start sub_8113BD8 +sub_8113BD8: @ 8113BD8 + ldr r0, _08113BE8 @ =gUnknown_203B049 + movs r1, 0 + strb r1, [r0] + ldr r0, _08113BEC @ =gUnknown_203B04A + strb r1, [r0] + ldr r0, _08113BF0 @ =gUnknown_203B04B + strb r1, [r0] + bx lr + .align 2, 0 +_08113BE8: .4byte gUnknown_203B049 +_08113BEC: .4byte gUnknown_203B04A +_08113BF0: .4byte gUnknown_203B04B + thumb_func_end sub_8113BD8 + + thumb_func_start sub_8113BF4 +sub_8113BF4: @ 8113BF4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08113C14 @ =gUnknown_8456AA0 + adds r0, 0x27 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + beq _08113C18 + movs r0, 0x27 + strh r0, [r4] + adds r0, r4, 0x2 + b _08113C1A + .align 2, 0 +_08113C14: .4byte gUnknown_8456AA0 +_08113C18: + movs r0, 0 +_08113C1A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8113BF4 + + thumb_func_start sub_8113C20 +sub_8113C20: @ 8113C20 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r0, _08113C50 @ =gUnknown_8456AA0 + adds r0, 0x27 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + beq _08113C54 + movs r0, 0xFF + strb r0, [r4, 0x6] + movs r1, 0 + movs r0, 0 + strh r0, [r4, 0x4] + strb r1, [r4] + strb r1, [r4, 0x1] + strb r1, [r4, 0x2] + strb r1, [r4, 0x3] + adds r0, r5, 0x2 + b _08113C56 + .align 2, 0 +_08113C50: .4byte gUnknown_8456AA0 +_08113C54: + movs r0, 0 +_08113C56: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8113C20 + + thumb_func_start sub_8113C5C +sub_8113C5C: @ 8113C5C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r0, _08113C80 @ =gUnknown_8456AA0 + adds r0, 0x29 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + beq _08113C84 + movs r0, 0x29 + strh r0, [r4] + strh r5, [r4, 0x2] + adds r0, r4, 0x4 + b _08113C86 + .align 2, 0 +_08113C80: .4byte gUnknown_8456AA0 +_08113C84: + movs r0, 0 +_08113C86: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8113C5C + + thumb_func_start sub_8113C8C +sub_8113C8C: @ 8113C8C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r0, _08113CBC @ =gUnknown_8456AA0 + adds r0, 0x29 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + beq _08113CC0 + movs r0, 0xFE + strb r0, [r4, 0x6] + ldrh r1, [r5, 0x2] + movs r0, 0 + strh r1, [r4, 0x4] + strb r0, [r4] + strb r0, [r4, 0x1] + strb r0, [r4, 0x2] + strb r0, [r4, 0x3] + adds r0, r5, 0x4 + b _08113CC2 + .align 2, 0 +_08113CBC: .4byte gUnknown_8456AA0 +_08113CC0: + movs r0, 0 +_08113CC2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8113C8C + + thumb_func_start sub_8113CC8 +sub_8113CC8: @ 8113CC8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r4, 0x4 + ldr r0, _08113CFC @ =gUnknown_8456AA0 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + beq _08113D00 + movs r0, 0 + strh r0, [r4] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2] + ldrb r0, [r5] + strb r0, [r4, 0x4] + ldrb r0, [r5, 0x1] + strb r0, [r6, 0x1] + ldrb r0, [r5, 0x2] + strb r0, [r6, 0x2] + ldrb r0, [r5, 0x3] + strb r0, [r6, 0x3] + adds r0, r6, 0x4 + b _08113D02 + .align 2, 0 +_08113CFC: .4byte gUnknown_8456AA0 +_08113D00: + movs r0, 0 +_08113D02: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8113CC8 + + thumb_func_start sub_8113D08 +sub_8113D08: @ 8113D08 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r5, 0x4 + ldr r0, _08113D3C @ =gUnknown_8456AA0 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + beq _08113D40 + movs r0, 0x2 + strb r0, [r4, 0x6] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x4] + ldrb r0, [r5, 0x4] + strb r0, [r4] + ldrb r0, [r6, 0x1] + strb r0, [r4, 0x1] + ldrb r0, [r6, 0x2] + strb r0, [r4, 0x2] + ldrb r0, [r6, 0x3] + strb r0, [r4, 0x3] + adds r0, r6, 0x4 + b _08113D42 + .align 2, 0 +_08113D3C: .4byte gUnknown_8456AA0 +_08113D40: + movs r0, 0 +_08113D42: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8113D08 + + thumb_func_start sub_8113D48 +sub_8113D48: @ 8113D48 + push {r4-r6,lr} + adds r5, r1, 0 + adds r4, r0, 0 + adds r6, r4, 0x4 + ldr r0, _08113D64 @ =gUnknown_8456AA0 + ldrb r1, [r0, 0x2] + adds r0, r4, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + bne _08113D68 + movs r0, 0 + b _08113D8C + .align 2, 0 +_08113D64: .4byte gUnknown_8456AA0 +_08113D68: + ldrb r0, [r5, 0x6] + cmp r0, 0 + bne _08113D72 + movs r0, 0x2 + b _08113D74 +_08113D72: + movs r0, 0x1 +_08113D74: + strh r0, [r4] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2] + ldrb r0, [r5] + strb r0, [r6] + ldrb r0, [r5, 0x1] + strb r0, [r6, 0x1] + ldrb r0, [r5, 0x2] + strb r0, [r6, 0x2] + ldrb r0, [r5, 0x3] + strb r0, [r6, 0x3] + adds r0, r6, 0x4 +_08113D8C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8113D48 + + thumb_func_start sub_8113D94 +sub_8113D94: @ 8113D94 + push {r4-r6,lr} + adds r4, r1, 0 + adds r5, r0, 0 + adds r6, r5, 0x4 + ldr r0, _08113DB0 @ =gUnknown_8456AA0 + ldrb r1, [r0, 0x2] + adds r0, r5, 0 + bl sub_8110988 + lsls r0, 24 + cmp r0, 0 + bne _08113DB4 + movs r0, 0 + b _08113DD8 + .align 2, 0 +_08113DB0: .4byte gUnknown_8456AA0 +_08113DB4: + ldrh r0, [r5] + cmp r0, 0x2 + bne _08113DBE + movs r0, 0 + b _08113DC0 +_08113DBE: + movs r0, 0x1 +_08113DC0: + strb r0, [r4, 0x6] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x4] + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r6, 0x1] + strb r0, [r4, 0x1] + ldrb r0, [r6, 0x2] + strb r0, [r4, 0x2] + ldrb r0, [r6, 0x3] + strb r0, [r4, 0x3] + adds r0, r6, 0x4 +_08113DD8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8113D94 + + thumb_func_start sub_8113DE0 +sub_8113DE0: @ 8113DE0 + push {r4-r7,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08113DF8 @ =gUnknown_203B044 + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _08113E00 + ldr r0, _08113DFC @ =gUnknown_8456AA0 + adds r0, r7, r0 + ldrb r6, [r0] + b _08113E0C + .align 2, 0 +_08113DF8: .4byte gUnknown_203B044 +_08113DFC: .4byte gUnknown_8456AA0 +_08113E00: + ldr r0, _08113E20 @ =gUnknown_8456AA0 + adds r0, r7, r0 + ldrb r0, [r0] + subs r0, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 +_08113E0C: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8110944 + lsls r0, 24 + cmp r0, 0 + bne _08113E24 + movs r0, 0 + b _08113E7C + .align 2, 0 +_08113E20: .4byte gUnknown_8456AA0 +_08113E24: + adds r5, r4, 0 + ldr r2, _08113E60 @ =gUnknown_203B044 + ldrb r1, [r2, 0x1] + cmp r1, 0 + beq _08113E36 + adds r0, r1, 0 + muls r0, r6 + adds r0, 0x4 + subs r5, r0 +_08113E36: + cmp r1, 0x5 + bne _08113E64 + movs r4, 0 +_08113E3C: + adds r0, r4, 0 + muls r0, r6 + adds r0, r5 + adds r0, 0x4 + adds r4, 0x1 + adds r1, r4, 0 + muls r1, r6 + adds r1, r5 + adds r1, 0x4 + adds r2, r6, 0 + bl memcpy + lsls r4, 24 + lsrs r4, 24 + cmp r4, 0x3 + bls _08113E3C + movs r1, 0x4 + b _08113E66 + .align 2, 0 +_08113E60: .4byte gUnknown_203B044 +_08113E64: + ldrb r1, [r2, 0x1] +_08113E66: + lsls r0, r1, 12 + adds r0, r7, r0 + strh r0, [r5] + ldr r0, _08113E84 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r5, 0x2] + adds r0, r1, 0 + muls r0, r6 + adds r0, 0x4 + adds r5, r0 + adds r0, r5, 0 +_08113E7C: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08113E84: .4byte gUnknown_203AF98 + thumb_func_end sub_8113DE0 + + thumb_func_start sub_8113E88 +sub_8113E88: @ 8113E88 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08113EA4 @ =gUnknown_203B044 + ldrh r3, [r2, 0x2] + ldr r2, _08113EA8 @ =gUnknown_8456AA0 + adds r0, r2 + ldrb r0, [r0] + subs r0, 0x4 + muls r0, r3 + adds r0, 0x4 + adds r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_08113EA4: .4byte gUnknown_203B044 +_08113EA8: .4byte gUnknown_8456AA0 + thumb_func_end sub_8113E88 + + thumb_func_start sub_8113EAC +sub_8113EAC: @ 8113EAC + push {r4,r5,lr} + adds r3, r1, 0 + lsls r0, 16 + lsrs r1, r0, 16 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + adds r5, r2, 0 + cmp r3, 0 + beq _08113EE0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _08113ED0 + adds r0, r3, 0 + bl sub_8040FD0 + b _08113F08 +_08113ED0: + ldr r1, _08113EDC @ =gUnknown_8415A62 + adds r0, r3, 0 + bl sub_8008D84 + b _08113F08 + .align 2, 0 +_08113EDC: .4byte gUnknown_8415A62 +_08113EE0: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + beq _08113F00 + movs r0, 0xB + adds r1, r4, 0 + muls r1, r0 + ldr r0, _08113EFC @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r2, 0 + bl sub_813CCAC + b _08113F08 + .align 2, 0 +_08113EFC: .4byte gUnknown_8245EE0 +_08113F00: + ldr r1, _08113F10 @ =gUnknown_8415A62 + adds r0, r5, 0 + bl sub_813CCAC +_08113F08: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08113F10: .4byte gUnknown_8415A62 + thumb_func_end sub_8113EAC + + thumb_func_start sub_8113F14 +sub_8113F14: @ 8113F14 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x3 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08113F34 + ldrh r0, [r4] + strh r0, [r2] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0x2] + adds r0, r2, 0x4 + b _08113F36 +_08113F34: + movs r0, 0 +_08113F36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8113F14 + + thumb_func_start sub_8113F3C +sub_8113F3C: @ 8113F3C + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x3 + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4] + ldr r1, _08113F70 @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldrh r0, [r4, 0x2] + ldr r1, _08113F74 @ =gUnknown_2021CF0 + movs r2, 0 + bl sub_8113EAC + ldr r0, _08113F78 @ =gUnknown_2021D18 + ldr r1, _08113F7C @ =gUnknown_841A16F + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08113F70: .4byte gUnknown_2021CD0 +_08113F74: .4byte gUnknown_2021CF0 +_08113F78: .4byte gUnknown_2021D18 +_08113F7C: .4byte gUnknown_841A16F + thumb_func_end sub_8113F3C + + thumb_func_start sub_8113F80 +sub_8113F80: @ 8113F80 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x4 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + bne _08113F98 + movs r0, 0 + b _08113FB2 +_08113F98: + ldrh r0, [r4] + strh r0, [r2] + ldrh r0, [r4, 0x4] + strh r0, [r2, 0x2] + ldrh r0, [r4, 0x6] + strh r0, [r2, 0x4] + ldrh r0, [r4] + cmp r0, 0x55 + bne _08113FB0 + ldr r1, _08113FB8 @ =gUnknown_203B048 + movs r0, 0x2 + strb r0, [r1] +_08113FB0: + adds r0, r2, 0x6 +_08113FB2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08113FB8: .4byte gUnknown_203B048 + thumb_func_end sub_8113F80 + + thumb_func_start sub_8113FBC +sub_8113FBC: @ 8113FBC + push {r4-r7,lr} + adds r1, r0, 0 + movs r0, 0x4 + bl sub_8113E88 + adds r5, r0, 0 + ldrh r0, [r5] + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x4 + bls _08113FDA + b _0811413C +_08113FDA: + lsls r0, 2 + ldr r1, _08113FE4 @ =_08113FE8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08113FE4: .4byte _08113FE8 + .align 2, 0 +_08113FE8: + .4byte _08113FFC + .4byte _08114074 + .4byte _08113FFC + .4byte _0811409C + .4byte _08113FFC +_08113FFC: + ldr r4, _08114024 @ =gUnknown_2021CD0 + ldrh r0, [r5] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldrh r0, [r5] + cmp r0, 0x55 + bne _08114034 + ldr r0, _08114028 @ =gUnknown_2021CF0 + ldrb r1, [r5, 0x4] + bl sub_80C4DF8 + ldr r0, _0811402C @ =gUnknown_2021D18 + ldr r1, _08114030 @ =gUnknown_841AFA6 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_08114024: .4byte gUnknown_2021CD0 +_08114028: .4byte gUnknown_2021CF0 +_0811402C: .4byte gUnknown_2021D18 +_08114030: .4byte gUnknown_841AFA6 +_08114034: + ldrh r1, [r5, 0x2] + ldr r0, _08114050 @ =0x0000ffff + cmp r1, r0 + beq _08114060 + adds r0, r1, 0 + ldr r1, _08114054 @ =gUnknown_2021CF0 + movs r2, 0 + bl sub_8113EAC + ldr r0, _08114058 @ =gUnknown_2021D18 + ldr r1, _0811405C @ =gUnknown_841A1E7 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_08114050: .4byte 0x0000ffff +_08114054: .4byte gUnknown_2021CF0 +_08114058: .4byte gUnknown_2021D18 +_0811405C: .4byte gUnknown_841A1E7 +_08114060: + ldr r0, _0811406C @ =gUnknown_2021D18 + ldr r1, _08114070 @ =gUnknown_841A210 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_0811406C: .4byte gUnknown_2021D18 +_08114070: .4byte gUnknown_841A210 +_08114074: + ldr r4, _08114090 @ =gUnknown_2021CD0 + ldrh r0, [r5] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, _08114094 @ =gUnknown_2021D18 + ldr r1, _08114098 @ =gUnknown_841A220 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_08114090: .4byte gUnknown_2021CD0 +_08114094: .4byte gUnknown_2021D18 +_08114098: .4byte gUnknown_841A220 +_0811409C: + ldrh r0, [r5, 0x2] + ldr r1, _081140E8 @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldr r4, _081140EC @ =gUnknown_2021CF0 + ldrh r0, [r5] + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + movs r7, 0xD + adds r1, r0, 0 + muls r1, r7 + ldr r6, _081140F0 @ =gUnknown_8247094 + adds r1, r6 + adds r0, r4, 0 + bl sub_8008D84 + ldrh r1, [r5, 0x4] + ldr r0, _081140F4 @ =0x0000ffff + cmp r1, r0 + beq _08114118 + ldr r0, _081140F8 @ =gUnknown_2021D04 + muls r1, r7 + adds r1, r6 + bl sub_8008D84 + ldrh r1, [r5] + movs r0, 0xA9 + lsls r0, 1 + cmp r1, r0 + bls _08114104 + ldr r0, _081140FC @ =gUnknown_2021D18 + ldr r1, _08114100 @ =gUnknown_841A965 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_081140E8: .4byte gUnknown_2021CD0 +_081140EC: .4byte gUnknown_2021CF0 +_081140F0: .4byte gUnknown_8247094 +_081140F4: .4byte 0x0000ffff +_081140F8: .4byte gUnknown_2021D04 +_081140FC: .4byte gUnknown_2021D18 +_08114100: .4byte gUnknown_841A965 +_08114104: + ldr r0, _08114110 @ =gUnknown_2021D18 + ldr r1, _08114114 @ =gUnknown_841A277 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_08114110: .4byte gUnknown_2021D18 +_08114114: .4byte gUnknown_841A277 +_08114118: + ldrh r1, [r5] + movs r0, 0xA9 + lsls r0, 1 + cmp r1, r0 + bls _08114134 + ldr r0, _0811412C @ =gUnknown_2021D18 + ldr r1, _08114130 @ =gUnknown_841A938 + bl sub_8008FCC + b _0811413C + .align 2, 0 +_0811412C: .4byte gUnknown_2021D18 +_08114130: .4byte gUnknown_841A938 +_08114134: + ldr r0, _08114144 @ =gUnknown_2021D18 + ldr r1, _08114148 @ =gUnknown_841A255 + bl sub_8008FCC +_0811413C: + adds r0, r5, 0x6 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08114144: .4byte gUnknown_2021D18 +_08114148: .4byte gUnknown_841A255 + thumb_func_end sub_8113FBC + + thumb_func_start sub_811414C +sub_811414C: @ 811414C + push {r4,lr} + adds r4, r2, 0 + lsls r0, 16 + lsrs r0, 16 + bl sub_8113DE0 + adds r1, r0, 0 + cmp r1, 0 + beq _0811416A + ldrh r0, [r4] + strh r0, [r1] + ldrh r0, [r4, 0x4] + strh r0, [r1, 0x2] + adds r0, r1, 0x4 + b _0811416C +_0811416A: + movs r0, 0 +_0811416C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811414C + + thumb_func_start sub_8114174 +sub_8114174: @ 8114174 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + movs r0, 0x5 + adds r1, r3, 0 + bl sub_811414C + pop {r1} + bx r1 + thumb_func_end sub_8114174 + + thumb_func_start sub_8114188 +sub_8114188: @ 8114188 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x5 + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4, 0x2] + ldr r1, _081141C0 @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldr r5, _081141C4 @ =gUnknown_2021CF0 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, _081141C8 @ =gUnknown_2021D18 + ldr r1, _081141CC @ =gUnknown_841AB74 + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081141C0: .4byte gUnknown_2021CD0 +_081141C4: .4byte gUnknown_2021CF0 +_081141C8: .4byte gUnknown_2021D18 +_081141CC: .4byte gUnknown_841AB74 + thumb_func_end sub_8114188 + + thumb_func_start sub_81141D0 +sub_81141D0: @ 81141D0 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + movs r0, 0x6 + adds r1, r3, 0 + bl sub_811414C + pop {r1} + bx r1 + thumb_func_end sub_81141D0 + + thumb_func_start sub_81141E4 +sub_81141E4: @ 81141E4 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x6 + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4, 0x2] + ldr r1, _0811421C @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldr r5, _08114220 @ =gUnknown_2021CF0 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, _08114224 @ =gUnknown_2021D18 + ldr r1, _08114228 @ =gUnknown_841AB8E + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811421C: .4byte gUnknown_2021CD0 +_08114220: .4byte gUnknown_2021CF0 +_08114224: .4byte gUnknown_2021D18 +_08114228: .4byte gUnknown_841AB8E + thumb_func_end sub_81141E4 + + thumb_func_start sub_811422C +sub_811422C: @ 811422C + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + movs r0, 0x7 + adds r1, r3, 0 + bl sub_811414C + pop {r1} + bx r1 + thumb_func_end sub_811422C + + thumb_func_start sub_8114240 +sub_8114240: @ 8114240 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x7 + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4, 0x2] + ldr r1, _08114278 @ =gUnknown_2021CF0 + movs r2, 0 + bl sub_8113EAC + ldr r5, _0811427C @ =gUnknown_2021CD0 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, _08114280 @ =gUnknown_2021D18 + ldr r1, _08114284 @ =gUnknown_841A6A5 + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114278: .4byte gUnknown_2021CF0 +_0811427C: .4byte gUnknown_2021CD0 +_08114280: .4byte gUnknown_2021D18 +_08114284: .4byte gUnknown_841A6A5 + thumb_func_end sub_8114240 + + thumb_func_start sub_8114288 +sub_8114288: @ 8114288 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + movs r0, 0x8 + adds r1, r3, 0 + bl sub_811414C + pop {r1} + bx r1 + thumb_func_end sub_8114288 + + thumb_func_start sub_811429C +sub_811429C: @ 811429C + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x8 + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4, 0x2] + ldr r1, _081142D4 @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldr r5, _081142D8 @ =gUnknown_2021CF0 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, _081142DC @ =gUnknown_2021D18 + ldr r1, _081142E0 @ =gUnknown_841A1CD + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081142D4: .4byte gUnknown_2021CD0 +_081142D8: .4byte gUnknown_2021CF0 +_081142DC: .4byte gUnknown_2021D18 +_081142E0: .4byte gUnknown_841A1CD + thumb_func_end sub_811429C + + thumb_func_start sub_81142E4 +sub_81142E4: @ 81142E4 + push {r4,lr} + adds r4, r2, 0 + lsls r0, 16 + lsrs r0, 16 + bl sub_8113DE0 + adds r1, r0, 0 + cmp r1, 0 + beq _08114306 + ldrh r0, [r4] + strh r0, [r1] + ldrh r0, [r4, 0x2] + strh r0, [r1, 0x2] + ldrh r0, [r4, 0x4] + strh r0, [r1, 0x4] + adds r0, r1, 0x6 + b _08114308 +_08114306: + movs r0, 0 +_08114308: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81142E4 + + thumb_func_start sub_8114310 +sub_8114310: @ 8114310 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + movs r0, 0x9 + adds r1, r3, 0 + bl sub_81142E4 + pop {r1} + bx r1 + thumb_func_end sub_8114310 + + thumb_func_start sub_8114324 +sub_8114324: @ 8114324 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x9 + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4, 0x4] + ldr r1, _0811436C @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldr r5, _08114370 @ =gUnknown_2021CF0 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r5, _08114374 @ =gUnknown_2021D04 + ldrh r0, [r4, 0x2] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, _08114378 @ =gUnknown_2021D18 + ldr r1, _0811437C @ =gUnknown_841A193 + bl sub_8008FCC + adds r4, 0x6 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811436C: .4byte gUnknown_2021CD0 +_08114370: .4byte gUnknown_2021CF0 +_08114374: .4byte gUnknown_2021D04 +_08114378: .4byte gUnknown_2021D18 +_0811437C: .4byte gUnknown_841A193 + thumb_func_end sub_8114324 + + thumb_func_start sub_8114380 +sub_8114380: @ 8114380 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + movs r0, 0xA + adds r1, r3, 0 + bl sub_81142E4 + pop {r1} + bx r1 + thumb_func_end sub_8114380 + + thumb_func_start sub_8114394 +sub_8114394: @ 8114394 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0xA + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4, 0x4] + ldr r1, _081143DC @ =gUnknown_2021CF0 + movs r2, 0 + bl sub_8113EAC + ldr r5, _081143E0 @ =gUnknown_2021D04 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r5, _081143E4 @ =gUnknown_2021CD0 + ldrh r0, [r4, 0x2] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_8008D84 + ldr r0, _081143E8 @ =gUnknown_2021D18 + ldr r1, _081143EC @ =gUnknown_841A6E1 + bl sub_8008FCC + adds r4, 0x6 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081143DC: .4byte gUnknown_2021CF0 +_081143E0: .4byte gUnknown_2021D04 +_081143E4: .4byte gUnknown_2021CD0 +_081143E8: .4byte gUnknown_2021D18 +_081143EC: .4byte gUnknown_841A6E1 + thumb_func_end sub_8114394 + + thumb_func_start sub_81143F0 +sub_81143F0: @ 81143F0 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + ldr r1, _08114408 @ =gUnknown_203B044 + ldrb r0, [r1] + cmp r0, 0xB + bne _0811440C + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0811440C + adds r0, r4, 0 + b _08114436 + .align 2, 0 +_08114408: .4byte gUnknown_203B044 +_0811440C: + ldr r0, _0811442C @ =gUnknown_8456AA0 + ldrb r1, [r0, 0xB] + adds r0, r2, 0 + bl sub_8110944 + lsls r0, 24 + cmp r0, 0 + beq _08114434 + movs r0, 0xB + strh r0, [r4] + ldr r0, _08114430 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] + adds r0, r4, 0x4 + b _08114436 + .align 2, 0 +_0811442C: .4byte gUnknown_8456AA0 +_08114430: .4byte gUnknown_203AF98 +_08114434: + movs r0, 0 +_08114436: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81143F0 + + thumb_func_start sub_811443C +sub_811443C: @ 811443C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08114454 @ =gUnknown_2021D18 + ldr r1, _08114458 @ =gUnknown_841A2B0 + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114454: .4byte gUnknown_2021D18 +_08114458: .4byte gUnknown_841A2B0 + thumb_func_end sub_811443C + + thumb_func_start sub_811445C +sub_811445C: @ 811445C + push {r4,lr} + adds r4, r0, 0 + adds r4, 0x8 + movs r2, 0xC + strh r2, [r0] + ldr r2, _08114488 @ =gUnknown_203AF98 + ldrh r2, [r2] + strh r2, [r0, 0x2] + ldrh r2, [r1] + strh r2, [r0, 0x4] + ldrh r2, [r1, 0x2] + strh r2, [r0, 0x6] + adds r1, 0x4 + adds r0, r4, 0 + movs r2, 0x7 + bl memcpy + adds r4, 0x8 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114488: .4byte gUnknown_203AF98 + thumb_func_end sub_811445C + + thumb_func_start sub_811448C +sub_811448C: @ 811448C + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r5, 0 + adds r6, 0x8 + ldr r4, _081144D8 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + bl sub_8115834 + ldrh r0, [r5, 0x6] + ldr r1, _081144DC @ =gUnknown_2021CF0 + movs r2, 0 + bl sub_8113EAC + ldrh r0, [r5, 0x4] + ldr r1, _081144E0 @ =gUnknown_2021D04 + movs r2, 0 + bl sub_8113EAC + ldr r0, _081144E4 @ =gUnknown_2021D18 + ldr r1, _081144E8 @ =gUnknown_841A3FF + bl sub_8008FCC + adds r6, 0x8 + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081144D8: .4byte gUnknown_2021CD0 +_081144DC: .4byte gUnknown_2021CF0 +_081144E0: .4byte gUnknown_2021D04 +_081144E4: .4byte gUnknown_2021D18 +_081144E8: .4byte gUnknown_841A3FF + thumb_func_end sub_811448C + + thumb_func_start sub_81144EC +sub_81144EC: @ 81144EC + push {r4,lr} + adds r4, r0, 0 + movs r0, 0xD + strh r0, [r4] + ldr r0, _08114514 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] + ldrb r0, [r1] + strb r0, [r4, 0x4] + adds r0, r4, 0x5 + adds r1, 0x1 + movs r2, 0x7 + bl memcpy + adds r4, 0xC + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114514: .4byte gUnknown_203AF98 + thumb_func_end sub_81144EC + + thumb_func_start sub_8114518 +sub_8114518: @ 8114518 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_813CC90 + ldr r4, _08114568 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + adds r1, r5, 0x5 + adds r0, r4, 0 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + bl sub_8115834 + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldr r1, _0811456C @ =gUnknown_8456AE4 + ldrb r0, [r5, 0x4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x1 + bl sub_813CCAC + ldr r0, _08114570 @ =gUnknown_2021D18 + ldr r1, _08114574 @ =gUnknown_841A422 + bl sub_813CCC8 + adds r5, 0xC + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114568: .4byte gUnknown_2021CD0 +_0811456C: .4byte gUnknown_8456AE4 +_08114570: .4byte gUnknown_2021D18 +_08114574: .4byte gUnknown_841A422 + thumb_func_end sub_8114518 + + thumb_func_start sub_8114578 +sub_8114578: @ 8114578 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0xE + strh r0, [r4] + ldr r0, _081145A0 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] + ldrb r0, [r1] + strb r0, [r4, 0x4] + adds r0, r4, 0x5 + adds r1, 0x1 + movs r2, 0x7 + bl memcpy + adds r4, 0xC + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081145A0: .4byte gUnknown_203AF98 + thumb_func_end sub_8114578 + + thumb_func_start sub_81145A4 +sub_81145A4: @ 81145A4 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_813CC90 + ldr r4, _081145F4 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + adds r1, r5, 0x5 + adds r0, r4, 0 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + bl sub_8115834 + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldr r1, _081145F8 @ =gUnknown_8456AE4 + ldrb r0, [r5, 0x4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x1 + bl sub_813CCAC + ldr r0, _081145FC @ =gUnknown_2021D18 + ldr r1, _08114600 @ =gUnknown_841A477 + bl sub_813CCC8 + adds r5, 0xC + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081145F4: .4byte gUnknown_2021CD0 +_081145F8: .4byte gUnknown_8456AE4 +_081145FC: .4byte gUnknown_2021D18 +_08114600: .4byte gUnknown_841A477 + thumb_func_end sub_81145A4 + + thumb_func_start sub_8114604 +sub_8114604: @ 8114604 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0xF + strh r0, [r4] + ldr r0, _08114648 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] + ldrb r0, [r5] + strb r0, [r4, 0x4] + adds r0, r4, 0x5 + adds r1, r5, 0x1 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + adds r0, 0xC + adds r1, r5, 0 + adds r1, 0x8 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + adds r0, 0x13 + adds r5, 0xF + adds r1, r5, 0 + movs r2, 0x7 + bl memcpy + adds r4, 0x1A + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114648: .4byte gUnknown_203AF98 + thumb_func_end sub_8114604 + + thumb_func_start sub_811464C +sub_811464C: @ 811464C + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + bl sub_813CC90 + ldr r0, _081146F4 @ =gUnknown_2021CD0 + mov r8, r0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + ldr r6, _081146F8 @ =gUnknown_2021CF0 + adds r0, r6, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + ldr r5, _081146FC @ =gUnknown_2021D04 + adds r0, r5, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + adds r1, r4, 0x5 + mov r0, r8 + bl sub_8008D54 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r6, 0 + bl sub_8008D54 + adds r1, r4, 0 + adds r1, 0x13 + adds r0, r5, 0 + bl sub_8008D54 + mov r0, r8 + bl sub_8115834 + adds r0, r6, 0 + bl sub_8115834 + adds r0, r5, 0 + bl sub_8115834 + ldr r0, _08114700 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + movs r0, 0x1 + mov r1, r8 + bl sub_813CCAC + movs r0, 0x2 + adds r1, r6, 0 + bl sub_813CCAC + movs r0, 0x3 + adds r1, r5, 0 + bl sub_813CCAC + ldr r1, _08114704 @ =gUnknown_8456AE4 + ldrb r0, [r4, 0x4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x4 + bl sub_813CCAC + ldr r0, _08114708 @ =gUnknown_2021D18 + ldr r1, _0811470C @ =gUnknown_841A4C6 + bl sub_813CCC8 + adds r4, 0x1A + adds r0, r4, 0 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081146F4: .4byte gUnknown_2021CD0 +_081146F8: .4byte gUnknown_2021CF0 +_081146FC: .4byte gUnknown_2021D04 +_08114700: .4byte gUnknown_300500C +_08114704: .4byte gUnknown_8456AE4 +_08114708: .4byte gUnknown_2021D18 +_0811470C: .4byte gUnknown_841A4C6 + thumb_func_end sub_811464C + + thumb_func_start sub_8114710 +sub_8114710: @ 8114710 + movs r1, 0x10 + strh r1, [r0] + ldr r1, _08114720 @ =gUnknown_203AF98 + ldrh r1, [r1] + strh r1, [r0, 0x2] + adds r0, 0x4 + bx lr + .align 2, 0 +_08114720: .4byte gUnknown_203AF98 + thumb_func_end sub_8114710 + + thumb_func_start sub_8114724 +sub_8114724: @ 8114724 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0811473C @ =gUnknown_2021D18 + ldr r1, _08114740 @ =gUnknown_841A50B + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811473C: .4byte gUnknown_2021D18 +_08114740: .4byte gUnknown_841A50B + thumb_func_end sub_8114724 + + thumb_func_start sub_8114744 +sub_8114744: @ 8114744 + movs r1, 0x11 + strh r1, [r0] + ldr r1, _08114754 @ =gUnknown_203AF98 + ldrh r1, [r1] + strh r1, [r0, 0x2] + adds r0, 0x4 + bx lr + .align 2, 0 +_08114754: .4byte gUnknown_203AF98 + thumb_func_end sub_8114744 + + thumb_func_start sub_8114758 +sub_8114758: @ 8114758 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08114770 @ =gUnknown_2021D18 + ldr r1, _08114774 @ =gUnknown_841A732 + bl sub_8008FCC + adds r4, 0x4 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114770: .4byte gUnknown_2021D18 +_08114774: .4byte gUnknown_841A732 + thumb_func_end sub_8114758 + + thumb_func_start sub_8114778 +sub_8114778: @ 8114778 + push {r4,lr} + adds r4, r0, 0 + adds r4, 0x8 + movs r2, 0x12 + strh r2, [r0] + ldr r2, _081147A4 @ =gUnknown_203AF98 + ldrh r2, [r2] + strh r2, [r0, 0x2] + ldrh r2, [r1] + strh r2, [r0, 0x4] + ldrh r2, [r1, 0x2] + strh r2, [r0, 0x6] + adds r1, 0x4 + adds r0, r4, 0 + movs r2, 0x7 + bl memcpy + adds r4, 0x8 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081147A4: .4byte gUnknown_203AF98 + thumb_func_end sub_8114778 + + thumb_func_start sub_81147A8 +sub_81147A8: @ 81147A8 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r5, 0 + adds r6, 0x8 + ldr r4, _081147F4 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + bl sub_8115834 + ldrh r0, [r5, 0x6] + ldr r1, _081147F8 @ =gUnknown_2021CF0 + movs r2, 0 + bl sub_8113EAC + ldrh r0, [r5, 0x4] + ldr r1, _081147FC @ =gUnknown_2021D04 + movs r2, 0 + bl sub_8113EAC + ldr r0, _08114800 @ =gUnknown_2021D18 + ldr r1, _08114804 @ =gUnknown_841A76A + bl sub_8008FCC + adds r6, 0x8 + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081147F4: .4byte gUnknown_2021CD0 +_081147F8: .4byte gUnknown_2021CF0 +_081147FC: .4byte gUnknown_2021D04 +_08114800: .4byte gUnknown_2021D18 +_08114804: .4byte gUnknown_841A76A + thumb_func_end sub_81147A8 + + thumb_func_start sub_8114808 +sub_8114808: @ 8114808 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x13 + strh r0, [r4] + ldr r0, _08114830 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] + ldrb r0, [r1] + strb r0, [r4, 0x4] + adds r0, r4, 0x5 + adds r1, 0x1 + movs r2, 0x7 + bl memcpy + adds r4, 0xC + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114830: .4byte gUnknown_203AF98 + thumb_func_end sub_8114808 + + thumb_func_start sub_8114834 +sub_8114834: @ 8114834 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08114878 @ =gUnknown_2021CD0 + adds r0, r4, 0 + movs r1, 0xFF + movs r2, 0x8 + bl memset + adds r1, r5, 0x5 + adds r0, r4, 0 + movs r2, 0x7 + bl memcpy + adds r0, r4, 0 + bl sub_8115834 + ldr r0, _0811487C @ =gUnknown_2021CF0 + ldr r2, _08114880 @ =gUnknown_8456AE4 + ldrb r1, [r5, 0x4] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _08114884 @ =gUnknown_2021D18 + ldr r1, _08114888 @ =gUnknown_841A7B0 + bl sub_8008FCC + adds r5, 0xC + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114878: .4byte gUnknown_2021CD0 +_0811487C: .4byte gUnknown_2021CF0 +_08114880: .4byte gUnknown_8456AE4 +_08114884: .4byte gUnknown_2021D18 +_08114888: .4byte gUnknown_841A7B0 + thumb_func_end sub_8114834 + + thumb_func_start sub_811488C +sub_811488C: @ 811488C + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x14 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _081148B4 + ldrh r0, [r4] + strh r0, [r2] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0x2] + ldrb r0, [r4, 0x4] + strb r0, [r2, 0x4] + ldrb r0, [r4, 0x5] + strb r0, [r2, 0x5] + adds r0, r2, 0x6 + b _081148B6 +_081148B4: + movs r0, 0 +_081148B6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811488C + + thumb_func_start sub_81148BC +sub_81148BC: @ 81148BC + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x14 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x4 + bl sub_813CC90 + ldrb r0, [r4, 0x4] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldrb r0, [r5, 0x1] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0x2 + bl sub_813CCAC + ldrh r0, [r4, 0x2] + movs r1, 0 + movs r2, 0x3 + bl sub_8113EAC + ldr r0, _08114910 @ =gUnknown_2021D18 + ldr r1, _08114914 @ =gUnknown_841A566 + bl sub_813CCC8 + adds r4, 0x6 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114910: .4byte gUnknown_2021D18 +_08114914: .4byte gUnknown_841A566 + thumb_func_end sub_81148BC + + thumb_func_start sub_8114918 +sub_8114918: @ 8114918 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x15 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _0811493C + ldrh r0, [r4] + strh r0, [r2] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0x2] + ldrb r0, [r4, 0x4] + strb r0, [r2, 0x4] + adds r0, r2, 0x6 + b _0811493E +_0811493C: + movs r0, 0 +_0811493E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114918 + + thumb_func_start sub_8114944 +sub_8114944: @ 8114944 + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x15 + bl sub_8113E88 + adds r4, r0, 0 + bl sub_813CC90 + ldrb r0, [r4, 0x4] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldrh r0, [r4, 0x2] + movs r1, 0 + movs r2, 0x2 + bl sub_8113EAC + ldr r0, _08114988 @ =gUnknown_2021D18 + ldr r1, _0811498C @ =gUnknown_841A5D9 + bl sub_813CCC8 + adds r4, 0x6 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114988: .4byte gUnknown_2021D18 +_0811498C: .4byte gUnknown_841A5D9 + thumb_func_end sub_8114944 + + thumb_func_start sub_8114990 +sub_8114990: @ 8114990 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x16 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + bne _081149A8 + movs r0, 0 + b _081149CA +_081149A8: + adds r1, r2, 0x4 + ldrb r0, [r4, 0x4] + cmp r0, 0xE + bne _081149BC + ldrh r0, [r4, 0x2] + strh r0, [r2] + ldrh r0, [r4] + strh r0, [r2, 0x2] + ldrb r0, [r4, 0x5] + b _081149C6 +_081149BC: + ldrh r0, [r4] + strh r0, [r2] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0x2] + ldrb r0, [r4, 0x4] +_081149C6: + strb r0, [r2, 0x4] + adds r0, r1, 0x2 +_081149CA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114990 + + thumb_func_start sub_81149D0 +sub_81149D0: @ 81149D0 + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x16 + bl sub_8113E88 + adds r4, r0, 0 + bl sub_813CC90 + ldrb r0, [r4, 0x4] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldrh r0, [r4, 0x2] + movs r1, 0 + movs r2, 0x2 + bl sub_8113EAC + ldr r0, _08114A14 @ =gUnknown_2021D18 + ldr r1, _08114A18 @ =gUnknown_841A60A + bl sub_813CCC8 + adds r4, 0x6 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114A14: .4byte gUnknown_2021D18 +_08114A18: .4byte gUnknown_841A60A + thumb_func_end sub_81149D0 + + thumb_func_start sub_8114A1C +sub_8114A1C: @ 8114A1C + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x17 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114A42 + ldrh r0, [r4] + strh r0, [r2] + adds r0, r2, 0x2 + ldrb r1, [r4, 0x4] + strb r1, [r2, 0x2] + ldrb r1, [r4, 0x5] + strb r1, [r0, 0x1] + adds r0, 0x2 + b _08114A44 +_08114A42: + movs r0, 0 +_08114A44: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114A1C + + thumb_func_start sub_8114A4C +sub_8114A4C: @ 8114A4C + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x17 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x2 + bl sub_813CC90 + ldrb r0, [r4, 0x2] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldrb r0, [r5, 0x1] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0x2 + bl sub_813CCAC + ldr r0, _08114A98 @ =gUnknown_2021D18 + ldr r1, _08114A9C @ =gUnknown_841A59C + bl sub_813CCC8 + adds r5, 0x2 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114A98: .4byte gUnknown_2021D18 +_08114A9C: .4byte gUnknown_841A59C + thumb_func_end sub_8114A4C + + thumb_func_start sub_8114AA0 +sub_8114AA0: @ 8114AA0 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x18 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114AC0 + ldrh r0, [r4] + strh r0, [r2] + ldrb r0, [r4, 0x4] + strb r0, [r2, 0x2] + adds r0, r2, 0x4 + b _08114AC2 +_08114AC0: + movs r0, 0 +_08114AC2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114AA0 + + thumb_func_start sub_8114AC8 +sub_8114AC8: @ 8114AC8 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x18 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x2 + bl sub_813CC90 + ldrb r0, [r4, 0x2] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldr r0, _08114B04 @ =gUnknown_2021D18 + ldr r1, _08114B08 @ =gUnknown_841A5FA + bl sub_813CCC8 + adds r5, 0x2 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114B04: .4byte gUnknown_2021D18 +_08114B08: .4byte gUnknown_841A5FA + thumb_func_end sub_8114AC8 + + thumb_func_start sub_8114B0C +sub_8114B0C: @ 8114B0C + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x19 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114B2C + ldrh r0, [r4] + strh r0, [r2] + ldrb r0, [r4, 0x4] + strb r0, [r2, 0x2] + adds r0, r2, 0x4 + b _08114B2E +_08114B2C: + movs r0, 0 +_08114B2E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114B0C + + thumb_func_start sub_8114B34 +sub_8114B34: @ 8114B34 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x19 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x2 + bl sub_813CC90 + ldrb r0, [r4, 0x2] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldr r0, _08114B70 @ =gUnknown_2021D18 + ldr r1, _08114B74 @ =gUnknown_841A632 + bl sub_813CCC8 + adds r5, 0x2 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114B70: .4byte gUnknown_2021D18 +_08114B74: .4byte gUnknown_841A632 + thumb_func_end sub_8114B34 + + thumb_func_start sub_8114B78 +sub_8114B78: @ 8114B78 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x1A + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114B98 + ldrh r0, [r4] + strh r0, [r2] + ldrb r0, [r4, 0x4] + strb r0, [r2, 0x2] + adds r0, r2, 0x4 + b _08114B9A +_08114B98: + movs r0, 0 +_08114B9A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114B78 + + thumb_func_start sub_8114BA0 +sub_8114BA0: @ 8114BA0 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x1A + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x2 + bl sub_813CC90 + ldrh r0, [r4] + movs r1, 0 + movs r2, 0 + bl sub_8113EAC + ldrb r0, [r4, 0x2] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC + ldr r0, _08114BDC @ =gUnknown_2021D18 + ldr r1, _08114BE0 @ =gUnknown_841A64F + bl sub_813CCC8 + adds r5, 0x2 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08114BDC: .4byte gUnknown_2021D18 +_08114BE0: .4byte gUnknown_841A64F + thumb_func_end sub_8114BA0 + + thumb_func_start sub_8114BE4 +sub_8114BE4: @ 8114BE4 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x1B + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114C04 + ldrb r0, [r4, 0x4] + strb r0, [r2] + ldrb r0, [r4, 0x5] + strb r0, [r2, 0x1] + adds r0, r2, 0x2 + b _08114C06 +_08114C04: + movs r0, 0 +_08114C06: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114BE4 + + thumb_func_start sub_8114C0C +sub_8114C0C: @ 8114C0C + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x1B + bl sub_8113E88 + adds r4, r0, 0 + bl sub_813CC90 + ldrb r0, [r4] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + cmp r0, r1 + bne _08114C40 + ldr r1, _08114C3C @ =gUnknown_841A694 + movs r0, 0x1 + bl sub_813CCAC + b _08114C4E + .align 2, 0 +_08114C3C: .4byte gUnknown_841A694 +_08114C40: + ldrb r0, [r4, 0x1] + bl sub_808BD6C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC +_08114C4E: + ldr r0, _08114C60 @ =gUnknown_2021D18 + ldr r1, _08114C64 @ =gUnknown_841A66E + bl sub_813CCC8 + adds r0, r4, 0x2 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114C60: .4byte gUnknown_2021D18 +_08114C64: .4byte gUnknown_841A66E + thumb_func_end sub_8114C0C + + thumb_func_start sub_8114C68 +sub_8114C68: @ 8114C68 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x1C + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114C84 + ldrh r0, [r4] + strh r0, [r2] + adds r0, r2, 0x2 + b _08114C86 +_08114C84: + movs r0, 0 +_08114C86: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114C68 + + thumb_func_start sub_8114C8C +sub_8114C8C: @ 8114C8C + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x1C + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4] + ldr r1, _08114CB4 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r0, _08114CB8 @ =gUnknown_2021D18 + ldr r1, _08114CBC @ =gUnknown_841A391 + bl sub_8008FCC + adds r4, 0x2 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114CB4: .4byte gUnknown_2021CD0 +_08114CB8: .4byte gUnknown_2021D18 +_08114CBC: .4byte gUnknown_841A391 + thumb_func_end sub_8114C8C + + thumb_func_start sub_8114CC0 +sub_8114CC0: @ 8114CC0 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x1D + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _08114CDC + ldrh r0, [r4] + strh r0, [r2] + adds r0, r2, 0x2 + b _08114CDE +_08114CDC: + movs r0, 0 +_08114CDE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114CC0 + + thumb_func_start sub_8114CE4 +sub_8114CE4: @ 8114CE4 + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x1D + bl sub_8113E88 + adds r4, r0, 0 + ldrh r0, [r4] + ldr r1, _08114D0C @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r0, _08114D10 @ =gUnknown_2021D18 + ldr r1, _08114D14 @ =gUnknown_841A3DA + bl sub_8008FCC + adds r4, 0x2 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08114D0C: .4byte gUnknown_2021CD0 +_08114D10: .4byte gUnknown_2021D18 +_08114D14: .4byte gUnknown_841A3DA + thumb_func_end sub_8114CE4 + + thumb_func_start sub_8114D18 +sub_8114D18: @ 8114D18 + push {r4,lr} + adds r4, r2, 0 + lsls r0, 16 + lsrs r0, 16 + bl sub_8113DE0 + adds r1, r0, 0 + cmp r1, 0 + beq _08114D44 + ldrh r0, [r4, 0x2] + strh r0, [r1] + ldrh r0, [r4, 0x4] + strh r0, [r1, 0x2] + ldrh r0, [r4] + strh r0, [r1, 0x4] + ldrb r0, [r4, 0x7] + strb r0, [r1, 0x6] + ldrb r0, [r4, 0x6] + strb r0, [r1, 0x7] + adds r0, r1, 0 + adds r0, 0x8 + b _08114D46 +_08114D44: + movs r0, 0 +_08114D46: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8114D18 + + thumb_func_start sub_8114D4C +sub_8114D4C: @ 8114D4C + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r1, _08114D64 @ =gUnknown_203B048 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1E + adds r1, r3, 0 + bl sub_8114D18 + pop {r1} + bx r1 + .align 2, 0 +_08114D64: .4byte gUnknown_203B048 + thumb_func_end sub_8114D4C + + thumb_func_start sub_8114D68 +sub_8114D68: @ 8114D68 + push {r4-r6,lr} + adds r1, r0, 0 + movs r0, 0x1E + bl sub_8113E88 + adds r4, r0, 0 + adds r6, r4, 0x6 + bl sub_813CC90 + ldr r5, _08114DD4 @ =gUnknown_2021CD0 + ldrb r1, [r4, 0x6] + adds r0, r5, 0 + bl sub_80C4DF8 + movs r0, 0 + adds r1, r5, 0 + bl sub_813CCAC + ldrh r0, [r4, 0x4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08114DD8 @ =gUnknown_823EACC + adds r1, r0 + movs r0, 0x1 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x2 + bl sub_8113EAC + ldrh r0, [r4, 0x2] + movs r1, 0 + movs r2, 0x3 + bl sub_8113EAC + ldr r1, _08114DDC @ =gUnknown_8456ACC + ldrb r0, [r6, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x4 + bl sub_813CCAC + ldr r0, _08114DE0 @ =gUnknown_2021D18 + ldr r1, _08114DE4 @ =gUnknown_841AF0C + bl sub_813CCC8 + adds r4, 0x8 + adds r0, r4, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08114DD4: .4byte gUnknown_2021CD0 +_08114DD8: .4byte gUnknown_823EACC +_08114DDC: .4byte gUnknown_8456ACC +_08114DE0: .4byte gUnknown_2021D18 +_08114DE4: .4byte gUnknown_841AF0C + thumb_func_end sub_8114D68 + + thumb_func_start sub_8114DE8 +sub_8114DE8: @ 8114DE8 + push {r4-r6,lr} + adds r6, r1, 0 + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x8 + ldr r0, _08114E08 @ =gUnknown_8456AA0 + ldrb r1, [r0, 0x1F] + adds r0, r4, 0 + bl sub_8110944 + lsls r0, 24 + cmp r0, 0 + bne _08114E0C + movs r0, 0 + b _08114E5E + .align 2, 0 +_08114E08: .4byte gUnknown_8456AA0 +_08114E0C: + ldrb r0, [r4, 0x8] + cmp r0, 0 + bne _08114E22 + ldrb r0, [r5, 0x1] + cmp r0, 0 + bne _08114E22 + movs r0, 0x1F + strh r0, [r4] + ldr r0, _08114E64 @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] +_08114E22: + ldrh r0, [r6] + adds r2, r0, 0 + cmp r2, 0 + beq _08114E2C + strh r0, [r4, 0x4] +_08114E2C: + ldrh r0, [r6, 0x2] + adds r1, r0, 0 + cmp r1, 0 + beq _08114E36 + strh r1, [r4, 0x6] +_08114E36: + cmp r2, 0 + beq _08114E46 + ldrb r2, [r5] + adds r0, r2, 0 + cmp r0, 0xFF + beq _08114E46 + adds r0, r2, 0x1 + strb r0, [r5] +_08114E46: + lsls r0, r1, 16 + cmp r0, 0 + beq _08114E58 + ldrb r1, [r5, 0x1] + adds r0, r1, 0 + cmp r0, 0xFF + beq _08114E58 + adds r0, r1, 0x1 + strb r0, [r5, 0x1] +_08114E58: + ldrb r0, [r6, 0x4] + strb r0, [r5, 0x2] + adds r0, r5, 0x4 +_08114E5E: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08114E64: .4byte gUnknown_203AF98 + thumb_func_end sub_8114DE8 + + thumb_func_start sub_8114E68 +sub_8114E68: @ 8114E68 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _08114E80 @ =gUnknown_8456AA0 + ldrb r1, [r0, 0x1F] + adds r0, r5, 0 + bl sub_8110944 + lsls r0, 24 + cmp r0, 0 + bne _08114E84 + movs r0, 0 + b _08114FAE + .align 2, 0 +_08114E80: .4byte gUnknown_8456AA0 +_08114E84: + adds r6, r5, 0 + adds r6, 0x8 + bl sub_813CC90 + ldr r4, _08114F00 @ =gUnknown_2021CD0 + ldrb r1, [r6, 0x2] + adds r0, r4, 0 + bl sub_80C4DF8 + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldrh r0, [r5, 0x4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldr r4, _08114F04 @ =gUnknown_2021CF0 + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_813CCAC + ldrh r0, [r5, 0x6] + movs r1, 0 + movs r2, 0x3 + bl sub_8113EAC + ldr r4, _08114F08 @ =gUnknown_2021D04 + ldrb r1, [r6, 0x1] + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x4 + adds r1, r4, 0 + bl sub_813CCAC + ldr r0, _08114F0C @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0x5 + bl sub_813CCAC + ldrb r0, [r5, 0x8] + cmp r0, 0 + bne _08114F2C + ldrb r0, [r6, 0x1] + cmp r0, 0x1 + bne _08114F18 + ldr r0, _08114F10 @ =gUnknown_2021D18 + ldr r1, _08114F14 @ =gUnknown_841AA01 + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F00: .4byte gUnknown_2021CD0 +_08114F04: .4byte gUnknown_2021CF0 +_08114F08: .4byte gUnknown_2021D04 +_08114F0C: .4byte gUnknown_300500C +_08114F10: .4byte gUnknown_2021D18 +_08114F14: .4byte gUnknown_841AA01 +_08114F18: + ldr r0, _08114F24 @ =gUnknown_2021D18 + ldr r1, _08114F28 @ =gUnknown_841AA2B + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F24: .4byte gUnknown_2021D18 +_08114F28: .4byte gUnknown_841AA2B +_08114F2C: + ldrb r1, [r6, 0x1] + cmp r1, 0 + bne _08114F5C + cmp r0, 0x1 + bne _08114F48 + ldr r0, _08114F40 @ =gUnknown_2021D18 + ldr r1, _08114F44 @ =gUnknown_841A9A9 + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F40: .4byte gUnknown_2021D18 +_08114F44: .4byte gUnknown_841A9A9 +_08114F48: + ldr r0, _08114F54 @ =gUnknown_2021D18 + ldr r1, _08114F58 @ =gUnknown_841A9D4 + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F54: .4byte gUnknown_2021D18 +_08114F58: .4byte gUnknown_841A9D4 +_08114F5C: + cmp r0, 0x1 + bne _08114F8C + cmp r1, 0x1 + bne _08114F78 + ldr r0, _08114F70 @ =gUnknown_2021D18 + ldr r1, _08114F74 @ =gUnknown_841AA76 + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F70: .4byte gUnknown_2021D18 +_08114F74: .4byte gUnknown_841AA76 +_08114F78: + ldr r0, _08114F84 @ =gUnknown_2021D18 + ldr r1, _08114F88 @ =gUnknown_841AAAA + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F84: .4byte gUnknown_2021D18 +_08114F88: .4byte gUnknown_841AAAA +_08114F8C: + cmp r1, 0x1 + bne _08114FA4 + ldr r0, _08114F9C @ =gUnknown_2021D18 + ldr r1, _08114FA0 @ =gUnknown_841AAEC + bl sub_813CCC8 + b _08114FAC + .align 2, 0 +_08114F9C: .4byte gUnknown_2021D18 +_08114FA0: .4byte gUnknown_841AAEC +_08114FA4: + ldr r0, _08114FB4 @ =gUnknown_2021D18 + ldr r1, _08114FB8 @ =gUnknown_841AB29 + bl sub_813CCC8 +_08114FAC: + adds r0, r6, 0x4 +_08114FAE: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08114FB4: .4byte gUnknown_2021D18 +_08114FB8: .4byte gUnknown_841AB29 + thumb_func_end sub_8114E68 + + thumb_func_start sub_8114FBC +sub_8114FBC: @ 8114FBC + push {lr} + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0x96 + beq _08114FE6 + cmp r0, 0x96 + bgt _08114FD6 + cmp r0, 0x92 + bgt _08114FEA + cmp r0, 0x8F + blt _08114FEA + b _08114FE6 +_08114FD6: + cmp r1, 0xF9 + blt _08114FEA + cmp r1, 0xFA + ble _08114FE6 + movs r0, 0xCD + lsls r0, 1 + cmp r1, r0 + bne _08114FEA +_08114FE6: + movs r0, 0x1 + b _08114FEC +_08114FEA: + movs r0, 0 +_08114FEC: + pop {r1} + bx r1 + thumb_func_end sub_8114FBC + + thumb_func_start sub_8114FF0 +sub_8114FF0: @ 8114FF0 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r1, _08115008 @ =gUnknown_203B048 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x20 + adds r1, r3, 0 + bl sub_8114D18 + pop {r1} + bx r1 + .align 2, 0 +_08115008: .4byte gUnknown_203B048 + thumb_func_end sub_8114FF0 + + thumb_func_start sub_811500C +sub_811500C: @ 811500C + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x20 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x6 + bl sub_813CC90 + ldrh r0, [r4, 0x4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08115068 @ =gUnknown_823EACC + adds r1, r0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldrh r0, [r4, 0x2] + movs r1, 0 + movs r2, 0x2 + bl sub_8113EAC + ldr r1, _0811506C @ =gUnknown_8456ACC + ldrb r0, [r5, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x3 + bl sub_813CCAC + ldr r0, _08115070 @ =gUnknown_2021D18 + ldr r1, _08115074 @ =gUnknown_841AF3E + bl sub_813CCC8 + adds r4, 0x8 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08115068: .4byte gUnknown_823EACC +_0811506C: .4byte gUnknown_8456ACC +_08115070: .4byte gUnknown_2021D18 +_08115074: .4byte gUnknown_841AF3E + thumb_func_end sub_811500C + + thumb_func_start sub_8115078 +sub_8115078: @ 8115078 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _081150B4 @ =gUnknown_8456AA0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8110944 + lsls r0, 24 + cmp r0, 0 + beq _081150C4 + ldr r1, _081150B8 @ =0x00002021 + adds r0, r1, 0 + strh r0, [r4] + ldr r0, _081150BC @ =gUnknown_203AF98 + ldrh r0, [r0] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x4] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x6] + ldrb r0, [r5, 0x6] + strb r0, [r4, 0x8] + ldr r1, _081150C0 @ =gUnknown_203B048 + movs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + adds r0, 0xA + b _081150C6 + .align 2, 0 +_081150B4: .4byte gUnknown_8456AA0 +_081150B8: .4byte 0x00002021 +_081150BC: .4byte gUnknown_203AF98 +_081150C0: .4byte gUnknown_203B048 +_081150C4: + movs r0, 0 +_081150C6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8115078 + + thumb_func_start sub_81150CC +sub_81150CC: @ 81150CC + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _081150E8 @ =gUnknown_8456AA0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8110944 + lsls r0, 24 + cmp r0, 0 + bne _081150EC + movs r0, 0 + b _081151AE + .align 2, 0 +_081150E8: .4byte gUnknown_8456AA0 +_081150EC: + adds r5, r4, 0 + adds r5, 0x8 + bl sub_813CC90 + ldr r0, _08115108 @ =gUnknown_203B044 + ldrh r0, [r0, 0x2] + cmp r0, 0x1 + beq _08115148 + cmp r0, 0x1 + bgt _0811510C + cmp r0, 0 + beq _08115112 + b _081151AC + .align 2, 0 +_08115108: .4byte gUnknown_203B044 +_0811510C: + cmp r0, 0x2 + beq _08115194 + b _081151AC +_08115112: + ldr r0, _08115134 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + ldr r0, _08115138 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _0811513C @ =0x00003a4c + adds r1, r0 + movs r0, 0x1 + bl sub_813CCAC + ldr r0, _08115140 @ =gUnknown_2021D18 + ldr r1, _08115144 @ =gUnknown_841A2E1 + bl sub_813CCC8 + b _081151AC + .align 2, 0 +_08115134: .4byte gUnknown_300500C +_08115138: .4byte gUnknown_3005008 +_0811513C: .4byte 0x00003a4c +_08115140: .4byte gUnknown_2021D18 +_08115144: .4byte gUnknown_841A2E1 +_08115148: + ldr r0, _08115180 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _08115184 @ =0x00003a4c + adds r1, r0 + movs r0, 0 + bl sub_813CCAC + ldrh r0, [r4, 0x4] + movs r1, 0 + movs r2, 0x1 + bl sub_8113EAC + ldr r0, _08115188 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0x2 + bl sub_813CCAC + ldrh r0, [r4, 0x6] + movs r1, 0 + movs r2, 0x3 + bl sub_8113EAC + ldr r0, _0811518C @ =gUnknown_2021D18 + ldr r1, _08115190 @ =gUnknown_841A312 + bl sub_813CCC8 + b _081151AC + .align 2, 0 +_08115180: .4byte gUnknown_3005008 +_08115184: .4byte 0x00003a4c +_08115188: .4byte gUnknown_300500C +_0811518C: .4byte gUnknown_2021D18 +_08115190: .4byte gUnknown_841A312 +_08115194: + ldr r1, _081151B4 @ =gUnknown_8456AD8 + ldrb r0, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + ldr r0, _081151B8 @ =gUnknown_2021D18 + ldr r1, _081151BC @ =gUnknown_841A349 + bl sub_813CCC8 +_081151AC: + adds r0, r5, 0x2 +_081151AE: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081151B4: .4byte gUnknown_8456AD8 +_081151B8: .4byte gUnknown_2021D18 +_081151BC: .4byte gUnknown_841A349 + thumb_func_end sub_81150CC + + thumb_func_start sub_81151C0 +sub_81151C0: @ 81151C0 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r1, _081151D8 @ =gUnknown_203B048 + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x22 + adds r1, r3, 0 + bl sub_8114D18 + pop {r1} + bx r1 + .align 2, 0 +_081151D8: .4byte gUnknown_203B048 + thumb_func_end sub_81151C0 + + thumb_func_start sub_81151DC +sub_81151DC: @ 81151DC + push {r4-r6,lr} + adds r1, r0, 0 + movs r0, 0x22 + bl sub_8113E88 + adds r5, r0, 0 + adds r6, r5, 0x6 + bl sub_813CC90 + ldr r4, _0811522C @ =gUnknown_2021CD0 + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl sub_80C4DF8 + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldr r3, _08115230 @ =gUnknown_823EAC8 + ldrh r1, [r5, 0x4] + lsls r0, r1, 2 + adds r0, r1 + lsls r2, r0, 3 + adds r0, r2, r3 + ldrb r0, [r0, 0x1] + cmp r0, 0x51 + beq _0811521A + cmp r0, 0x59 + beq _0811521A + cmp r0, 0x5A + bne _08115234 +_0811521A: + movs r0, 0x6 + bl sub_80091E0 + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC + b _0811523E + .align 2, 0 +_0811522C: .4byte gUnknown_2021CD0 +_08115230: .4byte gUnknown_823EAC8 +_08115234: + adds r1, r3, 0x4 + adds r1, r2, r1 + movs r0, 0x1 + bl sub_813CCAC +_0811523E: + ldrh r0, [r5] + movs r1, 0 + movs r2, 0x2 + bl sub_8113EAC + ldrh r0, [r5, 0x2] + movs r1, 0 + movs r2, 0x3 + bl sub_8113EAC + ldr r1, _08115274 @ =gUnknown_8456ACC + ldrb r0, [r6, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x4 + bl sub_813CCAC + ldr r0, _08115278 @ =gUnknown_2021D18 + ldr r1, _0811527C @ =gUnknown_841AF6D + bl sub_813CCC8 + adds r0, r6, 0x2 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08115274: .4byte gUnknown_8456ACC +_08115278: .4byte gUnknown_2021D18 +_0811527C: .4byte gUnknown_841AF6D + thumb_func_end sub_81151DC + + thumb_func_start sub_8115280 +sub_8115280: @ 8115280 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x23 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + bne _08115298 + movs r0, 0 + b _081152B0 +_08115298: + ldrb r0, [r4] + strb r0, [r2] + ldrb r0, [r4, 0x1] + strb r0, [r2, 0x1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x24 + bne _081152AE + ldr r1, _081152B8 @ =gUnknown_203B048 + movs r0, 0x1 + strb r0, [r1] +_081152AE: + adds r0, r2, 0x2 +_081152B0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081152B8: .4byte gUnknown_203B048 + thumb_func_end sub_8115280 + + thumb_func_start sub_81152BC +sub_81152BC: @ 81152BC + push {r4-r7,lr} + adds r1, r0, 0 + movs r0, 0x23 + bl sub_8113E88 + adds r5, r0, 0 + ldrb r6, [r5, 0x1] + ldr r0, _08115318 @ =gUnknown_2021CD0 + ldrb r1, [r5] + bl sub_80C4DF8 + ldr r0, _0811531C @ =gUnknown_2021CF0 + ldr r2, _08115320 @ =gUnknown_8456AF0 + lsls r1, r6, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _08115324 @ =gUnknown_8456BE4 + adds r1, r6, r0 + ldrb r0, [r1] + cmp r0, 0x5 + bne _08115378 + movs r4, 0 + ldr r2, _08115328 @ =gUnknown_8456C17 + adds r7, r5, 0x2 + ldrb r1, [r5] +_081152F2: + adds r0, r4, r2 + ldrb r0, [r0] + cmp r1, r0 + bne _08115334 + movs r1, 0x82 + lsls r1, 4 + adds r0, r4, r1 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08115364 + ldr r0, _0811532C @ =gUnknown_2021D18 + ldr r1, _08115330 @ =gUnknown_841AE48 + bl sub_8008FCC + b _0811533E + .align 2, 0 +_08115318: .4byte gUnknown_2021CD0 +_0811531C: .4byte gUnknown_2021CF0 +_08115320: .4byte gUnknown_8456AF0 +_08115324: .4byte gUnknown_8456BE4 +_08115328: .4byte gUnknown_8456C17 +_0811532C: .4byte gUnknown_2021D18 +_08115330: .4byte gUnknown_841AE48 +_08115334: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _081152F2 +_0811533E: + cmp r4, 0x8 + bne _0811538A + ldr r0, _08115358 @ =gUnknown_2021D18 + ldr r2, _0811535C @ =gUnknown_8456BBC + ldr r1, _08115360 @ =gUnknown_8456BE4 + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008FCC + b _0811538A + .align 2, 0 +_08115358: .4byte gUnknown_2021D18 +_0811535C: .4byte gUnknown_8456BBC +_08115360: .4byte gUnknown_8456BE4 +_08115364: + ldr r0, _08115370 @ =gUnknown_2021D18 + ldr r1, _08115374 @ =gUnknown_841AE8F + bl sub_8008FCC + b _0811533E + .align 2, 0 +_08115370: .4byte gUnknown_2021D18 +_08115374: .4byte gUnknown_841AE8F +_08115378: + ldr r0, _08115394 @ =gUnknown_2021D18 + ldr r2, _08115398 @ =gUnknown_8456BBC + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008FCC + adds r7, r5, 0x2 +_0811538A: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08115394: .4byte gUnknown_2021D18 +_08115398: .4byte gUnknown_8456BBC + thumb_func_end sub_81152BC + + thumb_func_start sub_811539C +sub_811539C: @ 811539C + ldr r1, _081153A4 @ =gUnknown_203B04B + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_081153A4: .4byte gUnknown_203B04B + thumb_func_end sub_811539C + + thumb_func_start sub_81153A8 +sub_81153A8: @ 81153A8 + push {lr} + adds r2, r1, 0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x23 + beq _081153C4 + ldr r1, _081153C0 @ =gUnknown_203B04A + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + b _081153DE + .align 2, 0 +_081153C0: .4byte gUnknown_203B04A +_081153C4: + ldr r3, _081153D8 @ =gUnknown_203B04A + ldrb r1, [r3] + ldrb r0, [r2, 0x1] + adds r0, 0x1 + cmp r1, r0 + beq _081153DC + strb r0, [r3] + movs r0, 0x1 + b _081153DE + .align 2, 0 +_081153D8: .4byte gUnknown_203B04A +_081153DC: + movs r0, 0 +_081153DE: + pop {r1} + bx r1 + thumb_func_end sub_81153A8 + + thumb_func_start sub_81153E4 +sub_81153E4: @ 81153E4 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x23 + bne _08115408 + ldrb r0, [r1, 0x1] + ldr r1, _08115400 @ =gUnknown_203B04B + cmp r0, 0x20 + bne _08115404 + ldrb r0, [r1] + cmp r0, 0 + bne _08115404 + movs r0, 0 + b _0811540A + .align 2, 0 +_08115400: .4byte gUnknown_203B04B +_08115404: + movs r0, 0 + strb r0, [r1] +_08115408: + movs r0, 0x1 +_0811540A: + pop {r1} + bx r1 + thumb_func_end sub_81153E4 + + thumb_func_start sub_8115410 +sub_8115410: @ 8115410 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x24 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + bne _08115428 + movs r0, 0 + b _08115454 +_08115428: + ldrh r0, [r4] + strh r0, [r2] + adds r3, r2, 0x2 + ldrb r0, [r4, 0x2] + strb r0, [r2, 0x2] + ldrb r0, [r4, 0x3] + strb r0, [r3, 0x1] + ldrb r0, [r2, 0x2] + subs r0, 0x7 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0811544C + ldr r1, _08115448 @ =gUnknown_203B048 + movs r0, 0x2 + b _08115450 + .align 2, 0 +_08115448: .4byte gUnknown_203B048 +_0811544C: + ldr r1, _0811545C @ =gUnknown_203B048 + movs r0, 0x1 +_08115450: + strb r0, [r1] + adds r0, r3, 0x2 +_08115454: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811545C: .4byte gUnknown_203B048 + thumb_func_end sub_8115410 + + thumb_func_start sub_8115460 +sub_8115460: @ 8115460 + push {r4,r5,lr} + adds r1, r0, 0 + movs r0, 0x24 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x2 + ldrh r0, [r4] + ldr r1, _0811549C @ =gUnknown_2021CD0 + movs r2, 0 + bl sub_8113EAC + ldrb r0, [r5, 0x1] + cmp r0, 0xFF + beq _08115486 + ldr r0, _081154A0 @ =gUnknown_2021CF0 + ldrb r1, [r5, 0x1] + bl sub_80C4DF8 +_08115486: + ldrb r0, [r4, 0x2] + cmp r0, 0x7 + bne _081154B4 + ldrb r0, [r5, 0x1] + cmp r0, 0x58 + bne _081154AC + ldr r0, _081154A4 @ =gUnknown_2021D04 + ldr r1, _081154A8 @ =gUnknown_841B09F + bl sub_8008D84 + b _081154B4 + .align 2, 0 +_0811549C: .4byte gUnknown_2021CD0 +_081154A0: .4byte gUnknown_2021CF0 +_081154A4: .4byte gUnknown_2021D04 +_081154A8: .4byte gUnknown_841B09F +_081154AC: + ldr r0, _081154CC @ =gUnknown_2021D04 + ldr r1, _081154D0 @ =gUnknown_8418C1B + bl sub_8008D84 +_081154B4: + ldr r0, _081154D4 @ =gUnknown_2021D18 + ldr r2, _081154D8 @ =gUnknown_8456C20 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008FCC + adds r0, r5, 0x2 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081154CC: .4byte gUnknown_2021D04 +_081154D0: .4byte gUnknown_8418C1B +_081154D4: .4byte gUnknown_2021D18 +_081154D8: .4byte gUnknown_8456C20 + thumb_func_end sub_8115460 + + thumb_func_start sub_81154DC +sub_81154DC: @ 81154DC + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x25 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _0811550E + ldrh r0, [r4, 0x4] + strh r0, [r2] + ldrh r0, [r4, 0x6] + strh r0, [r2, 0x2] + ldr r1, [r4] + lsrs r0, r1, 16 + strh r0, [r2, 0x4] + strh r1, [r2, 0x6] + ldrb r0, [r4, 0x8] + strb r0, [r2, 0x8] + movs r0, 0x1 + strb r0, [r2, 0x9] + adds r0, r2, 0 + adds r0, 0xA + b _08115510 +_0811550E: + movs r0, 0 +_08115510: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81154DC + + thumb_func_start sub_8115518 +sub_8115518: @ 8115518 + push {r4-r7,lr} + adds r1, r0, 0 + movs r0, 0x25 + bl sub_8113E88 + adds r4, r0, 0 + adds r7, r4, 0 + adds r7, 0x8 + ldrh r0, [r4, 0x4] + lsls r0, 16 + ldrh r1, [r4, 0x6] + adds r6, r0, r1 + bl sub_813CC90 + ldr r5, _08115564 @ =gUnknown_2021CD0 + ldrb r1, [r4, 0x8] + adds r0, r5, 0 + bl sub_80C4DF8 + movs r0, 0 + adds r1, r5, 0 + bl sub_813CCAC + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC + ldrh r0, [r4, 0x2] + cmp r0, 0x1 + bhi _08115570 + ldr r0, _08115568 @ =gUnknown_2021D18 + ldr r1, _0811556C @ =gUnknown_841A7DD + bl sub_813CCC8 + b _0811558E + .align 2, 0 +_08115564: .4byte gUnknown_2021CD0 +_08115568: .4byte gUnknown_2021D18 +_0811556C: .4byte gUnknown_841A7DD +_08115570: + ldr r4, _08115598 @ =gUnknown_2021CF0 + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_813CCAC + ldr r0, _0811559C @ =gUnknown_2021D18 + ldr r1, _081155A0 @ =gUnknown_841A810 + bl sub_813CCC8 +_0811558E: + adds r0, r7, 0x2 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08115598: .4byte gUnknown_2021CF0 +_0811559C: .4byte gUnknown_2021D18 +_081155A0: .4byte gUnknown_841A810 + thumb_func_end sub_8115518 + + thumb_func_start sub_81155A4 +sub_81155A4: @ 81155A4 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x26 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _081155D6 + ldrh r0, [r4, 0x4] + strh r0, [r2] + ldrh r0, [r4, 0x6] + strh r0, [r2, 0x2] + ldr r1, [r4] + lsrs r0, r1, 16 + strh r0, [r2, 0x4] + strh r1, [r2, 0x6] + ldrb r0, [r4, 0x8] + strb r0, [r2, 0x8] + ldrb r0, [r4, 0x9] + strb r0, [r2, 0x9] + adds r0, r2, 0 + adds r0, 0xA + b _081155D8 +_081155D6: + movs r0, 0 +_081155D8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81155A4 + + thumb_func_start sub_81155E0 +sub_81155E0: @ 81155E0 + push {r4-r7,lr} + adds r1, r0, 0 + movs r0, 0x26 + bl sub_8113E88 + adds r5, r0, 0 + adds r7, r5, 0 + adds r7, 0x8 + ldrh r0, [r5, 0x4] + lsls r0, 16 + ldrh r1, [r5, 0x6] + adds r6, r0, r1 + bl sub_813CC90 + ldr r4, _0811563C @ =gUnknown_2021CD0 + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + bl sub_80C4DF8 + ldrb r0, [r7, 0x1] + cmp r0, 0 + bne _08115690 + ldr r0, _08115640 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + movs r0, 0x1 + adds r1, r4, 0 + bl sub_813CCAC + ldrh r0, [r5] + bl sub_809A8BC + adds r1, r0, 0 + movs r0, 0x2 + bl sub_813CCAC + ldrh r0, [r5, 0x2] + cmp r0, 0x1 + bne _08115648 + ldr r1, _08115644 @ =gUnknown_841A8D4 + movs r0, 0x3 + bl sub_813CCAC + b _08115670 + .align 2, 0 +_0811563C: .4byte gUnknown_2021CD0 +_08115640: .4byte gUnknown_300500C +_08115644: .4byte gUnknown_841A8D4 +_08115648: + ldr r4, _0811567C @ =gUnknown_2021CF0 + ldrh r1, [r5, 0x2] + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x4 + adds r1, r4, 0 + bl sub_813CCAC + ldr r4, _08115680 @ =gUnknown_2021D04 + ldr r1, _08115684 @ =gUnknown_841A8DD + adds r0, r4, 0 + bl sub_813CCC8 + movs r0, 0x3 + adds r1, r4, 0 + bl sub_813CCAC +_08115670: + ldr r0, _08115688 @ =gUnknown_2021D18 + ldr r1, _0811568C @ =gUnknown_841A858 + bl sub_813CCC8 + b _081156C4 + .align 2, 0 +_0811567C: .4byte gUnknown_2021CF0 +_08115680: .4byte gUnknown_2021D04 +_08115684: .4byte gUnknown_841A8DD +_08115688: .4byte gUnknown_2021D18 +_0811568C: .4byte gUnknown_841A858 +_08115690: + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldrh r0, [r5] + bl sub_809A8BC + adds r1, r0, 0 + movs r0, 0x1 + bl sub_813CCAC + ldr r4, _081156CC @ =gUnknown_2021CF0 + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_813CCAC + ldr r0, _081156D0 @ =gUnknown_2021D18 + ldr r1, _081156D4 @ =gUnknown_841A896 + bl sub_813CCC8 +_081156C4: + adds r0, r7, 0x2 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081156CC: .4byte gUnknown_2021CF0 +_081156D0: .4byte gUnknown_2021D18 +_081156D4: .4byte gUnknown_841A896 + thumb_func_end sub_81155E0 + + thumb_func_start sub_81156D8 +sub_81156D8: @ 81156D8 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x28 + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _081156F8 + ldrh r0, [r4] + strh r0, [r2] + ldrb r0, [r4, 0x2] + strb r0, [r2, 0x2] + adds r0, r2, 0x4 + b _081156FA +_081156F8: + movs r0, 0 +_081156FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81156D8 + + thumb_func_start sub_8115700 +sub_8115700: @ 8115700 + push {r4-r6,lr} + adds r1, r0, 0 + movs r0, 0x28 + bl sub_8113E88 + adds r4, r0, 0 + adds r5, r4, 0x2 + ldr r0, _08115738 @ =gUnknown_2021CD0 + ldrb r1, [r4, 0x2] + bl sub_80C4DF8 + ldr r6, _0811573C @ =gUnknown_2021CF0 + ldrh r0, [r4] + bl sub_809A8BC + adds r1, r0, 0 + adds r0, r6, 0 + bl sub_8008D84 + ldr r0, _08115740 @ =gUnknown_2021D18 + ldr r1, _08115744 @ =gUnknown_841B03F + bl sub_8008FCC + adds r5, 0x2 + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08115738: .4byte gUnknown_2021CD0 +_0811573C: .4byte gUnknown_2021CF0 +_08115740: .4byte gUnknown_2021D18 +_08115744: .4byte gUnknown_841B03F + thumb_func_end sub_8115700 + + thumb_func_start sub_8115748 +sub_8115748: @ 8115748 + push {r4,lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08115764 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08115792 + movs r1, 0 + ldr r4, _08115768 @ =gUnknown_203B049 + ldr r0, _0811576C @ =gUnknown_8456C50 + b _08115778 + .align 2, 0 +_08115764: .4byte gUnknown_203ADFA +_08115768: .4byte gUnknown_203B049 +_0811576C: .4byte gUnknown_8456C50 +_08115770: + movs r0, 0 + b _08115790 +_08115774: + adds r0, 0x2 + adds r1, 0x1 +_08115778: + cmp r1, 0x10 + bgt _08115792 + ldrh r3, [r0] + cmp r2, r3 + bne _08115774 + adds r0, r2, 0 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _08115770 + movs r0, 0x1 +_08115790: + strb r0, [r4] +_08115792: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8115748 + + thumb_func_start sub_8115798 +sub_8115798: @ 8115798 + push {r4,lr} + sub sp, 0x4 + ldr r0, _081157D0 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _081157C6 + ldr r4, _081157D4 @ =gUnknown_203B049 + ldrb r0, [r4] + cmp r0, 0 + beq _081157C6 + ldr r0, _081157D8 @ =gUnknown_2036DFC + ldrb r1, [r0, 0x14] + mov r0, sp + strh r1, [r0] + movs r0, 0x2A + mov r1, sp + bl sub_8113550 + movs r0, 0 + strb r0, [r4] +_081157C6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081157D0: .4byte gUnknown_203ADFA +_081157D4: .4byte gUnknown_203B049 +_081157D8: .4byte gUnknown_2036DFC + thumb_func_end sub_8115798 + + thumb_func_start sub_81157DC +sub_81157DC: @ 81157DC + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r0, 0x2A + adds r1, r2, 0 + bl sub_8113DE0 + adds r2, r0, 0 + cmp r2, 0 + beq _081157F8 + ldrh r0, [r4] + strh r0, [r2] + adds r0, r2, 0x2 + b _081157FA +_081157F8: + movs r0, 0 +_081157FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81157DC + + thumb_func_start sub_8115800 +sub_8115800: @ 8115800 + push {r4,lr} + adds r1, r0, 0 + movs r0, 0x2A + bl sub_8113E88 + adds r4, r0, 0 + ldr r0, _08115828 @ =gUnknown_2021CD0 + ldrb r1, [r4] + bl sub_80C4DF8 + ldr r0, _0811582C @ =gUnknown_2021D18 + ldr r1, _08115830 @ =gUnknown_841B064 + bl sub_8008FCC + adds r4, 0x2 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08115828: .4byte gUnknown_2021CD0 +_0811582C: .4byte gUnknown_2021D18 +_08115830: .4byte gUnknown_841B064 + thumb_func_end sub_8115800 + + thumb_func_start sub_8115834 +sub_8115834: @ 8115834 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + adds r1, 0x1 + cmp r0, 0xFC + bne _08115868 + ldrb r0, [r1] + adds r1, 0x1 + cmp r0, 0x15 + bne _08115868 + movs r2, 0 + b _08115854 +_0811584C: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x4 + bgt _0811585A +_08115854: + ldrb r0, [r1] + cmp r0, 0xFC + bne _0811584C +_0811585A: + movs r0, 0xFC + strb r0, [r1] + adds r1, 0x1 + movs r0, 0x16 + strb r0, [r1] + movs r0, 0xFF + strb r0, [r1, 0x1] +_08115868: + pop {r0} + bx r0 + thumb_func_end sub_8115834 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/quest_log_8150454.s b/asm/quest_log_8150454.s new file mode 100644 index 000000000..fe9c8e0b5 --- /dev/null +++ b/asm/quest_log_8150454.s @@ -0,0 +1,482 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8150454 +sub_8150454: @ 8150454 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x8 + bhi _0815046A + ldr r0, _08150470 @ =gUnknown_8471EDC + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_0815046A: + pop {r0} + bx r0 + .align 2, 0 +_08150470: .4byte gUnknown_8471EDC + thumb_func_end sub_8150454 + + thumb_func_start sub_8150474 +sub_8150474: @ 8150474 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08150488 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0815048C + movs r0, 0 + b _08150494 + .align 2, 0 +_08150488: .4byte gUnknown_3005E88 +_0815048C: + adds r0, r1, 0 + bl sub_8112720 + movs r0, 0x1 +_08150494: + pop {r1} + bx r1 + thumb_func_end sub_8150474 + + thumb_func_start sub_8150498 +sub_8150498: @ 8150498 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8150454 + pop {r0} + bx r0 + thumb_func_end sub_8150498 + + thumb_func_start sub_81504A8 +sub_81504A8: @ 81504A8 + push {r4,lr} + ldr r0, _081504E0 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _081504E4 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_81507BC + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_805F218 + movs r0, 0x1 + bl sub_805C970 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081504E0: .4byte gUnknown_2037078 +_081504E4: .4byte gUnknown_2036E38 + thumb_func_end sub_81504A8 + + thumb_func_start sub_81504E8 +sub_81504E8: @ 81504E8 + push {r4,lr} + ldr r0, _08150528 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0815052C @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x1 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_81507BC + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_805F218 + movs r0, 0x2 + bl sub_805C970 + movs r0, 0 + movs r1, 0 + bl sub_80BD620 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08150528: .4byte gUnknown_2037078 +_0815052C: .4byte gUnknown_2036E38 + thumb_func_end sub_81504E8 + + thumb_func_start sub_8150530 +sub_8150530: @ 8150530 + push {r4-r6,lr} + ldr r6, _0815057C @ =gUnknown_2037078 + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08150580 @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08150584 @ =gUnknown_202063C + adds r5, r0, r1 + ldr r0, _08150588 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08150558 + cmp r0, 0x3 + bne _08150594 +_08150558: + bl sub_8069940 + movs r4, 0 + movs r0, 0x1 + strb r0, [r6, 0x6] + ldr r0, _0815058C @ =sub_81505C4 + movs r1, 0xFF + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08150590 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + b _081505BC + .align 2, 0 +_0815057C: .4byte gUnknown_2037078 +_08150580: .4byte gUnknown_2036E38 +_08150584: .4byte gUnknown_202063C +_08150588: .4byte gUnknown_3005E88 +_0815058C: .4byte sub_81505C4 +_08150590: .4byte gUnknown_3005090 +_08150594: + movs r0, 0x4 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_81507BC + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80634F0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_800838C +_081505BC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8150530 + + thumb_func_start sub_81505C4 +sub_81505C4: @ 81505C4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _0815060C @ =gUnknown_2037078 + mov r9, r0 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08150610 @ =gUnknown_2036E38 + adds r5, r0, r1 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08150614 @ =gUnknown_202063C + adds r7, r0, r1 + ldr r1, _08150618 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r6, [r4, r0] + cmp r6, 0x1 + beq _08150666 + cmp r6, 0x1 + bgt _0815061C + cmp r6, 0 + beq _08150626 + b _081506FC + .align 2, 0 +_0815060C: .4byte gUnknown_2037078 +_08150610: .4byte gUnknown_2036E38 +_08150614: .4byte gUnknown_202063C +_08150618: .4byte gUnknown_3005090 +_0815061C: + cmp r6, 0x2 + beq _0815067C + cmp r6, 0x3 + beq _0815069C + b _081506FC +_08150626: + adds r0, r5, 0 + bl sub_8063D1C + ldrb r0, [r5, 0x1] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r5, 0x1] + movs r0, 0x4 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_81507BC + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80634F0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_800838C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + strh r6, [r4, 0xA] + b _081506FC +_08150666: + adds r0, r7, 0 + bl sub_805D9C4 + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0x3B + bgt _08150694 + adds r0, r1, 0x1 + strh r0, [r4, 0xA] + b _081506FC +_0815067C: + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8063500 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_800838C +_08150694: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _081506FC +_0815069C: + adds r0, r7, 0 + bl sub_805D9C4 + adds r0, r7, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081506FC + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _081506D0 + movs r0, 0 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_81507BC + b _081506E2 +_081506D0: + movs r0, 0x2 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_81507BC +_081506E2: + ldrb r1, [r5, 0x18] + lsrs r1, 4 + adds r0, r5, 0 + bl sub_805F218 + movs r0, 0 + strh r0, [r7, 0x24] + strh r0, [r7, 0x26] + bl sub_806994C + mov r0, r8 + bl sub_8077508 +_081506FC: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81505C4 + + thumb_func_start sub_8150708 +sub_8150708: @ 8150708 + push {r4,r5,lr} + ldr r5, _08150770 @ =gUnknown_2037078 + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08150774 @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r1, [r5] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08150768 + movs r0, 0x2 + bl sub_805C808 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_81507BC + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_805F218 + movs r0, 0x8 + bl sub_805C970 + ldr r1, _08150778 @ =gUnknown_20386E0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + str r0, [r1, 0x4] + ldrb r0, [r5, 0x5] + str r0, [r1, 0x8] + movs r0, 0x8 + bl sub_8083444 + lsls r0, 24 + lsrs r0, 24 + strb r0, [r4, 0x1A] + movs r1, 0x1 + bl sub_80DC44C +_08150768: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08150770: .4byte gUnknown_2037078 +_08150774: .4byte gUnknown_2036E38 +_08150778: .4byte gUnknown_20386E0 + thumb_func_end sub_8150708 + + thumb_func_start sub_815077C +sub_815077C: @ 815077C + push {lr} + movs r0, 0x41 + bl sub_8083444 + ldr r0, _08150790 @ =sub_8150794 + movs r1, 0 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_08150790: .4byte sub_8150794 + thumb_func_end sub_815077C + + thumb_func_start sub_8150794 +sub_8150794: @ 8150794 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x41 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _081507B4 + bl sub_8068A5C + bl sub_806994C + adds r0, r4, 0 + bl sub_8077508 +_081507B4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8150794 + + thumb_func_start sub_81507BC +sub_81507BC: @ 81507BC + push {lr} + lsls r1, 24 + lsrs r1, 24 + bl sub_805F060 + pop {r0} + bx r0 + thumb_func_end sub_81507BC + + thumb_func_start sub_81507CC +sub_81507CC: @ 81507CC + push {lr} + movs r0, 0x1 + bl sub_805D154 + pop {r0} + bx r0 + thumb_func_end sub_81507CC + + thumb_func_start sub_81507D8 +sub_81507D8: @ 81507D8 + push {lr} + movs r0, 0x2 + bl sub_805D154 + pop {r0} + bx r0 + thumb_func_end sub_81507D8 + + thumb_func_start sub_81507E4 +sub_81507E4: @ 81507E4 + push {lr} + movs r0, 0x3 + bl sub_805D154 + pop {r0} + bx r0 + thumb_func_end sub_81507E4 + + thumb_func_start sub_81507F0 +sub_81507F0: @ 81507F0 + push {lr} + movs r0, 0x4 + bl sub_805D154 + pop {r0} + bx r0 + thumb_func_end sub_81507F0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/quest_log_battle.s b/asm/quest_log_battle.s new file mode 100644 index 000000000..4b583025e --- /dev/null +++ b/asm/quest_log_battle.s @@ -0,0 +1,474 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_812BFDC +sub_812BFDC: @ 812BFDC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _0812C03C @ =gUnknown_2022B4C + ldr r0, [r4] + ldr r1, _0812C040 @ =0x00010202 + ands r0, r1 + cmp r0, 0 + beq _0812BFF4 + b _0812C212 +_0812BFF4: + ldr r5, _0812C044 @ =gUnknown_2023E8A + ldrb r0, [r5] + cmp r0, 0x1 + beq _0812C002 + cmp r0, 0x7 + beq _0812C002 + b _0812C212 +_0812C002: + movs r0, 0x8 + bl sub_8002B9C + adds r7, r0, 0 + movs r0, 0x8 + bl sub_8002B9C + mov r9, r0 + ldr r4, [r4] + movs r0, 0x8 + ands r4, r0 + cmp r4, 0 + bne _0812C01E + b _0812C1CC +_0812C01E: + ldr r3, _0812C048 @ =gUnknown_823EAC8 + ldr r2, _0812C04C @ =gUnknown_20386AE + ldrh r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r3 + ldrb r1, [r0, 0x1] + cmp r1, 0x57 + beq _0812C060 + cmp r1, 0x57 + bgt _0812C050 + cmp r1, 0x54 + beq _0812C056 + b _0812C066 + .align 2, 0 +_0812C03C: .4byte gUnknown_2022B4C +_0812C040: .4byte 0x00010202 +_0812C044: .4byte gUnknown_2023E8A +_0812C048: .4byte gUnknown_823EAC8 +_0812C04C: .4byte gUnknown_20386AE +_0812C050: + cmp r1, 0x5A + beq _0812C05C + b _0812C066 +_0812C056: + movs r0, 0x1E + mov r10, r0 + b _0812C06A +_0812C05C: + movs r1, 0x21 + b _0812C068 +_0812C060: + movs r0, 0x20 + mov r10, r0 + b _0812C06A +_0812C066: + movs r1, 0x22 +_0812C068: + mov r10, r1 +_0812C06A: + ldrh r0, [r2] + strh r0, [r7] + ldr r0, _0812C0AC @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0812C150 + ldr r0, _0812C0B0 @ =gUnknown_3004F90 + ldrh r0, [r0, 0x20] + strh r0, [r7, 0x2] + ldr r4, _0812C0B4 @ =gUnknown_2023FE8 + ldr r0, [r4] + movs r1, 0xC1 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _0812C0BC + ldr r2, _0812C0B8 @ =gUnknown_2023BE4 + ldr r0, [r4] + movs r1, 0xC1 + lsls r1, 1 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + b _0812C0EA + .align 2, 0 +_0812C0AC: .4byte gUnknown_2022B4C +_0812C0B0: .4byte gUnknown_3004F90 +_0812C0B4: .4byte gUnknown_2023FE8 +_0812C0B8: .4byte gUnknown_2023BE4 +_0812C0BC: + ldr r5, _0812C0D8 @ =gUnknown_2023BE4 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0812C0DC + movs r0, 0 + b _0812C0DE + .align 2, 0 +_0812C0D8: .4byte gUnknown_2023BE4 +_0812C0DC: + movs r0, 0x2 +_0812C0DE: + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + muls r0, r4 + adds r0, r5 +_0812C0EA: + ldrh r0, [r0] + strh r0, [r7, 0x4] + movs r0, 0 + bl sub_80751E8 + adds r4, r0, 0 + movs r0, 0x2 + bl sub_80751E8 + ldr r6, _0812C14C @ =gUnknown_2023BE4 + lsls r4, 24 + lsrs r4, 24 + movs r5, 0x58 + adds r1, r4, 0 + muls r1, r5 + adds r1, r6 + lsls r0, 24 + lsrs r0, 24 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x28] + ldrh r1, [r1, 0x28] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + movs r0, 0 + bl sub_80751E8 + adds r4, r0, 0 + movs r0, 0x2 + bl sub_80751E8 + lsls r4, 24 + lsrs r4, 24 + adds r1, r4, 0 + muls r1, r5 + adds r1, r6 + lsls r0, 24 + lsrs r0, 24 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x2C] + ldrh r1, [r1, 0x2C] + adds r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + b _0812C18E + .align 2, 0 +_0812C14C: .4byte gUnknown_2023BE4 +_0812C150: + ldr r0, _0812C1C4 @ =gUnknown_3004F90 + ldrh r0, [r0, 0x20] + strh r0, [r7, 0x2] + movs r0, 0 + bl sub_80751E8 + ldr r5, _0812C1C8 @ =gUnknown_2023BE4 + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0] + strh r0, [r7, 0x4] + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x28] + mov r8, r0 + movs r0, 0 + bl sub_80751E8 + lsls r0, 24 + lsrs r0, 24 + muls r0, r4 + adds r0, r5 + ldrh r4, [r0, 0x2C] +_0812C18E: + bl sub_8056260 + movs r1, 0 + strb r0, [r7, 0x7] + strb r1, [r7, 0x6] + adds r0, r4, 0 + movs r1, 0x3 + bl __udivsi3 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r0, r1, 1 + cmp r8, r0 + bge _0812C1AE + movs r0, 0x1 + strb r0, [r7, 0x6] +_0812C1AE: + cmp r8, r1 + bcs _0812C1B8 + ldrb r0, [r7, 0x6] + adds r0, 0x1 + strb r0, [r7, 0x6] +_0812C1B8: + mov r0, r10 + adds r1, r7, 0 + bl sub_8113550 + b _0812C206 + .align 2, 0 +_0812C1C4: .4byte gUnknown_3004F90 +_0812C1C8: .4byte gUnknown_2023BE4 +_0812C1CC: + ldrb r0, [r5] + cmp r0, 0x1 + bne _0812C1E8 + ldr r0, _0812C1E4 @ =gUnknown_202402C + movs r1, 0xB + bl sub_803FBE8 + mov r1, r9 + strh r0, [r1] + strh r4, [r1, 0x2] + b _0812C1F8 + .align 2, 0 +_0812C1E4: .4byte gUnknown_202402C +_0812C1E8: + mov r0, r9 + strh r4, [r0] + ldr r0, _0812C220 @ =gUnknown_202402C + movs r1, 0xB + bl sub_803FBE8 + mov r1, r9 + strh r0, [r1, 0x2] +_0812C1F8: + bl sub_8056260 + mov r1, r9 + strb r0, [r1, 0x4] + movs r0, 0x1F + bl sub_8113550 +_0812C206: + adds r0, r7, 0 + bl sub_8002BC4 + mov r0, r9 + bl sub_8002BC4 +_0812C212: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812C220: .4byte gUnknown_202402C + thumb_func_end sub_812BFDC + + thumb_func_start sub_812C224 +sub_812C224: @ 812C224 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r4, _0812C2B8 @ =gUnknown_2022B4C + ldr r0, [r4] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0812C31C + movs r0, 0x18 + bl sub_8002B9C + adds r5, r0, 0 + ldr r0, _0812C2BC @ =gUnknown_2023E8A + ldrb r0, [r0] + subs r0, 0x1 + strb r0, [r5] + ldr r1, [r4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0812C2C4 + movs r0, 0xF + mov r8, r0 + add r4, sp, 0x4 + mov r0, sp + adds r1, r4, 0 + bl sub_812C334 + movs r3, 0 + mov r9, r4 + adds r1, r5, 0x1 + mov r12, r1 + adds r7, r5, 0 + adds r7, 0x8 + adds r6, r5, 0 + adds r6, 0xF + ldr r4, _0812C2C0 @ =gUnknown_2022744 +_0812C274: + mov r0, r12 + adds r2, r0, r3 + ldr r1, [sp] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r2, r7, r3 + ldr r1, [sp, 0x4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r2, r6, r3 + mov r0, r9 + ldr r1, [r0, 0x4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0x6 + ble _0812C274 + b _0812C30E + .align 2, 0 +_0812C2B8: .4byte gUnknown_2022B4C +_0812C2BC: .4byte gUnknown_2023E8A +_0812C2C0: .4byte gUnknown_2022744 +_0812C2C4: + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0812C2D2 + movs r1, 0xE + mov r8, r1 + b _0812C2E2 +_0812C2D2: + bl sub_811B0D0 + movs r1, 0xD + mov r8, r1 + cmp r0, 0x1 + bne _0812C2E2 + movs r0, 0x13 + mov r8, r0 +_0812C2E2: + movs r3, 0 + adds r4, r5, 0x1 + ldr r1, _0812C32C @ =gUnknown_2022744 + mov r12, r1 + ldr r7, _0812C330 @ =gUnknown_2023FE8 + movs r6, 0x1 +_0812C2EE: + adds r2, r4, r3 + ldr r0, [r7] + adds r0, 0xB5 + ldrb r0, [r0] + adds r1, r6, 0 + eors r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + add r0, r12 + ldrb r0, [r0] + strb r0, [r2] + adds r3, 0x1 + cmp r3, 0x6 + ble _0812C2EE +_0812C30E: + mov r0, r8 + adds r1, r5, 0 + bl sub_8113550 + adds r0, r5, 0 + bl sub_8002BC4 +_0812C31C: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812C32C: .4byte gUnknown_2022744 +_0812C330: .4byte gUnknown_2023FE8 + thumb_func_end sub_812C224 + + thumb_func_start sub_812C334 +sub_812C334: @ 812C334 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r3, _0812C35C @ =gUnknown_202273C + ldr r4, _0812C360 @ =gUnknown_2023FE8 + ldr r0, [r4] + adds r0, 0xB5 + ldrb r2, [r0] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r2, [r0, 0x18] + movs r0, 0x2 + movs r5, 0 + eors r2, r0 +_0812C352: + ldrh r0, [r3, 0x18] + cmp r2, r0 + bne _0812C364 + str r5, [r6] + b _0812C370 + .align 2, 0 +_0812C35C: .4byte gUnknown_202273C +_0812C360: .4byte gUnknown_2023FE8 +_0812C364: + ldr r0, [r4] + adds r0, 0xB5 + ldrb r0, [r0] + cmp r5, r0 + beq _0812C370 + stm r1!, {r5} +_0812C370: + adds r3, 0x1C + adds r5, 0x1 + cmp r5, 0x3 + ble _0812C352 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_812C334 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/random.s b/asm/random.s new file mode 100644 index 000000000..9ac3e043c --- /dev/null +++ b/asm/random.s @@ -0,0 +1,36 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8044EC8 +sub_8044EC8: @ 8044EC8 + ldr r2, _08044EDC @ =gUnknown_3005000 + ldr r1, [r2] + ldr r0, _08044EE0 @ =0x41c64e6d + muls r0, r1 + ldr r1, _08044EE4 @ =0x00006073 + adds r0, r1 + str r0, [r2] + lsrs r0, 16 + bx lr + .align 2, 0 +_08044EDC: .4byte gUnknown_3005000 +_08044EE0: .4byte 0x41c64e6d +_08044EE4: .4byte 0x00006073 + thumb_func_end sub_8044EC8 + + thumb_func_start sub_8044EE8 +sub_8044EE8: @ 8044EE8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08044EF4 @ =gUnknown_3005000 + str r0, [r1] + bx lr + .align 2, 0 +_08044EF4: .4byte gUnknown_3005000 + thumb_func_end sub_8044EE8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s new file mode 100644 index 000000000..0a9d1b6f3 --- /dev/null +++ b/asm/region_map.s @@ -0,0 +1,13825 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BFE18 +sub_80BFE18: @ 80BFE18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + cmp r1, 0 + beq _080BFE92 + movs r0, 0x1F + mov r10, r0 + mov r8, r1 +_080BFE38: + ldrh r1, [r6] + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r5, r1, 21 + mov r2, r10 + ands r5, r2 + lsrs r4, r1, 26 + ands r4, r2 + lsls r0, 8 + movs r1, 0x64 + bl __divsi3 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + asrs r7, r0, 8 + lsls r0, r5, 8 + movs r1, 0x64 + bl __divsi3 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + asrs r5, r0, 8 + lsls r0, r4, 8 + movs r1, 0x64 + bl __divsi3 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + asrs r4, r0, 8 + lsls r0, r4, 10 + lsls r1, r5, 5 + orrs r0, r1 + orrs r0, r7 + strh r0, [r6] + adds r6, 0x2 + movs r2, 0x1 + negs r2, r2 + add r8, r2 + mov r0, r8 + cmp r0, 0 + bne _080BFE38 +_080BFE92: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80BFE18 + + thumb_func_start sub_80BFEA0 +sub_80BFEA0: @ 80BFEA0 + push {r4,lr} + sub sp, 0x20 + ldr r4, _080BFED8 @ =gUnknown_83EF31C + adds r0, r4, 0 + mov r1, sp + movs r2, 0x10 + bl CpuSet + mov r0, sp + movs r1, 0x10 + movs r2, 0x5F + bl sub_80BFE18 + mov r0, sp + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703EC + adds r4, 0x1E + adds r0, r4, 0 + movs r1, 0x2F + movs r2, 0x2 + bl sub_80703EC + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BFED8: .4byte gUnknown_83EF31C + thumb_func_end sub_80BFEA0 + + thumb_func_start sub_80BFEDC +sub_80BFEDC: @ 80BFEDC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080BFEFC @ =gUnknown_20399D4 + ldr r0, _080BFF00 @ =0x000047c0 + bl sub_8002BB0 + adds r2, r0, 0 + str r2, [r4] + cmp r2, 0 + bne _080BFF08 + ldr r0, _080BFF04 @ =sub_80567DC + bl sub_8000544 + b _080BFF38 + .align 2, 0 +_080BFEFC: .4byte gUnknown_20399D4 +_080BFF00: .4byte 0x000047c0 +_080BFF04: .4byte sub_80567DC +_080BFF08: + ldr r1, _080BFF40 @ =gUnknown_2031DE0 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _080BFF44 @ =0x00004796 + adds r0, r2, r1 + movs r1, 0 + strb r5, [r0] + ldr r0, [r4] + ldr r2, _080BFF48 @ =0x000047a0 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + adds r2, 0x4 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + adds r2, 0x4 + adds r0, r2 + strb r1, [r0] + bl sub_80BFFD0 + ldr r0, _080BFF4C @ =sub_80C0100 + bl sub_8000544 +_080BFF38: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BFF40: .4byte gUnknown_2031DE0 +_080BFF44: .4byte 0x00004796 +_080BFF48: .4byte 0x000047a0 +_080BFF4C: .4byte sub_80C0100 + thumb_func_end sub_80BFEDC + + thumb_func_start sub_80BFF50 +sub_80BFF50: @ 80BFF50 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080BFF70 @ =gUnknown_20399D4 + ldr r0, _080BFF74 @ =0x000047c0 + bl sub_8002BB0 + adds r2, r0, 0 + str r2, [r4] + cmp r2, 0 + bne _080BFF7C + ldr r0, _080BFF78 @ =sub_80567DC + bl sub_8000544 + b _080BFFB4 + .align 2, 0 +_080BFF70: .4byte gUnknown_20399D4 +_080BFF74: .4byte 0x000047c0 +_080BFF78: .4byte sub_80567DC +_080BFF7C: + ldr r1, _080BFFBC @ =gUnknown_2031DE0 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _080BFFC0 @ =0x00004796 + adds r0, r2, r1 + movs r1, 0 + strb r5, [r0] + ldr r0, [r4] + ldr r2, _080BFFC4 @ =0x000047a0 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + adds r2, 0x4 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + adds r2, 0x4 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _080BFFC8 @ =0x000047bc + adds r0, r1 + str r6, [r0] + bl sub_80BFFD0 + ldr r0, _080BFFCC @ =sub_80C0100 + bl sub_8000544 +_080BFFB4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BFFBC: .4byte gUnknown_2031DE0 +_080BFFC0: .4byte 0x00004796 +_080BFFC4: .4byte 0x000047a0 +_080BFFC8: .4byte 0x000047bc +_080BFFCC: .4byte sub_80C0100 + thumb_func_end sub_80BFF50 + + thumb_func_start sub_80BFFD0 +sub_80BFFD0: @ 80BFFD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r1, _080C0000 @ =gUnknown_20399D4 + ldr r2, [r1] + ldr r3, _080C0004 @ =0x00004796 + adds r0, r2, r3 + ldrb r0, [r0] + mov r8, r1 + cmp r0, 0 + blt _080BFFF2 + cmp r0, 0x1 + ble _080BFFF2 + cmp r0, 0x2 + beq _080C0010 +_080BFFF2: + mov r4, r8 + ldr r0, [r4] + ldr r1, _080C0008 @ =0x000047b8 + adds r0, r1 + ldr r1, _080C000C @ =sub_80C04E4 + str r1, [r0] + b _080C0018 + .align 2, 0 +_080C0000: .4byte gUnknown_20399D4 +_080C0004: .4byte 0x00004796 +_080C0008: .4byte 0x000047b8 +_080C000C: .4byte sub_80C04E4 +_080C0010: + ldr r3, _080C009C @ =0x000047b8 + adds r1, r2, r3 + ldr r0, _080C00A0 @ =sub_80C4F08 + str r0, [r1] +_080C0018: + movs r3, 0 + ldr r6, _080C00A4 @ =gUnknown_20399D4 + ldr r5, _080C00A8 @ =0x00004797 + ldr r4, _080C00AC @ =gUnknown_83F1B00 + ldr r2, _080C00B0 @ =0x00004796 +_080C0022: + ldr r0, [r6] + adds r1, r0, r5 + adds r1, r3 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3, r0 + adds r0, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _080C0022 + ldr r0, _080C00B4 @ =0x00000845 + bl sub_806E6D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080C0058 + ldr r0, _080C00A4 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r4, _080C00A8 @ =0x00004797 + adds r0, r4 + strb r1, [r0] +_080C0058: + movs r7, 0 + movs r1, 0 + ldr r2, _080C00B8 @ =gUnknown_2036DFC + ldrb r0, [r2, 0x14] + ldr r3, _080C00A4 @ =gUnknown_20399D4 + mov r8, r3 + cmp r0, 0x8E + bls _080C00D8 + ldr r4, _080C00BC @ =gUnknown_83F1AA4 + mov r12, r4 + mov r10, r12 + mov r9, r2 +_080C0070: + movs r3, 0 + lsls r0, r1, 4 + subs r0, r1 + lsls r2, r0, 1 + mov r4, r10 + adds r0, r2, r4 + ldrb r0, [r0] + adds r5, r1, 0x1 + cmp r0, 0xC5 + beq _080C00D0 + ldr r6, _080C00BC @ =gUnknown_83F1AA4 + mov r0, r9 + ldrb r1, [r0, 0x14] + lsls r4, r5, 24 +_080C008C: + adds r0, r3, r2 + adds r0, r6 + ldrb r0, [r0] + cmp r1, r0 + bne _080C00C0 + lsrs r7, r4, 24 + b _080C00D0 + .align 2, 0 +_080C009C: .4byte 0x000047b8 +_080C00A0: .4byte sub_80C4F08 +_080C00A4: .4byte gUnknown_20399D4 +_080C00A8: .4byte 0x00004797 +_080C00AC: .4byte gUnknown_83F1B00 +_080C00B0: .4byte 0x00004796 +_080C00B4: .4byte 0x00000845 +_080C00B8: .4byte gUnknown_2036DFC +_080C00BC: .4byte gUnknown_83F1AA4 +_080C00C0: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r3, r2 + add r0, r12 + ldrb r0, [r0] + cmp r0, 0xC5 + bne _080C008C +_080C00D0: + lsls r0, r5, 24 + lsrs r1, r0, 24 + cmp r7, 0 + beq _080C0070 +_080C00D8: + mov r1, r8 + ldr r0, [r1] + ldr r2, _080C00F8 @ =0x0000479b + adds r0, r2 + strb r7, [r0] + ldr r0, [r1] + ldr r3, _080C00FC @ =0x0000479c + adds r0, r3 + strb r7, [r0] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C00F8: .4byte 0x0000479b +_080C00FC: .4byte 0x0000479c + thumb_func_end sub_80BFFD0 + + thumb_func_start sub_80C0100 +sub_80C0100: @ 80C0100 + push {r4,lr} + sub sp, 0x8 + ldr r0, _080C011C @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C0120 @ =0x000047a4 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x8 + bhi _080C0202 + lsls r0, 2 + ldr r1, _080C0124 @ =_080C0128 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C011C: .4byte gUnknown_20399D4 +_080C0120: .4byte 0x000047a4 +_080C0124: .4byte _080C0128 + .align 2, 0 +_080C0128: + .4byte _080C014C + .4byte _080C0152 + .4byte _080C0158 + .4byte _080C015E + .4byte _080C016A + .4byte _080C0180 + .4byte _080C01D4 + .4byte _080C01E0 + .4byte _080C01EC +_080C014C: + bl sub_80C08E0 + b _080C021A +_080C0152: + bl sub_80C0904 + b _080C021A +_080C0158: + bl sub_80C0A6C + b _080C021A +_080C015E: + bl sub_80C0238 + lsls r0, 24 + cmp r0, 0 + beq _080C0228 + b _080C021A +_080C016A: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + b _080C01BA +_080C0180: + ldr r4, _080C01C4 @ =gUnknown_20399D4 + ldr r1, [r4] + ldr r2, _080C01C8 @ =0x0000479b + adds r0, r1, r2 + ldrb r0, [r0] + lsls r2, r0, 2 + adds r2, r0 + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 4 + adds r0, 0x26 + adds r1, r0 + movs r0, 0 + bl sub_80C0CC8 + movs r0, 0 + bl sub_80020BC + ldr r1, [r4] + ldr r2, _080C01CC @ =0x00004796 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080C021A + ldr r0, _080C01D0 @ =0x000012e6 + adds r1, r0 + movs r0, 0x1 + bl sub_80C0CC8 +_080C01BA: + movs r0, 0x1 + bl sub_80020BC + b _080C021A + .align 2, 0 +_080C01C4: .4byte gUnknown_20399D4 +_080C01C8: .4byte 0x0000479b +_080C01CC: .4byte 0x00004796 +_080C01D0: .4byte 0x000012e6 +_080C01D4: + bl sub_80C0B18 + movs r0, 0 + bl sub_8003FA0 + b _080C021A +_080C01E0: + bl sub_80C0BB0 + movs r0, 0x1 + bl sub_8003FA0 + b _080C021A +_080C01EC: + movs r0, 0x2 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C021A + movs r0, 0x1 + bl sub_80C0A88 + b _080C021A +_080C0202: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_80C03E8 + bl sub_80C08F4 +_080C021A: + ldr r0, _080C0230 @ =gUnknown_20399D4 + ldr r1, [r0] + ldr r2, _080C0234 @ =0x000047a4 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080C0228: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C0230: .4byte gUnknown_20399D4 +_080C0234: .4byte 0x000047a4 + thumb_func_end sub_80C0100 + + thumb_func_start sub_80C0238 +sub_80C0238: @ 80C0238 + push {r4,lr} + sub sp, 0x4 + ldr r0, _080C0258 @ =gUnknown_20399D4 + ldr r1, [r0] + ldr r2, _080C025C @ =0x000047a8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x8 + bls _080C024C + b _080C03B0 +_080C024C: + lsls r0, 2 + ldr r1, _080C0260 @ =_080C0264 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C0258: .4byte gUnknown_20399D4 +_080C025C: .4byte 0x000047a8 +_080C0260: .4byte _080C0264 + .align 2, 0 +_080C0264: + .4byte _080C0288 + .4byte _080C0298 + .4byte _080C02FC + .4byte _080C0302 + .4byte _080C0340 + .4byte _080C034E + .4byte _080C0364 + .4byte _080C037C + .4byte _080C0394 +_080C0288: + ldr r0, _080C0294 @ =gUnknown_83EF23C + movs r1, 0xC0 + movs r2, 0x20 + bl sub_80703EC + b _080C03C8 + .align 2, 0 +_080C0294: .4byte gUnknown_83EF23C +_080C0298: + ldr r0, _080C02EC @ =gUnknown_83EF2DC + movs r1, 0 + movs r2, 0xA0 + bl sub_80703EC + bl sub_80BFEA0 + ldr r0, _080C02F0 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C02F4 @ =0x00004796 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080C02B6 + b _080C03C8 +_080C02B6: + ldr r4, _080C02F8 @ =gUnknown_83EF25A + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x20 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x30 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x40 + movs r2, 0x2 + bl sub_80703EC + b _080C03C8 + .align 2, 0 +_080C02EC: .4byte gUnknown_83EF2DC +_080C02F0: .4byte gUnknown_20399D4 +_080C02F4: .4byte 0x00004796 +_080C02F8: .4byte gUnknown_83EF25A +_080C02FC: + bl sub_80F6808 + b _080C03C8 +_080C0302: + ldr r1, _080C0330 @ =gUnknown_83EF61C + movs r4, 0 + str r4, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _080C0334 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r2, _080C0338 @ =0x00004796 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080C03C8 + ldr r1, _080C033C @ =gUnknown_83F1978 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _080C03C8 + .align 2, 0 +_080C0330: .4byte gUnknown_83EF61C +_080C0334: .4byte gUnknown_20399D4 +_080C0338: .4byte 0x00004796 +_080C033C: .4byte gUnknown_83F1978 +_080C0340: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C03C8 + b _080C03D6 +_080C034E: + ldr r0, _080C035C @ =gUnknown_83F089C + ldr r1, _080C0360 @ =gUnknown_20399D4 + ldr r1, [r1] + adds r1, 0x26 + bl LZ77UnCompWram + b _080C03C8 + .align 2, 0 +_080C035C: .4byte gUnknown_83F089C +_080C0360: .4byte gUnknown_20399D4 +_080C0364: + ldr r0, _080C0370 @ =gUnknown_83F0AFC + ldr r1, _080C0374 @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C0378 @ =0x000004d6 + b _080C039C + .align 2, 0 +_080C0370: .4byte gUnknown_83F0AFC +_080C0374: .4byte gUnknown_20399D4 +_080C0378: .4byte 0x000004d6 +_080C037C: + ldr r0, _080C0388 @ =gUnknown_83F0C0C + ldr r1, _080C038C @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C0390 @ =0x00000986 + b _080C039C + .align 2, 0 +_080C0388: .4byte gUnknown_83F0C0C +_080C038C: .4byte gUnknown_20399D4 +_080C0390: .4byte 0x00000986 +_080C0394: + ldr r0, _080C03A4 @ =gUnknown_83F0CF0 + ldr r1, _080C03A8 @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C03AC @ =0x00000e36 +_080C039C: + adds r1, r2 + bl LZ77UnCompWram + b _080C03C8 + .align 2, 0 +_080C03A4: .4byte gUnknown_83F0CF0 +_080C03A8: .4byte gUnknown_20399D4 +_080C03AC: .4byte 0x00000e36 +_080C03B0: + ldr r0, _080C03C0 @ =gUnknown_83F19A0 + ldr r2, _080C03C4 @ =0x000012e6 + adds r1, r2 + bl LZ77UnCompWram + movs r0, 0x1 + b _080C03D8 + .align 2, 0 +_080C03C0: .4byte gUnknown_83F19A0 +_080C03C4: .4byte 0x000012e6 +_080C03C8: + ldr r0, _080C03E0 @ =gUnknown_20399D4 + ldr r1, [r0] + ldr r0, _080C03E4 @ =0x000047a8 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080C03D6: + movs r0, 0 +_080C03D8: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C03E0: .4byte gUnknown_20399D4 +_080C03E4: .4byte 0x000047a8 + thumb_func_end sub_80C0238 + + thumb_func_start sub_80C03E8 +sub_80C03E8: @ 80C03E8 + push {lr} + ldr r0, _080C0404 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C0408 @ =0x000047b8 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_807741C + ldr r0, _080C040C @ =sub_80C08B4 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080C0404: .4byte gUnknown_20399D4 +_080C0408: .4byte 0x000047b8 +_080C040C: .4byte sub_80C08B4 + thumb_func_end sub_80C03E8 + + thumb_func_start sub_80C0410 +sub_80C0410: @ 80C0410 + push {r4,r5,lr} + bl sub_80C0E20 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + bl sub_80C3514 + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + bl sub_80C3508 + adds r3, r0, 0 + lsls r3, 16 + asrs r3, 16 + adds r0, r5, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_80C4164 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x63 + beq _080C0446 + movs r0, 0x1 + b _080C0448 +_080C0446: + movs r0, 0 +_080C0448: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80C0410 + + thumb_func_start sub_80C0450 +sub_80C0450: @ 80C0450 + push {lr} + bl sub_80C0410 + cmp r0, 0 + beq _080C04E0 + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C0474 + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + cmp r0, 0 + bne _080C048E +_080C0474: + movs r0, 0x1 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C0494 + movs r0, 0x1 + bl sub_80C3AC8 + lsls r0, 24 + cmp r0, 0 + beq _080C0494 +_080C048E: + movs r0, 0x65 + bl sub_80722CC +_080C0494: + bl sub_80C3508 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x15 + bne _080C04C2 + bl sub_80C3514 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bne _080C04C2 + movs r0, 0 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C04C2 + movs r0, 0xE1 + bl sub_80722CC + b _080C04E0 +_080C04C2: + bl sub_80C3508 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x15 + bne _080C04E0 + bl sub_80C3514 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xD + bne _080C04E0 + movs r0, 0xE1 + bl sub_80722CC +_080C04E0: + pop {r0} + bx r0 + thumb_func_end sub_80C0450 + + thumb_func_start sub_80C04E4 +sub_80C04E4: @ 80C04E4 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080C0508 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C050C @ =0x000047a0 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x5 + bls _080C04FC + b _080C07B0 +_080C04FC: + lsls r0, 2 + ldr r1, _080C0510 @ =_080C0514 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C0508: .4byte gUnknown_20399D4 +_080C050C: .4byte 0x000047a0 +_080C0510: .4byte _080C0514 + .align 2, 0 +_080C0514: + .4byte _080C052C + .4byte _080C0560 + .4byte _080C05E0 + .4byte _080C0624 + .4byte _080C0760 + .4byte _080C0788 +_080C052C: + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080C0558 @ =gUnknown_20399D4 + ldr r1, [r4] + ldr r2, _080C055C @ =0x000047b8 + adds r1, r2 + ldr r2, [r1] + adds r1, r5, 0 + bl sub_80C4398 + movs r0, 0 + movs r1, 0 + bl sub_80C3008 + movs r0, 0x1 + movs r1, 0x1 + bl sub_80C41D8 + ldr r1, [r4] + b _080C079C + .align 2, 0 +_080C0558: .4byte gUnknown_20399D4 +_080C055C: .4byte 0x000047b8 +_080C0560: + ldr r0, _080C057C @ =gUnknown_20399D4 + ldr r1, [r0] + ldr r2, _080C0580 @ =0x00004799 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080C0584 + adds r2, 0x1F + adds r0, r1, r2 + ldr r1, [r0] + adds r0, r5, 0 + bl sub_80C2208 + b _080C0798 + .align 2, 0 +_080C057C: .4byte gUnknown_20399D4 +_080C0580: .4byte 0x00004799 +_080C0584: + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _080C05D8 @ =gUnknown_8418EB5 + bl sub_80C4E18 + ldr r0, _080C05DC @ =gUnknown_8418E8B + bl sub_80C4E74 + movs r0, 0 + bl sub_80C4ED0 + movs r0, 0 + bl sub_80C4324 + movs r0, 0 + bl sub_80C3154 + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0 + bl sub_80C48BC + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0 + bl sub_80C4960 + b _080C0798 + .align 2, 0 +_080C05D8: .4byte gUnknown_8418EB5 +_080C05DC: .4byte gUnknown_8418E8B +_080C05E0: + ldr r0, _080C0618 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C05EE + b _080C07C2 +_080C05EE: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _080C05FA + b _080C07C2 +_080C05FA: + bl sub_80C0B18 + movs r0, 0 + bl sub_8003FA0 + bl sub_80C0BB0 + movs r0, 0x1 + bl sub_8003FA0 + ldr r0, _080C061C @ =gUnknown_20399D4 + ldr r1, [r0] + ldr r2, _080C0620 @ =0x000047a0 + adds r1, r2 + b _080C07A0 + .align 2, 0 +_080C0618: .4byte gUnknown_2037AB8 +_080C061C: .4byte gUnknown_20399D4 +_080C0620: .4byte 0x000047a0 +_080C0624: + bl sub_80C3400 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x5 + bls _080C0634 + b _080C07C2 +_080C0634: + lsls r0, 2 + ldr r1, _080C0640 @ =_080C0644 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C0640: .4byte _080C0644 + .align 2, 0 +_080C0644: + .4byte _080C065C + .4byte _080C07C2 + .4byte _080C0662 + .4byte _080C070C + .4byte _080C0740 + .4byte _080C0798 +_080C065C: + bl sub_80C3178 + b _080C07C2 +_080C0662: + bl sub_80C0B18 + bl sub_80C0BB0 + bl sub_80C0B9C + bl sub_80C0450 + bl sub_80C3580 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC5 + beq _080C06A8 + movs r0, 0x1 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C068E + b _080C07C2 +_080C068E: + movs r0, 0x1 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080C0700 + ldr r0, _080C06A4 @ =gUnknown_8418E8D + bl sub_80C4E74 + b _080C07C2 + .align 2, 0 +_080C06A4: .4byte gUnknown_8418E8D +_080C06A8: + bl sub_80C3508 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x15 + bne _080C06DC + bl sub_80C3514 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bne _080C06DC + movs r0, 0 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C06DC + ldr r0, _080C06D8 @ =gUnknown_8418EA7 + bl sub_80C4E74 + b _080C07C2 + .align 2, 0 +_080C06D8: .4byte gUnknown_8418EA7 +_080C06DC: + bl sub_80C3508 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x15 + bne _080C0700 + bl sub_80C3514 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xD + bne _080C0700 + ldr r0, _080C06FC @ =gUnknown_8418E95 + bl sub_80C4E74 + b _080C07C2 + .align 2, 0 +_080C06FC: .4byte gUnknown_8418E95 +_080C0700: + ldr r0, _080C0708 @ =gUnknown_8418E8B + bl sub_80C4E74 + b _080C07C2 + .align 2, 0 +_080C0708: .4byte gUnknown_8418E8B +_080C070C: + movs r0, 0x1 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080C07C2 + ldr r0, _080C0734 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C0738 @ =0x00004798 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080C07C2 + ldr r2, _080C073C @ =sub_80C07F8 + movs r0, 0 + adds r1, r5, 0 + bl sub_80C195C + b _080C07C2 + .align 2, 0 +_080C0734: .4byte gUnknown_20399D4 +_080C0738: .4byte 0x00004798 +_080C073C: .4byte sub_80C07F8 +_080C0740: + ldr r0, _080C0754 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r2, _080C0758 @ =0x0000479b + adds r0, r2 + ldrb r0, [r0] + ldr r2, _080C075C @ =sub_80C07F8 + adds r1, r5, 0 + bl sub_80C0E70 + b _080C07C2 + .align 2, 0 +_080C0754: .4byte gUnknown_20399D4 +_080C0758: .4byte 0x0000479b +_080C075C: .4byte sub_80C07F8 +_080C0760: + movs r0, 0x2 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C0776 + adds r0, r5, 0 + bl sub_80C2C1C + b _080C0798 +_080C0776: + ldr r0, _080C0780 @ =gUnknown_20399D4 + ldr r1, [r0] + ldr r2, _080C0784 @ =0x000047a0 + adds r1, r2 + b _080C07A0 + .align 2, 0 +_080C0780: .4byte gUnknown_20399D4 +_080C0784: .4byte 0x000047a0 +_080C0788: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080C0798: + ldr r0, _080C07A8 @ =gUnknown_20399D4 + ldr r1, [r0] +_080C079C: + ldr r0, _080C07AC @ =0x000047a0 + adds r1, r0 +_080C07A0: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C07C2 + .align 2, 0 +_080C07A8: .4byte gUnknown_20399D4 +_080C07AC: .4byte 0x000047a0 +_080C07B0: + ldr r0, _080C07CC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080C07C2 + adds r0, r5, 0 + bl sub_80C0820 +_080C07C2: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C07CC: .4byte gUnknown_2037AB8 + thumb_func_end sub_80C04E4 + + thumb_func_start sub_80C07D0 +sub_80C07D0: @ 80C07D0 + ldr r1, _080C07DC @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C07E0 @ =0x000047b8 + adds r1, r2 + str r0, [r1] + bx lr + .align 2, 0 +_080C07DC: .4byte gUnknown_20399D4 +_080C07E0: .4byte 0x000047b8 + thumb_func_end sub_80C07D0 + + thumb_func_start sub_80C07E4 +sub_80C07E4: @ 80C07E4 + ldr r0, _080C07F0 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C07F4 @ =0x000047b8 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_080C07F0: .4byte gUnknown_20399D4 +_080C07F4: .4byte 0x000047b8 + thumb_func_end sub_80C07E4 + + thumb_func_start sub_80C07F8 +sub_80C07F8: @ 80C07F8 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C0814 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080C0818 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r2, _080C081C @ =0x000047b8 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + .align 2, 0 +_080C0814: .4byte gUnknown_3005090 +_080C0818: .4byte gUnknown_20399D4 +_080C081C: .4byte 0x000047b8 + thumb_func_end sub_80C07F8 + + thumb_func_start sub_80C0820 +sub_80C0820: @ 80C0820 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x2 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C0838 + bl sub_80C25BC +_080C0838: + bl sub_80C4A04 + bl sub_80C3188 + bl sub_80C4348 + bl sub_80C4D30 + adds r0, r4, 0 + bl sub_8077508 + bl sub_8003ECC + ldr r0, _080C086C @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C0870 @ =0x000047bc + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _080C0878 + ldr r0, _080C0874 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 + b _080C087C + .align 2, 0 +_080C086C: .4byte gUnknown_20399D4 +_080C0870: .4byte 0x000047bc +_080C0874: .4byte gUnknown_30030F0 +_080C0878: + bl sub_8000544 +_080C087C: + ldr r4, _080C0894 @ =gUnknown_20399D4 + ldr r0, [r4] + cmp r0, 0 + beq _080C088C + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C088C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C0894: .4byte gUnknown_20399D4 + thumb_func_end sub_80C0820 + + thumb_func_start sub_80C0898 +sub_80C0898: @ 80C0898 + push {r4,lr} + ldr r4, _080C08B0 @ =gUnknown_20399D4 + ldr r0, [r4] + cmp r0, 0 + beq _080C08AA + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C08AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C08B0: .4byte gUnknown_20399D4 + thumb_func_end sub_80C0898 + + thumb_func_start sub_80C08B4 +sub_80C08B4: @ 80C08B4 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_80C08B4 + + thumb_func_start sub_80C08CC +sub_80C08CC: @ 80C08CC + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_80C08CC + + thumb_func_start sub_80C08E0 +sub_80C08E0: @ 80C08E0 + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_80C08E0 + + thumb_func_start sub_80C08F4 +sub_80C08F4: @ 80C08F4 + push {lr} + ldr r0, _080C0900 @ =sub_80C08CC + bl sub_80006F4 + pop {r0} + bx r0 + .align 2, 0 +_080C0900: .4byte sub_80C08CC + thumb_func_end sub_80C08F4 + + thumb_func_start sub_80C0904 +sub_80C0904: @ 80C0904 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _080C0A18 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _080C0A1C @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_080C092A: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _080C092A + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _080C0A18 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _080C0A20 @ =gUnknown_83F1A50 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _080C0A24 @ =gUnknown_83F1A60 + bl sub_8003B24 + bl sub_8002C28 + ldr r1, _080C0A28 @ =0x00006040 + movs r0, 0 + bl sub_8000A38 + bl sub_80C0A2C + bl sub_80C0AB8 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C0A18: .4byte 0x040000d4 +_080C0A1C: .4byte 0x81000800 +_080C0A20: .4byte gUnknown_83F1A50 +_080C0A24: .4byte gUnknown_83F1A60 +_080C0A28: .4byte 0x00006040 + thumb_func_end sub_80C0904 + + thumb_func_start sub_80C0A2C +sub_80C0A2C: @ 80C0A2C + push {r4,lr} + ldr r4, _080C0A5C @ =gUnknown_20399D4 + ldr r1, [r4] + ldr r0, _080C0A60 @ =0x00001796 + adds r1, r0 + movs r0, 0 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _080C0A64 @ =0x00002796 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _080C0A68 @ =0x00003796 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C0A5C: .4byte gUnknown_20399D4 +_080C0A60: .4byte 0x00001796 +_080C0A64: .4byte 0x00002796 +_080C0A68: .4byte 0x00003796 + thumb_func_end sub_80C0A2C + + thumb_func_start sub_80C0A6C +sub_80C0A6C: @ 80C0A6C + push {lr} + bl sub_8006B10 + bl sub_8070528 + bl sub_80088F0 + bl sub_80773BC + bl sub_8087E64 + pop {r0} + bx r0 + thumb_func_end sub_80C0A6C + + thumb_func_start sub_80C0A88 +sub_80C0A88: @ 80C0A88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080C0A98 + cmp r0, 0x1 + beq _080C0AA6 + b _080C0AB2 +_080C0A98: + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + b _080C0AB2 +_080C0AA6: + movs r0, 0 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019D0 +_080C0AB2: + pop {r0} + bx r0 + thumb_func_end sub_80C0A88 + + thumb_func_start sub_80C0AB8 +sub_80C0AB8: @ 80C0AB8 + push {r4,lr} + bl sub_80C4BE4 + movs r0, 0 + movs r1, 0x11 + movs r2, 0xC0 + bl sub_80C4C2C + movs r0, 0x6 + bl sub_80C4C48 + movs r0, 0x39 + movs r1, 0x39 + bl sub_80C4C74 + movs r0, 0x1B + bl sub_80C4C88 + ldr r4, _080C0B14 @ =gUnknown_83F1B0C + movs r0, 0 + adds r1, r4, 0 + bl sub_80C4CF0 + adds r4, 0x8 + movs r0, 0x1 + adds r1, r4, 0 + bl sub_80C4CF0 + movs r0, 0 + movs r1, 0 + bl sub_80C4C9C + bl sub_80C3580 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC5 + beq _080C0B0C + movs r0, 0x1 + movs r1, 0 + bl sub_80C4C9C +_080C0B0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C0B14: .4byte gUnknown_83F1B0C + thumb_func_end sub_80C0AB8 + + thumb_func_start sub_80C0B18 +sub_80C0B18: @ 80C0B18 + push {r4,r5,lr} + sub sp, 0xC + movs r0, 0 + bl sub_80040B8 + movs r0, 0 + movs r1, 0 + bl sub_800445C + bl sub_80C3520 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC5 + bne _080C0B44 + ldr r1, _080C0B40 @ =gUnknown_83F1B1C + movs r0, 0 + bl sub_80C4CF0 + b _080C0B88 + .align 2, 0 +_080C0B40: .4byte gUnknown_83F1B1C +_080C0B44: + ldr r5, _080C0B90 @ =gUnknown_20399D4 + ldr r4, [r5] + bl sub_80C3520 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + bl sub_80C4D78 + ldr r0, _080C0B94 @ =gUnknown_83F1A90 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, [r5] + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0x2 + bl sub_812E51C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + ldr r1, _080C0B98 @ =gUnknown_83F1B0C + movs r0, 0 + bl sub_80C4CF0 +_080C0B88: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C0B90: .4byte gUnknown_20399D4 +_080C0B94: .4byte gUnknown_83F1A90 +_080C0B98: .4byte gUnknown_83F1B0C + thumb_func_end sub_80C0B18 + + thumb_func_start sub_80C0B9C +sub_80C0B9C: @ 80C0B9C + push {lr} + ldr r1, _080C0BAC @ =gUnknown_83F1B14 + movs r0, 0x1 + bl sub_80C4CF0 + pop {r0} + bx r0 + .align 2, 0 +_080C0BAC: .4byte gUnknown_83F1B14 + thumb_func_end sub_80C0B9C + + thumb_func_start sub_80C0BB0 +sub_80C0BB0: @ 80C0BB0 + push {r4-r6,lr} + sub sp, 0xC + ldr r5, _080C0C84 @ =gUnknown_20399D4 + ldr r1, [r5] + ldr r2, _080C0C88 @ =0x000047ac + adds r0, r1, r2 + movs r6, 0 + strh r6, [r0] + ldr r3, _080C0C8C @ =0x000047ae + adds r2, r1, r3 + movs r0, 0x18 + strh r0, [r2] + ldr r0, _080C0C90 @ =0x000047b0 + adds r1, r0 + movs r0, 0x20 + strh r0, [r1] + movs r0, 0x1 + movs r1, 0x1 + bl sub_80C4C9C + movs r0, 0x1 + bl sub_80040B8 + bl sub_80C3580 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xC5 + beq _080C0C7A + adds r4, r0, 0 + subs r4, 0x58 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x1 + movs r1, 0 + bl sub_80C4C9C + ldr r0, [r5] + ldr r1, _080C0C88 @ =0x000047ac + adds r0, r1 + movs r1, 0x1 + strh r1, [r0] + ldr r0, _080C0C94 @ =gUnknown_83F1CAC + lsls r4, 2 + adds r4, r0 + ldr r4, [r4] + adds r0, r4, 0 + bl sub_8008E08 + ldr r2, [r5] + ldr r3, _080C0C98 @ =0x000047aa + adds r1, r2, r3 + strh r0, [r1] + ldrh r1, [r1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, 0x32 + adds r3, 0x4 + adds r1, r2, r3 + strh r0, [r1] + ldr r0, _080C0C90 @ =0x000047b0 + adds r2, r0 + movs r0, 0x30 + strh r0, [r2] + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + ldr r0, [r5] + adds r0, 0x13 + adds r1, r4, 0 + bl sub_8008D84 + ldr r4, _080C0C9C @ =gUnknown_83F1A9C + movs r0, 0x1 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 22 + subs r0, 0x8 + adds r0, r4 + ldr r0, [r0] + str r0, [sp] + str r6, [sp, 0x4] + ldr r0, [r5] + adds r0, 0x13 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0xC + movs r3, 0x2 + bl sub_812E51C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 +_080C0C7A: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C0C84: .4byte gUnknown_20399D4 +_080C0C88: .4byte 0x000047ac +_080C0C8C: .4byte 0x000047ae +_080C0C90: .4byte 0x000047b0 +_080C0C94: .4byte gUnknown_83F1CAC +_080C0C98: .4byte 0x000047aa +_080C0C9C: .4byte gUnknown_83F1A9C + thumb_func_end sub_80C0BB0 + + thumb_func_start sub_80C0CA0 +sub_80C0CA0: @ 80C0CA0 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_80C0CA0 + + thumb_func_start sub_80C0CC8 +sub_80C0CC8: @ 80C0CC8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r7, r1, 0 + lsls r0, 24 + ldr r2, _080C0D0C @ =gUnknown_20399D4 + lsrs r0, 12 + ldr r1, _080C0D10 @ =0x00001796 + adds r0, r1 + ldr r1, [r2] + adds r6, r1, r0 + movs r1, 0 + mov r8, r2 +_080C0CE4: + movs r2, 0 + lsls r5, r1, 16 + asrs r1, r5, 16 + lsls r3, r1, 5 + lsls r0, r1, 4 + subs r0, r1 + lsls r4, r0, 1 +_080C0CF2: + lsls r0, r2, 16 + asrs r1, r0, 16 + adds r2, r0, 0 + cmp r1, 0x1D + bgt _080C0D14 + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + adds r1, r4, r1 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + b _080C0D1C + .align 2, 0 +_080C0D0C: .4byte gUnknown_20399D4 +_080C0D10: .4byte 0x00001796 +_080C0D14: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r7] +_080C0D1C: + strh r1, [r0] + movs r1, 0x80 + lsls r1, 9 + adds r0, r2, r1 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x1F + ble _080C0CF2 + adds r0, r5, r1 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080C0CE4 + mov r1, r8 + ldr r0, [r1] + ldr r1, _080C0D94 @ =0x00004797 + adds r0, r1 + ldrb r5, [r0] + cmp r5, 0x1 + bne _080C0D86 + movs r4, 0x3 + str r4, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + str r5, [sp, 0xC] + movs r0, 0 + movs r1, 0xF0 + movs r2, 0x18 + movs r3, 0xE + bl sub_8002590 + movs r1, 0x80 + lsls r1, 1 + str r4, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + str r5, [sp, 0xC] + movs r0, 0 + movs r2, 0x18 + movs r3, 0xF + bl sub_8002590 + movs r1, 0x88 + lsls r1, 1 + str r4, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + str r5, [sp, 0xC] + movs r0, 0 + movs r2, 0x18 + movs r3, 0x10 + bl sub_8002590 +_080C0D86: + ldr r0, _080C0D98 @ =gUnknown_20399D8 + ldr r0, [r0] + cmp r0, 0 + beq _080C0DA0 + ldr r1, _080C0D9C @ =0x00001cca + b _080C0DA6 + .align 2, 0 +_080C0D94: .4byte 0x00004797 +_080C0D98: .4byte gUnknown_20399D8 +_080C0D9C: .4byte 0x00001cca +_080C0DA0: + mov r1, r8 + ldr r0, [r1] + ldr r1, _080C0DF8 @ =0x0000479b +_080C0DA6: + adds r0, r1 + ldrb r4, [r0] + cmp r4, 0x2 + bne _080C0DCC + ldr r0, _080C0DFC @ =0x000008b5 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080C0DCC + movs r0, 0x3 + str r0, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0x3 + movs r2, 0xD + movs r3, 0xB + bl sub_8002454 +_080C0DCC: + cmp r4, 0x3 + bne _080C0DEC + ldr r0, _080C0E00 @ =0x000008c2 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080C0DEC + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0x3 + movs r2, 0x15 + movs r3, 0x10 + bl sub_8002454 +_080C0DEC: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C0DF8: .4byte 0x0000479b +_080C0DFC: .4byte 0x000008b5 +_080C0E00: .4byte 0x000008c2 + thumb_func_end sub_80C0CC8 + + thumb_func_start sub_80C0E04 +sub_80C0E04: @ 80C0E04 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C0E18 @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C0E1C @ =0x00004797 + adds r1, r2 + adds r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080C0E18: .4byte gUnknown_20399D4 +_080C0E1C: .4byte 0x00004797 + thumb_func_end sub_80C0E04 + + thumb_func_start sub_80C0E20 +sub_80C0E20: @ 80C0E20 + ldr r0, _080C0E2C @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C0E30 @ =0x0000479b + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080C0E2C: .4byte gUnknown_20399D4 +_080C0E30: .4byte 0x0000479b + thumb_func_end sub_80C0E20 + + thumb_func_start sub_80C0E34 +sub_80C0E34: @ 80C0E34 + ldr r0, _080C0E40 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C0E44 @ =0x0000479c + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080C0E40: .4byte gUnknown_20399D4 +_080C0E44: .4byte 0x0000479c + thumb_func_end sub_80C0E34 + + thumb_func_start sub_80C0E48 +sub_80C0E48: @ 80C0E48 + ldr r1, _080C0E54 @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C0E58 @ =0x0000479b + adds r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080C0E54: .4byte gUnknown_20399D4 +_080C0E58: .4byte 0x0000479b + thumb_func_end sub_80C0E48 + + thumb_func_start sub_80C0E5C +sub_80C0E5C: @ 80C0E5C + ldr r1, _080C0E68 @ =gUnknown_20399D4 + ldr r1, [r1] + ldr r2, _080C0E6C @ =0x0000479c + adds r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080C0E68: .4byte gUnknown_20399D4 +_080C0E6C: .4byte 0x0000479c + thumb_func_end sub_80C0E5C + + thumb_func_start sub_80C0E70 +sub_80C0E70: @ 80C0E70 + push {r4-r7,lr} + adds r7, r2, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r4, _080C0EA0 @ =gUnknown_20399D8 + movs r0, 0xE7 + lsls r0, 5 + bl sub_8002BB0 + str r0, [r4] + ldr r0, _080C0EA4 @ =0x00000846 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080C0EAC + ldr r0, [r4] + ldr r1, _080C0EA8 @ =0x00001ccc + adds r0, r1 + movs r1, 0x3 + b _080C0ED2 + .align 2, 0 +_080C0EA0: .4byte gUnknown_20399D8 +_080C0EA4: .4byte 0x00000846 +_080C0EA8: .4byte 0x00001ccc +_080C0EAC: + ldr r0, _080C0EC4 @ =0x00000845 + bl sub_806E6D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080C0ECC + ldr r0, [r4] + ldr r2, _080C0EC8 @ =0x00001ccc + adds r0, r2 + movs r1, 0x1 + b _080C0ED2 + .align 2, 0 +_080C0EC4: .4byte 0x00000845 +_080C0EC8: .4byte 0x00001ccc +_080C0ECC: + ldr r0, [r4] + ldr r3, _080C0F14 @ =0x00001ccc + adds r0, r3 +_080C0ED2: + strb r1, [r0] + ldr r4, _080C0F18 @ =gUnknown_20399D8 + ldr r2, [r4] + ldr r0, _080C0F1C @ =0x000018b8 + adds r1, r2, r0 + movs r0, 0x58 + strh r0, [r1] + ldr r3, _080C0F20 @ =0x00001cc4 + adds r1, r2, r3 + movs r0, 0x98 + strh r0, [r1] + ldr r1, _080C0F14 @ =0x00001ccc + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x2 + beq _080C0F2C + cmp r0, 0x2 + bgt _080C0F4C + cmp r0, 0x1 + bne _080C0F4C + ldr r0, _080C0F24 @ =gUnknown_83F1084 + movs r3, 0x80 + lsls r3, 5 + adds r1, r2, r3 + bl LZ77UnCompWram + ldr r0, [r4] + ldr r1, _080C0F28 @ =0x00001cce + adds r0, r1 + movs r1, 0x6 + strh r1, [r0] + b _080C0F64 + .align 2, 0 +_080C0F14: .4byte 0x00001ccc +_080C0F18: .4byte gUnknown_20399D8 +_080C0F1C: .4byte 0x000018b8 +_080C0F20: .4byte 0x00001cc4 +_080C0F24: .4byte gUnknown_83F1084 +_080C0F28: .4byte 0x00001cce +_080C0F2C: + ldr r0, _080C0F44 @ =gUnknown_83F1190 + movs r3, 0x80 + lsls r3, 5 + adds r1, r2, r3 + bl LZ77UnCompWram + ldr r0, [r4] + ldr r1, _080C0F48 @ =0x00001cce + adds r0, r1 + movs r1, 0x4 + strh r1, [r0] + b _080C0F64 + .align 2, 0 +_080C0F44: .4byte gUnknown_83F1190 +_080C0F48: .4byte 0x00001cce +_080C0F4C: + ldr r0, _080C0FB4 @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r3, _080C0FB8 @ =0x00001cce + adds r2, r1, r3 + movs r0, 0x3 + strh r0, [r2] + ldr r0, _080C0FBC @ =gUnknown_83F0F1C + movs r2, 0x80 + lsls r2, 5 + adds r1, r2 + bl LZ77UnCompWram +_080C0F64: + ldr r0, _080C0FC0 @ =gUnknown_83F0580 + ldr r4, _080C0FB4 @ =gUnknown_20399D8 + ldr r1, [r4] + bl LZ77UnCompWram + ldr r0, [r4] + ldr r3, _080C0FC4 @ =0x00001cc8 + adds r0, r3 + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _080C0FC8 @ =0x00001cca + adds r0, r1 + strb r6, [r0] + ldr r0, [r4] + ldr r2, _080C0FCC @ =0x00001cd0 + adds r0, r2 + str r7, [r0] + bl sub_80C0E34 + ldr r1, [r4] + ldr r3, _080C0FD0 @ =0x00001ccb + adds r1, r3 + strb r0, [r1] + movs r0, 0 + bl sub_80C4AAC + ldr r0, _080C0FD4 @ =gUnknown_8418EB0 + bl sub_80C4E74 + ldr r1, _080C0FD8 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C0FDC @ =sub_80C1098 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C0FB4: .4byte gUnknown_20399D8 +_080C0FB8: .4byte 0x00001cce +_080C0FBC: .4byte gUnknown_83F0F1C +_080C0FC0: .4byte gUnknown_83F0580 +_080C0FC4: .4byte 0x00001cc8 +_080C0FC8: .4byte 0x00001cca +_080C0FCC: .4byte 0x00001cd0 +_080C0FD0: .4byte 0x00001ccb +_080C0FD4: .4byte gUnknown_8418EB0 +_080C0FD8: .4byte gUnknown_3005090 +_080C0FDC: .4byte sub_80C1098 + thumb_func_end sub_80C0E70 + + thumb_func_start sub_80C0FE0 +sub_80C0FE0: @ 80C0FE0 + push {lr} + bl sub_80C4BE4 + movs r0, 0x1B + movs r1, 0x4 + movs r2, 0x40 + bl sub_80C4C2C + ldr r0, _080C100C @ =gUnknown_20399D8 + ldr r0, [r0] + ldr r1, _080C1010 @ =0x00001ccd + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + bl sub_80C4C5C + pop {r0} + bx r0 + .align 2, 0 +_080C100C: .4byte gUnknown_20399D8 +_080C1010: .4byte 0x00001ccd + thumb_func_end sub_80C0FE0 + + thumb_func_start sub_80C1014 +sub_80C1014: @ 80C1014 + push {r4,lr} + ldr r4, _080C1028 @ =gUnknown_20399D8 + ldr r0, [r4] + ldr r2, _080C102C @ =0x00001ccd + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0xF + bls _080C1030 + movs r0, 0x1 + b _080C104C + .align 2, 0 +_080C1028: .4byte gUnknown_20399D8 +_080C102C: .4byte 0x00001ccd +_080C1030: + ldrb r1, [r1] + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + bl sub_80C4C5C + ldr r1, [r4] + ldr r0, _080C1054 @ =0x00001ccd + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x2 + strb r0, [r1] + movs r0, 0 +_080C104C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C1054: .4byte 0x00001ccd + thumb_func_end sub_80C1014 + + thumb_func_start sub_80C1058 +sub_80C1058: @ 80C1058 + push {lr} + ldr r2, _080C106C @ =gUnknown_20399D8 + ldr r0, [r2] + ldr r3, _080C1070 @ =0x00001ccd + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, 0x1 + bhi _080C1074 + movs r0, 0x1 + b _080C108E + .align 2, 0 +_080C106C: .4byte gUnknown_20399D8 +_080C1070: .4byte 0x00001ccd +_080C1074: + subs r0, 0x2 + strb r0, [r1] + ldr r0, [r2] + ldr r1, _080C1094 @ =0x00001ccd + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + bl sub_80C4C5C + movs r0, 0 +_080C108E: + pop {r1} + bx r1 + .align 2, 0 +_080C1094: .4byte 0x00001ccd + thumb_func_end sub_80C1058 + + thumb_func_start sub_80C1098 +sub_80C1098: @ 80C1098 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080C10BC @ =gUnknown_20399D8 + ldr r0, [r1] + ldr r3, _080C10C0 @ =0x00001cc8 + adds r0, r3 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0xC + bls _080C10B0 + b _080C1274 +_080C10B0: + lsls r0, 2 + ldr r1, _080C10C4 @ =_080C10C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C10BC: .4byte gUnknown_20399D8 +_080C10C0: .4byte 0x00001cc8 +_080C10C4: .4byte _080C10C8 + .align 2, 0 +_080C10C8: + .4byte _080C10FC + .4byte _080C111C + .4byte _080C112E + .4byte _080C1146 + .4byte _080C115C + .4byte _080C1168 + .4byte _080C1180 + .4byte _080C1192 + .4byte _080C11B0 + .4byte _080C11BE + .4byte _080C1220 + .4byte _080C1236 + .4byte _080C1254 +_080C10FC: + bl sub_80C08E0 + ldr r0, _080C1110 @ =gUnknown_8418EBC + bl sub_80C4E18 + ldr r0, _080C1114 @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r0, _080C1118 @ =0x00001cc8 + adds r1, r0 + b _080C1262 + .align 2, 0 +_080C1110: .4byte gUnknown_8418EBC +_080C1114: .4byte gUnknown_20399D8 +_080C1118: .4byte 0x00001cc8 +_080C111C: + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 5 + movs r0, 0x2 + movs r3, 0 + bl sub_80017D0 + ldr r1, [r4] + b _080C125E +_080C112E: + ldr r1, [r4] + movs r0, 0x80 + lsls r0, 5 + adds r1, r0 + movs r0, 0x2 + bl sub_80C1324 + movs r0, 0x2 + bl sub_80020BC + ldr r1, [r4] + b _080C125E +_080C1146: + bl sub_80C0CA0 + ldr r0, _080C1154 @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r0, _080C1158 @ =0x00001cc8 + adds r1, r0 + b _080C1262 + .align 2, 0 +_080C1154: .4byte gUnknown_20399D8 +_080C1158: .4byte 0x00001cc8 +_080C115C: + bl sub_80C0FE0 + movs r0, 0x2 + bl sub_80019BC + b _080C125A +_080C1168: + bl sub_80C08F4 + ldr r0, _080C1178 @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r0, _080C117C @ =0x00001cc8 + adds r1, r0 + b _080C1262 + .align 2, 0 +_080C1178: .4byte gUnknown_20399D8 +_080C117C: .4byte 0x00001cc8 +_080C1180: + bl sub_80C1014 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C127A + bl sub_80C1390 + b _080C125A +_080C1192: + bl sub_80C144C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C127A + ldr r0, _080C11A8 @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r0, _080C11AC @ =0x00001cc8 + adds r1, r0 + b _080C1262 + .align 2, 0 +_080C11A8: .4byte gUnknown_20399D8 +_080C11AC: .4byte 0x00001cc8 +_080C11B0: + bl sub_80C16D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C127A + b _080C125A +_080C11BE: + bl sub_80C1478 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C127A + ldr r5, _080C1214 @ =gUnknown_20399D8 + ldr r0, [r5] + ldr r4, _080C1218 @ =0x00001cca + adds r0, r4 + ldrb r0, [r0] + bl sub_80C0E48 + bl sub_80C0E34 + ldr r1, [r5] + adds r1, r4 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _080C120C + movs r0, 0 + bl sub_80C4324 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x19 + movs r2, 0 + bl sub_80C48BC + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x19 + movs r2, 0 + bl sub_80C4960 +_080C120C: + ldr r1, [r5] + ldr r0, _080C121C @ =0x00001cc8 + adds r1, r0 + b _080C1262 + .align 2, 0 +_080C1214: .4byte gUnknown_20399D8 +_080C1218: .4byte 0x00001cca +_080C121C: .4byte 0x00001cc8 +_080C1220: + bl sub_80C12EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C127A + bl sub_80C1880 + bl sub_80C0FE0 + b _080C125A +_080C1236: + bl sub_80C1058 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C127A + ldr r0, _080C124C @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r0, _080C1250 @ =0x00001cc8 + adds r1, r0 + b _080C1262 + .align 2, 0 +_080C124C: .4byte gUnknown_20399D8 +_080C1250: .4byte 0x00001cc8 +_080C1254: + movs r0, 0 + bl sub_80C3154 +_080C125A: + ldr r0, _080C126C @ =gUnknown_20399D8 + ldr r1, [r0] +_080C125E: + ldr r3, _080C1270 @ =0x00001cc8 + adds r1, r3 +_080C1262: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C127A + .align 2, 0 +_080C126C: .4byte gUnknown_20399D8 +_080C1270: .4byte 0x00001cc8 +_080C1274: + adds r0, r2, 0 + bl sub_80C1280 +_080C127A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C1098 + + thumb_func_start sub_80C1280 +sub_80C1280: @ 80C1280 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C12D4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r4, _080C12D8 @ =gUnknown_20399D8 + ldr r0, [r4] + ldr r2, _080C12DC @ =0x00001cd0 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + movs r0, 0x2 + bl sub_80019D0 + ldr r0, _080C12E0 @ =gUnknown_8418EB5 + bl sub_80C4E18 + ldr r0, _080C12E4 @ =gUnknown_8418EA7 + bl sub_80C4E74 + bl sub_80C0AB8 + bl sub_80C0B9C + ldr r1, _080C12E8 @ =gUnknown_83F1B1C + movs r0, 0 + bl sub_80C4CF0 + ldr r0, [r4] + cmp r0, 0 + beq _080C12CC + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C12CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C12D4: .4byte gUnknown_3005090 +_080C12D8: .4byte gUnknown_20399D8 +_080C12DC: .4byte 0x00001cd0 +_080C12E0: .4byte gUnknown_8418EB5 +_080C12E4: .4byte gUnknown_8418EA7 +_080C12E8: .4byte gUnknown_83F1B1C + thumb_func_end sub_80C1280 + + thumb_func_start sub_80C12EC +sub_80C12EC: @ 80C12EC + push {lr} + ldr r0, _080C1308 @ =gUnknown_20399D8 + ldr r0, [r0] + ldr r2, _080C130C @ =0x00001cdc + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, 0 + bne _080C1310 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1 + b _080C131E + .align 2, 0 +_080C1308: .4byte gUnknown_20399D8 +_080C130C: .4byte 0x00001cdc +_080C1310: + subs r0, 0x1 + strh r0, [r1] + ldrh r1, [r1] + movs r0, 0x54 + bl sub_8000A38 + movs r0, 0 +_080C131E: + pop {r1} + bx r1 + thumb_func_end sub_80C12EC + + thumb_func_start sub_80C1324 +sub_80C1324: @ 80C1324 + push {r4-r7,lr} + adds r7, r1, 0 + lsls r0, 24 + ldr r1, _080C1360 @ =gUnknown_20399D4 + lsrs r0, 12 + ldr r2, _080C1364 @ =0x00001796 + adds r0, r2 + ldr r1, [r1] + adds r6, r1, r0 + movs r1, 0 +_080C1338: + movs r2, 0 + lsls r5, r1, 16 + asrs r1, r5, 16 + lsls r3, r1, 5 + lsls r0, r1, 4 + subs r0, r1 + lsls r4, r0, 1 +_080C1346: + lsls r0, r2, 16 + asrs r1, r0, 16 + adds r2, r0, 0 + cmp r1, 0x1D + bgt _080C1368 + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + adds r1, r4, r1 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + b _080C1370 + .align 2, 0 +_080C1360: .4byte gUnknown_20399D4 +_080C1364: .4byte 0x00001796 +_080C1368: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r7] +_080C1370: + strh r1, [r0] + movs r1, 0x80 + lsls r1, 9 + adds r0, r2, r1 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x1F + ble _080C1346 + adds r0, r5, r1 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080C1338 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C1324 + + thumb_func_start sub_80C1390 +sub_80C1390: @ 80C1390 + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _080C1428 @ =gUnknown_20399D8 + ldr r2, [r0] + ldr r1, _080C142C @ =0x00001cd4 + adds r0, r2, r1 + movs r1, 0x48 + strh r1, [r0] + ldr r5, _080C1430 @ =0xffff0000 + ldr r0, [sp] + ands r0, r5 + orrs r0, r1 + str r0, [sp] + ldr r0, _080C1434 @ =0x00001cce + adds r3, r2, r0 + ldr r1, _080C1438 @ =0x00001cca + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, 2 + ldrh r3, [r3] + adds r1, r3 + lsls r1, 3 + ldr r0, _080C143C @ =0x00001cd6 + adds r4, r2, r0 + strh r1, [r4] + lsls r1, 16 + ldr r3, _080C1440 @ =0x0000ffff + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + ldr r1, _080C1444 @ =0x00001cd8 + adds r0, r2, r1 + movs r1, 0xA8 + strh r1, [r0] + ldr r0, [sp, 0x4] + ands r0, r5 + orrs r0, r1 + str r0, [sp, 0x4] + ldrh r1, [r4] + adds r1, 0x20 + ldr r0, _080C1448 @ =0x00001cda + adds r2, r0 + strh r1, [r2] + ands r1, r3 + lsls r1, 16 + ldr r0, [sp, 0x4] + ands r0, r3 + orrs r0, r1 + str r0, [sp, 0x4] + bl sub_80C4BE4 + movs r0, 0 + movs r1, 0x15 + movs r2, 0xC0 + bl sub_80C4C2C + movs r0, 0x1F + movs r1, 0x15 + bl sub_80C4C74 + movs r0, 0x3F + bl sub_80C4C88 + movs r0, 0x1 + movs r1, 0 + bl sub_80C4C9C + movs r0, 0x1 + mov r1, sp + bl sub_80C4CF0 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C1428: .4byte gUnknown_20399D8 +_080C142C: .4byte 0x00001cd4 +_080C1430: .4byte 0xffff0000 +_080C1434: .4byte 0x00001cce +_080C1438: .4byte 0x00001cca +_080C143C: .4byte 0x00001cd6 +_080C1440: .4byte 0x0000ffff +_080C1444: .4byte 0x00001cd8 +_080C1448: .4byte 0x00001cda + thumb_func_end sub_80C1390 + + thumb_func_start sub_80C144C +sub_80C144C: @ 80C144C + push {lr} + ldr r0, _080C1460 @ =gUnknown_20399D8 + ldr r0, [r0] + ldr r2, _080C1464 @ =0x00001cdc + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, 0x5 + bls _080C1468 + movs r0, 0x1 + b _080C1474 + .align 2, 0 +_080C1460: .4byte gUnknown_20399D8 +_080C1464: .4byte 0x00001cdc +_080C1468: + adds r0, 0x1 + strh r0, [r1] + ldrh r0, [r1] + bl sub_80C4C48 + movs r0, 0 +_080C1474: + pop {r1} + bx r1 + thumb_func_end sub_80C144C + + thumb_func_start sub_80C1478 +sub_80C1478: @ 80C1478 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r6, 0 + ldr r0, _080C1574 @ =gUnknown_20399D8 + mov r8, r0 + ldr r5, [r0] + ldr r1, _080C1578 @ =0x00001cd4 + adds r0, r5, r1 + movs r1, 0x48 + strh r1, [r0] + ldr r4, _080C157C @ =0xffff0000 + ldr r0, [sp] + ands r0, r4 + orrs r0, r1 + str r0, [sp] + ldr r3, _080C1580 @ =0x00001cce + adds r2, r5, r3 + ldr r7, _080C1584 @ =0x00001cca + adds r0, r5, r7 + ldrb r1, [r0] + lsls r1, 2 + ldrh r2, [r2] + adds r1, r2 + lsls r1, 3 + ldr r0, _080C1588 @ =0x00001cd6 + adds r3, r5, r0 + strh r1, [r3] + lsls r1, 16 + ldr r2, _080C158C @ =0x0000ffff + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + str r0, [sp] + ldr r1, _080C1590 @ =0x00001cd8 + adds r0, r5, r1 + movs r1, 0xA8 + strh r1, [r0] + ldr r0, [sp, 0x4] + ands r0, r4 + orrs r0, r1 + str r0, [sp, 0x4] + ldrh r1, [r3] + adds r1, 0x20 + ldr r3, _080C1594 @ =0x00001cda + adds r0, r5, r3 + strh r1, [r0] + ands r1, r2 + lsls r1, 16 + ldr r0, [sp, 0x4] + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x4] + ldr r0, _080C1598 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080C150E + adds r1, r7, 0 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080C150E + movs r0, 0xF5 + bl sub_80722CC + mov r2, r8 + ldr r1, [r2] + adds r1, r7 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + movs r6, 0x1 +_080C150E: + ldr r0, _080C1598 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C1542 + ldr r4, _080C1574 @ =gUnknown_20399D8 + ldr r0, [r4] + ldr r3, _080C1584 @ =0x00001cca + adds r1, r0, r3 + ldr r2, _080C159C @ =0x00001ccc + adds r0, r2 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bcs _080C1542 + movs r0, 0xF5 + bl sub_80722CC + ldr r1, [r4] + ldr r3, _080C1584 @ =0x00001cca + adds r1, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r6, 0x1 +_080C1542: + ldr r2, _080C1598 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + ldr r4, _080C1574 @ =gUnknown_20399D8 + cmp r0, 0 + beq _080C15A8 + ldr r0, [r4] + ldr r1, _080C15A0 @ =0x00001cdc + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0x6 + bne _080C15A8 + movs r0, 0xC7 + bl sub_80722CC + ldr r0, [r4] + ldr r2, _080C1584 @ =0x00001cca + adds r1, r0, r2 + ldrb r1, [r1] + ldr r3, _080C15A4 @ =0x00001ccb + adds r0, r3 + strb r1, [r0] + movs r0, 0x1 + b _080C16AC + .align 2, 0 +_080C1574: .4byte gUnknown_20399D8 +_080C1578: .4byte 0x00001cd4 +_080C157C: .4byte 0xffff0000 +_080C1580: .4byte 0x00001cce +_080C1584: .4byte 0x00001cca +_080C1588: .4byte 0x00001cd6 +_080C158C: .4byte 0x0000ffff +_080C1590: .4byte 0x00001cd8 +_080C1594: .4byte 0x00001cda +_080C1598: .4byte gUnknown_30030F0 +_080C159C: .4byte 0x00001ccc +_080C15A0: .4byte 0x00001cdc +_080C15A4: .4byte 0x00001ccb +_080C15A8: + ldrh r1, [r2, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080C1604 + ldr r0, [r4] + ldr r2, _080C15FC @ =0x00001ccb + adds r1, r0, r2 + ldrb r1, [r1] + subs r2, 0x1 + adds r0, r2 + strb r1, [r0] + ldr r3, _080C1600 @ =gUnknown_20399D4 + ldr r0, [r4] + adds r0, r2 + ldrb r0, [r0] + lsls r1, r0, 2 + adds r1, r0 + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 4 + adds r0, 0x26 + ldr r1, [r3] + adds r1, r0 + movs r0, 0 + bl sub_80C0CC8 + movs r0, 0 + bl sub_80020BC + movs r0, 0xFF + movs r1, 0x19 + movs r2, 0x1 + bl sub_80C48BC + movs r0, 0xFF + movs r1, 0x19 + movs r2, 0x1 + bl sub_80C4960 + movs r0, 0x1 + b _080C16AC + .align 2, 0 +_080C15FC: .4byte 0x00001ccb +_080C1600: .4byte gUnknown_20399D4 +_080C1604: + cmp r6, 0 + beq _080C166C + ldr r2, _080C168C @ =gUnknown_20399D4 + ldr r5, _080C1690 @ =gUnknown_20399D8 + ldr r0, [r5] + ldr r4, _080C1694 @ =0x00001cca + adds r0, r4 + ldrb r0, [r0] + lsls r1, r0, 2 + adds r1, r0 + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 4 + adds r0, 0x26 + ldr r1, [r2] + adds r1, r0 + movs r0, 0 + bl sub_80C0CC8 + ldr r0, _080C1698 @ =gUnknown_8418EB0 + bl sub_80C4E74 + movs r0, 0 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + movs r0, 0xFF + movs r1, 0x19 + movs r2, 0x1 + bl sub_80C48BC + movs r0, 0xFF + movs r1, 0x19 + movs r2, 0x1 + bl sub_80C4960 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x19 + movs r2, 0 + bl sub_80C48BC + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x19 + movs r2, 0 + bl sub_80C4960 +_080C166C: + ldr r0, _080C1690 @ =gUnknown_20399D8 + ldr r4, [r0] + ldr r3, _080C1694 @ =0x00001cca + adds r4, r3 + bl sub_80C0E34 + ldrb r1, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + beq _080C169C + movs r0, 0x1 + bl sub_80C4324 + b _080C16A2 + .align 2, 0 +_080C168C: .4byte gUnknown_20399D4 +_080C1690: .4byte gUnknown_20399D8 +_080C1694: .4byte 0x00001cca +_080C1698: .4byte gUnknown_8418EB0 +_080C169C: + movs r0, 0 + bl sub_80C4324 +_080C16A2: + movs r0, 0x1 + mov r1, sp + bl sub_80C4CF0 + movs r0, 0 +_080C16AC: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C1478 + + thumb_func_start sub_80C16B8 +sub_80C16B8: @ 80C16B8 + ldr r1, _080C16C8 @ =gUnknown_20399D8 + ldr r1, [r1] + ldr r2, _080C16CC @ =0x00001cd6 + adds r1, r2 + ldrh r1, [r1] + adds r1, 0x10 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_080C16C8: .4byte gUnknown_20399D8 +_080C16CC: .4byte 0x00001cd6 + thumb_func_end sub_80C16B8 + + thumb_func_start sub_80C16D0 +sub_80C16D0: @ 80C16D0 + push {lr} + ldr r0, _080C16EC @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r2, _080C16F0 @ =0x00001cc9 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080C1708 + cmp r0, 0x1 + bgt _080C16F4 + cmp r0, 0 + beq _080C16FA + b _080C1732 + .align 2, 0 +_080C16EC: .4byte gUnknown_20399D8 +_080C16F0: .4byte 0x00001cc9 +_080C16F4: + cmp r0, 0x2 + beq _080C171C + b _080C1732 +_080C16FA: + ldr r0, _080C1700 @ =gUnknown_83EF3C4 + ldr r2, _080C1704 @ =0x000014b0 + b _080C170C + .align 2, 0 +_080C1700: .4byte gUnknown_83EF3C4 +_080C1704: .4byte 0x000014b0 +_080C1708: + ldr r0, _080C1714 @ =gUnknown_83EF450 + ldr r2, _080C1718 @ =0x000018bc +_080C170C: + adds r1, r2 + bl LZ77UnCompWram + b _080C1736 + .align 2, 0 +_080C1714: .4byte gUnknown_83EF450 +_080C1718: .4byte 0x000018bc +_080C171C: + movs r0, 0 + movs r1, 0x2 + movs r2, 0x2 + bl sub_80C1754 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x3 + bl sub_80C1754 + b _080C1736 +_080C1732: + movs r0, 0x1 + b _080C1746 +_080C1736: + ldr r0, _080C174C @ =gUnknown_20399D8 + ldr r1, [r0] + ldr r0, _080C1750 @ =0x00001cc9 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_080C1746: + pop {r1} + bx r1 + .align 2, 0 +_080C174C: .4byte gUnknown_20399D8 +_080C1750: .4byte 0x00001cc9 + thumb_func_end sub_80C16D0 + + thumb_func_start sub_80C1754 +sub_80C1754: @ 80C1754 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + bl sub_80C176C + pop {r0} + bx r0 + thumb_func_end sub_80C1754 + + thumb_func_start sub_80C176C +sub_80C176C: @ 80C176C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r3, _080C1848 @ =gUnknown_20399D8 + mov r8, r3 + lsls r5, r0, 6 + adds r5, r0 + lsls r5, 2 + subs r5, r0 + lsls r5, 2 + ldr r4, _080C184C @ =0x000014b0 + adds r0, r5, r4 + ldr r3, [r3] + adds r0, r3, r0 + str r0, [sp, 0x18] + movs r4, 0x80 + lsls r4, 3 + add r0, sp, 0x18 + lsrs r6, r1, 16 + mov r9, r6 + orrs r1, r4 + str r1, [r0, 0x4] + ldr r1, _080C1850 @ =gUnknown_83EF384 + str r1, [sp, 0x20] + ldr r4, _080C1854 @ =0xffff0000 + add r6, sp, 0x20 + ldr r1, [r6, 0x4] + ands r1, r4 + orrs r1, r2 + str r1, [r6, 0x4] + mov r1, sp + movs r4, 0 + mov r7, r9 + strh r7, [r1] + strh r2, [r1, 0x2] + ldr r1, _080C1858 @ =gUnknown_83F1B24 + str r1, [sp, 0x4] + ldr r1, _080C185C @ =gUnknown_83F1B38 + str r1, [sp, 0x8] + str r4, [sp, 0xC] + ldr r1, _080C1860 @ =gUnknown_8231CFC + str r1, [sp, 0x10] + ldr r1, _080C1864 @ =sub_80C16B8 + str r1, [sp, 0x14] + adds r3, r5 + ldr r4, _080C1868 @ =0x000018b4 + adds r1, r3, r4 + strh r7, [r1] + ldr r1, _080C186C @ =0x000018b6 + adds r3, r1 + strh r2, [r3] + bl sub_80086DC + adds r0, r6, 0 + bl sub_8008928 + mov r3, r8 + ldr r2, [r3] + adds r0, r2, r5 + adds r4, 0x4 + adds r0, r4 + movs r6, 0 + ldrsh r1, [r0, r6] + ldr r7, _080C1870 @ =0x00001cce + adds r0, r2, r7 + ldr r3, _080C1874 @ =0x00001cca + adds r2, r3 + ldrb r2, [r2] + lsls r2, 2 + ldrh r0, [r0] + adds r2, r0 + lsls r2, 19 + asrs r2, 16 + mov r0, sp + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r4, r8 + ldr r2, [r4] + ldr r6, _080C1878 @ =0x000018b0 + adds r2, r6 + adds r2, r5 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080C187C @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + add sp, 0x28 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C1848: .4byte gUnknown_20399D8 +_080C184C: .4byte 0x000014b0 +_080C1850: .4byte gUnknown_83EF384 +_080C1854: .4byte 0xffff0000 +_080C1858: .4byte gUnknown_83F1B24 +_080C185C: .4byte gUnknown_83F1B38 +_080C1860: .4byte gUnknown_8231CFC +_080C1864: .4byte sub_80C16B8 +_080C1868: .4byte 0x000018b4 +_080C186C: .4byte 0x000018b6 +_080C1870: .4byte 0x00001cce +_080C1874: .4byte 0x00001cca +_080C1878: .4byte 0x000018b0 +_080C187C: .4byte gUnknown_202063C + thumb_func_end sub_80C176C + + thumb_func_start sub_80C1880 +sub_80C1880: @ 80C1880 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _080C18D0 @ =gUnknown_20399D8 +_080C1886: + ldr r1, [r6] + lsls r0, r5, 6 + adds r0, r5 + lsls r0, 2 + subs r0, r5 + lsls r4, r0, 2 + ldr r0, _080C18D4 @ =0x000018b0 + adds r1, r0 + adds r1, r4 + ldr r0, [r1] + cmp r0, 0 + beq _080C18BE + bl sub_8007280 + ldr r0, [r6] + adds r0, r4 + ldr r1, _080C18D8 @ =0x000018b4 + adds r0, r1 + ldrh r0, [r0] + bl sub_800874C + ldr r0, [r6] + adds r0, r4 + ldr r1, _080C18DC @ =0x000018b6 + adds r0, r1 + ldrh r0, [r0] + bl sub_8008A30 +_080C18BE: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _080C1886 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C18D0: .4byte gUnknown_20399D8 +_080C18D4: .4byte 0x000018b0 +_080C18D8: .4byte 0x000018b4 +_080C18DC: .4byte 0x000018b6 + thumb_func_end sub_80C1880 + + thumb_func_start sub_80C18E0 +sub_80C18E0: @ 80C18E0 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + movs r2, 0 + ldr r3, _080C1904 @ =gUnknown_83F1B3C + adds r5, r3, 0 + adds r5, 0x8 +_080C18EE: + lsls r0, r2, 1 + adds r0, r2 + lsls r1, r0, 2 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r4 + bne _080C1908 + adds r0, r1, r5 + ldr r0, [r0] + b _080C1914 + .align 2, 0 +_080C1904: .4byte gUnknown_83F1B3C +_080C1908: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x12 + bls _080C18EE + ldr r0, _080C191C @ =gUnknown_8418EC3 +_080C1914: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080C191C: .4byte gUnknown_8418EC3 + thumb_func_end sub_80C18E0 + + thumb_func_start sub_80C1920 +sub_80C1920: @ 80C1920 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + movs r2, 0 + ldr r3, _080C1940 @ =gUnknown_83F1B3C + adds r5, r3, 0x4 +_080C192C: + lsls r0, r2, 1 + adds r0, r2 + lsls r1, r0, 2 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r4 + bne _080C1944 + adds r0, r1, r5 + ldr r0, [r0] + b _080C1950 + .align 2, 0 +_080C1940: .4byte gUnknown_83F1B3C +_080C1944: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x12 + bls _080C192C + ldr r0, _080C1958 @ =gUnknown_8418EC3 +_080C1950: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080C1958: .4byte gUnknown_8418EC3 + thumb_func_end sub_80C1920 + + thumb_func_start sub_80C195C +sub_80C195C: @ 80C195C + push {r4-r6,lr} + adds r6, r2, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r4, _080C19E0 @ =gUnknown_20399DC + ldr r0, _080C19E4 @ =0x00003e28 + bl sub_8002BB0 + str r0, [r4] + bl sub_80C3580 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB8 + bne _080C197C + movs r0, 0xBC +_080C197C: + bl sub_80F8544 + ldr r1, [r4] + movs r2, 0xF5 + lsls r2, 6 + adds r1, r2 + str r0, [r1] + cmp r0, 0 + bne _080C199E + movs r0, 0x8A + bl sub_80F8544 + ldr r1, [r4] + movs r3, 0xF5 + lsls r3, 6 + adds r1, r3 + str r0, [r1] +_080C199E: + ldr r0, [r4] + ldr r1, _080C19E8 @ =0x00003d48 + adds r0, r1 + movs r2, 0 + strb r2, [r0] + ldr r0, [r4] + ldr r3, _080C19EC @ =0x00003d4a + adds r0, r3 + strb r2, [r0] + ldr r0, [r4] + subs r3, 0x6 + adds r1, r0, r3 + str r6, [r1] + ldr r1, _080C19F0 @ =0x00003e14 + adds r0, r1 + strh r2, [r0] + movs r0, 0 + bl sub_80C4AAC + bl sub_80C4BE4 + bl sub_80C0CA0 + ldr r1, _080C19F4 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C19F8 @ =sub_80C1A94 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C19E0: .4byte gUnknown_20399DC +_080C19E4: .4byte 0x00003e28 +_080C19E8: .4byte 0x00003d48 +_080C19EC: .4byte 0x00003d4a +_080C19F0: .4byte 0x00003e14 +_080C19F4: .4byte gUnknown_3005090 +_080C19F8: .4byte sub_80C1A94 + thumb_func_end sub_80C195C + + thumb_func_start sub_80C19FC +sub_80C19FC: @ 80C19FC + push {lr} + ldr r0, _080C1A18 @ =gUnknown_20399DC + ldr r1, [r0] + ldr r2, _080C1A1C @ =0x00003d4a + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _080C1A3A + cmp r0, 0x1 + bgt _080C1A20 + cmp r0, 0 + beq _080C1A2A + b _080C1A72 + .align 2, 0 +_080C1A18: .4byte gUnknown_20399DC +_080C1A1C: .4byte 0x00003d4a +_080C1A20: + cmp r0, 0x2 + beq _080C1A50 + cmp r0, 0x3 + beq _080C1A5E + b _080C1A72 +_080C1A2A: + movs r2, 0xF5 + lsls r2, 6 + adds r0, r1, r2 + ldr r0, [r0] + ldr r0, [r0, 0x4] + bl LZ77UnCompWram + b _080C1A76 +_080C1A3A: + movs r2, 0xF5 + lsls r2, 6 + adds r0, r1, r2 + ldr r0, [r0] + ldr r0, [r0, 0x8] + movs r2, 0xE1 + lsls r2, 6 + adds r1, r2 + bl LZ77UnCompWram + b _080C1A76 +_080C1A50: + movs r2, 0xE1 + lsls r2, 6 + movs r0, 0x2 + movs r3, 0 + bl sub_80017D0 + b _080C1A76 +_080C1A5E: + movs r2, 0xF5 + lsls r2, 6 + adds r0, r1, r2 + ldr r0, [r0] + ldr r0, [r0, 0xC] + movs r1, 0xD0 + movs r2, 0x60 + bl sub_80703EC + b _080C1A76 +_080C1A72: + movs r0, 0x1 + b _080C1A86 +_080C1A76: + ldr r0, _080C1A8C @ =gUnknown_20399DC + ldr r1, [r0] + ldr r0, _080C1A90 @ =0x00003d4a + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_080C1A86: + pop {r1} + bx r1 + .align 2, 0 +_080C1A8C: .4byte gUnknown_20399DC +_080C1A90: .4byte 0x00003d4a + thumb_func_end sub_80C19FC + + thumb_func_start sub_80C1A94 +sub_80C1A94: @ 80C1A94 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080C1AB8 @ =gUnknown_20399DC + ldr r0, [r1] + ldr r3, _080C1ABC @ =0x00003d48 + adds r0, r3 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x9 + bls _080C1AAC + b _080C1BD0 +_080C1AAC: + lsls r0, 2 + ldr r1, _080C1AC0 @ =_080C1AC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C1AB8: .4byte gUnknown_20399DC +_080C1ABC: .4byte 0x00003d48 +_080C1AC0: .4byte _080C1AC4 + .align 2, 0 +_080C1AC4: + .4byte _080C1AEC + .4byte _080C1B04 + .4byte _080C1B12 + .4byte _080C1B34 + .4byte _080C1B54 + .4byte _080C1B5C + .4byte _080C1B74 + .4byte _080C1B84 + .4byte _080C1B9C + .4byte _080C1BBC +_080C1AEC: + bl sub_80C08E0 + ldr r0, _080C1AFC @ =gUnknown_20399DC + ldr r1, [r0] + ldr r0, _080C1B00 @ =0x00003d48 + adds r1, r0 + b _080C1BCA + .align 2, 0 +_080C1AFC: .4byte gUnknown_20399DC +_080C1B00: .4byte 0x00003d48 +_080C1B04: + bl sub_80C19FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C1BD0 + b _080C1BC2 +_080C1B12: + bl sub_80C1E94 + ldr r0, _080C1B28 @ =gUnknown_8418E9E + bl sub_80C4E74 + ldr r0, _080C1B2C @ =gUnknown_20399DC + ldr r1, [r0] + ldr r0, _080C1B30 @ =0x00003d48 + adds r1, r0 + b _080C1BCA + .align 2, 0 +_080C1B28: .4byte gUnknown_8418E9E +_080C1B2C: .4byte gUnknown_20399DC +_080C1B30: .4byte 0x00003d48 +_080C1B34: + ldr r1, [r4] + movs r3, 0xE1 + lsls r3, 6 + adds r1, r3 + movs r0, 0x2 + bl sub_80C1E78 + movs r0, 0x2 + bl sub_80020BC + ldr r1, [r4] + ldr r0, _080C1B50 @ =0x00003d48 + adds r1, r0 + b _080C1BCA + .align 2, 0 +_080C1B50: .4byte 0x00003d48 +_080C1B54: + movs r0, 0x2 + bl sub_80019BC + b _080C1BC2 +_080C1B5C: + bl sub_80C08F4 + ldr r0, _080C1B6C @ =gUnknown_20399DC + ldr r1, [r0] + ldr r0, _080C1B70 @ =0x00003d48 + adds r1, r0 + b _080C1BCA + .align 2, 0 +_080C1B6C: .4byte gUnknown_20399DC +_080C1B70: .4byte 0x00003d48 +_080C1B74: + movs r0, 0 + bl sub_80C1F80 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C1BD0 + b _080C1BC2 +_080C1B84: + ldr r0, _080C1B94 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C1B98 @ =sub_80C1BE0 + str r0, [r1] + b _080C1BD0 + .align 2, 0 +_080C1B94: .4byte gUnknown_3005090 +_080C1B98: .4byte sub_80C1BE0 +_080C1B9C: + movs r0, 0x1 + bl sub_80C1F80 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C1BD0 + ldr r0, _080C1BB4 @ =gUnknown_20399DC + ldr r1, [r0] + ldr r0, _080C1BB8 @ =0x00003d48 + adds r1, r0 + b _080C1BCA + .align 2, 0 +_080C1BB4: .4byte gUnknown_20399DC +_080C1BB8: .4byte 0x00003d48 +_080C1BBC: + adds r0, r2, 0 + bl sub_80C1E14 +_080C1BC2: + ldr r0, _080C1BD8 @ =gUnknown_20399DC + ldr r1, [r0] + ldr r3, _080C1BDC @ =0x00003d48 + adds r1, r3 +_080C1BCA: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080C1BD0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C1BD8: .4byte gUnknown_20399DC +_080C1BDC: .4byte 0x00003d48 + thumb_func_end sub_80C1A94 + + thumb_func_start sub_80C1BE0 +sub_80C1BE0: @ 80C1BE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080C1C08 @ =gUnknown_20399DC + ldr r0, [r1] + ldr r3, _080C1C0C @ =0x00003d49 + adds r0, r3 + ldrb r0, [r0] + adds r3, r1, 0 + cmp r0, 0x4 + bls _080C1BFE + b _080C1DF0 +_080C1BFE: + lsls r0, 2 + ldr r1, _080C1C10 @ =_080C1C14 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C1C08: .4byte gUnknown_20399DC +_080C1C0C: .4byte 0x00003d49 +_080C1C10: .4byte _080C1C14 + .align 2, 0 +_080C1C14: + .4byte _080C1C28 + .4byte _080C1C58 + .4byte _080C1C80 + .4byte _080C1CA8 + .4byte _080C1DA0 +_080C1C28: + ldr r1, [r3] + ldr r0, _080C1C48 @ =0x00003e0e + adds r2, r1, r0 + ldr r0, _080C1C4C @ =0x00000133 + strh r0, [r2] + ldr r3, _080C1C50 @ =0x00003e10 + adds r2, r1, r3 + subs r0, 0x33 + strh r0, [r2] + ldr r0, _080C1C54 @ =0x00003e12 + adds r2, r1, r0 + movs r0, 0xF0 + strh r0, [r2] + subs r3, 0xC7 + b _080C1DD6 + .align 2, 0 +_080C1C48: .4byte 0x00003e0e +_080C1C4C: .4byte 0x00000133 +_080C1C50: .4byte 0x00003e10 +_080C1C54: .4byte 0x00003e12 +_080C1C58: + ldr r0, [r3] + ldr r1, _080C1C7C @ =0x00003d4c + adds r0, r1 + ldrb r1, [r0] + adds r2, r1, 0x1 + strb r2, [r0] + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x28 + bhi _080C1C6E + b _080C1DFE +_080C1C6E: + ldr r0, [r3] + ldr r1, _080C1C7C @ =0x00003d4c + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r1, [r3] + b _080C1DD4 + .align 2, 0 +_080C1C7C: .4byte 0x00003d4c +_080C1C80: + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x2 + bl sub_8003FA0 + ldr r0, _080C1CA0 @ =gUnknown_20399DC + ldr r1, [r0] + ldr r0, _080C1CA4 @ =0x00003d49 + adds r1, r0 + b _080C1DD8 + .align 2, 0 +_080C1CA0: .4byte gUnknown_20399DC +_080C1CA4: .4byte 0x00003d49 +_080C1CA8: + ldr r7, _080C1D10 @ =gUnknown_20399DC + ldr r2, [r7] + ldr r1, _080C1D14 @ =0x00003d4c + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x19 + bls _080C1D24 + bl sub_80C3580 + lsls r0, 16 + lsrs r0, 16 + bl sub_80C1920 + ldr r1, _080C1D18 @ =gUnknown_83F1A94 + str r1, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x2 + movs r2, 0x4 + movs r3, 0 + bl sub_812E51C + bl sub_80C3580 + lsls r0, 16 + lsrs r0, 16 + bl sub_80C18E0 + ldr r1, _080C1D1C @ =gUnknown_83F1A90 + str r1, [sp] + str r4, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0x2 + movs r2, 0x2 + movs r3, 0xE + bl sub_812E51C + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, [r7] + ldr r3, _080C1D20 @ =0x00003d49 + adds r1, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C1D80 + .align 2, 0 +_080C1D10: .4byte gUnknown_20399DC +_080C1D14: .4byte 0x00003d4c +_080C1D18: .4byte gUnknown_83F1A94 +_080C1D1C: .4byte gUnknown_83F1A90 +_080C1D20: .4byte 0x00003d49 +_080C1D24: + cmp r0, 0x14 + bls _080C1D80 + ldr r6, _080C1D88 @ =0x00003e0e + adds r1, r2, r6 + ldrh r0, [r1] + subs r0, 0x6 + strh r0, [r1] + ldr r4, _080C1D8C @ =0x00003e10 + adds r1, r2, r4 + ldrh r0, [r1] + subs r0, 0x5 + strh r0, [r1] + ldr r0, _080C1D90 @ =0x00003e12 + mov r8, r0 + adds r1, r2, r0 + ldrh r0, [r1] + subs r0, 0x5 + strh r0, [r1] + movs r1, 0xF5 + lsls r1, 6 + adds r0, r2, r1 + ldr r0, [r0] + ldr r0, [r0, 0xC] + ldr r5, _080C1D94 @ =0x00003d4e + adds r1, r2, r5 + movs r2, 0x30 + bl CpuSet + ldr r1, [r7] + adds r0, r1, r5 + adds r6, r1, r6 + ldrh r2, [r6] + adds r4, r1, r4 + ldrh r3, [r4] + add r1, r8 + ldrh r1, [r1] + str r1, [sp] + movs r1, 0x30 + bl sub_8071660 + ldr r0, [r7] + adds r0, r5 + movs r1, 0xD0 + movs r2, 0x60 + bl sub_80703EC +_080C1D80: + ldr r0, _080C1D98 @ =gUnknown_20399DC + ldr r1, [r0] + ldr r3, _080C1D9C @ =0x00003d4c + b _080C1DD6 + .align 2, 0 +_080C1D88: .4byte 0x00003e0e +_080C1D8C: .4byte 0x00003e10 +_080C1D90: .4byte 0x00003e12 +_080C1D94: .4byte 0x00003d4e +_080C1D98: .4byte gUnknown_20399DC +_080C1D9C: .4byte 0x00003d4c +_080C1DA0: + ldr r0, _080C1DE0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080C1DB4 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080C1DFE +_080C1DB4: + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + ldr r2, _080C1DE4 @ =gUnknown_20399DC + ldr r1, [r2] + ldr r0, _080C1DE8 @ =0x00003d48 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r1, [r2] +_080C1DD4: + ldr r3, _080C1DEC @ =0x00003d49 +_080C1DD6: + adds r1, r3 +_080C1DD8: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C1DFE + .align 2, 0 +_080C1DE0: .4byte gUnknown_30030F0 +_080C1DE4: .4byte gUnknown_20399DC +_080C1DE8: .4byte 0x00003d48 +_080C1DEC: .4byte 0x00003d49 +_080C1DF0: + ldr r0, _080C1E0C @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C1E10 @ =sub_80C1A94 + str r0, [r1] +_080C1DFE: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C1E0C: .4byte gUnknown_3005090 +_080C1E10: .4byte sub_80C1A94 + thumb_func_end sub_80C1BE0 + + thumb_func_start sub_80C1E14 +sub_80C1E14: @ 80C1E14 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C1E68 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r4, _080C1E6C @ =gUnknown_20399DC + ldr r0, [r4] + ldr r2, _080C1E70 @ =0x00003d44 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0 + bl sub_80C4B30 + bl sub_80C0B18 + bl sub_80C0BB0 + bl sub_80C0AB8 + bl sub_80C0B9C + ldr r0, _080C1E74 @ =gUnknown_8418E8D + bl sub_80C4E74 + ldr r0, [r4] + cmp r0, 0 + beq _080C1E60 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C1E60: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C1E68: .4byte gUnknown_3005090 +_080C1E6C: .4byte gUnknown_20399DC +_080C1E70: .4byte 0x00003d44 +_080C1E74: .4byte gUnknown_8418E8D + thumb_func_end sub_80C1E14 + + thumb_func_start sub_80C1E78 +sub_80C1E78: @ 80C1E78 + push {lr} + sub sp, 0x8 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002124 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_80C1E78 + + thumb_func_start sub_80C1E94 +sub_80C1E94: @ 80C1E94 + push {r4-r6,lr} + bl sub_80C4BE4 + movs r0, 0 + movs r1, 0x11 + movs r2, 0xC0 + bl sub_80C4C2C + ldr r5, _080C1F58 @ =gUnknown_20399DC + ldr r0, [r5] + ldr r1, _080C1F5C @ =0x00003e14 + adds r0, r1 + ldrh r0, [r0] + bl sub_80C4C48 + movs r0, 0 + movs r1, 0xD + bl sub_80C4C74 + movs r0, 0x3B + bl sub_80C4C88 + movs r0, 0x1 + movs r1, 0 + bl sub_80C4C9C + bl sub_80C3508 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_80C3514 + lsls r0, 16 + ldr r5, [r5] + lsls r4, 3 + adds r4, 0x20 + ldr r2, _080C1F60 @ =0x00003e16 + adds r1, r5, r2 + strh r4, [r1] + lsrs r0, 13 + adds r0, 0x18 + ldr r3, _080C1F64 @ =0x00003e18 + adds r2, r5, r3 + strh r0, [r2] + ldrh r0, [r1] + adds r0, 0x8 + ldr r4, _080C1F68 @ =0x00003e1a + adds r3, r5, r4 + strh r0, [r3] + ldrh r0, [r2] + adds r0, 0x8 + ldr r6, _080C1F6C @ =0x00003e1c + adds r4, r5, r6 + strh r0, [r4] + ldrh r1, [r1] + movs r0, 0x10 + subs r0, r1 + cmp r0, 0 + bge _080C1F0E + adds r0, 0x7 +_080C1F0E: + asrs r1, r0, 3 + ldr r6, _080C1F70 @ =0x00003e1e + adds r0, r5, r6 + strh r1, [r0] + ldrh r1, [r2] + movs r0, 0x20 + subs r0, r1 + cmp r0, 0 + bge _080C1F22 + adds r0, 0x7 +_080C1F22: + asrs r1, r0, 3 + ldr r2, _080C1F74 @ =0x00003e20 + adds r0, r5, r2 + strh r1, [r0] + ldrh r1, [r3] + movs r0, 0xE0 + subs r0, r1 + cmp r0, 0 + bge _080C1F36 + adds r0, 0x7 +_080C1F36: + asrs r1, r0, 3 + ldr r3, _080C1F78 @ =0x00003e22 + adds r0, r5, r3 + strh r1, [r0] + ldrh r1, [r4] + movs r0, 0x88 + subs r0, r1 + cmp r0, 0 + bge _080C1F4A + adds r0, 0x7 +_080C1F4A: + asrs r1, r0, 3 + ldr r4, _080C1F7C @ =0x00003e24 + adds r0, r5, r4 + strh r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C1F58: .4byte gUnknown_20399DC +_080C1F5C: .4byte 0x00003e14 +_080C1F60: .4byte 0x00003e16 +_080C1F64: .4byte 0x00003e18 +_080C1F68: .4byte 0x00003e1a +_080C1F6C: .4byte 0x00003e1c +_080C1F70: .4byte 0x00003e1e +_080C1F74: .4byte 0x00003e20 +_080C1F78: .4byte 0x00003e22 +_080C1F7C: .4byte 0x00003e24 + thumb_func_end sub_80C1E94 + + thumb_func_start sub_80C1F80 +sub_80C1F80: @ 80C1F80 + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + cmp r0, 0 + bne _080C2014 + ldr r1, _080C1FF0 @ =gUnknown_20399DC + ldr r2, [r1] + ldr r0, _080C1FF4 @ =0x00003d4b + adds r3, r2, r0 + ldrb r0, [r3] + adds r6, r1, 0 + cmp r0, 0x7 + bhi _080C2024 + ldr r4, _080C1FF8 @ =0x00003e16 + adds r1, r2, r4 + adds r4, 0x8 + adds r0, r2, r4 + ldrh r0, [r0] + ldrh r4, [r1] + adds r0, r4 + strh r0, [r1] + ldr r0, _080C1FFC @ =0x00003e18 + adds r1, r2, r0 + ldr r4, _080C2000 @ =0x00003e20 + adds r0, r2, r4 + ldrh r0, [r0] + ldrh r4, [r1] + adds r0, r4 + strh r0, [r1] + ldr r0, _080C2004 @ =0x00003e1a + adds r1, r2, r0 + ldr r4, _080C2008 @ =0x00003e22 + adds r0, r2, r4 + ldrh r0, [r0] + ldrh r4, [r1] + adds r0, r4 + strh r0, [r1] + ldr r0, _080C200C @ =0x00003e1c + adds r1, r2, r0 + ldr r4, _080C2010 @ =0x00003e24 + adds r0, r2, r4 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + ldr r0, [r6] + subs r4, 0x10 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, 0x5 + bhi _080C2086 + adds r0, 0x1 + b _080C2084 + .align 2, 0 +_080C1FF0: .4byte gUnknown_20399DC +_080C1FF4: .4byte 0x00003d4b +_080C1FF8: .4byte 0x00003e16 +_080C1FFC: .4byte 0x00003e18 +_080C2000: .4byte 0x00003e20 +_080C2004: .4byte 0x00003e1a +_080C2008: .4byte 0x00003e22 +_080C200C: .4byte 0x00003e1c +_080C2010: .4byte 0x00003e24 +_080C2014: + ldr r1, _080C2028 @ =gUnknown_20399DC + ldr r3, [r1] + ldr r0, _080C202C @ =0x00003d4b + adds r5, r3, r0 + ldrb r0, [r5] + adds r6, r1, 0 + cmp r0, 0 + bne _080C2030 +_080C2024: + movs r0, 0x1 + b _080C20DE + .align 2, 0 +_080C2028: .4byte gUnknown_20399DC +_080C202C: .4byte 0x00003d4b +_080C2030: + ldr r1, _080C20E8 @ =0x00003e16 + adds r2, r3, r1 + ldr r4, _080C20EC @ =0x00003e1e + adds r1, r3, r4 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r0, _080C20F0 @ =0x00003e18 + adds r2, r3, r0 + adds r4, 0x2 + adds r1, r3, r4 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r0, _080C20F4 @ =0x00003e1a + adds r2, r3, r0 + adds r4, 0x2 + adds r1, r3, r4 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r0, _080C20F8 @ =0x00003e1c + adds r2, r3, r0 + adds r4, 0x2 + adds r1, r3, r4 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldrb r0, [r5] + subs r0, 0x1 + strb r0, [r5] + ldr r0, [r6] + ldr r2, _080C20FC @ =0x00003e14 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, 0 + beq _080C2086 + subs r0, 0x1 +_080C2084: + strh r0, [r1] +_080C2086: + ldr r4, [r6] + ldr r1, _080C20E8 @ =0x00003e16 + adds r0, r4, r1 + ldrh r0, [r0] + ldr r5, _080C2100 @ =0xffff0000 + ldr r2, [sp] + ands r2, r5 + orrs r2, r0 + str r2, [sp] + adds r1, 0x2 + adds r0, r4, r1 + ldrh r1, [r0] + lsls r1, 16 + ldr r3, _080C2104 @ =0x0000ffff + adds r0, r3, 0 + ands r0, r2 + orrs r0, r1 + str r0, [sp] + ldr r2, _080C20F4 @ =0x00003e1a + adds r4, r2 + ldrh r0, [r4] + ldr r1, [sp, 0x4] + ands r1, r5 + orrs r1, r0 + str r1, [sp, 0x4] + ldr r0, [r6] + ldr r4, _080C20F8 @ =0x00003e1c + adds r0, r4 + ldrh r0, [r0] + lsls r0, 16 + ands r3, r1 + orrs r3, r0 + str r3, [sp, 0x4] + movs r0, 0x1 + mov r1, sp + bl sub_80C4CF0 + ldr r0, [r6] + ldr r1, _080C20FC @ =0x00003e14 + adds r0, r1 + ldrh r0, [r0] + bl sub_80C4C48 + movs r0, 0 +_080C20DE: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080C20E8: .4byte 0x00003e16 +_080C20EC: .4byte 0x00003e1e +_080C20F0: .4byte 0x00003e18 +_080C20F4: .4byte 0x00003e1a +_080C20F8: .4byte 0x00003e1c +_080C20FC: .4byte 0x00003e14 +_080C2100: .4byte 0xffff0000 +_080C2104: .4byte 0x0000ffff + thumb_func_end sub_80C1F80 + + thumb_func_start nullsub_63 +nullsub_63: @ 80C2108 + bx lr + thumb_func_end nullsub_63 + + thumb_func_start sub_80C210C +sub_80C210C: @ 80C210C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + adds r5, r0, 0 + lsls r5, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080C21E0 @ =gUnknown_20399E0 + mov r9, r0 + ldr r6, [r0] + lsrs r5, 22 + adds r6, r5 + ldr r0, [r6] + str r0, [sp, 0x18] + movs r3, 0x80 + lsls r3, 3 + mov r10, r3 + add r0, sp, 0x18 + lsls r3, r1, 16 + mov r4, r10 + orrs r3, r4 + str r3, [r0, 0x4] + ldr r3, _080C21E4 @ =gUnknown_83EF3A4 + str r3, [sp, 0x20] + ldr r4, _080C21E8 @ =0xffff0000 + add r7, sp, 0x20 + mov r8, r7 + ldr r3, [r7, 0x4] + ands r3, r4 + orrs r3, r2 + str r3, [r7, 0x4] + mov r3, sp + movs r4, 0 + strh r1, [r3] + strh r2, [r3, 0x2] + ldr r3, _080C21EC @ =gUnknown_83F1C20 + str r3, [sp, 0x4] + ldr r3, _080C21F0 @ =gUnknown_83F1C30 + str r3, [sp, 0x8] + str r4, [sp, 0xC] + ldr r3, _080C21F4 @ =gUnknown_8231CFC + str r3, [sp, 0x10] + ldr r3, _080C21F8 @ =nullsub_63 + str r3, [sp, 0x14] + ldr r3, [r6] + movs r4, 0x81 + lsls r4, 3 + adds r3, r4 + strh r1, [r3] + ldr r1, [r6] + ldr r7, _080C21FC @ =0x0000040a + adds r1, r7 + strh r2, [r1] + bl sub_80086DC + mov r0, r8 + bl sub_8008928 + mov r1, r9 + ldr r0, [r1] + adds r0, r5 + ldr r0, [r0] + ldr r2, _080C2200 @ =0x00000404 + adds r1, r0, r2 + movs r3, 0 + ldrsh r1, [r1, r3] + subs r4, 0x2 + adds r0, r4 + movs r7, 0 + ldrsh r2, [r0, r7] + mov r0, sp + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r2, r9 + ldr r1, [r2] + adds r1, r5 + ldr r2, [r1] + add r2, r10 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080C2204 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C21E0: .4byte gUnknown_20399E0 +_080C21E4: .4byte gUnknown_83EF3A4 +_080C21E8: .4byte 0xffff0000 +_080C21EC: .4byte gUnknown_83F1C20 +_080C21F0: .4byte gUnknown_83F1C30 +_080C21F4: .4byte gUnknown_8231CFC +_080C21F8: .4byte nullsub_63 +_080C21FC: .4byte 0x0000040a +_080C2200: .4byte 0x00000404 +_080C2204: .4byte gUnknown_202063C + thumb_func_end sub_80C210C + + thumb_func_start sub_80C2208 +sub_80C2208: @ 80C2208 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, _080C22A4 @ =gUnknown_20399E0 + ldr r0, _080C22A8 @ =0x00000cd4 + bl sub_8002BB0 + str r0, [r4] + movs r6, 0 +_080C2224: + ldr r0, _080C22AC @ =0x0000040c + bl sub_8002BB0 + adds r5, r0, 0 + ldr r7, _080C22A4 @ =gUnknown_20399E0 + ldr r4, [r7] + lsls r0, r6, 2 + adds r4, r0 + str r5, [r4] + adds r0, r6, 0 + movs r1, 0x3 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 19 + adds r0, 0x68 + ldr r1, _080C22B0 @ =0x00000404 + adds r5, r1 + strh r0, [r5] + ldr r4, [r4] + adds r0, r6, 0 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 18 + adds r0, 0x28 + ldr r2, _080C22B4 @ =0x00000406 + adds r4, r2 + strh r0, [r4] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x5 + bls _080C2224 + movs r0, 0 + bl sub_80C4AAC + bl sub_80C4BE4 + bl sub_80C24BC + movs r0, 0x1 + bl sub_80C0A88 + ldr r0, [r7] + ldr r1, _080C22B8 @ =0x00000cc8 + adds r0, r1 + mov r2, r9 + str r2, [r0] + ldr r1, _080C22BC @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C22C0 @ =sub_80C267C + str r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C22A4: .4byte gUnknown_20399E0 +_080C22A8: .4byte 0x00000cd4 +_080C22AC: .4byte 0x0000040c +_080C22B0: .4byte 0x00000404 +_080C22B4: .4byte 0x00000406 +_080C22B8: .4byte 0x00000cc8 +_080C22BC: .4byte gUnknown_3005090 +_080C22C0: .4byte sub_80C267C + thumb_func_end sub_80C2208 + + thumb_func_start sub_80C22C4 +sub_80C22C4: @ 80C22C4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r2, 0x6 + bne _080C2310 + movs r3, 0 + ldr r7, _080C230C @ =gUnknown_20399E0 + movs r6, 0x80 + lsls r6, 3 + movs r1, 0x1 + adds r0, r4, 0 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_080C22E6: + ldr r0, [r7] + lsls r1, r3, 2 + adds r0, r1 + ldr r0, [r0] + adds r0, r6 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x5 + bls _080C22E6 + b _080C2338 + .align 2, 0 +_080C230C: .4byte gUnknown_20399E0 +_080C2310: + ldr r0, _080C2340 @ =gUnknown_20399E0 + ldr r0, [r0] + lsls r1, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + adds r0, r1 + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_080C2338: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2340: .4byte gUnknown_20399E0 + thumb_func_end sub_80C22C4 + + thumb_func_start sub_80C2344 +sub_80C2344: @ 80C2344 + push {lr} + ldr r0, _080C2360 @ =gUnknown_20399E0 + ldr r0, [r0] + ldr r1, _080C2364 @ =0x00000ccd + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x8 + bls _080C2356 + b _080C249C +_080C2356: + lsls r0, 2 + ldr r1, _080C2368 @ =_080C236C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C2360: .4byte gUnknown_20399E0 +_080C2364: .4byte 0x00000ccd +_080C2368: .4byte _080C236C + .align 2, 0 +_080C236C: + .4byte _080C2390 + .4byte _080C23B0 + .4byte _080C23D0 + .4byte _080C23F0 + .4byte _080C2410 + .4byte _080C2430 + .4byte _080C2450 + .4byte _080C2468 + .4byte _080C2484 +_080C2390: + ldr r0, _080C23A8 @ =gUnknown_83F12CC + ldr r1, _080C23AC @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r1, [r1] + bl LZ77UnCompWram + movs r0, 0 + movs r1, 0x4 + movs r2, 0x4 + bl sub_80C210C + b _080C24A0 + .align 2, 0 +_080C23A8: .4byte gUnknown_83F12CC +_080C23AC: .4byte gUnknown_20399E0 +_080C23B0: + ldr r0, _080C23C8 @ =gUnknown_83F1550 + ldr r1, _080C23CC @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r1, [r1, 0x4] + bl LZ77UnCompWram + movs r0, 0x1 + movs r1, 0x5 + movs r2, 0x5 + bl sub_80C210C + b _080C24A0 + .align 2, 0 +_080C23C8: .4byte gUnknown_83F1550 +_080C23CC: .4byte gUnknown_20399E0 +_080C23D0: + ldr r0, _080C23E8 @ =gUnknown_83F1738 + ldr r1, _080C23EC @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r1, [r1, 0x8] + bl LZ77UnCompWram + movs r0, 0x2 + movs r1, 0x6 + movs r2, 0x6 + bl sub_80C210C + b _080C24A0 + .align 2, 0 +_080C23E8: .4byte gUnknown_83F1738 +_080C23EC: .4byte gUnknown_20399E0 +_080C23F0: + ldr r0, _080C2408 @ =gUnknown_83F13EC + ldr r1, _080C240C @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r1, [r1, 0xC] + bl LZ77UnCompWram + movs r0, 0x3 + movs r1, 0x7 + movs r2, 0x7 + bl sub_80C210C + b _080C24A0 + .align 2, 0 +_080C2408: .4byte gUnknown_83F13EC +_080C240C: .4byte gUnknown_20399E0 +_080C2410: + ldr r0, _080C2428 @ =gUnknown_83F1640 + ldr r1, _080C242C @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r1, [r1, 0x10] + bl LZ77UnCompWram + movs r0, 0x4 + movs r1, 0x8 + movs r2, 0x8 + bl sub_80C210C + b _080C24A0 + .align 2, 0 +_080C2428: .4byte gUnknown_83F1640 +_080C242C: .4byte gUnknown_20399E0 +_080C2430: + ldr r0, _080C2448 @ =gUnknown_83F1804 + ldr r1, _080C244C @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r1, [r1, 0x14] + bl LZ77UnCompWram + movs r0, 0x5 + movs r1, 0x9 + movs r2, 0x9 + bl sub_80C210C + b _080C24A0 + .align 2, 0 +_080C2448: .4byte gUnknown_83F1804 +_080C244C: .4byte gUnknown_20399E0 +_080C2450: + ldr r0, _080C2460 @ =gUnknown_83F0330 + ldr r1, _080C2464 @ =gUnknown_20399E0 + ldr r1, [r1] + adds r1, 0x18 + bl LZ77UnCompWram + b _080C24A0 + .align 2, 0 +_080C2460: .4byte gUnknown_83F0330 +_080C2464: .4byte gUnknown_20399E0 +_080C2468: + ldr r0, _080C2478 @ =gUnknown_83F0E0C + ldr r1, _080C247C @ =gUnknown_20399E0 + ldr r1, [r1] + ldr r2, _080C2480 @ =0x00000818 + adds r1, r2 + bl LZ77UnCompWram + b _080C24A0 + .align 2, 0 +_080C2478: .4byte gUnknown_83F0E0C +_080C247C: .4byte gUnknown_20399E0 +_080C2480: .4byte 0x00000818 +_080C2484: + ldr r0, _080C2498 @ =gUnknown_20399E0 + ldr r1, [r0] + adds r1, 0x18 + movs r2, 0x80 + lsls r2, 4 + movs r0, 0x1 + movs r3, 0 + bl sub_80017D0 + b _080C24A0 + .align 2, 0 +_080C2498: .4byte gUnknown_20399E0 +_080C249C: + movs r0, 0x1 + b _080C24B0 +_080C24A0: + ldr r0, _080C24B4 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C24B8 @ =0x00000ccd + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_080C24B0: + pop {r1} + bx r1 + .align 2, 0 +_080C24B4: .4byte gUnknown_20399E0 +_080C24B8: .4byte 0x00000ccd + thumb_func_end sub_80C2344 + + thumb_func_start sub_80C24BC +sub_80C24BC: @ 80C24BC + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _080C252C @ =gUnknown_20399E0 + ldr r3, [r0] + ldr r0, [r3] + ldr r2, _080C2530 @ =0x00000404 + adds r0, r2 + ldrh r0, [r0] + adds r0, 0x8 + lsls r0, 16 + ldr r4, _080C2534 @ =0xffff0000 + ldr r5, _080C2538 @ =0x0000ffff + lsrs r0, 16 + movs r1, 0x80 + lsls r1, 13 + orrs r0, r1 + str r0, [sp] + ldr r0, [r3, 0xC] + adds r0, r2 + ldrh r1, [r0] + subs r1, 0x8 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x4] + ands r0, r4 + orrs r0, r1 + ands r0, r5 + movs r1, 0xA0 + lsls r1, 16 + orrs r0, r1 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + bl sub_80C4C2C + movs r0, 0x12 + movs r1, 0 + bl sub_80C4C74 + movs r0, 0x10 + bl sub_80C4C88 + movs r0, 0 + mov r1, sp + bl sub_80C4CF0 + movs r0, 0 + movs r1, 0 + bl sub_80C4C9C + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C252C: .4byte gUnknown_20399E0 +_080C2530: .4byte 0x00000404 +_080C2534: .4byte 0xffff0000 +_080C2538: .4byte 0x0000ffff + thumb_func_end sub_80C24BC + + thumb_func_start sub_80C253C +sub_80C253C: @ 80C253C + push {lr} + sub sp, 0x8 + ldr r0, _080C258C @ =gUnknown_83F1C34 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl sub_80C4BE4 + movs r0, 0x2 + movs r1, 0x29 + movs r2, 0x80 + bl sub_80C4C2C + ldr r0, _080C2590 @ =gUnknown_20399E0 + ldr r0, [r0] + movs r1, 0xCD + lsls r1, 4 + adds r0, r1 + ldrb r0, [r0] + bl sub_80C4C48 + movs r0, 0x37 + movs r1, 0 + bl sub_80C4C74 + movs r0, 0x12 + bl sub_80C4C88 + movs r0, 0 + mov r1, sp + bl sub_80C4CF0 + movs r0, 0 + movs r1, 0 + bl sub_80C4C9C + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_080C258C: .4byte gUnknown_83F1C34 +_080C2590: .4byte gUnknown_20399E0 + thumb_func_end sub_80C253C + + thumb_func_start sub_80C2594 +sub_80C2594: @ 80C2594 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C25B0 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080C25B4 @ =gUnknown_20399E0 + ldr r0, [r0] + ldr r2, _080C25B8 @ =0x00000cc8 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + .align 2, 0 +_080C25B0: .4byte gUnknown_3005090 +_080C25B4: .4byte gUnknown_20399E0 +_080C25B8: .4byte 0x00000cc8 + thumb_func_end sub_80C2594 + + thumb_func_start sub_80C25BC +sub_80C25BC: @ 80C25BC + push {r4-r6,lr} + bl sub_80C2604 + movs r5, 0 + ldr r6, _080C2600 @ =gUnknown_20399E0 +_080C25C6: + ldr r0, [r6] + lsls r4, r5, 2 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _080C25DE + bl sub_8002BC4 + ldr r0, [r6] + adds r0, r4 + movs r1, 0 + str r1, [r0] +_080C25DE: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080C25C6 + ldr r4, _080C2600 @ =gUnknown_20399E0 + ldr r0, [r4] + cmp r0, 0 + beq _080C25F8 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C25F8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C2600: .4byte gUnknown_20399E0 + thumb_func_end sub_80C25BC + + thumb_func_start sub_80C2604 +sub_80C2604: @ 80C2604 + push {r4-r7,lr} + movs r5, 0 + ldr r7, _080C2670 @ =gUnknown_20399E0 + movs r6, 0x80 + lsls r6, 3 +_080C260E: + ldr r2, [r7] + lsls r4, r5, 2 + adds r2, r4 + ldr r1, [r2] + adds r0, r1, r6 + ldr r0, [r0] + ldrh r0, [r0, 0x20] + ldr r3, _080C2674 @ =0x00000404 + adds r1, r3 + strh r0, [r1] + ldr r1, [r2] + adds r0, r1, r6 + ldr r0, [r0] + ldrh r0, [r0, 0x22] + adds r3, 0x2 + adds r1, r3 + strh r0, [r1] + ldr r0, [r2] + adds r0, r6 + ldr r0, [r0] + cmp r0, 0 + beq _080C2660 + bl sub_8007280 + ldr r0, [r7] + adds r0, r4 + ldr r0, [r0] + movs r1, 0x81 + lsls r1, 3 + adds r0, r1 + ldrh r0, [r0] + bl sub_800874C + ldr r0, [r7] + adds r0, r4 + ldr r0, [r0] + ldr r3, _080C2678 @ =0x0000040a + adds r0, r3 + ldrh r0, [r0] + bl sub_8008A30 +_080C2660: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080C260E + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2670: .4byte gUnknown_20399E0 +_080C2674: .4byte 0x00000404 +_080C2678: .4byte 0x0000040a + thumb_func_end sub_80C2604 + + thumb_func_start sub_80C267C +sub_80C267C: @ 80C267C + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080C26A0 @ =gUnknown_20399E0 + ldr r0, [r1] + ldr r2, _080C26A4 @ =0x00000ccc + adds r0, r2 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0xD + bls _080C2696 + b _080C2990 +_080C2696: + lsls r0, 2 + ldr r1, _080C26A8 @ =_080C26AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C26A0: .4byte gUnknown_20399E0 +_080C26A4: .4byte 0x00000ccc +_080C26A8: .4byte _080C26AC + .align 2, 0 +_080C26AC: + .4byte _080C26E4 + .4byte _080C26FC + .4byte _080C270C + .4byte _080C272C + .4byte _080C2768 + .4byte _080C2788 + .4byte _080C27B4 + .4byte _080C27C4 + .4byte _080C27E4 + .4byte _080C281E + .4byte _080C2868 + .4byte _080C28A4 + .4byte _080C2928 + .4byte _080C296C +_080C26E4: + bl sub_80C08E0 + ldr r0, _080C26F4 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C26F8 @ =0x00000ccc + adds r1, r0 + b _080C297E + .align 2, 0 +_080C26F4: .4byte gUnknown_20399E0 +_080C26F8: .4byte 0x00000ccc +_080C26FC: + bl sub_80C2344 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C270A + b _080C299A +_080C270A: + b _080C2976 +_080C270C: + ldr r1, [r4] + ldr r0, _080C2728 @ =0x00000818 + adds r1, r0 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002124 + ldr r1, [r4] + b _080C297A + .align 2, 0 +_080C2728: .4byte 0x00000818 +_080C272C: + movs r0, 0x1 + bl sub_80020BC + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_80C08F4 + ldr r0, _080C2760 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2764 @ =0x00000ccc + adds r1, r0 + b _080C297E + .align 2, 0 +_080C2760: .4byte gUnknown_20399E0 +_080C2764: .4byte 0x00000ccc +_080C2768: + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x6 + movs r1, 0 + bl sub_80C22C4 + bl sub_80C2B48 + b _080C2976 +_080C2788: + ldr r0, _080C27AC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C2796 + b _080C299A +_080C2796: + ldr r1, [r4] + ldr r0, _080C27B0 @ =0x00000ccc + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0xF4 + bl sub_80722CC + b _080C299A + .align 2, 0 +_080C27AC: .4byte gUnknown_2037AB8 +_080C27B0: .4byte 0x00000ccc +_080C27B4: + bl sub_80C29A4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C27C2 + b _080C299A +_080C27C2: + b _080C2976 +_080C27C4: + movs r0, 0 + bl sub_80C4324 + movs r0, 0 + bl sub_80C3154 + ldr r0, _080C27DC @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C27E0 @ =0x00000ccc + adds r1, r0 + b _080C297E + .align 2, 0 +_080C27DC: .4byte gUnknown_20399E0 +_080C27E0: .4byte 0x00000ccc +_080C27E4: + ldr r0, [r4] + movs r1, 0xCD + lsls r1, 4 + adds r0, r1 + movs r1, 0xF + strb r1, [r0] + bl sub_80C253C + movs r0, 0 + bl sub_80C0A88 + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0 + bl sub_80C48BC + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0 + bl sub_80C4960 + ldr r1, [r4] + b _080C297A +_080C281E: + ldr r0, _080C283C @ =gUnknown_8418EB5 + bl sub_80C4E18 + movs r0, 0x1 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080C2844 + ldr r0, _080C2840 @ =gUnknown_8418E8B + bl sub_80C4E74 + b _080C284A + .align 2, 0 +_080C283C: .4byte gUnknown_8418EB5 +_080C2840: .4byte gUnknown_8418E8B +_080C2844: + ldr r0, _080C285C @ =gUnknown_8418E8D + bl sub_80C4E74 +_080C284A: + movs r0, 0 + bl sub_80C4ED0 + ldr r0, _080C2860 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2864 @ =0x00000ccc + adds r1, r0 + b _080C297E + .align 2, 0 +_080C285C: .4byte gUnknown_8418E8D +_080C2860: .4byte gUnknown_20399E0 +_080C2864: .4byte 0x00000ccc +_080C2868: + ldr r4, _080C28A0 @ =gUnknown_83EF25A + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x20 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x30 + movs r2, 0x2 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0x40 + movs r2, 0x2 + bl sub_80703EC + b _080C2976 + .align 2, 0 +_080C28A0: .4byte gUnknown_83EF25A +_080C28A4: + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + movs r5, 0x2 + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x3E + movs r2, 0x1C + movs r3, 0x1 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x3F + movs r2, 0x1D + movs r3, 0x1 + bl sub_8002554 + movs r0, 0x1A + str r0, [sp] + str r4, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x3D + movs r2, 0x2 + movs r3, 0x1 + bl sub_8002554 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0xF4 + bl m4aSongNumStop + movs r0, 0x2A + bl sub_80722CC + ldr r0, _080C2920 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2924 @ =0x00000ccc + adds r1, r0 + b _080C297E + .align 2, 0 +_080C2920: .4byte gUnknown_20399E0 +_080C2924: .4byte 0x00000ccc +_080C2928: + ldr r0, [r4] + movs r2, 0xCD + lsls r2, 4 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0x2 + bne _080C2958 + movs r0, 0x6 + movs r1, 0x1 + bl sub_80C22C4 + ldr r1, [r4] + ldr r0, _080C2954 @ =0x00000ccc + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 + bl sub_80C4C48 + b _080C299A + .align 2, 0 +_080C2954: .4byte 0x00000ccc +_080C2958: + subs r0, 0x1 + strb r0, [r1] + ldr r0, [r4] + movs r1, 0xCD + lsls r1, 4 + adds r0, r1 + ldrb r0, [r0] + bl sub_80C4C48 + b _080C299A +_080C296C: + movs r0, 0 + bl sub_80C4B30 + bl sub_80C0BB0 +_080C2976: + ldr r0, _080C2988 @ =gUnknown_20399E0 + ldr r1, [r0] +_080C297A: + ldr r2, _080C298C @ =0x00000ccc + adds r1, r2 +_080C297E: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C299A + .align 2, 0 +_080C2988: .4byte gUnknown_20399E0 +_080C298C: .4byte 0x00000ccc +_080C2990: + bl sub_80C2604 + adds r0, r5, 0 + bl sub_80C2594 +_080C299A: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C267C + + thumb_func_start sub_80C29A4 +sub_80C29A4: @ 80C29A4 + push {r4,r5,lr} + bl sub_80C2B48 + ldr r0, _080C29C8 @ =gUnknown_20399E0 + ldr r2, [r0] + ldr r0, [r2] + movs r4, 0x80 + lsls r4, 3 + adds r0, r4 + ldr r1, [r0] + ldrh r3, [r1, 0x20] + movs r5, 0x20 + ldrsh r0, [r1, r5] + cmp r0, 0 + bne _080C29CC + movs r0, 0x1 + b _080C2B3A + .align 2, 0 +_080C29C8: .4byte gUnknown_20399E0 +_080C29CC: + ldr r5, _080C2A18 @ =0x00000cce + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, 0x11 + bls _080C2A1C + subs r0, r3, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + b _080C2B28 + .align 2, 0 +_080C2A18: .4byte 0x00000cce +_080C2A1C: + cmp r0, 0xE + bls _080C2A60 + subs r0, r3, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x2 + b _080C2B28 +_080C2A60: + cmp r0, 0xA + bls _080C2AA4 + subs r0, r3, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x3 + b _080C2B28 +_080C2AA4: + cmp r0, 0x6 + bls _080C2AE8 + subs r0, r3, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x5 + b _080C2B28 +_080C2AE8: + adds r0, r3, 0 + subs r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x8 +_080C2B28: + strh r0, [r1, 0x20] + ldr r0, _080C2B40 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2B44 @ =0x00000cce + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_080C2B3A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080C2B40: .4byte gUnknown_20399E0 +_080C2B44: .4byte 0x00000cce + thumb_func_end sub_80C29A4 + + thumb_func_start sub_80C2B48 +sub_80C2B48: @ 80C2B48 + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _080C2B90 @ =gUnknown_20399E0 + ldr r3, [r0] + ldr r0, [r3] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + ldr r4, _080C2B94 @ =0xffff0000 + ldr r5, _080C2B98 @ =0x0000ffff + ldrh r0, [r0, 0x20] + movs r1, 0x80 + lsls r1, 13 + orrs r0, r1 + str r0, [sp] + ldr r0, [r3, 0xC] + adds r0, r2 + ldr r0, [r0] + ldrh r1, [r0, 0x20] + ldr r0, [sp, 0x4] + ands r0, r4 + orrs r0, r1 + ands r0, r5 + movs r1, 0xA0 + lsls r1, 16 + orrs r0, r1 + str r0, [sp, 0x4] + movs r0, 0 + mov r1, sp + bl sub_80C4CF0 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C2B90: .4byte gUnknown_20399E0 +_080C2B94: .4byte 0xffff0000 +_080C2B98: .4byte 0x0000ffff + thumb_func_end sub_80C2B48 + + thumb_func_start sub_80C2B9C +sub_80C2B9C: @ 80C2B9C + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, _080C2C0C @ =gUnknown_20399E0 + ldr r3, [r0] + ldr r0, [r3] + ldr r2, _080C2C10 @ =0x00000404 + adds r0, r2 + ldrh r0, [r0] + adds r0, 0x10 + lsls r0, 16 + ldr r4, _080C2C14 @ =0xffff0000 + ldr r5, _080C2C18 @ =0x0000ffff + lsrs r0, 16 + movs r1, 0x80 + lsls r1, 13 + orrs r0, r1 + str r0, [sp] + ldr r0, [r3, 0xC] + adds r0, r2 + ldrh r1, [r0] + subs r1, 0x10 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x4] + ands r0, r4 + orrs r0, r1 + ands r0, r5 + movs r1, 0xA0 + lsls r1, 16 + orrs r0, r1 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + bl sub_80C4C2C + movs r0, 0x12 + movs r1, 0 + bl sub_80C4C74 + movs r0, 0x10 + bl sub_80C4C88 + movs r0, 0 + mov r1, sp + bl sub_80C4CF0 + movs r0, 0 + movs r1, 0 + bl sub_80C4C9C + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C2C0C: .4byte gUnknown_20399E0 +_080C2C10: .4byte 0x00000404 +_080C2C14: .4byte 0xffff0000 +_080C2C18: .4byte 0x0000ffff + thumb_func_end sub_80C2B9C + + thumb_func_start sub_80C2C1C +sub_80C2C1C: @ 80C2C1C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C2C30 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080C2C34 @ =sub_80C2C7C + str r0, [r1] + bx lr + .align 2, 0 +_080C2C30: .4byte gUnknown_3005090 +_080C2C34: .4byte sub_80C2C7C + thumb_func_end sub_80C2C1C + + thumb_func_start sub_80C2C38 +sub_80C2C38: @ 80C2C38 + push {lr} + movs r0, 0 + movs r1, 0x4 + movs r2, 0x4 + bl sub_80C210C + movs r0, 0x1 + movs r1, 0x5 + movs r2, 0x5 + bl sub_80C210C + movs r0, 0x2 + movs r1, 0x6 + movs r2, 0x6 + bl sub_80C210C + movs r0, 0x3 + movs r1, 0x7 + movs r2, 0x7 + bl sub_80C210C + movs r0, 0x4 + movs r1, 0x8 + movs r2, 0x8 + bl sub_80C210C + movs r0, 0x5 + movs r1, 0x9 + movs r2, 0x9 + bl sub_80C210C + pop {r0} + bx r0 + thumb_func_end sub_80C2C38 + + thumb_func_start sub_80C2C7C +sub_80C2C7C: @ 80C2C7C + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080C2CA0 @ =gUnknown_20399E0 + ldr r3, [r1] + ldr r4, _080C2CA4 @ =0x00000ccf + adds r0, r3, r4 + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x7 + bls _080C2C94 + b _080C2DFC +_080C2C94: + lsls r0, 2 + ldr r1, _080C2CA8 @ =_080C2CAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C2CA0: .4byte gUnknown_20399E0 +_080C2CA4: .4byte 0x00000ccf +_080C2CA8: .4byte _080C2CAC + .align 2, 0 +_080C2CAC: + .4byte _080C2CCC + .4byte _080C2CF4 + .4byte _080C2CFA + .4byte _080C2D1C + .4byte _080C2D6C + .4byte _080C2D84 + .4byte _080C2DB8 + .4byte _080C2DD8 +_080C2CCC: + movs r0, 0x1 + bl sub_80C4ED0 + movs r0, 0x3 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x4 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _080C2CEC @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2CF0 @ =0x00000ccf + adds r1, r0 + b _080C2DEC + .align 2, 0 +_080C2CEC: .4byte gUnknown_20399E0 +_080C2CF0: .4byte 0x00000ccf +_080C2CF4: + bl sub_80C2C38 + b _080C2DE4 +_080C2CFA: + ldr r0, _080C2D10 @ =gUnknown_83EF2DC + movs r1, 0 + movs r2, 0xA0 + bl sub_80703EC + ldr r0, _080C2D14 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r3, _080C2D18 @ =0x00000ccf + adds r1, r3 + b _080C2DEC + .align 2, 0 +_080C2D10: .4byte gUnknown_83EF2DC +_080C2D14: .4byte gUnknown_20399E0 +_080C2D18: .4byte 0x00000ccf +_080C2D1C: + movs r0, 0x6 + movs r1, 0 + bl sub_80C22C4 + movs r0, 0x1 + bl sub_80C4324 + movs r0, 0x1 + bl sub_80C3154 + movs r0, 0xFF + movs r1, 0x19 + movs r2, 0x1 + bl sub_80C4960 + movs r0, 0xFF + movs r1, 0x19 + movs r2, 0x1 + bl sub_80C48BC + ldr r1, _080C2D64 @ =gUnknown_20399E0 + ldr r0, [r1] + ldr r4, _080C2D68 @ =0x00000cce + adds r0, r4 + movs r2, 0 + strb r2, [r0] + ldr r0, [r1] + movs r3, 0xCD + lsls r3, 4 + adds r0, r3 + strb r2, [r0] + ldr r1, [r1] + adds r4, 0x1 + adds r1, r4 + b _080C2DEC + .align 2, 0 +_080C2D64: .4byte gUnknown_20399E0 +_080C2D68: .4byte 0x00000cce +_080C2D6C: + bl sub_80C253C + ldr r0, _080C2D7C @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2D80 @ =0x00000ccf + adds r1, r0 + b _080C2DEC + .align 2, 0 +_080C2D7C: .4byte gUnknown_20399E0 +_080C2D80: .4byte 0x00000ccf +_080C2D84: + ldr r0, [r4] + movs r2, 0xCD + lsls r2, 4 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0xF + bne _080C2DA4 + ldrb r0, [r1] + bl sub_80C4C48 + ldr r1, [r4] + ldr r3, _080C2DA0 @ =0x00000ccf + adds r1, r3 + b _080C2DEC + .align 2, 0 +_080C2DA0: .4byte 0x00000ccf +_080C2DA4: + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r4] + movs r4, 0xCD + lsls r4, 4 + adds r0, r4 + ldrb r0, [r0] + bl sub_80C4C48 + b _080C2E0E +_080C2DB8: + bl sub_80C2B9C + bl sub_80C2B48 + movs r0, 0xF3 + bl sub_80722CC + ldr r0, _080C2DD0 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2DD4 @ =0x00000ccf + adds r1, r0 + b _080C2DEC + .align 2, 0 +_080C2DD0: .4byte gUnknown_20399E0 +_080C2DD4: .4byte 0x00000ccf +_080C2DD8: + bl sub_80C2E1C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C2E0E +_080C2DE4: + ldr r0, _080C2DF4 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r2, _080C2DF8 @ =0x00000ccf + adds r1, r2 +_080C2DEC: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C2E0E + .align 2, 0 +_080C2DF4: .4byte gUnknown_20399E0 +_080C2DF8: .4byte 0x00000ccf +_080C2DFC: + ldr r1, _080C2E14 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + ldr r4, _080C2E18 @ =0x00000cc8 + adds r1, r3, r4 + ldr r1, [r1] + str r1, [r0] +_080C2E0E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2E14: .4byte gUnknown_3005090 +_080C2E18: .4byte 0x00000cc8 + thumb_func_end sub_80C2C7C + + thumb_func_start sub_80C2E1C +sub_80C2E1C: @ 80C2E1C + push {r4,r5,lr} + bl sub_80C2B48 + ldr r0, _080C2E40 @ =gUnknown_20399E0 + ldr r2, [r0] + ldr r0, [r2] + movs r4, 0x80 + lsls r4, 3 + adds r0, r4 + ldr r1, [r0] + ldrh r3, [r1, 0x20] + movs r5, 0x20 + ldrsh r0, [r1, r5] + cmp r0, 0x68 + bne _080C2E44 + movs r0, 0x1 + b _080C2FB2 + .align 2, 0 +_080C2E40: .4byte gUnknown_20399E0 +_080C2E44: + ldr r5, _080C2E90 @ =0x00000cce + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, 0x11 + bls _080C2E94 + adds r0, r3, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x1 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x1 + b _080C2FA0 + .align 2, 0 +_080C2E90: .4byte 0x00000cce +_080C2E94: + cmp r0, 0xE + bls _080C2ED8 + adds r0, r3, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x2 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x2 + b _080C2FA0 +_080C2ED8: + cmp r0, 0xA + bls _080C2F1C + adds r0, r3, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x3 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x3 + b _080C2FA0 +_080C2F1C: + cmp r0, 0x6 + bls _080C2F60 + adds r0, r3, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x5 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x5 + b _080C2FA0 +_080C2F60: + adds r0, r3, 0 + adds r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x4] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x8] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + adds r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0xC] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x10] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x8 + strh r0, [r1, 0x20] + ldr r0, [r2, 0x14] + adds r0, r4 + ldr r1, [r0] + ldrh r0, [r1, 0x20] + subs r0, 0x8 +_080C2FA0: + strh r0, [r1, 0x20] + ldr r0, _080C2FB8 @ =gUnknown_20399E0 + ldr r1, [r0] + ldr r0, _080C2FBC @ =0x00000cce + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_080C2FB2: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080C2FB8: .4byte gUnknown_20399E0 +_080C2FBC: .4byte 0x00000cce + thumb_func_end sub_80C2E1C + + thumb_func_start sub_80C2FC0 +sub_80C2FC0: @ 80C2FC0 + push {lr} + adds r1, r0, 0 + ldr r0, _080C2FE8 @ =gUnknown_20399E4 + ldr r2, [r0] + ldrh r0, [r2, 0xC] + cmp r0, 0 + beq _080C2FEC + ldrh r0, [r2, 0x8] + ldrh r3, [r1, 0x20] + adds r0, r3 + strh r0, [r1, 0x20] + ldrh r0, [r2, 0xA] + ldrh r3, [r1, 0x22] + adds r0, r3 + strh r0, [r1, 0x22] + ldrh r0, [r2, 0xC] + subs r0, 0x1 + strh r0, [r2, 0xC] + b _080C3004 + .align 2, 0 +_080C2FE8: .4byte gUnknown_20399E4 +_080C2FEC: + ldr r1, [r2, 0x1C] + movs r3, 0 + ldrsh r0, [r2, r3] + lsls r0, 3 + adds r0, 0x24 + strh r0, [r1, 0x20] + ldr r1, [r2, 0x1C] + movs r3, 0x2 + ldrsh r0, [r2, r3] + lsls r0, 3 + adds r0, 0x24 + strh r0, [r1, 0x22] +_080C3004: + pop {r0} + bx r0 + thumb_func_end sub_80C2FC0 + + thumb_func_start sub_80C3008 +sub_80C3008: @ 80C3008 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r6, _080C3090 @ =gUnknown_20399E4 + movs r0, 0x92 + lsls r0, 1 + bl sub_8002BB0 + adds r1, r0, 0 + str r1, [r6] + ldr r0, _080C3094 @ =gUnknown_83EF4E0 + adds r1, 0x24 + bl LZ77UnCompWram + ldr r0, [r6] + strh r4, [r0, 0x20] + strh r5, [r0, 0x22] + bl sub_80C3D40 + ldr r1, [r6] + movs r2, 0 + ldrsh r0, [r1, r2] + lsls r0, 3 + adds r0, 0x24 + strh r0, [r1, 0x4] + movs r3, 0x2 + ldrsh r0, [r1, r3] + lsls r0, 3 + adds r0, 0x24 + strh r0, [r1, 0x6] + ldr r0, _080C3098 @ =sub_80C31C0 + str r0, [r1, 0x10] + ldrb r0, [r1, 0x14] + bl sub_80C35DC + ldr r1, [r6] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x16] + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r6] + movs r4, 0x2 + ldrsh r2, [r1, r4] + movs r4, 0 + ldrsh r3, [r1, r4] + movs r1, 0x1 + bl sub_80C4164 + lsls r0, 24 + lsrs r0, 24 + bl sub_80C3878 + ldr r1, [r6] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + bl sub_80C309C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3090: .4byte gUnknown_20399E4 +_080C3094: .4byte gUnknown_83EF4E0 +_080C3098: .4byte sub_80C31C0 + thumb_func_end sub_80C3008 + + thumb_func_start sub_80C309C +sub_80C309C: @ 80C309C + push {r4-r6,lr} + sub sp, 0x40 + ldr r6, _080C3134 @ =gUnknown_20399E4 + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0x24 + str r0, [sp, 0x30] + movs r1, 0x80 + lsls r1, 1 + add r5, sp, 0x30 + str r1, [r5, 0x4] + ldrh r0, [r2, 0x20] + lsls r0, 16 + orrs r0, r1 + str r0, [r5, 0x4] + ldr r0, _080C3138 @ =gUnknown_83EF25C + str r0, [sp, 0x38] + ldrh r3, [r2, 0x22] + ldr r1, _080C313C @ =0xffff0000 + add r4, sp, 0x38 + ldr r0, [r4, 0x4] + ands r0, r1 + orrs r0, r3 + str r0, [r4, 0x4] + ldrh r0, [r2, 0x20] + add r1, sp, 0x18 + movs r3, 0 + strh r0, [r1] + ldrh r2, [r2, 0x22] + mov r0, sp + adds r0, 0x1A + strh r2, [r0] + ldr r0, _080C3140 @ =gUnknown_83F1C3C + str r0, [sp, 0x1C] + ldr r0, _080C3144 @ =gUnknown_83F1C50 + str r0, [sp, 0x20] + str r3, [sp, 0x24] + ldr r0, _080C3148 @ =gUnknown_8231CFC + str r0, [sp, 0x28] + ldr r0, _080C314C @ =sub_80C2FC0 + str r0, [sp, 0x2C] + mov r0, sp + movs r2, 0x18 + bl memcpy + adds r0, r5, 0 + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + ldr r0, [r6] + movs r2, 0x4 + ldrsh r1, [r0, r2] + movs r3, 0x6 + ldrsh r2, [r0, r3] + mov r0, sp + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r6] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080C3150 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2, 0x1C] + movs r0, 0x1 + bl sub_80C3154 + add sp, 0x40 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3134: .4byte gUnknown_20399E4 +_080C3138: .4byte gUnknown_83EF25C +_080C313C: .4byte 0xffff0000 +_080C3140: .4byte gUnknown_83F1C3C +_080C3144: .4byte gUnknown_83F1C50 +_080C3148: .4byte gUnknown_8231CFC +_080C314C: .4byte sub_80C2FC0 +_080C3150: .4byte gUnknown_202063C + thumb_func_end sub_80C309C + + thumb_func_start sub_80C3154 +sub_80C3154: @ 80C3154 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C3174 @ =gUnknown_20399E4 + ldr r1, [r1] + ldr r2, [r1, 0x1C] + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_080C3174: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3154 + + thumb_func_start sub_80C3178 +sub_80C3178: @ 80C3178 + ldr r0, _080C3184 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0xE] + bx lr + .align 2, 0 +_080C3184: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3178 + + thumb_func_start sub_80C3188 +sub_80C3188: @ 80C3188 + push {r4,lr} + ldr r4, _080C31BC @ =gUnknown_20399E4 + ldr r0, [r4] + ldr r0, [r0, 0x1C] + cmp r0, 0 + beq _080C31A8 + bl sub_8007280 + ldr r0, [r4] + ldrh r0, [r0, 0x20] + bl sub_800874C + ldr r0, [r4] + ldrh r0, [r0, 0x22] + bl sub_8008A30 +_080C31A8: + ldr r0, [r4] + cmp r0, 0 + beq _080C31B6 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C31B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C31BC: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3188 + + thumb_func_start sub_80C31C0 +sub_80C31C0: @ 80C31C0 + push {r4-r6,lr} + movs r5, 0 + ldr r3, _080C3278 @ =gUnknown_20399E4 + ldr r4, [r3] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + ldr r2, _080C327C @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x40 + ands r0, r1 + adds r6, r3, 0 + cmp r0, 0 + beq _080C31E8 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + ble _080C31E8 + ldr r0, _080C3280 @ =0x0000fffe + strh r0, [r4, 0xA] + movs r5, 0x1 +_080C31E8: + ldrh r1, [r2, 0x2C] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C3202 + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r1, r3] + cmp r0, 0xD + bgt _080C3202 + movs r0, 0x2 + strh r0, [r1, 0xA] + movs r5, 0x1 +_080C3202: + ldrh r1, [r2, 0x2C] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080C321C + ldr r1, [r6] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0x14 + bgt _080C321C + movs r0, 0x2 + strh r0, [r1, 0x8] + movs r5, 0x1 +_080C321C: + ldrh r1, [r2, 0x2C] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080C3236 + ldr r1, [r6] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _080C3236 + ldr r0, _080C3280 @ =0x0000fffe + strh r0, [r1, 0x8] + movs r5, 0x1 +_080C3236: + ldrh r3, [r2, 0x2E] + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _080C328C + movs r5, 0x4 + ldr r0, [r6] + ldr r1, [r0] + ldr r0, _080C3284 @ =0x000d0015 + cmp r1, r0 + bne _080C3254 + movs r0, 0xF0 + bl sub_80722CC + movs r5, 0x6 +_080C3254: + ldr r0, [r6] + ldr r1, [r0] + ldr r0, _080C3288 @ =0x000b0015 + cmp r1, r0 + bne _080C331A + movs r0, 0 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C331A + movs r0, 0xF0 + bl sub_80722CC + movs r5, 0x5 + b _080C331A + .align 2, 0 +_080C3278: .4byte gUnknown_20399E4 +_080C327C: .4byte gUnknown_30030F0 +_080C3280: .4byte 0x0000fffe +_080C3284: .4byte 0x000d0015 +_080C3288: .4byte 0x000b0015 +_080C328C: + movs r0, 0x2 + ands r0, r3 + cmp r0, 0 + bne _080C3318 + ldrh r1, [r2, 0x30] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080C3300 + bl sub_80C3418 + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080C32FC @ =gUnknown_20399E4 + ldr r1, [r4] + movs r5, 0x2 + ldrsh r2, [r1, r5] + movs r5, 0 + ldrsh r3, [r1, r5] + movs r1, 0 + bl sub_80C4164 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x14] + bl sub_80C35DC + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x16] + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r5, 0 + ldrsh r3, [r1, r5] + movs r1, 0x1 + bl sub_80C4164 + lsls r0, 24 + lsrs r0, 24 + bl sub_80C3878 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + movs r0, 0x3 + b _080C332C + .align 2, 0 +_080C32FC: .4byte gUnknown_20399E4 +_080C3300: + movs r0, 0x4 + ands r0, r3 + cmp r0, 0 + beq _080C331A + ldr r0, _080C3334 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C3338 @ =0x000047bc + adds r0, r1 + ldr r1, [r0] + ldr r0, _080C333C @ =sub_80567DC + cmp r1, r0 + bne _080C331A +_080C3318: + movs r5, 0x6 +_080C331A: + cmp r5, 0x1 + bne _080C332A + ldr r0, _080C3340 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 + strh r0, [r1, 0xC] + ldr r0, _080C3344 @ =sub_80C3348 + str r0, [r1, 0x10] +_080C332A: + adds r0, r5, 0 +_080C332C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080C3334: .4byte gUnknown_20399D4 +_080C3338: .4byte 0x000047bc +_080C333C: .4byte sub_80567DC +_080C3340: .4byte gUnknown_20399E4 +_080C3344: .4byte sub_80C3348 + thumb_func_end sub_80C31C0 + + thumb_func_start sub_80C3348 +sub_80C3348: @ 80C3348 + push {r4,r5,lr} + ldr r4, _080C3358 @ =gUnknown_20399E4 + ldr r1, [r4] + ldrh r0, [r1, 0xC] + cmp r0, 0 + beq _080C335C + movs r0, 0x2 + b _080C33F4 + .align 2, 0 +_080C3358: .4byte gUnknown_20399E4 +_080C335C: + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + ble _080C336A + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_080C336A: + ldr r1, [r4] + movs r3, 0x8 + ldrsh r0, [r1, r3] + cmp r0, 0 + bge _080C337A + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_080C337A: + ldr r1, [r4] + movs r5, 0xA + ldrsh r0, [r1, r5] + cmp r0, 0 + ble _080C338A + ldrh r0, [r1, 0x2] + adds r0, 0x1 + strh r0, [r1, 0x2] +_080C338A: + ldr r1, [r4] + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0 + bge _080C339A + ldrh r0, [r1, 0x2] + subs r0, 0x1 + strh r0, [r1, 0x2] +_080C339A: + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r5, 0 + ldrsh r3, [r1, r5] + movs r1, 0 + bl sub_80C4164 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x14] + bl sub_80C35DC + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x16] + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r5, 0 + ldrsh r3, [r1, r5] + movs r1, 0x1 + bl sub_80C4164 + lsls r0, 24 + lsrs r0, 24 + bl sub_80C3878 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + ldr r0, _080C33FC @ =sub_80C31C0 + str r0, [r1, 0x10] + movs r0, 0x3 +_080C33F4: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080C33FC: .4byte sub_80C31C0 + thumb_func_end sub_80C3348 + + thumb_func_start sub_80C3400 +sub_80C3400: @ 80C3400 + push {lr} + ldr r0, _080C3414 @ =gUnknown_20399E4 + ldr r0, [r0] + ldr r0, [r0, 0x10] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080C3414: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3400 + + thumb_func_start sub_80C3418 +sub_80C3418: @ 80C3418 + push {r4,r5,lr} + movs r0, 0 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C3482 + ldr r5, _080C3474 @ =gUnknown_20399E4 + ldr r1, [r5] + ldrb r0, [r1, 0xE] + adds r0, 0x1 + strb r0, [r1, 0xE] + ldr r4, [r5] + ldrb r0, [r4, 0xE] + movs r1, 0x3 + bl __umodsi3 + strb r0, [r4, 0xE] + ldr r0, [r5] + ldrb r0, [r0, 0xE] + cmp r0, 0 + bne _080C3460 + bl sub_80C0E20 + adds r4, r0, 0 + bl sub_80C0E34 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _080C3460 + ldr r1, [r5] + ldrb r0, [r1, 0xE] + adds r0, 0x1 + strb r0, [r1, 0xE] +_080C3460: + ldr r4, _080C3474 @ =gUnknown_20399E4 + ldr r1, [r4] + ldrb r0, [r1, 0xE] + cmp r0, 0x1 + beq _080C3478 + cmp r0, 0x1 + ble _080C34A2 + cmp r0, 0x2 + beq _080C34B8 + b _080C34A2 + .align 2, 0 +_080C3474: .4byte gUnknown_20399E4 +_080C3478: + movs r0, 0x15 + strh r0, [r1] + movs r0, 0xB + strh r0, [r1, 0x2] + b _080C34C0 +_080C3482: + ldr r4, _080C34B4 @ =gUnknown_20399E4 + ldr r1, [r4] + ldrb r0, [r1, 0xE] + adds r0, 0x1 + strb r0, [r1, 0xE] + ldr r2, [r4] + ldrb r0, [r2, 0xE] + movs r1, 0x1 + ands r0, r1 + strb r0, [r2, 0xE] + ldr r1, [r4] + ldrb r0, [r1, 0xE] + cmp r0, 0 + beq _080C34A2 + cmp r0, 0x1 + beq _080C34B8 +_080C34A2: + bl sub_80C4380 + ldr r1, [r4] + strh r0, [r1] + bl sub_80C438C + ldr r1, [r4] + strh r0, [r1, 0x2] + b _080C34C0 + .align 2, 0 +_080C34B4: .4byte gUnknown_20399E4 +_080C34B8: + movs r0, 0xD + strh r0, [r1, 0x2] + movs r0, 0x15 + strh r0, [r1] +_080C34C0: + ldr r4, _080C3504 @ =gUnknown_20399E4 + ldr r1, [r4] + ldr r2, [r1, 0x1C] + movs r3, 0 + ldrsh r0, [r1, r3] + lsls r0, 3 + adds r0, 0x24 + strh r0, [r2, 0x20] + ldr r2, [r1, 0x1C] + movs r5, 0x2 + ldrsh r0, [r1, r5] + lsls r0, 3 + adds r0, 0x24 + strh r0, [r2, 0x22] + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r5, 0 + ldrsh r3, [r1, r5] + movs r1, 0 + bl sub_80C4164 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x14] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3504: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3418 + + thumb_func_start sub_80C3508 +sub_80C3508: @ 80C3508 + ldr r0, _080C3510 @ =gUnknown_20399E4 + ldr r0, [r0] + ldrh r0, [r0] + bx lr + .align 2, 0 +_080C3510: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3508 + + thumb_func_start sub_80C3514 +sub_80C3514: @ 80C3514 + ldr r0, _080C351C @ =gUnknown_20399E4 + ldr r0, [r0] + ldrh r0, [r0, 0x2] + bx lr + .align 2, 0 +_080C351C: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3514 + + thumb_func_start sub_80C3520 +sub_80C3520: @ 80C3520 + push {r4,lr} + ldr r4, _080C353C @ =gUnknown_20399E4 + ldr r1, [r4] + ldrh r0, [r1, 0x2] + cmp r0, 0xE + bhi _080C3538 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + blt _080C3538 + cmp r0, 0x15 + ble _080C3540 +_080C3538: + movs r0, 0xC5 + b _080C3574 + .align 2, 0 +_080C353C: .4byte gUnknown_20399E4 +_080C3540: + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r4, 0 + ldrsh r3, [r1, r4] + movs r1, 0 + bl sub_80C4164 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xAE + beq _080C3564 + cmp r4, 0xBB + bne _080C3572 +_080C3564: + ldr r0, _080C357C @ =0x000008b5 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080C3572 + movs r4, 0xC5 +_080C3572: + adds r0, r4, 0 +_080C3574: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C357C: .4byte 0x000008b5 + thumb_func_end sub_80C3520 + + thumb_func_start sub_80C3580 +sub_80C3580: @ 80C3580 + push {r4,lr} + ldr r4, _080C359C @ =gUnknown_20399E4 + ldr r1, [r4] + ldrh r0, [r1, 0x2] + cmp r0, 0xE + bhi _080C3598 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + blt _080C3598 + cmp r0, 0x15 + ble _080C35A0 +_080C3598: + movs r0, 0xC5 + b _080C35D0 + .align 2, 0 +_080C359C: .4byte gUnknown_20399E4 +_080C35A0: + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r4, 0 + ldrsh r3, [r1, r4] + movs r1, 0x1 + bl sub_80C4164 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8D + bne _080C35CE + ldr r0, _080C35D8 @ =0x00000844 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080C35CE + movs r4, 0xC5 +_080C35CE: + adds r0, r4, 0 +_080C35D0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C35D8: .4byte 0x00000844 + thumb_func_end sub_80C3580 + + thumb_func_start sub_80C35DC +sub_80C35DC: @ 80C35DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x58 + cmp r0, 0x6D + bls _080C35EA + b _080C3870 +_080C35EA: + lsls r0, 2 + ldr r1, _080C35F4 @ =_080C35F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C35F4: .4byte _080C35F8 + .align 2, 0 +_080C35F8: + .4byte _080C37B0 + .4byte _080C37B6 + .4byte _080C37C0 + .4byte _080C37C8 + .4byte _080C37D0 + .4byte _080C37D8 + .4byte _080C37E0 + .4byte _080C37E8 + .4byte _080C37F0 + .4byte _080C37F8 + .4byte _080C3800 + .4byte _080C3840 + .4byte _080C3858 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3808 + .4byte _080C3810 + .4byte _080C3818 + .4byte _080C3820 + .4byte _080C3828 + .4byte _080C3830 + .4byte _080C3836 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C3870 + .4byte _080C384C +_080C37B0: + movs r0, 0x89 + lsls r0, 4 + b _080C385A +_080C37B6: + ldr r0, _080C37BC @ =0x00000891 + b _080C385A + .align 2, 0 +_080C37BC: .4byte 0x00000891 +_080C37C0: + ldr r0, _080C37C4 @ =0x00000892 + b _080C385A + .align 2, 0 +_080C37C4: .4byte 0x00000892 +_080C37C8: + ldr r0, _080C37CC @ =0x00000893 + b _080C385A + .align 2, 0 +_080C37CC: .4byte 0x00000893 +_080C37D0: + ldr r0, _080C37D4 @ =0x00000894 + b _080C385A + .align 2, 0 +_080C37D4: .4byte 0x00000894 +_080C37D8: + ldr r0, _080C37DC @ =0x00000895 + b _080C385A + .align 2, 0 +_080C37DC: .4byte 0x00000895 +_080C37E0: + ldr r0, _080C37E4 @ =0x00000896 + b _080C385A + .align 2, 0 +_080C37E4: .4byte 0x00000896 +_080C37E8: + ldr r0, _080C37EC @ =0x00000897 + b _080C385A + .align 2, 0 +_080C37EC: .4byte 0x00000897 +_080C37F0: + ldr r0, _080C37F4 @ =0x00000898 + b _080C385A + .align 2, 0 +_080C37F4: .4byte 0x00000898 +_080C37F8: + ldr r0, _080C37FC @ =0x00000899 + b _080C385A + .align 2, 0 +_080C37FC: .4byte 0x00000899 +_080C3800: + ldr r0, _080C3804 @ =0x0000089a + b _080C385A + .align 2, 0 +_080C3804: .4byte 0x0000089a +_080C3808: + ldr r0, _080C380C @ =0x0000089b + b _080C385A + .align 2, 0 +_080C380C: .4byte 0x0000089b +_080C3810: + ldr r0, _080C3814 @ =0x0000089c + b _080C385A + .align 2, 0 +_080C3814: .4byte 0x0000089c +_080C3818: + ldr r0, _080C381C @ =0x0000089d + b _080C385A + .align 2, 0 +_080C381C: .4byte 0x0000089d +_080C3820: + ldr r0, _080C3824 @ =0x0000089e + b _080C385A + .align 2, 0 +_080C3824: .4byte 0x0000089e +_080C3828: + ldr r0, _080C382C @ =0x0000089f + b _080C385A + .align 2, 0 +_080C382C: .4byte 0x0000089f +_080C3830: + movs r0, 0x8A + lsls r0, 4 + b _080C385A +_080C3836: + ldr r0, _080C383C @ =0x000008a1 + b _080C385A + .align 2, 0 +_080C383C: .4byte 0x000008a1 +_080C3840: + movs r0, 0x3 + bl sub_80C0E04 + lsls r0, 24 + cmp r0, 0 + bne _080C3850 +_080C384C: + movs r0, 0 + b _080C3872 +_080C3850: + ldr r0, _080C3854 @ =0x000008a2 + b _080C385A + .align 2, 0 +_080C3854: .4byte 0x000008a2 +_080C3858: + ldr r0, _080C386C @ =0x000008a3 +_080C385A: + bl sub_806E6D0 + lsls r0, 24 + movs r1, 0x3 + cmp r0, 0 + beq _080C3868 + movs r1, 0x2 +_080C3868: + adds r0, r1, 0 + b _080C3872 + .align 2, 0 +_080C386C: .4byte 0x000008a3 +_080C3870: + movs r0, 0x1 +_080C3872: + pop {r1} + bx r1 + thumb_func_end sub_80C35DC + + thumb_func_start sub_80C3878 +sub_80C3878: @ 80C3878 + push {lr} + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x7E + cmp r0, 0x47 + bls _080C3886 + b _080C3AC0 +_080C3886: + lsls r0, 2 + ldr r1, _080C3890 @ =_080C3894 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C3890: .4byte _080C3894 + .align 2, 0 +_080C3894: + .4byte _080C39B8 + .4byte _080C39C0 + .4byte _080C39C8 + .4byte _080C39D0 + .4byte _080C39D8 + .4byte _080C39E0 + .4byte _080C39E8 + .4byte _080C39F0 + .4byte _080C39F8 + .4byte _080C3A00 + .4byte _080C3A08 + .4byte _080C3A10 + .4byte _080C3A18 + .4byte _080C3A1E + .4byte _080C3A28 + .4byte _080C3A30 + .4byte _080C3A38 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3A40 + .4byte _080C3A48 + .4byte _080C3A50 + .4byte _080C3A58 + .4byte _080C3A60 + .4byte _080C3A68 + .4byte _080C3A70 + .4byte _080C3A78 + .4byte _080C3A80 + .4byte _080C3A88 + .4byte _080C3A90 + .4byte _080C3A98 + .4byte _080C3A9E + .4byte _080C3AA8 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C3AC0 + .4byte _080C39B4 +_080C39B4: + movs r0, 0 + b _080C3AC2 +_080C39B8: + ldr r0, _080C39BC @ =0x000008a4 + b _080C3AAA + .align 2, 0 +_080C39BC: .4byte 0x000008a4 +_080C39C0: + ldr r0, _080C39C4 @ =0x000008a5 + b _080C3AAA + .align 2, 0 +_080C39C4: .4byte 0x000008a5 +_080C39C8: + ldr r0, _080C39CC @ =0x000008a6 + b _080C3AAA + .align 2, 0 +_080C39CC: .4byte 0x000008a6 +_080C39D0: + ldr r0, _080C39D4 @ =0x000008a7 + b _080C3AAA + .align 2, 0 +_080C39D4: .4byte 0x000008a7 +_080C39D8: + ldr r0, _080C39DC @ =0x000008a8 + b _080C3AAA + .align 2, 0 +_080C39DC: .4byte 0x000008a8 +_080C39E0: + ldr r0, _080C39E4 @ =0x000008a9 + b _080C3AAA + .align 2, 0 +_080C39E4: .4byte 0x000008a9 +_080C39E8: + ldr r0, _080C39EC @ =0x000008aa + b _080C3AAA + .align 2, 0 +_080C39EC: .4byte 0x000008aa +_080C39F0: + ldr r0, _080C39F4 @ =0x000008ab + b _080C3AAA + .align 2, 0 +_080C39F4: .4byte 0x000008ab +_080C39F8: + ldr r0, _080C39FC @ =0x000008ac + b _080C3AAA + .align 2, 0 +_080C39FC: .4byte 0x000008ac +_080C3A00: + ldr r0, _080C3A04 @ =0x000008ad + b _080C3AAA + .align 2, 0 +_080C3A04: .4byte 0x000008ad +_080C3A08: + ldr r0, _080C3A0C @ =0x000008ae + b _080C3AAA + .align 2, 0 +_080C3A0C: .4byte 0x000008ae +_080C3A10: + ldr r0, _080C3A14 @ =0x000008af + b _080C3AAA + .align 2, 0 +_080C3A14: .4byte 0x000008af +_080C3A18: + movs r0, 0x8B + lsls r0, 4 + b _080C3AAA +_080C3A1E: + ldr r0, _080C3A24 @ =0x000008b1 + b _080C3AAA + .align 2, 0 +_080C3A24: .4byte 0x000008b1 +_080C3A28: + ldr r0, _080C3A2C @ =0x000008b2 + b _080C3AAA + .align 2, 0 +_080C3A2C: .4byte 0x000008b2 +_080C3A30: + ldr r0, _080C3A34 @ =0x000008b3 + b _080C3AAA + .align 2, 0 +_080C3A34: .4byte 0x000008b3 +_080C3A38: + ldr r0, _080C3A3C @ =0x000008b4 + b _080C3AAA + .align 2, 0 +_080C3A3C: .4byte 0x000008b4 +_080C3A40: + ldr r0, _080C3A44 @ =0x000008b5 + b _080C3AAA + .align 2, 0 +_080C3A44: .4byte 0x000008b5 +_080C3A48: + ldr r0, _080C3A4C @ =0x000008b6 + b _080C3AAA + .align 2, 0 +_080C3A4C: .4byte 0x000008b6 +_080C3A50: + ldr r0, _080C3A54 @ =0x000008b7 + b _080C3AAA + .align 2, 0 +_080C3A54: .4byte 0x000008b7 +_080C3A58: + ldr r0, _080C3A5C @ =0x000008b8 + b _080C3AAA + .align 2, 0 +_080C3A5C: .4byte 0x000008b8 +_080C3A60: + ldr r0, _080C3A64 @ =0x000008b9 + b _080C3AAA + .align 2, 0 +_080C3A64: .4byte 0x000008b9 +_080C3A68: + ldr r0, _080C3A6C @ =0x000008ba + b _080C3AAA + .align 2, 0 +_080C3A6C: .4byte 0x000008ba +_080C3A70: + ldr r0, _080C3A74 @ =0x000008bb + b _080C3AAA + .align 2, 0 +_080C3A74: .4byte 0x000008bb +_080C3A78: + ldr r0, _080C3A7C @ =0x000008bc + b _080C3AAA + .align 2, 0 +_080C3A7C: .4byte 0x000008bc +_080C3A80: + ldr r0, _080C3A84 @ =0x000008bd + b _080C3AAA + .align 2, 0 +_080C3A84: .4byte 0x000008bd +_080C3A88: + ldr r0, _080C3A8C @ =0x000008be + b _080C3AAA + .align 2, 0 +_080C3A8C: .4byte 0x000008be +_080C3A90: + ldr r0, _080C3A94 @ =0x000008bf + b _080C3AAA + .align 2, 0 +_080C3A94: .4byte 0x000008bf +_080C3A98: + movs r0, 0x8C + lsls r0, 4 + b _080C3AAA +_080C3A9E: + ldr r0, _080C3AA4 @ =0x000008c1 + b _080C3AAA + .align 2, 0 +_080C3AA4: .4byte 0x000008c1 +_080C3AA8: + ldr r0, _080C3ABC @ =0x000008c2 +_080C3AAA: + bl sub_806E6D0 + lsls r0, 24 + movs r1, 0x3 + cmp r0, 0 + beq _080C3AB8 + movs r1, 0x2 +_080C3AB8: + adds r0, r1, 0 + b _080C3AC2 + .align 2, 0 +_080C3ABC: .4byte 0x000008c2 +_080C3AC0: + movs r0, 0x1 +_080C3AC2: + pop {r1} + bx r1 + thumb_func_end sub_80C3878 + + thumb_func_start sub_80C3AC8 +sub_80C3AC8: @ 80C3AC8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080C3AE4 + cmp r0, 0x1 + beq _080C3AF0 + ldr r0, _080C3AE0 @ =gUnknown_20399E4 + ldr r0, [r0] + ldrb r0, [r0, 0x16] + b _080C3AF6 + .align 2, 0 +_080C3AE0: .4byte gUnknown_20399E4 +_080C3AE4: + ldr r0, _080C3AEC @ =gUnknown_20399E4 + ldr r0, [r0] + ldrb r0, [r0, 0x16] + b _080C3AF6 + .align 2, 0 +_080C3AEC: .4byte gUnknown_20399E4 +_080C3AF0: + ldr r0, _080C3AFC @ =gUnknown_20399E4 + ldr r0, [r0] + ldrb r0, [r0, 0x18] +_080C3AF6: + pop {r1} + bx r1 + .align 2, 0 +_080C3AFC: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3AC8 + + thumb_func_start sub_80C3B00 +sub_80C3B00: @ 80C3B00 + push {lr} + ldr r0, _080C3B24 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + .align 2, 0 +_080C3B24: .4byte gUnknown_3005008 + thumb_func_end sub_80C3B00 + + thumb_func_start sub_80C3B28 +sub_80C3B28: @ 80C3B28 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _080C3B58 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + bl sub_8056158 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x8 + bhi _080C3B84 + lsls r0, 2 + ldr r1, _080C3B5C @ =_080C3B60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C3B58: .4byte gUnknown_3005008 +_080C3B5C: .4byte _080C3B60 + .align 2, 0 +_080C3B60: + .4byte _080C3B84 + .4byte _080C3B84 + .4byte _080C3B84 + .4byte _080C3BAC + .4byte _080C3B84 + .4byte _080C3B84 + .4byte _080C3BAC + .4byte _080C3C2C + .4byte _080C3BF0 +_080C3B84: + ldr r0, _080C3BA0 @ =gUnknown_20399E4 + ldr r2, [r0] + ldr r1, _080C3BA4 @ =gUnknown_2036DFC + ldrb r0, [r1, 0x14] + strh r0, [r2, 0x14] + ldr r0, [r1] + ldrh r1, [r0] + ldrh r0, [r0, 0x4] + mov r8, r0 + ldr r0, _080C3BA8 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r4, [r0] + ldrh r5, [r0, 0x2] + b _080C3C9A + .align 2, 0 +_080C3BA0: .4byte gUnknown_20399E4 +_080C3BA4: .4byte gUnknown_2036DFC +_080C3BA8: .4byte gUnknown_3005008 +_080C3BAC: + ldr r4, _080C3BE8 @ =gUnknown_3005008 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x24 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + lsls r0, 16 + lsrs r0, 16 + adds r1, 0x25 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r2, r0, 0 + ldr r0, _080C3BEC @ =gUnknown_20399E4 + ldr r1, [r0] + ldrb r0, [r2, 0x14] + strh r0, [r1, 0x14] + ldr r0, [r2] + ldrh r1, [r0] + ldrh r0, [r0, 0x4] + mov r8, r0 + ldr r0, [r4] + ldrh r4, [r0, 0x28] + ldrh r5, [r0, 0x2A] + b _080C3C9A + .align 2, 0 +_080C3BE8: .4byte gUnknown_3005008 +_080C3BEC: .4byte gUnknown_20399E4 +_080C3BF0: + ldr r4, _080C3C24 @ =gUnknown_3005008 + ldr r1, [r4] + movs r0, 0x14 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x15] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r2, r0, 0 + ldr r0, _080C3C28 @ =gUnknown_20399E4 + ldr r1, [r0] + ldrb r0, [r2, 0x14] + strh r0, [r1, 0x14] + ldr r0, [r2] + ldrh r1, [r0] + ldrh r0, [r0, 0x4] + mov r8, r0 + ldr r0, [r4] + ldrh r4, [r0, 0x18] + ldrh r5, [r0, 0x1A] + b _080C3C9A + .align 2, 0 +_080C3C24: .4byte gUnknown_3005008 +_080C3C28: .4byte gUnknown_20399E4 +_080C3C2C: + ldr r4, _080C3C5C @ =gUnknown_20399E4 + ldr r0, [r4] + ldr r1, _080C3C60 @ =gUnknown_2036DFC + ldrb r1, [r1, 0x14] + strh r1, [r0, 0x14] + cmp r1, 0xC4 + beq _080C3C68 + ldr r0, _080C3C64 @ =gUnknown_3005008 + ldr r0, [r0] + adds r5, r0, 0 + adds r5, 0x24 + movs r0, 0 + ldrsb r0, [r5, r0] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ldrsb r1, [r5, r1] + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r2, r0, 0 + b _080C3C8E + .align 2, 0 +_080C3C5C: .4byte gUnknown_20399E4 +_080C3C60: .4byte gUnknown_2036DFC +_080C3C64: .4byte gUnknown_3005008 +_080C3C68: + ldr r0, _080C3D30 @ =gUnknown_3005008 + ldr r0, [r0] + adds r5, r0, 0 + adds r5, 0x14 + ldrb r0, [r0, 0x14] + lsls r0, 24 + asrs r0, 24 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ldrsb r1, [r5, r1] + lsls r1, 16 + lsrs r1, 16 + bl sub_8055238 + adds r2, r0, 0 + ldr r1, [r4] + ldrb r0, [r2, 0x14] + strh r0, [r1, 0x14] +_080C3C8E: + ldr r0, [r2] + ldrh r1, [r0] + ldrh r0, [r0, 0x4] + mov r8, r0 + ldrh r4, [r5, 0x4] + ldrh r5, [r5, 0x6] +_080C3C9A: + ldr r0, _080C3D34 @ =gUnknown_20399E4 + ldr r7, [r0] + ldrh r0, [r7, 0x14] + subs r0, 0x58 + strh r0, [r7, 0x14] + ldr r0, _080C3D38 @ =gUnknown_83F2178 + mov r10, r0 + ldrh r0, [r7, 0x14] + lsls r0, 2 + mov r9, r0 + add r0, r10 + ldrh r6, [r0] + adds r0, r1, 0 + adds r1, r6, 0 + bl __udivsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _080C3CC4 + movs r1, 0x1 +_080C3CC4: + adds r0, r4, 0 + bl __udivsi3 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r6 + bcc _080C3CD8 + subs r0, r6, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_080C3CD8: + mov r0, r10 + adds r0, 0x2 + add r0, r9 + ldrh r6, [r0] + mov r0, r8 + adds r1, r6, 0 + bl __udivsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _080C3CF2 + movs r1, 0x1 +_080C3CF2: + adds r0, r5, 0 + bl __udivsi3 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r6 + bcc _080C3D06 + subs r0, r6, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_080C3D06: + ldr r1, _080C3D3C @ =gUnknown_83F1E60 + mov r2, r9 + adds r0, r2, r1 + ldrh r0, [r0] + adds r0, r4, r0 + strh r0, [r7] + ldrh r0, [r7, 0x14] + lsls r0, 2 + adds r1, 0x2 + adds r0, r1 + ldrh r0, [r0] + adds r0, r5, r0 + strh r0, [r7, 0x2] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3D30: .4byte gUnknown_3005008 +_080C3D34: .4byte gUnknown_20399E4 +_080C3D38: .4byte gUnknown_83F2178 +_080C3D3C: .4byte gUnknown_83F1E60 + thumb_func_end sub_80C3B28 + + thumb_func_start sub_80C3D40 +sub_80C3D40: @ 80C3D40 + push {r4,r5,lr} + bl sub_80C3B00 + lsls r0, 16 + lsrs r0, 16 + subs r0, 0x66 + cmp r0, 0x5C + bls _080C3D52 + b _080C4132 +_080C3D52: + lsls r0, 2 + ldr r1, _080C3D5C @ =_080C3D60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C3D5C: .4byte _080C3D60 + .align 2, 0 +_080C3D60: + .4byte _080C4034 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C40A0 + .4byte _080C40C4 + .4byte _080C40E8 + .4byte _080C4108 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4064 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4028 + .4byte _080C4132 + .4byte _080C3F24 + .4byte _080C3F50 + .4byte _080C3F78 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C3F44 + .4byte _080C3EE4 + .4byte _080C3EF0 + .4byte _080C3ED4 + .4byte _080C3F38 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C3F04 + .4byte _080C4132 + .4byte _080C3F10 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C3FB0 + .4byte _080C3FC8 + .4byte _080C3FD4 + .4byte _080C4132 + .4byte _080C3FF4 + .4byte _080C3FBC + .4byte _080C4014 + .4byte _080C4132 + .4byte _080C3FE0 + .4byte _080C4132 + .4byte _080C4008 + .4byte _080C4132 + .4byte _080C4132 + .4byte _080C3FA4 + .4byte _080C4008 + .4byte _080C4008 + .4byte _080C4008 + .4byte _080C4008 + .4byte _080C4008 + .4byte _080C4008 + .4byte _080C4008 +_080C3ED4: + ldr r0, _080C3EE0 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xC + strh r0, [r1] + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C3EE0: .4byte gUnknown_20399E4 +_080C3EE4: + ldr r0, _080C3EEC @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xE + b _080C411C + .align 2, 0 +_080C3EEC: .4byte gUnknown_20399E4 +_080C3EF0: + ldr r0, _080C3F00 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 + strh r0, [r1] + movs r0, 0xE + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C3F00: .4byte gUnknown_20399E4 +_080C3F04: + ldr r0, _080C3F0C @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x12 + b _080C411C + .align 2, 0 +_080C3F0C: .4byte gUnknown_20399E4 +_080C3F10: + ldr r0, _080C3F20 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x12 + strh r0, [r1] + movs r0, 0x4 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C3F20: .4byte gUnknown_20399E4 +_080C3F24: + ldr r0, _080C3F34 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xE + strh r0, [r1] + movs r0, 0x9 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C3F34: .4byte gUnknown_20399E4 +_080C3F38: + ldr r0, _080C3F40 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x2 + b _080C3FE6 + .align 2, 0 +_080C3F40: .4byte gUnknown_20399E4 +_080C3F44: + ldr r0, _080C3F4C @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xB + b _080C411C + .align 2, 0 +_080C3F4C: .4byte gUnknown_20399E4 +_080C3F50: + ldr r0, _080C3F70 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r2, 0xE + strh r2, [r1] + movs r0, 0x7 + strh r0, [r1, 0x2] + ldr r0, _080C3F74 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1E + beq _080C3F6C + b _080C4136 +_080C3F6C: + b _080C40B6 + .align 2, 0 +_080C3F70: .4byte gUnknown_20399E4 +_080C3F74: .4byte gUnknown_3005008 +_080C3F78: + ldr r0, _080C3F9C @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xC + strh r0, [r1] + movs r2, 0x6 + strh r2, [r1, 0x2] + ldr r0, _080C3FA0 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x23 + beq _080C3F94 + b _080C4136 +_080C3F94: + movs r0, 0xF + strh r0, [r1] + b _080C4136 + .align 2, 0 +_080C3F9C: .4byte gUnknown_20399E4 +_080C3FA0: .4byte gUnknown_3005008 +_080C3FA4: + ldr r0, _080C3FAC @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x12 + b _080C4092 + .align 2, 0 +_080C3FAC: .4byte gUnknown_20399E4 +_080C3FB0: + ldr r0, _080C3FB8 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xA + b _080C401A + .align 2, 0 +_080C3FB8: .4byte gUnknown_20399E4 +_080C3FBC: + ldr r0, _080C3FC4 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x5 + b _080C411C + .align 2, 0 +_080C3FC4: .4byte gUnknown_20399E4 +_080C3FC8: + ldr r0, _080C3FD0 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x2 + b _080C3FE6 + .align 2, 0 +_080C3FD0: .4byte gUnknown_20399E4 +_080C3FD4: + ldr r0, _080C3FDC @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xE + b _080C4078 + .align 2, 0 +_080C3FDC: .4byte gUnknown_20399E4 +_080C3FE0: + ldr r0, _080C3FF0 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x11 +_080C3FE6: + strh r0, [r1] + movs r0, 0x3 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C3FF0: .4byte gUnknown_20399E4 +_080C3FF4: + ldr r0, _080C4004 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x11 + strh r0, [r1] + movs r0, 0xB + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C4004: .4byte gUnknown_20399E4 +_080C4008: + ldr r0, _080C4010 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x9 + b _080C4078 + .align 2, 0 +_080C4010: .4byte gUnknown_20399E4 +_080C4014: + ldr r0, _080C4024 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x10 +_080C401A: + strh r0, [r1] + movs r0, 0x8 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C4024: .4byte gUnknown_20399E4 +_080C4028: + ldr r0, _080C4030 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 + b _080C411C + .align 2, 0 +_080C4030: .4byte gUnknown_20399E4 +_080C4034: + ldr r0, _080C404C @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _080C4054 + ldr r0, _080C4050 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 + b _080C40D8 + .align 2, 0 +_080C404C: .4byte gUnknown_3005008 +_080C4050: .4byte gUnknown_20399E4 +_080C4054: + cmp r0, 0x3 + bne _080C412C + ldr r0, _080C4060 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 + b _080C40B4 + .align 2, 0 +_080C4060: .4byte gUnknown_20399E4 +_080C4064: + ldr r0, _080C4080 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x27 + bne _080C4088 + ldr r0, _080C4084 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 +_080C4078: + strh r0, [r1] + movs r0, 0xC + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C4080: .4byte gUnknown_3005008 +_080C4084: .4byte gUnknown_20399E4 +_080C4088: + cmp r0, 0x28 + bne _080C4136 + ldr r0, _080C409C @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0x4 +_080C4092: + strh r0, [r1] + movs r0, 0xD + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C409C: .4byte gUnknown_20399E4 +_080C40A0: + ldr r0, _080C40BC @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _080C412C + ldr r0, _080C40C0 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xE +_080C40B4: + strh r0, [r1] +_080C40B6: + movs r0, 0x5 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C40BC: .4byte gUnknown_3005008 +_080C40C0: .4byte gUnknown_20399E4 +_080C40C4: + ldr r0, _080C40E0 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _080C412C + ldr r0, _080C40E4 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xE +_080C40D8: + strh r0, [r1] + movs r0, 0x7 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C40E0: .4byte gUnknown_3005008 +_080C40E4: .4byte gUnknown_20399E4 +_080C40E8: + ldr r0, _080C4100 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _080C412C + ldr r0, _080C4104 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xD + b _080C411C + .align 2, 0 +_080C4100: .4byte gUnknown_3005008 +_080C4104: .4byte gUnknown_20399E4 +_080C4108: + ldr r0, _080C4124 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + bne _080C412C + ldr r0, _080C4128 @ =gUnknown_20399E4 + ldr r1, [r0] + movs r0, 0xF +_080C411C: + strh r0, [r1] + movs r0, 0x6 + strh r0, [r1, 0x2] + b _080C4136 + .align 2, 0 +_080C4124: .4byte gUnknown_3005008 +_080C4128: .4byte gUnknown_20399E4 +_080C412C: + bl sub_80C3B28 + b _080C4136 +_080C4132: + bl sub_80C3B28 +_080C4136: + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080C4160 @ =gUnknown_20399E4 + ldr r1, [r4] + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r5, 0 + ldrsh r3, [r1, r5] + movs r1, 0 + bl sub_80C4164 + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x14] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C4160: .4byte gUnknown_20399E4 + thumb_func_end sub_80C3D40 + + thumb_func_start sub_80C4164 +sub_80C4164: @ 80C4164 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r1, r3, 16 + cmp r0, 0x1 + beq _080C4198 + cmp r0, 0x1 + bgt _080C4186 + cmp r0, 0 + beq _080C4190 + b _080C41D0 +_080C4186: + cmp r5, 0x2 + beq _080C41A0 + cmp r5, 0x3 + beq _080C41A8 + b _080C41D0 +_080C4190: + ldr r3, _080C4194 @ =gUnknown_83F2490 + b _080C41AA + .align 2, 0 +_080C4194: .4byte gUnknown_83F2490 +_080C4198: + ldr r3, _080C419C @ =gUnknown_83F2724 + b _080C41AA + .align 2, 0 +_080C419C: .4byte gUnknown_83F2724 +_080C41A0: + ldr r3, _080C41A4 @ =gUnknown_83F29B8 + b _080C41AA + .align 2, 0 +_080C41A4: .4byte gUnknown_83F29B8 +_080C41A8: + ldr r3, _080C41CC @ =gUnknown_83F2C4C +_080C41AA: + lsls r1, 16 + asrs r1, 16 + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x16 + muls r0, r2 + adds r1, r0 + lsls r0, r4, 2 + adds r0, r4 + lsls r2, r0, 5 + adds r0, r2 + lsls r0, 1 + adds r1, r0 + adds r1, r3 + ldrb r0, [r1] + b _080C41D2 + .align 2, 0 +_080C41CC: .4byte gUnknown_83F2C4C +_080C41D0: + movs r0, 0xC5 +_080C41D2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80C4164 + + thumb_func_start sub_80C41D8 +sub_80C41D8: @ 80C41D8 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r4, _080C4204 @ =gUnknown_20399E8 + movs r0, 0x8C + bl sub_8002BB0 + adds r1, r0, 0 + str r1, [r4] + ldr r0, _080C4208 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0x1 + bne _080C4210 + ldr r0, _080C420C @ =gUnknown_83EF59C + adds r1, 0xC + bl LZ77UnCompWram + b _080C4218 + .align 2, 0 +_080C4204: .4byte gUnknown_20399E8 +_080C4208: .4byte gUnknown_300500C +_080C420C: .4byte gUnknown_83EF59C +_080C4210: + ldr r0, _080C423C @ =gUnknown_83EF524 + adds r1, 0xC + bl LZ77UnCompWram +_080C4218: + ldr r4, _080C4240 @ =gUnknown_20399E8 + ldr r0, [r4] + strh r6, [r0, 0x8] + strh r5, [r0, 0xA] + bl sub_80C3508 + ldr r1, [r4] + strh r0, [r1] + bl sub_80C3514 + ldr r1, [r4] + strh r0, [r1, 0x2] + bl sub_80C4244 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C423C: .4byte gUnknown_83EF524 +_080C4240: .4byte gUnknown_20399E8 + thumb_func_end sub_80C41D8 + + thumb_func_start sub_80C4244 +sub_80C4244: @ 80C4244 + push {r4-r6,lr} + sub sp, 0x40 + ldr r6, _080C42FC @ =gUnknown_20399E8 + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0xC + str r0, [sp, 0x30] + movs r1, 0x80 + add r5, sp, 0x30 + str r1, [r5, 0x4] + ldrh r0, [r2, 0x8] + lsls r0, 16 + orrs r0, r1 + str r0, [r5, 0x4] + ldr r0, _080C4300 @ =gUnknown_83EF27C + str r0, [sp, 0x38] + ldrh r3, [r2, 0xA] + ldr r1, _080C4304 @ =0xffff0000 + add r4, sp, 0x38 + ldr r0, [r4, 0x4] + ands r0, r1 + orrs r0, r3 + str r0, [r4, 0x4] + ldrh r0, [r2, 0x8] + add r1, sp, 0x18 + movs r3, 0 + strh r0, [r1] + ldrh r2, [r2, 0xA] + mov r0, sp + adds r0, 0x1A + strh r2, [r0] + ldr r0, _080C4308 @ =gUnknown_83F1C54 + str r0, [sp, 0x1C] + ldr r0, _080C430C @ =gUnknown_83F1C64 + str r0, [sp, 0x20] + str r3, [sp, 0x24] + ldr r0, _080C4310 @ =gUnknown_8231CFC + str r0, [sp, 0x28] + ldr r0, _080C4314 @ =nullsub_8 + str r0, [sp, 0x2C] + mov r0, sp + movs r2, 0x18 + bl memcpy + ldr r0, _080C4318 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0x1 + bne _080C42AA + ldr r0, _080C431C @ =gUnknown_83EF29C + str r0, [sp, 0x38] +_080C42AA: + adds r0, r5, 0 + bl sub_80086DC + adds r0, r4, 0 + bl sub_8008928 + ldr r0, [r6] + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r1, 19 + movs r3, 0x90 + lsls r3, 14 + adds r1, r3 + asrs r1, 16 + movs r3, 0x2 + ldrsh r2, [r0, r3] + lsls r2, 19 + movs r0, 0x90 + lsls r0, 14 + adds r2, r0 + asrs r2, 16 + mov r0, sp + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r6] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080C4320 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2, 0x4] + movs r0, 0x1 + bl sub_80C4324 + add sp, 0x40 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C42FC: .4byte gUnknown_20399E8 +_080C4300: .4byte gUnknown_83EF27C +_080C4304: .4byte 0xffff0000 +_080C4308: .4byte gUnknown_83F1C54 +_080C430C: .4byte gUnknown_83F1C64 +_080C4310: .4byte gUnknown_8231CFC +_080C4314: .4byte nullsub_8 +_080C4318: .4byte gUnknown_300500C +_080C431C: .4byte gUnknown_83EF29C +_080C4320: .4byte gUnknown_202063C + thumb_func_end sub_80C4244 + + thumb_func_start sub_80C4324 +sub_80C4324: @ 80C4324 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080C4344 @ =gUnknown_20399E8 + ldr r1, [r1] + ldr r2, [r1, 0x4] + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_080C4344: .4byte gUnknown_20399E8 + thumb_func_end sub_80C4324 + + thumb_func_start sub_80C4348 +sub_80C4348: @ 80C4348 + push {r4,lr} + ldr r4, _080C437C @ =gUnknown_20399E8 + ldr r0, [r4] + ldr r0, [r0, 0x4] + cmp r0, 0 + beq _080C4368 + bl sub_8007280 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + bl sub_800874C + ldr r0, [r4] + ldrh r0, [r0, 0xA] + bl sub_8008A30 +_080C4368: + ldr r0, [r4] + cmp r0, 0 + beq _080C4376 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C4376: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C437C: .4byte gUnknown_20399E8 + thumb_func_end sub_80C4348 + + thumb_func_start sub_80C4380 +sub_80C4380: @ 80C4380 + ldr r0, _080C4388 @ =gUnknown_20399E8 + ldr r0, [r0] + ldrh r0, [r0] + bx lr + .align 2, 0 +_080C4388: .4byte gUnknown_20399E8 + thumb_func_end sub_80C4380 + + thumb_func_start sub_80C438C +sub_80C438C: @ 80C438C + ldr r0, _080C4394 @ =gUnknown_20399E8 + ldr r0, [r0] + ldrh r0, [r0, 0x2] + bx lr + .align 2, 0 +_080C4394: .4byte gUnknown_20399E8 + thumb_func_end sub_80C438C + + thumb_func_start sub_80C4398 +sub_80C4398: @ 80C4398 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + adds r6, r1, 0 + mov r8, r2 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r5, _080C43F4 @ =gUnknown_20399EC + ldr r0, _080C43F8 @ =0x0000046c + bl sub_8002BB0 + str r0, [r5] + movs r2, 0x8D + lsls r2, 3 + adds r1, r0, r2 + mov r2, r8 + str r2, [r1] + movs r1, 0x8C + lsls r1, 3 + adds r0, r1 + strb r4, [r0] + ldr r0, _080C43FC @ =gUnknown_83F18D8 + ldr r1, [r5] + bl LZ77UnCompWram + ldr r0, _080C4400 @ =gUnknown_83F1908 + ldr r1, [r5] + adds r1, 0x40 + bl LZ77UnCompWram + ldr r1, _080C4404 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C4408 @ =sub_80C440C + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C43F4: .4byte gUnknown_20399EC +_080C43F8: .4byte 0x0000046c +_080C43FC: .4byte gUnknown_83F18D8 +_080C4400: .4byte gUnknown_83F1908 +_080C4404: .4byte gUnknown_3005090 +_080C4408: .4byte sub_80C440C + thumb_func_end sub_80C4398 + + thumb_func_start sub_80C440C +sub_80C440C: @ 80C440C + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080C442C @ =gUnknown_20399EC + ldr r0, [r0] + ldr r1, _080C4430 @ =0x00000463 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x4 + bhi _080C44BC + lsls r0, 2 + ldr r1, _080C4434 @ =_080C4438 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C442C: .4byte gUnknown_20399EC +_080C4430: .4byte 0x00000463 +_080C4434: .4byte _080C4438 + .align 2, 0 +_080C4438: + .4byte _080C444C + .4byte _080C4452 + .4byte _080C4468 + .4byte _080C446E + .4byte _080C44A0 +_080C444C: + bl sub_80C08E0 + b _080C44A4 +_080C4452: + bl sub_80C47F0 + ldr r0, _080C4460 @ =gUnknown_20399EC + ldr r1, [r0] + ldr r0, _080C4464 @ =0x00000463 + adds r1, r0 + b _080C44AC + .align 2, 0 +_080C4460: .4byte gUnknown_20399EC +_080C4464: .4byte 0x00000463 +_080C4468: + bl sub_80C4750 + b _080C44A4 +_080C446E: + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080C4498 @ =gUnknown_20399EC + ldr r1, [r0] + ldr r0, _080C449C @ =0x00000463 + adds r1, r0 + b _080C44AC + .align 2, 0 +_080C4498: .4byte gUnknown_20399EC +_080C449C: .4byte 0x00000463 +_080C44A0: + bl sub_80C08F4 +_080C44A4: + ldr r0, _080C44B4 @ =gUnknown_20399EC + ldr r1, [r0] + ldr r2, _080C44B8 @ =0x00000463 + adds r1, r2 +_080C44AC: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C44DC + .align 2, 0 +_080C44B4: .4byte gUnknown_20399EC +_080C44B8: .4byte 0x00000463 +_080C44BC: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + adds r0, r4, 0 + bl sub_80C44E4 +_080C44DC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80C440C + + thumb_func_start sub_80C44E4 +sub_80C44E4: @ 80C44E4 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C4504 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080C4508 @ =gUnknown_20399EC + ldr r0, [r0] + movs r2, 0x8D + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + .align 2, 0 +_080C4504: .4byte gUnknown_3005090 +_080C4508: .4byte gUnknown_20399EC + thumb_func_end sub_80C44E4 + + thumb_func_start sub_80C450C +sub_80C450C: @ 80C450C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + mov r10, r0 + mov r9, r1 + adds r4, r2, 0 + adds r5, r3, 0 + ldr r3, [sp, 0x4C] + ldr r6, [sp, 0x50] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + str r5, [sp, 0x28] + lsls r3, 24 + lsrs r3, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r7, _080C45F4 @ =gUnknown_20399EC + ldr r0, [r7] + adds r0, 0x40 + str r0, [sp, 0x18] + movs r2, 0x80 + lsls r2, 1 + add r0, sp, 0x18 + lsls r1, r3, 16 + orrs r1, r2 + str r1, [r0, 0x4] + ldr r1, _080C45F8 @ =gUnknown_83EF2BC + str r1, [sp, 0x20] + ldr r2, _080C45FC @ =0xffff0000 + add r5, sp, 0x20 + mov r8, r5 + ldr r1, [r5, 0x4] + ands r1, r2 + orrs r1, r6 + str r1, [r5, 0x4] + mov r1, sp + movs r2, 0 + strh r3, [r1] + strh r6, [r1, 0x2] + ldr r1, _080C4600 @ =gUnknown_83F1C68 + str r1, [sp, 0x4] + ldr r1, _080C4604 @ =gUnknown_83F1C94 + str r1, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _080C4608 @ =gUnknown_8231CFC + str r1, [sp, 0x10] + ldr r1, _080C460C @ =nullsub_8 + str r1, [sp, 0x14] + bl sub_80086DC + mov r0, r8 + bl sub_8008928 + lsls r4, 19 + movs r0, 0x90 + lsls r0, 14 + adds r4, r0 + asrs r4, 16 + ldr r1, [sp, 0x28] + lsls r5, r1, 19 + adds r5, r0 + asrs r5, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r7] + mov r5, r9 + lsls r5, 4 + mov r9, r5 + movs r1, 0xB6 + lsls r1, 2 + adds r2, r1 + add r2, r9 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080C4610 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r7] + add r0, r9 + movs r2, 0xB5 + lsls r2, 2 + adds r0, r2 + mov r5, r10 + strb r5, [r0] + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C45F4: .4byte gUnknown_20399EC +_080C45F8: .4byte gUnknown_83EF2BC +_080C45FC: .4byte 0xffff0000 +_080C4600: .4byte gUnknown_83F1C68 +_080C4604: .4byte gUnknown_83F1C94 +_080C4608: .4byte gUnknown_8231CFC +_080C460C: .4byte nullsub_8 +_080C4610: .4byte gUnknown_202063C + thumb_func_end sub_80C450C + + thumb_func_start sub_80C4614 +sub_80C4614: @ 80C4614 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + ldr r4, [sp, 0x4C] + ldr r5, [sp, 0x50] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x28] + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + movs r7, 0 + ldr r0, _080C4730 @ =gUnknown_20399EC + ldr r0, [r0] + str r0, [sp, 0x18] + movs r2, 0x40 + add r0, sp, 0x18 + lsls r1, r4, 16 + orrs r1, r2 + str r1, [r0, 0x4] + ldr r1, _080C4734 @ =gUnknown_83EF2BC + str r1, [sp, 0x20] + ldr r2, _080C4738 @ =0xffff0000 + add r6, sp, 0x20 + ldr r1, [r6, 0x4] + ands r1, r2 + orrs r1, r5 + str r1, [r6, 0x4] + mov r1, sp + strh r4, [r1] + strh r5, [r1, 0x2] + ldr r1, _080C473C @ =gUnknown_83F1C70 + str r1, [sp, 0x4] + ldr r1, _080C4740 @ =gUnknown_83F1C98 + str r1, [sp, 0x8] + str r7, [sp, 0xC] + ldr r1, _080C4744 @ =gUnknown_8231CFC + str r1, [sp, 0x10] + ldr r1, _080C4748 @ =nullsub_8 + str r1, [sp, 0x14] + bl sub_80086DC + adds r0, r6, 0 + bl sub_8008928 + mov r0, r9 + lsls r2, r0, 16 + asrs r2, 16 + mov r1, r8 + lsls r3, r1, 16 + asrs r3, 16 + mov r0, r10 + movs r1, 0 + bl sub_80C4164 + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + adds r0, r4, 0 + bl sub_80C35DC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080C46BE + adds r0, r4, 0 + bl sub_80C35DC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _080C46C4 +_080C46BE: + cmp r5, 0x64 + beq _080C46C4 + movs r7, 0x2 +_080C46C4: + mov r3, r8 + lsls r1, r3, 3 + lsls r0, r7, 16 + asrs r0, 16 + adds r0, 0x24 + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + mov r3, r9 + lsls r2, r3, 3 + adds r2, r0 + lsls r2, 16 + asrs r2, 16 + mov r0, sp + movs r3, 0x3 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080C4730 @ =gUnknown_20399EC + ldr r2, [r4] + ldr r1, [sp, 0x28] + lsls r3, r1, 4 + movs r1, 0xA4 + lsls r1, 1 + adds r2, r1 + adds r2, r3 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080C474C @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r4] + adds r0, r3 + movs r3, 0xA2 + lsls r3, 1 + adds r0, r3 + mov r1, r10 + strb r1, [r0] + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C4730: .4byte gUnknown_20399EC +_080C4734: .4byte gUnknown_83EF2BC +_080C4738: .4byte 0xffff0000 +_080C473C: .4byte gUnknown_83F1C70 +_080C4740: .4byte gUnknown_83F1C98 +_080C4744: .4byte gUnknown_8231CFC +_080C4748: .4byte nullsub_8 +_080C474C: .4byte gUnknown_202063C + thumb_func_end sub_80C4614 + + thumb_func_start sub_80C4750 +sub_80C4750: @ 80C4750 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r7, 0 + movs r0, 0x3 + bl sub_80C0E04 + lsls r0, 24 + cmp r0, 0 + beq _080C47E0 + movs r1, 0 +_080C476C: + movs r5, 0 + lsls r0, r1, 24 + adds r1, 0x1 + mov r10, r1 + lsrs r0, 24 + str r0, [sp, 0x8] +_080C4778: + movs r4, 0 + lsls r0, r5, 16 + mov r8, r0 + adds r1, r5, 0x1 + mov r9, r1 +_080C4782: + lsls r3, r4, 16 + asrs r3, 16 + ldr r0, [sp, 0x8] + movs r1, 0 + mov r6, r8 + asrs r2, r6, 16 + bl sub_80C4164 + lsls r0, 24 + lsrs r0, 24 + bl sub_80C35DC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080C47C2 + adds r0, r7, 0 + adds r0, 0xA + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xA + str r0, [sp, 0x4] + ldr r0, [sp, 0x8] + adds r1, r7, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_80C450C + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_080C47C2: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x15 + bls _080C4782 + mov r1, r9 + lsls r0, r1, 16 + lsrs r5, r0, 16 + cmp r5, 0xE + bls _080C4778 + mov r6, r10 + lsls r0, r6, 16 + lsrs r1, r0, 16 + cmp r1, 0x3 + bls _080C476C +_080C47E0: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C4750 + + thumb_func_start sub_80C47F0 +sub_80C47F0: @ 80C47F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r6, 0 + movs r1, 0 +_080C4800: + movs r7, 0 + lsls r0, r1, 24 + adds r1, 0x1 + str r1, [sp, 0x8] + lsrs r0, 24 + mov r8, r0 +_080C480C: + movs r5, 0 + lsls r0, r7, 16 + mov r9, r0 + adds r1, r7, 0x1 + mov r10, r1 +_080C4816: + lsls r3, r5, 16 + asrs r3, 16 + mov r0, r8 + movs r1, 0x1 + mov r4, r9 + asrs r2, r4, 16 + bl sub_80C4164 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + cmp r0, 0xC5 + beq _080C4884 + cmp r0, 0x8D + bne _080C4840 + ldr r0, _080C48B4 @ =0x00000844 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080C4884 +_080C4840: + adds r0, r6, 0 + adds r0, 0x23 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xA + str r0, [sp, 0x4] + mov r0, r8 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r7, 0 + bl sub_80C4614 + adds r0, r4, 0 + bl sub_80C3878 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080C487E + ldr r0, _080C48B8 @ =gUnknown_20399EC + ldr r0, [r0] + lsls r1, r6, 4 + movs r2, 0xA4 + lsls r2, 1 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C +_080C487E: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080C4884: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x15 + bls _080C4816 + mov r4, r10 + lsls r0, r4, 16 + lsrs r7, r0, 16 + cmp r7, 0xE + bls _080C480C + ldr r1, [sp, 0x8] + lsls r0, r1, 16 + lsrs r1, r0, 16 + cmp r1, 0x3 + bls _080C4800 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C48B4: .4byte 0x00000844 +_080C48B8: .4byte gUnknown_20399EC + thumb_func_end sub_80C47F0 + + thumb_func_start sub_80C48BC +sub_80C48BC: @ 80C48BC + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + cmp r1, 0x19 + bne _080C4920 + movs r3, 0 + ldr r0, _080C491C @ =gUnknown_20399EC + mov r12, r0 + movs r1, 0x1 + adds r0, r5, 0 + ands r0, r1 + lsls r5, r0, 2 + movs r6, 0x5 + negs r6, r6 +_080C48E0: + mov r7, r12 + ldr r1, [r7] + lsls r2, r3, 4 + adds r0, r1, r2 + movs r7, 0xB5 + lsls r7, 2 + adds r0, r7 + ldrb r0, [r0] + cmp r0, r4 + beq _080C48F8 + cmp r4, 0xFF + bne _080C490E +_080C48F8: + movs r7, 0xB6 + lsls r7, 2 + adds r0, r1, r7 + adds r0, r2 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1] +_080C490E: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x18 + bls _080C48E0 + b _080C4954 + .align 2, 0 +_080C491C: .4byte gUnknown_20399EC +_080C4920: + ldr r0, _080C495C @ =gUnknown_20399EC + ldr r2, [r0] + lsls r1, 4 + adds r0, r2, r1 + movs r3, 0xB5 + lsls r3, 2 + adds r0, r3 + ldrb r0, [r0] + cmp r0, r4 + bne _080C4954 + movs r7, 0xB6 + lsls r7, 2 + adds r0, r2, r7 + adds r0, r1 + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_080C4954: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C495C: .4byte gUnknown_20399EC + thumb_func_end sub_80C48BC + + thumb_func_start sub_80C4960 +sub_80C4960: @ 80C4960 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + cmp r1, 0x19 + bne _080C49C4 + movs r3, 0 + ldr r0, _080C49C0 @ =gUnknown_20399EC + mov r12, r0 + movs r1, 0x1 + adds r0, r5, 0 + ands r0, r1 + lsls r5, r0, 2 + movs r6, 0x5 + negs r6, r6 +_080C4984: + mov r7, r12 + ldr r1, [r7] + lsls r2, r3, 4 + adds r0, r1, r2 + movs r7, 0xA2 + lsls r7, 1 + adds r0, r7 + ldrb r0, [r0] + cmp r0, r4 + beq _080C499C + cmp r4, 0xFF + bne _080C49B2 +_080C499C: + movs r7, 0xA4 + lsls r7, 1 + adds r0, r1, r7 + adds r0, r2 + ldr r1, [r0] + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1] +_080C49B2: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x18 + bls _080C4984 + b _080C49F8 + .align 2, 0 +_080C49C0: .4byte gUnknown_20399EC +_080C49C4: + ldr r0, _080C4A00 @ =gUnknown_20399EC + ldr r2, [r0] + lsls r1, 4 + adds r0, r2, r1 + movs r3, 0xA2 + lsls r3, 1 + adds r0, r3 + ldrb r0, [r0] + cmp r0, r4 + beq _080C49F8 + movs r7, 0xA4 + lsls r7, 1 + adds r0, r2, r7 + adds r0, r1 + ldr r2, [r0] + adds r2, 0x3E + movs r0, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_080C49F8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C4A00: .4byte gUnknown_20399EC + thumb_func_end sub_80C4960 + + thumb_func_start sub_80C4A04 +sub_80C4A04: @ 80C4A04 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _080C4AA4 @ =gUnknown_20399EC +_080C4A0A: + ldr r0, [r6] + lsls r4, r5, 4 + movs r1, 0xB6 + lsls r1, 2 + adds r0, r1 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _080C4A3E + bl sub_8007280 + ldr r0, [r6] + adds r0, r4 + movs r1, 0xB7 + lsls r1, 2 + adds r0, r1 + ldrh r0, [r0] + bl sub_800874C + ldr r0, [r6] + adds r0, r4 + ldr r1, _080C4AA8 @ =0x000002de + adds r0, r1 + ldrh r0, [r0] + bl sub_8008A30 +_080C4A3E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x18 + bls _080C4A0A + movs r5, 0 + ldr r6, _080C4AA4 @ =gUnknown_20399EC +_080C4A4C: + ldr r0, [r6] + lsls r4, r5, 4 + movs r1, 0xA4 + lsls r1, 1 + adds r0, r1 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _080C4A82 + bl sub_8007280 + ldr r0, [r6] + adds r0, r4 + movs r1, 0xA6 + lsls r1, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_800874C + ldr r0, [r6] + adds r0, r4 + movs r1, 0xA7 + lsls r1, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_8008A30 +_080C4A82: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x18 + bls _080C4A4C + ldr r4, _080C4AA4 @ =gUnknown_20399EC + ldr r0, [r4] + cmp r0, 0 + beq _080C4A9C + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C4A9C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C4AA4: .4byte gUnknown_20399EC +_080C4AA8: .4byte 0x000002de + thumb_func_end sub_80C4A04 + + thumb_func_start sub_80C4AAC +sub_80C4AAC: @ 80C4AAC + push {r4,lr} + lsls r0, 24 + ldr r1, _080C4B24 @ =gUnknown_20399F0 + lsrs r0, 22 + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, 0 + bne _080C4B28 + movs r0, 0x14 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0x50 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1] + movs r0, 0x54 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0x2] + movs r0, 0x52 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0x4] + movs r0, 0x48 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0x6] + movs r0, 0x4A + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0x8] + movs r0, 0x40 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0xA] + movs r0, 0x42 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0xC] + movs r0, 0x44 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0xE] + movs r0, 0x46 + bl sub_8000AC4 + ldr r1, [r4] + strh r0, [r1, 0x10] + movs r0, 0x1 + b _080C4B2A + .align 2, 0 +_080C4B24: .4byte gUnknown_20399F0 +_080C4B28: + movs r0, 0 +_080C4B2A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C4AAC + + thumb_func_start sub_80C4B30 +sub_80C4B30: @ 80C4B30 + push {r4,lr} + lsls r0, 24 + ldr r1, _080C4B44 @ =gUnknown_20399F0 + lsrs r0, 22 + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, 0 + bne _080C4B48 + movs r0, 0 + b _080C4BB0 + .align 2, 0 +_080C4B44: .4byte gUnknown_20399F0 +_080C4B48: + ldrh r1, [r0] + movs r0, 0x50 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x2] + movs r0, 0x54 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x4] + movs r0, 0x52 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x6] + movs r0, 0x48 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + movs r0, 0x4A + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0xA] + movs r0, 0x40 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0xC] + movs r0, 0x42 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0xE] + movs r0, 0x44 + bl sub_8000A38 + ldr r0, [r4] + ldrh r1, [r0, 0x10] + movs r0, 0x46 + bl sub_8000A38 + ldr r0, [r4] + cmp r0, 0 + beq _080C4BAE + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C4BAE: + movs r0, 0x1 +_080C4BB0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C4B30 + + thumb_func_start sub_80C4BB8 +sub_80C4BB8: @ 80C4BB8 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _080C4BE0 @ =gUnknown_20399F0 +_080C4BBE: + lsls r0, r5, 2 + adds r4, r0, r6 + ldr r0, [r4] + cmp r0, 0 + beq _080C4BD0 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C4BD0: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _080C4BBE + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C4BE0: .4byte gUnknown_20399F0 + thumb_func_end sub_80C4BB8 + + thumb_func_start sub_80C4BE4 +sub_80C4BE4: @ 80C4BE4 + push {lr} + sub sp, 0x8 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + movs r1, 0 + movs r2, 0 + bl sub_80C4C2C + movs r0, 0 + bl sub_80C4C48 + movs r0, 0 + mov r1, sp + bl sub_80C4CF0 + movs r0, 0x1 + mov r1, sp + bl sub_80C4CF0 + movs r0, 0 + movs r1, 0 + bl sub_80C4C74 + movs r0, 0 + movs r1, 0x1 + bl sub_80C4C9C + movs r0, 0x1 + movs r1, 0x1 + bl sub_80C4C9C + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_80C4BE4 + + thumb_func_start sub_80C4C2C +sub_80C4C2C: @ 80C4C2C + push {lr} + adds r3, r0, 0 + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + orrs r3, r1 + orrs r3, r2 + lsrs r3, 16 + movs r0, 0x50 + adds r1, r3, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80C4C2C + + thumb_func_start sub_80C4C48 +sub_80C4C48: @ 80C4C48 + push {lr} + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x54 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80C4C48 + + thumb_func_start sub_80C4C5C +sub_80C4C5C: @ 80C4C5C + push {lr} + adds r2, r0, 0 + lsls r1, 16 + lsls r2, 24 + orrs r2, r1 + lsrs r2, 16 + movs r0, 0x52 + adds r1, r2, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80C4C5C + + thumb_func_start sub_80C4C74 +sub_80C4C74: @ 80C4C74 + push {lr} + lsls r0, 16 + lsls r1, 24 + orrs r1, r0 + lsrs r1, 16 + movs r0, 0x48 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80C4C74 + + thumb_func_start sub_80C4C88 +sub_80C4C88: @ 80C4C88 + push {lr} + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4A + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_80C4C88 + + thumb_func_start sub_80C4C9C +sub_80C4C9C: @ 80C4C9C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r1, _080C4CBC @ =gUnknown_83F1CA0 + mov r0, sp + movs r2, 0x4 + bl memcpy + cmp r4, 0 + beq _080C4CC0 + cmp r4, 0x1 + beq _080C4CDC + b _080C4CE8 + .align 2, 0 +_080C4CBC: .4byte gUnknown_83F1CA0 +_080C4CC0: + movs r0, 0 + bl sub_8000AC4 + adds r1, r0, 0 + lsls r0, r5, 1 + add r0, sp + ldrh r0, [r0] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + bl sub_8000A38 + b _080C4CE8 +_080C4CDC: + lsls r0, r5, 1 + add r0, sp + ldrh r1, [r0] + movs r0, 0 + bl sub_8000B14 +_080C4CE8: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C4C9C + + thumb_func_start sub_80C4CF0 +sub_80C4CF0: @ 80C4CF0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + lsls r4, 24 + ldr r5, _080C4D2C @ =gUnknown_83F1CA4 + lsrs r4, 23 + adds r0, r4, r5 + ldrb r0, [r0] + ldrh r1, [r6, 0x2] + lsls r1, 8 + ldrh r2, [r6, 0x6] + orrs r1, r2 + lsls r1, 16 + lsrs r1, 16 + bl sub_8000A38 + adds r5, 0x1 + adds r4, r5 + ldrb r0, [r4] + ldrh r1, [r6] + lsls r1, 8 + ldrh r2, [r6, 0x4] + orrs r1, r2 + lsls r1, 16 + lsrs r1, 16 + bl sub_8000A38 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C4D2C: .4byte gUnknown_83F1CA4 + thumb_func_end sub_80C4CF0 + + thumb_func_start sub_80C4D30 +sub_80C4D30: @ 80C4D30 + push {lr} + bl sub_80C4BB8 + bl sub_80C4BE4 + pop {r0} + bx r0 + thumb_func_end sub_80C4D30 + + thumb_func_start sub_80C4D40 +sub_80C4D40: @ 80C4D40 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080C4D68 @ =gUnknown_20399D4 + ldr r0, [r0] + cmp r0, 0 + bne _080C4D70 + cmp r1, 0x5E + bne _080C4D70 + ldr r0, _080C4D6C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, 0xA + bne _080C4D70 + ldrb r0, [r1, 0x5] + cmp r0, 0x6 + bhi _080C4D70 + movs r0, 0x1 + b _080C4D72 + .align 2, 0 +_080C4D68: .4byte gUnknown_20399D4 +_080C4D6C: .4byte gUnknown_3005008 +_080C4D70: + movs r0, 0 +_080C4D72: + pop {r1} + bx r1 + thumb_func_end sub_80C4D40 + + thumb_func_start sub_80C4D78 +sub_80C4D78: @ 80C4D78 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + lsrs r0, r1, 16 + ldr r2, _080C4D9C @ =0xffa80000 + adds r1, r2 + lsrs r5, r1, 16 + cmp r5, 0x6C + bhi _080C4DBC + bl sub_80C4D40 + cmp r0, 0x1 + bne _080C4DA4 + ldr r1, _080C4DA0 @ =gUnknown_83EF22E + b _080C4DAC + .align 2, 0 +_080C4D9C: .4byte 0xffa80000 +_080C4DA0: .4byte gUnknown_83EF22E +_080C4DA4: + ldr r0, _080C4DB8 @ =gUnknown_83F1CAC + lsls r1, r5, 2 + adds r1, r0 + ldr r1, [r1] +_080C4DAC: + adds r0, r6, 0 + bl sub_8008D84 + adds r1, r0, 0 + b _080C4DCE + .align 2, 0 +_080C4DB8: .4byte gUnknown_83F1CAC +_080C4DBC: + cmp r4, 0 + bne _080C4DC2 + movs r4, 0x12 +_080C4DC2: + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_8009204 + b _080C4DF2 +_080C4DCE: + cmp r4, 0 + beq _080C4DF0 + subs r0, r1, r6 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bcs _080C4DEC + movs r2, 0 +_080C4DDE: + strb r2, [r1] + adds r1, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bcc _080C4DDE +_080C4DEC: + movs r0, 0xFF + strb r0, [r1] +_080C4DF0: + adds r0, r1, 0 +_080C4DF2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80C4D78 + + thumb_func_start sub_80C4DF8 +sub_80C4DF8: @ 80C4DF8 + push {lr} + lsls r1, 16 + lsrs r1, 16 + movs r2, 0 + bl sub_80C4D78 + pop {r1} + bx r1 + thumb_func_end sub_80C4DF8 + + thumb_func_start sub_80C4E08 +sub_80C4E08: @ 80C4E08 + push {lr} + lsls r1, 16 + lsrs r1, 16 + bl sub_80C4DF8 + pop {r1} + bx r1 + thumb_func_end sub_80C4E08 + + thumb_func_start sub_80C4E18 +sub_80C4E18: @ 80C4E18 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r0, _080C4E38 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C4E3C @ =0x00004799 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080C4E40 + movs r0, 0x3 + movs r1, 0 + bl sub_800445C + b _080C4E48 + .align 2, 0 +_080C4E38: .4byte gUnknown_20399D4 +_080C4E3C: .4byte 0x00004799 +_080C4E40: + movs r0, 0x3 + movs r1, 0xFF + bl sub_800445C +_080C4E48: + ldr r0, _080C4E70 @ =gUnknown_83F1CA8 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_812E51C + movs r0, 0x3 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C4E70: .4byte gUnknown_83F1CA8 + thumb_func_end sub_80C4E18 + + thumb_func_start sub_80C4E74 +sub_80C4E74: @ 80C4E74 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r0, _080C4E94 @ =gUnknown_20399D4 + ldr r0, [r0] + ldr r1, _080C4E98 @ =0x00004799 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080C4E9C + movs r0, 0x4 + movs r1, 0 + bl sub_800445C + b _080C4EA4 + .align 2, 0 +_080C4E94: .4byte gUnknown_20399D4 +_080C4E98: .4byte 0x00004799 +_080C4E9C: + movs r0, 0x4 + movs r1, 0xFF + bl sub_800445C +_080C4EA4: + ldr r0, _080C4ECC @ =gUnknown_83F1CA8 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_812E51C + movs r0, 0x4 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C4ECC: .4byte gUnknown_83F1CA8 + thumb_func_end sub_80C4E74 + + thumb_func_start sub_80C4ED0 +sub_80C4ED0: @ 80C4ED0 + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _080C4EE6 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + b _080C4EF2 +_080C4EE6: + movs r0, 0x3 + bl sub_80040B8 + movs r0, 0x4 + bl sub_80040B8 +_080C4EF2: + pop {r0} + bx r0 + thumb_func_end sub_80C4ED0 + + thumb_func_start sub_80C4EF8 +sub_80C4EF8: @ 80C4EF8 + push {lr} + bl sub_80C51E8 + movs r0, 0x2 + bl sub_80BFEDC + pop {r0} + bx r0 + thumb_func_end sub_80C4EF8 + + thumb_func_start sub_80C4F08 +sub_80C4F08: @ 80C4F08 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080C4F28 @ =gUnknown_20399FC + ldr r2, [r0] + ldrb r0, [r2] + cmp r0, 0x6 + bls _080C4F1C + b _080C51B8 +_080C4F1C: + lsls r0, 2 + ldr r1, _080C4F2C @ =_080C4F30 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C4F28: .4byte gUnknown_20399FC +_080C4F2C: .4byte _080C4F30 + .align 2, 0 +_080C4F30: + .4byte _080C4F4C + .4byte _080C4F92 + .4byte _080C4FEC + .4byte _080C5000 + .4byte _080C5028 + .4byte _080C5180 + .4byte _080C5196 +_080C4F4C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + bl sub_80C0E20 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_80C07E4 + adds r2, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80C4398 + movs r0, 0 + movs r1, 0 + bl sub_80C3008 + movs r0, 0x1 + movs r1, 0x1 + bl sub_80C41D8 + movs r0, 0 + bl sub_80C3154 + movs r0, 0 + bl sub_80C4324 + b _080C51A6 +_080C4F92: + movs r0, 0x2 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C4FAE + bl sub_80C07E4 + adds r1, r0, 0 + adds r0, r5, 0 + bl sub_80C2208 + b _080C51A6 +_080C4FAE: + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + ldr r0, _080C4FE8 @ =gUnknown_8418EB5 + bl sub_80C4E18 + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0 + bl sub_80C48BC + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x19 + movs r2, 0 + bl sub_80C4960 + b _080C51A6 + .align 2, 0 +_080C4FE8: .4byte gUnknown_8418EB5 +_080C4FEC: + ldr r0, _080C4FFC @ =gUnknown_8418EB0 + bl sub_80C4E74 + movs r0, 0 + bl sub_80C4ED0 + b _080C51A6 + .align 2, 0 +_080C4FFC: .4byte gUnknown_8418EB0 +_080C5000: + ldr r0, _080C5024 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080C500E + b _080C51DC +_080C500E: + bl sub_80C0B18 + movs r0, 0 + bl sub_8003FA0 + bl sub_80C0BB0 + movs r0, 0x1 + bl sub_8003FA0 + b _080C51A6 + .align 2, 0 +_080C5024: .4byte gUnknown_2037AB8 +_080C5028: + bl sub_80C3400 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x5 + bls _080C5038 + b _080C51DC +_080C5038: + lsls r0, 2 + ldr r1, _080C5044 @ =_080C5048 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5044: .4byte _080C5048 + .align 2, 0 +_080C5048: + .4byte _080C51DC + .4byte _080C51DC + .4byte _080C5070 + .4byte _080C50F8 + .4byte _080C5168 + .4byte _080C5060 +_080C5060: + ldr r0, _080C506C @ =gUnknown_20399FC + ldr r1, [r0] + movs r0, 0x6 + strb r0, [r1] + b _080C51DC + .align 2, 0 +_080C506C: .4byte gUnknown_20399FC +_080C5070: + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080C5086 + movs r0, 0x66 + bl sub_80722CC + b _080C508A +_080C5086: + bl sub_80C0450 +_080C508A: + bl sub_80C3178 + bl sub_80C0B18 + bl sub_80C0BB0 + bl sub_80C0B9C + bl sub_80C3508 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x15 + bne _080C50C4 + bl sub_80C3514 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xD + bne _080C50C4 + movs r0, 0xE1 + bl sub_80722CC + ldr r0, _080C50C0 @ =gUnknown_8418E95 + bl sub_80C4E74 + b _080C51DC + .align 2, 0 +_080C50C0: .4byte gUnknown_8418E95 +_080C50C4: + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080C50E0 + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080C50EC +_080C50E0: + ldr r0, _080C50E8 @ =gUnknown_8418EB0 + bl sub_80C4E74 + b _080C51DC + .align 2, 0 +_080C50E8: .4byte gUnknown_8418EB0 +_080C50EC: + ldr r0, _080C50F4 @ =gUnknown_8418E8B + bl sub_80C4E74 + b _080C51DC + .align 2, 0 +_080C50F4: .4byte gUnknown_8418E8B +_080C50F8: + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080C5114 + movs r0, 0 + bl sub_80C3AC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080C51DC +_080C5114: + movs r0, 0x3 + bl sub_80C0E04 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _080C51DC + ldr r0, _080C514C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + bl sub_8056158 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _080C5140 + cmp r0, 0x8 + bne _080C5154 +_080C5140: + ldr r2, _080C5150 @ =gUnknown_20399FC + ldr r1, [r2] + movs r0, 0 + strb r0, [r1, 0x2] + ldr r1, [r2] + b _080C51AA + .align 2, 0 +_080C514C: .4byte gUnknown_3005008 +_080C5150: .4byte gUnknown_20399FC +_080C5154: + movs r0, 0x1 + bl sub_80722CC + ldr r1, _080C5164 @ =gUnknown_20399FC + ldr r0, [r1] + strb r4, [r0, 0x2] + ldr r1, [r1] + b _080C51AA + .align 2, 0 +_080C5164: .4byte gUnknown_20399FC +_080C5168: + bl sub_80C0E20 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C517C @ =sub_80C07F8 + adds r1, r5, 0 + bl sub_80C0E70 + b _080C51DC + .align 2, 0 +_080C517C: .4byte sub_80C07F8 +_080C5180: + movs r0, 0x2 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C51A6 + adds r0, r5, 0 + bl sub_80C2C1C + b _080C51A6 +_080C5196: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_080C51A6: + ldr r0, _080C51B4 @ =gUnknown_20399FC + ldr r1, [r0] +_080C51AA: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _080C51DC + .align 2, 0 +_080C51B4: .4byte gUnknown_20399FC +_080C51B8: + ldr r0, _080C51E4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080C51DC + ldrb r0, [r2, 0x2] + cmp r0, 0x1 + bne _080C51D6 + bl sub_80C3520 + lsls r0, 16 + lsrs r0, 16 + bl sub_80C527C +_080C51D6: + adds r0, r5, 0 + bl sub_80C5208 +_080C51DC: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C51E4: .4byte gUnknown_2037AB8 + thumb_func_end sub_80C4F08 + + thumb_func_start sub_80C51E8 +sub_80C51E8: @ 80C51E8 + push {r4,lr} + ldr r4, _080C5204 @ =gUnknown_20399FC + movs r0, 0x4 + bl sub_8002BB0 + str r0, [r4] + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + strb r1, [r0, 0x1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C5204: .4byte gUnknown_20399FC + thumb_func_end sub_80C51E8 + + thumb_func_start sub_80C5208 +sub_80C5208: @ 80C5208 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x2 + bl sub_80C0E04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C5220 + bl sub_80C25BC +_080C5220: + bl sub_80C4A04 + bl sub_80C3188 + bl sub_80C4348 + bl sub_80C4D30 + bl sub_80C0898 + adds r0, r4, 0 + bl sub_8077508 + bl sub_8003ECC + ldr r0, _080C5250 @ =gUnknown_20399FC + ldr r0, [r0] + ldrb r0, [r0, 0x2] + cmp r0, 0x1 + bne _080C5258 + ldr r0, _080C5254 @ =sub_80567DC + bl sub_8000544 + b _080C525E + .align 2, 0 +_080C5250: .4byte gUnknown_20399FC +_080C5254: .4byte sub_80567DC +_080C5258: + ldr r0, _080C5274 @ =sub_8124AB0 + bl sub_8000544 +_080C525E: + ldr r4, _080C5278 @ =gUnknown_20399FC + ldr r0, [r4] + cmp r0, 0 + beq _080C526E + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_080C526E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C5274: .4byte sub_8124AB0 +_080C5278: .4byte gUnknown_20399FC + thumb_func_end sub_80C5208 + + thumb_func_start sub_80C527C +sub_80C527C: @ 80C527C + push {r4,r5,lr} + lsls r0, 16 + ldr r1, _080C52A4 @ =0xffa80000 + adds r0, r1 + lsrs r0, 16 + ldr r5, _080C52A8 @ =gUnknown_83F2EE0 + lsls r1, r0, 1 + adds r4, r1, r0 + adds r0, r5, 0x2 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _080C52AC + bl sub_805546C + adds r0, r4, r5 + bl sub_8124C1C + b _080C52C6 + .align 2, 0 +_080C52A4: .4byte 0xffa80000 +_080C52A8: .4byte gUnknown_83F2EE0 +_080C52AC: + adds r0, r4, r5 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r5, 0x1 + adds r1, r4, r1 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + bl sub_80553C8 +_080C52C6: + bl sub_80842C8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80C527C + + thumb_func_start sub_80C52D0 +sub_80C52D0: @ 80C52D0 + push {lr} + ldr r2, _080C5318 @ =gUnknown_3005334 + ldr r1, [r0, 0x4] + str r1, [r2] + ldr r2, _080C531C @ =gUnknown_3005348 + ldrb r1, [r0, 0x1F] + strb r1, [r2] + ldr r2, _080C5320 @ =gUnknown_3005330 + ldrb r1, [r0, 0x19] + strb r1, [r2] + ldr r2, _080C5324 @ =gUnknown_3005344 + ldrb r1, [r0, 0x1A] + strb r1, [r2] + ldr r2, _080C5328 @ =gUnknown_3005340 + ldrb r1, [r0, 0x1B] + strb r1, [r2] + ldr r2, _080C532C @ =gUnknown_3005338 + ldrb r1, [r0, 0x1C] + strb r1, [r2] + ldr r2, _080C5330 @ =gUnknown_300534C + ldrb r1, [r0, 0x1D] + strb r1, [r2] + ldr r2, _080C5334 @ =gUnknown_300533C + ldrb r1, [r0, 0x1E] + strb r1, [r2] + ldrb r0, [r0] + subs r0, 0x2 + cmp r0, 0x22 + bls _080C530C + b _080C5458 +_080C530C: + lsls r0, 2 + ldr r1, _080C5338 @ =_080C533C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5318: .4byte gUnknown_3005334 +_080C531C: .4byte gUnknown_3005348 +_080C5320: .4byte gUnknown_3005330 +_080C5324: .4byte gUnknown_3005344 +_080C5328: .4byte gUnknown_3005340 +_080C532C: .4byte gUnknown_3005338 +_080C5330: .4byte gUnknown_300534C +_080C5334: .4byte gUnknown_300533C +_080C5338: .4byte _080C533C + .align 2, 0 +_080C533C: + .4byte _080C53C8 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5428 + .4byte _080C5458 + .4byte _080C53CE + .4byte _080C53D4 + .4byte _080C53E8 + .4byte _080C53FA + .4byte _080C5458 + .4byte _080C5410 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5416 + .4byte _080C53F4 + .4byte _080C541C + .4byte _080C5422 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5434 +_080C53C8: + bl sub_80C55D4 + b _080C5458 +_080C53CE: + bl sub_80C568C + b _080C5458 +_080C53D4: + bl sub_80C5884 + ldr r0, _080C53E4 @ =gUnknown_3005348 + ldrb r0, [r0] + bl sub_80C5748 + b _080C5458 + .align 2, 0 +_080C53E4: .4byte gUnknown_3005348 +_080C53E8: + bl sub_80C5884 + bl sub_80C59D4 + bl sub_80C57EC +_080C53F4: + bl sub_80C59D4 + b _080C5458 +_080C53FA: + bl sub_80C5884 + bl sub_80C5B9C + bl sub_80C5B9C + bl sub_80C5C44 + bl sub_80C57EC + b _080C5458 +_080C5410: + bl sub_80C5A6C + b _080C5458 +_080C5416: + bl sub_80C5884 + b _080C5458 +_080C541C: + bl sub_80C5B9C + b _080C5458 +_080C5422: + bl sub_80C5C44 + b _080C5458 +_080C5428: + bl sub_80C55F4 + movs r0, 0x3 + bl sub_80C545C + b _080C5458 +_080C5434: + bl sub_80C5884 + bl sub_80C5B9C + bl sub_80C5C44 + bl sub_80C57EC + bl sub_80C568C + bl sub_80C568C + movs r0, 0x2 + bl sub_80C545C + movs r0, 0x4 + bl sub_80C5514 +_080C5458: + pop {r0} + bx r0 + thumb_func_end sub_80C52D0 + + thumb_func_start sub_80C545C +sub_80C545C: @ 80C545C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + movs r2, 0 + ldr r0, _080C54FC @ =gUnknown_3005338 + mov r8, r0 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C54EE + ldr r1, _080C5500 @ =gUnknown_3005340 + mov r12, r1 + ldr r3, _080C5504 @ =gUnknown_300534C + mov r10, r3 + ldr r0, _080C5508 @ =gUnknown_3005330 + mov r9, r0 +_080C5482: + ldr r1, _080C550C @ =gUnknown_3005344 + ldrb r0, [r1] + adds r0, r2 + mov r3, r10 + ldrb r1, [r3] + muls r0, r1 + lsls r0, 1 + ldr r3, _080C5510 @ =gUnknown_3005334 + ldr r1, [r3] + adds r1, r0 + mov r3, r9 + ldrb r0, [r3] + lsls r0, 1 + adds r3, r1, r0 + movs r4, 0 + adds r5, r2, 0x1 + mov r0, r12 + ldrb r0, [r0] + cmp r4, r0 + bcs _080C54E2 + movs r6, 0x80 + lsls r6, 8 +_080C54AE: + ldrh r1, [r3] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _080C54D2 + movs r0, 0x1F + ands r0, r1 + adds r0, r7 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _080C54C8 + movs r2, 0x1F +_080C54C8: + lsls r0, r2, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r3] +_080C54D2: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r3, 0x2 + mov r1, r12 + ldrb r1, [r1] + cmp r4, r1 + bcc _080C54AE +_080C54E2: + lsls r0, r5, 24 + lsrs r2, r0, 24 + mov r3, r8 + ldrb r3, [r3] + cmp r2, r3 + bcc _080C5482 +_080C54EE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C54FC: .4byte gUnknown_3005338 +_080C5500: .4byte gUnknown_3005340 +_080C5504: .4byte gUnknown_300534C +_080C5508: .4byte gUnknown_3005330 +_080C550C: .4byte gUnknown_3005344 +_080C5510: .4byte gUnknown_3005334 + thumb_func_end sub_80C545C + + thumb_func_start sub_80C5514 +sub_80C5514: @ 80C5514 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r2, 0 + ldr r0, _080C55BC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C55AC + ldr r1, _080C55C0 @ =gUnknown_3005340 + mov r10, r1 +_080C5532: + ldr r3, _080C55C4 @ =gUnknown_3005344 + ldrb r0, [r3] + adds r0, r2 + ldr r3, _080C55C8 @ =gUnknown_300534C + ldrb r1, [r3] + muls r0, r1 + lsls r0, 1 + ldr r3, _080C55CC @ =gUnknown_3005334 + ldr r1, [r3] + adds r1, r0 + ldr r3, _080C55D0 @ =gUnknown_3005330 + ldrb r0, [r3] + lsls r0, 1 + adds r3, r1, r0 + movs r5, 0 + adds r7, r2, 0x1 + mov r0, r10 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C55A0 + movs r1, 0x80 + lsls r1, 8 + mov r9, r1 + movs r0, 0x1F + mov r12, r0 + mov r1, r8 + subs r6, r0, r1 +_080C5568: + ldrh r1, [r3] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080C5590 + movs r4, 0x1F + mov r2, r12 + ands r2, r1 + cmp r2, r6 + ble _080C5586 + mov r1, r8 + lsrs r0, r1, 1 + subs r0, r4, r0 + lsls r0, 24 + lsrs r2, r0, 24 +_080C5586: + lsls r0, r2, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r3] +_080C5590: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r3, 0x2 + mov r0, r10 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C5568 +_080C55A0: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r1, _080C55BC @ =gUnknown_3005338 + ldrb r1, [r1] + cmp r2, r1 + bcc _080C5532 +_080C55AC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C55BC: .4byte gUnknown_3005338 +_080C55C0: .4byte gUnknown_3005340 +_080C55C4: .4byte gUnknown_3005344 +_080C55C8: .4byte gUnknown_300534C +_080C55CC: .4byte gUnknown_3005334 +_080C55D0: .4byte gUnknown_3005330 + thumb_func_end sub_80C5514 + + thumb_func_start sub_80C55D4 +sub_80C55D4: @ 80C55D4 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _080C55F0 @ =0x00000c7f +_080C55DA: + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_80C5CF8 + adds r4, 0x1 + cmp r4, r5 + bls _080C55DA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C55F0: .4byte 0x00000c7f + thumb_func_end sub_80C55D4 + + thumb_func_start sub_80C55F4 +sub_80C55F4: @ 80C55F4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C5674 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5666 + ldr r0, _080C5678 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C567C @ =gUnknown_3005340 +_080C560C: + ldr r0, _080C5680 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C5684 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5688 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C565A + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5638: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C564C + adds r0, r4, 0 + str r3, [sp] + bl sub_80C5ECC + strh r0, [r4] + ldr r3, [sp] +_080C564C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5638 +_080C565A: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5674 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C560C +_080C5666: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5674: .4byte gUnknown_3005338 +_080C5678: .4byte gUnknown_3005334 +_080C567C: .4byte gUnknown_3005340 +_080C5680: .4byte gUnknown_3005344 +_080C5684: .4byte gUnknown_300534C +_080C5688: .4byte gUnknown_3005330 + thumb_func_end sub_80C55F4 + + thumb_func_start sub_80C568C +sub_80C568C: @ 80C568C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r2, 0 + ldr r0, _080C5730 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5722 + ldr r0, _080C5734 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C5738 @ =gUnknown_300534C +_080C56A4: + ldr r0, _080C573C @ =gUnknown_3005344 + ldrb r1, [r0] + ldrb r0, [r3] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5740 @ =gUnknown_3005330 + ldrb r0, [r0] + adds r0, r2 + lsls r0, 1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, 0x1 + ldrb r0, [r3] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5744 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + adds r7, r2, 0x1 + cmp r5, r0 + bge _080C5716 + ldr r6, _080C5738 @ =gUnknown_300534C +_080C56DA: + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080C5700 + ldrb r2, [r6] + lsls r2, 1 + adds r2, r4, r2 + mov r0, sp + adds r1, r4, 0 + str r3, [sp, 0x4] + bl sub_80C61BC + strh r0, [r4] + mov r1, sp + strh r0, [r1] + ldr r3, [sp, 0x4] +_080C5700: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r6] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5744 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + cmp r5, r0 + blt _080C56DA +_080C5716: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C5730 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C56A4 +_080C5722: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5730: .4byte gUnknown_3005340 +_080C5734: .4byte gUnknown_3005334 +_080C5738: .4byte gUnknown_300534C +_080C573C: .4byte gUnknown_3005344 +_080C5740: .4byte gUnknown_3005330 +_080C5744: .4byte gUnknown_3005338 + thumb_func_end sub_80C568C + + thumb_func_start sub_80C5748 +sub_80C5748: @ 80C5748 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r2, 0 + ldr r0, _080C57D4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C57C4 + ldr r0, _080C57D8 @ =gUnknown_3005334 + mov r9, r0 + ldr r3, _080C57DC @ =gUnknown_3005340 +_080C5768: + ldr r0, _080C57E0 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C57E4 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r9 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C57E8 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C57B8 + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5794: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C57AA + adds r0, r4, 0 + mov r1, r8 + str r3, [sp] + bl sub_80C5F00 + strh r0, [r4] + ldr r3, [sp] +_080C57AA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5794 +_080C57B8: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C57D4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5768 +_080C57C4: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C57D4: .4byte gUnknown_3005338 +_080C57D8: .4byte gUnknown_3005334 +_080C57DC: .4byte gUnknown_3005340 +_080C57E0: .4byte gUnknown_3005344 +_080C57E4: .4byte gUnknown_300534C +_080C57E8: .4byte gUnknown_3005330 + thumb_func_end sub_80C5748 + + thumb_func_start sub_80C57EC +sub_80C57EC: @ 80C57EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C586C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C585E + ldr r0, _080C5870 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C5874 @ =gUnknown_3005340 +_080C5804: + ldr r0, _080C5878 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C587C @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5880 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C5852 + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5830: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C5844 + adds r0, r4, 0 + str r3, [sp] + bl sub_80C600C + strh r0, [r4] + ldr r3, [sp] +_080C5844: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5830 +_080C5852: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C586C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5804 +_080C585E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C586C: .4byte gUnknown_3005338 +_080C5870: .4byte gUnknown_3005334 +_080C5874: .4byte gUnknown_3005340 +_080C5878: .4byte gUnknown_3005344 +_080C587C: .4byte gUnknown_300534C +_080C5880: .4byte gUnknown_3005330 + thumb_func_end sub_80C57EC + + thumb_func_start sub_80C5884 +sub_80C5884: @ 80C5884 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r7, 0 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r7, r0 + bcs _080C5910 + ldr r0, _080C59C0 @ =gUnknown_3005334 + mov r8, r0 +_080C589A: + ldr r0, _080C59C4 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r7 + ldr r0, _080C59C8 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r2, r8 + ldr r1, [r2] + adds r1, r0 + ldr r0, _080C59CC @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r5, r1, r0 + adds r4, r5, 0x2 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80C603C + strh r0, [r5] + movs r6, 0x1 + adds r5, r4, 0 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + adds r7, 0x1 + cmp r6, r0 + bge _080C58FA +_080C58D2: + adds r4, r5, 0x2 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80C603C + strh r0, [r5] + subs r1, r5, 0x2 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r5, r4, 0 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + cmp r6, r0 + blt _080C58D2 +_080C58FA: + subs r1, r5, 0x2 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + lsls r0, r7, 24 + lsrs r7, r0, 24 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r7, r0 + bcc _080C589A +_080C5910: + movs r6, 0 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r6, r0 + bcs _080C59B0 + ldr r3, _080C59C0 @ =gUnknown_3005334 + mov r9, r3 + ldr r0, _080C59C8 @ =gUnknown_300534C + mov r8, r0 +_080C5922: + ldr r0, _080C59C4 @ =gUnknown_3005344 + ldrb r0, [r0] + mov r2, r8 + ldrb r1, [r2] + muls r0, r1 + lsls r0, 1 + mov r3, r9 + ldr r2, [r3] + adds r2, r0 + ldr r0, _080C59CC @ =gUnknown_3005330 + ldrb r0, [r0] + adds r0, r6 + lsls r0, 1 + adds r5, r2, r0 + lsls r1, 1 + adds r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + movs r7, 0x1 + mov r1, r8 + ldrb r0, [r1] + lsls r0, 1 + adds r5, r0 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + adds r6, 0x1 + cmp r7, r0 + bge _080C5994 + ldr r4, _080C59C8 @ =gUnknown_300534C +_080C5962: + ldrb r1, [r4] + lsls r1, 1 + adds r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + ldrb r1, [r4] + lsls r1, 1 + subs r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] + lsls r0, 1 + adds r5, r0 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + cmp r7, r0 + blt _080C5962 +_080C5994: + mov r2, r8 + ldrb r1, [r2] + lsls r1, 1 + subs r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + lsls r0, r6, 24 + lsrs r6, r0, 24 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r6, r0 + bcc _080C5922 +_080C59B0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C59BC: .4byte gUnknown_3005338 +_080C59C0: .4byte gUnknown_3005334 +_080C59C4: .4byte gUnknown_3005344 +_080C59C8: .4byte gUnknown_300534C +_080C59CC: .4byte gUnknown_3005330 +_080C59D0: .4byte gUnknown_3005340 + thumb_func_end sub_80C5884 + + thumb_func_start sub_80C59D4 +sub_80C59D4: @ 80C59D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C5A54 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5A46 + ldr r0, _080C5A58 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C5A5C @ =gUnknown_3005340 +_080C59EC: + ldr r0, _080C5A60 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C5A64 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5A68 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C5A3A + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5A18: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C5A2C + adds r0, r4, 0 + str r3, [sp] + bl sub_80C606C + strh r0, [r4] + ldr r3, [sp] +_080C5A2C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5A18 +_080C5A3A: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5A54 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C59EC +_080C5A46: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5A54: .4byte gUnknown_3005338 +_080C5A58: .4byte gUnknown_3005334 +_080C5A5C: .4byte gUnknown_3005340 +_080C5A60: .4byte gUnknown_3005344 +_080C5A64: .4byte gUnknown_300534C +_080C5A68: .4byte gUnknown_3005330 + thumb_func_end sub_80C59D4 + + thumb_func_start sub_80C5A6C +sub_80C5A6C: @ 80C5A6C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _080C5B98 @ =gUnknown_3005334 + ldr r4, [r0] + movs r6, 0 + movs r0, 0x80 + lsls r0, 8 + adds r5, r0, 0 +_080C5A84: + movs r7, 0 +_080C5A86: + ldrh r0, [r4] + ands r0, r5 + cmp r0, 0 + bne _080C5A96 + adds r0, r4, 0 + bl sub_80C606C + strh r0, [r4] +_080C5A96: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r4, 0x2 + cmp r7, 0x3F + bls _080C5A86 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3F + bls _080C5A84 + movs r7, 0 + ldr r1, _080C5B98 @ =gUnknown_3005334 + mov r10, r1 + mov r3, sp + movs r2, 0x80 + lsls r2, 8 + mov r9, r2 +_080C5ABA: + lsls r0, r7, 1 + mov r2, r10 + ldr r1, [r2] + adds r4, r1, r0 + ldrh r1, [r4] + strh r1, [r3] + mov r1, r9 + strh r1, [r4] + movs r6, 0x1 + adds r4, 0x80 + adds r5, r0, 0 +_080C5AD0: + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + ands r0, r2 + cmp r0, 0 + bne _080C5AF0 + adds r2, r4, 0 + adds r2, 0x80 + mov r0, sp + adds r1, r4, 0 + str r3, [sp, 0x4] + bl sub_80C62DC + strh r0, [r4] + ldr r3, [sp, 0x4] + strh r0, [r3] +_080C5AF0: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, 0x80 + cmp r6, 0x3E + bls _080C5AD0 + mov r0, r9 + strh r0, [r4] + mov r1, r10 + ldr r0, [r1] + adds r4, r0, r5 + ldrh r0, [r4] + strh r0, [r3] + mov r2, r9 + strh r2, [r4] + movs r6, 0x1 + adds r4, 0x80 + movs r0, 0x80 + lsls r0, 8 + mov r8, r0 +_080C5B18: + ldrh r0, [r4] + mov r1, r8 + ands r0, r1 + adds r5, r4, 0 + adds r5, 0x80 + cmp r0, 0 + bne _080C5B38 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + str r3, [sp, 0x4] + bl sub_80C62DC + strh r0, [r4] + ldr r3, [sp, 0x4] + strh r0, [r3] +_080C5B38: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, r5, 0 + cmp r6, 0x3E + bls _080C5B18 + mov r2, r9 + strh r2, [r4] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3F + bls _080C5ABA + ldr r0, _080C5B98 @ =gUnknown_3005334 + ldr r4, [r0] + movs r6, 0 + movs r0, 0x80 + lsls r0, 8 + mov r8, r0 +_080C5B5E: + movs r7, 0 + adds r5, r6, 0x1 +_080C5B62: + ldrh r0, [r4] + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _080C5B74 + adds r0, r4, 0 + bl sub_80C606C + strh r0, [r4] +_080C5B74: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r4, 0x2 + cmp r7, 0x3F + bls _080C5B62 + lsls r0, r5, 24 + lsrs r6, r0, 24 + cmp r6, 0x3F + bls _080C5B5E + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5B98: .4byte gUnknown_3005334 + thumb_func_end sub_80C5A6C + + thumb_func_start sub_80C5B9C +sub_80C5B9C: @ 80C5B9C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C5C2C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5C1E + ldr r0, _080C5C30 @ =gUnknown_3005334 + mov r8, r0 +_080C5BB2: + ldr r0, _080C5C34 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C5C38 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C5C3C @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, 0x1 + adds r4, 0x2 + ldr r0, _080C5C40 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + adds r6, r2, 0x1 + cmp r5, r0 + bge _080C5C12 + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5BEA: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C5C00 + mov r0, sp + adds r1, r4, 0 + bl sub_80C6098 + strh r0, [r4] + mov r1, sp + strh r0, [r1] +_080C5C00: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C5C40 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + cmp r5, r0 + blt _080C5BEA +_080C5C12: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5C2C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5BB2 +_080C5C1E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5C2C: .4byte gUnknown_3005338 +_080C5C30: .4byte gUnknown_3005334 +_080C5C34: .4byte gUnknown_3005344 +_080C5C38: .4byte gUnknown_300534C +_080C5C3C: .4byte gUnknown_3005330 +_080C5C40: .4byte gUnknown_3005340 + thumb_func_end sub_80C5B9C + + thumb_func_start sub_80C5C44 +sub_80C5C44: @ 80C5C44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r2, 0 + ldr r0, _080C5CE0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5CD2 + ldr r0, _080C5CE4 @ =gUnknown_3005334 + mov r8, r0 + ldr r7, _080C5CE8 @ =gUnknown_300534C +_080C5C5C: + ldr r0, _080C5CEC @ =gUnknown_3005344 + ldrb r1, [r0] + ldrb r0, [r7] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C5CF0 @ =gUnknown_3005330 + ldrb r0, [r0] + adds r0, r2 + lsls r0, 1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, 0x1 + ldrb r0, [r7] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5CF4 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + adds r6, r2, 0x1 + cmp r5, r0 + bge _080C5CC6 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C5C96: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + bne _080C5CB0 + mov r0, sp + adds r1, r4, 0 + str r2, [sp, 0x4] + bl sub_80C6098 + strh r0, [r4] + mov r1, sp + strh r0, [r1] + ldr r2, [sp, 0x4] +_080C5CB0: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r7] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5CF4 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + cmp r5, r0 + blt _080C5C96 +_080C5CC6: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5CE0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5C5C +_080C5CD2: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5CE0: .4byte gUnknown_3005340 +_080C5CE4: .4byte gUnknown_3005334 +_080C5CE8: .4byte gUnknown_300534C +_080C5CEC: .4byte gUnknown_3005344 +_080C5CF0: .4byte gUnknown_3005330 +_080C5CF4: .4byte gUnknown_3005338 + thumb_func_end sub_80C5C44 + + thumb_func_start sub_80C5CF8 +sub_80C5CF8: @ 80C5CF8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + mov r2, sp + ldr r3, _080C5D64 @ =gUnknown_83F3024 + lsls r1, r0, 1 + add r1, r10 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r2, 0x1] + mov r5, sp + adds r0, r3, 0x2 + adds r1, r0 + ldrb r4, [r1] + lsls r2, r4, 24 + lsrs r1, r2, 27 + movs r0, 0x7 + ands r1, r0 + strh r1, [r5, 0x2] + lsrs r2, 25 + mov r9, r2 + movs r0, 0x3 + ands r2, r0 + mov r9, r2 + movs r5, 0x1 + ands r5, r4 + movs r4, 0x1 + mov r8, r4 + cmp r8, r1 + bcs _080C5DAA + mov r3, sp +_080C5D4A: + cmp r5, 0 + bne _080C5D68 + mov r0, r8 + lsls r2, r0, 2 + mov r4, sp + adds r1, r4, r2 + ldrb r0, [r3] + mov r4, r8 + subs r0, r4 + strb r0, [r1] + ldrb r0, [r3, 0x1] + add r0, r8 + b _080C5D7A + .align 2, 0 +_080C5D64: .4byte gUnknown_83F3024 +_080C5D68: + mov r0, r8 + lsls r2, r0, 2 + mov r4, sp + adds r1, r4, r2 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r1] + ldrb r0, [r3, 0x1] + subs r0, 0x1 +_080C5D7A: + strb r0, [r1, 0x1] + add r2, sp + ldrb r0, [r2] + cmp r0, 0x3F + bhi _080C5D8A + ldrb r0, [r2, 0x1] + cmp r0, 0x3F + bls _080C5D92 +_080C5D8A: + mov r0, r8 + subs r0, 0x1 + strh r0, [r3, 0x2] + b _080C5DAA +_080C5D92: + ldrh r0, [r3, 0x2] + mov r1, r8 + subs r0, r1 + strh r0, [r2, 0x2] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrh r0, [r3, 0x2] + cmp r8, r0 + bcc _080C5D4A +_080C5DAA: + movs r2, 0 + mov r8, r2 + mov r0, sp + ldrh r0, [r0, 0x2] + cmp r8, r0 + bcc _080C5DB8 + b _080C5EBA +_080C5DB8: + movs r3, 0x1F +_080C5DBA: + ldr r1, _080C5E18 @ =gUnknown_3005334 + mov r4, r8 + lsls r0, r4, 2 + mov r2, sp + adds r6, r2, r0 + ldrb r0, [r6, 0x1] + lsls r0, 7 + ldr r1, [r1] + adds r1, r0 + ldrb r0, [r6] + lsls r0, 1 + adds r2, r1, r0 + ldrh r1, [r2] + movs r4, 0x80 + lsls r4, 8 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080C5EA6 + movs r7, 0x1F + ands r7, r1 + lsls r0, r1, 16 + lsrs r5, r0, 21 + ands r5, r3 + lsrs r4, r0, 26 + ands r4, r3 + mov r0, r9 + cmp r0, 0 + blt _080C5E9C + cmp r0, 0x1 + ble _080C5E1C + cmp r0, 0x3 + bgt _080C5E9C + ldrh r0, [r6, 0x2] + adds r1, r7, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r1, r5, r0 + lsls r1, 16 + lsrs r5, r1, 16 + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r7, 0x1F + bls _080C5E90 + movs r7, 0x1F + b _080C5E90 + .align 2, 0 +_080C5E18: .4byte gUnknown_3005334 +_080C5E1C: + mov r1, r10 + lsls r0, r1, 1 + add r0, r10 + ldr r1, _080C5E50 @ =gUnknown_83F3024 + adds r1, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsrs r0, 3 + movs r1, 0x7 + ands r0, r1 + movs r1, 0x3 + str r2, [sp, 0x18] + str r3, [sp, 0x1C] + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + cmp r0, 0x1 + beq _080C5E6C + cmp r0, 0x1 + bgt _080C5E54 + cmp r0, 0 + beq _080C5E5A + b _080C5E9C + .align 2, 0 +_080C5E50: .4byte gUnknown_83F3024 +_080C5E54: + cmp r0, 0x2 + beq _080C5E7E + b _080C5E9C +_080C5E5A: + ldrh r0, [r6, 0x2] + cmp r7, r0 + bcc _080C5E68 + subs r0, r7, r0 + lsls r0, 16 + lsrs r7, r0, 16 + b _080C5E9C +_080C5E68: + movs r7, 0 + b _080C5E9C +_080C5E6C: + ldrh r0, [r6, 0x2] + cmp r5, r0 + bcc _080C5E7A + subs r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + b _080C5E9C +_080C5E7A: + movs r5, 0 + b _080C5E9C +_080C5E7E: + ldrh r0, [r6, 0x2] + cmp r4, r0 + bcc _080C5E8C + subs r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + b _080C5E9C +_080C5E8C: + movs r4, 0 + b _080C5E9C +_080C5E90: + cmp r5, 0x1F + bls _080C5E96 + movs r5, 0x1F +_080C5E96: + cmp r4, 0x1F + bls _080C5E9C + movs r4, 0x1F +_080C5E9C: + lsls r0, r4, 10 + lsls r1, r5, 5 + orrs r0, r1 + orrs r7, r0 + strh r7, [r2] +_080C5EA6: + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r0, sp + ldrh r0, [r0, 0x2] + cmp r8, r0 + bcs _080C5EBA + b _080C5DBA +_080C5EBA: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C5CF8 + + thumb_func_start sub_80C5ECC +sub_80C5ECC: @ 80C5ECC + push {lr} + ldrh r1, [r0] + movs r3, 0x1F + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r2, r1, 21 + ands r2, r3 + lsrs r1, 26 + ands r1, r3 + adds r0, r2 + adds r0, r1 + movs r1, 0x3 + bl __divsi3 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r0, r1, 10 + lsls r2, r1, 5 + orrs r0, r2 + orrs r0, r1 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80C5ECC + + thumb_func_start sub_80C5F00 +sub_80C5F00: @ 80C5F00 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldrh r0, [r0] + movs r2, 0x1F + movs r1, 0x1F + ands r1, r0 + lsls r0, 16 + lsrs r3, r0, 21 + ands r3, r2 + lsrs r0, 26 + ands r0, r2 + cmp r1, 0x10 + bhi _080C5F30 + cmp r3, 0x10 + bhi _080C5F30 + cmp r0, 0x10 + bhi _080C5F30 + adds r0, r4, 0 + bl sub_80C5F3C + lsls r0, 16 + lsrs r0, 16 + b _080C5F32 +_080C5F30: + ldr r0, _080C5F38 @ =0x00007fff +_080C5F32: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C5F38: .4byte 0x00007fff + thumb_func_end sub_80C5F00 + + thumb_func_start sub_80C5F3C +sub_80C5F3C: @ 80C5F3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + mov r8, r0 + movs r6, 0 + movs r7, 0 + adds r0, r4, 0 + movs r1, 0x6 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bhi _080C5FF4 + lsls r0, 2 + ldr r1, _080C5F80 @ =_080C5F84 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5F80: .4byte _080C5F84 + .align 2, 0 +_080C5F84: + .4byte _080C5F9C + .4byte _080C5FAC + .4byte _080C5FBC + .4byte _080C5FCA + .4byte _080C5FD8 + .4byte _080C5FE6 +_080C5F9C: + movs r0, 0x15 + subs r0, r5 + lsls r0, 16 + lsrs r6, r0, 16 + adds r7, r6, 0 + movs r1, 0 + mov r8, r1 + b _080C5FF4 +_080C5FAC: + movs r7, 0 + movs r0, 0x15 + subs r0, r5 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r6, r8 + b _080C5FF4 +_080C5FBC: + movs r0, 0x15 + subs r0, r5 + lsls r0, 16 + lsrs r7, r0, 16 + movs r6, 0 + mov r8, r7 + b _080C5FF4 +_080C5FCA: + movs r7, 0 + movs r6, 0 + movs r0, 0x17 + subs r0, r5 + lsls r0, 16 + lsrs r0, 16 + b _080C5FF2 +_080C5FD8: + movs r0, 0x17 + subs r0, r5 + lsls r0, 16 + lsrs r7, r0, 16 + movs r6, 0 + mov r8, r6 + b _080C5FF4 +_080C5FE6: + movs r7, 0 + movs r0, 0x17 + subs r0, r5 + lsls r0, 16 + lsrs r6, r0, 16 + movs r0, 0 +_080C5FF2: + mov r8, r0 +_080C5FF4: + lsls r0, r7, 10 + lsls r1, r6, 5 + orrs r0, r1 + mov r1, r8 + orrs r1, r0 + lsls r0, r1, 16 + lsrs r0, 16 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C5F3C + + thumb_func_start sub_80C600C +sub_80C600C: @ 80C600C + push {lr} + ldrh r0, [r0] + movs r2, 0x1F + movs r1, 0x1F + ands r1, r0 + lsls r0, 16 + lsrs r3, r0, 21 + ands r3, r2 + lsrs r0, 26 + ands r0, r2 + cmp r1, 0x10 + bhi _080C6030 + cmp r3, 0x10 + bhi _080C6030 + cmp r0, 0x10 + bhi _080C6030 + movs r0, 0 + b _080C6032 +_080C6030: + ldr r0, _080C6038 @ =0x00007fff +_080C6032: + pop {r1} + bx r1 + .align 2, 0 +_080C6038: .4byte 0x00007fff + thumb_func_end sub_80C600C + + thumb_func_start sub_80C603C +sub_80C603C: @ 80C603C + push {r4,lr} + adds r4, r0, 0 + ldrh r3, [r4] + cmp r3, 0 + beq _080C6064 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _080C6056 + adds r0, r2, 0 + b _080C6066 +_080C6056: + ldrh r1, [r1] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080C6064 + ldrh r0, [r4] + b _080C6066 +_080C6064: + movs r0, 0 +_080C6066: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C603C + + thumb_func_start sub_80C606C +sub_80C606C: @ 80C606C + push {r4,lr} + ldrh r1, [r0] + movs r0, 0x1F + movs r3, 0x1F + ands r3, r1 + lsls r1, 16 + lsrs r2, r1, 21 + lsrs r1, 26 + subs r3, r0, r3 + adds r4, r0, 0 + bics r4, r2 + adds r2, r4, 0 + bics r0, r1 + lsls r0, 10 + lsls r2, 5 + orrs r0, r2 + orrs r0, r3 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C606C + + thumb_func_start sub_80C6098 +sub_80C6098: @ 80C6098 + push {r4-r7,lr} + sub sp, 0x14 + adds r7, r1, 0 + ldrh r4, [r0] + ldrh r5, [r7] + lsls r6, r4, 16 + lsls r0, r5, 16 + mov r12, r0 + cmp r4, r5 + beq _080C610A + mov r2, sp + movs r3, 0x1F + movs r1, 0x1F + adds r0, r1, 0 + ands r0, r4 + strh r0, [r2] + lsrs r0, r6, 21 + ands r0, r3 + strh r0, [r2, 0x2] + lsrs r0, r6, 26 + ands r0, r3 + strh r0, [r2, 0x4] + mov r0, sp + ands r1, r5 + strh r1, [r0, 0x6] + mov r1, sp + mov r2, r12 + lsrs r0, r2, 21 + ands r0, r3 + strh r0, [r1, 0x8] + lsrs r0, r2, 26 + ands r0, r3 + strh r0, [r1, 0xA] + mov r0, sp + ldrh r0, [r0] + cmp r0, 0x19 + bls _080C60F2 + mov r0, sp + ldrh r0, [r0, 0x2] + cmp r0, 0x19 + bls _080C60F2 + mov r0, sp + ldrh r0, [r0, 0x4] + cmp r0, 0x19 + bhi _080C610A +_080C60F2: + mov r0, sp + ldrh r0, [r0, 0x6] + cmp r0, 0x19 + bls _080C610E + mov r0, sp + ldrh r0, [r0, 0x8] + cmp r0, 0x19 + bls _080C610E + mov r0, sp + ldrh r0, [r0, 0xA] + cmp r0, 0x19 + bls _080C610E +_080C610A: + ldrh r0, [r7] + b _080C61B4 +_080C610E: + movs r4, 0 + add r6, sp, 0xC + mov r7, sp + adds r7, 0x6 + adds r5, r6, 0 +_080C6118: + lsls r2, r4, 1 + mov r1, sp + adds r0, r1, r2 + adds r1, r7, r2 + ldrh r3, [r0] + ldrh r0, [r1] + cmp r3, r0 + bls _080C612E + adds r1, r5, r2 + subs r0, r3, r0 + b _080C6132 +_080C612E: + adds r1, r5, r2 + subs r0, r3 +_080C6132: + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _080C6118 + adds r1, r6, 0 + ldrh r0, [r1, 0x2] + ldrh r3, [r1] + cmp r3, r0 + bcc _080C6158 + ldrh r2, [r1, 0x4] + cmp r3, r2 + bcc _080C6152 + adds r2, r3, 0 + b _080C616C +_080C6152: + cmp r0, r2 + bcs _080C615E + b _080C6166 +_080C6158: + ldrh r2, [r1, 0x4] + cmp r0, r2 + bcc _080C6162 +_080C615E: + ldrh r2, [r1, 0x2] + b _080C616C +_080C6162: + cmp r2, r3 + bcc _080C616A +_080C6166: + ldrh r2, [r1, 0x4] + b _080C616C +_080C616A: + ldrh r2, [r6] +_080C616C: + mov r0, sp + ldrh r1, [r0, 0x6] + lsrs r0, r2, 1 + movs r6, 0x1F + subs r6, r0 + adds r0, r1, 0 + muls r0, r6 + movs r1, 0x1F + bl __divsi3 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r0, sp + ldrh r0, [r0, 0x8] + muls r0, r6 + movs r1, 0x1F + bl __divsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, sp + ldrh r0, [r0, 0xA] + muls r0, r6 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 6 + lsls r4, 5 + orrs r0, r4 + orrs r5, r0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r5, 0 +_080C61B4: + add sp, 0x14 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C6098 + + thumb_func_start sub_80C61BC +sub_80C61BC: @ 80C61BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r3, r0, 0 + mov r10, r1 + str r2, [sp] + ldrh r1, [r3] + mov r0, r10 + ldrh r0, [r0] + cmp r1, r0 + bne _080C61E4 + ldrh r0, [r2] + cmp r0, r1 + bne _080C61E4 + mov r1, r10 + ldrh r0, [r1] + b _080C62CC +_080C61E4: + mov r2, r10 + ldrh r0, [r2] + movs r1, 0x1F + mov r9, r1 + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + lsls r0, 16 + lsrs r2, r0, 21 + mov r1, r9 + ands r1, r2 + mov r8, r1 + lsrs r0, 26 + mov r2, r9 + ands r2, r0 + str r2, [sp, 0x4] + ldrh r2, [r3] + adds r0, r4, 0 + ands r0, r2 + lsls r2, 16 + lsrs r1, r2, 21 + mov r3, r9 + ands r1, r3 + adds r0, r1 + lsrs r2, 26 + ands r2, r3 + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + mov r1, r8 + adds r0, r5, r1 + ldr r2, [sp, 0x4] + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r3, [sp] + ldrh r1, [r3] + ands r4, r1 + lsls r1, 16 + lsrs r0, r1, 21 + mov r2, r9 + ands r0, r2 + adds r4, r0 + lsrs r1, 26 + ands r1, r2 + adds r4, r1 + adds r0, r4, 0 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r7, r6 + bne _080C6266 + cmp r1, r6 + bne _080C6266 + mov r3, r10 + ldrh r0, [r3] + b _080C62CC +_080C6266: + cmp r7, r6 + bls _080C626E + subs r0, r7, r6 + b _080C6270 +_080C626E: + subs r0, r6, r7 +_080C6270: + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, r6 + bls _080C627C + subs r0, r1, r6 + b _080C627E +_080C627C: + subs r0, r6, r1 +_080C627E: + lsls r0, 16 + lsrs r0, 16 + cmp r2, r0 + bcc _080C6288 + adds r0, r2, 0 +_080C6288: + lsrs r0, 1 + movs r4, 0x1F + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, r8 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r1, [sp, 0x4] + adds r0, r1, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 6 + mov r2, r8 + lsls r1, r2, 5 + orrs r0, r1 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r0, 16 +_080C62CC: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C61BC + + thumb_func_start sub_80C62DC +sub_80C62DC: @ 80C62DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r3, r0, 0 + mov r10, r1 + str r2, [sp] + ldrh r1, [r3] + mov r0, r10 + ldrh r0, [r0] + cmp r1, r0 + bne _080C6304 + ldrh r0, [r2] + cmp r0, r1 + bne _080C6304 + mov r1, r10 + ldrh r0, [r1] + b _080C63EA +_080C6304: + mov r2, r10 + ldrh r0, [r2] + movs r1, 0x1F + mov r9, r1 + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + lsls r0, 16 + lsrs r2, r0, 21 + mov r1, r9 + ands r1, r2 + mov r8, r1 + lsrs r0, 26 + mov r2, r9 + ands r2, r0 + str r2, [sp, 0x4] + ldrh r2, [r3] + adds r0, r4, 0 + ands r0, r2 + lsls r2, 16 + lsrs r1, r2, 21 + mov r3, r9 + ands r1, r3 + adds r0, r1 + lsrs r2, 26 + ands r2, r3 + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + mov r1, r8 + adds r0, r5, r1 + ldr r2, [sp, 0x4] + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r3, [sp] + ldrh r1, [r3] + ands r4, r1 + lsls r1, 16 + lsrs r0, r1, 21 + mov r2, r9 + ands r0, r2 + adds r4, r0 + lsrs r1, 26 + ands r1, r2 + adds r4, r1 + adds r0, r4, 0 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r7, r6 + bne _080C6386 + cmp r1, r6 + bne _080C6386 + mov r3, r10 + ldrh r0, [r3] + b _080C63EA +_080C6386: + cmp r7, r6 + bls _080C638E + subs r0, r7, r6 + b _080C6390 +_080C638E: + subs r0, r6, r7 +_080C6390: + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, r6 + bls _080C639C + subs r0, r1, r6 + b _080C639E +_080C639C: + subs r0, r6, r1 +_080C639E: + lsls r0, 16 + lsrs r0, 16 + cmp r2, r0 + bcc _080C63A8 + adds r0, r2, 0 +_080C63A8: + movs r4, 0x1F + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, r8 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r1, [sp, 0x4] + adds r0, r1, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 6 + mov r2, r8 + lsls r1, r2, 5 + orrs r0, r1 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r0, 16 +_080C63EA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C62DC + + thumb_func_start sub_80C63FC +sub_80C63FC: @ 80C63FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldrb r1, [r0, 0x1D] + lsrs r5, r1, 3 + ldrb r1, [r0, 0x1E] + lsrs r1, 3 + str r1, [sp, 0x8] + ldr r1, [r0, 0x4] + str r1, [sp] + ldr r2, [r0, 0x10] + str r2, [sp, 0x4] + ldrh r0, [r0, 0x16] + cmp r0, 0x2 + bne _080C64AC + movs r1, 0 + ldr r0, [sp, 0x8] + cmp r1, r0 + bcc _080C642A + b _080C6538 +_080C642A: + movs r0, 0 + adds r2, r1, 0x1 + mov r10, r2 + cmp r0, r5 + bcs _080C649E + adds r2, r1, 0 + muls r2, r5 + mov r9, r2 + lsls r1, 3 + mov r8, r1 +_080C643E: + movs r4, 0 + lsls r6, r0, 4 + adds r7, r0, 0x1 + add r0, r9 + lsls r0, 6 + ldr r1, [sp, 0x4] + adds r1, r0 + mov r12, r1 +_080C644E: + lsls r0, r4, 3 + mov r2, r12 + adds r3, r2, r0 + mov r1, r8 + adds r0, r1, r4 + lsls r0, 3 + muls r0, r5 + lsls r0, 1 + ldr r2, [sp] + adds r0, r2, r0 + adds r2, r0, r6 + ldrh r0, [r2, 0x2] + lsls r0, 8 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r2, 0x6] + lsls r0, 8 + ldrh r1, [r2, 0x4] + orrs r0, r1 + strh r0, [r3, 0x2] + ldrh r0, [r2, 0xA] + lsls r0, 8 + ldrh r1, [r2, 0x8] + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r2, 0xE] + lsls r0, 8 + ldrh r1, [r2, 0xC] + orrs r0, r1 + strh r0, [r3, 0x6] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x7 + bls _080C644E + lsls r0, r7, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080C643E +_080C649E: + mov r1, r10 + lsls r0, r1, 16 + lsrs r1, r0, 16 + ldr r2, [sp, 0x8] + cmp r1, r2 + bcc _080C642A + b _080C6538 +_080C64AC: + movs r1, 0 + ldr r0, [sp, 0x8] + cmp r1, r0 + bcs _080C6538 +_080C64B4: + movs r0, 0 + adds r2, r1, 0x1 + mov r10, r2 + cmp r0, r5 + bcs _080C652C + adds r2, r1, 0 + muls r2, r5 + mov r9, r2 + lsls r1, 3 + mov r8, r1 +_080C64C8: + movs r4, 0 + lsls r6, r0, 4 + adds r7, r0, 0x1 + add r0, r9 + lsls r0, 5 + ldr r1, [sp, 0x4] + adds r1, r0 + mov r12, r1 +_080C64D8: + lsls r0, r4, 2 + mov r2, r12 + adds r3, r2, r0 + mov r1, r8 + adds r0, r1, r4 + lsls r0, 3 + muls r0, r5 + lsls r0, 1 + ldr r2, [sp] + adds r0, r2, r0 + adds r2, r0, r6 + ldrh r1, [r2, 0x2] + lsls r1, 4 + ldrh r0, [r2] + orrs r1, r0 + ldrh r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrh r0, [r2, 0x6] + lsls r0, 12 + orrs r1, r0 + strh r1, [r3] + ldrh r1, [r2, 0xA] + lsls r1, 4 + ldrh r0, [r2, 0x8] + orrs r1, r0 + ldrh r0, [r2, 0xC] + lsls r0, 8 + orrs r1, r0 + ldrh r0, [r2, 0xE] + lsls r0, 12 + orrs r1, r0 + strh r1, [r3, 0x2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x7 + bls _080C64D8 + lsls r0, r7, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080C64C8 +_080C652C: + mov r1, r10 + lsls r0, r1, 16 + lsrs r1, r0, 16 + ldr r2, [sp, 0x8] + cmp r1, r2 + bcc _080C64B4 +_080C6538: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C63FC + + thumb_func_start sub_80C6548 +sub_80C6548: @ 80C6548 + push {lr} + ldr r2, _080C6598 @ =gUnknown_3005354 + ldrb r1, [r0, 0x18] + lsls r1, 4 + strh r1, [r2] + ldr r3, _080C659C @ =gUnknown_3005350 + ldrh r2, [r2] + lsls r2, 1 + ldr r1, [r0, 0x8] + adds r1, r2 + str r1, [r3] + ldr r2, _080C65A0 @ =gUnknown_3005334 + ldr r1, [r0, 0x4] + str r1, [r2] + ldr r2, _080C65A4 @ =gUnknown_3005330 + ldrb r1, [r0, 0x19] + strb r1, [r2] + ldr r2, _080C65A8 @ =gUnknown_3005344 + ldrb r1, [r0, 0x1A] + strb r1, [r2] + ldr r2, _080C65AC @ =gUnknown_3005340 + ldrb r1, [r0, 0x1B] + strb r1, [r2] + ldr r2, _080C65B0 @ =gUnknown_3005338 + ldrb r1, [r0, 0x1C] + strb r1, [r2] + ldr r2, _080C65B4 @ =gUnknown_300534C + ldrb r1, [r0, 0x1D] + strb r1, [r2] + ldr r2, _080C65B8 @ =gUnknown_300533C + ldrb r1, [r0, 0x1E] + strb r1, [r2] + ldrh r0, [r0, 0x14] + cmp r0, 0x5 + bhi _080C660E + lsls r0, 2 + ldr r1, _080C65BC @ =_080C65C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C6598: .4byte gUnknown_3005354 +_080C659C: .4byte gUnknown_3005350 +_080C65A0: .4byte gUnknown_3005334 +_080C65A4: .4byte gUnknown_3005330 +_080C65A8: .4byte gUnknown_3005344 +_080C65AC: .4byte gUnknown_3005340 +_080C65B0: .4byte gUnknown_3005338 +_080C65B4: .4byte gUnknown_300534C +_080C65B8: .4byte gUnknown_300533C +_080C65BC: .4byte _080C65C0 + .align 2, 0 +_080C65C0: + .4byte _080C65D8 + .4byte _080C65E0 + .4byte _080C65E8 + .4byte _080C65F2 + .4byte _080C65FC + .4byte _080C6606 +_080C65D8: + movs r0, 0 + bl sub_80C6748 + b _080C660E +_080C65E0: + movs r0, 0x1 + bl sub_80C6748 + b _080C660E +_080C65E8: + bl sub_80C6614 + bl sub_80C6AB8 + b _080C660E +_080C65F2: + bl sub_80C6714 + bl sub_80C6A08 + b _080C660E +_080C65FC: + bl sub_80C66D8 + bl sub_80C6958 + b _080C660E +_080C6606: + bl sub_80C66BC + bl sub_80C68A0 +_080C660E: + pop {r0} + bx r0 + thumb_func_end sub_80C6548 + + thumb_func_start sub_80C6614 +sub_80C6614: @ 80C6614 + ldr r2, _080C667C @ =gUnknown_3005350 + ldr r1, [r2] + movs r0, 0 + strh r0, [r1] + ldr r0, [r2] + ldr r2, _080C6680 @ =0x000018c6 + adds r1, r2, 0 + strh r1, [r0, 0x2] + ldr r2, _080C6684 @ =0x000077bd + adds r1, r2, 0 + strh r1, [r0, 0x4] + ldr r2, _080C6688 @ =0x00002d6b + adds r1, r2, 0 + strh r1, [r0, 0x6] + ldr r2, _080C668C @ =0x000018dd + adds r1, r2, 0 + strh r1, [r0, 0x8] + ldr r2, _080C6690 @ =0x00001ba6 + adds r1, r2, 0 + strh r1, [r0, 0xA] + ldr r2, _080C6694 @ =0x000074c6 + adds r1, r2, 0 + strh r1, [r0, 0xC] + ldr r2, _080C6698 @ =0x00001bbd + adds r1, r2, 0 + strh r1, [r0, 0xE] + ldr r2, _080C669C @ =0x000074dd + adds r1, r2, 0 + strh r1, [r0, 0x10] + ldr r2, _080C66A0 @ =0x000077a6 + adds r1, r2, 0 + strh r1, [r0, 0x12] + ldr r2, _080C66A4 @ =0x0000197d + adds r1, r2, 0 + strh r1, [r0, 0x14] + ldr r2, _080C66A8 @ =0x00001bab + adds r1, r2, 0 + strh r1, [r0, 0x16] + ldr r2, _080C66AC @ =0x00007566 + adds r1, r2, 0 + strh r1, [r0, 0x18] + ldr r2, _080C66B0 @ =0x00002cdd + adds r1, r2, 0 + strh r1, [r0, 0x1A] + ldr r2, _080C66B4 @ =0x00002fa6 + adds r1, r2, 0 + strh r1, [r0, 0x1C] + ldr r2, _080C66B8 @ =0x000074cb + adds r1, r2, 0 + strh r1, [r0, 0x1E] + bx lr + .align 2, 0 +_080C667C: .4byte gUnknown_3005350 +_080C6680: .4byte 0x000018c6 +_080C6684: .4byte 0x000077bd +_080C6688: .4byte 0x00002d6b +_080C668C: .4byte 0x000018dd +_080C6690: .4byte 0x00001ba6 +_080C6694: .4byte 0x000074c6 +_080C6698: .4byte 0x00001bbd +_080C669C: .4byte 0x000074dd +_080C66A0: .4byte 0x000077a6 +_080C66A4: .4byte 0x0000197d +_080C66A8: .4byte 0x00001bab +_080C66AC: .4byte 0x00007566 +_080C66B0: .4byte 0x00002cdd +_080C66B4: .4byte 0x00002fa6 +_080C66B8: .4byte 0x000074cb + thumb_func_end sub_80C6614 + + thumb_func_start sub_80C66BC +sub_80C66BC: @ 80C66BC + ldr r2, _080C66D0 @ =gUnknown_3005350 + ldr r0, [r2] + movs r1, 0 + strh r1, [r0] + ldr r2, [r2] + strh r1, [r2, 0x2] + ldr r1, _080C66D4 @ =0x00007fff + adds r0, r1, 0 + strh r0, [r2, 0x4] + bx lr + .align 2, 0 +_080C66D0: .4byte gUnknown_3005350 +_080C66D4: .4byte 0x00007fff + thumb_func_end sub_80C66BC + + thumb_func_start sub_80C66D8 +sub_80C66D8: @ 80C66D8 + push {r4,r5,lr} + ldr r1, _080C6710 @ =gUnknown_3005350 + ldr r0, [r1] + movs r2, 0 + strh r2, [r0] + ldr r0, [r1] + strh r2, [r0, 0x2] + movs r4, 0 + adds r5, r1, 0 +_080C66EA: + ldr r0, [r5] + lsls r2, r4, 1 + adds r2, r0 + adds r0, r4, 0x2 + lsls r3, r0, 1 + lsls r1, r0, 11 + lsls r0, 6 + orrs r1, r0 + orrs r1, r3 + strh r1, [r2, 0x4] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xD + bls _080C66EA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C6710: .4byte gUnknown_3005350 + thumb_func_end sub_80C66D8 + + thumb_func_start sub_80C6714 +sub_80C6714: @ 80C6714 + push {r4,lr} + ldr r2, _080C6744 @ =gUnknown_3005350 + ldr r1, [r2] + movs r0, 0 + strh r0, [r1] + movs r3, 0 + adds r4, r2, 0 +_080C6722: + ldr r0, [r4] + lsls r2, r3, 1 + adds r2, r0 + lsls r0, r3, 10 + lsls r1, r3, 5 + orrs r0, r1 + orrs r0, r3 + strh r0, [r2, 0x2] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1F + bls _080C6722 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C6744: .4byte gUnknown_3005350 + thumb_func_end sub_80C6714 + + thumb_func_start sub_80C6748 +sub_80C6748: @ 80C6748 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + movs r1, 0xDF + mov r9, r1 + cmp r0, 0 + bne _080C6760 + movs r2, 0xFF + mov r9, r2 +_080C6760: + movs r6, 0 + ldr r3, _080C67E4 @ =gUnknown_3005350 + mov r12, r3 + mov r0, r9 + lsls r4, r0, 1 + ldr r5, _080C67E8 @ =gUnknown_3005338 + cmp r6, r9 + bcs _080C6784 + movs r2, 0 +_080C6772: + ldr r0, [r3] + lsls r1, r6, 1 + adds r1, r0 + strh r2, [r1] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r9 + bcc _080C6772 +_080C6784: + mov r1, r12 + ldr r0, [r1] + adds r0, r4, r0 + ldr r2, _080C67EC @ =0x00003def + adds r1, r2, 0 + strh r1, [r0] + movs r3, 0 + ldrb r5, [r5] + cmp r3, r5 + bcs _080C6888 +_080C6798: + ldr r2, _080C67F0 @ =gUnknown_3005334 + ldr r0, _080C67F4 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r3 + ldr r0, _080C67F8 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + ldr r1, [r2] + adds r1, r0 + ldr r0, _080C67FC @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r6, 0 + ldr r0, _080C6800 @ =gUnknown_3005340 + adds r2, r0, 0 + adds r3, 0x1 + mov r10, r3 + ldrb r3, [r2] + cmp r6, r3 + bcs _080C687A + ldr r0, _080C6804 @ =gUnknown_3005354 + mov r8, r0 +_080C67C8: + ldrh r0, [r4] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6808 + mov r1, r8 + ldrh r0, [r1] + strh r0, [r4] + adds r6, 0x1 + adds r7, r4, 0x2 + b _080C686E + .align 2, 0 +_080C67E4: .4byte gUnknown_3005350 +_080C67E8: .4byte gUnknown_3005338 +_080C67EC: .4byte 0x00003def +_080C67F0: .4byte gUnknown_3005334 +_080C67F4: .4byte gUnknown_3005344 +_080C67F8: .4byte gUnknown_300534C +_080C67FC: .4byte gUnknown_3005330 +_080C6800: .4byte gUnknown_3005340 +_080C6804: .4byte gUnknown_3005354 +_080C6808: + adds r0, r4, 0 + bl sub_80C6B68 + lsls r0, 16 + lsrs r5, r0, 16 + movs r3, 0x1 + adds r6, 0x1 + adds r7, r4, 0x2 + cmp r3, r9 + bcs _080C6864 + ldr r0, _080C6834 @ =gUnknown_3005350 + ldr r2, [r0] + ldrh r1, [r2, 0x2] + mov r12, r0 + cmp r1, 0 + bne _080C6838 + strh r5, [r2, 0x2] + mov r2, r8 + ldrh r0, [r2] + adds r0, 0x1 + b _080C6862 + .align 2, 0 +_080C6834: .4byte gUnknown_3005350 +_080C6838: + mov r2, r12 + ldr r1, [r2] + lsls r0, r3, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r5 + beq _080C685C + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r9 + bcs _080C6864 + lsls r0, r3, 1 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, 0 + bne _080C6838 + strh r5, [r1] +_080C685C: + mov r1, r8 + ldrh r0, [r1] + adds r0, r3 +_080C6862: + strh r0, [r4] +_080C6864: + ldr r2, _080C6898 @ =gUnknown_3005340 + cmp r3, r9 + bne _080C686E + mov r3, r9 + strh r3, [r4] +_080C686E: + lsls r0, r6, 24 + lsrs r6, r0, 24 + adds r4, r7, 0 + ldrb r0, [r2] + cmp r6, r0 + bcc _080C67C8 +_080C687A: + mov r1, r10 + lsls r0, r1, 24 + lsrs r3, r0, 24 + ldr r0, _080C689C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r3, r0 + bcc _080C6798 +_080C6888: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6898: .4byte gUnknown_3005340 +_080C689C: .4byte gUnknown_3005338 + thumb_func_end sub_80C6748 + + thumb_func_start sub_80C68A0 +sub_80C68A0: @ 80C68A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r2, 0 + ldr r0, _080C68F4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C6944 + ldr r0, _080C68F8 @ =gUnknown_3005334 + mov r8, r0 +_080C68B4: + ldr r0, _080C68FC @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C6900 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C6904 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r6, 0 + ldr r0, _080C6908 @ =gUnknown_3005340 + adds r3, r0, 0 + adds r7, r2, 0x1 + ldrb r0, [r3] + cmp r6, r0 + bcs _080C6938 + ldr r5, _080C690C @ =gUnknown_3005354 +_080C68E0: + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6910 + ldrh r0, [r5] + strh r0, [r4] + b _080C692A + .align 2, 0 +_080C68F4: .4byte gUnknown_3005338 +_080C68F8: .4byte gUnknown_3005334 +_080C68FC: .4byte gUnknown_3005344 +_080C6900: .4byte gUnknown_300534C +_080C6904: .4byte gUnknown_3005330 +_080C6908: .4byte gUnknown_3005340 +_080C690C: .4byte gUnknown_3005354 +_080C6910: + adds r0, r4, 0 + bl sub_80C600C + lsls r0, 16 + cmp r0, 0 + bne _080C6922 + ldrh r0, [r5] + adds r0, 0x1 + b _080C6926 +_080C6922: + ldrh r0, [r5] + adds r0, 0x2 +_080C6926: + strh r0, [r4] + ldr r3, _080C6950 @ =gUnknown_3005340 +_080C692A: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r6, r0 + bcc _080C68E0 +_080C6938: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6954 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C68B4 +_080C6944: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6950: .4byte gUnknown_3005340 +_080C6954: .4byte gUnknown_3005338 + thumb_func_end sub_80C68A0 + + thumb_func_start sub_80C6958 +sub_80C6958: @ 80C6958 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C69AC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C69F4 + ldr r0, _080C69B0 @ =gUnknown_3005334 + mov r8, r0 +_080C696E: + ldr r0, _080C69B4 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C69B8 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C69BC @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + ldr r0, _080C69C0 @ =gUnknown_3005340 + adds r7, r2, 0x1 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C69E8 + ldr r6, _080C69C4 @ =gUnknown_3005354 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C699E: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + beq _080C69C8 + ldrh r0, [r6] + strh r0, [r4] + b _080C69D8 + .align 2, 0 +_080C69AC: .4byte gUnknown_3005338 +_080C69B0: .4byte gUnknown_3005334 +_080C69B4: .4byte gUnknown_3005344 +_080C69B8: .4byte gUnknown_300534C +_080C69BC: .4byte gUnknown_3005330 +_080C69C0: .4byte gUnknown_3005340 +_080C69C4: .4byte gUnknown_3005354 +_080C69C8: + adds r0, r4, 0 + str r2, [sp] + bl sub_80C6CAC + ldrh r1, [r6] + adds r0, r1 + strh r0, [r4] + ldr r2, [sp] +_080C69D8: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C6A00 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C699E +_080C69E8: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6A04 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C696E +_080C69F4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6A00: .4byte gUnknown_3005340 +_080C6A04: .4byte gUnknown_3005338 + thumb_func_end sub_80C6958 + + thumb_func_start sub_80C6A08 +sub_80C6A08: @ 80C6A08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C6A5C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C6AA4 + ldr r0, _080C6A60 @ =gUnknown_3005334 + mov r8, r0 +_080C6A1E: + ldr r0, _080C6A64 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C6A68 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C6A6C @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + ldr r0, _080C6A70 @ =gUnknown_3005340 + adds r7, r2, 0x1 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C6A98 + ldr r6, _080C6A74 @ =gUnknown_3005354 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C6A4E: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + beq _080C6A78 + ldrh r0, [r6] + strh r0, [r4] + b _080C6A88 + .align 2, 0 +_080C6A5C: .4byte gUnknown_3005338 +_080C6A60: .4byte gUnknown_3005334 +_080C6A64: .4byte gUnknown_3005344 +_080C6A68: .4byte gUnknown_300534C +_080C6A6C: .4byte gUnknown_3005330 +_080C6A70: .4byte gUnknown_3005340 +_080C6A74: .4byte gUnknown_3005354 +_080C6A78: + adds r0, r4, 0 + str r2, [sp] + bl sub_80C6CE0 + ldrh r1, [r6] + adds r0, r1 + strh r0, [r4] + ldr r2, [sp] +_080C6A88: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C6AB0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C6A4E +_080C6A98: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6AB4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C6A1E +_080C6AA4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6AB0: .4byte gUnknown_3005340 +_080C6AB4: .4byte gUnknown_3005338 + thumb_func_end sub_80C6A08 + + thumb_func_start sub_80C6AB8 +sub_80C6AB8: @ 80C6AB8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C6B0C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C6B54 + ldr r0, _080C6B10 @ =gUnknown_3005334 + mov r8, r0 +_080C6ACE: + ldr r0, _080C6B14 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C6B18 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C6B1C @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + ldr r0, _080C6B20 @ =gUnknown_3005340 + adds r7, r2, 0x1 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C6B48 + ldr r6, _080C6B24 @ =gUnknown_3005354 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C6AFE: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + beq _080C6B28 + ldrh r0, [r6] + strh r0, [r4] + b _080C6B38 + .align 2, 0 +_080C6B0C: .4byte gUnknown_3005338 +_080C6B10: .4byte gUnknown_3005334 +_080C6B14: .4byte gUnknown_3005344 +_080C6B18: .4byte gUnknown_300534C +_080C6B1C: .4byte gUnknown_3005330 +_080C6B20: .4byte gUnknown_3005340 +_080C6B24: .4byte gUnknown_3005354 +_080C6B28: + adds r0, r4, 0 + str r2, [sp] + bl sub_80C6BDC + ldrh r1, [r6] + adds r0, r1 + strh r0, [r4] + ldr r2, [sp] +_080C6B38: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C6B60 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C6AFE +_080C6B48: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6B64 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C6ACE +_080C6B54: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6B60: .4byte gUnknown_3005340 +_080C6B64: .4byte gUnknown_3005338 + thumb_func_end sub_80C6AB8 + + thumb_func_start sub_80C6B68 +sub_80C6B68: @ 80C6B68 + push {r4,lr} + ldrh r0, [r0] + movs r1, 0x1F + movs r4, 0x1F + ands r4, r0 + lsls r0, 16 + lsrs r3, r0, 21 + ands r3, r1 + lsrs r2, r0, 26 + ands r2, r1 + movs r1, 0x3 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6B8C + movs r0, 0x1C + ands r0, r4 + adds r4, r0, 0x4 +_080C6B8C: + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6B9A + movs r0, 0x1C + ands r0, r3 + adds r3, r0, 0x4 +_080C6B9A: + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6BA8 + movs r0, 0x1C + ands r0, r2 + adds r2, r0, 0x4 +_080C6BA8: + cmp r4, 0x5 + bhi _080C6BAE + movs r4, 0x6 +_080C6BAE: + cmp r4, 0x1E + bls _080C6BB4 + movs r4, 0x1E +_080C6BB4: + cmp r3, 0x5 + bhi _080C6BBA + movs r3, 0x6 +_080C6BBA: + cmp r3, 0x1E + bls _080C6BC0 + movs r3, 0x1E +_080C6BC0: + cmp r2, 0x5 + bhi _080C6BC6 + movs r2, 0x6 +_080C6BC6: + cmp r2, 0x1E + bls _080C6BCC + movs r2, 0x1E +_080C6BCC: + lsls r0, r2, 10 + lsls r1, r3, 5 + orrs r0, r1 + orrs r4, r0 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C6B68 + + thumb_func_start sub_80C6BDC +sub_80C6BDC: @ 80C6BDC + push {lr} + ldrh r0, [r0] + movs r1, 0x1F + movs r3, 0x1F + ands r3, r0 + lsls r0, 16 + lsrs r2, r0, 21 + ands r2, r1 + lsrs r0, 26 + ands r0, r1 + cmp r3, 0xB + bhi _080C6C00 + cmp r2, 0xA + bhi _080C6C00 + cmp r0, 0xA + bhi _080C6C00 + movs r0, 0x1 + b _080C6CA6 +_080C6C00: + cmp r3, 0x13 + bls _080C6C24 + cmp r2, 0x13 + bls _080C6C0C + cmp r0, 0x13 + bhi _080C6C30 +_080C6C0C: + cmp r3, 0x13 + bls _080C6C24 + cmp r2, 0x13 + bls _080C6C1A + cmp r0, 0xE + bhi _080C6C30 + b _080C6C68 +_080C6C1A: + cmp r0, 0x13 + bls _080C6C24 + cmp r2, 0xE + bhi _080C6C30 + b _080C6C44 +_080C6C24: + cmp r2, 0x13 + bls _080C6C34 + cmp r0, 0x13 + bls _080C6C34 + cmp r3, 0xE + bls _080C6C8C +_080C6C30: + movs r0, 0x2 + b _080C6CA6 +_080C6C34: + cmp r3, 0x13 + bls _080C6C58 + cmp r2, 0xB + bls _080C6C4C + cmp r0, 0xB + bls _080C6C48 + cmp r2, r0 + bcs _080C6C68 +_080C6C44: + movs r0, 0x8 + b _080C6CA6 +_080C6C48: + movs r0, 0xA + b _080C6CA6 +_080C6C4C: + cmp r0, 0xB + bls _080C6C54 + movs r0, 0xD + b _080C6CA6 +_080C6C54: + movs r0, 0x4 + b _080C6CA6 +_080C6C58: + cmp r2, 0x13 + bls _080C6C7C + cmp r3, 0xB + bls _080C6C70 + cmp r0, 0xB + bls _080C6C6C + cmp r3, r0 + bcc _080C6C8C +_080C6C68: + movs r0, 0x7 + b _080C6CA6 +_080C6C6C: + movs r0, 0xB + b _080C6CA6 +_080C6C70: + cmp r0, 0xB + bls _080C6C78 + movs r0, 0xE + b _080C6CA6 +_080C6C78: + movs r0, 0x5 + b _080C6CA6 +_080C6C7C: + cmp r0, 0x13 + bls _080C6CA4 + cmp r3, 0xB + bls _080C6C90 + cmp r2, 0xB + bls _080C6C98 + cmp r3, r2 + bcs _080C6C44 +_080C6C8C: + movs r0, 0x9 + b _080C6CA6 +_080C6C90: + cmp r2, 0xB + bls _080C6C98 + movs r0, 0xC + b _080C6CA6 +_080C6C98: + cmp r0, 0xB + bls _080C6CA0 + movs r0, 0xF + b _080C6CA6 +_080C6CA0: + movs r0, 0x6 + b _080C6CA6 +_080C6CA4: + movs r0, 0x3 +_080C6CA6: + pop {r1} + bx r1 + thumb_func_end sub_80C6BDC + + thumb_func_start sub_80C6CAC +sub_80C6CAC: @ 80C6CAC + push {lr} + ldrh r1, [r0] + movs r3, 0x1F + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r2, r1, 21 + ands r2, r3 + lsrs r1, 26 + ands r1, r3 + adds r0, r2 + adds r0, r1 + movs r1, 0x3 + bl __divsi3 + movs r1, 0x1E + ands r0, r1 + lsls r0, 16 + cmp r0, 0 + beq _080C6CD8 + lsrs r0, 17 + b _080C6CDA +_080C6CD8: + movs r0, 0x1 +_080C6CDA: + pop {r1} + bx r1 + thumb_func_end sub_80C6CAC + + thumb_func_start sub_80C6CE0 +sub_80C6CE0: @ 80C6CE0 + push {lr} + ldrh r1, [r0] + movs r3, 0x1F + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r2, r1, 21 + ands r2, r3 + lsrs r1, 26 + ands r1, r3 + adds r0, r2 + adds r0, r1 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80C6CE0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/reset_save_heap.s b/asm/reset_save_heap.s new file mode 100644 index 000000000..4de01a3d0 --- /dev/null +++ b/asm/reset_save_heap.s @@ -0,0 +1,68 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8079B7C +sub_8079B7C: @ 8079B7C + push {r4,r5,lr} + ldr r5, _08079BEC @ =0x04000208 + ldrh r4, [r5] + movs r0, 0 + strh r0, [r5] + movs r0, 0x1 + bl RegisterRamReset + movs r0, 0 + movs r1, 0x80 + bl sub_8000B14 + strh r4, [r5] + ldr r1, _08079BF0 @ =gUnknown_30030F0 + ldr r0, _08079BF4 @ =0x00000439 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + bl sub_804C058 + bl sub_8054A28 + bl sub_80D9750 + movs r0, 0 + bl sub_80DA4FC + ldr r0, _08079BF8 @ =gUnknown_30053A0 + ldrh r0, [r0] + cmp r0, 0 + beq _08079BC4 + cmp r0, 0x2 + bne _08079BC8 +_08079BC4: + bl sub_8054A18 +_08079BC8: + ldr r0, _08079BFC @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x15] + lsls r0, 31 + lsrs r0, 31 + bl SetPokemonCryStereo + ldr r0, _08079C00 @ =gHeap + movs r1, 0xE0 + lsls r1, 9 + bl sub_8002B80 + ldr r0, _08079C04 @ =sub_8056938 + bl sub_8000544 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08079BEC: .4byte 0x04000208 +_08079BF0: .4byte gUnknown_30030F0 +_08079BF4: .4byte 0x00000439 +_08079BF8: .4byte gUnknown_30053A0 +_08079BFC: .4byte gUnknown_300500C +_08079C00: .4byte gHeap +_08079C04: .4byte sub_8056938 + thumb_func_end sub_8079B7C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s new file mode 100644 index 000000000..60d4510d4 --- /dev/null +++ b/asm/reshow_battle_screen.s @@ -0,0 +1,1190 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_44 +nullsub_44: @ 8077760 + bx lr + thumb_func_end nullsub_44 + + thumb_func_start sub_8077764 +sub_8077764: @ 8077764 + push {lr} + ldr r2, _080777B0 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + movs r0, 0 + bl sub_8000700 + movs r0, 0x4C + movs r1, 0 + bl sub_8000A38 + ldr r0, _080777B4 @ =gUnknown_2023FC4 + adds r2, r0, 0 + adds r2, 0x21 + movs r1, 0 + strb r1, [r2] + adds r0, 0x22 + strb r1, [r0] + ldr r0, _080777B8 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080777DA + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080777C4 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080777BC + movs r0, 0x19 + bl sub_812B1F0 + b _080777DA + .align 2, 0 +_080777B0: .4byte gUnknown_2037AB8 +_080777B4: .4byte gUnknown_2023FC4 +_080777B8: .4byte gUnknown_2022B4C +_080777BC: + movs r0, 0x18 + bl sub_812B1F0 + b _080777DA +_080777C4: + movs r0, 0x80 + ands r1, r0 + cmp r1, 0 + beq _080777D4 + movs r0, 0x1A + bl sub_812B1F0 + b _080777DA +_080777D4: + movs r0, 0x17 + bl sub_812B1F0 +_080777DA: + ldr r0, _080777E4 @ =sub_80777E8 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080777E4: .4byte sub_80777E8 + thumb_func_end sub_8077764 + + thumb_func_start sub_80777E8 +sub_80777E8: @ 80777E8 + push {r4-r7,lr} + sub sp, 0x8 + ldr r0, _08077804 @ =gUnknown_2023FC4 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x14 + bls _080777F8 + b _08077A8A +_080777F8: + lsls r0, 2 + ldr r1, _08077808 @ =_0807780C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08077804: .4byte gUnknown_2023FC4 +_08077808: .4byte _0807780C + .align 2, 0 +_0807780C: + .4byte _08077860 + .4byte _08077866 + .4byte _080778E8 + .4byte _08077900 + .4byte _08077906 + .4byte _08077918 + .4byte _0807791E + .4byte _08077946 + .4byte _0807794A + .4byte _0807794E + .4byte _08077952 + .4byte _08077970 + .4byte _08077978 + .4byte _08077980 + .4byte _08077988 + .4byte _08077990 + .4byte _08077998 + .4byte _080779A0 + .4byte _080779A8 + .4byte _080779B0 + .4byte _08077A5C +_08077860: + bl sub_8006B10 + b _08077A8A +_08077866: + movs r0, 0 + bl sub_80006F4 + bl sub_8087EA4 + bl sub_800F324 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0 + bl sub_80019E4 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + bl sub_8070528 + ldr r0, _080778C8 @ =gUnknown_2022974 + movs r1, 0 + strh r1, [r0] + ldr r0, _080778CC @ =gUnknown_2022976 + strh r1, [r0] + ldr r0, _080778D0 @ =gUnknown_2022978 + strh r1, [r0] + ldr r0, _080778D4 @ =gUnknown_202297A + strh r1, [r0] + ldr r0, _080778D8 @ =gUnknown_202297C + strh r1, [r0] + ldr r0, _080778DC @ =gUnknown_202297E + strh r1, [r0] + ldr r0, _080778E0 @ =gUnknown_2022980 + strh r1, [r0] + ldr r0, _080778E4 @ =gUnknown_2022982 + strh r1, [r0] + b _08077A8A + .align 2, 0 +_080778C8: .4byte gUnknown_2022974 +_080778CC: .4byte gUnknown_2022976 +_080778D0: .4byte gUnknown_2022978 +_080778D4: .4byte gUnknown_202297A +_080778D8: .4byte gUnknown_202297C +_080778DC: .4byte gUnknown_202297E +_080778E0: .4byte gUnknown_2022980 +_080778E4: .4byte gUnknown_2022982 +_080778E8: + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _080778FC @ =0x01006000 + add r0, sp, 0x4 + bl CpuFastSet + b _08077A8A + .align 2, 0 +_080778FC: .4byte 0x01006000 +_08077900: + bl sub_800F420 + b _08077A8A +_08077906: + bl sub_80088F0 + ldr r1, _08077914 @ =gUnknown_3003E58 + movs r0, 0x4 + strb r0, [r1] + b _08077A8A + .align 2, 0 +_08077914: .4byte gUnknown_3003E58 +_08077918: + bl sub_8034AFC + b _08077A8A +_0807791E: + ldr r5, _08077938 @ =gUnknown_2023FC4 + adds r4, r5, 0 + adds r4, 0x22 + ldrb r0, [r4] + bl sub_8034838 + lsls r0, 24 + cmp r0, 0 + beq _0807793C + movs r0, 0 + strb r0, [r4] + b _08077A8A + .align 2, 0 +_08077938: .4byte gUnknown_2023FC4 +_0807793C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + adds r1, r5, 0 + b _08077962 +_08077946: + movs r0, 0 + b _08077954 +_0807794A: + movs r0, 0x1 + b _08077954 +_0807794E: + movs r0, 0x2 + b _08077954 +_08077952: + movs r0, 0x3 +_08077954: + bl sub_8077B0C + lsls r0, 24 + cmp r0, 0 + beq _08077960 + b _08077A8A +_08077960: + ldr r1, _0807796C @ =gUnknown_2023FC4 +_08077962: + adds r1, 0x21 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + b _08077A8A + .align 2, 0 +_0807796C: .4byte gUnknown_2023FC4 +_08077970: + movs r0, 0 + bl sub_8077C38 + b _08077A8A +_08077978: + movs r0, 0x1 + bl sub_8077C38 + b _08077A8A +_08077980: + movs r0, 0x2 + bl sub_8077C38 + b _08077A8A +_08077988: + movs r0, 0x3 + bl sub_8077C38 + b _08077A8A +_08077990: + movs r0, 0 + bl sub_8077FE4 + b _08077A8A +_08077998: + movs r0, 0x1 + bl sub_8077FE4 + b _08077A8A +_080779A0: + movs r0, 0x2 + bl sub_8077FE4 + b _08077A8A +_080779A8: + movs r0, 0x3 + bl sub_8077FE4 + b _08077A8A +_080779B0: + bl sub_8035538 + movs r0, 0x1 + bl sub_80751E8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r7, _08077A44 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r7 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08077A48 @ =gUnknown_202402C + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08077A14 + movs r0, 0x3 + bl sub_80751E8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 1 + adds r0, r7 + ldrh r0, [r0] + muls r0, r6 + adds r0, r5 + movs r1, 0xB + bl sub_803FBE8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_8035708 +_08077A14: + ldr r1, _08077A4C @ =gUnknown_2023FF8 + ldr r0, _08077A50 @ =gUnknown_2024004 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + bl sub_8030A54 + ldr r0, _08077A54 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08077A8A + ldr r0, _08077A58 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08077A8A + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _08077A8A + .align 2, 0 +_08077A44: .4byte gUnknown_2023BCE +_08077A48: .4byte gUnknown_202402C +_08077A4C: .4byte gUnknown_2023FF8 +_08077A50: .4byte gUnknown_2024004 +_08077A54: .4byte gUnknown_3003F3C +_08077A58: .4byte gUnknown_3003F64 +_08077A5C: + ldr r0, _08077A9C @ =sub_80116F4 + bl sub_80006F4 + bl sub_8077AAC + movs r0, 0x1 + str r0, [sp] + movs r0, 0xFF + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8071264 + ldr r2, _08077AA0 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + ldr r0, _08077AA4 @ =sub_8011100 + bl sub_8000544 + bl sub_80357C8 +_08077A8A: + ldr r1, _08077AA8 @ =gUnknown_2023FC4 + adds r1, 0x21 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077A9C: .4byte sub_80116F4 +_08077AA0: .4byte gUnknown_2037AB8 +_08077AA4: .4byte sub_8011100 +_08077AA8: .4byte gUnknown_2023FC4 + thumb_func_end sub_80777E8 + + thumb_func_start sub_8077AAC +sub_8077AAC: @ 8077AAC + push {lr} + movs r0, 0x1 + bl sub_8000B68 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x46 + movs r1, 0 + bl sub_8000A38 + ldr r1, _08077B08 @ =0x0000b040 + movs r0, 0 + bl sub_8000AF4 + pop {r0} + bx r0 + .align 2, 0 +_08077B08: .4byte 0x0000b040 + thumb_func_end sub_8077AAC + + thumb_func_start sub_8077B0C +sub_8077B0C: @ 8077B0C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08077B54 @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r4, r0 + bcc _08077B1C + b _08077C2C +_08077B1C: + adds r0, r4, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08077BA6 + ldr r0, _08077B58 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xA0 + lsls r1, 8 + ands r0, r1 + movs r1, 0x80 + lsls r1, 8 + cmp r0, r1 + bne _08077B64 + ldr r1, _08077B5C @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08077B60 @ =gUnknown_202402C + adds r0, r1 + adds r1, r4, 0 + bl sub_8034658 + b _08077C24 + .align 2, 0 +_08077B54: .4byte gUnknown_2023BCC +_08077B58: .4byte gUnknown_2022B4C +_08077B5C: .4byte gUnknown_2023BCE +_08077B60: .4byte gUnknown_202402C +_08077B64: + ldr r0, _08077B90 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r4, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08077B9C + ldr r1, _08077B94 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08077B98 @ =gUnknown_202402C + adds r0, r1 + adds r1, r4, 0 + bl sub_8034320 + b _08077C24 + .align 2, 0 +_08077B90: .4byte gUnknown_2024018 +_08077B94: .4byte gUnknown_2023BCE +_08077B98: .4byte gUnknown_202402C +_08077B9C: + adds r0, r4, 0 + movs r1, 0 + bl sub_80350BC + b _08077C24 +_08077BA6: + ldr r0, _08077BC0 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0x80 + ands r1, r2 + cmp r1, 0 + beq _08077BC8 + cmp r4, 0 + bne _08077BC8 + ldr r0, _08077BC4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + b _08077BDA + .align 2, 0 +_08077BC0: .4byte gUnknown_2022B4C +_08077BC4: .4byte gUnknown_300500C +_08077BC8: + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _08077BE2 + cmp r4, 0 + bne _08077BE2 + movs r0, 0x5 +_08077BDA: + movs r1, 0 + bl sub_8034750 + b _08077C24 +_08077BE2: + ldr r0, _08077C10 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r4, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08077C1C + ldr r1, _08077C14 @ =gUnknown_2023BCE + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08077C18 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + bl sub_8034498 + b _08077C24 + .align 2, 0 +_08077C10: .4byte gUnknown_2024018 +_08077C14: .4byte gUnknown_2023BCE +_08077C18: .4byte gUnknown_2024284 +_08077C1C: + adds r0, r4, 0 + movs r1, 0 + bl sub_80350BC +_08077C24: + ldr r0, _08077C34 @ =gUnknown_2023FC4 + adds r0, 0x22 + movs r1, 0 + strb r1, [r0] +_08077C2C: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08077C34: .4byte gUnknown_2023FC4 + thumb_func_end sub_8077B0C + + thumb_func_start sub_8077C38 +sub_8077C38: @ 8077C38 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08077C6C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r7, r0 + bcc _08077C50 + b _08077FB4 +_08077C50: + ldr r0, _08077C70 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0xA0 + lsls r1, 8 + ands r0, r1 + movs r1, 0x80 + lsls r1, 8 + cmp r0, r1 + bne _08077C74 + adds r0, r7, 0 + bl sub_8074900 + b _08077C9A + .align 2, 0 +_08077C6C: .4byte gUnknown_2023BCC +_08077C70: .4byte gUnknown_2022B4C +_08077C74: + ldr r0, _08077C90 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r7, 2 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08077C94 + adds r0, r7, 0 + bl sub_80748BC + b _08077C9A + .align 2, 0 +_08077C90: .4byte gUnknown_2024018 +_08077C94: + adds r0, r7, 0 + bl sub_80748A8 +_08077C9A: + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r7, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + bne _08077CAE + b _08077DAC +_08077CAE: + ldr r1, _08077D90 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r6, r0, r1 + ldrh r0, [r6] + movs r1, 0x64 + mov r10, r1 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _08077D94 @ =gUnknown_202402C + mov r9, r1 + add r0, r9 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08077CD2 + b _08077FB4 +_08077CD2: + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F7D4 + ldr r5, _08077D98 @ =gUnknown_20244DC + adds r0, r7, 0 + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl sub_8006F8C + ldr r4, _08077D9C @ =gUnknown_2023D44 + adds r4, r7, r4 + strb r0, [r4] + ldr r5, _08077DA0 @ =gUnknown_202063C + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r7, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08077DA4 @ =nullsub_8 + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r7, [r0, 0x2E] + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl sub_803FBE8 + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + strh r0, [r1, 0x32] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08077DA8 @ =gUnknown_2024024 + adds r1, r7, r1 + ldrb r1, [r1] + bl sub_800838C + b _08077F84 + .align 2, 0 +_08077D90: .4byte gUnknown_2023BCE +_08077D94: .4byte gUnknown_202402C +_08077D98: .4byte gUnknown_20244DC +_08077D9C: .4byte gUnknown_2023D44 +_08077DA0: .4byte gUnknown_202063C +_08077DA4: .4byte nullsub_8 +_08077DA8: .4byte gUnknown_2024024 +_08077DAC: + ldr r0, _08077E00 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0x80 + ands r1, r2 + cmp r1, 0 + beq _08077E10 + cmp r7, 0 + bne _08077E10 + ldr r5, _08077E04 @ =gUnknown_300500C + ldr r0, [r5] + ldrb r4, [r0, 0x8] + movs r0, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F864 + ldr r6, _08077E08 @ =gUnknown_20244DC + ldr r1, _08077E0C @ =gUnknown_8239F8C + ldr r0, [r5] + ldrb r0, [r0, 0x8] + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r0, 0xA0 + lsls r0, 15 + adds r4, r0 + asrs r4, 16 + movs r0, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + b _08077E54 + .align 2, 0 +_08077E00: .4byte gUnknown_2022B4C +_08077E04: .4byte gUnknown_300500C +_08077E08: .4byte gUnknown_20244DC +_08077E0C: .4byte gUnknown_8239F8C +_08077E10: + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _08077EA8 + cmp r7, 0 + bne _08077EA8 + movs r0, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_803F864 + ldr r5, _08077E94 @ =gUnknown_20244DC + ldr r0, _08077E98 @ =gUnknown_8239F8C + ldrb r0, [r0, 0x14] + movs r4, 0x8 + subs r4, r0 + lsls r4, 18 + movs r1, 0xA0 + lsls r1, 15 + adds r4, r1 + asrs r4, 16 + movs r0, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 +_08077E54: + movs r1, 0x50 + adds r2, r4, 0 + bl sub_8006F8C + ldr r3, _08077E9C @ =gUnknown_2023D44 + strb r0, [r3] + ldr r4, _08077EA0 @ =gUnknown_202063C + ldrb r0, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + strb r0, [r1, 0x5] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08077EA4 @ =nullsub_8 + str r1, [r0] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r7, [r0, 0x2E] + b _08077F84 + .align 2, 0 +_08077E94: .4byte gUnknown_20244DC +_08077E98: .4byte gUnknown_8239F8C +_08077E9C: .4byte gUnknown_2023D44 +_08077EA0: .4byte gUnknown_202063C +_08077EA4: .4byte nullsub_8 +_08077EA8: + ldr r1, _08077FC4 @ =gUnknown_2023BCE + lsls r0, r7, 1 + adds r6, r0, r1 + ldrh r0, [r6] + movs r1, 0x64 + mov r10, r1 + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _08077FC8 @ =gUnknown_2024284 + mov r9, r1 + add r0, r9 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08077FB4 + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + bl sub_80751D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_803F7D4 + ldr r5, _08077FCC @ =gUnknown_20244DC + adds r0, r7, 0 + movs r1, 0x2 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + bl sub_807685C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl sub_8006F8C + ldr r4, _08077FD0 @ =gUnknown_2023D44 + adds r4, r7, r4 + strb r0, [r4] + ldr r5, _08077FD4 @ =gUnknown_202063C + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + lsls r3, r7, 4 + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08077FD8 @ =nullsub_8 + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r7, [r0, 0x2E] + ldrh r0, [r6] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0xB + bl sub_803FBE8 + ldrb r2, [r4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r5 + strh r0, [r1, 0x32] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08077FDC @ =gUnknown_2024024 + adds r1, r7, r1 + ldrb r1, [r1] + bl sub_800838C +_08077F84: + ldr r1, _08077FD4 @ =gUnknown_202063C + ldr r0, _08077FD0 @ =gUnknown_2023D44 + adds r0, r7, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldr r0, _08077FE0 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r7, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 31 + adds r2, 0x3E + lsrs r1, 31 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_08077FB4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077FC4: .4byte gUnknown_2023BCE +_08077FC8: .4byte gUnknown_2024284 +_08077FCC: .4byte gUnknown_20244DC +_08077FD0: .4byte gUnknown_2023D44 +_08077FD4: .4byte gUnknown_202063C +_08077FD8: .4byte nullsub_8 +_08077FDC: .4byte gUnknown_2024024 +_08077FE0: .4byte gUnknown_2024018 + thumb_func_end sub_8077C38 + + thumb_func_start sub_8077FE4 +sub_8077FE4: @ 8077FE4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0807800C @ =gUnknown_2023BCC + ldrb r0, [r0] + cmp r5, r0 + bcc _08077FF4 + b _08078166 +_08077FF4: + ldr r0, _08078010 @ =gUnknown_2022B4C + ldr r1, [r0] + movs r2, 0x80 + ands r1, r2 + cmp r1, 0 + beq _08078014 + cmp r5, 0 + bne _08078014 + bl sub_8048008 + b _0807802C + .align 2, 0 +_0807800C: .4byte gUnknown_2023BCC +_08078010: .4byte gUnknown_2022B4C +_08078014: + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _08078026 + cmp r5, 0 + bne _08078026 + b _08078166 +_08078026: + adds r0, r5, 0 + bl sub_8047CE0 +_0807802C: + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08078068 @ =gUnknown_3004FF0 + adds r4, r5, r0 + strb r6, [r4] + adds r0, r5, 0 + bl sub_804831C + adds r0, r6, 0 + bl sub_80481D4 + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _08078074 + ldrb r0, [r4] + ldr r1, _0807806C @ =gUnknown_2023BCE + lsls r4, r5, 1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _08078070 @ =gUnknown_202402C + adds r1, r2 + movs r2, 0 + bl sub_8049D98 + b _080780C0 + .align 2, 0 +_08078068: .4byte gUnknown_3004FF0 +_0807806C: .4byte gUnknown_2023BCE +_08078070: .4byte gUnknown_202402C +_08078074: + ldr r0, _0807809C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080780A8 + ldrb r0, [r4] + ldr r1, _080780A0 @ =gUnknown_2023BCE + lsls r4, r5, 1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080780A4 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0xA + bl sub_8049D98 + b _080780C0 + .align 2, 0 +_0807809C: .4byte gUnknown_2022B4C +_080780A0: .4byte gUnknown_2023BCE +_080780A4: .4byte gUnknown_2024284 +_080780A8: + ldrb r0, [r4] + ldr r1, _080780EC @ =gUnknown_2023BCE + lsls r4, r5, 1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, 0x64 + muls r1, r2 + ldr r2, _080780F0 @ =gUnknown_2024284 + adds r1, r2 + movs r2, 0 + bl sub_8049D98 +_080780C0: + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080780DC + adds r0, r5, 0 + bl sub_80751D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080780F8 +_080780DC: + ldr r0, _080780F4 @ =gUnknown_3004FF0 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0x1 + bl nullsub_21 + b _08078104 + .align 2, 0 +_080780EC: .4byte gUnknown_2023BCE +_080780F0: .4byte gUnknown_2024284 +_080780F4: .4byte gUnknown_3004FF0 +_080780F8: + ldr r0, _08078130 @ =gUnknown_3004FF0 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, 0 + bl nullsub_21 +_08078104: + adds r0, r5, 0 + bl sub_80751C4 + lsls r0, 24 + cmp r0, 0 + beq _0807813C + ldr r0, _08078134 @ =gUnknown_2023BCE + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08078138 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08078166 + adds r0, r6, 0 + bl sub_8048188 + b _08078166 + .align 2, 0 +_08078130: .4byte gUnknown_3004FF0 +_08078134: .4byte gUnknown_2023BCE +_08078138: .4byte gUnknown_202402C +_0807813C: + ldr r0, _0807816C @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08078166 + ldr r0, _08078170 @ =gUnknown_2023BCE + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08078174 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + bne _08078166 + adds r0, r6, 0 + bl sub_8048188 +_08078166: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807816C: .4byte gUnknown_2022B4C +_08078170: .4byte gUnknown_2023BCE +_08078174: .4byte gUnknown_2024284 + thumb_func_end sub_8077FE4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/roamer.s b/asm/roamer.s new file mode 100644 index 000000000..9e3c6625f --- /dev/null +++ b/asm/roamer.s @@ -0,0 +1,531 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8141C54 +sub_8141C54: @ 8141C54 + push {lr} + ldr r0, _08141C84 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08141C88 @ =0x000030d0 + adds r0, r1 + movs r1, 0 + movs r2, 0x1C + bl memset + ldr r1, _08141C8C @ =gUnknown_203F3AE + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + movs r1, 0 + movs r2, 0 + ldr r0, _08141C90 @ =gUnknown_203F3A8 +_08141C74: + strb r2, [r0] + strb r2, [r0, 0x1] + adds r0, 0x2 + adds r1, 0x1 + cmp r1, 0x2 + bls _08141C74 + pop {r0} + bx r0 + .align 2, 0 +_08141C84: .4byte gUnknown_3005008 +_08141C88: .4byte 0x000030d0 +_08141C8C: .4byte gUnknown_203F3AE +_08141C90: .4byte gUnknown_203F3A8 + thumb_func_end sub_8141C54 + + thumb_func_start sub_8141C94 +sub_8141C94: @ 8141C94 + push {r4-r7,lr} + sub sp, 0x10 + ldr r7, _08141CB0 @ =gUnknown_202402C + bl sub_80CBDB0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _08141CB4 + cmp r0, 0x4 + beq _08141CB8 + movs r6, 0xF3 + b _08141CBA + .align 2, 0 +_08141CB0: .4byte gUnknown_202402C +_08141CB4: + movs r6, 0xF4 + b _08141CBA +_08141CB8: + movs r6, 0xF5 +_08141CBA: + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r7, 0 + adds r1, r6, 0 + movs r2, 0x32 + movs r3, 0x20 + bl sub_803DA54 + ldr r5, _08141D8C @ =gUnknown_3005008 + ldr r1, [r5] + ldr r4, _08141D90 @ =0x000030d0 + adds r1, r4 + movs r2, 0 + strh r6, [r1, 0x8] + movs r0, 0x32 + strb r0, [r1, 0xC] + ldr r0, [r5] + adds r0, r4 + strb r2, [r0, 0xD] + ldr r0, [r5] + adds r0, r4 + movs r1, 0x1 + strb r1, [r0, 0x13] + adds r0, r7, 0 + movs r1, 0x42 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + str r0, [r1] + adds r0, r7, 0 + movs r1, 0 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + str r0, [r1, 0x4] + adds r0, r7, 0 + movs r1, 0x3A + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strh r0, [r1, 0xA] + adds r0, r7, 0 + movs r1, 0x16 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1, 0xE] + adds r0, r7, 0 + movs r1, 0x17 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1, 0xF] + adds r0, r7, 0 + movs r1, 0x18 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1, 0x10] + adds r0, r7, 0 + movs r1, 0x21 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1, 0x11] + adds r0, r7, 0 + movs r1, 0x2F + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1, 0x12] + ldr r5, _08141D94 @ =gUnknown_203F3AE + movs r0, 0x3 + strb r0, [r5] + bl sub_8044EC8 + ldr r4, _08141D98 @ =gUnknown_8466C58 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 3 + subs r1, r0 + adds r1, r4 + ldrb r0, [r1] + strb r0, [r5, 0x1] + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08141D8C: .4byte gUnknown_3005008 +_08141D90: .4byte 0x000030d0 +_08141D94: .4byte gUnknown_203F3AE +_08141D98: .4byte gUnknown_8466C58 + thumb_func_end sub_8141C94 + + thumb_func_start sub_8141D9C +sub_8141D9C: @ 8141D9C + push {lr} + bl sub_8141C54 + bl sub_8141C94 + pop {r0} + bx r0 + thumb_func_end sub_8141D9C + + thumb_func_start sub_8141DAC +sub_8141DAC: @ 8141DAC + ldr r0, _08141DCC @ =gUnknown_203F3A8 + ldrb r1, [r0, 0x2] + strb r1, [r0, 0x4] + ldrb r1, [r0, 0x3] + strb r1, [r0, 0x5] + ldrb r1, [r0] + strb r1, [r0, 0x2] + ldrb r1, [r0, 0x1] + strb r1, [r0, 0x3] + ldr r1, _08141DD0 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x4] + strb r1, [r0] + ldrb r1, [r2, 0x5] + strb r1, [r0, 0x1] + bx lr + .align 2, 0 +_08141DCC: .4byte gUnknown_203F3A8 +_08141DD0: .4byte gUnknown_3005008 + thumb_func_end sub_8141DAC + + thumb_func_start sub_8141DD4 +sub_8141DD4: @ 8141DD4 + push {r4,r5,lr} + ldr r0, _08141E18 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08141E1C @ =0x000030d0 + adds r0, r1 + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _08141E10 + ldr r1, _08141E20 @ =gUnknown_203F3AE + movs r0, 0x3 + strb r0, [r1] + ldr r5, _08141E24 @ =gUnknown_8466C58 + adds r4, r1, 0 +_08141DEE: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 3 + subs r1, r0 + adds r1, r5 + ldrb r1, [r1] + ldrb r0, [r4, 0x1] + cmp r0, r1 + beq _08141DEE + strb r1, [r4, 0x1] +_08141E10: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08141E18: .4byte gUnknown_3005008 +_08141E1C: .4byte 0x000030d0 +_08141E20: .4byte gUnknown_203F3AE +_08141E24: .4byte gUnknown_8466C58 + thumb_func_end sub_8141DD4 + + thumb_func_start sub_8141E28 +sub_8141E28: @ 8141E28 + push {r4-r7,lr} + movs r4, 0 + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xF0 + lsls r1, 12 + ands r1, r0 + cmp r1, 0 + bne _08141E42 + bl sub_8141DD4 + b _08141EB2 +_08141E42: + ldr r0, _08141E94 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08141E98 @ =0x000030d0 + adds r0, r1 + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _08141EB2 + ldr r7, _08141E9C @ =gUnknown_203F3AE +_08141E52: + ldr r3, _08141EA0 @ =gUnknown_8466C58 + lsls r0, r4, 3 + subs r2, r0, r4 + adds r1, r2, r3 + ldrb r0, [r7, 0x1] + ldrb r1, [r1] + cmp r0, r1 + bne _08141EA8 + adds r6, r3, 0 + adds r5, r2, 0x1 + ldr r4, _08141EA4 @ =gUnknown_203F3A8 +_08141E68: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, r5 + adds r0, r6 + ldrb r1, [r0] + ldrb r0, [r4, 0x4] + cmp r0, 0x3 + bne _08141E8C + ldrb r0, [r4, 0x5] + cmp r0, r1 + beq _08141E68 +_08141E8C: + cmp r1, 0xFF + beq _08141E68 + strb r1, [r7, 0x1] + b _08141EB2 + .align 2, 0 +_08141E94: .4byte gUnknown_3005008 +_08141E98: .4byte 0x000030d0 +_08141E9C: .4byte gUnknown_203F3AE +_08141EA0: .4byte gUnknown_8466C58 +_08141EA4: .4byte gUnknown_203F3A8 +_08141EA8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x18 + bls _08141E52 +_08141EB2: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8141E28 + + thumb_func_start sub_8141EB8 +sub_8141EB8: @ 8141EB8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08141EE4 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r3, _08141EE8 @ =0x000030d0 + adds r0, r3 + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _08141EF0 + ldr r0, _08141EEC @ =gUnknown_203F3AE + ldrb r3, [r0] + cmp r2, r3 + bne _08141EF0 + ldrb r0, [r0, 0x1] + cmp r1, r0 + bne _08141EF0 + movs r0, 0x1 + b _08141EF2 + .align 2, 0 +_08141EE4: .4byte gUnknown_3005008 +_08141EE8: .4byte 0x000030d0 +_08141EEC: .4byte gUnknown_203F3AE +_08141EF0: + movs r0, 0 +_08141EF2: + pop {r1} + bx r1 + thumb_func_end sub_8141EB8 + + thumb_func_start sub_8141EF8 +sub_8141EF8: @ 8141EF8 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _08141F84 @ =gUnknown_202402C + bl sub_803DA34 + ldr r4, _08141F88 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r1, _08141F8C @ =0x000030d0 + adds r0, r1 + ldrh r1, [r0, 0x8] + ldrb r2, [r0, 0xC] + ldr r3, [r0] + ldr r0, [r0, 0x4] + str r0, [sp] + adds r0, r5, 0 + bl sub_803DF68 + ldr r2, [r4] + ldr r0, _08141F90 @ =0x000030dd + adds r2, r0 + adds r0, r5, 0 + movs r1, 0x37 + bl sub_804037C + ldr r2, [r4] + ldr r1, _08141F94 @ =0x000030da + adds r2, r1 + adds r0, r5, 0 + movs r1, 0x39 + bl sub_804037C + ldr r2, [r4] + ldr r0, _08141F98 @ =0x000030de + adds r2, r0 + adds r0, r5, 0 + movs r1, 0x16 + bl sub_804037C + ldr r2, [r4] + ldr r1, _08141F9C @ =0x000030df + adds r2, r1 + adds r0, r5, 0 + movs r1, 0x17 + bl sub_804037C + ldr r2, [r4] + ldr r0, _08141FA0 @ =0x000030e0 + adds r2, r0 + adds r0, r5, 0 + movs r1, 0x18 + bl sub_804037C + ldr r2, [r4] + ldr r1, _08141FA4 @ =0x000030e1 + adds r2, r1 + adds r0, r5, 0 + movs r1, 0x21 + bl sub_804037C + ldr r2, [r4] + ldr r0, _08141FA8 @ =0x000030e2 + adds r2, r0 + adds r0, r5, 0 + movs r1, 0x2F + bl sub_804037C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08141F84: .4byte gUnknown_202402C +_08141F88: .4byte gUnknown_3005008 +_08141F8C: .4byte 0x000030d0 +_08141F90: .4byte 0x000030dd +_08141F94: .4byte 0x000030da +_08141F98: .4byte 0x000030de +_08141F9C: .4byte 0x000030df +_08141FA0: .4byte 0x000030e0 +_08141FA4: .4byte 0x000030e1 +_08141FA8: .4byte 0x000030e2 + thumb_func_end sub_8141EF8 + + thumb_func_start sub_8141FAC +sub_8141FAC: @ 8141FAC + push {lr} + ldr r0, _08141FDC @ =gUnknown_3005008 + ldr r1, [r0] + ldrb r0, [r1, 0x4] + ldrb r1, [r1, 0x5] + bl sub_8141EB8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08141FE0 + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + cmp r1, 0 + bne _08141FE0 + bl sub_8141EF8 + movs r0, 0x1 + b _08141FE2 + .align 2, 0 +_08141FDC: .4byte gUnknown_3005008 +_08141FE0: + movs r0, 0 +_08141FE2: + pop {r1} + bx r1 + thumb_func_end sub_8141FAC + + thumb_func_start sub_8141FE8 +sub_8141FE8: @ 8141FE8 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x39 + bl sub_803FBE8 + ldr r5, _08142014 @ =gUnknown_3005008 + ldr r1, [r5] + ldr r4, _08142018 @ =0x000030d0 + adds r1, r4 + strh r0, [r1, 0xA] + adds r0, r6, 0 + movs r1, 0x37 + bl sub_803FBE8 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1, 0xD] + bl sub_8141DD4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08142014: .4byte gUnknown_3005008 +_08142018: .4byte 0x000030d0 + thumb_func_end sub_8141FE8 + + thumb_func_start sub_814201C +sub_814201C: @ 814201C + ldr r0, _0814202C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08142030 @ =0x000030d0 + adds r0, r1 + movs r1, 0 + strb r1, [r0, 0x13] + bx lr + .align 2, 0 +_0814202C: .4byte gUnknown_3005008 +_08142030: .4byte 0x000030d0 + thumb_func_end sub_814201C + + thumb_func_start sub_8142034 +sub_8142034: @ 8142034 + ldr r3, _08142040 @ =gUnknown_203F3AE + ldrb r2, [r3] + strb r2, [r0] + ldrb r0, [r3, 0x1] + strb r0, [r1] + bx lr + .align 2, 0 +_08142040: .4byte gUnknown_203F3AE + thumb_func_end sub_8142034 + + thumb_func_start sub_8142044 +sub_8142044: @ 8142044 + push {lr} + ldr r0, _08142064 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08142068 @ =0x000030d0 + adds r0, r1 + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _08142070 + ldr r1, _0814206C @ =gUnknown_203F3AE + ldrb r0, [r1] + ldrb r1, [r1, 0x1] + bl sub_8055238 + ldrb r0, [r0, 0x14] + b _08142072 + .align 2, 0 +_08142064: .4byte gUnknown_3005008 +_08142068: .4byte 0x000030d0 +_0814206C: .4byte gUnknown_203F3AE +_08142070: + movs r0, 0xC5 +_08142072: + pop {r1} + bx r1 + thumb_func_end sub_8142044 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom6.s b/asm/rom6.s new file mode 100644 index 000000000..299862511 --- /dev/null +++ b/asm/rom6.s @@ -0,0 +1,459 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80C97A8 +sub_80C97A8: @ 80C97A8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _080C97E8 @ =gUnknown_2039A04 + adds r1, r4, 0x2 + adds r0, r4, 0 + bl sub_805C4F4 + bl sub_805C700 + strb r0, [r4, 0x4] + ldrh r0, [r4] + ldrh r1, [r4, 0x2] + ldrb r2, [r4, 0x4] + bl sub_805F894 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C97EC @ =gUnknown_2036E38 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r2, r1, r2 + ldrb r0, [r2, 0x5] + cmp r0, r5 + bne _080C97F4 + ldr r1, _080C97F0 @ =gUnknown_20370D2 + ldrb r0, [r2, 0x8] + strh r0, [r1] + movs r0, 0x1 + b _080C97F6 + .align 2, 0 +_080C97E8: .4byte gUnknown_2039A04 +_080C97EC: .4byte gUnknown_2036E38 +_080C97F0: .4byte gUnknown_20370D2 +_080C97F4: + movs r0, 0 +_080C97F6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80C97A8 + + thumb_func_start sub_80C97FC +sub_80C97FC: @ 80C97FC + push {lr} + ldr r0, _080C9818 @ =gUnknown_2039A04 + adds r1, r0, 0x2 + bl sub_805C4F4 + ldr r0, _080C981C @ =sub_80C9820 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080C9818: .4byte gUnknown_2039A04 +_080C981C: .4byte sub_80C9820 + thumb_func_end sub_80C97FC + + thumb_func_start sub_80C9820 +sub_80C9820: @ 80C9820 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_8069940 + ldr r1, _080C9874 @ =gUnknown_2037078 + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrb r1, [r1, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080C9878 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _080C9856 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080C98A2 +_080C9856: + ldr r0, _080C987C @ =gUnknown_2036DFC + ldrb r0, [r0, 0x17] + cmp r0, 0x5 + bne _080C9888 + movs r0, 0x3B + bl sub_8083444 + ldr r0, _080C9880 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C9884 @ =sub_80C98FC + b _080C98A0 + .align 2, 0 +_080C9874: .4byte gUnknown_2037078 +_080C9878: .4byte gUnknown_2036E38 +_080C987C: .4byte gUnknown_2036DFC +_080C9880: .4byte gUnknown_3005090 +_080C9884: .4byte sub_80C98FC +_080C9888: + bl sub_805CB70 + adds r0, r4, 0 + movs r1, 0x45 + bl sub_8063CA4 + ldr r0, _080C98A8 @ =gUnknown_3005090 + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C98AC @ =sub_80C98B0 +_080C98A0: + str r0, [r1] +_080C98A2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080C98A8: .4byte gUnknown_3005090 +_080C98AC: .4byte sub_80C98B0 + thumb_func_end sub_80C9820 + + thumb_func_start sub_80C98B0 +sub_80C98B0: @ 80C98B0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080C98EC @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080C98F0 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080C98E4 + movs r0, 0x3B + bl sub_8083444 + ldr r0, _080C98F4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080C98F8 @ =sub_80C98FC + str r0, [r1] +_080C98E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C98EC: .4byte gUnknown_2037078 +_080C98F0: .4byte gUnknown_2036E38 +_080C98F4: .4byte gUnknown_3005090 +_080C98F8: .4byte sub_80C98FC + thumb_func_end sub_80C98B0 + + thumb_func_start sub_80C98FC +sub_80C98FC: @ 80C98FC + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x6 + bl sub_808382C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080C9980 + bl sub_805C6C4 + ldr r6, _080C9988 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r6, 0x4] + cmp r0, 0x1 + bne _080C9922 + str r4, [r6, 0x8] +_080C9922: + ldr r1, [r6, 0x4] + cmp r1, 0x2 + bne _080C992C + movs r0, 0x1 + str r0, [r6, 0x8] +_080C992C: + cmp r1, 0x3 + bne _080C9934 + movs r0, 0x2 + str r0, [r6, 0x8] +_080C9934: + cmp r1, 0x4 + bne _080C993C + movs r0, 0x3 + str r0, [r6, 0x8] +_080C993C: + ldr r5, _080C998C @ =gUnknown_2037078 + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080C9990 @ =gUnknown_2036E38 + adds r4, r0 + bl sub_805C9C8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805F060 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080C9994 @ =gUnknown_202063C + adds r0, r1 + ldrb r1, [r6, 0x8] + bl sub_800838C + movs r0, 0x6 + bl sub_80837FC + ldr r1, _080C9998 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _080C999C @ =sub_80C99A0 + str r1, [r0] +_080C9980: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C9988: .4byte gUnknown_20386E0 +_080C998C: .4byte gUnknown_2037078 +_080C9990: .4byte gUnknown_2036E38 +_080C9994: .4byte gUnknown_202063C +_080C9998: .4byte gUnknown_3005090 +_080C999C: .4byte sub_80C99A0 + thumb_func_end sub_80C98FC + + thumb_func_start sub_80C99A0 +sub_80C99A0: @ 80C99A0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _080C99D0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x18] + lsls r1, 16 + ldrh r0, [r0, 0x1A] + orrs r1, r0 + bl _call_via_r1 + ldr r1, _080C99D4 @ =gUnknown_2037078 + movs r0, 0 + strb r0, [r1, 0x6] + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C99D0: .4byte gUnknown_3005090 +_080C99D4: .4byte gUnknown_2037078 + thumb_func_end sub_80C99A0 + + thumb_func_start sub_80C99D8 +sub_80C99D8: @ 80C99D8 + push {lr} + movs r0, 0x60 + bl sub_80C97A8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C99EC + movs r0, 0 + b _080C99FA +_080C99EC: + ldr r1, _080C9A00 @ =gUnknown_3005024 + ldr r0, _080C9A04 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080C9A08 @ =gUnknown_203B0C4 + ldr r0, _080C9A0C @ =sub_80C9A10 + str r0, [r1] + movs r0, 0x1 +_080C99FA: + pop {r1} + bx r1 + .align 2, 0 +_080C9A00: .4byte gUnknown_3005024 +_080C9A04: .4byte sub_81248B0 +_080C9A08: .4byte gUnknown_203B0C4 +_080C9A0C: .4byte sub_80C9A10 + thumb_func_end sub_80C99D8 + + thumb_func_start sub_80C9A10 +sub_80C9A10: @ 80C9A10 + push {lr} + bl sub_811FB0C + ldr r1, _080C9A28 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + ldr r0, _080C9A2C @ =gUnknown_81BE064 + bl sub_8069AE4 + pop {r0} + bx r0 + .align 2, 0 +_080C9A28: .4byte gUnknown_20386E0 +_080C9A2C: .4byte gUnknown_81BE064 + thumb_func_end sub_80C9A10 + + thumb_func_start sub_80C9A30 +sub_80C9A30: @ 80C9A30 + push {lr} + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9A58 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080C9A5C @ =sub_80C9A60 + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + movs r0, 0x13 + bl sub_8054E90 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080C9A58: .4byte gUnknown_3005090 +_080C9A5C: .4byte sub_80C9A60 + thumb_func_end sub_80C9A30 + + thumb_func_start sub_80C9A60 +sub_80C9A60: @ 80C9A60 + push {lr} + movs r0, 0x7C + bl sub_80722CC + movs r0, 0x25 + bl sub_80837FC + bl sub_8069B34 + pop {r0} + bx r0 + thumb_func_end sub_80C9A60 + + thumb_func_start sub_80C9A78 +sub_80C9A78: @ 80C9A78 + push {lr} + bl sub_80A1B8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080C9A8A + movs r0, 0 + b _080C9A98 +_080C9A8A: + ldr r1, _080C9A9C @ =gUnknown_3005024 + ldr r0, _080C9AA0 @ =sub_81248B0 + str r0, [r1] + ldr r1, _080C9AA4 @ =gUnknown_203B0C4 + ldr r0, _080C9AA8 @ =sub_80C9AAC + str r0, [r1] + movs r0, 0x1 +_080C9A98: + pop {r1} + bx r1 + .align 2, 0 +_080C9A9C: .4byte gUnknown_3005024 +_080C9AA0: .4byte sub_81248B0 +_080C9AA4: .4byte gUnknown_203B0C4 +_080C9AA8: .4byte sub_80C9AAC + thumb_func_end sub_80C9A78 + + thumb_func_start sub_80C9AAC +sub_80C9AAC: @ 80C9AAC + push {lr} + bl sub_8054D70 + movs r0, 0x26 + bl sub_8083444 + bl sub_811FB0C + ldr r1, _080C9AC8 @ =gUnknown_20386E0 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080C9AC8: .4byte gUnknown_20386E0 + thumb_func_end sub_80C9AAC + + thumb_func_start sub_80C9ACC +sub_80C9ACC: @ 80C9ACC + push {lr} + bl sub_80C97FC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9AF4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r2, _080C9AF8 @ =sub_80C9AFC + lsrs r0, r2, 16 + strh r0, [r1, 0x18] + strh r2, [r1, 0x1A] + movs r0, 0x1 + bl sub_805BDEC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080C9AF4: .4byte gUnknown_3005090 +_080C9AF8: .4byte sub_80C9AFC + thumb_func_end sub_80C9ACC + + thumb_func_start sub_80C9AFC +sub_80C9AFC: @ 80C9AFC + push {lr} + movs r0, 0x26 + bl sub_80837FC + ldr r0, _080C9B24 @ =sub_80A1C44 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080C9B28 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_080C9B24: .4byte sub_80A1C44 +_080C9B28: .4byte gUnknown_3005090 + thumb_func_end sub_80C9AFC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_header.inc b/asm/rom_header.inc new file mode 100644 index 000000000..fe4e2c4f9 --- /dev/null +++ b/asm/rom_header.inc @@ -0,0 +1,54 @@ + .global RomHeaderNintendoLogo +RomHeaderNintendoLogo: + .byte 0x24,0xff,0xae,0x51,0x69,0x9a,0xa2,0x21 + .byte 0x3d,0x84,0x82,0x0a,0x84,0xe4,0x09,0xad + .byte 0x11,0x24,0x8b,0x98,0xc0,0x81,0x7f,0x21 + .byte 0xa3,0x52,0xbe,0x19,0x93,0x09,0xce,0x20 + .byte 0x10,0x46,0x4a,0x4a,0xf8,0x27,0x31,0xec + .byte 0x58,0xc7,0xe8,0x33,0x82,0xe3,0xce,0xbf + .byte 0x85,0xf4,0xdf,0x94,0xce,0x4b,0x09,0xc1 + .byte 0x94,0x56,0x8a,0xc0,0x13,0x72,0xa7,0xfc + .byte 0x9f,0x84,0x4d,0x73,0xa3,0xca,0x9a,0x61 + .byte 0x58,0x97,0xa3,0x27,0xfc,0x03,0x98,0x76 + .byte 0x23,0x1d,0xc7,0x61,0x03,0x04,0xae,0x56 + .byte 0xbf,0x38,0x84,0x00,0x40,0xa7,0x0e,0xfd + .byte 0xff,0x52,0xfe,0x03,0x6f,0x95,0x30,0xf1 + .byte 0x97,0xfb,0xc0,0x85,0x60,0xd6,0x80,0x25 + .byte 0xa9,0x63,0xbe,0x03,0x01,0x4e,0x38,0xe2 + .byte 0xf9,0xa2,0x34,0xff,0xbb,0x3e,0x03,0x44 + .byte 0x78,0x00,0x90,0xcb,0x88,0x11,0x3a,0x94 + .byte 0x65,0xc0,0x7c,0x63,0x87,0xf0,0x3c,0xaf + .byte 0xd6,0x25,0xe4,0x8b,0x38,0x0a,0xac,0x72 + .byte 0x21,0xd4,0xf8,0x07 + +RomHeaderGameTitle: + .ascii "POKEMON FIRE" + + .global RomHeaderGameCode +RomHeaderGameCode: + .ascii "BPRE" + +RomHeaderMakerCode: + .ascii "01" + +RomHeaderMagic: + .byte 0x96 + +RomHeaderMainUnitCode: + .byte 0 + +RomHeaderDeviceType: + .byte 0 + +RomHeaderReserved1: + .space 7 + + .global RomHeaderSoftwareVersion +RomHeaderSoftwareVersion: + .byte REVISION + +RomHeaderChecksum: + .byte 0x68 - REVISION + +RomHeaderReserved2: + .space 2 diff --git a/asm/roulette_util.s b/asm/roulette_util.s new file mode 100644 index 000000000..5affddcff --- /dev/null +++ b/asm/roulette_util.s @@ -0,0 +1,1447 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D8BE4 +sub_80D8BE4: @ 80D8BE4 + push {lr} + movs r1, 0 + strb r1, [r0] + strh r1, [r0, 0x2] + adds r0, 0x4 + movs r2, 0xC0 + bl memset + pop {r0} + bx r0 + thumb_func_end sub_80D8BE4 + + thumb_func_start sub_80D8BF8 +sub_80D8BF8: @ 80D8BF8 + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r6, 0xF + bhi _080D8C14 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r5, r3, r0 + ldrb r7, [r5, 0x4] + lsrs r0, r7, 7 + cmp r0, 0 + beq _080D8C18 +_080D8C14: + movs r0, 0xFF + b _080D8C76 +_080D8C18: + ldrh r0, [r2] + movs r4, 0 + strh r0, [r5, 0x8] + ldrh r0, [r2, 0x2] + strh r0, [r5, 0xA] + ldrb r0, [r2, 0x4] + strb r0, [r5, 0xC] + ldrb r0, [r2, 0x5] + strb r0, [r5, 0xD] + ldrb r0, [r2, 0x6] + strb r0, [r5, 0xE] + ldrb r3, [r2, 0x7] + lsls r0, r3, 27 + lsrs r0, 27 + ldrb r2, [r5, 0xF] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + movs r0, 0x60 + ands r0, r3 + movs r2, 0x61 + negs r2, r2 + ands r1, r2 + orrs r1, r0 + lsls r3, 24 + asrs r3, 31 + lsls r3, 7 + movs r0, 0x7F + ands r1, r0 + orrs r1, r3 + strb r1, [r5, 0xF] + subs r0, 0xFF + ands r0, r7 + movs r2, 0x80 + orrs r0, r2 + strb r0, [r5, 0x4] + strb r4, [r5, 0x6] + strb r4, [r5, 0x5] + lsls r1, 24 + cmp r1, 0 + bge _080D8C70 + movs r0, 0xFF + b _080D8C72 +_080D8C70: + movs r0, 0x1 +_080D8C72: + strb r0, [r5, 0x7] + adds r0, r6, 0 +_080D8C76: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D8BF8 + + thumb_func_start sub_80D8C7C +sub_80D8C7C: @ 80D8C7C + push {r4,lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r4, r1, 0 + cmp r4, 0xF + bhi _080D8CA8 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r1, r2, r0 + ldrb r0, [r1, 0x4] + lsrs r0, 7 + cmp r0, 0 + beq _080D8CA8 + adds r0, r1, 0x4 + movs r1, 0 + movs r2, 0xC + bl memset + adds r0, r4, 0 + b _080D8CAA +_080D8CA8: + movs r0, 0xFF +_080D8CAA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D8C7C + + thumb_func_start sub_80D8CB0 +sub_80D8CB0: @ 80D8CB0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + movs r0, 0 + mov r12, r0 + ldrb r1, [r5, 0x8] + cmp r12, r1 + bcc _080D8CC8 + b _080D8E60 +_080D8CC8: + movs r7, 0x1F + ldr r0, _080D8CF8 @ =0xfffffc1f + mov r10, r0 + movs r1, 0x7D + negs r1, r1 + mov r9, r1 + movs r0, 0x1F + mov r8, r0 +_080D8CD8: + ldrh r0, [r5, 0x6] + add r0, r12 + lsls r0, 1 + ldr r1, _080D8CFC @ =gUnknown_20375F8 + adds r3, r0, r1 + ldr r1, _080D8D00 @ =gUnknown_20371F8 + adds r6, r0, r1 + ldrb r0, [r5] + lsls r0, 25 + lsrs r0, 25 + cmp r0, 0x1 + beq _080D8D04 + cmp r0, 0x2 + beq _080D8D62 + b _080D8E4E + .align 2, 0 +_080D8CF8: .4byte 0xfffffc1f +_080D8CFC: .4byte gUnknown_20375F8 +_080D8D00: .4byte gUnknown_20371F8 +_080D8D04: + ldr r0, [r3] + lsls r2, r0, 27 + lsrs r0, r2, 27 + movs r1, 0x3 + ldrsb r1, [r5, r1] + adds r0, r1 + cmp r0, 0x1F + bhi _080D8D26 + lsrs r0, r2, 27 + adds r0, r1 + ands r0, r7 + ldrb r2, [r3] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_080D8D26: + ldr r0, [r3] + lsls r2, r0, 22 + lsrs r0, r2, 27 + movs r1, 0x3 + ldrsb r1, [r5, r1] + adds r0, r1 + cmp r0, 0x1F + bhi _080D8D4A + lsrs r0, r2, 27 + adds r0, r1 + mov r1, r8 + ands r0, r1 + lsls r0, 5 + ldrh r2, [r3] + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_080D8D4A: + ldr r0, [r3] + lsls r2, r0, 17 + lsrs r0, r2, 27 + movs r1, 0x3 + ldrsb r1, [r5, r1] + adds r0, r1 + cmp r0, 0x1F + bls _080D8D5C + b _080D8E4E +_080D8D5C: + lsrs r0, r2, 27 + adds r0, r1 + b _080D8E40 +_080D8D62: + movs r0, 0x3 + ldrsb r0, [r5, r0] + cmp r0, 0 + bge _080D8DD4 + ldr r0, [r3] + lsls r4, r0, 27 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 27 + lsrs r0, 27 + cmp r1, r0 + blt _080D8D92 + lsrs r0, r4, 27 + adds r0, r2 + ands r0, r7 + ldrb r2, [r3] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_080D8D92: + ldr r0, [r3] + lsls r4, r0, 22 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 22 + lsrs r0, 27 + cmp r1, r0 + blt _080D8DBC + lsrs r0, r4, 27 + adds r0, r2 + mov r1, r8 + ands r0, r1 + lsls r0, 5 + ldrh r2, [r3] + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_080D8DBC: + ldr r0, [r3] + lsls r4, r0, 17 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 17 + lsrs r0, 27 + cmp r1, r0 + blt _080D8E4E + b _080D8E3C +_080D8DD4: + ldr r0, [r3] + lsls r4, r0, 27 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 27 + lsrs r0, 27 + cmp r1, r0 + bgt _080D8DFC + lsrs r0, r4, 27 + adds r0, r2 + ands r0, r7 + ldrb r2, [r3] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_080D8DFC: + ldr r0, [r3] + lsls r4, r0, 22 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 22 + lsrs r0, 27 + cmp r1, r0 + bgt _080D8E26 + lsrs r0, r4, 27 + adds r0, r2 + mov r1, r8 + ands r0, r1 + lsls r0, 5 + ldrh r2, [r3] + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_080D8E26: + ldr r0, [r3] + lsls r4, r0, 17 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 17 + lsrs r0, 27 + cmp r1, r0 + bgt _080D8E4E +_080D8E3C: + lsrs r0, r4, 27 + adds r0, r2 +_080D8E40: + ands r0, r7 + lsls r0, 2 + ldrb r2, [r3, 0x1] + mov r1, r9 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x1] +_080D8E4E: + mov r0, r12 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + ldrb r0, [r5, 0x8] + cmp r12, r0 + bcs _080D8E60 + b _080D8CD8 +_080D8E60: + ldrb r1, [r5, 0x2] + adds r0, r1, 0x1 + strb r0, [r5, 0x2] + ldrb r0, [r5, 0xB] + lsls r0, 27 + lsls r1, 24 + asrs r0, 3 + cmp r1, r0 + beq _080D8E76 + movs r0, 0 + b _080D8EAA +_080D8E76: + movs r0, 0 + strb r0, [r5, 0x2] + movs r0, 0x3 + ldrsb r0, [r5, r0] + negs r0, r0 + strb r0, [r5, 0x3] + ldrb r2, [r5] + movs r1, 0x7F + movs r0, 0x7F + ands r0, r2 + cmp r0, 0x1 + bne _080D8E96 + lsls r0, r2, 25 + lsrs r0, 25 + adds r0, 0x1 + b _080D8E9C +_080D8E96: + lsls r0, r2, 25 + lsrs r0, 25 + subs r0, 0x1 +_080D8E9C: + ands r0, r1 + movs r1, 0x80 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + movs r0, 0x1 +_080D8EAA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D8CB0 + + thumb_func_start sub_80D8EB8 +sub_80D8EB8: @ 80D8EB8 + push {r4,r5,lr} + adds r3, r0, 0 + movs r2, 0 + ldrb r0, [r3] + lsls r0, 25 + lsrs r0, 25 + cmp r0, 0x1 + beq _080D8ECE + cmp r0, 0x2 + beq _080D8EFC + b _080D8F36 +_080D8ECE: + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcs _080D8EEE + ldr r4, _080D8EF8 @ =gUnknown_20375F8 +_080D8ED6: + ldrh r0, [r3, 0x6] + adds r0, r2 + lsls r0, 1 + adds r0, r4 + ldrh r1, [r3, 0x4] + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcc _080D8ED6 +_080D8EEE: + ldrb r2, [r3] + lsls r1, r2, 25 + lsrs r1, 25 + adds r1, 0x1 + b _080D8F28 + .align 2, 0 +_080D8EF8: .4byte gUnknown_20375F8 +_080D8EFC: + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcs _080D8F20 + ldr r5, _080D8F40 @ =gUnknown_20375F8 + ldr r4, _080D8F44 @ =gUnknown_20371F8 +_080D8F06: + ldrh r0, [r3, 0x6] + adds r0, r2 + lsls r0, 1 + adds r1, r0, r5 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcc _080D8F06 +_080D8F20: + ldrb r2, [r3] + lsls r1, r2, 25 + lsrs r1, 25 + subs r1, 0x1 +_080D8F28: + movs r0, 0x7F + ands r1, r0 + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080D8F36: + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D8F40: .4byte gUnknown_20375F8 +_080D8F44: .4byte gUnknown_20371F8 + thumb_func_end sub_80D8EB8 + + thumb_func_start sub_80D8F48 +sub_80D8F48: @ 80D8F48 + push {r4-r6,lr} + adds r4, r0, 0 + movs r5, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _080D8FAC +_080D8F54: + ldrh r0, [r4, 0x2] + asrs r0, r5 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D8FA2 + lsls r1, r5, 1 + adds r0, r1, r5 + lsls r3, r0, 2 + adds r2, r4, r3 + ldrb r0, [r2, 0x5] + subs r0, 0x1 + strb r0, [r2, 0x5] + lsls r0, 24 + lsrs r0, 24 + adds r6, r1, 0 + cmp r0, 0xFF + bne _080D8FA2 + ldrh r0, [r2, 0x8] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080D8F90 + adds r0, r3, 0x4 + adds r0, r4, r0 + bl sub_80D8CB0 + b _080D8F98 +_080D8F90: + adds r0, r3, 0x4 + adds r0, r4, r0 + bl sub_80D8EB8 +_080D8F98: + adds r0, r6, r5 + lsls r0, 2 + adds r0, r4, r0 + ldrb r1, [r0, 0xD] + strb r1, [r0, 0x5] +_080D8FA2: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _080D8F54 +_080D8FAC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D8F48 + + thumb_func_start sub_80D8FB4 +sub_80D8FB4: @ 80D8FB4 + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + movs r4, 0 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + movs r5, 0x1 + movs r7, 0x80 + negs r7, r7 +_080D8FCA: + adds r0, r6, 0 + asrs r0, r4 + ands r0, r5 + cmp r0, 0 + beq _080D8FF8 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r2, r3, r0 + ldrb r0, [r2, 0x4] + lsrs r0, 7 + cmp r0, 0 + beq _080D8FF8 + adds r0, r5, 0 + lsls r0, r4 + ldrh r1, [r3, 0x2] + orrs r0, r1 + strh r0, [r3, 0x2] + ldrb r1, [r2, 0x4] + adds r0, r7, 0 + ands r0, r1 + orrs r0, r5 + strb r0, [r2, 0x4] +_080D8FF8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080D8FCA + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D8FB4 + + thumb_func_start sub_80D9008 +sub_80D9008: @ 80D9008 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 16 + lsrs r7, r1, 16 + movs r5, 0 + movs r3, 0x1 +_080D9016: + ldrh r0, [r6, 0x2] + asrs r0, r5 + ands r0, r3 + cmp r0, 0 + beq _080D907E + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r4, r6, r0 + ldrb r0, [r4, 0x4] + lsrs r0, 7 + cmp r0, 0 + beq _080D907E + adds r0, r7, 0 + asrs r0, r5 + ands r0, r3 + cmp r0, 0 + beq _080D907E + ldrh r1, [r4, 0xA] + lsls r1, 1 + ldr r0, _080D9074 @ =gUnknown_20375F8 + adds r0, r1, r0 + ldr r2, _080D9078 @ =gUnknown_20371F8 + adds r1, r2 + ldrb r2, [r4, 0xC] + lsls r2, 1 + str r3, [sp] + bl memcpy + ldrb r0, [r4, 0x4] + movs r2, 0x80 + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r4, 0x4] + movs r0, 0 + strb r0, [r4, 0x6] + strb r0, [r4, 0x5] + ldrb r0, [r4, 0xF] + lsls r0, 24 + ldr r3, [sp] + cmp r0, 0 + bge _080D907C + movs r0, 0xFF + strb r0, [r4, 0x7] + b _080D907E + .align 2, 0 +_080D9074: .4byte gUnknown_20375F8 +_080D9078: .4byte gUnknown_20371F8 +_080D907C: + strb r3, [r4, 0x7] +_080D907E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _080D9016 + ldr r0, _080D9094 @ =0x0000ffff + cmp r7, r0 + bne _080D9098 + movs r0, 0 + strb r0, [r6] + b _080D909C + .align 2, 0 +_080D9094: .4byte 0x0000ffff +_080D9098: + ldrh r0, [r6, 0x2] + bics r0, r7 +_080D909C: + strh r0, [r6, 0x2] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D9008 + + thumb_func_start sub_80D90A8 +sub_80D90A8: @ 80D90A8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 + strh r4, [r5] + adds r0, r5, 0x4 + movs r1, 0 + movs r2, 0xC0 + bl memset +_080D90BA: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r5, r0 + strb r4, [r0, 0x4] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080D90BA + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D90A8 + + thumb_func_start sub_80D90D4 +sub_80D90D4: @ 80D90D4 + push {r4,r5,lr} + adds r2, r0, 0 + adds r5, r1, 0 + movs r3, 0 + movs r4, 0 + ldrb r0, [r2, 0x5] + lsrs r0, 7 + cmp r0, 0 + bne _080D90EA + adds r4, r2, 0x4 + b _080D9108 +_080D90EA: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bhi _080D9108 + lsls r0, r3, 1 + adds r0, r3 + lsls r1, r0, 2 + adds r0, r2, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 7 + cmp r0, 0 + bne _080D90EA + adds r0, r1, 0x4 + adds r4, r2, r0 +_080D9108: + cmp r4, 0 + beq _080D9136 + ldrb r1, [r4, 0x1] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0 + strb r0, [r4, 0x2] + strb r0, [r4, 0x3] + adds r1, r4, 0x4 + adds r0, r5, 0 + ldm r0!, {r2,r4} + stm r1!, {r2,r4} + adds r0, r3, 0 + b _080D9138 +_080D9136: + movs r0, 0xFF +_080D9138: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D90D4 + + thumb_func_start sub_80D9140 +sub_80D9140: @ 80D9140 + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r1, [r4, 0x1] + movs r2, 0x40 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080D9182 + ldrb r1, [r4, 0xB] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080D9182 + ldrh r2, [r4, 0x6] + ldrb r0, [r4, 0x8] + adds r0, r2, r0 + cmp r2, r0 + bge _080D9182 + ldr r5, _080D91B4 @ =gUnknown_20375F8 + ldr r3, _080D91B8 @ =gUnknown_20371F8 +_080D9168: + lsls r0, r2, 1 + adds r1, r0, r5 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r4, 0x6] + ldrb r1, [r4, 0x8] + adds r0, r1 + cmp r2, r0 + blt _080D9168 +_080D9182: + adds r0, r4, 0x4 + movs r1, 0 + movs r2, 0x8 + bl memset + ldrb r1, [r4, 0x1] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + subs r1, 0x10 + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + movs r1, 0x7F + ands r0, r1 + strb r0, [r4, 0x1] + movs r0, 0 + strb r0, [r4, 0x3] + strb r0, [r4, 0x2] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D91B4: .4byte gUnknown_20375F8 +_080D91B8: .4byte gUnknown_20371F8 + thumb_func_end sub_80D9140 + + thumb_func_start sub_80D91BC +sub_80D91BC: @ 80D91BC + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + movs r5, 0 + cmp r2, 0 + bne _080D91E0 + movs r1, 0xF + ands r1, r4 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, 0x4 + adds r0, r6, r0 + bl sub_80D9140 + b _080D920C +_080D91E0: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080D9200 + lsls r0, r5, 1 + adds r0, r5 + lsls r1, r0, 2 + adds r0, r6, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 7 + cmp r0, 0 + beq _080D9200 + adds r0, r1, 0x4 + adds r0, r6, r0 + bl sub_80D9140 +_080D9200: + lsrs r4, 1 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xF + bls _080D91E0 +_080D920C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D91BC + + thumb_func_start sub_80D9214 +sub_80D9214: @ 80D9214 + push {r4-r7,lr} + adds r5, r0, 0 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + movs r3, 0 + cmp r2, 0 + bne _080D9248 + movs r0, 0xF + adds r3, r0, 0 + ands r3, r4 + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 2 + adds r1, r5, r1 + ldrb r2, [r1, 0x5] + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] + movs r0, 0x1 + lsls r0, r3 + ldrh r1, [r5] + orrs r0, r1 + strh r0, [r5] + b _080D928C +_080D9248: + movs r6, 0x1 + movs r7, 0x41 + negs r7, r7 +_080D924E: + adds r0, r4, 0 + ands r0, r6 + cmp r0, 0 + beq _080D926C + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r5, r0 + ldrb r1, [r2, 0x5] + lsrs r0, r1, 7 + cmp r0, 0 + beq _080D926C + lsls r0, r1, 25 + cmp r0, 0 + blt _080D9272 +_080D926C: + lsls r0, r4, 17 + lsrs r4, r0, 16 + b _080D9282 +_080D9272: + adds r0, r7, 0 + ands r0, r1 + strb r0, [r2, 0x5] + adds r0, r6, 0 + lsls r0, r3 + ldrh r1, [r5] + orrs r0, r1 + strh r0, [r5] +_080D9282: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _080D924E +_080D928C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D9214 + + thumb_func_start sub_80D9294 +sub_80D9294: @ 80D9294 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 24 + movs r0, 0 + mov r12, r0 + cmp r2, 0 + bne _080D931C + movs r1, 0xF + ands r1, r7 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, 0x4 + mov r1, r8 + adds r3, r1, r0 + ldrb r1, [r3, 0x1] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x80 + bne _080D93A6 + ldrb r1, [r3, 0xB] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080D92FA + ldrh r2, [r3, 0x6] + ldrb r0, [r3, 0x8] + adds r0, r2, r0 + cmp r2, r0 + bge _080D92FA + ldr r5, _080D9314 @ =gUnknown_20375F8 + ldr r4, _080D9318 @ =gUnknown_20371F8 +_080D92E0: + lsls r0, r2, 1 + adds r1, r0, r5 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r3, 0x6] + ldrb r1, [r3, 0x8] + adds r0, r1 + cmp r2, r0 + blt _080D92E0 +_080D92FA: + ldrb r0, [r3, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r3, 0x1] + movs r1, 0x1 + mov r2, r12 + lsls r1, r2 + mov r2, r8 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] + b _080D93A6 + .align 2, 0 +_080D9314: .4byte gUnknown_20375F8 +_080D9318: .4byte gUnknown_20371F8 +_080D931C: + movs r0, 0x1 + mov r9, r0 + movs r1, 0x40 + mov r10, r1 +_080D9324: + mov r2, r12 + lsls r0, r2, 1 + add r0, r12 + lsls r0, 2 + adds r0, 0x4 + mov r1, r8 + adds r3, r1, r0 + adds r0, r7, 0 + mov r2, r9 + ands r0, r2 + cmp r0, 0 + beq _080D9346 + ldrb r1, [r3, 0x1] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x80 + beq _080D9350 +_080D9346: + lsls r0, r7, 17 + lsrs r7, r0, 16 + mov r5, r12 + adds r5, 0x1 + b _080D939C +_080D9350: + ldrb r1, [r3, 0xB] + mov r0, r10 + ands r0, r1 + mov r5, r12 + adds r5, 0x1 + cmp r0, 0 + beq _080D9386 + ldrh r2, [r3, 0x6] + ldrb r0, [r3, 0x8] + adds r0, r2, r0 + cmp r2, r0 + bge _080D9386 + ldr r6, _080D93B4 @ =gUnknown_20375F8 + ldr r4, _080D93B8 @ =gUnknown_20371F8 +_080D936C: + lsls r0, r2, 1 + adds r1, r0, r6 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r3, 0x6] + ldrb r1, [r3, 0x8] + adds r0, r1 + cmp r2, r0 + blt _080D936C +_080D9386: + ldrb r1, [r3, 0x1] + mov r0, r10 + orrs r0, r1 + strb r0, [r3, 0x1] + mov r1, r9 + mov r0, r12 + lsls r1, r0 + mov r2, r8 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] +_080D939C: + lsls r0, r5, 24 + lsrs r0, 24 + mov r12, r0 + cmp r0, 0xF + bls _080D9324 +_080D93A6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D93B4: .4byte gUnknown_20375F8 +_080D93B8: .4byte gUnknown_20371F8 + thumb_func_end sub_80D9294 + + thumb_func_start sub_80D93BC +sub_80D93BC: @ 80D93BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + movs r0, 0 + mov r10, r0 + ldr r1, [sp] + ldrh r0, [r1] + cmp r0, 0 + bne _080D93D8 + b _080D9562 +_080D93D8: + movs r2, 0xF + mov r9, r2 + movs r3, 0x10 + negs r3, r3 + mov r8, r3 + movs r7, 0x1 +_080D93E4: + mov r5, r10 + lsls r0, r5, 1 + add r0, r10 + lsls r0, 2 + adds r0, 0x4 + ldr r1, [sp] + adds r4, r1, r0 + ldrb r2, [r4, 0x1] + movs r3, 0xC0 + ands r3, r2 + cmp r3, 0x80 + beq _080D93FE + b _080D9552 +_080D93FE: + ldr r0, _080D944C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080D9414 + ldrb r0, [r4, 0xB] + ands r3, r0 + cmp r3, 0 + beq _080D9414 + b _080D9552 +_080D9414: + ldrb r0, [r4, 0x2] + subs r0, 0x1 + strb r0, [r4, 0x2] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080D9424 + b _080D9552 +_080D9424: + ldrb r0, [r4, 0x9] + strb r0, [r4, 0x2] + ldrh r0, [r4, 0x6] + ldrb r1, [r4, 0x8] + lsls r2, 28 + lsrs r2, 28 + ldrh r3, [r4, 0x4] + bl sub_8045274 + ldrb r5, [r4, 0xB] + lsls r0, r5, 26 + asrs r0, 30 + cmp r0, 0x1 + beq _080D9482 + cmp r0, 0x1 + bgt _080D9450 + cmp r0, 0 + beq _080D9456 + b _080D953C + .align 2, 0 +_080D944C: .4byte gUnknown_2037AB8 +_080D9450: + cmp r0, 0x2 + beq _080D94FE + b _080D953C +_080D9456: + ldrb r2, [r4, 0x1] + lsls r1, r2, 28 + lsrs r0, r1, 28 + adds r0, 0x1 + mov r3, r9 + ands r0, r3 + mov r6, r8 + adds r3, r6, 0 + ands r3, r2 + orrs r3, r0 + strb r3, [r4, 0x1] + lsrs r1, 28 + lsls r0, r5, 28 + asrs r0, 28 + cmp r1, r0 + bne _080D953C + ldrb r0, [r4, 0x3] + adds r0, 0x1 + strb r0, [r4, 0x3] + ands r3, r6 + strb r3, [r4, 0x1] + b _080D953C +_080D9482: + ldrb r3, [r4, 0x1] + movs r0, 0x10 + ands r0, r3 + cmp r0, 0 + beq _080D94C0 + lsls r0, r3, 28 + lsrs r0, 28 + subs r0, 0x1 + mov r5, r9 + ands r0, r5 + mov r2, r8 + ands r2, r3 + orrs r2, r0 + strb r2, [r4, 0x1] + cmp r0, 0 + bne _080D953C + ldrb r0, [r4, 0x3] + adds r0, 0x1 + strb r0, [r4, 0x3] + lsls r0, r2, 27 + lsrs r0, 31 + eors r0, r7 + ands r0, r7 + lsls r0, 4 + movs r3, 0x11 + negs r3, r3 + adds r1, r3, 0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, 0x1] + b _080D953C +_080D94C0: + lsls r0, r5, 28 + asrs r0, 28 + subs r0, 0x1 + mov r5, r9 + ands r0, r5 + lsls r2, r3, 28 + lsrs r1, r2, 28 + adds r1, 0x1 + ands r1, r5 + mov r5, r8 + ands r3, r5 + orrs r3, r1 + strb r3, [r4, 0x1] + lsrs r2, 28 + cmp r2, r0 + bne _080D953C + ldrb r0, [r4, 0x3] + adds r0, 0x1 + strb r0, [r4, 0x3] + lsls r0, r3, 27 + lsrs r0, 31 + eors r0, r7 + ands r0, r7 + lsls r0, 4 + movs r2, 0x11 + negs r2, r2 + adds r1, r2, 0 + ands r3, r1 + orrs r3, r0 + strb r3, [r4, 0x1] + b _080D953C +_080D94FE: + ldrb r2, [r4, 0x1] + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + beq _080D950E + mov r0, r8 + ands r0, r2 + b _080D951C +_080D950E: + lsls r1, r5, 28 + asrs r1, 28 + mov r3, r9 + ands r1, r3 + mov r0, r8 + ands r0, r2 + orrs r0, r1 +_080D951C: + strb r0, [r4, 0x1] + ldrb r2, [r4, 0x1] + lsls r0, r2, 27 + lsrs r0, 31 + eors r0, r7 + ands r0, r7 + lsls r0, 4 + movs r5, 0x11 + negs r5, r5 + adds r1, r5, 0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, 0x1] + ldrb r0, [r4, 0x3] + adds r0, 0x1 + strb r0, [r4, 0x3] +_080D953C: + ldrb r1, [r4, 0xA] + cmp r1, 0xFF + beq _080D9552 + ldrb r0, [r4, 0x3] + cmp r0, r1 + bne _080D9552 + ldrb r1, [r4] + ldr r0, [sp] + movs r2, 0 + bl sub_80D9294 +_080D9552: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0xF + bhi _080D9562 + b _080D93E4 +_080D9562: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D93BC + + thumb_func_start sub_80D9574 +sub_80D9574: @ 80D9574 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, [sp, 0x14] + ldr r4, [sp, 0x18] + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + lsrs r3, 19 + adds r3, r2 + lsls r3, 1 + adds r6, r3 + cmp r1, r4 + bcs _080D95BE +_080D959C: + lsls r0, r1, 6 + adds r2, r6, r0 + movs r0, 0 + adds r3, r1, 0x1 + cmp r0, r5 + bcs _080D95B6 +_080D95A8: + strh r7, [r2] + adds r2, 0x2 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bcc _080D95A8 +_080D95B6: + lsls r0, r3, 24 + lsrs r1, r0, 24 + cmp r1, r4 + bcc _080D959C +_080D95BE: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D9574 + + thumb_func_start sub_80D95C4 +sub_80D95C4: @ 80D95C4 + push {r4-r7,lr} + adds r7, r0, 0 + ldr r0, [sp, 0x14] + ldr r4, [sp, 0x18] + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r6, r4, 24 + movs r4, 0 + lsrs r3, 19 + adds r3, r2 + lsls r3, 1 + adds r7, r3 + cmp r4, r6 + bcs _080D960E +_080D95E8: + lsls r0, r4, 6 + adds r2, r7, r0 + movs r3, 0 + adds r4, 0x1 + cmp r3, r5 + bcs _080D9606 +_080D95F4: + ldrh r0, [r1] + strh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r5 + bcc _080D95F4 +_080D9606: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _080D95E8 +_080D960E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D95C4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/safari_zone.s b/asm/safari_zone.s new file mode 100644 index 000000000..b18ab32d6 --- /dev/null +++ b/asm/safari_zone.s @@ -0,0 +1,167 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0E90 +sub_80A0E90: @ 80A0E90 + push {lr} + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80A0E90 + + thumb_func_start sub_80A0EA4 +sub_80A0EA4: @ 80A0EA4 + push {lr} + movs r0, 0x80 + lsls r0, 4 + bl sub_806E680 + pop {r0} + bx r0 + thumb_func_end sub_80A0EA4 + + thumb_func_start sub_80A0EB4 +sub_80A0EB4: @ 80A0EB4 + push {lr} + movs r0, 0x80 + lsls r0, 4 + bl sub_806E6A8 + pop {r0} + bx r0 + thumb_func_end sub_80A0EB4 + + thumb_func_start sub_80A0EC4 +sub_80A0EC4: @ 80A0EC4 + push {lr} + movs r0, 0x11 + bl sub_8054E90 + bl sub_80A0EA4 + ldr r1, _080A0EE4 @ =gUnknown_2039994 + movs r0, 0x1E + strb r0, [r1] + ldr r1, _080A0EE8 @ =gUnknown_2039996 + movs r2, 0x96 + lsls r2, 2 + adds r0, r2, 0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A0EE4: .4byte gUnknown_2039994 +_080A0EE8: .4byte gUnknown_2039996 + thumb_func_end sub_80A0EC4 + + thumb_func_start sub_80A0EEC +sub_80A0EEC: @ 80A0EEC + push {lr} + bl sub_80A0EB4 + ldr r1, _080A0F04 @ =gUnknown_2039994 + movs r0, 0 + strb r0, [r1] + ldr r1, _080A0F08 @ =gUnknown_2039996 + movs r0, 0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A0F04: .4byte gUnknown_2039994 +_080A0F08: .4byte gUnknown_2039996 + thumb_func_end sub_80A0EEC + + thumb_func_start sub_80A0F0C +sub_80A0F0C: @ 80A0F0C + push {lr} + bl sub_80A0E90 + cmp r0, 0 + beq _080A0F24 + ldr r1, _080A0F28 @ =gUnknown_2039996 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _080A0F2C +_080A0F24: + movs r0, 0 + b _080A0F34 + .align 2, 0 +_080A0F28: .4byte gUnknown_2039996 +_080A0F2C: + ldr r0, _080A0F38 @ =gUnknown_81BFBC5 + bl sub_8069AE4 + movs r0, 0x1 +_080A0F34: + pop {r1} + bx r1 + .align 2, 0 +_080A0F38: .4byte gUnknown_81BFBC5 + thumb_func_end sub_80A0F0C + + thumb_func_start sub_80A0F3C +sub_80A0F3C: @ 80A0F3C + push {lr} + ldr r0, _080A0F48 @ =gUnknown_81BFBAA + bl sub_8069AE4 + pop {r0} + bx r0 + .align 2, 0 +_080A0F48: .4byte gUnknown_81BFBAA + thumb_func_end sub_80A0F3C + + thumb_func_start sub_80A0F4C +sub_80A0F4C: @ 80A0F4C + push {lr} + ldr r0, _080A0F60 @ =gUnknown_2039994 + ldrb r0, [r0] + cmp r0, 0 + beq _080A0F68 + ldr r0, _080A0F64 @ =sub_80567DC + bl sub_8000544 + b _080A0FB0 + .align 2, 0 +_080A0F60: .4byte gUnknown_2039994 +_080A0F64: .4byte sub_80567DC +_080A0F68: + ldr r0, _080A0F88 @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x8 + bne _080A0F9C + ldr r0, _080A0F8C @ =gUnknown_81BFB87 + bl sub_8069B48 + bl sub_8055378 + ldr r1, _080A0F90 @ =gUnknown_3005020 + ldr r0, _080A0F94 @ =sub_807E3EC + str r0, [r1] + ldr r0, _080A0F98 @ =sub_805671C + bl sub_8000544 + b _080A0FB0 + .align 2, 0 +_080A0F88: .4byte gUnknown_2023E8A +_080A0F8C: .4byte gUnknown_81BFB87 +_080A0F90: .4byte gUnknown_3005020 +_080A0F94: .4byte sub_807E3EC +_080A0F98: .4byte sub_805671C +_080A0F9C: + cmp r0, 0x7 + bne _080A0FB0 + ldr r0, _080A0FB4 @ =gUnknown_81BFBD7 + bl sub_8069AE4 + bl sub_8069B28 + ldr r0, _080A0FB8 @ =sub_80568E0 + bl sub_8000544 +_080A0FB0: + pop {r0} + bx r0 + .align 2, 0 +_080A0FB4: .4byte gUnknown_81BFBD7 +_080A0FB8: .4byte sub_80568E0 + thumb_func_end sub_80A0F4C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/save.s b/asm/save.s new file mode 100644 index 000000000..dd57c8439 --- /dev/null +++ b/asm/save.s @@ -0,0 +1,2156 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D972C +sub_80D972C: @ 80D972C + push {r4,r5,lr} + movs r4, 0 + ldr r5, _080D974C @ =EraseFlashSector +_080D9732: + ldr r1, [r5] + adds r0, r4, 0 + bl _call_via_r1 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1F + bls _080D9732 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D974C: .4byte EraseFlashSector + thumb_func_end sub_80D972C + + thumb_func_start sub_80D9750 +sub_80D9750: @ 80D9750 + ldr r0, _080D9760 @ =gUnknown_3005390 + movs r1, 0 + str r1, [r0] + ldr r0, _080D9764 @ =gUnknown_3005380 + strh r1, [r0] + ldr r0, _080D9768 @ =gUnknown_300538C + str r1, [r0] + bx lr + .align 2, 0 +_080D9760: .4byte gUnknown_3005390 +_080D9764: .4byte gUnknown_3005380 +_080D9768: .4byte gUnknown_300538C + thumb_func_end sub_80D9750 + + thumb_func_start sub_80D976C +sub_80D976C: @ 80D976C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + movs r4, 0 + cmp r0, 0x1 + beq _080D97A0 + cmp r0, 0x1 + bgt _080D9786 + cmp r0, 0 + beq _080D978C + b _080D97C4 +_080D9786: + cmp r0, 0x2 + beq _080D97B4 + b _080D97C4 +_080D978C: + ldr r2, _080D979C @ =gUnknown_300538C + movs r1, 0x1 + lsls r1, r3 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + b _080D97C4 + .align 2, 0 +_080D979C: .4byte gUnknown_300538C +_080D97A0: + ldr r2, _080D97B0 @ =gUnknown_300538C + adds r1, r0, 0 + lsls r1, r3 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + b _080D97C4 + .align 2, 0 +_080D97B0: .4byte gUnknown_300538C +_080D97B4: + ldr r0, _080D97CC @ =gUnknown_300538C + movs r1, 0x1 + lsls r1, r3 + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + beq _080D97C4 + movs r4, 0x1 +_080D97C4: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D97CC: .4byte gUnknown_300538C + thumb_func_end sub_80D976C + + thumb_func_start sub_80D97D0 +sub_80D97D0: @ 80D97D0 + push {r4-r7,lr} + adds r7, r1, 0 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, _080D97F4 @ =gUnknown_3005394 + ldr r0, _080D97F8 @ =gUnknown_2039A38 + str r0, [r1] + ldr r0, _080D97FC @ =0x0000ffff + cmp r2, r0 + beq _080D9800 + adds r0, r2, 0 + adds r1, r7, 0 + bl sub_80D9870 + lsls r0, 24 + lsrs r5, r0, 24 + b _080D9852 + .align 2, 0 +_080D97F4: .4byte gUnknown_3005394 +_080D97F8: .4byte gUnknown_2039A38 +_080D97FC: .4byte 0x0000ffff +_080D9800: + ldr r1, _080D985C @ =gUnknown_3005388 + ldr r5, _080D9860 @ =gUnknown_3005380 + ldrh r0, [r5] + strh r0, [r1] + ldr r1, _080D9864 @ =gUnknown_3005384 + ldr r6, _080D9868 @ =gUnknown_3005390 + ldr r4, [r6] + str r4, [r1] + adds r0, 0x1 + strh r0, [r5] + ldrh r0, [r5] + movs r1, 0xE + bl __umodsi3 + strh r0, [r5] + adds r4, 0x1 + str r4, [r6] + movs r5, 0x1 + movs r4, 0 +_080D9826: + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80D9870 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xD + bls _080D9826 + ldr r0, _080D986C @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080D9852 + movs r5, 0xFF + ldr r1, _080D9860 @ =gUnknown_3005380 + ldr r0, _080D985C @ =gUnknown_3005388 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080D9868 @ =gUnknown_3005390 + ldr r0, _080D9864 @ =gUnknown_3005384 + ldr r0, [r0] + str r0, [r1] +_080D9852: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D985C: .4byte gUnknown_3005388 +_080D9860: .4byte gUnknown_3005380 +_080D9864: .4byte gUnknown_3005384 +_080D9868: .4byte gUnknown_3005390 +_080D986C: .4byte gUnknown_300538C + thumb_func_end sub_80D97D0 + + thumb_func_start sub_80D9870 +sub_80D9870: @ 80D9870 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r1, 0 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _080D993C @ =gUnknown_3005380 + ldrh r0, [r0] + adds r0, r6, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r5, 0 + movs r1, 0xE + bl __umodsi3 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r2, _080D9940 @ =gUnknown_3005390 + ldr r1, [r2] + movs r0, 0x1 + ands r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r0, r6, 3 + adds r0, r4 + ldr r1, [r0] + mov r10, r1 + ldrh r4, [r0, 0x4] + movs r3, 0 + mov r9, r2 + ldr r2, _080D9944 @ =gUnknown_3005394 + mov r12, r2 + mov r8, r12 + movs r2, 0 + ldr r1, _080D9948 @ =0x00000fff +_080D98C2: + mov r7, r8 + ldr r0, [r7] + adds r0, r3 + strb r2, [r0] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r1 + bls _080D98C2 + mov r0, r12 + ldr r1, [r0] + ldr r2, _080D994C @ =0x00000ff4 + adds r0, r1, r2 + strh r6, [r0] + ldr r3, _080D9950 @ =0x00000ff8 + adds r2, r1, r3 + ldr r0, _080D9954 @ =0x08012025 + str r0, [r2] + ldr r6, _080D9958 @ =0x00000ffc + adds r1, r6 + mov r7, r9 + ldr r0, [r7] + str r0, [r1] + movs r3, 0 + lsls r5, 24 + cmp r3, r4 + bcs _080D9910 + mov r2, r12 +_080D98FA: + ldr r1, [r2] + adds r1, r3 + mov r6, r10 + adds r0, r6, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bcc _080D98FA +_080D9910: + mov r0, r10 + adds r1, r4, 0 + bl sub_80DA1A8 + ldr r1, _080D9944 @ =gUnknown_3005394 + ldr r1, [r1] + ldr r7, _080D995C @ =0x00000ff6 + adds r2, r1, r7 + strh r0, [r2] + lsrs r0, r5, 24 + bl sub_80D99D8 + lsls r0, 24 + lsrs r0, 24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D993C: .4byte gUnknown_3005380 +_080D9940: .4byte gUnknown_3005390 +_080D9944: .4byte gUnknown_3005394 +_080D9948: .4byte 0x00000fff +_080D994C: .4byte 0x00000ff4 +_080D9950: .4byte 0x00000ff8 +_080D9954: .4byte 0x08012025 +_080D9958: .4byte 0x00000ffc +_080D995C: .4byte 0x00000ff6 + thumb_func_end sub_80D9870 + + thumb_func_start sub_80D9960 +sub_80D9960: @ 80D9960 + push {r4-r7,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r2, 16 + lsrs r2, 16 + ldr r4, _080D99C4 @ =gUnknown_2039A38 + movs r3, 0 + movs r6, 0 + ldr r1, _080D99C8 @ =0x00000fff +_080D9974: + adds r0, r4, r3 + strb r6, [r0] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r1 + bls _080D9974 + ldr r0, _080D99CC @ =0x00000ff8 + adds r1, r4, r0 + ldr r0, _080D99D0 @ =0x08012025 + str r0, [r1] + movs r3, 0 + cmp r3, r2 + bcs _080D99A2 +_080D9990: + adds r1, r4, r3 + adds r0, r5, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r2 + bcc _080D9990 +_080D99A2: + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80DA1A8 + ldr r2, _080D99D4 @ =0x00000ff4 + adds r1, r4, r2 + strh r0, [r1] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_80D99D8 + lsls r0, 24 + lsrs r0, 24 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D99C4: .4byte gUnknown_2039A38 +_080D99C8: .4byte 0x00000fff +_080D99CC: .4byte 0x00000ff8 +_080D99D0: .4byte 0x08012025 +_080D99D4: .4byte 0x00000ff4 + thumb_func_end sub_80D9960 + + thumb_func_start sub_80D99D8 +sub_80D99D8: @ 80D99D8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl ProgramFlashSectorAndVerify + cmp r0, 0 + bne _080D99F4 + movs r0, 0x1 + adds r1, r4, 0 + bl sub_80D976C + movs r0, 0x1 + b _080D99FE +_080D99F4: + movs r0, 0 + adds r1, r4, 0 + bl sub_80D976C + movs r0, 0xFF +_080D99FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D99D8 + + thumb_func_start sub_80D9A04 +sub_80D9A04: @ 80D9A04 + push {r4-r6,lr} + ldr r1, _080D9A40 @ =gUnknown_3005394 + ldr r0, _080D9A44 @ =gUnknown_2039A38 + str r0, [r1] + ldr r1, _080D9A48 @ =gUnknown_3005388 + ldr r5, _080D9A4C @ =gUnknown_3005380 + ldrh r0, [r5] + strh r0, [r1] + ldr r1, _080D9A50 @ =gUnknown_3005384 + ldr r6, _080D9A54 @ =gUnknown_3005390 + ldr r4, [r6] + str r4, [r1] + adds r0, 0x1 + strh r0, [r5] + ldrh r0, [r5] + movs r1, 0xE + bl __umodsi3 + strh r0, [r5] + adds r4, 0x1 + str r4, [r6] + ldr r1, _080D9A58 @ =gUnknown_3005398 + movs r0, 0 + strh r0, [r1] + ldr r1, _080D9A5C @ =gUnknown_300538C + movs r0, 0 + str r0, [r1] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D9A40: .4byte gUnknown_3005394 +_080D9A44: .4byte gUnknown_2039A38 +_080D9A48: .4byte gUnknown_3005388 +_080D9A4C: .4byte gUnknown_3005380 +_080D9A50: .4byte gUnknown_3005384 +_080D9A54: .4byte gUnknown_3005390 +_080D9A58: .4byte gUnknown_3005398 +_080D9A5C: .4byte gUnknown_300538C + thumb_func_end sub_80D9A04 + + thumb_func_start sub_80D9A60 +sub_80D9A60: @ 80D9A60 + ldr r1, _080D9A84 @ =gUnknown_3005394 + ldr r0, _080D9A88 @ =gUnknown_2039A38 + str r0, [r1] + ldr r1, _080D9A8C @ =gUnknown_3005388 + ldr r0, _080D9A90 @ =gUnknown_3005380 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080D9A94 @ =gUnknown_3005384 + ldr r0, _080D9A98 @ =gUnknown_3005390 + ldr r0, [r0] + str r0, [r1] + ldr r1, _080D9A9C @ =gUnknown_3005398 + movs r0, 0 + strh r0, [r1] + ldr r1, _080D9AA0 @ =gUnknown_300538C + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_080D9A84: .4byte gUnknown_3005394 +_080D9A88: .4byte gUnknown_2039A38 +_080D9A8C: .4byte gUnknown_3005388 +_080D9A90: .4byte gUnknown_3005380 +_080D9A94: .4byte gUnknown_3005384 +_080D9A98: .4byte gUnknown_3005390 +_080D9A9C: .4byte gUnknown_3005398 +_080D9AA0: .4byte gUnknown_300538C + thumb_func_end sub_80D9A60 + + thumb_func_start sub_80D9AA4 +sub_80D9AA4: @ 80D9AA4 + push {r4,r5,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _080D9AE0 @ =gUnknown_3005398 + ldrh r2, [r4] + subs r0, 0x1 + cmp r2, r0 + bge _080D9AF8 + movs r5, 0x1 + adds r0, r2, 0 + bl sub_80D9870 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldr r0, _080D9AE4 @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080D9AFA + movs r5, 0xFF + ldr r1, _080D9AE8 @ =gUnknown_3005380 + ldr r0, _080D9AEC @ =gUnknown_3005388 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080D9AF0 @ =gUnknown_3005390 + ldr r0, _080D9AF4 @ =gUnknown_3005384 + ldr r0, [r0] + str r0, [r1] + b _080D9AFA + .align 2, 0 +_080D9AE0: .4byte gUnknown_3005398 +_080D9AE4: .4byte gUnknown_300538C +_080D9AE8: .4byte gUnknown_3005380 +_080D9AEC: .4byte gUnknown_3005388 +_080D9AF0: .4byte gUnknown_3005390 +_080D9AF4: .4byte gUnknown_3005384 +_080D9AF8: + movs r5, 0xFF +_080D9AFA: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D9AA4 + + thumb_func_start sub_80D9B04 +sub_80D9B04: @ 80D9B04 + push {r4,lr} + lsls r0, 16 + movs r4, 0x1 + ldr r2, _080D9B38 @ =0xffff0000 + adds r0, r2 + lsrs r0, 16 + bl sub_80D9B50 + ldr r0, _080D9B3C @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080D9B2E + movs r4, 0xFF + ldr r1, _080D9B40 @ =gUnknown_3005380 + ldr r0, _080D9B44 @ =gUnknown_3005388 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080D9B48 @ =gUnknown_3005390 + ldr r0, _080D9B4C @ =gUnknown_3005384 + ldr r0, [r0] + str r0, [r1] +_080D9B2E: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D9B38: .4byte 0xffff0000 +_080D9B3C: .4byte gUnknown_300538C +_080D9B40: .4byte gUnknown_3005380 +_080D9B44: .4byte gUnknown_3005388 +_080D9B48: .4byte gUnknown_3005390 +_080D9B4C: .4byte gUnknown_3005384 + thumb_func_end sub_80D9B04 + + thumb_func_start sub_80D9B50 +sub_80D9B50: @ 80D9B50 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r1, 0 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _080D9C1C @ =gUnknown_3005380 + ldrh r0, [r0] + adds r0, r6, r0 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r5, 0 + movs r1, 0xE + bl __umodsi3 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r2, _080D9C20 @ =gUnknown_3005390 + ldr r1, [r2] + movs r0, 0x1 + ands r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r0, r6, 3 + adds r0, r4 + ldr r1, [r0] + mov r10, r1 + ldrh r3, [r0, 0x4] + movs r4, 0 + mov r9, r2 + ldr r2, _080D9C24 @ =gUnknown_3005394 + mov r12, r2 + mov r8, r12 + movs r2, 0 + ldr r1, _080D9C28 @ =0x00000fff +_080D9BA2: + mov r7, r8 + ldr r0, [r7] + adds r0, r4 + strb r2, [r0] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r1 + bls _080D9BA2 + mov r0, r12 + ldr r1, [r0] + ldr r2, _080D9C2C @ =0x00000ff4 + adds r0, r1, r2 + strh r6, [r0] + ldr r6, _080D9C30 @ =0x00000ff8 + adds r2, r1, r6 + ldr r0, _080D9C34 @ =0x08012025 + str r0, [r2] + ldr r7, _080D9C38 @ =0x00000ffc + adds r1, r7 + mov r2, r9 + ldr r0, [r2] + str r0, [r1] + movs r4, 0 + lsls r6, r5, 24 + mov r8, r6 + cmp r4, r3 + bcs _080D9BF2 + mov r2, r12 +_080D9BDC: + ldr r1, [r2] + adds r1, r4 + mov r7, r10 + adds r0, r7, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r3 + bcc _080D9BDC +_080D9BF2: + mov r0, r10 + adds r1, r3, 0 + bl sub_80DA1A8 + ldr r1, _080D9C24 @ =gUnknown_3005394 + ldr r1, [r1] + ldr r2, _080D9C3C @ =0x00000ff6 + adds r1, r2 + strh r0, [r1] + ldr r0, _080D9C40 @ =EraseFlashSector + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + movs r6, 0x1 + movs r4, 0 + ldr r7, _080D9C44 @ =0x00000ff7 + mov r9, r7 + ldr r7, _080D9C48 @ =ProgramFlashByte + b _080D9C52 + .align 2, 0 +_080D9C1C: .4byte gUnknown_3005380 +_080D9C20: .4byte gUnknown_3005390 +_080D9C24: .4byte gUnknown_3005394 +_080D9C28: .4byte 0x00000fff +_080D9C2C: .4byte 0x00000ff4 +_080D9C30: .4byte 0x00000ff8 +_080D9C34: .4byte 0x08012025 +_080D9C38: .4byte 0x00000ffc +_080D9C3C: .4byte 0x00000ff6 +_080D9C40: .4byte EraseFlashSector +_080D9C44: .4byte 0x00000ff7 +_080D9C48: .4byte ProgramFlashByte +_080D9C4C: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_080D9C52: + cmp r4, r9 + bhi _080D9C70 + ldr r0, _080D9C7C @ =gUnknown_3005394 + ldr r0, [r0] + adds r0, r4 + ldrb r2, [r0] + ldr r3, [r7] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r3 + lsls r0, 16 + cmp r0, 0 + beq _080D9C4C + movs r6, 0xFF +_080D9C70: + cmp r6, 0xFF + bne _080D9C80 + mov r0, r8 + lsrs r1, r0, 24 + b _080D9CD8 + .align 2, 0 +_080D9C7C: .4byte gUnknown_3005394 +_080D9C80: + movs r6, 0x1 + movs r4, 0 + ldr r1, _080D9C8C @ =ProgramFlashByte + mov r9, r1 + ldr r7, _080D9C90 @ =0x00000ff9 + b _080D9C9A + .align 2, 0 +_080D9C8C: .4byte ProgramFlashByte +_080D9C90: .4byte 0x00000ff9 +_080D9C94: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_080D9C9A: + cmp r4, 0x6 + bhi _080D9CBC + adds r1, r4, r7 + ldr r0, _080D9CD0 @ =gUnknown_3005394 + ldr r0, [r0] + adds r0, r4, r0 + adds r0, r7 + ldrb r2, [r0] + mov r0, r9 + ldr r3, [r0] + adds r0, r5, 0 + bl _call_via_r3 + lsls r0, 16 + cmp r0, 0 + beq _080D9C94 + movs r6, 0xFF +_080D9CBC: + cmp r6, 0xFF + beq _080D9CD4 + mov r2, r8 + lsrs r1, r2, 24 + movs r0, 0x1 + bl sub_80D976C + movs r0, 0x1 + b _080D9CE0 + .align 2, 0 +_080D9CD0: .4byte gUnknown_3005394 +_080D9CD4: + mov r6, r8 + lsrs r1, r6, 24 +_080D9CD8: + movs r0, 0 + bl sub_80D976C + movs r0, 0xFF +_080D9CE0: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D9B50 + + thumb_func_start sub_80D9CF0 +sub_80D9CF0: @ 80D9CF0 + push {r4-r6,lr} + lsls r0, 16 + ldr r6, _080D9D4C @ =gUnknown_3005380 + lsrs r0, 16 + ldrh r1, [r6] + adds r0, r1 + subs r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0xE + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r5, _080D9D50 @ =gUnknown_3005390 + ldr r1, [r5] + movs r0, 0x1 + ands r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r3, _080D9D54 @ =ProgramFlashByte + ldr r1, _080D9D58 @ =0x00000ff8 + ldr r0, _080D9D5C @ =gUnknown_3005394 + ldr r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r3, [r3] + adds r0, r4, 0 + bl _call_via_r3 + lsls r0, 16 + cmp r0, 0 + bne _080D9D60 + lsls r1, r4, 24 + lsrs r1, 24 + movs r0, 0x1 + bl sub_80D976C + movs r0, 0x1 + b _080D9D78 + .align 2, 0 +_080D9D4C: .4byte gUnknown_3005380 +_080D9D50: .4byte gUnknown_3005390 +_080D9D54: .4byte ProgramFlashByte +_080D9D58: .4byte 0x00000ff8 +_080D9D5C: .4byte gUnknown_3005394 +_080D9D60: + lsls r1, r4, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80D976C + ldr r0, _080D9D80 @ =gUnknown_3005388 + ldrh r0, [r0] + strh r0, [r6] + ldr r0, _080D9D84 @ =gUnknown_3005384 + ldr r0, [r0] + str r0, [r5] + movs r0, 0xFF +_080D9D78: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D9D80: .4byte gUnknown_3005388 +_080D9D84: .4byte gUnknown_3005384 + thumb_func_end sub_80D9CF0 + + thumb_func_start sub_80D9D88 +sub_80D9D88: @ 80D9D88 + push {r4-r6,lr} + lsls r0, 16 + ldr r6, _080D9DDC @ =gUnknown_3005380 + lsrs r0, 16 + ldrh r1, [r6] + adds r0, r1 + subs r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0xE + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r5, _080D9DE0 @ =gUnknown_3005390 + ldr r1, [r5] + movs r0, 0x1 + ands r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080D9DE4 @ =ProgramFlashByte + ldr r1, _080D9DE8 @ =0x00000ff8 + ldr r3, [r0] + adds r0, r4, 0 + movs r2, 0x25 + bl _call_via_r3 + lsls r0, 16 + cmp r0, 0 + bne _080D9DEC + lsls r1, r4, 24 + lsrs r1, 24 + movs r0, 0x1 + bl sub_80D976C + movs r0, 0x1 + b _080D9E04 + .align 2, 0 +_080D9DDC: .4byte gUnknown_3005380 +_080D9DE0: .4byte gUnknown_3005390 +_080D9DE4: .4byte ProgramFlashByte +_080D9DE8: .4byte 0x00000ff8 +_080D9DEC: + lsls r1, r4, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_80D976C + ldr r0, _080D9E0C @ =gUnknown_3005388 + ldrh r0, [r0] + strh r0, [r6] + ldr r0, _080D9E10 @ =gUnknown_3005384 + ldr r0, [r0] + str r0, [r5] + movs r0, 0xFF +_080D9E04: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080D9E0C: .4byte gUnknown_3005388 +_080D9E10: .4byte gUnknown_3005384 + thumb_func_end sub_80D9D88 + + thumb_func_start sub_80D9E14 +sub_80D9E14: @ 80D9E14 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r1, _080D9E2C @ =gUnknown_3005394 + ldr r0, _080D9E30 @ =gUnknown_2039A38 + str r0, [r1] + ldr r0, _080D9E34 @ =0x0000ffff + cmp r4, r0 + beq _080D9E38 + movs r5, 0xFF + b _080D9E4A + .align 2, 0 +_080D9E2C: .4byte gUnknown_3005394 +_080D9E30: .4byte gUnknown_2039A38 +_080D9E34: .4byte 0x0000ffff +_080D9E38: + adds r0, r6, 0 + bl sub_80D9F0C + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80D9E54 +_080D9E4A: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80D9E14 + + thumb_func_start sub_80D9E54 +sub_80D9E54: @ 80D9E54 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + ldr r0, _080D9EF0 @ =gUnknown_3005390 + ldr r1, [r0] + movs r0, 0x1 + ands r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 17 + lsrs r7, r0, 16 + movs r5, 0 + ldr r6, _080D9EF4 @ =gUnknown_3005394 +_080D9E70: + adds r0, r5, r7 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r6] + bl sub_80DA190 + ldr r0, [r6] + ldr r1, _080D9EF8 @ =0x00000ff4 + adds r0, r1 + ldrh r1, [r0] + cmp r1, 0 + bne _080D9E8C + ldr r0, _080D9EFC @ =gUnknown_3005380 + strh r5, [r0] +_080D9E8C: + ldr r0, [r6] + lsls r1, 3 + mov r2, r8 + adds r4, r1, r2 + ldrh r1, [r4, 0x4] + bl sub_80DA1A8 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r2, [r6] + ldr r1, _080D9F00 @ =0x00000ff8 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _080D9F04 @ =0x08012025 + adds r5, 0x1 + cmp r1, r0 + bne _080D9EDC + ldr r1, _080D9F08 @ =0x00000ff6 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _080D9EDC + movs r2, 0 + ldrh r0, [r4, 0x4] + cmp r2, r0 + bcs _080D9EDC + adds r3, r4, 0 + ldr r4, _080D9EF4 @ =gUnknown_3005394 +_080D9EC4: + ldr r1, [r3] + adds r1, r2 + ldr r0, [r4] + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r1, [r3, 0x4] + cmp r2, r1 + bcc _080D9EC4 +_080D9EDC: + lsls r0, r5, 16 + lsrs r5, r0, 16 + cmp r5, 0xD + bls _080D9E70 + movs r0, 0x1 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080D9EF0: .4byte gUnknown_3005390 +_080D9EF4: .4byte gUnknown_3005394 +_080D9EF8: .4byte 0x00000ff4 +_080D9EFC: .4byte gUnknown_3005380 +_080D9F00: .4byte 0x00000ff8 +_080D9F04: .4byte 0x08012025 +_080D9F08: .4byte 0x00000ff6 + thumb_func_end sub_80D9E54 + + thumb_func_start sub_80D9F0C +sub_80D9F0C: @ 80D9F0C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + movs r0, 0 + mov r8, r0 + mov r9, r0 + movs r6, 0 + movs r5, 0 + movs r4, 0 + ldr r7, _080D9F98 @ =gUnknown_3005394 +_080D9F28: + lsls r0, r4, 24 + lsrs r0, 24 + ldr r1, [r7] + bl sub_80DA190 + ldr r2, [r7] + ldr r1, _080D9F9C @ =0x00000ff8 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _080D9FA0 @ =0x08012025 + cmp r1, r0 + bne _080D9F78 + movs r5, 0x1 + ldr r3, _080D9FA4 @ =0x00000ff4 + adds r0, r2, r3 + ldrh r0, [r0] + lsls r0, 3 + add r0, r10 + ldrh r1, [r0, 0x4] + adds r0, r2, 0 + bl sub_80DA1A8 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, [r7] + ldr r3, _080D9FA8 @ =0x00000ff6 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _080D9F78 + ldr r2, _080D9FAC @ =0x00000ffc + adds r0, r1, r2 + ldr r0, [r0] + mov r8, r0 + subs r3, 0x2 + adds r1, r3 + adds r0, r5, 0 + ldrh r1, [r1] + lsls r0, r1 + orrs r6, r0 +_080D9F78: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xD + bls _080D9F28 + cmp r5, 0 + beq _080D9FB4 + ldr r0, _080D9FB0 @ =0x00003fff + movs r1, 0xFF + str r1, [sp] + cmp r6, r0 + bne _080D9FB8 + movs r2, 0x1 + str r2, [sp] + b _080D9FB8 + .align 2, 0 +_080D9F98: .4byte gUnknown_3005394 +_080D9F9C: .4byte 0x00000ff8 +_080D9FA0: .4byte 0x08012025 +_080D9FA4: .4byte 0x00000ff4 +_080D9FA8: .4byte 0x00000ff6 +_080D9FAC: .4byte 0x00000ffc +_080D9FB0: .4byte 0x00003fff +_080D9FB4: + movs r3, 0 + str r3, [sp] +_080D9FB8: + movs r6, 0 + movs r5, 0 + movs r4, 0 + ldr r7, _080DA030 @ =gUnknown_3005394 +_080D9FC0: + adds r0, r4, 0 + adds r0, 0xE + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r7] + bl sub_80DA190 + ldr r2, [r7] + ldr r1, _080DA034 @ =0x00000ff8 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _080DA038 @ =0x08012025 + cmp r1, r0 + bne _080DA014 + movs r5, 0x1 + ldr r3, _080DA03C @ =0x00000ff4 + adds r0, r2, r3 + ldrh r0, [r0] + lsls r0, 3 + add r0, r10 + ldrh r1, [r0, 0x4] + adds r0, r2, 0 + bl sub_80DA1A8 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r1, [r7] + ldr r3, _080DA040 @ =0x00000ff6 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _080DA014 + ldr r2, _080DA044 @ =0x00000ffc + adds r0, r1, r2 + ldr r0, [r0] + mov r9, r0 + subs r3, 0x2 + adds r1, r3 + adds r0, r5, 0 + ldrh r1, [r1] + lsls r0, r1 + orrs r6, r0 +_080DA014: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xD + bls _080D9FC0 + cmp r5, 0 + beq _080DA04C + ldr r0, _080DA048 @ =0x00003fff + movs r1, 0xFF + cmp r6, r0 + bne _080DA04E + movs r1, 0x1 + b _080DA04E + .align 2, 0 +_080DA030: .4byte gUnknown_3005394 +_080DA034: .4byte 0x00000ff8 +_080DA038: .4byte 0x08012025 +_080DA03C: .4byte 0x00000ff4 +_080DA040: .4byte 0x00000ff6 +_080DA044: .4byte 0x00000ffc +_080DA048: .4byte 0x00003fff +_080DA04C: + movs r1, 0 +_080DA04E: + ldr r0, [sp] + cmp r0, 0x1 + bne _080DA0C0 + cmp r1, 0x1 + bne _080DA0B0 + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + bne _080DA066 + mov r1, r9 + cmp r1, 0 + beq _080DA070 +_080DA066: + mov r2, r8 + cmp r2, 0 + bne _080DA094 + cmp r9, r0 + bne _080DA094 +_080DA070: + mov r1, r8 + adds r1, 0x1 + mov r0, r9 + adds r0, 0x1 + cmp r1, r0 + bcs _080DA088 + ldr r0, _080DA084 @ =gUnknown_3005390 + mov r3, r9 + b _080DA0A8 + .align 2, 0 +_080DA084: .4byte gUnknown_3005390 +_080DA088: + ldr r0, _080DA090 @ =gUnknown_3005390 + mov r1, r8 + str r1, [r0] + b _080DA0D8 + .align 2, 0 +_080DA090: .4byte gUnknown_3005390 +_080DA094: + cmp r8, r9 + bcs _080DA0A4 + ldr r0, _080DA0A0 @ =gUnknown_3005390 + mov r2, r9 + str r2, [r0] + b _080DA0D8 + .align 2, 0 +_080DA0A0: .4byte gUnknown_3005390 +_080DA0A4: + ldr r0, _080DA0AC @ =gUnknown_3005390 + mov r3, r8 +_080DA0A8: + str r3, [r0] + b _080DA0D8 + .align 2, 0 +_080DA0AC: .4byte gUnknown_3005390 +_080DA0B0: + ldr r0, _080DA0BC @ =gUnknown_3005390 + mov r2, r8 + str r2, [r0] + cmp r1, 0xFF + beq _080DA0D0 + b _080DA0D8 + .align 2, 0 +_080DA0BC: .4byte gUnknown_3005390 +_080DA0C0: + cmp r1, 0x1 + bne _080DA0DC + ldr r0, _080DA0D4 @ =gUnknown_3005390 + mov r3, r9 + str r3, [r0] + ldr r0, [sp] + cmp r0, 0xFF + bne _080DA0D8 +_080DA0D0: + movs r0, 0xFF + b _080DA108 + .align 2, 0 +_080DA0D4: .4byte gUnknown_3005390 +_080DA0D8: + movs r0, 0x1 + b _080DA108 +_080DA0DC: + ldr r2, [sp] + cmp r2, 0 + bne _080DA0FC + cmp r1, 0 + bne _080DA0FC + ldr r0, _080DA0F4 @ =gUnknown_3005390 + str r1, [r0] + ldr r0, _080DA0F8 @ =gUnknown_3005380 + strh r1, [r0] + movs r0, 0 + b _080DA108 + .align 2, 0 +_080DA0F4: .4byte gUnknown_3005390 +_080DA0F8: .4byte gUnknown_3005380 +_080DA0FC: + ldr r0, _080DA118 @ =gUnknown_3005390 + movs r1, 0 + str r1, [r0] + ldr r0, _080DA11C @ =gUnknown_3005380 + strh r1, [r0] + movs r0, 0x2 +_080DA108: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080DA118: .4byte gUnknown_3005390 +_080DA11C: .4byte gUnknown_3005380 + thumb_func_end sub_80D9F0C + + thumb_func_start sub_80DA120 +sub_80DA120: @ 80DA120 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r4, r2, 16 + ldr r5, _080DA174 @ =gUnknown_2039A38 + adds r1, r5, 0 + bl sub_80DA190 + ldr r1, _080DA178 @ =0x00000ff8 + adds r0, r5, r1 + ldr r1, [r0] + ldr r0, _080DA17C @ =0x08012025 + cmp r1, r0 + bne _080DA188 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80DA1A8 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _080DA180 @ =0x00000ff4 + adds r1, r5, r2 + ldrh r1, [r1] + cmp r1, r0 + bne _080DA184 + movs r2, 0 + cmp r2, r4 + bcs _080DA16E +_080DA15C: + adds r1, r6, r2 + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r4 + bcc _080DA15C +_080DA16E: + movs r0, 0x1 + b _080DA18A + .align 2, 0 +_080DA174: .4byte gUnknown_2039A38 +_080DA178: .4byte 0x00000ff8 +_080DA17C: .4byte 0x08012025 +_080DA180: .4byte 0x00000ff4 +_080DA184: + movs r0, 0x2 + b _080DA18A +_080DA188: + movs r0, 0 +_080DA18A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80DA120 + + thumb_func_start sub_80DA190 +sub_80DA190: @ 80DA190 + push {lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + movs r3, 0x80 + lsls r3, 5 + movs r1, 0 + bl ReadFlash + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_80DA190 + + thumb_func_start sub_80DA1A8 +sub_80DA1A8: @ 80DA1A8 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 16 + movs r2, 0 + movs r3, 0 + lsrs r1, 18 + cmp r2, r1 + bcs _080DA1C6 +_080DA1B8: + ldm r4!, {r0} + adds r2, r0 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r1 + bcc _080DA1B8 +_080DA1C6: + lsrs r0, r2, 16 + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DA1A8 + + thumb_func_start sub_80DA1D4 +sub_80DA1D4: @ 80DA1D4 + push {r4,r5,lr} + ldr r3, _080DA234 @ =gUnknown_30053B0 + ldr r0, _080DA238 @ =gUnknown_300500C + ldr r2, _080DA23C @ =gUnknown_83FEC94 + ldrh r1, [r2] + ldr r0, [r0] + adds r0, r1 + str r0, [r3] + ldrh r0, [r2, 0x2] + strh r0, [r3, 0x4] + ldr r5, _080DA240 @ =gUnknown_3005008 + adds r3, 0x8 + adds r2, 0x4 + movs r4, 0x3 +_080DA1F0: + ldrh r0, [r2] + ldr r1, [r5] + adds r1, r0 + str r1, [r3] + ldrh r0, [r2, 0x2] + strh r0, [r3, 0x4] + adds r3, 0x8 + adds r2, 0x4 + subs r4, 0x1 + cmp r4, 0 + bge _080DA1F0 + movs r4, 0x5 + ldr r1, _080DA234 @ =gUnknown_30053B0 + ldr r5, _080DA244 @ =gUnknown_3005010 + ldr r0, _080DA23C @ =gUnknown_83FEC94 + adds r3, r1, 0 + adds r3, 0x28 + adds r2, r0, 0 + adds r2, 0x14 +_080DA216: + ldrh r0, [r2] + ldr r1, [r5] + adds r1, r0 + str r1, [r3] + ldrh r0, [r2, 0x2] + strh r0, [r3, 0x4] + adds r3, 0x8 + adds r2, 0x4 + adds r4, 0x1 + cmp r4, 0xD + ble _080DA216 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA234: .4byte gUnknown_30053B0 +_080DA238: .4byte gUnknown_300500C +_080DA23C: .4byte gUnknown_83FEC94 +_080DA240: .4byte gUnknown_3005008 +_080DA244: .4byte gUnknown_3005010 + thumb_func_end sub_80DA1D4 + + thumb_func_start sub_80DA248 +sub_80DA248: @ 80DA248 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080DA268 @ =gUnknown_30030F0 + ldr r6, [r1, 0x20] + movs r0, 0 + str r0, [r1, 0x20] + bl sub_80DA1D4 + cmp r4, 0x5 + bhi _080DA2CC + lsls r0, r4, 2 + ldr r1, _080DA26C @ =_080DA270 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DA268: .4byte gUnknown_30030F0 +_080DA26C: .4byte _080DA270 + .align 2, 0 +_080DA270: + .4byte _080DA2CC + .4byte _080DA2F0 + .4byte _080DA310 + .4byte _080DA29E + .4byte _080DA324 + .4byte _080DA288 +_080DA288: + movs r4, 0x1C + ldr r5, _080DA2DC @ =EraseFlashSector +_080DA28C: + ldr r1, [r5] + adds r0, r4, 0 + bl _call_via_r1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _080DA28C +_080DA29E: + movs r0, 0xA + bl sub_8054EC4 + ldr r1, _080DA2E0 @ =0x000003e6 + cmp r0, r1 + bhi _080DA2B0 + movs r0, 0xA + bl sub_8054E90 +_080DA2B0: + ldr r4, _080DA2E4 @ =gUnknown_201C000 + movs r5, 0xF8 + lsls r5, 4 + movs r0, 0x1C + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80D9960 + adds r4, r5 + movs r0, 0x1D + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80D9960 +_080DA2CC: + bl sub_804C300 + ldr r0, _080DA2E8 @ =0x0000ffff + ldr r1, _080DA2EC @ =gUnknown_30053B0 + bl sub_80D97D0 + b _080DA346 + .align 2, 0 +_080DA2DC: .4byte EraseFlashSector +_080DA2E0: .4byte 0x000003e6 +_080DA2E4: .4byte gUnknown_201C000 +_080DA2E8: .4byte 0x0000ffff +_080DA2EC: .4byte gUnknown_30053B0 +_080DA2F0: + bl sub_804C300 + movs r4, 0 +_080DA2F6: + adds r0, r4, 0 + ldr r1, _080DA30C @ =gUnknown_30053B0 + bl sub_80D97D0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bls _080DA2F6 + b _080DA346 + .align 2, 0 +_080DA30C: .4byte gUnknown_30053B0 +_080DA310: + bl sub_804C300 + ldr r1, _080DA320 @ =gUnknown_30053B0 + movs r0, 0 + bl sub_80D97D0 + b _080DA346 + .align 2, 0 +_080DA320: .4byte gUnknown_30053B0 +_080DA324: + movs r4, 0x1C + ldr r5, _080DA354 @ =EraseFlashSector +_080DA328: + ldr r1, [r5] + adds r0, r4, 0 + bl _call_via_r1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _080DA328 + bl sub_804C300 + ldr r0, _080DA358 @ =0x0000ffff + ldr r1, _080DA35C @ =gUnknown_30053B0 + bl sub_80D97D0 +_080DA346: + ldr r0, _080DA360 @ =gUnknown_30030F0 + str r6, [r0, 0x20] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DA354: .4byte EraseFlashSector +_080DA358: .4byte 0x0000ffff +_080DA35C: .4byte gUnknown_30053B0 +_080DA360: .4byte gUnknown_30030F0 + thumb_func_end sub_80DA248 + + thumb_func_start sub_80DA364 +sub_80DA364: @ 80DA364 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080DA390 @ =gUnknown_3005004 + ldr r4, [r0] + cmp r4, 0x1 + bne _080DA386 + adds r0, r5, 0 + bl sub_80DA248 + ldr r0, _080DA394 @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080DA39C + adds r0, r5, 0 + bl sub_80F5100 +_080DA386: + ldr r1, _080DA398 @ =gUnknown_3005420 + movs r0, 0xFF + strh r0, [r1] + movs r0, 0xFF + b _080DA3A2 + .align 2, 0 +_080DA390: .4byte gUnknown_3005004 +_080DA394: .4byte gUnknown_300538C +_080DA398: .4byte gUnknown_3005420 +_080DA39C: + ldr r0, _080DA3A8 @ =gUnknown_3005420 + strh r4, [r0] + movs r0, 0x1 +_080DA3A2: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080DA3A8: .4byte gUnknown_3005420 + thumb_func_end sub_80DA364 + + thumb_func_start sub_80DA3AC +sub_80DA3AC: @ 80DA3AC + push {lr} + ldr r0, _080DA3C8 @ =gUnknown_3005004 + ldr r0, [r0] + cmp r0, 0x1 + bne _080DA3D0 + bl sub_80DA1D4 + bl sub_804C300 + ldr r0, _080DA3CC @ =gUnknown_30053B0 + bl sub_80D9A04 + movs r0, 0 + b _080DA3D2 + .align 2, 0 +_080DA3C8: .4byte gUnknown_3005004 +_080DA3CC: .4byte gUnknown_30053B0 +_080DA3D0: + movs r0, 0x1 +_080DA3D2: + pop {r1} + bx r1 + thumb_func_end sub_80DA3AC + + thumb_func_start sub_80DA3D8 +sub_80DA3D8: @ 80DA3D8 + push {r4,lr} + ldr r1, _080DA3FC @ =gUnknown_30053B0 + movs r0, 0xE + bl sub_80D9AA4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080DA400 @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080DA3F4 + movs r0, 0 + bl sub_80F5100 +_080DA3F4: + cmp r4, 0xFF + beq _080DA404 + movs r0, 0 + b _080DA406 + .align 2, 0 +_080DA3FC: .4byte gUnknown_30053B0 +_080DA400: .4byte gUnknown_300538C +_080DA404: + movs r0, 0x1 +_080DA406: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DA3D8 + + thumb_func_start sub_80DA40C +sub_80DA40C: @ 80DA40C + push {lr} + ldr r1, _080DA42C @ =gUnknown_30053B0 + movs r0, 0xE + bl sub_80D9B04 + ldr r0, _080DA430 @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080DA424 + movs r0, 0 + bl sub_80F5100 +_080DA424: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080DA42C: .4byte gUnknown_30053B0 +_080DA430: .4byte gUnknown_300538C + thumb_func_end sub_80DA40C + + thumb_func_start sub_80DA434 +sub_80DA434: @ 80DA434 + push {lr} + ldr r1, _080DA454 @ =gUnknown_30053B0 + movs r0, 0xE + bl sub_80D9CF0 + ldr r0, _080DA458 @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080DA44C + movs r0, 0 + bl sub_80F5100 +_080DA44C: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080DA454: .4byte gUnknown_30053B0 +_080DA458: .4byte gUnknown_300538C + thumb_func_end sub_80DA434 + + thumb_func_start sub_80DA45C +sub_80DA45C: @ 80DA45C + push {r4,lr} + ldr r0, _080DA48C @ =gUnknown_3005004 + ldr r0, [r0] + cmp r0, 0x1 + bne _080DA498 + bl sub_80DA1D4 + bl sub_804C300 + ldr r4, _080DA490 @ =gUnknown_30053B0 + adds r0, r4, 0 + bl sub_80D9A60 + ldr r0, _080DA494 @ =gUnknown_3005398 + ldrh r0, [r0] + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl sub_80D9B04 + movs r0, 0 + b _080DA49A + .align 2, 0 +_080DA48C: .4byte gUnknown_3005004 +_080DA490: .4byte gUnknown_30053B0 +_080DA494: .4byte gUnknown_3005398 +_080DA498: + movs r0, 0x1 +_080DA49A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80DA45C + + thumb_func_start sub_80DA4A0 +sub_80DA4A0: @ 80DA4A0 + push {r4-r6,lr} + movs r6, 0 + ldr r0, _080DA4CC @ =gUnknown_3005398 + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] + lsls r0, r1, 16 + lsrs r5, r0, 16 + cmp r5, 0x4 + bhi _080DA4D4 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + ldr r4, _080DA4D0 @ =gUnknown_30053B0 + adds r1, r4, 0 + bl sub_80D9B04 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80D9D88 + b _080DA4DE + .align 2, 0 +_080DA4CC: .4byte gUnknown_3005398 +_080DA4D0: .4byte gUnknown_30053B0 +_080DA4D4: + ldr r1, _080DA4F4 @ =gUnknown_30053B0 + adds r0, r5, 0 + bl sub_80D9D88 + movs r6, 0x1 +_080DA4DE: + ldr r0, _080DA4F8 @ =gUnknown_300538C + ldr r0, [r0] + cmp r0, 0 + beq _080DA4EC + movs r0, 0x1 + bl sub_80F5100 +_080DA4EC: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DA4F4: .4byte gUnknown_30053B0 +_080DA4F8: .4byte gUnknown_300538C + thumb_func_end sub_80DA4A0 + + thumb_func_start sub_80DA4FC +sub_80DA4FC: @ 80DA4FC + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080DA514 @ =gUnknown_3005004 + ldr r0, [r0] + cmp r0, 0x1 + beq _080DA51C + ldr r1, _080DA518 @ =gUnknown_30053A0 + movs r0, 0x4 + strh r0, [r1] + movs r0, 0xFF + b _080DA57C + .align 2, 0 +_080DA514: .4byte gUnknown_3005004 +_080DA518: .4byte gUnknown_30053A0 +_080DA51C: + bl sub_80DA1D4 + cmp r4, 0 + beq _080DA528 + cmp r4, 0x3 + beq _080DA554 +_080DA528: + ldr r0, _080DA544 @ =0x0000ffff + ldr r1, _080DA548 @ =gUnknown_30053B0 + bl sub_80D9E14 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_804C310 + ldr r0, _080DA54C @ =gUnknown_30053A0 + strh r4, [r0] + ldr r1, _080DA550 @ =gUnknown_30053A4 + movs r0, 0 + str r0, [r1] + b _080DA57A + .align 2, 0 +_080DA544: .4byte 0x0000ffff +_080DA548: .4byte gUnknown_30053B0 +_080DA54C: .4byte gUnknown_30053A0 +_080DA550: .4byte gUnknown_30053A4 +_080DA554: + ldr r5, _080DA584 @ =gUnknown_201C000 + movs r6, 0xF8 + lsls r6, 4 + movs r0, 0x1C + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80DA120 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _080DA57A + adds r1, r5, r6 + movs r0, 0x1D + adds r2, r6, 0 + bl sub_80DA120 + lsls r0, 24 + lsrs r4, r0, 24 +_080DA57A: + adds r0, r4, 0 +_080DA57C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DA584: .4byte gUnknown_201C000 + thumb_func_end sub_80DA4FC + + thumb_func_start sub_80DA588 +sub_80DA588: @ 80DA588 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xE2 + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080DA5B4 + ldr r4, _080DA5B8 @ =gUnknown_2039A38 + movs r3, 0x80 + lsls r3, 5 + adds r0, r1, 0 + movs r1, 0 + adds r2, r4, 0 + bl ReadFlash + ldr r1, [r4] + ldr r0, _080DA5BC @ =0x0000b39d + cmp r1, r0 + beq _080DA5C0 +_080DA5B4: + movs r0, 0xFF + b _080DA5D6 + .align 2, 0 +_080DA5B8: .4byte gUnknown_2039A38 +_080DA5BC: .4byte 0x0000b39d +_080DA5C0: + movs r3, 0 + ldr r5, _080DA5DC @ =0x00000ffb + adds r2, r4, 0x4 +_080DA5C6: + adds r0, r6, r3 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, r5 + ble _080DA5C6 + movs r0, 0x1 +_080DA5D6: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080DA5DC: .4byte 0x00000ffb + thumb_func_end sub_80DA588 + + thumb_func_start sub_80DA5E0 +sub_80DA5E0: @ 80DA5E0 + push {r4-r7,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0xE2 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080DA62C + ldr r7, _080DA620 @ =gUnknown_2039A38 + ldr r0, _080DA624 @ =0x0000b39d + adds r3, r7, 0 + stm r3!, {r0} + movs r2, 0 + ldr r4, _080DA628 @ =0x00000ffb +_080DA600: + adds r0, r3, r2 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r4 + ble _080DA600 + adds r0, r6, 0 + adds r1, r7, 0 + bl ProgramFlashSectorAndVerify + cmp r0, 0 + bne _080DA62C + movs r0, 0x1 + b _080DA62E + .align 2, 0 +_080DA620: .4byte gUnknown_2039A38 +_080DA624: .4byte 0x0000b39d +_080DA628: .4byte 0x00000ffb +_080DA62C: + movs r0, 0xFF +_080DA62E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80DA5E0 + + thumb_func_start sub_80DA634 +sub_80DA634: @ 80DA634 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080DA65C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0xB + bls _080DA650 + b _080DA7F6 +_080DA650: + lsls r0, 2 + ldr r1, _080DA660 @ =_080DA664 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DA65C: .4byte gUnknown_3005090 +_080DA660: .4byte _080DA664 + .align 2, 0 +_080DA664: + .4byte _080DA694 + .4byte _080DA6AC + .4byte _080DA6C4 + .4byte _080DA6E8 + .4byte _080DA6F2 + .4byte _080DA712 + .4byte _080DA744 + .4byte _080DA75C + .4byte _080DA778 + .4byte _080DA79C + .4byte _080DA7B4 + .4byte _080DA7D4 +_080DA694: + ldr r1, _080DA6A8 @ =gUnknown_3003530 + movs r0, 0x1 + strb r0, [r1] + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r2 + movs r1, 0x1 + strh r1, [r0, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA6A8: .4byte gUnknown_3003530 +_080DA6AC: + bl sub_800AB9C + ldr r0, _080DA6C0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x2 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA6C0: .4byte gUnknown_3005090 +_080DA6C4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _080DA6D0 + b _080DA7F6 +_080DA6D0: + bl sub_80590D8 + ldr r0, _080DA6E4 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x3 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA6E4: .4byte gUnknown_3005090 +_080DA6E8: + bl sub_804C1C0 + bl sub_80DA3AC + b _080DA730 +_080DA6F2: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0x5 + beq _080DA70A + b _080DA7F6 +_080DA70A: + movs r0, 0 + strh r0, [r1, 0xA] + strh r2, [r1, 0x8] + b _080DA7F6 +_080DA712: + bl sub_80DA3D8 + lsls r0, 24 + cmp r0, 0 + beq _080DA730 + ldr r0, _080DA72C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x6 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA72C: .4byte gUnknown_3005090 +_080DA730: + ldr r0, _080DA740 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x4 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA740: .4byte gUnknown_3005090 +_080DA744: + bl sub_80DA40C + ldr r0, _080DA758 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x7 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA758: .4byte gUnknown_3005090 +_080DA75C: + bl sub_804C1DC + bl sub_800AB9C + ldr r0, _080DA774 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x8 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA774: .4byte gUnknown_3005090 +_080DA778: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _080DA7F6 + bl sub_80DA434 + ldr r0, _080DA798 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0x9 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA798: .4byte gUnknown_3005090 +_080DA79C: + bl sub_800AB9C + ldr r0, _080DA7B0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + movs r0, 0xA + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA7B0: .4byte gUnknown_3005090 +_080DA7B4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _080DA7F6 + ldr r0, _080DA7D0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _080DA7F6 + .align 2, 0 +_080DA7D0: .4byte gUnknown_3005090 +_080DA7D4: + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080DA7F6 + ldr r1, _080DA7FC @ =gUnknown_3003530 + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_080DA7F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA7FC: .4byte gUnknown_3003530 + thumb_func_end sub_80DA634 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s new file mode 100644 index 000000000..4cd6783d0 --- /dev/null +++ b/asm/save_failed_screen.s @@ -0,0 +1,595 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F50F4 +sub_80F50F4: @ 80F50F4 + ldr r1, _080F50FC @ =gUnknown_3005430 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_080F50FC: .4byte gUnknown_3005430 + thumb_func_end sub_80F50F4 + + thumb_func_start sub_80F5100 +sub_80F5100: @ 80F5100 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080F5110 @ =gUnknown_203AB4C + strh r0, [r1] + ldr r1, _080F5114 @ =gUnknown_3005430 + movs r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080F5110: .4byte gUnknown_203AB4C +_080F5114: .4byte gUnknown_3005430 + thumb_func_end sub_80F5100 + + thumb_func_start sub_80F5118 +sub_80F5118: @ 80F5118 + push {lr} + ldr r0, _080F5130 @ =gUnknown_203AB50 + ldrb r1, [r0] + adds r2, r0, 0 + cmp r1, 0x8 + bls _080F5126 + b _080F52D6 +_080F5126: + lsls r0, r1, 2 + ldr r1, _080F5134 @ =_080F5138 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F5130: .4byte gUnknown_203AB50 +_080F5134: .4byte _080F5138 + .align 2, 0 +_080F5138: + .4byte _080F515C + .4byte _080F5190 + .4byte _080F51B4 + .4byte _080F51E4 + .4byte _080F5204 + .4byte _080F5240 + .4byte _080F5280 + .4byte _080F5298 + .4byte _080F52B4 +_080F515C: + ldr r0, _080F5168 @ =gUnknown_3005430 + ldr r0, [r0] + cmp r0, 0 + bne _080F516C + movs r0, 0 + b _080F52D8 + .align 2, 0 +_080F5168: .4byte gUnknown_3005430 +_080F516C: + ldr r0, _080F5184 @ =gMPlay_BGM + ldr r1, _080F5188 @ =0x0000ffff + movs r2, 0x80 + bl m4aMPlayVolumeControl + bl sub_813BB38 + ldr r1, _080F518C @ =gUnknown_203AB50 + movs r0, 0x1 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F5184: .4byte gMPlay_BGM +_080F5188: .4byte 0x0000ffff +_080F518C: .4byte gUnknown_203AB50 +_080F5190: + bl sub_813BBAC + bl sub_813BB74 + bl sub_813BBC8 + bl sub_80F52EC + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r1, _080F51B0 @ =gUnknown_203AB50 + movs r0, 0x2 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F51B0: .4byte gUnknown_203AB50 +_080F51B4: + ldr r1, _080F51D8 @ =0x0600c000 + movs r2, 0x80 + lsls r2, 7 + movs r0, 0 + movs r3, 0 + bl sub_8000F44 + ldr r0, _080F51DC @ =gUnknown_841EE44 + movs r1, 0xA0 + lsls r1, 19 + movs r2, 0x20 + movs r3, 0 + bl sub_8000EAC + ldr r1, _080F51E0 @ =gUnknown_203AB50 + movs r0, 0x3 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F51D8: .4byte 0x0600c000 +_080F51DC: .4byte gUnknown_841EE44 +_080F51E0: .4byte gUnknown_203AB50 +_080F51E4: + bl sub_80F53E8 + ldr r0, _080F51FC @ =gUnknown_8418C83 + bl sub_80F5404 + bl sub_80F53CC + ldr r1, _080F5200 @ =gUnknown_203AB50 + movs r0, 0x4 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F51FC: .4byte gUnknown_8418C83 +_080F5200: .4byte gUnknown_203AB50 +_080F5204: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + ldr r1, _080F5238 @ =0x00001f0c + movs r0, 0x8 + bl sub_8000A38 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0 + bl sub_8000A38 + ldr r1, _080F523C @ =gUnknown_203AB50 + movs r0, 0x5 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F5238: .4byte 0x00001f0c +_080F523C: .4byte gUnknown_203AB50 +_080F5240: + bl sub_80F5458 + adds r1, r0, 0 + cmp r1, 0x1 + bne _080F5260 + ldr r0, _080F5258 @ =gUnknown_3005420 + strh r1, [r0] + ldr r0, _080F525C @ =gUnknown_8418E09 + bl sub_80F5404 + b _080F526C + .align 2, 0 +_080F5258: .4byte gUnknown_3005420 +_080F525C: .4byte gUnknown_8418E09 +_080F5260: + ldr r0, _080F5274 @ =gUnknown_3005420 + movs r1, 0xFF + strh r1, [r0] + ldr r0, _080F5278 @ =gUnknown_8418CD9 + bl sub_80F5404 +_080F526C: + ldr r1, _080F527C @ =gUnknown_203AB50 + movs r0, 0x6 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F5274: .4byte gUnknown_3005420 +_080F5278: .4byte gUnknown_8418CD9 +_080F527C: .4byte gUnknown_203AB50 +_080F5280: + ldr r0, _080F5294 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080F52D6 + movs r0, 0x7 + strb r0, [r2] + b _080F52D6 + .align 2, 0 +_080F5294: .4byte gUnknown_30030F0 +_080F5298: + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_813BC2C + bl sub_80F52EC + ldr r1, _080F52B0 @ =gUnknown_203AB50 + movs r0, 0x8 + strb r0, [r1] + b _080F52D6 + .align 2, 0 +_080F52B0: .4byte gUnknown_203AB50 +_080F52B4: + ldr r0, _080F52DC @ =gMPlay_BGM + ldr r1, _080F52E0 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + bl sub_813BC48 + bl sub_813BBF4 + bl sub_813BBDC + ldr r0, _080F52E4 @ =gUnknown_3005430 + movs r1, 0 + str r1, [r0] + ldr r0, _080F52E8 @ =gUnknown_203AB50 + strb r1, [r0] +_080F52D6: + movs r0, 0x1 +_080F52D8: + pop {r1} + bx r1 + .align 2, 0 +_080F52DC: .4byte gMPlay_BGM +_080F52E0: .4byte 0x0000ffff +_080F52E4: .4byte gUnknown_3005430 +_080F52E8: .4byte gUnknown_203AB50 + thumb_func_end sub_80F5118 + + thumb_func_start sub_80F52EC +sub_80F52EC: @ 80F52EC + push {r4,r5,lr} + movs r1, 0 + ldr r5, _080F5310 @ =0x000001ff + movs r4, 0xA0 + lsls r4, 19 + movs r2, 0 + ldr r3, _080F5314 @ =0x05000200 +_080F52FA: + adds r0, r1, r4 + strh r2, [r0] + adds r0, r1, r3 + strh r2, [r0] + adds r1, 0x2 + cmp r1, r5 + ble _080F52FA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F5310: .4byte 0x000001ff +_080F5314: .4byte 0x05000200 + thumb_func_end sub_80F52EC + + thumb_func_start sub_80F5318 +sub_80F5318: @ 80F5318 + push {lr} + ldr r0, _080F532C @ =gUnknown_201F800 + ldr r1, _080F5330 @ =0x0600f800 + movs r2, 0xA0 + lsls r2, 3 + movs r3, 0 + bl sub_8000EAC + pop {r0} + bx r0 + .align 2, 0 +_080F532C: .4byte gUnknown_201F800 +_080F5330: .4byte 0x0600f800 + thumb_func_end sub_80F5318 + + thumb_func_start sub_80F5334 +sub_80F5334: @ 80F5334 + push {lr} + ldr r0, _080F5348 @ =gUnknown_201C020 + ldr r1, _080F534C @ =0x0600c020 + movs r2, 0x8C + lsls r2, 6 + movs r3, 0 + bl sub_8000EAC + pop {r0} + bx r0 + .align 2, 0 +_080F5348: .4byte gUnknown_201C020 +_080F534C: .4byte 0x0600c020 + thumb_func_end sub_80F5334 + + thumb_func_start sub_80F5350 +sub_80F5350: @ 80F5350 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, [sp, 0x20] + ldr r5, [sp, 0x24] + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r7, r5, 16 + lsrs r0, r2, 24 + adds r2, r0, r4 + cmp r0, r2 + bge _080F53B6 + mov r12, r2 + ldr r1, _080F53C8 @ =gUnknown_201F800 + mov r10, r1 +_080F5386: + mov r4, r9 + mov r2, r8 + adds r1, r4, r2 + adds r3, r0, 0x1 + cmp r4, r1 + bge _080F53AE + lsls r2, r0, 6 + mov r5, r10 +_080F5396: + lsls r0, r4, 1 + adds r0, r2, r0 + adds r0, r5 + strh r6, [r0] + adds r0, r6, r7 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r1 + blt _080F5396 +_080F53AE: + lsls r0, r3, 16 + lsrs r0, 16 + cmp r0, r12 + blt _080F5386 +_080F53B6: + bl sub_80F5318 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F53C8: .4byte gUnknown_201F800 + thumb_func_end sub_80F5350 + + thumb_func_start sub_80F53CC +sub_80F53CC: @ 80F53CC + push {lr} + sub sp, 0x8 + movs r0, 0xA + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r1, 0x1 + movs r2, 0x5 + movs r3, 0x1C + bl sub_80F5350 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_80F53CC + + thumb_func_start sub_80F53E8 +sub_80F53E8: @ 80F53E8 + push {lr} + sub sp, 0x8 + movs r0, 0x14 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0 + movs r2, 0 + movs r3, 0x1E + bl sub_80F5350 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_80F53E8 + + thumb_func_start sub_80F5404 +sub_80F5404: @ 80F5404 + push {r4,r5,lr} + sub sp, 0x10 + adds r5, r0, 0 + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0x3 + bl sub_8002EA8 + add r1, sp, 0xC + ldr r2, _080F544C @ =0x00001111 + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _080F5450 @ =gUnknown_201C020 + ldr r2, _080F5454 @ =0x01001180 + adds r0, r1, 0 + adds r1, r4, 0 + bl CpuSet + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1C + str r0, [sp, 0x4] + movs r0, 0xA + str r0, [sp, 0x8] + movs r0, 0x2 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x2 + bl sub_813C078 + bl sub_80F5334 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080F544C: .4byte 0x00001111 +_080F5450: .4byte gUnknown_201C020 +_080F5454: .4byte 0x01001180 + thumb_func_end sub_80F5404 + + thumb_func_start sub_80F5458 +sub_80F5458: @ 80F5458 + push {r4,r5,lr} + movs r5, 0 + ldr r0, _080F5490 @ =gUnknown_300538C + ldr r1, [r0] + adds r4, r0, 0 + cmp r1, 0 + beq _080F548C +_080F5466: + ldr r0, [r4] + bl sub_80F5540 + cmp r0, 0 + bne _080F5498 + ldr r0, _080F5494 @ =gUnknown_203AB4C + ldrb r0, [r0] + bl sub_80DA248 + adds r5, 0x1 + ldr r0, [r4] + cmp r0, 0 + beq _080F548C + ldr r4, _080F5490 @ =gUnknown_300538C + cmp r5, 0x2 + ble _080F5466 + ldr r0, [r4] + cmp r0, 0 + bne _080F5498 +_080F548C: + movs r0, 0x1 + b _080F549A + .align 2, 0 +_080F5490: .4byte gUnknown_300538C +_080F5494: .4byte gUnknown_203AB4C +_080F5498: + movs r0, 0 +_080F549A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80F5458 + + thumb_func_start sub_80F54A0 +sub_80F54A0: @ 80F54A0 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _080F54C4 @ =gUnknown_2039A38 + movs r3, 0x80 + lsls r3, 5 + movs r1, 0 + adds r2, r4, 0 + bl ReadFlash + movs r1, 0 + ldr r2, _080F54C8 @ =0x000003ff +_080F54B8: + ldr r0, [r4] + cmp r0, 0 + beq _080F54CC + movs r0, 0x1 + b _080F54DA + .align 2, 0 +_080F54C4: .4byte gUnknown_2039A38 +_080F54C8: .4byte 0x000003ff +_080F54CC: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + adds r4, 0x4 + cmp r1, r2 + bls _080F54B8 + movs r0, 0 +_080F54DA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80F54A0 + + thumb_func_start sub_80F54E0 +sub_80F54E0: @ 80F54E0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + movs r0, 0 + lsls r6, r7, 16 + ldr r1, _080F5538 @ =ProgramFlashByte + mov r9, r1 + ldr r1, _080F553C @ =0x00000fff + mov r8, r1 +_080F54F6: + movs r4, 0 + adds r5, r0, 0x1 +_080F54FA: + mov r0, r9 + ldr r3, [r0] + lsrs r0, r6, 16 + adds r1, r4, 0 + movs r2, 0 + bl _call_via_r3 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, r8 + bls _080F54FA + adds r0, r7, 0 + bl sub_80F54A0 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r0, r5, 16 + lsrs r0, 16 + cmp r1, 0 + beq _080F5528 + cmp r0, 0x81 + bls _080F54F6 +_080F5528: + adds r0, r1, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080F5538: .4byte ProgramFlashByte +_080F553C: .4byte 0x00000fff + thumb_func_end sub_80F54E0 + + thumb_func_start sub_80F5540 +sub_80F5540: @ 80F5540 + push {r4-r6,lr} + adds r5, r0, 0 + movs r6, 0 +_080F5546: + movs r4, 0x1 + lsls r4, r6 + adds r0, r5, 0 + ands r0, r4 + cmp r0, 0 + beq _080F555E + adds r0, r6, 0 + bl sub_80F54E0 + cmp r0, 0 + bne _080F555E + bics r5, r4 +_080F555E: + adds r6, 0x1 + cmp r6, 0x1F + ble _080F5546 + cmp r5, 0 + beq _080F556C + movs r0, 0x1 + b _080F556E +_080F556C: + movs r0, 0 +_080F556E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80F5540 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/save_location.s b/asm/save_location.s new file mode 100644 index 000000000..69cf163ca --- /dev/null +++ b/asm/save_location.s @@ -0,0 +1,222 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810B6F4 +sub_810B6F4: @ 810B6F4 + push {r4,lr} + adds r2, r0, 0 + ldr r0, _0810B724 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0x4 + ldrsb r1, [r0, r1] + lsls r1, 8 + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r0, [r2] + ldr r1, _0810B728 @ =0x0000ffff + cmp r0, r1 + beq _0810B734 + adds r4, r1, 0 + adds r1, r2, 0 +_0810B71A: + ldrh r0, [r1] + cmp r0, r3 + bne _0810B72C + movs r0, 0x1 + b _0810B736 + .align 2, 0 +_0810B724: .4byte gUnknown_3005008 +_0810B728: .4byte 0x0000ffff +_0810B72C: + adds r1, 0x2 + ldrh r0, [r1] + cmp r0, r4 + bne _0810B71A +_0810B734: + movs r0, 0 +_0810B736: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810B6F4 + + thumb_func_start sub_810B73C +sub_810B73C: @ 810B73C + push {lr} + ldr r0, _0810B748 @ =gUnknown_845303C + bl sub_810B6F4 + pop {r1} + bx r1 + .align 2, 0 +_0810B748: .4byte gUnknown_845303C + thumb_func_end sub_810B73C + + thumb_func_start sub_810B74C +sub_810B74C: @ 810B74C + push {lr} + ldr r0, _0810B758 @ =gUnknown_8453092 + bl sub_810B6F4 + pop {r1} + bx r1 + .align 2, 0 +_0810B758: .4byte gUnknown_8453092 + thumb_func_end sub_810B74C + + thumb_func_start sub_810B75C +sub_810B75C: @ 810B75C + push {lr} + ldr r0, _0810B768 @ =gUnknown_8453094 + bl sub_810B6F4 + pop {r1} + bx r1 + .align 2, 0 +_0810B768: .4byte gUnknown_8453094 + thumb_func_end sub_810B75C + + thumb_func_start sub_810B76C +sub_810B76C: @ 810B76C + push {lr} + bl sub_810B73C + cmp r0, 0 + bne _0810B788 + ldr r0, _0810B784 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0xFD + ands r0, r1 + b _0810B792 + .align 2, 0 +_0810B784: .4byte gUnknown_300500C +_0810B788: + ldr r0, _0810B798 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0x2 + orrs r0, r1 +_0810B792: + strb r0, [r2, 0x9] + pop {r0} + bx r0 + .align 2, 0 +_0810B798: .4byte gUnknown_300500C + thumb_func_end sub_810B76C + + thumb_func_start sub_810B79C +sub_810B79C: @ 810B79C + push {lr} + bl sub_810B74C + cmp r0, 0 + bne _0810B7B8 + ldr r0, _0810B7B4 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0xFB + ands r0, r1 + b _0810B7C2 + .align 2, 0 +_0810B7B4: .4byte gUnknown_300500C +_0810B7B8: + ldr r0, _0810B7C8 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0x4 + orrs r0, r1 +_0810B7C2: + strb r0, [r2, 0x9] + pop {r0} + bx r0 + .align 2, 0 +_0810B7C8: .4byte gUnknown_300500C + thumb_func_end sub_810B79C + + thumb_func_start sub_810B7CC +sub_810B7CC: @ 810B7CC + push {lr} + bl sub_810B75C + cmp r0, 0 + bne _0810B7E8 + ldr r0, _0810B7E4 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0xF7 + ands r0, r1 + b _0810B7F2 + .align 2, 0 +_0810B7E4: .4byte gUnknown_300500C +_0810B7E8: + ldr r0, _0810B7F8 @ =gUnknown_300500C + ldr r2, [r0] + ldrb r1, [r2, 0x9] + movs r0, 0x8 + orrs r0, r1 +_0810B7F2: + strb r0, [r2, 0x9] + pop {r0} + bx r0 + .align 2, 0 +_0810B7F8: .4byte gUnknown_300500C + thumb_func_end sub_810B7CC + + thumb_func_start sub_810B7FC +sub_810B7FC: @ 810B7FC + push {lr} + bl sub_810B76C + bl sub_810B79C + bl sub_810B7CC + pop {r0} + bx r0 + thumb_func_end sub_810B7FC + + thumb_func_start sub_810B810 +sub_810B810: @ 810B810 + ldr r0, _0810B828 @ =gUnknown_300500C + ldr r2, [r0] + adds r2, 0xA8 + ldr r0, [r2] + movs r1, 0x1 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + movs r1, 0x20 + orrs r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_0810B828: .4byte gUnknown_300500C + thumb_func_end sub_810B810 + + thumb_func_start sub_810B82C +sub_810B82C: @ 810B82C + ldr r3, _0810B854 @ =gUnknown_300500C + ldr r2, [r3] + ldrb r1, [r2, 0x9] + movs r0, 0x80 + orrs r0, r1 + strb r0, [r2, 0x9] + ldr r2, [r3] + adds r2, 0xA8 + ldr r0, [r2] + movs r1, 0x2 + orrs r0, r1 + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x80 + lsls r1, 8 + orrs r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_0810B854: .4byte gUnknown_300500C + thumb_func_end sub_810B82C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s new file mode 100644 index 000000000..6a058f49f --- /dev/null +++ b/asm/save_menu_util.s @@ -0,0 +1,149 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80F7FCC +sub_80F7FCC: @ 80F7FCC + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r2, 24 + lsrs r2, 24 + adds r5, r1, 0 + movs r1, 0xFC + strb r1, [r5] + adds r5, 0x1 + movs r0, 0x1 + strb r0, [r5] + adds r5, 0x1 + strb r2, [r5] + adds r5, 0x1 + strb r1, [r5] + adds r5, 0x1 + movs r0, 0x3 + strb r0, [r5] + adds r5, 0x1 + adds r2, 0x1 + strb r2, [r5] + adds r5, 0x1 + cmp r3, 0x5 + bhi _080F80D8 + lsls r0, r3, 2 + ldr r1, _080F8008 @ =_080F800C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F8008: .4byte _080F800C + .align 2, 0 +_080F800C: + .4byte _080F8024 + .4byte _080F8034 + .4byte _080F805C + .4byte _080F8098 + .4byte _080F80A8 + .4byte _080F806C +_080F8024: + ldr r0, _080F8030 @ =gUnknown_300500C + ldr r1, [r0] + adds r0, r5, 0 + bl sub_8008D84 + b _080F80D8 + .align 2, 0 +_080F8030: .4byte gUnknown_300500C +_080F8034: + bl sub_806E25C + cmp r0, 0 + beq _080F8044 + movs r0, 0x1 + bl sub_8088E8C + b _080F804A +_080F8044: + movs r0, 0x1 + bl sub_8088EDC +_080F804A: + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + b _080F80D8 +_080F805C: + ldr r4, _080F8068 @ =gUnknown_300500C + ldr r0, [r4] + ldrh r1, [r0, 0xE] + adds r0, r5, 0 + movs r2, 0 + b _080F8076 + .align 2, 0 +_080F8068: .4byte gUnknown_300500C +_080F806C: + ldr r4, _080F8094 @ =gUnknown_300500C + ldr r0, [r4] + ldrh r1, [r0, 0xE] + adds r0, r5, 0 + movs r2, 0x1 +_080F8076: + movs r3, 0x3 + bl sub_8008E78 + adds r5, r0, 0 + movs r0, 0xF0 + strb r0, [r5] + adds r5, 0x1 + ldr r0, [r4] + ldrb r1, [r0, 0x10] + adds r0, r5, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + b _080F80D8 + .align 2, 0 +_080F8094: .4byte gUnknown_300500C +_080F8098: + ldr r0, _080F80A4 @ =gUnknown_2036DFC + ldrb r1, [r0, 0x14] + adds r0, r5, 0 + bl sub_80C4DF8 + b _080F80D8 + .align 2, 0 +_080F80A4: .4byte gUnknown_2036DFC +_080F80A8: + movs r4, 0x82 + lsls r4, 4 + movs r6, 0 + adds r7, r5, 0x1 +_080F80B0: + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _080F80C0 + adds r6, 0x1 +_080F80C0: + adds r4, 0x1 + ldr r0, _080F80E0 @ =0x00000827 + cmp r4, r0 + ble _080F80B0 + adds r0, r6, 0 + subs r0, 0x5F + strb r0, [r5] + adds r5, r7, 0 + movs r0, 0xA + strb r0, [r5] + movs r0, 0xFF + strb r0, [r5, 0x1] +_080F80D8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080F80E0: .4byte 0x00000827 + thumb_func_end sub_80F7FCC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/scrcmd.s b/asm/scrcmd.s new file mode 100644 index 000000000..23e313211 --- /dev/null +++ b/asm/scrcmd.s @@ -0,0 +1,5612 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8069ED0 +sub_8069ED0: @ 8069ED0 + movs r0, 0 + bx lr + thumb_func_end sub_8069ED0 + + thumb_func_start sub_8069ED4 +sub_8069ED4: @ 8069ED4 + movs r0, 0 + bx lr + thumb_func_end sub_8069ED4 + + thumb_func_start sub_8069ED8 +sub_8069ED8: @ 8069ED8 + push {lr} + bl sub_80697FC + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8069ED8 + + thumb_func_start sub_8069EE4 +sub_8069EE4: @ 8069EE4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8069EE4 + + thumb_func_start sub_8069EFC +sub_8069EFC: @ 8069EFC + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 14 + ldr r1, _08069F18 @ =gUnknown_815FD60 + adds r1, r0, r1 + ldr r0, _08069F1C @ =gUnknown_8160450 + cmp r1, r0 + bcs _08069F20 + ldr r0, [r1] + bl _call_via_r0 + b _08069F2C + .align 2, 0 +_08069F18: .4byte gUnknown_815FD60 +_08069F1C: .4byte gUnknown_8160450 +_08069F20: + ldr r0, _08069F34 @ =gUnknown_83A725C + ldr r2, _08069F38 @ =gUnknown_83A7290 + movs r1, 0xF1 + movs r3, 0x1 + bl AGBAssert +_08069F2C: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08069F34: .4byte gUnknown_83A725C +_08069F38: .4byte gUnknown_83A7290 + thumb_func_end sub_8069EFC + + thumb_func_start sub_8069F3C +sub_8069F3C: @ 8069F3C + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 14 + ldr r1, _08069F6C @ =gUnknown_815FD60 + adds r1, r0, r1 + ldr r0, _08069F70 @ =gUnknown_8160450 + cmp r1, r0 + bcs _08069F74 + ldr r0, [r1] + bl _call_via_r0 + strh r0, [r5] + b _08069F80 + .align 2, 0 +_08069F6C: .4byte gUnknown_815FD60 +_08069F70: .4byte gUnknown_8160450 +_08069F74: + ldr r0, _08069F88 @ =gUnknown_83A725C + ldr r1, _08069F8C @ =0x00000107 + ldr r2, _08069F90 @ =gUnknown_83A7290 + movs r3, 0x1 + bl AGBAssert +_08069F80: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08069F88: .4byte gUnknown_83A725C +_08069F8C: .4byte 0x00000107 +_08069F90: .4byte gUnknown_83A7290 + thumb_func_end sub_8069F3C + + thumb_func_start sub_8069F94 +sub_8069F94: @ 8069F94 + push {lr} + bl sub_8069910 + bl _call_via_r0 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8069F94 + + thumb_func_start sub_8069FA4 +sub_8069FA4: @ 8069FA4 + push {lr} + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8069FA4 + + thumb_func_start sub_8069FB0 +sub_8069FB0: @ 8069FB0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_80698D0 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8069FB0 + + thumb_func_start sub_8069FC8 +sub_8069FC8: @ 8069FC8 + push {lr} + bl sub_80698E8 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8069FC8 + + thumb_func_start sub_8069FD4 +sub_8069FD4: @ 8069FD4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_80698D4 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8069FD4 + + thumb_func_start sub_8069FEC +sub_8069FEC: @ 8069FEC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r5, 0 + bl sub_8069910 + adds r2, r0, 0 + ldr r1, _0806A024 @ =gUnknown_83A7248 + lsls r0, r4, 1 + adds r0, r4 + ldrb r3, [r5, 0x2] + adds r0, r3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806A01A + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80698D0 +_0806A01A: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A024: .4byte gUnknown_83A7248 + thumb_func_end sub_8069FEC + + thumb_func_start sub_806A028 +sub_806A028: @ 806A028 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r5, 0 + bl sub_8069910 + adds r2, r0, 0 + ldr r1, _0806A060 @ =gUnknown_83A7248 + lsls r0, r4, 1 + adds r0, r4 + ldrb r3, [r5, 0x2] + adds r0, r3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806A056 + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80698D4 +_0806A056: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A060: .4byte gUnknown_83A7248 + thumb_func_end sub_806A028 + + thumb_func_start sub_806A064 +sub_806A064: @ 806A064 + push {r4,lr} + ldr r4, [r0, 0x8] + subs r4, 0x1 + bl sub_8069910 + ldr r1, _0806A07C @ =gUnknown_20370A8 + subs r0, r4 + str r0, [r1] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A07C: .4byte gUnknown_20370A8 + thumb_func_end sub_806A064 + + thumb_func_start sub_806A080 +sub_806A080: @ 806A080 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + ldr r0, _0806A0A0 @ =gUnknown_20370A8 + ldr r0, [r0] + subs r1, r0 + adds r0, r4, 0 + bl sub_80698D0 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A0A0: .4byte gUnknown_20370A8 + thumb_func_end sub_806A080 + + thumb_func_start sub_806A0A4 +sub_806A0A4: @ 806A0A4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + ldr r0, _0806A0C4 @ =gUnknown_20370A8 + ldr r0, [r0] + subs r1, r0 + adds r0, r4, 0 + bl sub_80698D4 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A0C4: .4byte gUnknown_20370A8 + thumb_func_end sub_806A0A4 + + thumb_func_start sub_806A0C8 +sub_806A0C8: @ 806A0C8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r5, 0 + bl sub_8069910 + ldr r1, _0806A104 @ =gUnknown_20370A8 + ldr r1, [r1] + subs r2, r0, r1 + ldr r1, _0806A108 @ =gUnknown_83A7248 + lsls r0, r4, 1 + adds r0, r4 + ldrb r3, [r5, 0x2] + adds r0, r3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806A0FA + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80698D0 +_0806A0FA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A104: .4byte gUnknown_20370A8 +_0806A108: .4byte gUnknown_83A7248 + thumb_func_end sub_806A0C8 + + thumb_func_start sub_806A10C +sub_806A10C: @ 806A10C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r5, 0 + bl sub_8069910 + ldr r1, _0806A148 @ =gUnknown_20370A8 + ldr r1, [r1] + subs r2, r0, r1 + ldr r1, _0806A14C @ =gUnknown_83A7248 + lsls r0, r4, 1 + adds r0, r4 + ldrb r3, [r5, 0x2] + adds r0, r3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806A13E + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80698D4 +_0806A13E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A148: .4byte gUnknown_20370A8 +_0806A14C: .4byte gUnknown_83A7248 + thumb_func_end sub_806A10C + + thumb_func_start sub_806A150 +sub_806A150: @ 806A150 + push {lr} + adds r2, r0, 0 + ldr r0, [r2, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r2, 0x8] + lsls r1, 2 + ldr r0, _0806A178 @ =gUnknown_8160450 + adds r1, r0 + ldr r0, _0806A17C @ =gUnknown_8160478 + cmp r1, r0 + bcs _0806A170 + ldr r1, [r1] + adds r0, r2, 0 + bl sub_80698D0 +_0806A170: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806A178: .4byte gUnknown_8160450 +_0806A17C: .4byte gUnknown_8160478 + thumb_func_end sub_806A150 + + thumb_func_start sub_806A180 +sub_806A180: @ 806A180 + push {lr} + adds r2, r0, 0 + ldr r0, [r2, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r2, 0x8] + lsls r1, 2 + ldr r0, _0806A1A8 @ =gUnknown_8160450 + adds r1, r0 + ldr r0, _0806A1AC @ =gUnknown_8160478 + cmp r1, r0 + bcs _0806A1A0 + ldr r1, [r1] + adds r0, r2, 0 + bl sub_80698D4 +_0806A1A0: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806A1A8: .4byte gUnknown_8160450 +_0806A1AC: .4byte gUnknown_8160478 + thumb_func_end sub_806A180 + + thumb_func_start sub_806A1B0 +sub_806A1B0: @ 806A1B0 + push {r4,lr} + adds r3, r0, 0 + ldr r0, [r3, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r3, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r3, 0x8] + ldr r1, _0806A1F0 @ =gUnknown_83A7248 + lsls r0, r2, 1 + adds r0, r2 + ldrb r2, [r3, 0x2] + adds r0, r2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806A1E8 + lsls r0, r4, 2 + ldr r1, _0806A1F4 @ =gUnknown_8160450 + adds r1, r0, r1 + ldr r0, _0806A1F8 @ =gUnknown_8160478 + cmp r1, r0 + bcs _0806A1E8 + ldr r1, [r1] + adds r0, r3, 0 + bl sub_80698D0 +_0806A1E8: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A1F0: .4byte gUnknown_83A7248 +_0806A1F4: .4byte gUnknown_8160450 +_0806A1F8: .4byte gUnknown_8160478 + thumb_func_end sub_806A1B0 + + thumb_func_start sub_806A1FC +sub_806A1FC: @ 806A1FC + push {r4,lr} + adds r3, r0, 0 + ldr r0, [r3, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r3, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r3, 0x8] + ldr r1, _0806A23C @ =gUnknown_83A7248 + lsls r0, r2, 1 + adds r0, r2 + ldrb r2, [r3, 0x2] + adds r0, r2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806A234 + lsls r0, r4, 2 + ldr r1, _0806A240 @ =gUnknown_8160450 + adds r1, r0, r1 + ldr r0, _0806A244 @ =gUnknown_8160478 + cmp r1, r0 + bcs _0806A234 + ldr r1, [r1] + adds r0, r3, 0 + bl sub_80698D4 +_0806A234: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A23C: .4byte gUnknown_83A7248 +_0806A240: .4byte gUnknown_8160450 +_0806A244: .4byte gUnknown_8160478 + thumb_func_end sub_806A1FC + + thumb_func_start sub_806A248 +sub_806A248: @ 806A248 + push {lr} + ldr r1, _0806A258 @ =gUnknown_20370A4 + ldr r1, [r1] + bl sub_80698D0 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806A258: .4byte gUnknown_20370A4 + thumb_func_end sub_806A248 + + thumb_func_start sub_806A25C +sub_806A25C: @ 806A25C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069CD4 + adds r0, r4, 0 + bl sub_80697FC + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A25C + + thumb_func_start sub_806A274 +sub_806A274: @ 806A274 + push {lr} + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + adds r0, r2, 0 + bl sub_80DA8E8 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A274 + + thumb_func_start sub_806A28C +sub_806A28C: @ 806A28C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069E48 + adds r2, r0, 0 + cmp r2, 0 + beq _0806A2A8 + ldr r1, _0806A2B0 @ =gUnknown_20370A4 + ldr r0, [r4, 0x8] + str r0, [r1] + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80698D0 +_0806A2A8: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A2B0: .4byte gUnknown_20370A4 + thumb_func_end sub_806A28C + + thumb_func_start sub_806A2B4 +sub_806A2B4: @ 806A2B4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r5, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_8069910 + lsls r5, 2 + adds r4, 0x64 + adds r4, r5 + str r0, [r4] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A2B4 + + thumb_func_start sub_806A2D8 +sub_806A2D8: @ 806A2D8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r5, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_8069910 + lsls r5, 2 + adds r4, 0x64 + adds r4, r5 + ldrb r0, [r0] + str r0, [r4] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A2D8 + + thumb_func_start sub_806A2FC +sub_806A2FC: @ 806A2FC + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_8069910 + strb r4, [r0] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A2FC + + thumb_func_start sub_806A314 +sub_806A314: @ 806A314 + ldr r1, [r0, 0x8] + ldrb r3, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + lsls r3, 2 + adds r2, r0, 0 + adds r2, 0x64 + adds r2, r3 + ldrb r3, [r1] + str r3, [r2] + adds r1, 0x1 + str r1, [r0, 0x8] + movs r0, 0 + bx lr + thumb_func_end sub_806A314 + + thumb_func_start sub_806A330 +sub_806A330: @ 806A330 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r5, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_8069910 + lsls r5, 2 + adds r4, 0x64 + adds r4, r5 + ldr r1, [r4] + strb r1, [r0] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A330 + + thumb_func_start sub_806A354 +sub_806A354: @ 806A354 + ldr r1, [r0, 0x8] + ldrb r3, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + lsls r3, 2 + adds r0, 0x64 + adds r3, r0, r3 + lsls r2, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r3] + movs r0, 0 + bx lr + thumb_func_end sub_806A354 + + thumb_func_start sub_806A374 +sub_806A374: @ 806A374 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_8069910 + ldrb r0, [r0] + strb r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A374 + + thumb_func_start sub_806A390 +sub_806A390: @ 806A390 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_80698F8 + strh r0, [r4] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A390 + + thumb_func_start sub_806A3B4 +sub_806A3B4: @ 806A3B4 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + ldrh r0, [r0] + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A3B4 + + thumb_func_start sub_806A3E0 +sub_806A3E0: @ 806A3E0 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A3E0 + + thumb_func_start sub_806A40C +sub_806A40C: @ 806A40C + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + cmp r0, r1 + bcs _0806A41E + movs r0, 0 + b _0806A428 +_0806A41E: + cmp r0, r1 + beq _0806A426 + movs r0, 0x2 + b _0806A428 +_0806A426: + movs r0, 0x1 +_0806A428: + pop {r1} + bx r1 + thumb_func_end sub_806A40C + + thumb_func_start sub_806A42C +sub_806A42C: @ 806A42C + push {r4,lr} + adds r4, r0, 0 + ldr r2, [r4, 0x8] + ldrb r0, [r2] + lsls r0, 2 + adds r3, r4, 0 + adds r3, 0x64 + adds r0, r3, r0 + ldrb r0, [r0] + adds r2, 0x1 + str r2, [r4, 0x8] + ldrb r1, [r2] + lsls r1, 2 + adds r3, r1 + ldrb r1, [r3] + adds r2, 0x1 + str r2, [r4, 0x8] + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A42C + + thumb_func_start sub_806A45C +sub_806A45C: @ 806A45C + push {r4,lr} + adds r4, r0, 0 + ldr r2, [r4, 0x8] + ldrb r1, [r2] + lsls r1, 2 + adds r0, 0x64 + adds r0, r1 + ldrb r0, [r0] + adds r2, 0x1 + str r2, [r4, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A45C + + thumb_func_start sub_806A484 +sub_806A484: @ 806A484 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r2, [r4, 0x8] + ldrb r1, [r2] + lsls r1, 2 + adds r0, 0x64 + adds r0, r1 + ldrb r5, [r0] + adds r2, 0x1 + str r2, [r4, 0x8] + adds r0, r4, 0 + bl sub_8069910 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A484 + + thumb_func_start sub_806A4B0 +sub_806A4B0: @ 806A4B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + ldrb r0, [r0] + ldr r3, [r4, 0x8] + ldrb r2, [r3] + lsls r2, 2 + adds r1, r4, 0 + adds r1, 0x64 + adds r1, r2 + ldrb r1, [r1] + adds r3, 0x1 + str r3, [r4, 0x8] + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A4B0 + + thumb_func_start sub_806A4DC +sub_806A4DC: @ 806A4DC + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + ldrb r0, [r0] + ldr r2, [r4, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A4DC + + thumb_func_start sub_806A4FC +sub_806A4FC: @ 806A4FC + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8069910 + ldrb r5, [r0] + adds r0, r4, 0 + bl sub_8069910 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A4FC + + thumb_func_start sub_806A520 +sub_806A520: @ 806A520 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + ldrh r5, [r0] + adds r0, r4, 0 + bl sub_80698F8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A520 + + thumb_func_start sub_806A550 +sub_806A550: @ 806A550 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + ldrh r2, [r5] + ldrh r1, [r0] + adds r0, r2, 0 + bl sub_806A40C + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A550 + + thumb_func_start sub_806A584 +sub_806A584: @ 806A584 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_80698F8 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r4] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A584 + + thumb_func_start sub_806A5AC +sub_806A5AC: @ 806A5AC + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldrh r1, [r5] + subs r1, r0 + strh r1, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A5AC + + thumb_func_start sub_806A5DC +sub_806A5DC: @ 806A5DC + push {r4,r5,lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r5, _0806A60C @ =gUnknown_20370D0 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl __umodsi3 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A60C: .4byte gUnknown_20370D0 + thumb_func_end sub_806A5DC + + thumb_func_start sub_806A610 +sub_806A610: @ 806A610 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + ldr r5, _0806A658 @ =gUnknown_20370D0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_809A084 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + adds r0, r4, 0 + bl sub_809A824 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A658: .4byte gUnknown_20370D0 + thumb_func_end sub_806A610 + + thumb_func_start sub_806A65C +sub_806A65C: @ 806A65C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + ldr r5, _0806A69C @ =gUnknown_20370D0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_809A1D8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A69C: .4byte gUnknown_20370D0 + thumb_func_end sub_806A65C + + thumb_func_start sub_806A6A0 +sub_806A6A0: @ 806A6A0 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + ldr r5, _0806A6E0 @ =gUnknown_20370D0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_809A000 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A6E0: .4byte gUnknown_20370D0 + thumb_func_end sub_806A6A0 + + thumb_func_start sub_806A6E4 +sub_806A6E4: @ 806A6E4 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + ldr r5, _0806A724 @ =gUnknown_20370D0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8099F40 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A724: .4byte gUnknown_20370D0 + thumb_func_end sub_806A6E4 + + thumb_func_start sub_806A728 +sub_806A728: @ 806A728 + push {r4,lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0806A750 @ =gUnknown_20370D0 + bl sub_809A260 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A750: .4byte gUnknown_20370D0 + thumb_func_end sub_806A728 + + thumb_func_start sub_806A754 +sub_806A754: @ 806A754 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r5, _0806A794 @ =gUnknown_20370D0 + adds r0, r4, 0 + bl sub_809A3C8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A794: .4byte gUnknown_20370D0 + thumb_func_end sub_806A754 + + thumb_func_start sub_806A798 +sub_806A798: @ 806A798 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r5, _0806A7D8 @ =gUnknown_20370D0 + adds r0, r4, 0 + bl sub_809A374 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806A7D8: .4byte gUnknown_20370D0 + thumb_func_end sub_806A798 + + thumb_func_start sub_806A7DC +sub_806A7DC: @ 806A7DC + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A7DC + + thumb_func_start sub_806A7F0 +sub_806A7F0: @ 806A7F0 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A7F0 + + thumb_func_start sub_806A804 +sub_806A804: @ 806A804 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A804 + + thumb_func_start sub_806A818 +sub_806A818: @ 806A818 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A818 + + thumb_func_start sub_806A82C +sub_806A82C: @ 806A82C + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E680 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A82C + + thumb_func_start sub_806A840 +sub_806A840: @ 806A840 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6A8 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A840 + + thumb_func_start sub_806A854 +sub_806A854: @ 806A854 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E6D0 + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A854 + + thumb_func_start sub_806A870 +sub_806A870: @ 806A870 + push {lr} + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + adds r0, r2, 0 + bl sub_8054E90 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A870 + + thumb_func_start sub_806A888 +sub_806A888: @ 806A888 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r5, 0 + bl sub_8069910 + adds r6, r0, 0 + adds r0, r4, 0 + bl sub_8054EC4 + cmp r0, r6 + bcs _0806A8AA + movs r0, 0 + b _0806A8B4 +_0806A8AA: + cmp r0, r6 + bne _0806A8B2 + movs r0, 0x1 + b _0806A8B4 +_0806A8B2: + movs r0, 0x2 +_0806A8B4: + strb r0, [r5, 0x2] + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806A888 + + thumb_func_start sub_806A8C0 +sub_806A8C0: @ 806A8C0 + push {r4,lr} + bl sub_80698F8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + bl sub_8115748 + adds r0, r4, 0 + bl sub_80F85BC + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806A8C0 + + thumb_func_start sub_806A8E0 +sub_806A8E0: @ 806A8E0 + push {lr} + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + adds r0, r2, 0 + bl sub_807F028 + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806A8E0 + + thumb_func_start sub_806A8FC +sub_806A8FC: @ 806A8FC + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8055D08 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A8FC + + thumb_func_start sub_806A918 +sub_806A918: @ 806A918 + push {lr} + ldr r0, _0806A92C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806A930 + movs r0, 0 + b _0806A932 + .align 2, 0 +_0806A92C: .4byte gUnknown_2037AB8 +_0806A930: + movs r0, 0x1 +_0806A932: + pop {r1} + bx r1 + thumb_func_end sub_806A918 + + thumb_func_start sub_806A938 +sub_806A938: @ 806A938 + push {r4,lr} + adds r4, r0, 0 + ldr r1, [r4, 0x8] + ldrb r0, [r1] + adds r1, 0x1 + str r1, [r4, 0x8] + movs r1, 0 + bl sub_807A818 + ldr r1, _0806A95C @ =sub_806A918 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A95C: .4byte sub_806A918 + thumb_func_end sub_806A938 + + thumb_func_start sub_806A960 +sub_806A960: @ 806A960 + push {r4,lr} + adds r4, r0, 0 + ldr r2, [r4, 0x8] + ldrb r0, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + lsls r1, 24 + asrs r1, 24 + bl sub_807A818 + ldr r1, _0806A98C @ =sub_806A918 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A98C: .4byte sub_806A918 + thumb_func_end sub_806A960 + + thumb_func_start sub_806A990 +sub_806A990: @ 806A990 + push {lr} + ldr r1, _0806A9A4 @ =gUnknown_20370AE + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + beq _0806A9A8 + movs r0, 0 + b _0806A9AA + .align 2, 0 +_0806A9A4: .4byte gUnknown_20370AE +_0806A9A8: + movs r0, 0x1 +_0806A9AA: + pop {r1} + bx r1 + thumb_func_end sub_806A990 + + thumb_func_start sub_806A9B0 +sub_806A9B0: @ 806A9B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + ldr r1, _0806A9CC @ =gUnknown_20370AE + strh r0, [r1] + ldr r1, _0806A9D0 @ =sub_806A990 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806A9CC: .4byte gUnknown_20370AE +_0806A9D0: .4byte sub_806A990 + thumb_func_end sub_806A9B0 + + thumb_func_start sub_806A9D4 +sub_806A9D4: @ 806A9D4 + movs r0, 0 + bx lr + thumb_func_end sub_806A9D4 + + thumb_func_start sub_806A9D8 +sub_806A9D8: @ 806A9D8 + movs r0, 0 + bx lr + thumb_func_end sub_806A9D8 + + thumb_func_start sub_806A9DC +sub_806A9DC: @ 806A9DC + ldr r0, _0806A9F0 @ =gUnknown_20370B8 + movs r1, 0 + strh r1, [r0] + ldr r0, _0806A9F4 @ =gUnknown_20370BA + strh r1, [r0] + ldr r0, _0806A9F8 @ =gUnknown_20370BC + strh r1, [r0] + movs r0, 0 + bx lr + .align 2, 0 +_0806A9F0: .4byte gUnknown_20370B8 +_0806A9F4: .4byte gUnknown_20370BA +_0806A9F8: .4byte gUnknown_20370BC + thumb_func_end sub_806A9DC + + thumb_func_start sub_806A9FC +sub_806A9FC: @ 806A9FC + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_807B100 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806A9FC + + thumb_func_start sub_806AA18 +sub_806AA18: @ 806AA18 + push {lr} + bl sub_807B140 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806AA18 + + thumb_func_start sub_806AA24 +sub_806AA24: @ 806AA24 + push {lr} + bl sub_807B1A4 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806AA24 + + thumb_func_start sub_806AA30 +sub_806AA30: @ 806AA30 + push {lr} + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + adds r0, r2, 0 + bl sub_806E8D0 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806AA30 + + thumb_func_start sub_806AA48 +sub_806AA48: @ 806AA48 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8055D40 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806AA48 + + thumb_func_start sub_806AA64 +sub_806AA64: @ 806AA64 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805538C + bl sub_807E438 + bl sub_80559E4 + movs r0, 0x1 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AA64 + + thumb_func_start sub_806AAEC +sub_806AAEC: @ 806AAEC + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805538C + bl sub_807E470 + bl sub_80559E4 + movs r0, 0x1 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AAEC + + thumb_func_start sub_806AB74 +sub_806AB74: @ 806AB74 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805538C + bl sub_807E4DC + bl sub_80559E4 + movs r0, 0x1 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AB74 + + thumb_func_start sub_806ABFC +sub_806ABFC: @ 806ABFC + push {r4-r6,lr} + sub sp, 0x8 + ldr r1, [r0, 0x8] + ldrb r6, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldrb r5, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + mov r4, sp + adds r4, 0x6 + add r0, sp, 0x4 + adds r1, r4, 0 + bl sub_805C538 + cmp r6, 0xFF + bne _0806AC3A + cmp r5, 0xFF + bne _0806AC3A + add r0, sp, 0x4 + ldrh r0, [r0] + subs r0, 0x7 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r4] + subs r1, 0x7 + lsls r1, 16 + asrs r1, 16 + bl sub_8055688 + b _0806AC5E +_0806AC3A: + lsls r0, r6, 24 + asrs r0, 24 + lsls r1, r5, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + add r3, sp, 0x4 + ldrb r3, [r3] + subs r3, 0x7 + lsls r3, 24 + asrs r3, 24 + ldrb r4, [r4] + subs r4, 0x7 + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + bl sub_805538C +_0806AC5E: + bl sub_807E548 + bl sub_80559E4 + movs r0, 0x1 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806ABFC + + thumb_func_start sub_806AC70 +sub_806AC70: @ 806AC70 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805538C + bl sub_807E59C + bl sub_80559E4 + movs r0, 0x1 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AC70 + + thumb_func_start sub_806ACF8 +sub_806ACF8: @ 806ACF8 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805538C + bl sub_805C6C4 + lsls r0, 24 + lsrs r0, 24 + bl sub_805DAE4 + bl sub_807E500 + bl sub_80559E4 + movs r0, 0x1 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806ACF8 + + thumb_func_start sub_806AD8C +sub_806AD8C: @ 806AD8C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805538C + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AD8C + + thumb_func_start sub_806AE0C +sub_806AE0C: @ 806AE0C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x8 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + lsls r0, 24 + asrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0 + mov r1, r9 + mov r2, r8 + adds r3, r6, 0 + bl sub_805541C + movs r0, 0 + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AE0C + + thumb_func_start sub_806AE90 +sub_806AE90: @ 806AE90 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_80555F8 + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AE90 + + thumb_func_start sub_806AF10 +sub_806AF10: @ 806AF10 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_805564C + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AF10 + + thumb_func_start sub_806AF90 +sub_806AF90: @ 806AF90 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, 0x1 + str r1, [r5, 0x8] + ldrb r6, [r0, 0x1] + adds r1, 0x1 + str r1, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + mov r1, r9 + lsls r1, 24 + asrs r1, 24 + mov r9, r1 + mov r1, r8 + lsls r1, 24 + asrs r1, 24 + mov r8, r1 + lsls r6, 24 + asrs r6, 24 + lsls r4, 24 + asrs r4, 24 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r0, r9 + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_80555A0 + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806AF90 + + thumb_func_start sub_806B010 +sub_806B010: @ 806B010 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + ldr r2, _0806B048 @ =gUnknown_3005008 + ldr r1, [r2] + ldrh r1, [r1] + strh r1, [r5] + ldr r1, [r2] + ldrh r1, [r1, 0x2] + strh r1, [r0] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806B048: .4byte gUnknown_3005008 + thumb_func_end sub_806B010 + + thumb_func_start sub_806B04C +sub_806B04C: @ 806B04C + push {r4,lr} + ldr r4, _0806B064 @ =gUnknown_20370D0 + bl sub_8040C3C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B064: .4byte gUnknown_20370D0 + thumb_func_end sub_806B04C + + thumb_func_start sub_806B068 +sub_806B068: @ 806B068 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_80722CC + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B068 + + thumb_func_start sub_806B07C +sub_806B07C: @ 806B07C + push {lr} + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _0806B08C + movs r0, 0 + b _0806B08E +_0806B08C: + movs r0, 0x1 +_0806B08E: + pop {r1} + bx r1 + thumb_func_end sub_806B07C + + thumb_func_start sub_806B094 +sub_806B094: @ 806B094 + push {lr} + ldr r1, _0806B0A4 @ =sub_806B07C + bl sub_80697F4 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0806B0A4: .4byte sub_806B07C + thumb_func_end sub_806B094 + + thumb_func_start sub_806B0A8 +sub_806B0A8: @ 806B0A8 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8071C60 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B0A8 + + thumb_func_start sub_806B0BC +sub_806B0BC: @ 806B0BC + push {lr} + bl sub_8071C9C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_806B0BC + + thumb_func_start sub_806B0CC +sub_806B0CC: @ 806B0CC + push {lr} + ldr r1, _0806B0DC @ =sub_806B0BC + bl sub_80697F4 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0806B0DC: .4byte sub_806B0BC + thumb_func_end sub_806B0CC + + thumb_func_start sub_806B0E0 +sub_806B0E0: @ 806B0E0 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r1, r0, 16 + adds r5, r1, 0 + ldr r0, [r4, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + ldr r0, _0806B11C @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806B114 + cmp r2, 0x1 + bne _0806B10E + adds r0, r1, 0 + bl sub_8055E78 +_0806B10E: + adds r0, r5, 0 + bl sub_8071A74 +_0806B114: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806B11C: .4byte gUnknown_203ADFA + thumb_func_end sub_806B0E0 + + thumb_func_start sub_806B120 +sub_806B120: @ 806B120 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8055E78 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B120 + + thumb_func_start sub_806B134 +sub_806B134: @ 806B134 + push {lr} + ldr r0, _0806B150 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806B148 + bl sub_8055F1C +_0806B148: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806B150: .4byte gUnknown_203ADFA + thumb_func_end sub_806B134 + + thumb_func_start sub_806B154 +sub_806B154: @ 806B154 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _0806B178 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806B172 + adds r0, r1, 0 + bl sub_8055F48 +_0806B172: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806B178: .4byte gUnknown_203ADFA + thumb_func_end sub_806B154 + + thumb_func_start sub_806B17C +sub_806B17C: @ 806B17C + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + ldr r0, _0806B19C @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0806B1A0 + movs r0, 0 + b _0806B1BE + .align 2, 0 +_0806B19C: .4byte gUnknown_203ADFA +_0806B1A0: + cmp r1, 0 + beq _0806B1AE + lsls r0, r1, 26 + lsrs r0, 24 + bl sub_8071D64 + b _0806B1B4 +_0806B1AE: + movs r0, 0x4 + bl sub_8071D64 +_0806B1B4: + ldr r1, _0806B1C4 @ =sub_8071D7C + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 +_0806B1BE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B1C4: .4byte sub_8071D7C + thumb_func_end sub_806B17C + + thumb_func_start sub_806B1C8 +sub_806B1C8: @ 806B1C8 + push {lr} + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldr r0, _0806B1F0 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806B1FA + cmp r2, 0 + beq _0806B1F4 + lsls r0, r2, 26 + lsrs r0, 24 + bl sub_8071DA4 + b _0806B1FA + .align 2, 0 +_0806B1F0: .4byte gUnknown_203ADFA +_0806B1F4: + movs r0, 0x4 + bl sub_8071DA4 +_0806B1FA: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B1C8 + + thumb_func_start sub_806B200 +sub_806B200: @ 806B200 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_8069910 + adds r3, r0, 0 + lsls r0, r4, 24 + lsrs r0, 24 + ldr r1, _0806B23C @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_8097434 + ldr r0, _0806B240 @ =gUnknown_20370B0 + strh r4, [r0] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806B23C: .4byte gUnknown_3005008 +_0806B240: .4byte gUnknown_20370B0 + thumb_func_end sub_806B200 + + thumb_func_start sub_806B244 +sub_806B244: @ 806B244 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_8069910 + adds r3, r0, 0 + ldr r0, [r5, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8097434 + ldr r0, _0806B284 @ =gUnknown_20370B0 + strh r4, [r0] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806B284: .4byte gUnknown_20370B0 + thumb_func_end sub_806B244 + + thumb_func_start sub_806B288 +sub_806B288: @ 806B288 + push {lr} + ldr r0, _0806B2A4 @ =gUnknown_20370B0 + ldrb r0, [r0] + ldr r1, _0806B2A8 @ =gUnknown_20370B4 + ldrb r1, [r1] + ldr r2, _0806B2AC @ =gUnknown_20370B2 + ldrb r2, [r2] + bl sub_809748C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0806B2A4: .4byte gUnknown_20370B0 +_0806B2A8: .4byte gUnknown_20370B4 +_0806B2AC: .4byte gUnknown_20370B2 + thumb_func_end sub_806B288 + + thumb_func_start sub_806B2B0 +sub_806B2B0: @ 806B2B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _0806B2CC + ldr r0, _0806B2F0 @ =gUnknown_20370B0 + strh r1, [r0] +_0806B2CC: + ldr r1, _0806B2F4 @ =gUnknown_20370B2 + ldr r0, _0806B2F8 @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0x4 + ldrsb r0, [r2, r0] + strh r0, [r1] + ldr r1, _0806B2FC @ =gUnknown_20370B4 + movs r0, 0x5 + ldrsb r0, [r2, r0] + strh r0, [r1] + ldr r1, _0806B300 @ =sub_806B288 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B2F0: .4byte gUnknown_20370B0 +_0806B2F4: .4byte gUnknown_20370B2 +_0806B2F8: .4byte gUnknown_3005008 +_0806B2FC: .4byte gUnknown_20370B4 +_0806B300: .4byte sub_806B288 + thumb_func_end sub_806B2B0 + + thumb_func_start sub_806B304 +sub_806B304: @ 806B304 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _0806B320 + ldr r0, _0806B348 @ =gUnknown_20370B0 + strh r1, [r0] +_0806B320: + ldr r0, [r4, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + ldr r0, _0806B34C @ =gUnknown_20370B2 + strh r2, [r0] + ldr r0, _0806B350 @ =gUnknown_20370B4 + strh r1, [r0] + ldr r1, _0806B354 @ =sub_806B288 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B348: .4byte gUnknown_20370B0 +_0806B34C: .4byte gUnknown_20370B2 +_0806B350: .4byte gUnknown_20370B4 +_0806B354: .4byte sub_806B288 + thumb_func_end sub_806B304 + + thumb_func_start sub_806B358 +sub_806B358: @ 806B358 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806B37C @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805E4C8 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806B37C: .4byte gUnknown_3005008 + thumb_func_end sub_806B358 + + thumb_func_start sub_806B380 +sub_806B380: @ 806B380 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r3, [r4, 0x8] + ldrb r2, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + ldrb r1, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + bl sub_805E4C8 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B380 + + thumb_func_start sub_806B3B0 +sub_806B3B0: @ 806B3B0 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806B3D4 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805E898 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806B3D4: .4byte gUnknown_3005008 + thumb_func_end sub_806B3B0 + + thumb_func_start sub_806B3D8 +sub_806B3D8: @ 806B3D8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r3, [r4, 0x8] + ldrb r2, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + ldrb r1, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + bl sub_805E898 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B3D8 + + thumb_func_start sub_806B408 +sub_806B408: @ 806B408 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r6, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _0806B46C @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + lsls r4, 16 + asrs r4, 16 + lsls r0, 16 + asrs r0, 16 + str r0, [sp] + adds r0, r5, 0 + adds r3, r4, 0 + bl sub_805F7C4 + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806B46C: .4byte gUnknown_3005008 + thumb_func_end sub_806B408 + + thumb_func_start sub_806B470 +sub_806B470: @ 806B470 + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r6, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r2, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 16 + asrs r4, 16 + lsls r2, 16 + asrs r2, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80550D8 + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806B470 + + thumb_func_start sub_806B4C8 +sub_806B4C8: @ 806B4C8 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806B4EC @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805FE94 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806B4EC: .4byte gUnknown_3005008 + thumb_func_end sub_806B4C8 + + thumb_func_start sub_806B4F0 +sub_806B4F0: @ 806B4F0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r3, [r4, 0x8] + ldrb r2, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + ldrb r1, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + bl sub_805F314 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B4F0 + + thumb_func_start sub_806B520 +sub_806B520: @ 806B520 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r3, [r4, 0x8] + ldrb r2, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + ldrb r1, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + movs r3, 0x1 + bl sub_805F314 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B520 + + thumb_func_start sub_806B550 +sub_806B550: @ 806B550 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r3, [r5, 0x8] + ldrb r2, [r3] + adds r3, 0x1 + str r3, [r5, 0x8] + ldrb r1, [r3] + adds r4, r3, 0x1 + str r4, [r5, 0x8] + ldrb r3, [r3, 0x1] + adds r4, 0x1 + str r4, [r5, 0x8] + lsls r0, 24 + lsrs r0, 24 + adds r3, 0x53 + lsls r3, 24 + lsrs r3, 24 + bl sub_805F3A8 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806B550 + + thumb_func_start sub_806B58C +sub_806B58C: @ 806B58C + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r3, [r4, 0x8] + ldrb r2, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + ldrb r1, [r3] + adds r3, 0x1 + str r3, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + bl sub_805F400 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B58C + + thumb_func_start sub_806B5BC +sub_806B5BC: @ 806B5BC + push {r4,lr} + ldr r2, _0806B5EC @ =gUnknown_2036E38 + ldr r0, _0806B5F0 @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + ldrb r0, [r4] + lsls r0, 31 + cmp r0, 0 + beq _0806B5E4 + bl sub_805C6C4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80642C8 +_0806B5E4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B5EC: .4byte gUnknown_2036E38 +_0806B5F0: .4byte gUnknown_3005074 + thumb_func_end sub_806B5BC + + thumb_func_start sub_806B5F4 +sub_806B5F4: @ 806B5F4 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r1, [r4, 0x8] + ldrb r3, [r1] + adds r1, 0x1 + str r1, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806B624 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl sub_805F268 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B624: .4byte gUnknown_3005008 + thumb_func_end sub_806B5F4 + + thumb_func_start sub_806B628 +sub_806B628: @ 806B628 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r2, [r4, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r4, 0x8] + lsls r0, 24 + lsrs r0, 24 + bl sub_8055114 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B628 + + thumb_func_start sub_806B650 +sub_806B650: @ 806B650 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r5, r0, 0 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + mov r8, r1 + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r6, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r3, r0, 0 + ldr r0, [r5, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + lsls r4, 16 + asrs r4, 16 + lsls r3, 16 + asrs r3, 16 + str r2, [sp] + str r1, [sp, 0x4] + mov r0, r8 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_805E9F8 + movs r0, 0 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806B650 + + thumb_func_start sub_806B6C0 +sub_806B6C0: @ 806B6C0 + push {lr} + ldr r2, [r0, 0x8] + ldrb r3, [r2] + adds r2, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r0, 0x8] + adds r0, r3, 0 + bl sub_8069058 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B6C0 + + thumb_func_start sub_806B6DC +sub_806B6DC: @ 806B6DC + push {r4,lr} + adds r4, r0, 0 + bl sub_805642C + cmp r0, 0 + bne _0806B6FC + bl sub_80695B4 + ldr r1, _0806B6F8 @ =sub_8069590 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + b _0806B6FE + .align 2, 0 +_0806B6F8: .4byte sub_8069590 +_0806B6FC: + movs r0, 0 +_0806B6FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B6DC + + thumb_func_start sub_806B704 +sub_806B704: @ 806B704 + push {r4,lr} + adds r4, r0, 0 + bl sub_805642C + cmp r0, 0 + beq _0806B714 + movs r0, 0 + b _0806B752 +_0806B714: + ldr r2, _0806B738 @ =gUnknown_2036E38 + ldr r0, _0806B73C @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0806B744 + bl sub_806966C + ldr r1, _0806B740 @ =sub_8069648 + adds r0, r4, 0 + bl sub_80697F4 + b _0806B750 + .align 2, 0 +_0806B738: .4byte gUnknown_2036E38 +_0806B73C: .4byte gUnknown_3005074 +_0806B740: .4byte sub_8069648 +_0806B744: + bl sub_80695B4 + ldr r1, _0806B758 @ =sub_8069590 + adds r0, r4, 0 + bl sub_80697F4 +_0806B750: + movs r0, 0x1 +_0806B752: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B758: .4byte sub_8069590 + thumb_func_end sub_806B704 + + thumb_func_start sub_806B75C +sub_806B75C: @ 806B75C + push {lr} + bl sub_80694F4 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0806B790 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8063D7C + bl sub_80974D8 + bl sub_8068A5C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806B790: .4byte gUnknown_2036E38 + thumb_func_end sub_806B75C + + thumb_func_start sub_806B794 +sub_806B794: @ 806B794 + push {r4,lr} + bl sub_80694F4 + ldr r4, _0806B7E4 @ =gUnknown_2036E38 + ldr r0, _0806B7E8 @ =gUnknown_3005074 + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0806B7B6 + adds r0, r1, 0 + bl sub_8063D7C +_0806B7B6: + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + bl sub_805DF60 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8063D7C + bl sub_80974D8 + bl sub_8068A5C + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B7E4: .4byte gUnknown_2036E38 +_0806B7E8: .4byte gUnknown_3005074 + thumb_func_end sub_806B794 + + thumb_func_start sub_806B7EC +sub_806B7EC: @ 806B7EC + ldr r2, _0806B804 @ =gUnknown_20370DC + ldr r3, _0806B808 @ =gUnknown_20370DA + ldrh r1, [r3] + strh r1, [r2] + ldr r1, [r0, 0x8] + ldrb r2, [r1] + strh r2, [r3] + adds r1, 0x1 + str r1, [r0, 0x8] + movs r0, 0 + bx lr + .align 2, 0 +_0806B804: .4byte gUnknown_20370DC +_0806B808: .4byte gUnknown_20370DA + thumb_func_end sub_806B7EC + + thumb_func_start sub_806B80C +sub_806B80C: @ 806B80C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + cmp r0, 0 + bne _0806B81A + ldr r0, [r4, 0x64] +_0806B81A: + bl sub_806943C + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B80C + + thumb_func_start sub_806B828 +sub_806B828: @ 806B828 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + cmp r0, 0 + bne _0806B836 + ldr r0, [r4, 0x64] +_0806B836: + bl sub_80F7974 + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B828 + + thumb_func_start sub_806B850 +sub_806B850: @ 806B850 + push {lr} + bl sub_80F7998 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B850 + + thumb_func_start sub_806B85C +sub_806B85C: @ 806B85C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + cmp r0, 0 + bne _0806B86A + ldr r0, [r4, 0x64] +_0806B86A: + bl sub_8069464 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B85C + + thumb_func_start sub_806B878 +sub_806B878: @ 806B878 + push {lr} + ldr r1, _0806B888 @ =sub_806951C + bl sub_80697F4 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0806B888: .4byte sub_806951C + thumb_func_end sub_806B878 + + thumb_func_start sub_806B88C +sub_806B88C: @ 806B88C + push {lr} + bl sub_80694F4 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806B88C + + thumb_func_start sub_806B898 +sub_806B898: @ 806B898 + push {r4,lr} + ldr r0, _0806B8F0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0806B922 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0806B922 + ldr r4, _0806B8F4 @ =gUnknown_3005070 + ldr r0, [r4] + bl sub_806B93C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806B906 + ldr r0, [r4] + bl sub_806B96C + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8069998 + cmp r4, 0 + beq _0806B906 + ldr r0, _0806B8F8 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _0806B906 + bl sub_80699F8 + adds r0, r4, 0 + subs r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0806B8FC + bl sub_8069964 + b _0806B922 + .align 2, 0 +_0806B8F0: .4byte gUnknown_30030F0 +_0806B8F4: .4byte gUnknown_3005070 +_0806B8F8: .4byte gUnknown_203ADFA +_0806B8FC: + bl sub_80699A4 + bl sub_8069970 + b _0806B922 +_0806B906: + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806B91A + ldr r0, _0806B928 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _0806B934 +_0806B91A: + ldr r1, _0806B92C @ =gUnknown_20370AC + ldrb r0, [r1] + cmp r0, 0x78 + bne _0806B930 +_0806B922: + movs r0, 0x1 + b _0806B936 + .align 2, 0 +_0806B928: .4byte gUnknown_203ADFA +_0806B92C: .4byte gUnknown_20370AC +_0806B930: + adds r0, 0x1 + strb r0, [r1] +_0806B934: + movs r0, 0 +_0806B936: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806B898 + + thumb_func_start sub_806B93C +sub_806B93C: @ 806B93C + push {lr} + adds r2, r0, 0 + ldr r0, [r2, 0x8] + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806B958 + ldrb r1, [r2] + subs r1, 0x1 + lsls r1, 2 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0] +_0806B958: + subs r0, 0x6B + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0806B966 + movs r0, 0x1 + b _0806B968 +_0806B966: + movs r0, 0 +_0806B968: + pop {r1} + bx r1 + thumb_func_end sub_806B93C + + thumb_func_start sub_806B96C +sub_806B96C: @ 806B96C + push {lr} + ldr r2, _0806B988 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0806B990 + ldr r0, _0806B98C @ =gUnknown_20370D4 + ldrh r0, [r0] + cmp r0, 0x2 + beq _0806B990 + movs r0, 0x1 + b _0806BA36 + .align 2, 0 +_0806B988: .4byte gUnknown_30030F0 +_0806B98C: .4byte gUnknown_20370D4 +_0806B990: + ldrh r1, [r2, 0x2C] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806B9AC + ldr r0, _0806B9A8 @ =gUnknown_20370D4 + ldrh r0, [r0] + cmp r0, 0x1 + beq _0806B9AC + movs r0, 0x2 + b _0806BA36 + .align 2, 0 +_0806B9A8: .4byte gUnknown_20370D4 +_0806B9AC: + ldrh r1, [r2, 0x2C] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0806B9C8 + ldr r0, _0806B9C4 @ =gUnknown_20370D4 + ldrh r0, [r0] + cmp r0, 0x3 + beq _0806B9C8 + movs r0, 0x3 + b _0806BA36 + .align 2, 0 +_0806B9C4: .4byte gUnknown_20370D4 +_0806B9C8: + ldrh r1, [r2, 0x2C] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0806B9E4 + ldr r0, _0806B9E0 @ =gUnknown_20370D4 + ldrh r0, [r0] + cmp r0, 0x4 + beq _0806B9E4 + movs r0, 0x4 + b _0806BA36 + .align 2, 0 +_0806B9E0: .4byte gUnknown_20370D4 +_0806B9E4: + ldrh r1, [r2, 0x2E] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0806B9F4 + movs r0, 0x5 + b _0806BA36 +_0806B9F4: + ldrh r2, [r2, 0x2C] + movs r0, 0x80 + lsls r0, 1 + ands r0, r2 + cmp r0, 0 + beq _0806BA04 + movs r0, 0x6 + b _0806BA36 +_0806BA04: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _0806BA10 + movs r0, 0x7 + b _0806BA36 +_0806BA10: + movs r0, 0x4 + ands r0, r2 + cmp r0, 0 + beq _0806BA1C + movs r0, 0x8 + b _0806BA36 +_0806BA1C: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806BA28 + movs r0, 0x9 + b _0806BA36 +_0806BA28: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0806BA34 + movs r0, 0 + b _0806BA36 +_0806BA34: + movs r0, 0xA +_0806BA36: + pop {r1} + bx r1 + thumb_func_end sub_806B96C + + thumb_func_start sub_806BA3C +sub_806BA3C: @ 806BA3C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0806BA70 @ =gUnknown_3005070 + str r4, [r0] + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806BA58 + ldr r0, _0806BA74 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _0806BA5E +_0806BA58: + ldr r1, _0806BA78 @ =gUnknown_20370AC + movs r0, 0 + strb r0, [r1] +_0806BA5E: + ldr r1, _0806BA7C @ =sub_806B898 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BA70: .4byte gUnknown_3005070 +_0806BA74: .4byte gUnknown_203ADFA +_0806BA78: .4byte gUnknown_20370AC +_0806BA7C: .4byte sub_806B898 + thumb_func_end sub_806BA3C + + thumb_func_start sub_806BA80 +sub_806BA80: @ 806BA80 + push {lr} + ldr r2, [r0, 0x8] + ldrb r3, [r2] + adds r2, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r2] + adds r2, 0x1 + str r2, [r0, 0x8] + adds r0, r3, 0 + bl sub_809CDEC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806BAA2 + movs r0, 0 + b _0806BAA8 +_0806BAA2: + bl sub_8069B28 + movs r0, 0x1 +_0806BAA8: + pop {r1} + bx r1 + thumb_func_end sub_806BA80 + + thumb_func_start sub_806BAAC +sub_806BAAC: @ 806BAAC + push {r4,r5,lr} + ldr r2, [r0, 0x8] + ldrb r5, [r2] + adds r2, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r2] + adds r3, r2, 0x1 + str r3, [r0, 0x8] + ldrb r2, [r2, 0x1] + adds r4, r3, 0x1 + str r4, [r0, 0x8] + ldrb r3, [r3, 0x1] + adds r4, 0x1 + str r4, [r0, 0x8] + adds r0, r5, 0 + bl sub_809C9B4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806BADA + movs r0, 0 + b _0806BAE0 +_0806BADA: + bl sub_8069B28 + movs r0, 0x1 +_0806BAE0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806BAAC + + thumb_func_start sub_806BAE8 +sub_806BAE8: @ 806BAE8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + ldr r2, [r0, 0x8] + ldrb r1, [r2] + mov r8, r1 + adds r2, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r2] + adds r3, r2, 0x1 + str r3, [r0, 0x8] + ldrb r2, [r2, 0x1] + adds r5, r3, 0x1 + str r5, [r0, 0x8] + ldrb r6, [r3, 0x1] + adds r4, r5, 0x1 + str r4, [r0, 0x8] + ldrb r3, [r5, 0x1] + adds r4, 0x1 + str r4, [r0, 0x8] + str r6, [sp] + mov r0, r8 + bl sub_809CA04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806BB26 + movs r0, 0 + b _0806BB2C +_0806BB26: + bl sub_8069B28 + movs r0, 0x1 +_0806BB2C: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806BAE8 + + thumb_func_start sub_806BB38 +sub_806BB38: @ 806BB38 + movs r0, 0 + bx lr + thumb_func_end sub_806BB38 + + thumb_func_start sub_806BB3C +sub_806BB3C: @ 806BB3C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + ldr r2, [r0, 0x8] + ldrb r1, [r2] + mov r8, r1 + adds r2, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r2] + adds r3, r2, 0x1 + str r3, [r0, 0x8] + ldrb r2, [r2, 0x1] + adds r5, r3, 0x1 + str r5, [r0, 0x8] + ldrb r6, [r3, 0x1] + adds r4, r5, 0x1 + str r4, [r0, 0x8] + ldrb r3, [r5, 0x1] + adds r4, 0x1 + str r4, [r0, 0x8] + str r6, [sp] + mov r0, r8 + bl sub_809CEC8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806BB7A + movs r0, 0 + b _0806BB80 +_0806BB7A: + bl sub_8069B28 + movs r0, 0x1 +_0806BB80: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806BB3C + + thumb_func_start sub_806BB8C +sub_806BB8C: @ 806BB8C + ldr r1, [r0, 0x8] + adds r1, 0x4 + str r1, [r0, 0x8] + movs r0, 0 + bx lr + thumb_func_end sub_806BB8C + + thumb_func_start sub_806BB98 +sub_806BB98: @ 806BB98 + movs r0, 0 + bx lr + thumb_func_end sub_806BB98 + + thumb_func_start sub_806BB9C +sub_806BB9C: @ 806BB9C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, [r5, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + ldrb r2, [r0] + adds r0, 0x1 + str r0, [r5, 0x8] + adds r0, r4, 0 + bl sub_809D2F0 + adds r0, r4, 0 + movs r1, 0 + bl sub_8071F24 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806BB9C + + thumb_func_start sub_806BBD8 +sub_806BBD8: @ 806BBD8 + push {r4,lr} + adds r4, r0, 0 + bl sub_809D3CC + adds r1, r0, 0 + cmp r1, 0 + beq _0806BBF0 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + b _0806BBF2 +_0806BBF0: + movs r0, 0 +_0806BBF2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806BBD8 + + thumb_func_start sub_806BBF8 +sub_806BBF8: @ 806BBF8 + ldr r1, [r0, 0x8] + adds r1, 0x1 + str r1, [r0, 0x8] + movs r0, 0 + bx lr + thumb_func_end sub_806BBF8 + + thumb_func_start sub_806BC04 +sub_806BC04: @ 806BC04 + push {r4,r5,lr} + sub sp, 0xC + adds r5, r0, 0 + bl sub_8069910 + adds r4, r0, 0 + cmp r4, 0 + bne _0806BC16 + ldr r4, [r5, 0x64] +_0806BC16: + bl sub_80F6E9C + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r1, 0x6 + adds r2, r4, 0 + movs r3, 0 + bl sub_8002C48 + movs r0, 0 + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806BC04 + + thumb_func_start sub_806BC40 +sub_806BC40: @ 806BC40 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r1, r0, 0 + cmp r1, 0 + bne _0806BC50 + ldr r1, [r4, 0x64] +_0806BC50: + ldr r4, _0806BC68 @ =gUnknown_20370C0 + movs r2, 0x1 + negs r2, r2 + movs r0, 0x6 + bl sub_8005ED4 + strh r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BC68: .4byte gUnknown_20370C0 + thumb_func_end sub_806BC40 + + thumb_func_start sub_806BC6C +sub_806BC6C: @ 806BC6C + push {lr} + bl sub_8069910 + ldr r1, _0806BC84 @ =gUnknown_20370A8 + ldr r1, [r1] + subs r0, r1 + bl sub_806943C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806BC84: .4byte gUnknown_20370A8 + thumb_func_end sub_806BC6C + + thumb_func_start sub_806BC88 +sub_806BC88: @ 806BC88 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0806BCC0 @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r1 + ldr r2, [r4] + movs r1, 0xB + muls r1, r0 + ldr r0, _0806BCC4 @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r2, 0 + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BCC0: .4byte gUnknown_83A7294 +_0806BCC4: .4byte gUnknown_8245EE0 + thumb_func_end sub_806BC88 + + thumb_func_start sub_806BCC8 +sub_806BCC8: @ 806BCC8 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldr r0, _0806BD08 @ =gUnknown_83A7294 + lsls r2, 2 + adds r2, r0 + ldr r4, [r2] + bl sub_80CACFC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _0806BD0C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xB + muls r1, r0 + ldr r0, _0806BD10 @ =gUnknown_8245EE0 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BD08: .4byte gUnknown_83A7294 +_0806BD0C: .4byte gUnknown_2024284 +_0806BD10: .4byte gUnknown_8245EE0 + thumb_func_end sub_806BCC8 + + thumb_func_start sub_806BD14 +sub_806BD14: @ 806BD14 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + muls r0, r1 + ldr r1, _0806BD54 @ =gUnknown_2024284 + adds r0, r1 + ldr r1, _0806BD58 @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r1 + ldr r4, [r4] + movs r1, 0x2 + adds r2, r4, 0 + bl sub_803FBE8 + adds r0, r4, 0 + bl sub_8008D28 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BD54: .4byte gUnknown_2024284 +_0806BD58: .4byte gUnknown_83A7294 + thumb_func_end sub_806BD14 + + thumb_func_start sub_806BD5C +sub_806BD5C: @ 806BD5C + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0806BD8C @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r1 + ldr r1, [r4] + bl sub_8099E90 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BD8C: .4byte gUnknown_83A7294 + thumb_func_end sub_806BD5C + + thumb_func_start sub_806BD90 +sub_806BD90: @ 806BD90 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + ldrb r7, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r1, _0806BDE4 @ =gUnknown_83A7294 + lsls r0, r7, 2 + adds r0, r1 + ldr r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8099E90 + cmp r5, 0x4 + bne _0806BDEC + cmp r6, 0x1 + bls _0806BDEC + ldr r1, _0806BDE8 @ =gUnknown_83A72A0 + adds r0, r4, 0 + bl sub_8008DA4 + b _0806BE22 + .align 2, 0 +_0806BDE4: .4byte gUnknown_83A7294 +_0806BDE8: .4byte gUnknown_83A72A0 +_0806BDEC: + adds r0, r5, 0 + subs r0, 0x85 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x29 + bhi _0806BE22 + cmp r6, 0x1 + bls _0806BE22 + ldr r0, _0806BE2C @ =gUnknown_83A7294 + lsls r1, r7, 2 + adds r1, r0 + ldr r4, [r1] + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _0806BE22 + adds r0, r4, r0 + subs r0, 0x1 + movs r1, 0xFF + strb r1, [r0] + ldr r1, _0806BE30 @ =gUnknown_83A72A2 + adds r0, r4, 0 + bl sub_8008DA4 +_0806BE22: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806BE2C: .4byte gUnknown_83A7294 +_0806BE30: .4byte gUnknown_83A72A2 + thumb_func_end sub_806BD90 + + thumb_func_start sub_806BE34 +sub_806BE34: @ 806BE34 + push {lr} + ldr r1, [r0, 0x8] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806BE34 + + thumb_func_start sub_806BE50 +sub_806BE50: @ 806BE50 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0806BE88 @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r1 + ldr r2, [r4] + movs r1, 0xD + muls r1, r0 + ldr r0, _0806BE8C @ =gUnknown_8247094 + adds r1, r0 + adds r0, r2, 0 + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BE88: .4byte gUnknown_83A7294 +_0806BE8C: .4byte gUnknown_8247094 + thumb_func_end sub_806BE50 + + thumb_func_start sub_806BE90 +sub_806BE90: @ 806BE90 + push {r4,r5,lr} + ldr r1, [r0, 0x8] + ldrb r5, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + bl sub_80CBF04 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _0806BED0 @ =gUnknown_83A7294 + lsls r5, 2 + adds r5, r0 + ldr r0, [r5] + adds r1, r4, 0 + movs r2, 0 + bl sub_8008E78 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806BED0: .4byte gUnknown_83A7294 + thumb_func_end sub_806BE90 + + thumb_func_start sub_806BED4 +sub_806BED4: @ 806BED4 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + ldr r1, _0806BF0C @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r1 + ldr r2, [r4] + ldr r1, _0806BF10 @ =gUnknown_83E06B8 + lsrs r0, 14 + adds r0, r1 + ldr r1, [r0] + adds r0, r2, 0 + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BF0C: .4byte gUnknown_83A7294 +_0806BF10: .4byte gUnknown_83E06B8 + thumb_func_end sub_806BED4 + + thumb_func_start sub_806BF14 +sub_806BF14: @ 806BF14 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_8069910 + adds r1, r0, 0 + ldr r0, _0806BF38 @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r0 + ldr r0, [r4] + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BF38: .4byte gUnknown_83A7294 + thumb_func_end sub_806BF14 + + thumb_func_start sub_806BF3C +sub_806BF3C: @ 806BF3C + push {lr} + bl sub_8069910 + adds r1, r0, 0 + ldr r0, _0806BF58 @ =gUnknown_20370A8 + ldr r0, [r0] + subs r1, r0 + ldr r0, _0806BF5C @ =gUnknown_2021D18 + bl sub_8008FCC + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806BF58: .4byte gUnknown_20370A8 +_0806BF5C: .4byte gUnknown_2021D18 + thumb_func_end sub_806BF3C + + thumb_func_start sub_806BF60 +sub_806BF60: @ 806BF60 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_8069910 + adds r1, r0, 0 + ldr r0, _0806BF8C @ =gUnknown_20370A8 + ldr r0, [r0] + subs r1, r0 + ldr r0, _0806BF90 @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r0 + ldr r0, [r4] + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BF8C: .4byte gUnknown_20370A8 +_0806BF90: .4byte gUnknown_83A7294 + thumb_func_end sub_806BF60 + + thumb_func_start sub_806BF94 +sub_806BF94: @ 806BF94 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r1, _0806BFCC @ =gUnknown_83A7294 + lsls r4, 2 + adds r4, r1 + ldr r4, [r4] + lsls r0, 24 + lsrs r0, 24 + bl sub_808BD6C + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008D84 + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806BFCC: .4byte gUnknown_83A7294 + thumb_func_end sub_806BF94 + + thumb_func_start sub_806BFD0 +sub_806BFD0: @ 806BFD0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x8 + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + ldr r0, [r4, 0x8] + ldrb r1, [r0] + mov r9, r1 + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + bl sub_8069910 + mov r8, r0 + adds r0, r4, 0 + bl sub_8069910 + ldr r1, [r4, 0x8] + ldrb r2, [r1] + adds r1, 0x1 + str r1, [r4, 0x8] + ldr r4, _0806C04C @ =gUnknown_20370D0 + str r0, [sp] + str r2, [sp, 0x4] + adds r0, r6, 0 + mov r1, r9 + adds r2, r5, 0 + mov r3, r8 + bl sub_80A011C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + movs r0, 0 + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806C04C: .4byte gUnknown_20370D0 + thumb_func_end sub_806BFD0 + + thumb_func_start sub_806C050 +sub_806C050: @ 806C050 + push {r4,lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0806C078 @ =gUnknown_20370D0 + bl sub_80A01AC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C078: .4byte gUnknown_20370D0 + thumb_func_end sub_806C050 + + thumb_func_start sub_806C07C +sub_806C07C: @ 806C07C + push {r4,r5,lr} + ldr r1, [r0, 0x8] + ldrb r5, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_80A02FC + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806C07C + + thumb_func_start sub_806C0A8 +sub_806C0A8: @ 806C0A8 + push {r4-r7,lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r1, _0806C0BC @ =gUnknown_20370D0 + movs r0, 0x6 + strh r0, [r1] + movs r6, 0 + b _0806C0F6 + .align 2, 0 +_0806C0BC: .4byte gUnknown_20370D0 +_0806C0C0: + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _0806C0F0 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_8125AC0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806C0F0 + ldr r0, _0806C0E8 @ =gUnknown_20370D0 + strh r6, [r0] + ldr r0, _0806C0EC @ =gUnknown_20370C0 + strh r5, [r0] + b _0806C116 + .align 2, 0 +_0806C0E8: .4byte gUnknown_20370D0 +_0806C0EC: .4byte gUnknown_20370C0 +_0806C0F0: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0806C0F6: + cmp r6, 0x5 + bhi _0806C116 + movs r0, 0x64 + adds r1, r6, 0 + muls r1, r0 + ldr r0, _0806C120 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + bne _0806C0C0 +_0806C116: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806C120: .4byte gUnknown_2024284 + thumb_func_end sub_806C0A8 + + thumb_func_start sub_806C124 +sub_806C124: @ 806C124 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r2, r0, 0 + ldr r0, [r4, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + cmp r1, 0 + bne _0806C14A + ldr r0, _0806C154 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + adds r1, r2, 0 + bl sub_809FDA0 +_0806C14A: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C154: .4byte gUnknown_3005008 + thumb_func_end sub_806C124 + + thumb_func_start sub_806C158 +sub_806C158: @ 806C158 + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r2, r0, 0 + ldr r0, [r4, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + cmp r1, 0 + bne _0806C17E + ldr r0, _0806C188 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + adds r1, r2, 0 + bl sub_809FDD8 +_0806C17E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C188: .4byte gUnknown_3005008 + thumb_func_end sub_806C158 + + thumb_func_start sub_806C18C +sub_806C18C: @ 806C18C + push {r4,lr} + adds r4, r0, 0 + bl sub_8069910 + adds r2, r0, 0 + ldr r0, [r4, 0x8] + ldrb r1, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + cmp r1, 0 + bne _0806C1BA + ldr r4, _0806C1C4 @ =gUnknown_20370D0 + ldr r0, _0806C1C8 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + adds r1, r2, 0 + bl sub_809FD88 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] +_0806C1BA: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C1C4: .4byte gUnknown_20370D0 +_0806C1C8: .4byte gUnknown_3005008 + thumb_func_end sub_806C18C + + thumb_func_start sub_806C1CC +sub_806C1CC: @ 806C1CC + push {r4,r5,lr} + ldr r1, [r0, 0x8] + ldrb r5, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldrb r4, [r1] + adds r2, r1, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r1, 0x1] + adds r2, 0x1 + str r2, [r0, 0x8] + cmp r1, 0 + bne _0806C20A + ldr r0, _0806C214 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806C20A + ldr r0, _0806C218 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_809FFB8 +_0806C20A: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806C214: .4byte sub_809D6D4 +_0806C218: .4byte gUnknown_3005008 + thumb_func_end sub_806C1CC + + thumb_func_start sub_806C21C +sub_806C21C: @ 806C21C + push {lr} + bl sub_80A0034 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C21C + + thumb_func_start sub_806C228 +sub_806C228: @ 806C228 + push {lr} + ldr r1, [r0, 0x8] + adds r1, 0x1 + adds r2, r1, 0x1 + str r2, [r0, 0x8] + ldrb r1, [r1, 0x1] + adds r2, 0x1 + str r2, [r0, 0x8] + cmp r1, 0 + bne _0806C24E + ldr r0, _0806C254 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + bl sub_809FFA0 +_0806C24E: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806C254: .4byte gUnknown_3005008 + thumb_func_end sub_806C228 + + thumb_func_start sub_806C258 +sub_806C258: @ 806C258 + push {r4,r5,lr} + ldr r1, [r0, 0x8] + ldrb r5, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + ldr r0, _0806C290 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806C286 + bl sub_80D0554 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_80D072C +_0806C286: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806C290: .4byte sub_809D6D4 + thumb_func_end sub_806C258 + + thumb_func_start sub_806C294 +sub_806C294: @ 806C294 + push {lr} + ldr r1, [r0, 0x8] + adds r1, 0x2 + str r1, [r0, 0x8] + bl sub_80D07C8 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C294 + + thumb_func_start sub_806C2A8 +sub_806C2A8: @ 806C2A8 + push {lr} + ldr r1, [r0, 0x8] + adds r1, 0x2 + str r1, [r0, 0x8] + bl sub_80D0554 + lsls r0, 16 + lsrs r0, 16 + bl sub_80D06D0 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C2A8 + + thumb_func_start sub_806C2C4 +sub_806C2C4: @ 806C2C4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x8] + bl sub_8080228 + str r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806C2C4 + + thumb_func_start sub_806C2D8 +sub_806C2D8: @ 806C2D8 + push {lr} + bl sub_8080464 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806C2D8 + + thumb_func_start sub_806C2E4 +sub_806C2E4: @ 806C2E4 + push {r4,lr} + adds r4, r0, 0 + bl sub_80805E8 + str r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806C2E4 + + thumb_func_start sub_806C2F8 +sub_806C2F8: @ 806C2F8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8080600 + str r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806C2F8 + + thumb_func_start sub_806C30C +sub_806C30C: @ 806C30C + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8080424 + strb r0, [r4, 0x2] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806C30C + + thumb_func_start sub_806C330 +sub_806C330: @ 806C330 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_808043C + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C330 + + thumb_func_start sub_806C34C +sub_806C34C: @ 806C34C + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8080450 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C34C + + thumb_func_start sub_806C368 +sub_806C368: @ 806C368 + push {r4-r6,lr} + adds r4, r0, 0 + bl sub_80698F8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + ldr r0, [r4, 0x8] + ldrb r6, [r0] + adds r0, 0x1 + str r0, [r4, 0x8] + adds r0, r4, 0 + bl sub_80698F8 + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80A029C + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_806C368 + + thumb_func_start sub_806C39C +sub_806C39C: @ 806C39C + push {lr} + bl sub_807F8C4 + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806C39C + + thumb_func_start sub_806C3AC +sub_806C3AC: @ 806C3AC + push {lr} + bl sub_8069910 + bl sub_809C164 + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806C3AC + + thumb_func_start sub_806C3C0 +sub_806C3C0: @ 806C3C0 + push {lr} + bl sub_8069910 + bl sub_809C1A0 + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806C3C0 + + thumb_func_start sub_806C3D4 +sub_806C3D4: @ 806C3D4 + push {lr} + bl sub_8069910 + bl sub_809C1BC + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806C3D4 + + thumb_func_start sub_806C3E8 +sub_806C3E8: @ 806C3E8 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806C40C @ =sub_80568E0 + bl sub_813F804 + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0806C40C: .4byte sub_80568E0 + thumb_func_end sub_806C3E8 + + thumb_func_start sub_806C410 +sub_806C410: @ 806C410 + movs r0, 0 + bx lr + thumb_func_end sub_806C410 + + thumb_func_start sub_806C414 +sub_806C414: @ 806C414 + movs r0, 0 + bx lr + thumb_func_end sub_806C414 + + thumb_func_start sub_806C418 +sub_806C418: @ 806C418 + push {lr} + bl sub_8069B28 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806C418 + + thumb_func_start sub_806C424 +sub_806C424: @ 806C424 + movs r0, 0 + bx lr + thumb_func_end sub_806C424 + + thumb_func_start sub_806C428 +sub_806C428: @ 806C428 + movs r0, 0 + bx lr + thumb_func_end sub_806C428 + + thumb_func_start sub_806C42C +sub_806C42C: @ 806C42C + movs r0, 0 + bx lr + thumb_func_end sub_806C42C + + thumb_func_start sub_806C430 +sub_806C430: @ 806C430 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0806C454 @ =gUnknown_20370B6 + strh r0, [r1] + lsls r0, 24 + lsrs r0, 24 + bl sub_8083444 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806C454: .4byte gUnknown_20370B6 + thumb_func_end sub_806C430 + + thumb_func_start sub_806C458 +sub_806C458: @ 806C458 + push {r4,lr} + ldr r1, [r0, 0x8] + ldrb r4, [r1] + adds r1, 0x1 + str r1, [r0, 0x8] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r1, _0806C484 @ =gUnknown_20386E0 + lsls r4, 2 + adds r4, r1 + lsls r0, 16 + asrs r0, 16 + str r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C484: .4byte gUnknown_20386E0 + thumb_func_end sub_806C458 + + thumb_func_start sub_806C488 +sub_806C488: @ 806C488 + push {lr} + ldr r0, _0806C49C @ =gUnknown_20370B6 + ldrb r0, [r0] + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + beq _0806C4A0 + movs r0, 0 + b _0806C4A2 + .align 2, 0 +_0806C49C: .4byte gUnknown_20370B6 +_0806C4A0: + movs r0, 0x1 +_0806C4A2: + pop {r1} + bx r1 + thumb_func_end sub_806C488 + + thumb_func_start sub_806C4A8 +sub_806C4A8: @ 806C4A8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + ldr r1, _0806C4CC @ =gUnknown_20370B6 + strh r0, [r1] + ldr r1, _0806C4D0 @ =sub_806C488 + adds r0, r4, 0 + bl sub_80697F4 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C4CC: .4byte gUnknown_20370B6 +_0806C4D0: .4byte sub_806C488 + thumb_func_end sub_806C4A8 + + thumb_func_start sub_806C4D4 +sub_806C4D4: @ 806C4D4 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 24 + lsrs r0, 24 + bl sub_80554CC + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C4D4 + + thumb_func_start sub_806C4F0 +sub_806C4F0: @ 806C4F0 + ldr r1, _0806C500 @ =gUnknown_20370D0 + ldr r0, _0806C504 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + strh r0, [r1] + movs r0, 0 + bx lr + .align 2, 0 +_0806C500: .4byte gUnknown_20370D0 +_0806C504: .4byte gUnknown_300500C + thumb_func_end sub_806C4F0 + + thumb_func_start sub_806C508 +sub_806C508: @ 806C508 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8071F24 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806C508 + + thumb_func_start sub_806C540 +sub_806C540: @ 806C540 + push {lr} + ldr r1, _0806C550 @ =sub_80721A0 + bl sub_80697F4 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0806C550: .4byte sub_80721A0 + thumb_func_end sub_806C540 + + thumb_func_start sub_806C554 +sub_806C554: @ 806C554 + push {r4-r7,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r7, r0, 16 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + adds r1, r6, 0x7 + lsls r1, 16 + lsrs r6, r1, 16 + adds r1, r5, 0x7 + lsls r1, 16 + lsrs r5, r1, 16 + cmp r0, 0 + bne _0806C5B8 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r7, 0 + bl sub_8058FA4 + b _0806C5CA +_0806C5B8: + movs r1, 0xC0 + lsls r1, 4 + adds r0, r1, 0 + adds r2, r7, 0 + orrs r2, r0 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8058FA4 +_0806C5CA: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806C554 + + thumb_func_start sub_806C5D4 +sub_806C5D4: @ 806C5D4 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + adds r5, 0x7 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0xE0 + lsls r0, 11 + adds r4, r0 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805B364 + lsls r0, 16 + lsrs r0, 16 + bl sub_80722CC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_805B310 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806C5D4 + + thumb_func_start sub_806C62C +sub_806C62C: @ 806C62C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 16 + adds r4, 0x7 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0xE0 + lsls r0, 11 + adds r1, r0 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B2D0 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806C62C + + thumb_func_start sub_806C670 +sub_806C670: @ 806C670 + push {lr} + bl sub_805B350 + lsls r0, 24 + cmp r0, 0 + beq _0806C680 + movs r0, 0 + b _0806C682 +_0806C680: + movs r0, 0x1 +_0806C682: + pop {r1} + bx r1 + thumb_func_end sub_806C670 + + thumb_func_start sub_806C688 +sub_806C688: @ 806C688 + push {lr} + ldr r1, _0806C698 @ =sub_806C670 + bl sub_80697F4 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0806C698: .4byte sub_806C670 + thumb_func_end sub_806C688 + + thumb_func_start sub_806C69C +sub_806C69C: @ 806C69C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 16 + adds r4, 0x7 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0xE0 + lsls r0, 11 + adds r1, r0 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B268 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806C69C + + thumb_func_start sub_806C6E0 +sub_806C6E0: @ 806C6E0 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + adds r1, r0, 0 + lsls r1, 16 + adds r4, 0x7 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0xE0 + lsls r0, 11 + adds r1, r0 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_805B29C + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806C6E0 + + thumb_func_start sub_806C724 +sub_806C724: @ 806C724 + movs r0, 0 + bx lr + thumb_func_end sub_806C724 + + thumb_func_start sub_806C728 +sub_806C728: @ 806C728 + movs r0, 0 + bx lr + thumb_func_end sub_806C728 + + thumb_func_start sub_806C72C +sub_806C72C: @ 806C72C + push {r4,lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E454 + adds r4, r0, 0 + bl sub_80D0554 + strh r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806C72C + + thumb_func_start sub_806C74C +sub_806C74C: @ 806C74C + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_80D05A4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806C774 + ldr r1, _0806C770 @ =gUnknown_20370D0 + movs r0, 0 + b _0806C778 + .align 2, 0 +_0806C770: .4byte gUnknown_20370D0 +_0806C774: + ldr r1, _0806C780 @ =gUnknown_20370D0 + movs r0, 0x1 +_0806C778: + strh r0, [r1] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806C780: .4byte gUnknown_20370D0 + thumb_func_end sub_806C74C + + thumb_func_start sub_806C784 +sub_806C784: @ 806C784 + push {lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_80D05E4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806C7AC + ldr r1, _0806C7A8 @ =gUnknown_20370D0 + movs r0, 0 + b _0806C7B0 + .align 2, 0 +_0806C7A8: .4byte gUnknown_20370D0 +_0806C7AC: + ldr r1, _0806C7B8 @ =gUnknown_20370D0 + movs r0, 0x1 +_0806C7B0: + strh r0, [r1] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806C7B8: .4byte gUnknown_20370D0 + thumb_func_end sub_806C784 + + thumb_func_start sub_806C7BC +sub_806C7BC: @ 806C7BC + push {lr} + bl sub_8069A20 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C7BC + + thumb_func_start sub_806C7C8 +sub_806C7C8: @ 806C7C8 + push {lr} + bl sub_8069A2C + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806C7C8 + + thumb_func_start sub_806C7D4 +sub_806C7D4: @ 806C7D4 + push {lr} + sub sp, 0x4 + movs r2, 0x1 + mov r1, sp + strb r2, [r1] + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + muls r0, r1 + ldr r1, _0806C808 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x50 + mov r2, sp + bl sub_804037C + movs r0, 0 + add sp, 0x4 + pop {r1} + bx r1 + .align 2, 0 +_0806C808: .4byte gUnknown_2024284 + thumb_func_end sub_806C7D4 + + thumb_func_start sub_806C80C +sub_806C80C: @ 806C80C + push {r4,lr} + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0806C83C @ =gUnknown_20370D0 + movs r1, 0x64 + muls r0, r1 + ldr r1, _0806C840 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x50 + movs r2, 0 + bl sub_803FBE8 + strh r0, [r4] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C83C: .4byte gUnknown_20370D0 +_0806C840: .4byte gUnknown_2024284 + thumb_func_end sub_806C80C + + thumb_func_start sub_806C844 +sub_806C844: @ 806C844 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + bl sub_80698F8 + lsls r0, 16 + lsrs r0, 16 + bl sub_806E568 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, [r4, 0x8] + ldrb r2, [r0] + mov r1, sp + strb r2, [r1] + adds r0, 0x1 + str r0, [r4, 0x8] + cmp r3, 0x5 + bhi _0806C87A + movs r0, 0x64 + muls r0, r3 + ldr r1, _0806C884 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x23 + mov r2, sp + bl sub_804037C +_0806C87A: + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806C884: .4byte gUnknown_2024284 + thumb_func_end sub_806C844 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/script.s b/asm/script.s new file mode 100644 index 000000000..16ae21cc9 --- /dev/null +++ b/asm/script.s @@ -0,0 +1,1092 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80697AC +sub_80697AC: @ 80697AC + push {lr} + adds r3, r0, 0 + movs r0, 0 + strb r0, [r3, 0x1] + str r0, [r3, 0x8] + strb r0, [r3] + str r0, [r3, 0x4] + str r1, [r3, 0x5C] + str r2, [r3, 0x60] + movs r2, 0 + movs r1, 0x3 + adds r0, r3, 0 + adds r0, 0x70 +_080697C6: + str r2, [r0] + subs r0, 0x4 + subs r1, 0x1 + cmp r1, 0 + bge _080697C6 + adds r1, r3, 0 + adds r1, 0xC + movs r2, 0 + adds r0, r3, 0 + adds r0, 0x58 +_080697DA: + str r2, [r0] + subs r0, 0x4 + cmp r0, r1 + bge _080697DA + pop {r0} + bx r0 + thumb_func_end sub_80697AC + + thumb_func_start sub_80697E8 +sub_80697E8: @ 80697E8 + str r1, [r0, 0x8] + movs r1, 0x1 + strb r1, [r0, 0x1] + movs r0, 0x1 + bx lr + thumb_func_end sub_80697E8 + + thumb_func_start sub_80697F4 +sub_80697F4: @ 80697F4 + movs r2, 0x2 + strb r2, [r0, 0x1] + str r1, [r0, 0x4] + bx lr + thumb_func_end sub_80697F4 + + thumb_func_start sub_80697FC +sub_80697FC: @ 80697FC + movs r1, 0 + strb r1, [r0, 0x1] + str r1, [r0, 0x8] + bx lr + thumb_func_end sub_80697FC + + thumb_func_start sub_8069804 +sub_8069804: @ 8069804 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + beq _08069842 + cmp r0, 0x1 + bgt _08069818 + cmp r0, 0 + beq _08069834 + b _0806987A +_08069818: + cmp r0, 0x2 + bne _0806987A + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0806983E + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806987A + strb r0, [r4, 0x1] + b _0806987A +_08069832: + strb r2, [r4, 0x1] +_08069834: + movs r0, 0 + b _0806987C +_08069838: + movs r0, 0 + strb r0, [r4, 0x1] + b _0806987C +_0806983E: + movs r0, 0x1 + strb r0, [r4, 0x1] +_08069842: + ldr r2, [r4, 0x8] + cmp r2, 0 + beq _08069832 + ldr r0, _08069854 @ =gUnknown_83A7244 + ldr r0, [r0] + cmp r2, r0 + bne _08069858 +_08069850: + swi 0x2 + b _08069850 + .align 2, 0 +_08069854: .4byte gUnknown_83A7244 +_08069858: + ldrb r1, [r2] + adds r0, r2, 0x1 + str r0, [r4, 0x8] + lsls r1, 2 + ldr r0, [r4, 0x5C] + adds r1, r0, r1 + ldr r0, [r4, 0x60] + cmp r1, r0 + bcs _08069838 + ldr r1, [r1] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08069842 +_0806987A: + movs r0, 0x1 +_0806987C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8069804 + + thumb_func_start sub_8069884 +sub_8069884: @ 8069884 + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldrb r1, [r2] + adds r0, r1, 0x1 + cmp r0, 0x13 + bgt _080698A6 + lsls r0, r1, 2 + adds r1, r2, 0 + adds r1, 0xC + adds r1, r0 + str r3, [r1] + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + movs r0, 0 + b _080698A8 +_080698A6: + movs r0, 0x1 +_080698A8: + pop {r1} + bx r1 + thumb_func_end sub_8069884 + + thumb_func_start sub_80698AC +sub_80698AC: @ 80698AC + push {lr} + adds r2, r0, 0 + ldrb r0, [r2] + cmp r0, 0 + beq _080698C8 + subs r0, 0x1 + strb r0, [r2] + ldrb r1, [r2] + lsls r1, 2 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1 + ldr r0, [r0] + b _080698CA +_080698C8: + movs r0, 0 +_080698CA: + pop {r1} + bx r1 + thumb_func_end sub_80698AC + + thumb_func_start sub_80698D0 +sub_80698D0: @ 80698D0 + str r1, [r0, 0x8] + bx lr + thumb_func_end sub_80698D0 + + thumb_func_start sub_80698D4 +sub_80698D4: @ 80698D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, [r4, 0x8] + bl sub_8069884 + str r5, [r4, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80698D4 + + thumb_func_start sub_80698E8 +sub_80698E8: @ 80698E8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80698AC + str r0, [r4, 0x8] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80698E8 + + thumb_func_start sub_80698F8 +sub_80698F8: @ 80698F8 + adds r3, r0, 0 + ldr r2, [r3, 0x8] + ldrb r0, [r2] + adds r2, 0x1 + str r2, [r3, 0x8] + ldrb r1, [r2] + lsls r1, 8 + orrs r0, r1 + adds r2, 0x1 + str r2, [r3, 0x8] + bx lr + thumb_func_end sub_80698F8 + + thumb_func_start sub_8069910 +sub_8069910: @ 8069910 + push {r4-r6,lr} + adds r3, r0, 0 + ldr r0, [r3, 0x8] + ldrb r6, [r0] + adds r0, 0x1 + str r0, [r3, 0x8] + ldrb r5, [r0] + adds r2, r0, 0x1 + str r2, [r3, 0x8] + ldrb r4, [r0, 0x1] + adds r1, r2, 0x1 + str r1, [r3, 0x8] + ldrb r0, [r2, 0x1] + adds r1, 0x1 + str r1, [r3, 0x8] + lsls r0, 8 + adds r0, r4 + lsls r0, 8 + adds r0, r5 + lsls r0, 8 + adds r0, r6 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8069910 + + thumb_func_start sub_8069940 +sub_8069940: @ 8069940 + ldr r1, _08069948 @ =gUnknown_3000F9C + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_08069948: .4byte gUnknown_3000F9C + thumb_func_end sub_8069940 + + thumb_func_start sub_806994C +sub_806994C: @ 806994C + ldr r1, _08069954 @ =gUnknown_3000F9C + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08069954: .4byte gUnknown_3000F9C + thumb_func_end sub_806994C + + thumb_func_start sub_8069958 +sub_8069958: @ 8069958 + ldr r0, _08069960 @ =gUnknown_3000F9C + ldrb r0, [r0] + bx lr + .align 2, 0 +_08069960: .4byte gUnknown_3000F9C + thumb_func_end sub_8069958 + + thumb_func_start sub_8069964 +sub_8069964: @ 8069964 + ldr r1, _0806996C @ =gUnknown_3000FA0 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_0806996C: .4byte gUnknown_3000FA0 + thumb_func_end sub_8069964 + + thumb_func_start sub_8069970 +sub_8069970: @ 8069970 + ldr r1, _08069978 @ =gUnknown_3000FA0 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08069978: .4byte gUnknown_3000FA0 + thumb_func_end sub_8069970 + + thumb_func_start sub_806997C +sub_806997C: @ 806997C + push {lr} + ldr r0, _0806998C @ =gUnknown_3000FA0 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08069990 + movs r0, 0 + b _08069992 + .align 2, 0 +_0806998C: .4byte gUnknown_3000FA0 +_08069990: + movs r0, 0x1 +_08069992: + pop {r1} + bx r1 + thumb_func_end sub_806997C + + thumb_func_start sub_8069998 +sub_8069998: @ 8069998 + ldr r1, _080699A0 @ =gUnknown_3000F9F + strb r0, [r1] + bx lr + .align 2, 0 +_080699A0: .4byte gUnknown_3000F9F + thumb_func_end sub_8069998 + + thumb_func_start sub_80699A4 +sub_80699A4: @ 80699A4 + ldr r1, _080699AC @ =gUnknown_3000F9F + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_080699AC: .4byte gUnknown_3000F9F + thumb_func_end sub_80699A4 + + thumb_func_start sub_80699B0 +sub_80699B0: @ 80699B0 + ldr r0, _080699B8 @ =gUnknown_3000F9F + ldrb r0, [r0] + bx lr + .align 2, 0 +_080699B8: .4byte gUnknown_3000F9F + thumb_func_end sub_80699B0 + + thumb_func_start sub_80699BC +sub_80699BC: @ 80699BC + ldr r1, _080699C4 @ =gUnknown_3000F9D + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_080699C4: .4byte gUnknown_3000F9D + thumb_func_end sub_80699BC + + thumb_func_start sub_80699C8 +sub_80699C8: @ 80699C8 + ldr r1, _080699D0 @ =gUnknown_3000F9D + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_080699D0: .4byte gUnknown_3000F9D + thumb_func_end sub_80699C8 + + thumb_func_start sub_80699D4 +sub_80699D4: @ 80699D4 + ldr r0, _080699DC @ =gUnknown_3000F9D + ldrb r0, [r0] + bx lr + .align 2, 0 +_080699DC: .4byte gUnknown_3000F9D + thumb_func_end sub_80699D4 + + thumb_func_start sub_80699E0 +sub_80699E0: @ 80699E0 + ldr r1, _080699F0 @ =gUnknown_20370A0 + movs r0, 0x6 + strb r0, [r1] + ldr r1, _080699F4 @ =gUnknown_3000F9E + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_080699F0: .4byte gUnknown_20370A0 +_080699F4: .4byte gUnknown_3000F9E + thumb_func_end sub_80699E0 + + thumb_func_start sub_80699F8 +sub_80699F8: @ 80699F8 + ldr r1, _08069A00 @ =gUnknown_3000F9E + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08069A00: .4byte gUnknown_3000F9E + thumb_func_end sub_80699F8 + + thumb_func_start sub_8069A04 +sub_8069A04: @ 8069A04 + push {lr} + ldr r0, _08069A14 @ =gUnknown_3000F9E + ldrb r0, [r0] + cmp r0, 0x1 + beq _08069A18 + movs r0, 0 + b _08069A1A + .align 2, 0 +_08069A14: .4byte gUnknown_3000F9E +_08069A18: + movs r0, 0x1 +_08069A1A: + pop {r1} + bx r1 + thumb_func_end sub_8069A04 + + thumb_func_start sub_8069A20 +sub_8069A20: @ 8069A20 + ldr r1, _08069A28 @ =gUnknown_3000FA1 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_08069A28: .4byte gUnknown_3000FA1 + thumb_func_end sub_8069A20 + + thumb_func_start sub_8069A2C +sub_8069A2C: @ 8069A2C + ldr r1, _08069A34 @ =gUnknown_3000FA1 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08069A34: .4byte gUnknown_3000FA1 + thumb_func_end sub_8069A2C + + thumb_func_start sub_8069A38 +sub_8069A38: @ 8069A38 + push {lr} + ldr r0, _08069A48 @ =gUnknown_3000FA1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08069A4C + movs r0, 0 + b _08069A4E + .align 2, 0 +_08069A48: .4byte gUnknown_3000FA1 +_08069A4C: + movs r0, 0x1 +_08069A4E: + pop {r1} + bx r1 + thumb_func_end sub_8069A38 + + thumb_func_start sub_8069A54 +sub_8069A54: @ 8069A54 + push {lr} + bl sub_80CBDE8 + bl sub_8069A2C + pop {r0} + bx r0 + thumb_func_end sub_8069A54 + + thumb_func_start sub_8069A64 +sub_8069A64: @ 8069A64 + push {lr} + ldr r0, _08069A74 @ =gUnknown_3000EA8 + ldrb r0, [r0] + cmp r0, 0 + beq _08069A78 + movs r0, 0 + b _08069A7A + .align 2, 0 +_08069A74: .4byte gUnknown_3000EA8 +_08069A78: + movs r0, 0x1 +_08069A7A: + pop {r1} + bx r1 + thumb_func_end sub_8069A64 + + thumb_func_start sub_8069A80 +sub_8069A80: @ 8069A80 + push {lr} + ldr r0, _08069A98 @ =gUnknown_3000EB0 + ldr r1, _08069A9C @ =gUnknown_815F9B4 + ldr r2, _08069AA0 @ =gUnknown_815FD08 + bl sub_80697AC + ldr r1, _08069AA4 @ =gUnknown_3000EA8 + movs r0, 0x2 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08069A98: .4byte gUnknown_3000EB0 +_08069A9C: .4byte gUnknown_815F9B4 +_08069AA0: .4byte gUnknown_815FD08 +_08069AA4: .4byte gUnknown_3000EA8 + thumb_func_end sub_8069A80 + + thumb_func_start sub_8069AA8 +sub_8069AA8: @ 8069AA8 + push {r4,lr} + ldr r4, _08069ACC @ =gUnknown_3000EA8 + ldrb r0, [r4] + cmp r0, 0x2 + beq _08069ADC + cmp r0, 0x1 + beq _08069ADC + bl sub_8069940 + ldr r0, _08069AD0 @ =gUnknown_3000EB0 + bl sub_8069804 + lsls r0, 24 + cmp r0, 0 + beq _08069AD4 + movs r0, 0x1 + b _08069ADE + .align 2, 0 +_08069ACC: .4byte gUnknown_3000EA8 +_08069AD0: .4byte gUnknown_3000EB0 +_08069AD4: + movs r0, 0x2 + strb r0, [r4] + bl sub_806994C +_08069ADC: + movs r0, 0 +_08069ADE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8069AA8 + + thumb_func_start sub_8069AE4 +sub_8069AE4: @ 8069AE4 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80699F8 + bl sub_80699C8 + bl sub_8069970 + ldr r4, _08069B18 @ =gUnknown_3000EB0 + ldr r1, _08069B1C @ =gUnknown_815F9B4 + ldr r2, _08069B20 @ =gUnknown_815FD08 + adds r0, r4, 0 + bl sub_80697AC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80697E8 + bl sub_8069940 + ldr r1, _08069B24 @ =gUnknown_3000EA8 + movs r0, 0 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069B18: .4byte gUnknown_3000EB0 +_08069B1C: .4byte gUnknown_815F9B4 +_08069B20: .4byte gUnknown_815FD08 +_08069B24: .4byte gUnknown_3000EA8 + thumb_func_end sub_8069AE4 + + thumb_func_start sub_8069B28 +sub_8069B28: @ 8069B28 + ldr r1, _08069B30 @ =gUnknown_3000EA8 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_08069B30: .4byte gUnknown_3000EA8 + thumb_func_end sub_8069B28 + + thumb_func_start sub_8069B34 +sub_8069B34: @ 8069B34 + push {lr} + ldr r1, _08069B44 @ =gUnknown_3000EA8 + movs r0, 0 + strb r0, [r1] + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_08069B44: .4byte gUnknown_3000EA8 + thumb_func_end sub_8069B34 + + thumb_func_start sub_8069B48 +sub_8069B48: @ 8069B48 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08069B74 @ =gUnknown_3000F28 + ldr r1, _08069B78 @ =gUnknown_815F9B4 + ldr r2, _08069B7C @ =gUnknown_815FD08 + adds r0, r4, 0 + bl sub_80697AC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80697E8 +_08069B60: + ldr r0, _08069B74 @ =gUnknown_3000F28 + bl sub_8069804 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08069B60 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069B74: .4byte gUnknown_3000F28 +_08069B78: .4byte gUnknown_815F9B4 +_08069B7C: .4byte gUnknown_815FD08 + thumb_func_end sub_8069B48 + + thumb_func_start sub_8069B80 +sub_8069B80: @ 8069B80 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08069B98 @ =gUnknown_2036DFC + ldr r2, [r0, 0x8] + cmp r2, 0 + beq _08069B94 +_08069B8E: + ldrb r0, [r2] + cmp r0, 0 + bne _08069B9C +_08069B94: + movs r0, 0 + b _08069BBA + .align 2, 0 +_08069B98: .4byte gUnknown_2036DFC +_08069B9C: + cmp r0, r1 + beq _08069BA4 + adds r2, 0x5 + b _08069B8E +_08069BA4: + adds r2, 0x1 + ldrb r0, [r2] + ldrb r1, [r2, 0x1] + lsls r1, 8 + adds r0, r1 + ldrb r1, [r2, 0x2] + lsls r1, 16 + adds r0, r1 + ldrb r1, [r2, 0x3] + lsls r1, 24 + adds r0, r1 +_08069BBA: + pop {r1} + bx r1 + thumb_func_end sub_8069B80 + + thumb_func_start sub_8069BC0 +sub_8069BC0: @ 8069BC0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8069B80 + cmp r0, 0 + beq _08069BD2 + bl sub_8069B48 +_08069BD2: + pop {r0} + bx r0 + thumb_func_end sub_8069BC0 + + thumb_func_start sub_8069BD8 +sub_8069BD8: @ 8069BD8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8069B80 + adds r6, r0, 0 + cmp r6, 0 + beq _08069BF4 +_08069BE8: + ldrb r1, [r6] + ldrb r0, [r6, 0x1] + lsls r0, 8 + orrs r1, r0 + cmp r1, 0 + bne _08069BF8 +_08069BF4: + movs r0, 0 + b _08069C32 +_08069BF8: + adds r6, 0x2 + ldrb r5, [r6] + ldrb r0, [r6, 0x1] + lsls r0, 8 + orrs r5, r0 + adds r6, 0x2 + adds r0, r1, 0 + bl sub_806E568 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_806E568 + lsls r4, 16 + lsls r0, 16 + cmp r4, r0 + beq _08069C1E + adds r6, 0x4 + b _08069BE8 +_08069C1E: + ldrb r0, [r6] + ldrb r1, [r6, 0x1] + lsls r1, 8 + adds r0, r1 + ldrb r1, [r6, 0x2] + lsls r1, 16 + adds r0, r1 + ldrb r1, [r6, 0x3] + lsls r1, 24 + adds r0, r1 +_08069C32: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8069BD8 + + thumb_func_start sub_8069C38 +sub_8069C38: @ 8069C38 + push {lr} + movs r0, 0x1 + bl sub_8069BC0 + pop {r0} + bx r0 + thumb_func_end sub_8069C38 + + thumb_func_start sub_8069C44 +sub_8069C44: @ 8069C44 + push {lr} + movs r0, 0x3 + bl sub_8069BC0 + pop {r0} + bx r0 + thumb_func_end sub_8069C44 + + thumb_func_start sub_8069C50 +sub_8069C50: @ 8069C50 + push {lr} + movs r0, 0x5 + bl sub_8069BC0 + pop {r0} + bx r0 + thumb_func_end sub_8069C50 + + thumb_func_start sub_8069C5C +sub_8069C5C: @ 8069C5C + push {lr} + movs r0, 0x7 + bl sub_8069BC0 + pop {r0} + bx r0 + thumb_func_end sub_8069C5C + + thumb_func_start sub_8069C68 +sub_8069C68: @ 8069C68 + push {lr} + movs r0, 0x6 + bl sub_8069BC0 + pop {r0} + bx r0 + thumb_func_end sub_8069C68 + + thumb_func_start sub_8069C74 +sub_8069C74: @ 8069C74 + push {lr} + ldr r0, _08069C90 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x3 + beq _08069C94 + movs r0, 0x2 + bl sub_8069BD8 + cmp r0, 0 + beq _08069C94 + bl sub_8069AE4 + movs r0, 0x1 + b _08069C96 + .align 2, 0 +_08069C90: .4byte gUnknown_203ADFA +_08069C94: + movs r0, 0 +_08069C96: + pop {r1} + bx r1 + thumb_func_end sub_8069C74 + + thumb_func_start sub_8069C9C +sub_8069C9C: @ 8069C9C + push {lr} + movs r0, 0x4 + bl sub_8069BD8 + cmp r0, 0 + beq _08069CAC + bl sub_8069B48 +_08069CAC: + pop {r0} + bx r0 + thumb_func_end sub_8069C9C + + thumb_func_start sub_8069CB0 +sub_8069CB0: @ 8069CB0 + push {lr} + ldr r0, _08069CCC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08069CD0 @ =0x00003620 + adds r0, r1 + movs r1, 0xFA + lsls r1, 2 + bl sub_8045210 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_08069CCC: .4byte gUnknown_3005008 +_08069CD0: .4byte 0x00003620 + thumb_func_end sub_8069CB0 + + thumb_func_start sub_8069CD4 +sub_8069CD4: @ 8069CD4 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r0, _08069CF4 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, _08069CF8 @ =0x0000361c + adds r1, r0 + ldr r2, _08069CFC @ =0x050000fb + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08069CF4: .4byte gUnknown_3005008 +_08069CF8: .4byte 0x0000361c +_08069CFC: .4byte 0x050000fb + thumb_func_end sub_8069CD4 + + thumb_func_start sub_8069D00 +sub_8069D00: @ 8069D00 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + ldr r0, [sp, 0x24] + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08069D64 @ =gUnknown_3005008 + mov r10, r0 + ldr r5, [r0] + ldr r1, _08069D68 @ =0x00003620 + adds r4, r5, r1 + bl sub_8069CD4 + ldr r0, _08069D6C @ =0x000003e3 + cmp r8, r0 + bhi _08069D78 + movs r0, 0x33 + strb r0, [r4] + mov r2, r9 + strb r2, [r4, 0x1] + strb r7, [r4, 0x2] + strb r6, [r4, 0x3] + ldr r1, _08069D70 @ =0x00003624 + adds r0, r5, r1 + ldr r1, [sp] + mov r2, r8 + bl memcpy + bl sub_8069CB0 + mov r2, r10 + ldr r1, [r2] + ldr r2, _08069D74 @ =0x0000361c + adds r1, r2 + str r0, [r1] + movs r0, 0x1 + b _08069D7A + .align 2, 0 +_08069D64: .4byte gUnknown_3005008 +_08069D68: .4byte 0x00003620 +_08069D6C: .4byte 0x000003e3 +_08069D70: .4byte 0x00003624 +_08069D74: .4byte 0x0000361c +_08069D78: + movs r0, 0 +_08069D7A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8069D00 + + thumb_func_start sub_8069D8C +sub_8069D8C: @ 8069D8C + push {r4-r7,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r6, _08069DDC @ =gUnknown_3005008 + ldr r5, [r6] + ldr r0, _08069DE0 @ =0x00003620 + adds r2, r5, r0 + ldr r7, _08069DE4 @ =gUnknown_20370A4 + movs r0, 0 + str r0, [r7] + ldrb r0, [r2] + cmp r0, 0x33 + bne _08069DF4 + ldrb r1, [r2, 0x1] + movs r0, 0x4 + ldrsb r0, [r5, r0] + cmp r1, r0 + bne _08069DF4 + ldrb r1, [r2, 0x2] + movs r0, 0x5 + ldrsb r0, [r5, r0] + cmp r1, r0 + bne _08069DF4 + ldrb r0, [r2, 0x3] + cmp r0, r3 + bne _08069DF4 + bl sub_8069CB0 + ldr r1, [r6] + ldr r2, _08069DE8 @ =0x0000361c + adds r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08069DF0 + str r4, [r7] + ldr r1, _08069DEC @ =0x00003624 + adds r0, r5, r1 + b _08069DF6 + .align 2, 0 +_08069DDC: .4byte gUnknown_3005008 +_08069DE0: .4byte 0x00003620 +_08069DE4: .4byte gUnknown_20370A4 +_08069DE8: .4byte 0x0000361c +_08069DEC: .4byte 0x00003624 +_08069DF0: + bl sub_8069CD4 +_08069DF4: + adds r0, r4, 0 +_08069DF6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8069D8C + + thumb_func_start sub_8069DFC +sub_8069DFC: @ 8069DFC + push {r4,lr} + ldr r4, _08069E34 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r2, _08069E38 @ =0x00003620 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0x33 + bne _08069E40 + ldrb r0, [r1, 0x1] + cmp r0, 0xFF + bne _08069E40 + ldrb r0, [r1, 0x2] + cmp r0, 0xFF + bne _08069E40 + ldrb r0, [r1, 0x3] + cmp r0, 0xFF + bne _08069E40 + bl sub_8069CB0 + ldr r1, [r4] + ldr r2, _08069E3C @ =0x0000361c + adds r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08069E40 + movs r0, 0x1 + b _08069E42 + .align 2, 0 +_08069E34: .4byte gUnknown_3005008 +_08069E38: .4byte 0x00003620 +_08069E3C: .4byte 0x0000361c +_08069E40: + movs r0, 0 +_08069E42: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8069DFC + + thumb_func_start sub_8069E48 +sub_8069E48: @ 8069E48 + push {r4-r6,lr} + ldr r6, _08069E88 @ =gUnknown_3005008 + ldr r5, [r6] + ldr r0, _08069E8C @ =0x00003620 + adds r4, r5, r0 + bl sub_8143FC8 + cmp r0, 0 + beq _08069E9C + ldrb r0, [r4] + cmp r0, 0x33 + bne _08069E9C + ldrb r0, [r4, 0x1] + cmp r0, 0xFF + bne _08069E9C + ldrb r0, [r4, 0x2] + cmp r0, 0xFF + bne _08069E9C + ldrb r0, [r4, 0x3] + cmp r0, 0xFF + bne _08069E9C + bl sub_8069CB0 + ldr r1, [r6] + ldr r2, _08069E90 @ =0x0000361c + adds r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08069E98 + ldr r1, _08069E94 @ =0x00003624 + adds r0, r5, r1 + b _08069E9E + .align 2, 0 +_08069E88: .4byte gUnknown_3005008 +_08069E8C: .4byte 0x00003620 +_08069E90: .4byte 0x0000361c +_08069E94: .4byte 0x00003624 +_08069E98: + bl sub_8069CD4 +_08069E9C: + movs r0, 0 +_08069E9E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8069E48 + + thumb_func_start sub_8069EA4 +sub_8069EA4: @ 8069EA4 + push {lr} + sub sp, 0x4 + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _08069ECC @ =0x000003e3 + cmp r1, r0 + bls _08069EB6 + adds r1, r0, 0 +_08069EB6: + movs r0, 0xFF + str r0, [sp] + adds r0, r2, 0 + movs r2, 0xFF + movs r3, 0xFF + bl sub_8069D00 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08069ECC: .4byte 0x000003e3 + thumb_func_end sub_8069EA4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_menu.s b/asm/script_menu.s new file mode 100644 index 000000000..75a043478 --- /dev/null +++ b/asm/script_menu.s @@ -0,0 +1,2058 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_809C954 +sub_809C954: @ 809C954 + push {lr} + adds r1, r0, 0 + movs r0, 0x1 + movs r2, 0 + bl sub_8005ED4 + adds r1, r0, 0 + adds r0, r1, 0x7 + cmp r0, 0 + bge _0809C96A + adds r0, 0x7 +_0809C96A: + lsls r0, 13 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_809C954 + + thumb_func_start sub_809C974 +sub_809C974: @ 809C974 + push {r4-r7,lr} + adds r7, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r0, [r7] + bl sub_809C954 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0x1 + cmp r5, r4 + bcs _0809C9AA +_0809C98C: + lsls r0, r5, 3 + adds r0, r7 + ldr r0, [r0] + bl sub_809C954 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bcs _0809C9A0 + adds r6, r0, 0 +_0809C9A0: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r4 + bcc _0809C98C +_0809C9AA: + adds r0, r6, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809C974 + + thumb_func_start sub_809C9B4 +sub_809C9B4: @ 809C9B4 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + ldr r0, _0809C9F0 @ =sub_809CC98 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809C9F8 + ldr r0, _0809C9F4 @ =gUnknown_20370D0 + movs r1, 0xFF + strh r1, [r0] + movs r0, 0 + str r0, [sp] + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_809CA64 + movs r0, 0x1 + b _0809C9FA + .align 2, 0 +_0809C9F0: .4byte sub_809CC98 +_0809C9F4: .4byte gUnknown_20370D0 +_0809C9F8: + movs r0, 0 +_0809C9FA: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809C9B4 + + thumb_func_start sub_809CA04 +sub_809CA04: @ 809CA04 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r4, [sp, 0x1C] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r5, r3, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0809CA4C @ =sub_809CC98 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809CA54 + ldr r1, _0809CA50 @ =gUnknown_20370D0 + movs r0, 0xFF + strh r0, [r1] + str r4, [sp] + mov r0, r8 + adds r1, r7, 0 + adds r2, r6, 0 + adds r3, r5, 0 + bl sub_809CA64 + movs r0, 0x1 + b _0809CA56 + .align 2, 0 +_0809CA4C: .4byte sub_809CC98 +_0809CA50: .4byte gUnknown_20370D0 +_0809CA54: + movs r0, 0 +_0809CA56: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809CA04 + + thumb_func_start sub_809CA64 +sub_809CA64: @ 809CA64 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x14] + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x18] + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x1C] + movs r0, 0x2 + ands r0, r3 + cmp r0, 0 + bne _0809CAA6 + ldr r0, _0809CB54 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809CBA2 +_0809CAA6: + movs r0, 0x1 + ldr r1, [sp, 0x18] + ands r1, r0 + str r1, [sp, 0x18] + ldr r1, _0809CB58 @ =gUnknown_83E04B0 + mov r2, r10 + lsls r0, r2, 3 + adds r0, r1 + ldrb r7, [r0, 0x4] + ldr r0, [r0] + mov r8, r0 + movs r6, 0 + cmp r6, r7 + bge _0809CADE + mov r5, r8 + adds r4, r7, 0 +_0809CAC6: + ldr r1, [r5] + movs r0, 0x2 + movs r2, 0 + bl sub_8005ED4 + cmp r0, r6 + ble _0809CAD6 + adds r6, r0, 0 +_0809CAD6: + adds r5, 0x8 + subs r4, 0x1 + cmp r4, 0 + bne _0809CAC6 +_0809CADE: + adds r0, r6, 0 + adds r0, 0x9 + cmp r0, 0 + bge _0809CAE8 + adds r0, 0x7 +_0809CAE8: + asrs r0, 3 + adds r0, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r1, r9 + adds r0, r1, r5 + cmp r0, 0x1C + ble _0809CB02 + movs r0, 0x1C + subs r0, r5 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0809CB02: + adds r0, r7, 0 + bl sub_809CBB4 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + mov r0, r9 + ldr r1, [sp, 0x14] + adds r2, r5, 0 + bl sub_809D654 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + movs r1, 0 + bl sub_80F7750 + mov r2, r10 + cmp r2, 0x1E + beq _0809CB32 + cmp r2, 0xD + beq _0809CB32 + cmp r2, 0x29 + bne _0809CB5C +_0809CB32: + movs r0, 0xE + str r0, [sp] + str r7, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + movs r0, 0x2 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0x8 + movs r3, 0x2 + bl sub_810FBE8 + b _0809CB7A + .align 2, 0 +_0809CB54: .4byte sub_809D6D4 +_0809CB58: .4byte gUnknown_83E04B0 +_0809CB5C: + movs r0, 0xE + str r0, [sp] + str r7, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + movs r0, 0x2 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0x8 + movs r3, 0x2 + bl sub_810FBE8 +_0809CB7A: + movs r0, 0xE + str r0, [sp] + str r7, [sp, 0x4] + ldr r2, [sp, 0x1C] + str r2, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + ldr r0, [sp, 0x18] + adds r1, r7, 0 + adds r2, r5, 0 + mov r3, r10 + bl sub_809CC18 + movs r0, 0 + bl sub_80F67A4 +_0809CBA2: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809CA64 + + thumb_func_start sub_809CBB4 +sub_809CBB4: @ 809CBB4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8 + bhi _0809CC10 + lsls r0, 2 + ldr r1, _0809CBC8 @ =_0809CBCC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CBC8: .4byte _0809CBCC + .align 2, 0 +_0809CBCC: + .4byte _0809CC10 + .4byte _0809CBF0 + .4byte _0809CBF4 + .4byte _0809CBF8 + .4byte _0809CBFC + .4byte _0809CC00 + .4byte _0809CC04 + .4byte _0809CC08 + .4byte _0809CC0C +_0809CBF0: + movs r0, 0x2 + b _0809CC12 +_0809CBF4: + movs r0, 0x4 + b _0809CC12 +_0809CBF8: + movs r0, 0x6 + b _0809CC12 +_0809CBFC: + movs r0, 0x7 + b _0809CC12 +_0809CC00: + movs r0, 0x9 + b _0809CC12 +_0809CC04: + movs r0, 0xB + b _0809CC12 +_0809CC08: + movs r0, 0xD + b _0809CC12 +_0809CC0C: + movs r0, 0xE + b _0809CC12 +_0809CC10: + movs r0, 0x1 +_0809CC12: + pop {r1} + bx r1 + thumb_func_end sub_809CBB4 + + thumb_func_start sub_809CC18 +sub_809CC18: @ 809CC18 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + cmp r4, 0x27 + beq _0809CC36 + cmp r4, 0x2F + beq _0809CC36 + cmp r4, 0x32 + bne _0809CC40 +_0809CC36: + ldr r1, _0809CC3C @ =gUnknown_2039988 + movs r0, 0xC + b _0809CC44 + .align 2, 0 +_0809CC3C: .4byte gUnknown_2039988 +_0809CC40: + ldr r1, _0809CC68 @ =gUnknown_2039988 + movs r0, 0 +_0809CC44: + strb r0, [r1] + ldr r0, _0809CC6C @ =sub_809CC98 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _0809CC70 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r1 + strh r6, [r1, 0x10] + cmp r5, 0x3 + bls _0809CC74 + movs r0, 0x1 + b _0809CC76 + .align 2, 0 +_0809CC68: .4byte gUnknown_2039988 +_0809CC6C: .4byte sub_809CC98 +_0809CC70: .4byte gUnknown_3005090 +_0809CC74: + movs r0, 0 +_0809CC76: + strh r0, [r1, 0x12] + ldr r1, _0809CC94 @ =gUnknown_3005090 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r1 + strh r7, [r0, 0x14] + strh r4, [r0, 0x16] + adds r0, r4, 0 + bl sub_809CD48 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809CC94: .4byte gUnknown_3005090 + thumb_func_end sub_809CC18 + + thumb_func_start sub_809CC98 +sub_809CC98: @ 809CC98 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0809CCC4 @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _0809CCC8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0809CD3C + ldr r1, _0809CCCC @ =gUnknown_2039988 + ldrb r0, [r1] + cmp r0, 0 + beq _0809CCD0 + subs r0, 0x1 + strb r0, [r1] + b _0809CD3C + .align 2, 0 +_0809CCC4: .4byte gUnknown_3005098 +_0809CCC8: .4byte gUnknown_2037AB8 +_0809CCCC: .4byte gUnknown_2039988 +_0809CCD0: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0809CCDE + bl sub_810FA04 + b _0809CCE2 +_0809CCDE: + bl sub_810F998 +_0809CCE2: + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0809CD20 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + beq _0809CCF8 + ldrb r0, [r5, 0xE] + bl sub_809CD48 +_0809CCF8: + lsls r0, r4, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _0809CD3C + adds r0, 0x1 + cmp r1, r0 + bne _0809CD28 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0809CD3C + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0809CD24 @ =gUnknown_20370D0 + movs r0, 0x7F + strh r0, [r1] + b _0809CD2C + .align 2, 0 +_0809CD20: .4byte gUnknown_30030F0 +_0809CD24: .4byte gUnknown_20370D0 +_0809CD28: + ldr r0, _0809CD44 @ =gUnknown_20370D0 + strh r1, [r0] +_0809CD2C: + ldrb r0, [r5, 0xC] + bl sub_809D6B0 + adds r0, r6, 0 + bl sub_8077508 + bl sub_8069B34 +_0809CD3C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809CD44: .4byte gUnknown_20370D0 + thumb_func_end sub_809CC98 + + thumb_func_start sub_809CD48 +sub_809CD48: @ 809CD48 + push {r4,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x2F + beq _0809CD78 + cmp r0, 0x2F + bgt _0809CD60 + cmp r0, 0x27 + beq _0809CD66 + b _0809CDE0 +_0809CD60: + cmp r1, 0x32 + beq _0809CDB0 + b _0809CDE0 +_0809CD66: + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r4, _0809CD74 @ =gUnknown_83E072C + b _0809CD82 + .align 2, 0 +_0809CD74: .4byte gUnknown_83E072C +_0809CD78: + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r4, _0809CDAC @ =gUnknown_83E0738 +_0809CD82: + bl sub_810F98C + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r2, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + b _0809CDE0 + .align 2, 0 +_0809CDAC: .4byte gUnknown_83E0738 +_0809CDB0: + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r4, _0809CDE8 @ =gUnknown_83E0748 + bl sub_810F98C + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r2, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 +_0809CDE0: + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CDE8: .4byte gUnknown_83E0748 + thumb_func_end sub_809CD48 + + thumb_func_start sub_809CDEC +sub_809CDEC: @ 809CDEC + push {r4,lr} + ldr r4, _0809CE04 @ =sub_809CE54 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809CE08 + movs r0, 0 + b _0809CE28 + .align 2, 0 +_0809CE04: .4byte sub_809CE54 +_0809CE08: + ldr r1, _0809CE30 @ =gUnknown_20370D0 + movs r0, 0xFF + strh r0, [r1] + ldr r0, _0809CE34 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + cmp r0, 0 + bne _0809CE26 + bl sub_80F7858 + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C +_0809CE26: + movs r0, 0x1 +_0809CE28: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809CE30: .4byte gUnknown_20370D0 +_0809CE34: .4byte sub_809D6D4 + thumb_func_end sub_809CDEC + + thumb_func_start sub_809CE38 +sub_809CE38: @ 809CE38 + push {lr} + ldr r0, _0809CE48 @ =gUnknown_20370D0 + ldrh r0, [r0] + cmp r0, 0xFF + beq _0809CE4C + movs r0, 0x1 + b _0809CE4E + .align 2, 0 +_0809CE48: .4byte gUnknown_20370D0 +_0809CE4C: + movs r0, 0 +_0809CE4E: + pop {r1} + bx r1 + thumb_func_end sub_809CE38 + + thumb_func_start sub_809CE54 +sub_809CE54: @ 809CE54 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0809CE74 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0x4 + bgt _0809CE78 + adds r0, r2, 0x1 + strh r0, [r1, 0xC] + b _0809CEBC + .align 2, 0 +_0809CE74: .4byte gUnknown_3005090 +_0809CE78: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809CE9C + cmp r1, r0 + bgt _0809CE94 + subs r0, 0x1 + cmp r1, r0 + beq _0809CEBC + b _0809CEB2 +_0809CE94: + cmp r1, 0 + beq _0809CEAC + cmp r1, 0x1 + bne _0809CEB2 +_0809CE9C: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0809CEA8 @ =gUnknown_20370D0 + movs r0, 0 + b _0809CEB0 + .align 2, 0 +_0809CEA8: .4byte gUnknown_20370D0 +_0809CEAC: + ldr r1, _0809CEC4 @ =gUnknown_20370D0 + movs r0, 0x1 +_0809CEB0: + strh r0, [r1] +_0809CEB2: + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 +_0809CEBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CEC4: .4byte gUnknown_20370D0 + thumb_func_end sub_809CE54 + + thumb_func_start sub_809CEC8 +sub_809CEC8: @ 809CEC8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + ldr r4, [sp, 0x38] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x10] + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x14] + lsls r2, 24 + lsrs r5, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + lsls r4, 24 + lsrs r7, r4, 24 + ldr r0, _0809CF04 @ =sub_809CFDC + mov r9, r0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809CF08 + movs r0, 0 + b _0809CFBA + .align 2, 0 +_0809CF04: .4byte sub_809CFDC +_0809CF08: + ldr r1, _0809CFCC @ =gUnknown_20370D0 + movs r0, 0xFF + strh r0, [r1] + ldr r0, _0809CFD0 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809CFB8 + ldr r1, _0809CFD4 @ =gUnknown_83E04B0 + lsls r0, r5, 3 + adds r0, r1 + ldr r1, [r0] + mov r8, r1 + ldrb r4, [r0, 0x4] + mov r0, r8 + adds r1, r4, 0 + bl sub_809C974 + adds r5, r0, 0 + adds r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl __udivsi3 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + mov r0, r9 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809CFD8 @ =gUnknown_3005090 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r0, 0 + mov r9, r0 + mov r1, r10 + strh r1, [r4, 0x10] + adds r2, r5, 0 + muls r2, r7 + lsls r2, 24 + lsrs r2, 24 + lsls r3, r6, 25 + lsrs r3, 24 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + bl sub_809D654 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x14] + movs r1, 0 + bl sub_80F7750 + ldrb r0, [r4, 0x14] + lsls r5, 27 + lsrs r5, 24 + str r7, [sp] + str r6, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + movs r1, 0x1 + adds r2, r5, 0 + movs r3, 0x10 + bl sub_8110104 + ldrb r0, [r4, 0x14] + str r5, [sp] + str r7, [sp, 0x4] + str r6, [sp, 0x8] + mov r1, r9 + str r1, [sp, 0xC] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x1 + bl sub_811030C + movs r0, 0 + bl sub_80F67A4 +_0809CFB8: + movs r0, 0x1 +_0809CFBA: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809CFCC: .4byte gUnknown_20370D0 +_0809CFD0: .4byte sub_809D6D4 +_0809CFD4: .4byte gUnknown_83E04B0 +_0809CFD8: .4byte gUnknown_3005090 + thumb_func_end sub_809CEC8 + + thumb_func_start sub_809CFDC +sub_809CFDC: @ 809CFDC + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0809D018 @ =gUnknown_3005098 + adds r5, r0, r1 + bl sub_8110650 + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _0809D034 + adds r0, 0x1 + cmp r1, r0 + bne _0809D020 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0809D034 + movs r0, 0x5 + bl sub_80722CC + ldr r1, _0809D01C @ =gUnknown_20370D0 + movs r0, 0x7F + strh r0, [r1] + b _0809D024 + .align 2, 0 +_0809D018: .4byte gUnknown_3005098 +_0809D01C: .4byte gUnknown_20370D0 +_0809D020: + ldr r0, _0809D03C @ =gUnknown_20370D0 + strh r1, [r0] +_0809D024: + ldrb r0, [r5, 0xC] + bl sub_809D6B0 + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 +_0809D034: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D03C: .4byte gUnknown_20370D0 + thumb_func_end sub_809CFDC + + thumb_func_start sub_809D040 +sub_809D040: @ 809D040 + push {lr} + ldr r0, _0809D060 @ =sub_809CC98 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809D068 + ldr r1, _0809D064 @ =gUnknown_20370D0 + movs r0, 0xFF + strh r0, [r1] + bl sub_809D070 + movs r0, 0x1 + b _0809D06A + .align 2, 0 +_0809D060: .4byte sub_809CC98 +_0809D064: .4byte gUnknown_20370D0 +_0809D068: + movs r0, 0 +_0809D06A: + pop {r1} + bx r1 + thumb_func_end sub_809D040 + + thumb_func_start sub_809D070 +sub_809D070: @ 809D070 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + ldr r0, _0809D11C @ =gUnknown_8417BB6 + bl sub_809C954 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xA + bgt _0809D0A0 + cmp r0, 0x9 + bge _0809D0AE +_0809D0A0: + ldr r0, _0809D120 @ =0x00000829 + bl sub_806E6D0 + lsls r0, 24 + movs r4, 0xD + cmp r0, 0 + beq _0809D0B0 +_0809D0AE: + movs r4, 0xE +_0809D0B0: + ldr r0, _0809D124 @ =0x0000082c + bl sub_806E6D0 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _0809D134 + movs r0, 0x5 + mov r9, r0 + movs r0, 0 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0xA + bl sub_809D654 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_80F7750 + ldr r2, _0809D128 @ =gUnknown_8417BD3 + movs r0, 0x22 + str r0, [sp] + movs r5, 0xFF + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 + ldr r2, _0809D12C @ =gUnknown_8417BBE + movs r0, 0x32 + str r0, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 + ldr r2, _0809D130 @ =gUnknown_8417BCB + movs r0, 0x42 + str r0, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 + b _0809D1A8 + .align 2, 0 +_0809D11C: .4byte gUnknown_8417BB6 +_0809D120: .4byte 0x00000829 +_0809D124: .4byte 0x0000082c +_0809D128: .4byte gUnknown_8417BD3 +_0809D12C: .4byte gUnknown_8417BBE +_0809D130: .4byte gUnknown_8417BCB +_0809D134: + ldr r1, _0809D1D0 @ =0x00000829 + mov r8, r1 + mov r0, r8 + bl sub_806E6D0 + lsls r0, 24 + movs r1, 0x3 + mov r9, r1 + cmp r0, 0 + beq _0809D14C + movs r0, 0x4 + mov r9, r0 +_0809D14C: + mov r1, r9 + lsls r3, r1, 1 + movs r0, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_809D654 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_80F7750 + mov r0, r8 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _0809D188 + ldr r2, _0809D1D4 @ =gUnknown_8417BD3 + movs r0, 0x22 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 +_0809D188: + ldr r2, _0809D1D8 @ =gUnknown_8417BCB + mov r0, r9 + subs r0, 0x1 + lsls r0, 4 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 +_0809D1A8: + ldr r0, _0809D1DC @ =0x00000834 + bl sub_806E6D0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0809D1E4 + ldr r2, _0809D1E0 @ =gUnknown_8417BAC + movs r0, 0x2 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 + b _0809D1FA + .align 2, 0 +_0809D1D0: .4byte 0x00000829 +_0809D1D4: .4byte gUnknown_8417BD3 +_0809D1D8: .4byte gUnknown_8417BCB +_0809D1DC: .4byte 0x00000834 +_0809D1E0: .4byte gUnknown_8417BAC +_0809D1E4: + ldr r2, _0809D248 @ =gUnknown_8417B9F + movs r0, 0x2 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r3, r7, 0 + bl sub_8002C48 +_0809D1FA: + ldr r4, _0809D24C @ =gUnknown_2021D18 + ldr r1, _0809D250 @ =gUnknown_8417BB6 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r7, 0 + movs r3, 0x12 + bl sub_812E6DC + movs r0, 0x10 + str r0, [sp] + mov r0, r9 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0 + mov r1, r9 + adds r2, r6, 0 + movs r3, 0xFF + bl sub_809CC18 + movs r0, 0 + bl sub_80F67A4 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809D248: .4byte gUnknown_8417B9F +_0809D24C: .4byte gUnknown_2021D18 +_0809D250: .4byte gUnknown_8417BB6 + thumb_func_end sub_809D070 + + thumb_func_start sub_809D254 +sub_809D254: @ 809D254 + push {lr} + sub sp, 0x10 + movs r0, 0 + movs r1, 0x1 + bl sub_80F7768 + ldr r2, _0809D284 @ =gUnknown_81A508A + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0809D284: .4byte gUnknown_81A508A + thumb_func_end sub_809D254 + + thumb_func_start sub_809D288 +sub_809D288: @ 809D288 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809D2AC @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0809D2E8 + cmp r0, 0x1 + bgt _0809D2B0 + cmp r0, 0 + beq _0809D2CE + b _0809D2E8 + .align 2, 0 +_0809D2AC: .4byte gUnknown_3005090 +_0809D2B0: + cmp r0, 0x2 + beq _0809D2BA + cmp r0, 0x3 + beq _0809D2DC + b _0809D2E8 +_0809D2BA: + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809D2D8 @ =gUnknown_202063C + adds r0, r1 + ldrb r1, [r4, 0xC] + bl sub_8083A5C +_0809D2CE: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0809D2E8 + .align 2, 0 +_0809D2D8: .4byte gUnknown_202063C +_0809D2DC: + ldrb r0, [r4, 0x12] + bl sub_809D6B0 + adds r0, r5, 0 + bl sub_8077508 +_0809D2E8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809D288 + + thumb_func_start sub_809D2F0 +sub_809D2F0: @ 809D2F0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _0809D318 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809D31C + movs r0, 0x1 + b _0809D3C2 + .align 2, 0 +_0809D318: .4byte sub_809D6D4 +_0809D31C: + ldr r4, _0809D3B0 @ =sub_809D288 + adds r0, r4, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0809D3C0 + lsls r1, r7, 19 + movs r0, 0xA0 + lsls r0, 14 + adds r1, r0 + asrs r1, 16 + lsls r2, r6, 19 + adds r2, r0 + asrs r2, 16 + mov r0, r8 + movs r3, 0 + bl sub_8083970 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + adds r1, r6, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_809D654 + ldr r1, _0809D3B4 @ =gUnknown_3005090 + lsls r3, r4, 2 + adds r3, r4 + lsls r3, 3 + adds r3, r1 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + strh r0, [r3, 0x12] + strh r1, [r3, 0x8] + mov r0, r8 + strh r0, [r3, 0xA] + strh r5, [r3, 0xC] + ldr r4, _0809D3B8 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r0, r4, 0 + adds r0, 0x1C + adds r0, r1, r0 + ldr r2, _0809D3BC @ =nullsub_8 + str r2, [r0] + adds r1, r4 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] + ldrb r0, [r3, 0x12] + movs r1, 0x1 + bl sub_80F7750 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + b _0809D3C2 + .align 2, 0 +_0809D3B0: .4byte sub_809D288 +_0809D3B4: .4byte gUnknown_3005090 +_0809D3B8: .4byte gUnknown_202063C +_0809D3BC: .4byte nullsub_8 +_0809D3C0: + movs r0, 0 +_0809D3C2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809D2F0 + + thumb_func_start sub_809D3CC +sub_809D3CC: @ 809D3CC + push {lr} + ldr r0, _0809D3F0 @ =sub_809D288 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _0809D3FC + ldr r0, _0809D3F4 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r0, _0809D3F8 @ =sub_809D404 + b _0809D3FE + .align 2, 0 +_0809D3F0: .4byte sub_809D288 +_0809D3F4: .4byte gUnknown_3005090 +_0809D3F8: .4byte sub_809D404 +_0809D3FC: + movs r0, 0 +_0809D3FE: + pop {r1} + bx r1 + thumb_func_end sub_809D3CC + + thumb_func_start sub_809D404 +sub_809D404: @ 809D404 + push {lr} + ldr r0, _0809D418 @ =sub_809D288 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0809D41C + movs r0, 0 + b _0809D41E + .align 2, 0 +_0809D418: .4byte sub_809D288 +_0809D41C: + movs r0, 0x1 +_0809D41E: + pop {r1} + bx r1 + thumb_func_end sub_809D404 + + thumb_func_start sub_809D424 +sub_809D424: @ 809D424 + push {r4,r5,lr} + ldr r0, _0809D450 @ =sub_809D288 + bl sub_8077688 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xFF + beq _0809D48C + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809D454 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + blt _0809D48C + cmp r0, 0x2 + ble _0809D458 + cmp r0, 0x3 + beq _0809D480 + b _0809D48C + .align 2, 0 +_0809D450: .4byte sub_809D288 +_0809D454: .4byte gUnknown_3005090 +_0809D458: + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809D47C @ =gUnknown_202063C + adds r0, r1 + ldrb r1, [r4, 0xC] + bl sub_8083A5C + ldrb r0, [r4, 0x12] + bl sub_809D6B0 + adds r0, r5, 0 + bl sub_8077508 + b _0809D48C + .align 2, 0 +_0809D47C: .4byte gUnknown_202063C +_0809D480: + ldrb r0, [r4, 0x12] + bl sub_809D6B0 + adds r0, r5, 0 + bl sub_8077508 +_0809D48C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809D424 + + thumb_func_start sub_809D494 +sub_809D494: @ 809D494 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809D4B8 @ =gUnknown_3005090 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0809D4FC + cmp r0, 0x1 + bgt _0809D4BC + cmp r0, 0 + beq _0809D4DE + b _0809D4FC + .align 2, 0 +_0809D4B8: .4byte gUnknown_3005090 +_0809D4BC: + cmp r0, 0x2 + beq _0809D4C6 + cmp r0, 0x3 + beq _0809D4F0 + b _0809D4FC +_0809D4C6: + movs r0, 0xC + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809D4E8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r0, _0809D4EC @ =0x00001b58 + bl sub_800874C +_0809D4DE: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0809D4FC + .align 2, 0 +_0809D4E8: .4byte gUnknown_202063C +_0809D4EC: .4byte 0x00001b58 +_0809D4F0: + ldrb r0, [r4, 0x12] + bl sub_809D6B0 + adds r0, r5, 0 + bl sub_8077508 +_0809D4FC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809D494 + + thumb_func_start sub_809D504 +sub_809D504: @ 809D504 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _0809D544 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809D5F2 + ldr r0, _0809D548 @ =sub_809D494 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0809D55C + ldr r0, _0809D54C @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x8D + bne _0809D558 + ldr r0, _0809D550 @ =gUnknown_83E17C0 + bl sub_8008720 + ldr r0, _0809D554 @ =gUnknown_83E17A0 + movs r1, 0xE8 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC + b _0809D572 + .align 2, 0 +_0809D544: .4byte sub_809D6D4 +_0809D548: .4byte sub_809D494 +_0809D54C: .4byte gUnknown_20370C0 +_0809D550: .4byte gUnknown_83E17C0 +_0809D554: .4byte gUnknown_83E17A0 +_0809D558: + cmp r0, 0x8E + beq _0809D560 +_0809D55C: + movs r0, 0 + b _0809D5F4 +_0809D560: + ldr r0, _0809D600 @ =gUnknown_83E17D0 + bl sub_8008720 + ldr r0, _0809D604 @ =gUnknown_83E0F80 + movs r1, 0xE8 + lsls r1, 1 + movs r2, 0x20 + bl sub_80703EC +_0809D572: + ldr r0, _0809D608 @ =gUnknown_83E0768 + ldr r1, _0809D60C @ =gUnknown_20370C2 + mov r8, r1 + ldrh r1, [r1] + lsls r1, 19 + movs r2, 0xA0 + lsls r2, 14 + adds r1, r2 + asrs r1, 16 + ldr r6, _0809D610 @ =gUnknown_20370C4 + ldrh r2, [r6] + lsls r2, 19 + movs r3, 0xA0 + lsls r3, 14 + adds r2, r3 + asrs r2, 16 + movs r3, 0 + bl sub_8006F8C + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _0809D614 @ =gUnknown_202063C + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x5] + movs r1, 0xF + ands r1, r2 + movs r2, 0xD0 + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r0, _0809D618 @ =sub_809D494 + movs r1, 0x50 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + ldrb r0, [r1] + ldrb r1, [r6] + movs r2, 0x8 + movs r3, 0x8 + bl sub_809D654 + ldr r2, _0809D61C @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + strh r0, [r1, 0x12] + strh r2, [r1, 0x8] + strh r5, [r1, 0xC] + movs r1, 0x1 + bl sub_80F7750 + movs r0, 0 + bl sub_80F67A4 +_0809D5F2: + movs r0, 0x1 +_0809D5F4: + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809D600: .4byte gUnknown_83E17D0 +_0809D604: .4byte gUnknown_83E0F80 +_0809D608: .4byte gUnknown_83E0768 +_0809D60C: .4byte gUnknown_20370C2 +_0809D610: .4byte gUnknown_20370C4 +_0809D614: .4byte gUnknown_202063C +_0809D618: .4byte sub_809D494 +_0809D61C: .4byte gUnknown_3005090 + thumb_func_end sub_809D504 + + thumb_func_start sub_809D620 +sub_809D620: @ 809D620 + push {lr} + ldr r0, _0809D644 @ =sub_809D494 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _0809D64C + ldr r0, _0809D648 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0x1 + b _0809D64E + .align 2, 0 +_0809D644: .4byte sub_809D494 +_0809D648: .4byte gUnknown_3005090 +_0809D64C: + movs r0, 0 +_0809D64E: + pop {r1} + bx r1 + thumb_func_end sub_809D620 + + thumb_func_start sub_809D654 +sub_809D654: @ 809D654 + push {r4,r5,lr} + sub sp, 0x20 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsls r5, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x80 + lsls r0, 17 + adds r4, r0 + lsrs r4, 24 + adds r5, r0 + lsrs r5, 24 + str r2, [sp] + str r3, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0x38 + str r0, [sp, 0xC] + add r0, sp, 0x10 + movs r1, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + add r0, sp, 0x18 + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + add sp, 0x20 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809D654 + + thumb_func_start sub_809D6B0 +sub_809D6B0: @ 809D6B0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80040B8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_810F4D8 + adds r0, r4, 0 + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809D6B0 + + thumb_func_start sub_809D6D4 +sub_809D6D4: @ 809D6D4 + push {lr} + ldr r0, _0809D74C @ =gUnknown_81A7AE0 + bl sub_8069AE4 + ldr r0, _0809D750 @ =sub_809D288 + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0809D710 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0809D754 @ =gUnknown_3005098 + adds r2, r0, r1 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bgt _0809D710 + movs r0, 0x4 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809D758 @ =gUnknown_202063C + adds r0, r1 + ldrb r1, [r2, 0x4] + bl sub_8083A5C +_0809D710: + ldr r0, _0809D75C @ =sub_809D494 + bl sub_8077688 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0809D748 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0809D754 @ =gUnknown_3005098 + adds r2, r0, r1 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bgt _0809D748 + movs r0, 0x4 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0809D758 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + ldr r0, _0809D760 @ =0x00001b58 + bl sub_800874C +_0809D748: + pop {r0} + bx r0 + .align 2, 0 +_0809D74C: .4byte gUnknown_81A7AE0 +_0809D750: .4byte sub_809D288 +_0809D754: .4byte gUnknown_3005098 +_0809D758: .4byte gUnknown_202063C +_0809D75C: .4byte sub_809D494 +_0809D760: .4byte 0x00001b58 + thumb_func_end sub_809D6D4 + + thumb_func_start sub_809D764 +sub_809D764: @ 809D764 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r1, _0809D7A0 @ =gUnknown_20370D0 + movs r0, 0xFF + strh r0, [r1] + ldr r0, _0809D7A4 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809D784 + b _0809D8A8 +_0809D784: + ldr r0, _0809D7A8 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0x1 + bne _0809D7B0 + ldr r0, _0809D7AC @ =gUnknown_20370C0 + ldrh r0, [r0] + movs r4, 0x4 + cmp r0, 0x4 + bhi _0809D798 + movs r4, 0x5 +_0809D798: + movs r0, 0x5 + mov r9, r0 + movs r5, 0x2 + b _0809D7B8 + .align 2, 0 +_0809D7A0: .4byte gUnknown_20370D0 +_0809D7A4: .4byte sub_809D6D4 +_0809D7A8: .4byte gUnknown_20370C2 +_0809D7AC: .4byte gUnknown_20370C0 +_0809D7B0: + movs r4, 0 + movs r0, 0x6 + mov r9, r0 + movs r5, 0 +_0809D7B8: + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + mov r0, r9 + lsls r3, r0, 1 + movs r0, 0x11 + adds r1, r5, 0 + movs r2, 0xB + bl sub_809D654 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r7, 0 + movs r1, 0 + bl sub_80F7750 + movs r6, 0 + mov r5, r9 + subs r5, 0x2 + cmp r6, r5 + bge _0809D844 +_0809D7F2: + ldr r0, _0809D820 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r4, r0 + beq _0809D828 + ldr r1, _0809D824 @ =gUnknown_83E17E0 + lsls r0, r4, 2 + adds r0, r1 + ldr r2, [r0] + lsls r0, r6, 4 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + mov r3, r8 + bl sub_8002C48 + b _0809D82E + .align 2, 0 +_0809D820: .4byte gUnknown_20370C0 +_0809D824: .4byte gUnknown_83E17E0 +_0809D828: + subs r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0809D82E: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bne _0809D83A + movs r4, 0 +_0809D83A: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r5 + blt _0809D7F2 +_0809D844: + ldr r2, _0809D8B8 @ =gUnknown_8417DED + lsls r0, r6, 4 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r5, 0xFF + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + mov r3, r8 + bl sub_8002C48 + adds r0, r6, 0x1 + lsls r0, 24 + ldr r2, _0809D8BC @ =gUnknown_84161C8 + lsrs r0, 20 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + mov r3, r8 + bl sub_8002C48 + movs r0, 0x10 + str r0, [sp] + mov r0, r9 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0 + mov r1, r9 + adds r2, r7, 0 + movs r3, 0xFF + bl sub_809CC18 + movs r0, 0 + bl sub_80F67A4 +_0809D8A8: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809D8B8: .4byte gUnknown_8417DED +_0809D8BC: .4byte gUnknown_84161C8 + thumb_func_end sub_809D764 + + thumb_func_start sub_809D8C0 +sub_809D8C0: @ 809D8C0 + push {lr} + ldr r3, _0809D8EC @ =gUnknown_20370D0 + ldrh r2, [r3] + adds r1, r2, 0 + cmp r1, 0x7F + beq _0809D930 + ldr r0, _0809D8F0 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0x1 + bne _0809D924 + cmp r1, 0x3 + beq _0809D928 + cmp r1, 0x4 + beq _0809D930 + cmp r1, 0 + bne _0809D8F8 + ldr r0, _0809D8F4 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x4 + bls _0809D904 + movs r0, 0x4 + b _0809D94E + .align 2, 0 +_0809D8EC: .4byte gUnknown_20370D0 +_0809D8F0: .4byte gUnknown_20370C2 +_0809D8F4: .4byte gUnknown_20370C0 +_0809D8F8: + cmp r1, 0x1 + bne _0809D90C + ldr r0, _0809D908 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x5 + bls _0809D918 +_0809D904: + movs r0, 0x5 + b _0809D94E + .align 2, 0 +_0809D908: .4byte gUnknown_20370C0 +_0809D90C: + cmp r1, 0x2 + bne _0809D94C + ldr r0, _0809D91C @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0x6 + bls _0809D920 +_0809D918: + movs r0, 0x6 + b _0809D94E + .align 2, 0 +_0809D91C: .4byte gUnknown_20370C0 +_0809D920: + movs r0, 0x7 + b _0809D94E +_0809D924: + cmp r1, 0x4 + bne _0809D92C +_0809D928: + movs r0, 0xFE + b _0809D94E +_0809D92C: + cmp r1, 0x5 + bne _0809D934 +_0809D930: + movs r0, 0x7F + b _0809D94E +_0809D934: + ldr r0, _0809D944 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r1, r0 + bcc _0809D948 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r0, 16 + b _0809D94E + .align 2, 0 +_0809D944: .4byte gUnknown_20370C0 +_0809D948: + ldrh r0, [r3] + b _0809D94E +_0809D94C: + movs r0, 0 +_0809D94E: + pop {r1} + bx r1 + thumb_func_end sub_809D8C0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_movement.s b/asm/script_movement.s new file mode 100644 index 000000000..be377ec1a --- /dev/null +++ b/asm/script_movement.s @@ -0,0 +1,602 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8097434 +sub_8097434: @ 8097434 + push {r4,lr} + sub sp, 0x4 + adds r4, r3, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + beq _08097456 + movs r0, 0x1 + b _0809747E +_08097456: + ldr r0, _08097488 @ =sub_80977AC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08097468 + movs r0, 0x32 + bl sub_80974F8 +_08097468: + bl sub_8097540 + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + ldrb r1, [r1] + adds r2, r4, 0 + bl sub_8097554 + lsls r0, 24 + lsrs r0, 24 +_0809747E: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08097488: .4byte sub_80977AC + thumb_func_end sub_8097434 + + thumb_func_start sub_809748C +sub_809748C: @ 809748C + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080974CE + bl sub_8097540 + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, sp + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_80975C0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x10 + beq _080974CE + adds r0, r4, 0 + bl sub_80976D0 + lsls r0, 24 + lsrs r0, 24 + b _080974D0 +_080974CE: + movs r0, 0x1 +_080974D0: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809748C + + thumb_func_start sub_80974D8 +sub_80974D8: @ 80974D8 + push {r4,lr} + bl sub_8097540 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _080974F2 + adds r0, r4, 0 + bl sub_8097768 + adds r0, r4, 0 + bl sub_8077508 +_080974F2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80974D8 + + thumb_func_start sub_80974F8 +sub_80974F8: @ 80974F8 + push {r4,r5,lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08097534 @ =sub_80977AC + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1 + lsls r1, r0, 2 + adds r1, r0 + lsls r3, r1, 3 + ldr r5, _08097538 @ =gUnknown_3005098 + ldr r0, _0809753C @ =0x0000ffff + adds r4, r0, 0 +_08097518: + lsls r0, r2, 1 + adds r0, r3 + adds r0, r5 + ldrh r1, [r0] + orrs r1, r4 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _08097518 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08097534: .4byte sub_80977AC +_08097538: .4byte gUnknown_3005098 +_0809753C: .4byte 0x0000ffff + thumb_func_end sub_80974F8 + + thumb_func_start sub_8097540 +sub_8097540: @ 8097540 + push {lr} + ldr r0, _08097550 @ =sub_80977AC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08097550: .4byte sub_80977AC + thumb_func_end sub_8097540 + + thumb_func_start sub_8097554 +sub_8097554: @ 8097554 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r2 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r5, 0 + lsls r1, 24 + lsrs r6, r1, 24 + mov r8, r6 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80975C0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x10 + beq _08097590 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80976D0 + lsls r0, 24 + cmp r0, 0 + beq _080975B0 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r6, 0 + b _080975A6 +_08097590: + adds r0, r7, 0 + movs r1, 0xFF + bl sub_80975C0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x10 + beq _080975B0 + adds r0, r7, 0 + adds r1, r4, 0 + mov r2, r8 +_080975A6: + mov r3, r9 + bl sub_8097728 + movs r0, 0 + b _080975B2 +_080975B0: + movs r0, 0x1 +_080975B2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8097554 + + thumb_func_start sub_80975C0 +sub_80975C0: @ 80975C0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080975E4 @ =gUnknown_3005098 + adds r1, r0 + adds r1, 0x2 + movs r2, 0 +_080975D8: + ldrb r0, [r1] + cmp r0, r3 + bne _080975E8 + adds r0, r2, 0 + b _080975F6 + .align 2, 0 +_080975E4: .4byte gUnknown_3005098 +_080975E8: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r1, 0x1 + cmp r2, 0xF + bls _080975D8 + movs r0, 0x10 +_080975F6: + pop {r1} + bx r1 + thumb_func_end sub_80975C0 + + thumb_func_start sub_80975FC +sub_80975FC: @ 80975FC + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0809762C @ =gUnknown_3005098 + adds r1, r0 + adds r1, 0x2 + str r1, [r2] + movs r0, 0 + cmp r0, r3 + bcs _08097628 +_0809761A: + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + adds r1, 0x1 + cmp r0, r3 + bcc _0809761A + str r1, [r2] +_08097628: + pop {r0} + bx r0 + .align 2, 0 +_0809762C: .4byte gUnknown_3005098 + thumb_func_end sub_80975FC + + thumb_func_start sub_8097630 +sub_8097630: @ 8097630 + push {r4,lr} + sub sp, 0x4 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r4, 24 + lsrs r4, 24 + mov r2, sp + bl sub_80975FC + ldr r0, [sp] + strb r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8097630 + + thumb_func_start sub_8097654 +sub_8097654: @ 8097654 + push {r4,lr} + sub sp, 0x4 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r2, sp + bl sub_80975FC + ldr r0, [sp] + ldrb r0, [r0] + strb r0, [r4] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8097654 + + thumb_func_start sub_8097678 +sub_8097678: @ 8097678 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r2, _080976A0 @ =gUnknown_825E45C + lsrs r1, 22 + adds r1, r2 + ldr r2, [r1] + mvns r2, r2 + lsls r2, 16 + lsrs r2, 16 + ldr r3, _080976A4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r3 + ldrh r0, [r1, 0x8] + ands r2, r0 + strh r2, [r1, 0x8] + bx lr + .align 2, 0 +_080976A0: .4byte gUnknown_825E45C +_080976A4: .4byte gUnknown_3005090 + thumb_func_end sub_8097678 + + thumb_func_start sub_80976A8 +sub_80976A8: @ 80976A8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, _080976C8 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r3 + ldr r0, _080976CC @ =gUnknown_825E45C + lsrs r1, 22 + adds r1, r0 + ldr r0, [r1] + ldrh r1, [r2, 0x8] + orrs r0, r1 + strh r0, [r2, 0x8] + bx lr + .align 2, 0 +_080976C8: .4byte gUnknown_3005090 +_080976CC: .4byte gUnknown_825E45C + thumb_func_end sub_80976A8 + + thumb_func_start sub_80976D0 +sub_80976D0: @ 80976D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, _080976F8 @ =gUnknown_3005090 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r3 + ldr r0, _080976FC @ =gUnknown_825E45C + lsrs r1, 22 + adds r1, r0 + ldr r0, [r1] + ldrh r1, [r2, 0x8] + ands r0, r1 + cmp r0, 0 + bne _08097700 + movs r0, 0 + b _08097702 + .align 2, 0 +_080976F8: .4byte gUnknown_3005090 +_080976FC: .4byte gUnknown_825E45C +_08097700: + movs r0, 0x1 +_08097702: + pop {r1} + bx r1 + thumb_func_end sub_80976D0 + + thumb_func_start sub_8097708 +sub_8097708: @ 8097708 + lsls r0, 24 + ldr r2, _08097714 @ =gUnknown_2039830 + lsrs r0, 22 + adds r0, r2 + str r1, [r0] + bx lr + .align 2, 0 +_08097714: .4byte gUnknown_2039830 + thumb_func_end sub_8097708 + + thumb_func_start sub_8097718 +sub_8097718: @ 8097718 + lsls r0, 24 + ldr r1, _08097724 @ =gUnknown_2039830 + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_08097724: .4byte gUnknown_2039830 + thumb_func_end sub_8097718 + + thumb_func_start sub_8097728 +sub_8097728: @ 8097728 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8097678 + adds r0, r4, 0 + mov r1, r8 + bl sub_8097708 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8097630 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8097728 + + thumb_func_start sub_8097768 +sub_8097768: @ 8097768 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080977A4 @ =gUnknown_3005098 + adds r1, r0 + adds r4, r1, 0x2 + movs r5, 0 +_0809777C: + ldrb r0, [r4] + cmp r0, 0xFF + beq _08097792 + adds r1, r0, 0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080977A8 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_80689F4 +_08097792: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x1 + cmp r5, 0xF + bls _0809777C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080977A4: .4byte gUnknown_3005098 +_080977A8: .4byte gUnknown_2036E38 + thumb_func_end sub_8097768 + + thumb_func_start sub_80977AC +sub_80977AC: @ 80977AC + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r5, 0 + mov r6, sp +_080977B8: + adds r0, r7, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_8097654 + ldrb r0, [r6] + cmp r0, 0xFF + beq _080977DC + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_8097718 + adds r3, r0, 0 + adds r0, r7, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_80977F0 +_080977DC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _080977B8 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80977AC + + thumb_func_start sub_80977F0 +sub_80977F0: @ 80977F0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r3, 0 + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + mov r8, r5 + lsls r2, 24 + lsrs r4, r2, 24 + adds r1, r5, 0 + bl sub_80976D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0809786A + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _08097850 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C88 + lsls r0, 24 + cmp r0, 0 + beq _08097838 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0809786A +_08097838: + ldrb r1, [r6] + cmp r1, 0xFE + bne _08097854 + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80976A8 + adds r0, r4, 0 + bl sub_80688E4 + b _0809786A + .align 2, 0 +_08097850: .4byte gUnknown_2036E38 +_08097854: + adds r0, r4, 0 + bl sub_8063CA4 + lsls r0, 24 + cmp r0, 0 + bne _0809786A + adds r6, 0x1 + mov r0, r8 + adds r1, r6, 0 + bl sub_8097708 +_0809786A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80977F0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s new file mode 100644 index 000000000..d71a567f8 --- /dev/null +++ b/asm/script_pokemon_util_80A0058.s @@ -0,0 +1,535 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80A0058 +sub_80A0058: @ 80A0058 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0 + mov r8, r0 + ldr r0, _080A0114 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r8, r0 + bcs _080A0104 + ldr r1, _080A0118 @ =gUnknown_2024284 + mov r10, r1 + mov r6, sp +_080A0076: + movs r0, 0x64 + mov r4, r8 + muls r4, r0 + add r4, r10 + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + lsls r1, r0, 16 + strb r0, [r6] + lsrs r1, 24 + strb r1, [r6, 0x1] + adds r0, r4, 0 + movs r1, 0x39 + mov r2, sp + bl sub_804037C + adds r0, r4, 0 + movs r1, 0x15 + bl sub_803FBE8 + lsls r0, 24 + lsrs r7, r0, 24 + movs r5, 0 + movs r1, 0x1 + add r1, r8 + mov r9, r1 +_080A00AC: + adds r1, r5, 0 + adds r1, 0xD + adds r0, r4, 0 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r7, 0 + adds r2, r5, 0 + bl sub_804101C + strb r0, [r6] + adds r1, r5, 0 + adds r1, 0x11 + adds r0, r4, 0 + mov r2, sp + bl sub_804037C + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _080A00AC + movs r0, 0 + strb r0, [r6] + strb r0, [r6, 0x1] + strb r0, [r6, 0x2] + strb r0, [r6, 0x3] + movs r1, 0x64 + mov r0, r8 + muls r0, r1 + add r0, r10 + movs r1, 0x37 + mov r2, sp + bl sub_804037C + mov r1, r9 + lsls r0, r1, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _080A0114 @ =gUnknown_2024029 + ldrb r0, [r0] + cmp r8, r0 + bcc _080A0076 +_080A0104: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A0114: .4byte gUnknown_2024029 +_080A0118: .4byte gUnknown_2024284 + thumb_func_end sub_80A0058 + + thumb_func_start sub_80A011C +sub_80A011C: @ 80A011C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r6, 16 + lsrs r6, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r0, r5, 16 + mov r8, r0 + movs r0, 0x64 + bl sub_8002BB0 + adds r7, r0, 0 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r4, 0 + movs r3, 0x20 + bl sub_803DA54 + add r0, sp, 0x10 + mov r1, r8 + strb r1, [r0] + lsrs r5, 24 + strb r5, [r0, 0x1] + adds r0, r7, 0 + movs r1, 0xC + add r2, sp, 0x10 + bl sub_804037C + adds r0, r7, 0 + bl sub_8040B14 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r6, 0 + bl sub_8043298 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0x1 + bgt _080A0196 + cmp r4, 0 + blt _080A0196 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8088E74 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8088E74 +_080A0196: + adds r0, r7, 0 + bl sub_8002BC4 + adds r0, r4, 0 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A011C + + thumb_func_start sub_80A01AC +sub_80A01AC: @ 80A01AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x64 + bl sub_8002BB0 + adds r5, r0, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8046150 + movs r1, 0x1 + mov r0, sp + strb r1, [r0] + adds r0, r5, 0 + movs r1, 0x2D + mov r2, sp + bl sub_804037C + adds r0, r5, 0 + bl sub_8040B14 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + bl sub_8002BC4 + adds r0, r4, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80A01AC + + thumb_func_start sub_80A01F4 +sub_80A01F4: @ 80A01F4 + push {lr} + bl sub_8040CC4 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + beq _080A0210 + cmp r1, 0x1 + bgt _080A020C + cmp r1, 0 + beq _080A0210 + b _080A0214 +_080A020C: + cmp r1, 0x2 + bne _080A0214 +_080A0210: + ldr r0, _080A0218 @ =gUnknown_20370D0 + strh r1, [r0] +_080A0214: + pop {r0} + bx r0 + .align 2, 0 +_080A0218: .4byte gUnknown_20370D0 + thumb_func_end sub_80A01F4 + + thumb_func_start sub_80A021C +sub_80A021C: @ 80A021C + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + movs r5, 0 + movs r7, 0xCE + lsls r7, 1 +_080A0228: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080A0258 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080A025C + cmp r0, r7 + beq _080A025C + adds r0, r4, 0 + movs r1, 0xC + bl sub_803FBE8 + cmp r0, r6 + bne _080A025C + movs r0, 0x1 + b _080A0264 + .align 2, 0 +_080A0258: .4byte gUnknown_2024284 +_080A025C: + adds r5, 0x1 + cmp r5, 0x5 + ble _080A0228 + movs r0, 0 +_080A0264: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80A021C + + thumb_func_start sub_80A026C +sub_80A026C: @ 80A026C + push {r4,lr} + movs r0, 0xAF + bl sub_80A021C + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + cmp r4, 0x1 + bne _080A028E + movs r0, 0xAF + bl sub_809C8E4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080A0298 @ =gUnknown_2021CD0 + bl sub_809C934 +_080A028E: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080A0298: .4byte gUnknown_2021CD0 + thumb_func_end sub_80A026C + + thumb_func_start sub_80A029C +sub_80A029C: @ 80A029C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + lsls r7, r2, 16 + lsrs r6, r7, 16 + bl sub_803DA34 + ldr r0, _080A02F8 @ =gUnknown_202402C + mov r8, r0 + movs r0, 0 + str r0, [sp] + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + mov r0, r8 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x20 + bl sub_803DA54 + cmp r6, 0 + beq _080A02EA + add r0, sp, 0x10 + strb r6, [r0] + adds r1, r0, 0 + lsrs r0, r7, 24 + strb r0, [r1, 0x1] + mov r0, r8 + movs r1, 0xC + add r2, sp, 0x10 + bl sub_804037C +_080A02EA: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A02F8: .4byte gUnknown_202402C + thumb_func_end sub_80A029C + + thumb_func_start sub_80A02FC +sub_80A02FC: @ 80A02FC + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r2, 24 + cmp r3, 0x6 + bls _080A0318 + ldr r0, _080A032C @ =gUnknown_2024029 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_080A0318: + movs r0, 0x64 + muls r0, r3 + ldr r1, _080A0330 @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + bl sub_803E964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A032C: .4byte gUnknown_2024029 +_080A0330: .4byte gUnknown_2024284 + thumb_func_end sub_80A02FC + + thumb_func_start sub_80A0334 +sub_80A0334: @ 80A0334 + push {lr} + ldr r1, _080A0348 @ =gUnknown_30030F0 + ldr r0, _080A034C @ =sub_80A0350 + str r0, [r1, 0x8] + movs r0, 0 + bl sub_81274A8 + pop {r0} + bx r0 + .align 2, 0 +_080A0348: .4byte gUnknown_30030F0 +_080A034C: .4byte sub_80A0350 + thumb_func_end sub_80A0334 + + thumb_func_start sub_80A0350 +sub_80A0350: @ 80A0350 + push {lr} + ldr r0, _080A0360 @ =gUnknown_203B0D4 + ldrb r1, [r0] + cmp r1, 0 + bne _080A0368 + ldr r0, _080A0364 @ =gUnknown_20370D0 + strh r1, [r0] + b _080A036E + .align 2, 0 +_080A0360: .4byte gUnknown_203B0D4 +_080A0364: .4byte gUnknown_20370D0 +_080A0368: + ldr r1, _080A0378 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] +_080A036E: + ldr r0, _080A037C @ =sub_80568E0 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_080A0378: .4byte gUnknown_20370D0 +_080A037C: .4byte sub_80568E0 + thumb_func_end sub_80A0350 + + thumb_func_start sub_80A0380 +sub_80A0380: @ 80A0380 + push {lr} + ldr r1, _080A0394 @ =gUnknown_30030F0 + ldr r0, _080A0398 @ =sub_80A039C + str r0, [r1, 0x8] + movs r0, 0x1 + bl sub_81274A8 + pop {r0} + bx r0 + .align 2, 0 +_080A0394: .4byte gUnknown_30030F0 +_080A0398: .4byte sub_80A039C + thumb_func_end sub_80A0380 + + thumb_func_start sub_80A039C +sub_80A039C: @ 80A039C + push {r4,lr} + ldr r0, _080A03B0 @ =gUnknown_203B0D4 + ldrb r4, [r0] + cmp r4, 0 + bne _080A03B8 + bl sub_804C230 + ldr r0, _080A03B4 @ =gUnknown_20370D0 + strh r4, [r0] + b _080A03C2 + .align 2, 0 +_080A03B0: .4byte gUnknown_203B0D4 +_080A03B4: .4byte gUnknown_20370D0 +_080A03B8: + bl sub_80A03D8 + ldr r1, _080A03D0 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] +_080A03C2: + ldr r0, _080A03D4 @ =sub_80568E0 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A03D0: .4byte gUnknown_20370D0 +_080A03D4: .4byte sub_80568E0 + thumb_func_end sub_80A039C + + thumb_func_start sub_80A03D8 +sub_80A03D8: @ 80A03D8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r0, 0x96 + lsls r0, 1 + bl sub_8002BB0 + adds r7, r0, 0 + movs r5, 0 + movs r0, 0x64 + mov r8, r0 + ldr r6, _080A0454 @ =gUnknown_2024284 + adds r4, r7, 0 +_080A03F4: + ldr r0, _080A0458 @ =gUnknown_203B0D4 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _080A040E + subs r0, 0x1 + mov r1, r8 + muls r1, r0 + adds r1, r6 + adds r0, r4, 0 + movs r2, 0x64 + bl memcpy +_080A040E: + adds r4, 0x64 + adds r5, 0x1 + cmp r5, 0x2 + ble _080A03F4 + movs r0, 0 + str r0, [sp] + ldr r4, _080A0454 @ =gUnknown_2024284 + ldr r2, _080A045C @ =0x05000096 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + adds r5, r7, 0 + adds r6, r7, 0 + adds r6, 0xC8 +_080A042C: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + adds r5, 0x64 + adds r4, 0x64 + cmp r5, r6 + ble _080A042C + bl sub_8040C3C + adds r0, r7, 0 + bl sub_8002BC4 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080A0454: .4byte gUnknown_2024284 +_080A0458: .4byte gUnknown_203B0D4 +_080A045C: .4byte 0x05000096 + thumb_func_end sub_80A03D8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s new file mode 100644 index 000000000..db47bcedd --- /dev/null +++ b/asm/script_pokemon_util_80BF8FC.s @@ -0,0 +1,422 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BF8FC +sub_80BF8FC: @ 80BF8FC + push {lr} + sub sp, 0x4 + bl sub_8069940 + ldr r0, _080BF934 @ =sub_80BF97C + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BF938 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + movs r0, 0x3 + strh r0, [r1, 0x8] + subs r0, 0x4 + str r2, [sp] + movs r1, 0 + movs r3, 0x10 + bl sub_8070588 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080BF934: .4byte sub_80BF97C +_080BF938: .4byte gUnknown_3005090 + thumb_func_end sub_80BF8FC + + thumb_func_start sub_80BF93C +sub_80BF93C: @ 80BF93C + push {lr} + sub sp, 0x4 + bl sub_8069940 + ldr r0, _080BF974 @ =sub_80BF97C + movs r1, 0xA + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080BF978 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0 + movs r0, 0x7 + strh r0, [r1, 0x8] + subs r0, 0x8 + str r2, [sp] + movs r1, 0 + movs r3, 0x10 + bl sub_8070588 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080BF974: .4byte sub_80BF97C +_080BF978: .4byte gUnknown_3005090 + thumb_func_end sub_80BF93C + + thumb_func_start sub_80BF97C +sub_80BF97C: @ 80BF97C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _080BF9B4 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080BF9AC + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + ldr r1, _080BF9B8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x8] + bl sub_81283A8 + adds r0, r4, 0 + bl sub_8077508 +_080BF9AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF9B4: .4byte gUnknown_2037AB8 +_080BF9B8: .4byte gUnknown_3005090 + thumb_func_end sub_80BF97C + + thumb_func_start sub_80BF9BC +sub_80BF9BC: @ 80BF9BC + push {r4,lr} + sub sp, 0x4 + ldr r0, _080BF9F0 @ =gUnknown_2024284 + ldr r1, _080BF9F4 @ =gUnknown_20370C0 + ldrb r1, [r1] + ldr r2, _080BF9F8 @ =gUnknown_2024029 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _080BF9FC @ =sub_80567DC + movs r4, 0 + str r4, [sp] + bl sub_8134738 + movs r0, 0x3 + bl sub_8138B38 + ldr r1, _080BFA00 @ =gUnknown_3005020 + ldr r0, _080BFA04 @ =sub_807DD24 + str r0, [r1] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF9F0: .4byte gUnknown_2024284 +_080BF9F4: .4byte gUnknown_20370C0 +_080BF9F8: .4byte gUnknown_2024029 +_080BF9FC: .4byte sub_80567DC +_080BFA00: .4byte gUnknown_3005020 +_080BFA04: .4byte sub_807DD24 + thumb_func_end sub_80BF9BC + + thumb_func_start sub_80BFA08 +sub_80BFA08: @ 80BFA08 + push {r4,r5,lr} + ldr r1, _080BFA44 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + movs r4, 0 + adds r5, r1, 0 +_080BFA14: + ldr r0, _080BFA48 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BFA4C @ =gUnknown_2024284 + adds r0, r1 + adds r1, r4, 0 + adds r1, 0xD + bl sub_803FBE8 + cmp r0, 0 + beq _080BFA32 + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] +_080BFA32: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080BFA14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BFA44: .4byte gUnknown_20370D0 +_080BFA48: .4byte gUnknown_20370C0 +_080BFA4C: .4byte gUnknown_2024284 + thumb_func_end sub_80BFA08 + + thumb_func_start sub_80BFA50 +sub_80BFA50: @ 80BFA50 + push {r4,r5,lr} + ldr r0, _080BFA90 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + adds r5, r1, 0 + muls r5, r0 + ldr r0, _080BFA94 @ =gUnknown_2024284 + adds r5, r0 + ldr r0, _080BFA98 @ =gUnknown_20370C2 + ldrh r1, [r0] + adds r1, 0xD + adds r0, r5, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r1, _080BFA9C @ =gUnknown_2021CD0 + adds r0, r5, 0 + bl sub_81202E0 + ldr r0, _080BFAA0 @ =gUnknown_2021CF0 + movs r1, 0xD + muls r1, r4 + ldr r2, _080BFAA4 @ =gUnknown_8247094 + adds r1, r2 + bl sub_8008D84 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080BFA90: .4byte gUnknown_20370C0 +_080BFA94: .4byte gUnknown_2024284 +_080BFA98: .4byte gUnknown_20370C2 +_080BFA9C: .4byte gUnknown_2021CD0 +_080BFAA0: .4byte gUnknown_2021CF0 +_080BFAA4: .4byte gUnknown_8247094 + thumb_func_end sub_80BFA50 + + thumb_func_start sub_80BFAA8 +sub_80BFAA8: @ 80BFAA8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + mov r8, r0 + adds r5, r1, 0 + adds r4, r2, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r0, 0xD + str r0, [sp, 0x8] + mov r0, r8 + ldr r1, [sp, 0x8] + bl sub_803FBE8 + mov r1, sp + adds r1, 0x2 + str r1, [sp, 0x14] + strh r0, [r1] + adds r3, r4, 0 + adds r3, 0xD + str r3, [sp, 0xC] + mov r0, r8 + adds r1, r3, 0 + bl sub_803FBE8 + mov r1, sp + strh r0, [r1] + adds r7, r5, 0 + adds r7, 0x11 + str r7, [sp, 0x10] + mov r0, r8 + adds r1, r7, 0 + bl sub_803FBE8 + mov r1, sp + adds r1, 0x5 + str r1, [sp, 0x18] + strb r0, [r1] + adds r3, r4, 0 + adds r3, 0x11 + str r3, [sp, 0x1C] + mov r0, r8 + adds r1, r3, 0 + bl sub_803FBE8 + add r7, sp, 0x4 + mov r10, r7 + strb r0, [r7] + mov r0, r8 + movs r1, 0x15 + bl sub_803FBE8 + mov r6, sp + adds r6, 0x6 + strb r0, [r6] + ldr r1, _080BFBA4 @ =gUnknown_825DEA1 + adds r0, r5, r1 + ldrb r0, [r0] + mov r9, r0 + ldrb r0, [r6] + adds r2, r0, 0 + mov r3, r9 + ands r2, r3 + lsls r5, 1 + asrs r2, r5 + lsls r2, 24 + lsrs r2, 24 + adds r1, r4, r1 + ldrb r3, [r1] + adds r1, r0, 0 + ands r1, r3 + lsls r4, 1 + asrs r1, r4 + lsls r1, 24 + lsrs r1, 24 + mov r7, r9 + bics r0, r7 + strb r0, [r6] + ldrb r0, [r6] + bics r0, r3 + strb r0, [r6] + lsls r2, r4 + lsls r1, r5 + adds r2, r1 + ldrb r0, [r6] + orrs r0, r2 + strb r0, [r6] + mov r0, r8 + ldr r1, [sp, 0x8] + mov r2, sp + bl sub_804037C + mov r0, r8 + ldr r1, [sp, 0xC] + ldr r2, [sp, 0x14] + bl sub_804037C + mov r0, r8 + ldr r1, [sp, 0x10] + mov r2, r10 + bl sub_804037C + mov r0, r8 + ldr r1, [sp, 0x1C] + ldr r2, [sp, 0x18] + bl sub_804037C + mov r0, r8 + movs r1, 0x15 + adds r2, r6, 0 + bl sub_804037C + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BFBA4: .4byte gUnknown_825DEA1 + thumb_func_end sub_80BFAA8 + + thumb_func_start sub_80BFBA8 +sub_80BFBA8: @ 80BFBA8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _080BFC08 @ =gUnknown_20370C0 + mov r8, r0 + ldrh r0, [r0] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080BFC0C @ =gUnknown_2024284 + adds r0, r5 + ldr r4, _080BFC10 @ =gUnknown_20370C2 + ldrb r2, [r4] + movs r1, 0 + bl sub_803E964 + mov r1, r8 + ldrh r0, [r1] + muls r0, r6 + adds r0, r5 + ldrb r1, [r4] + bl sub_8041064 + ldrh r4, [r4] + cmp r4, 0x2 + bhi _080BFBFC +_080BFBDA: + ldr r0, _080BFC08 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BFC0C @ =gUnknown_2024284 + adds r0, r1 + lsls r1, r4, 24 + lsrs r1, 24 + adds r4, 0x1 + lsls r2, r4, 24 + lsrs r2, 24 + bl sub_80BFAA8 + lsls r4, 16 + lsrs r4, 16 + cmp r4, 0x2 + bls _080BFBDA +_080BFBFC: + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080BFC08: .4byte gUnknown_20370C0 +_080BFC0C: .4byte gUnknown_2024284 +_080BFC10: .4byte gUnknown_20370C2 + thumb_func_end sub_80BFBA8 + + thumb_func_start sub_80BFC14 +sub_80BFC14: @ 80BFC14 + push {lr} + ldr r0, _080BFC38 @ =gUnknown_20370C0 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080BFC3C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2D + bl sub_803FBE8 + adds r1, r0, 0 + cmp r1, 0 + beq _080BFC44 + ldr r1, _080BFC40 @ =gUnknown_20370D0 + movs r0, 0x1 + strh r0, [r1] + b _080BFC48 + .align 2, 0 +_080BFC38: .4byte gUnknown_20370C0 +_080BFC3C: .4byte gUnknown_2024284 +_080BFC40: .4byte gUnknown_20370D0 +_080BFC44: + ldr r0, _080BFC4C @ =gUnknown_20370D0 + strh r1, [r0] +_080BFC48: + pop {r0} + bx r0 + .align 2, 0 +_080BFC4C: .4byte gUnknown_20370D0 + thumb_func_end sub_80BFC14 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/seagallop.s b/asm/seagallop.s new file mode 100644 index 000000000..dc69537da --- /dev/null +++ b/asm/seagallop.s @@ -0,0 +1,795 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8146E78 +sub_8146E78: @ 8146E78 + push {lr} + movs r0, 0 + bl sub_80006F4 + bl sub_812B478 + ldr r0, _08146E90 @ =sub_8146E94 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_08146E90: .4byte sub_8146E94 + thumb_func_end sub_8146E78 + + thumb_func_start sub_8146E94 +sub_8146E94: @ 8146E94 + push {r4,lr} + sub sp, 0x8 + ldr r0, _08146EB4 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x7 + bls _08146EA8 + b _0814703C +_08146EA8: + lsls r0, 2 + ldr r1, _08146EB8 @ =_08146EBC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08146EB4: .4byte gUnknown_30030F0 +_08146EB8: .4byte _08146EBC + .align 2, 0 +_08146EBC: + .4byte _08146EDC + .4byte _08146EE8 + .4byte _08146EEE + .4byte _08146F20 + .4byte _08146F8C + .4byte _08146FAC + .4byte _08146FBE + .4byte _08146FE4 +_08146EDC: + movs r0, 0 + bl sub_80006F4 + bl sub_81471C4 + b _08146FCE +_08146EE8: + bl sub_81472FC + b _08146FCE +_08146EEE: + ldr r4, _08146F18 @ =gUnknown_203F3D0 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0 + bl sub_8001618 + ldr r1, _08146F1C @ =gUnknown_846AEF8 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + ldr r1, [r4] + movs r0, 0x3 + bl sub_8001FA0 + bl sub_814732C + b _08146FCE + .align 2, 0 +_08146F18: .4byte gUnknown_203F3D0 +_08146F1C: .4byte gUnknown_846AEF8 +_08146F20: + ldr r1, _08146F50 @ =gUnknown_8468C98 + movs r2, 0xA4 + lsls r2, 3 + movs r0, 0x3 + movs r3, 0 + bl sub_80017D0 + bl sub_81474CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08146F58 + ldr r1, _08146F54 @ =gUnknown_84699D8 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002124 + b _08146F6A + .align 2, 0 +_08146F50: .4byte gUnknown_8468C98 +_08146F54: .4byte gUnknown_84699D8 +_08146F58: + ldr r1, _08146F84 @ =gUnknown_84691D8 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002124 +_08146F6A: + ldr r0, _08146F88 @ =gUnknown_84691B8 + movs r1, 0x40 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + b _08146FCE + .align 2, 0 +_08146F84: .4byte gUnknown_84691D8 +_08146F88: .4byte gUnknown_84691B8 +_08146F8C: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0814703C + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x3 + bl sub_80020BC + b _08146FCE +_08146FAC: + bl sub_8147384 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _08146FCE +_08146FBE: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_08146FCE: + ldr r1, _08146FE0 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0814703C + .align 2, 0 +_08146FE0: .4byte gUnknown_30030F0 +_08146FE4: + bl sub_814731C + ldr r0, _08147044 @ =sub_8147058 + bl sub_80006F4 + movs r0, 0x13 + bl sub_80722CC + bl sub_81473C4 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r1, _08147048 @ =0x00001888 + movs r0, 0x44 + bl sub_8000A38 + ldr r0, _0814704C @ =sub_8147084 + movs r1, 0x8 + bl sub_807741C + ldr r0, _08147050 @ =sub_814706C + bl sub_8000544 + ldr r0, _08147054 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0814703C: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08147044: .4byte sub_8147058 +_08147048: .4byte 0x00001888 +_0814704C: .4byte sub_8147084 +_08147050: .4byte sub_814706C +_08147054: .4byte gUnknown_30030F0 + thumb_func_end sub_8146E94 + + thumb_func_start sub_8147058 +sub_8147058: @ 8147058 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_8147058 + + thumb_func_start sub_814706C +sub_814706C: @ 814706C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_814706C + + thumb_func_start sub_8147084 +sub_8147084: @ 8147084 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08147098 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _0814709C @ =sub_81470CC + str r0, [r1] + bx lr + .align 2, 0 +_08147098: .4byte gUnknown_3005090 +_0814709C: .4byte sub_81470CC + thumb_func_end sub_8147084 + + thumb_func_start sub_81470A0 +sub_81470A0: @ 81470A0 + push {lr} + bl sub_81474CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081470BC + movs r1, 0xC0 + lsls r1, 3 + movs r0, 0x3 + movs r2, 0x1 + bl sub_8001B90 + b _081470C8 +_081470BC: + movs r1, 0xC0 + lsls r1, 3 + movs r0, 0x3 + movs r2, 0x2 + bl sub_8001B90 +_081470C8: + pop {r0} + bx r0 + thumb_func_end sub_81470A0 + + thumb_func_start sub_81470CC +sub_81470CC: @ 81470CC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08147100 @ =gUnknown_3005090 + adds r4, r1, r0 + bl sub_81470A0 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8C + bne _081470FA + bl sub_8055FD4 + bl sub_807DC18 + ldr r0, _08147104 @ =sub_8147108 + str r0, [r4] +_081470FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08147100: .4byte gUnknown_3005090 +_08147104: .4byte sub_8147108 + thumb_func_end sub_81470CC + + thumb_func_start sub_8147108 +sub_8147108: @ 8147108 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81470A0 + bl sub_8055FC4 + lsls r0, 24 + cmp r0, 0 + beq _08147136 + ldr r0, _0814713C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08147136 + bl sub_8147140 + bl sub_812B484 + adds r0, r4, 0 + bl sub_8077508 +_08147136: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814713C: .4byte gUnknown_2037AB8 + thumb_func_end sub_8147108 + + thumb_func_start sub_8147140 +sub_8147140: @ 8147140 + push {r4,lr} + sub sp, 0x4 + ldr r1, _081471AC @ =gUnknown_20370C4 + ldrh r0, [r1] + cmp r0, 0xA + bls _08147150 + movs r0, 0 + strh r0, [r1] +_08147150: + ldrh r4, [r1] + lsls r4, 2 + ldr r0, _081471B0 @ =gUnknown_846AEFC + adds r4, r0 + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x1 + ldrsb r1, [r4, r1] + movs r2, 0x1 + negs r2, r2 + movs r3, 0x2 + ldrsb r3, [r4, r3] + ldrb r4, [r4, 0x3] + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + bl sub_805538C + bl sub_807B004 + movs r0, 0x9 + bl sub_80722CC + ldr r1, _081471B4 @ =gUnknown_3005020 + ldr r0, _081471B8 @ =sub_807DF64 + str r0, [r1] + bl sub_8055378 + ldr r0, _081471BC @ =sub_805671C + bl sub_8000544 + bl sub_80559E4 + bl sub_81473A0 + ldr r0, _081471C0 @ =gUnknown_203F3D0 + ldr r0, [r0] + bl sub_8002BC4 + bl sub_8003ECC + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081471AC: .4byte gUnknown_20370C4 +_081471B0: .4byte gUnknown_846AEFC +_081471B4: .4byte gUnknown_3005020 +_081471B8: .4byte sub_807DF64 +_081471BC: .4byte sub_805671C +_081471C0: .4byte gUnknown_203F3D0 + thumb_func_end sub_8147140 + + thumb_func_start sub_81471C4 +sub_81471C4: @ 81471C4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _081472F4 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _081472F8 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_081471EA: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _081471EA + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _081472F4 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0xE + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081472F4: .4byte 0x040000d4 +_081472F8: .4byte 0x81000800 + thumb_func_end sub_81471C4 + + thumb_func_start sub_81472FC +sub_81472FC: @ 81472FC + push {lr} + bl sub_8087E64 + bl sub_80773BC + bl sub_8006B10 + bl sub_810BB8C + bl sub_8070528 + bl sub_80088F0 + pop {r0} + bx r0 + thumb_func_end sub_81472FC + + thumb_func_start sub_814731C +sub_814731C: @ 814731C + push {lr} + movs r1, 0xCA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_814731C + + thumb_func_start sub_814732C +sub_814732C: @ 814732C + push {lr} + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_814732C + + thumb_func_start sub_8147384 +sub_8147384: @ 8147384 + push {lr} + ldr r0, _08147398 @ =gUnknown_846AF78 + bl sub_8008720 + ldr r0, _0814739C @ =gUnknown_846AF90 + bl sub_8008974 + pop {r0} + bx r0 + .align 2, 0 +_08147398: .4byte gUnknown_846AF78 +_0814739C: .4byte gUnknown_846AF90 + thumb_func_end sub_8147384 + + thumb_func_start sub_81473A0 +sub_81473A0: @ 81473A0 + push {r4,lr} + ldr r4, _081473C0 @ =0x00000bb8 + adds r0, r4, 0 + bl sub_800874C + movs r0, 0xFA + lsls r0, 4 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081473C0: .4byte 0x00000bb8 + thumb_func_end sub_81473A0 + + thumb_func_start sub_81473C4 +sub_81473C4: @ 81473C4 + push {r4,lr} + ldr r0, _081473FC @ =gUnknown_846AF60 + movs r1, 0 + movs r2, 0x5C + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08147400 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r4, r1, r2 + movs r0, 0x30 + strh r0, [r4, 0x2E] + bl sub_81474CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08147404 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + b _08147410 + .align 2, 0 +_081473FC: .4byte gUnknown_846AF60 +_08147400: .4byte gUnknown_202063C +_08147404: + movs r0, 0xF0 + strh r0, [r4, 0x20] + movs r1, 0x2E + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0x2E] +_08147410: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81473C4 + + thumb_func_start sub_8147418 +sub_8147418: @ 8147418 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r5, r0, 20 + strh r5, [r4, 0x24] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _08147446 + ldrh r0, [r4, 0x20] + adds r0, r5 + lsls r0, 16 + asrs r0, 16 + bl sub_814746C +_08147446: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + movs r1, 0x96 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r4, 0x24] + adds r0, r1 + lsls r0, 16 + movs r1, 0x96 + lsls r1, 18 + cmp r0, r1 + bls _08147466 + adds r0, r4, 0 + bl sub_8007280 +_08147466: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8147418 + + thumb_func_start sub_814746C +sub_814746C: @ 814746C + push {r4,lr} + adds r1, r0, 0 + ldr r0, _081474A8 @ =gUnknown_846AFD0 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x5C + movs r3, 0x8 + bl sub_8006F8C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x40 + beq _081474A2 + bl sub_81474CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081474A2 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _081474AC @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C +_081474A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081474A8: .4byte gUnknown_846AFD0 +_081474AC: .4byte gUnknown_202063C + thumb_func_end sub_814746C + + thumb_func_start sub_81474B0 +sub_81474B0: @ 81474B0 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081474C6 + adds r0, r2, 0 + bl sub_8007280 +_081474C6: + pop {r0} + bx r0 + thumb_func_end sub_81474B0 + + thumb_func_start sub_81474CC +sub_81474CC: @ 81474CC + push {lr} + ldr r2, _081474EC @ =gUnknown_20370C0 + ldrh r0, [r2] + cmp r0, 0xA + bhi _081474F8 + ldr r1, _081474F0 @ =gUnknown_846AF28 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldr r1, _081474F4 @ =gUnknown_20370C4 + ldrh r1, [r1] + asrs r0, r1 + movs r1, 0x1 + ands r0, r1 + b _081474FA + .align 2, 0 +_081474EC: .4byte gUnknown_20370C0 +_081474F0: .4byte gUnknown_846AF28 +_081474F4: .4byte gUnknown_20370C4 +_081474F8: + movs r0, 0x1 +_081474FA: + pop {r1} + bx r1 + thumb_func_end sub_81474CC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/shop.s b/asm/shop.s new file mode 100644 index 000000000..c5c10f8ad --- /dev/null +++ b/asm/shop.s @@ -0,0 +1,3563 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_809AAB0 +sub_809AAB0: @ 809AAB0 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + bl sub_809AB7C + ldr r4, _0809AAE8 @ =gUnknown_2039934 + movs r1, 0xF + ands r1, r0 + ldrb r2, [r4, 0x16] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x16] + movs r0, 0 + strh r0, [r4, 0xC] + bl sub_80CBE00 + lsls r0, 24 + cmp r0, 0 + bne _0809AAF0 + ldrh r0, [r4, 0x16] + ldr r1, _0809AAEC @ =0xfffffe0f + ands r1, r0 + movs r0, 0x40 + b _0809AAF8 + .align 2, 0 +_0809AAE8: .4byte gUnknown_2039934 +_0809AAEC: .4byte 0xfffffe0f +_0809AAF0: + ldrh r0, [r4, 0x16] + ldr r1, _0809AB68 @ =0xfffffe0f + ands r1, r0 + movs r0, 0x50 +_0809AAF8: + orrs r1, r0 + strh r1, [r4, 0x16] + ldr r4, _0809AB6C @ =gUnknown_2039950 + ldr r0, _0809AB70 @ =gUnknown_83DF0BC + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl sub_80F7750 + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r4] + movs r6, 0x10 + str r6, [sp] + movs r5, 0x3 + str r5, [sp, 0x4] + ldr r1, _0809AB74 @ =gUnknown_83DF09C + str r1, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x2 + bl sub_810FB6C + ldrb r0, [r4] + str r6, [sp] + str r5, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8003F20 + ldr r0, _0809AB78 @ =sub_809AC10 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809AB68: .4byte 0xfffffe0f +_0809AB6C: .4byte gUnknown_2039950 +_0809AB70: .4byte gUnknown_83DF0BC +_0809AB74: .4byte gUnknown_83DF09C +_0809AB78: .4byte sub_809AC10 + thumb_func_end sub_809AAB0 + + thumb_func_start sub_809AB7C +sub_809AB7C: @ 809AB7C + push {r4,r5,lr} + cmp r0, 0 + beq _0809AB8C + lsls r0, 24 + lsrs r0, 24 + b _0809ABCE +_0809AB88: + movs r0, 0x1 + b _0809ABCE +_0809AB8C: + movs r4, 0 + ldr r1, _0809ABD4 @ =gUnknown_2039934 + ldrh r0, [r1, 0x10] + cmp r4, r0 + bcs _0809ABCC + ldr r0, [r1, 0x4] + ldrh r0, [r0] + cmp r0, 0 + beq _0809ABCC + adds r5, r1, 0 +_0809ABA0: + ldr r1, [r5, 0x4] + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_809A9D8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _0809AB88 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldrh r0, [r5, 0x10] + cmp r4, r0 + bcs _0809ABCC + ldr r0, [r5, 0x4] + lsls r1, r4, 1 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _0809ABA0 +_0809ABCC: + movs r0, 0 +_0809ABCE: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0809ABD4: .4byte gUnknown_2039934 + thumb_func_end sub_809AB7C + + thumb_func_start sub_809ABD8 +sub_809ABD8: @ 809ABD8 + push {lr} + adds r1, r0, 0 + ldr r2, _0809AC00 @ =gUnknown_2039934 + str r1, [r2, 0x4] + movs r0, 0 + strh r0, [r2, 0x10] + ldrh r0, [r1] + cmp r0, 0 + beq _0809ABFC +_0809ABEA: + ldrh r0, [r2, 0x10] + adds r0, 0x1 + strh r0, [r2, 0x10] + ldrh r0, [r2, 0x10] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + bne _0809ABEA +_0809ABFC: + pop {r0} + bx r0 + .align 2, 0 +_0809AC00: .4byte gUnknown_2039934 + thumb_func_end sub_809ABD8 + + thumb_func_start sub_809AC04 +sub_809AC04: @ 809AC04 + ldr r1, _0809AC0C @ =gUnknown_2039934 + str r0, [r1] + bx lr + .align 2, 0 +_0809AC0C: .4byte gUnknown_2039934 + thumb_func_end sub_809AC04 + + thumb_func_start sub_809AC10 +sub_809AC10: @ 809AC10 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_810FA04 + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _0809AC52 + adds r0, 0x1 + cmp r1, r0 + bne _0809AC3C + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_809ACF8 + b _0809AC52 +_0809AC3C: + ldr r4, _0809AC58 @ =gUnknown_83DF09C + bl sub_810F98C + lsls r0, 24 + lsrs r0, 21 + adds r4, 0x4 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_0809AC52: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809AC58: .4byte gUnknown_83DF09C + thumb_func_end sub_809AC10 + + thumb_func_start sub_809AC5C +sub_809AC5C: @ 809AC5C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _0809AC8C @ =sub_809AE14 + adds r0, r4, 0 + movs r1, 0xE + bl sub_80776E8 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r1, _0809AC90 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0809AC94 @ =sub_809AD40 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809AC8C: .4byte sub_809AE14 +_0809AC90: .4byte gUnknown_3005090 +_0809AC94: .4byte sub_809AD40 + thumb_func_end sub_809AC5C + + thumb_func_start sub_809AC98 +sub_809AC98: @ 809AC98 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r2, _0809ACC8 @ =sub_809ACD4 + adds r0, r4, 0 + movs r1, 0xE + bl sub_80776E8 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 + ldr r1, _0809ACCC @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0809ACD0 @ =sub_809AD40 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809ACC8: .4byte sub_809ACD4 +_0809ACCC: .4byte gUnknown_3005090 +_0809ACD0: .4byte sub_809AD40 + thumb_func_end sub_809AC98 + + thumb_func_start sub_809ACD4 +sub_809ACD4: @ 809ACD4 + push {lr} + ldr r2, _0809ACEC @ =sub_80567DC + movs r0, 0x2 + movs r1, 0x3 + bl sub_8107DB4 + ldr r1, _0809ACF0 @ =gUnknown_3005020 + ldr r0, _0809ACF4 @ =sub_809AD74 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0809ACEC: .4byte sub_80567DC +_0809ACF0: .4byte gUnknown_3005020 +_0809ACF4: .4byte sub_809AD74 + thumb_func_end sub_809ACD4 + + thumb_func_start sub_809ACF8 +sub_809ACF8: @ 809ACF8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_809AD24 + bl sub_809C138 + adds r0, r4, 0 + bl sub_8077508 + ldr r0, _0809AD20 @ =gUnknown_2039934 + ldr r0, [r0] + cmp r0, 0 + beq _0809AD1A + bl _call_via_r0 +_0809AD1A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809AD20: .4byte gUnknown_2039934 + thumb_func_end sub_809ACF8 + + thumb_func_start sub_809AD24 +sub_809AD24: @ 809AD24 + push {r4,lr} + ldr r4, _0809AD3C @ =gUnknown_2039950 + ldrb r0, [r4] + movs r1, 0x2 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809AD3C: .4byte gUnknown_2039950 + thumb_func_end sub_809AD24 + + thumb_func_start sub_809AD40 +sub_809AD40: @ 809AD40 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0809AD70 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0809AD68 + adds r0, r4, 0 + movs r1, 0xE + bl sub_8077720 + bl sub_8000544 + bl sub_8003ECC + adds r0, r4, 0 + bl sub_8077508 +_0809AD68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809AD70: .4byte gUnknown_2037AB8 + thumb_func_end sub_809AD40 + + thumb_func_start sub_809AD74 +sub_809AD74: @ 809AD74 + push {lr} + bl sub_807DC00 + ldr r0, _0809AD88 @ =sub_809AD8C + movs r1, 0x8 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0809AD88: .4byte sub_809AD8C + thumb_func_end sub_809AD74 + + thumb_func_start sub_809AD8C +sub_809AD8C: @ 809AD8C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_807AA70 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809ADB2 + bl sub_809B56C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _0809ADB8 @ =gUnknown_841689E + ldr r3, _0809ADBC @ =sub_809ADC0 + adds r0, r4, 0 + bl sub_80F7808 +_0809ADB2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809ADB8: .4byte gUnknown_841689E +_0809ADBC: .4byte sub_809ADC0 + thumb_func_end sub_809AD8C + + thumb_func_start sub_809ADC0 +sub_809ADC0: @ 809ADC0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0809ADE0 @ =gUnknown_2039934 + ldrb r0, [r0, 0x16] + lsls r0, 28 + lsrs r0, 28 + bl sub_809AAB0 + adds r0, r4, 0 + bl sub_8077508 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809ADE0: .4byte gUnknown_2039934 + thumb_func_end sub_809ADC0 + + thumb_func_start sub_809ADE4 +sub_809ADE4: @ 809ADE4 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + bl sub_80F67B8 + pop {r0} + bx r0 + thumb_func_end sub_809ADE4 + + thumb_func_start sub_809AE00 +sub_809AE00: @ 809AE00 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_809AE00 + + thumb_func_start sub_809AE14 +sub_809AE14: @ 809AE14 + push {r4,r5,lr} + sub sp, 0xC + ldr r0, _0809AE90 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r5, r0, r1 + ldrb r4, [r5] + cmp r4, 0 + beq _0809AEAC + cmp r4, 0x1 + bne _0809AE2C + b _0809AF54 +_0809AE2C: + ldr r0, _0809AE94 @ =gUnknown_2039934 + movs r5, 0 + strh r5, [r0, 0xC] + strh r5, [r0, 0xE] + bl sub_809B15C + bl sub_809B690 + ldr r0, _0809AE98 @ =sub_809BBC0 + movs r1, 0x8 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0809AE9C @ =gUnknown_3005E70 + movs r1, 0 + movs r2, 0 + bl sub_8106FF8 + ldr r2, _0809AEA0 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x16] + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _0809AEA4 @ =sub_809AE00 + bl sub_80006F4 + ldr r0, _0809AEA8 @ =sub_809ADE4 + bl sub_8000544 + b _0809AF64 + .align 2, 0 +_0809AE90: .4byte gUnknown_30030F0 +_0809AE94: .4byte gUnknown_2039934 +_0809AE98: .4byte sub_809BBC0 +_0809AE9C: .4byte gUnknown_3005E70 +_0809AEA0: .4byte gUnknown_3005090 +_0809AEA4: .4byte sub_809AE00 +_0809AEA8: .4byte sub_809ADE4 +_0809AEAC: + bl sub_80BF768 + str r4, [sp, 0x8] + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _0809AF4C @ =0x01000100 + add r0, sp, 0x8 + bl CpuFastSet + bl sub_8087E64 + bl sub_80F6808 + bl sub_80088F0 + bl sub_8070528 + bl sub_8006B10 + bl sub_80773BC + bl sub_80F6790 + bl sub_80984D8 + bl sub_809AF6C + lsls r0, 24 + cmp r0, 0 + beq _0809AF64 + bl sub_809B188 + lsls r0, 24 + cmp r0, 0 + beq _0809AF64 + bl sub_809AFD0 + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + ldr r0, _0809AF50 @ =gUnknown_2039934 + ldrb r0, [r0, 0x16] + lsls r0, 28 + lsrs r0, 28 + bl sub_813F66C + bl sub_809B080 + b _0809AF5E + .align 2, 0 +_0809AF4C: .4byte 0x01000100 +_0809AF50: .4byte gUnknown_2039934 +_0809AF54: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _0809AF64 +_0809AF5E: + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] +_0809AF64: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809AE14 + + thumb_func_start sub_809AF6C +sub_809AF6C: @ 809AF6C + push {r4,r5,lr} + ldr r4, _0809AFB0 @ =gUnknown_2039954 + movs r5, 0x80 + lsls r5, 4 + adds r0, r5, 0 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0809AFC0 + ldr r4, _0809AFB4 @ =gUnknown_2039958 + adds r0, r5, 0 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0809AFC0 + ldr r4, _0809AFB8 @ =gUnknown_203995C + adds r0, r5, 0 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0809AFC0 + ldr r4, _0809AFBC @ =gUnknown_2039960 + adds r0, r5, 0 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0809AFC0 + movs r0, 0x1 + b _0809AFCA + .align 2, 0 +_0809AFB0: .4byte gUnknown_2039954 +_0809AFB4: .4byte gUnknown_2039958 +_0809AFB8: .4byte gUnknown_203995C +_0809AFBC: .4byte gUnknown_2039960 +_0809AFC0: + bl sub_809B604 + bl sub_809B670 + movs r0, 0 +_0809AFCA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809AF6C + + thumb_func_start sub_809AFD0 +sub_809AFD0: @ 809AFD0 + push {lr} + movs r0, 0 + bl sub_8001618 + ldr r1, _0809B070 @ =gUnknown_83DF0C4 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r0, _0809B074 @ =gUnknown_2039958 + ldr r1, [r0] + movs r0, 0x1 + bl sub_8001FA0 + ldr r0, _0809B078 @ =gUnknown_2039960 + ldr r1, [r0] + movs r0, 0x2 + bl sub_8001FA0 + ldr r0, _0809B07C @ =gUnknown_203995C + ldr r1, [r0] + movs r0, 0x3 + bl sub_8001FA0 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + pop {r0} + bx r0 + .align 2, 0 +_0809B070: .4byte gUnknown_83DF0C4 +_0809B074: .4byte gUnknown_2039958 +_0809B078: .4byte gUnknown_2039960 +_0809B07C: .4byte gUnknown_203995C + thumb_func_end sub_809AFD0 + + thumb_func_start sub_809B080 +sub_809B080: @ 809B080 + push {r4,lr} + sub sp, 0x4 + ldr r1, _0809B0B0 @ =gUnknown_8E85DC8 + movs r2, 0x90 + lsls r2, 3 + movs r3, 0xF7 + lsls r3, 2 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + bl sub_80F6878 + ldr r0, _0809B0B4 @ =gUnknown_2039934 + ldrb r1, [r0, 0x16] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _0809B0C0 + ldr r0, _0809B0B8 @ =gUnknown_8E85EFC + ldr r1, _0809B0BC @ =gUnknown_2039954 + ldr r1, [r1] + bl sub_800EBB4 + b _0809B0CA + .align 2, 0 +_0809B0B0: .4byte gUnknown_8E85DC8 +_0809B0B4: .4byte gUnknown_2039934 +_0809B0B8: .4byte gUnknown_8E85EFC +_0809B0BC: .4byte gUnknown_2039954 +_0809B0C0: + ldr r0, _0809B100 @ =gUnknown_8E86038 + ldr r1, _0809B104 @ =gUnknown_2039954 + ldr r1, [r1] + bl sub_800EBB4 +_0809B0CA: + movs r0, 0x40 + bl sub_8002B9C + adds r4, r0, 0 + ldr r0, _0809B108 @ =gUnknown_8E86170 + adds r1, r4, 0 + bl sub_800EBB4 + adds r0, r4, 0 + movs r1, 0xB0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + adds r0, 0x20 + movs r1, 0x60 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + bl sub_8002BC4 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809B100: .4byte gUnknown_8E86038 +_0809B104: .4byte gUnknown_2039954 +_0809B108: .4byte gUnknown_8E86170 + thumb_func_end sub_809B080 + + thumb_func_start sub_809B10C +sub_809B10C: @ 809B10C + push {lr} + sub sp, 0x8 + movs r2, 0x6 + cmp r0, 0 + bne _0809B118 + movs r2, 0xB +_0809B118: + ldr r0, _0809B138 @ =gUnknown_2039934 + ldrb r1, [r0, 0x16] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _0809B13C + movs r0, 0x6 + str r0, [sp] + str r2, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0xE + movs r3, 0x1E + bl sub_80F6B08 + b _0809B14E + .align 2, 0 +_0809B138: .4byte gUnknown_2039934 +_0809B13C: + movs r0, 0x8 + str r0, [sp] + str r2, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0xC + movs r3, 0x1E + bl sub_80F6B08 +_0809B14E: + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_809B10C + + thumb_func_start sub_809B15C +sub_809B15C: @ 809B15C + push {lr} + bl sub_809B764 + bl sub_809BAFC + bl sub_813F6D0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0x3 + bl sub_80F67A4 + pop {r0} + bx r0 + thumb_func_end sub_809B15C + + thumb_func_start sub_809B188 +sub_809B188: @ 809B188 + push {r4-r7,lr} + ldr r7, _0809B1C0 @ =gUnknown_2039964 + ldr r4, _0809B1C4 @ =gUnknown_2039934 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + lsls r0, 3 + bl sub_8002B9C + str r0, [r7] + cmp r0, 0 + beq _0809B1B2 + ldr r5, _0809B1C8 @ =gUnknown_2039968 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + movs r1, 0xD + muls r0, r1 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + bne _0809B1CC +_0809B1B2: + bl sub_809B604 + bl sub_809B670 + movs r0, 0 + b _0809B2F0 + .align 2, 0 +_0809B1C0: .4byte gUnknown_2039964 +_0809B1C4: .4byte gUnknown_2039934 +_0809B1C8: .4byte gUnknown_2039968 +_0809B1CC: + movs r6, 0 + b _0809B1F2 +_0809B1D0: + lsls r1, r6, 3 + ldr r0, [r7] + adds r0, r1 + ldr r2, [r4, 0x4] + lsls r1, r6, 1 + adds r1, r2 + ldrh r1, [r1] + movs r2, 0xD + adds r3, r6, 0 + muls r3, r2 + ldr r2, [r5] + adds r2, r3 + bl sub_809B300 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 +_0809B1F2: + ldrh r0, [r4, 0x10] + cmp r6, r0 + bcc _0809B1D0 + ldr r5, _0809B2C8 @ =gUnknown_2039968 + movs r0, 0xD + adds r4, r6, 0 + muls r4, r0 + ldr r0, [r5] + adds r0, r4 + ldr r1, _0809B2CC @ =gUnknown_84161C1 + bl sub_8008D84 + ldr r0, _0809B2D0 @ =gUnknown_2039964 + ldr r2, [r0] + lsls r1, r6, 3 + adds r1, r2 + ldr r0, [r5] + adds r0, r4 + str r0, [r1] + movs r0, 0x2 + negs r0, r0 + str r0, [r1, 0x4] + ldr r5, _0809B2D4 @ =gUnknown_3005E70 + str r2, [r5] + ldr r6, _0809B2D8 @ =gUnknown_2039934 + ldrh r0, [r6, 0x10] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0xC] + movs r0, 0x4 + strb r0, [r5, 0x10] + strb r1, [r5, 0x11] + movs r0, 0x9 + strb r0, [r5, 0x12] + movs r0, 0x1 + strb r0, [r5, 0x13] + ldrb r1, [r5, 0x16] + subs r0, 0x9 + ands r0, r1 + movs r1, 0x39 + negs r1, r1 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x16] + ldrb r2, [r5, 0x14] + movs r1, 0x10 + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + movs r3, 0x2 + orrs r0, r3 + strb r0, [r5, 0x14] + ldrb r2, [r5, 0x17] + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r5, 0x17] + ldrb r0, [r5, 0x15] + ands r1, r0 + strb r1, [r5, 0x15] + movs r0, 0x2 + movs r1, 0x5 + bl sub_80F79D8 + lsls r0, 4 + ldrb r2, [r5, 0x14] + movs r4, 0xF + adds r1, r4, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x14] + movs r0, 0x2 + movs r1, 0x7 + bl sub_80F79D8 + lsls r0, 4 + ldrb r2, [r5, 0x15] + adds r1, r4, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x15] + ldr r0, _0809B2DC @ =sub_809B320 + str r0, [r5, 0x4] + ldr r0, _0809B2E0 @ =sub_809B408 + str r0, [r5, 0x8] + ldrb r2, [r5, 0x16] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + strb r0, [r5, 0x16] + ldrb r0, [r5, 0x17] + ands r1, r0 + strb r1, [r5, 0x17] + ldrb r0, [r6, 0x16] + ands r4, r0 + movs r1, 0x6 + cmp r4, 0x1 + bne _0809B2BC + movs r1, 0x5 +_0809B2BC: + ldrh r0, [r6, 0x10] + adds r0, 0x1 + cmp r0, r1 + ble _0809B2E4 + strh r1, [r5, 0xE] + b _0809B2E6 + .align 2, 0 +_0809B2C8: .4byte gUnknown_2039968 +_0809B2CC: .4byte gUnknown_84161C1 +_0809B2D0: .4byte gUnknown_2039964 +_0809B2D4: .4byte gUnknown_3005E70 +_0809B2D8: .4byte gUnknown_2039934 +_0809B2DC: .4byte sub_809B320 +_0809B2E0: .4byte sub_809B408 +_0809B2E4: + strh r0, [r5, 0xE] +_0809B2E6: + ldr r0, _0809B2F8 @ =gUnknown_2039934 + ldr r1, _0809B2FC @ =gUnknown_3005E70 + ldrh r1, [r1, 0xE] + strh r1, [r0, 0x12] + movs r0, 0x1 +_0809B2F0: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809B2F8: .4byte gUnknown_2039934 +_0809B2FC: .4byte gUnknown_3005E70 + thumb_func_end sub_809B188 + + thumb_func_start sub_809B300 +sub_809B300: @ 809B300 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8099E90 + str r6, [r4] + str r5, [r4, 0x4] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_809B300 + + thumb_func_start sub_809B320 +sub_809B320: @ 809B320 + push {r4-r7,lr} + sub sp, 0x14 + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + beq _0809B334 + movs r0, 0x5 + bl sub_80722CC +_0809B334: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _0809B348 + lsls r0, r5, 16 + lsrs r0, 16 + bl sub_809A96C + adds r7, r0, 0 + b _0809B34A +_0809B348: + ldr r7, _0809B384 @ =gUnknown_8416757 +_0809B34A: + movs r0, 0x5 + movs r1, 0 + bl sub_800445C + ldr r6, _0809B388 @ =gUnknown_2039934 + ldrb r0, [r6, 0x16] + movs r4, 0xF + ands r4, r0 + cmp r4, 0x1 + beq _0809B3D8 + ldrb r1, [r6, 0x17] + lsls r1, 29 + lsrs r1, 30 + movs r0, 0x1 + eors r0, r1 + bl sub_8098940 + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _0809B38C + lsls r0, r5, 16 + lsrs r0, 16 + ldrb r1, [r6, 0x17] + lsls r1, 29 + lsrs r1, 30 + bl sub_80988E8 + b _0809B398 + .align 2, 0 +_0809B384: .4byte gUnknown_8416757 +_0809B388: .4byte gUnknown_2039934 +_0809B38C: + ldr r0, _0809B3D0 @ =0x00000177 + ldrb r1, [r6, 0x17] + lsls r1, 29 + lsrs r1, 30 + bl sub_80988E8 +_0809B398: + ldr r3, _0809B3D4 @ =gUnknown_2039934 + ldrb r2, [r3, 0x17] + lsls r0, r2, 29 + lsrs r0, 30 + movs r1, 0x1 + eors r1, r0 + lsls r1, 1 + movs r0, 0x7 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x17] + movs r0, 0x3 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x5 + movs r1, 0x2 + adds r2, r7, 0 + movs r3, 0 + bl sub_813F6F4 + b _0809B400 + .align 2, 0 +_0809B3D0: .4byte 0x00000177 +_0809B3D4: .4byte gUnknown_2039934 +_0809B3D8: + movs r0, 0x6 + movs r1, 0 + bl sub_800445C + adds r0, r5, 0 + bl sub_809B494 + movs r0, 0x3 + str r0, [sp] + str r4, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x5 + movs r1, 0x2 + adds r2, r7, 0 + movs r3, 0x2 + bl sub_813F6F4 +_0809B400: + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809B320 + + thumb_func_start sub_809B408 +sub_809B408: @ 809B408 + push {r4-r6,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _0809B480 + ldr r4, _0809B488 @ =gUnknown_2021CD0 + lsls r0, r1, 16 + lsrs r0, 16 + bl sub_809A900 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x4 + subs r1, r0 + ldr r2, _0809B48C @ =gUnknown_2021D18 + adds r0, r1, 0 + subs r1, 0x1 + cmp r0, 0 + beq _0809B45C + movs r3, 0 +_0809B450: + strb r3, [r2] + adds r2, 0x1 + adds r0, r1, 0 + subs r1, 0x1 + cmp r0, 0 + bne _0809B450 +_0809B45C: + ldr r1, _0809B490 @ =gUnknown_841697A + adds r0, r2, 0 + bl sub_8008FCC + ldr r2, _0809B48C @ =gUnknown_2021D18 + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + adds r0, r6, 0 + movs r1, 0 + movs r3, 0x69 + bl sub_813F6F4 +_0809B480: + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809B488: .4byte gUnknown_2021CD0 +_0809B48C: .4byte gUnknown_2021D18 +_0809B490: .4byte gUnknown_841697A + thumb_func_end sub_809B408 + + thumb_func_start sub_809B494 +sub_809B494: @ 809B494 + push {r4-r7,lr} + sub sp, 0x14 + adds r7, r0, 0 + movs r0, 0x2 + negs r0, r0 + cmp r7, r0 + beq _0809B528 + ldr r4, _0809B514 @ =gUnknown_2021CD0 + ldr r0, _0809B518 @ =0xfffffee0 + adds r1, r7, r0 + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r5, _0809B51C @ =gUnknown_2021D18 + ldr r1, _0809B520 @ =gUnknown_8416226 + adds r0, r5, 0 + bl sub_8008D84 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r6, 0x1 + str r6, [sp, 0x10] + movs r0, 0x6 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_813F6F4 + lsls r0, r7, 16 + lsrs r0, 16 + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + muls r1, r0 + ldr r0, _0809B524 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r5, 0 + bl sub_8008D84 + movs r0, 0x10 + str r0, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + str r4, [sp, 0xC] + str r6, [sp, 0x10] + movs r0, 0x6 + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0 + bl sub_813F6F4 + b _0809B55C + .align 2, 0 +_0809B514: .4byte gUnknown_2021CD0 +_0809B518: .4byte 0xfffffee0 +_0809B51C: .4byte gUnknown_2021D18 +_0809B520: .4byte gUnknown_8416226 +_0809B524: .4byte gUnknown_8247094 +_0809B528: + ldr r2, _0809B564 @ =gUnknown_8416213 + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r5, 0x1 + str r5, [sp, 0x10] + movs r0, 0x6 + movs r1, 0 + movs r3, 0 + bl sub_813F6F4 + ldr r2, _0809B568 @ =gUnknown_8416217 + movs r0, 0x10 + str r0, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + str r4, [sp, 0xC] + str r5, [sp, 0x10] + movs r0, 0x6 + movs r1, 0x2 + movs r3, 0 + bl sub_813F6F4 +_0809B55C: + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809B564: .4byte gUnknown_8416213 +_0809B568: .4byte gUnknown_8416217 + thumb_func_end sub_809B494 + + thumb_func_start sub_809B56C +sub_809B56C: @ 809B56C + ldr r0, _0809B578 @ =gUnknown_2039934 + ldrh r0, [r0, 0x16] + lsls r0, 23 + lsrs r0, 27 + bx lr + .align 2, 0 +_0809B578: .4byte gUnknown_2039934 + thumb_func_end sub_809B56C + + thumb_func_start sub_809B57C +sub_809B57C: @ 809B57C + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_8107300 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_809B59C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809B57C + + thumb_func_start sub_809B59C +sub_809B59C: @ 809B59C + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0xFF + bne _0809B5E0 + movs r0, 0x2 + movs r1, 0 + bl sub_80F79D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + movs r0, 0x4 + movs r1, 0 + movs r2, 0x1 + adds r3, r5, 0 + bl sub_8004378 + movs r0, 0x4 + movs r1, 0x2 + bl sub_8003F20 + b _0809B5F8 +_0809B5E0: + ldr r2, _0809B600 @ =gUnknown_841623B + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r0, 0x4 + movs r1, 0x2 + movs r3, 0x1 + bl sub_813F6F4 +_0809B5F8: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809B600: .4byte gUnknown_841623B + thumb_func_end sub_809B59C + + thumb_func_start sub_809B604 +sub_809B604: @ 809B604 + push {lr} + ldr r0, _0809B658 @ =gUnknown_2039954 + ldr r0, [r0] + cmp r0, 0 + beq _0809B612 + bl sub_8002BC4 +_0809B612: + ldr r0, _0809B65C @ =gUnknown_2039958 + ldr r0, [r0] + cmp r0, 0 + beq _0809B61E + bl sub_8002BC4 +_0809B61E: + ldr r0, _0809B660 @ =gUnknown_203995C + ldr r0, [r0] + cmp r0, 0 + beq _0809B62A + bl sub_8002BC4 +_0809B62A: + ldr r0, _0809B664 @ =gUnknown_2039960 + ldr r0, [r0] + cmp r0, 0 + beq _0809B636 + bl sub_8002BC4 +_0809B636: + ldr r0, _0809B668 @ =gUnknown_2039964 + ldr r0, [r0] + cmp r0, 0 + beq _0809B642 + bl sub_8002BC4 +_0809B642: + ldr r0, _0809B66C @ =gUnknown_2039968 + ldr r0, [r0] + cmp r0, 0 + beq _0809B64E + bl sub_8002BC4 +_0809B64E: + bl sub_8003ECC + pop {r0} + bx r0 + .align 2, 0 +_0809B658: .4byte gUnknown_2039954 +_0809B65C: .4byte gUnknown_2039958 +_0809B660: .4byte gUnknown_203995C +_0809B664: .4byte gUnknown_2039960 +_0809B668: .4byte gUnknown_2039964 +_0809B66C: .4byte gUnknown_2039968 + thumb_func_end sub_809B604 + + thumb_func_start sub_809B670 +sub_809B670: @ 809B670 + push {lr} + ldr r0, _0809B684 @ =gUnknown_3005020 + ldr r1, _0809B688 @ =sub_809AD74 + str r1, [r0] + ldr r0, _0809B68C @ =sub_80567DC + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0809B684: .4byte gUnknown_3005020 +_0809B688: .4byte sub_809AD74 +_0809B68C: .4byte sub_80567DC + thumb_func_end sub_809B670 + + thumb_func_start sub_809B690 +sub_809B690: @ 809B690 + push {r4,lr} + sub sp, 0x10 + ldr r4, _0809B6C0 @ =gUnknown_2039934 + ldrb r1, [r4, 0x16] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _0809B6C4 + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x12] + subs r0, r1 + adds r0, 0x1 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r0, 0xE + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xA0 + movs r2, 0x8 + movs r3, 0x68 + b _0809B6E2 + .align 2, 0 +_0809B6C0: .4byte gUnknown_2039934 +_0809B6C4: + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0x12] + subs r0, r1 + adds r0, 0x1 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r0, 0xE + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xA0 + movs r2, 0x8 + movs r3, 0x58 +_0809B6E2: + bl sub_8133B40 + lsls r0, 3 + ldrb r2, [r4, 0x17] + movs r1, 0x7 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x17] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809B690 + + thumb_func_start sub_809B6FC +sub_809B6FC: @ 809B6FC + push {r4,lr} + sub sp, 0x10 + ldr r4, _0809B738 @ =gUnknown_2039934 + movs r0, 0x1 + strh r0, [r4, 0x18] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r0, 0x18 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x98 + movs r2, 0x48 + movs r3, 0x68 + bl sub_8133B40 + lsls r0, 3 + ldrb r2, [r4, 0x17] + movs r1, 0x7 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x17] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809B738: .4byte gUnknown_2039934 + thumb_func_end sub_809B6FC + + thumb_func_start sub_809B73C +sub_809B73C: @ 809B73C + push {r4,lr} + ldr r4, _0809B760 @ =gUnknown_2039934 + ldrb r1, [r4, 0x17] + movs r0, 0xF8 + ands r0, r1 + cmp r0, 0xF8 + beq _0809B758 + lsrs r0, r1, 3 + bl sub_8133C30 + ldrb r0, [r4, 0x17] + movs r1, 0xF8 + orrs r0, r1 + strb r0, [r4, 0x17] +_0809B758: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809B760: .4byte gUnknown_2039934 + thumb_func_end sub_809B73C + + thumb_func_start sub_809B764 +sub_809B764: @ 809B764 + push {lr} + bl sub_809B92C + bl sub_809BA40 + bl sub_809B778 + pop {r0} + bx r0 + thumb_func_end sub_809B764 + + thumb_func_start sub_809B778 +sub_809B778: @ 809B778 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _0809B804 @ =gUnknown_2036DFC + ldr r0, [r0] + mov r9, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + mov r1, sp + mov r0, sp + ldrh r0, [r0] + subs r0, 0x2 + strh r0, [r1] + ldrh r0, [r4] + subs r0, 0x3 + strh r0, [r4] + movs r1, 0 + mov r10, r4 +_0809B7AA: + movs r4, 0 + lsls r1, 16 + mov r8, r1 + asrs r7, r1, 16 +_0809B7B2: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + lsls r4, 16 + asrs r6, r4, 16 + adds r0, r6 + mov r2, r10 + movs r3, 0 + ldrsh r1, [r2, r3] + adds r1, r7 + bl sub_8058E48 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, sp + ldrh r0, [r0] + adds r0, r6, r0 + lsls r0, 16 + asrs r0, 16 + mov r2, r10 + ldrh r1, [r2] + adds r1, r7, r1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F8C + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _0809B808 @ =0x0000027f + cmp r5, r0 + bhi _0809B80C + mov r1, r9 + ldr r0, [r1, 0x10] + lsls r1, r5, 4 + ldr r2, [r0, 0xC] + adds r2, r1 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_809B850 + b _0809B822 + .align 2, 0 +_0809B804: .4byte gUnknown_2036DFC +_0809B808: .4byte 0x0000027f +_0809B80C: + mov r2, r9 + ldr r0, [r2, 0x14] + ldr r2, _0809B84C @ =0xfffffd80 + adds r1, r5, r2 + lsls r1, 4 + ldr r2, [r0, 0xC] + adds r2, r1 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_809B850 +_0809B822: + movs r3, 0x80 + lsls r3, 9 + adds r0, r4, r3 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _0809B7B2 + adds r0, r3, 0 + add r0, r8 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _0809B7AA + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809B84C: .4byte 0xfffffd80 + thumb_func_end sub_809B778 + + thumb_func_start sub_809B850 +sub_809B850: @ 809B850 + push {r4-r6,lr} + adds r6, r2, 0 + lsls r3, 24 + lsrs r3, 24 + adds r2, r3, 0 + lsls r0, 17 + lsrs r5, r0, 16 + lsls r1, 22 + movs r0, 0x80 + lsls r0, 15 + adds r1, r0 + lsrs r1, 16 + cmp r3, 0x1 + beq _0809B8A0 + cmp r3, 0x1 + bgt _0809B876 + cmp r3, 0 + beq _0809B87C + b _0809B8F6 +_0809B876: + cmp r2, 0x2 + beq _0809B8D0 + b _0809B8F6 +_0809B87C: + ldr r0, _0809B898 @ =gUnknown_2039960 + ldr r0, [r0] + lsls r5, 16 + asrs r5, 16 + lsls r4, r1, 16 + asrs r4, 16 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_809B904 + ldr r0, _0809B89C @ =gUnknown_2039958 + b _0809B8B8 + .align 2, 0 +_0809B898: .4byte gUnknown_2039960 +_0809B89C: .4byte gUnknown_2039958 +_0809B8A0: + ldr r0, _0809B8C8 @ =gUnknown_203995C + ldr r0, [r0] + lsls r5, 16 + asrs r5, 16 + lsls r4, r1, 16 + asrs r4, 16 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_809B904 + ldr r0, _0809B8CC @ =gUnknown_2039960 +_0809B8B8: + ldr r0, [r0] + adds r3, r6, 0 + adds r3, 0x8 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_809B904 + b _0809B8F6 + .align 2, 0 +_0809B8C8: .4byte gUnknown_203995C +_0809B8CC: .4byte gUnknown_2039960 +_0809B8D0: + ldr r0, _0809B8FC @ =gUnknown_203995C + ldr r0, [r0] + lsls r5, 16 + asrs r5, 16 + lsls r4, r1, 16 + asrs r4, 16 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_809B904 + ldr r0, _0809B900 @ =gUnknown_2039958 + ldr r0, [r0] + adds r3, r6, 0 + adds r3, 0x8 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_809B904 +_0809B8F6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809B8FC: .4byte gUnknown_203995C +_0809B900: .4byte gUnknown_2039958 + thumb_func_end sub_809B850 + + thumb_func_start sub_809B904 +sub_809B904: @ 809B904 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + adds r1, r2 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r3] + strh r0, [r1] + ldrh r0, [r3, 0x2] + strh r0, [r1, 0x2] + adds r2, r1, 0 + adds r2, 0x40 + ldrh r0, [r3, 0x4] + strh r0, [r2] + adds r1, 0x42 + ldrh r0, [r3, 0x6] + strh r0, [r1] + bx lr + thumb_func_end sub_809B904 + + thumb_func_start sub_809B92C +sub_809B92C: @ 809B92C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0 + mov r9, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C4F4 + bl sub_805C700 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r5, 0 + ldr r2, _0809B9DC @ =gUnknown_20398B4 + movs r1, 0x10 +_0809B958: + lsls r0, r5, 3 + adds r0, r2 + strh r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _0809B958 + movs r5, 0 + ldr r6, _0809B9E0 @ =gUnknown_20398BA + subs r1, r6, 0x6 + mov r8, r1 +_0809B970: + movs r4, 0 + adds r2, r5, 0x1 + mov r10, r2 +_0809B976: + mov r1, sp + ldr r3, _0809B9E4 @ =0x0000fffd + adds r0, r3, 0 + ldrh r1, [r1] + adds r0, r1 + adds r0, r4 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _0809B9E8 @ =0x0000fffe + adds r1, r2, 0 + mov r3, sp + ldrh r3, [r3, 0x2] + adds r1, r3 + adds r1, r5 + lsls r1, 16 + lsrs r1, 16 + ldr r2, [sp, 0x4] + bl sub_805F894 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x10 + beq _0809BA1C + mov r0, r9 + lsls r2, r0, 3 + mov r1, r8 + adds r0, r2, r1 + movs r7, 0 + strh r3, [r0] + mov r0, r8 + adds r0, 0x2 + adds r0, r2, r0 + strh r4, [r0] + ldr r1, _0809B9EC @ =gUnknown_20398B8 + adds r0, r2, r1 + strh r5, [r0] + ldr r1, _0809B9F0 @ =gUnknown_2036E38 + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + cmp r0, 0x2 + beq _0809BA00 + cmp r0, 0x2 + bgt _0809B9F4 + cmp r0, 0x1 + beq _0809B9FA + b _0809BA0C + .align 2, 0 +_0809B9DC: .4byte gUnknown_20398B4 +_0809B9E0: .4byte gUnknown_20398BA +_0809B9E4: .4byte 0x0000fffd +_0809B9E8: .4byte 0x0000fffe +_0809B9EC: .4byte gUnknown_20398B8 +_0809B9F0: .4byte gUnknown_2036E38 +_0809B9F4: + cmp r0, 0x3 + beq _0809BA06 + b _0809BA0C +_0809B9FA: + adds r0, r2, r6 + strh r7, [r0] + b _0809BA12 +_0809BA00: + adds r1, r2, r6 + movs r0, 0x1 + b _0809BA10 +_0809BA06: + adds r1, r2, r6 + movs r0, 0x2 + b _0809BA10 +_0809BA0C: + adds r1, r2, r6 + movs r0, 0x3 +_0809BA10: + strh r0, [r1] +_0809BA12: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_0809BA1C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x6 + bls _0809B976 + mov r2, r10 + lsls r0, r2, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _0809B970 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809B92C + + thumb_func_start sub_809BA40 +sub_809BA40: @ 809BA40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r6, 0 + ldr r7, _0809BAE8 @ =gUnknown_20398B4 + ldr r0, _0809BAEC @ =gUnknown_2036E38 + mov r8, r0 + adds r1, r7, 0x6 + mov r9, r1 +_0809BA56: + lsls r5, r6, 3 + adds r4, r5, r7 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x10 + beq _0809BACE + adds r1, r0, 0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x5] + bl sub_805F2C8 + movs r1, 0 + ldrsh r2, [r4, r1] + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + add r1, r8 + ldrb r4, [r1, 0x5] + adds r1, r7, 0x2 + adds r1, r5, r1 + ldrh r2, [r1] + lsls r2, 20 + ldr r1, _0809BAF0 @ =0xfff80000 + adds r2, r1 + asrs r2, 16 + adds r1, r7, 0x4 + adds r1, r5, r1 + ldrh r3, [r1] + lsls r3, 4 + movs r1, 0xA + ldrsh r0, [r0, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + subs r0, 0x30 + subs r3, r0 + lsls r3, 16 + asrs r3, 16 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + ldr r1, _0809BAF4 @ =nullsub_8 + bl sub_805E978 + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, _0809BAF8 @ =gUnknown_202063C + adds r2, r0 + mov r1, r9 + adds r0, r5, r1 + ldrb r1, [r0] + adds r0, r2, 0 + bl sub_800838C +_0809BACE: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bls _0809BA56 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809BAE8: .4byte gUnknown_20398B4 +_0809BAEC: .4byte gUnknown_2036E38 +_0809BAF0: .4byte 0xfff80000 +_0809BAF4: .4byte nullsub_8 +_0809BAF8: .4byte gUnknown_202063C + thumb_func_end sub_809BA40 + + thumb_func_start sub_809BAFC +sub_809BAFC: @ 809BAFC + push {r4-r6,lr} + ldr r0, _0809BB34 @ =gUnknown_2039958 + ldr r4, [r0] + ldr r0, _0809BB38 @ =gUnknown_2039954 + ldr r3, [r0] + movs r1, 0 + ldr r0, _0809BB3C @ =0x0000b3dc + adds r6, r0, 0 + ldr r5, _0809BB40 @ =0x000003ff +_0809BB0E: + lsls r0, r1, 16 + asrs r2, r0, 16 + lsls r1, r2, 1 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, 0 + beq _0809BB22 + adds r1, r4 + adds r0, r6 + strh r0, [r1] +_0809BB22: + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, r5 + ble _0809BB0E + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809BB34: .4byte gUnknown_2039958 +_0809BB38: .4byte gUnknown_2039954 +_0809BB3C: .4byte 0x0000b3dc +_0809BB40: .4byte 0x000003ff + thumb_func_end sub_809BAFC + + thumb_func_start sub_809BB44 +sub_809BB44: @ 809BB44 + push {r4,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0809BBAC @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x3 + movs r1, 0x11 + bl sub_800445C + ldr r0, _0809BBB0 @ =gUnknown_2039934 + ldr r3, [r0, 0x8] + movs r0, 0xFF + str r0, [sp] + movs r0, 0x3 + movs r1, 0x36 + movs r2, 0xA + bl sub_809FEC4 + ldr r0, _0809BBB4 @ =gUnknown_2021CD0 + movs r2, 0x2 + ldrsh r1, [r4, r2] + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r4, _0809BBB8 @ =gUnknown_2021D18 + ldr r1, _0809BBBC @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + movs r0, 0x3 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_813F6F4 + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809BBAC: .4byte gUnknown_3005098 +_0809BBB0: .4byte gUnknown_2039934 +_0809BBB4: .4byte gUnknown_2021CD0 +_0809BBB8: .4byte gUnknown_2021D18 +_0809BBBC: .4byte gUnknown_84162B9 + thumb_func_end sub_809BB44 + + thumb_func_start sub_809BBC0 +sub_809BBC0: @ 809BBC0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0809BC00 @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _0809BC04 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0809BC8E + ldrb r0, [r5, 0xE] + bl sub_8107078 + adds r4, r0, 0 + ldrb r0, [r5, 0xE] + ldr r7, _0809BC08 @ =gUnknown_2039942 + subs r2, r7, 0x2 + adds r1, r7, 0 + bl sub_81072D4 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0809BC0C + adds r0, 0x1 + cmp r4, r0 + bne _0809BC1A + b _0809BC8E + .align 2, 0 +_0809BC00: .4byte gUnknown_3005098 +_0809BC04: .4byte gUnknown_2037AB8 +_0809BC08: .4byte gUnknown_2039942 +_0809BC0C: + movs r0, 0x5 + bl sub_80722CC + adds r0, r6, 0 + bl sub_809C004 + b _0809BC8E +_0809BC1A: + movs r0, 0x5 + bl sub_80722CC + strh r4, [r5, 0xA] + movs r0, 0x5 + bl sub_80040B8 + bl sub_809B73C + ldrb r0, [r5, 0xE] + movs r1, 0x2 + bl sub_809B57C + movs r0, 0x1 + bl sub_809B10C + lsls r0, r4, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_809A900 + adds r1, r0, 0 + adds r0, r7, 0 + subs r0, 0xE + lsls r1, 16 + lsrs r1, 16 + str r1, [r0, 0x8] + ldr r0, _0809BC70 @ =gUnknown_3005008 + ldr r0, [r0] + movs r2, 0xA4 + lsls r2, 2 + adds r0, r2 + bl sub_809FD88 + lsls r0, 24 + cmp r0, 0 + bne _0809BC7C + ldr r1, _0809BC74 @ =gUnknown_8416842 + ldr r2, _0809BC78 @ =sub_809BF98 + adds r0, r6, 0 + bl sub_813F75C + b _0809BC8E + .align 2, 0 +_0809BC70: .4byte gUnknown_3005008 +_0809BC74: .4byte gUnknown_8416842 +_0809BC78: .4byte sub_809BF98 +_0809BC7C: + ldr r1, _0809BC94 @ =gUnknown_2021CD0 + adds r0, r4, 0 + bl sub_8099E90 + ldr r1, _0809BC98 @ =gUnknown_8416766 + ldr r2, _0809BC9C @ =sub_809BCA0 + adds r0, r6, 0 + bl sub_813F75C +_0809BC8E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809BC94: .4byte gUnknown_2021CD0 +_0809BC98: .4byte gUnknown_8416766 +_0809BC9C: .4byte sub_809BCA0 + thumb_func_end sub_809BBC0 + + thumb_func_start sub_809BCA0 +sub_809BCA0: @ 809BCA0 + push {r4-r7,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r5, r7, 2 + adds r5, r7 + lsls r5, 3 + ldr r0, _0809BD40 @ =gUnknown_3005098 + adds r5, r0 + ldrh r0, [r5, 0xA] + bl sub_809A7DC + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x1 + movs r1, 0 + bl sub_813F7C0 + ldr r0, _0809BD44 @ =gUnknown_2021CD0 + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r6, _0809BD48 @ =gUnknown_2021D18 + ldr r1, _0809BD4C @ =gUnknown_8416749 + adds r0, r6, 0 + bl sub_8008FCC + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + movs r4, 0x1 + str r4, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r6, 0 + movs r3, 0 + bl sub_813F6F4 + strh r4, [r5, 0x2] + movs r0, 0x3 + movs r1, 0 + bl sub_813F7A8 + adds r0, r7, 0 + bl sub_809BB44 + movs r0, 0 + bl sub_80F67A4 + ldr r0, _0809BD50 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + adds r4, r0, 0 + ldrh r0, [r5, 0xA] + bl sub_809A900 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl __udivsi3 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x63 + bls _0809BD58 + ldr r1, _0809BD54 @ =gUnknown_2039934 + movs r0, 0x63 + b _0809BD5E + .align 2, 0 +_0809BD40: .4byte gUnknown_3005098 +_0809BD44: .4byte gUnknown_2021CD0 +_0809BD48: .4byte gUnknown_2021D18 +_0809BD4C: .4byte gUnknown_8416749 +_0809BD50: .4byte gUnknown_3005008 +_0809BD54: .4byte gUnknown_2039934 +_0809BD58: + ldr r1, _0809BD80 @ =gUnknown_2039934 + lsls r0, r2, 24 + lsrs r0, 24 +_0809BD5E: + strh r0, [r1, 0x14] + cmp r2, 0x1 + beq _0809BD68 + bl sub_809B6FC +_0809BD68: + ldr r0, _0809BD84 @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _0809BD88 @ =sub_809BD8C + str r0, [r1] + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809BD80: .4byte gUnknown_2039934 +_0809BD84: .4byte gUnknown_3005090 +_0809BD88: .4byte sub_809BD8C + thumb_func_end sub_809BCA0 + + thumb_func_start sub_809BD8C +sub_809BD8C: @ 809BD8C + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809BDCC @ =gUnknown_3005098 + adds r4, r0, r1 + adds r0, r4, 0x2 + ldr r6, _0809BDD0 @ =gUnknown_2039934 + ldrh r1, [r6, 0x14] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809BDD4 + ldrh r0, [r4, 0xA] + bl sub_809A900 + lsls r0, 16 + lsrs r0, 16 + movs r2, 0x2 + ldrsh r1, [r4, r2] + muls r0, r1 + str r0, [r6, 0x8] + adds r0, r5, 0 + bl sub_809BB44 + b _0809BE88 + .align 2, 0 +_0809BDCC: .4byte gUnknown_3005098 +_0809BDD0: .4byte gUnknown_2039934 +_0809BDD4: + ldr r0, _0809BE3C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0809BE54 + movs r0, 0x5 + bl sub_80722CC + bl sub_809B73C + movs r0, 0x3 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x1 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x3 + bl sub_80040B8 + movs r0, 0x1 + bl sub_80040B8 + movs r0, 0x4 + bl sub_8003FA0 + ldrh r0, [r4, 0xA] + ldr r1, _0809BE40 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r0, _0809BE44 @ =gUnknown_2021CF0 + movs r2, 0x2 + ldrsh r1, [r4, r2] + movs r2, 0 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0809BE48 @ =gUnknown_2021D04 + ldr r1, [r6, 0x8] + movs r2, 0 + movs r3, 0x8 + bl sub_8008E78 + ldr r1, _0809BE4C @ =gUnknown_841678E + ldr r2, _0809BE50 @ =sub_809BE90 + adds r0, r5, 0 + bl sub_813F75C + b _0809BE88 + .align 2, 0 +_0809BE3C: .4byte gUnknown_30030F0 +_0809BE40: .4byte gUnknown_2021CD0 +_0809BE44: .4byte gUnknown_2021CF0 +_0809BE48: .4byte gUnknown_2021D04 +_0809BE4C: .4byte gUnknown_841678E +_0809BE50: .4byte sub_809BE90 +_0809BE54: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0809BE88 + movs r0, 0x5 + bl sub_80722CC + bl sub_809B73C + movs r0, 0x3 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x1 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x3 + bl sub_80040B8 + movs r0, 0x1 + bl sub_80040B8 + adds r0, r7, 0 + bl sub_809BF98 +_0809BE88: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809BD8C + + thumb_func_start sub_809BE90 +sub_809BE90: @ 809BE90 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809BEA0 @ =gUnknown_83DF0B4 + bl sub_813F7D8 + pop {r0} + bx r0 + .align 2, 0 +_0809BEA0: .4byte gUnknown_83DF0B4 + thumb_func_end sub_809BE90 + + thumb_func_start sub_809BEA4 +sub_809BEA4: @ 809BEA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809BEE8 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0x4 + bl sub_8003FA0 + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x2] + bl sub_809A084 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809BEF4 + ldr r1, _0809BEEC @ =gUnknown_84167E7 + ldr r2, _0809BEF0 @ =sub_809BF0C + adds r0, r5, 0 + bl sub_813F75C + adds r0, r5, 0 + bl nullsub_52 + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x2] + movs r2, 0x1 + bl sub_809C09C + b _0809BEFE + .align 2, 0 +_0809BEE8: .4byte gUnknown_3005098 +_0809BEEC: .4byte gUnknown_84167E7 +_0809BEF0: .4byte sub_809BF0C +_0809BEF4: + ldr r1, _0809BF04 @ =gUnknown_8416861 + ldr r2, _0809BF08 @ =sub_809BF98 + adds r0, r5, 0 + bl sub_813F75C +_0809BEFE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809BF04: .4byte gUnknown_8416861 +_0809BF08: .4byte sub_809BF98 + thumb_func_end sub_809BEA4 + + thumb_func_start sub_809BF0C +sub_809BF0C: @ 809BF0C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x26 + bl sub_8054E90 + ldr r6, _0809BF58 @ =gUnknown_3005008 + ldr r0, [r6] + movs r5, 0xA4 + lsls r5, 2 + adds r0, r5 + ldr r1, _0809BF5C @ =gUnknown_2039934 + ldr r1, [r1, 0x8] + bl sub_809FDD8 + movs r0, 0xF8 + bl sub_80722CC + ldr r0, [r6] + adds r0, r5 + bl sub_809FD58 + adds r1, r0, 0 + movs r0, 0 + movs r2, 0 + bl sub_809FE40 + ldr r1, _0809BF60 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0809BF64 @ =sub_809BF68 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809BF58: .4byte gUnknown_3005008 +_0809BF5C: .4byte gUnknown_2039934 +_0809BF60: .4byte gUnknown_3005090 +_0809BF64: .4byte sub_809BF68 + thumb_func_end sub_809BF0C + + thumb_func_start sub_809BF68 +sub_809BF68: @ 809BF68 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0809BF94 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0809BF82 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0809BF8E +_0809BF82: + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_809BF98 +_0809BF8E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809BF94: .4byte gUnknown_30030F0 + thumb_func_end sub_809BF68 + + thumb_func_start sub_809BF98 +sub_809BF98: @ 809BF98 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r5, r1, 3 + ldr r6, _0809BFF8 @ =gUnknown_3005098 + adds r4, r5, r6 + movs r0, 0x2 + movs r1, 0 + bl sub_810F260 + ldrb r0, [r4, 0xE] + movs r1, 0x1 + bl sub_809B57C + movs r0, 0 + bl sub_809B10C + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + ldr r0, _0809BFFC @ =gUnknown_2039934 + ldrb r1, [r0, 0x16] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _0809BFDC + movs r0, 0x6 + bl sub_8003FA0 +_0809BFDC: + movs r0, 0 + bl sub_80F67A4 + bl sub_809B690 + adds r0, r6, 0 + subs r0, 0x8 + adds r0, r5, r0 + ldr r1, _0809C000 @ =sub_809BBC0 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809BFF8: .4byte gUnknown_3005098 +_0809BFFC: .4byte gUnknown_2039934 +_0809C000: .4byte sub_809BBC0 + thumb_func_end sub_809BF98 + + thumb_func_start sub_809C004 +sub_809C004: @ 809C004 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0809C03C @ =gUnknown_3005020 + ldr r0, _0809C040 @ =sub_809AD74 + str r0, [r1] + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0809C044 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0809C048 @ =sub_809C04C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C03C: .4byte gUnknown_3005020 +_0809C040: .4byte sub_809AD74 +_0809C044: .4byte gUnknown_3005090 +_0809C048: .4byte sub_809C04C + thumb_func_end sub_809C004 + + thumb_func_start sub_809C04C +sub_809C04C: @ 809C04C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0809C088 @ =gUnknown_3005098 + adds r2, r0, r1 + ldr r0, _0809C08C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0809C082 + ldrb r0, [r2, 0xE] + movs r1, 0 + movs r2, 0 + bl sub_810713C + bl sub_809B604 + ldr r0, _0809C090 @ =sub_80567DC + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_0809C082: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C088: .4byte gUnknown_3005098 +_0809C08C: .4byte gUnknown_2037AB8 +_0809C090: .4byte sub_80567DC + thumb_func_end sub_809C04C + + thumb_func_start nullsub_52 +nullsub_52: @ 809C094 + bx lr + thumb_func_end nullsub_52 + + thumb_func_start nullsub_53 +nullsub_53: @ 809C098 + bx lr + thumb_func_end nullsub_53 + + thumb_func_start sub_809C09C +sub_809C09C: @ 809C09C + push {r4-r6,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r1, _0809C0B8 @ =gUnknown_203996C + ldrb r2, [r1, 0xA] + cmp r2, r5 + bne _0809C0BC + adds r4, r1, 0 + b _0809C0D4 + .align 2, 0 +_0809C0B8: .4byte gUnknown_203996C +_0809C0BC: + ldrb r0, [r1, 0x16] + cmp r0, r5 + bne _0809C0C8 + adds r4, r1, 0 + adds r4, 0xC + b _0809C0D4 +_0809C0C8: + adds r4, r1, 0 + adds r4, 0xC + cmp r2, 0 + bne _0809C0D2 + adds r4, r1, 0 +_0809C0D2: + strb r5, [r4, 0xA] +_0809C0D4: + ldrh r0, [r4, 0x4] + cmp r0, 0 + beq _0809C0DE + movs r0, 0x1 + strb r0, [r4, 0x9] +_0809C0DE: + strh r3, [r4, 0x4] + ldrh r1, [r4, 0x6] + ldr r0, _0809C128 @ =0x000003e6 + cmp r1, r0 + bhi _0809C0F8 + adds r0, r6, r1 + strh r0, [r4, 0x6] + lsls r0, 16 + lsrs r0, 16 + ldr r1, _0809C12C @ =0x000003e7 + cmp r0, r1 + bls _0809C0F8 + strh r1, [r4, 0x6] +_0809C0F8: + ldr r1, [r4] + ldr r0, _0809C130 @ =0x000f423e + cmp r1, r0 + bhi _0809C120 + adds r0, r3, 0 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 16 + subs r1, r5, 0x1 + asrs r0, r1 + adds r1, r0, 0 + muls r1, r6 + ldr r0, [r4] + adds r0, r1 + str r0, [r4] + ldr r1, _0809C134 @ =0x000f423f + cmp r0, r1 + bls _0809C120 + str r1, [r4] +_0809C120: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809C128: .4byte 0x000003e6 +_0809C12C: .4byte 0x000003e7 +_0809C130: .4byte 0x000f423e +_0809C134: .4byte 0x000f423f + thumb_func_end sub_809C09C + + thumb_func_start sub_809C138 +sub_809C138: @ 809C138 + push {r4,lr} + ldr r4, _0809C160 @ =gUnknown_203996C + ldrb r0, [r4, 0xA] + cmp r0, 0 + beq _0809C14A + adds r0, 0x24 + adds r1, r4, 0 + bl sub_8113550 +_0809C14A: + ldrb r0, [r4, 0x16] + cmp r0, 0 + beq _0809C15A + adds r0, 0x24 + adds r1, r4, 0 + adds r1, 0xC + bl sub_8113550 +_0809C15A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C160: .4byte gUnknown_203996C + thumb_func_end sub_809C138 + + thumb_func_start sub_809C164 +sub_809C164: @ 809C164 + push {r4,lr} + bl sub_809ABD8 + movs r0, 0 + bl sub_809AAB0 + ldr r0, _0809C194 @ =sub_8069B34 + bl sub_809AC04 + bl nullsub_53 + ldr r4, _0809C198 @ =gUnknown_203996C + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x18 + bl memset + ldr r0, _0809C19C @ =gUnknown_2036DFC + ldrb r0, [r0, 0x14] + strb r0, [r4, 0x8] + strb r0, [r4, 0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C194: .4byte sub_8069B34 +_0809C198: .4byte gUnknown_203996C +_0809C19C: .4byte gUnknown_2036DFC + thumb_func_end sub_809C164 + + thumb_func_start sub_809C1A0 +sub_809C1A0: @ 809C1A0 + push {lr} + bl sub_809ABD8 + movs r0, 0x2 + bl sub_809AAB0 + ldr r0, _0809C1B8 @ =sub_8069B34 + bl sub_809AC04 + pop {r0} + bx r0 + .align 2, 0 +_0809C1B8: .4byte sub_8069B34 + thumb_func_end sub_809C1A0 + + thumb_func_start sub_809C1BC +sub_809C1BC: @ 809C1BC + push {lr} + bl sub_809ABD8 + movs r0, 0x3 + bl sub_809AAB0 + ldr r0, _0809C1D4 @ =sub_8069B34 + bl sub_809AC04 + pop {r0} + bx r0 + .align 2, 0 +_0809C1D4: .4byte sub_8069B34 + thumb_func_end sub_809C1BC + + thumb_func_start sub_809C1D8 +sub_809C1D8: @ 809C1D8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + mov r9, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + mov r10, r2 + ldr r2, _0809C26C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r1, 0x10] + subs r0, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r1, 0x12] + subs r0, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r4, [r1, 0xA] + movs r2, 0xC + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0809C29C + movs r2, 0 + lsls r5, 16 + str r5, [sp, 0xC] + lsls r0, r3, 16 + lsls r1, r4, 16 + asrs r0, 16 + str r0, [sp] + asrs r1, 16 + str r1, [sp, 0x4] + lsls r0, r1, 1 + mov r1, r9 + adds r7, r0, r1 +_0809C22C: + movs r4, 0 + lsls r2, 16 + mov r8, r2 + asrs r0, r2, 16 + ldr r2, [sp] + adds r6, r2, r0 +_0809C238: + ldr r0, [sp, 0xC] + asrs r1, r0, 16 + lsls r4, 16 + asrs r0, r4, 16 + adds r5, r1, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058E48 + movs r2, 0 + ldrsh r1, [r7, r2] + lsls r0, 16 + asrs r0, 16 + cmp r1, r0 + bne _0809C280 + ldr r0, [sp, 0x4] + cmp r0, 0x2 + beq _0809C270 + ldrh r0, [r7, 0x2] + mov r2, r10 + orrs r2, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058FA4 + b _0809C280 + .align 2, 0 +_0809C26C: .4byte gUnknown_3005090 +_0809C270: + mov r1, r9 + ldrh r0, [r1] + mov r2, r10 + orrs r2, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058FA4 +_0809C280: + movs r2, 0x80 + lsls r2, 9 + adds r0, r4, r2 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _0809C238 + adds r0, r2, 0 + add r0, r8 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _0809C22C + b _0809C324 +_0809C29C: + movs r2, 0 + lsls r5, 16 + str r5, [sp, 0xC] + lsls r0, r3, 16 + lsls r1, r4, 16 + asrs r0, 16 + str r0, [sp, 0x8] + asrs r7, r1, 16 +_0809C2AC: + movs r4, 0 + lsls r2, 16 + mov r8, r2 + asrs r0, r2, 16 + ldr r1, [sp, 0x8] + adds r6, r1, r0 +_0809C2B8: + ldr r2, [sp, 0xC] + asrs r1, r2, 16 + lsls r4, 16 + asrs r0, r4, 16 + adds r5, r1, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058E48 + movs r1, 0x2 + subs r1, r7 + lsls r1, 1 + add r1, r9 + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r0, 16 + asrs r0, 16 + cmp r1, r0 + bne _0809C30A + cmp r7, 0x2 + beq _0809C2FA + movs r0, 0x1 + subs r0, r7 + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + mov r2, r10 + orrs r2, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058FA4 + b _0809C30A +_0809C2FA: + mov r1, r9 + ldrh r0, [r1, 0x4] + mov r2, r10 + orrs r2, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8058FA4 +_0809C30A: + movs r2, 0x80 + lsls r2, 9 + adds r0, r4, r2 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _0809C2B8 + adds r0, r2, 0 + add r0, r8 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _0809C2AC +_0809C324: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809C1D8 + + thumb_func_start sub_809C334 +sub_809C334: @ 809C334 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _0809C35C @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0x1 + strh r0, [r4, 0x6] + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bhi _0809C3CE + lsls r0, 2 + ldr r1, _0809C360 @ =_0809C364 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C35C: .4byte gUnknown_3005098 +_0809C360: .4byte _0809C364 + .align 2, 0 +_0809C364: + .4byte _0809C380 + .4byte _0809C388 + .4byte _0809C390 + .4byte _0809C398 + .4byte _0809C3A0 + .4byte _0809C3B4 + .4byte _0809C3C4 +_0809C380: + ldr r1, _0809C384 @ =gUnknown_83DF0D4 + b _0809C3B6 + .align 2, 0 +_0809C384: .4byte gUnknown_83DF0D4 +_0809C388: + ldr r1, _0809C38C @ =gUnknown_83DF0DA + b _0809C3B6 + .align 2, 0 +_0809C38C: .4byte gUnknown_83DF0DA +_0809C390: + ldr r1, _0809C394 @ =gUnknown_83DF0E0 + b _0809C3A2 + .align 2, 0 +_0809C394: .4byte gUnknown_83DF0E0 +_0809C398: + ldr r1, _0809C39C @ =gUnknown_83DF0E6 + b _0809C3B6 + .align 2, 0 +_0809C39C: .4byte gUnknown_83DF0E6 +_0809C3A0: + ldr r1, _0809C3B0 @ =gUnknown_83DF0EC +_0809C3A2: + movs r2, 0xC0 + lsls r2, 4 + adds r0, r3, 0 + bl sub_809C1D8 + b _0809C3CE + .align 2, 0 +_0809C3B0: .4byte gUnknown_83DF0EC +_0809C3B4: + ldr r1, _0809C3C0 @ =gUnknown_83DF0F2 +_0809C3B6: + adds r0, r3, 0 + movs r2, 0 + bl sub_809C1D8 + b _0809C3CE + .align 2, 0 +_0809C3C0: .4byte gUnknown_83DF0F2 +_0809C3C4: + ldr r1, _0809C3F8 @ =gUnknown_83DF0F8 + adds r0, r3, 0 + movs r2, 0 + bl sub_809C1D8 +_0809C3CE: + ldrh r0, [r4] + adds r0, 0x1 + movs r1, 0x7 + ands r0, r1 + strh r0, [r4] + adds r5, r0, 0 + cmp r5, 0 + bne _0809C3F2 + bl sub_805A684 + movs r1, 0x2 + ldrsh r0, [r4, r1] + adds r0, 0x1 + movs r1, 0x3 + bl __modsi3 + strh r0, [r4, 0x2] + strh r5, [r4, 0x6] +_0809C3F2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C3F8: .4byte gUnknown_83DF0F8 + thumb_func_end sub_809C334 + + thumb_func_start sub_809C3FC +sub_809C3FC: @ 809C3FC + push {r4-r7,lr} + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + ldr r6, _0809C440 @ =sub_809C334 + adds r0, r6, 0 + movs r1, 0 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0809C444 @ =gUnknown_3005098 + adds r7, r0, r1 + adds r0, r7, 0 + adds r0, 0x8 + adds r1, r7, 0 + adds r1, 0xA + bl sub_805C538 + movs r0, 0 + strh r0, [r7] + strh r0, [r7, 0x2] + strh r5, [r7, 0x4] + adds r0, r4, 0 + bl _call_via_r6 + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809C440: .4byte sub_809C334 +_0809C444: .4byte gUnknown_3005098 + thumb_func_end sub_809C3FC + + thumb_func_start sub_809C448 +sub_809C448: @ 809C448 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_809C3FC + ldr r1, _0809C45C @ =gUnknown_2039984 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0809C45C: .4byte gUnknown_2039984 + thumb_func_end sub_809C448 + + thumb_func_start sub_809C460 +sub_809C460: @ 809C460 + push {lr} + ldr r0, _0809C470 @ =gUnknown_2039984 + ldrb r0, [r0] + bl sub_8077508 + pop {r0} + bx r0 + .align 2, 0 +_0809C470: .4byte gUnknown_2039984 + thumb_func_end sub_809C460 + + thumb_func_start sub_809C474 +sub_809C474: @ 809C474 + push {lr} + ldr r2, _0809C498 @ =gUnknown_3005090 + ldr r0, _0809C49C @ =gUnknown_2039984 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r2 + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0809C4A0 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0x2 + bne _0809C4A0 + movs r0, 0 + b _0809C4A2 + .align 2, 0 +_0809C498: .4byte gUnknown_3005090 +_0809C49C: .4byte gUnknown_2039984 +_0809C4A0: + movs r0, 0x1 +_0809C4A2: + pop {r1} + bx r1 + thumb_func_end sub_809C474 + + thumb_func_start sub_809C4A8 +sub_809C4A8: @ 809C4A8 + push {r4,lr} + ldr r0, _0809C4E0 @ =sub_809C500 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809C4E4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + adds r2, 0x8 + adds r1, r2 + adds r0, r1, 0x4 + adds r1, 0x6 + bl sub_805C538 + ldr r0, _0809C4E8 @ =gUnknown_20370C0 + ldrh r0, [r0] + cmp r0, 0 + bne _0809C4EC + ldrh r0, [r4, 0xC] + adds r0, 0x6 + b _0809C4F0 + .align 2, 0 +_0809C4E0: .4byte sub_809C500 +_0809C4E4: .4byte gUnknown_3005090 +_0809C4E8: .4byte gUnknown_20370C0 +_0809C4EC: + ldrh r0, [r4, 0xC] + subs r0, 0x1 +_0809C4F0: + strh r0, [r4, 0xC] + ldrh r0, [r4, 0xE] + subs r0, 0x5 + strh r0, [r4, 0xE] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_809C4A8 + + thumb_func_start sub_809C500 +sub_809C500: @ 809C500 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809C544 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0809C588 + ldrh r1, [r4, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0809C550 + movs r2, 0x4 + ldrsh r0, [r4, r2] + movs r2, 0x6 + ldrsh r1, [r4, r2] + ldr r2, _0809C548 @ =0x00000eb5 + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x2 + ldr r2, _0809C54C @ =0x00000eb7 + bl sub_8058FA4 + b _0809C56E + .align 2, 0 +_0809C544: .4byte gUnknown_3005098 +_0809C548: .4byte 0x00000eb5 +_0809C54C: .4byte 0x00000eb7 +_0809C550: + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + ldr r2, _0809C5EC @ =0x00000eb6 + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x2 + ldr r2, _0809C5F0 @ =0x00000eb8 + bl sub_8058FA4 +_0809C56E: + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x2 + bl sub_805A8E8 +_0809C588: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _0809C5E6 + movs r0, 0 + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bne _0809C5E6 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + ldr r2, _0809C5F4 @ =0x00000e8a + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x2 + ldr r2, _0809C5F8 @ =0x00000e96 + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x2 + bl sub_805A8E8 + adds r0, r5, 0 + bl sub_8077508 +_0809C5E6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C5EC: .4byte 0x00000eb6 +_0809C5F0: .4byte 0x00000eb8 +_0809C5F4: .4byte 0x00000e8a +_0809C5F8: .4byte 0x00000e96 + thumb_func_end sub_809C500 + + thumb_func_start sub_809C5FC +sub_809C5FC: @ 809C5FC + push {r4,lr} + ldr r0, _0809C638 @ =sub_809C640 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809C63C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + movs r0, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + adds r2, 0x8 + adds r1, r2 + adds r0, r1, 0x4 + adds r1, 0x6 + bl sub_805C538 + ldrh r0, [r4, 0xC] + adds r0, 0x4 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0xE] + subs r0, 0x5 + strh r0, [r4, 0xE] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C638: .4byte sub_809C640 +_0809C63C: .4byte gUnknown_3005090 + thumb_func_end sub_809C5FC + + thumb_func_start sub_809C640 +sub_809C640: @ 809C640 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0809C6A8 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0809C6F2 + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0809C6BA + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + ldr r2, _0809C6AC @ =0x00000e85 + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x1 + ldr r2, _0809C6B0 @ =0x00000eb4 + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x1 + bl sub_805A8E8 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bne _0809C6B4 + adds r0, r5, 0 + bl sub_8077508 + b _0809C70A + .align 2, 0 +_0809C6A8: .4byte gUnknown_3005098 +_0809C6AC: .4byte 0x00000e85 +_0809C6B0: .4byte 0x00000eb4 +_0809C6B4: + ldrh r0, [r4, 0x4] + subs r0, 0x1 + strh r0, [r4, 0x4] +_0809C6BA: + movs r2, 0x4 + ldrsh r0, [r4, r2] + movs r2, 0x6 + ldrsh r1, [r4, r2] + ldr r2, _0809C710 @ =0x00000eb9 + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x1 + ldr r2, _0809C714 @ =0x00000eba + bl sub_8058FA4 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl sub_805A8E8 + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + adds r1, 0x1 + bl sub_805A8E8 +_0809C6F2: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _0809C70A + movs r0, 0 + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] +_0809C70A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C710: .4byte 0x00000eb9 +_0809C714: .4byte 0x00000eba + thumb_func_end sub_809C640 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/slot_machine.s b/asm/slot_machine.s new file mode 100644 index 000000000..24c91e052 --- /dev/null +++ b/asm/slot_machine.s @@ -0,0 +1,4794 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813F804 +sub_813F804: @ 813F804 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 16 + lsrs r5, r0, 16 + bl sub_80773BC + ldr r4, _0813F828 @ =gUnknown_203F3A0 + movs r0, 0x54 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + bne _0813F82C + adds r0, r6, 0 + bl sub_8000544 + b _0813F840 + .align 2, 0 +_0813F828: .4byte gUnknown_203F3A0 +_0813F82C: + cmp r5, 0x5 + bls _0813F832 + movs r5, 0 +_0813F832: + strh r5, [r0, 0x4] + str r6, [r0] + bl sub_813F84C + ldr r0, _0813F848 @ =sub_813F898 + bl sub_8000544 +_0813F840: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813F848: .4byte sub_813F898 + thumb_func_end sub_813F804 + + thumb_func_start sub_813F84C +sub_813F84C: @ 813F84C + push {r4-r6,lr} + movs r1, 0 + strh r1, [r0, 0x6] + strh r1, [r0, 0xE] + adds r0, 0x50 + strh r1, [r0] + movs r3, 0 + ldr r6, _0813F894 @ =gUnknown_203F3A0 + movs r4, 0 + movs r5, 0x15 +_0813F860: + ldr r2, [r6] + lsls r1, r3, 2 + adds r0, r2, 0 + adds r0, 0x14 + adds r0, r1 + str r4, [r0] + lsls r1, r3, 1 + adds r0, r2, 0 + adds r0, 0x20 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x26 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x2C + adds r0, r1 + strh r5, [r0] + adds r3, 0x1 + cmp r3, 0x2 + ble _0813F860 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813F894: .4byte gUnknown_203F3A0 + thumb_func_end sub_813F84C + + thumb_func_start sub_813F898 +sub_813F898: @ 813F898 + push {r4,lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + ldr r0, _0813F8BC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _0813F8C0 + cmp r0, 0x1 + beq _0813F8EC + b _0813F916 + .align 2, 0 +_0813F8BC: .4byte gUnknown_30030F0 +_0813F8C0: + bl sub_814104C + cmp r0, 0 + beq _0813F8DC + ldr r0, _0813F8D8 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldr r0, [r0] + bl sub_8000544 + bl sub_813F92C + b _0813F916 + .align 2, 0 +_0813F8D8: .4byte gUnknown_203F3A0 +_0813F8DC: + movs r0, 0 + movs r1, 0 + bl sub_8141148 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0813F916 +_0813F8EC: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813F916 + ldr r0, _0813F91C @ =sub_813F964 + movs r1, 0 + bl sub_807741C + ldr r4, _0813F920 @ =gUnknown_203F3A0 + ldr r1, [r4] + strb r0, [r1, 0x10] + ldr r0, _0813F924 @ =sub_8140060 + movs r1, 0x1 + bl sub_807741C + ldr r1, [r4] + strb r0, [r1, 0x11] + ldr r0, _0813F928 @ =sub_813F94C + bl sub_8000544 +_0813F916: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813F91C: .4byte sub_813F964 +_0813F920: .4byte gUnknown_203F3A0 +_0813F924: .4byte sub_8140060 +_0813F928: .4byte sub_813F94C + thumb_func_end sub_813F898 + + thumb_func_start sub_813F92C +sub_813F92C: @ 813F92C + push {r4,lr} + bl sub_8141094 + ldr r4, _0813F948 @ =gUnknown_203F3A0 + ldr r0, [r4] + cmp r0, 0 + beq _0813F942 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0813F942: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813F948: .4byte gUnknown_203F3A0 + thumb_func_end sub_813F92C + + thumb_func_start sub_813F94C +sub_813F94C: @ 813F94C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_813F94C + + thumb_func_start sub_813F964 +sub_813F964: @ 813F964 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813F988 @ =gUnknown_3005098 + adds r6, r1, r0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x4 + bls _0813F97E + b _0813FBB8 +_0813F97E: + lsls r0, 2 + ldr r1, _0813F98C @ =_0813F990 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813F988: .4byte gUnknown_3005098 +_0813F98C: .4byte _0813F990 + .align 2, 0 +_0813F990: + .4byte _0813F9A4 + .4byte _0813FAA8 + .4byte _0813FAE4 + .4byte _0813FB08 + .4byte _0813FB48 +_0813F9A4: + bl sub_80D0554 + lsls r0, 16 + cmp r0, 0 + bne _0813F9BC + ldr r0, _0813F9B8 @ =sub_813FBC0 + bl sub_8140030 + b _0813FBB8 + .align 2, 0 +_0813F9B8: .4byte sub_813FBC0 +_0813F9BC: + ldr r1, _0813F9F4 @ =gUnknown_30030F0 + ldrh r2, [r1, 0x2E] + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _0813F9FC + ldr r0, _0813F9F8 @ =gUnknown_203F3A0 + ldr r1, [r0] + ldrh r0, [r1, 0xE] + adds r0, 0x1 + strh r0, [r1, 0xE] + movs r0, 0x1 + bl sub_80D05E4 + movs r0, 0x58 + bl sub_80722CC + movs r0, 0x8 + movs r1, 0 + bl sub_8141148 + movs r0, 0x2 + movs r1, 0x1 + bl sub_8141148 + movs r0, 0x1 + b _0813FBB6 + .align 2, 0 +_0813F9F4: .4byte gUnknown_30030F0 +_0813F9F8: .4byte gUnknown_203F3A0 +_0813F9FC: + movs r0, 0x80 + lsls r0, 1 + ands r0, r2 + cmp r0, 0 + beq _0813FA5C + ldr r5, _0813FA2C @ =gUnknown_203F3A0 + ldr r0, [r5] + ldrh r0, [r0, 0xE] + movs r7, 0x3 + subs r4, r7, r0 + bl sub_80D0554 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + blt _0813FA30 + ldr r0, [r5] + strh r7, [r0, 0xE] + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_80D05E4 + b _0813FA42 + .align 2, 0 +_0813FA2C: .4byte gUnknown_203F3A0 +_0813FA30: + bl sub_80D0554 + ldr r1, [r5] + ldrh r2, [r1, 0xE] + adds r0, r2 + strh r0, [r1, 0xE] + movs r0, 0 + bl sub_80D057C +_0813FA42: + movs r0, 0x58 + bl sub_80722CC + movs r0, 0x8 + movs r1, 0 + bl sub_8141148 + movs r0, 0x2 + movs r1, 0x1 + bl sub_8141148 + movs r0, 0x1 + b _0813FBB6 +_0813FA5C: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + beq _0813FA78 + ldr r0, _0813FA74 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0xE] + cmp r0, 0 + beq _0813FA78 + movs r0, 0x2 + b _0813FBB6 + .align 2, 0 +_0813FA74: .4byte gUnknown_203F3A0 +_0813FA78: + ldrh r1, [r1, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0813FA90 + ldr r0, _0813FA8C @ =sub_813FCAC + bl sub_8140030 + b _0813FBB8 + .align 2, 0 +_0813FA8C: .4byte sub_813FCAC +_0813FA90: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0813FA9A + b _0813FBB8 +_0813FA9A: + ldr r0, _0813FAA4 @ =sub_813FC2C + bl sub_8140030 + b _0813FBB8 + .align 2, 0 +_0813FAA4: .4byte sub_813FC2C +_0813FAA8: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + beq _0813FAB4 + b _0813FBB8 +_0813FAB4: + movs r0, 0x1 + bl sub_8141180 + adds r4, r0, 0 + cmp r4, 0 + beq _0813FAC2 + b _0813FBB8 +_0813FAC2: + ldr r0, _0813FADC @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0xE] + cmp r0, 0x3 + beq _0813FAD6 + bl sub_80D0554 + lsls r0, 16 + cmp r0, 0 + bne _0813FAE0 +_0813FAD6: + movs r0, 0x2 + b _0813FBB6 + .align 2, 0 +_0813FADC: .4byte gUnknown_203F3A0 +_0813FAE0: + strh r4, [r6] + b _0813FBB8 +_0813FAE4: + bl sub_811539C + bl sub_81409B4 + bl sub_8140148 + ldr r0, _0813FB04 @ =gUnknown_203F3A0 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x6] + movs r0, 0x3 + movs r1, 0 + bl sub_8141148 + b _0813FBB4 + .align 2, 0 +_0813FB04: .4byte gUnknown_203F3A0 +_0813FB08: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FBB8 + ldr r0, _0813FB40 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813FBB8 + movs r0, 0x18 + bl sub_80722CC + ldr r4, _0813FB44 @ =gUnknown_203F3A0 + ldr r0, [r4] + ldrh r1, [r0, 0x6] + adds r0, r1, 0 + bl sub_814016C + ldr r0, [r4] + ldrb r0, [r0, 0x6] + movs r1, 0 + bl sub_8141C30 + movs r0, 0x4 + b _0813FBB6 + .align 2, 0 +_0813FB40: .4byte gUnknown_30030F0 +_0813FB44: .4byte gUnknown_203F3A0 +_0813FB48: + ldr r5, _0813FB90 @ =gUnknown_203F3A0 + ldr r0, [r5] + ldrh r0, [r0, 0x6] + bl sub_81401A0 + cmp r0, 0 + bne _0813FBB8 + movs r0, 0 + bl sub_8141180 + adds r4, r0, 0 + cmp r4, 0 + bne _0813FBB8 + ldr r1, [r5] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bls _0813FBB4 + bl sub_8140A80 + ldr r1, [r5] + strh r0, [r1, 0xA] + strh r4, [r1, 0xE] + strh r4, [r1, 0x6] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0813FB98 + ldr r0, _0813FB94 @ =sub_813FD84 + bl sub_8140030 + b _0813FBB8 + .align 2, 0 +_0813FB90: .4byte gUnknown_203F3A0 +_0813FB94: .4byte sub_813FD84 +_0813FB98: + cmp r0, 0x6 + bne _0813FBA2 + movs r0, 0x1C + bl sub_8054E90 +_0813FBA2: + bl sub_8140A70 + ldr r0, _0813FBB0 @ =sub_813FE1C + bl sub_8140030 + b _0813FBB8 + .align 2, 0 +_0813FBB0: .4byte sub_813FE1C +_0813FBB4: + movs r0, 0x3 +_0813FBB6: + strh r0, [r6] +_0813FBB8: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_813F964 + + thumb_func_start sub_813FBC0 +sub_813FBC0: @ 813FBC0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813FBE4 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0813FBF8 + cmp r0, 0x1 + bgt _0813FBE8 + cmp r0, 0 + beq _0813FBEE + b _0813FC1C + .align 2, 0 +_0813FBE4: .4byte gUnknown_3005098 +_0813FBE8: + cmp r0, 0x2 + beq _0813FC0A + b _0813FC1C +_0813FBEE: + movs r0, 0x9 + movs r1, 0 + bl sub_8141148 + b _0813FC02 +_0813FBF8: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FC1C +_0813FC02: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0813FC1C +_0813FC0A: + ldr r0, _0813FC24 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xF3 + ands r0, r1 + cmp r0, 0 + beq _0813FC1C + ldr r0, _0813FC28 @ =sub_813FFD8 + bl sub_8140030 +_0813FC1C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813FC24: .4byte gUnknown_30030F0 +_0813FC28: .4byte sub_813FFD8 + thumb_func_end sub_813FBC0 + + thumb_func_start sub_813FC2C +sub_813FC2C: @ 813FC2C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813FC50 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0813FC62 + cmp r0, 0x1 + bgt _0813FC54 + cmp r0, 0 + beq _0813FC5E + b _0813FCA0 + .align 2, 0 +_0813FC50: .4byte gUnknown_3005098 +_0813FC54: + cmp r0, 0x2 + beq _0813FC6E + cmp r0, 0x3 + beq _0813FC90 + b _0813FCA0 +_0813FC5E: + movs r0, 0xE + b _0813FC7C +_0813FC62: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FCA0 + b _0813FC82 +_0813FC6E: + ldr r0, _0813FC8C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0813FCA0 + movs r0, 0xF +_0813FC7C: + movs r1, 0 + bl sub_8141148 +_0813FC82: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0813FCA0 + .align 2, 0 +_0813FC8C: .4byte gUnknown_30030F0 +_0813FC90: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FCA0 + ldr r0, _0813FCA8 @ =sub_813F964 + bl sub_8140030 +_0813FCA0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813FCA8: .4byte sub_813F964 + thumb_func_end sub_813FC2C + + thumb_func_start sub_813FCAC +sub_813FCAC: @ 813FCAC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813FCD0 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _0813FD78 + lsls r0, 2 + ldr r1, _0813FCD4 @ =_0813FCD8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813FCD0: .4byte gUnknown_3005098 +_0813FCD4: .4byte _0813FCD8 + .align 2, 0 +_0813FCD8: + .4byte _0813FCEC + .4byte _0813FCF6 + .4byte _0813FD08 + .4byte _0813FD52 + .4byte _0813FD68 +_0813FCEC: + movs r0, 0xA + movs r1, 0 + bl sub_8141148 + b _0813FD00 +_0813FCF6: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FD78 +_0813FD00: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0813FD78 +_0813FD08: + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0813FD28 + cmp r1, 0 + bgt _0813FD22 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0813FD44 + b _0813FD78 +_0813FD22: + cmp r1, 0x1 + beq _0813FD44 + b _0813FD78 +_0813FD28: + ldr r0, _0813FD40 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0xE] + bl sub_80D05A4 + movs r0, 0x8 + movs r1, 0 + bl sub_8141148 + movs r0, 0x3 + strh r0, [r4] + b _0813FD78 + .align 2, 0 +_0813FD40: .4byte gUnknown_203F3A0 +_0813FD44: + movs r0, 0xB + movs r1, 0 + bl sub_8141148 + movs r0, 0x4 + strh r0, [r4] + b _0813FD78 +_0813FD52: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FD78 + ldr r0, _0813FD64 @ =sub_813FFD8 + bl sub_8140030 + b _0813FD78 + .align 2, 0 +_0813FD64: .4byte sub_813FFD8 +_0813FD68: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FD78 + ldr r0, _0813FD80 @ =sub_813F964 + bl sub_8140030 +_0813FD78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813FD80: .4byte sub_813F964 + thumb_func_end sub_813FCAC + + thumb_func_start sub_813FD84 +sub_813FD84: @ 813FD84 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813FDA8 @ =gUnknown_3005098 + adds r5, r1, r0 + movs r0, 0 + ldrsh r4, [r5, r0] + cmp r4, 0x1 + beq _0813FDBE + cmp r4, 0x1 + bgt _0813FDAC + cmp r4, 0 + beq _0813FDB2 + b _0813FE10 + .align 2, 0 +_0813FDA8: .4byte gUnknown_3005098 +_0813FDAC: + cmp r4, 0x2 + beq _0813FDEC + b _0813FE10 +_0813FDB2: + movs r0, 0x6 + movs r1, 0 + bl sub_8141148 + strh r4, [r5, 0x2] + b _0813FDE4 +_0813FDBE: + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _0813FE10 + movs r0, 0x7 + movs r1, 0 + bl sub_8141148 + movs r0, 0x2 + movs r1, 0x1 + bl sub_8141148 + movs r0, 0xD + movs r1, 0x2 + bl sub_8141148 +_0813FDE4: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0813FE10 +_0813FDEC: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FE10 + movs r0, 0x1 + bl sub_8141180 + cmp r0, 0 + bne _0813FE10 + movs r0, 0x2 + bl sub_8141180 + cmp r0, 0 + bne _0813FE10 + ldr r0, _0813FE18 @ =sub_813F964 + bl sub_8140030 +_0813FE10: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813FE18: .4byte sub_813F964 + thumb_func_end sub_813FD84 + + thumb_func_start sub_813FE1C +sub_813FE1C: @ 813FE1C + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813FE40 @ =gUnknown_3005098 + adds r5, r1, r0 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x5 + bls _0813FE36 + b _0813FFCE +_0813FE36: + lsls r0, 2 + ldr r1, _0813FE44 @ =_0813FE48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813FE40: .4byte gUnknown_3005098 +_0813FE44: .4byte _0813FE48 + .align 2, 0 +_0813FE48: + .4byte _0813FE60 + .4byte _0813FEA0 + .4byte _0813FECC + .4byte _0813FF78 + .4byte _0813FF92 + .4byte _0813FFB4 +_0813FE60: + ldr r0, _0813FE7C @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0xA] + subs r0, 0x5 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0813FE80 + movs r0, 0x86 + lsls r0, 1 + bl sub_8071C60 + b _0813FE86 + .align 2, 0 +_0813FE7C: .4byte gUnknown_203F3A0 +_0813FE80: + ldr r0, _0813FE9C @ =0x0000010d + bl sub_8071C60 +_0813FE86: + movs r0, 0x8 + movs r1, 0 + bl sub_8141148 + movs r0, 0x4 + movs r1, 0x1 + bl sub_8141148 + movs r0, 0x8 + strh r0, [r5, 0x2] + b _0813FFAC + .align 2, 0 +_0813FE9C: .4byte 0x0000010d +_0813FEA0: + ldrh r0, [r5, 0x2] + adds r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x78 + bgt _0813FEB0 + b _0813FFCE +_0813FEB0: + movs r0, 0x8 + strh r0, [r5, 0x2] + ldr r0, _0813FEC8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813FFAC + movs r0, 0x2 + strh r0, [r5, 0x2] + b _0813FFAC + .align 2, 0 +_0813FEC8: .4byte gUnknown_30030F0 +_0813FECC: + movs r0, 0 + bl sub_8141180 + adds r6, r0, 0 + cmp r6, 0 + bne _0813FFCE + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _0813FF0C + ldr r0, _0813FF04 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0813FF0C + ldr r4, _0813FF08 @ =gUnknown_203F3A0 + ldr r0, [r4] + adds r0, 0x50 + ldrh r0, [r0] + bl sub_80D05A4 + ldr r0, [r4] + adds r0, 0x50 + strh r6, [r0] + b _0813FF58 + .align 2, 0 +_0813FF04: .4byte gUnknown_30030F0 +_0813FF08: .4byte gUnknown_203F3A0 +_0813FF0C: + ldrh r0, [r5, 0x2] + subs r0, 0x1 + strh r0, [r5, 0x2] + lsls r0, 16 + cmp r0, 0 + bne _0813FF58 + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _0813FF28 + movs r0, 0x15 + bl sub_80722CC +_0813FF28: + ldr r4, _0813FF70 @ =gUnknown_203F3A0 + ldr r0, [r4] + adds r0, 0x50 + ldrh r0, [r0] + cmp r0, 0 + beq _0813FF44 + movs r0, 0x1 + bl sub_80D05A4 + ldr r1, [r4] + adds r1, 0x50 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_0813FF44: + movs r0, 0x8 + strh r0, [r5, 0x2] + ldr r0, _0813FF74 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813FF58 + movs r0, 0x2 + strh r0, [r5, 0x2] +_0813FF58: + movs r0, 0x8 + movs r1, 0 + bl sub_8141148 + ldr r0, _0813FF70 @ =gUnknown_203F3A0 + ldr r0, [r0] + adds r0, 0x50 + ldrh r0, [r0] + cmp r0, 0 + bne _0813FFCE + b _0813FFAC + .align 2, 0 +_0813FF70: .4byte gUnknown_203F3A0 +_0813FF74: .4byte gUnknown_30030F0 +_0813FF78: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _0813FFCE + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FFCE + movs r0, 0x5 + movs r1, 0 + b _0813FFA8 +_0813FF92: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FFCE + movs r0, 0x2 + movs r1, 0 + bl sub_8141148 + movs r0, 0xD + movs r1, 0x1 +_0813FFA8: + bl sub_8141148 +_0813FFAC: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0813FFCE +_0813FFB4: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _0813FFCE + movs r0, 0x1 + bl sub_8141180 + cmp r0, 0 + bne _0813FFCE + ldr r0, _0813FFD4 @ =sub_813F964 + bl sub_8140030 +_0813FFCE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813FFD4: .4byte sub_813F964 + thumb_func_end sub_813FE1C + + thumb_func_start sub_813FFD8 +sub_813FFD8: @ 813FFD8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0813FFF8 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813FFFC + cmp r0, 0x1 + beq _0814000C + b _08140024 + .align 2, 0 +_0813FFF8: .4byte gUnknown_3005098 +_0813FFFC: + movs r0, 0x1 + movs r1, 0 + bl sub_8141148 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _08140024 +_0814000C: + movs r0, 0 + bl sub_8141180 + cmp r0, 0 + bne _08140024 + ldr r0, _0814002C @ =gUnknown_203F3A0 + ldr r0, [r0] + ldr r0, [r0] + bl sub_8000544 + bl sub_813F92C +_08140024: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814002C: .4byte gUnknown_203F3A0 + thumb_func_end sub_813FFD8 + + thumb_func_start sub_8140030 +sub_8140030: @ 8140030 + push {r4,lr} + ldr r4, _08140058 @ =gUnknown_3005090 + ldr r1, _0814005C @ =gUnknown_203F3A0 + ldr r3, [r1] + ldrb r2, [r3, 0x10] + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r4 + str r0, [r1] + ldrb r1, [r3, 0x10] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + movs r1, 0 + strh r1, [r0, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140058: .4byte gUnknown_3005090 +_0814005C: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140030 + + thumb_func_start sub_8140060 +sub_8140060: @ 8140060 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + mov r12, r0 + ldr r1, _08140144 @ =gUnknown_203F3A0 + mov r10, r1 + mov r8, r10 + mov r9, r0 + movs r6, 0 + movs r7, 0 +_0814007A: + mov r2, r8 + ldr r3, [r2] + adds r0, r3, 0 + adds r0, 0x14 + adds r0, r7 + ldr r0, [r0] + mov r1, r12 + lsls r4, r1, 1 + cmp r0, 0 + bne _0814009C + adds r0, r3, 0 + adds r0, 0x26 + adds r0, r6 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + beq _0814011A +_0814009C: + adds r0, r3, 0 + adds r0, 0x26 + adds r2, r0, r6 + ldrh r5, [r2] + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _081400C4 + adds r1, r3, 0 + adds r1, 0x20 + adds r1, r4 + adds r0, r3, 0 + adds r0, 0x2C + adds r0, r4 + movs r4, 0 + ldrsh r1, [r1, r4] + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r1, r0 + beq _08140104 +_081400C4: + adds r0, r5, 0x1 + movs r1, 0 + strh r0, [r2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _081400EA + strh r1, [r2] + adds r0, r3, 0 + adds r0, 0x20 + adds r1, r0, r6 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bge _081400EA + movs r0, 0x14 + strh r0, [r1] +_081400EA: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0x20 + adds r1, r6 + adds r0, 0x2C + adds r0, r6 + movs r2, 0 + ldrsh r1, [r1, r2] + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r1, r0 + bne _0814011A +_08140104: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0x2C + adds r1, r6 + movs r2, 0x15 + strh r2, [r1] + adds r0, 0x14 + adds r0, r7 + mov r2, r9 + str r2, [r0] +_0814011A: + adds r6, 0x2 + adds r7, 0x4 + movs r4, 0x1 + add r12, r4 + mov r0, r12 + cmp r0, 0x2 + ble _0814007A + mov r2, r10 + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0x20 + adds r1, 0x26 + bl sub_8140D7C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08140144: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140060 + + thumb_func_start sub_8140148 +sub_8140148: @ 8140148 + push {r4,lr} + movs r2, 0 + ldr r4, _08140168 @ =gUnknown_203F3A0 + movs r3, 0x1 +_08140150: + ldr r0, [r4] + lsls r1, r2, 2 + adds r0, 0x14 + adds r0, r1 + str r3, [r0] + adds r2, 0x1 + cmp r2, 0x2 + ble _08140150 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140168: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140148 + + thumb_func_start sub_814016C +sub_814016C: @ 814016C + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + adds r2, r1, 0 + cmp r1, 0x1 + beq _08140192 + cmp r1, 0x1 + bgt _08140186 + cmp r1, 0 + beq _0814018C + b _0814019C +_08140186: + cmp r2, 0x2 + beq _08140198 + b _0814019C +_0814018C: + bl sub_81401F0 + b _0814019C +_08140192: + bl sub_81403BC + b _0814019C +_08140198: + bl sub_81404B8 +_0814019C: + pop {r0} + bx r0 + thumb_func_end sub_814016C + + thumb_func_start sub_81401A0 +sub_81401A0: @ 81401A0 + lsls r0, 16 + ldr r1, _081401B0 @ =gUnknown_203F3A0 + ldr r1, [r1] + lsrs r0, 14 + adds r1, 0x14 + adds r1, r0 + ldr r0, [r1] + bx lr + .align 2, 0 +_081401B0: .4byte gUnknown_203F3A0 + thumb_func_end sub_81401A0 + + thumb_func_start sub_81401B4 +sub_81401B4: @ 81401B4 + push {lr} + lsls r0, 16 + ldr r1, _081401E8 @ =gUnknown_203F3A0 + ldr r2, [r1] + lsrs r0, 15 + adds r1, r2, 0 + adds r1, 0x20 + adds r1, r0 + ldrh r1, [r1] + adds r2, 0x26 + adds r2, r0 + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _081401E0 + lsls r0, r1, 16 + ldr r1, _081401EC @ =0xffff0000 + adds r0, r1 + lsrs r1, r0, 16 + cmp r0, 0 + bge _081401E0 + movs r1, 0x14 +_081401E0: + lsls r0, r1, 16 + asrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_081401E8: .4byte gUnknown_203F3A0 +_081401EC: .4byte 0xffff0000 + thumb_func_end sub_81401B4 + + thumb_func_start sub_81401F0 +sub_81401F0: @ 81401F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl sub_81401B4 + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0 + mov r8, r0 + ldr r0, _0814023C @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0x8] + cmp r0, 0 + bne _08140294 + mov r2, r9 + cmp r2, 0 + bne _08140294 + movs r7, 0 + lsls r1, 16 + str r1, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x8] + mov r10, r0 +_0814022A: + movs r6, 0 + ldr r1, [sp, 0xC] + asrs r0, r1, 16 + subs r0, r7 + adds r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + adds r5, r7, 0x1 + b _08140248 + .align 2, 0 +_0814023C: .4byte gUnknown_203F3A0 +_08140240: + adds r6, 0x1 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 +_08140248: + cmp r6, 0x2 + bgt _0814026E + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _08140256 + movs r2, 0 +_08140256: + lsls r0, r2, 16 + asrs r4, r0, 16 + mov r2, r10 + adds r0, r4, r2 + ldr r1, _08140284 @ =gUnknown_8464926 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + bl sub_81408F4 + cmp r0, 0 + beq _08140240 +_0814026E: + cmp r6, 0x3 + bne _0814027C + mov r0, sp + add r0, r8 + strb r7, [r0] + movs r2, 0x1 + add r8, r2 +_0814027C: + adds r7, r5, 0 + cmp r7, 0x4 + ble _0814022A + b _08140348 + .align 2, 0 +_08140284: .4byte gUnknown_8464926 +_08140288: + mov r1, sp + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + mov r8, r0 + b _081402FE +_08140294: + ldr r0, _08140364 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0x8] + cmp r0, 0x1 + bne _081402AE + lsls r2, r1, 16 + str r2, [sp, 0xC] + mov r0, r9 + lsls r0, 1 + str r0, [sp, 0x8] + mov r2, r9 + cmp r2, 0 + bne _08140348 +_081402AE: + movs r7, 0 + lsls r1, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r1, r2 + lsrs r2, r0, 16 + str r1, [sp, 0xC] + mov r0, r9 + lsls r6, r0, 2 + lsls r0, 1 + str r0, [sp, 0x8] + ldr r1, _08140368 @ =gUnknown_8464926 + mov r10, r1 + mov r1, r9 + adds r0, r6, r1 + lsls r0, 2 + adds r5, r0, r1 +_081402D0: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _081402DA + movs r2, 0 +_081402DA: + ldr r0, _08140364 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0x8] + lsls r1, r2, 16 + asrs r4, r1, 16 + adds r1, r4, r5 + add r1, r10 + ldrb r1, [r1] + bl sub_81408F4 + cmp r0, 0 + bne _08140288 + adds r7, 0x1 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r7, 0x2 + ble _081402D0 +_081402FE: + movs r7, 0 + ldr r0, [sp, 0xC] + lsrs r2, r0, 16 + ldr r1, _08140368 @ =gUnknown_8464926 + mov r10, r1 + mov r1, r9 + adds r0, r6, r1 + lsls r0, 2 + adds r6, r0, r1 +_08140310: + lsls r0, r2, 16 + cmp r0, 0 + bge _08140318 + movs r2, 0x14 +_08140318: + ldr r0, _08140364 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r0, [r0, 0x8] + lsls r1, r2, 16 + asrs r4, r1, 16 + adds r1, r4, r6 + add r1, r10 + ldrb r1, [r1] + bl sub_81408F4 + adds r5, r7, 0x1 + cmp r0, 0 + beq _0814033C + mov r0, sp + add r0, r8 + strb r5, [r0] + movs r2, 0x1 + add r8, r2 +_0814033C: + adds r7, r5, 0 + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r7, 0x3 + ble _08140310 +_08140348: + mov r0, r8 + cmp r0, 0 + bne _0814036C + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 16 + lsrs r2, r0, 16 + b _0814037E + .align 2, 0 +_08140364: .4byte gUnknown_203F3A0 +_08140368: .4byte gUnknown_8464926 +_0814036C: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + mov r1, r8 + bl __modsi3 + add r0, sp + ldrb r2, [r0] +_0814037E: + ldr r0, [sp, 0xC] + asrs r1, r0, 16 + lsls r0, r2, 16 + asrs r0, 16 + subs r1, r0 + lsls r1, 16 + lsrs r2, r1, 16 + asrs r0, r1, 16 + cmp r0, 0 + bge _08140398 + adds r0, 0x15 + lsls r0, 16 + lsrs r2, r0, 16 +_08140398: + ldr r0, _081403B8 @ =gUnknown_203F3A0 + ldr r0, [r0] + mov r1, r9 + strh r1, [r0, 0x32] + adds r0, 0x2C + ldr r1, [sp, 0x8] + adds r0, r1 + strh r2, [r0] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081403B8: .4byte gUnknown_203F3A0 + thumb_func_end sub_81401F0 + + thumb_func_start sub_81403BC +sub_81403BC: @ 81403BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _08140470 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r1, [r0, 0x32] + lsls r7, r1, 16 + asrs r1, r7, 15 + adds r0, 0x20 + adds r0, r1 + ldrh r0, [r0] + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _081403EC + movs r4, 0 +_081403EC: + mov r0, r8 + bl sub_81401B4 + lsls r1, r0, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r1, r2 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _08140404 + movs r2, 0 +_08140404: + movs r6, 0 + movs r5, 0 + mov r10, r7 + lsls r4, 16 + mov r9, r4 + str r1, [sp, 0x10] + mov r0, r8 + lsls r0, 1 + str r0, [sp, 0xC] +_08140416: + lsls r0, r2, 16 + asrs r4, r0, 16 + ldr r7, _08140470 @ =gUnknown_203F3A0 + ldr r0, [r7] + ldrh r0, [r0, 0x8] + str r0, [sp] + mov r1, r10 + asrs r0, r1, 16 + mov r2, r9 + asrs r1, r2, 16 + mov r2, r8 + adds r3, r4, 0 + bl sub_814054C + cmp r0, 0 + beq _08140440 + mov r0, sp + adds r0, r6 + adds r0, 0x4 + strb r5, [r0] + adds r6, 0x1 +_08140440: + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r0, 0 + bge _0814044C + movs r2, 0x14 +_0814044C: + adds r5, 0x1 + cmp r5, 0x4 + ble _08140416 + cmp r6, 0 + bne _08140474 + ldr r0, [r7] + str r6, [r0, 0x38] + ldrh r0, [r0, 0x8] + subs r0, 0x5 + lsls r0, 16 + lsrs r0, 16 + movs r2, 0 + adds r3, r7, 0 + cmp r0, 0x1 + bhi _08140480 + movs r2, 0x4 + b _08140480 + .align 2, 0 +_08140470: .4byte gUnknown_203F3A0 +_08140474: + ldr r0, [r7] + movs r1, 0x1 + str r1, [r0, 0x38] + add r0, sp, 0x4 + ldrb r2, [r0] + adds r3, r7, 0 +_08140480: + ldr r0, [sp, 0x10] + asrs r1, r0, 16 + lsls r0, r2, 16 + asrs r0, 16 + subs r1, r0 + lsls r1, 16 + lsrs r2, r1, 16 + asrs r0, r1, 16 + cmp r0, 0 + bge _0814049A + adds r0, 0x15 + lsls r0, 16 + lsrs r2, r0, 16 +_0814049A: + ldr r0, [r3] + mov r1, r8 + strh r1, [r0, 0x34] + adds r0, 0x2C + ldr r1, [sp, 0xC] + adds r0, r1 + strh r2, [r0] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81403BC + + thumb_func_start sub_81404B8 +sub_81404B8: @ 81404B8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + bl sub_81401B4 + lsls r0, 16 + asrs r0, 16 + mov r9, r0 + mov r4, r9 + movs r6, 0 + movs r5, 0 +_081404D8: + ldr r7, _0814051C @ =gUnknown_203F3A0 + ldr r0, [r7] + ldrh r2, [r0, 0x8] + mov r0, r8 + adds r1, r4, 0 + bl sub_81406E8 + cmp r0, 0 + beq _081404F2 + mov r1, sp + adds r0, r1, r6 + strb r5, [r0] + adds r6, 0x1 +_081404F2: + subs r4, 0x1 + cmp r4, 0 + bge _081404FA + movs r4, 0x14 +_081404FA: + adds r5, 0x1 + cmp r5, 0x4 + ble _081404D8 + cmp r6, 0 + bne _08140520 + ldr r0, [r7] + ldrh r0, [r0, 0x8] + subs r0, 0x5 + lsls r0, 16 + lsrs r0, 16 + movs r2, 0 + adds r1, r7, 0 + cmp r0, 0x1 + bhi _08140526 + movs r2, 0x4 + b _08140526 + .align 2, 0 +_0814051C: .4byte gUnknown_203F3A0 +_08140520: + mov r0, sp + ldrb r2, [r0] + adds r1, r7, 0 +_08140526: + mov r3, r9 + subs r2, r3, r2 + cmp r2, 0 + bge _08140530 + adds r2, 0x15 +_08140530: + ldr r0, [r1] + mov r3, r8 + lsls r1, r3, 1 + adds r0, 0x2C + adds r0, r1 + strh r2, [r0] + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81404B8 + + thumb_func_start sub_814054C +sub_814054C: @ 814054C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r7, r0, 0 + adds r6, r1, 0 + mov r8, r2 + adds r5, r3, 0 + ldr r0, [sp, 0x34] + mov r9, r0 + mov r0, sp + movs r1, 0 + movs r2, 0x9 + bl memset + movs r1, 0x7 + add r0, sp, 0x8 +_08140572: + strb r1, [r0] + subs r0, 0x1 + cmp r0, sp + bge _08140572 + movs r4, 0 + lsls r2, r7, 1 + lsls r0, r7, 2 + mov r1, r8 + lsls r1, 1 + str r1, [sp, 0x10] + mov r3, r8 + lsls r1, r3, 2 + ldr r3, _081405E8 @ =gUnknown_8464926 + mov r12, r3 + adds r0, r7 + lsls r0, 2 + adds r0, r7 + mov r10, r0 + adds r2, r7 + add r2, sp + ldr r3, [sp, 0x10] + add r3, r8 + add r1, r8 + lsls r1, 2 + add r1, r8 + str r1, [sp, 0xC] + add r3, sp +_081405A8: + mov r1, r10 + adds r0, r6, r1 + add r0, r12 + ldrb r0, [r0] + strb r0, [r2] + ldr r1, [sp, 0xC] + adds r0, r5, r1 + add r0, r12 + ldrb r0, [r0] + strb r0, [r3] + adds r6, 0x1 + cmp r6, 0x14 + ble _081405C4 + movs r6, 0 +_081405C4: + adds r5, 0x1 + cmp r5, 0x14 + ble _081405CC + movs r5, 0 +_081405CC: + adds r2, 0x1 + adds r3, 0x1 + adds r4, 0x1 + cmp r4, 0x2 + ble _081405A8 + mov r3, r9 + cmp r3, 0x1 + beq _08140630 + cmp r3, 0x1 + bgt _081405EC + cmp r3, 0 + beq _081405F4 + b _081406A8 + .align 2, 0 +_081405E8: .4byte gUnknown_8464926 +_081405EC: + mov r5, r9 + cmp r5, 0x2 + beq _08140680 + b _081406A8 +_081405F4: + movs r4, 0 +_081405F6: + mov r1, sp + adds r0, r1, r4 + ldrb r1, [r0] + movs r0, 0x1 + bl sub_81408F4 + cmp r0, 0 + bne _081406D2 + adds r4, 0x1 + cmp r4, 0x2 + ble _081405F6 + movs r4, 0 + ldr r3, _0814062C @ =gUnknown_8464890 +_08140610: + ldrb r0, [r3] + mov r5, sp + adds r2, r5, r0 + ldrb r0, [r3, 0x1] + adds r1, r5, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _081406A4 + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0xE + ble _08140610 + b _081406D2 + .align 2, 0 +_0814062C: .4byte gUnknown_8464890 +_08140630: + cmp r7, 0 + beq _0814063A + mov r0, r8 + cmp r0, 0 + bne _081406A4 +_0814063A: + cmp r7, 0x1 + beq _08140644 + mov r1, r8 + cmp r1, 0x1 + bne _08140662 +_08140644: + movs r4, 0 + ldr r3, _0814067C @ =gUnknown_8464890 +_08140648: + ldrb r0, [r3] + mov r5, sp + adds r2, r5, r0 + ldrb r0, [r3, 0x1] + adds r1, r5, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _081406D2 + adds r3, 0x6 + adds r4, 0x3 + cmp r4, 0xE + ble _08140648 +_08140662: + movs r4, 0 +_08140664: + mov r1, sp + adds r0, r1, r4 + ldrb r1, [r0] + mov r0, r9 + bl sub_81408F4 + cmp r0, 0 + bne _081406A4 + adds r4, 0x1 + cmp r4, 0x2 + ble _08140664 + b _081406D2 + .align 2, 0 +_0814067C: .4byte gUnknown_8464890 +_08140680: + cmp r7, 0x2 + beq _0814068A + mov r3, r8 + cmp r3, 0x2 + bne _081406A8 +_0814068A: + movs r4, 0 +_0814068C: + mov r5, sp + adds r0, r5, r4 + ldrb r1, [r0] + mov r0, r9 + bl sub_81408F4 + cmp r0, 0 + bne _081406A4 + adds r4, 0x1 + cmp r4, 0x8 + ble _0814068C + b _081406D2 +_081406A4: + movs r0, 0x1 + b _081406D4 +_081406A8: + movs r4, 0 + ldr r5, _081406E4 @ =gUnknown_8464890 +_081406AC: + ldrb r0, [r5] + mov r1, sp + adds r2, r1, r0 + ldrb r0, [r5, 0x1] + adds r1, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _081406CA + adds r1, r0, 0 + mov r0, r9 + bl sub_81408F4 + cmp r0, 0 + bne _081406A4 +_081406CA: + adds r5, 0x2 + adds r4, 0x1 + cmp r4, 0xE + ble _081406AC +_081406D2: + movs r0, 0 +_081406D4: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081406E4: .4byte gUnknown_8464890 + thumb_func_end sub_814054C + + thumb_func_start sub_81406E8 +sub_81406E8: @ 81406E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r7, r0, 0 + adds r5, r1, 0 + mov r8, r2 + ldr r0, _081407C8 @ =gUnknown_203F3A0 + ldr r2, [r0] + movs r1, 0x32 + ldrsh r0, [r2, r1] + lsls r0, 1 + adds r1, r2, 0 + adds r1, 0x20 + adds r0, r1, r0 + movs r3, 0 + ldrsh r0, [r0, r3] + adds r6, r0, 0x1 + movs r3, 0x34 + ldrsh r0, [r2, r3] + lsls r0, 1 + adds r1, r0 + movs r3, 0 + ldrsh r0, [r1, r3] + adds r3, r0, 0x1 + adds r5, 0x1 + cmp r6, 0x14 + ble _08140726 + movs r6, 0 +_08140726: + cmp r3, 0x14 + ble _0814072C + movs r3, 0 +_0814072C: + cmp r5, 0x14 + ble _08140732 + movs r5, 0 +_08140732: + movs r4, 0 + lsls r1, r7, 1 + lsls r0, r7, 2 + mov r9, r2 + ldr r2, _081407CC @ =gUnknown_8464926 + mov r10, r2 + adds r1, r7 + add r1, sp + mov r12, r1 + adds r0, r7 + lsls r0, 2 + adds r0, r7 + str r0, [sp, 0xC] +_0814074C: + mov r7, r9 + movs r0, 0x32 + ldrsh r1, [r7, r0] + lsls r0, r1, 1 + adds r0, r1 + adds r0, r4 + mov r7, sp + adds r2, r7, r0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r1 + adds r0, r6, r0 + add r0, r10 + ldrb r0, [r0] + strb r0, [r2] + mov r0, r9 + movs r2, 0x34 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + adds r0, r4 + adds r2, r7, r0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r1 + adds r0, r3, r0 + add r0, r10 + ldrb r0, [r0] + strb r0, [r2] + ldr r7, [sp, 0xC] + adds r0, r5, r7 + add r0, r10 + ldrb r0, [r0] + mov r1, r12 + strb r0, [r1] + adds r6, 0x1 + cmp r6, 0x14 + ble _0814079E + movs r6, 0 +_0814079E: + adds r3, 0x1 + cmp r3, 0x14 + ble _081407A6 + movs r3, 0 +_081407A6: + adds r5, 0x1 + cmp r5, 0x14 + ble _081407AE + movs r5, 0 +_081407AE: + movs r2, 0x1 + add r12, r2 + adds r4, 0x1 + cmp r4, 0x2 + ble _0814074C + mov r3, r8 + cmp r3, 0x1 + beq _08140828 + cmp r3, 0x1 + bgt _081407D0 + cmp r3, 0 + beq _081407D8 + b _081408A0 + .align 2, 0 +_081407C8: .4byte gUnknown_203F3A0 +_081407CC: .4byte gUnknown_8464926 +_081407D0: + mov r6, r8 + cmp r6, 0x2 + beq _08140870 + b _081408A0 +_081407D8: + movs r4, 0 +_081407DA: + mov r7, sp + adds r0, r7, r4 + ldrb r1, [r0] + movs r0, 0x1 + bl sub_81408F4 + cmp r0, 0 + bne _081408DC + adds r4, 0x1 + cmp r4, 0x2 + ble _081407DA + movs r4, 0 + ldr r2, _08140824 @ =gUnknown_84648AE + movs r3, 0 + adds r5, r2, 0x2 +_081407F8: + ldrb r0, [r2] + mov r6, sp + adds r1, r6, r0 + ldrb r0, [r2, 0x1] + add r0, sp + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _08140816 + adds r0, r3, r5 + ldrb r0, [r0] + add r0, sp + ldrb r0, [r0] + cmp r1, r0 + beq _081408DC +_08140816: + adds r2, 0x3 + adds r3, 0x3 + adds r4, 0x1 + cmp r4, 0x4 + ble _081407F8 +_08140820: + movs r0, 0x1 + b _081408DE + .align 2, 0 +_08140824: .4byte gUnknown_84648AE +_08140828: + movs r4, 0 + ldr r5, _0814086C @ =gUnknown_84648AE +_0814082C: + ldrb r0, [r5] + mov r7, sp + adds r2, r7, r0 + ldrb r0, [r5, 0x1] + adds r1, r7, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _0814084A + adds r1, r0, 0 + mov r0, r8 + bl sub_81408F4 + cmp r0, 0 + bne _081408DC +_0814084A: + adds r5, 0x3 + adds r4, 0x1 + cmp r4, 0x4 + ble _0814082C + movs r4, 0 +_08140854: + mov r1, sp + adds r0, r1, r4 + ldrb r1, [r0] + mov r0, r8 + bl sub_81408F4 + cmp r0, 0 + bne _08140820 + adds r4, 0x1 + cmp r4, 0x2 + ble _08140854 + b _081408DC + .align 2, 0 +_0814086C: .4byte gUnknown_84648AE +_08140870: + movs r4, 0 + ldr r5, _0814089C @ =gUnknown_84648AE +_08140874: + ldrb r0, [r5] + mov r3, sp + adds r2, r3, r0 + ldrb r0, [r5, 0x1] + adds r1, r3, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _08140892 + adds r1, r0, 0 + mov r0, r8 + bl sub_81408F4 + cmp r0, 0 + bne _08140820 +_08140892: + adds r5, 0x3 + adds r4, 0x1 + cmp r4, 0x4 + ble _08140874 + b _081408DC + .align 2, 0 +_0814089C: .4byte gUnknown_84648AE +_081408A0: + movs r4, 0 + ldr r5, _081408F0 @ =gUnknown_84648AE + adds r7, r5, 0 + movs r6, 0 +_081408A8: + ldrb r0, [r5] + mov r1, sp + adds r2, r1, r0 + adds r0, r7, 0x1 + adds r0, r6, r0 + ldrb r0, [r0] + add r0, sp + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _081408D2 + ldrb r0, [r5, 0x2] + add r0, sp + ldrb r0, [r0] + cmp r1, r0 + bne _081408D2 + mov r0, r8 + bl sub_81408F4 + cmp r0, 0 + bne _08140820 +_081408D2: + adds r5, 0x3 + adds r6, 0x3 + adds r4, 0x1 + cmp r4, 0x4 + ble _081408A8 +_081408DC: + movs r0, 0 +_081408DE: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081408F0: .4byte gUnknown_84648AE + thumb_func_end sub_81406E8 + + thumb_func_start sub_81408F4 +sub_81408F4: @ 81408F4 + push {lr} + adds r2, r1, 0 + cmp r0, 0x6 + bhi _08140966 + lsls r0, 2 + ldr r1, _08140908 @ =_0814090C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08140908: .4byte _0814090C + .align 2, 0 +_0814090C: + .4byte _08140928 + .4byte _08140934 + .4byte _08140934 + .4byte _0814093E + .4byte _08140944 + .4byte _08140952 + .4byte _0814095C +_08140928: + movs r1, 0x4 + eors r1, r2 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + b _08140968 +_08140934: + movs r0, 0 + cmp r2, 0x4 + bne _08140968 + movs r0, 0x1 + b _08140968 +_0814093E: + movs r1, 0 + subs r0, r2, 0x5 + b _08140948 +_08140944: + movs r1, 0 + subs r0, r2, 0x2 +_08140948: + cmp r0, 0x1 + bhi _0814094E + movs r1, 0x1 +_0814094E: + adds r0, r1, 0 + b _08140968 +_08140952: + movs r0, 0 + cmp r2, 0x1 + bne _08140968 + movs r0, 0x1 + b _08140968 +_0814095C: + movs r0, 0 + cmp r2, 0 + bne _08140968 + movs r0, 0x1 + b _08140968 +_08140966: + movs r0, 0 +_08140968: + pop {r1} + bx r1 + thumb_func_end sub_81408F4 + + thumb_func_start sub_814096C +sub_814096C: @ 814096C + push {lr} + cmp r0, 0x6 + bhi _0814099C + lsls r0, 2 + ldr r1, _0814097C @ =_08140980 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814097C: .4byte _08140980 + .align 2, 0 +_08140980: + .4byte _081409AC + .4byte _081409A8 + .4byte _081409A4 + .4byte _081409A4 + .4byte _0814099C + .4byte _081409A0 + .4byte _081409A0 +_0814099C: + movs r0, 0x1 + b _081409AE +_081409A0: + movs r0, 0x3 + b _081409AE +_081409A4: + movs r0, 0x4 + b _081409AE +_081409A8: + movs r0, 0x5 + b _081409AE +_081409AC: + movs r0, 0x6 +_081409AE: + pop {r1} + bx r1 + thumb_func_end sub_814096C + + thumb_func_start sub_81409B4 +sub_81409B4: @ 81409B4 + push {r4-r6,lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r2, r0, 18 + ldr r0, _08140A60 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + ldr r1, _08140A64 @ =gUnknown_84648D2 + adds r4, r0, r1 + movs r5, 0 + ldrh r0, [r4] + cmp r2, r0 + bcc _081409E6 + adds r0, r4, 0 +_081409D8: + adds r0, 0x2 + adds r5, 0x1 + cmp r5, 0x5 + bgt _081409E6 + ldrh r1, [r0] + cmp r2, r1 + bcs _081409D8 +_081409E6: + ldr r6, _08140A60 @ =gUnknown_203F3A0 + ldr r1, [r6] + ldrh r0, [r1, 0x8] + cmp r0, 0x4 + bhi _08140A5A + ldrh r0, [r1, 0xC] + cmp r0, 0 + bne _08140A22 + bl sub_8044EC8 + ldr r1, _08140A68 @ =0x00003fff + ands r1, r0 + ldrh r4, [r4, 0xC] + cmp r1, r4 + bcs _08140A18 + ldr r4, [r6] + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + movs r0, 0x3C + cmp r1, 0 + beq _08140A16 + movs r0, 0x5 +_08140A16: + strh r0, [r4, 0xC] +_08140A18: + ldr r0, _08140A60 @ =gUnknown_203F3A0 + ldr r1, [r0] + ldrh r1, [r1, 0xC] + cmp r1, 0 + beq _08140A56 +_08140A22: + cmp r5, 0 + bne _08140A4A + bl sub_8044EC8 + ldr r1, _08140A68 @ =0x00003fff + ands r1, r0 + ldr r0, _08140A6C @ =0x00002ccb + cmp r1, r0 + bhi _08140A4A + ldr r0, _08140A60 @ =gUnknown_203F3A0 + ldr r4, [r0] + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + movs r0, 0x3C + cmp r1, 0 + beq _08140A48 + movs r0, 0x5 +_08140A48: + strh r0, [r4, 0xC] +_08140A4A: + ldr r2, _08140A60 @ =gUnknown_203F3A0 + ldr r1, [r2] + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + adds r0, r2, 0 +_08140A56: + ldr r0, [r0] + strh r5, [r0, 0x8] +_08140A5A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08140A60: .4byte gUnknown_203F3A0 +_08140A64: .4byte gUnknown_84648D2 +_08140A68: .4byte 0x00003fff +_08140A6C: .4byte 0x00002ccb + thumb_func_end sub_81409B4 + + thumb_func_start sub_8140A70 +sub_8140A70: @ 8140A70 + ldr r0, _08140A7C @ =gUnknown_203F3A0 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x8] + bx lr + .align 2, 0 +_08140A7C: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140A70 + + thumb_func_start sub_8140A80 +sub_8140A80: @ 8140A80 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + mov r0, sp + movs r1, 0 + movs r2, 0x9 + bl memset + movs r5, 0 + ldr r2, _08140B58 @ =gUnknown_203F3A0 + movs r3, 0 + adds r4, r2, 0 +_08140A9C: + ldr r0, [r2] + lsls r1, r5, 2 + adds r0, 0x3C + adds r0, r1 + str r3, [r0] + adds r5, 0x1 + cmp r5, 0x4 + ble _08140A9C + movs r0, 0 + mov r9, r0 + ldr r0, [r4] + movs r1, 0x20 + ldrsh r4, [r0, r1] + movs r7, 0x22 + ldrsh r3, [r0, r7] + movs r1, 0x24 + ldrsh r2, [r0, r1] + ldr r6, _08140B5C @ =gUnknown_8464926 + movs r7, 0x2A + adds r7, r6 + mov r8, r7 + mov r1, sp + movs r0, 0x15 + adds r0, r6 + mov r12, r0 + movs r5, 0x2 +_08140AD0: + adds r4, 0x1 + cmp r4, 0x14 + ble _08140AD8 + movs r4, 0 +_08140AD8: + adds r3, 0x1 + cmp r3, 0x14 + ble _08140AE0 + movs r3, 0 +_08140AE0: + adds r2, 0x1 + cmp r2, 0x14 + ble _08140AE8 + movs r2, 0 +_08140AE8: + adds r0, r4, r6 + ldrb r0, [r0] + strb r0, [r1] + mov r7, r12 + adds r0, r3, r7 + ldrb r0, [r0] + strb r0, [r1, 0x3] + mov r7, r8 + adds r0, r2, r7 + ldrb r0, [r0] + strb r0, [r1, 0x6] + adds r1, 0x1 + subs r5, 0x1 + cmp r5, 0 + bge _08140AD0 + ldr r0, _08140B58 @ =gUnknown_203F3A0 + ldr r0, [r0] + adds r0, 0x50 + movs r1, 0 + strh r1, [r0] + ldr r7, _08140B60 @ =gUnknown_84648BD + mov r8, r7 + movs r6, 0 + movs r5, 0x4 +_08140B18: + ldr r0, _08140B58 @ =gUnknown_203F3A0 + ldr r1, [r0] + mov r0, r8 + adds r0, 0x3 + adds r0, r6, r0 + ldrh r1, [r1, 0xE] + ldrb r0, [r0] + cmp r1, r0 + bcc _08140BB6 + ldrb r0, [r7] + mov r1, sp + adds r4, r1, r0 + ldrb r1, [r4] + movs r0, 0x1 + bl sub_81408F4 + cmp r0, 0 + beq _08140B64 + mov r0, r8 + adds r0, 0x1 + adds r0, r6, r0 + ldrb r0, [r0] + add r0, sp + ldrb r1, [r0] + movs r0, 0x2 + bl sub_81408F4 + movs r3, 0x1 + cmp r0, 0 + beq _08140B8E + movs r3, 0x2 + b _08140B92 + .align 2, 0 +_08140B58: .4byte gUnknown_203F3A0 +_08140B5C: .4byte gUnknown_8464926 +_08140B60: .4byte gUnknown_84648BD +_08140B64: + mov r0, r8 + adds r0, 0x1 + adds r0, r6, r0 + ldrb r0, [r0] + add r0, sp + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bne _08140B8C + ldrb r0, [r7, 0x2] + add r0, sp + ldrb r0, [r0] + cmp r1, r0 + bne _08140B8C + adds r0, r1, 0 + bl sub_814096C + lsls r0, 24 + lsrs r3, r0, 24 + b _08140B8E +_08140B8C: + movs r3, 0 +_08140B8E: + cmp r3, 0 + beq _08140BB0 +_08140B92: + ldr r0, _08140BD4 @ =gUnknown_203F3A0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x3C + adds r0, r6 + movs r1, 0x1 + str r1, [r0] + adds r2, 0x50 + ldr r1, _08140BD8 @ =gUnknown_8464966 + lsls r0, r3, 1 + adds r0, r1 + ldrh r0, [r0] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] +_08140BB0: + cmp r3, r9 + ble _08140BB6 + mov r9, r3 +_08140BB6: + adds r7, 0x4 + adds r6, 0x4 + subs r5, 0x1 + cmp r5, 0 + bge _08140B18 + mov r7, r9 + lsls r0, r7, 16 + lsrs r0, 16 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08140BD4: .4byte gUnknown_203F3A0 +_08140BD8: .4byte gUnknown_8464966 + thumb_func_end sub_8140A80 + + thumb_func_start sub_8140BDC +sub_8140BDC: @ 8140BDC + ldr r0, _08140BE8 @ =gUnknown_203F3A0 + ldr r0, [r0] + adds r0, 0x50 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08140BE8: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140BDC + + thumb_func_start sub_8140BEC +sub_8140BEC: @ 8140BEC + ldr r0, _08140BF4 @ =gUnknown_203F3A0 + ldr r0, [r0] + ldrb r0, [r0, 0xE] + bx lr + .align 2, 0 +_08140BF4: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140BEC + + thumb_func_start sub_8140BF8 +sub_8140BF8: @ 8140BF8 + ldr r1, _08140C08 @ =gUnknown_203F3A0 + ldr r1, [r1] + lsls r0, 2 + adds r1, 0x3C + adds r1, r0 + ldr r0, [r1] + bx lr + .align 2, 0 +_08140C08: .4byte gUnknown_203F3A0 + thumb_func_end sub_8140BF8 + + thumb_func_start sub_8140C0C +sub_8140C0C: @ 8140C0C + push {r4,r5,lr} + movs r5, 0 + ldr r4, _08140C3C @ =gUnknown_84655B0 +_08140C12: + adds r0, r4, 0 + bl sub_800EBCC + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x2 + bls _08140C12 + ldr r0, _08140C40 @ =gUnknown_84655C8 + bl sub_8008974 + ldr r4, _08140C44 @ =gUnknown_203F3A4 + movs r0, 0x74 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _08140C48 + bl sub_8140C6C + movs r0, 0x1 + b _08140C4A + .align 2, 0 +_08140C3C: .4byte gUnknown_84655B0 +_08140C40: .4byte gUnknown_84655C8 +_08140C44: .4byte gUnknown_203F3A4 +_08140C48: + movs r0, 0 +_08140C4A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8140C0C + + thumb_func_start sub_8140C50 +sub_8140C50: @ 8140C50 + push {r4,lr} + ldr r4, _08140C68 @ =gUnknown_203F3A4 + ldr r0, [r4] + cmp r0, 0 + beq _08140C62 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08140C62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140C68: .4byte gUnknown_203F3A4 + thumb_func_end sub_8140C50 + + thumb_func_start sub_8140C6C +sub_8140C6C: @ 8140C6C + push {r4-r6,lr} + adds r4, r0, 0 + movs r2, 0 + movs r5, 0 + adds r6, r4, 0 + adds r6, 0xC +_08140C78: + lsls r0, r2, 2 + adds r1, r4, r0 + str r5, [r1] + adds r3, r2, 0x1 + adds r0, r2 + lsls r0, 2 + movs r1, 0x4 + adds r0, r6 + adds r0, 0x10 +_08140C8A: + str r5, [r0] + subs r0, 0x4 + subs r1, 0x1 + cmp r1, 0 + bge _08140C8A + adds r2, r3, 0 + cmp r2, 0x2 + ble _08140C78 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8140C6C + + thumb_func_start sub_8140CA0 +sub_8140CA0: @ 8140CA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r7, 0 +_08140CAE: + movs r6, 0 + lsls r0, r7, 2 + adds r1, r7, 0x1 + str r1, [sp] + adds r0, r7 + mov r10, r0 + mov r2, r10 + lsls r2, 2 + mov r8, r2 + movs r3, 0xB0 + lsls r3, 14 + mov r9, r3 +_08140CC6: + mov r0, r10 + lsls r1, r0, 19 + movs r2, 0xA0 + lsls r2, 15 + adds r1, r2 + mov r3, r9 + asrs r2, r3, 16 + ldr r0, _08140D64 @ =gUnknown_84657E4 + asrs r1, 16 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08140D68 @ =gUnknown_8464926 + mov r3, r8 + adds r1, r3, r7 + adds r1, r6, r1 + adds r1, r2 + ldrb r4, [r1] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r0, _08140D6C @ =gUnknown_202063C + adds r5, r0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_800838C + ldr r0, _08140D70 @ =gUnknown_8465608 + lsls r4, 1 + adds r4, r0 + ldrh r0, [r4] + bl sub_80089E8 + lsls r0, 4 + ldrb r2, [r5, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + movs r0, 0 + strh r7, [r5, 0x2E] + strh r6, [r5, 0x30] + strh r6, [r5, 0x32] + strh r0, [r5, 0x34] + ldrb r0, [r5, 0x3] + movs r2, 0x3F + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r5, 0x3] + ldr r0, _08140D74 @ =gUnknown_203F3A4 + ldr r2, [r0] + lsls r1, r6, 2 + add r1, r8 + adds r0, r2, 0 + adds r0, 0xC + adds r0, r1 + str r5, [r0] + ldr r0, _08140D78 @ =0x07000006 + str r0, [r2, 0x70] + movs r3, 0xC0 + lsls r3, 13 + add r9, r3 + adds r6, 0x1 + cmp r6, 0x4 + ble _08140CC6 + ldr r7, [sp] + cmp r7, 0x2 + ble _08140CAE + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08140D64: .4byte gUnknown_84657E4 +_08140D68: .4byte gUnknown_8464926 +_08140D6C: .4byte gUnknown_202063C +_08140D70: .4byte gUnknown_8465608 +_08140D74: .4byte gUnknown_203F3A4 +_08140D78: .4byte 0x07000006 + thumb_func_end sub_8140CA0 + + thumb_func_start sub_8140D7C +sub_8140D7C: @ 8140D7C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r3, r0, 0 + movs r2, 0 + ldr r0, _08140E34 @ =gUnknown_203F3A4 + mov r8, r0 +_08140D90: + movs r4, 0 + ldrsh r6, [r3, r4] + movs r4, 0 + ldrsh r0, [r1, r4] + lsls r0, 3 + mov r10, r0 + lsls r0, r2, 2 + adds r3, 0x2 + str r3, [sp] + adds r1, 0x2 + str r1, [sp, 0x4] + adds r1, r2, 0x1 + str r1, [sp, 0x8] + adds r0, r2 + lsls r0, 2 + adds r2, r0 + mov r9, r2 + adds r5, r0, 0 + movs r7, 0x4 +_08140DB6: + mov r2, r8 + ldr r1, [r2] + adds r1, 0xC + adds r1, r5 + ldr r0, [r1] + mov r3, r10 + strh r3, [r0, 0x26] + ldr r2, _08140E38 @ =gUnknown_8464926 + mov r4, r9 + adds r0, r6, r4 + adds r0, r2 + ldrb r4, [r0] + ldr r0, [r1] + adds r1, r4, 0 + bl sub_800838C + mov r1, r8 + ldr r0, [r1] + adds r0, 0xC + adds r0, r5 + ldr r0, [r0] + adds r1, r4, 0 + bl sub_800838C + ldr r0, _08140E3C @ =gUnknown_8465608 + lsls r4, 1 + adds r4, r0 + ldrh r0, [r4] + bl sub_80089E8 + mov r2, r8 + ldr r1, [r2] + adds r1, 0xC + adds r1, r5 + ldr r3, [r1] + lsls r0, 4 + ldrb r2, [r3, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x5] + adds r6, 0x1 + cmp r6, 0x14 + ble _08140E10 + movs r6, 0 +_08140E10: + adds r5, 0x4 + subs r7, 0x1 + cmp r7, 0 + bge _08140DB6 + ldr r3, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + cmp r2, 0x2 + ble _08140D90 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08140E34: .4byte gUnknown_203F3A4 +_08140E38: .4byte gUnknown_8464926 +_08140E3C: .4byte gUnknown_8465608 + thumb_func_end sub_8140D7C + + thumb_func_start sub_8140E40 +sub_8140E40: @ 8140E40 + push {lr} + ldr r0, _08140E68 @ =0x04000006 + ldrh r0, [r0] + adds r3, r0, 0 + subs r3, 0x2B + cmp r3, 0x53 + bhi _08140E7C + ldr r0, _08140E6C @ =gUnknown_203F3A4 + ldr r0, [r0] + ldr r2, [r0, 0x70] + ldr r1, _08140E70 @ =gUnknown_8465616 + lsls r0, r3, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + ldr r1, _08140E74 @ =0x04000054 + ldr r0, _08140E78 @ =gUnknown_84656D6 + adds r0, r3, r0 + ldrb r0, [r0] + b _08140E8E + .align 2, 0 +_08140E68: .4byte 0x04000006 +_08140E6C: .4byte gUnknown_203F3A4 +_08140E70: .4byte gUnknown_8465616 +_08140E74: .4byte 0x04000054 +_08140E78: .4byte gUnknown_84656D6 +_08140E7C: + ldr r0, _08140E94 @ =gUnknown_203F3A4 + ldr r0, [r0] + ldr r1, [r0, 0x70] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08140E98 @ =0x04000054 + movs r0, 0 +_08140E8E: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08140E94: .4byte gUnknown_203F3A4 +_08140E98: .4byte 0x04000054 + thumb_func_end sub_8140E40 + + thumb_func_start sub_8140E9C +sub_8140E9C: @ 8140E9C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r5, 0 + ldr r0, _08140F20 @ =gUnknown_846587C + mov r10, r0 + ldr r0, _08140F24 @ =gUnknown_203F3A4 + mov r9, r0 + ldr r0, _08140F28 @ =gUnknown_202063C + mov r8, r0 + movs r7, 0x85 + lsls r7, 16 + movs r6, 0xAA + lsls r6, 15 +_08140EBC: + asrs r1, r6, 16 + mov r0, r10 + movs r2, 0x1E + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + mov r0, r9 + ldr r1, [r0] + lsls r4, r5, 2 + adds r1, 0x48 + adds r1, r4 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + add r0, r8 + str r0, [r1] + asrs r1, r7, 16 + mov r0, r10 + movs r2, 0x1E + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + mov r0, r9 + ldr r1, [r0] + adds r1, 0x58 + adds r1, r4 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + add r0, r8 + str r0, [r1] + movs r0, 0xE0 + lsls r0, 11 + adds r7, r0 + adds r6, r0 + adds r5, 0x1 + cmp r5, 0x3 + ble _08140EBC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08140F20: .4byte gUnknown_846587C +_08140F24: .4byte gUnknown_203F3A4 +_08140F28: .4byte gUnknown_202063C + thumb_func_end sub_8140E9C + + thumb_func_start sub_8140F2C +sub_8140F2C: @ 8140F2C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + bl sub_80D0554 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl sub_8140BDC + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + movs r6, 0xFA + lsls r6, 2 + movs r7, 0 + ldr r0, _08140FC0 @ =gUnknown_203F3A4 + mov r10, r0 +_08140F54: + mov r0, r9 + adds r1, r6, 0 + bl __divsi3 + adds r4, r0, 0 + mov r1, r10 + ldr r0, [r1] + lsls r5, r7, 2 + adds r0, 0x48 + adds r0, r5 + ldr r0, [r0] + lsls r1, r4, 24 + lsrs r1, 24 + bl sub_800838C + adds r0, r4, 0 + muls r0, r6 + mov r1, r9 + subs r1, r0 + mov r9, r1 + mov r0, r8 + adds r1, r6, 0 + bl __divsi3 + adds r4, r0, 0 + mov r1, r10 + ldr r0, [r1] + adds r0, 0x58 + adds r0, r5 + ldr r0, [r0] + lsls r1, r4, 24 + lsrs r1, 24 + bl sub_800838C + adds r0, r4, 0 + muls r0, r6 + mov r1, r8 + subs r1, r0 + mov r8, r1 + adds r0, r6, 0 + movs r1, 0xA + bl __divsi3 + adds r6, r0, 0 + adds r7, 0x1 + cmp r7, 0x3 + ble _08140F54 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08140FC0: .4byte gUnknown_203F3A4 + thumb_func_end sub_8140F2C + + thumb_func_start sub_8140FC4 +sub_8140FC4: @ 8140FC4 + push {r4-r6,lr} + ldr r6, _08141014 @ =gUnknown_84658D8 + adds r0, r6, 0 + movs r1, 0x10 + movs r2, 0x88 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r5, _08141018 @ =gUnknown_203F3A4 + ldr r1, [r5] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r4, _0814101C @ =gUnknown_202063C + adds r0, r4 + str r0, [r1, 0x68] + adds r0, r6, 0 + movs r1, 0xE0 + movs r2, 0x88 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, [r5] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r4 + str r0, [r1, 0x6C] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08141014: .4byte gUnknown_84658D8 +_08141018: .4byte gUnknown_203F3A4 +_0814101C: .4byte gUnknown_202063C + thumb_func_end sub_8140FC4 + + thumb_func_start sub_8141020 +sub_8141020: @ 8141020 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r6, _08141048 @ =gUnknown_203F3A4 +_0814102A: + ldr r0, [r6] + lsls r1, r4, 2 + adds r0, 0x68 + adds r0, r1 + ldr r0, [r0] + adds r1, r5, 0 + bl sub_800838C + adds r4, 0x1 + cmp r4, 0x1 + ble _0814102A + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08141048: .4byte gUnknown_203F3A4 + thumb_func_end sub_8141020 + + thumb_func_start sub_814104C +sub_814104C: @ 814104C + push {r4,lr} + ldr r0, _0814108C @ =0x0000285c + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + beq _08141082 + ldr r2, _08141090 @ =sub_81410CC + movs r1, 0 + adds r0, r4, 0 + adds r0, 0x1C +_08141062: + strb r1, [r0, 0x3] + subs r0, 0x4 + cmp r0, r4 + bge _08141062 + movs r0, 0 + str r0, [r4, 0x28] + adds r0, r2, 0 + movs r1, 0x2 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + adds r2, r4, 0 + bl sub_80776E8 +_08141082: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814108C: .4byte 0x0000285c +_08141090: .4byte sub_81410CC + thumb_func_end sub_814104C + + thumb_func_start sub_8141094 +sub_8141094: @ 8141094 + push {r4,lr} + ldr r4, _081410C8 @ =sub_81410CC + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _081410BA + bl sub_814112C + bl sub_8002BC4 + adds r0, r4, 0 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_081410BA: + bl sub_8140C50 + bl sub_8003ECC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081410C8: .4byte sub_81410CC + thumb_func_end sub_8141094 + + thumb_func_start sub_81410CC +sub_81410CC: @ 81410CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8077720 + adds r6, r0, 0 + ldr r0, _08141114 @ =gUnknown_84658F0 + mov r8, r0 + adds r4, r6, 0x2 + adds r5, r6, 0 + movs r7, 0x7 +_081410E8: + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08141100 + ldrh r0, [r5] + lsls r0, 2 + add r0, r8 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r6, 0 + bl _call_via_r2 + strb r0, [r4, 0x1] +_08141100: + adds r4, 0x4 + adds r5, 0x4 + subs r7, 0x1 + cmp r7, 0 + bge _081410E8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08141114: .4byte gUnknown_84658F0 + thumb_func_end sub_81410CC + + thumb_func_start sub_8141118 +sub_8141118: @ 8141118 + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + pop {r0} + bx r0 + thumb_func_end sub_8141118 + + thumb_func_start sub_814112C +sub_814112C: @ 814112C + push {lr} + ldr r0, _08141144 @ =sub_81410CC + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8077720 + pop {r1} + bx r1 + .align 2, 0 +_08141144: .4byte sub_81410CC + thumb_func_end sub_814112C + + thumb_func_start sub_8141148 +sub_8141148: @ 8141148 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + bl sub_814112C + adds r1, r0, 0 + lsls r5, 2 + adds r5, r1, r5 + movs r0, 0 + strh r4, [r5] + strb r0, [r5, 0x2] + ldr r0, _0814117C @ =gUnknown_84658F0 + lsls r4, 2 + adds r4, r0 + adds r0, r5, 0x2 + ldr r2, [r4] + bl _call_via_r2 + strb r0, [r5, 0x3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814117C: .4byte gUnknown_84658F0 + thumb_func_end sub_8141148 + + thumb_func_start sub_8141180 +sub_8141180: @ 8141180 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_814112C + lsls r4, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141180 + + thumb_func_start sub_8141198 +sub_8141198: @ 8141198 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r7, r0, 0 + mov r8, r1 + ldrb r6, [r7] + cmp r6, 0x1 + beq _081411D0 + cmp r6, 0x1 + bgt _081411B4 + cmp r6, 0 + beq _081411C2 + b _08141450 +_081411B4: + cmp r6, 0x2 + bne _081411BA + b _081413E4 +_081411BA: + cmp r6, 0x3 + bne _081411C0 + b _08141436 +_081411C0: + b _08141450 +_081411C2: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _0814142E +_081411D0: + movs r0, 0 + bl sub_80006F4 + bl sub_8006B10 + bl sub_80088F0 + movs r1, 0xE0 + lsls r1, 19 + movs r2, 0x80 + lsls r2, 3 + movs r0, 0 + movs r3, 0x1 + bl sub_8000F44 + movs r1, 0xC0 + lsls r1, 19 + movs r0, 0 + movs r2, 0x20 + movs r3, 0x1 + bl sub_8000F44 + ldr r1, _0814139C @ =0x0600c000 + movs r0, 0 + movs r2, 0x20 + movs r3, 0x1 + bl sub_8000F44 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_80F6C14 + movs r0, 0 + bl sub_8001618 + ldr r1, _081413A0 @ =gUnknown_8466B10 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r0, _081413A4 @ =gUnknown_8466B20 + bl sub_8003B24 + ldr r1, _081413A8 @ =0x0000205c + add r1, r8 + movs r0, 0x3 + bl sub_8001FA0 + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x3 + bl sub_80020BC + bl sub_80F6808 + ldr r1, _081413AC @ =gUnknown_84659D0 + movs r5, 0 + str r5, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _081413B0 @ =gUnknown_846653C + str r5, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0xC0 + bl sub_80F6878 + ldr r1, _081413B4 @ =0x0000185c + add r1, r8 + movs r0, 0x2 + bl sub_8001FA0 + ldr r1, _081413B8 @ =gUnknown_84661D4 + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x2 + bl sub_80020BC + ldr r0, _081413BC @ =gUnknown_8465930 + movs r1, 0 + movs r2, 0xA0 + bl sub_80703EC + ldr r0, _081413C0 @ =gUnknown_84664BC + movs r1, 0x50 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _081413C4 @ =gUnknown_84665C0 + movs r1, 0x70 + movs r2, 0x60 + bl sub_80703EC + ldr r1, _081413C8 @ =0x00007fde + add r0, sp, 0xC + strh r1, [r0] + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + movs r0, 0 + movs r1, 0xA + movs r2, 0xD0 + bl sub_814FE40 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xF0 + bl sub_814FDA0 + ldr r1, _081413CC @ =0x0000085c + add r1, r8 + movs r0, 0 + bl sub_8001FA0 + str r4, [sp] + movs r0, 0x1E + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_8002454 + ldr r1, _081413D0 @ =gUnknown_8466620 + str r5, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _081413D4 @ =gUnknown_8466998 + str r6, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_8150408 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0x1 + movs r1, 0xFF + bl sub_800445C + movs r0, 0x1 + bl sub_8003FA0 + ldr r4, _081413D8 @ =gUnknown_841B779 + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0xEC + subs r2, r0 + add r1, sp, 0x10 + movs r0, 0xF + strb r0, [r1] + strb r6, [r1, 0x1] + movs r0, 0x2 + strb r0, [r1, 0x2] + lsls r2, 24 + lsrs r2, 24 + str r1, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r3, 0 + bl sub_812E51C + movs r0, 0 + bl sub_80020BC + movs r1, 0x83 + lsls r1, 5 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x50 + movs r1, 0xF8 + bl sub_8000A38 + bl sub_8140C0C + bl sub_8140CA0 + bl sub_8140E9C + bl sub_8140FC4 + bl sub_8140F2C + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _081413DC @ =sub_8141118 + bl sub_80006F4 + ldr r0, _081413E0 @ =sub_8140E40 + bl sub_8000700 + b _0814142E + .align 2, 0 +_0814139C: .4byte 0x0600c000 +_081413A0: .4byte gUnknown_8466B10 +_081413A4: .4byte gUnknown_8466B20 +_081413A8: .4byte 0x0000205c +_081413AC: .4byte gUnknown_84659D0 +_081413B0: .4byte gUnknown_846653C +_081413B4: .4byte 0x0000185c +_081413B8: .4byte gUnknown_84661D4 +_081413BC: .4byte gUnknown_8465930 +_081413C0: .4byte gUnknown_84664BC +_081413C4: .4byte gUnknown_84665C0 +_081413C8: .4byte 0x00007fde +_081413CC: .4byte 0x0000085c +_081413D0: .4byte gUnknown_8466620 +_081413D4: .4byte gUnknown_8466998 +_081413D8: .4byte gUnknown_841B779 +_081413DC: .4byte sub_8141118 +_081413E0: .4byte sub_8140E40 +_081413E4: + bl sub_80F682C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _08141450 + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019D0 + bl sub_8141B34 + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0x3 + bl sub_8000B68 +_0814142E: + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + b _08141450 +_08141436: + bl sub_80704D0 + ldr r0, _0814144C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08141450 + movs r0, 0 + b _08141452 + .align 2, 0 +_0814144C: .4byte gUnknown_2037AB8 +_08141450: + movs r0, 0x1 +_08141452: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8141198 + + thumb_func_start sub_8141460 +sub_8141460: @ 8141460 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08141472 + cmp r0, 0x1 + beq _0814148A + b _081414A0 +_08141472: + movs r1, 0x1 + negs r1, r1 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081414A0 +_0814148A: + ldr r0, _0814149C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081414A0 + movs r0, 0 + b _081414A2 + .align 2, 0 +_0814149C: .4byte gUnknown_2037AB8 +_081414A0: + movs r0, 0x1 +_081414A2: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141460 + + thumb_func_start sub_81414AC +sub_81414AC: @ 81414AC + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _081414BC + cmp r0, 0x1 + beq _081414D4 + b _081414E2 +_081414BC: + movs r0, 0x2 + bl sub_8002008 + bl sub_8141834 + movs r0, 0x2 + bl sub_80020BC + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081414E2 +_081414D4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081414E2 + movs r0, 0 + b _081414E4 +_081414E2: + movs r0, 0x1 +_081414E4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81414AC + + thumb_func_start sub_81414EC +sub_81414EC: @ 81414EC + push {lr} + movs r0, 0x1 + bl sub_8141020 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_81414EC + + thumb_func_start sub_81414FC +sub_81414FC: @ 81414FC + push {lr} + movs r0, 0x2 + bl sub_8141020 + ldr r0, _08141514 @ =sub_814191C + movs r1, 0x3 + bl sub_807741C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08141514: .4byte sub_814191C + thumb_func_end sub_81414FC + + thumb_func_start sub_8141518 +sub_8141518: @ 8141518 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08141528 + cmp r0, 0x1 + beq _08141534 + b _08141550 +_08141528: + bl sub_8141AB0 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08141550 +_08141534: + ldr r0, _0814154C @ =sub_814191C + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08141550 + movs r0, 0 + bl sub_8141020 + movs r0, 0 + b _08141552 + .align 2, 0 +_0814154C: .4byte sub_814191C +_08141550: + movs r0, 0x1 +_08141552: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141518 + + thumb_func_start sub_8141558 +sub_8141558: @ 8141558 + push {lr} + movs r0, 0x3 + bl sub_8141020 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8141558 + + thumb_func_start sub_8141568 +sub_8141568: @ 8141568 + push {lr} + movs r0, 0 + bl sub_8141020 + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8141568 + + thumb_func_start sub_8141578 +sub_8141578: @ 8141578 + push {lr} + bl sub_8140F2C + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8141578 + + thumb_func_start sub_8141584 +sub_8141584: @ 8141584 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08141594 + cmp r0, 0x1 + beq _081415B0 + b _081415BE +_08141594: + ldr r0, _081415AC @ =gUnknown_841B747 + bl sub_81417E4 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081415BE + .align 2, 0 +_081415AC: .4byte gUnknown_841B747 +_081415B0: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081415BE + movs r0, 0 + b _081415C0 +_081415BE: + movs r0, 0x1 +_081415C0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141584 + + thumb_func_start sub_81415C8 +sub_81415C8: @ 81415C8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _081415D8 + cmp r0, 0x1 + beq _081415F8 + b _08141606 +_081415D8: + ldr r0, _081415F4 @ =gUnknown_841B76B + bl sub_81417E4 + movs r0, 0 + bl sub_8141AD8 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08141606 + .align 2, 0 +_081415F4: .4byte gUnknown_841B76B +_081415F8: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08141606 + movs r0, 0 + b _08141608 +_08141606: + movs r0, 0x1 +_08141608: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81415C8 + + thumb_func_start sub_8141610 +sub_8141610: @ 8141610 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08141620 + cmp r0, 0x1 + beq _08141638 + b _08141646 +_08141620: + bl sub_8141828 + bl sub_8141B18 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08141646 +_08141638: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08141646 + movs r0, 0 + b _08141648 +_08141646: + movs r0, 0x1 +_08141648: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141610 + + thumb_func_start sub_8141650 +sub_8141650: @ 8141650 + push {r4,lr} + adds r4, r0, 0 + ldrb r2, [r4] + cmp r2, 0 + beq _08141660 + cmp r2, 0x1 + beq _08141678 + b _08141686 +_08141660: + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + bl sub_8141BA0 + movs r0, 0x2 + bl sub_80020BC + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08141686 +_08141678: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08141686 + movs r0, 0 + b _08141688 +_08141686: + movs r0, 0x1 +_08141688: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141650 + + thumb_func_start sub_8141690 +sub_8141690: @ 8141690 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _081416A0 + cmp r0, 0x1 + beq _081416B2 + b _081416C0 +_081416A0: + bl sub_8141BE4 + movs r0, 0x2 + bl sub_80020BC + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081416C0 +_081416B2: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081416C0 + movs r0, 0 + b _081416C2 +_081416C0: + movs r0, 0x1 +_081416C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8141690 + + thumb_func_start sub_81416C8 +sub_81416C8: @ 81416C8 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldrb r4, [r6] + cmp r4, 0x1 + beq _08141724 + cmp r4, 0x1 + bgt _081416DE + cmp r4, 0 + beq _081416E4 + b _0814175A +_081416DE: + cmp r4, 0x2 + beq _08141756 + b _0814175A +_081416E4: + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x3D + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x42 + movs r1, 0xA0 + bl sub_8000A38 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x6 + bl sub_80722CC + str r4, [r5, 0x24] + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _0814175A +_08141724: + ldr r0, [r5, 0x24] + adds r0, 0x10 + str r0, [r5, 0x24] + cmp r0, 0xFF + ble _0814173A + movs r0, 0x80 + lsls r0, 1 + str r0, [r5, 0x24] + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_0814173A: + ldr r0, [r5, 0x24] + movs r1, 0x80 + lsls r1, 1 + subs r1, r0 + lsls r1, 8 + movs r0, 0x1 + movs r2, 0 + bl sub_8001B90 + ldrh r1, [r5, 0x24] + movs r0, 0x40 + bl sub_8000A38 + b _0814175A +_08141756: + movs r0, 0 + b _0814175C +_0814175A: + movs r0, 0x1 +_0814175C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_81416C8 + + thumb_func_start sub_8141764 +sub_8141764: @ 8141764 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0x1 + beq _08141790 + cmp r0, 0x1 + bgt _0814177A + cmp r0, 0 + beq _08141784 + b _081417DC +_0814177A: + cmp r0, 0x2 + beq _081417C0 + cmp r0, 0x3 + beq _081417D8 + b _081417DC +_08141784: + movs r0, 0x6 + bl sub_80722CC + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_08141790: + ldr r0, [r5, 0x24] + subs r0, 0x10 + str r0, [r5, 0x24] + cmp r0, 0 + bgt _081417A4 + movs r0, 0 + str r0, [r5, 0x24] + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_081417A4: + ldr r0, [r5, 0x24] + movs r1, 0x80 + lsls r1, 1 + subs r1, r0 + lsls r1, 8 + movs r0, 0x1 + movs r2, 0 + bl sub_8001B90 + ldrh r1, [r5, 0x24] + movs r0, 0x40 + bl sub_8000A38 + b _081417DC +_081417C0: + movs r0, 0x1 + bl sub_80019D0 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081417DC +_081417D8: + movs r0, 0 + b _081417DE +_081417DC: + movs r0, 0x1 +_081417DE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8141764 + + thumb_func_start sub_81417E4 +sub_81417E4: @ 81417E4 + push {r4,lr} + sub sp, 0x14 + adds r4, r0, 0 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xF + bl sub_8150048 + movs r1, 0x2 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r0, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_812E62C + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81417E4 + + thumb_func_start sub_8141828 +sub_8141828: @ 8141828 + push {lr} + movs r0, 0 + bl sub_815036C + pop {r0} + bx r0 + thumb_func_end sub_8141828 + + thumb_func_start sub_8141834 +sub_8141834: @ 8141834 + push {r4,lr} + adds r4, r0, 0 + bl sub_8140BEC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081418B4 + cmp r0, 0x1 + bgt _0814184E + cmp r0, 0 + beq _08141858 + b _081418BE +_0814184E: + cmp r0, 0x2 + beq _081418A0 + cmp r0, 0x3 + beq _0814188C + b _081418BE +_08141858: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x4 + bl sub_81418C4 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x4 + bl sub_81418C4 + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0x4 + bl sub_81418C4 + adds r0, r4, 0 + movs r1, 0x3 + movs r2, 0x4 + bl sub_81418C4 + adds r0, r4, 0 + movs r1, 0x4 + movs r2, 0x4 + bl sub_81418C4 + b _081418BE +_0814188C: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x5 + bl sub_81418C4 + adds r0, r4, 0 + movs r1, 0x4 + movs r2, 0x5 + bl sub_81418C4 +_081418A0: + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x5 + bl sub_81418C4 + adds r0, r4, 0 + movs r1, 0x3 + movs r2, 0x5 + bl sub_81418C4 +_081418B4: + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0x5 + bl sub_81418C4 +_081418BE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8141834 + + thumb_func_start sub_81418C4 +sub_81418C4: @ 81418C4 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + ldr r3, _08141914 @ =gUnknown_8466C0C + lsrs r1, 13 + adds r0, r1, r3 + ldr r4, [r0] + lsls r2, 28 + lsrs r7, r2, 16 + movs r5, 0 + adds r3, 0x4 + adds r1, r3 + ldr r1, [r1] + cmp r5, r1 + bcs _0814190C + ldr r0, _08141918 @ =0x00000fff + mov r12, r0 + adds r3, r1, 0 +_081418E8: + ldrh r1, [r4] + lsls r1, 1 + adds r1, r6 + ldrh r2, [r1] + mov r0, r12 + ands r0, r2 + strh r0, [r1] + ldrh r1, [r4] + lsls r1, 1 + adds r1, r6 + ldrh r2, [r1] + adds r0, r7, 0 + orrs r0, r2 + strh r0, [r1] + adds r4, 0x2 + adds r5, 0x1 + cmp r5, r3 + bcc _081418E8 +_0814190C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08141914: .4byte gUnknown_8466C0C +_08141918: .4byte 0x00000fff + thumb_func_end sub_81418C4 + + thumb_func_start sub_814191C +sub_814191C: @ 814191C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08141940 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _08141984 + cmp r0, 0x1 + bgt _08141944 + cmp r0, 0 + beq _08141952 + b _08141AA8 + .align 2, 0 +_08141940: .4byte gUnknown_3005098 +_08141944: + cmp r0, 0x2 + bne _0814194A + b _08141A58 +_0814194A: + cmp r0, 0x3 + bne _08141950 + b _08141A98 +_08141950: + b _08141AA8 +_08141952: + ldr r0, _08141980 @ =gUnknown_84664BC + movs r1, 0x60 + movs r2, 0x20 + bl sub_80703EC + movs r4, 0 +_0814195E: + adds r0, r4, 0 + bl sub_8140BF8 + cmp r0, 0 + beq _08141978 + movs r0, 0x2 + bl sub_8002008 + lsls r1, r4, 16 + lsrs r1, 16 + movs r2, 0x6 + bl sub_81418C4 +_08141978: + adds r4, 0x1 + cmp r4, 0x4 + ble _0814195E + b _08141A84 + .align 2, 0 +_08141980: .4byte gUnknown_84664BC +_08141984: + ldrh r1, [r5, 0x2] + movs r2, 0x2 + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _081419C4 + ldr r1, _081419BC @ =gUnknown_825E074 + movs r2, 0x4 + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 23 + lsls r0, 16 + lsrs r0, 11 + ldr r1, _081419C0 @ =gUnknown_84664DC + adds r0, r1 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldrh r0, [r5, 0x4] + adds r0, 0x20 + movs r1, 0x7F + ands r0, r1 + strh r0, [r5, 0x4] + movs r0, 0x8 + b _081419C6 + .align 2, 0 +_081419BC: .4byte gUnknown_825E074 +_081419C0: .4byte gUnknown_84664DC +_081419C4: + subs r0, r1, 0x1 +_081419C6: + strh r0, [r5, 0x2] + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08141A00 + ldrh r0, [r5, 0x8] + adds r0, 0x8 + movs r1, 0x7F + ands r0, r1 + strh r0, [r5, 0x8] + ldr r1, _081419FC @ =gUnknown_825E074 + movs r2, 0x8 + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r1, 16 + asrs r1, 21 + strh r1, [r5, 0xA] + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x40 + movs r2, 0 + bl sub_80714D4 + b _08141A2C + .align 2, 0 +_081419FC: .4byte gUnknown_825E074 +_08141A00: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _08141A2C + movs r0, 0 + strh r0, [r5, 0x8] + ldrh r0, [r5, 0xA] + adds r0, 0x1 + movs r1, 0x1 + ands r0, r1 + strh r0, [r5, 0xA] + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r1, 27 + lsrs r1, 24 + movs r0, 0x40 + movs r2, 0 + bl sub_80714D4 +_08141A2C: + movs r4, 0 + ldr r5, _08141A4C @ =gUnknown_20375F8 + ldr r3, _08141A50 @ =gUnknown_8466C34 + ldr r2, _08141A54 @ =gUnknown_20371F8 +_08141A34: + adds r0, r4, r3 + ldrb r0, [r0] + adds r0, 0x60 + lsls r0, 1 + adds r1, r0, r5 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r4, 0x1 + cmp r4, 0x1 + bls _08141A34 + b _08141AA8 + .align 2, 0 +_08141A4C: .4byte gUnknown_20375F8 +_08141A50: .4byte gUnknown_8466C34 +_08141A54: .4byte gUnknown_20371F8 +_08141A58: + movs r4, 0 +_08141A5A: + adds r0, r4, 0 + bl sub_8140BF8 + cmp r0, 0 + beq _08141A74 + movs r0, 0x2 + bl sub_8002008 + lsls r1, r4, 16 + lsrs r1, 16 + movs r2, 0x4 + bl sub_81418C4 +_08141A74: + adds r4, 0x1 + cmp r4, 0x4 + ble _08141A5A + ldr r0, _08141A94 @ =gUnknown_8465950 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC +_08141A84: + movs r0, 0x2 + bl sub_80020BC + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _08141AA8 + .align 2, 0 +_08141A94: .4byte gUnknown_8465950 +_08141A98: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08141AA8 + adds r0, r4, 0 + bl sub_8077508 +_08141AA8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814191C + + thumb_func_start sub_8141AB0 +sub_8141AB0: @ 8141AB0 + push {lr} + ldr r0, _08141AD0 @ =sub_814191C + bl sub_8077688 + ldr r2, _08141AD4 @ =gUnknown_3005090 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x2 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_08141AD0: .4byte sub_814191C +_08141AD4: .4byte gUnknown_3005090 + thumb_func_end sub_8141AB0 + + thumb_func_start sub_8141AD8 +sub_8141AD8: @ 8141AD8 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08141B14 @ =gUnknown_8466C38 + movs r1, 0xA + str r1, [sp] + movs r1, 0xD + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + lsls r4, 24 + asrs r4, 24 + adds r0, r4, 0 + bl sub_810F948 + bl sub_814112C + movs r1, 0x1 + str r1, [r0, 0x28] + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08141B14: .4byte gUnknown_8466C38 + thumb_func_end sub_8141AD8 + + thumb_func_start sub_8141B18 +sub_8141B18: @ 8141B18 + push {r4,lr} + bl sub_814112C + adds r4, r0, 0 + ldr r0, [r4, 0x28] + cmp r0, 0 + beq _08141B2E + bl sub_81100E8 + movs r0, 0 + str r0, [r4, 0x28] +_08141B2E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8141B18 + + thumb_func_start sub_8141B34 +sub_8141B34: @ 8141B34 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + bl sub_814112C + adds r4, r0, 0 + movs r0, 0x2 + bl sub_8002008 + mov r12, r0 + movs r1, 0 + movs r0, 0x44 + adds r0, r4 + mov r8, r0 + adds r7, r4, 0 + adds r7, 0x2C + ldr r0, _08141B9C @ =gUnknown_8466C40 + mov r9, r0 +_08141B5A: + movs r5, 0 + lsls r0, r1, 3 + adds r6, r1, 0x1 + mov r1, r8 + adds r4, r0, r1 + mov r1, r9 + adds r3, r0, r1 + adds r2, r0, 0 +_08141B6A: + ldrh r0, [r3] + lsls r0, 1 + add r0, r12 + ldrh r0, [r0] + strh r0, [r4] + adds r1, r7, r2 + adds r0, r5, 0 + adds r0, 0xC0 + strh r0, [r1] + adds r4, 0x2 + adds r3, 0x2 + adds r2, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08141B6A + adds r1, r6, 0 + cmp r1, 0x2 + ble _08141B5A + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08141B9C: .4byte gUnknown_8466C40 + thumb_func_end sub_8141B34 + + thumb_func_start sub_8141BA0 +sub_8141BA0: @ 8141BA0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bhi _08141BD8 + bl sub_814112C + adds r4, r0, 0 + movs r0, 0x2 + bl sub_8002008 + adds r6, r0, 0 + lsls r0, r5, 3 + ldr r1, _08141BE0 @ =gUnknown_8466C40 + adds r4, 0x2C + adds r3, r0, r4 + adds r2, r0, r1 + movs r4, 0x3 +_08141BC4: + ldrh r0, [r2] + lsls r0, 1 + adds r0, r6 + ldrh r1, [r3] + strh r1, [r0] + adds r3, 0x2 + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _08141BC4 +_08141BD8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08141BE0: .4byte gUnknown_8466C40 + thumb_func_end sub_8141BA0 + + thumb_func_start sub_8141BE4 +sub_8141BE4: @ 8141BE4 + push {r4-r7,lr} + bl sub_814112C + adds r4, r0, 0 + movs r0, 0x2 + bl sub_8002008 + adds r6, r0, 0 + movs r1, 0 + adds r7, r4, 0 + adds r7, 0x44 + ldr r0, _08141C2C @ =gUnknown_8466C40 + mov r12, r0 +_08141BFE: + lsls r0, r1, 3 + adds r5, r1, 0x1 + adds r3, r0, r7 + mov r1, r12 + adds r2, r0, r1 + movs r4, 0x3 +_08141C0A: + ldrh r0, [r2] + lsls r0, 1 + adds r0, r6 + ldrh r1, [r3] + strh r1, [r0] + adds r3, 0x2 + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _08141C0A + adds r1, r5, 0 + cmp r1, 0x2 + ble _08141BFE + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08141C2C: .4byte gUnknown_8466C40 + thumb_func_end sub_8141BE4 + + thumb_func_start sub_8141C30 +sub_8141C30: @ 8141C30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + bl sub_814112C + adds r0, 0x20 + strb r4, [r0] + movs r0, 0xC + adds r1, r5, 0 + bl sub_8141148 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8141C30 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/smokescreen.s b/asm/smokescreen.s new file mode 100644 index 000000000..aa307d1a9 --- /dev/null +++ b/asm/smokescreen.s @@ -0,0 +1,225 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_804A76C +sub_804A76C: @ 804A76C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 24 + lsrs r4, r2, 24 + ldr r5, _0804A8A4 @ =gUnknown_825098C + ldrh r0, [r5, 0x6] + bl sub_8008804 + lsls r0, 16 + ldr r1, _0804A8A8 @ =0xffff0000 + cmp r0, r1 + bne _0804A79E + adds r0, r5, 0 + bl sub_800F034 + ldr r0, _0804A8AC @ =gUnknown_8250994 + bl sub_800F078 +_0804A79E: + ldr r0, _0804A8B0 @ =sub_804A8C0 + bl sub_8044EF8 + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r5, r0, 4 + add r5, r8 + lsls r5, 2 + ldr r0, _0804A8B4 @ =gUnknown_202063C + adds r5, r0 + strh r4, [r5, 0x30] + ldr r0, _0804A8B8 @ =gUnknown_82509F4 + mov r9, r0 + lsls r6, 16 + asrs r0, r6, 16 + mov r10, r0 + ldr r0, _0804A8BC @ =0xfff00000 + adds r6, r0 + asrs r6, 16 + lsls r4, r7, 16 + asrs r7, r4, 16 + adds r4, r0 + asrs r4, 16 + mov r0, r9 + adds r1, r6, 0 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0804A8B4 @ =gUnknown_202063C + adds r1, r0 + mov r0, r8 + strh r0, [r1, 0x2E] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r1, 0 + bl sub_8007824 + mov r0, r9 + mov r1, r10 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0804A8B4 @ =gUnknown_202063C + adds r4, r0 + mov r0, r8 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800838C + adds r0, r4, 0 + bl sub_8007824 + mov r0, r9 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0804A8B4 @ =gUnknown_202063C + adds r4, r0 + mov r0, r8 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800838C + adds r0, r4, 0 + bl sub_8007824 + mov r0, r9 + mov r1, r10 + adds r2, r7, 0 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0804A8B4 @ =gUnknown_202063C + adds r4, r0 + mov r0, r8 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800838C + adds r0, r4, 0 + bl sub_8007824 + mov r0, r8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0804A8A4: .4byte gUnknown_825098C +_0804A8A8: .4byte 0xffff0000 +_0804A8AC: .4byte gUnknown_8250994 +_0804A8B0: .4byte sub_804A8C0 +_0804A8B4: .4byte gUnknown_202063C +_0804A8B8: .4byte gUnknown_82509F4 +_0804A8BC: .4byte 0xfff00000 + thumb_func_end sub_804A76C + + thumb_func_start sub_804A8C0 +sub_804A8C0: @ 804A8C0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0804A8F8 + ldr r0, _0804A8EC @ =gUnknown_825098C + ldrh r0, [r0, 0x6] + bl sub_800874C + ldr r0, _0804A8F0 @ =gUnknown_8250994 + ldrh r0, [r0, 0x4] + bl sub_8008A30 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0804A8F4 + adds r0, r4, 0 + bl sub_8007280 + b _0804A8F8 + .align 2, 0 +_0804A8EC: .4byte gUnknown_825098C +_0804A8F0: .4byte gUnknown_8250994 +_0804A8F4: + ldr r0, _0804A900 @ =nullsub_8 + str r0, [r4, 0x1C] +_0804A8F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804A900: .4byte nullsub_8 + thumb_func_end sub_804A8C0 + + thumb_func_start sub_804A904 +sub_804A904: @ 804A904 + push {lr} + adds r3, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804A92E + ldr r2, _0804A934 @ =gUnknown_202063C + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x2E] + subs r1, 0x1 + strh r1, [r0, 0x2E] + adds r0, r3, 0 + bl sub_8007280 +_0804A92E: + pop {r0} + bx r0 + .align 2, 0 +_0804A934: .4byte gUnknown_202063C + thumb_func_end sub_804A904 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/sound.s b/asm/sound.s new file mode 100644 index 000000000..c5cfd2be3 --- /dev/null +++ b/asm/sound.s @@ -0,0 +1,1541 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8071938 +sub_8071938: @ 8071938 + push {lr} + ldr r1, _08071948 @ =gUnknown_3005080 + movs r0, 0 + strb r0, [r1] + bl sub_8071A44 + pop {r0} + bx r0 + .align 2, 0 +_08071948: .4byte gUnknown_3005080 + thumb_func_end sub_8071938 + + thumb_func_start sub_807194C +sub_807194C: @ 807194C + push {r4,r5,lr} + ldr r0, _08071964 @ =gUnknown_3000FC4 + ldrb r1, [r0] + adds r2, r0, 0 + cmp r1, 0x7 + bhi _08071A2E + lsls r0, r1, 2 + ldr r1, _08071968 @ =_0807196C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08071964: .4byte gUnknown_3000FC4 +_08071968: .4byte _0807196C + .align 2, 0 +_0807196C: + .4byte _08071A2E + .4byte _0807198C + .4byte _08071A2E + .4byte _08071A2E + .4byte _08071A2E + .4byte _080719A0 + .4byte _080719C0 + .4byte _080719FC +_0807198C: + movs r0, 0x2 + strb r0, [r2] + ldr r0, _0807199C @ =gUnknown_3000FC0 + ldrh r0, [r0] + bl sub_80722A0 + b _08071A2E + .align 2, 0 +_0807199C: .4byte gUnknown_3000FC0 +_080719A0: + bl sub_8071DD4 + lsls r0, 24 + cmp r0, 0 + beq _08071A2E + ldr r0, _080719B8 @ =gUnknown_3000FC2 + movs r1, 0 + strh r1, [r0] + ldr r0, _080719BC @ =gUnknown_3000FC4 + strb r1, [r0] + b _08071A2E + .align 2, 0 +_080719B8: .4byte gUnknown_3000FC2 +_080719BC: .4byte gUnknown_3000FC4 +_080719C0: + bl sub_8071DD4 + lsls r0, 24 + cmp r0, 0 + beq _08071A2E + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _08071A2E + ldr r2, _080719F0 @ =gUnknown_3000FC0 + ldr r1, _080719F4 @ =gUnknown_3000FC2 + ldrh r0, [r1] + strh r0, [r2] + movs r0, 0 + strh r0, [r1] + ldr r1, _080719F8 @ =gUnknown_3000FC4 + movs r0, 0x2 + strb r0, [r1] + ldrh r0, [r2] + bl sub_80722A0 + b _08071A2E + .align 2, 0 +_080719F0: .4byte gUnknown_3000FC0 +_080719F4: .4byte gUnknown_3000FC2 +_080719F8: .4byte gUnknown_3000FC4 +_080719FC: + bl sub_8071DD4 + lsls r0, 24 + cmp r0, 0 + beq _08071A2E + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _08071A2E + ldr r4, _08071A34 @ =gUnknown_3000FC2 + ldrh r0, [r4] + ldr r5, _08071A38 @ =gUnknown_3000FC5 + ldrb r1, [r5] + bl sub_8071D10 + ldr r1, _08071A3C @ =gUnknown_3000FC0 + ldrh r0, [r4] + strh r0, [r1] + movs r2, 0 + strh r2, [r4] + ldr r1, _08071A40 @ =gUnknown_3000FC4 + movs r0, 0x2 + strb r0, [r1] + strb r2, [r5] +_08071A2E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08071A34: .4byte gUnknown_3000FC2 +_08071A38: .4byte gUnknown_3000FC5 +_08071A3C: .4byte gUnknown_3000FC0 +_08071A40: .4byte gUnknown_3000FC4 + thumb_func_end sub_807194C + + thumb_func_start sub_8071A44 +sub_8071A44: @ 8071A44 + ldr r0, _08071A58 @ =gUnknown_3000FC0 + movs r1, 0 + strh r1, [r0] + ldr r0, _08071A5C @ =gUnknown_3000FC2 + strh r1, [r0] + ldr r0, _08071A60 @ =gUnknown_3000FC4 + strb r1, [r0] + ldr r0, _08071A64 @ =gUnknown_3000FC5 + strb r1, [r0] + bx lr + .align 2, 0 +_08071A58: .4byte gUnknown_3000FC0 +_08071A5C: .4byte gUnknown_3000FC2 +_08071A60: .4byte gUnknown_3000FC4 +_08071A64: .4byte gUnknown_3000FC5 + thumb_func_end sub_8071A44 + + thumb_func_start sub_8071A68 +sub_8071A68: @ 8071A68 + ldr r0, _08071A70 @ =gUnknown_3000FC0 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08071A70: .4byte gUnknown_3000FC0 + thumb_func_end sub_8071A68 + + thumb_func_start sub_8071A74 +sub_8071A74: @ 8071A74 + ldr r1, _08071A88 @ =gUnknown_3000FC0 + strh r0, [r1] + ldr r1, _08071A8C @ =gUnknown_3000FC2 + movs r0, 0 + strh r0, [r1] + ldr r1, _08071A90 @ =gUnknown_3000FC4 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_08071A88: .4byte gUnknown_3000FC0 +_08071A8C: .4byte gUnknown_3000FC2 +_08071A90: .4byte gUnknown_3000FC4 + thumb_func_end sub_8071A74 + + thumb_func_start sub_8071A94 +sub_8071A94: @ 8071A94 + ldr r0, _08071AA8 @ =gUnknown_3000FC0 + movs r1, 0 + strh r1, [r0] + ldr r0, _08071AAC @ =gUnknown_3000FC2 + strh r1, [r0] + ldr r1, _08071AB0 @ =gUnknown_3000FC4 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_08071AA8: .4byte gUnknown_3000FC0 +_08071AAC: .4byte gUnknown_3000FC2 +_08071AB0: .4byte gUnknown_3000FC4 + thumb_func_end sub_8071A94 + + thumb_func_start sub_8071AB4 +sub_8071AB4: @ 8071AB4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8071BA0 + lsls r0, 24 + cmp r0, 0 + beq _08071ACA + adds r0, r4, 0 + bl sub_8071DBC +_08071ACA: + ldr r0, _08071AE0 @ =gUnknown_3000FC0 + movs r1, 0 + strh r1, [r0] + ldr r0, _08071AE4 @ =gUnknown_3000FC2 + strh r1, [r0] + ldr r1, _08071AE8 @ =gUnknown_3000FC4 + movs r0, 0x5 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071AE0: .4byte gUnknown_3000FC0 +_08071AE4: .4byte gUnknown_3000FC2 +_08071AE8: .4byte gUnknown_3000FC4 + thumb_func_end sub_8071AB4 + + thumb_func_start sub_8071AEC +sub_8071AEC: @ 8071AEC + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 24 + lsrs r0, 24 + bl sub_8071AB4 + ldr r1, _08071B14 @ =gUnknown_3000FC0 + movs r0, 0 + strh r0, [r1] + ldr r0, _08071B18 @ =gUnknown_3000FC2 + strh r4, [r0] + ldr r1, _08071B1C @ =gUnknown_3000FC4 + movs r0, 0x6 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071B14: .4byte gUnknown_3000FC0 +_08071B18: .4byte gUnknown_3000FC2 +_08071B1C: .4byte gUnknown_3000FC4 + thumb_func_end sub_8071AEC + + thumb_func_start sub_8071B20 +sub_8071B20: @ 8071B20 + push {r4,r5,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 24 + lsrs r5, 24 + bl sub_8071AB4 + ldr r1, _08071B54 @ =gUnknown_3000FC0 + movs r0, 0 + strh r0, [r1] + ldr r0, _08071B58 @ =gUnknown_3000FC2 + strh r4, [r0] + ldr r1, _08071B5C @ =gUnknown_3000FC4 + movs r0, 0x7 + strb r0, [r1] + ldr r0, _08071B60 @ =gUnknown_3000FC5 + strb r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08071B54: .4byte gUnknown_3000FC0 +_08071B58: .4byte gUnknown_3000FC2 +_08071B5C: .4byte gUnknown_3000FC4 +_08071B60: .4byte gUnknown_3000FC5 + thumb_func_end sub_8071B20 + + thumb_func_start sub_8071B64 +sub_8071B64: @ 8071B64 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8071D10 + ldr r0, _08071B90 @ =gUnknown_3000FC0 + strh r4, [r0] + ldr r0, _08071B94 @ =gUnknown_3000FC2 + movs r2, 0 + strh r2, [r0] + ldr r1, _08071B98 @ =gUnknown_3000FC4 + movs r0, 0x2 + strb r0, [r1] + ldr r0, _08071B9C @ =gUnknown_3000FC5 + strb r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071B90: .4byte gUnknown_3000FC0 +_08071B94: .4byte gUnknown_3000FC2 +_08071B98: .4byte gUnknown_3000FC4 +_08071B9C: .4byte gUnknown_3000FC5 + thumb_func_end sub_8071B64 + + thumb_func_start sub_8071BA0 +sub_8071BA0: @ 8071BA0 + push {lr} + ldr r0, _08071BB8 @ =gUnknown_3000FC4 + ldrb r0, [r0] + cmp r0, 0x6 + beq _08071BBC + cmp r0, 0x5 + beq _08071BBC + cmp r0, 0x7 + beq _08071BBC + movs r0, 0x1 + b _08071BBE + .align 2, 0 +_08071BB8: .4byte gUnknown_3000FC4 +_08071BBC: + movs r0, 0 +_08071BBE: + pop {r1} + bx r1 + thumb_func_end sub_8071BA0 + + thumb_func_start sub_8071BC4 +sub_8071BC4: @ 8071BC4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08071BDC @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _08071BE4 + ldr r1, _08071BE0 @ =gUnknown_3000FC6 + movs r0, 0xFF + strh r0, [r1] + b _08071BFC + .align 2, 0 +_08071BDC: .4byte gUnknown_203ADFA +_08071BE0: .4byte gUnknown_3000FC6 +_08071BE4: + ldr r0, _08071C04 @ =gMPlay_BGM + bl m4aMPlayStop + ldr r0, _08071C08 @ =gUnknown_83AC990 + lsls r1, r4, 2 + adds r1, r0 + ldrh r0, [r1] + ldr r2, _08071C0C @ =gUnknown_3000FC6 + ldrh r1, [r1, 0x2] + strh r1, [r2] + bl m4aSongNumStart +_08071BFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071C04: .4byte gMPlay_BGM +_08071C08: .4byte gUnknown_83AC990 +_08071C0C: .4byte gUnknown_3000FC6 + thumb_func_end sub_8071BC4 + + thumb_func_start sub_8071C10 +sub_8071C10: @ 8071C10 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r2, _08071C28 @ =gUnknown_3000FC6 + ldrh r0, [r2] + cmp r0, 0 + beq _08071C2C + subs r0, 0x1 + strh r0, [r2] + movs r0, 0 + b _08071C44 + .align 2, 0 +_08071C28: .4byte gUnknown_3000FC6 +_08071C2C: + cmp r1, 0 + bne _08071C3C + ldr r0, _08071C38 @ =gMPlay_BGM + bl m4aMPlayContinue + b _08071C42 + .align 2, 0 +_08071C38: .4byte gMPlay_BGM +_08071C3C: + movs r0, 0 + bl m4aSongNumStart +_08071C42: + movs r0, 0x1 +_08071C44: + pop {r1} + bx r1 + thumb_func_end sub_8071C10 + + thumb_func_start sub_8071C48 +sub_8071C48: @ 8071C48 + push {lr} + lsls r0, 24 + ldr r1, _08071C5C @ =gUnknown_83AC990 + lsrs r0, 22 + adds r0, r1 + ldrh r0, [r0] + bl m4aSongNumStop + pop {r0} + bx r0 + .align 2, 0 +_08071C5C: .4byte gUnknown_83AC990 + thumb_func_end sub_8071C48 + + thumb_func_start sub_8071C60 +sub_8071C60: @ 8071C60 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r1, 0 + ldr r2, _08071C80 @ =gUnknown_83AC990 +_08071C6A: + ldrh r0, [r2] + cmp r0, r3 + bne _08071C84 + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_8071BC4 + bl sub_8071CEC + b _08071C96 + .align 2, 0 +_08071C80: .4byte gUnknown_83AC990 +_08071C84: + adds r2, 0x4 + adds r1, 0x1 + cmp r1, 0xD + bls _08071C6A + movs r0, 0 + bl sub_8071BC4 + bl sub_8071CEC +_08071C96: + pop {r0} + bx r0 + thumb_func_end sub_8071C60 + + thumb_func_start sub_8071C9C +sub_8071C9C: @ 8071C9C + push {lr} + ldr r0, _08071CB0 @ =sub_8071CBC + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08071CB4 + movs r0, 0x1 + b _08071CB6 + .align 2, 0 +_08071CB0: .4byte sub_8071CBC +_08071CB4: + movs r0, 0 +_08071CB6: + pop {r1} + bx r1 + thumb_func_end sub_8071C9C + + thumb_func_start sub_8071CBC +sub_8071CBC: @ 8071CBC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08071CD0 @ =gUnknown_3000FC6 + ldrh r0, [r1] + cmp r0, 0 + beq _08071CD4 + subs r0, 0x1 + strh r0, [r1] + b _08071CE0 + .align 2, 0 +_08071CD0: .4byte gUnknown_3000FC6 +_08071CD4: + ldr r0, _08071CE8 @ =gMPlay_BGM + bl m4aMPlayContinue + adds r0, r4, 0 + bl sub_8077508 +_08071CE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071CE8: .4byte gMPlay_BGM + thumb_func_end sub_8071CBC + + thumb_func_start sub_8071CEC +sub_8071CEC: @ 8071CEC + push {r4,lr} + ldr r4, _08071D0C @ =sub_8071CBC + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08071D06 + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C +_08071D06: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071D0C: .4byte sub_8071CBC + thumb_func_end sub_8071CEC + + thumb_func_start sub_8071D10 +sub_8071D10: @ 8071D10 + push {r4-r7,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r0, _08071D58 @ =gUnknown_3005080 + ldrb r0, [r0] + cmp r0, 0 + beq _08071D24 + movs r5, 0 +_08071D24: + ldr r6, _08071D5C @ =0x0000ffff + cmp r5, r6 + bne _08071D2C + movs r5, 0 +_08071D2C: + adds r0, r5, 0 + bl m4aSongNumStart + ldr r4, _08071D60 @ =gMPlay_BGM + adds r0, r4, 0 + bl m4aMPlayImmInit + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0 + bl m4aMPlayVolumeControl + adds r0, r5, 0 + bl m4aSongNumStop + adds r0, r4, 0 + adds r1, r7, 0 + bl m4aMPlayFadeIn + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08071D58: .4byte gUnknown_3005080 +_08071D5C: .4byte 0x0000ffff +_08071D60: .4byte gMPlay_BGM + thumb_func_end sub_8071D10 + + thumb_func_start sub_8071D64 +sub_8071D64: @ 8071D64 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08071D78 @ =gMPlay_BGM + bl m4aMPlayFadeOutTemporarily + pop {r0} + bx r0 + .align 2, 0 +_08071D78: .4byte gMPlay_BGM + thumb_func_end sub_8071D64 + + thumb_func_start sub_8071D7C +sub_8071D7C: @ 8071D7C + push {lr} + ldr r0, _08071D94 @ =gMPlay_BGM + ldr r1, [r0, 0x4] + cmp r1, 0 + blt _08071D9C + ldr r0, _08071D98 @ =0x0000ffff + ands r1, r0 + cmp r1, 0 + beq _08071D9C + movs r0, 0 + b _08071D9E + .align 2, 0 +_08071D94: .4byte gMPlay_BGM +_08071D98: .4byte 0x0000ffff +_08071D9C: + movs r0, 0x1 +_08071D9E: + pop {r1} + bx r1 + thumb_func_end sub_8071D7C + + thumb_func_start sub_8071DA4 +sub_8071DA4: @ 8071DA4 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08071DB8 @ =gMPlay_BGM + bl m4aMPlayFadeIn + pop {r0} + bx r0 + .align 2, 0 +_08071DB8: .4byte gMPlay_BGM + thumb_func_end sub_8071DA4 + + thumb_func_start sub_8071DBC +sub_8071DBC: @ 8071DBC + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08071DD0 @ =gMPlay_BGM + bl m4aMPlayFadeOut + pop {r0} + bx r0 + .align 2, 0 +_08071DD0: .4byte gMPlay_BGM + thumb_func_end sub_8071DBC + + thumb_func_start sub_8071DD4 +sub_8071DD4: @ 8071DD4 + push {lr} + ldr r0, _08071DE4 @ =gMPlay_BGM + ldrh r0, [r0, 0x4] + cmp r0, 0 + beq _08071DE8 + movs r0, 0 + b _08071DEA + .align 2, 0 +_08071DE4: .4byte gMPlay_BGM +_08071DE8: + movs r0, 0x1 +_08071DEA: + pop {r1} + bx r1 + thumb_func_end sub_8071DD4 + + thumb_func_start sub_8071DF0 +sub_8071DF0: @ 8071DF0 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r4, r1, 0 + lsls r5, 16 + lsrs r5, 16 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08071E30 @ =gMPlay_BGM + ldr r1, _08071E34 @ =0x0000ffff + movs r2, 0x55 + bl m4aMPlayVolumeControl + lsls r4, 24 + asrs r4, 24 + movs r0, 0 + str r0, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x78 + movs r3, 0xA + bl sub_8071F78 + ldr r1, _08071E38 @ =gUnknown_2037ED0 + movs r0, 0x2 + strb r0, [r1] + bl sub_807227C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08071E30: .4byte gMPlay_BGM +_08071E34: .4byte 0x0000ffff +_08071E38: .4byte gUnknown_2037ED0 + thumb_func_end sub_8071DF0 + + thumb_func_start sub_8071E3C +sub_8071E3C: @ 8071E3C + push {r4,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + movs r4, 0 + str r4, [sp] + bl sub_8071F78 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8071E3C + + thumb_func_start sub_8071E60 +sub_8071E60: @ 8071E60 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + cmp r4, 0x1 + bne _08071E86 + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + adds r0, r6, 0 + movs r2, 0x78 + movs r3, 0xA + bl sub_8071F78 + b _08071EAA +_08071E86: + ldr r0, _08071EB4 @ =gMPlay_BGM + ldr r1, _08071EB8 @ =0x0000ffff + movs r2, 0x55 + bl m4aMPlayVolumeControl + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + adds r0, r6, 0 + movs r2, 0x78 + movs r3, 0xA + bl sub_8071F78 + ldr r1, _08071EBC @ =gUnknown_2037ED0 + movs r0, 0x2 + strb r0, [r1] + bl sub_807227C +_08071EAA: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08071EB4: .4byte gMPlay_BGM +_08071EB8: .4byte 0x0000ffff +_08071EBC: .4byte gUnknown_2037ED0 + thumb_func_end sub_8071E60 + + thumb_func_start sub_8071EC0 +sub_8071EC0: @ 8071EC0 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + adds r4, r2, 0 + cmp r2, 0x1 + bne _08071EEA + lsls r1, 24 + asrs r1, 24 + str r2, [sp] + movs r2, 0x78 + movs r3, 0xA + bl sub_8071F78 + b _08071F10 +_08071EEA: + ldr r0, _08071F18 @ =gUnknown_2022B4C + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08071F00 + ldr r0, _08071F1C @ =gMPlay_BGM + ldr r1, _08071F20 @ =0x0000ffff + movs r2, 0x55 + bl m4aMPlayVolumeControl +_08071F00: + lsls r1, r5, 24 + asrs r1, 24 + str r4, [sp] + adds r0, r6, 0 + movs r2, 0x78 + movs r3, 0xA + bl sub_8071F78 +_08071F10: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08071F18: .4byte gUnknown_2022B4C +_08071F1C: .4byte gMPlay_BGM +_08071F20: .4byte 0x0000ffff + thumb_func_end sub_8071EC0 + + thumb_func_start sub_8071F24 +sub_8071F24: @ 8071F24 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _08071F68 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08071F56 + ldr r0, _08071F6C @ =gMPlay_BGM + ldr r1, _08071F70 @ =0x0000ffff + movs r2, 0x55 + bl m4aMPlayVolumeControl + str r4, [sp] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x78 + movs r3, 0xA + bl sub_8071F78 +_08071F56: + ldr r1, _08071F74 @ =gUnknown_2037ED0 + movs r0, 0x2 + strb r0, [r1] + bl sub_807227C + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08071F68: .4byte gUnknown_203ADFA +_08071F6C: .4byte gMPlay_BGM +_08071F70: .4byte 0x0000ffff +_08071F74: .4byte gUnknown_2037ED0 + thumb_func_end sub_8071F24 + + thumb_func_start sub_8071F78 +sub_8071F78: @ 8071F78 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + lsls r0, 16 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp] + lsls r4, 24 + lsrs r1, r4, 24 + ldr r3, _08071FC0 @ =0xffff0000 + adds r0, r3 + lsrs r7, r0, 16 + movs r6, 0x8C + movs r0, 0 + mov r9, r0 + movs r5, 0 + movs r4, 0xF0 + lsls r4, 6 + mov r8, r5 + cmp r1, 0xC + bhi _0807208A + lsls r0, r1, 2 + ldr r1, _08071FC4 @ =_08071FC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08071FC0: .4byte 0xffff0000 +_08071FC4: .4byte _08071FC8 + .align 2, 0 +_08071FC8: + .4byte _0807208A + .4byte _08071FFC + .4byte _08072002 + .4byte _08072010 + .4byte _08072020 + .4byte _08072038 + .4byte _08072044 + .4byte _08072054 + .4byte _0807205E + .4byte _08072068 + .4byte _08072078 + .4byte _08072088 + .4byte _08072084 +_08071FFC: + movs r6, 0x14 + movs r5, 0xE1 + b _0807208A +_08072002: + movs r5, 0xE1 + ldr r4, _0807200C @ =0x00003cf0 + movs r1, 0x14 + b _0807202C + .align 2, 0 +_0807200C: .4byte 0x00003cf0 +_08072010: + movs r6, 0x32 + movs r5, 0xC8 + ldr r4, _0807201C @ =0x00003db8 + movs r3, 0x14 + b _0807204A + .align 2, 0 +_0807201C: .4byte 0x00003db8 +_08072020: + movs r6, 0x19 + movs r0, 0x1 + mov r9, r0 + movs r5, 0x64 + ldr r4, _08072034 @ =0x00003cf0 + movs r1, 0xC0 +_0807202C: + mov r8, r1 + movs r2, 0x5A + b _0807208A + .align 2, 0 +_08072034: .4byte 0x00003cf0 +_08072038: + movs r5, 0xC8 + ldr r4, _08072040 @ =0x00003868 + b _0807208A + .align 2, 0 +_08072040: .4byte 0x00003868 +_08072044: + movs r5, 0xDC + ldr r4, _08072050 @ =0x00003cc3 + movs r3, 0xC0 +_0807204A: + mov r8, r3 + movs r2, 0x5A + b _0807208A + .align 2, 0 +_08072050: .4byte 0x00003cc3 +_08072054: + movs r6, 0xA + movs r5, 0x64 + movs r4, 0xE8 + lsls r4, 6 + b _0807208A +_0807205E: + movs r6, 0x3C + movs r5, 0xE1 + movs r4, 0xF4 + lsls r4, 6 + b _0807208A +_08072068: + movs r6, 0xF + movs r0, 0x1 + mov r9, r0 + movs r5, 0x7D + ldr r4, _08072074 @ =0x00003b60 + b _0807208A + .align 2, 0 +_08072074: .4byte 0x00003b60 +_08072078: + movs r6, 0x64 + movs r5, 0xE1 + ldr r4, _08072080 @ =0x00003b60 + b _0807208A + .align 2, 0 +_08072080: .4byte 0x00003b60 +_08072084: + movs r6, 0x14 + movs r5, 0xE1 +_08072088: + ldr r4, _080720E4 @ =0x00003a98 +_0807208A: + adds r0, r2, 0 + bl SetPokemonCryVolume + mov r1, r10 + lsls r0, r1, 24 + asrs r0, 24 + bl SetPokemonCryPanpot + adds r0, r4, 0 + bl SetPokemonCryPitch + adds r0, r6, 0 + bl SetPokemonCryLength + movs r0, 0 + bl SetPokemonCryProgress + adds r0, r5, 0 + bl SetPokemonCryRelease + mov r3, r8 + lsls r0, r3, 24 + asrs r0, 24 + bl SetPokemonCryChorus + ldr r0, [sp] + bl SetPokemonCryPriority + adds r0, r7, 0 + bl sub_8043304 + adds r7, r0, 0 + movs r1, 0x7F + ands r1, r7 + lsrs r0, r7, 7 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + cmp r0, 0x1 + beq _08072118 + cmp r0, 0x1 + bgt _080720E8 + cmp r0, 0 + beq _080720F2 + b _08072186 + .align 2, 0 +_080720E4: .4byte 0x00003a98 +_080720E8: + cmp r2, 0x2 + beq _0807213C + cmp r2, 0x3 + beq _08072160 + b _08072186 +_080720F2: + mov r0, r9 + cmp r0, 0 + beq _08072108 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08072104 @ =gUnknown_848DB44 + b _0807217C + .align 2, 0 +_08072104: .4byte gUnknown_848DB44 +_08072108: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08072114 @ =gUnknown_848C914 + b _0807217C + .align 2, 0 +_08072114: .4byte gUnknown_848C914 +_08072118: + mov r3, r9 + cmp r3, 0 + beq _0807212C + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08072128 @ =gUnknown_848E144 + b _0807217C + .align 2, 0 +_08072128: .4byte gUnknown_848E144 +_0807212C: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08072138 @ =gUnknown_848CF14 + b _0807217C + .align 2, 0 +_08072138: .4byte gUnknown_848CF14 +_0807213C: + mov r0, r9 + cmp r0, 0 + beq _08072150 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807214C @ =gUnknown_848E744 + b _0807217C + .align 2, 0 +_0807214C: .4byte gUnknown_848E744 +_08072150: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _0807215C @ =gUnknown_848D514 + b _0807217C + .align 2, 0 +_0807215C: .4byte gUnknown_848D514 +_08072160: + mov r3, r9 + cmp r3, 0 + beq _08072174 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08072170 @ =gUnknown_848ED44 + b _0807217C + .align 2, 0 +_08072170: .4byte gUnknown_848ED44 +_08072174: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08072198 @ =gUnknown_848DB14 +_0807217C: + adds r0, r1 + bl SetPokemonCryTone + ldr r1, _0807219C @ =gUnknown_2037ECC + str r0, [r1] +_08072186: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08072198: .4byte gUnknown_848DB14 +_0807219C: .4byte gUnknown_2037ECC + thumb_func_end sub_8071F78 + + thumb_func_start sub_80721A0 +sub_80721A0: @ 80721A0 + push {lr} + ldr r0, _080721B8 @ =sub_8072234 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080721BC + bl sub_8000944 + movs r0, 0x1 + b _080721BE + .align 2, 0 +_080721B8: .4byte sub_8072234 +_080721BC: + movs r0, 0 +_080721BE: + pop {r1} + bx r1 + thumb_func_end sub_80721A0 + + thumb_func_start sub_80721C4 +sub_80721C4: @ 80721C4 + push {lr} + ldr r0, _080721D8 @ =gUnknown_2037ECC + ldr r0, [r0] + bl m4aMPlayStop + bl sub_8000944 + pop {r0} + bx r0 + .align 2, 0 +_080721D8: .4byte gUnknown_2037ECC + thumb_func_end sub_80721C4 + + thumb_func_start sub_80721DC +sub_80721DC: @ 80721DC + push {lr} + ldr r0, _080721EC @ =gUnknown_2037ECC + ldr r0, [r0] + bl m4aMPlayStop + pop {r0} + bx r0 + .align 2, 0 +_080721EC: .4byte gUnknown_2037ECC + thumb_func_end sub_80721DC + + thumb_func_start sub_80721F0 +sub_80721F0: @ 80721F0 + push {lr} + ldr r0, _08072208 @ =gUnknown_2037ECC + ldr r0, [r0] + bl IsPokemonCryPlaying + cmp r0, 0 + bne _0807220C + bl sub_8000944 + movs r0, 0 + b _0807220E + .align 2, 0 +_08072208: .4byte gUnknown_2037ECC +_0807220C: + movs r0, 0x1 +_0807220E: + pop {r1} + bx r1 + thumb_func_end sub_80721F0 + + thumb_func_start sub_8072214 +sub_8072214: @ 8072214 + push {lr} + ldr r0, _08072228 @ =gUnknown_2037ECC + ldr r0, [r0] + bl IsPokemonCryPlaying + cmp r0, 0 + bne _0807222C + movs r0, 0 + b _0807222E + .align 2, 0 +_08072228: .4byte gUnknown_2037ECC +_0807222C: + movs r0, 0x1 +_0807222E: + pop {r1} + bx r1 + thumb_func_end sub_8072214 + + thumb_func_start sub_8072234 +sub_8072234: @ 8072234 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08072248 @ =gUnknown_2037ED0 + ldrb r0, [r1] + cmp r0, 0 + beq _0807224C + subs r0, 0x1 + strb r0, [r1] + b _0807226A + .align 2, 0 +_08072248: .4byte gUnknown_2037ED0 +_0807224C: + ldr r0, _08072270 @ =gUnknown_2037ECC + ldr r0, [r0] + bl IsPokemonCryPlaying + cmp r0, 0 + bne _0807226A + ldr r0, _08072274 @ =gMPlay_BGM + ldr r1, _08072278 @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + adds r0, r4, 0 + bl sub_8077508 +_0807226A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08072270: .4byte gUnknown_2037ECC +_08072274: .4byte gMPlay_BGM +_08072278: .4byte 0x0000ffff + thumb_func_end sub_8072234 + + thumb_func_start sub_807227C +sub_807227C: @ 807227C + push {r4,lr} + ldr r4, _0807229C @ =sub_8072234 + adds r0, r4, 0 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08072296 + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C +_08072296: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807229C: .4byte sub_8072234 + thumb_func_end sub_807227C + + thumb_func_start sub_80722A0 +sub_80722A0: @ 80722A0 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080722C4 @ =gUnknown_3005080 + ldrb r0, [r0] + cmp r0, 0 + beq _080722B0 + movs r1, 0 +_080722B0: + ldr r0, _080722C8 @ =0x0000ffff + cmp r1, r0 + bne _080722B8 + movs r1, 0 +_080722B8: + adds r0, r1, 0 + bl m4aSongNumStart + pop {r0} + bx r0 + .align 2, 0 +_080722C4: .4byte gUnknown_3005080 +_080722C8: .4byte 0x0000ffff + thumb_func_end sub_80722A0 + + thumb_func_start sub_80722CC +sub_80722CC: @ 80722CC + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _080722EC @ =gUnknown_2031DD8 + ldrb r0, [r0] + cmp r0, 0 + bne _080722E8 + ldr r0, _080722F0 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _080722E8 + adds r0, r1, 0 + bl m4aSongNumStart +_080722E8: + pop {r0} + bx r0 + .align 2, 0 +_080722EC: .4byte gUnknown_2031DD8 +_080722F0: .4byte gUnknown_203ADFA + thumb_func_end sub_80722CC + + thumb_func_start sub_80722F4 +sub_80722F4: @ 80722F4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + bl m4aSongNumStart + ldr r6, _0807233C @ =gMPlay_SE1 + adds r0, r6, 0 + bl m4aMPlayImmInit + ldr r0, _08072340 @ =gMPlay_SE2 + mov r8, r0 + bl m4aMPlayImmInit + ldr r5, _08072344 @ =0x0000ffff + lsls r4, 24 + asrs r4, 24 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl m4aMPlayPanpotControl + mov r0, r8 + adds r1, r5, 0 + adds r2, r4, 0 + bl m4aMPlayPanpotControl + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807233C: .4byte gMPlay_SE1 +_08072340: .4byte gMPlay_SE2 +_08072344: .4byte 0x0000ffff + thumb_func_end sub_80722F4 + + thumb_func_start sub_8072348 +sub_8072348: @ 8072348 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + bl m4aSongNumStart + ldr r5, _08072374 @ =gMPlay_SE1 + adds r0, r5, 0 + bl m4aMPlayImmInit + ldr r1, _08072378 @ =0x0000ffff + lsls r4, 24 + asrs r4, 24 + adds r0, r5, 0 + adds r2, r4, 0 + bl m4aMPlayPanpotControl + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08072374: .4byte gMPlay_SE1 +_08072378: .4byte 0x0000ffff + thumb_func_end sub_8072348 + + thumb_func_start sub_807237C +sub_807237C: @ 807237C + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + bl m4aSongNumStart + ldr r5, _080723A8 @ =gMPlay_SE2 + adds r0, r5, 0 + bl m4aMPlayImmInit + ldr r1, _080723AC @ =0x0000ffff + lsls r4, 24 + asrs r4, 24 + adds r0, r5, 0 + adds r2, r4, 0 + bl m4aMPlayPanpotControl + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080723A8: .4byte gMPlay_SE2 +_080723AC: .4byte 0x0000ffff + thumb_func_end sub_807237C + + thumb_func_start sub_80723B0 +sub_80723B0: @ 80723B0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _080723D4 @ =gMPlay_SE1 + ldr r5, _080723D8 @ =0x0000ffff + lsls r4, 24 + asrs r4, 24 + adds r1, r5, 0 + adds r2, r4, 0 + bl m4aMPlayPanpotControl + ldr r0, _080723DC @ =gMPlay_SE2 + adds r1, r5, 0 + adds r2, r4, 0 + bl m4aMPlayPanpotControl + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080723D4: .4byte gMPlay_SE1 +_080723D8: .4byte 0x0000ffff +_080723DC: .4byte gMPlay_SE2 + thumb_func_end sub_80723B0 + + thumb_func_start sub_80723E0 +sub_80723E0: @ 80723E0 + push {lr} + ldr r0, _08072410 @ =gMPlay_SE1 + ldr r1, [r0, 0x4] + movs r2, 0x80 + lsls r2, 24 + adds r3, r0, 0 + cmp r1, 0 + bge _080723FA + ldr r0, _08072414 @ =gMPlay_SE2 + ldr r0, [r0, 0x4] + ands r0, r2 + cmp r0, 0 + bne _0807240C +_080723FA: + ldr r1, _08072418 @ =0x0000ffff + ldrh r0, [r3, 0x4] + cmp r0, 0 + bne _0807241C + ldr r0, _08072414 @ =gMPlay_SE2 + ldr r0, [r0, 0x4] + ands r0, r1 + cmp r0, 0 + bne _0807241C +_0807240C: + movs r0, 0 + b _0807241E + .align 2, 0 +_08072410: .4byte gMPlay_SE1 +_08072414: .4byte gMPlay_SE2 +_08072418: .4byte 0x0000ffff +_0807241C: + movs r0, 0x1 +_0807241E: + pop {r1} + bx r1 + thumb_func_end sub_80723E0 + + thumb_func_start sub_8072424 +sub_8072424: @ 8072424 + push {lr} + ldr r0, _0807243C @ =gMPlay_BGM + ldr r1, [r0, 0x4] + cmp r1, 0 + blt _08072444 + ldr r0, _08072440 @ =0x0000ffff + ands r1, r0 + cmp r1, 0 + beq _08072444 + movs r0, 0x1 + b _08072446 + .align 2, 0 +_0807243C: .4byte gMPlay_BGM +_08072440: .4byte 0x0000ffff +_08072444: + movs r0, 0 +_08072446: + pop {r1} + bx r1 + thumb_func_end sub_8072424 + + thumb_func_start sub_807244C +sub_807244C: @ 807244C + push {lr} + ldr r0, _08072464 @ =gMPlay_SE3 + ldr r1, [r0, 0x4] + cmp r1, 0 + blt _0807246C + ldr r0, _08072468 @ =0x0000ffff + ands r1, r0 + cmp r1, 0 + beq _0807246C + movs r0, 0x1 + b _0807246E + .align 2, 0 +_08072464: .4byte gMPlay_SE3 +_08072468: .4byte 0x0000ffff +_0807246C: + movs r0, 0 +_0807246E: + pop {r1} + bx r1 + thumb_func_end sub_807244C + + thumb_func_start sub_8072474 +sub_8072474: @ 8072474 + push {lr} + adds r2, r0, 0 + lsls r2, 16 + lsrs r2, 16 + ldr r1, _08072490 @ =gUnknown_203F174 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _08072494 @ =gMPlay_BGM + ldr r1, _08072498 @ =0x0000ffff + bl m4aMPlayVolumeControl + pop {r0} + bx r0 + .align 2, 0 +_08072490: .4byte gUnknown_203F174 +_08072494: .4byte gMPlay_BGM +_08072498: .4byte 0x0000ffff + thumb_func_end sub_8072474 + + thumb_func_start sub_807249C +sub_807249C: @ 807249C + push {lr} + ldr r1, _080724B4 @ =gUnknown_203F174 + movs r0, 0 + strb r0, [r1] + ldr r0, _080724B8 @ =gMPlay_BGM + ldr r1, _080724BC @ =0x0000ffff + movs r2, 0x80 + lsls r2, 1 + bl m4aMPlayVolumeControl + pop {r0} + bx r0 + .align 2, 0 +_080724B4: .4byte gUnknown_203F174 +_080724B8: .4byte gMPlay_BGM +_080724BC: .4byte 0x0000ffff + thumb_func_end sub_807249C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/sprite.s b/asm/sprite.s new file mode 100644 index 000000000..de75b0b31 --- /dev/null +++ b/asm/sprite.s @@ -0,0 +1,4672 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8006B10 +sub_8006B10: @ 8006B10 + push {r4,lr} + movs r0, 0 + movs r1, 0x80 + bl sub_80072E8 + bl sub_8007770 + bl sub_8007350 + bl sub_8008560 + bl sub_80087C4 + ldr r1, _08006B4C @ =gUnknown_2021B44 + movs r0, 0x40 + strb r0, [r1] + ldr r0, _08006B50 @ =gUnknown_2021B46 + movs r4, 0 + strh r4, [r0] + movs r0, 0 + bl sub_8007434 + ldr r0, _08006B54 @ =gUnknown_2021BC8 + strh r4, [r0] + ldr r0, _08006B58 @ =gUnknown_2021BCA + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08006B4C: .4byte gUnknown_2021B44 +_08006B50: .4byte gUnknown_2021B46 +_08006B54: .4byte gUnknown_2021BC8 +_08006B58: .4byte gUnknown_2021BCA + thumb_func_end sub_8006B10 + + thumb_func_start sub_8006B5C +sub_8006B5C: @ 8006B5C + push {r4-r7,lr} + movs r6, 0 + movs r7, 0x1 +_08006B62: + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, _08006BA4 @ =gUnknown_202063C + adds r4, r0, r1 + adds r5, r4, 0 + adds r5, 0x3E + ldrb r1, [r5] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08006B92 + ldr r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + ldrb r1, [r5] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08006B92 + adds r0, r4, 0 + bl sub_8007824 +_08006B92: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3F + bls _08006B62 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08006BA4: .4byte gUnknown_202063C + thumb_func_end sub_8006B5C + + thumb_func_start sub_8006BA8 +sub_8006BA8: @ 8006BA8 + push {r4,r5,lr} + bl sub_8006BF4 + bl sub_8006CB8 + bl sub_8006CF8 + ldr r5, _08006BE8 @ =gUnknown_30030F0 + ldr r0, _08006BEC @ =0x00000439 + adds r5, r0 + ldrb r0, [r5] + lsls r4, r0, 31 + lsrs r4, 31 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5] + bl sub_8006F04 + bl sub_8006EB8 + movs r2, 0x1 + ldrb r1, [r5] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + orrs r4, r0 + strb r4, [r5] + ldr r0, _08006BF0 @ =gUnknown_2021840 + strb r2, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08006BE8: .4byte gUnknown_30030F0 +_08006BEC: .4byte 0x00000439 +_08006BF0: .4byte gUnknown_2021840 + thumb_func_end sub_8006BA8 + + thumb_func_start sub_8006BF4 +sub_8006BF4: @ 8006BF4 + push {r4-r7,lr} + movs r4, 0 + ldr r7, _08006C60 @ =gUnknown_202063C + ldr r0, _08006C64 @ =0x000001ff + adds r5, r0, 0 + ldr r6, _08006C68 @ =0xfffffe00 +_08006C00: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r7 + adds r0, r3, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0x1 + bne _08006CA6 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08006C74 + movs r2, 0x20 + ldrsh r1, [r3, r2] + movs r2, 0x24 + ldrsh r0, [r3, r2] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r0 + ldr r0, _08006C6C @ =gUnknown_2021BC8 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r1, r0 + ands r1, r5 + ldrh r2, [r3, 0x2] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + ldrh r1, [r3, 0x26] + ldrh r0, [r3, 0x22] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x29 + ldrb r0, [r0] + ldr r2, _08006C70 @ =gUnknown_2021BCA + adds r0, r1 + ldrb r2, [r2] + adds r0, r2 + b _08006CA4 + .align 2, 0 +_08006C60: .4byte gUnknown_202063C +_08006C64: .4byte 0x000001ff +_08006C68: .4byte 0xfffffe00 +_08006C6C: .4byte gUnknown_2021BC8 +_08006C70: .4byte gUnknown_2021BCA +_08006C74: + movs r2, 0x20 + ldrsh r1, [r3, r2] + movs r2, 0x24 + ldrsh r0, [r3, r2] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r0 + ands r1, r5 + ldrh r2, [r3, 0x2] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + ldrh r1, [r3, 0x26] + ldrh r0, [r3, 0x22] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x29 + ldrb r0, [r0] + adds r0, r1 +_08006CA4: + strb r0, [r3] +_08006CA6: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3F + bls _08006C00 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8006BF4 + + thumb_func_start sub_8006CB8 +sub_8006CB8: @ 8006CB8 + push {r4,lr} + movs r2, 0 + ldr r4, _08006CF0 @ =gUnknown_202063C + ldr r3, _08006CF4 @ =gUnknown_2021780 +_08006CC0: + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r4 + adds r1, r0, 0 + adds r1, 0x43 + ldrb r1, [r1] + ldrb r0, [r0, 0x5] + lsls r0, 28 + lsrs r0, 30 + lsls r0, 8 + orrs r1, r0 + lsls r0, r2, 1 + adds r0, r3 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x3F + bls _08006CC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08006CF0: .4byte gUnknown_202063C +_08006CF4: .4byte gUnknown_2021780 + thumb_func_end sub_8006CB8 + + thumb_func_start sub_8006CF8 +sub_8006CF8: @ 8006CF8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0x1 + mov r12, r0 + ldr r1, _08006DC0 @ =gUnknown_2021800 + mov r10, r1 + ldr r3, _08006DC4 @ =0xffffff00 + mov r9, r3 + ldr r6, _08006DC8 @ =0xc0000300 + mov r8, r6 +_08006D14: + mov r5, r12 + mov r0, r12 + subs r0, 0x1 + add r0, r10 + ldrb r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r7, _08006DCC @ =gUnknown_202063C + adds r3, r0, r7 + mov r0, r12 + add r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r7 + lsls r2, 1 + ldr r0, _08006DD0 @ =gUnknown_2021780 + adds r2, r0 + ldrh r2, [r2] + str r2, [sp] + lsls r1, 1 + adds r1, r0 + ldrh r6, [r1] + ldrb r1, [r3] + ldrb r2, [r4] + adds r0, r1, 0 + cmp r0, 0x9F + ble _08006D56 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006D56: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _08006D64 + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006D64: + ldr r0, [r3] + mov r7, r8 + ands r0, r7 + cmp r0, r8 + bne _08006D88 + ldrb r0, [r3, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006D7A + cmp r0, 0x2 + bne _08006D88 +_08006D7A: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006D88 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006D88: + ldr r0, [r4] + mov r3, r8 + ands r0, r3 + cmp r0, r8 + bne _08006DAC + ldrb r0, [r4, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006D9E + cmp r0, 0x2 + bne _08006DAC +_08006D9E: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006DAC + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006DAC: + movs r7, 0x1 + add r12, r7 + cmp r5, 0 + beq _08006E92 + ldr r0, [sp] + cmp r0, r6 + bhi _08006DD4 + cmp r0, r6 + bne _08006E92 + b _08006E8A + .align 2, 0 +_08006DC0: .4byte gUnknown_2021800 +_08006DC4: .4byte 0xffffff00 +_08006DC8: .4byte 0xc0000300 +_08006DCC: .4byte gUnknown_202063C +_08006DD0: .4byte gUnknown_2021780 +_08006DD4: + mov r1, r10 + adds r3, r5, r1 + ldrb r4, [r3] + subs r2, r5, 0x1 + adds r1, r2, r1 + ldrb r0, [r1] + strb r0, [r3] + strb r4, [r1] + lsls r2, 24 + lsrs r5, r2, 24 + subs r0, r5, 0x1 + add r0, r10 + ldrb r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r6, _08006EB0 @ =gUnknown_202063C + adds r3, r0, r6 + mov r7, r10 + adds r0, r5, r7 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r6 + lsls r2, 1 + ldr r0, _08006EB4 @ =gUnknown_2021780 + adds r2, r0 + ldrh r2, [r2] + str r2, [sp] + lsls r1, 1 + adds r1, r0 + ldrh r6, [r1] + ldrb r1, [r3] + ldrb r2, [r4] + adds r0, r1, 0 + cmp r0, 0x9F + ble _08006E26 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006E26: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _08006E34 + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006E34: + ldr r0, [r3] + mov r7, r8 + ands r0, r7 + cmp r0, r8 + bne _08006E58 + ldrb r0, [r3, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006E4A + cmp r0, 0x2 + bne _08006E58 +_08006E4A: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006E58 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006E58: + ldr r0, [r4] + mov r3, r8 + ands r0, r3 + cmp r0, r8 + bne _08006E7C + ldrb r0, [r4, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006E6E + cmp r0, 0x2 + bne _08006E7C +_08006E6E: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006E7C + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006E7C: + cmp r5, 0 + beq _08006E92 + ldr r7, [sp] + cmp r7, r6 + bhi _08006DD4 + cmp r7, r6 + bne _08006E92 +_08006E8A: + lsls r1, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _08006DD4 +_08006E92: + mov r1, r12 + lsls r0, r1, 24 + lsrs r0, 24 + mov r12, r0 + cmp r0, 0x3F + bhi _08006EA0 + b _08006D14 +_08006EA0: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08006EB0: .4byte gUnknown_202063C +_08006EB4: .4byte gUnknown_2021780 + thumb_func_end sub_8006CF8 + + thumb_func_start sub_8006EB8 +sub_8006EB8: @ 8006EB8 + push {r4-r6,lr} + movs r4, 0 + ldr r5, _08006EFC @ =gUnknown_30030F0 + ldr r6, _08006F00 @ =gUnknown_2021BCC +_08006EC0: + lsls r2, r4, 2 + lsls r1, r4, 5 + adds r1, r5 + lsls r3, r4, 3 + adds r3, r6 + ldrh r0, [r3] + strh r0, [r1, 0x3E] + adds r0, r2, 0x1 + lsls r0, 3 + adds r0, r5 + ldrh r1, [r3, 0x2] + strh r1, [r0, 0x3E] + adds r0, r2, 0x2 + lsls r0, 3 + adds r0, r5 + ldrh r1, [r3, 0x4] + strh r1, [r0, 0x3E] + adds r2, 0x3 + lsls r2, 3 + adds r2, r5 + ldrh r0, [r3, 0x6] + strh r0, [r2, 0x3E] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08006EC0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08006EFC: .4byte gUnknown_30030F0 +_08006F00: .4byte gUnknown_2021BCC + thumb_func_end sub_8006EB8 + + thumb_func_start sub_8006F04 +sub_8006F04: @ 8006F04 + push {r4-r6,lr} + sub sp, 0x4 + movs r4, 0 + mov r0, sp + strb r4, [r0] +_08006F0E: + ldr r0, _08006F78 @ =gUnknown_2021800 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08006F7C @ =gUnknown_202063C + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0x1 + bne _08006F3A + adds r0, r2, 0 + mov r1, sp + bl sub_8008A64 + lsls r0, 24 + cmp r0, 0 + bne _08006F70 +_08006F3A: + adds r4, 0x1 + cmp r4, 0x3F + ble _08006F0E + mov r0, sp + ldr r4, _08006F80 @ =gUnknown_2021B44 + ldrb r0, [r0] + ldrb r1, [r4] + cmp r0, r1 + bcs _08006F70 + mov r1, sp + ldr r5, _08006F84 @ =gUnknown_3003128 + ldr r0, _08006F88 @ =gUnknown_8231CE4 + ldr r2, [r0] + ldr r3, [r0, 0x4] +_08006F56: + ldrb r0, [r1] + lsls r0, 3 + adds r0, r5 + str r2, [r0] + str r3, [r0, 0x4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + ldrb r6, [r4] + cmp r0, r6 + bcc _08006F56 +_08006F70: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08006F78: .4byte gUnknown_2021800 +_08006F7C: .4byte gUnknown_202063C +_08006F80: .4byte gUnknown_2021B44 +_08006F84: .4byte gUnknown_3003128 +_08006F88: .4byte gUnknown_8231CE4 + thumb_func_end sub_8006F04 + + thumb_func_start sub_8006F8C +sub_8006F8C: @ 8006F8C + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + lsls r3, 24 + lsrs r4, r3, 24 + movs r3, 0 + ldr r0, _08006FC8 @ =gUnknown_202063C + mov r12, r0 + lsls r5, r1, 16 + lsls r6, r2, 16 +_08006FA0: + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + add r0, r12 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _08006FCC + str r4, [sp] + adds r0, r3, 0 + adds r1, r7, 0 + asrs r2, r5, 16 + asrs r3, r6, 16 + bl sub_8007094 + lsls r0, 24 + lsrs r0, 24 + b _08006FD8 + .align 2, 0 +_08006FC8: .4byte gUnknown_202063C +_08006FCC: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _08006FA0 + movs r0, 0x40 +_08006FD8: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8006F8C + + thumb_func_start sub_8006FE0 +sub_8006FE0: @ 8006FE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + lsls r3, 24 + lsrs r6, r3, 24 + movs r3, 0x3F + ldr r0, _0800702C @ =gUnknown_202063C + mov r8, r0 + movs r0, 0x1 + negs r0, r0 + mov r12, r0 + lsls r4, r1, 16 + lsls r5, r2, 16 +_08006FFE: + lsls r0, r3, 16 + asrs r1, r0, 16 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _08007030 + lsls r0, r3, 24 + lsrs r0, 24 + str r6, [sp] + adds r1, r7, 0 + asrs r2, r4, 16 + asrs r3, r5, 16 + bl sub_8007094 + lsls r0, 24 + lsrs r0, 24 + b _0800703E + .align 2, 0 +_0800702C: .4byte gUnknown_202063C +_08007030: + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + asrs r0, 16 + cmp r0, r12 + bgt _08006FFE + movs r0, 0x40 +_0800703E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8006FE0 + + thumb_func_start sub_800704C +sub_800704C: @ 800704C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _08007084 @ =gUnknown_8231D00 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0800708C + ldr r4, _08007088 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r2, r1, r4 + adds r2, 0x3E + ldrb r0, [r2] + movs r3, 0x4 + orrs r0, r3 + strb r0, [r2] + adds r4, 0x1C + adds r1, r4 + str r6, [r1] + adds r0, r5, 0 + b _0800708E + .align 2, 0 +_08007084: .4byte gUnknown_8231D00 +_08007088: .4byte gUnknown_202063C +_0800708C: + movs r0, 0x40 +_0800708E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_800704C + + thumb_func_start sub_8007094 +sub_8007094: @ 8007094 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r1 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 4 + add r0, r10 + lsls r0, 2 + ldr r1, _08007158 @ =gUnknown_202063C + adds r7, r0, r1 + adds r0, r7, 0 + bl sub_80073DC + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x3F + adds r0, r7 + mov r9, r0 + ldrb r0, [r0] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x40 + orrs r0, r1 + mov r1, r9 + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0x43 + strb r4, [r0] + mov r1, r8 + ldr r0, [r1, 0x4] + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r7] + str r1, [r7, 0x4] + mov r1, r8 + ldr r0, [r1, 0x8] + str r0, [r7, 0x8] + ldr r0, [r1, 0x10] + str r0, [r7, 0x10] + str r1, [r7, 0x14] + ldr r0, [r1, 0x14] + str r0, [r7, 0x1C] + strh r5, [r7, 0x20] + strh r6, [r7, 0x22] + ldrb r3, [r7, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r7, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r7, 0 + bl sub_80073F0 + mov r0, r8 + ldrh r1, [r0] + ldr r4, _0800715C @ =0xffff0000 + lsrs r0, r4, 16 + cmp r1, r0 + bne _08007190 + mov r1, r8 + ldr r0, [r1, 0xC] + str r0, [r7, 0xC] + ldrh r0, [r0, 0x4] + lsrs r0, 5 + lsls r0, 24 + lsrs r0, 24 + bl sub_8007434 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + asrs r1, r4, 16 + cmp r0, r1 + bne _08007160 + adds r0, r7, 0 + bl sub_80073DC + movs r0, 0x40 + b _080071D8 + .align 2, 0 +_08007158: .4byte gUnknown_202063C +_0800715C: .4byte 0xffff0000 +_08007160: + ldr r1, _08007188 @ =0x000003ff + adds r0, r1, 0 + ands r2, r0 + ldrh r1, [r7, 0x4] + ldr r0, _0800718C @ =0xfffffc00 + ands r0, r1 + orrs r0, r2 + strh r0, [r7, 0x4] + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + mov r1, r9 + strb r0, [r1] + adds r1, r7, 0 + adds r1, 0x40 + movs r0, 0 + strh r0, [r1] + b _080071A4 + .align 2, 0 +_08007188: .4byte 0x000003ff +_0800718C: .4byte 0xfffffc00 +_08007190: + mov r1, r8 + ldrh r0, [r1] + bl sub_8008804 + adds r1, r7, 0 + adds r1, 0x40 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8008508 +_080071A4: + ldrb r0, [r7, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080071B8 + adds r0, r7, 0 + bl sub_800860C +_080071B8: + mov r0, r8 + ldrh r1, [r0, 0x2] + ldr r0, _080071E8 @ =0x0000ffff + cmp r1, r0 + beq _080071D6 + mov r1, r8 + ldrh r0, [r1, 0x2] + bl sub_80089E8 + lsls r0, 4 + ldrb r2, [r7, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x5] +_080071D6: + mov r0, r10 +_080071D8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080071E8: .4byte 0x0000ffff + thumb_func_end sub_8007094 + + thumb_func_start sub_80071EC +sub_80071EC: @ 80071EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + movs r3, 0 + ldr r5, _0800725C @ =gUnknown_202063C + lsls r1, 16 + mov r12, r1 + lsls r2, 16 + mov r8, r2 +_0800720C: + lsls r0, r3, 4 + adds r0, r3 + lsls r6, r0, 2 + adds r4, r6, r5 + adds r7, r4, 0 + adds r7, 0x3E + ldrb r0, [r7] + lsls r0, 31 + cmp r0, 0 + bne _08007264 + mov r0, r9 + str r0, [sp] + adds r0, r3, 0 + mov r1, r10 + mov r3, r12 + asrs r2, r3, 16 + mov r5, r8 + asrs r3, r5, 16 + bl sub_8007094 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + cmp r5, 0x40 + beq _0800726E + ldr r1, _08007260 @ =gUnknown_2020658 + adds r0, r6, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + ldrb r0, [r7] + lsls r0, 31 + cmp r0, 0 + beq _08007258 + adds r0, r4, 0 + bl sub_8007824 +_08007258: + adds r0, r5, 0 + b _08007270 + .align 2, 0 +_0800725C: .4byte gUnknown_202063C +_08007260: .4byte gUnknown_2020658 +_08007264: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _0800720C +_0800726E: + movs r0, 0x40 +_08007270: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80071EC + + thumb_func_start sub_8007280 +sub_8007280: @ 8007280 + push {r4-r7,lr} + adds r5, r0, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080072DC + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080072D6 + ldr r0, [r5, 0xC] + ldrh r2, [r0, 0x4] + lsrs r2, 5 + ldrh r0, [r5, 0x4] + lsls r0, 22 + lsrs r1, r0, 22 + adds r4, r1, r2 + adds r3, r1, 0 + cmp r3, r4 + bcs _080072D6 + ldr r0, _080072E4 @ =gUnknown_2021B48 + mov r12, r0 + movs r6, 0x7 + movs r7, 0x1 +_080072BA: + lsrs r2, r3, 3 + add r2, r12 + adds r0, r3, 0 + ands r0, r6 + adds r1, r7, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bcc _080072BA +_080072D6: + adds r0, r5, 0 + bl sub_80073DC +_080072DC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080072E4: .4byte gUnknown_2021B48 + thumb_func_end sub_8007280 + + thumb_func_start sub_80072E8 +sub_80072E8: @ 80072E8 + push {r4-r6,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + lsrs r3, r0, 24 + cmp r3, r4 + bcs _08007310 + ldr r6, _08007318 @ =gUnknown_3003128 + ldr r5, _0800731C @ =gUnknown_8231CE4 +_080072FA: + lsls r0, r3, 3 + adds r0, r6 + ldr r1, [r5] + ldr r2, [r5, 0x4] + str r1, [r0] + str r2, [r0, 0x4] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r4 + bcc _080072FA +_08007310: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007318: .4byte gUnknown_3003128 +_0800731C: .4byte gUnknown_8231CE4 + thumb_func_end sub_80072E8 + + thumb_func_start sub_8007320 +sub_8007320: @ 8007320 + push {lr} + ldr r2, _08007344 @ =gUnknown_30030F0 + ldr r1, _08007348 @ =0x00000439 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007340 + adds r0, r2, 0 + adds r0, 0x38 + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _0800734C @ =0x04000100 + bl CpuSet +_08007340: + pop {r0} + bx r0 + .align 2, 0 +_08007344: .4byte gUnknown_30030F0 +_08007348: .4byte 0x00000439 +_0800734C: .4byte 0x04000100 + thumb_func_end sub_8007320 + + thumb_func_start sub_8007350 +sub_8007350: @ 8007350 + push {r4,r5,lr} + ldr r0, _08007384 @ =gUnknown_2021840 + movs r1, 0 + strb r1, [r0] + ldr r0, _08007388 @ =gUnknown_2021841 + strb r1, [r0] + movs r2, 0 + ldr r4, _0800738C @ =gUnknown_2021844 + movs r3, 0 + adds r5, r4, 0x4 +_08007364: + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r4 + str r3, [r1] + adds r0, r5 + str r3, [r0] + strh r3, [r1, 0x8] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _08007364 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007384: .4byte gUnknown_2021840 +_08007388: .4byte gUnknown_2021841 +_0800738C: .4byte gUnknown_2021844 + thumb_func_end sub_8007350 + + thumb_func_start sub_8007390 +sub_8007390: @ 8007390 + push {r4,lr} + movs r1, 0 + ldr r4, _080073B8 @ =gUnknown_2021BCC + movs r3, 0 + movs r2, 0x80 + lsls r2, 1 +_0800739C: + lsls r0, r1, 3 + adds r0, r4 + strh r2, [r0] + strh r3, [r0, 0x2] + strh r3, [r0, 0x4] + strh r2, [r0, 0x6] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _0800739C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080073B8: .4byte gUnknown_2021BCC + thumb_func_end sub_8007390 + + thumb_func_start sub_80073BC +sub_80073BC: @ 80073BC + push {r4,r5,lr} + ldr r5, [sp, 0xC] + lsls r0, 24 + ldr r4, _080073D8 @ =gUnknown_2021BCC + lsrs r0, 21 + adds r0, r4 + strh r1, [r0] + strh r2, [r0, 0x2] + strh r3, [r0, 0x4] + strh r5, [r0, 0x6] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080073D8: .4byte gUnknown_2021BCC + thumb_func_end sub_80073BC + + thumb_func_start sub_80073DC +sub_80073DC: @ 80073DC + push {lr} + ldr r1, _080073EC @ =gUnknown_8231CA0 + movs r2, 0x44 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_080073EC: .4byte gUnknown_8231CA0 + thumb_func_end sub_80073DC + + thumb_func_start sub_80073F0 +sub_80073F0: @ 80073F0 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsls r2, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r4, _08007430 @ =gUnknown_8231C85 + lsrs r2, 23 + lsrs r1, 21 + adds r2, r1 + adds r0, r2, r4 + ldrb r5, [r0] + adds r4, 0x1 + adds r2, r4 + ldrb r1, [r2] + movs r0, 0x2 + ands r3, r0 + cmp r3, 0 + beq _0800741E + lsls r0, r5, 25 + lsrs r5, r0, 24 + lsls r0, r1, 25 + lsrs r1, r0, 24 +_0800741E: + adds r0, r6, 0 + adds r0, 0x28 + strb r5, [r0] + adds r0, 0x1 + strb r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007430: .4byte gUnknown_8231C85 + thumb_func_end sub_80073F0 + + thumb_func_start sub_8007434 +sub_8007434: @ 8007434 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _0800748A + ldr r0, _08007478 @ =gUnknown_2021B46 + ldrh r3, [r0] + ldr r0, _0800747C @ =0x000003ff + cmp r3, r0 + bhi _08007472 + ldr r7, _08007480 @ =gUnknown_2021B48 + movs r6, 0x7 + adds r4, r0, 0 + movs r5, 0x1 +_08007456: + lsrs r2, r3, 3 + adds r2, r7 + adds r0, r3, 0 + ands r0, r6 + adds r1, r5, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bls _08007456 +_08007472: + movs r0, 0 + b _0800753C + .align 2, 0 +_08007478: .4byte gUnknown_2021B46 +_0800747C: .4byte 0x000003ff +_08007480: .4byte gUnknown_2021B48 +_08007484: + movs r0, 0x1 + negs r0, r0 + b _0800753C +_0800748A: + ldr r0, _08007548 @ =gUnknown_2021B46 + ldrh r3, [r0] + ldr r0, _0800754C @ =gUnknown_2021B48 + mov r9, r0 + movs r7, 0x7 + movs r6, 0x1 +_08007496: + lsrs r0, r3, 3 + add r0, r9 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, 0 + beq _080074CA + movs r5, 0x80 + lsls r5, 3 + ldr r2, _0800754C @ =gUnknown_2021B48 +_080074AE: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r5 + beq _08007484 + lsrs r0, 19 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, 0 + bne _080074AE +_080074CA: + mov r8, r3 + movs r2, 0x1 + cmp r2, r4 + beq _08007504 + movs r1, 0x80 + lsls r1, 3 + mov r12, r1 + ldr r5, _0800754C @ =gUnknown_2021B48 +_080074DA: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r12 + beq _08007484 + lsrs r0, 19 + adds r0, r5 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, 0 + bne _08007500 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r4 + bne _080074DA +_08007500: + cmp r2, r4 + bne _08007496 +_08007504: + mov r1, r8 + lsls r0, r1, 16 + lsrs r3, r0, 16 + asrs r1, r0, 16 + adds r1, r4, r1 + adds r6, r0, 0 + cmp r3, r1 + bge _0800753A + ldr r0, _0800754C @ =gUnknown_2021B48 + mov r8, r0 + movs r7, 0x7 + adds r4, r1, 0 + movs r5, 0x1 +_0800751E: + lsrs r2, r3, 3 + add r2, r8 + adds r1, r3, 0 + ands r1, r7 + adds r0, r5, 0 + lsls r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + blt _0800751E +_0800753A: + asrs r0, r6, 16 +_0800753C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08007548: .4byte gUnknown_2021B46 +_0800754C: .4byte gUnknown_2021B48 + thumb_func_end sub_8007434 + + thumb_func_start sub_8007550 +sub_8007550: @ 8007550 + push {r4-r6,lr} + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 24 + lsrs r1, 24 + lsrs r0, 19 + lsls r0, 24 + lsrs r3, r0, 24 + adds r6, r3, 0 + movs r0, 0x7 + ands r2, r0 + adds r4, r2, 0 + movs r5, 0 + cmp r1, 0 + bne _08007588 + movs r0, 0x1 + lsls r0, r2 + mvns r0, r0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08007584 @ =gUnknown_2021B48 + adds r0, r3, r0 + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _080075B4 + .align 2, 0 +_08007584: .4byte gUnknown_2021B48 +_08007588: + cmp r1, 0x1 + bne _080075A4 + lsls r1, r2 + lsls r0, r1, 24 + lsrs r2, r0, 24 + ldr r0, _080075A0 @ =gUnknown_2021B48 + adds r0, r3, r0 + ldrb r1, [r0] + orrs r2, r1 + strb r2, [r0] + b _080075B4 + .align 2, 0 +_080075A0: .4byte gUnknown_2021B48 +_080075A4: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r4 + lsrs r5, r0, 24 + ldr r0, _080075BC @ =gUnknown_2021B48 + adds r0, r6, r0 + ldrb r0, [r0] + ands r5, r0 +_080075B4: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080075BC: .4byte gUnknown_2021B48 + thumb_func_end sub_8007550 + + thumb_func_start sub_80075C0 +sub_80075C0: @ 80075C0 + push {r4-r7,lr} + adds r3, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08007602 + ldr r0, [r3, 0xC] + ldrh r2, [r0, 0x4] + lsrs r2, 5 + ldrh r0, [r3, 0x4] + lsls r0, 22 + lsrs r1, r0, 22 + adds r4, r2, r1 + adds r3, r1, 0 + cmp r3, r4 + bge _08007602 + ldr r7, _08007608 @ =gUnknown_2021B48 + movs r5, 0x7 + movs r6, 0x1 +_080075EA: + asrs r2, r3, 3 + adds r2, r7 + adds r0, r3, 0 + ands r0, r5 + adds r1, r6, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r3, 0x1 + cmp r3, r4 + blt _080075EA +_08007602: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007608: .4byte gUnknown_2021B48 + thumb_func_end sub_80075C0 + + thumb_func_start nullsub_8 +nullsub_8: @ 800760C + bx lr + thumb_func_end nullsub_8 + + thumb_func_start sub_8007610 +sub_8007610: @ 8007610 + push {r4-r7,lr} + ldr r0, _08007660 @ =gUnknown_2021840 + ldrb r0, [r0] + cmp r0, 0 + beq _08007658 + movs r4, 0 + ldr r1, _08007664 @ =gUnknown_2021841 + ldrb r0, [r1] + cmp r0, 0 + beq _08007652 + ldr r6, _08007668 @ =gUnknown_2021844 + adds r7, r6, 0x4 + adds r5, r1, 0 +_0800762A: + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r2, r1, r6 + ldr r0, [r2] + adds r1, r7 + ldr r1, [r1] + ldrh r2, [r2, 0x8] + lsrs r2, 1 + bl CpuSet + ldrb r1, [r5] + subs r1, 0x1 + strb r1, [r5] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + cmp r1, 0 + bne _0800762A +_08007652: + ldr r1, _08007660 @ =gUnknown_2021840 + movs r0, 0 + strb r0, [r1] +_08007658: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007660: .4byte gUnknown_2021840 +_08007664: .4byte gUnknown_2021841 +_08007668: .4byte gUnknown_2021844 + thumb_func_end sub_8007610 + + thumb_func_start sub_800766C +sub_800766C: @ 800766C + push {r4-r6,lr} + adds r5, r2, 0 + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r4, _080076C4 @ =gUnknown_2021841 + ldrb r0, [r4] + cmp r0, 0x3F + bhi _080076BC + ldr r3, _080076C8 @ =gUnknown_2021844 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + lsls r2, 3 + adds r2, r5 + ldr r1, [r2] + str r1, [r0] + ldrb r0, [r4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r0, r3, 0x4 + adds r1, r0 + lsls r0, r6, 5 + ldr r5, _080076CC @ =0x06010000 + adds r0, r5 + str r0, [r1] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x8] + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_080076BC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080076C4: .4byte gUnknown_2021841 +_080076C8: .4byte gUnknown_2021844 +_080076CC: .4byte 0x06010000 + thumb_func_end sub_800766C + + thumb_func_start sub_80076D0 +sub_80076D0: @ 80076D0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 16 + lsrs r6, r2, 16 + ldr r3, _08007718 @ =gUnknown_2021841 + ldrb r0, [r3] + cmp r0, 0x3F + bhi _08007710 + ldr r2, _0800771C @ =gUnknown_2021844 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + str r4, [r0] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0x4 + adds r0, r1 + str r5, [r0] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x8] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] +_08007710: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007718: .4byte gUnknown_2021841 +_0800771C: .4byte gUnknown_2021844 + thumb_func_end sub_80076D0 + + thumb_func_start sub_8007720 +sub_8007720: @ 8007720 + push {r4,lr} + adds r1, r0, 0 + ldr r3, _08007740 @ =gUnknown_202063C + movs r2, 0 + ldr r4, _08007744 @ =0x000010ff +_0800772A: + ldrb r0, [r3] + strb r0, [r1] + adds r1, 0x1 + adds r3, 0x1 + adds r2, 0x1 + cmp r2, r4 + bls _0800772A + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007740: .4byte gUnknown_202063C +_08007744: .4byte 0x000010ff + thumb_func_end sub_8007720 + + thumb_func_start sub_8007748 +sub_8007748: @ 8007748 + push {r4,lr} + adds r1, r0, 0 + ldr r3, _08007768 @ =gUnknown_202063C + movs r2, 0 + ldr r4, _0800776C @ =0x000010ff +_08007752: + ldrb r0, [r1] + strb r0, [r3] + adds r1, 0x1 + adds r3, 0x1 + adds r2, 0x1 + cmp r2, r4 + bls _08007752 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007768: .4byte gUnknown_202063C +_0800776C: .4byte 0x000010ff + thumb_func_end sub_8007748 + + thumb_func_start sub_8007770 +sub_8007770: @ 8007770 + push {r4,r5,lr} + movs r4, 0 +_08007774: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r5, _080077A4 @ =gUnknown_202063C + adds r0, r5 + bl sub_80073DC + ldr r0, _080077A8 @ =gUnknown_2021800 + adds r0, r4, r0 + strb r4, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3F + bls _08007774 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + bl sub_80073DC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080077A4: .4byte gUnknown_202063C +_080077A8: .4byte gUnknown_2021800 + thumb_func_end sub_8007770 + + thumb_func_start sub_80077AC +sub_80077AC: @ 80077AC + push {lr} + ldr r2, [r0, 0x14] + ldrh r1, [r2] + ldr r0, _080077C4 @ =0x0000ffff + cmp r1, r0 + beq _080077BE + adds r0, r1, 0 + bl sub_800874C +_080077BE: + pop {r0} + bx r0 + .align 2, 0 +_080077C4: .4byte 0x0000ffff + thumb_func_end sub_80077AC + + thumb_func_start sub_80077C8 +sub_80077C8: @ 80077C8 + push {lr} + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + bl sub_8008A30 + pop {r0} + bx r0 + thumb_func_end sub_80077C8 + + thumb_func_start sub_80077D8 +sub_80077D8: @ 80077D8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080077FE + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080077FE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80077D8 + + thumb_func_start sub_8007804 +sub_8007804: @ 8007804 + push {r4,lr} + adds r4, r0, 0 + bl sub_80077AC + adds r0, r4, 0 + bl sub_80077C8 + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8007804 + + thumb_func_start sub_8007824 +sub_8007824: @ 8007824 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r2, _08007860 @ =gUnknown_8231D18 + adds r5, r4, 0 + adds r5, 0x3F + ldrb r1, [r5] + movs r0, 0x4 + ands r0, r1 + adds r0, r2 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + ldr r0, _08007864 @ =gUnknown_2021CCC + ldrb r0, [r0] + cmp r0, 0 + bne _0800785A + ldr r0, _08007868 @ =gUnknown_8231D20 + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 31 + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl _call_via_r1 +_0800785A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007860: .4byte gUnknown_8231D18 +_08007864: .4byte gUnknown_2021CCC +_08007868: .4byte gUnknown_8231D20 + thumb_func_end sub_8007824 + + thumb_func_start sub_800786C +sub_800786C: @ 800786C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x2B + movs r2, 0 + strb r2, [r3] + adds r5, r4, 0 + adds r5, 0x3F + ldrb r1, [r5] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r5] + adds r0, r4, 0 + adds r0, 0x2D + strb r2, [r0] + adds r2, r4, 0 + adds r2, 0x2A + ldrb r1, [r2] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0] + mov r9, r0 + lsls r0, 16 + mov r8, r0 + asrs r1, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08007950 + ldrb r1, [r5] + subs r0, 0x4 + ands r0, r1 + strb r0, [r5] + ldrb r1, [r2] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r1, r0, 10 + lsrs r3, r1, 26 + lsls r1, r0, 9 + lsrs r7, r1, 31 + lsls r0, 8 + lsrs r6, r0, 31 + cmp r3, 0 + beq _080078E8 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_080078E8: + adds r2, r4, 0 + adds r2, 0x2C + movs r0, 0x3F + ands r3, r0 + ldrb r1, [r2] + subs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007912 + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_80080D4 +_08007912: + ldrb r1, [r5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08007940 + adds r0, r4, 0 + adds r0, 0x40 + ldrh r1, [r0] + add r1, r9 + ldr r2, _08007938 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _0800793C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + b _08007950 + .align 2, 0 +_08007938: .4byte 0x000003ff +_0800793C: .4byte 0xfffffc00 +_08007940: + mov r1, r8 + lsrs r0, r1, 16 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldr r2, [r4, 0xC] + bl sub_800766C +_08007950: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800786C + + thumb_func_start sub_800795C +sub_800795C: @ 800795C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r0, 0x3F + ands r0, r1 + cmp r0, 0 + beq _080079AC + adds r0, r4, 0 + bl sub_80081D8 + adds r0, r4, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r1, r0, 9 + lsrs r3, r1, 31 + lsls r0, 8 + lsrs r2, r0, 31 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080079F2 + adds r0, r4, 0 + adds r1, r3, 0 + bl sub_80080D4 + b _080079F2 +_080079AC: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080079F2 + adds r2, r4, 0 + adds r2, 0x2B + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + movs r2, 0x3 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + bge _080079E2 + adds r0, 0x3 + lsls r0, 16 + lsrs r2, r0, 16 +_080079E2: + ldr r0, _080079F8 @ =gUnknown_8231D28 + lsls r1, r2, 16 + asrs r1, 14 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl _call_via_r1 +_080079F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080079F8: .4byte gUnknown_8231D28 + thumb_func_end sub_800795C + + thumb_func_start sub_80079FC +sub_80079FC: @ 80079FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r7, [r0] + mov r8, r7 + ldr r0, [r0] + lsls r1, r0, 10 + lsrs r3, r1, 26 + lsls r1, r0, 9 + lsrs r6, r1, 31 + lsls r0, 8 + lsrs r5, r0, 31 + cmp r3, 0 + beq _08007A36 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_08007A36: + adds r2, r4, 0 + adds r2, 0x2C + movs r0, 0x3F + ands r3, r0 + ldrb r1, [r2] + subs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007A60 + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80080D4 +_08007A60: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08007A90 + adds r0, r4, 0 + adds r0, 0x40 + ldrh r1, [r0] + adds r1, r7 + ldr r2, _08007A88 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _08007A8C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + b _08007A9E + .align 2, 0 +_08007A88: .4byte 0x000003ff +_08007A8C: .4byte 0xfffffc00 +_08007A90: + mov r0, r8 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldr r2, [r4, 0xC] + bl sub_800766C +_08007A9E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80079FC + + thumb_func_start sub_8007AA8 +sub_8007AA8: @ 8007AA8 + adds r2, r0, 0 + adds r2, 0x2B + ldrb r1, [r2] + subs r1, 0x1 + strb r1, [r2] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x10 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8007AA8 + + thumb_func_start sub_8007AC0 +sub_8007AC0: @ 8007AC0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x2A + ldrb r1, [r3] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r2, r4, 0 + adds r2, 0x2B + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + strb r0, [r2] + ldrb r0, [r3] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrh r7, [r1] + mov r8, r7 + ldr r0, [r1] + lsls r1, r0, 10 + lsrs r3, r1, 26 + lsls r1, r0, 9 + lsrs r6, r1, 31 + lsls r0, 8 + lsrs r5, r0, 31 + cmp r3, 0 + beq _08007B14 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_08007B14: + adds r2, r4, 0 + adds r2, 0x2C + movs r0, 0x3F + ands r3, r0 + ldrb r1, [r2] + subs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007B3E + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80080D4 +_08007B3E: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08007B70 + adds r0, r4, 0 + adds r0, 0x40 + ldrh r1, [r0] + adds r1, r7 + ldr r2, _08007B68 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _08007B6C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + b _08007B7E + .align 2, 0 +_08007B68: .4byte 0x000003ff +_08007B6C: .4byte 0xfffffc00 +_08007B70: + mov r0, r8 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldr r2, [r4, 0xC] + bl sub_800766C +_08007B7E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8007AC0 + + thumb_func_start sub_8007B88 +sub_8007B88: @ 8007B88 + push {lr} + adds r1, r0, 0 + adds r0, 0x2D + ldrb r0, [r0] + cmp r0, 0 + beq _08007B9C + adds r0, r1, 0 + bl sub_8007BE0 + b _08007BA2 +_08007B9C: + adds r0, r1, 0 + bl sub_8007BA8 +_08007BA2: + pop {r0} + bx r0 + thumb_func_end sub_8007B88 + + thumb_func_start sub_8007BA8 +sub_8007BA8: @ 8007BA8 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + adds r1, r4, 0 + adds r1, 0x2D + strb r0, [r1] + adds r0, r4, 0 + bl sub_8007C00 + adds r0, r4, 0 + bl sub_800795C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8007BA8 + + thumb_func_start sub_8007BE0 +sub_8007BE0: @ 8007BE0 + push {r4,lr} + adds r4, r0, 0 + adds r1, r4, 0 + adds r1, 0x2D + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8007C00 + adds r0, r4, 0 + bl sub_800795C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8007BE0 + + thumb_func_start sub_8007C00 +sub_8007C00: @ 8007C00 + push {r4-r7,lr} + mov r12, r0 + adds r0, 0x2D + ldrb r0, [r0] + cmp r0, 0 + beq _08007C6C + mov r3, r12 + adds r3, 0x2B + ldrb r0, [r3] + subs r0, 0x1 + strb r0, [r3] + mov r5, r12 + adds r5, 0x2A + ldrb r1, [r5] + mov r2, r12 + ldr r0, [r2, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + subs r0, 0x4 + movs r7, 0 + ldrsh r0, [r0, r7] + movs r1, 0x3 + negs r1, r1 + adds r4, r3, 0 + cmp r0, r1 + beq _08007C66 + adds r6, r1, 0 + adds r2, r4, 0 +_08007C40: + ldrb r0, [r2] + cmp r0, 0 + beq _08007C66 + subs r0, 0x1 + strb r0, [r3] + ldrb r1, [r5] + mov r7, r12 + ldr r0, [r7, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + subs r0, 0x4 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, r6 + bne _08007C40 +_08007C66: + ldrb r0, [r4] + subs r0, 0x1 + strb r0, [r4] +_08007C6C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8007C00 + + thumb_func_start sub_8007C74 +sub_8007C74: @ 8007C74 + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r0, 0 + ldrb r0, [r6, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08007CF6 + ldr r0, [r6, 0x10] + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r0, r2] + ldr r0, _08007D00 @ =0x00007fff + cmp r1, r0 + beq _08007CF6 + adds r0, r6, 0 + bl sub_8007FDC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8008148 + mov r5, sp + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + bl sub_80082E0 + adds r7, r6, 0 + adds r7, 0x3F + ldrb r1, [r7] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r7] + adds r0, r4, 0 + mov r1, sp + bl sub_800834C + ldr r1, _08007D04 @ =gUnknown_3000C68 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r5, 0x5] + strb r1, [r0, 0x2] + ldrb r1, [r7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08007CF6 + movs r0, 0x3A + ldrsh r1, [r6, r0] + movs r0, 0x3C + ldrsh r2, [r6, r0] + adds r0, r6, 0 + bl sub_8008038 +_08007CF6: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007D00: .4byte 0x00007fff +_08007D04: .4byte gUnknown_3000C68 + thumb_func_end sub_8007C74 + + thumb_func_start sub_8007D08 +sub_8007D08: @ 8007D08 + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08007DAA + adds r0, r4, 0 + bl sub_8007FDC + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + ldr r1, _08007D40 @ =gUnknown_3000C68 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x2] + cmp r0, 0 + beq _08007D44 + adds r0, r2, 0 + adds r1, r4, 0 + bl sub_8007DBC + b _08007D8E + .align 2, 0 +_08007D40: .4byte gUnknown_3000C68 +_08007D44: + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08007DAA + ldrb r0, [r3, 0x1] + adds r0, 0x1 + strb r0, [r3, 0x1] + ldrb r0, [r3] + ldr r1, [r4, 0x10] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r3, 0x1] + ldr r0, [r0] + lsls r1, 3 + adds r1, r0 + movs r2, 0x3 + movs r0, 0 + ldrsh r1, [r1, r0] + ldr r0, _08007DB0 @ =0x00007ffc + cmp r1, r0 + ble _08007D7C + ldr r2, _08007DB4 @ =0xffff8003 + adds r0, r1, r2 + lsls r0, 16 + lsrs r2, r0, 16 +_08007D7C: + ldr r0, _08007DB8 @ =gUnknown_8231D38 + lsls r1, r2, 16 + asrs r1, 14 + adds r1, r0 + ldr r2, [r1] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r2 +_08007D8E: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08007DAA + movs r0, 0x3A + ldrsh r1, [r4, r0] + movs r0, 0x3C + ldrsh r2, [r4, r0] + adds r0, r4, 0 + bl sub_8008038 +_08007DAA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007DB0: .4byte 0x00007ffc +_08007DB4: .4byte 0xffff8003 +_08007DB8: .4byte gUnknown_8231D38 + thumb_func_end sub_8007D08 + + thumb_func_start sub_8007DBC +sub_8007DBC: @ 8007DBC + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008200 + lsls r0, 24 + cmp r0, 0 + bne _08007DE6 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_80082E0 + adds r0, r4, 0 + mov r1, sp + bl sub_8008230 +_08007DE6: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8007DBC + + thumb_func_start sub_8007DF0 +sub_8007DF0: @ 8007DF0 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _08007E14 @ =gUnknown_3000C68 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _08007E18 + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8007E60 + b _08007E20 + .align 2, 0 +_08007E14: .4byte gUnknown_3000C68 +_08007E18: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8007E24 +_08007E20: + pop {r0} + bx r0 + thumb_func_end sub_8007DF0 + + thumb_func_start sub_8007E24 +sub_8007E24: @ 8007E24 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08007E5C @ =gUnknown_3000C68 + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r3, r1 + ldrb r2, [r3] + ldr r1, [r4, 0x10] + lsls r2, 2 + adds r2, r1 + ldrb r1, [r3, 0x1] + ldr r2, [r2] + lsls r1, 3 + adds r1, r2 + ldrh r1, [r1, 0x2] + strb r1, [r3, 0x3] + adds r1, r4, 0 + bl sub_8007E90 + adds r0, r4, 0 + bl sub_8007D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007E5C: .4byte gUnknown_3000C68 + thumb_func_end sub_8007E24 + + thumb_func_start sub_8007E60 +sub_8007E60: @ 8007E60 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08007E8C @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x3] + subs r2, 0x1 + strb r2, [r1, 0x3] + adds r1, r4, 0 + bl sub_8007E90 + adds r0, r4, 0 + bl sub_8007D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007E8C: .4byte gUnknown_3000C68 + thumb_func_end sub_8007E60 + + thumb_func_start sub_8007E90 +sub_8007E90: @ 8007E90 + push {r4-r7,lr} + mov r12, r1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08007EB4 @ =gUnknown_3000C68 + lsls r3, r5, 1 + adds r0, r3, r5 + lsls r0, 2 + adds r2, r0, r1 + ldrb r0, [r2, 0x3] + adds r6, r1, 0 + cmp r0, 0 + beq _08007EF0 + ldrb r0, [r2, 0x1] + subs r0, 0x1 + strb r0, [r2, 0x1] + adds r4, r3, 0 + b _08007EC0 + .align 2, 0 +_08007EB4: .4byte gUnknown_3000C68 +_08007EB8: + cmp r2, 0 + beq _08007EE4 + subs r0, r2, 0x1 + strb r0, [r3, 0x1] +_08007EC0: + adds r0, r4, r5 + lsls r0, 2 + adds r3, r0, r6 + ldrb r0, [r3] + mov r2, r12 + ldr r1, [r2, 0x10] + lsls r0, 2 + adds r0, r1 + ldrb r2, [r3, 0x1] + ldr r1, [r0] + lsls r0, r2, 3 + adds r0, r1 + subs r0, 0x8 + movs r7, 0 + ldrsh r1, [r0, r7] + ldr r0, _08007EF8 @ =0x00007ffd + cmp r1, r0 + bne _08007EB8 +_08007EE4: + adds r1, r4, r5 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1, 0x1] + subs r0, 0x1 + strb r0, [r1, 0x1] +_08007EF0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007EF8: .4byte 0x00007ffd + thumb_func_end sub_8007E90 + + thumb_func_start sub_8007EFC +sub_8007EFC: @ 8007EFC + push {r4-r6,lr} + sub sp, 0x8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08007F44 @ =gUnknown_3000C68 + lsls r4, r5, 1 + adds r4, r5 + lsls r4, 2 + adds r4, r0 + ldrb r2, [r4] + ldr r0, [r1, 0x10] + lsls r2, 2 + adds r2, r0 + ldrb r0, [r4, 0x1] + ldr r2, [r2] + lsls r0, 3 + adds r0, r2 + ldrh r0, [r0, 0x2] + strb r0, [r4, 0x1] + mov r6, sp + adds r0, r5, 0 + mov r2, sp + bl sub_80082E0 + adds r0, r5, 0 + mov r1, sp + bl sub_800834C + ldrb r0, [r6, 0x5] + strb r0, [r4, 0x2] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007F44: .4byte gUnknown_3000C68 + thumb_func_end sub_8007EFC + + thumb_func_start sub_8007F48 +sub_8007F48: @ 8007F48 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + movs r3, 0 + str r2, [sp] + str r3, [sp, 0x4] + adds r1, 0x3F + ldrb r2, [r1] + movs r3, 0x20 + orrs r2, r3 + strb r2, [r1] + ldr r2, _08007F80 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x1] + subs r2, 0x1 + strb r2, [r1, 0x1] + mov r1, sp + bl sub_8008230 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_08007F80: .4byte gUnknown_3000C68 + thumb_func_end sub_8007F48 + + thumb_func_start sub_8007F84 +sub_8007F84: @ 8007F84 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r5, sp + adds r0, r4, 0 + mov r2, sp + bl sub_80082E0 + adds r0, r4, 0 + mov r1, sp + bl sub_800834C + ldr r1, _08007FB8 @ =gUnknown_3000C68 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r5, 0x5] + strb r1, [r0, 0x2] + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007FB8: .4byte gUnknown_3000C68 + thumb_func_end sub_8007F84 + + thumb_func_start sub_8007FBC +sub_8007FBC: @ 8007FBC + lsls r0, 24 + ldr r2, _08007FD8 @ =gUnknown_2021BCC + lsrs r0, 21 + adds r0, r2 + ldrh r2, [r1] + strh r2, [r0] + 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 + .align 2, 0 +_08007FD8: .4byte gUnknown_2021BCC + thumb_func_end sub_8007FBC + + thumb_func_start sub_8007FDC +sub_8007FDC: @ 8007FDC + push {lr} + adds r2, r0, 0 + movs r3, 0 + ldrb r0, [r2, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08007FF6 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r3, r0, 27 +_08007FF6: + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_8007FDC + + thumb_func_start sub_8007FFC +sub_8007FFC: @ 8007FFC + strh r1, [r0, 0x3A] + strh r2, [r0, 0x3C] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8007FFC + + thumb_func_start sub_800800C +sub_800800C: @ 800800C + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r2, 0 + subs r0, r1, r3 + cmp r0, 0 + bge _0800801E + negs r0, r0 + asrs r4, r0, 9 + b _08008022 +_0800801E: + asrs r0, 9 + negs r4, r0 +_08008022: + adds r0, r5, 0 + muls r0, r1 + adds r1, r3, 0 + bl __udivsi3 + adds r0, r4 + subs r0, r5, r0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800800C + + thumb_func_start sub_8008038 +sub_8008038: @ 8008038 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + ldrb r1, [r5, 0x3] + lsls r0, r1, 26 + lsrs r7, r0, 27 + movs r0, 0x80 + lsls r0, 4 + mov r9, r0 + cmp r6, r9 + beq _08008086 + ldr r2, _080080CC @ =gUnknown_8231D48 + lsrs r1, 6 + lsls r1, 3 + ldrb r0, [r5, 0x1] + lsrs r0, 6 + lsls r0, 5 + adds r1, r0 + adds r1, r2 + ldr r0, [r1] + lsls r4, r0, 8 + lsls r0, 16 + ldr r2, _080080D0 @ =gUnknown_2021BCC + lsls r1, r7, 3 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0 + adds r0, r4, 0 + adds r2, r6, 0 + bl sub_800800C + strh r0, [r5, 0x24] +_08008086: + cmp r8, r9 + beq _080080BE + ldr r2, _080080CC @ =gUnknown_8231D48 + ldrb r1, [r5, 0x3] + lsrs r1, 6 + lsls r1, 3 + ldrb r0, [r5, 0x1] + lsrs r0, 6 + lsls r0, 5 + adds r1, r0 + adds r2, 0x4 + adds r1, r2 + ldr r0, [r1] + lsls r4, r0, 8 + lsls r0, 16 + ldr r2, _080080D0 @ =gUnknown_2021BCC + lsls r1, r7, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0 + adds r0, r4, 0 + mov r2, r8 + bl sub_800800C + strh r0, [r5, 0x26] +_080080BE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080080CC: .4byte gUnknown_8231D48 +_080080D0: .4byte gUnknown_2021BCC + thumb_func_end sub_8008038 + + thumb_func_start sub_80080D4 +sub_80080D4: @ 80080D4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldrb r6, [r0, 0x3] + lsls r3, r6, 26 + lsrs r3, 27 + movs r4, 0x7 + ands r3, r4 + lsls r3, 1 + subs r4, 0x46 + mov r8, r4 + mov r5, r8 + ands r5, r6 + orrs r5, r3 + strb r5, [r0, 0x3] + lsls r4, r5, 26 + lsrs r4, 27 + movs r6, 0x3F + adds r6, r0 + mov r12, r6 + ldrb r3, [r6] + lsls r3, 31 + lsrs r3, 31 + eors r1, r3 + movs r6, 0x1 + ands r1, r6 + lsls r1, 3 + orrs r4, r1 + lsls r4, 1 + mov r3, r8 + ands r3, r5 + orrs r3, r4 + strb r3, [r0, 0x3] + lsls r4, r3, 26 + lsrs r4, 27 + mov r5, r12 + ldrb r1, [r5] + lsls r1, 30 + lsrs r1, 31 + eors r2, r1 + ands r2, r6 + lsls r2, 4 + orrs r4, r2 + lsls r4, 1 + mov r6, r8 + ands r3, r6 + orrs r3, r4 + strb r3, [r0, 0x3] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80080D4 + + thumb_func_start sub_8008148 +sub_8008148: @ 8008148 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08008160 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0 + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + strb r0, [r1, 0x3] + bx lr + .align 2, 0 +_08008160: .4byte gUnknown_3000C68 + thumb_func_end sub_8008148 + + thumb_func_start sub_8008164 +sub_8008164: @ 8008164 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08008188 @ =gUnknown_3000C68 + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + movs r3, 0 + strb r1, [r2] + strb r3, [r2, 0x1] + strb r3, [r2, 0x2] + strb r3, [r2, 0x3] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r2, 0x4] + strh r0, [r2, 0x6] + strh r3, [r2, 0x8] + bx lr + .align 2, 0 +_08008188: .4byte gUnknown_3000C68 + thumb_func_end sub_8008164 + + thumb_func_start sub_800818C +sub_800818C: @ 800818C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080081B0 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + strb r0, [r1, 0x3] + movs r2, 0x80 + lsls r2, 1 + strh r2, [r1, 0x4] + strh r2, [r1, 0x6] + strh r0, [r1, 0x8] + bx lr + .align 2, 0 +_080081B0: .4byte gUnknown_3000C68 + thumb_func_end sub_800818C + + thumb_func_start sub_80081B4 +sub_80081B4: @ 80081B4 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080081D4 @ =gUnknown_3000C68 + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrh r0, [r1] + strh r0, [r2, 0x4] + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x6] + ldrb r0, [r1, 0x4] + lsls r0, 8 + strh r0, [r2, 0x8] + bx lr + .align 2, 0 +_080081D4: .4byte gUnknown_3000C68 + thumb_func_end sub_80081B4 + + thumb_func_start sub_80081D8 +sub_80081D8: @ 80081D8 + push {lr} + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _080081FC + lsls r0, r2, 26 + lsrs r0, 26 + subs r0, 0x1 + movs r1, 0x3F + ands r0, r1 + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_080081FC: + pop {r0} + bx r0 + thumb_func_end sub_80081D8 + + thumb_func_start sub_8008200 +sub_8008200: @ 8008200 + push {lr} + lsls r1, 24 + lsrs r2, r1, 24 + adds r3, r0, 0 + adds r3, 0x2C + ldrb r1, [r3] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08008224 + ldr r0, _0800822C @ =gUnknown_3000C68 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x2] + subs r0, 0x1 + strb r0, [r1, 0x2] +_08008224: + ldrb r0, [r3] + lsrs r0, 7 + pop {r1} + bx r1 + .align 2, 0 +_0800822C: .4byte gUnknown_3000C68 + thumb_func_end sub_8008200 + + thumb_func_start sub_8008230 +sub_8008230: @ 8008230 + push {r4-r6,lr} + sub sp, 0x10 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080082B8 @ =gUnknown_3000C68 + lsls r4, r5, 1 + adds r4, r5 + lsls r4, 2 + adds r4, r0 + ldrh r0, [r1] + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r4, 0x4] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x6] + adds r0, r2 + strh r0, [r4, 0x6] + ldrb r0, [r1, 0x4] + lsls r0, 8 + ldrh r1, [r4, 0x8] + adds r0, r1 + ldr r2, _080082BC @ =0xffffff00 + adds r1, r2, 0 + ands r0, r1 + strh r0, [r4, 0x8] + movs r1, 0x4 + ldrsh r0, [r4, r1] + bl sub_80082C8 + lsls r0, 16 + lsrs r0, 16 + ldr r6, _080082C0 @ =0xffff0000 + ldr r1, [sp] + ands r1, r6 + orrs r1, r0 + str r1, [sp] + movs r2, 0x6 + ldrsh r0, [r4, r2] + bl sub_80082C8 + lsls r0, 16 + ldr r2, _080082C4 @ =0x0000ffff + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldrh r1, [r4, 0x8] + ldr r0, [sp, 0x4] + ands r0, r6 + orrs r0, r1 + str r0, [sp, 0x4] + add r4, sp, 0x8 + mov r0, sp + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8007FBC + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080082B8: .4byte gUnknown_3000C68 +_080082BC: .4byte 0xffffff00 +_080082C0: .4byte 0xffff0000 +_080082C4: .4byte 0x0000ffff + thumb_func_end sub_8008230 + + thumb_func_start sub_80082C8 +sub_80082C8: @ 80082C8 + push {lr} + adds r1, r0, 0 + movs r0, 0x80 + lsls r0, 9 + lsls r1, 16 + asrs r1, 16 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80082C8 + + thumb_func_start sub_80082E0 +sub_80082E0: @ 80082E0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08008348 @ =gUnknown_3000C68 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r4, r3 + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r3, [r3] + lsls r0, 3 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2] + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r3, [r3] + lsls r0, 3 + adds r0, r3 + ldrh r0, [r0, 0x2] + strh r0, [r2, 0x2] + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r3, [r3] + lsls r0, 3 + adds r0, r3 + ldrb r0, [r0, 0x4] + strb r0, [r2, 0x4] + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x5] + strb r0, [r2, 0x5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08008348: .4byte gUnknown_3000C68 + thumb_func_end sub_80082E0 + + thumb_func_start sub_800834C +sub_800834C: @ 800834C + push {r4,lr} + sub sp, 0x8 + adds r2, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + ldrb r0, [r2, 0x5] + cmp r0, 0 + beq _08008372 + subs r0, 0x1 + strb r0, [r2, 0x5] + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_8008230 + b _08008382 +_08008372: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80081B4 + adds r0, r4, 0 + mov r1, sp + bl sub_8008230 +_08008382: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_800834C + + thumb_func_start sub_800838C +sub_800838C: @ 800838C + adds r2, r0, 0 + adds r2, 0x2A + strb r1, [r2] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + movs r2, 0x11 + negs r2, r2 + ands r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_800838C + + thumb_func_start sub_80083A4 +sub_80083A4: @ 80083A4 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, r1 + beq _080083BA + adds r0, r2, 0 + bl sub_800838C +_080083BA: + pop {r0} + bx r0 + thumb_func_end sub_80083A4 + + thumb_func_start sub_80083C0 +sub_80083C0: @ 80083C0 + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r4, r3, 0 + adds r4, 0x2C + ldrb r0, [r4] + lsls r0, 25 + lsrs r6, r0, 31 + subs r1, 0x1 + adds r0, r3, 0 + adds r0, 0x2B + strb r1, [r0] + ldrb r1, [r4] + movs r7, 0x40 + negs r7, r7 + adds r0, r7, 0 + ands r0, r1 + strb r0, [r4] + adds r2, r3, 0 + adds r2, 0x3F + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4] + movs r5, 0x41 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + strb r0, [r4] + adds r0, r3, 0 + bl sub_800795C + ldrb r2, [r4] + movs r0, 0x3F + ands r0, r2 + cmp r0, 0 + beq _08008428 + lsls r0, r2, 26 + lsrs r0, 26 + adds r0, 0x1 + movs r1, 0x3F + ands r0, r1 + adds r1, r7, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] +_08008428: + lsls r2, r6, 6 + ldrb r1, [r4] + adds r0, r5, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80083C0 + + thumb_func_start sub_800843C +sub_800843C: @ 800843C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_8008164 + adds r5, 0x3F + ldrb r0, [r5] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800843C + + thumb_func_start sub_8008468 +sub_8008468: @ 8008468 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08008498 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + cmp r0, r4 + beq _08008490 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_800843C +_08008490: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08008498: .4byte gUnknown_3000C68 + thumb_func_end sub_8008468 + + thumb_func_start sub_800849C +sub_800849C: @ 800849C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080084D0 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + strb r4, [r1] + adds r5, 0x3F + ldrb r0, [r5] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080084D0: .4byte gUnknown_3000C68 + thumb_func_end sub_800849C + + thumb_func_start sub_80084D4 +sub_80084D4: @ 80084D4 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08008504 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + cmp r0, r4 + beq _080084FC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_800849C +_080084FC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08008504: .4byte gUnknown_3000C68 + thumb_func_end sub_80084D4 + + thumb_func_start sub_8008508 +sub_8008508: @ 8008508 + push {lr} + adds r3, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08008554 + adds r0, r3, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r3, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r2, [r0] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _0800853C + movs r2, 0 +_0800853C: + adds r0, r3, 0 + adds r0, 0x40 + ldrh r1, [r0] + adds r1, r2 + ldr r2, _08008558 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x4] + ldr r0, _0800855C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] +_08008554: + pop {r0} + bx r0 + .align 2, 0 +_08008558: .4byte 0x000003ff +_0800855C: .4byte 0xfffffc00 + thumb_func_end sub_8008508 + + thumb_func_start sub_8008560 +sub_8008560: @ 8008560 + push {r4,lr} + ldr r1, _0800858C @ =gUnknown_2021CCC + movs r0, 0 + strb r0, [r1] + ldr r1, _08008590 @ =gUnknown_3003E54 + movs r0, 0 + str r0, [r1] + bl sub_8007390 + movs r4, 0 +_08008574: + adds r0, r4, 0 + bl sub_800818C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08008574 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800858C: .4byte gUnknown_2021CCC +_08008590: .4byte gUnknown_3003E54 + thumb_func_end sub_8008560 + + thumb_func_start sub_8008594 +sub_8008594: @ 8008594 + push {r4,lr} + movs r2, 0 + movs r1, 0x1 + ldr r0, _080085B4 @ =gUnknown_3003E54 + ldr r4, [r0] + adds r3, r0, 0 +_080085A0: + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080085B8 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r0, r2, 0 + b _080085C6 + .align 2, 0 +_080085B4: .4byte gUnknown_3003E54 +_080085B8: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 1 + cmp r2, 0x1F + bls _080085A0 + movs r0, 0xFF +_080085C6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8008594 + + thumb_func_start sub_80085CC +sub_80085CC: @ 80085CC + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0 + movs r1, 0x1 + ldr r3, _08008608 @ =gUnknown_3003E54 + cmp r0, r2 + bcs _080085EA +_080085DE: + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 1 + cmp r0, r2 + bcc _080085DE +_080085EA: + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + movs r1, 0x80 + lsls r1, 1 + str r1, [sp] + adds r0, r2, 0 + movs r2, 0 + movs r3, 0 + bl sub_80073BC + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08008608: .4byte gUnknown_3003E54 + thumb_func_end sub_80085CC + + thumb_func_start sub_800860C +sub_800860C: @ 800860C + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8008594 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xFF + beq _08008654 + ldrb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 + movs r0, 0x1F + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, 0 + bl sub_800818C +_08008654: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800860C + + thumb_func_start sub_800865C +sub_800865C: @ 800865C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + adds r6, r0, 0 + adds r0, r1, 0 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r0, 16 + asrs r0, 16 + bl sub_80082C8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080086D4 @ =0xffff0000 + mov r8, r1 + ldr r1, [sp] + mov r2, r8 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + bl sub_80082C8 + lsls r0, 16 + ldr r2, _080086D8 @ =0x0000ffff + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldr r0, [sp, 0x4] + mov r1, r8 + ands r0, r1 + orrs r0, r5 + str r0, [sp, 0x4] + add r4, sp, 0x8 + mov r0, sp + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8007FBC + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080086D4: .4byte 0xffff0000 +_080086D8: .4byte 0x0000ffff + thumb_func_end sub_800865C + + thumb_func_start sub_80086DC +sub_80086DC: @ 80086DC + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x4] + lsrs r0, 5 + bl sub_8007434 + lsls r4, r0, 16 + asrs r6, r4, 16 + cmp r6, 0 + blt _08008718 + ldrh r0, [r5, 0x6] + lsrs r4, 16 + ldrh r2, [r5, 0x4] + lsrs r2, 5 + adds r1, r4, 0 + bl sub_80088A8 + ldr r0, [r5] + lsls r1, r6, 5 + ldr r2, _08008714 @ =0x06010000 + adds r1, r2 + ldrh r2, [r5, 0x4] + lsrs r2, 1 + bl CpuSet + adds r0, r4, 0 + b _0800871A + .align 2, 0 +_08008714: .4byte 0x06010000 +_08008718: + movs r0, 0 +_0800871A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80086DC + + thumb_func_start sub_8008720 +sub_8008720: @ 8008720 + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r0, [r5] + cmp r0, 0 + beq _08008744 +_0800872C: + lsls r0, r4, 3 + adds r0, r5, r0 + bl sub_80086DC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 3 + adds r0, r5 + ldr r0, [r0] + cmp r0, 0 + bne _0800872C +_08008744: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8008720 + + thumb_func_start sub_800874C +sub_800874C: @ 800874C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r0, 16 + bl sub_8008830 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _080087AA + ldr r0, _080087B4 @ =gUnknown_3000B68 + lsls r1, r4, 2 + adds r2, r1, r0 + adds r0, 0x2 + adds r1, r0 + ldrh r0, [r1] + ldrh r3, [r2] + adds r0, r3, r0 + ldr r1, _080087B8 @ =gUnknown_3000AE8 + mov r8, r1 + lsls r5, r4, 1 + cmp r3, r0 + bge _080087A2 + ldr r1, _080087BC @ =gUnknown_2021B48 + mov r12, r1 + movs r6, 0x7 + movs r7, 0x1 + adds r4, r0, 0 +_08008786: + lsrs r2, r3, 3 + add r2, r12 + adds r0, r3, 0 + ands r0, r6 + adds r1, r7, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + blt _08008786 +_080087A2: + mov r0, r8 + adds r1, r5, r0 + ldr r0, _080087C0 @ =0x0000ffff + strh r0, [r1] +_080087AA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080087B4: .4byte gUnknown_3000B68 +_080087B8: .4byte gUnknown_3000AE8 +_080087BC: .4byte gUnknown_2021B48 +_080087C0: .4byte 0x0000ffff + thumb_func_end sub_800874C + + thumb_func_start sub_80087C4 +sub_80087C4: @ 80087C4 + push {r4-r7,lr} + movs r2, 0 + ldr r7, _080087F8 @ =gUnknown_3000AE8 + ldr r0, _080087FC @ =0x0000ffff + adds r6, r0, 0 + ldr r4, _08008800 @ =gUnknown_3000B68 + movs r3, 0 + adds r5, r4, 0x2 +_080087D4: + lsls r1, r2, 1 + adds r1, r7 + ldrh r0, [r1] + orrs r0, r6 + strh r0, [r1] + lsls r1, r2, 2 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _080087D4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080087F8: .4byte gUnknown_3000AE8 +_080087FC: .4byte 0x0000ffff +_08008800: .4byte gUnknown_3000B68 + thumb_func_end sub_80087C4 + + thumb_func_start sub_8008804 +sub_8008804: @ 8008804 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8008830 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08008824 + ldr r0, _08008820 @ =gUnknown_3000B68 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1] + b _08008826 + .align 2, 0 +_08008820: .4byte gUnknown_3000B68 +_08008824: + ldr r0, _0800882C @ =0x0000ffff +_08008826: + pop {r1} + bx r1 + .align 2, 0 +_0800882C: .4byte 0x0000ffff + thumb_func_end sub_8008804 + + thumb_func_start sub_8008830 +sub_8008830: @ 8008830 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0 + ldr r3, _08008848 @ =gUnknown_3000AE8 +_0800883A: + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _0800884C + adds r0, r1, 0 + b _08008858 + .align 2, 0 +_08008848: .4byte gUnknown_3000AE8 +_0800884C: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3F + bls _0800883A + movs r0, 0xFF +_08008858: + pop {r1} + bx r1 + thumb_func_end sub_8008830 + + thumb_func_start sub_800885C +sub_800885C: @ 800885C + push {r4-r6,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r6, _08008884 @ =gUnknown_3000AE8 + ldr r5, _08008888 @ =0x0000ffff + ldr r4, _0800888C @ =gUnknown_3000B68 +_0800886A: + lsls r0, r2, 1 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, r5 + beq _08008890 + lsls r0, r2, 2 + adds r0, r4 + ldrh r0, [r0] + cmp r0, r3 + bne _08008890 + ldrh r0, [r1] + b _0800889C + .align 2, 0 +_08008884: .4byte gUnknown_3000AE8 +_08008888: .4byte 0x0000ffff +_0800888C: .4byte gUnknown_3000B68 +_08008890: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _0800886A + ldr r0, _080088A4 @ =0x0000ffff +_0800889C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080088A4: .4byte 0x0000ffff + thumb_func_end sub_800885C + + thumb_func_start sub_80088A8 +sub_80088A8: @ 80088A8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + ldr r0, _080088E4 @ =0x0000ffff + bl sub_8008830 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080088E8 @ =gUnknown_3000AE8 + lsls r1, r0, 1 + adds r1, r2 + strh r4, [r1] + ldr r1, _080088EC @ =gUnknown_3000B68 + lsls r0, 2 + adds r2, r0, r1 + strh r5, [r2] + adds r1, 0x2 + adds r0, r1 + strh r6, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080088E4: .4byte 0x0000ffff +_080088E8: .4byte gUnknown_3000AE8 +_080088EC: .4byte gUnknown_3000B68 + thumb_func_end sub_80088A8 + + thumb_func_start sub_80088F0 +sub_80088F0: @ 80088F0 + push {r4,lr} + ldr r1, _0800891C @ =gUnknown_3003E58 + movs r0, 0 + strb r0, [r1] + movs r2, 0 + ldr r4, _08008920 @ =gUnknown_3000DE8 + ldr r0, _08008924 @ =0x0000ffff + adds r3, r0, 0 +_08008900: + lsls r0, r2, 1 + adds r0, r4 + ldrh r1, [r0] + orrs r1, r3 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _08008900 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800891C: .4byte gUnknown_3003E58 +_08008920: .4byte gUnknown_3000DE8 +_08008924: .4byte 0x0000ffff + thumb_func_end sub_80088F0 + + thumb_func_start sub_8008928 +sub_8008928: @ 8008928 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _0800893E + adds r0, r4, 0 + b _0800896E +_0800893E: + ldr r0, _08008964 @ =0x0000ffff + bl sub_80089E8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _0800896C + ldr r1, _08008968 @ =gUnknown_3000DE8 + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r5, 0x4] + strh r1, [r0] + ldr r0, [r5] + lsls r1, r4, 4 + bl sub_80089A0 + adds r0, r4, 0 + b _0800896E + .align 2, 0 +_08008964: .4byte 0x0000ffff +_08008968: .4byte gUnknown_3000DE8 +_0800896C: + movs r0, 0xFF +_0800896E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8008928 + + thumb_func_start sub_8008974 +sub_8008974: @ 8008974 + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 + b _08008982 +_0800897C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_08008982: + lsls r0, r4, 3 + adds r1, r0, r5 + ldr r0, [r1] + cmp r0, 0 + beq _0800899A + adds r0, r1, 0 + bl sub_8008928 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0800897C +_0800899A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8008974 + + thumb_func_start sub_80089A0 +sub_80089A0: @ 80089A0 + push {lr} + lsls r1, 16 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + pop {r0} + bx r0 + thumb_func_end sub_80089A0 + + thumb_func_start sub_80089B8 +sub_80089B8: @ 80089B8 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080089D8 @ =0x0000ffff + bl sub_80089E8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080089E0 + ldr r1, _080089DC @ =gUnknown_3000DE8 + lsls r0, r2, 1 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + b _080089E2 + .align 2, 0 +_080089D8: .4byte 0x0000ffff +_080089DC: .4byte gUnknown_3000DE8 +_080089E0: + movs r0, 0xFF +_080089E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80089B8 + + thumb_func_start sub_80089E8 +sub_80089E8: @ 80089E8 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08008A08 @ =gUnknown_3003E58 + ldrb r1, [r0] + cmp r1, 0xF + bhi _08008A1A + ldr r3, _08008A0C @ =gUnknown_3000DE8 +_080089F8: + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08008A10 + adds r0, r1, 0 + b _08008A1C + .align 2, 0 +_08008A08: .4byte gUnknown_3003E58 +_08008A0C: .4byte gUnknown_3000DE8 +_08008A10: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _080089F8 +_08008A1A: + movs r0, 0xFF +_08008A1C: + pop {r1} + bx r1 + thumb_func_end sub_80089E8 + + thumb_func_start sub_8008A20 +sub_8008A20: @ 8008A20 + lsls r0, 24 + ldr r1, _08008A2C @ =gUnknown_3000DE8 + lsrs r0, 23 + adds r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08008A2C: .4byte gUnknown_3000DE8 + thumb_func_end sub_8008A20 + + thumb_func_start sub_8008A30 +sub_8008A30: @ 8008A30 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_80089E8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08008A4C + ldr r0, _08008A50 @ =gUnknown_3000DE8 + lsls r1, 1 + adds r1, r0 + ldr r0, _08008A54 @ =0x0000ffff + strh r0, [r1] +_08008A4C: + pop {r0} + bx r0 + .align 2, 0 +_08008A50: .4byte gUnknown_3000DE8 +_08008A54: .4byte 0x0000ffff + thumb_func_end sub_8008A30 + + thumb_func_start sub_8008A58 +sub_8008A58: @ 8008A58 + str r1, [r0, 0x18] + adds r0, 0x42 + movs r1, 0x40 + strb r1, [r0] + bx lr + thumb_func_end sub_8008A58 + + thumb_func_start sub_8008A64 +sub_8008A64: @ 8008A64 + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + ldr r1, _08008A78 @ =gUnknown_2021B44 + ldrb r0, [r3] + ldrb r1, [r1] + cmp r0, r1 + bcc _08008A7C + movs r0, 0x1 + b _08008AC4 + .align 2, 0 +_08008A78: .4byte gUnknown_2021B44 +_08008A7C: + ldr r0, [r4, 0x18] + cmp r0, 0 + beq _08008A90 + adds r0, r4, 0 + adds r0, 0x42 + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + bne _08008AB0 +_08008A90: + ldr r0, _08008AAC @ =gUnknown_30030F0 + ldrb r2, [r3] + lsls r2, 3 + adds r0, 0x38 + adds r2, r0 + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + movs r0, 0 + b _08008AC4 + .align 2, 0 +_08008AAC: .4byte gUnknown_30030F0 +_08008AB0: + ldrb r1, [r3] + lsls r1, 3 + ldr r0, _08008ACC @ =gUnknown_3003128 + adds r1, r0 + adds r0, r4, 0 + adds r2, r3, 0 + bl sub_8008AD0 + lsls r0, 24 + lsrs r0, 24 +_08008AC4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08008ACC: .4byte gUnknown_3003128 + thumb_func_end sub_8008A64 + + thumb_func_start sub_8008AD0 +sub_8008AD0: @ 8008AD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r3, r0, 0 + str r1, [sp] + mov r8, r2 + ldr r0, _08008AF0 @ =gUnknown_2021B44 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bcc _08008AF4 +_08008AEC: + movs r0, 0x1 + b _08008CCA + .align 2, 0 +_08008AF0: .4byte gUnknown_2021B44 +_08008AF4: + adds r0, r3, 0 + adds r0, 0x42 + ldrb r1, [r0] + lsls r1, 26 + lsrs r1, 23 + ldr r2, [r3, 0x18] + adds r7, r2, r1 + mov r12, r3 + str r0, [sp, 0x18] + cmp r7, 0 + beq _08008B10 + ldr r0, [r7, 0x4] + cmp r0, 0 + bne _08008B26 +_08008B10: + mov r2, r12 + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [sp] + str r0, [r2] + str r1, [r2, 0x4] + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08008CC8 +_08008B26: + mov r2, r12 + ldrh r0, [r2, 0x4] + lsls r0, 22 + lsrs r0, 22 + str r0, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0xC] + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + asrs r1, r0, 3 + str r1, [sp, 0x10] + movs r1, 0x1 + ldr r2, [sp, 0x10] + ands r2, r1 + str r2, [sp, 0x10] + asrs r0, 4 + mov r10, r0 + ands r0, r1 + mov r10, r0 + mov r1, r12 + ldrh r0, [r1, 0x2] + lsls r0, 23 + lsrs r0, 23 + adds r1, 0x28 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + subs r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + mov r1, r12 + ldrb r0, [r1] + adds r1, 0x29 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + movs r0, 0 + mov r9, r0 + ldr r1, [sp, 0xC] + cmp r9, r1 + bcc _08008B84 + b _08008CC8 +_08008B84: + lsls r0, r2, 16 + asrs r0, 16 + str r0, [sp, 0x14] +_08008B8A: + mov r2, r8 + ldrb r0, [r2] + ldr r1, _08008CDC @ =gUnknown_2021B44 + ldrb r1, [r1] + cmp r0, r1 + bcs _08008AEC + ldr r0, [r7, 0x4] + mov r2, r9 + lsls r6, r2, 2 + adds r2, r6, r0 + movs r0, 0 + ldrsb r0, [r2, r0] + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1 + ldrsb r0, [r2, r0] + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [sp, 0x10] + cmp r0, 0 + beq _08008BE0 + ldr r0, [r2] + lsls r1, r0, 12 + lsrs r1, 30 + lsls r1, 2 + lsls r0, 14 + lsrs r0, 30 + lsls r0, 4 + adds r1, r0 + ldr r0, _08008CE0 @ =gUnknown_8231DA8 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + lsls r0, r4, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + mvns r0, r4 + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_08008BE0: + mov r1, r10 + cmp r1, 0 + beq _08008C12 + ldr r0, [r2] + lsls r1, r0, 12 + lsrs r1, 30 + lsls r1, 2 + lsls r0, 14 + lsrs r0, 30 + lsls r0, 4 + adds r1, r0 + ldr r2, _08008CE0 @ =gUnknown_8231DA8 + adds r1, r2 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + mvns r0, r5 + adds r0, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08008C12: + mov r1, r9 + lsls r0, r1, 3 + ldr r2, [sp] + adds r3, r0, r2 + mov r2, r12 + ldr r0, [r2] + ldr r1, [r2, 0x4] + str r0, [r3] + str r1, [r3, 0x4] + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, 14 + lsrs r1, 30 + lsls r1, 6 + ldrb r2, [r3, 0x1] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, 12 + lsrs r1, 30 + lsls r1, 6 + ldrb r2, [r3, 0x3] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x3] + lsls r1, r4, 16 + asrs r1, 16 + ldr r0, [sp, 0x14] + adds r1, r0, r1 + ldr r2, _08008CE4 @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x2] + ldr r0, _08008CE8 @ =0xfffffe00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + ldr r1, [sp, 0x8] + adds r0, r1, r5 + strb r0, [r3] + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, 2 + lsrs r1, 22 + ldr r2, [sp, 0x4] + adds r1, r2, r1 + ldr r2, _08008CEC @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x4] + ldr r0, _08008CF0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldr r0, [sp, 0x18] + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x80 + beq _08008CAE + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsrs r1, 30 + lsls r1, 2 + ldrb r2, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] +_08008CAE: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r2, [sp, 0xC] + cmp r9, r2 + bcs _08008CC8 + b _08008B8A +_08008CC8: + movs r0, 0 +_08008CCA: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08008CDC: .4byte gUnknown_2021B44 +_08008CE0: .4byte gUnknown_8231DA8 +_08008CE4: .4byte 0x000001ff +_08008CE8: .4byte 0xfffffe00 +_08008CEC: .4byte 0x000003ff +_08008CF0: .4byte 0xfffffc00 + thumb_func_end sub_8008AD0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/ss_anne.s b/asm/ss_anne.s new file mode 100644 index 000000000..46d129d6e --- /dev/null +++ b/asm/ss_anne.s @@ -0,0 +1,408 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815D334 +sub_815D334: @ 815D334 + push {lr} + movs r0, 0xF9 + bl sub_80722CC + ldr r0, _0815D35C @ =sub_815D364 + movs r1, 0x8 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0815D360 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x32 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_0815D35C: .4byte sub_815D364 +_0815D360: .4byte gUnknown_3005090 + thumb_func_end sub_815D334 + + thumb_func_start sub_815D364 +sub_815D364: @ 815D364 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r4, r1, 3 + ldr r5, _0815D39C @ =gUnknown_3005098 + adds r1, r4, r5 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _0815D394 + ldr r0, _0815D3A0 @ =gUnknown_8479C58 + bl sub_8008720 + bl sub_815D498 + adds r0, r5, 0 + subs r0, 0x8 + adds r0, r4, r0 + ldr r1, _0815D3A4 @ =sub_815D3A8 + str r1, [r0] +_0815D394: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815D39C: .4byte gUnknown_3005098 +_0815D3A0: .4byte gUnknown_8479C58 +_0815D3A4: .4byte sub_815D3A8 + thumb_func_end sub_815D364 + + thumb_func_start sub_815D3A8 +sub_815D3A8: @ 815D3A8 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _0815D424 @ =gUnknown_3005098 + adds r5, r6, r7 + ldrh r1, [r5, 0x2] + adds r1, 0x1 + strh r1, [r5, 0x2] + ldrh r0, [r5, 0x4] + adds r0, 0x1 + strh r0, [r5, 0x4] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x46 + bne _0815D3D6 + movs r0, 0 + strh r0, [r5, 0x2] + bl sub_815D5A4 +_0815D3D6: + ldr r0, _0815D428 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x1 + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815D42C @ =gUnknown_2036E38 + adds r0, r1 + ldr r2, _0815D430 @ =gUnknown_202063C + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x78 + negs r1, r1 + cmp r0, r1 + bge _0815D438 + movs r0, 0xF9 + bl sub_80722CC + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0815D434 @ =sub_815D454 + str r1, [r0] + b _0815D44A + .align 2, 0 +_0815D424: .4byte gUnknown_3005098 +_0815D428: .4byte gUnknown_3005008 +_0815D42C: .4byte gUnknown_2036E38 +_0815D430: .4byte gUnknown_202063C +_0815D434: .4byte sub_815D454 +_0815D438: + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r1, 0x5 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r4, 0x24] +_0815D44A: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815D3A8 + + thumb_func_start sub_815D454 +sub_815D454: @ 815D454 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + ldr r0, _0815D490 @ =gUnknown_3005098 + adds r1, r0 + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + bne _0815D48A + movs r0, 0xFA + lsls r0, 4 + bl sub_800874C + ldr r0, _0815D494 @ =0x00000fa1 + bl sub_800874C + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 +_0815D48A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D490: .4byte gUnknown_3005098 +_0815D494: .4byte 0x00000fa1 + thumb_func_end sub_815D454 + + thumb_func_start sub_815D498 +sub_815D498: @ 815D498 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0815D508 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x1 + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815D50C @ =gUnknown_2036E38 + adds r0, r1 + ldr r4, _0815D510 @ =gUnknown_202063C + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x24] + ldrh r0, [r0, 0x20] + adds r1, r0 + adds r1, 0x50 + ldr r0, _0815D514 @ =gUnknown_8479C88 + lsls r1, 16 + asrs r1, 16 + movs r2, 0x6D + movs r3, 0xFF + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r2, 0x8 + orrs r0, r2 + movs r2, 0xF + ands r0, r2 + movs r2, 0xA0 + orrs r0, r2 + strb r0, [r1, 0x5] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D508: .4byte gUnknown_3005008 +_0815D50C: .4byte gUnknown_2036E38 +_0815D510: .4byte gUnknown_202063C +_0815D514: .4byte gUnknown_8479C88 + thumb_func_end sub_815D498 + + thumb_func_start sub_815D518 +sub_815D518: @ 815D518 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r0, _0815D598 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x1 + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815D59C @ =gUnknown_2036E38 + adds r0, r1 + ldr r2, _0815D5A0 @ =gUnknown_202063C + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + ldrh r0, [r0, 0x20] + adds r1, r0 + adds r1, 0x50 + strh r1, [r4, 0x20] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x6 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bgt _0815D56A + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_0815D56A: + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0x6 + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x12 + negs r1, r1 + cmp r0, r1 + bge _0815D58E + adds r0, r4, 0 + bl sub_8007280 +_0815D58E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D598: .4byte gUnknown_3005008 +_0815D59C: .4byte gUnknown_2036E38 +_0815D5A0: .4byte gUnknown_202063C + thumb_func_end sub_815D518 + + thumb_func_start sub_815D5A4 +sub_815D5A4: @ 815D5A4 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0815D614 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x1 + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815D618 @ =gUnknown_2036E38 + adds r0, r1 + ldr r4, _0815D61C @ =gUnknown_202063C + ldrb r0, [r0, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r1, 0x24] + ldrh r1, [r1, 0x20] + adds r0, r1 + adds r0, 0x31 + lsls r0, 16 + asrs r1, r0, 16 + movs r0, 0x20 + negs r0, r0 + cmp r1, r0 + blt _0815D60C + ldr r0, _0815D620 @ =gUnknown_8479CC0 + movs r2, 0x4E + movs r3, 0x8 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0815D60C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r2, [r0, 0x5] + movs r1, 0xF + ands r1, r2 + movs r2, 0xA0 + orrs r1, r2 + strb r1, [r0, 0x5] +_0815D60C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D614: .4byte gUnknown_3005008 +_0815D618: .4byte gUnknown_2036E38 +_0815D61C: .4byte gUnknown_202063C +_0815D620: .4byte gUnknown_8479CC0 + thumb_func_end sub_815D5A4 + + thumb_func_start sub_815D624 +sub_815D624: @ 815D624 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bge _0815D638 + adds r0, 0x3 +_0815D638: + asrs r0, 2 + strh r0, [r2, 0x24] + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0815D650 + adds r0, r2, 0 + bl sub_8007280 +_0815D650: + pop {r0} + bx r0 + thumb_func_end sub_815D624 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/start_menu.s b/asm/start_menu.s new file mode 100644 index 000000000..7e3aa7735 --- /dev/null +++ b/asm/start_menu.s @@ -0,0 +1,2219 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_806ED54 +sub_806ED54: @ 806ED54 + push {lr} + ldr r0, _0806ED6C @ =gUnknown_20370F5 + movs r1, 0 + strb r1, [r0] + bl sub_805642C + cmp r0, 0x1 + bne _0806ED70 + bl sub_806EE34 + b _0806ED90 + .align 2, 0 +_0806ED6C: .4byte gUnknown_20370F5 +_0806ED70: + bl sub_811B0D0 + cmp r0, 0x1 + bne _0806ED7E + bl sub_806EE58 + b _0806ED90 +_0806ED7E: + bl sub_80A0E90 + cmp r0, 0x1 + bne _0806ED8C + bl sub_806EE04 + b _0806ED90 +_0806ED8C: + bl sub_806EDB0 +_0806ED90: + pop {r0} + bx r0 + thumb_func_end sub_806ED54 + + thumb_func_start sub_806ED94 +sub_806ED94: @ 806ED94 + push {lr} + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0806EDA8 @ =gUnknown_20370F6 + ldr r1, _0806EDAC @ =gUnknown_20370F5 + bl sub_806FEC8 + pop {r0} + bx r0 + .align 2, 0 +_0806EDA8: .4byte gUnknown_20370F6 +_0806EDAC: .4byte gUnknown_20370F5 + thumb_func_end sub_806ED94 + + thumb_func_start sub_806EDB0 +sub_806EDB0: @ 806EDB0 + push {lr} + ldr r0, _0806EDFC @ =0x00000829 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806EDC6 + movs r0, 0 + bl sub_806ED94 +_0806EDC6: + ldr r0, _0806EE00 @ =0x00000828 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806EDDA + movs r0, 0x1 + bl sub_806ED94 +_0806EDDA: + movs r0, 0x2 + bl sub_806ED94 + movs r0, 0x3 + bl sub_806ED94 + movs r0, 0x4 + bl sub_806ED94 + movs r0, 0x5 + bl sub_806ED94 + movs r0, 0x6 + bl sub_806ED94 + pop {r0} + bx r0 + .align 2, 0 +_0806EDFC: .4byte 0x00000829 +_0806EE00: .4byte 0x00000828 + thumb_func_end sub_806EDB0 + + thumb_func_start sub_806EE04 +sub_806EE04: @ 806EE04 + push {lr} + movs r0, 0x7 + bl sub_806ED94 + movs r0, 0 + bl sub_806ED94 + movs r0, 0x1 + bl sub_806ED94 + movs r0, 0x2 + bl sub_806ED94 + movs r0, 0x3 + bl sub_806ED94 + movs r0, 0x5 + bl sub_806ED94 + movs r0, 0x6 + bl sub_806ED94 + pop {r0} + bx r0 + thumb_func_end sub_806EE04 + + thumb_func_start sub_806EE34 +sub_806EE34: @ 806EE34 + push {lr} + movs r0, 0x1 + bl sub_806ED94 + movs r0, 0x2 + bl sub_806ED94 + movs r0, 0x8 + bl sub_806ED94 + movs r0, 0x5 + bl sub_806ED94 + movs r0, 0x6 + bl sub_806ED94 + pop {r0} + bx r0 + thumb_func_end sub_806EE34 + + thumb_func_start sub_806EE58 +sub_806EE58: @ 806EE58 + push {lr} + movs r0, 0x1 + bl sub_806ED94 + movs r0, 0x2 + bl sub_806ED94 + movs r0, 0x3 + bl sub_806ED94 + movs r0, 0x5 + bl sub_806ED94 + movs r0, 0x6 + bl sub_806ED94 + pop {r0} + bx r0 + thumb_func_end sub_806EE58 + + thumb_func_start sub_806EE7C +sub_806EE7C: @ 806EE7C + push {r4,r5,lr} + sub sp, 0xC + ldr r4, _0806EEF4 @ =gUnknown_2037101 + ldr r0, _0806EEF8 @ =gUnknown_83A738C + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0 + bl sub_80F6F1C + ldr r0, _0806EEFC @ =gUnknown_2021CD0 + ldr r1, _0806EF00 @ =gUnknown_2039996 + ldrh r1, [r1] + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, _0806EF04 @ =gUnknown_2021CF0 + movs r1, 0x96 + lsls r1, 2 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, _0806EF08 @ =gUnknown_2021D04 + ldr r1, _0806EF0C @ =gUnknown_2039994 + ldrb r1, [r1] + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r5, _0806EF10 @ =gUnknown_2021D18 + ldr r1, _0806EF14 @ =gUnknown_84162A9 + adds r0, r5, 0 + bl sub_8008FCC + ldrb r0, [r4] + movs r1, 0x3 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + adds r2, r5, 0 + movs r3, 0x4 + bl sub_8002C48 + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806EEF4: .4byte gUnknown_2037101 +_0806EEF8: .4byte gUnknown_83A738C +_0806EEFC: .4byte gUnknown_2021CD0 +_0806EF00: .4byte gUnknown_2039996 +_0806EF04: .4byte gUnknown_2021CF0 +_0806EF08: .4byte gUnknown_2021D04 +_0806EF0C: .4byte gUnknown_2039994 +_0806EF10: .4byte gUnknown_2021D18 +_0806EF14: .4byte gUnknown_84162A9 + thumb_func_end sub_806EE7C + + thumb_func_start sub_806EF18 +sub_806EF18: @ 806EF18 + push {r4,lr} + bl sub_80A0E90 + cmp r0, 0 + beq _0806EF3A + ldr r4, _0806EF40 @ =gUnknown_2037101 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r4] + bl sub_8003E3C +_0806EF3A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806EF40: .4byte gUnknown_2037101 + thumb_func_end sub_806EF18 + + thumb_func_start sub_806EF44 +sub_806EF44: @ 806EF44 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r8, r0 + lsls r1, 24 + lsrs r6, r1, 24 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _0806EF9C @ =gUnknown_83A7344 + mov r10, r0 + ldr r1, _0806EFA0 @ =gUnknown_2021D18 + mov r9, r1 +_0806EF68: + ldr r1, _0806EFA4 @ =gUnknown_20370F6 + lsls r0, r2, 16 + asrs r5, r0, 16 + adds r4, r5, r1 + ldrb r1, [r4] + adds r7, r0, 0 + cmp r1, 0x3 + beq _0806EF7C + cmp r1, 0x8 + bne _0806EFA8 +_0806EF7C: + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsls r1, 3 + add r1, r10 + ldr r1, [r1] + lsls r3, r5, 4 + subs r3, r5 + lsls r3, 16 + lsrs r3, 16 + movs r2, 0x8 + bl sub_812E6DC + b _0806EFDA + .align 2, 0 +_0806EF9C: .4byte gUnknown_83A7344 +_0806EFA0: .4byte gUnknown_2021D18 +_0806EFA4: .4byte gUnknown_20370F6 +_0806EFA8: + ldrb r0, [r4] + lsls r0, 3 + add r0, r10 + ldr r1, [r0] + mov r0, r9 + bl sub_8008FCC + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r5, 4 + subs r1, r5 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + mov r2, r9 + movs r3, 0x8 + bl sub_8002C48 +_0806EFDA: + movs r0, 0x80 + lsls r0, 9 + adds r1, r7, r0 + lsrs r2, r1, 16 + asrs r1, 16 + ldr r0, _0806F000 @ =gUnknown_20370F5 + ldrb r0, [r0] + cmp r1, r0 + bge _0806F004 + subs r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _0806EF68 + mov r1, r8 + strb r2, [r1] + movs r0, 0 + b _0806F00A + .align 2, 0 +_0806F000: .4byte gUnknown_20370F5 +_0806F004: + mov r0, r8 + strb r2, [r0] + movs r0, 0x1 +_0806F00A: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806EF44 + + thumb_func_start sub_806F01C +sub_806F01C: @ 806F01C + push {r4,lr} + sub sp, 0xC + ldr r0, _0806F038 @ =gUnknown_20370FF + movs r1, 0 + ldrsb r1, [r0, r1] + adds r2, r0, 0 + cmp r1, 0x5 + bls _0806F02E + b _0806F140 +_0806F02E: + lsls r0, r1, 2 + ldr r1, _0806F03C @ =_0806F040 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806F038: .4byte gUnknown_20370FF +_0806F03C: .4byte _0806F040 + .align 2, 0 +_0806F040: + .4byte _0806F058 + .4byte _0806F060 + .4byte _0806F06C + .4byte _0806F090 + .4byte _0806F0A4 + .4byte _0806F0C4 +_0806F058: + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + b _0806F140 +_0806F060: + bl sub_806ED54 + ldr r1, _0806F068 @ =gUnknown_20370FF + b _0806F0B8 + .align 2, 0 +_0806F068: .4byte gUnknown_20370FF +_0806F06C: + bl sub_80F6E9C + ldr r0, _0806F088 @ =gUnknown_20370F5 + ldrb r0, [r0] + bl sub_80F78E0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80F6F1C + ldr r1, _0806F08C @ =gUnknown_20370FF + b _0806F0B8 + .align 2, 0 +_0806F088: .4byte gUnknown_20370F5 +_0806F08C: .4byte gUnknown_20370FF +_0806F090: + bl sub_80A0E90 + cmp r0, 0 + beq _0806F09C + bl sub_806EE7C +_0806F09C: + ldr r1, _0806F0A0 @ =gUnknown_20370FF + b _0806F0B8 + .align 2, 0 +_0806F0A0: .4byte gUnknown_20370FF +_0806F0A4: + ldr r4, _0806F0C0 @ =gUnknown_2037100 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_806EF44 + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _0806F140 + subs r1, r4, 0x1 +_0806F0B8: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0806F140 + .align 2, 0 +_0806F0C0: .4byte gUnknown_2037100 +_0806F0C4: + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xF + str r1, [sp] + ldr r1, _0806F12C @ =gUnknown_20370F5 + ldrb r1, [r1] + str r1, [sp, 0x4] + ldr r4, _0806F130 @ =gUnknown_20370F4 + ldrb r1, [r4] + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_810F7D8 + strb r0, [r4] + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _0806F118 + bl sub_811B0D0 + cmp r0, 0x1 + beq _0806F118 + ldr r0, _0806F134 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + bne _0806F118 + ldr r2, _0806F138 @ =gUnknown_83A7394 + ldr r1, _0806F13C @ =gUnknown_20370F6 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + bl sub_80F7974 +_0806F118: + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0x1 + b _0806F142 + .align 2, 0 +_0806F12C: .4byte gUnknown_20370F5 +_0806F130: .4byte gUnknown_20370F4 +_0806F134: .4byte gUnknown_300500C +_0806F138: .4byte gUnknown_83A7394 +_0806F13C: .4byte gUnknown_20370F6 +_0806F140: + movs r0, 0 +_0806F142: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806F01C + + thumb_func_start sub_806F14C +sub_806F14C: @ 806F14C + push {lr} + ldr r1, _0806F164 @ =gUnknown_20370FF + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] +_0806F156: + bl sub_806F01C + lsls r0, 24 + cmp r0, 0 + beq _0806F156 + pop {r0} + bx r0 + .align 2, 0 +_0806F164: .4byte gUnknown_20370FF + thumb_func_end sub_806F14C + + thumb_func_start sub_806F168 +sub_806F168: @ 806F168 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_806F01C + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x1 + bne _0806F180 + adds r0, r4, 0 + bl sub_807761C +_0806F180: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806F168 + + thumb_func_start sub_806F188 +sub_806F188: @ 806F188 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _0806F1B0 @ =gUnknown_20370FF + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + ldr r4, _0806F1B4 @ =sub_806F168 + adds r0, r4, 0 + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80775E8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806F1B0: .4byte gUnknown_20370FF +_0806F1B4: .4byte sub_806F168 + thumb_func_end sub_806F188 + + thumb_func_start sub_806F1B8 +sub_806F1B8: @ 806F1B8 + push {lr} + bl sub_806F01C + lsls r0, 24 + cmp r0, 0 + beq _0806F1CC + bl sub_807E3A0 + movs r0, 0x1 + b _0806F1CE +_0806F1CC: + movs r0, 0 +_0806F1CE: + pop {r1} + bx r1 + thumb_func_end sub_806F1B8 + + thumb_func_start sub_806F1D4 +sub_806F1D4: @ 806F1D4 + ldr r1, _0806F1E4 @ =gUnknown_20370FF + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + ldr r1, _0806F1E8 @ =gUnknown_3005024 + ldr r0, _0806F1EC @ =sub_806F1B8 + str r0, [r1] + bx lr + .align 2, 0 +_0806F1E4: .4byte gUnknown_20370FF +_0806F1E8: .4byte gUnknown_3005024 +_0806F1EC: .4byte sub_806F1B8 + thumb_func_end sub_806F1D4 + + thumb_func_start sub_806F1F0 +sub_806F1F0: @ 806F1F0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0806F210 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0806F214 + cmp r0, 0x1 + beq _0806F238 + b _0806F24E + .align 2, 0 +_0806F210: .4byte gUnknown_3005098 +_0806F214: + bl sub_811B0D0 + cmp r0, 0x1 + bne _0806F220 + bl sub_81198EC +_0806F220: + ldr r1, _0806F230 @ =gUnknown_20370F0 + ldr r0, _0806F234 @ =sub_806F280 + str r0, [r1] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0806F24E + .align 2, 0 +_0806F230: .4byte gUnknown_20370F0 +_0806F234: .4byte sub_806F280 +_0806F238: + ldr r0, _0806F254 @ =gUnknown_20370F0 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806F24E + adds r0, r5, 0 + bl sub_8077508 +_0806F24E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806F254: .4byte gUnknown_20370F0 + thumb_func_end sub_806F1F0 + + thumb_func_start sub_806F258 +sub_806F258: @ 806F258 + push {lr} + bl sub_805642C + cmp r0, 0 + bne _0806F26E + bl sub_8068974 + bl sub_805C270 + bl sub_805C780 +_0806F26E: + ldr r0, _0806F27C @ =sub_806F1F0 + bl sub_806F188 + bl sub_8069940 + pop {r0} + bx r0 + .align 2, 0 +_0806F27C: .4byte sub_806F1F0 + thumb_func_end sub_806F258 + + thumb_func_start sub_806F280 +sub_806F280: @ 806F280 + push {r4,lr} + ldr r0, _0806F35C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0806F2D2 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + bl sub_810F904 + ldr r4, _0806F360 @ =gUnknown_20370F4 + strb r0, [r4] + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _0806F2D2 + bl sub_811B0D0 + cmp r0, 0x1 + beq _0806F2D2 + ldr r0, _0806F364 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + bne _0806F2D2 + ldr r2, _0806F368 @ =gUnknown_83A7394 + ldr r1, _0806F36C @ =gUnknown_20370F6 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + movs r1, 0x2 + bl sub_8113018 +_0806F2D2: + ldr r0, _0806F35C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F320 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_810F904 + ldr r4, _0806F360 @ =gUnknown_20370F4 + strb r0, [r4] + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _0806F320 + bl sub_811B0D0 + cmp r0, 0x1 + beq _0806F320 + ldr r0, _0806F364 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0 + bne _0806F320 + ldr r2, _0806F368 @ =gUnknown_83A7394 + ldr r1, _0806F36C @ =gUnknown_20370F6 + ldrb r0, [r4] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + movs r1, 0x2 + bl sub_8113018 +_0806F320: + ldr r0, _0806F35C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806F378 + movs r0, 0x5 + bl sub_80722CC + bl sub_806F3CC + lsls r0, 24 + cmp r0, 0 + beq _0806F358 + ldr r3, _0806F370 @ =gUnknown_20370F0 + ldr r1, _0806F374 @ =gUnknown_83A7344 + ldr r2, _0806F36C @ =gUnknown_20370F6 + ldr r0, _0806F360 @ =gUnknown_20370F4 + ldrb r0, [r0] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + str r0, [r3] + bl sub_806F394 +_0806F358: + movs r0, 0 + b _0806F38E + .align 2, 0 +_0806F35C: .4byte gUnknown_30030F0 +_0806F360: .4byte gUnknown_20370F4 +_0806F364: .4byte gUnknown_300500C +_0806F368: .4byte gUnknown_83A7394 +_0806F36C: .4byte gUnknown_20370F6 +_0806F370: .4byte gUnknown_20370F0 +_0806F374: .4byte gUnknown_83A7344 +_0806F378: + movs r0, 0xA + ands r0, r1 + cmp r0, 0 + beq _0806F358 + bl sub_806EF18 + bl sub_80F7998 + bl sub_806FEA0 + movs r0, 0x1 +_0806F38E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806F280 + + thumb_func_start sub_806F394 +sub_806F394: @ 806F394 + push {lr} + ldr r0, _0806F3BC @ =gUnknown_20370F0 + ldr r1, [r0] + ldr r0, _0806F3C0 @ =sub_806F4E8 + cmp r1, r0 + beq _0806F3B8 + ldr r0, _0806F3C4 @ =sub_806F540 + cmp r1, r0 + beq _0806F3B8 + ldr r0, _0806F3C8 @ =sub_806F554 + cmp r1, r0 + beq _0806F3B8 + bl sub_80CCB68 + movs r0, 0x1 + movs r1, 0 + bl sub_807A818 +_0806F3B8: + pop {r0} + bx r0 + .align 2, 0 +_0806F3BC: .4byte gUnknown_20370F0 +_0806F3C0: .4byte sub_806F4E8 +_0806F3C4: .4byte sub_806F540 +_0806F3C8: .4byte sub_806F554 + thumb_func_end sub_806F394 + + thumb_func_start sub_806F3CC +sub_806F3CC: @ 806F3CC + push {lr} + ldr r1, _0806F3F8 @ =gUnknown_83A7344 + ldr r2, _0806F3FC @ =gUnknown_20370F6 + ldr r0, _0806F400 @ =gUnknown_20370F4 + ldrb r0, [r0] + adds r0, r2 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + ldr r0, _0806F404 @ =sub_806F410 + cmp r1, r0 + bne _0806F408 + movs r0, 0 + bl sub_8088E8C + lsls r0, 16 + cmp r0, 0 + bne _0806F408 + movs r0, 0 + b _0806F40A + .align 2, 0 +_0806F3F8: .4byte gUnknown_83A7344 +_0806F3FC: .4byte gUnknown_20370F6 +_0806F400: .4byte gUnknown_20370F4 +_0806F404: .4byte sub_806F410 +_0806F408: + movs r0, 0x1 +_0806F40A: + pop {r1} + bx r1 + thumb_func_end sub_806F3CC + + thumb_func_start sub_806F410 +sub_806F410: @ 806F410 + push {lr} + ldr r0, _0806F424 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F428 + movs r0, 0 + b _0806F442 + .align 2, 0 +_0806F424: .4byte gUnknown_2037AB8 +_0806F428: + movs r0, 0x29 + bl sub_8054E90 + bl sub_807B004 + bl sub_806EF18 + bl sub_80563F0 + ldr r0, _0806F448 @ =sub_810275C + bl sub_8000544 + movs r0, 0x1 +_0806F442: + pop {r1} + bx r1 + .align 2, 0 +_0806F448: .4byte sub_810275C + thumb_func_end sub_806F410 + + thumb_func_start sub_806F44C +sub_806F44C: @ 806F44C + push {lr} + ldr r0, _0806F460 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F464 + movs r0, 0 + b _0806F478 + .align 2, 0 +_0806F460: .4byte gUnknown_2037AB8 +_0806F464: + bl sub_807B004 + bl sub_806EF18 + bl sub_80563F0 + ldr r0, _0806F47C @ =sub_8126EB0 + bl sub_8000544 + movs r0, 0x1 +_0806F478: + pop {r1} + bx r1 + .align 2, 0 +_0806F47C: .4byte sub_8126EB0 + thumb_func_end sub_806F44C + + thumb_func_start sub_806F480 +sub_806F480: @ 806F480 + push {lr} + ldr r0, _0806F494 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F498 + movs r0, 0 + b _0806F4AC + .align 2, 0 +_0806F494: .4byte gUnknown_2037AB8 +_0806F498: + bl sub_807B004 + bl sub_806EF18 + bl sub_80563F0 + ldr r0, _0806F4B0 @ =sub_8107EB8 + bl sub_8000544 + movs r0, 0x1 +_0806F4AC: + pop {r1} + bx r1 + .align 2, 0 +_0806F4B0: .4byte sub_8107EB8 + thumb_func_end sub_806F480 + + thumb_func_start sub_806F4B4 +sub_806F4B4: @ 806F4B4 + push {lr} + ldr r0, _0806F4C8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F4CC + movs r0, 0 + b _0806F4E0 + .align 2, 0 +_0806F4C8: .4byte gUnknown_2037AB8 +_0806F4CC: + bl sub_807B004 + bl sub_806EF18 + bl sub_80563F0 + ldr r0, _0806F4E4 @ =sub_80568A8 + bl sub_808B698 + movs r0, 0x1 +_0806F4E0: + pop {r1} + bx r1 + .align 2, 0 +_0806F4E4: .4byte sub_80568A8 + thumb_func_end sub_806F4B4 + + thumb_func_start sub_806F4E8 +sub_806F4E8: @ 806F4E8 + ldr r1, _0806F4F4 @ =gUnknown_20370F0 + ldr r0, _0806F4F8 @ =sub_806F5A4 + str r0, [r1] + movs r0, 0 + bx lr + .align 2, 0 +_0806F4F4: .4byte gUnknown_20370F0 +_0806F4F8: .4byte sub_806F5A4 + thumb_func_end sub_806F4E8 + + thumb_func_start sub_806F4FC +sub_806F4FC: @ 806F4FC + push {lr} + ldr r0, _0806F510 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F514 + movs r0, 0 + b _0806F52E + .align 2, 0 +_0806F510: .4byte gUnknown_2037AB8 +_0806F514: + bl sub_807B004 + bl sub_806EF18 + bl sub_80563F0 + ldr r0, _0806F534 @ =sub_8088388 + bl sub_8000544 + ldr r1, _0806F538 @ =gUnknown_30030F0 + ldr r0, _0806F53C @ =sub_80568A8 + str r0, [r1, 0x8] + movs r0, 0x1 +_0806F52E: + pop {r1} + bx r1 + .align 2, 0 +_0806F534: .4byte sub_8088388 +_0806F538: .4byte gUnknown_30030F0 +_0806F53C: .4byte sub_80568A8 + thumb_func_end sub_806F4FC + + thumb_func_start sub_806F540 +sub_806F540: @ 806F540 + push {lr} + bl sub_806EF18 + bl sub_80F7998 + bl sub_806FEA0 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806F540 + + thumb_func_start sub_806F554 +sub_806F554: @ 806F554 + push {lr} + bl sub_806EF18 + bl sub_80F7998 + bl sub_806FEA0 + bl sub_80A0F3C + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_806F554 + + thumb_func_start sub_806F56C +sub_806F56C: @ 806F56C + push {lr} + ldr r0, _0806F580 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806F584 + movs r0, 0 + b _0806F598 + .align 2, 0 +_0806F580: .4byte gUnknown_2037AB8 +_0806F584: + bl sub_807B004 + bl sub_80563F0 + ldr r0, _0806F59C @ =gUnknown_300502C + ldrb r0, [r0] + ldr r1, _0806F5A0 @ =sub_80568A8 + bl sub_808B700 + movs r0, 0x1 +_0806F598: + pop {r1} + bx r1 + .align 2, 0 +_0806F59C: .4byte gUnknown_300502C +_0806F5A0: .4byte sub_80568A8 + thumb_func_end sub_806F56C + + thumb_func_start sub_806F5A4 +sub_806F5A4: @ 806F5A4 + push {lr} + bl sub_812B234 + movs r0, 0xC + bl sub_812B1F0 + bl sub_806F624 + ldr r1, _0806F5C0 @ =gUnknown_20370F0 + ldr r0, _0806F5C4 @ =sub_806F5C8 + str r0, [r1] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F5C0: .4byte gUnknown_20370F0 +_0806F5C4: .4byte sub_806F5C8 + thumb_func_end sub_806F5A4 + + thumb_func_start sub_806F5C8 +sub_806F5C8: @ 806F5C8 + push {lr} + bl sub_806F648 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0806F604 + cmp r0, 0x1 + ble _0806F61C + cmp r0, 0x2 + beq _0806F5E4 + cmp r0, 0x3 + beq _0806F604 + b _0806F61C +_0806F5E4: + movs r0, 0 + movs r1, 0 + bl sub_810F260 + bl sub_806F14C + bl sub_812B248 + ldr r1, _0806F5FC @ =gUnknown_20370F0 + ldr r0, _0806F600 @ =sub_806F280 + str r0, [r1] + b _0806F61C + .align 2, 0 +_0806F5FC: .4byte gUnknown_20370F0 +_0806F600: .4byte sub_806F280 +_0806F604: + movs r0, 0 + movs r1, 0x1 + bl sub_810F260 + bl sub_80696C0 + bl sub_806994C + bl sub_812B248 + movs r0, 0x1 + b _0806F61E +_0806F61C: + movs r0, 0 +_0806F61E: + pop {r1} + bx r1 + thumb_func_end sub_806F5C8 + + thumb_func_start sub_806F624 +sub_806F624: @ 806F624 + push {lr} + bl sub_80590D8 + ldr r1, _0806F63C @ =gUnknown_3000FA4 + ldr r0, _0806F640 @ =sub_806F7A8 + str r0, [r1] + ldr r1, _0806F644 @ =gUnknown_3000FA9 + movs r0, 0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0806F63C: .4byte gUnknown_3000FA4 +_0806F640: .4byte sub_806F7A8 +_0806F644: .4byte gUnknown_3000FA9 + thumb_func_end sub_806F624 + + thumb_func_start sub_806F648 +sub_806F648: @ 806F648 + push {lr} + bl sub_80F6CBC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _0806F674 + ldr r1, _0806F66C @ =gUnknown_3000FA9 + movs r0, 0 + strb r0, [r1] + ldr r0, _0806F670 @ =gUnknown_3000FA4 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + b _0806F676 + .align 2, 0 +_0806F66C: .4byte gUnknown_3000FA9 +_0806F670: .4byte gUnknown_3000FA4 +_0806F674: + movs r0, 0 +_0806F676: + pop {r1} + bx r1 + thumb_func_end sub_806F648 + + thumb_func_start sub_806F67C +sub_806F67C: @ 806F67C + push {lr} + bl sub_812B234 + movs r0, 0xC + bl sub_812B1F0 + bl sub_806F624 + ldr r0, _0806F698 @ =sub_806F6D4 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0806F698: .4byte sub_806F6D4 + thumb_func_end sub_806F67C + + thumb_func_start sub_806F69C +sub_806F69C: @ 806F69C + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + ldr r0, _0806F6C8 @ =gUnknown_2021D18 + adds r1, r2, 0 + bl sub_8008FCC + movs r0, 0 + movs r1, 0x1 + bl sub_80F7768 + movs r0, 0x1 + bl sub_80F6E08 + ldr r1, _0806F6CC @ =gUnknown_3000FA9 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _0806F6D0 @ =gUnknown_3000FA4 + str r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806F6C8: .4byte gUnknown_2021D18 +_0806F6CC: .4byte gUnknown_3000FA9 +_0806F6D0: .4byte gUnknown_3000FA4 + thumb_func_end sub_806F69C + + thumb_func_start sub_806F6D4 +sub_806F6D4: @ 806F6D4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_806F648 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + beq _0806F700 + cmp r1, 0x1 + bgt _0806F6F0 + cmp r1, 0 + beq _0806F712 + b _0806F704 +_0806F6F0: + cmp r1, 0x3 + bgt _0806F704 + ldr r1, _0806F6FC @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] + b _0806F704 + .align 2, 0 +_0806F6FC: .4byte gUnknown_20370D0 +_0806F700: + ldr r0, _0806F718 @ =gUnknown_20370D0 + strh r1, [r0] +_0806F704: + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 + bl sub_812B248 +_0806F712: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806F718: .4byte gUnknown_20370D0 + thumb_func_end sub_806F6D4 + + thumb_func_start sub_806F71C +sub_806F71C: @ 806F71C + push {lr} + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + pop {r0} + bx r0 + thumb_func_end sub_806F71C + + thumb_func_start sub_806F72C +sub_806F72C: @ 806F72C + push {lr} + bl sub_806FE84 + pop {r0} + bx r0 + thumb_func_end sub_806F72C + + thumb_func_start sub_806F738 +sub_806F738: @ 806F738 + ldr r1, _0806F740 @ =gUnknown_3000FA8 + movs r0, 0x3C + strb r0, [r1] + bx lr + .align 2, 0 +_0806F740: .4byte gUnknown_3000FA8 + thumb_func_end sub_806F738 + + thumb_func_start sub_806F744 +sub_806F744: @ 806F744 + push {lr} + ldr r1, _0806F764 @ =gUnknown_3000FA8 + ldrb r0, [r1] + subs r2, r0, 0x1 + strb r2, [r1] + ldr r0, _0806F768 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0806F76C + lsls r0, r2, 24 + cmp r0, 0 + beq _0806F772 + movs r0, 0 + b _0806F774 + .align 2, 0 +_0806F764: .4byte gUnknown_3000FA8 +_0806F768: .4byte gUnknown_30030F0 +_0806F76C: + movs r0, 0x5 + bl sub_80722CC +_0806F772: + movs r0, 0x1 +_0806F774: + pop {r1} + bx r1 + thumb_func_end sub_806F744 + + thumb_func_start sub_806F778 +sub_806F778: @ 806F778 + push {lr} + ldr r1, _0806F794 @ =gUnknown_3000FA8 + ldrb r0, [r1] + cmp r0, 0 + bne _0806F79C + ldr r0, _0806F798 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806F7A0 + movs r0, 0x1 + b _0806F7A2 + .align 2, 0 +_0806F794: .4byte gUnknown_3000FA8 +_0806F798: .4byte gUnknown_30030F0 +_0806F79C: + subs r0, 0x1 + strb r0, [r1] +_0806F7A0: + movs r0, 0 +_0806F7A2: + pop {r1} + bx r1 + thumb_func_end sub_806F778 + + thumb_func_start sub_806F7A8 +sub_806F7A8: @ 806F7A8 + push {lr} + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_80F6F9C + bl sub_80F7948 + movs r0, 0 + bl sub_8112EDC + bl sub_806FCF4 + ldr r0, _0806F7D4 @ =gUnknown_81C55C9 + ldr r1, _0806F7D8 @ =sub_806F7DC + bl sub_806F69C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F7D4: .4byte gUnknown_81C55C9 +_0806F7D8: .4byte sub_806F7DC + thumb_func_end sub_806F7A8 + + thumb_func_start sub_806F7DC +sub_806F7DC: @ 806F7DC + push {lr} + bl sub_80F7858 + ldr r1, _0806F7F0 @ =gUnknown_3000FA4 + ldr r0, _0806F7F4 @ =sub_806F7F8 + str r0, [r1] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F7F0: .4byte gUnknown_3000FA4 +_0806F7F4: .4byte sub_806F7F8 + thumb_func_end sub_806F7DC + + thumb_func_start sub_806F7F8 +sub_806F7F8: @ 806F7F8 + push {lr} + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0806F81A + cmp r1, 0 + bgt _0806F814 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0806F858 + b _0806F864 +_0806F814: + cmp r1, 0x1 + beq _0806F858 + b _0806F864 +_0806F81A: + ldr r0, _0806F838 @ =gUnknown_30053A0 + ldrh r0, [r0] + cmp r0, 0 + beq _0806F826 + cmp r0, 0x2 + bne _0806F82E +_0806F826: + ldr r0, _0806F83C @ =gUnknown_2031DB0 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F848 +_0806F82E: + ldr r1, _0806F840 @ =gUnknown_3000FA4 + ldr r0, _0806F844 @ =sub_806F86C + str r0, [r1] + b _0806F864 + .align 2, 0 +_0806F838: .4byte gUnknown_30053A0 +_0806F83C: .4byte gUnknown_2031DB0 +_0806F840: .4byte gUnknown_3000FA4 +_0806F844: .4byte sub_806F86C +_0806F848: + ldr r1, _0806F850 @ =gUnknown_3000FA4 + ldr r0, _0806F854 @ =sub_806F924 + str r0, [r1] + b _0806F864 + .align 2, 0 +_0806F850: .4byte gUnknown_3000FA4 +_0806F854: .4byte sub_806F924 +_0806F858: + bl sub_806F72C + bl sub_806F71C + movs r0, 0x2 + b _0806F866 +_0806F864: + movs r0, 0 +_0806F866: + pop {r1} + bx r1 + thumb_func_end sub_806F7F8 + + thumb_func_start sub_806F86C +sub_806F86C: @ 806F86C + push {lr} + ldr r0, _0806F880 @ =gUnknown_2031DB0 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806F88C + ldr r0, _0806F884 @ =gUnknown_81C566A + ldr r1, _0806F888 @ =sub_806F8C0 + bl sub_806F69C + b _0806F894 + .align 2, 0 +_0806F880: .4byte gUnknown_2031DB0 +_0806F884: .4byte gUnknown_81C566A +_0806F888: .4byte sub_806F8C0 +_0806F88C: + ldr r0, _0806F89C @ =gUnknown_81C55EA + ldr r1, _0806F8A0 @ =sub_806F8A4 + bl sub_806F69C +_0806F894: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F89C: .4byte gUnknown_81C55EA +_0806F8A0: .4byte sub_806F8A4 + thumb_func_end sub_806F86C + + thumb_func_start sub_806F8A4 +sub_806F8A4: @ 806F8A4 + push {lr} + bl sub_80F7858 + ldr r1, _0806F8B8 @ =gUnknown_3000FA4 + ldr r0, _0806F8BC @ =sub_806F8DC + str r0, [r1] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F8B8: .4byte gUnknown_3000FA4 +_0806F8BC: .4byte sub_806F8DC + thumb_func_end sub_806F8A4 + + thumb_func_start sub_806F8C0 +sub_806F8C0: @ 806F8C0 + push {lr} + bl sub_80F7880 + ldr r1, _0806F8D4 @ =gUnknown_3000FA4 + ldr r0, _0806F8D8 @ =sub_806F8DC + str r0, [r1] + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F8D4: .4byte gUnknown_3000FA4 +_0806F8D8: .4byte sub_806F8DC + thumb_func_end sub_806F8C0 + + thumb_func_start sub_806F8DC +sub_806F8DC: @ 806F8DC + push {lr} + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0806F8FE + cmp r1, 0 + bgt _0806F8F8 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0806F910 + b _0806F91C +_0806F8F8: + cmp r1, 0x1 + beq _0806F910 + b _0806F91C +_0806F8FE: + ldr r1, _0806F908 @ =gUnknown_3000FA4 + ldr r0, _0806F90C @ =sub_806F924 + str r0, [r1] + b _0806F91C + .align 2, 0 +_0806F908: .4byte gUnknown_3000FA4 +_0806F90C: .4byte sub_806F924 +_0806F910: + bl sub_806F72C + bl sub_806F71C + movs r0, 0x2 + b _0806F91E +_0806F91C: + movs r0, 0 +_0806F91E: + pop {r1} + bx r1 + thumb_func_end sub_806F8DC + + thumb_func_start sub_806F924 +sub_806F924: @ 806F924 + push {lr} + bl sub_8112450 + ldr r0, _0806F938 @ =gUnknown_81C5625 + ldr r1, _0806F93C @ =sub_806F940 + bl sub_806F69C + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F938: .4byte gUnknown_81C5625 +_0806F93C: .4byte sub_806F940 + thumb_func_end sub_806F924 + + thumb_func_start sub_806F940 +sub_806F940: @ 806F940 + push {r4,lr} + movs r0, 0 + bl sub_8054E90 + ldr r4, _0806F95C @ =gUnknown_2031DB0 + ldrb r0, [r4] + cmp r0, 0x1 + bne _0806F960 + movs r0, 0x4 + bl sub_80DA364 + movs r0, 0 + strb r0, [r4] + b _0806F966 + .align 2, 0 +_0806F95C: .4byte gUnknown_2031DB0 +_0806F960: + movs r0, 0 + bl sub_80DA364 +_0806F966: + ldr r1, _0806F974 @ =gUnknown_3000FA4 + ldr r0, _0806F978 @ =sub_806F97C + str r0, [r1] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806F974: .4byte gUnknown_3000FA4 +_0806F978: .4byte sub_806F97C + thumb_func_end sub_806F940 + + thumb_func_start sub_806F97C +sub_806F97C: @ 806F97C + push {lr} + ldr r0, _0806F990 @ =gUnknown_3005420 + ldrh r0, [r0] + cmp r0, 0x1 + bne _0806F99C + ldr r0, _0806F994 @ =gUnknown_81C5647 + ldr r1, _0806F998 @ =sub_806F9B8 + bl sub_806F69C + b _0806F9A4 + .align 2, 0 +_0806F990: .4byte gUnknown_3005420 +_0806F994: .4byte gUnknown_81C5647 +_0806F998: .4byte sub_806F9B8 +_0806F99C: + ldr r0, _0806F9B0 @ =gUnknown_841614B + ldr r1, _0806F9B4 @ =sub_806FA04 + bl sub_806F69C +_0806F9A4: + bl sub_806F738 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F9B0: .4byte gUnknown_841614B +_0806F9B4: .4byte sub_806FA04 + thumb_func_end sub_806F97C + + thumb_func_start sub_806F9B8 +sub_806F9B8: @ 806F9B8 + push {lr} + bl sub_80F6CBC + lsls r0, 16 + cmp r0, 0 + bne _0806F9D0 + movs r0, 0x30 + bl sub_80722CC + ldr r1, _0806F9D8 @ =gUnknown_3000FA4 + ldr r0, _0806F9DC @ =sub_806F9E0 + str r0, [r1] +_0806F9D0: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806F9D8: .4byte gUnknown_3000FA4 +_0806F9DC: .4byte sub_806F9E0 + thumb_func_end sub_806F9B8 + + thumb_func_start sub_806F9E0 +sub_806F9E0: @ 806F9E0 + push {lr} + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _0806F9FE + bl sub_806F744 + lsls r0, 24 + cmp r0, 0 + beq _0806F9FE + bl sub_806F72C + movs r0, 0x1 + b _0806FA00 +_0806F9FE: + movs r0, 0 +_0806FA00: + pop {r1} + bx r1 + thumb_func_end sub_806F9E0 + + thumb_func_start sub_806FA04 +sub_806FA04: @ 806FA04 + push {lr} + bl sub_80F6CBC + lsls r0, 16 + cmp r0, 0 + bne _0806FA1C + movs r0, 0x16 + bl sub_80722CC + ldr r1, _0806FA24 @ =gUnknown_3000FA4 + ldr r0, _0806FA28 @ =sub_806FA2C + str r0, [r1] +_0806FA1C: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0806FA24: .4byte gUnknown_3000FA4 +_0806FA28: .4byte sub_806FA2C + thumb_func_end sub_806FA04 + + thumb_func_start sub_806FA2C +sub_806FA2C: @ 806FA2C + push {lr} + bl sub_806F778 + lsls r0, 24 + cmp r0, 0 + beq _0806FA40 + bl sub_806F72C + movs r0, 0x3 + b _0806FA42 +_0806FA40: + movs r0, 0 +_0806FA42: + pop {r1} + bx r1 + thumb_func_end sub_806FA2C + + thumb_func_start sub_806FA48 +sub_806FA48: @ 806FA48 + push {lr} + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_806FA48 + + thumb_func_start sub_806FA54 +sub_806FA54: @ 806FA54 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + ldrb r0, [r0] + cmp r0, 0x4 + bls _0806FA66 + b _0806FB64 +_0806FA66: + lsls r0, 2 + ldr r1, _0806FA70 @ =_0806FA74 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806FA70: .4byte _0806FA74 + .align 2, 0 +_0806FA74: + .4byte _0806FA88 + .4byte _0806FB00 + .4byte _0806FB12 + .4byte _0806FB3C + .4byte _0806FB60 +_0806FA88: + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80006F4 + bl sub_8087E64 + movs r2, 0xA0 + lsls r2, 19 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _0806FAF4 @ =0x040000d4 + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _0806FAF8 @ =0x81000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0xC0 + lsls r2, 19 + movs r3, 0xC0 + lsls r3, 9 + mov r4, sp + movs r6, 0 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _0806FAFC @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_0806FACA: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r5 + subs r3, r5 + cmp r3, r5 + bhi _0806FACA + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + b _0806FB64 + .align 2, 0 +_0806FAF4: .4byte 0x040000d4 +_0806FAF8: .4byte 0x81000200 +_0806FAFC: .4byte 0x81000800 +_0806FB00: + bl sub_8006B10 + bl sub_80773BC + bl sub_8070528 + bl sub_8087EA4 + b _0806FB64 +_0806FB12: + movs r0, 0 + bl sub_8001618 + ldr r1, _0806FB34 @ =gUnknown_83A73B8 + movs r0, 0 + movs r2, 0x1 + bl sub_8001658 + ldr r0, _0806FB38 @ =gUnknown_83A73BC + bl sub_8003B24 + movs r0, 0 + movs r1, 0x8 + movs r2, 0xF0 + bl sub_814FF2C + b _0806FB64 + .align 2, 0 +_0806FB34: .4byte gUnknown_83A73B8 +_0806FB38: .4byte gUnknown_83A73BC +_0806FB3C: + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _0806FB5C @ =sub_806FA48 + bl sub_80006F4 + movs r0, 0x1 + bl sub_8000B68 + b _0806FB64 + .align 2, 0 +_0806FB5C: .4byte sub_806FA48 +_0806FB60: + movs r0, 0x1 + b _0806FB6E +_0806FB64: + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 +_0806FB6E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806FA54 + + thumb_func_start sub_806FB7C +sub_806FB7C: @ 806FB7C + push {lr} + ldr r0, _0806FB9C @ =gUnknown_3003528 + bl sub_806FA54 + cmp r0, 0 + beq _0806FB96 + ldr r0, _0806FBA0 @ =sub_806FBB8 + movs r1, 0x50 + bl sub_807741C + ldr r0, _0806FBA4 @ =sub_806FBA8 + bl sub_8000544 +_0806FB96: + pop {r0} + bx r0 + .align 2, 0 +_0806FB9C: .4byte gUnknown_3003528 +_0806FBA0: .4byte sub_806FBB8 +_0806FBA4: .4byte sub_806FBA8 + thumb_func_end sub_806FB7C + + thumb_func_start sub_806FBA8 +sub_806FBA8: @ 806FBA8 + push {lr} + bl sub_8077578 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_806FBA8 + + thumb_func_start sub_806FBB8 +sub_806FBB8: @ 806FBB8 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0806FBEC @ =gUnknown_3005098 + adds r5, r0, r1 + ldr r0, _0806FBF0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806FBD8 + b _0806FCE8 +_0806FBD8: + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x6 + bls _0806FBE2 + b _0806FCE8 +_0806FBE2: + lsls r0, 2 + ldr r1, _0806FBF4 @ =_0806FBF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806FBEC: .4byte gUnknown_3005098 +_0806FBF0: .4byte gUnknown_2037AB8 +_0806FBF4: .4byte _0806FBF8 + .align 2, 0 +_0806FBF8: + .4byte _0806FC14 + .4byte _0806FC80 + .4byte _0806FC8C + .4byte _0806FC9C + .4byte _0806FCB0 + .4byte _0806FCC8 + .4byte _0806FCD8 +_0806FC14: + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _0806FC74 @ =gUnknown_8419F54 + movs r4, 0 + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0xFF + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x8 + movs r2, 0xF + bl sub_8150048 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _0806FC78 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0806FC7C + bl sub_811B0D0 + cmp r0, 0 + beq _0806FC7C + movs r0, 0x5 + b _0806FCE6 + .align 2, 0 +_0806FC74: .4byte gUnknown_8419F54 +_0806FC78: .4byte gUnknown_3003F3C +_0806FC7C: + movs r0, 0x1 + b _0806FCE6 +_0806FC80: + bl sub_804C1C0 + bl sub_80DA45C + movs r0, 0x2 + b _0806FCE6 +_0806FC8C: + bl sub_80DA4A0 + lsls r0, 24 + cmp r0, 0 + beq _0806FCE8 + bl sub_804C1DC + b _0806FCE4 +_0806FC9C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + movs r0, 0x4 + b _0806FCE6 +_0806FCB0: + bl sub_8003ECC + ldr r0, _0806FCC4 @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 + b _0806FCE8 + .align 2, 0 +_0806FCC4: .4byte gUnknown_30030F0 +_0806FCC8: + ldr r0, _0806FCD4 @ =sub_80DA634 + movs r1, 0x5 + bl sub_807741C + movs r0, 0x6 + b _0806FCE6 + .align 2, 0 +_0806FCD4: .4byte sub_80DA634 +_0806FCD8: + ldr r0, _0806FCF0 @ =sub_80DA634 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _0806FCE8 +_0806FCE4: + movs r0, 0x3 +_0806FCE6: + strh r0, [r5] +_0806FCE8: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806FCF0: .4byte sub_80DA634 + thumb_func_end sub_806FBB8 + + thumb_func_start sub_806FCF4 +sub_806FCF4: @ 806FCF4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r5, _0806FE54 @ =gUnknown_2037104 + ldr r0, _0806FE58 @ =gUnknown_83A73CC + bl sub_8003CE4 + strb r0, [r5] + ldrb r0, [r5] + ldr r4, _0806FE5C @ =0x0000021d + adds r1, r4, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r0, [r5] + movs r1, 0 + adds r2, r4, 0 + movs r3, 0xD + bl sub_810F2E8 + ldr r4, _0806FE60 @ =gUnknown_2021D18 + movs r0, 0x3 + adds r1, r4, 0 + movs r2, 0x8 + bl sub_80F7FCC + movs r6, 0x1 + negs r6, r6 + movs r0, 0x2 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8005ED4 + movs r2, 0x70 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r5] + ldr r1, _0806FE64 @ =gUnknown_83A73DC + str r1, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_812E51C + movs r0, 0x2 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8005ED4 + ldrb r0, [r5] + ldr r1, _0806FE68 @ =gUnknown_83A73D4 + mov r9, r1 + str r1, [sp] + str r6, [sp, 0x4] + ldr r1, _0806FE6C @ =gUnknown_841617A + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0x2 + movs r3, 0xE + bl sub_812E51C + movs r0, 0 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_80F7FCC + ldrb r0, [r5] + adds r1, r4, 0 + movs r2, 0x3C + movs r3, 0xE + bl sub_812E6DC + ldrb r0, [r5] + mov r1, r9 + str r1, [sp] + str r6, [sp, 0x4] + ldr r1, _0806FE70 @ =gUnknown_8416181 + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0x2 + movs r3, 0x1C + bl sub_812E51C + movs r0, 0x4 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_80F7FCC + ldrb r0, [r5] + ldr r1, _0806FE74 @ =gUnknown_83A73D8 + mov r8, r1 + str r1, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0 + movs r2, 0x3C + movs r3, 0x1C + bl sub_812E51C + movs r7, 0x2A + ldr r0, _0806FE78 @ =0x00000829 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806FE0A + ldrb r0, [r5] + mov r1, r9 + str r1, [sp] + str r6, [sp, 0x4] + ldr r1, _0806FE7C @ =gUnknown_8416188 + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0x2 + movs r3, 0x2A + bl sub_812E51C + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_80F7FCC + ldrb r0, [r5] + mov r1, r8 + str r1, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0 + movs r2, 0x3C + movs r3, 0x2A + bl sub_812E51C + movs r7, 0x38 +_0806FE0A: + ldrb r0, [r5] + mov r1, r9 + str r1, [sp] + str r6, [sp, 0x4] + ldr r1, _0806FE80 @ =gUnknown_8416190 + str r1, [sp, 0x8] + movs r1, 0 + movs r2, 0x2 + adds r3, r7, 0 + bl sub_812E51C + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_80F7FCC + ldrb r0, [r5] + mov r1, r8 + str r1, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0 + movs r2, 0x3C + adds r3, r7, 0 + bl sub_812E51C + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806FE54: .4byte gUnknown_2037104 +_0806FE58: .4byte gUnknown_83A73CC +_0806FE5C: .4byte 0x0000021d +_0806FE60: .4byte gUnknown_2021D18 +_0806FE64: .4byte gUnknown_83A73DC +_0806FE68: .4byte gUnknown_83A73D4 +_0806FE6C: .4byte gUnknown_841617A +_0806FE70: .4byte gUnknown_8416181 +_0806FE74: .4byte gUnknown_83A73D8 +_0806FE78: .4byte 0x00000829 +_0806FE7C: .4byte gUnknown_8416188 +_0806FE80: .4byte gUnknown_8416190 + thumb_func_end sub_806FCF4 + + thumb_func_start sub_806FE84 +sub_806FE84: @ 806FE84 + push {r4,lr} + ldr r4, _0806FE9C @ =gUnknown_2037104 + ldrb r0, [r4] + movs r1, 0 + bl sub_80F6F9C + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806FE9C: .4byte gUnknown_2037104 + thumb_func_end sub_806FE84 + + thumb_func_start sub_806FEA0 +sub_806FEA0: @ 806FEA0 + push {lr} + movs r0, 0x5 + bl sub_80722CC + bl sub_80F793C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl sub_80F6F9C + bl sub_80F7948 + bl sub_80696C0 + bl sub_806994C + pop {r0} + bx r0 + thumb_func_end sub_806FEA0 + + thumb_func_start sub_806FEC8 +sub_806FEC8: @ 806FEC8 + ldrb r3, [r1] + adds r0, r3 + strb r2, [r0] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bx lr + thumb_func_end sub_806FEC8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/string_util.s b/asm/string_util.s new file mode 100644 index 000000000..4f7c45243 --- /dev/null +++ b/asm/string_util.s @@ -0,0 +1,1168 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8008CF4 +sub_8008CF4: @ 8008CF4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0xA + movs r3, 0 +_08008CFC: + adds r2, r4, r3 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08008D10 + adds r0, r2, 0 + b _08008D20 +_08008D10: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r5 + bcc _08008CFC + adds r0, r4, r3 + movs r1, 0xFF + strb r1, [r0] +_08008D20: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8008CF4 + + thumb_func_start sub_8008D28 +sub_8008D28: @ 8008D28 + push {r4,lr} + adds r3, r0, 0 + movs r4, 0xA + movs r2, 0 +_08008D30: + adds r1, r3, r2 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08008D3C + adds r0, r1, 0 + b _08008D4C +_08008D3C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r4 + bcc _08008D30 + adds r0, r3, r2 + movs r1, 0xFF + strb r1, [r0] +_08008D4C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8008D28 + + thumb_func_start sub_8008D54 +sub_8008D54: @ 8008D54 + push {r4,r5,lr} + adds r4, r0, 0 + movs r5, 0x7 + movs r3, 0 +_08008D5C: + adds r2, r4, r3 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08008D70 + adds r0, r2, 0 + b _08008D7C +_08008D70: + adds r3, 0x1 + cmp r3, r5 + blt _08008D5C + adds r0, r4, r3 + movs r1, 0xFF + strb r1, [r0] +_08008D7C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8008D54 + + thumb_func_start sub_8008D84 +sub_8008D84: @ 8008D84 + push {lr} + adds r3, r0, 0 + b _08008D90 +_08008D8A: + strb r2, [r3] + adds r3, 0x1 + adds r1, 0x1 +_08008D90: + ldrb r2, [r1] + adds r0, r2, 0 + cmp r0, 0xFF + bne _08008D8A + movs r0, 0xFF + strb r0, [r3] + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_8008D84 + + thumb_func_start sub_8008DA4 +sub_8008DA4: @ 8008DA4 + push {lr} + adds r2, r0, 0 + b _08008DAC +_08008DAA: + adds r2, 0x1 +_08008DAC: + ldrb r0, [r2] + cmp r0, 0xFF + bne _08008DAA + adds r0, r2, 0 + bl sub_8008D84 + pop {r1} + bx r1 + thumb_func_end sub_8008DA4 + + thumb_func_start sub_8008DBC +sub_8008DBC: @ 8008DBC + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + lsls r2, 24 + lsrs r5, r2, 24 + movs r3, 0 + adds r0, r5, 0 + cmp r3, r0 + bcs _08008DE2 + adds r2, r0, 0 +_08008DD0: + adds r1, r4, r3 + adds r0, r6, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r2 + bcc _08008DD0 +_08008DE2: + adds r0, r4, r5 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8008DBC + + thumb_func_start sub_8008DEC +sub_8008DEC: @ 8008DEC + push {lr} + adds r3, r0, 0 + lsls r2, 24 + lsrs r2, 24 + b _08008DF8 +_08008DF6: + adds r3, 0x1 +_08008DF8: + ldrb r0, [r3] + cmp r0, 0xFF + bne _08008DF6 + adds r0, r3, 0 + bl sub_8008DBC + pop {r1} + bx r1 + thumb_func_end sub_8008DEC + + thumb_func_start sub_8008E08 +sub_8008E08: @ 8008E08 + push {lr} + adds r2, r0, 0 + movs r1, 0 + ldrb r0, [r2] + cmp r0, 0xFF + beq _08008E22 +_08008E14: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08008E14 +_08008E22: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_8008E08 + + thumb_func_start sub_8008E28 +sub_8008E28: @ 8008E28 + push {lr} + adds r2, r0, 0 + b _08008E3A +_08008E2E: + cmp r0, 0xFF + bne _08008E36 + movs r0, 0 + b _08008E48 +_08008E36: + adds r2, 0x1 + adds r1, 0x1 +_08008E3A: + ldrb r0, [r2] + ldrb r3, [r1] + cmp r0, r3 + beq _08008E2E + ldrb r0, [r2] + ldrb r1, [r1] + subs r0, r1 +_08008E48: + pop {r1} + bx r1 + thumb_func_end sub_8008E28 + + thumb_func_start sub_8008E4C +sub_8008E4C: @ 8008E4C + push {r4,lr} + adds r3, r0, 0 + b _08008E64 +_08008E52: + cmp r0, 0xFF + beq _08008E60 + adds r3, 0x1 + adds r1, 0x1 + subs r2, 0x1 + cmp r2, 0 + bne _08008E64 +_08008E60: + movs r0, 0 + b _08008E72 +_08008E64: + ldrb r0, [r3] + ldrb r4, [r1] + cmp r0, r4 + beq _08008E52 + ldrb r0, [r3] + ldrb r1, [r1] + subs r0, r1 +_08008E72: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8008E4C + + thumb_func_start sub_8008E78 +sub_8008E78: @ 8008E78 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r6, r1, 0 + lsls r3, 24 + ldr r0, _08008EC8 @ =gUnknown_8231E3C + lsrs r3, 22 + subs r3, 0x4 + adds r3, r0 + ldr r0, [r3] + movs r7, 0 + cmp r2, 0x1 + bne _08008E96 + movs r7, 0x2 +_08008E96: + cmp r2, 0x2 + bne _08008E9C + movs r7, 0x1 +_08008E9C: + adds r5, r0, 0 + cmp r5, 0 + ble _08008F08 + ldr r0, _08008ECC @ =gUnknown_8231E2C + mov r8, r0 +_08008EA6: + adds r0, r6, 0 + adds r1, r5, 0 + bl __divsi3 + lsls r0, 16 + lsrs r2, r0, 16 + adds r0, r5, 0 + muls r0, r2 + subs r1, r6, r0 + cmp r7, 0x1 + bne _08008ED0 + adds r3, r4, 0 + adds r4, 0x1 + cmp r2, 0x9 + bls _08008EE2 + b _08008EEA + .align 2, 0 +_08008EC8: .4byte gUnknown_8231E3C +_08008ECC: .4byte gUnknown_8231E2C +_08008ED0: + cmp r2, 0 + bne _08008ED8 + cmp r5, 0x1 + bne _08008EF0 +_08008ED8: + movs r7, 0x1 + adds r3, r4, 0 + adds r4, 0x1 + cmp r2, 0x9 + bhi _08008EEA +_08008EE2: + mov r6, r8 + adds r0, r2, r6 + ldrb r0, [r0] + b _08008EEC +_08008EEA: + movs r0, 0xAC +_08008EEC: + strb r0, [r3] + b _08008EF8 +_08008EF0: + cmp r7, 0x2 + bne _08008EF8 + strb r2, [r4] + adds r4, 0x1 +_08008EF8: + adds r6, r1, 0 + adds r0, r5, 0 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 + cmp r5, 0 + bgt _08008EA6 +_08008F08: + movs r0, 0xFF + strb r0, [r4] + adds r0, r4, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8008E78 + + thumb_func_start sub_8008F18 +sub_8008F18: @ 8008F18 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r6, r0, 0 + adds r7, r1, 0 + lsls r3, 24 + lsrs r3, 24 + movs r1, 0x1 + movs r0, 0x1 + cmp r1, r3 + bcs _08008F3C +_08008F30: + lsls r1, 4 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r3 + bcc _08008F30 +_08008F3C: + movs r3, 0 + cmp r2, 0x1 + bne _08008F44 + movs r3, 0x2 +_08008F44: + cmp r2, 0x2 + bne _08008F4A + movs r3, 0x1 +_08008F4A: + adds r5, r1, 0 + cmp r5, 0 + ble _08008FB8 + ldr r0, _08008F7C @ =gUnknown_8231E2C + mov r8, r0 +_08008F54: + adds r0, r7, 0 + adds r1, r5, 0 + str r3, [sp] + bl __divsi3 + adds r4, r0, 0 + adds r0, r7, 0 + adds r1, r5, 0 + bl __modsi3 + adds r1, r0, 0 + ldr r3, [sp] + cmp r3, 0x1 + bne _08008F80 + adds r2, r6, 0 + adds r6, 0x1 + cmp r4, 0xF + bls _08008F92 + b _08008F9A + .align 2, 0 +_08008F7C: .4byte gUnknown_8231E2C +_08008F80: + cmp r4, 0 + bne _08008F88 + cmp r5, 0x1 + bne _08008FA0 +_08008F88: + movs r3, 0x1 + adds r2, r6, 0 + adds r6, 0x1 + cmp r4, 0xF + bhi _08008F9A +_08008F92: + mov r7, r8 + adds r0, r4, r7 + ldrb r0, [r0] + b _08008F9C +_08008F9A: + movs r0, 0xAC +_08008F9C: + strb r0, [r2] + b _08008FA8 +_08008FA0: + cmp r3, 0x2 + bne _08008FA8 + strb r4, [r6] + adds r6, 0x1 +_08008FA8: + adds r7, r1, 0 + adds r0, r5, 0 + cmp r5, 0 + bge _08008FB2 + adds r0, 0xF +_08008FB2: + asrs r5, r0, 4 + cmp r5, 0 + bgt _08008F54 +_08008FB8: + movs r0, 0xFF + strb r0, [r6] + adds r0, r6, 0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8008F18 + + thumb_func_start sub_8008FCC +sub_8008FCC: @ 8008FCC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 +_08008FD2: + ldrb r2, [r5] + adds r5, 0x1 + adds r0, r2, 0 + subs r0, 0xFA + cmp r0, 0x5 + bhi _080090A6 + lsls r0, 2 + ldr r1, _08008FE8 @ =_08008FEC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08008FE8: .4byte _08008FEC + .align 2, 0 +_08008FEC: + .4byte _080090A6 + .4byte _080090A6 + .4byte _08009018 + .4byte _08009004 + .4byte _080090A6 + .4byte _080090AC +_08009004: + ldrb r0, [r5] + adds r5, 0x1 + bl sub_80091E0 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_8008FCC + adds r4, r0, 0 + b _08008FD2 +_08009018: + strb r2, [r4] + adds r4, 0x1 + ldrb r2, [r5] + adds r5, 0x1 + strb r2, [r4] + adds r4, 0x1 + subs r0, r2, 0x4 + cmp r0, 0x14 + bhi _0800909C + lsls r0, 2 + ldr r1, _08009034 @ =_08009038 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08009034: .4byte _08009038 + .align 2, 0 +_08009038: + .4byte _0800908C + .4byte _0800909C + .4byte _0800909C + .4byte _08008FD2 + .4byte _0800909C + .4byte _08008FD2 + .4byte _0800909C + .4byte _08009094 + .4byte _0800909C + .4byte _0800909C + .4byte _0800909C + .4byte _08008FD2 + .4byte _0800909C + .4byte _0800909C + .4byte _0800909C + .4byte _0800909C + .4byte _0800909C + .4byte _08008FD2 + .4byte _08008FD2 + .4byte _08008FD2 + .4byte _08008FD2 +_0800908C: + ldrb r0, [r5] + strb r0, [r4] + adds r5, 0x1 + adds r4, 0x1 +_08009094: + ldrb r0, [r5] + strb r0, [r4] + adds r5, 0x1 + adds r4, 0x1 +_0800909C: + ldrb r0, [r5] + strb r0, [r4] + adds r5, 0x1 + adds r4, 0x1 + b _08008FD2 +_080090A6: + strb r2, [r4] + adds r4, 0x1 + b _08008FD2 +_080090AC: + movs r0, 0xFF + strb r0, [r4] + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8008FCC + + thumb_func_start sub_80090B8 +sub_80090B8: @ 80090B8 + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _080090F0 @ =gUnknown_8231E64 + mov r0, sp + movs r2, 0x4 + bl memcpy + add r4, sp, 0x4 + ldr r1, _080090F4 @ =gUnknown_8231E68 + adds r0, r4, 0 + movs r2, 0x5 + bl memcpy + adds r0, r5, 0 + mov r1, sp +_080090DA: + bl sub_8008D84 + adds r5, r0, 0 +_080090E0: + ldrb r0, [r6] + adds r6, 0x1 + cmp r0, 0xFE + beq _080090F8 + cmp r0, 0xFF + bne _080090FE + b _0800910A + .align 2, 0 +_080090F0: .4byte gUnknown_8231E64 +_080090F4: .4byte gUnknown_8231E68 +_080090F8: + adds r0, r5, 0 + adds r1, r4, 0 + b _080090DA +_080090FE: + strb r0, [r5] + adds r5, 0x1 + adds r0, 0x40 + strb r0, [r5] + adds r5, 0x1 + b _080090E0 +_0800910A: + strb r0, [r5] + adds r0, r5, 0 + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80090B8 + + thumb_func_start sub_8009118 +sub_8009118: @ 8009118 + ldr r0, _0800911C @ =gUnknown_2022100 + bx lr + .align 2, 0 +_0800911C: .4byte gUnknown_2022100 + thumb_func_end sub_8009118 + + thumb_func_start sub_8009120 +sub_8009120: @ 8009120 + ldr r0, _08009128 @ =gUnknown_300500C + ldr r0, [r0] + bx lr + .align 2, 0 +_08009128: .4byte gUnknown_300500C + thumb_func_end sub_8009120 + + thumb_func_start sub_800912C +sub_800912C: @ 800912C + ldr r0, _08009130 @ =gUnknown_2021CD0 + bx lr + .align 2, 0 +_08009130: .4byte gUnknown_2021CD0 + thumb_func_end sub_800912C + + thumb_func_start sub_8009134 +sub_8009134: @ 8009134 + ldr r0, _08009138 @ =gUnknown_2021CF0 + bx lr + .align 2, 0 +_08009138: .4byte gUnknown_2021CF0 + thumb_func_end sub_8009134 + + thumb_func_start sub_800913C +sub_800913C: @ 800913C + ldr r0, _08009140 @ =gUnknown_2021D04 + bx lr + .align 2, 0 +_08009140: .4byte gUnknown_2021D04 + thumb_func_end sub_800913C + + thumb_func_start sub_8009144 +sub_8009144: @ 8009144 + push {lr} + ldr r0, _08009154 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + beq _0800915C + ldr r0, _08009158 @ =gUnknown_8415A22 + b _0800915E + .align 2, 0 +_08009154: .4byte gUnknown_300500C +_08009158: .4byte gUnknown_8415A22 +_0800915C: + ldr r0, _08009164 @ =gUnknown_8415A21 +_0800915E: + pop {r1} + bx r1 + .align 2, 0 +_08009164: .4byte gUnknown_8415A21 + thumb_func_end sub_8009144 + + thumb_func_start sub_8009168 +sub_8009168: @ 8009168 + push {lr} + ldr r0, _08009188 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _0800918C @ =0x00003a4c + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080091A0 + ldr r0, _08009190 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08009198 + ldr r0, _08009194 @ =gUnknown_8415A5C + b _080091A2 + .align 2, 0 +_08009188: .4byte gUnknown_3005008 +_0800918C: .4byte 0x00003a4c +_08009190: .4byte gUnknown_300500C +_08009194: .4byte gUnknown_8415A5C +_08009198: + ldr r0, _0800919C @ =gUnknown_8415A58 + b _080091A2 + .align 2, 0 +_0800919C: .4byte gUnknown_8415A58 +_080091A0: + adds r0, r1, 0 +_080091A2: + pop {r1} + bx r1 + thumb_func_end sub_8009168 + + thumb_func_start sub_80091A8 +sub_80091A8: @ 80091A8 + ldr r0, _080091AC @ =gUnknown_8415A2C + bx lr + .align 2, 0 +_080091AC: .4byte gUnknown_8415A2C + thumb_func_end sub_80091A8 + + thumb_func_start sub_80091B0 +sub_80091B0: @ 80091B0 + ldr r0, _080091B4 @ =gUnknown_8415A36 + bx lr + .align 2, 0 +_080091B4: .4byte gUnknown_8415A36 + thumb_func_end sub_80091B0 + + thumb_func_start sub_80091B8 +sub_80091B8: @ 80091B8 + ldr r0, _080091BC @ =gUnknown_8415A31 + bx lr + .align 2, 0 +_080091BC: .4byte gUnknown_8415A31 + thumb_func_end sub_80091B8 + + thumb_func_start sub_80091C0 +sub_80091C0: @ 80091C0 + ldr r0, _080091C4 @ =gUnknown_8415A43 + bx lr + .align 2, 0 +_080091C4: .4byte gUnknown_8415A43 + thumb_func_end sub_80091C0 + + thumb_func_start sub_80091C8 +sub_80091C8: @ 80091C8 + ldr r0, _080091CC @ =gUnknown_8415A3C + bx lr + .align 2, 0 +_080091CC: .4byte gUnknown_8415A3C + thumb_func_end sub_80091C8 + + thumb_func_start sub_80091D0 +sub_80091D0: @ 80091D0 + ldr r0, _080091D4 @ =gUnknown_8415A50 + bx lr + .align 2, 0 +_080091D4: .4byte gUnknown_8415A50 + thumb_func_end sub_80091D0 + + thumb_func_start sub_80091D8 +sub_80091D8: @ 80091D8 + ldr r0, _080091DC @ =gUnknown_8415A49 + bx lr + .align 2, 0 +_080091DC: .4byte gUnknown_8415A49 + thumb_func_end sub_80091D8 + + thumb_func_start sub_80091E0 +sub_80091E0: @ 80091E0 + push {lr} + cmp r0, 0xD + bhi _080091F8 + ldr r1, _080091F4 @ =gUnknown_8231E70 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _080091FA + .align 2, 0 +_080091F4: .4byte gUnknown_8231E70 +_080091F8: + ldr r0, _08009200 @ =gUnknown_8415A20 +_080091FA: + pop {r1} + bx r1 + .align 2, 0 +_08009200: .4byte gUnknown_8415A20 + thumb_func_end sub_80091E0 + + thumb_func_start sub_8009204 +sub_8009204: @ 8009204 + push {lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0 + cmp r0, r2 + bcs _08009224 +_08009216: + strb r1, [r3] + adds r3, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r2 + bcc _08009216 +_08009224: + movs r0, 0xFF + strb r0, [r3] + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_8009204 + + thumb_func_start sub_8009230 +sub_8009230: @ 8009230 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r3, 16 + b _08009250 +_08009240: + strb r1, [r4] + adds r5, 0x1 + adds r4, 0x1 + cmp r3, 0 + beq _08009250 + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 +_08009250: + ldrb r1, [r5] + adds r0, r1, 0 + cmp r0, 0xFF + bne _08009240 + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _08009280 @ =0x0000ffff + cmp r3, r0 + beq _08009274 + adds r1, r0, 0 +_08009266: + strb r2, [r4] + adds r4, 0x1 + subs r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r1 + bne _08009266 +_08009274: + movs r0, 0xFF + strb r0, [r4] + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08009280: .4byte 0x0000ffff + thumb_func_end sub_8009230 + + thumb_func_start sub_8009284 +sub_8009284: @ 8009284 + push {lr} + lsls r2, r1, 16 + lsrs r2, 16 + movs r1, 0xFF + bl sub_8009204 + pop {r1} + bx r1 + thumb_func_end sub_8009284 + + thumb_func_start sub_8009294 +sub_8009294: @ 8009294 + push {r4,r5,lr} + adds r4, r0, 0 + adds r3, r1, 0 + subs r2, 0x1 + movs r5, 0x1 + negs r5, r5 + b _080092BA +_080092A2: + strb r0, [r4] + adds r3, 0x1 + adds r4, 0x1 + subs r0, r3, 0x1 + ldrb r0, [r0] + cmp r0, 0xF9 + bne _080092B8 + ldrb r0, [r3] + strb r0, [r4] + adds r3, 0x1 + adds r4, 0x1 +_080092B8: + subs r2, 0x1 +_080092BA: + cmp r2, r5 + beq _080092C6 + ldrb r0, [r3] + adds r1, r0, 0 + cmp r1, 0xFF + bne _080092A2 +_080092C6: + movs r0, 0xFF + strb r0, [r4] + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8009294 + + thumb_func_start sub_80092D4 +sub_80092D4: @ 80092D4 + push {lr} + adds r2, r0, 0 + movs r3, 0 + b _080092E6 +_080092DC: + cmp r1, 0xF9 + bne _080092E2 + adds r2, 0x1 +_080092E2: + adds r2, 0x1 + adds r3, 0x1 +_080092E6: + ldrb r1, [r2] + adds r0, r1, 0 + cmp r0, 0xFF + bne _080092DC + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_80092D4 + + thumb_func_start sub_80092F4 +sub_80092F4: @ 80092F4 + push {lr} + adds r3, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0xFC + strb r0, [r3] + adds r3, 0x1 + cmp r1, 0x1 + beq _08009316 + cmp r1, 0x1 + bcc _08009310 + cmp r1, 0x2 + beq _0800931C + b _08009320 +_08009310: + movs r0, 0x1 + strb r0, [r3] + b _0800931E +_08009316: + movs r0, 0x3 + strb r0, [r3] + b _0800931E +_0800931C: + strb r1, [r3] +_0800931E: + adds r3, 0x1 +_08009320: + strb r2, [r3] + adds r3, 0x1 + movs r0, 0xFF + strb r0, [r3] + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_80092F4 + + thumb_func_start sub_8009330 +sub_8009330: @ 8009330 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r0, 0 + cmp r1, 0x18 + bhi _08009342 + ldr r0, _08009348 @ =gUnknown_8231EA8 + adds r0, r1, r0 + ldrb r0, [r0] +_08009342: + pop {r1} + bx r1 + .align 2, 0 +_08009348: .4byte gUnknown_8231EA8 + thumb_func_end sub_8009330 + + thumb_func_start sub_800934C +sub_800934C: @ 800934C + push {r4,lr} + adds r4, r0, 0 + b _08009360 +_08009352: + adds r4, 0x1 + ldrb r0, [r4] + bl sub_8009330 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0 +_08009360: + ldrb r0, [r4] + cmp r0, 0xFC + beq _08009352 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800934C + + thumb_func_start sub_8009370 +sub_8009370: @ 8009370 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r6, 0 + b _08009392 +_0800937A: + cmp r1, r0 + bcs _08009388 + movs r6, 0x1 + negs r6, r6 + cmp r0, 0xFF + bne _08009388 + movs r6, 0x1 +_08009388: + ldrb r0, [r4] + cmp r0, 0xFF + beq _080093B2 + adds r4, 0x1 + adds r5, 0x1 +_08009392: + adds r0, r4, 0 + bl sub_800934C + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_800934C + adds r5, r0, 0 + ldrb r1, [r4] + ldrb r0, [r5] + cmp r1, r0 + bls _0800937A + movs r6, 0x1 + cmp r1, 0xFF + bne _080093B2 + subs r6, 0x2 +_080093B2: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8009370 + + thumb_func_start sub_80093BC +sub_80093BC: @ 80093BC + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + bne _0800941C + bl sub_8009424 + adds r0, r4, 0 + bl sub_8008E08 + lsls r0, 24 + lsrs r2, r0, 24 + adds r1, r2, 0 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r3, r2, 0 + adds r1, r4, r1 + movs r0, 0xFC + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + adds r3, r4, r3 + movs r0, 0x16 + strb r0, [r3] + adds r0, r2, 0x1 + lsls r0, 24 + adds r2, r4, r2 + movs r1, 0xFF + strb r1, [r2] + movs r1, 0xFF + lsls r1, 24 + adds r0, r1 + b _0800940E +_08009404: + adds r1, r2, r4 + ldrb r0, [r1] + strb r0, [r1, 0x2] + subs r0, r2, 0x1 + lsls r0, 24 +_0800940E: + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _08009404 + movs r0, 0xFC + strb r0, [r4] + movs r0, 0x15 + strb r0, [r4, 0x1] +_0800941C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80093BC + + thumb_func_start sub_8009424 +sub_8009424: @ 8009424 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + movs r6, 0 + ldrb r0, [r5] + cmp r0, 0xFF + beq _08009474 +_08009432: + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, 0xFC + bne _08009454 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, r4 + ldrb r0, [r0] + bl sub_8009330 + lsls r0, 24 + lsrs r0, 24 + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + b _0800946C +_08009454: + adds r2, r6, 0 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + adds r2, r5, r2 + adds r1, r4, 0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + adds r1, r5, r1 + ldrb r0, [r1] + strb r0, [r2] +_0800946C: + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08009432 +_08009474: + adds r1, r5, r6 + movs r0, 0xFF + strb r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8009424 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/task.s b/asm/task.s new file mode 100644 index 000000000..d3b1f86e1 --- /dev/null +++ b/asm/task.s @@ -0,0 +1,537 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80773BC +sub_80773BC: @ 80773BC + push {r4-r7,lr} + movs r4, 0 + ldr r6, _08077410 @ =gUnknown_3005090 + adds r7, r6, 0 + adds r7, 0x8 +_080773C6: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r6 + movs r1, 0 + strb r1, [r2, 0x4] + ldr r1, _08077414 @ =nullsub_43 + str r1, [r2] + strb r4, [r2, 0x5] + adds r4, 0x1 + strb r4, [r2, 0x6] + movs r1, 0x1 + negs r1, r1 + adds r5, r1, 0 + movs r1, 0xFF + strb r1, [r2, 0x7] + adds r0, r7 + movs r1, 0 + movs r2, 0x20 + bl memset + lsls r4, 24 + lsrs r4, 24 + cmp r4, 0xF + bls _080773C6 + ldr r0, _08077410 @ =gUnknown_3005090 + movs r1, 0xFE + strb r1, [r0, 0x5] + ldr r1, _08077418 @ =0x0000025e + adds r0, r1 + ldrb r1, [r0] + orrs r1, r5 + strb r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077410: .4byte gUnknown_3005090 +_08077414: .4byte nullsub_43 +_08077418: .4byte 0x0000025e + thumb_func_end sub_80773BC + + thumb_func_start sub_807741C +sub_807741C: @ 807741C + push {r4-r7,lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r6, 0 + ldr r7, _08077458 @ =gUnknown_3005090 +_08077428: + lsls r0, r6, 2 + adds r0, r6 + lsls r5, r0, 3 + adds r4, r5, r7 + ldrb r0, [r4, 0x4] + cmp r0, 0 + bne _0807745C + str r2, [r4] + strb r1, [r4, 0x7] + adds r0, r6, 0 + bl sub_8077470 + adds r0, r7, 0 + adds r0, 0x8 + adds r0, r5, r0 + movs r1, 0 + movs r2, 0x20 + bl memset + movs r0, 0x1 + strb r0, [r4, 0x4] + adds r0, r6, 0 + b _08077468 + .align 2, 0 +_08077458: .4byte gUnknown_3005090 +_0807745C: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bls _08077428 + movs r0, 0 +_08077468: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_807741C + + thumb_func_start sub_8077470 +sub_8077470: @ 8077470 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80775A8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x10 + bne _080774A0 + ldr r1, _0807749C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0xFE + strb r1, [r0, 0x5] + movs r1, 0xFF + strb r1, [r0, 0x6] + b _080774FC + .align 2, 0 +_0807749C: .4byte gUnknown_3005090 +_080774A0: + ldr r6, _080774DC @ =gUnknown_3005090 + lsls r0, r4, 2 + mov r12, r0 + mov r8, r6 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r6 +_080774AE: + lsls r0, r1, 2 + adds r0, r1 + lsls r5, r0, 3 + mov r7, r8 + adds r3, r5, r7 + ldrb r0, [r2, 0x7] + ldrb r7, [r3, 0x7] + cmp r0, r7 + bcs _080774E0 + ldrb r0, [r3, 0x5] + strb r0, [r2, 0x5] + strb r1, [r2, 0x6] + ldrb r0, [r3, 0x5] + cmp r0, 0xFE + beq _080774D8 + adds r1, r0, 0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + add r0, r8 + strb r4, [r0, 0x6] +_080774D8: + strb r4, [r3, 0x5] + b _080774FC + .align 2, 0 +_080774DC: .4byte gUnknown_3005090 +_080774E0: + ldrb r0, [r3, 0x6] + cmp r0, 0xFF + beq _080774EA + adds r1, r0, 0 + b _080774AE +_080774EA: + mov r2, r12 + adds r0, r2, r4 + lsls r0, 3 + adds r0, r6 + strb r1, [r0, 0x5] + adds r2, r5, r6 + ldrb r1, [r2, 0x6] + strb r1, [r0, 0x6] + strb r4, [r2, 0x6] +_080774FC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8077470 + + thumb_func_start sub_8077508 +sub_8077508: @ 8077508 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _0807753C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r2, r1, r4 + ldrb r0, [r2, 0x4] + cmp r0, 0 + beq _08077572 + movs r0, 0 + strb r0, [r2, 0x4] + ldrb r3, [r2, 0x5] + cmp r3, 0xFE + bne _08077540 + ldrb r0, [r2, 0x6] + cmp r0, 0xFF + beq _08077572 + adds r1, r0, 0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + strb r3, [r0, 0x5] + b _08077572 + .align 2, 0 +_0807753C: .4byte gUnknown_3005090 +_08077540: + ldrb r3, [r2, 0x6] + adds r0, r3, 0 + cmp r0, 0xFF + bne _08077558 + ldrb r0, [r2, 0x5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0xFF + strb r0, [r1, 0x6] + b _08077572 +_08077558: + ldrb r1, [r2, 0x5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + strb r3, [r0, 0x6] + ldrb r1, [r2, 0x6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldrb r1, [r2, 0x5] + strb r1, [r0, 0x5] +_08077572: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8077508 + + thumb_func_start sub_8077578 +sub_8077578: @ 8077578 + push {r4,r5,lr} + bl sub_80775A8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _0807759C + ldr r5, _080775A4 @ =gUnknown_3005090 +_08077588: + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r5 + ldr r1, [r4] + bl _call_via_r1 + ldrb r0, [r4, 0x6] + cmp r0, 0xFF + bne _08077588 +_0807759C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080775A4: .4byte gUnknown_3005090 + thumb_func_end sub_8077578 + + thumb_func_start sub_80775A8 +sub_80775A8: @ 80775A8 + push {lr} + movs r2, 0 + ldr r0, _080775E0 @ =gUnknown_3005090 + ldrb r1, [r0, 0x4] + adds r3, r0, 0 + cmp r1, 0x1 + bne _080775BC + ldrb r0, [r3, 0x5] + cmp r0, 0xFE + beq _080775DA +_080775BC: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bhi _080775DA + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r3 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + bne _080775BC + ldrb r0, [r1, 0x5] + cmp r0, 0xFE + bne _080775BC +_080775DA: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_080775E0: .4byte gUnknown_3005090 + thumb_func_end sub_80775A8 + + thumb_func_start nullsub_43 +nullsub_43: @ 80775E4 + bx lr + thumb_func_end nullsub_43 + + thumb_func_start sub_80775E8 +sub_80775E8: @ 80775E8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08077618 @ =gUnknown_3005090 + lsls r3, r0, 2 + adds r3, r0 + lsls r3, 3 + adds r0, r3, 0 + adds r0, 0x1C + adds r4, r5, 0 + adds r4, 0x8 + adds r0, r4 + strh r2, [r0] + adds r0, r3, 0 + adds r0, 0x1E + adds r0, r4 + lsrs r2, 16 + strh r2, [r0] + adds r3, r5 + str r1, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08077618: .4byte gUnknown_3005090 + thumb_func_end sub_80775E8 + + thumb_func_start sub_807761C +sub_807761C: @ 807761C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0807764C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r3 + adds r0, r1, 0 + adds r0, 0x1C + adds r3, 0x8 + adds r0, r3 + ldrh r2, [r0] + adds r1, 0x1E + adds r1, r3 + movs r3, 0 + ldrsh r0, [r1, r3] + lsls r0, 16 + orrs r2, r0 + str r2, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807764C: .4byte gUnknown_3005090 + thumb_func_end sub_807761C + + thumb_func_start sub_8077650 +sub_8077650: @ 8077650 + push {r4,lr} + adds r3, r0, 0 + movs r2, 0 + ldr r4, _08077670 @ =gUnknown_3005090 +_08077658: + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0, r4 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + bne _08077674 + ldr r0, [r1] + cmp r0, r3 + bne _08077674 + movs r0, 0x1 + b _08077680 + .align 2, 0 +_08077670: .4byte gUnknown_3005090 +_08077674: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _08077658 + movs r0, 0 +_08077680: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8077650 + + thumb_func_start sub_8077688 +sub_8077688: @ 8077688 + push {lr} + adds r3, r0, 0 + movs r2, 0 + ldr r1, _080776A4 @ =gUnknown_3005090 +_08077690: + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + bne _080776A8 + ldr r0, [r1] + cmp r0, r3 + bne _080776A8 + lsls r0, r2, 24 + lsrs r0, 24 + b _080776B2 + .align 2, 0 +_080776A4: .4byte gUnknown_3005090 +_080776A8: + adds r1, 0x28 + adds r2, 0x1 + cmp r2, 0xF + ble _08077690 + movs r0, 0xFF +_080776B2: + pop {r1} + bx r1 + thumb_func_end sub_8077688 + + thumb_func_start sub_80776B8 +sub_80776B8: @ 80776B8 + push {lr} + movs r2, 0 + movs r1, 0 + ldr r3, _080776E4 @ =gUnknown_3005090 +_080776C0: + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r3 + ldrb r0, [r0, 0x4] + cmp r0, 0x1 + bne _080776D4 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_080776D4: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _080776C0 + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_080776E4: .4byte gUnknown_3005090 + thumb_func_end sub_80776B8 + + thumb_func_start sub_80776E8 +sub_80776E8: @ 80776E8 + push {r4,r5,lr} + adds r5, r2, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + cmp r3, 0xE + bhi _08077716 + ldr r2, _0807771C @ =gUnknown_3005090 + lsls r0, r3, 1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r0, r1 + adds r2, 0x8 + adds r0, r2 + strh r5, [r0] + adds r0, r3, 0x1 + lsls r0, 1 + adds r0, r1 + adds r0, r2 + lsrs r1, r5, 16 + strh r1, [r0] +_08077716: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807771C: .4byte gUnknown_3005090 + thumb_func_end sub_80776E8 + + thumb_func_start sub_8077720 +sub_8077720: @ 8077720 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0xE + bls _08077732 + movs r0, 0 + b _08077754 +_08077732: + ldr r3, _0807775C @ =gUnknown_3005090 + lsls r0, r1, 1 + lsls r2, r4, 2 + adds r2, r4 + lsls r2, 3 + adds r0, r2 + adds r3, 0x8 + adds r0, r3 + ldrh r0, [r0] + adds r1, 0x1 + lsls r1, 1 + adds r1, r2 + adds r1, r3 + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r1, 16 + orrs r0, r1 +_08077754: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0807775C: .4byte gUnknown_3005090 + thumb_func_end sub_8077720 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s new file mode 100644 index 000000000..5d36bf6fa --- /dev/null +++ b/asm/teachy_tv.s @@ -0,0 +1,2912 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815AB94 +sub_815AB94: @ 815AB94 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80F67B8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_815AB94 + + thumb_func_start sub_815ABB0 +sub_815ABB0: @ 815ABB0 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_815ABB0 + + thumb_func_start sub_815ABC4 +sub_815ABC4: @ 815ABC4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + ldr r3, _0815ABF4 @ =gUnknown_203F444 + movs r4, 0 + strb r2, [r3, 0x4] + str r1, [r3] + cmp r2, 0 + bne _0815ABE0 + movs r0, 0 + strh r4, [r3, 0x6] + strh r4, [r3, 0x8] + strb r0, [r3, 0x5] +_0815ABE0: + cmp r2, 0x1 + bne _0815ABE6 + strb r4, [r3, 0x4] +_0815ABE6: + ldr r0, _0815ABF8 @ =sub_815AC2C + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815ABF4: .4byte gUnknown_203F444 +_0815ABF8: .4byte sub_815AC2C + thumb_func_end sub_815ABC4 + + thumb_func_start sub_815ABFC +sub_815ABFC: @ 815ABFC + push {lr} + ldr r1, _0815AC10 @ =gUnknown_203F444 + ldrb r0, [r1, 0x4] + cmp r0, 0x1 + bne _0815AC14 + ldr r1, [r1] + movs r0, 0x1 + bl sub_815ABC4 + b _0815AC1C + .align 2, 0 +_0815AC10: .4byte gUnknown_203F444 +_0815AC14: + ldr r1, [r1] + movs r0, 0x2 + bl sub_815ABC4 +_0815AC1C: + pop {r0} + bx r0 + thumb_func_end sub_815ABFC + + thumb_func_start sub_815AC20 +sub_815AC20: @ 815AC20 + ldr r1, _0815AC28 @ =gUnknown_203F444 + movs r0, 0x1 + strb r0, [r1, 0x4] + bx lr + .align 2, 0 +_0815AC28: .4byte gUnknown_203F444 + thumb_func_end sub_815AC20 + + thumb_func_start sub_815AC2C +sub_815AC2C: @ 815AC2C + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _0815AC44 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r6, r0, r1 + ldrb r5, [r6] + cmp r5, 0 + beq _0815AC48 + cmp r5, 0x1 + beq _0815AC9C + b _0815AD6E + .align 2, 0 +_0815AC44: .4byte gUnknown_30030F0 +_0815AC48: + ldr r4, _0815AC90 @ =gUnknown_203F450 + ldr r0, _0815AC94 @ =0x00004008 + bl sub_8002BB0 + str r0, [r4] + str r5, [r0] + ldr r1, _0815AC98 @ =0x00004006 + adds r0, r1 + strb r5, [r0] + ldr r0, [r4] + adds r1, 0x1 + adds r0, r1 + movs r1, 0xFF + strb r1, [r0] + bl sub_80BF768 + bl sub_80F6790 + bl sub_8087E64 + bl sub_80088F0 + bl sub_8070528 + bl sub_8006B10 + bl sub_80773BC + bl sub_815AD88 + bl sub_815AE38 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _0815AD6E + .align 2, 0 +_0815AC90: .4byte gUnknown_203F450 +_0815AC94: .4byte 0x00004008 +_0815AC98: .4byte 0x00004006 +_0815AC9C: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0815AD6E + bl sub_815AEB8 + bl sub_815AFEC + ldr r0, _0815ACE0 @ =gUnknown_203F444 + ldrb r0, [r0, 0x4] + cmp r0, 0x2 + bne _0815ACEC + ldr r0, _0815ACE4 @ =sub_815BA54 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_815B014 + ldr r2, _0815ACE8 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0xA] + adds r0, r5, 0 + bl sub_815B118 + b _0815AD26 + .align 2, 0 +_0815ACE0: .4byte gUnknown_203F444 +_0815ACE4: .4byte sub_815BA54 +_0815ACE8: .4byte gUnknown_3005090 +_0815ACEC: + ldr r0, _0815AD78 @ =sub_815B2C0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_815AEE8 + ldr r1, _0815AD7C @ =gUnknown_3005090 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x8] + bl sub_815B014 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + bl sub_815AF5C + movs r0, 0xAD + lsls r0, 1 + bl sub_8071A74 + bl sub_815B094 +_0815AD26: + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0x3 + bl sub_80F67A4 + movs r0, 0x9 + bl sub_812B1E0 + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _0815AD80 @ =sub_815ABB0 + bl sub_80006F4 + ldr r0, _0815AD84 @ =sub_815AB94 + bl sub_8000544 +_0815AD6E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815AD78: .4byte sub_815B2C0 +_0815AD7C: .4byte gUnknown_3005090 +_0815AD80: .4byte sub_815ABB0 +_0815AD84: .4byte sub_815AB94 + thumb_func_end sub_815AC2C + + thumb_func_start sub_815AD88 +sub_815AD88: @ 815AD88 + push {r4,lr} + bl sub_80BF7C8 + movs r0, 0 + bl sub_8001618 + ldr r1, _0815AE20 @ =gUnknown_84792E0 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r4, _0815AE24 @ =gUnknown_203F450 + ldr r1, [r4] + adds r1, 0x4 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _0815AE28 @ =0x00001004 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _0815AE2C @ =0x00002004 + adds r1, r0 + movs r0, 0x3 + bl sub_8001FA0 + movs r1, 0xC1 + lsls r1, 6 + movs r0, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x3 + movs r2, 0x2 + bl sub_8001B90 + movs r1, 0xA0 + lsls r1, 6 + movs r0, 0x3 + movs r2, 0x1 + bl sub_8001D08 + ldr r0, [r4] + ldr r1, _0815AE30 @ =0x00004004 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _0815AE34 @ =0x00004005 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815AE20: .4byte gUnknown_84792E0 +_0815AE24: .4byte gUnknown_203F450 +_0815AE28: .4byte 0x00001004 +_0815AE2C: .4byte 0x00002004 +_0815AE30: .4byte 0x00004004 +_0815AE34: .4byte 0x00004005 + thumb_func_end sub_815AD88 + + thumb_func_start sub_815AE38 +sub_815AE38: @ 815AE38 + push {r4,lr} + sub sp, 0x8 + movs r4, 0 + add r0, sp, 0x4 + strh r4, [r0] + bl sub_80F6808 + ldr r1, _0815AE98 @ =gUnknown_8E86240 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _0815AE9C @ =gUnknown_8E86BE8 + ldr r4, _0815AEA0 @ =gUnknown_203F450 + ldr r1, [r4] + adds r1, 0x4 + bl sub_800EBB4 + ldr r0, _0815AEA4 @ =gUnknown_8E86D6C + ldr r1, [r4] + ldr r2, _0815AEA8 @ =0x00003004 + adds r1, r2 + bl sub_800EBB4 + ldr r0, _0815AEAC @ =gUnknown_8E86F98 + movs r1, 0 + movs r2, 0x80 + bl sub_80703A8 + add r0, sp, 0x4 + movs r1, 0 + movs r2, 0x2 + bl sub_80703EC + ldr r0, _0815AEB0 @ =gUnknown_83A5348 + bl sub_8008928 + ldr r0, [r4] + ldr r1, _0815AEB4 @ =0x00002004 + adds r0, r1 + bl sub_815BD80 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815AE98: .4byte gUnknown_8E86240 +_0815AE9C: .4byte gUnknown_8E86BE8 +_0815AEA0: .4byte gUnknown_203F450 +_0815AEA4: .4byte gUnknown_8E86D6C +_0815AEA8: .4byte 0x00003004 +_0815AEAC: .4byte gUnknown_8E86F98 +_0815AEB0: .4byte gUnknown_83A5348 +_0815AEB4: .4byte 0x00002004 + thumb_func_end sub_815AE38 + + thumb_func_start sub_815AEB8 +sub_815AEB8: @ 815AEB8 + push {lr} + ldr r0, _0815AEE4 @ =gUnknown_84792F0 + bl sub_8003B24 + bl sub_8002C28 + movs r0, 0 + movs r1, 0xCC + bl sub_800445C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + pop {r0} + bx r0 + .align 2, 0 +_0815AEE4: .4byte gUnknown_84792F0 + thumb_func_end sub_815AEB8 + + thumb_func_start sub_815AEE8 +sub_815AEE8: @ 815AEE8 + push {r4,r5,lr} + ldr r4, _0815AF48 @ =gUnknown_3005E70 + adds r1, r4, 0 + ldr r0, _0815AF4C @ =gUnknown_8479368 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + movs r0, 0x1 + strb r0, [r4, 0x10] + ldr r0, _0815AF50 @ =sub_815AFD8 + str r0, [r4, 0x4] + movs r0, 0xB6 + lsls r0, 1 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + cmp r0, 0 + bne _0815AF30 + ldr r0, _0815AF54 @ =gUnknown_8479340 + str r0, [r4] + movs r0, 0x5 + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + ldrb r2, [r4, 0x14] + lsls r1, r2, 28 + lsrs r1, 28 + adds r1, 0x8 + movs r0, 0xF + ands r1, r0 + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x14] +_0815AF30: + ldr r0, _0815AF58 @ =gUnknown_203F444 + ldrh r1, [r0, 0x6] + ldrh r2, [r0, 0x8] + adds r0, r4, 0 + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0815AF48: .4byte gUnknown_3005E70 +_0815AF4C: .4byte gUnknown_8479368 +_0815AF50: .4byte sub_815AFD8 +_0815AF54: .4byte gUnknown_8479340 +_0815AF58: .4byte gUnknown_203F444 + thumb_func_end sub_815AEE8 + + thumb_func_start sub_815AF5C +sub_815AF5C: @ 815AF5C + push {lr} + movs r0, 0xB6 + lsls r0, 1 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + cmp r0, 0 + bne _0815AF84 + ldr r0, _0815AF7C @ =gUnknown_203F450 + ldr r0, [r0] + ldr r1, _0815AF80 @ =0x00004007 + adds r0, r1 + movs r1, 0xFF + strb r1, [r0] + b _0815AF96 + .align 2, 0 +_0815AF7C: .4byte gUnknown_203F450 +_0815AF80: .4byte 0x00004007 +_0815AF84: + ldr r0, _0815AF9C @ =gUnknown_8479380 + ldr r1, _0815AFA0 @ =gUnknown_203F44A + bl sub_8133A20 + ldr r1, _0815AFA4 @ =gUnknown_203F450 + ldr r1, [r1] + ldr r2, _0815AFA8 @ =0x00004007 + adds r1, r2 + strb r0, [r1] +_0815AF96: + pop {r0} + bx r0 + .align 2, 0 +_0815AF9C: .4byte gUnknown_8479380 +_0815AFA0: .4byte gUnknown_203F44A +_0815AFA4: .4byte gUnknown_203F450 +_0815AFA8: .4byte 0x00004007 + thumb_func_end sub_815AF5C + + thumb_func_start sub_815AFAC +sub_815AFAC: @ 815AFAC + push {r4,lr} + ldr r4, _0815AFD0 @ =gUnknown_203F450 + ldr r0, [r4] + ldr r2, _0815AFD4 @ =0x00004007 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0815AFCA + bl sub_8133C30 + ldr r0, [r4] + ldr r1, _0815AFD4 @ =0x00004007 + adds r0, r1 + movs r1, 0xFF + strb r1, [r0] +_0815AFCA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815AFD0: .4byte gUnknown_203F450 +_0815AFD4: .4byte 0x00004007 + thumb_func_end sub_815AFAC + + thumb_func_start sub_815AFD8 +sub_815AFD8: @ 815AFD8 + push {lr} + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x1 + beq _0815AFE8 + movs r0, 0x5 + bl sub_80722CC +_0815AFE8: + pop {r0} + bx r0 + thumb_func_end sub_815AFD8 + + thumb_func_start sub_815AFEC +sub_815AFEC: @ 815AFEC + push {lr} + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x1F + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xCC + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0x5 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_815AFEC + + thumb_func_start sub_815B014 +sub_815B014: @ 815B014 + push {lr} + sub sp, 0x4 + ldr r1, _0815B054 @ =nullsub_8 + movs r0, 0x8 + str r0, [sp] + movs r0, 0x5A + movs r2, 0 + movs r3, 0 + bl sub_805E978 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0815B058 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r3, [r2, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + movs r3, 0x8 + orrs r1, r3 + strb r1, [r2, 0x5] + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2] + add sp, 0x4 + pop {r1} + bx r1 + .align 2, 0 +_0815B054: .4byte nullsub_8 +_0815B058: .4byte gUnknown_202063C + thumb_func_end sub_815B014 + + thumb_func_start sub_815B05C +sub_815B05C: @ 815B05C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r5, _0815B090 @ =gUnknown_202063C + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + strh r1, [r0, 0x24] + strh r2, [r0, 0x26] + adds r4, r0, 0 + adds r4, 0x3E + ldrb r2, [r4] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r4] + adds r1, r3, 0 + bl sub_800838C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815B090: .4byte gUnknown_202063C + thumb_func_end sub_815B05C + + thumb_func_start sub_815B094 +sub_815B094: @ 815B094 + push {lr} + ldr r1, _0815B0AC @ =0x00000c64 + movs r0, 0x44 + bl sub_8000A38 + ldr r1, _0815B0B0 @ =0x00001cd4 + movs r0, 0x40 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0815B0AC: .4byte 0x00000c64 +_0815B0B0: .4byte 0x00001cd4 + thumb_func_end sub_815B094 + + thumb_func_start sub_815B0B4 +sub_815B0B4: @ 815B0B4 + push {lr} + movs r0, 0x44 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_815B0B4 + + thumb_func_start sub_815B0CC +sub_815B0CC: @ 815B0CC + push {r4-r7,lr} + movs r0, 0x2 + bl sub_8002008 + adds r7, r0, 0 + movs r0, 0x1 +_0815B0D8: + movs r4, 0x2 + lsls r5, r0, 5 + adds r6, r0, 0x1 +_0815B0DE: + bl sub_8044EC8 + adds r2, r5, r4 + lsls r2, 1 + adds r2, r7 + movs r1, 0x3 + ands r1, r0 + lsls r1, 10 + ldr r3, _0815B114 @ =0x0000301f + adds r0, r3, 0 + adds r1, r0 + strh r1, [r2] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1B + bls _0815B0DE + lsls r0, r6, 24 + lsrs r0, 24 + cmp r0, 0xC + bls _0815B0D8 + movs r0, 0x2 + bl sub_80F67A4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815B114: .4byte 0x0000301f + thumb_func_end sub_815B0CC + + thumb_func_start sub_815B118 +sub_815B118: @ 815B118 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0815B190 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815B194 @ =gUnknown_202063C + adds r7, r0, r1 + movs r0, 0x1 + bl sub_80040B8 + bl sub_815B0B4 + ldr r0, _0815B198 @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + cmp r0, 0 + blt _0815B1B8 + cmp r0, 0x3 + bgt _0815B1A8 + ldrb r0, [r5, 0x2] + movs r1, 0x78 + movs r2, 0x38 + movs r3, 0 + bl sub_815B05C + movs r4, 0xC0 + lsls r4, 6 + movs r0, 0x3 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_8001B90 + movs r0, 0x3 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_8001D08 + ldr r2, _0815B19C @ =gUnknown_203F450 + ldr r1, [r2] + ldr r0, _0815B1A0 @ =0x00004004 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x3 + strb r0, [r1] + ldr r1, [r2] + ldr r0, _0815B1A4 @ =0x00004005 + adds r1, r0 + ldrb r0, [r1] + subs r0, 0x3 + strb r0, [r1] + b _0815B1B8 + .align 2, 0 +_0815B190: .4byte gUnknown_3005098 +_0815B194: .4byte gUnknown_202063C +_0815B198: .4byte gUnknown_203F444 +_0815B19C: .4byte gUnknown_203F450 +_0815B1A0: .4byte 0x00004004 +_0815B1A4: .4byte 0x00004005 +_0815B1A8: + cmp r0, 0x5 + bgt _0815B1B8 + ldrb r0, [r5, 0x2] + movs r1, 0x78 + movs r2, 0x38 + movs r3, 0 + bl sub_815B05C +_0815B1B8: + movs r0, 0 + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] + movs r0, 0x24 + ldrsh r1, [r7, r0] + movs r0, 0x26 + ldrsh r2, [r7, r0] + movs r0, 0x1 + str r0, [sp] + adds r0, r6, 0 + movs r3, 0 + bl sub_815BAA0 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815B118 + + thumb_func_start sub_815B1DC +sub_815B1DC: @ 815B1DC + push {r4,lr} + sub sp, 0x10 + adds r4, r0, 0 + ldr r2, _0815B21C @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + bl sub_80F78A8 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0xC + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x4 + adds r2, r4, 0 + bl sub_80F6CD0 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B21C: .4byte gUnknown_3003E50 + thumb_func_end sub_815B1DC + + thumb_func_start sub_815B220 +sub_815B220: @ 815B220 + push {r4,lr} + ldr r4, _0815B238 @ =gUnknown_203F450 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + bl sub_8003ECC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B238: .4byte gUnknown_203F450 + thumb_func_end sub_815B220 + + thumb_func_start sub_815B23C +sub_815B23C: @ 815B23C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, _0815B26C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0815B270 @ =sub_815B274 + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B26C: .4byte gUnknown_3005090 +_0815B270: .4byte sub_815B274 + thumb_func_end sub_815B23C + + thumb_func_start sub_815B274 +sub_815B274: @ 815B274 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0815B298 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0815B2B6 + ldr r0, _0815B29C @ =gUnknown_203F450 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _0815B2A0 + bl sub_8000544 + b _0815B2AC + .align 2, 0 +_0815B298: .4byte gUnknown_2037AB8 +_0815B29C: .4byte gUnknown_203F450 +_0815B2A0: + bl sub_8055DC4 + ldr r0, _0815B2BC @ =gUnknown_203F444 + ldr r0, [r0] + bl sub_8000544 +_0815B2AC: + bl sub_815B220 + adds r0, r4, 0 + bl sub_8077508 +_0815B2B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B2BC: .4byte gUnknown_203F444 + thumb_func_end sub_815B274 + + thumb_func_start sub_815B2C0 +sub_815B2C0: @ 815B2C0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _0815B31C @ =gUnknown_3005098 + adds r6, r0, r1 + bl sub_815B0CC + ldr r0, _0815B320 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0815B37A + ldrb r0, [r6] + bl sub_8107078 + adds r5, r0, 0 + ldrb r0, [r6] + ldr r4, _0815B324 @ =gUnknown_203F44A + adds r2, r4, 0x2 + adds r1, r4, 0 + bl sub_81072D4 + ldr r0, _0815B328 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0815B30A + subs r0, r4, 0x6 + ldr r1, [r0] + ldr r0, _0815B32C @ =sub_8107EB8 + cmp r1, r0 + bne _0815B330 +_0815B30A: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _0815B330 + adds r0, 0x1 + cmp r5, r0 + bne _0815B33E + b _0815B37A + .align 2, 0 +_0815B31C: .4byte gUnknown_3005098 +_0815B320: .4byte gUnknown_2037AB8 +_0815B324: .4byte gUnknown_203F44A +_0815B328: .4byte gUnknown_30030F0 +_0815B32C: .4byte sub_8107EB8 +_0815B330: + movs r0, 0x5 + bl sub_80722CC + adds r0, r7, 0 + bl sub_815B23C + b _0815B37A +_0815B33E: + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0815B380 @ =gUnknown_203F444 + movs r4, 0 + strb r5, [r2, 0x5] + ldrb r0, [r6] + adds r1, r2, 0x6 + adds r2, 0x8 + bl sub_810713C + bl sub_815B0B4 + movs r0, 0x1 + bl sub_80040B8 + movs r0, 0 + bl sub_80F67A4 + bl sub_815AFAC + strh r4, [r6, 0x6] + strh r4, [r6, 0x4] + ldr r1, _0815B384 @ =gUnknown_3005090 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldr r1, _0815B388 @ =sub_815B4EC + str r1, [r0] +_0815B37A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815B380: .4byte gUnknown_203F444 +_0815B384: .4byte gUnknown_3005090 +_0815B388: .4byte sub_815B4EC + thumb_func_end sub_815B2C0 + + thumb_func_start sub_815B38C +sub_815B38C: @ 815B38C + push {r4,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B3F8 @ =gUnknown_3005098 + adds r4, r1, r0 + bl sub_815B0CC + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _0815B3F0 + ldr r0, _0815B3FC @ =gUnknown_203F450 + ldr r1, [r0] + ldr r0, _0815B400 @ =0x00003004 + adds r1, r0 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002228 + ldrb r0, [r4, 0x2] + movs r1, 0x8 + movs r2, 0x38 + movs r3, 0x7 + bl sub_815B05C + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0 + strh r0, [r4, 0x4] + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + movs r0, 0x88 + lsls r0, 1 + bl sub_8071A74 +_0815B3F0: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B3F8: .4byte gUnknown_3005098 +_0815B3FC: .4byte gUnknown_203F450 +_0815B400: .4byte 0x00003004 + thumb_func_end sub_815B38C + + thumb_func_start sub_815B404 +sub_815B404: @ 815B404 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B450 @ =gUnknown_3005098 + adds r4, r1, r0 + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x86 + bne _0815B448 + movs r0, 0x1A + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8002454 + movs r0, 0x2 + bl sub_80F67A4 + movs r0, 0 + strh r0, [r4, 0x4] + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B448: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B450: .4byte gUnknown_3005098 + thumb_func_end sub_815B404 + + thumb_func_start sub_815B454 +sub_815B454: @ 815B454 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B484 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815B488 @ =gUnknown_202063C + adds r1, r0, r1 + ldrh r2, [r4, 0x4] + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0x23 + beq _0815B48C + adds r0, r2, 0x1 + strh r0, [r4, 0x4] + b _0815B4B8 + .align 2, 0 +_0815B484: .4byte gUnknown_3005098 +_0815B488: .4byte gUnknown_202063C +_0815B48C: + ldrh r2, [r1, 0x24] + movs r3, 0x24 + ldrsh r0, [r1, r3] + cmp r0, 0x78 + bne _0815B4B4 + adds r0, r1, 0 + movs r1, 0 + bl sub_800838C + ldr r0, _0815B4B0 @ =gUnknown_841B83D + bl sub_815B1DC + movs r0, 0 + strh r0, [r4, 0x4] + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + b _0815B4B8 + .align 2, 0 +_0815B4B0: .4byte gUnknown_841B83D +_0815B4B4: + adds r0, r2, 0x1 + strh r0, [r1, 0x24] +_0815B4B8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_815B454 + + thumb_func_start sub_815B4C0 +sub_815B4C0: @ 815B4C0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B4E8 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r0, 0 + bl sub_80BF518 + lsls r0, 16 + cmp r0, 0 + bne _0815B4E2 + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B4E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B4E8: .4byte gUnknown_3005098 + thumb_func_end sub_815B4C0 + + thumb_func_start sub_815B4EC +sub_815B4EC: @ 815B4EC + push {r4-r7,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r6, r0, 3 + ldr r7, _0815B548 @ =gUnknown_3005098 + adds r5, r6, r7 + ldr r0, _0815B54C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0815B55C + ldr r0, _0815B550 @ =gUnknown_203F450 + ldr r0, [r0] + ldr r1, _0815B554 @ =0x00004006 + adds r0, r1 + movs r4, 0 + movs r1, 0x1 + strb r1, [r0] + ldrb r0, [r5, 0x2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_815B05C + movs r0, 0 + movs r1, 0xCC + bl sub_800445C + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + bl sub_815B908 + strh r4, [r5, 0x4] + strh r4, [r5, 0x6] + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0815B558 @ =sub_815B92C + str r1, [r0] + b _0815B578 + .align 2, 0 +_0815B548: .4byte gUnknown_3005098 +_0815B54C: .4byte gUnknown_30030F0 +_0815B550: .4byte gUnknown_203F450 +_0815B554: .4byte 0x00004006 +_0815B558: .4byte sub_815B92C +_0815B55C: + ldr r1, _0815B580 @ =gUnknown_8479548 + ldr r0, _0815B584 @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 +_0815B578: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815B580: .4byte gUnknown_8479548 +_0815B584: .4byte gUnknown_203F444 + thumb_func_end sub_815B4EC + + thumb_func_start sub_815B588 +sub_815B588: @ 815B588 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0815B5B4 @ =gUnknown_3005098 + adds r4, r0 + ldr r1, _0815B5B8 @ =gUnknown_8479560 + ldr r0, _0815B5BC @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_815B1DC + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B5B4: .4byte gUnknown_3005098 +_0815B5B8: .4byte gUnknown_8479560 +_0815B5BC: .4byte gUnknown_203F444 + thumb_func_end sub_815B588 + + thumb_func_start sub_815B5C0 +sub_815B5C0: @ 815B5C0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0815B5EC @ =gUnknown_3005098 + adds r4, r0 + ldr r1, _0815B5F0 @ =gUnknown_8479578 + ldr r0, _0815B5F4 @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_815B1DC + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B5EC: .4byte gUnknown_3005098 +_0815B5F0: .4byte gUnknown_8479578 +_0815B5F4: .4byte gUnknown_203F444 + thumb_func_end sub_815B5C0 + + thumb_func_start sub_815B5F8 +sub_815B5F8: @ 815B5F8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B620 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r0, 0 + bl sub_80BF518 + lsls r0, 16 + cmp r0, 0 + bne _0815B61A + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B61A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B620: .4byte gUnknown_3005098 + thumb_func_end sub_815B5F8 + + thumb_func_start sub_815B624 +sub_815B624: @ 815B624 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B65C @ =gUnknown_3005098 + adds r4, r1, r0 + ldr r0, _0815B660 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0815B656 + movs r0, 0 + movs r1, 0xCC + bl sub_800445C + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B656: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B65C: .4byte gUnknown_3005098 +_0815B660: .4byte gUnknown_30030F0 + thumb_func_end sub_815B624 + + thumb_func_start sub_815B664 +sub_815B664: @ 815B664 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _0815B6A0 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815B6A4 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x5 + bl sub_800838C + movs r0, 0 + strh r0, [r4, 0x4] + strh r0, [r4, 0x8] + movs r0, 0x1 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B6A0: .4byte gUnknown_3005098 +_0815B6A4: .4byte gUnknown_202063C + thumb_func_end sub_815B664 + + thumb_func_start sub_815B6A8 +sub_815B6A8: @ 815B6A8 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0815B730 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815B734 @ =gUnknown_202063C + adds r6, r0, r1 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0x3 + movs r2, 0x2 + bl sub_8001D08 + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + movs r3, 0xF + ands r3, r0 + cmp r3, 0 + bne _0815B702 + ldr r0, _0815B738 @ =gUnknown_203F450 + ldr r1, [r0] + ldr r2, _0815B73C @ =0x00004005 + adds r1, r2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + movs r0, 0x24 + ldrsh r1, [r6, r0] + movs r0, 0x26 + ldrsh r2, [r6, r0] + str r3, [sp] + adds r0, r5, 0 + movs r3, 0 + bl sub_815BAA0 +_0815B702: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x30 + bne _0815B726 + movs r1, 0 + strh r1, [r4, 0x4] + movs r2, 0x1 + negs r2, r2 + adds r0, r2, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + adds r0, r6, 0 + movs r1, 0x7 + bl sub_800838C + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B726: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815B730: .4byte gUnknown_3005098 +_0815B734: .4byte gUnknown_202063C +_0815B738: .4byte gUnknown_203F450 +_0815B73C: .4byte 0x00004005 + thumb_func_end sub_815B6A8 + + thumb_func_start sub_815B740 +sub_815B740: @ 815B740 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0815B7D4 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r0, 0x2 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815B7D8 @ =gUnknown_202063C + adds r6, r0, r1 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0x3 + movs r2, 0x1 + bl sub_8001B90 + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + movs r2, 0xF + ands r0, r2 + cmp r0, 0 + bne _0815B78A + ldr r0, _0815B7DC @ =gUnknown_203F450 + ldr r1, [r0] + ldr r3, _0815B7E0 @ =0x00004004 + adds r1, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0815B78A: + movs r1, 0x4 + ldrsh r0, [r4, r1] + adds r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _0815B7AC + ldrh r1, [r6, 0x24] + adds r1, 0x8 + lsls r1, 16 + asrs r1, 16 + movs r3, 0x26 + ldrsh r2, [r6, r3] + str r0, [sp] + adds r0, r5, 0 + movs r3, 0 + bl sub_815BAA0 +_0815B7AC: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x30 + bne _0815B7CA + movs r0, 0 + strh r0, [r4, 0x4] + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_800838C + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B7CA: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815B7D4: .4byte gUnknown_3005098 +_0815B7D8: .4byte gUnknown_202063C +_0815B7DC: .4byte gUnknown_203F450 +_0815B7E0: .4byte 0x00004004 + thumb_func_end sub_815B740 + + thumb_func_start sub_815B7E4 +sub_815B7E4: @ 815B7E4 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r5, r6, 2 + adds r5, r6 + lsls r5, 3 + ldr r0, _0815B838 @ =gUnknown_3005098 + adds r5, r0 + movs r1, 0x2 + ldrsh r0, [r5, r1] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0815B83C @ =gUnknown_202063C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_800838C + ldrh r0, [r5, 0x6] + adds r0, 0x1 + strh r0, [r5, 0x6] + movs r0, 0 + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] + movs r0, 0x24 + ldrsh r1, [r4, r0] + movs r0, 0x26 + ldrsh r2, [r4, r0] + movs r0, 0 + str r0, [sp] + adds r0, r6, 0 + movs r3, 0 + bl sub_815BAA0 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815B838: .4byte gUnknown_3005098 +_0815B83C: .4byte gUnknown_202063C + thumb_func_end sub_815B7E4 + + thumb_func_start sub_815B840 +sub_815B840: @ 815B840 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _0815B890 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815B894 @ =gUnknown_202063C + adds r4, r0, r1 + ldrh r1, [r4, 0x24] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0815B87E + subs r1, 0x8 + lsls r1, 16 + asrs r1, 16 + movs r6, 0x26 + ldrsh r2, [r4, r6] + str r0, [sp] + adds r0, r3, 0 + movs r3, 0 + bl sub_815BAA0 +_0815B87E: + ldrh r1, [r4, 0x24] + movs r2, 0x24 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + bne _0815B898 + ldrh r0, [r5, 0x6] + adds r0, 0x1 + strh r0, [r5, 0x6] + b _0815B89C + .align 2, 0 +_0815B890: .4byte gUnknown_3005098 +_0815B894: .4byte gUnknown_202063C +_0815B898: + subs r0, r1, 0x1 + strh r0, [r4, 0x24] +_0815B89C: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815B840 + + thumb_func_start sub_815B8A4 +sub_815B8A4: @ 815B8A4 + push {r4,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0815B900 @ =gUnknown_3005098 + adds r4, r1, r0 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0815B8DC + ldr r1, _0815B904 @ =gUnknown_8479590 + movs r0, 0x8 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x14 + movs r3, 0xA + bl sub_8002228 + movs r0, 0x1 + bl sub_80F67A4 +_0815B8DC: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7E + ble _0815B8F8 + bl sub_815B908 + movs r0, 0 + strh r0, [r4, 0x4] + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] +_0815B8F8: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B900: .4byte gUnknown_3005098 +_0815B904: .4byte gUnknown_8479590 + thumb_func_end sub_815B8A4 + + thumb_func_start sub_815B908 +sub_815B908: @ 815B908 + push {lr} + sub sp, 0x8 + movs r0, 0x8 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x14 + movs r3, 0xA + bl sub_8002454 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_815B908 + + thumb_func_start sub_815B92C +sub_815B92C: @ 815B92C + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r6, r1, 3 + ldr r7, _0815B9DC @ =gUnknown_3005098 + adds r5, r6, r7 + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0815B94C + movs r0, 0xAD + lsls r0, 1 + bl sub_8071A74 +_0815B94C: + bl sub_815B0CC + ldrh r0, [r5, 0x4] + adds r0, 0x1 + strh r0, [r5, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3F + ble _0815B9D4 + movs r4, 0 + strh r4, [r5, 0x4] + strh r4, [r5, 0x6] + bl sub_815AEE8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + adds r0, r7, 0 + subs r0, 0x8 + adds r0, r6, r0 + ldr r1, _0815B9E0 @ =sub_815B2C0 + str r1, [r0] + movs r0, 0 + bl sub_8003FA0 + bl sub_815AF5C + bl sub_815B094 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x3 + movs r2, 0x2 + bl sub_8001B90 + movs r1, 0xA0 + lsls r1, 6 + movs r0, 0x3 + movs r2, 0x1 + bl sub_8001D08 + ldr r2, _0815B9E4 @ =gUnknown_203F450 + ldr r0, [r2] + ldr r1, _0815B9E8 @ =0x00004004 + adds r0, r1 + strb r4, [r0] + ldr r0, [r2] + adds r1, 0x1 + adds r0, r1 + movs r1, 0x3 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _0815B9EC @ =0x00004006 + adds r0, r1 + strb r4, [r0] +_0815B9D4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815B9DC: .4byte gUnknown_3005098 +_0815B9E0: .4byte sub_815B2C0 +_0815B9E4: .4byte gUnknown_203F450 +_0815B9E8: .4byte 0x00004004 +_0815B9EC: .4byte 0x00004006 + thumb_func_end sub_815B92C + + thumb_func_start sub_815B9F0 +sub_815B9F0: @ 815B9F0 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + ldr r0, _0815BA0C @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + cmp r0, 0 + blt _0815BA22 + cmp r0, 0x3 + bgt _0815BA10 + adds r0, r1, 0 + bl sub_815BC90 + b _0815BA22 + .align 2, 0 +_0815BA0C: .4byte gUnknown_203F444 +_0815BA10: + cmp r0, 0x5 + bgt _0815BA22 + ldr r0, _0815BA28 @ =gUnknown_203F450 + ldr r1, [r0] + ldr r0, _0815BA2C @ =sub_815BA30 + str r0, [r1] + adds r0, r2, 0 + bl sub_815B23C +_0815BA22: + pop {r0} + bx r0 + .align 2, 0 +_0815BA28: .4byte gUnknown_203F450 +_0815BA2C: .4byte sub_815BA30 + thumb_func_end sub_815B9F0 + + thumb_func_start sub_815BA30 +sub_815BA30: @ 815BA30 + push {lr} + ldr r0, _0815BA44 @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + cmp r0, 0x4 + bne _0815BA48 + movs r0, 0xA + bl sub_810B108 + b _0815BA4E + .align 2, 0 +_0815BA44: .4byte gUnknown_203F444 +_0815BA48: + movs r0, 0x9 + bl sub_810B108 +_0815BA4E: + pop {r0} + bx r0 + thumb_func_end sub_815BA30 + + thumb_func_start sub_815BA54 +sub_815BA54: @ 815BA54 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r2, r1, 3 + ldr r4, _0815BA8C @ =gUnknown_3005098 + adds r3, r2, r4 + ldr r0, _0815BA90 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0815BA86 + ldr r1, _0815BA94 @ =gUnknown_8479390 + ldr r0, _0815BA98 @ =gUnknown_203F444 + ldrb r0, [r0, 0x5] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r3, 0x6] + adds r0, r4, 0 + subs r0, 0x8 + adds r0, r2, r0 + ldr r1, _0815BA9C @ =sub_815B4EC + str r1, [r0] +_0815BA86: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815BA8C: .4byte gUnknown_3005098 +_0815BA90: .4byte gUnknown_2037AB8 +_0815BA94: .4byte gUnknown_8479390 +_0815BA98: .4byte gUnknown_203F444 +_0815BA9C: .4byte sub_815B4EC + thumb_func_end sub_815BA54 + + thumb_func_start sub_815BAA0 +sub_815BAA0: @ 815BAA0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, [sp, 0x1C] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r1, r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + ldr r0, _0815BB34 @ =gUnknown_203F450 + ldr r0, [r0] + ldr r2, _0815BB38 @ =0x00004006 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0815BB5C + lsls r0, r6, 16 + ldr r2, _0815BB3C @ =0xfff00000 + adds r0, r2 + asrs r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + adds r1, r5, 0 + bl sub_815BC40 + lsls r0, 24 + cmp r0, 0 + beq _0815BB5C + ldr r0, _0815BB40 @ =gUnknown_83A0010 + ldr r0, [r0, 0x10] + movs r1, 0 + movs r2, 0 + adds r3, r7, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0815BB44 @ =gUnknown_202063C + adds r4, r1, r0 + strh r6, [r4, 0x24] + adds r0, r5, 0 + adds r0, 0x8 + strh r0, [r4, 0x26] + ldr r0, _0815BB48 @ =sub_815BB6C + str r0, [r4, 0x1C] + mov r0, r9 + strh r0, [r4, 0x2E] + mov r2, r8 + cmp r2, 0x1 + bne _0815BB4C + adds r0, r4, 0 + movs r1, 0x4 + bl sub_80083C0 + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x8 + orrs r1, r0 + strb r1, [r4, 0x5] + b _0815BB5C + .align 2, 0 +_0815BB34: .4byte gUnknown_203F450 +_0815BB38: .4byte 0x00004006 +_0815BB3C: .4byte 0xfff00000 +_0815BB40: .4byte gUnknown_83A0010 +_0815BB44: .4byte gUnknown_202063C +_0815BB48: .4byte sub_815BB6C +_0815BB4C: + ldr r1, _0815BB68 @ =gUnknown_84795B8 + adds r0, r4, 0 + bl sub_8008A58 + adds r1, r4, 0 + adds r1, 0x42 + movs r0, 0x40 + strb r0, [r1] +_0815BB5C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815BB68: .4byte gUnknown_84795B8 + thumb_func_end sub_815BAA0 + + thumb_func_start sub_815BB6C +sub_815BB6C: @ 815BB6C + push {r4,r5,lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0815BBA4 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815BBA8 @ =gUnknown_202063C + adds r5, r0, r1 + ldr r0, _0815BBAC @ =gUnknown_203F450 + ldr r0, [r0] + ldr r1, _0815BBB0 @ =0x00004006 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0815BBB4 + adds r0, r3, 0 + bl sub_8007280 + b _0815BC3A + .align 2, 0 +_0815BBA4: .4byte gUnknown_3005098 +_0815BBA8: .4byte gUnknown_202063C +_0815BBAC: .4byte gUnknown_203F450 +_0815BBB0: .4byte 0x00004006 +_0815BBB4: + adds r0, r3, 0 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0 + bne _0815BBD2 + adds r2, r3, 0 + adds r2, 0x42 + ldrb r0, [r2] + movs r1, 0x40 + negs r1, r1 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strb r1, [r2] + b _0815BBE0 +_0815BBD2: + adds r2, r3, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x40 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_0815BBE0: + ldrh r0, [r4, 0x8] + ldrh r2, [r3, 0x24] + adds r0, r2 + strh r0, [r3, 0x24] + ldrh r0, [r4, 0xA] + ldrh r1, [r3, 0x26] + adds r0, r1 + strh r0, [r3, 0x26] + adds r0, r3, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0815BC3A + adds r1, r3, 0 + adds r1, 0x43 + movs r0, 0 + strb r0, [r1] + ldrh r1, [r3, 0x24] + ldrh r0, [r5, 0x24] + subs r1, r0 + ldrh r0, [r3, 0x26] + ldrh r2, [r5, 0x26] + subs r0, r2 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + movs r2, 0xF0 + lsls r2, 12 + adds r1, r2 + lsrs r1, 16 + cmp r1, 0x1E + bhi _0815BC34 + lsls r0, 16 + asrs r1, r0, 16 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + ble _0815BC34 + cmp r1, 0x17 + ble _0815BC3A +_0815BC34: + adds r0, r3, 0 + bl sub_8007280 +_0815BC3A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_815BB6C + + thumb_func_start sub_815BC40 +sub_815BC40: @ 815BC40 + push {r4,r5,lr} + lsls r1, 16 + lsrs r1, 16 + lsls r4, r0, 16 + cmp r4, 0 + blt _0815BC52 + lsls r1, 16 + cmp r1, 0 + bge _0815BC56 +_0815BC52: + movs r0, 0 + b _0815BC78 +_0815BC56: + ldr r3, _0815BC80 @ =gUnknown_84795C8 + ldr r0, _0815BC84 @ =gUnknown_203F450 + ldr r2, [r0] + ldr r5, _0815BC88 @ =0x00004005 + adds r0, r2, r5 + asrs r1, 20 + ldrb r0, [r0] + adds r1, r0 + lsls r1, 4 + ldr r0, _0815BC8C @ =0x00004004 + adds r2, r0 + asrs r0, r4, 20 + ldrb r2, [r2] + adds r0, r2 + adds r1, r0 + adds r1, r3 + ldrb r0, [r1] +_0815BC78: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0815BC80: .4byte gUnknown_84795C8 +_0815BC84: .4byte gUnknown_203F450 +_0815BC88: .4byte 0x00004005 +_0815BC8C: .4byte 0x00004004 + thumb_func_end sub_815BC40 + + thumb_func_start sub_815BC90 +sub_815BC90: @ 815BC90 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0815BCCC @ =gUnknown_3005098 + adds r5, r0, r1 + bl sub_815B220 + ldr r1, _0815BCD0 @ =gUnknown_20370C0 + ldr r4, _0815BCD4 @ =gUnknown_203F444 + ldrb r0, [r4, 0x5] + strh r0, [r1] + ldr r1, _0815BCD8 @ =gUnknown_30030F0 + ldr r0, _0815BCDC @ =sub_815BD58 + str r0, [r1, 0x8] + bl sub_804C1F0 + bl sub_8159F40 + movs r0, 0 + bl sub_8044090 + ldrb r0, [r4, 0x5] + cmp r0, 0 + bne _0815BCE0 + movs r0, 0x9 + b _0815BCE2 + .align 2, 0 +_0815BCCC: .4byte gUnknown_3005098 +_0815BCD0: .4byte gUnknown_20370C0 +_0815BCD4: .4byte gUnknown_203F444 +_0815BCD8: .4byte gUnknown_30030F0 +_0815BCDC: .4byte sub_815BD58 +_0815BCE0: + movs r0, 0x8 +_0815BCE2: + strh r0, [r5, 0xC] + movs r0, 0 + strh r0, [r5, 0xE] + ldr r1, _0815BCFC @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _0815BD00 @ =sub_815BD04 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815BCFC: .4byte gUnknown_3005090 +_0815BD00: .4byte sub_815BD04 + thumb_func_end sub_815BC90 + + thumb_func_start sub_815BD04 +sub_815BD04: @ 815BD04 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0815BD24 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0815BD28 + cmp r0, 0x1 + beq _0815BD36 + b _0815BD4C + .align 2, 0 +_0815BD24: .4byte gUnknown_3005098 +_0815BD28: + ldrb r0, [r4, 0xC] + bl sub_80D08B8 + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + b _0815BD4C +_0815BD36: + bl sub_80D08F8 + lsls r0, 24 + cmp r0, 0 + beq _0815BD4C + ldr r0, _0815BD54 @ =sub_800FD9C + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_0815BD4C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815BD54: .4byte sub_800FD9C + thumb_func_end sub_815BD04 + + thumb_func_start sub_815BD58 +sub_815BD58: @ 815BD58 + push {lr} + bl sub_804C230 + ldr r0, _0815BD6C @ =gUnknown_2023E8A + ldrb r0, [r0] + cmp r0, 0x3 + bne _0815BD70 + bl sub_815AC20 + b _0815BD78 + .align 2, 0 +_0815BD6C: .4byte gUnknown_2023E8A +_0815BD70: + movs r0, 0x88 + lsls r0, 1 + bl sub_8071A74 +_0815BD78: + bl sub_815ABFC + pop {r0} + bx r0 + thumb_func_end sub_815BD58 + + thumb_func_start sub_815BD80 +sub_815BD80: @ 815BD80 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x10] + ldr r1, _0815BE1C @ =gUnknown_82E55CC + mov r8, r1 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002BB0 + adds r6, r0, 0 + movs r0, 0x80 + lsls r0, 8 + bl sub_8002BB0 + str r0, [sp, 0x8] + movs r0, 0x10 + bl sub_8002B9C + str r0, [sp, 0xC] + movs r1, 0xFF + movs r2, 0x10 + bl memset + mov r2, r8 + ldr r0, [r2, 0x10] + movs r2, 0xA0 + lsls r2, 2 + ldr r1, [sp, 0x8] + bl sub_815BF48 + mov r3, r8 + ldr r0, [r3, 0x14] + ldr r2, [sp, 0x8] + movs r3, 0xA0 + lsls r3, 7 + adds r1, r2, r3 + movs r2, 0xC0 + lsls r2, 1 + bl sub_815BF48 + movs r4, 0 +_0815BDDE: + movs r2, 0 + adds r0, r4, 0x6 + str r0, [sp, 0x18] + lsls r1, r4, 4 + mov r10, r1 + lsls r3, r4, 6 + mov r9, r3 + adds r4, 0x1 + str r4, [sp, 0x14] +_0815BDF0: + mov r1, r8 + ldr r0, [r1] + ldr r3, [sp, 0x18] + muls r0, r3 + ldr r1, [r1, 0xC] + adds r0, r2, r0 + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0, 0x10] + ldr r3, _0815BE20 @ =0x000003ff + adds r0, r3, 0 + adds r4, r0, 0 + ands r4, r1 + movs r3, 0 + mov r0, r10 + adds r1, r0, r2 + lsls r5, r2, 1 + adds r7, r2, 0x1 + cmp r3, r1 + bge _0815BE3C + ldrh r0, [r6] + b _0815BE34 + .align 2, 0 +_0815BE1C: .4byte gUnknown_82E55CC +_0815BE20: .4byte 0x000003ff +_0815BE24: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r1 + bge _0815BE3C + lsls r0, r3, 1 + adds r0, r6 + ldrh r0, [r0] +_0815BE34: + cmp r0, 0 + beq _0815BE46 + cmp r0, r4 + bne _0815BE24 +_0815BE3C: + lsls r0, r3, 1 + adds r0, r6 + ldrh r0, [r0] + cmp r0, 0 + bne _0815BE56 +_0815BE46: + lsls r0, r3, 1 + adds r0, r6 + strh r4, [r0] + ldr r0, [sp, 0x10] + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x10] +_0815BE56: + mov r2, r9 + adds r1, r2, r5 + lsls r1, 1 + ldr r0, [sp, 0x4] + adds r1, r0, r1 + str r3, [sp] + mov r0, r8 + ldr r2, [sp, 0xC] + adds r3, r4, 0 + bl sub_815BF70 + lsls r0, r7, 16 + lsrs r2, r0, 16 + cmp r2, 0xF + bls _0815BDF0 + ldr r1, [sp, 0x14] + lsls r0, r1, 16 + lsrs r4, r0, 16 + cmp r4, 0x8 + bls _0815BDDE + ldr r2, [sp, 0x10] + lsls r0, r2, 7 + bl sub_8002B9C + adds r7, r0, 0 + movs r0, 0x80 + bl sub_8002B9C + adds r5, r0, 0 + movs r4, 0 + ldr r3, [sp, 0x10] + lsls r3, 23 + mov r9, r3 + ldr r0, [sp, 0x10] + cmp r4, r0 + bcs _0815BF00 + ldr r1, _0815BECC @ =0x0000027f + mov r10, r1 +_0815BEA2: + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x80 + bl memset + lsls r0, r4, 1 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, r10 + bhi _0815BED0 + mov r2, r8 + ldr r0, [r2, 0x10] + ldrh r1, [r1] + lsls r1, 4 + ldr r0, [r0, 0xC] + adds r0, r1 + adds r1, r5, 0 + ldr r2, [sp, 0x8] + bl sub_815BFF0 + b _0815BEE8 + .align 2, 0 +_0815BECC: .4byte 0x0000027f +_0815BED0: + mov r3, r8 + ldr r0, [r3, 0x14] + ldrh r1, [r1] + ldr r2, _0815BF44 @ =0xfffffd80 + adds r1, r2 + lsls r1, 4 + ldr r0, [r0, 0xC] + adds r0, r1 + adds r1, r5, 0 + ldr r2, [sp, 0x8] + bl sub_815BFF0 +_0815BEE8: + lsls r1, r4, 7 + adds r1, r7, r1 + adds r0, r5, 0 + movs r2, 0x20 + bl CpuFastSet + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r3, [sp, 0x10] + cmp r4, r3 + bcc _0815BEA2 +_0815BF00: + mov r0, r9 + lsrs r2, r0, 16 + movs r0, 0x3 + adds r1, r7, 0 + movs r3, 0 + bl sub_80017D0 + mov r0, r8 + ldr r1, [sp, 0xC] + bl sub_815C230 + adds r0, r5, 0 + bl sub_8002BC4 + adds r0, r7, 0 + bl sub_8002BC4 + ldr r0, [sp, 0xC] + bl sub_8002BC4 + ldr r0, [sp, 0x8] + bl sub_8002BC4 + adds r0, r6, 0 + bl sub_8002BC4 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815BF44: .4byte 0xfffffd80 + thumb_func_end sub_815BD80 + + thumb_func_start sub_815BF48 +sub_815BF48: @ 815BF48 + push {lr} + adds r3, r0, 0 + lsls r2, 16 + lsrs r2, 16 + cmp r3, 0 + beq _0815BF6A + ldrb r0, [r3] + cmp r0, 0 + bne _0815BF64 + ldr r0, [r3, 0x4] + lsls r2, 3 + bl CpuFastSet + b _0815BF6A +_0815BF64: + ldr r0, [r3, 0x4] + bl sub_800EBB4 +_0815BF6A: + pop {r0} + bx r0 + thumb_func_end sub_815BF48 + + thumb_func_start sub_815BF70 +sub_815BF70: @ 815BF70 + push {r4-r7,lr} + adds r5, r0, 0 + adds r7, r1, 0 + adds r6, r2, 0 + ldr r0, [sp, 0x14] + lsls r3, 16 + lsrs r1, r3, 16 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _0815BF8C @ =0x0000027f + cmp r1, r0 + bhi _0815BF90 + ldr r0, [r5, 0x10] + b _0815BF96 + .align 2, 0 +_0815BF8C: .4byte 0x0000027f +_0815BF90: + ldr r0, [r5, 0x14] + ldr r2, _0815BFEC @ =0xfffffd80 + adds r1, r2 +_0815BF96: + lsls r1, 4 + ldr r0, [r0, 0xC] + adds r5, r0, r1 + ldrh r1, [r5] + adds r0, r6, 0 + bl sub_815C1F0 + lsls r0, 12 + lsls r4, 2 + adds r0, r4 + strh r0, [r7] + ldrh r1, [r5, 0x2] + adds r0, r6, 0 + bl sub_815C1F0 + lsls r0, 12 + adds r0, r4 + adds r0, 0x1 + strh r0, [r7, 0x2] + ldrh r1, [r5, 0x4] + adds r0, r6, 0 + bl sub_815C1F0 + adds r1, r7, 0 + adds r1, 0x40 + lsls r0, 12 + adds r0, r4 + adds r0, 0x2 + strh r0, [r1] + ldrh r1, [r5, 0x6] + adds r0, r6, 0 + bl sub_815C1F0 + adds r1, r7, 0 + adds r1, 0x42 + lsls r0, 12 + adds r0, r4 + adds r0, 0x3 + strh r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815BFEC: .4byte 0xfffffd80 + thumb_func_end sub_815BF70 + + thumb_func_start sub_815BFF0 +sub_815BFF0: @ 815BFF0 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + mov r8, r0 + mov r9, r1 + adds r5, r2, 0 + ldrh r2, [r0] + ldr r4, _0815C0D0 @ =0x000003ff + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + movs r6, 0x3 + ands r2, r6 + mov r0, r9 + bl sub_815C0D4 + mov r0, r8 + ldrh r2, [r0, 0x8] + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + ands r2, r6 + mov r0, r9 + bl sub_815C0D4 + movs r0, 0x20 + add r0, r9 + mov r10, r0 + mov r0, r8 + ldrh r2, [r0, 0x2] + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + ands r2, r6 + mov r0, r10 + bl sub_815C0D4 + mov r0, r8 + ldrh r2, [r0, 0xA] + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + ands r2, r6 + mov r0, r10 + bl sub_815C0D4 + movs r0, 0x40 + add r0, r9 + mov r10, r0 + mov r0, r8 + ldrh r2, [r0, 0x4] + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + ands r2, r6 + mov r0, r10 + bl sub_815C0D4 + mov r0, r8 + ldrh r2, [r0, 0xC] + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + ands r2, r6 + mov r0, r10 + bl sub_815C0D4 + movs r0, 0x60 + add r9, r0 + mov r0, r8 + ldrh r2, [r0, 0x6] + adds r1, r4, 0 + ands r1, r2 + lsls r1, 5 + adds r1, r5, r1 + lsrs r2, 10 + ands r2, r6 + mov r0, r9 + bl sub_815C0D4 + mov r0, r8 + ldrh r2, [r0, 0xE] + ands r4, r2 + lsls r4, 5 + adds r5, r4 + lsrs r2, 10 + ands r2, r6 + mov r0, r9 + adds r1, r5, 0 + bl sub_815C0D4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815C0D0: .4byte 0x000003ff + thumb_func_end sub_815BFF0 + + thumb_func_start sub_815C0D4 +sub_815C0D4: @ 815C0D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + movs r0, 0x20 + bl sub_8002BB0 + adds r6, r0, 0 + movs r0, 0x20 + bl sub_8002BB0 + str r0, [sp] + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0x8 + bl CpuFastSet + movs r0, 0x1 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + beq _0815C15A + movs r5, 0 + movs r7, 0xF + mov r12, r7 + movs r0, 0xF0 + mov r8, r0 +_0815C118: + movs r3, 0 + lsls r4, r5, 2 +_0815C11C: + subs r0, r3, 0x3 + subs r0, r4, r0 + adds r0, r6, r0 + ldrb r1, [r0] + adds r2, r4, r3 + ldr r7, [sp] + adds r2, r7, r2 + adds r0, r1, 0 + mov r7, r12 + ands r0, r7 + lsls r0, 4 + mov r7, r8 + ands r1, r7 + lsrs r1, 4 + adds r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _0815C11C + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x7 + bls _0815C118 + ldr r0, [sp] + adds r1, r6, 0 + movs r2, 0x8 + bl CpuFastSet +_0815C15A: + movs r0, 0x2 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + beq _0815C18E + movs r5, 0 +_0815C166: + lsls r0, r5, 2 + ldr r7, [sp] + adds r0, r7 + movs r1, 0x7 + subs r1, r5 + lsls r1, 2 + adds r1, r6 + movs r2, 0x4 + bl memcpy + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x7 + bls _0815C166 + ldr r0, [sp] + adds r1, r6, 0 + movs r2, 0x8 + bl CpuFastSet +_0815C18E: + movs r5, 0 + movs r0, 0xF0 + mov r8, r0 + movs r1, 0xF + mov r12, r1 +_0815C198: + adds r4, r6, r5 + ldrb r0, [r4] + mov r3, r8 + ands r3, r0 + cmp r3, 0 + beq _0815C1B2 + mov r7, r9 + adds r2, r7, r5 + ldrb r1, [r2] + mov r0, r12 + ands r0, r1 + adds r0, r3 + strb r0, [r2] +_0815C1B2: + ldrb r0, [r4] + mov r3, r12 + ands r3, r0 + cmp r3, 0 + beq _0815C1CA + mov r0, r9 + adds r2, r0, r5 + ldrb r1, [r2] + mov r0, r8 + ands r0, r1 + adds r0, r3 + strb r0, [r2] +_0815C1CA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1F + bls _0815C198 + ldr r0, [sp] + bl sub_8002BC4 + adds r0, r6, 0 + bl sub_8002BC4 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815C0D4 + + thumb_func_start sub_815C1F0 +sub_815C1F0: @ 815C1F0 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 28 + movs r3, 0 + ldrb r0, [r4] + cmp r0, r1 + beq _0815C220 + cmp r0, 0xFF + bne _0815C208 + strb r1, [r4] + b _0815C220 +_0815C208: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0xF + bhi _0815C220 + adds r2, r4, r3 + ldrb r0, [r2] + cmp r0, r1 + beq _0815C220 + cmp r0, 0xFF + bne _0815C208 + strb r1, [r2] +_0815C220: + movs r0, 0xF + subs r0, r3 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_815C1F0 + + thumb_func_start sub_815C230 +sub_815C230: @ 815C230 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + movs r4, 0 + ldrb r0, [r5] + cmp r0, 0xFF + beq _0815C274 +_0815C23E: + adds r1, r5, r4 + ldrb r0, [r1] + cmp r0, 0x6 + bls _0815C24A + ldr r0, [r6, 0x14] + b _0815C24C +_0815C24A: + ldr r0, [r6, 0x10] +_0815C24C: + ldrb r1, [r1] + lsls r1, 5 + ldr r0, [r0, 0x8] + adds r0, r1 + movs r1, 0xF + subs r1, r4 + lsls r1, 20 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bhi _0815C274 + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0815C23E +_0815C274: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815C230 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/text.s b/asm/text.s new file mode 100644 index 000000000..7532ec0b9 --- /dev/null +++ b/asm/text.s @@ -0,0 +1,3091 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_800537C +sub_800537C: @ 800537C + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x14 + ldrb r1, [r3, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080053A0 + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] +_080053A0: + adds r0, r2, 0 + bl sub_8005790 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_800537C + + thumb_func_start sub_80053B0 +sub_80053B0: @ 80053B0 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x14 + ldrb r1, [r3, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080053D8 + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] +_080053D8: + adds r0, r2, 0 + bl sub_8005790 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80053B0 + + thumb_func_start sub_80053E8 +sub_80053E8: @ 80053E8 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x14 + ldrb r1, [r3, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08005410 + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] +_08005410: + adds r0, r2, 0 + bl sub_8005790 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80053E8 + + thumb_func_start sub_8005420 +sub_8005420: @ 8005420 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x14 + ldrb r1, [r3, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08005448 + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x3 + orrs r0, r1 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] +_08005448: + adds r0, r2, 0 + bl sub_8005790 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8005420 + + thumb_func_start sub_8005458 +sub_8005458: @ 8005458 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x14 + ldrb r1, [r3, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08005480 + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] +_08005480: + adds r0, r2, 0 + bl sub_8005790 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8005458 + + thumb_func_start sub_8005490 +sub_8005490: @ 8005490 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x14 + ldrb r1, [r3, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080054B8 + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x5 + orrs r0, r1 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] +_080054B8: + adds r0, r2, 0 + bl sub_8005790 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8005490 + + thumb_func_start sub_80054C8 +sub_80054C8: @ 80054C8 + push {lr} + adds r2, r0, 0 + adds r2, 0x14 + ldr r0, _080054E0 @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080054E4 + movs r0, 0 + strb r0, [r2, 0x2] + b _080054F4 + .align 2, 0 +_080054E0: .4byte gUnknown_3003E50 +_080054E4: + ldrb r0, [r2, 0x1] + movs r1, 0x61 + negs r1, r1 + ands r1, r0 + movs r0, 0x20 + negs r0, r0 + ands r1, r0 + strb r1, [r2, 0x1] +_080054F4: + pop {r0} + bx r0 + thumb_func_end sub_80054C8 + + thumb_func_start sub_80054F8 +sub_80054F8: @ 80054F8 + push {r4-r7,lr} + sub sp, 0x18 + adds r5, r0, 0 + adds r6, r5, 0 + adds r6, 0x14 + ldr r7, _0800552C @ =gUnknown_3003E50 + ldrb r1, [r7] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080055C2 + ldrb r2, [r6, 0x1] + movs r0, 0x1F + ands r0, r2 + cmp r0, 0 + beq _08005530 + ldr r0, [r5, 0x14] + lsls r0, 19 + lsrs r0, 27 + subs r0, 0x1 + movs r1, 0x1F + ands r0, r1 + movs r1, 0x20 + negs r1, r1 + b _080055BC + .align 2, 0 +_0800552C: .4byte gUnknown_3003E50 +_08005530: + ldrb r0, [r5, 0x4] + ldrb r2, [r5, 0xD] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + ldrb r2, [r5, 0x8] + ldrb r3, [r5, 0x9] + movs r4, 0xA + str r4, [sp] + movs r4, 0xC + str r4, [sp, 0x4] + bl sub_8004378 + ldr r0, [r7] + lsls r0, 30 + lsrs r0, 31 + cmp r0, 0 + beq _0800555A + cmp r0, 0x1 + beq _08005564 +_0800555A: + ldr r3, _08005560 @ =gUnknown_81EA14C + b _08005566 + .align 2, 0 +_08005560: .4byte gUnknown_81EA14C +_08005564: + ldr r3, _080055CC @ =gUnknown_81EA24C +_08005566: + ldrb r0, [r5, 0x4] + ldr r2, _080055D0 @ =gUnknown_81EA64C + ldr r1, [r6] + lsls r1, 17 + lsrs r1, 30 + adds r1, r2 + ldrb r2, [r1] + movs r1, 0x80 + str r1, [sp] + movs r1, 0x10 + str r1, [sp, 0x4] + ldrb r1, [r5, 0x8] + str r1, [sp, 0x8] + ldrb r1, [r5, 0x9] + str r1, [sp, 0xC] + movs r1, 0xA + str r1, [sp, 0x10] + movs r1, 0xC + str r1, [sp, 0x14] + adds r1, r3, 0 + movs r3, 0 + bl sub_80041F0 + ldrb r0, [r5, 0x4] + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r6, 0x1] + movs r1, 0x20 + negs r1, r1 + ands r1, r0 + movs r0, 0x8 + orrs r1, r0 + strb r1, [r6, 0x1] + ldr r0, [r6] + lsls r0, 17 + lsrs r0, 30 + adds r0, 0x1 + movs r2, 0x3 + ands r0, r2 + lsls r0, 5 + movs r2, 0x61 + negs r2, r2 +_080055BC: + ands r1, r2 + orrs r1, r0 + strb r1, [r6, 0x1] +_080055C2: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080055CC: .4byte gUnknown_81EA24C +_080055D0: .4byte gUnknown_81EA64C + thumb_func_end sub_80054F8 + + thumb_func_start sub_80055D4 +sub_80055D4: @ 80055D4 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + ldrb r0, [r5, 0x4] + ldrb r2, [r5, 0xD] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + ldrb r2, [r5, 0x8] + ldrb r3, [r5, 0x9] + movs r4, 0xA + str r4, [sp] + movs r4, 0xC + str r4, [sp, 0x4] + bl sub_8004378 + ldrb r0, [r5, 0x4] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80055D4 + + thumb_func_start sub_8005608 +sub_8005608: @ 8005608 + push {lr} + adds r1, r0, 0 + adds r1, 0x14 + ldr r0, _08005628 @ =gUnknown_203ADFA + ldrb r0, [r0] + movs r2, 0x78 + cmp r0, 0x2 + bne _0800561A + movs r2, 0x32 +_0800561A: + ldrb r0, [r1, 0x2] + cmp r0, r2 + beq _0800562C + adds r0, 0x1 + strb r0, [r1, 0x2] + movs r0, 0 + b _0800562E + .align 2, 0 +_08005628: .4byte gUnknown_203ADFA +_0800562C: + movs r0, 0x1 +_0800562E: + pop {r1} + bx r1 + thumb_func_end sub_8005608 + + thumb_func_start sub_8005634 +sub_8005634: @ 8005634 + push {r4,lr} + adds r2, r0, 0 + movs r4, 0 + ldr r0, _08005654 @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08005658 + adds r0, r2, 0 + bl sub_8005608 + lsls r0, 24 + lsrs r4, r0, 24 + b _08005672 + .align 2, 0 +_08005654: .4byte gUnknown_3003E50 +_08005658: + adds r0, r2, 0 + bl sub_80054F8 + ldr r0, _0800567C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08005672 + movs r4, 0x1 + movs r0, 0x5 + bl sub_80722CC +_08005672: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800567C: .4byte gUnknown_30030F0 + thumb_func_end sub_8005634 + + thumb_func_start sub_8005680 +sub_8005680: @ 8005680 + push {r4,lr} + adds r2, r0, 0 + movs r4, 0 + ldr r0, _080056A0 @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080056A4 + adds r0, r2, 0 + bl sub_8005608 + lsls r0, 24 + lsrs r4, r0, 24 + b _080056B8 + .align 2, 0 +_080056A0: .4byte gUnknown_3003E50 +_080056A4: + ldr r0, _080056C0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _080056B8 + movs r4, 0x1 + movs r0, 0x5 + bl sub_80722CC +_080056B8: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080056C0: .4byte gUnknown_30030F0 + thumb_func_end sub_8005680 + + thumb_func_start sub_80056C4 +sub_80056C4: @ 80056C4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x18 + ldr r4, [sp, 0x34] + ldr r5, [sp, 0x38] + mov r8, r5 + ldr r5, [sp, 0x3C] + mov r9, r5 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0 + beq _080056FA + subs r0, 0x1 + strb r0, [r1] + b _08005778 +_080056FA: + lsls r1, r3, 4 + orrs r1, r3 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0xA + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + adds r0, r5, 0 + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_8004378 + cmp r4, 0 + bne _08005778 + ldr r0, _0800572C @ =gUnknown_3003E50 + ldr r0, [r0] + lsls r0, 30 + lsrs r0, 31 + cmp r0, 0 + beq _08005728 + cmp r0, 0x1 + beq _08005734 +_08005728: + ldr r3, _08005730 @ =gUnknown_81EA14C + b _08005736 + .align 2, 0 +_0800572C: .4byte gUnknown_3003E50 +_08005730: .4byte gUnknown_81EA14C +_08005734: + ldr r3, _08005788 @ =gUnknown_81EA24C +_08005736: + ldr r2, _0800578C @ =gUnknown_81EA64C + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x3 + ands r0, r1 + adds r0, r2 + ldrb r2, [r0] + movs r0, 0x80 + str r0, [sp] + movs r0, 0x10 + str r0, [sp, 0x4] + str r7, [sp, 0x8] + str r6, [sp, 0xC] + movs r0, 0xA + str r0, [sp, 0x10] + movs r0, 0xC + str r0, [sp, 0x14] + adds r0, r5, 0 + adds r1, r3, 0 + movs r3, 0 + bl sub_80041F0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x8 + mov r1, r8 + strb r0, [r1] + mov r5, r9 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] +_08005778: + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005788: .4byte gUnknown_81EA24C +_0800578C: .4byte gUnknown_81EA64C + thumb_func_end sub_80056C4 + + thumb_func_start sub_8005790 +sub_8005790: @ 8005790 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r6, 0 + adds r4, 0x14 + ldrb r0, [r6, 0x1C] + cmp r0, 0x6 + bls _080057A0 + b _08005D68 +_080057A0: + lsls r0, 2 + ldr r1, _080057AC @ =_080057B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080057AC: .4byte _080057B0 + .align 2, 0 +_080057B0: + .4byte _080057CC + .4byte _08005C58 + .4byte _08005C6C + .4byte _08005C98 + .4byte _08005CD0 + .4byte _08005D44 + .4byte _08005D56 +_080057CC: + ldr r2, _08005820 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _080057E6 + ldrb r1, [r4] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080057E6 + movs r0, 0 + strb r0, [r6, 0x1E] +_080057E6: + ldrb r1, [r6, 0x1E] + cmp r1, 0 + beq _08005828 + ldrb r0, [r6, 0x1D] + cmp r0, 0 + beq _08005828 + subs r0, r1, 0x1 + strb r0, [r6, 0x1E] + ldr r0, _08005824 @ =gUnknown_3003E50 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08005804 + b _08005B30 +_08005804: + ldrh r1, [r2, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08005810 + b _08005B30 +_08005810: + ldrb r0, [r4] + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4] + movs r0, 0 + strb r0, [r6, 0x1E] + b _08005B30 + .align 2, 0 +_08005820: .4byte gUnknown_30030F0 +_08005824: .4byte gUnknown_3003E50 +_08005828: + ldr r2, _08005838 @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0800583C + movs r0, 0x1 + b _0800583E + .align 2, 0 +_08005838: .4byte gUnknown_3003E50 +_0800583C: + ldrb r0, [r6, 0x1D] +_0800583E: + strb r0, [r6, 0x1E] + ldr r0, [r6] + ldrb r3, [r0] + adds r0, 0x1 + str r0, [r6] + adds r0, r3, 0 + subs r0, 0xF8 + cmp r0, 0x7 + bls _08005852 + b _08005B6C +_08005852: + lsls r0, 2 + ldr r1, _0800585C @ =_08005860 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800585C: .4byte _08005860 + .align 2, 0 +_08005860: + .4byte _08005B46 + .4byte _08005B34 + .4byte _08005B26 + .4byte _08005B22 + .4byte _080058AC + .4byte _080058A8 + .4byte _08005880 + .4byte _08005D68 +_08005880: + ldrb r0, [r6, 0x6] + strb r0, [r6, 0x8] + ldrb r1, [r6, 0x5] + ldr r0, _080058A4 @ =gUnknown_3003D90 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r6, 0xB] + ldrb r0, [r0, 0x5] + adds r1, r0 + ldrb r0, [r6, 0x9] + adds r0, r1 + strb r0, [r6, 0x9] +_0800589E: + movs r0, 0x2 + b _08005D6A + .align 2, 0 +_080058A4: .4byte gUnknown_3003D90 +_080058A8: + ldr r0, [r6] + b _08005B0A +_080058AC: + ldr r0, [r6] + ldrb r3, [r0] + adds r0, 0x1 + str r0, [r6] + subs r0, r3, 0x1 + cmp r0, 0x17 + bls _080058BC + b _08005B6C +_080058BC: + lsls r0, 2 + ldr r1, _080058C8 @ =_080058CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080058C8: .4byte _080058CC + .align 2, 0 +_080058CC: + .4byte _0800592C + .4byte _0800594E + .4byte _08005972 + .4byte _0800598C + .4byte _080059D8 + .4byte _080059DC + .4byte _0800589E + .4byte _080059F4 + .4byte _08005A04 + .4byte _08005A1A + .4byte _08005A1E + .4byte _08005A66 + .4byte _08005A70 + .4byte _08005A78 + .4byte _08005A84 + .4byte _08005A4C + .4byte _08005AB0 + .4byte _08005ACC + .4byte _08005ADC + .4byte _08005B00 + .4byte _08005B10 + .4byte _08005B18 + .4byte _08005A96 + .4byte _08005AA4 +_0800592C: + ldr r2, [r6] + ldrb r1, [r2] + lsls r1, 4 + ldrb r3, [r6, 0xC] + movs r0, 0xF + ands r0, r3 + orrs r0, r1 + strb r0, [r6, 0xC] + adds r2, 0x1 + str r2, [r6] + lsls r0, 24 + lsrs r0, 28 + ldrb r2, [r6, 0xD] + lsls r1, r2, 28 + lsrs r1, 28 + lsrs r2, 4 + b _080059D2 +_0800594E: + ldr r1, [r6] + ldrb r2, [r1] + movs r0, 0xF + ands r0, r2 + ldrb r3, [r6, 0xD] + movs r2, 0x10 + negs r2, r2 + ands r2, r3 + orrs r2, r0 + strb r2, [r6, 0xD] + adds r1, 0x1 + str r1, [r6] + ldrb r0, [r6, 0xC] + lsrs r0, 4 + lsls r1, r2, 28 + lsrs r1, 28 + lsrs r2, 4 + b _080059D2 +_08005972: + ldr r1, [r6] + ldrb r0, [r1] + lsls r0, 4 + ldrb r3, [r6, 0xD] + movs r2, 0xF + ands r2, r3 + orrs r2, r0 + strb r2, [r6, 0xD] + adds r1, 0x1 + str r1, [r6] + ldrb r0, [r6, 0xC] + lsrs r0, 4 + b _080059CA +_0800598C: + ldr r3, [r6] + ldrb r1, [r3] + lsls r1, 4 + ldrb r4, [r6, 0xC] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r6, 0xC] + adds r5, r3, 0x1 + str r5, [r6] + ldrb r3, [r3, 0x1] + adds r1, r2, 0 + ands r1, r3 + ldrb r4, [r6, 0xD] + movs r3, 0x10 + negs r3, r3 + ands r3, r4 + orrs r3, r1 + strb r3, [r6, 0xD] + adds r4, r5, 0x1 + str r4, [r6] + ldrb r1, [r5, 0x1] + lsls r1, 4 + ands r2, r3 + orrs r2, r1 + strb r2, [r6, 0xD] + adds r4, 0x1 + str r4, [r6] + lsls r0, 24 + lsrs r0, 28 +_080059CA: + lsls r1, r2, 28 + lsrs r1, 28 + lsls r2, 24 + lsrs r2, 28 +_080059D2: + bl sub_8002EA8 + b _0800589E +_080059D8: + ldr r0, [r6] + b _08005B0A +_080059DC: + ldr r0, [r6] + ldrb r0, [r0] + movs r1, 0xF + ands r1, r0 + ldrb r2, [r4] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldr r0, [r6] + b _08005B0A +_080059F4: + ldr r0, [r6] + ldrb r1, [r0] + strb r1, [r6, 0x1E] + adds r0, 0x1 + str r0, [r6] + movs r0, 0x6 + strb r0, [r6, 0x1C] + b _0800589E +_08005A04: + movs r0, 0x1 + strb r0, [r6, 0x1C] + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08005A14 + b _08005B30 +_08005A14: + movs r0, 0 + strb r0, [r4, 0x2] + b _08005B30 +_08005A1A: + movs r0, 0x5 + b _08005D52 +_08005A1E: + ldr r0, [r6] + ldrb r3, [r0] + adds r1, r0, 0x1 + str r1, [r6] + ldrb r0, [r0, 0x1] + lsls r0, 8 + orrs r3, r0 + adds r1, 0x1 + str r1, [r6] + ldr r0, _08005A48 @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08005A40 + b _0800589E +_08005A40: + adds r0, r3, 0 + bl sub_80722A0 + b _0800589E + .align 2, 0 +_08005A48: .4byte gUnknown_203ADFA +_08005A4C: + ldr r0, [r6] + ldrb r3, [r0] + adds r1, r0, 0x1 + str r1, [r6] + ldrb r0, [r0, 0x1] + lsls r0, 8 + orrs r3, r0 + adds r1, 0x1 + str r1, [r6] + adds r0, r3, 0 + bl sub_80722CC + b _0800589E +_08005A66: + ldr r1, [r6] + adds r0, r1, 0x1 + str r0, [r6] + ldrb r3, [r1, 0x1] + b _08005B6C +_08005A70: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, 0x6] + b _08005AD2 +_08005A78: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r3, [r6, 0x7] + adds r0, r3 + strb r0, [r6, 0x9] + b _08005AD6 +_08005A84: + ldrb r0, [r6, 0x4] + ldrb r2, [r6, 0xD] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + b _0800589E +_08005A96: + ldr r0, _08005AA0 @ =gMPlay_BGM + bl m4aMPlayStop + b _0800589E + .align 2, 0 +_08005AA0: .4byte gMPlay_BGM +_08005AA4: + ldr r0, _08005AAC @ =gMPlay_BGM + bl m4aMPlayContinue + b _0800589E + .align 2, 0 +_08005AAC: .4byte gMPlay_BGM +_08005AB0: + ldr r0, [r6] + ldrb r4, [r0] + adds r0, 0x1 + str r0, [r6] + cmp r4, 0 + bgt _08005ABE + b _0800589E +_08005ABE: + adds r0, r6, 0 + adds r1, r4, 0 + bl nullsub_5 + ldrb r0, [r6, 0x8] + adds r0, r4 + b _08005C4E +_08005ACC: + ldr r1, [r6] + ldrb r0, [r6, 0x6] + ldrb r2, [r1] +_08005AD2: + adds r0, r2 + strb r0, [r6, 0x8] +_08005AD6: + adds r1, 0x1 + str r1, [r6] + b _0800589E +_08005ADC: + ldr r0, [r6] + ldrb r2, [r0] + ldrb r1, [r6, 0x6] + adds r2, r1 + adds r0, 0x1 + str r0, [r6] + ldrb r0, [r6, 0x8] + subs r4, r2, r0 + cmp r4, 0 + bgt _08005AF2 + b _0800589E +_08005AF2: + adds r0, r6, 0 + adds r1, r4, 0 + bl nullsub_5 + ldrb r0, [r6, 0x8] + adds r0, r4 + b _08005C4E +_08005B00: + ldr r0, [r6] + ldrb r2, [r0] + adds r1, r6, 0 + adds r1, 0x20 + strb r2, [r1] +_08005B0A: + adds r0, 0x1 + str r0, [r6] + b _0800589E +_08005B10: + adds r1, r6, 0 + adds r1, 0x21 + movs r0, 0x1 + b _08005B1E +_08005B18: + adds r1, r6, 0 + adds r1, 0x21 + movs r0, 0 +_08005B1E: + strb r0, [r1] + b _0800589E +_08005B22: + movs r0, 0x2 + b _08005B28 +_08005B26: + movs r0, 0x3 +_08005B28: + strb r0, [r6, 0x1C] + adds r0, r6, 0 + bl sub_80054C8 +_08005B30: + movs r0, 0x3 + b _08005D6A +_08005B34: + ldr r0, [r6] + ldrb r3, [r0] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + orrs r3, r1 + adds r0, 0x1 + str r0, [r6] + b _08005B6C +_08005B46: + ldr r0, [r6] + ldrb r3, [r0] + adds r0, 0x1 + str r0, [r6] + ldrb r0, [r6, 0x4] + adds r1, r3, 0 + ldrb r2, [r6, 0x8] + ldrb r3, [r6, 0x9] + bl sub_80063C8 + ldr r1, _08005B68 @ =gUnknown_3003DA0 + adds r1, 0x80 + strb r0, [r1] + ldrb r3, [r6, 0xA] + adds r0, r3 + b _08005C4A + .align 2, 0 +_08005B68: .4byte gUnknown_3003DA0 +_08005B6C: + ldr r0, [r4] + lsls r0, 28 + lsrs r0, 28 + cmp r0, 0x5 + bhi _08005BEE + lsls r0, 2 + ldr r1, _08005B80 @ =_08005B84 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005B80: .4byte _08005B84 + .align 2, 0 +_08005B84: + .4byte _08005B9C + .4byte _08005BAA + .4byte _08005BB8 + .4byte _08005BC6 + .4byte _08005BD4 + .4byte _08005BE2 +_08005B9C: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_8006448 + b _08005BEE +_08005BAA: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_80064F0 + b _08005BEE +_08005BB8: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_80065B8 + b _08005BEE +_08005BC6: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_8006724 + b _08005BEE +_08005BD4: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_80067EC + b _08005BEE +_08005BE2: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r1, [r0] + adds r0, r3, 0 + bl sub_8006958 +_08005BEE: + adds r0, r6, 0 + bl sub_8003014 + adds r2, r6, 0 + adds r2, 0x20 + ldrb r0, [r2] + cmp r0, 0 + beq _08005C28 + ldr r1, _08005C24 @ =gUnknown_3003DA0 + adds r1, 0x80 + ldrb r0, [r1] + ldrb r3, [r6, 0x8] + adds r0, r3 + strb r0, [r6, 0x8] + ldrb r2, [r2] + ldrb r0, [r1] + subs r4, r2, r0 + cmp r4, 0 + ble _08005C50 + adds r0, r6, 0 + adds r1, r4, 0 + bl nullsub_5 + ldrb r0, [r6, 0x8] + adds r0, r4 + b _08005C4E + .align 2, 0 +_08005C24: .4byte gUnknown_3003DA0 +_08005C28: + adds r0, r6, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0 + beq _08005C44 + ldr r0, _08005C40 @ =gUnknown_3003DA0 + adds r0, 0x80 + ldrb r1, [r6, 0xA] + ldrb r0, [r0] + adds r1, r0 + ldrb r0, [r6, 0x8] + b _08005C4C + .align 2, 0 +_08005C40: .4byte gUnknown_3003DA0 +_08005C44: + ldr r0, _08005C54 @ =gUnknown_3003DA0 + adds r0, 0x80 + ldrb r0, [r0] +_08005C4A: + ldrb r1, [r6, 0x8] +_08005C4C: + adds r0, r1 +_08005C4E: + strb r0, [r6, 0x8] +_08005C50: + movs r0, 0 + b _08005D6A + .align 2, 0 +_08005C54: .4byte gUnknown_3003DA0 +_08005C58: + adds r0, r6, 0 + bl sub_8005680 + lsls r0, 16 + cmp r0, 0 + bne _08005C66 + b _08005B30 +_08005C66: + movs r0, 0 + strb r0, [r6, 0x1C] + b _08005B30 +_08005C6C: + adds r0, r6, 0 + bl sub_8005634 + lsls r0, 16 + cmp r0, 0 + bne _08005C7A + b _08005B30 +_08005C7A: + ldrb r0, [r6, 0x4] + ldrb r2, [r6, 0xD] + lsls r2, 28 + lsrs r1, r2, 4 + orrs r1, r2 + lsrs r1, 24 + bl sub_800445C + ldrb r0, [r6, 0x6] + movs r1, 0 + strb r0, [r6, 0x8] + ldrb r0, [r6, 0x7] + strb r0, [r6, 0x9] + strb r1, [r6, 0x1C] + b _08005B30 +_08005C98: + adds r0, r6, 0 + bl sub_8005634 + lsls r0, 16 + cmp r0, 0 + bne _08005CA6 + b _08005B30 +_08005CA6: + adds r0, r6, 0 + bl sub_80055D4 + ldrb r1, [r6, 0x5] + ldr r0, _08005CCC @ =gUnknown_3003D90 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r6, 0xB] + ldrb r0, [r0, 0x5] + adds r1, r0 + strb r1, [r6, 0x1F] + ldrb r0, [r6, 0x6] + strb r0, [r6, 0x8] + movs r0, 0x4 + strb r0, [r6, 0x1C] + b _08005B30 + .align 2, 0 +_08005CCC: .4byte gUnknown_3003D90 +_08005CD0: + ldrb r2, [r6, 0x1F] + cmp r2, 0 + beq _08005D40 + ldr r4, _08005D04 @ =gUnknown_81EA650 + ldr r5, _08005D08 @ =gUnknown_300500C + ldr r0, [r5] + ldrb r0, [r0, 0x14] + lsls r1, r0, 29 + lsrs r0, r1, 29 + adds r0, r4 + ldrb r0, [r0] + cmp r2, r0 + bcs _08005D0C + ldrb r0, [r6, 0x4] + ldrb r1, [r6, 0xD] + lsls r1, 28 + lsrs r3, r1, 4 + orrs r3, r1 + lsrs r3, 24 + movs r1, 0 + bl sub_80044A8 + movs r0, 0 + strb r0, [r6, 0x1F] + b _08005D36 + .align 2, 0 +_08005D04: .4byte gUnknown_81EA650 +_08005D08: .4byte gUnknown_300500C +_08005D0C: + ldrb r0, [r6, 0x4] + lsrs r1, 29 + adds r1, r4 + ldrb r2, [r1] + ldrb r1, [r6, 0xD] + lsls r1, 28 + lsrs r3, r1, 4 + orrs r3, r1 + lsrs r3, 24 + movs r1, 0 + bl sub_80044A8 + ldr r0, [r5] + ldrb r0, [r0, 0x14] + lsls r0, 29 + lsrs r0, 29 + adds r0, r4 + ldrb r1, [r6, 0x1F] + ldrb r0, [r0] + subs r1, r0 + strb r1, [r6, 0x1F] +_08005D36: + ldrb r0, [r6, 0x4] + movs r1, 0x2 + bl sub_8003F20 + b _08005B30 +_08005D40: + strb r2, [r6, 0x1C] + b _08005B30 +_08005D44: + bl sub_80723E0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08005D52 + b _08005B30 +_08005D52: + strb r0, [r6, 0x1C] + b _08005B30 +_08005D56: + ldrb r0, [r6, 0x1E] + adds r1, r0, 0 + cmp r1, 0 + beq _08005D64 + subs r0, 0x1 + strb r0, [r6, 0x1E] + b _08005B30 +_08005D64: + strb r1, [r6, 0x1C] + b _08005B30 +_08005D68: + movs r0, 0x1 +_08005D6A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8005790 + + thumb_func_start sub_8005D70 +sub_8005D70: @ 8005D70 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + movs r2, 0 + mov r1, sp + adds r1, 0x7 +_08005D88: + strb r2, [r1] + subs r1, 0x1 + cmp r1, sp + bge _08005D88 + movs r5, 0 + movs r6, 0 + adds r4, r0, 0 + movs r2, 0 +_08005D98: + adds r0, r4, r2 + ldrb r3, [r0] + adds r2, 0x1 + adds r0, r3, 0 + subs r0, 0xF7 + cmp r0, 0x8 + bhi _08005E66 + lsls r0, 2 + ldr r1, _08005DB0 @ =_08005DB4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005DB0: .4byte _08005DB4 + .align 2, 0 +_08005DB4: + .4byte _08005E60 + .4byte _08005E64 + .4byte _08005E64 + .4byte _08005E6C + .4byte _08005E6C + .4byte _08005DE8 + .4byte _08005E60 + .4byte _08005DD8 + .4byte _08005DD8 +_08005DD8: + mov r1, sp + adds r0, r1, r6 + strb r5, [r0] + movs r5, 0 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + b _08005E6C +_08005DE8: + adds r0, r4, r2 + ldrb r0, [r0] + adds r2, 0x1 + subs r0, 0x1 + cmp r0, 0x15 + bhi _08005E6C + lsls r0, 2 + ldr r1, _08005E00 @ =_08005E04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005E00: .4byte _08005E04 + .align 2, 0 +_08005E04: + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E5C + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E6C + .4byte _08005E60 + .4byte _08005E6C + .4byte _08005E6C + .4byte _08005E5E + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E6C + .4byte _08005E5E + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E60 + .4byte _08005E6C + .4byte _08005E6C +_08005E5C: + adds r2, 0x1 +_08005E5E: + adds r2, 0x1 +_08005E60: + adds r2, 0x1 + b _08005E6C +_08005E64: + adds r2, 0x1 +_08005E66: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08005E6C: + cmp r3, 0xFF + bne _08005D98 + movs r5, 0 + movs r2, 0 +_08005E74: + mov r1, sp + adds r0, r1, r2 + ldrb r1, [r0] + cmp r5, r1 + bcs _08005E80 + ldrb r5, [r0] +_08005E80: + adds r2, 0x1 + cmp r2, 0x7 + ble _08005E74 + adds r0, r7, 0 + movs r1, 0 + bl sub_80F79D8 + add r0, r8 + lsls r0, 24 + lsrs r0, 24 + muls r0, r5 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8005D70 + + thumb_func_start sub_8005EA4 +sub_8005EA4: @ 8005EA4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0 + ldr r0, _08005EBC @ =gUnknown_81EA654 + adds r2, r0, 0x4 + adds r1, r0, 0 +_08005EB2: + ldr r0, [r1] + cmp r4, r0 + bne _08005EC0 + ldr r0, [r2] + b _08005ECC + .align 2, 0 +_08005EBC: .4byte gUnknown_81EA654 +_08005EC0: + adds r2, 0x8 + adds r1, 0x8 + adds r3, 0x1 + cmp r3, 0x6 + bls _08005EB2 + movs r0, 0 +_08005ECC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8005EA4 + + thumb_func_start sub_8005ED4 +sub_8005ED4: @ 8005ED4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + lsls r2, 16 + lsrs r5, r2, 16 + movs r0, 0 + mov r9, r0 + movs r7, 0 + ldr r0, [sp] + bl sub_8005EA4 + mov r8, r0 + cmp r0, 0 + bne _08005F02 +_08005EFE: + movs r0, 0 + b _08006112 +_08005F02: + lsls r0, r5, 16 + asrs r2, r0, 16 + movs r1, 0x1 + negs r1, r1 + str r0, [sp, 0x8] + cmp r2, r1 + bne _08005F20 + ldr r0, [sp] + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + b _08005F22 +_08005F20: + mov r10, r2 +_08005F22: + movs r1, 0 + str r1, [sp, 0x4] + movs r5, 0 + movs r6, 0 + b _080060FE +_08005F2C: + ldrb r1, [r4] + adds r0, r1, 0 + subs r0, 0xF7 + cmp r0, 0x7 + bls _08005F38 + b _080060E0 +_08005F38: + lsls r0, 2 + ldr r1, _08005F44 @ =_08005F48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005F44: .4byte _08005F48 + .align 2, 0 +_08005F48: + .4byte _08005F9E + .4byte _080060AE + .4byte _080060AE + .4byte _080060FC + .4byte _080060FC + .4byte _08005FDE + .4byte _08005F74 + .4byte _08005F68 +_08005F68: + ldr r2, [sp, 0x4] + cmp r5, r2 + bls _08005F70 + str r5, [sp, 0x4] +_08005F70: + movs r5, 0 + b _080060FC +_08005F74: + adds r4, 0x1 + ldrb r0, [r4] + cmp r0, 0x3 + beq _08005F94 + cmp r0, 0x3 + bgt _08005F86 + cmp r0, 0x2 + beq _08005F8C + b _08005EFE +_08005F86: + cmp r0, 0x4 + beq _08005F9C + b _08005EFE +_08005F8C: + ldr r6, _08005F90 @ =gUnknown_2021CD0 + b _08005F9E + .align 2, 0 +_08005F90: .4byte gUnknown_2021CD0 +_08005F94: + ldr r6, _08005F98 @ =gUnknown_2021CF0 + b _08005F9E + .align 2, 0 +_08005F98: .4byte gUnknown_2021CF0 +_08005F9C: + ldr r6, _08005FB0 @ =gUnknown_2021D04 +_08005F9E: + cmp r6, 0 + bne _08005FD4 + adds r4, 0x1 + ldrb r0, [r4] + bl sub_813CD14 + adds r6, r0, 0 + b _08005FD4 + .align 2, 0 +_08005FB0: .4byte gUnknown_2021D04 +_08005FB4: + ldrb r0, [r6] + adds r6, 0x1 + mov r1, r9 + bl _call_via_r8 + cmp r7, 0 + ble _08005FCA + cmp r0, r7 + bge _08005FD2 + adds r0, r7, 0 + b _08005FD2 +_08005FCA: + mov r1, r9 + cmp r1, 0 + beq _08005FD2 + add r0, r10 +_08005FD2: + adds r5, r0 +_08005FD4: + ldrb r0, [r6] + cmp r0, 0xFF + bne _08005FB4 + movs r6, 0 + b _080060FC +_08005FDE: + adds r4, 0x1 + ldrb r0, [r4] + subs r0, 0x1 + cmp r0, 0x15 + bls _08005FEA + b _080060FC +_08005FEA: + lsls r0, 2 + ldr r1, _08005FF4 @ =_08005FF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005FF4: .4byte _08005FF8 + .align 2, 0 +_08005FF8: + .4byte _08006054 + .4byte _08006054 + .4byte _08006054 + .4byte _08006050 + .4byte _08006054 + .4byte _08006058 + .4byte _080060FC + .4byte _08006054 + .4byte _080060FC + .4byte _080060FC + .4byte _08006052 + .4byte _08006054 + .4byte _08006054 + .4byte _08006054 + .4byte _080060FC + .4byte _08006052 + .4byte _08006084 + .4byte _0800608A + .4byte _08006090 + .4byte _0800609C + .4byte _080060A2 + .4byte _080060A8 +_08006050: + adds r4, 0x1 +_08006052: + adds r4, 0x1 +_08006054: + adds r4, 0x1 + b _080060FC +_08006058: + adds r4, 0x1 + ldrb r0, [r4] + bl sub_8005EA4 + mov r8, r0 + cmp r0, 0 + bne _08006068 + b _08005EFE +_08006068: + ldr r2, [sp, 0x8] + asrs r1, r2, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080060FC + ldrb r0, [r4] + movs r1, 0x2 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + b _080060FC +_08006084: + adds r4, 0x1 + ldrb r0, [r4] + b _080060FA +_0800608A: + adds r4, 0x1 + ldrb r5, [r4] + b _080060FC +_08006090: + adds r4, 0x1 + ldrb r0, [r4] + cmp r0, r5 + bls _080060FC + adds r5, r0, 0 + b _080060FC +_0800609C: + adds r4, 0x1 + ldrb r7, [r4] + b _080060FC +_080060A2: + movs r0, 0x1 + mov r9, r0 + b _080060FC +_080060A8: + movs r1, 0 + mov r9, r1 + b _080060FC +_080060AE: + ldrb r0, [r4] + cmp r0, 0xF9 + bne _080060C8 + adds r4, 0x1 + ldrb r0, [r4] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + orrs r0, r1 + mov r1, r9 + bl _call_via_r8 + b _080060D4 +_080060C8: + adds r4, 0x1 + ldrb r0, [r4] + bl sub_8006428 + lsls r0, 24 + lsrs r0, 24 +_080060D4: + cmp r7, 0 + ble _080060F2 +_080060D8: + cmp r0, r7 + bge _080060FA + adds r0, r7, 0 + b _080060FA +_080060E0: + adds r0, r1, 0 + mov r1, r9 + bl _call_via_r8 + cmp r7, 0 + bgt _080060D8 + ldr r2, [sp] + cmp r2, 0x6 + beq _080060FA +_080060F2: + mov r1, r9 + cmp r1, 0 + beq _080060FA + add r0, r10 +_080060FA: + adds r5, r0 +_080060FC: + adds r4, 0x1 +_080060FE: + ldrb r0, [r4] + cmp r0, 0xFF + beq _08006106 + b _08005F2C +_08006106: + ldr r2, [sp, 0x4] + cmp r5, r2 + bhi _08006110 + adds r0, r2, 0 + b _08006112 +_08006110: + adds r0, r5, 0 +_08006112: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8005ED4 + + thumb_func_start sub_8006124 +sub_8006124: @ 8006124 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r9, r0 + adds r4, r2, 0 + mov r5, sp + adds r5, 0x1 + mov r6, sp + adds r6, 0x2 + mov r0, sp + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8002F5C + movs r0, 0x1 + str r0, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r0, 0x3 + mov r10, r0 + movs r0, 0x1 + movs r2, 0x3 + bl sub_8002EA8 + mov r8, r4 + movs r7, 0 +_0800615E: + mov r1, r8 + adds r0, r1, r7 + ldrb r6, [r0] + adds r7, 0x1 + adds r0, r6, 0 + subs r0, 0xF7 + cmp r0, 0x8 + bhi _0800625A + lsls r0, 2 + ldr r1, _08006178 @ =_0800617C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08006178: .4byte _0800617C + .align 2, 0 +_0800617C: + .4byte _08006256 + .4byte _08006256 + .4byte _08006256 + .4byte _08006280 + .4byte _08006280 + .4byte _080061A0 + .4byte _08006256 + .4byte _08006280 + .4byte _08006280 +_080061A0: + mov r1, r8 + adds r0, r1, r7 + ldrb r0, [r0] + adds r7, 0x1 + subs r0, 0x1 + cmp r0, 0x15 + bhi _08006280 + lsls r0, 2 + ldr r1, _080061B8 @ =_080061BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080061B8: .4byte _080061BC + .align 2, 0 +_080061BC: + .4byte _08006228 + .4byte _08006234 + .4byte _0800623E + .4byte _08006214 + .4byte _08006256 + .4byte _08006256 + .4byte _08006280 + .4byte _08006256 + .4byte _08006280 + .4byte _08006280 + .4byte _08006254 + .4byte _08006256 + .4byte _08006256 + .4byte _08006256 + .4byte _08006280 + .4byte _08006254 + .4byte _08006256 + .4byte _08006256 + .4byte _08006256 + .4byte _08006256 + .4byte _08006280 + .4byte _08006280 +_08006214: + mov r1, r8 + adds r0, r1, r7 + ldrb r0, [r0] + str r0, [sp, 0x4] + adds r7, 0x1 + adds r0, r1, r7 + ldrb r0, [r0] + str r0, [sp, 0x8] + adds r7, 0x1 + b _08006240 +_08006228: + mov r1, r8 + adds r0, r1, r7 + ldrb r0, [r0] + str r0, [sp, 0x4] + adds r7, 0x1 + b _0800624A +_08006234: + mov r1, r8 + adds r0, r1, r7 + ldrb r0, [r0] + str r0, [sp, 0x8] + b _08006246 +_0800623E: + mov r1, r8 +_08006240: + adds r0, r1, r7 + ldrb r0, [r0] + mov r10, r0 +_08006246: + adds r7, 0x1 + ldr r0, [sp, 0x4] +_0800624A: + ldr r1, [sp, 0x8] + mov r2, r10 + bl sub_8002EA8 + b _08006280 +_08006254: + adds r7, 0x1 +_08006256: + adds r7, 0x1 + b _08006280 +_0800625A: + adds r0, r6, 0 + bl sub_8006AC4 + ldr r4, _080062A8 @ =gUnknown_3003DA0 + ldr r5, _080062AC @ =0x04000008 + adds r0, r4, 0 + mov r1, r9 + adds r2, r5, 0 + bl CpuSet + adds r4, 0x40 + mov r1, r9 + adds r1, 0x20 + adds r0, r4, 0 + adds r2, r5, 0 + bl CpuSet + movs r0, 0x40 + add r9, r0 +_08006280: + cmp r6, 0xFF + beq _08006286 + b _0800615E +_08006286: + mov r0, sp + mov r1, sp + adds r1, 0x1 + mov r2, sp + adds r2, 0x2 + bl sub_8002F7C + movs r0, 0x1 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080062A8: .4byte gUnknown_3003DA0 +_080062AC: .4byte 0x04000008 + thumb_func_end sub_8006124 + + thumb_func_start sub_80062B0 +sub_80062B0: @ 80062B0 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + movs r3, 0x2E + ldrsh r2, [r1, r3] + cmp r2, 0 + beq _080062C4 + subs r0, 0x1 + strh r0, [r1, 0x2E] + b _080062FA +_080062C4: + movs r0, 0x8 + strh r0, [r1, 0x2E] + movs r3, 0x30 + ldrsh r0, [r1, r3] + cmp r0, 0x1 + beq _080062E8 + cmp r0, 0x1 + bgt _080062DA + cmp r0, 0 + beq _080062E4 + b _080062F4 +_080062DA: + cmp r0, 0x2 + beq _080062E8 + cmp r0, 0x3 + beq _080062EC + b _080062F4 +_080062E4: + strh r2, [r1, 0x26] + b _080062F4 +_080062E8: + strh r0, [r1, 0x26] + b _080062F4 +_080062EC: + movs r0, 0x1 + strh r0, [r1, 0x26] + strh r2, [r1, 0x30] + b _080062FA +_080062F4: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] +_080062FA: + pop {r0} + bx r0 + thumb_func_end sub_80062B0 + + thumb_func_start sub_8006300 +sub_8006300: @ 8006300 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r1, [sp, 0x14] + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r1, 0x1 + ands r0, r1 + lsls r0, 3 + ldr r1, _08006388 @ =gUnknown_81EA68C + adds r0, r1 + bl sub_80086DC + ldr r0, _0800638C @ =gUnknown_81EA6A4 + bl sub_8008928 + ldr r0, _08006390 @ =gUnknown_81EA6B4 + adds r4, 0x3 + lsls r4, 16 + asrs r4, 16 + adds r5, 0x4 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08006394 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + movs r1, 0x3 + ands r6, r1 + lsls r6, 2 + ldrb r3, [r2, 0x5] + subs r1, 0x10 + ands r1, r3 + orrs r1, r6 + strb r1, [r2, 0x5] + ldrb r3, [r2, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r3 + strb r1, [r2, 0x3] + movs r1, 0x8 + strh r1, [r2, 0x2E] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08006388: .4byte gUnknown_81EA68C +_0800638C: .4byte gUnknown_81EA6A4 +_08006390: .4byte gUnknown_81EA6B4 +_08006394: .4byte gUnknown_202063C + thumb_func_end sub_8006300 + + thumb_func_start sub_8006398 +sub_8006398: @ 8006398 + push {r4,lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080063C4 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + movs r4, 0x80 + lsls r4, 8 + adds r0, r4, 0 + bl sub_800874C + adds r0, r4, 0 + bl sub_8008A30 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080063C4: .4byte gUnknown_202063C + thumb_func_end sub_8006398 + + thumb_func_start sub_80063C8 +sub_80063C8: @ 80063C8 + push {r4,r5,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + ldr r4, _08006410 @ =gUnknown_81EA6CC + lsrs r1, 22 + adds r1, r4 + ldrh r5, [r1] + lsls r5, 5 + ldr r4, _08006414 @ =gUnknown_81EA700 + adds r5, r4 + movs r4, 0x80 + str r4, [sp] + str r4, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + ldrb r4, [r1, 0x2] + str r4, [sp, 0x10] + ldrb r1, [r1, 0x3] + str r1, [sp, 0x14] + adds r1, r5, 0 + movs r2, 0 + movs r3, 0 + bl sub_80041F0 + adds r0, r4, 0 + add sp, 0x18 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08006410: .4byte gUnknown_81EA6CC +_08006414: .4byte gUnknown_81EA700 + thumb_func_end sub_80063C8 + + thumb_func_start sub_8006418 +sub_8006418: @ 8006418 + lsls r0, 24 + ldr r1, _08006424 @ =gUnknown_81EA6CC + lsrs r0, 22 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08006424: .4byte gUnknown_81EA6CC + thumb_func_end sub_8006418 + + thumb_func_start sub_8006428 +sub_8006428: @ 8006428 + lsls r0, 24 + ldr r1, _08006434 @ =gUnknown_81EA6CC + lsrs r0, 22 + adds r0, r1 + ldrb r0, [r0, 0x2] + bx lr + .align 2, 0 +_08006434: .4byte gUnknown_81EA6CC + thumb_func_end sub_8006428 + + thumb_func_start sub_8006438 +sub_8006438: @ 8006438 + lsls r0, 24 + ldr r1, _08006444 @ =gUnknown_81EA6CC + lsrs r0, 22 + adds r0, r1 + ldrb r0, [r0, 0x3] + bx lr + .align 2, 0 +_08006444: .4byte gUnknown_81EA6CC + thumb_func_end sub_8006438 + + thumb_func_start sub_8006448 +sub_8006448: @ 8006448 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + cmp r1, 0x1 + bne _08006490 + lsrs r2, r0, 20 + lsls r2, 9 + movs r0, 0xF + ands r0, r6 + lsls r0, 4 + ldr r1, _08006488 @ =gUnknown_81EF100 + adds r0, r1 + adds r5, r2, r0 + ldr r4, _0800648C @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r4, 0 + adds r1, 0x40 + bl sub_8002F8C + adds r1, r4, 0 + adds r1, 0x80 + movs r0, 0x8 + strb r0, [r1] + adds r4, 0x81 + movs r0, 0xC + b _080064BC + .align 2, 0 +_08006488: .4byte gUnknown_81EF100 +_0800648C: .4byte gUnknown_3003DA0 +_08006490: + lsls r1, r6, 5 + ldr r0, _080064C4 @ =gUnknown_81EAF00 + adds r5, r1, r0 + ldr r4, _080064C8 @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8002F8C + adds r0, r5, 0 + adds r0, 0x10 + adds r1, r4, 0 + adds r1, 0x40 + bl sub_8002F8C + ldr r0, _080064CC @ =gUnknown_81EEF00 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r4, 0 + adds r0, 0x80 + strb r1, [r0] + adds r4, 0x81 + movs r0, 0xD +_080064BC: + strb r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080064C4: .4byte gUnknown_81EAF00 +_080064C8: .4byte gUnknown_3003DA0 +_080064CC: .4byte gUnknown_81EEF00 + thumb_func_end sub_8006448 + + thumb_func_start sub_80064D0 +sub_80064D0: @ 80064D0 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, 0x1 + beq _080064E8 + ldr r0, _080064E4 @ =gUnknown_81EEF00 + adds r0, r2, r0 + ldrb r0, [r0] + b _080064EA + .align 2, 0 +_080064E4: .4byte gUnknown_81EEF00 +_080064E8: + movs r0, 0x8 +_080064EA: + pop {r1} + bx r1 + thumb_func_end sub_80064D0 + + thumb_func_start sub_80064F0 +sub_80064F0: @ 80064F0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r6, r0, 16 + cmp r1, 0x1 + bne _0800653C + lsrs r2, r0, 20 + lsls r2, 9 + movs r0, 0xF + ands r0, r6 + lsls r0, 4 + ldr r1, _08006534 @ =gUnknown_81FB300 + adds r0, r1 + adds r5, r2, r0 + ldr r4, _08006538 @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r4, 0 + adds r1, 0x40 + bl sub_8002F8C + adds r1, r4, 0 + adds r1, 0x80 + movs r0, 0x8 + strb r0, [r1] + adds r4, 0x81 + movs r0, 0x10 + strb r0, [r4] + b _08006584 + .align 2, 0 +_08006534: .4byte gUnknown_81FB300 +_08006538: .4byte gUnknown_3003DA0 +_0800653C: + lsls r1, r6, 6 + ldr r0, _0800658C @ =gUnknown_81F3100 + adds r5, r1, r0 + ldr r4, _08006590 @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8002F8C + adds r0, r5, 0 + adds r0, 0x10 + adds r1, r4, 0 + adds r1, 0x20 + bl sub_8002F8C + adds r0, r5, 0 + adds r0, 0x20 + adds r1, r4, 0 + adds r1, 0x40 + bl sub_8002F8C + adds r0, r5, 0 + adds r0, 0x30 + adds r1, r4, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _08006594 @ =gUnknown_81FB100 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r4, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r4, 0 + adds r1, 0x81 + movs r0, 0xE + strb r0, [r1] +_08006584: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800658C: .4byte gUnknown_81F3100 +_08006590: .4byte gUnknown_3003DA0 +_08006594: .4byte gUnknown_81FB100 + thumb_func_end sub_80064F0 + + thumb_func_start sub_8006598 +sub_8006598: @ 8006598 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, 0x1 + beq _080065B0 + ldr r0, _080065AC @ =gUnknown_81FB100 + adds r0, r2, r0 + ldrb r0, [r0] + b _080065B2 + .align 2, 0 +_080065AC: .4byte gUnknown_81FB100 +_080065B0: + movs r0, 0x8 +_080065B2: + pop {r1} + bx r1 + thumb_func_end sub_8006598 + + thumb_func_start sub_80065B8 +sub_80065B8: @ 80065B8 + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + cmp r1, 0x1 + bne _0800665C + cmp r6, 0 + bne _080065F8 + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _080065F4 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + adds r7, r3, 0 + adds r7, 0x80 + movs r6, 0xA + adds r5, r3, 0 + adds r5, 0x81 + movs r4, 0xC +_080065E4: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, 0x1 + cmp r1, 0x7F + ble _080065E4 + b _080066E4 + .align 2, 0 +_080065F4: .4byte gUnknown_3003DA0 +_080065F8: + lsrs r2, r0, 19 + lsls r2, 9 + movs r0, 0x7 + ands r0, r6 + lsls r0, 5 + ldr r1, _08006650 @ =gUnknown_8207500 + adds r0, r1 + adds r4, r2, r0 + ldr r5, _08006654 @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r5, 0 + adds r1, 0x20 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, r1 + adds r1, r5, 0 + adds r1, 0x40 + bl sub_8002F8C + movs r1, 0x88 + lsls r1, 1 + adds r0, r4, r1 + adds r1, r5, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _08006658 @ =gUnknown_820F500 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r5, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r5, 0 + adds r1, 0x81 + movs r0, 0xC + b _080066E2 + .align 2, 0 +_08006650: .4byte gUnknown_8207500 +_08006654: .4byte gUnknown_3003DA0 +_08006658: .4byte gUnknown_820F500 +_0800665C: + cmp r6, 0 + bne _0800669C + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _08006694 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + ldr r0, _08006698 @ =gUnknown_8207300 + ldrb r4, [r0] + movs r0, 0x81 + adds r0, r3 + mov r12, r0 + adds r6, r3, 0 + adds r6, 0x80 + movs r5, 0xE +_08006682: + adds r0, r1, r3 + strb r2, [r0] + strb r4, [r6] + mov r0, r12 + strb r5, [r0] + adds r1, 0x1 + cmp r1, 0x7F + ble _08006682 + b _080066E4 + .align 2, 0 +_08006694: .4byte gUnknown_3003DA0 +_08006698: .4byte gUnknown_8207300 +_0800669C: + lsls r1, r6, 6 + ldr r0, _080066EC @ =gUnknown_81FF300 + adds r4, r1, r0 + ldr r5, _080066F0 @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r5, 0 + adds r1, 0x20 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x20 + adds r1, r5, 0 + adds r1, 0x40 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x30 + adds r1, r5, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _080066F4 @ =gUnknown_8207300 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r5, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r5, 0 + adds r1, 0x81 + movs r0, 0xE +_080066E2: + strb r0, [r1] +_080066E4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080066EC: .4byte gUnknown_81FF300 +_080066F0: .4byte gUnknown_3003DA0 +_080066F4: .4byte gUnknown_8207300 + thumb_func_end sub_80065B8 + + thumb_func_start sub_80066F8 +sub_80066F8: @ 80066F8 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, 0x1 + bne _08006714 + cmp r2, 0 + bne _0800670A + movs r0, 0xA + b _0800671A +_0800670A: + ldr r0, _08006710 @ =gUnknown_820F500 + b _08006716 + .align 2, 0 +_08006710: .4byte gUnknown_820F500 +_08006714: + ldr r0, _08006720 @ =gUnknown_8207300 +_08006716: + adds r0, r2, r0 + ldrb r0, [r0] +_0800671A: + pop {r1} + bx r1 + .align 2, 0 +_08006720: .4byte gUnknown_8207300 + thumb_func_end sub_80066F8 + + thumb_func_start sub_8006724 +sub_8006724: @ 8006724 + push {r4-r7,lr} + lsls r0, 16 + lsrs r3, r0, 16 + cmp r1, 0x1 + bne _080067C0 + cmp r3, 0 + bne _08006764 + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _08006760 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + adds r7, r3, 0 + adds r7, 0x80 + movs r6, 0xA + adds r5, r3, 0 + adds r5, 0x81 + movs r4, 0xC +_08006750: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, 0x1 + cmp r1, 0x7F + ble _08006750 + b _080067C6 + .align 2, 0 +_08006760: .4byte gUnknown_3003DA0 +_08006764: + lsrs r2, r0, 19 + lsls r2, 9 + movs r0, 0x7 + ands r0, r3 + lsls r0, 5 + ldr r1, _080067B8 @ =gUnknown_8207500 + adds r0, r1 + adds r5, r2, r0 + ldr r4, _080067BC @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8002F8C + adds r0, r5, 0 + adds r0, 0x10 + adds r1, r4, 0 + adds r1, 0x20 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r4, 0 + adds r1, 0x40 + bl sub_8002F8C + movs r1, 0x88 + lsls r1, 1 + adds r0, r5, r1 + adds r1, r4, 0 + adds r1, 0x60 + bl sub_8002F8C + adds r1, r4, 0 + adds r1, 0x80 + movs r0, 0xA + strb r0, [r1] + adds r1, 0x1 + movs r0, 0xC + strb r0, [r1] + b _080067C6 + .align 2, 0 +_080067B8: .4byte gUnknown_8207500 +_080067BC: .4byte gUnknown_3003DA0 +_080067C0: + adds r0, r3, 0 + bl sub_80065B8 +_080067C6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8006724 + + thumb_func_start sub_80067CC +sub_80067CC: @ 80067CC + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, 0x1 + beq _080067E4 + ldr r0, _080067E0 @ =gUnknown_8207300 + adds r0, r2, r0 + ldrb r0, [r0] + b _080067E6 + .align 2, 0 +_080067E0: .4byte gUnknown_8207300 +_080067E4: + movs r0, 0xA +_080067E6: + pop {r1} + bx r1 + thumb_func_end sub_80067CC + + thumb_func_start sub_80067EC +sub_80067EC: @ 80067EC + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + cmp r1, 0x1 + bne _08006890 + cmp r6, 0 + bne _0800682C + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _08006828 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + adds r7, r3, 0 + adds r7, 0x80 + movs r6, 0xA + adds r5, r3, 0 + adds r5, 0x81 + movs r4, 0xC +_08006818: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, 0x1 + cmp r1, 0x7F + ble _08006818 + b _08006918 + .align 2, 0 +_08006828: .4byte gUnknown_3003DA0 +_0800682C: + lsrs r2, r0, 19 + lsls r2, 9 + movs r0, 0x7 + ands r0, r6 + lsls r0, 5 + ldr r1, _08006884 @ =gUnknown_8217818 + adds r0, r1 + adds r4, r2, r0 + ldr r5, _08006888 @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r5, 0 + adds r1, 0x20 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, r1 + adds r1, r5, 0 + adds r1, 0x40 + bl sub_8002F8C + movs r1, 0x88 + lsls r1, 1 + adds r0, r4, r1 + adds r1, r5, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _0800688C @ =gUnknown_821F818 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r5, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r5, 0 + adds r1, 0x81 + movs r0, 0xC + b _08006916 + .align 2, 0 +_08006884: .4byte gUnknown_8217818 +_08006888: .4byte gUnknown_3003DA0 +_0800688C: .4byte gUnknown_821F818 +_08006890: + cmp r6, 0 + bne _080068D0 + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _080068C8 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + ldr r0, _080068CC @ =gUnknown_8217618 + ldrb r4, [r0] + movs r0, 0x81 + adds r0, r3 + mov r12, r0 + adds r6, r3, 0 + adds r6, 0x80 + movs r5, 0xE +_080068B6: + adds r0, r1, r3 + strb r2, [r0] + strb r4, [r6] + mov r0, r12 + strb r5, [r0] + adds r1, 0x1 + cmp r1, 0x7F + ble _080068B6 + b _08006918 + .align 2, 0 +_080068C8: .4byte gUnknown_3003DA0 +_080068CC: .4byte gUnknown_8217618 +_080068D0: + lsls r1, r6, 6 + ldr r0, _08006920 @ =gUnknown_820F618 + adds r4, r1, r0 + ldr r5, _08006924 @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r5, 0 + adds r1, 0x20 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x20 + adds r1, r5, 0 + adds r1, 0x40 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x30 + adds r1, r5, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _08006928 @ =gUnknown_8217618 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r5, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r5, 0 + adds r1, 0x81 + movs r0, 0xE +_08006916: + strb r0, [r1] +_08006918: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08006920: .4byte gUnknown_820F618 +_08006924: .4byte gUnknown_3003DA0 +_08006928: .4byte gUnknown_8217618 + thumb_func_end sub_80067EC + + thumb_func_start sub_800692C +sub_800692C: @ 800692C + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, 0x1 + bne _08006948 + cmp r2, 0 + bne _0800693E + movs r0, 0xA + b _0800694E +_0800693E: + ldr r0, _08006944 @ =gUnknown_821F818 + b _0800694A + .align 2, 0 +_08006944: .4byte gUnknown_821F818 +_08006948: + ldr r0, _08006954 @ =gUnknown_8217618 +_0800694A: + adds r0, r2, r0 + ldrb r0, [r0] +_0800694E: + pop {r1} + bx r1 + .align 2, 0 +_08006954: .4byte gUnknown_8217618 + thumb_func_end sub_800692C + + thumb_func_start sub_8006958 +sub_8006958: @ 8006958 + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + cmp r1, 0x1 + bne _080069FC + cmp r6, 0 + bne _08006998 + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _08006994 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + adds r7, r3, 0 + adds r7, 0x80 + movs r6, 0xA + adds r5, r3, 0 + adds r5, 0x81 + movs r4, 0xC +_08006984: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, 0x1 + cmp r1, 0x7F + ble _08006984 + b _08006A84 + .align 2, 0 +_08006994: .4byte gUnknown_3003DA0 +_08006998: + lsrs r2, r0, 19 + lsls r2, 9 + movs r0, 0x7 + ands r0, r6 + lsls r0, 5 + ldr r1, _080069F0 @ =gUnknown_8227B30 + adds r0, r1 + adds r4, r2, r0 + ldr r5, _080069F4 @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r5, 0 + adds r1, 0x20 + bl sub_8002F8C + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, r1 + adds r1, r5, 0 + adds r1, 0x40 + bl sub_8002F8C + movs r1, 0x88 + lsls r1, 1 + adds r0, r4, r1 + adds r1, r5, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _080069F8 @ =gUnknown_822FB30 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r5, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r5, 0 + adds r1, 0x81 + movs r0, 0xC + b _08006A82 + .align 2, 0 +_080069F0: .4byte gUnknown_8227B30 +_080069F4: .4byte gUnknown_3003DA0 +_080069F8: .4byte gUnknown_822FB30 +_080069FC: + cmp r6, 0 + bne _08006A3C + movs r0, 0x2 + bl sub_8002FCC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + ldr r3, _08006A34 @ =gUnknown_3003DA0 + lsls r2, r0, 4 + orrs r2, r0 + ldr r0, _08006A38 @ =gUnknown_8227930 + ldrb r4, [r0] + movs r0, 0x81 + adds r0, r3 + mov r12, r0 + adds r6, r3, 0 + adds r6, 0x80 + movs r5, 0xE +_08006A22: + adds r0, r1, r3 + strb r2, [r0] + strb r4, [r6] + mov r0, r12 + strb r5, [r0] + adds r1, 0x1 + cmp r1, 0x7F + ble _08006A22 + b _08006A84 + .align 2, 0 +_08006A34: .4byte gUnknown_3003DA0 +_08006A38: .4byte gUnknown_8227930 +_08006A3C: + lsls r1, r6, 6 + ldr r0, _08006A8C @ =gUnknown_821F930 + adds r4, r1, r0 + ldr r5, _08006A90 @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x10 + adds r1, r5, 0 + adds r1, 0x20 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x20 + adds r1, r5, 0 + adds r1, 0x40 + bl sub_8002F8C + adds r0, r4, 0 + adds r0, 0x30 + adds r1, r5, 0 + adds r1, 0x60 + bl sub_8002F8C + ldr r0, _08006A94 @ =gUnknown_8227930 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r5, 0 + adds r0, 0x80 + strb r1, [r0] + adds r1, r5, 0 + adds r1, 0x81 + movs r0, 0xE +_08006A82: + strb r0, [r1] +_08006A84: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08006A8C: .4byte gUnknown_821F930 +_08006A90: .4byte gUnknown_3003DA0 +_08006A94: .4byte gUnknown_8227930 + thumb_func_end sub_8006958 + + thumb_func_start sub_8006A98 +sub_8006A98: @ 8006A98 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, 0x1 + bne _08006AB4 + cmp r2, 0 + bne _08006AAA + movs r0, 0xA + b _08006ABA +_08006AAA: + ldr r0, _08006AB0 @ =gUnknown_822FB30 + b _08006AB6 + .align 2, 0 +_08006AB0: .4byte gUnknown_822FB30 +_08006AB4: + ldr r0, _08006AC0 @ =gUnknown_8227930 +_08006AB6: + adds r0, r2, r0 + ldrb r0, [r0] +_08006ABA: + pop {r1} + bx r1 + .align 2, 0 +_08006AC0: .4byte gUnknown_8227930 + thumb_func_end sub_8006A98 + + thumb_func_start sub_8006AC4 +sub_8006AC4: @ 8006AC4 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 20 + lsls r4, 9 + movs r1, 0xF0 + lsls r1, 12 + ands r1, r0 + lsrs r1, 12 + ldr r0, _08006B08 @ =gUnknown_822FC48 + adds r1, r0 + adds r4, r1 + ldr r5, _08006B0C @ =gUnknown_3003DA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8002F8C + movs r0, 0x80 + lsls r0, 1 + adds r4, r0 + adds r1, r5, 0 + adds r1, 0x40 + adds r0, r4, 0 + bl sub_8002F8C + adds r1, r5, 0 + adds r1, 0x80 + movs r0, 0x8 + strb r0, [r1] + adds r5, 0x81 + movs r0, 0xC + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08006B08: .4byte gUnknown_822FC48 +_08006B0C: .4byte gUnknown_3003DA0 + thumb_func_end sub_8006AC4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/text_printer.s b/asm/text_printer.s new file mode 100644 index 000000000..10f46603d --- /dev/null +++ b/asm/text_printer.s @@ -0,0 +1,2070 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8002C1C +sub_8002C1C: @ 8002C1C + ldr r1, _08002C24 @ =gUnknown_3003D90 + str r0, [r1] + bx lr + .align 2, 0 +_08002C24: .4byte gUnknown_3003D90 + thumb_func_end sub_8002C1C + + thumb_func_start sub_8002C28 +sub_8002C28: @ 8002C28 + push {lr} + ldr r1, _08002C40 @ =gUnknown_2020034 + movs r2, 0 + ldr r3, _08002C44 @ =0x0000045c + adds r0, r1, r3 +_08002C32: + strb r2, [r0, 0x1B] + subs r0, 0x24 + cmp r0, r1 + bge _08002C32 + pop {r0} + bx r0 + .align 2, 0 +_08002C40: .4byte gUnknown_2020034 +_08002C44: .4byte 0x0000045c + thumb_func_end sub_8002C28 + + thumb_func_start sub_8002C48 +sub_8002C48: @ 8002C48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + ldr r7, [sp, 0x30] + lsls r1, 24 + lsrs r1, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + str r2, [sp] + mov r2, sp + strb r0, [r2, 0x4] + mov r0, sp + strb r1, [r0, 0x5] + strb r3, [r0, 0x6] + strb r4, [r0, 0x7] + strb r3, [r0, 0x8] + strb r4, [r0, 0x9] + ldr r0, _08002CF0 @ =gUnknown_3003D90 + ldr r0, [r0] + lsls r3, r1, 1 + adds r3, r1 + lsls r3, 2 + adds r3, r0 + ldrb r0, [r3, 0x6] + strb r0, [r2, 0xA] + mov r1, sp + ldrb r0, [r3, 0x7] + strb r0, [r1, 0xB] + mov r5, sp + ldrb r1, [r3, 0x8] + lsls r1, 28 + movs r6, 0xF + lsrs r1, 28 + ldrb r4, [r5, 0xC] + movs r2, 0x10 + negs r2, r2 + adds r0, r2, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, 0xC] + mov r4, sp + ldrb r1, [r3, 0x8] + lsrs r1, 4 + lsls r1, 4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0xC] + ldrb r0, [r3, 0x9] + lsls r0, 28 + lsrs r0, 28 + adds r1, r6, 0 + ands r1, r0 + ldrb r0, [r4, 0xD] + ands r2, r0 + orrs r2, r1 + strb r2, [r4, 0xD] + mov r1, sp + ldrb r0, [r3, 0x9] + lsrs r0, 4 + lsls r0, 4 + ands r2, r6 + orrs r2, r0 + strb r2, [r1, 0xD] + mov r0, sp + mov r1, r8 + adds r2, r7, 0 + bl sub_8002CF4 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08002CF0: .4byte gUnknown_3003D90 + thumb_func_end sub_8002C48 + + thumb_func_start sub_8002CF4 +sub_8002CF4: @ 8002CF4 + push {r4-r7,lr} + adds r6, r0, 0 + mov r12, r2 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _08002D0C @ =gUnknown_3003D90 + ldr r0, [r0] + cmp r0, 0 + bne _08002D10 + movs r0, 0 + b _08002DD8 + .align 2, 0 +_08002D0C: .4byte gUnknown_3003D90 +_08002D10: + ldr r0, _08002D88 @ =gUnknown_2020010 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0, 0x1B] + strb r2, [r0, 0x1C] + strb r5, [r0, 0x1D] + strb r2, [r0, 0x1E] + strb r2, [r0, 0x1F] + adds r4, r0, 0 + movs r1, 0x6 + adds r0, 0x1A +_08002D26: + strb r2, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _08002D26 + adds r1, r4, 0 + adds r0, r6, 0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r0, [r0] + str r0, [r1] + mov r0, r12 + str r0, [r4, 0x10] + adds r0, r4, 0 + adds r0, 0x20 + movs r1, 0 + strb r1, [r0] + adds r0, 0x1 + strb r1, [r0] + ldrb r0, [r6, 0xC] + lsrs r0, 4 + ldrb r2, [r6, 0xD] + lsls r1, r2, 28 + lsrs r1, 28 + lsrs r2, 4 + bl sub_8002EA8 + cmp r5, 0xFF + beq _08002D90 + cmp r5, 0 + beq _08002D90 + ldrb r0, [r4, 0x1D] + subs r0, 0x1 + strb r0, [r4, 0x1D] + ldr r2, _08002D8C @ =gUnknown_2020034 + ldrb r0, [r6, 0x4] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r0, r4, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + b _08002DD6 + .align 2, 0 +_08002D88: .4byte gUnknown_2020010 +_08002D8C: .4byte gUnknown_2020034 +_08002D90: + ldr r1, _08002D9C @ =gUnknown_2020010 + movs r0, 0 + strb r0, [r1, 0x1D] + movs r4, 0 + ldr r7, _08002DA0 @ =0x000003ff + b _08002DAA + .align 2, 0 +_08002D9C: .4byte gUnknown_2020010 +_08002DA0: .4byte 0x000003ff +_08002DA4: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_08002DAA: + cmp r4, r7 + bhi _08002DB8 + ldr r0, _08002DE0 @ =gUnknown_2020010 + bl sub_8002E7C + cmp r0, 0x1 + bne _08002DA4 +_08002DB8: + cmp r5, 0xFF + beq _08002DC6 + ldr r0, _08002DE0 @ =gUnknown_2020010 + ldrb r0, [r0, 0x4] + movs r1, 0x2 + bl sub_8003F20 +_08002DC6: + ldr r2, _08002DE4 @ =gUnknown_2020034 + ldrb r1, [r6, 0x4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x1B] +_08002DD6: + movs r0, 0x1 +_08002DD8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08002DE0: .4byte gUnknown_2020010 +_08002DE4: .4byte gUnknown_2020034 + thumb_func_end sub_8002CF4 + + thumb_func_start sub_8002DE8 +sub_8002DE8: @ 8002DE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08002E18 @ =gUnknown_2020034 + movs r6, 0 + adds r5, r0, 0x4 + mov r8, r0 + movs r7, 0x1F +_08002DF8: + ldrb r0, [r5, 0x17] + cmp r0, 0 + beq _08002E4C + mov r0, r8 + bl sub_8002E7C + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + beq _08002E48 + cmp r4, 0x1 + bgt _08002E1C + cmp r4, 0 + beq _08002E22 + b _08002E4C + .align 2, 0 +_08002E18: .4byte gUnknown_2020034 +_08002E1C: + cmp r4, 0x3 + beq _08002E2A + b _08002E4C +_08002E22: + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8003F20 +_08002E2A: + ldr r1, _08002E44 @ =gUnknown_2020034 + adds r0, r1, 0 + adds r0, 0x10 + adds r0, r6, r0 + ldr r2, [r0] + cmp r2, 0 + beq _08002E4C + adds r0, r6, r1 + adds r1, r4, 0 + bl _call_via_r2 + b _08002E4C + .align 2, 0 +_08002E44: .4byte gUnknown_2020034 +_08002E48: + movs r0, 0 + strb r0, [r5, 0x17] +_08002E4C: + adds r6, 0x24 + adds r5, 0x24 + movs r0, 0x24 + add r8, r0 + subs r7, 0x1 + cmp r7, 0 + bge _08002DF8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8002DE8 + + thumb_func_start sub_8002E64 +sub_8002E64: @ 8002E64 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08002E78 @ =gUnknown_2020034 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1B] + bx lr + .align 2, 0 +_08002E78: .4byte gUnknown_2020034 + thumb_func_end sub_8002E64 + + thumb_func_start sub_8002E7C +sub_8002E7C: @ 8002E7C + push {r4,lr} + adds r4, r0, 0 +_08002E80: + ldrb r1, [r4, 0x5] + ldr r0, _08002EA4 @ =gUnknown_3003D90 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + beq _08002E80 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08002EA4: .4byte gUnknown_3003D90 + thumb_func_end sub_8002E7C + + thumb_func_start sub_8002EA8 +sub_8002EA8: @ 8002EA8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + str r1, [sp] + str r0, [sp, 0x4] + str r2, [sp, 0x8] + ldr r3, _08002F4C @ =gUnknown_3000AE2 + strh r1, [r3] + ldr r1, _08002F50 @ =gUnknown_3000AE4 + strh r0, [r1] + ldr r0, _08002F54 @ =gUnknown_3000AE6 + strh r2, [r0] + movs r0, 0 + mov r12, r0 + movs r1, 0 +_08002ED8: + movs r2, 0 + lsls r0, r1, 2 + adds r1, 0x1 + mov r10, r1 + add r0, sp + mov r8, r0 +_08002EE4: + movs r1, 0 + lsls r0, r2, 2 + adds r2, 0x1 + mov r9, r2 + add r0, sp + str r0, [sp, 0xC] +_08002EF0: + lsls r0, r1, 2 + adds r6, r1, 0x1 + mov r1, sp + adds r4, r1, r0 + mov r5, sp + mov r7, r12 + lsls r0, r7, 1 + ldr r1, _08002F58 @ =gUnknown_3000A40 + adds r2, r0, r1 + movs r3, 0x2 +_08002F04: + ldm r5!, {r1} + lsls r1, 12 + ldr r0, [r4] + lsls r0, 8 + orrs r1, r0 + ldr r7, [sp, 0xC] + ldr r0, [r7] + lsls r0, 4 + orrs r1, r0 + mov r7, r8 + ldr r0, [r7] + orrs r0, r1 + strh r0, [r2] + adds r2, 0x2 + movs r0, 0x1 + add r12, r0 + subs r3, 0x1 + cmp r3, 0 + bge _08002F04 + adds r1, r6, 0 + cmp r1, 0x2 + ble _08002EF0 + mov r2, r9 + cmp r2, 0x2 + ble _08002EE4 + mov r1, r10 + cmp r1, 0x2 + ble _08002ED8 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002F4C: .4byte gUnknown_3000AE2 +_08002F50: .4byte gUnknown_3000AE4 +_08002F54: .4byte gUnknown_3000AE6 +_08002F58: .4byte gUnknown_3000A40 + thumb_func_end sub_8002EA8 + + thumb_func_start sub_8002F5C +sub_8002F5C: @ 8002F5C + ldr r3, _08002F70 @ =gUnknown_3000AE2 + ldrh r3, [r3] + strb r3, [r1] + ldr r1, _08002F74 @ =gUnknown_3000AE4 + ldrh r1, [r1] + strb r1, [r0] + ldr r0, _08002F78 @ =gUnknown_3000AE6 + ldrh r0, [r0] + strb r0, [r2] + bx lr + .align 2, 0 +_08002F70: .4byte gUnknown_3000AE2 +_08002F74: .4byte gUnknown_3000AE4 +_08002F78: .4byte gUnknown_3000AE6 + thumb_func_end sub_8002F5C + + thumb_func_start sub_8002F7C +sub_8002F7C: @ 8002F7C + push {lr} + ldrb r0, [r0] + ldrb r1, [r1] + ldrb r2, [r2] + bl sub_8002EA8 + pop {r0} + bx r0 + thumb_func_end sub_8002F7C + + thumb_func_start sub_8002F8C +sub_8002F8C: @ 8002F8C + push {r4,r5,lr} + adds r2, r0, 0 + movs r3, 0 + ldr r5, _08002FA4 @ =gUnknown_3000A40 + ldr r4, _08002FA8 @ =gUnknown_81EA044 +_08002F96: + lsls r0, r3, 31 + cmp r0, 0 + beq _08002FAC + ldrb r0, [r2] + adds r2, 0x2 + b _08002FB0 + .align 2, 0 +_08002FA4: .4byte gUnknown_3000A40 +_08002FA8: .4byte gUnknown_81EA044 +_08002FAC: + ldrh r0, [r2] + lsrs r0, 8 +_08002FB0: + adds r0, r4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + adds r3, 0x1 + cmp r3, 0xF + ble _08002F96 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8002F8C + + thumb_func_start sub_8002FCC +sub_8002FCC: @ 8002FCC + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x1 + beq _08003000 + cmp r0, 0x1 + bgt _08002FE2 + cmp r0, 0 + beq _08002FE8 + b _0800300C +_08002FE2: + cmp r1, 0x2 + beq _08002FF4 + b _0800300C +_08002FE8: + ldr r0, _08002FF0 @ =gUnknown_3000AE4 + ldrb r0, [r0] + b _0800300E + .align 2, 0 +_08002FF0: .4byte gUnknown_3000AE4 +_08002FF4: + ldr r0, _08002FFC @ =gUnknown_3000AE2 + ldrb r0, [r0] + b _0800300E + .align 2, 0 +_08002FFC: .4byte gUnknown_3000AE2 +_08003000: + ldr r0, _08003008 @ =gUnknown_3000AE6 + ldrb r0, [r0] + b _0800300E + .align 2, 0 +_08003008: .4byte gUnknown_3000AE6 +_0800300C: + movs r0, 0 +_0800300E: + pop {r1} + bx r1 + thumb_func_end sub_8002FCC + + thumb_func_start sub_8003014 +sub_8003014: @ 8003014 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x6C + adds r6, r0, 0 + ldr r0, _08003084 @ =gUnknown_20204B4 + mov r9, r0 + ldrb r1, [r6, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + mov r1, r9 + adds r2, r0, r1 + ldrb r0, [r2, 0x3] + lsls r0, 3 + ldrb r1, [r6, 0x8] + subs r1, r0, r1 + ldr r3, _08003088 @ =gUnknown_3003DA0 + mov r8, r3 + mov r0, r8 + adds r0, 0x80 + ldrb r7, [r0] + cmp r1, r7 + bge _0800304A + adds r7, r1, 0 +_0800304A: + ldrb r0, [r2, 0x4] + lsls r0, 3 + ldrb r4, [r6, 0x9] + subs r0, r4 + adds r1, r3, 0 + adds r1, 0x81 + ldrb r1, [r1] + mov r10, r1 + adds r5, r4, 0 + cmp r0, r10 + bge _08003062 + mov r10, r0 +_08003062: + movs r1, 0 + cmp r7, 0x8 + ble _0800306A + movs r1, 0x1 +_0800306A: + mov r0, r10 + cmp r0, 0x8 + ble _08003074 + movs r0, 0x2 + orrs r1, r0 +_08003074: + cmp r1, 0x1 + beq _08003134 + cmp r1, 0x1 + bgt _0800308C + cmp r1, 0 + beq _0800309A + b _080035FC + .align 2, 0 +_08003084: .4byte gUnknown_20204B4 +_08003088: .4byte gUnknown_3003DA0 +_0800308C: + cmp r1, 0x2 + bne _08003092 + b _08003268 +_08003092: + cmp r1, 0x3 + bne _08003098 + b _080033A0 +_08003098: + b _080035FC +_0800309A: + adds r2, r3, 0 + movs r1, 0 + adds r0, r5, 0 + cmp r1, r10 + blt _080030A6 + b _080035FC +_080030A6: + ldm r2!, {r3} + str r3, [sp] + movs r5, 0 + ldrb r4, [r6, 0x8] + str r2, [sp, 0x28] + adds r1, 0x1 + str r1, [sp, 0x20] + adds r1, r0, 0x1 + str r1, [sp, 0x24] + cmp r5, r7 + bge _08003124 + ldr r2, _08003130 @ =gUnknown_20204B4 + mov r12, r2 + asrs r3, r0, 3 + mov r9, r3 + lsls r0, 29 + lsrs r0, 27 + mov r8, r0 +_080030CA: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + mov r1, r12 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + add r3, r12 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + ldr r2, [sp] + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800311C + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_0800311C: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r7 + blt _080030CA +_08003124: + ldr r2, [sp, 0x28] + ldr r1, [sp, 0x20] + ldr r0, [sp, 0x24] + cmp r1, r10 + blt _080030A6 + b _080035FC + .align 2, 0 +_08003130: .4byte gUnknown_20204B4 +_08003134: + movs r2, 0 + adds r1, r5, 0 + cmp r2, r10 + bge _080031BE +_0800313C: + ldm r3!, {r0} + mov r9, r0 + movs r5, 0 + ldrb r4, [r6, 0x8] + lsls r0, r1, 29 + str r3, [sp, 0x38] + adds r2, 0x1 + str r2, [sp, 0x30] + adds r2, r1, 0x1 + str r2, [sp, 0x34] + asrs r1, 3 + mov r12, r1 + lsrs r0, 27 + mov r8, r0 +_08003158: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + ldr r1, _08003260 @ =gUnknown_20204B4 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + ldr r0, _08003260 @ =gUnknown_20204B4 + adds r3, r0 + ldrb r0, [r3, 0x3] + mov r2, r12 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r9 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080031AC + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080031AC: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, 0x7 + ble _08003158 + ldr r3, [sp, 0x38] + ldr r2, [sp, 0x30] + ldr r1, [sp, 0x34] + cmp r2, r10 + blt _0800313C +_080031BE: + ldr r3, _08003264 @ =gUnknown_3003DC0 + movs r2, 0 + ldrb r1, [r6, 0x9] + cmp r2, r10 + blt _080031CA + b _080035FC +_080031CA: + subs r7, 0x8 + str r7, [sp, 0x64] + str r7, [sp, 0x4] +_080031D0: + ldm r3!, {r0} + mov r12, r0 + movs r5, 0 + ldrb r0, [r6, 0x8] + adds r4, r0, 0 + adds r4, 0x8 + str r3, [sp, 0x50] + adds r2, 0x1 + str r2, [sp, 0x48] + adds r2, r1, 0x1 + str r2, [sp, 0x4C] + ldr r3, [sp, 0x4] + cmp r5, r3 + bge _08003254 + ldr r7, _08003260 @ =gUnknown_20204B4 + asrs r0, r1, 3 + mov r9, r0 + lsls r0, r1, 29 + lsrs r0, 27 + mov r8, r0 +_080031F8: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r1, r7, 0 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + adds r3, r7 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r12 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800324A + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_0800324A: + adds r5, 0x1 + adds r4, 0x1 + ldr r1, [sp, 0x64] + cmp r5, r1 + blt _080031F8 +_08003254: + ldr r3, [sp, 0x50] + ldr r2, [sp, 0x48] + ldr r1, [sp, 0x4C] + cmp r2, r10 + blt _080031D0 + b _080035FC + .align 2, 0 +_08003260: .4byte gUnknown_20204B4 +_08003264: .4byte gUnknown_3003DC0 +_08003268: + adds r1, r3, 0 + movs r2, 0 + adds r0, r5, 0 + mov r3, r10 + subs r3, 0x8 + str r3, [sp, 0x68] +_08003274: + ldm r1!, {r3} + mov r10, r3 + movs r5, 0 + ldrb r4, [r6, 0x8] + str r1, [sp, 0x60] + adds r2, 0x1 + str r2, [sp, 0x58] + adds r1, r0, 0x1 + str r1, [sp, 0x5C] + cmp r5, r7 + bge _080032F2 + ldr r2, _08003398 @ =gUnknown_20204B4 + mov r12, r2 + asrs r3, r0, 3 + mov r9, r3 + lsls r0, 29 + lsrs r0, 27 + mov r8, r0 +_08003298: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + mov r1, r12 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + add r3, r12 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r10 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080032EA + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080032EA: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r7 + blt _08003298 +_080032F2: + ldr r1, [sp, 0x60] + ldr r2, [sp, 0x58] + ldr r0, [sp, 0x5C] + cmp r2, 0x7 + ble _08003274 + ldr r2, _0800339C @ =gUnknown_3003DE0 + movs r1, 0 + ldrb r0, [r6, 0x9] + adds r0, 0x8 + ldr r3, [sp, 0x68] + cmp r1, r3 + blt _0800330C + b _080035FC +_0800330C: + ldm r2!, {r3} + mov r10, r3 + movs r5, 0 + ldrb r4, [r6, 0x8] + str r2, [sp, 0x1C] + adds r1, 0x1 + str r1, [sp, 0x14] + adds r1, r0, 0x1 + str r1, [sp, 0x18] + cmp r5, r7 + bge _0800338A + ldr r2, _08003398 @ =gUnknown_20204B4 + mov r12, r2 + asrs r3, r0, 3 + mov r9, r3 + lsls r0, 29 + lsrs r0, 27 + mov r8, r0 +_08003330: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + mov r1, r12 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + add r3, r12 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r10 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003382 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08003382: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r7 + blt _08003330 +_0800338A: + ldr r2, [sp, 0x1C] + ldr r1, [sp, 0x14] + ldr r0, [sp, 0x18] + ldr r3, [sp, 0x68] + cmp r1, r3 + blt _0800330C + b _080035FC + .align 2, 0 +_08003398: .4byte gUnknown_20204B4 +_0800339C: .4byte gUnknown_3003DE0 +_080033A0: + mov r2, r8 + movs r3, 0 + adds r1, r4, 0 + subs r7, 0x8 + str r7, [sp, 0x64] + mov r0, r10 + subs r0, 0x8 + str r0, [sp, 0x68] +_080033B0: + ldm r2!, {r0} + mov r9, r0 + movs r5, 0 + ldrb r4, [r6, 0x8] + lsls r0, r1, 29 + str r2, [sp, 0x2C] + adds r3, 0x1 + mov r10, r3 + adds r2, r1, 0x1 + mov r12, r2 + asrs r1, 3 + mov r8, r1 + lsrs r7, r0, 27 +_080033CA: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + ldr r1, _080034D0 @ =gUnknown_20204B4 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + ldr r0, _080034D0 @ =gUnknown_20204B4 + adds r3, r0 + ldrb r0, [r3, 0x3] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + adds r3, r1, r7 + lsls r0, r5, 2 + mov r2, r9 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800341C + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_0800341C: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, 0x7 + ble _080033CA + ldr r2, [sp, 0x2C] + mov r3, r10 + mov r1, r12 + cmp r3, 0x7 + ble _080033B0 + ldr r3, _080034D4 @ =gUnknown_3003DC0 + movs r2, 0 + ldrb r1, [r6, 0x9] + ldr r0, [sp, 0x64] + mov r12, r0 +_08003438: + ldm r3!, {r0} + mov r10, r0 + movs r5, 0 + ldrb r0, [r6, 0x8] + adds r4, r0, 0 + adds r4, 0x8 + str r3, [sp, 0x44] + adds r2, 0x1 + str r2, [sp, 0x3C] + adds r2, r1, 0x1 + str r2, [sp, 0x40] + cmp r5, r12 + bge _080034B8 + ldr r7, _080034D0 @ =gUnknown_20204B4 + asrs r3, r1, 3 + mov r9, r3 + lsls r0, r1, 29 + lsrs r0, 27 + mov r8, r0 +_0800345E: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r1, r7, 0 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + adds r3, r7 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r10 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080034B0 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080034B0: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r12 + blt _0800345E +_080034B8: + ldr r3, [sp, 0x44] + ldr r2, [sp, 0x3C] + ldr r1, [sp, 0x40] + cmp r2, 0x7 + ble _08003438 + ldr r3, _080034D8 @ =gUnknown_3003DE0 + movs r2, 0 + ldrb r0, [r6, 0x9] + adds r1, r0, 0 + adds r1, 0x8 + b _08003556 + .align 2, 0 +_080034D0: .4byte gUnknown_20204B4 +_080034D4: .4byte gUnknown_3003DC0 +_080034D8: .4byte gUnknown_3003DE0 +_080034DC: + ldm r3!, {r0} + mov r9, r0 + movs r5, 0 + ldrb r4, [r6, 0x8] + lsls r0, r1, 29 + str r3, [sp, 0x54] + adds r2, 0x1 + mov r10, r2 + adds r2, r1, 0x1 + mov r12, r2 + asrs r1, 3 + mov r8, r1 + lsrs r7, r0, 27 +_080034F6: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + ldr r1, _0800360C @ =gUnknown_20204B4 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + ldr r0, _0800360C @ =gUnknown_20204B4 + adds r3, r0 + ldrb r0, [r3, 0x3] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + adds r3, r1, r7 + lsls r0, r5, 2 + mov r2, r9 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003548 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08003548: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, 0x7 + ble _080034F6 + ldr r3, [sp, 0x54] + mov r2, r10 + mov r1, r12 +_08003556: + ldr r0, [sp, 0x68] + cmp r2, r0 + blt _080034DC + ldr r3, _08003610 @ =gUnknown_3003E00 + movs r2, 0 + ldrb r0, [r6, 0x9] + adds r1, r0, 0 + adds r1, 0x8 + ldr r0, [sp, 0x68] + cmp r2, r0 + bge _080035FC + ldr r0, [sp, 0x64] + mov r10, r0 +_08003570: + ldm r3!, {r0} + mov r12, r0 + movs r5, 0 + ldrb r0, [r6, 0x8] + adds r4, r0, 0 + adds r4, 0x8 + str r3, [sp, 0x10] + adds r2, 0x1 + str r2, [sp, 0x8] + adds r2, r1, 0x1 + str r2, [sp, 0xC] + cmp r5, r10 + bge _080035F0 + ldr r7, _0800360C @ =gUnknown_20204B4 + asrs r3, r1, 3 + mov r9, r3 + lsls r0, r1, 29 + lsrs r0, 27 + mov r8, r0 +_08003596: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r1, r7, 0 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + adds r3, r7 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r12 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080035E8 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080035E8: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r10 + blt _08003596 +_080035F0: + ldr r3, [sp, 0x10] + ldr r2, [sp, 0x8] + ldr r1, [sp, 0xC] + ldr r0, [sp, 0x68] + cmp r2, r0 + blt _08003570 +_080035FC: + add sp, 0x6C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800360C: .4byte gUnknown_20204B4 +_08003610: .4byte gUnknown_3003E00 + thumb_func_end sub_8003014 + + thumb_func_start sub_8003614 +sub_8003614: @ 8003614 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + str r0, [sp] + ldr r0, [sp, 0x60] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x4] + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x8] + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r4, r0, 16 + subs r1, r3, r1 + ldr r5, _08003688 @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r0, 0x80 + ldrb r7, [r0] + adds r2, r5, 0 + cmp r1, r7 + bge _0800364A + adds r7, r1, 0 +_0800364A: + ldr r1, [sp, 0x8] + subs r0, r4, r1 + adds r1, r2, 0 + adds r1, 0x81 + ldrb r1, [r1] + str r1, [sp, 0xC] + cmp r0, r1 + bge _0800365C + str r0, [sp, 0xC] +_0800365C: + movs r1, 0 + movs r0, 0x7 + ands r0, r3 + adds r0, r3, r0 + lsrs r0, 3 + str r0, [sp, 0x10] + cmp r7, 0x8 + ble _0800366E + movs r1, 0x1 +_0800366E: + ldr r3, [sp, 0xC] + cmp r3, 0x8 + ble _08003678 + movs r0, 0x2 + orrs r1, r0 +_08003678: + cmp r1, 0x1 + beq _08003718 + cmp r1, 0x1 + bgt _0800368C + cmp r1, 0 + beq _0800369A + b _08003B00 + .align 2, 0 +_08003688: .4byte gUnknown_3003DA0 +_0800368C: + cmp r1, 0x2 + bne _08003692 + b _0800381C +_08003692: + cmp r1, 0x3 + bne _08003698 + b _0800391C +_08003698: + b _08003B00 +_0800369A: + adds r1, r2, 0 + movs r0, 0 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _080036A8 + b _08003B00 +_080036A8: + ldm r1!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + str r1, [sp, 0x28] + adds r0, 0x1 + mov r9, r0 + adds r0, r2, 0x1 + mov r10, r0 + cmp r5, r7 + bge _0800370A + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r0, 5 + mov r12, r0 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_080036CC: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003702 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003702: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r7 + blt _080036CC +_0800370A: + ldr r1, [sp, 0x28] + mov r0, r9 + mov r2, r10 + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _080036A8 + b _08003B00 +_08003718: + adds r5, r2, 0 + movs r4, 0 + ldr r2, [sp, 0x8] + ldr r0, [sp, 0xC] + cmp r4, r0 + bge _0800378E +_08003724: + ldm r5!, {r1} + mov r8, r1 + movs r6, 0 + ldr r3, [sp, 0x4] + asrs r0, r2, 3 + lsls r1, r2, 29 + str r5, [sp, 0x2C] + adds r4, 0x1 + mov r9, r4 + adds r2, 0x1 + mov r10, r2 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r0, 5 + mov r12, r0 + lsrs r5, r1, 27 +_08003744: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r5 + lsls r0, r6, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800377A + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800377A: + adds r6, 0x1 + adds r3, 0x1 + cmp r6, 0x7 + ble _08003744 + ldr r5, [sp, 0x2C] + mov r4, r9 + mov r2, r10 + ldr r1, [sp, 0xC] + cmp r4, r1 + blt _08003724 +_0800378E: + ldr r1, _08003818 @ =gUnknown_3003DC0 + movs r0, 0 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _0800379C + b _08003B00 +_0800379C: + subs r7, 0x8 + str r7, [sp, 0x18] + str r7, [sp, 0x14] +_080037A2: + ldm r1!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + adds r3, 0x8 + mov r12, r1 + adds r0, 0x1 + mov r9, r0 + adds r0, r2, 0x1 + mov r10, r0 + ldr r1, [sp, 0x14] + cmp r5, r1 + bge _08003808 + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r7, r0, 5 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_080037C8: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080037FE + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080037FE: + adds r5, 0x1 + adds r3, 0x1 + ldr r0, [sp, 0x18] + cmp r5, r0 + blt _080037C8 +_08003808: + mov r1, r12 + mov r0, r9 + mov r2, r10 + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _080037A2 + b _08003B00 + .align 2, 0 +_08003818: .4byte gUnknown_3003DC0 +_0800381C: + adds r0, r2, 0 + movs r1, 0 + ldr r2, [sp, 0x8] + adds r3, r2, 0 + adds r3, 0x8 + str r3, [sp, 0x1C] + ldr r3, [sp, 0xC] + subs r3, 0x8 + str r3, [sp, 0x20] +_0800382E: + ldm r0!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + str r0, [sp, 0x34] + adds r1, 0x1 + mov r9, r1 + adds r0, r2, 0x1 + mov r10, r0 + cmp r5, r7 + bge _08003890 + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r0, 5 + mov r12, r0 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_08003852: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003888 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003888: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r7 + blt _08003852 +_08003890: + ldr r0, [sp, 0x34] + mov r1, r9 + mov r2, r10 + cmp r1, 0x7 + ble _0800382E + ldr r2, _08003918 @ =gUnknown_3003DE0 + movs r0, 0 + ldr r1, [sp, 0x1C] + ldr r3, [sp, 0x20] + cmp r0, r3 + blt _080038A8 + b _08003B00 +_080038A8: + ldm r2!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + str r2, [sp, 0x38] + adds r0, 0x1 + mov r9, r0 + adds r0, r1, 0x1 + mov r10, r0 + cmp r5, r7 + bge _0800390A + asrs r0, r1, 3 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r0, 5 + mov r12, r0 + lsls r0, r1, 29 + lsrs r6, r0, 27 +_080038CC: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003902 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003902: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r7 + blt _080038CC +_0800390A: + ldr r2, [sp, 0x38] + mov r0, r9 + mov r1, r10 + ldr r3, [sp, 0x20] + cmp r0, r3 + blt _080038A8 + b _08003B00 + .align 2, 0 +_08003918: .4byte gUnknown_3003DE0 +_0800391C: + movs r2, 0 + ldr r4, [sp, 0x8] + ldr r0, [sp, 0x4] + adds r0, 0x8 + str r0, [sp, 0x3C] + subs r7, 0x8 + str r7, [sp, 0x18] + adds r1, r4, 0 + adds r1, 0x8 + str r1, [sp, 0x1C] + ldr r3, [sp, 0xC] + subs r3, 0x8 + str r3, [sp, 0x20] +_08003936: + ldm r5!, {r0} + mov r8, r0 + movs r6, 0 + ldr r3, [sp, 0x4] + asrs r0, r4, 3 + lsls r1, r4, 29 + mov r10, r5 + adds r2, 0x1 + mov r12, r2 + adds r4, 0x1 + mov r9, r4 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r7, r0, 5 + lsrs r5, r1, 27 +_08003954: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r5 + lsls r0, r6, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800398A + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800398A: + adds r6, 0x1 + adds r3, 0x1 + cmp r6, 0x7 + ble _08003954 + mov r5, r10 + mov r2, r12 + mov r4, r9 + cmp r2, 0x7 + ble _08003936 + ldr r1, _08003B10 @ =gUnknown_3003DC0 + movs r0, 0 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0x18] + mov r12, r3 +_080039A6: + ldm r1!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x3C] + str r1, [sp, 0x24] + adds r0, 0x1 + mov r9, r0 + adds r0, r2, 0x1 + mov r10, r0 + cmp r5, r12 + bge _08003A06 + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r7, r0, 5 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_080039C8: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080039FE + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080039FE: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r12 + blt _080039C8 +_08003A06: + ldr r1, [sp, 0x24] + mov r0, r9 + mov r2, r10 + cmp r0, 0x7 + ble _080039A6 + ldr r6, _08003B14 @ =gUnknown_3003DE0 + movs r4, 0 + ldr r2, [sp, 0x1C] + ldr r3, [sp, 0x20] + cmp r4, r3 + bge _08003A84 +_08003A1C: + ldm r6!, {r0} + mov r8, r0 + movs r5, 0 + ldr r3, [sp, 0x4] + asrs r0, r2, 3 + lsls r1, r2, 29 + mov r12, r6 + adds r4, 0x1 + mov r9, r4 + adds r2, 0x1 + mov r10, r2 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r7, r0, 5 + lsrs r6, r1, 27 +_08003A3A: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003A70 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003A70: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, 0x7 + ble _08003A3A + mov r6, r12 + mov r4, r9 + mov r2, r10 + ldr r1, [sp, 0x20] + cmp r4, r1 + blt _08003A1C +_08003A84: + ldr r2, _08003B18 @ =gUnknown_3003E00 + movs r0, 0 + ldr r1, [sp, 0x1C] + ldr r3, [sp, 0x20] + cmp r0, r3 + bge _08003B00 + ldr r3, [sp, 0x18] + mov r12, r3 +_08003A94: + ldm r2!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x3C] + str r2, [sp, 0x30] + adds r0, 0x1 + mov r9, r0 + adds r0, r1, 0x1 + mov r10, r0 + cmp r5, r12 + bge _08003AF4 + asrs r0, r1, 3 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r7, r0, 5 + lsls r0, r1, 29 + lsrs r6, r0, 27 +_08003AB6: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003AEC + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003AEC: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r12 + blt _08003AB6 +_08003AF4: + ldr r2, [sp, 0x30] + mov r0, r9 + mov r1, r10 + ldr r3, [sp, 0x20] + cmp r0, r3 + blt _08003A94 +_08003B00: + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08003B10: .4byte gUnknown_3003DC0 +_08003B14: .4byte gUnknown_3003DE0 +_08003B18: .4byte gUnknown_3003E00 + thumb_func_end sub_8003614 + + thumb_func_start nullsub_5 +nullsub_5: @ 8003B1C + bx lr + thumb_func_end nullsub_5 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/text_window.s b/asm/text_window.s new file mode 100644 index 000000000..c48d09d03 --- /dev/null +++ b/asm/text_window.s @@ -0,0 +1,948 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814FD04 +sub_814FD04: @ 814FD04 + push {r4,lr} + adds r3, r1, 0 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0814FD34 @ =gUnknown_84566A8 + movs r2, 0xA0 + lsls r2, 2 + bl sub_80017D0 + movs r0, 0x2 + bl sub_8150408 + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FD34: .4byte gUnknown_84566A8 + thumb_func_end sub_814FD04 + + thumb_func_start sub_814FD38 +sub_814FD38: @ 814FD38 + push {r4,lr} + adds r3, r1, 0 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0814FD68 @ =gUnknown_841F1C8 + movs r2, 0xA0 + lsls r2, 2 + bl sub_80017D0 + movs r0, 0 + bl sub_8150408 + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FD68: .4byte gUnknown_841F1C8 + thumb_func_end sub_814FD38 + + thumb_func_start sub_814FD6C +sub_814FD6C: @ 814FD6C + push {r4,lr} + adds r3, r1, 0 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0814FD9C @ =gUnknown_8470B0C + movs r2, 0x98 + lsls r2, 2 + bl sub_80017D0 + movs r0, 0x1 + bl sub_8150408 + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FD9C: .4byte gUnknown_8470B0C + thumb_func_end sub_814FD6C + + thumb_func_start sub_814FDA0 +sub_814FDA0: @ 814FDA0 + push {r4,lr} + adds r3, r1, 0 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0814FDD0 @ =gUnknown_8471A4C + movs r2, 0x90 + lsls r2, 1 + bl sub_80017D0 + movs r0, 0x3 + bl sub_8150408 + adds r1, r4, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FDD0: .4byte gUnknown_8471A4C + thumb_func_end sub_814FDA0 + + thumb_func_start sub_814FDD4 +sub_814FDD4: @ 814FDD4 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + lsrs r3, 16 + ldr r1, _0814FDF0 @ =gUnknown_8471B6C + movs r2, 0xA0 + lsls r2, 2 + bl sub_80017D0 + pop {r0} + bx r0 + .align 2, 0 +_0814FDF0: .4byte gUnknown_8471B6C + thumb_func_end sub_814FDD4 + + thumb_func_start sub_814FDF4 +sub_814FDF4: @ 814FDF4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsls r6, 16 + lsrs r6, 16 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + ldr r5, _0814FE3C @ =gUnknown_8471E8C + lsrs r4, 21 + adds r1, r4, r5 + ldr r1, [r1] + movs r2, 0x90 + lsls r2, 1 + adds r3, r6, 0 + bl sub_80017D0 + adds r5, 0x4 + adds r4, r5 + ldr r0, [r4] + mov r1, r8 + movs r2, 0x20 + bl sub_80703EC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814FE3C: .4byte gUnknown_8471E8C + thumb_func_end sub_814FDF4 + + thumb_func_start sub_814FE40 +sub_814FE40: @ 814FE40 + push {r4,lr} + adds r4, r1, 0 + adds r3, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _0814FE68 @ =gUnknown_300500C + ldr r1, [r1] + ldrb r1, [r1, 0x14] + lsrs r1, 3 + adds r2, r4, 0 + bl sub_814FFC4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FE68: .4byte gUnknown_300500C + thumb_func_end sub_814FE40 + + thumb_func_start sub_814FE6C +sub_814FE6C: @ 814FE6C + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0814FEA8 @ =gUnknown_84566A8 + movs r2, 0xA0 + lsls r2, 2 + adds r3, r4, 0 + bl sub_80017D0 + movs r0, 0x2 + bl sub_8150408 + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FEA8: .4byte gUnknown_84566A8 + thumb_func_end sub_814FE6C + + thumb_func_start sub_814FEAC +sub_814FEAC: @ 814FEAC + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0814FEE8 @ =gUnknown_841F1C8 + movs r2, 0xA0 + lsls r2, 2 + adds r3, r4, 0 + bl sub_80017D0 + movs r0, 0 + bl sub_8150408 + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FEE8: .4byte gUnknown_841F1C8 + thumb_func_end sub_814FEAC + + thumb_func_start sub_814FEEC +sub_814FEEC: @ 814FEEC + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0814FF28 @ =gUnknown_8470B0C + movs r2, 0x98 + lsls r2, 2 + adds r3, r4, 0 + bl sub_80017D0 + movs r0, 0x1 + bl sub_8150408 + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FF28: .4byte gUnknown_8470B0C + thumb_func_end sub_814FEEC + + thumb_func_start sub_814FF2C +sub_814FF2C: @ 814FF2C + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0814FF68 @ =gUnknown_8471A4C + movs r2, 0x90 + lsls r2, 1 + adds r3, r4, 0 + bl sub_80017D0 + movs r0, 0x3 + bl sub_8150408 + adds r1, r5, 0 + movs r2, 0x20 + bl sub_80703EC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FF68: .4byte gUnknown_8471A4C + thumb_func_end sub_814FF2C + + thumb_func_start sub_814FF6C +sub_814FF6C: @ 814FF6C + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0814FF94 @ =gUnknown_8471A4C + movs r2, 0x90 + lsls r2, 1 + adds r3, r4, 0 + bl sub_80017D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FF94: .4byte gUnknown_8471A4C + thumb_func_end sub_814FF6C + + thumb_func_start sub_814FF98 +sub_814FF98: @ 814FF98 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0814FFC0 @ =gUnknown_8471B6C + movs r2, 0xA0 + lsls r2, 2 + adds r3, r4, 0 + bl sub_80017D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FFC0: .4byte gUnknown_8471B6C + thumb_func_end sub_814FF98 + + thumb_func_start sub_814FFC4 +sub_814FFC4: @ 814FFC4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 16 + lsrs r6, 16 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08150018 @ =gUnknown_8471E8C + lsls r4, 3 + adds r1, r4, r5 + ldr r1, [r1] + movs r2, 0x90 + lsls r2, 1 + adds r3, r6, 0 + bl sub_80017D0 + adds r5, 0x4 + adds r4, r5 + ldr r0, [r4] + mov r1, r8 + movs r2, 0x20 + bl sub_80703EC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08150018: .4byte gUnknown_8471E8C + thumb_func_end sub_814FFC4 + + thumb_func_start sub_815001C +sub_815001C: @ 815001C + push {r4,lr} + adds r4, r1, 0 + adds r3, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _08150044 @ =gUnknown_300500C + ldr r1, [r1] + ldrb r1, [r1, 0x14] + lsrs r1, 3 + adds r2, r4, 0 + bl sub_814FFC4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08150044: .4byte gUnknown_300500C + thumb_func_end sub_815001C + + thumb_func_start sub_8150048 +sub_8150048: @ 8150048 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0xC] + adds r0, r4, 0 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004950 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8004950 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8004950 + mov r9, r0 + mov r2, r9 + lsls r2, 16 + lsrs r2, 16 + mov r9, r2 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8004950 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x10] + mov r0, r8 + subs r0, 0x1 + lsls r2, r0, 24 + lsrs r2, 24 + str r2, [sp, 0x14] + subs r4, r6, 0x1 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + mov r10, r0 + str r0, [sp] + str r0, [sp, 0x4] + ldr r2, [sp, 0xC] + str r2, [sp, 0x8] + adds r0, r7, 0 + adds r1, r5, 0 + ldr r2, [sp, 0x14] + adds r3, r4, 0 + bl sub_8002554 + adds r1, r5, 0x1 + lsls r1, 16 + lsrs r1, 16 + mov r0, r8 + lsls r2, r0, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + mov r2, r9 + lsls r0, r2, 24 + lsrs r0, 24 + str r0, [sp, 0x1C] + str r0, [sp] + mov r0, r10 + str r0, [sp, 0x4] + ldr r2, [sp, 0xC] + str r2, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + adds r3, r4, 0 + bl sub_8002554 + adds r1, r5, 0x2 + lsls r1, 16 + lsrs r1, 16 + add r8, r9 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r2, r10 + str r2, [sp] + str r2, [sp, 0x4] + ldr r0, [sp, 0xC] + str r0, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_8002554 + adds r1, r5, 0x3 + lsls r1, 16 + lsrs r1, 16 + lsls r2, r6, 24 + lsrs r2, 24 + mov r9, r2 + mov r0, r10 + str r0, [sp] + ldr r2, [sp, 0x10] + lsls r4, r2, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + ldr r0, [sp, 0xC] + str r0, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x14] + mov r3, r9 + bl sub_8002554 + adds r1, r5, 0x5 + lsls r1, 16 + lsrs r1, 16 + mov r2, r10 + str r2, [sp] + str r4, [sp, 0x4] + ldr r0, [sp, 0xC] + str r0, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + mov r3, r9 + bl sub_8002554 + adds r1, r5, 0x6 + lsls r1, 16 + lsrs r1, 16 + ldr r2, [sp, 0x10] + adds r6, r2 + lsls r6, 24 + lsrs r6, 24 + mov r0, r10 + str r0, [sp] + str r0, [sp, 0x4] + ldr r2, [sp, 0xC] + str r2, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x14] + adds r3, r6, 0 + bl sub_8002554 + adds r1, r5, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x1C] + str r0, [sp] + mov r2, r10 + str r2, [sp, 0x4] + ldr r0, [sp, 0xC] + str r0, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x18] + adds r3, r6, 0 + bl sub_8002554 + adds r5, 0x8 + lsls r5, 16 + lsrs r5, 16 + mov r2, r10 + str r2, [sp] + str r2, [sp, 0x4] + ldr r0, [sp, 0xC] + str r0, [sp, 0x8] + adds r0, r7, 0 + adds r1, r5, 0 + mov r2, r8 + adds r3, r6, 0 + bl sub_8002554 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8150048 + + thumb_func_start sub_81501D0 +sub_81501D0: @ 81501D0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r4, r0, 0 + mov r9, r1 + lsls r4, 24 + lsrs r4, 24 + mov r0, r9 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + adds r0, r4, 0 + movs r1, 0 + bl sub_8004950 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004950 + mov r8, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8004950 + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8004950 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8004950 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + mov r0, r8 + lsls r2, r0, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r4, r6, 24 + lsrs r4, 24 + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + mov r1, r9 + adds r3, r4, 0 + bl sub_8002554 + mov r1, r9 + adds r1, 0x1 + lsls r1, 16 + lsrs r1, 16 + mov r0, r8 + adds r0, 0x1 + lsls r2, r0, 24 + lsrs r2, 24 + str r2, [sp, 0x14] + subs r0, r5, 0x2 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x18] + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + adds r3, r4, 0 + bl sub_8002554 + mov r1, r9 + adds r1, 0x2 + lsls r1, 16 + lsrs r1, 16 + add r8, r5 + movs r0, 0x1 + negs r0, r0 + add r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_8002554 + mov r1, r9 + adds r1, 0x3 + lsls r1, 16 + lsrs r1, 16 + adds r5, r6, 0x1 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x1 + str r0, [sp] + ldr r4, [sp, 0xC] + subs r4, 0x2 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x10] + adds r3, r5, 0 + bl sub_8002554 + mov r1, r9 + adds r1, 0x5 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1 + str r0, [sp] + str r4, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + mov r1, r9 + adds r1, 0x6 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0xC] + adds r6, r0 + subs r6, 0x1 + lsls r6, 24 + lsrs r6, 24 + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x10] + adds r3, r6, 0 + bl sub_8002554 + mov r1, r9 + adds r1, 0x7 + lsls r1, 16 + lsrs r1, 16 + ldr r0, [sp, 0x18] + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + ldr r2, [sp, 0x14] + adds r3, r6, 0 + bl sub_8002554 + movs r0, 0x8 + add r9, r0 + mov r0, r9 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + movs r0, 0x1 + str r0, [sp] + str r0, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + adds r0, r7, 0 + mov r1, r9 + mov r2, r8 + adds r3, r6, 0 + bl sub_8002554 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81501D0 + + thumb_func_start sub_815036C +sub_815036C: @ 815036C + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0xC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + adds r0, r6, 0 + movs r1, 0 + bl sub_8004950 + mov r9, r0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8004950 + mov r8, r0 + mov r1, r8 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8004950 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8004950 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r6, 0 + movs r1, 0x4 + bl sub_8004950 + movs r1, 0x1 + negs r1, r1 + add r8, r1 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + subs r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + adds r4, 0x2 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp] + lsls r0, 24 + movs r1, 0x80 + lsls r1, 18 + adds r0, r1 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + mov r0, r9 + movs r1, 0 + mov r2, r8 + adds r3, r5, 0 + bl sub_8002554 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815036C + + thumb_func_start sub_8150408 +sub_8150408: @ 8150408 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _08150444 + lsls r0, 2 + ldr r1, _0815041C @ =_08150420 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815041C: .4byte _08150420 + .align 2, 0 +_08150420: + .4byte _08150434 + .4byte _08150438 + .4byte _0815043C + .4byte _08150440 + .4byte _08150444 +_08150434: + movs r0, 0 + b _08150446 +_08150438: + movs r0, 0x10 + b _08150446 +_0815043C: + movs r0, 0x20 + b _08150446 +_08150440: + movs r0, 0x30 + b _08150446 +_08150444: + movs r0, 0x40 +_08150446: + lsls r0, 1 + ldr r1, _08150450 @ =gUnknown_8471DEC + adds r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_08150450: .4byte gUnknown_8471DEC + thumb_func_end sub_8150408 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/text_window_graphics.s b/asm/text_window_graphics.s new file mode 100644 index 000000000..6c725a553 --- /dev/null +++ b/asm/text_window_graphics.s @@ -0,0 +1,30 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8069788 +sub_8069788: @ 8069788 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _080697A0 + lsls r0, 3 + ldr r1, _0806979C @ =gUnknown_8471E8C + adds r0, r1 + b _080697A2 + .align 2, 0 +_0806979C: .4byte gUnknown_8471E8C +_080697A0: + ldr r0, _080697A8 @ =gUnknown_8471E8C +_080697A2: + pop {r1} + bx r1 + .align 2, 0 +_080697A8: .4byte gUnknown_8471E8C + thumb_func_end sub_8069788 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/tileset_anims.s b/asm/tileset_anims.s new file mode 100644 index 000000000..30b7eec16 --- /dev/null +++ b/asm/tileset_anims.s @@ -0,0 +1,667 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_806FED8 +sub_806FED8: @ 806FED8 + push {lr} + sub sp, 0x4 + ldr r1, _0806FEF8 @ =gUnknown_3000FAC + movs r0, 0 + strb r0, [r1] + movs r0, 0 + str r0, [sp] + ldr r1, _0806FEFC @ =gUnknown_2037108 + ldr r2, _0806FF00 @ =0x0500003c + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0806FEF8: .4byte gUnknown_3000FAC +_0806FEFC: .4byte gUnknown_2037108 +_0806FF00: .4byte 0x0500003c + thumb_func_end sub_806FED8 + + thumb_func_start sub_806FF04 +sub_806FF04: @ 806FF04 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 16 + lsrs r6, r2, 16 + ldr r3, _0806FF4C @ =gUnknown_3000FAC + ldrb r0, [r3] + cmp r0, 0x13 + bhi _0806FF44 + ldr r2, _0806FF50 @ =gUnknown_2037108 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + str r4, [r0] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0x4 + adds r0, r1 + str r5, [r0] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x8] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] +_0806FF44: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806FF4C: .4byte gUnknown_3000FAC +_0806FF50: .4byte gUnknown_2037108 + thumb_func_end sub_806FF04 + + thumb_func_start sub_806FF54 +sub_806FF54: @ 806FF54 + push {r4-r6,lr} + movs r3, 0 + ldr r4, _0806FF90 @ =gUnknown_3000FAC + adds r6, r4, 0 + ldrb r0, [r4] + cmp r3, r0 + bge _0806FF86 + ldr r2, _0806FF94 @ =0x040000d4 + ldr r1, _0806FF98 @ =gUnknown_2037108 + movs r5, 0x80 + lsls r5, 24 +_0806FF6A: + ldr r0, [r1] + str r0, [r2] + ldr r0, [r1, 0x4] + str r0, [r2, 0x4] + ldrh r0, [r1, 0x8] + lsrs r0, 1 + orrs r0, r5 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + adds r1, 0xC + adds r3, 0x1 + ldrb r0, [r4] + cmp r3, r0 + blt _0806FF6A +_0806FF86: + movs r0, 0 + strb r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806FF90: .4byte gUnknown_3000FAC +_0806FF94: .4byte 0x040000d4 +_0806FF98: .4byte gUnknown_2037108 + thumb_func_end sub_806FF54 + + thumb_func_start sub_806FF9C +sub_806FF9C: @ 806FF9C + push {lr} + bl sub_806FED8 + bl sub_807002C + bl sub_8070068 + pop {r0} + bx r0 + thumb_func_end sub_806FF9C + + thumb_func_start sub_806FFB0 +sub_806FFB0: @ 806FFB0 + push {lr} + bl sub_8070068 + pop {r0} + bx r0 + thumb_func_end sub_806FFB0 + + thumb_func_start sub_806FFBC +sub_806FFBC: @ 806FFBC + push {r4,lr} + bl sub_806FED8 + ldr r2, _08070014 @ =gUnknown_3000FAE + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + ldr r1, _08070018 @ =gUnknown_3000FB0 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bcc _0806FFDA + movs r0, 0 + strh r0, [r2] +_0806FFDA: + ldr r4, _0807001C @ =gUnknown_3000FB2 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + ldr r1, _08070020 @ =gUnknown_3000FB4 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bcc _0806FFF2 + movs r0, 0 + strh r0, [r4] +_0806FFF2: + ldr r0, _08070024 @ =gUnknown_3000FB8 + ldr r1, [r0] + cmp r1, 0 + beq _08070000 + ldrh r0, [r2] + bl _call_via_r1 +_08070000: + ldr r0, _08070028 @ =gUnknown_3000FBC + ldr r1, [r0] + cmp r1, 0 + beq _0807000E + ldrh r0, [r4] + bl _call_via_r1 +_0807000E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08070014: .4byte gUnknown_3000FAE +_08070018: .4byte gUnknown_3000FB0 +_0807001C: .4byte gUnknown_3000FB2 +_08070020: .4byte gUnknown_3000FB4 +_08070024: .4byte gUnknown_3000FB8 +_08070028: .4byte gUnknown_3000FBC + thumb_func_end sub_806FFBC + + thumb_func_start sub_807002C +sub_807002C: @ 807002C + push {lr} + ldr r0, _08070058 @ =gUnknown_3000FAE + movs r1, 0 + strh r1, [r0] + ldr r0, _0807005C @ =gUnknown_3000FB0 + strh r1, [r0] + ldr r1, _08070060 @ =gUnknown_3000FB8 + movs r0, 0 + str r0, [r1] + ldr r0, _08070064 @ =gUnknown_2036DFC + ldr r0, [r0] + ldr r0, [r0, 0x10] + cmp r0, 0 + beq _08070052 + ldr r0, [r0, 0x10] + cmp r0, 0 + beq _08070052 + bl _call_via_r0 +_08070052: + pop {r0} + bx r0 + .align 2, 0 +_08070058: .4byte gUnknown_3000FAE +_0807005C: .4byte gUnknown_3000FB0 +_08070060: .4byte gUnknown_3000FB8 +_08070064: .4byte gUnknown_2036DFC + thumb_func_end sub_807002C + + thumb_func_start sub_8070068 +sub_8070068: @ 8070068 + push {lr} + ldr r0, _08070094 @ =gUnknown_3000FB2 + movs r1, 0 + strh r1, [r0] + ldr r0, _08070098 @ =gUnknown_3000FB4 + strh r1, [r0] + ldr r1, _0807009C @ =gUnknown_3000FBC + movs r0, 0 + str r0, [r1] + ldr r0, _080700A0 @ =gUnknown_2036DFC + ldr r0, [r0] + ldr r0, [r0, 0x14] + cmp r0, 0 + beq _0807008E + ldr r0, [r0, 0x10] + cmp r0, 0 + beq _0807008E + bl _call_via_r0 +_0807008E: + pop {r0} + bx r0 + .align 2, 0 +_08070094: .4byte gUnknown_3000FB2 +_08070098: .4byte gUnknown_3000FB4 +_0807009C: .4byte gUnknown_3000FBC +_080700A0: .4byte gUnknown_2036DFC + thumb_func_end sub_8070068 + + thumb_func_start sub_80700A4 +sub_80700A4: @ 80700A4 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _080700C8 @ =gUnknown_83A7660 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 14 + adds r0, r4 + ldr r0, [r0] + ldr r1, _080700CC @ =0x06003f80 + movs r2, 0x80 + bl sub_806FF04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080700C8: .4byte gUnknown_83A7660 +_080700CC: .4byte 0x06003f80 + thumb_func_end sub_80700A4 + + thumb_func_start sub_80700D0 +sub_80700D0: @ 80700D0 + push {lr} + lsls r0, 16 + ldr r2, _080700F0 @ =gUnknown_83AA654 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + lsrs r1, 14 + adds r1, r2 + ldr r0, [r1] + ldr r1, _080700F4 @ =0x06003400 + movs r2, 0xC0 + lsls r2, 3 + bl sub_806FF04 + pop {r0} + bx r0 + .align 2, 0 +_080700F0: .4byte gUnknown_83AA654 +_080700F4: .4byte 0x06003400 + thumb_func_end sub_80700D0 + + thumb_func_start sub_80700F8 +sub_80700F8: @ 80700F8 + push {lr} + lsls r0, 16 + ldr r2, _08070118 @ =gUnknown_83AB874 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + lsrs r1, 14 + adds r1, r2 + ldr r0, [r1] + ldr r1, _0807011C @ =0x06003a00 + movs r2, 0x90 + lsls r2, 2 + bl sub_806FF04 + pop {r0} + bx r0 + .align 2, 0 +_08070118: .4byte gUnknown_83AB874 +_0807011C: .4byte 0x06003a00 + thumb_func_end sub_80700F8 + + thumb_func_start sub_8070120 +sub_8070120: @ 8070120 + push {r4-r6,lr} + lsls r5, r0, 16 + lsrs r6, r5, 16 + movs r0, 0x7 + ands r0, r6 + cmp r0, 0 + bne _08070134 + lsrs r0, r5, 19 + bl sub_80700F8 +_08070134: + movs r4, 0xF + ands r4, r6 + cmp r4, 0x1 + bne _08070142 + lsrs r0, r5, 20 + bl sub_80700D0 +_08070142: + cmp r4, 0x2 + bne _0807014C + lsrs r0, r5, 20 + bl sub_80700A4 +_0807014C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8070120 + + thumb_func_start sub_8070154 +sub_8070154: @ 8070154 + ldr r1, _0807016C @ =gUnknown_3000FAE + movs r0, 0 + strh r0, [r1] + ldr r1, _08070170 @ =gUnknown_3000FB0 + movs r2, 0xA0 + lsls r2, 2 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08070174 @ =gUnknown_3000FB8 + ldr r0, _08070178 @ =sub_8070120 + str r0, [r1] + bx lr + .align 2, 0 +_0807016C: .4byte gUnknown_3000FAE +_08070170: .4byte gUnknown_3000FB0 +_08070174: .4byte gUnknown_3000FB8 +_08070178: .4byte sub_8070120 + thumb_func_end sub_8070154 + + thumb_func_start sub_807017C +sub_807017C: @ 807017C + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + ldr r4, _080701A4 @ =gUnknown_83ABDB4 + movs r1, 0x5 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 14 + adds r0, r4 + ldr r0, [r0] + ldr r1, _080701A8 @ =0x06005d00 + movs r2, 0x80 + lsls r2, 1 + bl sub_806FF04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080701A4: .4byte gUnknown_83ABDB4 +_080701A8: .4byte 0x06005d00 + thumb_func_end sub_807017C + + thumb_func_start sub_80701AC +sub_80701AC: @ 80701AC + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0xC + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _080701D0 + adds r0, r4, 0 + movs r1, 0xC + bl __udivsi3 + lsls r0, 16 + lsrs r0, 16 + bl sub_807017C +_080701D0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80701AC + + thumb_func_start sub_80701D8 +sub_80701D8: @ 80701D8 + ldr r1, _080701EC @ =gUnknown_3000FB2 + movs r0, 0 + strh r0, [r1] + ldr r1, _080701F0 @ =gUnknown_3000FB4 + movs r0, 0x78 + strh r0, [r1] + ldr r1, _080701F4 @ =gUnknown_3000FBC + ldr r0, _080701F8 @ =sub_80701AC + str r0, [r1] + bx lr + .align 2, 0 +_080701EC: .4byte gUnknown_3000FB2 +_080701F0: .4byte gUnknown_3000FB4 +_080701F4: .4byte gUnknown_3000FBC +_080701F8: .4byte sub_80701AC + thumb_func_end sub_80701D8 + + thumb_func_start sub_80701FC +sub_80701FC: @ 80701FC + push {lr} + lsls r0, 16 + ldr r2, _0807021C @ =gUnknown_83AC1E8 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 14 + adds r1, r2 + ldr r0, [r1] + ldr r1, _08070220 @ =0x06007a00 + movs r2, 0x80 + lsls r2, 1 + bl sub_806FF04 + pop {r0} + bx r0 + .align 2, 0 +_0807021C: .4byte gUnknown_83AC1E8 +_08070220: .4byte 0x06007a00 + thumb_func_end sub_80701FC + + thumb_func_start sub_8070224 +sub_8070224: @ 8070224 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _08070248 + adds r0, r4, 0 + movs r1, 0xA + bl __udivsi3 + lsls r0, 16 + lsrs r0, 16 + bl sub_80701FC +_08070248: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8070224 + + thumb_func_start sub_8070250 +sub_8070250: @ 8070250 + ldr r1, _08070264 @ =gUnknown_3000FB2 + movs r0, 0 + strh r0, [r1] + ldr r1, _08070268 @ =gUnknown_3000FB4 + movs r0, 0xA0 + strh r0, [r1] + ldr r1, _0807026C @ =gUnknown_3000FBC + ldr r0, _08070270 @ =sub_8070224 + str r0, [r1] + bx lr + .align 2, 0 +_08070264: .4byte gUnknown_3000FB2 +_08070268: .4byte gUnknown_3000FB4 +_0807026C: .4byte gUnknown_3000FBC +_08070270: .4byte sub_8070224 + thumb_func_end sub_8070250 + + thumb_func_start sub_8070274 +sub_8070274: @ 8070274 + push {lr} + lsls r0, 16 + ldr r2, _08070294 @ =gUnknown_83AC5F8 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 14 + adds r1, r2 + ldr r0, [r1] + ldr r1, _08070298 @ =0x06007000 + movs r2, 0x80 + lsls r2, 1 + bl sub_806FF04 + pop {r0} + bx r0 + .align 2, 0 +_08070294: .4byte gUnknown_83AC5F8 +_08070298: .4byte 0x06007000 + thumb_func_end sub_8070274 + + thumb_func_start sub_807029C +sub_807029C: @ 807029C + push {lr} + lsls r1, r0, 16 + movs r0, 0xF0 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + bne _080702B0 + lsrs r0, r1, 20 + bl sub_8070274 +_080702B0: + pop {r0} + bx r0 + thumb_func_end sub_807029C + + thumb_func_start sub_80702B4 +sub_80702B4: @ 80702B4 + ldr r1, _080702CC @ =gUnknown_3000FB2 + movs r0, 0 + strh r0, [r1] + ldr r1, _080702D0 @ =gUnknown_3000FB4 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080702D4 @ =gUnknown_3000FBC + ldr r0, _080702D8 @ =sub_807029C + str r0, [r1] + bx lr + .align 2, 0 +_080702CC: .4byte gUnknown_3000FB2 +_080702D0: .4byte gUnknown_3000FB4 +_080702D4: .4byte gUnknown_3000FBC +_080702D8: .4byte sub_807029C + thumb_func_end sub_80702B4 + + thumb_func_start sub_80702DC +sub_80702DC: @ 80702DC + push {lr} + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + ldr r1, _080702FC @ =gUnknown_83AC7C8 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08070300 @ =0x06006e00 + movs r2, 0xE0 + bl sub_806FF04 + pop {r0} + bx r0 + .align 2, 0 +_080702FC: .4byte gUnknown_83AC7C8 +_08070300: .4byte 0x06006e00 + thumb_func_end sub_80702DC + + thumb_func_start sub_8070304 +sub_8070304: @ 8070304 + push {lr} + lsls r2, r0, 16 + lsrs r0, r2, 16 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08070318 + lsrs r0, r2, 17 + bl sub_80702DC +_08070318: + pop {r0} + bx r0 + thumb_func_end sub_8070304 + + thumb_func_start sub_807031C +sub_807031C: @ 807031C + ldr r1, _08070330 @ =gUnknown_3000FB2 + movs r0, 0 + strh r0, [r1] + ldr r1, _08070334 @ =gUnknown_3000FB4 + movs r0, 0xF0 + strh r0, [r1] + ldr r1, _08070338 @ =gUnknown_3000FBC + ldr r0, _0807033C @ =sub_8070304 + str r0, [r1] + bx lr + .align 2, 0 +_08070330: .4byte gUnknown_3000FB2 +_08070334: .4byte gUnknown_3000FB4 +_08070338: .4byte gUnknown_3000FBC +_0807033C: .4byte sub_8070304 + thumb_func_end sub_807031C + + thumb_func_start sub_8070340 +sub_8070340: @ 8070340 + push {lr} + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + ldr r0, _08070360 @ =gUnknown_83AC950 + lsrs r1, 14 + adds r1, r0 + ldr r0, [r1] + ldr r1, _08070364 @ =0x06005c60 + movs r2, 0x80 + bl sub_806FF04 + pop {r0} + bx r0 + .align 2, 0 +_08070360: .4byte gUnknown_83AC950 +_08070364: .4byte 0x06005c60 + thumb_func_end sub_8070340 + + thumb_func_start sub_8070368 +sub_8070368: @ 8070368 + push {lr} + lsls r1, r0, 16 + movs r0, 0xF0 + lsls r0, 12 + ands r0, r1 + cmp r0, 0 + bne _0807037C + lsrs r0, r1, 20 + bl sub_8070340 +_0807037C: + pop {r0} + bx r0 + thumb_func_end sub_8070368 + + thumb_func_start sub_8070380 +sub_8070380: @ 8070380 + ldr r1, _08070398 @ =gUnknown_3000FB2 + movs r0, 0 + strh r0, [r1] + ldr r1, _0807039C @ =gUnknown_3000FB4 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080703A0 @ =gUnknown_3000FBC + ldr r0, _080703A4 @ =sub_8070368 + str r0, [r1] + bx lr + .align 2, 0 +_08070398: .4byte gUnknown_3000FB2 +_0807039C: .4byte gUnknown_3000FB4 +_080703A0: .4byte gUnknown_3000FBC +_080703A4: .4byte sub_8070368 + thumb_func_end sub_8070380 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/title_screen.s b/asm/title_screen.s new file mode 100644 index 000000000..40d6201b1 --- /dev/null +++ b/asm/title_screen.s @@ -0,0 +1,2306 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8078914 +sub_8078914: @ 8078914 + push {r4-r6,lr} + sub sp, 0xC + ldr r0, _08078930 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r6, [r0] + cmp r6, 0x1 + beq _080789F0 + cmp r6, 0x1 + bgt _08078934 + cmp r6, 0 + beq _08078946 + b _0807893A + .align 2, 0 +_08078930: .4byte gUnknown_30030F0 +_08078934: + cmp r6, 0x2 + bne _0807893A + b _08078AC0 +_0807893A: + ldr r0, _080789D0 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_08078946: + movs r0, 0 + bl sub_80006F4 + bl sub_8000558 + ldr r0, _080789D4 @ =gHeap + movs r1, 0xE0 + lsls r1, 9 + bl sub_8002B80 + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + bl sub_8070528 + bl sub_8078B34 + add r1, sp, 0x4 + movs r0, 0 + strh r0, [r1] + ldr r1, _080789D8 @ =0x040000d4 + add r0, sp, 0x4 + str r0, [r1] + movs r0, 0xC0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080789DC @ =0x8100c000 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0 + str r2, [sp, 0x8] + add r0, sp, 0x8 + str r0, [r1] + movs r0, 0xE0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080789E0 @ =0x85000100 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + add r0, sp, 0x4 + strh r2, [r0] + str r0, [r1] + movs r0, 0xA0 + lsls r0, 19 + str r0, [r1, 0x4] + ldr r0, _080789E4 @ =0x81000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0 + bl sub_8001618 + ldr r1, _080789E8 @ =gUnknown_83BFB74 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080789EC @ =gUnknown_2037F30 + movs r0, 0xFF + strb r0, [r1] + b _08078B18 + .align 2, 0 +_080789D0: .4byte gUnknown_30030F0 +_080789D4: .4byte gHeap +_080789D8: .4byte 0x040000d4 +_080789DC: .4byte 0x8100c000 +_080789E0: .4byte 0x85000100 +_080789E4: .4byte 0x81000200 +_080789E8: .4byte gUnknown_83BFB74 +_080789EC: .4byte gUnknown_2037F30 +_080789F0: + ldr r0, _08078A94 @ =gUnknown_8EAB6C4 + movs r2, 0xD0 + lsls r2, 1 + movs r1, 0 + bl sub_80703EC + ldr r1, _08078A98 @ =gUnknown_8EAB8C4 + movs r4, 0 + str r4, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08078A9C @ =gUnknown_8EAD390 + str r6, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _08078AA0 @ =gUnknown_8EAD5E8 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08078AA4 @ =gUnknown_8EAD608 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08078AA8 @ =gUnknown_8EADEE4 + str r6, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r5, _08078AAC @ =gUnknown_8EAE094 + adds r0, r5, 0 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08078AB0 @ =gUnknown_8EAE0B4 + str r4, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08078AB4 @ =gUnknown_8EAE374 + str r6, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + adds r0, r5, 0 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08078AB8 @ =gUnknown_83BF58C + str r4, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08078ABC @ =gUnknown_83BF5A8 + str r6, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + bl sub_8079708 + b _08078B18 + .align 2, 0 +_08078A94: .4byte gUnknown_8EAB6C4 +_08078A98: .4byte gUnknown_8EAB8C4 +_08078A9C: .4byte gUnknown_8EAD390 +_08078AA0: .4byte gUnknown_8EAD5E8 +_08078AA4: .4byte gUnknown_8EAD608 +_08078AA8: .4byte gUnknown_8EADEE4 +_08078AAC: .4byte gUnknown_8EAE094 +_08078AB0: .4byte gUnknown_8EAE0B4 +_08078AB4: .4byte gUnknown_8EAE374 +_08078AB8: .4byte gUnknown_83BF58C +_08078ABC: .4byte gUnknown_83BF5A8 +_08078AC0: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _08078B26 + ldr r0, _08078B00 @ =0x0000ffff + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + ldr r0, _08078B04 @ =sub_8078C24 + movs r1, 0x4 + bl sub_807741C + ldr r0, _08078B08 @ =sub_8078BEC + movs r1, 0x2 + bl sub_807741C + ldr r1, _08078B0C @ =gUnknown_2037F30 + strb r0, [r1] + ldr r0, _08078B10 @ =sub_8078BB4 + bl sub_80006F4 + ldr r0, _08078B14 @ =sub_8078B9C + bl sub_8000544 + movs r0, 0x8B + lsls r0, 1 + bl m4aSongNumStart + b _08078B26 + .align 2, 0 +_08078B00: .4byte 0x0000ffff +_08078B04: .4byte sub_8078C24 +_08078B08: .4byte sub_8078BEC +_08078B0C: .4byte gUnknown_2037F30 +_08078B10: .4byte sub_8078BB4 +_08078B14: .4byte sub_8078B9C +_08078B18: + ldr r1, _08078B30 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08078B26: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08078B30: .4byte gUnknown_30030F0 + thumb_func_end sub_8078914 + + thumb_func_start sub_8078B34 +sub_8078B34: @ 8078B34 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_8078B34 + + thumb_func_start sub_8078B9C +sub_8078B9C: @ 8078B9C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8078B9C + + thumb_func_start sub_8078BB4 +sub_8078BB4: @ 8078BB4 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + bl sub_8087F54 + ldr r1, _08078BE4 @ =gUnknown_2037F30 + ldrb r0, [r1] + cmp r0, 0xFF + beq _08078BE0 + ldr r2, _08078BE8 @ =gUnknown_3005090 + adds r1, r0, 0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] +_08078BE0: + pop {r0} + bx r0 + .align 2, 0 +_08078BE4: .4byte gUnknown_2037F30 +_08078BE8: .4byte gUnknown_3005090 + thumb_func_end sub_8078BB4 + + thumb_func_start sub_8078BEC +sub_8078BEC: @ 8078BEC + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _08078C18 @ =gUnknown_3005098 + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + ldr r0, _08078C1C @ =0x00000a8b + cmp r1, r0 + ble _08078C12 + ldr r1, _08078C20 @ =gUnknown_2037F30 + movs r0, 0xFF + strb r0, [r1] + adds r0, r2, 0 + bl sub_8077508 +_08078C12: + pop {r0} + bx r0 + .align 2, 0 +_08078C18: .4byte gUnknown_3005098 +_08078C1C: .4byte 0x00000a8b +_08078C20: .4byte gUnknown_2037F30 + thumb_func_end sub_8078BEC + + thumb_func_start sub_8078C24 +sub_8078C24: @ 8078C24 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08078C6C @ =gUnknown_3005098 + adds r4, r1, r0 + ldr r0, _08078C70 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0xB + ands r0, r1 + cmp r0, 0 + beq _08078C74 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + beq _08078C74 + cmp r0, 0x4 + beq _08078C74 + cmp r0, 0x5 + beq _08078C74 + bl sub_8079620 + bl sub_8079648 + movs r2, 0xA + ldrsh r0, [r4, r2] + bl sub_8079A10 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8078C90 + b _08078C86 + .align 2, 0 +_08078C6C: .4byte gUnknown_3005098 +_08078C70: .4byte gUnknown_30030F0 +_08078C74: + ldr r0, _08078C8C @ =gUnknown_83BFB84 + movs r2, 0 + ldrsh r1, [r4, r2] + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl _call_via_r1 +_08078C86: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08078C8C: .4byte gUnknown_83BFB84 + thumb_func_end sub_8078C24 + + thumb_func_start sub_8078C90 +sub_8078C90: @ 8078C90 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + strh r2, [r0, 0x2] + strh r1, [r0] + bx lr + thumb_func_end sub_8078C90 + + thumb_func_start sub_8078C9C +sub_8078C9C: @ 8078C9C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + mov r8, r0 + movs r0, 0 + bl sub_80019D0 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + ldr r0, _08078D14 @ =0x04000054 + str r0, [sp] + ldr r0, _08078D18 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r5, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r5, [r0, 0x9] + add r0, sp, 0xC + strh r5, [r0] + ldr r4, _08078D1C @ =gUnknown_2038700 + ldr r6, _08078D20 @ =0x010000a0 + adds r1, r4, 0 + adds r2, r6, 0 + bl CpuSet + mov r0, sp + adds r0, 0xE + strh r5, [r0] + movs r1, 0xF0 + lsls r1, 3 + adds r4, r1 + adds r1, r4, 0 + adds r2, r6, 0 + bl CpuSet + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + mov r0, r8 + movs r1, 0x1 + bl sub_8078C90 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08078D14: .4byte 0x04000054 +_08078D18: .4byte 0xa2600001 +_08078D1C: .4byte gUnknown_2038700 +_08078D20: .4byte 0x010000a0 + thumb_func_end sub_8078C9C + + thumb_func_start sub_8078D24 +sub_8078D24: @ 8078D24 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08078D5C + cmp r0, 0x1 + bgt _08078D3A + cmp r0, 0 + beq _08078D40 + b _08078D9C +_08078D3A: + cmp r0, 0x2 + beq _08078D84 + b _08078D9C +_08078D40: + movs r0, 0x50 + movs r1, 0x82 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x80 + strh r0, [r4, 0x4] + movs r0, 0x80 + bl sub_8079550 + b _08078D78 +_08078D5C: + ldrh r0, [r4, 0x4] + subs r0, 0x4 + strh r0, [r4, 0x4] + movs r1, 0x4 + ldrsh r0, [r4, r1] + bl sub_8079550 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _08078D9C + ldr r1, _08078D80 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] +_08078D78: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + b _08078D9C + .align 2, 0 +_08078D80: .4byte gUnknown_2039600 +_08078D84: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8078C90 +_08078D9C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8078D24 + + thumb_func_start sub_8078DA4 +sub_8078DA4: @ 8078DA4 + push {r4-r7,lr} + sub sp, 0xC + adds r6, r0, 0 + movs r1, 0x2 + ldrsh r0, [r6, r1] + cmp r0, 0x9 + bls _08078DB4 + b _08078FB6 +_08078DB4: + lsls r0, 2 + ldr r1, _08078DC0 @ =_08078DC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078DC0: .4byte _08078DC4 + .align 2, 0 +_08078DC4: + .4byte _08078DEC + .4byte _08078DF2 + .4byte _08078E24 + .4byte _08078E40 + .4byte _08078E80 + .4byte _08078EA4 + .4byte _08078ED4 + .4byte _08078EF8 + .4byte _08078F24 + .4byte _08078F98 +_08078DEC: + movs r0, 0 + strh r0, [r6, 0x4] + b _08078F80 +_08078DF2: + ldrh r0, [r6, 0x4] + adds r0, 0x1 + strh r0, [r6, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bgt _08078E02 + b _08078FB6 +_08078E02: + ldr r0, _08078E20 @ =gUnknown_2037398 + movs r1, 0x10 + bl sub_8071594 + movs r0, 0x80 + lsls r0, 6 + movs r1, 0 + str r1, [sp] + movs r1, 0x9 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _08078F80 + .align 2, 0 +_08078E20: .4byte gUnknown_2037398 +_08078E24: + ldr r0, _08078E3C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08078E36 + b _08078FB6 +_08078E36: + strh r0, [r6, 0x4] + b _08078F80 + .align 2, 0 +_08078E3C: .4byte gUnknown_2037AB8 +_08078E40: + ldrh r0, [r6, 0x4] + adds r0, 0x1 + strh r0, [r6, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x24 + bgt _08078E50 + b _08078FB6 +_08078E50: + ldr r0, _08078E78 @ =sub_80792C8 + movs r1, 0x3 + bl sub_807741C + movs r0, 0x80 + lsls r0, 6 + movs r1, 0x4 + negs r1, r1 + ldr r2, _08078E7C @ =0x00007fde + str r2, [sp] + movs r4, 0 + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r2, 0x1 + movs r3, 0x10 + bl sub_80717A8 + strh r4, [r6, 0x4] + b _08078F80 + .align 2, 0 +_08078E78: .4byte sub_80792C8 +_08078E7C: .4byte 0x00007fde +_08078E80: + movs r0, 0 + bl sub_807185C + adds r3, r0, 0 + cmp r3, 0 + beq _08078E8E + b _08078FB6 +_08078E8E: + movs r0, 0x80 + lsls r0, 6 + movs r1, 0x4 + negs r1, r1 + ldr r2, _08078EA0 @ =0x00007fde + str r2, [sp] + str r3, [sp, 0x4] + str r3, [sp, 0x8] + b _08078F78 + .align 2, 0 +_08078EA0: .4byte 0x00007fde +_08078EA4: + ldrh r0, [r6, 0x4] + adds r0, 0x1 + strh r0, [r6, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bgt _08078EB4 + b _08078FB6 +_08078EB4: + movs r0, 0 + strh r0, [r6, 0x4] + movs r0, 0x80 + lsls r0, 6 + movs r1, 0x4 + negs r1, r1 + ldr r2, _08078ED0 @ =0x00007fde + str r2, [sp] + movs r2, 0 + str r2, [sp, 0x4] + str r2, [sp, 0x8] + movs r2, 0x1 + movs r3, 0x10 + b _08078F7C + .align 2, 0 +_08078ED0: .4byte 0x00007fde +_08078ED4: + movs r0, 0 + bl sub_807185C + adds r3, r0, 0 + cmp r3, 0 + bne _08078FB6 + movs r0, 0x80 + lsls r0, 6 + movs r1, 0x4 + negs r1, r1 + ldr r2, _08078EF4 @ =0x00007fde + str r2, [sp] + str r3, [sp, 0x4] + str r3, [sp, 0x8] + b _08078F78 + .align 2, 0 +_08078EF4: .4byte 0x00007fde +_08078EF8: + ldrh r0, [r6, 0x4] + adds r0, 0x1 + strh r0, [r6, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _08078FB6 + movs r0, 0 + strh r0, [r6, 0x4] + movs r0, 0x80 + lsls r0, 6 + movs r1, 0x3 + negs r1, r1 + ldr r2, _08078F20 @ =0x00007fde + str r2, [sp] + movs r2, 0 + str r2, [sp, 0x4] + str r2, [sp, 0x8] + movs r3, 0x10 + b _08078F7C + .align 2, 0 +_08078F20: .4byte 0x00007fde +_08078F24: + movs r0, 0 + bl sub_807185C + adds r7, r0, 0 + cmp r7, 0 + bne _08078FB6 + movs r0, 0x1 + strh r0, [r6, 0xA] + bl sub_80799F0 + movs r4, 0x80 + lsls r4, 9 + lsls r4, r0 + ldr r0, _08078F88 @ =0x00001fff + orrs r4, r0 + ldr r5, _08078F8C @ =0x00007fde + adds r0, r4, 0 + movs r1, 0x10 + adds r2, r5, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + ldr r0, _08078F90 @ =gUnknown_8EAD5E8 + ldr r1, _08078F94 @ =gUnknown_2037398 + movs r2, 0x10 + bl CpuSet + movs r0, 0x80 + lsls r0, 6 + str r5, [sp] + str r7, [sp, 0x4] + str r7, [sp, 0x8] + movs r1, 0x1 +_08078F78: + movs r2, 0xF + movs r3, 0 +_08078F7C: + bl sub_80717A8 +_08078F80: + ldrh r0, [r6, 0x2] + adds r0, 0x1 + strh r0, [r6, 0x2] + b _08078FB6 + .align 2, 0 +_08078F88: .4byte 0x00001fff +_08078F8C: .4byte 0x00007fde +_08078F90: .4byte gUnknown_8EAD5E8 +_08078F94: .4byte gUnknown_2037398 +_08078F98: + movs r0, 0 + bl sub_807185C + cmp r0, 0 + bne _08078FB6 + ldr r0, _08078FC0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08078FB6 + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8078C90 +_08078FB6: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078FC0: .4byte gUnknown_2037AB8 + thumb_func_end sub_8078DA4 + + thumb_func_start sub_8078FC4 +sub_8078FC4: @ 8078FC4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08078FD6 + cmp r0, 0x1 + beq _08079004 + b _08079094 +_08078FD6: + movs r0, 0x1 + bl sub_812B1F0 + ldr r0, _0807902C @ =sub_807941C + movs r1, 0 + bl sub_807741C + ldr r0, _08079030 @ =sub_8079840 + movs r1, 0x5 + bl sub_807741C + bl sub_80790A0 + bl sub_8079A40 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xC] + bl sub_812B484 + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] +_08079004: + ldr r2, _08079034 @ =gUnknown_30030F0 + ldrh r1, [r2, 0x2C] + movs r0, 0x46 + ands r0, r1 + cmp r0, 0x46 + bne _08079040 + ldrb r0, [r4, 0xC] + bl sub_8079A88 + ldr r0, _08079038 @ =sub_8078C24 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r0, _0807903C @ =sub_80796CC + bl sub_8000544 + b _08079094 + .align 2, 0 +_0807902C: .4byte sub_807941C +_08079030: .4byte sub_8079840 +_08079034: .4byte gUnknown_30030F0 +_08079038: .4byte sub_8078C24 +_0807903C: .4byte sub_80796CC +_08079040: + movs r0, 0x6 + ands r0, r1 + cmp r0, 0x6 + bne _0807906C + ldrb r0, [r4, 0xC] + bl sub_8079A88 + ldr r0, _08079064 @ =sub_8078C24 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r0, _08079068 @ =sub_80796E8 + bl sub_8000544 + b _08079094 + .align 2, 0 +_08079064: .4byte sub_8078C24 +_08079068: .4byte sub_80796E8 +_0807906C: + ldrh r1, [r2, 0x2E] + movs r0, 0x9 + ands r0, r1 + cmp r0, 0 + beq _08079080 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_8078C90 + b _08079094 +_08079080: + ldr r0, _0807909C @ =sub_8078BEC + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08079094 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8078C90 +_08079094: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807909C: .4byte sub_8078BEC + thumb_func_end sub_8078FC4 + + thumb_func_start sub_80790A0 +sub_80790A0: @ 80790A0 + push {lr} + movs r1, 0x80 + lsls r1, 8 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _080790C8 @ =0x00003f1f + movs r0, 0x4A + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0x81 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0xD + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_080790C8: .4byte 0x00003f1f + thumb_func_end sub_80790A0 + + thumb_func_start sub_80790CC +sub_80790CC: @ 80790CC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _080791B0 + lsls r0, 2 + ldr r1, _080790E4 @ =_080790E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080790E4: .4byte _080790E8 + .align 2, 0 +_080790E8: + .4byte _080790FC + .4byte _08079104 + .4byte _0807913C + .4byte _08079170 + .4byte _08079198 +_080790FC: + ldrb r0, [r4, 0xC] + bl sub_8079A88 + b _0807918C +_08079104: + ldr r0, _08079138 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080791B0 + ldrb r0, [r4, 0xC] + bl sub_8079AA8 + adds r5, r0, 0 + cmp r5, 0 + bne _080791B0 + movs r0, 0xA + bl sub_8071AB4 + movs r0, 0x1 + negs r0, r0 + str r5, [sp] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_8079528 + b _0807918C + .align 2, 0 +_08079138: .4byte gUnknown_2037AB8 +_0807913C: + bl sub_8071BA0 + lsls r0, 24 + cmp r0, 0 + beq _080791B0 + ldr r0, _08079168 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080791B0 + ldr r0, _0807916C @ =sub_807941C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + strh r5, [r4, 0x4] + b _0807918C + .align 2, 0 +_08079168: .4byte gUnknown_2037AB8 +_0807916C: .4byte sub_807941C +_08079170: + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080791B0 + ldr r0, _08079194 @ =sub_807941C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_0807918C: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + b _080791B0 + .align 2, 0 +_08079194: .4byte sub_807941C +_08079198: + bl sub_812B478 + ldr r0, _080791B8 @ =sub_8078C24 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + ldr r0, _080791BC @ =sub_80EC864 + bl sub_8000544 +_080791B0: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080791B8: .4byte sub_8078C24 +_080791BC: .4byte sub_80EC864 + thumb_func_end sub_80790CC + + thumb_func_start sub_80791C0 +sub_80791C0: @ 80791C0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08079204 + cmp r0, 0x1 + bgt _080791D8 + cmp r0, 0 + beq _080791DE + b _080792A6 +_080791D8: + cmp r0, 0x2 + beq _08079248 + b _080792A6 +_080791DE: + ldr r0, _08079200 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080792A6 + movs r0, 0x6 + movs r1, 0 + bl sub_8071DF0 + ldrb r0, [r4, 0xC] + bl sub_8079A88 + strh r5, [r4, 0x4] + b _08079238 + .align 2, 0 +_08079200: .4byte gUnknown_2037AB8 +_08079204: + ldrh r1, [r4, 0x4] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0x59 + bgt _08079214 + adds r0, r1, 0x1 + strh r0, [r4, 0x4] + b _080792A6 +_08079214: + ldrb r0, [r4, 0xC] + bl sub_8079AA8 + cmp r0, 0 + bne _080792A6 + ldr r0, _08079240 @ =0x0fffffff + ldr r1, _08079244 @ =0x00007fff + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_8079528 + movs r0, 0x4 + bl sub_8071DBC +_08079238: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + b _080792A6 + .align 2, 0 +_08079240: .4byte 0x0fffffff +_08079244: .4byte 0x00007fff +_08079248: + ldr r0, _080792B0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080792A6 + bl sub_8000564 + bl sub_804C058 + bl sub_8054A28 + bl sub_80D9750 + movs r0, 0 + bl sub_80DA4FC + ldr r0, _080792B4 @ =gUnknown_30053A0 + ldrh r0, [r0] + cmp r0, 0 + beq _08079276 + cmp r0, 0x2 + bne _0807927A +_08079276: + bl sub_8054A18 +_0807927A: + ldr r0, _080792B8 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x15] + lsls r0, 31 + lsrs r0, 31 + bl SetPokemonCryStereo + ldr r0, _080792BC @ =gHeap + movs r1, 0xE0 + lsls r1, 9 + bl sub_8002B80 + ldr r0, _080792C0 @ =sub_800C300 + bl sub_8000544 + ldr r0, _080792C4 @ =sub_8078C24 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 +_080792A6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080792B0: .4byte gUnknown_2037AB8 +_080792B4: .4byte gUnknown_30053A0 +_080792B8: .4byte gUnknown_300500C +_080792BC: .4byte gHeap +_080792C0: .4byte sub_800C300 +_080792C4: .4byte sub_8078C24 + thumb_func_end sub_80791C0 + + thumb_func_start sub_80792C8 +sub_80792C8: @ 80792C8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080792EC @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080792E2 + b _08079414 +_080792E2: + lsls r0, 2 + ldr r1, _080792F0 @ =_080792F4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080792EC: .4byte gUnknown_3005098 +_080792F0: .4byte _080792F4 + .align 2, 0 +_080792F4: + .4byte _0807930C + .4byte _08079344 + .4byte _08079368 + .4byte _0807937C + .4byte _080793BC + .4byte _08079404 +_0807930C: + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x37 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xA0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x80 + lsls r0, 7 + movs r1, 0 + movs r2, 0 + bl sub_80714D4 + b _080793AA +_08079344: + movs r1, 0xC0 + lsls r1, 1 + adds r0, r1, 0 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x4] + cmp r0, 0xEF + ble _08079364 + movs r0, 0xF0 + strh r0, [r4, 0x4] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_08079364: + ldrh r1, [r4, 0x4] + b _080793F6 +_08079368: + ldrh r0, [r4, 0x6] + adds r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + ble _08079414 + movs r0, 0 + strh r0, [r4, 0x6] + b _080793AA +_0807937C: + movs r0, 0x4A + movs r1, 0x3B + bl sub_8000A38 + ldr r1, _080793B4 @ =0x0000f0f0 + movs r0, 0x40 + bl sub_8000A38 + ldr r1, _080793B8 @ =0xffff1000 + movs r0, 0x2 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x80 + lsls r0, 8 + movs r1, 0 + movs r2, 0 + bl sub_80714D4 + movs r1, 0xF0 + lsls r1, 4 + adds r0, r1, 0 + strh r0, [r4, 0x2] +_080793AA: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _08079414 + .align 2, 0 +_080793B4: .4byte 0x0000f0f0 +_080793B8: .4byte 0xffff1000 +_080793BC: + ldr r1, _08079400 @ =0xfffffe80 + adds r0, r1, 0 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x4] + cmp r0, 0 + bgt _080793DA + movs r0, 0 + strh r0, [r4, 0x4] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_080793DA: + movs r0, 0x4 + ldrsh r1, [r4, r0] + negs r1, r1 + lsls r1, 8 + movs r0, 0x2 + movs r2, 0 + bl sub_8001B90 + ldrh r1, [r4, 0x4] + lsls r1, 8 + movs r0, 0xF0 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 +_080793F6: + movs r0, 0x40 + bl sub_8000A38 + b _08079414 + .align 2, 0 +_08079400: .4byte 0xfffffe80 +_08079404: + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 + adds r0, r5, 0 + bl sub_8077508 +_08079414: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80792C8 + + thumb_func_start sub_807941C +sub_807941C: @ 807941C + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _08079460 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08079444 + ldr r0, _08079464 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08079444 + movs r0, 0x1 + strh r0, [r5, 0x1C] +_08079444: + movs r3, 0x1C + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _08079468 + ldr r0, _08079464 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08079468 + adds r0, r2, 0 + bl sub_8077508 + b _08079510 + .align 2, 0 +_08079460: .4byte gUnknown_3005098 +_08079464: .4byte gUnknown_2037AB8 +_08079468: + movs r1, 0x2 + ldrsh r0, [r5, r1] + ldrh r2, [r5, 0x2] + cmp r0, 0 + bne _08079476 + movs r0, 0x3C + b _08079478 +_08079476: + movs r0, 0x1E +_08079478: + strh r0, [r5, 0x4] + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x4 + ldrsh r1, [r5, r3] + cmp r0, r1 + blt _08079510 + movs r0, 0 + strh r0, [r5] + movs r0, 0x1 + eors r0, r2 + strh r0, [r5, 0x2] + lsls r0, 16 + cmp r0, 0 + beq _080794CC + ldr r2, _080794C0 @ =gUnknown_20371F8 + ldr r4, _080794C4 @ =gUnknown_8EAE094 + ldr r1, _080794C8 @ =gUnknown_20375F8 + movs r0, 0xF1 + lsls r0, 1 + adds r1, r0 + adds r2, r0 + movs r3, 0x4 +_080794AC: + ldrh r0, [r4, 0xC] + strh r0, [r2] + ldrh r0, [r4, 0xC] + strh r0, [r1] + adds r1, 0x2 + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080794AC + b _080794F2 + .align 2, 0 +_080794C0: .4byte gUnknown_20371F8 +_080794C4: .4byte gUnknown_8EAE094 +_080794C8: .4byte gUnknown_20375F8 +_080794CC: + movs r3, 0 + ldr r2, _08079518 @ =gUnknown_20371F8 + ldr r0, _0807951C @ =gUnknown_8EAE094 + ldr r1, _08079520 @ =gUnknown_20375F8 + adds r4, r0, 0x2 + movs r0, 0xF1 + lsls r0, 1 + adds r1, r0 + adds r2, r0 +_080794DE: + ldrh r0, [r4] + strh r0, [r2] + ldrh r0, [r4] + strh r0, [r1] + adds r4, 0x2 + adds r1, 0x2 + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x4 + ble _080794DE +_080794F2: + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08079510 + movs r0, 0x80 + lsls r0, 8 + ldr r2, _08079524 @ =gUnknown_2037AB8 + ldrh r1, [r2, 0x4] + lsls r1, 21 + lsrs r1, 27 + ldrh r2, [r2, 0x6] + lsls r2, 17 + lsrs r2, 17 + bl sub_80714D4 +_08079510: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08079518: .4byte gUnknown_20371F8 +_0807951C: .4byte gUnknown_8EAE094 +_08079520: .4byte gUnknown_20375F8 +_08079524: .4byte gUnknown_2037AB8 + thumb_func_end sub_807941C + + thumb_func_start sub_8079528 +sub_8079528: @ 8079528 + push {lr} + ldr r0, _08079548 @ =sub_807941C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0807954C @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x26] + pop {r0} + bx r0 + .align 2, 0 +_08079548: .4byte sub_807941C +_0807954C: .4byte gUnknown_3005090 + thumb_func_end sub_8079528 + + thumb_func_start sub_8079550 +sub_8079550: @ 8079550 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r5, r0, 16 + asrs r4, r5, 16 + cmp r4, 0 + blt _08079574 + ldr r3, _08079618 @ =gUnknown_2038700 + lsls r2, r4, 1 + ldr r0, _0807961C @ =gUnknown_2039600 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r3 + movs r0, 0x10 + strh r0, [r2] +_08079574: + movs r3, 0 + mov r8, r5 + adds r6, r4, 0 + ldr r0, _08079618 @ =gUnknown_2038700 + mov r12, r0 + ldr r7, _0807961C @ =gUnknown_2039600 + movs r5, 0xF + lsls r2, r6, 1 + adds r4, r2, 0 +_08079586: + adds r0, r6, r3 + cmp r0, 0 + blt _0807959A + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r0, r4, r0 + add r0, r12 + strh r5, [r0] +_0807959A: + subs r0, r6, r3 + cmp r0, 0 + blt _080795AE + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r0, r2, r0 + add r0, r12 + strh r5, [r0] +_080795AE: + subs r5, 0x1 + subs r2, 0x2 + adds r4, 0x2 + adds r3, 0x1 + cmp r3, 0xF + ble _08079586 + mov r1, r8 + asrs r0, r1, 16 + adds r3, r0, 0 + adds r3, 0x10 + cmp r3, 0x9F + bgt _080795E6 + ldr r6, _08079618 @ =gUnknown_2038700 + ldr r5, _0807961C @ =gUnknown_2039600 + movs r4, 0 +_080795CC: + cmp r3, 0 + blt _080795E0 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + strh r4, [r2] +_080795E0: + adds r3, 0x1 + cmp r3, 0x9F + ble _080795CC +_080795E6: + mov r1, r8 + asrs r0, r1, 16 + adds r3, r0, 0 + subs r3, 0x10 + cmp r3, 0 + blt _0807960E + ldr r6, _08079618 @ =gUnknown_2038700 + ldr r5, _0807961C @ =gUnknown_2039600 + movs r4, 0 +_080795F8: + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + strh r4, [r2] + subs r3, 0x1 + cmp r3, 0 + bge _080795F8 +_0807960E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08079618: .4byte gUnknown_2038700 +_0807961C: .4byte gUnknown_2039600 + thumb_func_end sub_8079550 + + thumb_func_start sub_8079620 +sub_8079620: @ 8079620 + push {lr} + ldr r1, _08079644 @ =gUnknown_2039600 + ldrb r0, [r1, 0x15] + cmp r0, 0 + beq _0807962E + movs r0, 0x3 + strb r0, [r1, 0x15] +_0807962E: + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_08079644: .4byte gUnknown_2039600 + thumb_func_end sub_8079620 + + thumb_func_start sub_8079648 +sub_8079648: @ 8079648 + push {r4,lr} + ldr r0, _080796BC @ =sub_80792C8 + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0807965C + bl sub_8077508 +_0807965C: + bl sub_8071898 + bl sub_8070A84 + ldr r0, _080796C0 @ =gUnknown_8EAB6C4 + movs r2, 0xD0 + lsls r2, 1 + movs r1, 0 + bl sub_80703EC + ldr r0, _080796C4 @ =gUnknown_8EAD5E8 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + ldr r4, _080796C8 @ =gUnknown_8EAE094 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + bl sub_80F6C14 + movs r1, 0xE0 + lsls r1, 8 + movs r0, 0 + bl sub_8000B14 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080796BC: .4byte sub_80792C8 +_080796C0: .4byte gUnknown_8EAB6C4 +_080796C4: .4byte gUnknown_8EAD5E8 +_080796C8: .4byte gUnknown_8EAE094 + thumb_func_end sub_8079648 + + thumb_func_start sub_80796CC +sub_80796CC: @ 80796CC + push {lr} + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080796DE + ldr r0, _080796E4 @ =sub_80F55A0 + bl sub_8000544 +_080796DE: + pop {r0} + bx r0 + .align 2, 0 +_080796E4: .4byte sub_80F55A0 + thumb_func_end sub_80796CC + + thumb_func_start sub_80796E8 +sub_80796E8: @ 80796E8 + push {lr} + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _080796FE + bl m4aMPlayAllStop + ldr r0, _08079704 @ =sub_815F74C + bl sub_8000544 +_080796FE: + pop {r0} + bx r0 + .align 2, 0 +_08079704: .4byte sub_815F74C + thumb_func_end sub_80796E8 + + thumb_func_start sub_8079708 +sub_8079708: @ 8079708 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _08079728 @ =gUnknown_83BFB9C +_0807970E: + adds r0, r4, 0 + bl sub_800EBCC + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x3 + bls _0807970E + ldr r0, _0807972C @ =gUnknown_83BFBBC + bl sub_8008974 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08079728: .4byte gUnknown_83BFB9C +_0807972C: .4byte gUnknown_83BFBBC + thumb_func_end sub_8079708 + + thumb_func_start sub_8079730 +sub_8079730: @ 8079730 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x2E + ldrh r0, [r4, 0x2E] + ldrh r1, [r2, 0x2] + subs r0, r1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + movs r1, 0x8 + negs r1, r1 + cmp r0, r1 + blt _08079774 + ldrh r0, [r2, 0x6] + ldrh r1, [r2, 0x4] + adds r0, r1 + strh r0, [r2, 0x4] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x22] + subs r0, 0x10 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB8 + bhi _08079774 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0807977C +_08079774: + adds r0, r4, 0 + bl sub_8007280 + b _080797A6 +_0807977C: + ldrh r1, [r2, 0xE] + movs r3, 0xE + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080797A6 + subs r0, r1, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _080797A6 + adds r0, r4, 0 + movs r1, 0 + bl sub_800838C + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080797A6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8079730 + + thumb_func_start sub_80797AC +sub_80797AC: @ 80797AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r5, r1, 0 + mov r8, r2 + adds r7, r3, 0 + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _080797C8 + ldr r0, _080797C4 @ =gUnknown_83BFB04 + b _080797CA + .align 2, 0 +_080797C4: .4byte gUnknown_83BFB04 +_080797C8: + ldr r0, _08079828 @ =gUnknown_83BFB1C +_080797CA: + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08079834 + ldr r0, _0807982C @ =gUnknown_202063C + mov r12, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r6, r0, 2 + mov r1, r12 + adds r2, r6, r1 + lsls r0, r4, 4 + movs r1, 0 + strh r0, [r2, 0x2E] + mov r0, r8 + strh r0, [r2, 0x30] + lsls r0, r5, 4 + strh r0, [r2, 0x32] + strh r7, [r2, 0x34] + strh r1, [r2, 0x36] + mov r3, r8 + muls r3, r7 + adds r0, r3, 0 + cmp r3, 0 + bge _0807980C + adds r0, 0xF +_0807980C: + asrs r0, 4 + lsls r0, 4 + subs r0, r3, r0 + strh r0, [r2, 0x38] + mov r1, sp + ldrh r1, [r1, 0x18] + strh r1, [r2, 0x3A] + mov r0, r12 + adds r0, 0x1C + adds r0, r6, r0 + ldr r1, _08079830 @ =sub_8079730 + str r1, [r0] + movs r0, 0x1 + b _08079836 + .align 2, 0 +_08079828: .4byte gUnknown_83BFB1C +_0807982C: .4byte gUnknown_202063C +_08079830: .4byte sub_8079730 +_08079834: + movs r0, 0 +_08079836: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80797AC + + thumb_func_start sub_8079840 +sub_8079840: @ 8079840 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08079868 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _0807986C + cmp r0, 0x1 + beq _08079884 + b _0807998A + .align 2, 0 +_08079868: .4byte gUnknown_3005098 +_0807986C: + ldr r2, _08079880 @ =0x00007878 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_807999C + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + b _0807998A + .align 2, 0 +_08079880: .4byte 0x00007878 +_08079884: + ldrh r0, [r6, 0x2] + adds r0, 0x1 + strh r0, [r6, 0x2] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x4 + ldrsh r1, [r6, r2] + cmp r0, r1 + blt _0807998A + movs r0, 0 + strh r0, [r6, 0x2] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + movs r0, 0x12 + strh r0, [r6, 0x4] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + subs r1, 0x2 + mov r8, r1 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + lsls r0, 16 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + lsrs r1, 16 + adds r7, r1, 0 + subs r7, 0x10 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x74 + mov r9, r0 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + movs r2, 0 + lsls r0, 16 + movs r1, 0xF0 + lsls r1, 12 + ands r1, r0 + lsrs r1, 16 + cmp r1, 0x7 + bls _0807991C + movs r2, 0x1 +_0807991C: + str r2, [sp] + adds r0, r4, 0 + mov r1, r9 + mov r2, r8 + adds r3, r7, 0 + bl sub_80797AC + movs r4, 0 +_0807992C: + ldr r1, _08079998 @ =gUnknown_83BFBD4 + adds r1, r4, r1 + movs r2, 0xA + ldrsh r0, [r6, r2] + ldrb r1, [r1] + adds r0, r1 + movs r1, 0x1 + str r1, [sp] + mov r1, r9 + mov r2, r8 + adds r3, r7, 0 + bl sub_80797AC + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + subs r1, 0x2 + mov r8, r1 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_80799B4 + lsls r0, 16 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + lsrs r1, 16 + adds r7, r1, 0 + subs r7, 0x10 + adds r4, 0x1 + cmp r4, 0xE + ble _0807992C + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _0807998A + movs r0, 0 + strh r0, [r6, 0xA] +_0807998A: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08079998: .4byte gUnknown_83BFBD4 + thumb_func_end sub_8079840 + + thumb_func_start sub_807999C +sub_807999C: @ 807999C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + bl sub_80776E8 + pop {r0} + bx r0 + thumb_func_end sub_807999C + + thumb_func_start sub_80799B4 +sub_80799B4: @ 80799B4 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8077720 + adds r6, r0, 0 + ldr r0, _080799E8 @ =0x41c64e6d + muls r0, r6 + ldr r1, _080799EC @ =0x00006073 + adds r6, r0, r1 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80776E8 + lsrs r0, r6, 16 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080799E8: .4byte 0x41c64e6d +_080799EC: .4byte 0x00006073 + thumb_func_end sub_80799B4 + + thumb_func_start sub_80799F0 +sub_80799F0: @ 80799F0 + push {lr} + ldr r0, _08079A0C @ =gUnknown_83BFB3C + movs r1, 0x18 + movs r2, 0x90 + movs r3, 0 + bl sub_8006F8C + movs r0, 0x2 + bl sub_80089E8 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08079A0C: .4byte gUnknown_83BFB3C + thumb_func_end sub_80799F0 + + thumb_func_start sub_8079A10 +sub_8079A10: @ 8079A10 + push {lr} + cmp r0, 0 + beq _08079A38 + movs r0, 0x2 + bl sub_80089E8 + adds r1, r0, 0 + lsls r1, 24 + ldr r0, _08079A34 @ =gUnknown_8EAE488 + lsrs r1, 4 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + b _08079A3C + .align 2, 0 +_08079A34: .4byte gUnknown_8EAE488 +_08079A38: + bl sub_80799F0 +_08079A3C: + pop {r0} + bx r0 + thumb_func_end sub_8079A10 + + thumb_func_start sub_8079A40 +sub_8079A40: @ 8079A40 + push {r4,lr} + ldr r0, _08079A7C @ =gUnknown_83BFB5C + movs r1, 0x20 + negs r1, r1 + movs r2, 0x1B + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + adds r4, r1, 0 + cmp r1, 0x40 + beq _08079A74 + ldr r3, _08079A80 @ =gUnknown_202063C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _08079A84 @ =sub_8079AD8 + str r2, [r1] + adds r0, r3 + movs r1, 0x87 + lsls r1, 2 + strh r1, [r0, 0x30] +_08079A74: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08079A7C: .4byte gUnknown_83BFB5C +_08079A80: .4byte gUnknown_202063C +_08079A84: .4byte sub_8079AD8 + thumb_func_end sub_8079A40 + + thumb_func_start sub_8079A88 +sub_8079A88: @ 8079A88 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _08079AA0 + ldr r0, _08079AA4 @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x32] +_08079AA0: + pop {r0} + bx r0 + .align 2, 0 +_08079AA4: .4byte gUnknown_202063C + thumb_func_end sub_8079A88 + + thumb_func_start sub_8079AA8 +sub_8079AA8: @ 8079AA8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + bne _08079AB6 + movs r0, 0 + b _08079ACE +_08079AB6: + ldr r1, _08079AD4 @ =gUnknown_202063C + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r2, 0x2E + ldrsh r1, [r0, r2] + movs r0, 0x2 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_08079ACE: + pop {r1} + bx r1 + .align 2, 0 +_08079AD4: .4byte gUnknown_202063C + thumb_func_end sub_8079AA8 + + thumb_func_start sub_8079AD8 +sub_8079AD8: @ 8079AD8 + push {lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + beq _08079B24 + cmp r0, 0x1 + bgt _08079B74 + cmp r0, 0 + bne _08079B74 + movs r1, 0x32 + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _08079B04 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x2 + strh r0, [r2, 0x2E] +_08079B04: + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _08079B74 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r3] + movs r0, 0x1 + strh r0, [r2, 0x2E] + b _08079B74 +_08079B24: + ldrh r0, [r2, 0x20] + adds r0, 0x9 + strh r0, [r2, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x43 + bne _08079B38 + ldrh r0, [r2, 0x22] + subs r0, 0x7 + strh r0, [r2, 0x22] +_08079B38: + movs r0, 0x20 + ldrsh r1, [r2, r0] + cmp r1, 0x94 + bne _08079B46 + ldrh r0, [r2, 0x22] + adds r0, 0x7 + strh r0, [r2, 0x22] +_08079B46: + movs r0, 0x88 + lsls r0, 1 + cmp r1, r0 + ble _08079B74 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x32 + ldrsh r1, [r2, r0] + cmp r1, 0 + beq _08079B68 + movs r0, 0x2 + strh r0, [r2, 0x2E] + b _08079B74 +_08079B68: + ldr r0, _08079B78 @ =0x0000ffe0 + strh r0, [r2, 0x20] + movs r0, 0x87 + lsls r0, 2 + strh r0, [r2, 0x30] + strh r1, [r2, 0x2E] +_08079B74: + pop {r0} + bx r0 + .align 2, 0 +_08079B78: .4byte 0x0000ffe0 + thumb_func_end sub_8079AD8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/tm_case.s b/asm/tm_case.s new file mode 100644 index 000000000..096d3740a --- /dev/null +++ b/asm/tm_case.s @@ -0,0 +1,3999 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81317F8 +sub_81317F8: @ 81317F8 + push {r4-r7,lr} + adds r7, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r6, r2, 24 + bl sub_8131A8C + ldr r4, _08131854 @ =gUnknown_203B118 + movs r0, 0x1C + bl sub_8002B9C + str r0, [r4] + movs r1, 0 + str r1, [r0] + movs r1, 0xFF + strb r1, [r0, 0x8] + ldr r1, [r4] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x7] + cmp r5, 0x5 + beq _0813182A + ldr r0, _08131858 @ =gUnknown_203B10C + strb r5, [r0, 0x4] +_0813182A: + cmp r7, 0 + beq _08131832 + ldr r0, _08131858 @ =gUnknown_203B10C + str r7, [r0] +_08131832: + cmp r6, 0xFF + beq _0813183A + ldr r0, _08131858 @ =gUnknown_203B10C + strb r6, [r0, 0x5] +_0813183A: + ldr r2, _0813185C @ =gUnknown_3003E50 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r0, _08131860 @ =sub_8131894 + bl sub_8000544 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131854: .4byte gUnknown_203B118 +_08131858: .4byte gUnknown_203B10C +_0813185C: .4byte gUnknown_3003E50 +_08131860: .4byte sub_8131894 + thumb_func_end sub_81317F8 + + thumb_func_start sub_8131864 +sub_8131864: @ 8131864 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80F67B8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8131864 + + thumb_func_start sub_8131880 +sub_8131880: @ 8131880 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_8131880 + + thumb_func_start sub_8131894 +sub_8131894: @ 8131894 + push {lr} +_08131896: + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081318BA + bl sub_81318C0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081318BA + bl sub_80BF708 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08131896 +_081318BA: + pop {r0} + bx r0 + thumb_func_end sub_8131894 + + thumb_func_start sub_81318C0 +sub_81318C0: @ 81318C0 + push {r4,lr} + sub sp, 0x4 + ldr r0, _081318E0 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x12 + bls _081318D4 + b _08131A68 +_081318D4: + lsls r0, 2 + ldr r1, _081318E4 @ =_081318E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081318E0: .4byte gUnknown_30030F0 +_081318E4: .4byte _081318E8 + .align 2, 0 +_081318E8: + .4byte _08131934 + .4byte _0813193E + .4byte _08131944 + .4byte _0813194A + .4byte _08131950 + .4byte _08131956 + .4byte _0813195C + .4byte _08131970 + .4byte _08131976 + .4byte _08131984 + .4byte _08131990 + .4byte _0813199E + .4byte _081319A4 + .4byte _081319AE + .4byte _081319B4 + .4byte _08131A04 + .4byte _08131A0A + .4byte _08131A34 + .4byte _08131A42 +_08131934: + bl sub_80BF768 + bl sub_80F6790 + b _08131A52 +_0813193E: + bl sub_8087E64 + b _08131A52 +_08131944: + bl sub_80088F0 + b _08131A52 +_0813194A: + bl sub_8070528 + b _08131A52 +_08131950: + bl sub_8006B10 + b _08131A52 +_08131956: + bl sub_80773BC + b _08131A52 +_0813195C: + bl sub_8131AB8 + ldr r0, _0813196C @ =gUnknown_203B118 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x12] + b _08131A52 + .align 2, 0 +_0813196C: .4byte gUnknown_203B118 +_08131970: + bl sub_8133244 + b _08131A52 +_08131976: + bl sub_8131B20 + lsls r0, 24 + cmp r0, 0 + bne _08131982 + b _08131A80 +_08131982: + b _08131A52 +_08131984: + ldr r0, _0813198C @ =gUnknown_20398A4 + bl sub_809A5E4 + b _08131A52 + .align 2, 0 +_0813198C: .4byte gUnknown_20398A4 +_08131990: + bl sub_81320BC + bl sub_8132120 + bl sub_8132170 + b _08131A52 +_0813199E: + bl sub_8133404 + b _08131A52 +_081319A4: + bl sub_8131C10 + bl sub_8131C50 + b _08131A52 +_081319AE: + bl sub_81333C4 + b _08131A52 +_081319B4: + ldr r0, _081319C0 @ =gUnknown_203B10C + ldrb r0, [r0, 0x4] + cmp r0, 0x4 + bne _081319C8 + ldr r0, _081319C4 @ =sub_8132F20 + b _081319CA + .align 2, 0 +_081319C0: .4byte gUnknown_203B10C +_081319C4: .4byte sub_8132F20 +_081319C8: + ldr r0, _081319F4 @ =sub_81322D4 +_081319CA: + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081319F8 @ =gUnknown_3005E70 + ldr r2, _081319FC @ =gUnknown_203B10C + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0x8] + bl sub_8106FF8 + ldr r2, _08131A00 @ =gUnknown_3005090 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x8] + b _08131A52 + .align 2, 0 +_081319F4: .4byte sub_81322D4 +_081319F8: .4byte gUnknown_3005E70 +_081319FC: .4byte gUnknown_203B10C +_08131A00: .4byte gUnknown_3005090 +_08131A04: + bl sub_8132018 + b _08131A52 +_08131A0A: + ldr r0, _08131A2C @ =gUnknown_203B10C + ldrh r1, [r0, 0x8] + ldrh r0, [r0, 0xA] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_813368C + ldr r1, _08131A30 @ =gUnknown_203B118 + ldr r1, [r1] + strb r0, [r1, 0x4] + b _08131A52 + .align 2, 0 +_08131A2C: .4byte gUnknown_203B10C +_08131A30: .4byte gUnknown_203B118 +_08131A34: + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _08131A52 +_08131A42: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 +_08131A52: + ldr r1, _08131A64 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08131A80 + .align 2, 0 +_08131A64: .4byte gUnknown_30030F0 +_08131A68: + ldr r0, _08131A78 @ =sub_8131880 + bl sub_80006F4 + ldr r0, _08131A7C @ =sub_8131864 + bl sub_8000544 + movs r0, 0x1 + b _08131A82 + .align 2, 0 +_08131A78: .4byte sub_8131880 +_08131A7C: .4byte sub_8131864 +_08131A80: + movs r0, 0 +_08131A82: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81318C0 + + thumb_func_start sub_8131A8C +sub_8131A8C: @ 8131A8C + ldr r0, _08131AA4 @ =gUnknown_203B118 + movs r1, 0 + str r1, [r0] + ldr r0, _08131AA8 @ =gUnknown_203B120 + str r1, [r0] + ldr r0, _08131AAC @ =gUnknown_203B124 + str r1, [r0] + ldr r0, _08131AB0 @ =gUnknown_203B128 + str r1, [r0] + ldr r0, _08131AB4 @ =gUnknown_203B12C + str r1, [r0] + bx lr + .align 2, 0 +_08131AA4: .4byte gUnknown_203B118 +_08131AA8: .4byte gUnknown_203B120 +_08131AAC: .4byte gUnknown_203B124 +_08131AB0: .4byte gUnknown_203B128 +_08131AB4: .4byte gUnknown_203B12C + thumb_func_end sub_8131A8C + + thumb_func_start sub_8131AB8 +sub_8131AB8: @ 8131AB8 + push {r4,lr} + bl sub_80BF7C8 + ldr r4, _08131B18 @ =gUnknown_203B120 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002BB0 + str r0, [r4] + movs r0, 0 + bl sub_8001618 + ldr r1, _08131B1C @ =gUnknown_8463134 + movs r0, 0 + movs r2, 0x3 + bl sub_8001658 + ldr r1, [r4] + movs r0, 0x2 + bl sub_8001FA0 + movs r0, 0x1 + bl sub_80F67A4 + movs r0, 0x2 + bl sub_80F67A4 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08131B18: .4byte gUnknown_203B120 +_08131B1C: .4byte gUnknown_8463134 + thumb_func_end sub_8131AB8 + + thumb_func_start sub_8131B20 +sub_8131B20: @ 8131B20 + push {r4,lr} + sub sp, 0x4 + ldr r4, _08131B3C @ =gUnknown_203B118 + ldr r0, [r4] + movs r1, 0x12 + ldrsh r0, [r0, r1] + cmp r0, 0x4 + bhi _08131BF8 + lsls r0, 2 + ldr r1, _08131B40 @ =_08131B44 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08131B3C: .4byte gUnknown_203B118 +_08131B40: .4byte _08131B44 + .align 2, 0 +_08131B44: + .4byte _08131B58 + .4byte _08131B74 + .4byte _08131B94 + .4byte _08131BAC + .4byte _08131BDC +_08131B58: + bl sub_80F6808 + ldr r1, _08131B70 @ =gUnknown_8E845D8 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _08131BE2 + .align 2, 0 +_08131B70: .4byte gUnknown_8E845D8 +_08131B74: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08131C06 + ldr r0, _08131B8C @ =gUnknown_8E84A24 + ldr r1, _08131B90 @ =gUnknown_203B120 + ldr r1, [r1] + bl sub_800EBB4 + b _08131BE2 + .align 2, 0 +_08131B8C: .4byte gUnknown_8E84A24 +_08131B90: .4byte gUnknown_203B120 +_08131B94: + ldr r4, _08131BA8 @ =gUnknown_8E84B70 + movs r0, 0x1 + bl sub_8002008 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_800EBB4 + b _08131BE2 + .align 2, 0 +_08131BA8: .4byte gUnknown_8E84B70 +_08131BAC: + ldr r0, _08131BC4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _08131BCC + ldr r0, _08131BC8 @ =gUnknown_8E84CB0 + movs r1, 0 + movs r2, 0x80 + bl sub_80703A8 + b _08131BE2 + .align 2, 0 +_08131BC4: .4byte gUnknown_300500C +_08131BC8: .4byte gUnknown_8E84CB0 +_08131BCC: + ldr r0, _08131BD8 @ =gUnknown_8E84D20 + movs r1, 0 + movs r2, 0x80 + bl sub_80703A8 + b _08131BE2 + .align 2, 0 +_08131BD8: .4byte gUnknown_8E84D20 +_08131BDC: + ldr r0, _08131BF0 @ =gUnknown_8463218 + bl sub_800EBCC +_08131BE2: + ldr r0, _08131BF4 @ =gUnknown_203B118 + ldr r1, [r0] + ldrh r0, [r1, 0x12] + adds r0, 0x1 + strh r0, [r1, 0x12] + b _08131C06 + .align 2, 0 +_08131BF0: .4byte gUnknown_8463218 +_08131BF4: .4byte gUnknown_203B118 +_08131BF8: + bl sub_81338A8 + ldr r1, [r4] + movs r0, 0 + strh r0, [r1, 0x12] + movs r0, 0x1 + b _08131C08 +_08131C06: + movs r0, 0 +_08131C08: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8131B20 + + thumb_func_start sub_8131C10 +sub_8131C10: @ 8131C10 + push {r4,lr} + ldr r0, _08131C40 @ =gUnknown_20398A4 + ldr r4, _08131C44 @ =gUnknown_203B124 + ldrb r0, [r0, 0x4] + adds r0, 0x1 + lsls r0, 3 + bl sub_8002B9C + str r0, [r4] + ldr r4, _08131C48 @ =gUnknown_203B128 + ldr r0, _08131C4C @ =gUnknown_203B118 + ldr r0, [r0] + ldrb r1, [r0, 0x6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r1 + bl sub_8002B9C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08131C40: .4byte gUnknown_20398A4 +_08131C44: .4byte gUnknown_203B124 +_08131C48: .4byte gUnknown_203B128 +_08131C4C: .4byte gUnknown_203B118 + thumb_func_end sub_8131C10 + + thumb_func_start sub_8131C50 +sub_8131C50: @ 8131C50 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08131D28 @ =gUnknown_20398A4 + mov r8, r0 + movs r6, 0 + ldr r0, _08131D2C @ =gUnknown_203B118 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + cmp r6, r0 + bcs _08131CA0 + ldr r7, _08131D30 @ =gUnknown_203B128 +_08131C68: + lsls r5, r6, 3 + subs r4, r5, r6 + lsls r4, 2 + adds r4, r6 + ldr r0, [r7] + adds r0, r4 + mov r1, r8 + ldr r2, [r1] + lsls r1, r6, 2 + adds r1, r2 + ldrh r1, [r1] + bl sub_8131D48 + ldr r0, _08131D34 @ =gUnknown_203B124 + ldr r0, [r0] + adds r5, r0 + ldr r0, [r7] + adds r0, r4 + str r0, [r5] + str r6, [r5, 0x4] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _08131D2C @ =gUnknown_203B118 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + cmp r6, r0 + bcc _08131C68 +_08131CA0: + ldr r0, _08131D34 @ =gUnknown_203B124 + ldr r3, [r0] + lsls r0, r6, 3 + adds r0, r3 + ldr r1, _08131D38 @ =gUnknown_84166DB + str r1, [r0] + movs r1, 0x2 + negs r1, r1 + str r1, [r0, 0x4] + ldr r2, _08131D3C @ =gUnknown_3005E70 + str r3, [r2] + ldr r0, _08131D2C @ =gUnknown_203B118 + ldr r3, [r0] + ldrb r0, [r3, 0x6] + adds r0, 0x1 + movs r1, 0 + strh r0, [r2, 0xC] + strb r1, [r2, 0x10] + strb r1, [r2, 0x11] + movs r0, 0x8 + strb r0, [r2, 0x12] + strb r1, [r2, 0x13] + ldrb r0, [r2, 0x16] + movs r4, 0x8 + negs r4, r4 + ands r4, r0 + movs r0, 0x39 + negs r0, r0 + ands r4, r0 + movs r0, 0x10 + orrs r4, r0 + strb r4, [r2, 0x16] + ldrb r1, [r2, 0x14] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r5, 0x2 + orrs r0, r5 + strb r0, [r2, 0x14] + ldrb r1, [r3, 0x5] + strh r1, [r2, 0xE] + ldrb r1, [r2, 0x17] + movs r3, 0x40 + negs r3, r3 + ands r3, r1 + orrs r3, r5 + movs r1, 0xF + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0x14] + movs r0, 0x30 + strb r0, [r2, 0x15] + ldr r0, _08131D40 @ =sub_8131E18 + str r0, [r2, 0x4] + ldr r0, _08131D44 @ =sub_8131E68 + str r0, [r2, 0x8] + movs r0, 0x3F + ands r3, r0 + strb r3, [r2, 0x17] + ands r4, r0 + strb r4, [r2, 0x16] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131D28: .4byte gUnknown_20398A4 +_08131D2C: .4byte gUnknown_203B118 +_08131D30: .4byte gUnknown_203B128 +_08131D34: .4byte gUnknown_203B124 +_08131D38: .4byte gUnknown_84166DB +_08131D3C: .4byte gUnknown_3005E70 +_08131D40: .4byte sub_8131E18 +_08131D44: .4byte sub_8131E68 + thumb_func_end sub_8131C50 + + thumb_func_start sub_8131D48 +sub_8131D48: @ 8131D48 + push {r4-r7,lr} + adds r7, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r5, _08131D8C @ =gUnknown_2021D18 + ldr r1, _08131D90 @ =gUnknown_84166FF + adds r0, r5, 0 + bl sub_8008D84 + movs r0, 0xA9 + lsls r0, 1 + cmp r6, r0 + bls _08131DA4 + ldr r1, _08131D94 @ =gUnknown_8463178 + adds r0, r5, 0 + bl sub_8008DA4 + ldr r1, _08131D98 @ =gUnknown_8416226 + adds r0, r5, 0 + bl sub_8008DA4 + ldr r4, _08131D9C @ =gUnknown_2021CD0 + ldr r0, _08131DA0 @ =0xfffffeae + adds r1, r6, r0 + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8008E78 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 + b _08131DC4 + .align 2, 0 +_08131D8C: .4byte gUnknown_2021D18 +_08131D90: .4byte gUnknown_84166FF +_08131D94: .4byte gUnknown_8463178 +_08131D98: .4byte gUnknown_8416226 +_08131D9C: .4byte gUnknown_2021CD0 +_08131DA0: .4byte 0xfffffeae +_08131DA4: + ldr r1, _08131DFC @ =gUnknown_8416226 + adds r0, r5, 0 + bl sub_8008DA4 + ldr r4, _08131E00 @ =gUnknown_2021CD0 + ldr r0, _08131E04 @ =0xfffffee0 + adds r1, r6, r0 + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008DA4 +_08131DC4: + ldr r4, _08131E08 @ =gUnknown_2021D18 + ldr r1, _08131E0C @ =gUnknown_846317C + adds r0, r4, 0 + bl sub_8008DA4 + ldr r1, _08131E10 @ =gUnknown_8416703 + adds r0, r4, 0 + bl sub_8008DA4 + adds r0, r6, 0 + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + muls r1, r0 + ldr r0, _08131E14 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r4, 0 + bl sub_8008DA4 + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8008D84 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08131DFC: .4byte gUnknown_8416226 +_08131E00: .4byte gUnknown_2021CD0 +_08131E04: .4byte 0xfffffee0 +_08131E08: .4byte gUnknown_2021D18 +_08131E0C: .4byte gUnknown_846317C +_08131E10: .4byte gUnknown_8416703 +_08131E14: .4byte gUnknown_8247094 + thumb_func_end sub_8131D48 + + thumb_func_start sub_8131E18 +sub_8131E18: @ 8131E18 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + bne _08131E2C + movs r5, 0 + b _08131E3A +_08131E2C: + lsls r1, r4, 16 + lsrs r1, 16 + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r5, r0, 16 +_08131E3A: + cmp r6, 0x1 + beq _08131E50 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08131E64 @ =gUnknown_203B118 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + adds r1, r5, 0 + bl sub_81337E4 +_08131E50: + adds r0, r4, 0 + bl sub_8131F0C + adds r0, r5, 0 + bl sub_8133444 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08131E64: .4byte gUnknown_203B118 + thumb_func_end sub_8131E18 + + thumb_func_start sub_8131E68 +sub_8131E68: @ 8131E68 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r7, r9 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + mov r4, r8 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _08131EFE + lsls r0, r1, 16 + lsrs r6, r0, 16 + movs r0, 0x4 + adds r1, r6, 0 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A990 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _08131EF4 + ldr r4, _08131EE8 @ =gUnknown_2021CD0 + movs r0, 0x4 + adds r1, r6, 0 + bl sub_809A7B4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _08131EEC @ =gUnknown_2021D18 + ldr r1, _08131EF0 @ =gUnknown_84162B9 + adds r0, r4, 0 + bl sub_8008FCC + mov r0, r8 + str r0, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x1 + str r0, [sp, 0x10] + mov r0, r9 + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x7E + bl sub_81332EC + b _08131EFE + .align 2, 0 +_08131EE8: .4byte gUnknown_2021CD0 +_08131EEC: .4byte gUnknown_2021D18 +_08131EF0: .4byte gUnknown_84162B9 +_08131EF4: + adds r0, r7, 0 + movs r1, 0x8 + adds r2, r4, 0 + bl sub_81335B0 +_08131EFE: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8131E68 + + thumb_func_start sub_8131F0C +sub_8131F0C: @ 8131F0C + push {r4,lr} + sub sp, 0x14 + adds r1, r0, 0 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _08131F30 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A96C + adds r4, r0, 0 + b _08131F32 +_08131F30: + ldr r4, _08131F60 @ =gUnknown_84166E1 +_08131F32: + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x3 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x1 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_81332EC + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08131F60: .4byte gUnknown_84166E1 + thumb_func_end sub_8131F0C + + thumb_func_start sub_8131F64 +sub_8131F64: @ 8131F64 + push {lr} + sub sp, 0x8 + movs r1, 0x8 + str r1, [sp] + lsls r0, 1 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0xC + movs r3, 0x1E + bl sub_80F6B08 + movs r0, 0x2 + bl sub_80F67A4 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_8131F64 + + thumb_func_start sub_8131F90 +sub_8131F90: @ 8131F90 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_8107300 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_8131FB0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8131F90 + + thumb_func_start sub_8131FB0 +sub_8131FB0: @ 8131FB0 + push {r4,r5,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0xFF + bne _08131FF4 + movs r0, 0x2 + movs r1, 0 + bl sub_80F79D8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_8004378 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + b _0813200A +_08131FF4: + ldr r2, _08132014 @ =gUnknown_841623B + str r5, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r1, 0x2 + movs r3, 0 + bl sub_81332EC +_0813200A: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08132014: .4byte gUnknown_841623B + thumb_func_end sub_8131FB0 + + thumb_func_start sub_8132018 +sub_8132018: @ 8132018 + push {r4,lr} + sub sp, 0x10 + ldr r4, _0813204C @ =gUnknown_203B118 + ldr r1, [r4] + ldrb r0, [r1, 0x6] + ldrb r1, [r1, 0x5] + subs r0, r1 + adds r0, 0x1 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + ldr r0, _08132050 @ =gUnknown_203B116 + str r0, [sp, 0xC] + movs r0, 0x2 + movs r1, 0xA0 + movs r2, 0x8 + movs r3, 0x58 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813204C: .4byte gUnknown_203B118 +_08132050: .4byte gUnknown_203B116 + thumb_func_end sub_8132018 + + thumb_func_start sub_8132054 +sub_8132054: @ 8132054 + push {r4,lr} + sub sp, 0x10 + ldr r4, _08132088 @ =gUnknown_203B118 + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0xA] + movs r0, 0x2 + str r0, [sp] + movs r0, 0x6E + str r0, [sp, 0x4] + str r0, [sp, 0x8] + adds r1, 0xA + str r1, [sp, 0xC] + movs r0, 0x2 + movs r1, 0x98 + movs r2, 0x48 + movs r3, 0x68 + bl sub_8133B40 + ldr r1, [r4] + strb r0, [r1, 0x8] + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08132088: .4byte gUnknown_203B118 + thumb_func_end sub_8132054 + + thumb_func_start sub_813208C +sub_813208C: @ 813208C + push {r4,lr} + ldr r4, _081320A8 @ =gUnknown_203B118 + ldr r1, [r4] + ldrb r0, [r1, 0x8] + cmp r0, 0xFF + beq _081320A2 + bl sub_8133C30 + ldr r1, [r4] + movs r0, 0xFF + strb r0, [r1, 0x8] +_081320A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081320A8: .4byte gUnknown_203B118 + thumb_func_end sub_813208C + + thumb_func_start sub_81320AC +sub_81320AC: @ 81320AC + ldr r1, _081320B8 @ =gUnknown_203B10C + movs r0, 0 + strh r0, [r1, 0x8] + strh r0, [r1, 0xA] + bx lr + .align 2, 0 +_081320B8: .4byte gUnknown_203B10C + thumb_func_end sub_81320AC + + thumb_func_start sub_81320BC +sub_81320BC: @ 81320BC + push {r4,lr} + ldr r4, _08132118 @ =gUnknown_20398A4 + ldr r0, [r4] + ldrb r1, [r4, 0x4] + bl sub_809A584 + ldr r3, _0813211C @ =gUnknown_203B118 + ldr r1, [r3] + movs r0, 0 + strb r0, [r1, 0x6] + movs r2, 0 + ldrb r0, [r4, 0x4] + cmp r2, r0 + bcs _08132100 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, 0 + beq _08132100 +_081320E0: + ldr r0, [r3] + ldrb r1, [r0, 0x6] + adds r1, 0x1 + strb r1, [r0, 0x6] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + ldrb r0, [r4, 0x4] + cmp r2, r0 + bcs _08132100 + ldr r0, [r4] + lsls r1, r2, 2 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _081320E0 +_08132100: + ldr r0, _0813211C @ =gUnknown_203B118 + ldr r1, [r0] + ldrb r0, [r1, 0x6] + adds r0, 0x1 + cmp r0, 0x5 + ble _0813210E + movs r0, 0x5 +_0813210E: + strb r0, [r1, 0x5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08132118: .4byte gUnknown_20398A4 +_0813211C: .4byte gUnknown_203B118 + thumb_func_end sub_81320BC + + thumb_func_start sub_8132120 +sub_8132120: @ 8132120 + push {r4,r5,lr} + ldr r0, _08132160 @ =gUnknown_203B10C + ldrh r1, [r0, 0xA] + adds r4, r0, 0 + ldr r5, _08132164 @ =gUnknown_203B118 + cmp r1, 0 + beq _08132144 + ldrh r0, [r4, 0xA] + ldr r1, [r5] + ldrb r3, [r1, 0x5] + adds r0, r3 + ldrb r2, [r1, 0x6] + adds r1, r2, 0x1 + cmp r0, r1 + ble _08132144 + subs r0, r3, 0x1 + subs r0, r2, r0 + strh r0, [r4, 0xA] +_08132144: + adds r3, r4, 0 + ldrh r0, [r3, 0xA] + ldrh r1, [r3, 0x8] + adds r0, r1 + ldr r1, [r5] + ldrb r1, [r1, 0x6] + adds r2, r1, 0x1 + cmp r0, r2 + blt _0813216A + cmp r2, 0x1 + bgt _08132168 + movs r0, 0 + strh r0, [r3, 0x8] + b _0813216A + .align 2, 0 +_08132160: .4byte gUnknown_203B10C +_08132164: .4byte gUnknown_203B118 +_08132168: + strh r1, [r4, 0x8] +_0813216A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8132120 + + thumb_func_start sub_8132170 +sub_8132170: @ 8132170 + push {r4-r6,lr} + ldr r0, _081321CC @ =gUnknown_203B10C + ldrh r1, [r0, 0x8] + adds r6, r0, 0 + cmp r1, 0x3 + bls _081321C4 + movs r4, 0 + ldrh r0, [r6, 0x8] + subs r0, 0x3 + cmp r4, r0 + bgt _081321C4 + ldrh r1, [r6, 0xA] + ldr r5, _081321D0 @ =gUnknown_203B118 + ldr r2, [r5] + ldrb r0, [r2, 0x5] + adds r1, r0 + ldrb r0, [r2, 0x6] + adds r0, 0x1 + cmp r1, r0 + beq _081321C4 + adds r3, r6, 0 +_0813219A: + ldrh r0, [r3, 0x8] + subs r0, 0x1 + strh r0, [r3, 0x8] + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r0, [r3, 0x8] + subs r0, 0x3 + cmp r4, r0 + bgt _081321C4 + ldrh r1, [r6, 0xA] + ldr r2, [r5] + ldrb r0, [r2, 0x5] + adds r1, r0 + ldrb r0, [r2, 0x6] + adds r0, 0x1 + cmp r1, r0 + bne _0813219A +_081321C4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081321CC: .4byte gUnknown_203B10C +_081321D0: .4byte gUnknown_203B118 + thumb_func_end sub_8132170 + + thumb_func_start sub_81321D4 +sub_81321D4: @ 81321D4 + push {lr} + ldr r0, _0813221C @ =gUnknown_203B118 + ldr r0, [r0] + cmp r0, 0 + beq _081321E2 + bl sub_8002BC4 +_081321E2: + ldr r0, _08132220 @ =gUnknown_203B120 + ldr r0, [r0] + cmp r0, 0 + beq _081321EE + bl sub_8002BC4 +_081321EE: + ldr r0, _08132224 @ =gUnknown_203B124 + ldr r0, [r0] + cmp r0, 0 + beq _081321FA + bl sub_8002BC4 +_081321FA: + ldr r0, _08132228 @ =gUnknown_203B128 + ldr r0, [r0] + cmp r0, 0 + beq _08132206 + bl sub_8002BC4 +_08132206: + ldr r0, _0813222C @ =gUnknown_203B12C + ldr r0, [r0] + cmp r0, 0 + beq _08132212 + bl sub_8002BC4 +_08132212: + bl sub_8003ECC + pop {r0} + bx r0 + .align 2, 0 +_0813221C: .4byte gUnknown_203B118 +_08132220: .4byte gUnknown_203B120 +_08132224: .4byte gUnknown_203B124 +_08132228: .4byte gUnknown_203B128 +_0813222C: .4byte gUnknown_203B12C + thumb_func_end sub_81321D4 + + thumb_func_start sub_8132230 +sub_8132230: @ 8132230 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + movs r2, 0 + str r2, [sp] + movs r3, 0x10 + bl sub_8070588 + ldr r1, _08132264 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08132268 @ =sub_813226C + str r1, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08132264: .4byte gUnknown_3005090 +_08132268: .4byte sub_813226C + thumb_func_end sub_8132230 + + thumb_func_start sub_813226C +sub_813226C: @ 813226C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _081322A4 @ =gUnknown_3005098 + adds r2, r0, r1 + ldr r0, _081322A8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081322CC + ldrb r0, [r2] + ldr r4, _081322AC @ =gUnknown_203B116 + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + ldr r0, _081322B0 @ =gUnknown_203B118 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _081322B4 + bl sub_8000544 + b _081322BE + .align 2, 0 +_081322A4: .4byte gUnknown_3005098 +_081322A8: .4byte gUnknown_2037AB8 +_081322AC: .4byte gUnknown_203B116 +_081322B0: .4byte gUnknown_203B118 +_081322B4: + adds r0, r4, 0 + subs r0, 0xA + ldr r0, [r0] + bl sub_8000544 +_081322BE: + bl sub_813208C + bl sub_81321D4 + adds r0, r5, 0 + bl sub_8077508 +_081322CC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813226C + + thumb_func_start sub_81322D4 +sub_81322D4: @ 81322D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _08132340 @ =gUnknown_3005098 + adds r6, r0, r1 + ldr r0, _08132344 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0 + bne _081323C8 + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081323C8 + ldrb r0, [r6] + bl sub_8107078 + adds r5, r0, 0 + ldrb r0, [r6] + ldr r4, _08132348 @ =gUnknown_203B116 + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_81072D4 + ldr r0, _0813234C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08132354 + adds r0, r4, 0 + subs r0, 0xA + ldrb r0, [r0, 0x5] + cmp r0, 0x1 + bne _08132354 + movs r0, 0x5 + bl sub_80722CC + ldr r0, _08132350 @ =gUnknown_203AD30 + mov r1, r8 + strh r1, [r0] + b _08132370 + .align 2, 0 +_08132340: .4byte gUnknown_3005098 +_08132344: .4byte gUnknown_2037AB8 +_08132348: .4byte gUnknown_203B116 +_0813234C: .4byte gUnknown_30030F0 +_08132350: .4byte gUnknown_203AD30 +_08132354: + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _08132364 + adds r0, 0x1 + cmp r5, r0 + bne _0813237C + b _081323C8 +_08132364: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _08132378 @ =gUnknown_203AD30 + movs r0, 0 + strh r0, [r1] +_08132370: + adds r0, r7, 0 + bl sub_8132230 + b _081323C8 + .align 2, 0 +_08132378: .4byte gUnknown_203AD30 +_0813237C: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_8131F64 + bl sub_813208C + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8131F90 + strh r5, [r6, 0x2] + lsls r4, r5, 16 + lsrs r4, 16 + movs r0, 0x4 + adds r1, r4, 0 + bl sub_809A7B4 + strh r0, [r6, 0x4] + movs r0, 0x4 + adds r1, r4, 0 + bl sub_809A798 + ldr r1, _081323D4 @ =gUnknown_203AD30 + strh r0, [r1] + ldr r0, _081323D8 @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldr r2, _081323DC @ =gUnknown_8463140 + ldr r0, _081323E0 @ =gUnknown_203B10C + ldrb r0, [r0, 0x4] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] +_081323C8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081323D4: .4byte gUnknown_203AD30 +_081323D8: .4byte gUnknown_3005090 +_081323DC: .4byte gUnknown_8463140 +_081323E0: .4byte gUnknown_203B10C + thumb_func_end sub_81322D4 + + thumb_func_start sub_81323E4 +sub_81323E4: @ 81323E4 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + bl sub_8131F64 + bl sub_8132018 + ldr r1, _0813240C @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08132410 @ =sub_81322D4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813240C: .4byte gUnknown_3005090 +_08132410: .4byte sub_81322D4 + thumb_func_end sub_81323E4 + + thumb_func_start sub_8132414 +sub_8132414: @ 8132414 + push {r4-r7,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r7, r0, 24 + movs r0, 0x2 + bl sub_8133368 + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + bne _08132454 + bl sub_811B0D0 + cmp r0, 0x1 + beq _08132454 + ldr r4, _0813244C @ =gUnknown_203B118 + ldr r0, [r4] + adds r0, 0x7 + movs r1, 0 + bl sub_8133630 + ldr r1, [r4] + ldr r0, _08132450 @ =gUnknown_8463168 + str r0, [r1, 0xC] + movs r0, 0x3 + b _08132468 + .align 2, 0 +_0813244C: .4byte gUnknown_203B118 +_08132450: .4byte gUnknown_8463168 +_08132454: + ldr r4, _0813254C @ =gUnknown_203B118 + ldr r0, [r4] + adds r0, 0x7 + movs r1, 0x1 + bl sub_8133630 + ldr r1, [r4] + ldr r0, _08132550 @ =gUnknown_846316B + str r0, [r1, 0xC] + movs r0, 0x2 +_08132468: + strb r0, [r1, 0x10] + movs r0, 0x2 + movs r1, 0 + bl sub_80F7AC0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + ldr r6, _0813254C @ =gUnknown_203B118 + ldr r1, [r6] + ldrb r2, [r1, 0x7] + movs r5, 0 + str r5, [sp] + str r0, [sp, 0x4] + ldrb r0, [r1, 0x10] + str r0, [sp, 0x8] + ldr r0, _08132554 @ =gUnknown_8463150 + str r0, [sp, 0xC] + ldr r0, [r1, 0xC] + str r0, [sp, 0x10] + adds r0, r2, 0 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_810FCD0 + movs r0, 0x2 + movs r1, 0x1 + bl sub_80F79D8 + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r6] + ldrb r2, [r1, 0x7] + str r0, [sp] + ldrb r0, [r1, 0x10] + str r0, [sp, 0x4] + str r5, [sp, 0x8] + adds r0, r2, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 + movs r0, 0x80 + lsls r0, 1 + bl sub_8002B9C + adds r4, r0, 0 + ldr r6, _08132558 @ =gUnknown_203AD30 + ldrh r1, [r6] + bl sub_8131D48 + ldr r1, _0813255C @ =gUnknown_8416301 + adds r0, r4, 0 + bl sub_8008DA4 + movs r0, 0x2 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + str r5, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x2 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_81332EC + adds r0, r4, 0 + bl sub_8002BC4 + ldrh r0, [r6] + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + beq _08132528 + movs r0, 0x2 + movs r1, 0 + movs r2, 0x2 + bl sub_81335B0 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 +_08132528: + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + ldr r0, _08132560 @ =gUnknown_3005090 + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08132564 @ =sub_8132568 + str r0, [r1] + add sp, 0x14 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813254C: .4byte gUnknown_203B118 +_08132550: .4byte gUnknown_846316B +_08132554: .4byte gUnknown_8463150 +_08132558: .4byte gUnknown_203AD30 +_0813255C: .4byte gUnknown_8416301 +_08132560: .4byte gUnknown_3005090 +_08132564: .4byte sub_8132568 + thumb_func_end sub_8132414 + + thumb_func_start sub_8132568 +sub_8132568: @ 8132568 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _081325E0 + bl sub_810FA04 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _081325E0 + adds r0, 0x1 + cmp r4, r0 + bne _081325C0 + movs r0, 0x5 + bl sub_80722CC + ldr r2, _081325B8 @ =gUnknown_8463150 + ldr r0, _081325BC @ =gUnknown_203B118 + ldr r1, [r0] + ldrb r0, [r1, 0x10] + ldr r1, [r1, 0xC] + adds r0, r1 + subs r0, 0x1 + ldrb r0, [r0] + lsls r0, 3 + adds r2, 0x4 + adds r0, r2 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + b _081325E0 + .align 2, 0 +_081325B8: .4byte gUnknown_8463150 +_081325BC: .4byte gUnknown_203B118 +_081325C0: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _081325E8 @ =gUnknown_8463150 + ldr r0, _081325EC @ =gUnknown_203B118 + ldr r0, [r0] + ldr r0, [r0, 0xC] + adds r0, r4 + ldrb r0, [r0] + lsls r0, 3 + adds r1, 0x4 + adds r0, r1 + ldr r1, [r0] + adds r0, r6, 0 + bl _call_via_r1 +_081325E0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081325E8: .4byte gUnknown_8463150 +_081325EC: .4byte gUnknown_203B118 + thumb_func_end sub_8132568 + + thumb_func_start sub_81325F0 +sub_81325F0: @ 81325F0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _08132634 @ =gUnknown_203B118 + ldr r0, [r5] + adds r0, 0x7 + bl sub_8133664 + movs r0, 0x2 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x2 + bl sub_80040B8 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _08132638 + adds r0, r4, 0 + bl sub_81326F8 + b _0813264A + .align 2, 0 +_08132634: .4byte gUnknown_203B118 +_08132638: + ldr r1, _08132650 @ =gUnknown_3005E98 + ldr r0, _08132654 @ =sub_8125B40 + str r0, [r1] + ldr r1, [r5] + ldr r0, _08132658 @ =sub_8124C8C + str r0, [r1] + adds r0, r4, 0 + bl sub_8132230 +_0813264A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08132650: .4byte gUnknown_3005E98 +_08132654: .4byte sub_8125B40 +_08132658: .4byte sub_8124C8C + thumb_func_end sub_81325F0 + + thumb_func_start sub_813265C +sub_813265C: @ 813265C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _081326D0 @ =gUnknown_3005098 + adds r0, r1 + ldrh r1, [r0, 0x2] + movs r0, 0x4 + bl sub_809A798 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r6, _081326D4 @ =gUnknown_203B118 + ldr r0, [r6] + adds r0, 0x7 + bl sub_8133664 + movs r0, 0x2 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x2 + bl sub_80040B8 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + adds r0, r4, 0 + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + bne _081326EC + bl sub_8040C3C + lsls r0, 24 + cmp r0, 0 + bne _081326D8 + adds r0, r5, 0 + bl sub_81326F8 + b _081326F2 + .align 2, 0 +_081326D0: .4byte gUnknown_3005098 +_081326D4: .4byte gUnknown_203B118 +_081326D8: + ldr r1, [r6] + ldr r0, _081326E8 @ =sub_8126EDC + str r0, [r1] + adds r0, r5, 0 + bl sub_8132230 + b _081326F2 + .align 2, 0 +_081326E8: .4byte sub_8126EDC +_081326EC: + adds r0, r5, 0 + bl sub_8132714 +_081326F2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813265C + + thumb_func_start sub_81326F8 +sub_81326F8: @ 81326F8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0813270C @ =gUnknown_841632A + ldr r3, _08132710 @ =sub_8132758 + movs r1, 0x2 + bl sub_813337C + pop {r0} + bx r0 + .align 2, 0 +_0813270C: .4byte gUnknown_841632A +_08132710: .4byte sub_8132758 + thumb_func_end sub_81326F8 + + thumb_func_start sub_8132714 +sub_8132714: @ 8132714 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _08132744 @ =gUnknown_203AD30 + ldrh r0, [r0] + ldr r1, _08132748 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r5, _0813274C @ =gUnknown_2021D18 + ldr r1, _08132750 @ =gUnknown_841635E + adds r0, r5, 0 + bl sub_8008FCC + ldr r3, _08132754 @ =sub_8132758 + adds r0, r4, 0 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_813337C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08132744: .4byte gUnknown_203AD30 +_08132748: .4byte gUnknown_2021CD0 +_0813274C: .4byte gUnknown_2021D18 +_08132750: .4byte gUnknown_841635E +_08132754: .4byte sub_8132758 + thumb_func_end sub_8132714 + + thumb_func_start sub_8132758 +sub_8132758: @ 8132758 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813277C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08132776 + movs r0, 0x5 + bl sub_80722CC + adds r0, r4, 0 + bl sub_8132780 +_08132776: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813277C: .4byte gUnknown_30030F0 + thumb_func_end sub_8132758 + + thumb_func_start sub_8132780 +sub_8132780: @ 8132780 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r5, r6, 2 + adds r5, r6 + lsls r5, 3 + ldr r0, _081327F0 @ =gUnknown_3005098 + adds r5, r0 + ldrb r0, [r5] + ldr r4, _081327F4 @ =gUnknown_203B116 + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + ldr r0, _081327F8 @ =gUnknown_3005E70 + subs r4, 0xA + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0x8] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5] + movs r1, 0x1 + bl sub_8131F90 + movs r0, 0x6 + movs r1, 0 + bl sub_810F260 + movs r0, 0x6 + bl sub_80040B8 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + adds r0, r6, 0 + bl sub_81323E4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081327F0: .4byte gUnknown_3005098 +_081327F4: .4byte gUnknown_203B116 +_081327F8: .4byte gUnknown_3005E70 + thumb_func_end sub_8132780 + + thumb_func_start sub_81327FC +sub_81327FC: @ 81327FC + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08132860 @ =gUnknown_3005098 + adds r4, r0 + ldr r0, _08132864 @ =gUnknown_203B118 + ldr r0, [r0] + adds r0, 0x7 + bl sub_8133664 + movs r0, 0x2 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x2 + bl sub_80040B8 + movs r0, 0 + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8131F90 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + adds r0, r5, 0 + bl sub_81323E4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08132860: .4byte gUnknown_3005098 +_08132864: .4byte gUnknown_203B118 + thumb_func_end sub_81327FC + + thumb_func_start sub_8132868 +sub_8132868: @ 8132868 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _081328A0 @ =gUnknown_3005098 + adds r0, r1 + ldrh r1, [r0, 0x2] + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + bne _081328AC + ldr r0, _081328A4 @ =gUnknown_203B118 + ldr r1, [r0] + ldr r0, _081328A8 @ =sub_8123744 + str r0, [r1] + adds r0, r4, 0 + bl sub_8132230 + b _081328B2 + .align 2, 0 +_081328A0: .4byte gUnknown_3005098 +_081328A4: .4byte gUnknown_203B118 +_081328A8: .4byte sub_8123744 +_081328AC: + adds r0, r4, 0 + bl sub_8132714 +_081328B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8132868 + + thumb_func_start sub_81328B8 +sub_81328B8: @ 81328B8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _081328F0 @ =gUnknown_3005098 + adds r0, r1 + ldrh r1, [r0, 0x2] + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A990 + lsls r0, 24 + cmp r0, 0 + bne _081328FC + ldr r0, _081328F4 @ =gUnknown_203B118 + ldr r1, [r0] + ldr r0, _081328F8 @ =sub_808CE60 + str r0, [r1] + adds r0, r4, 0 + bl sub_8132230 + b _08132902 + .align 2, 0 +_081328F0: .4byte gUnknown_3005098 +_081328F4: .4byte gUnknown_203B118 +_081328F8: .4byte sub_808CE60 +_081328FC: + adds r0, r4, 0 + bl sub_8132714 +_08132902: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81328B8 + + thumb_func_start sub_8132908 +sub_8132908: @ 8132908 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08132950 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r6, _08132954 @ =gUnknown_203AD30 + ldrh r0, [r6] + bl sub_809A900 + lsls r0, 16 + cmp r0, 0 + bne _08132968 + ldrh r0, [r6] + ldr r1, _08132958 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r4, _0813295C @ =gUnknown_2021D18 + ldr r1, _08132960 @ =gUnknown_84168F1 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08132964 @ =sub_8132780 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_813337C + b _081329AE + .align 2, 0 +_08132950: .4byte gUnknown_3005098 +_08132954: .4byte gUnknown_203AD30 +_08132958: .4byte gUnknown_2021CD0 +_0813295C: .4byte gUnknown_2021D18 +_08132960: .4byte gUnknown_84168F1 +_08132964: .4byte sub_8132780 +_08132968: + movs r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _08132980 + bl sub_81335E0 + adds r0, r5, 0 + bl sub_81329C4 + b _081329AE +_08132980: + cmp r0, 0x63 + ble _08132988 + movs r0, 0x63 + strh r0, [r4, 0x4] +_08132988: + ldrh r0, [r6] + ldr r1, _081329B4 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r4, _081329B8 @ =gUnknown_2021D18 + ldr r1, _081329BC @ =gUnknown_8416911 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _081329C0 @ =sub_8132AAC + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_813337C +_081329AE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081329B4: .4byte gUnknown_2021CD0 +_081329B8: .4byte gUnknown_2021D18 +_081329BC: .4byte gUnknown_8416911 +_081329C0: .4byte sub_8132AAC + thumb_func_end sub_8132908 + + thumb_func_start sub_81329C4 +sub_81329C4: @ 81329C4 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08132A20 @ =gUnknown_3005098 + adds r4, r0 + ldr r6, _08132A24 @ =gUnknown_2021D04 + ldrh r1, [r4, 0x2] + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r4, r2] + muls r1, r0 + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _08132A28 @ =gUnknown_2021D18 + ldr r1, _08132A2C @ =gUnknown_8416936 + adds r0, r4, 0 + bl sub_8008FCC + bl sub_80BF8E4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _08132A30 @ =sub_8132A34 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_813337C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08132A20: .4byte gUnknown_3005098 +_08132A24: .4byte gUnknown_2021D04 +_08132A28: .4byte gUnknown_2021D18 +_08132A2C: .4byte gUnknown_8416936 +_08132A30: .4byte sub_8132A34 + thumb_func_end sub_81329C4 + + thumb_func_start sub_8132A34 +sub_8132A34: @ 8132A34 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08132A44 @ =gUnknown_8463170 + bl sub_8133604 + pop {r0} + bx r0 + .align 2, 0 +_08132A44: .4byte gUnknown_8463170 + thumb_func_end sub_8132A34 + + thumb_func_start sub_8132A48 +sub_8132A48: @ 8132A48 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08132AA8 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0x8 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x6 + movs r1, 0 + bl sub_810F260 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8131F90 + adds r0, r5, 0 + bl sub_81323E4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08132AA8: .4byte gUnknown_3005098 + thumb_func_end sub_8132A48 + + thumb_func_start sub_8132AAC +sub_8132AAC: @ 8132AAC + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r6, _08132B48 @ =gUnknown_3005098 + adds r0, r4, r6 + mov r8, r0 + movs r0, 0x7 + bl sub_8133354 + ldr r0, _08132B4C @ =gUnknown_2021CD0 + movs r1, 0x1 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r5, _08132B50 @ =gUnknown_2021D18 + ldr r1, _08132B54 @ =gUnknown_84162B9 + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r1, 0x1 + str r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + str r1, [sp, 0x10] + movs r0, 0x7 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0x4 + bl sub_81332EC + mov r2, r8 + ldrh r1, [r2, 0x2] + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + mov r3, r8 + movs r2, 0x10 + ldrsh r1, [r3, r2] + muls r1, r0 + movs r0, 0x1 + bl sub_8132B5C + bl sub_81335E0 + bl sub_8132054 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + subs r6, 0x8 + adds r4, r6 + ldr r0, _08132B58 @ =sub_8132BC8 + str r0, [r4] + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08132B48: .4byte gUnknown_3005098 +_08132B4C: .4byte gUnknown_2021CD0 +_08132B50: .4byte gUnknown_2021D18 +_08132B54: .4byte gUnknown_84162B9 +_08132B58: .4byte sub_8132BC8 + thumb_func_end sub_8132AAC + + thumb_func_start sub_8132B5C +sub_8132B5C: @ 8132B5C + push {r4-r6,lr} + sub sp, 0x14 + adds r4, r0, 0 + adds r6, r1, 0 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x7 + movs r1, 0x11 + bl sub_800445C + ldr r0, _08132BBC @ =gUnknown_2021CD0 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r5, _08132BC0 @ =gUnknown_2021D18 + ldr r1, _08132BC4 @ =gUnknown_84162B9 + adds r0, r5, 0 + bl sub_8008FCC + movs r0, 0xA + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + str r4, [sp, 0xC] + str r0, [sp, 0x10] + movs r0, 0x7 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0x4 + bl sub_81332EC + str r4, [sp] + movs r0, 0x7 + movs r1, 0x38 + movs r2, 0xA + adds r3, r6, 0 + bl sub_809FEC4 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08132BBC: .4byte gUnknown_2021CD0 +_08132BC0: .4byte gUnknown_2021D18 +_08132BC4: .4byte gUnknown_84162B9 + thumb_func_end sub_8132B5C + + thumb_func_start sub_8132BC8 +sub_8132BC8: @ 8132BC8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08132C14 @ =gUnknown_3005098 + adds r5, r0, r1 + adds r0, r5, 0 + adds r0, 0x10 + ldrh r1, [r5, 0x4] + bl sub_80BF848 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08132C18 + movs r0, 0x10 + ldrsh r4, [r5, r0] + ldrh r1, [r5, 0x2] + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r5, r2] + muls r1, r0 + adds r0, r4, 0 + bl sub_8132B5C + b _08132CA6 + .align 2, 0 +_08132C14: .4byte gUnknown_3005098 +_08132C18: + ldr r0, _08132C4C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08132C50 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x7 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + bl sub_813208C + adds r0, r4, 0 + bl sub_81329C4 + b _08132CA6 + .align 2, 0 +_08132C4C: .4byte gUnknown_30030F0 +_08132C50: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08132CA6 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x7 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x8 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x6 + movs r1, 0 + bl sub_810F260 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + movs r0, 0x1 + bl sub_80F67A4 + bl sub_813208C + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8131F90 + adds r0, r6, 0 + bl sub_81323E4 +_08132CA6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8132BC8 + + thumb_func_start sub_8132CAC +sub_8132CAC: @ 8132CAC + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _08132D18 @ =gUnknown_3005098 + adds r4, r0 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + ldr r0, _08132D1C @ =gUnknown_203AD30 + ldrh r0, [r0] + ldr r1, _08132D20 @ =gUnknown_2021CD0 + bl sub_8099E90 + ldr r6, _08132D24 @ =gUnknown_2021D04 + ldrh r1, [r4, 0x2] + movs r0, 0x4 + bl sub_809A798 + lsls r0, 16 + lsrs r0, 16 + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + movs r2, 0x10 + ldrsh r1, [r4, r2] + muls r1, r0 + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _08132D28 @ =gUnknown_2021D18 + ldr r1, _08132D2C @ =gUnknown_8416959 + adds r0, r4, 0 + bl sub_8008FCC + ldr r3, _08132D30 @ =sub_8132D34 + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_813337C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08132D18: .4byte gUnknown_3005098 +_08132D1C: .4byte gUnknown_203AD30 +_08132D20: .4byte gUnknown_2021CD0 +_08132D24: .4byte gUnknown_2021D04 +_08132D28: .4byte gUnknown_2021D18 +_08132D2C: .4byte gUnknown_8416959 +_08132D30: .4byte sub_8132D34 + thumb_func_end sub_8132CAC + + thumb_func_start sub_8132D34 +sub_8132D34: @ 8132D34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + lsls r6, r0, 2 + adds r6, r0 + lsls r6, 3 + ldr r0, _08132DF4 @ =gUnknown_3005098 + mov r9, r0 + adds r1, r6, 0 + add r1, r9 + mov r8, r1 + movs r0, 0xF8 + bl sub_80722CC + ldr r5, _08132DF8 @ =gUnknown_203AD30 + ldrh r0, [r5] + mov r2, r8 + ldrh r1, [r2, 0x10] + bl sub_809A1D8 + ldr r7, _08132DFC @ =gUnknown_3005008 + ldr r4, [r7] + movs r3, 0xA4 + lsls r3, 2 + mov r10, r3 + add r4, r10 + ldrh r0, [r5] + bl sub_809A900 + lsls r0, 16 + lsrs r0, 17 + mov r2, r8 + movs r3, 0x10 + ldrsh r1, [r2, r3] + muls r1, r0 + adds r0, r4, 0 + bl sub_809FDA0 + ldrh r0, [r5] + mov r2, r8 + ldrh r1, [r2, 0x10] + movs r2, 0x2 + bl sub_809C09C + mov r3, r8 + ldrb r0, [r3] + ldr r4, _08132E00 @ =gUnknown_203B116 + subs r2, r4, 0x2 + adds r1, r4, 0 + bl sub_810713C + bl sub_81320BC + bl sub_8132120 + bl sub_8131C50 + ldr r0, _08132E04 @ =gUnknown_3005E70 + subs r4, 0xA + ldrh r1, [r4, 0xA] + ldrh r2, [r4, 0x8] + bl sub_8106FF8 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + strh r0, [r1] + movs r1, 0x2 + bl sub_8131F90 + ldr r0, [r7] + add r0, r10 + bl sub_809FD58 + adds r1, r0, 0 + movs r0, 0x8 + movs r2, 0 + bl sub_809FE40 + movs r2, 0x8 + negs r2, r2 + add r9, r2 + add r6, r9 + ldr r0, _08132E08 @ =sub_8132E0C + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08132DF4: .4byte gUnknown_3005098 +_08132DF8: .4byte gUnknown_203AD30 +_08132DFC: .4byte gUnknown_3005008 +_08132E00: .4byte gUnknown_203B116 +_08132E04: .4byte gUnknown_3005E70 +_08132E08: .4byte sub_8132E0C + thumb_func_end sub_8132D34 + + thumb_func_start sub_8132E0C +sub_8132E0C: @ 8132E0C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08132E60 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08132E26 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08132E5A +_08132E26: + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x8 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x6 + movs r1, 0 + bl sub_810F260 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + adds r0, r4, 0 + bl sub_8132780 +_08132E5A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08132E60: .4byte gUnknown_30030F0 + thumb_func_end sub_8132E0C + + thumb_func_start sub_8132E64 +sub_8132E64: @ 8132E64 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r4, _08132EFC @ =gUnknown_203B11C + movs r0, 0xB2 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r4] + ldr r5, _08132F00 @ =gUnknown_3005008 + ldr r1, [r5] + ldr r2, _08132F04 @ =0x00000464 + mov r8, r2 + add r1, r8 + movs r2, 0xE8 + bl memcpy + ldr r0, [r4] + adds r0, 0xE8 + ldr r1, [r5] + movs r6, 0xEE + lsls r6, 2 + adds r1, r6 + movs r2, 0x78 + bl memcpy + ldr r3, [r4] + ldr r2, _08132F08 @ =gUnknown_203B10C + ldrh r1, [r2, 0x8] + movs r4, 0xB0 + lsls r4, 1 + adds r0, r3, r4 + strh r1, [r0] + ldrh r0, [r2, 0xA] + movs r2, 0xB1 + lsls r2, 1 + adds r1, r3, r2 + strh r0, [r1] + ldr r0, [r5] + add r0, r8 + movs r1, 0x3A + bl sub_809A274 + ldr r0, [r5] + adds r0, r6 + movs r1, 0x1E + bl sub_809A274 + bl sub_81320AC + ldr r0, _08132F0C @ =0x00000121 + movs r1, 0x1 + bl sub_809A084 + ldr r0, _08132F10 @ =0x00000123 + movs r1, 0x1 + bl sub_809A084 + ldr r0, _08132F14 @ =0x00000129 + movs r1, 0x1 + bl sub_809A084 + ldr r0, _08132F18 @ =0x00000143 + movs r1, 0x1 + bl sub_809A084 + ldr r1, _08132F1C @ =sub_815ABFC + movs r0, 0x4 + movs r2, 0 + bl sub_81317F8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08132EFC: .4byte gUnknown_203B11C +_08132F00: .4byte gUnknown_3005008 +_08132F04: .4byte 0x00000464 +_08132F08: .4byte gUnknown_203B10C +_08132F0C: .4byte 0x00000121 +_08132F10: .4byte 0x00000123 +_08132F14: .4byte 0x00000129 +_08132F18: .4byte 0x00000143 +_08132F1C: .4byte sub_815ABFC + thumb_func_end sub_8132E64 + + thumb_func_start sub_8132F20 +sub_8132F20: @ 8132F20 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r3, r1, 3 + ldr r4, _08132F54 @ =gUnknown_3005098 + adds r2, r3, r4 + ldr r0, _08132F58 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08132F4E + strh r0, [r2, 0x10] + strh r0, [r2, 0x12] + adds r0, r4, 0 + subs r0, 0x8 + adds r0, r3, r0 + ldr r1, _08132F5C @ =sub_8132F60 + str r1, [r0] +_08132F4E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08132F54: .4byte gUnknown_3005098 +_08132F58: .4byte gUnknown_2037AB8 +_08132F5C: .4byte sub_8132F60 + thumb_func_end sub_8132F20 + + thumb_func_start sub_8132F60 +sub_8132F60: @ 8132F60 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08132FA4 @ =gUnknown_3005098 + adds r6, r0, r1 + ldr r0, _08132FA8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08132F8E + movs r1, 0x10 + ldrsh r0, [r6, r1] + cmp r0, 0x14 + bgt _08132F8E + movs r0, 0x15 + strh r0, [r6, 0x10] + bl sub_815AC20 +_08132F8E: + movs r3, 0x10 + ldrsh r0, [r6, r3] + cmp r0, 0x15 + bls _08132F98 + b _08133210 +_08132F98: + lsls r0, 2 + ldr r1, _08132FAC @ =_08132FB0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08132FA4: .4byte gUnknown_3005098 +_08132FA8: .4byte gUnknown_30030F0 +_08132FAC: .4byte _08132FB0 + .align 2, 0 +_08132FB0: + .4byte _08133008 + .4byte _08133024 + .4byte _08133050 + .4byte _08133050 + .4byte _08133050 + .4byte _08133080 + .4byte _08133080 + .4byte _08133080 + .4byte _081330B0 + .4byte _081330E0 + .4byte _081330F4 + .4byte _08133024 + .4byte _08133050 + .4byte _08133050 + .4byte _08133050 + .4byte _08133080 + .4byte _08133080 + .4byte _08133080 + .4byte _0813312C + .4byte _081330E0 + .4byte _0813315C + .4byte _08133170 +_08133008: + ldr r0, _08133020 @ =0xffff8405 + movs r1, 0 + str r1, [sp] + movs r1, 0x4 + movs r2, 0 + movs r3, 0x6 + bl sub_8070588 + movs r0, 0x1 + bl sub_8131F64 + b _081331EA + .align 2, 0 +_08133020: .4byte 0xffff8405 +_08133024: + ldr r0, _0813304C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08133036 + b _08133232 +_08133036: + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x65 + bgt _08133046 + b _08133232 +_08133046: + strh r1, [r6, 0x12] + b _081331EA + .align 2, 0 +_0813304C: .4byte gUnknown_2037AB8 +_08133050: + movs r0, 0x12 + ldrsh r1, [r6, r0] + cmp r1, 0 + bne _08133066 + ldr r0, _0813307C @ =gUnknown_30030F0 + strh r1, [r0, 0x2E] + movs r1, 0x80 + strh r1, [r0, 0x30] + ldrb r0, [r6] + bl sub_8107078 +_08133066: + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x65 + bgt _08133076 + b _08133232 +_08133076: + movs r0, 0 + strh r0, [r6, 0x12] + b _081331EA + .align 2, 0 +_0813307C: .4byte gUnknown_30030F0 +_08133080: + movs r3, 0x12 + ldrsh r1, [r6, r3] + cmp r1, 0 + bne _08133096 + ldr r0, _081330AC @ =gUnknown_30030F0 + strh r1, [r0, 0x2E] + movs r1, 0x40 + strh r1, [r0, 0x30] + ldrb r0, [r6] + bl sub_8107078 +_08133096: + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x65 + bgt _081330A6 + b _08133232 +_081330A6: + movs r0, 0 + strh r0, [r6, 0x12] + b _081331EA + .align 2, 0 +_081330AC: .4byte gUnknown_30030F0 +_081330B0: + movs r0, 0x1 + bl sub_8131F64 + ldr r2, _081330D4 @ =gUnknown_841C587 + adds r0, r4, 0 + movs r1, 0x4 + movs r3, 0 + bl sub_813337C + ldr r1, _081330D8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _081330DC @ =sub_8132F60 + str r1, [r0] + b _081331EA + .align 2, 0 +_081330D4: .4byte gUnknown_841C587 +_081330D8: .4byte gUnknown_3005090 +_081330DC: .4byte sub_8132F60 +_081330E0: + bl sub_8002DE8 + movs r0, 0x6 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + beq _081330F2 + b _08133232 +_081330F2: + b _081331EA +_081330F4: + ldr r0, _08133128 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08133102 + b _08133232 +_08133102: + movs r0, 0 + bl sub_8131F64 + movs r0, 0x80 + lsls r0, 3 + movs r1, 0 + str r1, [sp] + movs r2, 0x6 + movs r3, 0 + bl sub_8070588 + movs r0, 0x6 + movs r1, 0 + bl sub_810F260 + movs r0, 0x1 + bl sub_80F67A4 + b _081331EA + .align 2, 0 +_08133128: .4byte gUnknown_30030F0 +_0813312C: + movs r0, 0x1 + bl sub_8131F64 + ldr r2, _08133150 @ =gUnknown_841C693 + adds r0, r4, 0 + movs r1, 0x4 + movs r3, 0 + bl sub_813337C + ldr r1, _08133154 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08133158 @ =sub_8132F60 + str r1, [r0] + b _081331EA + .align 2, 0 +_08133150: .4byte gUnknown_841C693 +_08133154: .4byte gUnknown_3005090 +_08133158: .4byte sub_8132F60 +_0813315C: + ldr r0, _0813316C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08133232 + b _081331EA + .align 2, 0 +_0813316C: .4byte gUnknown_30030F0 +_08133170: + ldr r0, _081331F4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _08133232 + ldr r5, _081331F8 @ =gUnknown_3005008 + ldr r0, [r5] + ldr r1, _081331FC @ =0x00000464 + adds r0, r1 + ldr r4, _08133200 @ =gUnknown_203B11C + ldr r1, [r4] + movs r2, 0xE8 + bl memcpy + ldr r0, [r5] + movs r3, 0xEE + lsls r3, 2 + adds r0, r3 + ldr r1, [r4] + adds r1, 0xE8 + movs r2, 0x78 + bl memcpy + ldrb r0, [r6] + movs r1, 0 + movs r2, 0 + bl sub_810713C + ldr r2, _08133204 @ =gUnknown_203B10C + ldr r0, [r4] + movs r3, 0xB0 + lsls r3, 1 + adds r1, r0, r3 + ldrh r1, [r1] + strh r1, [r2, 0x8] + adds r3, 0x2 + adds r1, r0, r3 + ldrh r1, [r1] + strh r1, [r2, 0xA] + bl sub_8002BC4 + ldr r0, _08133208 @ =gUnknown_20375F8 + ldr r1, _0813320C @ =gUnknown_20371F8 + movs r2, 0x80 + lsls r2, 1 + bl CpuFastSet + bl sub_8108CF0 + movs r0, 0x1 + negs r0, r0 + movs r1, 0x2 + negs r1, r1 + str r7, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_081331EA: + ldrh r0, [r6, 0x10] + adds r0, 0x1 + strh r0, [r6, 0x10] + b _08133232 + .align 2, 0 +_081331F4: .4byte gUnknown_2037AB8 +_081331F8: .4byte gUnknown_3005008 +_081331FC: .4byte 0x00000464 +_08133200: .4byte gUnknown_203B11C +_08133204: .4byte gUnknown_203B10C +_08133208: .4byte gUnknown_20375F8 +_0813320C: .4byte gUnknown_20371F8 +_08133210: + ldr r0, _0813323C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08133232 + ldr r0, _08133240 @ =gUnknown_203B10C + ldr r0, [r0] + bl sub_8000544 + bl sub_813208C + bl sub_81321D4 + adds r0, r4, 0 + bl sub_8077508 +_08133232: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813323C: .4byte gUnknown_2037AB8 +_08133240: .4byte gUnknown_203B10C + thumb_func_end sub_8132F60 + + thumb_func_start sub_8133244 +sub_8133244: @ 8133244 + push {r4,lr} + ldr r0, _081332E0 @ =gUnknown_8463190 + bl sub_8003B24 + bl sub_8002C28 + movs r0, 0 + movs r1, 0x5B + movs r2, 0xE0 + bl sub_815001C + movs r0, 0 + movs r1, 0x64 + movs r2, 0xB0 + bl sub_814FEAC + movs r0, 0 + movs r1, 0x78 + movs r2, 0xD0 + bl sub_814FF2C + ldr r4, _081332E4 @ =gUnknown_841F408 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0xA0 + movs r2, 0x20 + bl sub_80703EC + ldr r4, _081332E8 @ =gUnknown_8463180 + adds r0, r4, 0 + movs r1, 0xF6 + movs r2, 0x4 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0xD6 + movs r2, 0x4 + bl sub_80703EC + movs r0, 0xC0 + movs r1, 0x1 + bl sub_8107D38 + movs r4, 0 +_081332A4: + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x8 + bls _081332A4 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x3 + bl sub_8003FA0 + movs r0, 0x4 + bl sub_8003FA0 + movs r0, 0x5 + bl sub_8003FA0 + movs r0, 0 + bl sub_80F67A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081332E0: .4byte gUnknown_8463190 +_081332E4: .4byte gUnknown_841F408 +_081332E8: .4byte gUnknown_8463180 + thumb_func_end sub_8133244 + + thumb_func_start sub_81332EC +sub_81332EC: @ 81332EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r9, r3 + ldr r3, [sp, 0x30] + ldr r4, [sp, 0x34] + ldr r6, [sp, 0x38] + ldr r5, [sp, 0x3C] + mov r8, r5 + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r7, r9 + lsls r7, 24 + lsrs r7, 24 + mov r9, r7 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r6, [sp, 0x4] + lsls r4, r5, 1 + adds r4, r5 + ldr r5, _08133350 @ =gUnknown_8463184 + adds r4, r5 + str r4, [sp, 0x8] + mov r4, r8 + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + str r2, [sp, 0x10] + mov r2, r9 + bl sub_812E5A4 + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08133350: .4byte gUnknown_8463184 + thumb_func_end sub_81332EC + + thumb_func_start sub_8133354 +sub_8133354: @ 8133354 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + movs r2, 0x5B + movs r3, 0xE + bl sub_810F2E8 + pop {r0} + bx r0 + thumb_func_end sub_8133354 + + thumb_func_start sub_8133368 +sub_8133368: @ 8133368 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + movs r2, 0x78 + movs r3, 0xD + bl sub_810F2E8 + pop {r0} + bx r0 + thumb_func_end sub_8133368 + + thumb_func_start sub_813337C +sub_813337C: @ 813337C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + mov r8, r3 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_80F78A8 + lsls r0, 24 + lsrs r0, 24 + str r4, [sp] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + adds r0, r5, 0 + movs r1, 0x6 + movs r2, 0x64 + movs r3, 0xB + bl sub_80BF474 + movs r0, 0x1 + bl sub_80F67A4 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813337C + + thumb_func_start sub_81333C4 +sub_81333C4: @ 81333C4 + push {r4,lr} + sub sp, 0xC + ldr r4, _081333FC @ =gUnknown_84166D3 + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0x48 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _08133400 @ =gUnknown_8463184 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x1 + movs r3, 0x1 + bl sub_812E51C + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081333FC: .4byte gUnknown_84166D3 +_08133400: .4byte gUnknown_8463184 + thumb_func_end sub_81333C4 + + thumb_func_start sub_8133404 +sub_8133404: @ 8133404 + push {lr} + movs r0, 0x4 + movs r1, 0x13 + movs r2, 0 + movs r3, 0 + bl sub_8107D68 + movs r0, 0x4 + movs r1, 0x14 + movs r2, 0 + movs r3, 0xC + bl sub_8107D68 + movs r0, 0x4 + movs r1, 0x15 + movs r2, 0 + movs r3, 0x18 + bl sub_8107D68 + movs r0, 0x4 + movs r1, 0x16 + movs r2, 0 + movs r3, 0x24 + bl sub_8107D68 + movs r0, 0x4 + movs r1, 0x2 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_8133404 + + thumb_func_start sub_8133444 +sub_8133444: @ 8133444 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x28 + str r0, [sp] + movs r0, 0x30 + str r0, [sp, 0x4] + movs r0, 0x5 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + cmp r4, 0 + bne _081334A8 + movs r4, 0 + movs r5, 0 +_0813346E: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 26 + lsrs r0, 24 + str r0, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x3 + str r0, [sp, 0x10] + movs r0, 0x5 + movs r1, 0x3 + ldr r2, _081334A4 @ =gUnknown_8416213 + movs r3, 0x7 + bl sub_81332EC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _0813346E + movs r0, 0x5 + movs r1, 0x2 + bl sub_8003F20 + b _0813359A + .align 2, 0 +_081334A4: .4byte gUnknown_8416213 +_081334A8: + adds r0, r4, 0 + bl sub_8125A78 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r1, _081334D8 @ =gUnknown_8250C04 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 2 + adds r5, r0, r1 + ldrb r1, [r5, 0x2] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + movs r2, 0 + movs r3, 0 + bl sub_8107D68 + ldrb r0, [r5, 0x1] + cmp r0, 0x1 + bhi _081334E0 + ldr r2, _081334DC @ =gUnknown_8416213 + b _081334F0 + .align 2, 0 +_081334D8: .4byte gUnknown_8250C04 +_081334DC: .4byte gUnknown_8416213 +_081334E0: + ldr r4, _08133524 @ =gUnknown_2021CD0 + ldrb r1, [r5, 0x1] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + adds r2, r4, 0 +_081334F0: + movs r0, 0xC + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0xFF + str r0, [sp, 0xC] + movs r0, 0x3 + str r0, [sp, 0x10] + movs r0, 0x5 + movs r1, 0x3 + movs r3, 0x7 + bl sub_81332EC + ldr r2, _08133528 @ =gUnknown_8250C04 + lsls r1, r7, 1 + adds r0, r1, r7 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2, 0x3] + adds r6, r1, 0 + cmp r0, 0 + bne _08133530 + ldr r2, _0813352C @ =gUnknown_8416213 + b _08133540 + .align 2, 0 +_08133524: .4byte gUnknown_2021CD0 +_08133528: .4byte gUnknown_8250C04 +_0813352C: .4byte gUnknown_8416213 +_08133530: + ldr r4, _081335A8 @ =gUnknown_2021CD0 + ldrb r1, [r2, 0x3] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + adds r2, r4, 0 +_08133540: + movs r0, 0x18 + str r0, [sp] + movs r4, 0 + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0xFF + mov r8, r0 + str r0, [sp, 0xC] + movs r0, 0x3 + mov r9, r0 + str r0, [sp, 0x10] + movs r0, 0x5 + movs r1, 0x3 + movs r3, 0x7 + bl sub_81332EC + ldr r5, _081335A8 @ =gUnknown_2021CD0 + ldr r1, _081335AC @ =gUnknown_8250C04 + adds r0, r6, r7 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x4] + adds r0, r5, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + movs r0, 0x24 + str r0, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + mov r0, r8 + str r0, [sp, 0xC] + mov r0, r9 + str r0, [sp, 0x10] + movs r0, 0x5 + movs r1, 0x3 + adds r2, r5, 0 + movs r3, 0x7 + bl sub_81332EC + movs r0, 0x5 + movs r1, 0x2 + bl sub_8003F20 +_0813359A: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081335A8: .4byte gUnknown_2021CD0 +_081335AC: .4byte gUnknown_8250C04 + thumb_func_end sub_8133444 + + thumb_func_start sub_81335B0 +sub_81335B0: @ 81335B0 + push {r4,lr} + sub sp, 0x8 + adds r4, r1, 0 + adds r3, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _081335DC @ =gUnknown_8E99118 + movs r2, 0x10 + str r2, [sp] + movs r2, 0xC + str r2, [sp, 0x4] + adds r2, r4, 0 + bl sub_80041B8 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081335DC: .4byte gUnknown_8E99118 + thumb_func_end sub_81335B0 + + thumb_func_start sub_81335E0 +sub_81335E0: @ 81335E0 + push {lr} + ldr r0, _08133600 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + adds r3, r0, 0 + movs r0, 0x8 + movs r1, 0x78 + movs r2, 0xD + bl sub_809FF48 + pop {r0} + bx r0 + .align 2, 0 +_08133600: .4byte gUnknown_3005008 + thumb_func_end sub_81335E0 + + thumb_func_start sub_8133604 +sub_8133604: @ 8133604 + push {lr} + sub sp, 0x10 + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813362C @ =gUnknown_84631E0 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x5B + str r2, [sp, 0x4] + movs r2, 0xE + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r2, 0x2 + movs r3, 0 + bl sub_80BF5D0 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0813362C: .4byte gUnknown_84631E0 + thumb_func_end sub_8133604 + + thumb_func_start sub_8133630 +sub_8133630: @ 8133630 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r4] + cmp r0, 0xFF + bne _08133656 + lsls r0, r1, 3 + ldr r1, _08133660 @ =gUnknown_84631E8 + adds r0, r1 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + bl sub_8133354 + movs r0, 0 + bl sub_80F67A4 +_08133656: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08133660: .4byte gUnknown_84631E8 + thumb_func_end sub_8133630 + + thumb_func_start sub_8133664 +sub_8133664: @ 8133664 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + movs r1, 0 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + bl sub_8003E3C + movs r0, 0 + bl sub_80F67A4 + movs r0, 0xFF + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8133664 + + thumb_func_start sub_813368C +sub_813368C: @ 813368C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, _081336E8 @ =gUnknown_8463220 + movs r1, 0x29 + movs r2, 0x2E + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r7, r0, 24 + cmp r6, 0 + beq _081336F4 + adds r5, r6, 0 + subs r5, 0x21 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + ldr r0, _081336EC @ =gUnknown_202063C + adds r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8133714 + ldr r0, _081336F0 @ =gUnknown_8250C04 + mov r8, r0 + adds r0, r6, 0 + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x2] + bl sub_8133730 + adds r0, r4, 0 + adds r1, r5, 0 + b _08133700 + .align 2, 0 +_081336E8: .4byte gUnknown_8463220 +_081336EC: .4byte gUnknown_202063C +_081336F0: .4byte gUnknown_8250C04 +_081336F4: + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + ldr r1, _08133710 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0xFF +_08133700: + bl sub_8133790 + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08133710: .4byte gUnknown_202063C + thumb_func_end sub_813368C + + thumb_func_start sub_8133714 +sub_8133714: @ 8133714 + push {lr} + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x31 + bls _08133726 + movs r1, 0x1 + bl sub_800838C + b _0813372C +_08133726: + movs r1, 0 + bl sub_800838C +_0813372C: + pop {r0} + bx r0 + thumb_func_end sub_8133714 + + thumb_func_start sub_8133730 +sub_8133730: @ 8133730 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xC8 + lsls r0, 1 + bl sub_80089E8 + lsls r0, 28 + lsrs r5, r0, 24 + ldr r2, _08133784 @ =gUnknown_203B12C + ldr r0, _08133788 @ =gUnknown_8463238 + lsls r4, 1 + adds r4, r0 + ldrh r1, [r4] + lsls r1, 1 + ldr r0, [r2] + adds r0, r1 + movs r1, 0x80 + lsls r1, 1 + adds r2, r1, 0 + adds r1, r5, 0 + orrs r1, r2 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0813378C @ =gUnknown_203B10C + ldrb r0, [r0, 0x4] + cmp r0, 0x4 + bne _0813377C + adds r1, r5, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + movs r1, 0x4 + movs r2, 0 + bl sub_80714D4 +_0813377C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08133784: .4byte gUnknown_203B12C +_08133788: .4byte gUnknown_8463238 +_0813378C: .4byte gUnknown_203B10C + thumb_func_end sub_8133730 + + thumb_func_start sub_8133790 +sub_8133790: @ 8133790 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r4, 0xFF + bne _081337A6 + movs r6, 0x1B + movs r1, 0x36 + movs r0, 0x14 + strh r0, [r5, 0x26] + b _081337D8 +_081337A6: + cmp r4, 0x31 + bls _081337B0 + adds r0, r4, 0 + subs r0, 0x32 + b _081337B4 +_081337B0: + adds r0, r4, 0 + adds r0, 0x8 +_081337B4: + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 9 + movs r1, 0x3A + bl __divsi3 + asrs r0, 8 + movs r1, 0x29 + subs r6, r1, r0 + lsls r0, r4, 11 + movs r1, 0x3A + bl __divsi3 + asrs r0, 8 + adds r1, r0, 0 + adds r1, 0x2E +_081337D8: + strh r6, [r5, 0x20] + strh r1, [r5, 0x22] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8133790 + + thumb_func_start sub_81337E4 +sub_81337E4: @ 81337E4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08133808 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r0, r2, r3 + movs r4, 0 + strh r1, [r0, 0x2E] + strh r4, [r0, 0x30] + adds r3, 0x1C + adds r2, r3 + ldr r0, _0813380C @ =sub_8133810 + str r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08133808: .4byte gUnknown_202063C +_0813380C: .4byte sub_8133810 + thumb_func_end sub_81337E4 + + thumb_func_start sub_8133810 +sub_8133810: @ 8133810 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x30 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08133822 + cmp r0, 0x1 + beq _08133886 + b _081338A2 +_08133822: + ldrh r1, [r5, 0x26] + movs r2, 0x26 + ldrsh r0, [r5, r2] + cmp r0, 0x13 + ble _08133880 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08133890 + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] + ldr r4, _08133878 @ =gUnknown_8250C04 + ldrh r0, [r5, 0x2E] + bl sub_8125A78 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1, 0x2] + bl sub_8133730 + ldr r2, _0813387C @ =0xfffffedf + adds r1, r2, 0 + ldrh r0, [r5, 0x2E] + adds r1, r0 + strh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8133714 + ldrh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_8133790 + b _081338A2 + .align 2, 0 +_08133878: .4byte gUnknown_8250C04 +_0813387C: .4byte 0xfffffedf +_08133880: + adds r0, r1, 0 + adds r0, 0xA + b _081338A0 +_08133886: + ldrh r1, [r5, 0x26] + movs r2, 0x26 + ldrsh r0, [r5, r2] + cmp r0, 0 + bgt _0813389C +_08133890: + ldr r0, _08133898 @ =nullsub_8 + str r0, [r5, 0x1C] + b _081338A2 + .align 2, 0 +_08133898: .4byte nullsub_8 +_0813389C: + adds r0, r1, 0 + subs r0, 0xA +_081338A0: + strh r0, [r5, 0x26] +_081338A2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8133810 + + thumb_func_start sub_81338A8 +sub_81338A8: @ 81338A8 + push {r4,r5,lr} + sub sp, 0x8 + ldr r4, _081338F4 @ =gUnknown_203B12C + movs r5, 0x88 + lsls r5, 2 + adds r0, r5, 0 + bl sub_8002B9C + adds r1, r0, 0 + str r1, [r4] + ldr r0, _081338F8 @ =gUnknown_8E84F20 + bl sub_800EBB4 + ldr r0, _081338FC @ =gUnknown_8E85068 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 2 + adds r1, r2 + bl sub_800EBB4 + ldr r0, [r4] + adds r0, r5 + str r0, [sp] + ldr r1, _08133900 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + movs r1, 0xC8 + lsls r1, 1 + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8008928 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081338F4: .4byte gUnknown_203B12C +_081338F8: .4byte gUnknown_8E84F20 +_081338FC: .4byte gUnknown_8E85068 +_08133900: .4byte 0xffff0000 + thumb_func_end sub_81338A8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/trade.s b/asm/trade.s new file mode 100644 index 000000000..d1160d120 --- /dev/null +++ b/asm/trade.s @@ -0,0 +1,15329 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_804C600 +sub_804C600: @ 804C600 + push {r4,r5,lr} + sub sp, 0xC + bl sub_8006B10 + bl sub_80088F0 + bl sub_80773BC + bl sub_8070528 + ldr r2, _0804C6F8 @ =gUnknown_2037AB8 + ldrb r0, [r2, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2, 0x8] + ldr r0, _0804C6FC @ =sub_804D4F8 + bl sub_80006F4 + ldr r4, _0804C700 @ =gUnknown_841F408 + adds r0, r4, 0 + movs r1, 0xF0 + movs r2, 0x14 + bl sub_80703EC + adds r0, r4, 0 + movs r1, 0xD0 + movs r2, 0x14 + bl sub_80703EC + movs r0, 0 + bl sub_8001618 + ldr r1, _0804C704 @ =gUnknown_8261F1C + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r0, _0804C708 @ =gUnknown_2031DA8 + ldr r1, [r0] + movs r0, 0x8F + lsls r0, 4 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + ldr r0, _0804C70C @ =gUnknown_8261F2C + bl sub_8003B24 + lsls r0, 16 + cmp r0, 0 + beq _0804C6F0 + bl sub_8002C28 + ldr r1, _0804C710 @ =gUnknown_3000E78 + ldr r2, _0804C714 @ =0x0000024e + adds r0, r2, 0 + strh r0, [r1] + movs r5, 0 +_0804C674: + lsls r4, r5, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80040B8 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r5, 0x1 + cmp r5, 0x11 + bls _0804C674 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0 + movs r1, 0x14 + movs r2, 0xC0 + bl sub_814FF2C + movs r0, 0x2 + movs r1, 0x1 + movs r2, 0xE0 + bl sub_815001C + bl sub_809707C + ldr r2, _0804C708 @ =gUnknown_2031DA8 + ldr r0, [r2] + adds r0, 0x69 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x6F + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x70 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x74 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x75 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x7A + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x7B + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xA8 + strb r1, [r0] +_0804C6F0: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804C6F8: .4byte gUnknown_2037AB8 +_0804C6FC: .4byte sub_804D4F8 +_0804C700: .4byte gUnknown_841F408 +_0804C704: .4byte gUnknown_8261F1C +_0804C708: .4byte gUnknown_2031DA8 +_0804C70C: .4byte gUnknown_8261F2C +_0804C710: .4byte gUnknown_3000E78 +_0804C714: .4byte 0x0000024e + thumb_func_end sub_804C600 + + thumb_func_start sub_804C718 +sub_804C718: @ 804C718 + push {lr} + ldr r0, _0804C724 @ =sub_804C728 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0804C724: .4byte sub_804C728 + thumb_func_end sub_804C718 + + thumb_func_start sub_804C728 +sub_804C728: @ 804C728 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x28 + ldr r1, _0804C74C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r1, 0 + cmp r0, 0x16 + bls _0804C742 + b _0804CEE6 +_0804C742: + lsls r0, 2 + ldr r1, _0804C750 @ =_0804C754 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804C74C: .4byte gUnknown_30030F0 +_0804C750: .4byte _0804C754 + .align 2, 0 +_0804C754: + .4byte _0804C7B0 + .4byte _0804C7FC + .4byte _0804C8C8 + .4byte _0804C8F4 + .4byte _0804C950 + .4byte _0804C9B0 + .4byte _0804C9F0 + .4byte _0804CA10 + .4byte _0804CB50 + .4byte _0804CB78 + .4byte _0804CB9C + .4byte _0804CC30 + .4byte _0804CC3E + .4byte _0804CD10 + .4byte _0804CDE0 + .4byte _0804CE20 + .4byte _0804CE3A + .4byte _0804CE48 + .4byte _0804CE5C + .4byte _0804CE7C + .4byte _0804CE9C + .4byte _0804CEB0 + .4byte _0804CED0 +_0804C7B0: + ldr r4, _0804C7E8 @ =gUnknown_2031DA8 + ldr r0, _0804C7EC @ =0x000010f0 + bl sub_8002BB0 + str r0, [r4] + bl sub_804C600 + ldr r4, _0804C7F0 @ =gUnknown_2031C90 + movs r0, 0xE0 + lsls r0, 4 + bl sub_8002BB0 + str r0, [r4] + movs r6, 0 + ldr r2, _0804C7F4 @ =gUnknown_2031C94 +_0804C7CE: + lsls r1, r6, 8 + ldr r0, [r4] + adds r0, r1 + stm r2!, {r0} + adds r6, 0x1 + cmp r6, 0xD + ble _0804C7CE + ldr r1, _0804C7F8 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804CEC2 + .align 2, 0 +_0804C7E8: .4byte gUnknown_2031DA8 +_0804C7EC: .4byte 0x000010f0 +_0804C7F0: .4byte gUnknown_2031C90 +_0804C7F4: .4byte gUnknown_2031C94 +_0804C7F8: .4byte gUnknown_30030F0 +_0804C7FC: + ldr r2, _0804C864 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r6, 0 + movs r4, 0 +_0804C80A: + movs r0, 0x64 + muls r0, r6 + ldr r1, _0804C868 @ =gUnknown_202402C + adds r0, r1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + str r4, [sp, 0xC] + movs r1, 0 + movs r2, 0 + movs r3, 0x20 + bl sub_803DA54 + adds r6, 0x1 + cmp r6, 0x5 + ble _0804C80A + movs r0, 0 + bl sub_804F5BC + movs r0, 0 + bl sub_80019BC + ldr r0, _0804C86C @ =gUnknown_3003F64 + ldrb r2, [r0] + cmp r2, 0 + bne _0804C8B4 + ldr r1, _0804C870 @ =gUnknown_202271A + ldr r5, _0804C874 @ =0x00001122 + adds r0, r5, 0 + strh r0, [r1] + ldr r0, _0804C878 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0xA8 + strb r2, [r0] + ldr r0, _0804C87C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804C880 + bl sub_800B1F4 + bl sub_8009804 + bl sub_80FBB20 + b _0804C892 + .align 2, 0 +_0804C864: .4byte gUnknown_2037AB8 +_0804C868: .4byte gUnknown_202402C +_0804C86C: .4byte gUnknown_3003F64 +_0804C870: .4byte gUnknown_202271A +_0804C874: .4byte 0x00001122 +_0804C878: .4byte gUnknown_2031DA8 +_0804C87C: .4byte gUnknown_3003F3C +_0804C880: + bl sub_8009804 + ldr r1, _0804C8A8 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0804C892: + ldr r0, _0804C8AC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804C89C + b _0804CEE6 +_0804C89C: + ldr r0, _0804C8B0 @ =sub_8081A90 + movs r1, 0x1 + bl sub_807741C + b _0804CEE6 + .align 2, 0 +_0804C8A8: .4byte gUnknown_30030F0 +_0804C8AC: .4byte gUnknown_3003F3C +_0804C8B0: .4byte sub_8081A90 +_0804C8B4: + ldr r0, _0804C8C4 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + b _0804CEE6 + .align 2, 0 +_0804C8C4: .4byte gUnknown_30030F0 +_0804C8C8: + ldr r2, _0804C8F0 @ =gUnknown_2031DA8 + ldr r1, [r2] + adds r1, 0xA8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r1, r0, 0 + adds r1, 0xA8 + ldrb r0, [r1] + cmp r0, 0xB + bhi _0804C8E2 + b _0804CEE6 +_0804C8E2: + movs r0, 0 + strb r0, [r1] + movs r2, 0x87 + lsls r2, 3 + adds r1, r3, r2 + b _0804CEC2 + .align 2, 0 +_0804C8F0: .4byte gUnknown_2031DA8 +_0804C8F4: + bl sub_800AA38 + adds r4, r0, 0 + bl sub_800A944 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bcs _0804C908 + b _0804CEE6 +_0804C908: + bl sub_800AA48 + lsls r0, 24 + cmp r0, 0 + beq _0804C940 + ldr r0, _0804C938 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r1, 0xA8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1E + bhi _0804C928 + b _0804CEE6 +_0804C928: + bl sub_800A5BC + ldr r1, _0804C93C @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804CEC2 + .align 2, 0 +_0804C938: .4byte gUnknown_2031DA8 +_0804C93C: .4byte gUnknown_30030F0 +_0804C940: + ldr r1, _0804C94C @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804CEC2 + .align 2, 0 +_0804C94C: .4byte gUnknown_30030F0 +_0804C950: + ldr r0, _0804C9A0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0804C95A + b _0804CEE6 +_0804C95A: + bl sub_800A1F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0804C968 + b _0804CEE6 +_0804C968: + bl sub_80FBB4C + bl sub_8040C3C + ldr r1, _0804C9A4 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + ldr r0, _0804C9A8 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0xA8 + strb r2, [r0] + ldr r0, _0804C9AC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0804C992 + b _0804CEE6 +_0804C992: + movs r0, 0x1 + bl sub_80FA484 + bl sub_800AB9C + b _0804CEE6 + .align 2, 0 +_0804C9A0: .4byte gUnknown_3003F64 +_0804C9A4: .4byte gUnknown_30030F0 +_0804C9A8: .4byte gUnknown_2031DA8 +_0804C9AC: .4byte gUnknown_3003F3C +_0804C9B0: + ldr r0, _0804C9E0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804C9E8 + bl sub_80FA4F8 + lsls r0, 24 + cmp r0, 0 + bne _0804C9C4 + b _0804CEE6 +_0804C9C4: + ldr r1, _0804C9E4 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _0804CEE6 + .align 2, 0 +_0804C9E0: .4byte gUnknown_3003F3C +_0804C9E4: .4byte gUnknown_30030F0 +_0804C9E8: + movs r2, 0x87 + lsls r2, 3 + adds r1, r3, r2 + b _0804CEC2 +_0804C9F0: + bl sub_804D834 + lsls r0, 24 + cmp r0, 0 + bne _0804C9FC + b _0804CEE6 +_0804C9FC: + bl sub_804F9D8 + ldr r1, _0804CA0C @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804CEC2 + .align 2, 0 +_0804CA0C: .4byte gUnknown_30030F0 +_0804CA10: + bl sub_8040C80 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + ldr r2, _0804CB2C @ =gUnknown_2031DA8 + ldr r0, [r2] + ldr r1, _0804CB30 @ =gUnknown_2024029 + ldrb r1, [r1] + adds r0, 0x36 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _0804CB34 @ =gUnknown_202402A + ldrb r1, [r1] + adds r0, 0x37 + strb r1, [r0] + movs r6, 0 + ldr r0, [r2] + adds r0, 0x36 + ldrb r0, [r0] + cmp r6, r0 + bge _0804CAA8 + mov r8, r2 + ldr r7, _0804CB38 @ =gUnknown_8261E40 +_0804CA4A: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + ldr r0, _0804CB3C @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + ldrb r2, [r7] + lsls r2, 19 + movs r1, 0xE0 + lsls r1, 12 + adds r2, r1 + asrs r2, 16 + ldrb r3, [r7, 0x1] + lsls r3, 19 + ldr r1, _0804CB40 @ =0xfff40000 + adds r3, r1 + asrs r3, 16 + movs r1, 0x1 + str r1, [sp] + str r0, [sp, 0x4] + str r1, [sp, 0x8] + adds r0, r5, 0 + ldr r1, _0804CB44 @ =sub_809718C + bl sub_8096E18 + mov r2, r8 + ldr r1, [r2] + adds r1, 0x28 + adds r1, r6 + strb r0, [r1] + adds r7, 0x2 + adds r6, 0x1 + ldr r0, [r2] + adds r0, 0x36 + ldrb r0, [r0] + cmp r6, r0 + blt _0804CA4A +_0804CAA8: + movs r6, 0 + ldr r1, _0804CB2C @ =gUnknown_2031DA8 + ldr r0, [r1] + adds r0, 0x37 + ldrb r0, [r0] + cmp r6, r0 + bge _0804CB20 + ldr r0, _0804CB38 @ =gUnknown_8261E40 + mov r8, r1 + adds r7, r0, 0 + adds r7, 0xC +_0804CABE: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + ldr r0, _0804CB48 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + ldrb r2, [r7] + lsls r2, 19 + movs r3, 0xE0 + lsls r3, 12 + adds r2, r3 + asrs r2, 16 + ldrb r3, [r7, 0x1] + lsls r3, 19 + ldr r1, _0804CB40 @ =0xfff40000 + adds r3, r1 + asrs r3, 16 + movs r1, 0x1 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r5, 0 + ldr r1, _0804CB44 @ =sub_809718C + bl sub_8096E18 + mov r2, r8 + ldr r1, [r2] + adds r1, 0x2E + adds r1, r6 + strb r0, [r1] + adds r7, 0x2 + adds r6, 0x1 + ldr r0, [r2] + adds r0, 0x37 + ldrb r0, [r0] + cmp r6, r0 + blt _0804CABE +_0804CB20: + ldr r1, _0804CB4C @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804CEC2 + .align 2, 0 +_0804CB2C: .4byte gUnknown_2031DA8 +_0804CB30: .4byte gUnknown_2024029 +_0804CB34: .4byte gUnknown_202402A +_0804CB38: .4byte gUnknown_8261E40 +_0804CB3C: .4byte gUnknown_2024284 +_0804CB40: .4byte 0xfff40000 +_0804CB44: .4byte sub_809718C +_0804CB48: .4byte gUnknown_202402C +_0804CB4C: .4byte gUnknown_30030F0 +_0804CB50: + bl sub_8122550 + ldr r0, _0804CB70 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x36 + adds r1, 0x28 + movs r2, 0 + bl sub_812256C + ldr r1, _0804CB74 @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804CEC2 + .align 2, 0 +_0804CB70: .4byte gUnknown_2031DA8 +_0804CB74: .4byte gUnknown_30030F0 +_0804CB78: + ldr r0, _0804CB94 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x36 + adds r1, 0x28 + movs r2, 0x1 + bl sub_812256C + ldr r1, _0804CB98 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r1, r7 + b _0804CEC2 + .align 2, 0 +_0804CB94: .4byte gUnknown_2031DA8 +_0804CB98: .4byte gUnknown_30030F0 +_0804CB9C: + ldr r0, _0804CC14 @ =gUnknown_300500C + ldr r0, [r0] + ldr r6, _0804CC18 @ =gUnknown_2031C94 + ldr r1, [r6] + ldr r5, _0804CC1C @ =gUnknown_201C000 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + bl sub_800A404 + lsls r0, 24 + movs r1, 0x80 + lsls r1, 17 + eors r1, r0 + lsrs r1, 24 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0804CC20 @ =gUnknown_2022744 + adds r0, r1 + ldr r1, [r6, 0xC] + str r5, [sp] + str r4, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + ldr r4, _0804CC24 @ =gUnknown_8261ECC + ldr r0, [r4] + ldr r1, [r6, 0x18] + str r5, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + ldr r0, [r4, 0x4] + ldr r1, [r6, 0x20] + movs r2, 0x18 + bl sub_804F728 + ldr r1, _0804CC28 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + ldr r0, _0804CC2C @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0xA8 + strb r2, [r0] + b _0804CEE6 + .align 2, 0 +_0804CC14: .4byte gUnknown_300500C +_0804CC18: .4byte gUnknown_2031C94 +_0804CC1C: .4byte gUnknown_201C000 +_0804CC20: .4byte gUnknown_2022744 +_0804CC24: .4byte gUnknown_8261ECC +_0804CC28: .4byte gUnknown_30030F0 +_0804CC2C: .4byte gUnknown_2031DA8 +_0804CC30: + bl sub_804F610 + lsls r0, 24 + cmp r0, 0 + bne _0804CC3C + b _0804CEE6 +_0804CC3C: + b _0804CEBA +_0804CC3E: + ldr r0, _0804CCFC @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0x1 + movs r2, 0 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0x38 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + movs r6, 0 + add r5, sp, 0x10 + ldr r3, _0804CD00 @ =gUnknown_8261E8A + mov r8, r3 + asrs r0, 1 + ldrb r7, [r3, 0x4] + adds r4, r0, r7 +_0804CC62: + add r1, sp, 0x10 + ldr r0, _0804CD04 @ =gUnknown_8261CC8 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldrh r0, [r5] + adds r0, r6 + strh r0, [r5] + lsls r1, r4, 16 + asrs r1, 16 + add r0, sp, 0x10 + mov r3, r8 + ldrb r2, [r3, 0x5] + movs r3, 0x1 + bl sub_8006F8C + adds r4, 0x20 + adds r6, 0x1 + cmp r6, 0x2 + ble _0804CC62 + bl sub_800A404 + lsls r0, 24 + movs r1, 0x80 + lsls r1, 17 + eors r1, r0 + lsrs r1, 24 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0804CD08 @ =gUnknown_2022744 + adds r1, r0, r1 + movs r0, 0x1 + movs r2, 0 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0x38 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + movs r6, 0 + add r5, sp, 0x10 + ldr r7, _0804CD00 @ =gUnknown_8261E8A + mov r8, r7 + asrs r0, 1 + mov r1, r8 + ldrb r1, [r1, 0x6] + adds r4, r0, r1 +_0804CCC6: + add r1, sp, 0x10 + ldr r0, _0804CD04 @ =gUnknown_8261CC8 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + adds r0, r6, 0x3 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r5] + lsls r1, r4, 16 + asrs r1, 16 + add r0, sp, 0x10 + mov r3, r8 + ldrb r2, [r3, 0x7] + movs r3, 0x1 + bl sub_8006F8C + adds r4, 0x20 + adds r6, 0x1 + cmp r6, 0x2 + ble _0804CCC6 + ldr r1, _0804CD0C @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804CEC2 + .align 2, 0 +_0804CCFC: .4byte gUnknown_300500C +_0804CD00: .4byte gUnknown_8261E8A +_0804CD04: .4byte gUnknown_8261CC8 +_0804CD08: .4byte gUnknown_2022744 +_0804CD0C: .4byte gUnknown_30030F0 +_0804CD10: + ldr r4, _0804CDCC @ =gUnknown_8261CC8 + add r1, sp, 0x10 + adds r0, r4, 0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + add r1, sp, 0x10 + adds r0, r1, 0 + ldrh r0, [r0] + adds r0, 0x6 + strh r0, [r1] + adds r0, r1, 0 + movs r1, 0xD7 + movs r2, 0x97 + movs r3, 0x1 + bl sub_8006F8C + add r0, sp, 0x10 + ldm r4!, {r3,r5,r7} + stm r0!, {r3,r5,r7} + ldm r4!, {r1-r3} + stm r0!, {r1-r3} + add r1, sp, 0x10 + adds r0, r1, 0 + ldrh r0, [r0] + adds r0, 0x7 + strh r0, [r1] + adds r0, r1, 0 + movs r1, 0xF7 + movs r2, 0x97 + movs r3, 0x1 + bl sub_8006F8C + movs r6, 0 + add r4, sp, 0x10 + movs r5, 0xC0 + lsls r5, 13 +_0804CD5C: + add r1, sp, 0x10 + ldr r0, _0804CDCC @ =gUnknown_8261CC8 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + adds r0, r6, 0 + adds r0, 0x8 + ldrh r7, [r4] + adds r0, r7 + strh r0, [r4] + asrs r1, r5, 16 + add r0, sp, 0x10 + movs r2, 0x96 + movs r3, 0x1 + bl sub_8006F8C + movs r0, 0x80 + lsls r0, 14 + adds r5, r0 + adds r6, 0x1 + cmp r6, 0x5 + ble _0804CD5C + ldr r0, _0804CDD0 @ =gUnknown_8261CB0 + ldr r2, _0804CDD4 @ =gUnknown_8261E40 + ldrb r1, [r2] + lsls r1, 19 + movs r3, 0x80 + lsls r3, 14 + adds r1, r3 + asrs r1, 16 + ldrb r2, [r2, 0x1] + lsls r2, 3 + movs r3, 0x2 + bl sub_8006F8C + ldr r2, _0804CDD8 @ =gUnknown_2031DA8 + ldr r1, [r2] + adds r1, 0x34 + movs r3, 0 + strb r0, [r1] + ldr r0, [r2] + adds r0, 0x35 + strb r3, [r0] + ldr r1, _0804CDDC @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0 + bl sub_815036C + b _0804CEE6 + .align 2, 0 +_0804CDCC: .4byte gUnknown_8261CC8 +_0804CDD0: .4byte gUnknown_8261CB0 +_0804CDD4: .4byte gUnknown_8261E40 +_0804CDD8: .4byte gUnknown_2031DA8 +_0804CDDC: .4byte gUnknown_30030F0 +_0804CDE0: + movs r0, 0 + bl sub_804F748 + movs r0, 0 + bl sub_804F020 + ldr r2, _0804CE14 @ =gUnknown_2031DA8 + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x1] + bl sub_804D764 + ldr r1, _0804CE18 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, _0804CE1C @ =0x00000111 + bl sub_80722A0 + b _0804CEE6 + .align 2, 0 +_0804CE14: .4byte gUnknown_2031DA8 +_0804CE18: .4byte gUnknown_30030F0 +_0804CE1C: .4byte 0x00000111 +_0804CE20: + movs r0, 0x1 + bl sub_804F748 + movs r0, 0x1 + bl sub_804F020 + ldr r1, _0804CE44 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0804CE3A: + movs r0, 0 + bl sub_804D694 + b _0804CEBA + .align 2, 0 +_0804CE44: .4byte gUnknown_30030F0 +_0804CE48: + movs r0, 0x1 + bl sub_804D694 + ldr r1, _0804CE58 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804CEC2 + .align 2, 0 +_0804CE58: .4byte gUnknown_30030F0 +_0804CE5C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, _0804CE78 @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804CEC2 + .align 2, 0 +_0804CE78: .4byte gUnknown_30030F0 +_0804CE7C: + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x2 + bl sub_804D694 + ldr r1, _0804CE98 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r1, r7 + b _0804CEC2 + .align 2, 0 +_0804CE98: .4byte gUnknown_30030F0 +_0804CE9C: + movs r0, 0 + bl sub_804F890 + ldr r1, _0804CEAC @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _0804CEC2 + .align 2, 0 +_0804CEAC: .4byte gUnknown_30030F0 +_0804CEB0: + movs r0, 0x1 + bl sub_804F890 + bl sub_804F964 +_0804CEBA: + ldr r1, _0804CECC @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 +_0804CEC2: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0804CEE6 + .align 2, 0 +_0804CECC: .4byte gUnknown_30030F0 +_0804CED0: + ldr r0, _0804CF08 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0804CEE6 + ldr r0, _0804CF0C @ =sub_804DFF0 + str r0, [r3] + ldr r0, _0804CF10 @ =sub_804D638 + bl sub_8000544 +_0804CEE6: + bl sub_8002DE8 + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0x28 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804CF08: .4byte gUnknown_2037AB8 +_0804CF0C: .4byte sub_804DFF0 +_0804CF10: .4byte sub_804D638 + thumb_func_end sub_804C728 + + thumb_func_start sub_804CF14 +sub_804CF14: @ 804CF14 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x24 + ldr r1, _0804CF38 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0x16 + bls _0804CF2E + b _0804D4D2 +_0804CF2E: + lsls r0, 2 + ldr r1, _0804CF3C @ =_0804CF40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804CF38: .4byte gUnknown_30030F0 +_0804CF3C: .4byte _0804CF40 + .align 2, 0 +_0804CF40: + .4byte _0804CF9C + .4byte _0804CFB0 + .4byte _0804CFB8 + .4byte _0804CFC0 + .4byte _0804CFC8 + .4byte _0804CFDC + .4byte _0804D004 + .4byte _0804D00C + .4byte _0804D150 + .4byte _0804D178 + .4byte _0804D19C + .4byte _0804D230 + .4byte _0804D24C + .4byte _0804D320 + .4byte _0804D4D2 + .4byte _0804D4D2 + .4byte _0804D414 + .4byte _0804D41C + .4byte _0804D444 + .4byte _0804D480 + .4byte _0804D4A0 + .4byte _0804D4A8 + .4byte _0804D4C0 +_0804CF9C: + bl sub_804C600 + ldr r1, _0804CFAC @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804D4B4 + .align 2, 0 +_0804CFAC: .4byte gUnknown_30030F0 +_0804CFB0: + movs r5, 0x87 + lsls r5, 3 + adds r1, r2, r5 + b _0804D200 +_0804CFB8: + movs r7, 0x87 + lsls r7, 3 + adds r1, r2, r7 + b _0804D4B4 +_0804CFC0: + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + b _0804D4B4 +_0804CFC8: + bl sub_8040C3C + ldr r1, _0804CFD8 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0804D4B4 + .align 2, 0 +_0804CFD8: .4byte gUnknown_30030F0 +_0804CFDC: + ldr r0, _0804CFFC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804CFF0 + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 +_0804CFF0: + ldr r1, _0804D000 @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804D4B4 + .align 2, 0 +_0804CFFC: .4byte gUnknown_3003F3C +_0804D000: .4byte gUnknown_30030F0 +_0804D004: + movs r5, 0x87 + lsls r5, 3 + adds r1, r2, r5 + b _0804D4B4 +_0804D00C: + bl sub_8040C80 + ldr r4, _0804D12C @ =gUnknown_2031DA8 + ldr r0, [r4] + ldr r1, _0804D130 @ =gUnknown_2024029 + ldrb r1, [r1] + adds r0, 0x36 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _0804D134 @ =gUnknown_202402A + ldrb r1, [r1] + adds r0, 0x37 + strb r1, [r0] + movs r0, 0 + bl sub_80040B8 + movs r0, 0 + bl sub_804F020 + movs r0, 0x1 + bl sub_804F020 + movs r6, 0 + ldr r0, [r4] + adds r0, 0x36 + ldrb r0, [r0] + cmp r6, r0 + bge _0804D0A8 + mov r8, r4 + ldr r7, _0804D138 @ =gUnknown_8261E40 +_0804D048: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + ldr r0, _0804D13C @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + ldrb r2, [r7] + lsls r2, 19 + movs r1, 0xE0 + lsls r1, 12 + adds r2, r1 + asrs r2, 16 + ldrb r3, [r7, 0x1] + lsls r3, 19 + ldr r1, _0804D140 @ =0xfff40000 + adds r3, r1 + asrs r3, 16 + movs r1, 0x1 + str r1, [sp] + str r0, [sp, 0x4] + str r1, [sp, 0x8] + adds r0, r5, 0 + ldr r1, _0804D144 @ =sub_809718C + bl sub_8096E18 + mov r2, r8 + ldr r1, [r2] + adds r1, 0x28 + adds r1, r6 + strb r0, [r1] + adds r7, 0x2 + adds r6, 0x1 + ldr r0, [r2] + adds r0, 0x36 + ldrb r0, [r0] + cmp r6, r0 + blt _0804D048 +_0804D0A8: + movs r6, 0 + ldr r1, _0804D12C @ =gUnknown_2031DA8 + ldr r0, [r1] + adds r0, 0x37 + ldrb r0, [r0] + cmp r6, r0 + bge _0804D120 + ldr r0, _0804D138 @ =gUnknown_8261E40 + mov r8, r1 + adds r7, r0, 0 + adds r7, 0xC +_0804D0BE: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + ldr r0, _0804D148 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + ldrb r2, [r7] + lsls r2, 19 + movs r3, 0xE0 + lsls r3, 12 + adds r2, r3 + asrs r2, 16 + ldrb r3, [r7, 0x1] + lsls r3, 19 + ldr r1, _0804D140 @ =0xfff40000 + adds r3, r1 + asrs r3, 16 + movs r1, 0x1 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r5, 0 + ldr r1, _0804D144 @ =sub_809718C + bl sub_8096E18 + mov r2, r8 + ldr r1, [r2] + adds r1, 0x2E + adds r1, r6 + strb r0, [r1] + adds r7, 0x2 + adds r6, 0x1 + ldr r0, [r2] + adds r0, 0x37 + ldrb r0, [r0] + cmp r6, r0 + blt _0804D0BE +_0804D120: + ldr r1, _0804D14C @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804D4B4 + .align 2, 0 +_0804D12C: .4byte gUnknown_2031DA8 +_0804D130: .4byte gUnknown_2024029 +_0804D134: .4byte gUnknown_202402A +_0804D138: .4byte gUnknown_8261E40 +_0804D13C: .4byte gUnknown_2024284 +_0804D140: .4byte 0xfff40000 +_0804D144: .4byte sub_809718C +_0804D148: .4byte gUnknown_202402C +_0804D14C: .4byte gUnknown_30030F0 +_0804D150: + bl sub_8122550 + ldr r0, _0804D170 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x36 + adds r1, 0x28 + movs r2, 0 + bl sub_812256C + ldr r1, _0804D174 @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804D4B4 + .align 2, 0 +_0804D170: .4byte gUnknown_2031DA8 +_0804D174: .4byte gUnknown_30030F0 +_0804D178: + ldr r0, _0804D194 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x36 + adds r1, 0x28 + movs r2, 0x1 + bl sub_812256C + ldr r1, _0804D198 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r1, r7 + b _0804D4B4 + .align 2, 0 +_0804D194: .4byte gUnknown_2031DA8 +_0804D198: .4byte gUnknown_30030F0 +_0804D19C: + ldr r0, _0804D214 @ =gUnknown_300500C + ldr r0, [r0] + ldr r6, _0804D218 @ =gUnknown_2031C94 + ldr r1, [r6] + ldr r5, _0804D21C @ =gUnknown_201C000 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + bl sub_800A404 + lsls r0, 24 + movs r1, 0x80 + lsls r1, 17 + eors r1, r0 + lsrs r1, 24 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0804D220 @ =gUnknown_2022744 + adds r0, r1 + ldr r1, [r6, 0xC] + str r5, [sp] + str r4, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + ldr r4, _0804D224 @ =gUnknown_8261ECC + ldr r0, [r4] + ldr r1, [r6, 0x18] + str r5, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + ldr r0, [r4, 0x4] + ldr r1, [r6, 0x20] + movs r2, 0x18 + bl sub_804F728 + ldr r1, _0804D228 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 +_0804D200: + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + ldr r0, _0804D22C @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0xA8 + strb r2, [r0] + b _0804D4D2 + .align 2, 0 +_0804D214: .4byte gUnknown_300500C +_0804D218: .4byte gUnknown_2031C94 +_0804D21C: .4byte gUnknown_201C000 +_0804D220: .4byte gUnknown_2022744 +_0804D224: .4byte gUnknown_8261ECC +_0804D228: .4byte gUnknown_30030F0 +_0804D22C: .4byte gUnknown_2031DA8 +_0804D230: + bl sub_804F610 + lsls r0, 24 + cmp r0, 0 + bne _0804D23C + b _0804D4D2 +_0804D23C: + ldr r1, _0804D248 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0804D4B4 + .align 2, 0 +_0804D248: .4byte gUnknown_30030F0 +_0804D24C: + ldr r0, _0804D30C @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0x1 + movs r2, 0 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0x38 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + movs r6, 0 + add r5, sp, 0xC + ldr r3, _0804D310 @ =gUnknown_8261E8A + mov r8, r3 + asrs r0, 1 + ldrb r7, [r3, 0x4] + adds r4, r0, r7 +_0804D270: + add r1, sp, 0xC + ldr r0, _0804D314 @ =gUnknown_8261CC8 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldrh r0, [r5] + adds r0, r6 + strh r0, [r5] + lsls r1, r4, 16 + asrs r1, 16 + add r0, sp, 0xC + mov r3, r8 + ldrb r2, [r3, 0x5] + movs r3, 0x1 + bl sub_8006F8C + adds r4, 0x20 + adds r6, 0x1 + cmp r6, 0x2 + ble _0804D270 + bl sub_800A404 + lsls r0, 24 + movs r1, 0x80 + lsls r1, 17 + eors r1, r0 + lsrs r1, 24 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0804D318 @ =gUnknown_2022744 + adds r1, r0, r1 + movs r0, 0x1 + movs r2, 0 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0x38 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + movs r6, 0 + add r5, sp, 0xC + ldr r7, _0804D310 @ =gUnknown_8261E8A + mov r8, r7 + asrs r0, 1 + mov r1, r8 + ldrb r1, [r1, 0x6] + adds r4, r0, r1 +_0804D2D4: + add r1, sp, 0xC + ldr r0, _0804D314 @ =gUnknown_8261CC8 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + adds r0, r6, 0x3 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r5] + lsls r1, r4, 16 + asrs r1, 16 + add r0, sp, 0xC + mov r3, r8 + ldrb r2, [r3, 0x7] + movs r3, 0x1 + bl sub_8006F8C + adds r4, 0x20 + adds r6, 0x1 + cmp r6, 0x2 + ble _0804D2D4 + ldr r1, _0804D31C @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804D4B4 + .align 2, 0 +_0804D30C: .4byte gUnknown_300500C +_0804D310: .4byte gUnknown_8261E8A +_0804D314: .4byte gUnknown_8261CC8 +_0804D318: .4byte gUnknown_2022744 +_0804D31C: .4byte gUnknown_30030F0 +_0804D320: + ldr r4, _0804D3B0 @ =gUnknown_8261CC8 + add r1, sp, 0xC + adds r0, r4, 0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + add r1, sp, 0xC + adds r0, r1, 0 + ldrh r0, [r0] + adds r0, 0x6 + strh r0, [r1] + adds r0, r1, 0 + movs r1, 0xD7 + movs r2, 0x97 + movs r3, 0x1 + bl sub_8006F8C + add r0, sp, 0xC + ldm r4!, {r3,r5,r7} + stm r0!, {r3,r5,r7} + ldm r4!, {r1-r3} + stm r0!, {r1-r3} + add r1, sp, 0xC + adds r0, r1, 0 + ldrh r0, [r0] + adds r0, 0x7 + strh r0, [r1] + adds r0, r1, 0 + movs r1, 0xF7 + movs r2, 0x97 + movs r3, 0x1 + bl sub_8006F8C + movs r6, 0 + add r4, sp, 0xC + movs r5, 0xC0 + lsls r5, 13 +_0804D36C: + add r1, sp, 0xC + ldr r0, _0804D3B0 @ =gUnknown_8261CC8 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + adds r0, r6, 0 + adds r0, 0x8 + ldrh r7, [r4] + adds r0, r7 + strh r0, [r4] + asrs r1, r5, 16 + add r0, sp, 0xC + movs r2, 0x96 + movs r3, 0x1 + bl sub_8006F8C + movs r0, 0x80 + lsls r0, 14 + adds r5, r0 + adds r6, 0x1 + cmp r6, 0x5 + ble _0804D36C + ldr r4, _0804D3B4 @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x35 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _0804D3B8 + bl sub_8138B20 + ldr r1, [r4] + b _0804D3C0 + .align 2, 0 +_0804D3B0: .4byte gUnknown_8261CC8 +_0804D3B4: .4byte gUnknown_2031DA8 +_0804D3B8: + bl sub_8138B20 + ldr r1, [r4] + adds r0, 0x6 +_0804D3C0: + adds r1, 0x35 + strb r0, [r1] + ldr r0, _0804D404 @ =gUnknown_8261CB0 + ldr r3, _0804D408 @ =gUnknown_8261E40 + ldr r4, _0804D40C @ =gUnknown_2031DA8 + ldr r1, [r4] + adds r1, 0x35 + ldrb r2, [r1] + lsls r2, 1 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, 19 + movs r5, 0x80 + lsls r5, 14 + adds r1, r5 + asrs r1, 16 + adds r3, 0x1 + adds r2, r3 + ldrb r2, [r2] + lsls r2, 3 + movs r3, 0x2 + bl sub_8006F8C + ldr r1, [r4] + adds r1, 0x34 + strb r0, [r1] + ldr r0, _0804D410 @ =gUnknown_30030F0 + movs r7, 0x87 + lsls r7, 3 + adds r0, r7 + movs r1, 0x10 + strb r1, [r0] + b _0804D4D2 + .align 2, 0 +_0804D404: .4byte gUnknown_8261CB0 +_0804D408: .4byte gUnknown_8261E40 +_0804D40C: .4byte gUnknown_2031DA8 +_0804D410: .4byte gUnknown_30030F0 +_0804D414: + movs r0, 0 + bl sub_804D694 + b _0804D4AC +_0804D41C: + movs r0, 0x1 + bl sub_804D694 + ldr r2, _0804D43C @ =gUnknown_2031DA8 + ldr r0, [r2] + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, 0x1] + bl sub_804D764 + ldr r1, _0804D440 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0804D4B4 + .align 2, 0 +_0804D43C: .4byte gUnknown_2031DA8 +_0804D440: .4byte gUnknown_30030F0 +_0804D444: + ldr r2, _0804D478 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, _0804D47C @ =gUnknown_30030F0 + movs r3, 0x87 + lsls r3, 3 + adds r1, r3 + b _0804D4B4 + .align 2, 0 +_0804D478: .4byte gUnknown_2037AB8 +_0804D47C: .4byte gUnknown_30030F0 +_0804D480: + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x2 + bl sub_804D694 + ldr r1, _0804D49C @ =gUnknown_30030F0 + movs r5, 0x87 + lsls r5, 3 + adds r1, r5 + b _0804D4B4 + .align 2, 0 +_0804D49C: .4byte gUnknown_30030F0 +_0804D4A0: + movs r7, 0x87 + lsls r7, 3 + adds r1, r2, r7 + b _0804D4B4 +_0804D4A8: + bl sub_804F964 +_0804D4AC: + ldr r1, _0804D4BC @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 +_0804D4B4: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0804D4D2 + .align 2, 0 +_0804D4BC: .4byte gUnknown_30030F0 +_0804D4C0: + ldr r0, _0804D4F0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0804D4D2 + ldr r0, _0804D4F4 @ =sub_804D638 + bl sub_8000544 +_0804D4D2: + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0x24 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804D4F0: .4byte gUnknown_2037AB8 +_0804D4F4: .4byte sub_804D638 + thumb_func_end sub_804CF14 + + thumb_func_start sub_804D4F8 +sub_804D4F8: @ 804D4F8 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_804D4F8 + + thumb_func_start sub_804D50C +sub_804D50C: @ 804D50C + push {r4,lr} + sub sp, 0x4 + ldr r4, _0804D544 @ =gUnknown_2031DA8 + ldr r1, [r4] + adds r1, 0xA8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bls _0804D53C + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0xA + strb r1, [r0] +_0804D53C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804D544: .4byte gUnknown_2031DA8 + thumb_func_end sub_804D50C + + thumb_func_start sub_804D548 +sub_804D548: @ 804D548 + push {r4,lr} + ldr r0, _0804D580 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0804D59E + ldr r1, _0804D584 @ =gUnknown_2031DA4 + ldr r4, _0804D588 @ =gUnknown_2031DA8 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x35 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, 0 + adds r0, 0x7E + ldrb r0, [r0] + strb r0, [r1, 0x1] + ldr r0, _0804D58C @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804D590 + adds r1, r2, 0 + adds r1, 0x6F + movs r0, 0x10 + strb r0, [r1] + b _0804D59E + .align 2, 0 +_0804D580: .4byte gUnknown_2037AB8 +_0804D584: .4byte gUnknown_2031DA4 +_0804D588: .4byte gUnknown_2031DA8 +_0804D58C: .4byte gUnknown_3003F3C +_0804D590: + movs r0, 0x20 + bl sub_800AA80 + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0xD + strb r1, [r0] +_0804D59E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804D548 + + thumb_func_start sub_804D5A4 +sub_804D5A4: @ 804D5A4 + push {r4,r5,lr} + ldr r5, _0804D5E4 @ =gUnknown_30030F0 + ldr r0, _0804D5E8 @ =sub_804C718 + str r0, [r5, 0x8] + ldr r0, _0804D5EC @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804D5FC + bl sub_80FA4F8 + lsls r0, 24 + cmp r0, 0 + beq _0804D620 + ldr r0, _0804D5F0 @ =gUnknown_2031C90 + ldr r0, [r0] + bl sub_8002BC4 + bl sub_8003ECC + ldr r0, _0804D5F4 @ =gUnknown_2031DA8 + ldr r0, [r0] + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] + bl sub_80FCE44 + ldr r0, _0804D5F8 @ =sub_8050138 + bl sub_8000544 + b _0804D620 + .align 2, 0 +_0804D5E4: .4byte gUnknown_30030F0 +_0804D5E8: .4byte sub_804C718 +_0804D5EC: .4byte gUnknown_3003F3C +_0804D5F0: .4byte gUnknown_2031C90 +_0804D5F4: .4byte gUnknown_2031DA8 +_0804D5F8: .4byte sub_8050138 +_0804D5FC: + ldr r0, _0804D628 @ =gUnknown_3003F64 + ldrb r4, [r0] + cmp r4, 0 + bne _0804D620 + ldr r0, _0804D62C @ =gUnknown_2031C90 + ldr r0, [r0] + bl sub_8002BC4 + bl sub_8003ECC + ldr r0, _0804D630 @ =gUnknown_2031DA8 + ldr r0, [r0] + bl sub_8002BC4 + str r4, [r5] + ldr r0, _0804D634 @ =sub_8050138 + bl sub_8000544 +_0804D620: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804D628: .4byte gUnknown_3003F64 +_0804D62C: .4byte gUnknown_2031C90 +_0804D630: .4byte gUnknown_2031DA8 +_0804D634: .4byte sub_8050138 + thumb_func_end sub_804D5A4 + + thumb_func_start sub_804D638 +sub_804D638: @ 804D638 + push {r4,lr} + bl sub_804E9E4 + bl sub_804F4DC + movs r0, 0 + bl sub_804EAE4 + movs r0, 0x1 + bl sub_804EAE4 + ldr r4, _0804D690 @ =gUnknown_2031DA8 + ldr r2, [r4] + ldrb r1, [r2] + adds r0, r1, 0x1 + strb r0, [r2] + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x18 + bl sub_8000A38 + ldr r2, [r4] + ldrb r1, [r2, 0x1] + adds r0, r1, 0 + adds r0, 0xFF + strb r0, [r2, 0x1] + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x1C + bl sub_8000A38 + bl sub_80F6CBC + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804D690: .4byte gUnknown_2031DA8 + thumb_func_end sub_804D638 + + thumb_func_start sub_804D694 +sub_804D694: @ 804D694 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + beq _0804D700 + cmp r4, 0x1 + bgt _0804D6AA + cmp r4, 0 + beq _0804D6B0 + b _0804D75A +_0804D6AA: + cmp r4, 0x2 + beq _0804D728 + b _0804D75A +_0804D6B0: + ldr r0, _0804D6F0 @ =gUnknown_8E9CEDC + movs r1, 0 + movs r2, 0x60 + bl sub_80703EC + ldr r1, _0804D6F4 @ =gUnknown_8E9CF5C + movs r2, 0x94 + lsls r2, 5 + movs r0, 0x1 + movs r3, 0 + bl sub_80017D0 + ldr r1, _0804D6F8 @ =gUnknown_8E9E9FC + movs r0, 0x20 + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002228 + ldr r1, _0804D6FC @ =gUnknown_8260C30 + movs r2, 0x80 + lsls r2, 4 + movs r0, 0x2 + movs r3, 0 + bl sub_8001888 + b _0804D75A + .align 2, 0 +_0804D6F0: .4byte gUnknown_8E9CEDC +_0804D6F4: .4byte gUnknown_8E9CF5C +_0804D6F8: .4byte gUnknown_8E9E9FC +_0804D6FC: .4byte gUnknown_8260C30 +_0804D700: + ldr r1, _0804D724 @ =gUnknown_8261430 + movs r2, 0x80 + lsls r2, 4 + movs r0, 0x3 + movs r3, 0 + bl sub_8001888 + movs r0, 0 + bl sub_804F284 + movs r0, 0x1 + bl sub_804F284 + movs r0, 0x1 + bl sub_80020BC + b _0804D75A + .align 2, 0 +_0804D724: .4byte gUnknown_8261430 +_0804D728: + movs r5, 0x80 + lsls r5, 21 + movs r4, 0x3 +_0804D72E: + lsrs r0, r5, 24 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x80 + lsls r0, 18 + adds r5, r0 + subs r4, 0x1 + cmp r4, 0 + bge _0804D72E + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC +_0804D75A: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_804D694 + + thumb_func_start sub_804D764 +sub_804D764: @ 804D764 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r3, 0 + ldr r5, _0804D7B4 @ =gUnknown_2031DA8 + mov r8, r5 + ldr r0, _0804D7B8 @ =gUnknown_202063C + mov r12, r0 + movs r1, 0x5 + negs r1, r1 + mov r9, r1 + movs r4, 0x6 + movs r7, 0x1 + movs r6, 0 +_0804D782: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0x36 + ldrb r1, [r1] + cmp r3, r1 + bge _0804D7BC + adds r0, 0x28 + adds r0, r3 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r12 + adds r1, 0x3E + ldrb r2, [r1] + mov r0, r9 + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x38 + adds r0, r3 + strb r7, [r0] + b _0804D7C2 + .align 2, 0 +_0804D7B4: .4byte gUnknown_2031DA8 +_0804D7B8: .4byte gUnknown_202063C +_0804D7BC: + adds r0, 0x38 + adds r0, r3 + strb r6, [r0] +_0804D7C2: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0x37 + ldrb r1, [r1] + cmp r3, r1 + bge _0804D7F2 + adds r0, 0x2E + adds r0, r3 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r12 + adds r1, 0x3E + ldrb r2, [r1] + mov r0, r9 + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x38 + adds r0, r4 + strb r7, [r0] + b _0804D7F8 +_0804D7F2: + adds r0, 0x38 + adds r0, r4 + strb r6, [r0] +_0804D7F8: + adds r4, 0x1 + adds r3, 0x1 + cmp r3, 0x5 + ble _0804D782 + ldr r0, [r5] + adds r0, 0x44 + movs r1, 0x1 + strb r1, [r0] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804D764 + + thumb_func_start sub_804D814 +sub_804D814: @ 804D814 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r3, 0 + cmp r3, r2 + bcs _0804D82E +_0804D820: + adds r0, r5, r3 + adds r1, r4, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, 0x1 + cmp r3, r2 + bcc _0804D820 +_0804D82E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_804D814 + + thumb_func_start sub_804D834 +sub_804D834: @ 804D834 + push {r4-r6,lr} + sub sp, 0xC + bl sub_800A404 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0804D858 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x69 + ldrb r0, [r0] + cmp r0, 0x15 + bls _0804D84E + b _0804DB9E +_0804D84E: + lsls r0, 2 + ldr r1, _0804D85C @ =_0804D860 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804D858: .4byte gUnknown_2031DA8 +_0804D85C: .4byte _0804D860 + .align 2, 0 +_0804D860: + .4byte _0804D8B8 + .4byte _0804D8E4 + .4byte _0804DB78 + .4byte _0804D914 + .4byte _0804D928 + .4byte _0804D960 + .4byte _0804DB78 + .4byte _0804D97C + .4byte _0804D990 + .4byte _0804D9C8 + .4byte _0804DB78 + .4byte _0804D9E4 + .4byte _0804D9F8 + .4byte _0804DA30 + .4byte _0804DB78 + .4byte _0804DA58 + .4byte _0804DA6C + .4byte _0804DAA4 + .4byte _0804DB78 + .4byte _0804DACC + .4byte _0804DAE0 + .4byte _0804DB14 +_0804D8B8: + ldr r0, _0804D8D8 @ =gUnknown_2022618 + ldr r1, _0804D8DC @ =gUnknown_2024284 + movs r2, 0xC8 + bl sub_804D814 + ldr r3, _0804D8E0 @ =gUnknown_2031DA8 + ldr r1, [r3] + adds r1, 0x69 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0xA8 + strb r2, [r0] + b _0804DB9E + .align 2, 0 +_0804D8D8: .4byte gUnknown_2022618 +_0804D8DC: .4byte gUnknown_2024284 +_0804D8E0: .4byte gUnknown_2031DA8 +_0804D8E4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _0804D8F0 + b _0804DB9E +_0804D8F0: + bl sub_800A4EC + lsls r0, 24 + cmp r0, 0 + bne _0804D904 + ldr r0, _0804D900 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D900: .4byte gUnknown_2031DA8 +_0804D904: + bl sub_800A550 + ldr r0, _0804D910 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D910: .4byte gUnknown_2031DA8 +_0804D914: + cmp r5, 0 + bne _0804D91E + movs r0, 0x1 + bl sub_800A474 +_0804D91E: + ldr r0, _0804D924 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D924: .4byte gUnknown_2031DA8 +_0804D928: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0804D936 + b _0804DB9E +_0804D936: + ldr r0, _0804D954 @ =gUnknown_202402C + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + lsls r1, 8 + ldr r2, _0804D958 @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xC8 + bl sub_804D814 + bl sub_800A550 + ldr r0, _0804D95C @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D954: .4byte gUnknown_202402C +_0804D958: .4byte gUnknown_2022118 +_0804D95C: .4byte gUnknown_2031DA8 +_0804D960: + ldr r0, _0804D970 @ =gUnknown_2022618 + ldr r1, _0804D974 @ =gUnknown_202434C + movs r2, 0xC8 + bl sub_804D814 + ldr r0, _0804D978 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D970: .4byte gUnknown_2022618 +_0804D974: .4byte gUnknown_202434C +_0804D978: .4byte gUnknown_2031DA8 +_0804D97C: + cmp r5, 0 + bne _0804D986 + movs r0, 0x1 + bl sub_800A474 +_0804D986: + ldr r0, _0804D98C @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D98C: .4byte gUnknown_2031DA8 +_0804D990: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0804D99E + b _0804DB9E +_0804D99E: + ldr r0, _0804D9BC @ =gUnknown_20240F4 + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + lsls r1, 8 + ldr r2, _0804D9C0 @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xC8 + bl sub_804D814 + bl sub_800A550 + ldr r0, _0804D9C4 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D9BC: .4byte gUnknown_20240F4 +_0804D9C0: .4byte gUnknown_2022118 +_0804D9C4: .4byte gUnknown_2031DA8 +_0804D9C8: + ldr r0, _0804D9D8 @ =gUnknown_2022618 + ldr r1, _0804D9DC @ =gUnknown_2024414 + movs r2, 0xC8 + bl sub_804D814 + ldr r0, _0804D9E0 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D9D8: .4byte gUnknown_2022618 +_0804D9DC: .4byte gUnknown_2024414 +_0804D9E0: .4byte gUnknown_2031DA8 +_0804D9E4: + cmp r5, 0 + bne _0804D9EE + movs r0, 0x1 + bl sub_800A474 +_0804D9EE: + ldr r0, _0804D9F4 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804D9F4: .4byte gUnknown_2031DA8 +_0804D9F8: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0804DA06 + b _0804DB9E +_0804DA06: + ldr r0, _0804DA24 @ =gUnknown_20241BC + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + lsls r1, 8 + ldr r2, _0804DA28 @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xC8 + bl sub_804D814 + bl sub_800A550 + ldr r0, _0804DA2C @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804DA24: .4byte gUnknown_20241BC +_0804DA28: .4byte gUnknown_2022118 +_0804DA2C: .4byte gUnknown_2031DA8 +_0804DA30: + ldr r0, _0804DA48 @ =gUnknown_2022618 + ldr r1, _0804DA4C @ =gUnknown_3005008 + ldr r1, [r1] + ldr r2, _0804DA50 @ =0x00002cd0 + adds r1, r2 + movs r2, 0xDC + bl sub_804D814 + ldr r0, _0804DA54 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804DA48: .4byte gUnknown_2022618 +_0804DA4C: .4byte gUnknown_3005008 +_0804DA50: .4byte 0x00002cd0 +_0804DA54: .4byte gUnknown_2031DA8 +_0804DA58: + cmp r5, 0 + bne _0804DA62 + movs r0, 0x3 + bl sub_800A474 +_0804DA62: + ldr r0, _0804DA68 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804DA68: .4byte gUnknown_2031DA8 +_0804DA6C: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0804DA7A + b _0804DB9E +_0804DA7A: + ldr r0, _0804DA98 @ =gUnknown_2031CCC + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + lsls r1, 8 + ldr r2, _0804DA9C @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xD8 + bl sub_804D814 + bl sub_800A550 + ldr r0, _0804DAA0 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804DA98: .4byte gUnknown_2031CCC +_0804DA9C: .4byte gUnknown_2022118 +_0804DAA0: .4byte gUnknown_2031DA8 +_0804DAA4: + ldr r0, _0804DABC @ =gUnknown_2022618 + ldr r1, _0804DAC0 @ =gUnknown_3005008 + ldr r1, [r1] + ldr r2, _0804DAC4 @ =0x0000309c + adds r1, r2 + movs r2, 0xB + bl sub_804D814 + ldr r0, _0804DAC8 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804DABC: .4byte gUnknown_2022618 +_0804DAC0: .4byte gUnknown_3005008 +_0804DAC4: .4byte 0x0000309c +_0804DAC8: .4byte gUnknown_2031DA8 +_0804DACC: + cmp r5, 0 + bne _0804DAD6 + movs r0, 0x4 + bl sub_800A474 +_0804DAD6: + ldr r0, _0804DADC @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804DB96 + .align 2, 0 +_0804DADC: .4byte gUnknown_2031DA8 +_0804DAE0: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0804DB9E + ldr r4, _0804DB0C @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0xA9 + movs r2, 0x1 + adds r1, r5, 0 + eors r1, r2 + lsls r1, 8 + ldr r2, _0804DB10 @ =gUnknown_2022118 + adds r1, r2 + movs r2, 0xB + bl sub_804D814 + bl sub_800A550 + ldr r1, [r4] + b _0804DB96 + .align 2, 0 +_0804DB0C: .4byte gUnknown_2031DA8 +_0804DB10: .4byte gUnknown_2022118 +_0804DB14: + ldr r4, _0804DB68 @ =gUnknown_202402C + ldr r6, _0804DB6C @ =0x0000012f + movs r5, 0x5 +_0804DB1A: + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _0804DB5A + cmp r0, r6 + bne _0804DB5A + adds r0, r4, 0 + movs r1, 0x3 + bl sub_803FBE8 + cmp r0, 0x1 + beq _0804DB5A + adds r0, r4, 0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + mov r0, sp + ldr r1, _0804DB70 @ =gUnknown_8262034 + bl sub_8009370 + cmp r0, 0 + bne _0804DB5A + adds r0, r4, 0 + movs r1, 0x2 + ldr r2, _0804DB74 @ =gUnknown_8246BE5 + bl sub_804037C +_0804DB5A: + adds r4, 0x64 + subs r5, 0x1 + cmp r5, 0 + bge _0804DB1A + movs r0, 0x1 + b _0804DBA0 + .align 2, 0 +_0804DB68: .4byte gUnknown_202402C +_0804DB6C: .4byte 0x0000012f +_0804DB70: .4byte gUnknown_8262034 +_0804DB74: .4byte gUnknown_8246BE5 +_0804DB78: + ldr r2, _0804DBA8 @ =gUnknown_2031DA8 + ldr r1, [r2] + adds r1, 0xA8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r1, r0, 0 + adds r1, 0xA8 + ldrb r0, [r1] + cmp r0, 0xA + bls _0804DB9E + movs r0, 0 + strb r0, [r1] + ldr r1, [r2] +_0804DB96: + adds r1, 0x69 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0804DB9E: + movs r0, 0 +_0804DBA0: + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0804DBA8: .4byte gUnknown_2031DA8 + thumb_func_end sub_804D834 + + thumb_func_start sub_804DBAC +sub_804DBAC: @ 804DBAC + push {lr} + ldr r0, _0804DBC8 @ =gUnknown_841E0A5 + ldr r1, _0804DBCC @ =gUnknown_2031DA8 + ldr r1, [r1] + adds r1, 0x72 + ldrh r1, [r1] + lsls r1, 5 + ldr r2, _0804DBD0 @ =0x06010000 + adds r1, r2 + movs r2, 0x18 + bl sub_804F728 + pop {r0} + bx r0 + .align 2, 0 +_0804DBC8: .4byte gUnknown_841E0A5 +_0804DBCC: .4byte gUnknown_2031DA8 +_0804DBD0: .4byte 0x06010000 + thumb_func_end sub_804DBAC + + thumb_func_start sub_804DBD4 +sub_804DBD4: @ 804DBD4 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + movs r2, 0x1 + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _0804DC58 + ldr r0, _0804DBFC @ =gUnknown_2022118 + ldrh r1, [r0] + ldr r0, _0804DC00 @ =0x0000bbbb + cmp r1, r0 + beq _0804DC38 + cmp r1, r0 + bgt _0804DC08 + ldr r0, _0804DC04 @ =0x0000aabb + cmp r1, r0 + beq _0804DC28 + b _0804DC52 + .align 2, 0 +_0804DBFC: .4byte gUnknown_2022118 +_0804DC00: .4byte 0x0000bbbb +_0804DC04: .4byte 0x0000aabb +_0804DC08: + ldr r0, _0804DC1C @ =0x0000bbcc + cmp r1, r0 + beq _0804DC48 + ldr r0, _0804DC20 @ =0x0000eeaa + cmp r1, r0 + bne _0804DC52 + ldr r0, _0804DC24 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x78 + b _0804DC4E + .align 2, 0 +_0804DC1C: .4byte 0x0000bbcc +_0804DC20: .4byte 0x0000eeaa +_0804DC24: .4byte gUnknown_2031DA8 +_0804DC28: + ldr r0, _0804DC34 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x78 + strb r2, [r0] + b _0804DC52 + .align 2, 0 +_0804DC34: .4byte gUnknown_2031DA8 +_0804DC38: + ldr r0, _0804DC44 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x7A + strb r2, [r0] + b _0804DC52 + .align 2, 0 +_0804DC44: .4byte gUnknown_2031DA8 +_0804DC48: + ldr r0, _0804DC80 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x7A +_0804DC4E: + movs r1, 0x2 + strb r1, [r0] +_0804DC52: + movs r0, 0 + bl sub_800A588 +_0804DC58: + movs r2, 0x2 + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _0804DCEA + ldr r3, _0804DC84 @ =gUnknown_2022118 + movs r1, 0x80 + lsls r1, 1 + adds r0, r3, r1 + ldrh r1, [r0] + ldr r0, _0804DC88 @ =0x0000bbbb + cmp r1, r0 + beq _0804DCCC + cmp r1, r0 + bgt _0804DC90 + ldr r0, _0804DC8C @ =0x0000aabb + cmp r1, r0 + beq _0804DCB0 + b _0804DCE4 + .align 2, 0 +_0804DC80: .4byte gUnknown_2031DA8 +_0804DC84: .4byte gUnknown_2022118 +_0804DC88: .4byte 0x0000bbbb +_0804DC8C: .4byte 0x0000aabb +_0804DC90: + ldr r0, _0804DCA4 @ =0x0000bbcc + cmp r1, r0 + beq _0804DCDC + ldr r0, _0804DCA8 @ =0x0000eeaa + cmp r1, r0 + bne _0804DCE4 + ldr r0, _0804DCAC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x79 + b _0804DCE2 + .align 2, 0 +_0804DCA4: .4byte 0x0000bbcc +_0804DCA8: .4byte 0x0000eeaa +_0804DCAC: .4byte gUnknown_2031DA8 +_0804DCB0: + ldr r2, _0804DCC8 @ =gUnknown_2031DA8 + ldr r1, [r2] + movs r4, 0x81 + lsls r4, 1 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, 0x6 + adds r1, 0x7E + strb r0, [r1] + ldr r0, [r2] + adds r0, 0x79 + b _0804DCD2 + .align 2, 0 +_0804DCC8: .4byte gUnknown_2031DA8 +_0804DCCC: + ldr r0, _0804DCD8 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x7B +_0804DCD2: + movs r1, 0x1 + strb r1, [r0] + b _0804DCE4 + .align 2, 0 +_0804DCD8: .4byte gUnknown_2031DA8 +_0804DCDC: + ldr r0, _0804DCF0 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x7B +_0804DCE2: + strb r2, [r0] +_0804DCE4: + movs r0, 0x1 + bl sub_800A588 +_0804DCEA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804DCF0: .4byte gUnknown_2031DA8 + thumb_func_end sub_804DBD4 + + thumb_func_start sub_804DCF4 +sub_804DCF4: @ 804DCF4 + push {r4,r5,lr} + sub sp, 0x4 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _0804DDD6 + ldr r2, _0804DD20 @ =gUnknown_2022118 + ldrh r1, [r2] + ldr r0, _0804DD24 @ =0x0000ddee + cmp r1, r0 + beq _0804DDC0 + cmp r1, r0 + bgt _0804DD30 + ldr r0, _0804DD28 @ =0x0000ccdd + cmp r1, r0 + beq _0804DDA0 + ldr r0, _0804DD2C @ =0x0000dddd + cmp r1, r0 + beq _0804DD6C + b _0804DDD0 + .align 2, 0 +_0804DD20: .4byte gUnknown_2022118 +_0804DD24: .4byte 0x0000ddee +_0804DD28: .4byte 0x0000ccdd +_0804DD2C: .4byte 0x0000dddd +_0804DD30: + ldr r0, _0804DD40 @ =0x0000eebb + cmp r1, r0 + beq _0804DD44 + adds r0, 0x11 + cmp r1, r0 + beq _0804DD68 + b _0804DDD0 + .align 2, 0 +_0804DD40: .4byte 0x0000eebb +_0804DD44: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + movs r0, 0x4 + bl sub_804F5BC + ldr r0, _0804DD64 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0xB + b _0804DDCE + .align 2, 0 +_0804DD64: .4byte gUnknown_2031DA8 +_0804DD68: + movs r0, 0x5 + b _0804DDC2 +_0804DD6C: + ldr r4, _0804DD9C @ =gUnknown_2031DA8 + ldr r1, [r4] + ldrb r0, [r2, 0x2] + adds r0, 0x6 + adds r1, 0x7E + strb r0, [r1] + movs r0, 0 + bl sub_815036C + ldr r0, [r4] + adds r0, 0x35 + ldrb r0, [r0] + bl sub_804EAAC + ldr r0, [r4] + adds r0, 0x7E + ldrb r0, [r0] + bl sub_804EAAC + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x7 + b _0804DDCE + .align 2, 0 +_0804DD9C: .4byte gUnknown_2031DA8 +_0804DDA0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0804DDBC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0xA + b _0804DDCE + .align 2, 0 +_0804DDBC: .4byte gUnknown_2031DA8 +_0804DDC0: + movs r0, 0x1 +_0804DDC2: + bl sub_804F5BC + ldr r0, _0804DDEC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0x8 +_0804DDCE: + strb r1, [r0] +_0804DDD0: + movs r0, 0 + bl sub_800A588 +_0804DDD6: + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + beq _0804DDE4 + movs r0, 0x1 + bl sub_800A588 +_0804DDE4: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804DDEC: .4byte gUnknown_2031DA8 + thumb_func_end sub_804DCF4 + + thumb_func_start sub_804DDF0 +sub_804DDF0: @ 804DDF0 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _0804DE4C @ =gUnknown_2031DA8 + ldr r2, [r6] + adds r1, r2, 0 + adds r1, 0x78 + ldrb r0, [r1] + cmp r0, 0 + bne _0804DE04 + b _0804DF38 +_0804DE04: + adds r0, r2, 0 + adds r0, 0x79 + ldrb r0, [r0] + cmp r0, 0 + bne _0804DE10 + b _0804DF38 +_0804DE10: + ldrh r1, [r1] + ldr r0, _0804DE50 @ =0x00000101 + cmp r1, r0 + bne _0804DE58 + adds r1, r2, 0 + adds r1, 0x6F + movs r0, 0x6 + strb r0, [r1] + ldr r2, [r6] + adds r1, r2, 0 + adds r1, 0x80 + movs r4, 0 + ldr r0, _0804DE54 @ =0x0000dddd + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0x35 + ldrb r1, [r0] + adds r0, 0x4D + strh r1, [r0] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + ldr r0, [r6] + adds r2, r0, 0 + adds r2, 0x79 + strb r4, [r2] + adds r0, 0x78 + strb r4, [r0] + b _0804DF38 + .align 2, 0 +_0804DE4C: .4byte gUnknown_2031DA8 +_0804DE50: .4byte 0x00000101 +_0804DE54: .4byte 0x0000dddd +_0804DE58: + ldr r0, _0804DEA0 @ =0x00000201 + cmp r1, r0 + bne _0804DEA8 + movs r0, 0x1 + bl sub_804F5BC + ldr r1, [r6] + adds r2, r1, 0 + adds r2, 0x80 + movs r4, 0 + movs r3, 0 + ldr r0, _0804DEA4 @ =0x0000eecc + strh r0, [r2] + adds r1, 0x82 + strh r3, [r1] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x7B + strb r4, [r1] + adds r0, 0x7A + strb r4, [r0] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x79 + strb r4, [r1] + adds r0, 0x78 + strb r4, [r0] + ldr r0, [r6] + adds r0, 0x6F + movs r1, 0x8 + b _0804DF36 + .align 2, 0 +_0804DEA0: .4byte 0x00000201 +_0804DEA4: .4byte 0x0000eecc +_0804DEA8: + movs r0, 0x81 + lsls r0, 1 + cmp r1, r0 + bne _0804DEF4 + movs r0, 0x5 + bl sub_804F5BC + ldr r1, [r6] + adds r2, r1, 0 + adds r2, 0x80 + movs r4, 0 + movs r3, 0 + ldr r0, _0804DEF0 @ =0x0000ddee + strh r0, [r2] + adds r1, 0x82 + strh r3, [r1] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x7B + strb r4, [r1] + adds r0, 0x7A + strb r4, [r0] + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x79 + strb r4, [r1] + adds r0, 0x78 + strb r4, [r0] + ldr r0, [r6] + adds r0, 0x6F + movs r1, 0x8 + b _0804DF36 + .align 2, 0 +_0804DEF0: .4byte 0x0000ddee +_0804DEF4: + ldr r0, _0804DFD8 @ =0x00000202 + cmp r1, r0 + bne _0804DF38 + adds r1, r2, 0 + adds r1, 0x80 + movs r5, 0 + movs r4, 0 + ldr r0, _0804DFDC @ =0x0000eebb + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0x82 + strh r4, [r0] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x79 + strb r5, [r1] + adds r0, 0x78 + strb r5, [r0] + ldr r0, [r6] + adds r0, 0x6F + movs r1, 0xB +_0804DF36: + strb r1, [r0] +_0804DF38: + ldr r5, _0804DFE0 @ =gUnknown_2031DA8 + ldr r3, [r5] + adds r1, r3, 0 + adds r1, 0x7A + ldrb r0, [r1] + cmp r0, 0 + beq _0804DFD0 + adds r0, r3, 0 + adds r0, 0x7B + ldrb r0, [r0] + cmp r0, 0 + beq _0804DFD0 + ldrh r1, [r1] + ldr r0, _0804DFE4 @ =0x00000101 + cmp r1, r0 + bne _0804DF86 + adds r1, r3, 0 + adds r1, 0x80 + movs r4, 0 + movs r2, 0 + ldr r0, _0804DFE8 @ =0x0000ccdd + strh r0, [r1] + adds r0, r3, 0 + adds r0, 0x82 + strh r2, [r0] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + ldr r0, [r5] + adds r0, 0x7A + strb r4, [r0] + ldr r0, [r5] + adds r0, 0x7B + strb r4, [r0] + ldr r0, [r5] + adds r0, 0x6F + movs r1, 0x9 + strb r1, [r0] +_0804DF86: + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x7A + ldrb r0, [r0] + cmp r0, 0x2 + beq _0804DF9C + adds r0, r1, 0 + adds r0, 0x7B + ldrb r0, [r0] + cmp r0, 0x2 + bne _0804DFD0 +_0804DF9C: + movs r0, 0x1 + bl sub_804F5BC + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x80 + movs r4, 0 + movs r3, 0 + ldr r0, _0804DFEC @ =0x0000ddee + strh r0, [r2] + adds r1, 0x82 + strh r3, [r1] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + ldr r0, [r5] + adds r0, 0x7A + strb r4, [r0] + ldr r0, [r5] + adds r0, 0x7B + strb r4, [r0] + ldr r0, [r5] + adds r0, 0x6F + movs r1, 0x8 + strb r1, [r0] +_0804DFD0: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804DFD8: .4byte 0x00000202 +_0804DFDC: .4byte 0x0000eebb +_0804DFE0: .4byte gUnknown_2031DA8 +_0804DFE4: .4byte 0x00000101 +_0804DFE8: .4byte 0x0000ccdd +_0804DFEC: .4byte 0x0000ddee + thumb_func_end sub_804DDF0 + + thumb_func_start sub_804DFF0 +sub_804DFF0: @ 804DFF0 + push {r4,lr} + bl sub_800A404 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_800A4EC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0804E018 + cmp r4, 0 + bne _0804E012 + movs r0, 0 + bl sub_804DBD4 + b _0804E018 +_0804E012: + adds r0, r4, 0 + bl sub_804DCF4 +_0804E018: + cmp r4, 0 + bne _0804E020 + bl sub_804DDF0 +_0804E020: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804DFF0 + + thumb_func_start sub_804E028 +sub_804E028: @ 804E028 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r6, 0 + movs r5, 0 + ldr r2, _0804E05C @ =gUnknown_2031DA8 + ldr r3, [r2] + ldr r4, _0804E060 @ =gUnknown_8261D08 + lsls r2, r1, 1 + adds r2, r1 + lsls r2, 1 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r3, 0x38 + adds r2, r1 + adds r2, r4 +_0804E04E: + ldrb r1, [r2] + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0804E064 + adds r6, r1, 0 + b _0804E06C + .align 2, 0 +_0804E05C: .4byte gUnknown_2031DA8 +_0804E060: .4byte gUnknown_8261D08 +_0804E064: + adds r2, 0x1 + adds r5, 0x1 + cmp r5, 0x5 + ble _0804E04E +_0804E06C: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_804E028 + + thumb_func_start sub_804E074 +sub_804E074: @ 804E074 + push {r4-r7,lr} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r7] + bl sub_804E028 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xC + bne _0804E0CC + ldr r5, _0804E0C4 @ =gUnknown_2031DA8 + ldr r0, [r5] + adds r0, 0x34 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0804E0C8 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0x1 + bl sub_800838C + ldr r2, [r5] + adds r2, 0x34 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xE0 + strh r1, [r0, 0x20] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xA0 + strh r1, [r0, 0x22] + b _0804E114 + .align 2, 0 +_0804E0C4: .4byte gUnknown_2031DA8 +_0804E0C8: .4byte gUnknown_202063C +_0804E0CC: + ldr r4, _0804E128 @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x34 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _0804E12C @ =gUnknown_202063C + adds r0, r5 + movs r1, 0 + bl sub_800838C + ldr r4, [r4] + adds r4, 0x34 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldr r2, _0804E130 @ =gUnknown_8261E40 + lsls r3, r6, 1 + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, 3 + adds r0, 0x20 + strh r0, [r1, 0x20] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + adds r2, 0x1 + adds r3, r2 + ldrb r0, [r3] + lsls r0, 3 + strh r0, [r1, 0x22] +_0804E114: + ldrb r0, [r7] + cmp r0, r6 + beq _0804E120 + movs r0, 0x5 + bl sub_80722CC +_0804E120: + strb r6, [r7] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804E128: .4byte gUnknown_2031DA8 +_0804E12C: .4byte gUnknown_202063C +_0804E130: .4byte gUnknown_8261E40 + thumb_func_end sub_804E074 + + thumb_func_start sub_804E134 +sub_804E134: @ 804E134 + push {r4,lr} + movs r0, 0 + bl sub_804F5BC + ldr r4, _0804E17C @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x5 + strb r1, [r0] + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0804E184 + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0x80 + ldr r0, _0804E180 @ =0x0000aabb + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0x35 + ldrb r1, [r0] + adds r0, 0x4D + strh r1, [r0] + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x80 + movs r2, 0x14 + bl sub_800A448 + b _0804E18C + .align 2, 0 +_0804E17C: .4byte gUnknown_2031DA8 +_0804E180: .4byte 0x0000aabb +_0804E184: + ldr r0, [r4] + adds r0, 0x78 + movs r1, 0x1 + strb r1, [r0] +_0804E18C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804E134 + + thumb_func_start sub_804E194 +sub_804E194: @ 804E194 + push {r4,r5,lr} + sub sp, 0xC + ldr r0, _0804E1B4 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x30] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0804E1BC + ldr r0, _0804E1B8 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x35 + movs r1, 0 + bl sub_804E074 + b _0804E208 + .align 2, 0 +_0804E1B4: .4byte gUnknown_30030F0 +_0804E1B8: .4byte gUnknown_2031DA8 +_0804E1BC: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0804E1D8 + ldr r0, _0804E1D4 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x35 + movs r1, 0x1 + bl sub_804E074 + b _0804E208 + .align 2, 0 +_0804E1D4: .4byte gUnknown_2031DA8 +_0804E1D8: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0804E1F4 + ldr r0, _0804E1F0 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x35 + movs r1, 0x2 + bl sub_804E074 + b _0804E208 + .align 2, 0 +_0804E1F0: .4byte gUnknown_2031DA8 +_0804E1F4: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0804E208 + ldr r0, _0804E27C @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x35 + movs r1, 0x3 + bl sub_804E074 +_0804E208: + ldr r0, _0804E280 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r5, 0x1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0804E2DE + movs r0, 0x5 + bl sub_80722CC + ldr r4, _0804E27C @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x35 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _0804E288 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0x1 + movs r1, 0x11 + bl sub_800445C + ldr r0, _0804E284 @ =gUnknown_8261EE4 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x10 + movs r3, 0x2 + bl sub_810FC80 + movs r0, 0x10 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_810F7D8 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x1 + strb r1, [r0] + b _0804E2DE + .align 2, 0 +_0804E27C: .4byte gUnknown_2031DA8 +_0804E280: .4byte gUnknown_30030F0 +_0804E284: .4byte gUnknown_8261EE4 +_0804E288: + cmp r0, 0xB + bhi _0804E2A6 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x2 + strb r1, [r0] + b _0804E2DE +_0804E2A6: + cmp r0, 0xC + bne _0804E2DE + ldr r0, _0804E31C @ =gUnknown_8261FC4 + str r5, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x4 + strb r1, [r0] + ldr r0, _0804E320 @ =gUnknown_8261ECC + ldr r0, [r0, 0x10] + ldr r1, [r4] + adds r1, 0x72 + ldrh r1, [r1] + lsls r1, 5 + ldr r2, _0804E324 @ =0x06010000 + adds r1, r2 + movs r2, 0x18 + bl sub_804F728 +_0804E2DE: + ldr r0, _0804E328 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _0804E314 + movs r2, 0 + ldr r3, _0804E32C @ =gUnknown_2031DA8 +_0804E2F0: + ldr r0, [r3] + lsls r1, r2, 1 + adds r0, 0x80 + adds r0, r1 + strh r2, [r0] + adds r2, 0x1 + cmp r2, 0x9 + ble _0804E2F0 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0804E32C @ =gUnknown_2031DA8 + ldr r1, [r1] + adds r1, 0x80 + movs r2, 0x14 + bl sub_800A448 +_0804E314: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E31C: .4byte gUnknown_8261FC4 +_0804E320: .4byte gUnknown_8261ECC +_0804E324: .4byte 0x06010000 +_0804E328: .4byte gUnknown_30030F0 +_0804E32C: .4byte gUnknown_2031DA8 + thumb_func_end sub_804E194 + + thumb_func_start sub_804E330 +sub_804E330: @ 804E330 + push {lr} + bl sub_804F3B4 + ldr r3, _0804E378 @ =gUnknown_2031DA8 + ldr r0, [r3] + adds r0, 0x6F + movs r1, 0 + strb r1, [r0] + ldr r2, _0804E37C @ =gUnknown_202063C + ldr r0, [r3] + adds r0, 0x34 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r0, _0804E380 @ =gUnknown_8261ECC + ldr r0, [r0, 0x4] + ldr r1, [r3] + adds r1, 0x72 + ldrh r1, [r1] + lsls r1, 5 + ldr r2, _0804E384 @ =0x06010000 + adds r1, r2 + movs r2, 0x18 + bl sub_804F728 + pop {r0} + bx r0 + .align 2, 0 +_0804E378: .4byte gUnknown_2031DA8 +_0804E37C: .4byte gUnknown_202063C +_0804E380: .4byte gUnknown_8261ECC +_0804E384: .4byte 0x06010000 + thumb_func_end sub_804E330 + + thumb_func_start sub_804E388 +sub_804E388: @ 804E388 + push {lr} + sub sp, 0x4 + bl sub_810FA04 + lsls r0, 24 + asrs r0, 24 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0804E3AA + cmp r0, r1 + ble _0804E462 + cmp r0, 0 + beq _0804E3B6 + cmp r0, 0x1 + beq _0804E3D4 + b _0804E462 +_0804E3AA: + movs r0, 0x5 + bl sub_80722CC + bl sub_804E330 + b _0804E462 +_0804E3B6: + str r0, [sp] + adds r0, r1, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0804E3D0 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0x2 + b _0804E460 + .align 2, 0 +_0804E3D0: .4byte gUnknown_2031DA8 +_0804E3D4: + ldr r0, _0804E3F4 @ =gUnknown_2024284 + ldr r1, _0804E3F8 @ =gUnknown_2024029 + ldrb r1, [r1] + ldr r2, _0804E3FC @ =gUnknown_2031DA8 + ldr r2, [r2] + adds r2, 0x35 + ldrb r2, [r2] + bl sub_804FA14 + cmp r0, 0x5 + bhi _0804E462 + lsls r0, 2 + ldr r1, _0804E400 @ =_0804E404 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804E3F4: .4byte gUnknown_2024284 +_0804E3F8: .4byte gUnknown_2024029 +_0804E3FC: .4byte gUnknown_2031DA8 +_0804E400: .4byte _0804E404 + .align 2, 0 +_0804E404: + .4byte _0804E41C + .4byte _0804E444 + .4byte _0804E44A + .4byte _0804E450 + .4byte _0804E44A + .4byte _0804E450 +_0804E41C: + bl sub_804E134 + ldr r2, _0804E43C @ =gUnknown_202063C + ldr r0, _0804E440 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x34 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + b _0804E460 + .align 2, 0 +_0804E43C: .4byte gUnknown_202063C +_0804E440: .4byte gUnknown_2031DA8 +_0804E444: + movs r0, 0x3 + movs r1, 0x3 + b _0804E454 +_0804E44A: + movs r0, 0x3 + movs r1, 0x6 + b _0804E454 +_0804E450: + movs r0, 0x3 + movs r1, 0x7 +_0804E454: + bl sub_804F488 + ldr r0, _0804E468 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0x8 +_0804E460: + strb r1, [r0] +_0804E462: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0804E468: .4byte gUnknown_2031DA8 + thumb_func_end sub_804E388 + + thumb_func_start sub_804E46C +sub_804E46C: @ 804E46C + push {lr} + ldr r0, _0804E490 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0804E482 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804E48C +_0804E482: + movs r0, 0x5 + bl sub_80722CC + bl sub_804E330 +_0804E48C: + pop {r0} + bx r0 + .align 2, 0 +_0804E490: .4byte gUnknown_30030F0 + thumb_func_end sub_804E46C + + thumb_func_start sub_804E494 +sub_804E494: @ 804E494 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0804E4CC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0804E4FC + ldr r0, _0804E4D0 @ =gUnknown_2031DA8 + ldr r2, [r0] + adds r3, r2, 0 + adds r3, 0x35 + ldrb r1, [r3] + cmp r1, 0x5 + bhi _0804E4DC + ldr r0, _0804E4D4 @ =gUnknown_2024284 + ldrb r1, [r3] + adds r2, 0x36 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _0804E4D8 @ =sub_804CF14 + movs r4, 0x4 + str r4, [sp] + bl sub_81344F8 + b _0804E4F8 + .align 2, 0 +_0804E4CC: .4byte gUnknown_2037AB8 +_0804E4D0: .4byte gUnknown_2031DA8 +_0804E4D4: .4byte gUnknown_2024284 +_0804E4D8: .4byte sub_804CF14 +_0804E4DC: + ldr r0, _0804E504 @ =gUnknown_202402C + subs r1, 0x6 + lsls r1, 24 + lsrs r1, 24 + adds r2, 0x37 + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _0804E508 @ =sub_804CF14 + movs r4, 0x4 + str r4, [sp] + bl sub_81344F8 +_0804E4F8: + bl sub_8003ECC +_0804E4FC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E504: .4byte gUnknown_202402C +_0804E508: .4byte sub_804CF14 + thumb_func_end sub_804E494 + + thumb_func_start sub_804E50C +sub_804E50C: @ 804E50C + push {r4-r7,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + movs r4, 0 + movs r3, 0 + ldr r6, _0804E588 @ =gUnknown_2031DA8 + ldr r7, _0804E58C @ =gUnknown_202402C + cmp r4, r1 + bge _0804E538 +_0804E524: + cmp r2, r3 + beq _0804E532 + adds r0, r5, r3 + ldrb r0, [r0] + adds r0, r4, r0 + lsls r0, 24 + lsrs r4, r0, 24 +_0804E532: + adds r3, 0x1 + cmp r3, r1 + blt _0804E524 +_0804E538: + ldr r0, [r6] + adds r0, 0x7E + ldrb r0, [r0] + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + movs r5, 0x64 + muls r0, r5 + adds r0, r7 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r1, r0, 16 + movs r0, 0xCD + lsls r0, 1 + cmp r1, r0 + beq _0804E564 + cmp r1, 0x97 + bne _0804E590 +_0804E564: + ldr r0, [r6] + adds r0, 0x7E + ldrb r0, [r0] + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + muls r0, r5 + adds r0, r7 + movs r1, 0x50 + bl sub_803FBE8 + cmp r0, 0 + bne _0804E590 + movs r0, 0x2 + b _0804E598 + .align 2, 0 +_0804E588: .4byte gUnknown_2031DA8 +_0804E58C: .4byte gUnknown_202402C +_0804E590: + cmp r4, 0 + beq _0804E596 + movs r4, 0x1 +_0804E596: + adds r0, r4, 0 +_0804E598: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804E50C + + thumb_func_start sub_804E5A0 +sub_804E5A0: @ 804E5A0 + push {r4,r5,lr} + sub sp, 0xC + movs r2, 0 + ldr r0, _0804E5F4 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r3, r1, 0 + adds r3, 0x36 + adds r5, r0, 0 + ldrb r0, [r3] + cmp r2, r0 + bge _0804E5CC + adds r4, r1, 0 + adds r4, 0x45 +_0804E5BA: + mov r1, sp + adds r0, r1, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + ldrb r0, [r3] + cmp r2, r0 + blt _0804E5BA +_0804E5CC: + adds r4, r5, 0 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x36 + ldrb r1, [r1] + adds r0, 0x35 + ldrb r2, [r0] + mov r0, sp + bl sub_804E50C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0804E61C + cmp r0, 0x1 + bgt _0804E5F8 + cmp r0, 0 + beq _0804E5FE + b _0804E668 + .align 2, 0 +_0804E5F4: .4byte gUnknown_2031DA8 +_0804E5F8: + cmp r0, 0x2 + beq _0804E650 + b _0804E668 +_0804E5FE: + movs r0, 0x3 + movs r1, 0x3 + bl sub_804F488 + ldr r0, [r4] + adds r0, 0x80 + ldr r1, _0804E618 @ =0x0000bbcc + strh r1, [r0] + movs r0, 0xB4 + movs r1, 0 + bl sub_804F488 + b _0804E668 + .align 2, 0 +_0804E618: .4byte 0x0000bbcc +_0804E61C: + movs r0, 0x3 + movs r1, 0x1 + bl sub_804F488 + ldr r0, [r4] + adds r0, 0x80 + ldr r1, _0804E64C @ =0x0000bbbb + strh r1, [r0] + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0804E668 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x80 + movs r2, 0x14 + bl sub_800A448 + b _0804E668 + .align 2, 0 +_0804E64C: .4byte 0x0000bbbb +_0804E650: + movs r0, 0x3 + movs r1, 0x8 + bl sub_804F488 + ldr r0, [r5] + adds r0, 0x80 + ldr r1, _0804E670 @ =0x0000bbcc + strh r1, [r0] + movs r0, 0xB4 + movs r1, 0 + bl sub_804F488 +_0804E668: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E670: .4byte 0x0000bbcc + thumb_func_end sub_804E5A0 + + thumb_func_start sub_804E674 +sub_804E674: @ 804E674 + push {r4,lr} + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0804E696 + cmp r1, 0 + bgt _0804E690 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0804E6B0 + b _0804E6EE +_0804E690: + cmp r1, 0x1 + beq _0804E6B0 + b _0804E6EE +_0804E696: + bl sub_804E5A0 + ldr r0, _0804E6AC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0x64 + strb r1, [r0] + movs r0, 0x11 + bl sub_8003FA0 + b _0804E6EE + .align 2, 0 +_0804E6AC: .4byte gUnknown_2031DA8 +_0804E6B0: + movs r0, 0x3 + movs r1, 0x1 + bl sub_804F488 + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0804E6DE + ldr r4, _0804E6F4 @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x80 + ldr r1, _0804E6F8 @ =0x0000bbcc + strh r1, [r0] + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x80 + movs r2, 0x14 + bl sub_800A448 +_0804E6DE: + ldr r0, _0804E6F4 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0x64 + strb r1, [r0] + movs r0, 0x11 + bl sub_8003FA0 +_0804E6EE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E6F4: .4byte gUnknown_2031DA8 +_0804E6F8: .4byte 0x0000bbcc + thumb_func_end sub_804E674 + + thumb_func_start sub_804E6FC +sub_804E6FC: @ 804E6FC + push {r4-r6,lr} + movs r5, 0 + ldr r0, _0804E740 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x37 + ldrb r0, [r0] + subs r0, 0x4 + cmp r5, r0 + bge _0804E738 + movs r6, 0xC0 + lsls r6, 20 +_0804E712: + lsrs r4, r6, 24 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8003F20 + movs r0, 0x80 + lsls r0, 17 + adds r6, r0 + adds r5, 0x1 + ldr r0, _0804E740 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x37 + ldrb r0, [r0] + subs r0, 0x4 + cmp r5, r0 + blt _0804E712 +_0804E738: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804E740: .4byte gUnknown_2031DA8 + thumb_func_end sub_804E6FC + + thumb_func_start sub_804E744 +sub_804E744: @ 804E744 + push {r4,r5,lr} + bl sub_81100C8 + lsls r0, 24 + asrs r5, r0, 24 + cmp r5, 0 + beq _0804E766 + cmp r5, 0 + bgt _0804E760 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _0804E7B8 + b _0804E7C2 +_0804E760: + cmp r5, 0x1 + beq _0804E7B8 + b _0804E7C2 +_0804E766: + movs r0, 0x4 + bl sub_804F5BC + ldr r4, _0804E7AC @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0x80 + ldr r1, _0804E7B0 @ =0x0000eeaa + strh r1, [r2] + adds r0, 0x82 + strh r5, [r0] + movs r0, 0x5 + movs r1, 0 + bl sub_804F488 + ldr r2, _0804E7B4 @ =gUnknown_202063C + ldr r0, [r4] + adds r0, 0x34 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x64 + strb r1, [r0] + bl sub_804E6FC + b _0804E7C2 + .align 2, 0 +_0804E7AC: .4byte gUnknown_2031DA8 +_0804E7B0: .4byte 0x0000eeaa +_0804E7B4: .4byte gUnknown_202063C +_0804E7B8: + movs r0, 0x5 + bl sub_80722CC + bl sub_804E330 +_0804E7C2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_804E744 + + thumb_func_start sub_804E7C8 +sub_804E7C8: @ 804E7C8 + push {r4,lr} + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + bne _0804E7F0 + movs r0, 0 + bl sub_815036C + ldr r4, _0804E800 @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x35 + ldrb r0, [r0] + bl sub_804EAAC + ldr r0, [r4] + adds r0, 0x7E + ldrb r0, [r0] + bl sub_804EAAC +_0804E7F0: + ldr r0, _0804E800 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0x7 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E800: .4byte gUnknown_2031DA8 + thumb_func_end sub_804E7C8 + + thumb_func_start sub_804E804 +sub_804E804: @ 804E804 + push {r4,lr} + ldr r4, _0804E828 @ =gUnknown_2031DA8 + ldr r0, [r4] + adds r0, 0x74 + ldrh r1, [r0] + ldr r0, _0804E82C @ =0x00000505 + cmp r1, r0 + bne _0804E820 + bl sub_804DBAC + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0xE + strb r1, [r0] +_0804E820: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E828: .4byte gUnknown_2031DA8 +_0804E82C: .4byte 0x00000505 + thumb_func_end sub_804E804 + + thumb_func_start sub_804E830 +sub_804E830: @ 804E830 + push {r4,r5,lr} + sub sp, 0xC + ldr r4, _0804E878 @ =gUnknown_2031DA8 + ldr r1, [r4] + adds r1, 0xA8 + ldrb r0, [r1] + adds r0, 0x1 + movs r5, 0 + strb r0, [r1] + ldr r0, [r4] + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0x78 + bls _0804E870 + ldr r0, _0804E87C @ =gUnknown_8261FC4 + movs r1, 0x1 + str r1, [sp] + movs r1, 0xE + str r1, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x3 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + ldr r0, [r4] + adds r0, 0xA8 + strb r5, [r0] + ldr r0, [r4] + adds r0, 0x6F + movs r1, 0x3 + strb r1, [r0] +_0804E870: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E878: .4byte gUnknown_2031DA8 +_0804E87C: .4byte gUnknown_8261FC4 + thumb_func_end sub_804E830 + + thumb_func_start sub_804E880 +sub_804E880: @ 804E880 + push {r4-r6,lr} + ldr r0, _0804E8FC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0804E8F4 + movs r0, 0x5 + bl sub_80722CC + movs r0, 0 + bl sub_815036C + movs r0, 0x1 + bl sub_815036C + movs r6, 0 + movs r5, 0xE0 + lsls r5, 20 +_0804E8A6: + lsrs r4, r5, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_800445C + adds r0, r4, 0 + bl sub_815036C + movs r0, 0x80 + lsls r0, 17 + adds r5, r0 + adds r6, 0x1 + cmp r6, 0x3 + ble _0804E8A6 + movs r0, 0 + bl sub_804F3C8 + movs r0, 0x1 + bl sub_804F3C8 + ldr r2, _0804E900 @ =gUnknown_2031DA8 + ldr r0, [r2] + adds r0, 0x6F + movs r1, 0 + strb r1, [r0] + ldr r3, _0804E904 @ =gUnknown_202063C + ldr r0, [r2] + adds r0, 0x34 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_0804E8F4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804E8FC: .4byte gUnknown_30030F0 +_0804E900: .4byte gUnknown_2031DA8 +_0804E904: .4byte gUnknown_202063C + thumb_func_end sub_804E880 + + thumb_func_start sub_804E908 +sub_804E908: @ 804E908 + push {lr} + ldr r0, _0804E924 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0804E93C + ldr r0, _0804E928 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804E92C + bl sub_800AB9C + b _0804E932 + .align 2, 0 +_0804E924: .4byte gUnknown_2037AB8 +_0804E928: .4byte gUnknown_3003F3C +_0804E92C: + movs r0, 0xC + bl sub_800AA80 +_0804E932: + ldr r0, _0804E940 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0xC + strb r1, [r0] +_0804E93C: + pop {r0} + bx r0 + .align 2, 0 +_0804E940: .4byte gUnknown_2031DA8 + thumb_func_end sub_804E908 + + thumb_func_start sub_804E944 +sub_804E944: @ 804E944 + push {lr} + ldr r0, _0804E978 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0804E988 + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0804E9AA + ldr r0, _0804E97C @ =gUnknown_2031C90 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _0804E980 @ =gUnknown_2031DA8 + ldr r0, [r0] + bl sub_8002BC4 + bl sub_8003ECC + bl sub_80FCE44 + ldr r0, _0804E984 @ =sub_8056854 + bl sub_8000544 + b _0804E9AA + .align 2, 0 +_0804E978: .4byte gUnknown_3003F3C +_0804E97C: .4byte gUnknown_2031C90 +_0804E980: .4byte gUnknown_2031DA8 +_0804E984: .4byte sub_8056854 +_0804E988: + ldr r0, _0804E9B0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0804E9AA + ldr r0, _0804E9B4 @ =gUnknown_2031C90 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _0804E9B8 @ =gUnknown_2031DA8 + ldr r0, [r0] + bl sub_8002BC4 + bl sub_8003ECC + ldr r0, _0804E9BC @ =sub_8056854 + bl sub_8000544 +_0804E9AA: + pop {r0} + bx r0 + .align 2, 0 +_0804E9B0: .4byte gUnknown_3003F64 +_0804E9B4: .4byte gUnknown_2031C90 +_0804E9B8: .4byte gUnknown_2031DA8 +_0804E9BC: .4byte sub_8056854 + thumb_func_end sub_804E944 + + thumb_func_start sub_804E9C0 +sub_804E9C0: @ 804E9C0 + push {lr} + movs r0, 0 + bl sub_80FA484 + lsls r0, 24 + cmp r0, 0 + bne _0804E9DC + bl sub_800AB9C + ldr r0, _0804E9E0 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + movs r1, 0xD + strb r1, [r0] +_0804E9DC: + pop {r0} + bx r0 + .align 2, 0 +_0804E9E0: .4byte gUnknown_2031DA8 + thumb_func_end sub_804E9C0 + + thumb_func_start sub_804E9E4 +sub_804E9E4: @ 804E9E4 + push {lr} + ldr r0, _0804E9FC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x6F + ldrb r0, [r0] + cmp r0, 0x10 + bhi _0804EAA6 + lsls r0, 2 + ldr r1, _0804EA00 @ =_0804EA04 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804E9FC: .4byte gUnknown_2031DA8 +_0804EA00: .4byte _0804EA04 + .align 2, 0 +_0804EA04: + .4byte _0804EA48 + .4byte _0804EA4E + .4byte _0804EA54 + .4byte _0804EA5A + .4byte _0804EA60 + .4byte _0804EAA6 + .4byte _0804EA66 + .4byte _0804EA6C + .4byte _0804EA72 + .4byte _0804EA78 + .4byte _0804EA7E + .4byte _0804EA84 + .4byte _0804EA8A + .4byte _0804EA90 + .4byte _0804EA96 + .4byte _0804EA9C + .4byte _0804EAA2 +_0804EA48: + bl sub_804E194 + b _0804EAA6 +_0804EA4E: + bl sub_804E388 + b _0804EAA6 +_0804EA54: + bl sub_804E494 + b _0804EAA6 +_0804EA5A: + bl sub_804E674 + b _0804EAA6 +_0804EA60: + bl sub_804E744 + b _0804EAA6 +_0804EA66: + bl sub_804E7C8 + b _0804EAA6 +_0804EA6C: + bl sub_804E804 + b _0804EAA6 +_0804EA72: + bl sub_804E880 + b _0804EAA6 +_0804EA78: + bl sub_804D50C + b _0804EAA6 +_0804EA7E: + bl sub_804D548 + b _0804EAA6 +_0804EA84: + bl sub_804E908 + b _0804EAA6 +_0804EA8A: + bl sub_804E944 + b _0804EAA6 +_0804EA90: + bl sub_804D5A4 + b _0804EAA6 +_0804EA96: + bl sub_804E830 + b _0804EAA6 +_0804EA9C: + bl sub_804E46C + b _0804EAA6 +_0804EAA2: + bl sub_804E9C0 +_0804EAA6: + pop {r0} + bx r0 + thumb_func_end sub_804E9E4 + + thumb_func_start sub_804EAAC +sub_804EAAC: @ 804EAAC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + movs r1, 0x6 + bl __udivsi3 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r3, _0804EAE0 @ =gUnknown_2031DA8 + ldr r0, [r3] + adds r0, 0x74 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _0804EAD8 + movs r0, 0x1 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x76 + adds r0, r2 + strb r4, [r0] +_0804EAD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804EAE0: .4byte gUnknown_2031DA8 + thumb_func_end sub_804EAAC + + thumb_func_start sub_804EAE4 +sub_804EAE4: @ 804EAE4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x68 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0804EB34 @ =gUnknown_2031DA8 + ldr r4, [r0] + adds r0, r4, 0 + adds r0, 0x76 + adds r0, r7 + ldrb r0, [r0] + movs r1, 0x1 + str r1, [sp, 0x60] + cmp r0, 0x5 + bhi _0804EB0C + movs r2, 0 + str r2, [sp, 0x60] +_0804EB0C: + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + movs r0, 0 + mov r8, r0 + adds r0, r4, 0 + adds r0, 0x74 + adds r3, r0, r7 + ldrb r0, [r3] + cmp r0, 0x2 + bne _0804EB2A + b _0804ECB4 +_0804EB2A: + cmp r0, 0x2 + bgt _0804EB38 + cmp r0, 0x1 + beq _0804EB46 + b _0804EE54 + .align 2, 0 +_0804EB34: .4byte gUnknown_2031DA8 +_0804EB38: + cmp r0, 0x3 + bne _0804EB3E + b _0804ECEC +_0804EB3E: + cmp r0, 0x4 + bne _0804EB44 + b _0804EE1C +_0804EB44: + b _0804EE54 +_0804EB46: + movs r5, 0 + adds r0, r4, 0 + adds r0, 0x36 + adds r0, r7 + ldr r1, [sp, 0x60] + lsls r1, 1 + mov r9, r1 + lsls r6, r7, 1 + lsls r2, r7, 4 + str r2, [sp, 0x64] + ldrb r0, [r0] + cmp r8, r0 + bcs _0804EB9A + ldr r0, _0804ECA0 @ =gUnknown_202063C + mov r8, r0 + ldr r4, _0804ECA4 @ =gUnknown_2031DA8 + ldr r0, [sp, 0x60] + add r0, r9 + lsls r2, r0, 1 + movs r3, 0x4 +_0804EB6E: + ldr r0, [r4] + adds r1, r5, r2 + adds r0, 0x28 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [r4] + adds r0, 0x36 + adds r0, r7 + ldrb r0, [r0] + cmp r5, r0 + bcc _0804EB6E +_0804EB9A: + movs r5, 0 + adds r0, r6, r7 + lsls r0, 1 + adds r4, r0, 0x2 +_0804EBA2: + lsls r0, r5, 24 + asrs r0, 24 + adds r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _0804EBA2 + ldr r1, _0804ECA0 @ =gUnknown_202063C + mov r8, r1 + ldr r2, _0804ECA4 @ =gUnknown_2031DA8 + ldr r0, [r2] + ldr r6, [sp, 0x60] + add r6, r9 + lsls r3, r6, 1 + add r10, r3 + adds r0, 0x28 + add r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r0, _0804ECA4 @ =gUnknown_2031DA8 + ldr r4, [r0] + adds r4, 0x28 + add r4, r10 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + movs r1, 0x14 + strh r1, [r0, 0x2E] + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + add r2, r8 + ldr r5, _0804ECA8 @ =gUnknown_8261E40 + lsls r6, 2 + adds r0, r6, r5 + ldrb r0, [r0] + adds r3, 0x1 + lsls r3, 1 + adds r3, r5 + ldrb r1, [r3] + adds r0, r1 + asrs r0, 1 + lsls r0, 3 + adds r0, 0xE + strh r0, [r2, 0x32] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r8 + adds r5, 0x1 + adds r6, r5 + ldrb r0, [r6] + lsls r0, 3 + subs r0, 0xC + strh r0, [r1, 0x36] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldr r1, _0804ECAC @ =sub_809718C + bl sub_8074A68 + ldr r2, _0804ECA4 @ =gUnknown_2031DA8 + ldr r1, [r2] + adds r1, 0x74 + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r0, 0x28 + add r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + bl sub_8075490 + ldr r1, _0804ECB0 @ =gUnknown_8260A32 + ldr r0, [sp, 0x64] + subs r2, r0, r7 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0xF + str r0, [sp] + movs r0, 0x11 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r3, 0 + bl sub_8002228 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0 + bl sub_80020BC + ldr r1, [sp, 0x60] + cmp r1, 0 + beq _0804EC98 + b _0804EE54 +_0804EC98: + bl sub_804F3B4 + b _0804EE54 + .align 2, 0 +_0804ECA0: .4byte gUnknown_202063C +_0804ECA4: .4byte gUnknown_2031DA8 +_0804ECA8: .4byte gUnknown_8261E40 +_0804ECAC: .4byte sub_809718C +_0804ECB0: .4byte gUnknown_8260A32 +_0804ECB4: + ldr r2, _0804ECE4 @ =gUnknown_202063C + ldr r1, [sp, 0x60] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 1 + add r0, r10 + adds r1, r4, 0 + adds r1, 0x28 + adds r1, r0 + ldrb r1, [r1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _0804ECE8 @ =sub_809718C + cmp r1, r0 + beq _0804ECDC + b _0804EE54 +_0804ECDC: + movs r0, 0x3 + strb r0, [r3] + b _0804EE54 + .align 2, 0 +_0804ECE4: .4byte gUnknown_202063C +_0804ECE8: .4byte sub_809718C +_0804ECEC: + ldr r1, _0804EE08 @ =gUnknown_8260834 + ldr r0, [sp, 0x60] + lsls r2, r0, 4 + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0xF + str r0, [sp] + movs r0, 0x11 + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r3, 0 + bl sub_8002228 + movs r0, 0x1 + bl sub_80020BC + ldr r6, _0804EE0C @ =gUnknown_202063C + ldr r1, _0804EE10 @ =gUnknown_2031DA8 + ldr r4, [r1] + ldr r2, [sp, 0x60] + lsls r3, r2, 1 + adds r3, r2 + lsls r1, r3, 1 + mov r2, r10 + adds r0, r2, r1 + adds r4, 0x28 + adds r4, r0 + ldrb r0, [r4] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldr r5, _0804EE14 @ =gUnknown_8261E40 + lsls r3, 2 + adds r0, r3, r5 + ldrb r0, [r0] + adds r1, 0x1 + lsls r1, 1 + adds r1, r5 + ldrb r1, [r1] + adds r0, r1 + asrs r0, 1 + lsls r0, 3 + adds r0, 0xE + strh r0, [r2, 0x20] + ldrb r0, [r4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r5, 0x1 + adds r3, r5 + ldrb r0, [r3] + lsls r0, 3 + subs r0, 0xC + strh r0, [r1, 0x22] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r1, r8 + strh r1, [r0, 0x24] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r2, r8 + strh r2, [r0, 0x26] + add r0, sp, 0x14 + ldr r1, [sp, 0x60] + mov r2, r10 + bl sub_804EE6C + lsls r4, r7, 1 + adds r5, r4, 0 + adds r5, 0xE + lsls r5, 24 + lsrs r5, 24 + lsls r0, 24 + asrs r0, 24 + movs r2, 0x50 + subs r2, r0 + lsrs r0, r2, 31 + adds r2, r0 + asrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0804EE18 @ =gUnknown_8261F18 + mov r8, r0 + str r0, [sp] + movs r1, 0 + str r1, [sp, 0x4] + add r0, sp, 0x14 + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r3, 0x4 + bl sub_812E51C + add r6, sp, 0x28 + adds r0, r6, 0 + ldr r1, [sp, 0x60] + mov r2, r10 + bl sub_804EED4 + adds r4, 0xF + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + mov r2, r8 + str r2, [sp, 0x8] + str r1, [sp, 0xC] + str r6, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_812E5A4 + adds r0, r5, 0 + bl sub_8003FA0 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0804EE10 @ =gUnknown_2031DA8 + ldr r1, [r0] + b _0804EE4A + .align 2, 0 +_0804EE08: .4byte gUnknown_8260834 +_0804EE0C: .4byte gUnknown_202063C +_0804EE10: .4byte gUnknown_2031DA8 +_0804EE14: .4byte gUnknown_8261E40 +_0804EE18: .4byte gUnknown_8261F18 +_0804EE1C: + ldr r0, _0804EE64 @ =gUnknown_8262055 + lsls r1, r7, 1 + adds r4, r1, r0 + ldrb r2, [r4] + adds r2, 0x4 + lsls r2, 24 + lsrs r2, 24 + adds r0, 0x1 + adds r1, r0 + ldrb r3, [r1] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4] + str r0, [sp] + ldrb r0, [r1] + str r0, [sp, 0x4] + adds r0, r7, 0 + mov r1, r10 + bl sub_804F08C + ldr r2, _0804EE68 @ =gUnknown_2031DA8 + ldr r1, [r2] +_0804EE4A: + adds r1, 0x74 + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0804EE54: + add sp, 0x68 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804EE64: .4byte gUnknown_8262055 +_0804EE68: .4byte gUnknown_2031DA8 + thumb_func_end sub_804EAE4 + + thumb_func_start sub_804EE6C +sub_804EE6C: @ 804EE6C + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r1, 24 + lsls r2, 24 + lsrs r2, 24 + cmp r1, 0 + bne _0804EE94 + movs r0, 0x64 + muls r0, r2 + ldr r1, _0804EE90 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + b _0804EEA4 + .align 2, 0 +_0804EE90: .4byte gUnknown_2024284 +_0804EE94: + movs r0, 0x64 + muls r0, r2 + ldr r1, _0804EED0 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 +_0804EEA4: + adds r0, r4, 0 + mov r1, sp + bl sub_8008CF4 + movs r0, 0 + movs r1, 0x2 + bl sub_80F79D8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + adds r1, r4, 0 + bl sub_8005ED4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0804EED0: .4byte gUnknown_202402C + thumb_func_end sub_804EE6C + + thumb_func_start sub_804EED4 +sub_804EED4: @ 804EED4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0804EF1C @ =gUnknown_2031DA8 + ldr r1, [r0] + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 1 + adds r0, r2, r0 + adds r1, 0x51 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _0804EF8C + movs r4, 0 + movs r0, 0x64 + adds r5, r2, 0 + muls r5, r0 + ldr r0, _0804EF20 @ =gUnknown_2024284 + mov r9, r0 + ldr r2, _0804EF24 @ =gUnknown_202402C + mov r8, r2 +_0804EF0E: + cmp r7, 0 + bne _0804EF28 + adds r1, r4, 0 + adds r1, 0xD + mov r2, r9 + b _0804EF2E + .align 2, 0 +_0804EF1C: .4byte gUnknown_2031DA8 +_0804EF20: .4byte gUnknown_2024284 +_0804EF24: .4byte gUnknown_202402C +_0804EF28: + adds r1, r4, 0 + adds r1, 0xD + mov r2, r8 +_0804EF2E: + adds r0, r5, r2 + movs r2, 0 + bl sub_803FBE8 + lsls r1, r4, 1 + add r1, sp + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _0804EF0E + ldr r1, _0804EF80 @ =gUnknown_8261EB6 + adds r0, r6, 0 + bl sub_8008D84 + movs r4, 0 +_0804EF50: + lsls r0, r4, 1 + mov r2, sp + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _0804EF6C + adds r1, r0, 0 + movs r0, 0xD + muls r1, r0 + ldr r0, _0804EF84 @ =gUnknown_8247094 + adds r1, r0 + adds r0, r6, 0 + bl sub_8008DA4 +_0804EF6C: + adds r0, r6, 0 + ldr r1, _0804EF88 @ =gUnknown_8261EC7 + bl sub_8008DA4 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _0804EF50 + b _0804EF9C + .align 2, 0 +_0804EF80: .4byte gUnknown_8261EB6 +_0804EF84: .4byte gUnknown_8247094 +_0804EF88: .4byte gUnknown_8261EC7 +_0804EF8C: + ldr r1, _0804EFAC @ =gUnknown_8261EB6 + adds r0, r6, 0 + bl sub_8008D84 + ldr r1, _0804EFB0 @ =gUnknown_841E09F + adds r0, r6, 0 + bl sub_8008DA4 +_0804EF9C: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804EFAC: .4byte gUnknown_8261EB6 +_0804EFB0: .4byte gUnknown_841E09F + thumb_func_end sub_804EED4 + + thumb_func_start sub_804EFB4 +sub_804EFB4: @ 804EFB4 + push {r4-r6,lr} + sub sp, 0xC + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + adds r1, 0x2 + lsls r4, 24 + asrs r4, 24 + adds r4, r1 + lsls r4, 24 + lsrs r4, 24 + movs r5, 0 + movs r0, 0 + movs r1, 0x2 + bl sub_80F79D8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + adds r1, r6, 0 + bl sub_8005ED4 + movs r2, 0x40 + subs r2, r0 + lsrs r2, 1 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0804F01C @ =gUnknown_8261F18 + str r0, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0 + movs r3, 0x4 + bl sub_812E51C + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804F01C: .4byte gUnknown_8261F18 + thumb_func_end sub_804EFB4 + + thumb_func_start sub_804F020 +sub_804F020: @ 804F020 + push {r4-r7,lr} + sub sp, 0x34 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r7, _0804F080 @ =gUnknown_202402C + cmp r6, 0 + bne _0804F030 + ldr r7, _0804F084 @ =gUnknown_2024284 +_0804F030: + movs r4, 0 + ldr r0, _0804F088 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x36 + adds r0, r6 + ldrb r0, [r0] + cmp r4, r0 + bcs _0804F076 + add r5, sp, 0x14 +_0804F042: + movs r0, 0x64 + muls r0, r4 + adds r0, r7, r0 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + adds r0, r5, 0 + mov r1, sp + bl sub_8008CF4 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_804EFB4 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0804F088 @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x36 + adds r0, r6 + ldrb r0, [r0] + cmp r4, r0 + bcc _0804F042 +_0804F076: + add sp, 0x34 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F080: .4byte gUnknown_202402C +_0804F084: .4byte gUnknown_2024284 +_0804F088: .4byte gUnknown_2031DA8 + thumb_func_end sub_804F020 + + thumb_func_start sub_804F08C +sub_804F08C: @ 804F08C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r4, [sp, 0x3C] + ldr r5, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _0804F0E8 @ =gUnknown_8E9F1FC + movs r0, 0x6 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8002228 + movs r0, 0x1 + bl sub_80020BC + mov r0, r8 + cmp r0, 0 + bne _0804F0F0 + movs r0, 0x64 + muls r0, r7 + ldr r1, _0804F0EC @ =gUnknown_2024284 + b _0804F0F6 + .align 2, 0 +_0804F0E8: .4byte gUnknown_8E9F1FC +_0804F0EC: .4byte gUnknown_2024284 +_0804F0F0: + movs r0, 0x64 + muls r0, r7 + ldr r1, _0804F16C @ =gUnknown_202402C +_0804F0F6: + adds r0, r1 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _0804F170 @ =gUnknown_2031DA8 + ldr r5, [r4] + mov r1, r8 + lsls r2, r1, 1 + adds r1, r2, r1 + lsls r1, 1 + adds r1, r7, r1 + adds r0, r5, 0 + adds r0, 0x51 + adds r0, r1 + ldrb r0, [r0] + str r2, [sp, 0x18] + cmp r0, 0 + bne _0804F174 + adds r0, r6, 0 + movs r1, 0xA + bl __udivsi3 + lsls r0, 24 + lsrs r2, r0, 24 + mov r0, r10 + lsls r3, r0, 5 + cmp r2, 0 + beq _0804F148 + mov r1, r9 + adds r0, r1, r3 + lsls r0, 1 + movs r1, 0x8F + lsls r1, 4 + adds r5, r1 + adds r1, r5, r0 + adds r0, r2, 0 + adds r0, 0x60 + strh r0, [r1] +_0804F148: + ldr r4, [r4] + mov r1, r9 + adds r0, r1, r3 + adds r0, 0x1 + lsls r0, 1 + movs r3, 0x8F + lsls r3, 4 + adds r4, r3 + adds r4, r0 + adds r0, r6, 0 + movs r1, 0xA + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x70 + strh r0, [r4] + b _0804F1B2 + .align 2, 0 +_0804F16C: .4byte gUnknown_202402C +_0804F170: .4byte gUnknown_2031DA8 +_0804F174: + mov r1, r10 + lsls r0, r1, 5 + mov r1, r9 + adds r3, r1, r0 + adds r1, r3, 0 + subs r1, 0x20 + lsls r1, 1 + movs r0, 0x8F + lsls r0, 4 + adds r2, r5, r0 + adds r1, r2, r1 + adds r0, r3, 0 + subs r0, 0x21 + lsls r0, 1 + adds r0, r2, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r1, r3, 0 + subs r1, 0x1F + lsls r1, 1 + adds r1, r2, r1 + adds r0, r3, 0 + subs r0, 0x24 + lsls r0, 1 + adds r2, r0 + ldrh r2, [r2] + movs r3, 0x80 + lsls r3, 3 + adds r0, r3, 0 + orrs r0, r2 + strh r0, [r1] +_0804F1B2: + ldr r0, _0804F1D0 @ =gUnknown_2031DA8 + ldr r1, [r0] + ldr r0, [sp, 0x18] + add r0, r8 + lsls r0, 1 + adds r0, r7, r0 + adds r1, 0x51 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0804F1D4 + movs r2, 0x90 + lsls r2, 3 + b _0804F256 + .align 2, 0 +_0804F1D0: .4byte gUnknown_2031DA8 +_0804F1D4: + mov r0, r8 + cmp r0, 0 + bne _0804F200 + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _0804F1FC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + bl sub_803F720 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + movs r1, 0x2 + add r2, sp, 0xC + bl sub_803FBE8 + b _0804F21E + .align 2, 0 +_0804F1FC: .4byte gUnknown_2024284 +_0804F200: + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _0804F22C @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + bl sub_803F720 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + movs r1, 0x2 + add r2, sp, 0xC + bl sub_803FBE8 +_0804F21E: + cmp r5, 0 + beq _0804F230 + cmp r5, 0xFE + beq _0804F244 + movs r2, 0x83 + b _0804F256 + .align 2, 0 +_0804F22C: .4byte gUnknown_202402C +_0804F230: + add r0, sp, 0xC + movs r1, 0 + bl sub_80466C8 + lsls r0, 24 + movs r2, 0x83 + cmp r0, 0 + bne _0804F256 + movs r2, 0x84 + b _0804F256 +_0804F244: + add r0, sp, 0xC + movs r1, 0xFE + bl sub_80466C8 + lsls r0, 24 + movs r2, 0x83 + cmp r0, 0 + bne _0804F256 + movs r2, 0x85 +_0804F256: + ldr r0, _0804F280 @ =gUnknown_2031DA8 + ldr r1, [r0] + mov r0, r10 + subs r0, 0x1 + lsls r0, 5 + add r0, r9 + adds r0, 0x1 + lsls r0, 1 + movs r3, 0x8F + lsls r3, 4 + adds r1, r3 + adds r1, r0 + strh r2, [r1] + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F280: .4byte gUnknown_2031DA8 + thumb_func_end sub_804F08C + + thumb_func_start sub_804F284 +sub_804F284: @ 804F284 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + movs r7, 0 + ldr r0, _0804F2DC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x36 + adds r0, r6 + ldrb r0, [r0] + cmp r7, r0 + bge _0804F2D4 + lsls r0, r6, 1 + adds r0, r6 + ldr r1, _0804F2E0 @ =gUnknown_8261E5A + lsls r0, 2 + adds r5, r0, r1 + ldr r1, _0804F2E4 @ =gUnknown_8261E72 + adds r4, r0, r1 +_0804F2AA: + lsls r1, r7, 24 + lsrs r1, 24 + ldrb r2, [r5] + ldrb r3, [r5, 0x1] + ldrb r0, [r4] + str r0, [sp] + ldrb r0, [r4, 0x1] + str r0, [sp, 0x4] + adds r0, r6, 0 + bl sub_804F08C + adds r5, 0x2 + adds r4, 0x2 + adds r7, 0x1 + ldr r0, _0804F2DC @ =gUnknown_2031DA8 + ldr r0, [r0] + adds r0, 0x36 + adds r0, r6 + ldrb r0, [r0] + cmp r7, r0 + blt _0804F2AA +_0804F2D4: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F2DC: .4byte gUnknown_2031DA8 +_0804F2E0: .4byte gUnknown_8261E5A +_0804F2E4: .4byte gUnknown_8261E72 + thumb_func_end sub_804F284 + + thumb_func_start sub_804F2E8 +sub_804F2E8: @ 804F2E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + movs r7, 0 + ldr r3, _0804F3A8 @ =gUnknown_2031DA8 + ldr r0, [r3] + adds r0, 0x36 + add r0, r12 + ldrb r0, [r0] + cmp r7, r0 + bge _0804F39A + ldr r6, _0804F3AC @ =gUnknown_202063C + mov r9, r3 + mov r1, r12 + lsls r0, r1, 1 + add r0, r12 + lsls r2, r0, 1 + mov r10, r2 + ldr r1, _0804F3B0 @ =gUnknown_8261E40 + movs r2, 0 + mov r8, r2 + lsls r0, 2 + adds r5, r0, r1 +_0804F320: + mov r1, r9 + ldr r0, [r1] + mov r2, r10 + adds r4, r7, r2 + adds r0, 0x28 + adds r0, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + mov r0, r9 + ldr r3, [r0] + adds r2, r3, 0 + adds r2, 0x28 + adds r2, r4 + ldrb r0, [r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r5] + lsls r0, 3 + adds r0, 0xE + strh r0, [r1, 0x20] + ldrb r0, [r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r5, 0x1] + lsls r0, 3 + subs r0, 0xC + strh r0, [r1, 0x22] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r1, r8 + strh r1, [r0, 0x24] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r2, r8 + strh r2, [r0, 0x26] + adds r5, 0x2 + adds r7, 0x1 + adds r3, 0x36 + add r3, r12 + ldrb r3, [r3] + cmp r7, r3 + blt _0804F320 +_0804F39A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F3A8: .4byte gUnknown_2031DA8 +_0804F3AC: .4byte gUnknown_202063C +_0804F3B0: .4byte gUnknown_8261E40 + thumb_func_end sub_804F2E8 + + thumb_func_start sub_804F3B4 +sub_804F3B4: @ 804F3B4 + push {lr} + movs r0, 0x1 + bl sub_815036C + movs r0, 0x1 + bl sub_804F020 + pop {r0} + bx r0 + thumb_func_end sub_804F3B4 + + thumb_func_start sub_804F3C8 +sub_804F3C8: @ 804F3C8 + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0804F430 @ =gUnknown_8260A32 + lsls r2, r4, 4 + subs r2, r4 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0xF + str r0, [sp] + movs r0, 0x11 + str r0, [sp, 0x4] + movs r6, 0 + str r6, [sp, 0x8] + movs r0, 0x1 + movs r3, 0 + bl sub_8002228 + movs r0, 0x1 + bl sub_80020BC + adds r0, r4, 0 + bl sub_804F284 + adds r0, r4, 0 + bl sub_804F020 + adds r0, r4, 0 + bl sub_804F2E8 + ldr r0, _0804F434 @ =gUnknown_8261ECC + ldr r0, [r0, 0x4] + ldr r5, _0804F438 @ =gUnknown_2031DA8 + ldr r1, [r5] + adds r1, 0x72 + ldrh r1, [r1] + lsls r1, 5 + ldr r2, _0804F43C @ =0x06010000 + adds r1, r2 + movs r2, 0x18 + bl sub_804F728 + ldr r0, [r5] + adds r0, 0x74 + adds r0, r4 + strb r6, [r0] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804F430: .4byte gUnknown_8260A32 +_0804F434: .4byte gUnknown_8261ECC +_0804F438: .4byte gUnknown_2031DA8 +_0804F43C: .4byte 0x06010000 + thumb_func_end sub_804F3C8 + + thumb_func_start sub_804F440 +sub_804F440: @ 804F440 + push {lr} + sub sp, 0x8 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_804F440 + + thumb_func_start sub_804F464 +sub_804F464: @ 804F464 + push {lr} + sub sp, 0x8 + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_804F464 + + thumb_func_start sub_804F488 +sub_804F488: @ 804F488 + push {r4-r7,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + movs r3, 0 + ldr r4, _0804F4C8 @ =gUnknown_2031DA8 + mov r12, r4 + movs r7, 0x8D + lsls r7, 4 +_0804F49C: + mov r1, r12 + ldr r0, [r1] + lsls r1, r3, 3 + adds r2, r0, r1 + adds r0, r2, r7 + ldrb r0, [r0] + cmp r0, 0 + bne _0804F4D0 + ldr r3, _0804F4CC @ =0x000008d2 + adds r0, r2, r3 + strh r5, [r0] + adds r3, 0x2 + adds r0, r2, r3 + strb r6, [r0] + ldr r0, [r4] + adds r0, r1 + movs r1, 0x8D + lsls r1, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _0804F4D6 + .align 2, 0 +_0804F4C8: .4byte gUnknown_2031DA8 +_0804F4CC: .4byte 0x000008d2 +_0804F4D0: + adds r3, 0x1 + cmp r3, 0x3 + ble _0804F49C +_0804F4D6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804F488 + + thumb_func_start sub_804F4DC +sub_804F4DC: @ 804F4DC + push {r4,r5,lr} + movs r4, 0 + ldr r3, _0804F508 @ =gUnknown_2031DA8 +_0804F4E2: + ldr r0, [r3] + lsls r1, r4, 3 + adds r2, r0, r1 + movs r5, 0x8D + lsls r5, 4 + adds r0, r2, r5 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0 + beq _0804F5AC + ldr r0, _0804F50C @ =0x000008d2 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _0804F510 + subs r0, 0x1 + strh r0, [r1] + b _0804F5AC + .align 2, 0 +_0804F508: .4byte gUnknown_2031DA8 +_0804F50C: .4byte 0x000008d2 +_0804F510: + ldr r1, _0804F524 @ =0x000008d4 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0x8 + bhi _0804F59A + lsls r0, 2 + ldr r1, _0804F528 @ =_0804F52C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804F524: .4byte 0x000008d4 +_0804F528: .4byte _0804F52C + .align 2, 0 +_0804F52C: + .4byte _0804F550 + .4byte _0804F56C + .4byte _0804F574 + .4byte _0804F57C + .4byte _0804F57C + .4byte _0804F57C + .4byte _0804F584 + .4byte _0804F58C + .4byte _0804F594 +_0804F550: + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0804F568 @ =gUnknown_2031DA8 + ldr r1, [r1] + adds r1, 0x80 + movs r2, 0x14 + bl sub_800A448 + b _0804F59A + .align 2, 0 +_0804F568: .4byte gUnknown_2031DA8 +_0804F56C: + movs r0, 0 + bl sub_804F5BC + b _0804F59A +_0804F574: + movs r0, 0x2 + bl sub_804F5BC + b _0804F59A +_0804F57C: + movs r0, 0x3 + bl sub_804F5BC + b _0804F59A +_0804F584: + movs r0, 0x6 + bl sub_804F5BC + b _0804F59A +_0804F58C: + movs r0, 0x7 + bl sub_804F5BC + b _0804F59A +_0804F594: + movs r0, 0x8 + bl sub_804F5BC +_0804F59A: + ldr r0, _0804F5B8 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r1, r5 + movs r2, 0x8D + lsls r2, 4 + adds r1, r2 + movs r2, 0 + strb r2, [r1] + adds r3, r0, 0 +_0804F5AC: + adds r4, 0x1 + cmp r4, 0x3 + ble _0804F4E2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804F5B8: .4byte gUnknown_2031DA8 + thumb_func_end sub_804F4DC + + thumb_func_start sub_804F5BC +sub_804F5BC: @ 804F5BC + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + ldr r0, _0804F60C @ =gUnknown_8261EF4 + lsls r4, 2 + adds r4, r0 + ldr r2, [r4] + movs r0, 0x2 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0x3 + movs r3, 0 + bl sub_8002C48 + movs r0, 0 + movs r1, 0x14 + movs r2, 0xC + bl sub_8150048 + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804F60C: .4byte gUnknown_8261EF4 + thumb_func_end sub_804F5BC + + thumb_func_start sub_804F610 +sub_804F610: @ 804F610 + push {r4,lr} + sub sp, 0x8 + ldr r0, _0804F660 @ =gUnknown_2031DA8 + ldr r1, [r0] + adds r3, r1, 0 + adds r3, 0xA8 + ldrb r1, [r3] + adds r4, r0, 0 + cmp r1, 0xD + bhi _0804F64C + ldr r1, _0804F664 @ =gUnknown_2031C94 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [sp] + ldr r0, _0804F668 @ =0xffff0000 + ldr r2, [sp, 0x4] + ands r2, r0 + movs r0, 0x80 + lsls r0, 1 + orrs r2, r0 + str r2, [sp, 0x4] + ldrb r1, [r3] + adds r1, 0xC8 + lsls r1, 16 + ldr r0, _0804F66C @ =0x0000ffff + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x4] +_0804F64C: + ldr r0, [r4] + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0x11 + bhi _0804F71C + lsls r0, 2 + ldr r1, _0804F670 @ =_0804F674 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804F660: .4byte gUnknown_2031DA8 +_0804F664: .4byte gUnknown_2031C94 +_0804F668: .4byte 0xffff0000 +_0804F66C: .4byte 0x0000ffff +_0804F670: .4byte _0804F674 + .align 2, 0 +_0804F674: + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6BC + .4byte _0804F6C0 + .4byte _0804F6D8 + .4byte _0804F6D8 + .4byte _0804F6D8 + .4byte _0804F6D8 + .4byte _0804F6D8 + .4byte _0804F6DC + .4byte _0804F6E8 + .4byte _0804F6F4 + .4byte _0804F710 +_0804F6BC: + mov r0, sp + b _0804F6F6 +_0804F6C0: + mov r0, sp + bl sub_80086DC + ldr r1, _0804F6D4 @ =gUnknown_2031DA8 + ldr r1, [r1] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + b _0804F6FE + .align 2, 0 +_0804F6D4: .4byte gUnknown_2031DA8 +_0804F6D8: + mov r0, sp + b _0804F6F6 +_0804F6DC: + ldr r0, _0804F6E4 @ =gUnknown_8261D00 + bl sub_8008928 + b _0804F6FA + .align 2, 0 +_0804F6E4: .4byte gUnknown_8261D00 +_0804F6E8: + ldr r0, _0804F6F0 @ =gUnknown_8261C60 + bl sub_8008928 + b _0804F6FA + .align 2, 0 +_0804F6F0: .4byte gUnknown_8261C60 +_0804F6F4: + ldr r0, _0804F708 @ =gUnknown_8261C58 +_0804F6F6: + bl sub_80086DC +_0804F6FA: + ldr r0, _0804F70C @ =gUnknown_2031DA8 + ldr r1, [r0] +_0804F6FE: + adds r1, 0xA8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0804F71C + .align 2, 0 +_0804F708: .4byte gUnknown_8261C58 +_0804F70C: .4byte gUnknown_2031DA8 +_0804F710: + ldr r0, [r4] + adds r0, 0xA8 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _0804F71E +_0804F71C: + movs r0, 0 +_0804F71E: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_804F610 + + thumb_func_start sub_804F728 +sub_804F728: @ 804F728 + push {lr} + sub sp, 0x8 + ldr r2, _0804F744 @ =gUnknown_201C000 + str r2, [sp] + movs r2, 0x6 + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_808BEB4 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0804F744: .4byte gUnknown_201C000 + thumb_func_end sub_804F728 + + thumb_func_start sub_804F748 +sub_804F748: @ 804F748 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0 + beq _0804F760 + cmp r0, 0x1 + beq _0804F7F4 + b _0804F880 +_0804F760: + movs r7, 0 + ldr r1, _0804F7A0 @ =gUnknown_2031DA8 + ldr r0, [r1] + adds r0, 0x36 + ldrb r0, [r0] + cmp r7, r0 + blt _0804F770 + b _0804F880 +_0804F770: + adds r6, r1, 0 + movs r5, 0 + mov r9, r5 +_0804F776: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _0804F7A4 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + adds r1, r0, 0 + cmp r1, 0x1 + bne _0804F7A8 + ldr r0, [r6] + adds r0, 0x45 + adds r0, r5 + mov r2, r9 + strb r2, [r0] + ldr r0, [r6] + adds r0, 0x51 + adds r0, r5 + b _0804F7D8 + .align 2, 0 +_0804F7A0: .4byte gUnknown_2031DA8 +_0804F7A4: .4byte gUnknown_2024284 +_0804F7A8: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r1, r0, 0 + cmp r1, 0 + bne _0804F7C6 + ldr r0, [r6] + adds r0, 0x45 + adds r0, r5 + strb r1, [r0] + ldr r0, [r6] + adds r0, 0x51 + adds r0, r5 + b _0804F7D8 +_0804F7C6: + ldr r0, [r6] + adds r0, 0x45 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r6] + adds r0, 0x51 + adds r0, r5 + mov r1, r9 +_0804F7D8: + strb r1, [r0] + ldr r0, _0804F7F0 @ =gUnknown_2031DA8 + adds r5, 0x1 + adds r7, 0x1 + ldr r0, [r0] + adds r0, 0x36 + add r0, r8 + ldrb r0, [r0] + cmp r7, r0 + blt _0804F776 + b _0804F880 + .align 2, 0 +_0804F7F0: .4byte gUnknown_2031DA8 +_0804F7F4: + movs r7, 0 + ldr r1, _0804F834 @ =gUnknown_2031DA8 + ldr r0, [r1] + adds r0, 0x37 + ldrb r0, [r0] + cmp r7, r0 + bge _0804F880 + adds r6, r1, 0 + movs r5, 0x6 + movs r2, 0 + mov r9, r2 +_0804F80A: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _0804F838 @ =gUnknown_202402C + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + adds r1, r0, 0 + cmp r1, 0x1 + bne _0804F83C + ldr r0, [r6] + adds r0, 0x45 + adds r0, r5 + mov r2, r9 + strb r2, [r0] + ldr r0, [r6] + adds r0, 0x51 + adds r0, r5 + b _0804F86C + .align 2, 0 +_0804F834: .4byte gUnknown_2031DA8 +_0804F838: .4byte gUnknown_202402C +_0804F83C: + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + adds r1, r0, 0 + cmp r1, 0 + bne _0804F85A + ldr r0, [r6] + adds r0, 0x45 + adds r0, r5 + strb r1, [r0] + ldr r0, [r6] + adds r0, 0x51 + adds r0, r5 + b _0804F86C +_0804F85A: + ldr r0, [r6] + adds r0, 0x45 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r6] + adds r0, 0x51 + adds r0, r5 + mov r1, r9 +_0804F86C: + strb r1, [r0] + ldr r0, _0804F88C @ =gUnknown_2031DA8 + adds r5, 0x1 + adds r7, 0x1 + ldr r0, [r0] + adds r0, 0x36 + add r0, r8 + ldrb r0, [r0] + cmp r7, r0 + blt _0804F80A +_0804F880: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F88C: .4byte gUnknown_2031DA8 + thumb_func_end sub_804F748 + + thumb_func_start sub_804F890 +sub_804F890: @ 804F890 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0804F8A0 + cmp r0, 0x1 + beq _0804F900 + b _0804F954 +_0804F8A0: + movs r6, 0 + ldr r1, _0804F8F8 @ =gUnknown_2031DA8 + ldr r0, [r1] + adds r0, 0x36 + ldrb r0, [r0] + cmp r6, r0 + bcs _0804F954 + adds r7, r1, 0 +_0804F8B0: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + ldr r0, _0804F8FC @ =gUnknown_2024284 + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r0, r5, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_804A614 + ldr r1, [r7] + adds r1, 0x5D + adds r1, r6 + strb r0, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, [r7] + adds r0, 0x36 + ldrb r0, [r0] + cmp r6, r0 + bcc _0804F8B0 + b _0804F954 + .align 2, 0 +_0804F8F8: .4byte gUnknown_2031DA8 +_0804F8FC: .4byte gUnknown_2024284 +_0804F900: + movs r6, 0 + ldr r1, _0804F95C @ =gUnknown_2031DA8 + ldr r0, [r1] + adds r0, 0x37 + ldrb r0, [r0] + cmp r6, r0 + bcs _0804F954 + adds r7, r1, 0 +_0804F910: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + ldr r0, _0804F960 @ =gUnknown_202402C + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0x3A + bl sub_803FBE8 + adds r1, r0, 0 + lsls r0, r5, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl sub_804A614 + ldr r1, [r7] + adds r1, 0x63 + adds r1, r6 + strb r0, [r1] + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, [r7] + adds r0, 0x37 + ldrb r0, [r0] + cmp r6, r0 + bcc _0804F910 +_0804F954: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F95C: .4byte gUnknown_2031DA8 +_0804F960: .4byte gUnknown_202402C + thumb_func_end sub_804F890 + + thumb_func_start sub_804F964 +sub_804F964: @ 804F964 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r5, 0 +_0804F96C: + movs r4, 0 + ldr r2, _0804F9D0 @ =gUnknown_2031DA8 + ldr r0, [r2] + adds r0, 0x36 + adds r0, r5 + adds r1, r5, 0x1 + mov r8, r1 + ldrb r0, [r0] + cmp r4, r0 + bge _0804F9BE + adds r6, r2, 0 + lsls r0, r5, 1 + adds r0, r5 + lsls r7, r0, 1 +_0804F988: + ldr r2, [r6] + adds r3, r4, r7 + adds r0, r2, 0 + adds r0, 0x28 + adds r0, r3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0804F9D4 @ =gUnknown_202063C + adds r0, r1 + adds r2, 0x5D + adds r2, r3 + ldrb r2, [r2] + movs r1, 0x4 + subs r1, r2 + lsls r1, 24 + lsrs r1, 24 + bl sub_8097414 + adds r4, 0x1 + ldr r0, [r6] + adds r0, 0x36 + adds r0, r5 + ldrb r0, [r0] + cmp r4, r0 + blt _0804F988 +_0804F9BE: + mov r5, r8 + cmp r5, 0x1 + ble _0804F96C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F9D0: .4byte gUnknown_2031DA8 +_0804F9D4: .4byte gUnknown_202063C + thumb_func_end sub_804F964 + + thumb_func_start sub_804F9D8 +sub_804F9D8: @ 804F9D8 + push {r4,r5,lr} + movs r2, 0 + ldr r5, _0804FA08 @ =gUnknown_3005008 + ldr r4, _0804FA0C @ =0x0000309c + ldr r3, _0804FA10 @ =gUnknown_2031DA8 +_0804F9E2: + ldr r0, [r5] + adds r0, r4 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _0804F9FC + ldr r0, [r3] + adds r0, 0xA9 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0804F9FC + strb r0, [r1] +_0804F9FC: + adds r2, 0x1 + cmp r2, 0xA + ble _0804F9E2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804FA08: .4byte gUnknown_3005008 +_0804FA0C: .4byte 0x0000309c +_0804FA10: .4byte gUnknown_2031DA8 + thumb_func_end sub_804F9D8 + + thumb_func_start sub_804FA14 +sub_804FA14: @ 804FA14 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x30 + mov r8, r0 + adds r7, r1, 0 + mov r9, r2 + movs r5, 0 + cmp r5, r7 + bge _0804FA4E + mov r6, sp +_0804FA2C: + movs r0, 0x64 + adds r4, r5, 0 + muls r4, r0 + add r4, r8 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + str r0, [r6, 0x18] + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + stm r6!, {r0} + adds r5, 0x1 + cmp r5, r7 + blt _0804FA2C +_0804FA4E: + bl sub_806E25C + mov r1, r9 + lsls r4, r1, 2 + cmp r0, 0 + bne _0804FA70 + add r0, sp, 0x18 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0x97 + ble _0804FA68 + movs r0, 0x2 + b _0804FB24 +_0804FA68: + cmp r0, 0 + bne _0804FA70 + movs r0, 0x3 + b _0804FB24 +_0804FA70: + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + ldr r0, _0804FAB0 @ =gUnknown_202273C + adds r1, r0 + ldrb r0, [r1] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _0804FAB8 + ldrb r1, [r1, 0x12] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0804FAB8 + add r0, sp, 0x18 + adds r0, r4 + ldr r1, [r0] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bne _0804FAB4 + movs r0, 0x5 + b _0804FB24 + .align 2, 0 +_0804FAB0: .4byte gUnknown_202273C +_0804FAB4: + cmp r1, 0x97 + bgt _0804FADE +_0804FAB8: + mov r1, sp + adds r0, r1, r4 + ldr r1, [r0] + movs r0, 0xCD + lsls r0, 1 + cmp r1, r0 + beq _0804FACA + cmp r1, 0x97 + bne _0804FAE2 +_0804FACA: + movs r0, 0x64 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + add r0, r8 + movs r1, 0x50 + bl sub_803FBE8 + cmp r0, 0 + bne _0804FAE2 +_0804FADE: + movs r0, 0x4 + b _0804FB24 +_0804FAE2: + cmp r7, 0 + ble _0804FB00 + movs r3, 0xCE + lsls r3, 1 + movs r2, 0 + add r1, sp, 0x18 + adds r5, r7, 0 +_0804FAF0: + ldr r0, [r1] + cmp r0, r3 + bne _0804FAF8 + str r2, [r1] +_0804FAF8: + adds r1, 0x4 + subs r5, 0x1 + cmp r5, 0 + bne _0804FAF0 +_0804FB00: + movs r2, 0 + movs r5, 0 + cmp r2, r7 + bge _0804FB1A + add r1, sp, 0x18 +_0804FB0A: + cmp r5, r9 + beq _0804FB12 + ldr r0, [r1] + adds r2, r0 +_0804FB12: + adds r1, 0x4 + adds r5, 0x1 + cmp r5, r7 + blt _0804FB0A +_0804FB1A: + cmp r2, 0 + bne _0804FB22 + movs r0, 0x1 + b _0804FB24 +_0804FB22: + movs r0, 0 +_0804FB24: + add sp, 0x30 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804FA14 + + thumb_func_start sub_804FB34 +sub_804FB34: @ 804FB34 + push {r4-r7,lr} + ldr r0, _0804FBB4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _0804FBC0 + bl sub_800A404 + ldr r6, _0804FBB8 @ =gUnknown_202273C + movs r7, 0x1 + eors r0, r7 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r1, [r1] + subs r0, r1, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _0804FBC0 + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + movs r4, 0x2 + cmp r0, 0x1 + bhi _0804FB6E + movs r4, 0x1 +_0804FB6E: + cmp r4, 0 + ble _0804FBC0 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r1, [r1, 0x12] + movs r5, 0xF0 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0804FBBC + cmp r4, 0x2 + bne _0804FBC0 + bl sub_800A404 + eors r0, r7 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r1, [r1, 0x12] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _0804FBC0 + movs r0, 0x2 + b _0804FBC2 + .align 2, 0 +_0804FBB4: .4byte gUnknown_3003F64 +_0804FBB8: .4byte gUnknown_202273C +_0804FBBC: + movs r0, 0x1 + b _0804FBC2 +_0804FBC0: + movs r0, 0 +_0804FBC2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804FB34 + + thumb_func_start sub_804FBC8 +sub_804FBC8: @ 804FBC8 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0xCD + lsls r0, 1 + cmp r2, r0 + beq _0804FBDE + cmp r2, 0x97 + bne _0804FBE6 +_0804FBDE: + cmp r1, 0 + bne _0804FBE6 + movs r0, 0x1 + b _0804FBE8 +_0804FBE6: + movs r0, 0 +_0804FBE8: + pop {r1} + bx r1 + thumb_func_end sub_804FBC8 + + thumb_func_start sub_804FBEC +sub_804FBEC: @ 804FBEC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + ldr r6, [sp, 0x2C] + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 24 + lsrs r6, 24 + lsls r2, r0, 23 + lsrs r2, 31 + mov r9, r2 + lsls r0, 24 + lsrs r4, r0, 31 + lsls r0, r1, 23 + lsrs r0, 31 + mov r10, r0 + lsls r0, r1, 24 + lsrs r0, 31 + lsls r1, 18 + lsrs r1, 28 + subs r1, 0x4 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0x1 + cmp r1, 0x1 + bhi _0804FC3A + movs r2, 0 +_0804FC3A: + cmp r2, 0 + beq _0804FC4E + cmp r4, 0 + bne _0804FC46 + movs r0, 0x8 + b _0804FCCE +_0804FC46: + cmp r0, 0 + bne _0804FC4E + movs r0, 0x9 + b _0804FCCE +_0804FC4E: + adds r0, r5, 0 + adds r1, r6, 0 + str r3, [sp] + bl sub_804FBC8 + ldr r3, [sp] + cmp r0, 0 + bne _0804FCB2 + movs r0, 0xCE + lsls r0, 1 + cmp r3, r0 + bne _0804FC6E + cmp r7, r3 + beq _0804FC8C + movs r0, 0x2 + b _0804FCCE +_0804FC6E: + ldr r0, _0804FC88 @ =gUnknown_8254784 + lsls r1, r7, 3 + subs r1, r7 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x6] + cmp r0, r8 + beq _0804FC8C + ldrb r0, [r1, 0x7] + cmp r0, r8 + beq _0804FC8C + movs r0, 0x1 + b _0804FCCE + .align 2, 0 +_0804FC88: .4byte gUnknown_8254784 +_0804FC8C: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bne _0804FC9C + cmp r7, r3 + beq _0804FC9C + movs r0, 0x3 + b _0804FCCE +_0804FC9C: + mov r0, r9 + cmp r0, 0 + bne _0804FCBE + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bne _0804FCAE + movs r0, 0x6 + b _0804FCCE +_0804FCAE: + cmp r7, 0x97 + bls _0804FCB6 +_0804FCB2: + movs r0, 0x4 + b _0804FCCE +_0804FCB6: + cmp r3, 0x97 + bls _0804FCBE + movs r0, 0x5 + b _0804FCCE +_0804FCBE: + mov r0, r10 + cmp r0, 0 + bne _0804FCCC + cmp r7, 0x97 + bls _0804FCCC + movs r0, 0x7 + b _0804FCCE +_0804FCCC: + movs r0, 0 +_0804FCCE: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_804FBEC + + thumb_func_start sub_804FCE0 +sub_804FCE0: @ 804FCE0 + push {r4-r6,lr} + lsls r1, 16 + lsrs r5, r1, 16 + adds r6, r5, 0 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 23 + lsrs r4, r0, 31 + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_804FBC8 + cmp r0, 0 + bne _0804FD18 + cmp r4, 0 + bne _0804FD1C + movs r0, 0xCE + lsls r0, 1 + cmp r5, r0 + bne _0804FD10 + movs r0, 0x2 + b _0804FD1E +_0804FD10: + cmp r6, 0x97 + bls _0804FD1C + cmp r6, r0 + beq _0804FD1C +_0804FD18: + movs r0, 0x1 + b _0804FD1E +_0804FD1C: + movs r0, 0 +_0804FD1E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_804FCE0 + + thumb_func_start sub_804FD24 +sub_804FD24: @ 804FD24 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _0804FD40 + movs r0, 0x17 + bl sub_80722CC + movs r0, 0 + strh r0, [r4, 0x2E] +_0804FD40: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804FD24 + + thumb_func_start sub_804FD48 +sub_804FD48: @ 804FD48 + push {r4,r5,lr} + adds r4, r0, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0804FD72 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _0804FD72 + movs r0, 0xBB + bl sub_80722CC + strh r5, [r4, 0x2E] +_0804FD72: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_804FD48 + + thumb_func_start sub_804FD78 +sub_804FD78: @ 804FD78 + push {lr} + adds r2, r0, 0 + movs r0, 0x30 + ldrsh r1, [r2, r0] + cmp r1, 0 + bne _0804FDAE + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _0804FD94 + strh r1, [r2, 0x2E] +_0804FD94: + movs r1, 0x2E + ldrsh r0, [r2, r1] + lsls r0, 1 + ldr r1, _0804FDB4 @ =gUnknown_826CF60 + adds r0, r1 + ldrb r1, [r2, 0x5] + lsrs r1, 4 + adds r1, 0x10 + lsls r1, 4 + adds r1, 0x4 + movs r2, 0x2 + bl sub_80703EC +_0804FDAE: + pop {r0} + bx r0 + .align 2, 0 +_0804FDB4: .4byte gUnknown_826CF60 + thumb_func_end sub_804FD78 + + thumb_func_start sub_804FDB8 +sub_804FDB8: @ 804FDB8 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + adds r1, 0x1 + strh r1, [r2, 0x2E] + ldrh r0, [r2, 0x26] + adds r0, 0x1 + strh r0, [r2, 0x26] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0xA + bne _0804FDD6 + adds r0, r2, 0 + bl sub_8007280 +_0804FDD6: + pop {r0} + bx r0 + thumb_func_end sub_804FDB8 + + thumb_func_start sub_804FDDC +sub_804FDDC: @ 804FDDC + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + adds r1, 0x1 + strh r1, [r2, 0x2E] + ldrh r0, [r2, 0x26] + subs r0, 0x1 + strh r0, [r2, 0x26] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0xA + bne _0804FDFA + adds r0, r2, 0 + bl sub_8007280 +_0804FDFA: + pop {r0} + bx r0 + thumb_func_end sub_804FDDC + + thumb_func_start sub_804FE00 +sub_804FE00: @ 804FE00 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bne _0804FE1C + movs r0, 0xC5 + bl sub_80722CC + movs r0, 0 + strh r0, [r4, 0x2E] +_0804FE1C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804FE00 + + thumb_func_start sub_804FE24 +sub_804FE24: @ 804FE24 + push {r4,r5,lr} + sub sp, 0x20 + ldr r0, _0804FEB0 @ =gUnknown_2031DAC + ldr r0, [r0] + mov r12, r0 + adds r0, 0xD4 + ldrh r1, [r0] + lsls r1, 8 + adds r0, 0x2 + ldrh r2, [r0] + lsls r2, 8 + adds r0, 0x6 + movs r4, 0 + ldrsh r3, [r0, r4] + adds r0, 0x2 + movs r5, 0 + ldrsh r0, [r0, r5] + str r0, [sp] + mov r4, r12 + adds r4, 0xE8 + movs r5, 0 + ldrsh r0, [r4, r5] + str r0, [sp, 0x4] + movs r5, 0 + ldrsh r0, [r4, r5] + str r0, [sp, 0x8] + mov r0, r12 + adds r0, 0xEC + ldrh r0, [r0] + str r0, [sp, 0xC] + add r0, sp, 0x10 + bl sub_8044F78 + add r0, sp, 0x10 + ldrh r1, [r0] + movs r0, 0x20 + bl sub_8000A38 + add r0, sp, 0x10 + ldrh r1, [r0, 0x2] + movs r0, 0x22 + bl sub_8000A38 + add r0, sp, 0x10 + ldrh r1, [r0, 0x4] + movs r0, 0x24 + bl sub_8000A38 + add r0, sp, 0x10 + ldrh r1, [r0, 0x6] + movs r0, 0x26 + bl sub_8000A38 + ldr r1, [sp, 0x18] + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x28 + bl sub_8000A38 + ldr r1, [sp, 0x1C] + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x2C + bl sub_8000A38 + add sp, 0x20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804FEB0: .4byte gUnknown_2031DAC + thumb_func_end sub_804FE24 + + thumb_func_start sub_804FEB4 +sub_804FEB4: @ 804FEB4 + push {r4,lr} + ldr r4, _0804FEFC @ =gUnknown_2031DAC + ldr r0, [r4] + adds r0, 0xE0 + ldrh r1, [r0] + movs r0, 0x16 + bl sub_8000A38 + ldr r0, [r4] + adds r0, 0xE2 + ldrh r1, [r0] + movs r0, 0x14 + bl sub_8000A38 + movs r0, 0 + bl sub_8000AC4 + lsls r0, 16 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + cmp r1, 0 + bne _0804FF00 + ldr r0, [r4] + adds r0, 0xE4 + ldrh r1, [r0] + movs r0, 0x1A + bl sub_8000A38 + ldr r0, [r4] + adds r0, 0xE6 + ldrh r1, [r0] + movs r0, 0x18 + bl sub_8000A38 + b _0804FF04 + .align 2, 0 +_0804FEFC: .4byte gUnknown_2031DAC +_0804FF00: + bl sub_804FE24 +_0804FF04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_804FEB4 + + thumb_func_start sub_804FF0C +sub_804FF0C: @ 804FF0C + push {lr} + bl sub_804FEB4 + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_804FF0C + + thumb_func_start sub_804FF24 +sub_804FF24: @ 804FF24 + push {r4,lr} + ldr r3, _0804FF48 @ =gUnknown_2031DAC + ldr r1, [r3] + movs r0, 0x8A + adds r0, r1 + mov r12, r0 + movs r2, 0 + movs r0, 0 + mov r4, r12 + strh r0, [r4] + adds r1, 0x88 + strb r2, [r1] + ldr r0, [r3] + adds r0, 0x89 + strb r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804FF48: .4byte gUnknown_2031DAC + thumb_func_end sub_804FF24 + + thumb_func_start sub_804FF4C +sub_804FF4C: @ 804FF4C + push {r4,r5,lr} + ldr r0, _0804FF70 @ =gUnknown_2031DAC + ldr r2, [r0] + adds r1, r2, 0 + adds r1, 0x88 + adds r3, r2, 0 + adds r3, 0x89 + ldrb r1, [r1] + adds r5, r0, 0 + ldrb r3, [r3] + cmp r1, r3 + bne _0804FF74 + adds r1, r2, 0 + adds r1, 0x8A + ldrh r0, [r1] + adds r0, 0x1 + b _0804FF7A + .align 2, 0 +_0804FF70: .4byte gUnknown_2031DAC +_0804FF74: + adds r1, r2, 0 + adds r1, 0x8A + movs r0, 0 +_0804FF7A: + strh r0, [r1] + adds r4, r5, 0 + ldr r0, [r4] + adds r0, 0x8A + ldrh r1, [r0] + movs r0, 0x96 + lsls r0, 1 + cmp r1, r0 + bls _0804FFAC + bl sub_80098B8 + ldr r0, _0804FFC0 @ =sub_800ACD4 + bl sub_8000544 + ldr r1, [r4] + adds r3, r1, 0 + adds r3, 0x8A + movs r2, 0 + movs r0, 0 + strh r0, [r3] + adds r1, 0x89 + strb r2, [r1] + ldr r0, [r4] + adds r0, 0x88 + strb r2, [r0] +_0804FFAC: + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x88 + ldrb r1, [r1] + adds r0, 0x89 + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0804FFC0: .4byte sub_800ACD4 + thumb_func_end sub_804FF4C + + thumb_func_start sub_804FFC4 +sub_804FFC4: @ 804FFC4 + push {lr} + ldr r0, _0804FFD4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0804FFD8 + movs r0, 0 + b _0804FFE0 + .align 2, 0 +_0804FFD4: .4byte gUnknown_3003F64 +_0804FFD8: + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 +_0804FFE0: + pop {r1} + bx r1 + thumb_func_end sub_804FFC4 + + thumb_func_start sub_804FFE4 +sub_804FFE4: @ 804FFE4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r4, 0 + mov r8, r4 + cmp r6, 0 + bne _0805000A + ldr r0, _08050034 @ =gUnknown_2031DA4 + ldrb r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08050038 @ =gUnknown_2024284 + adds r1, r0 + mov r8, r1 + movs r4, 0x1 +_0805000A: + cmp r6, 0x1 + bne _08050028 + ldr r0, _08050034 @ =gUnknown_2031DA4 + ldrb r0, [r0, 0x1] + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + ldr r0, _0805003C @ =gUnknown_202402C + adds r1, r0 + mov r8, r1 + movs r4, 0x3 +_08050028: + cmp r5, 0 + beq _08050040 + cmp r5, 0x1 + beq _080500C8 + b _0805011E + .align 2, 0 +_08050034: .4byte gUnknown_2031DA4 +_08050038: .4byte gUnknown_2024284 +_0805003C: .4byte gUnknown_202402C +_08050040: + mov r0, r8 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, r8 + movs r1, 0 + bl sub_803FBE8 + adds r7, r0, 0 + cmp r6, 0 + bne _0805007C + lsls r0, r5, 3 + ldr r1, _08050074 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _08050078 @ =gUnknown_202401C + ldr r1, [r1] + ldr r1, [r1, 0x8] + adds r2, r5, 0 + adds r3, r7, 0 + bl sub_800ECC4 + movs r4, 0 + b _0805009A + .align 2, 0 +_08050074: .4byte gUnknown_82350AC +_08050078: .4byte gUnknown_202401C +_0805007C: + lsls r0, r5, 3 + ldr r1, _080500BC @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080500C0 @ =gUnknown_202401C + ldr r2, [r1] + lsls r4, r6, 1 + adds r1, r4, 0x1 + lsls r1, 2 + adds r2, 0x4 + adds r2, r1 + ldr r1, [r2] + adds r2, r5, 0 + adds r3, r7, 0 + bl sub_800F108 +_0805009A: + mov r0, r8 + bl sub_8044148 + bl sub_800EC28 + ldr r0, _080500C4 @ =gUnknown_2031DAC + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xF0 + adds r0, r4 + strh r5, [r0] + lsls r0, r6, 2 + adds r1, 0x68 + adds r1, r0 + str r7, [r1] + b _0805011E + .align 2, 0 +_080500BC: .4byte gUnknown_82350AC +_080500C0: .4byte gUnknown_202401C +_080500C4: .4byte gUnknown_2031DAC +_080500C8: + mov r0, r8 + bl sub_8044148 + ldrh r0, [r0, 0x4] + adds r1, r4, 0 + bl sub_803F7D4 + ldr r0, _08050128 @ =gUnknown_20244DC + movs r1, 0x78 + movs r2, 0x3C + movs r3, 0x6 + bl sub_8006F8C + ldr r4, _0805012C @ =gUnknown_2031DAC + ldr r1, [r4] + adds r1, 0x8E + adds r1, r6 + strb r0, [r1] + ldr r3, _08050130 @ =gUnknown_202063C + ldr r0, [r4] + adds r0, 0x8E + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0x8E + adds r0, r6 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r3, 0x1C + adds r0, r3 + ldr r1, _08050134 @ =nullsub_8 + str r1, [r0] +_0805011E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08050128: .4byte gUnknown_20244DC +_0805012C: .4byte gUnknown_2031DAC +_08050130: .4byte gUnknown_202063C +_08050134: .4byte nullsub_8 + thumb_func_end sub_804FFE4 + + thumb_func_start sub_8050138 +sub_8050138: @ 8050138 + push {r4-r6,lr} + sub sp, 0x4 + ldr r1, _08050158 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0xC + bls _0805014E + b _08050472 +_0805014E: + lsls r0, 2 + ldr r1, _0805015C @ =_08050160 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08050158: .4byte gUnknown_30030F0 +_0805015C: .4byte _08050160 + .align 2, 0 +_08050160: + .4byte _08050194 + .4byte _08050240 + .4byte _08050288 + .4byte _080502A8 + .4byte _080502F2 + .4byte _08050320 + .4byte _08050344 + .4byte _0805035C + .4byte _08050366 + .4byte _08050380 + .4byte _0805039C + .4byte _08050430 + .4byte _0805044C +_08050194: + ldr r0, _08050228 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _080501A8 + ldr r1, _0805022C @ =gUnknown_202271A + ldr r2, _08050230 @ =0x00001144 + adds r0, r2, 0 + strh r0, [r1] + bl sub_80098B8 +_080501A8: + ldr r4, _08050234 @ =gUnknown_2031DAC + movs r0, 0x88 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r4] + bl sub_80358D4 + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + ldr r0, _08050238 @ =sub_804FF0C + bl sub_80006F4 + bl sub_80504CC + bl sub_804FF24 + ldr r1, _0805023C @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x8C + strh r2, [r0] + adds r0, 0x8 + strh r2, [r0] + adds r1, 0xEE + movs r0, 0x1 + strb r0, [r1] + ldr r3, [r4] + adds r0, r3, 0 + adds r0, 0xD4 + movs r1, 0x40 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r1, r3, 0 + adds r1, 0xDC + movs r0, 0x78 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x50 + strh r0, [r1] + adds r1, 0xA + adds r0, 0xB0 + strh r0, [r1] + adds r0, r3, 0 + adds r0, 0xEC + strh r2, [r0] + b _08050472 + .align 2, 0 +_08050228: .4byte gUnknown_3003F64 +_0805022C: .4byte gUnknown_202271A +_08050230: .4byte 0x00001144 +_08050234: .4byte gUnknown_2031DAC +_08050238: .4byte sub_804FF0C +_0805023C: .4byte gUnknown_30030F0 +_08050240: + ldr r0, _08050270 @ =gUnknown_3003F64 + ldrb r5, [r0] + cmp r5, 0 + bne _0805027C + ldr r4, _08050274 @ =gUnknown_2031DAC + ldr r0, [r4] + movs r1, 0x84 + lsls r1, 1 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + bl sub_8009804 + ldr r1, _08050278 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r4] + str r5, [r0, 0x64] + b _08050472 + .align 2, 0 +_08050270: .4byte gUnknown_3003F64 +_08050274: .4byte gUnknown_2031DAC +_08050278: .4byte gUnknown_30030F0 +_0805027C: + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + movs r0, 0x4 + strb r0, [r1] + b _08050472 +_08050288: + ldr r0, _080502A4 @ =gUnknown_2031DAC + ldr r1, [r0] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x3C + bhi _08050298 + b _08050472 +_08050298: + movs r0, 0 + str r0, [r1, 0x64] + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + b _08050440 + .align 2, 0 +_080502A4: .4byte gUnknown_2031DAC +_080502A8: + bl sub_800AA48 + lsls r0, 24 + cmp r0, 0 + bne _080502B4 + b _08050438 +_080502B4: + bl sub_800AA38 + adds r4, r0, 0 + bl sub_800A944 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bcc _080502EC + ldr r0, _080502E4 @ =gUnknown_2031DAC + ldr r1, [r0] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x1E + bhi _080502D6 + b _08050472 +_080502D6: + bl sub_800A5BC + ldr r1, _080502E8 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08050440 + .align 2, 0 +_080502E4: .4byte gUnknown_2031DAC +_080502E8: .4byte gUnknown_30030F0 +_080502EC: + bl sub_804FF4C + b _08050472 +_080502F2: + bl sub_804FF4C + ldr r0, _08050318 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08050300 + b _08050472 +_08050300: + bl sub_800A1F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0805030E + b _08050472 +_0805030E: + ldr r1, _0805031C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08050440 + .align 2, 0 +_08050318: .4byte gUnknown_3003F64 +_0805031C: .4byte gUnknown_30030F0 +_08050320: + ldr r2, _08050340 @ =gUnknown_2031DAC + ldr r0, [r2] + adds r0, 0x72 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x73 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0x93 + strb r1, [r0] + movs r0, 0 + bl sub_804FFE4 + b _08050438 + .align 2, 0 +_08050340: .4byte gUnknown_2031DAC +_08050344: + movs r0, 0 + movs r1, 0x1 + bl sub_804FFE4 + ldr r1, _08050358 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08050440 + .align 2, 0 +_08050358: .4byte gUnknown_30030F0 +_0805035C: + movs r0, 0x1 + movs r1, 0 + bl sub_804FFE4 + b _08050438 +_08050366: + movs r0, 0x1 + movs r1, 0x1 + bl sub_804FFE4 + bl sub_80504B0 + ldr r1, _0805037C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08050440 + .align 2, 0 +_0805037C: .4byte gUnknown_30030F0 +_08050380: + bl sub_8050DE0 + ldr r0, _08050394 @ =gUnknown_826CDD4 + bl sub_80086DC + ldr r0, _08050398 @ =gUnknown_826CDDC + bl sub_8008928 + b _08050438 + .align 2, 0 +_08050394: .4byte gUnknown_826CDD4 +_08050398: .4byte gUnknown_826CDDC +_0805039C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0 + bl sub_80019BC + ldr r4, _08050418 @ =gUnknown_2031DA4 + ldrb r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r1, _0805041C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + ldr r5, _08050420 @ =gUnknown_2031DAC + ldr r1, [r5] + adds r1, 0xF8 + strh r0, [r1] + ldrb r0, [r4, 0x1] + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + muls r0, r6 + ldr r1, _08050424 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x41 + bl sub_803FBE8 + ldr r4, [r5] + adds r1, r4, 0 + adds r1, 0xFA + strh r0, [r1] + adds r4, 0xFC + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + ldr r0, _08050428 @ =gUnknown_2022744 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0x7 + bl memcpy + ldr r1, _0805042C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08050440 + .align 2, 0 +_08050418: .4byte gUnknown_2031DA4 +_0805041C: .4byte gUnknown_2024284 +_08050420: .4byte gUnknown_2031DAC +_08050424: .4byte gUnknown_202402C +_08050428: .4byte gUnknown_2022744 +_0805042C: .4byte gUnknown_30030F0 +_08050430: + bl sub_805049C + bl sub_8050E24 +_08050438: + ldr r1, _08050448 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 +_08050440: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08050472 + .align 2, 0 +_08050448: .4byte gUnknown_30030F0 +_0805044C: + ldr r0, _08050490 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08050472 + ldr r0, _08050494 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0805046C + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 +_0805046C: + ldr r0, _08050498 @ =sub_8053D84 + bl sub_8000544 +_08050472: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08050490: .4byte gUnknown_2037AB8 +_08050494: .4byte gUnknown_3003F3C +_08050498: .4byte sub_8053D84 + thumb_func_end sub_8050138 + + thumb_func_start sub_805049C +sub_805049C: @ 805049C + push {lr} + movs r0, 0x5 + bl sub_8050968 + movs r0, 0 + bl sub_8050968 + pop {r0} + bx r0 + thumb_func_end sub_805049C + + thumb_func_start sub_80504B0 +sub_80504B0: @ 80504B0 + push {lr} + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_80504B0 + + thumb_func_start sub_80504CC +sub_80504CC: @ 80504CC + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _080505B4 @ =gUnknown_826D1D4 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r5, 0x80 + lsls r5, 4 + adds r0, r5, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + adds r0, r5, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_8001FA0 + adds r0, r5, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x3 + bl sub_8001FA0 + bl sub_8002C28 + ldr r0, _080505B8 @ =gUnknown_8D00000 + mov r10, r0 + movs r0, 0 + mov r9, r0 + str r0, [sp] + mov r1, r10 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r0, _080505BC @ =gUnknown_8D0051C + mov r8, r0 + ldr r4, _080505C0 @ =gUnknown_201C000 + adds r1, r4, 0 + bl sub_800EBB4 + movs r0, 0 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_8002040 + ldr r6, _080505C4 @ =gUnknown_8D004D8 + adds r0, r6, 0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703A8 + ldr r0, _080505C8 @ =gUnknown_826D1BC + bl sub_8003B24 + mov r0, r9 + str r0, [sp] + movs r0, 0 + mov r1, r10 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + mov r0, r8 + adds r1, r4, 0 + bl sub_800EBB4 + movs r0, 0 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_8002040 + adds r0, r6, 0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703A8 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080505B4: .4byte gUnknown_826D1D4 +_080505B8: .4byte gUnknown_8D00000 +_080505BC: .4byte gUnknown_8D0051C +_080505C0: .4byte gUnknown_201C000 +_080505C4: .4byte gUnknown_8D004D8 +_080505C8: .4byte gUnknown_826D1BC + thumb_func_end sub_80504CC + + thumb_func_start sub_80505CC +sub_80505CC: @ 80505CC + push {r4,r5,lr} + sub sp, 0xC + ldr r0, _080505EC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xC + bls _080505E0 + b _0805077E +_080505E0: + lsls r0, 2 + ldr r1, _080505F0 @ =_080505F4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080505EC: .4byte gUnknown_30030F0 +_080505F0: .4byte _080505F4 + .align 2, 0 +_080505F4: + .4byte _08050628 + .4byte _0805077E + .4byte _0805077E + .4byte _0805077E + .4byte _0805077E + .4byte _080506EC + .4byte _080506F6 + .4byte _08050700 + .4byte _08050710 + .4byte _08050730 + .4byte _0805074C + .4byte _08050754 + .4byte _08050778 +_08050628: + ldr r1, _080506CC @ =gUnknown_2031DA4 + ldr r0, _080506D0 @ =gUnknown_20370C2 + ldrh r0, [r0] + movs r5, 0 + strb r0, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + ldr r4, _080506D4 @ =gUnknown_2022744 + ldr r0, _080506D8 @ =gUnknown_300500C + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, _080506DC @ =gUnknown_202402C + movs r1, 0x7 + mov r2, sp + bl sub_803FBE8 + adds r4, 0x1C + adds r0, r4, 0 + mov r1, sp + bl sub_8008D84 + ldr r4, _080506E0 @ =gUnknown_2031DAC + movs r0, 0x88 + lsls r0, 1 + bl sub_8002BB0 + str r0, [r4] + bl sub_80358D4 + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + ldr r0, _080506E4 @ =sub_804FF0C + bl sub_80006F4 + bl sub_80504CC + ldr r0, [r4] + adds r0, 0xEE + strb r5, [r0] + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x8C + strh r5, [r0] + adds r0, 0x8 + strh r5, [r0] + adds r0, 0x40 + movs r1, 0x40 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r5, [r0] + adds r0, 0x2 + strh r5, [r0] + adds r1, r2, 0 + adds r1, 0xDC + movs r0, 0x78 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x50 + strh r0, [r1] + adds r1, 0xA + adds r0, 0xB0 + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0xEC + strh r5, [r0] + str r5, [r2, 0x64] + ldr r0, _080506E8 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] + b _0805077E + .align 2, 0 +_080506CC: .4byte gUnknown_2031DA4 +_080506D0: .4byte gUnknown_20370C2 +_080506D4: .4byte gUnknown_2022744 +_080506D8: .4byte gUnknown_300500C +_080506DC: .4byte gUnknown_202402C +_080506E0: .4byte gUnknown_2031DAC +_080506E4: .4byte sub_804FF0C +_080506E8: .4byte gUnknown_30030F0 +_080506EC: + movs r0, 0 + movs r1, 0 + bl sub_804FFE4 + b _08050764 +_080506F6: + movs r0, 0 + movs r1, 0x1 + bl sub_804FFE4 + b _08050764 +_08050700: + movs r0, 0x1 + movs r1, 0 + bl sub_804FFE4 + movs r0, 0 + bl sub_80019BC + b _08050764 +_08050710: + movs r0, 0x1 + movs r1, 0x1 + bl sub_804FFE4 + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + b _08050764 +_08050730: + bl sub_8050DE0 + ldr r0, _08050744 @ =gUnknown_826CDD4 + bl sub_80086DC + ldr r0, _08050748 @ =gUnknown_826CDDC + bl sub_8008928 + b _08050764 + .align 2, 0 +_08050744: .4byte gUnknown_826CDD4 +_08050748: .4byte gUnknown_826CDDC +_0805074C: + movs r0, 0 + bl sub_80019BC + b _08050764 +_08050754: + movs r0, 0x5 + bl sub_8050968 + movs r0, 0 + bl sub_8050968 + bl sub_8050E24 +_08050764: + ldr r1, _08050774 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0805077E + .align 2, 0 +_08050774: .4byte gUnknown_30030F0 +_08050778: + ldr r0, _0805079C @ =sub_8050948 + bl sub_8000544 +_0805077E: + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805079C: .4byte sub_8050948 + thumb_func_end sub_80505CC + + thumb_func_start sub_80507A0 +sub_80507A0: @ 80507A0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r1, r0 + ldr r0, _080507FC @ =gUnknown_2024284 + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _080507F4 + adds r0, r5, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0 + movs r2, 0 + bl sub_803FBE8 + adds r5, r0, 0 + adds r0, r4, 0 + bl sub_8043298 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8088E74 + adds r0, r4, 0 + movs r1, 0x3 + adds r2, r5, 0 + bl sub_8044898 +_080507F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080507FC: .4byte gUnknown_2024284 + thumb_func_end sub_80507A0 + + thumb_func_start sub_8050800 +sub_8050800: @ 8050800 + push {lr} + bl sub_800A404 + pop {r0} + bx r0 + thumb_func_end sub_8050800 + + thumb_func_start sub_805080C +sub_805080C: @ 805080C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r4, 24 + lsrs r4, 24 + movs r5, 0x64 + mov r1, r9 + muls r1, r5 + ldr r0, _080508D8 @ =gUnknown_2024284 + adds r7, r1, r0 + adds r0, r7, 0 + movs r1, 0x40 + bl sub_803FBE8 + lsls r0, 16 + lsrs r6, r0, 16 + adds r1, r4, 0 + muls r1, r5 + ldr r0, _080508DC @ =gUnknown_202402C + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x40 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + cmp r6, 0xFF + beq _08050866 + ldr r0, _080508E0 @ =gUnknown_3005008 + lsls r1, r6, 3 + adds r1, r6 + lsls r1, 2 + ldr r2, _080508E4 @ =0x00002cd0 + adds r1, r2 + ldr r0, [r0] + adds r0, r1 + bl sub_8097CB4 +_08050866: + ldr r4, _080508E8 @ =gUnknown_2031DAC + ldr r0, [r4] + adds r1, r7, 0 + movs r2, 0x64 + bl memcpy + adds r0, r7, 0 + adds r1, r5, 0 + movs r2, 0x64 + bl memcpy + ldr r1, [r4] + adds r0, r5, 0 + movs r2, 0x64 + bl memcpy + movs r1, 0x46 + mov r0, sp + strb r1, [r0] + adds r0, r7, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _080508A2 + adds r0, r7, 0 + movs r1, 0x20 + mov r2, sp + bl sub_804037C +_080508A2: + mov r0, r8 + cmp r0, 0xFF + beq _080508B8 + lsls r1, r0, 3 + add r1, r8 + lsls r1, 2 + ldr r0, _080508EC @ =gUnknown_2031CCC + adds r1, r0 + adds r0, r7, 0 + bl sub_8097F44 +_080508B8: + mov r0, r9 + bl sub_80507A0 + ldr r0, _080508F0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _080508CA + bl sub_8050800 +_080508CA: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080508D8: .4byte gUnknown_2024284 +_080508DC: .4byte gUnknown_202402C +_080508E0: .4byte gUnknown_3005008 +_080508E4: .4byte 0x00002cd0 +_080508E8: .4byte gUnknown_2031DAC +_080508EC: .4byte gUnknown_2031CCC +_080508F0: .4byte gUnknown_3003F64 + thumb_func_end sub_805080C + + thumb_func_start sub_80508F4 +sub_80508F4: @ 80508F4 + push {r4,lr} + ldr r4, _08050908 @ =gUnknown_2031DAC + ldr r0, [r4] + adds r0, 0x93 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0805090C + cmp r0, 0x2 + beq _08050932 + b _0805093C + .align 2, 0 +_08050908: .4byte gUnknown_2031DAC +_0805090C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08050932 + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x74 + movs r2, 0x14 + bl sub_800A448 + ldr r1, [r4] + adds r1, 0x93 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08050932: + ldr r0, _08050944 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x93 + movs r1, 0 + strb r1, [r0] +_0805093C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08050944: .4byte gUnknown_2031DAC + thumb_func_end sub_80508F4 + + thumb_func_start sub_8050948 +sub_8050948: @ 8050948 + push {lr} + bl sub_8050F14 + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8050948 + + thumb_func_start sub_8050968 +sub_8050968: @ 8050968 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x7 + bls _08050974 + b _08050DB4 +_08050974: + lsls r0, 2 + ldr r1, _08050980 @ =_08050984 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08050980: .4byte _08050984 + .align 2, 0 +_08050984: + .4byte _080509A4 + .4byte _08050A18 + .4byte _08050AC4 + .4byte _08050B3C + .4byte _08050B84 + .4byte _08050C54 + .4byte _08050C6C + .4byte _08050D48 +_080509A4: + ldr r0, _080509FC @ =gUnknown_2031DAC + ldr r1, [r0] + adds r2, r1, 0 + adds r2, 0xE4 + movs r0, 0 + strh r0, [r2] + adds r1, 0xE6 + movs r0, 0xB4 + strh r0, [r1] + movs r1, 0xAA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r1, _08050A00 @ =0x00005206 + movs r0, 0xC + bl sub_8000A38 + ldr r0, _08050A04 @ =gUnknown_8EAEA20 + movs r1, 0x10 + movs r2, 0x60 + bl sub_80703EC + ldr r3, _08050A08 @ =gUnknown_8EAEA80 + ldr r4, _08050A0C @ =0x06004000 + movs r5, 0xA1 + lsls r5, 5 + ldr r1, _08050A10 @ =0x040000d4 + ldr r6, _08050A14 @ =0x80000800 + movs r2, 0x80 + lsls r2, 5 + movs r7, 0x80 + lsls r7, 24 +_080509E6: + str r3, [r1] + str r4, [r1, 0x4] + str r6, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r2 + adds r4, r2 + subs r5, r2 + cmp r5, r2 + bhi _080509E6 + b _08050D98 + .align 2, 0 +_080509FC: .4byte gUnknown_2031DAC +_08050A00: .4byte 0x00005206 +_08050A04: .4byte gUnknown_8EAEA20 +_08050A08: .4byte gUnknown_8EAEA80 +_08050A0C: .4byte 0x06004000 +_08050A10: .4byte 0x040000d4 +_08050A14: .4byte 0x80000800 +_08050A18: + ldr r4, _08050A54 @ =gUnknown_2031DAC + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0xE2 + movs r0, 0 + strh r0, [r1] + adds r2, 0xE0 + movs r1, 0xAE + lsls r1, 1 + strh r1, [r2] + movs r0, 0x16 + bl sub_8000A38 + ldr r1, _08050A58 @ =0x00008502 + movs r0, 0xA + bl sub_8000A38 + ldr r1, _08050A5C @ =0x00009206 + movs r0, 0xC + bl sub_8000A38 + ldr r0, [r4] + movs r1, 0x84 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08050A64 + ldr r1, _08050A60 @ =gUnknown_826AA5C + b _08050A66 + .align 2, 0 +_08050A54: .4byte gUnknown_2031DAC +_08050A58: .4byte 0x00008502 +_08050A5C: .4byte 0x00009206 +_08050A60: .4byte gUnknown_826AA5C +_08050A64: + ldr r1, _08050AB0 @ =gUnknown_8269A5C +_08050A66: + ldr r2, _08050AB4 @ =0x06002800 + ldr r0, _08050AB8 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050ABC @ =0x80000800 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + ldr r3, _08050AC0 @ =gUnknown_8EAEA80 + movs r4, 0xC0 + lsls r4, 19 + movs r5, 0xA1 + lsls r5, 5 + ldr r1, _08050AB8 @ =0x040000d4 + ldr r6, _08050ABC @ =0x80000800 + movs r2, 0x80 + lsls r2, 5 + movs r7, 0x80 + lsls r7, 24 +_08050A8A: + str r3, [r1] + str r4, [r1, 0x4] + str r6, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r2 + adds r4, r2 + subs r5, r2 + cmp r5, r2 + bhi _08050A8A + str r3, [r1] + str r4, [r1, 0x4] + lsrs r0, r5, 1 + orrs r0, r7 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r1, 0x92 + lsls r1, 5 + b _08050B64 + .align 2, 0 +_08050AB0: .4byte gUnknown_8269A5C +_08050AB4: .4byte 0x06002800 +_08050AB8: .4byte 0x040000d4 +_08050ABC: .4byte 0x80000800 +_08050AC0: .4byte gUnknown_8EAEA80 +_08050AC4: + ldr r0, _08050AF4 @ =gUnknown_2031DAC + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0xE0 + movs r1, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + movs r1, 0x84 + lsls r1, 1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08050B04 + ldr r1, _08050AF8 @ =0x00001241 + movs r0, 0 + bl sub_8000A38 + ldr r0, _08050AFC @ =gUnknown_826BA5C + ldr r1, _08050B00 @ =0x06002800 + bl LZ77UnCompVram + movs r0, 0x8 + b _08050B1E + .align 2, 0 +_08050AF4: .4byte gUnknown_2031DAC +_08050AF8: .4byte 0x00001241 +_08050AFC: .4byte gUnknown_826BA5C +_08050B00: .4byte 0x06002800 +_08050B04: + ldr r1, _08050B28 @ =0x00001241 + movs r0, 0 + bl sub_8000A38 + ldr r1, _08050B2C @ =gUnknown_826407C + ldr r2, _08050B30 @ =0x06002800 + ldr r0, _08050B34 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050B38 @ =0x80000400 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + movs r0, 0x1 +_08050B1E: + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + b _08050DB4 + .align 2, 0 +_08050B28: .4byte 0x00001241 +_08050B2C: .4byte gUnknown_826407C +_08050B30: .4byte 0x06002800 +_08050B34: .4byte 0x040000d4 +_08050B38: .4byte 0x80000400 +_08050B3C: + ldr r0, _08050B6C @ =gUnknown_826BF5C + movs r1, 0x30 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _08050B70 @ =gUnknown_826BF7C + ldr r1, _08050B74 @ =0x06004000 + bl LZ77UnCompVram + ldr r0, _08050B78 @ =gUnknown_826C60C + ldr r1, _08050B7C @ =0x06009000 + bl LZ77UnCompVram + ldr r0, _08050B80 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0xE4 + movs r1, 0x50 + strh r1, [r0] + movs r1, 0xB2 + lsls r1, 5 +_08050B64: + movs r0, 0 + bl sub_8000A38 + b _08050DB4 + .align 2, 0 +_08050B6C: .4byte gUnknown_826BF5C +_08050B70: .4byte gUnknown_826BF7C +_08050B74: .4byte 0x06004000 +_08050B78: .4byte gUnknown_826C60C +_08050B7C: .4byte 0x06009000 +_08050B80: .4byte gUnknown_2031DAC +_08050B84: + ldr r1, _08050C0C @ =0x00001441 + movs r0, 0 + bl sub_8000A38 + ldr r1, _08050C10 @ =0x00001287 + movs r0, 0xC + bl sub_8000A38 + ldr r0, _08050C14 @ =gUnknown_2031DAC + ldr r3, [r0] + adds r1, r3, 0 + adds r1, 0xD4 + movs r2, 0 + movs r0, 0x40 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x5C + strh r0, [r1] + adds r1, 0x12 + movs r0, 0x20 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x80 + lsls r0, 3 + strh r0, [r1] + adds r0, r3, 0 + adds r0, 0xEC + strh r2, [r0] + ldr r3, _08050C18 @ =gUnknown_826701C + ldr r4, _08050C1C @ =0x06004000 + movs r5, 0xA1 + lsls r5, 6 + ldr r1, _08050C20 @ =0x040000d4 + ldr r6, _08050C24 @ =0x80000800 + movs r2, 0x80 + lsls r2, 5 + movs r7, 0x80 + lsls r7, 24 +_08050BD0: + str r3, [r1] + str r4, [r1, 0x4] + str r6, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r2 + adds r4, r2 + subs r5, r2 + cmp r5, r2 + bhi _08050BD0 + str r3, [r1] + str r4, [r1, 0x4] + lsrs r0, r5, 1 + orrs r0, r7 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r0, _08050C14 @ =gUnknown_2031DAC + ldr r0, [r0] + movs r1, 0x84 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08050C34 + ldr r1, _08050C28 @ =gUnknown_826985C + ldr r2, _08050C2C @ =0x06009000 + ldr r0, _08050C20 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050C30 @ =0x80000080 + b _08050DB0 + .align 2, 0 +_08050C0C: .4byte 0x00001441 +_08050C10: .4byte 0x00001287 +_08050C14: .4byte gUnknown_2031DAC +_08050C18: .4byte gUnknown_826701C +_08050C1C: .4byte 0x06004000 +_08050C20: .4byte 0x040000d4 +_08050C24: .4byte 0x80000800 +_08050C28: .4byte gUnknown_826985C +_08050C2C: .4byte 0x06009000 +_08050C30: .4byte 0x80000080 +_08050C34: + ldr r1, _08050C44 @ =gUnknown_826995C + ldr r2, _08050C48 @ =0x06009000 + ldr r0, _08050C4C @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050C50 @ =0x80000080 + b _08050DB0 + .align 2, 0 +_08050C44: .4byte gUnknown_826995C +_08050C48: .4byte 0x06009000 +_08050C4C: .4byte 0x040000d4 +_08050C50: .4byte 0x80000080 +_08050C54: + ldr r0, _08050C68 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0xE0 + movs r2, 0 + strh r2, [r1] + adds r0, 0xE2 + strh r2, [r0] + b _08050DB4 + .align 2, 0 +_08050C68: .4byte gUnknown_2031DAC +_08050C6C: + ldr r1, _08050D00 @ =0x00001441 + movs r0, 0 + bl sub_8000A38 + ldr r1, _08050D04 @ =0x00001287 + movs r0, 0xC + bl sub_8000A38 + ldr r0, _08050D08 @ =gUnknown_2031DAC + ldr r3, [r0] + adds r1, r3, 0 + adds r1, 0xD4 + movs r2, 0 + movs r0, 0x40 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x5C + strh r0, [r1] + adds r1, 0x12 + adds r0, 0xA4 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x80 + strh r0, [r1] + subs r1, 0xE + movs r0, 0x78 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x50 + strh r0, [r1] + adds r0, r3, 0 + adds r0, 0xEC + strh r2, [r0] + ldr r3, _08050D0C @ =gUnknown_826701C + ldr r4, _08050D10 @ =0x06004000 + movs r5, 0xA1 + lsls r5, 6 + ldr r1, _08050D14 @ =0x040000d4 + ldr r6, _08050D18 @ =0x80000800 + movs r2, 0x80 + lsls r2, 5 + movs r7, 0x80 + lsls r7, 24 +_08050CC2: + str r3, [r1] + str r4, [r1, 0x4] + str r6, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r2 + adds r4, r2 + subs r5, r2 + cmp r5, r2 + bhi _08050CC2 + str r3, [r1] + str r4, [r1, 0x4] + lsrs r0, r5, 1 + orrs r0, r7 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r0, _08050D08 @ =gUnknown_2031DAC + ldr r0, [r0] + movs r1, 0x84 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08050D28 + ldr r1, _08050D1C @ =gUnknown_826985C + ldr r2, _08050D20 @ =0x06009000 + ldr r0, _08050D14 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050D24 @ =0x80000080 + b _08050DB0 + .align 2, 0 +_08050D00: .4byte 0x00001441 +_08050D04: .4byte 0x00001287 +_08050D08: .4byte gUnknown_2031DAC +_08050D0C: .4byte gUnknown_826701C +_08050D10: .4byte 0x06004000 +_08050D14: .4byte 0x040000d4 +_08050D18: .4byte 0x80000800 +_08050D1C: .4byte gUnknown_826985C +_08050D20: .4byte 0x06009000 +_08050D24: .4byte 0x80000080 +_08050D28: + ldr r1, _08050D38 @ =gUnknown_826995C + ldr r2, _08050D3C @ =0x06009000 + ldr r0, _08050D40 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050D44 @ =0x80000080 + b _08050DB0 + .align 2, 0 +_08050D38: .4byte gUnknown_826995C +_08050D3C: .4byte 0x06009000 +_08050D40: .4byte 0x040000d4 +_08050D44: .4byte 0x80000080 +_08050D48: + ldr r0, _08050DBC @ =gUnknown_2031DAC + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0xE4 + movs r2, 0 + strh r2, [r1] + adds r0, 0xE6 + strh r2, [r0] + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + ldr r1, _08050DC0 @ =0x00005206 + movs r0, 0xC + bl sub_8000A38 + ldr r0, _08050DC4 @ =gUnknown_8EAEA20 + movs r1, 0x10 + movs r2, 0x60 + bl sub_80703EC + ldr r3, _08050DC8 @ =gUnknown_8EAEA80 + ldr r4, _08050DCC @ =0x06004000 + movs r5, 0xA1 + lsls r5, 5 + ldr r1, _08050DD0 @ =0x040000d4 + ldr r6, _08050DD4 @ =0x80000800 + movs r2, 0x80 + lsls r2, 5 + movs r7, 0x80 + lsls r7, 24 +_08050D86: + str r3, [r1] + str r4, [r1, 0x4] + str r6, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r2 + adds r4, r2 + subs r5, r2 + cmp r5, r2 + bhi _08050D86 +_08050D98: + str r3, [r1] + str r4, [r1, 0x4] + lsrs r0, r5, 1 + orrs r0, r7 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r1, _08050DD8 @ =gUnknown_826601C + ldr r2, _08050DDC @ =0x06009000 + ldr r0, _08050DD0 @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08050DD4 @ =0x80000800 +_08050DB0: + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] +_08050DB4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08050DBC: .4byte gUnknown_2031DAC +_08050DC0: .4byte 0x00005206 +_08050DC4: .4byte gUnknown_8EAEA20 +_08050DC8: .4byte gUnknown_8EAEA80 +_08050DCC: .4byte 0x06004000 +_08050DD0: .4byte 0x040000d4 +_08050DD4: .4byte 0x80000800 +_08050DD8: .4byte gUnknown_826601C +_08050DDC: .4byte 0x06009000 + thumb_func_end sub_8050968 + + thumb_func_start sub_8050DE0 +sub_8050DE0: @ 8050DE0 + push {lr} + ldr r0, _08050E0C @ =gUnknown_826CE2C + bl sub_80086DC + ldr r0, _08050E10 @ =gUnknown_826CE7C + bl sub_80086DC + ldr r0, _08050E14 @ =gUnknown_826CEB0 + bl sub_80086DC + ldr r0, _08050E18 @ =gUnknown_826CF28 + bl sub_80086DC + ldr r0, _08050E1C @ =gUnknown_826CE34 + bl sub_8008928 + ldr r0, _08050E20 @ =gUnknown_826CE3C + bl sub_8008928 + pop {r0} + bx r0 + .align 2, 0 +_08050E0C: .4byte gUnknown_826CE2C +_08050E10: .4byte gUnknown_826CE7C +_08050E14: .4byte gUnknown_826CEB0 +_08050E18: .4byte gUnknown_826CF28 +_08050E1C: .4byte gUnknown_826CE34 +_08050E20: .4byte gUnknown_826CE3C + thumb_func_end sub_8050DE0 + + thumb_func_start sub_8050E24 +sub_8050E24: @ 8050E24 + push {r4,r5,lr} + sub sp, 0x14 + ldr r0, _08050E94 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0xEE + ldrb r0, [r0] + cmp r0, 0 + beq _08050EB4 + bl sub_800A404 + lsls r0, 24 + ldr r3, _08050E98 @ =gUnknown_2021CD0 + movs r2, 0x80 + lsls r2, 17 + eors r2, r0 + lsrs r2, 24 + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + ldr r0, _08050E9C @ =gUnknown_2022744 + adds r1, r0 + adds r0, r3, 0 + bl sub_8008D84 + ldr r5, _08050EA0 @ =gUnknown_2031DA4 + ldrb r0, [r5, 0x1] + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x64 + muls r0, r4 + ldr r1, _08050EA4 @ =gUnknown_202402C + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _08050EA8 @ =gUnknown_2021D04 + mov r1, sp + bl sub_8008CF4 + ldrb r0, [r5] + muls r0, r4 + ldr r1, _08050EAC @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _08050EB0 @ =gUnknown_2021CF0 + mov r1, sp + bl sub_8008CF4 + b _08050EF0 + .align 2, 0 +_08050E94: .4byte gUnknown_2031DAC +_08050E98: .4byte gUnknown_2021CD0 +_08050E9C: .4byte gUnknown_2022744 +_08050EA0: .4byte gUnknown_2031DA4 +_08050EA4: .4byte gUnknown_202402C +_08050EA8: .4byte gUnknown_2021D04 +_08050EAC: .4byte gUnknown_2024284 +_08050EB0: .4byte gUnknown_2021CF0 +_08050EB4: + ldr r0, _08050EF8 @ =gUnknown_20370C0 + ldrh r0, [r0] + lsls r4, r0, 4 + subs r4, r0 + lsls r4, 2 + ldr r0, _08050EFC @ =gUnknown_826CF8C + adds r4, r0 + ldr r0, _08050F00 @ =gUnknown_2021CD0 + adds r1, r4, 0 + adds r1, 0x2B + bl sub_8008D84 + ldr r0, _08050F04 @ =gUnknown_2021D04 + adds r1, r4, 0 + bl sub_8008CF4 + ldr r0, _08050F08 @ =gUnknown_20370C2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08050F0C @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _08050F10 @ =gUnknown_2021CF0 + mov r1, sp + bl sub_8008CF4 +_08050EF0: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08050EF8: .4byte gUnknown_20370C0 +_08050EFC: .4byte gUnknown_826CF8C +_08050F00: .4byte gUnknown_2021CD0 +_08050F04: .4byte gUnknown_2021D04 +_08050F08: .4byte gUnknown_20370C2 +_08050F0C: .4byte gUnknown_2024284 +_08050F10: .4byte gUnknown_2021CF0 + thumb_func_end sub_8050E24 + + thumb_func_start sub_8050F14 +sub_8050F14: @ 8050F14 + push {lr} + ldr r0, _08050F2C @ =gUnknown_2031DAC + ldr r0, [r0] + movs r1, 0x84 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08050F30 + bl sub_805232C + b _08050F34 + .align 2, 0 +_08050F2C: .4byte gUnknown_2031DAC +_08050F30: + bl sub_8050F3C +_08050F34: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8050F14 + + thumb_func_start sub_8050F3C +sub_8050F3C: @ 8050F3C + push {r4-r7,lr} + sub sp, 0x10 + ldr r0, _08050F60 @ =gUnknown_2031DAC + ldr r1, [r0] + adds r1, 0x94 + ldrh r5, [r1] + ldr r1, _08050F64 @ =0x0000010b + adds r7, r0, 0 + cmp r5, r1 + bls _08050F54 + bl _08052318 +_08050F54: + lsls r0, r5, 2 + ldr r1, _08050F68 @ =_08050F6C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08050F60: .4byte gUnknown_2031DAC +_08050F64: .4byte 0x0000010b +_08050F68: .4byte _08050F6C + .align 2, 0 +_08050F6C: + .4byte _0805139C + .4byte _08051414 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08051470 + .4byte _080514B8 + .4byte _0805152C + .4byte _08052318 + .4byte _08051598 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _080515BC + .4byte _080515EC + .4byte _080515FE + .4byte _08051620 + .4byte _08051668 + .4byte _08051698 + .4byte _080516E0 + .4byte _08051730 + .4byte _08051784 + .4byte _08051808 + .4byte _0805182C + .4byte _08051878 + .4byte _080518C4 + .4byte _08051920 + .4byte _08051980 + .4byte _08051994 + .4byte _080519A8 + .4byte _080519BC + .4byte _08051AE4 + .4byte _08051BB4 + .4byte _08051C3C + .4byte _08051CB4 + .4byte _08051CC4 + .4byte _08051CE4 + .4byte _08051D34 + .4byte _08051D52 + .4byte _08051D90 + .4byte _08051DA0 + .4byte _08051E1C + .4byte _08052318 + .4byte _08051E44 + .4byte _08051E84 + .4byte _08051EC4 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08051EE4 + .4byte _08051F0C + .4byte _08051F28 + .4byte _08051F48 + .4byte _08051FF0 + .4byte _08052024 + .4byte _08052070 + .4byte _08052128 + .4byte _080521B4 + .4byte _08052200 + .4byte _08052210 + .4byte _08052216 + .4byte _0805223C + .4byte _08052298 + .4byte _080522BC + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052160 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _080517B0 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052318 + .4byte _08052198 +_0805139C: + ldr r3, _08051408 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r4, [r7] + adds r2, r4, 0 + adds r2, 0x8E + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldr r1, _0805140C @ =0x0000ff4c + strh r1, [r0, 0x24] + ldrb r0, [r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldr r2, _08051410 @ =gUnknown_82349CC + adds r0, r4, 0 + adds r0, 0xF0 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + strh r0, [r1, 0x26] + adds r1, r4, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + bl sub_8071A68 + ldr r1, [r7] + adds r1, 0xF4 + strh r0, [r1] + movs r0, 0x84 + lsls r0, 1 + bl sub_8071A74 + bl _08052318 + .align 2, 0 +_08051408: .4byte gUnknown_202063C +_0805140C: .4byte 0x0000ff4c +_08051410: .4byte gUnknown_82349CC +_08051414: + ldr r5, [r7] + adds r6, r5, 0 + adds r6, 0xE6 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + ble _08051448 + ldr r2, _08051444 @ =gUnknown_202063C + adds r0, r5, 0 + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + adds r1, 0x3 + strh r1, [r0, 0x24] + ldrh r0, [r6] + subs r0, 0x3 + strh r0, [r6] + bl _08052318 + .align 2, 0 +_08051444: .4byte gUnknown_202063C +_08051448: + ldr r2, _0805146C @ =gUnknown_202063C + adds r0, r5, 0 + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x24] + strh r1, [r6] + adds r1, r5, 0 + adds r1, 0x94 + movs r0, 0xA + strh r0, [r1] + bl _08052318 + .align 2, 0 +_0805146C: .4byte gUnknown_202063C +_08051470: + ldr r4, _080514AC @ =gUnknown_2021D18 + ldr r1, _080514B0 @ =gUnknown_841E1E9 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + ldr r4, _080514B4 @ =gUnknown_2031DAC + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0xF0 + ldrh r1, [r2] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0805149E + adds r0, r1, 0 + movs r1, 0 + bl sub_8071DF0 +_0805149E: + ldr r3, [r4] + adds r1, r3, 0 + adds r1, 0x94 + movs r2, 0 + movs r0, 0xB + bl _0805218E + .align 2, 0 +_080514AC: .4byte gUnknown_2021D18 +_080514B0: .4byte gUnknown_841E1E9 +_080514B4: .4byte gUnknown_2031DAC +_080514B8: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x50 + beq _080514C8 + bl _08052318 +_080514C8: + adds r0, r1, 0 + adds r0, 0x8E + ldrb r0, [r0] + ldr r2, _0805151C @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0x14 + str r2, [sp, 0x8] + ldr r2, _08051520 @ =0x000fffff + str r2, [sp, 0xC] + movs r2, 0x78 + movs r3, 0x20 + bl sub_804BB98 + ldr r1, [r7] + adds r1, 0xD2 + strb r0, [r1] + ldr r1, [r7] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldr r4, _08051524 @ =gUnknown_2021D18 + ldr r1, _08051528 @ =gUnknown_841E200 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + bl _08052318 + .align 2, 0 +_0805151C: .4byte gUnknown_202063C +_08051520: .4byte 0x000fffff +_08051524: .4byte gUnknown_2021D18 +_08051528: .4byte gUnknown_841E200 +_0805152C: + ldr r5, _08051588 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0xD2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r5, 0 + adds r4, 0x1C + adds r0, r4 + ldr r1, [r0] + ldr r0, _0805158C @ =nullsub_8 + cmp r1, r0 + beq _0805154C + bl _08052318 +_0805154C: + ldr r0, _08051590 @ =gUnknown_826CDE4 + movs r1, 0x78 + movs r2, 0x20 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0xD3 + strb r0, [r1] + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08051594 @ =sub_8053938 + str r1, [r0] + adds r2, 0xD2 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + ldr r1, [r7] + bl _080522AC + .align 2, 0 +_08051588: .4byte gUnknown_202063C +_0805158C: .4byte nullsub_8 +_08051590: .4byte gUnknown_826CDE4 +_08051594: .4byte sub_8053938 +_08051598: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080515B8 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x14 + strh r1, [r0] + bl _08052318 + .align 2, 0 +_080515B8: .4byte gUnknown_2031DAC +_080515BC: + ldr r0, _080515E8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080515CC + bl _08052318 +_080515CC: + movs r0, 0x4 + bl sub_8050968 + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + bl _080522A8 + .align 2, 0 +_080515E8: .4byte gUnknown_2037AB8 +_080515EC: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl _080522A4 +_080515FE: + ldr r0, _0805161C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0805160E + bl _08052318 +_0805160E: + ldr r0, [r7] + adds r0, 0x94 + movs r1, 0x17 + strh r1, [r0] + bl _08052318 + .align 2, 0 +_0805161C: .4byte gUnknown_2037AB8 +_08051620: + ldr r4, _0805163C @ =gUnknown_2031DAC + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0xEA + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + bls _08051640 + adds r0, r1, 0 + subs r0, 0x34 + strh r0, [r2] + b _0805165C + .align 2, 0 +_0805163C: .4byte gUnknown_2031DAC +_08051640: + movs r0, 0x1 + bl sub_8050968 + ldr r3, [r4] + adds r1, r3, 0 + adds r1, 0xEA + movs r2, 0 + movs r0, 0x80 + strh r0, [r1] + subs r1, 0x56 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + str r2, [r3, 0x64] +_0805165C: + ldr r0, _08051664 @ =gUnknown_2031DAC + ldr r4, [r0] + bl _08051EB0 + .align 2, 0 +_08051664: .4byte gUnknown_2031DAC +_08051668: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x14 + bhi _08051678 + bl _08052318 +_08051678: + bl sub_804FE24 + ldr r0, _08051694 @ =gUnknown_826CF30 + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x91 + strb r0, [r1] + ldr r1, [r7] + bl _080522AC + .align 2, 0 +_08051694: .4byte gUnknown_826CF30 +_08051698: + ldr r2, _080516D8 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + blt _080516B8 + bl _08052318 +_080516B8: + adds r0, r1, 0 + bl sub_8007280 + movs r1, 0xC8 + lsls r1, 3 + movs r0, 0x50 + bl sub_8000A38 + ldr r1, _080516DC @ =0x0000040c + movs r0, 0x52 + bl sub_8000A38 + ldr r1, [r7] + bl _080522AC + .align 2, 0 +_080516D8: .4byte gUnknown_202063C +_080516DC: .4byte 0x0000040c +_080516E0: + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xE0 + ldrh r1, [r0] + subs r1, 0x1 + strh r1, [r0] + lsls r1, 16 + movs r0, 0x9E + lsls r0, 17 + cmp r1, r0 + bne _08051700 + adds r1, r2, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08051700: + ldr r0, [r7] + adds r0, 0xE0 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0xA4 + lsls r0, 1 + cmp r1, r0 + beq _08051714 + bl _08052318 +_08051714: + ldr r0, _0805172C @ =gUnknown_826CEB8 + movs r1, 0x80 + movs r2, 0x41 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x92 + strb r0, [r1] + bl _08052318 + .align 2, 0 +_0805172C: .4byte gUnknown_826CEB8 +_08051730: + ldr r0, _08051774 @ =gUnknown_826CE44 + movs r1, 0x80 + movs r2, 0x50 + movs r3, 0x3 + bl sub_8006F8C + ldr r4, _08051778 @ =gUnknown_2031DAC + ldr r1, [r4] + adds r1, 0x90 + strb r0, [r1] + ldr r0, _0805177C @ =gUnknown_826CE84 + movs r1, 0x80 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] + adds r1, 0x91 + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08051780 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C + ldr r1, [r4] + bl _080522AC + .align 2, 0 +_08051774: .4byte gUnknown_826CE44 +_08051778: .4byte gUnknown_2031DAC +_0805177C: .4byte gUnknown_826CE84 +_08051780: .4byte gUnknown_202063C +_08051784: + ldr r2, [r7] + adds r1, r2, 0 + adds r1, 0xE0 + ldrh r0, [r1] + subs r0, 0x2 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA6 + bne _0805179E + subs r1, 0x4C + movs r0, 0xC8 + strh r0, [r1] +_0805179E: + ldr r1, _080517AC @ =0x00001241 + movs r0, 0 + bl sub_8000A38 + bl _08052318 + .align 2, 0 +_080517AC: .4byte 0x00001241 +_080517B0: + ldr r2, _08051804 @ =gUnknown_202063C + ldr r4, [r7] + adds r3, r4, 0 + adds r3, 0x90 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x2 + strh r1, [r0, 0x22] + adds r0, r4, 0 + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x2 + strh r1, [r0, 0x22] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r3, 0x22 + ldrsh r1, [r0, r3] + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080517F6 + bl _08052318 +_080517F6: + adds r1, r4, 0 + adds r1, 0x94 + movs r0, 0x1D + strh r0, [r1] + bl _08052318 + .align 2, 0 +_08051804: .4byte gUnknown_202063C +_08051808: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08051828 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x1E + strh r1, [r0] + bl _08052318 + .align 2, 0 +_08051828: .4byte gUnknown_2031DAC +_0805182C: + ldr r0, _08051870 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0805183C + bl _08052318 +_0805183C: + ldr r0, [r7] + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08051874 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + movs r0, 0x2 + bl sub_8050968 + ldr r1, [r7] + bl _080522AC + .align 2, 0 +_08051870: .4byte gUnknown_2037AB8 +_08051874: .4byte gUnknown_202063C +_08051878: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r5, _080518BC @ =gUnknown_826CE84 + adds r0, r5, 0 + movs r1, 0x6F + movs r2, 0xAA + movs r3, 0 + bl sub_8006F8C + ldr r4, _080518C0 @ =gUnknown_2031DAC + ldr r1, [r4] + adds r1, 0x90 + strb r0, [r1] + movs r2, 0xA + negs r2, r2 + adds r0, r5, 0 + movs r1, 0x81 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] + adds r1, 0x91 + strb r0, [r1] + ldr r1, [r4] + bl _080522AC + .align 2, 0 +_080518BC: .4byte gUnknown_826CE84 +_080518C0: .4byte gUnknown_2031DAC +_080518C4: + ldr r0, _08051914 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080518E2 + movs r0, 0x28 + bl sub_80722CC + ldr r0, _08051918 @ =gUnknown_2031DAC + ldr r1, [r0] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_080518E2: + ldr r3, _0805191C @ =gUnknown_202063C + ldr r0, _08051918 @ =gUnknown_2031DAC + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] + adds r2, 0x91 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + bl _08052318 + .align 2, 0 +_08051914: .4byte gUnknown_2037AB8 +_08051918: .4byte gUnknown_2031DAC +_0805191C: .4byte gUnknown_202063C +_08051920: + ldr r5, _0805197C @ =gUnknown_202063C + ldr r4, [r7] + adds r2, r4, 0 + adds r2, 0x90 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] + adds r6, r4, 0 + adds r6, 0x91 + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r3, r0, r5 + movs r0, 0x26 + ldrsh r1, [r3, r0] + movs r0, 0x5A + negs r0, r0 + cmp r1, r0 + ble _08051966 + bl _08052318 +_08051966: + movs r2, 0x1 + strh r2, [r3, 0x30] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x30] + adds r1, r4, 0 + bl _080522AC + .align 2, 0 +_0805197C: .4byte gUnknown_202063C +_08051980: + ldr r2, _08051990 @ =0x0000ffff + movs r0, 0x1 + movs r1, 0x10 + bl sub_80714D4 + bl _080522A8 + .align 2, 0 +_08051990: .4byte 0x0000ffff +_08051994: + ldr r2, _080519A4 @ =0x0000ffff + movs r0, 0x1 + movs r1, 0 + bl sub_80714D4 + bl _080522A8 + .align 2, 0 +_080519A4: .4byte 0x0000ffff +_080519A8: + ldr r2, _080519B8 @ =0x0000ffff + movs r0, 0x1 + movs r1, 0x10 + bl sub_80714D4 + bl _080522A8 + .align 2, 0 +_080519B8: .4byte 0x0000ffff +_080519BC: + ldr r5, _08051A28 @ =gUnknown_2031DAC + ldr r0, [r5] + adds r0, 0xF0 + ldrh r0, [r0] + bl sub_80441F4 + lsls r0, 24 + cmp r0, 0 + bne _08051A34 + ldr r4, _08051A2C @ =gUnknown_202063C + ldr r2, [r5] + adds r2, 0x8E + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x10 + adds r0, r1 + ldr r1, _08051A30 @ =gUnknown_826CF88 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + movs r2, 0x3 + orrs r1, r2 + strb r1, [r0, 0x1] + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + movs r2, 0x3 + movs r3, 0x3 + bl sub_80073F0 + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + bl sub_800843C + b _08051A4A + .align 2, 0 +_08051A28: .4byte gUnknown_2031DAC +_08051A2C: .4byte gUnknown_202063C +_08051A30: .4byte gUnknown_826CF88 +_08051A34: + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08051AD8 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800843C +_08051A4A: + ldr r5, _08051ADC @ =gUnknown_2031DAC + ldr r0, [r5] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08051AD8 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0 + bl sub_800843C + ldr r2, [r5] + adds r3, r2, 0 + adds r3, 0x8E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x3C + strh r1, [r0, 0x20] + adds r2, 0x8F + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xB4 + strh r1, [r0, 0x20] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xC0 + strh r1, [r0, 0x22] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08051AE0 @ =0x0000ffe0 + strh r1, [r0, 0x22] + ldrb r0, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r1, [r5] + bl _080522AC + .align 2, 0 +_08051AD8: .4byte gUnknown_202063C +_08051ADC: .4byte gUnknown_2031DAC +_08051AE0: .4byte 0x0000ffe0 +_08051AE4: + ldr r4, _08051BAC @ =gUnknown_202063C + ldr r2, [r7] + adds r3, r2, 0 + adds r3, 0x8E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + movs r5, 0 + strh r1, [r0, 0x26] + adds r2, 0x8F + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x26] + adds r0, 0xA3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bhi _08051B2C + movs r0, 0x27 + bl sub_80722CC +_08051B2C: + ldr r2, [r7] + adds r3, r2, 0 + adds r3, 0x8E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r6, 0x26 + ldrsh r1, [r0, r6] + movs r0, 0xDE + negs r0, r0 + cmp r1, r0 + blt _08051B4C + bl _08052318 +_08051B4C: + adds r0, r2, 0 + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x30] + adds r0, r2, 0 + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x30] + adds r1, r2, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r2, _08051BB0 @ =0x0000ffff + movs r0, 0x1 + movs r1, 0 + bl sub_80714D4 + b _08052318 + .align 2, 0 +_08051BAC: .4byte gUnknown_202063C +_08051BB0: .4byte 0x0000ffff +_08051BB4: + ldr r4, _08051C38 @ =gUnknown_202063C + ldr r2, [r7] + adds r3, r2, 0 + adds r3, 0x90 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] + adds r2, 0x91 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r2, 0x26 + ldrsh r1, [r0, r2] + movs r0, 0xDE + negs r0, r0 + cmp r1, r0 + ble _08051BF6 + b _08052318 +_08051BF6: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r7] + adds r2, r1, 0 + adds r2, 0x94 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x90 + ldrb r1, [r1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + b _08052318 + .align 2, 0 +_08051C38: .4byte gUnknown_202063C +_08051C3C: + ldr r0, _08051CA4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08051C4A + b _08052318 +_08051C4A: + ldr r1, [r7] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0x1 + bl sub_8050968 + ldr r0, [r7] + adds r0, 0xE0 + movs r1, 0xA6 + strh r1, [r0] + ldr r0, _08051CA8 @ =gUnknown_826CE44 + movs r4, 0x14 + negs r4, r4 + movs r1, 0x80 + adds r2, r4, 0 + movs r3, 0x3 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x90 + strb r0, [r1] + ldr r0, _08051CAC @ =gUnknown_826CE84 + movs r1, 0x80 + adds r2, r4, 0 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x91 + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08051CB0 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C + b _08052318 + .align 2, 0 +_08051CA4: .4byte gUnknown_2037AB8 +_08051CA8: .4byte gUnknown_826CE44 +_08051CAC: .4byte gUnknown_826CE84 +_08051CB0: .4byte gUnknown_202063C +_08051CB4: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + b _080522A4 +_08051CC4: + movs r1, 0x92 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _08051CE0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08051CDC + b _08052318 +_08051CDC: + b _080522A8 + .align 2, 0 +_08051CE0: .4byte gUnknown_2037AB8 +_08051CE4: + ldr r2, _08051D30 @ =gUnknown_202063C + ldr r4, [r7] + adds r3, r4, 0 + adds r3, 0x90 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + adds r0, r4, 0 + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r3, 0x26 + ldrsh r1, [r0, r3] + movs r6, 0x22 + ldrsh r0, [r0, r6] + adds r1, r0 + cmp r1, 0x40 + beq _08051D2A + b _08052318 +_08051D2A: + adds r1, r4, 0 + b _080522AC + .align 2, 0 +_08051D30: .4byte gUnknown_202063C +_08051D34: + ldr r1, [r7] + adds r5, r1, 0 + adds r5, 0xE0 + ldrh r0, [r5] + adds r0, 0x2 + strh r0, [r5] + lsls r0, 16 + asrs r0, 16 + movs r6, 0x9E + lsls r6, 1 + cmp r0, r6 + bgt _08051D4E + b _08052318 +_08051D4E: + strh r6, [r5] + b _080522AC +_08051D52: + ldr r0, [r7] + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08051D8C @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r3, [r7] + adds r2, r3, 0 + adds r2, 0x94 + ldrh r0, [r2] + adds r0, 0x1 + movs r1, 0 + strh r0, [r2] + str r1, [r3, 0x64] + b _08052318 + .align 2, 0 +_08051D8C: .4byte gUnknown_202063C +_08051D90: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0xA + beq _08051D9E + b _08052318 +_08051D9E: + b _080522AC +_08051DA0: + ldr r1, [r7] + adds r2, r1, 0 + adds r2, 0xE0 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + asrs r0, 16 + movs r3, 0xAE + lsls r3, 1 + cmp r0, r3 + ble _08051DC2 + strh r3, [r2] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08051DC2: + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xE0 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r0, 0xA4 + lsls r0, 1 + cmp r1, r0 + beq _08051DD6 + b _08052318 +_08051DD6: + movs r6, 0x84 + lsls r6, 1 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, 0 + bne _08051DE4 + b _08052318 +_08051DE4: + ldr r0, _08051E10 @ =gUnknown_826CEB8 + movs r1, 0x80 + movs r2, 0x41 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x92 + strb r0, [r1] + ldr r2, _08051E14 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x92 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, _08051E18 @ =sub_804FDDC + str r1, [r0] + b _08052318 + .align 2, 0 +_08051E10: .4byte gUnknown_826CEB8 +_08051E14: .4byte gUnknown_202063C +_08051E18: .4byte sub_804FDDC +_08051E1C: + ldr r0, _08051E3C @ =gUnknown_826CF30 + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r2, _08051E40 @ =gUnknown_2031DAC + ldr r1, [r2] + adds r1, 0x91 + strb r0, [r1] + ldr r0, [r2] + adds r0, 0x94 + movs r1, 0x32 + strh r1, [r0] + b _08052318 + .align 2, 0 +_08051E3C: .4byte gUnknown_826CF30 +_08051E40: .4byte gUnknown_2031DAC +_08051E44: + ldr r2, _08051E80 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + blt _08051E62 + b _08052318 +_08051E62: + adds r0, r1, 0 + bl sub_8007280 + movs r0, 0x6 + bl sub_8050968 + ldr r1, [r7] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0x98 + bl sub_80722CC + b _08052318 + .align 2, 0 +_08051E80: .4byte gUnknown_202063C +_08051E84: + ldr r1, [r7] + adds r2, r1, 0 + adds r2, 0xEA + ldrh r3, [r2] + ldr r0, _08051E9C @ =0x000003ff + cmp r3, r0 + bhi _08051EA0 + adds r0, r3, 0 + adds r0, 0x34 + strh r0, [r2] + b _08051EAE + .align 2, 0 +_08051E9C: .4byte 0x000003ff +_08051EA0: + movs r0, 0x80 + lsls r0, 3 + strh r0, [r2] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08051EAE: + ldr r4, [r7] +_08051EB0: + adds r0, r4, 0 + adds r0, 0xEA + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 8 + bl __divsi3 + adds r4, 0xE8 + strh r0, [r4] + b _08052318 +_08051EC4: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08051EE0 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x3C + strh r1, [r0] + b _08052318 + .align 2, 0 +_08051EE0: .4byte gUnknown_2031DAC +_08051EE4: + ldr r4, _08051F08 @ =gUnknown_2037AB8 + ldrb r1, [r4, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08051EF2 + b _08052318 +_08051EF2: + movs r0, 0x5 + bl sub_8050968 + movs r0, 0x7 + bl sub_8050968 + ldrb r0, [r4, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4, 0x8] + b _080522A8 + .align 2, 0 +_08051F08: .4byte gUnknown_2037AB8 +_08051F0C: + ldr r2, _08051F24 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + b _080522A4 + .align 2, 0 +_08051F24: .4byte gUnknown_2037AB8 +_08051F28: + movs r1, 0xA2 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _08051F44 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08051F40 + b _08052318 +_08051F40: + b _080522A8 + .align 2, 0 +_08051F44: .4byte gUnknown_2037AB8 +_08051F48: + ldr r0, _08051FDC @ =gUnknown_826CDE4 + movs r2, 0x8 + negs r2, r2 + movs r1, 0x78 + movs r3, 0 + bl sub_8006F8C + ldr r5, _08051FE0 @ =gUnknown_2031DAC + ldr r1, [r5] + adds r1, 0xD3 + movs r6, 0 + strb r0, [r1] + ldr r4, _08051FE4 @ =gUnknown_202063C + ldr r2, [r5] + adds r2, 0xD3 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x4A + strh r1, [r0, 0x34] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08051FE8 @ =sub_8053A0C + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_800838C + ldr r0, [r5] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + bl sub_800843C + ldr r0, [r5] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + ldr r2, _08051FEC @ =0x0000ffff + movs r1, 0x10 + bl sub_80714D4 + ldr r2, [r5] + adds r1, r2, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + str r6, [r2, 0x64] + b _08052318 + .align 2, 0 +_08051FDC: .4byte gUnknown_826CDE4 +_08051FE0: .4byte gUnknown_2031DAC +_08051FE4: .4byte gUnknown_202063C +_08051FE8: .4byte sub_8053A0C +_08051FEC: .4byte 0x0000ffff +_08051FF0: + ldr r2, _0805201C @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + ldr r1, _08052020 @ =0x0000ffff + str r1, [sp] + movs r1, 0x1 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, [r7] + b _080522AC + .align 2, 0 +_0805201C: .4byte gUnknown_202063C +_08052020: .4byte 0x0000ffff +_08052024: + ldr r2, _08052060 @ =gUnknown_202063C + ldr r3, [r7] + adds r0, r3, 0 + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _08052064 @ =nullsub_8 + cmp r1, r0 + beq _08052042 + b _08052318 +_08052042: + adds r0, r3, 0 + adds r0, 0xF2 + ldrh r2, [r0] + lsls r0, r2, 3 + ldr r1, _08052068 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _0805206C @ =gUnknown_202401C + ldr r1, [r1] + ldr r1, [r1, 0x10] + ldr r3, [r3, 0x6C] + bl sub_800ECC4 + ldr r1, [r7] + b _080522AC + .align 2, 0 +_08052060: .4byte gUnknown_202063C +_08052064: .4byte nullsub_8 +_08052068: .4byte gUnknown_82350AC +_0805206C: .4byte gUnknown_202401C +_08052070: + ldr r4, _0805211C @ =gUnknown_202063C + ldr r2, [r7] + adds r6, r2, 0 + adds r6, 0x8F + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r5, 0 + movs r1, 0x78 + strh r1, [r0, 0x20] + ldrb r0, [r6] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldr r3, _08052120 @ =gUnknown_82349CC + adds r2, 0xF2 + ldrh r0, [r2] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x1] + adds r0, 0x3C + strh r0, [r1, 0x22] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x24] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x26] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + bl sub_800838C + ldr r0, [r7] + adds r0, 0x8F + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0x14 + str r2, [sp, 0x8] + ldr r2, _08052124 @ =0x000fffff + str r2, [sp, 0xC] + movs r2, 0x78 + movs r3, 0x54 + bl sub_804B908 + ldr r0, [r7] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80077D8 + ldr r0, [r7] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, [r7] + b _080522AC + .align 2, 0 +_0805211C: .4byte gUnknown_202063C +_08052120: .4byte gUnknown_82349CC +_08052124: .4byte 0x000fffff +_08052128: + movs r1, 0xAA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r4, _08052154 @ =gUnknown_2021D18 + ldr r1, _08052158 @ =gUnknown_841E20D + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + ldr r0, _0805215C @ =gUnknown_2031DAC + ldr r3, [r0] + adds r1, r3, 0 + adds r1, 0x94 + movs r2, 0 + movs r0, 0xA7 + b _0805218E + .align 2, 0 +_08052154: .4byte gUnknown_2021D18 +_08052158: .4byte gUnknown_841E20D +_0805215C: .4byte gUnknown_2031DAC +_08052160: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x3C + bhi _0805216E + b _08052318 +_0805216E: + adds r2, r1, 0 + adds r2, 0xF2 + ldrh r1, [r2] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _08052184 + adds r0, r1, 0 + movs r1, 0 + bl sub_8071DF0 +_08052184: + ldr r3, [r7] + adds r1, r3, 0 + adds r1, 0x94 + movs r2, 0 + ldr r0, _08052194 @ =0x0000010b +_0805218E: + strh r0, [r1] + str r2, [r3, 0x64] + b _08052318 + .align 2, 0 +_08052194: .4byte 0x0000010b +_08052198: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _080521A4 + b _08052318 +_080521A4: + ldr r0, _080521B0 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x44 + strh r1, [r0] + b _08052318 + .align 2, 0 +_080521B0: .4byte gUnknown_2031DAC +_080521B4: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0xA + bne _080521C6 + ldr r0, _080521F4 @ =0x00000103 + bl sub_8071C60 +_080521C6: + ldr r1, [r7] + ldr r0, [r1, 0x64] + cmp r0, 0xFA + beq _080521D0 + b _08052318 +_080521D0: + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + movs r5, 0 + strh r0, [r1] + ldr r4, _080521F8 @ =gUnknown_2021D18 + ldr r1, _080521FC @ =gUnknown_841E21E + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + ldr r0, [r7] + str r5, [r0, 0x64] + b _08052318 + .align 2, 0 +_080521F4: .4byte 0x00000103 +_080521F8: .4byte gUnknown_2021D18 +_080521FC: .4byte gUnknown_841E21E +_08052200: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x3C + beq _0805220E + b _08052318 +_0805220E: + b _080522AC +_08052210: + bl sub_80544AC + b _080522A8 +_08052216: + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xEE + ldrb r0, [r0] + cmp r0, 0 + beq _08052226 + movs r0, 0x1 + b _0805231A +_08052226: + ldr r0, _08052238 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08052318 + adds r1, r2, 0 + b _080522AC + .align 2, 0 +_08052238: .4byte gUnknown_30030F0 +_0805223C: + ldr r0, _08052280 @ =gUnknown_20370C2 + ldrb r0, [r0] + movs r1, 0 + bl sub_805080C + ldr r1, _08052284 @ =gUnknown_300537C + ldr r0, _08052288 @ =sub_8050948 + str r0, [r1] + ldr r7, _0805228C @ =gUnknown_2031DA4 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08052290 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0x1 + movs r2, 0 + bl sub_8042EC4 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _080522A8 + ldrb r3, [r7] + adds r0, r3, 0 + muls r0, r6 + adds r0, r5 + ldr r1, _08052294 @ =gUnknown_2031DAC + ldr r1, [r1] + adds r1, 0x8F + ldrb r2, [r1] + adds r1, r4, 0 + bl sub_80CE540 + b _080522A8 + .align 2, 0 +_08052280: .4byte gUnknown_20370C2 +_08052284: .4byte gUnknown_300537C +_08052288: .4byte sub_8050948 +_0805228C: .4byte gUnknown_2031DA4 +_08052290: .4byte gUnknown_2024284 +_08052294: .4byte gUnknown_2031DAC +_08052298: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 +_080522A4: + bl sub_8070588 +_080522A8: + ldr r0, _080522B8 @ =gUnknown_2031DAC + ldr r1, [r0] +_080522AC: + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08052318 + .align 2, 0 +_080522B8: .4byte gUnknown_2031DAC +_080522BC: + ldr r0, _08052324 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08052318 + ldr r0, [r7] + adds r0, 0xF4 + ldrh r0, [r0] + bl sub_8071A74 + ldr r0, [r7] + cmp r0, 0 + beq _0805230A + bl sub_8003ECC + movs r0, 0x3 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x1 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 + bl sub_80359AC + ldr r0, [r7] + bl sub_8002BC4 + str r4, [r7] +_0805230A: + ldr r0, _08052328 @ =sub_80567DC + bl sub_8000544 + bl sub_8053AE4 + bl sub_812B484 +_08052318: + movs r0, 0 +_0805231A: + add sp, 0x10 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08052324: .4byte gUnknown_2037AB8 +_08052328: .4byte sub_80567DC + thumb_func_end sub_8050F3C + + thumb_func_start sub_805232C +sub_805232C: @ 805232C + push {r4-r7,lr} + sub sp, 0x10 + ldr r0, _08052350 @ =gUnknown_2031DAC + ldr r1, [r0] + adds r1, 0x94 + ldrh r5, [r1] + ldr r1, _08052354 @ =0x0000010b + adds r7, r0, 0 + cmp r5, r1 + bls _08052344 + bl _08053774 +_08052344: + lsls r0, r5, 2 + ldr r1, _08052358 @ =_0805235C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08052350: .4byte gUnknown_2031DAC +_08052354: .4byte 0x0000010b +_08052358: .4byte _0805235C + .align 2, 0 +_0805235C: + .4byte _0805278C + .4byte _08052804 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08052860 + .4byte _080528A8 + .4byte _0805291C + .4byte _08053774 + .4byte _08052988 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _080529AC + .4byte _080529DC + .4byte _080529EE + .4byte _08052A10 + .4byte _08053774 + .4byte _08053774 + .4byte _08052B08 + .4byte _08052B28 + .4byte _08052B94 + .4byte _08052C18 + .4byte _08052C3C + .4byte _08052C88 + .4byte _08052CD4 + .4byte _08052D30 + .4byte _08052D9C + .4byte _08052DB0 + .4byte _08052DC4 + .4byte _08052DD8 + .4byte _08052F00 + .4byte _08052FD0 + .4byte _08053058 + .4byte _080530F8 + .4byte _08053108 + .4byte _08053128 + .4byte _08053774 + .4byte _08053774 + .4byte _0805324C + .4byte _0805325C + .4byte _0805327A + .4byte _08053774 + .4byte _080532A0 + .4byte _080532E0 + .4byte _08053320 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053340 + .4byte _08053368 + .4byte _08053384 + .4byte _080533A4 + .4byte _0805344C + .4byte _08053480 + .4byte _080534CC + .4byte _08053584 + .4byte _08053610 + .4byte _0805365C + .4byte _0805366C + .4byte _08053672 + .4byte _08053698 + .4byte _080536F4 + .4byte _08053718 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08052A58 + .4byte _08052A8C + .4byte _08052AE0 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053180 + .4byte _080531E8 + .4byte _08053224 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _080535BC + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08052BC0 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _08053774 + .4byte _080535F4 +_0805278C: + ldr r3, _080527F8 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r4, [r7] + adds r2, r4, 0 + adds r2, 0x8E + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldr r1, _080527FC @ =0x0000ff4c + strh r1, [r0, 0x24] + ldrb r0, [r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldr r2, _08052800 @ =gUnknown_82349CC + adds r0, r4, 0 + adds r0, 0xF0 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + strh r0, [r1, 0x26] + adds r1, r4, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + bl sub_8071A68 + ldr r1, [r7] + adds r1, 0xF4 + strh r0, [r1] + movs r0, 0x84 + lsls r0, 1 + bl sub_8071A74 + bl _08053774 + .align 2, 0 +_080527F8: .4byte gUnknown_202063C +_080527FC: .4byte 0x0000ff4c +_08052800: .4byte gUnknown_82349CC +_08052804: + ldr r5, [r7] + adds r6, r5, 0 + adds r6, 0xE6 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + ble _08052838 + ldr r2, _08052834 @ =gUnknown_202063C + adds r0, r5, 0 + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + adds r1, 0x3 + strh r1, [r0, 0x24] + ldrh r0, [r6] + subs r0, 0x3 + strh r0, [r6] + bl _08053774 + .align 2, 0 +_08052834: .4byte gUnknown_202063C +_08052838: + ldr r2, _0805285C @ =gUnknown_202063C + adds r0, r5, 0 + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x24] + strh r1, [r6] + adds r1, r5, 0 + adds r1, 0x94 + movs r0, 0xA + strh r0, [r1] + bl _08053774 + .align 2, 0 +_0805285C: .4byte gUnknown_202063C +_08052860: + ldr r4, _0805289C @ =gUnknown_2021D18 + ldr r1, _080528A0 @ =gUnknown_841E1E9 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + ldr r4, _080528A4 @ =gUnknown_2031DAC + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0xF0 + ldrh r1, [r2] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0805288E + adds r0, r1, 0 + movs r1, 0 + bl sub_8071DF0 +_0805288E: + ldr r3, [r4] + adds r1, r3, 0 + adds r1, 0x94 + movs r2, 0 + movs r0, 0xB + bl _080535EA + .align 2, 0 +_0805289C: .4byte gUnknown_2021D18 +_080528A0: .4byte gUnknown_841E1E9 +_080528A4: .4byte gUnknown_2031DAC +_080528A8: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x50 + beq _080528B8 + bl _08053774 +_080528B8: + adds r0, r1, 0 + adds r0, 0x8E + ldrb r0, [r0] + ldr r2, _0805290C @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0x14 + str r2, [sp, 0x8] + ldr r2, _08052910 @ =0x000fffff + str r2, [sp, 0xC] + movs r2, 0x78 + movs r3, 0x20 + bl sub_804BB98 + ldr r1, [r7] + adds r1, 0xD2 + strb r0, [r1] + ldr r1, [r7] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldr r4, _08052914 @ =gUnknown_2021D18 + ldr r1, _08052918 @ =gUnknown_841E200 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + bl _08053774 + .align 2, 0 +_0805290C: .4byte gUnknown_202063C +_08052910: .4byte 0x000fffff +_08052914: .4byte gUnknown_2021D18 +_08052918: .4byte gUnknown_841E200 +_0805291C: + ldr r5, _08052978 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0xD2 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r5, 0 + adds r4, 0x1C + adds r0, r4 + ldr r1, [r0] + ldr r0, _0805297C @ =nullsub_8 + cmp r1, r0 + beq _0805293C + bl _08053774 +_0805293C: + ldr r0, _08052980 @ =gUnknown_826CDE4 + movs r1, 0x78 + movs r2, 0x20 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0xD3 + strb r0, [r1] + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08052984 @ =sub_8053938 + str r1, [r0] + adds r2, 0xD2 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl sub_8007280 + ldr r1, [r7] + bl _08053708 + .align 2, 0 +_08052978: .4byte gUnknown_202063C +_0805297C: .4byte nullsub_8 +_08052980: .4byte gUnknown_826CDE4 +_08052984: .4byte sub_8053938 +_08052988: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080529A8 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x14 + strh r1, [r0] + bl _08053774 + .align 2, 0 +_080529A8: .4byte gUnknown_2031DAC +_080529AC: + ldr r0, _080529D8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080529BC + bl _08053774 +_080529BC: + movs r0, 0x4 + bl sub_8050968 + movs r0, 0 + movs r1, 0xFF + bl sub_800445C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + bl _08053704 + .align 2, 0 +_080529D8: .4byte gUnknown_2037AB8 +_080529DC: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl _08053700 +_080529EE: + ldr r0, _08052A0C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _080529FE + bl _08053774 +_080529FE: + ldr r0, [r7] + adds r0, 0x94 + movs r1, 0x17 + strh r1, [r0] + bl _08053774 + .align 2, 0 +_08052A0C: .4byte gUnknown_2037AB8 +_08052A10: + ldr r4, _08052A2C @ =gUnknown_2031DAC + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0xEA + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + bls _08052A30 + adds r0, r1, 0 + subs r0, 0x34 + strh r0, [r2] + b _08052A4A + .align 2, 0 +_08052A2C: .4byte gUnknown_2031DAC +_08052A30: + movs r0, 0x1 + bl sub_8050968 + ldr r3, [r4] + adds r1, r3, 0 + adds r1, 0xEA + movs r2, 0 + movs r0, 0x80 + strh r0, [r1] + subs r1, 0x56 + movs r0, 0x7C + strh r0, [r1] + str r2, [r3, 0x64] +_08052A4A: + ldr r0, _08052A54 @ =gUnknown_2031DAC + ldr r4, [r0] + bl _0805330C + .align 2, 0 +_08052A54: .4byte gUnknown_2031DAC +_08052A58: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x14 + bhi _08052A68 + bl _08053774 +_08052A68: + movs r0, 0x3 + bl sub_8050968 + ldr r0, _08052A88 @ =gUnknown_826CF48 + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x91 + strb r0, [r1] + ldr r1, [r7] + bl _08053708 + .align 2, 0 +_08052A88: .4byte gUnknown_826CF48 +_08052A8C: + ldr r2, _08052AD4 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + blt _08052AAC + bl _08053774 +_08052AAC: + adds r0, r1, 0 + bl sub_8007280 + ldr r1, _08052AD8 @ =0x00000452 + movs r0, 0x50 + bl sub_8000A38 + movs r1, 0x82 + lsls r1, 3 + movs r0, 0x52 + bl sub_8000A38 + ldr r0, _08052ADC @ =sub_8054588 + movs r1, 0x5 + bl sub_807741C + ldr r1, [r7] + bl _08053708 + .align 2, 0 +_08052AD4: .4byte gUnknown_202063C +_08052AD8: .4byte 0x00000452 +_08052ADC: .4byte sub_8054588 +_08052AE0: + ldr r0, _08052B00 @ =sub_8054588 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08052AF0 + bl _08053774 +_08052AF0: + ldr r0, _08052B04 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x1A + strh r1, [r0] + bl _08053774 + .align 2, 0 +_08052B00: .4byte sub_8054588 +_08052B04: .4byte gUnknown_2031DAC +_08052B08: + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xE0 + ldrh r1, [r0] + subs r1, 0x1 + strh r1, [r0] + lsls r1, 16 + movs r0, 0x9E + lsls r0, 17 + cmp r1, r0 + beq _08052B22 + bl _08053774 +_08052B22: + adds r1, r2, 0 + bl _08053708 +_08052B28: + ldr r0, _08052B80 @ =gUnknown_826CE44 + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0x3 + bl sub_8006F8C + ldr r4, _08052B84 @ =gUnknown_2031DAC + ldr r1, [r4] + adds r1, 0x90 + strb r0, [r1] + ldr r5, _08052B88 @ =gUnknown_202063C + ldr r0, [r4] + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08052B8C @ =sub_804FD48 + str r1, [r0] + ldr r0, _08052B90 @ =gUnknown_826CE84 + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] + adds r1, 0x91 + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x1 + bl sub_800838C + ldr r1, [r4] + bl _08053708 + .align 2, 0 +_08052B80: .4byte gUnknown_826CE44 +_08052B84: .4byte gUnknown_2031DAC +_08052B88: .4byte gUnknown_202063C +_08052B8C: .4byte sub_804FD48 +_08052B90: .4byte gUnknown_826CE84 +_08052B94: + ldr r2, [r7] + adds r1, r2, 0 + adds r1, 0xE0 + ldrh r0, [r1] + subs r0, 0x3 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA6 + bne _08052BAE + subs r1, 0x4C + movs r0, 0xC8 + strh r0, [r1] +_08052BAE: + ldr r1, _08052BBC @ =0x00001241 + movs r0, 0 + bl sub_8000A38 + bl _08053774 + .align 2, 0 +_08052BBC: .4byte 0x00001241 +_08052BC0: + ldr r2, _08052C14 @ =gUnknown_202063C + ldr r4, [r7] + adds r3, r4, 0 + adds r3, 0x90 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x2 + strh r1, [r0, 0x22] + adds r0, r4, 0 + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x2 + strh r1, [r0, 0x22] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r2, 0x22 + ldrsh r1, [r0, r2] + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _08052C06 + bl _08053774 +_08052C06: + adds r1, r4, 0 + adds r1, 0x94 + movs r0, 0x1D + strh r0, [r1] + bl _08053774 + .align 2, 0 +_08052C14: .4byte gUnknown_202063C +_08052C18: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _08052C38 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x1E + strh r1, [r0] + bl _08053774 + .align 2, 0 +_08052C38: .4byte gUnknown_2031DAC +_08052C3C: + ldr r0, _08052C80 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08052C4C + bl _08053774 +_08052C4C: + ldr r0, [r7] + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08052C84 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + movs r0, 0x2 + bl sub_8050968 + ldr r1, [r7] + bl _08053708 + .align 2, 0 +_08052C80: .4byte gUnknown_2037AB8 +_08052C84: .4byte gUnknown_202063C +_08052C88: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r5, _08052CCC @ =gUnknown_826CE84 + adds r0, r5, 0 + movs r1, 0x6F + movs r2, 0xAA + movs r3, 0 + bl sub_8006F8C + ldr r4, _08052CD0 @ =gUnknown_2031DAC + ldr r1, [r4] + adds r1, 0x90 + strb r0, [r1] + movs r2, 0xA + negs r2, r2 + adds r0, r5, 0 + movs r1, 0x81 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] + adds r1, 0x91 + strb r0, [r1] + ldr r1, [r4] + bl _08053708 + .align 2, 0 +_08052CCC: .4byte gUnknown_826CE84 +_08052CD0: .4byte gUnknown_2031DAC +_08052CD4: + ldr r0, _08052D24 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08052CF2 + movs r0, 0x28 + bl sub_80722CC + ldr r0, _08052D28 @ =gUnknown_2031DAC + ldr r1, [r0] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08052CF2: + ldr r3, _08052D2C @ =gUnknown_202063C + ldr r0, _08052D28 @ =gUnknown_2031DAC + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] + adds r2, 0x91 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + bl _08053774 + .align 2, 0 +_08052D24: .4byte gUnknown_2037AB8 +_08052D28: .4byte gUnknown_2031DAC +_08052D2C: .4byte gUnknown_202063C +_08052D30: + ldr r5, _08052D94 @ =gUnknown_202063C + ldr r4, [r7] + adds r2, r4, 0 + adds r2, 0x90 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] + adds r6, r4, 0 + adds r6, 0x91 + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r3, r0, r5 + movs r0, 0x26 + ldrsh r1, [r3, r0] + movs r0, 0x5A + negs r0, r0 + cmp r1, r0 + ble _08052D76 + bl _08053774 +_08052D76: + movs r2, 0x1 + strh r2, [r3, 0x30] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + strh r2, [r0, 0x30] + adds r1, r4, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldr r0, _08052D98 @ =sub_805465C + b _08052FBE + .align 2, 0 +_08052D94: .4byte gUnknown_202063C +_08052D98: .4byte sub_805465C +_08052D9C: + ldr r2, _08052DAC @ =0x0000ffff + movs r0, 0x8 + movs r1, 0x10 + bl sub_80714D4 + bl _08053704 + .align 2, 0 +_08052DAC: .4byte 0x0000ffff +_08052DB0: + ldr r2, _08052DC0 @ =0x0000ffff + movs r0, 0x8 + movs r1, 0x10 + bl sub_80714D4 + bl _08053704 + .align 2, 0 +_08052DC0: .4byte 0x0000ffff +_08052DC4: + ldr r2, _08052DD4 @ =0x0000ffff + movs r0, 0x8 + movs r1, 0x10 + bl sub_80714D4 + bl _08053704 + .align 2, 0 +_08052DD4: .4byte 0x0000ffff +_08052DD8: + ldr r5, _08052E44 @ =gUnknown_2031DAC + ldr r0, [r5] + adds r0, 0xF0 + ldrh r0, [r0] + bl sub_80441F4 + lsls r0, 24 + cmp r0, 0 + bne _08052E50 + ldr r4, _08052E48 @ =gUnknown_202063C + ldr r2, [r5] + adds r2, 0x8E + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x10 + adds r0, r1 + ldr r1, _08052E4C @ =gUnknown_826CF88 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x1] + movs r2, 0x3 + orrs r1, r2 + strb r1, [r0, 0x1] + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + movs r2, 0x3 + movs r3, 0x3 + bl sub_80073F0 + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + bl sub_800843C + b _08052E66 + .align 2, 0 +_08052E44: .4byte gUnknown_2031DAC +_08052E48: .4byte gUnknown_202063C +_08052E4C: .4byte gUnknown_826CF88 +_08052E50: + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08052EF4 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + bl sub_800843C +_08052E66: + ldr r5, _08052EF8 @ =gUnknown_2031DAC + ldr r0, [r5] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08052EF4 @ =gUnknown_202063C + adds r0, r4 + movs r1, 0 + bl sub_800843C + ldr r2, [r5] + adds r3, r2, 0 + adds r3, 0x8E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x28 + strh r1, [r0, 0x20] + adds r2, 0x8F + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xC8 + strh r1, [r0, 0x20] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xC0 + strh r1, [r0, 0x22] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _08052EFC @ =0x0000ffe0 + strh r1, [r0, 0x22] + ldrb r0, [r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r1, [r5] + bl _08053708 + .align 2, 0 +_08052EF4: .4byte gUnknown_202063C +_08052EF8: .4byte gUnknown_2031DAC +_08052EFC: .4byte 0x0000ffe0 +_08052F00: + ldr r4, _08052FC8 @ =gUnknown_202063C + ldr r2, [r7] + adds r3, r2, 0 + adds r3, 0x8E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + movs r5, 0 + strh r1, [r0, 0x26] + adds r2, 0x8F + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x26] + adds r0, 0xA3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bhi _08052F48 + movs r0, 0x27 + bl sub_80722CC +_08052F48: + ldr r2, [r7] + adds r3, r2, 0 + adds r3, 0x8E + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r6, 0x26 + ldrsh r1, [r0, r6] + movs r0, 0xDE + negs r0, r0 + cmp r1, r0 + blt _08052F68 + bl _08053774 +_08052F68: + adds r0, r2, 0 + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x30] + adds r0, r2, 0 + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x30] + adds r1, r2, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, _08052FCC @ =sub_8054734 +_08052FBE: + movs r1, 0x5 + bl sub_807741C + bl _08053774 + .align 2, 0 +_08052FC8: .4byte gUnknown_202063C +_08052FCC: .4byte sub_8054734 +_08052FD0: + ldr r4, _08053054 @ =gUnknown_202063C + ldr r2, [r7] + adds r3, r2, 0 + adds r3, 0x90 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] + adds r2, 0x91 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + strh r1, [r0, 0x26] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r2, 0x26 + ldrsh r1, [r0, r2] + movs r0, 0xDE + negs r0, r0 + cmp r1, r0 + ble _08053012 + b _08053774 +_08053012: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r7] + adds r2, r1, 0 + adds r2, 0x94 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x90 + ldrb r1, [r1] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + b _08053774 + .align 2, 0 +_08053054: .4byte gUnknown_202063C +_08053058: + ldr r0, _080530E4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08053066 + b _08053774 +_08053066: + ldr r1, [r7] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0x1 + bl sub_8050968 + ldr r0, [r7] + adds r0, 0xE0 + movs r1, 0xA6 + strh r1, [r0] + movs r0, 0x3 + bl sub_8050968 + ldr r0, [r7] + adds r0, 0xE4 + movs r1, 0xCE + lsls r1, 1 + strh r1, [r0] + ldr r0, _080530E8 @ =gUnknown_826CE44 + movs r4, 0x14 + negs r4, r4 + movs r1, 0x78 + adds r2, r4, 0 + movs r3, 0x3 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x90 + strb r0, [r1] + ldr r5, _080530EC @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080530F0 @ =sub_804FD48 + str r1, [r0] + ldr r0, _080530F4 @ =gUnknown_826CE84 + movs r1, 0x78 + adds r2, r4, 0 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7] + adds r1, 0x91 + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x1 + bl sub_800838C + b _08053774 + .align 2, 0 +_080530E4: .4byte gUnknown_2037AB8 +_080530E8: .4byte gUnknown_826CE44 +_080530EC: .4byte gUnknown_202063C +_080530F0: .4byte sub_804FD48 +_080530F4: .4byte gUnknown_826CE84 +_080530F8: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x10 + movs r3, 0 + b _08053700 +_08053108: + movs r1, 0x92 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _08053124 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08053120 + b _08053774 +_08053120: + b _08053704 + .align 2, 0 +_08053124: .4byte gUnknown_2037AB8 +_08053128: + ldr r2, _0805317C @ =gUnknown_202063C + ldr r4, [r7] + adds r3, r4, 0 + adds r3, 0x90 + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x4 + strh r1, [r0, 0x26] + adds r0, r4, 0 + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x4 + strh r1, [r0, 0x26] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r6, 0x26 + ldrsh r1, [r0, r6] + movs r2, 0x22 + ldrsh r0, [r0, r2] + adds r1, r0 + cmp r1, 0x40 + beq _0805316E + b _08053774 +_0805316E: + adds r0, r4, 0 + adds r0, 0x94 + movs r1, 0x90 + strh r1, [r0] + movs r0, 0 + str r0, [r4, 0x64] + b _08053774 + .align 2, 0 +_0805317C: .4byte gUnknown_202063C +_08053180: + movs r1, 0xB2 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r4, _080531DC @ =gUnknown_2031DAC + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0xE0 + ldrh r0, [r1] + adds r0, 0x3 + strh r0, [r1] + adds r1, 0x4 + ldrh r0, [r1] + adds r0, 0x3 + strh r0, [r1] + ldr r0, [r2, 0x64] + adds r0, 0x1 + str r0, [r2, 0x64] + cmp r0, 0xA + bne _080531C4 + ldr r0, _080531E0 @ =sub_8054588 + movs r1, 0x5 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080531E4 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0xC] +_080531C4: + ldr r1, [r4] + adds r3, r1, 0 + adds r3, 0xE0 + movs r6, 0 + ldrsh r0, [r3, r6] + movs r2, 0x9E + lsls r2, 1 + cmp r0, r2 + bgt _080531D8 + b _08053774 +_080531D8: + strh r2, [r3] + b _08053708 + .align 2, 0 +_080531DC: .4byte gUnknown_2031DAC +_080531E0: .4byte sub_8054588 +_080531E4: .4byte gUnknown_3005090 +_080531E8: + ldr r0, [r7] + adds r0, 0x90 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08053220 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r3, [r7] + adds r2, r3, 0 + adds r2, 0x94 + ldrh r0, [r2] + adds r0, 0x1 + movs r1, 0 + strh r0, [r2] + str r1, [r3, 0x64] + b _08053774 + .align 2, 0 +_08053220: .4byte gUnknown_202063C +_08053224: + ldr r0, _08053244 @ =sub_8054588 + bl sub_8077650 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _08053234 + b _08053774 +_08053234: + ldr r0, _08053248 @ =gUnknown_2031DAC + ldr r2, [r0] + adds r1, r2, 0 + adds r1, 0x94 + movs r0, 0x2E + strh r0, [r1] + str r3, [r2, 0x64] + b _08053774 + .align 2, 0 +_08053244: .4byte sub_8054588 +_08053248: .4byte gUnknown_2031DAC +_0805324C: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0xA + beq _0805325A + b _08053774 +_0805325A: + b _08053708 +_0805325C: + ldr r1, [r7] + adds r5, r1, 0 + adds r5, 0xE0 + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + lsls r0, 16 + asrs r0, 16 + movs r6, 0xAE + lsls r6, 1 + cmp r0, r6 + bgt _08053276 + b _08053774 +_08053276: + strh r6, [r5] + b _08053708 +_0805327A: + ldr r0, _08053298 @ =gUnknown_826CF30 + movs r1, 0x78 + movs r2, 0x50 + movs r3, 0 + bl sub_8006F8C + ldr r2, _0805329C @ =gUnknown_2031DAC + ldr r1, [r2] + adds r1, 0x91 + strb r0, [r1] + ldr r0, [r2] + adds r0, 0x94 + movs r1, 0x32 + strh r1, [r0] + b _08053774 + .align 2, 0 +_08053298: .4byte gUnknown_826CF30 +_0805329C: .4byte gUnknown_2031DAC +_080532A0: + ldr r2, _080532DC @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0x91 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x3F + ldrb r0, [r0] + lsls r0, 27 + cmp r0, 0 + blt _080532BE + b _08053774 +_080532BE: + adds r0, r1, 0 + bl sub_8007280 + movs r0, 0x6 + bl sub_8050968 + ldr r1, [r7] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0x98 + bl sub_80722CC + b _08053774 + .align 2, 0 +_080532DC: .4byte gUnknown_202063C +_080532E0: + ldr r1, [r7] + adds r2, r1, 0 + adds r2, 0xEA + ldrh r3, [r2] + ldr r0, _080532F8 @ =0x000003ff + cmp r3, r0 + bhi _080532FC + adds r0, r3, 0 + adds r0, 0x34 + strh r0, [r2] + b _0805330A + .align 2, 0 +_080532F8: .4byte 0x000003ff +_080532FC: + movs r0, 0x80 + lsls r0, 3 + strh r0, [r2] + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0805330A: + ldr r4, [r7] +_0805330C: + adds r0, r4, 0 + adds r0, 0xEA + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 8 + bl __divsi3 + adds r4, 0xE8 + strh r0, [r4] + b _08053774 +_08053320: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _0805333C @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x3C + strh r1, [r0] + b _08053774 + .align 2, 0 +_0805333C: .4byte gUnknown_2031DAC +_08053340: + ldr r4, _08053364 @ =gUnknown_2037AB8 + ldrb r1, [r4, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0805334E + b _08053774 +_0805334E: + movs r0, 0x5 + bl sub_8050968 + movs r0, 0x7 + bl sub_8050968 + ldrb r0, [r4, 0x8] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4, 0x8] + b _08053704 + .align 2, 0 +_08053364: .4byte gUnknown_2037AB8 +_08053368: + ldr r2, _08053380 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + b _08053700 + .align 2, 0 +_08053380: .4byte gUnknown_2037AB8 +_08053384: + movs r1, 0xA2 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r0, _080533A0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0805339C + b _08053774 +_0805339C: + b _08053704 + .align 2, 0 +_080533A0: .4byte gUnknown_2037AB8 +_080533A4: + ldr r0, _08053438 @ =gUnknown_826CDE4 + movs r2, 0x8 + negs r2, r2 + movs r1, 0x78 + movs r3, 0 + bl sub_8006F8C + ldr r5, _0805343C @ =gUnknown_2031DAC + ldr r1, [r5] + adds r1, 0xD3 + movs r6, 0 + strb r0, [r1] + ldr r4, _08053440 @ =gUnknown_202063C + ldr r2, [r5] + adds r2, 0xD3 + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x4A + strh r1, [r0, 0x34] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08053444 @ =sub_8053A0C + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x1 + bl sub_800838C + ldr r0, [r5] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x2 + bl sub_800843C + ldr r0, [r5] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + ldr r2, _08053448 @ =0x0000ffff + movs r1, 0x10 + bl sub_80714D4 + ldr r2, [r5] + adds r1, r2, 0 + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + str r6, [r2, 0x64] + b _08053774 + .align 2, 0 +_08053438: .4byte gUnknown_826CDE4 +_0805343C: .4byte gUnknown_2031DAC +_08053440: .4byte gUnknown_202063C +_08053444: .4byte sub_8053A0C +_08053448: .4byte 0x0000ffff +_0805344C: + ldr r2, _08053478 @ =gUnknown_202063C + ldr r0, [r7] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + ldr r1, _0805347C @ =0x0000ffff + str r1, [sp] + movs r1, 0x1 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r1, [r7] + b _08053708 + .align 2, 0 +_08053478: .4byte gUnknown_202063C +_0805347C: .4byte 0x0000ffff +_08053480: + ldr r2, _080534BC @ =gUnknown_202063C + ldr r3, [r7] + adds r0, r3, 0 + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x1C + adds r0, r2 + ldr r1, [r0] + ldr r0, _080534C0 @ =nullsub_8 + cmp r1, r0 + beq _0805349E + b _08053774 +_0805349E: + adds r0, r3, 0 + adds r0, 0xF2 + ldrh r2, [r0] + lsls r0, r2, 3 + ldr r1, _080534C4 @ =gUnknown_82350AC + adds r0, r1 + ldr r1, _080534C8 @ =gUnknown_202401C + ldr r1, [r1] + ldr r1, [r1, 0x10] + ldr r3, [r3, 0x6C] + bl sub_800ECC4 + ldr r1, [r7] + b _08053708 + .align 2, 0 +_080534BC: .4byte gUnknown_202063C +_080534C0: .4byte nullsub_8 +_080534C4: .4byte gUnknown_82350AC +_080534C8: .4byte gUnknown_202401C +_080534CC: + ldr r4, _08053578 @ =gUnknown_202063C + ldr r2, [r7] + adds r6, r2, 0 + adds r6, 0x8F + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r5, 0 + movs r1, 0x78 + strh r1, [r0, 0x20] + ldrb r0, [r6] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldr r3, _0805357C @ =gUnknown_82349CC + adds r2, 0xF2 + ldrh r0, [r2] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x1] + adds r0, 0x3C + strh r0, [r1, 0x22] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x24] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r5, [r0, 0x26] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0 + bl sub_800838C + ldr r0, [r7] + adds r0, 0x8F + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + movs r2, 0x2 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0x14 + str r2, [sp, 0x8] + ldr r2, _08053580 @ =0x000fffff + str r2, [sp, 0xC] + movs r2, 0x78 + movs r3, 0x54 + bl sub_804B908 + ldr r0, [r7] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80077D8 + ldr r0, [r7] + adds r0, 0xD3 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldr r1, [r7] + b _08053708 + .align 2, 0 +_08053578: .4byte gUnknown_202063C +_0805357C: .4byte gUnknown_82349CC +_08053580: .4byte 0x000fffff +_08053584: + movs r1, 0xAA + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r4, _080535B0 @ =gUnknown_2021D18 + ldr r1, _080535B4 @ =gUnknown_841E20D + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + ldr r0, _080535B8 @ =gUnknown_2031DAC + ldr r3, [r0] + adds r1, r3, 0 + adds r1, 0x94 + movs r2, 0 + movs r0, 0xA7 + b _080535EA + .align 2, 0 +_080535B0: .4byte gUnknown_2021D18 +_080535B4: .4byte gUnknown_841E20D +_080535B8: .4byte gUnknown_2031DAC +_080535BC: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x3C + bhi _080535CA + b _08053774 +_080535CA: + adds r2, r1, 0 + adds r2, 0xF2 + ldrh r1, [r2] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _080535E0 + adds r0, r1, 0 + movs r1, 0 + bl sub_8071DF0 +_080535E0: + ldr r3, [r7] + adds r1, r3, 0 + adds r1, 0x94 + movs r2, 0 + ldr r0, _080535F0 @ =0x0000010b +_080535EA: + strh r0, [r1] + str r2, [r3, 0x64] + b _08053774 + .align 2, 0 +_080535F0: .4byte 0x0000010b +_080535F4: + bl sub_80721A0 + lsls r0, 24 + cmp r0, 0 + bne _08053600 + b _08053774 +_08053600: + ldr r0, _0805360C @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0x44 + strh r1, [r0] + b _08053774 + .align 2, 0 +_0805360C: .4byte gUnknown_2031DAC +_08053610: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0xA + bne _08053622 + ldr r0, _08053650 @ =0x00000103 + bl sub_8071C60 +_08053622: + ldr r1, [r7] + ldr r0, [r1, 0x64] + cmp r0, 0xFA + beq _0805362C + b _08053774 +_0805362C: + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + movs r5, 0 + strh r0, [r1] + ldr r4, _08053654 @ =gUnknown_2021D18 + ldr r1, _08053658 @ =gUnknown_841E21E + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + ldr r0, [r7] + str r5, [r0, 0x64] + b _08053774 + .align 2, 0 +_08053650: .4byte 0x00000103 +_08053654: .4byte gUnknown_2021D18 +_08053658: .4byte gUnknown_841E21E +_0805365C: + ldr r1, [r7] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x3C + beq _0805366A + b _08053774 +_0805366A: + b _08053708 +_0805366C: + bl sub_80544AC + b _08053704 +_08053672: + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0xEE + ldrb r0, [r0] + cmp r0, 0 + beq _08053682 + movs r0, 0x1 + b _08053776 +_08053682: + ldr r0, _08053694 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08053774 + adds r1, r2, 0 + b _08053708 + .align 2, 0 +_08053694: .4byte gUnknown_30030F0 +_08053698: + ldr r0, _080536DC @ =gUnknown_20370C2 + ldrb r0, [r0] + movs r1, 0 + bl sub_805080C + ldr r1, _080536E0 @ =gUnknown_300537C + ldr r0, _080536E4 @ =sub_8050948 + str r0, [r1] + ldr r7, _080536E8 @ =gUnknown_2031DA4 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _080536EC @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0x1 + movs r2, 0 + bl sub_8042EC4 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08053704 + ldrb r3, [r7] + adds r0, r3, 0 + muls r0, r6 + adds r0, r5 + ldr r1, _080536F0 @ =gUnknown_2031DAC + ldr r1, [r1] + adds r1, 0x8F + ldrb r2, [r1] + adds r1, r4, 0 + bl sub_80CE540 + b _08053704 + .align 2, 0 +_080536DC: .4byte gUnknown_20370C2 +_080536E0: .4byte gUnknown_300537C +_080536E4: .4byte sub_8050948 +_080536E8: .4byte gUnknown_2031DA4 +_080536EC: .4byte gUnknown_2024284 +_080536F0: .4byte gUnknown_2031DAC +_080536F4: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 +_08053700: + bl sub_8070588 +_08053704: + ldr r0, _08053714 @ =gUnknown_2031DAC + ldr r1, [r0] +_08053708: + adds r1, 0x94 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _08053774 + .align 2, 0 +_08053714: .4byte gUnknown_2031DAC +_08053718: + ldr r0, _08053780 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08053774 + ldr r0, [r7] + adds r0, 0xF4 + ldrh r0, [r0] + bl sub_8071A74 + ldr r0, [r7] + cmp r0, 0 + beq _08053766 + bl sub_8003ECC + movs r0, 0x3 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x1 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 + bl sub_80359AC + ldr r0, [r7] + bl sub_8002BC4 + str r4, [r7] +_08053766: + ldr r0, _08053784 @ =sub_80567DC + bl sub_8000544 + bl sub_8053AE4 + bl sub_812B484 +_08053774: + movs r0, 0 +_08053776: + add sp, 0x10 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08053780: .4byte gUnknown_2037AB8 +_08053784: .4byte sub_80567DC + thumb_func_end sub_805232C + + thumb_func_start sub_8053788 +sub_8053788: @ 8053788 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _080537A4 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _080537A8 + cmp r0, 0x4 + beq _080537B8 + b _08053814 + .align 2, 0 +_080537A4: .4byte gUnknown_30030F0 +_080537A8: + movs r0, 0x4 + strb r0, [r1] + ldr r1, _080537B4 @ =gUnknown_3003530 + movs r0, 0x1 + b _08053812 + .align 2, 0 +_080537B4: .4byte gUnknown_3003530 +_080537B8: + ldr r0, _080537F4 @ =gUnknown_300537C + ldr r1, _080537F8 @ =sub_8053E8C + mov r8, r1 + str r1, [r0] + ldr r7, _080537FC @ =gUnknown_2031DA4 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08053800 @ =gUnknown_2024284 + adds r0, r5 + movs r1, 0x1 + movs r2, 0 + bl sub_8042EC4 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + beq _08053808 + ldrb r3, [r7] + adds r0, r3, 0 + muls r0, r6 + adds r0, r5 + ldr r1, _08053804 @ =gUnknown_2031DAC + ldr r1, [r1] + adds r1, 0x8F + ldrb r2, [r1] + adds r1, r4, 0 + bl sub_80CE540 + b _0805380E + .align 2, 0 +_080537F4: .4byte gUnknown_300537C +_080537F8: .4byte sub_8053E8C +_080537FC: .4byte gUnknown_2031DA4 +_08053800: .4byte gUnknown_2024284 +_08053804: .4byte gUnknown_2031DAC +_08053808: + mov r0, r8 + bl sub_8000544 +_0805380E: + ldr r1, _08053838 @ =gUnknown_2031DA4 + movs r0, 0xFF +_08053812: + strb r0, [r1] +_08053814: + bl sub_800B0A8 + lsls r0, 24 + cmp r0, 0 + bne _08053822 + bl sub_8077578 +_08053822: + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08053838: .4byte gUnknown_2031DA4 + thumb_func_end sub_8053788 + + thumb_func_start sub_805383C +sub_805383C: @ 805383C + push {r4-r6,lr} + bl sub_804FFC4 + bl sub_800A4EC + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0x1 + adds r0, r5, 0 + ands r0, r6 + cmp r0, 0 + beq _0805387A + ldr r4, _080538A8 @ =gUnknown_2022118 + ldrh r1, [r4] + ldr r0, _080538AC @ =0x0000dcba + cmp r1, r0 + bne _08053864 + ldr r0, _080538B0 @ =sub_8053788 + bl sub_8000544 +_08053864: + ldrh r1, [r4] + ldr r0, _080538B4 @ =0x0000abcd + cmp r1, r0 + bne _08053874 + ldr r0, _080538B8 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x72 + strb r6, [r0] +_08053874: + movs r0, 0 + bl sub_800A588 +_0805387A: + movs r0, 0x2 + ands r0, r5 + cmp r0, 0 + beq _080538A2 + ldr r0, _080538A8 @ =gUnknown_2022118 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080538B4 @ =0x0000abcd + cmp r1, r0 + bne _0805389C + ldr r0, _080538B8 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x73 + movs r1, 0x1 + strb r1, [r0] +_0805389C: + movs r0, 0x1 + bl sub_800A588 +_080538A2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080538A8: .4byte gUnknown_2022118 +_080538AC: .4byte 0x0000dcba +_080538B0: .4byte sub_8053788 +_080538B4: .4byte 0x0000abcd +_080538B8: .4byte gUnknown_2031DAC + thumb_func_end sub_805383C + + thumb_func_start sub_80538BC +sub_80538BC: @ 80538BC + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + movs r1, 0xA + bl __divsi3 + ldrh r4, [r5, 0x22] + adds r4, r0 + strh r4, [r5, 0x22] + ldrh r0, [r5, 0x30] + ldrh r2, [r5, 0x38] + adds r0, r2 + strh r0, [r5, 0x38] + movs r1, 0x38 + ldrsh r0, [r5, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r5, 0x20] + lsls r4, 16 + asrs r4, 16 + cmp r4, 0x4C + ble _0805390A + movs r0, 0x4C + strh r0, [r5, 0x22] + movs r2, 0x2E + ldrsh r1, [r5, r2] + movs r2, 0x32 + ldrsh r0, [r5, r2] + muls r0, r1 + negs r0, r0 + movs r1, 0x64 + bl __divsi3 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] +_0805390A: + movs r1, 0x20 + ldrsh r0, [r5, r1] + cmp r0, 0x78 + bne _08053916 + movs r0, 0 + strh r0, [r5, 0x30] +_08053916: + ldrh r0, [r5, 0x36] + ldrh r2, [r5, 0x2E] + adds r0, r2 + strh r0, [r5, 0x2E] + movs r1, 0x34 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bne _0805392E + movs r0, 0x1 + strh r0, [r5, 0x3C] + ldr r0, _08053934 @ =nullsub_8 + str r0, [r5, 0x1C] +_0805392E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08053934: .4byte nullsub_8 + thumb_func_end sub_80538BC + + thumb_func_start sub_8053938 +sub_8053938: @ 8053938 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r1, _080539A0 @ =gUnknown_826D1E4 + movs r2, 0x2E + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0x16 + bne _08053960 + movs r0, 0x31 + bl sub_80722CC +_08053960: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2C + bne _08053996 + movs r0, 0x85 + bl sub_80722CC + ldr r0, _080539A4 @ =sub_80539AC + str r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r4, 0x2E] + ldrb r1, [r4, 0x5] + lsrs r1, 4 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + movs r1, 0x1 + negs r1, r1 + ldr r2, _080539A8 @ =0x0000ffff + str r2, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_08053996: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080539A0: .4byte gUnknown_826D1E4 +_080539A4: .4byte sub_80539AC +_080539A8: .4byte 0x0000ffff + thumb_func_end sub_8053938 + + thumb_func_start sub_80539AC +sub_80539AC: @ 80539AC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x14 + bne _080539C0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_800843C +_080539C0: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080539FE + ldr r1, _08053A04 @ =gUnknown_826D1E4 + movs r2, 0x2E + ldrsh r0, [r4, r2] + adds r0, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + ldrh r0, [r4, 0x26] + subs r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x17 + bne _080539FE + adds r0, r4, 0 + bl sub_8007280 + ldr r0, _08053A08 @ =gUnknown_2031DAC + ldr r0, [r0] + adds r0, 0x94 + movs r1, 0xE + strh r1, [r0] +_080539FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053A04: .4byte gUnknown_826D1E4 +_08053A08: .4byte gUnknown_2031DAC + thumb_func_end sub_80539AC + + thumb_func_start sub_8053A0C +sub_8053A0C: @ 8053A0C + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08053A3C + ldrh r0, [r4, 0x22] + adds r0, 0x4 + strh r0, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x34 + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _08053A8C + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x16 + strh r0, [r4, 0x2E] + movs r0, 0x31 + bl sub_80722CC + b _08053A8C +_08053A3C: + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x42 + bne _08053A4A + movs r0, 0x32 + bl sub_80722CC +_08053A4A: + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0x5C + bne _08053A58 + movs r0, 0x33 + bl sub_80722CC +_08053A58: + movs r3, 0x2E + ldrsh r0, [r4, r3] + cmp r0, 0x6B + bne _08053A66 + movs r0, 0x34 + bl sub_80722CC +_08053A66: + ldr r1, _08053A94 @ =gUnknown_826D1E4 + movs r2, 0x2E + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldrh r3, [r4, 0x26] + adds r0, r3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6C + bne _08053A8C + ldr r0, _08053A98 @ =nullsub_8 + str r0, [r4, 0x1C] +_08053A8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053A94: .4byte gUnknown_826D1E4 +_08053A98: .4byte nullsub_8 + thumb_func_end sub_8053A0C + + thumb_func_start sub_8053A9C +sub_8053A9C: @ 8053A9C + push {r4-r6,lr} + ldr r0, _08053AD0 @ =gUnknown_20370C0 + ldrh r0, [r0] + lsls r4, r0, 4 + subs r4, r0 + lsls r4, 2 + ldr r0, _08053AD4 @ =gUnknown_826CF8C + adds r4, r0 + ldr r0, _08053AD8 @ =gUnknown_2021CD0 + ldrh r1, [r4, 0x38] + movs r6, 0xB + muls r1, r6 + ldr r5, _08053ADC @ =gUnknown_8245EE0 + adds r1, r5 + bl sub_8008D84 + ldr r0, _08053AE0 @ =gUnknown_2021CF0 + ldrh r1, [r4, 0xC] + muls r1, r6 + adds r1, r5 + bl sub_8008D84 + ldrh r0, [r4, 0x38] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08053AD0: .4byte gUnknown_20370C0 +_08053AD4: .4byte gUnknown_826CF8C +_08053AD8: .4byte gUnknown_2021CD0 +_08053ADC: .4byte gUnknown_8245EE0 +_08053AE0: .4byte gUnknown_2021CF0 + thumb_func_end sub_8053A9C + + thumb_func_start sub_8053AE4 +sub_8053AE4: @ 8053AE4 + push {r4,lr} + sub sp, 0x20 + ldr r0, _08053B2C @ =gUnknown_20370C0 + ldrh r0, [r0] + lsls r4, r0, 4 + subs r4, r0 + lsls r4, 2 + ldr r0, _08053B30 @ =gUnknown_826CF8C + adds r4, r0 + ldr r0, _08053B34 @ =gUnknown_20370C2 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08053B38 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x2 + mov r2, sp + bl sub_803FBE8 + ldr r0, _08053B3C @ =gUnknown_2021CD0 + mov r1, sp + bl sub_8008CF4 + ldr r0, _08053B40 @ =gUnknown_2021CF0 + ldrh r2, [r4, 0xC] + movs r1, 0xB + muls r1, r2 + ldr r2, _08053B44 @ =gUnknown_8245EE0 + adds r1, r2 + bl sub_8008D84 + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053B2C: .4byte gUnknown_20370C0 +_08053B30: .4byte gUnknown_826CF8C +_08053B34: .4byte gUnknown_20370C2 +_08053B38: .4byte gUnknown_2024284 +_08053B3C: .4byte gUnknown_2021CD0 +_08053B40: .4byte gUnknown_2021CF0 +_08053B44: .4byte gUnknown_8245EE0 + thumb_func_end sub_8053AE4 + + thumb_func_start sub_8053B48 +sub_8053B48: @ 8053B48 + push {r4-r7,lr} + sub sp, 0x38 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, r1, 4 + subs r2, r1 + lsls r2, 2 + ldr r1, _08053CA4 @ =gUnknown_826CF8C + adds r5, r2, r1 + movs r1, 0x64 + muls r0, r1 + ldr r1, _08053CA8 @ =gUnknown_2024284 + adds r0, r1 + movs r1, 0x38 + bl sub_803FBE8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + add r4, sp, 0x34 + movs r0, 0xFE + strb r0, [r4] + ldr r6, _08053CAC @ =gUnknown_202402C + ldrh r1, [r5, 0xC] + movs r3, 0x1 + str r3, [sp] + ldr r0, [r5, 0x24] + str r0, [sp, 0x4] + str r3, [sp, 0x8] + ldr r0, [r5, 0x18] + str r0, [sp, 0xC] + adds r0, r6, 0 + movs r3, 0x20 + bl sub_803DA54 + adds r2, r5, 0 + adds r2, 0xE + adds r0, r6, 0 + movs r1, 0x27 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0xF + adds r0, r6, 0 + movs r1, 0x28 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x10 + adds r0, r6, 0 + movs r1, 0x29 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x11 + adds r0, r6, 0 + movs r1, 0x2A + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x12 + adds r0, r6, 0 + movs r1, 0x2B + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x13 + adds r0, r6, 0 + movs r1, 0x2C + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x2B + adds r0, r6, 0 + movs r1, 0x7 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x36 + adds r0, r6, 0 + movs r1, 0x31 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x14 + adds r0, r6, 0 + movs r1, 0x2E + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x1D + adds r0, r6, 0 + movs r1, 0x17 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x1E + adds r0, r6, 0 + movs r1, 0x18 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x1C + adds r0, r6, 0 + movs r1, 0x16 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x1F + adds r0, r6, 0 + movs r1, 0x21 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x20 + adds r0, r6, 0 + movs r1, 0x2F + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x37 + adds r0, r6, 0 + movs r1, 0x30 + bl sub_804037C + adds r0, r6, 0 + movs r1, 0x23 + adds r2, r4, 0 + bl sub_804037C + mov r4, sp + adds r4, 0x35 + movs r0, 0 + strb r0, [r4] + ldrh r0, [r5, 0x28] + cmp r0, 0 + beq _08053CC0 + bl sub_80980F8 + lsls r0, 24 + cmp r0, 0 + beq _08053CB4 + add r0, sp, 0x10 + adds r1, r5, 0 + bl sub_8053CD4 + ldr r0, _08053CB0 @ =gUnknown_2031CCC + add r1, sp, 0x10 + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + ldm r1!, {r2,r3,r7} + stm r0!, {r2,r3,r7} + adds r0, r6, 0 + movs r1, 0x40 + adds r2, r4, 0 + bl sub_804037C + adds r2, r5, 0 + adds r2, 0x28 + adds r0, r6, 0 + movs r1, 0xC + bl sub_804037C + b _08053CC0 + .align 2, 0 +_08053CA4: .4byte gUnknown_826CF8C +_08053CA8: .4byte gUnknown_2024284 +_08053CAC: .4byte gUnknown_202402C +_08053CB0: .4byte gUnknown_2031CCC +_08053CB4: + adds r2, r5, 0 + adds r2, 0x28 + adds r0, r6, 0 + movs r1, 0xC + bl sub_804037C +_08053CC0: + ldr r0, _08053CD0 @ =gUnknown_202402C + bl sub_803E47C + add sp, 0x38 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08053CD0: .4byte gUnknown_202402C + thumb_func_end sub_8053B48 + + thumb_func_start sub_8053CD4 +sub_8053CD4: @ 8053CD4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r2, _08053D28 @ =gUnknown_826D1A8 + adds r0, r5, 0 + adds r0, 0x2A + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r2 + adds r1, r4, 0 + movs r3, 0x8 +_08053CEE: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _08053CEE + adds r0, r4, 0 + adds r0, 0x12 + adds r1, r5, 0 + adds r1, 0x2B + bl sub_8008D84 + ldr r1, [r5, 0x18] + lsrs r0, r1, 24 + strb r0, [r4, 0x1A] + lsrs r0, r1, 16 + strb r0, [r4, 0x1B] + lsrs r0, r1, 8 + strb r0, [r4, 0x1C] + strb r1, [r4, 0x1D] + ldrh r0, [r5, 0xC] + strh r0, [r4, 0x1E] + ldrh r0, [r5, 0x28] + strh r0, [r4, 0x20] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08053D28: .4byte gUnknown_826D1A8 + thumb_func_end sub_8053CD4 + + thumb_func_start sub_8053D2C +sub_8053D2C: @ 8053D2C + push {r4-r6,lr} + ldr r6, _08053D58 @ =gUnknown_20370C2 + ldrh r0, [r6] + movs r5, 0x64 + muls r0, r5 + ldr r4, _08053D5C @ =gUnknown_2024284 + adds r0, r4 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _08053D60 + ldrh r0, [r6] + muls r0, r5 + adds r0, r4 + movs r1, 0xB + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + b _08053D62 + .align 2, 0 +_08053D58: .4byte gUnknown_20370C2 +_08053D5C: .4byte gUnknown_2024284 +_08053D60: + movs r0, 0 +_08053D62: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8053D2C + + thumb_func_start sub_8053D68 +sub_8053D68: @ 8053D68 + push {lr} + ldr r0, _08053D7C @ =gUnknown_20370C2 + ldrb r0, [r0] + ldr r1, _08053D80 @ =gUnknown_20370C0 + ldrb r1, [r1] + bl sub_8053B48 + pop {r0} + bx r0 + .align 2, 0 +_08053D7C: .4byte gUnknown_20370C2 +_08053D80: .4byte gUnknown_20370C0 + thumb_func_end sub_8053D68 + + thumb_func_start sub_8053D84 +sub_8053D84: @ 8053D84 + push {r4-r6,lr} + bl sub_8050F14 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x1 + bne _08053DE6 + ldr r5, _08053E08 @ =gUnknown_2031DAC + ldr r0, [r5] + adds r0, 0x8E + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _08053E0C @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + ldr r0, [r5] + adds r0, 0x8F + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80077D8 + ldr r0, _08053E10 @ =gUnknown_2031DA4 + ldrb r4, [r0] + ldrb r0, [r0, 0x1] + movs r1, 0x6 + bl __umodsi3 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805080C + ldr r0, [r5] + adds r2, r0, 0 + adds r2, 0x74 + ldr r1, _08053E14 @ =0x0000abcd + strh r1, [r2] + adds r0, 0x93 + strb r6, [r0] + ldr r0, _08053E18 @ =sub_8053E1C + bl sub_8000544 +_08053DE6: + bl sub_80508F4 + bl sub_805383C + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08053E08: .4byte gUnknown_2031DAC +_08053E0C: .4byte gUnknown_202063C +_08053E10: .4byte gUnknown_2031DA4 +_08053E14: .4byte 0x0000abcd +_08053E18: .4byte sub_8053E1C + thumb_func_end sub_8053D84 + + thumb_func_start sub_8053E1C +sub_8053E1C: @ 8053E1C + push {r4,lr} + bl sub_804FFC4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_805383C + cmp r4, 0 + bne _08053E68 + ldr r4, _08053E80 @ =gUnknown_2031DAC + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x72 + ldrh r1, [r0] + ldr r0, _08053E84 @ =0x00000101 + cmp r1, r0 + bne _08053E68 + adds r1, r2, 0 + adds r1, 0x74 + ldr r0, _08053E88 @ =0x0000dcba + strh r0, [r1] + bl sub_800A42C + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + adds r1, 0x74 + movs r2, 0x14 + bl sub_800A448 + ldr r0, [r4] + adds r0, 0x72 + movs r1, 0x2 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0x73 + strb r1, [r0] +_08053E68: + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053E80: .4byte gUnknown_2031DAC +_08053E84: .4byte 0x00000101 +_08053E88: .4byte 0x0000dcba + thumb_func_end sub_8053E1C + + thumb_func_start sub_8053E8C +sub_8053E8C: @ 8053E8C + push {r4,lr} + sub sp, 0x4 + ldr r1, _08053EAC @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0x65 + bls _08053EA2 + b _08054396 +_08053EA2: + lsls r0, 2 + ldr r1, _08053EB0 @ =_08053EB4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08053EAC: .4byte gUnknown_30030F0 +_08053EB0: .4byte _08053EB4 + .align 2, 0 +_08053EB4: + .4byte _0805404C + .4byte _08054068 + .4byte _080540DC + .4byte _08054396 + .4byte _080541E0 + .4byte _080542A0 + .4byte _080542C4 + .4byte _080542E0 + .4byte _08054304 + .4byte _0805434C + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054204 + .4byte _08054254 + .4byte _0805427E + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054104 + .4byte _08054184 + .4byte _080541A0 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054396 + .4byte _08054080 + .4byte _080540BC +_0805404C: + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r4, _08054060 @ =gUnknown_2021D18 + ldr r1, _08054064 @ =gUnknown_841E325 + b _080540EA + .align 2, 0 +_08054060: .4byte gUnknown_2021D18 +_08054064: .4byte gUnknown_841E325 +_08054068: + bl sub_800AB9C + ldr r0, _0805407C @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0x64 + b _080541F0 + .align 2, 0 +_0805407C: .4byte gUnknown_30030F0 +_08054080: + ldr r0, _080540B4 @ =gUnknown_2031DAC + ldr r3, [r0] + ldr r0, [r3, 0x64] + adds r0, 0x1 + str r0, [r3, 0x64] + cmp r0, 0xB4 + bls _0805409C + movs r1, 0x87 + lsls r1, 3 + adds r0, r2, r1 + movs r2, 0 + movs r1, 0x65 + strb r1, [r0] + str r2, [r3, 0x64] +_0805409C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _080540A8 + b _08054396 +_080540A8: + ldr r0, _080540B8 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + b _080540D0 + .align 2, 0 +_080540B4: .4byte gUnknown_2031DAC +_080540B8: .4byte gUnknown_30030F0 +_080540BC: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _080540C8 + b _08054396 +_080540C8: + ldr r0, _080540D8 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 +_080540D0: + movs r1, 0x2 + strb r1, [r0] + b _08054396 + .align 2, 0 +_080540D8: .4byte gUnknown_30030F0 +_080540DC: + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + movs r0, 0x32 + strb r0, [r1] + ldr r4, _080540FC @ =gUnknown_2021D18 + ldr r1, _08054100 @ =gUnknown_8419F54 +_080540EA: + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8054508 + b _08054396 + .align 2, 0 +_080540FC: .4byte gUnknown_2021D18 +_08054100: .4byte gUnknown_8419F54 +_08054104: + bl sub_811B0D0 + cmp r0, 0 + beq _08054120 + ldr r0, _0805411C @ =gUnknown_2031DAC + ldr r1, [r0] + adds r1, 0xF8 + movs r0, 0x12 + bl sub_8113550 + b _08054132 + .align 2, 0 +_0805411C: .4byte gUnknown_2031DAC +_08054120: + ldr r0, _08054174 @ =gUnknown_2031DAC + ldr r1, [r0] + adds r1, 0xF8 + movs r0, 0xC + bl sub_8113550 + movs r0, 0x15 + bl sub_8054E90 +_08054132: + ldr r0, _08054178 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _0805415A + ldr r4, _0805417C @ =gUnknown_202273C + bl sub_800A404 + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r4, 0x4 + adds r1, r4 + ldr r1, [r1] + movs r0, 0x2 + bl sub_8144714 +_0805415A: + bl sub_804C1C0 + bl sub_80DA3AC + ldr r1, _08054180 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + b _080541F2 + .align 2, 0 +_08054174: .4byte gUnknown_2031DAC +_08054178: .4byte gUnknown_3003F3C +_0805417C: .4byte gUnknown_202273C +_08054180: .4byte gUnknown_30030F0 +_08054184: + ldr r0, _0805419C @ =gUnknown_2031DAC + ldr r1, [r0] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x5 + beq _08054194 + b _08054396 +_08054194: + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + b _08054340 + .align 2, 0 +_0805419C: .4byte gUnknown_2031DAC +_080541A0: + bl sub_80DA3D8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080541C4 + bl sub_804C1DC + ldr r0, _080541C0 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + b _08054396 + .align 2, 0 +_080541C0: .4byte gUnknown_30030F0 +_080541C4: + ldr r0, _080541D8 @ =gUnknown_2031DAC + ldr r0, [r0] + str r1, [r0, 0x64] + ldr r0, _080541DC @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + movs r1, 0x33 + strb r1, [r0] + b _08054396 + .align 2, 0 +_080541D8: .4byte gUnknown_2031DAC +_080541DC: .4byte gUnknown_30030F0 +_080541E0: + bl sub_80DA40C + ldr r0, _080541FC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0x28 +_080541F0: + strb r1, [r0] +_080541F2: + ldr r0, _08054200 @ =gUnknown_2031DAC + ldr r0, [r0] + str r2, [r0, 0x64] + b _08054396 + .align 2, 0 +_080541FC: .4byte gUnknown_30030F0 +_08054200: .4byte gUnknown_2031DAC +_08054204: + ldr r4, _08054238 @ =gUnknown_2031DAC + ldr r1, [r4] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x32 + bhi _08054214 + b _08054396 +_08054214: + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + bne _0805423C + bl sub_8044EC8 + ldr r4, [r4] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1E + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [r4, 0x64] + b _08054242 + .align 2, 0 +_08054238: .4byte gUnknown_2031DAC +_0805423C: + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x64] +_08054242: + ldr r0, _08054250 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + movs r1, 0x29 + strb r1, [r0] + b _08054396 + .align 2, 0 +_08054250: .4byte gUnknown_30030F0 +_08054254: + ldr r0, _08054270 @ =gUnknown_2031DAC + ldr r1, [r0] + ldr r0, [r1, 0x64] + cmp r0, 0 + bne _08054278 + bl sub_800AB9C + ldr r0, _08054274 @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x2A + strb r1, [r0] + b _08054396 + .align 2, 0 +_08054270: .4byte gUnknown_2031DAC +_08054274: .4byte gUnknown_30030F0 +_08054278: + subs r0, 0x1 + str r0, [r1, 0x64] + b _08054396 +_0805427E: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _0805428A + b _08054396 +_0805428A: + bl sub_80DA434 + ldr r0, _0805429C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + movs r1, 0x5 + strb r1, [r0] + b _08054396 + .align 2, 0 +_0805429C: .4byte gUnknown_30030F0 +_080542A0: + ldr r0, _080542C0 @ =gUnknown_2031DAC + ldr r1, [r0] + ldr r0, [r1, 0x64] + adds r0, 0x1 + str r0, [r1, 0x64] + cmp r0, 0x3C + bls _08054396 + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bl sub_800AB9C + b _08054396 + .align 2, 0 +_080542C0: .4byte gUnknown_2031DAC +_080542C4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08054396 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _08054338 +_080542E0: + ldr r0, _080542FC @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08054396 + movs r0, 0x3 + bl sub_8071DBC + ldr r1, _08054300 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08054340 + .align 2, 0 +_080542FC: .4byte gUnknown_2037AB8 +_08054300: .4byte gUnknown_30030F0 +_08054304: + bl sub_8071DD4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08054396 + ldr r0, _08054328 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08054334 + ldr r0, _0805432C @ =gUnknown_30030F0 + ldr r1, [r0, 0x8] + ldr r0, _08054330 @ =sub_804C718 + cmp r1, r0 + bne _08054334 + bl sub_800AB9C + b _08054338 + .align 2, 0 +_08054328: .4byte gUnknown_3003F3C +_0805432C: .4byte gUnknown_30030F0 +_08054330: .4byte sub_804C718 +_08054334: + bl sub_800AAC0 +_08054338: + ldr r1, _08054348 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 +_08054340: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08054396 + .align 2, 0 +_08054348: .4byte gUnknown_30030F0 +_0805434C: + ldr r0, _08054374 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08054384 + ldr r1, [r2, 0x8] + ldr r0, _08054378 @ =sub_804C718 + cmp r1, r0 + bne _08054384 + bl sub_80FA4F8 + lsls r0, 24 + cmp r0, 0 + beq _08054396 + ldr r0, _0805437C @ =gUnknown_3003530 + movs r1, 0 + strb r1, [r0] + ldr r0, _08054380 @ =sub_80543C4 + bl sub_8000544 + b _08054396 + .align 2, 0 +_08054374: .4byte gUnknown_3003F3C +_08054378: .4byte sub_804C718 +_0805437C: .4byte gUnknown_3003530 +_08054380: .4byte sub_80543C4 +_08054384: + ldr r0, _080543B8 @ =gUnknown_3003F64 + ldrb r1, [r0] + cmp r1, 0 + bne _08054396 + ldr r0, _080543BC @ =gUnknown_3003530 + strb r1, [r0] + ldr r0, _080543C0 @ =sub_80543C4 + bl sub_8000544 +_08054396: + bl sub_800B0A8 + lsls r0, 24 + cmp r0, 0 + bne _080543A4 + bl sub_8077578 +_080543A4: + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080543B8: .4byte gUnknown_3003F64 +_080543BC: .4byte gUnknown_3003530 +_080543C0: .4byte sub_80543C4 + thumb_func_end sub_8053E8C + + thumb_func_start sub_80543C4 +sub_80543C4: @ 80543C4 + push {r4,r5,lr} + ldr r0, _08054430 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0805441A + bl sub_8003ECC + movs r0, 0x3 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0x1 + bl sub_8002008 + bl sub_8002BC4 + movs r0, 0 + bl sub_8002008 + bl sub_8002BC4 + bl sub_80359AC + ldr r4, _08054434 @ =gUnknown_2031DAC + ldr r0, [r4] + bl sub_8002BC4 + str r5, [r4] + ldr r0, _08054438 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + beq _08054412 + bl sub_80FCE44 +_08054412: + ldr r0, _0805443C @ =gUnknown_30030F0 + ldr r0, [r0, 0x8] + bl sub_8000544 +_0805441A: + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08054430: .4byte gUnknown_2037AB8 +_08054434: .4byte gUnknown_2031DAC +_08054438: .4byte gUnknown_3003F3C +_0805443C: .4byte gUnknown_30030F0 + thumb_func_end sub_80543C4 + + thumb_func_start sub_8054440 +sub_8054440: @ 8054440 + push {lr} + sub sp, 0x4 + bl sub_8069940 + ldr r0, _0805446C @ =sub_8054470 + movs r1, 0xA + bl sub_807741C + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_812B478 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805446C: .4byte sub_8054470 + thumb_func_end sub_8054440 + + thumb_func_start sub_8054470 +sub_8054470: @ 8054470 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0805449C @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08054494 + ldr r0, _080544A0 @ =sub_80505CC + bl sub_8000544 + ldr r1, _080544A4 @ =gUnknown_3005020 + ldr r0, _080544A8 @ =sub_807DD24 + str r0, [r1] + adds r0, r4, 0 + bl sub_8077508 +_08054494: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805449C: .4byte gUnknown_2037AB8 +_080544A0: .4byte sub_80505CC +_080544A4: .4byte gUnknown_3005020 +_080544A8: .4byte sub_807DD24 + thumb_func_end sub_8054470 + + thumb_func_start sub_80544AC +sub_80544AC: @ 80544AC + push {r4,r5,lr} + movs r5, 0 + movs r4, 0 +_080544B2: + ldr r0, _080544F0 @ =gUnknown_2031DA4 + ldrb r0, [r0, 0x1] + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldr r1, _080544F4 @ =gUnknown_202402C + adds r0, r1 + adds r1, r4, 0 + adds r1, 0x43 + bl sub_803FBE8 + adds r0, r5, r0 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xB + bls _080544B2 + cmp r5, 0 + beq _080544EA + ldr r0, _080544F8 @ =0x0000083b + bl sub_806E680 +_080544EA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080544F0: .4byte gUnknown_2031DA4 +_080544F4: .4byte gUnknown_202402C +_080544F8: .4byte 0x0000083b + thumb_func_end sub_80544AC + + thumb_func_start sub_80544FC +sub_80544FC: @ 80544FC + push {lr} + bl sub_80504CC + pop {r0} + bx r0 + thumb_func_end sub_80544FC + + thumb_func_start sub_8054508 +sub_8054508: @ 8054508 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r5, r0, 0 + mov r8, r1 + adds r4, r2, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0xFF + bl sub_800445C + ldr r2, _08054580 @ =gUnknown_2031DAC + ldr r1, [r2] + movs r6, 0x82 + lsls r6, 1 + adds r1, r6 + movs r3, 0 + movs r0, 0xF + strb r0, [r1] + ldr r0, [r2] + ldr r7, _08054584 @ =0x00000105 + adds r1, r0, r7 + movs r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + adds r7, 0x1 + adds r1, r0, r7 + movs r0, 0x6 + strb r0, [r1] + str r3, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + ldr r0, [r2] + adds r0, r6 + str r0, [sp, 0x8] + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + mov r0, r8 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_812E5A4 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8003F20 + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08054580: .4byte gUnknown_2031DAC +_08054584: .4byte 0x00000105 + thumb_func_end sub_8054508 + + thumb_func_start sub_8054588 +sub_8054588: @ 8054588 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080545C0 @ =gUnknown_3005098 + adds r4, r0, r1 + ldr r1, _080545C4 @ =gUnknown_826D250 + movs r2, 0 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r2, r1, 0 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080545CC + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _080545D4 + lsls r0, r1, 1 + ldr r1, _080545C8 @ =gUnknown_826BB5C + adds r0, r1 + b _080545D6 + .align 2, 0 +_080545C0: .4byte gUnknown_3005098 +_080545C4: .4byte gUnknown_826D250 +_080545C8: .4byte gUnknown_826BB5C +_080545CC: + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + bne _080545E4 +_080545D4: + ldr r0, _080545E0 @ =gUnknown_826BF5C +_080545D6: + movs r1, 0x30 + movs r2, 0x20 + bl sub_80703EC + b _080545F2 + .align 2, 0 +_080545E0: .4byte gUnknown_826BF5C +_080545E4: + lsls r0, r2, 1 + ldr r1, _08054648 @ =gUnknown_826BD5C + adds r0, r1 + movs r1, 0x30 + movs r2, 0x20 + bl sub_80703EC +_080545F2: + ldr r0, _0805464C @ =gUnknown_826D250 + movs r2, 0 + ldrsh r1, [r4, r2] + lsls r1, 1 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + bne _08054610 + movs r3, 0x2 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _08054610 + movs r0, 0xBC + bl sub_80722CC +_08054610: + movs r0, 0x2 + ldrsh r2, [r4, r0] + ldr r1, _0805464C @ =gUnknown_826D250 + movs r3, 0 + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bne _08054650 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + movs r0, 0 + strh r0, [r4, 0x2] + movs r2, 0 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08054656 + adds r0, r5, 0 + bl sub_8077508 + b _08054656 + .align 2, 0 +_08054648: .4byte gUnknown_826BD5C +_0805464C: .4byte gUnknown_826D250 +_08054650: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] +_08054656: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8054588 + + thumb_func_start sub_805465C +sub_805465C: @ 805465C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08054728 @ =gUnknown_3005098 + adds r7, r0, r1 + movs r0, 0 + ldrsh r4, [r7, r0] + cmp r4, 0 + bne _080546BC + ldr r1, _0805472C @ =gUnknown_2031DAC + ldr r3, [r1] + ldr r5, _08054730 @ =0x0000010b + adds r2, r3, r5 + movs r0, 0x78 + strb r0, [r2] + subs r5, 0x2 + adds r2, r3, r5 + strb r0, [r2] + ldr r0, [r1] + movs r2, 0x85 + lsls r2, 1 + adds r0, r2 + strb r4, [r0] + ldr r0, [r1] + movs r3, 0x86 + lsls r3, 1 + adds r0, r3 + movs r1, 0xA0 + strb r1, [r0] + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x4A + movs r1, 0x10 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x13 + bl sub_8000A38 +_080546BC: + ldr r4, _0805472C @ =gUnknown_2031DAC + ldr r2, [r4] + ldr r5, _08054730 @ =0x0000010b + mov r8, r5 + adds r0, r2, r5 + ldrb r1, [r0] + subs r5, 0x2 + adds r2, r5 + ldrb r0, [r2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0x40 + bl sub_8000A38 + ldr r2, [r4] + movs r1, 0x86 + lsls r1, 1 + adds r0, r2, r1 + ldrb r1, [r0] + movs r3, 0x85 + lsls r3, 1 + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + movs r0, 0x44 + bl sub_8000A38 + ldrh r0, [r7] + adds r0, 0x1 + strh r0, [r7] + ldr r1, [r4] + adds r1, r5 + ldrb r0, [r1] + subs r0, 0x5 + strb r0, [r1] + ldr r1, [r4] + add r1, r8 + ldrb r0, [r1] + adds r0, 0x5 + strb r0, [r1] + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x4F + bhi _0805471E + adds r0, r6, 0 + bl sub_8077508 +_0805471E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08054728: .4byte gUnknown_3005098 +_0805472C: .4byte gUnknown_2031DAC +_08054730: .4byte 0x0000010b + thumb_func_end sub_805465C + + thumb_func_start sub_8054734 +sub_8054734: @ 8054734 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080547E8 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _08054774 + ldr r1, _080547EC @ =gUnknown_2031DAC + ldr r0, [r1] + ldr r3, _080547F0 @ =0x00000109 + adds r2, r0, r3 + movs r0, 0x50 + strb r0, [r2] + ldr r0, [r1] + ldr r2, _080547F4 @ =0x0000010b + adds r1, r0, r2 + movs r0, 0xA0 + strb r0, [r1] + movs r0, 0x4A + movs r1, 0x10 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x13 + bl sub_8000A38 +_08054774: + ldr r5, _080547EC @ =gUnknown_2031DAC + ldr r0, [r5] + ldr r3, _080547F4 @ =0x0000010b + adds r1, r0, r3 + ldrb r1, [r1] + ldr r4, _080547F0 @ =0x00000109 + adds r0, r4 + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + movs r0, 0x40 + bl sub_8000A38 + ldr r2, [r5] + movs r1, 0x86 + lsls r1, 1 + adds r0, r2, r1 + ldrb r1, [r0] + movs r3, 0x85 + lsls r3, 1 + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + movs r0, 0x44 + bl sub_8000A38 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x78 + beq _080547FC + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + ldr r0, [r5] + adds r1, r0, r4 + ldrb r0, [r1] + adds r0, 0x5 + strb r0, [r1] + ldr r0, [r5] + ldr r2, _080547F4 @ =0x0000010b + adds r1, r0, r2 + ldrb r0, [r1] + subs r0, 0x5 + strb r0, [r1] + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x73 + bls _0805480C + ldr r2, _080547F8 @ =0x0000ffff + movs r0, 0x8 + movs r1, 0 + bl sub_80714D4 + b _0805480C + .align 2, 0 +_080547E8: .4byte gUnknown_3005098 +_080547EC: .4byte gUnknown_2031DAC +_080547F0: .4byte 0x00000109 +_080547F4: .4byte 0x0000010b +_080547F8: .4byte 0x0000ffff +_080547FC: + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000B14 + adds r0, r7, 0 + bl sub_8077508 +_0805480C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8054734 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/trainer_card.s b/asm/trainer_card.s new file mode 100644 index 000000000..46829e6e5 --- /dev/null +++ b/asm/trainer_card.s @@ -0,0 +1,5113 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8088FF0 +sub_8088FF0: @ 8088FF0 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + bl sub_808B180 + ldr r0, _08089024 @ =gUnknown_20397A4 + ldr r0, [r0] + ldrb r0, [r0, 0x9] + cmp r0, 0 + beq _08089020 + ldr r1, _08089028 @ =0x040000d4 + ldr r0, _0808902C @ =gUnknown_2038700 + str r0, [r1] + movs r2, 0xF0 + lsls r2, 3 + adds r0, r2 + str r0, [r1, 0x4] + ldr r0, _08089030 @ =0x800000a0 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] +_08089020: + pop {r0} + bx r0 + .align 2, 0 +_08089024: .4byte gUnknown_20397A4 +_08089028: .4byte 0x040000d4 +_0808902C: .4byte gUnknown_2038700 +_08089030: .4byte 0x800000a0 + thumb_func_end sub_8088FF0 + + thumb_func_start sub_8089034 +sub_8089034: @ 8089034 + push {r4,lr} + ldr r4, _08089060 @ =0x04000208 + ldrh r3, [r4] + movs r0, 0 + strh r0, [r4] + ldr r1, _08089064 @ =gUnknown_2038700 + ldr r0, _08089068 @ =0x04000006 + ldrh r2, [r0] + movs r0, 0xFF + ands r0, r2 + lsls r0, 1 + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _0808906C @ =0x04000012 + strh r1, [r0] + strh r3, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08089060: .4byte 0x04000208 +_08089064: .4byte gUnknown_2038700 +_08089068: .4byte 0x04000006 +_0808906C: .4byte 0x04000012 + thumb_func_end sub_8089034 + + thumb_func_start sub_8089070 +sub_8089070: @ 8089070 + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8089070 + + thumb_func_start sub_8089088 +sub_8089088: @ 8089088 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _080890BC @ =gUnknown_20397A4 + ldr r0, [r5] + movs r1, 0x8B + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + bl sub_8000544 + bl sub_8003ECC + ldr r0, [r5] + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] + adds r0, r4, 0 + bl sub_8077508 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080890BC: .4byte gUnknown_20397A4 + thumb_func_end sub_8089088 + + thumb_func_start sub_80890C0 +sub_80890C0: @ 80890C0 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080890E0 @ =gUnknown_20397A4 + ldr r0, [r1] + ldrb r0, [r0] + adds r4, r1, 0 + cmp r0, 0x10 + bls _080890D6 + b _08089416 +_080890D6: + lsls r0, 2 + ldr r1, _080890E4 @ =_080890E8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080890E0: .4byte gUnknown_20397A4 +_080890E4: .4byte _080890E8 + .align 2, 0 +_080890E8: + .4byte _0808912C + .4byte _08089142 + .4byte _08089150 + .4byte _08089158 + .4byte _0808916C + .4byte _08089180 + .4byte _08089194 + .4byte _0808919A + .4byte _080891DC + .4byte _08089208 + .4byte _08089224 + .4byte _080892E4 + .4byte _080892B8 + .4byte _080893F6 + .4byte _080893E4 + .4byte _0808937A + .4byte _080893B8 +_0808912C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _08089138 + b _08089416 +_08089138: + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + b _08089214 +_08089142: + bl sub_8089DC8 + lsls r0, 24 + cmp r0, 0 + bne _0808914E + b _08089416 +_0808914E: + b _08089214 +_08089150: + movs r0, 0x1 + bl sub_808ACC8 + b _08089214 +_08089158: + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + bl sub_808B838 + movs r0, 0x2 + bl sub_808ACC8 + b _08089214 +_0808916C: + ldr r0, [r4] + ldr r1, _0808917C @ =0x00000e1c + adds r0, r1 + bl sub_808AE94 + ldr r1, [r4] + b _08089218 + .align 2, 0 +_0808917C: .4byte 0x00000e1c +_08089180: + ldr r0, [r4] + ldr r1, _08089190 @ =0x000004bc + adds r0, r1 + bl sub_808AF04 + ldr r1, [r4] + b _08089218 + .align 2, 0 +_08089190: .4byte 0x000004bc +_08089194: + bl sub_808AF74 + b _08089214 +_0808919A: + ldr r0, _080891D0 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0x1 + bne _080891B6 + ldr r0, _080891D4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080891B6 + bl sub_80FCEA8 + movs r0, 0xE6 + movs r1, 0x96 + bl sub_80FCD74 +_080891B6: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _080891D8 @ =sub_8088FF0 + bl sub_80006F4 + b _08089214 + .align 2, 0 +_080891D0: .4byte gUnknown_3003F3C +_080891D4: .4byte gUnknown_3003F64 +_080891D8: .4byte sub_8088FF0 +_080891DC: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _080891E8 + b _08089416 +_080891E8: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _080891F4 + b _08089416 +_080891F4: + movs r0, 0xF4 + bl sub_80722CC + ldr r0, _08089204 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0xA + strb r0, [r1] + b _08089416 + .align 2, 0 +_08089204: .4byte gUnknown_20397A4 +_08089208: + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + beq _08089214 + b _08089416 +_08089214: + ldr r0, _08089220 @ =gUnknown_20397A4 + ldr r1, [r0] +_08089218: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08089416 + .align 2, 0 +_08089220: .4byte gUnknown_20397A4 +_08089224: + ldr r0, _08089270 @ =gUnknown_3003F64 + ldrb r5, [r0] + cmp r5, 0 + bne _0808924A + ldr r0, [r4] + ldr r1, _08089274 @ =0x00007bce + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808924A + bl sub_808A22C + movs r0, 0x1 + bl sub_808ACC8 + ldr r0, [r4] + ldr r1, _08089274 @ =0x00007bce + adds r0, r1 + strb r5, [r0] +_0808924A: + ldr r0, _08089278 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08089280 + movs r0, 0xB + bl sub_812B1F0 + bl sub_808B1D4 + movs r0, 0xF2 + bl sub_80722CC + ldr r0, _0808927C @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0xC + strb r0, [r1] + b _08089416 + .align 2, 0 +_08089270: .4byte gUnknown_3003F64 +_08089274: .4byte 0x00007bce +_08089278: .4byte gUnknown_30030F0 +_0808927C: .4byte gUnknown_20397A4 +_08089280: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0808928A + b _08089416 +_0808928A: + ldr r0, _080892B0 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _080892A4 + ldr r4, _080892B4 @ =gUnknown_20397A4 + ldr r0, [r4] + ldrb r0, [r0, 0x5] + cmp r0, 0 + beq _080892A4 + bl sub_811B0D0 + cmp r0, 0x1 + beq _08089364 +_080892A4: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + b _080893C8 + .align 2, 0 +_080892B0: .4byte gUnknown_3003F64 +_080892B4: .4byte gUnknown_20397A4 +_080892B8: + bl sub_808B1FC + lsls r0, 24 + cmp r0, 0 + bne _080892C4 + b _08089416 +_080892C4: + bl sub_8058244 + cmp r0, 0x1 + bne _080892CE + b _08089416 +_080892CE: + movs r0, 0xF4 + bl sub_80722CC + ldr r0, _080892E0 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0xB + strb r0, [r1] + b _08089416 + .align 2, 0 +_080892E0: .4byte gUnknown_20397A4 +_080892E4: + ldr r0, _0808931C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08089344 + ldr r0, _08089320 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08089324 + ldr r0, [r4] + ldrb r0, [r0, 0x5] + cmp r0, 0 + beq _08089308 + bl sub_811B0D0 + cmp r0, 0x1 + beq _08089364 +_08089308: + ldr r0, _08089320 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08089324 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + b _080893C8 + .align 2, 0 +_0808931C: .4byte gUnknown_30030F0 +_08089320: .4byte gUnknown_3003F64 +_08089324: + movs r0, 0xA + bl sub_812B1F0 + bl sub_808B1D4 + ldr r0, _08089340 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0xD + strb r0, [r1] + movs r0, 0xF2 + bl sub_80722CC + b _08089416 + .align 2, 0 +_08089340: .4byte gUnknown_20397A4 +_08089344: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08089416 + ldr r0, _0808936C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08089370 + ldr r0, [r4] + ldrb r0, [r0, 0x5] + cmp r0, 0 + beq _08089370 + bl sub_811B0D0 + cmp r0, 0x1 + bne _08089370 +_08089364: + ldr r1, [r4] + movs r0, 0xF + strb r0, [r1] + b _08089416 + .align 2, 0 +_0808936C: .4byte gUnknown_3003F64 +_08089370: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + b _080893C8 +_0808937A: + bl sub_800AAC0 + movs r0, 0 + movs r1, 0x1 + bl sub_80F6EE4 + ldr r2, _080893B0 @ =gUnknown_8419D89 + movs r0, 0x1 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _080893B4 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0x10 + strb r0, [r1] + b _08089416 + .align 2, 0 +_080893B0: .4byte gUnknown_8419D89 +_080893B4: .4byte gUnknown_20397A4 +_080893B8: + ldr r0, _080893DC @ =gUnknown_3003F64 + ldrb r1, [r0] + cmp r1, 0 + bne _08089416 + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 +_080893C8: + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _080893E0 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0xE + strb r0, [r1] + b _08089416 + .align 2, 0 +_080893DC: .4byte gUnknown_3003F64 +_080893E0: .4byte gUnknown_20397A4 +_080893E4: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _08089416 + adds r0, r5, 0 + bl sub_8089088 + b _08089416 +_080893F6: + bl sub_808B1FC + lsls r0, 24 + cmp r0, 0 + beq _08089416 + bl sub_8058244 + cmp r0, 0x1 + beq _08089416 + ldr r0, _08089420 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0xA + strb r0, [r1] + movs r0, 0xF4 + bl sub_80722CC +_08089416: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08089420: .4byte gUnknown_20397A4 + thumb_func_end sub_80890C0 + + thumb_func_start sub_8089424 +sub_8089424: @ 8089424 + push {lr} + ldr r0, _0808943C @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + cmp r0, 0x5 + bls _08089432 + b _0808959C +_08089432: + lsls r0, 2 + ldr r1, _08089440 @ =_08089444 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808943C: .4byte gUnknown_20397A4 +_08089440: .4byte _08089444 + .align 2, 0 +_08089444: + .4byte _0808945C + .4byte _08089490 + .4byte _080894C4 + .4byte _08089524 + .4byte _0808953C + .4byte _08089570 +_0808945C: + ldr r0, _08089470 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _08089474 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08089480 + ldr r0, _08089478 @ =gUnknown_83CCE30 + ldr r2, _0808947C @ =0x00000e1c + b _08089582 + .align 2, 0 +_08089470: .4byte gUnknown_20397A4 +_08089474: .4byte 0x00000457 +_08089478: .4byte gUnknown_83CCE30 +_0808947C: .4byte 0x00000e1c +_08089480: + ldr r0, _08089488 @ =gUnknown_83CCEC8 + ldr r2, _0808948C @ =0x00000e1c + b _08089582 + .align 2, 0 +_08089488: .4byte gUnknown_83CCEC8 +_0808948C: .4byte 0x00000e1c +_08089490: + ldr r0, _080894A4 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _080894A8 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080894B4 + ldr r0, _080894AC @ =gUnknown_83CC8A8 + ldr r2, _080894B0 @ =0x0000096c + b _08089582 + .align 2, 0 +_080894A4: .4byte gUnknown_20397A4 +_080894A8: .4byte 0x00000457 +_080894AC: .4byte gUnknown_83CC8A8 +_080894B0: .4byte 0x0000096c +_080894B4: + ldr r0, _080894BC @ =gUnknown_83CC984 + ldr r2, _080894C0 @ =0x0000096c + b _08089582 + .align 2, 0 +_080894BC: .4byte gUnknown_83CC984 +_080894C0: .4byte 0x0000096c +_080894C4: + ldr r0, _080894E0 @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x5] + cmp r0, 0 + bne _080894FC + ldr r2, _080894E4 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080894EC + ldr r0, _080894E8 @ =gUnknown_83CC4DC + adds r2, 0x65 + b _08089582 + .align 2, 0 +_080894E0: .4byte gUnknown_20397A4 +_080894E4: .4byte 0x00000457 +_080894E8: .4byte gUnknown_83CC4DC +_080894EC: + ldr r0, _080894F4 @ =gUnknown_83CC6F0 + ldr r2, _080894F8 @ =0x000004bc + b _08089582 + .align 2, 0 +_080894F4: .4byte gUnknown_83CC6F0 +_080894F8: .4byte 0x000004bc +_080894FC: + ldr r2, _0808950C @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08089514 + ldr r0, _08089510 @ =gUnknown_83CCAB0 + adds r2, 0x65 + b _08089582 + .align 2, 0 +_0808950C: .4byte 0x00000457 +_08089510: .4byte gUnknown_83CCAB0 +_08089514: + ldr r0, _0808951C @ =gUnknown_83CCCA4 + ldr r2, _08089520 @ =0x000004bc + b _08089582 + .align 2, 0 +_0808951C: .4byte gUnknown_83CCCA4 +_08089520: .4byte 0x000004bc +_08089524: + ldr r0, _08089530 @ =gUnknown_83CD5E8 + ldr r1, _08089534 @ =gUnknown_20397A4 + ldr r1, [r1] + ldr r2, _08089538 @ =0x000012cc + b _08089582 + .align 2, 0 +_08089530: .4byte gUnknown_83CD5E8 +_08089534: .4byte gUnknown_20397A4 +_08089538: .4byte 0x000012cc +_0808953C: + ldr r0, _08089550 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _08089554 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08089560 + ldr r0, _08089558 @ =gUnknown_8E998CC + ldr r2, _0808955C @ =0x000018cc + b _08089582 + .align 2, 0 +_08089550: .4byte gUnknown_20397A4 +_08089554: .4byte 0x00000457 +_08089558: .4byte gUnknown_8E998CC +_0808955C: .4byte 0x000018cc +_08089560: + ldr r0, _08089568 @ =gUnknown_8E991F8 + ldr r2, _0808956C @ =0x000018cc + b _08089582 + .align 2, 0 +_08089568: .4byte gUnknown_8E991F8 +_0808956C: .4byte 0x000018cc +_08089570: + ldr r0, _0808958C @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _08089590 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080895A4 + ldr r0, _08089594 @ =gUnknown_83CC368 + ldr r2, _08089598 @ =0x000016cc +_08089582: + adds r1, r2 + bl LZ77UnCompWram + b _080895A4 + .align 2, 0 +_0808958C: .4byte gUnknown_20397A4 +_08089590: .4byte 0x00000457 +_08089594: .4byte gUnknown_83CC368 +_08089598: .4byte 0x000016cc +_0808959C: + movs r0, 0 + strb r0, [r1, 0x2] + movs r0, 0x1 + b _080895B0 +_080895A4: + ldr r0, _080895B4 @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x2] + adds r0, 0x1 + strb r0, [r1, 0x2] + movs r0, 0 +_080895B0: + pop {r1} + bx r1 + .align 2, 0 +_080895B4: .4byte gUnknown_20397A4 + thumb_func_end sub_8089424 + + thumb_func_start sub_80895B8 +sub_80895B8: @ 80895B8 + push {lr} + ldr r1, _080895D8 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0xD + bls _080895CC + b _0808973A +_080895CC: + lsls r0, 2 + ldr r1, _080895DC @ =_080895E0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080895D8: .4byte gUnknown_30030F0 +_080895DC: .4byte _080895E0 + .align 2, 0 +_080895E0: + .4byte _08089618 + .4byte _08089630 + .4byte _08089644 + .4byte _08089658 + .4byte _0808966A + .4byte _0808967C + .4byte _08089690 + .4byte _080896A4 + .4byte _080896B8 + .4byte _080896D4 + .4byte _080896E8 + .4byte _080896FC + .4byte _08089710 + .4byte _0808972C +_08089618: + bl sub_8089C3C + bl sub_8089DA4 + ldr r1, _0808962C @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_0808962C: .4byte gUnknown_30030F0 +_08089630: + bl nullsub_51 + ldr r1, _08089640 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08089732 + .align 2, 0 +_08089640: .4byte gUnknown_30030F0 +_08089644: + bl sub_8089C5C + ldr r1, _08089654 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_08089654: .4byte gUnknown_30030F0 +_08089658: + bl sub_8089C80 + ldr r1, _08089678 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0808966A: + bl sub_8089CA4 + ldr r1, _08089678 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_08089678: .4byte gUnknown_30030F0 +_0808967C: + bl sub_8089D0C + ldr r1, _0808968C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08089732 + .align 2, 0 +_0808968C: .4byte gUnknown_30030F0 +_08089690: + bl sub_80F6E9C + ldr r1, _080896A0 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_080896A0: .4byte gUnknown_30030F0 +_080896A4: + bl sub_808AB10 + ldr r1, _080896B4 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08089732 + .align 2, 0 +_080896B4: .4byte gUnknown_30030F0 +_080896B8: + bl sub_8089424 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808973E + ldr r1, _080896D0 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_080896D0: .4byte gUnknown_30030F0 +_080896D4: + bl sub_808AC6C + ldr r1, _080896E4 @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08089732 + .align 2, 0 +_080896E4: .4byte gUnknown_30030F0 +_080896E8: + bl sub_8089B64 + ldr r1, _080896F8 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_080896F8: .4byte gUnknown_30030F0 +_080896FC: + bl sub_8089ECC + ldr r1, _0808970C @ =gUnknown_30030F0 + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _08089732 + .align 2, 0 +_0808970C: .4byte gUnknown_30030F0 +_08089710: + bl sub_808ACE4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808973E + ldr r1, _08089728 @ =gUnknown_30030F0 + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _08089732 + .align 2, 0 +_08089728: .4byte gUnknown_30030F0 +_0808972C: + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 +_08089732: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0808973E +_0808973A: + bl sub_8089D8C +_0808973E: + pop {r0} + bx r0 + thumb_func_end sub_80895B8 + + thumb_func_start sub_8089744 +sub_8089744: @ 8089744 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + bl sub_8054EC4 + cmp r0, r4 + bls _08089756 + adds r0, r4, 0 +_08089756: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8089744 + + thumb_func_start sub_808975C +sub_808975C: @ 808975C + push {lr} + adds r1, r0, 0 + movs r2, 0 + ldrh r0, [r1, 0x6] + cmp r0, 0 + bne _0808976E + ldr r0, [r1, 0x8] + cmp r0, 0 + beq _08089770 +_0808976E: + movs r2, 0x1 +_08089770: + ldrb r0, [r1, 0x3] + cmp r0, 0 + beq _0808977C + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_0808977C: + ldrh r0, [r1, 0x1A] + cmp r0, 0x31 + bls _08089788 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_08089788: + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _08089794 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_08089794: + adds r0, r2, 0 + pop {r1} + bx r1 + thumb_func_end sub_808975C + + thumb_func_start sub_808979C +sub_808979C: @ 808979C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + ldr r7, _08089888 @ =gUnknown_300500C + ldr r1, [r7] + ldrb r0, [r1, 0x8] + movs r6, 0 + strb r0, [r5] + ldrh r0, [r1, 0xE] + strh r0, [r5, 0x10] + ldrb r0, [r1, 0x10] + strh r0, [r5, 0x12] + movs r0, 0x1 + bl sub_8054EC4 + adds r4, r0, 0 + movs r0, 0xA + bl sub_8054EC4 + cmp r0, 0 + bne _080897D0 + movs r4, 0 +_080897D0: + lsrs r0, r4, 16 + strh r0, [r5, 0x6] + lsrs r1, r4, 8 + movs r2, 0xFF + ands r1, r2 + strh r1, [r5, 0x8] + ands r4, r2 + strh r4, [r5, 0xA] + ldr r1, _0808988C @ =0x000003e7 + cmp r0, r1 + bls _080897EE + strh r1, [r5, 0x6] + movs r0, 0x3B + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] +_080897EE: + ldr r0, _08089890 @ =0x00000829 + bl sub_806E6D0 + strb r0, [r5, 0x2] + bl sub_8088F24 + strb r0, [r5, 0x3] + bl sub_808A0E0 + strh r0, [r5, 0xC] + ldr r0, [r7] + ldrb r1, [r0, 0xB] + lsls r1, 8 + ldrb r0, [r0, 0xA] + orrs r0, r1 + strh r0, [r5, 0xE] + ldr r4, _08089894 @ =0x0000270f + movs r0, 0x17 + adds r1, r4, 0 + bl sub_8089744 + strh r0, [r5, 0x14] + movs r0, 0x18 + adds r1, r4, 0 + bl sub_8089744 + strh r0, [r5, 0x16] + ldr r1, _08089898 @ =0x0000ffff + movs r0, 0x15 + bl sub_8089744 + strh r0, [r5, 0x20] + strh r6, [r5, 0x18] + strh r6, [r5, 0x1A] + strh r6, [r5, 0x1C] + strh r6, [r5, 0x1E] + movs r0, 0 + strb r0, [r5, 0x4] + ldr r4, _0808989C @ =gUnknown_3005008 + ldr r0, [r4] + movs r1, 0xA4 + lsls r1, 2 + adds r0, r1 + bl sub_809FD58 + str r0, [r5, 0x24] + movs r2, 0 + adds r7, r5, 0 + adds r7, 0x30 + adds r6, r5, 0 + adds r6, 0x28 + ldr r0, [r4] + ldr r1, _080898A0 @ =0x00002ca0 + adds r3, r0, r1 +_0808985A: + lsls r0, r2, 1 + adds r1, r6, r0 + adds r0, r3, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0808985A + ldr r0, _08089888 @ =gUnknown_300500C + ldr r1, [r0] + adds r0, r7, 0 + bl sub_8008D84 + mov r0, r8 + cmp r0, 0 + bne _080898A4 + adds r0, r5, 0 + bl sub_808975C + b _080898DC + .align 2, 0 +_08089888: .4byte gUnknown_300500C +_0808988C: .4byte 0x000003e7 +_08089890: .4byte 0x00000829 +_08089894: .4byte 0x0000270f +_08089898: .4byte 0x0000ffff +_0808989C: .4byte gUnknown_3005008 +_080898A0: .4byte 0x00002ca0 +_080898A4: + mov r1, r8 + cmp r1, 0x1 + bne _080898DE + movs r0, 0 + strb r0, [r5, 0x1] + ldrh r0, [r5, 0x6] + cmp r0, 0 + bne _080898BA + ldr r0, [r5, 0x8] + cmp r0, 0 + beq _080898BE +_080898BA: + mov r0, r8 + strb r0, [r5, 0x1] +_080898BE: + bl sub_8088F58 + lsls r0, 16 + cmp r0, 0 + beq _080898CE + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] +_080898CE: + bl sub_8088F84 + lsls r0, 16 + cmp r0, 0 + beq _080898DE + ldrb r0, [r5, 0x1] + adds r0, 0x1 +_080898DC: + strb r0, [r5, 0x1] +_080898DE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808979C + + thumb_func_start sub_80898E8 +sub_80898E8: @ 80898E8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + adds r1, r5, 0 + adds r1, 0x38 + movs r0, 0x4 + strb r0, [r1] + adds r0, r5, 0 + movs r1, 0x1 + bl sub_808979C + bl sub_808B800 + lsls r0, 24 + cmp r0, 0 + beq _0808990A + b _08089A60 +_0808990A: + strb r4, [r5, 0x1] + ldrh r0, [r5, 0x6] + cmp r0, 0 + bne _08089918 + ldr r0, [r5, 0x8] + cmp r0, 0 + beq _0808991C +_08089918: + movs r0, 0x1 + strb r0, [r5, 0x1] +_0808991C: + bl sub_8088F58 + strb r0, [r5, 0x3] + bl sub_8088F84 + adds r6, r5, 0 + adds r6, 0x4D + strb r0, [r6] + ldr r0, _0808999C @ =gUnknown_300500C + ldr r0, [r0] + ldr r2, _080899A0 @ =0x00000b14 + adds r1, r0, r2 + ldrh r1, [r1] + str r1, [r5, 0x44] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + ldrh r0, [r0] + str r0, [r5, 0x48] + ldr r4, _080899A4 @ =0x0000ffff + movs r0, 0x33 + adds r1, r4, 0 + bl sub_8089744 + str r0, [r5, 0x3C] + movs r0, 0x32 + adds r1, r4, 0 + bl sub_8089744 + str r0, [r5, 0x40] + adds r1, r5, 0 + adds r1, 0x4C + movs r0, 0x1 + strb r0, [r1] + ldrb r0, [r5, 0x3] + cmp r0, 0 + beq _0808996C + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] +_0808996C: + ldrb r0, [r6] + cmp r0, 0 + beq _08089978 + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] +_08089978: + ldr r0, [r5, 0x44] + cmp r0, 0xC7 + bls _0808998A + ldr r0, [r5, 0x48] + cmp r0, 0xC7 + bls _0808998A + ldrb r0, [r5, 0x1] + adds r0, 0x1 + strb r0, [r5, 0x1] +_0808998A: + ldrh r4, [r5, 0xE] + movs r0, 0x7 + ands r4, r0 + ldrb r0, [r5] + cmp r0, 0x1 + bne _080899AC + ldr r0, _080899A8 @ =gUnknown_83CD8F8 + adds r0, 0x8 + b _080899AE + .align 2, 0 +_0808999C: .4byte gUnknown_300500C +_080899A0: .4byte 0x00000b14 +_080899A4: .4byte 0x0000ffff +_080899A8: .4byte gUnknown_83CD8F8 +_080899AC: + ldr r0, _08089A68 @ =gUnknown_83CD8F8 +_080899AE: + adds r0, r4, r0 + ldrb r0, [r0] + adds r1, r5, 0 + adds r1, 0x4F + strb r0, [r1] + ldr r0, _08089A6C @ =0x00004049 + bl sub_806E568 + adds r1, r5, 0 + adds r1, 0x50 + strb r0, [r1] + ldr r0, _08089A70 @ =0x0000404a + bl sub_806E568 + adds r1, r5, 0 + adds r1, 0x51 + strb r0, [r1] + ldr r0, _08089A74 @ =0x0000404b + bl sub_806E568 + adds r1, r5, 0 + adds r1, 0x52 + strb r0, [r1] + ldr r0, _08089A78 @ =0x00004042 + bl sub_806E568 + adds r1, r5, 0 + adds r1, 0x4E + strb r0, [r1] + ldr r0, _08089A7C @ =0x00004043 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096FD4 + adds r1, r5, 0 + adds r1, 0x54 + strh r0, [r1] + ldr r0, _08089A80 @ =0x00004044 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096FD4 + adds r1, r5, 0 + adds r1, 0x56 + strh r0, [r1] + ldr r0, _08089A84 @ =0x00004045 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096FD4 + adds r1, r5, 0 + adds r1, 0x58 + strh r0, [r1] + ldr r0, _08089A88 @ =0x00004046 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096FD4 + adds r1, r5, 0 + adds r1, 0x5A + strh r0, [r1] + ldr r0, _08089A8C @ =0x00004047 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096FD4 + adds r1, r5, 0 + adds r1, 0x5C + strh r0, [r1] + ldr r0, _08089A90 @ =0x00004048 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + bl sub_8096FD4 + adds r1, r5, 0 + adds r1, 0x5E + strh r0, [r1] +_08089A60: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08089A68: .4byte gUnknown_83CD8F8 +_08089A6C: .4byte 0x00004049 +_08089A70: .4byte 0x0000404a +_08089A74: .4byte 0x0000404b +_08089A78: .4byte 0x00004042 +_08089A7C: .4byte 0x00004043 +_08089A80: .4byte 0x00004044 +_08089A84: .4byte 0x00004045 +_08089A88: .4byte 0x00004046 +_08089A8C: .4byte 0x00004047 +_08089A90: .4byte 0x00004048 + thumb_func_end sub_80898E8 + + thumb_func_start sub_8089A94 +sub_8089A94: @ 8089A94 + push {r4,r5,lr} + ldr r4, _08089B4C @ =gUnknown_20397A4 + ldr r0, [r4] + movs r1, 0 + strb r1, [r0, 0xA] + ldr r0, [r4] + strb r1, [r0, 0xB] + ldr r0, [r4] + strb r1, [r0, 0xC] + ldr r0, [r4] + strb r1, [r0, 0xD] + ldr r0, [r4] + strb r1, [r0, 0xE] + ldr r0, [r4] + strb r1, [r0, 0xF] + ldr r0, [r4] + strb r1, [r0, 0x10] + ldr r0, [r4] + adds r0, 0x11 + movs r2, 0x8 + bl memset + ldr r1, [r4] + ldr r2, _08089B50 @ =0x0000045e + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08089AD2 + ldrb r0, [r1, 0xA] + adds r0, 0x1 + strb r0, [r1, 0xA] +_08089AD2: + ldr r1, [r4] + ldr r3, _08089B54 @ =0x00000462 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, 0 + bne _08089AE8 + ldr r2, _08089B58 @ =0x00000464 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + beq _08089AEE +_08089AE8: + ldrb r0, [r1, 0xB] + adds r0, 0x1 + strb r0, [r1, 0xB] +_08089AEE: + ldr r2, _08089B4C @ =gUnknown_20397A4 + ldr r1, [r2] + movs r3, 0x8E + lsls r3, 3 + adds r0, r1, r3 + ldr r0, [r0] + cmp r0, 0 + beq _08089B04 + ldrb r0, [r1, 0xC] + adds r0, 0x1 + strb r0, [r1, 0xC] +_08089B04: + ldr r1, [r2] + ldr r2, _08089B5C @ =0x0000047c + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, 0 + beq _08089B16 + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] +_08089B16: + movs r5, 0 + movs r4, 0x82 + lsls r4, 4 +_08089B1C: + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + beq _08089B38 + ldr r0, _08089B4C @ =gUnknown_20397A4 + ldr r1, [r0] + adds r1, 0x11 + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08089B38: + adds r4, 0x1 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08089B60 @ =0x00000827 + cmp r4, r0 + bls _08089B1C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08089B4C: .4byte gUnknown_20397A4 +_08089B50: .4byte 0x0000045e +_08089B54: .4byte 0x00000462 +_08089B58: .4byte 0x00000464 +_08089B5C: .4byte 0x0000047c +_08089B60: .4byte 0x00000827 + thumb_func_end sub_8089A94 + + thumb_func_start sub_8089B64 +sub_8089B64: @ 8089B64 + push {lr} + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r1, 0xFD + lsls r1, 6 + movs r0, 0 + bl sub_8000A38 + movs r0, 0x50 + movs r1, 0xC1 + bl sub_8000A38 + movs r0, 0x54 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x3F + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x1E + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0xA0 + bl sub_8000A38 + movs r0, 0x40 + movs r1, 0xF0 + bl sub_8000A38 + ldr r0, _08089BC8 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08089BCC + movs r0, 0xC7 + bl sub_8000B68 + b _08089BD2 + .align 2, 0 +_08089BC8: .4byte gUnknown_3003F64 +_08089BCC: + movs r0, 0x3 + bl sub_8000B68 +_08089BD2: + pop {r0} + bx r0 + thumb_func_end sub_8089B64 + + thumb_func_start sub_8089BD8 +sub_8089BD8: @ 8089BD8 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x28 + movs r1, 0xA + bl __divsi3 + lsls r0, 24 + lsrs r2, r0, 24 + asrs r0, 24 + cmp r0, 0x4 + bgt _08089BF2 + movs r2, 0 +_08089BF2: + ldr r4, _08089C30 @ =gUnknown_20397A4 + ldr r0, [r4] + ldr r1, _08089C34 @ =0x00000456 + adds r0, r1 + strb r2, [r0] + ldr r0, [r4] + adds r0, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x54 + bl sub_8000A38 + ldr r0, [r4] + ldr r1, _08089C38 @ =0x00007bcc + adds r0, r1 + ldrh r2, [r0] + lsls r1, r2, 8 + movs r0, 0xA0 + subs r0, r2 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x44 + bl sub_8000A38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08089C30: .4byte gUnknown_20397A4 +_08089C34: .4byte 0x00000456 +_08089C38: .4byte 0x00007bcc + thumb_func_end sub_8089BD8 + + thumb_func_start sub_8089C3C +sub_8089C3C: @ 8089C3C + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_8089C3C + + thumb_func_start nullsub_51 +nullsub_51: @ 8089C58 + bx lr + thumb_func_end nullsub_51 + + thumb_func_start sub_8089C5C +sub_8089C5C: @ 8089C5C + sub sp, 0x4 + movs r1, 0xE0 + lsls r1, 19 + movs r0, 0 + str r0, [sp] + ldr r0, _08089C78 @ =0x040000d4 + mov r2, sp + str r2, [r0] + str r1, [r0, 0x4] + ldr r1, _08089C7C @ =0x85000100 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + add sp, 0x4 + bx lr + .align 2, 0 +_08089C78: .4byte 0x040000d4 +_08089C7C: .4byte 0x85000100 + thumb_func_end sub_8089C5C + + thumb_func_start sub_8089C80 +sub_8089C80: @ 8089C80 + sub sp, 0x4 + movs r2, 0xA0 + lsls r2, 19 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r0, _08089C9C @ =0x040000d4 + str r1, [r0] + str r2, [r0, 0x4] + ldr r1, _08089CA0 @ =0x81000200 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + add sp, 0x4 + bx lr + .align 2, 0 +_08089C9C: .4byte 0x040000d4 +_08089CA0: .4byte 0x81000200 + thumb_func_end sub_8089C80 + + thumb_func_start sub_8089CA4 +sub_8089CA4: @ 8089CA4 + push {lr} + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0xE + movs r1, 0 + bl sub_8000A38 + movs r0, 0x10 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x14 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x16 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x18 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1C + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + pop {r0} + bx r0 + thumb_func_end sub_8089CA4 + + thumb_func_start sub_8089D0C +sub_8089D0C: @ 8089D0C + push {lr} + bl sub_8006B10 + bl sub_8070528 + movs r0, 0 + bl sub_8001618 + ldr r1, _08089D84 @ =gUnknown_83CD888 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _08089D88 @ =gUnknown_83CD898 + bl sub_8003B24 + bl sub_8002C28 + pop {r0} + bx r0 + .align 2, 0 +_08089D84: .4byte gUnknown_83CD888 +_08089D88: .4byte gUnknown_83CD898 + thumb_func_end sub_8089D0C + + thumb_func_start sub_8089D8C +sub_8089D8C: @ 8089D8C + push {lr} + ldr r0, _08089DA0 @ =sub_8089070 + bl sub_8000544 + movs r0, 0xA + bl sub_812B1F0 + pop {r0} + bx r0 + .align 2, 0 +_08089DA0: .4byte sub_8089070 + thumb_func_end sub_8089D8C + + thumb_func_start sub_8089DA4 +sub_8089DA4: @ 8089DA4 + push {lr} + bl sub_80773BC + bl sub_8087E64 + ldr r0, _08089DC4 @ =sub_80890C0 + movs r1, 0 + bl sub_807741C + bl sub_808B774 + bl sub_8089A94 + pop {r0} + bx r0 + .align 2, 0 +_08089DC4: .4byte sub_80890C0 + thumb_func_end sub_8089DA4 + + thumb_func_start sub_8089DC8 +sub_8089DC8: @ 8089DC8 + push {lr} + ldr r0, _08089DE0 @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + cmp r0, 0x5 + bhi _08089E24 + lsls r0, 2 + ldr r1, _08089DE4 @ =_08089DE8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08089DE0: .4byte gUnknown_20397A4 +_08089DE4: .4byte _08089DE8 + .align 2, 0 +_08089DE8: + .4byte _08089E00 + .4byte _08089E06 + .4byte _08089E0C + .4byte _08089E12 + .4byte _08089E18 + .4byte _08089E1E +_08089E00: + bl sub_8089EEC + b _08089E2C +_08089E06: + bl sub_8089F78 + b _08089E2C +_08089E0C: + bl sub_8089FEC + b _08089E2C +_08089E12: + bl sub_808A100 + b _08089E2C +_08089E18: + bl sub_808A22C + b _08089E2C +_08089E1E: + bl sub_808A3D0 + b _08089E2C +_08089E24: + movs r0, 0 + strb r0, [r1, 0x1] + movs r0, 0x1 + b _08089E38 +_08089E2C: + ldr r0, _08089E3C @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0 +_08089E38: + pop {r1} + bx r1 + .align 2, 0 +_08089E3C: .4byte gUnknown_20397A4 + thumb_func_end sub_8089DC8 + + thumb_func_start sub_8089E40 +sub_8089E40: @ 8089E40 + push {lr} + ldr r0, _08089E58 @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + cmp r0, 0x7 + bhi _08089EB0 + lsls r0, 2 + ldr r1, _08089E5C @ =_08089E60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08089E58: .4byte gUnknown_20397A4 +_08089E5C: .4byte _08089E60 + .align 2, 0 +_08089E60: + .4byte _08089E80 + .4byte _08089E86 + .4byte _08089E8C + .4byte _08089E92 + .4byte _08089E98 + .4byte _08089E9E + .4byte _08089EA4 + .4byte _08089EAA +_08089E80: + bl sub_808A4FC + b _08089EB8 +_08089E86: + bl sub_808A654 + b _08089EB8 +_08089E8C: + bl sub_808A760 + b _08089EB8 +_08089E92: + bl sub_808A854 + b _08089EB8 +_08089E98: + bl sub_808A91C + b _08089EB8 +_08089E9E: + bl sub_808A9F0 + b _08089EB8 +_08089EA4: + bl sub_808AA78 + b _08089EB8 +_08089EAA: + bl sub_808ABE0 + b _08089EB8 +_08089EB0: + movs r0, 0 + strb r0, [r1, 0x1] + movs r0, 0x1 + b _08089EC4 +_08089EB8: + ldr r0, _08089EC8 @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x1] + adds r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0 +_08089EC4: + pop {r1} + bx r1 + .align 2, 0 +_08089EC8: .4byte gUnknown_20397A4 + thumb_func_end sub_8089E40 + + thumb_func_start sub_8089ECC +sub_8089ECC: @ 8089ECC + push {lr} + bl sub_808A4A8 + bl sub_808A5B8 + bl sub_808A6C8 + bl sub_808A810 + bl sub_808A8D0 + bl sub_808A9A4 + pop {r0} + bx r0 + thumb_func_end sub_8089ECC + + thumb_func_start sub_8089EEC +sub_8089EEC: @ 8089EEC + push {r4,r5,lr} + sub sp, 0x4C + ldr r1, _08089F54 @ =gUnknown_8419CDA + add r0, sp, 0xC + bl sub_8008D84 + add r4, sp, 0x2C + ldr r5, _08089F58 @ =gUnknown_20397A4 + ldr r1, [r5] + ldr r0, _08089F5C @ =0x0000048c + adds r1, r0 + adds r0, r4, 0 + bl sub_8008D84 + ldr r0, [r5] + ldr r1, _08089F60 @ =0x00007bcf + adds r0, r1 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_80093BC + add r0, sp, 0xC + adds r1, r4, 0 + bl sub_8008DA4 + ldr r0, _08089F64 @ =gUnknown_83CD8E9 + ldrb r1, [r0, 0x1] + ldr r2, _08089F68 @ =gUnknown_83CD920 + ldr r0, [r5] + ldr r3, _08089F6C @ =0x00000457 + adds r0, r3 + ldrb r0, [r0] + adds r2, r0, r2 + ldrb r2, [r2] + ldr r3, _08089F70 @ =gUnknown_83CD922 + adds r0, r3 + ldrb r3, [r0] + ldr r0, _08089F74 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + bl sub_812E51C + add sp, 0x4C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08089F54: .4byte gUnknown_8419CDA +_08089F58: .4byte gUnknown_20397A4 +_08089F5C: .4byte 0x0000048c +_08089F60: .4byte 0x00007bcf +_08089F64: .4byte gUnknown_83CD8E9 +_08089F68: .4byte gUnknown_83CD920 +_08089F6C: .4byte 0x00000457 +_08089F70: .4byte gUnknown_83CD922 +_08089F74: .4byte gUnknown_83CD8E0 + thumb_func_end sub_8089EEC + + thumb_func_start sub_8089F78 +sub_8089F78: @ 8089F78 + push {r4,lr} + sub sp, 0x2C + ldr r1, _08089FCC @ =gUnknown_8419CE1 + add r0, sp, 0xC + bl sub_8008D84 + ldr r4, _08089FD0 @ =gUnknown_20397A4 + ldr r1, [r4] + ldr r2, _08089FD4 @ =0x0000046a + adds r1, r2 + ldrh r1, [r1] + movs r2, 0x2 + movs r3, 0x5 + bl sub_8008E78 + ldr r0, _08089FD8 @ =gUnknown_83CD8E9 + ldrb r1, [r0, 0x1] + ldr r2, _08089FDC @ =gUnknown_83CD924 + ldr r0, [r4] + ldr r3, _08089FE0 @ =0x00000457 + adds r0, r3 + ldrb r0, [r0] + adds r2, r0, r2 + ldrb r2, [r2] + ldr r3, _08089FE4 @ =gUnknown_83CD926 + adds r0, r3 + ldrb r3, [r0] + ldr r0, _08089FE8 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + bl sub_812E51C + add sp, 0x2C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08089FCC: .4byte gUnknown_8419CE1 +_08089FD0: .4byte gUnknown_20397A4 +_08089FD4: .4byte 0x0000046a +_08089FD8: .4byte gUnknown_83CD8E9 +_08089FDC: .4byte gUnknown_83CD924 +_08089FE0: .4byte 0x00000457 +_08089FE4: .4byte gUnknown_83CD926 +_08089FE8: .4byte gUnknown_83CD8E0 + thumb_func_end sub_8089F78 + + thumb_func_start sub_8089FEC +sub_8089FEC: @ 8089FEC + push {r4-r7,lr} + sub sp, 0x18 + ldr r1, _0808A068 @ =gUnknown_8419CED + add r0, sp, 0xC + bl sub_8008D84 + ldr r4, _0808A06C @ =gUnknown_20397A4 + ldr r1, [r4] + movs r2, 0x90 + lsls r2, 3 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r0, [r4] + ldr r1, _0808A070 @ =0x00000457 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808A080 + add r0, sp, 0xC + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r2, 0x7A + negs r2, r2 + adds r0, r2, 0 + subs r0, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0808A074 @ =gUnknown_83CD8E9 + ldrb r6, [r0, 0x1] + ldr r5, _0808A078 @ =gUnknown_83CD8E0 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0808A07C @ =gUnknown_8419CE7 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x14 + movs r3, 0x38 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x38 + bl sub_812E51C + b _0808A0CA + .align 2, 0 +_0808A068: .4byte gUnknown_8419CED +_0808A06C: .4byte gUnknown_20397A4 +_0808A070: .4byte 0x00000457 +_0808A074: .4byte gUnknown_83CD8E9 +_0808A078: .4byte gUnknown_83CD8E0 +_0808A07C: .4byte gUnknown_8419CE7 +_0808A080: + add r0, sp, 0xC + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r0, 0x76 + subs r0, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0808A0D4 @ =gUnknown_83CD8E9 + ldrb r6, [r0, 0x1] + ldr r5, _0808A0D8 @ =gUnknown_83CD8E0 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0808A0DC @ =gUnknown_8419CE7 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x10 + movs r3, 0x39 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + add r1, sp, 0xC + str r1, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x39 + bl sub_812E51C +_0808A0CA: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808A0D4: .4byte gUnknown_83CD8E9 +_0808A0D8: .4byte gUnknown_83CD8E0 +_0808A0DC: .4byte gUnknown_8419CE7 + thumb_func_end sub_8089FEC + + thumb_func_start sub_808A0E0 +sub_808A0E0: @ 808A0E0 + push {lr} + bl sub_806E25C + cmp r0, 0 + bne _0808A0F2 + movs r0, 0x1 + bl sub_8088EDC + b _0808A0F8 +_0808A0F2: + movs r0, 0x1 + bl sub_8088E8C +_0808A0F8: + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_808A0E0 + + thumb_func_start sub_808A100 +sub_808A100: @ 808A100 + push {r4-r7,lr} + sub sp, 0x18 + ldr r0, _0808A198 @ =0x00000829 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _0808A112 + b _0808A212 +_0808A112: + ldr r4, _0808A19C @ =gUnknown_20397A4 + ldr r0, [r4] + movs r1, 0x8D + lsls r1, 3 + adds r0, r1 + ldrh r1, [r0] + add r0, sp, 0xC + movs r2, 0 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r4] + ldr r2, _0808A1A0 @ =0x00000457 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808A1B4 + add r0, sp, 0xC + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r2, 0x78 + negs r2, r2 + adds r0, r2, 0 + subs r0, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0808A1A4 @ =gUnknown_83CD8E9 + ldrb r6, [r0, 0x1] + ldr r5, _0808A1A8 @ =gUnknown_83CD8E0 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0808A1AC @ =gUnknown_8419CEF + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x14 + movs r3, 0x48 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + add r0, sp, 0xC + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x48 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, _0808A1B0 @ =gUnknown_8419CF7 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x8A + movs r3, 0x48 + bl sub_812E51C + b _0808A212 + .align 2, 0 +_0808A198: .4byte 0x00000829 +_0808A19C: .4byte gUnknown_20397A4 +_0808A1A0: .4byte 0x00000457 +_0808A1A4: .4byte gUnknown_83CD8E9 +_0808A1A8: .4byte gUnknown_83CD8E0 +_0808A1AC: .4byte gUnknown_8419CEF +_0808A1B0: .4byte gUnknown_8419CF7 +_0808A1B4: + add r0, sp, 0xC + bl sub_8008E08 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + movs r0, 0x78 + subs r0, r1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0808A21C @ =gUnknown_83CD8E9 + ldrb r6, [r0, 0x1] + ldr r5, _0808A220 @ =gUnknown_83CD8E0 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0808A224 @ =gUnknown_8419CEF + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x10 + movs r3, 0x49 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + add r1, sp, 0xC + str r1, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x49 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, _0808A228 @ =gUnknown_8419CF7 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x8A + movs r3, 0x49 + bl sub_812E51C +_0808A212: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808A21C: .4byte gUnknown_83CD8E9 +_0808A220: .4byte gUnknown_83CD8E0 +_0808A224: .4byte gUnknown_8419CEF +_0808A228: .4byte gUnknown_8419CF7 + thumb_func_end sub_808A100 + + thumb_func_start sub_808A22C +sub_808A22C: @ 808A22C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + ldr r0, _0808A2B0 @ =gUnknown_300500C + ldr r0, [r0] + ldrh r5, [r0, 0xE] + ldrb r7, [r0, 0x10] + ldr r6, _0808A2B4 @ =gUnknown_20397A4 + ldr r2, [r6] + ldrb r0, [r2, 0x5] + cmp r0, 0 + beq _0808A256 + ldr r1, _0808A2B8 @ =0x0000046c + adds r0, r2, r1 + ldrh r5, [r0] + adds r1, 0x2 + adds r0, r2, r1 + ldrh r7, [r0] +_0808A256: + ldr r0, _0808A2BC @ =0x000003e7 + cmp r5, r0 + bls _0808A25E + adds r5, r0, 0 +_0808A25E: + cmp r7, 0x3B + bls _0808A264 + movs r7, 0x3B +_0808A264: + ldr r1, _0808A2C0 @ =gUnknown_83CD930 + ldr r4, _0808A2C4 @ =0x00000457 + adds r0, r2, r4 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + ldr r1, _0808A2C8 @ =gUnknown_83CD936 + adds r0, r1 + ldrb r3, [r0] + movs r0, 0x32 + str r0, [sp] + movs r0, 0xC + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + bl sub_8004378 + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808A2D8 + ldr r0, _0808A2CC @ =gUnknown_83CD8E9 + ldrb r1, [r0, 0x1] + ldr r0, _0808A2D0 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r0, _0808A2D4 @ =gUnknown_8419CFD + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x14 + movs r3, 0x58 + bl sub_812E51C + b _0808A2F4 + .align 2, 0 +_0808A2B0: .4byte gUnknown_300500C +_0808A2B4: .4byte gUnknown_20397A4 +_0808A2B8: .4byte 0x0000046c +_0808A2BC: .4byte 0x000003e7 +_0808A2C0: .4byte gUnknown_83CD930 +_0808A2C4: .4byte 0x00000457 +_0808A2C8: .4byte gUnknown_83CD936 +_0808A2CC: .4byte gUnknown_83CD8E9 +_0808A2D0: .4byte gUnknown_83CD8E0 +_0808A2D4: .4byte gUnknown_8419CFD +_0808A2D8: + ldr r0, _0808A3A4 @ =gUnknown_83CD8E9 + ldrb r1, [r0, 0x1] + ldr r0, _0808A3A8 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r0, _0808A3AC @ =gUnknown_8419CFD + str r0, [sp, 0x8] + movs r0, 0x1 + movs r2, 0x10 + movs r3, 0x59 + bl sub_812E51C +_0808A2F4: + add r0, sp, 0xC + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, _0808A3A4 @ =gUnknown_83CD8E9 + ldrb r0, [r0, 0x1] + mov r10, r0 + ldr r1, _0808A3B0 @ =gUnknown_83CD930 + ldr r2, _0808A3B4 @ =gUnknown_20397A4 + mov r9, r2 + ldr r0, [r2] + ldr r2, _0808A3B8 @ =0x00000457 + mov r8, r2 + add r0, r8 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + ldr r6, _0808A3BC @ =gUnknown_83CD936 + adds r0, r6 + ldrb r3, [r0] + ldr r0, _0808A3A8 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r5, 0x1 + negs r5, r5 + str r5, [sp, 0x4] + add r1, sp, 0xC + str r1, [sp, 0x8] + movs r0, 0x1 + mov r1, r10 + bl sub_812E51C + ldr r1, _0808A3C0 @ =gUnknown_83CD932 + mov r2, r9 + ldr r4, [r2] + mov r2, r8 + adds r0, r4, r2 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + adds r0, r6 + ldrb r3, [r0] + ldr r1, _0808A3C4 @ =gUnknown_83CD928 + ldrb r0, [r4, 0x7] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [sp] + str r5, [sp, 0x4] + ldr r0, _0808A3C8 @ =gUnknown_8419CF8 + str r0, [sp, 0x8] + movs r0, 0x1 + mov r1, r10 + bl sub_812E51C + add r0, sp, 0xC + adds r1, r7, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r1, _0808A3CC @ =gUnknown_83CD934 + mov r2, r9 + ldr r0, [r2] + add r0, r8 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + adds r0, r6 + ldrb r3, [r0] + ldr r0, _0808A3A8 @ =gUnknown_83CD8E0 + str r0, [sp] + str r5, [sp, 0x4] + add r1, sp, 0xC + str r1, [sp, 0x8] + movs r0, 0x1 + mov r1, r10 + bl sub_812E51C + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808A3A4: .4byte gUnknown_83CD8E9 +_0808A3A8: .4byte gUnknown_83CD8E0 +_0808A3AC: .4byte gUnknown_8419CFD +_0808A3B0: .4byte gUnknown_83CD930 +_0808A3B4: .4byte gUnknown_20397A4 +_0808A3B8: .4byte 0x00000457 +_0808A3BC: .4byte gUnknown_83CD936 +_0808A3C0: .4byte gUnknown_83CD932 +_0808A3C4: .4byte gUnknown_83CD928 +_0808A3C8: .4byte gUnknown_8419CF8 +_0808A3CC: .4byte gUnknown_83CD934 + thumb_func_end sub_808A22C + + thumb_func_start sub_808A3D0 +sub_808A3D0: @ 808A3D0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + ldr r7, _0808A494 @ =gUnknown_20397A4 + ldr r1, [r7] + ldrb r0, [r1, 0x5] + cmp r0, 0 + beq _0808A486 + ldr r0, _0808A498 @ =gUnknown_83CD938 + mov r8, r0 + ldr r4, _0808A49C @ =0x00000457 + adds r0, r1, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r3, [r0] + ldr r6, _0808A4A0 @ =gUnknown_83CD8E0 + str r6, [sp] + movs r5, 0x1 + negs r5, r5 + str r5, [sp, 0x4] + adds r0, r1, 0 + adds r0, 0x19 + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0xA + bl sub_812E51C + ldr r1, [r7] + adds r1, 0x19 + movs r0, 0x2 + movs r2, 0 + bl sub_8005ED4 + adds r2, r0, 0 + adds r2, 0x10 + lsls r2, 24 + lsrs r2, 24 + ldr r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r3, [r0] + str r6, [sp] + str r5, [sp, 0x4] + adds r1, 0x26 + str r1, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + bl sub_812E51C + ldr r0, _0808A4A4 @ =gUnknown_83CD93A + mov r8, r0 + ldr r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r3, [r0] + str r6, [sp] + str r5, [sp, 0x4] + adds r1, 0x33 + str r1, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r2, 0xA + bl sub_812E51C + ldr r1, [r7] + adds r1, 0x33 + movs r0, 0x2 + movs r2, 0 + bl sub_8005ED4 + adds r2, r0, 0 + adds r2, 0x10 + lsls r2, 24 + lsrs r2, 24 + ldr r1, [r7] + adds r4, r1, r4 + ldrb r0, [r4] + add r0, r8 + ldrb r3, [r0] + str r6, [sp] + str r5, [sp, 0x4] + adds r1, 0x40 + str r1, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + bl sub_812E51C +_0808A486: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808A494: .4byte gUnknown_20397A4 +_0808A498: .4byte gUnknown_83CD938 +_0808A49C: .4byte 0x00000457 +_0808A4A0: .4byte gUnknown_83CD8E0 +_0808A4A4: .4byte gUnknown_83CD93A + thumb_func_end sub_808A3D0 + + thumb_func_start sub_808A4A8 +sub_808A4A8: @ 808A4A8 + push {r4,lr} + ldr r4, _0808A4E8 @ =gUnknown_20397A4 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4D + ldr r2, _0808A4EC @ =0x0000048c + adds r1, r2 + bl sub_8008D84 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x4D + ldr r2, _0808A4F0 @ =0x00007bcf + adds r1, r2 + ldrb r1, [r1] + bl sub_80093BC + ldr r4, [r4] + ldr r1, _0808A4F4 @ =0x00000457 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0808A4E0 + adds r0, r4, 0 + adds r0, 0x4D + ldr r1, _0808A4F8 @ =gUnknown_8419D0A + bl sub_8008DA4 +_0808A4E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808A4E8: .4byte gUnknown_20397A4 +_0808A4EC: .4byte 0x0000048c +_0808A4F0: .4byte 0x00007bcf +_0808A4F4: .4byte 0x00000457 +_0808A4F8: .4byte gUnknown_8419D0A + thumb_func_end sub_808A4A8 + + thumb_func_start sub_808A4FC +sub_808A4FC: @ 808A4FC + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _0808A538 @ =gUnknown_20397A4 + ldr r4, [r6] + ldr r0, _0808A53C @ =0x00000457 + adds r2, r4, r0 + ldrb r0, [r2] + cmp r0, 0 + bne _0808A550 + ldr r0, _0808A540 @ =gUnknown_83CD8E9 + ldrb r1, [r0, 0x1] + ldr r0, _0808A544 @ =gUnknown_83CD93C + ldrb r3, [r2] + adds r0, r3, r0 + ldrb r2, [r0] + ldr r0, _0808A548 @ =gUnknown_83CD93E + adds r3, r0 + ldrb r3, [r3] + ldr r0, _0808A54C @ =gUnknown_83CD8E0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + adds r0, r4, 0 + adds r0, 0x4D + str r0, [sp, 0x8] + movs r0, 0x1 + bl sub_812E51C + b _0808A59C + .align 2, 0 +_0808A538: .4byte gUnknown_20397A4 +_0808A53C: .4byte 0x00000457 +_0808A540: .4byte gUnknown_83CD8E9 +_0808A544: .4byte gUnknown_83CD93C +_0808A548: .4byte gUnknown_83CD93E +_0808A54C: .4byte gUnknown_83CD8E0 +_0808A550: + ldr r0, _0808A5A4 @ =gUnknown_83CD8E9 + ldrb r5, [r0, 0x1] + adds r4, 0x4D + adds r0, r5, 0 + movs r1, 0x2 + bl sub_80F79D8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8005ED4 + ldr r2, _0808A5A8 @ =gUnknown_83CD93C + ldr r4, [r6] + ldr r3, _0808A5AC @ =0x00000457 + adds r1, r4, r3 + ldrb r1, [r1] + adds r2, r1, r2 + ldrb r2, [r2] + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0808A5B0 @ =gUnknown_83CD93E + adds r1, r0 + ldrb r3, [r1] + ldr r0, _0808A5B4 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + adds r4, 0x4D + str r4, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + bl sub_812E51C +_0808A59C: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808A5A4: .4byte gUnknown_83CD8E9 +_0808A5A8: .4byte gUnknown_83CD93C +_0808A5AC: .4byte 0x00000457 +_0808A5B0: .4byte gUnknown_83CD93E +_0808A5B4: .4byte gUnknown_83CD8E0 + thumb_func_end sub_808A4FC + + thumb_func_start sub_808A5B8 +sub_808A5B8: @ 808A5B8 + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _0808A640 @ =gUnknown_20397A4 + ldr r1, [r5] + ldrb r0, [r1, 0xB] + cmp r0, 0 + beq _0808A636 + ldr r2, _0808A644 @ =0x00000462 + adds r0, r1, r2 + ldrh r1, [r0] + mov r0, sp + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r0, [r5] + adds r0, 0x93 + mov r1, sp + bl sub_8008D84 + ldr r0, [r5] + adds r0, 0x93 + ldr r4, _0808A648 @ =gUnknown_8419CF8 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_8008DEC + ldr r0, [r5] + ldr r1, _0808A64C @ =0x00000464 + adds r0, r1 + ldrh r1, [r0] + mov r0, sp + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, [r5] + adds r0, 0x93 + mov r1, sp + movs r2, 0x3 + bl sub_8008DEC + ldr r0, [r5] + adds r0, 0x93 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_8008DEC + ldr r0, [r5] + ldr r2, _0808A650 @ =0x00000466 + adds r0, r2 + ldrh r1, [r0] + mov r0, sp + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, [r5] + adds r0, 0x93 + mov r1, sp + movs r2, 0x3 + bl sub_8008DEC +_0808A636: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808A640: .4byte gUnknown_20397A4 +_0808A644: .4byte 0x00000462 +_0808A648: .4byte gUnknown_8419CF8 +_0808A64C: .4byte 0x00000464 +_0808A650: .4byte 0x00000466 + thumb_func_end sub_808A5B8 + + thumb_func_start sub_808A654 +sub_808A654: @ 808A654 + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _0808A6AC @ =gUnknown_20397A4 + ldr r2, [r6] + ldrb r0, [r2, 0xB] + cmp r0, 0 + beq _0808A6A2 + ldr r0, _0808A6B0 @ =gUnknown_83CD8E9 + ldrb r5, [r0, 0x1] + ldr r1, _0808A6B4 @ =gUnknown_83CD940 + ldr r3, _0808A6B8 @ =0x00000457 + adds r0, r2, r3 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r0, _0808A6BC @ =gUnknown_83CD8E0 + str r0, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r0, _0808A6C0 @ =gUnknown_8419D1A + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r3, 0x23 + bl sub_812E51C + ldr r0, _0808A6C4 @ =gUnknown_83CD8E3 + str r0, [sp] + str r4, [sp, 0x4] + ldr r0, [r6] + adds r0, 0x93 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r2, 0xA4 + movs r3, 0x23 + bl sub_812E51C +_0808A6A2: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808A6AC: .4byte gUnknown_20397A4 +_0808A6B0: .4byte gUnknown_83CD8E9 +_0808A6B4: .4byte gUnknown_83CD940 +_0808A6B8: .4byte 0x00000457 +_0808A6BC: .4byte gUnknown_83CD8E0 +_0808A6C0: .4byte gUnknown_8419D1A +_0808A6C4: .4byte gUnknown_83CD8E3 + thumb_func_end sub_808A654 + + thumb_func_start sub_808A6C8 +sub_808A6C8: @ 808A6C8 + push {r4,lr} + sub sp, 0x20 + ldr r4, _0808A740 @ =gUnknown_20397A4 + ldr r1, [r4] + ldrb r0, [r1, 0xC] + cmp r0, 0 + beq _0808A736 + adds r0, r1, 0 + adds r0, 0xD9 + ldr r2, _0808A744 @ =gUnknown_83CD944 + ldr r3, _0808A748 @ =0x00000457 + adds r1, r3 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _0808A74C @ =0x0000011f + adds r0, r1 + ldr r1, _0808A750 @ =gUnknown_8419D4F + bl sub_8008D84 + ldr r0, [r4] + movs r3, 0x8E + lsls r3, 3 + adds r0, r3 + ldrh r1, [r0] + mov r0, sp + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 + ldr r0, [r4] + ldr r1, _0808A754 @ =0x00000165 + adds r0, r1 + mov r1, sp + bl sub_8008D84 + ldr r0, [r4] + ldr r3, _0808A758 @ =0x00000472 + adds r0, r3 + ldrh r1, [r0] + mov r0, sp + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 + ldr r0, [r4] + ldr r1, _0808A75C @ =0x000001ab + adds r0, r1 + mov r1, sp + bl sub_8008D84 +_0808A736: + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808A740: .4byte gUnknown_20397A4 +_0808A744: .4byte gUnknown_83CD944 +_0808A748: .4byte 0x00000457 +_0808A74C: .4byte 0x0000011f +_0808A750: .4byte gUnknown_8419D4F +_0808A754: .4byte 0x00000165 +_0808A758: .4byte 0x00000472 +_0808A75C: .4byte 0x000001ab + thumb_func_end sub_808A6C8 + + thumb_func_start sub_808A760 +sub_808A760: @ 808A760 + push {r4-r7,lr} + sub sp, 0xC + ldr r7, _0808A7EC @ =gUnknown_20397A4 + ldr r3, [r7] + ldrb r0, [r3, 0xC] + cmp r0, 0 + beq _0808A7E2 + ldr r0, _0808A7F0 @ =gUnknown_83CD8E9 + ldrb r6, [r0, 0x1] + ldr r1, _0808A7F4 @ =gUnknown_83CD940 + ldr r2, _0808A7F8 @ =0x00000457 + adds r0, r3, r2 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r5, _0808A7FC @ =gUnknown_83CD8E0 + str r5, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + adds r0, r3, 0 + adds r0, 0xD9 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r3, 0x33 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, [r7] + ldr r1, _0808A800 @ =0x0000011f + adds r0, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x82 + movs r3, 0x33 + bl sub_812E51C + ldr r5, _0808A804 @ =gUnknown_83CD8E3 + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, [r7] + ldr r2, _0808A808 @ =0x00000165 + adds r0, r2 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0x90 + movs r3, 0x33 + bl sub_812E51C + str r5, [sp] + str r4, [sp, 0x4] + ldr r0, [r7] + ldr r1, _0808A80C @ =0x000001ab + adds r0, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r6, 0 + movs r2, 0xC0 + movs r3, 0x33 + bl sub_812E51C +_0808A7E2: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808A7EC: .4byte gUnknown_20397A4 +_0808A7F0: .4byte gUnknown_83CD8E9 +_0808A7F4: .4byte gUnknown_83CD940 +_0808A7F8: .4byte 0x00000457 +_0808A7FC: .4byte gUnknown_83CD8E0 +_0808A800: .4byte 0x0000011f +_0808A804: .4byte gUnknown_83CD8E3 +_0808A808: .4byte 0x00000165 +_0808A80C: .4byte 0x000001ab + thumb_func_end sub_808A760 + + thumb_func_start sub_808A810 +sub_808A810: @ 808A810 + push {r4,lr} + ldr r4, _0808A840 @ =gUnknown_20397A4 + ldr r1, [r4] + ldrb r0, [r1, 0x10] + cmp r0, 0 + beq _0808A83A + ldr r2, _0808A844 @ =0x000001f1 + adds r0, r1, r2 + ldr r1, _0808A848 @ =gUnknown_8419D57 + bl sub_8008D84 + ldr r1, [r4] + ldr r2, _0808A84C @ =0x00000237 + adds r0, r1, r2 + ldr r2, _0808A850 @ =0x0000047c + adds r1, r2 + ldrh r1, [r1] + movs r2, 0x1 + movs r3, 0x5 + bl sub_8008E78 +_0808A83A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808A840: .4byte gUnknown_20397A4 +_0808A844: .4byte 0x000001f1 +_0808A848: .4byte gUnknown_8419D57 +_0808A84C: .4byte 0x00000237 +_0808A850: .4byte 0x0000047c + thumb_func_end sub_808A810 + + thumb_func_start sub_808A854 +sub_808A854: @ 808A854 + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _0808A8B0 @ =gUnknown_20397A4 + ldr r3, [r6] + ldrb r0, [r3, 0x10] + cmp r0, 0 + beq _0808A8A6 + ldr r0, _0808A8B4 @ =gUnknown_83CD8E9 + ldrb r5, [r0, 0x1] + ldr r1, _0808A8B8 @ =gUnknown_83CD940 + ldr r2, _0808A8BC @ =0x00000457 + adds r0, r3, r2 + ldrb r0, [r0] + adds r0, r1 + ldrb r2, [r0] + ldr r0, _0808A8C0 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r1, _0808A8C4 @ =0x000001f1 + adds r0, r3, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r3, 0x43 + bl sub_812E51C + ldr r0, _0808A8C8 @ =gUnknown_83CD8E3 + str r0, [sp] + str r4, [sp, 0x4] + ldr r0, [r6] + ldr r2, _0808A8CC @ =0x00000237 + adds r0, r2 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r2, 0xBA + movs r3, 0x43 + bl sub_812E51C +_0808A8A6: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808A8B0: .4byte gUnknown_20397A4 +_0808A8B4: .4byte gUnknown_83CD8E9 +_0808A8B8: .4byte gUnknown_83CD940 +_0808A8BC: .4byte 0x00000457 +_0808A8C0: .4byte gUnknown_83CD8E0 +_0808A8C4: .4byte 0x000001f1 +_0808A8C8: .4byte gUnknown_83CD8E3 +_0808A8CC: .4byte 0x00000237 + thumb_func_end sub_808A854 + + thumb_func_start sub_808A8D0 +sub_808A8D0: @ 808A8D0 + push {r4,lr} + ldr r4, _0808A908 @ =gUnknown_20397A4 + ldr r1, [r4] + ldr r2, _0808A90C @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808A900 + ldr r2, _0808A910 @ =0x0000027d + adds r0, r1, r2 + ldr r1, _0808A914 @ =gUnknown_8419D7D + bl sub_8008D84 + ldr r1, [r4] + ldr r2, _0808A918 @ =0x000002c3 + adds r0, r1, r2 + movs r2, 0x93 + lsls r2, 3 + adds r1, r2 + ldr r1, [r1] + movs r2, 0x1 + movs r3, 0x5 + bl sub_8008E78 +_0808A900: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808A908: .4byte gUnknown_20397A4 +_0808A90C: .4byte 0x00000457 +_0808A910: .4byte 0x0000027d +_0808A914: .4byte gUnknown_8419D7D +_0808A918: .4byte 0x000002c3 + thumb_func_end sub_808A8D0 + + thumb_func_start sub_808A91C +sub_808A91C: @ 808A91C + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _0808A984 @ =gUnknown_20397A4 + ldr r3, [r6] + ldr r0, _0808A988 @ =0x00000457 + adds r2, r3, r0 + ldrb r0, [r2] + cmp r0, 0x1 + beq _0808A97A + movs r1, 0x93 + lsls r1, 3 + adds r0, r3, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0808A97A + ldr r0, _0808A98C @ =gUnknown_83CD8E9 + ldrb r5, [r0, 0x1] + ldr r1, _0808A990 @ =gUnknown_83CD940 + ldrb r0, [r2] + adds r0, r1 + ldrb r2, [r0] + ldr r0, _0808A994 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r1, _0808A998 @ =0x0000027d + adds r0, r3, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r3, 0x63 + bl sub_812E51C + ldr r0, _0808A99C @ =gUnknown_83CD8E3 + str r0, [sp] + str r4, [sp, 0x4] + ldr r0, [r6] + ldr r1, _0808A9A0 @ =0x000002c3 + adds r0, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r2, 0xBA + movs r3, 0x63 + bl sub_812E51C +_0808A97A: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808A984: .4byte gUnknown_20397A4 +_0808A988: .4byte 0x00000457 +_0808A98C: .4byte gUnknown_83CD8E9 +_0808A990: .4byte gUnknown_83CD940 +_0808A994: .4byte gUnknown_83CD8E0 +_0808A998: .4byte 0x0000027d +_0808A99C: .4byte gUnknown_83CD8E3 +_0808A9A0: .4byte 0x000002c3 + thumb_func_end sub_808A91C + + thumb_func_start sub_808A9A4 +sub_808A9A4: @ 808A9A4 + push {r4,lr} + ldr r4, _0808A9D8 @ =gUnknown_20397A4 + ldr r1, [r4] + ldr r2, _0808A9DC @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808A9D2 + ldr r2, _0808A9E0 @ =0x00000309 + adds r0, r1, r2 + ldr r1, _0808A9E4 @ =gUnknown_8419D66 + bl sub_8008D84 + ldr r1, [r4] + ldr r2, _0808A9E8 @ =0x0000034f + adds r0, r1, r2 + ldr r2, _0808A9EC @ =0x0000049c + adds r1, r2 + ldr r1, [r1] + movs r2, 0x1 + movs r3, 0x5 + bl sub_8008E78 +_0808A9D2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808A9D8: .4byte gUnknown_20397A4 +_0808A9DC: .4byte 0x00000457 +_0808A9E0: .4byte 0x00000309 +_0808A9E4: .4byte gUnknown_8419D66 +_0808A9E8: .4byte 0x0000034f +_0808A9EC: .4byte 0x0000049c + thumb_func_end sub_808A9A4 + + thumb_func_start sub_808A9F0 +sub_808A9F0: @ 808A9F0 + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _0808AA54 @ =gUnknown_20397A4 + ldr r3, [r6] + ldr r0, _0808AA58 @ =0x00000457 + adds r2, r3, r0 + ldrb r0, [r2] + cmp r0, 0x1 + beq _0808AA4C + ldr r1, _0808AA5C @ =0x0000049c + adds r0, r3, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0808AA4C + ldr r0, _0808AA60 @ =gUnknown_83CD8E9 + ldrb r5, [r0, 0x1] + ldr r1, _0808AA64 @ =gUnknown_83CD940 + ldrb r0, [r2] + adds r0, r1 + ldrb r2, [r0] + ldr r0, _0808AA68 @ =gUnknown_83CD8E0 + str r0, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + ldr r1, _0808AA6C @ =0x00000309 + adds r0, r3, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r3, 0x53 + bl sub_812E51C + ldr r0, _0808AA70 @ =gUnknown_83CD8E3 + str r0, [sp] + str r4, [sp, 0x4] + ldr r0, [r6] + ldr r1, _0808AA74 @ =0x0000034f + adds r0, r1 + str r0, [sp, 0x8] + movs r0, 0x1 + adds r1, r5, 0 + movs r2, 0xBA + movs r3, 0x53 + bl sub_812E51C +_0808AA4C: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808AA54: .4byte gUnknown_20397A4 +_0808AA58: .4byte 0x00000457 +_0808AA5C: .4byte 0x0000049c +_0808AA60: .4byte gUnknown_83CD8E9 +_0808AA64: .4byte gUnknown_83CD940 +_0808AA68: .4byte gUnknown_83CD8E0 +_0808AA6C: .4byte 0x00000309 +_0808AA70: .4byte gUnknown_83CD8E3 +_0808AA74: .4byte 0x0000034f + thumb_func_end sub_808A9F0 + + thumb_func_start sub_808AA78 +sub_808AA78: @ 808AA78 + push {r4,r5,lr} + sub sp, 0x20 + ldr r1, _0808AB00 @ =gUnknown_83CD94C + add r0, sp, 0x10 + movs r2, 0x6 + bl memcpy + add r4, sp, 0x18 + ldr r1, _0808AB04 @ =gUnknown_83CD952 + adds r0, r4, 0 + movs r2, 0x6 + bl memcpy + ldr r0, _0808AB08 @ =gUnknown_20397A4 + ldr r0, [r0] + ldr r1, _0808AB0C @ =0x00000457 + adds r0, r1 + ldrb r0, [r0] + adds r5, r4, 0 + cmp r0, 0x1 + beq _0808AAF8 + movs r4, 0 +_0808AAA4: + ldr r0, _0808AB08 @ =gUnknown_20397A4 + ldr r0, [r0] + lsls r1, r4, 1 + movs r2, 0x96 + lsls r2, 3 + adds r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, 0 + beq _0808AAEE + bl sub_8097218 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 20 + movs r2, 0xE0 + lsls r2, 16 + adds r1, r2 + lsrs r1, 16 + adds r2, r5, r4 + ldrb r2, [r2] + adds r2, 0x3 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0x4 + str r3, [sp] + str r3, [sp, 0x4] + add r0, sp + adds r0, 0x10 + ldrb r0, [r0] + str r0, [sp, 0x8] + movs r0, 0x1 + str r0, [sp, 0xC] + movs r0, 0x3 + movs r3, 0xF + bl sub_8002590 +_0808AAEE: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0808AAA4 +_0808AAF8: + add sp, 0x20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808AB00: .4byte gUnknown_83CD94C +_0808AB04: .4byte gUnknown_83CD952 +_0808AB08: .4byte gUnknown_20397A4 +_0808AB0C: .4byte 0x00000457 + thumb_func_end sub_808AA78 + + thumb_func_start sub_808AB10 +sub_808AB10: @ 808AB10 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _0808AB40 @ =gUnknown_83D3740 + ldr r4, _0808AB44 @ =gUnknown_20397A4 + ldr r1, [r4] + ldr r5, _0808AB48 @ =0x00000396 + adds r1, r5 + movs r2, 0x60 + bl CpuSet + ldr r4, [r4] + ldr r1, _0808AB4C @ =0x000004aa + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0808AB50 + cmp r0, 0x1 + ble _0808AB88 + cmp r0, 0x2 + beq _0808AB68 + cmp r0, 0x3 + beq _0808AB80 + b _0808AB88 + .align 2, 0 +_0808AB40: .4byte gUnknown_83D3740 +_0808AB44: .4byte gUnknown_20397A4 +_0808AB48: .4byte 0x00000396 +_0808AB4C: .4byte 0x000004aa +_0808AB50: + ldr r2, _0808AB64 @ =0x00000396 + adds r0, r4, r2 + movs r1, 0 + str r1, [sp] + movs r1, 0x60 + movs r2, 0 + movs r3, 0 + bl sub_8071660 + b _0808AB88 + .align 2, 0 +_0808AB64: .4byte 0x00000396 +_0808AB68: + adds r0, r4, r5 + movs r2, 0xFA + lsls r2, 1 + movs r3, 0xA5 + lsls r3, 1 + movs r1, 0x9B + lsls r1, 1 + str r1, [sp] + movs r1, 0x60 + bl sub_8071660 + b _0808AB88 +_0808AB80: + adds r0, r4, r5 + movs r1, 0x60 + bl sub_80715F4 +_0808AB88: + ldr r0, _0808ABD8 @ =gUnknown_20397A4 + ldr r0, [r0] + ldr r1, _0808ABDC @ =0x00000396 + adds r0, r1 + movs r1, 0x50 + movs r2, 0xC0 + bl sub_80703EC + movs r4, 0 +_0808AB9A: + ldr r0, _0808ABD8 @ =gUnknown_20397A4 + ldr r0, [r0] + lsls r1, r4, 1 + movs r2, 0x96 + lsls r2, 3 + adds r0, r2 + adds r0, r1 + ldrh r0, [r0] + movs r1, 0 + bl sub_8097028 + adds r1, r0, 0 + lsls r3, r4, 20 + movs r0, 0x80 + lsls r0, 14 + adds r3, r0 + lsrs r3, 16 + movs r0, 0x3 + movs r2, 0x80 + lsls r2, 2 + bl sub_80017D0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x5 + bls _0808AB9A + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808ABD8: .4byte gUnknown_20397A4 +_0808ABDC: .4byte 0x00000396 + thumb_func_end sub_808AB10 + + thumb_func_start sub_808ABE0 +sub_808ABE0: @ 808ABE0 + push {r4,lr} + sub sp, 0x14 + ldr r1, _0808AC5C @ =gUnknown_83CD958 + add r0, sp, 0x10 + movs r2, 0x4 + bl memcpy + ldr r0, _0808AC60 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _0808AC64 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0808AC52 + adds r2, 0x51 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0808AC52 + movs r4, 0 +_0808AC08: + ldr r0, _0808AC60 @ =gUnknown_20397A4 + ldr r0, [r0] + ldr r1, _0808AC68 @ =0x000004ac + adds r0, r1 + adds r0, r4 + ldrb r3, [r0] + cmp r3, 0 + beq _0808AC48 + lsls r1, r4, 18 + movs r2, 0xA0 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + lsls r2, r4, 1 + adds r2, r4 + adds r2, 0x2 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0x2 + str r0, [sp] + str r0, [sp, 0x4] + subs r0, r3, 0x1 + add r0, sp + adds r0, 0x10 + ldrb r0, [r0] + str r0, [sp, 0x8] + movs r0, 0x1 + str r0, [sp, 0xC] + movs r0, 0x3 + movs r3, 0x2 + bl sub_8002590 +_0808AC48: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _0808AC08 +_0808AC52: + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808AC5C: .4byte gUnknown_83CD958 +_0808AC60: .4byte gUnknown_20397A4 +_0808AC64: .4byte 0x00000457 +_0808AC68: .4byte 0x000004ac + thumb_func_end sub_808ABE0 + + thumb_func_start sub_808AC6C +sub_808AC6C: @ 808AC6C + push {lr} + ldr r0, _0808ACB0 @ =gUnknown_83CD320 + movs r1, 0xB0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808ACB4 @ =gUnknown_83CD340 + movs r1, 0xC0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808ACB8 @ =gUnknown_83CD360 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808ACBC @ =gUnknown_83CD380 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0808ACC0 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r0, _0808ACC4 @ =0x000016cc + adds r1, r0 + movs r2, 0x80 + lsls r2, 3 + movs r0, 0x3 + movs r3, 0x80 + bl sub_80017D0 + pop {r0} + bx r0 + .align 2, 0 +_0808ACB0: .4byte gUnknown_83CD320 +_0808ACB4: .4byte gUnknown_83CD340 +_0808ACB8: .4byte gUnknown_83CD360 +_0808ACBC: .4byte gUnknown_83CD380 +_0808ACC0: .4byte gUnknown_20397A4 +_0808ACC4: .4byte 0x000016cc + thumb_func_end sub_808AC6C + + thumb_func_start sub_808ACC8 +sub_808ACC8: @ 808ACC8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8003FA0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_808ACC8 + + thumb_func_start sub_808ACE4 +sub_808ACE4: @ 808ACE4 + push {r4,lr} + sub sp, 0x8 + ldr r0, _0808AD00 @ =gUnknown_20397A4 + ldr r0, [r0] + ldrb r0, [r0, 0x3] + cmp r0, 0x6 + bls _0808ACF4 + b _0808AE44 +_0808ACF4: + lsls r0, 2 + ldr r1, _0808AD04 @ =_0808AD08 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808AD00: .4byte gUnknown_20397A4 +_0808AD04: .4byte _0808AD08 + .align 2, 0 +_0808AD08: + .4byte _0808AD24 + .4byte _0808AD3C + .4byte _0808AD58 + .4byte _0808AD98 + .4byte _0808ADC4 + .4byte _0808AE0C + .4byte _0808AE1C +_0808AD24: + ldr r0, _0808AD34 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r0, _0808AD38 @ =0x000012cc + adds r1, r0 + movs r2, 0x80 + lsls r2, 3 + movs r0, 0x3 + b _0808AD48 + .align 2, 0 +_0808AD34: .4byte gUnknown_20397A4 +_0808AD38: .4byte 0x000012cc +_0808AD3C: + ldr r0, _0808AD50 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _0808AD54 @ =0x000018cc + adds r1, r2 + subs r2, 0xCC + movs r0, 0 +_0808AD48: + movs r3, 0 + bl sub_80017D0 + b _0808AE7A + .align 2, 0 +_0808AD50: .4byte gUnknown_20397A4 +_0808AD54: .4byte 0x000018cc +_0808AD58: + ldr r0, _0808AD6C @ =gUnknown_20397A4 + ldr r2, [r0] + ldr r3, _0808AD70 @ =0x00000457 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0808AD78 + ldr r1, _0808AD74 @ =gUnknown_83CD8B8 + adds r3, 0x6 + b _0808AD7C + .align 2, 0 +_0808AD6C: .4byte gUnknown_20397A4 +_0808AD70: .4byte 0x00000457 +_0808AD74: .4byte gUnknown_83CD8B8 +_0808AD78: + ldr r1, _0808AD90 @ =gUnknown_83CD8CC + ldr r3, _0808AD94 @ =0x0000045d +_0808AD7C: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0x60 + bl sub_80703EC + b _0808AE7A + .align 2, 0 +_0808AD90: .4byte gUnknown_83CD8CC +_0808AD94: .4byte 0x0000045d +_0808AD98: + ldr r0, _0808ADAC @ =gUnknown_20397A4 + ldr r0, [r0] + ldr r1, _0808ADB0 @ =0x00000457 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0808ADB8 + ldr r0, _0808ADB4 @ =gUnknown_83CD2C0 + movs r1, 0x30 + b _0808AE10 + .align 2, 0 +_0808ADAC: .4byte gUnknown_20397A4 +_0808ADB0: .4byte 0x00000457 +_0808ADB4: .4byte gUnknown_83CD2C0 +_0808ADB8: + ldr r0, _0808ADC0 @ =gUnknown_83CD2E0 + movs r1, 0x30 + b _0808AE10 + .align 2, 0 +_0808ADC0: .4byte gUnknown_83CD2E0 +_0808ADC4: + ldr r0, _0808ADE4 @ =gUnknown_20397A4 + ldr r1, [r0] + ldr r2, _0808ADE8 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0808ADF4 + ldr r3, _0808ADEC @ =0x0000045c + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0808AE7A + ldr r0, _0808ADF0 @ =gUnknown_83CD280 + movs r1, 0x10 + b _0808AE10 + .align 2, 0 +_0808ADE4: .4byte gUnknown_20397A4 +_0808ADE8: .4byte 0x00000457 +_0808ADEC: .4byte 0x0000045c +_0808ADF0: .4byte gUnknown_83CD280 +_0808ADF4: + ldr r2, _0808AE04 @ =0x0000045c + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0808AE7A + ldr r0, _0808AE08 @ =gUnknown_83CD2A0 + movs r1, 0x10 + b _0808AE10 + .align 2, 0 +_0808AE04: .4byte 0x0000045c +_0808AE08: .4byte gUnknown_83CD2A0 +_0808AE0C: + ldr r0, _0808AE18 @ =gUnknown_83CD300 + movs r1, 0x40 +_0808AE10: + movs r2, 0x20 + bl sub_80703EC + b _0808AE7A + .align 2, 0 +_0808AE18: .4byte gUnknown_83CD300 +_0808AE1C: + ldr r4, _0808AE38 @ =gUnknown_20397A4 + ldr r1, [r4] + ldr r3, _0808AE3C @ =0x00003bcc + adds r1, r3 + movs r0, 0 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _0808AE40 @ =0x00005bcc + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + b _0808AE7A + .align 2, 0 +_0808AE38: .4byte gUnknown_20397A4 +_0808AE3C: .4byte 0x00003bcc +_0808AE40: .4byte 0x00005bcc +_0808AE44: + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0x1 + b _0808AE86 +_0808AE7A: + ldr r0, _0808AE90 @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x3] + adds r0, 0x1 + strb r0, [r1, 0x3] + movs r0, 0 +_0808AE86: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808AE90: .4byte gUnknown_20397A4 + thumb_func_end sub_808ACE4 + + thumb_func_start sub_808AE94 +sub_808AE94: @ 808AE94 + push {r4-r7,lr} + adds r7, r0, 0 + ldr r0, _0808AECC @ =gUnknown_20397A4 + ldr r0, [r0] + ldr r1, _0808AED0 @ =0x00005bcc + adds r6, r0, r1 + movs r1, 0 +_0808AEA2: + movs r2, 0 + lsls r5, r1, 16 + asrs r1, r5, 16 + lsls r3, r1, 5 + lsls r0, r1, 4 + subs r0, r1 + lsls r4, r0, 1 +_0808AEB0: + lsls r0, r2, 16 + asrs r1, r0, 16 + adds r2, r0, 0 + cmp r1, 0x1D + bgt _0808AED4 + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + adds r1, r4, r1 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + b _0808AEDC + .align 2, 0 +_0808AECC: .4byte gUnknown_20397A4 +_0808AED0: .4byte 0x00005bcc +_0808AED4: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r7] +_0808AEDC: + strh r1, [r0] + movs r1, 0x80 + lsls r1, 9 + adds r0, r2, r1 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x1F + ble _0808AEB0 + adds r0, r5, r1 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _0808AEA2 + movs r0, 0x2 + bl sub_80020BC + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808AE94 + + thumb_func_start sub_808AF04 +sub_808AF04: @ 808AF04 + push {r4-r7,lr} + adds r7, r0, 0 + ldr r0, _0808AF3C @ =gUnknown_20397A4 + ldr r0, [r0] + ldr r1, _0808AF40 @ =0x00003bcc + adds r6, r0, r1 + movs r1, 0 +_0808AF12: + movs r2, 0 + lsls r5, r1, 16 + asrs r1, r5, 16 + lsls r3, r1, 5 + lsls r0, r1, 4 + subs r0, r1 + lsls r4, r0, 1 +_0808AF20: + lsls r0, r2, 16 + asrs r1, r0, 16 + adds r2, r0, 0 + cmp r1, 0x1D + bgt _0808AF44 + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + adds r1, r4, r1 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + b _0808AF4C + .align 2, 0 +_0808AF3C: .4byte gUnknown_20397A4 +_0808AF40: .4byte 0x00003bcc +_0808AF44: + adds r0, r3, r1 + lsls r0, 1 + adds r0, r6 + ldrh r1, [r7] +_0808AF4C: + strh r1, [r0] + movs r1, 0x80 + lsls r1, 9 + adds r0, r2, r1 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x1F + ble _0808AF20 + adds r0, r5, r1 + lsrs r1, r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _0808AF12 + movs r0, 0 + bl sub_80020BC + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_808AF04 + + thumb_func_start sub_808AF74 +sub_808AF74: @ 808AF74 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r0, 0xC0 + mov r8, r0 + movs r2, 0x3 + mov r10, r2 + ldr r2, _0808B080 @ =gUnknown_83CD95C + ldr r4, _0808B084 @ =gUnknown_20397A4 + ldr r1, [r4] + ldr r3, _0808B088 @ =0x00000457 + adds r0, r1, r3 + ldrb r0, [r0] + adds r0, r2 + ldrb r3, [r0] + ldr r0, _0808B08C @ =0x0000045d + adds r1, r0 + ldrb r0, [r1] + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x4 + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x8F + movs r2, 0xF + bl sub_8002554 + ldr r0, [r4] + ldrb r0, [r0, 0x5] + cmp r0, 0 + bne _0808B068 + movs r2, 0x4 + mov r9, r2 + movs r2, 0 + movs r6, 0x1 +_0808AFC2: + ldr r0, _0808B084 @ =gUnknown_20397A4 + ldr r1, [r0] + lsls r0, r2, 16 + asrs r7, r0, 16 + adds r1, 0x11 + adds r1, r7 + ldrb r0, [r1] + cmp r0, 0 + beq _0808B044 + mov r3, r9 + lsls r5, r3, 24 + lsrs r5, 24 + str r6, [sp] + str r6, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + movs r0, 0x3 + mov r1, r8 + adds r2, r5, 0 + movs r3, 0x10 + bl sub_8002554 + mov r1, r8 + adds r1, 0x1 + lsls r1, 16 + lsrs r1, 16 + mov r4, r9 + adds r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + str r6, [sp] + str r6, [sp, 0x4] + mov r2, r10 + str r2, [sp, 0x8] + movs r0, 0x3 + adds r2, r4, 0 + movs r3, 0x10 + bl sub_8002554 + mov r1, r8 + adds r1, 0x10 + lsls r1, 16 + lsrs r1, 16 + str r6, [sp] + str r6, [sp, 0x4] + mov r3, r10 + str r3, [sp, 0x8] + movs r0, 0x3 + adds r2, r5, 0 + movs r3, 0x11 + bl sub_8002554 + mov r1, r8 + adds r1, 0x11 + lsls r1, 16 + lsrs r1, 16 + str r6, [sp] + str r6, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + movs r0, 0x3 + adds r2, r4, 0 + movs r3, 0x11 + bl sub_8002554 +_0808B044: + adds r0, r7, 0x1 + lsls r0, 16 + mov r1, r8 + adds r1, 0x2 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + mov r2, r9 + lsls r1, r2, 16 + movs r3, 0xC0 + lsls r3, 10 + adds r1, r3 + lsrs r1, 16 + mov r9, r1 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _0808AFC2 +_0808B068: + movs r0, 0x3 + bl sub_80020BC + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808B080: .4byte gUnknown_83CD95C +_0808B084: .4byte gUnknown_20397A4 +_0808B088: .4byte 0x00000457 +_0808B08C: .4byte 0x0000045d + thumb_func_end sub_808AF74 + + thumb_func_start sub_808B090 +sub_808B090: @ 808B090 + push {r4-r6,lr} + sub sp, 0xC + ldr r6, _0808B138 @ =gUnknown_20397A4 + ldr r1, [r6] + ldr r2, _0808B13C @ =0x00000457 + adds r0, r1, r2 + ldrb r5, [r0] + cmp r5, 0x1 + beq _0808B144 + ldrb r0, [r1, 0x10] + cmp r0, 0 + beq _0808B0CE + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x8D + movs r2, 0x1A + movs r3, 0x9 + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x9D + movs r2, 0x1A + movs r3, 0xA + bl sub_8002554 +_0808B0CE: + ldr r0, [r6] + movs r1, 0x93 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0808B102 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x8D + movs r2, 0x15 + movs r3, 0xD + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x9D + movs r2, 0x15 + movs r3, 0xE + bl sub_8002554 +_0808B102: + ldr r0, [r6] + ldr r2, _0808B140 @ =0x0000049c + adds r0, r2 + ldr r0, [r0] + cmp r0, 0 + beq _0808B170 + movs r4, 0x1 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x8D + movs r2, 0x1B + movs r3, 0xB + bl sub_8002554 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x9D + movs r2, 0x1B + movs r3, 0xC + bl sub_8002554 + b _0808B170 + .align 2, 0 +_0808B138: .4byte gUnknown_20397A4 +_0808B13C: .4byte 0x00000457 +_0808B140: .4byte 0x0000049c +_0808B144: + ldrb r0, [r1, 0x10] + cmp r0, 0 + beq _0808B170 + str r5, [sp] + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x8D + movs r2, 0x1A + movs r3, 0x9 + bl sub_8002554 + str r5, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x9D + movs r2, 0x1A + movs r3, 0xA + bl sub_8002554 +_0808B170: + movs r0, 0x3 + bl sub_80020BC + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_808B090 + + thumb_func_start sub_808B180 +sub_808B180: @ 808B180 + push {lr} + ldr r3, _0808B1B4 @ =gUnknown_20397A4 + ldr r1, [r3] + ldrb r0, [r1, 0x6] + adds r0, 0x1 + strb r0, [r1, 0x6] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3C + bls _0808B1AE + ldr r1, [r3] + movs r0, 0 + strb r0, [r1, 0x6] + ldr r2, [r3] + ldrb r0, [r2, 0x7] + movs r1, 0x1 + eors r0, r1 + strb r0, [r2, 0x7] + ldr r0, [r3] + ldr r1, _0808B1B8 @ =0x00007bce + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_0808B1AE: + pop {r0} + bx r0 + .align 2, 0 +_0808B1B4: .4byte gUnknown_20397A4 +_0808B1B8: .4byte 0x00007bce + thumb_func_end sub_808B180 + + thumb_func_start sub_808B1BC +sub_808B1BC: @ 808B1BC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0808B1D0 @ =gUnknown_2039624 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 5 + adds r1, r2 + ldrb r0, [r1, 0x1] + bx lr + .align 2, 0 +_0808B1D0: .4byte gUnknown_2039624 + thumb_func_end sub_808B1BC + + thumb_func_start sub_808B1D4 +sub_808B1D4: @ 808B1D4 + push {r4,lr} + ldr r4, _0808B1F4 @ =sub_808B21C + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + ldr r0, _0808B1F8 @ =sub_8089034 + bl sub_8000700 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808B1F4: .4byte sub_808B21C +_0808B1F8: .4byte sub_8089034 + thumb_func_end sub_808B1D4 + + thumb_func_start sub_808B1FC +sub_808B1FC: @ 808B1FC + push {lr} + ldr r0, _0808B210 @ =sub_808B21C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0808B214 + movs r0, 0 + b _0808B216 + .align 2, 0 +_0808B210: .4byte sub_808B21C +_0808B214: + movs r0, 0x1 +_0808B216: + pop {r1} + bx r1 + thumb_func_end sub_808B1FC + + thumb_func_start sub_808B21C +sub_808B21C: @ 808B21C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0808B24C @ =gUnknown_83CD908 + ldr r2, _0808B250 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0808B22E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _0808B22E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B24C: .4byte gUnknown_83CD908 +_0808B250: .4byte gUnknown_3005090 + thumb_func_end sub_808B21C + + thumb_func_start sub_808B254 +sub_808B254: @ 808B254 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x3 + bl sub_80019D0 + bl sub_8087E64 + bl sub_8087EA4 + movs r1, 0 + ldr r0, _0808B290 @ =gUnknown_2038700 + movs r2, 0 + movs r3, 0xF0 + lsls r3, 3 + adds r0, r3 +_0808B278: + strh r2, [r0] + adds r0, 0x2 + adds r1, 0x1 + cmp r1, 0x9F + bls _0808B278 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808B290: .4byte gUnknown_2038700 + thumb_func_end sub_808B254 + + thumb_func_start sub_808B294 +sub_808B294: @ 808B294 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + ldr r0, _0808B2C0 @ =gUnknown_20397A4 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0x9] + mov r0, r8 + ldrh r1, [r0, 0xA] + movs r2, 0xA + ldrsh r0, [r0, r2] + cmp r0, 0x4C + ble _0808B2C4 + movs r0, 0x4D + mov r3, r8 + strh r0, [r3, 0xA] + b _0808B2CA + .align 2, 0 +_0808B2C0: .4byte gUnknown_20397A4 +_0808B2C4: + adds r0, r1, 0x7 + mov r4, r8 + strh r0, [r4, 0xA] +_0808B2CA: + ldr r0, _0808B3B4 @ =gUnknown_20397A4 + ldr r0, [r0] + mov r2, r8 + ldrh r1, [r2, 0xA] + ldr r3, _0808B3B8 @ =0x00007bcc + adds r0, r3 + strh r1, [r0] + ldrh r0, [r2, 0xA] + bl sub_8089BD8 + mov r4, r8 + movs r0, 0xA + ldrsh r7, [r4, r0] + movs r0, 0xA0 + subs r0, r7 + mov r9, r0 + subs r4, r0, r7 + negs r0, r7 + lsls r6, r0, 16 + movs r0, 0xA0 + lsls r0, 16 + adds r1, r4, 0 + bl __udivsi3 + adds r5, r0, 0 + ldr r1, _0808B3BC @ =0xffff0000 + adds r5, r1 + adds r0, r5, 0 + muls r0, r4 + adds r0, r6, r0 + str r0, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + bl __udivsi3 + mov r10, r0 + lsls r5, 1 + movs r2, 0 + cmp r2, r7 + bcs _0808B334 + ldr r3, _0808B3C0 @ =gUnknown_2038700 +_0808B31C: + lsls r0, r2, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r3 + negs r2, r0 + strh r2, [r1] + adds r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, r7 + bcc _0808B31C +_0808B334: + lsls r1, r2, 16 + mov r3, r9 + lsls r0, r3, 16 + asrs r3, r0, 16 + ldr r4, _0808B3B4 @ =gUnknown_20397A4 + mov r9, r4 + ldr r4, [sp] + lsrs r7, r4, 16 + cmp r1, r0 + bge _0808B36C + ldr r0, _0808B3C0 @ =gUnknown_2038700 + mov r12, r0 + adds r4, r3, 0 +_0808B34E: + lsrs r3, r6, 16 + adds r6, r5 + mov r2, r10 + subs r5, r2 + asrs r0, r1, 16 + lsls r1, r0, 1 + add r1, r12 + strh r3, [r1] + adds r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, r4 + blt _0808B34E +_0808B36C: + adds r3, r7, 0 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _0808B38A + ldr r2, _0808B3C0 @ =gUnknown_2038700 +_0808B378: + asrs r0, r1, 16 + lsls r1, r0, 1 + adds r1, r2 + strh r3, [r1] + adds r0, 0x1 + lsls r1, r0, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _0808B378 +_0808B38A: + mov r3, r9 + ldr r0, [r3] + movs r1, 0x1 + strb r1, [r0, 0x9] + mov r4, r8 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x4C + ble _0808B3A2 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0808B3A2: + movs r0, 0 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0808B3B4: .4byte gUnknown_20397A4 +_0808B3B8: .4byte 0x00007bcc +_0808B3BC: .4byte 0xffff0000 +_0808B3C0: .4byte gUnknown_2038700 + thumb_func_end sub_808B294 + + thumb_func_start sub_808B3C4 +sub_808B3C4: @ 808B3C4 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + ldr r4, _0808B3F0 @ =gUnknown_20397A4 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x9] + bl sub_8058244 + adds r2, r4, 0 + cmp r0, 0x1 + beq _0808B4C4 +_0808B3DC: + ldr r3, [r2] + ldrb r0, [r3, 0x4] + cmp r0, 0x4 + bhi _0808B4A0 + lsls r0, 2 + ldr r1, _0808B3F4 @ =_0808B3F8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808B3F0: .4byte gUnknown_20397A4 +_0808B3F4: .4byte _0808B3F8 + .align 2, 0 +_0808B3F8: + .4byte _0808B40C + .4byte _0808B428 + .4byte _0808B448 + .4byte _0808B46C + .4byte _0808B48A +_0808B40C: + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + b _0808B4B2 +_0808B428: + ldr r0, [r2] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _0808B43C + bl sub_8089E40 + lsls r0, 24 + cmp r0, 0 + bne _0808B4B2 + b _0808B4C4 +_0808B43C: + bl sub_8089DC8 + lsls r0, 24 + cmp r0, 0 + bne _0808B4B2 + b _0808B4C4 +_0808B448: + ldr r0, _0808B45C @ =gUnknown_20397A4 + ldr r1, [r0] + ldrb r0, [r1, 0x8] + cmp r0, 0 + bne _0808B464 + ldr r2, _0808B460 @ =0x0000096c + adds r0, r1, r2 + bl sub_808AF04 + b _0808B4B2 + .align 2, 0 +_0808B45C: .4byte gUnknown_20397A4 +_0808B460: .4byte 0x0000096c +_0808B464: + movs r0, 0x1 + bl sub_808ACC8 + b _0808B4B2 +_0808B46C: + ldr r0, _0808B47C @ =gUnknown_20397A4 + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + bne _0808B480 + bl sub_808B090 + b _0808B4B2 + .align 2, 0 +_0808B47C: .4byte gUnknown_20397A4 +_0808B480: + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + b _0808B4B2 +_0808B48A: + ldr r0, _0808B49C @ =gUnknown_20397A4 + ldr r0, [r0] + ldrb r0, [r0, 0x8] + cmp r0, 0 + beq _0808B4B2 + bl sub_808B838 + b _0808B4B2 + .align 2, 0 +_0808B49C: .4byte gUnknown_20397A4 +_0808B4A0: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x8] + movs r0, 0x1 + strb r0, [r3, 0x9] + ldr r0, [r2] + strb r1, [r0, 0x4] + b _0808B4C4 +_0808B4B2: + ldr r2, _0808B4D0 @ =gUnknown_20397A4 + ldr r1, [r2] + ldrb r0, [r1, 0x4] + adds r0, 0x1 + strb r0, [r1, 0x4] + ldr r0, _0808B4D4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _0808B3DC +_0808B4C4: + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808B4D0: .4byte gUnknown_20397A4 +_0808B4D4: .4byte gUnknown_3003F64 + thumb_func_end sub_808B3C4 + + thumb_func_start sub_808B4D8 +sub_808B4D8: @ 808B4D8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _0808B534 @ =gUnknown_20397A4 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x9] + ldr r0, [r4] + ldrb r0, [r0, 0x8] + cmp r0, 0 + beq _0808B50A + movs r0, 0x2 + bl sub_808ACC8 + ldr r0, [r4] + ldr r1, _0808B538 @ =0x00000e1c + adds r0, r1 + bl sub_808AE94 + ldr r0, [r4] + ldr r1, _0808B53C @ =0x000004bc + adds r0, r1 + bl sub_808AF04 + bl sub_808AF74 +_0808B50A: + movs r0, 0x1 + bl sub_808ACC8 + ldr r2, [r4] + ldrb r0, [r2, 0x8] + movs r1, 0x1 + eors r0, r1 + strb r0, [r2, 0x8] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + ldr r1, [r4] + movs r0, 0x1 + strb r0, [r1, 0x9] + movs r0, 0xF3 + bl sub_80722CC + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808B534: .4byte gUnknown_20397A4 +_0808B538: .4byte 0x00000e1c +_0808B53C: .4byte 0x000004bc + thumb_func_end sub_808B4D8 + + thumb_func_start sub_808B540 +sub_808B540: @ 808B540 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + ldr r0, _0808B568 @ =gUnknown_20397A4 + ldr r0, [r0] + movs r2, 0 + strb r2, [r0, 0x9] + mov r0, r8 + ldrh r1, [r0, 0xA] + movs r3, 0xA + ldrsh r0, [r0, r3] + cmp r0, 0x5 + bgt _0808B56C + mov r4, r8 + strh r2, [r4, 0xA] + b _0808B572 + .align 2, 0 +_0808B568: .4byte gUnknown_20397A4 +_0808B56C: + subs r0, r1, 0x5 + mov r1, r8 + strh r0, [r1, 0xA] +_0808B572: + ldr r0, _0808B65C @ =gUnknown_20397A4 + ldr r0, [r0] + mov r2, r8 + ldrh r1, [r2, 0xA] + ldr r3, _0808B660 @ =0x00007bcc + adds r0, r3 + strh r1, [r0] + ldrh r0, [r2, 0xA] + bl sub_8089BD8 + mov r4, r8 + movs r0, 0xA + ldrsh r7, [r4, r0] + movs r0, 0xA0 + subs r0, r7 + mov r9, r0 + subs r4, r0, r7 + negs r0, r7 + lsls r6, r0, 16 + movs r0, 0xA0 + lsls r0, 16 + adds r1, r4, 0 + bl __udivsi3 + adds r5, r0, 0 + ldr r1, _0808B664 @ =0xffff0000 + adds r5, r1 + adds r0, r5, 0 + muls r0, r4 + adds r0, r6, r0 + str r0, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + bl __udivsi3 + mov r10, r0 + lsrs r5, 1 + movs r2, 0 + cmp r2, r7 + bcs _0808B5DC + ldr r3, _0808B668 @ =gUnknown_2038700 +_0808B5C4: + lsls r0, r2, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r3 + negs r2, r0 + strh r2, [r1] + adds r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + cmp r0, r7 + bcc _0808B5C4 +_0808B5DC: + lsls r1, r2, 16 + mov r3, r9 + lsls r0, r3, 16 + asrs r3, r0, 16 + ldr r4, _0808B65C @ =gUnknown_20397A4 + mov r9, r4 + ldr r4, [sp] + lsrs r7, r4, 16 + cmp r1, r0 + bge _0808B612 + ldr r0, _0808B668 @ =gUnknown_2038700 + mov r12, r0 + adds r4, r3, 0 +_0808B5F6: + lsrs r3, r6, 16 + adds r6, r5 + add r5, r10 + asrs r0, r1, 16 + lsls r1, r0, 1 + add r1, r12 + strh r3, [r1] + adds r0, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, r4 + blt _0808B5F6 +_0808B612: + adds r3, r7, 0 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _0808B630 + ldr r2, _0808B668 @ =gUnknown_2038700 +_0808B61E: + asrs r0, r1, 16 + lsls r1, r0, 1 + adds r1, r2 + strh r3, [r1] + adds r0, 0x1 + lsls r1, r0, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _0808B61E +_0808B630: + mov r1, r9 + ldr r0, [r1] + movs r1, 0x1 + strb r1, [r0, 0x9] + mov r2, r8 + movs r3, 0xA + ldrsh r0, [r2, r3] + cmp r0, 0 + bgt _0808B648 + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] +_0808B648: + movs r0, 0 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0808B65C: .4byte gUnknown_20397A4 +_0808B660: .4byte 0x00007bcc +_0808B664: .4byte 0xffff0000 +_0808B668: .4byte gUnknown_2038700 + thumb_func_end sub_808B540 + + thumb_func_start sub_808B66C +sub_808B66C: @ 808B66C + push {lr} + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0 + bl sub_8000700 + ldr r0, _0808B694 @ =sub_808B21C + bl sub_8077688 + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0808B694: .4byte sub_808B21C + thumb_func_end sub_808B66C + + thumb_func_start sub_808B698 +sub_808B698: @ 808B698 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _0808B6C0 @ =gUnknown_20397A4 + ldr r0, _0808B6C4 @ =0x00007bd0 + bl sub_8002BB0 + str r0, [r5] + movs r1, 0x8B + lsls r1, 3 + adds r0, r1 + str r4, [r0] + bl sub_811B0D0 + adds r1, r0, 0 + cmp r1, 0x1 + bne _0808B6C8 + ldr r0, [r5] + strb r1, [r0, 0x5] + b _0808B6CE + .align 2, 0 +_0808B6C0: .4byte gUnknown_20397A4 +_0808B6C4: .4byte 0x00007bd0 +_0808B6C8: + ldr r1, [r5] + movs r0, 0 + strb r0, [r1, 0x5] +_0808B6CE: + ldr r2, _0808B6F0 @ =gUnknown_20397A4 + ldr r0, [r2] + ldr r1, _0808B6F4 @ =0x00007bcf + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _0808B6F8 @ =0x0000045c + adds r0, r1 + bl sub_80898E8 + ldr r0, _0808B6FC @ =sub_80895B8 + bl sub_8000544 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B6F0: .4byte gUnknown_20397A4 +_0808B6F4: .4byte 0x00007bcf +_0808B6F8: .4byte 0x0000045c +_0808B6FC: .4byte sub_80895B8 + thumb_func_end sub_808B698 + + thumb_func_start sub_808B700 +sub_808B700: @ 808B700 + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _0808B758 @ =gUnknown_20397A4 + ldr r0, _0808B75C @ =0x00007bd0 + bl sub_8002BB0 + str r0, [r5] + movs r2, 0x8B + lsls r2, 3 + adds r1, r0, r2 + str r6, [r1] + movs r1, 0x1 + strb r1, [r0, 0x5] + ldr r0, [r5] + ldr r1, _0808B760 @ =0x0000045c + adds r0, r1 + ldr r2, _0808B764 @ =gUnknown_2039624 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 5 + adds r1, r2 + movs r2, 0x60 + bl memcpy + ldr r1, [r5] + ldr r2, _0808B768 @ =gUnknown_202273C + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x1A] + ldr r2, _0808B76C @ =0x00007bcf + adds r1, r2 + strb r0, [r1] + ldr r0, _0808B770 @ =sub_80895B8 + bl sub_8000544 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0808B758: .4byte gUnknown_20397A4 +_0808B75C: .4byte 0x00007bd0 +_0808B760: .4byte 0x0000045c +_0808B764: .4byte gUnknown_2039624 +_0808B768: .4byte gUnknown_202273C +_0808B76C: .4byte 0x00007bcf +_0808B770: .4byte sub_80895B8 + thumb_func_end sub_808B700 + + thumb_func_start sub_808B774 +sub_808B774: @ 808B774 + push {r4,r5,lr} + ldr r4, _0808B7B0 @ =gUnknown_20397A4 + ldr r0, [r4] + movs r5, 0 + strb r5, [r0] + ldr r1, [r4] + ldr r0, _0808B7B4 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x12] + strb r0, [r1, 0x6] + ldr r0, [r4] + strb r5, [r0, 0x7] + ldr r0, [r4] + strb r5, [r0, 0x8] + ldr r0, [r4] + ldr r1, _0808B7B8 @ =0x00000456 + adds r0, r1 + strb r5, [r0] + bl sub_808B800 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + bne _0808B7C0 + ldr r0, [r4] + ldr r2, _0808B7BC @ =0x00000457 + adds r0, r2 + strb r1, [r0] + b _0808B7C8 + .align 2, 0 +_0808B7B0: .4byte gUnknown_20397A4 +_0808B7B4: .4byte gUnknown_300500C +_0808B7B8: .4byte 0x00000456 +_0808B7BC: .4byte 0x00000457 +_0808B7C0: + ldr r0, [r4] + ldr r3, _0808B7F4 @ =0x00000457 + adds r0, r3 + strb r5, [r0] +_0808B7C8: + movs r4, 0 + ldr r5, _0808B7F8 @ =gUnknown_20397A4 +_0808B7CC: + movs r0, 0xD + muls r0, r4 + adds r0, 0x19 + ldr r1, [r5] + adds r0, r1, r0 + lsls r2, r4, 1 + ldr r3, _0808B7FC @ =0x00000484 + adds r1, r3 + adds r1, r2 + ldrh r1, [r1] + bl sub_80BD850 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _0808B7CC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B7F4: .4byte 0x00000457 +_0808B7F8: .4byte gUnknown_20397A4 +_0808B7FC: .4byte 0x00000484 + thumb_func_end sub_808B774 + + thumb_func_start sub_808B800 +sub_808B800: @ 808B800 + push {lr} + ldr r0, _0808B810 @ =gUnknown_20397A4 + ldr r0, [r0] + cmp r0, 0 + bne _0808B818 + ldr r0, _0808B814 @ =gUnknown_81E9F10 + b _0808B81C + .align 2, 0 +_0808B810: .4byte gUnknown_20397A4 +_0808B814: .4byte gUnknown_81E9F10 +_0808B818: + ldr r1, _0808B82C @ =0x00000494 + adds r0, r1 +_0808B81C: + ldrb r0, [r0] + subs r0, 0x4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _0808B830 + movs r0, 0x1 + b _0808B832 + .align 2, 0 +_0808B82C: .4byte 0x00000494 +_0808B830: + movs r0, 0 +_0808B832: + pop {r1} + bx r1 + thumb_func_end sub_808B800 + + thumb_func_start sub_808B838 +sub_808B838: @ 808B838 + push {r4-r7,lr} + sub sp, 0x8 + ldr r2, _0808B888 @ =gUnknown_83CD8F4 + ldr r5, _0808B88C @ =gUnknown_20397A4 + ldr r0, [r5] + ldr r6, _0808B890 @ =0x0000045c + adds r1, r0, r6 + ldr r7, _0808B894 @ =0x00000457 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 1 + ldrb r1, [r1] + adds r0, r1 + adds r0, r2 + ldrb r4, [r0] + bl sub_811B0D0 + cmp r0, 0x1 + bne _0808B8A4 + ldr r0, _0808B898 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0808B8A4 + ldr r0, [r5] + ldr r1, _0808B89C @ =0x000004ab + adds r0, r1 + ldrb r4, [r0] + adds r0, r4, 0 + bl sub_804454C + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0808B8A0 @ =gUnknown_83CD8EC + ldr r1, [r5] + adds r2, r1, r6 + ldrb r3, [r2] + lsls r3, 1 + adds r1, r7 + b _0808B8CC + .align 2, 0 +_0808B888: .4byte gUnknown_83CD8F4 +_0808B88C: .4byte gUnknown_20397A4 +_0808B890: .4byte 0x0000045c +_0808B894: .4byte 0x00000457 +_0808B898: .4byte gUnknown_3003F64 +_0808B89C: .4byte 0x000004ab +_0808B8A0: .4byte gUnknown_83CD8EC +_0808B8A4: + ldr r6, _0808B8EC @ =gUnknown_20397A4 + ldr r1, [r6] + ldr r2, _0808B8F0 @ =0x00000457 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0808B8FC + adds r0, r4, 0 + bl sub_804454C + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0808B8F4 @ =gUnknown_83CD8EC + ldr r1, [r6] + ldr r3, _0808B8F8 @ =0x0000045c + adds r2, r1, r3 + ldrb r3, [r2] + lsls r3, 1 + ldr r2, _0808B8F0 @ =0x00000457 + adds r1, r2 +_0808B8CC: + ldrb r1, [r1] + lsls r1, 2 + adds r3, r1 + adds r1, r3, r4 + ldrb r2, [r1] + adds r4, 0x1 + adds r3, r4 + ldrb r3, [r3] + movs r1, 0x8 + str r1, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + movs r1, 0x1 + bl sub_810C330 + b _0808B938 + .align 2, 0 +_0808B8EC: .4byte gUnknown_20397A4 +_0808B8F0: .4byte 0x00000457 +_0808B8F4: .4byte gUnknown_83CD8EC +_0808B8F8: .4byte 0x0000045c +_0808B8FC: + ldr r4, _0808B940 @ =0x0000045c + adds r0, r1, r4 + ldrb r0, [r0] + movs r1, 0x1 + bl sub_810C374 + lsls r0, 16 + lsrs r0, 16 + ldr r5, _0808B944 @ =gUnknown_83CD8EC + ldr r1, [r6] + adds r4, r1, r4 + ldrb r3, [r4] + lsls r3, 1 + ldr r2, _0808B948 @ =0x00000457 + adds r1, r2 + ldrb r1, [r1] + lsls r1, 2 + adds r3, r1 + adds r1, r3, r5 + ldrb r2, [r1] + adds r5, 0x1 + adds r3, r5 + ldrb r3, [r3] + movs r1, 0x8 + str r1, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + movs r1, 0x1 + bl sub_810C330 +_0808B938: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808B940: .4byte 0x0000045c +_0808B944: .4byte gUnknown_83CD8EC +_0808B948: .4byte 0x00000457 + thumb_func_end sub_808B838 + + thumb_func_start sub_808B94C +sub_808B94C: @ 808B94C + push {lr} + bl sub_808B698 + ldr r0, _0808B95C @ =sub_80895B8 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0808B95C: .4byte sub_80895B8 + thumb_func_end sub_808B94C + + thumb_func_start sub_808B960 +sub_808B960: @ 808B960 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0808B984 @ =gUnknown_2039624 + ldr r1, _0808B988 @ =gUnknown_83CD960 + movs r2, 0x60 + bl memcpy + movs r0, 0 + adds r1, r4, 0 + bl sub_808B700 + ldr r0, _0808B98C @ =sub_80895B8 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808B984: .4byte gUnknown_2039624 +_0808B988: .4byte gUnknown_83CD960 +_0808B98C: .4byte sub_80895B8 + thumb_func_end sub_808B960 + + thumb_func_start sub_808B990 +sub_808B990: @ 808B990 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0808B9B4 @ =gUnknown_2039624 + ldr r1, _0808B9B8 @ =gUnknown_83CD9C0 + movs r2, 0x60 + bl memcpy + movs r0, 0 + adds r1, r4, 0 + bl sub_808B700 + ldr r0, _0808B9BC @ =sub_80895B8 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808B9B4: .4byte gUnknown_2039624 +_0808B9B8: .4byte gUnknown_83CD9C0 +_0808B9BC: .4byte sub_80895B8 + thumb_func_end sub_808B990 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/trainer_see.s b/asm/trainer_see.s new file mode 100644 index 000000000..1d1c4b745 --- /dev/null +++ b/asm/trainer_see.s @@ -0,0 +1,1628 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8081B30 +sub_8081B30: @ 8081B30 + push {r4,r5,lr} + bl sub_8111C2C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08081B44 + b _08081B78 +_08081B40: + movs r0, 0x1 + b _08081B7A +_08081B44: + movs r4, 0 + ldr r5, _08081B80 @ =gUnknown_2036E38 +_08081B48: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08081B6E + ldrb r0, [r1, 0x7] + cmp r0, 0x1 + beq _08081B62 + cmp r0, 0x3 + bne _08081B6E +_08081B62: + adds r0, r4, 0 + bl sub_8081B84 + lsls r0, 24 + cmp r0, 0 + bne _08081B40 +_08081B6E: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08081B48 +_08081B78: + movs r0, 0 +_08081B7A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08081B80: .4byte gUnknown_2036E38 + thumb_func_end sub_8081B30 + + thumb_func_start sub_8081B84 +sub_8081B84: @ 8081B84 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl sub_805FC38 + adds r6, r0, 0 + bl sub_8080378 + cmp r0, 0 + bne _08081BE4 + lsls r4, r5, 3 + adds r0, r4, r5 + lsls r0, 2 + ldr r1, _08081BE0 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_8081BEC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + beq _08081BE4 + ldrb r0, [r6, 0x1] + cmp r0, 0x4 + bne _08081BC0 + bl sub_8040CC4 + lsls r0, 24 + cmp r0, 0 + bne _08081BE4 +_08081BC0: + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8080334 + adds r0, r4, r5 + lsls r0, 2 + ldr r1, _08081BE0 @ =gUnknown_2036E38 + adds r0, r1 + subs r1, r7, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl sub_8081E68 + movs r0, 0x1 + b _08081BE6 + .align 2, 0 +_08081BE0: .4byte gUnknown_2036E38 +_08081BE4: + movs r0, 0 +_08081BE6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8081B84 + + thumb_func_start sub_8081BEC +sub_8081BEC: @ 8081BEC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + ldrb r0, [r7, 0x7] + mov r8, r4 + cmp r0, 0x1 + bne _08081C4C + ldr r1, _08081C44 @ =gUnknown_83C7248 + ldrb r0, [r7, 0x18] + lsls r0, 28 + lsrs r0, 26 + subs r0, 0x4 + adds r0, r1 + ldrb r1, [r7, 0x1D] + mov r2, sp + movs r3, 0 + ldrsh r2, [r2, r3] + movs r5, 0 + ldrsh r3, [r4, r5] + ldr r4, [r0] + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r2, [r7, 0x18] + lsls r2, 28 + lsrs r2, 28 + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_8081DB8 + lsls r0, 24 + lsrs r0, 24 + b _08081C8C + .align 2, 0 +_08081C44: .4byte gUnknown_83C7248 +_08081C48: + adds r0, r6, 0 + b _08081C8C +_08081C4C: + movs r5, 0 +_08081C4E: + ldr r0, _08081C98 @ =gUnknown_83C7248 + lsls r4, r5, 2 + adds r4, r0 + ldrb r1, [r7, 0x1D] + mov r0, sp + movs r6, 0 + ldrsh r2, [r0, r6] + mov r0, r8 + movs r6, 0 + ldrsh r3, [r0, r6] + ldr r4, [r4] + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_8081DB8 + lsls r0, 24 + cmp r0, 0 + bne _08081C48 + adds r5, r4, 0 + cmp r5, 0x3 + bls _08081C4E + movs r0, 0 +_08081C8C: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08081C98: .4byte gUnknown_83C7248 + thumb_func_end sub_8081BEC + + thumb_func_start sub_8081C9C +sub_8081C9C: @ 8081C9C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r3, 16 + lsrs r5, r3, 16 + movs r3, 0x10 + ldrsh r0, [r4, r3] + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + bne _08081CE4 + lsls r0, r5, 16 + asrs r2, r0, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r2, r0 + ble _08081CE4 + lsls r1, 16 + asrs r1, 16 + adds r0, r1 + cmp r2, r0 + bgt _08081CE4 + cmp r1, 0x3 + ble _08081CDA + bl sub_805DF30 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _08081CE4 +_08081CDA: + ldrb r0, [r4, 0x12] + subs r0, r5, r0 + lsls r0, 24 + lsrs r0, 24 + b _08081CE6 +_08081CE4: + movs r0, 0 +_08081CE6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8081C9C + + thumb_func_start sub_8081CEC +sub_8081CEC: @ 8081CEC + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r3, 16 + lsrs r5, r3, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + bne _08081D26 + lsls r0, r5, 16 + asrs r2, r0, 16 + ldrh r3, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + bge _08081D26 + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + subs r1, r0 + cmp r2, r1 + blt _08081D26 + subs r0, r3, r5 + lsls r0, 24 + lsrs r0, 24 + b _08081D28 +_08081D26: + movs r0, 0 +_08081D28: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8081CEC + + thumb_func_start sub_8081D30 +sub_8081D30: @ 8081D30 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + movs r1, 0x12 + ldrsh r0, [r4, r1] + lsls r3, 16 + asrs r3, 16 + cmp r0, r3 + bne _08081D6A + lsls r0, r5, 16 + asrs r3, r0, 16 + ldrh r2, [r4, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _08081D6A + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + subs r1, r0 + cmp r3, r1 + blt _08081D6A + subs r0, r2, r5 + lsls r0, 24 + lsrs r0, 24 + b _08081D6C +_08081D6A: + movs r0, 0 +_08081D6C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8081D30 + + thumb_func_start sub_8081D74 +sub_8081D74: @ 8081D74 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + movs r1, 0x12 + ldrsh r0, [r4, r1] + lsls r3, 16 + asrs r3, 16 + cmp r0, r3 + bne _08081DAE + lsls r0, r5, 16 + asrs r3, r0, 16 + ldrh r2, [r4, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _08081DAE + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + adds r1, r0 + cmp r3, r1 + bgt _08081DAE + subs r0, r5, r2 + lsls r0, 24 + lsrs r0, 24 + b _08081DB0 +_08081DAE: + movs r0, 0 +_08081DB0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8081D74 + + thumb_func_start sub_8081DB8 +sub_8081DB8: @ 8081DB8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r7, r2, 24 + cmp r1, 0 + beq _08081E54 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r1, sp + adds r1, 0x2 + strh r0, [r1] + movs r4, 0 + mov r8, r1 + mov r5, r9 + subs r5, 0x1 + cmp r4, r5 + bgt _08081E26 +_08081DEC: + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + adds r0, r6, 0 + adds r3, r7, 0 + bl sub_8063770 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08081E12 + movs r0, 0x2 + negs r0, r0 + ands r1, r0 + cmp r1, 0 + bne _08081E54 +_08081E12: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + mov r1, sp + mov r2, r8 + bl sub_8063A20 + cmp r4, r5 + ble _08081DEC +_08081E26: + ldrb r4, [r6, 0x19] + lsls r5, r4, 28 + lsrs r5, 28 + lsrs r4, 4 + movs r0, 0 + strb r0, [r6, 0x19] + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + adds r0, r6, 0 + adds r3, r7, 0 + bl sub_80636AC + lsls r0, 24 + lsrs r1, r0, 24 + lsls r4, 4 + orrs r5, r4 + strb r5, [r6, 0x19] + cmp r1, 0x4 + beq _08081E58 +_08081E54: + movs r0, 0 + b _08081E5A +_08081E58: + mov r0, r9 +_08081E5A: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8081DB8 + + thumb_func_start sub_8081E68 +sub_8081E68: @ 8081E68 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r0, _08081E94 @ =sub_8081EDC + movs r1, 0x50 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08081E98 @ =gUnknown_3005090 + adds r1, r0 + lsrs r0, r5, 16 + strh r0, [r1, 0xA] + strh r5, [r1, 0xC] + strh r4, [r1, 0xE] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08081E94: .4byte sub_8081EDC +_08081E98: .4byte gUnknown_3005090 + thumb_func_end sub_8081E68 + + thumb_func_start sub_8081E9C +sub_8081E9C: @ 8081E9C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _08081ED4 @ =sub_8081EDC + adds r0, r5, 0 + bl sub_8077688 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80775E8 + ldr r1, _08081ED8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x8] + adds r0, r4, 0 + bl _call_via_r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08081ED4: .4byte sub_8081EDC +_08081ED8: .4byte gUnknown_3005090 + thumb_func_end sub_8081E9C + + thumb_func_start sub_8081EDC +sub_8081EDC: @ 8081EDC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08081F08 @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0xA + ldrsh r0, [r5, r1] + lsls r4, r0, 16 + ldrh r0, [r5, 0xC] + orrs r4, r0 + ldrb r0, [r4] + lsls r0, 31 + cmp r0, 0 + bne _08081F0C + adds r0, r6, 0 + bl sub_807761C + b _08081F28 + .align 2, 0 +_08081F08: .4byte gUnknown_3005090 +_08081F0C: + ldr r7, _08081F30 @ =gUnknown_83C7258 +_08081F0E: + movs r1, 0x8 + ldrsh r0, [r5, r1] + lsls r0, 2 + adds r0, r7 + ldr r3, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _08081F0E +_08081F28: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08081F30: .4byte gUnknown_83C7258 + thumb_func_end sub_8081EDC + + thumb_func_start sub_8081F34 +sub_8081F34: @ 8081F34 + movs r0, 0 + bx lr + thumb_func_end sub_8081F34 + + thumb_func_start sub_8081F38 +sub_8081F38: @ 8081F38 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08081F54 + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x2 + ble _08081F54 + movs r0, 0xC + b _08081F82 +_08081F54: + ldr r1, _08081F8C @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl sub_805F364 + movs r0, 0 + bl sub_8083444 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 +_08081F82: + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08081F8C: .4byte gUnknown_20386E0 + thumb_func_end sub_8081F38 + + thumb_func_start sub_8081F90 +sub_8081F90: @ 8081F90 + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + movs r0, 0 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + beq _08081FA6 + movs r0, 0 + b _08081FC8 +_08081FA6: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldrb r0, [r5, 0x6] + subs r0, 0x39 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08081FBC + movs r0, 0x6 + strh r0, [r4, 0x8] +_08081FBC: + ldrb r0, [r5, 0x6] + cmp r0, 0x3F + bne _08081FC6 + movs r0, 0x8 + strh r0, [r4, 0x8] +_08081FC6: + movs r0, 0x1 +_08081FC8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8081F90 + + thumb_func_start sub_8081FD0 +sub_8081FD0: @ 8081FD0 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _08081FEE + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08082022 +_08081FEE: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08082014 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063F84 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] + b _08082022 +_08082014: + adds r0, r4, 0 + movs r1, 0x4A + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_08082022: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8081FD0 + + thumb_func_start sub_808202C +sub_808202C: @ 808202C + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0808204A + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080820AC +_0808204A: + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806365C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063610 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806365C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805FE7C + adds r0, r4, 0 + bl sub_805FE5C + ldr r0, _080820B4 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080820B8 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _080820A2 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080820AC +_080820A2: + bl sub_805C774 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080820AC: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080820B4: .4byte gUnknown_2037078 +_080820B8: .4byte gUnknown_2036E38 + thumb_func_end sub_808202C + + thumb_func_start sub_80820BC +sub_80820BC: @ 80820BC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080820F8 @ =gUnknown_2037078 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080820FC @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _080820E8 + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _080820EE +_080820E8: + adds r0, r5, 0 + bl sub_807761C +_080820EE: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080820F8: .4byte gUnknown_2037078 +_080820FC: .4byte gUnknown_2036E38 + thumb_func_end sub_80820BC + + thumb_func_start sub_8082100 +sub_8082100: @ 8082100 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0808211E + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0808212C +_0808211E: + adds r0, r4, 0 + movs r1, 0x67 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_0808212C: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8082100 + + thumb_func_start sub_8082134 +sub_8082134: @ 8082134 + push {r4,lr} + adds r4, r1, 0 + adds r0, r2, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _08082148 + movs r0, 0x3 + strh r0, [r4, 0x8] +_08082148: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8082134 + + thumb_func_start sub_8082150 +sub_8082150: @ 8082150 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _0808216E + adds r0, r4, 0 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0808217C +_0808216E: + adds r0, r4, 0 + movs r1, 0x4A + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_0808217C: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8082150 + + thumb_func_start sub_8082184 +sub_8082184: @ 8082184 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl sub_8063D68 + lsls r0, 24 + cmp r0, 0 + beq _080821CA + ldr r2, _080821D4 @ =gUnknown_20386E0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x12 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + ldr r3, _080821D8 @ =gUnknown_202063C + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + movs r0, 0x31 + bl sub_8083444 + strh r0, [r5, 0x10] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080821CA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080821D4: .4byte gUnknown_20386E0 +_080821D8: .4byte gUnknown_202063C + thumb_func_end sub_8082184 + + thumb_func_start sub_80821DC +sub_80821DC: @ 80821DC + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldr r2, _0808224C @ =gUnknown_202063C + movs r1, 0x10 + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x2B + ldrb r0, [r1] + cmp r0, 0x2 + bne _08082244 + ldrb r1, [r4, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x3] + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x5] + adds r0, r4, 0 + bl sub_8063D7C + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806413C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_08082244: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808224C: .4byte gUnknown_202063C + thumb_func_end sub_80821DC + + thumb_func_start sub_8082250 +sub_8082250: @ 8082250 + push {r4,lr} + adds r4, r1, 0 + movs r0, 0x31 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _08082264 + movs r0, 0x3 + strh r0, [r4, 0x8] +_08082264: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8082250 + + thumb_func_start sub_808226C +sub_808226C: @ 808226C + push {r4,lr} + sub sp, 0x8 + adds r4, r1, 0 + movs r0, 0 + strh r0, [r4, 0x12] + ldr r0, _080822C4 @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r3, [r0] + adds r3, 0x7 + lsls r3, 16 + asrs r3, 16 + ldrh r0, [r0, 0x2] + adds r0, 0x7 + lsls r0, 16 + asrs r0, 16 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0x12 + movs r1, 0x7 + movs r2, 0x7F + bl sub_805E830 + ldr r2, _080822C8 @ =gUnknown_2036E38 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1] + movs r2, 0x20 + orrs r0, r2 + strb r0, [r1, 0x1] + ldrb r0, [r1, 0x4] + bl sub_805FAC4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080822C4: .4byte gUnknown_3005008 +_080822C8: .4byte gUnknown_2036E38 + thumb_func_end sub_808226C + + thumb_func_start sub_80822CC +sub_80822CC: @ 80822CC + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, _08082348 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x7F + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r4, _0808234C @ =gUnknown_2036E38 + adds r0, r4 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _08082312 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0808236E +_08082312: + movs r0, 0x12 + ldrsh r1, [r5, r0] + movs r2, 0xE + ldrsh r0, [r5, r2] + subs r0, 0x1 + cmp r1, r0 + beq _08082350 + mov r0, sp + ldrb r0, [r0] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0808234C @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x2 + bl sub_8063FB0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0x12] + adds r0, 0x1 + strh r0, [r5, 0x12] + b _0808236E + .align 2, 0 +_08082348: .4byte gUnknown_3005008 +_0808234C: .4byte gUnknown_2036E38 +_08082350: + ldr r1, _08082378 @ =gUnknown_20386E0 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r6, 0 + bl sub_805F364 + movs r0, 0 + bl sub_8083444 + movs r0, 0 + strh r0, [r5, 0x12] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_0808236E: + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08082378: .4byte gUnknown_20386E0 + thumb_func_end sub_80822CC + + thumb_func_start sub_808237C +sub_808237C: @ 808237C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + ldr r0, _08082404 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x7F + mov r3, sp + bl sub_805DF84 + movs r0, 0 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _0808242E + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r4, _08082408 @ =gUnknown_2036E38 + adds r0, r4 + bl sub_8063C70 + lsls r0, 24 + cmp r0, 0 + beq _080823CC + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8063D7C + lsls r0, 24 + cmp r0, 0 + beq _0808242E +_080823CC: + movs r0, 0x12 + ldrsh r1, [r5, r0] + movs r2, 0xE + ldrsh r0, [r5, r2] + subs r0, 0x1 + cmp r1, r0 + beq _0808240C + mov r0, sp + ldrb r0, [r0] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08082408 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x1 + bl sub_8063FB0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063CA4 + ldrh r0, [r5, 0x12] + adds r0, 0x1 + strh r0, [r5, 0x12] + b _0808242E + .align 2, 0 +_08082404: .4byte gUnknown_3005008 +_08082408: .4byte gUnknown_2036E38 +_0808240C: + bl sub_805C768 + lsls r0, 24 + lsrs r0, 24 + bl sub_805FAC4 + ldr r0, _08082438 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0x7F + bl sub_805E4C8 + movs r0, 0 + strh r0, [r5, 0x12] + movs r0, 0x2 + strh r0, [r5, 0x8] +_0808242E: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08082438: .4byte gUnknown_3005008 + thumb_func_end sub_808237C + + thumb_func_start sub_808243C +sub_808243C: @ 808243C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080824D0 @ =gUnknown_3005090 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0xA + mov r1, sp + bl sub_8044F3C + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0808246E + ldr r0, [sp] + bl sub_8063D34 + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_0808246E: + ldr r1, _080824D4 @ =gUnknown_83C7294 + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r2, [sp] + ldr r3, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r3 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + bne _080824D8 + movs r0, 0x31 + bl sub_808382C + lsls r0, 24 + cmp r0, 0 + bne _080824D8 + ldr r4, [sp] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806365C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8063610 + ldr r4, [sp] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806365C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805FE7C + adds r0, r5, 0 + bl sub_8077508 + b _080824E2 + .align 2, 0 +_080824D0: .4byte gUnknown_3005090 +_080824D4: .4byte gUnknown_83C7294 +_080824D8: + ldr r2, [sp] + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] +_080824E2: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808243C + + thumb_func_start sub_80824EC +sub_80824EC: @ 80824EC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08082518 @ =sub_808243C + movs r1, 0 + bl sub_807741C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0808251C @ =gUnknown_3005098 + adds r0, r1 + adds r0, 0x2 + adds r1, r4, 0 + bl sub_8044F34 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082518: .4byte sub_808243C +_0808251C: .4byte gUnknown_3005098 + thumb_func_end sub_80824EC + + thumb_func_start sub_8082520 +sub_8082520: @ 8082520 + push {lr} + ldr r0, _0808252C @ =sub_8082530 + bl sub_8081E9C + pop {r0} + bx r0 + .align 2, 0 +_0808252C: .4byte sub_8082530 + thumb_func_end sub_8082520 + + thumb_func_start sub_8082530 +sub_8082530: @ 8082530 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8077508 + bl sub_8069B34 + pop {r0} + bx r0 + thumb_func_end sub_8082530 + + thumb_func_start sub_8082544 +sub_8082544: @ 8082544 + push {lr} + ldr r0, _08082574 @ =gUnknown_83C7388 + movs r1, 0 + movs r2, 0 + movs r3, 0x53 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0808256C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08082578 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0 + movs r2, 0 + bl sub_808265C +_0808256C: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08082574: .4byte gUnknown_83C7388 +_08082578: .4byte gUnknown_202063C + thumb_func_end sub_8082544 + + thumb_func_start sub_808257C +sub_808257C: @ 808257C + push {lr} + ldr r0, _080825AC @ =gUnknown_83C7388 + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080825A4 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080825B0 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x42 + movs r2, 0x1 + bl sub_808265C +_080825A4: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080825AC: .4byte gUnknown_83C7388 +_080825B0: .4byte gUnknown_202063C + thumb_func_end sub_808257C + + thumb_func_start sub_80825B4 +sub_80825B4: @ 80825B4 + push {lr} + ldr r0, _080825E4 @ =gUnknown_83C7388 + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080825DC + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080825E8 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x2E + movs r2, 0x2 + bl sub_808265C +_080825DC: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_080825E4: .4byte gUnknown_83C7388 +_080825E8: .4byte gUnknown_202063C + thumb_func_end sub_80825B4 + + thumb_func_start sub_80825EC +sub_80825EC: @ 80825EC + push {lr} + ldr r0, _0808261C @ =gUnknown_83C7388 + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08082614 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08082620 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x40 + movs r2, 0x3 + bl sub_808265C +_08082614: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0808261C: .4byte gUnknown_83C7388 +_08082620: .4byte gUnknown_202063C + thumb_func_end sub_80825EC + + thumb_func_start sub_8082624 +sub_8082624: @ 8082624 + push {lr} + ldr r0, _08082654 @ =gUnknown_83C7388 + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl sub_8006FE0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0808264C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08082658 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x21 + movs r2, 0x4 + bl sub_808265C +_0808264C: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_08082654: .4byte gUnknown_83C7388 +_08082658: .4byte gUnknown_202063C + thumb_func_end sub_8082624 + + thumb_func_start sub_808265C +sub_808265C: @ 808265C + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + ldrb r4, [r0, 0x5] + movs r3, 0xD + negs r3, r3 + ands r3, r4 + movs r4, 0x4 + orrs r3, r4 + strb r3, [r0, 0x5] + movs r3, 0x3E + adds r3, r0 + mov r12, r3 + ldrb r3, [r3] + movs r4, 0x2 + orrs r3, r4 + mov r4, r12 + strb r3, [r4] + ldr r4, _080826A0 @ =gUnknown_20386E0 + ldr r3, [r4] + strh r3, [r0, 0x2E] + ldr r3, [r4, 0x4] + strh r3, [r0, 0x30] + ldr r3, [r4, 0x8] + strh r3, [r0, 0x32] + ldr r3, _080826A4 @ =0x0000fffb + strh r3, [r0, 0x34] + strh r1, [r0, 0x3C] + adds r1, r2, 0 + bl sub_800838C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080826A0: .4byte gUnknown_20386E0 +_080826A4: .4byte 0x0000fffb + thumb_func_end sub_808265C + + thumb_func_start sub_80826A8 +sub_80826A8: @ 80826A8 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl sub_805DF84 + lsls r0, 24 + cmp r0, 0 + bne _080826DA + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080826E8 +_080826DA: + ldrh r1, [r4, 0x3C] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_80836D8 + b _08082736 +_080826E8: + ldr r2, _0808272C @ =gUnknown_2036E38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _08082730 @ =gUnknown_202063C + adds r1, r0 + ldrh r3, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r2, r3, r0 + strh r2, [r4, 0x36] + ldrh r0, [r1, 0x20] + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x22] + subs r0, 0x10 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x24] + strh r0, [r4, 0x24] + ldrh r0, [r1, 0x26] + adds r0, r2 + strh r0, [r4, 0x26] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _08082734 + adds r0, r3, 0x1 + strh r0, [r4, 0x34] + b _08082736 + .align 2, 0 +_0808272C: .4byte gUnknown_2036E38 +_08082730: .4byte gUnknown_202063C +_08082734: + strh r2, [r4, 0x34] +_08082736: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80826A8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s new file mode 100644 index 000000000..35144810c --- /dev/null +++ b/asm/trainer_tower.s @@ -0,0 +1,2825 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815D7BC +sub_815D7BC: @ 815D7BC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0x1E + bl sub_80DA588 + cmp r0, 0x1 + bne _0815D804 + ldr r2, _0815D800 @ =0x00000f88 + adds r0, r5, 0 + adds r1, r4, 0 + bl memcpy + movs r0, 0x1F + adds r1, r4, 0 + bl sub_80DA588 + cmp r0, 0x1 + bne _0815D804 + ldr r1, _0815D800 @ =0x00000f88 + adds r0, r5, r1 + movs r2, 0xF8 + lsls r2, 4 + adds r1, r4, 0 + bl memcpy + adds r0, r5, 0 + bl sub_815D6B4 + cmp r0, 0 + beq _0815D804 + movs r0, 0x1 + b _0815D806 + .align 2, 0 +_0815D800: .4byte 0x00000f88 +_0815D804: + movs r0, 0 +_0815D806: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815D7BC + + thumb_func_start sub_815D80C +sub_815D80C: @ 815D80C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x80 + lsls r0, 5 + bl sub_8002BB0 + adds r5, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_815D7BC + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_8002BC4 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815D80C + + thumb_func_start sub_815D834 +sub_815D834: @ 815D834 + movs r0, 0 + bx lr + thumb_func_end sub_815D834 + + thumb_func_start sub_815D838 +sub_815D838: @ 815D838 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r2, 0 + ldr r0, _0815D8C0 @ =gUnknown_8479D38 + mov r10, r0 + movs r1, 0xFA + lsls r1, 2 + adds r5, r1, 0 +_0815D84E: + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r1, r0, 0 + add r1, r10 + mov r8, r1 + mov r1, r10 + adds r1, 0x8 + adds r7, r0, r1 + ldr r1, _0815D8C4 @ =gUnknown_8479D48 + adds r6, r0, r1 + movs r4, 0 + adds r2, 0x1 + mov r9, r2 +_0815D86A: + mov r0, r8 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0815D87C + ldrb r1, [r1] + adds r0, r5, r1 + bl sub_806E680 +_0815D87C: + adds r1, r7, r4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0815D88C + ldrb r1, [r1] + adds r0, r5, r1 + bl sub_806E680 +_0815D88C: + adds r1, r6, r4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0815D89C + ldrb r1, [r1] + adds r0, r5, r1 + bl sub_806E680 +_0815D89C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _0815D86A + mov r1, r9 + lsls r0, r1, 24 + lsrs r2, r0, 24 + cmp r2, 0xE + bls _0815D84E + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D8C0: .4byte gUnknown_8479D38 +_0815D8C4: .4byte gUnknown_8479D48 + thumb_func_end sub_815D838 + + thumb_func_start sub_815D8C8 +sub_815D8C8: @ 815D8C8 + push {r4,lr} + ldr r4, _0815D8F0 @ =0x00004023 + adds r0, r4, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _0815D8F4 @ =0x000005db + cmp r1, r0 + bhi _0815D8E8 + adds r1, 0x1 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_806E584 +_0815D8E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D8F0: .4byte 0x00004023 +_0815D8F4: .4byte 0x000005db + thumb_func_end sub_815D8C8 + + thumb_func_start sub_815D8F8 +sub_815D8F8: @ 815D8F8 + push {r4-r6,lr} + movs r4, 0xFF + movs r2, 0 + ldr r6, _0815D95C @ =gUnknown_8479D34 + ldr r0, _0815D960 @ =gUnknown_3005008 + ldr r3, [r0] + movs r5, 0x4 + ldrsb r5, [r3, r5] +_0815D908: + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r1, r0, r6 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, r5 + bne _0815D928 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x5 + ldrsb r0, [r3, r0] + cmp r1, r0 + bne _0815D928 + adds r4, r2, 0 +_0815D928: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xE + bls _0815D908 + cmp r4, 0xFF + beq _0815D956 + ldr r4, _0815D964 @ =0x00004023 + adds r0, r4, 0 + bl sub_806E568 + lsls r0, 16 + ldr r1, _0815D968 @ =0x05db0000 + cmp r0, r1 + bls _0815D956 + adds r0, r4, 0 + movs r1, 0 + bl sub_806E584 + bl sub_815D838 + bl sub_815D96C +_0815D956: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815D95C: .4byte gUnknown_8479D34 +_0815D960: .4byte gUnknown_3005008 +_0815D964: .4byte 0x00004023 +_0815D968: .4byte 0x05db0000 + thumb_func_end sub_815D8F8 + + thumb_func_start sub_815D96C +sub_815D96C: @ 815D96C + push {r4-r6,lr} + movs r6, 0 +_0815D970: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x59 + bls _0815D994 + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 2 + ldr r1, _0815D990 @ =gUnknown_8479D38 + b _0815D9B0 + .align 2, 0 +_0815D990: .4byte gUnknown_8479D38 +_0815D994: + cmp r0, 0x3B + bls _0815D9A8 + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 2 + ldr r1, _0815D9A4 @ =gUnknown_8479D40 + b _0815D9B0 + .align 2, 0 +_0815D9A4: .4byte gUnknown_8479D40 +_0815D9A8: + lsls r0, r6, 3 + subs r0, r6 + lsls r0, 2 + ldr r1, _0815D9E4 @ =gUnknown_8479D48 +_0815D9B0: + adds r5, r0, r1 + movs r4, 0 + adds r6, 0x1 +_0815D9B6: + adds r1, r5, r4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0815D9CC + movs r2, 0xFA + lsls r2, 2 + adds r0, r2, 0 + ldrb r1, [r1] + adds r0, r1 + bl sub_806E6A8 +_0815D9CC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _0815D9B6 + lsls r0, r6, 24 + lsrs r6, r0, 24 + cmp r6, 0xE + bls _0815D970 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815D9E4: .4byte gUnknown_8479D48 + thumb_func_end sub_815D96C + + thumb_func_start sub_815D9E8 +sub_815D9E8: @ 815D9E8 + push {lr} + bl sub_815DC8C + ldr r1, _0815DA08 @ =gUnknown_847A230 + ldr r0, _0815DA0C @ =gUnknown_20370C0 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_815DD2C + pop {r0} + bx r0 + .align 2, 0 +_0815DA08: .4byte gUnknown_847A230 +_0815DA0C: .4byte gUnknown_20370C0 + thumb_func_end sub_815D9E8 + + thumb_func_start sub_815DA10 +sub_815DA10: @ 815DA10 + ldr r1, _0815DA20 @ =gUnknown_825393E + ldr r0, _0815DA24 @ =gUnknown_203F45C + ldr r0, [r0] + adds r0, 0x3D + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0815DA20: .4byte gUnknown_825393E +_0815DA24: .4byte gUnknown_203F45C + thumb_func_end sub_815DA10 + + thumb_func_start sub_815DA28 +sub_815DA28: @ 815DA28 + push {lr} + ldr r1, _0815DA38 @ =gUnknown_203F45C + ldr r1, [r1] + movs r2, 0xB + bl sub_8008DBC + pop {r0} + bx r0 + .align 2, 0 +_0815DA38: .4byte gUnknown_203F45C + thumb_func_end sub_815DA28 + + thumb_func_start sub_815DA3C +sub_815DA3C: @ 815DA3C + ldr r1, _0815DA4C @ =gUnknown_82538A8 + ldr r0, _0815DA50 @ =gUnknown_203F45C + ldr r0, [r0] + adds r0, 0x3D + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0815DA4C: .4byte gUnknown_82538A8 +_0815DA50: .4byte gUnknown_203F45C + thumb_func_end sub_815DA3C + + thumb_func_start sub_815DA54 +sub_815DA54: @ 815DA54 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + bl sub_815DC8C + ldr r5, _0815DBC4 @ =gUnknown_203F45C + movs r0, 0x40 + bl sub_8002BB0 + str r0, [r5] + ldr r0, _0815DBC8 @ =0x00004001 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + ldr r0, [r5] + ldr r1, _0815DBCC @ =gUnknown_203F458 + ldr r1, [r1] + ldrb r3, [r1] + lsls r2, r3, 5 + subs r2, r3 + lsls r2, 5 + adds r2, 0xC + adds r1, r2 + mov r2, r10 + lsls r6, r2, 2 + adds r4, r6, r2 + lsls r4, 3 + add r4, r10 + lsls r4, 3 + adds r2, r4, 0x4 + adds r1, r2 + movs r2, 0xB + bl sub_8008DBC + movs r0, 0 + mov r9, r0 + str r6, [sp] + mov r12, r4 + mov r1, r10 + adds r1, 0x1 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r1 + lsls r5, r0, 3 +_0815DAB8: + ldr r0, _0815DBC4 @ =gUnknown_203F45C + ldr r0, [r0] + mov r8, r0 + mov r1, r9 + lsls r4, r1, 1 + mov r2, r8 + adds r2, 0xC + adds r2, r4 + ldr r0, _0815DBCC @ =gUnknown_203F458 + ldr r3, [r0] + ldrb r1, [r3] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 5 + add r0, r12 + adds r7, r3, 0 + adds r7, 0x2A + adds r0, r7, r0 + ldrh r0, [r0] + strh r0, [r2] + mov r2, r8 + adds r2, 0x18 + adds r2, r4 + ldrb r1, [r3] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 5 + add r0, r12 + adds r6, r3, 0 + adds r6, 0x36 + adds r0, r6, r0 + ldrh r0, [r0] + strh r0, [r2] + ldrb r1, [r3] + lsls r0, r1, 5 + subs r0, r1 + lsls r2, r0, 5 + adds r0, r3, r2 + ldrb r0, [r0, 0xE] + cmp r0, 0x1 + bne _0815DB2E + mov r1, r8 + adds r1, 0x24 + adds r1, r4 + adds r0, r5, r2 + adds r0, r7, r0 + ldrh r0, [r0] + strh r0, [r1] + mov r2, r8 + adds r2, 0x30 + adds r2, r4 + ldrb r1, [r3] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 5 + adds r0, r5, r0 + adds r0, r6, r0 + ldrh r0, [r0] + strh r0, [r2] +_0815DB2E: + movs r2, 0x2 + add r12, r2 + adds r5, 0x2 + movs r0, 0x1 + add r9, r0 + mov r1, r9 + cmp r1, 0x5 + ble _0815DAB8 + ldr r2, _0815DBC4 @ =gUnknown_203F45C + ldr r3, [r2] + ldr r0, _0815DBCC @ =gUnknown_203F458 + ldr r1, [r0] + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xE] + adds r3, 0x3C + strb r0, [r3] + ldr r1, _0815DBC4 @ =gUnknown_203F45C + ldr r4, [r1] + ldr r2, _0815DBCC @ =gUnknown_203F458 + ldr r3, [r2] + ldr r1, [sp] + add r1, r10 + lsls r1, 3 + add r1, r10 + lsls r1, 3 + ldrb r2, [r3] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r0, r1, r0 + adds r3, r0 + ldrb r0, [r3, 0x1B] + adds r4, 0x3D + strb r0, [r4] + ldr r0, _0815DBC4 @ =gUnknown_203F45C + ldr r4, [r0] + ldr r2, _0815DBCC @ =gUnknown_203F458 + ldr r3, [r2] + ldrb r2, [r3] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + adds r3, r1 + ldrb r0, [r3, 0x1C] + adds r4, 0x3E + strb r0, [r4] + ldr r0, _0815DBD0 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r2, _0815DBD4 @ =0x00003d34 + adds r1, r0, r2 + ldr r2, [r1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + ldr r2, _0815DBD8 @ =0x00003d38 + adds r1, r2 + adds r0, r1 + bl sub_80008C0 + bl sub_815DD2C + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815DBC4: .4byte gUnknown_203F45C +_0815DBC8: .4byte 0x00004001 +_0815DBCC: .4byte gUnknown_203F458 +_0815DBD0: .4byte gUnknown_3005008 +_0815DBD4: .4byte 0x00003d34 +_0815DBD8: .4byte 0x00003d38 + thumb_func_end sub_815DA54 + + thumb_func_start sub_815DBDC +sub_815DBDC: @ 815DBDC + push {r4,lr} + ldr r4, _0815DBF0 @ =gUnknown_203F45C + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815DBF0: .4byte gUnknown_203F45C + thumb_func_end sub_815DBDC + + thumb_func_start sub_815DBF4 +sub_815DBF4: @ 815DBF4 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r0, _0815DC28 @ =0x00004003 + adds r1, r4, 0 + bl sub_806E584 + ldr r5, _0815DC2C @ =gUnknown_203F45C + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x3C + ldrb r0, [r0] + adds r1, 0x3D + ldrb r1, [r1] + bl sub_815E068 + cmp r4, 0 + bne _0815DC30 + ldr r0, [r5] + adds r0, 0xC + adds r1, r6, 0 + bl sub_815DEFC + b _0815DC3A + .align 2, 0 +_0815DC28: .4byte 0x00004003 +_0815DC2C: .4byte gUnknown_203F45C +_0815DC30: + ldr r0, [r5] + adds r0, 0x24 + adds r1, r6, 0 + bl sub_815DEFC +_0815DC3A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815DBF4 + + thumb_func_start sub_815DC40 +sub_815DC40: @ 815DC40 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r0, _0815DC74 @ =0x00004003 + adds r1, r4, 0 + bl sub_806E584 + ldr r5, _0815DC78 @ =gUnknown_203F45C + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x3C + ldrb r0, [r0] + adds r1, 0x3D + ldrb r1, [r1] + bl sub_815E068 + cmp r4, 0 + bne _0815DC7C + ldr r0, [r5] + adds r0, 0x18 + adds r1, r6, 0 + bl sub_815DEFC + b _0815DC86 + .align 2, 0 +_0815DC74: .4byte 0x00004003 +_0815DC78: .4byte gUnknown_203F45C +_0815DC7C: + ldr r0, [r5] + adds r0, 0x30 + adds r1, r6, 0 + bl sub_815DEFC +_0815DC86: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815DC40 + + thumb_func_start sub_815DC8C +sub_815DC8C: @ 815DC8C + push {r4-r7,lr} + ldr r0, _0815DCBC @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0815DCC0 @ =0x00003d34 + adds r0, r1 + ldr r5, [r0] + ldr r4, _0815DCC4 @ =gUnknown_203F458 + ldr r0, _0815DCC8 @ =0x00001f0c + bl sub_8002BB0 + str r0, [r4] + ldr r1, _0815DCCC @ =gUnknown_2036DFC + ldrb r1, [r1, 0x12] + subs r1, 0x2A + strb r1, [r0] + bl sub_815D834 + cmp r0, 0x1 + bne _0815DCD0 + ldr r0, [r4] + adds r0, 0x4 + bl sub_815D80C + b _0815DD18 + .align 2, 0 +_0815DCBC: .4byte gUnknown_3005008 +_0815DCC0: .4byte 0x00003d34 +_0815DCC4: .4byte gUnknown_203F458 +_0815DCC8: .4byte 0x00001f0c +_0815DCCC: .4byte gUnknown_2036DFC +_0815DCD0: + ldr r0, [r4] + ldr r1, _0815DD20 @ =gUnknown_84827AC + adds r0, 0x4 + movs r2, 0x8 + bl memcpy + lsls r1, r5, 5 + ldr r0, _0815DD24 @ =gUnknown_84827B4 + adds r7, r1, r0 + movs r5, 0 + movs r4, 0x7 +_0815DCE6: + ldr r6, _0815DD28 @ =gUnknown_203F458 + ldr r0, [r6] + adds r0, r5, r0 + adds r0, 0xC + ldm r7!, {r1} + movs r2, 0xF8 + lsls r2, 2 + bl memcpy + movs r0, 0xF8 + lsls r0, 2 + adds r5, r0 + subs r4, 0x1 + cmp r4, 0 + bge _0815DCE6 + ldr r0, [r6] + adds r0, 0xC + movs r1, 0xF8 + lsls r1, 5 + bl sub_8045254 + ldr r1, [r6] + str r0, [r1, 0x8] + bl sub_815EC0C +_0815DD18: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815DD20: .4byte gUnknown_84827AC +_0815DD24: .4byte gUnknown_84827B4 +_0815DD28: .4byte gUnknown_203F458 + thumb_func_end sub_815DC8C + + thumb_func_start sub_815DD2C +sub_815DD2C: @ 815DD2C + push {r4,lr} + ldr r4, _0815DD40 @ =gUnknown_203F458 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815DD40: .4byte gUnknown_203F458 + thumb_func_end sub_815DD2C + + thumb_func_start sub_815DD44 +sub_815DD44: @ 815DD44 + push {r4,lr} + ldr r0, _0815DD68 @ =gUnknown_2036DFC + ldrh r0, [r0, 0x12] + ldr r1, _0815DD6C @ =0xfffffed7 + adds r0, r1 + ldr r1, _0815DD70 @ =gUnknown_203F458 + ldr r4, [r1] + ldrb r1, [r4, 0x4] + cmp r0, r1 + ble _0815DD78 + ldr r0, _0815DD74 @ =gUnknown_20370D0 + movs r1, 0x3 + strh r1, [r0] + movs r0, 0x99 + lsls r0, 1 + bl sub_8055D40 + b _0815DDA2 + .align 2, 0 +_0815DD68: .4byte gUnknown_2036DFC +_0815DD6C: .4byte 0xfffffed7 +_0815DD70: .4byte gUnknown_203F458 +_0815DD74: .4byte gUnknown_20370D0 +_0815DD78: + ldr r3, _0815DDA8 @ =gUnknown_20370D0 + ldrb r1, [r4] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 5 + adds r0, r4, r0 + ldrb r0, [r0, 0xE] + strh r0, [r3] + ldr r2, _0815DDAC @ =gUnknown_847A284 + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + ldrh r3, [r3] + adds r0, r3 + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + bl sub_8055D40 + bl sub_815DDB0 +_0815DDA2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815DDA8: .4byte gUnknown_20370D0 +_0815DDAC: .4byte gUnknown_847A284 + thumb_func_end sub_815DD44 + + thumb_func_start sub_815DDB0 +sub_815DDB0: @ 815DDB0 + push {r4-r6,lr} + ldr r0, _0815DDD0 @ =gUnknown_203F458 + ldr r2, [r0] + ldrb r1, [r2] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 5 + adds r2, r0 + ldrb r0, [r2, 0xE] + cmp r0, 0x1 + beq _0815DE18 + cmp r0, 0x1 + bgt _0815DDD4 + cmp r0, 0 + beq _0815DDDA + b _0815DEF0 + .align 2, 0 +_0815DDD0: .4byte gUnknown_203F458 +_0815DDD4: + cmp r0, 0x2 + beq _0815DE64 + b _0815DEF0 +_0815DDDA: + ldrb r2, [r2, 0x1B] + movs r3, 0 + ldr r0, _0815DE04 @ =gUnknown_8479ED8 + ldrb r1, [r0, 0x1] + adds r6, r0, 0 + cmp r1, r2 + beq _0815DDF8 + adds r1, r6, 0 +_0815DDEA: + adds r1, 0x4 + adds r3, 0x1 + cmp r3, 0x52 + bhi _0815DDF8 + ldrb r0, [r1, 0x1] + cmp r0, r2 + bne _0815DDEA +_0815DDF8: + cmp r3, 0x53 + beq _0815DE08 + lsls r0, r3, 2 + adds r0, r6 + ldrb r1, [r0] + b _0815DE0A + .align 2, 0 +_0815DE04: .4byte gUnknown_8479ED8 +_0815DE08: + movs r1, 0x12 +_0815DE0A: + ldr r0, _0815DE14 @ =0x00004011 + bl sub_806E584 + b _0815DEF0 + .align 2, 0 +_0815DE14: .4byte 0x00004011 +_0815DE18: + ldrb r2, [r2, 0x1B] + movs r3, 0 + ldr r0, _0815DE44 @ =gUnknown_847A024 + ldrb r1, [r0, 0x2] + adds r4, r0, 0 + cmp r1, r2 + beq _0815DE36 + adds r1, r4, 0 +_0815DE28: + adds r1, 0x8 + adds r3, 0x1 + cmp r3, 0x9 + bhi _0815DE36 + ldrb r0, [r1, 0x2] + cmp r0, r2 + bne _0815DE28 +_0815DE36: + cmp r3, 0xA + beq _0815DE48 + lsls r0, r3, 3 + adds r0, r4 + ldrb r1, [r0] + ldrb r4, [r0, 0x1] + b _0815DE4C + .align 2, 0 +_0815DE44: .4byte gUnknown_847A024 +_0815DE48: + movs r1, 0x12 + movs r4, 0x12 +_0815DE4C: + ldr r0, _0815DE5C @ =0x00004010 + bl sub_806E584 + ldr r0, _0815DE60 @ =0x00004013 + adds r1, r4, 0 + bl sub_806E584 + b _0815DEF0 + .align 2, 0 +_0815DE5C: .4byte 0x00004010 +_0815DE60: .4byte 0x00004013 +_0815DE64: + movs r4, 0 + ldr r6, _0815DEAC @ =gUnknown_8479ED8 +_0815DE68: + ldr r0, _0815DEB0 @ =gUnknown_203F458 + ldr r3, [r0] + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r4 + lsls r1, 3 + ldrb r2, [r3] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + adds r3, r1 + ldrb r2, [r3, 0x1B] + movs r3, 0 + ldr r1, _0815DEAC @ =gUnknown_8479ED8 + ldrb r0, [r1, 0x1] + adds r5, r4, 0x1 + cmp r0, r2 + beq _0815DE9E +_0815DE90: + adds r1, 0x4 + adds r3, 0x1 + cmp r3, 0x52 + bhi _0815DE9E + ldrb r0, [r1, 0x1] + cmp r0, r2 + bne _0815DE90 +_0815DE9E: + cmp r3, 0x53 + beq _0815DEB4 + lsls r0, r3, 2 + adds r0, r6 + ldrb r1, [r0] + b _0815DEB6 + .align 2, 0 +_0815DEAC: .4byte gUnknown_8479ED8 +_0815DEB0: .4byte gUnknown_203F458 +_0815DEB4: + movs r1, 0x12 +_0815DEB6: + cmp r4, 0x1 + beq _0815DED8 + cmp r4, 0x1 + bgt _0815DEC4 + cmp r4, 0 + beq _0815DECA + b _0815DEEA +_0815DEC4: + cmp r4, 0x2 + beq _0815DEE4 + b _0815DEEA +_0815DECA: + ldr r0, _0815DED4 @ =0x00004012 + bl sub_806E584 + b _0815DEEA + .align 2, 0 +_0815DED4: .4byte 0x00004012 +_0815DED8: + ldr r0, _0815DEE0 @ =0x00004010 + bl sub_806E584 + b _0815DEEA + .align 2, 0 +_0815DEE0: .4byte 0x00004010 +_0815DEE4: + ldr r0, _0815DEF8 @ =0x00004011 + bl sub_806E584 +_0815DEEA: + adds r4, r5, 0 + cmp r4, 0x2 + ble _0815DE68 +_0815DEF0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815DEF8: .4byte 0x00004011 + thumb_func_end sub_815DDB0 + + thumb_func_start sub_815DEFC +sub_815DEFC: @ 815DEFC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + movs r3, 0x2 + bl sub_80BD89C + movs r2, 0x1 + negs r2, r2 + movs r0, 0x2 + adds r1, r4, 0 + bl sub_8005ED4 + cmp r0, 0xC4 + bls _0815DF4E + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_80BD89C + ldrb r0, [r4] + movs r1, 0x1 + cmp r0, 0xFE + beq _0815DF40 +_0815DF32: + adds r0, r4, r1 + ldrb r0, [r0] + adds r1, 0x1 + cmp r0, 0xFE + bne _0815DF32 + b _0815DF40 +_0815DF3E: + adds r1, 0x1 +_0815DF40: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0xFE + bne _0815DF3E + adds r1, r4, r1 + movs r0, 0xFA + strb r0, [r1] +_0815DF4E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_815DEFC + + thumb_func_start sub_815DF54 +sub_815DF54: @ 815DF54 + push {r4,r5,lr} + ldr r0, _0815DF90 @ =gUnknown_20370C4 + ldrh r4, [r0] + ldr r2, _0815DF94 @ =gUnknown_203F458 + ldr r3, [r2] + ldrb r1, [r3] + lsls r0, r1, 5 + subs r0, r1 + lsls r1, r0, 5 + adds r0, r3, r1 + ldrb r5, [r0, 0xE] + cmp r5, 0x1 + beq _0815DF7C + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + adds r0, r3, r0 +_0815DF7C: + ldrb r1, [r0, 0x1B] + ldr r0, _0815DF98 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0x3 + beq _0815DFD4 + cmp r0, 0x3 + bgt _0815DF9C + cmp r0, 0x2 + beq _0815DFA6 + b _0815E05C + .align 2, 0 +_0815DF90: .4byte gUnknown_20370C4 +_0815DF94: .4byte gUnknown_203F458 +_0815DF98: .4byte gUnknown_20370C2 +_0815DF9C: + cmp r0, 0x4 + beq _0815E000 + cmp r0, 0x5 + beq _0815E038 + b _0815E05C +_0815DFA6: + adds r0, r5, 0 + bl sub_815E068 + ldr r0, _0815DFD0 @ =gUnknown_203F458 + ldr r0, [r0] + ldrb r2, [r0] + lsls r1, r2, 5 + subs r1, r2 + lsls r1, 5 + adds r1, 0xC + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r4 + lsls r1, 3 + adds r1, 0x4 + adds r0, r1 + adds r0, 0xE + b _0815E026 + .align 2, 0 +_0815DFD0: .4byte gUnknown_203F458 +_0815DFD4: + adds r0, r5, 0 + bl sub_815E068 + ldr r0, _0815DFFC @ =gUnknown_203F458 + ldr r0, [r0] + ldrb r2, [r0] + lsls r1, r2, 5 + subs r1, r2 + lsls r1, 5 + adds r1, 0xC + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r4 + lsls r1, 3 + adds r1, 0x4 + adds r0, r1 + adds r0, 0x1A + b _0815E026 + .align 2, 0 +_0815DFFC: .4byte gUnknown_203F458 +_0815E000: + adds r0, r5, 0 + bl sub_815E068 + ldr r0, _0815E030 @ =gUnknown_203F458 + ldr r0, [r0] + ldrb r2, [r0] + lsls r1, r2, 5 + subs r1, r2 + lsls r1, 5 + adds r1, 0xC + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r4 + lsls r1, 3 + adds r1, 0x4 + adds r0, r1 + adds r0, 0x26 +_0815E026: + ldr r1, _0815E034 @ =gUnknown_2021D18 + bl sub_815DEFC + b _0815E05C + .align 2, 0 +_0815E030: .4byte gUnknown_203F458 +_0815E034: .4byte gUnknown_2021D18 +_0815E038: + ldr r0, [r2] + ldrb r2, [r0] + lsls r1, r2, 5 + subs r1, r2 + lsls r1, 5 + adds r1, 0xC + adds r0, r1 + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r4 + lsls r1, 3 + adds r1, 0x4 + adds r0, r1 + adds r0, 0x32 + ldr r1, _0815E064 @ =gUnknown_2021D18 + bl sub_815DEFC +_0815E05C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815E064: .4byte gUnknown_2021D18 + thumb_func_end sub_815DF54 + + thumb_func_start sub_815E068 +sub_815E068: @ 815E068 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r3, r0, 0 + lsls r1, 24 + lsrs r2, r1, 24 + movs r5, 0 + cmp r0, 0x1 + beq _0815E0B4 + cmp r0, 0x1 + bgt _0815E084 + cmp r0, 0 + beq _0815E088 + b _0815E0F8 +_0815E084: + cmp r3, 0x2 + bne _0815E0F8 +_0815E088: + movs r4, 0 + ldr r0, _0815E0B0 @ =gUnknown_8479ED8 + ldrb r1, [r0, 0x1] + adds r3, r0, 0 + cmp r1, r2 + beq _0815E0A4 + adds r1, r3, 0 +_0815E096: + adds r1, 0x4 + adds r4, 0x1 + cmp r4, 0x52 + bhi _0815E0A4 + ldrb r0, [r1, 0x1] + cmp r0, r2 + bne _0815E096 +_0815E0A4: + cmp r4, 0x53 + beq _0815E0F8 + lsls r0, r4, 2 + adds r0, r3 + ldrb r5, [r0, 0x2] + b _0815E0F8 + .align 2, 0 +_0815E0B0: .4byte gUnknown_8479ED8 +_0815E0B4: + movs r4, 0 + ldr r1, _0815E0BC @ =gUnknown_847A024 + b _0815E0C8 + .align 2, 0 +_0815E0BC: .4byte gUnknown_847A024 +_0815E0C0: + adds r1, 0x8 + adds r4, 0x1 + cmp r4, 0x9 + bhi _0815E0CE +_0815E0C8: + ldrb r0, [r1, 0x2] + cmp r0, r2 + bne _0815E0C0 +_0815E0CE: + cmp r4, 0xA + beq _0815E0F8 + ldr r0, _0815E0E8 @ =0x00004003 + bl sub_806E568 + lsls r0, 16 + cmp r0, 0 + beq _0815E0F0 + ldr r1, _0815E0EC @ =gUnknown_847A024 + lsls r0, r4, 3 + adds r0, r1 + ldrb r5, [r0, 0x4] + b _0815E0F8 + .align 2, 0 +_0815E0E8: .4byte 0x00004003 +_0815E0EC: .4byte gUnknown_847A024 +_0815E0F0: + ldr r1, _0815E108 @ =gUnknown_847A024 + lsls r0, r4, 3 + adds r0, r1 + ldrb r5, [r0, 0x3] +_0815E0F8: + ldr r2, _0815E10C @ =gUnknown_20370DC + ldr r1, _0815E110 @ =gUnknown_20370DA + ldrh r0, [r1] + strh r0, [r2] + strh r5, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815E108: .4byte gUnknown_847A024 +_0815E10C: .4byte gUnknown_20370DC +_0815E110: .4byte gUnknown_20370DA + thumb_func_end sub_815E068 + + thumb_func_start sub_815E114 +sub_815E114: @ 815E114 + push {lr} + ldr r0, _0815E120 @ =sub_80568E0 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0815E120: .4byte sub_80568E0 + thumb_func_end sub_815E114 + + thumb_func_start sub_815E124 +sub_815E124: @ 815E124 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_80D08F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0815E14C + ldr r0, _0815E154 @ =gUnknown_30030F0 + ldr r1, _0815E158 @ =sub_815E114 + str r1, [r0, 0x8] + bl sub_80563F0 + ldr r0, _0815E15C @ =sub_800FD9C + bl sub_8000544 + adds r0, r4, 0 + bl sub_8077508 +_0815E14C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E154: .4byte gUnknown_30030F0 +_0815E158: .4byte sub_815E114 +_0815E15C: .4byte sub_800FD9C + thumb_func_end sub_815E124 + + thumb_func_start sub_815E160 +sub_815E160: @ 815E160 + push {r4,lr} + ldr r4, _0815E1AC @ =gUnknown_2022B4C + ldr r3, _0815E1B0 @ =0x00080008 + str r3, [r4] + ldr r0, _0815E1B4 @ =gUnknown_203F458 + ldr r1, [r0] + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xE] + cmp r0, 0x1 + bne _0815E180 + orrs r0, r3 + str r0, [r4] +_0815E180: + ldr r1, _0815E1B8 @ =gUnknown_20386AE + movs r0, 0 + strh r0, [r1] + bl sub_815E9FC + ldr r0, _0815E1BC @ =sub_815E124 + movs r1, 0x1 + bl sub_807741C + movs r0, 0 + bl sub_8044090 + bl sub_8080060 + lsls r0, 24 + lsrs r0, 24 + bl sub_80D08B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E1AC: .4byte gUnknown_2022B4C +_0815E1B0: .4byte 0x00080008 +_0815E1B4: .4byte gUnknown_203F458 +_0815E1B8: .4byte gUnknown_20386AE +_0815E1BC: .4byte sub_815E124 + thumb_func_end sub_815E160 + + thumb_func_start sub_815E1C0 +sub_815E1C0: @ 815E1C0 + push {lr} + ldr r0, _0815E1E4 @ =gUnknown_20370C2 + ldrh r0, [r0] + cmp r0, 0 + bne _0815E1DE + ldr r3, _0815E1E8 @ =gUnknown_20370D0 + ldr r0, _0815E1EC @ =gUnknown_203F458 + ldr r1, [r0] + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xE] + strh r0, [r3] +_0815E1DE: + pop {r0} + bx r0 + .align 2, 0 +_0815E1E4: .4byte gUnknown_20370C2 +_0815E1E8: .4byte gUnknown_20370D0 +_0815E1EC: .4byte gUnknown_203F458 + thumb_func_end sub_815E1C0 + + thumb_func_start sub_815E1F0 +sub_815E1F0: @ 815E1F0 + ldr r0, _0815E210 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815E214 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + movs r0, 0xF5 + lsls r0, 6 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_0815E210: .4byte gUnknown_3005008 +_0815E214: .4byte 0x00003d34 + thumb_func_end sub_815E1F0 + + thumb_func_start sub_815E218 +sub_815E218: @ 815E218 + push {lr} + ldr r0, _0815E260 @ =gUnknown_2036DFC + ldrh r0, [r0, 0x12] + mov r12, r0 + ldr r3, _0815E264 @ =0xfffffed6 + add r3, r12 + ldr r0, _0815E268 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815E26C @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + movs r0, 0xF5 + lsls r0, 6 + adds r1, r0 + ldrb r1, [r1] + cmp r3, r1 + bne _0815E27C + ldr r3, _0815E270 @ =0xfffffed7 + add r3, r12 + ldr r0, _0815E274 @ =gUnknown_203F458 + ldr r1, [r0] + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1, 0xD] + cmp r3, r1 + bgt _0815E27C + ldr r1, _0815E278 @ =gUnknown_20370D0 + movs r0, 0 + b _0815E280 + .align 2, 0 +_0815E260: .4byte gUnknown_2036DFC +_0815E264: .4byte 0xfffffed6 +_0815E268: .4byte gUnknown_3005008 +_0815E26C: .4byte 0x00003d34 +_0815E270: .4byte 0xfffffed7 +_0815E274: .4byte gUnknown_203F458 +_0815E278: .4byte gUnknown_20370D0 +_0815E27C: + ldr r1, _0815E288 @ =gUnknown_20370D0 + movs r0, 0x1 +_0815E280: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0815E288: .4byte gUnknown_20370D0 + thumb_func_end sub_815E218 + + thumb_func_start sub_815E28C +sub_815E28C: @ 815E28C + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r4, _0815E2D0 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r5, _0815E2D4 @ =0x00003d34 + adds r1, r0, r5 + ldr r0, _0815E2D8 @ =gUnknown_20370C2 + ldrh r0, [r0] + str r0, [r1] + cmp r0, 0x3 + bls _0815E2A8 + movs r0, 0 + str r0, [r1] +_0815E2A8: + bl sub_815EC0C + bl sub_815D834 + cmp r0, 0 + bne _0815E2E0 + ldr r1, [r4] + adds r0, r1, r5 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815E2DC @ =0x00003d42 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x20 + orrs r0, r2 + b _0815E2FA + .align 2, 0 +_0815E2D0: .4byte gUnknown_3005008 +_0815E2D4: .4byte 0x00003d34 +_0815E2D8: .4byte gUnknown_20370C2 +_0815E2DC: .4byte 0x00003d42 +_0815E2E0: + ldr r1, [r4] + adds r0, r1, r5 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815E384 @ =0x00003d42 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 +_0815E2FA: + strb r0, [r1] + ldr r6, _0815E388 @ =gUnknown_3005008 + ldr r2, [r6] + ldr r5, _0815E38C @ =0x00003d34 + adds r0, r2, r5 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0 + movs r0, 0xF5 + lsls r0, 6 + adds r2, r0 + movs r0, 0 + mov r8, r0 + mov r0, r8 + strb r0, [r2] + ldr r0, [r6] + adds r1, r0, r5 + ldr r2, [r1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + ldr r4, _0815E390 @ =0x00003d38 + adds r1, r4 + adds r0, r1 + bl sub_80008C0 + ldr r2, [r6] + adds r3, r2, r5 + ldr r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r4, r2, r4 + adds r4, r0 + mov r0, r8 + str r0, [r4] + ldr r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0 + ldr r3, _0815E384 @ =0x00003d42 + adds r2, r3 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r1, [r6] + adds r5, r1, r5 + ldr r2, [r5] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + adds r1, r3 + ldrb r2, [r1] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815E384: .4byte 0x00003d42 +_0815E388: .4byte gUnknown_3005008 +_0815E38C: .4byte 0x00003d34 +_0815E390: .4byte 0x00003d38 + thumb_func_end sub_815E28C + + thumb_func_start sub_815E394 +sub_815E394: @ 815E394 + push {lr} + bl sub_80008CC + ldr r3, _0815E3F8 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r3] + ldr r0, _0815E3FC @ =gUnknown_3005008 + ldr r2, [r0] + ldr r1, _0815E400 @ =0x00003d34 + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0 + ldr r0, _0815E404 @ =0x00003d42 + adds r2, r0 + ldrb r0, [r2] + lsls r0, 29 + cmp r0, 0 + bge _0815E3C2 + movs r0, 0x1 + strh r0, [r3] +_0815E3C2: + ldrb r2, [r2] + lsls r0, r2, 31 + cmp r0, 0 + beq _0815E3D6 + lsls r0, r2, 30 + cmp r0, 0 + bge _0815E3D6 + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] +_0815E3D6: + ldr r0, _0815E3FC @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815E400 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815E404 @ =0x00003d42 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0815E3F8: .4byte gUnknown_20370D0 +_0815E3FC: .4byte gUnknown_3005008 +_0815E400: .4byte 0x00003d34 +_0815E404: .4byte 0x00003d42 + thumb_func_end sub_815E394 + + thumb_func_start sub_815E408 +sub_815E408: @ 815E408 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _0815E444 @ =gUnknown_847A2B4 + ldr r0, _0815E448 @ =gUnknown_203F458 + ldr r0, [r0] + ldrb r0, [r0, 0xF] + lsls r0, 1 + adds r0, r1 + ldrh r4, [r0] + ldr r0, _0815E44C @ =gUnknown_3005008 + mov r8, r0 + ldr r2, [r0] + ldr r7, _0815E450 @ =0x00003d34 + adds r0, r2, r7 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0 + ldr r6, _0815E454 @ =0x00003d42 + adds r2, r6 + ldrb r0, [r2] + lsls r0, 31 + lsrs r5, r0, 31 + cmp r5, 0 + beq _0815E45C + ldr r1, _0815E458 @ =gUnknown_20370D0 + movs r0, 0x2 + b _0815E4A0 + .align 2, 0 +_0815E444: .4byte gUnknown_847A2B4 +_0815E448: .4byte gUnknown_203F458 +_0815E44C: .4byte gUnknown_3005008 +_0815E450: .4byte 0x00003d34 +_0815E454: .4byte 0x00003d42 +_0815E458: .4byte gUnknown_20370D0 +_0815E45C: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_809A084 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0815E49C + ldr r1, _0815E494 @ =gUnknown_2021CF0 + adds r0, r4, 0 + bl sub_8099E90 + mov r0, r8 + ldr r1, [r0] + adds r0, r1, r7 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + adds r1, r6 + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] + ldr r0, _0815E498 @ =gUnknown_20370D0 + strh r5, [r0] + b _0815E4A2 + .align 2, 0 +_0815E494: .4byte gUnknown_2021CF0 +_0815E498: .4byte gUnknown_20370D0 +_0815E49C: + ldr r1, _0815E4AC @ =gUnknown_20370D0 + movs r0, 0x1 +_0815E4A0: + strh r0, [r1] +_0815E4A2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815E4AC: .4byte gUnknown_20370D0 + thumb_func_end sub_815E408 + + thumb_func_start sub_815E4B0 +sub_815E4B0: @ 815E4B0 + push {r4-r6,lr} + ldr r6, _0815E4D8 @ =gUnknown_3005008 + ldr r2, [r6] + ldr r1, _0815E4DC @ =0x00003d34 + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r1, r0, 2 + adds r0, r2, r1 + ldr r3, _0815E4E0 @ =0x00003d42 + adds r0, r3 + ldrb r0, [r0] + lsls r0, 30 + lsrs r5, r0, 31 + cmp r5, 0 + beq _0815E4E8 + ldr r1, _0815E4E4 @ =gUnknown_20370D0 + movs r0, 0x2 + b _0815E534 + .align 2, 0 +_0815E4D8: .4byte gUnknown_3005008 +_0815E4DC: .4byte 0x00003d34 +_0815E4E0: .4byte 0x00003d42 +_0815E4E4: .4byte gUnknown_20370D0 +_0815E4E8: + ldr r4, _0815E520 @ =0x00003d38 + adds r0, r1, r4 + adds r0, r2, r0 + adds r0, 0x4 + bl sub_815EDDC + ldr r3, [r6] + ldr r2, _0815E524 @ =0x00003d34 + adds r1, r3, r2 + ldr r2, [r1] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r4, r3, r4 + adds r4, r1 + ldr r4, [r4] + cmp r0, r4 + bls _0815E530 + adds r0, r1, r3 + ldr r3, _0815E528 @ =0x00003d3c + adds r0, r3 + adds r1, r4, 0 + bl sub_815EDF4 + ldr r0, _0815E52C @ =gUnknown_20370D0 + strh r5, [r0] + b _0815E536 + .align 2, 0 +_0815E520: .4byte 0x00003d38 +_0815E524: .4byte 0x00003d34 +_0815E528: .4byte 0x00003d3c +_0815E52C: .4byte gUnknown_20370D0 +_0815E530: + ldr r1, _0815E55C @ =gUnknown_20370D0 + movs r0, 0x1 +_0815E534: + strh r0, [r1] +_0815E536: + ldr r0, _0815E560 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815E564 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r3, _0815E568 @ =0x00003d42 + adds r1, r3 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815E55C: .4byte gUnknown_20370D0 +_0815E560: .4byte gUnknown_3005008 +_0815E564: .4byte 0x00003d34 +_0815E568: .4byte 0x00003d42 + thumb_func_end sub_815E4B0 + + thumb_func_start sub_815E56C +sub_815E56C: @ 815E56C + push {r4,lr} + ldr r0, _0815E5A0 @ =gUnknown_3005008 + ldr r4, [r0] + ldr r1, _0815E5A4 @ =0x00003d34 + adds r0, r4, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r3, r0, 2 + adds r0, r4, r3 + ldr r1, _0815E5A8 @ =0x00003d42 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + blt _0815E5BA + subs r1, 0xA + adds r0, r4, r1 + adds r2, r0, r3 + ldr r1, [r2] + ldr r0, _0815E5AC @ =0x00034bbe + cmp r1, r0 + bls _0815E5B0 + adds r0, 0x1 + str r0, [r2] + b _0815E5BA + .align 2, 0 +_0815E5A0: .4byte gUnknown_3005008 +_0815E5A4: .4byte 0x00003d34 +_0815E5A8: .4byte 0x00003d42 +_0815E5AC: .4byte 0x00034bbe +_0815E5B0: + ldr r1, _0815E5C0 @ =0x00003d38 + adds r0, r3, r1 + adds r0, r4, r0 + bl sub_80008C0 +_0815E5BA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E5C0: .4byte 0x00003d38 + thumb_func_end sub_815E56C + + thumb_func_start sub_815E5C4 +sub_815E5C4: @ 815E5C4 + ldr r0, _0815E5E4 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815E5E8 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815E5EC @ =0x00003d42 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0815E5E4: .4byte gUnknown_3005008 +_0815E5E8: .4byte 0x00003d34 +_0815E5EC: .4byte 0x00003d42 + thumb_func_end sub_815E5C4 + + thumb_func_start sub_815E5F0 +sub_815E5F0: @ 815E5F0 + push {lr} + ldr r0, _0815E620 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r1, _0815E624 @ =0x00003d34 + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0 + ldr r0, _0815E628 @ =0x00003d42 + adds r2, r0 + ldrb r1, [r2] + lsls r0, r1, 28 + cmp r0, 0 + bge _0815E630 + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r1, _0815E62C @ =gUnknown_20370D0 + movs r0, 0 + b _0815E64C + .align 2, 0 +_0815E620: .4byte gUnknown_3005008 +_0815E624: .4byte 0x00003d34 +_0815E628: .4byte 0x00003d42 +_0815E62C: .4byte gUnknown_20370D0 +_0815E630: + lsls r0, r1, 27 + cmp r0, 0 + bge _0815E648 + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldr r1, _0815E644 @ =gUnknown_20370D0 + movs r0, 0x1 + b _0815E64C + .align 2, 0 +_0815E644: .4byte gUnknown_20370D0 +_0815E648: + ldr r1, _0815E654 @ =gUnknown_20370D0 + movs r0, 0x2 +_0815E64C: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0815E654: .4byte gUnknown_20370D0 + thumb_func_end sub_815E5F0 + + thumb_func_start sub_815E658 +sub_815E658: @ 815E658 + push {r4-r6,lr} + ldr r4, _0815E700 @ =gUnknown_3005008 + ldr r2, [r4] + ldr r6, _0815E704 @ =0x00003d34 + adds r0, r2, r6 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r5, _0815E708 @ =0x00003d38 + adds r2, r5 + adds r2, r0 + ldr r1, [r2] + ldr r0, _0815E70C @ =0x00034bbe + cmp r1, r0 + bls _0815E690 + bl sub_80008CC + ldr r1, [r4] + adds r0, r1, r6 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r5 + adds r1, r0 + ldr r0, _0815E710 @ =0x00034bbf + str r0, [r1] +_0815E690: + ldr r1, [r4] + adds r0, r1, r6 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r5 + adds r1, r0 + ldr r4, [r1] + movs r5, 0xE1 + lsls r5, 4 + adds r0, r4, 0 + adds r1, r5, 0 + bl __divsi3 + adds r6, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + movs r1, 0x3C + bl __divsi3 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0x3C + bl __modsi3 + movs r1, 0xA8 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r4, r0, 0 + ldr r0, _0815E714 @ =gUnknown_2021CD0 + adds r1, r6, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815E718 @ =gUnknown_2021CF0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815E71C @ =gUnknown_2021D04 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815E700: .4byte gUnknown_3005008 +_0815E704: .4byte 0x00003d34 +_0815E708: .4byte 0x00003d38 +_0815E70C: .4byte 0x00034bbe +_0815E710: .4byte 0x00034bbf +_0815E714: .4byte gUnknown_2021CD0 +_0815E718: .4byte gUnknown_2021CF0 +_0815E71C: .4byte gUnknown_2021D04 + thumb_func_end sub_815E658 + + thumb_func_start sub_815E720 +sub_815E720: @ 815E720 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + bl sub_815EC0C + ldr r0, _0815E85C @ =gUnknown_847A218 + bl sub_8003CE4 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_80F6E9C + adds r0, r7, 0 + movs r1, 0 + bl sub_80F6F1C + ldr r2, _0815E860 @ =gUnknown_83FE982 + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + movs r3, 0x4A + bl sub_8002C48 + movs r0, 0 + mov r8, r0 + movs r1, 0xB8 + lsls r1, 22 + mov r10, r1 + movs r0, 0x90 + lsls r0, 22 + mov r9, r0 +_0815E76C: + ldr r0, _0815E864 @ =gUnknown_3005008 + ldr r2, [r0] + ldr r1, _0815E868 @ =0x00003d34 + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _0815E86C @ =0x00003d3c + adds r0, r1 + bl sub_815EDDC + adds r4, r0, 0 + movs r5, 0xE1 + lsls r5, 4 + adds r1, r5, 0 + bl __divsi3 + adds r6, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + movs r1, 0x3C + bl __divsi3 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0x3C + bl __modsi3 + movs r1, 0xA8 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r4, r0, 0 + ldr r0, _0815E870 @ =gUnknown_2021CD0 + adds r1, r6, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815E874 @ =gUnknown_2021CF0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815E878 @ =gUnknown_2021D04 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815E87C @ =gUnknown_2021D18 + ldr r1, _0815E880 @ =gUnknown_83FE998 + bl sub_8008FCC + ldr r1, _0815E884 @ =gUnknown_83FE9C4 + mov r0, r8 + subs r0, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + mov r1, r9 + lsrs r0, r1, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + movs r3, 0x18 + bl sub_8002C48 + mov r1, r10 + lsrs r0, r1, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + ldr r2, _0815E87C @ =gUnknown_2021D18 + movs r3, 0x60 + bl sub_8002C48 + movs r0, 0xA0 + lsls r0, 21 + add r10, r0 + add r9, r0 + movs r1, 0x1 + add r8, r1 + mov r0, r8 + cmp r0, 0x3 + ble _0815E76C + adds r0, r7, 0 + bl sub_8003FA0 + adds r0, r7, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0815E888 @ =0x00004001 + adds r1, r7, 0 + bl sub_806E584 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815E85C: .4byte gUnknown_847A218 +_0815E860: .4byte gUnknown_83FE982 +_0815E864: .4byte gUnknown_3005008 +_0815E868: .4byte 0x00003d34 +_0815E86C: .4byte 0x00003d3c +_0815E870: .4byte gUnknown_2021CD0 +_0815E874: .4byte gUnknown_2021CF0 +_0815E878: .4byte gUnknown_2021D04 +_0815E87C: .4byte gUnknown_2021D18 +_0815E880: .4byte gUnknown_83FE998 +_0815E884: .4byte gUnknown_83FE9C4 +_0815E888: .4byte 0x00004001 + thumb_func_end sub_815E720 + + thumb_func_start sub_815E88C +sub_815E88C: @ 815E88C + push {r4,lr} + ldr r0, _0815E8B0 @ =0x00004001 + bl sub_806E568 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_810F4D8 + adds r0, r4, 0 + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E8B0: .4byte 0x00004001 + thumb_func_end sub_815E88C + + thumb_func_start sub_815E8B4 +sub_815E8B4: @ 815E8B4 + push {r4,lr} + ldr r4, _0815E8C8 @ =gUnknown_20370D0 + bl sub_8040CC4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E8C8: .4byte gUnknown_20370D0 + thumb_func_end sub_815E8B4 + + thumb_func_start sub_815E8CC +sub_815E8CC: @ 815E8CC + push {lr} + ldr r0, _0815E8EC @ =gUnknown_203F458 + ldr r1, [r0] + ldrb r0, [r1, 0x4] + ldrb r2, [r1, 0xD] + cmp r0, r2 + beq _0815E8F8 + ldr r0, _0815E8F0 @ =gUnknown_2021CD0 + ldrb r1, [r1, 0x4] + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + ldr r1, _0815E8F4 @ =gUnknown_20370D0 + movs r0, 0x1 + b _0815E8FC + .align 2, 0 +_0815E8EC: .4byte gUnknown_203F458 +_0815E8F0: .4byte gUnknown_2021CD0 +_0815E8F4: .4byte gUnknown_20370D0 +_0815E8F8: + ldr r1, _0815E904 @ =gUnknown_20370D0 + movs r0, 0 +_0815E8FC: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0815E904: .4byte gUnknown_20370D0 + thumb_func_end sub_815E8CC + + thumb_func_start sub_815E908 +sub_815E908: @ 815E908 + push {lr} + ldr r0, _0815E928 @ =gUnknown_2036DFC + ldrh r1, [r0, 0x12] + ldr r0, _0815E92C @ =0x00000129 + cmp r1, r0 + bne _0815E938 + ldr r0, _0815E930 @ =0x00004082 + bl sub_806E568 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + bne _0815E938 + ldr r0, _0815E934 @ =gUnknown_20370D0 + strh r1, [r0] + b _0815E93E + .align 2, 0 +_0815E928: .4byte gUnknown_2036DFC +_0815E92C: .4byte 0x00000129 +_0815E930: .4byte 0x00004082 +_0815E934: .4byte gUnknown_20370D0 +_0815E938: + ldr r1, _0815E944 @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] +_0815E93E: + pop {r0} + bx r0 + .align 2, 0 +_0815E944: .4byte gUnknown_20370D0 + thumb_func_end sub_815E908 + + thumb_func_start sub_815E948 +sub_815E948: @ 815E948 + push {r4,lr} + ldr r0, _0815E97C @ =0x00004001 + bl sub_806E568 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _0815E980 @ =gUnknown_203F458 + ldr r3, [r0] + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r2 + lsls r1, 3 + ldrb r2, [r3] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r1, r0 + adds r3, r1 + ldrb r1, [r3, 0x1B] + movs r3, 0 + ldr r2, _0815E984 @ =gUnknown_847A074 + ldr r0, _0815E988 @ =gUnknown_825393E + adds r1, r0 + b _0815E994 + .align 2, 0 +_0815E97C: .4byte 0x00004001 +_0815E980: .4byte gUnknown_203F458 +_0815E984: .4byte gUnknown_847A074 +_0815E988: .4byte gUnknown_825393E +_0815E98C: + adds r2, 0x4 + adds r3, 0x1 + cmp r3, 0x68 + bhi _0815E99C +_0815E994: + ldrb r0, [r2] + ldrb r4, [r1] + cmp r0, r4 + bne _0815E98C +_0815E99C: + cmp r3, 0x69 + beq _0815E9B0 + ldr r1, _0815E9AC @ =gUnknown_847A074 + lsls r0, r3, 2 + adds r0, r1 + ldrb r2, [r0, 0x1] + b _0815E9B2 + .align 2, 0 +_0815E9AC: .4byte gUnknown_847A074 +_0815E9B0: + movs r2, 0 +_0815E9B2: + ldr r0, _0815E9C4 @ =gUnknown_847A2D2 + lsls r1, r2, 1 + adds r1, r0 + ldrh r0, [r1] + bl sub_8071A74 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E9C4: .4byte gUnknown_847A2D2 + thumb_func_end sub_815E948 + + thumb_func_start sub_815E9C8 +sub_815E9C8: @ 815E9C8 + ldr r3, _0815E9EC @ =gUnknown_20370D0 + ldr r0, _0815E9F0 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815E9F4 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815E9F8 @ =0x00003d42 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 29 + lsrs r0, 31 + strh r0, [r3] + bx lr + .align 2, 0 +_0815E9EC: .4byte gUnknown_20370D0 +_0815E9F0: .4byte gUnknown_3005008 +_0815E9F4: .4byte 0x00003d34 +_0815E9F8: .4byte 0x00003d42 + thumb_func_end sub_815E9C8 + + thumb_func_start sub_815E9FC +sub_815E9FC: @ 815E9FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _0815EABC @ =0x00004001 + bl sub_806E568 + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_815EBB8 + mov r9, r0 + ldr r0, _0815EAC0 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r2, _0815EAC4 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + movs r0, 0xF5 + lsls r0, 6 + adds r1, r0 + ldrb r5, [r1] + bl sub_803DA34 + ldr r1, _0815EAC8 @ =gUnknown_203F458 + mov r10, r1 + ldr r6, [r1] + ldrb r1, [r6] + lsls r0, r1, 5 + subs r0, r1 + lsls r7, r0, 5 + adds r0, r6, r7 + ldrb r0, [r0, 0xE] + cmp r0, 0x1 + beq _0815EAD4 + cmp r0, 0x1 + ble _0815EA56 + cmp r0, 0x2 + bne _0815EA56 + b _0815EB58 +_0815EA56: + movs r6, 0 + lsls r5, 1 + str r5, [sp] + lsls r0, r4, 2 + mov r5, r10 + adds r0, r4 + lsls r0, 3 + adds r0, r4 + lsls r7, r0, 3 + adds r2, r7, 0x4 + mov r8, r2 +_0815EA6C: + ldr r1, _0815EACC @ =gUnknown_847A2EE + ldr r2, [sp] + adds r0, r6, r2 + adds r0, r1 + ldrb r2, [r0] + ldr r3, [r5] + movs r0, 0x2C + adds r4, r2, 0 + muls r4, r0 + adds r2, r4, r7 + ldrb r1, [r3] + lsls r0, r1, 5 + subs r0, r1 + lsls r0, 5 + adds r2, r0 + adds r3, r2 + adds r3, 0x5C + mov r0, r9 + strb r0, [r3] + movs r0, 0x64 + muls r0, r6 + ldr r1, _0815EAD0 @ =gUnknown_202402C + adds r0, r1 + ldr r1, [r5] + ldrb r3, [r1] + lsls r2, r3, 5 + subs r2, r3 + lsls r2, 5 + adds r2, 0xC + adds r1, r2 + add r1, r8 + adds r4, 0x40 + adds r1, r4 + bl sub_803E0A4 + adds r6, 0x1 + cmp r6, 0x1 + ble _0815EA6C + b _0815EB9E + .align 2, 0 +_0815EABC: .4byte 0x00004001 +_0815EAC0: .4byte gUnknown_3005008 +_0815EAC4: .4byte 0x00003d34 +_0815EAC8: .4byte gUnknown_203F458 +_0815EACC: .4byte gUnknown_847A2EE +_0815EAD0: .4byte gUnknown_202402C +_0815EAD4: + ldr r4, _0815EB50 @ =gUnknown_847A2FE + lsls r5, 1 + adds r0, r5, r4 + ldrb r2, [r0] + movs r1, 0x2C + mov r8, r1 + mov r3, r8 + muls r3, r2 + adds r0, r3, r7 + adds r0, r6, r0 + adds r0, 0x5C + mov r2, r9 + strb r2, [r0] + ldr r6, _0815EB54 @ =gUnknown_202402C + mov r0, r10 + ldr r1, [r0] + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r0, 0xC + adds r1, r0 + adds r3, 0x44 + adds r1, r3 + adds r0, r6, 0 + bl sub_803E0A4 + adds r4, 0x1 + adds r5, r4 + ldrb r2, [r5] + mov r0, r10 + ldr r1, [r0] + mov r3, r8 + muls r3, r2 + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r0, r3, r0 + adds r1, r0 + movs r2, 0xD2 + lsls r2, 1 + adds r1, r2 + mov r0, r9 + strb r0, [r1] + adds r6, 0x64 + mov r2, r10 + ldr r1, [r2] + ldrb r2, [r1] + lsls r0, r2, 5 + subs r0, r2 + lsls r0, 5 + adds r0, 0xC + adds r1, r0 + movs r0, 0xC6 + lsls r0, 1 + adds r3, r0 + adds r1, r3 + adds r0, r6, 0 + bl sub_803E0A4 + b _0815EB9E + .align 2, 0 +_0815EB50: .4byte gUnknown_847A2FE +_0815EB54: .4byte gUnknown_202402C +_0815EB58: + ldr r1, _0815EBB0 @ =gUnknown_847A30E + lsls r0, r5, 1 + adds r0, r5 + adds r0, r4, r0 + adds r0, r1 + ldrb r2, [r0] + movs r0, 0x2C + adds r5, r2, 0 + muls r5, r0 + lsls r3, r4, 2 + adds r3, r4 + lsls r3, 3 + adds r3, r4 + lsls r3, 3 + adds r0, r5, r3 + adds r0, r7 + adds r0, r6, r0 + adds r0, 0x5C + mov r1, r9 + strb r1, [r0] + ldr r0, _0815EBB4 @ =gUnknown_202402C + mov r2, r10 + ldr r1, [r2] + ldrb r4, [r1] + lsls r2, r4, 5 + subs r2, r4 + lsls r2, 5 + adds r2, 0xC + adds r1, r2 + adds r3, 0x4 + adds r1, r3 + adds r5, 0x40 + adds r1, r5 + bl sub_803E0A4 +_0815EB9E: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815EBB0: .4byte gUnknown_847A30E +_0815EBB4: .4byte gUnknown_202402C + thumb_func_end sub_815E9FC + + thumb_func_start sub_815EBB8 +sub_815EBB8: @ 815EBB8 + push {r4-r6,lr} + movs r6, 0 + movs r5, 0 +_0815EBBE: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0815EC08 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + movs r2, 0 + bl sub_803FBE8 + cmp r0, 0 + beq _0815EBF8 + adds r0, r4, 0 + movs r1, 0x41 + movs r2, 0 + bl sub_803FBE8 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0815EBF8 + adds r0, r4, 0 + movs r1, 0x38 + movs r2, 0 + bl sub_803FBE8 + cmp r0, r6 + ble _0815EBF8 + adds r6, r0, 0 +_0815EBF8: + adds r5, 0x1 + cmp r5, 0x5 + ble _0815EBBE + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0815EC08: .4byte gUnknown_2024284 + thumb_func_end sub_815EBB8 + + thumb_func_start sub_815EC0C +sub_815EC0C: @ 815EC0C + push {r4,lr} + ldr r4, _0815EC70 @ =gUnknown_3005008 + ldr r2, [r4] + ldr r1, _0815EC74 @ =0x00003d34 + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r2, r0 + ldr r0, _0815EC78 @ =0x00003d41 + adds r2, r0 + ldr r0, _0815EC7C @ =gUnknown_203F458 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r0, [r2] + cmp r0, r1 + beq _0815EC6A + strb r1, [r2] + ldr r2, [r4] + ldr r1, _0815EC74 @ =0x00003d34 + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r2, _0815EC80 @ =0x00003d3c + adds r0, r2 + ldr r1, _0815EC84 @ =0x00034bbf + bl sub_815EDF4 + ldr r1, [r4] + ldr r2, _0815EC74 @ =0x00003d34 + adds r0, r1, r2 + ldr r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815EC88 @ =0x00003d42 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] +_0815EC6A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815EC70: .4byte gUnknown_3005008 +_0815EC74: .4byte 0x00003d34 +_0815EC78: .4byte 0x00003d41 +_0815EC7C: .4byte gUnknown_203F458 +_0815EC80: .4byte 0x00003d3c +_0815EC84: .4byte 0x00034bbf +_0815EC88: .4byte 0x00003d42 + thumb_func_end sub_815EC0C + + thumb_func_start sub_815EC8C +sub_815EC8C: @ 815EC8C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r0, 0 + mov r8, r0 + bl sub_815DC8C + movs r0, 0xD8 + str r0, [sp] + movs r0, 0x90 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8004378 + bl sub_815EC0C + ldr r4, _0815EDB4 @ =gUnknown_847A22C + str r4, [sp] + mov r0, r8 + str r0, [sp, 0x4] + ldr r0, _0815EDB8 @ =gUnknown_83FE982 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0x4A + movs r3, 0 + bl sub_812E51C + movs r7, 0 + movs r0, 0x90 + lsls r0, 22 + mov r10, r0 + ldr r0, _0815EDBC @ =0x00003d38 + mov r9, r0 +_0815ECDC: + ldr r0, _0815EDC0 @ =gUnknown_3005008 + ldr r0, [r0] + add r0, r9 + adds r0, 0x4 + bl sub_815EDDC + adds r4, r0, 0 + movs r5, 0xE1 + lsls r5, 4 + adds r1, r5, 0 + bl __divsi3 + adds r6, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + bl __modsi3 + adds r4, r0, 0 + movs r1, 0x3C + bl __divsi3 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0x3C + bl __modsi3 + movs r1, 0xA8 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + adds r4, r0, 0 + ldr r0, _0815EDC4 @ =gUnknown_2021CD0 + adds r1, r6, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815EDC8 @ =gUnknown_2021CF0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815EDCC @ =gUnknown_2021D04 + adds r1, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0815EDD0 @ =gUnknown_2021D18 + ldr r1, _0815EDD4 @ =gUnknown_83FE998 + bl sub_8008FCC + lsls r1, r7, 2 + mov r0, r10 + lsrs r4, r0, 24 + ldr r0, _0815EDB4 @ =gUnknown_847A22C + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, _0815EDD8 @ =gUnknown_83FE9C4 + adds r1, r0 + ldr r0, [r1] + str r0, [sp, 0x8] + mov r0, r8 + movs r1, 0x2 + movs r2, 0x18 + adds r3, r4, 0 + bl sub_812E51C + ldr r0, _0815EDB4 @ =gUnknown_847A22C + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + ldr r0, _0815EDD0 @ =gUnknown_2021D18 + str r0, [sp, 0x8] + mov r0, r8 + movs r1, 0x2 + movs r2, 0x60 + adds r3, r4, 0 + bl sub_812E51C + movs r0, 0xA0 + lsls r0, 21 + add r10, r0 + movs r0, 0xC + add r9, r0 + adds r7, 0x1 + cmp r7, 0x3 + ble _0815ECDC + mov r0, r8 + bl sub_8003FA0 + mov r0, r8 + movs r1, 0x3 + bl sub_8003F20 + bl sub_815DD2C + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815EDB4: .4byte gUnknown_847A22C +_0815EDB8: .4byte gUnknown_83FE982 +_0815EDBC: .4byte 0x00003d38 +_0815EDC0: .4byte gUnknown_3005008 +_0815EDC4: .4byte gUnknown_2021CD0 +_0815EDC8: .4byte gUnknown_2021CF0 +_0815EDCC: .4byte gUnknown_2021D04 +_0815EDD0: .4byte gUnknown_2021D18 +_0815EDD4: .4byte gUnknown_83FE998 +_0815EDD8: .4byte gUnknown_83FE9C4 + thumb_func_end sub_815EC8C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/trig.s b/asm/trig.s new file mode 100644 index 000000000..386cbe4ca --- /dev/null +++ b/asm/trig.s @@ -0,0 +1,97 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8044E30 +sub_8044E30: @ 8044E30 + lsls r1, 16 + asrs r1, 16 + ldr r2, _08044E48 @ =gUnknown_825E074 + lsls r0, 16 + asrs r0, 15 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + muls r0, r1 + lsls r0, 8 + asrs r0, 16 + bx lr + .align 2, 0 +_08044E48: .4byte gUnknown_825E074 + thumb_func_end sub_8044E30 + + thumb_func_start sub_8044E4C +sub_8044E4C: @ 8044E4C + lsls r1, 16 + asrs r1, 16 + ldr r2, _08044E68 @ =gUnknown_825E074 + lsls r0, 16 + asrs r0, 15 + adds r0, 0x80 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + muls r0, r1 + lsls r0, 8 + asrs r0, 16 + bx lr + .align 2, 0 +_08044E68: .4byte gUnknown_825E074 + thumb_func_end sub_8044E4C + + thumb_func_start sub_8044E6C +sub_8044E6C: @ 8044E6C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r5, 0 + movs r1, 0xB4 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + movs r1, 0xB4 + bl __udivsi3 + movs r1, 0x1 + ands r0, r1 + ldr r1, _08044EA0 @ =gUnknown_825E2F4 + lsls r4, 1 + adds r4, r1 + ldrh r1, [r4] + cmp r0, 0 + bne _08044EA4 + lsls r0, r1, 16 + b _08044EA8 + .align 2, 0 +_08044EA0: .4byte gUnknown_825E2F4 +_08044EA4: + lsls r0, r1, 16 + negs r0, r0 +_08044EA8: + asrs r0, 16 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8044E6C + + thumb_func_start sub_8044EB0 +sub_8044EB0: @ 8044EB0 + push {lr} + lsls r0, 16 + movs r1, 0xB4 + lsls r1, 15 + adds r0, r1 + lsrs r0, 16 + bl sub_8044E6C + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8044EB0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s new file mode 100644 index 000000000..5763d3e6d --- /dev/null +++ b/asm/union_room_chat.s @@ -0,0 +1,5973 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8128420 +sub_8128420: @ 8128420 + push {r4,lr} + ldr r4, _08128450 @ =gUnknown_203B0E0 + movs r0, 0xDC + lsls r0, 1 + bl sub_8002B9C + str r0, [r4] + bl sub_812845C + ldr r1, _08128454 @ =gUnknown_30030E0 + movs r0, 0x14 + strh r0, [r1] + bl sub_812B4AC + movs r0, 0 + bl sub_80006F4 + ldr r0, _08128458 @ =sub_81284E0 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128450: .4byte gUnknown_203B0E0 +_08128454: .4byte gUnknown_30030E0 +_08128458: .4byte sub_81284E0 + thumb_func_end sub_8128420 + + thumb_func_start sub_812845C +sub_812845C: @ 812845C + push {r4-r7,lr} + adds r4, r0, 0 + movs r5, 0 + movs r0, 0 + strh r0, [r4, 0x4] + strh r0, [r4, 0x6] + strb r5, [r4, 0x10] + strb r5, [r4, 0x11] + strb r5, [r4, 0x12] + strb r5, [r4, 0x14] + strb r5, [r4, 0x15] + strb r5, [r4, 0x16] + movs r0, 0xFF + strb r0, [r4, 0x1A] + bl sub_800A088 + strb r0, [r4, 0xD] + bl sub_800A404 + strb r0, [r4, 0x13] + strb r5, [r4, 0x17] + strb r5, [r4, 0x18] + movs r1, 0xC8 + lsls r1, 1 + adds r0, r4, r1 + bl sub_8129560 + ldr r7, _081284B4 @ =gUnknown_3005008 + ldr r6, _081284B8 @ =0x00003ad4 + adds r4, 0xB9 + movs r5, 0x9 +_0812849A: + ldr r1, [r7] + adds r1, r6 + adds r0, r4, 0 + bl sub_8008D84 + adds r6, 0x15 + adds r4, 0x15 + subs r5, 0x1 + cmp r5, 0 + bge _0812849A + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081284B4: .4byte gUnknown_3005008 +_081284B8: .4byte 0x00003ad4 + thumb_func_end sub_812845C + + thumb_func_start sub_81284BC +sub_81284BC: @ 81284BC + push {r4,lr} + ldr r4, _081284DC @ =gUnknown_203B0E0 + ldr r0, [r4] + ldrb r0, [r0, 0xE] + bl sub_8077508 + ldr r0, [r4] + ldrb r0, [r0, 0xF] + bl sub_8077508 + ldr r0, [r4] + bl sub_8002BC4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081284DC: .4byte gUnknown_203B0E0 + thumb_func_end sub_81284BC + + thumb_func_start sub_81284E0 +sub_81284E0: @ 81284E0 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _081284FC @ =gUnknown_30030F0 + movs r1, 0x87 + lsls r1, 3 + adds r6, r0, r1 + ldrb r0, [r6] + cmp r0, 0x1 + beq _08128518 + cmp r0, 0x1 + bgt _08128500 + cmp r0, 0 + beq _08128506 + b _08128598 + .align 2, 0 +_081284FC: .4byte gUnknown_30030F0 +_08128500: + cmp r0, 0x2 + beq _08128554 + b _08128598 +_08128506: + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + bl sub_8129B14 + b _08128548 +_08128518: + bl sub_8129BFC + bl sub_8129B78 + adds r5, r0, 0 + cmp r5, 0 + bne _08128598 + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + str r5, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _08128550 @ =sub_81285B4 + bl sub_80006F4 +_08128548: + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _08128598 + .align 2, 0 +_08128550: .4byte sub_81285B4 +_08128554: + bl sub_80704D0 + ldr r0, _081285A0 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08128598 + ldr r0, _081285A4 @ =sub_81285CC + bl sub_8000544 + movs r0, 0x11 + movs r1, 0 + bl sub_8113550 + ldr r0, _081285A8 @ =sub_81285E8 + movs r1, 0x8 + bl sub_807741C + ldr r4, _081285AC @ =gUnknown_203B0E0 + ldr r1, [r4] + strb r0, [r1, 0xE] + ldr r0, _081285B0 @ =sub_81298F8 + movs r1, 0x7 + bl sub_807741C + ldr r1, [r4] + strb r0, [r1, 0xF] + bl sub_80FCEA8 + movs r0, 0xE8 + movs r1, 0x96 + bl sub_80FCD74 +_08128598: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081285A0: .4byte gUnknown_2037AB8 +_081285A4: .4byte sub_81285CC +_081285A8: .4byte sub_81285E8 +_081285AC: .4byte gUnknown_203B0E0 +_081285B0: .4byte sub_81298F8 + thumb_func_end sub_81284E0 + + thumb_func_start sub_81285B4 +sub_81285B4: @ 81285B4 + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + bl sub_8087F54 + pop {r0} + bx r0 + thumb_func_end sub_81285B4 + + thumb_func_start sub_81285CC +sub_81285CC: @ 81285CC + push {lr} + bl sub_8077578 + bl sub_8129BFC + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_81285CC + + thumb_func_start sub_81285E8 +sub_81285E8: @ 81285E8 + push {r4,lr} + ldr r4, _08128600 @ =gUnknown_203B0E0 + ldr r0, [r4] + ldrb r0, [r0, 0x17] + cmp r0, 0x2 + beq _0812860E + cmp r0, 0x2 + bgt _08128604 + cmp r0, 0x1 + beq _0812860A + b _0812861E + .align 2, 0 +_08128600: .4byte gUnknown_203B0E0 +_08128604: + cmp r0, 0x3 + beq _08128612 + b _0812861E +_0812860A: + movs r0, 0x6 + b _08128614 +_0812860E: + movs r0, 0x7 + b _08128614 +_08128612: + movs r0, 0x8 +_08128614: + bl sub_8129218 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x17] +_0812861E: + ldr r1, _08128638 @ =gUnknown_845A880 + ldr r0, _0812863C @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrh r0, [r0, 0x4] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128638: .4byte gUnknown_845A880 +_0812863C: .4byte gUnknown_203B0E0 + thumb_func_end sub_81285E8 + + thumb_func_start sub_8128640 +sub_8128640: @ 8128640 + push {r4,lr} + ldr r4, _08128658 @ =gUnknown_203B0E0 + ldr r0, [r4] + ldrh r1, [r0, 0x6] + cmp r1, 0x1 + beq _08128674 + cmp r1, 0x1 + bgt _0812865C + cmp r1, 0 + beq _08128662 + b _081286BC + .align 2, 0 +_08128658: .4byte gUnknown_203B0E0 +_0812865C: + cmp r1, 0x2 + beq _081286AC + b _081286BC +_08128662: + movs r1, 0xC8 + lsls r1, 1 + adds r0, r1 + bl sub_8129568 + ldr r1, [r4] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] +_08128674: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _081286BC + bl sub_80FBA1C + cmp r0, 0 + bne _081286BC + ldr r4, _081286A8 @ =gUnknown_203B0E0 + ldr r1, [r4] + movs r0, 0xC8 + lsls r0, 1 + adds r1, r0 + movs r0, 0 + movs r2, 0x28 + bl sub_800A448 + lsls r0, 24 + cmp r0, 0 + beq _081286BC + ldr r1, [r4] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _081286BC + .align 2, 0 +_081286A8: .4byte gUnknown_203B0E0 +_081286AC: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _081286BC + movs r0, 0x1 + bl sub_8129218 +_081286BC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8128640 + + thumb_func_start sub_81286C4 +sub_81286C4: @ 81286C4 + push {r4,r5,lr} + ldr r5, _081286D8 @ =gUnknown_203B0E0 + ldr r3, [r5] + ldrh r0, [r3, 0x6] + cmp r0, 0 + beq _081286DC + cmp r0, 0x1 + beq _0812878A + b _081287AC + .align 2, 0 +_081286D8: .4byte gUnknown_203B0E0 +_081286DC: + ldr r1, _081286F8 @ =gUnknown_30030F0 + ldrh r2, [r1, 0x2E] + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _081286FC + ldrb r0, [r3, 0x15] + cmp r0, 0 + beq _081287AC + movs r0, 0x4 + bl sub_8129218 + b _081287AC + .align 2, 0 +_081286F8: .4byte gUnknown_30030F0 +_081286FC: + movs r0, 0x4 + ands r0, r2 + cmp r0, 0 + beq _0812870C + movs r0, 0x2 + bl sub_8129218 + b _081287AC +_0812870C: + ldrh r1, [r1, 0x30] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08128738 + ldrb r0, [r3, 0x15] + cmp r0, 0 + beq _08128730 + bl sub_81293AC + movs r0, 0x8 + movs r1, 0 + bl sub_8129C34 + ldr r1, [r5] + movs r0, 0x1 + strh r0, [r1, 0x6] + b _081287AC +_08128730: + movs r0, 0x3 + bl sub_8129218 + b _081287AC +_08128738: + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _08128754 + bl sub_81292D8 + movs r0, 0x8 + movs r1, 0 + bl sub_8129C34 + movs r0, 0x2 + movs r1, 0x1 + b _08128780 +_08128754: + movs r0, 0x80 + lsls r0, 1 + ands r0, r2 + cmp r0, 0 + beq _08128774 + ldrb r0, [r3, 0x10] + cmp r0, 0x3 + beq _0812876C + bl sub_81293D8 + movs r0, 0x8 + b _0812877E +_0812876C: + movs r0, 0x5 + bl sub_8129218 + b _081287AC +_08128774: + bl sub_8129228 + cmp r0, 0 + beq _081287AC + movs r0, 0x1 +_0812877E: + movs r1, 0 +_08128780: + bl sub_8129C34 + ldr r0, [r5] + strh r4, [r0, 0x6] + b _081287AC +_0812878A: + movs r0, 0 + bl sub_8129C8C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_8129C8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0 + bne _081287AC + cmp r1, 0 + bne _081287AC + ldr r0, [r5] + strh r1, [r0, 0x6] +_081287AC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81286C4 + + thumb_func_start sub_81287B4 +sub_81287B4: @ 81287B4 + push {r4-r6,lr} + ldr r0, _081287CC @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrh r0, [r0, 0x6] + cmp r0, 0x4 + bls _081287C2 + b _081288CE +_081287C2: + lsls r0, 2 + ldr r1, _081287D0 @ =_081287D4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081287CC: .4byte gUnknown_203B0E0 +_081287D0: .4byte _081287D4 + .align 2, 0 +_081287D4: + .4byte _081287E8 + .4byte _081287F2 + .4byte _08128810 + .4byte _0812889C + .4byte _081288B0 +_081287E8: + movs r0, 0x3 + movs r1, 0 + bl sub_8129C34 + b _081287FE +_081287F2: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _081288CE +_081287FE: + ldr r0, _0812880C @ =gUnknown_203B0E0 + ldr r1, [r0] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _081288CE + .align 2, 0 +_0812880C: .4byte gUnknown_203B0E0 +_08128810: + bl sub_810F998 + lsls r0, 24 + asrs r0, 8 + lsrs r6, r0, 16 + asrs r4, r0, 16 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _08128848 + adds r0, 0x1 + cmp r4, r0 + beq _08128868 + movs r0, 0x4 + movs r1, 0 + bl sub_8129C34 + ldr r5, _08128844 @ =gUnknown_203B0E0 + ldr r2, [r5] + ldrb r0, [r2, 0x10] + cmp r0, r4 + beq _08128870 + cmp r4, 0x3 + ble _08128880 + b _08128870 + .align 2, 0 +_08128844: .4byte gUnknown_203B0E0 +_08128848: + ldr r0, _08128864 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _081288CE + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_810F904 + b _081288CE + .align 2, 0 +_08128864: .4byte gUnknown_30030F0 +_08128868: + movs r0, 0x4 + movs r1, 0 + bl sub_8129C34 +_08128870: + ldr r0, _0812887C @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x3 + strh r0, [r1, 0x6] + b _081288CE + .align 2, 0 +_0812887C: .4byte gUnknown_203B0E0 +_08128880: + movs r1, 0 + strb r1, [r2, 0x11] + ldr r0, [r5] + strb r1, [r0, 0x12] + movs r0, 0x5 + movs r1, 0x1 + bl sub_8129C34 + ldr r0, [r5] + strb r6, [r0, 0x10] + ldr r1, [r5] + movs r0, 0x4 + strh r0, [r1, 0x6] + b _081288CE +_0812889C: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _081288CE + movs r0, 0x1 + bl sub_8129218 + b _081288CE +_081288B0: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _081288CE + movs r0, 0x1 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _081288CE + movs r0, 0x1 + bl sub_8129218 +_081288CE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81287B4 + + thumb_func_start sub_81288D4 +sub_81288D4: @ 81288D4 + push {r4,lr} + ldr r0, _081288EC @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrh r0, [r0, 0x6] + cmp r0, 0xA + bls _081288E2 + b _08128A94 +_081288E2: + lsls r0, 2 + ldr r1, _081288F0 @ =_081288F4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081288EC: .4byte gUnknown_203B0E0 +_081288F0: .4byte _081288F4 + .align 2, 0 +_081288F4: + .4byte _08128920 + .4byte _08128938 + .4byte _08128954 + .4byte _0812899C + .4byte _08128A44 + .4byte _08128A86 + .4byte _08128A94 + .4byte _08128A94 + .4byte _081289F0 + .4byte _081289B0 + .4byte _081289D4 +_08128920: + movs r0, 0x6 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128934 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x1 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_08128934: .4byte gUnknown_203B0E0 +_08128938: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + beq _08128946 + b _08128A94 +_08128946: + ldr r0, _08128950 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x2 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_08128950: .4byte gUnknown_203B0E0 +_08128954: + bl sub_812A568 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08128966 + cmp r1, 0 + ble _08128A00 + b _08128A0A +_08128966: + ldr r4, _0812898C @ =gUnknown_203B0E0 + ldr r1, [r4] + ldrb r0, [r1, 0x13] + cmp r0, 0 + bne _08128990 + movs r2, 0xC8 + lsls r2, 1 + adds r0, r1, r2 + bl sub_8129614 + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + ldr r1, [r4] + movs r0, 0x9 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_0812898C: .4byte gUnknown_203B0E0 +_08128990: + movs r2, 0xC8 + lsls r2, 1 + adds r0, r1, r2 + bl sub_81295C0 + b _08128A36 +_0812899C: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128A94 + movs r0, 0x1 + bl sub_8129218 + b _08128A94 +_081289B0: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128A94 + movs r0, 0x14 + movs r1, 0 + bl sub_8129C34 + ldr r0, _081289D0 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0xA + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_081289D0: .4byte gUnknown_203B0E0 +_081289D4: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128A94 + ldr r0, _081289EC @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x8 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_081289EC: .4byte gUnknown_203B0E0 +_081289F0: + bl sub_812A568 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08128A24 + cmp r1, 0 + bgt _08128A0A +_08128A00: + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08128A0E + b _08128A94 +_08128A0A: + cmp r1, 0x1 + bne _08128A94 +_08128A0E: + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128A20 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x3 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_08128A20: .4byte gUnknown_203B0E0 +_08128A24: + bl sub_80FA4A8 + ldr r4, _08128A40 @ =gUnknown_203B0E0 + ldr r0, [r4] + movs r1, 0xC8 + lsls r1, 1 + adds r0, r1 + bl sub_8129614 +_08128A36: + ldr r1, [r4] + movs r0, 0x4 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_08128A40: .4byte gUnknown_203B0E0 +_08128A44: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08128A94 + bl sub_80FBA1C + cmp r0, 0 + bne _08128A94 + ldr r4, _08128A7C @ =gUnknown_203B0E0 + ldr r1, [r4] + movs r2, 0xC8 + lsls r2, 1 + adds r1, r2 + movs r0, 0 + movs r2, 0x28 + bl sub_800A448 + lsls r0, 24 + cmp r0, 0 + beq _08128A94 + ldr r1, [r4] + ldrb r0, [r1, 0x13] + cmp r0, 0 + bne _08128A80 + movs r0, 0x6 + strh r0, [r1, 0x6] + b _08128A94 + .align 2, 0 +_08128A7C: .4byte gUnknown_203B0E0 +_08128A80: + movs r0, 0x5 + strh r0, [r1, 0x6] + b _08128A94 +_08128A86: + ldr r0, _08128A9C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08128A94 + movs r0, 0x9 + bl sub_8129218 +_08128A94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128A9C: .4byte gUnknown_3003F64 + thumb_func_end sub_81288D4 + + thumb_func_start sub_8128AA0 +sub_8128AA0: @ 8128AA0 + push {r4,lr} + ldr r1, _08128ABC @ =gUnknown_203B0E0 + ldr r0, [r1] + ldrh r0, [r0, 0x6] + adds r2, r1, 0 + cmp r0, 0x7 + bls _08128AB0 + b _08128BFC +_08128AB0: + lsls r0, 2 + ldr r1, _08128AC0 @ =_08128AC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128ABC: .4byte gUnknown_203B0E0 +_08128AC0: .4byte _08128AC4 + .align 2, 0 +_08128AC4: + .4byte _08128AE4 + .4byte _08128B08 + .4byte _08128B28 + .4byte _08128B4C + .4byte _08128B80 + .4byte _08128BA0 + .4byte _08128BC4 + .4byte _08128BE8 +_08128AE4: + ldr r0, _08128B00 @ =sub_81298F8 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08128AF2 + b _08128BFC +_08128AF2: + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128B04 @ =gUnknown_203B0E0 + ldr r1, [r0] + b _08128BDA + .align 2, 0 +_08128B00: .4byte sub_81298F8 +_08128B04: .4byte gUnknown_203B0E0 +_08128B08: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128BFC + movs r0, 0x12 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128B24 @ =gUnknown_203B0E0 + ldr r1, [r0] + b _08128BDA + .align 2, 0 +_08128B24: .4byte gUnknown_203B0E0 +_08128B28: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128BFC + ldr r4, _08128B48 @ =gUnknown_203B0E0 + ldr r0, [r4] + movs r1, 0xC8 + lsls r1, 1 + adds r0, r1 + bl sub_81295EC + ldr r1, [r4] + b _08128BDA + .align 2, 0 +_08128B48: .4byte gUnknown_203B0E0 +_08128B4C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08128BFC + bl sub_80FBA1C + cmp r0, 0 + bne _08128BFC + ldr r4, _08128B7C @ =gUnknown_203B0E0 + ldr r1, [r4] + movs r0, 0xC8 + lsls r0, 1 + adds r1, r0 + movs r0, 0 + movs r2, 0x28 + bl sub_800A448 + lsls r0, 24 + cmp r0, 0 + beq _08128BFC + ldr r1, [r4] + b _08128BDA + .align 2, 0 +_08128B7C: .4byte gUnknown_203B0E0 +_08128B80: + bl sub_800A4EC + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08128BFC + bl sub_80FBA1C + cmp r0, 0 + bne _08128BFC + ldr r0, _08128B9C @ =gUnknown_203B0E0 + ldr r1, [r0] + b _08128BDA + .align 2, 0 +_08128B9C: .4byte gUnknown_203B0E0 +_08128BA0: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08128BFC + bl sub_80FBA1C + adds r4, r0, 0 + cmp r4, 0 + bne _08128BFC + bl sub_800AAC0 + ldr r0, _08128BC0 @ =gUnknown_203B0E0 + ldr r1, [r0] + strh r4, [r1, 0xA] + b _08128BDA + .align 2, 0 +_08128BC0: .4byte gUnknown_203B0E0 +_08128BC4: + ldr r1, [r2] + ldrh r0, [r1, 0xA] + cmp r0, 0x95 + bhi _08128BD0 + adds r0, 0x1 + strh r0, [r1, 0xA] +_08128BD0: + ldr r0, _08128BE4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08128BFC + ldr r1, [r2] +_08128BDA: + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _08128BFC + .align 2, 0 +_08128BE4: .4byte gUnknown_3003F64 +_08128BE8: + ldr r1, [r2] + ldrh r0, [r1, 0xA] + cmp r0, 0x95 + bls _08128BF8 + movs r0, 0x9 + bl sub_8129218 + b _08128BFC +_08128BF8: + adds r0, 0x1 + strh r0, [r1, 0xA] +_08128BFC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8128AA0 + + thumb_func_start sub_8128C04 +sub_8128C04: @ 8128C04 + push {r4,r5,lr} + ldr r5, _08128C1C @ =gUnknown_203B0E0 + ldr r1, [r5] + ldrh r0, [r1, 0x6] + cmp r0, 0x1 + beq _08128C44 + cmp r0, 0x1 + bgt _08128C20 + cmp r0, 0 + beq _08128C2A + b _08128CA2 + .align 2, 0 +_08128C1C: .4byte gUnknown_203B0E0 +_08128C20: + cmp r0, 0x2 + beq _08128C6E + cmp r0, 0x3 + beq _08128C90 + b _08128CA2 +_08128C2A: + ldr r0, _08128C40 @ =sub_81298F8 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08128CA2 + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + b _08128C80 + .align 2, 0 +_08128C40: .4byte sub_81298F8 +_08128C44: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128CA2 + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08128CA2 + bl sub_80FBA1C + adds r4, r0, 0 + cmp r4, 0 + bne _08128CA2 + bl sub_800AAC0 + ldr r1, [r5] + strh r4, [r1, 0xA] + b _08128C82 +_08128C6E: + ldrh r0, [r1, 0xA] + cmp r0, 0x95 + bhi _08128C78 + adds r0, 0x1 + strh r0, [r1, 0xA] +_08128C78: + ldr r0, _08128C8C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08128CA2 +_08128C80: + ldr r1, [r5] +_08128C82: + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _08128CA2 + .align 2, 0 +_08128C8C: .4byte gUnknown_3003F64 +_08128C90: + ldrh r0, [r1, 0xA] + cmp r0, 0x95 + bls _08128C9E + movs r0, 0x9 + bl sub_8129218 + b _08128CA2 +_08128C9E: + adds r0, 0x1 + strh r0, [r1, 0xA] +_08128CA2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8128C04 + + thumb_func_start sub_8128CA8 +sub_8128CA8: @ 8128CA8 + push {r4,lr} + ldr r1, _08128CC0 @ =gUnknown_203B0E0 + ldr r0, [r1] + ldrh r0, [r0, 0x6] + adds r2, r1, 0 + cmp r0, 0x4 + bhi _08128D9C + lsls r0, 2 + ldr r1, _08128CC4 @ =_08128CC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128CC0: .4byte gUnknown_203B0E0 +_08128CC4: .4byte _08128CC8 + .align 2, 0 +_08128CC8: + .4byte _08128CDC + .4byte _08128D08 + .4byte _08128D30 + .4byte _08128D64 + .4byte _08128D88 +_08128CDC: + ldr r0, _08128D00 @ =sub_81298F8 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08128D9C + ldr r4, _08128D04 @ =gUnknown_203B0E0 + ldr r0, [r4] + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _08128CFA + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 +_08128CFA: + ldr r1, [r4] + b _08128D7A + .align 2, 0 +_08128D00: .4byte sub_81298F8 +_08128D04: .4byte gUnknown_203B0E0 +_08128D08: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128D9C + ldr r4, _08128D2C @ =gUnknown_203B0E0 + ldr r0, [r4] + ldrb r0, [r0, 0x13] + cmp r0, 0 + beq _08128D26 + movs r0, 0x13 + movs r1, 0 + bl sub_8129C34 +_08128D26: + ldr r1, [r4] + b _08128D7A + .align 2, 0 +_08128D2C: .4byte gUnknown_203B0E0 +_08128D30: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08128D9C + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08128D9C + bl sub_80FBA1C + adds r4, r0, 0 + cmp r4, 0 + bne _08128D9C + bl sub_800AAC0 + ldr r0, _08128D60 @ =gUnknown_203B0E0 + ldr r1, [r0] + strh r4, [r1, 0xA] + b _08128D7A + .align 2, 0 +_08128D60: .4byte gUnknown_203B0E0 +_08128D64: + ldr r1, [r2] + ldrh r0, [r1, 0xA] + cmp r0, 0x95 + bhi _08128D70 + adds r0, 0x1 + strh r0, [r1, 0xA] +_08128D70: + ldr r0, _08128D84 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08128D9C + ldr r1, [r2] +_08128D7A: + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _08128D9C + .align 2, 0 +_08128D84: .4byte gUnknown_3003F64 +_08128D88: + ldr r1, [r2] + ldrh r0, [r1, 0xA] + cmp r0, 0x95 + bls _08128D98 + movs r0, 0x9 + bl sub_8129218 + b _08128D9C +_08128D98: + adds r0, 0x1 + strh r0, [r1, 0xA] +_08128D9C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8128CA8 + + thumb_func_start sub_8128DA4 +sub_8128DA4: @ 8128DA4 + push {r4,lr} + ldr r1, _08128DBC @ =gUnknown_203B0E0 + ldr r0, [r1] + ldrh r0, [r0, 0x6] + adds r4, r1, 0 + cmp r0, 0x4 + bhi _08128E70 + lsls r0, 2 + ldr r1, _08128DC0 @ =_08128DC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128DBC: .4byte gUnknown_203B0E0 +_08128DC0: .4byte _08128DC4 + .align 2, 0 +_08128DC4: + .4byte _08128DD8 + .4byte _08128E00 + .4byte _08128E34 + .4byte _08128E42 + .4byte _08128E60 +_08128DD8: + ldr r0, _08128DE8 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08128DEC + movs r0, 0x1 + bl sub_8129218 + b _08128E70 + .align 2, 0 +_08128DE8: .4byte gUnknown_3003F64 +_08128DEC: + ldr r0, [r4] + movs r1, 0xC8 + lsls r1, 1 + adds r0, r1 + bl sub_8129590 + ldr r1, [r4] + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] +_08128E00: + bl sub_800A4BC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08128E70 + bl sub_80FBA1C + cmp r0, 0 + bne _08128E70 + ldr r4, _08128E30 @ =gUnknown_203B0E0 + ldr r1, [r4] + movs r0, 0xC8 + lsls r0, 1 + adds r1, r0 + movs r0, 0 + movs r2, 0x28 + bl sub_800A448 + lsls r0, 24 + cmp r0, 0 + beq _08128E70 + ldr r1, [r4] + b _08128E52 + .align 2, 0 +_08128E30: .4byte gUnknown_203B0E0 +_08128E34: + bl sub_8129454 + movs r0, 0x8 + movs r1, 0 + bl sub_8129C34 + b _08128E4E +_08128E42: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128E70 +_08128E4E: + ldr r0, _08128E5C @ =gUnknown_203B0E0 + ldr r1, [r0] +_08128E52: + ldrh r0, [r1, 0x6] + adds r0, 0x1 + strh r0, [r1, 0x6] + b _08128E70 + .align 2, 0 +_08128E5C: .4byte gUnknown_203B0E0 +_08128E60: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08128E70 + movs r0, 0x1 + bl sub_8129218 +_08128E70: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8128DA4 + + thumb_func_start sub_8128E78 +sub_8128E78: @ 8128E78 + push {r4,lr} + ldr r0, _08128E90 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrh r0, [r0, 0x6] + cmp r0, 0x6 + bls _08128E86 + b _08128FA8 +_08128E86: + lsls r0, 2 + ldr r1, _08128E94 @ =_08128E98 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128E90: .4byte gUnknown_203B0E0 +_08128E94: .4byte _08128E98 + .align 2, 0 +_08128E98: + .4byte _08128EB4 + .4byte _08128EE4 + .4byte _08128F38 + .4byte _08128F50 + .4byte _08128F60 + .4byte _08128F74 + .4byte _08128F8C +_08128EB4: + bl sub_8129408 + cmp r0, 0 + beq _08128ED0 + movs r0, 0x9 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128ECC @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x2 + b _08128FA6 + .align 2, 0 +_08128ECC: .4byte gUnknown_203B0E0 +_08128ED0: + movs r0, 0xD + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128EE0 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x5 + b _08128FA6 + .align 2, 0 +_08128EE0: .4byte gUnknown_203B0E0 +_08128EE4: + ldr r0, _08128F04 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08128F0C + bl sub_8129424 + movs r0, 0xB + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128F08 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x3 + b _08128FA6 + .align 2, 0 +_08128F04: .4byte gUnknown_30030F0 +_08128F08: .4byte gUnknown_203B0E0 +_08128F0C: + movs r4, 0x2 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08128F1A + movs r0, 0xA + b _08128F9A +_08128F1A: + bl sub_8129228 + cmp r0, 0 + beq _08128FA8 + movs r0, 0x1 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128F34 @ =gUnknown_203B0E0 + ldr r0, [r0] + strh r4, [r0, 0x6] + b _08128FA8 + .align 2, 0 +_08128F34: .4byte gUnknown_203B0E0 +_08128F38: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128FA8 + ldr r0, _08128F4C @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x1 + b _08128FA6 + .align 2, 0 +_08128F4C: .4byte gUnknown_203B0E0 +_08128F50: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128FA8 + movs r0, 0xA + b _08128F9A +_08128F60: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128FA8 + movs r0, 0x1 + bl sub_8129218 + b _08128FA8 +_08128F74: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08128FA8 + ldr r0, _08128F88 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x6 + b _08128FA6 + .align 2, 0 +_08128F88: .4byte gUnknown_203B0E0 +_08128F8C: + ldr r0, _08128FB0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08128FA8 + movs r0, 0x7 +_08128F9A: + movs r1, 0 + bl sub_8129C34 + ldr r0, _08128FB4 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x4 +_08128FA6: + strh r0, [r1, 0x6] +_08128FA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128FB0: .4byte gUnknown_30030F0 +_08128FB4: .4byte gUnknown_203B0E0 + thumb_func_end sub_8128E78 + + thumb_func_start sub_8128FB8 +sub_8128FB8: @ 8128FB8 + push {r4,lr} + sub sp, 0x4 + ldr r1, _08128FD4 @ =gUnknown_203B0E0 + ldr r0, [r1] + ldrh r0, [r0, 0x6] + adds r4, r1, 0 + cmp r0, 0xD + bls _08128FCA + b _08129206 +_08128FCA: + lsls r0, 2 + ldr r1, _08128FD8 @ =_08128FDC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128FD4: .4byte gUnknown_203B0E0 +_08128FD8: .4byte _08128FDC + .align 2, 0 +_08128FDC: + .4byte _08129014 + .4byte _0812902E + .4byte _08129054 + .4byte _08129098 + .4byte _081290BC + .4byte _081290D8 + .4byte _0812911C + .4byte _08129144 + .4byte _08129168 + .4byte _08129180 + .4byte _081291A4 + .4byte _081291B2 + .4byte _081291C8 + .4byte _081291E8 +_08129014: + ldr r1, [r4] + ldrb r0, [r1, 0x18] + cmp r0, 0 + bne _0812901E + b _081291C2 +_0812901E: + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + ldr r1, [r4] + movs r0, 0x1 + strh r0, [r1, 0x6] + b _08129206 +_0812902E: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + beq _0812903C + b _08129206 +_0812903C: + movs r0, 0xE + movs r1, 0 + bl sub_8129C34 + ldr r0, _08129050 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x2 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_08129050: .4byte gUnknown_203B0E0 +_08129054: + bl sub_812A568 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08129080 + cmp r1, 0 + bgt _0812906E + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08129074 + b _08129206 +_0812906E: + cmp r1, 0x1 + beq _08129074 + b _08129206 +_08129074: + ldr r0, _0812907C @ =gUnknown_203B0E0 + ldr r1, [r0] + b _081291C2 + .align 2, 0 +_0812907C: .4byte gUnknown_203B0E0 +_08129080: + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08129094 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x3 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_08129094: .4byte gUnknown_203B0E0 +_08129098: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + beq _081290A6 + b _08129206 +_081290A6: + movs r0, 0xF + movs r1, 0 + bl sub_8129C34 + ldr r0, _081290B8 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x4 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_081290B8: .4byte gUnknown_203B0E0 +_081290BC: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + beq _081290CA + b _08129206 +_081290CA: + ldr r0, _081290D4 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x5 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_081290D4: .4byte gUnknown_203B0E0 +_081290D8: + bl sub_812A568 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08129104 + cmp r1, 0 + bgt _081290F2 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081290F8 + b _08129206 +_081290F2: + cmp r1, 0x1 + beq _081290F8 + b _08129206 +_081290F8: + ldr r0, _08129100 @ =gUnknown_203B0E0 + ldr r1, [r0] + b _081291C2 + .align 2, 0 +_08129100: .4byte gUnknown_203B0E0 +_08129104: + movs r0, 0x7 + movs r1, 0 + bl sub_8129C34 + ldr r0, _08129118 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x6 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_08129118: .4byte gUnknown_203B0E0 +_0812911C: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08129206 + movs r0, 0x10 + movs r1, 0 + bl sub_8129C34 + bl sub_8129470 + ldr r0, _08129140 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x7 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_08129140: .4byte gUnknown_203B0E0 +_08129144: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08129206 + bl sub_804C1C0 + movs r0, 0 + bl sub_80DA364 + ldr r0, _08129164 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x8 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_08129164: .4byte gUnknown_203B0E0 +_08129168: + movs r0, 0x11 + movs r1, 0 + bl sub_8129C34 + ldr r0, _0812917C @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x9 + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_0812917C: .4byte gUnknown_203B0E0 +_08129180: + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08129206 + movs r0, 0x30 + bl sub_80722CC + bl sub_804C1DC + ldr r0, _081291A0 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0xA + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_081291A0: .4byte gUnknown_203B0E0 +_081291A4: + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0x19] + ldr r1, [r4] + movs r0, 0xB + strh r0, [r1, 0x6] + b _08129206 +_081291B2: + ldr r0, [r4] + ldrb r1, [r0, 0x19] + adds r1, 0x1 + strb r1, [r0, 0x19] + ldr r1, [r4] + ldrb r0, [r1, 0x19] + cmp r0, 0x78 + bls _08129206 +_081291C2: + movs r0, 0xC + strh r0, [r1, 0x6] + b _08129206 +_081291C8: + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r0, _081291E4 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0xD + strh r0, [r1, 0x6] + b _08129206 + .align 2, 0 +_081291E4: .4byte gUnknown_203B0E0 +_081291E8: + ldr r0, _08129210 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08129206 + bl sub_812B4B8 + bl sub_8129B88 + bl sub_81284BC + ldr r0, _08129214 @ =sub_80567DC + bl sub_8000544 +_08129206: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08129210: .4byte gUnknown_2037AB8 +_08129214: .4byte sub_80567DC + thumb_func_end sub_8128FB8 + + thumb_func_start sub_8129218 +sub_8129218: @ 8129218 + ldr r1, _08129224 @ =gUnknown_203B0E0 + ldr r1, [r1] + movs r2, 0 + strh r0, [r1, 0x4] + strh r2, [r1, 0x6] + bx lr + .align 2, 0 +_08129224: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129218 + + thumb_func_start sub_8129228 +sub_8129228: @ 8129228 + push {lr} + ldr r0, _08129258 @ =gUnknown_30030F0 + ldrh r2, [r0, 0x30] + movs r0, 0x40 + ands r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + bne _081292B2 + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _08129268 + ldr r0, _0812925C @ =gUnknown_203B0E0 + ldr r2, [r0] + ldr r1, _08129260 @ =gUnknown_845A8A8 + ldrb r0, [r2, 0x10] + adds r0, r1 + ldrb r1, [r2, 0x12] + ldrb r0, [r0] + cmp r1, r0 + bcs _08129264 + adds r0, r1, 0x1 + b _081292CC + .align 2, 0 +_08129258: .4byte gUnknown_30030F0 +_0812925C: .4byte gUnknown_203B0E0 +_08129260: .4byte gUnknown_845A8A8 +_08129264: + strb r3, [r2, 0x12] + b _081292CE +_08129268: + ldr r0, _0812928C @ =gUnknown_203B0E0 + ldr r1, [r0] + ldrb r0, [r1, 0x10] + cmp r0, 0x3 + beq _081292AE + movs r0, 0x20 + ands r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0 + beq _08129296 + ldrb r0, [r1, 0x11] + cmp r0, 0 + beq _08129290 + subs r0, 0x1 + strb r0, [r1, 0x11] + b _081292CE + .align 2, 0 +_0812928C: .4byte gUnknown_203B0E0 +_08129290: + movs r0, 0x4 + strb r0, [r1, 0x11] + b _081292CE +_08129296: + movs r0, 0x10 + ands r0, r2 + cmp r0, 0 + beq _081292AE + ldrb r0, [r1, 0x11] + cmp r0, 0x3 + bhi _081292AA + adds r0, 0x1 + strb r0, [r1, 0x11] + b _081292CE +_081292AA: + strb r3, [r1, 0x11] + b _081292CE +_081292AE: + movs r0, 0 + b _081292D0 +_081292B2: + ldr r0, _081292C0 @ =gUnknown_203B0E0 + ldr r2, [r0] + ldrb r0, [r2, 0x12] + cmp r0, 0 + beq _081292C4 + subs r0, 0x1 + b _081292CC + .align 2, 0 +_081292C0: .4byte gUnknown_203B0E0 +_081292C4: + ldr r0, _081292D4 @ =gUnknown_845A8A8 + ldrb r1, [r2, 0x10] + adds r1, r0 + ldrb r0, [r1] +_081292CC: + strb r0, [r2, 0x12] +_081292CE: + movs r0, 0x1 +_081292D0: + pop {r1} + bx r1 + .align 2, 0 +_081292D4: .4byte gUnknown_845A8A8 + thumb_func_end sub_8129228 + + thumb_func_start sub_81292D8 +sub_81292D8: @ 81292D8 + push {r4-r6,lr} + sub sp, 0x18 + ldr r0, _08129318 @ =gUnknown_203B0E0 + ldr r5, [r0] + ldrb r0, [r5, 0x10] + cmp r0, 0x3 + beq _08129320 + ldr r3, _0812931C @ =gUnknown_845A9AC + ldrb r1, [r5, 0x12] + lsls r1, 2 + adds r2, r0, 0 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r1, r3 + ldr r4, [r1] + ldrb r0, [r5, 0x11] + cmp r0, 0 + beq _08129312 + adds r1, r0, 0 +_08129302: + ldrb r0, [r4] + cmp r0, 0xF9 + bne _0812930A + adds r4, 0x1 +_0812930A: + adds r4, 0x1 + subs r1, 0x1 + cmp r1, 0 + bne _08129302 +_08129312: + movs r5, 0x1 + b _08129346 + .align 2, 0 +_08129318: .4byte gUnknown_203B0E0 +_0812931C: .4byte gUnknown_845A9AC +_08129320: + ldrb r0, [r5, 0x12] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r0 + adds r1, 0xB9 + adds r1, r5, r1 + mov r0, sp + bl sub_8008D84 + movs r1, 0 + strb r1, [r0] + movs r1, 0xFF + strb r1, [r0, 0x1] + mov r4, sp + mov r0, sp + bl sub_80092D4 + adds r5, r0, 0 +_08129346: + ldr r6, _081293A8 @ =gUnknown_203B0E0 + ldr r1, [r6] + ldrb r0, [r1, 0x15] + strb r0, [r1, 0x14] + cmp r4, 0 + beq _0812939E + bl sub_81294C8 + adds r2, r0, 0 + subs r5, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _0812939A + ldr r0, [r6] + ldrb r0, [r0, 0x15] + cmp r0, 0xE + bhi _0812939A + adds r3, r6, 0 +_0812936C: + ldrb r0, [r4] + cmp r0, 0xF9 + bne _08129378 + strb r0, [r2] + adds r4, 0x1 + adds r2, 0x1 +_08129378: + ldrb r0, [r4] + strb r0, [r2] + adds r4, 0x1 + adds r2, 0x1 + ldr r1, [r3] + ldrb r0, [r1, 0x15] + adds r0, 0x1 + strb r0, [r1, 0x15] + subs r5, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _0812939A + ldr r0, [r3] + ldrb r0, [r0, 0x15] + cmp r0, 0xE + bls _0812936C +_0812939A: + movs r0, 0xFF + strb r0, [r2] +_0812939E: + add sp, 0x18 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081293A8: .4byte gUnknown_203B0E0 + thumb_func_end sub_81292D8 + + thumb_func_start sub_81293AC +sub_81293AC: @ 81293AC + push {r4,lr} + ldr r4, _081293D4 @ =gUnknown_203B0E0 + ldr r1, [r4] + ldrb r0, [r1, 0x15] + strb r0, [r1, 0x14] + ldr r0, [r4] + ldrb r0, [r0, 0x15] + cmp r0, 0 + beq _081293CE + bl sub_81294EC + movs r1, 0xFF + strb r1, [r0] + ldr r1, [r4] + ldrb r0, [r1, 0x15] + subs r0, 0x1 + strb r0, [r1, 0x15] +_081293CE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081293D4: .4byte gUnknown_203B0E0 + thumb_func_end sub_81293AC + + thumb_func_start sub_81293D8 +sub_81293D8: @ 81293D8 + push {lr} + ldr r0, _08129400 @ =gUnknown_203B0E0 + ldr r1, [r0] + ldrb r0, [r1, 0x15] + subs r0, 0x1 + strb r0, [r1, 0x14] + bl sub_81294EC + adds r2, r0, 0 + ldrb r0, [r2] + cmp r0, 0xF9 + beq _081293FC + ldr r1, _08129404 @ =gUnknown_845A8AC + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _081293FC + strb r0, [r2] +_081293FC: + pop {r0} + bx r0 + .align 2, 0 +_08129400: .4byte gUnknown_203B0E0 +_08129404: .4byte gUnknown_845A8AC + thumb_func_end sub_81293D8 + + thumb_func_start sub_8129408 +sub_8129408: @ 8129408 + push {lr} + ldr r0, _08129418 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x15] + cmp r0, 0 + bne _0812941C + movs r0, 0 + b _0812941E + .align 2, 0 +_08129418: .4byte gUnknown_203B0E0 +_0812941C: + movs r0, 0x1 +_0812941E: + pop {r1} + bx r1 + thumb_func_end sub_8129408 + + thumb_func_start sub_8129424 +sub_8129424: @ 8129424 + push {r4,lr} + bl sub_8129758 + adds r1, r0, 0 + ldr r4, _08129450 @ =gUnknown_203B0E0 + ldr r0, [r4] + ldrb r3, [r0, 0x12] + lsls r2, r3, 2 + adds r2, r3 + lsls r2, 2 + adds r2, r3 + adds r2, 0xB9 + adds r0, r2 + bl sub_8008D84 + ldr r1, [r4] + movs r0, 0x1 + strb r0, [r1, 0x18] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08129450: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129424 + + thumb_func_start sub_8129454 +sub_8129454: @ 8129454 + ldr r1, _0812946C @ =gUnknown_203B0E0 + ldr r2, [r1] + movs r0, 0xFF + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r3, 0 + movs r0, 0xF + strb r0, [r2, 0x14] + ldr r0, [r1] + strb r3, [r0, 0x15] + bx lr + .align 2, 0 +_0812946C: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129454 + + thumb_func_start sub_8129470 +sub_8129470: @ 8129470 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _081294A4 @ =gUnknown_3005008 + mov r8, r0 + ldr r7, _081294A8 @ =gUnknown_203B0E0 + movs r6, 0xB9 + ldr r5, _081294AC @ =0x00003ad4 + movs r4, 0x9 +_08129482: + mov r1, r8 + ldr r0, [r1] + adds r0, r5 + ldr r1, [r7] + adds r1, r6 + bl sub_8008D84 + adds r6, 0x15 + adds r5, 0x15 + subs r4, 0x1 + cmp r4, 0 + bge _08129482 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081294A4: .4byte gUnknown_3005008 +_081294A8: .4byte gUnknown_203B0E0 +_081294AC: .4byte 0x00003ad4 + thumb_func_end sub_8129470 + + thumb_func_start sub_81294B0 +sub_81294B0: @ 81294B0 + ldr r2, _081294C4 @ =gUnknown_203B0E0 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r0 + adds r1, 0xB9 + ldr r0, [r2] + adds r0, r1 + bx lr + .align 2, 0 +_081294C4: .4byte gUnknown_203B0E0 + thumb_func_end sub_81294B0 + + thumb_func_start sub_81294C8 +sub_81294C8: @ 81294C8 + push {lr} + ldr r0, _081294E8 @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x1A + ldrb r0, [r0, 0x1A] + cmp r0, 0xFF + beq _081294E0 +_081294D8: + adds r1, 0x1 + ldrb r0, [r1] + cmp r0, 0xFF + bne _081294D8 +_081294E0: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_081294E8: .4byte gUnknown_203B0E0 + thumb_func_end sub_81294C8 + + thumb_func_start sub_81294EC +sub_81294EC: @ 81294EC + push {lr} + ldr r0, _08129518 @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r2, r0, 0 + adds r2, 0x1A + adds r1, r2, 0 + ldrb r0, [r0, 0x1A] + cmp r0, 0xFF + beq _08129510 +_081294FE: + adds r2, r1, 0 + ldrb r0, [r2] + cmp r0, 0xF9 + bne _08129508 + adds r1, r2, 0x1 +_08129508: + adds r1, 0x1 + ldrb r0, [r1] + cmp r0, 0xFF + bne _081294FE +_08129510: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_08129518: .4byte gUnknown_203B0E0 + thumb_func_end sub_81294EC + + thumb_func_start sub_812951C +sub_812951C: @ 812951C + push {r4,lr} + ldr r4, _0812955C @ =gUnknown_203B0E0 + ldr r0, [r4] + adds r0, 0x1A + bl sub_80092D4 + adds r2, r0, 0 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x1A + movs r4, 0 + cmp r2, 0xA + bls _08129550 + subs r2, 0xA + movs r3, 0 + cmp r4, r2 + bcs _08129550 +_0812953E: + ldrb r0, [r1] + cmp r0, 0xF9 + bne _08129546 + adds r1, 0x1 +_08129546: + adds r1, 0x1 + adds r4, 0x1 + adds r3, 0x1 + cmp r3, r2 + bcc _0812953E +_08129550: + lsls r0, r4, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812955C: .4byte gUnknown_203B0E0 + thumb_func_end sub_812951C + + thumb_func_start sub_8129560 +sub_8129560: @ 8129560 + movs r1, 0 + strb r1, [r0] + bx lr + thumb_func_end sub_8129560 + + thumb_func_start sub_8129568 +sub_8129568: @ 8129568 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2 + strb r0, [r4] + adds r0, r4, 0x1 + ldr r1, _08129588 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _0812958C @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + strb r0, [r4, 0x9] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08129588: .4byte gUnknown_300500C +_0812958C: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129568 + + thumb_func_start sub_8129590 +sub_8129590: @ 8129590 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strb r0, [r4] + adds r0, r4, 0x1 + ldr r1, _081295B8 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + adds r4, 0x9 + ldr r0, _081295BC @ =gUnknown_203B0E0 + ldr r1, [r0] + adds r1, 0x1A + adds r0, r4, 0 + bl sub_8008D84 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081295B8: .4byte gUnknown_300500C +_081295BC: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129590 + + thumb_func_start sub_81295C0 +sub_81295C0: @ 81295C0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x3 + strb r0, [r4] + adds r0, r4, 0x1 + ldr r1, _081295E4 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _081295E8 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + strb r0, [r4, 0x9] + bl sub_80FB9D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081295E4: .4byte gUnknown_300500C +_081295E8: .4byte gUnknown_203B0E0 + thumb_func_end sub_81295C0 + + thumb_func_start sub_81295EC +sub_81295EC: @ 81295EC + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x4 + strb r0, [r4] + adds r0, r4, 0x1 + ldr r1, _0812960C @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _08129610 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + strb r0, [r4, 0x9] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812960C: .4byte gUnknown_300500C +_08129610: .4byte gUnknown_203B0E0 + thumb_func_end sub_81295EC + + thumb_func_start sub_8129614 +sub_8129614: @ 8129614 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x5 + strb r0, [r4] + adds r0, r4, 0x1 + ldr r1, _08129634 @ =gUnknown_300500C + ldr r1, [r1] + bl sub_8008D84 + ldr r0, _08129638 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + strb r0, [r4, 0x9] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08129634: .4byte gUnknown_300500C +_08129638: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129614 + + thumb_func_start sub_812963C +sub_812963C: @ 812963C + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldrb r0, [r5] + adds r1, r0, 0 + adds r4, r5, 0x1 + adds r5, r4, 0 + adds r5, 0x8 + cmp r0, 0x2 + beq _08129664 + cmp r0, 0x2 + bgt _0812965A + cmp r0, 0x1 + beq _08129688 + b _081296EC +_0812965A: + cmp r1, 0x3 + beq _081296BE + cmp r1, 0x5 + beq _081296B2 + b _081296EC +_08129664: + ldr r0, _08129680 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + ldrb r1, [r4, 0x8] + cmp r0, r1 + beq _081296EC + bl sub_813CC90 + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldr r1, _08129684 @ =gUnknown_841B3AA + b _081296D8 + .align 2, 0 +_08129680: .4byte gUnknown_203B0E0 +_08129684: .4byte gUnknown_841B3AA +_08129688: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8008D84 + movs r1, 0xFC + strb r1, [r0] + adds r0, 0x1 + movs r1, 0x13 + strb r1, [r0] + adds r0, 0x1 + movs r1, 0x2A + strb r1, [r0] + adds r0, 0x1 + movs r1, 0xF0 + strb r1, [r0] + adds r0, 0x1 + adds r1, r5, 0 + bl sub_8008D84 + movs r0, 0x1 + b _081296EE +_081296B2: + ldr r0, _081296E4 @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r0, 0x79 + adds r1, r4, 0 + bl sub_8008D84 +_081296BE: + ldr r0, _081296E4 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x13] + ldrb r5, [r5] + cmp r0, r5 + beq _081296EC + bl sub_813CC90 + movs r0, 0 + adds r1, r4, 0 + bl sub_813CCAC + ldr r1, _081296E8 @ =gUnknown_841B3BE +_081296D8: + adds r0, r6, 0 + bl sub_813CCC8 + movs r0, 0x1 + b _081296EE + .align 2, 0 +_081296E4: .4byte gUnknown_203B0E0 +_081296E8: .4byte gUnknown_841B3BE +_081296EC: + movs r0, 0 +_081296EE: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_812963C + + thumb_func_start sub_81296F4 +sub_81296F4: @ 81296F4 + ldr r0, _081296FC @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x10] + bx lr + .align 2, 0 +_081296FC: .4byte gUnknown_203B0E0 + thumb_func_end sub_81296F4 + + thumb_func_start sub_8129700 +sub_8129700: @ 8129700 + ldr r2, _08129710 @ =gUnknown_203B0E0 + ldr r3, [r2] + ldrb r2, [r3, 0x11] + strb r2, [r0] + ldrb r0, [r3, 0x12] + strb r0, [r1] + bx lr + .align 2, 0 +_08129710: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129700 + + thumb_func_start sub_8129714 +sub_8129714: @ 8129714 + ldr r0, _0812971C @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r0, 0x1A + bx lr + .align 2, 0 +_0812971C: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129714 + + thumb_func_start sub_8129720 +sub_8129720: @ 8129720 + push {lr} + bl sub_8129714 + bl sub_80092D4 + pop {r1} + bx r1 + thumb_func_end sub_8129720 + + thumb_func_start sub_8129730 +sub_8129730: @ 8129730 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08129748 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r3, [r0, 0x15] + ldrb r2, [r0, 0x14] + subs r0, r3, r2 + cmp r0, 0 + bge _0812974C + negs r0, r0 + str r3, [r4] + b _0812974E + .align 2, 0 +_08129748: .4byte gUnknown_203B0E0 +_0812974C: + str r2, [r4] +_0812974E: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8129730 + + thumb_func_start sub_8129758 +sub_8129758: @ 8129758 + push {lr} + bl sub_812951C + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08129784 @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x1A + cmp r2, 0 + beq _0812977E +_0812976E: + ldrb r0, [r1] + cmp r0, 0xF9 + bne _08129776 + adds r1, 0x1 +_08129776: + adds r1, 0x1 + subs r2, 0x1 + cmp r2, 0 + bne _0812976E +_0812977E: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_08129784: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129758 + + thumb_func_start sub_8129788 +sub_8129788: @ 8129788 + push {r4,lr} + bl sub_812951C + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _081297C0 @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x1A + movs r2, 0 + movs r3, 0 + cmp r2, r4 + bcs _081297B8 +_081297A2: + ldrb r0, [r1] + cmp r0, 0xF9 + bne _081297AA + adds r1, 0x1 +_081297AA: + adds r1, 0x1 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + adds r3, 0x1 + cmp r3, r4 + bcc _081297A2 +_081297B8: + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081297C0: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129788 + + thumb_func_start sub_81297C4 +sub_81297C4: @ 81297C4 + ldr r0, _081297CC @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r0, 0x39 + bx lr + .align 2, 0 +_081297CC: .4byte gUnknown_203B0E0 + thumb_func_end sub_81297C4 + + thumb_func_start sub_81297D0 +sub_81297D0: @ 81297D0 + ldr r0, _081297D8 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x16] + bx lr + .align 2, 0 +_081297D8: .4byte gUnknown_203B0E0 + thumb_func_end sub_81297D0 + + thumb_func_start sub_81297DC +sub_81297DC: @ 81297DC + ldr r0, _081297E4 @ =gUnknown_203B0E0 + ldr r0, [r0] + ldrb r0, [r0, 0x15] + bx lr + .align 2, 0 +_081297E4: .4byte gUnknown_203B0E0 + thumb_func_end sub_81297DC + + thumb_func_start sub_81297E8 +sub_81297E8: @ 81297E8 + push {lr} + bl sub_81294EC + ldrb r1, [r0] + cmp r1, 0xFF + bhi _08129802 + ldr r0, _08129808 @ =gUnknown_845A8AC + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, r1 + beq _08129802 + cmp r0, 0 + bne _0812980C +_08129802: + movs r0, 0x3 + b _0812980E + .align 2, 0 +_08129808: .4byte gUnknown_845A8AC +_0812980C: + movs r0, 0 +_0812980E: + pop {r1} + bx r1 + thumb_func_end sub_81297E8 + + thumb_func_start sub_8129814 +sub_8129814: @ 8129814 + ldr r0, _0812981C @ =gUnknown_203B0E0 + ldr r0, [r0] + adds r0, 0x79 + bx lr + .align 2, 0 +_0812981C: .4byte gUnknown_203B0E0 + thumb_func_end sub_8129814 + + thumb_func_start sub_8129820 +sub_8129820: @ 8129820 + push {r4,lr} + ldr r4, _081298A4 @ =gUnknown_3005008 + ldr r0, [r4] + ldr r1, _081298A8 @ =0x00003ad4 + adds r0, r1 + ldr r1, _081298AC @ =gUnknown_841B510 + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298B0 @ =0x00003ae9 + adds r0, r1 + ldr r1, _081298B4 @ =gUnknown_841B516 + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298B8 @ =0x00003afe + adds r0, r1 + ldr r1, _081298BC @ =gUnknown_841B51E + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298C0 @ =0x00003b13 + adds r0, r1 + ldr r1, _081298C4 @ =gUnknown_841B524 + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298C8 @ =0x00003b28 + adds r0, r1 + ldr r1, _081298CC @ =gUnknown_841B52B + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298D0 @ =0x00003b3d + adds r0, r1 + ldr r1, _081298D4 @ =gUnknown_841B531 + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298D8 @ =0x00003b52 + adds r0, r1 + ldr r1, _081298DC @ =gUnknown_841B535 + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298E0 @ =0x00003b67 + adds r0, r1 + ldr r1, _081298E4 @ =gUnknown_841B53B + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298E8 @ =0x00003b7c + adds r0, r1 + ldr r1, _081298EC @ =gUnknown_841B541 + bl sub_8008D84 + ldr r0, [r4] + ldr r1, _081298F0 @ =0x00003b91 + adds r0, r1 + ldr r1, _081298F4 @ =gUnknown_841B54B + bl sub_8008D84 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081298A4: .4byte gUnknown_3005008 +_081298A8: .4byte 0x00003ad4 +_081298AC: .4byte gUnknown_841B510 +_081298B0: .4byte 0x00003ae9 +_081298B4: .4byte gUnknown_841B516 +_081298B8: .4byte 0x00003afe +_081298BC: .4byte gUnknown_841B51E +_081298C0: .4byte 0x00003b13 +_081298C4: .4byte gUnknown_841B524 +_081298C8: .4byte 0x00003b28 +_081298CC: .4byte gUnknown_841B52B +_081298D0: .4byte 0x00003b3d +_081298D4: .4byte gUnknown_841B531 +_081298D8: .4byte 0x00003b52 +_081298DC: .4byte gUnknown_841B535 +_081298E0: .4byte 0x00003b67 +_081298E4: .4byte gUnknown_841B53B +_081298E8: .4byte 0x00003b7c +_081298EC: .4byte gUnknown_841B541 +_081298F0: .4byte 0x00003b91 +_081298F4: .4byte gUnknown_841B54B + thumb_func_end sub_8129820 + + thumb_func_start sub_81298F8 +sub_81298F8: @ 81298F8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0812991C @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bls _08129912 + b _08129B08 +_08129912: + lsls r0, 2 + ldr r1, _08129920 @ =_08129924 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812991C: .4byte gUnknown_3005098 +_08129920: .4byte _08129924 + .align 2, 0 +_08129924: + .4byte _08129944 + .4byte _08129952 + .4byte _08129AEC + .4byte _081299A0 + .4byte _08129A8C + .4byte _08129AC4 + .4byte _08129AD8 + .4byte _08129A7C +_08129944: + ldr r0, _08129978 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0812994E + b _08129AE0 +_0812994E: + movs r0, 0x1 + strh r0, [r4] +_08129952: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + strh r0, [r4, 0x8] + ldr r3, _0812997C @ =gUnknown_203B0E0 + ldr r0, [r3] + ldrb r1, [r0, 0xD] + movs r5, 0x8 + ldrsh r0, [r4, r5] + cmp r1, r0 + beq _08129980 + movs r0, 0x2 + strh r0, [r4] + ldr r0, [r3] + strb r2, [r0, 0xD] + b _08129B08 + .align 2, 0 +_08129978: .4byte gUnknown_3003F64 +_0812997C: .4byte gUnknown_203B0E0 +_08129980: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x6] + cmp r0, 0 + bne _08129998 + bl sub_80FBA1C + cmp r0, 0 + beq _08129998 + b _08129B08 +_08129998: + movs r0, 0 + strh r0, [r4, 0x2] + movs r0, 0x3 + strh r0, [r4] +_081299A0: + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bgt _081299DA + movs r2, 0x6 + ldrsh r0, [r4, r2] + movs r3, 0x2 + ldrsh r1, [r4, r3] + asrs r0, r1 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081299DA + movs r2, 0x1 +_081299BC: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _081299DA + movs r5, 0x6 + ldrsh r0, [r4, r5] + movs r3, 0x2 + ldrsh r1, [r4, r3] + asrs r0, r1 + ands r0, r2 + cmp r0, 0 + beq _081299BC +_081299DA: + ldrh r1, [r4, 0x2] + movs r5, 0x2 + ldrsh r0, [r4, r5] + cmp r0, 0x5 + bne _081299E6 + b _08129B04 +_081299E6: + strh r1, [r4, 0x4] + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_800A588 + movs r1, 0x2 + ldrsh r0, [r4, r1] + lsls r0, 8 + ldr r1, _08129A0C @ =gUnknown_2022118 + adds r0, r1 + ldrb r0, [r0] + subs r0, 0x1 + cmp r0, 0x4 + bhi _08129A28 + lsls r0, 2 + ldr r1, _08129A10 @ =_08129A14 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08129A0C: .4byte gUnknown_2022118 +_08129A10: .4byte _08129A14 + .align 2, 0 +_08129A14: + .4byte _08129A28 + .4byte _08129A2C + .4byte _08129A30 + .4byte _08129A34 + .4byte _08129A38 +_08129A28: + movs r0, 0x3 + b _08129A3A +_08129A2C: + movs r0, 0x3 + b _08129A3A +_08129A30: + movs r0, 0x4 + b _08129A3A +_08129A34: + movs r0, 0x5 + b _08129A3A +_08129A38: + movs r0, 0x6 +_08129A3A: + strh r0, [r4, 0xA] + ldr r5, _08129A68 @ =gUnknown_203B0E0 + ldr r0, [r5] + adds r0, 0x39 + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 8 + ldr r2, _08129A6C @ =gUnknown_2022118 + adds r1, r2 + bl sub_812963C + cmp r0, 0 + beq _08129A70 + ldr r0, [r5] + ldrh r1, [r4, 0x2] + strb r1, [r0, 0x16] + movs r0, 0xC + movs r1, 0x2 + bl sub_8129C34 + movs r0, 0x7 + b _08129A72 + .align 2, 0 +_08129A68: .4byte gUnknown_203B0E0 +_08129A6C: .4byte gUnknown_2022118 +_08129A70: + ldrh r0, [r4, 0xA] +_08129A72: + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + b _08129B08 +_08129A7C: + movs r0, 0x2 + bl sub_8129C8C + lsls r0, 24 + cmp r0, 0 + bne _08129B08 + ldrh r0, [r4, 0xA] + b _08129B06 +_08129A8C: + ldr r6, _08129AB4 @ =gUnknown_203B0E0 + ldr r0, [r6] + ldrb r0, [r0, 0x13] + cmp r0, 0 + bne _08129AC0 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08129AC0 + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08129AB8 + bl sub_80FA4A8 + ldr r1, [r6] + movs r0, 0x1 + b _08129ADE + .align 2, 0 +_08129AB4: .4byte gUnknown_203B0E0 +_08129AB8: + movs r5, 0x4 + ldrsh r0, [r4, r5] + bl sub_80FBD6C +_08129AC0: + movs r0, 0x3 + b _08129B06 +_08129AC4: + ldr r0, _08129AD4 @ =gUnknown_203B0E0 + ldr r1, [r0] + ldrb r0, [r1, 0x13] + cmp r0, 0 + beq _08129AE0 + movs r0, 0x2 + b _08129ADE + .align 2, 0 +_08129AD4: .4byte gUnknown_203B0E0 +_08129AD8: + ldr r0, _08129AE8 @ =gUnknown_203B0E0 + ldr r1, [r0] + movs r0, 0x3 +_08129ADE: + strb r0, [r1, 0x17] +_08129AE0: + adds r0, r5, 0 + bl sub_8077508 + b _08129B08 + .align 2, 0 +_08129AE8: .4byte gUnknown_203B0E0 +_08129AEC: + bl sub_80FBA1C + cmp r0, 0 + bne _08129B08 + ldr r0, _08129B10 @ =gUnknown_203B0E0 + ldr r1, [r0] + ldrb r0, [r1, 0x13] + cmp r0, 0 + bne _08129B04 + ldrb r0, [r1, 0xD] + bl sub_80FB030 +_08129B04: + movs r0, 0x1 +_08129B06: + strh r0, [r4] +_08129B08: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08129B10: .4byte gUnknown_203B0E0 + thumb_func_end sub_81298F8 + + thumb_func_start sub_8129B14 +sub_8129B14: @ 8129B14 + push {r4,lr} + ldr r4, _08129B60 @ =gUnknown_203B0E4 + ldr r0, _08129B64 @ =0x00002168 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _08129B70 + bl sub_812AE70 + cmp r0, 0 + beq _08129B70 + movs r0, 0 + bl sub_8001618 + ldr r1, _08129B68 @ =gUnknown_845AA84 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r0, _08129B6C @ =gUnknown_845AA94 + bl sub_8003B24 + bl sub_80F6808 + bl sub_812AD50 + ldr r0, [r4] + bl sub_8129BB8 + bl sub_8129BC4 + movs r0, 0 + movs r1, 0 + bl sub_8129C34 + movs r0, 0x1 + b _08129B72 + .align 2, 0 +_08129B60: .4byte gUnknown_203B0E4 +_08129B64: .4byte 0x00002168 +_08129B68: .4byte gUnknown_845AA84 +_08129B6C: .4byte gUnknown_845AA94 +_08129B70: + movs r0, 0 +_08129B72: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129B14 + + thumb_func_start sub_8129B78 +sub_8129B78: @ 8129B78 + push {lr} + movs r0, 0 + bl sub_8129C8C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8129B78 + + thumb_func_start sub_8129B88 +sub_8129B88: @ 8129B88 + push {r4,lr} + bl sub_812AEB0 + ldr r4, _08129BB0 @ =gUnknown_203B0E4 + ldr r0, [r4] + cmp r0, 0 + beq _08129B9E + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08129B9E: + bl sub_8003ECC + ldr r1, _08129BB4 @ =gUnknown_2039600 + movs r0, 0x3 + strb r0, [r1, 0x15] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08129BB0: .4byte gUnknown_203B0E4 +_08129BB4: .4byte gUnknown_2039600 + thumb_func_end sub_8129B88 + + thumb_func_start sub_8129BB8 +sub_8129BB8: @ 8129BB8 + movs r2, 0 + movs r1, 0xFF + strh r1, [r0, 0x18] + strh r1, [r0, 0x1E] + strh r2, [r0, 0x1A] + bx lr + thumb_func_end sub_8129BB8 + + thumb_func_start sub_8129BC4 +sub_8129BC4: @ 8129BC4 + push {r4,r5,lr} + ldr r1, _08129BF4 @ =gUnknown_203B0E4 + ldr r0, [r1] + cmp r0, 0 + beq _08129BEC + movs r2, 0 + adds r4, r1, 0 + ldr r5, _08129BF8 @ =sub_812A420 + movs r3, 0 +_08129BD6: + ldr r0, [r4] + lsls r1, r2, 3 + adds r0, r1 + str r5, [r0] + strb r3, [r0, 0x4] + ldr r0, [r4] + adds r0, r1 + strb r3, [r0, 0x5] + adds r2, 0x1 + cmp r2, 0x2 + ble _08129BD6 +_08129BEC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08129BF4: .4byte gUnknown_203B0E4 +_08129BF8: .4byte sub_812A420 + thumb_func_end sub_8129BC4 + + thumb_func_start sub_8129BFC +sub_8129BFC: @ 8129BFC + push {r4-r6,lr} + ldr r1, _08129C30 @ =gUnknown_203B0E4 + ldr r0, [r1] + cmp r0, 0 + beq _08129C2A + movs r5, 0 + adds r6, r1, 0 +_08129C0A: + ldr r0, [r6] + lsls r4, r5, 3 + adds r1, r0, r4 + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _08129C24 + adds r0, r1, 0x5 + ldr r1, [r1] + bl _call_via_r1 + ldr r1, [r6] + adds r1, r4 + strb r0, [r1, 0x4] +_08129C24: + adds r5, 0x1 + cmp r5, 0x2 + ble _08129C0A +_08129C2A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08129C30: .4byte gUnknown_203B0E4 + thumb_func_end sub_8129BFC + + thumb_func_start sub_8129C34 +sub_8129C34: @ 8129C34 + push {r4-r7,lr} + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + ldr r3, _08129C70 @ =gUnknown_203B0E4 + ldr r0, [r3] + lsrs r1, 21 + adds r0, r1 + ldr r2, _08129C74 @ =sub_812A420 + str r2, [r0] + movs r4, 0 + adds r5, r3, 0 + adds r3, r1, 0 + mov r12, r4 + ldr r1, _08129C78 @ =gUnknown_845AABC + movs r7, 0x1 + adds r2, r1, 0x4 +_08129C56: + ldrh r0, [r1] + cmp r0, r6 + bne _08129C7C + ldr r1, [r5] + adds r1, r3 + ldr r0, [r2] + str r0, [r1] + strb r7, [r1, 0x4] + ldr r0, [r5] + adds r0, r3 + mov r1, r12 + strb r1, [r0, 0x5] + b _08129C86 + .align 2, 0 +_08129C70: .4byte gUnknown_203B0E4 +_08129C74: .4byte sub_812A420 +_08129C78: .4byte gUnknown_845AABC +_08129C7C: + adds r1, 0x8 + adds r2, 0x8 + adds r4, 0x1 + cmp r4, 0x14 + bls _08129C56 +_08129C86: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8129C34 + + thumb_func_start sub_8129C8C +sub_8129C8C: @ 8129C8C + lsls r0, 24 + ldr r1, _08129C9C @ =gUnknown_203B0E4 + ldr r1, [r1] + lsrs r0, 21 + adds r1, r0 + ldrb r0, [r1, 0x4] + bx lr + .align 2, 0 +_08129C9C: .4byte gUnknown_203B0E4 + thumb_func_end sub_8129C8C + + thumb_func_start sub_8129CA0 +sub_8129CA0: @ 8129CA0 + push {r4,lr} + adds r4, r0, 0 + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08129D36 + ldrb r0, [r4] + cmp r0, 0x6 + bhi _08129D2C + lsls r0, 2 + ldr r1, _08129CC0 @ =_08129CC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08129CC0: .4byte _08129CC4 + .align 2, 0 +_08129CC4: + .4byte _08129CE0 + .4byte _08129CEA + .4byte _08129CF0 + .4byte _08129CF6 + .4byte _08129CFC + .4byte _08129D02 + .4byte _08129D14 +_08129CE0: + bl sub_812AAD4 + bl sub_812AB8C + b _08129D30 +_08129CEA: + bl sub_812ABD8 + b _08129D30 +_08129CF0: + bl sub_812AC08 + b _08129D30 +_08129CF6: + bl sub_812AC58 + b _08129D30 +_08129CFC: + bl sub_812AC9C + b _08129D30 +_08129D02: + bl sub_812ACC0 + bl sub_812ACEC + bl sub_812AD20 + bl sub_812AD04 + b _08129D30 +_08129D14: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08129D30 + bl sub_812AEC8 + bl sub_812B048 + bl sub_812B100 + b _08129D30 +_08129D2C: + movs r0, 0 + b _08129D38 +_08129D30: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_08129D36: + movs r0, 0x1 +_08129D38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129CA0 + + thumb_func_start sub_8129D40 +sub_8129D40: @ 8129D40 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08129D50 + cmp r0, 0x1 + beq _08129D5E + b _08129D68 +_08129D50: + bl sub_812AA10 + movs r0, 0x3 + movs r1, 0x3 + bl sub_8003F20 + b _08129D68 +_08129D5E: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _08129D70 +_08129D68: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + movs r0, 0x1 +_08129D70: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129D40 + + thumb_func_start sub_8129D78 +sub_8129D78: @ 8129D78 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08129D88 + cmp r0, 0x1 + beq _08129D96 + b _08129DA0 +_08129D88: + bl sub_812AA64 + movs r0, 0x3 + movs r1, 0x3 + bl sub_8003F20 + b _08129DA0 +_08129D96: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _08129DA8 +_08129DA0: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + movs r0, 0x1 +_08129DA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129D78 + + thumb_func_start sub_8129DB0 +sub_8129DB0: @ 8129DB0 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0x1 + beq _08129DE6 + cmp r0, 0x1 + bgt _08129DC4 + cmp r0, 0 + beq _08129DCA + b _08129E0C +_08129DC4: + cmp r0, 0x2 + beq _08129DF2 + b _08129E0C +_08129DCA: + movs r0, 0x1 + bl sub_812AEFC + bl sub_812A980 + cmp r0, 0 + bne _08129E12 + bl sub_812A804 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + b _08129E0C +_08129DE6: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + beq _08129E0C + b _08129E12 +_08129DF2: + bl sub_812A9C8 + cmp r0, 0 + bne _08129E12 + bl sub_812AF1C + movs r0, 0 + bl sub_812AEFC + bl sub_812B160 + movs r0, 0 + b _08129E14 +_08129E0C: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_08129E12: + movs r0, 0x1 +_08129E14: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129DB0 + + thumb_func_start sub_8129E1C +sub_8129E1C: @ 8129E1C + push {lr} + bl sub_812AF1C + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8129E1C + + thumb_func_start sub_8129E28 +sub_8129E28: @ 8129E28 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08129E38 + cmp r0, 0x1 + beq _08129E5C + b _08129E66 +_08129E38: + movs r0, 0 + movs r1, 0 + bl sub_812A578 + movs r0, 0x17 + movs r1, 0xB + movs r2, 0x1 + bl sub_812A424 + ldr r0, _08129E58 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + b _08129E66 + .align 2, 0 +_08129E58: .4byte gUnknown_203B0E4 +_08129E5C: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _08129E6E +_08129E66: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + movs r0, 0x1 +_08129E6E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129E28 + + thumb_func_start sub_8129E74 +sub_8129E74: @ 8129E74 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08129E84 + cmp r0, 0x1 + beq _08129E94 + b _08129EAA +_08129E84: + bl sub_812A6F4 + bl sub_812A51C + movs r0, 0 + bl sub_80020BC + b _08129EAA +_08129E94: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08129EB0 + bl sub_812A728 + bl sub_812A544 + movs r0, 0 + b _08129EB2 +_08129EAA: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_08129EB0: + movs r0, 0x1 +_08129EB2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129E74 + + thumb_func_start sub_8129EB8 +sub_8129EB8: @ 8129EB8 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08129ECA + cmp r0, 0x1 + beq _08129F02 + b _08129F14 +_08129ECA: + add r1, sp, 0x8 + add r0, sp, 0x4 + bl sub_8129730 + ldr r0, [sp, 0x4] + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp, 0x8] + lsls r1, 16 + lsrs r1, 16 + movs r2, 0 + bl sub_812A74C + bl sub_8129714 + adds r1, r0, 0 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_812A778 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + b _08129F14 +_08129F02: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08129F1A + bl sub_812B160 + movs r0, 0 + b _08129F1C +_08129F14: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_08129F1A: + movs r0, 0x1 +_08129F1C: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8129EB8 + + thumb_func_start sub_8129F24 +sub_8129F24: @ 8129F24 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldrb r0, [r6] + cmp r0, 0x1 + beq _08129F80 + cmp r0, 0x1 + bgt _08129F3A + cmp r0, 0 + beq _08129F44 + b _08129FBA +_08129F3A: + cmp r0, 0x2 + beq _08129FA4 + cmp r0, 0x3 + beq _08129FB6 + b _08129FBA +_08129F44: + bl sub_8129788 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8129758 + adds r5, r0, 0 + bl sub_80092D4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0x66 + bl sub_812A74C + movs r0, 0x5 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_812A778 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + b _08129FBA +_08129F80: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08129FC0 + movs r0, 0x1 + movs r1, 0x10 + bl sub_812A578 + ldr r0, _08129FA0 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + b _08129FBA + .align 2, 0 +_08129FA0: .4byte gUnknown_203B0E4 +_08129FA4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08129FC0 + movs r0, 0x1 + bl sub_812AF8C + b _08129FBA +_08129FB6: + movs r0, 0 + b _08129FC2 +_08129FBA: + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_08129FC0: + movs r0, 0x1 +_08129FC2: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8129F24 + + thumb_func_start sub_8129FCC +sub_8129FCC: @ 8129FCC + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldrb r0, [r6] + cmp r0, 0x1 + beq _0812A028 + cmp r0, 0x1 + bgt _08129FE2 + cmp r0, 0 + beq _08129FEC + b _0812A062 +_08129FE2: + cmp r0, 0x2 + beq _0812A048 + cmp r0, 0x3 + beq _0812A05E + b _0812A062 +_08129FEC: + bl sub_8129788 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8129758 + adds r5, r0, 0 + bl sub_80092D4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0 + bl sub_812A74C + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_812A778 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + b _0812A062 +_0812A028: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0812A068 + bl sub_812A6F4 + ldr r0, _0812A044 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + b _0812A062 + .align 2, 0 +_0812A044: .4byte gUnknown_203B0E4 +_0812A048: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0812A068 + movs r0, 0 + bl sub_812AF8C + bl sub_812A728 + b _0812A062 +_0812A05E: + movs r0, 0 + b _0812A06A +_0812A062: + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_0812A068: + movs r0, 0x1 +_0812A06A: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8129FCC + + thumb_func_start sub_812A074 +sub_812A074: @ 812A074 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A084 + cmp r0, 0x1 + beq _0812A098 + b _0812A0A6 +_0812A084: + bl sub_812A804 + movs r0, 0x2 + movs r1, 0x2 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A0A6 +_0812A098: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0812A0A6 + movs r0, 0 + b _0812A0A8 +_0812A0A6: + movs r0, 0x1 +_0812A0A8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A074 + + thumb_func_start sub_812A0B0 +sub_812A0B0: @ 812A0B0 + push {r4-r6,lr} + adds r6, r0, 0 + ldrb r0, [r6] + cmp r0, 0x4 + bhi _0812A182 + lsls r0, 2 + ldr r1, _0812A0C4 @ =_0812A0C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812A0C4: .4byte _0812A0C8 + .align 2, 0 +_0812A0C8: + .4byte _0812A0DC + .4byte _0812A108 + .4byte _0812A138 + .4byte _0812A15C + .4byte _0812A126 +_0812A0DC: + ldr r0, _0812A104 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrh r5, [r0, 0x1A] + bl sub_81297C4 + adds r4, r0, 0 + bl sub_81297D0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_812AA78 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + b _0812A17C + .align 2, 0 +_0812A104: .4byte gUnknown_203B0E4 +_0812A108: + bl sub_8001960 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _0812A182 + ldr r0, _0812A12C @ =gUnknown_203B0E4 + ldr r1, [r0] + ldrh r0, [r1, 0x1A] + cmp r0, 0x8 + bhi _0812A130 + adds r0, 0x1 + strh r0, [r1, 0x1A] + movs r0, 0x4 + strb r0, [r6] +_0812A126: + movs r0, 0 + b _0812A184 + .align 2, 0 +_0812A12C: .4byte gUnknown_203B0E4 +_0812A130: + strh r2, [r1, 0x1C] + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_0812A138: + movs r0, 0 + movs r1, 0 + movs r2, 0x5 + movs r3, 0x11 + bl sub_80044A8 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + ldr r0, _0812A178 @ =gUnknown_203B0E4 + ldr r1, [r0] + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + strh r0, [r1, 0x1C] + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_0812A15C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0812A182 + ldr r0, _0812A178 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrh r0, [r0, 0x1C] + cmp r0, 0x2 + bhi _0812A17C + ldrb r0, [r6] + subs r0, 0x1 + b _0812A180 + .align 2, 0 +_0812A178: .4byte gUnknown_203B0E4 +_0812A17C: + ldrb r0, [r6] + adds r0, 0x1 +_0812A180: + strb r0, [r6] +_0812A182: + movs r0, 0x1 +_0812A184: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_812A0B0 + + thumb_func_start sub_812A18C +sub_812A18C: @ 812A18C + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A19C + cmp r0, 0x1 + beq _0812A1A8 + b _0812A1AE +_0812A19C: + bl sub_812AFC0 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A1AE +_0812A1A8: + bl sub_812AFFC + b _0812A1B0 +_0812A1AE: + movs r0, 0x1 +_0812A1B0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A18C + + thumb_func_start sub_812A1B8 +sub_812A1B8: @ 812A1B8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A1C8 + cmp r0, 0x1 + beq _0812A1E8 + b _0812A1F2 +_0812A1C8: + movs r0, 0x3 + movs r1, 0x10 + bl sub_812A578 + ldr r0, _0812A1E4 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A1F2 + .align 2, 0 +_0812A1E4: .4byte gUnknown_203B0E4 +_0812A1E8: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A1F4 +_0812A1F2: + movs r0, 0x1 +_0812A1F4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A1B8 + + thumb_func_start sub_812A1FC +sub_812A1FC: @ 812A1FC + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A20C + cmp r0, 0x1 + beq _0812A22C + b _0812A236 +_0812A20C: + movs r0, 0x4 + movs r1, 0 + bl sub_812A578 + ldr r0, _0812A228 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A236 + .align 2, 0 +_0812A228: .4byte gUnknown_203B0E4 +_0812A22C: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A238 +_0812A236: + movs r0, 0x1 +_0812A238: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A1FC + + thumb_func_start sub_812A240 +sub_812A240: @ 812A240 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A250 + cmp r0, 0x1 + beq _0812A280 + b _0812A28A +_0812A250: + bl sub_813CC90 + bl sub_8129814 + adds r1, r0, 0 + movs r0, 0 + bl sub_813CCAC + movs r0, 0x5 + movs r1, 0 + bl sub_812A578 + ldr r0, _0812A27C @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A28A + .align 2, 0 +_0812A27C: .4byte gUnknown_203B0E4 +_0812A280: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A28C +_0812A28A: + movs r0, 0x1 +_0812A28C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A240 + + thumb_func_start sub_812A294 +sub_812A294: @ 812A294 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A2A4 + cmp r0, 0x1 + beq _0812A2D0 + b _0812A2DA +_0812A2A4: + movs r0, 0x6 + movs r1, 0 + bl sub_812A578 + movs r0, 0x17 + movs r1, 0xA + movs r2, 0x1 + bl sub_812A424 + ldr r0, _0812A2CC @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A2DA + .align 2, 0 +_0812A2CC: .4byte gUnknown_203B0E4 +_0812A2D0: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A2DC +_0812A2DA: + movs r0, 0x1 +_0812A2DC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A294 + + thumb_func_start sub_812A2E4 +sub_812A2E4: @ 812A2E4 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A2F4 + cmp r0, 0x1 + beq _0812A320 + b _0812A32A +_0812A2F4: + movs r0, 0x7 + movs r1, 0 + bl sub_812A578 + movs r0, 0x17 + movs r1, 0xA + movs r2, 0x1 + bl sub_812A424 + ldr r0, _0812A31C @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A32A + .align 2, 0 +_0812A31C: .4byte gUnknown_203B0E4 +_0812A320: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A32C +_0812A32A: + movs r0, 0x1 +_0812A32C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A2E4 + + thumb_func_start sub_812A334 +sub_812A334: @ 812A334 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A344 + cmp r0, 0x1 + beq _0812A364 + b _0812A36E +_0812A344: + movs r0, 0x8 + movs r1, 0 + bl sub_812A578 + ldr r0, _0812A360 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A36E + .align 2, 0 +_0812A360: .4byte gUnknown_203B0E4 +_0812A364: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A370 +_0812A36E: + movs r0, 0x1 +_0812A370: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A334 + + thumb_func_start sub_812A378 +sub_812A378: @ 812A378 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A388 + cmp r0, 0x1 + beq _0812A3BC + b _0812A3C6 +_0812A388: + bl sub_813CC90 + ldr r0, _0812A3B4 @ =gUnknown_300500C + ldr r1, [r0] + movs r0, 0 + bl sub_813CCAC + movs r0, 0x9 + movs r1, 0 + bl sub_812A578 + ldr r0, _0812A3B8 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A3C6 + .align 2, 0 +_0812A3B4: .4byte gUnknown_300500C +_0812A3B8: .4byte gUnknown_203B0E4 +_0812A3BC: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A3C8 +_0812A3C6: + movs r0, 0x1 +_0812A3C8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A378 + + thumb_func_start sub_812A3D0 +sub_812A3D0: @ 812A3D0 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0812A3E0 + cmp r0, 0x1 + beq _0812A40C + b _0812A416 +_0812A3E0: + movs r0, 0xA + movs r1, 0 + bl sub_812A578 + movs r0, 0x17 + movs r1, 0xA + movs r2, 0x1 + bl sub_812A424 + ldr r0, _0812A408 @ =gUnknown_203B0E4 + ldr r0, [r0] + ldrb r0, [r0, 0x1E] + movs r1, 0x3 + bl sub_8003F20 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0812A416 + .align 2, 0 +_0812A408: .4byte gUnknown_203B0E4 +_0812A40C: + bl sub_8001960 + lsls r0, 24 + lsrs r0, 24 + b _0812A418 +_0812A416: + movs r0, 0x1 +_0812A418: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A3D0 + + thumb_func_start sub_812A420 +sub_812A420: @ 812A420 + movs r0, 0 + bx lr + thumb_func_end sub_812A420 + + thumb_func_start sub_812A424 +sub_812A424: @ 812A424 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + lsls r0, 24 + lsls r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldr r4, _0812A4FC @ =0xffffff00 + ldr r2, [sp, 0xC] + ands r2, r4 + lsrs r0, 16 + ldr r3, _0812A500 @ =0xffff00ff + ands r2, r3 + orrs r2, r0 + lsrs r1, 8 + ldr r0, _0812A504 @ =0xff00ffff + ands r2, r0 + orrs r2, r1 + ldr r0, _0812A508 @ =0x00ffffff + ands r2, r0 + movs r0, 0xC0 + lsls r0, 19 + orrs r2, r0 + str r2, [sp, 0xC] + ldr r0, [sp, 0x10] + ands r0, r4 + movs r1, 0x4 + orrs r0, r1 + ands r0, r3 + movs r1, 0xE0 + lsls r1, 4 + orrs r0, r1 + ldr r1, _0812A50C @ =0x0000ffff + ands r0, r1 + movs r1, 0xA4 + lsls r1, 15 + orrs r0, r1 + str r0, [sp, 0x10] + add r0, sp, 0xC + bl sub_8003CE4 + adds r1, r0, 0 + ldr r6, _0812A510 @ =gUnknown_203B0E4 + ldr r0, [r6] + movs r7, 0 + strh r1, [r0, 0x18] + lsls r0, r1, 16 + lsrs r0, 16 + cmp r0, 0xFF + beq _0812A4F0 + lsls r0, r1, 24 + lsrs r0, 24 + movs r1, 0x11 + bl sub_800445C + ldr r0, [r6] + ldrb r0, [r0, 0x18] + bl sub_8003FA0 + ldr r0, [r6] + ldrb r0, [r0, 0x18] + ldr r2, _0812A514 @ =gUnknown_8417938 + movs r5, 0x2 + str r5, [sp] + movs r4, 0xFF + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + ldr r0, [r6] + ldrb r0, [r0, 0x18] + ldr r2, _0812A518 @ =gUnknown_841793C + movs r1, 0x10 + str r1, [sp] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + ldr r0, [r6] + ldrb r0, [r0, 0x18] + movs r1, 0x1 + movs r2, 0xD + bl sub_8150048 + ldr r0, [r6] + ldrb r0, [r0, 0x18] + movs r1, 0xE + str r1, [sp] + str r5, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810F7D8 +_0812A4F0: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A4FC: .4byte 0xffffff00 +_0812A500: .4byte 0xffff00ff +_0812A504: .4byte 0xff00ffff +_0812A508: .4byte 0x00ffffff +_0812A50C: .4byte 0x0000ffff +_0812A510: .4byte gUnknown_203B0E4 +_0812A514: .4byte gUnknown_8417938 +_0812A518: .4byte gUnknown_841793C + thumb_func_end sub_812A424 + + thumb_func_start sub_812A51C +sub_812A51C: @ 812A51C + push {r4,lr} + ldr r4, _0812A540 @ =gUnknown_203B0E4 + ldr r0, [r4] + ldrh r0, [r0, 0x18] + cmp r0, 0xFF + beq _0812A53A + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_810F4D8 + ldr r0, [r4] + ldrb r0, [r0, 0x18] + bl sub_80040B8 +_0812A53A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A540: .4byte gUnknown_203B0E4 + thumb_func_end sub_812A51C + + thumb_func_start sub_812A544 +sub_812A544: @ 812A544 + push {r4,lr} + ldr r4, _0812A564 @ =gUnknown_203B0E4 + ldr r0, [r4] + ldrh r0, [r0, 0x18] + cmp r0, 0xFF + beq _0812A55E + lsls r0, 24 + lsrs r0, 24 + bl sub_8003E3C + ldr r1, [r4] + movs r0, 0xFF + strh r0, [r1, 0x18] +_0812A55E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A564: .4byte gUnknown_203B0E4 + thumb_func_end sub_812A544 + + thumb_func_start sub_812A568 +sub_812A568: @ 812A568 + push {lr} + bl sub_810F998 + lsls r0, 24 + asrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_812A568 + + thumb_func_start sub_812A578 +sub_812A578: @ 812A578 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x1C + adds r7, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + ldr r1, _0812A624 @ =0xffffff00 + ldr r3, [sp, 0x14] + ands r3, r1 + ldr r2, _0812A628 @ =0xffff00ff + ands r3, r2 + movs r0, 0x80 + lsls r0, 4 + orrs r3, r0 + ldr r0, _0812A62C @ =0xff00ffff + ands r3, r0 + movs r0, 0x80 + lsls r0, 13 + orrs r3, r0 + ldr r5, _0812A630 @ =0x00ffffff + ands r3, r5 + movs r0, 0xA8 + lsls r0, 21 + orrs r3, r0 + str r3, [sp, 0x14] + ldr r0, [sp, 0x18] + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + ands r0, r2 + movs r1, 0xE0 + lsls r1, 4 + orrs r0, r1 + ldr r1, _0812A634 @ =0x0000ffff + ands r0, r1 + movs r1, 0xD4 + lsls r1, 15 + orrs r0, r1 + str r0, [sp, 0x18] + ldr r1, _0812A638 @ =gUnknown_845AB64 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 2 + adds r4, r0, r1 + ldrb r0, [r4, 0xA] + cmp r0, 0 + beq _0812A5F8 + lsls r0, r3, 16 + movs r1, 0xF9 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + ands r2, r3 + orrs r2, r0 + lsrs r1, r2, 24 + adds r1, 0x7 + lsls r1, 24 + adds r0, r5, 0 + ands r0, r2 + orrs r0, r1 + str r0, [sp, 0x14] +_0812A5F8: + add r0, sp, 0x14 + bl sub_8003CE4 + ldr r5, _0812A63C @ =gUnknown_203B0E4 + ldr r1, [r5] + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x1E] + mov r8, r0 + cmp r0, 0xFF + beq _0812A6E2 + ldrb r0, [r4, 0x9] + cmp r0, 0 + beq _0812A640 + adds r0, r1, 0 + adds r0, 0x22 + ldr r1, [r4] + bl sub_813CCC8 + ldr r0, [r5] + adds r6, r0, 0 + adds r6, 0x22 + b _0812A642 + .align 2, 0 +_0812A624: .4byte 0xffffff00 +_0812A628: .4byte 0xffff00ff +_0812A62C: .4byte 0xff00ffff +_0812A630: .4byte 0x00ffffff +_0812A634: .4byte 0x0000ffff +_0812A638: .4byte gUnknown_845AB64 +_0812A63C: .4byte gUnknown_203B0E4 +_0812A640: + ldr r6, [r4] +_0812A642: + mov r0, r9 + lsls r1, r0, 8 + movs r0, 0 + movs r2, 0 + bl sub_8001D08 + mov r1, r8 + lsls r0, r1, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + movs r1, 0x11 + bl sub_800445C + adds r0, r5, 0 + bl sub_8003FA0 + ldr r1, _0812A6AC @ =gUnknown_845AB64 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 2 + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + cmp r0, 0x1 + bne _0812A6B0 + adds r0, r5, 0 + movs r1, 0xA + movs r2, 0x2 + bl sub_81501D0 + ldrb r3, [r4, 0x5] + adds r3, 0x8 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4, 0x6] + adds r0, 0x8 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + ldrb r0, [r4, 0x7] + str r0, [sp, 0xC] + ldrb r0, [r4, 0x8] + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_812E62C + b _0812A6DA + .align 2, 0 +_0812A6AC: .4byte gUnknown_845AB64 +_0812A6B0: + adds r0, r5, 0 + movs r1, 0xA + movs r2, 0x2 + bl sub_8150048 + ldrb r3, [r4, 0x5] + ldrb r0, [r4, 0x6] + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + ldrb r0, [r4, 0x7] + str r0, [sp, 0xC] + ldrb r0, [r4, 0x8] + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x2 + adds r2, r6, 0 + bl sub_812E62C +_0812A6DA: + ldr r0, _0812A6F0 @ =gUnknown_203B0E4 + ldr r0, [r0] + mov r1, r8 + strh r1, [r0, 0x1E] +_0812A6E2: + add sp, 0x1C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A6F0: .4byte gUnknown_203B0E4 + thumb_func_end sub_812A578 + + thumb_func_start sub_812A6F4 +sub_812A6F4: @ 812A6F4 + push {r4,lr} + ldr r4, _0812A724 @ =gUnknown_203B0E4 + ldr r0, [r4] + ldrh r0, [r0, 0x1E] + cmp r0, 0xFF + beq _0812A712 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_810F4D8 + ldr r0, [r4] + ldrb r0, [r0, 0x1E] + bl sub_80040B8 +_0812A712: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A724: .4byte gUnknown_203B0E4 + thumb_func_end sub_812A6F4 + + thumb_func_start sub_812A728 +sub_812A728: @ 812A728 + push {r4,lr} + ldr r4, _0812A748 @ =gUnknown_203B0E4 + ldr r0, [r4] + ldrh r0, [r0, 0x1E] + cmp r0, 0xFF + beq _0812A742 + lsls r0, 24 + lsrs r0, 24 + bl sub_8003E3C + ldr r1, [r4] + movs r0, 0xFF + strh r0, [r1, 0x1E] +_0812A742: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A748: .4byte gUnknown_203B0E4 + thumb_func_end sub_812A728 + + thumb_func_start sub_812A74C +sub_812A74C: @ 812A74C + push {lr} + sub sp, 0x8 + adds r3, r0, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 19 + lsrs r3, 16 + lsls r1, 19 + lsrs r1, 16 + str r1, [sp] + movs r0, 0xE + str r0, [sp, 0x4] + movs r0, 0x1 + adds r1, r2, 0 + adds r2, r3, 0 + movs r3, 0x1 + bl sub_8004378 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_812A74C + + thumb_func_start sub_812A778 +sub_812A778: @ 812A778 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + mov r10, r1 + ldr r1, [sp, 0x54] + lsls r0, 16 + lsrs r5, r0, 16 + mov r9, r5 + lsls r2, 24 + lsrs r4, r2, 24 + mov r8, r4 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r4, 0 + beq _0812A7B4 + bl sub_81297DC + adds r1, r0, 0 + subs r1, r5 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_812A74C +_0812A7B4: + add r0, sp, 0xC + mov r1, r8 + strb r1, [r0] + strb r7, [r0, 0x1] + strb r6, [r0, 0x2] + add r4, sp, 0x10 + movs r0, 0xFC + strb r0, [r4] + movs r0, 0x14 + strb r0, [r4, 0x1] + movs r0, 0x8 + strb r0, [r4, 0x2] + mov r0, sp + adds r0, 0x13 + mov r1, r10 + bl sub_8008D84 + mov r0, r9 + lsls r2, r0, 27 + lsrs r2, 24 + add r1, sp, 0xC + str r1, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0x2 + movs r3, 0x1 + bl sub_812E51C + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_812A778 + + thumb_func_start sub_812A804 +sub_812A804: @ 812A804 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4C + movs r0, 0x2 + movs r1, 0xFF + bl sub_800445C + bl sub_81296F4 + lsls r0, 24 + lsrs r2, r0, 24 + add r1, sp, 0xC + movs r0, 0 + strb r0, [r1] + movs r0, 0xE + strb r0, [r1, 0x1] + movs r0, 0xD + strb r0, [r1, 0x2] + cmp r2, 0x3 + beq _0812A8A0 + add r1, sp, 0x10 + movs r0, 0xFC + strb r0, [r1] + movs r0, 0x14 + strb r0, [r1, 0x1] + movs r0, 0x8 + strb r0, [r1, 0x2] + str r0, [sp, 0x40] + str r1, [sp, 0x44] + cmp r2, 0x2 + bne _0812A84C + movs r1, 0x6 + str r1, [sp, 0x40] +_0812A84C: + movs r7, 0 + movs r6, 0 + lsls r0, r2, 2 + ldr r1, _0812A89C @ =gUnknown_845A9AC + adds r0, r2 + lsls r0, 3 + adds r4, r0, r1 + ldr r0, [sp, 0x40] + lsls r5, r0, 24 +_0812A85E: + ldr r1, [r4] + cmp r1, 0 + bne _0812A866 + b _0812A96C +_0812A866: + mov r0, sp + adds r0, 0x13 + bl sub_8008D84 + lsls r3, r6, 24 + lsrs r3, 24 + add r1, sp, 0xC + str r1, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r0, [sp, 0x44] + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + lsrs r2, r5, 24 + bl sub_812E51C + adds r4, 0x4 + adds r7, 0x1 + adds r0, r6, 0 + adds r0, 0xC + lsls r0, 16 + lsrs r6, r0, 16 + cmp r7, 0x9 + ble _0812A85E + b _0812A96C + .align 2, 0 +_0812A89C: .4byte gUnknown_845A9AC +_0812A8A0: + movs r1, 0x4 + str r1, [sp, 0x40] + movs r7, 0 + movs r6, 0 +_0812A8A8: + adds r0, r7, 0 + bl sub_81294B0 + adds r5, r0, 0 + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + cmp r0, 0x28 + bgt _0812A8E6 + lsls r3, r6, 24 + lsrs r3, 24 + add r4, sp, 0xC + str r4, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + movs r4, 0x80 + lsls r4, 19 + lsrs r2, r4, 24 + bl sub_812E51C + adds r0, r7, 0x1 + str r0, [sp, 0x48] + adds r6, 0xC + mov r10, r6 + b _0812A960 +_0812A8E6: + adds r0, r5, 0 + bl sub_80092D4 + adds r4, r0, 0 + mov r1, sp + adds r1, 0x10 + str r1, [sp, 0x44] + ldr r0, [sp, 0x40] + lsls r0, 24 + mov r8, r0 + lsls r1, r6, 24 + mov r9, r1 + adds r0, r7, 0x1 + str r0, [sp, 0x48] + adds r6, 0xC + mov r10, r6 + ldr r7, [sp, 0x40] + adds r7, 0x23 + ldr r6, [sp, 0x44] +_0812A90C: + subs r4, 0x1 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8009294 + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + bl sub_8005ED4 + cmp r0, 0x23 + bgt _0812A90C + mov r1, r8 + lsrs r2, r1, 24 + mov r0, r9 + lsrs r4, r0, 24 + add r1, sp, 0xC + str r1, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + ldr r1, [sp, 0x44] + str r1, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + adds r3, r4, 0 + bl sub_812E51C + adds r2, r7, 0 + add r0, sp, 0xC + str r0, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + ldr r0, _0812A97C @ =gUnknown_845ABE8 + str r0, [sp, 0x8] + movs r0, 0x2 + movs r1, 0 + adds r3, r4, 0 + bl sub_812E51C +_0812A960: + ldr r7, [sp, 0x48] + mov r4, r10 + lsls r0, r4, 16 + lsrs r6, r0, 16 + cmp r7, 0x9 + ble _0812A8A8 +_0812A96C: + add sp, 0x4C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A97C: .4byte gUnknown_845ABE8 + thumb_func_end sub_812A804 + + thumb_func_start sub_812A980 +sub_812A980: @ 812A980 + push {r4,lr} + ldr r1, _0812A9A4 @ =gUnknown_203B0E4 + ldr r2, [r1] + ldrh r3, [r2, 0x20] + movs r4, 0x20 + ldrsh r0, [r2, r4] + cmp r0, 0x37 + bgt _0812A9B4 + adds r0, r3, 0 + adds r0, 0xC + strh r0, [r2, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x37 + ble _0812A9A8 + movs r0, 0x38 + strh r0, [r2, 0x20] + b _0812A9B4 + .align 2, 0 +_0812A9A4: .4byte gUnknown_203B0E4 +_0812A9A8: + movs r1, 0x20 + ldrsh r0, [r2, r1] + bl sub_812ADA0 + movs r0, 0x1 + b _0812A9C0 +_0812A9B4: + ldr r0, [r1] + movs r4, 0x20 + ldrsh r0, [r0, r4] + bl sub_812ADF8 + movs r0, 0 +_0812A9C0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A980 + + thumb_func_start sub_812A9C8 +sub_812A9C8: @ 812A9C8 + push {r4,lr} + ldr r1, _0812A9EC @ =gUnknown_203B0E4 + ldr r2, [r1] + ldrh r3, [r2, 0x20] + movs r4, 0x20 + ldrsh r0, [r2, r4] + cmp r0, 0 + ble _0812A9FC + adds r0, r3, 0 + subs r0, 0xC + strh r0, [r2, 0x20] + lsls r0, 16 + cmp r0, 0 + bgt _0812A9F0 + movs r0, 0 + strh r0, [r2, 0x20] + b _0812A9FC + .align 2, 0 +_0812A9EC: .4byte gUnknown_203B0E4 +_0812A9F0: + movs r1, 0x20 + ldrsh r0, [r2, r1] + bl sub_812ADA0 + movs r0, 0x1 + b _0812AA08 +_0812A9FC: + ldr r0, [r1] + movs r4, 0x20 + ldrsh r0, [r0, r4] + bl sub_812ADF8 + movs r0, 0 +_0812AA08: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812A9C8 + + thumb_func_start sub_812AA10 +sub_812AA10: @ 812AA10 + push {lr} + sub sp, 0xC + movs r0, 0x3 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0xD + bl sub_8150048 + ldr r0, _0812AA60 @ =gUnknown_845ABEC + str r0, [sp] + movs r0, 0x3 + movs r1, 0x2 + movs r2, 0xE + movs r3, 0x5 + bl sub_810FC80 + bl sub_81296F4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xE + str r1, [sp] + movs r1, 0x5 + str r1, [sp, 0x4] + str r0, [sp, 0x8] + movs r0, 0x3 + movs r1, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_810F7D8 + movs r0, 0x3 + bl sub_8003FA0 + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_0812AA60: .4byte gUnknown_845ABEC + thumb_func_end sub_812AA10 + + thumb_func_start sub_812AA64 +sub_812AA64: @ 812AA64 + push {lr} + movs r0, 0x3 + movs r1, 0 + bl sub_810F4D8 + movs r0, 0x3 + bl sub_80040B8 + pop {r0} + bx r0 + thumb_func_end sub_812AA64 + + thumb_func_start sub_812AA78 +sub_812AA78: @ 812AA78 + push {r4,r5,lr} + sub sp, 0x10 + adds r5, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r2, 24 + add r3, sp, 0xC + movs r1, 0x1 + strb r1, [r3] + lsrs r2, 23 + adds r1, r2, 0x2 + strb r1, [r3, 0x1] + adds r1, r3, 0 + adds r2, 0x3 + strb r2, [r1, 0x2] + lsls r4, r0, 4 + subs r4, r0 + lsls r3, r4, 16 + lsrs r3, 16 + movs r0, 0xA8 + str r0, [sp] + movs r0, 0xF + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x11 + movs r2, 0 + bl sub_8004378 + lsls r4, 24 + lsrs r4, 24 + add r0, sp, 0xC + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + adds r3, r4, 0 + bl sub_812E51C + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_812AA78 + + thumb_func_start sub_812AAD4 +sub_812AAD4: @ 812AAD4 + push {lr} + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000AF4 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r1, 0xE0 + lsls r1, 8 + movs r0, 0 + bl sub_8000B14 + movs r1, 0x80 + lsls r1, 6 + movs r0, 0 + bl sub_8000AF4 + ldr r1, _0812AB88 @ =0x000040f0 + movs r0, 0x40 + bl sub_8000A38 + movs r0, 0x44 + movs r1, 0x90 + bl sub_8000A38 + movs r0, 0x48 + movs r1, 0x3D + bl sub_8000A38 + movs r0, 0x4A + movs r1, 0x3F + bl sub_8000A38 + pop {r0} + bx r0 + .align 2, 0 +_0812AB88: .4byte 0x000040f0 + thumb_func_end sub_812AAD4 + + thumb_func_start sub_812AB8C +sub_812AB8C: @ 812AB8C + push {r4,lr} + ldr r4, _0812ABC8 @ =gUnknown_203B0E4 + ldr r1, [r4] + movs r0, 0x94 + lsls r0, 1 + adds r1, r0 + movs r0, 0 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _0812ABCC @ =0x00000928 + adds r1, r0 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _0812ABD0 @ =0x00001128 + adds r1, r0 + movs r0, 0x3 + bl sub_8001FA0 + ldr r1, [r4] + ldr r0, _0812ABD4 @ =0x00001928 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812ABC8: .4byte gUnknown_203B0E4 +_0812ABCC: .4byte 0x00000928 +_0812ABD0: .4byte 0x00001128 +_0812ABD4: .4byte 0x00001928 + thumb_func_end sub_812AB8C + + thumb_func_start sub_812ABD8 +sub_812ABD8: @ 812ABD8 + push {lr} + sub sp, 0x8 + movs r1, 0xC0 + lsls r1, 19 + movs r0, 0 + movs r2, 0x20 + movs r3, 0x1 + bl sub_8000F44 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_812ABD8 + + thumb_func_start sub_812AC08 +sub_812AC08: @ 812AC08 + push {lr} + sub sp, 0x4 + ldr r0, _0812AC48 @ =gUnknown_8EAA9F0 + movs r1, 0x70 + movs r2, 0x20 + bl sub_80703EC + ldr r0, _0812AC4C @ =gUnknown_845AA24 + movs r1, 0xC0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _0812AC50 @ =gUnknown_8EAAA10 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _0812AC54 @ =gUnknown_8EAAA6C + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x1 + bl sub_80020BC + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0812AC48: .4byte gUnknown_8EAA9F0 +_0812AC4C: .4byte gUnknown_845AA24 +_0812AC50: .4byte gUnknown_8EAAA10 +_0812AC54: .4byte gUnknown_8EAAA6C + thumb_func_end sub_812AC08 + + thumb_func_start sub_812AC58 +sub_812AC58: @ 812AC58 + push {lr} + sub sp, 0x4 + ldr r0, _0812AC90 @ =gUnknown_8EA1700 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _0812AC94 @ =gUnknown_8EA1720 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _0812AC98 @ =gUnknown_8EA1958 + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x2 + bl sub_80020BC + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0812AC90: .4byte gUnknown_8EA1700 +_0812AC94: .4byte gUnknown_8EA1720 +_0812AC98: .4byte gUnknown_8EA1958 + thumb_func_end sub_812AC58 + + thumb_func_start sub_812AC9C +sub_812AC9C: @ 812AC9C + push {lr} + ldr r0, _0812ACB8 @ =gUnknown_845AA44 + movs r1, 0x80 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _0812ACBC @ =0x06004020 + movs r0, 0 + movs r2, 0x20 + movs r3, 0x1 + bl sub_8000F44 + pop {r0} + bx r0 + .align 2, 0 +_0812ACB8: .4byte gUnknown_845AA44 +_0812ACBC: .4byte 0x06004020 + thumb_func_end sub_812AC9C + + thumb_func_start sub_812ACC0 +sub_812ACC0: @ 812ACC0 + push {lr} + ldr r0, _0812ACE8 @ =gUnknown_845AA64 + movs r1, 0xF0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x11 + bl sub_800445C + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + pop {r0} + bx r0 + .align 2, 0 +_0812ACE8: .4byte gUnknown_845AA64 + thumb_func_end sub_812ACC0 + + thumb_func_start sub_812ACEC +sub_812ACEC: @ 812ACEC + push {lr} + movs r0, 0x2 + bl sub_8003FA0 + bl sub_812A804 + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_812ACEC + + thumb_func_start sub_812AD04 +sub_812AD04: @ 812AD04 + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x3 + bl sub_8003F20 + pop {r0} + bx r0 + thumb_func_end sub_812AD04 + + thumb_func_start sub_812AD20 +sub_812AD20: @ 812AD20 + push {lr} + movs r0, 0x3 + movs r1, 0x11 + bl sub_800445C + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0xD0 + bl sub_815001C + movs r0, 0x3 + movs r1, 0xA + movs r2, 0x20 + bl sub_814FF2C + ldr r0, _0812AD4C @ =gUnknown_841F408 + movs r1, 0xE0 + movs r2, 0x20 + bl sub_80703EC + pop {r0} + bx r0 + .align 2, 0 +_0812AD4C: .4byte gUnknown_841F408 + thumb_func_end sub_812AD20 + + thumb_func_start sub_812AD50 +sub_812AD50: @ 812AD50 + push {lr} + sub sp, 0x10 + ldr r0, _0812AD8C @ =0xa2600001 + str r0, [sp, 0x4] + ldr r0, _0812AD90 @ =0x04000014 + str r0, [sp] + mov r2, sp + movs r1, 0 + movs r0, 0x1 + strb r0, [r2, 0x8] + mov r0, sp + strb r1, [r0, 0x9] + ldr r0, _0812AD94 @ =gUnknown_203B0E4 + ldr r0, [r0] + strh r1, [r0, 0x20] + str r1, [sp, 0xC] + add r0, sp, 0xC + ldr r1, _0812AD98 @ =gUnknown_2038700 + ldr r2, _0812AD9C @ =0x010003c0 + bl CpuFastSet + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + add sp, 0x10 + pop {r0} + bx r0 + .align 2, 0 +_0812AD8C: .4byte 0xa2600001 +_0812AD90: .4byte 0x04000014 +_0812AD94: .4byte gUnknown_203B0E4 +_0812AD98: .4byte gUnknown_2038700 +_0812AD9C: .4byte 0x010003c0 + thumb_func_end sub_812AD50 + + thumb_func_start sub_812ADA0 +sub_812ADA0: @ 812ADA0 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + strh r0, [r1] + ldr r5, _0812ADE8 @ =gUnknown_2039600 + ldrb r0, [r5, 0x14] + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 7 + ldr r4, _0812ADEC @ =gUnknown_2038700 + adds r1, r4 + ldr r2, _0812ADF0 @ =0x01000090 + mov r0, sp + bl CpuSet + mov r0, sp + adds r0, 0x2 + movs r1, 0 + strh r1, [r0] + ldrb r2, [r5, 0x14] + lsls r1, r2, 4 + subs r1, r2 + lsls r1, 7 + movs r2, 0x90 + lsls r2, 1 + adds r4, r2 + adds r1, r4 + ldr r2, _0812ADF4 @ =0x01000010 + bl CpuSet + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812ADE8: .4byte gUnknown_2039600 +_0812ADEC: .4byte gUnknown_2038700 +_0812ADF0: .4byte 0x01000090 +_0812ADF4: .4byte 0x01000010 + thumb_func_end sub_812ADA0 + + thumb_func_start sub_812ADF8 +sub_812ADF8: @ 812ADF8 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x8 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, sp + strh r4, [r0] + ldr r5, _0812AE64 @ =gUnknown_2038700 + ldr r0, _0812AE68 @ =0x01000090 + mov r9, r0 + mov r0, sp + adds r1, r5, 0 + mov r2, r9 + bl CpuSet + mov r0, sp + adds r0, 0x2 + movs r6, 0 + strh r6, [r0] + movs r2, 0x90 + lsls r2, 1 + adds r1, r5, r2 + ldr r2, _0812AE6C @ =0x01000010 + mov r8, r2 + bl CpuSet + add r0, sp, 0x4 + strh r4, [r0] + movs r2, 0xF0 + lsls r2, 3 + adds r1, r5, r2 + mov r2, r9 + bl CpuSet + mov r0, sp + adds r0, 0x6 + strh r6, [r0] + movs r1, 0x8A + lsls r1, 4 + adds r5, r1 + adds r1, r5, 0 + mov r2, r8 + bl CpuSet + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0812AE64: .4byte gUnknown_2038700 +_0812AE68: .4byte 0x01000090 +_0812AE6C: .4byte 0x01000010 + thumb_func_end sub_812ADF8 + + thumb_func_start sub_812AE70 +sub_812AE70: @ 812AE70 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _0812AE9C @ =gUnknown_845AF58 +_0812AE76: + adds r0, r4, 0 + bl sub_800EBCC + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x4 + bls _0812AE76 + ldr r0, _0812AEA0 @ =gUnknown_845AF80 + bl sub_8008928 + ldr r4, _0812AEA4 @ =gUnknown_203B0E8 + movs r0, 0x18 + bl sub_8002B9C + str r0, [r4] + cmp r0, 0 + beq _0812AEA8 + movs r0, 0x1 + b _0812AEAA + .align 2, 0 +_0812AE9C: .4byte gUnknown_845AF58 +_0812AEA0: .4byte gUnknown_845AF80 +_0812AEA4: .4byte gUnknown_203B0E8 +_0812AEA8: + movs r0, 0 +_0812AEAA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_812AE70 + + thumb_func_start sub_812AEB0 +sub_812AEB0: @ 812AEB0 + push {lr} + ldr r0, _0812AEC4 @ =gUnknown_203B0E8 + ldr r0, [r0] + cmp r0, 0 + beq _0812AEBE + bl sub_8002BC4 +_0812AEBE: + pop {r0} + bx r0 + .align 2, 0 +_0812AEC4: .4byte gUnknown_203B0E8 + thumb_func_end sub_812AEB0 + + thumb_func_start sub_812AEC8 +sub_812AEC8: @ 812AEC8 + push {lr} + ldr r0, _0812AEF0 @ =gUnknown_845AFC0 + movs r1, 0xA + movs r2, 0x18 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0812AEF4 @ =gUnknown_203B0E8 + ldr r2, [r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0812AEF8 @ =gUnknown_202063C + adds r1, r0 + str r1, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0812AEF0: .4byte gUnknown_845AFC0 +_0812AEF4: .4byte gUnknown_203B0E8 +_0812AEF8: .4byte gUnknown_202063C + thumb_func_end sub_812AEC8 + + thumb_func_start sub_812AEFC +sub_812AEFC: @ 812AEFC + ldr r1, _0812AF18 @ =gUnknown_203B0E8 + ldr r1, [r1] + ldr r2, [r1] + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_0812AF18: .4byte gUnknown_203B0E8 + thumb_func_end sub_812AEFC + + thumb_func_start sub_812AF1C +sub_812AF1C: @ 812AF1C + push {r4,r5,lr} + sub sp, 0x4 + bl sub_81296F4 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r5, sp + adds r5, 0x1 + mov r0, sp + adds r1, r5, 0 + bl sub_8129700 + cmp r4, 0x3 + beq _0812AF5C + ldr r4, _0812AF58 @ =gUnknown_203B0E8 + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + ldr r1, [r4] + ldr r2, [r1] + mov r0, sp + ldrb r0, [r0] + lsls r0, 3 + adds r0, 0xA + strh r0, [r2, 0x20] + ldr r2, [r1] + b _0812AF72 + .align 2, 0 +_0812AF58: .4byte gUnknown_203B0E8 +_0812AF5C: + ldr r4, _0812AF88 @ =gUnknown_203B0E8 + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C + ldr r2, [r4] + ldr r1, [r2] + movs r0, 0x18 + strh r0, [r1, 0x20] + ldr r2, [r2] +_0812AF72: + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, 0x18 + strh r0, [r2, 0x22] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812AF88: .4byte gUnknown_203B0E8 + thumb_func_end sub_812AF1C + + thumb_func_start sub_812AF8C +sub_812AF8C: @ 812AF8C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 2 + ldr r0, _0812AFB8 @ =gUnknown_845AC16 + adds r4, r0 + movs r0, 0 + bl sub_80089E8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 4 + ldr r0, _0812AFBC @ =0x01010000 + adds r1, r0 + lsrs r1, 16 + adds r0, r4, 0 + movs r2, 0x4 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812AFB8: .4byte gUnknown_845AC16 +_0812AFBC: .4byte 0x01010000 + thumb_func_end sub_812AF8C + + thumb_func_start sub_812AFC0 +sub_812AFC0: @ 812AFC0 + push {lr} + bl sub_81296F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0812AFE0 + ldr r0, _0812AFDC @ =gUnknown_203B0E8 + ldr r0, [r0] + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + b _0812AFEC + .align 2, 0 +_0812AFDC: .4byte gUnknown_203B0E8 +_0812AFE0: + ldr r0, _0812AFF8 @ =gUnknown_203B0E8 + ldr r0, [r0] + ldr r0, [r0] + movs r1, 0x3 + bl sub_800838C +_0812AFEC: + ldr r0, _0812AFF8 @ =gUnknown_203B0E8 + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x14] + pop {r0} + bx r0 + .align 2, 0 +_0812AFF8: .4byte gUnknown_203B0E8 + thumb_func_end sub_812AFC0 + + thumb_func_start sub_812AFFC +sub_812AFFC: @ 812AFFC + push {r4,lr} + ldr r4, _0812B00C @ =gUnknown_203B0E8 + ldr r1, [r4] + ldrh r0, [r1, 0x14] + cmp r0, 0x3 + bls _0812B010 +_0812B008: + movs r0, 0 + b _0812B042 + .align 2, 0 +_0812B00C: .4byte gUnknown_203B0E8 +_0812B010: + adds r0, 0x1 + strh r0, [r1, 0x14] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3 + bls _0812B040 + bl sub_81296F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0812B034 + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0 + bl sub_800838C + b _0812B008 +_0812B034: + ldr r0, [r4] + ldr r0, [r0] + movs r1, 0x2 + bl sub_800838C + b _0812B008 +_0812B040: + movs r0, 0x1 +_0812B042: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_812AFFC + + thumb_func_start sub_812B048 +sub_812B048: @ 812B048 + push {r4,r5,lr} + ldr r0, _0812B08C @ =gUnknown_845AFE0 + movs r1, 0x4C + movs r2, 0x98 + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0812B090 @ =gUnknown_203B0E8 + ldr r2, [r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r4, _0812B094 @ =gUnknown_202063C + adds r1, r4 + str r1, [r2, 0x8] + ldr r0, _0812B098 @ =gUnknown_845AFF8 + movs r1, 0x40 + movs r2, 0x98 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + str r1, [r2, 0x4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812B08C: .4byte gUnknown_845AFE0 +_0812B090: .4byte gUnknown_203B0E8 +_0812B094: .4byte gUnknown_202063C +_0812B098: .4byte gUnknown_845AFF8 + thumb_func_end sub_812B048 + + thumb_func_start sub_812B09C +sub_812B09C: @ 812B09C + push {r4,lr} + adds r4, r0, 0 + bl sub_81297DC + adds r3, r0, 0 + cmp r3, 0xF + bne _0812B0B8 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _0812B0CC +_0812B0B8: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + lsls r0, r3, 3 + adds r0, 0x4C + strh r0, [r4, 0x20] +_0812B0CC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_812B09C + + thumb_func_start sub_812B0D4 +sub_812B0D4: @ 812B0D4 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + movs r2, 0 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _0812B0FA + strh r2, [r1, 0x2E] + ldrh r0, [r1, 0x24] + adds r0, 0x1 + strh r0, [r1, 0x24] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _0812B0FA + strh r2, [r1, 0x24] +_0812B0FA: + pop {r0} + bx r0 + thumb_func_end sub_812B0D4 + + thumb_func_start sub_812B100 +sub_812B100: @ 812B100 + push {r4,r5,lr} + ldr r0, _0812B150 @ =gUnknown_845B050 + movs r1, 0x8 + movs r2, 0x98 + movs r3, 0x3 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0812B154 @ =gUnknown_203B0E8 + ldr r2, [r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r4, _0812B158 @ =gUnknown_202063C + adds r1, r4 + str r1, [r2, 0xC] + ldr r0, _0812B15C @ =gUnknown_845B068 + movs r1, 0x20 + movs r2, 0x98 + movs r3, 0x4 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + str r1, [r2, 0x10] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0812B150: .4byte gUnknown_845B050 +_0812B154: .4byte gUnknown_203B0E8 +_0812B158: .4byte gUnknown_202063C +_0812B15C: .4byte gUnknown_845B068 + thumb_func_end sub_812B100 + + thumb_func_start sub_812B160 +sub_812B160: @ 812B160 + push {r4,lr} + bl sub_81296F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0812B198 + bl sub_8129720 + cmp r0, 0 + beq _0812B1A2 + ldr r3, _0812B194 @ =gUnknown_203B0E8 + ldr r0, [r3] + ldr r1, [r0, 0x10] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + ldr r0, [r0, 0x10] + movs r1, 0x3 + bl sub_800838C + b _0812B1D6 + .align 2, 0 +_0812B194: .4byte gUnknown_203B0E8 +_0812B198: + bl sub_81297E8 + adds r4, r0, 0 + cmp r4, 0x3 + bne _0812B1B8 +_0812B1A2: + ldr r0, _0812B1B4 @ =gUnknown_203B0E8 + ldr r0, [r0] + ldr r1, [r0, 0x10] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + b _0812B1D6 + .align 2, 0 +_0812B1B4: .4byte gUnknown_203B0E8 +_0812B1B8: + ldr r3, _0812B1DC @ =gUnknown_203B0E8 + ldr r0, [r3] + ldr r1, [r0, 0x10] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + ldr r0, [r0, 0x10] + lsls r1, r4, 24 + lsrs r1, 24 + bl sub_800838C +_0812B1D6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812B1DC: .4byte gUnknown_203B0E8 + thumb_func_end sub_812B160 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_810C3A4.s b/asm/unk_810C3A4.s new file mode 100644 index 000000000..c7f5136d3 --- /dev/null +++ b/asm/unk_810C3A4.s @@ -0,0 +1,389 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810C3A4 +sub_810C3A4: @ 810C3A4 + push {lr} + ldr r0, _0810C3B4 @ =sub_810C3B8 + movs r1, 0x50 + bl sub_807741C + pop {r0} + bx r0 + .align 2, 0 +_0810C3B4: .4byte sub_810C3B8 + thumb_func_end sub_810C3A4 + + thumb_func_start sub_810C3B8 +sub_810C3B8: @ 810C3B8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0810C43C @ =gUnknown_3005090 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0810C3E2 + bl sub_8069554 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _0810C3E2 + bl sub_805C270 + strh r4, [r5, 0x8] +_0810C3E2: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0810C41C + movs r4, 0 + ldr r7, _0810C440 @ =gUnknown_2036E38 +_0810C3EE: + adds r0, r4, 0 + bl sub_810CF04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810C412 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r7 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _0810C436 + adds r0, r1, 0 + bl sub_80688E4 +_0810C412: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0810C3EE +_0810C41C: + movs r0, 0x1 + strh r0, [r5, 0xA] + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0810C436 + adds r0, r6, 0 + bl sub_8077508 + bl sub_805C780 + bl sub_8069B34 +_0810C436: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C43C: .4byte gUnknown_3005090 +_0810C440: .4byte gUnknown_2036E38 + thumb_func_end sub_810C3B8 + + thumb_func_start sub_810C444 +sub_810C444: @ 810C444 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r0, _0810C4E0 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0x8E + lsls r1, 4 + adds r1, r0 + mov r8, r1 + movs r7, 0 + ldr r0, _0810C4E4 @ =gUnknown_2036DFC + ldr r1, [r0, 0x4] + adds r2, r0, 0 + ldrb r1, [r1] + cmp r7, r1 + bcs _0810C4D2 +_0810C466: + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + mov r1, r8 + adds r5, r0, r1 + ldrh r0, [r5, 0xC] + cmp r0, 0x1 + beq _0810C47A + cmp r0, 0x3 + bne _0810C4C4 +_0810C47A: + ldrb r0, [r5, 0x9] + subs r0, 0x4D + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0810C4C4 + bl sub_810CF54 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r5] + ldr r1, _0810C4E0 @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r2, _0810C4E8 @ =gUnknown_2036E38 + adds r4, r1, r2 + bl sub_810CF04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810C4C0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8063610 +_0810C4C0: + strb r6, [r5, 0x9] + ldr r2, _0810C4E4 @ =gUnknown_2036DFC +_0810C4C4: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, [r2, 0x4] + ldrb r0, [r0] + cmp r7, r0 + bcc _0810C466 +_0810C4D2: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C4E0: .4byte gUnknown_3005008 +_0810C4E4: .4byte gUnknown_2036DFC +_0810C4E8: .4byte gUnknown_2036E38 + thumb_func_end sub_810C444 + + thumb_func_start sub_810C4EC +sub_810C4EC: @ 810C4EC + push {r4-r7,lr} + movs r0, 0xB5 + lsls r0, 1 + movs r1, 0x1 + bl sub_8099F40 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810C516 + ldr r0, _0810C568 @ =gUnknown_3005008 + ldr r0, [r0] + movs r2, 0xC7 + lsls r2, 3 + adds r1, r0, r2 + ldrh r2, [r1] + ldrb r0, [r1] + cmp r0, 0x63 + bhi _0810C516 + adds r0, r2, 0x1 + strh r0, [r1] +_0810C516: + ldr r7, _0810C56C @ =0x00000801 + adds r0, r7, 0 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810C570 + ldr r6, _0810C568 @ =gUnknown_3005008 + ldr r0, [r6] + movs r5, 0xC7 + lsls r5, 3 + adds r3, r0, r5 + ldrh r2, [r3] + lsrs r1, r2, 8 + movs r4, 0xFF + cmp r1, 0x63 + bhi _0810C548 + adds r1, 0x1 + lsls r1, 24 + movs r0, 0xFF + ands r0, r2 + lsrs r1, 16 + orrs r0, r1 + strh r0, [r3] +_0810C548: + ldr r0, [r6] + adds r0, r5 + ldrh r0, [r0] + lsrs r0, 8 + ands r0, r4 + cmp r0, 0x64 + bne _0810C570 + adds r0, r7, 0 + bl sub_806E6A8 + bl sub_810C640 + bl sub_810D0D0 + movs r0, 0x1 + b _0810C572 + .align 2, 0 +_0810C568: .4byte gUnknown_3005008 +_0810C56C: .4byte 0x00000801 +_0810C570: + movs r0, 0 +_0810C572: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810C4EC + + thumb_func_start sub_810C578 +sub_810C578: @ 810C578 + push {lr} + ldr r0, _0810C590 @ =0x00000801 + bl sub_806E6A8 + bl sub_810C640 + bl sub_810D0D0 + bl sub_810C594 + pop {r0} + bx r0 + .align 2, 0 +_0810C590: .4byte 0x00000801 + thumb_func_end sub_810C578 + + thumb_func_start sub_810C594 +sub_810C594: @ 810C594 + push {r4-r7,lr} + movs r5, 0 + movs r6, 0 +_0810C59A: + lsls r0, r5, 3 + adds r0, r5 + lsls r0, 2 + ldr r1, _0810C5FC @ =gUnknown_2036E38 + adds r4, r0, r1 + ldrb r0, [r4, 0x6] + subs r0, 0x4D + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0810C5EA + bl sub_810CF54 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r4] + lsls r0, 31 + cmp r0, 0 + beq _0810C5EA + ldr r2, _0810C600 @ =gUnknown_202063C + ldrb r0, [r4, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r7, 0x2E + ldrsh r0, [r1, r7] + cmp r0, r5 + bne _0810C5EA + strh r6, [r1, 0x24] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x26] + adds r0, r4, 0 + adds r1, r3, 0 + bl sub_8063610 +_0810C5EA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _0810C59A + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C5FC: .4byte gUnknown_2036E38 +_0810C600: .4byte gUnknown_202063C + thumb_func_end sub_810C594 + + thumb_func_start sub_810C604 +sub_810C604: @ 810C604 + ldr r0, _0810C61C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0xC7 + lsls r0, 3 + adds r1, r0 + ldrh r2, [r1] + movs r0, 0xFF + lsls r0, 8 + ands r0, r2 + strh r0, [r1] + bx lr + .align 2, 0 +_0810C61C: .4byte gUnknown_3005008 + thumb_func_end sub_810C604 + + thumb_func_start sub_810C620 +sub_810C620: @ 810C620 + ldr r0, _0810C63C @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0xC7 + lsls r0, 3 + adds r2, r0 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + movs r1, 0x64 + orrs r0, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_0810C63C: .4byte gUnknown_3005008 + thumb_func_end sub_810C620 + + thumb_func_start sub_810C640 +sub_810C640: @ 810C640 + ldr r0, _0810C650 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xC7 + lsls r1, 3 + adds r0, r1 + ldrb r1, [r0] + strh r1, [r0] + bx lr + .align 2, 0 +_0810C650: .4byte gUnknown_3005008 + thumb_func_end sub_810C640 + + thumb_func_start sub_810C654 +sub_810C654: @ 810C654 + ldr r0, _0810C66C @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0xC7 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + movs r3, 0xC8 + lsls r3, 7 + adds r2, r3, 0 + orrs r0, r2 + strh r0, [r1] + bx lr + .align 2, 0 +_0810C66C: .4byte gUnknown_3005008 + thumb_func_end sub_810C654 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_8147500.s b/asm/unk_8147500.s new file mode 100644 index 000000000..ac0357df4 --- /dev/null +++ b/asm/unk_8147500.s @@ -0,0 +1,754 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8147500 +sub_8147500: @ 8147500 + push {lr} + ldr r0, _08147518 @ =gUnknown_20370C0 + ldrh r1, [r0] + ldr r0, _0814751C @ =gUnknown_20370C4 + ldrh r2, [r0] + cmp r1, 0x8 + beq _08147512 + cmp r2, 0x8 + bne _08147520 +_08147512: + movs r0, 0x1 + b _0814758E + .align 2, 0 +_08147518: .4byte gUnknown_20370C0 +_0814751C: .4byte gUnknown_20370C4 +_08147520: + cmp r1, 0 + beq _08147528 + cmp r2, 0 + bne _0814752C +_08147528: + movs r0, 0x7 + b _0814758E +_0814752C: + cmp r1, 0x9 + beq _08147534 + cmp r2, 0x9 + bne _08147538 +_08147534: + movs r0, 0xA + b _0814758E +_08147538: + cmp r1, 0xA + beq _08147540 + cmp r2, 0xA + bne _08147544 +_08147540: + movs r0, 0xC + b _0814758E +_08147544: + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bhi _0814755C + subs r0, r2, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bhi _0814755C + movs r0, 0x2 + b _0814758E +_0814755C: + subs r0, r1, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08147574 + subs r0, r2, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _08147574 + movs r0, 0x3 + b _0814758E +_08147574: + subs r0, r1, 0x6 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0814758C + subs r0, r2, 0x6 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0814758C + movs r0, 0x5 + b _0814758E +_0814758C: + movs r0, 0x6 +_0814758E: + pop {r1} + bx r1 + thumb_func_end sub_8147500 + + thumb_func_start sub_8147594 +sub_8147594: @ 8147594 + push {lr} + ldr r0, _081475B0 @ =gUnknown_3005008 + ldr r2, [r0] + ldrh r1, [r2, 0x4] + ldr r0, _081475B4 @ =0x00000503 + cmp r1, r0 + bne _081475B8 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x17 + bgt _081475B8 + movs r0, 0x1 + b _081475BA + .align 2, 0 +_081475B0: .4byte gUnknown_3005008 +_081475B4: .4byte 0x00000503 +_081475B8: + movs r0, 0 +_081475BA: + pop {r1} + bx r1 + thumb_func_end sub_8147594 + + thumb_func_start sub_81475C0 +sub_81475C0: @ 81475C0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08147600 @ =sub_8147654 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08147604 @ =gUnknown_3005090 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x8] + strh r5, [r0, 0xA] + ldr r0, _08147608 @ =gUnknown_846B4AC + lsls r5, 4 + adds r5, r0 + ldr r1, [r5] + adds r0, r4, 0 + bl _call_via_r1 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08147600: .4byte sub_8147654 +_08147604: .4byte gUnknown_3005090 +_08147608: .4byte gUnknown_846B4AC + thumb_func_end sub_81475C0 + + thumb_func_start sub_814760C +sub_814760C: @ 814760C + push {lr} + ldr r0, _08147630 @ =sub_8147654 + bl sub_8077688 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _08147638 + ldr r0, _08147634 @ =gUnknown_3005090 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0x2 + strh r0, [r1, 0x8] + movs r0, 0x1 + b _0814763A + .align 2, 0 +_08147630: .4byte sub_8147654 +_08147634: .4byte gUnknown_3005090 +_08147638: + movs r0, 0 +_0814763A: + pop {r1} + bx r1 + thumb_func_end sub_814760C + + thumb_func_start sub_8147640 +sub_8147640: @ 8147640 + push {lr} + ldr r0, _08147650 @ =sub_8147654 + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08147650: .4byte sub_8147654 + thumb_func_end sub_8147640 + + thumb_func_start sub_8147654 +sub_8147654: @ 8147654 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08147678 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + beq _081476A0 + cmp r0, 0x3 + bgt _0814767C + cmp r0, 0x2 + beq _08147682 + b _081476D6 + .align 2, 0 +_08147678: .4byte gUnknown_3005098 +_0814767C: + cmp r0, 0x4 + beq _081476BC + b _081476D6 +_08147682: + ldr r1, _0814769C @ =gUnknown_846B4AC + movs r2, 0x2 + ldrsh r0, [r4, r2] + lsls r0, 4 + adds r1, 0x8 + adds r0, r1 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + movs r0, 0x3 + strh r0, [r4] + b _081476D6 + .align 2, 0 +_0814769C: .4byte gUnknown_846B4AC +_081476A0: + ldr r0, _081476B8 @ =gUnknown_846B4AC + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 4 + adds r0, 0xC + adds r1, r0 + ldr r1, [r1] + adds r0, r5, 0 + bl _call_via_r1 + b _081476D6 + .align 2, 0 +_081476B8: .4byte gUnknown_846B4AC +_081476BC: + ldr r0, _081476DC @ =gUnknown_846B4AC + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 4 + adds r0, 0x4 + adds r1, r0 + ldr r1, [r1] + adds r0, r5, 0 + bl _call_via_r1 + adds r0, r5, 0 + bl sub_8077508 +_081476D6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081476DC: .4byte gUnknown_846B4AC + thumb_func_end sub_8147654 + + thumb_func_start sub_81476E0 +sub_81476E0: @ 81476E0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r1, 0x6 + ldrsh r0, [r4, r1] + lsls r0, 3 + ldr r1, _081477B0 @ =gUnknown_846B42C + adds r0, r1 + bl sub_800EBCC + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 3 + ldr r1, _081477B4 @ =gUnknown_846B43C + adds r0, r1 + bl sub_8008928 + movs r5, 0 + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r5, r0 + bge _08147748 +_08147714: + movs r0, 0x4 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r1, _081477B8 @ =gUnknown_846B494 + adds r0, r1 + movs r2, 0x12 + ldrsh r1, [r4, r2] + movs r3, 0x14 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0xE] + bl sub_8006F8C + lsls r1, r5, 1 + adds r1, r4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x1A] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _08147714 +_08147748: + movs r5, 0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r5, r0 + bge _081477A4 + movs r7, 0x3 + movs r3, 0xD + negs r3, r3 + mov r12, r3 + ldr r6, _081477BC @ =gUnknown_202063C +_0814775C: + lsls r0, r5, 1 + adds r0, r4 + movs r1, 0x1A + ldrsh r0, [r0, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldrb r1, [r4, 0xC] + ands r1, r7 + lsls r1, 2 + ldrb r3, [r2, 0x5] + mov r0, r12 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0xA] + strh r0, [r2, 0x30] + mov r3, r8 + strh r3, [r2, 0x34] + strh r5, [r2, 0x36] + ldrh r0, [r4, 0x1A] + strh r0, [r2, 0x38] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _0814775C +_081477A4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081477B0: .4byte gUnknown_846B42C +_081477B4: .4byte gUnknown_846B43C +_081477B8: .4byte gUnknown_846B494 +_081477BC: .4byte gUnknown_202063C + thumb_func_end sub_81476E0 + + thumb_func_start sub_81477C0 +sub_81477C0: @ 81477C0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r1, _08147840 @ =gUnknown_3005098 + adds r4, r1 + movs r5, 0 + strh r5, [r4, 0x4] + strh r5, [r4, 0x6] + strh r5, [r4, 0x8] + movs r1, 0x3C + strh r1, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + movs r1, 0x3 + strh r1, [r4, 0x10] + movs r1, 0x78 + strh r1, [r4, 0x12] + movs r1, 0x58 + strh r1, [r4, 0x14] + adds r1, r4, 0 + bl sub_81476E0 + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08147844 @ =gUnknown_202063C + adds r0, r5 + movs r1, 0x4 + bl sub_800838C + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08147848 @ =0x0000ffe0 + strh r1, [r0, 0x24] + movs r0, 0x1E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x5 + bl sub_800838C + movs r0, 0x1E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x20 + strh r1, [r0, 0x24] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08147840: .4byte gUnknown_3005098 +_08147844: .4byte gUnknown_202063C +_08147848: .4byte 0x0000ffe0 + thumb_func_end sub_81477C0 + + thumb_func_start sub_814784C +sub_814784C: @ 814784C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08147860 @ =gUnknown_3005098 + adds r4, r1, r0 + b _08147880 + .align 2, 0 +_08147860: .4byte gUnknown_3005098 +_08147864: + lsls r0, r5, 1 + adds r0, r4 + movs r2, 0x1A + ldrsh r1, [r0, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081478B0 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08147880: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _08147864 + ldr r1, _081478B4 @ =gUnknown_846B42C + movs r2, 0x6 + ldrsh r0, [r4, r2] + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x6] + bl sub_800874C + ldr r1, _081478B8 @ =gUnknown_846B43C + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x4] + bl sub_8008A30 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081478B0: .4byte gUnknown_202063C +_081478B4: .4byte gUnknown_846B42C +_081478B8: .4byte gUnknown_846B43C + thumb_func_end sub_814784C + + thumb_func_start sub_81478BC +sub_81478BC: @ 81478BC + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0x34 + ldrsh r1, [r6, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _08147900 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0x16 + ldrsh r0, [r5, r1] + movs r2, 0xA + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, 0 + bne _081479CE + ldrh r2, [r5, 0x16] + movs r3, 0x16 + ldrsh r1, [r5, r3] + movs r3, 0x14 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _081479CE + strh r2, [r5, 0x14] + movs r1, 0x32 + ldrsh r0, [r6, r1] + cmp r0, 0x4 + bhi _081479C8 + lsls r0, 2 + ldr r1, _08147904 @ =_08147908 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08147900: .4byte gUnknown_3005098 +_08147904: .4byte _08147908 + .align 2, 0 +_08147908: + .4byte _0814791C + .4byte _0814792A + .4byte _0814792A + .4byte _0814793E + .4byte _08147988 +_0814791C: + adds r2, r6, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_0814792A: + movs r0, 0x31 + bl sub_80722CC + ldrh r1, [r6, 0x32] + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_800838C + b _081479C8 +_0814793E: + movs r0, 0x15 + bl sub_80722CC + ldrh r1, [r6, 0x32] + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_800838C + ldr r4, _08147984 @ =gUnknown_202063C + movs r2, 0x1C + ldrsh r0, [r5, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _081479C8 + .align 2, 0 +_08147984: .4byte gUnknown_202063C +_08147988: + adds r1, r6, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _081479C4 @ =gUnknown_202063C + movs r0, 0x1C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x1E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x4 + strh r0, [r5] + b _081479CE + .align 2, 0 +_081479C4: .4byte gUnknown_202063C +_081479C8: + ldrh r0, [r6, 0x32] + adds r0, 0x1 + strh r0, [r6, 0x32] +_081479CE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81478BC + + thumb_func_start sub_81479D4 +sub_81479D4: @ 81479D4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r5, _08147A28 @ =gUnknown_3005098 + adds r6, r4, r5 + movs r0, 0x31 + bl sub_80722CC + ldr r2, _08147A2C @ =gUnknown_202063C + movs r0, 0x1A + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08147A30 @ =sub_81478BC + str r1, [r0] + movs r0, 0x1A + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + subs r5, 0x8 + adds r4, r5 + movs r0, 0x3 + strh r0, [r4, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08147A28: .4byte gUnknown_3005098 +_08147A2C: .4byte gUnknown_202063C +_08147A30: .4byte sub_81478BC + thumb_func_end sub_81479D4 + + thumb_func_start sub_8147A34 +sub_8147A34: @ 8147A34 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08147A88 @ =gUnknown_3005098 + adds r4, r1, r0 + ldr r0, _08147A8C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08147A98 + ldr r1, _08147A90 @ =gUnknown_3003ED0 + ldrh r0, [r1, 0x2] + ldr r5, _08147A94 @ =0x00007fff + cmp r0, r5 + bne _08147A5C + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x16] +_08147A5C: + bl sub_800A404 + lsls r0, 24 + cmp r0, 0 + bne _08147A9E + ldrh r0, [r4, 0x18] + adds r0, 0x1 + strh r0, [r4, 0x18] + mov r0, sp + movs r1, 0 + movs r2, 0xC + bl memset + mov r0, sp + strh r5, [r0] + mov r1, sp + ldrh r0, [r4, 0x18] + strh r0, [r1, 0x2] + mov r0, sp + bl sub_80F9E2C + b _08147A9E + .align 2, 0 +_08147A88: .4byte gUnknown_3005098 +_08147A8C: .4byte gUnknown_3003F64 +_08147A90: .4byte gUnknown_3003ED0 +_08147A94: .4byte 0x00007fff +_08147A98: + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_08147A9E: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8147A34 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s new file mode 100644 index 000000000..25685ce27 --- /dev/null +++ b/asm/unk_8147AA8.s @@ -0,0 +1,8055 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8147AA8 +sub_8147AA8: @ 8147AA8 + push {r4-r7,lr} + adds r6, r1, 0 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08147B20 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08147B3C + ldr r5, _08147B24 @ =gUnknown_203F3D4 + ldr r0, _08147B28 @ =0x000083b0 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + beq _08147B3C + bl sub_80773BC + ldr r0, _08147B2C @ =sub_8147DA0 + movs r1, 0x1 + bl sub_807741C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, [r5] + movs r1, 0 + strh r1, [r0, 0x8] + str r6, [r0] + strb r4, [r0, 0x4] + bl sub_800A404 + ldr r1, [r5] + strb r0, [r1, 0x6] + ldr r0, [r5] + ldrb r2, [r0, 0x6] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + ldr r2, _08147B30 @ =0x000082a8 + adds r1, r2 + adds r0, r1 + movs r1, 0x64 + muls r1, r7 + ldr r2, _08147B34 @ =gUnknown_2024284 + adds r1, r2 + bl sub_8147D2C + ldr r0, [r5] + bl sub_8147B60 + ldr r2, [r5] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80776E8 + ldr r0, _08147B38 @ =sub_8147D6C + bl sub_8000544 + b _08147B42 + .align 2, 0 +_08147B20: .4byte gUnknown_3003F64 +_08147B24: .4byte gUnknown_203F3D4 +_08147B28: .4byte 0x000083b0 +_08147B2C: .4byte sub_8147DA0 +_08147B30: .4byte 0x000082a8 +_08147B34: .4byte gUnknown_2024284 +_08147B38: .4byte sub_8147D6C +_08147B3C: + adds r0, r6, 0 + bl sub_8000544 +_08147B42: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8147AA8 + + thumb_func_start sub_8147B48 +sub_8147B48: @ 8147B48 + push {lr} + bl sub_8149D24 + ldr r0, _08147B5C @ =gUnknown_203F3D4 + ldr r0, [r0] + bl sub_8002BC4 + pop {r0} + bx r0 + .align 2, 0 +_08147B5C: .4byte gUnknown_203F3D4 + thumb_func_end sub_8147B48 + + thumb_func_start sub_8147B60 +sub_8147B60: @ 8147B60 + push {r4,lr} + adds r4, r0, 0 + bl sub_800A088 + movs r2, 0 + strb r0, [r4, 0x5] + adds r1, r4, 0 + adds r1, 0x70 + movs r0, 0x5 + strb r0, [r1] + adds r0, r4, 0 + adds r0, 0x72 + strh r2, [r0] + bl sub_8147C20 + adds r0, r4, 0 + bl sub_8147B94 + ldrb r0, [r4, 0x5] + cmp r0, 0x5 + bne _08147B8E + bl sub_814B4E8 +_08147B8E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8147B60 + + thumb_func_start sub_8147B94 +sub_8147B94: @ 8147B94 + push {r4-r6,lr} + adds r4, r0, 0 + movs r0, 0x6 + str r0, [r4, 0x14] + str r0, [r4, 0x18] + adds r0, r4, 0 + adds r0, 0x4A + movs r6, 0 + movs r5, 0 + strh r5, [r0] + str r5, [r4, 0x1C] + str r5, [r4, 0x5C] + bl sub_800A404 + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _08147BBA + movs r1, 0x1 +_08147BBA: + adds r0, r4, 0 + adds r0, 0x47 + strb r1, [r0] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + str r5, [r4, 0x58] + strh r5, [r4, 0x3A] + subs r0, 0x3 + strb r6, [r0] + str r5, [r4, 0x54] + adds r0, 0x2 + strb r6, [r0] + adds r0, 0x3 + strb r6, [r0] + subs r0, 0x1 + movs r1, 0x1 + strb r1, [r0] + str r5, [r4, 0x78] + adds r0, 0x29 + strb r6, [r0] + adds r0, 0x3 + strh r5, [r0] + str r1, [r4, 0x60] + subs r0, 0x27 + strb r6, [r0] + str r5, [r4, 0x68] + str r5, [r4, 0x64] + str r5, [r4, 0x2C] + str r5, [r4, 0x30] + bl sub_8147C98 + bl sub_81491E4 + movs r2, 0 + adds r5, r4, 0 + adds r5, 0x7C + movs r3, 0 + adds r1, r4, 0 + adds r1, 0x9A +_08147C0C: + adds r0, r5, r2 + strb r3, [r0] + strh r3, [r1] + adds r1, 0x2 + adds r2, 0x1 + cmp r2, 0x4 + ble _08147C0C + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8147B94 + + thumb_func_start sub_8147C20 +sub_8147C20: @ 8147C20 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _08147C80 @ =gUnknown_203F3D4 + movs r6, 0 + movs r5, 0 + ldr r0, _08147C84 @ =gUnknown_846B4BC + mov r8, r0 + movs r4, 0x4 +_08147C32: + ldr r0, [r7] + adds r0, r5 + ldr r1, _08147C88 @ =0x000082a8 + adds r0, r1 + ldrh r0, [r0] + bl sub_8147D00 + lsls r0, 16 + ldr r1, [r7] + adds r1, r6 + asrs r0, 14 + add r0, r8 + ldrh r0, [r0, 0x2] + ldr r2, _08147C8C @ =0x000082f0 + adds r1, r2 + strh r0, [r1] + adds r6, 0x28 + adds r5, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _08147C32 + ldr r0, _08147C80 @ =gUnknown_203F3D4 + ldr r1, [r0] + ldr r0, _08147C90 @ =0x000083ac + adds r3, r1, r0 + ldrb r2, [r1, 0x6] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r2, _08147C94 @ =0x000082e4 + adds r0, r2 + adds r1, r0 + str r1, [r3] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08147C80: .4byte gUnknown_203F3D4 +_08147C84: .4byte gUnknown_846B4BC +_08147C88: .4byte 0x000082a8 +_08147C8C: .4byte 0x000082f0 +_08147C90: .4byte 0x000083ac +_08147C94: .4byte 0x000082e4 + thumb_func_end sub_8147C20 + + thumb_func_start sub_8147C98 +sub_8147C98: @ 8147C98 + push {r4-r7,lr} + movs r5, 0 + ldr r6, _08147CE8 @ =gUnknown_203F3D4 + movs r4, 0 + movs r3, 0 +_08147CA2: + ldr r2, [r6] + adds r1, r2, r3 + ldr r7, _08147CEC @ =0x000082f2 + adds r0, r1, r7 + strh r4, [r0] + adds r7, 0x2 + adds r0, r1, r7 + strh r4, [r0] + ldr r0, _08147CF0 @ =0x000082f6 + adds r1, r0 + strh r4, [r1] + ldr r1, _08147CF4 @ =0x000082e4 + adds r0, r2, r1 + adds r0, r3 + str r4, [r0] + subs r7, 0xC + adds r0, r2, r7 + adds r0, r3 + ldr r1, _08147CF8 @ =0x7fffffff + str r1, [r0] + ldr r1, _08147CFC @ =0x000082f8 + adds r0, r2, r1 + adds r0, r3 + str r4, [r0] + adds r2, 0x8B + adds r2, r5 + movs r0, 0x9 + strb r0, [r2] + adds r3, 0x28 + adds r5, 0x1 + cmp r5, 0x4 + ble _08147CA2 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08147CE8: .4byte gUnknown_203F3D4 +_08147CEC: .4byte 0x000082f2 +_08147CF0: .4byte 0x000082f6 +_08147CF4: .4byte 0x000082e4 +_08147CF8: .4byte 0x7fffffff +_08147CFC: .4byte 0x000082f8 + thumb_func_end sub_8147C98 + + thumb_func_start sub_8147D00 +sub_8147D00: @ 8147D00 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r1, 0 + ldr r2, _08147D18 @ =gUnknown_846B4BC +_08147D0A: + ldrh r0, [r2] + cmp r0, r3 + bne _08147D1C + lsls r0, r1, 16 + asrs r0, 16 + b _08147D28 + .align 2, 0 +_08147D18: .4byte gUnknown_846B4BC +_08147D1C: + adds r2, 0x4 + adds r1, 0x1 + cmp r1, 0x63 + bls _08147D0A + movs r0, 0x1 + negs r0, r0 +_08147D28: + pop {r1} + bx r1 + thumb_func_end sub_8147D00 + + thumb_func_start sub_8147D2C +sub_8147D2C: @ 8147D2C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0xB + bl sub_803FBE8 + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_803FBE8 + str r0, [r5, 0x4] + adds r0, r4, 0 + movs r1, 0 + bl sub_803FBE8 + str r0, [r5, 0x8] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8147D2C + + thumb_func_start sub_8147D58 +sub_8147D58: @ 8147D58 + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + pop {r0} + bx r0 + thumb_func_end sub_8147D58 + + thumb_func_start sub_8147D6C +sub_8147D6C: @ 8147D6C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_8147D6C + + thumb_func_start sub_8147D84 +sub_8147D84: @ 8147D84 + push {lr} + movs r1, 0x1 + bl sub_807741C + ldr r2, _08147D9C @ =gUnknown_203F3D4 + ldr r1, [r2] + movs r3, 0 + strb r0, [r1, 0x4] + ldr r0, [r2] + strh r3, [r0, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_08147D9C: .4byte gUnknown_203F3D4 + thumb_func_end sub_8147D84 + + thumb_func_start sub_8147DA0 +sub_8147DA0: @ 8147DA0 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08147DC0 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrh r0, [r0, 0x8] + adds r2, r1, 0 + cmp r0, 0x5 + bls _08147DB6 + b _08147F04 +_08147DB6: + lsls r0, 2 + ldr r1, _08147DC4 @ =_08147DC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08147DC0: .4byte gUnknown_203F3D4 +_08147DC4: .4byte _08147DC8 + .align 2, 0 +_08147DC8: + .4byte _08147DE0 + .4byte _08147E0C + .4byte _08147E3C + .4byte _08147E64 + .4byte _08147EA0 + .4byte _08147ECC +_08147DE0: + movs r0, 0 + bl sub_80006F4 + bl sub_8006B10 + bl sub_80088F0 + ldr r0, _08147E04 @ =sub_8148E80 + movs r1, 0x5 + bl sub_8148F5C + movs r0, 0x4 + bl sub_8071AB4 + ldr r0, _08147E08 @ =gUnknown_203F3D4 + ldr r1, [r0] + b _08147EBC + .align 2, 0 +_08147E04: .4byte sub_8148E80 +_08147E08: .4byte gUnknown_203F3D4 +_08147E0C: + ldr r0, _08147E34 @ =sub_8148E80 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08147F04 + ldr r4, _08147E38 @ =gUnknown_203F3D4 + ldr r0, [r4] + adds r0, 0xA4 + bl sub_8149CEC + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + ldr r1, [r4] + b _08147EBC + .align 2, 0 +_08147E34: .4byte sub_8148E80 +_08147E38: .4byte gUnknown_203F3D4 +_08147E3C: + bl sub_8149D68 + cmp r0, 0 + bne _08147F04 + bl sub_8071BA0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08147F04 + movs r0, 0xA3 + lsls r0, 1 + movs r1, 0x8 + bl sub_8071AEC + ldr r0, _08147E60 @ =gUnknown_203F3D4 + ldr r1, [r0] + b _08147EBC + .align 2, 0 +_08147E60: .4byte gUnknown_203F3D4 +_08147E64: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08147F04 + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _08147E98 @ =sub_8147D58 + bl sub_80006F4 + ldr r0, _08147E9C @ =gUnknown_203F3D4 + ldr r1, [r0] + b _08147EBC + .align 2, 0 +_08147E98: .4byte sub_8147D58 +_08147E9C: .4byte gUnknown_203F3D4 +_08147EA0: + bl sub_80704D0 + ldr r0, _08147EC4 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _08147F04 + ldr r1, _08147EC8 @ =gUnknown_203F3D4 + ldr r0, [r1] + strb r2, [r0, 0x7] + ldr r1, [r1] +_08147EBC: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _08147F04 + .align 2, 0 +_08147EC4: .4byte gUnknown_2037AB8 +_08147EC8: .4byte gUnknown_203F3D4 +_08147ECC: + ldr r0, [r2] + ldrb r1, [r0, 0x7] + adds r1, 0x1 + strb r1, [r0, 0x7] + ldr r1, [r2] + ldrb r0, [r1, 0x7] + cmp r0, 0x13 + bls _08147F04 + adds r0, r1, 0 + adds r0, 0x47 + ldrb r0, [r0] + cmp r0, 0 + beq _08147EF4 + ldr r0, _08147EF0 @ =sub_814807C + bl sub_8147D84 + b _08147EFA + .align 2, 0 +_08147EF0: .4byte sub_814807C +_08147EF4: + ldr r0, _08147F0C @ =sub_8148290 + bl sub_8147D84 +_08147EFA: + bl sub_8148F7C + adds r0, r4, 0 + bl sub_8077508 +_08147F04: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08147F0C: .4byte sub_8148290 + thumb_func_end sub_8147DA0 + + thumb_func_start sub_8147F10 +sub_8147F10: @ 8147F10 + push {lr} + adds r1, r0, 0 + cmp r1, 0 + bne _08147F30 + ldr r0, _08147F28 @ =gUnknown_203F3D4 + ldr r1, [r0] + ldr r0, _08147F2C @ =0x00001111 + str r0, [r1, 0x30] + movs r0, 0x1 + str r0, [r1, 0x2C] + b _08147F42 + .align 2, 0 +_08147F28: .4byte gUnknown_203F3D4 +_08147F2C: .4byte 0x00001111 +_08147F30: + ldr r0, _08147F48 @ =gUnknown_203F3D4 + ldr r2, [r0] + subs r1, 0x1 + movs r0, 0x1 + lsls r0, r1 + subs r0, 0x1 + str r0, [r2, 0x30] + movs r0, 0 + str r0, [r2, 0x2C] +_08147F42: + pop {r0} + bx r0 + .align 2, 0 +_08147F48: .4byte gUnknown_203F3D4 + thumb_func_end sub_8147F10 + + thumb_func_start sub_8147F4C +sub_8147F4C: @ 8147F4C + push {r4-r6,lr} + ldr r4, _08147F98 @ =gUnknown_203F3D4 + ldr r1, [r4] + adds r1, 0x70 + movs r2, 0 + strb r0, [r1] + ldr r0, [r4] + movs r3, 0 + strh r2, [r0, 0x8] + strh r2, [r0, 0xA] + adds r0, 0x48 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0x49 + strb r3, [r0] + movs r3, 0x1 + ldr r0, [r4] + ldrb r0, [r0, 0x5] + cmp r3, r0 + bge _08147F90 + adds r6, r4, 0 + ldr r5, _08147F9C @ =0x000082fc + movs r4, 0 + movs r2, 0x28 +_08147F7E: + ldr r1, [r6] + adds r0, r1, r5 + adds r0, r2 + str r4, [r0] + adds r2, 0x28 + adds r3, 0x1 + ldrb r1, [r1, 0x5] + cmp r3, r1 + blt _08147F7E +_08147F90: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08147F98: .4byte gUnknown_203F3D4 +_08147F9C: .4byte 0x000082fc + thumb_func_end sub_8147F4C + + thumb_func_start sub_8147FA0 +sub_8147FA0: @ 8147FA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r4, 0x1 + movs r0, 0 + str r0, [sp, 0x4] + ldr r7, _08148068 @ =gUnknown_203F3D4 + ldr r0, [r7] + ldrb r0, [r0, 0x5] + cmp r4, r0 + bge _08148044 + adds r1, r7, 0 + mov r10, r1 + movs r2, 0x2 + add r2, sp + mov r8, r2 + ldr r3, _0814806C @ =0x0000830c + mov r9, r3 + movs r6, 0x28 +_08147FCC: + mov r1, r10 + ldr r0, [r1] + adds r1, r0, r6 + ldr r2, _08148070 @ =0x000082f4 + adds r1, r2 + ldrh r5, [r1] + add r0, r9 + adds r1, r4, 0 + mov r2, sp + mov r3, r8 + bl sub_8149C24 + cmp r0, 0 + beq _0814800C + ldr r2, [r7] + lsls r1, r4, 1 + adds r0, r2, 0 + adds r0, 0x90 + adds r0, r1 + mov r3, r8 + ldrh r1, [r3] + strh r1, [r0] + adds r2, 0x8B + adds r2, r4 + mov r0, sp + ldrb r0, [r0] + strb r0, [r2] + ldr r0, [r7] + adds r0, r6 + ldr r1, _08148074 @ =0x000082f6 + adds r0, r1 + strh r5, [r0] +_0814800C: + mov r2, r10 + ldr r1, [r2] + ldr r3, _08148078 @ =0x000082fc + adds r0, r1, r3 + adds r0, r6 + ldr r0, [r0] + cmp r0, 0 + beq _08148032 + adds r0, r1, 0 + adds r0, 0x8B + adds r0, r4 + adds r1, 0x70 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _08148032 + ldr r0, [sp, 0x4] + adds r0, 0x1 + str r0, [sp, 0x4] +_08148032: + movs r1, 0x28 + add r9, r1 + adds r6, 0x28 + adds r4, 0x1 + ldr r7, _08148068 @ =gUnknown_203F3D4 + ldr r0, [r7] + ldrb r0, [r0, 0x5] + cmp r4, r0 + blt _08147FCC +_08148044: + ldr r2, _08148068 @ =gUnknown_203F3D4 + ldr r1, [r2] + ldrb r0, [r1, 0x5] + subs r0, 0x1 + ldr r3, [sp, 0x4] + cmp r3, r0 + bne _08148058 + adds r1, 0x49 + movs r0, 0x1 + strb r0, [r1] +_08148058: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08148068: .4byte gUnknown_203F3D4 +_0814806C: .4byte 0x0000830c +_08148070: .4byte 0x000082f4 +_08148074: .4byte 0x000082f6 +_08148078: .4byte 0x000082fc + thumb_func_end sub_8147FA0 + + thumb_func_start sub_814807C +sub_814807C: @ 814807C + push {r4,r5,lr} + bl sub_8147FA0 + bl sub_8149534 + ldr r0, _081480F8 @ =gUnknown_203F3D4 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x48 + ldrb r0, [r0] + cmp r0, 0 + bne _081480AE + adds r0, r1, 0 + adds r0, 0x49 + ldrb r0, [r0] + cmp r0, 0 + beq _081480AE + adds r0, r1, 0 + adds r0, 0x4C + ldrb r0, [r0] + bl sub_8147F4C + movs r0, 0x3 + bl sub_8147F10 +_081480AE: + ldr r4, _081480F8 @ =gUnknown_203F3D4 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x48 + ldrb r5, [r0] + cmp r5, 0x1 + bne _081480EA + ldr r1, _081480FC @ =gUnknown_846B64C + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + adds r1, r0, 0 + cmp r1, 0 + bne _081480EA + ldr r0, [r4] + adds r0, 0x48 + strb r1, [r0] + ldr r1, [r4] + ldrb r2, [r1, 0x6] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r2, _08148100 @ =0x000082fc + adds r1, r2 + adds r1, r0 + str r5, [r1] +_081480EA: + bl sub_81492D8 + bl sub_8148104 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081480F8: .4byte gUnknown_203F3D4 +_081480FC: .4byte gUnknown_846B64C +_08148100: .4byte 0x000082fc + thumb_func_end sub_814807C + + thumb_func_start sub_8148104 +sub_8148104: @ 8148104 + push {r4,lr} + ldr r4, _08148134 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldr r0, [r1, 0x2C] + cmp r0, 0 + bne _0814811A + ldr r2, _08148138 @ =0x000082e4 + adds r0, r1, r2 + adds r1, 0x70 + bl sub_8149AF8 +_0814811A: + ldr r1, [r4] + ldr r2, [r1, 0x30] + ldr r0, _0814813C @ =0x00001111 + cmp r2, r0 + beq _0814812C + ldr r0, [r1, 0x2C] + adds r0, 0x1 + ands r0, r2 + str r0, [r1, 0x2C] +_0814812C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08148134: .4byte gUnknown_203F3D4 +_08148138: .4byte 0x000082e4 +_0814813C: .4byte 0x00001111 + thumb_func_end sub_8148104 + + thumb_func_start sub_8148140 +sub_8148140: @ 8148140 + ldr r2, _0814816C @ =gUnknown_203F3D4 + ldr r1, [r2] + adds r1, 0x70 + movs r3, 0 + strb r0, [r1] + ldr r0, [r2] + strh r3, [r0, 0x8] + strh r3, [r0, 0xA] + adds r0, 0x48 + movs r1, 0x1 + strb r1, [r0] + ldr r1, [r2] + ldrb r2, [r1, 0x6] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r2, _08148170 @ =0x000082fc + adds r1, r2 + adds r1, r0 + str r3, [r1] + bx lr + .align 2, 0 +_0814816C: .4byte gUnknown_203F3D4 +_08148170: .4byte 0x000082fc + thumb_func_end sub_8148140 + + thumb_func_start sub_8148174 +sub_8148174: @ 8148174 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r4, _081481F0 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldr r2, _081481F4 @ =0x000082f4 + adds r1, r0, r2 + ldrh r1, [r1] + mov r8, r1 + ldr r3, _081481F8 @ =0x000082e4 + adds r0, r3 + mov r1, sp + bl sub_8149B7C + cmp r0, 0 + beq _08148224 + ldr r2, [r4] + ldrb r0, [r2, 0x6] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r3, _081481FC @ =0x000082fc + adds r0, r2, r3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _081481C2 + mov r0, sp + adds r1, r2, 0 + adds r1, 0x70 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _081481C2 + mov r0, sp + ldrb r0, [r0] + bl sub_8148140 +_081481C2: + ldr r3, _081481F0 @ =gUnknown_203F3D4 + ldr r2, [r3] + ldr r0, [r2, 0x78] + ldr r1, [sp, 0x8] + cmp r0, r1 + beq _08148204 + str r1, [r2, 0x78] + movs r4, 0x1 + str r4, [r2, 0x5C] + mov r0, sp + ldrb r1, [r0, 0x1] + adds r0, r2, 0 + adds r0, 0x71 + strb r1, [r0] + ldr r0, [r3] + adds r1, r0, 0 + adds r1, 0x71 + ldrb r1, [r1] + cmp r1, 0 + beq _08148200 + adds r0, 0x4D + strb r4, [r0] + b _08148204 + .align 2, 0 +_081481F0: .4byte gUnknown_203F3D4 +_081481F4: .4byte 0x000082f4 +_081481F8: .4byte 0x000082e4 +_081481FC: .4byte 0x000082fc +_08148200: + adds r0, 0x4D + strb r1, [r0] +_08148204: + ldr r0, _08148280 @ =gUnknown_203F3D4 + ldr r1, [r0] + mov r0, sp + ldrh r0, [r0, 0x2] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + mov r0, sp + ldrh r2, [r0, 0x4] + adds r0, r1, 0 + adds r0, 0x74 + strh r2, [r0] + ldr r0, _08148284 @ =0x000082f6 + adds r1, r0 + mov r2, r8 + strh r2, [r1] +_08148224: + movs r4, 0x1 + ldr r2, _08148280 @ =gUnknown_203F3D4 + ldr r0, [r2] + ldrb r0, [r0, 0x5] + cmp r4, r0 + bge _08148272 + adds r7, r2, 0 + ldr r6, _08148288 @ =0x0000830c + movs r5, 0x28 +_08148236: + ldr r1, [r7] + ldrb r3, [r1, 0x6] + cmp r4, r3 + beq _08148264 + adds r0, r1, r5 + ldr r3, _0814828C @ =0x000082f4 + adds r0, r3 + ldrh r0, [r0] + mov r8, r0 + adds r0, r1, r6 + adds r1, r4, 0 + str r2, [sp, 0xC] + bl sub_8149C90 + ldr r2, [sp, 0xC] + cmp r0, 0 + beq _08148264 + ldr r0, [r7] + adds r0, r5 + ldr r1, _08148284 @ =0x000082f6 + adds r0, r1 + mov r3, r8 + strh r3, [r0] +_08148264: + adds r6, 0x28 + adds r5, 0x28 + adds r4, 0x1 + ldr r0, [r2] + ldrb r0, [r0, 0x5] + cmp r4, r0 + blt _08148236 +_08148272: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08148280: .4byte gUnknown_203F3D4 +_08148284: .4byte 0x000082f6 +_08148288: .4byte 0x0000830c +_0814828C: .4byte 0x000082f4 + thumb_func_end sub_8148174 + + thumb_func_start sub_8148290 +sub_8148290: @ 8148290 + push {r4,lr} + bl sub_8148174 + ldr r4, _081482EC @ =gUnknown_203F3D4 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x48 + ldrb r0, [r0] + cmp r0, 0 + beq _081482DC + ldr r1, _081482F0 @ =gUnknown_846B670 + adds r0, r2, 0 + adds r0, 0x70 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + adds r1, r0, 0 + cmp r1, 0 + bne _081482DC + ldr r0, [r4] + adds r0, 0x48 + strb r1, [r0] + ldr r1, [r4] + ldrb r2, [r1, 0x6] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r2, _081482F4 @ =0x000082fc + adds r1, r2 + adds r1, r0 + movs r0, 0x1 + str r0, [r1] + movs r0, 0x3 + bl sub_8147F10 +_081482DC: + bl sub_81492D8 + bl sub_81482F8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081482EC: .4byte gUnknown_203F3D4 +_081482F0: .4byte gUnknown_846B670 +_081482F4: .4byte 0x000082fc + thumb_func_end sub_8148290 + + thumb_func_start sub_81482F8 +sub_81482F8: @ 81482F8 + push {r4,lr} + ldr r4, _08148338 @ =gUnknown_203F3D4 + ldr r2, [r4] + ldr r0, [r2, 0x2C] + cmp r0, 0 + bne _08148320 + ldrb r1, [r2, 0x6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _0814833C @ =0x000082e4 + adds r0, r1 + adds r0, r2, r0 + adds r1, r2, 0 + adds r1, 0x70 + ldrb r1, [r1] + adds r2, 0x42 + ldrh r2, [r2] + bl sub_8149BF4 +_08148320: + ldr r1, [r4] + ldr r2, [r1, 0x30] + ldr r0, _08148340 @ =0x00001111 + cmp r2, r0 + beq _08148332 + ldr r0, [r1, 0x2C] + adds r0, 0x1 + ands r0, r2 + str r0, [r1, 0x2C] +_08148332: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08148338: .4byte gUnknown_203F3D4 +_0814833C: .4byte 0x000082e4 +_08148340: .4byte 0x00001111 + thumb_func_end sub_81482F8 + + thumb_func_start sub_8148344 +sub_8148344: @ 8148344 + push {r4,lr} + ldr r4, _08148358 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _0814835C + cmp r0, 0x1 + beq _0814836A + b _08148390 + .align 2, 0 +_08148358: .4byte gUnknown_203F3D4 +_0814835C: + movs r0, 0x3 + bl sub_8147F10 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_0814836A: + bl sub_81488DC + cmp r0, 0 + bne _08148390 + ldr r0, _0814838C @ =gUnknown_203F3D4 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x4A + ldrh r0, [r0] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + adds r1, 0x4C + movs r0, 0x1 + strb r0, [r1] + movs r0, 0 + b _08148392 + .align 2, 0 +_0814838C: .4byte gUnknown_203F3D4 +_08148390: + movs r0, 0x1 +_08148392: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148344 + + thumb_func_start sub_8148398 +sub_8148398: @ 8148398 + push {r4,lr} + ldr r4, _081483AC @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _081483B0 + cmp r0, 0x1 + beq _081483C6 + movs r0, 0x1 + b _081483CA + .align 2, 0 +_081483AC: .4byte gUnknown_203F3D4 +_081483B0: + movs r0, 0 + bl sub_8147F10 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x72 + ldrh r0, [r0] + str r0, [r1, 0x24] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_081483C6: + bl sub_81488DC +_081483CA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148398 + + thumb_func_start sub_81483D0 +sub_81483D0: @ 81483D0 + push {r4,lr} + ldr r4, _081483E4 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + cmp r0, 0 + beq _081483E8 + cmp r0, 0x1 + beq _081483FC + b _08148410 + .align 2, 0 +_081483E4: .4byte gUnknown_203F3D4 +_081483E8: + bl sub_81491E4 + movs r0, 0x5 + bl sub_8147F10 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _08148410 +_081483FC: + adds r0, r1, 0 + adds r0, 0x49 + ldrb r0, [r0] + cmp r0, 0 + beq _08148410 + adds r1, 0x4C + movs r0, 0x2 + strb r0, [r1] + movs r0, 0 + b _08148412 +_08148410: + movs r0, 0x1 +_08148412: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81483D0 + + thumb_func_start sub_8148418 +sub_8148418: @ 8148418 + push {r4,lr} + ldr r4, _0814842C @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _08148430 + cmp r0, 0x1 + beq _0814844E + b _0814845A + .align 2, 0 +_0814842C: .4byte gUnknown_203F3D4 +_08148430: + bl sub_81491E4 + movs r0, 0 + bl sub_8147F10 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x72 + ldrh r0, [r0] + adds r2, r1, 0 + adds r2, 0x4A + strh r0, [r2] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_0814844E: + bl sub_8149804 + cmp r0, 0 + beq _0814845A + movs r0, 0 + b _0814845C +_0814845A: + movs r0, 0x1 +_0814845C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148418 + + thumb_func_start sub_8148464 +sub_8148464: @ 8148464 + push {lr} + bl sub_81489C8 + cmp r0, 0 + bne _0814848C + ldr r0, _08148488 @ =gUnknown_203F3D4 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x4A + ldrh r0, [r0] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + adds r1, 0x4C + movs r0, 0x1 + strb r0, [r1] + b _081484A6 + .align 2, 0 +_08148488: .4byte gUnknown_203F3D4 +_0814848C: + bl sub_8149630 + cmp r0, 0 + beq _08148498 + movs r0, 0x1 + b _081484A8 +_08148498: + bl sub_81491B4 + ldr r0, _081484AC @ =gUnknown_203F3D4 + ldr r0, [r0] + adds r0, 0x4C + movs r1, 0x3 + strb r1, [r0] +_081484A6: + movs r0, 0 +_081484A8: + pop {r1} + bx r1 + .align 2, 0 +_081484AC: .4byte gUnknown_203F3D4 + thumb_func_end sub_8148464 + + thumb_func_start sub_81484B0 +sub_81484B0: @ 81484B0 + push {lr} + bl sub_81489C8 + cmp r0, 0 + beq _081484CA + bl sub_8149630 + cmp r0, 0 + beq _081484C6 + movs r0, 0x1 + b _081484CC +_081484C6: + bl sub_81491B4 +_081484CA: + movs r0, 0 +_081484CC: + pop {r1} + bx r1 + thumb_func_end sub_81484B0 + + thumb_func_start sub_81484D0 +sub_81484D0: @ 81484D0 + push {r4,lr} + ldr r4, _081484E8 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0x1 + beq _08148508 + cmp r0, 0x1 + bgt _081484EC + cmp r0, 0 + beq _081484F2 + b _08148564 + .align 2, 0 +_081484E8: .4byte gUnknown_203F3D4 +_081484EC: + cmp r0, 0x2 + beq _0814855C + b _08148564 +_081484F2: + bl sub_8149630 + bl sub_81496D4 + cmp r0, 0 + beq _08148564 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _08148564 +_08148508: + bl sub_8148A60 + cmp r0, 0 + bne _08148564 + bl sub_81498B4 + cmp r0, 0 + beq _0814852A + bl sub_81498D8 + ldr r1, [r4] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + adds r1, 0x4C + movs r0, 0x7 + b _08148550 +_0814852A: + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x74 + ldrh r0, [r0] + cmp r0, 0xC7 + bls _08148544 + ldrh r0, [r1, 0xE] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + adds r1, 0x4C + movs r0, 0x8 + b _08148550 +_08148544: + ldrh r0, [r1, 0xE] + adds r2, r1, 0 + adds r2, 0x72 + strh r0, [r2] + adds r1, 0x4C + movs r0, 0x4 +_08148550: + strb r0, [r1] + ldr r0, _08148560 @ =gUnknown_203F3D4 + ldr r1, [r0] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_0814855C: + movs r0, 0 + b _08148566 + .align 2, 0 +_08148560: .4byte gUnknown_203F3D4 +_08148564: + movs r0, 0x1 +_08148566: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81484D0 + + thumb_func_start sub_814856C +sub_814856C: @ 814856C + push {r4,lr} + ldr r4, _08148584 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0x1 + beq _081485AC + cmp r0, 0x1 + bgt _08148588 + cmp r0, 0 + beq _0814858E + b _081485C0 + .align 2, 0 +_08148584: .4byte gUnknown_203F3D4 +_08148588: + cmp r0, 0x2 + beq _081485BC + b _081485C0 +_0814858E: + bl sub_8149630 + cmp r0, 0 + bne _0814859A + bl sub_81491B4 +_0814859A: + bl sub_81496D4 + cmp r0, 0 + beq _081485C0 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _081485C0 +_081485AC: + bl sub_8148A60 + cmp r0, 0 + bne _081485C0 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_081485BC: + movs r0, 0 + b _081485C2 +_081485C0: + movs r0, 0x1 +_081485C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814856C + + thumb_func_start sub_81485C8 +sub_81485C8: @ 81485C8 + push {r4,lr} + ldr r4, _081485E0 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r1, [r0, 0x8] + cmp r1, 0x1 + beq _081485FC + cmp r1, 0x1 + bgt _081485E4 + cmp r1, 0 + beq _081485EE + b _0814865C + .align 2, 0 +_081485E0: .4byte gUnknown_203F3D4 +_081485E4: + cmp r1, 0x2 + beq _08148628 + cmp r1, 0x3 + beq _08148652 + b _0814865C +_081485EE: + movs r0, 0x4 + bl sub_8147F10 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_081485FC: + bl sub_8148C80 + cmp r0, 0 + bne _0814865C + ldr r4, _08148624 @ =gUnknown_203F3D4 + ldr r2, [r4] + ldr r0, [r2, 0x78] + adds r1, r2, 0 + adds r1, 0x74 + ldrh r1, [r1] + adds r2, 0x72 + ldrh r2, [r2] + bl sub_814B494 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _0814865C + .align 2, 0 +_08148624: .4byte gUnknown_203F3D4 +_08148628: + adds r0, 0x49 + ldrb r0, [r0] + cmp r0, 0 + beq _0814865C + bl sub_8149748 + cmp r0, 0 + beq _08148640 + ldr r0, [r4] + adds r0, 0x4C + movs r1, 0x5 + b _08148646 +_08148640: + ldr r0, [r4] + adds r0, 0x4C + movs r1, 0x6 +_08148646: + strb r1, [r0] + ldr r0, _08148658 @ =gUnknown_203F3D4 + ldr r1, [r0] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_08148652: + movs r0, 0 + b _0814865E + .align 2, 0 +_08148658: .4byte gUnknown_203F3D4 +_0814865C: + movs r0, 0x1 +_0814865E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81485C8 + + thumb_func_start sub_8148664 +sub_8148664: @ 8148664 + push {r4,lr} + ldr r4, _08148678 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _0814867C + cmp r0, 0x1 + beq _0814868A + b _081486BC + .align 2, 0 +_08148678: .4byte gUnknown_203F3D4 +_0814867C: + movs r0, 0 + bl sub_8147F10 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_0814868A: + bl sub_8148C80 + cmp r0, 0 + bne _081486BC + ldr r4, _081486B8 @ =gUnknown_203F3D4 + ldr r2, [r4] + ldr r0, [r2, 0x78] + adds r1, r2, 0 + adds r1, 0x74 + ldrh r1, [r1] + adds r2, 0x72 + ldrh r2, [r2] + bl sub_814B494 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x45 + ldrb r1, [r1] + adds r0, 0x42 + strh r1, [r0] + movs r0, 0 + b _081486BE + .align 2, 0 +_081486B8: .4byte gUnknown_203F3D4 +_081486BC: + movs r0, 0x1 +_081486BE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148664 + + thumb_func_start sub_81486C4 +sub_81486C4: @ 81486C4 + push {r4,lr} + ldr r4, _081486D8 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + cmp r0, 0 + beq _081486DC + cmp r0, 0x1 + beq _081486EE + b _0814871A + .align 2, 0 +_081486D8: .4byte gUnknown_203F3D4 +_081486DC: + bl sub_8148E2C + cmp r0, 0 + bne _0814871A + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _0814871A +_081486EE: + adds r0, r1, 0 + adds r0, 0x49 + ldrb r0, [r0] + cmp r0, 0 + beq _0814871A + adds r0, r1, 0 + bl sub_8147B94 + bl sub_8044EC8 + ldr r1, [r4] + lsls r0, 16 + lsrs r0, 16 + str r0, [r1, 0x24] + adds r3, r1, 0 + adds r3, 0x72 + movs r2, 0 + strh r0, [r3] + adds r1, 0x4C + strb r2, [r1] + movs r0, 0 + b _0814871C +_0814871A: + movs r0, 0x1 +_0814871C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81486C4 + + thumb_func_start sub_8148724 +sub_8148724: @ 8148724 + push {r4,lr} + ldr r4, _08148738 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _0814873C + cmp r0, 0x1 + beq _08148752 + b _08148756 + .align 2, 0 +_08148738: .4byte gUnknown_203F3D4 +_0814873C: + bl sub_8148E2C + cmp r0, 0 + bne _08148756 + ldr r0, [r4] + bl sub_8147B94 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_08148752: + movs r0, 0 + b _08148758 +_08148756: + movs r0, 0x1 +_08148758: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148724 + + thumb_func_start sub_8148760 +sub_8148760: @ 8148760 + push {r4,lr} + ldr r4, _08148778 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + cmp r0, 0x1 + beq _08148788 + cmp r0, 0x1 + bgt _0814877C + cmp r0, 0 + beq _08148782 + b _081487AC + .align 2, 0 +_08148778: .4byte gUnknown_203F3D4 +_0814877C: + cmp r0, 0x2 + beq _08148798 + b _081487AC +_08148782: + movs r0, 0x1 + strh r0, [r1, 0x8] + b _081487AC +_08148788: + movs r0, 0 + bl sub_8147F10 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _081487AC +_08148798: + bl sub_8148D5C + cmp r0, 0 + bne _081487AC + ldr r0, [r4] + ldr r0, [r0] + bl sub_8000544 + bl sub_8147B48 +_081487AC: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148760 + + thumb_func_start sub_81487B4 +sub_81487B4: @ 81487B4 + push {r4,lr} + ldr r4, _081487C8 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x8] + cmp r0, 0 + beq _081487CC + cmp r0, 0x1 + beq _081487DC + b _081487F8 + .align 2, 0 +_081487C8: .4byte gUnknown_203F3D4 +_081487CC: + movs r0, 0x4 + bl sub_8147F10 + ldr r1, [r4] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _081487F8 +_081487DC: + bl sub_8148B54 + cmp r0, 0 + bne _081487F8 + ldr r0, [r4] + ldrh r1, [r0, 0xE] + adds r2, r0, 0 + adds r2, 0x72 + strh r1, [r2] + adds r0, 0x4C + movs r1, 0x8 + strb r1, [r0] + movs r0, 0 + b _081487FA +_081487F8: + movs r0, 0x1 +_081487FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81487B4 + + thumb_func_start sub_8148800 +sub_8148800: @ 8148800 + push {lr} + movs r0, 0 + bl sub_8147F10 + bl sub_8148B54 + cmp r0, 0 + beq _08148814 + movs r0, 0x1 + b _08148816 +_08148814: + movs r0, 0 +_08148816: + pop {r1} + bx r1 + thumb_func_end sub_8148800 + + thumb_func_start sub_814881C +sub_814881C: @ 814881C + push {r4,lr} + ldr r1, _08148834 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrh r0, [r0, 0x8] + adds r4, r1, 0 + cmp r0, 0x4 + bhi _081488D4 + lsls r0, 2 + ldr r1, _08148838 @ =_0814883C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08148834: .4byte gUnknown_203F3D4 +_08148838: .4byte _0814883C + .align 2, 0 +_0814883C: + .4byte _08148850 + .4byte _0814886C + .4byte _0814887C + .4byte _08148894 + .4byte _081488B8 +_08148850: + ldr r2, [r4] + ldr r0, [r2, 0x78] + adds r1, r2, 0 + adds r1, 0x74 + ldrh r1, [r1] + adds r2, 0x72 + ldrh r2, [r2] + bl sub_814B494 + movs r0, 0x5 + bl sub_8149D40 + ldr r1, [r4] + b _081488A8 +_0814886C: + bl sub_8149D68 + cmp r0, 0 + bne _081488D4 + movs r0, 0 + bl sub_8147F10 + b _081488A4 +_0814887C: + bl sub_8149804 + cmp r0, 0 + beq _081488D4 + ldr r0, _08148890 @ =sub_80DA634 + movs r1, 0x6 + bl sub_807741C + b _081488A4 + .align 2, 0 +_08148890: .4byte sub_80DA634 +_08148894: + ldr r0, _081488B0 @ =sub_80DA634 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _081488D4 + bl sub_814A6CC +_081488A4: + ldr r0, _081488B4 @ =gUnknown_203F3D4 + ldr r1, [r0] +_081488A8: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _081488D4 + .align 2, 0 +_081488B0: .4byte sub_80DA634 +_081488B4: .4byte gUnknown_203F3D4 +_081488B8: + bl sub_814A6FC + cmp r0, 0 + bne _081488D4 + ldr r0, _081488D0 @ =gUnknown_203F3D4 + ldr r0, [r0] + adds r0, 0x4C + movs r1, 0x4 + strb r1, [r0] + movs r0, 0 + b _081488D6 + .align 2, 0 +_081488D0: .4byte gUnknown_203F3D4 +_081488D4: + movs r0, 0x1 +_081488D6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814881C + + thumb_func_start sub_81488DC +sub_81488DC: @ 81488DC + push {r4,r5,lr} + ldr r1, _081488F4 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrh r0, [r0, 0xA] + adds r4, r1, 0 + cmp r0, 0x7 + bhi _081489C0 + lsls r0, 2 + ldr r1, _081488F8 @ =_081488FC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081488F4: .4byte gUnknown_203F3D4 +_081488F8: .4byte _081488FC + .align 2, 0 +_081488FC: + .4byte _0814891C + .4byte _08148928 + .4byte _08148948 + .4byte _08148962 + .4byte _08148974 + .4byte _0814897C + .4byte _0814899C + .4byte _081489B6 +_0814891C: + movs r0, 0x2 + bl sub_8149D40 + bl sub_814AAA0 + b _0814898C +_08148928: + bl sub_8149D68 + adds r5, r0, 0 + cmp r5, 0 + bne _081489C0 + ldr r4, _08148944 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrb r0, [r0, 0x6] + bl sub_814AAB4 + ldr r1, [r4] + strh r5, [r1, 0x3C] + b _08148990 + .align 2, 0 +_08148944: .4byte gUnknown_203F3D4 +_08148948: + ldr r1, [r4] + ldrh r0, [r1, 0x3C] + adds r0, 0x1 + strh r0, [r1, 0x3C] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x78 + bls _081489C0 + movs r0, 0x3 + bl sub_8149D40 + ldr r1, [r4] + b _08148990 +_08148962: + bl sub_8149D68 + cmp r0, 0x1 + beq _081489C0 + bl sub_814AAC8 + cmp r0, 0x1 + beq _081489C0 + b _0814898C +_08148974: + movs r0, 0x9 + bl sub_8149D40 + b _0814898C +_0814897C: + bl sub_8149D68 + cmp r0, 0 + bne _081489C0 + bl sub_814935C + bl sub_814A3E4 +_0814898C: + ldr r0, _08148998 @ =gUnknown_203F3D4 + ldr r1, [r0] +_08148990: + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _081489C0 + .align 2, 0 +_08148998: .4byte gUnknown_203F3D4 +_0814899C: + bl sub_814A408 + cmp r0, 0 + bne _081489C0 + bl sub_814936C + bl sub_8148F9C + ldr r0, _081489BC @ =gUnknown_203F3D4 + ldr r1, [r0] + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] +_081489B6: + movs r0, 0 + b _081489C2 + .align 2, 0 +_081489BC: .4byte gUnknown_203F3D4 +_081489C0: + movs r0, 0x1 +_081489C2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81488DC + + thumb_func_start sub_81489C8 +sub_81489C8: @ 81489C8 + push {r4,r5,lr} + bl sub_8148FE0 + ldr r5, _081489E0 @ =gUnknown_203F3D4 + ldr r1, [r5] + ldrh r4, [r1, 0x36] + cmp r4, 0 + beq _081489E4 + movs r0, 0 + strh r0, [r1, 0x36] + b _08148A58 + .align 2, 0 +_081489E0: .4byte gUnknown_203F3D4 +_081489E4: + ldrh r0, [r1, 0xA] + cmp r0, 0x1 + beq _08148A10 + cmp r0, 0x1 + bgt _081489F4 + cmp r0, 0 + beq _081489FE + b _08148A56 +_081489F4: + cmp r0, 0x2 + beq _08148A34 + cmp r0, 0x3 + beq _08148A48 + b _08148A56 +_081489FE: + movs r0, 0 + bl sub_814922C + cmp r0, 0 + beq _08148A56 + ldr r1, [r5] + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] +_08148A10: + ldr r0, _08148A2C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08148A56 + bl sub_8149260 + movs r0, 0x3 + bl sub_8147F10 + ldr r0, _08148A30 @ =gUnknown_203F3D4 + ldr r1, [r0] + b _08148A40 + .align 2, 0 +_08148A2C: .4byte gUnknown_30030F0 +_08148A30: .4byte gUnknown_203F3D4 +_08148A34: + movs r0, 0x1 + bl sub_814922C + cmp r0, 0x1 + bne _08148A56 + ldr r1, [r5] +_08148A40: + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _08148A56 +_08148A48: + movs r0, 0 + bl sub_814922C + cmp r0, 0x1 + bne _08148A56 + ldr r0, [r5] + strh r4, [r0, 0xA] +_08148A56: + movs r0, 0x1 +_08148A58: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81489C8 + + thumb_func_start sub_8148A60 +sub_8148A60: @ 8148A60 + push {r4-r6,lr} + ldr r1, _08148A78 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrh r0, [r0, 0xA] + adds r5, r1, 0 + cmp r0, 0x4 + bhi _08148B4C + lsls r0, 2 + ldr r1, _08148A7C @ =_08148A80 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08148A78: .4byte gUnknown_203F3D4 +_08148A7C: .4byte _08148A80 + .align 2, 0 +_08148A80: + .4byte _08148A94 + .4byte _08148AB8 + .4byte _08148AFC + .4byte _08148B20 + .4byte _08148B42 +_08148A94: + movs r4, 0 + ldr r0, [r5] + ldrb r0, [r0, 0x5] + cmp r4, r0 + bge _08148AB4 + adds r6, r5, 0 +_08148AA0: + adds r0, r4, 0 + bl sub_814AA78 + cmp r0, 0x1 + beq _08148B4C + adds r4, 0x1 + ldr r0, [r6] + ldrb r0, [r0, 0x5] + cmp r4, r0 + blt _08148AA0 +_08148AB4: + ldr r1, [r5] + b _08148B18 +_08148AB8: + movs r4, 0 + ldr r0, [r5] + ldrb r0, [r0, 0x5] + cmp r4, r0 + bge _08148AE8 + adds r6, r5, 0 + movs r5, 0 +_08148AC6: + ldr r0, [r6] + adds r0, r5 + ldr r1, _08148AF4 @ =0x000082f4 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0x2 + bne _08148ADC + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_814AA60 +_08148ADC: + adds r5, 0x28 + adds r4, 0x1 + ldr r0, [r6] + ldrb r0, [r0, 0x5] + cmp r4, r0 + blt _08148AC6 +_08148AE8: + movs r0, 0x1 + bl sub_8149D40 + ldr r0, _08148AF8 @ =gUnknown_203F3D4 + ldr r1, [r0] + b _08148B14 + .align 2, 0 +_08148AF4: .4byte 0x000082f4 +_08148AF8: .4byte gUnknown_203F3D4 +_08148AFC: + ldr r1, [r5] + ldrh r0, [r1, 0x3C] + adds r0, 0x1 + strh r0, [r1, 0x3C] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x64 + bls _08148B4C + movs r0, 0x3 + bl sub_8149D40 + ldr r1, [r5] +_08148B14: + movs r0, 0 + strh r0, [r1, 0x3C] +_08148B18: + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _08148B4C +_08148B20: + bl sub_8149D68 + adds r5, r0, 0 + cmp r5, 0 + bne _08148B4C + bl sub_814AA8C + ldr r4, _08148B48 @ =gUnknown_203F3D4 + ldr r0, [r4] + adds r0, 0x71 + strb r5, [r0] + bl sub_8149210 + ldr r1, [r4] + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] +_08148B42: + movs r0, 0 + b _08148B4E + .align 2, 0 +_08148B48: .4byte gUnknown_203F3D4 +_08148B4C: + movs r0, 0x1 +_08148B4E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8148A60 + + thumb_func_start sub_8148B54 +sub_8148B54: @ 8148B54 + push {r4,lr} + ldr r1, _08148B70 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrh r0, [r0, 0xA] + adds r4, r1, 0 + cmp r0, 0x6 + bls _08148B64 + b _08148C78 +_08148B64: + lsls r0, 2 + ldr r1, _08148B74 @ =_08148B78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08148B70: .4byte gUnknown_203F3D4 +_08148B74: .4byte _08148B78 + .align 2, 0 +_08148B78: + .4byte _08148B94 + .4byte _08148BB4 + .4byte _08148BCC + .4byte _08148BFC + .4byte _08148BB4 + .4byte _08148BCC + .4byte _08148C6C +_08148B94: + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x72 + ldrh r0, [r0] + adds r1, r2, 0 + adds r1, 0x3E + adds r2, 0x40 + bl sub_8149900 + ldr r1, [r4] + ldrh r0, [r1, 0x3E] + adds r1, 0x40 + ldrh r1, [r1] + bl sub_814A468 + b _08148BEC +_08148BB4: + bl sub_814A62C + adds r2, r0, 0 + cmp r2, 0 + bne _08148C78 + ldr r0, _08148BC8 @ =gUnknown_203F3D4 + ldr r1, [r0] + strh r2, [r1, 0x3C] + b _08148BEE + .align 2, 0 +_08148BC8: .4byte gUnknown_203F3D4 +_08148BCC: + ldr r1, [r4] + ldrh r0, [r1, 0x3C] + adds r2, r0, 0x1 + strh r2, [r1, 0x3C] + ldr r0, _08148BF8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08148BE8 + lsls r0, r2, 16 + lsrs r0, 16 + cmp r0, 0xB4 + bls _08148C78 +_08148BE8: + bl sub_814A6CC +_08148BEC: + ldr r1, [r4] +_08148BEE: + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _08148C78 + .align 2, 0 +_08148BF8: .4byte gUnknown_30030F0 +_08148BFC: + bl sub_814A6FC + cmp r0, 0 + bne _08148C78 + ldr r4, _08148C48 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldrh r0, [r1, 0x3E] + adds r1, 0x40 + ldrh r1, [r1] + bl sub_8149978 + ldr r1, [r4] + adds r2, r1, 0 + adds r2, 0x40 + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + beq _08148C54 + ldrh r0, [r1, 0x3E] + ldrh r1, [r2] + bl sub_809A084 + lsls r0, 24 + cmp r0, 0 + beq _08148C54 + ldr r0, [r4] + ldrh r0, [r0, 0x3E] + movs r1, 0x1 + bl sub_809A000 + lsls r0, 24 + cmp r0, 0 + bne _08148C4C + ldr r0, [r4] + ldrh r0, [r0, 0x3E] + bl sub_814A53C + b _08148C5E + .align 2, 0 +_08148C48: .4byte gUnknown_203F3D4 +_08148C4C: + ldr r1, [r4] + movs r0, 0x6 + strh r0, [r1, 0xA] + b _08148C78 +_08148C54: + ldr r4, _08148C68 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0x3E] + bl sub_814A5B4 +_08148C5E: + ldr r1, [r4] + movs r0, 0x4 + strh r0, [r1, 0xA] + b _08148C78 + .align 2, 0 +_08148C68: .4byte gUnknown_203F3D4 +_08148C6C: + bl sub_814A6FC + cmp r0, 0 + bne _08148C78 + movs r0, 0 + b _08148C7A +_08148C78: + movs r0, 0x1 +_08148C7A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148B54 + + thumb_func_start sub_8148C80 +sub_8148C80: @ 8148C80 + push {r4,lr} + ldr r0, _08148C98 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrh r0, [r0, 0xA] + cmp r0, 0x6 + bhi _08148D54 + lsls r0, 2 + ldr r1, _08148C9C @ =_08148CA0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08148C98: .4byte gUnknown_203F3D4 +_08148C9C: .4byte _08148CA0 + .align 2, 0 +_08148CA0: + .4byte _08148CBC + .4byte _08148CC0 + .4byte _08148CCA + .4byte _08148D18 + .4byte _08148D22 + .4byte _08148D38 + .4byte _08148D4A +_08148CBC: + movs r0, 0x4 + b _08148D24 +_08148CC0: + bl sub_8149D68 + cmp r0, 0 + bne _08148D54 + b _08148D28 +_08148CCA: + bl sub_814A744 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _08148D00 + cmp r1, 0 + bgt _08148CE4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08148CE8 + b _08148D54 +_08148CE4: + cmp r1, 0x1 + bne _08148D54 +_08148CE8: + ldr r4, _08148CFC @ =gUnknown_203F3D4 + ldr r0, [r4] + adds r0, 0x45 + movs r1, 0x1 + strb r1, [r0] + movs r0, 0x6 + bl sub_8149D40 + ldr r1, [r4] + b _08148D2C + .align 2, 0 +_08148CFC: .4byte gUnknown_203F3D4 +_08148D00: + ldr r4, _08148D14 @ =gUnknown_203F3D4 + ldr r0, [r4] + adds r0, 0x45 + movs r1, 0x2 + strb r1, [r0] + movs r0, 0x6 + bl sub_8149D40 + ldr r1, [r4] + b _08148D2C + .align 2, 0 +_08148D14: .4byte gUnknown_203F3D4 +_08148D18: + bl sub_8149D68 + cmp r0, 0 + bne _08148D54 + b _08148D28 +_08148D22: + movs r0, 0x8 +_08148D24: + bl sub_8149D40 +_08148D28: + ldr r0, _08148D34 @ =gUnknown_203F3D4 + ldr r1, [r0] +_08148D2C: + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _08148D54 + .align 2, 0 +_08148D34: .4byte gUnknown_203F3D4 +_08148D38: + bl sub_8149D68 + cmp r0, 0 + bne _08148D54 + ldr r0, _08148D50 @ =gUnknown_203F3D4 + ldr r1, [r0] + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] +_08148D4A: + movs r0, 0 + b _08148D56 + .align 2, 0 +_08148D50: .4byte gUnknown_203F3D4 +_08148D54: + movs r0, 0x1 +_08148D56: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148C80 + + thumb_func_start sub_8148D5C +sub_8148D5C: @ 8148D5C + push {r4,lr} + sub sp, 0x4 + ldr r1, _08148D78 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrh r0, [r0, 0xA] + adds r4, r1, 0 + cmp r0, 0x5 + bhi _08148E20 + lsls r0, 2 + ldr r1, _08148D7C @ =_08148D80 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08148D78: .4byte gUnknown_203F3D4 +_08148D7C: .4byte _08148D80 + .align 2, 0 +_08148D80: + .4byte _08148D98 + .4byte _08148D9E + .4byte _08148DAE + .4byte _08148DC4 + .4byte _08148DEA + .4byte _08148E10 +_08148D98: + bl sub_814A6CC + b _08148DFA +_08148D9E: + bl sub_814A6FC + cmp r0, 0 + bne _08148E20 + movs r0, 0x7 + bl sub_8149D40 + b _08148DFA +_08148DAE: + bl sub_8149D68 + adds r2, r0, 0 + cmp r2, 0 + bne _08148E20 + ldr r0, _08148DC0 @ =gUnknown_203F3D4 + ldr r1, [r0] + strh r2, [r1, 0x3C] + b _08148DFE + .align 2, 0 +_08148DC0: .4byte gUnknown_203F3D4 +_08148DC4: + ldr r1, [r4] + ldrh r0, [r1, 0x3C] + adds r0, 0x1 + strh r0, [r1, 0x3C] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x78 + bls _08148E20 + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + ldr r1, [r4] + b _08148DFE +_08148DEA: + ldr r0, _08148E08 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08148E20 + bl sub_800AAC0 +_08148DFA: + ldr r0, _08148E0C @ =gUnknown_203F3D4 + ldr r1, [r0] +_08148DFE: + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _08148E20 + .align 2, 0 +_08148E08: .4byte gUnknown_2037AB8 +_08148E0C: .4byte gUnknown_203F3D4 +_08148E10: + ldr r0, _08148E1C @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _08148E20 + movs r0, 0 + b _08148E22 + .align 2, 0 +_08148E1C: .4byte gUnknown_3003F64 +_08148E20: + movs r0, 0x1 +_08148E22: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148D5C + + thumb_func_start sub_8148E2C +sub_8148E2C: @ 8148E2C + push {r4,lr} + ldr r4, _08148E44 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldrh r0, [r0, 0xA] + cmp r0, 0x1 + beq _08148E62 + cmp r0, 0x1 + bgt _08148E48 + cmp r0, 0 + beq _08148E4E + b _08148E76 + .align 2, 0 +_08148E44: .4byte gUnknown_203F3D4 +_08148E48: + cmp r0, 0x2 + beq _08148E72 + b _08148E76 +_08148E4E: + bl sub_814A6CC + movs r0, 0 + bl sub_814AA24 + ldr r1, [r4] + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + b _08148E76 +_08148E62: + bl sub_814A6FC + cmp r0, 0 + bne _08148E76 + ldr r1, [r4] + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] +_08148E72: + movs r0, 0 + b _08148E78 +_08148E76: + movs r0, 0x1 +_08148E78: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8148E2C + + thumb_func_start sub_8148E80 +sub_8148E80: @ 8148E80 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r0, 2 + add r0, r10 + lsls r0, 3 + ldr r1, _08148EB4 @ =gUnknown_3005098 + adds r6, r0, r1 + mov r0, r10 + movs r1, 0xE + bl sub_8077720 + mov r8, r0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _08148EC4 + cmp r0, 0x1 + beq _08148ED8 + b _08148F44 + .align 2, 0 +_08148EB4: .4byte gUnknown_3005098 +_08148EB8: + bl sub_8147C20 + mov r0, r10 + bl sub_8077508 + b _08148F44 +_08148EC4: + movs r1, 0 + adds r0, r6, 0 + adds r0, 0x8 +_08148ECA: + strh r1, [r0, 0x4] + subs r0, 0x2 + cmp r0, r6 + bge _08148ECA + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] +_08148ED8: + mov r3, r8 + ldrb r1, [r3, 0x6] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r4, _08148F54 @ =0x000082a8 + adds r0, r4 + add r0, r8 + bl sub_8149A6C + movs r2, 0 + adds r5, r6, 0x4 + mov r9, r2 + movs r7, 0x83 + lsls r7, 8 + add r7, r8 + add r4, r8 +_08148EFA: + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08148F34 + adds r0, r2, 0 + adds r1, r4, 0 + str r2, [sp] + bl sub_8149A90 + ldr r2, [sp] + cmp r0, 0 + beq _08148F34 + ldr r1, _08148F58 @ =gUnknown_2022744 + add r1, r9 + adds r0, r7, 0 + bl sub_8008D84 + movs r0, 0x1 + strh r0, [r5] + ldrh r0, [r6, 0x2] + adds r0, 0x1 + strh r0, [r6, 0x2] + movs r3, 0x2 + ldrsh r0, [r6, r3] + ldr r2, [sp] + mov r1, r8 + ldrb r1, [r1, 0x5] + cmp r0, r1 + beq _08148EB8 +_08148F34: + adds r5, 0x2 + movs r3, 0x1C + add r9, r3 + adds r7, 0x28 + adds r4, 0xC + adds r2, 0x1 + cmp r2, 0x4 + ble _08148EFA +_08148F44: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08148F54: .4byte 0x000082a8 +_08148F58: .4byte gUnknown_2022744 + thumb_func_end sub_8148E80 + + thumb_func_start sub_8148F5C +sub_8148F5C: @ 8148F5C + push {lr} + lsls r1, 24 + lsrs r1, 24 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08148F78 @ =gUnknown_203F3D4 + ldr r2, [r1] + movs r1, 0xE + bl sub_80776E8 + pop {r0} + bx r0 + .align 2, 0 +_08148F78: .4byte gUnknown_203F3D4 + thumb_func_end sub_8148F5C + + thumb_func_start sub_8148F7C +sub_8148F7C: @ 8148F7C + ldr r0, _08148F98 @ =gUnknown_203F3D4 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x4A + movs r1, 0 + strh r1, [r0] + movs r0, 0x6 + str r0, [r2, 0x14] + strh r1, [r2, 0x34] + str r1, [r2, 0x1C] + strh r1, [r2, 0x36] + str r1, [r2, 0x10] + bx lr + .align 2, 0 +_08148F98: .4byte gUnknown_203F3D4 + thumb_func_end sub_8148F7C + + thumb_func_start sub_8148F9C +sub_8148F9C: @ 8148F9C + push {r4,lr} + ldr r3, _08148FD8 @ =gUnknown_203F3D4 + ldr r0, [r3] + adds r1, r0, 0 + adds r1, 0x4A + movs r4, 0 + movs r2, 0 + strh r2, [r1] + ldr r1, _08148FDC @ =0x000006ff + strh r1, [r0, 0x34] + movs r1, 0x7 + str r1, [r0, 0x14] + strh r2, [r0, 0x36] + str r2, [r0, 0x10] + adds r0, 0x51 + strb r4, [r0] + ldr r0, [r3] + adds r0, 0x50 + strb r4, [r0] + ldr r0, [r3] + str r2, [r0, 0x20] + adds r1, r0, 0 + adds r1, 0x4E + strh r2, [r1] + str r2, [r0, 0x6C] + bl sub_8149078 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08148FD8: .4byte gUnknown_203F3D4 +_08148FDC: .4byte 0x000006ff + thumb_func_end sub_8148F9C + + thumb_func_start sub_8148FE0 +sub_8148FE0: @ 8148FE0 + push {r4,lr} + ldr r4, _08149038 @ =gUnknown_203F3D4 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x46 + ldrb r0, [r0] + cmp r0, 0 + beq _08149030 + adds r1, 0x4A + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + bl sub_8149044 + ldr r3, [r4] + ldrh r1, [r3, 0x34] + adds r2, r1, r0 + strh r2, [r3, 0x34] + lsls r1, r2, 16 + ldr r0, _0814903C @ =0x09fe0000 + cmp r1, r0 + bls _08149012 + ldr r1, _08149040 @ =0xfffff601 + adds r0, r2, r1 + strh r0, [r3, 0x34] +_08149012: + ldr r1, [r4] + ldr r2, [r1, 0x14] + str r2, [r1, 0x18] + ldrh r0, [r1, 0x34] + lsrs r0, 8 + str r0, [r1, 0x14] + cmp r0, 0x6 + bls _08149030 + cmp r2, 0x6 + bhi _08149030 + ldrh r0, [r1, 0x36] + adds r0, 0x1 + strh r0, [r1, 0x36] + bl sub_8149078 +_08149030: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08149038: .4byte gUnknown_203F3D4 +_0814903C: .4byte 0x09fe0000 +_08149040: .4byte 0xfffff601 + thumb_func_end sub_8148FE0 + + thumb_func_start sub_8149044 +sub_8149044: @ 8149044 + push {lr} + ldr r0, _08149054 @ =gUnknown_203F3D4 + ldr r2, [r0] + ldr r0, [r2, 0x10] + cmp r0, 0 + beq _08149058 + movs r0, 0 + b _0814906E + .align 2, 0 +_08149054: .4byte gUnknown_203F3D4 +_08149058: + ldr r3, [r2, 0x1C] + ldrh r1, [r2, 0x34] + ldr r0, _08149074 @ =0x000005ff + cmp r1, r0 + bhi _0814906C + ldr r0, [r2, 0x20] + adds r0, 0x50 + str r0, [r2, 0x20] + lsrs r0, 8 + adds r3, r0 +_0814906C: + adds r0, r3, 0 +_0814906E: + pop {r1} + bx r1 + .align 2, 0 +_08149074: .4byte 0x000005ff + thumb_func_end sub_8149044 + + thumb_func_start sub_8149078 +sub_8149078: @ 8149078 + push {r4,lr} + ldr r4, _081490A8 @ =gUnknown_203F3D4 + ldr r3, [r4] + movs r0, 0 + str r0, [r3, 0x20] + adds r1, r3, 0 + adds r1, 0x4E + ldrh r0, [r1] + cmp r0, 0 + beq _081490BC + subs r0, 0x1 + strh r0, [r1] + ldr r0, [r3, 0x6C] + cmp r0, 0 + beq _08149186 + bl sub_8149194 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0 + beq _081490AC + ldr r1, [r4] + b _08149182 + .align 2, 0 +_081490A8: .4byte gUnknown_203F3D4 +_081490AC: + ldr r1, [r4] + ldr r0, [r1, 0x28] + cmp r0, 0x36 + bls _081490B8 + movs r0, 0x1E + b _08149184 +_081490B8: + movs r0, 0x52 + b _08149184 +_081490BC: + adds r2, r3, 0 + adds r2, 0x50 + ldrb r1, [r2] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08149110 + ldr r0, _08149108 @ =gUnknown_846B694 + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x51 + ldrb r2, [r0] + lsls r0, r2, 3 + subs r0, r2 + ldrh r1, [r1] + adds r0, r1 + str r0, [r3, 0x28] + bl sub_8149194 + ldr r2, [r4] + ldr r3, _0814910C @ =gUnknown_846B6A4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 1 + adds r1, r3 + ldrh r0, [r1] + adds r0, 0x2 + adds r1, r2, 0 + adds r1, 0x4E + strh r0, [r1] + adds r2, 0x50 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + b _0814917E + .align 2, 0 +_08149108: .4byte gUnknown_846B694 +_0814910C: .4byte gUnknown_846B6A4 +_08149110: + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0x8 + bne _0814912C + adds r1, r3, 0 + adds r1, 0x51 + ldrb r0, [r1] + cmp r0, 0x2 + bhi _08149128 + adds r0, 0x1 + strb r0, [r1] + b _0814912C +_08149128: + movs r0, 0x1 + str r0, [r3, 0x6C] +_0814912C: + ldr r2, _0814918C @ =gUnknown_846B694 + ldr r4, _08149190 @ =gUnknown_203F3D4 + ldr r0, [r4] + mov r12, r0 + mov r3, r12 + adds r3, 0x50 + ldrb r0, [r3] + movs r1, 0xF + subs r1, r0 + lsls r1, 1 + adds r1, r2 + mov r0, r12 + adds r0, 0x51 + ldrb r2, [r0] + lsls r0, r2, 3 + subs r0, r2 + ldrh r1, [r1] + adds r0, r1 + mov r1, r12 + str r0, [r1, 0x28] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bls _0814917E + bl sub_8149194 + movs r1, 0x3 + ands r1, r0 + cmp r1, 0 + bne _08149176 + ldr r1, [r4] + ldr r0, [r1, 0x28] + subs r0, 0x5 + str r0, [r1, 0x28] +_08149176: + ldr r0, [r4] + adds r0, 0x50 + movs r1, 0 + strb r1, [r0] +_0814917E: + ldr r0, _08149190 @ =gUnknown_203F3D4 + ldr r1, [r0] +_08149182: + ldr r0, [r1, 0x28] +_08149184: + str r0, [r1, 0x1C] +_08149186: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814918C: .4byte gUnknown_846B694 +_08149190: .4byte gUnknown_203F3D4 + thumb_func_end sub_8149078 + + thumb_func_start sub_8149194 +sub_8149194: @ 8149194 + ldr r0, _081491A8 @ =gUnknown_203F3D4 + ldr r2, [r0] + ldr r1, [r2, 0x24] + ldr r0, _081491AC @ =0x41c64e6d + muls r0, r1 + ldr r1, _081491B0 @ =0x00006073 + adds r0, r1 + str r0, [r2, 0x24] + lsrs r0, 16 + bx lr + .align 2, 0 +_081491A8: .4byte gUnknown_203F3D4 +_081491AC: .4byte 0x41c64e6d +_081491B0: .4byte 0x00006073 + thumb_func_end sub_8149194 + + thumb_func_start sub_81491B4 +sub_81491B4: @ 81491B4 + push {lr} + ldr r0, _081491D0 @ =gUnknown_203F3D4 + ldr r1, [r0] + movs r0, 0x1 + str r0, [r1, 0x10] + movs r0, 0x6 + str r0, [r1, 0x14] + ldr r0, _081491D4 @ =0x000005ff + strh r0, [r1, 0x34] + bl sub_814936C + pop {r0} + bx r0 + .align 2, 0 +_081491D0: .4byte gUnknown_203F3D4 +_081491D4: .4byte 0x000005ff + thumb_func_end sub_81491B4 + + thumb_func_start sub_81491D8 +sub_81491D8: @ 81491D8 + ldr r0, _081491E0 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldr r0, [r0, 0x10] + bx lr + .align 2, 0 +_081491E0: .4byte gUnknown_203F3D4 + thumb_func_end sub_81491D8 + + thumb_func_start sub_81491E4 +sub_81491E4: @ 81491E4 + push {r4,r5,lr} + ldr r5, _08149208 @ =gUnknown_203F3D4 + ldr r4, _0814920C @ =0x000082f8 + movs r3, 0 + movs r2, 0 + movs r1, 0x4 +_081491F0: + ldr r0, [r5] + adds r0, r4 + adds r0, r2 + str r3, [r0] + adds r2, 0x28 + subs r1, 0x1 + cmp r1, 0 + bge _081491F0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08149208: .4byte gUnknown_203F3D4 +_0814920C: .4byte 0x000082f8 + thumb_func_end sub_81491E4 + + thumb_func_start sub_8149210 +sub_8149210: @ 8149210 + ldr r0, _08149224 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldr r1, _08149228 @ =0x000083ac + adds r0, r1 + ldr r1, [r0] + movs r2, 0 + strh r2, [r1, 0x10] + ldr r0, [r0] + strh r2, [r0, 0x12] + bx lr + .align 2, 0 +_08149224: .4byte gUnknown_203F3D4 +_08149228: .4byte 0x000083ac + thumb_func_end sub_8149210 + + thumb_func_start sub_814922C +sub_814922C: @ 814922C + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08149250 @ =gUnknown_203F3D4 + ldr r2, [r1] + ldrb r3, [r2, 0x6] + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 3 + adds r2, r1 + ldr r1, _08149254 @ =0x000082f4 + adds r2, r1 + ldrh r1, [r2] + cmp r1, r0 + beq _08149258 + movs r0, 0 + b _0814925A + .align 2, 0 +_08149250: .4byte gUnknown_203F3D4 +_08149254: .4byte 0x000082f4 +_08149258: + movs r0, 0x1 +_0814925A: + pop {r1} + bx r1 + thumb_func_end sub_814922C + + thumb_func_start sub_8149260 +sub_8149260: @ 8149260 + ldr r0, _08149280 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldr r1, _08149284 @ =0x000083ac + adds r2, r0, r1 + ldr r1, [r2] + adds r0, 0x4A + ldrh r0, [r0] + strh r0, [r1, 0xE] + ldr r1, [r2] + ldrh r0, [r1, 0x10] + strh r0, [r1, 0x12] + ldr r1, [r2] + movs r0, 0x1 + strh r0, [r1, 0x10] + bx lr + .align 2, 0 +_08149280: .4byte gUnknown_203F3D4 +_08149284: .4byte 0x000083ac + thumb_func_end sub_8149260 + + thumb_func_start sub_8149288 +sub_8149288: @ 8149288 + push {r4,lr} + ldr r0, _081492B0 @ =gUnknown_203F3D4 + ldr r2, [r0] + ldr r0, _081492B4 @ =0x000083ac + adds r3, r2, r0 + ldr r1, [r3] + ldrh r0, [r1, 0x10] + strh r0, [r1, 0x12] + ldr r0, [r3] + movs r4, 0x2 + strh r4, [r0, 0x10] + ldr r1, [r3] + adds r2, 0x4A + ldrh r0, [r2] + strh r0, [r1, 0xE] + ldr r0, [r3] + str r4, [r0, 0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081492B0: .4byte gUnknown_203F3D4 +_081492B4: .4byte 0x000083ac + thumb_func_end sub_8149288 + + thumb_func_start sub_81492B8 +sub_81492B8: @ 81492B8 + ldr r0, _081492D0 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldr r1, _081492D4 @ =0x000083ac + adds r0, r1 + ldr r1, [r0] + ldrh r2, [r1, 0x10] + movs r3, 0 + strh r2, [r1, 0x12] + ldr r0, [r0] + strh r3, [r0, 0x10] + bx lr + .align 2, 0 +_081492D0: .4byte gUnknown_203F3D4 +_081492D4: .4byte 0x000083ac + thumb_func_end sub_81492B8 + + thumb_func_start sub_81492D8 +sub_81492D8: @ 81492D8 + push {r4,r5,lr} + ldr r4, _08149334 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldr r0, [r1, 0x5C] + cmp r0, 0 + beq _08149318 + ldr r0, [r1, 0x78] + bl sub_814AA24 + ldr r1, [r4] + movs r5, 0 + str r5, [r1, 0x5C] + adds r0, r1, 0 + adds r0, 0x4D + ldrb r0, [r0] + cmp r0, 0 + beq _08149318 + adds r0, r1, 0 + adds r0, 0x71 + ldrb r0, [r0] + bl sub_814A98C + ldr r1, _08149338 @ =gUnknown_846B6AC + subs r0, 0x2 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + bl sub_80722CC + ldr r0, [r4] + adds r0, 0x4D + strb r5, [r0] +_08149318: + ldr r0, _08149334 @ =gUnknown_203F3D4 + ldr r0, [r0] + adds r0, 0x74 + ldrh r0, [r0] + bl sub_814AA34 + bl sub_814937C + bl sub_814933C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08149334: .4byte gUnknown_203F3D4 +_08149338: .4byte gUnknown_846B6AC + thumb_func_end sub_81492D8 + + thumb_func_start sub_814933C +sub_814933C: @ 814933C + push {lr} + ldr r0, _08149358 @ =gUnknown_203F3D4 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x46 + ldrb r0, [r0] + cmp r0, 0 + beq _08149352 + ldr r0, [r1, 0x14] + bl sub_814A95C +_08149352: + pop {r0} + bx r0 + .align 2, 0 +_08149358: .4byte gUnknown_203F3D4 + thumb_func_end sub_814933C + + thumb_func_start sub_814935C +sub_814935C: @ 814935C + ldr r0, _08149368 @ =gUnknown_203F3D4 + ldr r0, [r0] + adds r0, 0x46 + movs r1, 0 + strb r1, [r0] + bx lr + .align 2, 0 +_08149368: .4byte gUnknown_203F3D4 + thumb_func_end sub_814935C + + thumb_func_start sub_814936C +sub_814936C: @ 814936C + ldr r0, _08149378 @ =gUnknown_203F3D4 + ldr r0, [r0] + adds r0, 0x46 + movs r1, 0x1 + strb r1, [r0] + bx lr + .align 2, 0 +_08149378: .4byte gUnknown_203F3D4 + thumb_func_end sub_814936C + + thumb_func_start sub_814937C +sub_814937C: @ 814937C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r6, 0 + ldr r2, _081493B8 @ =gUnknown_203F3D4 + ldr r0, [r2] + ldrb r0, [r0, 0x5] + mov r9, r0 + movs r5, 0 + cmp r6, r9 + bge _0814945C + mov r10, r2 + mov r8, r5 + movs r7, 0 +_0814939E: + mov r0, r10 + ldr r3, [r0] + adds r1, r3, r7 + ldr r2, _081493BC @ =0x000082f4 + adds r0, r1, r2 + ldrh r2, [r0] + cmp r2, 0x1 + beq _081493D0 + cmp r2, 0x1 + bgt _081493C0 + cmp r2, 0 + beq _081493C6 + b _08149450 + .align 2, 0 +_081493B8: .4byte gUnknown_203F3D4 +_081493BC: .4byte 0x000082f4 +_081493C0: + cmp r2, 0x2 + beq _08149434 + b _08149450 +_081493C6: + adds r0, r5, 0 + movs r1, 0 + bl sub_814A940 + b _08149450 +_081493D0: + ldr r0, _08149424 @ =0x000082f6 + adds r4, r1, r0 + ldrh r0, [r4] + cmp r0, 0x1 + bne _081493F2 + ldr r0, _08149428 @ =0x000082f2 + adds r0, r1 + adds r1, r3, 0 + adds r1, 0x9A + add r1, r8 + str r1, [sp] + ldrh r1, [r0] + mov r12, r1 + ldr r0, [sp] + ldrh r0, [r0] + cmp r12, r0 + beq _0814941A +_081493F2: + ldrb r3, [r3, 0x6] + cmp r5, r3 + bne _081493FA + strh r2, [r4] +_081493FA: + orrs r6, r2 + mov r1, r10 + ldr r2, [r1] + ldr r1, _0814942C @ =0x000082e8 + adds r0, r2, r1 + adds r0, r7 + ldr r1, _08149430 @ =0x7fffffff + str r1, [r0] + adds r1, r2, 0 + adds r1, 0x9A + add r1, r8 + adds r2, r7 + ldr r0, _08149428 @ =0x000082f2 + adds r2, r0 + ldrh r0, [r2] + strh r0, [r1] +_0814941A: + adds r0, r5, 0 + bl sub_8149490 + b _08149450 + .align 2, 0 +_08149424: .4byte 0x000082f6 +_08149428: .4byte 0x000082f2 +_0814942C: .4byte 0x000082e8 +_08149430: .4byte 0x7fffffff +_08149434: + ldr r0, _0814946C @ =0x000082f6 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0x2 + beq _08149450 + ldrb r3, [r3, 0x6] + cmp r5, r3 + bne _08149446 + strh r2, [r1] +_08149446: + orrs r6, r2 + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_814AA48 +_08149450: + movs r1, 0x2 + add r8, r1 + adds r7, 0x28 + adds r5, 0x1 + cmp r5, r9 + blt _0814939E +_0814945C: + movs r0, 0x2 + ands r0, r6 + cmp r0, 0 + beq _08149470 + movs r0, 0xFF + bl sub_80722CC + b _0814947E + .align 2, 0 +_0814946C: .4byte 0x000082f6 +_08149470: + movs r0, 0x1 + ands r6, r0 + cmp r6, 0 + beq _0814947E + movs r0, 0xA + bl sub_80722CC +_0814947E: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_814937C + + thumb_func_start sub_8149490 +sub_8149490: @ 8149490 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _081494BC @ =gUnknown_203F3D4 + ldr r2, [r0] + ldr r0, [r2, 0x68] + cmp r0, 0 + bne _0814952A + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _081494C0 @ =0x000082e4 + adds r0, r1 + adds r5, r2, r0 + ldr r1, [r5, 0x4] + ldr r0, _081494C4 @ =0x7fffffff + cmp r1, r0 + beq _081494C8 + adds r0, r1, 0x1 + str r0, [r5, 0x4] + adds r3, r0, 0 + b _081494E0 + .align 2, 0 +_081494BC: .4byte gUnknown_203F3D4 +_081494C0: .4byte 0x000082e4 +_081494C4: .4byte 0x7fffffff +_081494C8: + adds r0, r2, 0 + adds r0, 0x4A + ldrh r1, [r0] + ldrh r0, [r5, 0xE] + subs r3, r1, r0 + ldr r0, _08149500 @ =0x0000fde7 + cmp r3, r0 + ble _081494DE + ldr r0, _08149504 @ =0xffff0218 + adds r3, r0 + adds r3, r1 +_081494DE: + str r3, [r5, 0x4] +_081494E0: + cmp r3, 0x3 + ble _0814952A + subs r3, 0x4 + cmp r3, 0x2F + bgt _0814950C + ldr r2, _08149508 @ =gUnknown_846B6B4 + ldrh r1, [r5, 0xC] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 4 + adds r0, r3, r0 + adds r0, r2 + movs r4, 0 + ldrsb r4, [r0, r4] + b _0814950E + .align 2, 0 +_08149500: .4byte 0x0000fde7 +_08149504: .4byte 0xffff0218 +_08149508: .4byte gUnknown_846B6B4 +_0814950C: + movs r4, 0 +_0814950E: + adds r1, r4, 0 + adds r0, r6, 0 + bl sub_814A940 + cmp r4, 0 + bne _08149528 + ldr r0, _08149530 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + cmp r6, r0 + bne _08149528 + bl sub_81492B8 +_08149528: + str r4, [r5] +_0814952A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08149530: .4byte gUnknown_203F3D4 + thumb_func_end sub_8149490 + + thumb_func_start sub_8149534 +sub_8149534: @ 8149534 + push {r4,r5,lr} + ldr r5, _08149560 @ =gUnknown_203F3D4 + ldr r1, [r5] + ldr r0, [r1, 0x14] + cmp r0, 0x8 + bne _081495C6 + ldr r0, [r1, 0x18] + cmp r0, 0x7 + bne _081495C6 + ldr r4, [r1, 0x58] + cmp r4, 0 + bne _08149564 + bl sub_8149878 + ldr r0, [r5] + str r4, [r0, 0x54] + movs r1, 0x1 + str r1, [r0, 0x58] + adds r0, 0x71 + strb r4, [r0] + b _081495C6 + .align 2, 0 +_08149560: .4byte gUnknown_203F3D4 +_08149564: + ldr r0, [r1, 0x54] + cmp r0, 0x5 + bne _08149578 + ldrh r0, [r1, 0xC] + adds r0, 0x1 + strh r0, [r1, 0xC] + ldrh r0, [r1, 0xC] + bl sub_8149898 + b _0814957C +_08149578: + movs r0, 0 + strh r0, [r1, 0xC] +_0814957C: + ldr r4, _08149628 @ =gUnknown_203F3D4 + ldr r1, [r4] + ldr r0, [r1, 0x54] + cmp r0, 0x1 + ble _08149596 + movs r0, 0x1 + str r0, [r1, 0x64] + adds r0, r1, 0 + adds r0, 0x86 + adds r1, 0x81 + movs r2, 0x5 + bl memcpy +_08149596: + bl sub_8149878 + ldr r0, [r4] + movs r2, 0 + str r2, [r0, 0x54] + movs r1, 0x1 + str r1, [r0, 0x58] + adds r0, 0x71 + strb r2, [r0] + ldr r0, [r4] + adds r2, r0, 0 + adds r2, 0x74 + ldrh r1, [r2] + ldr r0, _0814962C @ =0x0000270e + cmp r1, r0 + bhi _081495BA + adds r0, r1, 0x1 + strh r0, [r2] +_081495BA: + movs r0, 0xA + bl sub_8149780 + movs r0, 0x3 + bl sub_8147F10 +_081495C6: + ldr r4, _08149628 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldr r0, [r0, 0x64] + cmp r0, 0 + beq _081495FC + bl sub_8149710 + cmp r0, 0x1 + beq _081495E0 + ldr r0, [r4] + ldr r0, [r0, 0x14] + cmp r0, 0 + bne _081495FC +_081495E0: + ldr r0, [r4] + adds r0, 0x86 + bl sub_8149834 + bl sub_8149888 + bl sub_8149780 + movs r0, 0x3 + bl sub_8147F10 + ldr r1, [r4] + movs r0, 0 + str r0, [r1, 0x64] +_081495FC: + ldr r4, _08149628 @ =gUnknown_203F3D4 + ldr r0, [r4] + ldr r0, [r0, 0x58] + cmp r0, 0 + beq _08149622 + bl sub_81497A8 + adds r2, r0, 0 + ldr r1, [r4] + ldr r0, [r1, 0x54] + cmp r2, r0 + ble _08149622 + str r2, [r1, 0x54] + adds r0, r1, 0 + adds r0, 0x81 + adds r1, 0x7C + movs r2, 0x5 + bl memcpy +_08149622: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08149628: .4byte gUnknown_203F3D4 +_0814962C: .4byte 0x0000270e + thumb_func_end sub_8149534 + + thumb_func_start sub_8149630 +sub_8149630: @ 8149630 + push {r4,r5,lr} + ldr r5, _08149664 @ =gUnknown_203F3D4 + ldr r1, [r5] + ldr r0, [r1, 0x14] + cmp r0, 0x6 + bne _0814967A + ldr r4, _08149668 @ =0x000083ac + adds r0, r1, r4 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, 0 + bne _0814967A + ldrh r0, [r1, 0x12] + cmp r0, 0x1 + bne _08149670 + bl sub_81491D8 + adds r1, r0, 0 + cmp r1, 0x1 + bne _08149670 + ldr r0, [r5] + adds r0, r4 + ldr r0, [r0] + str r1, [r0, 0x14] + b _0814967A + .align 2, 0 +_08149664: .4byte gUnknown_203F3D4 +_08149668: .4byte 0x000083ac +_0814966C: + movs r0, 0 + b _081496C2 +_08149670: + bl sub_8149288 + movs r0, 0x3 + bl sub_8147F10 +_0814967A: + ldr r0, _081496C8 @ =gUnknown_203F3D4 + ldr r1, [r0] + ldr r0, [r1, 0x14] + cmp r0, 0x7 + bne _081496A0 + ldr r0, [r1, 0x18] + cmp r0, 0x6 + bne _081496A0 + ldr r2, _081496CC @ =0x000083ac + adds r0, r1, r2 + ldr r1, [r0] + ldrh r0, [r1, 0x10] + cmp r0, 0x2 + beq _081496A0 + movs r0, 0x1 + str r0, [r1, 0x14] + movs r0, 0x3 + bl sub_8147F10 +_081496A0: + movs r2, 0 + ldr r0, _081496C8 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + cmp r2, r1 + bge _081496C0 + adds r3, r1, 0 + ldr r4, _081496D0 @ =0x000082f4 + adds r1, r0, r4 +_081496B2: + ldrh r0, [r1] + cmp r0, 0x2 + beq _0814966C + adds r1, 0x28 + adds r2, 0x1 + cmp r2, r3 + blt _081496B2 +_081496C0: + movs r0, 0x1 +_081496C2: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_081496C8: .4byte gUnknown_203F3D4 +_081496CC: .4byte 0x000083ac +_081496D0: .4byte 0x000082f4 + thumb_func_end sub_8149630 + + thumb_func_start sub_81496D4 +sub_81496D4: @ 81496D4 + push {r4,lr} + ldr r0, _08149708 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrb r3, [r0, 0x5] + movs r4, 0 + cmp r4, r3 + bge _081496F8 + ldr r1, _0814970C @ =0x000082f8 + adds r2, r0, r1 + adds r1, r3, 0 +_081496E8: + ldr r0, [r2] + cmp r0, 0 + beq _081496F0 + adds r4, 0x1 +_081496F0: + adds r2, 0x28 + subs r1, 0x1 + cmp r1, 0 + bne _081496E8 +_081496F8: + movs r0, 0 + cmp r4, r3 + bne _08149700 + movs r0, 0x1 +_08149700: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149708: .4byte gUnknown_203F3D4 +_0814970C: .4byte 0x000082f8 + thumb_func_end sub_81496D4 + + thumb_func_start sub_8149710 +sub_8149710: @ 8149710 + push {r4,lr} + movs r2, 0 + ldr r0, _08149730 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + cmp r2, r1 + bge _08149740 + adds r3, r1, 0 + ldr r4, _08149734 @ =0x000082f8 + adds r1, r0, r4 +_08149724: + ldr r0, [r1] + cmp r0, 0x1 + beq _08149738 + movs r0, 0 + b _08149742 + .align 2, 0 +_08149730: .4byte gUnknown_203F3D4 +_08149734: .4byte 0x000082f8 +_08149738: + adds r1, 0x28 + adds r2, 0x1 + cmp r2, r3 + blt _08149724 +_08149740: + movs r0, 0x1 +_08149742: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8149710 + + thumb_func_start sub_8149748 +sub_8149748: @ 8149748 + push {lr} + ldr r0, _0814975C @ =gUnknown_203F3D4 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x45 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08149760 +_08149758: + movs r0, 0 + b _0814977C + .align 2, 0 +_0814975C: .4byte gUnknown_203F3D4 +_08149760: + movs r2, 0x1 + ldrb r0, [r1, 0x5] + cmp r2, r0 + bge _0814977A + adds r3, r0, 0 + adds r1, 0x92 +_0814976C: + ldrh r0, [r1] + cmp r0, 0x1 + beq _08149758 + adds r1, 0x2 + adds r2, 0x1 + cmp r2, r3 + blt _0814976C +_0814977A: + movs r0, 0x1 +_0814977C: + pop {r1} + bx r1 + thumb_func_end sub_8149748 + + thumb_func_start sub_8149780 +sub_8149780: @ 8149780 + push {lr} + ldr r1, _081497A0 @ =gUnknown_203F3D4 + ldr r2, [r1] + ldr r1, [r2, 0x78] + adds r1, r0 + str r1, [r2, 0x78] + movs r0, 0x1 + str r0, [r2, 0x5C] + ldr r0, _081497A4 @ =0x00018695 + cmp r1, r0 + bls _0814979A + adds r0, 0x1 + str r0, [r2, 0x78] +_0814979A: + pop {r0} + bx r0 + .align 2, 0 +_081497A0: .4byte gUnknown_203F3D4 +_081497A4: .4byte 0x00018695 + thumb_func_end sub_8149780 + + thumb_func_start sub_81497A8 +sub_81497A8: @ 81497A8 + push {r4-r7,lr} + movs r5, 0 + ldr r1, _081497E0 @ =gUnknown_203F3D4 + ldr r0, [r1] + ldrb r4, [r0, 0x5] + movs r2, 0 + cmp r5, r4 + bge _081497FA + mov r12, r1 + movs r3, 0 + ldr r7, _081497E4 @ =0x000082e4 + movs r6, 0x1E + negs r6, r6 +_081497C2: + mov r0, r12 + ldr r1, [r0] + adds r0, r1, r7 + adds r0, r3 + ldr r0, [r0] + cmp r0, r6 + bne _081497E8 + adds r0, r1, 0 + adds r0, 0x7C + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] + adds r5, 0x1 + b _081497F2 + .align 2, 0 +_081497E0: .4byte gUnknown_203F3D4 +_081497E4: .4byte 0x000082e4 +_081497E8: + adds r0, r1, 0 + adds r0, 0x7C + adds r0, r2 + movs r1, 0 + strb r1, [r0] +_081497F2: + adds r3, 0x28 + adds r2, 0x1 + cmp r2, r4 + blt _081497C2 +_081497FA: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81497A8 + + thumb_func_start sub_8149804 +sub_8149804: @ 8149804 + push {lr} + movs r2, 0 + ldr r1, _08149828 @ =gUnknown_3005450 + ldr r3, _0814982C @ =0x0000069e + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _08149820 + ldr r3, _08149830 @ =0x000008d2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _08149820 + movs r2, 0x1 +_08149820: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_08149828: .4byte gUnknown_3005450 +_0814982C: .4byte 0x0000069e +_08149830: .4byte 0x000008d2 + thumb_func_end sub_8149804 + + thumb_func_start sub_8149834 +sub_8149834: @ 8149834 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + ldr r6, _08149874 @ =gUnknown_203F3D4 + movs r5, 0x1 +_08149842: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08149852 + adds r0, r5, 0 + lsls r0, r1 + orrs r2, r0 + adds r3, 0x1 +_08149852: + adds r1, 0x1 + cmp r1, 0x4 + ble _08149842 + ldr r0, [r6] + adds r0, 0x71 + strb r2, [r0] + cmp r2, 0 + beq _0814986A + ldr r0, [r6] + adds r0, 0x4D + movs r1, 0x1 + strb r1, [r0] +_0814986A: + adds r0, r3, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08149874: .4byte gUnknown_203F3D4 + thumb_func_end sub_8149834 + + thumb_func_start sub_8149878 +sub_8149878: @ 8149878 + ldr r0, _08149884 @ =gUnknown_203F3D4 + ldr r0, [r0] + adds r0, 0x44 + movs r1, 0 + strb r1, [r0] + bx lr + .align 2, 0 +_08149884: .4byte gUnknown_203F3D4 + thumb_func_end sub_8149878 + + thumb_func_start sub_8149888 +sub_8149888: @ 8149888 + ldr r1, _08149894 @ =gUnknown_846B744 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_08149894: .4byte gUnknown_846B744 + thumb_func_end sub_8149888 + + thumb_func_start sub_8149898 +sub_8149898: @ 8149898 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, _081498B0 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrh r2, [r0, 0xE] + cmp r1, r2 + bls _081498AA + strh r1, [r0, 0xE] +_081498AA: + pop {r0} + bx r0 + .align 2, 0 +_081498B0: .4byte gUnknown_203F3D4 + thumb_func_end sub_8149898 + + thumb_func_start sub_81498B4 +sub_81498B4: @ 81498B4 + push {lr} + ldr r0, _081498C8 @ =gUnknown_203F3D4 + ldr r0, [r0] + ldr r1, _081498CC @ =gUnknown_846B76C + ldr r2, [r0, 0x78] + ldr r0, [r1] + cmp r2, r0 + bcs _081498D0 + movs r0, 0 + b _081498D2 + .align 2, 0 +_081498C8: .4byte gUnknown_203F3D4 +_081498CC: .4byte gUnknown_846B76C +_081498D0: + movs r0, 0x1 +_081498D2: + pop {r1} + bx r1 + thumb_func_end sub_81498B4 + + thumb_func_start sub_81498D8 +sub_81498D8: @ 81498D8 + push {r4,lr} + bl sub_8149910 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8149930 + lsls r0, 16 + lsrs r0, 4 + ldr r1, _081498FC @ =0x00000fff + ands r4, r1 + orrs r0, r4 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081498FC: .4byte 0x00000fff + thumb_func_end sub_81498D8 + + thumb_func_start sub_8149900 +sub_8149900: @ 8149900 + lsls r0, 16 + lsrs r3, r0, 28 + strh r3, [r2] + lsls r0, 4 + lsrs r0, 20 + strh r0, [r1] + bx lr + thumb_func_end sub_8149900 + + thumb_func_start sub_8149910 +sub_8149910: @ 8149910 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + ldr r0, _0814992C @ =gUnknown_846B75C + lsrs r1, 15 + adds r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0814992C: .4byte gUnknown_846B75C + thumb_func_end sub_8149910 + + thumb_func_start sub_8149930 +sub_8149930: @ 8149930 + push {r4-r6,lr} + movs r5, 0 + movs r4, 0 + ldr r3, _08149964 @ =gUnknown_203F3D4 + ldr r0, [r3] + ldr r2, _08149968 @ =gUnknown_846B76C + ldr r1, [r0, 0x78] + ldr r0, [r2] + cmp r1, r0 + bcc _0814996C + ldr r5, [r2, 0x4] + adds r6, r3, 0 + adds r3, r2, 0x4 +_0814994A: + adds r3, 0x8 + adds r2, 0x8 + adds r4, 0x1 + cmp r4, 0x4 + bhi _0814996C + ldr r0, [r6] + ldr r1, [r0, 0x78] + ldr r0, [r2] + cmp r1, r0 + bcc _0814996C + ldr r5, [r3] + b _0814994A + .align 2, 0 +_08149964: .4byte gUnknown_203F3D4 +_08149968: .4byte gUnknown_846B76C +_0814996C: + lsls r0, r5, 16 + lsrs r0, 16 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8149930 + + thumb_func_start sub_8149978 +sub_8149978: @ 8149978 + push {r4,r5,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + b _0814998A +_08149984: + subs r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_0814998A: + cmp r4, 0 + beq _0814999C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_809A000 + lsls r0, 24 + cmp r0, 0 + beq _08149984 +_0814999C: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8149978 + + thumb_func_start sub_81499A4 +sub_81499A4: @ 81499A4 + push {lr} + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_81499A4 + + thumb_func_start sub_81499B4 +sub_81499B4: @ 81499B4 + ldr r0, _081499BC @ =gUnknown_203F3D4 + ldr r0, [r0] + ldrb r0, [r0, 0x6] + bx lr + .align 2, 0 +_081499BC: .4byte gUnknown_203F3D4 + thumb_func_end sub_81499B4 + + thumb_func_start sub_81499C0 +sub_81499C0: @ 81499C0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081499D8 @ =gUnknown_203F3D4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, _081499DC @ =0x000082a8 + adds r1, r0 + ldr r0, [r2] + adds r0, r1 + bx lr + .align 2, 0 +_081499D8: .4byte gUnknown_203F3D4 +_081499DC: .4byte 0x000082a8 + thumb_func_end sub_81499C0 + + thumb_func_start sub_81499E0 +sub_81499E0: @ 81499E0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _081499FC @ =gUnknown_203F3D4 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, [r2] + adds r0, r1 + movs r1, 0x83 + lsls r1, 8 + adds r0, r1 + bx lr + .align 2, 0 +_081499FC: .4byte gUnknown_203F3D4 + thumb_func_end sub_81499E0 + + thumb_func_start sub_8149A00 +sub_8149A00: @ 8149A00 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8147D00 + lsls r0, 16 + asrs r0, 16 + mvns r0, r0 + lsrs r0, 31 + pop {r1} + bx r1 + thumb_func_end sub_8149A00 + + thumb_func_start sub_8149A18 +sub_8149A18: @ 8149A18 + push {r4,r5,lr} + movs r5, 0 +_08149A1C: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08149A4C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _08149A54 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + lsls r0, 16 + lsrs r0, 16 + bl sub_8149A00 + cmp r0, 0 + beq _08149A54 + ldr r1, _08149A50 @ =gUnknown_20370D0 + movs r0, 0x1 + b _08149A5E + .align 2, 0 +_08149A4C: .4byte gUnknown_2024284 +_08149A50: .4byte gUnknown_20370D0 +_08149A54: + adds r5, 0x1 + cmp r5, 0x5 + ble _08149A1C + ldr r1, _08149A68 @ =gUnknown_20370D0 + movs r0, 0 +_08149A5E: + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08149A68: .4byte gUnknown_20370D0 + thumb_func_end sub_8149A18 + + thumb_func_start sub_8149A6C +sub_8149A6C: @ 8149A6C + push {lr} + sub sp, 0xC + mov r2, sp + movs r1, 0x1 + strb r1, [r2] + ldrh r1, [r0] + strh r1, [r2, 0x2] + ldr r1, [r0, 0x4] + str r1, [sp, 0x8] + ldr r0, [r0, 0x8] + str r0, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_8149A6C + + thumb_func_start sub_8149A90 +sub_8149A90: @ 8149A90 + push {r4,lr} + sub sp, 0xC + adds r4, r1, 0 + ldr r3, _08149AC4 @ =gUnknown_3003ED0 + lsls r2, r0, 4 + adds r0, r2, r3 + ldrh r1, [r0] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + movs r1, 0xBC + lsls r1, 6 + cmp r0, r1 + bne _08149AC0 + adds r1, r3, 0x2 + adds r1, r2, r1 + mov r0, sp + movs r2, 0xC + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x1 + beq _08149AC8 +_08149AC0: + movs r0, 0 + b _08149AD8 + .align 2, 0 +_08149AC4: .4byte gUnknown_3003ED0 +_08149AC8: + mov r0, sp + ldrh r0, [r0, 0x2] + strh r0, [r4] + ldr r0, [sp, 0x8] + str r0, [r4, 0x4] + ldr r0, [sp, 0x4] + str r0, [r4, 0x8] + movs r0, 0x1 +_08149AD8: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8149A90 + + thumb_func_start sub_8149AE0 +sub_8149AE0: @ 8149AE0 + push {lr} + sub sp, 0xC + mov r2, sp + movs r1, 0x2 + strb r1, [r2] + str r0, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_8149AE0 + + thumb_func_start sub_8149AF8 +sub_8149AF8: @ 8149AF8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + mov r3, sp + movs r2, 0x3 + strb r2, [r3] + ldr r3, [r1, 0x8] + lsls r3, 15 + ldr r2, [sp, 0x8] + ldr r4, _08149B74 @ =0x00007fff + mov r8, r4 + ands r2, r4 + orrs r2, r3 + str r2, [sp, 0x8] + mov r6, sp + ldrb r2, [r1, 0x1] + movs r5, 0x1F + adds r3, r5, 0 + ands r3, r2 + ldrb r4, [r6, 0x3] + movs r2, 0x20 + negs r2, r2 + ands r2, r4 + orrs r2, r3 + strb r2, [r6, 0x3] + mov r3, sp + ldrb r2, [r1] + strb r2, [r3, 0x1] + ldrh r2, [r1, 0x2] + strh r2, [r3, 0x6] + mov r4, sp + ldrh r2, [r1, 0x4] + mov r1, r8 + ands r2, r1 + ldrh r3, [r4, 0x8] + ldr r1, _08149B78 @ =0xffff8000 + ands r1, r3 + orrs r1, r2 + strh r1, [r4, 0x8] + mov r2, sp + ldrh r1, [r0, 0x10] + strb r1, [r2, 0x2] + mov r3, sp + ldr r1, [r0, 0x14] + lsls r1, 5 + ldrb r2, [r3, 0x3] + ands r5, r2 + orrs r5, r1 + strb r5, [r3, 0x3] + mov r1, sp + ldrh r0, [r0, 0xE] + strh r0, [r1, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08149B74: .4byte 0x00007fff +_08149B78: .4byte 0xffff8000 + thumb_func_end sub_8149AF8 + + thumb_func_start sub_8149B7C +sub_8149B7C: @ 8149B7C + push {r4,r5,lr} + sub sp, 0xC + adds r5, r0, 0 + adds r4, r1, 0 + ldr r2, _08149BE4 @ =gUnknown_3003ED0 + ldrh r0, [r2] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _08149BE8 + adds r1, r2, 0x2 + mov r0, sp + movs r2, 0xC + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x3 + bne _08149BE8 + ldr r0, [sp, 0x8] + lsrs r0, 15 + str r0, [r4, 0x8] + mov r0, sp + ldrb r1, [r0, 0x3] + lsls r0, r1, 27 + lsrs r0, 27 + strb r0, [r4, 0x1] + mov r0, sp + ldrb r0, [r0, 0x1] + strb r0, [r4] + mov r0, sp + ldrh r0, [r0, 0x6] + strh r0, [r4, 0x2] + mov r0, sp + ldrh r0, [r0, 0x8] + lsls r0, 17 + lsrs r0, 17 + strh r0, [r4, 0x4] + mov r0, sp + ldrb r0, [r0, 0x2] + strh r0, [r5, 0x10] + lsls r1, 24 + lsrs r1, 29 + str r1, [r5, 0x14] + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r5, 0xE] + movs r0, 0x1 + b _08149BEA + .align 2, 0 +_08149BE4: .4byte gUnknown_3003ED0 +_08149BE8: + movs r0, 0 +_08149BEA: + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8149B7C + + thumb_func_start sub_8149BF4 +sub_8149BF4: @ 8149BF4 + push {r4,lr} + sub sp, 0xC + mov r4, sp + movs r3, 0x4 + strb r3, [r4] + ldrh r3, [r0, 0x10] + strb r3, [r4, 0x1] + ldr r3, [r0, 0x14] + strb r3, [r4, 0x2] + ldr r3, [r0, 0x18] + strb r3, [r4, 0x3] + mov r3, sp + ldrh r0, [r0, 0xE] + strh r0, [r3, 0x4] + mov r0, sp + strb r1, [r0, 0x6] + strh r2, [r0, 0x8] + bl sub_80F9E2C + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8149BF4 + + thumb_func_start sub_8149C24 +sub_8149C24: @ 8149C24 + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r3, _08149C80 @ =gUnknown_3003ED0 + lsls r2, r1, 4 + adds r0, r2, r3 + ldrh r1, [r0] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + movs r1, 0xBC + lsls r1, 6 + cmp r0, r1 + bne _08149C84 + adds r1, r3, 0x2 + adds r1, r2, r1 + mov r0, sp + movs r2, 0xC + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x4 + bne _08149C84 + mov r0, sp + ldrb r0, [r0, 0x1] + strh r0, [r4, 0x10] + mov r0, sp + ldrb r0, [r0, 0x2] + str r0, [r4, 0x14] + mov r0, sp + ldrb r0, [r0, 0x3] + str r0, [r4, 0x18] + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r4, 0xE] + mov r0, sp + ldrb r0, [r0, 0x6] + strb r0, [r5] + mov r0, sp + ldrh r0, [r0, 0x8] + strh r0, [r6] + movs r0, 0x1 + b _08149C86 + .align 2, 0 +_08149C80: .4byte gUnknown_3003ED0 +_08149C84: + movs r0, 0 +_08149C86: + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8149C24 + + thumb_func_start sub_8149C90 +sub_8149C90: @ 8149C90 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r3, _08149CDC @ =gUnknown_3003ED0 + lsls r2, r1, 4 + adds r0, r2, r3 + ldrh r1, [r0] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + movs r1, 0xBC + lsls r1, 6 + cmp r0, r1 + bne _08149CE0 + adds r1, r3, 0x2 + adds r1, r2, r1 + mov r0, sp + movs r2, 0xC + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x4 + bne _08149CE0 + mov r0, sp + ldrb r0, [r0, 0x1] + strh r0, [r4, 0x10] + mov r0, sp + ldrb r0, [r0, 0x2] + str r0, [r4, 0x14] + mov r0, sp + ldrb r0, [r0, 0x3] + str r0, [r4, 0x18] + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r4, 0xE] + movs r0, 0x1 + b _08149CE2 + .align 2, 0 +_08149CDC: .4byte gUnknown_3003ED0 +_08149CE0: + movs r0, 0 +_08149CE2: + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8149C90 + + thumb_func_start sub_8149CEC +sub_8149CEC: @ 8149CEC + push {r4,lr} + ldr r4, _08149D18 @ =gUnknown_203F3D8 + str r0, [r4] + bl sub_8149D34 + ldr r0, _08149D1C @ =sub_8149DA4 + movs r1, 0x3 + bl sub_807741C + ldr r1, [r4] + strb r0, [r1, 0x6] + ldr r2, [r4] + ldrb r0, [r2, 0x6] + movs r1, 0x2 + bl sub_80776E8 + ldr r0, _08149D20 @ =sub_8149DC8 + bl sub_8149D80 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08149D18: .4byte gUnknown_203F3D8 +_08149D1C: .4byte sub_8149DA4 +_08149D20: .4byte sub_8149DC8 + thumb_func_end sub_8149CEC + + thumb_func_start sub_8149D24 +sub_8149D24: @ 8149D24 + push {lr} + bl sub_8003ECC + bl sub_815C9F4 + pop {r0} + bx r0 + thumb_func_end sub_8149D24 + + thumb_func_start sub_8149D34 +sub_8149D34: @ 8149D34 + movs r1, 0 + strh r1, [r0, 0x4] + str r1, [r0] + movs r1, 0xFF + strh r1, [r0, 0x12] + bx lr + thumb_func_end sub_8149D34 + + thumb_func_start sub_8149D40 +sub_8149D40: @ 8149D40 + push {r4-r6,lr} + adds r6, r0, 0 + movs r5, 0 + ldr r4, _08149D64 @ =gUnknown_846D8FC +_08149D48: + ldr r0, [r4] + cmp r0, r6 + bne _08149D54 + ldr r0, [r4, 0x4] + bl sub_8149D80 +_08149D54: + adds r4, 0x8 + adds r5, 0x1 + cmp r5, 0x9 + bls _08149D48 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08149D64: .4byte gUnknown_846D8FC + thumb_func_end sub_8149D40 + + thumb_func_start sub_8149D68 +sub_8149D68: @ 8149D68 + ldr r0, _08149D7C @ =gUnknown_203F3D8 + ldr r0, [r0] + ldr r1, [r0] + movs r0, 0x1 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + bx lr + .align 2, 0 +_08149D7C: .4byte gUnknown_203F3D8 + thumb_func_end sub_8149D68 + + thumb_func_start sub_8149D80 +sub_8149D80: @ 8149D80 + push {r4,lr} + adds r2, r0, 0 + ldr r4, _08149DA0 @ =gUnknown_203F3D8 + ldr r0, [r4] + ldrb r0, [r0, 0x6] + movs r1, 0 + bl sub_80776E8 + ldr r1, [r4] + movs r0, 0 + strh r0, [r1, 0x4] + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08149DA0: .4byte gUnknown_203F3D8 + thumb_func_end sub_8149D80 + + thumb_func_start sub_8149DA4 +sub_8149DA4: @ 8149DA4 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08149DC4 @ =gUnknown_203F3D8 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + bne _08149DC0 + adds r0, r1, 0 + movs r1, 0 + bl sub_8077720 + bl _call_via_r0 +_08149DC0: + pop {r0} + bx r0 + .align 2, 0 +_08149DC4: .4byte gUnknown_203F3D8 + thumb_func_end sub_8149DA4 + + thumb_func_start sub_8149DC8 +sub_8149DC8: @ 8149DC8 + push {r4-r6,lr} + sub sp, 0x8 + ldr r6, _08149DE4 @ =gUnknown_203F3D8 + ldr r1, [r6] + ldrh r5, [r1, 0x4] + cmp r5, 0x1 + bne _08149DD8 + b _08149F18 +_08149DD8: + cmp r5, 0x1 + bgt _08149DE8 + cmp r5, 0 + beq _08149DF0 + b _08149F5A + .align 2, 0 +_08149DE4: .4byte gUnknown_203F3D8 +_08149DE8: + cmp r5, 0x2 + bne _08149DEE + b _08149F56 +_08149DEE: + b _08149F5A +_08149DF0: + movs r0, 0 + bl sub_8001618 + ldr r1, _08149EE8 @ =gUnknown_846D8D4 + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + ldr r0, _08149EEC @ =gUnknown_846D8E4 + bl sub_8003B24 + bl sub_80F6C14 + bl sub_80F6808 + ldr r0, [r6] + bl sub_814AD6C + bl sub_814A9C8 + ldr r0, _08149EF0 @ =gUnknown_846B7B4 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08149EF4 @ =gUnknown_846B7D4 + str r5, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08149EF8 @ =gUnknown_846BA00 + movs r4, 0x1 + str r4, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _08149EFC @ =gUnknown_846BBB0 + movs r1, 0x30 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08149F00 @ =gUnknown_846BBD0 + str r5, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08149F04 @ =gUnknown_846C520 + str r4, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _08149F08 @ =gUnknown_846C8D8 + movs r1, 0x10 + movs r2, 0x20 + bl sub_80703EC + ldr r1, _08149F0C @ =gUnknown_846C8F8 + str r5, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r1, _08149F10 @ =gUnknown_846D3A8 + str r4, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + ldr r0, _08149F14 @ =gUnknown_846B794 + movs r1, 0x20 + movs r2, 0x20 + bl sub_80703EC + ldr r1, [r6] + movs r0, 0xD3 + lsls r0, 1 + adds r1, r0 + movs r0, 0 + bl sub_8001FA0 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + bl sub_814A84C + movs r0, 0 + bl sub_814AA24 + movs r0, 0 + movs r1, 0x1 + movs r2, 0xE0 + bl sub_814FDA0 + movs r0, 0 + movs r1, 0xA + movs r2, 0xD0 + bl sub_814FE40 + movs r0, 0 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + b _08149F4C + .align 2, 0 +_08149EE8: .4byte gUnknown_846D8D4 +_08149EEC: .4byte gUnknown_846D8E4 +_08149EF0: .4byte gUnknown_846B7B4 +_08149EF4: .4byte gUnknown_846B7D4 +_08149EF8: .4byte gUnknown_846BA00 +_08149EFC: .4byte gUnknown_846BBB0 +_08149F00: .4byte gUnknown_846BBD0 +_08149F04: .4byte gUnknown_846C520 +_08149F08: .4byte gUnknown_846C8D8 +_08149F0C: .4byte gUnknown_846C8F8 +_08149F10: .4byte gUnknown_846D3A8 +_08149F14: .4byte gUnknown_846B794 +_08149F18: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + bne _08149F5A + bl sub_814A8B8 + ldr r0, [r6] + bl sub_814B294 + ldr r0, [r6] + movs r1, 0x6 + bl sub_814B348 + movs r0, 0x3 + bl sub_80019BC + movs r0, 0 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019D0 +_08149F4C: + ldr r1, [r6] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _08149F5A +_08149F56: + movs r0, 0x1 + str r0, [r1] +_08149F5A: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8149DC8 + + thumb_func_start sub_8149F64 +sub_8149F64: @ 8149F64 + push {r4,lr} + ldr r4, _08149F7C @ =gUnknown_203F3D8 + ldr r0, [r4] + ldrh r0, [r0, 0x4] + cmp r0, 0x1 + beq _08149F90 + cmp r0, 0x1 + bgt _08149F80 + cmp r0, 0 + beq _08149F8A + b _08149FCA + .align 2, 0 +_08149F7C: .4byte gUnknown_203F3D8 +_08149F80: + cmp r0, 0x2 + beq _08149FA2 + cmp r0, 0x3 + beq _08149FBA + b _08149FCA +_08149F8A: + bl sub_814AADC + b _08149FB0 +_08149F90: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08149FCA + movs r0, 0 + bl sub_814AC30 + b _08149FB0 +_08149FA2: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08149FCA + bl sub_814AC94 +_08149FB0: + ldr r1, [r4] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _08149FCA +_08149FBA: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08149FCA + ldr r1, [r4] + movs r0, 0x1 + str r0, [r1] +_08149FCA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8149F64 + + thumb_func_start sub_8149FD0 +sub_8149FD0: @ 8149FD0 + push {r4,lr} + ldr r4, _08149FE8 @ =gUnknown_203F3D8 + ldr r0, [r4] + ldrh r0, [r0, 0x4] + cmp r0, 0x1 + beq _08149FFC + cmp r0, 0x1 + bgt _08149FEC + cmp r0, 0 + beq _08149FF6 + b _0814A036 + .align 2, 0 +_08149FE8: .4byte gUnknown_203F3D8 +_08149FEC: + cmp r0, 0x2 + beq _0814A00E + cmp r0, 0x3 + beq _0814A026 + b _0814A036 +_08149FF6: + bl sub_814AADC + b _0814A01C +_08149FFC: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A036 + movs r0, 0x1 + bl sub_814AC30 + b _0814A01C +_0814A00E: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A036 + bl sub_814AC94 +_0814A01C: + ldr r1, [r4] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A036 +_0814A026: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A036 + ldr r1, [r4] + movs r0, 0x1 + str r0, [r1] +_0814A036: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8149FD0 + + thumb_func_start sub_814A03C +sub_814A03C: @ 814A03C + push {r4,r5,lr} + bl sub_81499A4 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _0814A058 @ =gUnknown_203F3D8 + ldr r0, [r0] + ldrh r0, [r0, 0x4] + cmp r0, 0 + beq _0814A05C + cmp r0, 0x1 + beq _0814A090 + b _0814A0BE + .align 2, 0 +_0814A058: .4byte gUnknown_203F3D8 +_0814A05C: + movs r4, 0 + cmp r4, r5 + bge _0814A078 +_0814A062: + ldr r0, _0814A08C @ =gUnknown_203F3D8 + ldr r0, [r0] + lsls r1, r4, 1 + adds r0, 0x1C + adds r0, r1 + ldrb r0, [r0] + bl sub_80040B8 + adds r4, 0x1 + cmp r4, r5 + blt _0814A062 +_0814A078: + movs r0, 0 + bl sub_80020BC + ldr r0, _0814A08C @ =gUnknown_203F3D8 + ldr r1, [r0] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A0BE + .align 2, 0 +_0814A08C: .4byte gUnknown_203F3D8 +_0814A090: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A0BE + movs r4, 0 + cmp r4, r5 + bge _0814A0B6 +_0814A0A0: + ldr r0, _0814A0C4 @ =gUnknown_203F3D8 + ldr r0, [r0] + lsls r1, r4, 1 + adds r0, 0x1C + adds r0, r1 + ldrb r0, [r0] + bl sub_8003E3C + adds r4, 0x1 + cmp r4, r5 + blt _0814A0A0 +_0814A0B6: + ldr r0, _0814A0C4 @ =gUnknown_203F3D8 + ldr r1, [r0] + movs r0, 0x1 + str r0, [r1] +_0814A0BE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A0C4: .4byte gUnknown_203F3D8 + thumb_func_end sub_814A03C + + thumb_func_start sub_814A0C8 +sub_814A0C8: @ 814A0C8 + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _0814A0E0 @ =gUnknown_203F3D8 + ldr r0, [r5] + ldrh r4, [r0, 0x4] + cmp r4, 0x1 + beq _0814A124 + cmp r4, 0x1 + bgt _0814A0E4 + cmp r4, 0 + beq _0814A0EA + b _0814A16C + .align 2, 0 +_0814A0E0: .4byte gUnknown_203F3D8 +_0814A0E4: + cmp r4, 0x2 + beq _0814A15C + b _0814A16C +_0814A0EA: + movs r0, 0x1 + movs r1, 0x8 + movs r2, 0x14 + movs r3, 0x2 + bl sub_814A754 + ldr r1, [r5] + strh r0, [r1, 0x12] + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0814A120 @ =gUnknown_841CBFD + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + b _0814A152 + .align 2, 0 +_0814A120: .4byte gUnknown_841CBFD +_0814A124: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A16C + ldr r0, [r5] + ldrb r0, [r0, 0x12] + bl sub_8003FA0 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0x17 + movs r1, 0x7 + movs r2, 0 + bl sub_814A7D0 + movs r0, 0 + bl sub_80020BC +_0814A152: + ldr r1, [r5] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A16C +_0814A15C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A16C + ldr r1, [r5] + movs r0, 0x1 + str r0, [r1] +_0814A16C: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814A0C8 + + thumb_func_start sub_814A174 +sub_814A174: @ 814A174 + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _0814A18C @ =gUnknown_203F3D8 + ldr r0, [r5] + ldrh r4, [r0, 0x4] + cmp r4, 0x1 + beq _0814A1D0 + cmp r4, 0x1 + bgt _0814A190 + cmp r4, 0 + beq _0814A196 + b _0814A20E + .align 2, 0 +_0814A18C: .4byte gUnknown_203F3D8 +_0814A190: + cmp r4, 0x2 + beq _0814A1FE + b _0814A20E +_0814A196: + movs r0, 0x2 + movs r1, 0x7 + movs r2, 0x1A + movs r3, 0x4 + bl sub_814A754 + ldr r1, [r5] + strh r0, [r1, 0x12] + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0814A1CC @ =gUnknown_841CC42 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + b _0814A1F4 + .align 2, 0 +_0814A1CC: .4byte gUnknown_841CC42 +_0814A1D0: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A20E + ldr r0, [r5] + ldrb r0, [r0, 0x12] + bl sub_8003FA0 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0 + bl sub_80020BC +_0814A1F4: + ldr r1, [r5] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A20E +_0814A1FE: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A20E + ldr r1, [r5] + movs r0, 0x1 + str r0, [r1] +_0814A20E: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814A174 + + thumb_func_start sub_814A218 +sub_814A218: @ 814A218 + push {r4,r5,lr} + ldr r5, _0814A22C @ =gUnknown_203F3D8 + ldr r0, [r5] + ldrh r4, [r0, 0x4] + cmp r4, 0 + beq _0814A230 + cmp r4, 0x1 + beq _0814A248 + b _0814A25E + .align 2, 0 +_0814A22C: .4byte gUnknown_203F3D8 +_0814A230: + bl sub_814A6CC + bl sub_81100E8 + movs r0, 0 + bl sub_80020BC + ldr r1, [r5] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A25E +_0814A248: + bl sub_814A6FC + cmp r0, 0 + bne _0814A25E + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A25E + ldr r0, [r5] + str r4, [r0] +_0814A25E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814A218 + + thumb_func_start sub_814A264 +sub_814A264: @ 814A264 + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _0814A27C @ =gUnknown_203F3D8 + ldr r0, [r5] + ldrh r4, [r0, 0x4] + cmp r4, 0x1 + beq _0814A2C0 + cmp r4, 0x1 + bgt _0814A280 + cmp r4, 0 + beq _0814A286 + b _0814A2FE + .align 2, 0 +_0814A27C: .4byte gUnknown_203F3D8 +_0814A280: + cmp r4, 0x2 + beq _0814A2EE + b _0814A2FE +_0814A286: + movs r0, 0x2 + movs r1, 0x8 + movs r2, 0x16 + movs r3, 0x4 + bl sub_814A754 + ldr r1, [r5] + strh r0, [r1, 0x12] + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0814A2BC @ =gUnknown_841CC11 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + b _0814A2E4 + .align 2, 0 +_0814A2BC: .4byte gUnknown_841CC11 +_0814A2C0: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A2FE + ldr r0, [r5] + ldrb r0, [r0, 0x12] + bl sub_8003FA0 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0 + bl sub_80020BC +_0814A2E4: + ldr r1, [r5] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A2FE +_0814A2EE: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A2FE + ldr r1, [r5] + movs r0, 0x1 + str r0, [r1] +_0814A2FE: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814A264 + + thumb_func_start sub_814A308 +sub_814A308: @ 814A308 + push {r4,r5,lr} + sub sp, 0xC + ldr r5, _0814A320 @ =gUnknown_203F3D8 + ldr r0, [r5] + ldrh r4, [r0, 0x4] + cmp r4, 0x1 + beq _0814A364 + cmp r4, 0x1 + bgt _0814A324 + cmp r4, 0 + beq _0814A32A + b _0814A3A2 + .align 2, 0 +_0814A320: .4byte gUnknown_203F3D8 +_0814A324: + cmp r4, 0x2 + beq _0814A392 + b _0814A3A2 +_0814A32A: + movs r0, 0x7 + movs r1, 0xA + movs r2, 0x10 + movs r3, 0x2 + bl sub_814A754 + ldr r1, [r5] + strh r0, [r1, 0x12] + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0814A360 @ =gUnknown_841CC64 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + b _0814A388 + .align 2, 0 +_0814A360: .4byte gUnknown_841CC64 +_0814A364: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A3A2 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + bl sub_8003FA0 + ldr r0, [r5] + ldrb r0, [r0, 0x12] + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0 + bl sub_80020BC +_0814A388: + ldr r1, [r5] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A3A2 +_0814A392: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A3A2 + ldr r1, [r5] + movs r0, 0x1 + str r0, [r1] +_0814A3A2: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814A308 + + thumb_func_start sub_814A3AC +sub_814A3AC: @ 814A3AC + push {r4,r5,lr} + ldr r5, _0814A3C0 @ =gUnknown_203F3D8 + ldr r0, [r5] + ldrh r4, [r0, 0x4] + cmp r4, 0 + beq _0814A3C4 + cmp r4, 0x1 + beq _0814A3D2 + b _0814A3DE + .align 2, 0 +_0814A3C0: .4byte gUnknown_203F3D8 +_0814A3C4: + bl sub_814B43C + ldr r1, [r5] + ldrh r0, [r1, 0x4] + adds r0, 0x1 + strh r0, [r1, 0x4] + b _0814A3DE +_0814A3D2: + bl sub_814B460 + cmp r0, 0 + bne _0814A3DE + ldr r0, [r5] + str r4, [r0] +_0814A3DE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814A3AC + + thumb_func_start sub_814A3E4 +sub_814A3E4: @ 814A3E4 + push {lr} + ldr r1, _0814A404 @ =gUnknown_203F3D8 + ldr r0, [r1] + movs r2, 0 + strb r2, [r0, 0xA] + ldr r0, [r1] + strb r2, [r0, 0xB] + ldr r2, [r1] + movs r0, 0x6 + strb r0, [r2, 0xC] + ldr r0, [r1] + ldrb r0, [r0, 0xC] + bl sub_814A95C + pop {r0} + bx r0 + .align 2, 0 +_0814A404: .4byte gUnknown_203F3D8 + thumb_func_end sub_814A3E4 + + thumb_func_start sub_814A408 +sub_814A408: @ 814A408 + push {r4,lr} + ldr r0, _0814A41C @ =gUnknown_203F3D8 + ldr r2, [r0] + ldrb r3, [r2, 0xA] + adds r4, r0, 0 + cmp r3, 0 + beq _0814A420 + cmp r3, 0x1 + beq _0814A45A + b _0814A45E + .align 2, 0 +_0814A41C: .4byte gUnknown_203F3D8 +_0814A420: + ldrb r0, [r2, 0xB] + adds r0, 0x1 + strb r0, [r2, 0xB] + ldr r1, [r4] + ldrb r0, [r1, 0xB] + cmp r0, 0xA + bls _0814A44A + strb r3, [r1, 0xB] + ldr r0, [r4] + ldrb r1, [r0, 0xC] + adds r1, 0x1 + strb r1, [r0, 0xC] + ldr r1, [r4] + ldrb r0, [r1, 0xC] + cmp r0, 0x9 + bls _0814A44A + strb r3, [r1, 0xC] + ldr r1, [r4] + ldrb r0, [r1, 0xA] + adds r0, 0x1 + strb r0, [r1, 0xA] +_0814A44A: + ldr r0, [r4] + ldrb r0, [r0, 0xC] + bl sub_814A95C + ldr r0, [r4] + ldrb r0, [r0, 0xC] + cmp r0, 0x7 + bne _0814A45E +_0814A45A: + movs r0, 0 + b _0814A460 +_0814A45E: + movs r0, 0x1 +_0814A460: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814A408 + + thumb_func_start sub_814A468 +sub_814A468: @ 814A468 + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r5, _0814A52C @ =gUnknown_203F3D8 + ldr r1, [r5] + adds r1, 0x26 + adds r0, r4, 0 + bl sub_8099E90 + ldr r0, [r5] + adds r0, 0x66 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + subs r4, 0x85 + lsls r4, 16 + lsrs r4, 16 + cmp r4, 0x29 + bhi _0814A4C2 + cmp r6, 0x1 + bls _0814A4C2 + ldr r0, [r5] + adds r0, 0x26 + bl sub_8008E08 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _0814A4C2 + ldr r0, [r5] + adds r0, r1, r0 + adds r0, 0x25 + movs r1, 0xFF + strb r1, [r0] + ldr r0, [r5] + adds r0, 0x26 + ldr r1, _0814A530 @ =gUnknown_846D94C + bl sub_8008DA4 +_0814A4C2: + bl sub_813CC90 + ldr r4, _0814A52C @ =gUnknown_203F3D8 + ldr r1, [r4] + adds r1, 0x26 + movs r0, 0 + bl sub_813CCAC + ldr r1, [r4] + adds r1, 0x66 + movs r0, 0x1 + bl sub_813CCAC + ldr r0, [r4] + adds r0, 0xA6 + ldr r1, _0814A534 @ =gUnknown_841CBA9 + bl sub_813CCC8 + movs r0, 0x4 + movs r1, 0x8 + movs r2, 0x16 + movs r3, 0x4 + bl sub_814A754 + ldr r2, [r4] + movs r5, 0 + movs r3, 0 + strh r0, [r2, 0x12] + lsls r0, 24 + lsrs r0, 24 + adds r2, 0xA6 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r3, [sp, 0x8] + movs r1, 0x2 + bl sub_8002C48 + ldr r0, [r4] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r4] + ldr r0, _0814A538 @ =0x00000101 + strh r0, [r1, 0x14] + strb r5, [r1, 0xD] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814A52C: .4byte gUnknown_203F3D8 +_0814A530: .4byte gUnknown_846D94C +_0814A534: .4byte gUnknown_841CBA9 +_0814A538: .4byte 0x00000101 + thumb_func_end sub_814A468 + + thumb_func_start sub_814A53C +sub_814A53C: @ 814A53C + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0814A5AC @ =gUnknown_203F3D8 + ldr r1, [r4] + adds r1, 0x26 + bl sub_8099E90 + bl sub_813CC90 + ldr r1, [r4] + adds r1, 0x26 + movs r0, 0 + bl sub_813CCAC + ldr r0, [r4] + adds r0, 0xA6 + ldr r1, _0814A5B0 @ =gUnknown_841CBCA + bl sub_813CCC8 + movs r0, 0x4 + movs r1, 0x8 + movs r2, 0x16 + movs r3, 0x4 + bl sub_814A754 + ldr r2, [r4] + movs r6, 0 + movs r5, 0 + strh r0, [r2, 0x12] + lsls r0, 24 + lsrs r0, 24 + adds r2, 0xA6 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r4] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + strh r5, [r0, 0x14] + strb r6, [r0, 0xD] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814A5AC: .4byte gUnknown_203F3D8 +_0814A5B0: .4byte gUnknown_841CBCA + thumb_func_end sub_814A53C + + thumb_func_start sub_814A5B4 +sub_814A5B4: @ 814A5B4 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 16 + lsrs r0, 16 + ldr r4, _0814A624 @ =gUnknown_203F3D8 + ldr r1, [r4] + adds r1, 0x26 + bl sub_8099E90 + bl sub_813CC90 + ldr r1, [r4] + adds r1, 0x26 + movs r0, 0 + bl sub_813CCAC + ldr r0, [r4] + adds r0, 0xA6 + ldr r1, _0814A628 @ =gUnknown_841CBE4 + bl sub_813CCC8 + movs r0, 0x4 + movs r1, 0x9 + movs r2, 0x16 + movs r3, 0x2 + bl sub_814A754 + ldr r2, [r4] + movs r6, 0 + movs r5, 0 + strh r0, [r2, 0x12] + lsls r0, 24 + lsrs r0, 24 + adds r2, 0xA6 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r4] + ldrb r0, [r0, 0x12] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + strh r5, [r0, 0x14] + strb r6, [r0, 0xD] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814A624: .4byte gUnknown_203F3D8 +_0814A628: .4byte gUnknown_841CBE4 + thumb_func_end sub_814A5B4 + + thumb_func_start sub_814A62C +sub_814A62C: @ 814A62C + push {r4,lr} + ldr r4, _0814A644 @ =gUnknown_203F3D8 + ldr r0, [r4] + ldrb r0, [r0, 0xD] + cmp r0, 0x1 + beq _0814A680 + cmp r0, 0x1 + bgt _0814A648 + cmp r0, 0 + beq _0814A652 + b _0814A6C4 + .align 2, 0 +_0814A644: .4byte gUnknown_203F3D8 +_0814A648: + cmp r0, 0x2 + beq _0814A6A6 + cmp r0, 0x3 + beq _0814A6BA + b _0814A6C4 +_0814A652: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A6C4 + ldr r0, [r4] + ldrb r0, [r0, 0x12] + bl sub_8003FA0 + ldr r0, [r4] + ldrb r0, [r0, 0x12] + movs r1, 0x1 + movs r2, 0xE + bl sub_8150048 + movs r0, 0 + bl sub_80020BC + ldr r1, [r4] + ldrb r0, [r1, 0xD] + adds r0, 0x1 + strb r0, [r1, 0xD] + b _0814A6C4 +_0814A680: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A6C4 + ldr r1, [r4] + ldrh r0, [r1, 0x14] + cmp r0, 0 + bne _0814A698 + ldrb r0, [r1, 0xD] + adds r0, 0x2 + b _0814A6B8 +_0814A698: + ldrh r0, [r1, 0x14] + bl sub_8071C60 + ldr r1, [r4] + ldrb r0, [r1, 0xD] + adds r0, 0x1 + strb r0, [r1, 0xD] +_0814A6A6: + bl sub_8071C9C + lsls r0, 24 + cmp r0, 0 + beq _0814A6C4 + ldr r0, _0814A6C0 @ =gUnknown_203F3D8 + ldr r1, [r0] + ldrb r0, [r1, 0xD] + adds r0, 0x1 +_0814A6B8: + strb r0, [r1, 0xD] +_0814A6BA: + movs r0, 0 + b _0814A6C6 + .align 2, 0 +_0814A6C0: .4byte gUnknown_203F3D8 +_0814A6C4: + movs r0, 0x1 +_0814A6C6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814A62C + + thumb_func_start sub_814A6CC +sub_814A6CC: @ 814A6CC + push {r4,lr} + ldr r4, _0814A6F8 @ =gUnknown_203F3D8 + ldr r0, [r4] + ldrh r0, [r0, 0x12] + cmp r0, 0xFF + beq _0814A6F0 + lsls r0, 24 + lsrs r0, 24 + bl sub_815036C + ldr r0, [r4] + ldrb r0, [r0, 0x12] + movs r1, 0x1 + bl sub_8003F20 + ldr r1, [r4] + movs r0, 0 + strb r0, [r1, 0xD] +_0814A6F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814A6F8: .4byte gUnknown_203F3D8 + thumb_func_end sub_814A6CC + + thumb_func_start sub_814A6FC +sub_814A6FC: @ 814A6FC + push {r4,lr} + ldr r4, _0814A70C @ =gUnknown_203F3D8 + ldr r1, [r4] + ldrh r0, [r1, 0x12] + cmp r0, 0xFF + bne _0814A710 +_0814A708: + movs r0, 0 + b _0814A73C + .align 2, 0 +_0814A70C: .4byte gUnknown_203F3D8 +_0814A710: + ldrb r0, [r1, 0xD] + cmp r0, 0 + bne _0814A736 + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814A73A + ldr r0, [r4] + ldrb r0, [r0, 0x12] + bl sub_8003E3C + ldr r1, [r4] + movs r0, 0xFF + strh r0, [r1, 0x12] + ldrb r0, [r1, 0xD] + adds r0, 0x1 + strb r0, [r1, 0xD] + b _0814A708 +_0814A736: + cmp r0, 0x1 + beq _0814A708 +_0814A73A: + movs r0, 0x1 +_0814A73C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814A6FC + + thumb_func_start sub_814A744 +sub_814A744: @ 814A744 + push {lr} + bl sub_81100C8 + lsls r0, 24 + asrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_814A744 + + thumb_func_start sub_814A754 +sub_814A754: @ 814A754 + push {r4-r6,lr} + sub sp, 0x8 + ldr r6, _0814A7BC @ =0xffffff00 + ldr r4, [sp] + ands r4, r6 + lsls r0, 24 + lsrs r0, 16 + ldr r5, _0814A7C0 @ =0xffff00ff + ands r4, r5 + orrs r4, r0 + lsls r1, 24 + lsrs r1, 8 + ldr r0, _0814A7C4 @ =0xff00ffff + ands r4, r0 + orrs r4, r1 + lsls r2, 24 + ldr r0, _0814A7C8 @ =0x00ffffff + ands r4, r0 + orrs r4, r2 + str r4, [sp] + lsls r3, 24 + lsrs r3, 24 + ldr r0, [sp, 0x4] + ands r0, r6 + orrs r0, r3 + ands r0, r5 + movs r1, 0xF0 + lsls r1, 4 + orrs r0, r1 + ldr r1, _0814A7CC @ =0x0000ffff + ands r0, r1 + movs r1, 0x86 + lsls r1, 15 + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, sp + bl sub_8003CE4 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0x11 + bl sub_800445C + adds r0, r4, 0 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0814A7BC: .4byte 0xffffff00 +_0814A7C0: .4byte 0xffff00ff +_0814A7C4: .4byte 0xff00ffff +_0814A7C8: .4byte 0x00ffffff +_0814A7CC: .4byte 0x0000ffff + thumb_func_end sub_814A754 + + thumb_func_start sub_814A7D0 +sub_814A7D0: @ 814A7D0 + push {r4,r5,lr} + sub sp, 0x14 + lsls r2, 24 + lsrs r2, 24 + ldr r5, _0814A838 @ =0xffffff00 + ldr r3, [sp, 0xC] + ands r3, r5 + lsls r0, 24 + lsrs r0, 16 + ldr r4, _0814A83C @ =0xffff00ff + ands r3, r4 + orrs r3, r0 + lsls r1, 24 + lsrs r1, 8 + ldr r0, _0814A840 @ =0xff00ffff + ands r3, r0 + orrs r3, r1 + ldr r0, _0814A844 @ =0x00ffffff + ands r3, r0 + movs r0, 0xC0 + lsls r0, 19 + orrs r3, r0 + str r3, [sp, 0xC] + ldr r0, [sp, 0x10] + ands r0, r5 + movs r1, 0x4 + orrs r0, r1 + ands r0, r4 + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + ldr r1, _0814A848 @ =0x0000ffff + ands r0, r1 + movs r1, 0xAC + lsls r1, 14 + orrs r0, r1 + str r0, [sp, 0x10] + movs r0, 0xA + str r0, [sp] + movs r0, 0xD + str r0, [sp, 0x4] + str r2, [sp, 0x8] + add r0, sp, 0xC + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl sub_810FF60 + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A838: .4byte 0xffffff00 +_0814A83C: .4byte 0xffff00ff +_0814A840: .4byte 0xff00ffff +_0814A844: .4byte 0x00ffffff +_0814A848: .4byte 0x0000ffff + thumb_func_end sub_814A7D0 + + thumb_func_start sub_814A84C +sub_814A84C: @ 814A84C + push {r4,lr} + sub sp, 0x10 + ldr r1, _0814A8AC @ =gUnknown_846D950 + add r0, sp, 0xC + movs r2, 0x3 + bl memcpy + movs r0, 0 + bl sub_8003FA0 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + add r0, sp, 0xC + str r0, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r0, _0814A8B0 @ =gUnknown_841CB52 + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_812E51C + add r0, sp, 0xC + str r0, [sp] + str r4, [sp, 0x4] + ldr r0, _0814A8B4 @ =gUnknown_841CB5A + str r0, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_812E51C + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814A8AC: .4byte gUnknown_846D950 +_0814A8B0: .4byte gUnknown_841CB52 +_0814A8B4: .4byte gUnknown_841CB5A + thumb_func_end sub_814A84C + + thumb_func_start sub_814A8B8 +sub_814A8B8: @ 814A8B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + bl sub_81499A4 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + ldr r1, _0814A934 @ =gUnknown_846D9D4 + subs r0, 0x2 + lsls r0, 2 + adds r0, r1 + ldr r5, [r0] + movs r6, 0 + cmp r6, r10 + bge _0814A922 + ldr r0, _0814A938 @ =gUnknown_82349CC + mov r9, r0 + ldr r1, _0814A93C @ =gUnknown_203F3D8 + mov r8, r1 +_0814A8E6: + lsls r4, r6, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_81499C0 + adds r1, r0, 0 + ldrh r0, [r1] + lsls r0, 2 + add r0, r9 + ldrb r3, [r0, 0x1] + mov r2, r8 + ldr r0, [r2] + movs r7, 0 + ldrsh r2, [r5, r7] + adds r3, 0x70 + str r4, [sp] + bl sub_814ADCC + mov r1, r8 + ldr r0, [r1] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r2, 0x70 + adds r3, r4, 0 + bl sub_814B240 + adds r5, 0x2 + adds r6, 0x1 + cmp r6, r10 + blt _0814A8E6 +_0814A922: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814A934: .4byte gUnknown_846D9D4 +_0814A938: .4byte gUnknown_82349CC +_0814A93C: .4byte gUnknown_203F3D8 + thumb_func_end sub_814A8B8 + + thumb_func_start sub_814A940 +sub_814A940: @ 814A940 + ldr r2, _0814A954 @ =gUnknown_203F3D8 + ldr r2, [r2] + lsls r0, 2 + ldr r3, _0814A958 @ =0x000081a8 + adds r2, r3 + adds r2, r0 + ldr r0, [r2] + strh r1, [r0, 0x26] + bx lr + .align 2, 0 +_0814A954: .4byte gUnknown_203F3D8 +_0814A958: .4byte 0x000081a8 + thumb_func_end sub_814A940 + + thumb_func_start sub_814A95C +sub_814A95C: @ 814A95C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0814A984 @ =gUnknown_203F3D8 + ldr r0, [r0] + adds r1, r4, 0 + bl sub_814B348 + ldr r0, _0814A988 @ =gUnknown_846D953 + adds r4, r0 + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 13 + movs r0, 0x2 + movs r2, 0 + bl sub_8001D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814A984: .4byte gUnknown_203F3D8 +_0814A988: .4byte gUnknown_846D953 + thumb_func_end sub_814A95C + + thumb_func_start sub_814A98C +sub_814A98C: @ 814A98C + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + movs r6, 0 +_0814A996: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0814A9AA + ldr r0, _0814A9C4 @ =gUnknown_203F3D8 + ldr r0, [r0] + adds r1, r5, 0 + bl sub_814AF0C + adds r6, 0x1 +_0814A9AA: + lsrs r4, 1 + adds r5, 0x1 + cmp r5, 0x4 + ble _0814A996 + subs r0, r6, 0x2 + lsls r0, 24 + lsrs r0, 24 + bl sub_814ACCC + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0814A9C4: .4byte gUnknown_203F3D8 + thumb_func_end sub_814A98C + + thumb_func_start sub_814A9C8 +sub_814A9C8: @ 814A9C8 + push {r4,lr} + sub sp, 0x10 + mov r1, sp + movs r0, 0x40 + strb r0, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + movs r0, 0x8 + strb r0, [r1, 0x2] + movs r0, 0x6C + strh r0, [r1, 0x4] + movs r4, 0x6 + strh r4, [r1, 0x6] + ldr r0, _0814AA1C @ =gUnknown_846D960 + str r0, [sp, 0x8] + ldr r0, _0814AA20 @ =gUnknown_846D968 + str r0, [sp, 0xC] + movs r0, 0x2 + bl sub_815C980 + movs r0, 0 + movs r1, 0 + mov r2, sp + bl sub_815CA40 + mov r1, sp + movs r0, 0x4 + strb r0, [r1, 0x1] + movs r0, 0x1E + strh r0, [r1, 0x4] + mov r0, sp + strh r4, [r0, 0x6] + movs r0, 0x1 + movs r1, 0 + mov r2, sp + bl sub_815CA40 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814AA1C: .4byte gUnknown_846D960 +_0814AA20: .4byte gUnknown_846D968 + thumb_func_end sub_814A9C8 + + thumb_func_start sub_814AA24 +sub_814AA24: @ 814AA24 + push {lr} + adds r1, r0, 0 + movs r0, 0 + bl sub_815CD70 + pop {r0} + bx r0 + thumb_func_end sub_814AA24 + + thumb_func_start sub_814AA34 +sub_814AA34: @ 814AA34 + push {lr} + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1 + bl sub_815CD70 + pop {r0} + bx r0 + thumb_func_end sub_814AA34 + + thumb_func_start sub_814AA48 +sub_814AA48: @ 814AA48 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0814AA5C @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814AFE8 + pop {r0} + bx r0 + .align 2, 0 +_0814AA5C: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AA48 + + thumb_func_start sub_814AA60 +sub_814AA60: @ 814AA60 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0814AA74 @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814B080 + pop {r0} + bx r0 + .align 2, 0 +_0814AA74: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AA60 + + thumb_func_start sub_814AA78 +sub_814AA78: @ 814AA78 + push {lr} + adds r1, r0, 0 + ldr r0, _0814AA88 @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814B010 + pop {r1} + bx r1 + .align 2, 0 +_0814AA88: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AA78 + + thumb_func_start sub_814AA8C +sub_814AA8C: @ 814AA8C + push {lr} + ldr r0, _0814AA9C @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814B0A8 + pop {r0} + bx r0 + .align 2, 0 +_0814AA9C: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AA8C + + thumb_func_start sub_814AAA0 +sub_814AAA0: @ 814AAA0 + push {lr} + ldr r0, _0814AAB0 @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814B134 + pop {r0} + bx r0 + .align 2, 0 +_0814AAB0: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AAA0 + + thumb_func_start sub_814AAB4 +sub_814AAB4: @ 814AAB4 + push {lr} + adds r1, r0, 0 + ldr r0, _0814AAC4 @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814B168 + pop {r0} + bx r0 + .align 2, 0 +_0814AAC4: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AAB4 + + thumb_func_start sub_814AAC8 +sub_814AAC8: @ 814AAC8 + push {lr} + ldr r0, _0814AAD8 @ =gUnknown_203F3D8 + ldr r0, [r0] + bl sub_814B190 + pop {r1} + bx r1 + .align 2, 0 +_0814AAD8: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AAC8 + + thumb_func_start sub_814AADC +sub_814AADC: @ 814AADC + push {r4-r7,lr} + sub sp, 0x8 + bl sub_81499A4 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r1, _0814AB7C @ =gUnknown_846D9A8 + subs r0, r7, 0x2 + lsls r0, 2 + adds r0, r1 + ldr r4, [r0] + ldr r2, _0814AB80 @ =0xffffff00 + ldr r0, [sp] + ands r0, r2 + ldr r1, _0814AB84 @ =0x00ffffff + ands r0, r1 + movs r1, 0x80 + lsls r1, 20 + orrs r0, r1 + str r0, [sp] + ldr r0, [sp, 0x4] + ands r0, r2 + movs r1, 0x2 + orrs r0, r1 + ldr r1, _0814AB88 @ =0xffff00ff + ands r0, r1 + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + ldr r1, _0814AB8C @ =0x0000ffff + ands r0, r1 + movs r1, 0xAC + lsls r1, 14 + orrs r0, r1 + str r0, [sp, 0x4] + movs r5, 0 + cmp r5, r7 + bge _0814AB6C + mov r6, sp +_0814AB2A: + ldrb r0, [r4] + lsls r0, 8 + ldr r2, _0814AB88 @ =0xffff00ff + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldrb r2, [r4, 0x2] + lsls r2, 16 + ldr r0, _0814AB90 @ =0xff00ffff + ands r0, r1 + orrs r0, r2 + str r0, [sp] + mov r0, sp + bl sub_8003CE4 + ldr r1, _0814AB94 @ =gUnknown_203F3D8 + ldr r1, [r1] + lsls r2, r5, 1 + adds r1, 0x1C + adds r1, r2 + strh r0, [r1] + lsls r0, 24 + lsrs r0, 24 + bl sub_80040B8 + ldrh r0, [r6, 0x6] + adds r0, 0x10 + strh r0, [r6, 0x6] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r7 + blt _0814AB2A +_0814AB6C: + movs r0, 0 + bl sub_80020BC + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814AB7C: .4byte gUnknown_846D9A8 +_0814AB80: .4byte 0xffffff00 +_0814AB84: .4byte 0x00ffffff +_0814AB88: .4byte 0xffff00ff +_0814AB8C: .4byte 0x0000ffff +_0814AB90: .4byte 0xff00ffff +_0814AB94: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AADC + + thumb_func_start sub_814AB98 +sub_814AB98: @ 814AB98 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + adds r5, r0, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + add r0, sp, 0xC + strb r1, [r0] + strb r2, [r0, 0x1] + strb r3, [r0, 0x2] + ldr r6, _0814AC2C @ =gUnknown_203F3D8 + ldr r0, [r6] + lsls r1, r5, 1 + mov r8, r1 + adds r0, 0x1C + add r0, r8 + ldrb r0, [r0] + movs r1, 0 + bl sub_800445C + lsls r5, 24 + lsrs r5, 24 + adds r0, r5, 0 + bl sub_81499E0 + adds r1, r0, 0 + movs r2, 0x1 + negs r2, r2 + mov r9, r2 + movs r0, 0 + bl sub_8005ED4 + movs r4, 0x40 + subs r4, r0 + lsrs r4, 1 + adds r0, r5, 0 + bl sub_81499E0 + adds r1, r0, 0 + ldr r0, [r6] + adds r0, 0x1C + add r0, r8 + ldrb r0, [r0] + lsls r4, 24 + lsrs r4, 24 + add r2, sp, 0xC + str r2, [sp] + mov r2, r9 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + movs r1, 0 + adds r2, r4, 0 + movs r3, 0x2 + bl sub_812E51C + ldr r0, [r6] + adds r0, 0x1C + add r0, r8 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814AC2C: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AB98 + + thumb_func_start sub_814AC30 +sub_814AC30: @ 814AC30 + push {r4-r6,lr} + adds r4, r0, 0 + bl sub_81499A4 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r4, 0 + bne _0814AC5A + movs r4, 0 + cmp r4, r5 + bge _0814AC8C +_0814AC46: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_814AB98 + adds r4, 0x1 + cmp r4, r5 + blt _0814AC46 + b _0814AC8C +_0814AC5A: + bl sub_81499B4 + lsls r0, 16 + lsrs r6, r0, 16 + movs r4, 0 + cmp r4, r5 + bge _0814AC8C +_0814AC68: + cmp r6, r4 + beq _0814AC7A + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x3 + bl sub_814AB98 + b _0814AC86 +_0814AC7A: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x4 + movs r3, 0x5 + bl sub_814AB98 +_0814AC86: + adds r4, 0x1 + cmp r4, r5 + blt _0814AC68 +_0814AC8C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814AC30 + + thumb_func_start sub_814AC94 +sub_814AC94: @ 814AC94 + push {r4,r5,lr} + bl sub_81499A4 + lsls r0, 16 + lsrs r5, r0, 16 + movs r4, 0 + cmp r4, r5 + bge _0814ACBA +_0814ACA4: + ldr r0, _0814ACC8 @ =gUnknown_203F3D8 + ldr r0, [r0] + lsls r1, r4, 1 + adds r0, 0x1C + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + adds r4, 0x1 + cmp r4, r5 + blt _0814ACA4 +_0814ACBA: + movs r0, 0 + bl sub_80020BC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814ACC8: .4byte gUnknown_203F3D8 + thumb_func_end sub_814AC94 + + thumb_func_start sub_814ACCC +sub_814ACCC: @ 814ACCC + push {r4,lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, _0814AD10 @ =gUnknown_203F3D8 + ldr r2, [r0] + movs r0, 0 + str r0, [r2, 0x18] + lsrs r1, 25 + lsls r1, 16 + movs r0, 0x1 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + ands r4, r0 + lsls r4, 8 + subs r4, 0x28 + lsls r4, 8 + adds r1, r4, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + bl sub_80019BC + ldr r0, _0814AD14 @ =sub_814AD50 + movs r1, 0x4 + bl sub_807741C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814AD10: .4byte gUnknown_203F3D8 +_0814AD14: .4byte sub_814AD50 + thumb_func_end sub_814ACCC + + thumb_func_start sub_814AD18 +sub_814AD18: @ 814AD18 + push {r4,lr} + ldr r4, _0814AD28 @ =gUnknown_203F3D8 + ldr r0, [r4] + ldr r0, [r0, 0x18] + cmp r0, 0x1F + bls _0814AD2C + movs r0, 0 + b _0814AD4A + .align 2, 0 +_0814AD28: .4byte gUnknown_203F3D8 +_0814AD2C: + movs r0, 0x1 + movs r1, 0x80 + movs r2, 0x1 + bl sub_8001D08 + ldr r1, [r4] + ldr r0, [r1, 0x18] + adds r0, 0x1 + str r0, [r1, 0x18] + cmp r0, 0x1F + bls _0814AD48 + movs r0, 0x1 + bl sub_80019D0 +_0814AD48: + movs r0, 0x1 +_0814AD4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814AD18 + + thumb_func_start sub_814AD50 +sub_814AD50: @ 814AD50 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_814AD18 + cmp r0, 0 + bne _0814AD64 + adds r0, r4, 0 + bl sub_8077508 +_0814AD64: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_814AD50 + + thumb_func_start sub_814AD6C +sub_814AD6C: @ 814AD6C + push {r4-r6,lr} + adds r6, r0, 0 + movs r4, 0 + ldr r5, _0814ADAC @ =gUnknown_846E0B0 +_0814AD74: + adds r0, r5, 0 + bl sub_800EBCC + adds r5, 0x8 + adds r4, 0x1 + cmp r4, 0x4 + bls _0814AD74 + movs r4, 0 + ldr r5, _0814ADB0 @ =gUnknown_846E0D8 +_0814AD86: + adds r0, r5, 0 + bl sub_8008928 + adds r5, 0x8 + adds r4, 0x1 + cmp r4, 0x1 + bls _0814AD86 + movs r0, 0x5 + bl sub_80089E8 + strb r0, [r6, 0xE] + movs r0, 0x6 + bl sub_80089E8 + strb r0, [r6, 0xF] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814ADAC: .4byte gUnknown_846E0B0 +_0814ADB0: .4byte gUnknown_846E0D8 + thumb_func_end sub_814AD6C + + thumb_func_start sub_814ADB4 +sub_814ADB4: @ 814ADB4 + push {lr} + movs r2, 0 + movs r1, 0x7 + adds r0, 0x3C +_0814ADBC: + strh r2, [r0] + subs r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0814ADBC + pop {r0} + bx r0 + thumb_func_end sub_814ADB4 + + thumb_func_start sub_814ADCC +sub_814ADCC: @ 814ADCC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x34 + mov r9, r0 + adds r7, r1, 0 + ldr r0, [sp, 0x54] + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x28] + lsls r3, 16 + lsrs r3, 16 + str r3, [sp, 0x2C] + lsls r0, 24 + lsrs r6, r0, 24 + mov r1, sp + ldr r0, _0814AE20 @ =gUnknown_846E0E8 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + movs r0, 0x80 + lsls r0, 6 + bl sub_8002B9C + mov r8, r0 + movs r0, 0x80 + lsls r0, 4 + bl sub_8002B9C + mov r10, r0 + bl sub_81499B4 + lsls r0, 16 + lsrs r0, 16 + cmp r6, r0 + bne _0814AE24 + movs r0, 0x3 + b _0814AE2A + .align 2, 0 +_0814AE20: .4byte gUnknown_846E0E8 +_0814AE24: + adds r0, r6, 0x4 + lsls r0, 24 + lsrs r0, 24 +_0814AE2A: + str r0, [sp, 0x30] + mov r1, r8 + cmp r1, 0 + beq _0814AEEC + mov r2, r10 + cmp r2, 0 + beq _0814AEEC + ldrh r2, [r7] + lsls r0, r2, 3 + ldr r1, _0814AED8 @ =gUnknown_82350AC + adds r0, r1 + ldr r3, [r7, 0x8] + mov r1, r8 + bl sub_800ECC4 + mov r3, r8 + str r3, [sp, 0x18] + adds r4, r6, 0 + add r0, sp, 0x18 + ldr r5, _0814AEDC @ =0xffff0000 + lsls r1, r4, 16 + movs r2, 0x80 + lsls r2, 4 + orrs r1, r2 + str r1, [r0, 0x4] + bl sub_80086DC + ldrh r0, [r7] + ldr r1, [r7, 0x4] + ldr r2, [r7, 0x8] + bl sub_80440F4 + str r0, [sp, 0x20] + add r0, sp, 0x20 + ldr r1, [r0, 0x4] + ands r1, r5 + orrs r1, r4 + str r1, [r0, 0x4] + bl sub_800EC28 + mov r0, r8 + bl sub_8002BC4 + mov r0, r10 + bl sub_8002BC4 + mov r1, sp + mov r0, sp + ldrh r0, [r0] + adds r0, r6 + strh r0, [r1] + mov r0, sp + ldrh r0, [r0, 0x2] + adds r0, r6 + strh r0, [r1, 0x2] + ldr r4, [sp, 0x28] + lsls r1, r4, 16 + asrs r1, 16 + ldr r0, [sp, 0x2C] + lsls r2, r0, 16 + asrs r2, 16 + mov r0, sp + ldr r3, [sp, 0x30] + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0814AEEC + lsls r0, r6, 2 + ldr r2, _0814AEE0 @ =0x000081a8 + add r2, r9 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0814AEE4 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + ldr r0, _0814AEE8 @ =0x000081fc + add r0, r9 + adds r0, r6 + add r1, sp, 0x30 + ldrb r1, [r1] + strb r1, [r0] + b _0814AEF8 + .align 2, 0 +_0814AED8: .4byte gUnknown_82350AC +_0814AEDC: .4byte 0xffff0000 +_0814AEE0: .4byte 0x000081a8 +_0814AEE4: .4byte gUnknown_202063C +_0814AEE8: .4byte 0x000081fc +_0814AEEC: + lsls r0, r6, 2 + ldr r1, _0814AF08 @ =0x000081a8 + add r1, r9 + adds r1, r0 + movs r0, 0 + str r0, [r1] +_0814AEF8: + add sp, 0x34 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814AF08: .4byte 0x000081a8 + thumb_func_end sub_814ADCC + + thumb_func_start sub_814AF0C +sub_814AF0C: @ 814AF0C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r6, r1, 2 + ldr r0, _0814AF64 @ =0x000081bc + adds r5, r4, r0 + adds r5, r6 + ldr r0, [r5] + bl sub_814ADB4 + ldr r2, [r5] + ldr r0, _0814AF68 @ =0x000081a8 + adds r4, r0 + adds r4, r6 + ldr r1, [r4] + ldr r0, _0814AF6C @ =gUnknown_202063C + subs r1, r0 + lsls r0, r1, 4 + subs r0, r1 + lsls r1, r0, 8 + adds r0, r1 + lsls r1, r0, 16 + adds r0, r1 + negs r0, r0 + asrs r0, 2 + strh r0, [r2, 0x3C] + ldr r1, [r5] + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r5] + movs r0, 0x60 + strh r0, [r1, 0x22] + ldr r0, [r5] + ldr r1, _0814AF70 @ =sub_814AF74 + str r1, [r0, 0x1C] + movs r1, 0x1 + bl sub_800838C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814AF64: .4byte 0x000081bc +_0814AF68: .4byte 0x000081a8 +_0814AF6C: .4byte gUnknown_202063C +_0814AF70: .4byte sub_814AF74 + thumb_func_end sub_814AF0C + + thumb_func_start sub_814AF74 +sub_814AF74: @ 814AF74 + push {lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + beq _0814AFA0 + cmp r0, 0x1 + bgt _0814AF8A + cmp r0, 0 + beq _0814AF90 + b _0814AFDE +_0814AF8A: + cmp r0, 0x2 + beq _0814AFC0 + b _0814AFDE +_0814AF90: + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0814AFDE + b _0814AFCE +_0814AFA0: + ldrh r1, [r2, 0x22] + subs r1, 0x1 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x48 + bgt _0814AFDE + movs r0, 0x48 + strh r0, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + b _0814AFDE +_0814AFC0: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2F + ble _0814AFDE +_0814AFCE: + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldr r0, _0814AFE4 @ =nullsub_8 + str r0, [r2, 0x1C] +_0814AFDE: + pop {r0} + bx r0 + .align 2, 0 +_0814AFE4: .4byte nullsub_8 + thumb_func_end sub_814AF74 + + thumb_func_start sub_814AFE8 +sub_814AFE8: @ 814AFE8 + push {lr} + lsls r1, 2 + ldr r2, _0814B008 @ =0x000081a8 + adds r0, r2 + adds r0, r1 + ldr r2, [r0] + ldr r1, _0814B00C @ =sub_814B038 + str r1, [r2, 0x1C] + movs r1, 0 + strh r1, [r2, 0x26] + ldr r0, [r0] + bl sub_814ADB4 + pop {r0} + bx r0 + .align 2, 0 +_0814B008: .4byte 0x000081a8 +_0814B00C: .4byte sub_814B038 + thumb_func_end sub_814AFE8 + + thumb_func_start sub_814B010 +sub_814B010: @ 814B010 + push {lr} + movs r2, 0 + lsls r1, 2 + ldr r3, _0814B030 @ =0x000081a8 + adds r0, r3 + adds r0, r1 + ldr r0, [r0] + ldr r1, [r0, 0x1C] + ldr r0, _0814B034 @ =sub_814B038 + cmp r1, r0 + bne _0814B028 + movs r2, 0x1 +_0814B028: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_0814B030: .4byte 0x000081a8 +_0814B034: .4byte sub_814B038 + thumb_func_end sub_814B010 + + thumb_func_start sub_814B038 +sub_814B038: @ 814B038 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _0814B064 + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0814B05C + movs r0, 0x2 + b _0814B05E +_0814B05C: + ldr r0, _0814B078 @ =0x0000fffe +_0814B05E: + strh r0, [r2, 0x26] + movs r0, 0 + strh r0, [r2, 0x30] +_0814B064: + movs r1, 0x32 + ldrsh r0, [r2, r1] + cmp r0, 0xC + ble _0814B074 + movs r0, 0 + strh r0, [r2, 0x26] + ldr r0, _0814B07C @ =nullsub_8 + str r0, [r2, 0x1C] +_0814B074: + pop {r0} + bx r0 + .align 2, 0 +_0814B078: .4byte 0x0000fffe +_0814B07C: .4byte nullsub_8 + thumb_func_end sub_814B038 + + thumb_func_start sub_814B080 +sub_814B080: @ 814B080 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 2 + ldr r0, _0814B0A0 @ =0x000081a8 + adds r4, r0 + adds r4, r1 + ldr r0, [r4] + bl sub_814ADB4 + ldr r1, [r4] + ldr r0, _0814B0A4 @ =sub_814B100 + str r0, [r1, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B0A0: .4byte 0x000081a8 +_0814B0A4: .4byte sub_814B100 + thumb_func_end sub_814B080 + + thumb_func_start sub_814B0A8 +sub_814B0A8: @ 814B0A8 + push {r4-r7,lr} + adds r4, r0, 0 + bl sub_81499A4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _0814B0EC + movs r1, 0x5 + negs r1, r1 + mov r12, r1 + ldr r1, _0814B0F4 @ =0x000081a8 + adds r3, r4, r1 + ldr r7, _0814B0F8 @ =sub_814B100 + ldr r6, _0814B0FC @ =nullsub_8 + movs r5, 0xA + adds r4, r0, 0 +_0814B0CA: + ldr r2, [r3] + ldr r0, [r2, 0x1C] + cmp r0, r7 + bne _0814B0E4 + adds r2, 0x3E + ldrb r1, [r2] + mov r0, r12 + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + str r6, [r0, 0x1C] + adds r0, 0x43 + strb r5, [r0] +_0814B0E4: + adds r3, 0x4 + subs r4, 0x1 + cmp r4, 0 + bne _0814B0CA +_0814B0EC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B0F4: .4byte 0x000081a8 +_0814B0F8: .4byte sub_814B100 +_0814B0FC: .4byte nullsub_8 + thumb_func_end sub_814B0A8 + + thumb_func_start sub_814B100 +sub_814B100: @ 814B100 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _0814B12E + movs r0, 0 + strh r0, [r3, 0x2E] + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0814B12E: + pop {r0} + bx r0 + thumb_func_end sub_814B100 + + thumb_func_start sub_814B134 +sub_814B134: @ 814B134 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_81499A4 + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + cmp r2, r3 + bge _0814B15E + ldr r0, _0814B164 @ =0x000081fc + adds r5, r4, r0 + subs r0, 0x54 + adds r4, r0 +_0814B14E: + ldm r4!, {r0} + adds r1, r5, r2 + ldrb r1, [r1] + adds r0, 0x43 + strb r1, [r0] + adds r2, 0x1 + cmp r2, r3 + blt _0814B14E +_0814B15E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814B164: .4byte 0x000081fc + thumb_func_end sub_814B134 + + thumb_func_start sub_814B168 +sub_814B168: @ 814B168 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 2 + ldr r0, _0814B188 @ =0x000081a8 + adds r4, r0 + adds r4, r1 + ldr r0, [r4] + bl sub_814ADB4 + ldr r1, [r4] + ldr r0, _0814B18C @ =sub_814B1CC + str r0, [r1, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B188: .4byte 0x000081a8 +_0814B18C: .4byte sub_814B1CC + thumb_func_end sub_814B168 + + thumb_func_start sub_814B190 +sub_814B190: @ 814B190 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_81499A4 + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + cmp r2, r3 + bge _0814B1C4 + ldr r5, _0814B1B4 @ =sub_814B1CC + ldr r0, _0814B1B8 @ =0x000081a8 + adds r1, r4, r0 +_0814B1A8: + ldr r0, [r1] + ldr r0, [r0, 0x1C] + cmp r0, r5 + bne _0814B1BC + movs r0, 0x1 + b _0814B1C6 + .align 2, 0 +_0814B1B4: .4byte sub_814B1CC +_0814B1B8: .4byte 0x000081a8 +_0814B1BC: + adds r1, 0x4 + adds r2, 0x1 + cmp r2, r3 + blt _0814B1A8 +_0814B1C4: + movs r0, 0 +_0814B1C6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814B190 + + thumb_func_start sub_814B1CC +sub_814B1CC: @ 814B1CC + push {r4,r5,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r4, [r5, r0] + cmp r4, 0 + beq _0814B1DE + cmp r4, 0x1 + beq _0814B1EC + b _0814B234 +_0814B1DE: + movs r0, 0x1C + bl sub_80722CC + strh r4, [r5, 0x30] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] +_0814B1EC: + ldrh r0, [r5, 0x30] + adds r0, 0x4 + strh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + ble _0814B1FE + movs r0, 0 + strh r0, [r5, 0x30] +_0814B1FE: + ldr r1, _0814B22C @ =gUnknown_825E074 + movs r2, 0x30 + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 19 + negs r0, r0 + strh r0, [r5, 0x26] + movs r0, 0x30 + ldrsh r1, [r5, r0] + cmp r1, 0 + bne _0814B234 + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bgt _0814B230 + strh r1, [r5, 0x2E] + b _0814B234 + .align 2, 0 +_0814B22C: .4byte gUnknown_825E074 +_0814B230: + ldr r0, _0814B23C @ =nullsub_8 + str r0, [r5, 0x1C] +_0814B234: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814B23C: .4byte nullsub_8 + thumb_func_end sub_814B1CC + + thumb_func_start sub_814B240 +sub_814B240: @ 814B240 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r3, 24 + lsrs r4, r3, 24 + ldr r0, _0814B288 @ =gUnknown_846E2B4 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x1 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _0814B280 + ldr r0, _0814B28C @ =gUnknown_202063C + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r3] + lsls r2, r4, 2 + ldr r3, _0814B290 @ =0x000081bc + adds r0, r5, r3 + adds r0, r2 + str r1, [r0] +_0814B280: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814B288: .4byte gUnknown_846E2B4 +_0814B28C: .4byte gUnknown_202063C +_0814B290: .4byte 0x000081bc + thumb_func_end sub_814B240 + + thumb_func_start sub_814B294 +sub_814B294: @ 814B294 + push {r4-r7,lr} + adds r7, r0, 0 + movs r5, 0 + movs r4, 0 + ldr r6, _0814B334 @ =gUnknown_846E100 +_0814B29E: + ldr r1, _0814B338 @ =gUnknown_846E160 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + ldr r2, _0814B33C @ =gUnknown_846E150 + lsls r1, r5, 1 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r6, r3] + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r5, 2 + ldr r3, _0814B340 @ =0x000081d0 + adds r2, r7, r3 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0814B344 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + adds r5, 0x1 + adds r6, 0x14 + adds r4, 0x1 + cmp r4, 0x3 + ble _0814B29E + movs r4, 0x3 + movs r6, 0x3C +_0814B2E0: + ldr r1, _0814B338 @ =gUnknown_846E160 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + ldr r2, _0814B33C @ =gUnknown_846E150 + lsls r1, r5, 1 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + ldr r2, _0814B334 @ =gUnknown_846E100 + adds r2, r6, r2 + movs r3, 0 + ldrsh r2, [r2, r3] + movs r3, 0x2 + bl sub_8006F8C + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r5, 2 + ldr r3, _0814B340 @ =0x000081d0 + adds r2, r7, r3 + adds r2, r0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0814B344 @ =gUnknown_202063C + adds r0, r1 + str r0, [r2] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + adds r5, 0x1 + subs r6, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _0814B2E0 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B334: .4byte gUnknown_846E100 +_0814B338: .4byte gUnknown_846E160 +_0814B33C: .4byte gUnknown_846E150 +_0814B340: .4byte 0x000081d0 +_0814B344: .4byte gUnknown_202063C + thumb_func_end sub_814B294 + + thumb_func_start sub_814B348 +sub_814B348: @ 814B348 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + str r0, [sp, 0x8] + cmp r1, 0x5 + ble _0814B368 + movs r0, 0xA + subs r1, r0, r1 + movs r0, 0x3 + str r0, [sp] + ldr r2, [sp, 0x8] + ldrb r0, [r2, 0xF] + b _0814B370 +_0814B368: + movs r3, 0x2 + str r3, [sp] + ldr r7, [sp, 0x8] + ldrb r0, [r7, 0xE] +_0814B370: + movs r6, 0 + lsls r2, r1, 1 + str r2, [sp, 0x4] + lsls r0, 4 + mov r9, r0 + lsls r1, 24 + mov r8, r1 + ldr r0, _0814B434 @ =gUnknown_846E100 + adds r4, r2, r0 + ldr r3, [sp] + lsls r3, 2 + mov r10, r3 + movs r5, 0x3 +_0814B38A: + lsls r0, r6, 2 + ldr r7, [sp, 0x8] + ldr r1, _0814B438 @ =0x000081d0 + adds r2, r7, r1 + adds r2, r0 + ldr r1, [r2] + ldrh r0, [r4] + strh r0, [r1, 0x22] + ldr r3, [r2] + ldrb r0, [r3, 0x5] + movs r7, 0xD + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + mov r1, r10 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r3, [r2] + ldrb r1, [r3, 0x5] + movs r0, 0xF + ands r0, r1 + mov r7, r9 + orrs r0, r7 + strb r0, [r3, 0x5] + ldr r0, [r2] + mov r2, r8 + lsrs r1, r2, 24 + bl sub_800838C + adds r6, 0x1 + adds r4, 0x14 + subs r5, 0x1 + cmp r5, 0 + bge _0814B38A + movs r5, 0x3 + ldr r0, _0814B434 @ =gUnknown_846E100 + ldr r3, [sp, 0x4] + adds r0, r3, r0 + adds r4, r0, 0 + adds r4, 0x3C + ldr r7, [sp] + lsls r7, 2 + mov r10, r7 +_0814B3E0: + lsls r0, r6, 2 + ldr r1, [sp, 0x8] + ldr r3, _0814B438 @ =0x000081d0 + adds r2, r1, r3 + adds r2, r0 + ldr r1, [r2] + ldrh r0, [r4] + strh r0, [r1, 0x22] + ldr r3, [r2] + ldrb r0, [r3, 0x5] + movs r7, 0xD + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + mov r1, r10 + orrs r0, r1 + strb r0, [r3, 0x5] + ldr r3, [r2] + ldrb r1, [r3, 0x5] + movs r0, 0xF + ands r0, r1 + mov r7, r9 + orrs r0, r7 + strb r0, [r3, 0x5] + ldr r0, [r2] + mov r2, r8 + lsrs r1, r2, 24 + bl sub_800838C + adds r6, 0x1 + subs r4, 0x14 + subs r5, 0x1 + cmp r5, 0 + bge _0814B3E0 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B434: .4byte gUnknown_846E100 +_0814B438: .4byte 0x000081d0 + thumb_func_end sub_814B348 + + thumb_func_start sub_814B43C +sub_814B43C: @ 814B43C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r0, 0 + str r0, [sp] + movs r0, 0x9 + movs r1, 0x7 + movs r2, 0x78 + movs r3, 0x50 + bl sub_815F138 + adds r0, r4, 0 + bl sub_814B134 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_814B43C + + thumb_func_start sub_814B460 +sub_814B460: @ 814B460 + push {lr} + bl sub_815F198 + pop {r1} + bx r1 + thumb_func_end sub_814B460 + + thumb_func_start sub_814B46C +sub_814B46C: @ 814B46C + ldr r0, _0814B478 @ =gUnknown_300500C + ldr r0, [r0] + movs r1, 0xB0 + lsls r1, 4 + adds r0, r1 + bx lr + .align 2, 0 +_0814B478: .4byte gUnknown_300500C + thumb_func_end sub_814B46C + + thumb_func_start sub_814B47C +sub_814B47C: @ 814B47C + push {lr} + bl sub_814B46C + movs r1, 0 + strh r1, [r0] + str r1, [r0, 0xC] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + str r1, [r0, 0x8] + strh r1, [r0, 0x2] + pop {r0} + bx r0 + thumb_func_end sub_814B47C + + thumb_func_start sub_814B494 +sub_814B494: @ 814B494 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + bl sub_814B46C + adds r1, r0, 0 + movs r2, 0 + ldr r0, [r1, 0xC] + cmp r0, r4 + bcs _0814B4B8 + ldr r0, _0814B4E0 @ =0x00018696 + cmp r4, r0 + bhi _0814B4B8 + str r4, [r1, 0xC] + movs r2, 0x1 +_0814B4B8: + ldrh r0, [r1] + cmp r0, r5 + bcs _0814B4C8 + ldr r0, _0814B4E4 @ =0x0000270f + cmp r5, r0 + bhi _0814B4C8 + strh r5, [r1] + movs r2, 0x1 +_0814B4C8: + ldrh r0, [r1, 0x4] + cmp r0, r6 + bcs _0814B4D8 + ldr r0, _0814B4E4 @ =0x0000270f + cmp r6, r0 + bhi _0814B4D8 + strh r6, [r1, 0x4] + movs r2, 0x1 +_0814B4D8: + adds r0, r2, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0814B4E0: .4byte 0x00018696 +_0814B4E4: .4byte 0x0000270f + thumb_func_end sub_814B494 + + thumb_func_start sub_814B4E8 +sub_814B4E8: @ 814B4E8 + push {lr} + bl sub_814B46C + adds r2, r0, 0 + ldrh r1, [r2, 0x6] + ldr r0, _0814B500 @ =0x0000270e + cmp r1, r0 + bhi _0814B4FC + adds r0, r1, 0x1 + strh r0, [r2, 0x6] +_0814B4FC: + pop {r0} + bx r0 + .align 2, 0 +_0814B500: .4byte 0x0000270e + thumb_func_end sub_814B4E8 + + thumb_func_start sub_814B504 +sub_814B504: @ 814B504 + push {r4,lr} + ldr r4, _0814B520 @ =sub_814B524 + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B520: .4byte sub_814B524 + thumb_func_end sub_814B504 + + thumb_func_start sub_814B524 +sub_814B524: @ 814B524 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0814B548 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0814B570 + cmp r0, 0x1 + bgt _0814B54C + cmp r0, 0 + beq _0814B556 + b _0814B5BE + .align 2, 0 +_0814B548: .4byte gUnknown_3005098 +_0814B54C: + cmp r0, 0x2 + beq _0814B57C + cmp r0, 0x3 + beq _0814B5A4 + b _0814B5BE +_0814B556: + ldr r0, _0814B56C @ =gUnknown_846E2CC + bl sub_8003CE4 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x2] + bl sub_814B5C4 + ldrb r0, [r4, 0x2] + movs r1, 0x3 + b _0814B592 + .align 2, 0 +_0814B56C: .4byte gUnknown_846E2CC +_0814B570: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814B5BE + b _0814B596 +_0814B57C: + ldr r0, _0814B5A0 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0814B5BE + ldrb r0, [r4, 0x2] + bl sub_815036C + ldrb r0, [r4, 0x2] + movs r1, 0x1 +_0814B592: + bl sub_8003F20 +_0814B596: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0814B5BE + .align 2, 0 +_0814B5A0: .4byte gUnknown_30030F0 +_0814B5A4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814B5BE + ldrb r0, [r4, 0x2] + bl sub_8003E3C + adds r0, r5, 0 + bl sub_8077508 + bl sub_8069B34 +_0814B5BE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814B524 + + thumb_func_start sub_814B5C4 +sub_814B5C4: @ 814B5C4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x28] + bl sub_814B46C + ldrh r1, [r0] + str r1, [sp, 0x14] + ldr r1, [r0, 0xC] + str r1, [sp, 0x18] + ldrh r0, [r0, 0x4] + str r0, [sp, 0x1C] + ldr r0, [sp, 0x28] + lsls r4, r0, 24 + lsrs r4, 24 + ldr r5, _0814B6C8 @ =0x0000021d + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0xD0 + bl sub_814FF2C + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0xD + bl sub_8150048 + adds r0, r4, 0 + movs r1, 0x11 + bl sub_800445C + ldr r2, _0814B6CC @ =gUnknown_841CB63 + movs r1, 0 + str r1, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r1, [sp, 0x8] + movs r0, 0x1 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + adds r0, r4, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_812E62C + movs r7, 0 + mov r8, r4 + movs r1, 0xFF + mov r10, r1 + movs r6, 0 + mov r0, sp + adds r0, 0x14 + str r0, [sp, 0x2C] + movs r1, 0xA0 + lsls r1, 21 + mov r9, r1 + add r5, sp, 0x20 +_0814B63E: + ldr r1, _0814B6D0 @ =gUnknown_846E2D4 + lsls r0, r7, 2 + adds r0, r1 + ldr r2, [r0] + mov r0, r9 + lsrs r4, r0, 24 + str r4, [sp] + mov r1, r10 + str r1, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + str r0, [sp, 0xC] + str r6, [sp, 0x10] + mov r0, r8 + movs r1, 0x2 + movs r3, 0 + bl sub_812E62C + ldr r0, [sp, 0x2C] + ldm r0!, {r1} + str r0, [sp, 0x2C] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x5 + bl sub_8008E78 + adds r0, r5, 0 + bl sub_814B6D4 + movs r0, 0x2 + adds r1, r5, 0 + movs r2, 0 + bl sub_8005ED4 + movs r3, 0xDE + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + str r4, [sp] + mov r1, r10 + str r1, [sp, 0x4] + str r6, [sp, 0x8] + str r6, [sp, 0xC] + str r6, [sp, 0x10] + mov r0, r8 + movs r1, 0x2 + adds r2, r5, 0 + bl sub_812E62C + movs r0, 0xE0 + lsls r0, 20 + add r9, r0 + adds r7, 0x1 + ldr r1, [sp, 0x28] + lsls r0, r1, 24 + cmp r7, 0x2 + bls _0814B63E + lsrs r0, 24 + bl sub_8003FA0 + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B6C8: .4byte 0x0000021d +_0814B6CC: .4byte gUnknown_841CB63 +_0814B6D0: .4byte gUnknown_846E2D4 + thumb_func_end sub_814B5C4 + + thumb_func_start sub_814B6D4 +sub_814B6D4: @ 814B6D4 + push {lr} + adds r1, r0, 0 + b _0814B6DC +_0814B6DA: + adds r1, 0x1 +_0814B6DC: + ldrb r0, [r1] + cmp r0, 0xFF + beq _0814B6EA + cmp r0, 0 + bne _0814B6DA + movs r0, 0xFF + strb r0, [r1] +_0814B6EA: + pop {r0} + bx r0 + thumb_func_end sub_814B6D4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_814B6F0.s b/asm/unk_814B6F0.s new file mode 100644 index 000000000..6cf57f479 --- /dev/null +++ b/asm/unk_814B6F0.s @@ -0,0 +1,580 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814B6F0 +sub_814B6F0: @ 814B6F0 + ldr r0, _0814B6F8 @ =gUnknown_203F3DC + ldr r0, [r0] + bx lr + .align 2, 0 +_0814B6F8: .4byte gUnknown_203F3DC + thumb_func_end sub_814B6F0 + + thumb_func_start sub_814B6FC +sub_814B6FC: @ 814B6FC + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _0814B70C @ =gUnknown_203F3DC + ldr r0, [r5] + cmp r0, 0 + bne _0814B710 + movs r0, 0x2 + b _0814B740 + .align 2, 0 +_0814B70C: .4byte gUnknown_203F3DC +_0814B710: + cmp r4, 0 + bne _0814B716 + ldr r4, [r0] +_0814B716: + ldrb r0, [r0, 0xA] + bl sub_8077508 + ldr r0, [r5] + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] + adds r0, r4, 0 + bl sub_8000544 + ldr r0, _0814B748 @ =sub_80567DC + cmp r4, r0 + bne _0814B73E + ldr r0, _0814B74C @ =0x0000012f + bl sub_8071A74 + ldr r0, _0814B750 @ =sub_8056534 + bl sub_80565E0 +_0814B73E: + movs r0, 0 +_0814B740: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0814B748: .4byte sub_80567DC +_0814B74C: .4byte 0x0000012f +_0814B750: .4byte sub_8056534 + thumb_func_end sub_814B6FC + + thumb_func_start sub_814B754 +sub_814B754: @ 814B754 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + adds r4, r0, 0 + movs r0, 0 + mov r8, r0 + ldr r0, _0814B784 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _0814B772 + ldr r0, _0814B788 @ =gUnknown_3003F3C + ldrb r0, [r0] + cmp r0, 0 + bne _0814B790 +_0814B772: + adds r0, r4, 0 + bl sub_8000544 + ldr r0, _0814B78C @ =gUnknown_3005450 + mov r1, r8 + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + b _0814B7DC + .align 2, 0 +_0814B784: .4byte gUnknown_3003F64 +_0814B788: .4byte gUnknown_3003F3C +_0814B78C: .4byte gUnknown_3005450 +_0814B790: + bl sub_800A088 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + bl sub_800A404 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r8 + cmp r0, 0x1 + bls _0814B7AC + cmp r7, r8 + bcc _0814B7C0 +_0814B7AC: + adds r0, r4, 0 + bl sub_8000544 + ldr r0, _0814B7BC @ =gUnknown_3005450 + movs r1, 0 + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + b _0814B7DC + .align 2, 0 +_0814B7BC: .4byte gUnknown_3005450 +_0814B7C0: + ldr r6, _0814B7E8 @ =gUnknown_203F3DC + ldr r0, _0814B7EC @ =0x000041c0 + bl sub_8002BB0 + adds r5, r0, 0 + str r5, [r6] + cmp r5, 0 + bne _0814B7F4 + adds r0, r4, 0 + bl sub_8000544 + ldr r0, _0814B7F0 @ =gUnknown_3005450 + strh r5, [r0, 0x10] + strh r5, [r0, 0x12] +_0814B7DC: + adds r0, 0xEE + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] + b _0814B84C + .align 2, 0 +_0814B7E8: .4byte gUnknown_203F3DC +_0814B7EC: .4byte 0x000041c0 +_0814B7F0: .4byte gUnknown_3005450 +_0814B7F4: + str r4, [r5] + movs r4, 0 + strb r7, [r5, 0x8] + ldr r0, [r6] + mov r1, r8 + strb r1, [r0, 0x9] + ldr r0, [r6] + bl sub_814BABC + ldr r1, [r6] + movs r2, 0x1 + movs r0, 0x1 + strh r0, [r1, 0x12] + strb r2, [r1, 0xE] + ldr r1, [r6] + movs r0, 0x6 + strb r0, [r1, 0xF] + ldr r0, [r6] + adds r0, 0x36 + movs r2, 0x1 + negs r2, r2 + movs r1, 0x10 + str r1, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x1 + movs r3, 0 + bl sub_814D564 + ldr r2, [r6] + adds r2, 0x36 + movs r0, 0x4 + movs r1, 0x1 + bl sub_814BB4C + ldr r0, _0814B858 @ =sub_814BA80 + bl sub_8000544 + ldr r0, _0814B85C @ =sub_814BA98 + movs r1, 0x8 + bl sub_807741C + ldr r1, [r6] + strb r0, [r1, 0xA] +_0814B84C: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B858: .4byte sub_814BA80 +_0814B85C: .4byte sub_814BA98 + thumb_func_end sub_814B754 + + thumb_func_start sub_814B860 +sub_814B860: @ 814B860 + push {r4,lr} + sub sp, 0xC + ldr r1, _0814B878 @ =gUnknown_203AD30 + ldrh r0, [r1] + subs r0, 0x85 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2B + bls _0814B87C + movs r0, 0x85 + strh r0, [r1] + b _0814B884 + .align 2, 0 +_0814B878: .4byte gUnknown_203AD30 +_0814B87C: + ldrh r0, [r1] + movs r1, 0x1 + bl sub_809A1D8 +_0814B884: + ldr r4, _0814B8E0 @ =gUnknown_203F3DC + ldr r2, [r4] + ldrb r0, [r2, 0x8] + lsls r0, 5 + adds r0, r2, r0 + ldr r1, _0814B8E4 @ =gUnknown_203AD30 + ldrh r1, [r1] + subs r1, 0x85 + adds r0, 0xA4 + movs r3, 0 + strh r1, [r0] + movs r0, 0x1 + strb r0, [r2, 0xE] + ldr r1, [r4] + movs r0, 0x9 + strb r0, [r1, 0xF] + ldr r0, [r4] + adds r0, 0x36 + movs r2, 0x1 + negs r2, r2 + movs r1, 0x10 + str r1, [sp] + str r3, [sp, 0x4] + str r3, [sp, 0x8] + movs r1, 0 + bl sub_814D564 + ldr r2, [r4] + adds r2, 0x36 + movs r0, 0x4 + movs r1, 0x1 + bl sub_814BB4C + ldr r0, _0814B8E8 @ =sub_814BA98 + movs r1, 0x8 + bl sub_807741C + ldr r1, [r4] + strb r0, [r1, 0xA] + ldr r0, _0814B8EC @ =sub_814BA80 + bl sub_8000544 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B8E0: .4byte gUnknown_203F3DC +_0814B8E4: .4byte gUnknown_203AD30 +_0814B8E8: .4byte sub_814BA98 +_0814B8EC: .4byte sub_814BA80 + thumb_func_end sub_814B860 + + thumb_func_start sub_814B8F0 +sub_814B8F0: @ 814B8F0 + push {lr} + ldr r0, _0814B90C @ =gUnknown_203F3DC + ldr r0, [r0] + ldrb r0, [r0, 0xA] + bl sub_8077508 + ldr r1, _0814B910 @ =sub_814B860 + movs r0, 0x5 + movs r2, 0 + bl sub_813CD50 + pop {r0} + bx r0 + .align 2, 0 +_0814B90C: .4byte gUnknown_203F3DC +_0814B910: .4byte sub_814B860 + thumb_func_end sub_814B8F0 + + thumb_func_start sub_814B914 +sub_814B914: @ 814B914 + push {lr} + ldr r0, _0814B920 @ =sub_814BA6C + bl sub_80006F4 + pop {r0} + bx r0 + .align 2, 0 +_0814B920: .4byte sub_814BA6C + thumb_func_end sub_814B914 + + thumb_func_start sub_814B924 +sub_814B924: @ 814B924 + push {lr} + movs r0, 0 + bl sub_80006F4 + pop {r0} + bx r0 + thumb_func_end sub_814B924 + + thumb_func_start sub_814B930 +sub_814B930: @ 814B930 + push {r4,r5,lr} + ldr r4, _0814B974 @ =gUnknown_203F3DC + ldr r0, [r4] + adds r0, 0x6C + ldrh r2, [r0] + lsls r2, 8 + movs r1, 0xF0 + lsls r1, 6 + adds r0, r2, 0 + bl sub_80D8B68 + adds r2, r0, 0 + ldr r0, [r4] + adds r0, 0x72 + ldrh r3, [r0] + lsls r3, 8 + adds r0, r3, 0 + adds r1, r2, 0 + bl sub_80D8B68 + adds r3, r0, 0 + ldr r0, _0814B978 @ =0x0000ffff + ands r3, r0 + ldr r2, [r4] + strh r3, [r2, 0x16] + ldrb r0, [r2, 0x9] + cmp r0, 0x3 + beq _0814B9B4 + cmp r0, 0x3 + bgt _0814B97C + cmp r0, 0x2 + beq _0814B986 + b _0814BA3C + .align 2, 0 +_0814B974: .4byte gUnknown_203F3DC +_0814B978: .4byte 0x0000ffff +_0814B97C: + cmp r0, 0x4 + beq _0814B9E4 + cmp r0, 0x5 + beq _0814BA14 + b _0814BA3C +_0814B986: + ldr r5, _0814B9B0 @ =gUnknown_300500C + ldr r1, [r5] + movs r0, 0xAF + lsls r0, 4 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + movs r2, 0xAF + lsls r2, 4 + b _0814BA38 + .align 2, 0 +_0814B9B0: .4byte gUnknown_300500C +_0814B9B4: + ldr r5, _0814B9DC @ =gUnknown_300500C + ldr r1, [r5] + ldr r0, _0814B9E0 @ =0x00000af2 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + ldr r2, _0814B9E0 @ =0x00000af2 + b _0814BA38 + .align 2, 0 +_0814B9DC: .4byte gUnknown_300500C +_0814B9E0: .4byte 0x00000af2 +_0814B9E4: + ldr r5, _0814BA0C @ =gUnknown_300500C + ldr r1, [r5] + ldr r0, _0814BA10 @ =0x00000af4 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + ldr r2, _0814BA10 @ =0x00000af4 + b _0814BA38 + .align 2, 0 +_0814BA0C: .4byte gUnknown_300500C +_0814BA10: .4byte 0x00000af4 +_0814BA14: + ldr r5, _0814BA60 @ =gUnknown_300500C + ldr r1, [r5] + ldr r0, _0814BA64 @ =0x00000af6 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + ldr r2, _0814BA64 @ =0x00000af6 +_0814BA38: + adds r0, r2 + strh r1, [r0] +_0814BA3C: + ldr r4, _0814BA68 @ =gUnknown_203F3DC + ldr r1, [r4] + ldr r0, [r1, 0x68] + str r0, [r1, 0x1C] + bl sub_815EEE0 + lsls r0, 24 + cmp r0, 0 + bne _0814BA5A + ldr r0, [r4] + adds r0, 0x25 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] +_0814BA5A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814BA60: .4byte gUnknown_300500C +_0814BA64: .4byte 0x00000af6 +_0814BA68: .4byte gUnknown_203F3DC + thumb_func_end sub_814B930 + + thumb_func_start sub_814BA6C +sub_814BA6C: @ 814BA6C + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + pop {r0} + bx r0 + thumb_func_end sub_814BA6C + + thumb_func_start sub_814BA80 +sub_814BA80: @ 814BA80 + push {lr} + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + pop {r0} + bx r0 + thumb_func_end sub_814BA80 + + thumb_func_start sub_814BA98 +sub_814BA98: @ 814BA98 + push {r4,lr} + ldr r4, _0814BAB8 @ =gUnknown_203F3DC + ldr r0, [r4] + ldr r2, [r0, 0x4] + cmp r2, 0 + beq _0814BAAC + adds r1, r0, 0 + adds r1, 0x36 + bl _call_via_r2 +_0814BAAC: + ldr r0, [r4] + bl sub_814D9CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814BAB8: .4byte gUnknown_203F3DC + thumb_func_end sub_814BA98 + + thumb_func_start sub_814BABC +sub_814BABC: @ 814BABC + push {r4-r6,lr} + adds r6, r0, 0 + movs r5, 0 + b _0814BAE8 +_0814BAC4: + lsls r4, r5, 5 + adds r0, r4, 0 + adds r0, 0x98 + adds r0, r6, r0 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + ldr r2, _0814BB2C @ =gUnknown_2022744 + adds r1, r2 + bl sub_8008D84 + adds r4, r6, r4 + adds r4, 0x9F + movs r0, 0xFF + strb r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0814BAE8: + ldrb r0, [r6, 0x9] + cmp r5, r0 + bcc _0814BAC4 + cmp r5, 0x4 + bhi _0814BB14 +_0814BAF2: + lsls r4, r5, 5 + adds r0, r4, 0 + adds r0, 0x98 + adds r0, r6, r0 + movs r1, 0x1 + movs r2, 0x7 + bl memset + adds r4, r6, r4 + adds r4, 0x9F + movs r0, 0xFF + strb r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _0814BAF2 +_0814BB14: + ldr r0, _0814BB30 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x14] + lsls r0, 29 + lsrs r0, 29 + cmp r0, 0x1 + beq _0814BB3E + cmp r0, 0x1 + bgt _0814BB34 + cmp r0, 0 + beq _0814BB3A + b _0814BB46 + .align 2, 0 +_0814BB2C: .4byte gUnknown_2022744 +_0814BB30: .4byte gUnknown_300500C +_0814BB34: + cmp r0, 0x2 + beq _0814BB42 + b _0814BB46 +_0814BB3A: + movs r0, 0x8 + b _0814BB44 +_0814BB3E: + movs r0, 0x4 + b _0814BB44 +_0814BB42: + movs r0, 0x1 +_0814BB44: + strb r0, [r6, 0xB] +_0814BB46: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814BABC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_814BB4C.s b/asm/unk_814BB4C.s new file mode 100644 index 000000000..6c2ad4294 --- /dev/null +++ b/asm/unk_814BB4C.s @@ -0,0 +1,3494 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814BB4C +sub_814BB4C: @ 814BB4C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r2, 0 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 24 + lsrs r4, r1, 24 + mov r8, r4 + bl sub_814B6F0 + adds r6, r0, 0 + cmp r5, 0x19 + bls _0814BB6A + movs r5, 0 +_0814BB6A: + cmp r4, 0 + beq _0814BB74 + cmp r4, 0x1 + beq _0814BBA0 + b _0814BBAA +_0814BB74: + cmp r5, 0 + beq _0814BB88 + ldr r0, _0814BB9C @ =gUnknown_846E34C + lsls r1, r5, 2 + adds r1, r0 + ldr r2, [r1] + adds r0, r6, 0 + adds r1, r7, 0 + bl _call_via_r2 +_0814BB88: + ldrb r0, [r6, 0xE] + cmp r0, 0x19 + bls _0814BB92 + mov r0, r8 + strb r0, [r6, 0xE] +_0814BB92: + ldr r0, _0814BB9C @ =gUnknown_846E34C + ldrb r1, [r6, 0xE] + lsls r1, 2 + b _0814BBA4 + .align 2, 0 +_0814BB9C: .4byte gUnknown_846E34C +_0814BBA0: + ldr r0, _0814BBB4 @ =gUnknown_846E34C + lsls r1, r5, 2 +_0814BBA4: + adds r1, r0 + ldr r0, [r1] + str r0, [r6, 0x4] +_0814BBAA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814BBB4: .4byte gUnknown_846E34C + thumb_func_end sub_814BB4C + + thumb_func_start sub_814BBB8 +sub_814BBB8: @ 814BBB8 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldrb r2, [r1] + ldrb r3, [r1, 0x1] + lsls r3, 8 + orrs r2, r3 + ldrb r3, [r1, 0x2] + lsls r3, 16 + orrs r2, r3 + ldrb r3, [r1, 0x3] + lsls r3, 24 + adds r0, r2, 0 + orrs r0, r3 + ldrb r2, [r1, 0x9] + strb r2, [r1] + ldrb r4, [r1, 0x8] + lsls r4, 8 + ldrb r2, [r1, 0x7] + orrs r4, r2 + ldr r5, _0814BC0C @ =gUnknown_2037AB8 + ldrb r3, [r5, 0x8] + movs r2, 0x7F + ands r2, r3 + strb r2, [r5, 0x8] + movs r5, 0x4 + ldrsb r5, [r1, r5] + ldrb r2, [r1, 0x5] + ldrb r3, [r1, 0x6] + str r4, [sp] + adds r1, r5, 0 + bl sub_8070588 + bl sub_80704D0 + movs r0, 0x2 + strb r0, [r6, 0xE] + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0814BC0C: .4byte gUnknown_2037AB8 + thumb_func_end sub_814BBB8 + + thumb_func_start sub_814BC10 +sub_814BC10: @ 814BC10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0x1 + beq _0814BC44 + cmp r0, 0x1 + bgt _0814BC26 + cmp r0, 0 + beq _0814BC30 + b _0814BC66 +_0814BC26: + cmp r0, 0x2 + beq _0814BC4A + cmp r0, 0x3 + beq _0814BC56 + b _0814BC66 +_0814BC30: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0814BC6C + ldrb r0, [r5] + cmp r0, 0 + bne _0814BC66 + movs r0, 0x3 + b _0814BC6A +_0814BC44: + bl sub_80FA42C + b _0814BC66 +_0814BC4A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _0814BC66 + b _0814BC6C +_0814BC56: + ldrb r0, [r4, 0xF] + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r0, 0 + strb r0, [r4, 0xC] + b _0814BC6E +_0814BC66: + ldrb r0, [r4, 0xC] + adds r0, 0x1 +_0814BC6A: + strb r0, [r4, 0xC] +_0814BC6C: + movs r0, 0 +_0814BC6E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814BC10 + + thumb_func_start sub_814BC74 +sub_814BC74: @ 814BC74 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r7, r0, 0 + adds r5, r1, 0 + ldrb r4, [r5, 0x3] + lsls r4, 8 + ldrb r0, [r5, 0x2] + orrs r4, r0 + ldrb r6, [r7, 0xC] + cmp r6, 0x1 + beq _0814BD20 + cmp r6, 0x1 + bgt _0814BC98 + cmp r6, 0 + beq _0814BCA2 + b _0814BD68 +_0814BC98: + cmp r6, 0x2 + beq _0814BD38 + cmp r6, 0x3 + beq _0814BD48 + b _0814BD68 +_0814BCA2: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldrb r1, [r5, 0x1] + movs r0, 0x2 + mov r8, r0 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0814BCF0 + ldr r4, _0814BCE8 @ =gUnknown_2021D18 + ldr r1, _0814BCEC @ =gUnknown_846E328 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_8008FCC + ldrb r3, [r7, 0xB] + str r6, [sp] + mov r0, r8 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + adds r2, r4, 0 + bl sub_80F6CD0 + b _0814BD12 + .align 2, 0 +_0814BCE8: .4byte gUnknown_2021D18 +_0814BCEC: .4byte gUnknown_846E328 +_0814BCF0: + ldr r1, _0814BD1C @ =gUnknown_846E328 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + ldrb r3, [r7, 0xB] + str r4, [sp] + mov r0, r8 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + bl sub_80F6CD0 +_0814BD12: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + b _0814BD68 + .align 2, 0 +_0814BD1C: .4byte gUnknown_846E328 +_0814BD20: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0814BD6E + cmp r4, 0 + bne _0814BD68 + ldrb r0, [r7, 0xC] + adds r0, 0x1 + strb r0, [r7, 0xC] + b _0814BD68 +_0814BD38: + ldr r0, _0814BD44 @ =gUnknown_30030F0 + ldrh r0, [r0, 0x2E] + ands r4, r0 + cmp r4, 0 + bne _0814BD68 + b _0814BD6E + .align 2, 0 +_0814BD44: .4byte gUnknown_30030F0 +_0814BD48: + ldrb r1, [r5, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0814BD5A + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 +_0814BD5A: + ldrb r0, [r7, 0xE] + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + ldrb r0, [r5, 0x4] + b _0814BD6C +_0814BD68: + ldrb r0, [r7, 0xC] + adds r0, 0x1 +_0814BD6C: + strb r0, [r7, 0xC] +_0814BD6E: + movs r0, 0 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814BC74 + + thumb_func_start sub_814BD7C +sub_814BD7C: @ 814BD7C + push {r4,lr} + adds r4, r0, 0 + bl sub_814D5C8 + cmp r0, 0 + beq _0814BD94 + ldrb r0, [r4, 0xE] + adds r2, r4, 0 + adds r2, 0x36 + movs r1, 0 + bl sub_814BB4C +_0814BD94: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814BD7C + + thumb_func_start sub_814BD9C +sub_814BD9C: @ 814BD9C + push {r4,lr} + adds r4, r0, 0 + bl sub_814D888 + cmp r0, 0 + beq _0814BDB4 + ldrb r0, [r4, 0xE] + adds r2, r4, 0 + adds r2, 0x36 + movs r1, 0 + bl sub_814BB4C +_0814BDB4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814BD9C + + thumb_func_start sub_814BDBC +sub_814BDBC: @ 814BDBC + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0 + beq _0814BDCC + cmp r0, 0x1 + beq _0814BDD2 + b _0814BDFC +_0814BDCC: + bl sub_80FA42C + b _0814BDFC +_0814BDD2: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814BE02 + ldr r0, _0814BDF8 @ =0x00000111 + bl sub_8071A74 + movs r0, 0x7 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r1, 0 + movs r0, 0x3 + strh r0, [r4, 0x12] + strb r1, [r4, 0xC] + b _0814BE02 + .align 2, 0 +_0814BDF8: .4byte 0x00000111 +_0814BDFC: + ldrb r0, [r4, 0xC] + adds r0, 0x1 + strb r0, [r4, 0xC] +_0814BE02: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814BDBC + + thumb_func_start sub_814BE0C +sub_814BE0C: @ 814BE0C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0 + beq _0814BE22 + cmp r0, 0x1 + beq _0814BE48 + adds r0, 0x1 + b _0814BE58 +_0814BE22: + adds r0, r4, 0 + bl sub_814D4D8 + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_814D5A4 + movs r0, 0x7 + strb r0, [r4, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + b _0814BE5A +_0814BE48: + movs r0, 0x8 + strb r0, [r4, 0xE] + movs r0, 0x5 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r0, 0x2 +_0814BE58: + strb r0, [r4, 0xC] +_0814BE5A: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814BE0C + + thumb_func_start sub_814BE64 +sub_814BE64: @ 814BE64 + push {lr} + movs r1, 0 + str r1, [r0, 0x4] + ldr r0, _0814BE78 @ =sub_814B8F0 + bl sub_8000544 + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0814BE78: .4byte sub_814B8F0 + thumb_func_end sub_814BE64 + + thumb_func_start sub_814BE7C +sub_814BE7C: @ 814BE7C + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r2, r1, 0 + ldrb r0, [r5, 0xC] + cmp r0, 0x5 + bls _0814BE8C + b _0814BFC0 +_0814BE8C: + lsls r0, 2 + ldr r1, _0814BE98 @ =_0814BE9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814BE98: .4byte _0814BE9C + .align 2, 0 +_0814BE9C: + .4byte _0814BEB4 + .4byte _0814BED4 + .4byte _0814BEDA + .4byte _0814BF0A + .4byte _0814BF1A + .4byte _0814BFA4 +_0814BEB4: + movs r0, 0x1 + str r0, [sp] + adds r0, r2, 0 + movs r1, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_814D5A4 + movs r0, 0x9 + strb r0, [r5, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + b _0814BFC6 +_0814BED4: + bl sub_80FA42C + b _0814BFC0 +_0814BEDA: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814BFC6 + adds r4, r5, 0 + adds r4, 0x42 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0xC + bl memset + ldrb r0, [r5, 0x8] + lsls r0, 5 + adds r0, r5, r0 + adds r0, 0xA4 + ldrh r0, [r0] + strh r0, [r4] + movs r0, 0 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_800A448 + b _0814BFC0 +_0814BF0A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814BFC6 + movs r0, 0 + strh r0, [r5, 0x10] + b _0814BFC0 +_0814BF1A: + bl sub_800A4EC + ldr r2, _0814BF98 @ =gUnknown_846E3C8 + ldrb r4, [r5, 0x9] + subs r1, r4, 0x2 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _0814BFC6 + movs r3, 0 + cmp r3, r4 + bcs _0814BF7E + ldr r7, _0814BF9C @ =gUnknown_2022118 + movs r6, 0 + ldr r4, _0814BFA0 @ =gUnknown_83DFC9C +_0814BF3C: + lsls r0, r3, 5 + adds r0, r5, r0 + lsls r1, r3, 8 + adds r1, r7 + ldrh r1, [r1] + adds r2, r0, 0 + adds r2, 0xA4 + strh r1, [r2] + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0xB0 + bls _0814BF56 + strh r6, [r2] +_0814BF56: + ldrh r1, [r2] + lsls r1, 2 + adds r1, r4 + ldrh r0, [r5, 0x18] + ldrb r1, [r1] + adds r0, r1 + strh r0, [r5, 0x18] + ldrh r0, [r2] + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x2] + ldr r0, [r5, 0x1C] + adds r0, r1 + str r0, [r5, 0x1C] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r5, 0x9] + cmp r3, r0 + bcc _0814BF3C +_0814BF7E: + movs r0, 0 + strh r0, [r5, 0x10] + bl sub_800A550 + movs r1, 0x18 + ldrsh r0, [r5, r1] + lsls r0, 8 + movs r1, 0x80 + lsls r1, 6 + bl sub_80D8B68 + str r0, [r5, 0x20] + b _0814BFC0 + .align 2, 0 +_0814BF98: .4byte gUnknown_846E3C8 +_0814BF9C: .4byte gUnknown_2022118 +_0814BFA0: .4byte gUnknown_83DFC9C +_0814BFA4: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + movs r0, 0xA + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r1, 0 + movs r0, 0x4 + strh r0, [r5, 0x12] + strb r1, [r5, 0xC] + b _0814BFC6 +_0814BFC0: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814BFC6: + movs r0, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814BE7C + + thumb_func_start sub_814BFD0 +sub_814BFD0: @ 814BFD0 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0x6 + bls _0814BFDC + b _0814C108 +_0814BFDC: + lsls r0, 2 + ldr r1, _0814BFE8 @ =_0814BFEC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814BFE8: .4byte _0814BFEC + .align 2, 0 +_0814BFEC: + .4byte _0814C008 + .4byte _0814C01A + .4byte _0814C048 + .4byte _0814C080 + .4byte _0814C0B0 + .4byte _0814C0D2 + .4byte _0814C0E4 +_0814C008: + movs r0, 0x9C + lsls r0, 1 + adds r1, r4, r0 + adds r0, r4, 0 + bl sub_814DA24 + bl sub_80FA42C + b _0814C108 +_0814C01A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814C10E + movs r2, 0x9C + lsls r2, 1 + adds r1, r4, r2 + movs r0, 0 + strb r0, [r1] + ldr r3, _0814C044 @ =0x00000139 + adds r1, r4, r3 + strb r0, [r1] + adds r2, 0x2 + adds r1, r4, r2 + strb r0, [r1] + adds r3, 0x2 + adds r1, r4, r3 + strb r0, [r1] + b _0814C108 + .align 2, 0 +_0814C044: .4byte 0x00000139 +_0814C048: + movs r0, 0x9C + lsls r0, 1 + adds r3, r4, r0 + ldrb r0, [r3] + lsls r0, 2 + movs r2, 0xB8 + lsls r2, 1 + adds r1, r4, r2 + adds r0, r1, r0 + ldr r2, [r0] + ldr r0, _0814C07C @ =sub_814DB84 + str r0, [r2, 0x1C] + ldrb r0, [r3] + lsls r0, 2 + adds r1, r0 + ldr r1, [r1] + adds r1, 0x2C + ldrb r2, [r1] + movs r0, 0x7F + ands r0, r2 + strb r0, [r1] + movs r0, 0x36 + bl sub_80722CC + b _0814C108 + .align 2, 0 +_0814C07C: .4byte sub_814DB84 +_0814C080: + movs r3, 0x9C + lsls r3, 1 + adds r2, r4, r3 + ldrb r0, [r2] + lsls r0, 2 + adds r3, 0x38 + adds r1, r4, r3 + adds r3, r1, r0 + ldr r0, [r3] + ldr r1, [r0, 0x1C] + ldr r0, _0814C0AC @ =sub_814DB84 + cmp r1, r0 + beq _0814C10E + movs r0, 0 + str r0, [r3] + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + bl sub_80FA42C + b _0814C108 + .align 2, 0 +_0814C0AC: .4byte sub_814DB84 +_0814C0B0: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814C10E + movs r0, 0x9C + lsls r0, 1 + adds r1, r4, r0 + ldrb r0, [r1] + ldrb r2, [r4, 0x9] + cmp r0, r2 + bcs _0814C0CC + movs r0, 0x2 + b _0814C10C +_0814C0CC: + movs r0, 0 + strb r0, [r1] + b _0814C108 +_0814C0D2: + movs r3, 0x9C + lsls r3, 1 + adds r1, r4, r3 + adds r0, r4, 0 + bl sub_814DC24 + bl sub_80FA42C + b _0814C108 +_0814C0E4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814C10E + movs r0, 0x25 + bl sub_80722CC + movs r0, 0xB + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r1, 0 + movs r0, 0x5 + strh r0, [r4, 0x12] + strb r1, [r4, 0xC] + b _0814C10E +_0814C108: + ldrb r0, [r4, 0xC] + adds r0, 0x1 +_0814C10C: + strb r0, [r4, 0xC] +_0814C10E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814BFD0 + + thumb_func_start sub_814C118 +sub_814C118: @ 814C118 + push {r4-r7,lr} + adds r4, r0, 0 + ldrb r1, [r4, 0xC] + cmp r1, 0x1 + beq _0814C17C + cmp r1, 0x1 + bgt _0814C12C + cmp r1, 0 + beq _0814C136 + b _0814C23C +_0814C12C: + cmp r1, 0x2 + beq _0814C1FC + cmp r1, 0x3 + beq _0814C21E + b _0814C23C +_0814C136: + ldrh r0, [r4, 0x2A] + adds r0, 0x4 + strh r0, [r4, 0x2A] + lsls r0, 16 + cmp r0, 0 + bge _0814C144 + b _0814C242 +_0814C144: + strh r1, [r4, 0x2A] + ldr r0, _0814C174 @ =0x00000139 + adds r3, r4, r0 + movs r0, 0x4 + strb r0, [r3] + movs r2, 0x9C + lsls r2, 1 + adds r1, r4, r2 + movs r0, 0 + strb r0, [r1] + ldr r2, _0814C178 @ =gUnknown_846E2F0 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + adds r0, r2 + ldrb r0, [r0] + movs r2, 0x9D + lsls r2, 1 + adds r1, r4, r2 + strb r0, [r1] + movs r0, 0xCF + bl sub_80722CC + b _0814C23C + .align 2, 0 +_0814C174: .4byte 0x00000139 +_0814C178: .4byte gUnknown_846E2F0 +_0814C17C: + ldr r7, _0814C1F4 @ =gUnknown_846E2F0 + movs r0, 0x9C + lsls r0, 1 + adds r6, r4, r0 + ldr r1, _0814C1F8 @ =0x00000139 + adds r5, r4, r1 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + ldrb r2, [r6] + adds r0, r2 + adds r0, r7 + movs r1, 0 + ldrsb r1, [r0, r1] + strh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x12 + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1A + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1E + bl sub_8000A38 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + movs r1, 0x9D + lsls r1, 1 + adds r2, r4, r1 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r2] + cmp r0, r1 + bcc _0814C242 + ldrb r0, [r5] + cmp r0, 0 + beq _0814C23C + subs r0, 0x1 + strb r0, [r5] + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + adds r0, r7 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0 + strb r0, [r6] + b _0814C242 + .align 2, 0 +_0814C1F4: .4byte gUnknown_846E2F0 +_0814C1F8: .4byte 0x00000139 +_0814C1FC: + movs r0, 0 + strh r0, [r4, 0x2C] + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + bl sub_80FA42C + b _0814C23C +_0814C21E: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814C242 + movs r0, 0xC + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r1, 0 + movs r0, 0x6 + strh r0, [r4, 0x12] + strb r1, [r4, 0xC] + b _0814C242 +_0814C23C: + ldrb r0, [r4, 0xC] + adds r0, 0x1 + strb r0, [r4, 0xC] +_0814C242: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814C118 + + thumb_func_start sub_814C24C +sub_814C24C: @ 814C24C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0x1 + beq _0814C26C + cmp r0, 0x1 + bgt _0814C262 + cmp r0, 0 + beq _0814C292 + b _0814C2EC +_0814C262: + cmp r0, 0x2 + beq _0814C28A + cmp r0, 0x3 + beq _0814C298 + b _0814C2EC +_0814C26C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814C2F2 + movs r1, 0x80 + lsls r1, 5 + movs r0, 0 + str r0, [sp] + adds r0, r1, 0 + movs r2, 0x78 + movs r3, 0x50 + bl sub_815F138 + b _0814C2EC +_0814C28A: + bl sub_815F198 + cmp r0, 0 + bne _0814C2F2 +_0814C292: + bl sub_80FA42C + b _0814C2EC +_0814C298: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814C2F2 + movs r0, 0x9C + lsls r0, 1 + adds r1, r4, r0 + movs r0, 0 + strb r0, [r1] + ldr r2, _0814C2D4 @ =0x00000139 + adds r1, r4, r2 + strb r0, [r1] + adds r2, 0x1 + adds r1, r4, r2 + strb r0, [r1] + adds r2, 0x1 + adds r1, r4, r2 + strb r0, [r1] + strh r0, [r4, 0x10] + ldrb r0, [r4, 0x8] + cmp r0, 0 + bne _0814C2D8 + movs r0, 0xD + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + b _0814C2E2 + .align 2, 0 +_0814C2D4: .4byte 0x00000139 +_0814C2D8: + movs r0, 0xE + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C +_0814C2E2: + movs r1, 0 + movs r0, 0x7 + strh r0, [r4, 0x12] + strb r1, [r4, 0xC] + b _0814C2F2 +_0814C2EC: + ldrb r0, [r4, 0xC] + adds r0, 0x1 + strb r0, [r4, 0xC] +_0814C2F2: + movs r0, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814C24C + + thumb_func_start sub_814C2FC +sub_814C2FC: @ 814C2FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r4, r0, 0 + movs r0, 0 + mov r8, r0 + movs r2, 0 + adds r7, r2, 0 + ldrb r1, [r4, 0x9] + cmp r7, r1 + bcs _0814C40A + movs r2, 0x5E + adds r2, r4 + mov r9, r2 + ldr r3, _0814C3C0 @ =gUnknown_846E2E0 + mov r10, r3 +_0814C320: + lsls r0, r7, 4 + ldr r1, _0814C3C4 @ =gUnknown_3003ED0 + adds r2, r0, r1 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + movs r3, 0xBC + lsls r3, 6 + cmp r0, r3 + bne _0814C3FE + ldrh r0, [r2, 0x2] + cmp r0, 0x2 + bne _0814C3FE + ldrb r1, [r2, 0x4] + movs r0, 0x4 + ands r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0814C3F6 + mov r0, r9 + ldrb r2, [r0] + lsrs r1, r2, 3 + mov r3, r10 + adds r0, r7, r3 + ldrb r0, [r0] + orrs r1, r0 + lsls r1, 3 + movs r0, 0x7 + ands r0, r2 + orrs r0, r1 + mov r1, r9 + strb r0, [r1] + lsls r2, r7, 5 + adds r3, r4, r2 + mov r12, r3 + mov r1, r12 + adds r1, 0xB5 + movs r0, 0x1 + strb r0, [r1] + subs r1, 0x7 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + subs r1, 0x8 + ldrh r0, [r4, 0x28] + ldrh r1, [r1] + subs r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + mov r5, r12 + adds r5, 0xAA + ldrh r1, [r5] + subs r0, r1, 0x1 + adds r6, r2, 0 + cmp r3, r0 + blt _0814C3C8 + adds r0, r1, 0x1 + cmp r3, r0 + bgt _0814C3C8 + mov r1, r12 + adds r1, 0xA8 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + strh r3, [r5] + mov r0, r12 + adds r0, 0xAC + ldrh r1, [r1] + ldrh r2, [r0] + cmp r1, r2 + bls _0814C3D6 + strh r1, [r0] + b _0814C3D6 + .align 2, 0 +_0814C3C0: .4byte gUnknown_846E2E0 +_0814C3C4: .4byte gUnknown_3003ED0 +_0814C3C8: + adds r0, r4, r6 + adds r2, r0, 0 + adds r2, 0xA8 + movs r1, 0 + strh r1, [r2] + adds r0, 0xAA + strh r3, [r0] +_0814C3D6: + adds r1, r4, r6 + ldrh r0, [r4, 0x28] + adds r3, r1, 0 + adds r3, 0xA6 + movs r2, 0 + strh r0, [r3] + adds r1, 0xB4 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bls _0814C3FE + strb r2, [r1] + b _0814C3FE +_0814C3F6: + lsls r0, r7, 5 + adds r0, r4, r0 + adds r0, 0xB5 + strb r1, [r0] +_0814C3FE: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r3, [r4, 0x9] + cmp r7, r3 + bcc _0814C320 +_0814C40A: + mov r0, r8 + cmp r0, 0x1 + bls _0814C440 + movs r7, 0 + ldrb r1, [r4, 0x9] + cmp r7, r1 + bcs _0814C440 + movs r3, 0x2 +_0814C41A: + lsls r0, r7, 5 + adds r1, r4, r0 + adds r2, r1, 0 + adds r2, 0xB5 + ldrb r0, [r2] + cmp r0, 0 + beq _0814C434 + orrs r0, r3 + strb r0, [r2] + adds r1, 0xB0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0814C434: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r2, [r4, 0x9] + cmp r7, r2 + bcc _0814C41A +_0814C440: + mov r3, r8 + cmp r3, 0 + beq _0814C4A8 + ldrh r0, [r4, 0x2E] + add r0, r8 + strh r0, [r4, 0x2E] + ldr r1, _0814C490 @ =gUnknown_846E2E8 + mov r0, r8 + subs r0, 0x1 + adds r0, r1 + ldrb r0, [r0] + add r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrh r0, [r4, 0x34] + add r0, r8 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x1A] + add r0, r8 + strh r0, [r4, 0x1A] + movs r1, 0x18 + ldrsh r0, [r4, r1] + movs r3, 0x1A + ldrsh r2, [r4, r3] + subs r0, r2 + cmp r0, 0 + ble _0814C494 + lsls r2, 8 + ldr r1, [r4, 0x20] + adds r0, r2, 0 + bl sub_80D8B68 + adds r2, r0, 0 + asrs r2, 8 + adds r0, r4, 0 + adds r0, 0x24 + strb r2, [r0] + b _0814C4A8 + .align 2, 0 +_0814C490: .4byte gUnknown_846E2E8 +_0814C494: + adds r1, r4, 0 + adds r1, 0x24 + movs r0, 0x20 + strb r0, [r1] + adds r2, r4, 0 + adds r2, 0x5E + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_0814C4A8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_814C2FC + + thumb_func_start sub_814C4B8 +sub_814C4B8: @ 814C4B8 + push {r4-r6,lr} + adds r3, r0, 0 + movs r6, 0 + movs r1, 0 + adds r4, r1, 0 + ldrb r0, [r3, 0x9] + cmp r4, r0 + bcs _0814C510 + adds r5, r3, 0 + adds r5, 0x64 +_0814C4CC: + lsls r0, r4, 5 + adds r1, r3, r0 + adds r0, r1, 0 + adds r0, 0xB5 + ldrb r2, [r0] + cmp r2, 0 + beq _0814C504 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r1, 0 + adds r0, 0xB4 + ldrb r0, [r0] + adds r1, r0, 0x1 + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0814C4F4 + movs r0, 0x4 + orrs r1, r0 +_0814C4F4: + lsls r0, r4, 1 + adds r0, r4 + lsls r1, r0 + lsls r0, r1, 16 + lsrs r1, r0, 16 + ldrh r0, [r5] + orrs r1, r0 + strh r1, [r5] +_0814C504: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r1, [r3, 0x9] + cmp r4, r1 + bcc _0814C4CC +_0814C510: + adds r0, r3, 0 + adds r0, 0x24 + ldrb r1, [r0] + adds r0, 0x3C + strh r1, [r0] + cmp r6, 0 + bne _0814C534 + ldr r2, _0814C530 @ =0x0000013b + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0814C600 + movs r4, 0x9C + lsls r4, 1 + adds r1, r3, r4 + b _0814C572 + .align 2, 0 +_0814C530: .4byte 0x0000013b +_0814C534: + ldr r5, _0814C560 @ =0x0000013b + adds r2, r3, r5 + ldrb r0, [r2] + cmp r0, 0 + beq _0814C57A + ldr r0, _0814C564 @ =0x00000139 + adds r1, r3, r0 + ldrb r2, [r1] + cmp r6, r2 + beq _0814C56C + subs r0, r6, 0x1 + strb r0, [r1] + ldr r1, _0814C568 @ =gUnknown_846E314 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + movs r4, 0x9D + lsls r4, 1 + adds r1, r3, r4 + strb r0, [r1] + b _0814C5A0 + .align 2, 0 +_0814C560: .4byte 0x0000013b +_0814C564: .4byte 0x00000139 +_0814C568: .4byte gUnknown_846E314 +_0814C56C: + movs r5, 0x9C + lsls r5, 1 + adds r1, r3, r5 +_0814C572: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0814C5A0 +_0814C57A: + movs r0, 0x9C + lsls r0, 1 + adds r1, r3, r0 + movs r0, 0 + strb r0, [r1] + subs r0, r6, 0x1 + ldr r4, _0814C5D0 @ =0x00000139 + adds r1, r3, r4 + strb r0, [r1] + ldr r1, _0814C5D4 @ =gUnknown_846E314 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + movs r5, 0x9D + lsls r5, 1 + adds r1, r3, r5 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r2] +_0814C5A0: + ldr r0, _0814C5D8 @ =0x0000013b + adds r4, r3, r0 + ldrb r0, [r4] + cmp r0, 0 + beq _0814C600 + movs r2, 0x9C + lsls r2, 1 + adds r1, r3, r2 + movs r5, 0x9D + lsls r5, 1 + adds r2, r3, r5 + ldrb r0, [r1] + ldrb r5, [r2] + cmp r0, r5 + bcc _0814C5DC + movs r0, 0 + strb r0, [r1] + ldr r5, _0814C5D0 @ =0x00000139 + adds r1, r3, r5 + strb r0, [r1] + strb r0, [r2] + strb r0, [r4] + movs r1, 0 + b _0814C5F0 + .align 2, 0 +_0814C5D0: .4byte 0x00000139 +_0814C5D4: .4byte gUnknown_846E314 +_0814C5D8: .4byte 0x0000013b +_0814C5DC: + ldr r2, _0814C5F8 @ =gUnknown_846E314 + ldrb r1, [r1] + ldr r4, _0814C5FC @ =0x00000139 + adds r0, r3, r4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, 0x1 + adds r1, r0 + adds r1, r2 + ldrb r1, [r1] +_0814C5F0: + adds r0, r3, 0 + adds r0, 0x5F + strb r1, [r0] + b _0814C608 + .align 2, 0 +_0814C5F8: .4byte gUnknown_846E314 +_0814C5FC: .4byte 0x00000139 +_0814C600: + adds r1, r3, 0 + adds r1, 0x5F + movs r0, 0 + strb r0, [r1] +_0814C608: + ldrh r1, [r3, 0x26] + adds r0, r3, 0 + adds r0, 0x62 + strh r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814C4B8 + + thumb_func_start sub_814C618 +sub_814C618: @ 814C618 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldr r3, _0814C6AC @ =gUnknown_30030F0 + ldrh r1, [r3, 0x2E] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0814C63A + adds r2, r5, 0 + adds r2, 0x5E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_0814C63A: + ldrh r1, [r3, 0x2C] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0814C65A + ldrb r0, [r5, 0x8] + lsls r0, 5 + adds r0, r5, r0 + adds r1, r0, 0 + adds r1, 0xB2 + ldrh r0, [r1] + ldrh r2, [r5, 0x28] + cmp r0, r2 + bcs _0814C65A + adds r0, 0x1 + strh r0, [r1] +_0814C65A: + ldrb r0, [r5, 0x8] + adds r7, r5, 0 + adds r7, 0x5E + cmp r0, 0 + beq _0814C670 + ldrb r1, [r7] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0814C670 + b _0814C7AC +_0814C670: + adds r4, r5, 0 + adds r4, 0x5C + movs r0, 0x2 + strh r0, [r4] + ldrh r0, [r5, 0x28] + movs r1, 0x1E + bl __umodsi3 + lsls r0, 16 + mov r8, r4 + adds r6, r5, 0 + adds r6, 0x25 + cmp r0, 0 + bne _0814C6C8 + movs r0, 0x2E + ldrsh r2, [r5, r0] + ldr r1, _0814C6B0 @ =gUnknown_846E3C4 + ldrb r0, [r5, 0x9] + subs r0, 0x2 + adds r0, r1 + ldrb r0, [r0] + cmp r2, r0 + ble _0814C6B4 + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] + ldrb r0, [r6] + movs r1, 0x10 + orrs r0, r1 + b _0814C6BC + .align 2, 0 +_0814C6AC: .4byte gUnknown_30030F0 +_0814C6B0: .4byte gUnknown_846E3C4 +_0814C6B4: + ldrb r1, [r6] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 +_0814C6BC: + strb r0, [r6] + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] +_0814C6C8: + ldrh r0, [r5, 0x28] + movs r1, 0xF + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _0814C73E + movs r0, 0x34 + ldrsh r2, [r5, r0] + ldr r3, _0814C6F4 @ =gUnknown_846E3B4 + ldrb r0, [r5, 0x9] + subs r0, 0x2 + lsls r1, r0, 2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bge _0814C6F8 + ldrb r1, [r6] + movs r0, 0x1F + ands r0, r1 + strb r0, [r6] + b _0814C738 + .align 2, 0 +_0814C6F4: .4byte gUnknown_846E3B4 +_0814C6F8: + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r2, r0 + bge _0814C70C + ldrb r0, [r6] + movs r1, 0x1F + ands r1, r0 + movs r0, 0x20 + b _0814C734 +_0814C70C: + adds r0, r3, 0x2 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r2, r0 + bge _0814C71C + movs r0, 0x2 + strh r0, [r5, 0x34] + b _0814C738 +_0814C71C: + adds r0, r3, 0x3 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r2, r0 + bge _0814C72C + movs r0, 0x3 + strh r0, [r5, 0x34] + b _0814C738 +_0814C72C: + ldrb r0, [r6] + movs r1, 0x1F + ands r1, r0 + movs r0, 0x80 +_0814C734: + orrs r1, r0 + strb r1, [r6] +_0814C738: + movs r0, 0 + strh r0, [r5, 0x34] + b _0814C76A +_0814C73E: + ldrh r0, [r5, 0x10] + adds r0, 0x1 + strh r0, [r5, 0x10] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3C + bls _0814C76A + cmp r0, 0x46 + bls _0814C75A + bl sub_80FBA44 + movs r0, 0 + strh r0, [r5, 0x10] + b _0814C76A +_0814C75A: + ldrb r0, [r7] + movs r4, 0xF8 + ands r4, r0 + cmp r4, 0 + bne _0814C76A + bl sub_80FBA44 + strh r4, [r5, 0x10] +_0814C76A: + ldrh r1, [r5, 0x28] + ldr r0, _0814C7B8 @ =0x00008c9f + cmp r1, r0 + bls _0814C77A + ldrb r0, [r7] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r7] +_0814C77A: + ldrb r1, [r6] + lsls r1, 27 + lsrs r1, 31 + lsls r1, 1 + ldrb r2, [r7] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7] + ldrb r0, [r6] + lsrs r0, 5 + adds r2, r5, 0 + adds r2, 0x66 + strh r0, [r2] + adds r4, r5, 0 + adds r4, 0x42 + adds r0, r4, 0 + mov r1, r8 + movs r2, 0xC + bl memcpy + adds r0, r4, 0 + bl sub_80F9E2C +_0814C7AC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814C7B8: .4byte 0x00008c9f + thumb_func_end sub_814C618 + + thumb_func_start sub_814C7BC +sub_814C7BC: @ 814C7BC + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r3, _0814C808 @ =gUnknown_3003ED0 + ldrb r0, [r5, 0x9] + cmp r4, r0 + bcs _0814C7E0 + movs r1, 0 +_0814C7CC: + lsls r0, r4, 5 + adds r0, r5, r0 + adds r0, 0xB5 + strb r1, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5, 0x9] + cmp r4, r0 + bcc _0814C7CC +_0814C7E0: + adds r2, r3, 0 + ldrh r0, [r2] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0814C7F8 + ldrh r0, [r2, 0x2] + cmp r0, 0x2 + beq _0814C80C +_0814C7F8: + adds r2, r5, 0 + adds r2, 0x25 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + b _0814C84A + .align 2, 0 +_0814C808: .4byte gUnknown_3003ED0 +_0814C80C: + adds r4, r5, 0 + adds r4, 0x4E + adds r0, r4, 0 + adds r1, r3, 0 + movs r2, 0xE + bl memcpy + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x2A] + movs r0, 0x5 + ldrsb r0, [r4, r0] + strh r0, [r5, 0x2C] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x28] + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + adds r0, r5, 0 + bl sub_814DC5C + ldrb r1, [r4, 0x4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0814C84A + adds r0, r5, 0 + adds r0, 0x25 + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] +_0814C84A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814C7BC + + thumb_func_start sub_814C850 +sub_814C850: @ 814C850 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x5C + movs r1, 0 + movs r2, 0xC + bl memset + adds r0, r4, 0 + adds r0, 0x4E + movs r1, 0 + movs r2, 0xE + bl memset + adds r0, r4, 0 + bl sub_814C7BC + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x12 + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1A + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1E + bl sub_8000A38 + adds r0, r4, 0 + adds r0, 0x25 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0814C8D8 + ldrh r1, [r4, 0x28] + ldr r0, _0814C8C0 @ =0x00008c9f + cmp r1, r0 + bls _0814C8C4 + adds r0, 0x1 + strh r0, [r4, 0x28] + movs r0, 0x10 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + b _0814C8CE + .align 2, 0 +_0814C8C0: .4byte 0x00008c9f +_0814C8C4: + movs r0, 0xF + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C +_0814C8CE: + movs r1, 0 + movs r0, 0 + strh r0, [r4, 0x10] + strb r1, [r4, 0xC] + b _0814C8F2 +_0814C8D8: + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_814C2FC + adds r0, r4, 0 + bl sub_814C4B8 + adds r0, r4, 0 + bl sub_814C618 + movs r0, 0 +_0814C8F2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814C850 + + thumb_func_start sub_814C8F8 +sub_814C8F8: @ 814C8F8 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x5C + movs r1, 0 + movs r2, 0xC + bl memset + adds r0, r4, 0 + adds r0, 0x4E + movs r1, 0 + movs r2, 0xE + bl memset + adds r0, r4, 0 + bl sub_814C7BC + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x12 + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1A + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1E + bl sub_8000A38 + adds r0, r4, 0 + adds r0, 0x25 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0814C980 + ldrh r1, [r4, 0x28] + ldr r0, _0814C968 @ =0x00008c9f + cmp r1, r0 + bls _0814C96C + adds r0, 0x1 + strh r0, [r4, 0x28] + movs r0, 0x10 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + b _0814C976 + .align 2, 0 +_0814C968: .4byte 0x00008c9f +_0814C96C: + movs r0, 0xF + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C +_0814C976: + movs r1, 0 + movs r0, 0 + strh r0, [r4, 0x10] + strb r1, [r4, 0xC] + b _0814C988 +_0814C980: + adds r0, r4, 0 + bl sub_814C618 + movs r0, 0 +_0814C988: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814C8F8 + + thumb_func_start sub_814C990 +sub_814C990: @ 814C990 + push {r4-r7,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0x5 + bls _0814C99C + b _0814CB12 +_0814C99C: + lsls r0, 2 + ldr r1, _0814C9A8 @ =_0814C9AC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814C9A8: .4byte _0814C9AC + .align 2, 0 +_0814C9AC: + .4byte _0814C9C4 + .4byte _0814C9EC + .4byte _0814CA3C + .4byte _0814CABC + .4byte _0814CADA + .4byte _0814CAF4 +_0814C9C4: + movs r0, 0x8 + strh r0, [r4, 0x12] + movs r0, 0xCF + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + ldr r2, _0814C9E8 @ =0x000003ff + movs r1, 0x8 + bl sub_80714D4 + movs r0, 0x9C + lsls r0, 1 + adds r1, r4, r0 + movs r0, 0x2 + strb r0, [r1] + b _0814CB12 + .align 2, 0 +_0814C9E8: .4byte 0x000003ff +_0814C9EC: + movs r1, 0x9C + lsls r1, 1 + adds r5, r4, r1 + ldrb r0, [r5] + subs r0, 0x1 + strb r0, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0814CA02 + b _0814CB18 +_0814CA02: + movs r0, 0x1 + negs r0, r0 + ldr r2, _0814CA30 @ =0x000003ff + movs r1, 0 + bl sub_80714D4 + ldr r2, _0814CA34 @ =0x00000139 + adds r1, r4, r2 + movs r0, 0x4 + strb r0, [r1] + movs r0, 0 + strb r0, [r5] + ldr r2, _0814CA38 @ =gUnknown_846E2F0 + ldrb r1, [r1] + lsls r0, r1, 3 + subs r0, r1 + adds r0, r2 + ldrb r0, [r0] + movs r2, 0x9D + lsls r2, 1 + adds r1, r4, r2 + strb r0, [r1] + b _0814CB12 + .align 2, 0 +_0814CA30: .4byte 0x000003ff +_0814CA34: .4byte 0x00000139 +_0814CA38: .4byte gUnknown_846E2F0 +_0814CA3C: + ldr r7, _0814CAB4 @ =gUnknown_846E2F0 + movs r0, 0x9C + lsls r0, 1 + adds r6, r4, r0 + ldr r1, _0814CAB8 @ =0x00000139 + adds r5, r4, r1 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + ldrb r2, [r6] + adds r0, r2 + adds r0, r7 + movs r1, 0 + ldrsb r1, [r0, r1] + strh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x12 + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1A + bl sub_8000A38 + ldrh r1, [r4, 0x2C] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x1E + bl sub_8000A38 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + movs r1, 0x9D + lsls r1, 1 + adds r2, r4, r1 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r2] + cmp r0, r1 + bcc _0814CB18 + ldrb r0, [r5] + cmp r0, 0 + beq _0814CB12 + subs r0, 0x1 + strb r0, [r5] + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + adds r0, r7 + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0 + strb r0, [r6] + b _0814CB18 + .align 2, 0 +_0814CAB4: .4byte gUnknown_846E2F0 +_0814CAB8: .4byte 0x00000139 +_0814CABC: + movs r0, 0 + strh r0, [r4, 0x2C] + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + b _0814CB12 +_0814CADA: + movs r2, 0x9C + lsls r2, 1 + adds r1, r4, r2 + adds r0, r4, 0 + bl sub_814DE50 + cmp r0, 0 + beq _0814CB18 + bl sub_80FA42C + movs r0, 0 + strh r0, [r4, 0x10] + b _0814CB12 +_0814CAF4: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814CB18 + movs r0, 0x11 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r1, 0 + movs r0, 0 + strh r0, [r4, 0x10] + strb r1, [r4, 0xC] + b _0814CB1A +_0814CB12: + ldrb r0, [r4, 0xC] + adds r0, 0x1 + strb r0, [r4, 0xC] +_0814CB18: + movs r0, 0 +_0814CB1A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814C990 + + thumb_func_start sub_814CB20 +sub_814CB20: @ 814CB20 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldrb r0, [r5, 0xC] + cmp r0, 0x1 + beq _0814CB64 + cmp r0, 0x1 + bgt _0814CB38 + cmp r0, 0 + beq _0814CB42 + b _0814CBFC +_0814CB38: + cmp r0, 0x2 + beq _0814CB8A + cmp r0, 0x3 + beq _0814CBBC + b _0814CBFC +_0814CB42: + movs r0, 0x9 + strh r0, [r5, 0x12] + movs r0, 0x1A + bl sub_80722CC + movs r0, 0x1 + negs r0, r0 + movs r1, 0x8 + movs r2, 0x1F + bl sub_80714D4 + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + movs r0, 0x4 + strb r0, [r1] + b _0814CBFC +_0814CB64: + movs r0, 0x9C + lsls r0, 1 + adds r4, r5, r0 + ldrb r0, [r4] + subs r0, 0x1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0814CC02 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + movs r2, 0x1F + bl sub_80714D4 + movs r0, 0 + strb r0, [r4] + b _0814CBFC +_0814CB8A: + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + adds r0, r5, 0 + bl sub_814DE50 + cmp r0, 0 + beq _0814CC02 + bl sub_80FA42C + movs r0, 0 + strh r0, [r5, 0x10] + movs r0, 0x12 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1A + movs r1, 0 + bl sub_8000A38 + movs r0, 0x1E + movs r1, 0 + bl sub_8000A38 + b _0814CBFC +_0814CBBC: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814CC02 + ldr r0, _0814CBF8 @ =gUnknown_2021CD0 + ldr r1, [r5, 0x1C] + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + movs r4, 0 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0x7 + movs r2, 0x1 + movs r3, 0 + bl sub_814D5A4 + movs r0, 0x13 + strb r0, [r5, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r0, 0 + strh r4, [r5, 0x10] + b _0814CC00 + .align 2, 0 +_0814CBF8: .4byte gUnknown_2021CD0 +_0814CBFC: + ldrb r0, [r5, 0xC] + adds r0, 0x1 +_0814CC00: + strb r0, [r5, 0xC] +_0814CC02: + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_814CB20 + + thumb_func_start sub_814CC0C +sub_814CC0C: @ 814CC0C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r7, r0, 0 + ldrb r0, [r7, 0xC] + cmp r0, 0x7 + bls _0814CC22 + b _0814CF8E +_0814CC22: + lsls r0, 2 + ldr r1, _0814CC2C @ =_0814CC30 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814CC2C: .4byte _0814CC30 + .align 2, 0 +_0814CC30: + .4byte _0814CC50 + .4byte _0814CC8A + .4byte _0814CC98 + .4byte _0814CD00 + .4byte _0814CE80 + .4byte _0814CF30 + .4byte _0814CF3C + .4byte _0814CF70 +_0814CC50: + adds r4, r7, 0 + adds r4, 0x42 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x4 + bl memset + ldrb r0, [r7, 0x8] + lsls r0, 5 + adds r0, r7, r0 + adds r2, r0, 0 + adds r2, 0xB2 + ldrh r1, [r7, 0x28] + ldrh r0, [r2] + cmp r0, r1 + bls _0814CC72 + strh r1, [r2] +_0814CC72: + ldrb r0, [r7, 0x8] + lsls r0, 5 + adds r0, r7, r0 + adds r0, 0xB2 + ldrh r0, [r0] + strh r0, [r4] + movs r0, 0 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_800A448 + b _0814CF8E +_0814CC8A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + bne _0814CC96 + b _0814CF94 +_0814CC96: + b _0814CF64 +_0814CC98: + bl sub_800A4EC + ldr r2, _0814CCF4 @ =gUnknown_846E3C8 + ldrb r3, [r7, 0x9] + subs r1, r3, 0x2 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + beq _0814CCB0 + b _0814CF94 +_0814CCB0: + movs r0, 0 + mov r8, r0 + adds r4, r7, 0 + adds r4, 0x42 + cmp r8, r3 + bcs _0814CCDE + ldr r2, _0814CCF8 @ =gUnknown_2022118 +_0814CCBE: + mov r3, r8 + lsls r1, r3, 5 + adds r1, r7, r1 + lsls r0, r3, 8 + adds r0, r2 + ldrh r0, [r0] + adds r1, 0xB2 + strh r0, [r1] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r6, [r7, 0x9] + cmp r8, r6 + bcc _0814CCBE +_0814CCDE: + movs r0, 0 + strh r0, [r7, 0x10] + strh r0, [r4] + bl sub_800A550 + ldrb r0, [r7, 0x8] + cmp r0, 0 + bne _0814CCFC + movs r0, 0x3 + b _0814CF92 + .align 2, 0 +_0814CCF4: .4byte gUnknown_846E3C8 +_0814CCF8: .4byte gUnknown_2022118 +_0814CCFC: + movs r0, 0x6 + b _0814CF92 +_0814CD00: + adds r0, r7, 0 + adds r0, 0x68 + movs r1, 0 + movs r2, 0x30 + bl memset + ldrh r1, [r7, 0x28] + adds r0, r7, 0 + adds r0, 0x6C + strh r1, [r0] + movs r0, 0x18 + ldrsh r4, [r7, r0] + ldrh r0, [r7, 0x28] + movs r1, 0x3C + bl __udivsi3 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl __divsi3 + adds r1, r7, 0 + adds r1, 0x6E + strh r0, [r1] + movs r1, 0x30 + ldrsh r0, [r7, r1] + lsls r0, 8 + movs r4, 0xC8 + lsls r4, 6 + adds r1, r4, 0 + bl sub_80D8AE0 + adds r2, r0, 0 + movs r3, 0x32 + ldrsh r1, [r7, r3] + lsls r1, 8 + bl sub_80D8B68 + adds r2, r0, r4 + asrs r2, 8 + movs r1, 0x7F + adds r0, r2, 0 + ands r0, r1 + adds r1, r7, 0 + adds r1, 0x70 + strh r0, [r1] + lsls r2, 8 + movs r1, 0xC8 + lsls r1, 7 + adds r0, r2, 0 + bl sub_80D8B68 + adds r2, r0, 0 + ldrb r1, [r7, 0x9] + ldr r0, [r7, 0x1C] + muls r0, r1 + lsls r4, r0, 8 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80D8AE0 + adds r4, r0, 0 + asrs r0, r4, 8 + str r0, [r7, 0x68] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + adds r1, r7, 0 + adds r1, 0x8F + strb r0, [r1] + movs r6, 0 + mov r8, r6 + mov r9, r1 + ldrb r0, [r7, 0x9] + cmp r8, r0 + bcc _0814CDA4 + b _0814CF8E +_0814CDA4: + adds r0, r7, 0 + adds r0, 0x88 + add r0, r8 + mov r1, r8 + strb r1, [r0] + adds r0, r7, 0 + adds r0, 0x90 + add r0, r8 + strb r1, [r0] + mov r3, r8 + lsls r2, r3, 1 + adds r1, r7, 0 + adds r1, 0x74 + adds r1, r2 + lsls r0, r3, 5 + adds r3, r7, r0 + adds r5, r3, 0 + adds r5, 0xAE + ldrh r0, [r5] + strh r0, [r1] + adds r1, r7, 0 + adds r1, 0x72 + ldrh r6, [r1] + adds r0, r6 + strh r0, [r1] + mov r1, r9 + ldrb r0, [r1] + adds r6, r2, 0 + cmp r0, 0x1 + beq _0814CE0E + cmp r0, 0x1 + bgt _0814CDEA + cmp r0, 0 + beq _0814CDF0 + b _0814CE64 +_0814CDEA: + cmp r0, 0x2 + beq _0814CE2C + b _0814CE64 +_0814CDF0: + ldrh r0, [r5] + cmp r0, 0 + beq _0814CE32 + adds r0, r3, 0 + adds r0, 0xAC + ldrh r2, [r0] + lsls r2, 8 + adds r0, r2, 0 + movs r1, 0xC8 + lsls r1, 7 + bl sub_80D8AE0 + adds r2, r0, 0 + ldrh r4, [r5] + b _0814CE5A +_0814CE0E: + ldrh r0, [r5] + cmp r0, 0 + beq _0814CE32 + adds r0, r3, 0 + adds r0, 0xB0 + ldrh r2, [r0] + lsls r2, 8 + adds r0, r2, 0 + movs r1, 0xC8 + lsls r1, 7 + bl sub_80D8AE0 + adds r2, r0, 0 + ldrh r4, [r5] + b _0814CE5A +_0814CE2C: + ldrh r0, [r5] + cmp r0, 0 + bne _0814CE36 +_0814CE32: + movs r4, 0 + b _0814CE64 +_0814CE36: + adds r1, r3, 0 + adds r1, 0xB2 + ldrh r0, [r1] + ldrh r2, [r7, 0x28] + cmp r0, r2 + bcc _0814CE48 + movs r4, 0xC8 + lsls r4, 7 + b _0814CE64 +_0814CE48: + ldrh r2, [r1] + lsls r2, 8 + adds r0, r2, 0 + movs r1, 0xC8 + lsls r1, 7 + bl sub_80D8AE0 + adds r2, r0, 0 + ldrh r4, [r7, 0x28] +_0814CE5A: + lsls r4, 8 + adds r1, r4, 0 + bl sub_80D8B68 + adds r4, r0, 0 +_0814CE64: + asrs r4, 4 + adds r0, r7, 0 + adds r0, 0x7E + adds r0, r6 + strh r4, [r0] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r3, [r7, 0x9] + cmp r8, r3 + bcc _0814CDA4 + b _0814CF8E +_0814CE80: + movs r6, 0 + mov r8, r6 + ldrb r0, [r7, 0x9] + subs r0, 0x1 + adds r1, r7, 0 + adds r1, 0x68 + str r1, [sp, 0xC] + cmp r8, r0 + bge _0814CF24 +_0814CE92: + ldrb r0, [r7, 0x9] + subs r0, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + mov r2, r8 + adds r2, 0x1 + str r2, [sp, 0x8] + cmp r4, r8 + bls _0814CF14 + adds r3, r7, 0 + adds r3, 0x74 + str r3, [sp] + adds r6, r7, 0 + adds r6, 0x88 + str r6, [sp, 0x4] + movs r0, 0x90 + adds r0, r7 + mov r10, r0 + movs r1, 0x7E + adds r1, r7 + mov r9, r1 +_0814CEBC: + subs r2, r4, 0x1 + mov r12, r2 + lsls r6, r2, 1 + ldr r0, [sp] + adds r3, r0, r6 + lsls r5, r4, 1 + adds r1, r0, r5 + ldrh r2, [r3] + ldrh r0, [r1] + cmp r2, r0 + bcs _0814CEE6 + ldrh r0, [r1] + strh r2, [r1] + strh r0, [r3] + ldr r1, [sp, 0x4] + adds r2, r1, r4 + ldrb r3, [r2] + add r1, r12 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] +_0814CEE6: + mov r2, r9 + adds r3, r2, r6 + adds r1, r2, r5 + ldrh r2, [r3] + ldrh r6, [r1] + cmp r2, r6 + bcs _0814CF0A + ldrh r0, [r1] + strh r2, [r1] + strh r0, [r3] + mov r0, r10 + adds r2, r0, r4 + ldrb r3, [r2] + mov r1, r10 + add r1, r12 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] +_0814CF0A: + mov r1, r12 + lsls r0, r1, 24 + lsrs r4, r0, 24 + cmp r4, r8 + bhi _0814CEBC +_0814CF14: + ldr r2, [sp, 0x8] + lsls r0, r2, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r7, 0x9] + subs r0, 0x1 + cmp r8, r0 + blt _0814CE92 +_0814CF24: + movs r0, 0 + ldr r1, [sp, 0xC] + movs r2, 0x30 + bl sub_800A448 + b _0814CF8E +_0814CF30: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814CF94 + b _0814CF64 +_0814CF3C: + bl sub_800A4EC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0814CF94 + adds r4, r7, 0 + adds r4, 0x68 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x30 + bl memset + ldr r1, _0814CF6C @ =gUnknown_2022118 + adds r0, r4, 0 + movs r2, 0x30 + bl memcpy + bl sub_800A550 +_0814CF64: + movs r0, 0 + strh r0, [r7, 0x10] + b _0814CF8E + .align 2, 0 +_0814CF6C: .4byte gUnknown_2022118 +_0814CF70: + bl sub_814B930 + movs r0, 0x12 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r0, 0 + movs r1, 0xB + strh r1, [r7, 0x12] + strb r0, [r7, 0xC] + adds r1, r7, 0 + adds r1, 0x24 + strb r0, [r1] + b _0814CF94 +_0814CF8E: + ldrb r0, [r7, 0xC] + adds r0, 0x1 +_0814CF92: + strb r0, [r7, 0xC] +_0814CF94: + movs r0, 0 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814CC0C + + thumb_func_start sub_814CFA8 +sub_814CFA8: @ 814CFA8 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldrb r0, [r5, 0xC] + cmp r0, 0x4 + bhi _0814D084 + lsls r0, 2 + ldr r1, _0814CFC0 @ =_0814CFC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814CFC0: .4byte _0814CFC4 + .align 2, 0 +_0814CFC4: + .4byte _0814CFD8 + .4byte _0814CFEA + .4byte _0814CFFC + .4byte _0814D02C + .4byte _0814D03C +_0814CFD8: + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + adds r0, r5, 0 + bl sub_814E644 + cmp r0, 0 + bne _0814D084 + b _0814D08A +_0814CFEA: + movs r0, 0 + bl sub_80020BC + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + movs r0, 0x1E + strb r0, [r1] + b _0814D084 +_0814CFFC: + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0814D00E + subs r0, 0x1 + strb r0, [r1] + b _0814D08A +_0814D00E: + ldr r0, _0814D028 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0814D08A + movs r0, 0x5 + bl sub_80722CC + adds r0, r5, 0 + bl sub_814E80C + b _0814D084 + .align 2, 0 +_0814D028: .4byte gUnknown_30030F0 +_0814D02C: + ldrh r0, [r5, 0x12] + cmp r0, 0xC + bhi _0814D084 + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x12] + strb r1, [r5, 0xC] + b _0814D08A +_0814D03C: + ldr r0, _0814D07C @ =gUnknown_2021CD0 + ldr r1, [r5, 0x1C] + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + ldr r4, _0814D080 @ =gUnknown_2021CF0 + bl sub_815EFA0 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x6 + bl sub_8008E78 + movs r4, 0 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0x2 + movs r2, 0x3 + movs r3, 0 + bl sub_814D5A4 + movs r0, 0x13 + strb r0, [r5, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + strb r4, [r5, 0xC] + b _0814D08A + .align 2, 0 +_0814D07C: .4byte gUnknown_2021CD0 +_0814D080: .4byte gUnknown_2021CF0 +_0814D084: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D08A: + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_814CFA8 + + thumb_func_start sub_814D094 +sub_814D094: @ 814D094 + push {r4,r5,lr} + sub sp, 0x10 + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r0, [r5, 0xC] + cmp r0, 0x4 + bhi _0814D178 + lsls r0, 2 + ldr r1, _0814D0AC @ =_0814D0B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814D0AC: .4byte _0814D0B0 + .align 2, 0 +_0814D0B0: + .4byte _0814D0C4 + .4byte _0814D100 + .4byte _0814D106 + .4byte _0814D150 + .4byte _0814D164 +_0814D0C4: + ldrh r1, [r5, 0x28] + ldr r0, _0814D0FC @ =0x00008c9f + cmp r1, r0 + bls _0814D0D6 + movs r1, 0x9C + lsls r1, 1 + adds r0, r5, r1 + bl sub_814EB04 +_0814D0D6: + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x8 + movs r2, 0 + movs r3, 0 + bl sub_814D5A4 + movs r4, 0 + movs r0, 0x13 + strb r0, [r5, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + strb r4, [r5, 0xC] + b _0814D17E + .align 2, 0 +_0814D0FC: .4byte 0x00008c9f +_0814D100: + bl sub_80FA42C + b _0814D178 +_0814D106: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814D17E + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _0814D148 @ =gUnknown_8419F54 + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _0814D14C @ =sub_80DA634 + movs r1, 0 + bl sub_807741C + b _0814D178 + .align 2, 0 +_0814D148: .4byte gUnknown_8419F54 +_0814D14C: .4byte sub_80DA634 +_0814D150: + ldr r0, _0814D160 @ =sub_80DA634 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _0814D178 + b _0814D17E + .align 2, 0 +_0814D160: .4byte sub_80DA634 +_0814D164: + movs r0, 0x14 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r1, 0 + movs r0, 0xF + strh r0, [r5, 0x12] + strb r1, [r5, 0xC] + b _0814D17E +_0814D178: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D17E: + movs r0, 0 + add sp, 0x10 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814D094 + + thumb_func_start sub_814D188 +sub_814D188: @ 814D188 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldrb r0, [r5, 0xC] + cmp r0, 0x1 + beq _0814D1CA + cmp r0, 0x1 + bgt _0814D1A0 + cmp r0, 0 + beq _0814D1A6 + b _0814D230 +_0814D1A0: + cmp r0, 0x2 + beq _0814D1D0 + b _0814D230 +_0814D1A6: + movs r0, 0x1 + str r0, [sp] + adds r0, r6, 0 + movs r1, 0x4 + movs r2, 0 + movs r3, 0 + bl sub_814D5A4 + movs r0, 0x14 + strb r0, [r5, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r0, 0 + strb r0, [r5, 0xC] + b _0814D238 +_0814D1CA: + bl sub_80F7858 + b _0814D230 +_0814D1D0: + bl sub_81100C8 + lsls r0, 24 + asrs r4, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0814D236 + adds r0, r5, 0 + adds r0, 0x42 + movs r1, 0 + movs r2, 0xC + bl memset + cmp r4, 0 + bne _0814D202 + bl sub_8099FAC + lsls r0, 24 + cmp r0, 0 + beq _0814D1FE + strh r4, [r5, 0x14] + b _0814D206 +_0814D1FE: + movs r0, 0x3 + b _0814D204 +_0814D202: + movs r0, 0x1 +_0814D204: + strh r0, [r5, 0x14] +_0814D206: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + movs r4, 0 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0x8 + movs r2, 0 + movs r3, 0 + bl sub_814D5A4 + movs r0, 0x15 + strb r0, [r5, 0xE] + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + strb r4, [r5, 0xC] + b _0814D236 +_0814D230: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D236: + movs r0, 0 +_0814D238: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_814D188 + + thumb_func_start sub_814D240 +sub_814D240: @ 814D240 + push {r4-r7,lr} + adds r4, r0, 0 + movs r5, 0 + ldrb r0, [r4, 0xC] + cmp r0, 0x1 + beq _0814D266 + cmp r0, 0x1 + bgt _0814D256 + cmp r0, 0 + beq _0814D260 + b _0814D30C +_0814D256: + cmp r0, 0x2 + beq _0814D288 + cmp r0, 0x3 + beq _0814D296 + b _0814D30C +_0814D260: + bl sub_80FA42C + b _0814D30C +_0814D266: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814D312 + ldrh r0, [r4, 0x14] + adds r1, r4, 0 + adds r1, 0x42 + strh r0, [r1] + adds r0, r4, 0 + adds r0, 0x4E + strh r5, [r0] + movs r0, 0 + movs r2, 0x2 + bl sub_800A448 + b _0814D30C +_0814D288: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814D312 + strh r5, [r4, 0x10] + b _0814D30C +_0814D296: + bl sub_800A4EC + ldr r2, _0814D2E8 @ =gUnknown_846E3C8 + ldrb r3, [r4, 0x9] + subs r1, r3, 0x2 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bne _0814D312 + adds r7, r4, 0 + adds r7, 0x42 + adds r6, r4, 0 + adds r6, 0x4E + cmp r5, r3 + bcs _0814D2D4 + adds r1, r6, 0 + ldr r2, _0814D2EC @ =gUnknown_2022118 +_0814D2BC: + lsls r0, r5, 8 + adds r0, r2 + ldrh r0, [r0] + ldrh r3, [r1] + adds r0, r3 + strh r0, [r1] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4, 0x9] + cmp r5, r0 + bcc _0814D2BC +_0814D2D4: + ldrh r0, [r6] + cmp r0, 0 + beq _0814D2F0 + movs r0, 0x17 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + b _0814D2FA + .align 2, 0 +_0814D2E8: .4byte gUnknown_846E3C8 +_0814D2EC: .4byte gUnknown_2022118 +_0814D2F0: + movs r0, 0x16 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C +_0814D2FA: + bl sub_800A550 + movs r1, 0 + movs r0, 0 + strh r0, [r7] + strh r0, [r6] + strh r0, [r4, 0x10] + strb r1, [r4, 0xC] + b _0814D314 +_0814D30C: + ldrb r0, [r4, 0xC] + adds r0, 0x1 + strb r0, [r4, 0xC] +_0814D312: + movs r0, 0 +_0814D314: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814D240 + + thumb_func_start sub_814D31C +sub_814D31C: @ 814D31C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrb r4, [r5, 0xC] + cmp r4, 0x1 + beq _0814D34A + cmp r4, 0x1 + bgt _0814D332 + cmp r4, 0 + beq _0814D33C + b _0814D394 +_0814D332: + cmp r4, 0x2 + beq _0814D356 + cmp r4, 0x3 + beq _0814D37A + b _0814D394 +_0814D33C: + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x10 + b _0814D370 +_0814D34A: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _0814D394 + b _0814D39A +_0814D356: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + adds r0, r5, 0 + bl sub_814DA04 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 +_0814D370: + bl sub_8070588 + bl sub_80704D0 + b _0814D394 +_0814D37A: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + bne _0814D39A + movs r0, 0x7 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + movs r0, 0 + strh r4, [r5, 0x12] + b _0814D398 +_0814D394: + ldrb r0, [r5, 0xC] + adds r0, 0x1 +_0814D398: + strb r0, [r5, 0xC] +_0814D39A: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814D31C + + thumb_func_start sub_814D3A4 +sub_814D3A4: @ 814D3A4 + push {r4,r5,lr} + sub sp, 0x10 + adds r5, r0, 0 + ldrb r4, [r5, 0xC] + cmp r4, 0x1 + beq _0814D41C + cmp r4, 0x1 + bgt _0814D3BA + cmp r4, 0 + beq _0814D3C0 + b _0814D456 +_0814D3BA: + cmp r4, 0x2 + beq _0814D434 + b _0814D456 +_0814D3C0: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldrh r1, [r5, 0x14] + cmp r1, 0x3 + bne _0814D3F0 + ldr r0, _0814D3EC @ =gUnknown_846E328 + ldr r2, [r0, 0x14] + ldrb r3, [r5, 0xB] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + bl sub_80F6CD0 + b _0814D40C + .align 2, 0 +_0814D3EC: .4byte gUnknown_846E328 +_0814D3F0: + ldr r0, _0814D418 @ =gUnknown_846E328 + ldr r2, [r0, 0x18] + ldrb r3, [r5, 0xB] + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + bl sub_80F6CD0 +_0814D40C: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + b _0814D456 + .align 2, 0 +_0814D418: .4byte gUnknown_846E328 +_0814D41C: + movs r0, 0 + bl sub_8002E64 + lsls r0, 16 + cmp r0, 0 + bne _0814D45C + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + movs r0, 0x78 + strb r0, [r1] + b _0814D456 +_0814D434: + movs r0, 0x9C + lsls r0, 1 + adds r1, r5, r0 + ldrb r0, [r1] + adds r4, r0, 0 + cmp r4, 0 + beq _0814D448 + subs r0, 0x1 + strb r0, [r1] + b _0814D45C +_0814D448: + movs r0, 0x18 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + strb r4, [r5, 0xC] + b _0814D45C +_0814D456: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D45C: + movs r0, 0 + add sp, 0x10 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814D3A4 + + thumb_func_start sub_814D468 +sub_814D468: @ 814D468 + push {r4,r5,lr} + adds r5, r0, 0 + ldrb r4, [r5, 0xC] + cmp r4, 0x1 + beq _0814D488 + cmp r4, 0x1 + bgt _0814D47C + cmp r4, 0 + beq _0814D482 + b _0814D4B8 +_0814D47C: + cmp r4, 0x2 + beq _0814D498 + b _0814D4B8 +_0814D482: + bl sub_80FA42C + b _0814D4B8 +_0814D488: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814D4BE + bl sub_800AAC0 + b _0814D4B8 +_0814D498: + ldr r0, _0814D4B4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _0814D4BE + movs r0, 0x19 + strb r0, [r5, 0xE] + movs r0, 0x5 + movs r1, 0x1 + movs r2, 0 + bl sub_814BB4C + strb r4, [r5, 0xC] + b _0814D4BE + .align 2, 0 +_0814D4B4: .4byte gUnknown_3003F64 +_0814D4B8: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D4BE: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814D468 + + thumb_func_start sub_814D4C8 +sub_814D4C8: @ 814D4C8 + push {lr} + movs r0, 0 + bl sub_814B6FC + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_814D4C8 + + thumb_func_start sub_814D4D8 +sub_814D4D8: @ 814D4D8 + push {r4-r6,lr} + adds r4, r0, 0 + movs r5, 0 + movs r0, 0x33 + bl sub_8054E90 + strb r5, [r4, 0xD] + movs r1, 0 + strh r5, [r4, 0x10] + movs r0, 0x2 + strh r0, [r4, 0x12] + strh r5, [r4, 0x14] + str r5, [r4, 0x1C] + strh r5, [r4, 0x18] + strh r5, [r4, 0x1A] + str r5, [r4, 0x20] + adds r0, r4, 0 + adds r0, 0x24 + strb r1, [r0] + adds r1, r4, 0 + adds r1, 0x25 + movs r0, 0 + strb r0, [r1] + strh r5, [r4, 0x26] + strh r5, [r4, 0x28] + strh r5, [r4, 0x2E] + ldr r0, _0814D560 @ =0x0000ffff + strh r0, [r4, 0x32] + strh r5, [r4, 0x30] + strh r5, [r4, 0x34] + movs r6, 0 + movs r3, 0 +_0814D518: + lsls r0, r5, 5 + adds r2, r4, r0 + adds r1, r2, 0 + adds r1, 0xA4 + ldr r0, _0814D560 @ =0x0000ffff + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0xA6 + strh r3, [r0] + adds r0, 0x2 + strh r3, [r0] + adds r1, 0x6 + movs r0, 0x1 + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0xAC + strh r3, [r0] + adds r0, 0x2 + strh r3, [r0] + adds r0, 0x2 + strh r3, [r0] + adds r0, 0x2 + strh r3, [r0] + adds r0, 0x2 + strb r6, [r0] + adds r0, 0x1 + strb r6, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _0814D518 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814D560: .4byte 0x0000ffff + thumb_func_end sub_814D4D8 + + thumb_func_start sub_814D564 +sub_814D564: @ 814D564 + push {r4-r6,lr} + sub sp, 0x8 + str r2, [sp, 0x4] + ldr r5, [sp, 0x18] + ldr r6, [sp, 0x1C] + ldr r4, [sp, 0x20] + mov r2, sp + strh r4, [r2] + add r4, sp, 0x4 + ldrb r2, [r4] + strb r2, [r0] + ldrb r2, [r4, 0x1] + strb r2, [r0, 0x1] + ldrb r2, [r4, 0x2] + strb r2, [r0, 0x2] + ldrb r2, [r4, 0x3] + strb r2, [r0, 0x3] + strb r3, [r0, 0x4] + strb r5, [r0, 0x5] + strb r6, [r0, 0x6] + mov r2, sp + ldrb r2, [r2] + strb r2, [r0, 0x7] + mov r2, sp + ldrb r2, [r2, 0x1] + strb r2, [r0, 0x8] + strb r1, [r0, 0x9] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814D564 + + thumb_func_start sub_814D5A4 +sub_814D5A4: @ 814D5A4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, [sp, 0x10] + mov r4, sp + strh r3, [r4] + strb r1, [r0] + strb r2, [r0, 0x1] + mov r1, sp + ldrb r1, [r1] + strb r1, [r0, 0x2] + mov r1, sp + ldrb r1, [r1, 0x1] + strb r1, [r0, 0x3] + strb r5, [r0, 0x4] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814D5A4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_814D5C8.s b/asm/unk_814D5C8.s new file mode 100644 index 000000000..bcb60aa4f --- /dev/null +++ b/asm/unk_814D5C8.s @@ -0,0 +1,3431 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814D5C8 +sub_814D5C8: @ 814D5C8 + push {r4,r5,lr} + sub sp, 0xC + bl sub_814B6F0 + adds r5, r0, 0 + cmp r5, 0 + bne _0814D5DC + movs r0, 0x1 + negs r0, r0 + b _0814D880 +_0814D5DC: + ldrb r0, [r5, 0xC] + cmp r0, 0x9 + bls _0814D5E4 + b _0814D878 +_0814D5E4: + lsls r0, 2 + ldr r1, _0814D5F0 @ =_0814D5F4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814D5F0: .4byte _0814D5F4 + .align 2, 0 +_0814D5F4: + .4byte _0814D61C + .4byte _0814D63A + .4byte _0814D660 + .4byte _0814D66E + .4byte _0814D6F4 + .4byte _0814D73A + .4byte _0814D768 + .4byte _0814D798 + .4byte _0814D7F4 + .4byte _0814D830 +_0814D61C: + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + bl sub_8087E64 + bl sub_80F6808 + b _0814D878 +_0814D63A: + add r0, sp, 0x8 + movs r4, 0 + strh r4, [r0] + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _0814D658 @ =0x01000200 + bl CpuSet + ldr r0, _0814D65C @ =gUnknown_3003E58 + strb r4, [r0] + movs r0, 0x3 + bl sub_815C980 + b _0814D878 + .align 2, 0 +_0814D658: .4byte 0x01000200 +_0814D65C: .4byte gUnknown_3003E58 +_0814D660: + bl sub_8070528 + bl sub_8006B10 + bl sub_80088F0 + b _0814D878 +_0814D66E: + movs r0, 0 + bl sub_8001618 + ldr r1, _0814D6F0 @ =gUnknown_846E3CC + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0xE0 + lsls r0, 1 + adds r1, r5, r0 + movs r0, 0x1 + bl sub_8001FA0 + movs r0, 0x87 + lsls r0, 6 + adds r1, r5, r0 + movs r0, 0x2 + bl sub_8001FA0 + movs r0, 0xC7 + lsls r0, 6 + adds r1, r5, r0 + movs r0, 0x3 + bl sub_8001FA0 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x50 + movs r1, 0 + bl sub_8000A38 + movs r0, 0x52 + movs r1, 0 + bl sub_8000A38 + b _0814D878 + .align 2, 0 +_0814D6F0: .4byte gUnknown_846E3CC +_0814D6F4: + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + b _0814D878 +_0814D73A: + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + ldr r1, _0814D764 @ =gUnknown_8EAFFC0 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _0814D878 + .align 2, 0 +_0814D764: .4byte gUnknown_8EAFFC0 +_0814D768: + bl sub_80F682C + lsls r0, 24 + cmp r0, 0 + beq _0814D774 + b _0814D87E +_0814D774: + bl sub_80F6C6C + bl sub_80F6C98 + adds r0, r5, 0 + bl sub_814EB38 + adds r0, r5, 0 + bl sub_814EBB0 + ldr r0, _0814D794 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x8] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0, 0x8] + b _0814D878 + .align 2, 0 +_0814D794: .4byte gUnknown_2037AB8 +_0814D798: + ldr r0, _0814D7E4 @ =gUnknown_8EAFEA0 + movs r2, 0xC0 + lsls r2, 1 + movs r1, 0 + bl sub_80703EC + ldr r1, _0814D7E8 @ =gUnknown_846ED90 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r1, _0814D7EC @ =gUnknown_846EEC0 + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r1, _0814D7F0 @ =gUnknown_846F058 + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + adds r0, r5, 0 + bl sub_814EC80 + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _0814D878 + .align 2, 0 +_0814D7E4: .4byte gUnknown_8EAFEA0 +_0814D7E8: .4byte gUnknown_846ED90 +_0814D7EC: .4byte gUnknown_846EEC0 +_0814D7F0: .4byte gUnknown_846F058 +_0814D7F4: + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + adds r0, r5, 0 + bl sub_814ECE0 + ldr r0, _0814D82C @ =gUnknown_2021BCA + ldrh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x16 + bl sub_8000A38 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + b _0814D878 + .align 2, 0 +_0814D82C: .4byte gUnknown_2021BCA +_0814D830: + ldr r2, _0814D874 @ =gUnknown_2037AB8 + ldrb r1, [r2, 0x8] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2, 0x8] + movs r0, 0x1 + negs r0, r0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000AF4 + bl sub_814B914 + movs r0, 0 + strb r0, [r5, 0xC] + movs r0, 0x1 + b _0814D880 + .align 2, 0 +_0814D874: .4byte gUnknown_2037AB8 +_0814D878: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D87E: + movs r0, 0 +_0814D880: + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814D5C8 + + thumb_func_start sub_814D888 +sub_814D888: @ 814D888 + push {r4,r5,lr} + sub sp, 0x8 + bl sub_814B6F0 + adds r5, r0, 0 + cmp r5, 0 + bne _0814D89C + movs r0, 0x1 + negs r0, r0 + b _0814D9C2 +_0814D89C: + ldrb r0, [r5, 0xC] + cmp r0, 0x7 + bls _0814D8A4 + b _0814D9BA +_0814D8A4: + lsls r0, 2 + ldr r1, _0814D8B0 @ =_0814D8B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814D8B0: .4byte _0814D8B4 + .align 2, 0 +_0814D8B4: + .4byte _0814D8D4 + .4byte _0814D8DA + .4byte _0814D8E4 + .4byte _0814D8FA + .4byte _0814D906 + .4byte _0814D962 + .4byte _0814D9A2 + .4byte _0814D9B2 +_0814D8D4: + bl sub_80FA42C + b _0814D9BA +_0814D8DA: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0814D9C0 +_0814D8E4: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + bl sub_80704D0 + b _0814D9BA +_0814D8FA: + bl sub_80704D0 + lsls r0, 24 + cmp r0, 0 + beq _0814D9BA + b _0814D9C0 +_0814D906: + movs r4, 0x20 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + str r4, [sp] + str r4, [sp, 0x4] + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + movs r0, 0x3 + bl sub_80020BC + b _0814D9BA +_0814D962: + bl sub_8003ECC + movs r0, 0 + bl sub_80019D0 + movs r0, 0 + bl sub_8001FD4 + movs r0, 0x1 + bl sub_80019D0 + movs r0, 0x1 + bl sub_8001FD4 + movs r0, 0x2 + bl sub_80019D0 + movs r0, 0x2 + bl sub_8001FD4 + movs r0, 0x3 + bl sub_80019D0 + movs r0, 0x3 + bl sub_8001FD4 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000B14 + b _0814D9BA +_0814D9A2: + bl sub_80FCE44 + adds r0, r5, 0 + bl sub_814EF10 + bl sub_815C9F4 + b _0814D9BA +_0814D9B2: + movs r0, 0 + strb r0, [r5, 0xC] + movs r0, 0x1 + b _0814D9C2 +_0814D9BA: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] +_0814D9C0: + movs r0, 0 +_0814D9C2: + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_814D888 + + thumb_func_start sub_814D9CC +sub_814D9CC: @ 814D9CC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0814DA00 @ =gUnknown_2021BCA + ldrh r1, [r4, 0x2C] + ldrh r2, [r4, 0x2A] + adds r1, r2 + strh r1, [r0] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x16 + bl sub_8000A38 + ldrh r0, [r4, 0x12] + cmp r0, 0x7 + bne _0814D9F8 + movs r1, 0x9C + lsls r1, 1 + adds r0, r4, r1 + ldrh r1, [r4, 0x28] + bl sub_814EAD4 +_0814D9F8: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814DA00: .4byte gUnknown_2021BCA + thumb_func_end sub_814D9CC + + thumb_func_start sub_814DA04 +sub_814DA04: @ 814DA04 + movs r1, 0 + ldr r2, _0814DA18 @ =0x0000ff98 + strh r2, [r0, 0x2A] + strh r1, [r0, 0x2C] + ldr r0, _0814DA1C @ =gUnknown_2021BC8 + strh r1, [r0] + ldr r0, _0814DA20 @ =gUnknown_2021BCA + strh r2, [r0] + bx lr + .align 2, 0 +_0814DA18: .4byte 0x0000ff98 +_0814DA1C: .4byte gUnknown_2021BC8 +_0814DA20: .4byte gUnknown_2021BCA + thumb_func_end sub_814DA04 + + thumb_func_start sub_814DA24 +sub_814DA24: @ 814DA24 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r10, r0 + str r1, [sp] + movs r0, 0 + mov r9, r0 + mov r1, r10 + ldrb r1, [r1, 0x9] + cmp r9, r1 + bcc _0814DA42 + b _0814DB60 +_0814DA42: + ldr r1, _0814DB70 @ =gUnknown_846F2EC + mov r2, r9 + lsls r0, r2, 1 + adds r0, r1 + ldrh r2, [r0] + mov r1, r9 + lsls r0, r1, 5 + add r0, r10 + adds r0, 0xA4 + ldrh r3, [r0] + adds r3, 0x85 + lsls r3, 16 + lsrs r3, 16 + ldr r0, _0814DB74 @ =gUnknown_846F470 + adds r1, r2, 0 + bl sub_809881C + lsls r0, 24 + lsrs r0, 24 + mov r2, r9 + lsls r3, r2, 2 + ldr r1, [sp] + adds r1, 0x38 + adds r6, r1, r3 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0814DB78 @ =gUnknown_202063C + adds r1, r0 + str r1, [r6] + ldrb r0, [r1, 0x5] + movs r2, 0xC + orrs r0, r2 + strb r0, [r1, 0x5] + ldr r2, [r6] + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r6] + ldr r0, [sp] + adds r0, 0xC + adds r0, r3 + mov r8, r0 + ldr r0, [r0] + ldrh r0, [r0, 0x8] + adds r0, 0x78 + strh r0, [r1, 0x20] + ldr r1, [r6] + ldr r0, _0814DB7C @ =0x0000fff0 + strh r0, [r1, 0x22] + ldr r3, [r6] + adds r5, r3, 0 + adds r5, 0x2E + movs r0, 0x80 + lsls r0, 2 + strh r0, [r5, 0x2] + movs r0, 0x20 + strh r0, [r5, 0x4] + movs r0, 0x70 + strh r0, [r5, 0xE] + mov r2, r8 + ldr r1, [r2] + ldrh r0, [r1, 0xA] + ldrh r1, [r1, 0x8] + subs r0, r1 + lsls r0, 16 + asrs r1, r0, 16 + adds r0, r1, 0 + cmp r1, 0 + bge _0814DAD4 + adds r0, r1, 0x3 +_0814DAD4: + asrs r0, 2 + strh r0, [r5, 0xC] + lsls r0, r1, 23 + lsrs r7, r0, 16 + movs r2, 0x80 + lsls r2, 2 + adds r2, 0x20 + lsrs r2, 1 + movs r0, 0x7 + movs r1, 0xFE + lsls r1, 6 + str r3, [sp, 0x4] + bl sub_80D8B40 + adds r4, r0, 0 + ldr r0, [r6] + ldrh r0, [r0, 0x20] + lsls r0, 7 + ldr r3, [sp, 0x4] + strh r0, [r3, 0x2E] + lsls r1, r7, 16 + asrs r1, 16 + lsls r4, 16 + asrs r4, 16 + movs r0, 0x7 + adds r2, r4, 0 + bl sub_80D8B40 + strh r0, [r5, 0x6] + movs r0, 0x7 + adds r1, r4, 0 + movs r2, 0x55 + bl sub_80D8ABC + adds r2, r0, 0 + movs r0, 0 + strh r0, [r5, 0x8] + lsls r2, 16 + asrs r2, 16 + movs r0, 0x7 + movs r1, 0xFE + lsls r1, 6 + bl sub_80D8B40 + strh r0, [r5, 0xA] + ldrh r0, [r5, 0xE] + ldr r2, _0814DB80 @ =0xffff8000 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r5, 0xE] + mov r1, r8 + ldr r0, [r1] + movs r2, 0x8 + ldrsh r0, [r0, r2] + cmp r0, 0 + bge _0814DB4C + ldr r0, [r6] + movs r1, 0x1 + bl sub_800843C +_0814DB4C: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r0, r10 + ldrb r0, [r0, 0x9] + cmp r9, r0 + bcs _0814DB60 + b _0814DA42 +_0814DB60: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814DB70: .4byte gUnknown_846F2EC +_0814DB74: .4byte gUnknown_846F470 +_0814DB78: .4byte gUnknown_202063C +_0814DB7C: .4byte 0x0000fff0 +_0814DB80: .4byte 0xffff8000 + thumb_func_end sub_814DA24 + + thumb_func_start sub_814DB84 +sub_814DB84: @ 814DB84 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r5, 0 + adds r4, 0x2E + ldrh r0, [r4, 0x4] + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r5, 0x26] + adds r0, r2 + strh r0, [r5, 0x26] + movs r1, 0xE + ldrsh r0, [r4, r1] + movs r6, 0x80 + lsls r6, 8 + ands r0, r6 + cmp r0, 0 + beq _0814DBEA + ldrh r0, [r4, 0x6] + ldrh r2, [r5, 0x2E] + adds r0, r2 + strh r0, [r5, 0x2E] + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x8] + adds r0, r1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 23 + movs r2, 0xC + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r5, 0x24] + movs r1, 0xE + ldrsh r0, [r4, r1] + ands r0, r6 + cmp r0, 0 + beq _0814DBEA + ldrh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 23 + cmp r0, 0x7E + ble _0814DBEA + movs r0, 0 + strh r0, [r5, 0x24] + ldrh r1, [r4, 0xE] + ldr r0, _0814DC1C @ =0x00007fff + ands r0, r1 + strh r0, [r4, 0xE] +_0814DBEA: + ldrh r0, [r4] + lsls r0, 16 + asrs r0, 23 + strh r0, [r5, 0x20] + movs r2, 0x22 + ldrsh r1, [r5, r2] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + ldrh r2, [r4, 0xE] + ldr r0, _0814DC1C @ =0x00007fff + ands r0, r2 + cmp r1, r0 + blt _0814DC16 + ldr r0, _0814DC20 @ =nullsub_8 + str r0, [r5, 0x1C] + adds r0, r5, 0 + bl sub_80077D8 + adds r0, r5, 0 + bl sub_8007280 +_0814DC16: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814DC1C: .4byte 0x00007fff +_0814DC20: .4byte nullsub_8 + thumb_func_end sub_814DB84 + + thumb_func_start sub_814DC24 +sub_814DC24: @ 814DC24 + push {r4-r7,lr} + adds r6, r0, 0 + movs r5, 0 + ldrb r0, [r6, 0x9] + cmp r5, r0 + bcs _0814DC50 + ldr r7, _0814DC58 @ =gUnknown_846F2EC +_0814DC32: + lsls r0, r5, 1 + adds r0, r7 + ldrh r4, [r0] + adds r0, r4, 0 + bl sub_8008A30 + adds r0, r4, 0 + bl sub_800874C + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r6, 0x9] + cmp r5, r0 + bcc _0814DC32 +_0814DC50: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814DC58: .4byte gUnknown_846F2EC + thumb_func_end sub_814DC24 + + thumb_func_start sub_814DC5C +sub_814DC5C: @ 814DC5C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r6, r0, 0 + str r1, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r1, 0x4E + adds r1, r6 + mov r10, r1 + mov r9, r0 + ldrb r2, [r6, 0x9] + cmp r0, r2 + bcs _0814DD2A + ldr r7, _0814DCC0 @ =gUnknown_846F2D0 +_0814DC80: + mov r3, r10 + ldrh r0, [r3, 0xA] + mov r4, r9 + lsls r1, r4, 1 + add r1, r9 + asrs r0, r1 + lsls r0, 16 + movs r1, 0xE0 + lsls r1, 11 + ands r1, r0 + lsrs r1, 16 + mov r8, r1 + cmp r1, 0 + beq _0814DD1A + ldr r0, [sp, 0x4] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0814DCC4 + lsls r4, 2 + ldr r5, [sp] + adds r5, 0x24 + adds r0, r5, r4 + ldr r0, [r0] + movs r1, 0x1 + bl sub_800838C + b _0814DCD6 + .align 2, 0 +_0814DCC0: .4byte gUnknown_846F2D0 +_0814DCC4: + mov r0, r9 + lsls r4, r0, 2 + ldr r5, [sp] + adds r5, 0x24 + adds r0, r5, r4 + ldr r0, [r0] + movs r1, 0 + bl sub_800838C +_0814DCD6: + adds r3, r5, r4 + ldr r2, [r3] + adds r2, 0x3E + ldrb r0, [r2] + movs r4, 0x5 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + strb r0, [r2] + ldr r2, [r3] + adds r2, 0x2C + ldrb r0, [r2] + subs r4, 0x3C + adds r1, r4, 0 + ands r0, r1 + strb r0, [r2] + ldr r2, [r3] + movs r0, 0x3 + mov r1, r8 + ands r1, r0 + mov r8, r1 + subs r1, 0x1 + lsls r1, 1 + adds r0, r1, r7 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + strh r0, [r2, 0x24] + ldr r2, [r3] + ldr r3, _0814DD38 @ =gUnknown_846F2D1 + adds r1, r3 + movs r0, 0 + ldrsb r0, [r1, r0] + strh r0, [r2, 0x26] +_0814DD1A: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r4, [r6, 0x9] + cmp r9, r4 + bcc _0814DC80 +_0814DD2A: + ldr r0, [sp, 0x4] + cmp r0, 0 + bne _0814DD3C + adds r2, r6, 0 + adds r2, 0x25 + ldrb r1, [r2] + b _0814DE18 + .align 2, 0 +_0814DD38: .4byte gUnknown_846F2D1 +_0814DD3C: + ldrh r0, [r6, 0x28] + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r1, r8 + str r1, [sp, 0x8] + movs r2, 0 + mov r9, r2 + mov r3, r10 + ldrh r1, [r3, 0xC] + lsls r0, r1, 1 + adds r0, 0x3 + adds r6, 0x25 + str r6, [sp, 0xC] + adds r3, r1, 0 + cmp r9, r0 + bge _0814DE0C +_0814DD64: + mov r4, r9 + lsls r1, r4, 2 + ldr r0, [sp] + adds r0, 0x4C + adds r7, r0, r1 + ldr r2, [r7] + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0814DDFA + ldr r0, _0814DDD0 @ =sub_814F0D8 + str r0, [r2, 0x1C] + lsls r1, r4, 1 + ldr r3, _0814DDD4 @ =gUnknown_846F2D6 + adds r0, r1, r3 + movs r4, 0 + ldrsb r4, [r0, r4] + adds r0, r4, 0 + adds r0, 0x78 + strh r0, [r2, 0x20] + ldr r2, [r7] + ldr r0, _0814DDD8 @ =gUnknown_846F2D7 + adds r1, r0 + movs r6, 0 + ldrsb r6, [r1, r6] + mov r1, r8 + lsls r0, r1, 2 + subs r0, 0x88 + subs r0, r6, r0 + strh r0, [r2, 0x22] + ldr r5, [r7] + ldr r2, [sp, 0x8] + lsls r1, r2, 2 + adds r0, r4, 0 + bl __divsi3 + adds r4, r0 + strh r4, [r5, 0x24] + ldr r0, [r7] + strh r6, [r0, 0x26] + mov r3, r10 + ldrb r1, [r3, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0814DDDC + ldr r0, [r7] + movs r1, 0x1 + bl sub_800838C + b _0814DDE4 + .align 2, 0 +_0814DDD0: .4byte sub_814F0D8 +_0814DDD4: .4byte gUnknown_846F2D6 +_0814DDD8: .4byte gUnknown_846F2D7 +_0814DDDC: + ldr r0, [r7] + movs r1, 0 + bl sub_800838C +_0814DDE4: + mov r0, r8 + adds r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r4, r10 + ldrh r3, [r4, 0xC] + cmp r0, 0x3 + bls _0814DDFA + movs r0, 0 + mov r8, r0 +_0814DDFA: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r0, r3, 1 + adds r0, 0x3 + cmp r9, r0 + blt _0814DD64 +_0814DE0C: + ldr r2, [sp, 0xC] + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0814DE22 +_0814DE18: + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + b _0814DE40 +_0814DE22: + ldr r3, [sp, 0x4] + cmp r3, 0x1 + bne _0814DE30 + movs r0, 0x47 + bl sub_80722CC + b _0814DE36 +_0814DE30: + movs r0, 0x46 + bl sub_80722CC +_0814DE36: + ldr r4, [sp, 0xC] + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] +_0814DE40: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_814DC5C + + thumb_func_start sub_814DE50 +sub_814DE50: @ 814DE50 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r2, 0 + ldrb r0, [r5, 0x9] + cmp r2, r0 + bcs _0814DE82 + adds r4, r6, 0 + adds r4, 0x24 + movs r7, 0x4 + adds r3, r0, 0 +_0814DE66: + lsls r0, r2, 2 + adds r0, r4, r0 + ldr r0, [r0] + adds r0, 0x3E + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _0814DE9C + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, r3 + bcc _0814DE66 +_0814DE82: + movs r2, 0 + adds r3, r6, 0 + adds r3, 0x4C + movs r4, 0x4 +_0814DE8A: + lsls r0, r2, 2 + adds r0, r3, r0 + ldr r0, [r0] + adds r0, 0x3E + ldrb r1, [r0] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _0814DEA0 +_0814DE9C: + movs r0, 0 + b _0814DEB8 +_0814DEA0: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xA + bls _0814DE8A + movs r1, 0x2C + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0814DEB6 + movs r0, 0 + strh r0, [r5, 0x2C] +_0814DEB6: + movs r0, 0x1 +_0814DEB8: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814DE50 + + thumb_func_start sub_814DEC0 +sub_814DEC0: @ 814DEC0 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r4, r1, 16 + lsrs r4, 16 + movs r7, 0 + movs r5, 0xE1 + lsls r5, 4 + adds r0, r4, 0 + adds r1, r5, 0 + bl __udivsi3 + strh r0, [r6, 0x4] + adds r0, r4, 0 + adds r1, r5, 0 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3C + bl __udivsi3 + strh r0, [r6, 0x6] + adds r0, r4, 0 + movs r1, 0x3C + bl __umodsi3 + lsls r0, 24 + asrs r0, 16 + movs r1, 0x4 + bl sub_80D8AA0 + adds r2, r7, 0 + lsls r0, 16 + asrs r3, r0, 16 + movs r0, 0x7 + mov r12, r0 + ldr r5, _0814DF3C @ =gUnknown_846E450 + movs r4, 0x1 +_0814DF0C: + mov r0, r12 + subs r1, r0, r2 + adds r0, r3, 0 + asrs r0, r1 + ands r0, r4 + cmp r0, 0 + beq _0814DF22 + lsls r0, r2, 2 + adds r0, r5 + ldr r0, [r0] + adds r7, r0 +_0814DF22: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _0814DF0C + ldr r1, _0814DF40 @ =0x000f4240 + adds r0, r7, 0 + bl __udivsi3 + strh r0, [r6, 0x8] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814DF3C: .4byte gUnknown_846E450 +_0814DF40: .4byte 0x000f4240 + thumb_func_end sub_814DEC0 + + thumb_func_start sub_814DF44 +sub_814DF44: @ 814DF44 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + mov r8, r3 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + movs r2, 0x1 + negs r2, r2 + movs r0, 0x2 + mov r1, r8 + bl sub_8005ED4 + lsls r4, 2 + lsrs r0, 1 + subs r4, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r5, 1 + adds r0, r5 + ldr r1, _0814DFA0 @ =gUnknown_846E3DC + adds r0, r1 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + mov r0, r8 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r4, 0 + movs r3, 0 + bl sub_812E51C + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814DFA0: .4byte gUnknown_846E3DC + thumb_func_end sub_814DF44 + + thumb_func_start sub_814DFA4 +sub_814DFA4: @ 814DFA4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x38 + str r0, [sp, 0xC] + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x10] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x14] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x18] + movs r0, 0 + mov r8, r0 + movs r1, 0 + str r1, [sp, 0x1C] + movs r2, 0 + str r2, [sp, 0x20] + ldr r4, [sp, 0xC] + adds r4, 0x68 + str r4, [sp, 0x24] + ldr r0, [sp, 0xC] + ldrb r0, [r0, 0x9] + cmp r8, r0 + bcc _0814DFE0 + b _0814E30C +_0814DFE0: + ldr r1, [sp, 0x10] + lsls r1, 2 + str r1, [sp, 0x28] + movs r4, 0xDD + lsls r4, 1 + ldr r2, [sp, 0xC] + adds r4, r2, r4 + str r4, [sp, 0x2C] +_0814DFF0: + bl sub_813CC90 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + beq _0814E0E4 + cmp r0, 0x1 + bgt _0814E00A + cmp r0, 0 + beq _0814E01A + mov r1, r8 + lsls r1, 3 + mov r9, r1 + b _0814E0C8 +_0814E00A: + ldr r0, [sp, 0x10] + cmp r0, 0x2 + bne _0814E012 + b _0814E200 +_0814E012: + mov r1, r8 + lsls r1, 3 + mov r9, r1 + b _0814E0C8 +_0814E01A: + ldr r0, [sp, 0x24] + adds r0, 0x20 + add r0, r8 + ldrb r0, [r0] + str r0, [sp, 0x1C] + mov r0, r8 + lsls r3, r0, 1 + ldr r2, [sp, 0x24] + adds r2, 0xC + cmp r0, 0 + beq _0814E048 + adds r0, r2, r3 + mov r1, r8 + subs r1, 0x1 + lsls r1, 1 + adds r1, r2, r1 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _0814E048 + mov r4, r8 + adds r1, r4, 0 + str r1, [sp, 0x20] +_0814E048: + ldr r1, [sp, 0x28] + ldr r4, [sp, 0x10] + adds r0, r1, r4 + lsls r0, 1 + adds r0, r3, r0 + adds r0, r2, r0 + ldrh r1, [r0] + ldr r0, _0814E0D8 @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x4 + bl sub_8008E78 + ldr r0, _0814E0DC @ =gUnknown_846F4B8 + ldr r1, [sp, 0x28] + adds r0, r1, r0 + ldr r5, [r0] + movs r0, 0x2 + adds r1, r5, 0 + movs r2, 0x1 + negs r2, r2 + bl sub_8005ED4 + ldr r2, [sp, 0x14] + subs r0, r2, r0 + subs r0, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, [sp, 0x2C] + ldrb r0, [r4] + mov r1, r8 + lsls r6, r1, 3 + subs r4, r6, r1 + lsls r4, 1 + ldr r2, [sp, 0x18] + adds r4, r2, r4 + lsls r4, 24 + lsrs r4, 24 + ldr r1, _0814E0E0 @ =gUnknown_846E3DC + str r1, [sp] + movs r2, 0 + str r2, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + adds r2, r7, 0 + adds r3, r4, 0 + bl sub_812E51C + ldr r1, [sp, 0x2C] + ldrb r0, [r1] + adds r2, r7, 0 + subs r2, 0x18 + lsls r2, 24 + lsrs r2, 24 + ldr r1, _0814E0E0 @ =gUnknown_846E3DC + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + ldr r1, _0814E0D8 @ =gUnknown_2021CD0 + str r1, [sp, 0x8] + movs r1, 0x2 + adds r3, r4, 0 + bl sub_812E51C + mov r9, r6 +_0814E0C8: + ldr r6, [sp, 0x20] + adds r6, 0xA2 + ldr r2, [sp, 0x1C] + lsls r5, r2, 5 + movs r4, 0x1 + add r4, r8 + mov r10, r4 + b _0814E27E + .align 2, 0 +_0814E0D8: .4byte gUnknown_2021CD0 +_0814E0DC: .4byte gUnknown_846F4B8 +_0814E0E0: .4byte gUnknown_846E3DC +_0814E0E4: + ldr r0, [sp, 0x24] + add r0, r8 + adds r0, 0x28 + ldrb r0, [r0] + str r0, [sp, 0x1C] + mov r0, r8 + lsls r3, r0, 1 + ldr r2, [sp, 0x24] + adds r2, 0xC + cmp r0, 0 + beq _0814E116 + adds r0, r3, 0 + adds r0, 0xA + adds r0, r2, r0 + mov r4, r8 + lsls r1, r4, 1 + adds r1, 0x8 + adds r1, r2, r1 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _0814E116 + mov r1, r8 + adds r0, r1, 0 + str r0, [sp, 0x20] +_0814E116: + ldr r0, [sp, 0x28] + ldr r1, [sp, 0x10] + adds r4, r0, r1 + lsls r4, 1 + adds r4, r3, r4 + adds r4, r2, r4 + ldrh r1, [r4] + lsrs r1, 4 + ldr r0, _0814E1E4 @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + movs r3, 0 + ldrb r0, [r4] + movs r7, 0xF + ands r7, r0 + movs r2, 0 + ldr r4, [sp, 0x10] + lsls r4, 2 + str r4, [sp, 0x34] + mov r0, r8 + lsls r0, 3 + mov r9, r0 + ldr r1, [sp, 0x14] + subs r1, 0x4 + str r1, [sp, 0x30] + ldr r6, [sp, 0x20] + adds r6, 0xA2 + ldr r4, [sp, 0x1C] + lsls r5, r4, 5 + movs r0, 0x1 + add r0, r8 + mov r10, r0 + movs r1, 0x1 + mov r12, r1 + ldr r4, _0814E1E8 @ =gUnknown_846E450 +_0814E160: + movs r0, 0x3 + subs r1, r0, r2 + adds r0, r7, 0 + asrs r0, r1 + mov r1, r12 + ands r0, r1 + cmp r0, 0 + beq _0814E178 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + adds r3, r0 +_0814E178: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0814E160 + adds r0, r3, 0 + ldr r1, _0814E1EC @ =0x000f4240 + bl __udivsi3 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _0814E1F0 @ =gUnknown_2021CF0 + adds r1, r7, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0814E1F4 @ =gUnknown_846F4B8 + ldr r2, [sp, 0x34] + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _0814E1F8 @ =gUnknown_2021D18 + bl sub_8008FCC + movs r0, 0x2 + ldr r1, _0814E1F8 @ =gUnknown_2021D18 + movs r2, 0 + bl sub_8005ED4 + adds r2, r0, 0 + ldr r4, [sp, 0x30] + subs r2, r4, r2 + lsls r2, 24 + lsrs r2, 24 + ldr r1, [sp, 0x2C] + ldrb r0, [r1] + mov r4, r9 + mov r1, r8 + subs r3, r4, r1 + lsls r3, 1 + ldr r4, [sp, 0x18] + adds r3, r4, r3 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _0814E1FC @ =gUnknown_846E3DC + str r1, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r1, _0814E1F8 @ =gUnknown_2021D18 + str r1, [sp, 0x8] + movs r1, 0x2 + bl sub_812E51C + b _0814E27E + .align 2, 0 +_0814E1E4: .4byte gUnknown_2021CD0 +_0814E1E8: .4byte gUnknown_846E450 +_0814E1EC: .4byte 0x000f4240 +_0814E1F0: .4byte gUnknown_2021CF0 +_0814E1F4: .4byte gUnknown_846F4B8 +_0814E1F8: .4byte gUnknown_2021D18 +_0814E1FC: .4byte gUnknown_846E3DC +_0814E200: + mov r2, r8 + str r2, [sp, 0x1C] + mov r0, r8 + adds r4, r0, 0 + str r4, [sp, 0x20] + lsls r5, r0, 5 + ldr r1, [sp, 0xC] + adds r0, r1, r5 + adds r0, 0xA4 + ldrb r2, [r0] + cmp r2, 0x2B + bls _0814E21A + movs r2, 0 +_0814E21A: + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + ldr r0, _0814E294 @ =gUnknown_83DF7E8 + adds r1, r0 + ldr r0, _0814E298 @ =gUnknown_2021CD0 + bl sub_8008D84 + ldr r0, _0814E29C @ =gUnknown_846F4B8 + ldr r1, [r0, 0x8] + ldr r0, _0814E2A0 @ =gUnknown_2021D18 + bl sub_8008FCC + movs r0, 0x2 + ldr r1, _0814E2A0 @ =gUnknown_2021D18 + movs r2, 0x1 + negs r2, r2 + bl sub_8005ED4 + adds r2, r0, 0 + ldr r4, [sp, 0x14] + subs r2, r4, r2 + subs r2, 0x4 + lsls r2, 24 + lsrs r2, 24 + ldr r1, [sp, 0x2C] + ldrb r0, [r1] + mov r1, r8 + lsls r4, r1, 3 + subs r3, r4, r1 + lsls r3, 1 + ldr r1, [sp, 0x18] + adds r3, r1, r3 + lsls r3, 24 + lsrs r3, 24 + ldr r1, _0814E2A4 @ =gUnknown_846E3DC + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + ldr r1, _0814E2A0 @ =gUnknown_2021D18 + str r1, [sp, 0x8] + movs r1, 0x2 + bl sub_812E51C + mov r9, r4 + mov r6, r8 + adds r6, 0xA2 + movs r2, 0x1 + add r2, r8 + mov r10, r2 +_0814E27E: + ldr r0, [sp, 0x1C] + ldr r4, [sp, 0xC] + ldrb r4, [r4, 0x8] + cmp r0, r4 + bne _0814E2B0 + ldr r0, _0814E2A8 @ =gUnknown_2021D04 + ldr r1, _0814E2AC @ =gUnknown_841D020 + bl sub_8008D84 + b _0814E2B8 + .align 2, 0 +_0814E294: .4byte gUnknown_83DF7E8 +_0814E298: .4byte gUnknown_2021CD0 +_0814E29C: .4byte gUnknown_846F4B8 +_0814E2A0: .4byte gUnknown_2021D18 +_0814E2A4: .4byte gUnknown_846E3DC +_0814E2A8: .4byte gUnknown_2021D04 +_0814E2AC: .4byte gUnknown_841D020 +_0814E2B0: + ldr r0, _0814E31C @ =gUnknown_2021D04 + ldr r1, _0814E320 @ =gUnknown_841D02C + bl sub_8008D84 +_0814E2B8: + ldr r4, _0814E31C @ =gUnknown_2021D04 + strb r6, [r4] + adds r1, r5, 0 + adds r1, 0x98 + ldr r0, [sp, 0xC] + adds r1, r0, r1 + movs r0, 0 + bl sub_813CCAC + ldr r0, _0814E324 @ =gUnknown_2021D18 + adds r1, r4, 0 + bl sub_813CCC8 + ldr r1, [sp, 0x2C] + ldrb r0, [r1] + mov r2, r9 + mov r4, r8 + subs r3, r2, r4 + lsls r3, 1 + ldr r1, [sp, 0x18] + adds r3, r1, r3 + lsls r3, 24 + lsrs r3, 24 + ldr r2, _0814E328 @ =gUnknown_846E3DC + str r2, [sp] + movs r4, 0 + str r4, [sp, 0x4] + ldr r1, _0814E324 @ =gUnknown_2021D18 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x4 + bl sub_812E51C + mov r2, r10 + lsls r0, r2, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, [sp, 0xC] + ldrb r4, [r4, 0x9] + cmp r8, r4 + bcs _0814E30C + b _0814DFF0 +_0814E30C: + add sp, 0x38 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814E31C: .4byte gUnknown_2021D04 +_0814E320: .4byte gUnknown_841D02C +_0814E324: .4byte gUnknown_2021D18 +_0814E328: .4byte gUnknown_846E3DC + thumb_func_end sub_814DFA4 + + thumb_func_start sub_814E32C +sub_814E32C: @ 814E32C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + mov r8, r0 + movs r0, 0 + mov r10, r0 + movs r6, 0 + movs r1, 0 + str r1, [sp, 0xC] + mov r2, r8 + adds r2, 0x68 + str r2, [sp, 0x10] + movs r4, 0xDD + lsls r4, 1 + add r4, r8 + mov r9, r4 + ldrb r0, [r4] + movs r1, 0x4 + bl sub_8004950 + lsls r0, 27 + movs r1, 0xD6 + lsls r1, 24 + adds r0, r1 + lsrs r7, r0, 24 + movs r0, 0x9C + lsls r0, 1 + add r0, r8 + ldr r2, [sp, 0x10] + ldrh r1, [r2, 0x4] + bl sub_814DEC0 + ldrb r0, [r4] + ldr r4, _0814E560 @ =gUnknown_846E3DC + str r4, [sp] + str r6, [sp, 0x4] + ldr r1, _0814E564 @ =gUnknown_841D050 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2 + adds r3, r7, 0 + bl sub_812E51C + ldr r4, _0814E568 @ =gUnknown_841D088 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0xBE + subs r0, r1, r0 + lsls r0, 24 + lsrs r6, r0, 24 + mov r2, r9 + ldrb r0, [r2] + ldr r1, _0814E560 @ =gUnknown_846E3DC + str r1, [sp] + mov r2, r10 + str r2, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + adds r0, r6, 0 + subs r0, 0x20 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x9F + lsls r0, 1 + add r0, r8 + movs r4, 0 + ldrsh r1, [r0, r4] + ldr r0, _0814E56C @ =gUnknown_2021CD0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r0, _0814E570 @ =gUnknown_2021CF0 + movs r1, 0xA0 + lsls r1, 1 + add r1, r8 + movs r2, 0 + ldrsh r1, [r1, r2] + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r5, _0814E574 @ =gUnknown_2021D18 + ldr r1, _0814E578 @ =gUnknown_841D080 + adds r0, r5, 0 + bl sub_8008FCC + mov r4, r9 + ldrb r0, [r4] + ldr r1, _0814E560 @ =gUnknown_846E3DC + str r1, [sp] + mov r2, r10 + str r2, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + ldr r4, _0814E57C @ =gUnknown_841D078 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + subs r1, r6, 0x3 + subs r1, r0 + lsls r1, 24 + lsrs r6, r1, 24 + mov r1, r9 + ldrb r0, [r1] + ldr r2, _0814E560 @ =gUnknown_846E3DC + str r2, [sp] + mov r1, r10 + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + adds r0, r6, 0 + subs r0, 0x9 + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0x9E + lsls r0, 1 + add r0, r8 + movs r2, 0 + ldrsh r1, [r0, r2] + ldr r0, _0814E56C @ =gUnknown_2021CD0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8008E78 + ldr r1, _0814E580 @ =gUnknown_841D074 + adds r0, r5, 0 + bl sub_8008FCC + mov r4, r9 + ldrb r0, [r4] + ldr r1, _0814E560 @ =gUnknown_846E3DC + str r1, [sp] + mov r2, r10 + str r2, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + adds r0, r7, 0 + adds r0, 0xE + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] + ldr r4, _0814E560 @ =gUnknown_846E3DC + str r4, [sp] + mov r1, r10 + str r1, [sp, 0x4] + ldr r1, _0814E584 @ =gUnknown_841D058 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2 + adds r3, r7, 0 + bl sub_812E51C + ldr r4, _0814E588 @ =gUnknown_841D098 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r2, 0xBE + subs r0, r2, r0 + lsls r0, 24 + str r0, [sp, 0x18] + lsrs r6, r0, 24 + mov r1, r9 + ldrb r0, [r1] + ldr r2, _0814E560 @ =gUnknown_846E3DC + str r2, [sp] + mov r1, r10 + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x3 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + mov r4, r8 + ldrb r2, [r4, 0x16] + ldrh r0, [r4, 0x16] + mov r12, r0 + movs r1, 0x7 + mov r9, r1 + movs r5, 0x1 + ldr r3, _0814E58C @ =gUnknown_846E450 +_0814E4CC: + mov r4, r9 + mov r0, r10 + subs r1, r4, r0 + adds r0, r2, 0 + asrs r0, r1 + ands r0, r5 + cmp r0, 0 + beq _0814E4EA + mov r1, r10 + lsls r0, r1, 2 + adds r0, r3 + ldr r0, [r0] + ldr r4, [sp, 0xC] + adds r4, r0 + str r4, [sp, 0xC] +_0814E4EA: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + cmp r0, 0x7 + bls _0814E4CC + ldr r0, _0814E56C @ =gUnknown_2021CD0 + mov r2, r12 + lsrs r1, r2, 8 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0814E570 @ =gUnknown_2021CF0 + ldr r1, _0814E590 @ =0x000f4240 + ldr r0, [sp, 0xC] + bl __udivsi3 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + ldr r4, _0814E574 @ =gUnknown_2021D18 + ldr r1, _0814E594 @ =gUnknown_841D090 + adds r0, r4, 0 + bl sub_8008FCC + adds r0, r6, 0 + subs r0, 0x26 + lsls r0, 24 + lsrs r6, r0, 24 + mov r0, r8 + adds r0, 0x25 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0814E59C + movs r0, 0xDD + lsls r0, 1 + add r0, r8 + ldrb r0, [r0] + ldr r1, _0814E598 @ =gUnknown_846E3EB + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + b _0814E5B6 + .align 2, 0 +_0814E560: .4byte gUnknown_846E3DC +_0814E564: .4byte gUnknown_841D050 +_0814E568: .4byte gUnknown_841D088 +_0814E56C: .4byte gUnknown_2021CD0 +_0814E570: .4byte gUnknown_2021CF0 +_0814E574: .4byte gUnknown_2021D18 +_0814E578: .4byte gUnknown_841D080 +_0814E57C: .4byte gUnknown_841D078 +_0814E580: .4byte gUnknown_841D074 +_0814E584: .4byte gUnknown_841D058 +_0814E588: .4byte gUnknown_841D098 +_0814E58C: .4byte gUnknown_846E450 +_0814E590: .4byte 0x000f4240 +_0814E594: .4byte gUnknown_841D090 +_0814E598: .4byte gUnknown_846E3EB +_0814E59C: + movs r0, 0xDD + lsls r0, 1 + add r0, r8 + ldrb r0, [r0] + ldr r1, _0814E630 @ =gUnknown_846E3DC + str r1, [sp] + str r2, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C +_0814E5B6: + adds r0, r7, 0 + adds r0, 0xE + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0xDD + lsls r4, 1 + add r8, r4 + mov r1, r8 + ldrb r0, [r1] + ldr r2, _0814E630 @ =gUnknown_846E3DC + mov r9, r2 + str r2, [sp] + movs r5, 0 + str r5, [sp, 0x4] + ldr r1, _0814E634 @ =gUnknown_841D068 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x2 + adds r3, r7, 0 + bl sub_812E51C + ldr r0, _0814E638 @ =gUnknown_2021CD0 + ldr r4, [sp, 0x10] + ldrh r1, [r4, 0x8] + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + ldr r4, _0814E63C @ =gUnknown_2021D18 + ldr r1, _0814E640 @ =gUnknown_841D0A4 + adds r0, r4, 0 + bl sub_8008FCC + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0xBE + subs r1, r0 + lsls r1, 24 + lsrs r6, r1, 24 + mov r1, r8 + ldrb r0, [r1] + mov r2, r9 + str r2, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_812E51C + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814E630: .4byte gUnknown_846E3DC +_0814E634: .4byte gUnknown_841D068 +_0814E638: .4byte gUnknown_2021CD0 +_0814E63C: .4byte gUnknown_2021D18 +_0814E640: .4byte gUnknown_841D0A4 + thumb_func_end sub_814E32C + + thumb_func_start sub_814E644 +sub_814E644: @ 814E644 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r6, r1, 0 + adds r0, r6, 0 + adds r0, 0x80 + ldrb r0, [r0] + cmp r0, 0x5 + bls _0814E658 + b _0814E7F8 +_0814E658: + lsls r0, 2 + ldr r1, _0814E664 @ =_0814E668 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814E664: .4byte _0814E668 + .align 2, 0 +_0814E668: + .4byte _0814E680 + .4byte _0814E6CC + .4byte _0814E6E0 + .4byte _0814E704 + .4byte _0814E7D8 + .4byte _0814E7E0 +_0814E680: + ldrb r0, [r4, 0x9] + subs r0, 0x2 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0 + bl sub_814EB04 + ldrh r0, [r4, 0x12] + lsls r0, 3 + ldr r2, _0814E6A8 @ =gUnknown_846E3D0 + mov r1, sp + adds r0, r2 + ldm r0!, {r2,r3} + stm r1!, {r2,r3} + ldrh r0, [r4, 0x12] + cmp r0, 0xD + bne _0814E6B0 + ldr r0, _0814E6AC @ =gUnknown_846E448 + adds r0, 0x4 + b _0814E6B2 + .align 2, 0 +_0814E6A8: .4byte gUnknown_846E3D0 +_0814E6AC: .4byte gUnknown_846E448 +_0814E6B0: + ldr r0, _0814E6C8 @ =gUnknown_846E448 +_0814E6B2: + adds r0, r5, r0 + ldrb r1, [r0] + mov r0, sp + strb r1, [r0, 0x4] + mov r0, sp + bl sub_8003CE4 + adds r1, r6, 0 + adds r1, 0x82 + strb r0, [r1] + b _0814E7F8 + .align 2, 0 +_0814E6C8: .4byte gUnknown_846E448 +_0814E6CC: + adds r4, r6, 0 + adds r4, 0x82 + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0 + bl sub_800445C + b _0814E7F8 +_0814E6E0: + adds r5, r6, 0 + adds r5, 0x82 + ldrb r0, [r5] + ldr r4, _0814E700 @ =0x0000021d + adds r1, r4, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r0, [r5] + movs r1, 0 + adds r2, r4, 0 + movs r3, 0xD + bl sub_810F2E8 + b _0814E7F8 + .align 2, 0 +_0814E700: .4byte 0x0000021d +_0814E704: + ldrb r0, [r4, 0x9] + subs r0, 0x2 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4, 0x12] + cmp r0, 0xC + beq _0814E764 + cmp r0, 0xC + bgt _0814E71C + cmp r0, 0xB + beq _0814E722 + b _0814E7F8 +_0814E71C: + cmp r0, 0xD + beq _0814E7B4 + b _0814E7F8 +_0814E722: + adds r0, r6, 0 + adds r0, 0x82 + ldrb r0, [r0] + ldr r3, _0814E75C @ =gUnknown_841D0A8 + movs r1, 0x16 + movs r2, 0x3 + bl sub_814DF44 + ldr r0, _0814E760 @ =gUnknown_846E448 + adds r0, r5, r0 + ldrb r3, [r0] + lsls r3, 3 + ldrb r1, [r4, 0x9] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0xB0 + bl sub_814DFA4 + adds r1, r6, 0 + adds r1, 0x80 + movs r0, 0x5 + b _0814E800 + .align 2, 0 +_0814E75C: .4byte gUnknown_841D0A8 +_0814E760: .4byte gUnknown_846E448 +_0814E764: + adds r0, r6, 0 + adds r0, 0x82 + ldrb r0, [r0] + ldr r2, _0814E7AC @ =gUnknown_846F4B8 + adds r1, r4, 0 + adds r1, 0x8F + ldrb r1, [r1] + adds r1, 0x3 + lsls r1, 2 + adds r1, r2 + ldr r3, [r1] + movs r1, 0x16 + movs r2, 0x4 + bl sub_814DF44 + ldr r0, _0814E7B0 @ =gUnknown_846E448 + adds r0, r5, r0 + ldrb r3, [r0] + lsls r3, 3 + ldrb r1, [r4, 0x9] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0xB0 + bl sub_814DFA4 + adds r1, r6, 0 + adds r1, 0x80 + movs r0, 0x5 + b _0814E800 + .align 2, 0 +_0814E7AC: .4byte gUnknown_846F4B8 +_0814E7B0: .4byte gUnknown_846E448 +_0814E7B4: + adds r0, r6, 0 + adds r0, 0x82 + ldrb r0, [r0] + ldr r3, _0814E7D4 @ =gUnknown_841D0C0 + movs r1, 0x18 + movs r2, 0x3 + bl sub_814DF44 + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0xC0 + movs r3, 0x10 + bl sub_814DFA4 + b _0814E7F8 + .align 2, 0 +_0814E7D4: .4byte gUnknown_841D0C0 +_0814E7D8: + adds r0, r4, 0 + bl sub_814E32C + b _0814E7F8 +_0814E7E0: + adds r0, r6, 0 + adds r0, 0x82 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + adds r1, r6, 0 + adds r1, 0x80 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + b _0814E804 +_0814E7F8: + adds r1, r6, 0 + adds r1, 0x80 + ldrb r0, [r1] + adds r0, 0x1 +_0814E800: + strb r0, [r1] + movs r0, 0 +_0814E804: + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_814E644 + + thumb_func_start sub_814E80C +sub_814E80C: @ 814E80C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0xDD + lsls r0, 1 + adds r5, r4, r0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r5] + bl sub_8003E3C + adds r0, r4, 0 + bl sub_814EBB0 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_814E80C + + thumb_func_start sub_814E830 +sub_814E830: @ 814E830 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + mov r9, r0 + mov r10, r0 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0814E864 @ =gUnknown_3005098 + adds r7, r0, r1 + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r0, 0x1 + beq _0814E8B0 + cmp r0, 0x1 + bgt _0814E868 + cmp r0, 0 + beq _0814E876 + b _0814EA66 + .align 2, 0 +_0814E864: .4byte gUnknown_3005098 +_0814E868: + cmp r0, 0x2 + bne _0814E86E + b _0814EA2C +_0814E86E: + cmp r0, 0x3 + bne _0814E874 + b _0814EA40 +_0814E874: + b _0814EA66 +_0814E876: + ldr r0, _0814E8A8 @ =gUnknown_846E3F0 + bl sub_8003CE4 + strh r0, [r7, 0x2] + lsls r0, 24 + lsrs r0, 24 + bl sub_8003FA0 + ldrb r0, [r7, 0x2] + movs r1, 0 + bl sub_800445C + ldrb r0, [r7, 0x2] + ldr r4, _0814E8AC @ =0x0000021d + adds r1, r4, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r0, [r7, 0x2] + movs r1, 0 + adds r2, r4, 0 + movs r3, 0xD + bl sub_810F2E8 + b _0814EA66 + .align 2, 0 +_0814E8A8: .4byte gUnknown_846E3F0 +_0814E8AC: .4byte 0x0000021d +_0814E8B0: + ldr r5, _0814E9FC @ =gUnknown_841D118 + movs r0, 0x1 + negs r0, r0 + mov r8, r0 + movs r0, 0x2 + adds r1, r5, 0 + mov r2, r8 + bl sub_8005ED4 + lsrs r0, 1 + movs r4, 0x60 + subs r0, r4, r0 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r7, 0x2] + ldr r6, _0814EA00 @ =gUnknown_846E3E5 + str r6, [sp] + mov r1, r9 + str r1, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x2 + bl sub_812E51C + ldr r5, _0814EA04 @ =gUnknown_841D124 + movs r0, 0x2 + adds r1, r5, 0 + mov r2, r8 + bl sub_8005ED4 + lsrs r0, 1 + subs r4, r0 + lsls r4, 24 + lsrs r2, r4, 24 + ldrb r0, [r7, 0x2] + str r6, [sp] + mov r1, r9 + str r1, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x12 + bl sub_812E51C + movs r0, 0x2A + str r0, [sp, 0xC] + ldr r1, _0814EA08 @ =gUnknown_2021D18 + mov r8, r1 +_0814E90E: + mov r1, r9 + adds r1, 0x2 + ldr r0, _0814EA0C @ =gUnknown_2021CD0 + movs r2, 0 + movs r3, 0x1 + bl sub_8008E78 + mov r0, r8 + ldr r1, _0814EA10 @ =gUnknown_841D13C + bl sub_8008FCC + ldrb r0, [r7, 0x2] + ldr r1, _0814EA14 @ =gUnknown_846E3DC + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r2, 0x4 + ldr r3, [sp, 0xC] + bl sub_812E51C + movs r3, 0 + mov r0, r9 + lsls r4, r0, 1 + ldr r1, [sp, 0xC] + adds r1, 0xE + str r1, [sp, 0x10] + movs r0, 0x1 + add r9, r0 + adds r0, r4, r7 + ldrh r0, [r0, 0x4] + movs r2, 0xFF + ands r2, r0 + movs r6, 0x1 + ldr r5, _0814EA18 @ =gUnknown_846E450 +_0814E958: + movs r0, 0x7 + subs r1, r0, r3 + adds r0, r2, 0 + asrs r0, r1 + ands r0, r6 + cmp r0, 0 + beq _0814E96E + lsls r0, r3, 2 + adds r0, r5 + ldr r0, [r0] + add r10, r0 +_0814E96E: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x7 + bls _0814E958 + adds r0, r4, r7 + ldrh r1, [r0, 0x4] + lsrs r1, 8 + ldr r0, _0814EA0C @ =gUnknown_2021CD0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8008E78 + mov r0, r10 + ldr r1, _0814EA1C @ =0x000f4240 + bl __udivsi3 + adds r1, r0, 0 + ldr r0, _0814EA20 @ =gUnknown_2021CF0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8008E78 + mov r0, r8 + ldr r1, _0814EA24 @ =gUnknown_841D090 + bl sub_8008FCC + movs r1, 0 + strb r1, [r0] + adds r0, 0x1 + ldr r1, _0814EA28 @ =gUnknown_841D098 + bl sub_8008D84 + movs r0, 0x3 + mov r1, r8 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0xC0 + subs r1, r0 + lsls r1, 24 + lsrs r2, r1, 24 + ldrb r0, [r7, 0x2] + ldr r1, _0814EA14 @ =gUnknown_846E3DC + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + mov r1, r8 + str r1, [sp, 0x8] + movs r1, 0x3 + ldr r3, [sp, 0xC] + bl sub_812E51C + ldr r1, [sp, 0x10] + lsls r0, r1, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + movs r0, 0 + mov r10, r0 + mov r1, r9 + lsls r0, r1, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0x3 + bls _0814E90E + ldrb r0, [r7, 0x2] + movs r1, 0x3 + bl sub_8003F20 + b _0814EA66 + .align 2, 0 +_0814E9FC: .4byte gUnknown_841D118 +_0814EA00: .4byte gUnknown_846E3E5 +_0814EA04: .4byte gUnknown_841D124 +_0814EA08: .4byte gUnknown_2021D18 +_0814EA0C: .4byte gUnknown_2021CD0 +_0814EA10: .4byte gUnknown_841D13C +_0814EA14: .4byte gUnknown_846E3DC +_0814EA18: .4byte gUnknown_846E450 +_0814EA1C: .4byte 0x000f4240 +_0814EA20: .4byte gUnknown_2021CF0 +_0814EA24: .4byte gUnknown_841D090 +_0814EA28: .4byte gUnknown_841D098 +_0814EA2C: + ldr r0, _0814EA3C @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0814EA66 + b _0814EA6C + .align 2, 0 +_0814EA3C: .4byte gUnknown_30030F0 +_0814EA40: + ldrb r0, [r7, 0x2] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r7, 0x2] + bl sub_80040B8 + ldrb r0, [r7, 0x2] + bl sub_8003E3C + adds r0, r4, 0 + bl sub_8077508 + bl sub_8069B34 + bl sub_806994C + mov r0, r9 + b _0814EA6A +_0814EA66: + ldrh r0, [r7] + adds r0, 0x1 +_0814EA6A: + strh r0, [r7] +_0814EA6C: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_814E830 + + thumb_func_start sub_814EA7C +sub_814EA7C: @ 814EA7C + push {lr} + bl sub_8069940 + ldr r0, _0814EAC4 @ =sub_814E830 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0814EAC8 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _0814EACC @ =gUnknown_300500C + ldr r2, [r0] + movs r3, 0xAF + lsls r3, 4 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, 0xC] + adds r3, 0x2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, 0xE] + adds r3, 0x2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, 0x10] + ldr r0, _0814EAD0 @ =0x00000af6 + adds r2, r0 + ldrh r0, [r2] + strh r0, [r1, 0x12] + pop {r0} + bx r0 + .align 2, 0 +_0814EAC4: .4byte sub_814E830 +_0814EAC8: .4byte gUnknown_3005090 +_0814EACC: .4byte gUnknown_300500C +_0814EAD0: .4byte 0x00000af6 + thumb_func_end sub_814EA7C + + thumb_func_start sub_814EAD4 +sub_814EAD4: @ 814EAD4 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + bl sub_814DEC0 + movs r0, 0x4 + ldrsh r1, [r4, r0] + movs r0, 0 + bl sub_815CD70 + movs r0, 0x6 + ldrsh r1, [r4, r0] + movs r0, 0x1 + bl sub_815CD70 + movs r0, 0x8 + ldrsh r1, [r4, r0] + movs r0, 0x2 + bl sub_815CD70 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_814EAD4 + + thumb_func_start sub_814EB04 +sub_814EB04: @ 814EB04 + push {lr} + ldr r2, [r0, 0x78] + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2] + ldr r1, [r0, 0x7C] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + movs r0, 0x2 + movs r1, 0x1 + bl sub_815D1A8 + movs r0, 0x1 + movs r1, 0x1 + bl sub_815D1A8 + movs r0, 0 + movs r1, 0x1 + bl sub_815D1A8 + pop {r0} + bx r0 + thumb_func_end sub_814EB04 + + thumb_func_start sub_814EB38 +sub_814EB38: @ 814EB38 + push {r4-r7,lr} + adds r5, r0, 0 + movs r6, 0 + ldrb r0, [r5, 0x9] + cmp r6, r0 + bcs _0814EB98 + ldr r7, _0814EBA0 @ =gUnknown_846F280 +_0814EB46: + lsls r0, r6, 2 + movs r1, 0xA2 + lsls r1, 1 + adds r2, r5, r1 + adds r2, r0 + ldrb r1, [r5, 0x9] + subs r1, 0x2 + lsls r0, r1, 2 + adds r0, r1 + adds r0, r6, r0 + adds r0, r7 + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _0814EBA4 @ =gUnknown_846F294 + adds r0, r1 + str r0, [r2] + ldrb r0, [r0] + lsls r0, 3 + ldr r1, _0814EBA8 @ =gUnknown_846E3F8 + adds r0, r1 + bl sub_8003CE4 + ldr r1, _0814EBAC @ =0x000001bb + adds r4, r5, r1 + adds r4, r6 + strb r0, [r4] + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + movs r1, 0 + bl sub_800445C + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r5, 0x9] + cmp r6, r0 + bcc _0814EB46 +_0814EB98: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814EBA0: .4byte gUnknown_846F280 +_0814EBA4: .4byte gUnknown_846F294 +_0814EBA8: .4byte gUnknown_846E3F8 +_0814EBAC: .4byte 0x000001bb + thumb_func_end sub_814EB38 + + thumb_func_start sub_814EBB0 +sub_814EBB0: @ 814EBB0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r6, r0, 0 + movs r7, 0 + ldrb r0, [r6, 0x9] + cmp r7, r0 + bcs _0814EC66 + movs r1, 0 + mov r8, r1 +_0814EBC6: + ldr r1, _0814EC10 @ =0x000001bb + adds r0, r6, r1 + adds r5, r0, r7 + ldrb r0, [r5] + bl sub_8003FA0 + ldrb r0, [r6, 0x8] + cmp r7, r0 + bne _0814EC18 + lsls r4, r7, 5 + adds r4, 0x98 + adds r4, r6, r4 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + lsrs r0, 1 + movs r2, 0x24 + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r5] + mov r1, r8 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _0814EC14 @ =gUnknown_846E3DF + str r1, [sp, 0x8] + mov r1, r8 + str r1, [sp, 0xC] + str r4, [sp, 0x10] + movs r1, 0x2 + movs r3, 0x1 + bl sub_812E5A4 + b _0814EC4C + .align 2, 0 +_0814EC10: .4byte 0x000001bb +_0814EC14: .4byte gUnknown_846E3DF +_0814EC18: + lsls r4, r7, 5 + adds r4, 0x98 + adds r4, r6, r4 + movs r0, 0x2 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + lsrs r0, 1 + movs r2, 0x24 + subs r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r5] + mov r1, r8 + str r1, [sp] + str r1, [sp, 0x4] + ldr r1, _0814EC78 @ =gUnknown_846E3E2 + str r1, [sp, 0x8] + mov r1, r8 + str r1, [sp, 0xC] + str r4, [sp, 0x10] + movs r1, 0x2 + movs r3, 0x1 + bl sub_812E5A4 +_0814EC4C: + ldr r1, _0814EC7C @ =0x000001bb + adds r0, r6, r1 + adds r0, r7 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r6, 0x9] + cmp r7, r0 + bcc _0814EBC6 +_0814EC66: + movs r0, 0 + bl sub_80020BC + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814EC78: .4byte gUnknown_846E3E2 +_0814EC7C: .4byte 0x000001bb + thumb_func_end sub_814EBB0 + + thumb_func_start sub_814EC80 +sub_814EC80: @ 814EC80 + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + movs r5, 0 + ldr r0, _0814EC94 @ =gUnknown_8EB0ADC + ldr r4, _0814EC98 @ =gUnknown_201C000 + adds r1, r4, 0 + bl LZ77UnCompWram + b _0814ECCA + .align 2, 0 +_0814EC94: .4byte gUnknown_8EB0ADC +_0814EC98: .4byte gUnknown_201C000 +_0814EC9C: + lsls r1, r5, 2 + movs r2, 0xA2 + lsls r2, 1 + adds r0, r6, r2 + adds r0, r1 + ldr r3, [r0] + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4, r1 + ldrb r2, [r3, 0x1] + ldrb r3, [r3, 0x2] + movs r0, 0xA + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x3 + bl sub_8002124 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0814ECCA: + ldrb r0, [r6, 0x9] + cmp r5, r0 + bcc _0814EC9C + movs r0, 0x3 + bl sub_80020BC + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814EC80 + + thumb_func_start sub_814ECE0 +sub_814ECE0: @ 814ECE0 + push {r4-r7,lr} + adds r6, r0, 0 + movs r5, 0 + ldr r0, _0814EEE0 @ =0x0000ff98 + strh r0, [r6, 0x2A] + strh r5, [r6, 0x2C] + ldr r1, _0814EEE4 @ =gUnknown_2021BC8 + strh r5, [r1] + ldr r1, _0814EEE8 @ =gUnknown_2021BCA + strh r0, [r1] + ldr r4, _0814EEEC @ =gUnknown_846F2F8 +_0814ECF6: + lsls r0, r5, 3 + adds r0, r4 + bl sub_800EBCC + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _0814ECF6 + ldr r0, _0814EEF0 @ =gUnknown_846F320 + bl sub_8008974 + ldr r0, _0814EEF4 @ =gUnknown_846F410 + movs r1, 0x78 + movs r2, 0x58 + movs r3, 0x5 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0xAC + lsls r0, 1 + adds r3, r6, r0 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r1, _0814EEF8 @ =gUnknown_202063C + adds r0, r1 + str r0, [r3] + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r1, [r3] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, 0x2C + ldrb r0, [r1] + movs r2, 0x40 + orrs r0, r2 + strb r0, [r1] + movs r5, 0 + ldrb r1, [r6, 0x9] + cmp r5, r1 + bcs _0814EDD2 + movs r7, 0x4 +_0814ED5A: + lsls r4, r5, 2 + movs r3, 0xA2 + lsls r3, 1 + adds r0, r6, r3 + adds r0, r4 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + adds r1, 0x78 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r0, 0x6] + adds r2, 0x20 + lsls r2, 16 + asrs r2, 16 + ldr r0, _0814EEFC @ =gUnknown_846F428 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0xAE + lsls r0, 1 + adds r3, r6, r0 + adds r3, r4 + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + ldr r0, _0814EEF8 @ =gUnknown_202063C + adds r1, r0 + str r1, [r3] + ldrb r0, [r1, 0x5] + movs r4, 0xD + negs r4, r4 + adds r2, r4, 0 + ands r0, r2 + orrs r0, r7 + strb r0, [r1, 0x5] + ldr r1, [r3] + adds r1, 0x3E + ldrb r0, [r1] + orrs r0, r7 + strb r0, [r1] + ldr r2, [r3] + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r3] + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r6, 0x9] + cmp r5, r0 + bcc _0814ED5A +_0814EDD2: + movs r5, 0 + ldr r4, _0814EF00 @ =gUnknown_846F2D6 + adds r7, r4, 0x1 +_0814EDD8: + lsls r2, r5, 1 + adds r0, r2, r4 + movs r1, 0 + ldrsb r1, [r0, r1] + adds r1, 0x78 + adds r2, r7 + ldrb r2, [r2] + lsls r2, 24 + asrs r2, 24 + adds r2, 0x88 + ldr r0, _0814EF04 @ =gUnknown_846F440 + movs r3, 0x6 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r5, 2 + movs r1, 0xC2 + lsls r1, 1 + adds r3, r6, r1 + adds r3, r0 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r1, _0814EEF8 @ =gUnknown_202063C + adds r0, r1 + str r0, [r3] + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r2, [r3] + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r3] + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r3] + strh r5, [r0, 0x2E] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _0814EDD8 + movs r5, 0 +_0814EE3E: + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 19 + movs r3, 0xB0 + lsls r3, 16 + adds r1, r3 + asrs r1, 16 + ldr r0, _0814EF08 @ =gUnknown_846F458 + movs r2, 0x8 + movs r3, 0 + bl sub_8006F8C + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r5, 2 + movs r4, 0xD8 + lsls r4, 1 + adds r3, r6, r4 + adds r3, r0 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r1, _0814EEF8 @ =gUnknown_202063C + adds r0, r1 + str r0, [r3] + ldrb r1, [r0, 0x5] + movs r4, 0xD + negs r4, r4 + adds r2, r4, 0 + ands r1, r2 + strb r1, [r0, 0x5] + ldr r2, [r3] + adds r2, 0x3E + ldrb r0, [r2] + adds r4, 0x8 + adds r1, r4, 0 + ands r0, r1 + strb r0, [r2] + ldr r2, [r3] + adds r2, 0x2C + ldrb r0, [r2] + movs r3, 0x41 + negs r3, r3 + adds r1, r3, 0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _0814EE3E + ldr r4, _0814EF0C @ =gUnknown_846F488 + movs r0, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_815CA40 + adds r2, r4, 0 + adds r2, 0x10 + movs r0, 0x1 + movs r1, 0 + bl sub_815CA40 + adds r4, 0x20 + movs r0, 0x2 + movs r1, 0 + adds r2, r4, 0 + bl sub_815CA40 + ldrh r0, [r6, 0x12] + cmp r0, 0x1 + bne _0814EED8 + movs r4, 0x9C + lsls r4, 1 + adds r0, r6, r4 + bl sub_814EB04 +_0814EED8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814EEE0: .4byte 0x0000ff98 +_0814EEE4: .4byte gUnknown_2021BC8 +_0814EEE8: .4byte gUnknown_2021BCA +_0814EEEC: .4byte gUnknown_846F2F8 +_0814EEF0: .4byte gUnknown_846F320 +_0814EEF4: .4byte gUnknown_846F410 +_0814EEF8: .4byte gUnknown_202063C +_0814EEFC: .4byte gUnknown_846F428 +_0814EF00: .4byte gUnknown_846F2D6 +_0814EF04: .4byte gUnknown_846F440 +_0814EF08: .4byte gUnknown_846F458 +_0814EF0C: .4byte gUnknown_846F488 + thumb_func_end sub_814ECE0 + + thumb_func_start sub_814EF10 +sub_814EF10: @ 814EF10 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + movs r0, 0x4 + bl sub_800874C + movs r0, 0x3 + bl sub_800874C + movs r0, 0x2 + bl sub_800874C + movs r0, 0x1 + bl sub_800874C + movs r0, 0x4 + bl sub_8008A30 + movs r0, 0x2 + bl sub_8008A30 + movs r0, 0x1 + bl sub_8008A30 + movs r0, 0xD8 + lsls r0, 1 + adds r6, r5, r0 +_0814EF46: + lsls r0, r4, 2 + adds r0, r6, r0 + ldr r0, [r0] + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bls _0814EF46 + movs r0, 0x2 + bl sub_815D108 + movs r0, 0x1 + bl sub_815D108 + movs r0, 0 + bl sub_815D108 + movs r4, 0 + movs r1, 0xC2 + lsls r1, 1 + adds r6, r5, r1 +_0814EF74: + lsls r0, r4, 2 + adds r0, r6, r0 + ldr r0, [r0] + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _0814EF74 + movs r4, 0 + ldrb r2, [r5, 0x9] + cmp r4, r2 + bcs _0814EFAC +_0814EF90: + lsls r1, r4, 2 + movs r2, 0xAE + lsls r2, 1 + adds r0, r5, r2 + adds r0, r1 + ldr r0, [r0] + bl sub_8007280 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5, 0x9] + cmp r4, r0 + bcc _0814EF90 +_0814EFAC: + movs r1, 0xAC + lsls r1, 1 + adds r0, r5, r1 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0814EFC8 + adds r0, r2, 0 + bl sub_8007280 +_0814EFC8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814EF10 + + thumb_func_start sub_814EFD0 +sub_814EFD0: @ 814EFD0 + push {lr} + adds r3, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0814EFF6 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] +_0814EFF6: + pop {r0} + bx r0 + thumb_func_end sub_814EFD0 + + thumb_func_start sub_814EFFC +sub_814EFFC: @ 814EFFC + push {r4,r5,lr} + adds r3, r0, 0 + movs r1, 0 + ldr r5, _0814F040 @ =nullsub_8 + adds r2, r3, 0 + adds r2, 0x2E + movs r4, 0 +_0814F00A: + lsls r0, r1, 1 + adds r0, r2, r0 + strh r4, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x7 + bls _0814F00A + movs r0, 0 + strh r0, [r3, 0x24] + strh r0, [r3, 0x26] + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + str r5, [r3, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814F040: .4byte nullsub_8 + thumb_func_end sub_814EFFC + + thumb_func_start sub_814F044 +sub_814F044: @ 814F044 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r5, 0 + adds r4, 0x2E + ldrh r0, [r4, 0x4] + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r5, 0x26] + adds r0, r2 + strh r0, [r5, 0x26] + movs r1, 0xE + ldrsh r0, [r4, r1] + movs r6, 0x80 + lsls r6, 8 + ands r0, r6 + cmp r0, 0 + beq _0814F0AA + ldrh r0, [r4, 0x6] + ldrh r2, [r5, 0x2E] + adds r0, r2 + strh r0, [r5, 0x2E] + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x8] + adds r0, r1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 23 + movs r2, 0xC + ldrsh r1, [r4, r2] + bl sub_8044E30 + strh r0, [r5, 0x24] + movs r1, 0xE + ldrsh r0, [r4, r1] + ands r0, r6 + cmp r0, 0 + beq _0814F0AA + ldrh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 23 + cmp r0, 0x7E + ble _0814F0AA + movs r0, 0 + strh r0, [r5, 0x24] + ldrh r1, [r4, 0xE] + ldr r0, _0814F0D0 @ =0x00007fff + ands r0, r1 + strh r0, [r4, 0xE] +_0814F0AA: + ldrh r0, [r4] + lsls r0, 16 + asrs r0, 23 + strh r0, [r5, 0x20] + movs r2, 0x22 + ldrsh r1, [r5, r2] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + ldrh r2, [r4, 0xE] + ldr r0, _0814F0D0 @ =0x00007fff + ands r0, r2 + cmp r1, r0 + ble _0814F0CA + ldr r0, _0814F0D4 @ =sub_814EFFC + str r0, [r5, 0x1C] +_0814F0CA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0814F0D0: .4byte 0x00007fff +_0814F0D4: .4byte sub_814EFFC + thumb_func_end sub_814F044 + + thumb_func_start sub_814F0D8 +sub_814F0D8: @ 814F0D8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r7, r6, 0 + adds r7, 0x2E + movs r0, 0 + mov r8, r0 + movs r2, 0xA0 + lsls r2, 2 + strh r2, [r7, 0x2] + movs r0, 0x20 + strh r0, [r7, 0x4] + movs r1, 0xA8 + strh r1, [r7, 0xE] + movs r0, 0x24 + ldrsh r4, [r6, r0] + lsls r4, 23 + lsrs r4, 16 + ldrh r0, [r6, 0x22] + subs r1, r0 + lsls r1, 23 + asrs r1, 16 + adds r2, 0x20 + asrs r2, 1 + movs r0, 0x7 + bl sub_80D8B40 + adds r5, r0, 0 + ldrh r0, [r6, 0x20] + lsls r0, 7 + strh r0, [r6, 0x2E] + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + movs r0, 0x7 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80D8B40 + strh r0, [r7, 0x6] + movs r0, 0x7 + adds r1, r5, 0 + movs r2, 0x55 + bl sub_80D8ABC + adds r2, r0, 0 + mov r1, r8 + strh r1, [r7, 0x8] + movs r1, 0xFE + lsls r1, 6 + lsls r2, 16 + asrs r2, 16 + movs r0, 0x7 + bl sub_80D8B40 + strh r0, [r7, 0xA] + movs r2, 0x24 + ldrsh r0, [r6, r2] + cmp r0, 0 + bge _0814F156 + adds r0, 0x3 +_0814F156: + asrs r0, 2 + strh r0, [r7, 0xC] + ldrh r0, [r7, 0xE] + ldr r2, _0814F194 @ =0xffff8000 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r7, 0xE] + mov r0, r8 + strh r0, [r6, 0x26] + strh r0, [r6, 0x24] + ldr r0, _0814F198 @ =sub_814F044 + str r0, [r6, 0x1C] + adds r2, r6, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r2, 0x12 + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814F194: .4byte 0xffff8000 +_0814F198: .4byte sub_814F044 + thumb_func_end sub_814F0D8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s new file mode 100644 index 000000000..e34c3353c --- /dev/null +++ b/asm/unk_81507FC.s @@ -0,0 +1,11411 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81507FC +sub_81507FC: @ 81507FC + push {r4-r6,lr} + adds r5, r1, 0 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r1, _081508A4 @ =gUnknown_3002044 + movs r0, 0 + str r0, [r1] + ldr r0, _081508A8 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _081508CC + ldr r4, _081508AC @ =gUnknown_203F3E0 + ldr r0, _081508B0 @ =0x00003330 + bl sub_8002BB0 + str r0, [r4] + cmp r0, 0 + beq _081508CC + bl sub_81508D8 + ldr r0, [r4] + bl sub_81508EC + ldr r0, [r4] + str r5, [r0] + bl sub_800A404 + ldr r1, [r4] + adds r1, 0x28 + strb r0, [r1] + ldr r1, [r4] + ldr r2, _081508B4 @ =0x000032cc + adds r0, r1, r2 + adds r2, r1, 0 + adds r2, 0x28 + ldrb r3, [r2] + lsls r2, r3, 4 + subs r2, r3 + lsls r2, 2 + adds r1, r2 + ldr r2, _081508B8 @ =0x000031a0 + adds r1, r2 + movs r2, 0x3C + bl memcpy + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x28 + ldrb r1, [r1] + lsls r1, 2 + ldr r2, _081508BC @ =0x0000318c + adds r1, r2 + adds r0, r1 + movs r1, 0x64 + muls r1, r6 + ldr r2, _081508C0 @ =gUnknown_2024284 + adds r1, r2 + bl sub_8152048 + ldr r0, _081508C4 @ =sub_8150A84 + movs r1, 0x1 + bl sub_807741C + ldr r0, _081508C8 @ =sub_815201C + bl sub_8000544 + bl sub_8153150 + ldr r2, [r4] + adds r0, r2, 0 + adds r0, 0x24 + ldrb r0, [r0] + adds r1, r2, 0 + adds r1, 0x44 + adds r2, 0x48 + bl sub_81529A4 + bl sub_8071A94 + movs r0, 0xA5 + lsls r0, 1 + bl sub_8071A74 + b _081508D2 + .align 2, 0 +_081508A4: .4byte gUnknown_3002044 +_081508A8: .4byte gUnknown_3003F64 +_081508AC: .4byte gUnknown_203F3E0 +_081508B0: .4byte 0x00003330 +_081508B4: .4byte 0x000032cc +_081508B8: .4byte 0x000031a0 +_081508BC: .4byte 0x0000318c +_081508C0: .4byte gUnknown_2024284 +_081508C4: .4byte sub_8150A84 +_081508C8: .4byte sub_815201C +_081508CC: + adds r0, r5, 0 + bl sub_8000544 +_081508D2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81507FC + + thumb_func_start sub_81508D8 +sub_81508D8: @ 81508D8 + push {lr} + bl sub_80773BC + bl sub_8006B10 + bl sub_80088F0 + pop {r0} + bx r0 + thumb_func_end sub_81508D8 + + thumb_func_start sub_81508EC +sub_81508EC: @ 81508EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + adds r2, r0, 0 + movs r0, 0 + strb r0, [r2, 0xC] + strb r0, [r2, 0x10] + strb r0, [r2, 0x14] + strb r0, [r2, 0x18] + strb r0, [r2, 0x1C] + movs r3, 0x8E + lsls r3, 1 + adds r1, r2, r3 + str r0, [r1] + movs r7, 0x90 + lsls r7, 1 + adds r1, r2, r7 + str r0, [r1] + adds r1, r2, 0 + adds r1, 0x30 + strb r0, [r1] + adds r1, 0x10 + strb r0, [r1] + subs r1, 0x4 + strb r0, [r1] + adds r3, 0x10 + adds r1, r2, r3 + str r0, [r1] + movs r5, 0 + adds r1, r2, 0 + adds r1, 0x98 + movs r3, 0 +_08150932: + adds r0, r1, r5 + strb r3, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _08150932 + movs r5, 0 + adds r7, r2, 0 + adds r7, 0xA8 + str r7, [sp] + adds r0, r2, 0 + adds r0, 0xB0 + str r0, [sp, 0xC] + movs r1, 0x4A + adds r1, r2 + mov r10, r1 + movs r3, 0x4C + adds r3, r2 + mov r9, r3 + movs r7, 0x4E + adds r7, r2 + mov r12, r7 + subs r0, 0x60 + str r0, [sp, 0x24] + adds r6, r2, 0 + adds r6, 0x54 + adds r1, r2, 0 + adds r1, 0xD0 + str r1, [sp, 0x1C] + adds r3, r2, 0 + adds r3, 0xDC + str r3, [sp, 0x20] + adds r7, r2, 0 + adds r7, 0xC4 + str r7, [sp, 0x14] + adds r0, 0xA4 + str r0, [sp, 0x4] + adds r1, 0x25 + str r1, [sp, 0x8] + subs r3, 0xBC + str r3, [sp, 0x10] + movs r7, 0x24 + adds r7, r2 + mov r8, r7 + subs r0, 0xC0 + str r0, [sp, 0x18] + movs r3, 0 + movs r1, 0x86 + lsls r1, 1 + adds r4, r2, r1 + movs r7, 0x98 + lsls r7, 1 + adds r2, r7 +_0815099E: + ldr r1, [sp] + adds r0, r1, r5 + strb r3, [r0] + ldr r7, [sp, 0xC] + adds r0, r7, r5 + strb r3, [r0] + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + mov r7, r10 + adds r1, r7, r0 + strh r3, [r1] + mov r7, r9 + adds r1, r7, r0 + strh r3, [r1] + mov r7, r12 + adds r1, r7, r0 + strh r3, [r1] + ldr r7, [sp, 0x24] + adds r1, r7, r0 + strh r3, [r1] + adds r0, r6, r0 + strh r3, [r0] + adds r0, r4, r5 + strb r3, [r0] + lsls r0, r5, 2 + adds r0, r2, r0 + str r3, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _0815099E + movs r5, 0 + movs r3, 0 + movs r4, 0xFF + ldr r6, [sp, 0x1C] +_081509E8: + adds r0, r6, r5 + strb r3, [r0] + ldr r1, [sp, 0x20] + adds r0, r1, r5 + strb r3, [r0] + ldr r7, [sp, 0x14] + adds r0, r7, r5 + strb r3, [r0] + lsls r1, r5, 1 + ldr r0, [sp, 0x4] + adds r2, r0, r1 + ldrb r0, [r2] + orrs r0, r4 + strb r0, [r2] + ldr r7, [sp, 0x8] + adds r1, r7, r1 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _081509E8 + bl sub_800A404 + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _08150A26 + movs r1, 0x1 +_08150A26: + ldr r0, [sp, 0x10] + strb r1, [r0] + bl sub_800A088 + mov r1, r8 + strb r0, [r1] + bl sub_800A404 + ldr r3, [sp, 0x18] + strb r0, [r3] + movs r5, 0x1 + mov r7, r8 + ldrb r7, [r7] + cmp r5, r7 + bcs _08150A72 + ldr r7, [sp, 0x18] + mov r6, r8 +_08150A48: + adds r4, r7, r5 + subs r0, r5, 0x1 + adds r0, r7, r0 + ldrb r0, [r0] + adds r0, 0x1 + strb r0, [r4] + ldrb r2, [r4] + ldrb r1, [r6] + subs r0, r1, 0x1 + cmp r2, r0 + ble _08150A66 + adds r0, r2, 0 + bl __umodsi3 + strb r0, [r4] +_08150A66: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r6] + cmp r5, r0 + bcc _08150A48 +_08150A72: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81508EC + + thumb_func_start sub_8150A84 +sub_8150A84: @ 8150A84 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08150AA4 @ =gUnknown_203F3E0 + ldr r0, [r0] + ldrb r0, [r0, 0xC] + cmp r0, 0x7 + bls _08150A98 + b _08150BF0 +_08150A98: + lsls r0, 2 + ldr r1, _08150AA8 @ =_08150AAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08150AA4: .4byte gUnknown_203F3E0 +_08150AA8: .4byte _08150AAC + .align 2, 0 +_08150AAC: + .4byte _08150ACC + .4byte _08150AE0 + .4byte _08150B08 + .4byte _08150B16 + .4byte _08150B3C + .4byte _08150B90 + .4byte _08150BA2 + .4byte _08150BCC +_08150ACC: + movs r0, 0 + bl sub_80006F4 + ldr r0, _08150ADC @ =sub_8151750 + movs r1, 0x4 + bl sub_815205C + b _08150BDC + .align 2, 0 +_08150ADC: .4byte sub_8151750 +_08150AE0: + ldr r0, _08150B00 @ =sub_8151750 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + beq _08150AEE + b _08150BFC +_08150AEE: + ldr r4, _08150B04 @ =gUnknown_203F3E0 + ldr r0, [r4] + movs r1, 0xB0 + lsls r1, 1 + adds r0, r1 + bl sub_8154968 + ldr r1, [r4] + b _08150BE0 + .align 2, 0 +_08150B00: .4byte sub_8151750 +_08150B04: .4byte gUnknown_203F3E0 +_08150B08: + bl sub_8155E68 + cmp r0, 0 + bne _08150BFC + bl sub_80FA42C + b _08150BDC +_08150B16: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08150BFC + ldr r0, _08150B38 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + beq _08150BDC + bl sub_80FCEA8 + movs r0, 0 + movs r1, 0 + bl sub_80FCD74 + b _08150BDC + .align 2, 0 +_08150B38: .4byte gUnknown_3003F64 +_08150B3C: + ldr r0, _08150B88 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r5, [r0] + bl sub_8153A9C + movs r4, 0 + cmp r4, r5 + bcs _08150B76 +_08150B4E: + ldr r0, _08150B88 @ =gUnknown_203F3E0 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x34 + adds r0, r4 + ldrb r2, [r0] + lsls r0, r2, 2 + ldr r3, _08150B8C @ =0x0000318c + adds r0, r3 + adds r0, r1, r0 + adds r1, 0x24 + ldrb r3, [r1] + adds r1, r4, 0 + bl sub_8153AFC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08150B4E +_08150B76: + ldr r4, _08150B88 @ =gUnknown_203F3E0 + ldr r0, [r4] + adds r0, 0x24 + ldrb r1, [r0] + movs r0, 0 + bl sub_8153D80 + ldr r1, [r4] + b _08150BE0 + .align 2, 0 +_08150B88: .4byte gUnknown_203F3E0 +_08150B8C: .4byte 0x0000318c +_08150B90: + bl sub_8154128 + bl sub_815417C + bl sub_8154438 + bl sub_8153E28 + b _08150BDC +_08150BA2: + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + ldr r0, _08150BC8 @ =sub_8152034 + bl sub_80006F4 + b _08150BDC + .align 2, 0 +_08150BC8: .4byte sub_8152034 +_08150BCC: + bl sub_80704D0 + ldr r0, _08150BE8 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08150BFC +_08150BDC: + ldr r0, _08150BEC @ =gUnknown_203F3E0 + ldr r1, [r0] +_08150BE0: + ldrb r0, [r1, 0xC] + adds r0, 0x1 + strb r0, [r1, 0xC] + b _08150BFC + .align 2, 0 +_08150BE8: .4byte gUnknown_2037AB8 +_08150BEC: .4byte gUnknown_203F3E0 +_08150BF0: + adds r0, r1, 0 + bl sub_8077508 + ldr r0, _08150C04 @ =sub_81516DC + bl sub_815206C +_08150BFC: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08150C04: .4byte sub_81516DC + thumb_func_end sub_8150A84 + + thumb_func_start sub_8150C08 +sub_8150C08: @ 8150C08 + push {lr} + bl sub_8151B54 + ldr r1, _08150C34 @ =gUnknown_8475578 + ldr r0, _08150C38 @ =gUnknown_203F3E0 + ldr r0, [r0] + ldrb r0, [r0, 0x18] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08150C3C @ =gUnknown_3002044 + ldr r0, [r0] + cmp r0, 0 + bne _08150C2C + bl sub_815293C +_08150C2C: + bl sub_8151BA0 + pop {r0} + bx r0 + .align 2, 0 +_08150C34: .4byte gUnknown_8475578 +_08150C38: .4byte gUnknown_203F3E0 +_08150C3C: .4byte gUnknown_3002044 + thumb_func_end sub_8150C08 + + thumb_func_start sub_8150C40 +sub_8150C40: @ 8150C40 + push {lr} + bl sub_8151C5C + ldr r1, _08150C6C @ =gUnknown_84755A8 + ldr r0, _08150C70 @ =gUnknown_203F3E0 + ldr r0, [r0] + ldrb r0, [r0, 0x18] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08150C74 @ =gUnknown_3002044 + ldr r0, [r0] + cmp r0, 0 + bne _08150C64 + bl sub_8152970 +_08150C64: + bl sub_8151D28 + pop {r0} + bx r0 + .align 2, 0 +_08150C6C: .4byte gUnknown_84755A8 +_08150C70: .4byte gUnknown_203F3E0 +_08150C74: .4byte gUnknown_3002044 + thumb_func_end sub_8150C40 + + thumb_func_start sub_8150C78 +sub_8150C78: @ 8150C78 + push {r4,lr} + ldr r4, _08150C8C @ =gUnknown_203F3E0 + ldr r0, [r4] + ldrb r0, [r0, 0x10] + cmp r0, 0 + beq _08150C90 + cmp r0, 0x1 + beq _08150CA6 + b _08150CB4 + .align 2, 0 +_08150C8C: .4byte gUnknown_203F3E0 +_08150C90: + movs r0, 0x1 + bl sub_8153BF8 + movs r0, 0x1 + bl sub_81549D4 + ldr r1, [r4] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08150CB4 +_08150CA6: + bl sub_8155E68 + cmp r0, 0 + bne _08150CB4 + movs r0, 0x1 + bl sub_8152090 +_08150CB4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8150C78 + + thumb_func_start sub_8150CBC +sub_8150CBC: @ 8150CBC + push {r4,lr} + ldr r4, _08150CD8 @ =gUnknown_203F3E0 + ldr r1, [r4] + ldrb r0, [r1, 0x10] + cmp r0, 0 + bne _08150CDC + bl sub_8152110 + ldr r1, [r4] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08150CEC + .align 2, 0 +_08150CD8: .4byte gUnknown_203F3E0 +_08150CDC: + movs r0, 0x8C + lsls r0, 1 + adds r1, r0 + movs r0, 0x1 + str r0, [r1] + movs r0, 0x2 + bl sub_8152090 +_08150CEC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8150CBC + + thumb_func_start sub_8150CF4 +sub_8150CF4: @ 8150CF4 + push {lr} + sub sp, 0x4 + ldr r0, _08150D0C @ =gUnknown_203F3E0 + ldr r0, [r0] + ldrb r0, [r0, 0x10] + cmp r0, 0x4 + bhi _08150D74 + lsls r0, 2 + ldr r1, _08150D10 @ =_08150D14 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08150D0C: .4byte gUnknown_203F3E0 +_08150D10: .4byte _08150D14 + .align 2, 0 +_08150D14: + .4byte _08150D28 + .4byte _08150D4E + .4byte _08150D3A + .4byte _08150D46 + .4byte _08150D64 +_08150D28: + movs r0, 0 + str r0, [sp] + movs r0, 0x7 + movs r1, 0x8 + movs r2, 0x78 + movs r3, 0x50 + bl sub_815F138 + b _08150D52 +_08150D3A: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08150D74 + b _08150D52 +_08150D46: + bl sub_815F198 + cmp r0, 0 + bne _08150D74 +_08150D4E: + bl sub_80FA42C +_08150D52: + ldr r0, _08150D60 @ =gUnknown_203F3E0 + ldr r1, [r0] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08150D74 + .align 2, 0 +_08150D60: .4byte gUnknown_203F3E0 +_08150D64: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08150D74 + movs r0, 0x3 + bl sub_8152090 +_08150D74: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8150CF4 + + thumb_func_start sub_8150D7C +sub_8150D7C: @ 8150D7C + push {lr} + ldr r0, _08150DA0 @ =gUnknown_203F3E0 + ldr r1, [r0] + ldrb r0, [r1, 0x10] + cmp r0, 0 + bne _08150D9A + movs r2, 0x8E + lsls r2, 1 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + beq _08150D9A + movs r0, 0x4 + bl sub_8152090 +_08150D9A: + pop {r0} + bx r0 + .align 2, 0 +_08150DA0: .4byte gUnknown_203F3E0 + thumb_func_end sub_8150D7C + + thumb_func_start sub_8150DA4 +sub_8150DA4: @ 8150DA4 + push {r4,lr} + ldr r4, _08150DE4 @ =gUnknown_203F3E0 + ldr r2, [r4] + ldrb r0, [r2, 0x10] + cmp r0, 0 + bne _08150E62 + adds r0, r2, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bhi _08150E54 + adds r0, r2, 0 + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0 + bne _08150E5A + ldr r0, _08150DE8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08150DF4 + ldr r1, _08150DEC @ =0x000031cc + adds r0, r2, r1 + ldrb r1, [r0] + cmp r1, 0 + bne _08150E5A + ldr r3, _08150DF0 @ =0x000031d0 + adds r0, r2, r3 + strb r1, [r0] + movs r0, 0x2 + b _08150E2E + .align 2, 0 +_08150DE4: .4byte gUnknown_203F3E0 +_08150DE8: .4byte gUnknown_30030F0 +_08150DEC: .4byte 0x000031cc +_08150DF0: .4byte 0x000031d0 +_08150DF4: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08150E14 + ldr r3, _08150E10 @ =0x000031cc + adds r0, r2, r3 + ldrb r1, [r0] + cmp r1, 0 + bne _08150E5A + adds r3, 0x4 + adds r0, r2, r3 + strb r1, [r0] + movs r0, 0x1 + b _08150E2E + .align 2, 0 +_08150E10: .4byte 0x000031cc +_08150E14: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08150E40 + ldr r3, _08150E3C @ =0x000031cc + adds r0, r2, r3 + ldrb r1, [r0] + cmp r1, 0 + bne _08150E5A + adds r3, 0x4 + adds r0, r2, r3 + strb r1, [r0] + movs r0, 0x3 +_08150E2E: + bl sub_815327C + ldr r1, [r4] + ldr r2, _08150E3C @ =0x000031cc + adds r1, r2 + strb r0, [r1] + b _08150E5A + .align 2, 0 +_08150E3C: .4byte 0x000031cc +_08150E40: + movs r0, 0 + bl sub_815327C + ldr r1, [r4] + ldr r3, _08150E50 @ =0x000031cc + adds r1, r3 + strb r0, [r1] + b _08150E5A + .align 2, 0 +_08150E50: .4byte 0x000031cc +_08150E54: + movs r0, 0xB + bl sub_8152090 +_08150E5A: + bl sub_815256C + bl sub_8151D98 +_08150E62: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8150DA4 + + thumb_func_start sub_8150E68 +sub_8150E68: @ 8150E68 + push {lr} + ldr r0, _08150EA8 @ =gUnknown_203F3E0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bhi _08150F30 + ldr r0, _08150EAC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08150EB8 + adds r0, r2, 0 + adds r0, 0x28 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r2, r0 + ldr r1, _08150EB0 @ =0x000031cc + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08150F36 + ldr r3, _08150EB4 @ =0x000032f8 + adds r1, r2, r3 + movs r0, 0x2 + strb r0, [r1] + b _08150F36 + .align 2, 0 +_08150EA8: .4byte gUnknown_203F3E0 +_08150EAC: .4byte gUnknown_30030F0 +_08150EB0: .4byte 0x000031cc +_08150EB4: .4byte 0x000032f8 +_08150EB8: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08150EEC + adds r0, r2, 0 + adds r0, 0x28 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r2, r0 + ldr r1, _08150EE4 @ =0x000031cc + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08150F36 + ldr r3, _08150EE8 @ =0x000032f8 + adds r1, r2, r3 + movs r0, 0x1 + strb r0, [r1] + b _08150F36 + .align 2, 0 +_08150EE4: .4byte 0x000031cc +_08150EE8: .4byte 0x000032f8 +_08150EEC: + movs r0, 0x20 + ands r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _08150F24 + adds r0, r2, 0 + adds r0, 0x28 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r2, r0 + ldr r1, _08150F1C @ =0x000031cc + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08150F36 + ldr r3, _08150F20 @ =0x000032f8 + adds r1, r2, r3 + movs r0, 0x3 + strb r0, [r1] + b _08150F36 + .align 2, 0 +_08150F1C: .4byte 0x000031cc +_08150F20: .4byte 0x000032f8 +_08150F24: + ldr r3, _08150F2C @ =0x000032f8 + adds r0, r2, r3 + strb r1, [r0] + b _08150F36 + .align 2, 0 +_08150F2C: .4byte 0x000032f8 +_08150F30: + movs r0, 0xB + bl sub_8152090 +_08150F36: + bl sub_8151E94 + pop {r0} + bx r0 + thumb_func_end sub_8150E68 + + thumb_func_start sub_8150F40 +sub_8150F40: @ 8150F40 + push {r4,r5,lr} + bl sub_815256C + bl sub_8151D98 + bl sub_8152A98 + cmp r0, 0x1 + bne _08150F5E + bl sub_8153004 + movs r0, 0x5 + bl sub_8152090 + b _08150FBC +_08150F5E: + ldr r0, _08150F8C @ =gUnknown_203F3E0 + ldr r2, [r0] + movs r1, 0x96 + lsls r1, 1 + adds r4, r2, r1 + movs r1, 0x1 + str r1, [r4] + movs r3, 0x1 + adds r1, r2, 0 + adds r1, 0x24 + adds r5, r0, 0 + ldrb r1, [r1] + cmp r3, r1 + bcs _08150FBC + movs r1, 0x9A + lsls r1, 1 + adds r0, r2, r1 + ldr r0, [r0] + cmp r0, 0x1 + beq _08150F90 + movs r0, 0 + str r0, [r4] + b _08150FBC + .align 2, 0 +_08150F8C: .4byte gUnknown_203F3E0 +_08150F90: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0x24 + ldrb r0, [r0] + cmp r3, r0 + bcs _08150FBC + lsls r0, r3, 2 + movs r4, 0x98 + lsls r4, 1 + adds r1, r2, r4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0x1 + beq _08150F90 + movs r0, 0x96 + lsls r0, 1 + adds r1, r2, r0 + movs r0, 0 + str r0, [r1] +_08150FBC: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8150F40 + + thumb_func_start sub_8150FC4 +sub_8150FC4: @ 8150FC4 + push {lr} + bl sub_8151E94 + bl sub_8152AD8 + cmp r0, 0x1 + bne _08150FD8 + movs r0, 0x5 + bl sub_8152090 +_08150FD8: + pop {r0} + bx r0 + thumb_func_end sub_8150FC4 + + thumb_func_start sub_8150FDC +sub_8150FDC: @ 8150FDC + push {r4-r6,lr} + ldr r6, _08150FF4 @ =gUnknown_203F3E0 + ldr r1, [r6] + ldrb r4, [r1, 0x10] + cmp r4, 0x1 + beq _08151010 + cmp r4, 0x1 + bgt _08150FF8 + cmp r4, 0 + beq _08150FFE + b _08151078 + .align 2, 0 +_08150FF4: .4byte gUnknown_203F3E0 +_08150FF8: + cmp r4, 0x2 + beq _0815101E + b _08151078 +_08150FFE: + adds r1, 0x4A + movs r0, 0 + movs r2, 0x3C + bl sub_800A448 + ldr r0, [r6] + strb r4, [r0, 0x8] + ldr r1, [r6] + b _0815106A +_08151010: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08151092 + ldr r1, [r6] + b _0815106A +_0815101E: + bl sub_800A4EC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + b _08151048 +_0815102A: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08151040 + adds r0, r4, 0 + bl sub_800A588 + ldr r1, [r6] + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] +_08151040: + lsrs r5, 1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_08151048: + ldr r0, [r6] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcc _0815102A + ldr r3, _08151074 @ =gUnknown_203F3E0 + ldr r2, [r3] + adds r1, r2, 0 + adds r1, 0x24 + ldrb r0, [r2, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bcc _08151092 + ldrb r0, [r2, 0x14] + adds r0, 0x1 + strb r0, [r2, 0x14] + ldr r1, [r3] +_0815106A: + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08151092 + .align 2, 0 +_08151074: .4byte gUnknown_203F3E0 +_08151078: + movs r0, 0x1 + bl sub_8071C10 + lsls r0, 24 + cmp r0, 0 + beq _08151092 + movs r0, 0x6 + bl sub_8152090 + ldr r0, _08151098 @ =0x00000137 + movs r1, 0x4 + bl sub_8071AEC +_08151092: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08151098: .4byte 0x00000137 + thumb_func_end sub_8150FDC + + thumb_func_start sub_815109C +sub_815109C: @ 815109C + push {r4-r6,lr} + ldr r6, _081510B4 @ =gUnknown_203F3E0 + ldr r2, [r6] + ldrb r4, [r2, 0x10] + cmp r4, 0x1 + beq _081510DA + cmp r4, 0x1 + bgt _081510B8 + cmp r4, 0 + beq _081510BE + b _08151150 + .align 2, 0 +_081510B4: .4byte gUnknown_203F3E0 +_081510B8: + cmp r4, 0x2 + beq _081510E8 + b _08151150 +_081510BE: + ldrb r0, [r2, 0x14] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, 0x4A + adds r1, r2, r1 + movs r0, 0 + movs r2, 0x3C + bl sub_800A448 + ldr r0, [r6] + strb r4, [r0, 0x8] + ldr r1, [r6] + b _08151140 +_081510DA: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _0815118A + ldr r1, [r6] + b _08151140 +_081510E8: + bl sub_800A4EC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + b _0815111E +_081510F4: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08151116 + ldr r0, [r6] + adds r0, 0x4A + ldr r1, _08151148 @ =gUnknown_2022118 + movs r2, 0x3C + bl memcpy + adds r0, r4, 0 + bl sub_800A588 + ldr r1, [r6] + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] +_08151116: + lsrs r5, 1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0815111E: + ldr r0, [r6] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcc _081510F4 + ldr r3, _0815114C @ =gUnknown_203F3E0 + ldr r2, [r3] + adds r1, r2, 0 + adds r1, 0x24 + ldrb r0, [r2, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bcc _0815118A + ldrb r0, [r2, 0x14] + adds r0, 0x1 + strb r0, [r2, 0x14] + ldr r1, [r3] +_08151140: + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _0815118A + .align 2, 0 +_08151148: .4byte gUnknown_2022118 +_0815114C: .4byte gUnknown_203F3E0 +_08151150: + movs r0, 0x1 + bl sub_8071C10 + lsls r0, 24 + cmp r0, 0 + beq _0815118A + ldr r0, _08151190 @ =gUnknown_203F3E0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r0, r2, 0 + adds r0, 0x54 + adds r0, r1 + ldrh r1, [r0] + movs r3, 0x8A + lsls r3, 1 + adds r0, r2, r3 + strh r1, [r0] + movs r0, 0x6 + bl sub_8152090 + ldr r0, _08151194 @ =0x00000137 + movs r1, 0x4 + bl sub_8071AEC +_0815118A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08151190: .4byte gUnknown_203F3E0 +_08151194: .4byte 0x00000137 + thumb_func_end sub_815109C + + thumb_func_start sub_8151198 +sub_8151198: @ 8151198 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _081511B0 @ =gUnknown_203F3E0 + ldr r0, [r6] + ldrb r4, [r0, 0x10] + cmp r4, 0x1 + beq _081511DC + cmp r4, 0x1 + bgt _081511B4 + cmp r4, 0 + beq _081511BE + b _0815129C + .align 2, 0 +_081511B0: .4byte gUnknown_203F3E0 +_081511B4: + cmp r4, 0x2 + beq _08151202 + cmp r4, 0x3 + beq _0815121C + b _0815129C +_081511BE: + bl sub_81531FC + movs r0, 0x1 + bl sub_81540DC + bl sub_81544F0 + movs r0, 0x1 + bl sub_81545BC + movs r0, 0x2 + bl sub_81549D4 + ldr r1, [r6] + b _0815128A +_081511DC: + bl sub_8155E68 + cmp r0, 0 + bne _081512AA + mov r0, sp + strb r4, [r0] + movs r0, 0x5 + bl sub_81549D4 + bl sub_8155E8C + mov r1, sp + strb r0, [r1] + movs r0, 0 + movs r2, 0x1 + bl sub_800A448 + ldr r1, [r6] + b _0815128A +_08151202: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _081512AA + ldr r1, [r6] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1, 0x10] + ldr r0, [r6] + strb r2, [r0, 0x8] + b _081512AA +_0815121C: + bl sub_800A4EC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + b _0815125A +_08151228: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08151252 + ldr r2, [r6] + adds r2, r4, r2 + movs r0, 0x86 + lsls r0, 1 + adds r2, r0 + lsls r0, r4, 8 + ldr r1, _08151294 @ =gUnknown_2022118 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, 0 + bl sub_800A588 + ldr r1, [r6] + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] +_08151252: + lsrs r5, 1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0815125A: + ldr r0, [r6] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcc _08151228 + ldr r4, _08151298 @ =gUnknown_203F3E0 + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0x24 + ldrb r0, [r2, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bcc _081512AA + ldrb r0, [r2, 0x14] + adds r0, 0x1 + strb r0, [r2, 0x14] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x77 + bls _081512AA + movs r0, 0x6 + bl sub_81549D4 + ldr r1, [r4] +_0815128A: + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _081512AA + .align 2, 0 +_08151294: .4byte gUnknown_2022118 +_08151298: .4byte gUnknown_203F3E0 +_0815129C: + bl sub_8155E68 + cmp r0, 0 + bne _081512AA + movs r0, 0x7 + bl sub_8152090 +_081512AA: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8151198 + + thumb_func_start sub_81512B4 +sub_81512B4: @ 81512B4 + push {r4-r7,lr} + sub sp, 0x4 + ldr r5, _081512D0 @ =gUnknown_203F3E0 + ldr r0, [r5] + ldrb r0, [r0, 0x10] + cmp r0, 0x6 + bls _081512C4 + b _0815144A +_081512C4: + lsls r0, 2 + ldr r1, _081512D4 @ =_081512D8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081512D0: .4byte gUnknown_203F3E0 +_081512D4: .4byte _081512D8 + .align 2, 0 +_081512D8: + .4byte _081512F4 + .4byte _08151314 + .4byte _08151330 + .4byte _08151344 + .4byte _08151360 + .4byte _0815138C + .4byte _081513AC +_081512F4: + bl sub_81534AC + ldr r1, _0815130C @ =0x00000bb7 + cmp r0, r1 + bls _08151304 + movs r0, 0x4 + bl sub_81549D4 +_08151304: + ldr r0, _08151310 @ =gUnknown_203F3E0 + ldr r1, [r0] + b _0815142A + .align 2, 0 +_0815130C: .4byte 0x00000bb7 +_08151310: .4byte gUnknown_203F3E0 +_08151314: + bl sub_8155E68 + cmp r0, 0 + beq _0815131E + b _08151480 +_0815131E: + movs r0, 0x3 + bl sub_81549D4 + ldr r0, _0815132C @ =gUnknown_203F3E0 + ldr r1, [r0] + b _0815142A + .align 2, 0 +_0815132C: .4byte gUnknown_203F3E0 +_08151330: + bl sub_81546C0 + bl sub_8153048 + ldr r0, _08151340 @ =gUnknown_203F3E0 + ldr r1, [r0] + b _0815142A + .align 2, 0 +_08151340: .4byte gUnknown_203F3E0 +_08151344: + bl sub_8155E8C + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + cmp r0, 0 + bne _08151356 + b _08151480 +_08151356: + ldr r0, _0815135C @ =gUnknown_203F3E0 + ldr r1, [r0] + b _0815142A + .align 2, 0 +_0815135C: .4byte gUnknown_203F3E0 +_08151360: + bl sub_8155E68 + cmp r0, 0 + beq _0815136A + b _08151480 +_0815136A: + movs r0, 0x5 + bl sub_81549D4 + bl sub_8155E8C + mov r1, sp + strb r0, [r1] + movs r0, 0 + movs r2, 0x1 + bl sub_800A448 + ldr r0, _08151388 @ =gUnknown_203F3E0 + ldr r1, [r0] + b _0815142A + .align 2, 0 +_08151388: .4byte gUnknown_203F3E0 +_0815138C: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08151480 + ldr r3, _081513A8 @ =gUnknown_203F3E0 + ldr r1, [r3] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1, 0x10] + ldr r0, [r3] + strb r2, [r0, 0x8] + b _08151480 + .align 2, 0 +_081513A8: .4byte gUnknown_203F3E0 +_081513AC: + bl sub_800A4EC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r7, _08151434 @ =gUnknown_203F3E0 + ldr r0, [r7] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcs _08151400 + adds r6, r7, 0 +_081513C4: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _081513EE + ldr r2, [r6] + adds r2, r4, r2 + movs r0, 0x86 + lsls r0, 1 + adds r2, r0 + lsls r0, r4, 8 + ldr r1, _08151438 @ =gUnknown_2022118 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, 0 + bl sub_800A588 + ldr r1, [r6] + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] +_081513EE: + lsrs r5, 1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, [r7] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcc _081513C4 +_08151400: + ldr r4, _08151434 @ =gUnknown_203F3E0 + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0x24 + ldrb r0, [r2, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bcc _0815143C + ldrb r0, [r2, 0x14] + adds r0, 0x1 + strb r0, [r2, 0x14] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x77 + bls _08151480 + bl sub_815336C + movs r0, 0x6 + bl sub_81549D4 + ldr r1, [r4] +_0815142A: + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08151480 + .align 2, 0 +_08151434: .4byte gUnknown_203F3E0 +_08151438: .4byte gUnknown_2022118 +_0815143C: + bl sub_81532B8 + b _08151480 +_08151442: + movs r0, 0x8 + bl sub_8152090 + b _08151480 +_0815144A: + bl sub_8155E68 + cmp r0, 0 + bne _08151480 + movs r4, 0 + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcs _0815147A + movs r3, 0x86 + lsls r3, 1 + adds r2, r1, r3 + adds r1, r0, 0 +_08151468: + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, 0x2 + beq _08151442 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r1 + bcc _08151468 +_0815147A: + movs r0, 0xA + bl sub_8152090 +_08151480: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81512B4 + + thumb_func_start sub_8151488 +sub_8151488: @ 8151488 + push {r4,lr} + ldr r4, _081514A0 @ =gUnknown_203F3E0 + ldr r0, [r4] + ldrb r0, [r0, 0x10] + cmp r0, 0x1 + beq _081514B6 + cmp r0, 0x1 + bgt _081514A4 + cmp r0, 0 + beq _081514AA + b _081514D6 + .align 2, 0 +_081514A0: .4byte gUnknown_203F3E0 +_081514A4: + cmp r0, 0x2 + beq _081514C0 + b _081514D6 +_081514AA: + bl sub_800AAC0 + movs r0, 0x7 + bl sub_81549D4 + b _081514CC +_081514B6: + bl sub_8155E68 + cmp r0, 0 + bne _081514E4 + b _081514CC +_081514C0: + bl sub_8155E8C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bne _081514E4 +_081514CC: + ldr r1, [r4] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _081514E4 +_081514D6: + ldr r0, _081514EC @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _081514E4 + movs r0, 0x9 + bl sub_8152090 +_081514E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081514EC: .4byte gUnknown_3003F64 + thumb_func_end sub_8151488 + + thumb_func_start sub_81514F0 +sub_81514F0: @ 81514F0 + push {r4,lr} + sub sp, 0x4 + ldr r4, _08151508 @ =gUnknown_203F3E0 + ldr r0, [r4] + ldrb r1, [r0, 0x10] + cmp r1, 0x1 + beq _08151524 + cmp r1, 0x1 + bgt _0815150C + cmp r1, 0 + beq _08151512 + b _0815156C + .align 2, 0 +_08151508: .4byte gUnknown_203F3E0 +_0815150C: + cmp r1, 0x2 + beq _0815153C + b _0815156C +_08151512: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _0815155E +_08151524: + bl sub_80704D0 + ldr r0, _08151538 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08151590 + b _0815155E + .align 2, 0 +_08151538: .4byte gUnknown_2037AB8 +_0815153C: + bl sub_8154274 + bl sub_8153ED8 + ldr r0, [r4] + adds r0, 0x24 + ldrb r0, [r0] + bl sub_8153D08 + bl sub_8154578 + ldr r1, _08151568 @ =gUnknown_3002044 + movs r0, 0x1 + str r0, [r1] + movs r0, 0x8 + bl sub_81549D4 +_0815155E: + ldr r1, [r4] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08151590 + .align 2, 0 +_08151568: .4byte gUnknown_3002044 +_0815156C: + bl sub_8155E68 + cmp r0, 0 + bne _08151590 + ldr r4, _08151598 @ =gUnknown_203F3E0 + ldr r0, [r4] + ldr r0, [r0] + bl sub_8000544 + ldr r0, [r4] + ldrb r0, [r0, 0x4] + bl sub_8077508 + ldr r0, [r4] + bl sub_8002BC4 + bl sub_8003ECC +_08151590: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08151598: .4byte gUnknown_203F3E0 + thumb_func_end sub_81514F0 + + thumb_func_start sub_815159C +sub_815159C: @ 815159C + push {r4,lr} + sub sp, 0x4 + ldr r4, _081515B4 @ =gUnknown_203F3E0 + ldr r1, [r4] + ldrb r0, [r1, 0x10] + cmp r0, 0x6 + bhi _0815169C + lsls r0, 2 + ldr r1, _081515B8 @ =_081515BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081515B4: .4byte gUnknown_203F3E0 +_081515B8: .4byte _081515BC + .align 2, 0 +_081515BC: + .4byte _081515D8 + .4byte _08151676 + .4byte _081515F0 + .4byte _08151642 + .4byte _08151648 + .4byte _08151656 + .4byte _08151676 +_081515D8: + movs r0, 0x9 + bl sub_81549D4 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 + b _08151686 +_081515F0: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + b _08151686 +_08151642: + bl sub_8071A94 + b _08151686 +_08151648: + movs r0, 0xA5 + lsls r0, 1 + bl sub_8071A74 + bl sub_8154540 + b _08151686 +_08151656: + movs r4, 0x1 + negs r4, r4 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0 + bl sub_80714D4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + b _08151686 +_08151676: + bl sub_80704D0 + ldr r0, _08151694 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081516CC +_08151686: + ldr r0, _08151698 @ =gUnknown_203F3E0 + ldr r1, [r0] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _081516CC + .align 2, 0 +_08151694: .4byte gUnknown_2037AB8 +_08151698: .4byte gUnknown_203F3E0 +_0815169C: + ldrb r0, [r1, 0x4] + bl sub_8077508 + ldr r0, _081516D4 @ =sub_81516DC + bl sub_815206C + bl sub_8154730 + ldr r0, [r4] + bl sub_81508EC + ldr r0, _081516D8 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _081516C2 + ldr r0, [r4] + adds r0, 0x24 + movs r1, 0x1 + strb r1, [r0] +_081516C2: + bl sub_8153150 + movs r0, 0 + bl sub_81545BC +_081516CC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081516D4: .4byte sub_81516DC +_081516D8: .4byte gUnknown_3003F64 + thumb_func_end sub_815159C + + thumb_func_start sub_81516DC +sub_81516DC: @ 81516DC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _081516F8 @ =gUnknown_203F3E0 + ldr r0, [r1] + ldrb r0, [r0, 0x10] + adds r4, r1, 0 + cmp r0, 0x1 + beq _08151708 + cmp r0, 0x1 + bgt _081516FC + cmp r0, 0 + beq _08151702 + b _08151720 + .align 2, 0 +_081516F8: .4byte gUnknown_203F3E0 +_081516FC: + cmp r0, 0x2 + beq _0815170E + b _08151720 +_08151702: + bl sub_81520B4 + b _08151712 +_08151708: + bl sub_8153DD8 + b _08151716 +_0815170E: + bl sub_8153F1C +_08151712: + cmp r0, 0x1 + bne _08151744 +_08151716: + ldr r1, [r4] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] + b _08151744 +_08151720: + ldr r0, [r4] + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _08151738 + ldr r0, _08151734 @ =sub_8150C08 + bl sub_815206C + b _0815173E + .align 2, 0 +_08151734: .4byte sub_8150C08 +_08151738: + ldr r0, _0815174C @ =sub_8150C40 + bl sub_815206C +_0815173E: + adds r0, r5, 0 + bl sub_8077508 +_08151744: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815174C: .4byte sub_8150C40 + thumb_func_end sub_81516DC + + thumb_func_start sub_8151750 +sub_8151750: @ 8151750 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _08151774 @ =gUnknown_3005098 + adds r6, r0, r1 + movs r0, 0 + ldrsh r5, [r6, r0] + cmp r5, 0x1 + beq _081517A8 + cmp r5, 0x1 + bgt _08151778 + cmp r5, 0 + beq _0815177E + b _08151836 + .align 2, 0 +_08151774: .4byte gUnknown_3005098 +_08151778: + cmp r5, 0x2 + beq _081517BA + b _08151836 +_0815177E: + ldr r4, _081517A0 @ =gUnknown_203F3E0 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 2 + ldr r2, _081517A4 @ =0x0000318c + adds r0, r2 + adds r1, r0 + movs r0, 0 + movs r2, 0x1 + bl sub_800A448 + ldr r0, [r4] + strb r5, [r0, 0x8] + b _081517B2 + .align 2, 0 +_081517A0: .4byte gUnknown_203F3E0 +_081517A4: .4byte 0x0000318c +_081517A8: + bl sub_800A4BC + lsls r0, 24 + cmp r0, 0 + beq _08151836 +_081517B2: + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + b _08151836 +_081517BA: + bl sub_800A4EC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r3, _08151840 @ =gUnknown_203F3E0 + ldr r0, [r3] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcs _08151812 + adds r6, r3, 0 +_081517D2: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08151800 + ldr r0, [r6] + lsls r2, r4, 2 + adds r2, r0 + ldr r0, _08151844 @ =0x0000318c + adds r2, r0 + lsls r0, r4, 8 + ldr r1, _08151848 @ =gUnknown_2022118 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, 0 + str r3, [sp] + bl sub_800A588 + ldr r1, [r6] + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] + ldr r3, [sp] +_08151800: + lsrs r5, 1 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, [r3] + adds r0, 0x24 + ldrb r0, [r0] + cmp r4, r0 + bcc _081517D2 +_08151812: + ldr r4, _08151840 @ =gUnknown_203F3E0 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x24 + ldrb r0, [r0, 0x8] + ldrb r1, [r1] + cmp r0, r1 + bcc _08151836 + adds r0, r7, 0 + bl sub_8077508 + movs r0, 0x6 + bl sub_81549D4 + ldr r1, [r4] + ldrb r0, [r1, 0x10] + adds r0, 0x1 + strb r0, [r1, 0x10] +_08151836: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08151840: .4byte gUnknown_203F3E0 +_08151844: .4byte 0x0000318c +_08151848: .4byte gUnknown_2022118 + thumb_func_end sub_8151750 + + thumb_func_start sub_815184C +sub_815184C: @ 815184C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x18 + ldr r6, _08151928 @ =gUnknown_203F3E0 + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x24 + ldrb r7, [r1] + ldr r2, _0815192C @ =0x000031a0 + adds r1, r0, r2 + ldr r3, _08151930 @ =0x000031cc + adds r2, r0, r3 + ldr r4, _08151934 @ =0x00003208 + adds r3, r0, r4 + ldr r5, _08151938 @ =0x00003244 + adds r4, r0, r5 + str r4, [sp] + adds r5, 0x3C + adds r4, r0, r5 + str r4, [sp, 0x4] + adds r5, 0x3C + adds r4, r0, r5 + str r4, [sp, 0x8] + adds r4, r0, 0 + adds r4, 0x40 + str r4, [sp, 0xC] + movs r5, 0x90 + lsls r5, 1 + adds r4, r0, r5 + str r4, [sp, 0x10] + movs r4, 0x96 + lsls r4, 1 + adds r0, r4 + str r0, [sp, 0x14] + movs r0, 0 + bl sub_815A950 + ldr r1, [r6] + ldr r5, _0815193C @ =0x000031b0 + adds r2, r1, r5 + str r0, [r2] + movs r0, 0x94 + lsls r0, 1 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] + movs r5, 0x1 + cmp r5, r7 + bcs _081518F4 +_081518B0: + ldr r1, [r6] + adds r0, r1, 0 + adds r0, 0xA8 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _081518EA + lsls r0, r5, 4 + subs r0, r5 + lsls r4, r0, 2 + adds r1, r4, r1 + ldr r2, _08151930 @ =0x000031cc + adds r1, r2 + adds r0, r5, 0 + bl sub_815AB04 + adds r1, r0, 0 + cmp r1, 0 + bne _081518EA + ldr r0, [r6] + adds r0, r4 + ldr r3, _08151930 @ =0x000031cc + adds r0, r3 + strb r1, [r0] + ldr r0, [r6] + movs r4, 0x94 + lsls r4, 1 + adds r0, r4 + strb r1, [r0] +_081518EA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _081518B0 +_081518F4: + ldr r5, _08151928 @ =gUnknown_203F3E0 + ldr r1, [r5] + movs r6, 0x92 + lsls r6, 1 + adds r1, r6 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3B + bls _08151952 + ldr r1, [r5] + movs r2, 0x94 + lsls r2, 1 + adds r0, r1, r2 + ldrb r4, [r0] + cmp r4, 0 + beq _08151940 + bl sub_80FBA44 + ldr r0, [r5] + adds r0, r6 + movs r1, 0 + strb r1, [r0] + b _08151952 + .align 2, 0 +_08151928: .4byte gUnknown_203F3E0 +_0815192C: .4byte 0x000031a0 +_08151930: .4byte 0x000031cc +_08151934: .4byte 0x00003208 +_08151938: .4byte 0x00003244 +_0815193C: .4byte 0x000031b0 +_08151940: + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, 0x46 + bls _08151952 + bl sub_80FBA44 + ldr r0, [r5] + adds r0, r6 + strb r4, [r0] +_08151952: + movs r5, 0 + cmp r5, r7 + bcs _08151A46 + ldr r3, _0815199C @ =0x000031cc + mov r12, r3 + ldr r4, _081519A0 @ =gUnknown_203F3E0 + mov r8, r4 +_08151960: + mov r6, r8 + ldr r2, [r6] + lsls r0, r5, 4 + subs r1, r0, r5 + lsls r1, 2 + adds r1, r2, r1 + add r1, r12 + ldrb r1, [r1] + adds r6, r0, 0 + cmp r1, 0 + beq _08151986 + adds r0, r2, 0 + adds r0, 0xA8 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0 + bne _08151986 + movs r0, 0x1 + strb r0, [r1] +_08151986: + adds r3, r4, 0 + ldr r1, [r3] + adds r0, r1, 0 + adds r0, 0xA8 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x3 + bgt _081519A4 + cmp r0, 0x1 + bge _081519AA + b _08151A3C + .align 2, 0 +_0815199C: .4byte 0x000031cc +_081519A0: .4byte gUnknown_203F3E0 +_081519A4: + cmp r0, 0x4 + beq _081519F8 + b _08151A3C +_081519AA: + adds r1, 0xB0 + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bls _08151A3C + ldr r0, [r3] + adds r0, 0xB0 + adds r0, r5 + strb r2, [r0] + ldr r0, [r3] + adds r0, 0xA8 + adds r0, r5 + strb r2, [r0] + ldr r0, [r3] + subs r1, r6, r5 + lsls r1, 2 + adds r0, r1 + add r0, r12 + strb r2, [r0] + ldr r0, [r3] + adds r0, r1 + ldr r6, _081519F0 @ =0x000031d0 + adds r0, r6 + strb r2, [r0] + ldr r0, [r3] + adds r0, r1 + ldr r1, _081519F4 @ =0x000031d4 + adds r0, r1 + b _08151A3A + .align 2, 0 +_081519F0: .4byte 0x000031d0 +_081519F4: .4byte 0x000031d4 +_081519F8: + adds r1, 0xB0 + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x27 + bls _08151A3C + ldr r0, [r4] + adds r0, 0xB0 + adds r0, r5 + strb r2, [r0] + ldr r0, [r4] + adds r0, 0xA8 + adds r0, r5 + strb r2, [r0] + ldr r0, [r4] + subs r1, r6, r5 + lsls r1, 2 + adds r0, r1 + add r0, r12 + strb r2, [r0] + ldr r0, [r4] + adds r0, r1 + ldr r3, _08151A54 @ =0x000031d0 + adds r0, r3 + strb r2, [r0] + ldr r0, [r4] + adds r0, r1 + ldr r6, _08151A58 @ =0x000031d4 + adds r0, r6 +_08151A3A: + strb r2, [r0] +_08151A3C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _08151960 +_08151A46: + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08151A54: .4byte 0x000031d0 +_08151A58: .4byte 0x000031d4 + thumb_func_end sub_815184C + + thumb_func_start sub_8151A5C +sub_8151A5C: @ 8151A5C + push {r4-r7,lr} + sub sp, 0x18 + ldr r5, _08151B20 @ =gUnknown_203F3E0 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x24 + ldrb r6, [r1] + ldr r2, _08151B24 @ =0x000031a0 + adds r1, r0, r2 + ldr r3, _08151B28 @ =0x000031cc + adds r2, r0, r3 + ldr r4, _08151B2C @ =0x00003208 + adds r3, r0, r4 + ldr r7, _08151B30 @ =0x00003244 + adds r4, r0, r7 + str r4, [sp] + adds r7, 0x3C + adds r4, r0, r7 + str r4, [sp, 0x4] + adds r7, 0x3C + adds r4, r0, r7 + str r4, [sp, 0x8] + adds r4, r0, 0 + adds r4, 0x40 + str r4, [sp, 0xC] + movs r7, 0x90 + lsls r7, 1 + adds r4, r0, r7 + str r4, [sp, 0x10] + movs r4, 0x96 + lsls r4, 1 + adds r0, r4 + str r0, [sp, 0x14] + movs r0, 0 + bl sub_815A950 + ldr r1, [r5] + ldr r7, _08151B34 @ =0x000031b0 + adds r2, r1, r7 + str r0, [r2] + movs r0, 0x94 + lsls r0, 1 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] + movs r4, 0x1 + cmp r4, r6 + bcs _08151AEC +_08151ABC: + adds r0, r4, 0 + bl sub_815AB60 + cmp r0, 0 + beq _08151AE2 + ldr r0, _08151B20 @ =gUnknown_203F3E0 + ldr r2, [r0] + lsls r1, r4, 2 + movs r3, 0x98 + lsls r3, 1 + adds r0, r2, r3 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] + movs r7, 0x94 + lsls r7, 1 + adds r1, r2, r7 + movs r0, 0 + strb r0, [r1] +_08151AE2: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _08151ABC +_08151AEC: + ldr r5, _08151B20 @ =gUnknown_203F3E0 + ldr r1, [r5] + movs r6, 0x92 + lsls r6, 1 + adds r1, r6 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3B + bls _08151B4A + ldr r1, [r5] + movs r2, 0x94 + lsls r2, 1 + adds r0, r1, r2 + ldrb r4, [r0] + cmp r4, 0 + beq _08151B38 + bl sub_80FBA44 + ldr r0, [r5] + adds r0, r6 + movs r1, 0 + strb r1, [r0] + b _08151B4A + .align 2, 0 +_08151B20: .4byte gUnknown_203F3E0 +_08151B24: .4byte 0x000031a0 +_08151B28: .4byte 0x000031cc +_08151B2C: .4byte 0x00003208 +_08151B30: .4byte 0x00003244 +_08151B34: .4byte 0x000031b0 +_08151B38: + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, 0x46 + bls _08151B4A + bl sub_80FBA44 + ldr r0, [r5] + adds r0, r6 + strb r4, [r0] +_08151B4A: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8151A5C + + thumb_func_start sub_8151B54 +sub_8151B54: @ 8151B54 + push {r4,r5,lr} + ldr r5, _08151B6C @ =gUnknown_203F3E0 + ldr r0, [r5] + ldrb r0, [r0, 0x18] + cmp r0, 0x4 + beq _08151B90 + cmp r0, 0x4 + bgt _08151B70 + cmp r0, 0x3 + beq _08151B76 + b _08151B9A + .align 2, 0 +_08151B6C: .4byte gUnknown_203F3E0 +_08151B70: + cmp r0, 0xB + beq _08151B96 + b _08151B9A +_08151B76: + bl sub_8152A00 + adds r4, r0, 0 + cmp r4, 0x1 + bne _08151B9A + bl sub_8152A70 + ldr r0, [r5] + movs r1, 0x8E + lsls r1, 1 + adds r0, r1 + str r4, [r0] + b _08151B9A +_08151B90: + bl sub_815184C + b _08151B9A +_08151B96: + bl sub_8151A5C +_08151B9A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8151B54 + + thumb_func_start sub_8151BA0 +sub_8151BA0: @ 8151BA0 + push {r4-r6,lr} + sub sp, 0x14 + ldr r0, _08151BB4 @ =gUnknown_203F3E0 + ldr r5, [r0] + ldrb r0, [r5, 0x18] + cmp r0, 0x4 + beq _08151BB8 + cmp r0, 0xB + beq _08151C08 + b _08151C44 + .align 2, 0 +_08151BB4: .4byte gUnknown_203F3E0 +_08151BB8: + ldr r1, _08151BF8 @ =0x000032cc + adds r0, r5, r1 + ldr r2, _08151BFC @ =0x000031cc + adds r1, r5, r2 + ldr r3, _08151C00 @ =0x00003208 + adds r2, r5, r3 + ldr r4, _08151C04 @ =0x00003244 + adds r3, r5, r4 + movs r6, 0xCA + lsls r6, 6 + adds r4, r5, r6 + str r4, [sp] + adds r6, 0x3C + adds r4, r5, r6 + str r4, [sp, 0x4] + adds r4, r5, 0 + adds r4, 0x40 + ldrb r4, [r4] + str r4, [sp, 0x8] + movs r6, 0x90 + lsls r6, 1 + adds r4, r5, r6 + ldr r4, [r4] + str r4, [sp, 0xC] + adds r6, 0xC + adds r4, r5, r6 + ldr r4, [r4] + str r4, [sp, 0x10] + bl sub_815A61C + b _08151C44 + .align 2, 0 +_08151BF8: .4byte 0x000032cc +_08151BFC: .4byte 0x000031cc +_08151C00: .4byte 0x00003208 +_08151C04: .4byte 0x00003244 +_08151C08: + ldr r1, _08151C4C @ =0x000032cc + adds r0, r5, r1 + ldr r2, _08151C50 @ =0x000031cc + adds r1, r5, r2 + ldr r3, _08151C54 @ =0x00003208 + adds r2, r5, r3 + ldr r4, _08151C58 @ =0x00003244 + adds r3, r5, r4 + movs r6, 0xCA + lsls r6, 6 + adds r4, r5, r6 + str r4, [sp] + adds r6, 0x3C + adds r4, r5, r6 + str r4, [sp, 0x4] + adds r4, r5, 0 + adds r4, 0x40 + ldrb r4, [r4] + str r4, [sp, 0x8] + movs r6, 0x90 + lsls r6, 1 + adds r4, r5, r6 + ldr r4, [r4] + str r4, [sp, 0xC] + adds r6, 0xC + adds r4, r5, r6 + ldr r4, [r4] + str r4, [sp, 0x10] + bl sub_815A61C +_08151C44: + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08151C4C: .4byte 0x000032cc +_08151C50: .4byte 0x000031cc +_08151C54: .4byte 0x00003208 +_08151C58: .4byte 0x00003244 + thumb_func_end sub_8151BA0 + + thumb_func_start sub_8151C5C +sub_8151C5C: @ 8151C5C + push {r4-r6,lr} + sub sp, 0x18 + ldr r0, _08151C70 @ =gUnknown_203F3E0 + ldr r5, [r0] + ldrb r0, [r5, 0x18] + cmp r0, 0x4 + beq _08151C74 + cmp r0, 0xB + beq _08151CCC + b _08151D10 + .align 2, 0 +_08151C70: .4byte gUnknown_203F3E0 +_08151C74: + adds r0, r5, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 2 + ldr r2, _08151CBC @ =0x000031a0 + adds r1, r2 + adds r1, r5, r1 + ldr r3, _08151CC0 @ =0x000031cc + adds r2, r5, r3 + ldr r4, _08151CC4 @ =0x00003208 + adds r3, r5, r4 + ldr r6, _08151CC8 @ =0x00003244 + adds r4, r5, r6 + str r4, [sp] + adds r6, 0x3C + adds r4, r5, r6 + str r4, [sp, 0x4] + adds r6, 0x3C + adds r4, r5, r6 + str r4, [sp, 0x8] + adds r4, r5, 0 + adds r4, 0x40 + str r4, [sp, 0xC] + movs r6, 0x90 + lsls r6, 1 + adds r4, r5, r6 + str r4, [sp, 0x10] + adds r6, 0xC + adds r4, r5, r6 + str r4, [sp, 0x14] + bl sub_815A950 + b _08151D10 + .align 2, 0 +_08151CBC: .4byte 0x000031a0 +_08151CC0: .4byte 0x000031cc +_08151CC4: .4byte 0x00003208 +_08151CC8: .4byte 0x00003244 +_08151CCC: + adds r0, r5, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 2 + ldr r2, _08151D18 @ =0x000031a0 + adds r1, r2 + adds r1, r5, r1 + ldr r3, _08151D1C @ =0x000031cc + adds r2, r5, r3 + ldr r4, _08151D20 @ =0x00003208 + adds r3, r5, r4 + ldr r6, _08151D24 @ =0x00003244 + adds r4, r5, r6 + str r4, [sp] + adds r6, 0x3C + adds r4, r5, r6 + str r4, [sp, 0x4] + adds r6, 0x3C + adds r4, r5, r6 + str r4, [sp, 0x8] + adds r4, r5, 0 + adds r4, 0x40 + str r4, [sp, 0xC] + movs r6, 0x90 + lsls r6, 1 + adds r4, r5, r6 + str r4, [sp, 0x10] + adds r6, 0xC + adds r4, r5, r6 + str r4, [sp, 0x14] + bl sub_815A950 +_08151D10: + add sp, 0x18 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08151D18: .4byte 0x000031a0 +_08151D1C: .4byte 0x000031cc +_08151D20: .4byte 0x00003208 +_08151D24: .4byte 0x00003244 + thumb_func_end sub_8151C5C + + thumb_func_start sub_8151D28 +sub_8151D28: @ 8151D28 + push {r4,lr} + ldr r4, _08151D40 @ =gUnknown_203F3E0 + ldr r1, [r4] + ldrb r0, [r1, 0x18] + cmp r0, 0x4 + beq _08151D5E + cmp r0, 0x4 + bgt _08151D44 + cmp r0, 0x3 + beq _08151D4A + b _08151D90 + .align 2, 0 +_08151D40: .4byte gUnknown_203F3E0 +_08151D44: + cmp r0, 0xB + beq _08151D74 + b _08151D90 +_08151D4A: + movs r0, 0x1 + bl sub_815A5BC + ldr r0, [r4] + movs r1, 0x8E + lsls r1, 1 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] + b _08151D90 +_08151D5E: + ldr r2, _08151D70 @ =0x000032f8 + adds r1, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _08151D90 + bl sub_815AAD8 + b _08151D90 + .align 2, 0 +_08151D70: .4byte 0x000032f8 +_08151D74: + movs r2, 0x90 + lsls r2, 1 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + bne _08151D90 + adds r2, 0xC + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + bne _08151D90 + movs r0, 0x1 + bl sub_815AB3C +_08151D90: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8151D28 + + thumb_func_start sub_8151D98 +sub_8151D98: @ 8151D98 + push {r4-r6,lr} + ldr r6, _08151DD0 @ =gUnknown_203F3E0 + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0x28 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r1, r2, r0 + ldr r3, _08151DD4 @ =0x000031cc + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _08151DD8 + bl sub_80723E0 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08151E3A + ldr r0, [r6] + movs r2, 0xA2 + lsls r2, 1 + adds r0, r2 + strb r1, [r0] + b _08151E3A + .align 2, 0 +_08151DD0: .4byte gUnknown_203F3E0 +_08151DD4: .4byte 0x000031cc +_08151DD8: + ldr r3, _08151E04 @ =0x000031d0 + adds r0, r1, r3 + ldrb r4, [r0] + cmp r4, 0x1 + bne _08151E08 + movs r1, 0xA2 + lsls r1, 1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08151E3A + movs r0, 0x19 + bl m4aSongNumStop + movs r0, 0x19 + bl sub_80722CC + ldr r0, [r6] + movs r2, 0xA2 + lsls r2, 1 + adds r0, r2 + b _08151E38 + .align 2, 0 +_08151E04: .4byte 0x000031d0 +_08151E08: + ldr r3, _08151E64 @ =0x000031d4 + adds r0, r1, r3 + ldrb r4, [r0] + cmp r4, 0x1 + bne _08151E3A + movs r5, 0xA2 + lsls r5, 1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _08151E3A + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _08151E3A + movs r0, 0x16 + bl sub_80722CC + movs r0, 0x1 + bl sub_8153BC0 + ldr r0, [r6] + adds r0, r5 +_08151E38: + strb r4, [r0] +_08151E3A: + ldr r0, _08151E68 @ =gUnknown_203F3E0 + ldr r2, [r0] + movs r5, 0xAA + lsls r5, 1 + adds r1, r2, r5 + ldrb r1, [r1] + adds r4, r0, 0 + cmp r1, 0 + bne _08151E6C + adds r0, r2, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bls _08151E6C + bl sub_8071A94 + ldr r0, [r4] + adds r0, r5 + movs r1, 0x1 + b _08151E8A + .align 2, 0 +_08151E64: .4byte 0x000031d4 +_08151E68: .4byte gUnknown_203F3E0 +_08151E6C: + ldr r0, [r4] + movs r1, 0xAA + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08151E8C + movs r0, 0xA + bl sub_8071BC4 + ldr r0, [r4] + movs r2, 0xAA + lsls r2, 1 + adds r0, r2 + movs r1, 0x2 +_08151E8A: + strb r1, [r0] +_08151E8C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8151D98 + + thumb_func_start sub_8151E94 +sub_8151E94: @ 8151E94 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r6, _08151EE0 @ =gUnknown_203F3E0 + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0x44 + ldrb r0, [r0] + mov r8, r0 + adds r0, r2, 0 + adds r0, 0x48 + ldrb r7, [r0] + subs r0, 0x20 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r1, r2, r0 + ldr r3, _08151EE4 @ =0x000031cc + adds r0, r1, r3 + ldrb r3, [r0] + cmp r3, 0 + bne _08151EEC + ldr r4, _08151EE8 @ =0x000031d0 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08151F4E + adds r4, 0x4 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08151F4E + movs r1, 0xA2 + lsls r1, 1 + adds r0, r2, r1 + strb r3, [r0] + b _08151F4E + .align 2, 0 +_08151EE0: .4byte gUnknown_203F3E0 +_08151EE4: .4byte 0x000031cc +_08151EE8: .4byte 0x000031d0 +_08151EEC: + ldr r3, _08151F18 @ =0x000031d0 + adds r0, r1, r3 + ldrb r4, [r0] + cmp r4, 0x1 + bne _08151F1C + movs r1, 0xA2 + lsls r1, 1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08151F4E + movs r0, 0x19 + bl m4aSongNumStop + movs r0, 0x19 + bl sub_80722CC + ldr r0, [r6] + movs r3, 0xA2 + lsls r3, 1 + adds r0, r3 + b _08151F4C + .align 2, 0 +_08151F18: .4byte 0x000031d0 +_08151F1C: + ldr r4, _08151FA0 @ =0x000031d4 + adds r0, r1, r4 + ldrb r4, [r0] + cmp r4, 0x1 + bne _08151F4E + movs r5, 0xA2 + lsls r5, 1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _08151F4E + bl sub_80723E0 + lsls r0, 24 + cmp r0, 0 + bne _08151F4E + movs r0, 0x16 + bl sub_80722CC + movs r0, 0x1 + bl sub_8153BC0 + ldr r0, [r6] + adds r0, r5 +_08151F4C: + strb r4, [r0] +_08151F4E: + mov r4, r8 + cmp r4, r7 + bcs _08151FC2 + ldr r5, _08151FA4 @ =gUnknown_203F3E0 +_08151F56: + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0x28 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + ldr r1, _08151FA8 @ =0x000031a0 + adds r0, r1 + adds r0, r2, r0 + adds r1, r0, 0 + adds r1, 0x14 + adds r0, 0x1F + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x9 + bls _08151FAC + movs r3, 0xA4 + lsls r3, 1 + adds r0, r2, r3 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _08151FB8 + adds r0, r1, r4 + ldrb r0, [r0] + adds r0, 0x43 + bl sub_80722CC + ldr r0, [r5] + movs r1, 0xA4 + lsls r1, 1 + adds r0, r1 + adds r0, r4 + movs r1, 0x1 + b _08151FB6 + .align 2, 0 +_08151FA0: .4byte 0x000031d4 +_08151FA4: .4byte gUnknown_203F3E0 +_08151FA8: .4byte 0x000031a0 +_08151FAC: + movs r3, 0xA4 + lsls r3, 1 + adds r0, r2, r3 + adds r0, r4 + movs r1, 0 +_08151FB6: + strb r1, [r0] +_08151FB8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r7 + bcc _08151F56 +_08151FC2: + ldr r0, _08151FEC @ =gUnknown_203F3E0 + ldr r2, [r0] + movs r5, 0xAA + lsls r5, 1 + adds r1, r2, r5 + ldrb r1, [r1] + adds r4, r0, 0 + cmp r1, 0 + bne _08151FF0 + adds r0, r2, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bls _08151FF0 + bl sub_8071A94 + ldr r0, [r4] + adds r0, r5 + movs r1, 0x1 + b _0815200E + .align 2, 0 +_08151FEC: .4byte gUnknown_203F3E0 +_08151FF0: + ldr r0, [r4] + movs r1, 0xAA + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08152010 + movs r0, 0xA + bl sub_8071BC4 + ldr r0, [r4] + movs r3, 0xAA + lsls r3, 1 + adds r0, r3 + movs r1, 0x2 +_0815200E: + strb r1, [r0] +_08152010: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8151E94 + + thumb_func_start sub_815201C +sub_815201C: @ 815201C + push {lr} + bl sub_8077578 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + pop {r0} + bx r0 + thumb_func_end sub_815201C + + thumb_func_start sub_8152034 +sub_8152034: @ 8152034 + push {lr} + bl sub_8070474 + bl sub_8007320 + bl sub_8007610 + pop {r0} + bx r0 + thumb_func_end sub_8152034 + + thumb_func_start sub_8152048 +sub_8152048: @ 8152048 + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + bl sub_8044470 + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8152048 + + thumb_func_start sub_815205C +sub_815205C: @ 815205C + push {lr} + lsls r1, 24 + lsrs r1, 24 + bl sub_807741C + pop {r0} + bx r0 + thumb_func_end sub_815205C + + thumb_func_start sub_815206C +sub_815206C: @ 815206C + push {lr} + movs r1, 0x1 + bl sub_807741C + ldr r1, _0815208C @ =gUnknown_203F3E0 + ldr r3, [r1] + movs r2, 0 + strb r0, [r3, 0x4] + ldr r0, [r1] + strb r2, [r0, 0x10] + ldr r0, [r1] + strb r2, [r0, 0xC] + ldr r0, [r1] + strb r2, [r0, 0x14] + pop {r0} + bx r0 + .align 2, 0 +_0815208C: .4byte gUnknown_203F3E0 + thumb_func_end sub_815206C + + thumb_func_start sub_8152090 +sub_8152090: @ 8152090 + push {r4,lr} + ldr r2, _081520B0 @ =gUnknown_203F3E0 + ldr r1, [r2] + ldrb r3, [r1, 0x18] + movs r4, 0 + strb r3, [r1, 0x1C] + ldr r1, [r2] + strb r0, [r1, 0x18] + ldr r0, [r2] + strb r4, [r0, 0x10] + ldr r0, [r2] + strb r4, [r0, 0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081520B0: .4byte gUnknown_203F3E0 + thumb_func_end sub_8152090 + + thumb_func_start sub_81520B4 +sub_81520B4: @ 81520B4 + push {r4,lr} + ldr r3, _081520E8 @ =gUnknown_203F3E0 + ldr r1, [r3] + ldrb r0, [r1, 0x14] + lsrs r2, r0, 2 + adds r0, 0x1 + strb r0, [r1, 0x14] + cmp r2, 0 + beq _08152108 + ldr r3, [r3] + ldrb r0, [r3, 0x14] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08152108 + ldr r1, _081520EC @ =gUnknown_8475548 + adds r0, r3, 0 + adds r0, 0x24 + ldrb r0, [r0] + subs r0, 0x1 + adds r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bcc _081520F0 + movs r0, 0x1 + b _0815210A + .align 2, 0 +_081520E8: .4byte gUnknown_203F3E0 +_081520EC: .4byte gUnknown_8475548 +_081520F0: + lsls r4, r2, 3 + adds r1, r4, 0 + movs r0, 0x14 + bl sub_8000A38 + negs r4, r4 + lsls r4, 16 + lsrs r4, 16 + movs r0, 0x18 + adds r1, r4, 0 + bl sub_8000A38 +_08152108: + movs r0, 0 +_0815210A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_81520B4 + + thumb_func_start sub_8152110 +sub_8152110: @ 8152110 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r2, _08152168 @ =gUnknown_203F3E0 + ldr r0, [r2] + adds r1, r0, 0 + adds r1, 0x44 + adds r0, 0x48 + ldrb r5, [r0] + ldrb r1, [r1] + cmp r1, r5 + bcs _0815215C + mov r8, r2 + ldr r0, _0815216C @ =0x000032e0 + mov r12, r0 + movs r7, 0 + movs r6, 0x1 +_08152132: + mov r2, r8 + ldr r0, [r2] + mov r2, r12 + adds r4, r0, r2 + ldr r2, _08152170 @ =0x000032eb + adds r0, r2 + adds r2, r0, r1 + movs r3, 0 + adds r0, r1, 0 + ands r0, r6 + cmp r0, 0 + bne _0815214C + movs r3, 0x1 +_0815214C: + strb r3, [r2] + adds r0, r4, r1 + strb r7, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r5 + bcc _08152132 +_0815215C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08152168: .4byte gUnknown_203F3E0 +_0815216C: .4byte 0x000032e0 +_08152170: .4byte 0x000032eb + thumb_func_end sub_8152110 + + thumb_func_start sub_8152174 +sub_8152174: @ 8152174 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r0, _08152248 @ =gUnknown_203F3E0 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x44 + ldrb r0, [r0] + str r0, [sp] + adds r0, r1, 0 + adds r0, 0x48 + ldrb r0, [r0] + str r0, [sp, 0x4] + adds r0, r1, 0 + adds r0, 0x24 + ldrb r0, [r0] + str r0, [sp, 0x8] + adds r0, r1, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bls _081521A8 + b _08152464 +_081521A8: + movs r6, 0 + ldr r0, [sp, 0x8] + cmp r6, r0 + bcs _08152290 +_081521B0: + ldr r3, _08152248 @ =gUnknown_203F3E0 + lsls r0, r6, 4 + subs r1, r0, r6 + lsls r1, 2 + ldr r2, [r3] + adds r1, r2 + ldr r4, _0815224C @ =0x000031cc + adds r4, r1 + mov r8, r4 + ldrb r1, [r4] + mov r9, r0 + adds r0, r6, 0x1 + str r0, [sp, 0xC] + cmp r1, 0 + beq _08152284 + adds r0, r2, 0 + adds r0, 0xA8 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08152284 + ldr r1, [sp] + mov r10, r1 + ldr r2, [sp, 0x4] + cmp r10, r2 + bcs _08152284 + adds r7, r3, 0 +_081521E6: + ldr r0, _08152250 @ =gUnknown_8471F50 + add r0, r10 + ldrb r5, [r0] + ldr r1, [r7] + lsls r4, r5, 1 + adds r0, r1, 0 + adds r0, 0xF4 + adds r0, r4 + ldrb r0, [r0] + cmp r0, r6 + beq _08152284 + adds r0, r1, 0 + adds r0, 0xF5 + adds r0, r4 + ldrb r0, [r0] + cmp r0, r6 + beq _08152284 + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, 0 + adds r2, r5, 0 + bl sub_8152484 + cmp r0, 0x1 + bne _08152260 + movs r2, 0 + ldr r3, _08152248 @ =gUnknown_203F3E0 + mov r8, r4 +_0815221E: + ldr r0, [r3] + mov r4, r8 + adds r1, r2, r4 + adds r0, 0xF4 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0xFF + bne _08152254 + strb r6, [r1] + ldr r0, [r3] + adds r0, 0xA8 + adds r0, r6 + movs r1, 0x2 + strb r1, [r0] + ldr r0, [r3] + adds r0, 0xC4 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + b _08152284 + .align 2, 0 +_08152248: .4byte gUnknown_203F3E0 +_0815224C: .4byte 0x000031cc +_08152250: .4byte gUnknown_8471F50 +_08152254: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1 + bls _0815221E + b _08152284 +_08152260: + ldr r0, [r7] + mov r2, r9 + subs r1, r2, r6 + lsls r1, 2 + adds r0, r1 + ldr r4, _08152354 @ =0x000031d4 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08152284 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, [sp, 0x4] + cmp r10, r0 + bcc _081521E6 +_08152284: + ldr r1, [sp, 0xC] + lsls r0, r1, 24 + lsrs r6, r0, 24 + ldr r2, [sp, 0x8] + cmp r6, r2 + bcc _081521B0 +_08152290: + ldr r4, [sp] + mov r10, r4 + ldr r0, [sp, 0x4] + cmp r10, r0 + bcc _0815229C + b _08152464 +_0815229C: + ldr r1, _08152358 @ =gUnknown_203F3E0 + mov r9, r1 +_081522A0: + movs r6, 0xFF + ldr r0, _0815235C @ =gUnknown_8471F50 + add r0, r10 + ldrb r5, [r0] + mov r2, r9 + ldr r0, [r2] + adds r0, 0xC4 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x1 + beq _081522B8 + b _08152452 +_081522B8: + adds r0, r5, 0 + bl sub_8152BD4 + mov r1, r9 + ldr r4, [r1] + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + adds r1, 0x90 + adds r1, r0 + ldrb r0, [r1] + movs r1, 0x7 + bl __udivsi3 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bls _081522DE + movs r3, 0x2 +_081522DE: + ldr r2, _08152360 @ =gUnknown_847553C + ldr r0, _08152364 @ =0x000031b4 + adds r1, r4, r0 + adds r1, r5 + lsls r0, r3, 1 + adds r0, r3 + ldrb r1, [r1] + adds r0, r1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r4, 0 + adds r0, 0xD0 + adds r0, r5 + ldrb r0, [r0] + subs r2, r1, r0 + cmp r2, 0x5 + bgt _0815230C + adds r1, r4, 0 + adds r1, 0x9C + adds r1, r5 + ldrb r0, [r1] + adds r0, r2 + strb r0, [r1] +_0815230C: + mov r2, r9 + ldr r1, [r2] + adds r1, 0x9C + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + movs r4, 0xFF + ands r0, r4 + cmp r0, 0x5 + bhi _08152326 + b _08152452 +_08152326: + mov r1, r9 + ldr r0, [r1] + adds r0, 0x9C + adds r0, r5 + strb r2, [r0] + ldr r3, [r1] + lsls r1, r5, 1 + adds r0, r3, 0 + adds r0, 0xF4 + adds r2, r0, r1 + ldrb r0, [r2] + mov r8, r1 + cmp r0, 0xFF + bne _08152368 + adds r0, r3, 0 + adds r0, 0xF5 + add r0, r8 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08152350 + b _08152452 +_08152350: + b _08152378 + .align 2, 0 +_08152354: .4byte 0x000031d4 +_08152358: .4byte gUnknown_203F3E0 +_0815235C: .4byte gUnknown_8471F50 +_08152360: .4byte gUnknown_847553C +_08152364: .4byte 0x000031b4 +_08152368: + adds r0, r3, 0 + adds r0, 0xF5 + add r0, r8 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08152378 + ldrb r4, [r2] + b _0815239E +_08152378: + mov r2, r9 + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0xF4 + add r0, r8 + ldrb r7, [r0] + adds r1, 0xF5 + add r1, r8 + ldrb r6, [r1] + bl sub_8044EC8 + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _0815239A + adds r4, r7, 0 + b _0815239E +_0815239A: + adds r4, r6, 0 + adds r6, r7, 0 +_0815239E: + mov r1, r9 + ldr r0, [r1] + ldr r2, _08152474 @ =0x000032eb + adds r0, r2 + adds r0, r5 + movs r1, 0x7 + strb r1, [r0] + mov r1, r9 + ldr r0, [r1] + adds r0, 0xC4 + adds r0, r5 + movs r1, 0x2 + strb r1, [r0] + mov r2, r9 + ldr r0, [r2] + adds r0, 0xA8 + adds r0, r4 + movs r1, 0x3 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xB8 + adds r0, r5 + strb r4, [r0] + ldr r1, [r2] + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 2 + adds r1, r0 + ldr r2, _08152478 @ =0x000031d0 + adds r1, r2 + movs r0, 0x1 + strb r0, [r1] + mov r2, r9 + ldr r1, [r2] + lsls r0, r6, 4 + subs r0, r6 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815247C @ =0x000031d4 + adds r1, r0 + movs r2, 0x1 + strb r2, [r1] + mov r0, r9 + ldr r1, [r0] + lsls r0, r4, 1 + adds r1, 0x86 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + movs r0, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8152D34 + movs r0, 0x1 + bl sub_8152F94 + adds r0, r4, 0 + bl sub_8152B64 + mov r1, r9 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0xE8 + adds r1, r5 + ldr r2, _08152480 @ =0x000032e0 + adds r0, r2 + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + mov r4, r9 + ldr r0, [r4] + adds r0, r2 + adds r0, r5 + movs r1, 0x3 + strb r1, [r0] + ldr r1, [r4] + adds r1, 0xF4 + add r1, r8 + ldrb r0, [r1] + movs r2, 0xFF + orrs r0, r2 + strb r0, [r1] + ldr r1, [r4] + adds r1, 0xF5 + add r1, r8 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] +_08152452: + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r4, [sp, 0x4] + cmp r10, r4 + bcs _08152464 + b _081522A0 +_08152464: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08152474: .4byte 0x000032eb +_08152478: .4byte 0x000031d0 +_0815247C: .4byte 0x000031d4 +_08152480: .4byte 0x000032e0 + thumb_func_end sub_8152174 + + thumb_func_start sub_8152484 +sub_8152484: @ 8152484 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + movs r7, 0 + ldr r2, _081524B8 @ =gUnknown_203F3E0 + ldr r1, [r2] + adds r0, r1, 0 + adds r0, 0x24 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _081524BC @ =0x000032e0 + adds r1, r0 + mov r12, r2 + cmp r3, 0x2 + beq _081524C0 + cmp r3, 0x2 + bgt _081524C6 + cmp r3, 0x1 + beq _081524C4 + b _081524C6 + .align 2, 0 +_081524B8: .4byte gUnknown_203F3E0 +_081524BC: .4byte 0x000032e0 +_081524C0: + movs r7, 0x1 + b _081524C6 +_081524C4: + movs r7, 0x2 +_081524C6: + adds r0, r1, 0 + adds r0, 0xB + adds r0, r6 + ldrb r0, [r0] + subs r0, 0x6 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08152524 + ldr r0, _08152518 @ =gUnknown_8472063 + lsls r1, r4, 1 + adds r1, r4 + adds r1, r7, r1 + lsls r2, r5, 4 + subs r2, r5 + adds r1, r2 + adds r1, r0 + ldrb r1, [r1] + cmp r6, r1 + bne _0815255A + mov r0, r12 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xC4 + adds r0, r6 + ldrb r0, [r0] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08152520 + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 2 + adds r0, r1, r0 + ldr r1, _0815251C @ =0x000031d4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _0815255A + .align 2, 0 +_08152518: .4byte gUnknown_8472063 +_0815251C: .4byte 0x000031d4 +_08152520: + movs r0, 0x1 + b _0815255C +_08152524: + ldr r0, _08152564 @ =gUnknown_8472063 + lsls r1, r4, 1 + adds r1, r4 + adds r1, r7, r1 + lsls r2, r5, 4 + subs r2, r5 + adds r1, r2 + adds r1, r0 + ldrb r1, [r1] + cmp r6, r1 + bne _0815255A + mov r1, r12 + ldr r0, [r1] + adds r0, 0xA8 + adds r0, r4 + movs r1, 0x4 + strb r1, [r0] + mov r0, r12 + ldr r1, [r0] + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 2 + adds r1, r0 + ldr r0, _08152568 @ =0x000031d4 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] +_0815255A: + movs r0, 0 +_0815255C: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08152564: .4byte gUnknown_8472063 +_08152568: .4byte 0x000031d4 + thumb_func_end sub_8152484 + + thumb_func_start sub_815256C +sub_815256C: @ 815256C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _08152640 @ =gUnknown_203F3E0 + ldr r4, [r2] + adds r0, r4, 0 + adds r0, 0x44 + ldrb r1, [r0] + adds r0, 0x4 + ldrb r0, [r0] + mov r9, r0 + movs r3, 0 + mov r10, r3 + movs r5, 0x90 + lsls r5, 1 + adds r0, r4, r5 + str r3, [r0] + adds r5, r1, 0 + mov r0, r9 + subs r0, 0x1 + cmp r5, r0 + blt _0815259E + b _081527BC +_0815259E: + mov r8, r2 +_081525A0: + mov r0, r8 + ldr r4, [r0] + adds r0, r4, 0 + adds r0, 0xC4 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x1 + bls _081525B2 + b _081526BC +_081525B2: + movs r1, 0x90 + lsls r1, 1 + adds r0, r4, r1 + movs r2, 0x1 + str r2, [r0] + ldr r1, _08152644 @ =0x000032eb + adds r0, r4, r1 + adds r6, r0, r5 + ldrb r0, [r6] + cmp r0, 0x9 + bls _0815264C + movs r7, 0 + movs r0, 0xA + strb r0, [r6] + mov r1, r8 + ldr r0, [r1] + adds r0, 0xC4 + adds r0, r5 + movs r1, 0x3 + strb r1, [r0] + mov r1, r8 + ldr r0, [r1] + movs r6, 0xA4 + lsls r6, 1 + adds r0, r6 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0 + bne _081525FC + strb r2, [r1] + ldr r2, _08152648 @ =0x000032e0 + adds r0, r4, r2 + adds r0, r5 + ldrb r0, [r0] + adds r0, 0x43 + bl sub_80722CC +_081525FC: + mov r0, r8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bls _08152612 + mov r2, r10 + cmp r2, 0x1 + beq _08152612 + b _081527AC +_08152612: + movs r0, 0x1 + mov r10, r0 + adds r0, r1, r6 + adds r0, r5 + strb r7, [r0] + mov r1, r8 + ldr r0, [r1] + adds r1, r0, 0 + adds r1, 0x40 + ldrb r0, [r1] + cmp r0, 0x9 + bhi _0815262E + adds r0, 0x1 + strb r0, [r1] +_0815262E: + movs r0, 0x3 + adds r1, r5, 0 + movs r2, 0 + bl sub_8152D34 + movs r0, 0 + bl sub_8152F94 + b _081527AC + .align 2, 0 +_08152640: .4byte gUnknown_203F3E0 +_08152644: .4byte 0x000032eb +_08152648: .4byte 0x000032e0 +_0815264C: + adds r0, r5, 0 + bl sub_8152BD4 + mov r2, r8 + ldr r7, [r2] + lsls r0, 24 + lsrs r0, 24 + adds r1, r7, 0 + adds r1, 0x90 + adds r1, r0 + ldrb r0, [r1] + movs r1, 0x7 + bl __udivsi3 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bls _08152672 + movs r3, 0x2 +_08152672: + ldr r2, _081526B4 @ =gUnknown_847553C + ldr r0, _081526B8 @ =0x000032e0 + adds r1, r4, r0 + adds r1, r5 + lsls r0, r3, 1 + adds r0, r3 + ldrb r1, [r1] + adds r0, r1 + adds r0, r2 + ldrb r2, [r0] + adds r1, r7, 0 + adds r1, 0xD0 + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + movs r3, 0 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r2 + bcc _081526AC + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + mov r1, r8 + ldr r0, [r1] + adds r0, 0xD0 + adds r0, r5 + strb r3, [r0] +_081526AC: + bl sub_8152174 + b _081527AC + .align 2, 0 +_081526B4: .4byte gUnknown_847553C +_081526B8: .4byte 0x000032e0 +_081526BC: + cmp r0, 0x2 + bne _0815273C + adds r1, r4, 0 + adds r1, 0xDC + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + movs r3, 0 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bls _081527AC + mov r0, r8 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0xB8 + adds r0, r5 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r2, r0 + ldr r1, _08152730 @ =0x000031d0 + adds r2, r1 + strb r3, [r2] + mov r2, r8 + ldr r0, [r2] + adds r0, 0xDC + adds r0, r5 + strb r3, [r0] + ldr r0, [r2] + adds r0, 0xD0 + adds r0, r5 + strb r3, [r0] + ldr r0, [r2] + adds r0, 0xC4 + adds r0, r5 + strb r3, [r0] + ldr r1, _08152734 @ =0x000032eb + adds r0, r4, r1 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + adds r0, r5, 0 + bl sub_8152BD4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r5, 0 + bl sub_8152BF8 + ldr r2, _08152738 @ =0x000032e0 + adds r1, r4, r2 + adds r1, r5 + strb r0, [r1] + b _081527AC + .align 2, 0 +_08152730: .4byte 0x000031d0 +_08152734: .4byte 0x000032eb +_08152738: .4byte 0x000032e0 +_0815273C: + cmp r0, 0x3 + bne _081527AC + adds r1, r4, 0 + adds r1, 0xDC + adds r1, r5 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bls _081527AC + mov r0, r8 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bhi _081527AC + adds r0, r1, 0 + adds r0, 0xDC + adds r0, r5 + strb r2, [r0] + mov r1, r8 + ldr r0, [r1] + adds r0, 0xD0 + adds r0, r5 + strb r2, [r0] + ldr r0, [r1] + adds r0, 0xC4 + adds r0, r5 + strb r2, [r0] + ldr r2, _081527CC @ =0x000032eb + adds r0, r4, r2 + adds r0, r5 + movs r1, 0x1 + strb r1, [r0] + mov r0, r8 + ldr r1, [r0] + adds r1, 0xE8 + adds r1, r5 + subs r2, 0xB + adds r4, r2 + adds r4, r5 + ldrb r0, [r4] + strb r0, [r1] + adds r0, r5, 0 + bl sub_8152BD4 + lsls r0, 24 + lsrs r0, 24 + adds r1, r5, 0 + bl sub_8152BF8 + strb r0, [r4] +_081527AC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r9 + subs r0, 0x1 + cmp r5, r0 + bge _081527BC + b _081525A0 +_081527BC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081527CC: .4byte 0x000032eb + thumb_func_end sub_815256C + + thumb_func_start sub_81527D0 +sub_81527D0: @ 81527D0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08152838 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x44 + adds r0, 0x48 + ldrb r0, [r0] + mov r8, r0 + ldrb r6, [r1] + cmp r6, r8 + bcs _081528C2 + ldr r0, _0815283C @ =gUnknown_8471F50 + mov r9, r0 +_081527F0: + ldr r0, _08152838 @ =gUnknown_203F3E0 + ldr r3, [r0] + adds r0, r3, 0 + adds r0, 0x28 + ldrb r1, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + ldr r2, _08152840 @ =0x000031a0 + adds r0, r2 + adds r7, r3, r0 + movs r0, 0xB + adds r2, r1, 0 + muls r2, r0 + adds r2, r6, r2 + adds r3, 0x24 + ldrb r1, [r3] + subs r1, 0x1 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 3 + subs r0, r1 + adds r2, r0 + add r2, r9 + ldrb r4, [r2] + adds r0, r7, 0 + adds r0, 0x1F + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _08152844 + adds r0, r6, 0 + movs r1, 0 + bl sub_81542EC + b _0815284C + .align 2, 0 +_08152838: .4byte gUnknown_203F3E0 +_0815283C: .4byte gUnknown_8471F50 +_08152840: .4byte 0x000031a0 +_08152844: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_81542EC +_0815284C: + adds r0, r7, 0 + adds r0, 0x1F + adds r5, r0, r4 + ldrb r0, [r5] + cmp r0, 0x9 + bls _08152878 + adds r0, r7, 0 + adds r0, 0x14 + adds r0, r4 + ldrb r1, [r0] + adds r1, 0x3 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8154398 + ldrb r1, [r5] + lsls r1, 25 + movs r0, 0xFF + lsls r0, 24 + adds r1, r0 + b _0815289A +_08152878: + adds r0, r7, 0 + adds r0, 0x14 + adds r3, r0, r4 + ldrb r0, [r3] + cmp r0, 0x3 + bne _081528A4 + movs r0, 0x7 + strb r0, [r5] + adds r0, r6, 0 + movs r1, 0x6 + bl sub_8154398 + ldrb r1, [r5] + lsls r1, 25 + movs r2, 0xFF + lsls r2, 24 + adds r1, r2 +_0815289A: + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8154370 + b _081528B8 +_081528A4: + ldrb r1, [r3] + adds r0, r6, 0 + bl sub_8154398 + ldrb r1, [r5] + lsls r1, 25 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8154370 +_081528B8: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r8 + bcc _081527F0 +_081528C2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81527D0 + + thumb_func_start sub_81528D0 +sub_81528D0: @ 81528D0 + push {r4-r6,lr} + ldr r1, _08152908 @ =gUnknown_203F3E0 + ldr r0, [r1] + adds r0, 0x24 + ldrb r5, [r0] + movs r4, 0 + cmp r4, r5 + bcs _08152902 + adds r6, r1, 0 +_081528E2: + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 2 + ldr r1, [r6] + adds r0, r1 + ldr r1, _0815290C @ =0x000031cc + adds r0, r1 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8153DA8 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _081528E2 +_08152902: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08152908: .4byte gUnknown_203F3E0 +_0815290C: .4byte 0x000031cc + thumb_func_end sub_81528D0 + + thumb_func_start sub_8152910 +sub_8152910: @ 8152910 + push {r4,r5,lr} + ldr r0, _08152938 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r5, [r0] + movs r4, 0 + cmp r4, r5 + bcs _08152932 +_08152920: + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8153DA8 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08152920 +_08152932: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08152938: .4byte gUnknown_203F3E0 + thumb_func_end sub_8152910 + + thumb_func_start sub_815293C +sub_815293C: @ 815293C + push {lr} + bl sub_81527D0 + ldr r0, _08152954 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bls _08152958 + bl sub_8152910 + b _0815295C + .align 2, 0 +_08152954: .4byte gUnknown_203F3E0 +_08152958: + bl sub_81528D0 +_0815295C: + ldr r0, _0815296C @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x40 + ldrb r0, [r0] + bl sub_8153FC8 + pop {r0} + bx r0 + .align 2, 0 +_0815296C: .4byte gUnknown_203F3E0 + thumb_func_end sub_815293C + + thumb_func_start sub_8152970 +sub_8152970: @ 8152970 + push {lr} + bl sub_81527D0 + ldr r0, _08152988 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x9 + bls _0815298C + bl sub_8152910 + b _08152990 + .align 2, 0 +_08152988: .4byte gUnknown_203F3E0 +_0815298C: + bl sub_81528D0 +_08152990: + ldr r0, _081529A0 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x40 + ldrb r0, [r0] + bl sub_8153FC8 + pop {r0} + bx r0 + .align 2, 0 +_081529A0: .4byte gUnknown_203F3E0 + thumb_func_end sub_8152970 + + thumb_func_start sub_81529A4 +sub_81529A4: @ 81529A4 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x4 + bhi _081529FC + lsls r0, 2 + ldr r1, _081529BC @ =_081529C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081529BC: .4byte _081529C0 + .align 2, 0 +_081529C0: + .4byte _081529D4 + .4byte _081529DC + .4byte _081529E4 + .4byte _081529EC + .4byte _081529F4 +_081529D4: + movs r0, 0x4 + strb r0, [r3] + movs r0, 0x7 + b _081529FA +_081529DC: + movs r0, 0x3 + strb r0, [r3] + movs r0, 0x8 + b _081529FA +_081529E4: + movs r0, 0x2 + strb r0, [r3] + movs r0, 0x9 + b _081529FA +_081529EC: + movs r0, 0x1 + strb r0, [r3] + movs r0, 0xA + b _081529FA +_081529F4: + movs r0, 0 + strb r0, [r3] + movs r0, 0xB +_081529FA: + strb r0, [r2] +_081529FC: + pop {r0} + bx r0 + thumb_func_end sub_81529A4 + + thumb_func_start sub_8152A00 +sub_8152A00: @ 8152A00 + push {r4-r6,lr} + ldr r1, _08152A58 @ =gUnknown_203F3E0 + ldr r0, [r1] + adds r0, 0x24 + ldrb r5, [r0] + movs r4, 0x1 + cmp r4, r5 + bcs _08152A66 + adds r6, r1, 0 +_08152A12: + ldr r0, [r6] + movs r1, 0xAC + lsls r1, 1 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _08152A34 + adds r0, r4, 0 + bl sub_815A5E8 + ldr r1, [r6] + movs r2, 0xAC + lsls r2, 1 + adds r1, r2 + adds r1, r4 + strb r0, [r1] +_08152A34: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08152A12 + cmp r4, r5 + bcs _08152A66 + ldr r0, _08152A58 @ =gUnknown_203F3E0 + ldr r0, [r0] + movs r2, 0xAC + lsls r2, 1 + adds r1, r0, r2 +_08152A4C: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _08152A5C + movs r0, 0 + b _08152A68 + .align 2, 0 +_08152A58: .4byte gUnknown_203F3E0 +_08152A5C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08152A4C +_08152A66: + movs r0, 0x1 +_08152A68: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8152A00 + + thumb_func_start sub_8152A70 +sub_8152A70: @ 8152A70 + push {r4,lr} + movs r1, 0 + ldr r4, _08152A94 @ =gUnknown_203F3E0 + movs r3, 0xAC + lsls r3, 1 + movs r2, 0 +_08152A7C: + ldr r0, [r4] + adds r0, r3 + adds r0, r1 + strb r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _08152A7C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08152A94: .4byte gUnknown_203F3E0 + thumb_func_end sub_8152A70 + + thumb_func_start sub_8152A98 +sub_8152A98: @ 8152A98 + push {r4,lr} + ldr r3, _08152ACC @ =gUnknown_203F3E0 + ldr r1, [r3] + adds r2, r1, 0 + adds r2, 0x40 + ldrb r0, [r2] + cmp r0, 0x9 + bls _08152AD0 + movs r4, 0x90 + lsls r4, 1 + adds r0, r1, r4 + ldr r0, [r0] + cmp r0, 0 + bne _08152AD0 + movs r0, 0xA + strb r0, [r2] + ldr r0, [r3] + movs r1, 0x96 + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _08152AD0 + movs r0, 0x1 + b _08152AD2 + .align 2, 0 +_08152ACC: .4byte gUnknown_203F3E0 +_08152AD0: + movs r0, 0 +_08152AD2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8152A98 + + thumb_func_start sub_8152AD8 +sub_8152AD8: @ 8152AD8 + push {r4-r6,lr} + ldr r4, _08152B50 @ =gUnknown_203F3E0 + ldr r1, [r4] + adds r2, r1, 0 + adds r2, 0x40 + ldrb r0, [r2] + cmp r0, 0x9 + bls _08152B5C + adds r0, r1, 0 + adds r0, 0x44 + ldrb r3, [r0] + adds r0, 0x4 + ldrb r5, [r0] + movs r0, 0xA + strb r0, [r2] + ldr r4, [r4] + mov r12, r4 + movs r0, 0x96 + lsls r0, 1 + add r0, r12 + ldr r0, [r0] + cmp r0, 0 + beq _08152B5C + adds r4, r3, 0 + cmp r4, r5 + bcs _08152B4C + mov r0, r12 + adds r0, 0x28 + ldrb r3, [r0] + lsls r1, r3, 4 + subs r1, r3 + lsls r1, 2 + ldr r6, _08152B54 @ =gUnknown_8471F50 + subs r0, 0x4 + ldrb r2, [r0] + subs r2, 0x1 + add r1, r12 + movs r0, 0xB + muls r3, r0 + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 3 + subs r2, r0, r2 + ldr r0, _08152B58 @ =0x000031bf + adds r1, r0 +_08152B32: + adds r0, r4, r3 + adds r0, r2 + adds r0, r6 + ldrb r0, [r0] + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0xA + bne _08152B5C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08152B32 +_08152B4C: + movs r0, 0x1 + b _08152B5E + .align 2, 0 +_08152B50: .4byte gUnknown_203F3E0 +_08152B54: .4byte gUnknown_8471F50 +_08152B58: .4byte 0x000031bf +_08152B5C: + movs r0, 0 +_08152B5E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8152AD8 + + thumb_func_start sub_8152B64 +sub_8152B64: @ 8152B64 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08152BCC @ =gUnknown_8475550 + mov r8, r0 + ldr r0, _08152BD0 @ =gUnknown_203F3E0 + ldr r6, [r0] + adds r0, r6, 0 + adds r0, 0x90 + adds r0, r5 + mov r9, r0 + ldrb r7, [r0] + adds r0, r7, 0 + movs r1, 0x7 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + add r4, r8 + adds r0, r7, 0 + movs r1, 0x7 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x64 + muls r0, r1 + ldrb r4, [r4] + adds r0, r4 + lsls r0, 24 + lsls r5, 1 + adds r6, 0x86 + adds r6, r5 + ldrh r1, [r6] + lsrs r0, 24 + cmp r1, r0 + bcc _08152BBE + adds r0, r7, 0x1 + mov r1, r9 + strb r0, [r1] +_08152BBE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08152BCC: .4byte gUnknown_8475550 +_08152BD0: .4byte gUnknown_203F3E0 + thumb_func_end sub_8152B64 + + thumb_func_start sub_8152BD4 +sub_8152BD4: @ 8152BD4 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08152BF0 @ =gUnknown_84720FC + ldr r1, _08152BF4 @ =gUnknown_203F3E0 + ldr r1, [r1] + adds r1, 0x24 + ldrb r1, [r1] + subs r1, 0x1 + movs r2, 0xB + muls r1, r2 + adds r0, r1 + adds r0, r3 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08152BF0: .4byte gUnknown_84720FC +_08152BF4: .4byte gUnknown_203F3E0 + thumb_func_end sub_8152BD4 + + thumb_func_start sub_8152BF8 +sub_8152BF8: @ 8152BF8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r4, _08152C78 @ =gUnknown_203F3E0 + ldr r1, [r4] + adds r1, 0x24 + ldrb r2, [r1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08152C7C @ =gUnknown_84720AE + lsls r1, r0, 1 + adds r1, r0 + lsls r0, r2, 4 + subs r0, r2 + adds r1, r0 + adds r0, r1, r3 + ldrb r0, [r0] + mov r12, r0 + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r7, [r0] + adds r3, 0x2 + adds r1, r3 + ldrb r1, [r1] + mov r8, r1 + movs r3, 0 + ldr r1, _08152C80 @ =gUnknown_8472133 + lsls r0, r2, 2 + adds r2, r0, r2 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08152C60 + adds r6, r1, 0 +_08152C46: + adds r0, r3, r2 + adds r0, r6 + ldrb r0, [r0] + cmp r5, r0 + beq _08152C84 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r3, r2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08152C46 +_08152C60: + ldr r0, [r4] + adds r0, 0x90 + mov r1, r12 + adds r2, r0, r1 + adds r1, r0, r7 + ldrb r0, [r2] + ldrb r3, [r1] + cmp r0, r3 + bls _08152C8E + adds r1, r0, 0 + b _08152C90 + .align 2, 0 +_08152C78: .4byte gUnknown_203F3E0 +_08152C7C: .4byte gUnknown_84720AE +_08152C80: .4byte gUnknown_8472133 +_08152C84: + ldr r0, [r4] + adds r0, 0x90 + adds r0, r7 + ldrb r0, [r0] + b _08152CA2 +_08152C8E: + ldrb r1, [r1] +_08152C90: + ldr r0, [r4] + adds r0, 0x90 + mov r2, r8 + adds r4, r0, r2 + ldrb r0, [r4] + cmp r0, r1 + bls _08152CA0 + adds r1, r0, 0 +_08152CA0: + adds r0, r1, 0 +_08152CA2: + adds r1, r5, 0 + bl sub_8152CB8 + lsls r0, 24 + lsrs r0, 24 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8152BF8 + + thumb_func_start sub_8152CB8 +sub_8152CB8: @ 8152CB8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08152CE4 @ =gUnknown_203F3E0 + ldr r2, [r2] + adds r2, 0xE8 + adds r2, r1 + ldrb r4, [r2] + movs r1, 0x7 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bhi _08152D26 + lsls r0, 2 + ldr r1, _08152CE8 @ =_08152CEC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08152CE4: .4byte gUnknown_203F3E0 +_08152CE8: .4byte _08152CEC + .align 2, 0 +_08152CEC: + .4byte _08152D26 + .4byte _08152D1E + .4byte _08152D2A + .4byte _08152D08 + .4byte _08152D0E + .4byte _08152D14 + .4byte _08152D1A +_08152D08: + cmp r4, 0 + beq _08152D1E + b _08152D26 +_08152D0E: + cmp r4, 0 + beq _08152D2A + b _08152D26 +_08152D14: + cmp r4, 0x2 + beq _08152D1E + b _08152D2A +_08152D1A: + cmp r4, 0 + bne _08152D22 +_08152D1E: + movs r0, 0x1 + b _08152D2C +_08152D22: + cmp r4, 0x1 + beq _08152D2A +_08152D26: + movs r0, 0 + b _08152D2C +_08152D2A: + movs r0, 0x2 +_08152D2C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8152CB8 + + thumb_func_start sub_8152D34 +sub_8152D34: @ 8152D34 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08152D60 @ =gUnknown_203F3E0 + ldr r2, [r1] + adds r0, r2, 0 + adds r0, 0x24 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r4, 0 + bge _08152D54 + b _08152F8E +_08152D54: + cmp r4, 0x2 + ble _08152D64 + cmp r4, 0x3 + beq _08152D94 + b _08152F8E + .align 2, 0 +_08152D60: .4byte gUnknown_203F3E0 +_08152D64: + ldr r1, _08152D8C @ =0x000031b4 + adds r0, r2, r1 + adds r0, r3 + ldrb r4, [r0] + lsls r4, 1 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r4, r0 + adds r0, r2, 0 + adds r0, 0x4A + adds r0, r4 + ldrh r0, [r0] + ldr r1, _08152D90 @ =0x00004e20 + bl sub_815378C + ldr r1, [r5] + adds r1, 0x4A + adds r1, r4 + b _08152F8C + .align 2, 0 +_08152D8C: .4byte 0x000031b4 +_08152D90: .4byte 0x00004e20 +_08152D94: + cmp r0, 0x3 + bne _08152D9A + b _08152EE0 +_08152D9A: + cmp r0, 0x3 + bgt _08152DA6 + cmp r0, 0x2 + bne _08152DA4 + b _08152F4A +_08152DA4: + b _08152F8E +_08152DA6: + cmp r0, 0x4 + beq _08152E56 + cmp r0, 0x5 + beq _08152DB0 + b _08152F8E +_08152DB0: + cmp r3, 0x9 + bls _08152DB6 + b _08152F8E +_08152DB6: + lsls r0, r3, 2 + ldr r1, _08152DC0 @ =_08152DC4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08152DC0: .4byte _08152DC4 + .align 2, 0 +_08152DC4: + .4byte _08152DEC + .4byte _08152DFC + .4byte _08152E02 + .4byte _08152E12 + .4byte _08152E18 + .4byte _08152E28 + .4byte _08152E2E + .4byte _08152E3C + .4byte _08152E40 + .4byte _08152E50 +_08152DEC: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x68 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x74 + b _08152F88 +_08152DFC: + ldr r1, [r5] + adds r1, 0x74 + b _08152F88 +_08152E02: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x74 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x80 + b _08152F88 +_08152E12: + ldr r1, [r5] + adds r1, 0x80 + b _08152F88 +_08152E18: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x80 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x50 + b _08152F88 +_08152E28: + ldr r1, [r5] + adds r1, 0x50 + b _08152F88 +_08152E2E: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x50 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + b _08152F86 +_08152E3C: + ldr r1, [r5] + b _08152F86 +_08152E40: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x5C + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x68 + b _08152F88 +_08152E50: + ldr r1, [r5] + adds r1, 0x68 + b _08152F88 +_08152E56: + subs r0, r3, 0x1 + cmp r0, 0x7 + bls _08152E5E + b _08152F8E +_08152E5E: + lsls r0, 2 + ldr r1, _08152E68 @ =_08152E6C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08152E68: .4byte _08152E6C + .align 2, 0 +_08152E6C: + .4byte _08152E8C + .4byte _08152E9C + .4byte _08152EA2 + .4byte _08152EB2 + .4byte _08152EB8 + .4byte _08152EC6 + .4byte _08152ECA + .4byte _08152EDA +_08152E8C: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x68 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x74 + b _08152F88 +_08152E9C: + ldr r1, [r5] + adds r1, 0x74 + b _08152F88 +_08152EA2: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x74 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x50 + b _08152F88 +_08152EB2: + ldr r1, [r5] + adds r1, 0x50 + b _08152F88 +_08152EB8: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x50 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + b _08152F86 +_08152EC6: + ldr r1, [r5] + b _08152F86 +_08152ECA: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x5C + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x68 + b _08152F88 +_08152EDA: + ldr r1, [r5] + adds r1, 0x68 + b _08152F88 +_08152EE0: + subs r0, r3, 0x2 + cmp r0, 0x5 + bhi _08152F8E + lsls r0, 2 + ldr r1, _08152EF0 @ =_08152EF4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08152EF0: .4byte _08152EF4 + .align 2, 0 +_08152EF4: + .4byte _08152F0C + .4byte _08152F1C + .4byte _08152F22 + .4byte _08152F32 + .4byte _08152F38 + .4byte _08152F46 +_08152F0C: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x5C + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x68 + b _08152F88 +_08152F1C: + ldr r1, [r5] + adds r1, 0x68 + b _08152F88 +_08152F22: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x68 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + adds r1, 0x50 + b _08152F88 +_08152F32: + ldr r1, [r5] + adds r1, 0x50 + b _08152F88 +_08152F38: + ldr r1, [r5] + adds r2, r1, 0 + adds r2, 0x50 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + b _08152F86 +_08152F46: + ldr r1, [r5] + b _08152F86 +_08152F4A: + cmp r3, 0x4 + beq _08152F70 + cmp r3, 0x4 + bgt _08152F58 + cmp r3, 0x3 + beq _08152F62 + b _08152F8E +_08152F58: + cmp r3, 0x5 + beq _08152F76 + cmp r3, 0x6 + beq _08152F84 + b _08152F8E +_08152F62: + adds r1, r2, 0 + adds r1, 0x50 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + adds r1, 0xC + b _08152F88 +_08152F70: + adds r1, r2, 0 + adds r1, 0x50 + b _08152F88 +_08152F76: + adds r1, r2, 0 + adds r1, 0x50 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + adds r1, 0xC + b _08152F88 +_08152F84: + adds r1, r2, 0 +_08152F86: + adds r1, 0x5C +_08152F88: + ldrh r0, [r1] + adds r0, 0x1 +_08152F8C: + strh r0, [r1] +_08152F8E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8152D34 + + thumb_func_start sub_8152F94 +sub_8152F94: @ 8152F94 + push {r4,r5,lr} + adds r1, r0, 0 + ldr r4, _08152FD8 @ =gUnknown_203F3E0 + ldr r3, [r4] + adds r0, r3, 0 + adds r0, 0x24 + ldrb r0, [r0] + cmp r0, 0x5 + bne _08152FFE + cmp r1, 0x1 + bne _08152FE0 + movs r5, 0x89 + lsls r5, 1 + adds r1, r3, r5 + ldrh r0, [r1] + adds r2, r0, 0x1 + strh r2, [r1] + movs r0, 0x8A + lsls r0, 1 + adds r1, r3, r0 + lsls r0, r2, 16 + lsrs r0, 16 + ldrh r3, [r1] + cmp r0, r3 + bls _08152FC8 + strh r2, [r1] +_08152FC8: + ldr r0, [r4] + adds r2, r0, r5 + ldrh r0, [r2] + ldr r1, _08152FDC @ =0x0000270f + cmp r0, r1 + bls _08152FFE + strh r1, [r2] + b _08152FFE + .align 2, 0 +_08152FD8: .4byte gUnknown_203F3E0 +_08152FDC: .4byte 0x0000270f +_08152FE0: + movs r2, 0x89 + lsls r2, 1 + adds r0, r3, r2 + movs r5, 0x8A + lsls r5, 1 + adds r1, r3, r5 + ldrh r0, [r0] + ldrh r3, [r1] + cmp r0, r3 + bls _08152FF6 + strh r0, [r1] +_08152FF6: + ldr r0, [r4] + adds r0, r2 + movs r1, 0 + strh r1, [r0] +_08152FFE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8152F94 + + thumb_func_start sub_8153004 +sub_8153004: @ 8153004 + push {r4,r5,lr} + movs r3, 0 + ldr r2, _08153044 @ =gUnknown_203F3E0 + ldr r0, [r2] + adds r0, 0x24 + ldrb r0, [r0] + cmp r3, r0 + bcs _0815303C + adds r5, r2, 0 + movs r4, 0x8A + lsls r4, 1 +_0815301A: + ldr r2, [r5] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0x54 + adds r1, r0 + adds r0, r2, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + adds r2, 0x24 + ldrb r2, [r2] + cmp r3, r2 + bcc _0815301A +_0815303C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08153044: .4byte gUnknown_203F3E0 + thumb_func_end sub_8153004 + + thumb_func_start sub_8153048 +sub_8153048: @ 8153048 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r5, 0 + ldr r7, _08153138 @ =gUnknown_203F3E0 + movs r4, 0 + ldr r0, _0815313C @ =0x000031bf + mov r10, r0 +_0815305C: + movs r2, 0 + lsls r6, r5, 4 + lsls r1, r5, 1 + mov r8, r1 + lsls r0, r5, 3 + mov r12, r0 + adds r1, r5, 0x1 + mov r9, r1 + subs r0, r6, r5 + lsls r3, r0, 2 +_08153070: + ldr r0, [r7] + adds r1, r2, r3 + add r0, r10 + adds r0, r1 + strb r4, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xA + bls _08153070 + ldr r0, [r7] + subs r1, r6, r5 + lsls r1, 2 + adds r0, r1 + ldr r2, _08153140 @ =0x000031cc + adds r0, r2 + strb r4, [r0] + ldr r0, [r7] + adds r0, r1 + ldr r1, _08153144 @ =0x000031d0 + adds r0, r1 + strb r4, [r0] + ldr r0, [r7] + adds r0, 0x90 + adds r0, r5 + strb r4, [r0] + ldr r1, [r7] + adds r0, r1, 0 + adds r0, 0x86 + add r0, r8 + strh r4, [r0] + add r1, r12 + ldr r2, _08153148 @ =0x00003308 + adds r1, r2 + strb r4, [r1] + ldr r2, [r7] + ldr r1, _0815314C @ =0x0000330c + adds r0, r2, r1 + add r0, r12 + str r4, [r0] + mov r0, r8 + adds r1, r0, r5 + lsls r1, 2 + adds r0, r2, 0 + adds r0, 0x4A + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x4E + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x50 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x52 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + adds r0, 0x54 + adds r0, r1 + strh r4, [r0] + mov r1, r9 + lsls r0, r1, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _0815305C + ldr r2, _08153138 @ =gUnknown_203F3E0 + ldr r0, [r2] + movs r1, 0xAA + lsls r1, 1 + adds r0, r1 + movs r2, 0 + strb r2, [r0] + ldr r1, _08153138 @ =gUnknown_203F3E0 + ldr r0, [r1] + movs r1, 0x89 + lsls r1, 1 + adds r3, r0, r1 + movs r1, 0 + strh r2, [r3] + adds r0, 0x40 + strb r1, [r0] + bl sub_81528D0 + bl sub_81527D0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08153138: .4byte gUnknown_203F3E0 +_0815313C: .4byte 0x000031bf +_08153140: .4byte 0x000031cc +_08153144: .4byte 0x000031d0 +_08153148: .4byte 0x00003308 +_0815314C: .4byte 0x0000330c + thumb_func_end sub_8153048 + + thumb_func_start sub_8153150 +sub_8153150: @ 8153150 + push {r4,r5,lr} + movs r4, 0 + ldr r0, _08153168 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r0, [r0] + cmp r0, 0x4 + beq _0815316C + cmp r0, 0x5 + beq _08153170 + b _08153172 + .align 2, 0 +_08153168: .4byte gUnknown_203F3E0 +_0815316C: + movs r4, 0x1 + b _08153172 +_08153170: + movs r4, 0x2 +_08153172: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + lsls r1, r4, 2 + ldr r5, _081531B4 @ =gUnknown_203F3E0 + ldr r2, _081531B8 @ =gUnknown_8475558 + adds r1, r4 + lsls r1, 1 + adds r0, r1 + adds r0, r2 + ldrb r2, [r0] +_08153196: + ldr r1, [r5] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r1, 0x52 + adds r1, r0 + strh r2, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x4 + bls _08153196 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081531B4: .4byte gUnknown_203F3E0 +_081531B8: .4byte gUnknown_8475558 + thumb_func_end sub_8153150 + + thumb_func_start sub_81531BC +sub_81531BC: @ 81531BC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081531F4 @ =gUnknown_203F3E0 + ldr r2, [r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r0, r2, 0 + adds r0, 0x4A + adds r0, r1 + ldrh r3, [r0] + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r1 + ldrh r0, [r0] + adds r2, 0x4E + adds r2, r1 + adds r3, r0 + ldrh r2, [r2] + adds r0, r3, r2 + ldr r1, _081531F8 @ =0x0000270f + cmp r0, r1 + bls _081531EE + adds r0, r1, 0 +_081531EE: + pop {r1} + bx r1 + .align 2, 0 +_081531F4: .4byte gUnknown_203F3E0 +_081531F8: .4byte 0x0000270f + thumb_func_end sub_81531BC + + thumb_func_start sub_81531FC +sub_81531FC: @ 81531FC + push {r4-r6,lr} + ldr r5, _08153264 @ =gUnknown_203F3E0 + ldr r0, [r5] + adds r0, 0x28 + ldrb r0, [r0] + bl sub_81531BC + ldr r1, _08153268 @ =0x0000270f + bl sub_815379C + adds r4, r0, 0 + ldr r0, [r5] + adds r0, 0x28 + ldrb r0, [r0] + bl sub_8153424 + ldr r1, _0815326C @ =0x000f4236 + bl sub_815379C + adds r2, r0, 0 + ldr r3, _08153270 @ =gUnknown_300500C + ldr r0, [r3] + movs r6, 0xB1 + lsls r6, 4 + adds r1, r0, r6 + ldr r0, [r1] + cmp r0, r2 + bcs _08153236 + str r2, [r1] +_08153236: + ldr r0, [r3] + ldr r2, _08153274 @ =0x00000b14 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, r4 + bcs _08153244 + strh r4, [r1] +_08153244: + ldr r0, [r3] + ldr r6, _08153278 @ =0x00000b16 + adds r2, r0, r6 + ldr r0, [r5] + movs r1, 0x8A + lsls r1, 1 + adds r0, r1 + ldrh r1, [r0] + ldrh r0, [r2] + cmp r0, r1 + bcs _0815325C + strh r1, [r2] +_0815325C: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08153264: .4byte gUnknown_203F3E0 +_08153268: .4byte 0x0000270f +_0815326C: .4byte 0x000f4236 +_08153270: .4byte gUnknown_300500C +_08153274: .4byte 0x00000b14 +_08153278: .4byte 0x00000b16 + thumb_func_end sub_81531FC + + thumb_func_start sub_815327C +sub_815327C: @ 815327C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _081532B4 @ =gUnknown_203F3E0 + ldr r0, [r1] + adds r0, 0x9B + ldrb r6, [r0] + movs r3, 0x3 + adds r5, r1, 0 + adds r4, r5, 0 +_08153290: + ldr r0, [r4] + adds r0, 0x98 + adds r2, r0, r3 + subs r1, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2] + lsls r1, 24 + lsrs r3, r1, 24 + cmp r3, 0 + bne _08153290 + ldr r0, [r5] + adds r0, 0x98 + strb r7, [r0] + adds r0, r6, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081532B4: .4byte gUnknown_203F3E0 + thumb_func_end sub_815327C + + thumb_func_start sub_81532B8 +sub_81532B8: @ 81532B8 + push {r4,lr} + ldr r4, _081532EC @ =gUnknown_203F3E0 + ldr r3, [r4] + adds r0, r3, 0 + adds r0, 0x28 + ldrb r1, [r0] + adds r0, 0x88 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, 0 + bne _08153360 + ldr r0, _081532F0 @ =gUnknown_30030F0 + ldrh r2, [r0, 0x2E] + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + beq _081532F8 + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + ldr r1, _081532F4 @ =0x000031cc + adds r0, r1 + movs r1, 0x2 + b _0815332E + .align 2, 0 +_081532EC: .4byte gUnknown_203F3E0 +_081532F0: .4byte gUnknown_30030F0 +_081532F4: .4byte 0x000031cc +_081532F8: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _08153314 + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + ldr r1, _08153310 @ =0x000031cc + adds r0, r1 + movs r1, 0x3 + b _0815332E + .align 2, 0 +_08153310: .4byte 0x000031cc +_08153314: + movs r0, 0x10 + ands r0, r2 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _0815334C + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + ldr r1, _08153348 @ =0x000031cc + adds r0, r1 + movs r1, 0x1 +_0815332E: + strb r1, [r0] + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x28 + adds r0, 0xB0 + ldrb r1, [r1] + adds r0, r1 + movs r1, 0x6 + strb r1, [r0] + movs r0, 0xCD + bl sub_80722CC + b _08153364 + .align 2, 0 +_08153348: .4byte 0x000031cc +_0815334C: + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 2 + adds r0, r3, r0 + ldr r1, _0815335C @ =0x000031cc + adds r0, r1 + strb r2, [r0] + b _08153364 + .align 2, 0 +_0815335C: .4byte 0x000031cc +_08153360: + subs r0, 0x1 + strb r0, [r2] +_08153364: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81532B8 + + thumb_func_start sub_815336C +sub_815336C: @ 815336C + ldr r0, _08153388 @ =gUnknown_203F3E0 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x28 + ldrb r2, [r0] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 2 + adds r1, r0 + ldr r0, _0815338C @ =0x000031cc + adds r1, r0 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08153388: .4byte gUnknown_203F3E0 +_0815338C: .4byte 0x000031cc + thumb_func_end sub_815336C + + thumb_func_start sub_8153390 +sub_8153390: @ 8153390 + ldr r0, _081533B0 @ =gUnknown_203F3E0 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x28 + ldrb r2, [r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, 0x52 + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x85 + lsls r0, 16 + lsrs r0, 16 + bx lr + .align 2, 0 +_081533B0: .4byte gUnknown_203F3E0 + thumb_func_end sub_8153390 + + thumb_func_start sub_81533B4 +sub_81533B4: @ 81533B4 + ldr r0, _081533C0 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081533C0: .4byte gUnknown_203F3E0 + thumb_func_end sub_81533B4 + + thumb_func_start sub_81533C4 +sub_81533C4: @ 81533C4 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _081533E4 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0 + bne _081533F0 + ldr r0, _081533E8 @ =gUnknown_203F3E0 + lsls r1, r2, 4 + subs r1, r2 + lsls r1, 2 + ldr r2, _081533EC @ =0x000031a0 + adds r1, r2 + ldr r0, [r0] + b _081533F8 + .align 2, 0 +_081533E4: .4byte gUnknown_3003F64 +_081533E8: .4byte gUnknown_203F3E0 +_081533EC: .4byte 0x000031a0 +_081533F0: + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + ldr r1, _08153400 @ =gUnknown_2022744 +_081533F8: + adds r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_08153400: .4byte gUnknown_2022744 + thumb_func_end sub_81533C4 + + thumb_func_start sub_8153404 +sub_8153404: @ 8153404 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r2, _08153420 @ =gUnknown_203F3E0 + ldr r3, [r2] + lsrs r1, 23 + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r1, r2 + adds r3, 0x4A + adds r3, r1 + ldrh r0, [r3] + bx lr + .align 2, 0 +_08153420: .4byte gUnknown_203F3E0 + thumb_func_end sub_8153404 + + thumb_func_start sub_8153424 +sub_8153424: @ 8153424 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + movs r3, 0 + ldr r0, _08153490 @ =gUnknown_203F3E0 + mov r9, r0 + ldr r2, _08153494 @ =gUnknown_84755D8 + mov r10, r2 + ldr r2, [r0] + lsls r1, r4, 1 + adds r0, r1, r4 + lsls r0, 2 + str r0, [sp] + adds r6, r2, 0 + adds r6, 0x4A + mov r12, r1 + mov r8, r10 +_08153452: + lsls r1, r3, 1 + ldr r7, [sp] + adds r0, r1, r7 + adds r0, r6, r0 + ldrh r2, [r0] + add r1, r8 + movs r7, 0 + ldrsh r0, [r1, r7] + muls r0, r2 + adds r5, r0 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x2 + bls _08153452 + mov r0, r9 + ldr r1, [r0] + mov r2, r12 + adds r0, r2, r4 + lsls r0, 2 + adds r1, 0x50 + adds r1, r0 + ldrh r1, [r1] + mov r3, r10 + movs r7, 0x6 + ldrsh r0, [r3, r7] + muls r0, r1 + cmp r5, r0 + bls _08153498 + subs r0, r5, r0 + b _0815349A + .align 2, 0 +_08153490: .4byte gUnknown_203F3E0 +_08153494: .4byte gUnknown_84755D8 +_08153498: + movs r0, 0 +_0815349A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8153424 + + thumb_func_start sub_81534AC +sub_81534AC: @ 81534AC + push {r4-r6,lr} + ldr r0, _081534E8 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r6, [r0] + movs r0, 0 + bl sub_8153424 + adds r5, r0, 0 + movs r4, 0x1 + cmp r4, r6 + bcs _081534DA +_081534C4: + adds r0, r4, 0 + bl sub_8153424 + cmp r0, r5 + bls _081534D0 + adds r5, r0, 0 +_081534D0: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _081534C4 +_081534DA: + ldr r1, _081534EC @ =0x000f4236 + adds r0, r5, 0 + bl sub_815379C + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_081534E8: .4byte gUnknown_203F3E0 +_081534EC: .4byte 0x000f4236 + thumb_func_end sub_81534AC + + thumb_func_start sub_81534F0 +sub_81534F0: @ 81534F0 + push {r4,r5,lr} + lsls r0, 24 + ldr r1, _08153530 @ =gUnknown_203F3E0 + ldr r2, [r1] + adds r1, r2, 0 + adds r1, 0x24 + ldrb r5, [r1] + lsrs r4, r0, 23 + adds r2, 0x4A + adds r0, r2, r4 + ldrh r3, [r0] + movs r1, 0 + cmp r1, r5 + bcs _08153528 +_0815350C: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4, r0 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, r3 + bls _0815351E + adds r3, r0, 0 +_0815351E: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r5 + bcc _0815350C +_08153528: + adds r0, r3, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08153530: .4byte gUnknown_203F3E0 + thumb_func_end sub_81534F0 + + thumb_func_start sub_8153534 +sub_8153534: @ 8153534 + push {r4-r7,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0x1 + ldr r0, _081535AC @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r5, [r0] + movs r4, 0 + cmp r4, r5 + bcs _08153562 +_0815354C: + adds r0, r4, 0 + bl sub_8153424 + lsls r1, r4, 2 + add r1, sp + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _0815354C +_08153562: + lsls r7, 2 + mov r12, r7 + cmp r6, 0 + beq _0815359C + subs r7, r5, 0x1 +_0815356C: + movs r6, 0 + movs r4, 0 + cmp r6, r7 + bge _08153598 + adds r5, r7, 0 +_08153576: + lsls r0, r4, 2 + mov r2, sp + adds r1, r2, r0 + adds r4, 0x1 + lsls r0, r4, 2 + adds r3, r2, r0 + ldr r0, [r1] + ldr r2, [r3] + cmp r0, r2 + bcs _08153590 + str r2, [r1] + str r0, [r3] + movs r6, 0x1 +_08153590: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, r5 + blt _08153576 +_08153598: + cmp r6, 0 + bne _0815356C +_0815359C: + mov r0, sp + add r0, r12 + ldr r0, [r0] + add sp, 0x14 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081535AC: .4byte gUnknown_203F3E0 + thumb_func_end sub_8153534 + + thumb_func_start sub_81535B0 +sub_81535B0: @ 81535B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r0, 0 + mov r10, r0 + mov r8, r0 + mov r9, r0 + ldr r6, _08153690 @ =gUnknown_203F3E0 + ldr r0, [r6] + adds r0, 0x24 + ldrb r5, [r0] + bl sub_81534AC + bl sub_81534AC + cmp r0, 0 + bne _08153604 + movs r4, 0 + cmp r9, r5 + bcs _08153604 + adds r2, r6, 0 + ldr r1, _08153694 @ =0x00003308 + mov r12, r1 + movs r7, 0 + movs r6, 0x4 + ldr r3, _08153698 @ =0x0000330c +_081535E8: + ldr r0, [r2] + lsls r1, r4, 3 + adds r0, r1 + add r0, r12 + strb r6, [r0] + ldr r0, [r2] + adds r0, r3 + adds r0, r1 + str r7, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _081535E8 +_08153604: + movs r4, 0 + cmp r4, r5 + bcs _0815362E +_0815360A: + adds r0, r4, 0 + bl sub_8153424 + ldr r1, _0815369C @ =0x000f4236 + bl sub_815379C + ldr r1, _08153690 @ =gUnknown_203F3E0 + ldr r1, [r1] + lsls r2, r4, 3 + ldr r3, _08153698 @ =0x0000330c + adds r1, r3 + adds r1, r2 + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _0815360A +_0815362E: + mov r0, r10 + bl sub_8153534 + adds r6, r0, 0 + mov r3, r8 + movs r4, 0 + cmp r4, r5 + bcs _0815367A + ldr r7, _08153690 @ =gUnknown_203F3E0 + mov r10, r7 +_08153642: + mov r0, r10 + ldr r2, [r0] + lsls r1, r4, 3 + ldr r7, _08153698 @ =0x0000330c + adds r0, r2, r7 + adds r0, r1 + ldr r0, [r0] + cmp r6, r0 + bne _08153670 + adds r0, r2, r1 + ldr r1, _08153694 @ =0x00003308 + adds r0, r1 + strb r3, [r0] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08153670: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08153642 +_0815367A: + mov r10, r8 + cmp r9, r5 + bcc _0815362E + movs r0, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08153690: .4byte gUnknown_203F3E0 +_08153694: .4byte 0x00003308 +_08153698: .4byte 0x0000330c +_0815369C: .4byte 0x000f4236 + thumb_func_end sub_81535B0 + + thumb_func_start sub_81536A0 +sub_81536A0: @ 81536A0 + lsls r1, 24 + ldr r2, _081536B8 @ =gUnknown_203F3E0 + ldr r2, [r2] + lsrs r1, 21 + ldr r3, _081536BC @ =0x00003308 + adds r2, r3 + adds r2, r1 + ldr r1, [r2] + ldr r2, [r2, 0x4] + str r1, [r0] + str r2, [r0, 0x4] + bx lr + .align 2, 0 +_081536B8: .4byte gUnknown_203F3E0 +_081536BC: .4byte 0x00003308 + thumb_func_end sub_81536A0 + + thumb_func_start sub_81536C0 +sub_81536C0: @ 81536C0 + push {r4-r7,lr} + sub sp, 0x14 + lsls r0, 24 + lsrs r6, r0, 24 + movs r7, 0 + ldr r0, _08153728 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r5, [r0] + mov r0, sp + movs r1, 0 + movs r2, 0x14 + bl memset + movs r4, 0 + cmp r7, r5 + bcs _081536F8 +_081536E2: + adds r0, r4, 0 + bl sub_8153424 + lsls r1, r4, 2 + add r1, sp + str r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _081536E2 +_081536F8: + lsls r0, r6, 2 + add r0, sp + ldr r1, [r0] + movs r4, 0 +_08153700: + cmp r4, r6 + beq _08153714 + lsls r0, r4, 2 + add r0, sp + ldr r0, [r0] + cmp r1, r0 + bcs _08153714 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_08153714: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bls _08153700 + adds r0, r7, 0 + add sp, 0x14 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08153728: .4byte gUnknown_203F3E0 + thumb_func_end sub_81536C0 + + thumb_func_start sub_815372C +sub_815372C: @ 815372C + push {r4-r6,lr} + ldr r0, _08153754 @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x28 + ldrb r4, [r0] + bl sub_8153390 + lsls r0, 16 + lsrs r5, r0, 16 + adds r6, r5, 0 + adds r0, r4, 0 + bl sub_8153424 + adds r4, r0, 0 + bl sub_81534AC + cmp r4, r0 + beq _08153758 + movs r0, 0x3 + b _08153786 + .align 2, 0 +_08153754: .4byte gUnknown_203F3E0 +_08153758: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_809A000 + lsls r0, 24 + cmp r0, 0 + bne _0815376A + movs r0, 0x2 + b _08153786 +_0815376A: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_809A084 + adds r0, r6, 0 + movs r1, 0x1 + bl sub_809A000 + lsls r0, 24 + cmp r0, 0 + beq _08153784 + movs r0, 0 + b _08153786 +_08153784: + movs r0, 0x1 +_08153786: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_815372C + + thumb_func_start sub_815378C +sub_815378C: @ 815378C + push {lr} + adds r2, r0, 0 + adds r0, r1, 0 + cmp r2, r0 + bcs _08153798 + adds r0, r2, 0x1 +_08153798: + pop {r1} + bx r1 + thumb_func_end sub_815378C + + thumb_func_start sub_815379C +sub_815379C: @ 815379C + push {lr} + adds r2, r0, 0 + adds r0, r1, 0 + cmp r2, r0 + bcs _081537A8 + adds r0, r2, 0 +_081537A8: + pop {r1} + bx r1 + thumb_func_end sub_815379C + + thumb_func_start sub_81537AC +sub_81537AC: @ 81537AC + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081537BC @ =gUnknown_203F3E0 + ldr r1, [r1] + adds r1, 0x34 + adds r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_081537BC: .4byte gUnknown_203F3E0 + thumb_func_end sub_81537AC + + thumb_func_start sub_81537C0 +sub_81537C0: @ 81537C0 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _081537F0 @ =gUnknown_20370D0 +_081537C6: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _081537F4 @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x5 + bl sub_803FBE8 + cmp r0, 0 + beq _081537F8 + adds r0, r4, 0 + movs r1, 0x41 + bl sub_803FBE8 + cmp r0, 0x55 + bne _081537F8 + movs r0, 0x1 + strh r0, [r6] + b _08153804 + .align 2, 0 +_081537F0: .4byte gUnknown_20370D0 +_081537F4: .4byte gUnknown_2024284 +_081537F8: + adds r5, 0x1 + cmp r5, 0x5 + ble _081537C6 + ldr r1, _0815380C @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] +_08153804: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815380C: .4byte gUnknown_20370D0 + thumb_func_end sub_81537C0 + + thumb_func_start sub_8153810 +sub_8153810: @ 8153810 + push {r4,lr} + ldr r4, _0815382C @ =sub_8153830 + adds r0, r4, 0 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815382C: .4byte sub_8153830 + thumb_func_end sub_8153810 + + thumb_func_start sub_8153830 +sub_8153830: @ 8153830 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08153854 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0815387C + cmp r0, 0x1 + bgt _08153858 + cmp r0, 0 + beq _08153862 + b _081538CA + .align 2, 0 +_08153854: .4byte gUnknown_3005098 +_08153858: + cmp r0, 0x2 + beq _08153888 + cmp r0, 0x3 + beq _081538B0 + b _081538CA +_08153862: + ldr r0, _08153878 @ =gUnknown_84755E0 + bl sub_8003CE4 + strh r0, [r4, 0x2] + lsls r0, 24 + lsrs r0, 24 + bl sub_81538D0 + ldrb r0, [r4, 0x2] + movs r1, 0x3 + b _0815389E + .align 2, 0 +_08153878: .4byte gUnknown_84755E0 +_0815387C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081538CA + b _081538A2 +_08153888: + ldr r0, _081538AC @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _081538CA + ldrb r0, [r4, 0x2] + bl sub_815036C + ldrb r0, [r4, 0x2] + movs r1, 0x1 +_0815389E: + bl sub_8003F20 +_081538A2: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _081538CA + .align 2, 0 +_081538AC: .4byte gUnknown_30030F0 +_081538B0: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081538CA + ldrb r0, [r4, 0x2] + bl sub_8003E3C + adds r0, r5, 0 + bl sub_8077508 + bl sub_8069B34 +_081538CA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8153830 + + thumb_func_start sub_81538D0 +sub_81538D0: @ 81538D0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _081539CC @ =gUnknown_300500C + ldr r1, [r0] + ldr r2, _081539D0 @ =0x00000b14 + adds r0, r1, r2 + ldrh r0, [r0] + str r0, [sp, 0xC] + subs r2, 0x4 + adds r0, r1, r2 + ldr r0, [r0] + str r0, [sp, 0x10] + ldr r0, _081539D4 @ =0x00000b16 + adds r1, r0 + ldrh r0, [r1] + str r0, [sp, 0x14] + ldr r4, _081539D8 @ =0x0000021d + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0xD0 + bl sub_814FF2C + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0xD + bl sub_8150048 + adds r0, r7, 0 + movs r1, 0x11 + bl sub_800445C + ldr r0, _081539DC @ =gUnknown_84755E8 + ldr r2, [r0] + movs r0, 0x1 + str r0, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + movs r3, 0x1 + bl sub_8002C48 + movs r4, 0 + add r2, sp, 0x18 + mov r8, r2 + movs r0, 0xFF + mov r10, r0 + mov r9, r4 + mov r2, sp + adds r2, 0xC + str r2, [sp, 0x2C] +_08153946: + ldr r0, [sp, 0x2C] + ldm r0!, {r1} + str r0, [sp, 0x2C] + ldr r0, _081539E0 @ =gUnknown_84755F8 + adds r0, r4, r0 + ldrb r3, [r0] + mov r0, r8 + movs r2, 0 + bl sub_8008E78 + movs r0, 0x2 + mov r1, r8 + movs r2, 0x1 + negs r2, r2 + bl sub_8005ED4 + adds r5, r0, 0 + ldr r1, _081539DC @ =gUnknown_84755E8 + adds r6, r4, 0x1 + lsls r0, r6, 2 + adds r0, r1 + ldr r2, [r0] + ldr r0, _081539E4 @ =gUnknown_84755FC + lsls r4, 1 + adds r0, r4, r0 + ldrb r0, [r0] + str r0, [sp] + mov r0, r10 + str r0, [sp, 0x4] + mov r0, r9 + str r0, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + movs r3, 0x1 + bl sub_8002C48 + movs r3, 0xE0 + subs r3, r5 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _081539E8 @ =gUnknown_8475602 + adds r4, r0 + ldrb r0, [r4] + str r0, [sp] + mov r2, r10 + str r2, [sp, 0x4] + mov r0, r9 + str r0, [sp, 0x8] + adds r0, r7, 0 + movs r1, 0x2 + mov r2, r8 + bl sub_8002C48 + adds r4, r6, 0 + cmp r4, 0x2 + ble _08153946 + adds r0, r7, 0 + bl sub_8003FA0 + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081539CC: .4byte gUnknown_300500C +_081539D0: .4byte 0x00000b14 +_081539D4: .4byte 0x00000b16 +_081539D8: .4byte 0x0000021d +_081539DC: .4byte gUnknown_84755E8 +_081539E0: .4byte gUnknown_84755F8 +_081539E4: .4byte gUnknown_84755FC +_081539E8: .4byte gUnknown_8475602 + thumb_func_end sub_81538D0 + + thumb_func_start sub_81539EC +sub_81539EC: @ 81539EC + push {lr} + bl sub_800A088 + ldr r1, _08153A00 @ =gUnknown_203F3E0 + ldr r1, [r1] + adds r1, 0x24 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08153A00: .4byte gUnknown_203F3E0 + thumb_func_end sub_81539EC + + thumb_func_start sub_8153A04 +sub_8153A04: @ 8153A04 + push {r4-r7,lr} + ldr r0, _08153A8C @ =gUnknown_203F3E0 + ldr r0, [r0] + adds r0, 0x24 + ldrb r4, [r0] + cmp r4, 0x4 + bhi _08153A32 + ldr r5, _08153A90 @ =gUnknown_8475648 +_08153A14: + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r1, _08153A94 @ =gUnknown_2022744 + adds r0, r1 + lsls r1, r4, 2 + adds r1, r5 + ldr r1, [r1] + bl sub_8008D84 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bls _08153A14 +_08153A32: + ldr r0, _08153A8C @ =gUnknown_203F3E0 + ldr r1, [r0] + adds r1, 0x24 + movs r2, 0x5 + strb r2, [r1] + movs r1, 0 + mov r12, r0 +_08153A40: + movs r4, 0 + mov r2, r12 + ldr r0, [r2] + adds r0, 0x24 + adds r5, r1, 0x1 + ldrb r0, [r0] + cmp r4, r0 + bcs _08153A7E + ldr r7, _08153A8C @ =gUnknown_203F3E0 + lsls r3, r1, 1 + ldr r6, _08153A98 @ =gUnknown_8475608 +_08153A56: + ldr r2, [r7] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r3, r0 + adds r1, r2, 0 + adds r1, 0x4A + adds r1, r0 + lsls r0, r4, 3 + adds r0, r3, r0 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r2, 0x24 + ldrb r2, [r2] + cmp r4, r2 + bcc _08153A56 +_08153A7E: + lsls r0, r5, 24 + lsrs r1, r0, 24 + cmp r1, 0x3 + bls _08153A40 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08153A8C: .4byte gUnknown_203F3E0 +_08153A90: .4byte gUnknown_8475648 +_08153A94: .4byte gUnknown_2022744 +_08153A98: .4byte gUnknown_8475608 + thumb_func_end sub_8153A04 + + thumb_func_start sub_8153A9C +sub_8153A9C: @ 8153A9C + push {r4,r5,lr} + sub sp, 0x18 + movs r5, 0xC0 + lsls r5, 6 + adds r0, r5, 0 + bl sub_8002BB0 + adds r4, r0, 0 + ldr r0, _08153AF0 @ =gUnknown_8478D90 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldr r0, _08153AF4 @ =gUnknown_8478D98 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x10] + str r1, [sp, 0x14] + ldr r0, _08153AF8 @ =gUnknown_8477374 + adds r1, r4, 0 + bl LZ77UnCompWram + cmp r4, 0 + beq _08153ADC + str r4, [sp] + str r5, [sp, 0x4] + mov r0, sp + bl sub_80086DC + adds r0, r4, 0 + bl sub_8002BC4 +_08153ADC: + add r0, sp, 0x8 + bl sub_8008928 + add r0, sp, 0x10 + bl sub_8008928 + add sp, 0x18 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08153AF0: .4byte gUnknown_8478D90 +_08153AF4: .4byte gUnknown_8478D98 +_08153AF8: .4byte gUnknown_8477374 + thumb_func_end sub_8153A9C + + thumb_func_start sub_8153AFC +sub_8153AFC: @ 8153AFC + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x30 + adds r6, r1, 0 + mov r8, r2 + adds r5, r3, 0 + lsls r6, 24 + lsrs r6, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r5, 24 + lsrs r5, 24 + add r1, sp, 0x18 + movs r3, 0 + strh r3, [r1] + ldrb r2, [r0] + mov r0, sp + adds r0, 0x1A + strh r2, [r0] + ldr r0, _08153B88 @ =gUnknown_8478C98 + str r0, [sp, 0x1C] + ldr r0, _08153B8C @ =gUnknown_8478CE0 + str r0, [sp, 0x20] + str r3, [sp, 0x24] + ldr r0, _08153B90 @ =gUnknown_8231CFC + str r0, [sp, 0x28] + ldr r0, _08153B94 @ =sub_8153B9C + str r0, [sp, 0x2C] + mov r0, sp + movs r2, 0x18 + bl memcpy + movs r0, 0x4 + bl sub_8002BB0 + ldr r1, _08153B98 @ =gUnknown_203F3E4 + mov r2, r8 + lsls r4, r2, 2 + adds r4, r1 + str r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8154608 + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + mov r0, sp + movs r2, 0x88 + movs r3, 0x3 + bl sub_8006F8C + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1] + movs r0, 0x1 + mov r1, r8 + bl sub_8153D48 + add sp, 0x30 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08153B88: .4byte gUnknown_8478C98 +_08153B8C: .4byte gUnknown_8478CE0 +_08153B90: .4byte gUnknown_8231CFC +_08153B94: .4byte sub_8153B9C +_08153B98: .4byte gUnknown_203F3E4 + thumb_func_end sub_8153AFC + + thumb_func_start sub_8153B9C +sub_8153B9C: @ 8153B9C + push {lr} + movs r2, 0x2E + ldrsh r1, [r0, r2] + cmp r1, 0x1 + beq _08153BB0 + cmp r1, 0x1 + ble _08153BBA + cmp r1, 0x2 + beq _08153BB6 + b _08153BBA +_08153BB0: + bl sub_8153C30 + b _08153BBA +_08153BB6: + bl sub_8153CA0 +_08153BBA: + pop {r0} + bx r0 + thumb_func_end sub_8153B9C + + thumb_func_start sub_8153BC0 +sub_8153BC0: @ 8153BC0 + push {lr} + bl sub_800A404 + ldr r1, _08153BF0 @ =gUnknown_203F3E4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08153BF4 @ =gUnknown_202063C + adds r0, r1 + movs r2, 0 + movs r1, 0x1 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r2, [r0, 0x32] + strh r2, [r0, 0x34] + strh r2, [r0, 0x36] + pop {r0} + bx r0 + .align 2, 0 +_08153BF0: .4byte gUnknown_203F3E4 +_08153BF4: .4byte gUnknown_202063C + thumb_func_end sub_8153BC0 + + thumb_func_start sub_8153BF8 +sub_8153BF8: @ 8153BF8 + push {lr} + bl sub_800A404 + ldr r1, _08153C28 @ =gUnknown_203F3E4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08153C2C @ =gUnknown_202063C + adds r0, r1 + movs r2, 0 + movs r1, 0x2 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r2, [r0, 0x32] + strh r2, [r0, 0x34] + strh r2, [r0, 0x36] + pop {r0} + bx r0 + .align 2, 0 +_08153C28: .4byte gUnknown_203F3E4 +_08153C2C: .4byte gUnknown_202063C + thumb_func_end sub_8153BF8 + + thumb_func_start sub_8153C30 +sub_8153C30: @ 8153C30 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r2, r0, 16 + lsrs r0, 31 + adds r0, r2, r0 + asrs r1, r0, 1 + adds r0, r1, 0 + cmp r1, 0 + bge _08153C4C + adds r0, r1, 0x3 +_08153C4C: + asrs r0, 2 + lsls r0, 2 + subs r0, r1, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r2, 0x2 + ble _08153C96 + cmp r0, 0x2 + bgt _08153C62 + cmp r0, 0x1 + bge _08153C66 +_08153C62: + movs r0, 0x1 + b _08153C68 +_08153C66: + movs r0, 0xFF +_08153C68: + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x27 + ble _08153C96 + movs r0, 0 + strh r0, [r4, 0x2E] + bl sub_81533B4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0 + bl sub_8154608 + strh r0, [r4, 0x20] +_08153C96: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8153C30 + + thumb_func_start sub_8153CA0 +sub_8153CA0: @ 8153CA0 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xD + bl __divsi3 + lsls r0, 16 + asrs r1, r0, 16 + adds r0, r1, 0 + cmp r1, 0 + bge _08153CC0 + adds r0, r1, 0x3 +_08153CC0: + asrs r0, 2 + lsls r0, 2 + subs r0, r1, r0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r1, 0x30 + ldrsh r0, [r5, r1] + movs r1, 0xD + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _08153CE4 + cmp r4, 0 + beq _08153CE4 + movs r0, 0xCD + bl sub_80722CC +_08153CE4: + movs r1, 0x30 + ldrsh r0, [r5, r1] + cmp r0, 0x67 + ble _08153CF2 + movs r0, 0 + strh r0, [r5, 0x2E] + movs r4, 0 +_08153CF2: + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_8153DA8 + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8153CA0 + + thumb_func_start sub_8153D08 +sub_8153D08: @ 8153D08 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + cmp r4, r5 + bcs _08153D3A + ldr r6, _08153D40 @ =gUnknown_203F3E4 +_08153D16: + lsls r0, r4, 2 + adds r0, r6 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08153D44 @ =gUnknown_202063C + adds r0, r1 + cmp r0, 0 + beq _08153D30 + bl sub_8007804 +_08153D30: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08153D16 +_08153D3A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08153D40: .4byte gUnknown_203F3E4 +_08153D44: .4byte gUnknown_202063C + thumb_func_end sub_8153D08 + + thumb_func_start sub_8153D48 +sub_8153D48: @ 8153D48 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, _08153D78 @ =gUnknown_202063C + ldr r2, _08153D7C @ =gUnknown_203F3E4 + lsrs r1, 22 + adds r1, r2 + ldr r1, [r1] + ldrh r1, [r1] + lsls r2, r1, 4 + adds r2, r1 + lsls r2, 2 + adds r2, r3 + adds r2, 0x3E + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + ldrb r3, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08153D78: .4byte gUnknown_202063C +_08153D7C: .4byte gUnknown_203F3E4 + thumb_func_end sub_8153D48 + + thumb_func_start sub_8153D80 +sub_8153D80: @ 8153D80 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r4, 0 + cmp r4, r5 + bcs _08153DA2 +_08153D90: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8153D48 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r5 + bcc _08153D90 +_08153DA2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8153D80 + + thumb_func_start sub_8153DA8 +sub_8153DA8: @ 8153DA8 + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08153DCC @ =gUnknown_203F3E4 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ldrh r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r2, _08153DD0 @ =gUnknown_202063C + adds r0, r2 + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_08153DCC: .4byte gUnknown_203F3E4 +_08153DD0: .4byte gUnknown_202063C + thumb_func_end sub_8153DA8 + + thumb_func_start nullsub_97 +nullsub_97: @ 8153DD4 + bx lr + thumb_func_end nullsub_97 + + thumb_func_start sub_8153DD8 +sub_8153DD8: @ 8153DD8 + push {r4-r7,lr} + movs r4, 0 + ldr r0, _08153E20 @ =gUnknown_202063C + mov r12, r0 + movs r6, 0 + ldr r5, _08153E24 @ =gUnknown_203F43C +_08153DE4: + ldr r3, [r5] + lsls r1, r4, 1 + adds r0, r3, 0 + adds r0, 0x2A + adds r0, r1 + ldrh r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r12 + lsls r0, r4, 4 + adds r0, 0x30 + strh r0, [r1, 0x20] + lsls r2, r4, 3 + movs r7, 0x8 + negs r7, r7 + adds r0, r7, 0 + subs r0, r2 + strh r0, [r1, 0x22] + adds r3, 0xC + adds r3, r4 + strb r6, [r3] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bls _08153DE4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08153E20: .4byte gUnknown_202063C +_08153E24: .4byte gUnknown_203F43C + thumb_func_end sub_8153DD8 + + thumb_func_start sub_8153E28 +sub_8153E28: @ 8153E28 + push {r4-r6,lr} + sub sp, 0x28 + movs r4, 0xC0 + lsls r4, 1 + adds r0, r4, 0 + bl sub_8002BB0 + adds r6, r0, 0 + ldr r0, _08153EC8 @ =gUnknown_8478DA0 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x20] + str r1, [sp, 0x24] + ldr r0, _08153ECC @ =gUnknown_8477198 + adds r1, r6, 0 + bl LZ77UnCompWram + cmp r6, 0 + beq _08153EB8 + str r6, [sp, 0x18] + add r5, sp, 0x18 + movs r0, 0x80 + lsls r0, 9 + orrs r0, r4 + str r0, [r5, 0x4] + mov r1, sp + ldr r0, _08153ED0 @ =gUnknown_8478DA8 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r4, _08153ED4 @ =gUnknown_203F43C + movs r0, 0x40 + bl sub_8002BB0 + str r0, [r4] + adds r0, r5, 0 + bl sub_80086DC + add r0, sp, 0x20 + bl sub_8008928 + movs r4, 0 +_08153E7E: + lsls r1, r4, 20 + movs r0, 0xC0 + lsls r0, 14 + adds r1, r0 + asrs r1, 16 + lsls r0, r4, 3 + movs r3, 0x8 + negs r3, r3 + adds r2, r3, 0 + subs r2, r0 + lsls r2, 16 + asrs r2, 16 + mov r0, sp + movs r3, 0 + bl sub_8006F8C + ldr r1, _08153ED4 @ =gUnknown_203F43C + ldr r1, [r1] + lsls r2, r4, 1 + adds r1, 0x2A + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bls _08153E7E +_08153EB8: + adds r0, r6, 0 + bl sub_8002BC4 + add sp, 0x28 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08153EC8: .4byte gUnknown_8478DA0 +_08153ECC: .4byte gUnknown_8477198 +_08153ED0: .4byte gUnknown_8478DA8 +_08153ED4: .4byte gUnknown_203F43C + thumb_func_end sub_8153E28 + + thumb_func_start sub_8153ED8 +sub_8153ED8: @ 8153ED8 + push {r4,r5,lr} + movs r4, 0 +_08153EDC: + ldr r5, _08153F14 @ =gUnknown_203F43C + ldr r0, [r5] + lsls r1, r4, 1 + adds r0, 0x2A + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08153F18 @ =gUnknown_202063C + adds r0, r1 + cmp r0, 0 + beq _08153EFA + bl sub_8007804 +_08153EFA: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bls _08153EDC + ldr r0, [r5] + bl sub_8002BC4 + movs r0, 0 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08153F14: .4byte gUnknown_203F43C +_08153F18: .4byte gUnknown_202063C + thumb_func_end sub_8153ED8 + + thumb_func_start sub_8153F1C +sub_8153F1C: @ 8153F1C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r3, 0 + movs r6, 0 + ldr r0, _08153FAC @ =gUnknown_203F43C + mov r9, r0 +_08153F2E: + mov r7, r9 + ldr r2, [r7] + lsls r5, r6, 1 + adds r0, r2, 0 + adds r0, 0x2A + adds r0, r5 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08153FB0 @ =gUnknown_202063C + adds r4, r0, r1 + adds r0, r2, 0 + adds r0, 0x16 + adds r0, r5 + movs r1, 0x2 + strh r1, [r0] + adds r0, r2, 0 + adds r0, 0xC + adds r2, r0, r6 + ldrb r1, [r2] + cmp r1, 0 + beq _08153F64 + movs r7, 0x22 + ldrsh r0, [r4, r7] + cmp r0, 0x8 + beq _08153F9A +_08153F64: + movs r3, 0x1 + movs r7, 0x22 + ldrsh r0, [r4, r7] + cmp r0, 0x8 + bne _08153F8A + cmp r1, 0 + bne _08153F9A + strb r3, [r2] + mov r1, r9 + ldr r0, [r1] + adds r0, 0x16 + adds r0, r5 + ldr r1, _08153FB4 @ =0x0000fff0 + strh r1, [r0] + movs r0, 0x1E + str r3, [sp] + bl sub_80722CC + ldr r3, [sp] +_08153F8A: + mov r7, r9 + ldr r0, [r7] + adds r0, 0x16 + adds r0, r5 + ldrh r0, [r0] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_08153F9A: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x9 + bls _08153F2E + cmp r3, 0 + bne _08153FB8 + movs r0, 0x1 + b _08153FBA + .align 2, 0 +_08153FAC: .4byte gUnknown_203F43C +_08153FB0: .4byte gUnknown_202063C +_08153FB4: .4byte 0x0000fff0 +_08153FB8: + movs r0, 0 +_08153FBA: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8153F1C + + thumb_func_start sub_8153FC8 +sub_8153FC8: @ 8153FC8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _08154004 + movs r4, 0 +_08153FD4: + ldr r0, _08153FFC @ =gUnknown_203F43C + ldr r0, [r0] + lsls r1, r4, 1 + adds r0, 0x2A + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08154000 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bls _08153FD4 + b _081540CE + .align 2, 0 +_08153FFC: .4byte gUnknown_203F43C +_08154000: .4byte gUnknown_202063C +_08154004: + movs r4, 0 + movs r0, 0xA + subs r0, r5 + cmp r4, r0 + bge _081540CA + ldr r6, _08154034 @ =gUnknown_202063C +_08154010: + cmp r5, 0x6 + bls _08154078 + ldr r0, _08154038 @ =gUnknown_203F43C + ldr r2, [r0] + ldr r1, _0815403C @ =0x0000fffa + adds r0, r1, 0 + ldrh r1, [r2, 0x3E] + adds r0, r1 + adds r0, r5 + movs r1, 0 + strh r0, [r2, 0x3E] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bls _08154040 + strh r1, [r2, 0x3E] + b _08154092 + .align 2, 0 +_08154034: .4byte gUnknown_202063C +_08154038: .4byte gUnknown_203F43C +_0815403C: .4byte 0x0000fffa +_08154040: + cmp r0, 0xA + bls _0815405E + lsls r1, r4, 1 + adds r0, r2, 0 + adds r0, 0x2A + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x2 + bl sub_800838C + b _08154092 +_0815405E: + lsls r1, r4, 1 + adds r0, r2, 0 + adds r0, 0x2A + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0 + bl sub_800838C + b _08154092 +_08154078: + ldr r0, _081540A4 @ =gUnknown_203F43C + ldr r0, [r0] + lsls r1, r4, 1 + adds r0, 0x2A + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0 + bl sub_800838C +_08154092: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0xA + subs r0, r5 + cmp r4, r0 + blt _08154010 + b _081540CA + .align 2, 0 +_081540A4: .4byte gUnknown_203F43C +_081540A8: + ldr r0, _081540D4 @ =gUnknown_203F43C + ldr r0, [r0] + lsls r1, r4, 1 + adds r0, 0x2A + adds r0, r1 + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081540D8 @ =gUnknown_202063C + adds r0, r1 + movs r1, 0x1 + bl sub_800838C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_081540CA: + cmp r4, 0x9 + bls _081540A8 +_081540CE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081540D4: .4byte gUnknown_203F43C +_081540D8: .4byte gUnknown_202063C + thumb_func_end sub_8153FC8 + + thumb_func_start sub_81540DC +sub_81540DC: @ 81540DC + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r7, _08154120 @ =gUnknown_202063C + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r6, 0x5 + negs r6, r6 + ldr r5, _08154124 @ =gUnknown_203F43C +_081540F2: + ldr r0, [r5] + lsls r1, r3, 1 + adds r0, 0x2A + adds r0, r1 + ldrh r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x9 + bls _081540F2 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154120: .4byte gUnknown_202063C +_08154124: .4byte gUnknown_203F43C + thumb_func_end sub_81540DC + + thumb_func_start sub_8154128 +sub_8154128: @ 8154128 + push {r4,r5,lr} + sub sp, 0x10 + movs r5, 0x90 + lsls r5, 3 + adds r0, r5, 0 + bl sub_8002BB0 + adds r4, r0, 0 + ldr r0, _08154174 @ =gUnknown_8478DCC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x8] + str r1, [sp, 0xC] + ldr r0, _08154178 @ =gUnknown_8475968 + adds r1, r4, 0 + bl LZ77UnCompWram + cmp r4, 0 + beq _0815415E + str r4, [sp] + movs r0, 0x80 + lsls r0, 10 + orrs r0, r5 + str r0, [sp, 0x4] + mov r0, sp + bl sub_80086DC +_0815415E: + add r0, sp, 0x8 + bl sub_8008928 + adds r0, r4, 0 + bl sub_8002BC4 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08154174: .4byte gUnknown_8478DCC +_08154178: .4byte gUnknown_8475968 + thumb_func_end sub_8154128 + + thumb_func_start sub_815417C +sub_815417C: @ 815417C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x30 + mov r1, sp + ldr r0, _0815420C @ =gUnknown_8478DDC + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + add r2, sp, 0x18 + adds r1, r2, 0 + ldr r0, _08154210 @ =gUnknown_8478DF4 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + movs r5, 0 + mov r9, r2 +_081541A4: + movs r0, 0x4 + bl sub_8002BB0 + ldr r1, _08154214 @ =gUnknown_203F400 + lsls r4, r5, 2 + adds r4, r1 + str r0, [r4] + lsls r0, r5, 3 + lsls r1, r5, 4 + adds r1, r0 + mov r0, sp + movs r2, 0x8 + movs r3, 0x1 + bl sub_8006F8C + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1] + adds r0, r5, 0 + movs r1, 0x1 + bl sub_81542EC + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _081541A4 + movs r5, 0 + ldr r7, _08154218 @ =gUnknown_203F42C + ldr r4, _0815421C @ =gUnknown_8478DD4 + mov r8, r4 +_081541E4: + movs r0, 0x4 + bl sub_8002BB0 + lsls r1, r5, 2 + adds r4, r1, r7 + str r0, [r4] + adds r6, r1, 0 + cmp r5, 0x3 + bne _08154220 + mov r0, r8 + movs r2, 0x6 + ldrsh r1, [r0, r2] + mov r0, r9 + movs r2, 0x39 + movs r3, 0 + bl sub_8006F8C + ldr r1, [r7, 0xC] + b _08154234 + .align 2, 0 +_0815420C: .4byte gUnknown_8478DDC +_08154210: .4byte gUnknown_8478DF4 +_08154214: .4byte gUnknown_203F400 +_08154218: .4byte gUnknown_203F42C +_0815421C: .4byte gUnknown_8478DD4 +_08154220: + lsls r0, r5, 1 + add r0, r8 + movs r3, 0 + ldrsh r1, [r0, r3] + mov r0, r9 + movs r2, 0x3C + movs r3, 0 + bl sub_8006F8C + ldr r1, [r4] +_08154234: + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1] + adds r0, r6, r7 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08154270 @ =gUnknown_202063C + adds r0, r1 + adds r1, r5, 0 + bl sub_800838C + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081541E4 + movs r0, 0x1 + bl sub_8154324 + add sp, 0x30 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154270: .4byte gUnknown_202063C + thumb_func_end sub_815417C + + thumb_func_start sub_8154274 +sub_8154274: @ 8154274 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _081542E0 @ =gUnknown_203F400 +_0815427A: + lsls r0, r5, 2 + adds r4, r0, r6 + ldr r0, [r4] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081542E4 @ =gUnknown_202063C + adds r0, r1 + cmp r0, 0 + beq _08154294 + bl sub_8007280 +_08154294: + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xA + bls _0815427A + movs r5, 0 + ldr r6, _081542E8 @ =gUnknown_203F42C +_081542AC: + lsls r0, r5, 2 + adds r4, r0, r6 + ldr r0, [r4] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081542E4 @ =gUnknown_202063C + adds r0, r1 + cmp r0, 0 + beq _081542C6 + bl sub_8007280 +_081542C6: + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3 + bls _081542AC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081542E0: .4byte gUnknown_203F400 +_081542E4: .4byte gUnknown_202063C +_081542E8: .4byte gUnknown_203F42C + thumb_func_end sub_8154274 + + thumb_func_start sub_81542EC +sub_81542EC: @ 81542EC + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r3, _0815431C @ =gUnknown_202063C + ldr r2, _08154320 @ =gUnknown_203F400 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + adds r2, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_0815431C: .4byte gUnknown_202063C +_08154320: .4byte gUnknown_203F400 + thumb_func_end sub_81542EC + + thumb_func_start sub_8154324 +sub_8154324: @ 8154324 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r7, _08154368 @ =gUnknown_202063C + ldr r6, _0815436C @ =gUnknown_203F42C + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_0815433A: + lsls r0, r3, 2 + adds r0, r6 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3 + bls _0815433A + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154368: .4byte gUnknown_202063C +_0815436C: .4byte gUnknown_203F42C + thumb_func_end sub_8154324 + + thumb_func_start sub_8154370 +sub_8154370: @ 8154370 + lsls r0, 24 + lsls r1, 24 + ldr r3, _08154390 @ =gUnknown_202063C + ldr r2, _08154394 @ =gUnknown_203F400 + lsrs r0, 22 + adds r0, r2 + ldr r0, [r0] + ldrh r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + lsrs r1, 21 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_08154390: .4byte gUnknown_202063C +_08154394: .4byte gUnknown_203F400 + thumb_func_end sub_8154370 + + thumb_func_start sub_8154398 +sub_8154398: @ 8154398 + push {lr} + lsls r0, 16 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _081543BC @ =gUnknown_203F400 + lsrs r0, 14 + adds r0, r2 + ldr r0, [r0] + ldrh r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r2, _081543C0 @ =gUnknown_202063C + adds r0, r2 + bl sub_800838C + pop {r0} + bx r0 + .align 2, 0 +_081543BC: .4byte gUnknown_203F400 +_081543C0: .4byte gUnknown_202063C + thumb_func_end sub_8154398 + + thumb_func_start sub_81543C4 +sub_81543C4: @ 81543C4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081543E4 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, 0x32 + strh r1, [r2, 0x20] + movs r0, 0x32 + strh r0, [r2, 0x22] + bx lr + .align 2, 0 +_081543E4: .4byte gUnknown_202063C + thumb_func_end sub_81543C4 + + thumb_func_start sub_81543E8 +sub_81543E8: @ 81543E8 + push {r4-r7,lr} + adds r4, r0, 0 + adds r0, 0x42 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _0815442A + movs r3, 0 + ldr r7, _08154430 @ =gUnknown_8478E0C + ldr r6, _08154434 @ =gUnknown_203F3F8 + movs r5, 0 +_081543FE: + lsls r0, r3, 2 + adds r2, r0, r6 + ldr r1, [r2] + ldrh r0, [r1, 0x2] + adds r0, 0x1 + strh r0, [r1, 0x2] + adds r1, r3, r7 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1] + cmp r0, r1 + bls _08154420 + ldrh r0, [r4, 0x20] + subs r0, 0x1 + strh r0, [r4, 0x20] + ldr r0, [r2] + strh r5, [r0, 0x2] +_08154420: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bls _081543FE +_0815442A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154430: .4byte gUnknown_8478E0C +_08154434: .4byte gUnknown_203F3F8 + thumb_func_end sub_81543E8 + + thumb_func_start sub_8154438 +sub_8154438: @ 8154438 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x28 + movs r4, 0x80 + lsls r4, 3 + adds r0, r4, 0 + bl sub_8002BB0 + adds r6, r0, 0 + ldr r0, _081544DC @ =gUnknown_8478E18 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp, 0x20] + str r1, [sp, 0x24] + ldr r0, _081544E0 @ =gUnknown_847722C + adds r1, r6, 0 + bl LZ77UnCompWram + cmp r6, 0 + beq _081544C6 + str r6, [sp, 0x18] + add r0, sp, 0x18 + movs r1, 0xA0 + lsls r1, 11 + orrs r1, r4 + str r1, [r0, 0x4] + mov r2, sp + ldr r1, _081544E4 @ =gUnknown_8478E20 + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + bl sub_80086DC + add r0, sp, 0x20 + bl sub_8008928 + movs r5, 0 + ldr r7, _081544E8 @ =gUnknown_8478E0E + adds r0, r7, 0x2 + mov r9, r0 + ldr r1, _081544EC @ =gUnknown_203F3F8 + mov r8, r1 +_08154492: + movs r0, 0x4 + bl sub_8002BB0 + lsls r2, r5, 2 + mov r3, r8 + adds r4, r2, r3 + str r0, [r4] + adds r0, r2, r7 + movs r3, 0 + ldrsh r1, [r0, r3] + add r2, r9 + movs r0, 0 + ldrsh r2, [r2, r0] + mov r0, sp + movs r3, 0x4 + bl sub_8006F8C + ldr r1, [r4] + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _08154492 +_081544C6: + adds r0, r6, 0 + bl sub_8002BC4 + add sp, 0x28 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081544DC: .4byte gUnknown_8478E18 +_081544E0: .4byte gUnknown_847722C +_081544E4: .4byte gUnknown_8478E20 +_081544E8: .4byte gUnknown_8478E0E +_081544EC: .4byte gUnknown_203F3F8 + thumb_func_end sub_8154438 + + thumb_func_start sub_81544F0 +sub_81544F0: @ 81544F0 + push {r4-r7,lr} + movs r3, 0 + ldr r0, _08154534 @ =gUnknown_203F3F8 + mov r12, r0 + ldr r4, _08154538 @ =gUnknown_8478E0E + adds r7, r4, 0x2 + ldr r6, _0815453C @ =gUnknown_202063C + movs r5, 0x1 +_08154500: + lsls r2, r3, 2 + mov r1, r12 + adds r0, r2, r1 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r0, r1, 0 + adds r0, 0x42 + strh r5, [r0] + adds r0, r2, r4 + ldrh r0, [r0] + strh r0, [r1, 0x20] + adds r2, r7 + ldrh r0, [r2] + strh r0, [r1, 0x22] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bls _08154500 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154534: .4byte gUnknown_203F3F8 +_08154538: .4byte gUnknown_8478E0E +_0815453C: .4byte gUnknown_202063C + thumb_func_end sub_81544F0 + + thumb_func_start sub_8154540 +sub_8154540: @ 8154540 + push {r4,r5,lr} + movs r2, 0 + ldr r5, _08154570 @ =gUnknown_203F3F8 + ldr r4, _08154574 @ =gUnknown_202063C + movs r3, 0 +_0815454A: + lsls r0, r2, 2 + adds r0, r5 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x42 + strh r3, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1 + bls _0815454A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08154570: .4byte gUnknown_203F3F8 +_08154574: .4byte gUnknown_202063C + thumb_func_end sub_8154540 + + thumb_func_start sub_8154578 +sub_8154578: @ 8154578 + push {r4-r6,lr} + movs r5, 0 + ldr r6, _081545B4 @ =gUnknown_203F3F8 +_0815457E: + lsls r0, r5, 2 + adds r4, r0, r6 + ldr r0, [r4] + ldrh r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081545B8 @ =gUnknown_202063C + adds r0, r1 + cmp r0, 0 + beq _08154598 + bl sub_8007280 +_08154598: + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bls _0815457E + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081545B4: .4byte gUnknown_203F3F8 +_081545B8: .4byte gUnknown_202063C + thumb_func_end sub_8154578 + + thumb_func_start sub_81545BC +sub_81545BC: @ 81545BC + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r7, _08154600 @ =gUnknown_202063C + ldr r6, _08154604 @ =gUnknown_203F3F8 + movs r1, 0x1 + ands r0, r1 + lsls r4, r0, 2 + movs r5, 0x5 + negs r5, r5 +_081545D2: + lsls r0, r3, 2 + adds r0, r6 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r5, 0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bls _081545D2 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154600: .4byte gUnknown_202063C +_08154604: .4byte gUnknown_203F3F8 + thumb_func_end sub_81545BC + + thumb_func_start sub_8154608 +sub_8154608: @ 8154608 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r3, 0 + subs r0, r1, 0x1 + cmp r0, 0x4 + bhi _081546BA + lsls r0, 2 + ldr r1, _08154624 @ =_08154628 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08154624: .4byte _08154628 + .align 2, 0 +_08154628: + .4byte _081546A8 + .4byte _0815463C + .4byte _08154646 + .4byte _0815465A + .4byte _08154682 +_0815463C: + cmp r2, 0 + beq _08154672 + cmp r2, 0x1 + bne _081546BA + b _08154676 +_08154646: + cmp r2, 0x1 + beq _081546AC + cmp r2, 0x1 + bgt _08154654 + cmp r2, 0 + beq _081546A8 + b _081546BA +_08154654: + cmp r2, 0x2 + bne _081546BA + b _081546B8 +_0815465A: + cmp r2, 0x1 + beq _08154676 + cmp r2, 0x1 + bgt _08154668 + cmp r2, 0 + beq _08154672 + b _081546BA +_08154668: + cmp r2, 0x2 + beq _0815467A + cmp r2, 0x3 + beq _0815467E + b _081546BA +_08154672: + movs r3, 0xC + b _081546BA +_08154676: + movs r3, 0x12 + b _081546BA +_0815467A: + movs r3, 0x18 + b _081546BA +_0815467E: + movs r3, 0x6 + b _081546BA +_08154682: + cmp r2, 0x4 + bhi _081546BA + lsls r0, r2, 2 + ldr r1, _08154690 @ =_08154694 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08154690: .4byte _08154694 + .align 2, 0 +_08154694: + .4byte _081546A8 + .4byte _081546AC + .4byte _081546B0 + .4byte _081546B4 + .4byte _081546B8 +_081546A8: + movs r3, 0xF + b _081546BA +_081546AC: + movs r3, 0x15 + b _081546BA +_081546B0: + movs r3, 0x1B + b _081546BA +_081546B4: + movs r3, 0x3 + b _081546BA +_081546B8: + movs r3, 0x9 +_081546BA: + lsls r0, r3, 3 + pop {r1} + bx r1 + thumb_func_end sub_8154608 + + thumb_func_start sub_81546C0 +sub_81546C0: @ 81546C0 + push {r4,lr} + movs r4, 0 +_081546C4: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_81542EC + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8154370 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xA + bls _081546C4 + movs r0, 0 + bl sub_81540DC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81546C0 + + thumb_func_start sub_81546EC +sub_81546EC: @ 81546EC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8069788 + ldr r1, [r0] + movs r2, 0x90 + lsls r2, 1 + movs r0, 0 + movs r3, 0x1 + bl sub_80017D0 + adds r0, r4, 0 + bl sub_8069788 + ldr r0, [r0, 0x4] + movs r1, 0xA0 + movs r2, 0x20 + bl sub_80703EC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81546EC + + thumb_func_start sub_8154720 +sub_8154720: @ 8154720 + push {lr} + movs r0, 0 + movs r1, 0xA + movs r2, 0xB0 + bl sub_814FF2C + pop {r0} + bx r0 + thumb_func_end sub_8154720 + + thumb_func_start sub_8154730 +sub_8154730: @ 8154730 + ldr r3, _08154760 @ =gUnknown_203F440 + ldr r0, [r3] + movs r2, 0xC0 + lsls r2, 6 + adds r1, r0, r2 + movs r2, 0 + str r2, [r1] + ldr r1, _08154764 @ =0x00003014 + adds r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r1, 0x4 + adds r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r1, 0x8 + adds r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r1, 0x4 + adds r0, r1 + strb r2, [r0] + bx lr + .align 2, 0 +_08154760: .4byte gUnknown_203F440 +_08154764: .4byte 0x00003014 + thumb_func_end sub_8154730 + + thumb_func_start sub_8154768 +sub_8154768: @ 8154768 + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r6, 0xA + ldrb r2, [r4, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + movs r5, 0x1 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x1 + bl sub_8002554 + ldrb r2, [r4, 0x1] + ldrb r3, [r4, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4, 0x3] + str r0, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x2 + bl sub_8002554 + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x1] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x3 + bl sub_8002554 + ldrb r2, [r4, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + str r5, [sp] + ldrb r0, [r4, 0x4] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x4 + bl sub_8002554 + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x1] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + str r5, [sp] + ldrb r0, [r4, 0x4] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x6 + bl sub_8002554 + ldrb r2, [r4, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x4] + ldrb r0, [r4, 0x2] + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x7 + bl sub_8002554 + ldrb r2, [r4, 0x1] + ldrb r3, [r4, 0x4] + ldrb r0, [r4, 0x2] + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4, 0x3] + str r0, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x8 + bl sub_8002554 + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x1] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x4] + ldrb r4, [r4, 0x2] + adds r3, r4 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x9 + bl sub_8002554 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8154768 + + thumb_func_start sub_8154868 +sub_8154868: @ 8154868 + push {r4-r6,lr} + sub sp, 0xC + adds r4, r0, 0 + movs r6, 0xB + ldrb r2, [r4, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + movs r5, 0x1 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0xA + bl sub_8002554 + ldrb r2, [r4, 0x1] + ldrb r3, [r4, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4, 0x3] + str r0, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0xB + bl sub_8002554 + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x1] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0xC + bl sub_8002554 + ldrb r2, [r4, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + str r5, [sp] + ldrb r0, [r4, 0x4] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0xD + bl sub_8002554 + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x1] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + str r5, [sp] + ldrb r0, [r4, 0x4] + str r0, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0xF + bl sub_8002554 + ldrb r2, [r4, 0x1] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x4] + ldrb r0, [r4, 0x2] + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x10 + bl sub_8002554 + ldrb r2, [r4, 0x1] + ldrb r3, [r4, 0x4] + ldrb r0, [r4, 0x2] + adds r3, r0 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4, 0x3] + str r0, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x11 + bl sub_8002554 + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x1] + adds r2, r0 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x4] + ldrb r4, [r4, 0x2] + adds r3, r4 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0 + movs r1, 0x12 + bl sub_8002554 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8154868 + + thumb_func_start sub_8154968 +sub_8154968: @ 8154968 + push {r4,lr} + ldr r4, _081549B0 @ =gUnknown_203F440 + str r0, [r4] + movs r2, 0xC0 + lsls r2, 6 + adds r1, r0, r2 + movs r2, 0 + str r2, [r1] + ldr r3, _081549B4 @ =0x00003014 + adds r1, r0, r3 + strb r2, [r1] + ldr r1, _081549B8 @ =0x00003018 + adds r0, r1 + strb r2, [r0] + ldr r0, [r4] + adds r3, 0xC + adds r0, r3 + strb r2, [r0] + ldr r0, [r4] + adds r1, 0xC + adds r0, r1 + strb r2, [r0] + ldr r0, _081549BC @ =sub_8154A08 + movs r1, 0x3 + bl sub_807741C + ldr r1, [r4] + ldr r2, _081549C0 @ =0x00003004 + adds r1, r2 + strb r0, [r1] + ldr r0, _081549C4 @ =sub_8154A2C + bl sub_8155E24 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081549B0: .4byte gUnknown_203F440 +_081549B4: .4byte 0x00003014 +_081549B8: .4byte 0x00003018 +_081549BC: .4byte sub_8154A08 +_081549C0: .4byte 0x00003004 +_081549C4: .4byte sub_8154A2C + thumb_func_end sub_8154968 + + thumb_func_start sub_81549C8 +sub_81549C8: @ 81549C8 + push {lr} + bl sub_8003ECC + pop {r0} + bx r0 + thumb_func_end sub_81549C8 + + thumb_func_start sub_81549D4 +sub_81549D4: @ 81549D4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r5, _08154A04 @ =gUnknown_8478EC4 + adds r7, r5, 0x4 +_081549E0: + lsls r1, r4, 3 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, r6 + bne _081549F2 + adds r0, r1, r7 + ldr r0, [r0] + bl sub_8155E24 +_081549F2: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bls _081549E0 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154A04: .4byte gUnknown_8478EC4 + thumb_func_end sub_81549D4 + + thumb_func_start sub_8154A08 +sub_8154A08: @ 8154A08 + push {lr} + ldr r0, _08154A28 @ =gUnknown_203F440 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _08154A22 + bl sub_8155E54 + bl _call_via_r0 +_08154A22: + pop {r0} + bx r0 + .align 2, 0 +_08154A28: .4byte gUnknown_203F440 + thumb_func_end sub_8154A08 + + thumb_func_start sub_8154A2C +sub_8154A2C: @ 8154A2C + push {lr} + ldr r0, _08154A48 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r2, _08154A4C @ =0x00003014 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x4 + bhi _08154B24 + lsls r0, 2 + ldr r1, _08154A50 @ =_08154A54 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08154A48: .4byte gUnknown_203F440 +_08154A4C: .4byte 0x00003014 +_08154A50: .4byte _08154A54 + .align 2, 0 +_08154A54: + .4byte _08154A68 + .4byte _08154A6E + .4byte _08154A88 + .4byte _08154ACC + .4byte _08154AF8 +_08154A68: + bl sub_8155EA0 + b _08154B08 +_08154A6E: + bl sub_8155FE0 + cmp r0, 0x1 + bne _08154B2E + ldr r0, _08154A80 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r2, _08154A84 @ =0x00003014 + adds r1, r2 + b _08154B10 + .align 2, 0 +_08154A80: .4byte gUnknown_203F440 +_08154A84: .4byte 0x00003014 +_08154A88: + ldr r1, _08154AC0 @ =gUnknown_8478590 + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r1, _08154AC4 @ =gUnknown_8478A4C + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r1, _08154AC8 @ =gUnknown_84787FC + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + movs r0, 0x3 + bl sub_80020BC + movs r0, 0x1 + bl sub_80020BC + movs r0, 0x2 + bl sub_80020BC + b _08154B08 + .align 2, 0 +_08154AC0: .4byte gUnknown_8478590 +_08154AC4: .4byte gUnknown_8478A4C +_08154AC8: .4byte gUnknown_84787FC +_08154ACC: + movs r0, 0 + bl sub_80019BC + movs r0, 0x3 + bl sub_80019BC + movs r0, 0x1 + bl sub_80019BC + movs r0, 0x2 + bl sub_80019BC + ldr r0, _08154AF0 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r2, _08154AF4 @ =0x00003014 + adds r1, r2 + b _08154B10 + .align 2, 0 +_08154AF0: .4byte gUnknown_203F440 +_08154AF4: .4byte 0x00003014 +_08154AF8: + ldr r0, _08154B18 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x14] + lsrs r0, 3 + bl sub_81546EC + bl sub_8154720 +_08154B08: + ldr r0, _08154B1C @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _08154B20 @ =0x00003014 + adds r1, r0 +_08154B10: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08154B2E + .align 2, 0 +_08154B18: .4byte gUnknown_300500C +_08154B1C: .4byte gUnknown_203F440 +_08154B20: .4byte 0x00003014 +_08154B24: + movs r2, 0xC0 + lsls r2, 6 + adds r1, r2 + movs r0, 0x1 + str r0, [r1] +_08154B2E: + pop {r0} + bx r0 + thumb_func_end sub_8154A2C + + thumb_func_start sub_8154B34 +sub_8154B34: @ 8154B34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r4, _08154B74 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r2, _08154B78 @ =0x00003014 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _08154B7C + cmp r0, 0x1 + bne _08154B54 + b _08154CE0 +_08154B54: + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB4 + bhi _08154B62 + b _08154D82 +_08154B62: + bl sub_81533B4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + cmp r6, r7 + bcc _08154B72 + b _08154D5A +_08154B72: + b _08154D34 + .align 2, 0 +_08154B74: .4byte gUnknown_203F440 +_08154B78: .4byte 0x00003014 +_08154B7C: + bl sub_81533B4 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _08154CB8 @ =gUnknown_8478E80 + subs r0, r7, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r5, [r0] + ldr r2, _08154CBC @ =0xffffff00 + ldr r0, [sp, 0xC] + ands r0, r2 + ldr r1, _08154CC0 @ =0x00ffffff + ands r0, r1 + movs r1, 0xE0 + lsls r1, 19 + orrs r0, r1 + str r0, [sp, 0xC] + ldr r0, [sp, 0x10] + ands r0, r2 + movs r1, 0x2 + orrs r0, r1 + ldr r1, _08154CC4 @ =0xffff00ff + ands r0, r1 + movs r1, 0xD0 + lsls r1, 4 + orrs r0, r1 + ldr r1, _08154CC8 @ =0x0000ffff + ands r0, r1 + movs r1, 0x98 + lsls r1, 13 + orrs r0, r1 + str r0, [sp, 0x10] + movs r6, 0 + cmp r6, r7 + bcs _08154CAC + mov r3, sp + adds r3, 0xC + str r3, [sp, 0x18] + mov r10, r4 + ldr r0, _08154CCC @ =0x00003008 + mov r9, r0 +_08154BD0: + movs r1, 0 + mov r8, r1 + adds r0, r6, 0 + bl sub_81537AC + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sub_81533C4 + adds r1, r0, 0 + movs r0, 0 + movs r2, 0x1 + negs r2, r2 + bl sub_8005ED4 + movs r1, 0x38 + subs r1, r0 + lsrs r1, 1 + str r1, [sp, 0x14] + ldrb r0, [r5] + lsls r0, 8 + ldr r2, _08154CC4 @ =0xffff00ff + ldr r1, [sp, 0xC] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0xC] + ldrb r2, [r5, 0x1] + lsls r2, 16 + ldr r0, _08154CD0 @ =0xff00ffff + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0xC] + add r0, sp, 0xC + bl sub_8003CE4 + mov r2, r10 + ldr r1, [r2] + add r1, r9 + adds r1, r6 + strb r0, [r1] + ldr r0, [r2] + add r0, r9 + adds r0, r6 + ldrb r0, [r0] + bl sub_80040B8 + mov r3, r10 + ldr r0, [r3] + add r0, r9 + adds r0, r6 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _08154C4E + movs r0, 0x2 + mov r8, r0 +_08154C4E: + adds r0, r4, 0 + bl sub_81533C4 + adds r4, r0, 0 + mov r1, r10 + ldr r0, [r1] + add r0, r9 + adds r0, r6 + ldrb r0, [r0] + ldr r3, [sp, 0x14] + lsls r2, r3, 24 + lsrs r2, 24 + mov r3, r8 + lsls r1, r3, 1 + add r1, r8 + ldr r3, _08154CD4 @ =gUnknown_8478E38 + adds r1, r3 + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0 + movs r3, 0x1 + bl sub_812E51C + mov r2, r10 + ldr r0, [r2] + add r0, r9 + adds r0, r6 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r3, [sp, 0x18] + ldrh r0, [r3, 0x6] + adds r0, 0xE + strh r0, [r3, 0x6] + add r0, sp, 0xC + bl sub_8154868 + adds r5, 0x4 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r7 + bcc _08154BD0 +_08154CAC: + ldr r0, _08154CD8 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _08154CDC @ =0x00003014 + adds r1, r0 + b _08154D1E + .align 2, 0 +_08154CB8: .4byte gUnknown_8478E80 +_08154CBC: .4byte 0xffffff00 +_08154CC0: .4byte 0x00ffffff +_08154CC4: .4byte 0xffff00ff +_08154CC8: .4byte 0x0000ffff +_08154CCC: .4byte 0x00003008 +_08154CD0: .4byte 0xff00ffff +_08154CD4: .4byte gUnknown_8478E38 +_08154CD8: .4byte gUnknown_203F440 +_08154CDC: .4byte 0x00003014 +_08154CE0: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08154D82 + bl sub_81533B4 + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + cmp r6, r7 + bcs _08154D10 +_08154CF8: + ldr r0, [r4] + ldr r1, _08154D28 @ =0x00003008 + adds r0, r1 + adds r0, r6 + ldrb r0, [r0] + bl sub_8003FA0 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r7 + bcc _08154CF8 +_08154D10: + movs r0, 0 + bl sub_80020BC + ldr r0, _08154D2C @ =gUnknown_203F440 + ldr r1, [r0] + ldr r2, _08154D30 @ =0x00003014 + adds r1, r2 +_08154D1E: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08154D82 + .align 2, 0 +_08154D28: .4byte 0x00003008 +_08154D2C: .4byte gUnknown_203F440 +_08154D30: .4byte 0x00003014 +_08154D34: + ldr r5, _08154D94 @ =gUnknown_203F440 + ldr r0, [r5] + ldr r4, _08154D98 @ =0x00003008 + adds r0, r4 + adds r0, r6 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r5] + adds r0, r4 + adds r0, r6 + ldrb r0, [r0] + bl sub_8003E3C + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r7 + bcc _08154D34 +_08154D5A: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r0, _08154D94 @ =gUnknown_203F440 + ldr r0, [r0] + movs r3, 0xC0 + lsls r3, 6 + adds r0, r3 + movs r1, 0x1 + str r1, [r0] +_08154D82: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154D94: .4byte gUnknown_203F440 +_08154D98: .4byte 0x00003008 + thumb_func_end sub_8154B34 + + thumb_func_start sub_8154D9C +sub_8154D9C: @ 8154D9C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x70 + lsls r0, 24 + movs r1, 0 + mov r8, r1 + movs r6, 0 + lsrs r7, r0, 24 + add r4, sp, 0x2C + ldr r1, _08154F64 @ =gUnknown_8478F14 + adds r0, r4, 0 + movs r2, 0x5 + bl memcpy + movs r5, 0 + cmp r5, r7 + bcs _08154DEC + add r4, sp, 0x34 +_08154DC6: + mov r0, sp + adds r0, r5 + adds r0, 0x2C + strb r5, [r0] + add r0, sp, 0x5C + adds r1, r5, 0 + bl sub_81536A0 + lsls r2, r5, 3 + adds r2, r4, r2 + ldr r0, [sp, 0x5C] + ldr r1, [sp, 0x60] + str r0, [r2] + str r1, [r2, 0x4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _08154DC6 +_08154DEC: + bl sub_81534AC + cmp r0, 0 + beq _08154E22 +_08154DF4: + movs r5, 0 + cmp r5, r7 + bcs _08154E1C + add r2, sp, 0x34 + add r1, sp, 0x2C +_08154DFE: + lsls r0, r5, 3 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r8 + bne _08154E12 + adds r0, r1, r6 + strb r5, [r0] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_08154E12: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _08154DFE +_08154E1C: + mov r8, r6 + cmp r6, r7 + bcc _08154DF4 +_08154E22: + movs r5, 0 + ldr r4, _08154F68 @ =gUnknown_841CE1C + cmp r5, r7 + bcs _08154E48 + add r1, sp, 0x34 + add r6, sp, 0x38 + subs r3, r7, 0x1 +_08154E30: + lsls r2, r5, 3 + adds r0, r6, r2 + ldr r0, [r0] + cmp r0, 0 + bne _08154E3E + adds r0, r1, r2 + strb r3, [r0] +_08154E3E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _08154E30 +_08154E48: + movs r0, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r1, 0xD8 + subs r1, r0 + str r1, [sp, 0x64] + movs r5, 0 + cmp r5, r7 + bcs _08154F52 + mov r2, sp + adds r2, 0x34 + str r2, [sp, 0x68] + ldr r3, _08154F6C @ =0x00003009 + mov r10, r3 + adds r0, r1, 0 + subs r0, 0x23 + lsls r0, 24 + str r0, [sp, 0x6C] +_08154E70: + movs r4, 0 + mov r8, r4 + mov r0, sp + adds r0, r5 + adds r0, 0x2C + ldrb r0, [r0] + adds r4, r0, 0 + lsls r1, r4, 3 + add r0, sp, 0x38 + adds r0, r1 + ldr r0, [r0] + mov r9, r0 + ldr r2, _08154F70 @ =gUnknown_203F440 + ldr r0, [r2] + add r0, r10 + ldrb r0, [r0] + ldr r2, _08154F74 @ =gUnknown_8478E94 + ldr r3, [sp, 0x68] + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r2, [r1] + ldr r3, _08154F78 @ =gUnknown_8478EBA + lsls r1, r5, 1 + adds r1, r3 + ldrb r6, [r1] + str r6, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + mov r3, r8 + str r3, [sp, 0x8] + movs r1, 0 + movs r3, 0x8 + bl sub_8002C48 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + bne _08154EC8 + movs r0, 0x2 + mov r8, r0 +_08154EC8: + adds r0, r4, 0 + bl sub_81533C4 + adds r3, r0, 0 + ldr r1, _08154F70 @ =gUnknown_203F440 + ldr r0, [r1] + add r0, r10 + ldrb r0, [r0] + mov r2, r8 + lsls r1, r2, 1 + add r1, r8 + ldr r2, _08154F7C @ =gUnknown_8478E38 + adds r1, r2 + str r1, [sp] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x4] + str r3, [sp, 0x8] + movs r1, 0 + movs r2, 0x1C + adds r3, r6, 0 + bl sub_812E51C + add r0, sp, 0xC + mov r1, r9 + movs r2, 0x1 + movs r3, 0x7 + bl sub_8008E78 + movs r0, 0 + add r1, sp, 0xC + adds r2, r4, 0 + bl sub_8005ED4 + ldr r1, _08154F70 @ =gUnknown_203F440 + ldr r0, [r1] + add r0, r10 + ldrb r0, [r0] + str r6, [sp] + movs r2, 0xFF + str r2, [sp, 0x4] + movs r3, 0 + str r3, [sp, 0x8] + movs r1, 0 + add r2, sp, 0xC + ldr r4, [sp, 0x6C] + lsrs r3, r4, 24 + bl sub_8002C48 + ldr r1, _08154F70 @ =gUnknown_203F440 + ldr r0, [r1] + add r0, r10 + ldrb r0, [r0] + ldr r2, [sp, 0x64] + lsls r3, r2, 24 + str r6, [sp] + movs r4, 0xFF + str r4, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + ldr r2, _08154F68 @ =gUnknown_841CE1C + lsrs r3, 24 + bl sub_8002C48 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r7 + bcc _08154E70 +_08154F52: + add sp, 0x70 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08154F64: .4byte gUnknown_8478F14 +_08154F68: .4byte gUnknown_841CE1C +_08154F6C: .4byte 0x00003009 +_08154F70: .4byte gUnknown_203F440 +_08154F74: .4byte gUnknown_8478E94 +_08154F78: .4byte gUnknown_8478EBA +_08154F7C: .4byte gUnknown_8478E38 + thumb_func_end sub_8154D9C + + thumb_func_start sub_8154F80 +sub_8154F80: @ 8154F80 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8C + bl sub_81533B4 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x84] + ldr r6, _08154FB0 @ =gUnknown_203F440 + ldr r1, [r6] + ldr r2, _08154FB4 @ =0x00003014 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0xB + bls _08154FA6 + b _08155678 +_08154FA6: + lsls r0, 2 + ldr r1, _08154FB8 @ =_08154FBC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08154FB0: .4byte gUnknown_203F440 +_08154FB4: .4byte 0x00003014 +_08154FB8: .4byte _08154FBC + .align 2, 0 +_08154FBC: + .4byte _08154FEC + .4byte _08155008 + .4byte _08155060 + .4byte _0815524C + .4byte _08155298 + .4byte _081552DC + .4byte _08155340 + .4byte _0815537C + .4byte _081553C0 + .4byte _08155480 + .4byte _081555D8 + .4byte _0815562C +_08154FEC: + bl sub_81535B0 + ldr r0, _08155000 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _08155004 @ =0x0000301c + adds r2, r1, r0 + movs r0, 0 + strh r0, [r2] + b _0815565A + .align 2, 0 +_08155000: .4byte gUnknown_203F440 +_08155004: .4byte 0x0000301c +_08155008: + ldr r6, _08155050 @ =gUnknown_8475674 + adds r0, r6, 0 + bl sub_8003CE4 + ldr r4, _08155054 @ =gUnknown_203F440 + ldr r1, [r4] + ldr r2, _08155058 @ =0x00003008 + mov r8, r2 + add r1, r8 + strb r0, [r1] + movs r0, 0x8 + adds r0, r6 + mov r9, r0 + bl sub_8003CE4 + ldr r1, [r4] + ldr r5, _0815505C @ =0x00003009 + adds r1, r5 + strb r0, [r1] + ldr r0, [r4] + add r0, r8 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0] + bl sub_80040B8 + adds r0, r6, 0 + bl sub_8154868 + mov r0, r9 + bl sub_8154868 + b _08155658 + .align 2, 0 +_08155050: .4byte gUnknown_8475674 +_08155054: .4byte gUnknown_203F440 +_08155058: .4byte 0x00003008 +_0815505C: .4byte 0x00003009 +_08155060: + ldr r4, _081551A8 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r5, _081551AC @ =0x00003008 + adds r0, r5 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r0, [r4] + ldr r1, _081551B0 @ =0x00003009 + mov r9, r1 + add r0, r9 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r2, _081551B4 @ =gUnknown_841CD03 + mov r8, r2 + movs r2, 0x1 + negs r2, r2 + movs r0, 0 + mov r1, r8 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0xE0 + subs r0, r1 + lsrs r3, r0, 1 + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0] + lsls r3, 24 + lsrs r3, 24 + movs r1, 0x2 + str r1, [sp] + movs r6, 0xFF + str r6, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + movs r1, 0 + mov r2, r8 + bl sub_8002C48 + ldr r0, [r4] + add r0, r9 + ldrb r0, [r0] + ldr r2, _081551B8 @ =gUnknown_841CD25 + movs r1, 0x10 + str r1, [sp] + str r6, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0 + movs r3, 0x44 + bl sub_8002C48 + movs r0, 0 + mov r9, r0 + ldr r1, [sp, 0x84] + cmp r9, r1 + bcc _081550DA + b _08155214 +_081550DA: + movs r5, 0 + bl sub_800A404 + lsls r0, 24 + lsrs r0, 24 + cmp r9, r0 + bne _081550EA + movs r5, 0x2 +_081550EA: + mov r0, r9 + bl sub_81533C4 + adds r6, r0, 0 + ldr r0, _081551A8 @ =gUnknown_203F440 + ldr r0, [r0] + ldr r2, _081551B0 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + ldr r1, _081551BC @ =gUnknown_8478EB0 + mov r2, r9 + lsls r4, r2, 1 + adds r4, r1 + ldrb r3, [r4] + lsls r1, r5, 1 + adds r1, r5 + ldr r2, _081551C0 @ =gUnknown_8478E38 + adds r1, r2 + str r1, [sp] + movs r5, 0x1 + negs r5, r5 + str r5, [sp, 0x4] + str r6, [sp, 0x8] + movs r1, 0 + movs r2, 0x2 + bl sub_812E51C + movs r7, 0 + mov r0, r9 + adds r0, 0x1 + str r0, [sp, 0x88] + mov r8, r4 + ldr r1, _081551C4 @ =gUnknown_8478EA8 + mov r10, r1 +_0815512E: + mov r0, r9 + adds r1, r7, 0 + bl sub_8153404 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _081551C8 @ =0x0000270f + bl sub_815379C + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r7, 0 + bl sub_81534F0 + ldr r1, _081551C8 @ =0x0000270f + bl sub_815379C + lsls r0, 16 + lsrs r6, r0, 16 + add r0, sp, 0xC + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x4 + bl sub_8008E78 + movs r0, 0 + add r1, sp, 0xC + movs r2, 0x1 + negs r2, r2 + bl sub_8005ED4 + adds r5, r0, 0 + cmp r6, r4 + bne _081551D0 + cmp r6, 0 + beq _081551D0 + ldr r0, _081551A8 @ =gUnknown_203F440 + ldr r0, [r0] + ldr r2, _081551B0 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + lsls r1, r7, 1 + add r1, r10 + ldrb r2, [r1] + subs r2, r5 + lsls r2, 24 + lsrs r2, 24 + mov r1, r8 + ldrb r3, [r1] + ldr r1, _081551CC @ =gUnknown_8478E3B + str r1, [sp] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x4] + add r1, sp, 0xC + str r1, [sp, 0x8] + movs r1, 0 + bl sub_812E51C + b _081551FA + .align 2, 0 +_081551A8: .4byte gUnknown_203F440 +_081551AC: .4byte 0x00003008 +_081551B0: .4byte 0x00003009 +_081551B4: .4byte gUnknown_841CD03 +_081551B8: .4byte gUnknown_841CD25 +_081551BC: .4byte gUnknown_8478EB0 +_081551C0: .4byte gUnknown_8478E38 +_081551C4: .4byte gUnknown_8478EA8 +_081551C8: .4byte 0x0000270f +_081551CC: .4byte gUnknown_8478E3B +_081551D0: + ldr r0, _0815523C @ =gUnknown_203F440 + ldr r0, [r0] + ldr r2, _08155240 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + lsls r1, r7, 1 + add r1, r10 + ldrb r3, [r1] + subs r3, r5 + lsls r3, 24 + lsrs r3, 24 + mov r2, r8 + ldrb r1, [r2] + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + add r2, sp, 0xC + bl sub_8002C48 +_081551FA: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _0815512E + ldr r1, [sp, 0x88] + lsls r0, r1, 24 + lsrs r0, 24 + mov r9, r0 + ldr r2, [sp, 0x84] + cmp r9, r2 + bcs _08155214 + b _081550DA +_08155214: + ldr r4, _0815523C @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _08155244 @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08155240 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r4] + ldr r0, _08155248 @ =0x00003014 + adds r1, r0 + b _0815565E + .align 2, 0 +_0815523C: .4byte gUnknown_203F440 +_08155240: .4byte 0x00003009 +_08155244: .4byte 0x00003008 +_08155248: .4byte 0x00003014 +_0815524C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08155270 + ldr r4, _08155288 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _0815528C @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + ldr r2, _08155290 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + bl sub_8003FA0 +_08155270: + movs r0, 0 + bl sub_80020BC + movs r0, 0 + bl sub_8154324 + ldr r0, _08155288 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _08155294 @ =0x00003014 + adds r1, r0 + b _0815565E + .align 2, 0 +_08155288: .4byte gUnknown_203F440 +_0815528C: .4byte 0x00003008 +_08155290: .4byte 0x00003009 +_08155294: .4byte 0x00003014 +_08155298: + ldr r4, _081552D0 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _081552D4 @ =0x0000301c + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1D + bhi _081552B0 + b _081556C8 +_081552B0: + ldr r0, _081552D8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081552BE + b _081556C8 +_081552BE: + movs r0, 0 + strh r0, [r2] + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + bl sub_8154324 + b _08155658 + .align 2, 0 +_081552D0: .4byte gUnknown_203F440 +_081552D4: .4byte 0x0000301c +_081552D8: .4byte gUnknown_30030F0 +_081552DC: + ldr r4, _08155330 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r5, _08155334 @ =0x00003008 + adds r0, r5 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r0, [r4] + ldr r1, _08155338 @ =0x00003009 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r6, _0815533C @ =gUnknown_841CD43 + movs r2, 0x1 + negs r2, r2 + movs r0, 0 + adds r1, r6, 0 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0xE0 + subs r0, r1 + lsrs r3, r0, 1 + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0] + lsls r3, 24 + lsrs r3, 24 + movs r1, 0x2 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + adds r2, r6, 0 + bl sub_8002C48 + b _08155658 + .align 2, 0 +_08155330: .4byte gUnknown_203F440 +_08155334: .4byte 0x00003008 +_08155338: .4byte 0x00003009 +_0815533C: .4byte gUnknown_841CD43 +_08155340: + ldr r0, [sp, 0x84] + bl sub_8154D9C + ldr r4, _0815536C @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _08155370 @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _08155374 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r4] + ldr r0, _08155378 @ =0x00003014 + adds r1, r0 + b _0815565E + .align 2, 0 +_0815536C: .4byte gUnknown_203F440 +_08155370: .4byte 0x00003008 +_08155374: .4byte 0x00003009 +_08155378: .4byte 0x00003014 +_0815537C: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081553A0 + ldr r4, _081553B0 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _081553B4 @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + ldr r2, _081553B8 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + bl sub_8003FA0 +_081553A0: + movs r0, 0 + bl sub_80020BC + ldr r0, _081553B0 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _081553BC @ =0x00003014 + adds r1, r0 + b _0815565E + .align 2, 0 +_081553B0: .4byte gUnknown_203F440 +_081553B4: .4byte 0x00003008 +_081553B8: .4byte 0x00003009 +_081553BC: .4byte 0x00003014 +_081553C0: + ldr r4, _08155408 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _0815540C @ =0x0000301c + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1D + bhi _081553D8 + b _081556C8 +_081553D8: + ldr r0, _08155410 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _081553E6 + b _081556C8 +_081553E6: + movs r0, 0 + strh r0, [r2] + movs r0, 0x5 + bl sub_80722CC + bl sub_81534AC + ldr r1, _08155414 @ =0x00000bb7 + cmp r0, r1 + bhi _0815541C + ldr r0, [r4] + ldr r2, _08155418 @ =0x00003014 + adds r0, r2 + movs r1, 0x7F + strb r1, [r0] + b _0815542C + .align 2, 0 +_08155408: .4byte gUnknown_203F440 +_0815540C: .4byte 0x0000301c +_08155410: .4byte gUnknown_30030F0 +_08155414: .4byte 0x00000bb7 +_08155418: .4byte 0x00003014 +_0815541C: + bl sub_8071A94 + ldr r1, [r4] + ldr r0, _08155470 @ =0x00003014 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0815542C: + movs r0, 0x1E + str r0, [sp] + movs r0, 0xF + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x5 + bl sub_8002454 + ldr r5, _08155474 @ =gUnknown_203F440 + ldr r0, [r5] + ldr r4, _08155478 @ =0x00003009 + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + ldr r6, _0815547C @ =gUnknown_8475684 + adds r0, r6, 0 + bl sub_8003CE4 + ldr r1, [r5] + adds r1, r4 + strb r0, [r1] + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + adds r0, r6, 0 + bl sub_8154868 + b _081556C8 + .align 2, 0 +_08155470: .4byte 0x00003014 +_08155474: .4byte gUnknown_203F440 +_08155478: .4byte 0x00003009 +_0815547C: .4byte gUnknown_8475684 +_08155480: + ldr r0, _08155558 @ =0x00000101 + bl sub_8071A74 + ldr r4, _0815555C @ =gUnknown_203F440 + ldr r0, [r4] + ldr r6, _08155560 @ =0x00003008 + adds r0, r6 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r0, [r4] + ldr r1, _08155564 @ =0x00003009 + mov r10, r1 + add r0, r10 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r5, _08155568 @ =gUnknown_841CD58 + movs r2, 0x1 + negs r2, r2 + movs r0, 0 + adds r1, r5, 0 + bl sub_8005ED4 + adds r1, r0, 0 + movs r0, 0xE0 + subs r0, r1 + lsrs r3, r0, 1 + ldr r0, [r4] + adds r0, r6 + ldrb r0, [r0] + lsls r3, 24 + lsrs r3, 24 + movs r2, 0x2 + mov r9, r2 + str r2, [sp] + movs r1, 0xFF + mov r8, r1 + str r1, [sp, 0x4] + movs r6, 0 + str r6, [sp, 0x8] + movs r1, 0 + adds r2, r5, 0 + bl sub_8002C48 + bl sub_813CC90 + bl sub_8153390 + lsls r0, 16 + lsrs r0, 16 + add r5, sp, 0x70 + adds r1, r5, 0 + bl sub_8099E90 + movs r0, 0 + adds r1, r5, 0 + bl sub_813CCAC + ldr r1, _0815556C @ =gUnknown_841CD7A + add r0, sp, 0xC + bl sub_813CCC8 + ldr r0, [r4] + add r0, r10 + ldrb r0, [r0] + mov r2, r9 + str r2, [sp] + mov r1, r8 + str r1, [sp, 0x4] + str r6, [sp, 0x8] + movs r1, 0 + add r2, sp, 0xC + movs r3, 0x8 + bl sub_8002C48 + bl sub_815372C + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + cmp r4, 0 + beq _0815559E + cmp r4, 0x3 + beq _0815559E + bl sub_813CC90 + bl sub_8153390 + lsls r0, 16 + lsrs r0, 16 + adds r1, r5, 0 + bl sub_8099E90 + movs r0, 0 + adds r1, r5, 0 + bl sub_813CCAC + cmp r4, 0x2 + bne _08155574 + ldr r1, _08155570 @ =gUnknown_841CD9F + add r0, sp, 0xC + bl sub_813CCC8 + b _08155580 + .align 2, 0 +_08155558: .4byte 0x00000101 +_0815555C: .4byte gUnknown_203F440 +_08155560: .4byte 0x00003008 +_08155564: .4byte 0x00003009 +_08155568: .4byte gUnknown_841CD58 +_0815556C: .4byte gUnknown_841CD7A +_08155570: .4byte gUnknown_841CD9F +_08155574: + cmp r6, 0x1 + bne _08155580 + ldr r1, _081555C4 @ =gUnknown_841CDBA + add r0, sp, 0xC + bl sub_813CCC8 +_08155580: + ldr r0, _081555C8 @ =gUnknown_203F440 + ldr r0, [r0] + ldr r2, _081555CC @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x28 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + add r2, sp, 0xC + movs r3, 0x8 + bl sub_8002C48 +_0815559E: + ldr r4, _081555C8 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _081555D0 @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r0, [r4] + ldr r2, _081555CC @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r4] + ldr r0, _081555D4 @ =0x00003014 + adds r1, r0 + b _0815565E + .align 2, 0 +_081555C4: .4byte gUnknown_841CDBA +_081555C8: .4byte gUnknown_203F440 +_081555CC: .4byte 0x00003009 +_081555D0: .4byte 0x00003008 +_081555D4: .4byte 0x00003014 +_081555D8: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _081555FC + ldr r4, _08155618 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _0815561C @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + ldr r0, [r4] + ldr r2, _08155620 @ =0x00003009 + adds r0, r2 + ldrb r0, [r0] + bl sub_8003FA0 +_081555FC: + movs r0, 0 + bl sub_80020BC + ldr r0, _08155624 @ =0x00000137 + movs r1, 0x14 + movs r2, 0xA + bl sub_8071B20 + ldr r0, _08155618 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _08155628 @ =0x00003014 + adds r1, r0 + b _0815565E + .align 2, 0 +_08155618: .4byte gUnknown_203F440 +_0815561C: .4byte 0x00003008 +_08155620: .4byte 0x00003009 +_08155624: .4byte 0x00000137 +_08155628: .4byte 0x00003014 +_0815562C: + ldr r4, _08155668 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _0815566C @ =0x0000301c + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1D + bls _081556C8 + ldr r0, _08155670 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _081556C8 + movs r0, 0 + strh r0, [r2] + movs r0, 0x5 + bl sub_80722CC +_08155658: + ldr r1, [r4] +_0815565A: + ldr r2, _08155674 @ =0x00003014 + adds r1, r2 +_0815565E: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _081556C8 + .align 2, 0 +_08155668: .4byte gUnknown_203F440 +_0815566C: .4byte 0x0000301c +_08155670: .4byte gUnknown_30030F0 +_08155674: .4byte 0x00003014 +_08155678: + ldr r5, _081556D8 @ =0x00003008 + adds r0, r1, r5 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r6] + ldr r4, _081556DC @ =0x00003009 + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0] + bl sub_8003E3C + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r0, [r6] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] +_081556C8: + add sp, 0x8C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081556D8: .4byte 0x00003008 +_081556DC: .4byte 0x00003009 + thumb_func_end sub_8154F80 + + thumb_func_start sub_81556E0 +sub_81556E0: @ 81556E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldr r1, _08155708 @ =gUnknown_203F440 + ldr r2, [r1] + ldr r0, _0815570C @ =0x00003014 + mov r9, r0 + adds r0, r2, r0 + ldrb r7, [r0] + mov r10, r1 + cmp r7, 0x1 + beq _0815579C + cmp r7, 0x1 + bgt _08155710 + cmp r7, 0 + beq _0815571E + b _081559EC + .align 2, 0 +_08155708: .4byte gUnknown_203F440 +_0815570C: .4byte 0x00003014 +_08155710: + cmp r7, 0x2 + bne _08155716 + b _08155868 +_08155716: + cmp r7, 0x3 + bne _0815571C + b _081558A4 +_0815571C: + b _081559EC +_0815571E: + ldr r5, _08155788 @ =gUnknown_847568C + adds r0, r5, 0 + bl sub_8003CE4 + mov r2, r10 + ldr r1, [r2] + ldr r3, _0815578C @ =0x00003008 + adds r1, r3 + strb r0, [r1] + movs r0, 0x8 + adds r0, r5 + mov r8, r0 + bl sub_8003CE4 + mov r2, r10 + ldr r1, [r2] + ldr r4, _08155790 @ =0x00003009 + adds r1, r4 + strb r0, [r1] + ldr r0, [r2] + ldr r3, _0815578C @ =0x00003008 + adds r0, r3 + ldrb r0, [r0] + bl sub_80040B8 + mov r1, r10 + ldr r0, [r1] + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + adds r0, r5, 0 + bl sub_8154868 + mov r0, r8 + bl sub_8154768 + mov r2, r10 + ldr r1, [r2] + add r1, r9 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r2] + ldr r3, _08155794 @ =0x00003020 + adds r0, r3 + strb r7, [r0] + ldr r0, [r2] + ldr r1, _08155798 @ =0x00003024 + adds r0, r1 + strb r7, [r0] + b _08155A58 + .align 2, 0 +_08155788: .4byte gUnknown_847568C +_0815578C: .4byte 0x00003008 +_08155790: .4byte 0x00003009 +_08155794: .4byte 0x00003020 +_08155798: .4byte 0x00003024 +_0815579C: + ldr r3, _0815584C @ =0x00003008 + mov r8, r3 + adds r0, r2, r3 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + mov r1, r10 + ldr r0, [r1] + ldr r7, _08155850 @ =0x00003009 + adds r0, r7 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + mov r2, r10 + ldr r0, [r2] + add r0, r8 + ldrb r0, [r0] + ldr r2, _08155854 @ =gUnknown_841CDD7 + movs r1, 0x6 + str r1, [sp] + movs r5, 0xFF + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + mov r3, r10 + ldr r0, [r3] + adds r0, r7 + ldrb r0, [r0] + ldr r2, _08155858 @ =gUnknown_8417938 + movs r1, 0x2 + mov r9, r1 + str r1, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r3, 0x8 + bl sub_8002C48 + mov r2, r10 + ldr r0, [r2] + adds r0, r7 + ldrb r0, [r0] + ldr r2, _0815585C @ =gUnknown_841793C + movs r1, 0x10 + str r1, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + mov r3, r10 + ldr r0, [r3] + adds r0, r7 + ldrb r0, [r0] + ldr r2, _08155860 @ =gUnknown_841623B + mov r1, r9 + str r1, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + mov r2, r10 + ldr r0, [r2] + add r0, r8 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + mov r3, r10 + ldr r0, [r3] + adds r0, r7 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + mov r0, r10 + ldr r1, [r0] + ldr r2, _08155864 @ =0x00003014 + adds r1, r2 + b _081559DA + .align 2, 0 +_0815584C: .4byte 0x00003008 +_08155850: .4byte 0x00003009 +_08155854: .4byte gUnknown_841CDD7 +_08155858: .4byte gUnknown_8417938 +_0815585C: .4byte gUnknown_841793C +_08155860: .4byte gUnknown_841623B +_08155864: .4byte 0x00003014 +_08155868: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0815588E + mov r3, r10 + ldr r0, [r3] + ldr r1, _0815589C @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 + mov r2, r10 + ldr r0, [r2] + ldr r3, _081558A0 @ =0x00003009 + adds r0, r3 + ldrb r0, [r0] + bl sub_8003FA0 +_0815588E: + movs r0, 0 + bl sub_80020BC + mov r0, r10 + ldr r1, [r0] + add r1, r9 + b _081559DA + .align 2, 0 +_0815589C: .4byte 0x00003008 +_081558A0: .4byte 0x00003009 +_081558A4: + ldr r1, _0815590C @ =0x00003020 + adds r0, r2, r1 + ldrb r7, [r0] + cmp r7, 0 + bne _081558B0 + movs r7, 0x1 +_081558B0: + ldr r4, _08155910 @ =0x00003009 + adds r0, r2, r4 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + mov r2, r10 + ldr r0, [r2] + adds r0, r4 + ldrb r0, [r0] + ldr r2, _08155914 @ =gUnknown_8417938 + movs r3, 0x2 + mov r8, r3 + str r3, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + mov r2, r10 + ldr r0, [r2] + adds r0, r4 + ldrb r0, [r0] + ldr r2, _08155918 @ =gUnknown_841793C + movs r6, 0x10 + str r6, [sp] + movs r3, 0xFF + str r3, [sp, 0x4] + str r5, [sp, 0x8] + movs r1, 0x2 + movs r3, 0x8 + bl sub_8002C48 + mov r1, r10 + ldr r0, [r1] + adds r0, r4 + ldrb r1, [r0] + ldr r2, _0815591C @ =gUnknown_841623B + cmp r7, 0x1 + bne _08155920 + mov r3, r8 + str r3, [sp] + b _08155922 + .align 2, 0 +_0815590C: .4byte 0x00003020 +_08155910: .4byte 0x00003009 +_08155914: .4byte gUnknown_8417938 +_08155918: .4byte gUnknown_841793C +_0815591C: .4byte gUnknown_841623B +_08155920: + str r6, [sp] +_08155922: + movs r0, 0xFF + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r1, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r4, _08155970 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _08155974 @ =0x00003009 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8003F20 + ldr r0, _08155978 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r5, 0x1 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08155984 + movs r0, 0x5 + bl sub_80722CC + ldr r0, [r4] + ldr r2, _0815597C @ =0x00003020 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _08155966 + strb r5, [r1] +_08155966: + ldr r1, [r4] + ldr r3, _08155980 @ =0x00003014 + adds r1, r3 + b _081559DA + .align 2, 0 +_08155970: .4byte gUnknown_203F440 +_08155974: .4byte 0x00003009 +_08155978: .4byte gUnknown_30030F0 +_0815597C: .4byte 0x00003020 +_08155980: .4byte 0x00003014 +_08155984: + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + beq _081559BC + movs r0, 0x5 + bl sub_80722CC + ldr r0, [r4] + ldr r2, _081559A8 @ =0x00003020 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0x1 + beq _081559B2 + cmp r0, 0x1 + bgt _081559AC + cmp r0, 0 + beq _081559B2 + b _08155A58 + .align 2, 0 +_081559A8: .4byte 0x00003020 +_081559AC: + cmp r0, 0x2 + beq _081559B8 + b _08155A58 +_081559B2: + movs r0, 0x2 + strb r0, [r1] + b _08155A58 +_081559B8: + strb r5, [r1] + b _08155A58 +_081559BC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08155A58 + movs r0, 0x5 + bl sub_80722CC + ldr r0, [r4] + ldr r3, _081559E4 @ =0x00003020 + adds r0, r3 + movs r1, 0x2 + strb r1, [r0] + ldr r1, [r4] + ldr r0, _081559E8 @ =0x00003014 + adds r1, r0 +_081559DA: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08155A58 + .align 2, 0 +_081559E4: .4byte 0x00003020 +_081559E8: .4byte 0x00003014 +_081559EC: + mov r1, r10 + ldr r0, [r1] + ldr r2, _08155A68 @ =0x00003020 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r3, _08155A6C @ =0x00003024 + adds r0, r3 + strb r1, [r0] + mov r1, r10 + ldr r0, [r1] + ldr r5, _08155A70 @ =0x00003008 + adds r0, r5 + ldrb r0, [r0] + bl sub_80040B8 + mov r2, r10 + ldr r0, [r2] + ldr r4, _08155A74 @ =0x00003009 + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + mov r3, r10 + ldr r0, [r3] + adds r0, r5 + ldrb r0, [r0] + bl sub_8003E3C + mov r1, r10 + ldr r0, [r1] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + mov r2, r10 + ldr r0, [r2] + movs r3, 0xC0 + lsls r3, 6 + adds r0, r3 + movs r1, 0x1 + str r1, [r0] +_08155A58: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08155A68: .4byte 0x00003020 +_08155A6C: .4byte 0x00003024 +_08155A70: .4byte 0x00003008 +_08155A74: .4byte 0x00003009 + thumb_func_end sub_81556E0 + + thumb_func_start sub_8155A78 +sub_8155A78: @ 8155A78 + push {r4-r6,lr} + sub sp, 0x10 + ldr r5, _08155A94 @ =gUnknown_203F440 + ldr r0, [r5] + ldr r6, _08155A98 @ =0x00003014 + adds r0, r6 + ldrb r4, [r0] + cmp r4, 0x1 + beq _08155AD0 + cmp r4, 0x1 + bgt _08155A9C + cmp r4, 0 + beq _08155AA6 + b _08155B18 + .align 2, 0 +_08155A94: .4byte gUnknown_203F440 +_08155A98: .4byte 0x00003014 +_08155A9C: + cmp r4, 0x2 + beq _08155AE4 + cmp r4, 0x3 + beq _08155AFC + b _08155B18 +_08155AA6: + movs r0, 0 + movs r1, 0 + bl sub_80F6EE4 + ldr r2, _08155ACC @ =gUnknown_8419F54 + str r4, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + movs r0, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_80F6CD0 + b _08155B08 + .align 2, 0 +_08155ACC: .4byte gUnknown_8419F54 +_08155AD0: + movs r0, 0 + movs r1, 0x3 + bl sub_8003F20 + ldr r1, [r5] + ldr r0, _08155AE0 @ =0x00003014 + adds r1, r0 + b _08155B0C + .align 2, 0 +_08155AE0: .4byte 0x00003014 +_08155AE4: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08155B40 + ldr r0, _08155AF8 @ =sub_80DA634 + movs r1, 0 + bl sub_807741C + b _08155B08 + .align 2, 0 +_08155AF8: .4byte sub_80DA634 +_08155AFC: + ldr r0, _08155B14 @ =sub_80DA634 + bl sub_8077650 + lsls r0, 24 + cmp r0, 0 + bne _08155B40 +_08155B08: + ldr r1, [r5] + adds r1, r6 +_08155B0C: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08155B40 + .align 2, 0 +_08155B14: .4byte sub_80DA634 +_08155B18: + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r0, _08155B48 @ =gUnknown_203F440 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] +_08155B40: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08155B48: .4byte gUnknown_203F440 + thumb_func_end sub_8155A78 + + thumb_func_start sub_8155B4C +sub_8155B4C: @ 8155B4C + push {r4-r6,lr} + sub sp, 0xC + ldr r1, _08155B6C @ =gUnknown_203F440 + ldr r2, [r1] + ldr r6, _08155B70 @ =0x00003014 + adds r0, r2, r6 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0x1 + beq _08155BA4 + cmp r0, 0x1 + bgt _08155B74 + cmp r0, 0 + beq _08155B7A + b _08155C18 + .align 2, 0 +_08155B6C: .4byte gUnknown_203F440 +_08155B70: .4byte 0x00003014 +_08155B74: + cmp r0, 0x2 + beq _08155BEC + b _08155C18 +_08155B7A: + ldr r4, _08155B9C @ =gUnknown_84756A4 + adds r0, r4, 0 + bl sub_8003CE4 + ldr r1, [r5] + ldr r2, _08155BA0 @ =0x00003008 + adds r1, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, r2 + ldrb r0, [r0] + bl sub_80040B8 + adds r0, r4, 0 + bl sub_8154868 + b _08155C08 + .align 2, 0 +_08155B9C: .4byte gUnknown_84756A4 +_08155BA0: .4byte 0x00003008 +_08155BA4: + ldr r4, _08155BE0 @ =0x00003008 + adds r0, r2, r4 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + ldr r2, _08155BE4 @ =gUnknown_841CE24 + movs r1, 0x6 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r5] + ldr r0, _08155BE8 @ =0x00003014 + adds r1, r0 + b _08155C0C + .align 2, 0 +_08155BE0: .4byte 0x00003008 +_08155BE4: .4byte gUnknown_841CE24 +_08155BE8: .4byte 0x00003014 +_08155BEC: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08155C02 + ldr r0, [r5] + ldr r1, _08155C14 @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 +_08155C02: + movs r0, 0 + bl sub_80020BC +_08155C08: + ldr r1, [r5] + adds r1, r6 +_08155C0C: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08155C24 + .align 2, 0 +_08155C14: .4byte 0x00003008 +_08155C18: + ldr r0, [r5] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] +_08155C24: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8155B4C + + thumb_func_start sub_8155C2C +sub_8155C2C: @ 8155C2C + push {r4,r5,lr} + sub sp, 0x8 + ldr r5, _08155C78 @ =gUnknown_203F440 + ldr r0, [r5] + ldr r4, _08155C7C @ =0x00003008 + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r5] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r0, [r5] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08155C78: .4byte gUnknown_203F440 +_08155C7C: .4byte 0x00003008 + thumb_func_end sub_8155C2C + + thumb_func_start sub_8155C80 +sub_8155C80: @ 8155C80 + push {r4-r7,lr} + sub sp, 0xC + ldr r0, _08155CA0 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r7, _08155CA4 @ =0x00003014 + adds r2, r1, r7 + ldrb r5, [r2] + adds r6, r0, 0 + cmp r5, 0x1 + beq _08155D08 + cmp r5, 0x1 + bgt _08155CA8 + cmp r5, 0 + beq _08155CB2 + b _08155D9C + .align 2, 0 +_08155CA0: .4byte gUnknown_203F440 +_08155CA4: .4byte 0x00003014 +_08155CA8: + cmp r5, 0x2 + beq _08155D50 + cmp r5, 0x3 + beq _08155D7C + b _08155D9C +_08155CB2: + ldr r4, _08155CF8 @ =gUnknown_847569C + adds r0, r4, 0 + bl sub_8003CE4 + ldr r1, [r6] + ldr r2, _08155CFC @ =0x00003008 + adds r1, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, r2 + ldrb r0, [r0] + bl sub_80040B8 + adds r0, r4, 0 + bl sub_8154868 + ldr r1, [r6] + adds r1, r7 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, [r6] + ldr r2, _08155D00 @ =0x0000301c + adds r1, r0, r2 + movs r2, 0 + strh r5, [r1] + ldr r1, _08155D04 @ =0x00003020 + adds r0, r1 + strb r2, [r0] + ldr r0, [r6] + adds r1, 0x4 + adds r0, r1 + strb r2, [r0] + b _08155DE2 + .align 2, 0 +_08155CF8: .4byte gUnknown_847569C +_08155CFC: .4byte 0x00003008 +_08155D00: .4byte 0x0000301c +_08155D04: .4byte 0x00003020 +_08155D08: + ldr r4, _08155D44 @ =0x00003008 + adds r0, r1, r4 + ldrb r0, [r0] + movs r1, 0x11 + bl sub_800445C + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + ldr r2, _08155D48 @ =gUnknown_841CDEB + movs r1, 0x6 + str r1, [sp] + movs r1, 0xFF + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r1, 0x2 + movs r3, 0 + bl sub_8002C48 + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8003F20 + ldr r1, [r6] + ldr r2, _08155D4C @ =0x00003014 + adds r1, r2 + b _08155D70 + .align 2, 0 +_08155D44: .4byte 0x00003008 +_08155D48: .4byte gUnknown_841CDEB +_08155D4C: .4byte 0x00003014 +_08155D50: + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _08155D66 + ldr r0, [r6] + ldr r1, _08155D78 @ =0x00003008 + adds r0, r1 + ldrb r0, [r0] + bl sub_8003FA0 +_08155D66: + movs r0, 0 + bl sub_80020BC + ldr r1, [r6] + adds r1, r7 +_08155D70: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08155DE2 + .align 2, 0 +_08155D78: .4byte 0x00003008 +_08155D7C: + ldr r0, _08155D98 @ =0x0000301c + adds r1, r0 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x77 + bls _08155DE2 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + b _08155DE2 + .align 2, 0 +_08155D98: .4byte 0x0000301c +_08155D9C: + ldr r0, [r6] + ldr r1, _08155DEC @ =0x00003024 + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] + ldr r0, [r6] + ldr r4, _08155DF0 @ =0x00003008 + adds r0, r4 + ldrb r0, [r0] + bl sub_80040B8 + ldr r0, [r6] + adds r0, r4 + ldrb r0, [r0] + bl sub_8003E3C + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002454 + movs r0, 0 + bl sub_80020BC + ldr r0, [r6] + movs r2, 0xC0 + lsls r2, 6 + adds r0, r2 + movs r1, 0x1 + str r1, [r0] +_08155DE2: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08155DEC: .4byte 0x00003024 +_08155DF0: .4byte 0x00003008 + thumb_func_end sub_8155C80 + + thumb_func_start sub_8155DF4 +sub_8155DF4: @ 8155DF4 + push {r4,lr} + ldr r4, _08155E18 @ =gUnknown_203F440 + ldr r0, [r4] + ldr r1, _08155E1C @ =0x00003004 + adds r0, r1 + ldrb r0, [r0] + bl sub_8077508 + ldr r0, [r4] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08155E18: .4byte gUnknown_203F440 +_08155E1C: .4byte 0x00003004 + thumb_func_end sub_8155DF4 + + thumb_func_start nullsub_98 +nullsub_98: @ 8155E20 + bx lr + thumb_func_end nullsub_98 + + thumb_func_start sub_8155E24 +sub_8155E24: @ 8155E24 + push {r4,lr} + ldr r2, _08155E48 @ =gUnknown_203F440 + ldr r1, [r2] + ldr r3, _08155E4C @ =0x00003014 + adds r1, r3 + movs r3, 0 + strb r3, [r1] + ldr r1, [r2] + movs r4, 0xC0 + lsls r4, 6 + adds r2, r1, r4 + str r3, [r2] + ldr r2, _08155E50 @ =0x00003028 + adds r1, r2 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08155E48: .4byte gUnknown_203F440 +_08155E4C: .4byte 0x00003014 +_08155E50: .4byte 0x00003028 + thumb_func_end sub_8155E24 + + thumb_func_start sub_8155E54 +sub_8155E54: @ 8155E54 + ldr r0, _08155E60 @ =gUnknown_203F440 + ldr r0, [r0] + ldr r1, _08155E64 @ =0x00003028 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_08155E60: .4byte gUnknown_203F440 +_08155E64: .4byte 0x00003028 + thumb_func_end sub_8155E54 + + thumb_func_start sub_8155E68 +sub_8155E68: @ 8155E68 + push {lr} + ldr r0, _08155E80 @ =gUnknown_203F440 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 6 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + beq _08155E84 + movs r0, 0x1 + b _08155E86 + .align 2, 0 +_08155E80: .4byte gUnknown_203F440 +_08155E84: + movs r0, 0 +_08155E86: + pop {r1} + bx r1 + thumb_func_end sub_8155E68 + + thumb_func_start sub_8155E8C +sub_8155E8C: @ 8155E8C + ldr r0, _08155E98 @ =gUnknown_203F440 + ldr r0, [r0] + ldr r1, _08155E9C @ =0x00003024 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08155E98: .4byte gUnknown_203F440 +_08155E9C: .4byte 0x00003024 + thumb_func_end sub_8155E8C + + thumb_func_start sub_8155EA0 +sub_8155EA0: @ 8155EA0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0xC0 + lsls r3, 19 + movs r4, 0xC0 + lsls r4, 9 + add r0, sp, 0x4 + mov r8, r0 + mov r2, sp + movs r6, 0 + ldr r1, _08155FD0 @ =0x040000d4 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _08155FD4 @ =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_08155EC6: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r3, r5 + subs r4, r5 + cmp r4, r5 + bhi _08155EC6 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, 0x4] + lsrs r0, r4, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0xE0 + lsls r0, 19 + movs r3, 0x80 + lsls r3, 3 + movs r4, 0 + str r4, [sp, 0x4] + ldr r2, _08155FD0 @ =0x040000d4 + mov r1, r8 + str r1, [r2] + str r0, [r2, 0x4] + lsrs r0, r3, 2 + movs r1, 0x85 + lsls r1, 24 + orrs r0, r1 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r1, 0xA0 + lsls r1, 19 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, 0x4] + lsrs r3, 1 + movs r0, 0x81 + lsls r0, 24 + orrs r3, r0 + str r3, [r2, 0x8] + ldr r0, [r2, 0x8] + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + bl sub_8001618 + ldr r1, _08155FD8 @ =gUnknown_847565C + movs r0, 0 + movs r2, 0x4 + bl sub_8001658 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + bl sub_80F6C6C + bl sub_80F6C98 + movs r1, 0x82 + lsls r1, 5 + movs r0, 0 + bl sub_8000A38 + ldr r4, _08155FDC @ =gUnknown_203F440 + ldr r1, [r4] + movs r0, 0x3 + bl sub_8001FA0 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 5 + adds r1, r2 + movs r0, 0x1 + bl sub_8001FA0 + ldr r1, [r4] + movs r0, 0x80 + lsls r0, 6 + adds r1, r0 + movs r0, 0x2 + bl sub_8001FA0 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08155FD0: .4byte 0x040000d4 +_08155FD4: .4byte 0x81000800 +_08155FD8: .4byte gUnknown_847565C +_08155FDC: .4byte gUnknown_203F440 + thumb_func_end sub_8155EA0 + + thumb_func_start sub_8155FE0 +sub_8155FE0: @ 8155FE0 + push {lr} + sub sp, 0x4 + ldr r0, _08155FFC @ =gUnknown_203F440 + ldr r0, [r0] + ldr r2, _08156000 @ =0x00003018 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0x5 + bhi _0815607A + lsls r0, 2 + ldr r1, _08156004 @ =_08156008 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08155FFC: .4byte gUnknown_203F440 +_08156000: .4byte 0x00003018 +_08156004: .4byte _08156008 + .align 2, 0 +_08156008: + .4byte _08156020 + .4byte _08156030 + .4byte _08156036 + .4byte _08156044 + .4byte _0815605C + .4byte _0815606A +_08156020: + ldr r0, _0815602C @ =gUnknown_84758A8 + movs r1, 0 + movs r2, 0x40 + bl sub_80703EC + b _08156082 + .align 2, 0 +_0815602C: .4byte gUnknown_84758A8 +_08156030: + bl sub_80F6808 + b _08156082 +_08156036: + ldr r1, _08156040 @ =gUnknown_8475B3C + movs r0, 0 + str r0, [sp] + movs r0, 0x3 + b _0815604C + .align 2, 0 +_08156040: .4byte gUnknown_8475B3C +_08156044: + ldr r1, _08156058 @ =gUnknown_84763CC + movs r0, 0 + str r0, [sp] + movs r0, 0x1 +_0815604C: + movs r2, 0 + movs r3, 0 + bl sub_80F6878 + b _08156082 + .align 2, 0 +_08156058: .4byte gUnknown_84763CC +_0815605C: + bl sub_80F682C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08156082 + b _08156090 +_0815606A: + movs r0, 0x3 + bl sub_8150408 + movs r1, 0xD0 + movs r2, 0x20 + bl sub_80703EC + b _08156082 +_0815607A: + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + b _08156092 +_08156082: + ldr r0, _08156098 @ =gUnknown_203F440 + ldr r1, [r0] + ldr r0, _0815609C @ =0x00003018 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_08156090: + movs r0, 0 +_08156092: + add sp, 0x4 + pop {r1} + bx r1 + .align 2, 0 +_08156098: .4byte gUnknown_203F440 +_0815609C: .4byte 0x00003018 + thumb_func_end sub_8155FE0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_8159F40.s b/asm/unk_8159F40.s new file mode 100644 index 000000000..751b63eca --- /dev/null +++ b/asm/unk_8159F40.s @@ -0,0 +1,1623 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8159F40 +sub_8159F40: @ 8159F40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + movs r0, 0 + mov r10, r0 + mov r9, r0 + ldr r1, _08159F90 @ =gUnknown_2022B4C + movs r0, 0x80 + lsls r0, 9 + str r0, [r1] + bl sub_803DA14 + bl sub_803DA34 + ldr r1, _08159F94 @ =gUnknown_84792D0 + ldr r0, _08159F98 @ =gUnknown_20370C0 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + mov r8, r0 + movs r7, 0 +_08159F72: + lsls r0, r7, 4 + mov r2, r8 + adds r1, r0, r2 + ldrb r1, [r1] + adds r4, r0, 0 + cmp r1, 0 + bne _08159FA0 + movs r0, 0x64 + mov r1, r10 + muls r1, r0 + ldr r0, _08159F9C @ =gUnknown_2024284 + adds r6, r1, r0 + movs r0, 0x1 + add r10, r0 + b _08159FAE + .align 2, 0 +_08159F90: .4byte gUnknown_2022B4C +_08159F94: .4byte gUnknown_84792D0 +_08159F98: .4byte gUnknown_20370C0 +_08159F9C: .4byte gUnknown_2024284 +_08159FA0: + movs r0, 0x64 + mov r1, r9 + muls r1, r0 + ldr r0, _0815A004 @ =gUnknown_202402C + adds r6, r1, r0 + movs r2, 0x1 + add r9, r2 +_08159FAE: + mov r0, r8 + adds r3, r4, r0 + ldrh r1, [r3, 0x2] + ldrb r2, [r3, 0x1] + ldrb r0, [r3, 0xD] + str r0, [sp] + ldrb r0, [r3, 0xC] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r3, 0 + bl sub_803DE00 + movs r5, 0 + adds r7, 0x1 + mov r0, r8 + adds r0, 0x4 + adds r4, r0 +_08159FD4: + ldrh r1, [r4] + lsls r2, r5, 24 + lsrs r2, 24 + adds r0, r6, 0 + bl sub_803E964 + adds r4, 0x2 + adds r5, 0x1 + cmp r5, 0x3 + ble _08159FD4 + lsls r0, r7, 4 + add r0, r8 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08159F72 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815A004: .4byte gUnknown_202402C + thumb_func_end sub_8159F40 + + thumb_func_start sub_815A008 +sub_815A008: @ 815A008 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r1, 0 + mov r8, r1 + movs r6, 0x1 + movs r2, 0x2 + negs r2, r2 + mov r12, r2 + adds r5, r0, 0 + adds r5, 0x8 + movs r7, 0 + movs r0, 0x41 + negs r0, r0 + mov r10, r0 + movs r1, 0x7F + mov r9, r1 +_0815A02E: + ldr r2, _0815A1F4 @ =gUnknown_2036E38 + adds r3, r7, r2 + ldrb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + ands r0, r6 + ldrb r2, [r5] + mov r1, r12 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r3] + lsls r0, 28 + lsrs r0, 31 + ands r0, r6 + lsls r0, 1 + movs r2, 0x3 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5] + ldrb r0, [r3] + lsls r0, 27 + lsrs r0, 31 + ands r0, r6 + lsls r0, 2 + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r3] + lsls r0, 26 + lsrs r0, 31 + ands r0, r6 + lsls r0, 3 + movs r2, 0x9 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5] + ldrb r0, [r3, 0x1] + lsls r0, 31 + lsrs r0, 31 + ands r0, r6 + lsls r0, 4 + movs r1, 0x11 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r3, 0x1] + lsls r0, 30 + lsrs r0, 31 + ands r0, r6 + lsls r0, 5 + movs r2, 0x21 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5] + ldrb r0, [r3, 0x1] + lsls r0, 29 + lsrs r0, 31 + ands r0, r6 + lsls r0, 6 + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r3, 0x1] + lsls r0, 28 + lsrs r0, 31 + lsls r0, 7 + mov r2, r9 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r3, 0x1] + lsls r0, 27 + lsrs r0, 31 + ands r0, r6 + ldrb r2, [r5, 0x1] + mov r1, r12 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 26 + lsrs r0, 31 + ands r0, r6 + lsls r0, 1 + movs r2, 0x3 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x1] + ldrb r0, [r3, 0x1] + lsls r0, 25 + lsrs r0, 31 + ands r0, r6 + lsls r0, 2 + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r3, 0x1] + lsrs r0, 7 + ands r0, r6 + lsls r0, 3 + movs r2, 0x9 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 31 + lsrs r0, 31 + ands r0, r6 + lsls r0, 4 + movs r1, 0x11 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r3, 0x2] + lsrs r0, 7 + ands r0, r6 + lsls r0, 5 + movs r2, 0x21 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x1] + ldrb r0, [r3, 0x3] + lsls r0, 31 + lsrs r0, 31 + ands r0, r6 + lsls r0, 6 + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r3, 0x3] + lsls r0, 30 + lsrs r0, 31 + lsls r0, 7 + mov r2, r9 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r3, 0x3] + lsls r0, 29 + lsrs r0, 31 + ands r0, r6 + ldrb r2, [r5, 0x2] + mov r1, r12 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x2] + ldrb r2, [r3, 0x18] + lsls r2, 28 + lsrs r2, 27 + movs r0, 0x1F + negs r0, r0 + ands r1, r0 + orrs r1, r2 + strb r1, [r5, 0x2] + ldrb r1, [r3, 0xB] + lsls r1, 28 + movs r4, 0xF + lsrs r1, 28 + ldrb r2, [r5, 0x3] + adds r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrb r1, [r3, 0xB] + lsrs r1, 4 + lsls r1, 4 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, 0x3] + ldrb r0, [r3, 0x5] + strb r0, [r5, 0x4] + ldrb r0, [r3, 0x6] + strb r0, [r5, 0x5] + ldrb r0, [r3, 0x7] + strb r0, [r5, 0x6] + ldrb r0, [r3, 0x8] + strb r0, [r5, 0x7] + ldrb r0, [r3, 0x9] + strb r0, [r5, 0x8] + ldrb r0, [r3, 0xA] + strb r0, [r5, 0x9] + ldrh r0, [r3, 0x10] + strh r0, [r5, 0xA] + ldrh r0, [r3, 0x12] + strh r0, [r5, 0xC] + ldrb r0, [r3, 0x1D] + strb r0, [r5, 0xE] + ldrb r0, [r3, 0x1F] + strb r0, [r5, 0xF] + adds r0, r3, 0 + adds r0, 0x21 + ldrb r0, [r0] + strb r0, [r5, 0x10] + adds r3, 0x22 + ldrb r0, [r3] + strb r0, [r5, 0x11] + adds r5, 0x14 + adds r7, 0x24 + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0xF + bhi _0815A1E4 + b _0815A02E +_0815A1E4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815A1F4: .4byte gUnknown_2036E38 + thumb_func_end sub_815A008 + + thumb_func_start sub_815A1F8 +sub_815A1F8: @ 815A1F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + str r1, [sp, 0x4] + adds r0, 0x8 + str r0, [sp, 0x8] + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r4, _0815A480 @ =gUnknown_2036E38 + ldr r2, _0815A484 @ =0x01000120 + mov r0, sp + adds r1, r4, 0 + bl CpuSet + movs r0, 0 + mov r12, r0 + movs r1, 0x1 + mov r10, r1 +_0815A224: + mov r2, r12 + lsls r7, r2, 3 + adds r5, r7, r2 + lsls r5, 2 + ldr r0, _0815A480 @ =gUnknown_2036E38 + adds r5, r0 + lsls r6, r2, 2 + add r6, r12 + lsls r6, 2 + ldr r1, [sp, 0x8] + adds r6, r1 + ldrb r0, [r6] + lsls r0, 31 + lsrs r0, 31 + mov r2, r10 + ands r0, r2 + ldrb r2, [r5] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r6] + lsls r0, 30 + lsrs r0, 31 + mov r2, r10 + ands r0, r2 + lsls r0, 3 + movs r2, 0x9 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5] + ldrb r0, [r6] + lsls r0, 29 + lsrs r0, 31 + mov r1, r10 + ands r0, r1 + lsls r0, 4 + movs r1, 0x11 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r6] + lsls r0, 28 + lsrs r0, 31 + mov r2, r10 + ands r0, r2 + lsls r0, 5 + movs r4, 0x21 + negs r4, r4 + ands r1, r4 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r6] + lsls r0, 27 + lsrs r0, 31 + ands r0, r2 + ldrb r1, [r5, 0x1] + movs r2, 0x2 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x1] + ldrb r0, [r6] + lsls r0, 26 + lsrs r0, 31 + mov r1, r10 + ands r0, r1 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + mov r8, r1 + mov r3, r8 + ands r3, r2 + orrs r3, r0 + strb r3, [r5, 0x1] + ldrb r0, [r6] + lsls r0, 25 + lsrs r0, 31 + mov r2, r10 + ands r0, r2 + lsls r0, 2 + subs r1, 0x2 + mov r9, r1 + ands r1, r3 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r6] + lsrs r0, 7 + ands r0, r2 + lsls r0, 3 + movs r2, 0x9 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x1] + ldrb r0, [r6, 0x1] + lsls r0, 31 + lsrs r0, 31 + mov r1, r10 + ands r0, r1 + lsls r0, 4 + movs r1, 0x11 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrb r0, [r6, 0x1] + lsls r0, 30 + lsrs r0, 31 + mov r2, r10 + ands r0, r2 + lsls r0, 5 + ands r4, r1 + orrs r4, r0 + strb r4, [r5, 0x1] + ldrb r0, [r6, 0x1] + lsls r0, 29 + lsrs r0, 31 + ands r0, r2 + lsls r0, 6 + movs r2, 0x41 + negs r2, r2 + adds r1, r2, 0 + ands r4, r1 + orrs r4, r0 + strb r4, [r5, 0x1] + ldrb r0, [r6, 0x1] + lsls r0, 28 + lsrs r0, 31 + lsls r0, 7 + movs r3, 0x7F + ands r4, r3 + orrs r4, r0 + strb r4, [r5, 0x1] + ldrb r0, [r6, 0x1] + lsls r0, 27 + lsrs r0, 31 + mov r1, r10 + ands r0, r1 + ldrb r2, [r5, 0x2] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x2] + ldrb r0, [r6, 0x1] + lsls r0, 26 + lsrs r0, 31 + lsls r0, 7 + ands r1, r3 + orrs r1, r0 + strb r1, [r5, 0x2] + ldrb r0, [r6, 0x1] + lsls r0, 25 + lsrs r0, 31 + mov r2, r10 + ands r0, r2 + ldrb r2, [r5, 0x3] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x3] + ldrb r0, [r6, 0x1] + lsrs r0, 7 + mov r2, r10 + ands r0, r2 + lsls r0, 1 + mov r2, r8 + ands r2, r1 + orrs r2, r0 + mov r8, r2 + strb r2, [r5, 0x3] + ldrb r0, [r6, 0x2] + lsls r0, 31 + lsrs r0, 31 + mov r1, r10 + ands r0, r1 + lsls r0, 2 + mov r1, r9 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x3] + ldrb r1, [r6, 0x2] + lsls r1, 27 + lsrs r1, 28 + ldrb r2, [r5, 0x18] + movs r4, 0x10 + negs r4, r4 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x18] + ldrb r1, [r6, 0x3] + lsls r1, 28 + movs r3, 0xF + lsrs r1, 28 + ldrb r2, [r5, 0xB] + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0xB] + ldrb r1, [r6, 0x3] + lsrs r1, 4 + lsls r1, 4 + ands r0, r3 + orrs r0, r1 + strb r0, [r5, 0xB] + ldrb r0, [r6, 0x4] + strb r0, [r5, 0x5] + ldrb r0, [r6, 0x5] + strb r0, [r5, 0x6] + ldrb r0, [r6, 0x6] + strb r0, [r5, 0x7] + ldrb r0, [r6, 0x7] + strb r0, [r5, 0x8] + ldrb r0, [r6, 0x8] + strb r0, [r5, 0x9] + ldrb r0, [r6, 0x9] + strb r0, [r5, 0xA] + ldrh r0, [r6, 0xA] + strh r0, [r5, 0x10] + ldrh r0, [r6, 0xC] + strh r0, [r5, 0x12] + ldrb r0, [r6, 0xE] + strb r0, [r5, 0x1D] + ldrb r0, [r6, 0xF] + strb r0, [r5, 0x1F] + ldrb r0, [r6, 0x10] + adds r1, r5, 0 + adds r1, 0x21 + strb r0, [r1] + ldrb r0, [r6, 0x11] + adds r1, 0x1 + strb r0, [r1] + movs r6, 0 + mov r8, r7 + mov r2, r12 + adds r2, 0x1 + str r2, [sp, 0xC] + ldrb r7, [r5, 0x8] + ldr r3, [sp, 0x4] + movs r0, 0xF + mov r9, r0 +_0815A412: + ldrb r1, [r3] + cmp r7, r1 + bne _0815A444 + ldrh r0, [r3, 0x4] + adds r0, 0x7 + strh r0, [r5, 0xC] + ldrh r0, [r3, 0x6] + adds r0, 0x7 + strh r0, [r5, 0xE] + ldrb r1, [r3, 0xA] + lsls r1, 28 + lsrs r1, 28 + mov r2, r9 + ands r1, r2 + ldrb r0, [r5, 0x19] + ands r0, r4 + orrs r0, r1 + strb r0, [r5, 0x19] + ldrb r1, [r3, 0xA] + lsrs r1, 4 + lsls r1, 4 + movs r2, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x19] +_0815A444: + adds r3, 0x18 + adds r6, 0x1 + cmp r6, 0x3F + bls _0815A412 + mov r0, r8 + add r0, r12 + lsls r0, 2 + ldr r1, _0815A480 @ =gUnknown_2036E38 + adds r6, r0, r1 + movs r2, 0x10 + ldrsh r0, [r6, r2] + movs r2, 0x12 + ldrsh r1, [r6, r2] + bl sub_8058F78 + strb r0, [r6, 0x1E] + ldrb r4, [r6, 0x1F] + movs r1, 0x10 + ldrsh r0, [r6, r1] + movs r2, 0x12 + ldrsh r1, [r6, r2] + bl sub_8058F78 + cmp r4, r0 + bne _0815A488 + ldrh r0, [r6, 0x10] + strh r0, [r6, 0x14] + ldrh r0, [r6, 0x12] + b _0815A506 + .align 2, 0 +_0815A480: .4byte gUnknown_2036E38 +_0815A484: .4byte 0x01000120 +_0815A488: + ldrb r4, [r6, 0x1F] + ldrh r0, [r6, 0x10] + subs r0, 0x1 + lsls r0, 16 + asrs r0, 16 + movs r2, 0x12 + ldrsh r1, [r6, r2] + bl sub_8058F78 + cmp r4, r0 + bne _0815A4A8 + ldrh r0, [r6, 0x10] + subs r0, 0x1 + strh r0, [r6, 0x14] + ldrh r0, [r6, 0x12] + b _0815A506 +_0815A4A8: + ldrb r4, [r6, 0x1F] + ldrh r0, [r6, 0x10] + adds r0, 0x1 + lsls r0, 16 + asrs r0, 16 + movs r2, 0x12 + ldrsh r1, [r6, r2] + bl sub_8058F78 + cmp r4, r0 + bne _0815A4C8 + ldrh r0, [r6, 0x10] + adds r0, 0x1 + strh r0, [r6, 0x14] + ldrh r0, [r6, 0x12] + b _0815A506 +_0815A4C8: + ldrb r4, [r6, 0x1F] + movs r1, 0x10 + ldrsh r0, [r6, r1] + ldrh r1, [r6, 0x12] + subs r1, 0x1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + cmp r4, r0 + bne _0815A4E8 + ldrh r0, [r6, 0x10] + strh r0, [r6, 0x14] + ldrh r0, [r6, 0x12] + subs r0, 0x1 + b _0815A506 +_0815A4E8: + ldrb r4, [r6, 0x1F] + movs r2, 0x10 + ldrsh r0, [r6, r2] + ldrh r1, [r6, 0x12] + adds r1, 0x1 + lsls r1, 16 + asrs r1, 16 + bl sub_8058F78 + cmp r4, r0 + bne _0815A508 + ldrh r0, [r6, 0x10] + strh r0, [r6, 0x14] + ldrh r0, [r6, 0x12] + adds r0, 0x1 +_0815A506: + strh r0, [r6, 0x16] +_0815A508: + ldr r0, [sp, 0xC] + mov r12, r0 + cmp r0, 0xF + bhi _0815A512 + b _0815A224 +_0815A512: + ldr r0, _0815A538 @ =gUnknown_2036E38 + ldr r1, _0815A53C @ =gUnknown_3005008 + ldr r1, [r1] + movs r2, 0xD4 + lsls r2, 3 + adds r1, r2 + movs r2, 0x90 + lsls r2, 1 + bl CpuSet + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815A538: .4byte gUnknown_2036E38 +_0815A53C: .4byte gUnknown_3005008 + thumb_func_end sub_815A1F8 + + thumb_func_start sub_815A540 +sub_815A540: @ 815A540 + push {r4,lr} + sub sp, 0x4 + ldr r0, _0815A5AC @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + bne _0815A5A4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl sub_8058F78 + lsls r0, 24 + lsrs r0, 24 + bl sub_8059CA4 + lsls r0, 24 + cmp r0, 0 + bne _0815A5A4 + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _0815A5A4 + ldr r0, _0815A5B0 @ =gUnknown_2037078 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0815A5B4 @ =gUnknown_2036E38 + adds r4, r0 + movs r0, 0x1 + bl sub_805BDEC + ldrb r1, [r4, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0815A5B8 @ =gUnknown_202063C + adds r0, r1 + bl sub_8007280 +_0815A5A4: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A5AC: .4byte gUnknown_203ADFA +_0815A5B0: .4byte gUnknown_2037078 +_0815A5B4: .4byte gUnknown_2036E38 +_0815A5B8: .4byte gUnknown_202063C + thumb_func_end sub_815A540 + + thumb_func_start sub_815A5BC +sub_815A5BC: @ 815A5BC + push {lr} + sub sp, 0x8 + ldr r3, _0815A5E4 @ =0xffffff00 + ldr r1, [sp] + ands r1, r3 + movs r2, 0x1 + orrs r1, r2 + str r1, [sp] + lsls r0, 24 + lsrs r0, 24 + ldr r1, [sp, 0x4] + ands r1, r3 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0815A5E4: .4byte 0xffffff00 + thumb_func_end sub_815A5BC + + thumb_func_start sub_815A5E8 +sub_815A5E8: @ 815A5E8 + push {lr} + adds r2, r0, 0 + ldr r3, _0815A610 @ =gUnknown_3003ED0 + ldrh r0, [r3] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815A60A + lsls r0, r2, 4 + adds r1, r3, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x1 + beq _0815A614 +_0815A60A: + movs r0, 0 + b _0815A616 + .align 2, 0 +_0815A610: .4byte gUnknown_3003ED0 +_0815A614: + ldrb r0, [r1, 0x4] +_0815A616: + pop {r1} + bx r1 + thumb_func_end sub_815A5E8 + + thumb_func_start sub_815A61C +sub_815A61C: @ 815A61C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x48] + lsls r4, 24 + str r4, [sp, 0x1C] + movs r4, 0x14 + adds r4, r0 + mov r9, r4 + mov r5, sp + movs r4, 0x2 + strb r4, [r5] + mov r10, sp + mov r5, r9 + ldrb r4, [r5, 0xB] + movs r7, 0xF + adds r5, r7, 0 + ands r5, r4 + mov r6, r10 + ldrb r6, [r6, 0x1] + mov r8, r6 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x1] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0xC] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x1] + ldrb r5, [r6, 0xD] + movs r6, 0xF + ands r5, r6 + mov r4, r10 + ldrb r4, [r4, 0x2] + mov r8, r4 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x2] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0xE] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x2] + ldrb r5, [r6, 0xF] + movs r6, 0xF + ands r5, r6 + mov r4, r10 + ldrb r4, [r4, 0x3] + mov r8, r4 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x3] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0x10] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x3] + ldrb r5, [r6, 0x11] + movs r6, 0xF + ands r5, r6 + mov r4, r10 + ldrb r4, [r4, 0x4] + mov r8, r4 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x4] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0x12] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x4] + ldrb r4, [r6, 0x13] + movs r6, 0xF + ands r4, r6 + mov r6, r8 + ldrb r5, [r6, 0x5] + movs r6, 0x10 + negs r6, r6 + ands r6, r5 + orrs r6, r4 + str r6, [sp, 0xC] + mov r4, r8 + strb r6, [r4, 0x5] + mov r5, sp + mov r6, r9 + ldrb r4, [r6, 0x14] + lsls r4, 4 + ldr r6, [sp, 0xC] + ands r6, r7 + orrs r6, r4 + strb r6, [r5, 0x5] + mov r7, sp + movs r4, 0x3 + mov r8, r4 + ldrb r0, [r0, 0x14] + mov r5, r8 + ands r0, r5 + ldrb r5, [r7, 0x6] + movs r6, 0x4 + negs r6, r6 + mov r10, r6 + mov r4, r10 + ands r4, r5 + orrs r4, r0 + strb r4, [r7, 0x6] + mov r5, r9 + ldrb r0, [r5, 0x1] + mov r6, r8 + ands r0, r6 + lsls r0, 2 + movs r5, 0xD + negs r5, r5 + ands r5, r4 + orrs r5, r0 + strb r5, [r7, 0x6] + mov r0, r9 + ldrb r4, [r0, 0x2] + ands r4, r6 + lsls r4, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r5 + orrs r0, r4 + strb r0, [r7, 0x6] + mov r5, sp + mov r6, r9 + ldrb r4, [r6, 0x3] + lsls r4, 6 + movs r6, 0x3F + ands r0, r6 + orrs r0, r4 + strb r0, [r5, 0x6] + mov r4, r9 + ldrb r0, [r4, 0x4] + mov r5, r8 + ands r0, r5 + ldrb r5, [r7, 0x7] + mov r4, r10 + ands r4, r5 + orrs r4, r0 + strb r4, [r7, 0x7] + mov r6, r9 + ldrb r0, [r6, 0x5] + mov r5, r8 + ands r0, r5 + lsls r0, 2 + movs r5, 0xD + negs r5, r5 + ands r5, r4 + orrs r5, r0 + strb r5, [r7, 0x7] + ldrb r4, [r6, 0x6] + mov r6, r8 + ands r4, r6 + lsls r4, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r5 + orrs r0, r4 + strb r0, [r7, 0x7] + mov r5, sp + mov r6, r9 + ldrb r4, [r6, 0x7] + lsls r4, 6 + movs r6, 0x3F + ands r0, r6 + orrs r0, r4 + strb r0, [r5, 0x7] + mov r8, sp + mov r0, r9 + ldrb r4, [r0, 0x8] + movs r7, 0x3 + adds r0, r7, 0 + ands r0, r4 + mov r4, r8 + ldrb r5, [r4, 0x8] + mov r4, r10 + ands r4, r5 + orrs r4, r0 + mov r5, r8 + strb r4, [r5, 0x8] + mov r6, r9 + ldrb r5, [r6, 0x9] + adds r0, r7, 0 + ands r0, r5 + lsls r0, 2 + movs r5, 0xD + negs r5, r5 + ands r5, r4 + orrs r5, r0 + mov r0, r8 + strb r5, [r0, 0x8] + ldrb r0, [r1] + adds r4, r7, 0 + ands r4, r0 + lsls r4, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r5 + orrs r0, r4 + mov r4, r8 + strb r0, [r4, 0x8] + mov r5, sp + ldrb r4, [r2] + lsls r4, 6 + movs r6, 0x3F + ands r0, r6 + orrs r0, r4 + strb r0, [r5, 0x8] + ldrb r4, [r3] + adds r0, r7, 0 + ands r0, r4 + ldrb r4, [r5, 0x9] + mov r6, r10 + ands r6, r4 + orrs r6, r0 + mov r10, r6 + strb r6, [r5, 0x9] + ldr r0, [sp, 0x40] + ldrb r4, [r0] + adds r0, r7, 0 + ands r0, r4 + lsls r0, 2 + movs r4, 0xD + negs r4, r4 + ands r6, r4 + orrs r6, r0 + str r6, [sp, 0x10] + strb r6, [r5, 0x9] + mov r4, sp + ldr r5, [sp, 0x44] + ldrb r0, [r5] + adds r6, r7, 0 + ands r6, r0 + lsls r0, r6, 4 + subs r7, 0x34 + ldr r5, [sp, 0x10] + ands r7, r5 + orrs r7, r0 + strb r7, [r4, 0x9] + mov r5, sp + ldrb r0, [r1, 0x4] + movs r6, 0x1 + mov r12, r6 + mov r4, r12 + ands r4, r0 + lsls r4, 6 + movs r0, 0x41 + negs r0, r0 + mov r10, r0 + ands r0, r7 + orrs r0, r4 + strb r0, [r5, 0x9] + ldrb r4, [r2, 0x4] + lsls r4, 7 + movs r5, 0x7F + ands r0, r5 + orrs r0, r4 + mov r4, r8 + strb r0, [r4, 0x9] + ldrb r4, [r3, 0x4] + mov r0, r12 + ands r0, r4 + mov r5, r8 + ldrb r4, [r5, 0xA] + movs r7, 0x2 + negs r7, r7 + adds r5, r7, 0 + ands r5, r4 + orrs r5, r0 + mov r6, r8 + strb r5, [r6, 0xA] + mov r9, sp + ldr r4, [sp, 0x40] + ldrb r0, [r4, 0x4] + mov r4, r12 + ands r4, r0 + lsls r4, 1 + movs r6, 0x3 + negs r6, r6 + mov r8, r6 + mov r0, r8 + ands r0, r5 + orrs r0, r4 + mov r4, r9 + strb r0, [r4, 0xA] + ldr r6, [sp, 0x44] + ldrb r5, [r6, 0x4] + mov r4, r12 + ands r4, r5 + lsls r4, 2 + movs r5, 0x5 + negs r5, r5 + ands r0, r5 + orrs r0, r4 + mov r4, r9 + strb r0, [r4, 0xA] + mov r4, sp + ldrb r1, [r1, 0x8] + mov r0, r12 + ands r0, r1 + lsls r0, 2 + ldrb r1, [r4, 0xB] + ands r5, r1 + orrs r5, r0 + strb r5, [r4, 0xB] + ldrb r1, [r2, 0x8] + mov r0, r12 + ands r0, r1 + lsls r0, 3 + movs r1, 0x9 + negs r1, r1 + ands r1, r5 + orrs r1, r0 + strb r1, [r4, 0xB] + ldrb r2, [r3, 0x8] + mov r0, r12 + ands r0, r2 + lsls r0, 4 + movs r2, 0x11 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, 0xB] + mov r3, sp + ldr r5, [sp, 0x40] + ldrb r0, [r5, 0x8] + mov r1, r12 + ands r1, r0 + lsls r1, 5 + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0xB] + mov r2, sp + ldrb r1, [r6, 0x8] + mov r6, r12 + ands r6, r1 + lsls r1, r6, 6 + mov r3, r10 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0xB] + ldr r4, [sp, 0x1C] + lsrs r3, r4, 21 + ldrb r1, [r2, 0xA] + movs r0, 0x7 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, 0xA] + mov r1, sp + ldr r5, [sp, 0x4C] + movs r6, 0x1 + ands r5, r6 + lsls r2, r5, 1 + ldrb r0, [r1, 0xB] + mov r3, r8 + ands r3, r0 + orrs r3, r2 + mov r8, r3 + strb r3, [r1, 0xB] + mov r0, sp + ldr r4, [sp, 0x50] + ands r4, r6 + mov r5, r8 + ands r5, r7 + orrs r5, r4 + strb r5, [r0, 0xB] + bl sub_80F9E2C + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815A61C + + thumb_func_start sub_815A950 +sub_815A950: @ 815A950 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r0, [sp, 0x1C] + mov r12, r0 + ldr r1, [sp, 0x20] + mov r8, r1 + ldr r0, [sp, 0x24] + mov r9, r0 + adds r2, r7, 0 + adds r2, 0x14 + ldr r4, _0815A98C @ =gUnknown_3003ED0 + ldrh r0, [r4] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815A988 + adds r3, r4, 0x2 + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + beq _0815A990 +_0815A988: + movs r0, 0 + b _0815AACA + .align 2, 0 +_0815A98C: .4byte gUnknown_3003ED0 +_0815A990: + ldrb r0, [r3, 0x1] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0xB] + ldrb r0, [r3, 0x1] + lsrs r0, 4 + strb r0, [r2, 0xC] + ldrb r0, [r3, 0x2] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0xD] + ldrb r0, [r3, 0x2] + lsrs r0, 4 + strb r0, [r2, 0xE] + ldrb r0, [r3, 0x3] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0xF] + ldrb r0, [r3, 0x3] + lsrs r0, 4 + strb r0, [r2, 0x10] + ldrb r0, [r3, 0x4] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0x11] + ldrb r0, [r3, 0x4] + lsrs r0, 4 + strb r0, [r2, 0x12] + ldrb r0, [r3, 0x5] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0x13] + ldrb r0, [r3, 0x5] + lsrs r0, 4 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0x15] + ldrb r0, [r3, 0x6] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r7, 0x14] + ldrb r0, [r3, 0x6] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r2, 0x1] + ldrb r0, [r3, 0x6] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r2, 0x2] + ldrb r0, [r3, 0x6] + lsrs r0, 6 + strb r0, [r2, 0x3] + ldrb r0, [r3, 0x7] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r2, 0x4] + ldrb r0, [r3, 0x7] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r2, 0x5] + ldrb r0, [r3, 0x7] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r2, 0x6] + ldrb r0, [r3, 0x7] + lsrs r0, 6 + strb r0, [r2, 0x7] + ldrb r0, [r3, 0x8] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r2, 0x8] + ldrb r0, [r3, 0x8] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r2, 0x9] + ldrb r0, [r3, 0x6] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r2, 0xA] + ldrb r0, [r3, 0x8] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r5] + ldrb r0, [r3, 0x9] + lsls r0, 25 + lsrs r0, 31 + strb r0, [r5, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 29 + lsrs r0, 31 + strb r0, [r5, 0x8] + ldrb r0, [r3, 0x8] + lsrs r0, 6 + strb r0, [r6] + ldrb r0, [r3, 0x9] + lsrs r0, 7 + strb r0, [r6, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 28 + lsrs r0, 31 + strb r0, [r6, 0x8] + ldrb r0, [r3, 0x9] + lsls r0, 30 + lsrs r0, 30 + mov r1, r12 + strb r0, [r1] + ldrb r0, [r3, 0xA] + lsls r0, 31 + lsrs r0, 31 + strb r0, [r1, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 27 + lsrs r0, 31 + strb r0, [r1, 0x8] + ldrb r0, [r3, 0x9] + lsls r0, 28 + lsrs r0, 30 + mov r1, r8 + strb r0, [r1] + ldrb r0, [r3, 0xA] + lsls r0, 30 + lsrs r0, 31 + strb r0, [r1, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 26 + lsrs r0, 31 + strb r0, [r1, 0x8] + ldrb r0, [r3, 0x9] + lsls r0, 26 + lsrs r0, 30 + mov r1, r9 + strb r0, [r1] + ldrb r0, [r3, 0xA] + lsls r0, 29 + lsrs r0, 31 + strb r0, [r1, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 25 + lsrs r0, 31 + strb r0, [r1, 0x8] + ldrb r0, [r3, 0xA] + lsrs r0, 3 + ldr r1, [sp, 0x28] + strb r0, [r1] + ldrb r0, [r3, 0xB] + lsls r0, 30 + lsrs r0, 31 + ldr r1, [sp, 0x2C] + str r0, [r1] + ldrb r0, [r3, 0xB] + lsls r0, 31 + lsrs r0, 31 + ldr r1, [sp, 0x30] + str r0, [r1] + movs r0, 0x1 +_0815AACA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_815A950 + + thumb_func_start sub_815AAD8 +sub_815AAD8: @ 815AAD8 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0815AB00 @ =0xffffff00 + ldr r1, [sp] + ands r1, r3 + movs r2, 0x3 + orrs r1, r2 + str r1, [sp] + ldr r1, [sp, 0x4] + ands r1, r3 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0815AB00: .4byte 0xffffff00 + thumb_func_end sub_815AAD8 + + thumb_func_start sub_815AB04 +sub_815AB04: @ 815AB04 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + ldr r3, _0815AB2C @ =gUnknown_3003ED0 + ldrh r0, [r3] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815AB28 + lsls r0, r2, 4 + adds r1, r3, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x3 + beq _0815AB30 +_0815AB28: + movs r0, 0 + b _0815AB36 + .align 2, 0 +_0815AB2C: .4byte gUnknown_3003ED0 +_0815AB30: + ldrb r0, [r1, 0x4] + strb r0, [r4] + movs r0, 0x1 +_0815AB36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_815AB04 + + thumb_func_start sub_815AB3C +sub_815AB3C: @ 815AB3C + push {lr} + sub sp, 0x8 + ldr r2, _0815AB5C @ =0xffffff00 + ldr r1, [sp] + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + str r1, [sp] + str r0, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0815AB5C: .4byte 0xffffff00 + thumb_func_end sub_815AB3C + + thumb_func_start sub_815AB60 +sub_815AB60: @ 815AB60 + push {lr} + adds r2, r0, 0 + ldr r3, _0815AB88 @ =gUnknown_3003ED0 + ldrh r0, [r3] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815AB82 + lsls r0, r2, 4 + adds r1, r3, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x4 + beq _0815AB8C +_0815AB82: + movs r0, 0 + b _0815AB8E + .align 2, 0 +_0815AB88: .4byte gUnknown_3003ED0 +_0815AB8C: + ldr r0, [r1, 0x4] +_0815AB8E: + pop {r1} + bx r1 + thumb_func_end sub_815AB60 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815C27C.s b/asm/unk_815C27C.s new file mode 100644 index 000000000..067ab8659 --- /dev/null +++ b/asm/unk_815C27C.s @@ -0,0 +1,920 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815C27C +sub_815C27C: @ 815C27C + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + bl sub_815C8C8 + movs r7, 0x2 + ldr r4, _0815C2BC @ =gUnknown_3003F84 +_0815C28C: + bl sub_815C898 + ldr r0, _0815C2C0 @ =gUnknown_3002062 + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0815C29E + strb r7, [r4] +_0815C29E: + movs r0, 0x1 + adds r1, r6, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_815C498 + adds r1, r0, 0 + ldr r0, _0815C2C4 @ =gUnknown_3002064 + strh r1, [r0] + movs r0, 0x13 + ands r0, r1 + cmp r0, 0x10 + bne _0815C2C8 + movs r4, 0 + b _0815C2EA + .align 2, 0 +_0815C2BC: .4byte gUnknown_3003F84 +_0815C2C0: .4byte gUnknown_3002062 +_0815C2C4: .4byte gUnknown_3002064 +_0815C2C8: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0815C2D4 + movs r4, 0x1 + b _0815C2EA +_0815C2D4: + movs r0, 0x4 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0815C2E8 + strb r0, [r4] + bl VBlankIntrWait + b _0815C28C +_0815C2E8: + movs r4, 0x2 +_0815C2EA: + movs r0, 0 + str r0, [sp] + ldr r1, _0815C308 @ =gUnknown_3002048 + ldr r2, _0815C30C @ =0x05000006 + mov r0, sp + bl CpuSet + bl sub_815C91C + adds r0, r4, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0815C308: .4byte gUnknown_3002048 +_0815C30C: .4byte 0x05000006 + thumb_func_end sub_815C27C + + thumb_func_start sub_815C310 +sub_815C310: @ 815C310 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_815C8C8 + movs r6, 0x2 + ldr r4, _0815C350 @ =gUnknown_3003F84 +_0815C31E: + bl sub_815C898 + ldr r0, _0815C354 @ =gUnknown_3002062 + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0815C330 + strb r6, [r4] +_0815C330: + movs r0, 0 + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_815C498 + adds r1, r0, 0 + ldr r0, _0815C358 @ =gUnknown_3002064 + strh r1, [r0] + movs r0, 0x13 + ands r0, r1 + cmp r0, 0x10 + bne _0815C35C + movs r4, 0 + b _0815C37E + .align 2, 0 +_0815C350: .4byte gUnknown_3003F84 +_0815C354: .4byte gUnknown_3002062 +_0815C358: .4byte gUnknown_3002064 +_0815C35C: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0815C368 + movs r4, 0x1 + b _0815C37E +_0815C368: + movs r0, 0x4 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0815C37C + strb r0, [r4] + bl VBlankIntrWait + b _0815C31E +_0815C37C: + movs r4, 0x2 +_0815C37E: + movs r0, 0 + str r0, [sp] + ldr r1, _0815C39C @ =gUnknown_3002048 + ldr r2, _0815C3A0 @ =0x05000006 + mov r0, sp + bl CpuSet + bl sub_815C91C + adds r0, r4, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0815C39C: .4byte gUnknown_3002048 +_0815C3A0: .4byte 0x05000006 + thumb_func_end sub_815C310 + + thumb_func_start sub_815C3A4 +sub_815C3A4: @ 815C3A4 + push {r4,lr} + ldr r4, _0815C3D0 @ =0x04000208 + movs r3, 0 + strh r3, [r4] + ldr r2, _0815C3D4 @ =0x04000200 + ldrh r1, [r2] + ldr r0, _0815C3D8 @ =0x0000ff3f + ands r0, r1 + strh r0, [r2] + movs r0, 0x1 + strh r0, [r4] + ldr r0, _0815C3DC @ =0x04000128 + strh r3, [r0] + subs r0, 0x1A + strh r3, [r0] + ldr r1, _0815C3E0 @ =0x04000202 + movs r0, 0xC0 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815C3D0: .4byte 0x04000208 +_0815C3D4: .4byte 0x04000200 +_0815C3D8: .4byte 0x0000ff3f +_0815C3DC: .4byte 0x04000128 +_0815C3E0: .4byte 0x04000202 + thumb_func_end sub_815C3A4 + + thumb_func_start sub_815C3E4 +sub_815C3E4: @ 815C3E4 + push {r4-r7,lr} + sub sp, 0x4 + ldr r5, _0815C43C @ =0x04000208 + movs r4, 0 + strh r4, [r5] + ldr r3, _0815C440 @ =0x04000200 + ldrh r1, [r3] + ldr r0, _0815C444 @ =0x0000ff3f + ands r0, r1 + strh r0, [r3] + movs r6, 0x1 + strh r6, [r5] + ldr r0, _0815C448 @ =0x04000134 + strh r4, [r0] + ldr r2, _0815C44C @ =0x04000128 + movs r1, 0x80 + lsls r1, 6 + adds r0, r1, 0 + strh r0, [r2] + ldrh r0, [r2] + ldr r7, _0815C450 @ =0x00004003 + adds r1, r7, 0 + orrs r0, r1 + strh r0, [r2] + strh r4, [r5] + ldrh r0, [r3] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r3] + strh r6, [r5] + ldr r1, _0815C454 @ =gUnknown_3002048 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0815C432 + str r0, [sp] + ldr r2, _0815C458 @ =0x05000006 + mov r0, sp + bl CpuSet +_0815C432: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815C43C: .4byte 0x04000208 +_0815C440: .4byte 0x04000200 +_0815C444: .4byte 0x0000ff3f +_0815C448: .4byte 0x04000134 +_0815C44C: .4byte 0x04000128 +_0815C450: .4byte 0x00004003 +_0815C454: .4byte gUnknown_3002048 +_0815C458: .4byte 0x05000006 + thumb_func_end sub_815C3E4 + + thumb_func_start sub_815C45C +sub_815C45C: @ 815C45C + ldr r0, _0815C484 @ =0x04000134 + movs r3, 0 + strh r3, [r0] + ldr r2, _0815C488 @ =0x04000128 + movs r1, 0xA0 + lsls r1, 7 + adds r0, r1, 0 + strh r0, [r2] + ldrh r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strh r0, [r2] + ldr r0, _0815C48C @ =gUnknown_3003F84 + strb r3, [r0] + ldr r0, _0815C490 @ =gUnknown_3002066 + strh r3, [r0] + ldr r1, _0815C494 @ =gUnknown_3002068 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_0815C484: .4byte 0x04000134 +_0815C488: .4byte 0x04000128 +_0815C48C: .4byte gUnknown_3003F84 +_0815C490: .4byte gUnknown_3002066 +_0815C494: .4byte gUnknown_3002068 + thumb_func_end sub_815C45C + + thumb_func_start sub_815C498 +sub_815C498: @ 815C498 + push {r4-r6,lr} + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0815C4B8 @ =gUnknown_3002048 + ldrb r0, [r0, 0x1] + cmp r0, 0x6 + bls _0815C4AE + b _0815C5F4 +_0815C4AE: + lsls r0, 2 + ldr r1, _0815C4BC @ =_0815C4C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815C4B8: .4byte gUnknown_3002048 +_0815C4BC: .4byte _0815C4C0 + .align 2, 0 +_0815C4C0: + .4byte _0815C4DC + .4byte _0815C4F0 + .4byte _0815C510 + .4byte _0815C524 + .4byte _0815C59C + .4byte _0815C5AC + .4byte _0815C5E4 +_0815C4DC: + bl sub_815C3E4 + ldr r1, _0815C4EC @ =gUnknown_3002048 + movs r0, 0x1 + strb r0, [r1, 0x2] + strb r0, [r1, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C4EC: .4byte gUnknown_3002048 +_0815C4F0: + adds r0, r2, 0 + bl sub_815C610 + lsls r0, 16 + cmp r0, 0 + beq _0815C500 + bl sub_815C864 +_0815C500: + ldr r0, _0815C50C @ =gUnknown_3003F84 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0815C50A + b _0815C5F4 +_0815C50A: + b _0815C52C + .align 2, 0 +_0815C50C: .4byte gUnknown_3003F84 +_0815C510: + bl sub_815C45C + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_815C644 + ldr r1, _0815C538 @ =gUnknown_3002048 + movs r0, 0x3 + strb r0, [r1, 0x1] +_0815C524: + ldr r0, _0815C53C @ =gUnknown_3003F84 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0815C540 +_0815C52C: + ldr r1, _0815C538 @ =gUnknown_3002048 + strb r0, [r1, 0x4] + movs r0, 0x6 + strb r0, [r1, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C538: .4byte gUnknown_3002048 +_0815C53C: .4byte gUnknown_3003F84 +_0815C540: + ldr r2, _0815C580 @ =gUnknown_3002066 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + ldr r1, _0815C584 @ =gUnknown_3002068 + ldr r0, [r1] + adds r3, r0, 0x1 + str r3, [r1] + ldr r1, _0815C588 @ =gUnknown_3002048 + ldrb r0, [r1] + cmp r0, 0 + bne _0815C564 + cmp r3, 0x3C + bls _0815C564 + movs r0, 0x1 + strb r0, [r1, 0x4] + movs r0, 0x6 + strb r0, [r1, 0x1] +_0815C564: + ldr r4, _0815C588 @ =gUnknown_3002048 + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + beq _0815C5F4 + ldrb r0, [r4] + cmp r0, 0 + beq _0815C58C + ldrh r0, [r2] + cmp r0, 0x2 + bls _0815C58C + bl sub_815C864 + movs r0, 0x2 + b _0815C5F2 + .align 2, 0 +_0815C580: .4byte gUnknown_3002066 +_0815C584: .4byte gUnknown_3002068 +_0815C588: .4byte gUnknown_3002048 +_0815C58C: + bl sub_815C864 + ldr r1, _0815C598 @ =gUnknown_3002048 + movs r0, 0x2 + strb r0, [r1, 0x2] + b _0815C5F4 + .align 2, 0 +_0815C598: .4byte gUnknown_3002048 +_0815C59C: + bl sub_815C3E4 + ldr r1, _0815C5A8 @ =gUnknown_3002048 + movs r0, 0x5 + strb r0, [r1, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C5A8: .4byte gUnknown_3002048 +_0815C5AC: + ldr r0, _0815C5DC @ =gUnknown_3002048 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0815C5C0 + ldr r0, _0815C5E0 @ =gUnknown_3002066 + ldrh r0, [r0] + cmp r0, 0x2 + bls _0815C5C0 + bl sub_815C864 +_0815C5C0: + ldr r1, _0815C5E0 @ =gUnknown_3002066 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3C + bls _0815C5F4 + ldr r0, _0815C5DC @ =gUnknown_3002048 + movs r1, 0x1 + strb r1, [r0, 0x4] + movs r1, 0x6 + strb r1, [r0, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C5DC: .4byte gUnknown_3002048 +_0815C5E0: .4byte gUnknown_3002066 +_0815C5E4: + ldr r4, _0815C60C @ =gUnknown_3002048 + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _0815C5F4 + bl sub_815C3A4 + movs r0, 0 +_0815C5F2: + strb r0, [r4, 0x2] +_0815C5F4: + ldr r2, _0815C60C @ =gUnknown_3002048 + ldrb r0, [r2, 0x2] + ldrb r1, [r2, 0x4] + lsls r1, 2 + orrs r0, r1 + ldrb r1, [r2, 0x3] + lsls r1, 4 + orrs r0, r1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0815C60C: .4byte gUnknown_3002048 + thumb_func_end sub_815C498 + + thumb_func_start sub_815C610 +sub_815C610: @ 815C610 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0815C62C @ =0x04000128 + ldr r0, [r0] + movs r1, 0xC + ands r0, r1 + cmp r0, 0x8 + bne _0815C634 + cmp r2, 0 + beq _0815C634 + ldr r1, _0815C630 @ =gUnknown_3002048 + movs r0, 0x1 + b _0815C638 + .align 2, 0 +_0815C62C: .4byte 0x04000128 +_0815C630: .4byte gUnknown_3002048 +_0815C634: + ldr r1, _0815C640 @ =gUnknown_3002048 + movs r0, 0 +_0815C638: + strb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0815C640: .4byte gUnknown_3002048 + thumb_func_end sub_815C610 + + thumb_func_start sub_815C644 +sub_815C644: @ 815C644 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r3, _0815C670 @ =gUnknown_3002048 + ldrb r0, [r3] + cmp r0, 0 + beq _0815C67C + ldr r2, _0815C674 @ =0x04000128 + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + str r5, [r3, 0x8] + ldr r0, _0815C678 @ =0x04000120 + str r4, [r0] + lsrs r0, r4, 2 + adds r0, 0x1 + str r0, [r3, 0x10] + bl sub_815C690 + b _0815C684 + .align 2, 0 +_0815C670: .4byte gUnknown_3002048 +_0815C674: .4byte 0x04000128 +_0815C678: .4byte 0x04000120 +_0815C67C: + ldr r1, _0815C68C @ =0x04000128 + ldrh r0, [r1] + strh r0, [r1] + str r2, [r3, 0x8] +_0815C684: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815C68C: .4byte 0x04000128 + thumb_func_end sub_815C644 + + thumb_func_start sub_815C690 +sub_815C690: @ 815C690 + ldr r1, _0815C6B4 @ =0x0400010c + ldr r2, _0815C6B8 @ =0x0000fda7 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0815C6BC @ =0x0400010e + movs r2, 0x40 + strh r2, [r0] + ldr r3, _0815C6C0 @ =0x04000208 + movs r0, 0 + strh r0, [r3] + adds r1, 0xF4 + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + movs r0, 0x1 + strh r0, [r3] + bx lr + .align 2, 0 +_0815C6B4: .4byte 0x0400010c +_0815C6B8: .4byte 0x0000fda7 +_0815C6BC: .4byte 0x0400010e +_0815C6C0: .4byte 0x04000208 + thumb_func_end sub_815C690 + + thumb_func_start sub_815C6C4 +sub_815C6C4: @ 815C6C4 + push {lr} + bl sub_815C874 + bl sub_815C864 + pop {r0} + bx r0 + thumb_func_end sub_815C6C4 + + thumb_func_start sub_815C6D4 +sub_815C6D4: @ 815C6D4 + push {r4-r6,lr} + sub sp, 0x8 + ldr r2, _0815C6EC @ =gUnknown_3002048 + ldrb r0, [r2, 0x1] + adds r3, r2, 0 + cmp r0, 0x3 + beq _0815C75C + cmp r0, 0x3 + bgt _0815C6F0 + cmp r0, 0x1 + beq _0815C6F8 + b _0815C852 + .align 2, 0 +_0815C6EC: .4byte gUnknown_3002048 +_0815C6F0: + cmp r0, 0x5 + bne _0815C6F6 + b _0815C824 +_0815C6F6: + b _0815C852 +_0815C6F8: + ldr r1, _0815C728 @ =0x0400012a + ldr r2, _0815C72C @ =0x0000ccd0 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0815C730 @ =0x04000120 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + movs r1, 0 + movs r2, 0 + movs r4, 0 + ldr r6, _0815C72C @ =0x0000ccd0 + ldr r5, _0815C734 @ =0x0000ffff +_0815C714: + lsls r0, r1, 1 + add r0, sp + ldrh r0, [r0] + cmp r0, r6 + bne _0815C738 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + b _0815C742 + .align 2, 0 +_0815C728: .4byte 0x0400012a +_0815C72C: .4byte 0x0000ccd0 +_0815C730: .4byte 0x04000120 +_0815C734: .4byte 0x0000ffff +_0815C738: + cmp r0, r5 + beq _0815C742 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_0815C742: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x3 + bls _0815C714 + cmp r2, 0x2 + beq _0815C752 + b _0815C852 +_0815C752: + cmp r4, 0 + beq _0815C758 + b _0815C852 +_0815C758: + strb r2, [r3, 0x1] + b _0815C852 +_0815C75C: + ldr r0, _0815C798 @ =0x04000120 + ldr r4, [r0] + ldr r0, [r2, 0xC] + cmp r0, 0 + bne _0815C772 + ldrb r0, [r2] + cmp r0, 0 + bne _0815C772 + lsrs r0, r4, 2 + adds r0, 0x1 + str r0, [r2, 0x10] +_0815C772: + ldrb r0, [r3] + cmp r0, 0x1 + bne _0815C7A8 + ldr r1, [r3, 0xC] + ldr r0, [r3, 0x10] + cmp r1, r0 + bge _0815C79C + ldr r2, _0815C798 @ =0x04000120 + ldr r0, [r3, 0x8] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + ldr r0, [r3, 0x14] + ldr r1, [r1] + adds r0, r1 + str r0, [r3, 0x14] + b _0815C7E2 + .align 2, 0 +_0815C798: .4byte 0x04000120 +_0815C79C: + ldr r1, _0815C7A4 @ =0x04000120 + ldr r0, [r3, 0x14] + b _0815C7E0 + .align 2, 0 +_0815C7A4: .4byte 0x04000120 +_0815C7A8: + ldr r1, [r3, 0xC] + cmp r1, 0 + ble _0815C7C8 + ldr r0, [r3, 0x10] + adds r0, 0x1 + cmp r1, r0 + bge _0815C7C8 + ldr r0, [r3, 0x8] + lsls r1, 2 + adds r1, r0 + subs r1, 0x4 + str r4, [r1] + ldr r0, [r3, 0x14] + adds r0, r4 + str r0, [r3, 0x14] + b _0815C7DC +_0815C7C8: + ldr r0, [r3, 0xC] + cmp r0, 0 + beq _0815C7DC + ldr r0, [r3, 0x14] + cmp r0, r4 + bne _0815C7D8 + movs r0, 0x1 + b _0815C7DA +_0815C7D8: + movs r0, 0x2 +_0815C7DA: + strb r0, [r3, 0x3] +_0815C7DC: + ldr r1, _0815C804 @ =gUnknown_3002068 + movs r0, 0 +_0815C7E0: + str r0, [r1] +_0815C7E2: + ldr r1, [r3, 0xC] + adds r1, 0x1 + str r1, [r3, 0xC] + ldr r0, [r3, 0x10] + adds r0, 0x2 + cmp r1, r0 + bge _0815C812 + ldrb r0, [r3] + cmp r0, 0 + beq _0815C80C + ldr r0, _0815C808 @ =0x0400010e + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] + b _0815C852 + .align 2, 0 +_0815C804: .4byte gUnknown_3002068 +_0815C808: .4byte 0x0400010e +_0815C80C: + bl sub_815C864 + b _0815C852 +_0815C812: + movs r0, 0 + movs r1, 0x4 + strb r1, [r3, 0x1] + ldr r1, _0815C820 @ =gUnknown_3002066 + strh r0, [r1] + b _0815C852 + .align 2, 0 +_0815C820: .4byte gUnknown_3002066 +_0815C824: + ldrb r3, [r2] + cmp r3, 0 + bne _0815C830 + ldr r1, _0815C85C @ =0x0400012a + ldrb r0, [r2, 0x3] + strh r0, [r1] +_0815C830: + ldr r0, _0815C860 @ =0x04000120 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r1, [r0, 0x2] + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0815C852 + cmp r3, 0x1 + bne _0815C84E + strb r1, [r2, 0x3] +_0815C84E: + movs r0, 0x6 + strb r0, [r2, 0x1] +_0815C852: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815C85C: .4byte 0x0400012a +_0815C860: .4byte 0x04000120 + thumb_func_end sub_815C6D4 + + thumb_func_start sub_815C864 +sub_815C864: @ 815C864 + ldr r0, _0815C870 @ =0x04000128 + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_0815C870: .4byte 0x04000128 + thumb_func_end sub_815C864 + + thumb_func_start sub_815C874 +sub_815C874: @ 815C874 + ldr r2, _0815C888 @ =0x0400010e + ldrh r1, [r2] + ldr r0, _0815C88C @ =0x0000ff7f + ands r0, r1 + strh r0, [r2] + ldr r1, _0815C890 @ =0x0400010c + ldr r2, _0815C894 @ =0x0000fda7 + adds r0, r2, 0 + strh r0, [r1] + bx lr + .align 2, 0 +_0815C888: .4byte 0x0400010e +_0815C88C: .4byte 0x0000ff7f +_0815C890: .4byte 0x0400010c +_0815C894: .4byte 0x0000fda7 + thumb_func_end sub_815C874 + + thumb_func_start sub_815C898 +sub_815C898: @ 815C898 + push {r4,lr} + ldr r0, _0815C8B8 @ =0x04000130 + ldrh r0, [r0] + ldr r2, _0815C8BC @ =0x000003ff + adds r1, r2, 0 + eors r1, r0 + ldr r4, _0815C8C0 @ =gUnknown_3002062 + ldr r3, _0815C8C4 @ =gUnknown_3002060 + ldrh r2, [r3] + adds r0, r1, 0 + bics r0, r2 + strh r0, [r4] + strh r1, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815C8B8: .4byte 0x04000130 +_0815C8BC: .4byte 0x000003ff +_0815C8C0: .4byte gUnknown_3002062 +_0815C8C4: .4byte gUnknown_3002060 + thumb_func_end sub_815C898 + + thumb_func_start sub_815C8C8 +sub_815C8C8: @ 815C8C8 + ldr r1, _0815C8F4 @ =gUnknown_300206C + ldr r0, _0815C8F8 @ =0x04000208 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C8FC @ =gUnknown_300206E + ldr r0, _0815C900 @ =0x04000200 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C904 @ =gUnknown_3002070 + ldr r0, _0815C908 @ =0x0400010e + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C90C @ =gUnknown_3002072 + ldr r0, _0815C910 @ =0x04000128 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C914 @ =gUnknown_3002074 + ldr r0, _0815C918 @ =0x04000134 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_0815C8F4: .4byte gUnknown_300206C +_0815C8F8: .4byte 0x04000208 +_0815C8FC: .4byte gUnknown_300206E +_0815C900: .4byte 0x04000200 +_0815C904: .4byte gUnknown_3002070 +_0815C908: .4byte 0x0400010e +_0815C90C: .4byte gUnknown_3002072 +_0815C910: .4byte 0x04000128 +_0815C914: .4byte gUnknown_3002074 +_0815C918: .4byte 0x04000134 + thumb_func_end sub_815C8C8 + + thumb_func_start sub_815C91C +sub_815C91C: @ 815C91C + ldr r1, _0815C948 @ =0x04000208 + ldr r0, _0815C94C @ =gUnknown_300206C + ldrh r0, [r0] + strh r0, [r1] + subs r1, 0x8 + ldr r0, _0815C950 @ =gUnknown_300206E + ldrh r0, [r0] + strh r0, [r1] + subs r1, 0xF2 + ldr r0, _0815C954 @ =gUnknown_3002070 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x1A + ldr r0, _0815C958 @ =gUnknown_3002072 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0xC + ldr r0, _0815C95C @ =gUnknown_3002074 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_0815C948: .4byte 0x04000208 +_0815C94C: .4byte gUnknown_300206C +_0815C950: .4byte gUnknown_300206E +_0815C954: .4byte gUnknown_3002070 +_0815C958: .4byte gUnknown_3002072 +_0815C95C: .4byte gUnknown_3002074 + thumb_func_end sub_815C91C + + thumb_func_start sub_815C960 +sub_815C960: @ 815C960 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r1, _0815C978 @ =gUnknown_3002048 + ldr r2, _0815C97C @ =0x05000006 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0815C978: .4byte gUnknown_3002048 +_0815C97C: .4byte 0x05000006 + thumb_func_end sub_815C960 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815C980.s b/asm/unk_815C980.s new file mode 100644 index 000000000..260f3ec46 --- /dev/null +++ b/asm/unk_815C980.s @@ -0,0 +1,1314 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815C980 +sub_815C980: @ 815C980 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r5, _0815C9A0 @ =gUnknown_203F454 + ldr r0, [r5] + cmp r0, 0 + beq _0815C990 + bl sub_815C9F4 +_0815C990: + movs r0, 0x8 + bl sub_8002B9C + str r0, [r5] + cmp r0, 0 + bne _0815C9A4 + movs r0, 0 + b _0815C9EC + .align 2, 0 +_0815C9A0: .4byte gUnknown_203F454 +_0815C9A4: + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + bl sub_8002B9C + ldr r1, [r5] + str r0, [r1, 0x4] + cmp r0, 0 + bne _0815C9C0 + adds r0, r1, 0 + bl sub_8002BC4 + movs r0, 0 + b _0815C9EC +_0815C9C0: + str r4, [r1] + movs r3, 0 + cmp r3, r4 + bcs _0815C9EA + movs r7, 0 + movs r6, 0xFF + movs r2, 0 +_0815C9CE: + ldr r0, [r5] + ldr r0, [r0, 0x4] + adds r0, r2, r0 + strb r7, [r0] + ldr r0, [r5] + ldr r1, [r0, 0x4] + adds r1, r2, r1 + ldrb r0, [r1, 0x1] + orrs r0, r6 + strb r0, [r1, 0x1] + adds r2, 0x1C + adds r3, 0x1 + cmp r3, r4 + bcc _0815C9CE +_0815C9EA: + movs r0, 0x1 +_0815C9EC: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_815C980 + + thumb_func_start sub_815C9F4 +sub_815C9F4: @ 815C9F4 + push {r4,r5,lr} + ldr r2, _0815CA3C @ =gUnknown_203F454 + ldr r1, [r2] + cmp r1, 0 + beq _0815CA34 + ldr r0, [r1, 0x4] + cmp r0, 0 + beq _0815CA28 + movs r4, 0 + ldr r0, [r1] + cmp r4, r0 + bcs _0815CA1E + adds r5, r2, 0 +_0815CA0E: + adds r0, r4, 0 + bl sub_815D108 + adds r4, 0x1 + ldr r0, [r5] + ldr r0, [r0] + cmp r4, r0 + bcc _0815CA0E +_0815CA1E: + ldr r0, _0815CA3C @ =gUnknown_203F454 + ldr r0, [r0] + ldr r0, [r0, 0x4] + bl sub_8002BC4 +_0815CA28: + ldr r4, _0815CA3C @ =gUnknown_203F454 + ldr r0, [r4] + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_0815CA34: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815CA3C: .4byte gUnknown_203F454 + thumb_func_end sub_815C9F4 + + thumb_func_start sub_815CA40 +sub_815CA40: @ 815CA40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r8, r0 + mov r10, r1 + adds r5, r2, 0 + ldr r6, _0815CAB8 @ =gUnknown_203F454 + ldr r0, [r6] + cmp r0, 0 + beq _0815CB00 + ldr r1, [r0, 0x4] + mov r0, r8 + lsls r2, r0, 3 + subs r0, r2, r0 + lsls r4, r0, 2 + adds r1, r4, r1 + ldrb r0, [r1] + mov r9, r2 + cmp r0, 0 + bne _0815CB00 + ldrb r0, [r5, 0x1] + bl sub_815D244 + ldr r1, [r6] + ldr r1, [r1, 0x4] + adds r1, r4, r1 + strb r0, [r1, 0x1] + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r0, r4, r0 + ldrb r0, [r0, 0x1] + cmp r0, 0xFF + beq _0815CB00 + ldr r0, [r5, 0x8] + ldrh r0, [r0, 0x6] + bl sub_8008804 + ldr r2, [r6] + ldr r1, [r2, 0x4] + adds r1, r4, r1 + strh r0, [r1, 0xA] + ldr r0, [r2, 0x4] + adds r0, r4, r0 + ldrh r1, [r0, 0xA] + ldr r7, _0815CABC @ =0xffff0000 + lsrs r0, r7, 16 + cmp r1, r0 + bne _0815CB0C + ldr r2, [r5, 0x8] + ldrh r0, [r2, 0x4] + adds r1, r2, 0 + cmp r0, 0 + beq _0815CAC0 + adds r0, r1, 0 + bl sub_80086DC + b _0815CAE0 + .align 2, 0 +_0815CAB8: .4byte gUnknown_203F454 +_0815CABC: .4byte 0xffff0000 +_0815CAC0: + ldr r0, [r2] + ldr r1, [r2, 0x4] + str r0, [sp] + str r1, [sp, 0x4] + ldr r0, [r2] + bl sub_800F0C4 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp, 0x4] + ands r1, r7 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_800EBCC +_0815CAE0: + ldr r1, [r6] + ldr r1, [r1, 0x4] + adds r1, r4, r1 + strh r0, [r1, 0xA] + ldr r0, _0815CB04 @ =gUnknown_203F454 + ldr r0, [r0] + ldr r1, [r0, 0x4] + mov r2, r9 + mov r3, r8 + subs r0, r2, r3 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0, 0xA] + ldr r0, _0815CB08 @ =0x0000ffff + cmp r1, r0 + bne _0815CB0C +_0815CB00: + movs r0, 0 + b _0815CC14 + .align 2, 0 +_0815CB04: .4byte gUnknown_203F454 +_0815CB08: .4byte 0x0000ffff +_0815CB0C: + ldr r0, [r5, 0xC] + ldrh r0, [r0, 0x4] + bl sub_80089E8 + ldr r6, _0815CC24 @ =gUnknown_203F454 + ldr r1, [r6] + ldr r1, [r1, 0x4] + mov r4, r9 + mov r3, r8 + subs r2, r4, r3 + lsls r4, r2, 2 + adds r1, r4, r1 + strb r0, [r1, 0x4] + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r0, r4, r0 + ldrb r0, [r0, 0x4] + cmp r0, 0xFF + bne _0815CB40 + ldr r0, [r5, 0xC] + bl sub_8008928 + ldr r1, [r6] + ldr r1, [r1, 0x4] + adds r1, r4, r1 + strb r0, [r1, 0x4] +_0815CB40: + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r4, r1 + ldrb r0, [r5] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r1, 0x2] + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r0, r4, r0 + ldrb r1, [r5, 0x1] + strb r1, [r0, 0x3] + ldr r2, [r6] + ldr r0, [r2, 0x4] + adds r0, r4, r0 + ldrh r1, [r5, 0x4] + strh r1, [r0, 0xC] + ldr r0, [r2, 0x4] + adds r0, r4, r0 + ldrh r1, [r5, 0x6] + strh r1, [r0, 0xE] + ldr r1, [r2, 0x4] + adds r1, r4, r1 + ldrb r0, [r5] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r1, 0x6] + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r4, r1 + ldrb r0, [r5] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r1, 0x5] + ldr r0, [r6] + ldr r1, [r0, 0x4] + adds r1, r4, r1 + ldrb r0, [r5] + lsrs r0, 6 + strb r0, [r1, 0x7] + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r0, r4, r0 + ldrb r1, [r5, 0x2] + strb r1, [r0, 0x8] + ldrb r1, [r5] + lsls r0, r1, 28 + lsrs r0, 30 + lsls r1, 26 + lsrs r1, 30 + bl sub_815D324 + ldr r1, [r6] + ldr r1, [r1, 0x4] + adds r1, r4, r1 + strb r0, [r1, 0x9] + ldr r2, [r6] + ldr r0, [r2, 0x4] + adds r0, r4, r0 + ldr r1, [r5, 0x8] + ldrh r1, [r1, 0x6] + strh r1, [r0, 0x10] + ldr r0, [r2, 0x4] + adds r0, r4, r0 + ldr r1, [r5, 0xC] + ldrh r1, [r1, 0x4] + strh r1, [r0, 0x12] + ldr r0, [r2, 0x4] + adds r0, r4, r0 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r0, r4, r0 + str r1, [r0, 0x14] + movs r3, 0x1 + ldrb r0, [r5, 0x1] + cmp r3, r0 + bcs _0815CBF6 +_0815CBDE: + ldr r0, [r6] + ldr r2, [r0, 0x4] + adds r2, r4, r2 + ldr r1, [r2, 0x14] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + str r0, [r2, 0x14] + adds r3, 0x1 + ldrb r2, [r5, 0x1] + cmp r3, r2 + bcc _0815CBDE +_0815CBF6: + ldr r0, _0815CC24 @ =gUnknown_203F454 + ldr r0, [r0] + mov r3, r9 + mov r4, r8 + subs r1, r3, r4 + lsls r1, 2 + ldr r0, [r0, 0x4] + adds r0, r1 + bl sub_815CC28 + mov r0, r8 + mov r1, r10 + bl sub_815CD70 + movs r0, 0x1 +_0815CC14: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0815CC24: .4byte gUnknown_203F454 + thumb_func_end sub_815CA40 + + thumb_func_start sub_815CC28 +sub_815CC28: @ 815CC28 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + ldrb r5, [r4, 0x1] + movs r0, 0xC + ldrsh r7, [r4, r0] + ldrb r0, [r4, 0x3] + adds r0, 0x1 + mov r8, r0 + mov r1, sp + movs r0, 0 + strh r0, [r1] + lsls r1, r5, 3 + ldr r2, _0815CD58 @ =gUnknown_3003128 + mov r9, r2 + add r1, r9 + mov r0, r8 + lsls r2, r0, 2 + movs r0, 0x80 + lsls r0, 17 + orrs r2, r0 + mov r0, sp + bl CpuSet + movs r6, 0 + ldrb r5, [r4, 0x1] + cmp r6, r8 + bcs _0815CCFA + movs r1, 0x3F + mov r10, r1 + movs r2, 0xD + negs r2, r2 + mov r9, r2 +_0815CC72: + lsls r0, r5, 3 + ldr r1, _0815CD5C @ =gUnknown_30030F0 + adds r3, r0, r1 + ldrh r1, [r4, 0xE] + adds r0, r3, 0 + adds r0, 0x38 + strb r1, [r0] + ldr r2, _0815CD60 @ =0x000001ff + adds r0, r2, 0 + adds r1, r7, 0 + ands r1, r0 + ldrh r2, [r3, 0x3A] + ldr r0, _0815CD64 @ =0xfffffe00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x3A] + ldrb r1, [r4, 0x6] + movs r0, 0x39 + adds r0, r3 + mov r12, r0 + lsls r1, 6 + ldrb r2, [r0] + mov r0, r10 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrb r1, [r4, 0x5] + movs r2, 0x3B + adds r2, r3 + mov r12, r2 + lsls r1, 6 + ldrb r2, [r2] + mov r0, r10 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r4, 0xA] + ldr r1, _0815CD68 @ =0x000003ff + ands r1, r0 + ldrh r2, [r3, 0x3C] + ldr r0, _0815CD6C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x3C] + adds r3, 0x3D + movs r0, 0x3 + ldrb r1, [r4, 0x7] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + mov r0, r9 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r2, [r4, 0x4] + lsls r2, 4 + movs r1, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + ldrb r0, [r4, 0x8] + adds r7, r0 + adds r6, 0x1 + adds r5, 0x1 + cmp r6, r8 + bcc _0815CC72 +_0815CCFA: + subs r5, 0x1 + ldr r0, _0815CD5C @ =gUnknown_30030F0 + lsls r3, r5, 3 + adds r3, r0 + movs r2, 0xC + ldrsh r1, [r4, r2] + ldrb r0, [r4, 0x8] + subs r1, r0 + ldr r2, _0815CD60 @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x3A] + ldr r0, _0815CD64 @ =0xfffffe00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x3A] + adds r2, r3, 0 + adds r2, 0x39 + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, 0x9] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + ldrh r4, [r4, 0xA] + adds r1, r4 + ldr r2, _0815CD68 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x3C] + ldr r0, _0815CD6C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x3C] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815CD58: .4byte gUnknown_3003128 +_0815CD5C: .4byte gUnknown_30030F0 +_0815CD60: .4byte 0x000001ff +_0815CD64: .4byte 0xfffffe00 +_0815CD68: .4byte 0x000003ff +_0815CD6C: .4byte 0xfffffc00 + thumb_func_end sub_815CC28 + + thumb_func_start sub_815CD70 +sub_815CD70: @ 815CD70 + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + ldr r0, _0815CDA0 @ =gUnknown_203F454 + ldr r1, [r0] + adds r6, r0, 0 + cmp r1, 0 + beq _0815CDD4 + ldr r2, [r1, 0x4] + lsls r1, r3, 3 + subs r0, r1, r3 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2] + adds r5, r1, 0 + cmp r0, 0 + beq _0815CDD4 + str r4, [r2, 0x18] + cmp r4, 0 + bge _0815CDA4 + movs r2, 0x1 + negs r4, r4 + b _0815CDA6 + .align 2, 0 +_0815CDA0: .4byte gUnknown_203F454 +_0815CDA4: + movs r2, 0 +_0815CDA6: + ldr r0, [r6] + ldr r1, [r0, 0x4] + subs r0, r5, r3 + lsls r0, 2 + adds r0, r1 + ldrb r3, [r0, 0x2] + cmp r3, 0x1 + beq _0815CDC6 + cmp r3, 0x1 + ble _0815CDBE + cmp r3, 0x2 + beq _0815CDCE +_0815CDBE: + adds r1, r4, 0 + bl sub_815CDDC + b _0815CDD4 +_0815CDC6: + adds r1, r4, 0 + bl sub_815CE90 + b _0815CDD4 +_0815CDCE: + adds r1, r4, 0 + bl sub_815CFEC +_0815CDD4: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_815CD70 + + thumb_func_start sub_815CDDC +sub_815CDDC: @ 815CDDC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + mov r9, r1 + str r2, [sp] + ldr r5, [r0, 0x14] + ldrb r7, [r0, 0x1] + ldr r0, _0815CE60 @ =gUnknown_30030F0 + mov r10, r0 + cmp r5, 0 + beq _0815CE46 + lsls r0, r7, 3 + adds r0, 0x3C + mov r1, r10 + adds r6, r0, r1 +_0815CE02: + mov r0, r9 + adds r1, r5, 0 + bl __udivsi3 + adds r4, r0, 0 + adds r0, r4, 0 + muls r0, r5 + mov r2, r9 + subs r2, r0 + mov r9, r2 + adds r0, r5, 0 + movs r1, 0xA + bl __udivsi3 + adds r5, r0, 0 + mov r1, r8 + ldrb r0, [r1, 0x9] + adds r1, r4, 0 + muls r1, r0 + mov r2, r8 + ldrh r2, [r2, 0xA] + adds r1, r2 + ldr r2, _0815CE64 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r0, [r6] + ldr r2, _0815CE68 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r6] + adds r6, 0x8 + adds r7, 0x1 + cmp r5, 0 + bne _0815CE02 +_0815CE46: + ldr r0, [sp] + cmp r0, 0 + beq _0815CE6C + lsls r0, r7, 3 + add r0, r10 + adds r0, 0x39 + ldrb r2, [r0] + movs r1, 0x4 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + b _0815CE80 + .align 2, 0 +_0815CE60: .4byte gUnknown_30030F0 +_0815CE64: .4byte 0x000003ff +_0815CE68: .4byte 0xfffffc00 +_0815CE6C: + lsls r2, r7, 3 + add r2, r10 + adds r2, 0x39 + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] +_0815CE80: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815CDDC + + thumb_func_start sub_815CE90 +sub_815CE90: @ 815CE90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + str r2, [sp] + ldr r5, [r6, 0x14] + ldr r3, _0815CF38 @ =gUnknown_3002078 + ldrb r0, [r6, 0x1] + str r0, [r3] + ldr r2, _0815CF3C @ =gUnknown_300207C + movs r0, 0 + str r0, [r2] + ldr r1, _0815CF40 @ =gUnknown_3002080 + subs r0, 0x1 + str r0, [r1] + adds r7, r3, 0 + mov r10, r1 + ldr r0, _0815CF44 @ =gUnknown_30030F0 + mov r9, r0 + cmp r5, 0 + beq _0815CF78 +_0815CEC2: + mov r0, r8 + adds r1, r5, 0 + bl __udivsi3 + adds r4, r0, 0 + adds r0, r4, 0 + muls r0, r5 + mov r1, r8 + subs r1, r0 + mov r8, r1 + adds r0, r5, 0 + movs r1, 0xA + bl __udivsi3 + adds r5, r0, 0 + cmp r4, 0 + bne _0815CEF4 + mov r2, r10 + ldr r1, [r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0815CEF4 + cmp r5, 0 + bne _0815CF50 +_0815CEF4: + ldr r2, [r7] + lsls r2, 3 + add r2, r9 + ldrb r0, [r6, 0x9] + adds r3, r4, 0 + muls r3, r0 + ldrh r4, [r6, 0xA] + adds r3, r4 + ldr r1, _0815CF48 @ =0x000003ff + adds r0, r1, 0 + ands r3, r0 + ldrh r0, [r2, 0x3C] + ldr r4, _0815CF4C @ =0xfffffc00 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r3 + strh r0, [r2, 0x3C] + adds r2, 0x39 + ldrb r0, [r2] + movs r1, 0x4 + negs r1, r1 + ands r0, r1 + strb r0, [r2] + mov r2, r10 + ldr r1, [r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0815CF66 + ldr r4, _0815CF3C @ =gUnknown_300207C + ldr r0, [r4] + str r0, [r2] + b _0815CF66 + .align 2, 0 +_0815CF38: .4byte gUnknown_3002078 +_0815CF3C: .4byte gUnknown_300207C +_0815CF40: .4byte gUnknown_3002080 +_0815CF44: .4byte gUnknown_30030F0 +_0815CF48: .4byte 0x000003ff +_0815CF4C: .4byte 0xfffffc00 +_0815CF50: + ldr r0, [r7] + lsls r0, 3 + add r0, r9 + adds r0, 0x39 + ldrb r1, [r0] + movs r2, 0x4 + negs r2, r2 + ands r1, r2 + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] +_0815CF66: + ldr r0, [r7] + adds r0, 0x1 + str r0, [r7] + ldr r4, _0815CFB8 @ =gUnknown_300207C + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + cmp r5, 0 + bne _0815CEC2 +_0815CF78: + ldr r0, [sp] + cmp r0, 0 + beq _0815CFC4 + ldr r1, [r7] + lsls r1, 3 + add r1, r9 + adds r1, 0x39 + ldrb r2, [r1] + movs r0, 0x4 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r3, [r7] + lsls r3, 3 + add r3, r9 + movs r1, 0xC + ldrsh r2, [r6, r1] + mov r4, r10 + ldr r0, [r4] + subs r0, 0x1 + ldrb r1, [r6, 0x8] + muls r0, r1 + adds r2, r0 + ldr r1, _0815CFBC @ =0x000001ff + adds r0, r1, 0 + ands r2, r0 + ldrh r1, [r3, 0x3A] + ldr r0, _0815CFC0 @ =0xfffffe00 + ands r0, r1 + orrs r0, r2 + strh r0, [r3, 0x3A] + b _0815CFDA + .align 2, 0 +_0815CFB8: .4byte gUnknown_300207C +_0815CFBC: .4byte 0x000001ff +_0815CFC0: .4byte 0xfffffe00 +_0815CFC4: + ldr r0, [r7] + lsls r0, 3 + add r0, r9 + adds r0, 0x39 + ldrb r2, [r0] + movs r1, 0x4 + negs r1, r1 + ands r1, r2 + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] +_0815CFDA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815CE90 + + thumb_func_start sub_815CFEC +sub_815CFEC: @ 815CFEC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r8, r0 + mov r10, r1 + str r2, [sp] + ldr r5, [r0, 0x14] + ldrb r3, [r0, 0x1] + movs r0, 0 + str r0, [sp, 0x4] + mov r9, r0 + cmp r5, 0 + beq _0815D086 +_0815D00C: + lsls r0, r3, 3 + adds r1, r0, 0 + adds r1, 0x39 + ldr r2, _0815D0D0 @ =gUnknown_30030F0 + adds r7, r1, r2 + adds r0, 0x3C + adds r6, r0, r2 +_0815D01A: + mov r0, r10 + adds r1, r5, 0 + str r3, [sp, 0x8] + bl __udivsi3 + adds r4, r0, 0 + adds r0, r4, 0 + muls r0, r5 + mov r1, r10 + subs r1, r0 + mov r10, r1 + adds r0, r5, 0 + movs r1, 0xA + bl __udivsi3 + adds r5, r0, 0 + ldr r3, [sp, 0x8] + cmp r4, 0 + bne _0815D04A + ldr r2, [sp, 0x4] + cmp r2, 0 + bne _0815D04A + cmp r5, 0 + bne _0815D00C +_0815D04A: + movs r0, 0x1 + str r0, [sp, 0x4] + mov r1, r8 + ldrb r0, [r1, 0x9] + adds r2, r4, 0 + muls r2, r0 + ldrh r4, [r1, 0xA] + adds r2, r4 + ldr r1, _0815D0D4 @ =0x000003ff + adds r0, r1, 0 + ands r2, r0 + ldrh r0, [r6] + ldr r4, _0815D0D8 @ =0xfffffc00 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strh r0, [r6] + ldrb r0, [r7] + movs r2, 0x4 + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r7] + adds r7, 0x8 + adds r6, 0x8 + adds r3, 0x1 + movs r4, 0x1 + add r9, r4 + cmp r5, 0 + bne _0815D01A +_0815D086: + mov r0, r8 + ldrb r0, [r0, 0x3] + cmp r9, r0 + bge _0815D0B6 + ldr r1, _0815D0D0 @ =gUnknown_30030F0 + movs r5, 0x4 + negs r5, r5 + movs r4, 0x2 + lsls r0, r3, 3 + adds r0, 0x39 + adds r2, r0, r1 +_0815D09C: + ldrb r1, [r2] + adds r0, r5, 0 + ands r0, r1 + orrs r0, r4 + strb r0, [r2] + adds r2, 0x8 + adds r3, 0x1 + movs r1, 0x1 + add r9, r1 + mov r0, r8 + ldrb r0, [r0, 0x3] + cmp r9, r0 + blt _0815D09C +_0815D0B6: + ldr r1, [sp] + cmp r1, 0 + beq _0815D0DC + lsls r0, r3, 3 + ldr r2, _0815D0D0 @ =gUnknown_30030F0 + adds r0, r2 + adds r0, 0x39 + ldrb r2, [r0] + movs r1, 0x4 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + b _0815D0F2 + .align 2, 0 +_0815D0D0: .4byte gUnknown_30030F0 +_0815D0D4: .4byte 0x000003ff +_0815D0D8: .4byte 0xfffffc00 +_0815D0DC: + lsls r2, r3, 3 + ldr r4, _0815D104 @ =gUnknown_30030F0 + adds r2, r4 + adds r2, 0x39 + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] +_0815D0F2: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D104: .4byte gUnknown_30030F0 + thumb_func_end sub_815CFEC + + thumb_func_start sub_815D108 +sub_815D108: @ 815D108 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _0815D1A0 @ =gUnknown_203F454 + ldr r0, [r0] + cmp r0, 0 + beq _0815D19A + ldr r2, [r0, 0x4] + lsls r1, r4, 3 + subs r0, r1, r4 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2] + adds r5, r1, 0 + cmp r0, 0 + beq _0815D19A + ldrb r3, [r2, 0x3] + adds r0, r3, 0x1 + ldrb r2, [r2, 0x1] + cmp r0, 0 + beq _0815D152 + ldr r1, _0815D1A4 @ =gUnknown_30030F0 + movs r7, 0x4 + negs r7, r7 + movs r6, 0x2 + adds r3, r0, 0 + lsls r0, r2, 3 + adds r0, 0x39 + adds r2, r0, r1 +_0815D140: + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + subs r3, 0x1 + adds r2, 0x8 + cmp r3, 0 + bne _0815D140 +_0815D152: + adds r0, r4, 0 + bl sub_815D29C + cmp r0, 0 + bne _0815D16E + ldr r0, _0815D1A0 @ =gUnknown_203F454 + ldr r0, [r0] + ldr r1, [r0, 0x4] + subs r0, r5, r4 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x10] + bl sub_800874C +_0815D16E: + adds r0, r4, 0 + bl sub_815D2E0 + cmp r0, 0 + bne _0815D18A + ldr r0, _0815D1A0 @ =gUnknown_203F454 + ldr r0, [r0] + ldr r1, [r0, 0x4] + subs r0, r5, r4 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x12] + bl sub_8008A30 +_0815D18A: + ldr r0, _0815D1A0 @ =gUnknown_203F454 + ldr r0, [r0] + ldr r1, [r0, 0x4] + subs r0, r5, r4 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strb r1, [r0] +_0815D19A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D1A0: .4byte gUnknown_203F454 +_0815D1A4: .4byte gUnknown_30030F0 + thumb_func_end sub_815D108 + + thumb_func_start sub_815D1A8 +sub_815D1A8: @ 815D1A8 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0815D1FC @ =gUnknown_203F454 + ldr r1, [r0] + adds r7, r0, 0 + cmp r1, 0 + beq _0815D238 + ldr r2, [r1, 0x4] + lsls r1, r4, 3 + subs r0, r1, r4 + lsls r0, 2 + adds r2, r0, r2 + ldrb r0, [r2] + adds r6, r1, 0 + cmp r0, 0 + beq _0815D238 + ldrb r3, [r2, 0x3] + adds r1, r3, 0x1 + ldrb r0, [r2, 0x1] + cmp r5, 0 + beq _0815D204 + cmp r1, 0 + beq _0815D238 + ldr r1, _0815D200 @ =gUnknown_30030F0 + movs r5, 0x4 + negs r5, r5 + movs r4, 0x2 + adds r3, 0x1 + lsls r0, 3 + adds r0, 0x39 + adds r2, r0, r1 +_0815D1E8: + ldrb r1, [r2] + adds r0, r5, 0 + ands r0, r1 + orrs r0, r4 + strb r0, [r2] + subs r3, 0x1 + adds r2, 0x8 + cmp r3, 0 + bne _0815D1E8 + b _0815D238 + .align 2, 0 +_0815D1FC: .4byte gUnknown_203F454 +_0815D200: .4byte gUnknown_30030F0 +_0815D204: + cmp r1, 0 + beq _0815D226 + ldr r1, _0815D240 @ =gUnknown_30030F0 + movs r5, 0x4 + negs r5, r5 + adds r3, 0x1 + lsls r0, 3 + adds r0, 0x39 + adds r2, r0, r1 +_0815D216: + ldrb r1, [r2] + adds r0, r5, 0 + ands r0, r1 + strb r0, [r2] + subs r3, 0x1 + adds r2, 0x8 + cmp r3, 0 + bne _0815D216 +_0815D226: + ldr r0, [r7] + ldr r1, [r0, 0x4] + subs r0, r6, r4 + lsls r0, 2 + adds r0, r1 + ldr r1, [r0, 0x18] + adds r0, r4, 0 + bl sub_815CD70 +_0815D238: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D240: .4byte gUnknown_30030F0 + thumb_func_end sub_815D1A8 + + thumb_func_start sub_815D244 +sub_815D244: @ 815D244 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0x40 + movs r3, 0 + ldr r0, _0815D270 @ =gUnknown_203F454 + ldr r0, [r0] + ldr r2, [r0] + cmp r3, r2 + bcs _0815D286 + ldr r1, [r0, 0x4] +_0815D25A: + ldrb r0, [r1] + cmp r0, 0 + bne _0815D274 + ldrb r0, [r1, 0x1] + cmp r0, 0xFF + beq _0815D27E + ldrb r0, [r1, 0x3] + cmp r0, r4 + bhi _0815D27E + ldrb r0, [r1, 0x1] + b _0815D296 + .align 2, 0 +_0815D270: .4byte gUnknown_203F454 +_0815D274: + adds r0, r5, 0x1 + ldrb r5, [r1, 0x3] + adds r0, r5 + lsls r0, 16 + lsrs r5, r0, 16 +_0815D27E: + adds r1, 0x1C + adds r3, 0x1 + cmp r3, r2 + bcc _0815D25A +_0815D286: + adds r0, r5, r4 + adds r0, 0x1 + cmp r0, 0x80 + bgt _0815D294 + lsls r0, r5, 24 + lsrs r0, 24 + b _0815D296 +_0815D294: + movs r0, 0xFF +_0815D296: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815D244 + + thumb_func_start sub_815D29C +sub_815D29C: @ 815D29C + push {r4-r6,lr} + adds r3, r0, 0 + movs r2, 0 + ldr r0, _0815D2CC @ =gUnknown_203F454 + ldr r0, [r0] + ldr r4, [r0] + cmp r2, r4 + bcs _0815D2D8 + ldr r1, [r0, 0x4] + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r5, r0, r1 +_0815D2B6: + ldrb r0, [r1] + cmp r0, 0 + beq _0815D2D0 + cmp r2, r3 + beq _0815D2D0 + ldrh r0, [r1, 0x10] + ldrh r6, [r5, 0x10] + cmp r0, r6 + bne _0815D2D0 + movs r0, 0x1 + b _0815D2DA + .align 2, 0 +_0815D2CC: .4byte gUnknown_203F454 +_0815D2D0: + adds r1, 0x1C + adds r2, 0x1 + cmp r2, r4 + bcc _0815D2B6 +_0815D2D8: + movs r0, 0 +_0815D2DA: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_815D29C + + thumb_func_start sub_815D2E0 +sub_815D2E0: @ 815D2E0 + push {r4-r6,lr} + adds r3, r0, 0 + movs r2, 0 + ldr r0, _0815D310 @ =gUnknown_203F454 + ldr r0, [r0] + ldr r4, [r0] + cmp r2, r4 + bcs _0815D31C + ldr r1, [r0, 0x4] + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r5, r0, r1 +_0815D2FA: + ldrb r0, [r1] + cmp r0, 0 + beq _0815D314 + cmp r2, r3 + beq _0815D314 + ldrh r0, [r1, 0x12] + ldrh r6, [r5, 0x12] + cmp r0, r6 + bne _0815D314 + movs r0, 0x1 + b _0815D31E + .align 2, 0 +_0815D310: .4byte gUnknown_203F454 +_0815D314: + adds r1, 0x1C + adds r2, 0x1 + cmp r2, r4 + bcc _0815D2FA +_0815D31C: + movs r0, 0 +_0815D31E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_815D2E0 + + thumb_func_start sub_815D324 +sub_815D324: @ 815D324 + ldr r2, _0815D330 @ =gUnknown_8479658 + lsls r0, 2 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_0815D330: .4byte gUnknown_8479658 + thumb_func_end sub_815D324 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s new file mode 100644 index 000000000..50e489b7b --- /dev/null +++ b/asm/unk_815EDDC.s @@ -0,0 +1,462 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815EDDC +sub_815EDDC: @ 815EDDC + ldr r1, _0815EDF0 @ =gUnknown_300500C + ldr r1, [r1] + movs r2, 0xF2 + lsls r2, 4 + adds r1, r2 + ldr r0, [r0] + ldr r1, [r1] + eors r0, r1 + bx lr + .align 2, 0 +_0815EDF0: .4byte gUnknown_300500C + thumb_func_end sub_815EDDC + + thumb_func_start sub_815EDF4 +sub_815EDF4: @ 815EDF4 + ldr r2, _0815EE08 @ =gUnknown_300500C + ldr r2, [r2] + movs r3, 0xF2 + lsls r3, 4 + adds r2, r3 + ldr r2, [r2] + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_0815EE08: .4byte gUnknown_300500C + thumb_func_end sub_815EDF4 + + thumb_func_start sub_815EE0C +sub_815EE0C: @ 815EE0C + push {r4-r6,lr} + ldr r6, _0815EE30 @ =gUnknown_3005008 + ldr r5, _0815EE34 @ =0x00003d38 + movs r4, 0x3 +_0815EE14: + ldr r0, [r6] + adds r0, r5 + adds r0, 0x4 + ldr r1, _0815EE38 @ =0x00034bbf + bl sub_815EDF4 + adds r5, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _0815EE14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815EE30: .4byte gUnknown_3005008 +_0815EE34: .4byte 0x00003d38 +_0815EE38: .4byte 0x00034bbf + thumb_func_end sub_815EE0C + + thumb_func_start sub_815EE3C +sub_815EE3C: @ 815EE3C + ldr r1, _0815EE50 @ =gUnknown_300500C + ldr r1, [r1] + movs r2, 0xF2 + lsls r2, 4 + adds r1, r2 + ldr r0, [r0] + ldr r1, [r1] + eors r0, r1 + bx lr + .align 2, 0 +_0815EE50: .4byte gUnknown_300500C + thumb_func_end sub_815EE3C + + thumb_func_start sub_815EE54 +sub_815EE54: @ 815EE54 + ldr r2, _0815EE68 @ =gUnknown_300500C + ldr r2, [r2] + movs r3, 0xF2 + lsls r3, 4 + adds r2, r3 + ldr r2, [r2] + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_0815EE68: .4byte gUnknown_300500C + thumb_func_end sub_815EE54 + + thumb_func_start sub_815EE6C +sub_815EE6C: @ 815EE6C + push {lr} + adds r1, r0, 0 + ldr r0, _0815EE80 @ =gUnknown_300500C + ldr r0, [r0] + ldr r2, _0815EE84 @ =0x00000af8 + adds r0, r2 + bl sub_804C588 + pop {r0} + bx r0 + .align 2, 0 +_0815EE80: .4byte gUnknown_300500C +_0815EE84: .4byte 0x00000af8 + thumb_func_end sub_815EE6C + + thumb_func_start sub_815EE88 +sub_815EE88: @ 815EE88 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0815EEA0 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _0815EEA4 @ =0x00000af8 + adds r0, r1 + bl sub_815EE3C + cmp r0, r4 + bcc _0815EEA8 + movs r0, 0x1 + b _0815EEAA + .align 2, 0 +_0815EEA0: .4byte gUnknown_300500C +_0815EEA4: .4byte 0x00000af8 +_0815EEA8: + movs r0, 0 +_0815EEAA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_815EE88 + + thumb_func_start sub_815EEB0 +sub_815EEB0: @ 815EEB0 + push {lr} + ldr r0, _0815EECC @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _0815EED0 @ =0x00000af8 + adds r0, r1 + bl sub_815EE3C + ldr r1, _0815EED4 @ =gUnknown_20370C0 + ldrh r1, [r1] + cmp r0, r1 + bcc _0815EED8 + movs r0, 0x1 + b _0815EEDA + .align 2, 0 +_0815EECC: .4byte gUnknown_300500C +_0815EED0: .4byte 0x00000af8 +_0815EED4: .4byte gUnknown_20370C0 +_0815EED8: + movs r0, 0 +_0815EEDA: + pop {r1} + bx r1 + thumb_func_end sub_815EEB0 + + thumb_func_start sub_815EEE0 +sub_815EEE0: @ 815EEE0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _0815EF04 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _0815EF08 @ =0x00000af8 + adds r5, r0, r1 + adds r0, r5, 0 + bl sub_815EE3C + adds r1, r0, r4 + ldr r2, _0815EF0C @ =0x0001869f + cmp r1, r2 + bhi _0815EF10 + adds r0, r5, 0 + bl sub_815EE54 + movs r0, 0x1 + b _0815EF1A + .align 2, 0 +_0815EF04: .4byte gUnknown_300500C +_0815EF08: .4byte 0x00000af8 +_0815EF0C: .4byte 0x0001869f +_0815EF10: + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_815EE54 + movs r0, 0 +_0815EF1A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815EEE0 + + thumb_func_start sub_815EF20 +sub_815EF20: @ 815EF20 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _0815EF4C @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _0815EF50 @ =0x00000af8 + adds r4, r0, r1 + adds r0, r5, 0 + bl sub_815EE88 + lsls r0, 24 + cmp r0, 0 + beq _0815EF54 + adds r0, r4, 0 + bl sub_815EE3C + adds r1, r0, 0 + subs r1, r5 + adds r0, r4, 0 + bl sub_815EE54 + movs r0, 0x1 + b _0815EF56 + .align 2, 0 +_0815EF4C: .4byte gUnknown_300500C +_0815EF50: .4byte 0x00000af8 +_0815EF54: + movs r0, 0 +_0815EF56: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815EF20 + + thumb_func_start sub_815EF5C +sub_815EF5C: @ 815EF5C + push {r4,r5,lr} + ldr r0, _0815EF8C @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _0815EF90 @ =0x00000af8 + adds r4, r0, r1 + ldr r5, _0815EF94 @ =gUnknown_20370C0 + ldrh r0, [r5] + bl sub_815EE88 + lsls r0, 24 + cmp r0, 0 + beq _0815EF98 + adds r0, r4, 0 + bl sub_815EE3C + adds r1, r0, 0 + ldrh r0, [r5] + subs r1, r0 + adds r0, r4, 0 + bl sub_815EE54 + movs r0, 0x1 + b _0815EF9A + .align 2, 0 +_0815EF8C: .4byte gUnknown_300500C +_0815EF90: .4byte 0x00000af8 +_0815EF94: .4byte gUnknown_20370C0 +_0815EF98: + movs r0, 0 +_0815EF9A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_815EF5C + + thumb_func_start sub_815EFA0 +sub_815EFA0: @ 815EFA0 + push {lr} + ldr r0, _0815EFB4 @ =gUnknown_300500C + ldr r0, [r0] + ldr r1, _0815EFB8 @ =0x00000af8 + adds r0, r1 + bl sub_815EE3C + pop {r1} + bx r1 + .align 2, 0 +_0815EFB4: .4byte gUnknown_300500C +_0815EFB8: .4byte 0x00000af8 + thumb_func_end sub_815EFA0 + + thumb_func_start sub_815EFBC +sub_815EFBC: @ 815EFBC + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0xC + adds r6, r0, 0 + mov r8, r2 + adds r4, r3, 0 + ldr r5, [sp, 0x24] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _0815F010 @ =gUnknown_2021CD0 + mov r9, r0 + movs r2, 0x1 + movs r3, 0x5 + bl sub_8008E78 + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + mov r2, r9 + mov r3, r8 + bl sub_8002C48 + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F010: .4byte gUnknown_2021CD0 + thumb_func_end sub_815EFBC + + thumb_func_start sub_815F014 +sub_815F014: @ 815F014 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + mov r8, r3 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_810F2E8 + ldr r2, _0815F06C @ =gUnknown_8416655 + movs r4, 0 + str r4, [sp] + movs r0, 0xFF + str r0, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r6, 0 + movs r1, 0 + movs r3, 0 + bl sub_8002C48 + str r4, [sp] + adds r0, r6, 0 + mov r1, r8 + movs r2, 0x27 + movs r3, 0xC + bl sub_815EFBC + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F06C: .4byte gUnknown_8416655 + thumb_func_end sub_815F014 + + thumb_func_start sub_815F070 +sub_815F070: @ 815F070 + push {lr} + sub sp, 0x4 + bl sub_815EFA0 + adds r1, r0, 0 + ldr r0, _0815F090 @ =gUnknown_203F464 + ldrb r0, [r0] + movs r2, 0 + str r2, [sp] + movs r2, 0x27 + movs r3, 0xC + bl sub_815EFBC + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0815F090: .4byte gUnknown_203F464 + thumb_func_end sub_815F070 + + thumb_func_start sub_815F094 +sub_815F094: @ 815F094 + push {r4,r5,lr} + sub sp, 0x20 + ldr r0, _0815F108 @ =sub_809D6D4 + bl sub_81119D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0815F100 + movs r0, 0x8 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0x20 + str r0, [sp, 0xC] + add r0, sp, 0x10 + movs r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_810FE50 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + ldr r4, _0815F10C @ =gUnknown_203F464 + add r0, sp, 0x18 + bl sub_8003CE4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl sub_800445C + ldrb r0, [r4] + bl sub_8003FA0 + ldrb r0, [r4] + ldr r5, _0815F110 @ =0x0000021d + adds r1, r5, 0 + movs r2, 0xD0 + bl sub_814FF2C + ldrb r4, [r4] + bl sub_815EFA0 + adds r3, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0xD + bl sub_815F014 +_0815F100: + add sp, 0x20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815F108: .4byte sub_809D6D4 +_0815F10C: .4byte gUnknown_203F464 +_0815F110: .4byte 0x0000021d + thumb_func_end sub_815F094 + + thumb_func_start sub_815F114 +sub_815F114: @ 815F114 + push {r4,lr} + ldr r4, _0815F134 @ =gUnknown_203F464 + ldrb r0, [r4] + bl sub_80040B8 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_810F4D8 + ldrb r0, [r4] + bl sub_8003E3C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815F134: .4byte gUnknown_203F464 + thumb_func_end sub_815F114 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815F138.s b/asm/unk_815F138.s new file mode 100644 index 000000000..77addc77a --- /dev/null +++ b/asm/unk_815F138.s @@ -0,0 +1,753 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815F138 +sub_815F138: @ 815F138 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, [sp, 0x18] + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _0815F190 @ =sub_815F1AC + movs r1, 0x50 + str r3, [sp] + bl sub_807741C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0815F194 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xC] + strh r5, [r1, 0xE] + strh r6, [r1, 0x10] + ldr r3, [sp] + strh r3, [r1, 0x12] + mov r0, r8 + strh r0, [r1, 0x14] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F190: .4byte sub_815F1AC +_0815F194: .4byte gUnknown_3005090 + thumb_func_end sub_815F138 + + thumb_func_start sub_815F198 +sub_815F198: @ 815F198 + push {lr} + ldr r0, _0815F1A8 @ =sub_815F1AC + bl sub_8077650 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0815F1A8: .4byte sub_815F1AC + thumb_func_end sub_815F198 + + thumb_func_start sub_815F1AC +sub_815F1AC: @ 815F1AC + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _0815F1D0 @ =gUnknown_3005098 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0815F21C + cmp r0, 0x1 + bgt _0815F1D4 + cmp r0, 0 + beq _0815F1DA + b _0815F29E + .align 2, 0 +_0815F1D0: .4byte gUnknown_3005098 +_0815F1D4: + cmp r0, 0x2 + beq _0815F260 + b _0815F29E +_0815F1DA: + ldrh r0, [r5, 0x4] + ldrh r1, [r5, 0x6] + bl sub_815F564 + ldrh r0, [r5, 0x4] + ldrh r1, [r5, 0x6] + movs r3, 0x8 + ldrsh r2, [r5, r3] + movs r4, 0xA + ldrsh r3, [r5, r4] + ldrb r4, [r5, 0xC] + str r4, [sp] + bl sub_815F5BC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + ldrh r0, [r5, 0x4] + ldrh r1, [r5, 0x6] + movs r3, 0x8 + ldrsh r2, [r5, r3] + movs r4, 0xA + ldrsh r3, [r5, r4] + ldrb r4, [r5, 0xC] + str r4, [sp] + adds r4, r5, 0 + adds r4, 0x10 + str r4, [sp, 0x4] + adds r4, 0x2 + str r4, [sp, 0x8] + bl sub_815F610 + b _0815F252 +_0815F21C: + ldrb r0, [r5, 0xE] + bl sub_815F2AC + cmp r0, 0 + bne _0815F29E + ldrb r0, [r5, 0xE] + ldrb r1, [r5, 0x10] + ldrb r2, [r5, 0x12] + bl sub_815F3E0 + movs r0, 0xE + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0815F25C @ =gUnknown_202063C + adds r0, r4 + bl sub_80077D8 + movs r3, 0xE + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 +_0815F252: + ldrh r0, [r5] + adds r0, 0x1 + strh r0, [r5] + b _0815F29E + .align 2, 0 +_0815F25C: .4byte gUnknown_202063C +_0815F260: + ldrb r0, [r5, 0x10] + bl sub_815F444 + cmp r0, 0 + bne _0815F29E + movs r4, 0x10 + ldrsh r1, [r5, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0815F2A8 @ =gUnknown_202063C + adds r0, r4 + bl sub_8007280 + movs r0, 0x12 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_8007280 + ldrh r0, [r5, 0x4] + bl sub_800874C + ldrh r0, [r5, 0x6] + bl sub_8008A30 + adds r0, r6, 0 + bl sub_8077508 +_0815F29E: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F2A8: .4byte gUnknown_202063C + thumb_func_end sub_815F1AC + + thumb_func_start sub_815F2AC +sub_815F2AC: @ 815F2AC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _0815F2D0 @ =gUnknown_202063C + adds r4, r1, r0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bls _0815F2C6 + b _0815F3D8 +_0815F2C6: + lsls r0, 2 + ldr r1, _0815F2D4 @ =_0815F2D8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815F2D0: .4byte gUnknown_202063C +_0815F2D4: .4byte _0815F2D8 + .align 2, 0 +_0815F2D8: + .4byte _0815F2F8 + .4byte _0815F30A + .4byte _0815F330 + .4byte _0815F340 + .4byte _0815F362 + .4byte _0815F39A + .4byte _0815F3C0 + .4byte _0815F396 +_0815F2F8: + movs r1, 0x80 + lsls r1, 4 + adds r0, r4, 0 + movs r2, 0x1A + bl sub_8007FFC + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_0815F30A: + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0815F318 + movs r0, 0x32 + bl sub_80722CC +_0815F318: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _0815F3D8 + movs r0, 0 + strh r0, [r4, 0x32] + adds r0, r4, 0 + movs r1, 0x1 + b _0815F3B6 +_0815F330: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0815F3D8 + b _0815F3BA +_0815F340: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _0815F3D8 + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_800843C + b _0815F3D8 +_0815F362: + ldrh r0, [r4, 0x22] + subs r0, 0x4 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _0815F3D8 + ldrh r1, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bgt _0815F392 + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_800838C + movs r0, 0 + strh r0, [r4, 0x32] + b _0815F3BA +_0815F392: + movs r0, 0x7 + strh r0, [r4, 0x2E] +_0815F396: + movs r0, 0 + b _0815F3DA +_0815F39A: + ldrh r0, [r4, 0x22] + adds r0, 0x4 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _0815F3D8 + movs r0, 0 + strh r0, [r4, 0x32] + adds r0, r4, 0 + movs r1, 0x3 +_0815F3B6: + bl sub_800843C +_0815F3BA: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + b _0815F3D6 +_0815F3C0: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0815F3D8 + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r0, 0x1 +_0815F3D6: + strh r0, [r4, 0x2E] +_0815F3D8: + movs r0, 0x1 +_0815F3DA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_815F2AC + + thumb_func_start sub_815F3E0 +sub_815F3E0: @ 815F3E0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0815F438 @ =gUnknown_202063C + mov r8, r0 + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r5, r4, r0 + ldr r0, _0815F43C @ =0x0000ffd8 + strh r0, [r5, 0x26] + lsls r3, r2, 4 + adds r3, r2 + lsls r3, 2 + mov r1, r8 + adds r2, r3, r1 + strh r0, [r2, 0x26] + adds r5, 0x3E + ldrb r6, [r5] + movs r1, 0x5 + negs r1, r1 + adds r0, r1, 0 + ands r0, r6 + strb r0, [r5] + adds r2, 0x3E + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + movs r0, 0x1C + add r8, r0 + add r4, r8 + ldr r0, _0815F440 @ =sub_815F470 + str r0, [r4] + add r3, r8 + str r0, [r3] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F438: .4byte gUnknown_202063C +_0815F43C: .4byte 0x0000ffd8 +_0815F440: .4byte sub_815F470 + thumb_func_end sub_815F3E0 + + thumb_func_start sub_815F444 +sub_815F444: @ 815F444 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r3, 0 + ldr r2, _0815F468 @ =gUnknown_202063C + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r2, 0x1C + adds r1, r2 + ldr r1, [r1] + ldr r0, _0815F46C @ =sub_815F470 + cmp r1, r0 + bne _0815F462 + movs r3, 0x1 +_0815F462: + adds r0, r3, 0 + pop {r1} + bx r1 + .align 2, 0 +_0815F468: .4byte gUnknown_202063C +_0815F46C: .4byte sub_815F470 + thumb_func_end sub_815F444 + + thumb_func_start sub_815F470 +sub_815F470: @ 815F470 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r5, 0 + adds r4, 0x2E + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bhi _0815F55A + lsls r0, 2 + ldr r1, _0815F48C @ =_0815F490 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815F48C: .4byte _0815F490 + .align 2, 0 +_0815F490: + .4byte _0815F4A4 + .4byte _0815F4B4 + .4byte _0815F4DC + .4byte _0815F510 + .4byte _0815F548 +_0815F4A4: + movs r0, 0x40 + strh r0, [r4, 0x8] + ldrh r0, [r5, 0x26] + lsls r0, 4 + strh r0, [r4, 0xA] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0815F4B4: + ldrh r1, [r4, 0x8] + ldrh r2, [r4, 0xA] + adds r0, r1, r2 + strh r0, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0x8] + lsls r0, 16 + asrs r0, 20 + strh r0, [r5, 0x26] + cmp r0, 0 + blt _0815F55A + movs r0, 0x32 + bl sub_80722CC + movs r0, 0 + strh r0, [r5, 0x26] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0815F55A +_0815F4DC: + ldrh r0, [r4, 0x2] + adds r0, 0xC + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + ble _0815F4FA + movs r0, 0x32 + bl sub_80722CC + movs r0, 0 + strh r0, [r4, 0x2] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0815F4FA: + ldr r0, _0815F50C @ =gUnknown_825E074 + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 1 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + asrs r0, 4 + b _0815F53E + .align 2, 0 +_0815F50C: .4byte gUnknown_825E074 +_0815F510: + ldrh r0, [r4, 0x2] + adds r0, 0x10 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + ble _0815F52E + movs r0, 0x32 + bl sub_80722CC + movs r0, 0 + strh r0, [r4, 0x2] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0815F52E: + ldr r1, _0815F544 @ =gUnknown_825E074 + movs r2, 0x2 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 21 +_0815F53E: + negs r0, r0 + strh r0, [r5, 0x26] + b _0815F55A + .align 2, 0 +_0815F544: .4byte gUnknown_825E074 +_0815F548: + ldrh r0, [r4, 0x2] + adds r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _0815F55A + ldr r0, _0815F560 @ =nullsub_8 + str r0, [r5, 0x1C] +_0815F55A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815F560: .4byte nullsub_8 + thumb_func_end sub_815F470 + + thumb_func_start sub_815F564 +sub_815F564: @ 815F564 + push {r4,lr} + sub sp, 0x10 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _0815F5AC @ =gUnknown_847A79C + ldr r3, [r2, 0x4] + ldr r2, [r2] + str r2, [sp] + str r3, [sp, 0x4] + ldr r2, _0815F5B0 @ =gUnknown_847A7A4 + ldr r3, [r2, 0x4] + ldr r2, [r2] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + lsls r0, 16 + ldr r3, _0815F5B4 @ =0x0000ffff + ldr r2, [sp, 0x4] + ands r2, r3 + orrs r2, r0 + str r2, [sp, 0x4] + ldr r2, _0815F5B8 @ =0xffff0000 + add r4, sp, 0x8 + ldr r0, [r4, 0x4] + ands r0, r2 + orrs r0, r1 + str r0, [r4, 0x4] + mov r0, sp + bl sub_800EBCC + adds r0, r4, 0 + bl sub_8008928 + add sp, 0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815F5AC: .4byte gUnknown_847A79C +_0815F5B0: .4byte gUnknown_847A7A4 +_0815F5B4: .4byte 0x0000ffff +_0815F5B8: .4byte 0xffff0000 + thumb_func_end sub_815F564 + + thumb_func_start sub_815F5BC +sub_815F5BC: @ 815F5BC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x18 + mov r12, r3 + ldr r3, [sp, 0x30] + lsls r1, 16 + lsrs r1, 16 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + mov r5, sp + ldr r4, _0815F60C @ =gUnknown_847A860 + ldm r4!, {r3,r6,r7} + stm r5!, {r3,r6,r7} + ldm r4!, {r3,r6,r7} + stm r5!, {r3,r6,r7} + mov r4, sp + strh r0, [r4] + mov r0, sp + strh r1, [r0, 0x2] + lsls r2, 16 + asrs r2, 16 + mov r0, r12 + lsls r6, r0, 16 + asrs r6, 16 + mov r0, sp + adds r1, r2, 0 + adds r2, r6, 0 + mov r3, r8 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0815F60C: .4byte gUnknown_847A860 + thumb_func_end sub_815F5BC + + thumb_func_start sub_815F610 +sub_815F610: @ 815F610 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + mov r12, r3 + ldr r6, [sp, 0x38] + ldr r3, [sp, 0x3C] + mov r9, r3 + ldr r4, [sp, 0x40] + mov r8, r4 + lsls r1, 16 + lsrs r1, 16 + lsls r6, 24 + lsrs r6, 24 + mov r10, r6 + mov r4, sp + ldr r3, _0815F6D4 @ =gUnknown_847A878 + ldm r3!, {r5-r7} + stm r4!, {r5-r7} + ldm r3!, {r5-r7} + stm r4!, {r5-r7} + mov r3, sp + strh r0, [r3] + mov r0, sp + strh r1, [r0, 0x2] + lsls r2, 16 + asrs r4, r2, 16 + ldr r0, _0815F6D8 @ =0xffe00000 + adds r2, r0 + asrs r2, 16 + mov r1, r12 + lsls r5, r1, 16 + asrs r5, 16 + mov r0, sp + adds r1, r2, 0 + adds r2, r5, 0 + mov r3, r10 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r3, r9 + strh r0, [r3] + adds r4, 0x20 + lsls r4, 16 + asrs r4, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + mov r3, r10 + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + mov r4, r8 + strh r0, [r4] + ldr r2, _0815F6DC @ =gUnknown_202063C + mov r5, r9 + movs r6, 0 + ldrsh r1, [r5, r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r0] + movs r7, 0 + ldrsh r1, [r4, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + movs r0, 0 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + bl sub_800838C + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815F6D4: .4byte gUnknown_847A878 +_0815F6D8: .4byte 0xffe00000 +_0815F6DC: .4byte gUnknown_202063C + thumb_func_end sub_815F610 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_text_util.s b/asm/unk_text_util.s new file mode 100644 index 000000000..a3008edca --- /dev/null +++ b/asm/unk_text_util.s @@ -0,0 +1,130 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813CC90 +sub_813CC90: @ 813CC90 + push {lr} + ldr r1, _0813CCA8 @ =gUnknown_203F34C + movs r2, 0 + adds r0, r1, 0 + adds r0, 0x1C +_0813CC9A: + str r2, [r0] + subs r0, 0x4 + cmp r0, r1 + bge _0813CC9A + pop {r0} + bx r0 + .align 2, 0 +_0813CCA8: .4byte gUnknown_203F34C + thumb_func_end sub_813CC90 + + thumb_func_start sub_813CCAC +sub_813CCAC: @ 813CCAC + push {lr} + adds r2, r1, 0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x7 + bhi _0813CCC0 + ldr r1, _0813CCC4 @ =gUnknown_203F34C + lsls r0, 2 + adds r0, r1 + str r2, [r0] +_0813CCC0: + pop {r0} + bx r0 + .align 2, 0 +_0813CCC4: .4byte gUnknown_203F34C + thumb_func_end sub_813CCAC + + thumb_func_start sub_813CCC8 +sub_813CCC8: @ 813CCC8 + push {r4,r5,lr} + adds r2, r0, 0 + adds r4, r1, 0 + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + beq _0813CD08 + ldr r5, _0813CCE4 @ =gUnknown_203F34C +_0813CCD8: + cmp r1, 0xF7 + beq _0813CCE8 + strb r1, [r2] + adds r4, 0x1 + adds r2, 0x1 + b _0813CD00 + .align 2, 0 +_0813CCE4: .4byte gUnknown_203F34C +_0813CCE8: + adds r4, 0x1 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + cmp r1, 0 + beq _0813CCFE + adds r0, r2, 0 + bl sub_8008D84 + adds r2, r0, 0 +_0813CCFE: + adds r4, 0x1 +_0813CD00: + ldrb r1, [r4] + adds r0, r1, 0 + cmp r0, 0xFF + bne _0813CCD8 +_0813CD08: + movs r0, 0xFF + strb r0, [r2] + adds r0, r2, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813CCC8 + + thumb_func_start sub_813CD14 +sub_813CD14: @ 813CD14 + lsls r0, 24 + ldr r1, _0813CD20 @ =gUnknown_203F34C + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0813CD20: .4byte gUnknown_203F34C + thumb_func_end sub_813CD14 + + thumb_func_start sub_813CD24 +sub_813CD24: @ 813CD24 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + lsrs r2, r0, 17 + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + cmp r2, 0x4B + bhi _0813CD48 + ldr r0, _0813CD44 @ =gUnknown_8464300 + adds r0, r2, r0 + ldrb r0, [r0] + asrs r0, r1 + movs r1, 0xF + ands r0, r1 + b _0813CD4A + .align 2, 0 +_0813CD44: .4byte gUnknown_8464300 +_0813CD48: + movs r0, 0x3 +_0813CD4A: + pop {r1} + bx r1 + thumb_func_end sub_813CD24 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unknown_task.s b/asm/unknown_task.s new file mode 100644 index 000000000..30f51a3fc --- /dev/null +++ b/asm/unknown_task.s @@ -0,0 +1,644 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8087E64 +sub_8087E64: @ 8087E64 + push {r4,lr} + ldr r4, _08087E94 @ =gUnknown_2039600 + movs r0, 0 + strb r0, [r4, 0x15] + ldr r1, _08087E98 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _08087E9C @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _08087EA0 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + ldrb r0, [r4, 0x18] + cmp r0, 0xFF + beq _08087E8E + bl sub_8077508 + movs r0, 0xFF + strb r0, [r4, 0x18] +_08087E8E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087E94: .4byte gUnknown_2039600 +_08087E98: .4byte 0x040000b0 +_08087E9C: .4byte 0x0000c5ff +_08087EA0: .4byte 0x00007fff + thumb_func_end sub_8087E64 + + thumb_func_start sub_8087EA4 +sub_8087EA4: @ 8087EA4 + push {r4,lr} + sub sp, 0x4 + mov r0, sp + movs r4, 0 + strh r4, [r0] + ldr r1, _08087ED8 @ =gUnknown_2038700 + ldr r2, _08087EDC @ =0x01000780 + bl CpuSet + ldr r0, _08087EE0 @ =gUnknown_2039600 + movs r1, 0 + str r1, [r0] + str r1, [r0, 0x4] + str r1, [r0, 0x8] + str r1, [r0, 0xC] + strb r4, [r0, 0x14] + strb r4, [r0, 0x15] + strb r4, [r0, 0x16] + strb r4, [r0, 0x17] + movs r1, 0xFF + strb r1, [r0, 0x18] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087ED8: .4byte gUnknown_2038700 +_08087EDC: .4byte 0x01000780 +_08087EE0: .4byte gUnknown_2039600 + thumb_func_end sub_8087EA4 + + thumb_func_start sub_8087EE4 +sub_8087EE4: @ 8087EE4 + push {lr} + sub sp, 0xC + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + ldr r0, _08087F08 @ =0xa2600001 + cmp r1, r0 + bne _08087F18 + ldr r0, _08087F0C @ =gUnknown_2039600 + ldr r1, _08087F10 @ =gUnknown_2038702 + str r1, [r0] + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + str r1, [r0, 0x4] + ldr r1, _08087F14 @ =sub_8087FE0 + b _08087F28 + .align 2, 0 +_08087F08: .4byte 0xa2600001 +_08087F0C: .4byte gUnknown_2039600 +_08087F10: .4byte gUnknown_2038702 +_08087F14: .4byte sub_8087FE0 +_08087F18: + ldr r0, _08087F48 @ =gUnknown_2039600 + ldr r1, _08087F4C @ =gUnknown_2038704 + str r1, [r0] + movs r2, 0xF0 + lsls r2, 3 + adds r1, r2 + str r1, [r0, 0x4] + ldr r1, _08087F50 @ =sub_8088000 +_08087F28: + str r1, [r0, 0x10] + adds r1, r0, 0 + ldr r0, [sp, 0x4] + str r0, [r1, 0xC] + ldr r0, [sp] + str r0, [r1, 0x8] + mov r0, sp + ldrb r0, [r0, 0x8] + strb r0, [r1, 0x15] + mov r0, sp + ldrb r0, [r0, 0x9] + strb r0, [r1, 0x16] + strb r0, [r1, 0x17] + add sp, 0xC + pop {r0} + bx r0 + .align 2, 0 +_08087F48: .4byte gUnknown_2039600 +_08087F4C: .4byte gUnknown_2038704 +_08087F50: .4byte sub_8088000 + thumb_func_end sub_8087EE4 + + thumb_func_start sub_8087F54 +sub_8087F54: @ 8087F54 + push {r4,lr} + ldr r4, _08087F84 @ =gUnknown_2039600 + ldrb r0, [r4, 0x15] + cmp r0, 0 + beq _08087FCE + cmp r0, 0x3 + bne _08087F98 + movs r0, 0 + strb r0, [r4, 0x15] + ldr r1, _08087F88 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _08087F8C @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _08087F90 @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + ldr r1, _08087F94 @ =gUnknown_203961C + movs r0, 0x1 + strb r0, [r1] + b _08087FCE + .align 2, 0 +_08087F84: .4byte gUnknown_2039600 +_08087F88: .4byte 0x040000b0 +_08087F8C: .4byte 0x0000c5ff +_08087F90: .4byte 0x00007fff +_08087F94: .4byte gUnknown_203961C +_08087F98: + ldr r1, _08087FD4 @ =0x040000b0 + ldrh r2, [r1, 0xA] + ldr r0, _08087FD8 @ =0x0000c5ff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r2, [r1, 0xA] + ldr r0, _08087FDC @ =0x00007fff + ands r0, r2 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xA] + ldrb r0, [r4, 0x14] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + ldr r0, [r4, 0x8] + str r0, [r1, 0x4] + ldr r0, [r4, 0xC] + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r0, [r4, 0x10] + bl _call_via_r0 + ldrb r0, [r4, 0x14] + movs r1, 0x1 + eors r0, r1 + strb r0, [r4, 0x14] +_08087FCE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087FD4: .4byte 0x040000b0 +_08087FD8: .4byte 0x0000c5ff +_08087FDC: .4byte 0x00007fff + thumb_func_end sub_8087F54 + + thumb_func_start sub_8087FE0 +sub_8087FE0: @ 8087FE0 + ldr r0, _08087FF8 @ =gUnknown_2039600 + ldr r2, [r0, 0x8] + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + ldr r1, _08087FFC @ =gUnknown_2038700 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_08087FF8: .4byte gUnknown_2039600 +_08087FFC: .4byte gUnknown_2038700 + thumb_func_end sub_8087FE0 + + thumb_func_start sub_8088000 +sub_8088000: @ 8088000 + ldr r0, _08088018 @ =gUnknown_2039600 + ldr r2, [r0, 0x8] + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + ldr r1, _0808801C @ =gUnknown_2038700 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + bx lr + .align 2, 0 +_08088018: .4byte gUnknown_2039600 +_0808801C: .4byte gUnknown_2038700 + thumb_func_end sub_8088000 + + thumb_func_start sub_8088020 +sub_8088020: @ 8088020 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + movs r6, 0 + ldr r0, _08088048 @ =gUnknown_203961C + ldrb r0, [r0] + cmp r0, 0 + beq _08088050 + mov r0, r12 + bl sub_8077508 + ldr r1, _0808804C @ =gUnknown_2039600 + movs r0, 0xFF + strb r0, [r1, 0x18] + b _080881D0 + .align 2, 0 +_08088048: .4byte gUnknown_203961C +_0808804C: .4byte gUnknown_2039600 +_08088050: + ldr r1, _0808807C @ =gUnknown_3005090 + mov r0, r12 + lsls r2, r0, 2 + adds r0, r2, r0 + lsls r0, 3 + adds r3, r0, r1 + movs r4, 0x16 + ldrsh r0, [r3, r4] + mov r10, r1 + mov r9, r2 + cmp r0, 0 + beq _080880FC + movs r1, 0x14 + ldrsh r0, [r3, r1] + cmp r0, 0xE + bhi _080880FC + lsls r0, 2 + ldr r1, _08088080 @ =_08088084 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808807C: .4byte gUnknown_3005090 +_08088080: .4byte _08088084 + .align 2, 0 +_08088084: + .4byte _080880C0 + .4byte _080880FC + .4byte _080880C8 + .4byte _080880FC + .4byte _080880D0 + .4byte _080880FC + .4byte _080880D8 + .4byte _080880FC + .4byte _080880E0 + .4byte _080880FC + .4byte _080880E8 + .4byte _080880FC + .4byte _080880F0 + .4byte _080880FC + .4byte _080880F8 +_080880C0: + ldr r0, _080880C4 @ =gUnknown_2022974 + b _080880FA + .align 2, 0 +_080880C4: .4byte gUnknown_2022974 +_080880C8: + ldr r0, _080880CC @ =gUnknown_2022976 + b _080880FA + .align 2, 0 +_080880CC: .4byte gUnknown_2022976 +_080880D0: + ldr r0, _080880D4 @ =gUnknown_2022978 + b _080880FA + .align 2, 0 +_080880D4: .4byte gUnknown_2022978 +_080880D8: + ldr r0, _080880DC @ =gUnknown_202297A + b _080880FA + .align 2, 0 +_080880DC: .4byte gUnknown_202297A +_080880E0: + ldr r0, _080880E4 @ =gUnknown_202297C + b _080880FA + .align 2, 0 +_080880E4: .4byte gUnknown_202297C +_080880E8: + ldr r0, _080880EC @ =gUnknown_202297E + b _080880FA + .align 2, 0 +_080880EC: .4byte gUnknown_202297E +_080880F0: + ldr r0, _080880F4 @ =gUnknown_2022980 + b _080880FA + .align 2, 0 +_080880F4: .4byte gUnknown_2022980 +_080880F8: + ldr r0, _0808815C @ =gUnknown_2022982 +_080880FA: + ldrh r6, [r0] +_080880FC: + mov r0, r9 + add r0, r12 + lsls r0, 3 + mov r2, r10 + adds r1, r0, r2 + ldrh r2, [r1, 0x10] + movs r3, 0x10 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _08088168 + subs r0, r2, 0x1 + strh r0, [r1, 0x10] + movs r4, 0xE + ldrsh r0, [r1, r4] + movs r3, 0xA0 + lsls r3, 1 + adds r2, r0, r3 + movs r4, 0x8 + ldrsh r3, [r1, r4] + movs r4, 0xA + ldrsh r0, [r1, r4] + cmp r3, r0 + bge _080881D0 + ldr r5, _08088160 @ =gUnknown_2038700 + ldr r0, _08088164 @ =gUnknown_2039600 + mov r8, r0 + adds r7, r1, 0 + lsls r0, r2, 1 + adds r4, r0, r5 +_08088136: + lsls r2, r3, 1 + mov r0, r8 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r5 + ldrh r0, [r4] + adds r0, r6 + strh r0, [r2] + adds r4, 0x2 + adds r3, 0x1 + movs r1, 0xA + ldrsh r0, [r7, r1] + cmp r3, r0 + blt _08088136 + b _080881D0 + .align 2, 0 +_0808815C: .4byte gUnknown_2022982 +_08088160: .4byte gUnknown_2038700 +_08088164: .4byte gUnknown_2039600 +_08088168: + ldrh r0, [r1, 0x12] + strh r0, [r1, 0x10] + movs r2, 0xE + ldrsh r0, [r1, r2] + movs r3, 0xA0 + lsls r3, 1 + adds r2, r0, r3 + movs r4, 0x8 + ldrsh r3, [r1, r4] + movs r4, 0xA + ldrsh r0, [r1, r4] + cmp r3, r0 + bge _080881B0 + ldr r5, _080881E0 @ =gUnknown_2038700 + adds r7, r1, 0 + lsls r0, r2, 1 + adds r4, r0, r5 + ldr r0, _080881E4 @ =gUnknown_2039600 + mov r8, r0 +_0808818E: + lsls r2, r3, 1 + mov r0, r8 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r5 + ldrh r0, [r4] + adds r0, r6 + strh r0, [r2] + adds r4, 0x2 + adds r3, 0x1 + movs r1, 0xA + ldrsh r0, [r7, r1] + cmp r3, r0 + blt _0808818E +_080881B0: + mov r0, r9 + add r0, r12 + lsls r0, 3 + mov r3, r10 + adds r2, r0, r3 + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r4, 0xC + ldrsh r1, [r2, r4] + cmp r0, r1 + bne _080881D0 + movs r0, 0 + strh r0, [r2, 0xE] +_080881D0: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080881E0: .4byte gUnknown_2038700 +_080881E4: .4byte gUnknown_2039600 + thumb_func_end sub_8088020 + + thumb_func_start sub_80881E8 +sub_80881E8: @ 80881E8 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + movs r1, 0 + movs r2, 0 + ldr r0, _0808822C @ =gUnknown_825E074 + mov r12, r0 +_080881FC: + lsls r0, r1, 1 + adds r3, r0, r6 + lsls r0, r2, 1 + add r0, r12 + movs r7, 0 + ldrsh r0, [r0, r7] + muls r0, r4 + cmp r0, 0 + bge _08088210 + adds r0, 0xFF +_08088210: + asrs r0, 8 + strh r0, [r3] + adds r0, r2, r5 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0xFF + bls _080881FC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808822C: .4byte gUnknown_825E074 + thumb_func_end sub_80881E8 + + thumb_func_start sub_8088230 +sub_8088230: @ 8088230 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r5, r0, 0 + str r1, [sp, 0x10] + ldr r0, [sp, 0x40] + mov r8, r0 + ldr r1, [sp, 0x44] + mov r9, r1 + ldr r0, [sp, 0x48] + mov r10, r0 + lsls r5, 24 + lsrs r5, 24 + ldr r1, [sp, 0x10] + lsls r1, 24 + str r1, [sp, 0x14] + lsrs r0, r1, 24 + str r0, [sp, 0xC] + lsls r1, r2, 24 + lsrs r1, 24 + str r1, [sp, 0x18] + lsls r2, r3, 24 + lsrs r2, 24 + str r2, [sp, 0x1C] + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r3, r9 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + mov r0, r10 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + bl sub_8087EA4 + ldr r0, _0808833C @ =0x04000010 + add r0, r9 + str r0, [sp] + ldr r0, _08088340 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + movs r1, 0 + strb r1, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_8087EE4 + ldr r0, _08088344 @ =sub_8088020 + movs r1, 0 + bl sub_807741C + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08088348 @ =gUnknown_3005090 + lsls r4, r7, 2 + adds r4, r7 + lsls r4, 3 + adds r4, r0 + strh r5, [r4, 0x8] + mov r3, sp + ldrh r3, [r3, 0xC] + strh r3, [r4, 0xA] + movs r0, 0x80 + lsls r0, 1 + ldr r1, [sp, 0x18] + bl __divsi3 + strh r0, [r4, 0xC] + movs r0, 0 + strh r0, [r4, 0xE] + mov r1, r8 + strh r1, [r4, 0x10] + strh r1, [r4, 0x12] + mov r3, r9 + strh r3, [r4, 0x14] + mov r0, r10 + strh r0, [r4, 0x16] + ldr r0, _0808834C @ =gUnknown_2039600 + strb r7, [r0, 0x18] + ldr r0, _08088350 @ =gUnknown_203961C + movs r1, 0 + strb r1, [r0] + ldr r4, _08088354 @ =gUnknown_2038980 + ldr r3, [sp, 0xC] + subs r6, r3, r5 + lsls r3, r6, 24 + lsrs r3, 24 + adds r0, r4, 0 + ldr r1, [sp, 0x18] + ldr r2, [sp, 0x1C] + bl sub_80881E8 + ldr r0, [sp, 0xC] + cmp r5, r0 + bge _0808832A + ldr r1, _08088358 @ =0xfffffd80 + adds r2, r4, r1 + lsls r1, r5, 1 + movs r3, 0xF0 + lsls r3, 3 + adds r0, r1, r3 + adds r3, r0, r2 + adds r1, r2 + adds r2, r4, 0 + adds r5, r6, 0 +_08088316: + ldrh r0, [r2] + strh r0, [r1] + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + adds r1, 0x2 + subs r5, 0x1 + cmp r5, 0 + bne _08088316 +_0808832A: + adds r0, r7, 0 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0808833C: .4byte 0x04000010 +_08088340: .4byte 0xa2600001 +_08088344: .4byte sub_8088020 +_08088348: .4byte gUnknown_3005090 +_0808834C: .4byte gUnknown_2039600 +_08088350: .4byte gUnknown_203961C +_08088354: .4byte gUnknown_2038980 +_08088358: .4byte 0xfffffd80 + thumb_func_end sub_8088230 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/util.s b/asm/util.s new file mode 100644 index 000000000..846f767bb --- /dev/null +++ b/asm/util.s @@ -0,0 +1,500 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8044EF8 +sub_8044EF8: @ 8044EF8 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _08044F2C @ =gUnknown_825E4DC + movs r1, 0xF8 + movs r2, 0xA8 + movs r3, 0xE + bl sub_8006F8C + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08044F30 @ =gUnknown_202063C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r3, r2, r5 + adds r3, 0x3E + ldrb r1, [r3] + movs r4, 0x4 + orrs r1, r4 + strb r1, [r3] + adds r5, 0x1C + adds r2, r5 + str r6, [r2] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08044F2C: .4byte gUnknown_825E4DC +_08044F30: .4byte gUnknown_202063C + thumb_func_end sub_8044EF8 + + thumb_func_start sub_8044F34 +sub_8044F34: @ 8044F34 + strh r1, [r0] + lsrs r1, 16 + strh r1, [r0, 0x2] + bx lr + thumb_func_end sub_8044F34 + + thumb_func_start sub_8044F3C +sub_8044F3C: @ 8044F3C + ldrh r2, [r0] + movs r3, 0x2 + ldrsh r0, [r0, r3] + lsls r0, 16 + orrs r2, r0 + str r2, [r1] + bx lr + thumb_func_end sub_8044F3C + + thumb_func_start sub_8044F4C +sub_8044F4C: @ 8044F4C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, [sp, 0x18] + ldr r5, [sp, 0x1C] + ldr r6, [sp, 0x20] + ldr r7, [sp, 0x24] + mov r8, r7 + str r1, [r0] + str r2, [r0, 0x4] + strh r3, [r0, 0x8] + strh r4, [r0, 0xA] + strh r5, [r0, 0xC] + strh r6, [r0, 0xE] + mov r1, r8 + strh r1, [r0, 0x10] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8044F4C + + thumb_func_start sub_8044F78 +sub_8044F78: @ 8044F78 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x24 + mov r8, r0 + ldr r0, [sp, 0x38] + ldr r4, [sp, 0x3C] + ldr r5, [sp, 0x40] + ldr r6, [sp, 0x44] + lsls r6, 16 + lsrs r6, 16 + lsls r3, 16 + asrs r3, 16 + lsls r0, 16 + asrs r0, 16 + str r0, [sp] + lsls r4, 16 + asrs r4, 16 + str r4, [sp, 0x4] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x8] + str r6, [sp, 0xC] + add r0, sp, 0x10 + bl sub_8044F4C + add r0, sp, 0x10 + mov r1, r8 + movs r2, 0x1 + bl BgAffineSet + add sp, 0x24 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8044F78 + + thumb_func_start sub_8044FC4 +sub_8044FC4: @ 8044FC4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + str r2, [sp, 0x20] + adds r4, r3, 0 + ldr r7, [sp, 0x5C] + lsls r0, 24 + lsls r1, 24 + ldr r2, _0804504C @ =gUnknown_825E4F4 + lsrs r1, 23 + lsrs r0, 21 + adds r1, r0 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + str r0, [sp, 0x24] + adds r1, r2 + ldrb r1, [r1] + str r1, [sp, 0x28] + movs r1, 0 + cmp r1, r0 + bcc _08044FF8 + b _0804517A +_08044FF8: + movs r0, 0x20 + ldr r2, [sp, 0x28] + subs r0, r2 + lsls r0, 1 + str r0, [sp, 0x2C] +_08045002: + movs r2, 0 + adds r1, 0x1 + str r1, [sp, 0x34] + ldr r3, [sp, 0x28] + cmp r2, r3 + bcc _08045010 + b _08045168 +_08045010: + ldr r0, _08045050 @ =0x040000d4 + mov r8, r0 +_08045014: + ldrh r1, [r4] + ldr r0, _08045054 @ =0x000003ff + ands r0, r1 + lsls r0, 5 + mov r12, r0 + movs r0, 0xC0 + lsls r0, 4 + ands r0, r1 + mov r3, sp + strh r1, [r3, 0x38] + cmp r0, 0 + bne _0804505C + ldr r0, [sp, 0x20] + add r0, r12 + mov r1, r8 + str r0, [r1] + str r7, [r1, 0x4] + ldr r3, _08045058 @ =0x84000008 + str r3, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r4, 0x2 + str r4, [sp, 0x30] + adds r7, 0x20 + mov r10, r7 + adds r2, 0x1 + mov r9, r2 + b _08045156 + .align 2, 0 +_0804504C: .4byte gUnknown_825E4F4 +_08045050: .4byte 0x040000d4 +_08045054: .4byte 0x000003ff +_08045058: .4byte 0x84000008 +_0804505C: + movs r1, 0x80 + lsls r1, 4 + cmp r0, r1 + bne _080450AC + movs r3, 0 + adds r4, 0x2 + str r4, [sp, 0x30] + movs r0, 0x20 + adds r0, r7 + mov r10, r0 + adds r2, 0x1 + mov r9, r2 + ldr r4, _080450A4 @ =0x040000d4 + ldr r6, _080450A8 @ =0x84000001 + movs r5, 0x7 +_0804507A: + lsls r2, r3, 24 + asrs r2, 24 + subs r0, r5, r2 + lsls r0, 2 + add r0, r12 + ldr r1, [sp, 0x20] + adds r0, r1, r0 + lsls r1, r2, 2 + adds r1, r7, r1 + str r0, [r4] + str r1, [r4, 0x4] + str r6, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r2, 0x1 + lsls r2, 24 + lsrs r3, r2, 24 + asrs r2, 24 + cmp r2, 0x7 + ble _0804507A + b _08045156 + .align 2, 0 +_080450A4: .4byte 0x040000d4 +_080450A8: .4byte 0x84000001 +_080450AC: + movs r3, 0 + adds r4, 0x2 + str r4, [sp, 0x30] + movs r0, 0x20 + adds r0, r7 + mov r10, r0 + adds r2, 0x1 + mov r9, r2 +_080450BC: + movs r2, 0 + lsls r4, r3, 24 + lsls r0, r4, 2 + lsrs r0, 24 + adds r6, r0, 0x3 + mov r1, r12 + adds r5, r1, r0 +_080450CA: + lsls r1, r2, 24 + asrs r1, 24 + subs r0, r6, r1 + mov r2, sp + adds r3, r2, r0 + adds r0, r5, r1 + ldr r2, [sp, 0x20] + adds r0, r2, r0 + ldrb r2, [r0] + movs r0, 0xF + ands r0, r2 + lsls r0, 4 + lsrs r2, 4 + orrs r0, r2 + strb r0, [r3] + adds r1, 0x1 + lsls r1, 24 + lsrs r2, r1, 24 + asrs r1, 24 + cmp r1, 0x3 + ble _080450CA + movs r3, 0x80 + lsls r3, 17 + adds r0, r4, r3 + lsrs r3, r0, 24 + asrs r0, 24 + cmp r0, 0x7 + ble _080450BC + movs r0, 0x80 + lsls r0, 4 + mov r1, sp + ldrh r1, [r1, 0x38] + ands r0, r1 + cmp r0, 0 + beq _08045148 + movs r3, 0 + ldr r4, _08045140 @ =0x040000d4 + ldr r6, _08045144 @ =0x84000001 + movs r5, 0x7 +_08045118: + lsls r1, r3, 24 + asrs r1, 24 + subs r0, r5, r1 + lsls r0, 2 + mov r3, sp + adds r2, r3, r0 + lsls r0, r1, 2 + adds r0, r7, r0 + str r2, [r4] + str r0, [r4, 0x4] + str r6, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r1, 0x1 + lsls r1, 24 + lsrs r3, r1, 24 + asrs r1, 24 + cmp r1, 0x7 + ble _08045118 + b _08045156 + .align 2, 0 +_08045140: .4byte 0x040000d4 +_08045144: .4byte 0x84000001 +_08045148: + mov r0, sp + mov r1, r8 + str r0, [r1] + str r7, [r1, 0x4] + ldr r2, _0804518C @ =0x84000008 + str r2, [r1, 0x8] + ldr r0, [r1, 0x8] +_08045156: + ldr r4, [sp, 0x30] + mov r7, r10 + mov r3, r9 + lsls r0, r3, 24 + lsrs r2, r0, 24 + ldr r0, [sp, 0x28] + cmp r2, r0 + bcs _08045168 + b _08045014 +_08045168: + ldr r1, [sp, 0x2C] + adds r4, r1 + ldr r2, [sp, 0x34] + lsls r0, r2, 24 + lsrs r1, r0, 24 + ldr r3, [sp, 0x24] + cmp r1, r3 + bcs _0804517A + b _08045002 +_0804517A: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804518C: .4byte 0x84000008 + thumb_func_end sub_8044FC4 + + thumb_func_start sub_8045190 +sub_8045190: @ 8045190 + push {lr} + adds r2, r0, 0 + movs r1, 0 + movs r3, 0x1 +_08045198: + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _080451A4 + adds r0, r1, 0 + b _080451B2 +_080451A4: + lsrs r2, 1 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _08045198 + movs r0, 0 +_080451B2: + pop {r1} + bx r1 + thumb_func_end sub_8045190 + + thumb_func_start sub_80451B8 +sub_80451B8: @ 80451B8 + push {r4-r7,lr} + adds r7, r0, 0 + adds r4, r1, 0 + ldr r2, _080451E8 @ =0x00001121 + movs r3, 0 + cmp r3, r4 + bcs _08045204 + movs r6, 0x1 + ldr r0, _080451EC @ =0x00008408 + adds r5, r0, 0 +_080451CC: + adds r0, r7, r3 + ldrb r0, [r0] + eors r2, r0 + movs r1, 0 + adds r3, 0x1 +_080451D6: + adds r0, r2, 0 + ands r0, r6 + cmp r0, 0 + beq _080451F0 + lsrs r0, r2, 1 + eors r0, r5 + lsls r0, 16 + lsrs r2, r0, 16 + b _080451F2 + .align 2, 0 +_080451E8: .4byte 0x00001121 +_080451EC: .4byte 0x00008408 +_080451F0: + lsrs r2, 1 +_080451F2: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x7 + bls _080451D6 + lsls r0, r3, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bcc _080451CC +_08045204: + mvns r0, r2 + lsls r0, 16 + lsrs r0, 16 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80451B8 + + thumb_func_start sub_8045210 +sub_8045210: @ 8045210 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r2, _0804524C @ =0x00001121 + movs r3, 0 + cmp r3, r4 + bcs _0804523E + ldr r6, _08045250 @ =gUnknown_825E50C +_08045220: + lsrs r1, r2, 8 + adds r0, r5, r3 + ldrb r0, [r0] + eors r2, r0 + lsls r0, r2, 24 + lsrs r0, 23 + adds r0, r6 + ldrh r0, [r0] + adds r2, r0, 0 + eors r2, r1 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bcc _08045220 +_0804523E: + mvns r0, r2 + lsls r0, 16 + lsrs r0, 16 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0804524C: .4byte 0x00001121 +_08045250: .4byte gUnknown_825E50C + thumb_func_end sub_8045210 + + thumb_func_start sub_8045254 +sub_8045254: @ 8045254 + push {r4,lr} + adds r4, r0, 0 + movs r3, 0 + movs r2, 0 + cmp r3, r1 + bcs _0804526C +_08045260: + adds r0, r4, r2 + ldrb r0, [r0] + adds r3, r0 + adds r2, 0x1 + cmp r2, r1 + bcc _08045260 +_0804526C: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8045254 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/vs_seeker.s b/asm/vs_seeker.s new file mode 100644 index 000000000..f9ecd9533 --- /dev/null +++ b/asm/vs_seeker.s @@ -0,0 +1,1767 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810C670 +sub_810C670: @ 810C670 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r2, 0 + ldr r7, _0810C6C0 @ =gUnknown_203ADB8 + lsls r1, r4, 2 + adds r0, r1, r4 + lsls r3, r0, 3 + ldr r5, _0810C6C4 @ =gUnknown_3005098 + adds r6, r1, 0 + movs r1, 0 +_0810C686: + lsls r0, r2, 1 + adds r0, r3 + adds r0, r5 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0810C686 + adds r5, r7, 0 + ldr r0, _0810C6C8 @ =0x00000434 + bl sub_8002BB0 + str r0, [r5] + bl sub_810C808 + bl sub_810C96C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0 + bne _0810C6D0 + ldr r0, [r5] + bl sub_8002BC4 + ldr r2, _0810C6CC @ =gUnknown_81C137C + b _0810C6DC + .align 2, 0 +_0810C6C0: .4byte gUnknown_203ADB8 +_0810C6C4: .4byte gUnknown_3005098 +_0810C6C8: .4byte 0x00000434 +_0810C6CC: .4byte gUnknown_81C137C +_0810C6D0: + cmp r0, 0x1 + bne _0810C6F0 + ldr r0, [r7] + bl sub_8002BC4 + ldr r2, _0810C6E8 @ =gUnknown_81C13D6 +_0810C6DC: + ldr r3, _0810C6EC @ =sub_80A1E0C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F7808 + b _0810C718 + .align 2, 0 +_0810C6E8: .4byte gUnknown_81C13D6 +_0810C6EC: .4byte sub_80A1E0C +_0810C6F0: + cmp r1, 0x2 + bne _0810C718 + ldr r0, _0810C720 @ =gUnknown_203AD30 + ldrh r2, [r0] + ldr r3, _0810C724 @ =0x0000ffff + movs r0, 0x4 + movs r1, 0 + bl sub_80A2294 + movs r0, 0x41 + bl sub_8083444 + ldr r1, _0810C728 @ =gUnknown_3005090 + adds r0, r6, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810C72C @ =sub_810C730 + str r1, [r0] + movs r1, 0xF + strh r1, [r0, 0x8] +_0810C718: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C720: .4byte gUnknown_203AD30 +_0810C724: .4byte 0x0000ffff +_0810C728: .4byte gUnknown_3005090 +_0810C72C: .4byte sub_810C730 + thumb_func_end sub_810C670 + + thumb_func_start sub_810C730 +sub_810C730: @ 810C730 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0810C758 @ =gUnknown_3005090 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r1, 0x8] + subs r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + cmp r0, 0 + bne _0810C754 + ldr r0, _0810C75C @ =sub_810C760 + str r0, [r1] + movs r0, 0x10 + strh r0, [r1, 0xA] +_0810C754: + pop {r0} + bx r0 + .align 2, 0 +_0810C758: .4byte gUnknown_3005090 +_0810C75C: .4byte sub_810C760 + thumb_func_end sub_810C730 + + thumb_func_start sub_810C760 +sub_810C760: @ 810C760 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0810C7E8 @ =gUnknown_3005098 + adds r4, r0, r1 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x2 + beq _0810C794 + ldrh r0, [r4, 0x2] + subs r0, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + cmp r0, 0 + bne _0810C794 + movs r0, 0x5E + bl sub_80722CC + movs r0, 0xB + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x4] + adds r0, 0x1 + strh r0, [r4, 0x4] +_0810C794: + movs r0, 0x41 + bl sub_808382C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0810C7E2 + strh r0, [r4, 0x2] + strh r0, [r4, 0x4] + bl sub_810C604 + ldr r0, _0810C7EC @ =gUnknown_845318C + bl sub_810C9A8 + ldr r1, _0810C7F0 @ =gUnknown_203ADB8 + ldr r2, [r1] + ldr r1, _0810C7F4 @ =0x00000431 + adds r2, r1 + lsls r0, 3 + ldrb r3, [r2] + movs r1, 0x7 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + ldr r0, _0810C7F8 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + ldr r3, _0810C7FC @ =gUnknown_8453F5C + movs r0, 0xFF + bl sub_8097434 + ldr r1, _0810C800 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _0810C804 @ =sub_810C8EC + str r1, [r0] +_0810C7E2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810C7E8: .4byte gUnknown_3005098 +_0810C7EC: .4byte gUnknown_845318C +_0810C7F0: .4byte gUnknown_203ADB8 +_0810C7F4: .4byte 0x00000431 +_0810C7F8: .4byte gUnknown_3005008 +_0810C7FC: .4byte gUnknown_8453F5C +_0810C800: .4byte gUnknown_3005090 +_0810C804: .4byte sub_810C8EC + thumb_func_end sub_810C760 + + thumb_func_start sub_810C808 +sub_810C808: @ 810C808 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _0810C8DC @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0x8E + lsls r1, 4 + adds r2, r0, r1 + movs r1, 0 + mov r0, sp + strb r1, [r0] + mov r8, r1 + mov r9, r1 + ldr r0, _0810C8E0 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + ldrb r0, [r0] + cmp r8, r0 + bge _0810C8BC + ldr r7, _0810C8E4 @ =gUnknown_203ADB8 + mov r6, sp + ldr r0, _0810C8E8 @ =gUnknown_2036E38 + mov r10, r0 + adds r5, r2, 0 +_0810C83C: + ldrh r0, [r5, 0xC] + cmp r0, 0x1 + beq _0810C846 + cmp r0, 0x3 + bne _0810C8AC +_0810C846: + ldr r1, [r7] + mov r2, r8 + lsls r4, r2, 4 + adds r1, r4 + ldr r0, [r5, 0x10] + str r0, [r1] + ldr r0, [r5, 0x10] + bl sub_810D074 + ldr r1, [r7] + adds r1, r4 + strh r0, [r1, 0x4] + ldrb r0, [r5] + strb r0, [r1, 0x6] + ldrb r0, [r5] + ldr r1, _0810C8DC @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl sub_805DF84 + ldr r0, [r7] + adds r0, r4 + ldrb r1, [r6] + strb r1, [r0, 0x7] + ldr r2, [r7] + adds r2, r4 + ldrb r1, [r6] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r0, [r0, 0x10] + subs r0, 0x7 + strh r0, [r2, 0x8] + ldrb r1, [r6] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrh r0, [r0, 0x12] + subs r0, 0x7 + strh r0, [r2, 0xA] + ldrb r0, [r5, 0x1] + strb r0, [r2, 0xC] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 +_0810C8AC: + adds r5, 0x18 + movs r0, 0x1 + add r9, r0 + ldr r0, _0810C8E0 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + ldrb r0, [r0] + cmp r9, r0 + blt _0810C83C +_0810C8BC: + ldr r0, _0810C8E4 @ =gUnknown_203ADB8 + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, 4 + adds r0, r1 + movs r1, 0xFF + strb r1, [r0, 0x6] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C8DC: .4byte gUnknown_3005008 +_0810C8E0: .4byte gUnknown_2036DFC +_0810C8E4: .4byte gUnknown_203ADB8 +_0810C8E8: .4byte gUnknown_2036E38 + thumb_func_end sub_810C808 + + thumb_func_start sub_810C8EC +sub_810C8EC: @ 810C8EC + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + ldr r0, _0810C928 @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + movs r0, 0xFF + bl sub_809748C + lsls r0, 24 + cmp r0, 0 + beq _0810C962 + ldr r0, _0810C92C @ =gUnknown_203ADB8 + ldr r0, [r0] + ldr r1, _0810C930 @ =0x00000431 + adds r0, r1 + ldrb r0, [r0] + movs r1, 0xF8 + ands r1, r0 + cmp r1, 0 + bne _0810C93C + ldr r2, _0810C934 @ =gUnknown_81C1429 + ldr r3, _0810C938 @ =sub_80A1E0C + adds r0, r4, 0 + movs r1, 0x2 + bl sub_80F7808 + b _0810C95A + .align 2, 0 +_0810C928: .4byte gUnknown_3005008 +_0810C92C: .4byte gUnknown_203ADB8 +_0810C930: .4byte 0x00000431 +_0810C934: .4byte gUnknown_81C1429 +_0810C938: .4byte sub_80A1E0C +_0810C93C: + cmp r1, 0x10 + bne _0810C944 + bl sub_810D304 +_0810C944: + movs r0, 0 + movs r1, 0x1 + bl sub_80F6F54 + bl sub_80696C0 + bl sub_806994C + adds r0, r5, 0 + bl sub_8077508 +_0810C95A: + ldr r0, _0810C968 @ =gUnknown_203ADB8 + ldr r0, [r0] + bl sub_8002BC4 +_0810C962: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810C968: .4byte gUnknown_203ADB8 + thumb_func_end sub_810C8EC + + thumb_func_start sub_810C96C +sub_810C96C: @ 810C96C + push {lr} + ldr r0, _0810C990 @ =gUnknown_3005008 + ldr r0, [r0] + movs r1, 0xC7 + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x64 + bne _0810C998 + bl sub_810D1CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0810C994 + movs r0, 0x1 + b _0810C9A4 + .align 2, 0 +_0810C990: .4byte gUnknown_3005008 +_0810C994: + movs r0, 0x2 + b _0810C9A4 +_0810C998: + movs r1, 0x64 + subs r1, r0 + movs r0, 0 + bl sub_80CBED4 + movs r0, 0 +_0810C9A4: + pop {r1} + bx r1 + thumb_func_end sub_810C96C + + thumb_func_start sub_810C9A8 +sub_810C9A8: @ 810C9A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + str r0, [sp, 0x4] + movs r0, 0 + mov r8, r0 + mov r0, sp + mov r1, r8 + strb r1, [r0] + movs r2, 0 + mov r9, r2 + ldr r4, _0810CA14 @ =gUnknown_203ADB8 + ldr r0, [r4] + ldrb r0, [r0, 0x6] + cmp r0, 0xFF + bne _0810C9D0 + b _0810CB2C +_0810C9D0: + adds r6, r4, 0 + movs r3, 0x86 + lsls r3, 3 + mov r10, r3 + movs r5, 0 +_0810C9DA: + ldr r0, [r6] + adds r0, r5 + bl sub_810D0FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0810C9EC + b _0810CB18 +_0810C9EC: + ldr r0, [r4] + adds r0, r5 + ldrh r0, [r0, 0x4] + mov r8, r0 + bl sub_8080424 + lsls r0, 24 + cmp r0, 0 + bne _0810CA20 + ldr r0, [r6] + adds r0, r5 + ldr r1, _0810CA18 @ =gUnknown_8453F60 + bl sub_810D24C + ldr r2, [r6] + ldr r0, _0810CA1C @ =0x00000431 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x1 + b _0810CB14 + .align 2, 0 +_0810CA14: .4byte gUnknown_203ADB8 +_0810CA18: .4byte gUnknown_8453F60 +_0810CA1C: .4byte 0x00000431 +_0810CA20: + ldr r0, [sp, 0x4] + mov r1, r8 + mov r2, sp + bl sub_810D164 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _0810CA50 + ldr r0, [r6] + adds r0, r5 + ldr r1, _0810CA48 @ =gUnknown_8453F62 + bl sub_810D24C + ldr r2, [r6] + ldr r3, _0810CA4C @ =0x00000431 + adds r2, r3 + ldrb r0, [r2] + movs r1, 0x2 + b _0810CB14 + .align 2, 0 +_0810CA48: .4byte gUnknown_8453F62 +_0810CA4C: .4byte 0x00000431 +_0810CA50: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r4, r0, 16 + mov r0, r9 + mov r1, r8 + bl sub_810D280 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0810CA76 + movs r4, 0x64 + b _0810CA7C +_0810CA76: + cmp r0, 0x1 + bne _0810CA7C + movs r4, 0 +_0810CA7C: + cmp r4, 0x1D + bhi _0810CAA0 + ldr r0, [r6] + adds r0, r5 + ldr r1, _0810CA98 @ =gUnknown_8453F62 + bl sub_810D24C + ldr r2, [r6] + ldr r0, _0810CA9C @ =0x00000431 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x2 + b _0810CB14 + .align 2, 0 +_0810CA98: .4byte gUnknown_8453F62 +_0810CA9C: .4byte 0x00000431 +_0810CAA0: + ldr r0, _0810CB54 @ =gUnknown_3005008 + ldr r1, [r0] + ldr r0, [r6] + adds r0, r5 + ldr r2, _0810CB58 @ =0x0000063a + adds r1, r2 + ldrb r0, [r0, 0x6] + adds r1, r0 + strb r7, [r1] + ldr r0, [r6] + adds r0, r5 + ldrb r1, [r0, 0x7] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0810CB5C @ =gUnknown_2036E38 + adds r0, r1 + bl sub_805F818 + ldr r0, [r6] + adds r0, r5 + ldr r1, _0810CB60 @ =gUnknown_8453F64 + bl sub_810D24C + ldr r2, [r6] + mov r3, r10 + adds r0, r2, r3 + ldrb r1, [r0] + lsls r1, 1 + movs r3, 0x80 + lsls r3, 3 + adds r0, r2, r3 + adds r0, r1 + mov r1, r8 + strh r1, [r0] + adds r2, r5 + ldrb r0, [r2, 0xC] + bl sub_810CF90 + ldr r1, [r6] + mov r3, r10 + adds r2, r1, r3 + movs r3, 0x84 + lsls r3, 3 + adds r1, r3 + ldrb r2, [r2] + adds r1, r2 + strb r0, [r1] + ldr r1, [r6] + add r1, r10 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r2, [r6] + ldr r0, _0810CB64 @ =0x00000431 + adds r2, r0 + ldrb r0, [r2] + movs r1, 0x4 +_0810CB14: + orrs r0, r1 + strb r0, [r2] +_0810CB18: + adds r5, 0x10 + movs r1, 0x1 + add r9, r1 + ldr r4, _0810CB68 @ =gUnknown_203ADB8 + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0, 0x6] + cmp r0, 0xFF + beq _0810CB2C + b _0810C9DA +_0810CB2C: + ldr r2, _0810CB68 @ =gUnknown_203ADB8 + ldr r0, [r2] + ldr r3, _0810CB64 @ =0x00000431 + adds r0, r3 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0810CB70 + movs r0, 0x15 + bl sub_80722CC + ldr r0, _0810CB6C @ =0x00000801 + bl sub_806E680 + bl sub_810C640 + movs r0, 0x2 + b _0810CB7E + .align 2, 0 +_0810CB54: .4byte gUnknown_3005008 +_0810CB58: .4byte 0x0000063a +_0810CB5C: .4byte gUnknown_2036E38 +_0810CB60: .4byte gUnknown_8453F64 +_0810CB64: .4byte 0x00000431 +_0810CB68: .4byte gUnknown_203ADB8 +_0810CB6C: .4byte 0x00000801 +_0810CB70: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0810CB7C + movs r0, 0 + b _0810CB7E +_0810CB7C: + movs r0, 0x1 +_0810CB7E: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810C9A8 + + thumb_func_start sub_810CB90 +sub_810CB90: @ 810CB90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r1, 0 + mov r0, sp + strb r1, [r0] + ldr r5, _0810CC54 @ =gUnknown_3005008 + ldr r0, [r5] + movs r1, 0x8E + lsls r1, 4 + adds r4, r0, r1 + ldr r0, _0810CC58 @ =gUnknown_845318C + ldr r1, _0810CC5C @ =gUnknown_20386AE + ldrh r1, [r1] + bl sub_810CE10 + mov r9, r0 + movs r0, 0x1 + negs r0, r0 + cmp r9, r0 + beq _0810CC8A + movs r0, 0 + mov r8, r0 + ldr r0, _0810CC60 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + ldrb r0, [r0] + cmp r8, r0 + bge _0810CC8A + mov r10, r5 + adds r6, r4, 0 + adds r5, r6, 0 +_0810CBD4: + ldrh r0, [r5, 0xC] + cmp r0, 0x1 + beq _0810CBDE + cmp r0, 0x3 + bne _0810CC78 +_0810CBDE: + ldr r0, [r5, 0x10] + bl sub_810D074 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _0810CC58 @ =gUnknown_845318C + bl sub_810CE10 + cmp r9, r0 + bne _0810CC78 + ldrb r0, [r5] + mov r1, r10 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl sub_805DF84 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0810CC64 @ =gUnknown_2036E38 + adds r4, r0, r1 + adds r0, r6, 0 + bl sub_810CF54 + ldr r7, _0810CC68 @ =gUnknown_8453F67 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r0, r7 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_805FE7C + mov r1, r10 + ldr r0, [r1] + ldr r1, _0810CC6C @ =0x0000063a + adds r0, r1 + ldrb r1, [r5] + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, _0810CC70 @ =gUnknown_3005074 + mov r1, sp + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0810CC74 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r0, r7 + ldrb r0, [r0] + b _0810CC76 + .align 2, 0 +_0810CC54: .4byte gUnknown_3005008 +_0810CC58: .4byte gUnknown_845318C +_0810CC5C: .4byte gUnknown_20386AE +_0810CC60: .4byte gUnknown_2036DFC +_0810CC64: .4byte gUnknown_2036E38 +_0810CC68: .4byte gUnknown_8453F67 +_0810CC6C: .4byte 0x0000063a +_0810CC70: .4byte gUnknown_3005074 +_0810CC74: + movs r0, 0x8 +_0810CC76: + strb r0, [r4, 0x6] +_0810CC78: + adds r5, 0x18 + adds r6, 0x18 + movs r0, 0x1 + add r8, r0 + ldr r0, _0810CC9C @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + ldrb r0, [r0] + cmp r8, r0 + blt _0810CBD4 +_0810CC8A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810CC9C: .4byte gUnknown_2036DFC + thumb_func_end sub_810CB90 + + thumb_func_start sub_810CCA0 +sub_810CCA0: @ 810CCA0 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r0, [r4] + cmp r0, 0x5 + bhi _0810CD0A + lsls r0, 2 + ldr r1, _0810CCB8 @ =_0810CCBC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810CCB8: .4byte _0810CCBC + .align 2, 0 +_0810CCBC: + .4byte _0810CD0A + .4byte _0810CCD4 + .4byte _0810CCDC + .4byte _0810CCE4 + .4byte _0810CCEC + .4byte _0810CCF4 +_0810CCD4: + ldr r0, _0810CCD8 @ =0x00000292 + b _0810CCF6 + .align 2, 0 +_0810CCD8: .4byte 0x00000292 +_0810CCDC: + ldr r0, _0810CCE0 @ =0x00000896 + b _0810CCF6 + .align 2, 0 +_0810CCE0: .4byte 0x00000896 +_0810CCE4: + ldr r0, _0810CCE8 @ =0x00000897 + b _0810CCF6 + .align 2, 0 +_0810CCE8: .4byte 0x00000897 +_0810CCEC: + ldr r0, _0810CCF0 @ =0x0000082c + b _0810CCF6 + .align 2, 0 +_0810CCF0: .4byte 0x0000082c +_0810CCF4: + ldr r0, _0810CD10 @ =0x00000844 +_0810CCF6: + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _0810CD0A + ldrb r1, [r4] + adds r0, r5, 0 + bl sub_810CD14 + strb r0, [r4] +_0810CD0A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810CD10: .4byte 0x00000844 + thumb_func_end sub_810CCA0 + + thumb_func_start sub_810CD14 +sub_810CD14: @ 810CD14 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + movs r0, 0xFF + lsls r0, 24 + adds r1, r0 + lsrs r1, 24 + cmp r1, 0 + beq _0810CD46 + ldr r3, _0810CD38 @ =0x0000ffff +_0810CD28: + lsls r0, r1, 1 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, r3 + beq _0810CD3C + adds r0, r1, 0 + b _0810CD48 + .align 2, 0 +_0810CD38: .4byte 0x0000ffff +_0810CD3C: + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0810CD28 +_0810CD46: + movs r0, 0 +_0810CD48: + pop {r1} + bx r1 + thumb_func_end sub_810CD14 + + thumb_func_start sub_810CD4C +sub_810CD4C: @ 810CD4C + push {r4,r5,lr} + ldr r5, _0810CD70 @ =gUnknown_845318C + ldr r4, _0810CD74 @ =gUnknown_20386AE + ldrh r1, [r4] + adds r0, r5, 0 + bl sub_810CD80 + lsls r0, 24 + cmp r0, 0 + bne _0810CD78 + ldrh r1, [r4] + adds r0, r5, 0 + bl sub_810CDB4 + lsls r0, 24 + lsrs r0, 24 + b _0810CD7A + .align 2, 0 +_0810CD70: .4byte gUnknown_845318C +_0810CD74: .4byte gUnknown_20386AE +_0810CD78: + movs r0, 0x1 +_0810CD7A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810CD4C + + thumb_func_start sub_810CD80 +sub_810CD80: @ 810CD80 + push {lr} + lsls r1, 16 + lsrs r1, 16 + bl sub_810D084 + adds r1, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0810CDAC + cmp r1, 0xDC + bhi _0810CDAC + ldr r0, _0810CDA8 @ =gUnknown_20370D2 + ldrh r0, [r0] + bl sub_810D0A8 + cmp r0, 0 + beq _0810CDAC + movs r0, 0x1 + b _0810CDAE + .align 2, 0 +_0810CDA8: .4byte gUnknown_20370D2 +_0810CDAC: + movs r0, 0 +_0810CDAE: + pop {r1} + bx r1 + thumb_func_end sub_810CD80 + + thumb_func_start sub_810CDB4 +sub_810CDB4: @ 810CDB4 + push {r4,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r1, 16 + bl sub_810D084 + adds r1, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0810CDDE + lsls r0, r1, 4 + adds r0, r4 + ldrh r0, [r0] + bl sub_8080424 + lsls r0, 24 + cmp r0, 0 + beq _0810CDDE + movs r0, 0x1 + b _0810CDE0 +_0810CDDE: + movs r0, 0 +_0810CDE0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_810CDB4 + + thumb_func_start sub_810CDE8 +sub_810CDE8: @ 810CDE8 + push {lr} + ldr r0, _0810CE04 @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _0810CE08 @ =gUnknown_20370D2 + ldr r2, _0810CE0C @ =0x0000063a + adds r0, r2 + ldrh r1, [r1] + adds r0, r1 + movs r1, 0 + strb r1, [r0] + bl sub_80803FC + pop {r0} + bx r0 + .align 2, 0 +_0810CE04: .4byte gUnknown_3005008 +_0810CE08: .4byte gUnknown_20370D2 +_0810CE0C: .4byte 0x0000063a + thumb_func_end sub_810CDE8 + + thumb_func_start sub_810CE10 +sub_810CE10: @ 810CE10 + push {r4-r7,lr} + mov r12, r0 + lsls r1, 16 + lsrs r6, r1, 16 + movs r1, 0 + mov r4, r12 + movs r7, 0 +_0810CE1E: + movs r3, 0 + ldrh r0, [r4] + cmp r0, 0 + beq _0810CE4E + ldr r5, _0810CE3C @ =0x0000ffff + mov r0, r12 + adds r2, r7, r0 +_0810CE2C: + ldrh r0, [r2] + cmp r0, r5 + beq _0810CE40 + cmp r0, r6 + bne _0810CE40 + adds r0, r1, 0 + b _0810CE5C + .align 2, 0 +_0810CE3C: .4byte 0x0000ffff +_0810CE40: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, 0x5 + bgt _0810CE4E + ldrh r0, [r2] + cmp r0, 0 + bne _0810CE2C +_0810CE4E: + adds r4, 0x10 + adds r7, 0x10 + adds r1, 0x1 + cmp r1, 0xDC + bls _0810CE1E + movs r0, 0x1 + negs r0, r0 +_0810CE5C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810CE10 + + thumb_func_start sub_810CE64 +sub_810CE64: @ 810CE64 + push {r4,r5,lr} + sub sp, 0x4 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldr r5, _0810CEA4 @ =gUnknown_845318C + adds r0, r5, 0 + mov r2, sp + bl sub_810D164 + mov r4, sp + adds r4, 0x1 + strb r0, [r4] + ldrb r0, [r4] + cmp r0, 0 + beq _0810CEA8 + mov r0, sp + ldrb r0, [r0] + lsls r0, 4 + adds r0, r5 + adds r1, r4, 0 + bl sub_810CCA0 + ldrb r1, [r4] + lsls r1, 1 + mov r0, sp + ldrb r0, [r0] + lsls r0, 4 + adds r1, r0 + adds r1, r5 + ldrh r0, [r1] + b _0810CEAA + .align 2, 0 +_0810CEA4: .4byte gUnknown_845318C +_0810CEA8: + movs r0, 0 +_0810CEAA: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810CE64 + + thumb_func_start sub_810CEB4 +sub_810CEB4: @ 810CEB4 + push {lr} + ldr r0, _0810CEC8 @ =gUnknown_845318C + ldr r1, _0810CECC @ =gUnknown_20386AE + ldrh r1, [r1] + bl sub_810CED0 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0810CEC8: .4byte gUnknown_845318C +_0810CECC: .4byte gUnknown_20386AE + thumb_func_end sub_810CEB4 + + thumb_func_start sub_810CED0 +sub_810CED0: @ 810CED0 + push {lr} + lsls r1, 16 + lsrs r1, 16 + bl sub_810CE10 + adds r1, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0810CEFC + cmp r1, 0xDC + bhi _0810CEFC + ldr r0, _0810CEF8 @ =gUnknown_20370D2 + ldrh r0, [r0] + bl sub_810D0A8 + cmp r0, 0 + beq _0810CEFC + movs r0, 0x1 + b _0810CEFE + .align 2, 0 +_0810CEF8: .4byte gUnknown_20370D2 +_0810CEFC: + movs r0, 0 +_0810CEFE: + pop {r1} + bx r1 + thumb_func_end sub_810CED0 + + thumb_func_start sub_810CF04 +sub_810CF04: @ 810CF04 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r1, _0810CF40 @ =gUnknown_2036E38 + adds r1, r0, r1 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0810CF4C + ldr r0, _0810CF44 @ =gUnknown_2036DFC + ldr r0, [r0, 0x4] + ldrb r0, [r0] + ldrb r2, [r1, 0x8] + cmp r0, r2 + bcc _0810CF4C + ldr r2, _0810CF48 @ =gUnknown_202063C + ldrb r1, [r1, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2E + ldrsh r0, [r0, r1] + cmp r0, r3 + bne _0810CF4C + movs r0, 0x1 + b _0810CF4E + .align 2, 0 +_0810CF40: .4byte gUnknown_2036E38 +_0810CF44: .4byte gUnknown_2036DFC +_0810CF48: .4byte gUnknown_202063C +_0810CF4C: + movs r0, 0 +_0810CF4E: + pop {r1} + bx r1 + thumb_func_end sub_810CF04 + + thumb_func_start sub_810CF54 +sub_810CF54: @ 810CF54 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + adds r0, r1, 0 + cmp r1, 0x1 + beq _0810CF8A + cmp r1, 0x1 + bgt _0810CF74 + cmp r1, 0 + beq _0810CF7E + b _0810CF8A +_0810CF74: + cmp r0, 0x2 + beq _0810CF82 + cmp r0, 0x3 + beq _0810CF86 + b _0810CF8A +_0810CF7E: + movs r0, 0x7 + b _0810CF8C +_0810CF82: + movs r0, 0x9 + b _0810CF8C +_0810CF86: + movs r0, 0xA + b _0810CF8C +_0810CF8A: + movs r0, 0x8 +_0810CF8C: + pop {r1} + bx r1 + thumb_func_end sub_810CF54 + + thumb_func_start sub_810CF90 +sub_810CF90: @ 810CF90 + push {lr} + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x11 + cmp r0, 0x2D + bhi _0810D06C + lsls r0, 2 + ldr r1, _0810CFA8 @ =_0810CFAC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810CFA8: .4byte _0810CFAC + .align 2, 0 +_0810CFAC: + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D068 + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D068 + .4byte _0810D068 + .4byte _0810D064 + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D064 + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D06C + .4byte _0810D064 +_0810D064: + movs r0, 0x4E + b _0810D06E +_0810D068: + movs r0, 0x4F + b _0810D06E +_0810D06C: + movs r0, 0x4D +_0810D06E: + pop {r1} + bx r1 + thumb_func_end sub_810CF90 + + thumb_func_start sub_810D074 +sub_810D074: @ 810D074 + adds r0, 0x2 + ldrb r1, [r0] + ldrb r0, [r0, 0x1] + lsls r0, 8 + orrs r1, r0 + adds r0, r1, 0 + bx lr + thumb_func_end sub_810D074 + + thumb_func_start sub_810D084 +sub_810D084: @ 810D084 + push {lr} + lsls r1, 16 + lsrs r1, 16 + movs r3, 0 + adds r2, r0, 0 +_0810D08E: + ldrh r0, [r2] + cmp r0, r1 + bne _0810D098 + adds r0, r3, 0 + b _0810D0A4 +_0810D098: + adds r2, 0x10 + adds r3, 0x1 + cmp r3, 0xDC + bls _0810D08E + movs r0, 0x1 + negs r0, r0 +_0810D0A4: + pop {r1} + bx r1 + thumb_func_end sub_810D084 + + thumb_func_start sub_810D0A8 +sub_810D0A8: @ 810D0A8 + push {lr} + ldr r1, _0810D0C0 @ =gUnknown_3005008 + ldr r1, [r1] + ldr r2, _0810D0C4 @ =0x0000063a + adds r1, r2 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0810D0C8 + movs r0, 0x1 + b _0810D0CA + .align 2, 0 +_0810D0C0: .4byte gUnknown_3005008 +_0810D0C4: .4byte 0x0000063a +_0810D0C8: + movs r0, 0 +_0810D0CA: + pop {r1} + bx r1 + thumb_func_end sub_810D0A8 + + thumb_func_start sub_810D0D0 +sub_810D0D0: @ 810D0D0 + push {r4,lr} + movs r1, 0 + ldr r4, _0810D0F4 @ =gUnknown_3005008 + ldr r3, _0810D0F8 @ =0x0000063a + movs r2, 0 +_0810D0DA: + ldr r0, [r4] + adds r0, r3 + adds r0, r1 + strb r2, [r0] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x63 + bls _0810D0DA + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D0F4: .4byte gUnknown_3005008 +_0810D0F8: .4byte 0x0000063a + thumb_func_end sub_810D0D0 + + thumb_func_start sub_810D0FC +sub_810D0FC: @ 810D0FC + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + mov r1, sp + mov r0, sp + ldrh r0, [r0] + subs r0, 0x7 + strh r0, [r1] + ldrh r0, [r4] + subs r0, 0x7 + strh r0, [r4] + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + subs r0, r2, 0x7 + movs r3, 0x8 + ldrsh r1, [r5, r3] + cmp r0, r1 + bgt _0810D15A + adds r0, r2, 0x7 + cmp r0, r1 + blt _0810D15A + movs r0, 0 + ldrsh r1, [r4, r0] + subs r0, r1, 0x5 + movs r3, 0xA + ldrsh r2, [r5, r3] + cmp r0, r2 + bgt _0810D15A + adds r0, r1, 0x5 + cmp r0, r2 + blt _0810D15A + ldrb r0, [r5, 0x7] + bl sub_810CF04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810D15A + movs r0, 0x1 + b _0810D15C +_0810D15A: + movs r0, 0 +_0810D15C: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_810D0FC + + thumb_func_start sub_810D164 +sub_810D164: @ 810D164 + push {r4-r7,lr} + lsls r1, 16 + lsrs r1, 16 + movs r4, 0 + adds r3, r0, 0 +_0810D16E: + ldrh r0, [r3] + cmp r0, r1 + bne _0810D1B8 + strb r4, [r2] + movs r5, 0x1 + ldr r7, _0810D188 @ =0x0000ffff + adds r4, r3, 0x2 + movs r6, 0 +_0810D17E: + ldrh r0, [r4] + cmp r0, 0 + bne _0810D18C + lsrs r0, r6, 24 + b _0810D1C6 + .align 2, 0 +_0810D188: .4byte 0x0000ffff +_0810D18C: + cmp r0, r7 + beq _0810D1A2 + ldrh r0, [r4] + bl sub_8080424 + lsls r0, 24 + cmp r0, 0 + bne _0810D1A2 + lsls r0, r5, 24 + lsrs r0, 24 + b _0810D1C6 +_0810D1A2: + adds r4, 0x2 + movs r0, 0x80 + lsls r0, 17 + adds r6, r0 + adds r5, 0x1 + cmp r5, 0x5 + ble _0810D17E + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r0, 24 + b _0810D1C6 +_0810D1B8: + adds r3, 0x10 + adds r4, 0x1 + cmp r4, 0xDC + bls _0810D16E + movs r0, 0 + strb r0, [r2] + movs r0, 0 +_0810D1C6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810D164 + + thumb_func_start sub_810D1CC +sub_810D1CC: @ 810D1CC + push {r4-r7,lr} + sub sp, 0x4 + movs r5, 0 + ldr r6, _0810D220 @ =gUnknown_203ADB8 + ldr r0, [r6] + ldrb r0, [r0, 0x6] + cmp r0, 0xFF + beq _0810D23C + adds r7, r6, 0 +_0810D1DE: + lsls r4, r5, 4 + ldr r0, [r7] + adds r0, r4 + bl sub_810D0FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810D228 + ldr r0, [r6] + adds r0, r4 + ldrh r0, [r0, 0x4] + bl sub_8080424 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810D216 + ldr r0, [r7] + adds r0, r4 + ldrh r1, [r0, 0x4] + ldr r0, _0810D224 @ =gUnknown_845318C + mov r2, sp + bl sub_810D164 + lsls r0, 24 + cmp r0, 0 + beq _0810D228 +_0810D216: + ldr r0, [r7] + adds r0, r4 + ldrb r0, [r0, 0x6] + b _0810D23E + .align 2, 0 +_0810D220: .4byte gUnknown_203ADB8 +_0810D224: .4byte gUnknown_845318C +_0810D228: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _0810D248 @ =gUnknown_203ADB8 + ldr r0, [r6] + lsls r1, r5, 4 + adds r0, r1 + ldrb r0, [r0, 0x6] + cmp r0, 0xFF + bne _0810D1DE +_0810D23C: + movs r0, 0xFF +_0810D23E: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0810D248: .4byte gUnknown_203ADB8 + thumb_func_end sub_810D1CC + + thumb_func_start sub_810D24C +sub_810D24C: @ 810D24C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x7] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0810D278 @ =gUnknown_2036E38 + adds r0, r1 + bl sub_80689F4 + ldrb r0, [r4, 0x6] + ldr r1, _0810D27C @ =gUnknown_3005008 + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + adds r3, r5, 0 + bl sub_8097434 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0810D278: .4byte gUnknown_2036E38 +_0810D27C: .4byte gUnknown_3005008 + thumb_func_end sub_810D24C + + thumb_func_start sub_810D280 +sub_810D280: @ 810D280 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + movs r5, 0 + cmp r5, r6 + bge _0810D2F8 + ldr r7, _0810D2E0 @ =gUnknown_203ADB8 + movs r4, 0 +_0810D298: + ldr r0, [r7] + adds r0, r4 + bl sub_810D0FC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810D2F0 + ldr r1, [r7] + adds r0, r1, r4 + ldrh r0, [r0, 0x4] + cmp r0, r8 + bne _0810D2F0 + movs r3, 0 + movs r2, 0x86 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r3, r0 + bge _0810D2EC + ldr r0, _0810D2E0 @ =gUnknown_203ADB8 + ldr r1, [r0] + adds r0, r1, r4 + ldrh r4, [r0, 0x4] + movs r0, 0x80 + lsls r0, 3 + adds r2, r1, r0 + adds r0, 0x30 + adds r1, r0 + ldrb r1, [r1] +_0810D2D4: + ldrh r0, [r2] + cmp r0, r4 + bne _0810D2E4 + movs r0, 0x2 + b _0810D2FA + .align 2, 0 +_0810D2E0: .4byte gUnknown_203ADB8 +_0810D2E4: + adds r2, 0x2 + adds r3, 0x1 + cmp r3, r1 + blt _0810D2D4 +_0810D2EC: + movs r0, 0x1 + b _0810D2FA +_0810D2F0: + adds r4, 0x10 + adds r5, 0x1 + cmp r5, r6 + blt _0810D298 +_0810D2F8: + movs r0, 0 +_0810D2FA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_810D280 + + thumb_func_start sub_810D304 +sub_810D304: @ 810D304 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r1, 0 + mov r0, sp + strb r1, [r0] + movs r7, 0 + ldr r2, _0810D328 @ =gUnknown_203ADB8 + ldr r0, [r2] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + mov r10, r2 + b _0810D3CC + .align 2, 0 +_0810D328: .4byte gUnknown_203ADB8 +_0810D32C: + ldr r0, [r2] + ldrb r0, [r0, 0x6] + adds r3, r7, 0x1 + mov r8, r3 + cmp r0, 0xFF + beq _0810D3C0 + adds r5, r2, 0 + mov r10, r5 + movs r6, 0 + mov r9, r5 +_0810D340: + ldr r0, [r5] + adds r2, r0, r6 + lsls r1, r7, 1 + movs r3, 0x80 + lsls r3, 3 + adds r0, r3 + adds r0, r1 + ldrh r1, [r2, 0x4] + ldrh r0, [r0] + cmp r1, r0 + bne _0810D3B2 + ldrb r0, [r2, 0x7] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r2, _0810D3E4 @ =gUnknown_2036E38 + adds r4, r1, r2 + bl sub_810CF04 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0810D380 + ldr r0, [r5] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + adds r0, r7 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_8063610 +_0810D380: + ldr r0, [r5] + movs r3, 0x84 + lsls r3, 3 + adds r0, r3 + adds r0, r7 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_805FE7C + ldr r0, [r5] + adds r0, r6 + ldrh r1, [r0, 0x4] + ldr r0, _0810D3E8 @ =gUnknown_845318C + mov r2, sp + bl sub_810D164 + ldr r1, _0810D3EC @ =gUnknown_3005008 + ldr r1, [r1] + ldr r2, [r5] + adds r2, r6 + ldr r3, _0810D3F0 @ =0x0000063a + adds r1, r3 + ldrb r2, [r2, 0x6] + adds r1, r2 + strb r0, [r1] +_0810D3B2: + adds r6, 0x10 + mov r1, r9 + ldr r0, [r1] + adds r0, r6 + ldrb r0, [r0, 0x6] + cmp r0, 0xFF + bne _0810D340 +_0810D3C0: + mov r7, r8 + mov r2, r10 + ldr r0, [r2] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 +_0810D3CC: + ldrb r0, [r0] + cmp r7, r0 + blt _0810D32C + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0810D3E4: .4byte gUnknown_2036E38 +_0810D3E8: .4byte gUnknown_845318C +_0810D3EC: .4byte gUnknown_3005008 +_0810D3F0: .4byte 0x0000063a + thumb_func_end sub_810D304 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s new file mode 100644 index 000000000..51657fcbc --- /dev/null +++ b/asm/wild_encounter.s @@ -0,0 +1,1773 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8082740 +sub_8082740: @ 8082740 + ldr r1, _08082748 @ =gUnknown_20386DC + strb r0, [r1] + bx lr + .align 2, 0 +_08082748: .4byte gUnknown_20386DC + thumb_func_end sub_8082740 + + thumb_func_start sub_808274C +sub_808274C: @ 808274C + push {lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x13 + bhi _08082768 + movs r0, 0 + b _08082802 +_08082768: + adds r0, r1, 0 + subs r0, 0x14 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _08082778 + movs r0, 0x1 + b _08082802 +_08082778: + adds r0, r1, 0 + subs r0, 0x28 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _08082788 + movs r0, 0x2 + b _08082802 +_08082788: + adds r0, r1, 0 + subs r0, 0x32 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _08082798 + movs r0, 0x3 + b _08082802 +_08082798: + adds r0, r1, 0 + subs r0, 0x3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _080827A8 + movs r0, 0x4 + b _08082802 +_080827A8: + adds r0, r1, 0 + subs r0, 0x46 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _080827B8 + movs r0, 0x5 + b _08082802 +_080827B8: + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _080827C8 + movs r0, 0x6 + b _08082802 +_080827C8: + adds r0, r1, 0 + subs r0, 0x55 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _080827D8 + movs r0, 0x7 + b _08082802 +_080827D8: + adds r0, r1, 0 + subs r0, 0x5A + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _080827E8 + movs r0, 0x8 + b _08082802 +_080827E8: + adds r0, r1, 0 + subs r0, 0x5E + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _080827F8 + movs r0, 0x9 + b _08082802 +_080827F8: + cmp r1, 0x62 + beq _08082800 + movs r0, 0xB + b _08082802 +_08082800: + movs r0, 0xA +_08082802: + pop {r1} + bx r1 + thumb_func_end sub_808274C + + thumb_func_start sub_8082808 +sub_8082808: @ 8082808 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + cmp r1, 0x3B + bhi _08082826 + movs r0, 0 + b _08082858 +_08082826: + adds r0, r1, 0 + subs r0, 0x3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1D + bhi _08082836 + movs r0, 0x1 + b _08082858 +_08082836: + adds r0, r1, 0 + subs r0, 0x5A + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _08082846 + movs r0, 0x2 + b _08082858 +_08082846: + adds r0, r2, 0 + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08082856 + movs r0, 0x4 + b _08082858 +_08082856: + movs r0, 0x3 +_08082858: + pop {r1} + bx r1 + thumb_func_end sub_8082808 + + thumb_func_start sub_808285C +sub_808285C: @ 808285C + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + movs r5, 0 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0x1 + beq _08082896 + cmp r4, 0x1 + bgt _08082886 + cmp r4, 0 + beq _0808288C + b _080828F0 +_08082886: + cmp r6, 0x2 + beq _080828BA + b _080828F0 +_0808288C: + movs r5, 0x1 + cmp r1, 0x45 + bhi _080828F0 + movs r5, 0 + b _080828F0 +_08082896: + cmp r1, 0x3B + bhi _0808289C + movs r5, 0x2 +_0808289C: + adds r0, r1, 0 + subs r0, 0x3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _080828AA + movs r5, 0x3 +_080828AA: + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _080828F0 + movs r5, 0x4 + b _080828F0 +_080828BA: + cmp r1, 0x27 + bhi _080828C0 + movs r5, 0x5 +_080828C0: + adds r0, r1, 0 + subs r0, 0x28 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x27 + bhi _080828CE + movs r5, 0x6 +_080828CE: + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE + bhi _080828DC + movs r5, 0x7 +_080828DC: + adds r0, r1, 0 + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _080828EA + movs r5, 0x8 +_080828EA: + cmp r1, 0x63 + bne _080828F0 + movs r5, 0x9 +_080828F0: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808285C + + thumb_func_start sub_80828F8 +sub_80828F8: @ 80828F8 + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + ldrb r1, [r4] + cmp r0, r1 + bcc _08082908 + ldrb r5, [r4] + b _0808290C +_08082908: + ldrb r5, [r4, 0x1] + ldrb r0, [r4] +_0808290C: + subs r4, r0, r5 + adds r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl __modsi3 + lsls r0, 24 + lsrs r0, 24 + adds r0, r5, r0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80828F8 + + thumb_func_start sub_8082934 +sub_8082934: @ 8082934 + push {r4-r6,lr} + movs r4, 0 + ldr r0, _08082990 @ =gUnknown_83C9CB8 + ldrb r1, [r0] + adds r5, r0, 0 + cmp r1, 0xFF + beq _080829B4 + ldr r6, _08082994 @ =0x00007a01 +_08082944: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r5 + ldrb r1, [r3] + ldr r0, _08082998 @ =gUnknown_3005008 + ldr r2, [r0] + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080829A0 + ldrb r1, [r3, 0x1] + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080829A0 + ldrh r0, [r2, 0x4] + cmp r0, r6 + bne _08082980 + ldr r0, _0808299C @ =0x00004024 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x8 + bls _0808297A + movs r0, 0 +_0808297A: + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 +_08082980: + bl sub_80829C0 + lsls r0, 24 + cmp r0, 0 + beq _080829B4 + adds r0, r4, 0 + b _080829B6 + .align 2, 0 +_08082990: .4byte gUnknown_83C9CB8 +_08082994: .4byte 0x00007a01 +_08082998: .4byte gUnknown_3005008 +_0808299C: .4byte 0x00004024 +_080829A0: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08082944 +_080829B4: + ldr r0, _080829BC @ =0x0000ffff +_080829B6: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080829BC: .4byte 0x0000ffff + thumb_func_end sub_8082934 + + thumb_func_start sub_80829C0 +sub_80829C0: @ 80829C0 + push {lr} + ldr r0, _080829EC @ =0x00000849 + bl sub_806E6D0 + lsls r0, 24 + cmp r0, 0 + bne _080829F4 + ldr r0, _080829F0 @ =gUnknown_3005008 + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, 0x2 + bne _080829F4 + ldrb r0, [r1, 0x5] + subs r0, 0x1B + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bhi _080829F4 + movs r0, 0 + b _080829F6 + .align 2, 0 +_080829EC: .4byte 0x00000849 +_080829F0: .4byte gUnknown_3005008 +_080829F4: + movs r0, 0x1 +_080829F6: + pop {r1} + bx r1 + thumb_func_end sub_80829C0 + + thumb_func_start sub_80829FC +sub_80829FC: @ 80829FC + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + bl sub_803DA34 + cmp r4, 0xC9 + beq _08082A3C + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08082A38 @ =gUnknown_202402C + str r0, [sp] + adds r0, r1, 0 + adds r1, r4, 0 + adds r2, r6, 0 + movs r3, 0x20 + bl sub_803DD98 + b _08082A74 + .align 2, 0 +_08082A38: .4byte gUnknown_202402C +_08082A3C: + ldr r0, _08082A7C @ =gUnknown_3005008 + ldr r0, [r0] + ldrb r1, [r0, 0x5] + subs r1, 0x1B + ldr r2, _08082A80 @ =gUnknown_83CA71C + lsls r1, 24 + asrs r1, 24 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r5, r0 + adds r0, r2 + ldrb r0, [r0] + bl sub_8082A88 + ldr r2, _08082A84 @ =gUnknown_202402C + movs r1, 0x1 + str r1, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + str r0, [sp, 0xC] + adds r0, r2, 0 + movs r1, 0xC9 + adds r2, r6, 0 + movs r3, 0x20 + bl sub_803DA54 +_08082A74: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08082A7C: .4byte gUnknown_3005008 +_08082A80: .4byte gUnknown_83CA71C +_08082A84: .4byte gUnknown_202402C + thumb_func_end sub_80829FC + + thumb_func_start sub_8082A88 +sub_8082A88: @ 8082A88 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 +_08082A8E: + bl sub_8044EC8 + adds r4, r0, 0 + bl sub_8044EC8 + lsls r4, 16 + lsls r0, 16 + lsrs r0, 16 + orrs r4, r0 + adds r0, r4, 0 + bl sub_8082AB8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bne _08082A8E + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8082A88 + + thumb_func_start sub_8082AB8 +sub_8082AB8: @ 8082AB8 + push {lr} + adds r2, r0, 0 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8082AB8 + + thumb_func_start sub_8082AEC +sub_8082AEC: @ 8082AEC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + movs r6, 0 + cmp r1, 0x1 + beq _08082B1C + cmp r1, 0x1 + bgt _08082B10 + cmp r1, 0 + beq _08082B16 + b _08082B24 +_08082B10: + cmp r0, 0x2 + beq _08082B1C + b _08082B24 +_08082B16: + bl sub_808274C + b _08082B20 +_08082B1C: + bl sub_8082808 +_08082B20: + lsls r0, 24 + lsrs r6, r0, 24 +_08082B24: + lsls r4, r6, 2 + ldr r0, [r7, 0x4] + adds r0, r4 + bl sub_80828F8 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + cmp r0, 0x1 + bne _08082B48 + adds r0, r5, 0 + bl sub_808310C + lsls r0, 24 + cmp r0, 0 + bne _08082B48 + movs r0, 0 + b _08082B58 +_08082B48: + ldr r0, [r7, 0x4] + adds r0, r4, r0 + ldrh r0, [r0, 0x2] + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_80829FC + movs r0, 0x1 +_08082B58: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8082AEC + + thumb_func_start sub_8082B64 +sub_8082B64: @ 8082B64 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_808285C + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, r4, 2 + ldr r0, [r6, 0x4] + adds r0, r5 + bl sub_80828F8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, [r6, 0x4] + adds r0, r5, r0 + ldrh r0, [r0, 0x2] + adds r2, r4, 0 + bl sub_80829FC + ldr r0, [r6, 0x4] + adds r5, r0 + ldrh r0, [r5, 0x2] + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8082B64 + + thumb_func_start sub_8082BA0 +sub_8082BA0: @ 8082BA0 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_808322C + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xC8 + lsls r1, 3 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bcc _08082BC4 + movs r0, 0 + b _08082BC6 +_08082BC4: + movs r0, 0x1 +_08082BC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8082BA0 + + thumb_func_start sub_8082BCC +sub_8082BCC: @ 8082BCC + push {r4,r5,lr} + sub sp, 0x4 + str r0, [sp] + lsls r1, 24 + lsrs r5, r1, 24 + lsls r0, 4 + str r0, [sp] + movs r0, 0x6 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08082BF6 + ldr r1, [sp] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + movs r1, 0x64 + bl __udivsi3 + str r0, [sp] +_08082BF6: + ldr r4, _08082C24 @ =gUnknown_20386D0 + ldrh r0, [r4, 0x6] + lsls r0, 4 + movs r1, 0xC8 + bl __divsi3 + ldr r1, [sp] + adds r1, r0 + str r1, [sp] + mov r0, sp + bl sub_8083174 + mov r0, sp + bl sub_80831D8 + cmp r5, 0 + bne _08082C34 + ldrb r0, [r4, 0x9] + cmp r0, 0x1 + beq _08082C28 + cmp r0, 0x2 + beq _08082C2E + b _08082C34 + .align 2, 0 +_08082C24: .4byte gUnknown_20386D0 +_08082C28: + ldr r0, [sp] + lsrs r0, 1 + b _08082C32 +_08082C2E: + ldr r0, [sp] + lsls r0, 1 +_08082C32: + str r0, [sp] +_08082C34: + ldr r0, [sp] + movs r1, 0xC8 + lsls r1, 3 + cmp r0, r1 + bls _08082C40 + str r1, [sp] +_08082C40: + ldr r0, [sp] + lsls r0, 16 + lsrs r0, 16 + bl sub_8082BA0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8082BCC + + thumb_func_start sub_8082C58 +sub_8082C58: @ 8082C58 + push {r4,r5,lr} + ldr r5, _08082C90 @ =gUnknown_20386D0 + movs r0, 0 + strb r0, [r5, 0x9] + ldr r4, _08082C94 @ =gUnknown_2024284 + adds r0, r4, 0 + movs r1, 0x6 + bl sub_803FBE8 + cmp r0, 0 + bne _08082C84 + adds r0, r4, 0 + bl sub_8040D7C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08082C82 + cmp r0, 0x23 + bne _08082C84 + movs r0, 0x2 +_08082C82: + strb r0, [r5, 0x9] +_08082C84: + ldr r0, _08082C90 @ =gUnknown_20386D0 + ldrb r0, [r0, 0x9] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08082C90: .4byte gUnknown_20386D0 +_08082C94: .4byte gUnknown_2024284 + thumb_func_end sub_8082C58 + + thumb_func_start sub_8082C98 +sub_8082C98: @ 8082C98 + push {lr} + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3B + bhi _08082CB4 + movs r0, 0x1 + b _08082CB6 +_08082CB4: + movs r0, 0 +_08082CB6: + pop {r1} + bx r1 + thumb_func_end sub_8082C98 + + thumb_func_start sub_8082CBC +sub_8082CBC: @ 8082CBC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 16 + lsrs r7, r1, 16 + mov r8, r7 + ldr r0, _08082D44 @ =gUnknown_20386DC + ldrb r0, [r0] + cmp r0, 0x1 + bne _08082CD4 + b _08082E46 +_08082CD4: + bl sub_8082934 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _08082D48 @ =0x0000ffff + cmp r4, r0 + bne _08082CE4 + b _08082E46 +_08082CE4: + adds r0, r6, 0 + movs r1, 0x4 + bl sub_8058F1C + cmp r0, 0x1 + bne _08082D78 + ldr r1, _08082D4C @ =gUnknown_83C9CB8 + lsls r2, r4, 2 + adds r0, r2, r4 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + adds r5, r2, 0 + cmp r0, 0 + bne _08082D06 + b _08082E46 +_08082D06: + adds r0, r6, 0 + movs r1, 0 + bl sub_8058F1C + cmp r7, r0 + beq _08082D1E + bl sub_8082C98 + lsls r0, 24 + cmp r0, 0 + bne _08082D1E + b _08082E46 +_08082D1E: + ldr r1, _08082D4C @ =gUnknown_83C9CB8 + adds r0, r5, r4 + lsls r0, 2 + adds r1, 0x4 + adds r4, r0, r1 + ldr r0, [r4] + ldrb r0, [r0] + movs r1, 0 + bl sub_8082BCC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08082D50 +_08082D3A: + ldr r0, [r4] + ldrb r0, [r0] + bl sub_8083410 + b _08082E46 + .align 2, 0 +_08082D44: .4byte gUnknown_20386DC +_08082D48: .4byte 0x0000ffff +_08082D4C: .4byte gUnknown_83C9CB8 +_08082D50: + bl sub_8141FAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08082DFA + ldr r4, [r4] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + bl sub_8082AEC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08082E38 + ldrb r0, [r4] + bl sub_8083410 + b _08082E46 +_08082D78: + adds r0, r6, 0 + movs r1, 0x4 + bl sub_8058F1C + cmp r0, 0x2 + beq _08082DA8 + movs r0, 0x8 + bl sub_805C74C + lsls r0, 24 + cmp r0, 0 + beq _08082E46 + adds r0, r6, 0 + movs r1, 0 + bl sub_8058F1C + lsls r0, 24 + lsrs r0, 24 + bl sub_8059F58 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08082E46 +_08082DA8: + ldr r1, _08082E18 @ =gUnknown_83C9CB8 + lsls r2, r4, 2 + adds r0, r2, r4 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r0, [r0] + adds r5, r2, 0 + cmp r0, 0 + beq _08082E46 + adds r0, r6, 0 + movs r1, 0 + bl sub_8058F1C + cmp r8, r0 + beq _08082DD2 + bl sub_8082C98 + lsls r0, 24 + cmp r0, 0 + beq _08082E46 +_08082DD2: + ldr r1, _08082E18 @ =gUnknown_83C9CB8 + adds r0, r5, r4 + lsls r0, 2 + adds r1, 0x8 + adds r4, r0, r1 + ldr r0, [r4] + ldrb r0, [r0] + movs r1, 0 + bl sub_8082BCC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08082D3A + bl sub_8141FAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08082E24 +_08082DFA: + ldr r0, _08082E1C @ =gUnknown_3005008 + ldr r0, [r0] + ldr r1, _08082E20 @ =0x000030d0 + adds r0, r1 + ldrb r0, [r0, 0xC] + bl sub_808310C + lsls r0, 24 + cmp r0, 0 + beq _08082E46 + bl sub_807F78C + movs r0, 0x1 + b _08082E48 + .align 2, 0 +_08082E18: .4byte gUnknown_83C9CB8 +_08082E1C: .4byte gUnknown_3005008 +_08082E20: .4byte 0x000030d0 +_08082E24: + ldr r4, [r4] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_8082AEC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08082E40 +_08082E38: + bl sub_807F704 + movs r0, 0x1 + b _08082E48 +_08082E40: + ldrb r0, [r4] + bl sub_8083410 +_08082E46: + movs r0, 0 +_08082E48: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8082CBC + + thumb_func_start sub_8082E54 +sub_8082E54: @ 8082E54 + push {r4,lr} + bl sub_8082934 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08082EA4 @ =0x0000ffff + cmp r2, r0 + beq _08082EB0 + ldr r1, _08082EA8 @ =gUnknown_83C9CB8 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0xC + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _08082E9C + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8082BCC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08082EB0 + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0x1 + bl sub_8082AEC + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _08082EB0 + bl sub_807F704 +_08082E9C: + ldr r0, _08082EAC @ =gUnknown_20370D0 + strh r4, [r0] + b _08082EB6 + .align 2, 0 +_08082EA4: .4byte 0x0000ffff +_08082EA8: .4byte gUnknown_83C9CB8 +_08082EAC: .4byte gUnknown_20370D0 +_08082EB0: + ldr r1, _08082EBC @ =gUnknown_20370D0 + movs r0, 0 + strh r0, [r1] +_08082EB6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082EBC: .4byte gUnknown_20370D0 + thumb_func_end sub_8082E54 + + thumb_func_start sub_8082EC0 +sub_8082EC0: @ 8082EC0 + push {r4,r5,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_805C538 + bl sub_8082934 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08082F14 @ =0x0000ffff + cmp r5, r0 + beq _08082F6C + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r2, 0x4 + bl sub_8058F48 + cmp r0, 0x1 + bne _08082F1C + bl sub_8141FAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08082F3C + ldr r1, _08082F18 @ =gUnknown_83C9CB8 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _08082F6C + movs r1, 0 + b _08082F58 + .align 2, 0 +_08082F14: .4byte 0x0000ffff +_08082F18: .4byte gUnknown_83C9CB8 +_08082F1C: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r2, 0x4 + bl sub_8058F48 + cmp r0, 0x2 + bne _08082F6C + bl sub_8141FAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08082F44 +_08082F3C: + bl sub_807F78C + movs r0, 0x1 + b _08082F6E +_08082F44: + ldr r1, _08082F68 @ =gUnknown_83C9CB8 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _08082F6C + movs r1, 0x1 +_08082F58: + movs r2, 0 + bl sub_8082AEC + bl sub_807F704 + movs r0, 0x1 + b _08082F6E + .align 2, 0 +_08082F68: .4byte gUnknown_83C9CB8 +_08082F6C: + movs r0, 0 +_08082F6E: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8082EC0 + + thumb_func_start sub_8082F78 +sub_8082F78: @ 8082F78 + push {lr} + bl sub_8082934 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08082FA0 @ =0x0000ffff + cmp r2, r0 + beq _08082FA8 + ldr r0, _08082FA4 @ =gUnknown_83C9CB8 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0x10 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + beq _08082FA8 + movs r0, 0x1 + b _08082FAA + .align 2, 0 +_08082FA0: .4byte 0x0000ffff +_08082FA4: .4byte gUnknown_83C9CB8 +_08082FA8: + movs r0, 0 +_08082FAA: + pop {r1} + bx r1 + thumb_func_end sub_8082F78 + + thumb_func_start sub_8082FB0 +sub_8082FB0: @ 8082FB0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _08082FE4 @ =gUnknown_83C9CB8 + bl sub_8082934 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r4, 0x10 + adds r1, r4 + ldr r0, [r1] + adds r1, r5, 0 + bl sub_8082B64 + movs r0, 0xC + bl sub_8054E90 + bl sub_807F704 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08082FE4: .4byte gUnknown_83C9CB8 + thumb_func_end sub_8082FB0 + + thumb_func_start sub_8082FE8 +sub_8082FE8: @ 8082FE8 + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0 + strb r0, [r6] + bl sub_8082934 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _08083020 @ =0x0000ffff + cmp r3, r0 + beq _0808301A + ldr r2, _08083024 @ =gUnknown_83C9CB8 + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r5, [r0] + adds r2, 0x8 + adds r1, r2 + ldr r4, [r1] + cmp r5, 0 + bne _08083028 + cmp r4, 0 + bne _0808302E +_0808301A: + movs r0, 0 + b _0808306E + .align 2, 0 +_08083020: .4byte 0x0000ffff +_08083024: .4byte gUnknown_83C9CB8 +_08083028: + cmp r4, 0 + bne _0808303C + b _08083060 +_0808302E: + movs r0, 0x1 + strb r0, [r6] + bl sub_8082808 + lsls r0, 24 + ldr r1, [r4, 0x4] + b _08083068 +_0808303C: + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4F + bls _08083060 + movs r0, 0x1 + strb r0, [r6] + bl sub_8082808 + lsls r0, 24 + ldr r1, [r4, 0x4] + b _08083068 +_08083060: + bl sub_808274C + lsls r0, 24 + ldr r1, [r5, 0x4] +_08083068: + lsrs r0, 22 + adds r0, r1 + ldrh r0, [r0, 0x2] +_0808306E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8082FE8 + + thumb_func_start sub_8083074 +sub_8083074: @ 8083074 + push {r4,lr} + bl sub_8082934 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _080830A8 @ =0x0000ffff + cmp r2, r0 + beq _080830B0 + ldr r1, _080830AC @ =gUnknown_83C9CB8 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _080830B0 + bl sub_8082808 + lsls r0, 24 + ldr r1, [r4, 0x4] + lsrs r0, 22 + adds r0, r1 + ldrh r0, [r0, 0x2] + b _080830B2 + .align 2, 0 +_080830A8: .4byte 0x0000ffff +_080830AC: .4byte gUnknown_83C9CB8 +_080830B0: + movs r0, 0 +_080830B2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8083074 + + thumb_func_start sub_80830B8 +sub_80830B8: @ 80830B8 + push {r4,r5,lr} + bl sub_811B0D0 + cmp r0, 0x1 + beq _08083104 + ldr r0, _080830F8 @ =gUnknown_203ADFA + ldrb r0, [r0] + cmp r0, 0x2 + beq _08083104 + ldr r5, _080830FC @ =0x00004020 + adds r0, r5, 0 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08083104 + subs r4, r0, 0x1 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806E584 + cmp r4, 0 + bne _08083104 + ldr r0, _08083100 @ =gUnknown_81BFB65 + bl sub_8069AE4 + movs r0, 0x1 + b _08083106 + .align 2, 0 +_080830F8: .4byte gUnknown_203ADFA +_080830FC: .4byte 0x00004020 +_08083100: .4byte gUnknown_81BFB65 +_08083104: + movs r0, 0 +_08083106: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80830B8 + + thumb_func_start sub_808310C +sub_808310C: @ 808310C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08083158 @ =0x00004020 + bl sub_806E568 + lsls r0, 16 + cmp r0, 0 + beq _08083152 + movs r5, 0 +_08083120: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0808315C @ =gUnknown_2024284 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl sub_803FBE8 + cmp r0, 0 + beq _08083160 + adds r0, r4, 0 + movs r1, 0x2D + bl sub_803FBE8 + cmp r0, 0 + bne _08083160 + adds r0, r4, 0 + movs r1, 0x38 + bl sub_803FBE8 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bcc _0808316A +_08083152: + movs r0, 0x1 + b _0808316C + .align 2, 0 +_08083158: .4byte 0x00004020 +_0808315C: .4byte gUnknown_2024284 +_08083160: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08083120 +_0808316A: + movs r0, 0 +_0808316C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808310C + + thumb_func_start sub_8083174 +sub_8083174: @ 8083174 + push {r4,lr} + adds r4, r0, 0 + bl sub_80831A0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0808318A + cmp r0, 0x2 + beq _08083192 + b _08083198 +_0808318A: + ldr r0, [r4] + lsrs r1, r0, 1 + adds r0, r1 + b _08083196 +_08083192: + ldr r0, [r4] + lsrs r0, 1 +_08083196: + str r0, [r4] +_08083198: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8083174 + + thumb_func_start sub_80831A0 +sub_80831A0: @ 80831A0 + push {lr} + ldr r0, _080831B4 @ =0x00000803 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080831B8 + movs r0, 0x1 + b _080831D2 + .align 2, 0 +_080831B4: .4byte 0x00000803 +_080831B8: + ldr r0, _080831CC @ =0x00000804 + bl sub_806E6D0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080831D0 + movs r0, 0 + b _080831D2 + .align 2, 0 +_080831CC: .4byte 0x00000804 +_080831D0: + movs r0, 0x2 +_080831D2: + pop {r1} + bx r1 + thumb_func_end sub_80831A0 + + thumb_func_start sub_80831D8 +sub_80831D8: @ 80831D8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80831F8 + lsls r0, 24 + cmp r0, 0 + beq _080831F2 + ldr r0, [r4] + lsls r0, 1 + movs r1, 0x3 + bl __udivsi3 + str r0, [r4] +_080831F2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80831D8 + + thumb_func_start sub_80831F8 +sub_80831F8: @ 80831F8 + push {lr} + ldr r0, _08083208 @ =gUnknown_20386D0 + ldrh r0, [r0, 0xA] + cmp r0, 0xBE + beq _0808320C + movs r0, 0 + b _0808320E + .align 2, 0 +_08083208: .4byte gUnknown_20386D0 +_0808320C: + movs r0, 0x1 +_0808320E: + pop {r1} + bx r1 + thumb_func_end sub_80831F8 + + thumb_func_start sub_8083214 +sub_8083214: @ 8083214 + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08083228 @ =gUnknown_20386D0 + str r0, [r1] + bl sub_80832D4 + pop {r0} + bx r0 + .align 2, 0 +_08083228: .4byte gUnknown_20386D0 + thumb_func_end sub_8083214 + + thumb_func_start sub_808322C +sub_808322C: @ 808322C + ldr r2, _08083240 @ =gUnknown_20386D0 + ldr r1, [r2] + ldr r0, _08083244 @ =0x41c64e6d + muls r0, r1 + ldr r1, _08083248 @ =0x00003039 + adds r0, r1 + str r0, [r2] + lsrs r0, 16 + bx lr + .align 2, 0 +_08083240: .4byte gUnknown_20386D0 +_08083244: .4byte 0x41c64e6d +_08083248: .4byte 0x00003039 + thumb_func_end sub_808322C + + thumb_func_start sub_808324C +sub_808324C: @ 808324C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + bl sub_8082934 + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08083284 @ =0x0000ffff + cmp r2, r0 + beq _080832CC + cmp r4, 0x1 + bne _0808328C + ldr r1, _08083288 @ =gUnknown_83C9CB8 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080832CC + ldrb r1, [r0] + cmp r1, 0x4F + bhi _080832A8 + cmp r1, 0x9 + bls _080832B4 + b _080832B8 + .align 2, 0 +_08083284: .4byte 0x0000ffff +_08083288: .4byte gUnknown_83C9CB8 +_0808328C: + cmp r5, 0x2 + bne _080832CC + ldr r1, _080832AC @ =gUnknown_83C9CB8 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _080832CC + ldrb r1, [r0] + cmp r1, 0x4F + bls _080832B0 +_080832A8: + movs r0, 0 + b _080832CE + .align 2, 0 +_080832AC: .4byte gUnknown_83C9CB8 +_080832B0: + cmp r1, 0x9 + bhi _080832B8 +_080832B4: + movs r0, 0x8 + b _080832CE +_080832B8: + ldrb r0, [r0] + movs r1, 0xA + bl __udivsi3 + adds r1, r0, 0 + movs r0, 0x8 + subs r0, r1 + lsls r0, 24 + lsrs r0, 24 + b _080832CE +_080832CC: + movs r0, 0xFF +_080832CE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808324C + + thumb_func_start sub_80832D4 +sub_80832D4: @ 80832D4 + ldr r0, _080832E0 @ =gUnknown_20386D0 + movs r2, 0 + movs r1, 0 + strh r1, [r0, 0x6] + strb r2, [r0, 0x8] + bx lr + .align 2, 0 +_080832E0: .4byte gUnknown_20386D0 + thumb_func_end sub_80832D4 + + thumb_func_start sub_80832E4 +sub_80832E4: @ 80832E4 + push {r4,r5,lr} + movs r1, 0x4 + bl sub_8058F1C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080833A0 + bl sub_808324C + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _080833A0 + lsls r4, 8 + movs r5, 0xA0 + lsls r5, 3 + bl sub_80831A0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08083318 + cmp r0, 0x2 + beq _08083326 + b _0808332A +_08083318: + lsrs r0, r4, 1 + subs r4, r0 + lsrs r0, r5, 1 + movs r1, 0xA0 + lsls r1, 3 + adds r5, r0, r1 + b _0808332A +_08083326: + lsls r4, 1 + lsrs r5, 1 +_0808332A: + ldr r0, _08083368 @ =gUnknown_2024284 + movs r1, 0xC + bl sub_803FBE8 + ldr r1, _0808336C @ =gUnknown_20386D0 + strh r0, [r1, 0xA] + bl sub_80831F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08083356 + adds r0, r4, 0 + movs r1, 0x3 + bl __udivsi3 + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x3 + bl __udivsi3 + subs r5, r0 +_08083356: + bl sub_8082C58 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08083370 + cmp r0, 0x2 + beq _08083376 + b _0808337A + .align 2, 0 +_08083368: .4byte gUnknown_2024284 +_0808336C: .4byte gUnknown_20386D0 +_08083370: + lsls r4, 1 + lsrs r5, 1 + b _0808337A +_08083376: + lsrs r4, 1 + lsls r5, 1 +_0808337A: + lsrs r4, 8 + lsrs r5, 8 + ldr r1, _080833A4 @ =gUnknown_20386D0 + ldrb r0, [r1, 0x8] + cmp r0, r4 + bcs _080833A8 + adds r0, 0x1 + strb r0, [r1, 0x8] + bl sub_8044EC8 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080833A8 +_080833A0: + movs r0, 0 + b _080833AA + .align 2, 0 +_080833A4: .4byte gUnknown_20386D0 +_080833A8: + movs r0, 0x1 +_080833AA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80832E4 + + thumb_func_start sub_80833B0 +sub_80833B0: @ 80833B0 + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_80832E4 + lsls r0, 24 + cmp r0, 0 + bne _080833D4 + adds r0, r4, 0 + movs r1, 0 + bl sub_8058F1C + ldr r1, _080833D0 @ =gUnknown_20386D0 + strh r0, [r1, 0x4] + movs r0, 0 + b _0808340A + .align 2, 0 +_080833D0: .4byte gUnknown_20386D0 +_080833D4: + ldr r5, _080833F4 @ =gUnknown_20386D0 + ldrh r1, [r5, 0x4] + adds r0, r4, 0 + bl sub_8082CBC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080833F8 + adds r0, r4, 0 + movs r1, 0 + bl sub_8058F1C + strh r0, [r5, 0x4] + movs r0, 0 + b _0808340A + .align 2, 0 +_080833F4: .4byte gUnknown_20386D0 +_080833F8: + movs r0, 0 + movs r1, 0 + strh r1, [r5, 0x6] + strb r0, [r5, 0x8] + adds r0, r4, 0 + bl sub_8058F1C + strh r0, [r5, 0x4] + movs r0, 0x1 +_0808340A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80833B0 + + thumb_func_start sub_8083410 +sub_8083410: @ 8083410 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0808342C @ =0x00004020 + bl sub_806E568 + lsls r0, 16 + cmp r0, 0 + bne _08083434 + ldr r1, _08083430 @ =gUnknown_20386D0 + ldrh r0, [r1, 0x6] + adds r0, r4 + b _08083438 + .align 2, 0 +_0808342C: .4byte 0x00004020 +_08083430: .4byte gUnknown_20386D0 +_08083434: + ldr r1, _08083440 @ =gUnknown_20386D0 + movs r0, 0 +_08083438: + strh r0, [r1, 0x6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083440: .4byte gUnknown_20386D0 + thumb_func_end sub_8083410 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/wild_pokemon_area.s b/asm/wild_pokemon_area.s new file mode 100644 index 000000000..d23aca5e4 --- /dev/null +++ b/asm/wild_pokemon_area.s @@ -0,0 +1,380 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_813C9DC +sub_813C9DC: @ 813C9DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + str r1, [sp, 0x10] + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + bl sub_813CB34 + cmp r0, 0 + blt _0813CA02 + ldr r0, [sp, 0xC] + ldr r1, [sp, 0x10] + bl sub_813CB5C + b _0813CB1A +_0813CA02: + bl sub_80CC204 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + movs r0, 0 + str r0, [sp, 0x18] + ldr r0, _0813CA74 @ =0x00004024 + bl sub_806E568 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x1C] + cmp r0, 0x8 + ble _0813CA24 + movs r1, 0 + str r1, [sp, 0x1C] +_0813CA24: + movs r6, 0 + mov r8, r6 + ldr r1, _0813CA78 @ =gUnknown_83C9CB8 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0813CB18 +_0813CA30: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 2 + adds r4, r0, r1 + adds r0, r4, 0 + bl sub_813CC44 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xB7 + bne _0813CA5A + ldr r2, [sp, 0x18] + adds r2, 0x1 + str r2, [sp, 0x18] + adds r0, r2, 0 + subs r0, 0x1 + adds r1, r6, 0x1 + str r1, [sp, 0x20] + ldr r2, [sp, 0x1C] + cmp r2, r0 + bne _0813CB06 +_0813CA5A: + adds r0, r4, 0 + ldr r1, [sp, 0xC] + bl sub_813CBD0 + adds r6, 0x1 + str r6, [sp, 0x20] + cmp r0, 0 + beq _0813CB06 + movs r0, 0 + str r0, [sp, 0x8] + lsls r7, r5, 16 + add r6, sp, 0x8 + b _0813CA94 + .align 2, 0 +_0813CA74: .4byte 0x00004024 +_0813CA78: .4byte gUnknown_83C9CB8 +_0813CA7C: + add r0, sp, 0x4 + ldrh r0, [r0] + cmp r0, 0 + beq _0813CA94 + mov r0, r8 + movs r1, 0x1 + add r8, r1 + add r1, sp, 0x4 + ldrh r1, [r1] + ldr r2, [sp, 0x10] + bl sub_81344A4 +_0813CA94: + lsrs r0, r7, 16 + add r2, sp, 0x4 + str r2, [sp] + ldr r1, _0813CAC8 @ =gUnknown_8464148 + movs r2, 0x37 + adds r3, r6, 0 + bl sub_813CC58 + cmp r0, 0 + bne _0813CA7C + movs r2, 0 + add r5, sp, 0x4 + ldr r0, _0813CACC @ =gUnknown_84642BC + mov r10, r0 +_0813CAB0: + ldr r0, [sp, 0x14] + asrs r0, r2 + movs r1, 0x1 + ands r0, r1 + adds r1, r2, 0x1 + mov r9, r1 + cmp r0, 0 + beq _0813CB00 + movs r0, 0 + str r0, [sp, 0x8] + lsls r4, r2, 3 + b _0813CAE4 + .align 2, 0 +_0813CAC8: .4byte gUnknown_8464148 +_0813CACC: .4byte gUnknown_84642BC +_0813CAD0: + ldrh r0, [r5] + cmp r0, 0 + beq _0813CAE4 + mov r0, r8 + movs r2, 0x1 + add r8, r2 + ldrh r1, [r5] + ldr r2, [sp, 0x10] + bl sub_81344A4 +_0813CAE4: + mov r1, r10 + adds r0, r4, r1 + ldr r1, [r0] + ldr r2, _0813CB2C @ =gUnknown_84642C0 + adds r0, r4, r2 + ldr r2, [r0] + add r0, sp, 0x4 + str r0, [sp] + lsrs r0, r7, 16 + adds r3, r6, 0 + bl sub_813CC58 + cmp r0, 0 + bne _0813CAD0 +_0813CB00: + mov r2, r9 + cmp r2, 0x6 + bls _0813CAB0 +_0813CB06: + ldr r6, [sp, 0x20] + ldr r1, _0813CB30 @ =gUnknown_83C9CB8 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0813CA30 +_0813CB18: + mov r0, r8 +_0813CB1A: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0813CB2C: .4byte gUnknown_84642C0 +_0813CB30: .4byte gUnknown_83C9CB8 + thumb_func_end sub_813C9DC + + thumb_func_start sub_813CB34 +sub_813CB34: @ 813CB34 + push {lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r1, 0 + ldr r2, _0813CB48 @ =gUnknown_84642F4 +_0813CB3E: + ldrh r0, [r2] + cmp r0, r3 + bne _0813CB4C + adds r0, r1, 0 + b _0813CB58 + .align 2, 0 +_0813CB48: .4byte gUnknown_84642F4 +_0813CB4C: + adds r2, 0x4 + adds r1, 0x1 + cmp r1, 0x2 + bls _0813CB3E + movs r0, 0x1 + negs r0, r0 +_0813CB58: + pop {r1} + bx r1 + thumb_func_end sub_813CB34 + + thumb_func_start sub_813CB5C +sub_813CB5C: @ 813CB5C + push {r4,r5,lr} + sub sp, 0xC + adds r5, r1, 0 + lsls r0, 16 + lsrs r0, 16 + bl sub_813CB34 + adds r4, r0, 0 + cmp r4, 0 + blt _0813CBC4 + ldr r0, _0813CBBC @ =gUnknown_84642F4 + lsls r4, 2 + adds r4, r0 + bl sub_80CBDB0 + ldrh r1, [r4, 0x2] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bne _0813CBC4 + bl sub_8142044 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0 + str r1, [sp, 0x8] + ldr r1, _0813CBC0 @ =gUnknown_8464148 + add r3, sp, 0x8 + add r2, sp, 0x4 + str r2, [sp] + movs r2, 0x37 + bl sub_813CC58 + cmp r0, 0 + beq _0813CBC4 + add r0, sp, 0x4 + ldrh r0, [r0] + cmp r0, 0 + beq _0813CBC4 + add r0, sp, 0x4 + ldrh r1, [r0] + movs r0, 0 + adds r2, r5, 0 + bl sub_81344A4 + movs r0, 0x1 + b _0813CBC6 + .align 2, 0 +_0813CBBC: .4byte gUnknown_84642F4 +_0813CBC0: .4byte gUnknown_8464148 +_0813CBC4: + movs r0, 0 +_0813CBC6: + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813CB5C + + thumb_func_start sub_813CBD0 +sub_813CBD0: @ 813CBD0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [r4, 0x4] + movs r2, 0xC + bl sub_813CC18 + cmp r0, 0 + bne _0813CC10 + ldr r0, [r4, 0x8] + adds r1, r5, 0 + movs r2, 0x5 + bl sub_813CC18 + cmp r0, 0 + bne _0813CC10 + ldr r0, [r4, 0x10] + adds r1, r5, 0 + movs r2, 0xC + bl sub_813CC18 + cmp r0, 0 + bne _0813CC10 + ldr r0, [r4, 0xC] + adds r1, r5, 0 + movs r2, 0x5 + bl sub_813CC18 + cmp r0, 0 + bne _0813CC10 + movs r0, 0 + b _0813CC12 +_0813CC10: + movs r0, 0x1 +_0813CC12: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_813CBD0 + + thumb_func_start sub_813CC18 +sub_813CC18: @ 813CC18 + push {r4,lr} + adds r4, r1, 0 + cmp r0, 0 + beq _0813CC3A + movs r1, 0 + cmp r1, r2 + bge _0813CC3A + ldr r3, [r0, 0x4] +_0813CC28: + ldrh r0, [r3, 0x2] + cmp r0, r4 + bne _0813CC32 + movs r0, 0x1 + b _0813CC3C +_0813CC32: + adds r3, 0x4 + adds r1, 0x1 + cmp r1, r2 + blt _0813CC28 +_0813CC3A: + movs r0, 0 +_0813CC3C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_813CC18 + + thumb_func_start sub_813CC44 +sub_813CC44: @ 813CC44 + push {lr} + ldrb r2, [r0] + ldrb r1, [r0, 0x1] + adds r0, r2, 0 + bl sub_8055238 + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + thumb_func_end sub_813CC44 + + thumb_func_start sub_813CC58 +sub_813CC58: @ 813CC58 + push {r4-r6,lr} + adds r4, r2, 0 + ldr r6, [sp, 0x10] + lsls r0, 16 + lsrs r5, r0, 16 + ldr r2, [r3] + cmp r2, r4 + bge _0813CC86 + lsls r0, r2, 2 + adds r1, r0, r1 +_0813CC6C: + ldrh r0, [r1] + cmp r0, r5 + bne _0813CC7E + ldrh r0, [r1, 0x2] + strh r0, [r6] + adds r0, r2, 0x1 + str r0, [r3] + movs r0, 0x1 + b _0813CC88 +_0813CC7E: + adds r1, 0x4 + adds r2, 0x1 + cmp r2, r4 + blt _0813CC6C +_0813CC86: + movs r0, 0 +_0813CC88: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_813CC58 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/window.s b/asm/window.s new file mode 100644 index 000000000..b65bd849e --- /dev/null +++ b/asm/window.s @@ -0,0 +1,2039 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_6 +nullsub_6: @ 8003B20 + bx lr + thumb_func_end nullsub_6 + + thumb_func_start sub_8003B24 +sub_8003B24: @ 8003B24 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + movs r0, 0 + mov r8, r0 + ldr r4, _08003BB8 @ =gUnknown_3003E40 +_08003B38: + mov r1, r8 + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_8002008 + cmp r0, 0 + beq _08003B48 + ldr r0, _08003BBC @ =nullsub_6 +_08003B48: + str r0, [r4] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 + mov r0, r8 + cmp r0, 0x3 + ble _08003B38 + ldr r0, _08003BC0 @ =gUnknown_81EA144 + ldr r2, [r0] + ldr r3, [r0, 0x4] + ldr r1, _08003BC4 @ =gUnknown_20204B4 + movs r0, 0 + movs r4, 0x1F + mov r8, r4 +_08003B64: + str r2, [r1] + str r3, [r1, 0x4] + str r0, [r1, 0x8] + adds r1, 0xC + movs r4, 0x1 + negs r4, r4 + add r8, r4 + mov r4, r8 + cmp r4, 0 + bge _08003B64 + movs r0, 0 + mov r8, r0 + movs r1, 0 + str r1, [sp] + ldrb r7, [r5] + cmp r7, 0xFF + bne _08003B88 + b _08003CC0 +_08003B88: + adds r6, r5, 0 + movs r2, 0 + str r2, [sp, 0x4] +_08003B8E: + ldr r0, _08003BC8 @ =gUnknown_3003D8C + ldr r0, [r0] + cmp r0, 0x1 + bne _08003BCC + ldrb r1, [r6, 0x3] + ldrb r0, [r6, 0x4] + adds r2, r1, 0 + muls r2, r0 + adds r0, r7, 0 + movs r1, 0 + movs r3, 0 + bl sub_80014F0 + str r0, [sp] + movs r0, 0x1 + negs r0, r0 + ldr r4, [sp] + cmp r4, r0 + bne _08003BCC +_08003BB4: + movs r0, 0 + b _08003CC8 + .align 2, 0 +_08003BB8: .4byte gUnknown_3003E40 +_08003BBC: .4byte nullsub_6 +_08003BC0: .4byte gUnknown_81EA144 +_08003BC4: .4byte gUnknown_20204B4 +_08003BC8: .4byte gUnknown_3003D8C +_08003BCC: + ldr r0, _08003C04 @ =gUnknown_3003E40 + mov r9, r0 + lsls r0, r7, 2 + mov r2, r9 + adds r1, r0, r2 + ldr r1, [r1] + mov r10, r0 + cmp r1, 0 + bne _08003C2E + adds r0, r7, 0 + movs r1, 0x8 + bl sub_8001AA8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08003C08 @ =0x0000ffff + cmp r5, r0 + beq _08003C2E + adds r0, r5, 0 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + bne _08003C0C + bl sub_8003ECC + b _08003BB4 + .align 2, 0 +_08003C04: .4byte gUnknown_3003E40 +_08003C08: .4byte 0x0000ffff +_08003C0C: + movs r1, 0 + mov r3, r9 + cmp r1, r5 + bge _08003C20 + movs r2, 0 +_08003C16: + adds r0, r4, r1 + strb r2, [r0] + adds r1, 0x1 + cmp r1, r5 + blt _08003C16 +_08003C20: + mov r1, r10 + adds r0, r1, r3 + str r4, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8001FA0 +_08003C2E: + ldrb r1, [r6, 0x3] + ldrb r0, [r6, 0x4] + muls r0, r1 + lsls r0, 21 + lsrs r0, 16 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + bne _08003C70 + adds r0, r7, 0 + bl sub_8004A34 + lsls r0, 24 + cmp r0, 0 + bne _08003BB4 + ldr r0, _08003C68 @ =gUnknown_3003E40 + mov r2, r10 + adds r5, r2, r0 + ldr r1, [r5] + ldr r0, _08003C6C @ =nullsub_6 + cmp r1, r0 + beq _08003BB4 + adds r0, r1, 0 + bl sub_8002BC4 + str r4, [r5] + b _08003BB4 + .align 2, 0 +_08003C68: .4byte gUnknown_3003E40 +_08003C6C: .4byte nullsub_6 +_08003C70: + ldr r1, _08003CD8 @ =gUnknown_20204B4 + adds r0, r1, 0 + adds r0, 0x8 + ldr r2, [sp, 0x4] + adds r0, r2, r0 + str r4, [r0] + adds r2, r1 + ldr r0, [r6] + ldr r1, [r6, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _08003CDC @ =gUnknown_3003D8C + ldr r0, [r0] + cmp r0, 0x1 + bne _08003CA6 + mov r4, sp + ldrh r4, [r4] + strh r4, [r2, 0x6] + ldrb r0, [r6, 0x3] + ldrb r1, [r6, 0x4] + adds r2, r0, 0 + muls r2, r1 + adds r0, r7, 0 + ldr r1, [sp] + movs r3, 0x1 + bl sub_80014F0 +_08003CA6: + adds r6, 0x8 + ldr r0, [sp, 0x4] + adds r0, 0xC + str r0, [sp, 0x4] + movs r1, 0x1 + add r8, r1 + ldrb r7, [r6] + cmp r7, 0xFF + beq _08003CC0 + mov r2, r8 + cmp r2, 0x1F + bgt _08003CC0 + b _08003B8E +_08003CC0: + ldr r1, _08003CE0 @ =gUnknown_3003E30 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 +_08003CC8: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08003CD8: .4byte gUnknown_20204B4 +_08003CDC: .4byte gUnknown_3003D8C +_08003CE0: .4byte gUnknown_3003E30 + thumb_func_end sub_8003B24 + + thumb_func_start sub_8003CE4 +sub_8003CE4: @ 8003CE4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r0 + movs r6, 0 + ldr r1, _08003DD4 @ =gUnknown_20204B4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _08003D14 +_08003CFC: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x1F + bhi _08003D14 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08003CFC +_08003D14: + cmp r6, 0x20 + beq _08003DCE + mov r0, r8 + ldrb r7, [r0] + movs r1, 0 + mov r9, r1 + ldr r0, _08003DD8 @ =gUnknown_3003D8C + ldr r0, [r0] + cmp r0, 0x1 + bne _08003D46 + mov r2, r8 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + adds r2, r1, 0 + muls r2, r0 + adds r0, r7, 0 + movs r1, 0 + movs r3, 0 + bl sub_80014F0 + mov r9, r0 + movs r0, 0x1 + negs r0, r0 + cmp r9, r0 + beq _08003DCE +_08003D46: + ldr r3, _08003DDC @ =gUnknown_3003E40 + mov r10, r3 + lsls r0, r7, 2 + adds r1, r0, r3 + ldr r1, [r1] + str r0, [sp] + cmp r1, 0 + bne _08003D96 + adds r0, r7, 0 + movs r1, 0x8 + bl sub_8001AA8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08003DE0 @ =0x0000ffff + cmp r5, r0 + beq _08003D96 + adds r0, r5, 0 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + beq _08003DCE + movs r1, 0 + mov r3, r10 + cmp r1, r5 + bge _08003D88 + movs r2, 0 +_08003D7E: + adds r0, r4, r1 + strb r2, [r0] + adds r1, 0x1 + cmp r1, r5 + blt _08003D7E +_08003D88: + ldr r1, [sp] + adds r0, r1, r3 + str r4, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8001FA0 +_08003D96: + mov r2, r8 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + muls r0, r1 + lsls r0, 21 + lsrs r0, 16 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + bne _08003DE8 + adds r0, r7, 0 + bl sub_8004A34 + lsls r0, 24 + cmp r0, 0 + bne _08003DCE + ldr r0, _08003DDC @ =gUnknown_3003E40 + ldr r3, [sp] + adds r5, r3, r0 + ldr r1, [r5] + ldr r0, _08003DE4 @ =nullsub_6 + cmp r1, r0 + beq _08003DCE + adds r0, r1, 0 + bl sub_8002BC4 + str r4, [r5] +_08003DCE: + movs r0, 0xFF + b _08003E24 + .align 2, 0 +_08003DD4: .4byte gUnknown_20204B4 +_08003DD8: .4byte gUnknown_3003D8C +_08003DDC: .4byte gUnknown_3003E40 +_08003DE0: .4byte 0x0000ffff +_08003DE4: .4byte nullsub_6 +_08003DE8: + ldr r2, _08003E34 @ =gUnknown_20204B4 + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 2 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + str r4, [r0] + adds r2, r1, r2 + mov r3, r8 + ldr r0, [r3] + ldr r1, [r3, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _08003E38 @ =gUnknown_3003D8C + ldr r0, [r0] + cmp r0, 0x1 + bne _08003E22 + mov r0, r9 + strh r0, [r2, 0x6] + ldrb r0, [r2, 0x3] + ldrb r1, [r2, 0x4] + adds r2, r0, 0 + muls r2, r1 + adds r0, r7, 0 + mov r1, r9 + movs r3, 0x1 + bl sub_80014F0 +_08003E22: + adds r0, r6, 0 +_08003E24: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08003E34: .4byte gUnknown_20204B4 +_08003E38: .4byte gUnknown_3003D8C + thumb_func_end sub_8003CE4 + + thumb_func_start sub_8003E3C +sub_8003E3C: @ 8003E3C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08003EB8 @ =gUnknown_20204B4 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r4, r0, r1 + ldrb r3, [r4] + adds r7, r3, 0 + ldr r0, _08003EBC @ =gUnknown_3003D8C + ldr r0, [r0] + cmp r0, 0x1 + bne _08003E68 + ldrh r1, [r4, 0x6] + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x4] + muls r2, r0 + adds r0, r3, 0 + movs r3, 0x2 + bl sub_80014F0 +_08003E68: + ldr r0, _08003EC0 @ =gUnknown_81EA144 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r4] + str r1, [r4, 0x4] + adds r0, r7, 0 + bl sub_8004A34 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _08003E96 + ldr r0, _08003EC4 @ =gUnknown_3003E40 + lsls r1, r7, 2 + adds r4, r1, r0 + ldr r1, [r4] + ldr r0, _08003EC8 @ =nullsub_6 + cmp r1, r0 + beq _08003E96 + adds r0, r1, 0 + bl sub_8002BC4 + str r5, [r4] +_08003E96: + ldr r1, _08003EB8 @ =gUnknown_20204B4 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r1, 0x8 + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, 0 + beq _08003EB0 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08003EB0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08003EB8: .4byte gUnknown_20204B4 +_08003EBC: .4byte gUnknown_3003D8C +_08003EC0: .4byte gUnknown_81EA144 +_08003EC4: .4byte gUnknown_3003E40 +_08003EC8: .4byte nullsub_6 + thumb_func_end sub_8003E3C + + thumb_func_start sub_8003ECC +sub_8003ECC: @ 8003ECC + push {r4-r6,lr} + ldr r4, _08003F14 @ =gUnknown_3003E40 + movs r5, 0x3 +_08003ED2: + ldr r1, [r4] + cmp r1, 0 + beq _08003EE8 + ldr r0, _08003F18 @ =nullsub_6 + cmp r1, r0 + beq _08003EE8 + adds r0, r1, 0 + bl sub_8002BC4 + movs r0, 0 + str r0, [r4] +_08003EE8: + adds r4, 0x4 + subs r5, 0x1 + cmp r5, 0 + bge _08003ED2 + ldr r0, _08003F1C @ =gUnknown_20204B4 + adds r4, r0, 0 + adds r4, 0x8 + movs r6, 0 + movs r5, 0x1F +_08003EFA: + ldr r0, [r4] + cmp r0, 0 + beq _08003F06 + bl sub_8002BC4 + str r6, [r4] +_08003F06: + adds r4, 0xC + subs r5, 0x1 + cmp r5, 0 + bge _08003EFA + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08003F14: .4byte gUnknown_3003E40 +_08003F18: .4byte nullsub_6 +_08003F1C: .4byte gUnknown_20204B4 + thumb_func_end sub_8003ECC + + thumb_func_start sub_8003F20 +sub_8003F20: @ 8003F20 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + adds r5, r3, 0 + ldr r2, _08003F58 @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + mov r0, sp + adds r1, r2 + ldm r1!, {r2,r4,r6} + stm r0!, {r2,r4,r6} + mov r0, sp + ldrb r1, [r0, 0x3] + ldrb r0, [r0, 0x4] + muls r0, r1 + lsls r0, 21 + lsrs r4, r0, 16 + cmp r3, 0x2 + beq _08003F6C + cmp r3, 0x2 + bgt _08003F5C + cmp r3, 0x1 + beq _08003F62 + b _08003F96 + .align 2, 0 +_08003F58: .4byte gUnknown_20204B4 +_08003F5C: + cmp r5, 0x3 + beq _08003F7E + b _08003F96 +_08003F62: + mov r0, sp + ldrb r0, [r0] + bl sub_80020BC + b _08003F96 +_08003F6C: + mov r0, sp + ldrb r0, [r0] + ldr r1, [sp, 0x8] + mov r2, sp + ldrh r3, [r2, 0x6] + adds r2, r4, 0 + bl sub_80017D0 + b _08003F96 +_08003F7E: + mov r0, sp + ldrb r0, [r0] + ldr r1, [sp, 0x8] + mov r2, sp + ldrh r3, [r2, 0x6] + adds r2, r4, 0 + bl sub_80017D0 + mov r0, sp + ldrb r0, [r0] + bl sub_80020BC +_08003F96: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8003F20 + + thumb_func_start sub_8003FA0 +sub_8003FA0: @ 8003FA0 + push {r4,lr} + sub sp, 0x1C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08003FFC @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r0, sp, 0x10 + adds r1, r2 + ldm r1!, {r2-r4} + stm r0!, {r2-r4} + add r0, sp, 0x10 + ldrb r0, [r0] + movs r1, 0xA + bl sub_8001AA8 + adds r1, r0, 0 + add r0, sp, 0x10 + ldrh r0, [r0, 0x6] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + add r0, sp, 0x10 + ldrb r0, [r0] + add r2, sp, 0x10 + ldrb r2, [r2, 0x1] + add r3, sp, 0x10 + ldrb r3, [r3, 0x2] + add r4, sp, 0x10 + ldrb r4, [r4, 0x3] + str r4, [sp] + add r4, sp, 0x10 + ldrb r4, [r4, 0x4] + str r4, [sp, 0x4] + add r4, sp, 0x10 + ldrb r4, [r4, 0x5] + str r4, [sp, 0x8] + movs r4, 0x1 + str r4, [sp, 0xC] + bl sub_8002590 + add sp, 0x1C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08003FFC: .4byte gUnknown_20204B4 + thumb_func_end sub_8003FA0 + + thumb_func_start sub_8004000 +sub_8004000: @ 8004000 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + ldr r4, [sp, 0x44] + ldr r5, [sp, 0x48] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x1C] + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x20] + ldr r2, _080040B4 @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r0, sp, 0x10 + adds r1, r2 + ldm r1!, {r2-r4} + stm r0!, {r2-r4} + add r0, sp, 0x10 + ldrb r0, [r0] + movs r1, 0xA + bl sub_8001AA8 + add r2, sp, 0x10 + adds r1, r2, 0 + ldrb r1, [r1, 0x3] + mov r3, r9 + muls r3, r1 + adds r1, r3, 0 + ldrh r2, [r2, 0x6] + adds r1, r2 + add r1, r10 + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + movs r5, 0 + cmp r5, r8 + bge _080040A2 + add r4, sp, 0x10 + movs r7, 0x1 +_0800406E: + ldrb r0, [r4] + ldrb r2, [r4, 0x1] + add r2, r10 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + add r3, r9 + adds r3, r5 + lsls r3, 24 + lsrs r3, 24 + ldr r1, [sp, 0x1C] + str r1, [sp] + str r7, [sp, 0x4] + ldr r1, [sp, 0x20] + str r1, [sp, 0x8] + str r7, [sp, 0xC] + adds r1, r6, 0 + bl sub_8002590 + ldrb r0, [r4, 0x3] + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r5, 0x1 + cmp r5, r8 + blt _0800406E +_080040A2: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080040B4: .4byte gUnknown_20204B4 + thumb_func_end sub_8004000 + + thumb_func_start sub_80040B8 +sub_80040B8: @ 80040B8 + push {r4,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08004100 @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r0, sp, 0xC + adds r1, r2 + ldm r1!, {r2-r4} + stm r0!, {r2-r4} + add r0, sp, 0xC + ldrb r0, [r0] + ldr r1, _08004104 @ =gUnknown_3003E30 + ldrb r1, [r1] + add r2, sp, 0xC + ldrb r2, [r2, 0x1] + add r3, sp, 0xC + ldrb r3, [r3, 0x2] + add r4, sp, 0xC + ldrb r4, [r4, 0x3] + str r4, [sp] + add r4, sp, 0xC + ldrb r4, [r4, 0x4] + str r4, [sp, 0x4] + add r4, sp, 0xC + ldrb r4, [r4, 0x5] + str r4, [sp, 0x8] + bl sub_8002554 + add sp, 0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08004100: .4byte gUnknown_20204B4 +_08004104: .4byte gUnknown_3003E30 + thumb_func_end sub_80040B8 + + thumb_func_start sub_8004108 +sub_8004108: @ 8004108 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x40] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x1C] + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + ldr r2, _080041B4 @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r0, sp, 0x10 + adds r1, r2 + ldm r1!, {r2-r4} + stm r0!, {r2-r4} + add r0, sp, 0x10 + ldrb r0, [r0] + movs r1, 0xA + bl sub_8001AA8 + add r2, sp, 0x10 + adds r1, r2, 0 + ldrb r1, [r1, 0x3] + mov r3, r9 + muls r3, r1 + adds r1, r3, 0 + ldrh r2, [r2, 0x6] + adds r1, r2 + add r1, r10 + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + movs r5, 0 + cmp r5, r8 + bge _080041A2 + add r4, sp, 0x10 + movs r7, 0x1 +_0800416E: + ldrb r0, [r4] + ldrb r2, [r4, 0x1] + add r2, r10 + lsls r2, 24 + lsrs r2, 24 + ldrb r3, [r4, 0x2] + add r3, r9 + adds r3, r5 + lsls r3, 24 + lsrs r3, 24 + ldr r1, [sp, 0x1C] + str r1, [sp] + str r7, [sp, 0x4] + ldrb r1, [r4, 0x5] + str r1, [sp, 0x8] + str r7, [sp, 0xC] + adds r1, r6, 0 + bl sub_8002590 + ldrb r0, [r4, 0x3] + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r5, 0x1 + cmp r5, r8 + blt _0800416E +_080041A2: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080041B4: .4byte gUnknown_20204B4 + thumb_func_end sub_8004108 + + thumb_func_start sub_80041B8 +sub_80041B8: @ 80041B8 + push {r4,r5,lr} + sub sp, 0x18 + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + str r4, [sp] + str r5, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + str r4, [sp, 0x10] + str r5, [sp, 0x14] + movs r2, 0 + movs r3, 0 + bl sub_80041F0 + add sp, 0x18 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80041B8 + + thumb_func_start sub_80041F0 +sub_80041F0: @ 80041F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + ldr r4, [sp, 0x44] + ldr r5, [sp, 0x48] + ldr r6, [sp, 0x4C] + mov r8, r6 + ldr r6, [sp, 0x50] + mov r9, r6 + ldr r6, [sp, 0x54] + mov r10, r6 + ldr r6, [sp, 0x58] + mov r12, r6 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + mov r6, r8 + lsls r6, 16 + lsrs r6, 16 + mov r8, r6 + mov r6, r9 + lsls r6, 16 + lsrs r6, 16 + mov r9, r6 + mov r6, r10 + lsls r6, 16 + lsrs r6, 16 + mov r10, r6 + mov r6, r12 + lsls r6, 16 + lsrs r6, 16 + mov r12, r6 + str r1, [sp, 0x14] + ldr r7, _080042A4 @ =0xffff0000 + lsls r5, 16 + ldr r6, _080042A8 @ =0x0000ffff + lsrs r4, 16 + orrs r4, r5 + str r4, [sp, 0x18] + ldr r1, _080042AC @ =gUnknown_20204B4 + lsls r5, r0, 1 + adds r5, r0 + lsls r5, 2 + adds r0, r1, 0 + adds r0, 0x8 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp, 0x1C] + adds r5, r1 + ldrb r0, [r5, 0x3] + lsls r0, 3 + add r1, sp, 0x1C + ldr r4, [r1, 0x4] + ands r4, r7 + orrs r4, r0 + str r4, [r1, 0x4] + ldrb r0, [r5, 0x4] + lsls r0, 19 + ands r6, r4 + orrs r6, r0 + str r6, [r1, 0x4] + mov r0, r8 + str r0, [sp] + mov r6, r9 + str r6, [sp, 0x4] + mov r0, r10 + str r0, [sp, 0x8] + mov r6, r12 + str r6, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + add r0, sp, 0x14 + bl sub_8004AA4 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080042A4: .4byte 0xffff0000 +_080042A8: .4byte 0x0000ffff +_080042AC: .4byte gUnknown_20204B4 + thumb_func_end sub_80041F0 + + thumb_func_start sub_80042B0 +sub_80042B0: @ 80042B0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + ldr r4, [sp, 0x48] + ldr r5, [sp, 0x4C] + ldr r6, [sp, 0x50] + mov r8, r6 + ldr r7, [sp, 0x54] + mov r9, r7 + ldr r6, [sp, 0x58] + mov r10, r6 + ldr r7, [sp, 0x5C] + mov r12, r7 + ldr r6, [sp, 0x60] + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + mov r7, r8 + lsls r7, 16 + lsrs r7, 16 + mov r8, r7 + mov r7, r9 + lsls r7, 16 + lsrs r7, 16 + mov r9, r7 + mov r7, r10 + lsls r7, 16 + lsrs r7, 16 + mov r10, r7 + mov r7, r12 + lsls r7, 16 + lsrs r7, 16 + mov r12, r7 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0x24] + str r1, [sp, 0x14] + lsls r5, 16 + ldr r6, _0800436C @ =0x0000ffff + lsrs r4, 16 + orrs r4, r5 + str r4, [sp, 0x18] + ldr r1, _08004370 @ =gUnknown_20204B4 + lsls r5, r0, 1 + adds r5, r0 + lsls r5, 2 + adds r0, r1, 0 + adds r0, 0x8 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp, 0x1C] + adds r5, r1 + ldrb r0, [r5, 0x3] + lsls r0, 3 + add r1, sp, 0x1C + ldr r4, [r1, 0x4] + ldr r7, _08004374 @ =0xffff0000 + ands r4, r7 + orrs r4, r0 + str r4, [r1, 0x4] + ldrb r0, [r5, 0x4] + lsls r0, 19 + ands r6, r4 + orrs r6, r0 + str r6, [r1, 0x4] + mov r0, r8 + str r0, [sp] + mov r6, r9 + str r6, [sp, 0x4] + mov r7, r10 + str r7, [sp, 0x8] + mov r0, r12 + str r0, [sp, 0xC] + ldr r6, [sp, 0x24] + str r6, [sp, 0x10] + add r0, sp, 0x14 + bl sub_8004AA4 + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800436C: .4byte 0x0000ffff +_08004370: .4byte gUnknown_20204B4 +_08004374: .4byte 0xffff0000 + thumb_func_end sub_80042B0 + + thumb_func_start sub_8004378 +sub_8004378: @ 8004378 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + mov r9, r3 + ldr r3, [sp, 0x28] + ldr r4, [sp, 0x2C] + mov r8, r4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + mov r4, r9 + lsls r4, 16 + lsrs r4, 16 + mov r9, r4 + lsls r3, 16 + lsrs r3, 16 + mov r4, r8 + lsls r4, 16 + lsrs r4, 16 + mov r8, r4 + ldr r5, _080043F8 @ =gUnknown_20204B4 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [sp, 0x8] + adds r4, r5 + ldrb r0, [r4, 0x3] + lsls r0, 3 + ldr r6, _080043FC @ =0xffff0000 + ldr r5, [sp, 0xC] + ands r5, r6 + orrs r5, r0 + str r5, [sp, 0xC] + ldrb r4, [r4, 0x4] + lsls r4, 19 + ldr r0, _08004400 @ =0x0000ffff + ands r0, r5 + orrs r0, r4 + str r0, [sp, 0xC] + mov r0, r8 + str r0, [sp] + str r1, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r2, 0 + mov r2, r9 + bl sub_8004C84 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080043F8: .4byte gUnknown_20204B4 +_080043FC: .4byte 0xffff0000 +_08004400: .4byte 0x0000ffff + thumb_func_end sub_8004378 + + thumb_func_start sub_8004404 +sub_8004404: @ 8004404 + push {r4-r6,lr} + adds r6, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r5, r2, 16 + lsls r3, 16 + lsrs r2, r3, 16 + cmp r5, 0 + beq _08004438 + ldr r1, _08004434 @ =gUnknown_20204B4 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + lsls r2, 5 + ldr r1, [r0] + adds r1, r2 + lsrs r2, r5, 17 + adds r0, r6, 0 + bl CpuSet + b _08004450 + .align 2, 0 +_08004434: .4byte gUnknown_20204B4 +_08004438: + ldr r1, _08004458 @ =gUnknown_20204B4 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + lsls r2, 5 + ldr r1, [r0] + adds r1, r2 + adds r0, r6, 0 + bl LZ77UnCompWram +_08004450: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08004458: .4byte gUnknown_20204B4 + thumb_func_end sub_8004404 + + thumb_func_start sub_800445C +sub_800445C: @ 800445C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r5, _080044A4 @ =gUnknown_20204B4 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r0, r4, r5 + ldrb r2, [r0, 0x3] + ldrb r0, [r0, 0x4] + muls r2, r0 + lsls r0, r1, 24 + lsls r3, r1, 16 + orrs r0, r3 + lsls r3, r1, 8 + orrs r0, r3 + orrs r0, r1 + str r0, [sp] + adds r5, 0x8 + adds r4, r5 + ldr r1, [r4] + lsls r2, 3 + movs r0, 0x80 + lsls r0, 17 + orrs r2, r0 + mov r0, sp + bl CpuFastSet + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080044A4: .4byte gUnknown_20204B4 + thumb_func_end sub_800445C + + thumb_func_start sub_80044A8 +sub_80044A8: @ 80044A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsrs r3, 24 + ldr r2, _08004544 @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r4, r1, r2 + adds r2, 0x8 + adds r1, r2 + ldr r5, [r1] + lsls r7, r3, 24 + lsls r0, r3, 16 + orrs r7, r0 + lsls r0, r3, 8 + orrs r7, r0 + orrs r7, r3 + ldr r1, [r4] + ldr r2, [r4, 0x4] + ldrb r3, [r4, 0x4] + lsrs r0, r1, 24 + muls r0, r3 + lsls r6, r0, 5 + lsrs r1, 24 + mov r12, r1 + mov r0, r8 + cmp r0, 0x1 + bne _080044FC + b _080046B2 +_080044FC: + cmp r0, 0x1 + ble _08004502 + b _0800485A +_08004502: + cmp r0, 0 + beq _08004508 + b _0800485A +_08004508: + movs r4, 0 + cmp r4, r6 + blt _08004510 + b _0800485A +_08004510: + movs r1, 0x8 + negs r1, r1 + mov r9, r1 + movs r2, 0x7 + mov r8, r2 + mov r10, r5 +_0800451C: + ldr r3, [sp] + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + adds r0, r3, 0 + mov r2, r8 + ands r0, r2 + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004548 + adds r0, r5, r1 + ldr r0, [r0] + mov r1, r10 + str r0, [r1] + b _0800454C + .align 2, 0 +_08004544: .4byte gUnknown_20204B4 +_08004548: + mov r2, r10 + str r7, [r2] +_0800454C: + adds r3, 0x1 + adds r2, r4, 0x4 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004578 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _0800457C +_08004578: + adds r0, r5, r2 + str r7, [r0] +_0800457C: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x8 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _080045AA + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _080045AE +_080045AA: + adds r0, r5, r2 + str r7, [r0] +_080045AE: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0xC + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _080045DC + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _080045E0 +_080045DC: + adds r0, r5, r2 + str r7, [r0] +_080045E0: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x10 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _0800460E + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08004612 +_0800460E: + adds r0, r5, r2 + str r7, [r0] +_08004612: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x14 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004640 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08004644 +_08004640: + adds r0, r5, r2 + str r7, [r0] +_08004644: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x18 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004672 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08004676 +_08004672: + adds r0, r5, r2 + str r7, [r0] +_08004676: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x1C + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + adds r0, r1, 0 + mov r1, r8 + ands r3, r1 + orrs r0, r3 + lsls r0, 2 + adds r1, r4, r0 + cmp r1, r6 + bge _080046A0 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _080046A4 +_080046A0: + adds r0, r5, r2 + str r7, [r0] +_080046A4: + movs r2, 0x20 + add r10, r2 + adds r4, 0x20 + cmp r4, r6 + bge _080046B0 + b _0800451C +_080046B0: + b _0800485A +_080046B2: + subs r0, r6, 0x4 + adds r5, r0 + movs r4, 0 + cmp r4, r6 + blt _080046BE + b _0800485A +_080046BE: + movs r0, 0x8 + negs r0, r0 + mov r9, r0 + movs r1, 0x7 + mov r8, r1 + mov r10, r5 +_080046CA: + ldr r3, [sp] + adds r0, r3, 0 + mov r2, r9 + ands r0, r2 + mov r1, r12 + muls r1, r0 + adds r0, r3, 0 + mov r2, r8 + ands r0, r2 + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _080046F0 + subs r0, r5, r1 + ldr r0, [r0] + mov r1, r10 + str r0, [r1] + b _080046F4 +_080046F0: + mov r2, r10 + str r7, [r2] +_080046F4: + adds r3, 0x1 + adds r2, r4, 0x4 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004720 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08004724 +_08004720: + subs r0, r5, r2 + str r7, [r0] +_08004724: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x8 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004752 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08004756 +_08004752: + subs r0, r5, r2 + str r7, [r0] +_08004756: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0xC + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _08004784 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08004788 +_08004784: + subs r0, r5, r2 + str r7, [r0] +_08004788: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x10 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _080047B6 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _080047BA +_080047B6: + subs r0, r5, r2 + str r7, [r0] +_080047BA: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x14 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _080047E8 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _080047EC +_080047E8: + subs r0, r5, r2 + str r7, [r0] +_080047EC: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x18 + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + str r1, [sp, 0x4] + adds r0, r3, 0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, 0x4] + orrs r1, r0 + lsls r1, 2 + adds r1, r4, r1 + cmp r1, r6 + bge _0800481A + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _0800481E +_0800481A: + subs r0, r5, r2 + str r7, [r0] +_0800481E: + adds r3, 0x1 + adds r2, r4, 0 + adds r2, 0x1C + adds r0, r3, 0 + mov r1, r9 + ands r0, r1 + mov r1, r12 + muls r1, r0 + adds r0, r1, 0 + mov r1, r8 + ands r3, r1 + orrs r0, r3 + lsls r0, 2 + adds r1, r4, r0 + cmp r1, r6 + bge _08004848 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _0800484C +_08004848: + subs r0, r5, r2 + str r7, [r0] +_0800484C: + movs r2, 0x20 + negs r2, r2 + add r10, r2 + adds r4, 0x20 + cmp r4, r6 + bge _0800485A + b _080046CA +_0800485A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80044A8 + + thumb_func_start sub_800486C +sub_800486C: @ 800486C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080048B8 @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldr r5, [r1] + ldr r6, [r1, 0x4] + ldrb r0, [r1] + lsrs r1, r5, 8 + lsls r1, 24 + lsrs r1, 24 + lsrs r2, r5, 16 + lsls r2, 24 + lsrs r2, 24 + lsrs r3, r5, 24 + lsls r4, r6, 24 + lsrs r4, 24 + str r4, [sp] + lsrs r4, r6, 8 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + bl _call_via_r8 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080048B8: .4byte gUnknown_20204B4 + thumb_func_end sub_800486C + + thumb_func_start sub_80048BC +sub_80048BC: @ 80048BC + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 24 + lsrs r0, r1, 24 + cmp r0, 0x7 + bhi _08004948 + lsls r0, 2 + ldr r1, _080048D4 @ =_080048D8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080048D4: .4byte _080048D8 + .align 2, 0 +_080048D8: + .4byte _08004948 + .4byte _080048F8 + .4byte _0800490C + .4byte _08004948 + .4byte _08004948 + .4byte _08004920 + .4byte _08004934 + .4byte _08004948 +_080048F8: + ldr r1, _08004908 @ =gUnknown_20204B4 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + strb r2, [r0, 0x1] + movs r0, 0 + b _0800494A + .align 2, 0 +_08004908: .4byte gUnknown_20204B4 +_0800490C: + ldr r1, _0800491C @ =gUnknown_20204B4 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + strb r2, [r0, 0x2] + movs r0, 0 + b _0800494A + .align 2, 0 +_0800491C: .4byte gUnknown_20204B4 +_08004920: + ldr r1, _08004930 @ =gUnknown_20204B4 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + strb r2, [r0, 0x5] + movs r0, 0 + b _0800494A + .align 2, 0 +_08004930: .4byte gUnknown_20204B4 +_08004934: + ldr r1, _08004944 @ =gUnknown_20204B4 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + strh r2, [r0, 0x6] + movs r0, 0 + b _0800494A + .align 2, 0 +_08004944: .4byte gUnknown_20204B4 +_08004948: + movs r0, 0x1 +_0800494A: + pop {r1} + bx r1 + thumb_func_end sub_80048BC + + thumb_func_start sub_8004950 +sub_8004950: @ 8004950 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r0, r1, 24 + cmp r0, 0x7 + bhi _08004A2C + lsls r0, 2 + ldr r1, _08004968 @ =_0800496C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08004968: .4byte _0800496C + .align 2, 0 +_0800496C: + .4byte _0800498C + .4byte _080049A0 + .4byte _080049B4 + .4byte _080049C8 + .4byte _080049DC + .4byte _080049F0 + .4byte _08004A04 + .4byte _08004A18 +_0800498C: + ldr r0, _0800499C @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + b _08004A2E + .align 2, 0 +_0800499C: .4byte gUnknown_20204B4 +_080049A0: + ldr r0, _080049B0 @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _08004A2E + .align 2, 0 +_080049B0: .4byte gUnknown_20204B4 +_080049B4: + ldr r0, _080049C4 @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x2] + b _08004A2E + .align 2, 0 +_080049C4: .4byte gUnknown_20204B4 +_080049C8: + ldr r0, _080049D8 @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x3] + b _08004A2E + .align 2, 0 +_080049D8: .4byte gUnknown_20204B4 +_080049DC: + ldr r0, _080049EC @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x4] + b _08004A2E + .align 2, 0 +_080049EC: .4byte gUnknown_20204B4 +_080049F0: + ldr r0, _08004A00 @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x5] + b _08004A2E + .align 2, 0 +_08004A00: .4byte gUnknown_20204B4 +_08004A04: + ldr r0, _08004A14 @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x6] + b _08004A2E + .align 2, 0 +_08004A14: .4byte gUnknown_20204B4 +_08004A18: + ldr r0, _08004A28 @ =gUnknown_20204B4 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r0, 0x8 + adds r1, r0 + ldr r0, [r1] + b _08004A2E + .align 2, 0 +_08004A28: .4byte gUnknown_20204B4 +_08004A2C: + movs r0, 0 +_08004A2E: + pop {r1} + bx r1 + thumb_func_end sub_8004950 + + thumb_func_start sub_8004A34 +sub_8004A34: @ 8004A34 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0 + ldr r2, _08004A5C @ =gUnknown_20204B4 + movs r1, 0x1F +_08004A40: + ldrb r0, [r2] + cmp r0, r4 + bne _08004A4C + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_08004A4C: + adds r2, 0xC + subs r1, 0x1 + cmp r1, 0 + bge _08004A40 + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08004A5C: .4byte gUnknown_20204B4 + thumb_func_end sub_8004A34 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/window_8bpp.s b/asm/window_8bpp.s new file mode 100644 index 000000000..7ae02dc9e --- /dev/null +++ b/asm/window_8bpp.s @@ -0,0 +1,447 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_7 +nullsub_7: @ 8005034 + bx lr + thumb_func_end nullsub_7 + + thumb_func_start sub_8005038 +sub_8005038: @ 8005038 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + movs r6, 0 + ldr r1, _08005100 @ =gUnknown_20204B4 + ldrb r0, [r1] + cmp r0, 0xFF + beq _08005066 +_0800504E: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x1F + bhi _08005066 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0800504E +_08005066: + cmp r6, 0x20 + beq _080050FA + mov r0, r9 + ldrb r7, [r0] + ldr r1, _08005104 @ =gUnknown_3003E40 + mov r10, r1 + lsls r2, r7, 2 + mov r8, r2 + mov r0, r8 + add r0, r10 + ldr r0, [r0] + cmp r0, 0 + bne _080050C2 + adds r0, r7, 0 + movs r1, 0x8 + bl sub_8001AA8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _08005108 @ =0x0000ffff + cmp r5, r0 + beq _080050C2 + adds r0, r5, 0 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + beq _080050FA + movs r1, 0 + mov r12, r10 + mov r3, r8 + cmp r1, r5 + bge _080050B4 + movs r2, 0 +_080050AA: + adds r0, r4, r1 + strb r2, [r0] + adds r1, 0x1 + cmp r1, r5 + blt _080050AA +_080050B4: + mov r1, r12 + adds r0, r3, r1 + str r4, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8001FA0 +_080050C2: + mov r2, r9 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + muls r0, r1 + lsls r0, 22 + lsrs r0, 16 + bl sub_8002B9C + adds r4, r0, 0 + cmp r4, 0 + bne _08005110 + adds r0, r7, 0 + bl sub_8005350 + lsls r0, 24 + cmp r0, 0 + bne _080050FA + ldr r0, _08005104 @ =gUnknown_3003E40 + lsls r1, r7, 2 + adds r5, r1, r0 + ldr r1, [r5] + ldr r0, _0800510C @ =nullsub_7 + cmp r1, r0 + beq _080050FA + adds r0, r1, 0 + bl sub_8002BC4 + str r4, [r5] +_080050FA: + movs r0, 0xFF + b _0800512E + .align 2, 0 +_08005100: .4byte gUnknown_20204B4 +_08005104: .4byte gUnknown_3003E40 +_08005108: .4byte 0x0000ffff +_0800510C: .4byte nullsub_7 +_08005110: + ldr r1, _0800513C @ =gUnknown_20204B4 + lsls r2, r6, 1 + adds r2, r6 + lsls r2, 2 + adds r0, r1, 0 + adds r0, 0x8 + adds r0, r2, r0 + str r4, [r0] + adds r2, r1 + mov r3, r9 + ldr r0, [r3] + ldr r1, [r3, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + adds r0, r6, 0 +_0800512E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800513C: .4byte gUnknown_20204B4 + thumb_func_end sub_8005038 + + thumb_func_start sub_8005140 +sub_8005140: @ 8005140 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r6, _0800517C @ =gUnknown_20204B4 + lsls r1, r0, 1 + adds r1, r0 + lsls r4, r1, 2 + adds r0, r4, r6 + ldrb r1, [r0, 0x3] + ldrb r0, [r0, 0x4] + muls r0, r1 + lsls r0, 22 + lsrs r3, r0, 16 + movs r2, 0 + cmp r2, r3 + bge _08005176 + adds r0, r6, 0 + adds r0, 0x8 + adds r1, r4, r0 +_0800516A: + ldr r0, [r1] + adds r0, r2 + strb r5, [r0] + adds r2, 0x1 + cmp r2, r3 + blt _0800516A +_08005176: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800517C: .4byte gUnknown_20204B4 + thumb_func_end sub_8005140 + + thumb_func_start sub_8005180 +sub_8005180: @ 8005180 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x10 + mov r9, r3 + ldr r3, [sp, 0x28] + ldr r4, [sp, 0x2C] + mov r8, r4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + mov r4, r9 + lsls r4, 16 + lsrs r4, 16 + mov r9, r4 + lsls r3, 16 + lsrs r3, 16 + mov r4, r8 + lsls r4, 16 + lsrs r4, 16 + mov r8, r4 + ldr r5, _08005200 @ =gUnknown_20204B4 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [sp, 0x8] + adds r4, r5 + ldrb r0, [r4, 0x3] + lsls r0, 3 + ldr r6, _08005204 @ =0xffff0000 + ldr r5, [sp, 0xC] + ands r5, r6 + orrs r5, r0 + str r5, [sp, 0xC] + ldrb r4, [r4, 0x4] + lsls r4, 19 + ldr r0, _08005208 @ =0x0000ffff + ands r0, r5 + orrs r0, r4 + str r0, [sp, 0xC] + mov r0, r8 + str r0, [sp] + str r1, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r2, 0 + mov r2, r9 + bl sub_8004F90 + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08005200: .4byte gUnknown_20204B4 +_08005204: .4byte 0xffff0000 +_08005208: .4byte 0x0000ffff + thumb_func_end sub_8005180 + + thumb_func_start sub_800520C +sub_800520C: @ 800520C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + ldr r4, [sp, 0x4C] + ldr r5, [sp, 0x50] + ldr r6, [sp, 0x54] + mov r8, r6 + ldr r7, [sp, 0x58] + mov r9, r7 + ldr r6, [sp, 0x5C] + mov r10, r6 + ldr r7, [sp, 0x60] + mov r12, r7 + ldr r6, [sp, 0x64] + lsls r0, 24 + lsrs r0, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + mov r7, r8 + lsls r7, 16 + lsrs r7, 16 + mov r8, r7 + mov r7, r9 + lsls r7, 16 + lsrs r7, 16 + mov r9, r7 + mov r7, r10 + lsls r7, 16 + lsrs r7, 16 + mov r10, r7 + mov r7, r12 + lsls r7, 16 + lsrs r7, 16 + mov r12, r7 + lsls r6, 24 + lsrs r6, 24 + str r6, [sp, 0x28] + str r1, [sp, 0x18] + lsls r5, 16 + ldr r6, _080052CC @ =0x0000ffff + lsrs r4, 16 + orrs r4, r5 + str r4, [sp, 0x1C] + ldr r1, _080052D0 @ =gUnknown_20204B4 + lsls r5, r0, 1 + adds r5, r0 + lsls r5, 2 + adds r0, r1, 0 + adds r0, 0x8 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp, 0x20] + adds r5, r1 + ldrb r0, [r5, 0x3] + lsls r0, 3 + add r1, sp, 0x20 + ldr r4, [r1, 0x4] + ldr r7, _080052D4 @ =0xffff0000 + ands r4, r7 + orrs r4, r0 + str r4, [r1, 0x4] + ldrb r0, [r5, 0x4] + lsls r0, 19 + ands r6, r4 + orrs r6, r0 + str r6, [r1, 0x4] + mov r0, r8 + str r0, [sp] + mov r6, r9 + str r6, [sp, 0x4] + mov r7, r10 + str r7, [sp, 0x8] + mov r0, r12 + str r0, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + ldr r6, [sp, 0x28] + str r6, [sp, 0x14] + add r0, sp, 0x18 + bl sub_8004D40 + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080052CC: .4byte 0x0000ffff +_080052D0: .4byte gUnknown_20204B4 +_080052D4: .4byte 0xffff0000 + thumb_func_end sub_800520C + + thumb_func_start sub_80052D8 +sub_80052D8: @ 80052D8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + adds r5, r2, 0 + ldr r6, _0800530C @ =gUnknown_2020634 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, _08005310 @ =gUnknown_20204B4 + adds r3, r1, r0 + str r3, [r6] + ldr r4, _08005314 @ =gUnknown_2020638 + ldrb r1, [r3, 0x3] + ldrb r0, [r3, 0x4] + muls r0, r1 + lsls r0, 6 + strh r0, [r4] + cmp r2, 0x2 + beq _08005326 + cmp r2, 0x2 + bgt _08005318 + cmp r2, 0x1 + beq _0800531E + b _08005348 + .align 2, 0 +_0800530C: .4byte gUnknown_2020634 +_08005310: .4byte gUnknown_20204B4 +_08005314: .4byte gUnknown_2020638 +_08005318: + cmp r5, 0x3 + beq _08005334 + b _08005348 +_0800531E: + ldrb r0, [r3] + bl sub_80020BC + b _08005348 +_08005326: + ldrb r0, [r3] + ldr r1, [r3, 0x8] + ldrh r2, [r4] + ldrh r3, [r3, 0x6] + bl sub_80017D0 + b _08005348 +_08005334: + ldrb r0, [r3] + ldr r1, [r3, 0x8] + ldrh r2, [r4] + ldrh r3, [r3, 0x6] + bl sub_80017D0 + ldr r0, [r6] + ldrb r0, [r0] + bl sub_80020BC +_08005348: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80052D8 + + thumb_func_start sub_8005350 +sub_8005350: @ 8005350 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0 + ldr r2, _08005378 @ =gUnknown_20204B4 + movs r1, 0x1F +_0800535C: + ldrb r0, [r2] + cmp r0, r4 + bne _08005368 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_08005368: + adds r2, 0xC + subs r1, 0x1 + cmp r1, 0 + bge _0800535C + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08005378: .4byte gUnknown_20204B4 + thumb_func_end sub_8005350 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/wireless_communication_status_screen.s b/asm/wireless_communication_status_screen.s new file mode 100644 index 000000000..6158eb25f --- /dev/null +++ b/asm/wireless_communication_status_screen.s @@ -0,0 +1,868 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814F19C +sub_814F19C: @ 814F19C + push {lr} + bl sub_8001960 + lsls r0, 24 + cmp r0, 0 + bne _0814F1BC + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 +_0814F1BC: + pop {r0} + bx r0 + thumb_func_end sub_814F19C + + thumb_func_start sub_814F1C0 +sub_814F1C0: @ 814F1C0 + push {lr} + bl sub_8007320 + bl sub_8007610 + bl sub_8070474 + pop {r0} + bx r0 + thumb_func_end sub_814F1C0 + + thumb_func_start sub_814F1D4 +sub_814F1D4: @ 814F1D4 + push {lr} + ldr r0, _0814F1E0 @ =sub_814F1E4 + bl sub_8000544 + pop {r0} + bx r0 + .align 2, 0 +_0814F1E0: .4byte sub_814F1E4 + thumb_func_end sub_814F1D4 + + thumb_func_start sub_814F1E4 +sub_814F1E4: @ 814F1E4 + push {r4,r5,lr} + sub sp, 0xC + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + ldr r5, _0814F308 @ =gUnknown_3002040 + movs r0, 0x6C + bl sub_8002BB0 + str r0, [r5] + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8001618 + ldr r1, _0814F30C @ =gUnknown_846FA74 + movs r0, 0 + movs r2, 0x2 + bl sub_8001658 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0x1 + bl sub_8001FA0 + adds r0, r4, 0 + bl sub_8002B9C + adds r1, r0, 0 + movs r0, 0 + bl sub_8001FA0 + ldr r1, _0814F310 @ =gUnknown_846F6D0 + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_80F696C + ldr r1, _0814F314 @ =gUnknown_846F8E0 + movs r0, 0x1 + movs r2, 0 + movs r3, 0 + bl sub_8002040 + ldr r0, _0814F318 @ =gUnknown_846FA7C + bl sub_8003B24 + bl sub_8002C28 + bl sub_8070528 + bl sub_8006B10 + bl sub_80773BC + bl sub_8087E64 + bl m4aSoundVSyncOn + ldr r0, _0814F31C @ =sub_814F1C0 + bl sub_80006F4 + ldr r0, _0814F320 @ =sub_814F46C + movs r1, 0 + bl sub_807741C + ldr r1, [r5] + adds r1, 0x60 + strb r0, [r1] + bl sub_8116DE0 + ldr r1, [r5] + adds r1, 0x61 + strb r0, [r1] + ldr r1, [r5] + movs r0, 0x1 + str r0, [r1, 0x1C] + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + ldr r0, _0814F324 @ =gUnknown_846F4D0 + movs r1, 0 + movs r2, 0x20 + bl sub_80703EC + movs r0, 0xF0 + bl sub_80F77CC + bl sub_813CC90 + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_8002554 + movs r0, 0x1 + bl sub_80020BC + ldr r0, _0814F328 @ =sub_814F19C + bl sub_8000544 + bl sub_8077578 + bl sub_8002DE8 + bl sub_8006B5C + bl sub_8006BA8 + bl sub_80704D0 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814F308: .4byte gUnknown_3002040 +_0814F30C: .4byte gUnknown_846FA74 +_0814F310: .4byte gUnknown_846F6D0 +_0814F314: .4byte gUnknown_846F8E0 +_0814F318: .4byte gUnknown_846FA7C +_0814F31C: .4byte sub_814F1C0 +_0814F320: .4byte sub_814F46C +_0814F324: .4byte gUnknown_846F4D0 +_0814F328: .4byte sub_814F19C + thumb_func_end sub_814F1E4 + + thumb_func_start sub_814F32C +sub_814F32C: @ 814F32C + push {r4,lr} + bl sub_8003ECC + movs r4, 0 +_0814F334: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8002008 + bl sub_8002BC4 + adds r4, 0x1 + cmp r4, 0x1 + ble _0814F334 + ldr r0, _0814F35C @ =gUnknown_3002040 + ldr r0, [r0] + bl sub_8002BC4 + ldr r0, _0814F360 @ =sub_80568E0 + bl sub_8000544 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814F35C: .4byte gUnknown_3002040 +_0814F360: .4byte sub_80568E0 + thumb_func_end sub_814F32C + + thumb_func_start sub_814F364 +sub_814F364: @ 814F364 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _0814F38C + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xE + bne _0814F388 + movs r0, 0 + strh r0, [r1] +_0814F388: + movs r0, 0 + strh r0, [r2] +_0814F38C: + movs r2, 0 + ldrsh r0, [r1, r2] + adds r0, 0x2 + lsls r0, 5 + ldr r1, _0814F3A4 @ =gUnknown_846F4D0 + adds r0, r1 + movs r1, 0 + movs r2, 0x10 + bl sub_80703EC + pop {r0} + bx r0 + .align 2, 0 +_0814F3A4: .4byte gUnknown_846F4D0 + thumb_func_end sub_814F364 + + thumb_func_start sub_814F3A8 +sub_814F3A8: @ 814F3A8 + push {r4,r5,lr} + sub sp, 0x8 + movs r0, 0 + movs r1, 0 + bl sub_800445C + movs r0, 0x1 + movs r1, 0 + bl sub_800445C + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + ldr r5, _0814F468 @ =gUnknown_846FAAC + ldr r4, [r5] + movs r0, 0x3 + adds r1, r4, 0 + movs r2, 0 + bl sub_8005ED4 + movs r3, 0xC0 + subs r3, r0 + lsrs r3, 1 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x6 + str r0, [sp] + movs r0, 0x3 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x3 + adds r2, r4, 0 + bl sub_814F65C + movs r1, 0 +_0814F3F0: + adds r4, r1, 0x1 + lsls r0, r4, 2 + adds r0, r5 + ldr r2, [r0] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 25 + movs r1, 0xA0 + lsls r1, 20 + adds r0, r1 + lsrs r0, 24 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r1, 0x3 + movs r3, 0 + bl sub_814F65C + adds r1, r4, 0 + cmp r4, 0x2 + ble _0814F3F0 + ldr r1, _0814F468 @ =gUnknown_846FAAC + adds r0, r4, 0x1 + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + lsls r0, r4, 4 + subs r0, r4 + lsls r0, 25 + movs r1, 0xA0 + lsls r1, 20 + adds r0, r1 + lsrs r0, 24 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x3 + movs r3, 0 + bl sub_814F65C + movs r0, 0 + bl sub_8003FA0 + movs r0, 0 + movs r1, 0x2 + bl sub_8003F20 + movs r0, 0x1 + bl sub_8003FA0 + movs r0, 0x1 + movs r1, 0x2 + bl sub_8003F20 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814F468: .4byte gUnknown_846FAAC + thumb_func_end sub_814F3A8 + + thumb_func_start sub_814F46C +sub_814F46C: @ 814F46C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0814F498 @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x5 + bls _0814F48E + b _0814F648 +_0814F48E: + lsls r0, 2 + ldr r1, _0814F49C @ =_0814F4A0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F498: .4byte gUnknown_3005090 +_0814F49C: .4byte _0814F4A0 + .align 2, 0 +_0814F4A0: + .4byte _0814F4B8 + .4byte _0814F4D4 + .4byte _0814F4F8 + .4byte _0814F514 + .4byte _0814F608 + .4byte _0814F630 +_0814F4B8: + bl sub_814F3A8 + ldr r0, _0814F4D0 @ =gUnknown_3005090 + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _0814F648 + .align 2, 0 +_0814F4D0: .4byte gUnknown_3005090 +_0814F4D4: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl sub_8070588 + movs r0, 0x1 + bl sub_80019BC + movs r0, 0 + bl sub_80020BC + movs r0, 0 + bl sub_80019BC + b _0814F618 +_0814F4F8: + ldr r0, _0814F510 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0814F506 + b _0814F648 +_0814F506: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r2 + b _0814F622 + .align 2, 0 +_0814F510: .4byte gUnknown_2037AB8 +_0814F514: + ldr r0, _0814F570 @ =gUnknown_3002040 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + adds r2, r0, 0 + adds r2, 0x20 + adds r3, r0, 0 + adds r3, 0x61 + ldrb r3, [r3] + bl sub_814F7E4 + lsls r1, r5, 2 + mov r8, r1 + cmp r0, 0 + beq _0814F5A4 + movs r0, 0x2 + movs r1, 0 + bl sub_800445C + movs r4, 0 + ldr r6, _0814F574 @ =gUnknown_2021D18 + movs r7, 0xA0 + lsls r7, 20 +_0814F542: + ldr r0, _0814F570 @ =gUnknown_3002040 + ldr r0, [r0] + lsls r1, r4, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r6, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8008E78 + cmp r4, 0x3 + beq _0814F578 + lsrs r0, r7, 24 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x2 + movs r1, 0x3 + adds r2, r6, 0 + movs r3, 0x4 + bl sub_814F65C + b _0814F58A + .align 2, 0 +_0814F570: .4byte gUnknown_3002040 +_0814F574: .4byte gUnknown_2021D18 +_0814F578: + movs r0, 0x64 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r1, 0x3 + adds r2, r6, 0 + movs r3, 0x4 + bl sub_814F65C +_0814F58A: + movs r2, 0xF0 + lsls r2, 21 + adds r7, r2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0814F542 + movs r0, 0x2 + bl sub_8003FA0 + movs r0, 0x2 + movs r1, 0x3 + bl sub_8003F20 +_0814F5A4: + ldr r0, _0814F5F8 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0814F5B8 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0814F5E2 +_0814F5B8: + movs r0, 0x5 + bl sub_80722CC + ldr r2, _0814F5FC @ =gUnknown_3005090 + ldr r0, _0814F600 @ =gUnknown_3002040 + ldr r0, [r0] + adds r0, 0x61 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0xFF + strh r1, [r0, 0x26] + mov r0, r8 + adds r1, r0, r5 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] +_0814F5E2: + mov r2, r8 + adds r1, r2, r5 + lsls r1, 3 + ldr r0, _0814F604 @ =gUnknown_3005098 + adds r1, r0 + adds r0, r1, 0 + adds r0, 0xE + adds r1, 0x10 + bl sub_814F364 + b _0814F648 + .align 2, 0 +_0814F5F8: .4byte gUnknown_30030F0 +_0814F5FC: .4byte gUnknown_3005090 +_0814F600: .4byte gUnknown_3002040 +_0814F604: .4byte gUnknown_3005098 +_0814F608: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl sub_8070588 +_0814F618: + ldr r1, _0814F62C @ =gUnknown_3005090 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 +_0814F622: + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _0814F648 + .align 2, 0 +_0814F62C: .4byte gUnknown_3005090 +_0814F630: + ldr r0, _0814F654 @ =gUnknown_2037AB8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0814F648 + ldr r0, _0814F658 @ =sub_814F32C + bl sub_8000544 + adds r0, r5, 0 + bl sub_8077508 +_0814F648: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814F654: .4byte gUnknown_2037AB8 +_0814F658: .4byte sub_814F32C + thumb_func_end sub_814F46C + + thumb_func_start sub_814F65C +sub_814F65C: @ 814F65C + push {r4-r7,lr} + sub sp, 0x18 + mov r12, r2 + ldr r2, [sp, 0x2C] + ldr r4, [sp, 0x30] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r2, 24 + lsrs r3, r2, 24 + lsls r4, 24 + lsrs r0, r4, 24 + cmp r0, 0x4 + bhi _0814F6E6 + lsls r0, 2 + ldr r1, _0814F688 @ =_0814F68C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F688: .4byte _0814F68C + .align 2, 0 +_0814F68C: + .4byte _0814F6A0 + .4byte _0814F6AE + .4byte _0814F6BC + .4byte _0814F6CA + .4byte _0814F6D8 +_0814F6A0: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + movs r0, 0x3 + b _0814F6E4 +_0814F6AE: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x3 + b _0814F6E4 +_0814F6BC: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + movs r0, 0x5 + b _0814F6E4 +_0814F6CA: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + movs r0, 0x6 + b _0814F6E4 +_0814F6D8: + add r1, sp, 0x14 + movs r0, 0 + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x2 +_0814F6E4: + strb r0, [r1, 0x2] +_0814F6E6: + negs r0, r5 + orrs r0, r5 + lsrs r0, 31 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + add r0, sp, 0x14 + str r0, [sp, 0x8] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0xC] + mov r0, r12 + str r0, [sp, 0x10] + adds r0, r7, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_812E5A4 + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_814F65C + + thumb_func_start sub_814F714 +sub_814F714: @ 814F714 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r12, r0 + adds r7, r1, 0 + ldrb r0, [r0, 0xA] + lsls r0, 25 + lsrs r0, 25 + mov r8, r0 + movs r4, 0 + ldr r0, _0814F78C @ =gUnknown_846FAC0 + mov r9, r0 + movs r1, 0x1 + add r1, r9 + mov r10, r1 + mov r3, r12 + adds r3, 0x4 + str r3, [sp] +_0814F73E: + lsls r0, r4, 1 + adds r2, r0, r4 + mov r3, r9 + adds r1, r2, r3 + adds r5, r0, 0 + adds r6, r4, 0x1 + ldrb r1, [r1] + cmp r8, r1 + bne _0814F7A2 + mov r0, r12 + ldrb r1, [r0, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0814F7A2 + mov r0, r9 + adds r0, 0x2 + adds r3, r2, r0 + ldrb r0, [r3] + cmp r0, 0 + bne _0814F790 + movs r2, 0 + movs r1, 0 + ldr r3, [sp] +_0814F76E: + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0814F778 + adds r2, 0x1 +_0814F778: + adds r1, 0x1 + cmp r1, 0x3 + ble _0814F76E + adds r2, 0x1 + adds r0, r5, r4 + add r0, r10 + ldrb r1, [r0] + lsls r1, 2 + adds r1, r7 + b _0814F79C + .align 2, 0 +_0814F78C: .4byte gUnknown_846FAC0 +_0814F790: + mov r1, r10 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, 2 + adds r1, r7 + ldrb r2, [r3] +_0814F79C: + ldr r0, [r1] + adds r0, r2 + str r0, [r1] +_0814F7A2: + adds r4, r6, 0 + cmp r4, 0x16 + bls _0814F73E + mov r0, r8 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814F714 + + thumb_func_start sub_814F7BC +sub_814F7BC: @ 814F7BC + push {r4,lr} + movs r4, 0 + adds r3, r1, 0 + adds r2, r0, 0 +_0814F7C4: + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + beq _0814F7D0 + movs r0, 0x1 + b _0814F7DC +_0814F7D0: + adds r3, 0x4 + adds r2, 0x4 + adds r4, 0x1 + cmp r4, 0x3 + ble _0814F7C4 + movs r0, 0 +_0814F7DC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_814F7BC + + thumb_func_start sub_814F7E4 +sub_814F7E4: @ 814F7E4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + adds r6, r0, 0 + mov r9, r1 + adds r5, r2, 0 + lsls r4, r3, 24 + lsrs r4, 24 + movs r0, 0 + mov r8, r0 + mov r0, sp + movs r1, 0 + movs r2, 0x10 + bl memset + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0814F84C @ =gUnknown_3005098 + adds r7, r0, r1 + movs r4, 0 +_0814F812: + lsls r1, r4, 5 + ldr r0, [r7] + adds r0, r1 + mov r1, sp + bl sub_814F714 + adds r1, r0, 0 + ldr r0, [r5] + cmp r1, r0 + beq _0814F82C + str r1, [r5] + movs r2, 0x1 + mov r8, r2 +_0814F82C: + adds r5, 0x4 + adds r4, 0x1 + cmp r4, 0xF + ble _0814F812 + mov r0, sp + mov r1, r9 + bl sub_814F7BC + cmp r0, 0 + bne _0814F850 + mov r3, r8 + cmp r3, 0x1 + beq _0814F874 + movs r0, 0 + b _0814F876 + .align 2, 0 +_0814F84C: .4byte gUnknown_3005098 +_0814F850: + adds r1, r6, 0 + mov r0, sp + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + mov r1, r9 + mov r0, sp + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + ldr r0, [r6] + ldr r1, [r6, 0x4] + adds r0, r1 + ldr r1, [r6, 0x8] + adds r0, r1 + str r0, [r6, 0xC] +_0814F874: + movs r0, 0x1 +_0814F876: + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_814F7E4 + + .align 2, 0 @ Don't pad with nop. diff --git a/charmap.txt b/charmap.txt new file mode 100644 index 000000000..1c68994df --- /dev/null +++ b/charmap.txt @@ -0,0 +1,642 @@ +' ' = 00 +'À' = 01 +'Á' = 02 +'Â' = 03 +'Ç' = 04 +'È' = 05 +'É' = 06 +'Ê' = 07 +'Ë' = 08 +'Ì' = 09 +'Î' = 0B +'Ï' = 0C +'Ò' = 0D +'Ó' = 0E +'Ô' = 0F +'Œ' = 10 +'Ù' = 11 +'Ú' = 12 +'Û' = 13 +'Ñ' = 14 +'ß' = 15 +'à' = 16 +'á' = 17 +'ç' = 19 +'è' = 1A +'é' = 1B +'ê' = 1C +'ë' = 1D +'ì' = 1E +'î' = 20 +'ï' = 21 +'ò' = 22 +'ó' = 23 +'ô' = 24 +'œ' = 25 +'ù' = 26 +'ú' = 27 +'û' = 28 +'ñ' = 29 +'º' = 2A +'ª' = 2B +SUPER_ER = 2C +'&' = 2D +'+' = 2E +LV = 34 +'=' = 35 +'¿' = 51 +'¡' = 52 +PK = 53 +PKMN = 53 54 +POKEBLOCK = 55 56 57 58 59 +'Í' = 5A +'%' = 5B +'(' = 5C +')' = 5D +'â' = 68 +'í' = 6F +UP_ARROW = 79 +DOWN_ARROW = 7A +LEFT_ARROW = 7B +RIGHT_ARROW = 7C +'0' = A1 +'1' = A2 +'2' = A3 +'3' = A4 +'4' = A5 +'5' = A6 +'6' = A7 +'7' = A8 +'8' = A9 +'9' = AA +'!' = AB +'?' = AC +'.' = AD +'-' = AE +'…' = B0 +'“' = B1 +'”' = B2 +'‘' = B3 +'’' = B4 +'♂' = B5 +'♀' = B6 +'¥' = B7 +',' = B8 +'×' = B9 +'/' = BA +'A' = BB +'B' = BC +'C' = BD +'D' = BE +'E' = BF +'F' = C0 +'G' = C1 +'H' = C2 +'I' = C3 +'J' = C4 +'K' = C5 +'L' = C6 +'M' = C7 +'N' = C8 +'O' = C9 +'P' = CA +'Q' = CB +'R' = CC +'S' = CD +'T' = CE +'U' = CF +'V' = D0 +'W' = D1 +'X' = D2 +'Y' = D3 +'Z' = D4 +'a' = D5 +'b' = D6 +'c' = D7 +'d' = D8 +'e' = D9 +'f' = DA +'g' = DB +'h' = DC +'i' = DD +'j' = DE +'k' = DF +'l' = E0 +'m' = E1 +'n' = E2 +'o' = E3 +'p' = E4 +'q' = E5 +'r' = E6 +'s' = E7 +'t' = E8 +'u' = E9 +'v' = EA +'w' = EB +'x' = EC +'y' = ED +'z' = EE +'▶' = EF +':' = F0 +'Ä' = F1 +'Ö' = F2 +'Ü' = F3 +'ä' = F4 +'ö' = F5 +'ü' = F6 +@ Arrows at F7-FA are duplicates of 79-7C. Unused? +TALL_PLUS = FC 0C FB +'$' = FF + +@ Hiragana +'あ' = 01 +'い' = 02 +'う' = 03 +'え' = 04 +'お' = 05 +'か' = 06 +'き' = 07 +'く' = 08 +'け' = 09 +'こ' = 0A +'さ' = 0B +'し' = 0C +'す' = 0D +'せ' = 0E +'そ' = 0F +'た' = 10 +'ち' = 11 +'つ' = 12 +'て' = 13 +'と' = 14 +'な' = 15 +'に' = 16 +'ぬ' = 17 +'ね' = 18 +'の' = 19 +'は' = 1A +'ひ' = 1B +'ふ' = 1C +'へ' = 1D +'ほ' = 1E +'ま' = 1F +'み' = 20 +'む' = 21 +'め' = 22 +'も' = 23 +'や' = 24 +'ゆ' = 25 +'よ' = 26 +'ら' = 27 +'り' = 28 +'る' = 29 +'れ' = 2A +'ろ' = 2B +'わ' = 2C +'を' = 2D +'ん' = 2E +'ぁ' = 2F +'ぃ' = 30 +'ぅ' = 31 +'ぇ' = 32 +'ぉ' = 33 +'ゃ' = 34 +'ゅ' = 35 +'ょ' = 36 +'が' = 37 +'ぎ' = 38 +'ぐ' = 39 +'げ' = 3A +'ご' = 3B +'ざ' = 3C +'じ' = 3D +'ず' = 3E +'ぜ' = 3F +'ぞ' = 40 +'だ' = 41 +'ぢ' = 42 +'づ' = 43 +'で' = 44 +'ど' = 45 +'ば' = 46 +'び' = 47 +'ぶ' = 48 +'べ' = 49 +'ぼ' = 4A +'ぱ' = 4B +'ぴ' = 4C +'ぷ' = 4D +'ぺ' = 4E +'ぽ' = 4F +'っ' = 50 + +@ Katakana +'ア' = 51 +'イ' = 52 +'ウ' = 53 +'エ' = 54 +'オ' = 55 +'カ' = 56 +'キ' = 57 +'ク' = 58 +'ケ' = 59 +'コ' = 5A +'サ' = 5B +'シ' = 5C +'ス' = 5D +'セ' = 5E +'ソ' = 5F +'タ' = 60 +'チ' = 61 +'ツ' = 62 +'テ' = 63 +'ト' = 64 +'ナ' = 65 +'ニ' = 66 +'ヌ' = 67 +'ネ' = 68 +'ノ' = 69 +'ハ' = 6A +'ヒ' = 6B +'フ' = 6C +'ヘ' = 6D +'ホ' = 6E +'マ' = 6F +'ミ' = 70 +'ム' = 71 +'メ' = 72 +'モ' = 73 +'ヤ' = 74 +'ユ' = 75 +'ヨ' = 76 +'ラ' = 77 +'リ' = 78 +'ル' = 79 +'レ' = 7A +'ロ' = 7B +'ワ' = 7C +'ヲ' = 7D +'ン' = 7E +'ァ' = 7F +'ィ' = 80 +'ゥ' = 81 +'ェ' = 82 +'ォ' = 83 +'ャ' = 84 +'ュ' = 85 +'ョ' = 86 +'ガ' = 87 +'ギ' = 88 +'グ' = 89 +'ゲ' = 8A +'ゴ' = 8B +'ザ' = 8C +'ジ' = 8D +'ズ' = 8E +'ゼ' = 8F +'ゾ' = 90 +'ダ' = 91 +'ヂ' = 92 +'ヅ' = 93 +'デ' = 94 +'ド' = 95 +'バ' = 96 +'ビ' = 97 +'ブ' = 98 +'ベ' = 99 +'ボ' = 9A +'パ' = 9B +'ピ' = 9C +'プ' = 9D +'ペ' = 9E +'ポ' = 9F +'ッ' = A0 + +@ Japanese punctuation +' ' = 00 +'!' = AB +'?' = AC +'。' = AD +'ー' = AE +'·' = AF +'‥' = B0 + +STRING = FD + +@ string placeholders +PLAYER = FD 01 +STR_VAR_1 = FD 02 +STR_VAR_2 = FD 03 +STR_VAR_3 = FD 04 +KUN = FD 05 +RIVAL = FD 06 +@ version-dependent strings +VERSION = FD 07 @ "RUBY" / "SAPPHIRE" +EVIL_TEAM = FD 08 @ "MAGMA" / "AQUA" +GOOD_TEAM = FD 09 @ "AQUA" / "MAGMA" +EVIL_LEADER = FD 0A @ "MAXIE" / "ARCHIE" +GOOD_LEADER = FD 0B @ "ARCHIE" / "MAXIE" +EVIL_LEGENDARY = FD 0C @ "GROUDON" / "KYOGRE" +GOOD_LEGENDARY = FD 0D @ "KYOGRE" / "GROUDON" + +@ battle macros + +UNKNOWN_STR = FD 00 + +ATTACKING_TRAINER = FD 08 +DEFENDING_TRAINER = FD 09 + +ATTACKING_MON = FD 0C +DEFENDING_MON = FD 0D + +@ indicates the end of a town/city name (before " TOWN" or " CITY") +NAME_END = FC 00 + +@ more text functions + +COLOR = FC 01 @ use a color listed below right after +HIGHLIGHT = FC 02 @ same as fc 01 +SHADOW = FC 03 @ same as fc 01 +COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes +PALETTE = FC 05 @ used in credits +SIZE = FC 06 @ note that anything other than "SMALL" is invalid +UNKNOWN_7 = FC 07 +PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them +PAUSE_UNTIL_PRESS = FC 09 +UNKNOWN_A = FC 0A +PLAY_BGM = FC 0B +ESCAPE = FC 0C +SHIFT_TEXT = FC 0D +UNKNOWN_E = FC 0E +UNKNOWN_F = FC 0F +PLAY_SE = FC 10 +CLEAR = FC 11 +SKIP = FC 12 +CLEAR_TO = FC 13 +UNKNOWN_14 = FC 14 +JPN = FC 15 +ENG = FC 16 +PAUSE_MUSIC = FC 17 +RESUME_MUSIC = FC 18 + +@ colors + +TRANSPARENT = 00 +DARK_GREY = 01 +RED = 02 +GREEN = 03 +BLUE = 04 +YELLOW = 05 +CYAN = 06 +MAGENTA = 07 +LIGHT_GREY = 08 +BLACK = 09 +BLACK2 = 0A @ duplicate of black? +SILVER = 0B +WHITE = 0C +SKY_BLUE = 0D +LIGHT_BLUE = 0E +WHITE2 = 0F @ duplicate of white? + +@ sound and music + +SE_STOP = 00 00 +SE_KAIFUKU = 01 00 +SE_PC_LOGON = 02 00 +SE_PC_OFF = 03 00 +SE_PC_ON = 04 00 +SE_SELECT = 05 00 +SE_WIN_OPEN = 06 00 +SE_WALL_HIT = 07 00 +SE_DOOR = 08 00 +SE_KAIDAN = 09 00 +SE_DANSA = 0A 00 +SE_JITENSYA = 0B 00 +SE_KOUKA_L = 0C 00 +SE_KOUKA_M = 0D 00 +SE_KOUKA_H = 0E 00 +SE_BOWA2 = 0F 00 +SE_POKE_DEAD = 10 00 +SE_NIGERU = 11 00 +SE_JIDO_DOA = 12 00 +SE_NAMINORI = 13 00 +SE_BAN = 14 00 +SE_PIN = 15 00 +SE_BOO = 16 00 +SE_BOWA = 17 00 +SE_JYUNI = 18 00 +SE_A = 19 00 +SE_I = 1A 00 +SE_U = 1B 00 +SE_E = 1C 00 +SE_O = 1D 00 +SE_N = 1E 00 +SE_SEIKAI = 1F 00 +SE_HAZURE = 20 00 +SE_EXP = 21 00 +SE_JITE_PYOKO = 22 00 +SE_MU_PACHI = 23 00 +SE_TK_KASYA = 24 00 +SE_FU_ZAKU = 25 00 +SE_FU_ZAKU2 = 26 00 +SE_FU_ZUZUZU = 27 00 +SE_RU_GASHIN = 28 00 +SE_RU_GASYAN = 29 00 +SE_RU_BARI = 2A 00 +SE_RU_HYUU = 2B 00 +SE_KI_GASYAN = 2C 00 +SE_TK_WARPIN = 2D 00 +SE_TK_WARPOUT = 2E 00 +SE_TU_SAA = 2F 00 +SE_HI_TURUN = 30 00 +SE_TRACK_MOVE = 31 00 +SE_TRACK_STOP = 32 00 +SE_TRACK_HAIK = 33 00 +SE_TRACK_DOOR = 34 00 +SE_MOTER = 35 00 +SE_CARD = 36 00 +SE_SAVE = 37 00 +SE_KON = 38 00 +SE_KON2 = 39 00 +SE_KON3 = 3A 00 +SE_KON4 = 3B 00 +SE_SUIKOMU = 3C 00 +SE_NAGERU = 3D 00 +SE_TOY_C = 3E 00 +SE_TOY_D = 3F 00 +SE_TOY_E = 40 00 +SE_TOY_F = 41 00 +SE_TOY_G = 42 00 +SE_TOY_A = 43 00 +SE_TOY_B = 44 00 +SE_TOY_C1 = 45 00 +SE_MIZU = 46 00 +SE_HASHI = 47 00 +SE_DAUGI = 48 00 +SE_PINPON = 49 00 +SE_FUUSEN1 = 4A 00 +SE_FUUSEN2 = 4B 00 +SE_FUUSEN3 = 4C 00 +SE_TOY_KABE = 4D 00 +SE_TOY_DANGO = 4E 00 +SE_DOKU = 4F 00 +SE_ESUKA = 50 00 +SE_T_AME = 51 00 +SE_T_AME_E = 52 00 +SE_T_OOAME = 53 00 +SE_T_OOAME_E = 54 00 +SE_T_KOAME = 55 00 +SE_T_KOAME_E = 56 00 +SE_T_KAMI = 57 00 +SE_T_KAMI2 = 58 00 +SE_ELEBETA = 59 00 +SE_HINSI = 5A 00 +SE_EXPMAX = 5B 00 +SE_TAMAKORO = 5C 00 +SE_TAMAKORO_E = 5D 00 +SE_BASABASA = 5E 00 +SE_REGI = 5F 00 +SE_C_GAJI = 60 00 +SE_C_MAKU_U = 61 00 +SE_C_MAKU_D = 62 00 +SE_C_PASI = 63 00 +SE_C_SYU = 64 00 +SE_C_PIKON = 65 00 +SE_REAPOKE = 66 00 +SE_OP_BASYU = 67 00 +SE_BT_START = 68 00 +SE_DENDOU = 69 00 +SE_JIHANKI = 6A 00 +SE_TAMA = 6B 00 +SE_Z_SCROLL = 6C 00 +SE_Z_PAGE = 6D 00 +SE_PN_ON = 6E 00 +SE_PN_OFF = 6F 00 +SE_Z_SEARCH = 70 00 +SE_TAMAGO = 71 00 +SE_TB_START = 72 00 +SE_TB_KON = 73 00 +SE_TB_KARA = 74 00 +SE_BIDORO = 75 00 +BGM_STOP = 5D 01 +BGM_TETSUJI = 5E 01 +BGM_FIELD13 = 5F 01 +BGM_KACHI22 = 60 01 +BGM_KACHI2 = 61 01 +BGM_KACHI3 = 62 01 +BGM_KACHI5 = 63 01 +BGM_PCC = 64 01 +BGM_NIBI = 65 01 +BGM_SUIKUN = 66 01 +BGM_DOORO1 = 67 01 +BGM_DOORO_X1 = 68 01 +BGM_DOORO_X3 = 69 01 +BGM_MACHI_S2 = 6A 01 +BGM_MACHI_S4 = 6B 01 +BGM_GIM = 6C 01 +BGM_NAMINORI = 6D 01 +BGM_DAN01 = 6E 01 +BGM_FANFA1 = 6F 01 +BGM_ME_ASA = 70 01 +BGM_ME_BACHI = 71 01 +BGM_FANFA4 = 72 01 +BGM_FANFA5 = 73 01 +BGM_ME_WAZA = 74 01 +BGM_BIJYUTU = 75 01 +BGM_DOORO_X4 = 76 01 +BGM_FUNE_KAN = 77 01 +BGM_ME_SHINKA = 78 01 +BGM_SHINKA = 79 01 +BGM_ME_WASURE = 7A 01 +BGM_SYOUJOEYE = 7B 01 +BGM_BOYEYE = 7C 01 +BGM_DAN02 = 7D 01 +BGM_MACHI_S3 = 7E 01 +BGM_ODAMAKI = 7F 01 +BGM_B_TOWER = 80 01 +BGM_SWIMEYE = 81 01 +BGM_DAN03 = 82 01 +BGM_ME_KINOMI = 83 01 +BGM_ME_TAMA = 84 01 +BGM_ME_B_BIG = 85 01 +BGM_ME_B_SMALL = 86 01 +BGM_ME_ZANNEN = 87 01 +BGM_BD_TIME = 88 01 +BGM_TEST1 = 89 01 +BGM_TEST2 = 8A 01 +BGM_TEST3 = 8B 01 +BGM_TEST4 = 8C 01 +BGM_TEST = 8D 01 +BGM_GOMACHI0 = 8E 01 +BGM_GOTOWN = 8F 01 +BGM_POKECEN = 90 01 +BGM_NEXTROAD = 91 01 +BGM_GRANROAD = 92 01 +BGM_CYCLING = 93 01 +BGM_FRIENDLY = 94 01 +BGM_MISHIRO = 95 01 +BGM_TOZAN = 96 01 +BGM_GIRLEYE = 97 01 +BGM_MINAMO = 98 01 +BGM_ASHROAD = 99 01 +BGM_EVENT0 = 9A 01 +BGM_DEEPDEEP = 9B 01 +BGM_KACHI1 = 9C 01 +BGM_TITLE3 = 9D 01 +BGM_DEMO1 = 9E 01 +BGM_GIRL_SUP = 9F 01 +BGM_HAGESHII = A0 01 +BGM_KAKKOII = A1 01 +BGM_KAZANBAI = A2 01 +BGM_AQA_0 = A3 01 +BGM_TSURETEK = A4 01 +BGM_BOY_SUP = A5 01 +BGM_RAINBOW = A6 01 +BGM_AYASII = A7 01 +BGM_KACHI4 = A8 01 +BGM_ROPEWAY = A9 01 +BGM_CASINO = AA 01 +BGM_HIGHTOWN = AB 01 +BGM_SAFARI = AC 01 +BGM_C_ROAD = AD 01 +BGM_AJITO = AE 01 +BGM_M_BOAT = AF 01 +BGM_M_DUNGON = B0 01 +BGM_FINECITY = B1 01 +BGM_MACHUPI = B2 01 +BGM_P_SCHOOL = B3 01 +BGM_DENDOU = B4 01 +BGM_TONEKUSA = B5 01 +BGM_MABOROSI = B6 01 +BGM_CON_FAN = B7 01 +BGM_CONTEST0 = B8 01 +BGM_MGM0 = B9 01 +BGM_T_BATTLE = BA 01 +BGM_OOAME = BB 01 +BGM_HIDERI = BC 01 +BGM_RUNECITY = BD 01 +BGM_CON_K = BE 01 +BGM_EIKOU_R = BF 01 +BGM_KARAKURI = C0 01 +BGM_HUTAGO = C1 01 +BGM_SITENNOU = C2 01 +BGM_YAMA_EYE = C3 01 +BGM_CONLOBBY = C4 01 +BGM_INTER_V = C5 01 +BGM_DAIGO = C6 01 +BGM_THANKFOR = C7 01 +BGM_END = C8 01 +BGM_BATTLE27 = C9 01 +BGM_BATTLE31 = CA 01 +BGM_BATTLE20 = CB 01 +BGM_BATTLE32 = CC 01 +BGM_BATTLE33 = CD 01 +BGM_BATTLE36 = CE 01 +BGM_BATTLE34 = CF 01 +BGM_BATTLE35 = D0 01 +BGM_BATTLE38 = D1 01 +BGM_BATTLE30 = D2 01 + +'\l' = FA @ scroll up window text +'\p' = FB @ new paragraph +'\n' = FE @ new line diff --git a/common_syms/agb_flash.txt b/common_syms/agb_flash.txt new file mode 100644 index 000000000..cb421ec80 --- /dev/null +++ b/common_syms/agb_flash.txt @@ -0,0 +1,10 @@ +gFlashTimeoutFlag +PollFlashStatus +WaitForFlashWrite +ProgramFlashSector +gFlash +ProgramFlashByte +gFlashNumRemainingBytes +EraseFlashChip +EraseFlashSector +gFlashMaxTime diff --git a/common_syms/m4a_2.txt b/common_syms/m4a_2.txt new file mode 100644 index 000000000..a80d8a79d --- /dev/null +++ b/common_syms/m4a_2.txt @@ -0,0 +1,12 @@ +gSoundInfo +gPokemonCrySongs +gPokemonCryMusicPlayers +gMPlayJumpTable +gCgbChans +gPokemonCryTracks +gPokemonCrySong +gMPlay_BGM +gMPlay_SE1 +gMPlay_SE2 +gMPlayMemAccArea +gMPlay_SE3 diff --git a/constants/battle.inc b/constants/battle.inc new file mode 100644 index 000000000..94b7a6d48 --- /dev/null +++ b/constants/battle.inc @@ -0,0 +1,101 @@ +@ status 1 +.equiv SLP, 0x07 +.equiv PSN, 0x08 +.equiv BRN, 0x10 +.equiv FRZ, 0x20 +.equiv PAR, 0x40 +.equiv TOX, 0x80 + +@ status 2 +.equiv S_CONFUSED, 0x00000007 +.equiv S_CONTINUE, 0x00001000 +.equiv S_TEMP_TRAP, 0x0000E000 @ Wrap, Bind, etc. +.equiv S_INFATUATED, 0x000F0000 +.equiv S_FOCUS_ENERGY, 0x00100000 +.equiv S_SUBSTITUTE, 0x01000000 +.equiv S_MEAN_LOOK, 0x04000000 +.equiv S_NIGHTMARE, 0x08000000 +.equiv S_CURSED, 0x10000000 +.equiv S_FORESIGHT, 0x20000000 +.equiv S_TORMENT, 0x80000000 + +@ status 3 +.equiv S_LEECH_SEED, 0x00000004 +.equiv S_ALWAYS_HIT, 0x00000010 +.equiv S_PERISH_SONG, 0x00000020 +.equiv S_ROOTED, 0x00000400 +.equiv S_YAWN, 0x00001800 +.equiv S_IMPRISONED, 0x00002000 +.equiv S_MUD_SPORT, 0x00010000 +.equiv S_WATER_SPORT, 0x00020000 + +@ status 4 +.equiv S_REFLECT, 0x0001 +.equiv S_LIGHT_SCREEN, 0x0002 +.equiv S_SPIKES, 0x0010 +.equiv S_SAFEGUARD, 0x0020 +.equiv S_FUTURE_SIGHT, 0x0040 +.equiv S_MIST, 0x0100 + +.equiv TARGET, 0 +.equiv USER, 1 + +.equiv WEATHER_SUN, 0 +.equiv WEATHER_RAIN, 1 +.equiv WEATHER_SANDSTORM, 2 +.equiv WEATHER_HAIL, 3 + + enum_start 1 + enum ATTACK + enum DEFENSE + enum SPEED + enum SP_ATTACK + enum SP_DEFENSE + enum ACCURACY + enum EVASION + +@ status animation table +.equiv B_ANIM_STATUS_PSN, 0x0 +.equiv B_ANIM_STATUS_CONFUSION, 0x1 +.equiv B_ANIM_STATUS_BRN, 0x2 +.equiv B_ANIM_STATUS_INFATUATION, 0x3 +.equiv B_ANIM_STATUS_SLP, 0x4 +.equiv B_ANIM_STATUS_PRZ, 0x5 +.equiv B_ANIM_STATUS_FRZ, 0x6 +.equiv B_ANIM_STATUS_CURSED, 0x7 +.equiv B_ANIM_STATUS_NIGHTMARE, 0x8 +.equiv B_ANIM_STATUS_WRAPPED, 0x9 + +@ general animation table +.equiv B_ANIM_CASTFORM_CHANGE, 0x0 +.equiv B_ANIM_STATS_CHANGE, 0x1 +.equiv B_ANIM_SUBSTITUTE_FADE, 0x2 +.equiv B_ANIM_SUBSTITUTE_APPEAR, 0x3 +.equiv B_ANIM_POKEBLOCK_THROW, 0x4 +.equiv B_ANIM_ITEM_KNOCKOFF, 0x5 +.equiv B_ANIM_TURN_TRAP, 0x6 +.equiv B_ANIM_ITEM_EFFECT, 0x7 +.equiv B_ANIM_SMOKEBALL_ESCAPE, 0x8 +.equiv B_ANIM_HANGED_ON, 0x9 +.equiv B_ANIM_RAIN_CONTINUES, 0xA +.equiv B_ANIM_SUN_CONTINUES, 0xB +.equiv B_ANIM_SANDSTORM_CONTINUES, 0xC +.equiv B_ANIM_HAIL_CONTINUES, 0xD +.equiv B_ANIM_LEECH_SEED_DRAIN, 0xE +.equiv B_ANIM_MON_HIT, 0xF +.equiv B_ANIM_ITEM_STEAL, 0x10 +.equiv B_ANIM_SNATCH_MOVE, 0x11 +.equiv B_ANIM_FUTURE_SIGHT_HIT, 0x12 +.equiv B_ANIM_DOOM_DESIRE_HIT, 0x13 +.equiv B_ANIM_FOCUS_PUNCH_SET_UP, 0x14 +.equiv B_ANIM_INGRAIN_HEAL, 0x15 +.equiv B_ANIM_WISH_HEAL, 0x16 + +@ special animation table +.equiv B_ANIM_LVL_UP, 0x0 +.equiv B_ANIM_SWITCH_OUT_PLAYER_MON, 0x1 +.equiv B_ANIM_SWITCH_OUT_OPPONENT_MON, 0x2 +.equiv B_ANIM_BALL_THROW, 0x3 +.equiv B_ANIM_SAFARI_BALL_THROW, 0x4 +.equiv B_ANIM_SUBSTITUTE_TO_MON, 0x5 +.equiv B_ANIM_MON_TO_SUBSTITUTE, 0x6 diff --git a/constants/battle_move_constants.inc b/constants/battle_move_constants.inc new file mode 100644 index 000000000..a05da3db3 --- /dev/null +++ b/constants/battle_move_constants.inc @@ -0,0 +1,15 @@ + .set TARGET_SELECTED_POKEMON, 0 + + .set F_TARGET_SPECIAL, 1 << 0 + .set F_TARGET_RANDOM, 1 << 2 + .set F_TARGET_BOTH_ENEMIES, 1 << 3 + .set F_TARGET_USER, 1 << 4 + .set F_TARGET_ALL_EXCEPT_USER, 1 << 5 + .set F_TARGET_ENEMY_SIDE, 1 << 6 + + .set F_MAKES_CONTACT, 1 << 0 + .set F_AFFECTED_BY_PROTECT, 1 << 1 + .set F_AFFECTED_BY_MAGIC_COAT, 1 << 2 + .set F_AFFECTED_BY_SNATCH, 1 << 3 + .set F_MIRROR_MOVE_COMPATIBLE, 1 << 4 + .set F_AFFECTED_BY_KINGS_ROCK, 1 << 5 diff --git a/constants/battle_text.inc b/constants/battle_text.inc new file mode 100644 index 000000000..f7025f68f --- /dev/null +++ b/constants/battle_text.inc @@ -0,0 +1,352 @@ + enum_start 12 + enum BATTLE_TEXT_UnknownString + enum BATTLE_TEXT_GainExpPoints + enum BATTLE_TEXT_GrewLevel + enum BATTLE_TEXT_LearnedMove + enum BATTLE_TEXT_TryingToLearnMove + enum BATTLE_TEXT_CantLearnMore + enum BATTLE_TEXT_DeleteMove + enum BATTLE_TEXT_DeletedMove + enum BATTLE_TEXT_StopLearning + enum BATTLE_TEXT_DidNotLearn + enum BATTLE_TEXT_LearnedMove2 + enum BATTLE_TEXT_AttackMissed + enum BATTLE_TEXT_ProtectedItself + enum BATTLE_TEXT_StatNoHigher + enum BATTLE_TEXT_AvoidedDamage + enum BATTLE_TEXT_DoesntAffect + enum BATTLE_TEXT_AttackingFainted + enum BATTLE_TEXT_DefendingFainted + enum BATTLE_TEXT_WinningPrize + enum BATTLE_TEXT_OutOfUsablePoke + enum BATTLE_TEXT_WhitedOut + enum BATTLE_TEXT_PreventEscape + enum BATTLE_TEXT_HitMulti + enum BATTLE_TEXT_FellAsleep + enum BATTLE_TEXT_MadeAsleep + enum BATTLE_TEXT_DefendingAsleep + enum BATTLE_TEXT_AttackingAsleep + enum BATTLE_TEXT_WasntAffected + enum BATTLE_TEXT_Poisoned + enum BATTLE_TEXT_Poisoned2 + enum BATTLE_TEXT_PoisonHurt + enum BATTLE_TEXT_AlreadyPoisoned + enum BATTLE_TEXT_BadlyPoisoned + enum BATTLE_TEXT_EnergyDrained + enum BATTLE_TEXT_Burned + enum BATTLE_TEXT_Burned2 + enum BATTLE_TEXT_BurnHurt + enum BATTLE_TEXT_Frozen + enum BATTLE_TEXT_Frozen2 + enum BATTLE_TEXT_FrozenSolid + enum BATTLE_TEXT_DefendingDefrosted + enum BATTLE_TEXT_AttackingDefrosted + enum BATTLE_TEXT_Defrosted + enum BATTLE_TEXT_Paralyzed + enum BATTLE_TEXT_Paralyzed2 + enum BATTLE_TEXT_Paralyzed3 + enum BATTLE_TEXT_AlreadyParalyzed + enum BATTLE_TEXT_ParalysisHealed + enum BATTLE_TEXT_DreamEaten + enum BATTLE_TEXT_AttackingStatNoHigher + enum BATTLE_TEXT_DefendingStatNoHigher + enum BATTLE_TEXT_StoppedWorking + enum BATTLE_TEXT_StoppedWorking2 + enum BATTLE_TEXT_Confused + enum BATTLE_TEXT_ConfusionSnapOut + enum BATTLE_TEXT_BecameConfused + enum BATTLE_TEXT_AlreadyConfused + enum BATTLE_TEXT_FellLove + enum BATTLE_TEXT_InLoveWith + enum BATTLE_TEXT_ImmobilizedBy + enum BATTLE_TEXT_BlownAway + enum BATTLE_TEXT_TypeTransform + enum BATTLE_TEXT_Flinched + enum BATTLE_TEXT_RegainedHealth + enum BATTLE_TEXT_HPFull + enum BATTLE_TEXT_RaisedSpDef + enum BATTLE_TEXT_RaisedDefense + enum BATTLE_TEXT_CoveredVeil + enum BATTLE_TEXT_SafeguardActive + enum BATTLE_TEXT_SafeguardFaded + enum BATTLE_TEXT_WentToSleep + enum BATTLE_TEXT_SpeltHealthy + enum BATTLE_TEXT_WhipWhirlwind + enum BATTLE_TEXT_TookSunlight + enum BATTLE_TEXT_LoweredHead + enum BATTLE_TEXT_IsGlowing + enum BATTLE_TEXT_FlewHigh + enum BATTLE_TEXT_DugHole + enum BATTLE_TEXT_SqueezedBind + enum BATTLE_TEXT_TrappedVortex + enum BATTLE_TEXT_Wrapped + enum BATTLE_TEXT_Clamped + enum BATTLE_TEXT_HurtBy + enum BATTLE_TEXT_FreedFrom + enum BATTLE_TEXT_KeptGoingCrash + enum BATTLE_TEXT_MistShroud + enum BATTLE_TEXT_MistProtect + enum BATTLE_TEXT_GetPumped + enum BATTLE_TEXT_HitRecoil + enum BATTLE_TEXT_ProtectedItself2 + enum BATTLE_TEXT_SandBuffeted + enum BATTLE_TEXT_HailStricken + enum BATTLE_TEXT_WasSeeded + enum BATTLE_TEXT_EvadedAttack + enum BATTLE_TEXT_HealthSapped + enum BATTLE_TEXT_FastAsleep + enum BATTLE_TEXT_WokeUp + enum BATTLE_TEXT_UproarAwake + enum BATTLE_TEXT_UproarWoke + enum BATTLE_TEXT_UproarCaused + enum BATTLE_TEXT_UproarMaking + enum BATTLE_TEXT_CalmedDown + enum BATTLE_TEXT_UproarCantSleep + enum BATTLE_TEXT_Stockpiled + enum BATTLE_TEXT_StockpiledCant + enum BATTLE_TEXT_UproarCantSleep2 + enum BATTLE_TEXT_UproarKeptAwake + enum BATTLE_TEXT_StayedAwake + enum BATTLE_TEXT_StoringEnergy + enum BATTLE_TEXT_UnleashedEnergy + enum BATTLE_TEXT_FatigueConfuse + enum BATTLE_TEXT_PickedUpYen + enum BATTLE_TEXT_Unaffected + enum BATTLE_TEXT_Transformed + enum BATTLE_TEXT_SubMade + enum BATTLE_TEXT_SubAlready + enum BATTLE_TEXT_SubTookDamage + enum BATTLE_TEXT_SubFaded + enum BATTLE_TEXT_MustRecharge + enum BATTLE_TEXT_RageBuilding + enum BATTLE_TEXT_MoveWasDisabled + enum BATTLE_TEXT_MoveIsDisabled + enum BATTLE_TEXT_DisabledNoMore + enum BATTLE_TEXT_EncoreGot + enum BATTLE_TEXT_EncoreEnded + enum BATTLE_TEXT_TookAim + enum BATTLE_TEXT_SketchedMove + enum BATTLE_TEXT_DestinyBondTake + enum BATTLE_TEXT_DestinyBondTaken + enum BATTLE_TEXT_ReducedBy + enum BATTLE_TEXT_StoleSomething + enum BATTLE_TEXT_CantEscapeNow + enum BATTLE_TEXT_NightmareStart + enum BATTLE_TEXT_NightmareLock + enum BATTLE_TEXT_CurseLay + enum BATTLE_TEXT_CurseAfflict + enum BATTLE_TEXT_SpikesScattered + enum BATTLE_TEXT_SpikesHurt + enum BATTLE_TEXT_IdentifiedPoke + enum BATTLE_TEXT_PerishSongFell + enum BATTLE_TEXT_BracedItself + enum BATTLE_TEXT_EnduredHit + enum BATTLE_TEXT_MagnitudeCount + enum BATTLE_TEXT_CutHPMaxATK + enum BATTLE_TEXT_CopyStatChanges + enum BATTLE_TEXT_GotFreeFrom + enum BATTLE_TEXT_LeechShed + enum BATTLE_TEXT_SpikesBlownAway + enum BATTLE_TEXT_FledBattle + enum BATTLE_TEXT_ForesawAttack + enum BATTLE_TEXT_TookAttack + enum BATTLE_TEXT_PokeAttack + enum BATTLE_TEXT_CenterAttention + enum BATTLE_TEXT_ChargingPower + enum BATTLE_TEXT_NaturePower + enum BATTLE_TEXT_StatusNormal + enum BATTLE_TEXT_NoMovesLeft + enum BATTLE_TEXT_TormentSubject + enum BATTLE_TEXT_TormentNoUse + enum BATTLE_TEXT_TightenFocus + enum BATTLE_TEXT_TauntFell + enum BATTLE_TEXT_TauntNoUse + enum BATTLE_TEXT_ReadyToHelp + enum BATTLE_TEXT_SwitchedItems + enum BATTLE_TEXT_CopiedObject + enum BATTLE_TEXT_WishMade + enum BATTLE_TEXT_WishTrue + enum BATTLE_TEXT_PlantedRoots + enum BATTLE_TEXT_AbsorbNutrients + enum BATTLE_TEXT_AnchoredItself + enum BATTLE_TEXT_DrowsyMade + enum BATTLE_TEXT_KnockedOffItem + enum BATTLE_TEXT_AbilitySwap + enum BATTLE_TEXT_SealedMove + enum BATTLE_TEXT_SealedNoUse + enum BATTLE_TEXT_GrudgeBear + enum BATTLE_TEXT_GrudgeLosePP + enum BATTLE_TEXT_ShroudedItself + enum BATTLE_TEXT_MagicCoatBounce + enum BATTLE_TEXT_AwaitMove + enum BATTLE_TEXT_SnatchedMove + enum BATTLE_TEXT_RainMade + enum BATTLE_TEXT_SpeedRisen + enum BATTLE_TEXT_ProtectedBy + enum BATTLE_TEXT_PreventedBy + enum BATTLE_TEXT_HPRestoredUsing + enum BATTLE_TEXT_MadeType + enum BATTLE_TEXT_PreventedPara + enum BATTLE_TEXT_PreventedRomance + enum BATTLE_TEXT_PreventedPoison + enum BATTLE_TEXT_PreventedConfusion + enum BATTLE_TEXT_RaisedFirePower + enum BATTLE_TEXT_AnchorsItself + enum BATTLE_TEXT_CutsAttack + enum BATTLE_TEXT_PreventedStatLoss + enum BATTLE_TEXT_HurtOther + enum BATTLE_TEXT_Traced + enum BATTLE_TEXT_Sharply + enum BATTLE_TEXT_Rose + enum BATTLE_TEXT_Harshly + enum BATTLE_TEXT_Fell + enum BATTLE_TEXT_UnknownString7 + enum BATTLE_TEXT_UnknownString3 + enum BATTLE_TEXT_UnknownString5 + enum BATTLE_TEXT_UnknownString6 + enum BATTLE_TEXT_Critical + enum BATTLE_TEXT_GrandSlam + enum BATTLE_TEXT_MoveForget123 + enum BATTLE_TEXT_MoveForgetAnd + enum BATTLE_TEXT_NotEffective + enum BATTLE_TEXT_SuperEffective + enum BATTLE_TEXT_GotAwaySafely + enum BATTLE_TEXT_FledWild + enum BATTLE_TEXT_NoRunning + enum BATTLE_TEXT_CantEscape2 + enum BATTLE_TEXT_BirchDontLeaveMe + enum BATTLE_TEXT_Nothing + enum BATTLE_TEXT_Failed + enum BATTLE_TEXT_HurtItself + enum BATTLE_TEXT_MirrorFail + enum BATTLE_TEXT_RainStart + enum BATTLE_TEXT_PourStart + enum BATTLE_TEXT_RainCont1 + enum BATTLE_TEXT_PourCont + enum BATTLE_TEXT_RainStop + enum BATTLE_TEXT_SandBrewed + enum BATTLE_TEXT_SandRages + enum BATTLE_TEXT_SandSubsided + enum BATTLE_TEXT_SunBright + enum BATTLE_TEXT_SunStrong + enum BATTLE_TEXT_SunFaded + enum BATTLE_TEXT_HailStart + enum BATTLE_TEXT_HailCont + enum BATTLE_TEXT_HailStop + enum BATTLE_TEXT_SpitUpFail + enum BATTLE_TEXT_SwallowFail + enum BATTLE_TEXT_WindHeatWave + enum BATTLE_TEXT_StatElim + enum BATTLE_TEXT_CoinScatter + enum BATTLE_TEXT_SubWeak + enum BATTLE_TEXT_PainSplit + enum BATTLE_TEXT_BellChime + enum BATTLE_TEXT_PerishSong + enum BATTLE_TEXT_NoPP1 + enum BATTLE_TEXT_NoPP2 + enum BATTLE_TEXT_Used1 + enum BATTLE_TEXT_TutorialUsed + enum BATTLE_TEXT_BlockBall + enum BATTLE_TEXT_DontBeAThief + enum BATTLE_TEXT_DodgeBall + enum BATTLE_TEXT_MissPoke + enum BATTLE_TEXT_BallBrokeOhNo + enum BATTLE_TEXT_BallBrokeAppeared + enum BATTLE_TEXT_BallBrokeAlmost + enum BATTLE_TEXT_BallBrokeSoClose + enum BATTLE_TEXT_BallCaught1 + enum BATTLE_TEXT_BallCaught2 + enum BATTLE_TEXT_GiveNickname + enum BATTLE_TEXT_SentToPC + enum BATTLE_TEXT_AddedToDex + enum BATTLE_TEXT_Raining + enum BATTLE_TEXT_Sandstorm + enum BATTLE_TEXT_CantEscape + enum BATTLE_TEXT_IgnoredOrdersSLP + enum BATTLE_TEXT_IgnoredOrders + enum BATTLE_TEXT_BeganNap + enum BATTLE_TEXT_LoafingAround + enum BATTLE_TEXT_WontObey + enum BATTLE_TEXT_TurnedAway + enum BATTLE_TEXT_NotNotice + enum BATTLE_TEXT_WillSwitch + enum BATTLE_TEXT_CreptCloser + enum BATTLE_TEXT_CantGetCloser + enum BATTLE_TEXT_WatchingCarefully + enum BATTLE_TEXT_CuriousAbout + enum BATTLE_TEXT_EnthralledBy + enum BATTLE_TEXT_IgnoredThing + enum BATTLE_TEXT_ThrewBlock + enum BATTLE_TEXT_SafariOver + enum BATTLE_TEXT_CuredParalysis + enum BATTLE_TEXT_CuredPoison + enum BATTLE_TEXT_CuredBurn + enum BATTLE_TEXT_CuredFreeze + enum BATTLE_TEXT_CuredSleep + enum BATTLE_TEXT_CuredConfusion + enum BATTLE_TEXT_CuredStatus + enum BATTLE_TEXT_RestoredHealth + enum BATTLE_TEXT_RestoredPP + enum BATTLE_TEXT_RestoredStatus + enum BATTLE_TEXT_RestoredHPLittle + enum BATTLE_TEXT_ChoiceBand + enum BATTLE_TEXT_FocusSash + enum BATTLE_TEXT_Terminator2 @ terminator? + enum BATTLE_TEXT_PreventedBurn + enum BATTLE_TEXT_BlocksOther + enum BATTLE_TEXT_RestoredHPByItem + enum BATTLE_TEXT_WhipSandstorm + enum BATTLE_TEXT_PreventedLoss + enum BATTLE_TEXT_InfatuatedPoke + enum BATTLE_TEXT_MadeIneffective + enum BATTLE_TEXT_CuredProblem + enum BATTLE_TEXT_OozeSuckup + enum BATTLE_TEXT_Transformed2 + enum BATTLE_TEXT_ElecWeakened + enum BATTLE_TEXT_FireWeakened + enum BATTLE_TEXT_HidUnderwater + enum BATTLE_TEXT_SprangUp + enum BATTLE_TEXT_CantForgetHM + enum BATTLE_TEXT_FoundOne + enum BATTLE_TEXT_PlayerDefeatedTrainer2 + enum BATTLE_TEXT_SoothingAroma + enum BATTLE_TEXT_CantUseItems + enum BATTLE_TEXT_UnknownString2 + enum BATTLE_TEXT_UnknownString4 + enum BATTLE_TEXT_HustleUse + enum BATTLE_TEXT_MadeUseless + enum BATTLE_TEXT_SandTombTrapped @ sand tomb + enum BATTLE_TEXT_Terminator + enum BATTLE_TEXT_BoostedExp + enum BATTLE_TEXT_SunIntensified + enum BATTLE_TEXT_GroundMoveNegate + enum BATTLE_TEXT_WallyBall + enum BATTLE_TEXT_TookAttack2 + enum BATTLE_TEXT_ChoseDestiny + enum BATTLE_TEXT_LostFocus + enum BATTLE_TEXT_UseNext + enum BATTLE_TEXT_FledUsingItem + enum BATTLE_TEXT_FledUsingOther + enum BATTLE_TEXT_DraggedOut + enum BATTLE_TEXT_PreventedOther + enum BATTLE_TEXT_NormalizedStatus + enum BATTLE_TEXT_Used2 + enum BATTLE_TEXT_BoxFull + enum BATTLE_TEXT_AvoidedAttack + enum BATTLE_TEXT_MadeIneffective2 + enum BATTLE_TEXT_PreventedFlinching + enum BATTLE_TEXT_AlreadyBurned + enum BATTLE_TEXT_StatNoLower + enum BATTLE_TEXT_BlocksOther2 + enum BATTLE_TEXT_WoreOff + enum BATTLE_TEXT_RaisedDefenseLittle + enum BATTLE_TEXT_RaisedSpDefLittle + enum BATTLE_TEXT_BrokeWall + enum BATTLE_TEXT_PreventedOther2 + enum BATTLE_TEXT_CuredOfProblem + enum BATTLE_TEXT_AttackingCantEscape + enum BATTLE_TEXT_Obtained1 + enum BATTLE_TEXT_Obtained2 + enum BATTLE_TEXT_Obtained3 + enum BATTLE_TEXT_NoEffect + enum BATTLE_TEXT_NoEffectOn diff --git a/constants/berry_constants.inc b/constants/berry_constants.inc new file mode 100644 index 000000000..2ecd7ac36 --- /dev/null +++ b/constants/berry_constants.inc @@ -0,0 +1,6 @@ + .set BERRY_FIRMNESS_UNKNOWN, 0 + .set BERRY_FIRMNESS_VERY_SOFT, 1 + .set BERRY_FIRMNESS_SOFT, 2 + .set BERRY_FIRMNESS_HARD, 3 + .set BERRY_FIRMNESS_VERY_HARD, 4 + .set BERRY_FIRMNESS_SUPER_HARD, 5 diff --git a/constants/constants.inc b/constants/constants.inc new file mode 100644 index 000000000..1ec25462f --- /dev/null +++ b/constants/constants.inc @@ -0,0 +1,12 @@ + .include "constants/gba_constants.inc" + .include "constants/misc_constants.inc" + .include "constants/type_constants.inc" + .include "constants/contest_constants.inc" + .include "constants/item_data_constants.inc" + .include "constants/battle_move_constants.inc" + .include "constants/trainer_constants.inc" + .include "constants/berry_constants.inc" + .include "constants/version.inc" + .include "constants/battle.inc" + .include "constants/battle_text.inc" + .include "constants/contest_move_effects.inc" diff --git a/constants/contest_constants.inc b/constants/contest_constants.inc new file mode 100644 index 000000000..e971764d6 --- /dev/null +++ b/constants/contest_constants.inc @@ -0,0 +1,68 @@ + .set CONTEST_COOL, 0x00 + .set CONTEST_BEAUTY, 0x01 + .set CONTEST_CUTE, 0x02 + .set CONTEST_SMART, 0x03 + .set CONTEST_TOUGH, 0x04 + + .set COMBO_STARTER_RAIN_DANCE, 0x01 + .set COMBO_STARTER_RAGE, 0x02 + .set COMBO_STARTER_FOCUS_ENERGY, 0x03 + .set COMBO_STARTER_HYPNOSIS, 0x04 + .set COMBO_STARTER_ENDURE, 0x05 + .set COMBO_STARTER_HORN_ATTACK, 0x06 + .set COMBO_STARTER_SWORDS_DANCE, 0x07 + .set COMBO_STARTER_STOCKPILE, 0x08 + .set COMBO_STARTER_SUNNY_DAY, 0x09 + .set COMBO_STARTER_REST, 0x0A + .set COMBO_STARTER_VICE_GRIP, 0x0B + .set COMBO_STARTER_DEFENSE_CURL, 0x0C + .set COMBO_STARTER_CHARGE, 0x0D + .set COMBO_STARTER_ROCK_THROW, 0x0E + .set COMBO_STARTER_YAWN, 0x0F + .set COMBO_STARTER_SCARY_FACE, 0x10 + .set COMBO_STARTER_POWDER_SNOW, 0x11 + .set COMBO_STARTER_LOCK_ON, 0x12 + .set COMBO_STARTER_SOFT_BOILED, 0x13 + .set COMBO_STARTER_MEAN_LOOK, 0x14 + .set COMBO_STARTER_SCRATCH, 0x15 + .set COMBO_STARTER_GROWTH, 0x16 + .set COMBO_STARTER_HAIL, 0x17 + .set COMBO_STARTER_SANDSTORM, 0x18 + .set COMBO_STARTER_BELLY_DRUM, 0x19 + .set COMBO_STARTER_MIND_READER, 0x1A + .set COMBO_STARTER_DRAGON_BREATH, 0x1B + .set COMBO_STARTER_DRAGON_RAGE, 0x1C + .set COMBO_STARTER_DRAGON_DANCE, 0x1D + .set COMBO_STARTER_SURF, 0x1E + .set COMBO_STARTER_DIVE, 0x1F + .set COMBO_STARTER_STRING_SHOT, 0x20 + .set COMBO_STARTER_LEER, 0x21 + .set COMBO_STARTER_TAUNT, 0x22 + .set COMBO_STARTER_CHARM, 0x23 + .set COMBO_STARTER_HARDEN, 0x24 + .set COMBO_STARTER_SING, 0x25 + .set COMBO_STARTER_EARTHQUAKE, 0x26 + .set COMBO_STARTER_DOUBLE_TEAM, 0x27 + .set COMBO_STARTER_CURSE, 0x28 + .set COMBO_STARTER_SWEET_SCENT, 0x29 + .set COMBO_STARTER_SLUDGE, 0x2A + .set COMBO_STARTER_SLUDGE_BOMB, 0x2B + .set COMBO_STARTER_THUNDER_PUNCH, 0x2C + .set COMBO_STARTER_FIRE_PUNCH, 0x2D + .set COMBO_STARTER_ICE_PUNCH, 0x2E + .set COMBO_STARTER_PECK, 0x2F + .set COMBO_STARTER_METAL_SOUND, 0x30 + .set COMBO_STARTER_MUD_SPORT, 0x31 + .set COMBO_STARTER_WATER_SPORT, 0x32 + .set COMBO_STARTER_BONE_CLUB, 0x33 + .set COMBO_STARTER_BONEMERANG, 0x34 + .set COMBO_STARTER_BONE_RUSH, 0x35 + .set COMBO_STARTER_SAND_ATTACK, 0x36 + .set COMBO_STARTER_MUD_SLAP, 0x37 + .set COMBO_STARTER_FAKE_OUT, 0x38 + .set COMBO_STARTER_PSYCHIC, 0x39 + .set COMBO_STARTER_KINESIS, 0x3A + .set COMBO_STARTER_CONFUSION, 0x3B + .set COMBO_STARTER_POUND, 0x3C + .set COMBO_STARTER_SMOG, 0x3D + .set COMBO_STARTER_CALM_MIND, 0x3E diff --git a/constants/contest_move_effects.inc b/constants/contest_move_effects.inc new file mode 100644 index 000000000..b19e05004 --- /dev/null +++ b/constants/contest_move_effects.inc @@ -0,0 +1,49 @@ + enum_start + enum CONTEST_EFFECT_HIGHLY_APPEALING @ 0 + enum CONTEST_EFFECT_USER_MORE_EASILY_STARTLED @ 1 + enum CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES @ 2 + enum CONTEST_EFFECT_REPETITION_NOT_BORING @ 3 + enum CONTEST_EFFECT_AVOID_STARTLE_ONCE @ 4 + enum CONTEST_EFFECT_AVOID_STARTLE @ 5 + enum CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY @ 6 + enum CONTEST_EFFECT_USER_LESS_EASILY_STARTLED @ 7 + enum CONTEST_EFFECT_STARTLE_FRONT_MON @ 8 + enum CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS @ 9 + enum CONTEST_EFFECT_STARTLE_PREV_MON @ 10 + enum CONTEST_EFFECT_STARTLE_PREV_MONS @ 11 + enum CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON @ 12 + enum CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS @ 13 + enum CONTEST_EFFECT_STARTLE_PREV_MON_2 @ 14 + enum CONTEST_EFFECT_STARTLE_PREV_MONS_2 @ 15 + enum CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION @ 16 + enum CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION @ 17 + enum CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN @ 18 + enum CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL @ 19 + enum CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL @ 20 + enum CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL @ 21 + enum CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL @ 22 + enum CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL @ 23 + enum CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL @ 24 + enum CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS @ 25 + enum CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS @ 26 + enum CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS @ 27 + enum CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION @ 28 + enum CONTEST_EFFECT_BETTER_IF_FIRST @ 29 + enum CONTEST_EFFECT_BETTER_IF_LAST @ 30 + enum CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES @ 31 + enum CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE @ 32 + enum CONTEST_EFFECT_BETTER_WHEN_LATER @ 33 + enum CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING @ 34 + enum CONTEST_EFFECT_BETTER_IF_SAME_TYPE @ 35 + enum CONTEST_EFFECT_BETTER_IF_DIFF_TYPE @ 36 + enum CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL @ 37 + enum CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS @ 38 + enum CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION @ 39 + enum CONTEST_EFFECT_NEXT_APPEAL_EARLIER @ 40 + enum CONTEST_EFFECT_NEXT_APPEAL_LATER @ 41 + enum CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER @ 42 + enum CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER @ 43 + enum CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST @ 44 + enum CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS @ 45 + enum CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED @ 46 + enum CONTEST_EFFECT_DONT_EXCITE_AUDIENCE @ 47 diff --git a/constants/gba_constants.inc b/constants/gba_constants.inc new file mode 100644 index 000000000..9d59c8fcd --- /dev/null +++ b/constants/gba_constants.inc @@ -0,0 +1,490 @@ + .set PSR_USR_MODE, 0x00000010 + .set PSR_FIQ_MODE, 0x00000011 + .set PSR_IRQ_MODE, 0x00000012 + .set PSR_SVC_MODE, 0x00000013 + .set PSR_ABT_MODE, 0x00000017 + .set PSR_UND_MODE, 0x0000001b + .set PSR_SYS_MODE, 0x0000001f + .set PSR_MODE_MASK, 0x0000001f + .set PSR_T_BIT, 0x00000020 + .set PSR_F_BIT, 0x00000040 + .set PSR_I_BIT, 0x00000080 + + .set EWRAM_START, 0x02000000 + .set EWRAM_END, EWRAM_START + 0x40000 + .set IWRAM_START, 0x03000000 + .set IWRAM_END, IWRAM_START + 0x8000 + + .set PLTT, 0x5000000 + .set BG_PLTT, PLTT + .set OBJ_PLTT, PLTT + 0x200 + + .set VRAM, 0x6000000 + .set BG_VRAM, VRAM + .set OBJ_VRAM0, VRAM + 0x10000 @ text-mode BG + .set OBJ_VRAM1, VRAM + 0x14000 @ bitmap-mode BG + + .set OAM, 0x7000000 + + .set SOUND_INFO_PTR, 0x3007FF0 + .set INTR_CHECK, 0x3007FF8 + .set INTR_VECTOR, 0x3007FFC + + .set INTR_FLAG_VBLANK, 1 << 0 + .set INTR_FLAG_HBLANK, 1 << 1 + .set INTR_FLAG_VCOUNT, 1 << 2 + .set INTR_FLAG_TIMER0, 1 << 3 + .set INTR_FLAG_TIMER1, 1 << 4 + .set INTR_FLAG_TIMER2, 1 << 5 + .set INTR_FLAG_TIMER3, 1 << 6 + .set INTR_FLAG_SERIAL, 1 << 7 + .set INTR_FLAG_DMA0, 1 << 8 + .set INTR_FLAG_DMA1, 1 << 9 + .set INTR_FLAG_DMA2, 1 << 10 + .set INTR_FLAG_DMA3, 1 << 11 + .set INTR_FLAG_KEYPAD, 1 << 12 + .set INTR_FLAG_GAMEPAK, 1 << 13 + + .set VCOUNT_VBLANK, 160 + .set TOTAL_SCANLINES, 228 + + .set REG_BASE, 0x4000000 @ I/O register base address + +@ I/O register offsets + .set OFFSET_REG_DISPCNT, 0x0 + .set OFFSET_REG_DISPSTAT, 0x4 + .set OFFSET_REG_VCOUNT, 0x6 + .set OFFSET_REG_BG0CNT, 0x8 + .set OFFSET_REG_BG1CNT, 0xa + .set OFFSET_REG_BG2CNT, 0xc + .set OFFSET_REG_BG3CNT, 0xe + .set OFFSET_REG_BG0HOFS, 0x10 + .set OFFSET_REG_BG0VOFS, 0x12 + .set OFFSET_REG_BG1HOFS, 0x14 + .set OFFSET_REG_BG1VOFS, 0x16 + .set OFFSET_REG_BG2HOFS, 0x18 + .set OFFSET_REG_BG2VOFS, 0x1a + .set OFFSET_REG_BG3HOFS, 0x1c + .set OFFSET_REG_BG3VOFS, 0x1e + .set OFFSET_REG_BG2PA, 0x20 + .set OFFSET_REG_BG2PB, 0x22 + .set OFFSET_REG_BG2PC, 0x24 + .set OFFSET_REG_BG2PD, 0x26 + .set OFFSET_REG_BG2X_L, 0x28 + .set OFFSET_REG_BG2X_H, 0x2a + .set OFFSET_REG_BG2Y_L, 0x2c + .set OFFSET_REG_BG2Y_H, 0x2e + .set OFFSET_REG_BG3PA, 0x30 + .set OFFSET_REG_BG3PB, 0x32 + .set OFFSET_REG_BG3PC, 0x34 + .set OFFSET_REG_BG3PD, 0x36 + .set OFFSET_REG_BG3X_L, 0x38 + .set OFFSET_REG_BG3X_H, 0x3a + .set OFFSET_REG_BG3Y_L, 0x3c + .set OFFSET_REG_BG3Y_H, 0x3e + .set OFFSET_REG_WIN0H, 0x40 + .set OFFSET_REG_WIN1H, 0x42 + .set OFFSET_REG_WIN0V, 0x44 + .set OFFSET_REG_WIN1V, 0x46 + .set OFFSET_REG_WININ, 0x48 + .set OFFSET_REG_WINOUT, 0x4a + .set OFFSET_REG_MOSAIC, 0x4c + .set OFFSET_REG_BLDCNT, 0x50 + .set OFFSET_REG_BLDALPHA, 0x52 + .set OFFSET_REG_BLDY, 0x54 + + .set OFFSET_REG_SOUND1CNT, 0x60 + .set OFFSET_REG_SOUND1CNT_L, 0x60 + .set OFFSET_REG_NR10, 0x60 + .set OFFSET_REG_SOUND1CNT_H, 0x62 + .set OFFSET_REG_NR11, 0x62 + .set OFFSET_REG_NR12, 0x63 + .set OFFSET_REG_SOUND1CNT_X, 0x64 + .set OFFSET_REG_NR13, 0x64 + .set OFFSET_REG_NR14, 0x65 + .set OFFSET_REG_SOUND2CNT, 0x68 + .set OFFSET_REG_SOUND2CNT_L, 0x68 + .set OFFSET_REG_NR21, 0x68 + .set OFFSET_REG_NR22, 0x69 + .set OFFSET_REG_SOUND2CNT_H, 0x6c + .set OFFSET_REG_NR23, 0x6c + .set OFFSET_REG_NR24, 0x6d + .set OFFSET_REG_SOUND3CNT, 0x70 + .set OFFSET_REG_SOUND3CNT_L, 0x70 + .set OFFSET_REG_NR30, 0x70 + .set OFFSET_REG_SOUND3CNT_H, 0x72 + .set OFFSET_REG_NR31, 0x72 + .set OFFSET_REG_NR32, 0x73 + .set OFFSET_REG_SOUND3CNT_X, 0x74 + .set OFFSET_REG_NR33, 0x74 + .set OFFSET_REG_NR34, 0x75 + .set OFFSET_REG_SOUND4CNT, 0x78 + .set OFFSET_REG_SOUND4CNT_L, 0x78 + .set OFFSET_REG_NR41, 0x78 + .set OFFSET_REG_NR42, 0x79 + .set OFFSET_REG_SOUND4CNT_H, 0x7c + .set OFFSET_REG_NR43, 0x7c + .set OFFSET_REG_NR44, 0x7d + .set OFFSET_REG_SOUNDCNT, 0x80 + .set OFFSET_REG_SOUNDCNT_L, 0x80 + .set OFFSET_REG_NR50, 0x80 + .set OFFSET_REG_NR51, 0x81 + .set OFFSET_REG_SOUNDCNT_H, 0x82 + .set OFFSET_REG_SOUNDCNT_X, 0x84 + .set OFFSET_REG_NR52, 0x84 + .set OFFSET_REG_SOUNDBIAS, 0x88 + .set OFFSET_REG_WAVE_RAM, 0x90 + .set OFFSET_REG_WAVE_RAM0, 0x90 + .set OFFSET_REG_WAVE_RAM0_L, 0x90 + .set OFFSET_REG_WAVE_RAM0_H, 0x92 + .set OFFSET_REG_WAVE_RAM1, 0x94 + .set OFFSET_REG_WAVE_RAM1_L, 0x94 + .set OFFSET_REG_WAVE_RAM1_H, 0x96 + .set OFFSET_REG_WAVE_RAM2, 0x98 + .set OFFSET_REG_WAVE_RAM2_L, 0x98 + .set OFFSET_REG_WAVE_RAM2_H, 0x9a + .set OFFSET_REG_WAVE_RAM3, 0x9c + .set OFFSET_REG_WAVE_RAM3_L, 0x9c + .set OFFSET_REG_WAVE_RAM3_H, 0x9e + .set OFFSET_REG_FIFO, 0xa0 + .set OFFSET_REG_FIFO_A, 0xa0 + .set OFFSET_REG_FIFO_A_L, 0xa0 + .set OFFSET_REG_FIFO_A_H, 0xa2 + .set OFFSET_REG_FIFO_B, 0xa4 + .set OFFSET_REG_FIFO_B_L, 0xa4 + .set OFFSET_REG_FIFO_B_H, 0xa6 + + .set OFFSET_REG_DMA0, 0xb0 + .set OFFSET_REG_DMA0SAD, 0xb0 + .set OFFSET_REG_DMA0SAD_L, 0xb0 + .set OFFSET_REG_DMA0SAD_H, 0xb2 + .set OFFSET_REG_DMA0DAD, 0xb4 + .set OFFSET_REG_DMA0DAD_L, 0xb4 + .set OFFSET_REG_DMA0DAD_H, 0xb6 + .set OFFSET_REG_DMA0CNT, 0xb8 + .set OFFSET_REG_DMA0CNT_L, 0xb8 + .set OFFSET_REG_DMA0CNT_H, 0xba + .set OFFSET_REG_DMA1, 0xbc + .set OFFSET_REG_DMA1SAD, 0xbc + .set OFFSET_REG_DMA1SAD_L, 0xbc + .set OFFSET_REG_DMA1SAD_H, 0xbe + .set OFFSET_REG_DMA1DAD, 0xc0 + .set OFFSET_REG_DMA1DAD_L, 0xc0 + .set OFFSET_REG_DMA1DAD_H, 0xc2 + .set OFFSET_REG_DMA1CNT, 0xc4 + .set OFFSET_REG_DMA1CNT_L, 0xc4 + .set OFFSET_REG_DMA1CNT_H, 0xc6 + .set OFFSET_REG_DMA2, 0xc8 + .set OFFSET_REG_DMA2SAD, 0xc8 + .set OFFSET_REG_DMA2SAD_L, 0xc8 + .set OFFSET_REG_DMA2SAD_H, 0xca + .set OFFSET_REG_DMA2DAD, 0xcc + .set OFFSET_REG_DMA2DAD_L, 0xcc + .set OFFSET_REG_DMA2DAD_H, 0xce + .set OFFSET_REG_DMA2CNT, 0xd0 + .set OFFSET_REG_DMA2CNT_L, 0xd0 + .set OFFSET_REG_DMA2CNT_H, 0xd2 + .set OFFSET_REG_DMA3, 0xd4 + .set OFFSET_REG_DMA3SAD, 0xd4 + .set OFFSET_REG_DMA3SAD_L, 0xd4 + .set OFFSET_REG_DMA3SAD_H, 0xd6 + .set OFFSET_REG_DMA3DAD, 0xd8 + .set OFFSET_REG_DMA3DAD_L, 0xd8 + .set OFFSET_REG_DMA3DAD_H, 0xda + .set OFFSET_REG_DMA3CNT, 0xdc + .set OFFSET_REG_DMA3CNT_L, 0xdc + .set OFFSET_REG_DMA3CNT_H, 0xde + + .set OFFSET_REG_TM0CNT, 0x100 + .set OFFSET_REG_TM0CNT_L, 0x100 + .set OFFSET_REG_TM0CNT_H, 0x102 + .set OFFSET_REG_TM1CNT, 0x104 + .set OFFSET_REG_TM1CNT_L, 0x104 + .set OFFSET_REG_TM1CNT_H, 0x106 + .set OFFSET_REG_TM2CNT, 0x108 + .set OFFSET_REG_TM2CNT_L, 0x108 + .set OFFSET_REG_TM2CNT_H, 0x10a + .set OFFSET_REG_TM3CNT, 0x10c + .set OFFSET_REG_TM3CNT_L, 0x10c + .set OFFSET_REG_TM3CNT_H, 0x10e + + .set OFFSET_REG_SIOCNT, 0x128 + .set OFFSET_REG_SIODATA8, 0x12a + .set OFFSET_REG_SIODATA32, 0x120 + .set OFFSET_REG_SIOMLT_SEND, 0x12a + .set OFFSET_REG_SIOMLT_RECV, 0x120 + .set OFFSET_REG_SIOMULTI0, 0x120 + .set OFFSET_REG_SIOMULTI1, 0x122 + .set OFFSET_REG_SIOMULTI2, 0x124 + .set OFFSET_REG_SIOMULTI3, 0x126 + + .set OFFSET_REG_KEYINPUT, 0x130 + .set OFFSET_REG_KEYCNT, 0x132 + + .set OFFSET_REG_RCNT, 0x134 + + .set OFFSET_REG_JOYCNT, 0x140 + .set OFFSET_REG_JOYSTAT, 0x158 + .set OFFSET_REG_JOY_RECV, 0x150 + .set OFFSET_REG_JOY_RECV_L, 0x150 + .set OFFSET_REG_JOY_RECV_H, 0x152 + .set OFFSET_REG_JOY_TRANS, 0x154 + .set OFFSET_REG_JOY_TRANS_L, 0x154 + .set OFFSET_REG_JOY_TRANS_H, 0x156 + + .set OFFSET_REG_IME, 0x208 + .set OFFSET_REG_IE, 0x200 + .set OFFSET_REG_IF, 0x202 + + .set OFFSET_REG_WAITCNT, 0x204 + +@ I/O register addresses + .set REG_DISPCNT, REG_BASE + OFFSET_REG_DISPCNT + .set REG_DISPSTAT, REG_BASE + OFFSET_REG_DISPSTAT + .set REG_VCOUNT, REG_BASE + OFFSET_REG_VCOUNT + .set REG_BG0CNT, REG_BASE + OFFSET_REG_BG0CNT + .set REG_BG1CNT, REG_BASE + OFFSET_REG_BG1CNT + .set REG_BG2CNT, REG_BASE + OFFSET_REG_BG2CNT + .set REG_BG3CNT, REG_BASE + OFFSET_REG_BG3CNT + .set REG_BG0HOFS, REG_BASE + OFFSET_REG_BG0HOFS + .set REG_BG0VOFS, REG_BASE + OFFSET_REG_BG0VOFS + .set REG_BG1HOFS, REG_BASE + OFFSET_REG_BG1HOFS + .set REG_BG1VOFS, REG_BASE + OFFSET_REG_BG1VOFS + .set REG_BG2HOFS, REG_BASE + OFFSET_REG_BG2HOFS + .set REG_BG2VOFS, REG_BASE + OFFSET_REG_BG2VOFS + .set REG_BG3HOFS, REG_BASE + OFFSET_REG_BG3HOFS + .set REG_BG3VOFS, REG_BASE + OFFSET_REG_BG3VOFS + .set REG_BG2PA, REG_BASE + OFFSET_REG_BG2PA + .set REG_BG2PB, REG_BASE + OFFSET_REG_BG2PB + .set REG_BG2PC, REG_BASE + OFFSET_REG_BG2PC + .set REG_BG2PD, REG_BASE + OFFSET_REG_BG2PD + .set REG_BG2X_L, REG_BASE + OFFSET_REG_BG2X_L + .set REG_BG2X_H, REG_BASE + OFFSET_REG_BG2X_H + .set REG_BG2Y_L, REG_BASE + OFFSET_REG_BG2Y_L + .set REG_BG2Y_H, REG_BASE + OFFSET_REG_BG2Y_H + .set REG_BG3PA, REG_BASE + OFFSET_REG_BG3PA + .set REG_BG3PB, REG_BASE + OFFSET_REG_BG3PB + .set REG_BG3PC, REG_BASE + OFFSET_REG_BG3PC + .set REG_BG3PD, REG_BASE + OFFSET_REG_BG3PD + .set REG_BG3X_L, REG_BASE + OFFSET_REG_BG3X_L + .set REG_BG3X_H, REG_BASE + OFFSET_REG_BG3X_H + .set REG_BG3Y_L, REG_BASE + OFFSET_REG_BG3Y_L + .set REG_BG3Y_H, REG_BASE + OFFSET_REG_BG3Y_H + .set REG_WIN0H, REG_BASE + OFFSET_REG_WIN0H + .set REG_WIN1H, REG_BASE + OFFSET_REG_WIN1H + .set REG_WIN0V, REG_BASE + OFFSET_REG_WIN0V + .set REG_WIN1V, REG_BASE + OFFSET_REG_WIN1V + .set REG_WININ, REG_BASE + OFFSET_REG_WININ + .set REG_WINOUT, REG_BASE + OFFSET_REG_WINOUT + .set REG_MOSAIC, REG_BASE + OFFSET_REG_MOSAIC + .set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT + .set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA + .set REG_BLDY, REG_BASE + OFFSET_REG_BLDY + + .set REG_SOUND1CNT, REG_BASE + OFFSET_REG_SOUND1CNT + .set REG_SOUND1CNT_L, REG_BASE + OFFSET_REG_SOUND1CNT_L + .set REG_NR10, REG_BASE + OFFSET_REG_NR10 + .set REG_SOUND1CNT_H, REG_BASE + OFFSET_REG_SOUND1CNT_H + .set REG_NR11, REG_BASE + OFFSET_REG_NR11 + .set REG_NR12, REG_BASE + OFFSET_REG_NR12 + .set REG_SOUND1CNT_X, REG_BASE + OFFSET_REG_SOUND1CNT_X + .set REG_NR13, REG_BASE + OFFSET_REG_NR13 + .set REG_NR14, REG_BASE + OFFSET_REG_NR14 + .set REG_SOUND2CNT, REG_BASE + OFFSET_REG_SOUND2CNT + .set REG_SOUND2CNT_L, REG_BASE + OFFSET_REG_SOUND2CNT_L + .set REG_NR21, REG_BASE + OFFSET_REG_NR21 + .set REG_NR22, REG_BASE + OFFSET_REG_NR22 + .set REG_SOUND2CNT_H, REG_BASE + OFFSET_REG_SOUND2CNT_H + .set REG_NR23, REG_BASE + OFFSET_REG_NR23 + .set REG_NR24, REG_BASE + OFFSET_REG_NR24 + .set REG_SOUND3CNT, REG_BASE + OFFSET_REG_SOUND3CNT + .set REG_SOUND3CNT_L, REG_BASE + OFFSET_REG_SOUND3CNT_L + .set REG_NR30, REG_BASE + OFFSET_REG_NR30 + .set REG_SOUND3CNT_H, REG_BASE + OFFSET_REG_SOUND3CNT_H + .set REG_NR31, REG_BASE + OFFSET_REG_NR31 + .set REG_NR32, REG_BASE + OFFSET_REG_NR32 + .set REG_SOUND3CNT_X, REG_BASE + OFFSET_REG_SOUND3CNT_X + .set REG_NR33, REG_BASE + OFFSET_REG_NR33 + .set REG_NR34, REG_BASE + OFFSET_REG_NR34 + .set REG_SOUND4CNT, REG_BASE + OFFSET_REG_SOUND4CNT + .set REG_SOUND4CNT_L, REG_BASE + OFFSET_REG_SOUND4CNT_L + .set REG_NR41, REG_BASE + OFFSET_REG_NR41 + .set REG_NR42, REG_BASE + OFFSET_REG_NR42 + .set REG_SOUND4CNT_H, REG_BASE + OFFSET_REG_SOUND4CNT_H + .set REG_NR43, REG_BASE + OFFSET_REG_NR43 + .set REG_NR44, REG_BASE + OFFSET_REG_NR44 + .set REG_SOUNDCNT, REG_BASE + OFFSET_REG_SOUNDCNT + .set REG_SOUNDCNT_L, REG_BASE + OFFSET_REG_SOUNDCNT_L + .set REG_NR50, REG_BASE + OFFSET_REG_NR50 + .set REG_NR51, REG_BASE + OFFSET_REG_NR51 + .set REG_SOUNDCNT_H, REG_BASE + OFFSET_REG_SOUNDCNT_H + .set REG_SOUNDCNT_X, REG_BASE + OFFSET_REG_SOUNDCNT_X + .set REG_NR52, REG_BASE + OFFSET_REG_NR52 + .set REG_SOUNDBIAS, REG_BASE + OFFSET_REG_SOUNDBIAS + .set REG_WAVE_RAM, REG_BASE + OFFSET_REG_WAVE_RAM + .set REG_WAVE_RAM0, REG_BASE + OFFSET_REG_WAVE_RAM0 + .set REG_WAVE_RAM0_L, REG_BASE + OFFSET_REG_WAVE_RAM0_L + .set REG_WAVE_RAM0_H, REG_BASE + OFFSET_REG_WAVE_RAM0_H + .set REG_WAVE_RAM1, REG_BASE + OFFSET_REG_WAVE_RAM1 + .set REG_WAVE_RAM1_L, REG_BASE + OFFSET_REG_WAVE_RAM1_L + .set REG_WAVE_RAM1_H, REG_BASE + OFFSET_REG_WAVE_RAM1_H + .set REG_WAVE_RAM2, REG_BASE + OFFSET_REG_WAVE_RAM2 + .set REG_WAVE_RAM2_L, REG_BASE + OFFSET_REG_WAVE_RAM2_L + .set REG_WAVE_RAM2_H, REG_BASE + OFFSET_REG_WAVE_RAM2_H + .set REG_WAVE_RAM3, REG_BASE + OFFSET_REG_WAVE_RAM3 + .set REG_WAVE_RAM3_L, REG_BASE + OFFSET_REG_WAVE_RAM3_L + .set REG_WAVE_RAM3_H, REG_BASE + OFFSET_REG_WAVE_RAM3_H + .set REG_FIFO, REG_BASE + OFFSET_REG_FIFO + .set REG_FIFO_A, REG_BASE + OFFSET_REG_FIFO_A + .set REG_FIFO_A_L, REG_BASE + OFFSET_REG_FIFO_A_L + .set REG_FIFO_A_H, REG_BASE + OFFSET_REG_FIFO_A_H + .set REG_FIFO_B, REG_BASE + OFFSET_REG_FIFO_B + .set REG_FIFO_B_L, REG_BASE + OFFSET_REG_FIFO_B_L + .set REG_FIFO_B_H, REG_BASE + OFFSET_REG_FIFO_B_H + + .set REG_DMA0, REG_BASE + OFFSET_REG_DMA0 + .set REG_DMA0SAD, REG_BASE + OFFSET_REG_DMA0SAD + .set REG_DMA0SAD_L, REG_BASE + OFFSET_REG_DMA0SAD_L + .set REG_DMA0SAD_H, REG_BASE + OFFSET_REG_DMA0SAD_H + .set REG_DMA0DAD, REG_BASE + OFFSET_REG_DMA0DAD + .set REG_DMA0DAD_L, REG_BASE + OFFSET_REG_DMA0DAD_L + .set REG_DMA0DAD_H, REG_BASE + OFFSET_REG_DMA0DAD_H + .set REG_DMA0CNT, REG_BASE + OFFSET_REG_DMA0CNT + .set REG_DMA0CNT_L, REG_BASE + OFFSET_REG_DMA0CNT_L + .set REG_DMA0CNT_H, REG_BASE + OFFSET_REG_DMA0CNT_H + .set REG_DMA1, REG_BASE + OFFSET_REG_DMA1 + .set REG_DMA1SAD, REG_BASE + OFFSET_REG_DMA1SAD + .set REG_DMA1SAD_L, REG_BASE + OFFSET_REG_DMA1SAD_L + .set REG_DMA1SAD_H, REG_BASE + OFFSET_REG_DMA1SAD_H + .set REG_DMA1DAD, REG_BASE + OFFSET_REG_DMA1DAD + .set REG_DMA1DAD_L, REG_BASE + OFFSET_REG_DMA1DAD_L + .set REG_DMA1DAD_H, REG_BASE + OFFSET_REG_DMA1DAD_H + .set REG_DMA1CNT, REG_BASE + OFFSET_REG_DMA1CNT + .set REG_DMA1CNT_L, REG_BASE + OFFSET_REG_DMA1CNT_L + .set REG_DMA1CNT_H, REG_BASE + OFFSET_REG_DMA1CNT_H + .set REG_DMA2, REG_BASE + OFFSET_REG_DMA2 + .set REG_DMA2SAD, REG_BASE + OFFSET_REG_DMA2SAD + .set REG_DMA2SAD_L, REG_BASE + OFFSET_REG_DMA2SAD_L + .set REG_DMA2SAD_H, REG_BASE + OFFSET_REG_DMA2SAD_H + .set REG_DMA2DAD, REG_BASE + OFFSET_REG_DMA2DAD + .set REG_DMA2DAD_L, REG_BASE + OFFSET_REG_DMA2DAD_L + .set REG_DMA2DAD_H, REG_BASE + OFFSET_REG_DMA2DAD_H + .set REG_DMA2CNT, REG_BASE + OFFSET_REG_DMA2CNT + .set REG_DMA2CNT_L, REG_BASE + OFFSET_REG_DMA2CNT_L + .set REG_DMA2CNT_H, REG_BASE + OFFSET_REG_DMA2CNT_H + .set REG_DMA3, REG_BASE + OFFSET_REG_DMA3 + .set REG_DMA3SAD, REG_BASE + OFFSET_REG_DMA3SAD + .set REG_DMA3SAD_L, REG_BASE + OFFSET_REG_DMA3SAD_L + .set REG_DMA3SAD_H, REG_BASE + OFFSET_REG_DMA3SAD_H + .set REG_DMA3DAD, REG_BASE + OFFSET_REG_DMA3DAD + .set REG_DMA3DAD_L, REG_BASE + OFFSET_REG_DMA3DAD_L + .set REG_DMA3DAD_H, REG_BASE + OFFSET_REG_DMA3DAD_H + .set REG_DMA3CNT, REG_BASE + OFFSET_REG_DMA3CNT + .set REG_DMA3CNT_L, REG_BASE + OFFSET_REG_DMA3CNT_L + .set REG_DMA3CNT_H, REG_BASE + OFFSET_REG_DMA3CNT_H + + .set REG_TM0CNT, REG_BASE + OFFSET_REG_TM0CNT + .set REG_TM0CNT_L, REG_BASE + OFFSET_REG_TM0CNT_L + .set REG_TM0CNT_H, REG_BASE + OFFSET_REG_TM0CNT_H + .set REG_TM1CNT, REG_BASE + OFFSET_REG_TM1CNT + .set REG_TM1CNT_L, REG_BASE + OFFSET_REG_TM1CNT_L + .set REG_TM1CNT_H, REG_BASE + OFFSET_REG_TM1CNT_H + .set REG_TM2CNT, REG_BASE + OFFSET_REG_TM2CNT + .set REG_TM2CNT_L, REG_BASE + OFFSET_REG_TM2CNT_L + .set REG_TM2CNT_H, REG_BASE + OFFSET_REG_TM2CNT_H + .set REG_TM3CNT, REG_BASE + OFFSET_REG_TM3CNT + .set REG_TM3CNT_L, REG_BASE + OFFSET_REG_TM3CNT_L + .set REG_TM3CNT_H, REG_BASE + OFFSET_REG_TM3CNT_H + + .set REG_SIOCNT, REG_BASE + OFFSET_REG_SIOCNT + .set REG_SIODATA8, REG_BASE + OFFSET_REG_SIODATA8 + .set REG_SIODATA32, REG_BASE + OFFSET_REG_SIODATA32 + .set REG_SIOMLT_SEND, REG_BASE + OFFSET_REG_SIOMLT_SEND + .set REG_SIOMLT_RECV, REG_BASE + OFFSET_REG_SIOMLT_RECV + .set REG_SIOMULTI0, REG_BASE + OFFSET_REG_SIOMULTI0 + .set REG_SIOMULTI1, REG_BASE + OFFSET_REG_SIOMULTI1 + .set REG_SIOMULTI2, REG_BASE + OFFSET_REG_SIOMULTI2 + .set REG_SIOMULTI3, REG_BASE + OFFSET_REG_SIOMULTI3 + + .set REG_KEYINPUT, REG_BASE + OFFSET_REG_KEYINPUT + .set REG_KEYCNT, REG_BASE + OFFSET_REG_KEYCNT + + .set REG_RCNT, REG_BASE + OFFSET_REG_RCNT + + .set REG_JOYCNT, REG_BASE + OFFSET_REG_JOYCNT + .set REG_JOYSTAT, REG_BASE + OFFSET_REG_JOYSTAT + .set REG_JOY_RECV, REG_BASE + OFFSET_REG_JOY_RECV + .set REG_JOY_RECV_L, REG_BASE + OFFSET_REG_JOY_RECV_L + .set REG_JOY_RECV_H, REG_BASE + OFFSET_REG_JOY_RECV_H + .set REG_JOY_TRANS, REG_BASE + OFFSET_REG_JOY_TRANS + .set REG_JOY_TRANS_L, REG_BASE + OFFSET_REG_JOY_TRANS_L + .set REG_JOY_TRANS_H, REG_BASE + OFFSET_REG_JOY_TRANS_H + + .set REG_IME, REG_BASE + OFFSET_REG_IME + .set REG_IE, REG_BASE + OFFSET_REG_IE + .set REG_IF, REG_BASE + OFFSET_REG_IF + + .set REG_WAITCNT, REG_BASE + OFFSET_REG_WAITCNT + +@ DMA register constants + + .set DMA_DEST_INC, 0x0000 + .set DMA_DEST_DEC, 0x0020 + .set DMA_DEST_FIXED, 0x0040 + .set DMA_DEST_RELOAD, 0x0060 + .set DMA_SRC_INC, 0x0000 + .set DMA_SRC_DEC, 0x0080 + .set DMA_SRC_FIXED, 0x0100 + .set DMA_REPEAT, 0x0200 + .set DMA_16BIT, 0x0000 + .set DMA_32BIT, 0x0400 + .set DMA_DREQ_ON, 0x0800 + .set DMA_START_NOW, 0x0000 + .set DMA_START_VBLANK, 0x1000 + .set DMA_START_HBLANK, 0x2000 + .set DMA_START_SPECIAL, 0x3000 + .set DMA_INTR_ENABLE, 0x4000 + .set DMA_ENABLE, 0x8000 + +@ OAM attribute constants + + .set OAM_OBJ_NORMAL, 0x00000000 + .set OAM_OBJ_BLEND, 0x00000400 + .set OAM_OBJ_WINDOW, 0x00000800 + + .set OAM_AFFINE_NONE, 0x00000000 + .set OAM_AFFINE_NORMAL_SIZE, 0x00000100 + .set OAM_OBJ_DISABLED, 0x00000200 + .set OAM_AFFINE_DOUBLE_SIZE, 0x00000300 + + .set OAM_MOSAIC_OFF, 0x00000000 + .set OAM_MOSAIC_ON, 0x00001000 + + .set OAM_4BPP, 0x00000000 + .set OAM_8BPP, 0x00002000 + + .set OAM_H_FLIP, 0x10000000 + .set OAM_V_FLIP, 0x20000000 + + .set OAM_SQUARE, 0x00000000 + .set OAM_H_RECTANGLE, 0x00004000 + .set OAM_V_RECTANGLE, 0x00008000 + .set OAM_SIZE_0, 0x00000000 + .set OAM_SIZE_1, 0x40000000 + .set OAM_SIZE_2, 0x80000000 + .set OAM_SIZE_3, 0xc0000000 + + .set OAM_SIZE_8x8, OAM_SIZE_0 | OAM_SQUARE + .set OAM_SIZE_16x16, OAM_SIZE_1 | OAM_SQUARE + .set OAM_SIZE_32x32, OAM_SIZE_2 | OAM_SQUARE + .set OAM_SIZE_64x64, OAM_SIZE_3 | OAM_SQUARE + + .set OAM_SIZE_16x8, OAM_SIZE_0 | OAM_H_RECTANGLE + .set OAM_SIZE_32x8, OAM_SIZE_1 | OAM_H_RECTANGLE + .set OAM_SIZE_32x16, OAM_SIZE_2 | OAM_H_RECTANGLE + .set OAM_SIZE_64x32, OAM_SIZE_3 | OAM_H_RECTANGLE + + .set OAM_SIZE_8x16, OAM_SIZE_0 | OAM_V_RECTANGLE + .set OAM_SIZE_8x32, OAM_SIZE_1 | OAM_V_RECTANGLE + .set OAM_SIZE_16x32, OAM_SIZE_2 | OAM_V_RECTANGLE + .set OAM_SIZE_32x64, OAM_SIZE_3 | OAM_V_RECTANGLE diff --git a/constants/item_data_constants.inc b/constants/item_data_constants.inc new file mode 100644 index 000000000..07ceb6e3b --- /dev/null +++ b/constants/item_data_constants.inc @@ -0,0 +1,5 @@ + .set POCKET_ITEMS, 0x01 + .set POCKET_POKE_BALLS, 0x02 + .set POCKET_TM_HM, 0x03 + .set POCKET_BERRIES, 0x04 + .set POCKET_KEY_ITEMS, 0x05 diff --git a/constants/m4a_constants.inc b/constants/m4a_constants.inc new file mode 100644 index 000000000..62ca5bb55 --- /dev/null +++ b/constants/m4a_constants.inc @@ -0,0 +1,199 @@ + .equiv ID_NUMBER, 0x68736d53 + + .equiv PCM_DMA_BUF_SIZE, 1584 + + .equiv TONEDATA_TYPE_CGB, 0x07 + .equiv TONEDATA_TYPE_FIX, 0x08 + .equiv TONEDATA_TYPE_SPL, 0x40 @ key split + .equiv TONEDATA_TYPE_RHY, 0x80 @ rhythm + + .macro struct_begin + .struct 0 + .endm + + .macro struct_field name, size +\name: + .struct \name + \size + .endm + + struct_begin + struct_field o_SoundInfo_ident, 4 + struct_field o_SoundInfo_pcmDmaCounter, 1 + struct_field o_SoundInfo_reverb, 1 + struct_field o_SoundInfo_maxChans, 1 + struct_field o_SoundInfo_masterVolume, 1 + struct_field o_SoundInfo_freq, 1 + struct_field o_SoundInfo_mode, 1 + struct_field o_SoundInfo_c15, 1 + struct_field o_SoundInfo_pcmDmaPeriod, 1 + struct_field o_SoundInfo_maxLines, 1 + struct_field o_SoundInfo_gap, 3 + struct_field o_SoundInfo_pcmSamplesPerVBlank, 4 + struct_field o_SoundInfo_pcmFreq, 4 + struct_field o_SoundInfo_divFreq, 4 + struct_field o_SoundInfo_cgbChans, 4 + struct_field o_SoundInfo_func, 4 + struct_field o_SoundInfo_intp, 4 + struct_field o_SoundInfo_CgbSound, 4 + struct_field o_SoundInfo_CgbOscOff, 4 + struct_field o_SoundInfo_MidiKeyToCgbFreq, 4 + struct_field o_SoundInfo_MPlayJumpTable, 4 + struct_field o_SoundInfo_plynote, 4 + struct_field o_SoundInfo_ExtVolPit, 4 + struct_field o_SoundInfo_gap2, 16 + struct_field o_SoundInfo_chans, 768 + struct_field o_SoundInfo_pcmBuffer, PCM_DMA_BUF_SIZE * 2 + struct_field SoundInfo_size, 0 + + struct_begin + struct_field o_SoundChannel_status, 1 + struct_field o_SoundChannel_type, 1 + struct_field o_SoundChannel_rightVolume, 1 + struct_field o_SoundChannel_leftVolume, 1 + struct_field o_SoundChannel_attack, 1 + struct_field o_SoundChannel_decay, 1 + struct_field o_SoundChannel_sustain, 1 + struct_field o_SoundChannel_release, 1 + struct_field o_SoundChannel_ky, 1 + struct_field o_SoundChannel_ev, 1 + struct_field o_SoundChannel_er, 1 + struct_field o_SoundChannel_el, 1 + struct_field o_SoundChannel_iev, 1 + struct_field o_SoundChannel_iel, 1 + struct_field o_SoundChannel_d1, 1 + struct_field o_SoundChannel_d2, 1 + struct_field o_SoundChannel_gt, 1 + struct_field o_SoundChannel_mk, 1 + struct_field o_SoundChannel_ve, 1 + struct_field o_SoundChannel_pr, 1 + struct_field o_SoundChannel_rp, 1 + struct_field o_SoundChannel_d3, 3 + struct_field o_SoundChannel_ct, 4 + struct_field o_SoundChannel_fw, 4 + struct_field o_SoundChannel_freq, 4 + struct_field o_SoundChannel_wav, 4 + struct_field o_SoundChannel_cp, 4 + struct_field o_SoundChannel_track, 4 + struct_field o_SoundChannel_pp, 4 + struct_field o_SoundChannel_np, 4 + struct_field o_SoundChannel_d4, 4 + struct_field o_SoundChannel_xpi, 2 + struct_field o_SoundChannel_xpc, 2 + struct_field SoundChannel_size, 0 + + struct_begin + struct_field o_MusicPlayerTrack_flags, 1 + struct_field o_MusicPlayerTrack_wait, 1 + struct_field o_MusicPlayerTrack_patternLevel, 1 + struct_field o_MusicPlayerTrack_repN, 1 + struct_field o_MusicPlayerTrack_gateTime, 1 + struct_field o_MusicPlayerTrack_key, 1 + struct_field o_MusicPlayerTrack_velocity, 1 + struct_field o_MusicPlayerTrack_runningStatus, 1 + struct_field o_MusicPlayerTrack_keyM, 1 + struct_field o_MusicPlayerTrack_pitM, 1 + struct_field o_MusicPlayerTrack_keyShift, 1 + struct_field o_MusicPlayerTrack_keyShiftX, 1 + struct_field o_MusicPlayerTrack_tune, 1 + struct_field o_MusicPlayerTrack_pitX, 1 + struct_field o_MusicPlayerTrack_bend, 1 + struct_field o_MusicPlayerTrack_bendRange, 1 + struct_field o_MusicPlayerTrack_volMR, 1 + struct_field o_MusicPlayerTrack_volML, 1 + struct_field o_MusicPlayerTrack_vol, 1 + struct_field o_MusicPlayerTrack_volX, 1 + struct_field o_MusicPlayerTrack_pan, 1 + struct_field o_MusicPlayerTrack_panX, 1 + struct_field o_MusicPlayerTrack_modM, 1 + struct_field o_MusicPlayerTrack_mod, 1 + struct_field o_MusicPlayerTrack_modT, 1 + struct_field o_MusicPlayerTrack_lfoSpeed, 1 + struct_field o_MusicPlayerTrack_lfoSpeedC, 1 + struct_field o_MusicPlayerTrack_lfoDelay, 1 + struct_field o_MusicPlayerTrack_lfoDelayC, 1 + struct_field o_MusicPlayerTrack_priority, 1 + struct_field o_MusicPlayerTrack_echoVolume, 1 + struct_field o_MusicPlayerTrack_echoLength, 1 + struct_field o_MusicPlayerTrack_chan, 4 + struct_field o_MusicPlayerTrack_ToneData_type, 1 + struct_field o_MusicPlayerTrack_ToneData_key, 1 + struct_field o_MusicPlayerTrack_ToneData_length, 1 + struct_field o_MusicPlayerTrack_ToneData_pan_sweep, 1 + struct_field o_MusicPlayerTrack_ToneData_wav, 4 + struct_field o_MusicPlayerTrack_ToneData_attack, 1 + struct_field o_MusicPlayerTrack_ToneData_decay, 1 + struct_field o_MusicPlayerTrack_ToneData_sustain, 1 + struct_field o_MusicPlayerTrack_ToneData_release, 1 + struct_field o_MusicPlayerTrack_gap, 10 + struct_field o_MusicPlayerTrack_unk_3A, 2 + struct_field o_MusicPlayerTrack_unk_3C, 4 + struct_field o_MusicPlayerTrack_cmdPtr, 4 + struct_field o_MusicPlayerTrack_patternStack, 12 + struct_field MusicPlayerTrack_size, 0 + + .equiv o_MusicPlayerTrack_ToneData_keySplitTable, o_MusicPlayerTrack_ToneData_attack + + struct_begin + struct_field o_MusicPlayerInfo_songHeader, 4 + struct_field o_MusicPlayerInfo_status, 4 + struct_field o_MusicPlayerInfo_trackCount, 1 + struct_field o_MusicPlayerInfo_priority, 1 + struct_field o_MusicPlayerInfo_cmd, 1 + struct_field o_MusicPlayerInfo_unk_B, 1 + struct_field o_MusicPlayerInfo_clock, 4 + struct_field o_MusicPlayerInfo_gap, 8 + struct_field o_MusicPlayerInfo_memAccArea, 4 + struct_field o_MusicPlayerInfo_tempoD, 2 + struct_field o_MusicPlayerInfo_tempoU, 2 + struct_field o_MusicPlayerInfo_tempoI, 2 + struct_field o_MusicPlayerInfo_tempoC, 2 + struct_field o_MusicPlayerInfo_fadeOI, 2 + struct_field o_MusicPlayerInfo_fadeOC, 2 + struct_field o_MusicPlayerInfo_fadeOV, 2 + struct_field o_MusicPlayerInfo_padding, 2 + struct_field o_MusicPlayerInfo_tracks, 4 + struct_field o_MusicPlayerInfo_tone, 4 + struct_field o_MusicPlayerInfo_ident, 4 + struct_field o_MusicPlayerInfo_func, 4 + struct_field o_MusicPlayerInfo_intp, 4 + struct_field MusicPlayerInfo_size, 0 + + struct_begin + struct_field o_CgbChannel_sf, 1 + struct_field o_CgbChannel_ty, 1 + struct_field o_CgbChannel_rightVolume, 1 + struct_field o_CgbChannel_leftVolume, 1 + struct_field o_CgbChannel_at, 1 + struct_field o_CgbChannel_de, 1 + struct_field o_CgbChannel_su, 1 + struct_field o_CgbChannel_re, 1 + struct_field o_CgbChannel_ky, 1 + struct_field o_CgbChannel_ev, 1 + struct_field o_CgbChannel_eg, 1 + struct_field o_CgbChannel_ec, 1 + struct_field o_CgbChannel_echoVolume, 1 + struct_field o_CgbChannel_echoLength, 1 + struct_field o_CgbChannel_d1, 1 + struct_field o_CgbChannel_d2, 1 + struct_field o_CgbChannel_gt, 1 + struct_field o_CgbChannel_mk, 1 + struct_field o_CgbChannel_ve, 1 + struct_field o_CgbChannel_pr, 1 + struct_field o_CgbChannel_rp, 1 + struct_field o_CgbChannel_d3, 3 + struct_field o_CgbChannel_d5, 1 + struct_field o_CgbChannel_sg, 1 + struct_field o_CgbChannel_n4, 1 + struct_field o_CgbChannel_pan, 1 + struct_field o_CgbChannel_panMask, 1 + struct_field o_CgbChannel_mo, 1 + struct_field o_CgbChannel_le, 1 + struct_field o_CgbChannel_sw, 1 + struct_field o_CgbChannel_fr, 4 + struct_field o_CgbChannel_wp, 4 + struct_field o_CgbChannel_cp, 4 + struct_field o_CgbChannel_tp, 4 + struct_field o_CgbChannel_pp, 4 + struct_field o_CgbChannel_np, 4 + struct_field o_CgbChannel_d4, 8 + struct_field CgbChannel_size, 0 diff --git a/constants/misc_constants.inc b/constants/misc_constants.inc new file mode 100644 index 000000000..5f4330928 --- /dev/null +++ b/constants/misc_constants.inc @@ -0,0 +1,51 @@ + .set TRUE, 1 + .set FALSE, 0 + + .set NULL, 0 + + .set POKEMON_NAME_LENGTH, 11 + .set MOVE_NAME_LENGTH, 13 + + .set SPRITE_SIZE_8x8, (OAM_SIZE_0 >> 28) | (OAM_SQUARE >> 14) + .set SPRITE_SIZE_16x16, (OAM_SIZE_1 >> 28) | (OAM_SQUARE >> 14) + .set SPRITE_SIZE_32x32, (OAM_SIZE_2 >> 28) | (OAM_SQUARE >> 14) + .set SPRITE_SIZE_64x64, (OAM_SIZE_3 >> 28) | (OAM_SQUARE >> 14) + + .set SPRITE_SIZE_16x8, (OAM_SIZE_0 >> 28) | (OAM_H_RECTANGLE >> 14) + .set SPRITE_SIZE_32x8, (OAM_SIZE_1 >> 28) | (OAM_H_RECTANGLE >> 14) + .set SPRITE_SIZE_32x16, (OAM_SIZE_2 >> 28) | (OAM_H_RECTANGLE >> 14) + .set SPRITE_SIZE_64x32, (OAM_SIZE_3 >> 28) | (OAM_H_RECTANGLE >> 14) + + .set SPRITE_SIZE_8x16, (OAM_SIZE_0 >> 28) | (OAM_V_RECTANGLE >> 14) + .set SPRITE_SIZE_8x32, (OAM_SIZE_1 >> 28) | (OAM_V_RECTANGLE >> 14) + .set SPRITE_SIZE_16x32, (OAM_SIZE_2 >> 28) | (OAM_V_RECTANGLE >> 14) + .set SPRITE_SIZE_32x64, (OAM_SIZE_3 >> 28) | (OAM_V_RECTANGLE >> 14) + + .set OBJ_IMAGE_ANIM_H_FLIP, 1 << 6 + .set OBJ_IMAGE_ANIM_V_FLIP, 1 << 7 + + .equiv DIR_SOUTH, 1 + .equiv DIR_NORTH, 2 + .equiv DIR_WEST, 3 + .equiv DIR_EAST, 4 + + .equiv MALE, 0 + .equiv FEMALE, 1 + + .ifdef ENGLISH + .equiv GAME_LANGUAGE, 2 + .else + .ifdef GERMAN + .equiv GAME_LANGUAGE, 5 + .endif + .endif + + .equiv ENEMY_TYPE1, 0 + .equiv ENEMY_TYPE2, 1 + .equiv PLAYER_TYPE1, 2 + .equiv PLAYER_TYPE2, 3 + .equiv CURRENT_MOVE, 4 + + .equiv LESS_THAN, 0 + .equiv GREATER_THAN, 1 + .equiv EQUAL, 2 diff --git a/constants/pokemon_data_constants.inc b/constants/pokemon_data_constants.inc new file mode 100644 index 000000000..cf5d4df41 --- /dev/null +++ b/constants/pokemon_data_constants.inc @@ -0,0 +1,78 @@ + .set NATURE_HARDY, 0 + .set NATURE_LONELY, 1 + .set NATURE_BRAVE, 2 + .set NATURE_ADAMANT, 3 + .set NATURE_NAUGHTY, 4 + .set NATURE_BOLD, 5 + .set NATURE_DOCILE, 6 + .set NATURE_RELAXED, 7 + .set NATURE_IMPISH, 8 + .set NATURE_LAX, 9 + .set NATURE_TIMID, 10 + .set NATURE_HASTY, 11 + .set NATURE_SERIOUS, 12 + .set NATURE_JOLLY, 13 + .set NATURE_NAIVE, 14 + .set NATURE_MODEST, 15 + .set NATURE_MILD, 16 + .set NATURE_QUIET, 17 + .set NATURE_BASHFUL, 18 + .set NATURE_RASH, 19 + .set NATURE_CALM, 20 + .set NATURE_GENTLE, 21 + .set NATURE_SASSY, 22 + .set NATURE_CAREFUL, 23 + .set NATURE_QUIRKY, 24 + + .set GROWTH_MEDIUM_FAST, 0x00 + .set GROWTH_ERRATIC, 0x01 + .set GROWTH_FLUCTUATING, 0x02 + .set GROWTH_MEDIUM_SLOW, 0x03 + .set GROWTH_FAST, 0x04 + .set GROWTH_SLOW, 0x05 + + .set EGG_GROUP_NONE, 0x00 + .set EGG_GROUP_MONSTER, 0x01 + .set EGG_GROUP_WATER_1, 0x02 + .set EGG_GROUP_BUG, 0x03 + .set EGG_GROUP_FLYING, 0x04 + .set EGG_GROUP_FIELD, 0x05 + .set EGG_GROUP_FAIRY, 0x06 + .set EGG_GROUP_GRASS, 0x07 + .set EGG_GROUP_HUMAN_LIKE, 0x08 + .set EGG_GROUP_WATER_3, 0x09 + .set EGG_GROUP_MINERAL, 0x0a + .set EGG_GROUP_AMORPHOUS, 0x0b + .set EGG_GROUP_WATER_2, 0x0c + .set EGG_GROUP_DITTO, 0x0d + .set EGG_GROUP_DRAGON, 0x0e + .set EGG_GROUP_UNDISCOVERED, 0x0f + + .set BODY_COLOR_RED, 0x00 + .set BODY_COLOR_BLUE, 0x01 + .set BODY_COLOR_YELLOW, 0x02 + .set BODY_COLOR_GREEN, 0x03 + .set BODY_COLOR_BLACK, 0x04 + .set BODY_COLOR_BROWN, 0x05 + .set BODY_COLOR_PURPLE, 0x06 + .set BODY_COLOR_GRAY, 0x07 + .set BODY_COLOR_WHITE, 0x08 + .set BODY_COLOR_PINK, 0x09 + + .set F_SUMMARY_SCREEN_FLIP_SPRITE, 0x80 + + .set EVO_FRIENDSHIP, 0x0001 @ Pokémon levels up with friendship ≥ 220 + .set EVO_FRIENDSHIP_DAY, 0x0002 @ Pokémon levels up during the day with friendship ≥ 220 + .set EVO_FRIENDSHIP_NIGHT, 0x0003 @ Pokémon levels up at night with friendship ≥ 220 + .set EVO_LEVEL, 0x0004 @ Pokémon reaches the specified level + .set EVO_TRADE, 0x0005 @ Pokémon is traded + .set EVO_TRADE_ITEM, 0x0006 @ Pokémon is traded while it's holding the specified item + .set EVO_ITEM, 0x0007 @ specified item is used on Pokémon + .set EVO_LEVEL_ATK_GT_DEF, 0x0008 @ Pokémon reaches the specified level with attack > defense + .set EVO_LEVEL_ATK_EQ_DEF, 0x0009 @ Pokémon reaches the specified level with attack = defense + .set EVO_LEVEL_ATK_LT_DEF, 0x000a @ Pokémon reaches the specified level with attack < defense + .set EVO_LEVEL_SILCOON, 0x000b @ Pokémon reaches the specified level with a Silcoon personality value + .set EVO_LEVEL_CASCOON, 0x000c @ Pokémon reaches the specified level with a Cascoon personality value + .set EVO_LEVEL_NINJASK, 0x000d @ Pokémon reaches the specified level (special value for Ninjask) + .set EVO_LEVEL_SHEDINJA, 0x000e @ Pokémon reaches the specified level (special value for Shedinja) + .set EVO_BEAUTY, 0x000f @ Pokémon levels up with beauty ≥ specified value diff --git a/constants/trainer_constants.inc b/constants/trainer_constants.inc new file mode 100644 index 000000000..48ed3036e --- /dev/null +++ b/constants/trainer_constants.inc @@ -0,0 +1,243 @@ + .set TRAINER_CLASS_AQUA_LEADER, 0 + .set TRAINER_CLASS_TEAM_AQUA_M, 1 + .set TRAINER_CLASS_TEAM_AQUA_F, 2 + .set TRAINER_CLASS_AROMA_LADY, 3 + .set TRAINER_CLASS_RUIN_MANIAC, 4 + .set TRAINER_CLASS_INTERVIEWER, 5 + .set TRAINER_CLASS_TUBER_F, 6 + .set TRAINER_CLASS_TUBER_M, 7 + .set TRAINER_CLASS_COOL_TRAINER_M, 8 + .set TRAINER_CLASS_COOL_TRAINER_F, 9 + .set TRAINER_CLASS_HEX_MANIAC, 10 + .set TRAINER_CLASS_LADY, 11 + .set TRAINER_CLASS_BEAUTY, 12 + .set TRAINER_CLASS_RICH_BOY, 13 + .set TRAINER_CLASS_POKEMANIAC, 14 + .set TRAINER_CLASS_SWIMMER_M, 15 + .set TRAINER_CLASS_BLACK_BELT, 16 + .set TRAINER_CLASS_GUITARIST, 17 + .set TRAINER_CLASS_KINDLER, 18 + .set TRAINER_CLASS_CAMPER, 19 + .set TRAINER_CLASS_BUG_MANIAC, 20 + .set TRAINER_CLASS_PSYCHIC_M, 21 + .set TRAINER_CLASS_PSYCHIC_F, 22 + .set TRAINER_CLASS_GENTLEMAN, 23 + .set TRAINER_CLASS_ELITE_FOUR_M, 24 + .set TRAINER_CLASS_ELITE_FOUR_F, 25 + .set TRAINER_CLASS_LEADER_F, 26 + .set TRAINER_CLASS_LEADER_M, 27 + .set TRAINER_CLASS_LEADER_MF, 28 + .set TRAINER_CLASS_SCHOOL_KID_M, 29 + .set TRAINER_CLASS_SCHOOL_KID_F, 30 + .set TRAINER_CLASS_SR_AND_JR, 31 + .set TRAINER_CLASS_POKEFAN_M, 32 + .set TRAINER_CLASS_POKEFAN_F, 33 + .set TRAINER_CLASS_EXPERT_M, 34 + .set TRAINER_CLASS_EXPERT_F, 35 + .set TRAINER_CLASS_YOUNGSTER, 36 + .set TRAINER_CLASS_CHAMPION, 37 + .set TRAINER_CLASS_FISHERMAN, 38 + .set TRAINER_CLASS_CYCLING_TRIATHLETE_M, 39 + .set TRAINER_CLASS_CYCLING_TRIATHLETE_F, 40 + .set TRAINER_CLASS_RUNNING_TRIATHLETE_M, 41 + .set TRAINER_CLASS_RUNNING_TRIATHLETE_F, 42 + .set TRAINER_CLASS_SWIMMING_TRIATHLETE_M, 43 + .set TRAINER_CLASS_SWIMMING_TRIATHLETE_F, 44 + .set TRAINER_CLASS_DRAGON_TAMER, 45 + .set TRAINER_CLASS_BIRD_KEEPER, 46 + .set TRAINER_CLASS_NINJA_BOY, 47 + .set TRAINER_CLASS_BATTLE_GIRL, 48 + .set TRAINER_CLASS_PARASOL_LADY, 49 + .set TRAINER_CLASS_SWIMMER_F, 50 + .set TRAINER_CLASS_PICNICKER, 51 + .set TRAINER_CLASS_TWINS, 52 + .set TRAINER_CLASS_SAILOR, 53 + .set TRAINER_CLASS_BOARDER_1, 54 + .set TRAINER_CLASS_BOARDER_2, 55 + .set TRAINER_CLASS_COLLECTOR, 56 + .set TRAINER_CLASS_WALLY, 57 + .set TRAINER_CLASS_BRENDAN_1, 58 + .set TRAINER_CLASS_BRENDAN_2, 59 + .set TRAINER_CLASS_BRENDAN_3, 60 + .set TRAINER_CLASS_MAY_1, 61 + .set TRAINER_CLASS_MAY_2, 62 + .set TRAINER_CLASS_MAY_3, 63 + .set TRAINER_CLASS_POKEMON_BREEDER_M, 64 + .set TRAINER_CLASS_POKEMON_BREEDER_F, 65 + .set TRAINER_CLASS_POKEMON_RANGER_M, 66 + .set TRAINER_CLASS_POKEMON_RANGER_F, 67 + .set TRAINER_CLASS_MAGMA_LEADER, 68 + .set TRAINER_CLASS_TEAM_MAGMA_M, 69 + .set TRAINER_CLASS_TEAM_MAGMA_F, 70 + .set TRAINER_CLASS_LASS, 71 + .set TRAINER_CLASS_BUG_CATCHER, 72 + .set TRAINER_CLASS_HIKER, 73 + .set TRAINER_CLASS_YOUNG_COUPLE, 74 + .set TRAINER_CLASS_OLD_COUPLE, 75 + .set TRAINER_CLASS_SIS_AND_BRO, 76 + + .set TRAINER_PIC_BRENDAN, 0 + .set TRAINER_PIC_MAY, 1 + .set TRAINER_PIC_LASS, 2 + .set TRAINER_PIC_YOUNGSTER, 3 + .set TRAINER_PIC_HIKER, 4 + .set TRAINER_PIC_BEAUTY, 5 + .set TRAINER_PIC_FISHERMAN, 6 + .set TRAINER_PIC_LADY, 7 + .set TRAINER_PIC_CYCLING_TRIATHLETE_M, 8 + .set TRAINER_PIC_AQUA_GRUNT_M, 9 + .set TRAINER_PIC_TWINS, 10 + .set TRAINER_PIC_SWIMMER_F, 11 + .set TRAINER_PIC_BUG_CATCHER, 12 + .set TRAINER_PIC_SCHOOL_KID_M, 13 + .set TRAINER_PIC_RICH_BOY, 14 + .set TRAINER_PIC_SR_AND_JR, 15 + .set TRAINER_PIC_BLACK_BELT, 16 + .set TRAINER_PIC_WALLY, 17 + .set TRAINER_PIC_AQUA_GRUNT_F, 18 + .set TRAINER_PIC_TUBER_F, 19 + .set TRAINER_PIC_HEX_MANIAC, 20 + .set TRAINER_PIC_POKEMON_BREEDER_F, 21 + .set TRAINER_PIC_MAGMA_GRUNT_M, 22 + .set TRAINER_PIC_MAGMA_GRUNT_F, 23 + .set TRAINER_PIC_INTERVIEWER, 24 + .set TRAINER_PIC_TUBER_M, 25 + .set TRAINER_PIC_YOUNG_COUPLE, 26 + .set TRAINER_PIC_GUITARIST, 27 + .set TRAINER_PIC_GENTLEMAN, 28 + .set TRAINER_PIC_STEVEN, 29 + .set TRAINER_PIC_MAXIE, 30 + .set TRAINER_PIC_RUNNING_TRIATHLETE_F, 31 + .set TRAINER_PIC_RUNNING_TRIATHLETE_M, 32 + .set TRAINER_PIC_BATTLE_GIRL, 33 + .set TRAINER_PIC_CYCLING_TRIATHLETE_F, 34 + .set TRAINER_PIC_SWIMMER_M, 35 + .set TRAINER_PIC_POKEFAN_F, 36 + .set TRAINER_PIC_EXPERT_M, 37 + .set TRAINER_PIC_EXPERT_F, 38 + .set TRAINER_PIC_SWIMMING_TRIATHLETE_M, 39 + .set TRAINER_PIC_SWIMMING_TRIATHLETE_F, 40 + .set TRAINER_PIC_DRAGON_TAMER, 41 + .set TRAINER_PIC_BIRD_KEEPER, 42 + .set TRAINER_PIC_NINJA_BOY, 43 + .set TRAINER_PIC_PARASOL_LADY, 44 + .set TRAINER_PIC_BUG_MANIAC, 45 + .set TRAINER_PIC_SAILOR, 46 + .set TRAINER_PIC_COLLECTOR, 47 + .set TRAINER_PIC_POKEMON_BREEDER_M, 48 + .set TRAINER_PIC_POKEMON_RANGER_M, 49 + .set TRAINER_PIC_POKEMON_RANGER_F, 50 + .set TRAINER_PIC_MAGMA_ADMIN_M, 51 + .set TRAINER_PIC_MAGMA_ADMIN_F, 52 + .set TRAINER_PIC_AROMA_LADY, 53 + .set TRAINER_PIC_RUIN_MANIAC, 54 + .set TRAINER_PIC_COOL_TRAINER_M, 55 + .set TRAINER_PIC_COOL_TRAINER_F, 56 + .set TRAINER_PIC_POKEMANIAC, 57 + .set TRAINER_PIC_KINDLER, 58 + .set TRAINER_PIC_CAMPER, 59 + .set TRAINER_PIC_PICNICKER, 60 + .set TRAINER_PIC_PSYCHIC_M, 61 + .set TRAINER_PIC_PSYCHIC_F, 62 + .set TRAINER_PIC_SCHOOL_KID_F, 63 + .set TRAINER_PIC_POKEFAN_M, 64 + .set TRAINER_PIC_SIS_AND_BRO, 65 + .set TRAINER_PIC_OLD_COUPLE, 66 + .set TRAINER_PIC_AQUA_ADMIN_M, 67 + .set TRAINER_PIC_AQUA_ADMIN_F, 68 + .set TRAINER_PIC_UNUSED_AQUA, 69 + .set TRAINER_PIC_ARCHIE, 70 + .set TRAINER_PIC_ROXANNE, 71 + .set TRAINER_PIC_BRAWLY, 72 + .set TRAINER_PIC_WATTSON, 73 + .set TRAINER_PIC_FLANNERY, 74 + .set TRAINER_PIC_NORMAN, 75 + .set TRAINER_PIC_WINONA, 76 + .set TRAINER_PIC_TATE_AND_LIZA, 77 + .set TRAINER_PIC_WALLACE, 78 + .set TRAINER_PIC_SIDNEY, 79 + .set TRAINER_PIC_PHOEBE, 80 + .set TRAINER_PIC_GLACIA, 81 + .set TRAINER_PIC_DRAKE, 82 + + .set TRAINER_CLASS_NAME_POKEMON_TRAINER_1, 0 + .set TRAINER_CLASS_NAME_POKEMON_TRAINER_2, 1 + .set TRAINER_CLASS_NAME_AQUA_LEADER, 2 + .set TRAINER_CLASS_NAME_TEAM_AQUA, 3 + .set TRAINER_CLASS_NAME_AQUA_ADMIN, 4 + .set TRAINER_CLASS_NAME_AROMA_LADY, 5 + .set TRAINER_CLASS_NAME_RUIN_MANIAC, 6 + .set TRAINER_CLASS_NAME_INTERVIEWER, 7 + .set TRAINER_CLASS_NAME_TUBER_F, 8 + .set TRAINER_CLASS_NAME_TUBER_M, 9 + .set TRAINER_CLASS_NAME_COOL_TRAINER, 10 + .set TRAINER_CLASS_NAME_HEX_MANIAC, 11 + .set TRAINER_CLASS_NAME_LADY, 12 + .set TRAINER_CLASS_NAME_BEAUTY, 13 + .set TRAINER_CLASS_NAME_RICH_BOY, 14 + .set TRAINER_CLASS_NAME_POKEMANIAC, 15 + .set TRAINER_CLASS_NAME_SWIMMER_M, 16 + .set TRAINER_CLASS_NAME_BLACK_BELT, 17 + .set TRAINER_CLASS_NAME_GUITARIST, 18 + .set TRAINER_CLASS_NAME_KINDLER, 19 + .set TRAINER_CLASS_NAME_CAMPER, 20 + .set TRAINER_CLASS_NAME_BUG_MANIAC, 21 + .set TRAINER_CLASS_NAME_PSYCHIC, 22 + .set TRAINER_CLASS_NAME_GENTLEMAN, 23 + .set TRAINER_CLASS_NAME_ELITE_FOUR, 24 + .set TRAINER_CLASS_NAME_LEADER, 25 + .set TRAINER_CLASS_NAME_SCHOOL_KID, 26 + .set TRAINER_CLASS_NAME_SR_AND_JR, 27 + .set TRAINER_CLASS_NAME_WINSTRATE, 28 + .set TRAINER_CLASS_NAME_POKEFAN, 29 + .set TRAINER_CLASS_NAME_EXPERT, 30 + .set TRAINER_CLASS_NAME_YOUNGSTER, 31 + .set TRAINER_CLASS_NAME_CHAMPION, 32 + .set TRAINER_CLASS_NAME_FISHERMAN, 33 + .set TRAINER_CLASS_NAME_TRIATHLETE, 34 + .set TRAINER_CLASS_NAME_DRAGON_TAMER, 35 + .set TRAINER_CLASS_NAME_BIRD_KEEPER, 36 + .set TRAINER_CLASS_NAME_NINJA_BOY, 37 + .set TRAINER_CLASS_NAME_BATTLE_GIRL, 38 + .set TRAINER_CLASS_NAME_PARASOL_LADY, 39 + .set TRAINER_CLASS_NAME_SWIMMER_F, 40 + .set TRAINER_CLASS_NAME_PICNICKER, 41 + .set TRAINER_CLASS_NAME_TWINS, 42 + .set TRAINER_CLASS_NAME_SAILOR, 43 + .set TRAINER_CLASS_NAME_BOARDER, 44 + .set TRAINER_CLASS_NAME_COLLECTOR, 45 + .set TRAINER_CLASS_NAME_POKEMON_TRAINER_3, 46 + .set TRAINER_CLASS_NAME_POKEMON_BREEDER, 47 + .set TRAINER_CLASS_NAME_POKEMON_RANGER, 48 + .set TRAINER_CLASS_NAME_MAGMA_LEADER, 49 + .set TRAINER_CLASS_NAME_TEAM_MAGMA, 50 + .set TRAINER_CLASS_NAME_MAGMA_ADMIN, 51 + .set TRAINER_CLASS_NAME_LASS, 52 + .set TRAINER_CLASS_NAME_BUG_CATCHER, 53 + .set TRAINER_CLASS_NAME_HIKER, 54 + .set TRAINER_CLASS_NAME_YOUNG_COUPLE, 55 + .set TRAINER_CLASS_NAME_OLD_COUPLE, 56 + .set TRAINER_CLASS_NAME_SIS_AND_BRO, 57 + + .set TRAINER_ENCOUNTER_MUSIC_MALE, 0 @ standard male encounter music + .set TRAINER_ENCOUNTER_MUSIC_FEMALE, 1 @ standard female encounter music + .set TRAINER_ENCOUNTER_MUSIC_GIRL, 2 @ used for male Tubers and Young Couples too + .set TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, 3 + .set TRAINER_ENCOUNTER_MUSIC_INTENSE, 4 + .set TRAINER_ENCOUNTER_MUSIC_COOL, 5 + .set TRAINER_ENCOUNTER_MUSIC_AQUA, 6 + .set TRAINER_ENCOUNTER_MUSIC_MAGMA, 7 + .set TRAINER_ENCOUNTER_MUSIC_SWIMMER, 8 + .set TRAINER_ENCOUNTER_MUSIC_TWINS, 9 @ used for other trainer classes too + .set TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, 10 + .set TRAINER_ENCOUNTER_MUSIC_HIKER, 11 @ used for other trainer classes too + .set TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, 12 + .set TRAINER_ENCOUNTER_MUSIC_RICH, 13 @ Rich Boys and Gentlemen + + .set F_TRAINER_FEMALE, 1 << 7 + +@ All trainer parties specify the IV, level, and species for each Pokémon in the +@ party. Some trainer parties also specify held items and custom moves for each +@ Pokémon. + .set F_TRAINER_PARTY_CUSTOM_MOVESET, 1 << 0 + .set F_TRAINER_PARTY_HELD_ITEM, 1 << 1 diff --git a/constants/type_constants.inc b/constants/type_constants.inc new file mode 100644 index 000000000..c6611bd8a --- /dev/null +++ b/constants/type_constants.inc @@ -0,0 +1,18 @@ + .set TYPE_NORMAL, 0x00 + .set TYPE_FIGHTING, 0x01 + .set TYPE_FLYING, 0x02 + .set TYPE_POISON, 0x03 + .set TYPE_GROUND, 0x04 + .set TYPE_ROCK, 0x05 + .set TYPE_BUG, 0x06 + .set TYPE_GHOST, 0x07 + .set TYPE_STEEL, 0x08 + .set TYPE_MYSTERY, 0x09 + .set TYPE_FIRE, 0x0a + .set TYPE_WATER, 0x0b + .set TYPE_GRASS, 0x0c + .set TYPE_ELECTRIC, 0x0d + .set TYPE_PSYCHIC, 0x0e + .set TYPE_ICE, 0x0f + .set TYPE_DRAGON, 0x10 + .set TYPE_DARK, 0x11 diff --git a/constants/variables.inc b/constants/variables.inc new file mode 100644 index 000000000..ab488a97e --- /dev/null +++ b/constants/variables.inc @@ -0,0 +1,6 @@ + .equiv FACING, 0x800C + .equiv RESULT, 0x800D + .equiv ITEM_ID, 0x800E + .equiv LAST_TALKED, 0x800F + .equiv CONTEST_RANK, 0x8010 + .equiv CONTEST_CATEGORY, 0x8011 diff --git a/constants/version.inc b/constants/version.inc new file mode 100644 index 000000000..c93e439f4 --- /dev/null +++ b/constants/version.inc @@ -0,0 +1,91 @@ + .ifdef SAPPHIRE + .equiv GAME_VERSION, 1 + .else + .equiv GAME_VERSION, 2 + .endif + + .ifdef SAPPHIRE + .set BGM_EVIL_TEAM, BGM_AQA_0 + .set BGM_GOOD_TEAM, BGM_MGM0 + .else + .set BGM_EVIL_TEAM, BGM_MGM0 + .set BGM_GOOD_TEAM, BGM_AQA_0 + .endc + + .ifdef SAPPHIRE + .set ITEM_RED_OR_BLUE_ORB, ITEM_BLUE_ORB + .else + .set ITEM_RED_OR_BLUE_ORB, ITEM_RED_ORB + .endif + + .ifdef SAPPHIRE + .set SPECIES_GROUDON_OR_KYOGRE, SPECIES_KYOGRE + .else + .set SPECIES_GROUDON_OR_KYOGRE, SPECIES_GROUDON + .endif + + .ifdef SAPPHIRE + .set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIOS + .else + .set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIAS + .endif + + .ifdef SAPPHIRE + .set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_9 + .set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_15 + .set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_19 + .set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_20 + .set OPPONENT_514, OPPONENT_HECTOR_1 + .set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_MATT_2 + .set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_13 + .set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_1 + .set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_2 + .set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_3 + .set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_26 + .set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_MATT_1 + .set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_4 + .set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_27 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_5 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_6 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_SHELLY_2 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_7 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_ARCHIE_2 + .set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_ARCHIE_3 + .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_22 + .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_23 + .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_24 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_16 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_25 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_17 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_18 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_SHELLY_1 + .else + .set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_36 + .set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_42 + .set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_46 + .set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_47 + .set OPPONENT_514, OPPONENT_HECTOR_2 + .set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_TABITHA_2 + .set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_40 + .set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_28 + .set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_29 + .set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_30 + .set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_53 + .set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_TABITHA_1 + .set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_31 + .set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_54 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_32 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_33 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_COURTNEY_2 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_34 + .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_MAXIE_2 + .set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_MAXIE_3 + .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_49 + .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_50 + .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_51 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_43 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_52 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_44 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_45 + .set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_COURTNEY_1 + .endif diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s new file mode 100644 index 000000000..1ac2380d2 --- /dev/null +++ b/data/battle_ai_scripts.s @@ -0,0 +1,4 @@ + .section script_data, "aw", %progbits + +gUnknown_81D9BF4:: @ 81D9BF4 + .incbin "baserom.gba", 0x1D9BF4, 0x20FC diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s new file mode 100644 index 000000000..78267e5ea --- /dev/null +++ b/data/battle_anim_scripts.s @@ -0,0 +1,16 @@ + .section script_data, "aw", %progbits + +gUnknown_81C68EC:: @ 81C68EC + .incbin "baserom.gba", 0x1C68EC, 0x8 + +gUnknown_81C68F4:: @ 81C68F4 + .incbin "baserom.gba", 0x1C68F4, 0x590 + +gUnknown_81C6E84:: @ 81C6E84 + .incbin "baserom.gba", 0x1C6E84, 0x24 + +gUnknown_81C6EA8:: @ 81C6EA8 + .incbin "baserom.gba", 0x1C6EA8, 0x70 + +gUnknown_81C6F18:: @ 81C6F18 + .incbin "baserom.gba", 0x1C6F18, 0xF690 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s new file mode 100644 index 000000000..a3b44dc0d --- /dev/null +++ b/data/battle_scripts_1.s @@ -0,0 +1,523 @@ + .section script_data, "aw", %progbits + +gUnknown_81D65A8:: @ 81D65A8 + .incbin "baserom.gba", 0x1D65A8, 0x388 + +gUnknown_81D6930:: @ 81D6930 + .incbin "baserom.gba", 0x1D6930, 0x1E + +gUnknown_81D694E:: @ 81D694E + .incbin "baserom.gba", 0x1D694E, 0x12 + +gUnknown_81D6960:: @ 81D6960 + .incbin "baserom.gba", 0x1D6960, 0x271 + +gUnknown_81D6BD1:: @ 81D6BD1 + .incbin "baserom.gba", 0x1D6BD1, 0x91 + +gUnknown_81D6C62:: @ 81D6C62 + .incbin "baserom.gba", 0x1D6C62, 0x6E0 + +gUnknown_81D7342:: @ 81D7342 + .incbin "baserom.gba", 0x1D7342, 0xA75 + +gUnknown_81D7DB7:: @ 81D7DB7 + .incbin "baserom.gba", 0x1D7DB7, 0x1A + +gUnknown_81D7DD1:: @ 81D7DD1 + .incbin "baserom.gba", 0x1D7DD1, 0x21 + +gUnknown_81D7DF2:: @ 81D7DF2 + .incbin "baserom.gba", 0x1D7DF2, 0x882 + +gUnknown_81D8674:: @ 81D8674 + .incbin "baserom.gba", 0x1D8674, 0x10 + +gUnknown_81D8684:: @ 81D8684 + .incbin "baserom.gba", 0x1D8684, 0x10 + +gUnknown_81D8694:: @ 81D8694 + .incbin "baserom.gba", 0x1D8694, 0x9 + +gUnknown_81D869D:: @ 81D869D + .incbin "baserom.gba", 0x1D869D, 0x152 + +gUnknown_81D87EF:: @ 81D87EF + .incbin "baserom.gba", 0x1D87EF, 0x14 + +gUnknown_81D8803:: @ 81D8803 + .incbin "baserom.gba", 0x1D8803, 0x3 + +gUnknown_81D8806:: @ 81D8806 + .incbin "baserom.gba", 0x1D8806, 0xC6 + +gUnknown_81D88CC:: @ 81D88CC + .incbin "baserom.gba", 0x1D88CC, 0xB + +gUnknown_81D88D7:: @ 81D88D7 + .incbin "baserom.gba", 0x1D88D7, 0x2A + +gUnknown_81D8901:: @ 81D8901 + .incbin "baserom.gba", 0x1D8901, 0xE + +gUnknown_81D890F:: @ 81D890F + .incbin "baserom.gba", 0x1D890F, 0x7 + +gUnknown_81D8916:: @ 81D8916 + .incbin "baserom.gba", 0x1D8916, 0x7 + +gUnknown_81D891D:: @ 81D891D + .incbin "baserom.gba", 0x1D891D, 0x7 + +gUnknown_81D8924:: @ 81D8924 + .incbin "baserom.gba", 0x1D8924, 0x16 + +gUnknown_81D893A:: @ 81D893A + .incbin "baserom.gba", 0x1D893A, 0x9 + +gUnknown_81D8943:: @ 81D8943 + .incbin "baserom.gba", 0x1D8943, 0x6 + +gUnknown_81D8949:: @ 81D8949 + .incbin "baserom.gba", 0x1D8949, 0x4 + +gUnknown_81D894D:: @ 81D894D + .incbin "baserom.gba", 0x1D894D, 0xA4 + +gUnknown_81D89F1:: @ 81D89F1 + .incbin "baserom.gba", 0x1D89F1, 0x4 + +gUnknown_81D89F5:: @ 81D89F5 + .incbin "baserom.gba", 0x1D89F5, 0x6F + +gUnknown_81D8A64:: @ 81D8A64 + .incbin "baserom.gba", 0x1D8A64, 0x1B + +gUnknown_81D8A7F:: @ 81D8A7F + .incbin "baserom.gba", 0x1D8A7F, 0x82 + +gUnknown_81D8B01:: @ 81D8B01 + .incbin "baserom.gba", 0x1D8B01, 0x9 + +gUnknown_81D8B0A:: @ 81D8B0A + .incbin "baserom.gba", 0x1D8B0A, 0xE + +gUnknown_81D8B18:: @ 81D8B18 + .incbin "baserom.gba", 0x1D8B18, 0x7 + +gUnknown_81D8B1F:: @ 81D8B1F + .incbin "baserom.gba", 0x1D8B1F, 0x13 + +gUnknown_81D8B32:: @ 81D8B32 + .incbin "baserom.gba", 0x1D8B32, 0x11 + +gUnknown_81D8B43:: @ 81D8B43 + .incbin "baserom.gba", 0x1D8B43, 0xA + +gUnknown_81D8B4D:: @ 81D8B4D + .incbin "baserom.gba", 0x1D8B4D, 0x5C + +gUnknown_81D8BA9:: @ 81D8BA9 + .incbin "baserom.gba", 0x1D8BA9, 0xB + +gUnknown_81D8BB4:: @ 81D8BB4 + .incbin "baserom.gba", 0x1D8BB4, 0x48 + +gUnknown_81D8BFC:: @ 81D8BFC + .incbin "baserom.gba", 0x1D8BFC, 0x14 + +gUnknown_81D8C10:: @ 81D8C10 + .incbin "baserom.gba", 0x1D8C10, 0x2E + +gUnknown_81D8C3E:: @ 81D8C3E + .incbin "baserom.gba", 0x1D8C3E, 0xA + +gUnknown_81D8C48:: @ 81D8C48 + .incbin "baserom.gba", 0x1D8C48, 0x7 + +gUnknown_81D8C4F:: @ 81D8C4F + .incbin "baserom.gba", 0x1D8C4F, 0xB + +gUnknown_81D8C5A:: @ 81D8C5A + .incbin "baserom.gba", 0x1D8C5A, 0x4 + +gUnknown_81D8C5E:: @ 81D8C5E + .incbin "baserom.gba", 0x1D8C5E, 0x7 + +gUnknown_81D8C65:: @ 81D8C65 + .incbin "baserom.gba", 0x1D8C65, 0x7 + +gUnknown_81D8C6C:: @ 81D8C6C + .incbin "baserom.gba", 0x1D8C6C, 0x1B + +gUnknown_81D8C87:: @ 81D8C87 + .incbin "baserom.gba", 0x1D8C87, 0x37 + +gUnknown_81D8CBE:: @ 81D8CBE + .incbin "baserom.gba", 0x1D8CBE, 0x37 + +gUnknown_81D8CF5:: @ 81D8CF5 + .incbin "baserom.gba", 0x1D8CF5, 0x3E + +gUnknown_81D8D33:: @ 81D8D33 + .incbin "baserom.gba", 0x1D8D33, 0x1B + +gUnknown_81D8D4E:: @ 81D8D4E + .incbin "baserom.gba", 0x1D8D4E, 0x7 + +gUnknown_81D8D55:: @ 81D8D55 + .incbin "baserom.gba", 0x1D8D55, 0x9C + +gUnknown_81D8DF1:: @ 81D8DF1 + .incbin "baserom.gba", 0x1D8DF1, 0x2 + +gUnknown_81D8DF3:: @ 81D8DF3 + .incbin "baserom.gba", 0x1D8DF3, 0x11 + +gUnknown_81D8E04:: @ 81D8E04 + .incbin "baserom.gba", 0x1D8E04, 0x7 + +gUnknown_81D8E0B:: @ 81D8E0B + .incbin "baserom.gba", 0x1D8E0B, 0x7 + +gUnknown_81D8E12:: @ 81D8E12 + .incbin "baserom.gba", 0x1D8E12, 0x8E + +gUnknown_81D8EA0:: @ 81D8EA0 + .incbin "baserom.gba", 0x1D8EA0, 0x4 + +gUnknown_81D8EA4:: @ 81D8EA4 + .incbin "baserom.gba", 0x1D8EA4, 0x4 + +gUnknown_81D8EA8:: @ 81D8EA8 + .incbin "baserom.gba", 0x1D8EA8, 0xF + +gUnknown_81D8EB7:: @ 81D8EB7 + .incbin "baserom.gba", 0x1D8EB7, 0xF + +gUnknown_81D8EC6:: @ 81D8EC6 + .incbin "baserom.gba", 0x1D8EC6, 0x4 + +gUnknown_81D8ECA:: @ 81D8ECA + .incbin "baserom.gba", 0x1D8ECA, 0xB + +gUnknown_81D8ED5:: @ 81D8ED5 + .incbin "baserom.gba", 0x1D8ED5, 0x37 + +gUnknown_81D8F0C:: @ 81D8F0C + .incbin "baserom.gba", 0x1D8F0C, 0x29 + +gUnknown_81D8F35:: @ 81D8F35 + .incbin "baserom.gba", 0x1D8F35, 0x51 + +gUnknown_81D8F86:: @ 81D8F86 + .incbin "baserom.gba", 0x1D8F86, 0xE + +gUnknown_81D8F94:: @ 81D8F94 + .incbin "baserom.gba", 0x1D8F94, 0xB + +gUnknown_81D8F9F:: @ 81D8F9F + .incbin "baserom.gba", 0x1D8F9F, 0x4 + +gUnknown_81D8FA3:: @ 81D8FA3 + .incbin "baserom.gba", 0x1D8FA3, 0x7 + +gUnknown_81D8FAA:: @ 81D8FAA + .incbin "baserom.gba", 0x1D8FAA, 0x18 + +gUnknown_81D8FC2:: @ 81D8FC2 + .incbin "baserom.gba", 0x1D8FC2, 0x1B + +gUnknown_81D8FDD:: @ 81D8FDD + .incbin "baserom.gba", 0x1D8FDD, 0x7 + +gUnknown_81D8FE4:: @ 81D8FE4 + .incbin "baserom.gba", 0x1D8FE4, 0x7 + +gUnknown_81D8FEB:: @ 81D8FEB + .incbin "baserom.gba", 0x1D8FEB, 0x2A + +gUnknown_81D9015:: @ 81D9015 + .incbin "baserom.gba", 0x1D9015, 0x14 + +gUnknown_81D9029:: @ 81D9029 + .incbin "baserom.gba", 0x1D9029, 0xD + +gUnknown_81D9036:: @ 81D9036 + .incbin "baserom.gba", 0x1D9036, 0x14 + +gUnknown_81D904A:: @ 81D904A + .incbin "baserom.gba", 0x1D904A, 0x9 + +gUnknown_81D9053:: @ 81D9053 + .incbin "baserom.gba", 0x1D9053, 0x22 + +gUnknown_81D9075:: @ 81D9075 + .incbin "baserom.gba", 0x1D9075, 0xB + +gUnknown_81D9080:: @ 81D9080 + .incbin "baserom.gba", 0x1D9080, 0xD + +gUnknown_81D908D:: @ 81D908D + .incbin "baserom.gba", 0x1D908D, 0xB + +gUnknown_81D9098:: @ 81D9098 + .incbin "baserom.gba", 0x1D9098, 0x9 + +gUnknown_81D90A1:: @ 81D90A1 + .incbin "baserom.gba", 0x1D90A1, 0x10 + +gUnknown_81D90B1:: @ 81D90B1 + .incbin "baserom.gba", 0x1D90B1, 0xB + +gUnknown_81D90BC:: @ 81D90BC + .incbin "baserom.gba", 0x1D90BC, 0x9 + +gUnknown_81D90C5:: @ 81D90C5 + .incbin "baserom.gba", 0x1D90C5, 0xE + +gUnknown_81D90D3:: @ 81D90D3 + .incbin "baserom.gba", 0x1D90D3, 0x43 + +gUnknown_81D9116:: @ 81D9116 + .incbin "baserom.gba", 0x1D9116, 0x7 + +gUnknown_81D911D:: @ 81D911D + .incbin "baserom.gba", 0x1D911D, 0x7 + +gUnknown_81D9124:: @ 81D9124 + .incbin "baserom.gba", 0x1D9124, 0x12 + +gUnknown_81D9136:: @ 81D9136 + .incbin "baserom.gba", 0x1D9136, 0x7 + +gUnknown_81D913D:: @ 81D913D + .incbin "baserom.gba", 0x1D913D, 0xD + +gUnknown_81D914A:: @ 81D914A + .incbin "baserom.gba", 0x1D914A, 0xB + +gUnknown_81D9155:: @ 81D9155 + .incbin "baserom.gba", 0x1D9155, 0x11 + +gUnknown_81D9166:: @ 81D9166 + .incbin "baserom.gba", 0x1D9166, 0x11 + +gUnknown_81D9177:: @ 81D9177 + .incbin "baserom.gba", 0x1D9177, 0x9 + +gUnknown_81D9180:: @ 81D9180 + .incbin "baserom.gba", 0x1D9180, 0x12 + +gUnknown_81D9192:: @ 81D9192 + .incbin "baserom.gba", 0x1D9192, 0xF + +gUnknown_81D91A1:: @ 81D91A1 + .incbin "baserom.gba", 0x1D91A1, 0x26 + +gUnknown_81D91C7:: @ 81D91C7 + .incbin "baserom.gba", 0x1D91C7, 0xAA + +gUnknown_81D9271:: @ 81D9271 + .incbin "baserom.gba", 0x1D9271, 0xE + +gUnknown_81D927F:: @ 81D927F + .incbin "baserom.gba", 0x1D927F, 0x14 + +gUnknown_81D9293:: @ 81D9293 + .incbin "baserom.gba", 0x1D9293, 0xE + +gUnknown_81D92A1:: @ 81D92A1 + .incbin "baserom.gba", 0x1D92A1, 0xA + +gUnknown_81D92AB:: @ 81D92AB + .incbin "baserom.gba", 0x1D92AB, 0x14 + +gUnknown_81D92BF:: @ 81D92BF + .incbin "baserom.gba", 0x1D92BF, 0x14 + +gUnknown_81D92D3:: @ 81D92D3 + .incbin "baserom.gba", 0x1D92D3, 0x25 + +gUnknown_81D92F8:: @ 81D92F8 + .incbin "baserom.gba", 0x1D92F8, 0xF + +gUnknown_81D9307:: @ 81D9307 + .incbin "baserom.gba", 0x1D9307, 0x9 + +gUnknown_81D9310:: @ 81D9310 + .incbin "baserom.gba", 0x1D9310, 0x69 + +gUnknown_81D9379:: @ 81D9379 + .incbin "baserom.gba", 0x1D9379, 0x14 + +gUnknown_81D938D:: @ 81D938D + .incbin "baserom.gba", 0x1D938D, 0x14 + +gUnknown_81D93A1:: @ 81D93A1 + .incbin "baserom.gba", 0x1D93A1, 0xE + +gUnknown_81D93AF:: @ 81D93AF + .incbin "baserom.gba", 0x1D93AF, 0xE + +gUnknown_81D93BD:: @ 81D93BD + .incbin "baserom.gba", 0x1D93BD, 0x1 + +gUnknown_81D93BE:: @ 81D93BE + .incbin "baserom.gba", 0x1D93BE, 0x22 + +gUnknown_81D93E0:: @ 81D93E0 + .incbin "baserom.gba", 0x1D93E0, 0x1 + +gUnknown_81D93E1:: @ 81D93E1 + .incbin "baserom.gba", 0x1D93E1, 0x15 + +gUnknown_81D93F6:: @ 81D93F6 + .incbin "baserom.gba", 0x1D93F6, 0x1 + +gUnknown_81D93F7:: @ 81D93F7 + .incbin "baserom.gba", 0x1D93F7, 0x1F + +gUnknown_81D9416:: @ 81D9416 + .incbin "baserom.gba", 0x1D9416, 0xA + +gUnknown_81D9420:: @ 81D9420 + .incbin "baserom.gba", 0x1D9420, 0xC + +gUnknown_81D942C:: @ 81D942C + .incbin "baserom.gba", 0x1D942C, 0xC + +gUnknown_81D9438:: @ 81D9438 + .incbin "baserom.gba", 0x1D9438, 0xC + +gUnknown_81D9444:: @ 81D9444 + .incbin "baserom.gba", 0x1D9444, 0xE + +gUnknown_81D9452:: @ 81D9452 + .incbin "baserom.gba", 0x1D9452, 0x1C + +gUnknown_81D946E:: @ 81D946E + .incbin "baserom.gba", 0x1D946E, 0x10 + +gUnknown_81D947E:: @ 81D947E + .incbin "baserom.gba", 0x1D947E, 0x10 + +gUnknown_81D948E:: @ 81D948E + .incbin "baserom.gba", 0x1D948E, 0xE + +gUnknown_81D949C:: @ 81D949C + .incbin "baserom.gba", 0x1D949C, 0x7 + +gUnknown_81D94A3:: @ 81D94A3 + .incbin "baserom.gba", 0x1D94A3, 0x1B + +gUnknown_81D94BE:: @ 81D94BE + .incbin "baserom.gba", 0x1D94BE, 0xD + +gUnknown_81D94CB:: @ 81D94CB + .incbin "baserom.gba", 0x1D94CB, 0x3 + +gUnknown_81D94CE:: @ 81D94CE + .incbin "baserom.gba", 0x1D94CE, 0x3 + +gUnknown_81D94D1:: @ 81D94D1 + .incbin "baserom.gba", 0x1D94D1, 0x9 + +gUnknown_81D94DA:: @ 81D94DA + .incbin "baserom.gba", 0x1D94DA, 0x10 + +gUnknown_81D94EA:: @ 81D94EA + .incbin "baserom.gba", 0x1D94EA, 0x8 + +gUnknown_81D94F2:: @ 81D94F2 + .incbin "baserom.gba", 0x1D94F2, 0x12 + +gUnknown_81D9504:: @ 81D9504 + .incbin "baserom.gba", 0x1D9504, 0x17 + +gUnknown_81D951B:: @ 81D951B + .incbin "baserom.gba", 0x1D951B, 0xB + +gUnknown_81D9526:: @ 81D9526 + .incbin "baserom.gba", 0x1D9526, 0xB + +gUnknown_81D9531:: @ 81D9531 + .incbin "baserom.gba", 0x1D9531, 0x6 + +gUnknown_81D9537:: @ 81D9537 + .incbin "baserom.gba", 0x1D9537, 0x12 + +gUnknown_81D9549:: @ 81D9549 + .incbin "baserom.gba", 0x1D9549, 0x6 + +gUnknown_81D954F:: @ 81D954F + .incbin "baserom.gba", 0x1D954F, 0x12 + +gUnknown_81D9561:: @ 81D9561 + .incbin "baserom.gba", 0x1D9561, 0x6 + +gUnknown_81D9567:: @ 81D9567 + .incbin "baserom.gba", 0x1D9567, 0x12 + +gUnknown_81D9579:: @ 81D9579 + .incbin "baserom.gba", 0x1D9579, 0x6 + +gUnknown_81D957F:: @ 81D957F + .incbin "baserom.gba", 0x1D957F, 0x12 + +gUnknown_81D9591:: @ 81D9591 + .incbin "baserom.gba", 0x1D9591, 0x6 + +gUnknown_81D9597:: @ 81D9597 + .incbin "baserom.gba", 0x1D9597, 0x12 + +gUnknown_81D95A9:: @ 81D95A9 + .incbin "baserom.gba", 0x1D95A9, 0x6 + +gUnknown_81D95AF:: @ 81D95AF + .incbin "baserom.gba", 0x1D95AF, 0x10 + +gUnknown_81D95BF:: @ 81D95BF + .incbin "baserom.gba", 0x1D95BF, 0x6 + +gUnknown_81D95C5:: @ 81D95C5 + .incbin "baserom.gba", 0x1D95C5, 0x14 + +gUnknown_81D95D9:: @ 81D95D9 + .incbin "baserom.gba", 0x1D95D9, 0x6 + +gUnknown_81D95DF:: @ 81D95DF + .incbin "baserom.gba", 0x1D95DF, 0x10 + +gUnknown_81D95EF:: @ 81D95EF + .incbin "baserom.gba", 0x1D95EF, 0x1D + +gUnknown_81D960C:: @ 81D960C + .incbin "baserom.gba", 0x1D960C, 0x10 + +gUnknown_81D961C:: @ 81D961C + .incbin "baserom.gba", 0x1D961C, 0x6 + +gUnknown_81D9622:: @ 81D9622 + .incbin "baserom.gba", 0x1D9622, 0x1B + +gUnknown_81D963D:: @ 81D963D + .incbin "baserom.gba", 0x1D963D, 0x4 + +gUnknown_81D9641:: @ 81D9641 + .incbin "baserom.gba", 0x1D9641, 0xE + +gUnknown_81D964F:: @ 81D964F + .incbin "baserom.gba", 0x1D964F, 0x2A + +gUnknown_81D9679:: @ 81D9679 + .incbin "baserom.gba", 0x1D9679, 0x1B + +gUnknown_81D9694:: @ 81D9694 + .incbin "baserom.gba", 0x1D9694, 0x10 + +gUnknown_81D96A4:: @ 81D96A4 + .incbin "baserom.gba", 0x1D96A4, 0x4 + +gUnknown_81D96A8:: @ 81D96A8 + .incbin "baserom.gba", 0x1D96A8, 0x4 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s new file mode 100644 index 000000000..d9cd0829c --- /dev/null +++ b/data/battle_scripts_2.s @@ -0,0 +1,28 @@ + .section script_data, "aw", %progbits + +gUnknown_81D99B0:: @ 81D99B0 + .incbin "baserom.gba", 0x1D99B0, 0x34 + +gUnknown_81D99E4:: @ 81D99E4 + .incbin "baserom.gba", 0x1D99E4, 0x18 + +gUnknown_81D99FC:: @ 81D99FC + .incbin "baserom.gba", 0x1D99FC, 0x8 + +gUnknown_81D9A04:: @ 81D9A04 + .incbin "baserom.gba", 0x1D9A04, 0x3E + +gUnknown_81D9A42:: @ 81D9A42 + .incbin "baserom.gba", 0x1D9A42, 0x46 + +gUnknown_81D9A88:: @ 81D9A88 + .incbin "baserom.gba", 0x1D9A88, 0xB + +gUnknown_81D9A93:: @ 81D9A93 + .incbin "baserom.gba", 0x1D9A93, 0x2E + +gUnknown_81D9AC1:: @ 81D9AC1 + .incbin "baserom.gba", 0x1D9AC1, 0x10 + +gUnknown_81D9AD1:: @ 81D9AD1 + .incbin "baserom.gba", 0x1D9AD1, 0x123 diff --git a/data/data.s b/data/data.s new file mode 100644 index 000000000..05ba21574 --- /dev/null +++ b/data/data.s @@ -0,0 +1,8872 @@ + .section .rodata + +gUnknown_81E9F10:: @ 81E9F10 + .incbin "baserom.gba", 0x1E9F10, 0x1 + +gUnknown_81E9F11:: @ 81E9F11 + .incbin "baserom.gba", 0x1E9F11, 0x17 + +gUnknown_81E9F28:: @ 81E9F28 + .incbin "baserom.gba", 0x1E9F28, 0x38 + +gUnknown_81E9F60:: @ 81E9F60 + .incbin "baserom.gba", 0x1E9F60, 0x4 + +gUnknown_81E9F64:: @ 81E9F64 + .incbin "baserom.gba", 0x1E9F64, 0x4 + +gUnknown_81E9F68:: @ 81E9F68 + .incbin "baserom.gba", 0x1E9F68, 0x38 + +gUnknown_81E9FA0:: @ 81E9FA0 + .incbin "baserom.gba", 0x1E9FA0, 0x4 + +gUnknown_81E9FA4:: @ 81E9FA4 + .incbin "baserom.gba", 0x1E9FA4, 0xC + +gUnknown_81E9FB0:: @ 81E9FB0 + .incbin "baserom.gba", 0x1E9FB0, 0x28 + +gUnknown_81E9FD8:: @ 81E9FD8 + .incbin "baserom.gba", 0x1E9FD8, 0x14 + +gUnknown_81E9FEC:: @ 81E9FEC + .incbin "baserom.gba", 0x1E9FEC, 0x2C + +gUnknown_81EA018:: @ 81EA018 + .incbin "baserom.gba", 0x1EA018, 0x2C + +gUnknown_81EA044:: @ 81EA044 + .incbin "baserom.gba", 0x1EA044, 0x100 + +gUnknown_81EA144:: @ 81EA144 + .incbin "baserom.gba", 0x1EA144, 0x8 + +gUnknown_81EA14C:: @ 81EA14C + .incbin "baserom.gba", 0x1EA14C, 0x100 + +gUnknown_81EA24C:: @ 81EA24C + .incbin "baserom.gba", 0x1EA24C, 0x400 + +gUnknown_81EA64C:: @ 81EA64C + .incbin "baserom.gba", 0x1EA64C, 0x4 + +gUnknown_81EA650:: @ 81EA650 + .incbin "baserom.gba", 0x1EA650, 0x4 + +gUnknown_81EA654:: @ 81EA654 + .incbin "baserom.gba", 0x1EA654, 0x38 + +gUnknown_81EA68C:: @ 81EA68C + .incbin "baserom.gba", 0x1EA68C, 0x18 + +gUnknown_81EA6A4:: @ 81EA6A4 + .incbin "baserom.gba", 0x1EA6A4, 0x10 + +gUnknown_81EA6B4:: @ 81EA6B4 + .incbin "baserom.gba", 0x1EA6B4, 0x18 + +gUnknown_81EA6CC:: @ 81EA6CC + .incbin "baserom.gba", 0x1EA6CC, 0x34 + +gUnknown_81EA700:: @ 81EA700 + .incbin "baserom.gba", 0x1EA700, 0x800 + +gUnknown_81EAF00:: @ 81EAF00 + .incbin "baserom.gba", 0x1EAF00, 0x4000 + +gUnknown_81EEF00:: @ 81EEF00 + .incbin "baserom.gba", 0x1EEF00, 0x200 + +gUnknown_81EF100:: @ 81EF100 + .incbin "baserom.gba", 0x1EF100, 0x4000 + +gUnknown_81F3100:: @ 81F3100 + .incbin "baserom.gba", 0x1F3100, 0x8000 + +gUnknown_81FB100:: @ 81FB100 + .incbin "baserom.gba", 0x1FB100, 0x200 + +gUnknown_81FB300:: @ 81FB300 + .incbin "baserom.gba", 0x1FB300, 0x4000 + +gUnknown_81FF300:: @ 81FF300 + .incbin "baserom.gba", 0x1FF300, 0x8000 + +gUnknown_8207300:: @ 8207300 + .incbin "baserom.gba", 0x207300, 0x200 + +gUnknown_8207500:: @ 8207500 + .incbin "baserom.gba", 0x207500, 0x8000 + +gUnknown_820F500:: @ 820F500 + .incbin "baserom.gba", 0x20F500, 0x118 + +gUnknown_820F618:: @ 820F618 + .incbin "baserom.gba", 0x20F618, 0x8000 + +gUnknown_8217618:: @ 8217618 + .incbin "baserom.gba", 0x217618, 0x200 + +gUnknown_8217818:: @ 8217818 + .incbin "baserom.gba", 0x217818, 0x8000 + +gUnknown_821F818:: @ 821F818 + .incbin "baserom.gba", 0x21F818, 0x118 + +gUnknown_821F930:: @ 821F930 + .incbin "baserom.gba", 0x21F930, 0x8000 + +gUnknown_8227930:: @ 8227930 + .incbin "baserom.gba", 0x227930, 0x200 + +gUnknown_8227B30:: @ 8227B30 + .incbin "baserom.gba", 0x227B30, 0x8000 + +gUnknown_822FB30:: @ 822FB30 + .incbin "baserom.gba", 0x22FB30, 0x118 + +gUnknown_822FC48:: @ 822FC48 + .incbin "baserom.gba", 0x22FC48, 0x203D + +gUnknown_8231C85:: @ 8231C85 + .incbin "baserom.gba", 0x231C85, 0x1B + +gUnknown_8231CA0:: @ 8231CA0 + .incbin "baserom.gba", 0x231CA0, 0x44 + +gUnknown_8231CE4:: @ 8231CE4 + .incbin "baserom.gba", 0x231CE4, 0xC + +gUnknown_8231CF0:: @ 8231CF0 + .incbin "baserom.gba", 0x231CF0, 0xC + +gUnknown_8231CFC:: @ 8231CFC + .incbin "baserom.gba", 0x231CFC, 0x4 + +gUnknown_8231D00:: @ 8231D00 + .incbin "baserom.gba", 0x231D00, 0x18 + +gUnknown_8231D18:: @ 8231D18 + .incbin "baserom.gba", 0x231D18, 0x8 + +gUnknown_8231D20:: @ 8231D20 + .incbin "baserom.gba", 0x231D20, 0x8 + +gUnknown_8231D28:: @ 8231D28 + .incbin "baserom.gba", 0x231D28, 0x10 + +gUnknown_8231D38:: @ 8231D38 + .incbin "baserom.gba", 0x231D38, 0x10 + +gUnknown_8231D48:: @ 8231D48 + .incbin "baserom.gba", 0x231D48, 0x60 + +gUnknown_8231DA8:: @ 8231DA8 + .incbin "baserom.gba", 0x231DA8, 0x68 + +gUnknown_8231E10:: @ 8231E10 + .incbin "baserom.gba", 0x231E10, 0x10 + +gUnknown_8231E20:: @ 8231E20 + .incbin "baserom.gba", 0x231E20, 0xC + +gUnknown_8231E2C:: @ 8231E2C + .incbin "baserom.gba", 0x231E2C, 0x10 + +gUnknown_8231E3C:: @ 8231E3C + .incbin "baserom.gba", 0x231E3C, 0x28 + +gUnknown_8231E64:: @ 8231E64 + .incbin "baserom.gba", 0x231E64, 0x4 + +gUnknown_8231E68:: @ 8231E68 + .incbin "baserom.gba", 0x231E68, 0x8 + +gUnknown_8231E70:: @ 8231E70 + .incbin "baserom.gba", 0x231E70, 0x38 + +gUnknown_8231EA8:: @ 8231EA8 + .incbin "baserom.gba", 0x231EA8, 0x1C + +gUnknown_8231EC4:: @ 8231EC4 + .incbin "baserom.gba", 0x231EC4, 0x20 + +gUnknown_8231EE4:: @ 8231EE4 + .incbin "baserom.gba", 0x231EE4, 0x4A8 + +gUnknown_823238C:: @ 823238C + .incbin "baserom.gba", 0x23238C, 0x1EC + +gUnknown_8232578:: @ 8232578 + .incbin "baserom.gba", 0x232578, 0x20 + +gUnknown_8232598:: @ 8232598 + .incbin "baserom.gba", 0x232598, 0x2000 + +gUnknown_8234598:: @ 8234598 + .incbin "baserom.gba", 0x234598, 0x28 + +gUnknown_82345C0:: @ 82345C0 + .incbin "baserom.gba", 0x2345C0, 0x10 + +gUnknown_82345D0:: @ 82345D0 + .incbin "baserom.gba", 0x2345D0, 0x18 + +gUnknown_82345E8:: @ 82345E8 + .incbin "baserom.gba", 0x2345E8, 0x8 + +gUnknown_82345F0:: @ 82345F0 + .incbin "baserom.gba", 0x2345F0, 0x20 + +gUnknown_8234610:: @ 8234610 + .incbin "baserom.gba", 0x234610, 0x8 + +gUnknown_8234618:: @ 8234618 + .incbin "baserom.gba", 0x234618, 0x8 + +gUnknown_8234620:: @ 8234620 + .incbin "baserom.gba", 0x234620, 0x18 + +gUnknown_8234638:: @ 8234638 + .incbin "baserom.gba", 0x234638, 0x10 + +gUnknown_8234648:: @ 8234648 + .incbin "baserom.gba", 0x234648, 0x20 + +gUnknown_8234668:: @ 8234668 + .incbin "baserom.gba", 0x234668, 0x20 + +gUnknown_8234688:: @ 8234688 + .incbin "baserom.gba", 0x234688, 0x3 + +gUnknown_823468B:: @ 823468B + .incbin "baserom.gba", 0x23468B, 0x5 + +gUnknown_8234690:: @ 8234690 + .incbin "baserom.gba", 0x234690, 0x4 + +gUnknown_8234694:: @ 8234694 + .incbin "baserom.gba", 0x234694, 0x328 + +gUnknown_82349BC:: @ 82349BC + .incbin "baserom.gba", 0x2349BC, 0x10 + +gUnknown_82349CC:: @ 82349CC + .incbin "baserom.gba", 0x2349CC, 0x6E0 + +gUnknown_82350AC:: @ 82350AC + .incbin "baserom.gba", 0x2350AC, 0xE8 + +gUnknown_8235194:: @ 8235194 + .incbin "baserom.gba", 0x235194, 0xCD8 + +gUnknown_8235E6C:: @ 8235E6C + .incbin "baserom.gba", 0x235E6C, 0x6E0 + +gUnknown_823654C:: @ 823654C + .incbin "baserom.gba", 0x23654C, 0xDC0 + +gUnknown_823730C:: @ 823730C + .incbin "baserom.gba", 0x23730C, 0xE8 + +gUnknown_82373F4:: @ 82373F4 + .incbin "baserom.gba", 0x2373F4, 0xCD8 + +gUnknown_82380CC:: @ 82380CC + .incbin "baserom.gba", 0x2380CC, 0x1010 + +gUnknown_82390DC:: @ 82390DC + .incbin "baserom.gba", 0x2390DC, 0x250 + +gUnknown_823932C:: @ 823932C + .incbin "baserom.gba", 0x23932C, 0x250 + +gUnknown_823957C:: @ 823957C + .incbin "baserom.gba", 0x23957C, 0x4A0 + +gUnknown_8239A1C:: @ 8239A1C + .incbin "baserom.gba", 0x239A1C, 0x558 + +gUnknown_8239F74:: @ 8239F74 + .incbin "baserom.gba", 0x239F74, 0x18 + +gUnknown_8239F8C:: @ 8239F8C + .incbin "baserom.gba", 0x239F8C, 0x18 + +gUnknown_8239FA4:: @ 8239FA4 + .incbin "baserom.gba", 0x239FA4, 0x30 + +gUnknown_8239FD4:: @ 8239FD4 + .incbin "baserom.gba", 0x239FD4, 0x30 + +gUnknown_823A004:: @ 823A004 + .incbin "baserom.gba", 0x23A004, 0x4554 + +gUnknown_823E558:: @ 823E558 + .incbin "baserom.gba", 0x23E558, 0x570 + +gUnknown_823EAC8:: @ 823EAC8 + .incbin "baserom.gba", 0x23EAC8, 0x4 + +gUnknown_823EACC:: @ 823EACC + .incbin "baserom.gba", 0x23EACC, 0xC + +gUnknown_823EAD8:: @ 823EAD8 + .incbin "baserom.gba", 0x23EAD8, 0x7408 + +gUnknown_8245EE0:: @ 8245EE0 + .incbin "baserom.gba", 0x245EE0, 0xD05 + +gUnknown_8246BE5:: @ 8246BE5 + .incbin "baserom.gba", 0x246BE5, 0x4AF + +gUnknown_8247094:: @ 8247094 + .incbin "baserom.gba", 0x247094, 0xF97 + +gUnknown_824802B:: @ 824802B + .incbin "baserom.gba", 0x24802B, 0xD + +gUnknown_8248038:: @ 8248038 + .incbin "baserom.gba", 0x248038, 0x186 + +gUnknown_82481BE:: @ 82481BE + .incbin "baserom.gba", 0x2481BE, 0x12A + +gUnknown_82482E8:: @ 82482E8 + .incbin "baserom.gba", 0x2482E8, 0x18 + +gUnknown_8248300:: @ 8248300 + .incbin "baserom.gba", 0x248300, 0x18 + +gUnknown_8248318:: @ 8248318 + .incbin "baserom.gba", 0x248318, 0x8 + +gUnknown_8248320:: @ 8248320 + .incbin "baserom.gba", 0x248320, 0x10 + +gUnknown_8248330:: @ 8248330 + .incbin "baserom.gba", 0x248330, 0x6B04 + +gUnknown_824EE34:: @ 824EE34 + .incbin "baserom.gba", 0x24EE34, 0x190 + +gUnknown_824EFC4:: @ 824EFC4 + .incbin "baserom.gba", 0x24EFC4, 0x20 + +gUnknown_824EFE4:: @ 824EFE4 + .incbin "baserom.gba", 0x24EFE4, 0xC + +gUnknown_824EFF0:: @ 824EFF0 + .incbin "baserom.gba", 0x24EFF0, 0x18 + +gUnknown_824F008:: @ 824F008 + .incbin "baserom.gba", 0x24F008, 0x40 + +gUnknown_824F048:: @ 824F048 + .incbin "baserom.gba", 0x24F048, 0x8 + +gUnknown_824F050:: @ 824F050 + .incbin "baserom.gba", 0x24F050, 0x150 + +gUnknown_824F1A0:: @ 824F1A0 + .incbin "baserom.gba", 0x24F1A0, 0x80 + +gUnknown_824F220:: @ 824F220 + .incbin "baserom.gba", 0x24F220, 0x8E8 + +gUnknown_824FB08:: @ 824FB08 + .incbin "baserom.gba", 0x24FB08, 0x138 + +gUnknown_824FC40:: @ 824FC40 + .incbin "baserom.gba", 0x24FC40, 0x3F8 + +gUnknown_8250038:: @ 8250038 + .incbin "baserom.gba", 0x250038, 0x38 + +gUnknown_8250070:: @ 8250070 + .incbin "baserom.gba", 0x250070, 0x24 + +gUnknown_8250094:: @ 8250094 + .incbin "baserom.gba", 0x250094, 0x8 + +gUnknown_825009C:: @ 825009C + .incbin "baserom.gba", 0x25009C, 0x8 + +gUnknown_82500A4:: @ 82500A4 + .incbin "baserom.gba", 0x2500A4, 0x8 + +gUnknown_82500AC:: @ 82500AC + .incbin "baserom.gba", 0x2500AC, 0x8 + +gUnknown_82500B4:: @ 82500B4 + .incbin "baserom.gba", 0x2500B4, 0x8 + +gUnknown_82500BC:: @ 82500BC + .incbin "baserom.gba", 0x2500BC, 0x8 + +gUnknown_82500C4:: @ 82500C4 + .incbin "baserom.gba", 0x2500C4, 0x8 + +gUnknown_82500CC:: @ 82500CC + .incbin "baserom.gba", 0x2500CC, 0x38 + +gUnknown_8250104:: @ 8250104 + .incbin "baserom.gba", 0x250104, 0x18 + +gUnknown_825011C:: @ 825011C + .incbin "baserom.gba", 0x25011C, 0x3E0 + +gUnknown_82504FC:: @ 82504FC + .incbin "baserom.gba", 0x2504FC, 0x34 + +gUnknown_8250530:: @ 8250530 + .incbin "baserom.gba", 0x250530, 0xC + +gUnknown_825053C:: @ 825053C + .incbin "baserom.gba", 0x25053C, 0xF0 + +gUnknown_825062C:: @ 825062C + .incbin "baserom.gba", 0x25062C, 0xA4 + +gUnknown_82506D0:: @ 82506D0 + .incbin "baserom.gba", 0x2506D0, 0x20 + +gUnknown_82506F0:: @ 82506F0 + .incbin "baserom.gba", 0x2506F0, 0xD8 + +gUnknown_82507C8:: @ 82507C8 + .incbin "baserom.gba", 0x2507C8, 0x18 + +gUnknown_82507E0:: @ 82507E0 + .incbin "baserom.gba", 0x2507E0, 0x8 + +gUnknown_82507E8:: @ 82507E8 + .incbin "baserom.gba", 0x2507E8, 0x28 + +gUnknown_8250810:: @ 8250810 + .incbin "baserom.gba", 0x250810, 0xC + +gUnknown_825081C:: @ 825081C + .incbin "baserom.gba", 0x25081C, 0x14 + +gUnknown_8250830:: @ 8250830 + .incbin "baserom.gba", 0x250830, 0x18 + +gUnknown_8250848:: @ 8250848 + .incbin "baserom.gba", 0x250848, 0x40 + +gUnknown_8250888:: @ 8250888 + .incbin "baserom.gba", 0x250888, 0xA + +gUnknown_8250892:: @ 8250892 + .incbin "baserom.gba", 0x250892, 0xA + +gUnknown_825089C:: @ 825089C + .incbin "baserom.gba", 0x25089C, 0xE4 + +gUnknown_8250980:: @ 8250980 + .incbin "baserom.gba", 0x250980, 0xC + +gUnknown_825098C:: @ 825098C + .incbin "baserom.gba", 0x25098C, 0x8 + +gUnknown_8250994:: @ 8250994 + .incbin "baserom.gba", 0x250994, 0x60 + +gUnknown_82509F4:: @ 82509F4 + .incbin "baserom.gba", 0x2509F4, 0x18 + +gUnknown_8250A0C:: @ 8250A0C + .incbin "baserom.gba", 0x250A0C, 0x10 + +gUnknown_8250A1C:: @ 8250A1C + .incbin "baserom.gba", 0x250A1C, 0x18 + +gUnknown_8250A34:: @ 8250A34 + .incbin "baserom.gba", 0x250A34, 0xEC + +gUnknown_8250B20:: @ 8250B20 + .incbin "baserom.gba", 0x250B20, 0xE4 + +gUnknown_8250C04:: @ 8250C04 + .incbin "baserom.gba", 0x250C04, 0x4 + +gUnknown_8250C08:: @ 8250C08 + .incbin "baserom.gba", 0x250C08, 0x10B0 + +gUnknown_8251CB8:: @ 8251CB8 + .incbin "baserom.gba", 0x251CB8, 0x336 + +gUnknown_8251FEE:: @ 8251FEE + .incbin "baserom.gba", 0x251FEE, 0x336 + +gUnknown_8252324:: @ 8252324 + .incbin "baserom.gba", 0x252324, 0x338 + +gUnknown_825265C:: @ 825265C + .incbin "baserom.gba", 0x25265C, 0x2 + +gUnknown_825265E:: @ 825265E + .incbin "baserom.gba", 0x25265E, 0x25E + +gUnknown_82528BC:: @ 82528BC + .incbin "baserom.gba", 0x2528BC, 0x28C + +gUnknown_8252B48:: @ 8252B48 + .incbin "baserom.gba", 0x252B48, 0x80 + +gUnknown_8252BC8:: @ 8252BC8 + .incbin "baserom.gba", 0x252BC8, 0xCE0 + +gUnknown_82538A8:: @ 82538A8 + .incbin "baserom.gba", 0x2538A8, 0x96 + +gUnknown_825393E:: @ 825393E + .incbin "baserom.gba", 0x25393E, 0x96 + +gUnknown_82539D4:: @ 82539D4 + .incbin "baserom.gba", 0x2539D4, 0x110 + +gUnknown_8253AE4:: @ 8253AE4 + .incbin "baserom.gba", 0x253AE4, 0xCA0 + +gUnknown_8254784:: @ 8254784 + .incbin "baserom.gba", 0x254784, 0x11 + +gUnknown_8254795:: @ 8254795 + .incbin "baserom.gba", 0x254795, 0x4FBF + +gUnknown_8259754:: @ 8259754 + .incbin "baserom.gba", 0x259754, 0x4060 + +gUnknown_825D7B4:: @ 825D7B4 + .incbin "baserom.gba", 0x25D7B4, 0x670 + +gUnknown_825DE24:: @ 825DE24 + .incbin "baserom.gba", 0x25DE24, 0x7D + +gUnknown_825DEA1:: @ 825DEA1 + .incbin "baserom.gba", 0x25DEA1, 0x4 + +gUnknown_825DEA5:: @ 825DEA5 + .incbin "baserom.gba", 0x25DEA5, 0x4 + +gUnknown_825DEA9:: @ 825DEA9 + .incbin "baserom.gba", 0x25DEA9, 0x4 + +gUnknown_825DEAD:: @ 825DEAD + .incbin "baserom.gba", 0x25DEAD, 0x1F + +gUnknown_825DECC:: @ 825DECC + .incbin "baserom.gba", 0x25DECC, 0x24 + +gUnknown_825DEF0:: @ 825DEF0 + .incbin "baserom.gba", 0x25DEF0, 0x60 + +gUnknown_825DF50:: @ 825DF50 + .incbin "baserom.gba", 0x25DF50, 0x90 + +gUnknown_825DFE0:: @ 825DFE0 + .incbin "baserom.gba", 0x25DFE0, 0xA + +gUnknown_825DFEA:: @ 825DFEA + .incbin "baserom.gba", 0x25DFEA, 0x6 + +gUnknown_825DFF0:: @ 825DFF0 + .incbin "baserom.gba", 0x25DFF0, 0x6 + +gUnknown_825DFF6:: @ 825DFF6 + .incbin "baserom.gba", 0x25DFF6, 0x1E + +gUnknown_825E014:: @ 825E014 + .incbin "baserom.gba", 0x25E014, 0x12 + +gUnknown_825E026:: @ 825E026 + .incbin "baserom.gba", 0x25E026, 0xC + +gUnknown_825E032:: @ 825E032 + .incbin "baserom.gba", 0x25E032, 0x2A + +gUnknown_825E05C:: @ 825E05C + .incbin "baserom.gba", 0x25E05C, 0x18 + +gUnknown_825E074:: @ 825E074 + .incbin "baserom.gba", 0x25E074, 0x280 + +gUnknown_825E2F4:: @ 825E2F4 + .incbin "baserom.gba", 0x25E2F4, 0x168 + +gUnknown_825E45C:: @ 825E45C + .incbin "baserom.gba", 0x25E45C, 0x80 + +gUnknown_825E4DC:: @ 825E4DC + .incbin "baserom.gba", 0x25E4DC, 0x18 + +gUnknown_825E4F4:: @ 825E4F4 + .incbin "baserom.gba", 0x25E4F4, 0x18 + +gUnknown_825E50C:: @ 825E50C + .incbin "baserom.gba", 0x25E50C, 0xA00 + +gUnknown_825EF0C:: @ 825EF0C + .incbin "baserom.gba", 0x25EF0C, 0x8E8 + +gUnknown_825F7F4:: @ 825F7F4 + .incbin "baserom.gba", 0x25F7F4, 0x20 + +gUnknown_825F814:: @ 825F814 + .incbin "baserom.gba", 0x25F814, 0x18 + +gUnknown_825F82C:: @ 825F82C + .incbin "baserom.gba", 0x25F82C, 0x10 + +gUnknown_825F83C:: @ 825F83C + .incbin "baserom.gba", 0x25F83C, 0x2 + +gUnknown_825F83E:: @ 825F83E + .incbin "baserom.gba", 0x25F83E, 0x8DE + +gUnknown_826011C:: @ 826011C + .incbin "baserom.gba", 0x26011C, 0x8 + +gUnknown_8260124:: @ 8260124 + .incbin "baserom.gba", 0x260124, 0x8 + +gUnknown_826012C:: @ 826012C + .incbin "baserom.gba", 0x26012C, 0x8 + +gUnknown_8260134:: @ 8260134 + .incbin "baserom.gba", 0x260134, 0x50 + +gUnknown_8260184:: @ 8260184 + .incbin "baserom.gba", 0x260184, 0x18 + +gUnknown_826019C:: @ 826019C + .incbin "baserom.gba", 0x26019C, 0x8 + +gUnknown_82601A4:: @ 82601A4 + .incbin "baserom.gba", 0x2601A4, 0x10 + +gUnknown_82601B4:: @ 82601B4 + .incbin "baserom.gba", 0x2601B4, 0x8 + +gUnknown_82601BC:: @ 82601BC + .incbin "baserom.gba", 0x2601BC, 0x4C + +gUnknown_8260208:: @ 8260208 + .incbin "baserom.gba", 0x260208, 0x8 + +gUnknown_8260210:: @ 8260210 + .incbin "baserom.gba", 0x260210, 0x8 + +gUnknown_8260218:: @ 8260218 + .incbin "baserom.gba", 0x260218, 0x8 + +gUnknown_8260220:: @ 8260220 + .incbin "baserom.gba", 0x260220, 0x8 + +gUnknown_8260228:: @ 8260228 + .incbin "baserom.gba", 0x260228, 0x8 + +gUnknown_8260230:: @ 8260230 + .incbin "baserom.gba", 0x260230, 0x8 + +gUnknown_8260238:: @ 8260238 + .incbin "baserom.gba", 0x260238, 0x8 + +gUnknown_8260240:: @ 8260240 + .incbin "baserom.gba", 0x260240, 0x20 + +gUnknown_8260260:: @ 8260260 + .incbin "baserom.gba", 0x260260, 0x18 + +gUnknown_8260278:: @ 8260278 + .incbin "baserom.gba", 0x260278, 0x30 + +gUnknown_82602A8:: @ 82602A8 + .incbin "baserom.gba", 0x2602A8, 0x30 + +gUnknown_82602D8:: @ 82602D8 + .incbin "baserom.gba", 0x2602D8, 0x20 + +gUnknown_82602F8:: @ 82602F8 + .incbin "baserom.gba", 0x2602F8, 0xCC + +gUnknown_82603C4:: @ 82603C4 + .incbin "baserom.gba", 0x2603C4, 0x38 + +gUnknown_82603FC:: @ 82603FC + .incbin "baserom.gba", 0x2603FC, 0x8 + +gUnknown_8260404:: @ 8260404 + .incbin "baserom.gba", 0x260404, 0x68 + +gUnknown_826046C:: @ 826046C + .incbin "baserom.gba", 0x26046C, 0x10 + +gUnknown_826047C:: @ 826047C + .incbin "baserom.gba", 0x26047C, 0x10 + +gUnknown_826048C:: @ 826048C + .incbin "baserom.gba", 0x26048C, 0x10 + +gUnknown_826049C:: @ 826049C + .incbin "baserom.gba", 0x26049C, 0x20 + +gUnknown_82604BC:: @ 82604BC + .incbin "baserom.gba", 0x2604BC, 0x30 + +gUnknown_82604EC:: @ 82604EC + .incbin "baserom.gba", 0x2604EC, 0x30 + +gUnknown_826051C:: @ 826051C + .incbin "baserom.gba", 0x26051C, 0x10 + +gUnknown_826052C:: @ 826052C + .incbin "baserom.gba", 0x26052C, 0x14 + +gUnknown_8260540:: @ 8260540 + .incbin "baserom.gba", 0x260540, 0x2 + +gUnknown_8260542:: @ 8260542 + .incbin "baserom.gba", 0x260542, 0x14 + +gUnknown_8260556:: @ 8260556 + .incbin "baserom.gba", 0x260556, 0x4 + +gUnknown_826055A:: @ 826055A + .incbin "baserom.gba", 0x26055A, 0xA + +gUnknown_8260564:: @ 8260564 + .incbin "baserom.gba", 0x260564, 0x8 + +gUnknown_826056C:: @ 826056C + .incbin "baserom.gba", 0x26056C, 0x60 + +gUnknown_82605CC:: @ 82605CC + .incbin "baserom.gba", 0x2605CC, 0x128 + +gUnknown_82606F4:: @ 82606F4 + .incbin "baserom.gba", 0x2606F4, 0x140 + +gUnknown_8260834:: @ 8260834 + .incbin "baserom.gba", 0x260834, 0x1FE + +gUnknown_8260A32:: @ 8260A32 + .incbin "baserom.gba", 0x260A32, 0x1FE + +gUnknown_8260C30:: @ 8260C30 + .incbin "baserom.gba", 0x260C30, 0x800 + +gUnknown_8261430:: @ 8261430 + .incbin "baserom.gba", 0x261430, 0x828 + +gUnknown_8261C58:: @ 8261C58 + .incbin "baserom.gba", 0x261C58, 0x8 + +gUnknown_8261C60:: @ 8261C60 + .incbin "baserom.gba", 0x261C60, 0x50 + +gUnknown_8261CB0:: @ 8261CB0 + .incbin "baserom.gba", 0x261CB0, 0x18 + +gUnknown_8261CC8:: @ 8261CC8 + .incbin "baserom.gba", 0x261CC8, 0x38 + +gUnknown_8261D00:: @ 8261D00 + .incbin "baserom.gba", 0x261D00, 0x8 + +gUnknown_8261D08:: @ 8261D08 + .incbin "baserom.gba", 0x261D08, 0x138 + +gUnknown_8261E40:: @ 8261E40 + .incbin "baserom.gba", 0x261E40, 0x1A + +gUnknown_8261E5A:: @ 8261E5A + .incbin "baserom.gba", 0x261E5A, 0x18 + +gUnknown_8261E72:: @ 8261E72 + .incbin "baserom.gba", 0x261E72, 0x18 + +gUnknown_8261E8A:: @ 8261E8A + .incbin "baserom.gba", 0x261E8A, 0x2C + +gUnknown_8261EB6:: @ 8261EB6 + .incbin "baserom.gba", 0x261EB6, 0xB + +gUnknown_8261EC1:: @ 8261EC1 + .incbin "baserom.gba", 0x261EC1, 0x2 + +gUnknown_8261EC3:: @ 8261EC3 + .incbin "baserom.gba", 0x261EC3, 0x2 + +gUnknown_8261EC5:: @ 8261EC5 + .incbin "baserom.gba", 0x261EC5, 0x2 + +gUnknown_8261EC7:: @ 8261EC7 + .incbin "baserom.gba", 0x261EC7, 0x5 + +gUnknown_8261ECC:: @ 8261ECC + .incbin "baserom.gba", 0x261ECC, 0x18 + +gUnknown_8261EE4:: @ 8261EE4 + .incbin "baserom.gba", 0x261EE4, 0x10 + +gUnknown_8261EF4:: @ 8261EF4 + .incbin "baserom.gba", 0x261EF4, 0x24 + +gUnknown_8261F18:: @ 8261F18 + .incbin "baserom.gba", 0x261F18, 0x4 + +gUnknown_8261F1C:: @ 8261F1C + .incbin "baserom.gba", 0x261F1C, 0x10 + +gUnknown_8261F2C:: @ 8261F2C + .incbin "baserom.gba", 0x261F2C, 0x98 + +gUnknown_8261FC4:: @ 8261FC4 + .incbin "baserom.gba", 0x261FC4, 0x70 + +gUnknown_8262034:: @ 8262034 + .incbin "baserom.gba", 0x262034, 0x21 + +gUnknown_8262055:: @ 8262055 + .incbin "baserom.gba", 0x262055, 0x2027 + +gUnknown_826407C:: @ 826407C + .incbin "baserom.gba", 0x26407C, 0x1FA0 + +gUnknown_826601C:: @ 826601C + .incbin "baserom.gba", 0x26601C, 0x1000 + +gUnknown_826701C:: @ 826701C + .incbin "baserom.gba", 0x26701C, 0x2840 + +gUnknown_826985C:: @ 826985C + .incbin "baserom.gba", 0x26985C, 0x100 + +gUnknown_826995C:: @ 826995C + .incbin "baserom.gba", 0x26995C, 0x100 + +gUnknown_8269A5C:: @ 8269A5C + .incbin "baserom.gba", 0x269A5C, 0x1000 + +gUnknown_826AA5C:: @ 826AA5C + .incbin "baserom.gba", 0x26AA5C, 0x1000 + +gUnknown_826BA5C:: @ 826BA5C + .incbin "baserom.gba", 0x26BA5C, 0x100 + +gUnknown_826BB5C:: @ 826BB5C + .incbin "baserom.gba", 0x26BB5C, 0x200 + +gUnknown_826BD5C:: @ 826BD5C + .incbin "baserom.gba", 0x26BD5C, 0x200 + +gUnknown_826BF5C:: @ 826BF5C + .incbin "baserom.gba", 0x26BF5C, 0x20 + +gUnknown_826BF7C:: @ 826BF7C + .incbin "baserom.gba", 0x26BF7C, 0x690 + +gUnknown_826C60C:: @ 826C60C + .incbin "baserom.gba", 0x26C60C, 0x7C8 + +gUnknown_826CDD4:: @ 826CDD4 + .incbin "baserom.gba", 0x26CDD4, 0x8 + +gUnknown_826CDDC:: @ 826CDDC + .incbin "baserom.gba", 0x26CDDC, 0x8 + +gUnknown_826CDE4:: @ 826CDE4 + .incbin "baserom.gba", 0x26CDE4, 0x48 + +gUnknown_826CE2C:: @ 826CE2C + .incbin "baserom.gba", 0x26CE2C, 0x8 + +gUnknown_826CE34:: @ 826CE34 + .incbin "baserom.gba", 0x26CE34, 0x8 + +gUnknown_826CE3C:: @ 826CE3C + .incbin "baserom.gba", 0x26CE3C, 0x8 + +gUnknown_826CE44:: @ 826CE44 + .incbin "baserom.gba", 0x26CE44, 0x38 + +gUnknown_826CE7C:: @ 826CE7C + .incbin "baserom.gba", 0x26CE7C, 0x8 + +gUnknown_826CE84:: @ 826CE84 + .incbin "baserom.gba", 0x26CE84, 0x2C + +gUnknown_826CEB0:: @ 826CEB0 + .incbin "baserom.gba", 0x26CEB0, 0x8 + +gUnknown_826CEB8:: @ 826CEB8 + .incbin "baserom.gba", 0x26CEB8, 0x70 + +gUnknown_826CF28:: @ 826CF28 + .incbin "baserom.gba", 0x26CF28, 0x8 + +gUnknown_826CF30:: @ 826CF30 + .incbin "baserom.gba", 0x26CF30, 0x18 + +gUnknown_826CF48:: @ 826CF48 + .incbin "baserom.gba", 0x26CF48, 0x18 + +gUnknown_826CF60:: @ 826CF60 + .incbin "baserom.gba", 0x26CF60, 0x28 + +gUnknown_826CF88:: @ 826CF88 + .incbin "baserom.gba", 0x26CF88, 0x4 + +gUnknown_826CF8C:: @ 826CF8C + .incbin "baserom.gba", 0x26CF8C, 0x21C + +gUnknown_826D1A8:: @ 826D1A8 + .incbin "baserom.gba", 0x26D1A8, 0x14 + +gUnknown_826D1BC:: @ 826D1BC + .incbin "baserom.gba", 0x26D1BC, 0x10 + +gUnknown_826D1CC:: @ 826D1CC + .incbin "baserom.gba", 0x26D1CC, 0x8 + +gUnknown_826D1D4:: @ 826D1D4 + .incbin "baserom.gba", 0x26D1D4, 0x10 + +gUnknown_826D1E4:: @ 826D1E4 + .incbin "baserom.gba", 0x26D1E4, 0x6C + +gUnknown_826D250:: @ 826D250 + .incbin "baserom.gba", 0x26D250, 0x44 + +gUnknown_826D294:: @ 826D294 + .incbin "baserom.gba", 0x26D294, 0xA + +gUnknown_826D29E:: @ 826D29E + .incbin "baserom.gba", 0x26D29E, 0x12 + +gUnknown_826D2B0:: @ 826D2B0 + .incbin "baserom.gba", 0x26D2B0, 0x28 + +gUnknown_826D2D8:: @ 826D2D8 + .incbin "baserom.gba", 0x26D2D8, 0x48 + +gUnknown_826D320:: @ 826D320 + .incbin "baserom.gba", 0x26D320, 0x10 + +gUnknown_826D330:: @ 826D330 + .incbin "baserom.gba", 0x26D330, 0xC + +gUnknown_826D33C:: @ 826D33C + .incbin "baserom.gba", 0x26D33C, 0xC + +gUnknown_826D348:: @ 826D348 + .incbin "baserom.gba", 0x26D348, 0x2C + +gUnknown_826D374:: @ 826D374 + .incbin "baserom.gba", 0x26D374, 0x78258 + +gUnknown_82E55CC:: @ 82E55CC + .incbin "baserom.gba", 0x2E55CC, 0x695C0 + +gUnknown_834EB8C:: @ 834EB8C + .incbin "baserom.gba", 0x34EB8C, 0x3B1C + +gUnknown_83526A8:: @ 83526A8 + .incbin "baserom.gba", 0x3526A8, 0x844 + +gUnknown_8352EEC:: @ 8352EEC + .incbin "baserom.gba", 0x352EEC, 0x4 + +gUnknown_8352EF0:: @ 8352EF0 + .incbin "baserom.gba", 0x352EF0, 0x20 + +gUnknown_8352F10:: @ 8352F10 + .incbin "baserom.gba", 0x352F10, 0x8 + +gUnknown_8352F18:: @ 8352F18 + .incbin "baserom.gba", 0x352F18, 0x34 + +gUnknown_8352F4C:: @ 8352F4C + .incbin "baserom.gba", 0x352F4C, 0x2C + +gUnknown_8352F78:: @ 8352F78 + .incbin "baserom.gba", 0x352F78, 0xF0 + +gUnknown_8353068:: @ 8353068 + .incbin "baserom.gba", 0x353068, 0x8420 + +gUnknown_835B488:: @ 835B488 + .incbin "baserom.gba", 0x35B488, 0x14 + +gUnknown_835B49C:: @ 835B49C + .incbin "baserom.gba", 0x35B49C, 0x14 + +gUnknown_835B4B0:: @ 835B4B0 + .incbin "baserom.gba", 0x35B4B0, 0x14 + +gUnknown_835B4C4:: @ 835B4C4 + .incbin "baserom.gba", 0x35B4C4, 0x114 + +gUnknown_835B5D8:: @ 835B5D8 + .incbin "baserom.gba", 0x35B5D8, 0x18C + +gUnknown_835B764:: @ 835B764 + .incbin "baserom.gba", 0x35B764, 0xB0 + +gUnknown_835B814:: @ 835B814 + .incbin "baserom.gba", 0x35B814, 0xC + +gUnknown_835B820:: @ 835B820 + .incbin "baserom.gba", 0x35B820, 0x8 + +gUnknown_835B828:: @ 835B828 + .incbin "baserom.gba", 0x35B828, 0x14 + +gUnknown_835B83C:: @ 835B83C + .incbin "baserom.gba", 0x35B83C, 0x8 + +gUnknown_835B844:: @ 835B844 + .incbin "baserom.gba", 0x35B844, 0x20 + +gUnknown_835B864:: @ 835B864 + .incbin "baserom.gba", 0x35B864, 0x10 + +gUnknown_835B874:: @ 835B874 + .incbin "baserom.gba", 0x35B874, 0xC + +gUnknown_835B880:: @ 835B880 + .incbin "baserom.gba", 0x35B880, 0x2 + +gUnknown_835B882:: @ 835B882 + .incbin "baserom.gba", 0x35B882, 0xC + +gUnknown_835B88E:: @ 835B88E + .incbin "baserom.gba", 0x35B88E, 0x2 + +gUnknown_835B890:: @ 835B890 + .incbin "baserom.gba", 0x35B890, 0x10 + +gUnknown_835B8A0:: @ 835B8A0 + .incbin "baserom.gba", 0x35B8A0, 0xC + +gUnknown_835B8AC:: @ 835B8AC + .incbin "baserom.gba", 0x35B8AC, 0x4 + +gUnknown_835B8B0:: @ 835B8B0 + .incbin "baserom.gba", 0x35B8B0, 0x10 + +gUnknown_835B8C0:: @ 835B8C0 + .incbin "baserom.gba", 0x35B8C0, 0x4 + +gUnknown_835B8C4:: @ 835B8C4 + .incbin "baserom.gba", 0x35B8C4, 0x8 + +gUnknown_835B8CC:: @ 835B8CC + .incbin "baserom.gba", 0x35B8CC, 0x40 + +gUnknown_835B90C:: @ 835B90C + .incbin "baserom.gba", 0x35B90C, 0x6 + +gUnknown_835B912:: @ 835B912 + .incbin "baserom.gba", 0x35B912, 0x6 + +gUnknown_835B918:: @ 835B918 + .incbin "baserom.gba", 0x35B918, 0x2 + +gUnknown_835B91A:: @ 835B91A + .incbin "baserom.gba", 0x35B91A, 0x6 + +gUnknown_835B920:: @ 835B920 + .incbin "baserom.gba", 0x35B920, 0xC + +gUnknown_835B92C:: @ 835B92C + .incbin "baserom.gba", 0x35B92C, 0x8 + +gUnknown_835B934:: @ 835B934 + .incbin "baserom.gba", 0x35B934, 0x10 + +gUnknown_835B944:: @ 835B944 + .incbin "baserom.gba", 0x35B944, 0x18 + +gUnknown_835B95C:: @ 835B95C + .incbin "baserom.gba", 0x35B95C, 0x3DA2C + +gUnknown_8399388:: @ 8399388 + .incbin "baserom.gba", 0x399388, 0x908 + +gUnknown_8399C90:: @ 8399C90 + .incbin "baserom.gba", 0x399C90, 0x5F38 + +gUnknown_839FBC8:: @ 839FBC8 + .incbin "baserom.gba", 0x39FBC8, 0x144 + +gUnknown_839FD0C:: @ 839FD0C + .incbin "baserom.gba", 0x39FD0C, 0x51 + +gUnknown_839FD5D:: @ 839FD5D + .incbin "baserom.gba", 0x39FD5D, 0x53 + +gUnknown_839FDB0:: @ 839FDB0 + .incbin "baserom.gba", 0x39FDB0, 0x260 + +gUnknown_83A0010:: @ 83A0010 + .incbin "baserom.gba", 0x3A0010, 0x3688 + +gUnknown_83A3698:: @ 83A3698 + .incbin "baserom.gba", 0x3A3698, 0x1AC0 + +gUnknown_83A5158:: @ 83A5158 + .incbin "baserom.gba", 0x3A5158, 0xB0 + +gUnknown_83A5208:: @ 83A5208 + .incbin "baserom.gba", 0x3A5208, 0x70 + +gUnknown_83A5278:: @ 83A5278 + .incbin "baserom.gba", 0x3A5278, 0xB8 + +gUnknown_83A5330:: @ 83A5330 + .incbin "baserom.gba", 0x3A5330, 0x18 + +gUnknown_83A5348:: @ 83A5348 + .incbin "baserom.gba", 0x3A5348, 0xCB8 + +gUnknown_83A6000:: @ 83A6000 + .incbin "baserom.gba", 0x3A6000, 0x10 + +gUnknown_83A6010:: @ 83A6010 + .incbin "baserom.gba", 0x3A6010, 0x8 + +gUnknown_83A6018:: @ 83A6018 + .incbin "baserom.gba", 0x3A6018, 0x1C + +gUnknown_83A6034:: @ 83A6034 + .incbin "baserom.gba", 0x3A6034, 0x1C + +gUnknown_83A6050:: @ 83A6050 + .incbin "baserom.gba", 0x3A6050, 0x4 + +gUnknown_83A6054:: @ 83A6054 + .incbin "baserom.gba", 0x3A6054, 0x2C + +gUnknown_83A6080:: @ 83A6080 + .incbin "baserom.gba", 0x3A6080, 0x14 + +gUnknown_83A6094:: @ 83A6094 + .incbin "baserom.gba", 0x3A6094, 0x1C + +gUnknown_83A60B0:: @ 83A60B0 + .incbin "baserom.gba", 0x3A60B0, 0x4 + +gUnknown_83A60B4:: @ 83A60B4 + .incbin "baserom.gba", 0x3A60B4, 0x1C + +gUnknown_83A60D0:: @ 83A60D0 + .incbin "baserom.gba", 0x3A60D0, 0x4 + +gUnknown_83A60D4:: @ 83A60D4 + .incbin "baserom.gba", 0x3A60D4, 0xC + +gUnknown_83A60E0:: @ 83A60E0 + .incbin "baserom.gba", 0x3A60E0, 0x14 + +gUnknown_83A60F4:: @ 83A60F4 + .incbin "baserom.gba", 0x3A60F4, 0x14 + +gUnknown_83A6108:: @ 83A6108 + .incbin "baserom.gba", 0x3A6108, 0x14 + +gUnknown_83A611C:: @ 83A611C + .incbin "baserom.gba", 0x3A611C, 0x4 + +gUnknown_83A6120:: @ 83A6120 + .incbin "baserom.gba", 0x3A6120, 0x14 + +gUnknown_83A6134:: @ 83A6134 + .incbin "baserom.gba", 0x3A6134, 0x4 + +gUnknown_83A6138:: @ 83A6138 + .incbin "baserom.gba", 0x3A6138, 0x14 + +gUnknown_83A614C:: @ 83A614C + .incbin "baserom.gba", 0x3A614C, 0x4 + +gUnknown_83A6150:: @ 83A6150 + .incbin "baserom.gba", 0x3A6150, 0x14 + +gUnknown_83A6164:: @ 83A6164 + .incbin "baserom.gba", 0x3A6164, 0x4 + +gUnknown_83A6168:: @ 83A6168 + .incbin "baserom.gba", 0x3A6168, 0x14 + +gUnknown_83A617C:: @ 83A617C + .incbin "baserom.gba", 0x3A617C, 0x4 + +gUnknown_83A6180:: @ 83A6180 + .incbin "baserom.gba", 0x3A6180, 0x14 + +gUnknown_83A6194:: @ 83A6194 + .incbin "baserom.gba", 0x3A6194, 0x4 + +gUnknown_83A6198:: @ 83A6198 + .incbin "baserom.gba", 0x3A6198, 0x14 + +gUnknown_83A61AC:: @ 83A61AC + .incbin "baserom.gba", 0x3A61AC, 0x4 + +gUnknown_83A61B0:: @ 83A61B0 + .incbin "baserom.gba", 0x3A61B0, 0x14 + +gUnknown_83A61C4:: @ 83A61C4 + .incbin "baserom.gba", 0x3A61C4, 0x4 + +gUnknown_83A61C8:: @ 83A61C8 + .incbin "baserom.gba", 0x3A61C8, 0x10 + +gUnknown_83A61D8:: @ 83A61D8 + .incbin "baserom.gba", 0x3A61D8, 0x8 + +gUnknown_83A61E0:: @ 83A61E0 + .incbin "baserom.gba", 0x3A61E0, 0x10 + +gUnknown_83A61F0:: @ 83A61F0 + .incbin "baserom.gba", 0x3A61F0, 0x8 + +gUnknown_83A61F8:: @ 83A61F8 + .incbin "baserom.gba", 0x3A61F8, 0x10 + +gUnknown_83A6208:: @ 83A6208 + .incbin "baserom.gba", 0x3A6208, 0xC + +gUnknown_83A6214:: @ 83A6214 + .incbin "baserom.gba", 0x3A6214, 0x4 + +gUnknown_83A6218:: @ 83A6218 + .incbin "baserom.gba", 0x3A6218, 0xC + +gUnknown_83A6224:: @ 83A6224 + .incbin "baserom.gba", 0x3A6224, 0x4 + +gUnknown_83A6228:: @ 83A6228 + .incbin "baserom.gba", 0x3A6228, 0xC + +gUnknown_83A6234:: @ 83A6234 + .incbin "baserom.gba", 0x3A6234, 0x4 + +gUnknown_83A6238:: @ 83A6238 + .incbin "baserom.gba", 0x3A6238, 0xC + +gUnknown_83A6244:: @ 83A6244 + .incbin "baserom.gba", 0x3A6244, 0x4 + +gUnknown_83A6248:: @ 83A6248 + .incbin "baserom.gba", 0x3A6248, 0xC + +gUnknown_83A6254:: @ 83A6254 + .incbin "baserom.gba", 0x3A6254, 0x4 + +gUnknown_83A6258:: @ 83A6258 + .incbin "baserom.gba", 0x3A6258, 0xC + +gUnknown_83A6264:: @ 83A6264 + .incbin "baserom.gba", 0x3A6264, 0x4 + +gUnknown_83A6268:: @ 83A6268 + .incbin "baserom.gba", 0x3A6268, 0xC + +gUnknown_83A6274:: @ 83A6274 + .incbin "baserom.gba", 0x3A6274, 0xC + +gUnknown_83A6280:: @ 83A6280 + .incbin "baserom.gba", 0x3A6280, 0x4 + +gUnknown_83A6284:: @ 83A6284 + .incbin "baserom.gba", 0x3A6284, 0xC + +gUnknown_83A6290:: @ 83A6290 + .incbin "baserom.gba", 0x3A6290, 0x4 + +gUnknown_83A6294:: @ 83A6294 + .incbin "baserom.gba", 0x3A6294, 0xC + +gUnknown_83A62A0:: @ 83A62A0 + .incbin "baserom.gba", 0x3A62A0, 0x4 + +gUnknown_83A62A4:: @ 83A62A4 + .incbin "baserom.gba", 0x3A62A4, 0xC + +gUnknown_83A62B0:: @ 83A62B0 + .incbin "baserom.gba", 0x3A62B0, 0x4 + +gUnknown_83A62B4:: @ 83A62B4 + .incbin "baserom.gba", 0x3A62B4, 0xC + +gUnknown_83A62C0:: @ 83A62C0 + .incbin "baserom.gba", 0x3A62C0, 0x4 + +gUnknown_83A62C4:: @ 83A62C4 + .incbin "baserom.gba", 0x3A62C4, 0xC + +gUnknown_83A62D0:: @ 83A62D0 + .incbin "baserom.gba", 0x3A62D0, 0x4 + +gUnknown_83A62D4:: @ 83A62D4 + .incbin "baserom.gba", 0x3A62D4, 0xC + +gUnknown_83A62E0:: @ 83A62E0 + .incbin "baserom.gba", 0x3A62E0, 0x4 + +gUnknown_83A62E4:: @ 83A62E4 + .incbin "baserom.gba", 0x3A62E4, 0xC + +gUnknown_83A62F0:: @ 83A62F0 + .incbin "baserom.gba", 0x3A62F0, 0x4 + +gUnknown_83A62F4:: @ 83A62F4 + .incbin "baserom.gba", 0x3A62F4, 0xC + +gUnknown_83A6300:: @ 83A6300 + .incbin "baserom.gba", 0x3A6300, 0x4 + +gUnknown_83A6304:: @ 83A6304 + .incbin "baserom.gba", 0x3A6304, 0xC + +gUnknown_83A6310:: @ 83A6310 + .incbin "baserom.gba", 0x3A6310, 0x4 + +gUnknown_83A6314:: @ 83A6314 + .incbin "baserom.gba", 0x3A6314, 0xC + +gUnknown_83A6320:: @ 83A6320 + .incbin "baserom.gba", 0x3A6320, 0x4 + +gUnknown_83A6324:: @ 83A6324 + .incbin "baserom.gba", 0x3A6324, 0xC + +gUnknown_83A6330:: @ 83A6330 + .incbin "baserom.gba", 0x3A6330, 0x4 + +gUnknown_83A6334:: @ 83A6334 + .incbin "baserom.gba", 0x3A6334, 0xC + +gUnknown_83A6340:: @ 83A6340 + .incbin "baserom.gba", 0x3A6340, 0x4 + +gUnknown_83A6344:: @ 83A6344 + .incbin "baserom.gba", 0x3A6344, 0xC + +gUnknown_83A6350:: @ 83A6350 + .incbin "baserom.gba", 0x3A6350, 0x4 + +gUnknown_83A6354:: @ 83A6354 + .incbin "baserom.gba", 0x3A6354, 0xC + +gUnknown_83A6360:: @ 83A6360 + .incbin "baserom.gba", 0x3A6360, 0x4 + +gUnknown_83A6364:: @ 83A6364 + .incbin "baserom.gba", 0x3A6364, 0xC + +gUnknown_83A6370:: @ 83A6370 + .incbin "baserom.gba", 0x3A6370, 0x4 + +gUnknown_83A6374:: @ 83A6374 + .incbin "baserom.gba", 0x3A6374, 0xC + +gUnknown_83A6380:: @ 83A6380 + .incbin "baserom.gba", 0x3A6380, 0x4 + +gUnknown_83A6384:: @ 83A6384 + .incbin "baserom.gba", 0x3A6384, 0xC + +gUnknown_83A6390:: @ 83A6390 + .incbin "baserom.gba", 0x3A6390, 0x2C + +gUnknown_83A63BC:: @ 83A63BC + .incbin "baserom.gba", 0x3A63BC, 0xC + +gUnknown_83A63C8:: @ 83A63C8 + .incbin "baserom.gba", 0x3A63C8, 0x4 + +gUnknown_83A63CC:: @ 83A63CC + .incbin "baserom.gba", 0x3A63CC, 0x8 + +gUnknown_83A63D4:: @ 83A63D4 + .incbin "baserom.gba", 0x3A63D4, 0x8 + +gUnknown_83A63DC:: @ 83A63DC + .incbin "baserom.gba", 0x3A63DC, 0x8 + +gUnknown_83A63E4:: @ 83A63E4 + .incbin "baserom.gba", 0x3A63E4, 0xC + +gUnknown_83A63F0:: @ 83A63F0 + .incbin "baserom.gba", 0x3A63F0, 0xC + +gUnknown_83A63FC:: @ 83A63FC + .incbin "baserom.gba", 0x3A63FC, 0x8 + +gUnknown_83A6404:: @ 83A6404 + .incbin "baserom.gba", 0x3A6404, 0x8 + +gUnknown_83A640C:: @ 83A640C + .incbin "baserom.gba", 0x3A640C, 0x9 + +gUnknown_83A6415:: @ 83A6415 + .incbin "baserom.gba", 0x3A6415, 0x9 + +gUnknown_83A641E:: @ 83A641E + .incbin "baserom.gba", 0x3A641E, 0x9 + +gUnknown_83A6427:: @ 83A6427 + .incbin "baserom.gba", 0x3A6427, 0x9 + +gUnknown_83A6430:: @ 83A6430 + .incbin "baserom.gba", 0x3A6430, 0x9 + +gUnknown_83A6439:: @ 83A6439 + .incbin "baserom.gba", 0x3A6439, 0x9 + +gUnknown_83A6442:: @ 83A6442 + .incbin "baserom.gba", 0x3A6442, 0x9 + +gUnknown_83A644B:: @ 83A644B + .incbin "baserom.gba", 0x3A644B, 0x9 + +gUnknown_83A6454:: @ 83A6454 + .incbin "baserom.gba", 0x3A6454, 0x9 + +gUnknown_83A645D:: @ 83A645D + .incbin "baserom.gba", 0x3A645D, 0x9 + +gUnknown_83A6466:: @ 83A6466 + .incbin "baserom.gba", 0x3A6466, 0x9 + +gUnknown_83A646F:: @ 83A646F + .incbin "baserom.gba", 0x3A646F, 0x9 + +gUnknown_83A6478:: @ 83A6478 + .incbin "baserom.gba", 0x3A6478, 0x9 + +gUnknown_83A6481:: @ 83A6481 + .incbin "baserom.gba", 0x3A6481, 0x9 + +gUnknown_83A648A:: @ 83A648A + .incbin "baserom.gba", 0x3A648A, 0x9 + +gUnknown_83A6493:: @ 83A6493 + .incbin "baserom.gba", 0x3A6493, 0x9 + +gUnknown_83A649C:: @ 83A649C + .incbin "baserom.gba", 0x3A649C, 0xC + +gUnknown_83A64A8:: @ 83A64A8 + .incbin "baserom.gba", 0x3A64A8, 0x10 + +gUnknown_83A64B8:: @ 83A64B8 + .incbin "baserom.gba", 0x3A64B8, 0x10 + +gUnknown_83A64C8:: @ 83A64C8 + .incbin "baserom.gba", 0x3A64C8, 0x24 + +gUnknown_83A64EC:: @ 83A64EC + .incbin "baserom.gba", 0x3A64EC, 0x5 + +gUnknown_83A64F1:: @ 83A64F1 + .incbin "baserom.gba", 0x3A64F1, 0x5 + +gUnknown_83A64F6:: @ 83A64F6 + .incbin "baserom.gba", 0x3A64F6, 0x5 + +gUnknown_83A64FB:: @ 83A64FB + .incbin "baserom.gba", 0x3A64FB, 0x5 + +gUnknown_83A6500:: @ 83A6500 + .incbin "baserom.gba", 0x3A6500, 0x5 + +gUnknown_83A6505:: @ 83A6505 + .incbin "baserom.gba", 0x3A6505, 0x5 + +gUnknown_83A650A:: @ 83A650A + .incbin "baserom.gba", 0x3A650A, 0x5 + +gUnknown_83A650F:: @ 83A650F + .incbin "baserom.gba", 0x3A650F, 0x5 + +gUnknown_83A6514:: @ 83A6514 + .incbin "baserom.gba", 0x3A6514, 0x5 + +gUnknown_83A6519:: @ 83A6519 + .incbin "baserom.gba", 0x3A6519, 0x5 + +gUnknown_83A651E:: @ 83A651E + .incbin "baserom.gba", 0x3A651E, 0x5 + +gUnknown_83A6523:: @ 83A6523 + .incbin "baserom.gba", 0x3A6523, 0x5 + +gUnknown_83A6528:: @ 83A6528 + .incbin "baserom.gba", 0x3A6528, 0x5 + +gUnknown_83A652D:: @ 83A652D + .incbin "baserom.gba", 0x3A652D, 0x5 + +gUnknown_83A6532:: @ 83A6532 + .incbin "baserom.gba", 0x3A6532, 0x5 + +gUnknown_83A6537:: @ 83A6537 + .incbin "baserom.gba", 0x3A6537, 0x5 + +gUnknown_83A653C:: @ 83A653C + .incbin "baserom.gba", 0x3A653C, 0x5 + +gUnknown_83A6541:: @ 83A6541 + .incbin "baserom.gba", 0x3A6541, 0x5 + +gUnknown_83A6546:: @ 83A6546 + .incbin "baserom.gba", 0x3A6546, 0x5 + +gUnknown_83A654B:: @ 83A654B + .incbin "baserom.gba", 0x3A654B, 0x5 + +gUnknown_83A6550:: @ 83A6550 + .incbin "baserom.gba", 0x3A6550, 0x5 + +gUnknown_83A6555:: @ 83A6555 + .incbin "baserom.gba", 0x3A6555, 0x5 + +gUnknown_83A655A:: @ 83A655A + .incbin "baserom.gba", 0x3A655A, 0x5 + +gUnknown_83A655F:: @ 83A655F + .incbin "baserom.gba", 0x3A655F, 0x5 + +gUnknown_83A6564:: @ 83A6564 + .incbin "baserom.gba", 0x3A6564, 0x5 + +gUnknown_83A6569:: @ 83A6569 + .incbin "baserom.gba", 0x3A6569, 0x5 + +gUnknown_83A656E:: @ 83A656E + .incbin "baserom.gba", 0x3A656E, 0x5 + +gUnknown_83A6573:: @ 83A6573 + .incbin "baserom.gba", 0x3A6573, 0x5 + +gUnknown_83A6578:: @ 83A6578 + .incbin "baserom.gba", 0x3A6578, 0x5 + +gUnknown_83A657D:: @ 83A657D + .incbin "baserom.gba", 0x3A657D, 0x5 + +gUnknown_83A6582:: @ 83A6582 + .incbin "baserom.gba", 0x3A6582, 0x5 + +gUnknown_83A6587:: @ 83A6587 + .incbin "baserom.gba", 0x3A6587, 0x5 + +gUnknown_83A658C:: @ 83A658C + .incbin "baserom.gba", 0x3A658C, 0x5 + +gUnknown_83A6591:: @ 83A6591 + .incbin "baserom.gba", 0x3A6591, 0x8 + +gUnknown_83A6599:: @ 83A6599 + .incbin "baserom.gba", 0x3A6599, 0x10 + +gUnknown_83A65A9:: @ 83A65A9 + .incbin "baserom.gba", 0x3A65A9, 0x13 + +gUnknown_83A65BC:: @ 83A65BC + .incbin "baserom.gba", 0x3A65BC, 0x2C8 + +gUnknown_83A6884:: @ 83A6884 + .incbin "baserom.gba", 0x3A6884, 0xD4 + +gUnknown_83A6958:: @ 83A6958 + .incbin "baserom.gba", 0x3A6958, 0x6 + +gUnknown_83A695E:: @ 83A695E + .incbin "baserom.gba", 0x3A695E, 0x6C6 + +gUnknown_83A7024:: @ 83A7024 + .incbin "baserom.gba", 0x3A7024, 0x8 + +gUnknown_83A702C:: @ 83A702C + .incbin "baserom.gba", 0x3A702C, 0x18 + +gUnknown_83A7044:: @ 83A7044 + .incbin "baserom.gba", 0x3A7044, 0x18 + +gUnknown_83A705C:: @ 83A705C + .incbin "baserom.gba", 0x3A705C, 0x10 + +gUnknown_83A706C:: @ 83A706C + .incbin "baserom.gba", 0x3A706C, 0x10 + +gUnknown_83A707C:: @ 83A707C + .incbin "baserom.gba", 0x3A707C, 0x10 + +gUnknown_83A708C:: @ 83A708C + .incbin "baserom.gba", 0x3A708C, 0x10 + +gUnknown_83A709C:: @ 83A709C + .incbin "baserom.gba", 0x3A709C, 0xC + +gUnknown_83A70A8:: @ 83A70A8 + .incbin "baserom.gba", 0x3A70A8, 0x4 + +gUnknown_83A70AC:: @ 83A70AC + .incbin "baserom.gba", 0x3A70AC, 0x10 + +gUnknown_83A70BC:: @ 83A70BC + .incbin "baserom.gba", 0x3A70BC, 0xE0 + +gUnknown_83A719C:: @ 83A719C + .incbin "baserom.gba", 0x3A719C, 0x14 + +gUnknown_83A71B0:: @ 83A71B0 + .incbin "baserom.gba", 0x3A71B0, 0x3C + +gUnknown_83A71EC:: @ 83A71EC + .incbin "baserom.gba", 0x3A71EC, 0xC + +gUnknown_83A71F8:: @ 83A71F8 + .incbin "baserom.gba", 0x3A71F8, 0x6 + +gUnknown_83A71FE:: @ 83A71FE + .incbin "baserom.gba", 0x3A71FE, 0x4 + +gUnknown_83A7202:: @ 83A7202 + .incbin "baserom.gba", 0x3A7202, 0x6 + +gUnknown_83A7208:: @ 83A7208 + .incbin "baserom.gba", 0x3A7208, 0x4 + +gUnknown_83A720C:: @ 83A720C + .incbin "baserom.gba", 0x3A720C, 0x34 + +gUnknown_83A7240:: @ 83A7240 + .incbin "baserom.gba", 0x3A7240, 0x4 + +gUnknown_83A7244:: @ 83A7244 + .incbin "baserom.gba", 0x3A7244, 0x4 + +gUnknown_83A7248:: @ 83A7248 + .incbin "baserom.gba", 0x3A7248, 0x14 + +gUnknown_83A725C:: @ 83A725C + .incbin "baserom.gba", 0x3A725C, 0x34 + +gUnknown_83A7290:: @ 83A7290 + .incbin "baserom.gba", 0x3A7290, 0x4 + +gUnknown_83A7294:: @ 83A7294 + .incbin "baserom.gba", 0x3A7294, 0xC + +gUnknown_83A72A0:: @ 83A72A0 + .incbin "baserom.gba", 0x3A72A0, 0x2 + +gUnknown_83A72A2:: @ 83A72A2 + .incbin "baserom.gba", 0x3A72A2, 0x6 + +gUnknown_83A72A8:: @ 83A72A8 + .incbin "baserom.gba", 0x3A72A8, 0x68 + +gUnknown_83A7310:: @ 83A7310 + .incbin "baserom.gba", 0x3A7310, 0x20 + +gUnknown_83A7330:: @ 83A7330 + .incbin "baserom.gba", 0x3A7330, 0x14 + +gUnknown_83A7344:: @ 83A7344 + .incbin "baserom.gba", 0x3A7344, 0x48 + +gUnknown_83A738C:: @ 83A738C + .incbin "baserom.gba", 0x3A738C, 0x8 + +gUnknown_83A7394:: @ 83A7394 + .incbin "baserom.gba", 0x3A7394, 0x24 + +gUnknown_83A73B8:: @ 83A73B8 + .incbin "baserom.gba", 0x3A73B8, 0x4 + +gUnknown_83A73BC:: @ 83A73BC + .incbin "baserom.gba", 0x3A73BC, 0x10 + +gUnknown_83A73CC:: @ 83A73CC + .incbin "baserom.gba", 0x3A73CC, 0x8 + +gUnknown_83A73D4:: @ 83A73D4 + .incbin "baserom.gba", 0x3A73D4, 0x4 + +gUnknown_83A73D8:: @ 83A73D8 + .incbin "baserom.gba", 0x3A73D8, 0x4 + +gUnknown_83A73DC:: @ 83A73DC + .incbin "baserom.gba", 0x3A73DC, 0x284 + +gUnknown_83A7660:: @ 83A7660 + .incbin "baserom.gba", 0x3A7660, 0x2FF4 + +gUnknown_83AA654:: @ 83AA654 + .incbin "baserom.gba", 0x3AA654, 0x1220 + +gUnknown_83AB874:: @ 83AB874 + .incbin "baserom.gba", 0x3AB874, 0x540 + +gUnknown_83ABDB4:: @ 83ABDB4 + .incbin "baserom.gba", 0x3ABDB4, 0x434 + +gUnknown_83AC1E8:: @ 83AC1E8 + .incbin "baserom.gba", 0x3AC1E8, 0x410 + +gUnknown_83AC5F8:: @ 83AC5F8 + .incbin "baserom.gba", 0x3AC5F8, 0x1D0 + +gUnknown_83AC7C8:: @ 83AC7C8 + .incbin "baserom.gba", 0x3AC7C8, 0x188 + +gUnknown_83AC950:: @ 83AC950 + .incbin "baserom.gba", 0x3AC950, 0x10 + +gUnknown_83AC960:: @ 83AC960 + .incbin "baserom.gba", 0x3AC960, 0x10 + +gUnknown_83AC970:: @ 83AC970 + .incbin "baserom.gba", 0x3AC970, 0x20 + +gUnknown_83AC990:: @ 83AC990 + .incbin "baserom.gba", 0x3AC990, 0x278 + +gUnknown_83ACC08:: @ 83ACC08 + .incbin "baserom.gba", 0x3ACC08, 0x440 + +gUnknown_83AD048:: @ 83AD048 + .incbin "baserom.gba", 0x3AD048, 0x308 + +gUnknown_83AD350:: @ 83AD350 + .incbin "baserom.gba", 0x3AD350, 0x120 + +gUnknown_83AD470:: @ 83AD470 + .incbin "baserom.gba", 0x3AD470, 0x4E0 + +gUnknown_83AD950:: @ 83AD950 + .incbin "baserom.gba", 0x3AD950, 0x308 + +gUnknown_83ADC58:: @ 83ADC58 + .incbin "baserom.gba", 0x3ADC58, 0x120 + +gUnknown_83ADD78:: @ 83ADD78 + .incbin "baserom.gba", 0x3ADD78, 0xA0 + +gUnknown_83ADE18:: @ 83ADE18 + .incbin "baserom.gba", 0x3ADE18, 0x144 + +gUnknown_83ADF5C:: @ 83ADF5C + .incbin "baserom.gba", 0x3ADF5C, 0xC0 + +gUnknown_83AE01C:: @ 83AE01C + .incbin "baserom.gba", 0x3AE01C, 0x20 + +gUnknown_83AE03C:: @ 83AE03C + .incbin "baserom.gba", 0x3AE03C, 0x10 + +gUnknown_83AE04C:: @ 83AE04C + .incbin "baserom.gba", 0x3AE04C, 0x4 + +gUnknown_83AE050:: @ 83AE050 + .incbin "baserom.gba", 0x3AE050, 0x4 + +gUnknown_83AE054:: @ 83AE054 + .incbin "baserom.gba", 0x3AE054, 0x30 + +gUnknown_83AE084:: @ 83AE084 + .incbin "baserom.gba", 0x3AE084, 0x114D0 + +gUnknown_83BF554:: @ 83BF554 + .incbin "baserom.gba", 0x3BF554, 0x8 + +gUnknown_83BF55C:: @ 83BF55C + .incbin "baserom.gba", 0x3BF55C, 0x18 + +gUnknown_83BF574:: @ 83BF574 + .incbin "baserom.gba", 0x3BF574, 0x18 + +gUnknown_83BF58C:: @ 83BF58C + .incbin "baserom.gba", 0x3BF58C, 0x1C + +gUnknown_83BF5A8:: @ 83BF5A8 + .incbin "baserom.gba", 0x3BF5A8, 0x55C + +gUnknown_83BFB04:: @ 83BFB04 + .incbin "baserom.gba", 0x3BFB04, 0x18 + +gUnknown_83BFB1C:: @ 83BFB1C + .incbin "baserom.gba", 0x3BFB1C, 0x20 + +gUnknown_83BFB3C:: @ 83BFB3C + .incbin "baserom.gba", 0x3BFB3C, 0x20 + +gUnknown_83BFB5C:: @ 83BFB5C + .incbin "baserom.gba", 0x3BFB5C, 0x18 + +gUnknown_83BFB74:: @ 83BFB74 + .incbin "baserom.gba", 0x3BFB74, 0x10 + +gUnknown_83BFB84:: @ 83BFB84 + .incbin "baserom.gba", 0x3BFB84, 0x18 + +gUnknown_83BFB9C:: @ 83BFB9C + .incbin "baserom.gba", 0x3BFB9C, 0x20 + +gUnknown_83BFBBC:: @ 83BFBBC + .incbin "baserom.gba", 0x3BFBBC, 0x18 + +gUnknown_83BFBD4:: @ 83BFBD4 + .incbin "baserom.gba", 0x3BFBD4, 0x2FE8 + +gUnknown_83C2BBC:: @ 83C2BBC + .incbin "baserom.gba", 0x3C2BBC, 0x4 + +gUnknown_83C2BC0:: @ 83C2BC0 + .incbin "baserom.gba", 0x3C2BC0, 0xF0 + +gUnknown_83C2CB0:: @ 83C2CB0 + .incbin "baserom.gba", 0x3C2CB0, 0x10 + +gUnknown_83C2CC0:: @ 83C2CC0 + .incbin "baserom.gba", 0x3C2CC0, 0x20 + +gUnknown_83C2CE0:: @ 83C2CE0 + .incbin "baserom.gba", 0x3C2CE0, 0x20 + +gUnknown_83C2D00:: @ 83C2D00 + .incbin "baserom.gba", 0x3C2D00, 0x20 + +gUnknown_83C2D20:: @ 83C2D20 + .incbin "baserom.gba", 0x3C2D20, 0x820 + +gUnknown_83C3540:: @ 83C3540 + .incbin "baserom.gba", 0x3C3540, 0x3080 + +gUnknown_83C65C0:: @ 83C65C0 + .incbin "baserom.gba", 0x3C65C0, 0x4 + +gUnknown_83C65C4:: @ 83C65C4 + .incbin "baserom.gba", 0x3C65C4, 0x4 + +gUnknown_83C65C8:: @ 83C65C8 + .incbin "baserom.gba", 0x3C65C8, 0xC + +gUnknown_83C65D4:: @ 83C65D4 + .incbin "baserom.gba", 0x3C65D4, 0x1C + +gUnknown_83C65F0:: @ 83C65F0 + .incbin "baserom.gba", 0x3C65F0, 0x18 + +gUnknown_83C6608:: @ 83C6608 + .incbin "baserom.gba", 0x3C6608, 0x9C + +gUnknown_83C66A4:: @ 83C66A4 + .incbin "baserom.gba", 0x3C66A4, 0x18 + +gUnknown_83C66BC:: @ 83C66BC + .incbin "baserom.gba", 0x3C66BC, 0x8 + +gUnknown_83C66C4:: @ 83C66C4 + .incbin "baserom.gba", 0x3C66C4, 0x8 + +gUnknown_83C66CC:: @ 83C66CC + .incbin "baserom.gba", 0x3C66CC, 0x38 + +gUnknown_83C6704:: @ 83C6704 + .incbin "baserom.gba", 0x3C6704, 0x8C + +gUnknown_83C6790:: @ 83C6790 + .incbin "baserom.gba", 0x3C6790, 0x18 + +gUnknown_83C67A8:: @ 83C67A8 + .incbin "baserom.gba", 0x3C67A8, 0x8 + +gUnknown_83C67B0:: @ 83C67B0 + .incbin "baserom.gba", 0x3C67B0, 0x20 + +gUnknown_83C67D0:: @ 83C67D0 + .incbin "baserom.gba", 0x3C67D0, 0x18 + +gUnknown_83C67E8:: @ 83C67E8 + .incbin "baserom.gba", 0x3C67E8, 0x1C + +gUnknown_83C6804:: @ 83C6804 + .incbin "baserom.gba", 0x3C6804, 0x38 + +gUnknown_83C683C:: @ 83C683C + .incbin "baserom.gba", 0x3C683C, 0x18 + +gUnknown_83C6854:: @ 83C6854 + .incbin "baserom.gba", 0x3C6854, 0x8 + +gUnknown_83C685C:: @ 83C685C + .incbin "baserom.gba", 0x3C685C, 0xC + +gUnknown_83C6868:: @ 83C6868 + .incbin "baserom.gba", 0x3C6868, 0x8 + +gUnknown_83C6870:: @ 83C6870 + .incbin "baserom.gba", 0x3C6870, 0x8 + +gUnknown_83C6878:: @ 83C6878 + .incbin "baserom.gba", 0x3C6878, 0x44 + +gUnknown_83C68BC:: @ 83C68BC + .incbin "baserom.gba", 0x3C68BC, 0x18 + +gUnknown_83C68D4:: @ 83C68D4 + .incbin "baserom.gba", 0x3C68D4, 0xC + +gUnknown_83C68E0:: @ 83C68E0 + .incbin "baserom.gba", 0x3C68E0, 0x4 + +gUnknown_83C68E4:: @ 83C68E4 + .incbin "baserom.gba", 0x3C68E4, 0x8 + +gUnknown_83C68EC:: @ 83C68EC + .incbin "baserom.gba", 0x3C68EC, 0x4 + +gUnknown_83C68F0:: @ 83C68F0 + .incbin "baserom.gba", 0x3C68F0, 0x8 + +gUnknown_83C68F8:: @ 83C68F8 + .incbin "baserom.gba", 0x3C68F8, 0x8 + +gUnknown_83C6900:: @ 83C6900 + .incbin "baserom.gba", 0x3C6900, 0x48 + +gUnknown_83C6948:: @ 83C6948 + .incbin "baserom.gba", 0x3C6948, 0x48 + +gUnknown_83C6990:: @ 83C6990 + .incbin "baserom.gba", 0x3C6990, 0x48 + +gUnknown_83C69D8:: @ 83C69D8 + .incbin "baserom.gba", 0x3C69D8, 0x48 + +gUnknown_83C6A20:: @ 83C6A20 + .incbin "baserom.gba", 0x3C6A20, 0x48 + +gUnknown_83C6A68:: @ 83C6A68 + .incbin "baserom.gba", 0x3C6A68, 0x48 + +gUnknown_83C6AB0:: @ 83C6AB0 + .incbin "baserom.gba", 0x3C6AB0, 0x8 + +gUnknown_83C6AB8:: @ 83C6AB8 + .incbin "baserom.gba", 0x3C6AB8, 0x790 + +gUnknown_83C7248:: @ 83C7248 + .incbin "baserom.gba", 0x3C7248, 0x10 + +gUnknown_83C7258:: @ 83C7258 + .incbin "baserom.gba", 0x3C7258, 0x3C + +gUnknown_83C7294:: @ 83C7294 + .incbin "baserom.gba", 0x3C7294, 0xF4 + +gUnknown_83C7388:: @ 83C7388 + .incbin "baserom.gba", 0x3C7388, 0x2930 + +gUnknown_83C9CB8:: @ 83C9CB8 + .incbin "baserom.gba", 0x3C9CB8, 0xA64 + +gUnknown_83CA71C:: @ 83CA71C + .incbin "baserom.gba", 0x3CA71C, 0xED4 + +gUnknown_83CB5F0:: @ 83CB5F0 + .incbin "baserom.gba", 0x3CB5F0, 0x200 + +gUnknown_83CB7F0:: @ 83CB7F0 + .incbin "baserom.gba", 0x3CB7F0, 0x20 + +gUnknown_83CB810:: @ 83CB810 + .incbin "baserom.gba", 0x3CB810, 0x280 + +gUnknown_83CBA90:: @ 83CBA90 + .incbin "baserom.gba", 0x3CBA90, 0x80 + +gUnknown_83CBB10:: @ 83CBB10 + .incbin "baserom.gba", 0x3CBB10, 0x20 + +gUnknown_83CBB30:: @ 83CBB30 + .incbin "baserom.gba", 0x3CBB30, 0x300 + +gUnknown_83CBE30:: @ 83CBE30 + .incbin "baserom.gba", 0x3CBE30, 0x20 + +gUnknown_83CBE50:: @ 83CBE50 + .incbin "baserom.gba", 0x3CBE50, 0x20 + +gUnknown_83CBE70:: @ 83CBE70 + .incbin "baserom.gba", 0x3CBE70, 0x14 + +gUnknown_83CBE84:: @ 83CBE84 + .incbin "baserom.gba", 0x3CBE84, 0x104 + +gUnknown_83CBF88:: @ 83CBF88 + .incbin "baserom.gba", 0x3CBF88, 0x18 + +gUnknown_83CBFA0:: @ 83CBFA0 + .incbin "baserom.gba", 0x3CBFA0, 0x18 + +gUnknown_83CBFB8:: @ 83CBFB8 + .incbin "baserom.gba", 0x3CBFB8, 0x18 + +gUnknown_83CBFD0:: @ 83CBFD0 + .incbin "baserom.gba", 0x3CBFD0, 0x10 + +gUnknown_83CBFE0:: @ 83CBFE0 + .incbin "baserom.gba", 0x3CBFE0, 0x10 + +gUnknown_83CBFF0:: @ 83CBFF0 + .incbin "baserom.gba", 0x3CBFF0, 0x20 + +gUnknown_83CC010:: @ 83CC010 + .incbin "baserom.gba", 0x3CC010, 0x18 + +gUnknown_83CC028:: @ 83CC028 + .incbin "baserom.gba", 0x3CC028, 0x4 + +gUnknown_83CC02C:: @ 83CC02C + .incbin "baserom.gba", 0x3CC02C, 0x4 + +gUnknown_83CC030:: @ 83CC030 + .incbin "baserom.gba", 0x3CC030, 0x4 + +gUnknown_83CC034:: @ 83CC034 + .incbin "baserom.gba", 0x3CC034, 0x1C + +gUnknown_83CC050:: @ 83CC050 + .incbin "baserom.gba", 0x3CC050, 0x18 + +gUnknown_83CC068:: @ 83CC068 + .incbin "baserom.gba", 0x3CC068, 0x1C + +gUnknown_83CC084:: @ 83CC084 + .incbin "baserom.gba", 0x3CC084, 0x14 + +gUnknown_83CC098:: @ 83CC098 + .incbin "baserom.gba", 0x3CC098, 0xC + +gUnknown_83CC0A4:: @ 83CC0A4 + .incbin "baserom.gba", 0x3CC0A4, 0x18 + +gUnknown_83CC0BC:: @ 83CC0BC + .incbin "baserom.gba", 0x3CC0BC, 0x10 + +gUnknown_83CC0CC:: @ 83CC0CC + .incbin "baserom.gba", 0x3CC0CC, 0x14 + +gUnknown_83CC0E0:: @ 83CC0E0 + .incbin "baserom.gba", 0x3CC0E0, 0x8 + +gUnknown_83CC0E8:: @ 83CC0E8 + .incbin "baserom.gba", 0x3CC0E8, 0x8 + +gUnknown_83CC0F0:: @ 83CC0F0 + .incbin "baserom.gba", 0x3CC0F0, 0x8 + +gUnknown_83CC0F8:: @ 83CC0F8 + .incbin "baserom.gba", 0x3CC0F8, 0x10 + +gUnknown_83CC108:: @ 83CC108 + .incbin "baserom.gba", 0x3CC108, 0x8 + +gUnknown_83CC110:: @ 83CC110 + .incbin "baserom.gba", 0x3CC110, 0xC + +gUnknown_83CC11C:: @ 83CC11C + .incbin "baserom.gba", 0x3CC11C, 0x1C + +gUnknown_83CC138:: @ 83CC138 + .incbin "baserom.gba", 0x3CC138, 0x1C + +gUnknown_83CC154:: @ 83CC154 + .incbin "baserom.gba", 0x3CC154, 0x14 + +gUnknown_83CC168:: @ 83CC168 + .incbin "baserom.gba", 0x3CC168, 0x10 + +gUnknown_83CC178:: @ 83CC178 + .incbin "baserom.gba", 0x3CC178, 0x54 + +gUnknown_83CC1CC:: @ 83CC1CC + .incbin "baserom.gba", 0x3CC1CC, 0x8 + +gUnknown_83CC1D4:: @ 83CC1D4 + .incbin "baserom.gba", 0x3CC1D4, 0x1C + +gUnknown_83CC1F0:: @ 83CC1F0 + .incbin "baserom.gba", 0x3CC1F0, 0x4C + +gUnknown_83CC23C:: @ 83CC23C + .incbin "baserom.gba", 0x3CC23C, 0x8 + +gUnknown_83CC244:: @ 83CC244 + .incbin "baserom.gba", 0x3CC244, 0x5C + +gUnknown_83CC2A0:: @ 83CC2A0 + .incbin "baserom.gba", 0x3CC2A0, 0x18 + +gUnknown_83CC2B8:: @ 83CC2B8 + .incbin "baserom.gba", 0x3CC2B8, 0x20 + +gUnknown_83CC2D8:: @ 83CC2D8 + .incbin "baserom.gba", 0x3CC2D8, 0xC + +gUnknown_83CC2E4:: @ 83CC2E4 + .incbin "baserom.gba", 0x3CC2E4, 0x20 + +gUnknown_83CC304:: @ 83CC304 + .incbin "baserom.gba", 0x3CC304, 0x10 + +gUnknown_83CC314:: @ 83CC314 + .incbin "baserom.gba", 0x3CC314, 0x1C + +gUnknown_83CC330:: @ 83CC330 + .incbin "baserom.gba", 0x3CC330, 0xC + +gUnknown_83CC33C:: @ 83CC33C + .incbin "baserom.gba", 0x3CC33C, 0x8 + +gUnknown_83CC344:: @ 83CC344 + .incbin "baserom.gba", 0x3CC344, 0x8 + +gUnknown_83CC34C:: @ 83CC34C + .incbin "baserom.gba", 0x3CC34C, 0x8 + +gUnknown_83CC354:: @ 83CC354 + .incbin "baserom.gba", 0x3CC354, 0xC + +gUnknown_83CC360:: @ 83CC360 + .incbin "baserom.gba", 0x3CC360, 0x3 + +gUnknown_83CC363:: @ 83CC363 + .incbin "baserom.gba", 0x3CC363, 0x5 + +gUnknown_83CC368:: @ 83CC368 + .incbin "baserom.gba", 0x3CC368, 0x174 + +gUnknown_83CC4DC:: @ 83CC4DC + .incbin "baserom.gba", 0x3CC4DC, 0x214 + +gUnknown_83CC6F0:: @ 83CC6F0 + .incbin "baserom.gba", 0x3CC6F0, 0x1B8 + +gUnknown_83CC8A8:: @ 83CC8A8 + .incbin "baserom.gba", 0x3CC8A8, 0xDC + +gUnknown_83CC984:: @ 83CC984 + .incbin "baserom.gba", 0x3CC984, 0x12C + +gUnknown_83CCAB0:: @ 83CCAB0 + .incbin "baserom.gba", 0x3CCAB0, 0x1F4 + +gUnknown_83CCCA4:: @ 83CCCA4 + .incbin "baserom.gba", 0x3CCCA4, 0x18C + +gUnknown_83CCE30:: @ 83CCE30 + .incbin "baserom.gba", 0x3CCE30, 0x98 + +gUnknown_83CCEC8:: @ 83CCEC8 + .incbin "baserom.gba", 0x3CCEC8, 0x3B8 + +gUnknown_83CD280:: @ 83CD280 + .incbin "baserom.gba", 0x3CD280, 0x20 + +gUnknown_83CD2A0:: @ 83CD2A0 + .incbin "baserom.gba", 0x3CD2A0, 0x20 + +gUnknown_83CD2C0:: @ 83CD2C0 + .incbin "baserom.gba", 0x3CD2C0, 0x20 + +gUnknown_83CD2E0:: @ 83CD2E0 + .incbin "baserom.gba", 0x3CD2E0, 0x20 + +gUnknown_83CD300:: @ 83CD300 + .incbin "baserom.gba", 0x3CD300, 0x20 + +gUnknown_83CD320:: @ 83CD320 + .incbin "baserom.gba", 0x3CD320, 0x20 + +gUnknown_83CD340:: @ 83CD340 + .incbin "baserom.gba", 0x3CD340, 0x20 + +gUnknown_83CD360:: @ 83CD360 + .incbin "baserom.gba", 0x3CD360, 0x20 + +gUnknown_83CD380:: @ 83CD380 + .incbin "baserom.gba", 0x3CD380, 0x268 + +gUnknown_83CD5E8:: @ 83CD5E8 + .incbin "baserom.gba", 0x3CD5E8, 0x2A0 + +gUnknown_83CD888:: @ 83CD888 + .incbin "baserom.gba", 0x3CD888, 0x10 + +gUnknown_83CD898:: @ 83CD898 + .incbin "baserom.gba", 0x3CD898, 0x20 + +gUnknown_83CD8B8:: @ 83CD8B8 + .incbin "baserom.gba", 0x3CD8B8, 0x14 + +gUnknown_83CD8CC:: @ 83CD8CC + .incbin "baserom.gba", 0x3CD8CC, 0x14 + +gUnknown_83CD8E0:: @ 83CD8E0 + .incbin "baserom.gba", 0x3CD8E0, 0x3 + +gUnknown_83CD8E3:: @ 83CD8E3 + .incbin "baserom.gba", 0x3CD8E3, 0x6 + +gUnknown_83CD8E9:: @ 83CD8E9 + .incbin "baserom.gba", 0x3CD8E9, 0x3 + +gUnknown_83CD8EC:: @ 83CD8EC + .incbin "baserom.gba", 0x3CD8EC, 0x8 + +gUnknown_83CD8F4:: @ 83CD8F4 + .incbin "baserom.gba", 0x3CD8F4, 0x4 + +gUnknown_83CD8F8:: @ 83CD8F8 + .incbin "baserom.gba", 0x3CD8F8, 0x10 + +gUnknown_83CD908:: @ 83CD908 + .incbin "baserom.gba", 0x3CD908, 0x18 + +gUnknown_83CD920:: @ 83CD920 + .incbin "baserom.gba", 0x3CD920, 0x2 + +gUnknown_83CD922:: @ 83CD922 + .incbin "baserom.gba", 0x3CD922, 0x2 + +gUnknown_83CD924:: @ 83CD924 + .incbin "baserom.gba", 0x3CD924, 0x2 + +gUnknown_83CD926:: @ 83CD926 + .incbin "baserom.gba", 0x3CD926, 0x2 + +gUnknown_83CD928:: @ 83CD928 + .incbin "baserom.gba", 0x3CD928, 0x8 + +gUnknown_83CD930:: @ 83CD930 + .incbin "baserom.gba", 0x3CD930, 0x2 + +gUnknown_83CD932:: @ 83CD932 + .incbin "baserom.gba", 0x3CD932, 0x2 + +gUnknown_83CD934:: @ 83CD934 + .incbin "baserom.gba", 0x3CD934, 0x2 + +gUnknown_83CD936:: @ 83CD936 + .incbin "baserom.gba", 0x3CD936, 0x2 + +gUnknown_83CD938:: @ 83CD938 + .incbin "baserom.gba", 0x3CD938, 0x2 + +gUnknown_83CD93A:: @ 83CD93A + .incbin "baserom.gba", 0x3CD93A, 0x2 + +gUnknown_83CD93C:: @ 83CD93C + .incbin "baserom.gba", 0x3CD93C, 0x2 + +gUnknown_83CD93E:: @ 83CD93E + .incbin "baserom.gba", 0x3CD93E, 0x2 + +gUnknown_83CD940:: @ 83CD940 + .incbin "baserom.gba", 0x3CD940, 0x4 + +gUnknown_83CD944:: @ 83CD944 + .incbin "baserom.gba", 0x3CD944, 0x8 + +gUnknown_83CD94C:: @ 83CD94C + .incbin "baserom.gba", 0x3CD94C, 0x6 + +gUnknown_83CD952:: @ 83CD952 + .incbin "baserom.gba", 0x3CD952, 0x6 + +gUnknown_83CD958:: @ 83CD958 + .incbin "baserom.gba", 0x3CD958, 0x4 + +gUnknown_83CD95C:: @ 83CD95C + .incbin "baserom.gba", 0x3CD95C, 0x4 + +gUnknown_83CD960:: @ 83CD960 + .incbin "baserom.gba", 0x3CD960, 0x60 + +gUnknown_83CD9C0:: @ 83CD9C0 + .incbin "baserom.gba", 0x3CD9C0, 0x60 + +gUnknown_83CDA20:: @ 83CDA20 + .incbin "baserom.gba", 0x3CDA20, 0x28 + +gUnknown_83CDA48:: @ 83CDA48 + .incbin "baserom.gba", 0x3CDA48, 0x28 + +gUnknown_83CDA70:: @ 83CDA70 + .incbin "baserom.gba", 0x3CDA70, 0x24 + +gUnknown_83CDA94:: @ 83CDA94 + .incbin "baserom.gba", 0x3CDA94, 0x4 + +gUnknown_83CDA98:: @ 83CDA98 + .incbin "baserom.gba", 0x3CDA98, 0x20 + +gUnknown_83CDAB8:: @ 83CDAB8 + .incbin "baserom.gba", 0x3CDAB8, 0x800 + +gUnknown_83CE2B8:: @ 83CE2B8 + .incbin "baserom.gba", 0x3CE2B8, 0x180 + +gUnknown_83CE438:: @ 83CE438 + .incbin "baserom.gba", 0x3CE438, 0x98 + +gUnknown_83CE4D0:: @ 83CE4D0 + .incbin "baserom.gba", 0x3CE4D0, 0x12C + +gUnknown_83CE5FC:: @ 83CE5FC + .incbin "baserom.gba", 0x3CE5FC, 0xFC + +gUnknown_83CE6F8:: @ 83CE6F8 + .incbin "baserom.gba", 0x3CE6F8, 0x40 + +gUnknown_83CE738:: @ 83CE738 + .incbin "baserom.gba", 0x3CE738, 0x20 + +gUnknown_83CE758:: @ 83CE758 + .incbin "baserom.gba", 0x3CE758, 0x20 + +gUnknown_83CE778:: @ 83CE778 + .incbin "baserom.gba", 0x3CE778, 0x48 + +gUnknown_83CE7C0:: @ 83CE7C0 + .incbin "baserom.gba", 0x3CE7C0, 0x18 + +gUnknown_83CE7D8:: @ 83CE7D8 + .incbin "baserom.gba", 0x3CE7D8, 0x238 + +gUnknown_83CEA10:: @ 83CEA10 + .incbin "baserom.gba", 0x3CEA10, 0x20 + +gUnknown_83CEA30:: @ 83CEA30 + .incbin "baserom.gba", 0x3CEA30, 0x20 + +gUnknown_83CEA50:: @ 83CEA50 + .incbin "baserom.gba", 0x3CEA50, 0x10 + +gUnknown_83CEA60:: @ 83CEA60 + .incbin "baserom.gba", 0x3CEA60, 0x8 + +gUnknown_83CEA68:: @ 83CEA68 + .incbin "baserom.gba", 0x3CEA68, 0x8 + +gUnknown_83CEA70:: @ 83CEA70 + .incbin "baserom.gba", 0x3CEA70, 0x18 + +gUnknown_83CEA88:: @ 83CEA88 + .incbin "baserom.gba", 0x3CEA88, 0xF8 + +gUnknown_83CEB80:: @ 83CEB80 + .incbin "baserom.gba", 0x3CEB80, 0x58 + +gUnknown_83CEBD8:: @ 83CEBD8 + .incbin "baserom.gba", 0x3CEBD8, 0x18 + +gUnknown_83CEBF0:: @ 83CEBF0 + .incbin "baserom.gba", 0x3CEBF0, 0x48 + +gUnknown_83CEC38:: @ 83CEC38 + .incbin "baserom.gba", 0x3CEC38, 0x3D98 + +gUnknown_83D29D0:: @ 83D29D0 + .incbin "baserom.gba", 0x3D29D0, 0x40 + +gUnknown_83D2A10:: @ 83D2A10 + .incbin "baserom.gba", 0x3D2A10, 0x144 + +gUnknown_83D2B54:: @ 83D2B54 + .incbin "baserom.gba", 0x3D2B54, 0x28 + +gUnknown_83D2B7C:: @ 83D2B7C + .incbin "baserom.gba", 0x3D2B7C, 0x38 + +gUnknown_83D2BB4:: @ 83D2BB4 + .incbin "baserom.gba", 0x3D2BB4, 0x8B8 + +gUnknown_83D346C:: @ 83D346C + .incbin "baserom.gba", 0x3D346C, 0xC + +gUnknown_83D3478:: @ 83D3478 + .incbin "baserom.gba", 0x3D3478, 0x28 + +gUnknown_83D34A0:: @ 83D34A0 + .incbin "baserom.gba", 0x3D34A0, 0x18 + +gUnknown_83D34B8:: @ 83D34B8 + .incbin "baserom.gba", 0x3D34B8, 0x54 + +gUnknown_83D350C:: @ 83D350C + .incbin "baserom.gba", 0x3D350C, 0x18 + +gUnknown_83D3524:: @ 83D3524 + .incbin "baserom.gba", 0x3D3524, 0x18 + +gUnknown_83D353C:: @ 83D353C + .incbin "baserom.gba", 0x3D353C, 0x98 + +gUnknown_83D35D4:: @ 83D35D4 + .incbin "baserom.gba", 0x3D35D4, 0x8 + +gUnknown_83D35DC:: @ 83D35DC + .incbin "baserom.gba", 0x3D35DC, 0x14C + +gUnknown_83D3728:: @ 83D3728 + .incbin "baserom.gba", 0x3D3728, 0x18 + +gUnknown_83D3740:: @ 83D3740 + .incbin "baserom.gba", 0x3D3740, 0x60 + +gUnknown_83D37A0:: @ 83D37A0 + .incbin "baserom.gba", 0x3D37A0, 0x6E0 + +gUnknown_83D3E80:: @ 83D3E80 + .incbin "baserom.gba", 0x3D3E80, 0x1B8 + +gUnknown_83D4038:: @ 83D4038 + .incbin "baserom.gba", 0x3D4038, 0x30 + +gUnknown_83D4068:: @ 83D4068 + .incbin "baserom.gba", 0x3D4068, 0x44 + +gUnknown_83D40AC:: @ 83D40AC + .incbin "baserom.gba", 0x3D40AC, 0x34 + +gUnknown_83D40E0:: @ 83D40E0 + .incbin "baserom.gba", 0x3D40E0, 0x8 + +gUnknown_83D40E8:: @ 83D40E8 + .incbin "baserom.gba", 0x3D40E8, 0x18 + +gUnknown_83D4100:: @ 83D4100 + .incbin "baserom.gba", 0x3D4100, 0x4C + +gUnknown_83D414C:: @ 83D414C + .incbin "baserom.gba", 0x3D414C, 0x18 + +gUnknown_83D4164:: @ 83D4164 + .incbin "baserom.gba", 0x3D4164, 0x80 + +gUnknown_83D41E4:: @ 83D41E4 + .incbin "baserom.gba", 0x3D41E4, 0x8 + +gUnknown_83D41EC:: @ 83D41EC + .incbin "baserom.gba", 0x3D41EC, 0x8 + +gUnknown_83D41F4:: @ 83D41F4 + .incbin "baserom.gba", 0x3D41F4, 0x8 + +gUnknown_83D41FC:: @ 83D41FC + .incbin "baserom.gba", 0x3D41FC, 0x44 + +gUnknown_83D4240:: @ 83D4240 + .incbin "baserom.gba", 0x3D4240, 0x8 + +gUnknown_83D4248:: @ 83D4248 + .incbin "baserom.gba", 0x3D4248, 0x8 + +gUnknown_83D4250:: @ 83D4250 + .incbin "baserom.gba", 0x3D4250, 0x2C + +gUnknown_83D427C:: @ 83D427C + .incbin "baserom.gba", 0x3D427C, 0x18 + +gUnknown_83D4294:: @ 83D4294 + .incbin "baserom.gba", 0x3D4294, 0x6D94 + +gUnknown_83DB028:: @ 83DB028 + .incbin "baserom.gba", 0x3DB028, 0x4074 + +gUnknown_83DF09C:: @ 83DF09C + .incbin "baserom.gba", 0x3DF09C, 0x18 + +gUnknown_83DF0B4:: @ 83DF0B4 + .incbin "baserom.gba", 0x3DF0B4, 0x8 + +gUnknown_83DF0BC:: @ 83DF0BC + .incbin "baserom.gba", 0x3DF0BC, 0x8 + +gUnknown_83DF0C4:: @ 83DF0C4 + .incbin "baserom.gba", 0x3DF0C4, 0x10 + +gUnknown_83DF0D4:: @ 83DF0D4 + .incbin "baserom.gba", 0x3DF0D4, 0x6 + +gUnknown_83DF0DA:: @ 83DF0DA + .incbin "baserom.gba", 0x3DF0DA, 0x6 + +gUnknown_83DF0E0:: @ 83DF0E0 + .incbin "baserom.gba", 0x3DF0E0, 0x6 + +gUnknown_83DF0E6:: @ 83DF0E6 + .incbin "baserom.gba", 0x3DF0E6, 0x6 + +gUnknown_83DF0EC:: @ 83DF0EC + .incbin "baserom.gba", 0x3DF0EC, 0x6 + +gUnknown_83DF0F2:: @ 83DF0F2 + .incbin "baserom.gba", 0x3DF0F2, 0x6 + +gUnknown_83DF0F8:: @ 83DF0F8 + .incbin "baserom.gba", 0x3DF0F8, 0x6D4 + +gUnknown_83DF7CC:: @ 83DF7CC + .incbin "baserom.gba", 0x3DF7CC, 0x1C + +gUnknown_83DF7E8:: @ 83DF7E8 + .incbin "baserom.gba", 0x3DF7E8, 0x4B4 + +gUnknown_83DFC9C:: @ 83DFC9C + .incbin "baserom.gba", 0x3DFC9C, 0x814 + +gUnknown_83E04B0:: @ 83E04B0 + .incbin "baserom.gba", 0x3E04B0, 0x208 + +gUnknown_83E06B8:: @ 83E06B8 + .incbin "baserom.gba", 0x3E06B8, 0x74 + +gUnknown_83E072C:: @ 83E072C + .incbin "baserom.gba", 0x3E072C, 0xC + +gUnknown_83E0738:: @ 83E0738 + .incbin "baserom.gba", 0x3E0738, 0x10 + +gUnknown_83E0748:: @ 83E0748 + .incbin "baserom.gba", 0x3E0748, 0x20 + +gUnknown_83E0768:: @ 83E0768 + .incbin "baserom.gba", 0x3E0768, 0x818 + +gUnknown_83E0F80:: @ 83E0F80 + .incbin "baserom.gba", 0x3E0F80, 0x820 + +gUnknown_83E17A0:: @ 83E17A0 + .incbin "baserom.gba", 0x3E17A0, 0x20 + +gUnknown_83E17C0:: @ 83E17C0 + .incbin "baserom.gba", 0x3E17C0, 0x10 + +gUnknown_83E17D0:: @ 83E17D0 + .incbin "baserom.gba", 0x3E17D0, 0x10 + +gUnknown_83E17E0:: @ 83E17E0 + .incbin "baserom.gba", 0x3E17E0, 0xAA0 + +gUnknown_83E2280:: @ 83E2280 + .incbin "baserom.gba", 0x3E2280, 0x10 + +gUnknown_83E2290:: @ 83E2290 + .incbin "baserom.gba", 0x3E2290, 0x10 + +gUnknown_83E22A0:: @ 83E22A0 + .incbin "baserom.gba", 0x3E22A0, 0x30 + +gUnknown_83E22D0:: @ 83E22D0 + .incbin "baserom.gba", 0x3E22D0, 0x60 + +gUnknown_83E2330:: @ 83E2330 + .incbin "baserom.gba", 0x3E2330, 0x3 + +gUnknown_83E2333:: @ 83E2333 + .incbin "baserom.gba", 0x3E2333, 0x18 + +gUnknown_83E234B:: @ 83E234B + .incbin "baserom.gba", 0x3E234B, 0x3 + +gUnknown_83E234E:: @ 83E234E + .incbin "baserom.gba", 0x3E234E, 0x3 + +gUnknown_83E2351:: @ 83E2351 + .incbin "baserom.gba", 0x3E2351, 0x3 + +gUnknown_83E2354:: @ 83E2354 + .incbin "baserom.gba", 0x3E2354, 0x10 + +gUnknown_83E2364:: @ 83E2364 + .incbin "baserom.gba", 0x3E2364, 0x8 + +gUnknown_83E236C:: @ 83E236C + .incbin "baserom.gba", 0x3E236C, 0x8 + +gUnknown_83E2374:: @ 83E2374 + .incbin "baserom.gba", 0x3E2374, 0x4 + +gUnknown_83E2378:: @ 83E2378 + .incbin "baserom.gba", 0x3E2378, 0x10 + +gUnknown_83E2388:: @ 83E2388 + .incbin "baserom.gba", 0x3E2388, 0x6 + +gUnknown_83E238E:: @ 83E238E + .incbin "baserom.gba", 0x3E238E, 0x6 + +gUnknown_83E2394:: @ 83E2394 + .incbin "baserom.gba", 0x3E2394, 0x28 + +gUnknown_83E23BC:: @ 83E23BC + .incbin "baserom.gba", 0x3E23BC, 0x4 + +gUnknown_83E23C0:: @ 83E23C0 + .incbin "baserom.gba", 0x3E23C0, 0x8 + +gUnknown_83E23C8:: @ 83E23C8 + .incbin "baserom.gba", 0x3E23C8, 0x8 + +gUnknown_83E23D0:: @ 83E23D0 + .incbin "baserom.gba", 0x3E23D0, 0x10 + +gUnknown_83E23E0:: @ 83E23E0 + .incbin "baserom.gba", 0x3E23E0, 0x8 + +gUnknown_83E23E8:: @ 83E23E8 + .incbin "baserom.gba", 0x3E23E8, 0xA + +gUnknown_83E23F2:: @ 83E23F2 + .incbin "baserom.gba", 0x3E23F2, 0xA + +gUnknown_83E23FC:: @ 83E23FC + .incbin "baserom.gba", 0x3E23FC, 0x8 + +gUnknown_83E2404:: @ 83E2404 + .incbin "baserom.gba", 0x3E2404, 0x8 + +gUnknown_83E240C:: @ 83E240C + .incbin "baserom.gba", 0x3E240C, 0x14 + +gUnknown_83E2420:: @ 83E2420 + .incbin "baserom.gba", 0x3E2420, 0x8 + +gUnknown_83E2428:: @ 83E2428 + .incbin "baserom.gba", 0x3E2428, 0x14 + +gUnknown_83E243C:: @ 83E243C + .incbin "baserom.gba", 0x3E243C, 0x4 + +gUnknown_83E2440:: @ 83E2440 + .incbin "baserom.gba", 0x3E2440, 0xC + +gUnknown_83E244C:: @ 83E244C + .incbin "baserom.gba", 0x3E244C, 0xC + +gUnknown_83E2458:: @ 83E2458 + .incbin "baserom.gba", 0x3E2458, 0x34 + +gUnknown_83E248C:: @ 83E248C + .incbin "baserom.gba", 0x3E248C, 0x78 + +gUnknown_83E2504:: @ 83E2504 + .incbin "baserom.gba", 0x3E2504, 0x8 + +gUnknown_83E250C:: @ 83E250C + .incbin "baserom.gba", 0x3E250C, 0x18 + +gUnknown_83E2524:: @ 83E2524 + .incbin "baserom.gba", 0x3E2524, 0x8 + +gUnknown_83E252C:: @ 83E252C + .incbin "baserom.gba", 0x3E252C, 0x48 + +gUnknown_83E2574:: @ 83E2574 + .incbin "baserom.gba", 0x3E2574, 0x18 + +gUnknown_83E258C:: @ 83E258C + .incbin "baserom.gba", 0x3E258C, 0x18 + +gUnknown_83E25A4:: @ 83E25A4 + .incbin "baserom.gba", 0x3E25A4, 0x18 + +gUnknown_83E25BC:: @ 83E25BC + .incbin "baserom.gba", 0x3E25BC, 0x18 + +gUnknown_83E25D4:: @ 83E25D4 + .incbin "baserom.gba", 0x3E25D4, 0x18 + +gUnknown_83E25EC:: @ 83E25EC + .incbin "baserom.gba", 0x3E25EC, 0x18 + +gUnknown_83E2604:: @ 83E2604 + .incbin "baserom.gba", 0x3E2604, 0x18 + +gUnknown_83E261C:: @ 83E261C + .incbin "baserom.gba", 0x3E261C, 0x18 + +gUnknown_83E2634:: @ 83E2634 + .incbin "baserom.gba", 0x3E2634, 0x18 + +gUnknown_83E264C:: @ 83E264C + .incbin "baserom.gba", 0x3E264C, 0x30 + +gUnknown_83E267C:: @ 83E267C + .incbin "baserom.gba", 0x3E267C, 0x68 + +gUnknown_83E26E4:: @ 83E26E4 + .incbin "baserom.gba", 0x3E26E4, 0x48 + +gUnknown_83E272C:: @ 83E272C + .incbin "baserom.gba", 0x3E272C, 0x80 + +gUnknown_83E27AC:: @ 83E27AC + .incbin "baserom.gba", 0x3E27AC, 0x1A8 + +gUnknown_83E2954:: @ 83E2954 + .incbin "baserom.gba", 0x3E2954, 0x134 + +gUnknown_83E2A88:: @ 83E2A88 + .incbin "baserom.gba", 0x3E2A88, 0x4F0 + +gUnknown_83E2F78:: @ 83E2F78 + .incbin "baserom.gba", 0x3E2F78, 0x78 + +gUnknown_83E2FF0:: @ 83E2FF0 + .incbin "baserom.gba", 0x3E2FF0, 0x100 + +gUnknown_83E30F0:: @ 83E30F0 + .incbin "baserom.gba", 0x3E30F0, 0x458 + +gUnknown_83E3548:: @ 83E3548 + .incbin "baserom.gba", 0x3E3548, 0x1EC + +gUnknown_83E3734:: @ 83E3734 + .incbin "baserom.gba", 0x3E3734, 0x30 + +gUnknown_83E3764:: @ 83E3764 + .incbin "baserom.gba", 0x3E3764, 0x134 + +gUnknown_83E3898:: @ 83E3898 + .incbin "baserom.gba", 0x3E3898, 0xF4 + +gUnknown_83E398C:: @ 83E398C + .incbin "baserom.gba", 0x3E398C, 0x29C + +gUnknown_83E3C28:: @ 83E3C28 + .incbin "baserom.gba", 0x3E3C28, 0xF0 + +gUnknown_83E3D18:: @ 83E3D18 + .incbin "baserom.gba", 0x3E3D18, 0x148 + +gUnknown_83E3E60:: @ 83E3E60 + .incbin "baserom.gba", 0x3E3E60, 0x20 + +gUnknown_83E3E80:: @ 83E3E80 + .incbin "baserom.gba", 0x3E3E80, 0x9C + +gUnknown_83E3F1C:: @ 83E3F1C + .incbin "baserom.gba", 0x3E3F1C, 0x20C + +gUnknown_83E4128:: @ 83E4128 + .incbin "baserom.gba", 0x3E4128, 0x2C + +gUnknown_83E4154:: @ 83E4154 + .incbin "baserom.gba", 0x3E4154, 0x18 + +gUnknown_83E416C:: @ 83E416C + .incbin "baserom.gba", 0x3E416C, 0x5C + +gUnknown_83E41C8:: @ 83E41C8 + .incbin "baserom.gba", 0x3E41C8, 0x38 + +gUnknown_83E4200:: @ 83E4200 + .incbin "baserom.gba", 0x3E4200, 0x210 + +gUnknown_83E4410:: @ 83E4410 + .incbin "baserom.gba", 0x3E4410, 0x1488 + +gUnknown_83E5898:: @ 83E5898 + .incbin "baserom.gba", 0x3E5898, 0x248 + +gUnknown_83E5AE0:: @ 83E5AE0 + .incbin "baserom.gba", 0x3E5AE0, 0xA8 + +gUnknown_83E5B88:: @ 83E5B88 + .incbin "baserom.gba", 0x3E5B88, 0x2A4 + +gUnknown_83E5E2C:: @ 83E5E2C + .incbin "baserom.gba", 0x3E5E2C, 0x18 + +gUnknown_83E5E44:: @ 83E5E44 + .incbin "baserom.gba", 0x3E5E44, 0x2 + +gUnknown_83E5E46:: @ 83E5E46 + .incbin "baserom.gba", 0x3E5E46, 0xB6 + +gUnknown_83E5EFC:: @ 83E5EFC + .incbin "baserom.gba", 0x3E5EFC, 0x10 + +gUnknown_83E5F0C:: @ 83E5F0C + .incbin "baserom.gba", 0x3E5F0C, 0x2C + +gUnknown_83E5F38:: @ 83E5F38 + .incbin "baserom.gba", 0x3E5F38, 0x168 + +gUnknown_83E60A0:: @ 83E60A0 + .incbin "baserom.gba", 0x3E60A0, 0x18 + +gUnknown_83E60B8:: @ 83E60B8 + .incbin "baserom.gba", 0x3E60B8, 0x18 + +gUnknown_83E60D0:: @ 83E60D0 + .incbin "baserom.gba", 0x3E60D0, 0x50 + +gUnknown_83E6120:: @ 83E6120 + .incbin "baserom.gba", 0x3E6120, 0x158 + +gUnknown_83E6278:: @ 83E6278 + .incbin "baserom.gba", 0x3E6278, 0x30 + +gUnknown_83E62A8:: @ 83E62A8 + .incbin "baserom.gba", 0x3E62A8, 0x138 + +gUnknown_83E63E0:: @ 83E63E0 + .incbin "baserom.gba", 0x3E63E0, 0xF4 + +gUnknown_83E64D4:: @ 83E64D4 + .incbin "baserom.gba", 0x3E64D4, 0x2C + +gUnknown_83E6500:: @ 83E6500 + .incbin "baserom.gba", 0x3E6500, 0x2C + +gUnknown_83E652C:: @ 83E652C + .incbin "baserom.gba", 0x3E652C, 0x78 + +gUnknown_83E65A4:: @ 83E65A4 + .incbin "baserom.gba", 0x3E65A4, 0xA4C + +gUnknown_83E6FF0:: @ 83E6FF0 + .incbin "baserom.gba", 0x3E6FF0, 0x1C + +gUnknown_83E700C:: @ 83E700C + .incbin "baserom.gba", 0x3E700C, 0x20 + +gUnknown_83E702C:: @ 83E702C + .incbin "baserom.gba", 0x3E702C, 0x18 + +gUnknown_83E7044:: @ 83E7044 + .incbin "baserom.gba", 0x3E7044, 0xD0 + +gUnknown_83E7114:: @ 83E7114 + .incbin "baserom.gba", 0x3E7114, 0x35C + +gUnknown_83E7470:: @ 83E7470 + .incbin "baserom.gba", 0x3E7470, 0x68 + +gUnknown_83E74D8:: @ 83E74D8 + .incbin "baserom.gba", 0x3E74D8, 0x18 + +gUnknown_83E74F0:: @ 83E74F0 + .incbin "baserom.gba", 0x3E74F0, 0x178 + +gUnknown_83E7668:: @ 83E7668 + .incbin "baserom.gba", 0x3E7668, 0x78 + +gUnknown_83E76E0:: @ 83E76E0 + .incbin "baserom.gba", 0x3E76E0, 0x528 + +gUnknown_83E7C08:: @ 83E7C08 + .incbin "baserom.gba", 0x3E7C08, 0x30 + +gUnknown_83E7C38:: @ 83E7C38 + .incbin "baserom.gba", 0x3E7C38, 0x60 + +gUnknown_83E7C98:: @ 83E7C98 + .incbin "baserom.gba", 0x3E7C98, 0x30 + +gUnknown_83E7CC8:: @ 83E7CC8 + .incbin "baserom.gba", 0x3E7CC8, 0x2 + +gUnknown_83E7CCA:: @ 83E7CCA + .incbin "baserom.gba", 0x3E7CCA, 0x4 + +gUnknown_83E7CCE:: @ 83E7CCE + .incbin "baserom.gba", 0x3E7CCE, 0x6 + +gUnknown_83E7CD4:: @ 83E7CD4 + .incbin "baserom.gba", 0x3E7CD4, 0x28 + +gUnknown_83E7CFC:: @ 83E7CFC + .incbin "baserom.gba", 0x3E7CFC, 0x14 + +gUnknown_83E7D10:: @ 83E7D10 + .incbin "baserom.gba", 0x3E7D10, 0xC + +gUnknown_83E7D1C:: @ 83E7D1C + .incbin "baserom.gba", 0x3E7D1C, 0x51B8 + +gUnknown_83ECED4:: @ 83ECED4 + .incbin "baserom.gba", 0x3ECED4, 0xFEC + +gUnknown_83EDEC0:: @ 83EDEC0 + .incbin "baserom.gba", 0x3EDEC0, 0xD8 + +gUnknown_83EDF98:: @ 83EDF98 + .incbin "baserom.gba", 0x3EDF98, 0x58 + +gUnknown_83EDFF0:: @ 83EDFF0 + .incbin "baserom.gba", 0x3EDFF0, 0x8 + +gUnknown_83EDFF8:: @ 83EDFF8 + .incbin "baserom.gba", 0x3EDFF8, 0xC + +gUnknown_83EE004:: @ 83EE004 + .incbin "baserom.gba", 0x3EE004, 0x4 + +gUnknown_83EE008:: @ 83EE008 + .incbin "baserom.gba", 0x3EE008, 0x20 + +gUnknown_83EE028:: @ 83EE028 + .incbin "baserom.gba", 0x3EE028, 0x808 + +gUnknown_83EE830:: @ 83EE830 + .incbin "baserom.gba", 0x3EE830, 0x8 + +gUnknown_83EE838:: @ 83EE838 + .incbin "baserom.gba", 0x3EE838, 0x58 + +gUnknown_83EE890:: @ 83EE890 + .incbin "baserom.gba", 0x3EE890, 0x38 + +gUnknown_83EE8C8:: @ 83EE8C8 + .incbin "baserom.gba", 0x3EE8C8, 0x8 + +gUnknown_83EE8D0:: @ 83EE8D0 + .incbin "baserom.gba", 0x3EE8D0, 0x88 + +gUnknown_83EE958:: @ 83EE958 + .incbin "baserom.gba", 0x3EE958, 0x40 + +gUnknown_83EE998:: @ 83EE998 + .incbin "baserom.gba", 0x3EE998, 0xC + +gUnknown_83EE9A4:: @ 83EE9A4 + .incbin "baserom.gba", 0x3EE9A4, 0x18 + +gUnknown_83EE9BC:: @ 83EE9BC + .incbin "baserom.gba", 0x3EE9BC, 0x4 + +gUnknown_83EE9C0:: @ 83EE9C0 + .incbin "baserom.gba", 0x3EE9C0, 0x8 + +gUnknown_83EE9C8:: @ 83EE9C8 + .incbin "baserom.gba", 0x3EE9C8, 0xFC + +gUnknown_83EEAC4:: @ 83EEAC4 + .incbin "baserom.gba", 0x3EEAC4, 0xA4 + +gUnknown_83EEB68:: @ 83EEB68 + .incbin "baserom.gba", 0x3EEB68, 0x88 + +gUnknown_83EEBF0:: @ 83EEBF0 + .incbin "baserom.gba", 0x3EEBF0, 0x8 + +gUnknown_83EEBF8:: @ 83EEBF8 + .incbin "baserom.gba", 0x3EEBF8, 0xA0 + +gUnknown_83EEC98:: @ 83EEC98 + .incbin "baserom.gba", 0x3EEC98, 0x50 + +gUnknown_83EECE8:: @ 83EECE8 + .incbin "baserom.gba", 0x3EECE8, 0x546 + +gUnknown_83EF22E:: @ 83EF22E + .incbin "baserom.gba", 0x3EF22E, 0xE + +gUnknown_83EF23C:: @ 83EF23C + .incbin "baserom.gba", 0x3EF23C, 0x1E + +gUnknown_83EF25A:: @ 83EF25A + .incbin "baserom.gba", 0x3EF25A, 0x2 + +gUnknown_83EF25C:: @ 83EF25C + .incbin "baserom.gba", 0x3EF25C, 0x20 + +gUnknown_83EF27C:: @ 83EF27C + .incbin "baserom.gba", 0x3EF27C, 0x20 + +gUnknown_83EF29C:: @ 83EF29C + .incbin "baserom.gba", 0x3EF29C, 0x20 + +gUnknown_83EF2BC:: @ 83EF2BC + .incbin "baserom.gba", 0x3EF2BC, 0x20 + +gUnknown_83EF2DC:: @ 83EF2DC + .incbin "baserom.gba", 0x3EF2DC, 0x40 + +gUnknown_83EF31C:: @ 83EF31C + .incbin "baserom.gba", 0x3EF31C, 0x68 + +gUnknown_83EF384:: @ 83EF384 + .incbin "baserom.gba", 0x3EF384, 0x20 + +gUnknown_83EF3A4:: @ 83EF3A4 + .incbin "baserom.gba", 0x3EF3A4, 0x20 + +gUnknown_83EF3C4:: @ 83EF3C4 + .incbin "baserom.gba", 0x3EF3C4, 0x8C + +gUnknown_83EF450:: @ 83EF450 + .incbin "baserom.gba", 0x3EF450, 0x90 + +gUnknown_83EF4E0:: @ 83EF4E0 + .incbin "baserom.gba", 0x3EF4E0, 0x44 + +gUnknown_83EF524:: @ 83EF524 + .incbin "baserom.gba", 0x3EF524, 0x78 + +gUnknown_83EF59C:: @ 83EF59C + .incbin "baserom.gba", 0x3EF59C, 0x80 + +gUnknown_83EF61C:: @ 83EF61C + .incbin "baserom.gba", 0x3EF61C, 0xD14 + +gUnknown_83F0330:: @ 83F0330 + .incbin "baserom.gba", 0x3F0330, 0x250 + +gUnknown_83F0580:: @ 83F0580 + .incbin "baserom.gba", 0x3F0580, 0x31C + +gUnknown_83F089C:: @ 83F089C + .incbin "baserom.gba", 0x3F089C, 0x260 + +gUnknown_83F0AFC:: @ 83F0AFC + .incbin "baserom.gba", 0x3F0AFC, 0x110 + +gUnknown_83F0C0C:: @ 83F0C0C + .incbin "baserom.gba", 0x3F0C0C, 0xE4 + +gUnknown_83F0CF0:: @ 83F0CF0 + .incbin "baserom.gba", 0x3F0CF0, 0x11C + +gUnknown_83F0E0C:: @ 83F0E0C + .incbin "baserom.gba", 0x3F0E0C, 0x110 + +gUnknown_83F0F1C:: @ 83F0F1C + .incbin "baserom.gba", 0x3F0F1C, 0x168 + +gUnknown_83F1084:: @ 83F1084 + .incbin "baserom.gba", 0x3F1084, 0x10C + +gUnknown_83F1190:: @ 83F1190 + .incbin "baserom.gba", 0x3F1190, 0x13C + +gUnknown_83F12CC:: @ 83F12CC + .incbin "baserom.gba", 0x3F12CC, 0x120 + +gUnknown_83F13EC:: @ 83F13EC + .incbin "baserom.gba", 0x3F13EC, 0x164 + +gUnknown_83F1550:: @ 83F1550 + .incbin "baserom.gba", 0x3F1550, 0xF0 + +gUnknown_83F1640:: @ 83F1640 + .incbin "baserom.gba", 0x3F1640, 0xF8 + +gUnknown_83F1738:: @ 83F1738 + .incbin "baserom.gba", 0x3F1738, 0xCC + +gUnknown_83F1804:: @ 83F1804 + .incbin "baserom.gba", 0x3F1804, 0xD4 + +gUnknown_83F18D8:: @ 83F18D8 + .incbin "baserom.gba", 0x3F18D8, 0x30 + +gUnknown_83F1908:: @ 83F1908 + .incbin "baserom.gba", 0x3F1908, 0x70 + +gUnknown_83F1978:: @ 83F1978 + .incbin "baserom.gba", 0x3F1978, 0x28 + +gUnknown_83F19A0:: @ 83F19A0 + .incbin "baserom.gba", 0x3F19A0, 0xB0 + +gUnknown_83F1A50:: @ 83F1A50 + .incbin "baserom.gba", 0x3F1A50, 0x10 + +gUnknown_83F1A60:: @ 83F1A60 + .incbin "baserom.gba", 0x3F1A60, 0x30 + +gUnknown_83F1A90:: @ 83F1A90 + .incbin "baserom.gba", 0x3F1A90, 0x4 + +gUnknown_83F1A94:: @ 83F1A94 + .incbin "baserom.gba", 0x3F1A94, 0x8 + +gUnknown_83F1A9C:: @ 83F1A9C + .incbin "baserom.gba", 0x3F1A9C, 0x8 + +gUnknown_83F1AA4:: @ 83F1AA4 + .incbin "baserom.gba", 0x3F1AA4, 0x5C + +gUnknown_83F1B00:: @ 83F1B00 + .incbin "baserom.gba", 0x3F1B00, 0xC + +gUnknown_83F1B0C:: @ 83F1B0C + .incbin "baserom.gba", 0x3F1B0C, 0x8 + +gUnknown_83F1B14:: @ 83F1B14 + .incbin "baserom.gba", 0x3F1B14, 0x8 + +gUnknown_83F1B1C:: @ 83F1B1C + .incbin "baserom.gba", 0x3F1B1C, 0x8 + +gUnknown_83F1B24:: @ 83F1B24 + .incbin "baserom.gba", 0x3F1B24, 0x14 + +gUnknown_83F1B38:: @ 83F1B38 + .incbin "baserom.gba", 0x3F1B38, 0x4 + +gUnknown_83F1B3C:: @ 83F1B3C + .incbin "baserom.gba", 0x3F1B3C, 0xE4 + +gUnknown_83F1C20:: @ 83F1C20 + .incbin "baserom.gba", 0x3F1C20, 0x10 + +gUnknown_83F1C30:: @ 83F1C30 + .incbin "baserom.gba", 0x3F1C30, 0x4 + +gUnknown_83F1C34:: @ 83F1C34 + .incbin "baserom.gba", 0x3F1C34, 0x8 + +gUnknown_83F1C3C:: @ 83F1C3C + .incbin "baserom.gba", 0x3F1C3C, 0x14 + +gUnknown_83F1C50:: @ 83F1C50 + .incbin "baserom.gba", 0x3F1C50, 0x4 + +gUnknown_83F1C54:: @ 83F1C54 + .incbin "baserom.gba", 0x3F1C54, 0x10 + +gUnknown_83F1C64:: @ 83F1C64 + .incbin "baserom.gba", 0x3F1C64, 0x4 + +gUnknown_83F1C68:: @ 83F1C68 + .incbin "baserom.gba", 0x3F1C68, 0x8 + +gUnknown_83F1C70:: @ 83F1C70 + .incbin "baserom.gba", 0x3F1C70, 0x24 + +gUnknown_83F1C94:: @ 83F1C94 + .incbin "baserom.gba", 0x3F1C94, 0x4 + +gUnknown_83F1C98:: @ 83F1C98 + .incbin "baserom.gba", 0x3F1C98, 0x8 + +gUnknown_83F1CA0:: @ 83F1CA0 + .incbin "baserom.gba", 0x3F1CA0, 0x4 + +gUnknown_83F1CA4:: @ 83F1CA4 + .incbin "baserom.gba", 0x3F1CA4, 0x4 + +gUnknown_83F1CA8:: @ 83F1CA8 + .incbin "baserom.gba", 0x3F1CA8, 0x4 + +gUnknown_83F1CAC:: @ 83F1CAC + .incbin "baserom.gba", 0x3F1CAC, 0x1B4 + +gUnknown_83F1E60:: @ 83F1E60 + .incbin "baserom.gba", 0x3F1E60, 0x318 + +gUnknown_83F2178:: @ 83F2178 + .incbin "baserom.gba", 0x3F2178, 0x318 + +gUnknown_83F2490:: @ 83F2490 + .incbin "baserom.gba", 0x3F2490, 0x294 + +gUnknown_83F2724:: @ 83F2724 + .incbin "baserom.gba", 0x3F2724, 0x294 + +gUnknown_83F29B8:: @ 83F29B8 + .incbin "baserom.gba", 0x3F29B8, 0x294 + +gUnknown_83F2C4C:: @ 83F2C4C + .incbin "baserom.gba", 0x3F2C4C, 0x294 + +gUnknown_83F2EE0:: @ 83F2EE0 + .incbin "baserom.gba", 0x3F2EE0, 0x144 + +gUnknown_83F3024:: @ 83F3024 + .incbin "baserom.gba", 0x3F3024, 0x2580 + +gUnknown_83F55A4:: @ 83F55A4 + .incbin "baserom.gba", 0x3F55A4, 0x178 + +gUnknown_83F571C:: @ 83F571C + .incbin "baserom.gba", 0x3F571C, 0x1C + +gUnknown_83F5738:: @ 83F5738 + .incbin "baserom.gba", 0x3F5738, 0xCC + +gUnknown_83F5804:: @ 83F5804 + .incbin "baserom.gba", 0x3F5804, 0x20 + +gUnknown_83F5824:: @ 83F5824 + .incbin "baserom.gba", 0x3F5824, 0x20 + +gUnknown_83F5844:: @ 83F5844 + .incbin "baserom.gba", 0x3F5844, 0x10 + +gUnknown_83F5854:: @ 83F5854 + .incbin "baserom.gba", 0x3F5854, 0x10 + +gUnknown_83F5864:: @ 83F5864 + .incbin "baserom.gba", 0x3F5864, 0x1E0 + +gUnknown_83F5A44:: @ 83F5A44 + .incbin "baserom.gba", 0x3F5A44, 0xB4 + +gUnknown_83F5AF8:: @ 83F5AF8 + .incbin "baserom.gba", 0x3F5AF8, 0x22 + +gUnknown_83F5B1A:: @ 83F5B1A + .incbin "baserom.gba", 0x3F5B1A, 0x16 + +gUnknown_83F5B30:: @ 83F5B30 + .incbin "baserom.gba", 0x3F5B30, 0xC + +gUnknown_83F5B3C:: @ 83F5B3C + .incbin "baserom.gba", 0x3F5B3C, 0x8 + +gUnknown_83F5B44:: @ 83F5B44 + .incbin "baserom.gba", 0x3F5B44, 0x50 + +gUnknown_83F5B94:: @ 83F5B94 + .incbin "baserom.gba", 0x3F5B94, 0x12 + +gUnknown_83F5BA6:: @ 83F5BA6 + .incbin "baserom.gba", 0x3F5BA6, 0x12 + +gUnknown_83F5BB8:: @ 83F5BB8 + .incbin "baserom.gba", 0x3F5BB8, 0x9 + +gUnknown_83F5BC1:: @ 83F5BC1 + .incbin "baserom.gba", 0x3F5BC1, 0xB + +gUnknown_83F5BCC:: @ 83F5BCC + .incbin "baserom.gba", 0x3F5BCC, 0x150 + +gUnknown_83F5D1C:: @ 83F5D1C + .incbin "baserom.gba", 0x3F5D1C, 0x10 + +gUnknown_83F5D2C:: @ 83F5D2C + .incbin "baserom.gba", 0x3F5D2C, 0x6 + +gUnknown_83F5D32:: @ 83F5D32 + .incbin "baserom.gba", 0x3F5D32, 0x26 + +gUnknown_83F5D58:: @ 83F5D58 + .incbin "baserom.gba", 0x3F5D58, 0x198 + +gUnknown_83F5EF0:: @ 83F5EF0 + .incbin "baserom.gba", 0x3F5EF0, 0x34 + +gUnknown_83F5F24:: @ 83F5F24 + .incbin "baserom.gba", 0x3F5F24, 0x2 + +gUnknown_83F5F26:: @ 83F5F26 + .incbin "baserom.gba", 0x3F5F26, 0x2A + +gUnknown_83F5F50:: @ 83F5F50 + .incbin "baserom.gba", 0x3F5F50, 0x160 + +gUnknown_83F60B0:: @ 83F60B0 + .incbin "baserom.gba", 0x3F60B0, 0x20 + +gUnknown_83F60D0:: @ 83F60D0 + .incbin "baserom.gba", 0x3F60D0, 0x100 + +gUnknown_83F61D0:: @ 83F61D0 + .incbin "baserom.gba", 0x3F61D0, 0x20 + +gUnknown_83F61F0:: @ 83F61F0 + .incbin "baserom.gba", 0x3F61F0, 0xB + +gUnknown_83F61FB:: @ 83F61FB + .incbin "baserom.gba", 0x3F61FB, 0x8 + +gUnknown_83F6203:: @ 83F6203 + .incbin "baserom.gba", 0x3F6203, 0x3 + +gUnknown_83F6206:: @ 83F6206 + .incbin "baserom.gba", 0x3F6206, 0x160 + +gUnknown_83F6366:: @ 83F6366 + .incbin "baserom.gba", 0x3F6366, 0x16 + +gUnknown_83F637C:: @ 83F637C + .incbin "baserom.gba", 0x3F637C, 0xC + +gUnknown_83F6388:: @ 83F6388 + .incbin "baserom.gba", 0x3F6388, 0xC0 + +gUnknown_83F6448:: @ 83F6448 + .incbin "baserom.gba", 0x3F6448, 0x20 + +gUnknown_83F6468:: @ 83F6468 + .incbin "baserom.gba", 0x3F6468, 0x800 + +gUnknown_83F6C68:: @ 83F6C68 + .incbin "baserom.gba", 0x3F6C68, 0x10 + +gUnknown_83F6C78:: @ 83F6C78 + .incbin "baserom.gba", 0x3F6C78, 0x4 + +gUnknown_83F6C7C:: @ 83F6C7C + .incbin "baserom.gba", 0x3F6C7C, 0x8 + +gUnknown_83F6C84:: @ 83F6C84 + .incbin "baserom.gba", 0x3F6C84, 0x2C + +gUnknown_83F6CB0:: @ 83F6CB0 + .incbin "baserom.gba", 0x3F6CB0, 0x6F8 + +gUnknown_83F73A8:: @ 83F73A8 + .incbin "baserom.gba", 0x3F73A8, 0x4E4 + +gUnknown_83F788C:: @ 83F788C + .incbin "baserom.gba", 0x3F788C, 0x4D4 + +gUnknown_83F7D60:: @ 83F7D60 + .incbin "baserom.gba", 0x3F7D60, 0x6A0 + +gUnknown_83F8400:: @ 83F8400 + .incbin "baserom.gba", 0x3F8400, 0x40 + +gUnknown_83F8440:: @ 83F8440 + .incbin "baserom.gba", 0x3F8440, 0x2D + +gUnknown_83F846D:: @ 83F846D + .incbin "baserom.gba", 0x3F846D, 0x10 + +gUnknown_83F847D:: @ 83F847D + .incbin "baserom.gba", 0x3F847D, 0x323 + +gUnknown_83F87A0:: @ 83F87A0 + .incbin "baserom.gba", 0x3F87A0, 0x580 + +gUnknown_83F8D20:: @ 83F8D20 + .incbin "baserom.gba", 0x3F8D20, 0x240 + +gUnknown_83F8F60:: @ 83F8F60 + .incbin "baserom.gba", 0x3F8F60, 0x11E0 + +gUnknown_83FA140:: @ 83FA140 + .incbin "baserom.gba", 0x3FA140, 0x1E0 + +gUnknown_83FA320:: @ 83FA320 + .incbin "baserom.gba", 0x3FA320, 0x48 + +gUnknown_83FA368:: @ 83FA368 + .incbin "baserom.gba", 0x3FA368, 0x48 + +gUnknown_83FA3B0:: @ 83FA3B0 + .incbin "baserom.gba", 0x3FA3B0, 0x10 + +gUnknown_83FA3C0:: @ 83FA3C0 + .incbin "baserom.gba", 0x3FA3C0, 0xC + +gUnknown_83FA3CC:: @ 83FA3CC + .incbin "baserom.gba", 0x3FA3CC, 0x8 + +gUnknown_83FA3D4:: @ 83FA3D4 + .incbin "baserom.gba", 0x3FA3D4, 0x8 + +gUnknown_83FA3DC:: @ 83FA3DC + .incbin "baserom.gba", 0x3FA3DC, 0x18 + +gUnknown_83FA3F4:: @ 83FA3F4 + .incbin "baserom.gba", 0x3FA3F4, 0xC + +gUnknown_83FA400:: @ 83FA400 + .incbin "baserom.gba", 0x3FA400, 0x4 + +gUnknown_83FA404:: @ 83FA404 + .incbin "baserom.gba", 0x3FA404, 0xA + +gUnknown_83FA40E:: @ 83FA40E + .incbin "baserom.gba", 0x3FA40E, 0x6 + +gUnknown_83FA414:: @ 83FA414 + .incbin "baserom.gba", 0x3FA414, 0x1C + +gUnknown_83FA430:: @ 83FA430 + .incbin "baserom.gba", 0x3FA430, 0x8 + +gUnknown_83FA438:: @ 83FA438 + .incbin "baserom.gba", 0x3FA438, 0xC + +gUnknown_83FA444:: @ 83FA444 + .incbin "baserom.gba", 0x3FA444, 0x20 + +gUnknown_83FA464:: @ 83FA464 + .incbin "baserom.gba", 0x3FA464, 0x8 + +gUnknown_83FA46C:: @ 83FA46C + .incbin "baserom.gba", 0x3FA46C, 0x28 + +gUnknown_83FA494:: @ 83FA494 + .incbin "baserom.gba", 0x3FA494, 0x6 + +gUnknown_83FA49A:: @ 83FA49A + .incbin "baserom.gba", 0x3FA49A, 0x14 + +gUnknown_83FA4AE:: @ 83FA4AE + .incbin "baserom.gba", 0x3FA4AE, 0x16 + +gUnknown_83FA4C4:: @ 83FA4C4 + .incbin "baserom.gba", 0x3FA4C4, 0x1C + +gUnknown_83FA4E0:: @ 83FA4E0 + .incbin "baserom.gba", 0x3FA4E0, 0x4 + +gUnknown_83FA4E4:: @ 83FA4E4 + .incbin "baserom.gba", 0x3FA4E4, 0x4 + +gUnknown_83FA4E8:: @ 83FA4E8 + .incbin "baserom.gba", 0x3FA4E8, 0xC + +gUnknown_83FA4F4:: @ 83FA4F4 + .incbin "baserom.gba", 0x3FA4F4, 0x14 + +gUnknown_83FA508:: @ 83FA508 + .incbin "baserom.gba", 0x3FA508, 0xC + +gUnknown_83FA514:: @ 83FA514 + .incbin "baserom.gba", 0x3FA514, 0xC + +gUnknown_83FA520:: @ 83FA520 + .incbin "baserom.gba", 0x3FA520, 0x14 + +gUnknown_83FA534:: @ 83FA534 + .incbin "baserom.gba", 0x3FA534, 0x46 + +gUnknown_83FA57A:: @ 83FA57A + .incbin "baserom.gba", 0x3FA57A, 0xE + +gUnknown_83FA588:: @ 83FA588 + .incbin "baserom.gba", 0x3FA588, 0x44 + +gUnknown_83FA5CC:: @ 83FA5CC + .incbin "baserom.gba", 0x3FA5CC, 0x6C + +gUnknown_83FA638:: @ 83FA638 + .incbin "baserom.gba", 0x3FA638, 0x108 + +gUnknown_83FA740:: @ 83FA740 + .incbin "baserom.gba", 0x3FA740, 0x14 + +gUnknown_83FA754:: @ 83FA754 + .incbin "baserom.gba", 0x3FA754, 0x30 + +gUnknown_83FA784:: @ 83FA784 + .incbin "baserom.gba", 0x3FA784, 0x4B0 + +gUnknown_83FAC34:: @ 83FAC34 + .incbin "baserom.gba", 0x3FAC34, 0x500 + +gUnknown_83FB134:: @ 83FB134 + .incbin "baserom.gba", 0x3FB134, 0xA80 + +gUnknown_83FBBB4:: @ 83FBBB4 + .incbin "baserom.gba", 0x3FBBB4, 0x35 + +gUnknown_83FBBE9:: @ 83FBBE9 + .incbin "baserom.gba", 0x3FBBE9, 0xE43 + +gUnknown_83FCA2C:: @ 83FCA2C + .incbin "baserom.gba", 0x3FCA2C, 0x11E + +gUnknown_83FCB4A:: @ 83FCB4A + .incbin "baserom.gba", 0x3FCB4A, 0x20 + +gUnknown_83FCB6A:: @ 83FCB6A + .incbin "baserom.gba", 0x3FCB6A, 0x120 + +gUnknown_83FCC8A:: @ 83FCC8A + .incbin "baserom.gba", 0x3FCC8A, 0x5A + +gUnknown_83FCCE4:: @ 83FCCE4 + .incbin "baserom.gba", 0x3FCCE4, 0x14 + +gUnknown_83FCCF8:: @ 83FCCF8 + .incbin "baserom.gba", 0x3FCCF8, 0x17 + +gUnknown_83FCD0F:: @ 83FCD0F + .incbin "baserom.gba", 0x3FCD0F, 0x18 + +gUnknown_83FCD27:: @ 83FCD27 + .incbin "baserom.gba", 0x3FCD27, 0x1A + +gUnknown_83FCD41:: @ 83FCD41 + .incbin "baserom.gba", 0x3FCD41, 0x25 + +gUnknown_83FCD66:: @ 83FCD66 + .incbin "baserom.gba", 0x3FCD66, 0x2C + +gUnknown_83FCD92:: @ 83FCD92 + .incbin "baserom.gba", 0x3FCD92, 0xD + +gUnknown_83FCD9F:: @ 83FCD9F + .incbin "baserom.gba", 0x3FCD9F, 0x428 + +gUnknown_83FD1C7:: @ 83FD1C7 + .incbin "baserom.gba", 0x3FD1C7, 0xBD + +gUnknown_83FD284:: @ 83FD284 + .incbin "baserom.gba", 0x3FD284, 0x13 + +gUnknown_83FD297:: @ 83FD297 + .incbin "baserom.gba", 0x3FD297, 0x13 + +gUnknown_83FD2AA:: @ 83FD2AA + .incbin "baserom.gba", 0x3FD2AA, 0x15 + +gUnknown_83FD2BF:: @ 83FD2BF + .incbin "baserom.gba", 0x3FD2BF, 0x1A + +gUnknown_83FD2D9:: @ 83FD2D9 + .incbin "baserom.gba", 0x3FD2D9, 0x34 + +gUnknown_83FD30D:: @ 83FD30D + .incbin "baserom.gba", 0x3FD30D, 0x59 + +gUnknown_83FD366:: @ 83FD366 + .incbin "baserom.gba", 0x3FD366, 0x1D + +gUnknown_83FD383:: @ 83FD383 + .incbin "baserom.gba", 0x3FD383, 0x14 + +gUnknown_83FD397:: @ 83FD397 + .incbin "baserom.gba", 0x3FD397, 0x1A + +gUnknown_83FD3B1:: @ 83FD3B1 + .incbin "baserom.gba", 0x3FD3B1, 0x16 + +gUnknown_83FD3C7:: @ 83FD3C7 + .incbin "baserom.gba", 0x3FD3C7, 0x1D + +gUnknown_83FD3E4:: @ 83FD3E4 + .incbin "baserom.gba", 0x3FD3E4, 0x13 + +gUnknown_83FD3F7:: @ 83FD3F7 + .incbin "baserom.gba", 0x3FD3F7, 0x10 + +gUnknown_83FD407:: @ 83FD407 + .incbin "baserom.gba", 0x3FD407, 0x17 + +gUnknown_83FD41E:: @ 83FD41E + .incbin "baserom.gba", 0x3FD41E, 0x20 + +gUnknown_83FD43E:: @ 83FD43E + .incbin "baserom.gba", 0x3FD43E, 0x10 + +gUnknown_83FD44E:: @ 83FD44E + .incbin "baserom.gba", 0x3FD44E, 0x10 + +gUnknown_83FD45E:: @ 83FD45E + .incbin "baserom.gba", 0x3FD45E, 0x8 + +gUnknown_83FD466:: @ 83FD466 + .incbin "baserom.gba", 0x3FD466, 0xF + +gUnknown_83FD475:: @ 83FD475 + .incbin "baserom.gba", 0x3FD475, 0x8 + +gUnknown_83FD47D:: @ 83FD47D + .incbin "baserom.gba", 0x3FD47D, 0xB + +gUnknown_83FD488:: @ 83FD488 + .incbin "baserom.gba", 0x3FD488, 0xF + +gUnknown_83FD497:: @ 83FD497 + .incbin "baserom.gba", 0x3FD497, 0x1E + +gUnknown_83FD4B5:: @ 83FD4B5 + .incbin "baserom.gba", 0x3FD4B5, 0x18 + +gUnknown_83FD4CD:: @ 83FD4CD + .incbin "baserom.gba", 0x3FD4CD, 0x1E + +gUnknown_83FD4EB:: @ 83FD4EB + .incbin "baserom.gba", 0x3FD4EB, 0xF + +gUnknown_83FD4FA:: @ 83FD4FA + .incbin "baserom.gba", 0x3FD4FA, 0x13 + +gUnknown_83FD50D:: @ 83FD50D + .incbin "baserom.gba", 0x3FD50D, 0x15 + +gUnknown_83FD522:: @ 83FD522 + .incbin "baserom.gba", 0x3FD522, 0x13 + +gUnknown_83FD535:: @ 83FD535 + .incbin "baserom.gba", 0x3FD535, 0x10 + +gUnknown_83FD545:: @ 83FD545 + .incbin "baserom.gba", 0x3FD545, 0x10 + +gUnknown_83FD555:: @ 83FD555 + .incbin "baserom.gba", 0x3FD555, 0x6 + +gUnknown_83FD55B:: @ 83FD55B + .incbin "baserom.gba", 0x3FD55B, 0x5 + +gUnknown_83FD560:: @ 83FD560 + .incbin "baserom.gba", 0x3FD560, 0x4 + +gUnknown_83FD564:: @ 83FD564 + .incbin "baserom.gba", 0x3FD564, 0x5 + +gUnknown_83FD569:: @ 83FD569 + .incbin "baserom.gba", 0x3FD569, 0x4 + +gUnknown_83FD56D:: @ 83FD56D + .incbin "baserom.gba", 0x3FD56D, 0x5 + +gUnknown_83FD572:: @ 83FD572 + .incbin "baserom.gba", 0x3FD572, 0x4 + +gUnknown_83FD576:: @ 83FD576 + .incbin "baserom.gba", 0x3FD576, 0x5 + +gUnknown_83FD57B:: @ 83FD57B + .incbin "baserom.gba", 0x3FD57B, 0xB + +gUnknown_83FD586:: @ 83FD586 + .incbin "baserom.gba", 0x3FD586, 0x2 + +gUnknown_83FD588:: @ 83FD588 + .incbin "baserom.gba", 0x3FD588, 0x2 + +gUnknown_83FD58A:: @ 83FD58A + .incbin "baserom.gba", 0x3FD58A, 0x2 + +gUnknown_83FD58C:: @ 83FD58C + .incbin "baserom.gba", 0x3FD58C, 0x2 + +gUnknown_83FD58E:: @ 83FD58E + .incbin "baserom.gba", 0x3FD58E, 0x42 + +gUnknown_83FD5D0:: @ 83FD5D0 + .incbin "baserom.gba", 0x3FD5D0, 0x6C + +gUnknown_83FD63C:: @ 83FD63C + .incbin "baserom.gba", 0x3FD63C, 0x1DE + +gUnknown_83FD81A:: @ 83FD81A + .incbin "baserom.gba", 0x3FD81A, 0xA + +gUnknown_83FD824:: @ 83FD824 + .incbin "baserom.gba", 0x3FD824, 0x7E + +gUnknown_83FD8A2:: @ 83FD8A2 + .incbin "baserom.gba", 0x3FD8A2, 0xD + +gUnknown_83FD8AF:: @ 83FD8AF + .incbin "baserom.gba", 0x3FD8AF, 0x19D + +gUnknown_83FDA4C:: @ 83FDA4C + .incbin "baserom.gba", 0x3FDA4C, 0x96 + +gUnknown_83FDAE2:: @ 83FDAE2 + .incbin "baserom.gba", 0x3FDAE2, 0xB0 + +gUnknown_83FDB92:: @ 83FDB92 + .incbin "baserom.gba", 0x3FDB92, 0x5D + +gUnknown_83FDBEF:: @ 83FDBEF + .incbin "baserom.gba", 0x3FDBEF, 0x69 + +gUnknown_83FDC58:: @ 83FDC58 + .incbin "baserom.gba", 0x3FDC58, 0x3D + +gUnknown_83FDC95:: @ 83FDC95 + .incbin "baserom.gba", 0x3FDC95, 0x3D + +gUnknown_83FDCD2:: @ 83FDCD2 + .incbin "baserom.gba", 0x3FDCD2, 0x51 + +gUnknown_83FDD23:: @ 83FDD23 + .incbin "baserom.gba", 0x3FDD23, 0x41 + +gUnknown_83FDD64:: @ 83FDD64 + .incbin "baserom.gba", 0x3FDD64, 0x87 + +gUnknown_83FDDEB:: @ 83FDDEB + .incbin "baserom.gba", 0x3FDDEB, 0x151 + +gUnknown_83FDF3C:: @ 83FDF3C + .incbin "baserom.gba", 0x3FDF3C, 0x5D8 + +gUnknown_83FE514:: @ 83FE514 + .incbin "baserom.gba", 0x3FE514, 0x150 + +gUnknown_83FE664:: @ 83FE664 + .incbin "baserom.gba", 0x3FE664, 0xE + +gUnknown_83FE672:: @ 83FE672 + .incbin "baserom.gba", 0x3FE672, 0x16 + +gUnknown_83FE688:: @ 83FE688 + .incbin "baserom.gba", 0x3FE688, 0x2D + +gUnknown_83FE6B5:: @ 83FE6B5 + .incbin "baserom.gba", 0x3FE6B5, 0x1B + +gUnknown_83FE6D0:: @ 83FE6D0 + .incbin "baserom.gba", 0x3FE6D0, 0x5 + +gUnknown_83FE6D5:: @ 83FE6D5 + .incbin "baserom.gba", 0x3FE6D5, 0x11 + +gUnknown_83FE6E6:: @ 83FE6E6 + .incbin "baserom.gba", 0x3FE6E6, 0x14 + +gUnknown_83FE6FA:: @ 83FE6FA + .incbin "baserom.gba", 0x3FE6FA, 0x1A + +gUnknown_83FE714:: @ 83FE714 + .incbin "baserom.gba", 0x3FE714, 0x11 + +gUnknown_83FE725:: @ 83FE725 + .incbin "baserom.gba", 0x3FE725, 0x22 + +gUnknown_83FE747:: @ 83FE747 + .incbin "baserom.gba", 0x3FE747, 0x1F + +gUnknown_83FE766:: @ 83FE766 + .incbin "baserom.gba", 0x3FE766, 0x4 + +gUnknown_83FE76A:: @ 83FE76A + .incbin "baserom.gba", 0x3FE76A, 0x6 + +gUnknown_83FE770:: @ 83FE770 + .incbin "baserom.gba", 0x3FE770, 0x21 + +gUnknown_83FE791:: @ 83FE791 + .incbin "baserom.gba", 0x3FE791, 0xF + +gUnknown_83FE7A0:: @ 83FE7A0 + .incbin "baserom.gba", 0x3FE7A0, 0x6C + +gUnknown_83FE80C:: @ 83FE80C + .incbin "baserom.gba", 0x3FE80C, 0x10 + +gUnknown_83FE81C:: @ 83FE81C + .incbin "baserom.gba", 0x3FE81C, 0x3D + +gUnknown_83FE859:: @ 83FE859 + .incbin "baserom.gba", 0x3FE859, 0x3 + +gUnknown_83FE85C:: @ 83FE85C + .incbin "baserom.gba", 0x3FE85C, 0x2 + +gUnknown_83FE85E:: @ 83FE85E + .incbin "baserom.gba", 0x3FE85E, 0x2 + +gUnknown_83FE860:: @ 83FE860 + .incbin "baserom.gba", 0x3FE860, 0x4 + +gUnknown_83FE864:: @ 83FE864 + .incbin "baserom.gba", 0x3FE864, 0x4 + +gUnknown_83FE868:: @ 83FE868 + .incbin "baserom.gba", 0x3FE868, 0xC + +gUnknown_83FE874:: @ 83FE874 + .incbin "baserom.gba", 0x3FE874, 0x7 + +gUnknown_83FE87B:: @ 83FE87B + .incbin "baserom.gba", 0x3FE87B, 0x8 + +gUnknown_83FE883:: @ 83FE883 + .incbin "baserom.gba", 0x3FE883, 0x8 + +gUnknown_83FE88B:: @ 83FE88B + .incbin "baserom.gba", 0x3FE88B, 0x4 + +gUnknown_83FE88F:: @ 83FE88F + .incbin "baserom.gba", 0x3FE88F, 0xF3 + +gUnknown_83FE982:: @ 83FE982 + .incbin "baserom.gba", 0x3FE982, 0x16 + +gUnknown_83FE998:: @ 83FE998 + .incbin "baserom.gba", 0x3FE998, 0x2C + +gUnknown_83FE9C4:: @ 83FE9C4 + .incbin "baserom.gba", 0x3FE9C4, 0x10 + +gUnknown_83FE9D4:: @ 83FE9D4 + .incbin "baserom.gba", 0x3FE9D4, 0x10 + +gUnknown_83FE9E4:: @ 83FE9E4 + .incbin "baserom.gba", 0x3FE9E4, 0x1B + +gUnknown_83FE9FF:: @ 83FE9FF + .incbin "baserom.gba", 0x3FE9FF, 0x29 + +gUnknown_83FEA28:: @ 83FEA28 + .incbin "baserom.gba", 0x3FEA28, 0x48 + +gUnknown_83FEA70:: @ 83FEA70 + .incbin "baserom.gba", 0x3FEA70, 0xEC + +gUnknown_83FEB5C:: @ 83FEB5C + .incbin "baserom.gba", 0x3FEB5C, 0x8 + +gUnknown_83FEB64:: @ 83FEB64 + .incbin "baserom.gba", 0x3FEB64, 0x12C + +gUnknown_83FEC90:: @ 83FEC90 + .incbin "baserom.gba", 0x3FEC90, 0x4 + +gUnknown_83FEC94:: @ 83FEC94 + .incbin "baserom.gba", 0x3FEC94, 0x38 + +gUnknown_83FECCC:: @ 83FECCC + .incbin "baserom.gba", 0x3FECCC, 0x6 + +gUnknown_83FECD2:: @ 83FECD2 + .incbin "baserom.gba", 0x3FECD2, 0x4 + +gUnknown_83FECD6:: @ 83FECD6 + .incbin "baserom.gba", 0x3FECD6, 0xA + +gUnknown_83FECE0:: @ 83FECE0 + .incbin "baserom.gba", 0x3FECE0, 0x8 + +gUnknown_83FECE8:: @ 83FECE8 + .incbin "baserom.gba", 0x3FECE8, 0xC + +gUnknown_83FECF4:: @ 83FECF4 + .incbin "baserom.gba", 0x3FECF4, 0x6 + +gUnknown_83FECFA:: @ 83FECFA + .incbin "baserom.gba", 0x3FECFA, 0x6 + +gUnknown_83FED00:: @ 83FED00 + .incbin "baserom.gba", 0x3FED00, 0x380 + +gUnknown_83FF080:: @ 83FF080 + .incbin "baserom.gba", 0x3FF080, 0xB0 + +gUnknown_83FF130:: @ 83FF130 + .incbin "baserom.gba", 0x3FF130, 0x38 + +gUnknown_83FF168:: @ 83FF168 + .incbin "baserom.gba", 0x3FF168, 0x18 + +gUnknown_83FF180:: @ 83FF180 + .incbin "baserom.gba", 0x3FF180, 0x18 + +gUnknown_83FF198:: @ 83FF198 + .incbin "baserom.gba", 0x3FF198, 0x28 + +gUnknown_83FF1C0:: @ 83FF1C0 + .incbin "baserom.gba", 0x3FF1C0, 0x50 + +gUnknown_83FF210:: @ 83FF210 + .incbin "baserom.gba", 0x3FF210, 0x30 + +gUnknown_83FF240:: @ 83FF240 + .incbin "baserom.gba", 0x3FF240, 0x2C + +gUnknown_83FF26C:: @ 83FF26C + .incbin "baserom.gba", 0x3FF26C, 0x18 + +gUnknown_83FF284:: @ 83FF284 + .incbin "baserom.gba", 0x3FF284, 0x4 + +gUnknown_83FF288:: @ 83FF288 + .incbin "baserom.gba", 0x3FF288, 0x8 + +gUnknown_83FF290:: @ 83FF290 + .incbin "baserom.gba", 0x3FF290, 0x140 + +gUnknown_83FF3D0:: @ 83FF3D0 + .incbin "baserom.gba", 0x3FF3D0, 0x15C + +gUnknown_83FF52C:: @ 83FF52C + .incbin "baserom.gba", 0x3FF52C, 0x20 + +gUnknown_83FF54C:: @ 83FF54C + .incbin "baserom.gba", 0x3FF54C, 0x18 + +gUnknown_83FF564:: @ 83FF564 + .incbin "baserom.gba", 0x3FF564, 0x68 + +gUnknown_83FF5CC:: @ 83FF5CC + .incbin "baserom.gba", 0x3FF5CC, 0x60 + +gUnknown_83FF62C:: @ 83FF62C + .incbin "baserom.gba", 0x3FF62C, 0x30 + +gUnknown_83FF65C:: @ 83FF65C + .incbin "baserom.gba", 0x3FF65C, 0x14C + +gUnknown_83FF7A8:: @ 83FF7A8 + .incbin "baserom.gba", 0x3FF7A8, 0x24C + +gUnknown_83FF9F4:: @ 83FF9F4 + .incbin "baserom.gba", 0x3FF9F4, 0x8 + +gUnknown_83FF9FC:: @ 83FF9FC + .incbin "baserom.gba", 0x3FF9FC, 0x28 + +gUnknown_83FFA24:: @ 83FFA24 + .incbin "baserom.gba", 0x3FFA24, 0x18 + +gUnknown_83FFA3C:: @ 83FFA3C + .incbin "baserom.gba", 0x3FFA3C, 0x8 + +gUnknown_83FFA44:: @ 83FFA44 + .incbin "baserom.gba", 0x3FFA44, 0x48 + +gUnknown_83FFA8C:: @ 83FFA8C + .incbin "baserom.gba", 0x3FFA8C, 0x8 + +gUnknown_83FFA94:: @ 83FFA94 + .incbin "baserom.gba", 0x3FFA94, 0x30 + +gUnknown_83FFAC4:: @ 83FFAC4 + .incbin "baserom.gba", 0x3FFAC4, 0x1 + +gUnknown_83FFAC5:: @ 83FFAC5 + .incbin "baserom.gba", 0x3FFAC5, 0x5 + +gUnknown_83FFACA:: @ 83FFACA + .incbin "baserom.gba", 0x3FFACA, 0x7A + +gUnknown_83FFB44:: @ 83FFB44 + .incbin "baserom.gba", 0x3FFB44, 0x12C0 + +gUnknown_8400E04:: @ 8400E04 + .incbin "baserom.gba", 0x400E04, 0x12C0 + +gUnknown_84020C4:: @ 84020C4 + .incbin "baserom.gba", 0x4020C4, 0x16 + +gUnknown_84020DA:: @ 84020DA + .incbin "baserom.gba", 0x4020DA, 0xC + +gUnknown_84020E6:: @ 84020E6 + .incbin "baserom.gba", 0x4020E6, 0x12 + +gUnknown_84020F8:: @ 84020F8 + .incbin "baserom.gba", 0x4020F8, 0xE4 + +gUnknown_84021DC:: @ 84021DC + .incbin "baserom.gba", 0x4021DC, 0xC + +gUnknown_84021E8:: @ 84021E8 + .incbin "baserom.gba", 0x4021E8, 0x18 + +gUnknown_8402200:: @ 8402200 + .incbin "baserom.gba", 0x402200, 0x3 + +gUnknown_8402203:: @ 8402203 + .incbin "baserom.gba", 0x402203, 0x5 + +gUnknown_8402208:: @ 8402208 + .incbin "baserom.gba", 0x402208, 0x18 + +gUnknown_8402220:: @ 8402220 + .incbin "baserom.gba", 0x402220, 0x8 + +gUnknown_8402228:: @ 8402228 + .incbin "baserom.gba", 0x402228, 0x20 + +gUnknown_8402248:: @ 8402248 + .incbin "baserom.gba", 0x402248, 0x8 + +gUnknown_8402250:: @ 8402250 + .incbin "baserom.gba", 0x402250, 0x8 + +gUnknown_8402258:: @ 8402258 + .incbin "baserom.gba", 0x402258, 0x8 + +gUnknown_8402260:: @ 8402260 + .incbin "baserom.gba", 0x402260, 0x20 + +gUnknown_8402280:: @ 8402280 + .incbin "baserom.gba", 0x402280, 0x264 + +gUnknown_84024E4:: @ 84024E4 + .incbin "baserom.gba", 0x4024E4, 0x14C + +gUnknown_8402630:: @ 8402630 + .incbin "baserom.gba", 0x402630, 0x20 + +gUnknown_8402650:: @ 8402650 + .incbin "baserom.gba", 0x402650, 0x18 + +gUnknown_8402668:: @ 8402668 + .incbin "baserom.gba", 0x402668, 0xA4 + +gUnknown_840270C:: @ 840270C + .incbin "baserom.gba", 0x40270C, 0x20 + +gUnknown_840272C:: @ 840272C + .incbin "baserom.gba", 0x40272C, 0x1CC + +gUnknown_84028F8:: @ 84028F8 + .incbin "baserom.gba", 0x4028F8, 0x43C + +gUnknown_8402D34:: @ 8402D34 + .incbin "baserom.gba", 0x402D34, 0x20 + +gUnknown_8402D54:: @ 8402D54 + .incbin "baserom.gba", 0x402D54, 0x1294 + +gUnknown_8403FE8:: @ 8403FE8 + .incbin "baserom.gba", 0x403FE8, 0x8E4 + +gUnknown_84048CC:: @ 84048CC + .incbin "baserom.gba", 0x4048CC, 0x20 + +gUnknown_84048EC:: @ 84048EC + .incbin "baserom.gba", 0x4048EC, 0x690 + +gUnknown_8404F7C:: @ 8404F7C + .incbin "baserom.gba", 0x404F7C, 0x438 + +gUnknown_84053B4:: @ 84053B4 + .incbin "baserom.gba", 0x4053B4, 0x60 + +gUnknown_8405414:: @ 8405414 + .incbin "baserom.gba", 0x405414, 0x47C + +gUnknown_8405890:: @ 8405890 + .incbin "baserom.gba", 0x405890, 0x298 + +gUnknown_8405B28:: @ 8405B28 + .incbin "baserom.gba", 0x405B28, 0x1B4 + +gUnknown_8405CDC:: @ 8405CDC + .incbin "baserom.gba", 0x405CDC, 0xC8 + +gUnknown_8405DA4:: @ 8405DA4 + .incbin "baserom.gba", 0x405DA4, 0x20 + +gUnknown_8405DC4:: @ 8405DC4 + .incbin "baserom.gba", 0x405DC4, 0x688 + +gUnknown_840644C:: @ 840644C + .incbin "baserom.gba", 0x40644C, 0x1E8 + +gUnknown_8406634:: @ 8406634 + .incbin "baserom.gba", 0x406634, 0x20 + +gUnknown_8406654:: @ 8406654 + .incbin "baserom.gba", 0x406654, 0xB7C + +gUnknown_84071D0:: @ 84071D0 + .incbin "baserom.gba", 0x4071D0, 0x260 + +gUnknown_8407430:: @ 8407430 + .incbin "baserom.gba", 0x407430, 0x40 + +gUnknown_8407470:: @ 8407470 + .incbin "baserom.gba", 0x407470, 0x5E0 + +gUnknown_8407A50:: @ 8407A50 + .incbin "baserom.gba", 0x407A50, 0x14C + +gUnknown_8407B9C:: @ 8407B9C + .incbin "baserom.gba", 0x407B9C, 0x11FC + +gUnknown_8408D98:: @ 8408D98 + .incbin "baserom.gba", 0x408D98, 0x2DE8 + +gUnknown_840BB80:: @ 840BB80 + .incbin "baserom.gba", 0x40BB80, 0x8 + +gUnknown_840BB88:: @ 840BB88 + .incbin "baserom.gba", 0x40BB88, 0x8 + +gUnknown_840BB90:: @ 840BB90 + .incbin "baserom.gba", 0x40BB90, 0x10 + +gUnknown_840BBA0:: @ 840BBA0 + .incbin "baserom.gba", 0x40BBA0, 0x8 + +gUnknown_840BBA8:: @ 840BBA8 + .incbin "baserom.gba", 0x40BBA8, 0x10 + +gUnknown_840BBB8:: @ 840BBB8 + .incbin "baserom.gba", 0x40BBB8, 0x8 + +gUnknown_840BBC0:: @ 840BBC0 + .incbin "baserom.gba", 0x40BBC0, 0x28 + +gUnknown_840BBE8:: @ 840BBE8 + .incbin "baserom.gba", 0x40BBE8, 0x20 + +gUnknown_840BC08:: @ 840BC08 + .incbin "baserom.gba", 0x40BC08, 0x64 + +gUnknown_840BC6C:: @ 840BC6C + .incbin "baserom.gba", 0x40BC6C, 0x18 + +gUnknown_840BC84:: @ 840BC84 + .incbin "baserom.gba", 0x40BC84, 0x38 + +gUnknown_840BCBC:: @ 840BCBC + .incbin "baserom.gba", 0x40BCBC, 0x20 + +gUnknown_840BCDC:: @ 840BCDC + .incbin "baserom.gba", 0x40BCDC, 0xAC + +gUnknown_840BD88:: @ 840BD88 + .incbin "baserom.gba", 0x40BD88, 0x20 + +gUnknown_840BDA8:: @ 840BDA8 + .incbin "baserom.gba", 0x40BDA8, 0x18 + +gUnknown_840BDC0:: @ 840BDC0 + .incbin "baserom.gba", 0x40BDC0, 0x3C + +gUnknown_840BDFC:: @ 840BDFC + .incbin "baserom.gba", 0x40BDFC, 0x50 + +gUnknown_840BE4C:: @ 840BE4C + .incbin "baserom.gba", 0x40BE4C, 0x40 + +gUnknown_840BE8C:: @ 840BE8C + .incbin "baserom.gba", 0x40BE8C, 0x38 + +gUnknown_840BEC4:: @ 840BEC4 + .incbin "baserom.gba", 0x40BEC4, 0x18 + +gUnknown_840BEDC:: @ 840BEDC + .incbin "baserom.gba", 0x40BEDC, 0x38 + +gUnknown_840BF14:: @ 840BF14 + .incbin "baserom.gba", 0x40BF14, 0x28 + +gUnknown_840BF3C:: @ 840BF3C + .incbin "baserom.gba", 0x40BF3C, 0xC + +gUnknown_840BF48:: @ 840BF48 + .incbin "baserom.gba", 0x40BF48, 0x60 + +gUnknown_840BFA8:: @ 840BFA8 + .incbin "baserom.gba", 0x40BFA8, 0xC0 + +gUnknown_840C068:: @ 840C068 + .incbin "baserom.gba", 0x40C068, 0xC + +gUnknown_840C074:: @ 840C074 + .incbin "baserom.gba", 0x40C074, 0x30 + +gUnknown_840C0A4:: @ 840C0A4 + .incbin "baserom.gba", 0x40C0A4, 0x60 + +gUnknown_840C104:: @ 840C104 + .incbin "baserom.gba", 0x40C104, 0xC0 + +gUnknown_840C1C4:: @ 840C1C4 + .incbin "baserom.gba", 0x40C1C4, 0x64 + +gUnknown_840C228:: @ 840C228 + .incbin "baserom.gba", 0x40C228, 0xC + +gUnknown_840C234:: @ 840C234 + .incbin "baserom.gba", 0x40C234, 0x8 + +gUnknown_840C23C:: @ 840C23C + .incbin "baserom.gba", 0x40C23C, 0x4 + +gUnknown_840C240:: @ 840C240 + .incbin "baserom.gba", 0x40C240, 0x8 + +gUnknown_840C248:: @ 840C248 + .incbin "baserom.gba", 0x40C248, 0x10 + +gUnknown_840C258:: @ 840C258 + .incbin "baserom.gba", 0x40C258, 0x10 + +gUnknown_840C268:: @ 840C268 + .incbin "baserom.gba", 0x40C268, 0x6 + +gUnknown_840C26E:: @ 840C26E + .incbin "baserom.gba", 0x40C26E, 0x2A + +gUnknown_840C298:: @ 840C298 + .incbin "baserom.gba", 0x40C298, 0xEC + +gUnknown_840C384:: @ 840C384 + .incbin "baserom.gba", 0x40C384, 0x18 + +gUnknown_840C39C:: @ 840C39C + .incbin "baserom.gba", 0x40C39C, 0x20 + +gUnknown_840C3BC:: @ 840C3BC + .incbin "baserom.gba", 0x40C3BC, 0x1E8 + +gUnknown_840C5A4:: @ 840C5A4 + .incbin "baserom.gba", 0x40C5A4, 0xC + +gUnknown_840C5B0:: @ 840C5B0 + .incbin "baserom.gba", 0x40C5B0, 0x20 + +gUnknown_840C5D0:: @ 840C5D0 + .incbin "baserom.gba", 0x40C5D0, 0x20 + +gUnknown_840C5F0:: @ 840C5F0 + .incbin "baserom.gba", 0x40C5F0, 0x20 + +gUnknown_840C610:: @ 840C610 + .incbin "baserom.gba", 0x40C610, 0x20 + +gUnknown_840C630:: @ 840C630 + .incbin "baserom.gba", 0x40C630, 0x20 + +gUnknown_840C650:: @ 840C650 + .incbin "baserom.gba", 0x40C650, 0x404 + +gUnknown_840CA54:: @ 840CA54 + .incbin "baserom.gba", 0x40CA54, 0x138 + +gUnknown_840CB8C:: @ 840CB8C + .incbin "baserom.gba", 0x40CB8C, 0x69C + +gUnknown_840D228:: @ 840D228 + .incbin "baserom.gba", 0x40D228, 0xF30 + +gUnknown_840E158:: @ 840E158 + .incbin "baserom.gba", 0x40E158, 0x7AC + +gUnknown_840E904:: @ 840E904 + .incbin "baserom.gba", 0x40E904, 0x93C + +gUnknown_840F240:: @ 840F240 + .incbin "baserom.gba", 0x40F240, 0x704 + +gUnknown_840F944:: @ 840F944 + .incbin "baserom.gba", 0x40F944, 0x854 + +gUnknown_8410198:: @ 8410198 + .incbin "baserom.gba", 0x410198, 0x41C + +gUnknown_84105B4:: @ 84105B4 + .incbin "baserom.gba", 0x4105B4, 0x728 + +gUnknown_8410CDC:: @ 8410CDC + .incbin "baserom.gba", 0x410CDC, 0x18 + +gUnknown_8410CF4:: @ 8410CF4 + .incbin "baserom.gba", 0x410CF4, 0x10C + +gUnknown_8410E00:: @ 8410E00 + .incbin "baserom.gba", 0x410E00, 0x4 + +gUnknown_8410E04:: @ 8410E04 + .incbin "baserom.gba", 0x410E04, 0x4 + +gUnknown_8410E08:: @ 8410E08 + .incbin "baserom.gba", 0x410E08, 0x8 + +gUnknown_8410E10:: @ 8410E10 + .incbin "baserom.gba", 0x410E10, 0x20 + +gUnknown_8410E30:: @ 8410E30 + .incbin "baserom.gba", 0x410E30, 0xDC8 + +gUnknown_8411BF8:: @ 8411BF8 + .incbin "baserom.gba", 0x411BF8, 0x20 + +gUnknown_8411C18:: @ 8411C18 + .incbin "baserom.gba", 0x411C18, 0xD88 + +gUnknown_84129A0:: @ 84129A0 + .incbin "baserom.gba", 0x4129A0, 0x20 + +gUnknown_84129C0:: @ 84129C0 + .incbin "baserom.gba", 0x4129C0, 0x958 + +gUnknown_8413318:: @ 8413318 + .incbin "baserom.gba", 0x413318, 0x20 + +gUnknown_8413338:: @ 8413338 + .incbin "baserom.gba", 0x413338, 0x51C + +gUnknown_8413854:: @ 8413854 + .incbin "baserom.gba", 0x413854, 0x20 + +gUnknown_8413874:: @ 8413874 + .incbin "baserom.gba", 0x413874, 0x524 + +gUnknown_8413D98:: @ 8413D98 + .incbin "baserom.gba", 0x413D98, 0x20 + +gUnknown_8413DB8:: @ 8413DB8 + .incbin "baserom.gba", 0x413DB8, 0x564 + +gUnknown_841431C:: @ 841431C + .incbin "baserom.gba", 0x41431C, 0x48 + +gUnknown_8414364:: @ 8414364 + .incbin "baserom.gba", 0x414364, 0x54 + +gUnknown_84143B8:: @ 84143B8 + .incbin "baserom.gba", 0x4143B8, 0x18 + +gUnknown_84143D0:: @ 84143D0 + .incbin "baserom.gba", 0x4143D0, 0x1B8 + +gUnknown_8414588:: @ 8414588 + .incbin "baserom.gba", 0x414588, 0x34 + +gUnknown_84145BC:: @ 84145BC + .incbin "baserom.gba", 0x4145BC, 0x204 + +gUnknown_84147C0:: @ 84147C0 + .incbin "baserom.gba", 0x4147C0, 0xD28 + +gUnknown_84154E8:: @ 84154E8 + .incbin "baserom.gba", 0x4154E8, 0x46C + +gUnknown_8415954:: @ 8415954 + .incbin "baserom.gba", 0x415954, 0xB0 + +gUnknown_8415A04:: @ 8415A04 + .incbin "baserom.gba", 0x415A04, 0x4 + +gUnknown_8415A08:: @ 8415A08 + .incbin "baserom.gba", 0x415A08, 0x8 + +gUnknown_8415A10:: @ 8415A10 + .incbin "baserom.gba", 0x415A10, 0x10 + +gUnknown_8415A20:: @ 8415A20 + .incbin "baserom.gba", 0x415A20, 0x1 + +gUnknown_8415A21:: @ 8415A21 + .incbin "baserom.gba", 0x415A21, 0x1 + +gUnknown_8415A22:: @ 8415A22 + .incbin "baserom.gba", 0x415A22, 0xA + +gUnknown_8415A2C:: @ 8415A2C + .incbin "baserom.gba", 0x415A2C, 0x5 + +gUnknown_8415A31:: @ 8415A31 + .incbin "baserom.gba", 0x415A31, 0x5 + +gUnknown_8415A36:: @ 8415A36 + .incbin "baserom.gba", 0x415A36, 0x6 + +gUnknown_8415A3C:: @ 8415A3C + .incbin "baserom.gba", 0x415A3C, 0x7 + +gUnknown_8415A43:: @ 8415A43 + .incbin "baserom.gba", 0x415A43, 0x6 + +gUnknown_8415A49:: @ 8415A49 + .incbin "baserom.gba", 0x415A49, 0x7 + +gUnknown_8415A50:: @ 8415A50 + .incbin "baserom.gba", 0x415A50, 0x8 + +gUnknown_8415A58:: @ 8415A58 + .incbin "baserom.gba", 0x415A58, 0x4 + +gUnknown_8415A5C:: @ 8415A5C + .incbin "baserom.gba", 0x415A5C, 0x6 + +gUnknown_8415A62:: @ 8415A62 + .incbin "baserom.gba", 0x415A62, 0x4 + +gUnknown_8415A66:: @ 8415A66 + .incbin "baserom.gba", 0x415A66, 0x8 + +gUnknown_8415A6E:: @ 8415A6E + .incbin "baserom.gba", 0x415A6E, 0x9 + +gUnknown_8415A77:: @ 8415A77 + .incbin "baserom.gba", 0x415A77, 0x20 + +gUnknown_8415A97:: @ 8415A97 + .incbin "baserom.gba", 0x415A97, 0xD + +gUnknown_8415AA4:: @ 8415AA4 + .incbin "baserom.gba", 0x415AA4, 0x27 + +gUnknown_8415ACB:: @ 8415ACB + .incbin "baserom.gba", 0x415ACB, 0x134 + +gUnknown_8415BFF:: @ 8415BFF + .incbin "baserom.gba", 0x415BFF, 0x43 + +gUnknown_8415C42:: @ 8415C42 + .incbin "baserom.gba", 0x415C42, 0x22 + +gUnknown_8415C64:: @ 8415C64 + .incbin "baserom.gba", 0x415C64, 0x84 + +gUnknown_8415CE8:: @ 8415CE8 + .incbin "baserom.gba", 0x415CE8, 0x44 + +gUnknown_8415D2C:: @ 8415D2C + .incbin "baserom.gba", 0x415D2C, 0x1C + +gUnknown_8415D48:: @ 8415D48 + .incbin "baserom.gba", 0x415D48, 0x8 + +gUnknown_8415D50:: @ 8415D50 + .incbin "baserom.gba", 0x415D50, 0x10 + +gUnknown_8415D60:: @ 8415D60 + .incbin "baserom.gba", 0x415D60, 0x18 + +gUnknown_8415D78:: @ 8415D78 + .incbin "baserom.gba", 0x415D78, 0x14 + +gUnknown_8415D8C:: @ 8415D8C + .incbin "baserom.gba", 0x415D8C, 0x7 + +gUnknown_8415D93:: @ 8415D93 + .incbin "baserom.gba", 0x415D93, 0x4 + +gUnknown_8415D97:: @ 8415D97 + .incbin "baserom.gba", 0x415D97, 0x5 + +gUnknown_8415D9C:: @ 8415D9C + .incbin "baserom.gba", 0x415D9C, 0x1C + +gUnknown_8415DB8:: @ 8415DB8 + .incbin "baserom.gba", 0x415DB8, 0xC + +gUnknown_8415DC4:: @ 8415DC4 + .incbin "baserom.gba", 0x415DC4, 0x6 + +gUnknown_8415DCA:: @ 8415DCA + .incbin "baserom.gba", 0x415DCA, 0x7 + +gUnknown_8415DD1:: @ 8415DD1 + .incbin "baserom.gba", 0x415DD1, 0x6 + +gUnknown_8415DD7:: @ 8415DD7 + .incbin "baserom.gba", 0x415DD7, 0x166 + +gUnknown_8415F3D:: @ 8415F3D + .incbin "baserom.gba", 0x415F3D, 0xD + +gUnknown_8415F4A:: @ 8415F4A + .incbin "baserom.gba", 0x415F4A, 0x7 + +gUnknown_8415F51:: @ 8415F51 + .incbin "baserom.gba", 0x415F51, 0x15 + +gUnknown_8415F66:: @ 8415F66 + .incbin "baserom.gba", 0x415F66, 0x6 + +gUnknown_8415F6C:: @ 8415F6C + .incbin "baserom.gba", 0x415F6C, 0x23 + +gUnknown_8415F8F:: @ 8415F8F + .incbin "baserom.gba", 0x415F8F, 0x9 + +gUnknown_8415F98:: @ 8415F98 + .incbin "baserom.gba", 0x415F98, 0x3 + +gUnknown_8415F9B:: @ 8415F9B + .incbin "baserom.gba", 0x415F9B, 0x5 + +gUnknown_8415FA0:: @ 8415FA0 + .incbin "baserom.gba", 0x415FA0, 0xD + +gUnknown_8415FAD:: @ 8415FAD + .incbin "baserom.gba", 0x415FAD, 0x6 + +gUnknown_8415FB3:: @ 8415FB3 + .incbin "baserom.gba", 0x415FB3, 0x15 + +gUnknown_8415FC8:: @ 8415FC8 + .incbin "baserom.gba", 0x415FC8, 0x7 + +gUnknown_8415FCF:: @ 8415FCF + .incbin "baserom.gba", 0x415FCF, 0x19 + +gUnknown_8415FE8:: @ 8415FE8 + .incbin "baserom.gba", 0x415FE8, 0x5 + +gUnknown_8415FED:: @ 8415FED + .incbin "baserom.gba", 0x415FED, 0x5 + +gUnknown_8415FF2:: @ 8415FF2 + .incbin "baserom.gba", 0x415FF2, 0xD + +gUnknown_8415FFF:: @ 8415FFF + .incbin "baserom.gba", 0x415FFF, 0x3 + +gUnknown_8416002:: @ 8416002 + .incbin "baserom.gba", 0x416002, 0x6 + +gUnknown_8416008:: @ 8416008 + .incbin "baserom.gba", 0x416008, 0x88 + +gUnknown_8416090:: @ 8416090 + .incbin "baserom.gba", 0x416090, 0x24 + +gUnknown_84160B4:: @ 84160B4 + .incbin "baserom.gba", 0x4160B4, 0x14 + +gUnknown_84160C8:: @ 84160C8 + .incbin "baserom.gba", 0x4160C8, 0x24 + +gUnknown_84160EC:: @ 84160EC + .incbin "baserom.gba", 0x4160EC, 0x8 + +gUnknown_84160F4:: @ 84160F4 + .incbin "baserom.gba", 0x4160F4, 0x8 + +gUnknown_84160FC:: @ 84160FC + .incbin "baserom.gba", 0x4160FC, 0x8 + +gUnknown_8416104:: @ 8416104 + .incbin "baserom.gba", 0x416104, 0x47 + +gUnknown_841614B:: @ 841614B + .incbin "baserom.gba", 0x41614B, 0x2F + +gUnknown_841617A:: @ 841617A + .incbin "baserom.gba", 0x41617A, 0x7 + +gUnknown_8416181:: @ 8416181 + .incbin "baserom.gba", 0x416181, 0x7 + +gUnknown_8416188:: @ 8416188 + .incbin "baserom.gba", 0x416188, 0x8 + +gUnknown_8416190:: @ 8416190 + .incbin "baserom.gba", 0x416190, 0x31 + +gUnknown_84161C1:: @ 84161C1 + .incbin "baserom.gba", 0x4161C1, 0x7 + +gUnknown_84161C8:: @ 84161C8 + .incbin "baserom.gba", 0x4161C8, 0x5 + +gUnknown_84161CD:: @ 84161CD + .incbin "baserom.gba", 0x4161CD, 0x22 + +gUnknown_84161EF:: @ 84161EF + .incbin "baserom.gba", 0x4161EF, 0x13 + +gUnknown_8416202:: @ 8416202 + .incbin "baserom.gba", 0x416202, 0xA + +gUnknown_841620C:: @ 841620C + .incbin "baserom.gba", 0x41620C, 0x2 + +gUnknown_841620E:: @ 841620E + .incbin "baserom.gba", 0x41620E, 0x2 + +gUnknown_8416210:: @ 8416210 + .incbin "baserom.gba", 0x416210, 0x3 + +gUnknown_8416213:: @ 8416213 + .incbin "baserom.gba", 0x416213, 0x4 + +gUnknown_8416217:: @ 8416217 + .incbin "baserom.gba", 0x416217, 0x8 + +gUnknown_841621F:: @ 841621F + .incbin "baserom.gba", 0x41621F, 0x2 + +gUnknown_8416221:: @ 8416221 + .incbin "baserom.gba", 0x416221, 0x2 + +gUnknown_8416223:: @ 8416223 + .incbin "baserom.gba", 0x416223, 0x3 + +gUnknown_8416226:: @ 8416226 + .incbin "baserom.gba", 0x416226, 0x12 + +gUnknown_8416238:: @ 8416238 + .incbin "baserom.gba", 0x416238, 0x3 + +gUnknown_841623B:: @ 841623B + .incbin "baserom.gba", 0x41623B, 0x2 + +gUnknown_841623D:: @ 841623D + .incbin "baserom.gba", 0x41623D, 0x25 + +gUnknown_8416262:: @ 8416262 + .incbin "baserom.gba", 0x416262, 0x23 + +gUnknown_8416285:: @ 8416285 + .incbin "baserom.gba", 0x416285, 0x24 + +gUnknown_84162A9:: @ 84162A9 + .incbin "baserom.gba", 0x4162A9, 0x10 + +gUnknown_84162B9:: @ 84162B9 + .incbin "baserom.gba", 0x4162B9, 0x4 + +gUnknown_84162BD:: @ 84162BD + .incbin "baserom.gba", 0x4162BD, 0x7 + +gUnknown_84162C4:: @ 84162C4 + .incbin "baserom.gba", 0x4162C4, 0x24 + +gUnknown_84162E8:: @ 84162E8 + .incbin "baserom.gba", 0x4162E8, 0xD + +gUnknown_84162F5:: @ 84162F5 + .incbin "baserom.gba", 0x4162F5, 0xA + +gUnknown_84162FF:: @ 84162FF + .incbin "baserom.gba", 0x4162FF, 0x2 + +gUnknown_8416301:: @ 8416301 + .incbin "baserom.gba", 0x416301, 0xE + +gUnknown_841630F:: @ 841630F + .incbin "baserom.gba", 0x41630F, 0x1B + +gUnknown_841632A:: @ 841632A + .incbin "baserom.gba", 0x41632A, 0x15 + +gUnknown_841633F:: @ 841633F + .incbin "baserom.gba", 0x41633F, 0x1F + +gUnknown_841635E:: @ 841635E + .incbin "baserom.gba", 0x41635E, 0x16 + +gUnknown_8416374:: @ 8416374 + .incbin "baserom.gba", 0x416374, 0x1B + +gUnknown_841638F:: @ 841638F + .incbin "baserom.gba", 0x41638F, 0x18 + +gUnknown_84163A7:: @ 84163A7 + .incbin "baserom.gba", 0x4163A7, 0x14 + +gUnknown_84163BB:: @ 84163BB + .incbin "baserom.gba", 0x4163BB, 0x20 + +gUnknown_84163DB:: @ 84163DB + .incbin "baserom.gba", 0x4163DB, 0x19 + +gUnknown_84163F4:: @ 84163F4 + .incbin "baserom.gba", 0x4163F4, 0x15 + +gUnknown_8416409:: @ 8416409 + .incbin "baserom.gba", 0x416409, 0x1C + +gUnknown_8416425:: @ 8416425 + .incbin "baserom.gba", 0x416425, 0x2C + +gUnknown_8416451:: @ 8416451 + .incbin "baserom.gba", 0x416451, 0x25 + +gUnknown_8416476:: @ 8416476 + .incbin "baserom.gba", 0x416476, 0x48 + +gUnknown_84164BE:: @ 84164BE + .incbin "baserom.gba", 0x4164BE, 0x55 + +gUnknown_8416513:: @ 8416513 + .incbin "baserom.gba", 0x416513, 0x24 + +gUnknown_8416537:: @ 8416537 + .incbin "baserom.gba", 0x416537, 0x55 + +gUnknown_841658C:: @ 841658C + .incbin "baserom.gba", 0x41658C, 0x12 + +gUnknown_841659E:: @ 841659E + .incbin "baserom.gba", 0x41659E, 0x34 + +gUnknown_84165D2:: @ 84165D2 + .incbin "baserom.gba", 0x4165D2, 0x2E + +gUnknown_8416600:: @ 8416600 + .incbin "baserom.gba", 0x416600, 0x31 + +gUnknown_8416631:: @ 8416631 + .incbin "baserom.gba", 0x416631, 0x13 + +gUnknown_8416644:: @ 8416644 + .incbin "baserom.gba", 0x416644, 0x11 + +gUnknown_8416655:: @ 8416655 + .incbin "baserom.gba", 0x416655, 0x7 + +gUnknown_841665C:: @ 841665C + .incbin "baserom.gba", 0x41665C, 0x34 + +gUnknown_8416690:: @ 8416690 + .incbin "baserom.gba", 0x416690, 0x17 + +gUnknown_84166A7:: @ 84166A7 + .incbin "baserom.gba", 0x4166A7, 0x2C + +gUnknown_84166D3:: @ 84166D3 + .incbin "baserom.gba", 0x4166D3, 0x8 + +gUnknown_84166DB:: @ 84166DB + .incbin "baserom.gba", 0x4166DB, 0x6 + +gUnknown_84166E1:: @ 84166E1 + .incbin "baserom.gba", 0x4166E1, 0x1E + +gUnknown_84166FF:: @ 84166FF + .incbin "baserom.gba", 0x4166FF, 0x4 + +gUnknown_8416703:: @ 8416703 + .incbin "baserom.gba", 0x416703, 0x7 + +gUnknown_841670A:: @ 841670A + .incbin "baserom.gba", 0x41670A, 0xC + +gUnknown_8416716:: @ 8416716 + .incbin "baserom.gba", 0x416716, 0x33 + +gUnknown_8416749:: @ 8416749 + .incbin "baserom.gba", 0x416749, 0xE + +gUnknown_8416757:: @ 8416757 + .incbin "baserom.gba", 0x416757, 0xF + +gUnknown_8416766:: @ 8416766 + .incbin "baserom.gba", 0x416766, 0x28 + +gUnknown_841678E:: @ 841678E + .incbin "baserom.gba", 0x41678E, 0x59 + +gUnknown_84167E7:: @ 84167E7 + .incbin "baserom.gba", 0x4167E7, 0x5B + +gUnknown_8416842:: @ 8416842 + .incbin "baserom.gba", 0x416842, 0x1F + +gUnknown_8416861:: @ 8416861 + .incbin "baserom.gba", 0x416861, 0x3D + +gUnknown_841689E:: @ 841689E + .incbin "baserom.gba", 0x41689E, 0x53 + +gUnknown_84168F1:: @ 84168F1 + .incbin "baserom.gba", 0x4168F1, 0x20 + +gUnknown_8416911:: @ 8416911 + .incbin "baserom.gba", 0x416911, 0x25 + +gUnknown_8416936:: @ 8416936 + .incbin "baserom.gba", 0x416936, 0x23 + +gUnknown_8416959:: @ 8416959 + .incbin "baserom.gba", 0x416959, 0x21 + +gUnknown_841697A:: @ 841697A + .incbin "baserom.gba", 0x41697A, 0x48 + +gUnknown_84169C2:: @ 84169C2 + .incbin "baserom.gba", 0x4169C2, 0x3 + +gUnknown_84169C5:: @ 84169C5 + .incbin "baserom.gba", 0x4169C5, 0x8 + +gUnknown_84169CD:: @ 84169CD + .incbin "baserom.gba", 0x4169CD, 0x8 + +gUnknown_84169D5:: @ 84169D5 + .incbin "baserom.gba", 0x4169D5, 0x4 + +gUnknown_84169D9:: @ 84169D9 + .incbin "baserom.gba", 0x4169D9, 0x3 + +gUnknown_84169DC:: @ 84169DC + .incbin "baserom.gba", 0x4169DC, 0x1C + +gUnknown_84169F8:: @ 84169F8 + .incbin "baserom.gba", 0x4169F8, 0x26 + +gUnknown_8416A1E:: @ 8416A1E + .incbin "baserom.gba", 0x416A1E, 0x1C + +gUnknown_8416A3A:: @ 8416A3A + .incbin "baserom.gba", 0x416A3A, 0x1B + +gUnknown_8416A55:: @ 8416A55 + .incbin "baserom.gba", 0x416A55, 0x20 + +gUnknown_8416A75:: @ 8416A75 + .incbin "baserom.gba", 0x416A75, 0x23 + +gUnknown_8416A98:: @ 8416A98 + .incbin "baserom.gba", 0x416A98, 0x33 + +gUnknown_8416ACB:: @ 8416ACB + .incbin "baserom.gba", 0x416ACB, 0x17 + +gUnknown_8416AE2:: @ 8416AE2 + .incbin "baserom.gba", 0x416AE2, 0x34 + +gUnknown_8416B16:: @ 8416B16 + .incbin "baserom.gba", 0x416B16, 0x28 + +gUnknown_8416B3E:: @ 8416B3E + .incbin "baserom.gba", 0x416B3E, 0x26 + +gUnknown_8416B64:: @ 8416B64 + .incbin "baserom.gba", 0x416B64, 0x22 + +gUnknown_8416B86:: @ 8416B86 + .incbin "baserom.gba", 0x416B86, 0x20 + +gUnknown_8416BA6:: @ 8416BA6 + .incbin "baserom.gba", 0x416BA6, 0x1D + +gUnknown_8416BC3:: @ 8416BC3 + .incbin "baserom.gba", 0x416BC3, 0x38 + +gUnknown_8416BFB:: @ 8416BFB + .incbin "baserom.gba", 0x416BFB, 0x2F + +gUnknown_8416C2A:: @ 8416C2A + .incbin "baserom.gba", 0x416C2A, 0x1F + +gUnknown_8416C49:: @ 8416C49 + .incbin "baserom.gba", 0x416C49, 0x46 + +gUnknown_8416C8F:: @ 8416C8F + .incbin "baserom.gba", 0x416C8F, 0x1D + +gUnknown_8416CAC:: @ 8416CAC + .incbin "baserom.gba", 0x416CAC, 0x1B + +gUnknown_8416CC7:: @ 8416CC7 + .incbin "baserom.gba", 0x416CC7, 0x23 + +gUnknown_8416CEA:: @ 8416CEA + .incbin "baserom.gba", 0x416CEA, 0x2D + +gUnknown_8416D17:: @ 8416D17 + .incbin "baserom.gba", 0x416D17, 0x38 + +gUnknown_8416D4F:: @ 8416D4F + .incbin "baserom.gba", 0x416D4F, 0x29 + +gUnknown_8416D78:: @ 8416D78 + .incbin "baserom.gba", 0x416D78, 0x3B + +gUnknown_8416DB3:: @ 8416DB3 + .incbin "baserom.gba", 0x416DB3, 0xF + +gUnknown_8416DC2:: @ 8416DC2 + .incbin "baserom.gba", 0x416DC2, 0x35 + +gUnknown_8416DF7:: @ 8416DF7 + .incbin "baserom.gba", 0x416DF7, 0x74 + +gUnknown_8416E6B:: @ 8416E6B + .incbin "baserom.gba", 0x416E6B, 0x19 + +gUnknown_8416E84:: @ 8416E84 + .incbin "baserom.gba", 0x416E84, 0x20 + +gUnknown_8416EA4:: @ 8416EA4 + .incbin "baserom.gba", 0x416EA4, 0x22 + +gUnknown_8416EC6:: @ 8416EC6 + .incbin "baserom.gba", 0x416EC6, 0x4A + +gUnknown_8416F10:: @ 8416F10 + .incbin "baserom.gba", 0x416F10, 0x17 + +gUnknown_8416F27:: @ 8416F27 + .incbin "baserom.gba", 0x416F27, 0x27 + +gUnknown_8416F4E:: @ 8416F4E + .incbin "baserom.gba", 0x416F4E, 0x21 + +gUnknown_8416F6F:: @ 8416F6F + .incbin "baserom.gba", 0x416F6F, 0x1D + +gUnknown_8416F8C:: @ 8416F8C + .incbin "baserom.gba", 0x416F8C, 0xE + +gUnknown_8416F9A:: @ 8416F9A + .incbin "baserom.gba", 0x416F9A, 0x18 + +gUnknown_8416FB2:: @ 8416FB2 + .incbin "baserom.gba", 0x416FB2, 0x15 + +gUnknown_8416FC7:: @ 8416FC7 + .incbin "baserom.gba", 0x416FC7, 0x26 + +gUnknown_8416FED:: @ 8416FED + .incbin "baserom.gba", 0x416FED, 0x15 + +gUnknown_8417002:: @ 8417002 + .incbin "baserom.gba", 0x417002, 0x15 + +gUnknown_8417017:: @ 8417017 + .incbin "baserom.gba", 0x417017, 0x1B + +gUnknown_8417032:: @ 8417032 + .incbin "baserom.gba", 0x417032, 0x20 + +gUnknown_8417052:: @ 8417052 + .incbin "baserom.gba", 0x417052, 0x23 + +gUnknown_8417075:: @ 8417075 + .incbin "baserom.gba", 0x417075, 0x47 + +gUnknown_84170BC:: @ 84170BC + .incbin "baserom.gba", 0x4170BC, 0x24 + +gUnknown_84170E0:: @ 84170E0 + .incbin "baserom.gba", 0x4170E0, 0x377 + +gUnknown_8417457:: @ 8417457 + .incbin "baserom.gba", 0x417457, 0x3D + +gUnknown_8417494:: @ 8417494 + .incbin "baserom.gba", 0x417494, 0x181 + +gUnknown_8417615:: @ 8417615 + .incbin "baserom.gba", 0x417615, 0x2B + +gUnknown_8417640:: @ 8417640 + .incbin "baserom.gba", 0x417640, 0x34 + +gUnknown_8417674:: @ 8417674 + .incbin "baserom.gba", 0x417674, 0x7 + +gUnknown_841767B:: @ 841767B + .incbin "baserom.gba", 0x41767B, 0x12 + +gUnknown_841768D:: @ 841768D + .incbin "baserom.gba", 0x41768D, 0x9 + +gUnknown_8417696:: @ 8417696 + .incbin "baserom.gba", 0x417696, 0x22 + +gUnknown_84176B8:: @ 84176B8 + .incbin "baserom.gba", 0x4176B8, 0x17 + +gUnknown_84176CF:: @ 84176CF + .incbin "baserom.gba", 0x4176CF, 0x2F + +gUnknown_84176FE:: @ 84176FE + .incbin "baserom.gba", 0x4176FE, 0x76 + +gUnknown_8417774:: @ 8417774 + .incbin "baserom.gba", 0x417774, 0x16 + +gUnknown_841778A:: @ 841778A + .incbin "baserom.gba", 0x41778A, 0x22 + +gUnknown_84177AC:: @ 84177AC + .incbin "baserom.gba", 0x4177AC, 0x19 + +gUnknown_84177C5:: @ 84177C5 + .incbin "baserom.gba", 0x4177C5, 0x29 + +gUnknown_84177EE:: @ 84177EE + .incbin "baserom.gba", 0x4177EE, 0x18 + +gUnknown_8417806:: @ 8417806 + .incbin "baserom.gba", 0x417806, 0x2A + +gUnknown_8417830:: @ 8417830 + .incbin "baserom.gba", 0x417830, 0x28 + +gUnknown_8417858:: @ 8417858 + .incbin "baserom.gba", 0x417858, 0x13 + +gUnknown_841786B:: @ 841786B + .incbin "baserom.gba", 0x41786B, 0x3C + +gUnknown_84178A7:: @ 84178A7 + .incbin "baserom.gba", 0x4178A7, 0x17 + +gUnknown_84178BE:: @ 84178BE + .incbin "baserom.gba", 0x4178BE, 0x12 + +gUnknown_84178D0:: @ 84178D0 + .incbin "baserom.gba", 0x4178D0, 0xA + +gUnknown_84178DA:: @ 84178DA + .incbin "baserom.gba", 0x4178DA, 0x5E + +gUnknown_8417938:: @ 8417938 + .incbin "baserom.gba", 0x417938, 0x4 + +gUnknown_841793C:: @ 841793C + .incbin "baserom.gba", 0x41793C, 0x263 + +gUnknown_8417B9F:: @ 8417B9F + .incbin "baserom.gba", 0x417B9F, 0xD + +gUnknown_8417BAC:: @ 8417BAC + .incbin "baserom.gba", 0x417BAC, 0xA + +gUnknown_8417BB6:: @ 8417BB6 + .incbin "baserom.gba", 0x417BB6, 0x8 + +gUnknown_8417BBE:: @ 8417BBE + .incbin "baserom.gba", 0x417BBE, 0xD + +gUnknown_8417BCB:: @ 8417BCB + .incbin "baserom.gba", 0x417BCB, 0x8 + +gUnknown_8417BD3:: @ 8417BD3 + .incbin "baserom.gba", 0x417BD3, 0x5A + +gUnknown_8417C2D:: @ 8417C2D + .incbin "baserom.gba", 0x417C2D, 0x1C0 + +gUnknown_8417DED:: @ 8417DED + .incbin "baserom.gba", 0x417DED, 0x1CC + +gUnknown_8417FB9:: @ 8417FB9 + .incbin "baserom.gba", 0x417FB9, 0x2 + +gUnknown_8417FBB:: @ 8417FBB + .incbin "baserom.gba", 0x417FBB, 0x8 + +gUnknown_8417FC3:: @ 8417FC3 + .incbin "baserom.gba", 0x417FC3, 0x9 + +gUnknown_8417FCC:: @ 8417FCC + .incbin "baserom.gba", 0x417FCC, 0x4 + +gUnknown_8417FD0:: @ 8417FD0 + .incbin "baserom.gba", 0x417FD0, 0xA5 + +gUnknown_8418075:: @ 8418075 + .incbin "baserom.gba", 0x418075, 0xFF + +gUnknown_8418174:: @ 8418174 + .incbin "baserom.gba", 0x418174, 0x14 + +gUnknown_8418188:: @ 8418188 + .incbin "baserom.gba", 0x418188, 0x1C + +gUnknown_84181A4:: @ 84181A4 + .incbin "baserom.gba", 0x4181A4, 0x12 + +gUnknown_84181B6:: @ 84181B6 + .incbin "baserom.gba", 0x4181B6, 0x8 + +gUnknown_84181BE:: @ 84181BE + .incbin "baserom.gba", 0x4181BE, 0x5 + +gUnknown_84181C3:: @ 84181C3 + .incbin "baserom.gba", 0x4181C3, 0x21 + +gUnknown_84181E4:: @ 84181E4 + .incbin "baserom.gba", 0x4181E4, 0x4AC + +gUnknown_8418690:: @ 8418690 + .incbin "baserom.gba", 0x418690, 0x20 + +gUnknown_84186B0:: @ 84186B0 + .incbin "baserom.gba", 0x4186B0, 0x1D + +gUnknown_84186CD:: @ 84186CD + .incbin "baserom.gba", 0x4186CD, 0x26A + +gUnknown_8418937:: @ 8418937 + .incbin "baserom.gba", 0x418937, 0x1F + +gUnknown_8418956:: @ 8418956 + .incbin "baserom.gba", 0x418956, 0x8A + +gUnknown_84189E0:: @ 84189E0 + .incbin "baserom.gba", 0x4189E0, 0xE + +gUnknown_84189EE:: @ 84189EE + .incbin "baserom.gba", 0x4189EE, 0x22D + +gUnknown_8418C1B:: @ 8418C1B + .incbin "baserom.gba", 0x418C1B, 0x68 + +gUnknown_8418C83:: @ 8418C83 + .incbin "baserom.gba", 0x418C83, 0x56 + +gUnknown_8418CD9:: @ 8418CD9 + .incbin "baserom.gba", 0x418CD9, 0x130 + +gUnknown_8418E09:: @ 8418E09 + .incbin "baserom.gba", 0x418E09, 0x6E + +gUnknown_8418E77:: @ 8418E77 + .incbin "baserom.gba", 0x418E77, 0x13 + +gUnknown_8418E8A:: @ 8418E8A + .incbin "baserom.gba", 0x418E8A, 0x1 + +gUnknown_8418E8B:: @ 8418E8B + .incbin "baserom.gba", 0x418E8B, 0x2 + +gUnknown_8418E8D:: @ 8418E8D + .incbin "baserom.gba", 0x418E8D, 0x8 + +gUnknown_8418E95:: @ 8418E95 + .incbin "baserom.gba", 0x418E95, 0x9 + +gUnknown_8418E9E:: @ 8418E9E + .incbin "baserom.gba", 0x418E9E, 0x9 + +gUnknown_8418EA7:: @ 8418EA7 + .incbin "baserom.gba", 0x418EA7, 0x9 + +gUnknown_8418EB0:: @ 8418EB0 + .incbin "baserom.gba", 0x418EB0, 0x5 + +gUnknown_8418EB5:: @ 8418EB5 + .incbin "baserom.gba", 0x418EB5, 0x7 + +gUnknown_8418EBC:: @ 8418EBC + .incbin "baserom.gba", 0x418EBC, 0x7 + +gUnknown_8418EC3:: @ 8418EC3 + .incbin "baserom.gba", 0x418EC3, 0x8BF + +gUnknown_8419782:: @ 8419782 + .incbin "baserom.gba", 0x419782, 0x1B + +gUnknown_841979D:: @ 841979D + .incbin "baserom.gba", 0x41979D, 0x1B + +gUnknown_84197B8:: @ 84197B8 + .incbin "baserom.gba", 0x4197B8, 0x35 + +gUnknown_84197ED:: @ 84197ED + .incbin "baserom.gba", 0x4197ED, 0x35 + +gUnknown_8419822:: @ 8419822 + .incbin "baserom.gba", 0x419822, 0x1F + +gUnknown_8419841:: @ 8419841 + .incbin "baserom.gba", 0x419841, 0x1F + +gUnknown_8419860:: @ 8419860 + .incbin "baserom.gba", 0x419860, 0x2A + +gUnknown_841988A:: @ 841988A + .incbin "baserom.gba", 0x41988A, 0x2A + +gUnknown_84198B4:: @ 84198B4 + .incbin "baserom.gba", 0x4198B4, 0x21 + +gUnknown_84198D5:: @ 84198D5 + .incbin "baserom.gba", 0x4198D5, 0x5A + +gUnknown_841992F:: @ 841992F + .incbin "baserom.gba", 0x41992F, 0x3E + +gUnknown_841996D:: @ 841996D + .incbin "baserom.gba", 0x41996D, 0x3E + +gUnknown_84199AB:: @ 84199AB + .incbin "baserom.gba", 0x4199AB, 0x49 + +gUnknown_84199F4:: @ 84199F4 + .incbin "baserom.gba", 0x4199F4, 0x217 + +gUnknown_8419C0B:: @ 8419C0B + .incbin "baserom.gba", 0x419C0B, 0x8 + +gUnknown_8419C13:: @ 8419C13 + .incbin "baserom.gba", 0x419C13, 0xA + +gUnknown_8419C1D:: @ 8419C1D + .incbin "baserom.gba", 0x419C1D, 0xD + +gUnknown_8419C2A:: @ 8419C2A + .incbin "baserom.gba", 0x419C2A, 0xF + +gUnknown_8419C39:: @ 8419C39 + .incbin "baserom.gba", 0x419C39, 0xC + +gUnknown_8419C45:: @ 8419C45 + .incbin "baserom.gba", 0x419C45, 0x8 + +gUnknown_8419C4D:: @ 8419C4D + .incbin "baserom.gba", 0x419C4D, 0xC + +gUnknown_8419C59:: @ 8419C59 + .incbin "baserom.gba", 0x419C59, 0x9 + +gUnknown_8419C62:: @ 8419C62 + .incbin "baserom.gba", 0x419C62, 0x10 + +gUnknown_8419C72:: @ 8419C72 + .incbin "baserom.gba", 0x419C72, 0x9 + +gUnknown_8419C7B:: @ 8419C7B + .incbin "baserom.gba", 0x419C7B, 0x7 + +gUnknown_8419C82:: @ 8419C82 + .incbin "baserom.gba", 0x419C82, 0x10 + +gUnknown_8419C92:: @ 8419C92 + .incbin "baserom.gba", 0x419C92, 0x10 + +gUnknown_8419CA2:: @ 8419CA2 + .incbin "baserom.gba", 0x419CA2, 0x7 + +gUnknown_8419CA9:: @ 8419CA9 + .incbin "baserom.gba", 0x419CA9, 0x10 + +gUnknown_8419CB9:: @ 8419CB9 + .incbin "baserom.gba", 0x419CB9, 0x21 + +gUnknown_8419CDA:: @ 8419CDA + .incbin "baserom.gba", 0x419CDA, 0x7 + +gUnknown_8419CE1:: @ 8419CE1 + .incbin "baserom.gba", 0x419CE1, 0x6 + +gUnknown_8419CE7:: @ 8419CE7 + .incbin "baserom.gba", 0x419CE7, 0x6 + +gUnknown_8419CED:: @ 8419CED + .incbin "baserom.gba", 0x419CED, 0x2 + +gUnknown_8419CEF:: @ 8419CEF + .incbin "baserom.gba", 0x419CEF, 0x8 + +gUnknown_8419CF7:: @ 8419CF7 + .incbin "baserom.gba", 0x419CF7, 0x1 + +gUnknown_8419CF8:: @ 8419CF8 + .incbin "baserom.gba", 0x419CF8, 0x5 + +gUnknown_8419CFD:: @ 8419CFD + .incbin "baserom.gba", 0x419CFD, 0xD + +gUnknown_8419D0A:: @ 8419D0A + .incbin "baserom.gba", 0x419D0A, 0x10 + +gUnknown_8419D1A:: @ 8419D1A + .incbin "baserom.gba", 0x419D1A, 0x35 + +gUnknown_8419D4F:: @ 8419D4F + .incbin "baserom.gba", 0x419D4F, 0x8 + +gUnknown_8419D57:: @ 8419D57 + .incbin "baserom.gba", 0x419D57, 0xF + +gUnknown_8419D66:: @ 8419D66 + .incbin "baserom.gba", 0x419D66, 0x17 + +gUnknown_8419D7D:: @ 8419D7D + .incbin "baserom.gba", 0x419D7D, 0xC + +gUnknown_8419D89:: @ 8419D89 + .incbin "baserom.gba", 0x419D89, 0x43 + +gUnknown_8419DCC:: @ 8419DCC + .incbin "baserom.gba", 0x419DCC, 0x86 + +gUnknown_8419E52:: @ 8419E52 + .incbin "baserom.gba", 0x419E52, 0x5 + +gUnknown_8419E57:: @ 8419E57 + .incbin "baserom.gba", 0x419E57, 0xFD + +gUnknown_8419F54:: @ 8419F54 + .incbin "baserom.gba", 0x419F54, 0x201 + +gUnknown_841A155:: @ 841A155 + .incbin "baserom.gba", 0x41A155, 0x1A + +gUnknown_841A16F:: @ 841A16F + .incbin "baserom.gba", 0x41A16F, 0x24 + +gUnknown_841A193:: @ 841A193 + .incbin "baserom.gba", 0x41A193, 0x3A + +gUnknown_841A1CD:: @ 841A1CD + .incbin "baserom.gba", 0x41A1CD, 0x1A + +gUnknown_841A1E7:: @ 841A1E7 + .incbin "baserom.gba", 0x41A1E7, 0x29 + +gUnknown_841A210:: @ 841A210 + .incbin "baserom.gba", 0x41A210, 0x10 + +gUnknown_841A220:: @ 841A220 + .incbin "baserom.gba", 0x41A220, 0x35 + +gUnknown_841A255:: @ 841A255 + .incbin "baserom.gba", 0x41A255, 0x22 + +gUnknown_841A277:: @ 841A277 + .incbin "baserom.gba", 0x41A277, 0x39 + +gUnknown_841A2B0:: @ 841A2B0 + .incbin "baserom.gba", 0x41A2B0, 0x31 + +gUnknown_841A2E1:: @ 841A2E1 + .incbin "baserom.gba", 0x41A2E1, 0x31 + +gUnknown_841A312:: @ 841A312 + .incbin "baserom.gba", 0x41A312, 0x37 + +gUnknown_841A349:: @ 841A349 + .incbin "baserom.gba", 0x41A349, 0x48 + +gUnknown_841A391:: @ 841A391 + .incbin "baserom.gba", 0x41A391, 0x49 + +gUnknown_841A3DA:: @ 841A3DA + .incbin "baserom.gba", 0x41A3DA, 0x25 + +gUnknown_841A3FF:: @ 841A3FF + .incbin "baserom.gba", 0x41A3FF, 0x23 + +gUnknown_841A422:: @ 841A422 + .incbin "baserom.gba", 0x41A422, 0x55 + +gUnknown_841A477:: @ 841A477 + .incbin "baserom.gba", 0x41A477, 0x4F + +gUnknown_841A4C6:: @ 841A4C6 + .incbin "baserom.gba", 0x41A4C6, 0x45 + +gUnknown_841A50B:: @ 841A50B + .incbin "baserom.gba", 0x41A50B, 0x5B + +gUnknown_841A566:: @ 841A566 + .incbin "baserom.gba", 0x41A566, 0x36 + +gUnknown_841A59C:: @ 841A59C + .incbin "baserom.gba", 0x41A59C, 0x3D + +gUnknown_841A5D9:: @ 841A5D9 + .incbin "baserom.gba", 0x41A5D9, 0x21 + +gUnknown_841A5FA:: @ 841A5FA + .incbin "baserom.gba", 0x41A5FA, 0x10 + +gUnknown_841A60A:: @ 841A60A + .incbin "baserom.gba", 0x41A60A, 0x28 + +gUnknown_841A632:: @ 841A632 + .incbin "baserom.gba", 0x41A632, 0x1D + +gUnknown_841A64F:: @ 841A64F + .incbin "baserom.gba", 0x41A64F, 0x1F + +gUnknown_841A66E:: @ 841A66E + .incbin "baserom.gba", 0x41A66E, 0x26 + +gUnknown_841A694:: @ 841A694 + .incbin "baserom.gba", 0x41A694, 0x11 + +gUnknown_841A6A5:: @ 841A6A5 + .incbin "baserom.gba", 0x41A6A5, 0x3C + +gUnknown_841A6E1:: @ 841A6E1 + .incbin "baserom.gba", 0x41A6E1, 0x51 + +gUnknown_841A732:: @ 841A732 + .incbin "baserom.gba", 0x41A732, 0x38 + +gUnknown_841A76A:: @ 841A76A + .incbin "baserom.gba", 0x41A76A, 0x46 + +gUnknown_841A7B0:: @ 841A7B0 + .incbin "baserom.gba", 0x41A7B0, 0x2D + +gUnknown_841A7DD:: @ 841A7DD + .incbin "baserom.gba", 0x41A7DD, 0x33 + +gUnknown_841A810:: @ 841A810 + .incbin "baserom.gba", 0x41A810, 0x48 + +gUnknown_841A858:: @ 841A858 + .incbin "baserom.gba", 0x41A858, 0x3E + +gUnknown_841A896:: @ 841A896 + .incbin "baserom.gba", 0x41A896, 0x3E + +gUnknown_841A8D4:: @ 841A8D4 + .incbin "baserom.gba", 0x41A8D4, 0x9 + +gUnknown_841A8DD:: @ 841A8DD + .incbin "baserom.gba", 0x41A8DD, 0x5B + +gUnknown_841A938:: @ 841A938 + .incbin "baserom.gba", 0x41A938, 0x2D + +gUnknown_841A965:: @ 841A965 + .incbin "baserom.gba", 0x41A965, 0x44 + +gUnknown_841A9A9:: @ 841A9A9 + .incbin "baserom.gba", 0x41A9A9, 0x2B + +gUnknown_841A9D4:: @ 841A9D4 + .incbin "baserom.gba", 0x41A9D4, 0x2D + +gUnknown_841AA01:: @ 841AA01 + .incbin "baserom.gba", 0x41AA01, 0x2A + +gUnknown_841AA2B:: @ 841AA2B + .incbin "baserom.gba", 0x41AA2B, 0x4B + +gUnknown_841AA76:: @ 841AA76 + .incbin "baserom.gba", 0x41AA76, 0x34 + +gUnknown_841AAAA:: @ 841AAAA + .incbin "baserom.gba", 0x41AAAA, 0x42 + +gUnknown_841AAEC:: @ 841AAEC + .incbin "baserom.gba", 0x41AAEC, 0x3D + +gUnknown_841AB29:: @ 841AB29 + .incbin "baserom.gba", 0x41AB29, 0x4B + +gUnknown_841AB74:: @ 841AB74 + .incbin "baserom.gba", 0x41AB74, 0x1A + +gUnknown_841AB8E:: @ 841AB8E + .incbin "baserom.gba", 0x41AB8E, 0x2BA + +gUnknown_841AE48:: @ 841AE48 + .incbin "baserom.gba", 0x41AE48, 0x47 + +gUnknown_841AE8F:: @ 841AE8F + .incbin "baserom.gba", 0x41AE8F, 0x7D + +gUnknown_841AF0C:: @ 841AF0C + .incbin "baserom.gba", 0x41AF0C, 0x32 + +gUnknown_841AF3E:: @ 841AF3E + .incbin "baserom.gba", 0x41AF3E, 0x2F + +gUnknown_841AF6D:: @ 841AF6D + .incbin "baserom.gba", 0x41AF6D, 0x39 + +gUnknown_841AFA6:: @ 841AFA6 + .incbin "baserom.gba", 0x41AFA6, 0x99 + +gUnknown_841B03F:: @ 841B03F + .incbin "baserom.gba", 0x41B03F, 0x25 + +gUnknown_841B064:: @ 841B064 + .incbin "baserom.gba", 0x41B064, 0xF + +gUnknown_841B073:: @ 841B073 + .incbin "baserom.gba", 0x41B073, 0x2C + +gUnknown_841B09F:: @ 841B09F + .incbin "baserom.gba", 0x41B09F, 0x1E6 + +gUnknown_841B285:: @ 841B285 + .incbin "baserom.gba", 0x41B285, 0xE + +gUnknown_841B293:: @ 841B293 + .incbin "baserom.gba", 0x41B293, 0x2 + +gUnknown_841B295:: @ 841B295 + .incbin "baserom.gba", 0x41B295, 0x12 + +gUnknown_841B2A7:: @ 841B2A7 + .incbin "baserom.gba", 0x41B2A7, 0x35 + +gUnknown_841B2DC:: @ 841B2DC + .incbin "baserom.gba", 0x41B2DC, 0x9 + +gUnknown_841B2E5:: @ 841B2E5 + .incbin "baserom.gba", 0x41B2E5, 0x8 + +gUnknown_841B2ED:: @ 841B2ED + .incbin "baserom.gba", 0x41B2ED, 0x4 + +gUnknown_841B2F1:: @ 841B2F1 + .incbin "baserom.gba", 0x41B2F1, 0x15 + +gUnknown_841B306:: @ 841B306 + .incbin "baserom.gba", 0x41B306, 0xF + +gUnknown_841B315:: @ 841B315 + .incbin "baserom.gba", 0x41B315, 0x6 + +gUnknown_841B31B:: @ 841B31B + .incbin "baserom.gba", 0x41B31B, 0xE + +gUnknown_841B329:: @ 841B329 + .incbin "baserom.gba", 0x41B329, 0x5 + +gUnknown_841B32E:: @ 841B32E + .incbin "baserom.gba", 0x41B32E, 0x7C + +gUnknown_841B3AA:: @ 841B3AA + .incbin "baserom.gba", 0x41B3AA, 0x14 + +gUnknown_841B3BE:: @ 841B3BE + .incbin "baserom.gba", 0x41B3BE, 0x152 + +gUnknown_841B510:: @ 841B510 + .incbin "baserom.gba", 0x41B510, 0x6 + +gUnknown_841B516:: @ 841B516 + .incbin "baserom.gba", 0x41B516, 0x8 + +gUnknown_841B51E:: @ 841B51E + .incbin "baserom.gba", 0x41B51E, 0x6 + +gUnknown_841B524:: @ 841B524 + .incbin "baserom.gba", 0x41B524, 0x7 + +gUnknown_841B52B:: @ 841B52B + .incbin "baserom.gba", 0x41B52B, 0x6 + +gUnknown_841B531:: @ 841B531 + .incbin "baserom.gba", 0x41B531, 0x4 + +gUnknown_841B535:: @ 841B535 + .incbin "baserom.gba", 0x41B535, 0x6 + +gUnknown_841B53B:: @ 841B53B + .incbin "baserom.gba", 0x41B53B, 0x6 + +gUnknown_841B541:: @ 841B541 + .incbin "baserom.gba", 0x41B541, 0xA + +gUnknown_841B54B:: @ 841B54B + .incbin "baserom.gba", 0x41B54B, 0x9 + +gUnknown_841B554:: @ 841B554 + .incbin "baserom.gba", 0x41B554, 0x62 + +gUnknown_841B5B6:: @ 841B5B6 + .incbin "baserom.gba", 0x41B5B6, 0x58 + +gUnknown_841B60E:: @ 841B60E + .incbin "baserom.gba", 0x41B60E, 0xB + +gUnknown_841B619:: @ 841B619 + .incbin "baserom.gba", 0x41B619, 0x6B + +gUnknown_841B684:: @ 841B684 + .incbin "baserom.gba", 0x41B684, 0xB + +gUnknown_841B68F:: @ 841B68F + .incbin "baserom.gba", 0x41B68F, 0x9 + +gUnknown_841B698:: @ 841B698 + .incbin "baserom.gba", 0x41B698, 0x6 + +gUnknown_841B69E:: @ 841B69E + .incbin "baserom.gba", 0x41B69E, 0x1B + +gUnknown_841B6B9:: @ 841B6B9 + .incbin "baserom.gba", 0x41B6B9, 0x1C + +gUnknown_841B6D5:: @ 841B6D5 + .incbin "baserom.gba", 0x41B6D5, 0x7 + +gUnknown_841B6DC:: @ 841B6DC + .incbin "baserom.gba", 0x41B6DC, 0x7 + +gUnknown_841B6E3:: @ 841B6E3 + .incbin "baserom.gba", 0x41B6E3, 0x8 + +gUnknown_841B6EB:: @ 841B6EB + .incbin "baserom.gba", 0x41B6EB, 0x1 + +gUnknown_841B6EC:: @ 841B6EC + .incbin "baserom.gba", 0x41B6EC, 0x7 + +gUnknown_841B6F3:: @ 841B6F3 + .incbin "baserom.gba", 0x41B6F3, 0xA + +gUnknown_841B6FD:: @ 841B6FD + .incbin "baserom.gba", 0x41B6FD, 0x19 + +gUnknown_841B716:: @ 841B716 + .incbin "baserom.gba", 0x41B716, 0x31 + +gUnknown_841B747:: @ 841B747 + .incbin "baserom.gba", 0x41B747, 0x24 + +gUnknown_841B76B:: @ 841B76B + .incbin "baserom.gba", 0x41B76B, 0xE + +gUnknown_841B779:: @ 841B779 + .incbin "baserom.gba", 0x41B779, 0xC4 + +gUnknown_841B83D:: @ 841B83D + .incbin "baserom.gba", 0x41B83D, 0xD4A + +gUnknown_841C587:: @ 841C587 + .incbin "baserom.gba", 0x41C587, 0x10C + +gUnknown_841C693:: @ 841C693 + .incbin "baserom.gba", 0x41C693, 0x4A9 + +gUnknown_841CB3C:: @ 841CB3C + .incbin "baserom.gba", 0x41CB3C, 0x5 + +gUnknown_841CB41:: @ 841CB41 + .incbin "baserom.gba", 0x41CB41, 0x8 + +gUnknown_841CB49:: @ 841CB49 + .incbin "baserom.gba", 0x41CB49, 0x5 + +gUnknown_841CB4E:: @ 841CB4E + .incbin "baserom.gba", 0x41CB4E, 0x4 + +gUnknown_841CB52:: @ 841CB52 + .incbin "baserom.gba", 0x41CB52, 0x8 + +gUnknown_841CB5A:: @ 841CB5A + .incbin "baserom.gba", 0x41CB5A, 0x9 + +gUnknown_841CB63:: @ 841CB63 + .incbin "baserom.gba", 0x41CB63, 0x46 + +gUnknown_841CBA9:: @ 841CBA9 + .incbin "baserom.gba", 0x41CBA9, 0x21 + +gUnknown_841CBCA:: @ 841CBCA + .incbin "baserom.gba", 0x41CBCA, 0x1A + +gUnknown_841CBE4:: @ 841CBE4 + .incbin "baserom.gba", 0x41CBE4, 0x19 + +gUnknown_841CBFD:: @ 841CBFD + .incbin "baserom.gba", 0x41CBFD, 0x14 + +gUnknown_841CC11:: @ 841CC11 + .incbin "baserom.gba", 0x41CC11, 0x31 + +gUnknown_841CC42:: @ 841CC42 + .incbin "baserom.gba", 0x41CC42, 0x22 + +gUnknown_841CC64:: @ 841CC64 + .incbin "baserom.gba", 0x41CC64, 0x9F + +gUnknown_841CD03:: @ 841CD03 + .incbin "baserom.gba", 0x41CD03, 0x22 + +gUnknown_841CD25:: @ 841CD25 + .incbin "baserom.gba", 0x41CD25, 0x1E + +gUnknown_841CD43:: @ 841CD43 + .incbin "baserom.gba", 0x41CD43, 0x15 + +gUnknown_841CD58:: @ 841CD58 + .incbin "baserom.gba", 0x41CD58, 0x22 + +gUnknown_841CD7A:: @ 841CD7A + .incbin "baserom.gba", 0x41CD7A, 0x25 + +gUnknown_841CD9F:: @ 841CD9F + .incbin "baserom.gba", 0x41CD9F, 0x1B + +gUnknown_841CDBA:: @ 841CDBA + .incbin "baserom.gba", 0x41CDBA, 0x1D + +gUnknown_841CDD7:: @ 841CDD7 + .incbin "baserom.gba", 0x41CDD7, 0x14 + +gUnknown_841CDEB:: @ 841CDEB + .incbin "baserom.gba", 0x41CDEB, 0x31 + +gUnknown_841CE1C:: @ 841CE1C + .incbin "baserom.gba", 0x41CE1C, 0x8 + +gUnknown_841CE24:: @ 841CE24 + .incbin "baserom.gba", 0x41CE24, 0x1FC + +gUnknown_841D020:: @ 841D020 + .incbin "baserom.gba", 0x41D020, 0xC + +gUnknown_841D02C:: @ 841D02C + .incbin "baserom.gba", 0x41D02C, 0x24 + +gUnknown_841D050:: @ 841D050 + .incbin "baserom.gba", 0x41D050, 0x8 + +gUnknown_841D058:: @ 841D058 + .incbin "baserom.gba", 0x41D058, 0x10 + +gUnknown_841D068:: @ 841D068 + .incbin "baserom.gba", 0x41D068, 0xC + +gUnknown_841D074:: @ 841D074 + .incbin "baserom.gba", 0x41D074, 0x4 + +gUnknown_841D078:: @ 841D078 + .incbin "baserom.gba", 0x41D078, 0x8 + +gUnknown_841D080:: @ 841D080 + .incbin "baserom.gba", 0x41D080, 0x8 + +gUnknown_841D088:: @ 841D088 + .incbin "baserom.gba", 0x41D088, 0x8 + +gUnknown_841D090:: @ 841D090 + .incbin "baserom.gba", 0x41D090, 0x8 + +gUnknown_841D098:: @ 841D098 + .incbin "baserom.gba", 0x41D098, 0xC + +gUnknown_841D0A4:: @ 841D0A4 + .incbin "baserom.gba", 0x41D0A4, 0x4 + +gUnknown_841D0A8:: @ 841D0A8 + .incbin "baserom.gba", 0x41D0A8, 0x18 + +gUnknown_841D0C0:: @ 841D0C0 + .incbin "baserom.gba", 0x41D0C0, 0x58 + +gUnknown_841D118:: @ 841D118 + .incbin "baserom.gba", 0x41D118, 0xC + +gUnknown_841D124:: @ 841D124 + .incbin "baserom.gba", 0x41D124, 0x18 + +gUnknown_841D13C:: @ 841D13C + .incbin "baserom.gba", 0x41D13C, 0xC + +gUnknown_841D148:: @ 841D148 + .incbin "baserom.gba", 0x41D148, 0x6 + +gUnknown_841D14E:: @ 841D14E + .incbin "baserom.gba", 0x41D14E, 0x1B + +gUnknown_841D169:: @ 841D169 + .incbin "baserom.gba", 0x41D169, 0x15 + +gUnknown_841D17E:: @ 841D17E + .incbin "baserom.gba", 0x41D17E, 0xF + +gUnknown_841D18D:: @ 841D18D + .incbin "baserom.gba", 0x41D18D, 0xB + +gUnknown_841D198:: @ 841D198 + .incbin "baserom.gba", 0x41D198, 0xCB8 + +gUnknown_841DE50:: @ 841DE50 + .incbin "baserom.gba", 0x41DE50, 0x1 + +gUnknown_841DE51:: @ 841DE51 + .incbin "baserom.gba", 0x41DE51, 0x1 + +gUnknown_841DE52:: @ 841DE52 + .incbin "baserom.gba", 0x41DE52, 0x1 + +gUnknown_841DE53:: @ 841DE53 + .incbin "baserom.gba", 0x41DE53, 0x1 + +gUnknown_841DE54:: @ 841DE54 + .incbin "baserom.gba", 0x41DE54, 0x28 + +gUnknown_841DE7C:: @ 841DE7C + .incbin "baserom.gba", 0x41DE7C, 0x1 + +gUnknown_841DE7D:: @ 841DE7D + .incbin "baserom.gba", 0x41DE7D, 0x18 + +gUnknown_841DE95:: @ 841DE95 + .incbin "baserom.gba", 0x41DE95, 0x1 + +gUnknown_841DE96:: @ 841DE96 + .incbin "baserom.gba", 0x41DE96, 0x1 + +gUnknown_841DE97:: @ 841DE97 + .incbin "baserom.gba", 0x41DE97, 0x1 + +gUnknown_841DE98:: @ 841DE98 + .incbin "baserom.gba", 0x41DE98, 0x1 + +gUnknown_841DE99:: @ 841DE99 + .incbin "baserom.gba", 0x41DE99, 0x1 + +gUnknown_841DE9A:: @ 841DE9A + .incbin "baserom.gba", 0x41DE9A, 0x1 + +gUnknown_841DE9B:: @ 841DE9B + .incbin "baserom.gba", 0x41DE9B, 0x1 + +gUnknown_841DE9C:: @ 841DE9C + .incbin "baserom.gba", 0x41DE9C, 0x1 + +gUnknown_841DE9D:: @ 841DE9D + .incbin "baserom.gba", 0x41DE9D, 0x53 + +gUnknown_841DEF0:: @ 841DEF0 + .incbin "baserom.gba", 0x41DEF0, 0x15 + +gUnknown_841DF05:: @ 841DF05 + .incbin "baserom.gba", 0x41DF05, 0x47 + +gUnknown_841DF4C:: @ 841DF4C + .incbin "baserom.gba", 0x41DF4C, 0x1F + +gUnknown_841DF6B:: @ 841DF6B + .incbin "baserom.gba", 0x41DF6B, 0x17 + +gUnknown_841DF82:: @ 841DF82 + .incbin "baserom.gba", 0x41DF82, 0x23 + +gUnknown_841DFA5:: @ 841DFA5 + .incbin "baserom.gba", 0x41DFA5, 0x7 + +gUnknown_841DFAC:: @ 841DFAC + .incbin "baserom.gba", 0x41DFAC, 0x12 + +gUnknown_841DFBE:: @ 841DFBE + .incbin "baserom.gba", 0x41DFBE, 0xB + +gUnknown_841DFC9:: @ 841DFC9 + .incbin "baserom.gba", 0x41DFC9, 0xCA + +gUnknown_841E093:: @ 841E093 + .incbin "baserom.gba", 0x41E093, 0xC + +gUnknown_841E09F:: @ 841E09F + .incbin "baserom.gba", 0x41E09F, 0x6 + +gUnknown_841E0A5:: @ 841E0A5 + .incbin "baserom.gba", 0x41E0A5, 0x144 + +gUnknown_841E1E9:: @ 841E1E9 + .incbin "baserom.gba", 0x41E1E9, 0x17 + +gUnknown_841E200:: @ 841E200 + .incbin "baserom.gba", 0x41E200, 0xD + +gUnknown_841E20D:: @ 841E20D + .incbin "baserom.gba", 0x41E20D, 0x11 + +gUnknown_841E21E:: @ 841E21E + .incbin "baserom.gba", 0x41E21E, 0x16 + +gUnknown_841E234:: @ 841E234 + .incbin "baserom.gba", 0x41E234, 0xF1 + +gUnknown_841E325:: @ 841E325 + .incbin "baserom.gba", 0x41E325, 0xBE + +gUnknown_841E3E3:: @ 841E3E3 + .incbin "baserom.gba", 0x41E3E3, 0x18 + +gUnknown_841E3FB:: @ 841E3FB + .incbin "baserom.gba", 0x41E3FB, 0xA + +gUnknown_841E405:: @ 841E405 + .incbin "baserom.gba", 0x41E405, 0xF + +gUnknown_841E414:: @ 841E414 + .incbin "baserom.gba", 0x41E414, 0x6D + +gUnknown_841E481:: @ 841E481 + .incbin "baserom.gba", 0x41E481, 0x12 + +gUnknown_841E493:: @ 841E493 + .incbin "baserom.gba", 0x41E493, 0x2D + +gUnknown_841E4C0:: @ 841E4C0 + .incbin "baserom.gba", 0x41E4C0, 0x22 + +gUnknown_841E4E2:: @ 841E4E2 + .incbin "baserom.gba", 0x41E4E2, 0x2A + +gUnknown_841E50C:: @ 841E50C + .incbin "baserom.gba", 0x41E50C, 0x2C + +gUnknown_841E538:: @ 841E538 + .incbin "baserom.gba", 0x41E538, 0x3A + +gUnknown_841E572:: @ 841E572 + .incbin "baserom.gba", 0x41E572, 0x1B + +gUnknown_841E58D:: @ 841E58D + .incbin "baserom.gba", 0x41E58D, 0x17 + +gUnknown_841E5A4:: @ 841E5A4 + .incbin "baserom.gba", 0x41E5A4, 0x15 + +gUnknown_841E5B9:: @ 841E5B9 + .incbin "baserom.gba", 0x41E5B9, 0x19 + +gUnknown_841E5D2:: @ 841E5D2 + .incbin "baserom.gba", 0x41E5D2, 0xCF + +gUnknown_841E6A1:: @ 841E6A1 + .incbin "baserom.gba", 0x41E6A1, 0x3B + +gUnknown_841E6DC:: @ 841E6DC + .incbin "baserom.gba", 0x41E6DC, 0x3B + +gUnknown_841E717:: @ 841E717 + .incbin "baserom.gba", 0x41E717, 0x2A + +gUnknown_841E741:: @ 841E741 + .incbin "baserom.gba", 0x41E741, 0x53 + +gUnknown_841E794:: @ 841E794 + .incbin "baserom.gba", 0x41E794, 0xF + +gUnknown_841E7A3:: @ 841E7A3 + .incbin "baserom.gba", 0x41E7A3, 0x19 + +gUnknown_841E7BC:: @ 841E7BC + .incbin "baserom.gba", 0x41E7BC, 0x15 + +gUnknown_841E7D1:: @ 841E7D1 + .incbin "baserom.gba", 0x41E7D1, 0x21 + +gUnknown_841E7F2:: @ 841E7F2 + .incbin "baserom.gba", 0x41E7F2, 0x31 + +gUnknown_841E823:: @ 841E823 + .incbin "baserom.gba", 0x41E823, 0x43 + +gUnknown_841E866:: @ 841E866 + .incbin "baserom.gba", 0x41E866, 0x29 + +gUnknown_841E88F:: @ 841E88F + .incbin "baserom.gba", 0x41E88F, 0x2E + +gUnknown_841E8BD:: @ 841E8BD + .incbin "baserom.gba", 0x41E8BD, 0x25 + +gUnknown_841E8E2:: @ 841E8E2 + .incbin "baserom.gba", 0x41E8E2, 0x2A + +gUnknown_841E90C:: @ 841E90C + .incbin "baserom.gba", 0x41E90C, 0x1F + +gUnknown_841E92B:: @ 841E92B + .incbin "baserom.gba", 0x41E92B, 0x1B + +gUnknown_841E946:: @ 841E946 + .incbin "baserom.gba", 0x41E946, 0x22 + +gUnknown_841E968:: @ 841E968 + .incbin "baserom.gba", 0x41E968, 0x27 + +gUnknown_841E98F:: @ 841E98F + .incbin "baserom.gba", 0x41E98F, 0x1C + +gUnknown_841E9AB:: @ 841E9AB + .incbin "baserom.gba", 0x41E9AB, 0x28 + +gUnknown_841E9D3:: @ 841E9D3 + .incbin "baserom.gba", 0x41E9D3, 0x3A + +gUnknown_841EA0D:: @ 841EA0D + .incbin "baserom.gba", 0x41EA0D, 0x32 + +gUnknown_841EA3F:: @ 841EA3F + .incbin "baserom.gba", 0x41EA3F, 0x30 + +gUnknown_841EA6F:: @ 841EA6F + .incbin "baserom.gba", 0x41EA6F, 0x17 + +gUnknown_841EA86:: @ 841EA86 + .incbin "baserom.gba", 0x41EA86, 0x31 + +gUnknown_841EAB7:: @ 841EAB7 + .incbin "baserom.gba", 0x41EAB7, 0x30 + +gUnknown_841EAE7:: @ 841EAE7 + .incbin "baserom.gba", 0x41EAE7, 0x1A + +gUnknown_841EB01:: @ 841EB01 + .incbin "baserom.gba", 0x41EB01, 0x1F + +gUnknown_841EB20:: @ 841EB20 + .incbin "baserom.gba", 0x41EB20, 0x26 + +gUnknown_841EB46:: @ 841EB46 + .incbin "baserom.gba", 0x41EB46, 0x2B + +gUnknown_841EB71:: @ 841EB71 + .incbin "baserom.gba", 0x41EB71, 0x1D + +gUnknown_841EB8E:: @ 841EB8E + .incbin "baserom.gba", 0x41EB8E, 0x1C + +gUnknown_841EBAA:: @ 841EBAA + .incbin "baserom.gba", 0x41EBAA, 0x34 + +gUnknown_841EBDE:: @ 841EBDE + .incbin "baserom.gba", 0x41EBDE, 0x34 + +gUnknown_841EC12:: @ 841EC12 + .incbin "baserom.gba", 0x41EC12, 0x2E + +gUnknown_841EC40:: @ 841EC40 + .incbin "baserom.gba", 0x41EC40, 0x2A + +gUnknown_841EC6A:: @ 841EC6A + .incbin "baserom.gba", 0x41EC6A, 0x2F + +gUnknown_841EC99:: @ 841EC99 + .incbin "baserom.gba", 0x41EC99, 0x3A + +gUnknown_841ECD3:: @ 841ECD3 + .incbin "baserom.gba", 0x41ECD3, 0x26 + +gUnknown_841ECF9:: @ 841ECF9 + .incbin "baserom.gba", 0x41ECF9, 0x36 + +gUnknown_841ED2F:: @ 841ED2F + .incbin "baserom.gba", 0x41ED2F, 0x21 + +gUnknown_841ED50:: @ 841ED50 + .incbin "baserom.gba", 0x41ED50, 0x2B + +gUnknown_841ED7B:: @ 841ED7B + .incbin "baserom.gba", 0x41ED7B, 0x21 + +gUnknown_841ED9C:: @ 841ED9C + .incbin "baserom.gba", 0x41ED9C, 0x21 + +gUnknown_841EDBD:: @ 841EDBD + .incbin "baserom.gba", 0x41EDBD, 0xD + +gUnknown_841EDCA:: @ 841EDCA + .incbin "baserom.gba", 0x41EDCA, 0x61 + +gUnknown_841EE2B:: @ 841EE2B + .incbin "baserom.gba", 0x41EE2B, 0x19 + +gUnknown_841EE44:: @ 841EE44 + .incbin "baserom.gba", 0x41EE44, 0x20 + +gUnknown_841EE64:: @ 841EE64 + .incbin "baserom.gba", 0x41EE64, 0x4 + +gUnknown_841EE68:: @ 841EE68 + .incbin "baserom.gba", 0x41EE68, 0x18 + +gUnknown_841EE80:: @ 841EE80 + .incbin "baserom.gba", 0x41EE80, 0x44 + +gUnknown_841EEC4:: @ 841EEC4 + .incbin "baserom.gba", 0x41EEC4, 0x10 + +gUnknown_841EED4:: @ 841EED4 + .incbin "baserom.gba", 0x41EED4, 0x24 + +gUnknown_841EEF8:: @ 841EEF8 + .incbin "baserom.gba", 0x41EEF8, 0x18 + +gUnknown_841EF10:: @ 841EF10 + .incbin "baserom.gba", 0x41EF10, 0x2B8 + +gUnknown_841F1C8:: @ 841F1C8 + .incbin "baserom.gba", 0x41F1C8, 0x240 + +gUnknown_841F408:: @ 841F408 + .incbin "baserom.gba", 0x41F408, 0x20 + +gUnknown_841F428:: @ 841F428 + .incbin "baserom.gba", 0x41F428, 0x4 + +gUnknown_841F42C:: @ 841F42C + .incbin "baserom.gba", 0x41F42C, 0x10 + +gUnknown_841F43C:: @ 841F43C + .incbin "baserom.gba", 0x41F43C, 0x8 + +gUnknown_841F444:: @ 841F444 + .incbin "baserom.gba", 0x41F444, 0x60 + +gUnknown_841F4A4:: @ 841F4A4 + .incbin "baserom.gba", 0x41F4A4, 0x10 + +gUnknown_841F4B4:: @ 841F4B4 + .incbin "baserom.gba", 0x41F4B4, 0x1F534 + +gUnknown_843E9E8:: @ 843E9E8 + .incbin "baserom.gba", 0x43E9E8, 0x1C0 + +gUnknown_843EBA8:: @ 843EBA8 + .incbin "baserom.gba", 0x43EBA8, 0x8 + +gUnknown_843EBB0:: @ 843EBB0 + .incbin "baserom.gba", 0x43EBB0, 0x4 + +gUnknown_843EBB4:: @ 843EBB4 + .incbin "baserom.gba", 0x43EBB4, 0x18 + +gUnknown_843EBCC:: @ 843EBCC + .incbin "baserom.gba", 0x43EBCC, 0x8 + +gUnknown_843EBD4:: @ 843EBD4 + .incbin "baserom.gba", 0x43EBD4, 0x64 + +gUnknown_843EC38:: @ 843EC38 + .incbin "baserom.gba", 0x43EC38, 0x9 + +gUnknown_843EC41:: @ 843EC41 + .incbin "baserom.gba", 0x43EC41, 0x10 + +gUnknown_843EC51:: @ 843EC51 + .incbin "baserom.gba", 0x43EC51, 0x13 + +gUnknown_843EC64:: @ 843EC64 + .incbin "baserom.gba", 0x43EC64, 0x28 + +gUnknown_843EC8C:: @ 843EC8C + .incbin "baserom.gba", 0x43EC8C, 0xFC + +gUnknown_843ED88:: @ 843ED88 + .incbin "baserom.gba", 0x43ED88, 0xC + +gUnknown_843ED94:: @ 843ED94 + .incbin "baserom.gba", 0x43ED94, 0x30 + +gUnknown_843EDC4:: @ 843EDC4 + .incbin "baserom.gba", 0x43EDC4, 0x14 + +gUnknown_843EDD8:: @ 843EDD8 + .incbin "baserom.gba", 0x43EDD8, 0xC + +gUnknown_843EDE4:: @ 843EDE4 + .incbin "baserom.gba", 0x43EDE4, 0x14 + +gUnknown_843EDF8:: @ 843EDF8 + .incbin "baserom.gba", 0x43EDF8, 0x18 + +gUnknown_843EE10:: @ 843EE10 + .incbin "baserom.gba", 0x43EE10, 0x18 + +gUnknown_843EE28:: @ 843EE28 + .incbin "baserom.gba", 0x43EE28, 0x1F + +gUnknown_843EE47:: @ 843EE47 + .incbin "baserom.gba", 0x43EE47, 0x10 + +gUnknown_843EE57:: @ 843EE57 + .incbin "baserom.gba", 0x43EE57, 0xD + +gUnknown_843EE64:: @ 843EE64 + .incbin "baserom.gba", 0x43EE64, 0x1A0 + +gUnknown_843F004:: @ 843F004 + .incbin "baserom.gba", 0x43F004, 0x100 + +gUnknown_843F104:: @ 843F104 + .incbin "baserom.gba", 0x43F104, 0x100 + +gUnknown_843F204:: @ 843F204 + .incbin "baserom.gba", 0x43F204, 0x70 + +gUnknown_843F274:: @ 843F274 + .incbin "baserom.gba", 0x43F274, 0x8 + +gUnknown_843F27C:: @ 843F27C + .incbin "baserom.gba", 0x43F27C, 0x8 + +gUnknown_843F284:: @ 843F284 + .incbin "baserom.gba", 0x43F284, 0x18 + +gUnknown_843F29C:: @ 843F29C + .incbin "baserom.gba", 0x43F29C, 0x8 + +gUnknown_843F2A4:: @ 843F2A4 + .incbin "baserom.gba", 0x43F2A4, 0x8 + +gUnknown_843F2AC:: @ 843F2AC + .incbin "baserom.gba", 0x43F2AC, 0xF0 + +gUnknown_843F39C:: @ 843F39C + .incbin "baserom.gba", 0x43F39C, 0x3D0 + +gUnknown_843F76C:: @ 843F76C + .incbin "baserom.gba", 0x43F76C, 0x20 + +gUnknown_843F78C:: @ 843F78C + .incbin "baserom.gba", 0x43F78C, 0x20 + +gUnknown_843F7AC:: @ 843F7AC + .incbin "baserom.gba", 0x43F7AC, 0xC8 + +gUnknown_843F874:: @ 843F874 + .incbin "baserom.gba", 0x43F874, 0x8 + +gUnknown_843F87C:: @ 843F87C + .incbin "baserom.gba", 0x43F87C, 0xC + +gUnknown_843F888:: @ 843F888 + .incbin "baserom.gba", 0x43F888, 0x18 + +gUnknown_843F8A0:: @ 843F8A0 + .incbin "baserom.gba", 0x43F8A0, 0x10 + +gUnknown_843F8B0:: @ 843F8B0 + .incbin "baserom.gba", 0x43F8B0, 0x20 + +gUnknown_843F8D0:: @ 843F8D0 + .incbin "baserom.gba", 0x43F8D0, 0x8 + +gUnknown_843F8D8:: @ 843F8D8 + .incbin "baserom.gba", 0x43F8D8, 0x3 + +gUnknown_843F8DB:: @ 843F8DB + .incbin "baserom.gba", 0x43F8DB, 0x5 + +gUnknown_843F8E0:: @ 843F8E0 + .incbin "baserom.gba", 0x43F8E0, 0x10 + +gUnknown_843F8F0:: @ 843F8F0 + .incbin "baserom.gba", 0x43F8F0, 0x20 + +gUnknown_843F910:: @ 843F910 + .incbin "baserom.gba", 0x43F910, 0x28 + +gUnknown_843F938:: @ 843F938 + .incbin "baserom.gba", 0x43F938, 0x20 + +gUnknown_843F958:: @ 843F958 + .incbin "baserom.gba", 0x43F958, 0x10 + +gUnknown_843F968:: @ 843F968 + .incbin "baserom.gba", 0x43F968, 0x50 + +gUnknown_843F9B8:: @ 843F9B8 + .incbin "baserom.gba", 0x43F9B8, 0x68 + +gUnknown_843FA20:: @ 843FA20 + .incbin "baserom.gba", 0x43FA20, 0x20 + +gUnknown_843FA40:: @ 843FA40 + .incbin "baserom.gba", 0x43FA40, 0x40 + +gUnknown_843FA80:: @ 843FA80 + .incbin "baserom.gba", 0x43FA80, 0x18 + +gUnknown_843FA98:: @ 843FA98 + .incbin "baserom.gba", 0x43FA98, 0x18 + +gUnknown_843FAB0:: @ 843FAB0 + .incbin "baserom.gba", 0x43FAB0, 0x674 + +gUnknown_8440124:: @ 8440124 + .incbin "baserom.gba", 0x440124, 0x150 + +gUnknown_8440274:: @ 8440274 + .incbin "baserom.gba", 0x440274, 0x138 + +gUnknown_84403AC:: @ 84403AC + .incbin "baserom.gba", 0x4403AC, 0x11C + +gUnknown_84404C8:: @ 84404C8 + .incbin "baserom.gba", 0x4404C8, 0x200 + +gUnknown_84406C8:: @ 84406C8 + .incbin "baserom.gba", 0x4406C8, 0x4 + +gUnknown_84406CC:: @ 84406CC + .incbin "baserom.gba", 0x4406CC, 0x2 + +gUnknown_84406CE:: @ 84406CE + .incbin "baserom.gba", 0x4406CE, 0x12 + +gUnknown_84406E0:: @ 84406E0 + .incbin "baserom.gba", 0x4406E0, 0x810 + +gUnknown_8440EF0:: @ 8440EF0 + .incbin "baserom.gba", 0x440EF0, 0x2570 + +gUnknown_8443460:: @ 8443460 + .incbin "baserom.gba", 0x443460, 0x1A0 + +gUnknown_8443600:: @ 8443600 + .incbin "baserom.gba", 0x443600, 0x20 + +gUnknown_8443620:: @ 8443620 + .incbin "baserom.gba", 0x443620, 0x6E0 + +gUnknown_8443D00:: @ 8443D00 + .incbin "baserom.gba", 0x443D00, 0x2C0 + +gUnknown_8443FC0:: @ 8443FC0 + .incbin "baserom.gba", 0x443FC0, 0x336 + +gUnknown_84442F6:: @ 84442F6 + .incbin "baserom.gba", 0x4442F6, 0x304 + +gUnknown_84445FA:: @ 84445FA + .incbin "baserom.gba", 0x4445FA, 0x304 + +gUnknown_84448FE:: @ 84448FE + .incbin "baserom.gba", 0x4448FE, 0x9F52 + +gUnknown_844E850:: @ 844E850 + .incbin "baserom.gba", 0x44E850, 0x366C + +gUnknown_8451EBC:: @ 8451EBC + .incbin "baserom.gba", 0x451EBC, 0x10 + +gUnknown_8451ECC:: @ 8451ECC + .incbin "baserom.gba", 0x451ECC, 0x18 + +gUnknown_8451EE4:: @ 8451EE4 + .incbin "baserom.gba", 0x451EE4, 0x70 + +gUnknown_8451F54:: @ 8451F54 + .incbin "baserom.gba", 0x451F54, 0x8 + +gUnknown_8451F5C:: @ 8451F5C + .incbin "baserom.gba", 0x451F5C, 0x8 + +gUnknown_8451F64:: @ 8451F64 + .incbin "baserom.gba", 0x451F64, 0xA0 + +gUnknown_8452004:: @ 8452004 + .incbin "baserom.gba", 0x452004, 0xB8 + +gUnknown_84520BC:: @ 84520BC + .incbin "baserom.gba", 0x4520BC, 0x18 + +gUnknown_84520D4:: @ 84520D4 + .incbin "baserom.gba", 0x4520D4, 0x10 + +gUnknown_84520E4:: @ 84520E4 + .incbin "baserom.gba", 0x4520E4, 0x10 + +gUnknown_84520F4:: @ 84520F4 + .incbin "baserom.gba", 0x4520F4, 0x78 + +gUnknown_845216C:: @ 845216C + .incbin "baserom.gba", 0x45216C, 0x8 + +gUnknown_8452174:: @ 8452174 + .incbin "baserom.gba", 0x452174, 0x18 + +gUnknown_845218C:: @ 845218C + .incbin "baserom.gba", 0x45218C, 0x28 + +gUnknown_84521B4:: @ 84521B4 + .incbin "baserom.gba", 0x4521B4, 0x10 + +gUnknown_84521C4:: @ 84521C4 + .incbin "baserom.gba", 0x4521C4, 0x8 + +gUnknown_84521CC:: @ 84521CC + .incbin "baserom.gba", 0x4521CC, 0x8 + +gUnknown_84521D4:: @ 84521D4 + .incbin "baserom.gba", 0x4521D4, 0x8 + +gUnknown_84521DC:: @ 84521DC + .incbin "baserom.gba", 0x4521DC, 0x8 + +gUnknown_84521E4:: @ 84521E4 + .incbin "baserom.gba", 0x4521E4, 0x8 + +gUnknown_84521EC:: @ 84521EC + .incbin "baserom.gba", 0x4521EC, 0x8 + +gUnknown_84521F4:: @ 84521F4 + .incbin "baserom.gba", 0x4521F4, 0x8 + +gUnknown_84521FC:: @ 84521FC + .incbin "baserom.gba", 0x4521FC, 0x8 + +gUnknown_8452204:: @ 8452204 + .incbin "baserom.gba", 0x452204, 0x8 + +gUnknown_845220C:: @ 845220C + .incbin "baserom.gba", 0x45220C, 0x8 + +gUnknown_8452214:: @ 8452214 + .incbin "baserom.gba", 0x452214, 0x40 + +gUnknown_8452254:: @ 8452254 + .incbin "baserom.gba", 0x452254, 0x38 + +gUnknown_845228C:: @ 845228C + .incbin "baserom.gba", 0x45228C, 0xA8 + +gUnknown_8452334:: @ 8452334 + .incbin "baserom.gba", 0x452334, 0x10 + +gUnknown_8452344:: @ 8452344 + .incbin "baserom.gba", 0x452344, 0x24 + +gUnknown_8452368:: @ 8452368 + .incbin "baserom.gba", 0x452368, 0x20 + +gUnknown_8452388:: @ 8452388 + .incbin "baserom.gba", 0x452388, 0x12C + +gUnknown_84524B4:: @ 84524B4 + .incbin "baserom.gba", 0x4524B4, 0x10 + +gUnknown_84524C4:: @ 84524C4 + .incbin "baserom.gba", 0x4524C4, 0x788 + +gUnknown_8452C4C:: @ 8452C4C + .incbin "baserom.gba", 0x452C4C, 0x48 + +gUnknown_8452C94:: @ 8452C94 + .incbin "baserom.gba", 0x452C94, 0x60 + +gUnknown_8452CF4:: @ 8452CF4 + .incbin "baserom.gba", 0x452CF4, 0x8 + +gUnknown_8452CFC:: @ 8452CFC + .incbin "baserom.gba", 0x452CFC, 0xC + +gUnknown_8452D08:: @ 8452D08 + .incbin "baserom.gba", 0x452D08, 0x1B0 + +gUnknown_8452EB8:: @ 8452EB8 + .incbin "baserom.gba", 0x452EB8, 0x60 + +gUnknown_8452F18:: @ 8452F18 + .incbin "baserom.gba", 0x452F18, 0xC + +gUnknown_8452F24:: @ 8452F24 + .incbin "baserom.gba", 0x452F24, 0x4 + +gUnknown_8452F28:: @ 8452F28 + .incbin "baserom.gba", 0x452F28, 0x6 + +gUnknown_8452F2E:: @ 8452F2E + .incbin "baserom.gba", 0x452F2E, 0x2 + +gUnknown_8452F30:: @ 8452F30 + .incbin "baserom.gba", 0x452F30, 0x2 + +gUnknown_8452F32:: @ 8452F32 + .incbin "baserom.gba", 0x452F32, 0x2 + +gUnknown_8452F34:: @ 8452F34 + .incbin "baserom.gba", 0x452F34, 0x1C + +gUnknown_8452F50:: @ 8452F50 + .incbin "baserom.gba", 0x452F50, 0x8 + +gUnknown_8452F58:: @ 8452F58 + .incbin "baserom.gba", 0x452F58, 0x8 + +gUnknown_8452F60:: @ 8452F60 + .incbin "baserom.gba", 0x452F60, 0x6 + +gUnknown_8452F66:: @ 8452F66 + .incbin "baserom.gba", 0x452F66, 0x6 + +gUnknown_8452F6C:: @ 8452F6C + .incbin "baserom.gba", 0x452F6C, 0x10 + +gUnknown_8452F7C:: @ 8452F7C + .incbin "baserom.gba", 0x452F7C, 0xC0 + +gUnknown_845303C:: @ 845303C + .incbin "baserom.gba", 0x45303C, 0x56 + +gUnknown_8453092:: @ 8453092 + .incbin "baserom.gba", 0x453092, 0x2 + +gUnknown_8453094:: @ 8453094 + .incbin "baserom.gba", 0x453094, 0x4 + +gUnknown_8453098:: @ 8453098 + .incbin "baserom.gba", 0x453098, 0x20 + +gUnknown_84530B8:: @ 84530B8 + .incbin "baserom.gba", 0x4530B8, 0xC + +gUnknown_84530C4:: @ 84530C4 + .incbin "baserom.gba", 0x4530C4, 0x20 + +gUnknown_84530E4:: @ 84530E4 + .incbin "baserom.gba", 0x4530E4, 0x20 + +gUnknown_8453104:: @ 8453104 + .incbin "baserom.gba", 0x453104, 0x18 + +gUnknown_845311C:: @ 845311C + .incbin "baserom.gba", 0x45311C, 0x8 + +gUnknown_8453124:: @ 8453124 + .incbin "baserom.gba", 0x453124, 0x54 + +gUnknown_8453178:: @ 8453178 + .incbin "baserom.gba", 0x453178, 0xC + +gUnknown_8453184:: @ 8453184 + .incbin "baserom.gba", 0x453184, 0x8 + +gUnknown_845318C:: @ 845318C + .incbin "baserom.gba", 0x45318C, 0xDD0 + +gUnknown_8453F5C:: @ 8453F5C + .incbin "baserom.gba", 0x453F5C, 0x4 + +gUnknown_8453F60:: @ 8453F60 + .incbin "baserom.gba", 0x453F60, 0x2 + +gUnknown_8453F62:: @ 8453F62 + .incbin "baserom.gba", 0x453F62, 0x2 + +gUnknown_8453F64:: @ 8453F64 + .incbin "baserom.gba", 0x453F64, 0x3 + +gUnknown_8453F67:: @ 8453F67 + .incbin "baserom.gba", 0x453F67, 0x5 + +gUnknown_8453F6C:: @ 8453F6C + .incbin "baserom.gba", 0x453F6C, 0x8 + +gUnknown_8453F74:: @ 8453F74 + .incbin "baserom.gba", 0x453F74, 0x18 + +gUnknown_8453F8C:: @ 8453F8C + .incbin "baserom.gba", 0x453F8C, 0xC + +gUnknown_8453F98:: @ 8453F98 + .incbin "baserom.gba", 0x453F98, 0x38 + +gUnknown_8453FD0:: @ 8453FD0 + .incbin "baserom.gba", 0x453FD0, 0x18 + +gUnknown_8453FE8:: @ 8453FE8 + .incbin "baserom.gba", 0x453FE8, 0x18 + +gUnknown_8454000:: @ 8454000 + .incbin "baserom.gba", 0x454000, 0x3 + +gUnknown_8454003:: @ 8454003 + .incbin "baserom.gba", 0x454003, 0x2615 + +gUnknown_8456618:: @ 8456618 + .incbin "baserom.gba", 0x456618, 0x4 + +gUnknown_845661C:: @ 845661C + .incbin "baserom.gba", 0x45661C, 0x18 + +gUnknown_8456634:: @ 8456634 + .incbin "baserom.gba", 0x456634, 0x4 + +gUnknown_8456638:: @ 8456638 + .incbin "baserom.gba", 0x456638, 0x60 + +gUnknown_8456698:: @ 8456698 + .incbin "baserom.gba", 0x456698, 0x4 + +gUnknown_845669C:: @ 845669C + .incbin "baserom.gba", 0x45669C, 0x8 + +gUnknown_84566A4:: @ 84566A4 + .incbin "baserom.gba", 0x4566A4, 0x4 + +gUnknown_84566A8:: @ 84566A8 + .incbin "baserom.gba", 0x4566A8, 0x280 + +gUnknown_8456928:: @ 8456928 + .incbin "baserom.gba", 0x456928, 0x8 + +gUnknown_8456930:: @ 8456930 + .incbin "baserom.gba", 0x456930, 0x4 + +gUnknown_8456934:: @ 8456934 + .incbin "baserom.gba", 0x456934, 0x4 + +gUnknown_8456938:: @ 8456938 + .incbin "baserom.gba", 0x456938, 0x8 + +gUnknown_8456940:: @ 8456940 + .incbin "baserom.gba", 0x456940, 0x8 + +gUnknown_8456948:: @ 8456948 + .incbin "baserom.gba", 0x456948, 0xAC + +gUnknown_84569F4:: @ 84569F4 + .incbin "baserom.gba", 0x4569F4, 0xAC + +gUnknown_8456AA0:: @ 8456AA0 + .incbin "baserom.gba", 0x456AA0, 0x2C + +gUnknown_8456ACC:: @ 8456ACC + .incbin "baserom.gba", 0x456ACC, 0xC + +gUnknown_8456AD8:: @ 8456AD8 + .incbin "baserom.gba", 0x456AD8, 0xC + +gUnknown_8456AE4:: @ 8456AE4 + .incbin "baserom.gba", 0x456AE4, 0xC + +gUnknown_8456AF0:: @ 8456AF0 + .incbin "baserom.gba", 0x456AF0, 0xCC + +gUnknown_8456BBC:: @ 8456BBC + .incbin "baserom.gba", 0x456BBC, 0x28 + +gUnknown_8456BE4:: @ 8456BE4 + .incbin "baserom.gba", 0x456BE4, 0x33 + +gUnknown_8456C17:: @ 8456C17 + .incbin "baserom.gba", 0x456C17, 0x9 + +gUnknown_8456C20:: @ 8456C20 + .incbin "baserom.gba", 0x456C20, 0x30 + +gUnknown_8456C50:: @ 8456C50 + .incbin "baserom.gba", 0x456C50, 0x24 + +gUnknown_8456C74:: @ 8456C74 + .incbin "baserom.gba", 0x456C74, 0x5C + +gUnknown_8456CD0:: @ 8456CD0 + .incbin "baserom.gba", 0x456CD0, 0x8 + +gUnknown_8456CD8:: @ 8456CD8 + .incbin "baserom.gba", 0x456CD8, 0x24 + +gUnknown_8456CFC:: @ 8456CFC + .incbin "baserom.gba", 0x456CFC, 0x8 + +gUnknown_8456D04:: @ 8456D04 + .incbin "baserom.gba", 0x456D04, 0x30 + +gUnknown_8456D34:: @ 8456D34 + .incbin "baserom.gba", 0x456D34, 0x18 + +gUnknown_8456D4C:: @ 8456D4C + .incbin "baserom.gba", 0x456D4C, 0x8 + +gUnknown_8456D54:: @ 8456D54 + .incbin "baserom.gba", 0x456D54, 0x88 + +gUnknown_8456DDC:: @ 8456DDC + .incbin "baserom.gba", 0x456DDC, 0x18 + +gUnknown_8456DF4:: @ 8456DF4 + .incbin "baserom.gba", 0x456DF4, 0x28 + +gUnknown_8456E1C:: @ 8456E1C + .incbin "baserom.gba", 0x456E1C, 0x18 + +gUnknown_8456E34:: @ 8456E34 + .incbin "baserom.gba", 0x456E34, 0x20 + +gUnknown_8456E54:: @ 8456E54 + .incbin "baserom.gba", 0x456E54, 0x18 + +gUnknown_8456E6C:: @ 8456E6C + .incbin "baserom.gba", 0x456E6C, 0x98 + +gUnknown_8456F04:: @ 8456F04 + .incbin "baserom.gba", 0x456F04, 0x18 + +gUnknown_8456F1C:: @ 8456F1C + .incbin "baserom.gba", 0x456F1C, 0x8 + +gUnknown_8456F24:: @ 8456F24 + .incbin "baserom.gba", 0x456F24, 0x58 + +gUnknown_8456F7C:: @ 8456F7C + .incbin "baserom.gba", 0x456F7C, 0xB8 + +gUnknown_8457034:: @ 8457034 + .incbin "baserom.gba", 0x457034, 0x60 + +gUnknown_8457094:: @ 8457094 + .incbin "baserom.gba", 0x457094, 0x34 + +gUnknown_84570C8:: @ 84570C8 + .incbin "baserom.gba", 0x4570C8, 0x10 + +gUnknown_84570D8:: @ 84570D8 + .incbin "baserom.gba", 0x4570D8, 0x14 + +gUnknown_84570EC:: @ 84570EC + .incbin "baserom.gba", 0x4570EC, 0x20 + +gUnknown_845710C:: @ 845710C + .incbin "baserom.gba", 0x45710C, 0xA + +gUnknown_8457116:: @ 8457116 + .incbin "baserom.gba", 0x457116, 0x5 + +gUnknown_845711B:: @ 845711B + .incbin "baserom.gba", 0x45711B, 0x5 + +gUnknown_8457120:: @ 8457120 + .incbin "baserom.gba", 0x457120, 0x18 + +gUnknown_8457138:: @ 8457138 + .incbin "baserom.gba", 0x457138, 0x3C + +gUnknown_8457174:: @ 8457174 + .incbin "baserom.gba", 0x457174, 0x4 + +gUnknown_8457178:: @ 8457178 + .incbin "baserom.gba", 0x457178, 0x15 + +gUnknown_845718D:: @ 845718D + .incbin "baserom.gba", 0x45718D, 0x2 + +gUnknown_845718F:: @ 845718F + .incbin "baserom.gba", 0x45718F, 0x5 + +gUnknown_8457194:: @ 8457194 + .incbin "baserom.gba", 0x457194, 0x4 + +gUnknown_8457198:: @ 8457198 + .incbin "baserom.gba", 0x457198, 0x10 + +gUnknown_84571A8:: @ 84571A8 + .incbin "baserom.gba", 0x4571A8, 0x8 + +gUnknown_84571B0:: @ 84571B0 + .incbin "baserom.gba", 0x4571B0, 0x4 + +gUnknown_84571B4:: @ 84571B4 + .incbin "baserom.gba", 0x4571B4, 0x4 + +gUnknown_84571B8:: @ 84571B8 + .incbin "baserom.gba", 0x4571B8, 0x28 + +gUnknown_84571E0:: @ 84571E0 + .incbin "baserom.gba", 0x4571E0, 0x54 + +gUnknown_8457234:: @ 8457234 + .incbin "baserom.gba", 0x457234, 0x30 + +gUnknown_8457264:: @ 8457264 + .incbin "baserom.gba", 0x457264, 0x1C8 + +gUnknown_845742C:: @ 845742C + .incbin "baserom.gba", 0x45742C, 0x50 + +gUnknown_845747C:: @ 845747C + .incbin "baserom.gba", 0x45747C, 0x24 + +gUnknown_84574A0:: @ 84574A0 + .incbin "baserom.gba", 0x4574A0, 0x24 + +gUnknown_84574C4:: @ 84574C4 + .incbin "baserom.gba", 0x4574C4, 0x28 + +gUnknown_84574EC:: @ 84574EC + .incbin "baserom.gba", 0x4574EC, 0x28 + +gUnknown_8457514:: @ 8457514 + .incbin "baserom.gba", 0x457514, 0x1C + +gUnknown_8457530:: @ 8457530 + .incbin "baserom.gba", 0x457530, 0x24 + +gUnknown_8457554:: @ 8457554 + .incbin "baserom.gba", 0x457554, 0xB4 + +gUnknown_8457608:: @ 8457608 + .incbin "baserom.gba", 0x457608, 0x8 + +gUnknown_8457610:: @ 8457610 + .incbin "baserom.gba", 0x457610, 0x6C + +gUnknown_845767C:: @ 845767C + .incbin "baserom.gba", 0x45767C, 0x30 + +gUnknown_84576AC:: @ 84576AC + .incbin "baserom.gba", 0x4576AC, 0x18 + +gUnknown_84576C4:: @ 84576C4 + .incbin "baserom.gba", 0x4576C4, 0x3C + +gUnknown_8457700:: @ 8457700 + .incbin "baserom.gba", 0x457700, 0x1C + +gUnknown_845771C:: @ 845771C + .incbin "baserom.gba", 0x45771C, 0x38 + +gUnknown_8457754:: @ 8457754 + .incbin "baserom.gba", 0x457754, 0x28 + +gUnknown_845777C:: @ 845777C + .incbin "baserom.gba", 0x45777C, 0x40 + +gUnknown_84577BC:: @ 84577BC + .incbin "baserom.gba", 0x4577BC, 0x3C + +gUnknown_84577F8:: @ 84577F8 + .incbin "baserom.gba", 0x4577F8, 0x40 + +gUnknown_8457838:: @ 8457838 + .incbin "baserom.gba", 0x457838, 0x84 + +gUnknown_84578BC:: @ 84578BC + .incbin "baserom.gba", 0x4578BC, 0x178 + +gUnknown_8457A34:: @ 8457A34 + .incbin "baserom.gba", 0x457A34, 0xD0 + +gUnknown_8457B04:: @ 8457B04 + .incbin "baserom.gba", 0x457B04, 0xC8 + +gUnknown_8457BCC:: @ 8457BCC + .incbin "baserom.gba", 0x457BCC, 0x54 + +gUnknown_8457C20:: @ 8457C20 + .incbin "baserom.gba", 0x457C20, 0x28 + +gUnknown_8457C48:: @ 8457C48 + .incbin "baserom.gba", 0x457C48, 0x5C + +gUnknown_8457CA4:: @ 8457CA4 + .incbin "baserom.gba", 0x457CA4, 0x54 + +gUnknown_8457CF8:: @ 8457CF8 + .incbin "baserom.gba", 0x457CF8, 0x4C + +gUnknown_8457D44:: @ 8457D44 + .incbin "baserom.gba", 0x457D44, 0x74 + +gUnknown_8457DB8:: @ 8457DB8 + .incbin "baserom.gba", 0x457DB8, 0x54 + +gUnknown_8457E0C:: @ 8457E0C + .incbin "baserom.gba", 0x457E0C, 0x1C + +gUnknown_8457E28:: @ 8457E28 + .incbin "baserom.gba", 0x457E28, 0x1C + +gUnknown_8457E44:: @ 8457E44 + .incbin "baserom.gba", 0x457E44, 0x1C + +gUnknown_8457E60:: @ 8457E60 + .incbin "baserom.gba", 0x457E60, 0x120 + +gUnknown_8457F80:: @ 8457F80 + .incbin "baserom.gba", 0x457F80, 0x10 + +gUnknown_8457F90:: @ 8457F90 + .incbin "baserom.gba", 0x457F90, 0x164 + +gUnknown_84580F4:: @ 84580F4 + .incbin "baserom.gba", 0x4580F4, 0x13C + +gUnknown_8458230:: @ 8458230 + .incbin "baserom.gba", 0x458230, 0xE4 + +gUnknown_8458314:: @ 8458314 + .incbin "baserom.gba", 0x458314, 0xA0 + +gUnknown_84583B4:: @ 84583B4 + .incbin "baserom.gba", 0x4583B4, 0x78 + +gUnknown_845842C:: @ 845842C + .incbin "baserom.gba", 0x45842C, 0x8 + +gUnknown_8458434:: @ 8458434 + .incbin "baserom.gba", 0x458434, 0x48 + +gUnknown_845847C:: @ 845847C + .incbin "baserom.gba", 0x45847C, 0x44 + +gUnknown_84584C0:: @ 84584C0 + .incbin "baserom.gba", 0x4584C0, 0x88 + +gUnknown_8458548:: @ 8458548 + .incbin "baserom.gba", 0x458548, 0xA0 + +gUnknown_84585E8:: @ 84585E8 + .incbin "baserom.gba", 0x4585E8, 0x170 + +gUnknown_8458758:: @ 8458758 + .incbin "baserom.gba", 0x458758, 0x164 + +gUnknown_84588BC:: @ 84588BC + .incbin "baserom.gba", 0x4588BC, 0xF0 + +gUnknown_84589AC:: @ 84589AC + .incbin "baserom.gba", 0x4589AC, 0xCC + +gUnknown_8458A78:: @ 8458A78 + .incbin "baserom.gba", 0x458A78, 0x20 + +gUnknown_8458A98:: @ 8458A98 + .incbin "baserom.gba", 0x458A98, 0x20 + +gUnknown_8458AB8:: @ 8458AB8 + .incbin "baserom.gba", 0x458AB8, 0x8C + +gUnknown_8458B44:: @ 8458B44 + .incbin "baserom.gba", 0x458B44, 0x190 + +gUnknown_8458CD4:: @ 8458CD4 + .incbin "baserom.gba", 0x458CD4, 0x48 + +gUnknown_8458D1C:: @ 8458D1C + .incbin "baserom.gba", 0x458D1C, 0x38 + +gUnknown_8458D54:: @ 8458D54 + .incbin "baserom.gba", 0x458D54, 0x24 + +gUnknown_8458D78:: @ 8458D78 + .incbin "baserom.gba", 0x458D78, 0x24 + +gUnknown_8458D9C:: @ 8458D9C + .incbin "baserom.gba", 0x458D9C, 0x20 + +gUnknown_8458DBC:: @ 8458DBC + .incbin "baserom.gba", 0x458DBC, 0x2C + +gUnknown_8458DE8:: @ 8458DE8 + .incbin "baserom.gba", 0x458DE8, 0x28 + +gUnknown_8458E10:: @ 8458E10 + .incbin "baserom.gba", 0x458E10, 0x60 + +gUnknown_8458E70:: @ 8458E70 + .incbin "baserom.gba", 0x458E70, 0x60 + +gUnknown_8458ED0:: @ 8458ED0 + .incbin "baserom.gba", 0x458ED0, 0x34 + +gUnknown_8458F04:: @ 8458F04 + .incbin "baserom.gba", 0x458F04, 0x98 + +gUnknown_8458F9C:: @ 8458F9C + .incbin "baserom.gba", 0x458F9C, 0x20 + +gUnknown_8458FBC:: @ 8458FBC + .incbin "baserom.gba", 0x458FBC, 0xC + +gUnknown_8458FC8:: @ 8458FC8 + .incbin "baserom.gba", 0x458FC8, 0x1C + +gUnknown_8458FE4:: @ 8458FE4 + .incbin "baserom.gba", 0x458FE4, 0x1D4 + +gUnknown_84591B8:: @ 84591B8 + .incbin "baserom.gba", 0x4591B8, 0x24 + +gUnknown_84591DC:: @ 84591DC + .incbin "baserom.gba", 0x4591DC, 0x5C + +gUnknown_8459238:: @ 8459238 + .incbin "baserom.gba", 0x459238, 0x18 + +gUnknown_8459250:: @ 8459250 + .incbin "baserom.gba", 0x459250, 0x3C + +gUnknown_845928C:: @ 845928C + .incbin "baserom.gba", 0x45928C, 0xB0 + +gUnknown_845933C:: @ 845933C + .incbin "baserom.gba", 0x45933C, 0x3C + +gUnknown_8459378:: @ 8459378 + .incbin "baserom.gba", 0x459378, 0x138 + +gUnknown_84594B0:: @ 84594B0 + .incbin "baserom.gba", 0x4594B0, 0x14 + +gUnknown_84594C4:: @ 84594C4 + .incbin "baserom.gba", 0x4594C4, 0x40 + +gUnknown_8459504:: @ 8459504 + .incbin "baserom.gba", 0x459504, 0x7C + +gUnknown_8459580:: @ 8459580 + .incbin "baserom.gba", 0x459580, 0x8 + +gUnknown_8459588:: @ 8459588 + .incbin "baserom.gba", 0x459588, 0xAC + +gUnknown_8459634:: @ 8459634 + .incbin "baserom.gba", 0x459634, 0x8 + +gUnknown_845963C:: @ 845963C + .incbin "baserom.gba", 0x45963C, 0x20 + +gUnknown_845965C:: @ 845965C + .incbin "baserom.gba", 0x45965C, 0x20 + +gUnknown_845967C:: @ 845967C + .incbin "baserom.gba", 0x45967C, 0xC0 + +gUnknown_845973C:: @ 845973C + .incbin "baserom.gba", 0x45973C, 0x12C + +gUnknown_8459868:: @ 8459868 + .incbin "baserom.gba", 0x459868, 0x20 + +gUnknown_8459888:: @ 8459888 + .incbin "baserom.gba", 0x459888, 0xF8 + +gUnknown_8459980:: @ 8459980 + .incbin "baserom.gba", 0x459980, 0x8 + +gUnknown_8459988:: @ 8459988 + .incbin "baserom.gba", 0x459988, 0x10 + +gUnknown_8459998:: @ 8459998 + .incbin "baserom.gba", 0x459998, 0x12 + +gUnknown_84599AA:: @ 84599AA + .incbin "baserom.gba", 0x4599AA, 0x8 + +gUnknown_84599B2:: @ 84599B2 + .incbin "baserom.gba", 0x4599B2, 0x6 + +gUnknown_84599B8:: @ 84599B8 + .incbin "baserom.gba", 0x4599B8, 0x8 + +gUnknown_84599C0:: @ 84599C0 + .incbin "baserom.gba", 0x4599C0, 0x8 + +gUnknown_84599C8:: @ 84599C8 + .incbin "baserom.gba", 0x4599C8, 0x8 + +gUnknown_84599D0:: @ 84599D0 + .incbin "baserom.gba", 0x4599D0, 0x50 + +gUnknown_8459A20:: @ 8459A20 + .incbin "baserom.gba", 0x459A20, 0x10 + +gUnknown_8459A30:: @ 8459A30 + .incbin "baserom.gba", 0x459A30, 0x78 + +gUnknown_8459AA8:: @ 8459AA8 + .incbin "baserom.gba", 0x459AA8, 0x24 + +gUnknown_8459ACC:: @ 8459ACC + .incbin "baserom.gba", 0x459ACC, 0x20 + +gUnknown_8459AEC:: @ 8459AEC + .incbin "baserom.gba", 0x459AEC, 0x44 + +gUnknown_8459B30:: @ 8459B30 + .incbin "baserom.gba", 0x459B30, 0x18 + +gUnknown_8459B48:: @ 8459B48 + .incbin "baserom.gba", 0x459B48, 0x18 + +gUnknown_8459B60:: @ 8459B60 + .incbin "baserom.gba", 0x459B60, 0x1E + +gUnknown_8459B7E:: @ 8459B7E + .incbin "baserom.gba", 0x459B7E, 0x33A + +gUnknown_8459EB8:: @ 8459EB8 + .incbin "baserom.gba", 0x459EB8, 0xC + +gUnknown_8459EC4:: @ 8459EC4 + .incbin "baserom.gba", 0x459EC4, 0x20 + +gUnknown_8459EE4:: @ 8459EE4 + .incbin "baserom.gba", 0x459EE4, 0x20 + +gUnknown_8459F04:: @ 8459F04 + .incbin "baserom.gba", 0x459F04, 0xC0 + +gUnknown_8459FC4:: @ 8459FC4 + .incbin "baserom.gba", 0x459FC4, 0x1C + +gUnknown_8459FE0:: @ 8459FE0 + .incbin "baserom.gba", 0x459FE0, 0x1C + +gUnknown_8459FFC:: @ 8459FFC + .incbin "baserom.gba", 0x459FFC, 0xF + +gUnknown_845A00B:: @ 845A00B + .incbin "baserom.gba", 0x45A00B, 0x5 + +gUnknown_845A010:: @ 845A010 + .incbin "baserom.gba", 0x45A010, 0x40 + +gUnknown_845A050:: @ 845A050 + .incbin "baserom.gba", 0x45A050, 0x40 + +gUnknown_845A090:: @ 845A090 + .incbin "baserom.gba", 0x45A090, 0x40 + +gUnknown_845A0D0:: @ 845A0D0 + .incbin "baserom.gba", 0x45A0D0, 0x38 + +gUnknown_845A108:: @ 845A108 + .incbin "baserom.gba", 0x45A108, 0x8 + +gUnknown_845A110:: @ 845A110 + .incbin "baserom.gba", 0x45A110, 0x8 + +gUnknown_845A118:: @ 845A118 + .incbin "baserom.gba", 0x45A118, 0x8 + +gUnknown_845A120:: @ 845A120 + .incbin "baserom.gba", 0x45A120, 0x8 + +gUnknown_845A128:: @ 845A128 + .incbin "baserom.gba", 0x45A128, 0x8 + +gUnknown_845A130:: @ 845A130 + .incbin "baserom.gba", 0x45A130, 0x8 + +gUnknown_845A138:: @ 845A138 + .incbin "baserom.gba", 0x45A138, 0x8 + +gUnknown_845A140:: @ 845A140 + .incbin "baserom.gba", 0x45A140, 0x8 + +gUnknown_845A148:: @ 845A148 + .incbin "baserom.gba", 0x45A148, 0x8 + +gUnknown_845A150:: @ 845A150 + .incbin "baserom.gba", 0x45A150, 0x8 + +gUnknown_845A158:: @ 845A158 + .incbin "baserom.gba", 0x45A158, 0x8 + +gUnknown_845A160:: @ 845A160 + .incbin "baserom.gba", 0x45A160, 0x8 + +gUnknown_845A168:: @ 845A168 + .incbin "baserom.gba", 0x45A168, 0x8 + +gUnknown_845A170:: @ 845A170 + .incbin "baserom.gba", 0x45A170, 0x8 + +gUnknown_845A178:: @ 845A178 + .incbin "baserom.gba", 0x45A178, 0x8 + +gUnknown_845A180:: @ 845A180 + .incbin "baserom.gba", 0x45A180, 0x46 + +gUnknown_845A1C6:: @ 845A1C6 + .incbin "baserom.gba", 0x45A1C6, 0x46 + +gUnknown_845A20C:: @ 845A20C + .incbin "baserom.gba", 0x45A20C, 0x36 + +gUnknown_845A242:: @ 845A242 + .incbin "baserom.gba", 0x45A242, 0x36 + +gUnknown_845A278:: @ 845A278 + .incbin "baserom.gba", 0x45A278, 0x36 + +gUnknown_845A2AE:: @ 845A2AE + .incbin "baserom.gba", 0x45A2AE, 0x2 + +gUnknown_845A2B0:: @ 845A2B0 + .incbin "baserom.gba", 0x45A2B0, 0x2 + +gUnknown_845A2B2:: @ 845A2B2 + .incbin "baserom.gba", 0x45A2B2, 0x3 + +gUnknown_845A2B5:: @ 845A2B5 + .incbin "baserom.gba", 0x45A2B5, 0x3 + +gUnknown_845A2B8:: @ 845A2B8 + .incbin "baserom.gba", 0x45A2B8, 0x2 + +gUnknown_845A2BA:: @ 845A2BA + .incbin "baserom.gba", 0x45A2BA, 0x2 + +gUnknown_845A2BC:: @ 845A2BC + .incbin "baserom.gba", 0x45A2BC, 0x2 + +gUnknown_845A2BE:: @ 845A2BE + .incbin "baserom.gba", 0x45A2BE, 0x2 + +gUnknown_845A2C0:: @ 845A2C0 + .incbin "baserom.gba", 0x45A2C0, 0x2 + +gUnknown_845A2C2:: @ 845A2C2 + .incbin "baserom.gba", 0x45A2C2, 0x3 + +gUnknown_845A2C5:: @ 845A2C5 + .incbin "baserom.gba", 0x45A2C5, 0x3 + +gUnknown_845A2C8:: @ 845A2C8 + .incbin "baserom.gba", 0x45A2C8, 0x3 + +gUnknown_845A2CB:: @ 845A2CB + .incbin "baserom.gba", 0x45A2CB, 0x3 + +gUnknown_845A2CE:: @ 845A2CE + .incbin "baserom.gba", 0x45A2CE, 0x3 + +gUnknown_845A2D1:: @ 845A2D1 + .incbin "baserom.gba", 0x45A2D1, 0x3 + +gUnknown_845A2D4:: @ 845A2D4 + .incbin "baserom.gba", 0x45A2D4, 0x3 + +gUnknown_845A2D7:: @ 845A2D7 + .incbin "baserom.gba", 0x45A2D7, 0x3 + +gUnknown_845A2DA:: @ 845A2DA + .incbin "baserom.gba", 0x45A2DA, 0x3 + +gUnknown_845A2DD:: @ 845A2DD + .incbin "baserom.gba", 0x45A2DD, 0x3 + +gUnknown_845A2E0:: @ 845A2E0 + .incbin "baserom.gba", 0x45A2E0, 0x3 + +gUnknown_845A2E3:: @ 845A2E3 + .incbin "baserom.gba", 0x45A2E3, 0x5 + +gUnknown_845A2E8:: @ 845A2E8 + .incbin "baserom.gba", 0x45A2E8, 0x6C + +gUnknown_845A354:: @ 845A354 + .incbin "baserom.gba", 0x45A354, 0x28 + +gUnknown_845A37C:: @ 845A37C + .incbin "baserom.gba", 0x45A37C, 0xB0 + +gUnknown_845A42C:: @ 845A42C + .incbin "baserom.gba", 0x45A42C, 0x8 + +gUnknown_845A434:: @ 845A434 + .incbin "baserom.gba", 0x45A434, 0x8 + +gUnknown_845A43C:: @ 845A43C + .incbin "baserom.gba", 0x45A43C, 0x38 + +gUnknown_845A474:: @ 845A474 + .incbin "baserom.gba", 0x45A474, 0x8 + +gUnknown_845A47C:: @ 845A47C + .incbin "baserom.gba", 0x45A47C, 0x8 + +gUnknown_845A484:: @ 845A484 + .incbin "baserom.gba", 0x45A484, 0x68 + +gUnknown_845A4EC:: @ 845A4EC + .incbin "baserom.gba", 0x45A4EC, 0x8 + +gUnknown_845A4F4:: @ 845A4F4 + .incbin "baserom.gba", 0x45A4F4, 0x80 + +gUnknown_845A574:: @ 845A574 + .incbin "baserom.gba", 0x45A574, 0x8 + +gUnknown_845A57C:: @ 845A57C + .incbin "baserom.gba", 0x45A57C, 0x8 + +gUnknown_845A584:: @ 845A584 + .incbin "baserom.gba", 0x45A584, 0x18 + +gUnknown_845A59C:: @ 845A59C + .incbin "baserom.gba", 0x45A59C, 0x7C + +gUnknown_845A618:: @ 845A618 + .incbin "baserom.gba", 0x45A618, 0x114 + +gUnknown_845A72C:: @ 845A72C + .incbin "baserom.gba", 0x45A72C, 0x34 + +gUnknown_845A760:: @ 845A760 + .incbin "baserom.gba", 0x45A760, 0xE + +gUnknown_845A76E:: @ 845A76E + .incbin "baserom.gba", 0x45A76E, 0x1A + +gUnknown_845A788:: @ 845A788 + .incbin "baserom.gba", 0x45A788, 0x60 + +gUnknown_845A7E8:: @ 845A7E8 + .incbin "baserom.gba", 0x45A7E8, 0x24 + +gUnknown_845A80C:: @ 845A80C + .incbin "baserom.gba", 0x45A80C, 0x74 + +gUnknown_845A880:: @ 845A880 + .incbin "baserom.gba", 0x45A880, 0x28 + +gUnknown_845A8A8:: @ 845A8A8 + .incbin "baserom.gba", 0x45A8A8, 0x4 + +gUnknown_845A8AC:: @ 845A8AC + .incbin "baserom.gba", 0x45A8AC, 0x100 + +gUnknown_845A9AC:: @ 845A9AC + .incbin "baserom.gba", 0x45A9AC, 0x78 + +gUnknown_845AA24:: @ 845AA24 + .incbin "baserom.gba", 0x45AA24, 0x20 + +gUnknown_845AA44:: @ 845AA44 + .incbin "baserom.gba", 0x45AA44, 0x20 + +gUnknown_845AA64:: @ 845AA64 + .incbin "baserom.gba", 0x45AA64, 0x20 + +gUnknown_845AA84:: @ 845AA84 + .incbin "baserom.gba", 0x45AA84, 0x10 + +gUnknown_845AA94:: @ 845AA94 + .incbin "baserom.gba", 0x45AA94, 0x28 + +gUnknown_845AABC:: @ 845AABC + .incbin "baserom.gba", 0x45AABC, 0xA8 + +gUnknown_845AB64:: @ 845AB64 + .incbin "baserom.gba", 0x45AB64, 0x84 + +gUnknown_845ABE8:: @ 845ABE8 + .incbin "baserom.gba", 0x45ABE8, 0x4 + +gUnknown_845ABEC:: @ 845ABEC + .incbin "baserom.gba", 0x45ABEC, 0x2A + +gUnknown_845AC16:: @ 845AC16 + .incbin "baserom.gba", 0x45AC16, 0x342 + +gUnknown_845AF58:: @ 845AF58 + .incbin "baserom.gba", 0x45AF58, 0x28 + +gUnknown_845AF80:: @ 845AF80 + .incbin "baserom.gba", 0x45AF80, 0x40 + +gUnknown_845AFC0:: @ 845AFC0 + .incbin "baserom.gba", 0x45AFC0, 0x20 + +gUnknown_845AFE0:: @ 845AFE0 + .incbin "baserom.gba", 0x45AFE0, 0x18 + +gUnknown_845AFF8:: @ 845AFF8 + .incbin "baserom.gba", 0x45AFF8, 0x58 + +gUnknown_845B050:: @ 845B050 + .incbin "baserom.gba", 0x45B050, 0x18 + +gUnknown_845B068:: @ 845B068 + .incbin "baserom.gba", 0x45B068, 0x18 + +gUnknown_845B080:: @ 845B080 + .incbin "baserom.gba", 0x45B080, 0x18 + +gUnknown_845B098:: @ 845B098 + .incbin "baserom.gba", 0x45B098, 0x18 + +gUnknown_845B0B0:: @ 845B0B0 + .incbin "baserom.gba", 0x45B0B0, 0xB4 + +gUnknown_845B164:: @ 845B164 + .incbin "baserom.gba", 0x45B164, 0xB4 + +gUnknown_845B218:: @ 845B218 + .incbin "baserom.gba", 0x45B218, 0xC4 + +gUnknown_845B2DC:: @ 845B2DC + .incbin "baserom.gba", 0x45B2DC, 0xC4 + +gUnknown_845B3A0:: @ 845B3A0 + .incbin "baserom.gba", 0x45B3A0, 0xB0 + +gUnknown_845B450:: @ 845B450 + .incbin "baserom.gba", 0x45B450, 0xB0 + +gUnknown_845B500:: @ 845B500 + .incbin "baserom.gba", 0x45B500, 0x20 + +gUnknown_845B520:: @ 845B520 + .incbin "baserom.gba", 0x45B520, 0x20 + +gUnknown_845B540:: @ 845B540 + .incbin "baserom.gba", 0x45B540, 0x90 + +gUnknown_845B5D0:: @ 845B5D0 + .incbin "baserom.gba", 0x45B5D0, 0x3EE + +gUnknown_845B9BE:: @ 845B9BE + .incbin "baserom.gba", 0x45B9BE, 0x22 + +gUnknown_845B9E0:: @ 845B9E0 + .incbin "baserom.gba", 0x45B9E0, 0xAD0 + +gUnknown_845C4B0:: @ 845C4B0 + .incbin "baserom.gba", 0x45C4B0, 0x6 + +gUnknown_845C4B6:: @ 845C4B6 + .incbin "baserom.gba", 0x45C4B6, 0xDE + +gUnknown_845C594:: @ 845C594 + .incbin "baserom.gba", 0x45C594, 0x28 + +gUnknown_845C5BC:: @ 845C5BC + .incbin "baserom.gba", 0x45C5BC, 0x12 + +gUnknown_845C5CE:: @ 845C5CE + .incbin "baserom.gba", 0x45C5CE, 0x32 + +gUnknown_845C600:: @ 845C600 + .incbin "baserom.gba", 0x45C600, 0x1720 + +gUnknown_845DD20:: @ 845DD20 + .incbin "baserom.gba", 0x45DD20, 0x820 + +gUnknown_845E540:: @ 845E540 + .incbin "baserom.gba", 0x45E540, 0x820 + +gUnknown_845ED60:: @ 845ED60 + .incbin "baserom.gba", 0x45ED60, 0x820 + +gUnknown_845F580:: @ 845F580 + .incbin "baserom.gba", 0x45F580, 0x40 + +gUnknown_845F5C0:: @ 845F5C0 + .incbin "baserom.gba", 0x45F5C0, 0x20 + +gUnknown_845F5E0:: @ 845F5E0 + .incbin "baserom.gba", 0x45F5E0, 0x3 + +gUnknown_845F5E3:: @ 845F5E3 + .incbin "baserom.gba", 0x45F5E3, 0x3 + +gUnknown_845F5E6:: @ 845F5E6 + .incbin "baserom.gba", 0x45F5E6, 0x4 + +gUnknown_845F5EA:: @ 845F5EA + .incbin "baserom.gba", 0x45F5EA, 0x22 + +gUnknown_845F60C:: @ 845F60C + .incbin "baserom.gba", 0x45F60C, 0x10 + +gUnknown_845F61C:: @ 845F61C + .incbin "baserom.gba", 0x45F61C, 0x20 + +gUnknown_845F63C:: @ 845F63C + .incbin "baserom.gba", 0x45F63C, 0x80 + +gUnknown_845F6BC:: @ 845F6BC + .incbin "baserom.gba", 0x45F6BC, 0x180 + +gUnknown_845F83C:: @ 845F83C + .incbin "baserom.gba", 0x45F83C, 0x60 + +gUnknown_845F89C:: @ 845F89C + .incbin "baserom.gba", 0x45F89C, 0x180 + +gUnknown_845FA1C:: @ 845FA1C + .incbin "baserom.gba", 0x45FA1C, 0x180 + +gUnknown_845FB9C:: @ 845FB9C + .incbin "baserom.gba", 0x45FB9C, 0x40 + +gUnknown_845FBDC:: @ 845FBDC + .incbin "baserom.gba", 0x45FBDC, 0x18 + +gUnknown_845FBF4:: @ 845FBF4 + .incbin "baserom.gba", 0x45FBF4, 0x10 + +gUnknown_845FC04:: @ 845FC04 + .incbin "baserom.gba", 0x45FC04, 0x40 + +gUnknown_845FC44:: @ 845FC44 + .incbin "baserom.gba", 0x45FC44, 0x34 + +gUnknown_845FC78:: @ 845FC78 + .incbin "baserom.gba", 0x45FC78, 0x40 + +gUnknown_845FCB8:: @ 845FCB8 + .incbin "baserom.gba", 0x45FCB8, 0x2C + +gUnknown_845FCE4:: @ 845FCE4 + .incbin "baserom.gba", 0x45FCE4, 0x18 + +gUnknown_845FCFC:: @ 845FCFC + .incbin "baserom.gba", 0x45FCFC, 0x18 + +gUnknown_845FD14:: @ 845FD14 + .incbin "baserom.gba", 0x45FD14, 0x18 + +gUnknown_845FD2C:: @ 845FD2C + .incbin "baserom.gba", 0x45FD2C, 0x18 + +gUnknown_845FD44:: @ 845FD44 + .incbin "baserom.gba", 0x45FD44, 0x10 + +gUnknown_845FD54:: @ 845FD54 + .incbin "baserom.gba", 0x45FD54, 0x814 + +gUnknown_8460568:: @ 8460568 + .incbin "baserom.gba", 0x460568, 0x80 + +gUnknown_84605E8:: @ 84605E8 + .incbin "baserom.gba", 0x4605E8, 0x5C0 + +gUnknown_8460BA8:: @ 8460BA8 + .incbin "baserom.gba", 0x460BA8, 0xFC + +gUnknown_8460CA4:: @ 8460CA4 + .incbin "baserom.gba", 0x460CA4, 0x44 + +gUnknown_8460CE8:: @ 8460CE8 + .incbin "baserom.gba", 0x460CE8, 0xAC + +gUnknown_8460D94:: @ 8460D94 + .incbin "baserom.gba", 0x460D94, 0xA0 + +gUnknown_8460E34:: @ 8460E34 + .incbin "baserom.gba", 0x460E34, 0xA0 + +gUnknown_8460ED4:: @ 8460ED4 + .incbin "baserom.gba", 0x460ED4, 0x40 + +gUnknown_8460F14:: @ 8460F14 + .incbin "baserom.gba", 0x460F14, 0x6E8 + +gUnknown_84615FC:: @ 84615FC + .incbin "baserom.gba", 0x4615FC, 0x40 + +gUnknown_846163C:: @ 846163C + .incbin "baserom.gba", 0x46163C, 0x698 + +gUnknown_8461CD4:: @ 8461CD4 + .incbin "baserom.gba", 0x461CD4, 0x40 + +gUnknown_8461D14:: @ 8461D14 + .incbin "baserom.gba", 0x461D14, 0x698 + +gUnknown_84623AC:: @ 84623AC + .incbin "baserom.gba", 0x4623AC, 0x40 + +gUnknown_84623EC:: @ 84623EC + .incbin "baserom.gba", 0x4623EC, 0xA6C + +gUnknown_8462E58:: @ 8462E58 + .incbin "baserom.gba", 0x462E58, 0x5C + +gUnknown_8462EB4:: @ 8462EB4 + .incbin "baserom.gba", 0x462EB4, 0xC + +gUnknown_8462EC0:: @ 8462EC0 + .incbin "baserom.gba", 0x462EC0, 0x8 + +gUnknown_8462EC8:: @ 8462EC8 + .incbin "baserom.gba", 0x462EC8, 0x8 + +gUnknown_8462ED0:: @ 8462ED0 + .incbin "baserom.gba", 0x462ED0, 0x8 + +gUnknown_8462ED8:: @ 8462ED8 + .incbin "baserom.gba", 0x462ED8, 0x10 + +gUnknown_8462EE8:: @ 8462EE8 + .incbin "baserom.gba", 0x462EE8, 0x4 + +gUnknown_8462EEC:: @ 8462EEC + .incbin "baserom.gba", 0x462EEC, 0x4 + +gUnknown_8462EF0:: @ 8462EF0 + .incbin "baserom.gba", 0x462EF0, 0xC + +gUnknown_8462EFC:: @ 8462EFC + .incbin "baserom.gba", 0x462EFC, 0x18 + +gUnknown_8462F14:: @ 8462F14 + .incbin "baserom.gba", 0x462F14, 0x8 + +gUnknown_8462F1C:: @ 8462F1C + .incbin "baserom.gba", 0x462F1C, 0x8 + +gUnknown_8462F24:: @ 8462F24 + .incbin "baserom.gba", 0x462F24, 0x2C + +gUnknown_8462F50:: @ 8462F50 + .incbin "baserom.gba", 0x462F50, 0xDC + +gUnknown_846302C:: @ 846302C + .incbin "baserom.gba", 0x46302C, 0x48 + +gUnknown_8463074:: @ 8463074 + .incbin "baserom.gba", 0x463074, 0x18 + +gUnknown_846308C:: @ 846308C + .incbin "baserom.gba", 0x46308C, 0x4C + +gUnknown_84630D8:: @ 84630D8 + .incbin "baserom.gba", 0x4630D8, 0x4C + +gUnknown_8463124:: @ 8463124 + .incbin "baserom.gba", 0x463124, 0x10 + +gUnknown_8463134:: @ 8463134 + .incbin "baserom.gba", 0x463134, 0xC + +gUnknown_8463140:: @ 8463140 + .incbin "baserom.gba", 0x463140, 0x10 + +gUnknown_8463150:: @ 8463150 + .incbin "baserom.gba", 0x463150, 0x18 + +gUnknown_8463168:: @ 8463168 + .incbin "baserom.gba", 0x463168, 0x3 + +gUnknown_846316B:: @ 846316B + .incbin "baserom.gba", 0x46316B, 0x5 + +gUnknown_8463170:: @ 8463170 + .incbin "baserom.gba", 0x463170, 0x8 + +gUnknown_8463178:: @ 8463178 + .incbin "baserom.gba", 0x463178, 0x4 + +gUnknown_846317C:: @ 846317C + .incbin "baserom.gba", 0x46317C, 0x4 + +gUnknown_8463180:: @ 8463180 + .incbin "baserom.gba", 0x463180, 0x4 + +gUnknown_8463184:: @ 8463184 + .incbin "baserom.gba", 0x463184, 0xC + +gUnknown_8463190:: @ 8463190 + .incbin "baserom.gba", 0x463190, 0x50 + +gUnknown_84631E0:: @ 84631E0 + .incbin "baserom.gba", 0x4631E0, 0x8 + +gUnknown_84631E8:: @ 84631E8 + .incbin "baserom.gba", 0x4631E8, 0x30 + +gUnknown_8463218:: @ 8463218 + .incbin "baserom.gba", 0x463218, 0x8 + +gUnknown_8463220:: @ 8463220 + .incbin "baserom.gba", 0x463220, 0x18 + +gUnknown_8463238:: @ 8463238 + .incbin "baserom.gba", 0x463238, 0x24 + +gUnknown_846325C:: @ 846325C + .incbin "baserom.gba", 0x46325C, 0x48 + +gUnknown_84632A4:: @ 84632A4 + .incbin "baserom.gba", 0x4632A4, 0x18 + +gUnknown_84632BC:: @ 84632BC + .incbin "baserom.gba", 0x4632BC, 0x4 + +gUnknown_84632C0:: @ 84632C0 + .incbin "baserom.gba", 0x4632C0, 0x4 + +gUnknown_84632C4:: @ 84632C4 + .incbin "baserom.gba", 0x4632C4, 0x4 + +gUnknown_84632C8:: @ 84632C8 + .incbin "baserom.gba", 0x4632C8, 0x4 + +gUnknown_84632CC:: @ 84632CC + .incbin "baserom.gba", 0x4632CC, 0x4 + +gUnknown_84632D0:: @ 84632D0 + .incbin "baserom.gba", 0x4632D0, 0x4 + +gUnknown_84632D4:: @ 84632D4 + .incbin "baserom.gba", 0x4632D4, 0x4 + +gUnknown_84632D8:: @ 84632D8 + .incbin "baserom.gba", 0x4632D8, 0x18 + +gUnknown_84632F0:: @ 84632F0 + .incbin "baserom.gba", 0x4632F0, 0x18 + +gUnknown_8463308:: @ 8463308 + .incbin "baserom.gba", 0x463308, 0x20 + +gUnknown_8463328:: @ 8463328 + .incbin "baserom.gba", 0x463328, 0x70 + +gUnknown_8463398:: @ 8463398 + .incbin "baserom.gba", 0x463398, 0x40 + +gUnknown_84633D8:: @ 84633D8 + .incbin "baserom.gba", 0x4633D8, 0x44 + +gUnknown_846341C:: @ 846341C + .incbin "baserom.gba", 0x46341C, 0x20 + +gUnknown_846343C:: @ 846343C + .incbin "baserom.gba", 0x46343C, 0x128 + +gUnknown_8463564:: @ 8463564 + .incbin "baserom.gba", 0x463564, 0x1C + +gUnknown_8463580:: @ 8463580 + .incbin "baserom.gba", 0x463580, 0x140 + +gUnknown_84636C0:: @ 84636C0 + .incbin "baserom.gba", 0x4636C0, 0x20 + +gUnknown_84636E0:: @ 84636E0 + .incbin "baserom.gba", 0x4636E0, 0x20 + +gUnknown_8463700:: @ 8463700 + .incbin "baserom.gba", 0x463700, 0x20 + +gUnknown_8463720:: @ 8463720 + .incbin "baserom.gba", 0x463720, 0x20 + +gUnknown_8463740:: @ 8463740 + .incbin "baserom.gba", 0x463740, 0x12C + +gUnknown_846386C:: @ 846386C + .incbin "baserom.gba", 0x46386C, 0x120 + +gUnknown_846398C:: @ 846398C + .incbin "baserom.gba", 0x46398C, 0x18 + +gUnknown_84639A4:: @ 84639A4 + .incbin "baserom.gba", 0x4639A4, 0x8 + +gUnknown_84639AC:: @ 84639AC + .incbin "baserom.gba", 0x4639AC, 0x48 + +gUnknown_84639F4:: @ 84639F4 + .incbin "baserom.gba", 0x4639F4, 0x20 + +gUnknown_8463A14:: @ 8463A14 + .incbin "baserom.gba", 0x463A14, 0x68 + +gUnknown_8463A7C:: @ 8463A7C + .incbin "baserom.gba", 0x463A7C, 0x70 + +gUnknown_8463AEC:: @ 8463AEC + .incbin "baserom.gba", 0x463AEC, 0x10 + +gUnknown_8463AFC:: @ 8463AFC + .incbin "baserom.gba", 0x463AFC, 0x4 + +gUnknown_8463B00:: @ 8463B00 + .incbin "baserom.gba", 0x463B00, 0x20 + +gUnknown_8463B20:: @ 8463B20 + .incbin "baserom.gba", 0x463B20, 0x10 + +gUnknown_8463B30:: @ 8463B30 + .incbin "baserom.gba", 0x463B30, 0x10 + +gUnknown_8463B40:: @ 8463B40 + .incbin "baserom.gba", 0x463B40, 0x4 + +gUnknown_8463B44:: @ 8463B44 + .incbin "baserom.gba", 0x463B44, 0x20 + +gUnknown_8463B64:: @ 8463B64 + .incbin "baserom.gba", 0x463B64, 0x24 + +gUnknown_8463B88:: @ 8463B88 + .incbin "baserom.gba", 0x463B88, 0xF8 + +gUnknown_8463C80:: @ 8463C80 + .incbin "baserom.gba", 0x463C80, 0x1E0 + +gUnknown_8463E60:: @ 8463E60 + .incbin "baserom.gba", 0x463E60, 0x64 + +gUnknown_8463EC4:: @ 8463EC4 + .incbin "baserom.gba", 0x463EC4, 0x10 + +gUnknown_8463ED4:: @ 8463ED4 + .incbin "baserom.gba", 0x463ED4, 0x1C + +gUnknown_8463EF0:: @ 8463EF0 + .incbin "baserom.gba", 0x463EF0, 0xC + +gUnknown_8463EFC:: @ 8463EFC + .incbin "baserom.gba", 0x463EFC, 0x10 + +gUnknown_8463F0C:: @ 8463F0C + .incbin "baserom.gba", 0x463F0C, 0x18 + +gUnknown_8463F24:: @ 8463F24 + .incbin "baserom.gba", 0x463F24, 0x18 + +gUnknown_8463F3C:: @ 8463F3C + .incbin "baserom.gba", 0x463F3C, 0x20 + +gUnknown_8463F5C:: @ 8463F5C + .incbin "baserom.gba", 0x463F5C, 0x20 + +gUnknown_8463F7C:: @ 8463F7C + .incbin "baserom.gba", 0x463F7C, 0x20 + +gUnknown_8463F9C:: @ 8463F9C + .incbin "baserom.gba", 0x463F9C, 0x8 + +gUnknown_8463FA4:: @ 8463FA4 + .incbin "baserom.gba", 0x463FA4, 0x3 + +gUnknown_8463FA7:: @ 8463FA7 + .incbin "baserom.gba", 0x463FA7, 0x11 + +gUnknown_8463FB8:: @ 8463FB8 + .incbin "baserom.gba", 0x463FB8, 0x6 + +gUnknown_8463FBE:: @ 8463FBE + .incbin "baserom.gba", 0x463FBE, 0x3 + +gUnknown_8463FC1:: @ 8463FC1 + .incbin "baserom.gba", 0x463FC1, 0x5 + +gUnknown_8463FC6:: @ 8463FC6 + .incbin "baserom.gba", 0x463FC6, 0x7 + +gUnknown_8463FCD:: @ 8463FCD + .incbin "baserom.gba", 0x463FCD, 0x7 + +gUnknown_8463FD4:: @ 8463FD4 + .incbin "baserom.gba", 0x463FD4, 0xB + +gUnknown_8463FDF:: @ 8463FDF + .incbin "baserom.gba", 0x463FDF, 0xB + +gUnknown_8463FEA:: @ 8463FEA + .incbin "baserom.gba", 0x463FEA, 0x12 + +gUnknown_8463FFC:: @ 8463FFC + .incbin "baserom.gba", 0x463FFC, 0xC + +gUnknown_8464008:: @ 8464008 + .incbin "baserom.gba", 0x464008, 0x120 + +gUnknown_8464128:: @ 8464128 + .incbin "baserom.gba", 0x464128, 0x20 + +gUnknown_8464148:: @ 8464148 + .incbin "baserom.gba", 0x464148, 0x174 + +gUnknown_84642BC:: @ 84642BC + .incbin "baserom.gba", 0x4642BC, 0x4 + +gUnknown_84642C0:: @ 84642C0 + .incbin "baserom.gba", 0x4642C0, 0x34 + +gUnknown_84642F4:: @ 84642F4 + .incbin "baserom.gba", 0x4642F4, 0xC + +gUnknown_8464300:: @ 8464300 + .incbin "baserom.gba", 0x464300, 0x4C + +gUnknown_846434C:: @ 846434C + .incbin "baserom.gba", 0x46434C, 0xC + +gUnknown_8464358:: @ 8464358 + .incbin "baserom.gba", 0x464358, 0x14 + +gUnknown_846436C:: @ 846436C + .incbin "baserom.gba", 0x46436C, 0x8 + +gUnknown_8464374:: @ 8464374 + .incbin "baserom.gba", 0x464374, 0x8 + +gUnknown_846437C:: @ 846437C + .incbin "baserom.gba", 0x46437C, 0x28 + +gUnknown_84643A4:: @ 84643A4 + .incbin "baserom.gba", 0x4643A4, 0x4 + +gUnknown_84643A8:: @ 84643A8 + .incbin "baserom.gba", 0x4643A8, 0x4 + +gUnknown_84643AC:: @ 84643AC + .incbin "baserom.gba", 0x4643AC, 0x4 + +gUnknown_84643B0:: @ 84643B0 + .incbin "baserom.gba", 0x4643B0, 0x4 + +gUnknown_84643B4:: @ 84643B4 + .incbin "baserom.gba", 0x4643B4, 0x4 + +gUnknown_84643B8:: @ 84643B8 + .incbin "baserom.gba", 0x4643B8, 0x20 + +gUnknown_84643D8:: @ 84643D8 + .incbin "baserom.gba", 0x4643D8, 0x18 + +gUnknown_84643F0:: @ 84643F0 + .incbin "baserom.gba", 0x4643F0, 0x8 + +gUnknown_84643F8:: @ 84643F8 + .incbin "baserom.gba", 0x4643F8, 0x8 + +gUnknown_8464400:: @ 8464400 + .incbin "baserom.gba", 0x464400, 0x48 + +gUnknown_8464448:: @ 8464448 + .incbin "baserom.gba", 0x464448, 0x60 + +gUnknown_84644A8:: @ 84644A8 + .incbin "baserom.gba", 0x4644A8, 0x8 + +gUnknown_84644B0:: @ 84644B0 + .incbin "baserom.gba", 0x4644B0, 0x8 + +gUnknown_84644B8:: @ 84644B8 + .incbin "baserom.gba", 0x4644B8, 0x32C + +gUnknown_84647E4:: @ 84647E4 + .incbin "baserom.gba", 0x4647E4, 0x18 + +gUnknown_84647FC:: @ 84647FC + .incbin "baserom.gba", 0x4647FC, 0x8 + +gUnknown_8464804:: @ 8464804 + .incbin "baserom.gba", 0x464804, 0x38 + +gUnknown_846483C:: @ 846483C + .incbin "baserom.gba", 0x46483C, 0x40 + +gUnknown_846487C:: @ 846487C + .incbin "baserom.gba", 0x46487C, 0x8 + +gUnknown_8464884:: @ 8464884 + .incbin "baserom.gba", 0x464884, 0xC + +gUnknown_8464890:: @ 8464890 + .incbin "baserom.gba", 0x464890, 0x1E + +gUnknown_84648AE:: @ 84648AE + .incbin "baserom.gba", 0x4648AE, 0xF + +gUnknown_84648BD:: @ 84648BD + .incbin "baserom.gba", 0x4648BD, 0x15 + +gUnknown_84648D2:: @ 84648D2 + .incbin "baserom.gba", 0x4648D2, 0x54 + +gUnknown_8464926:: @ 8464926 + .incbin "baserom.gba", 0x464926, 0x40 + +gUnknown_8464966:: @ 8464966 + .incbin "baserom.gba", 0x464966, 0xC4A + +gUnknown_84655B0:: @ 84655B0 + .incbin "baserom.gba", 0x4655B0, 0x18 + +gUnknown_84655C8:: @ 84655C8 + .incbin "baserom.gba", 0x4655C8, 0x40 + +gUnknown_8465608:: @ 8465608 + .incbin "baserom.gba", 0x465608, 0xE + +gUnknown_8465616:: @ 8465616 + .incbin "baserom.gba", 0x465616, 0xC0 + +gUnknown_84656D6:: @ 84656D6 + .incbin "baserom.gba", 0x4656D6, 0x10E + +gUnknown_84657E4:: @ 84657E4 + .incbin "baserom.gba", 0x4657E4, 0x98 + +gUnknown_846587C:: @ 846587C + .incbin "baserom.gba", 0x46587C, 0x5C + +gUnknown_84658D8:: @ 84658D8 + .incbin "baserom.gba", 0x4658D8, 0x18 + +gUnknown_84658F0:: @ 84658F0 + .incbin "baserom.gba", 0x4658F0, 0x40 + +gUnknown_8465930:: @ 8465930 + .incbin "baserom.gba", 0x465930, 0x20 + +gUnknown_8465950:: @ 8465950 + .incbin "baserom.gba", 0x465950, 0x80 + +gUnknown_84659D0:: @ 84659D0 + .incbin "baserom.gba", 0x4659D0, 0x804 + +gUnknown_84661D4:: @ 84661D4 + .incbin "baserom.gba", 0x4661D4, 0x2E8 + +gUnknown_84664BC:: @ 84664BC + .incbin "baserom.gba", 0x4664BC, 0x20 + +gUnknown_84664DC:: @ 84664DC + .incbin "baserom.gba", 0x4664DC, 0x60 + +gUnknown_846653C:: @ 846653C + .incbin "baserom.gba", 0x46653C, 0x84 + +gUnknown_84665C0:: @ 84665C0 + .incbin "baserom.gba", 0x4665C0, 0x60 + +gUnknown_8466620:: @ 8466620 + .incbin "baserom.gba", 0x466620, 0x378 + +gUnknown_8466998:: @ 8466998 + .incbin "baserom.gba", 0x466998, 0x178 + +gUnknown_8466B10:: @ 8466B10 + .incbin "baserom.gba", 0x466B10, 0x10 + +gUnknown_8466B20:: @ 8466B20 + .incbin "baserom.gba", 0x466B20, 0xEC + +gUnknown_8466C0C:: @ 8466C0C + .incbin "baserom.gba", 0x466C0C, 0x28 + +gUnknown_8466C34:: @ 8466C34 + .incbin "baserom.gba", 0x466C34, 0x4 + +gUnknown_8466C38:: @ 8466C38 + .incbin "baserom.gba", 0x466C38, 0x8 + +gUnknown_8466C40:: @ 8466C40 + .incbin "baserom.gba", 0x466C40, 0x18 + +gUnknown_8466C58:: @ 8466C58 + .incbin "baserom.gba", 0x466C58, 0xB8 + +gUnknown_8466D10:: @ 8466D10 + .incbin "baserom.gba", 0x466D10, 0x20 + +gUnknown_8466D30:: @ 8466D30 + .incbin "baserom.gba", 0x466D30, 0x30 + +gUnknown_8466D60:: @ 8466D60 + .incbin "baserom.gba", 0x466D60, 0x10 + +gUnknown_8466D70:: @ 8466D70 + .incbin "baserom.gba", 0x466D70, 0x20 + +gUnknown_8466D90:: @ 8466D90 + .incbin "baserom.gba", 0x466D90, 0x8 + +gUnknown_8466D98:: @ 8466D98 + .incbin "baserom.gba", 0x466D98, 0x8 + +gUnknown_8466DA0:: @ 8466DA0 + .incbin "baserom.gba", 0x466DA0, 0x8 + +gUnknown_8466DA8:: @ 8466DA8 + .incbin "baserom.gba", 0x466DA8, 0x8 + +gUnknown_8466DB0:: @ 8466DB0 + .incbin "baserom.gba", 0x466DB0, 0x8 + +gUnknown_8466DB8:: @ 8466DB8 + .incbin "baserom.gba", 0x466DB8, 0x8 + +gUnknown_8466DC0:: @ 8466DC0 + .incbin "baserom.gba", 0x466DC0, 0x8 + +gUnknown_8466DC8:: @ 8466DC8 + .incbin "baserom.gba", 0x466DC8, 0x8 + +gUnknown_8466DD0:: @ 8466DD0 + .incbin "baserom.gba", 0x466DD0, 0x18 + +gUnknown_8466DE8:: @ 8466DE8 + .incbin "baserom.gba", 0x466DE8, 0x18 + +gUnknown_8466E00:: @ 8466E00 + .incbin "baserom.gba", 0x466E00, 0x78 + +gUnknown_8466E78:: @ 8466E78 + .incbin "baserom.gba", 0x466E78, 0x18 + +gUnknown_8466E90:: @ 8466E90 + .incbin "baserom.gba", 0x466E90, 0x18 + +gUnknown_8466EA8:: @ 8466EA8 + .incbin "baserom.gba", 0x466EA8, 0x18 + +gUnknown_8466EC0:: @ 8466EC0 + .incbin "baserom.gba", 0x466EC0, 0x28 + +gUnknown_8466EE8:: @ 8466EE8 + .incbin "baserom.gba", 0x466EE8, 0x8 + +gUnknown_8466EF0:: @ 8466EF0 + .incbin "baserom.gba", 0x466EF0, 0x10 + +gUnknown_8466F00:: @ 8466F00 + .incbin "baserom.gba", 0x466F00, 0x28 + +gUnknown_8466F28:: @ 8466F28 + .incbin "baserom.gba", 0x466F28, 0x34 + +gUnknown_8466F5C:: @ 8466F5C + .incbin "baserom.gba", 0x466F5C, 0x4 + +gUnknown_8466F60:: @ 8466F60 + .incbin "baserom.gba", 0x466F60, 0x20 + +gUnknown_8466F80:: @ 8466F80 + .incbin "baserom.gba", 0x466F80, 0x38 + +gUnknown_8466FB8:: @ 8466FB8 + .incbin "baserom.gba", 0x466FB8, 0x1C + +gUnknown_8466FD4:: @ 8466FD4 + .incbin "baserom.gba", 0x466FD4, 0x18 + +gUnknown_8466FEC:: @ 8466FEC + .incbin "baserom.gba", 0x466FEC, 0x14 + +gUnknown_8467000:: @ 8467000 + .incbin "baserom.gba", 0x467000, 0x30 + +gUnknown_8467030:: @ 8467030 + .incbin "baserom.gba", 0x467030, 0x14 + +gUnknown_8467044:: @ 8467044 + .incbin "baserom.gba", 0x467044, 0x24 + +gUnknown_8467068:: @ 8467068 + .incbin "baserom.gba", 0x467068, 0x8 + +gUnknown_8467070:: @ 8467070 + .incbin "baserom.gba", 0x467070, 0x4 + +gUnknown_8467074:: @ 8467074 + .incbin "baserom.gba", 0x467074, 0xEE4 + +gUnknown_8467F58:: @ 8467F58 + .incbin "baserom.gba", 0x467F58, 0x8 + +gUnknown_8467F60:: @ 8467F60 + .incbin "baserom.gba", 0x467F60, 0x40 + +gUnknown_8467FA0:: @ 8467FA0 + .incbin "baserom.gba", 0x467FA0, 0x18 + +gUnknown_8467FB8:: @ 8467FB8 + .incbin "baserom.gba", 0x467FB8, 0x80 + +gUnknown_8468038:: @ 8468038 + .incbin "baserom.gba", 0x468038, 0x8 + +gUnknown_8468040:: @ 8468040 + .incbin "baserom.gba", 0x468040, 0x10 + +gUnknown_8468050:: @ 8468050 + .incbin "baserom.gba", 0x468050, 0x6D0 + +gUnknown_8468720:: @ 8468720 + .incbin "baserom.gba", 0x468720, 0xC0 + +gUnknown_84687E0:: @ 84687E0 + .incbin "baserom.gba", 0x4687E0, 0x38C + +gUnknown_8468B6C:: @ 8468B6C + .incbin "baserom.gba", 0x468B6C, 0x60 + +gUnknown_8468BCC:: @ 8468BCC + .incbin "baserom.gba", 0x468BCC, 0x90 + +gUnknown_8468C5C:: @ 8468C5C + .incbin "baserom.gba", 0x468C5C, 0x38 + +gUnknown_8468C94:: @ 8468C94 + .incbin "baserom.gba", 0x468C94, 0x4 + +gUnknown_8468C98:: @ 8468C98 + .incbin "baserom.gba", 0x468C98, 0x520 + +gUnknown_84691B8:: @ 84691B8 + .incbin "baserom.gba", 0x4691B8, 0x20 + +gUnknown_84691D8:: @ 84691D8 + .incbin "baserom.gba", 0x4691D8, 0x800 + +gUnknown_84699D8:: @ 84699D8 + .incbin "baserom.gba", 0x4699D8, 0x1520 + +gUnknown_846AEF8:: @ 846AEF8 + .incbin "baserom.gba", 0x46AEF8, 0x4 + +gUnknown_846AEFC:: @ 846AEFC + .incbin "baserom.gba", 0x46AEFC, 0x2C + +gUnknown_846AF28:: @ 846AF28 + .incbin "baserom.gba", 0x46AF28, 0x38 + +gUnknown_846AF60:: @ 846AF60 + .incbin "baserom.gba", 0x46AF60, 0x18 + +gUnknown_846AF78:: @ 846AF78 + .incbin "baserom.gba", 0x46AF78, 0x18 + +gUnknown_846AF90:: @ 846AF90 + .incbin "baserom.gba", 0x46AF90, 0x40 + +gUnknown_846AFD0:: @ 846AFD0 + .incbin "baserom.gba", 0x46AFD0, 0x45C + +gUnknown_846B42C:: @ 846B42C + .incbin "baserom.gba", 0x46B42C, 0x10 + +gUnknown_846B43C:: @ 846B43C + .incbin "baserom.gba", 0x46B43C, 0x58 + +gUnknown_846B494:: @ 846B494 + .incbin "baserom.gba", 0x46B494, 0x18 + +gUnknown_846B4AC:: @ 846B4AC + .incbin "baserom.gba", 0x46B4AC, 0x10 + +gUnknown_846B4BC:: @ 846B4BC + .incbin "baserom.gba", 0x46B4BC, 0x190 + +gUnknown_846B64C:: @ 846B64C + .incbin "baserom.gba", 0x46B64C, 0x24 + +gUnknown_846B670:: @ 846B670 + .incbin "baserom.gba", 0x46B670, 0x24 + +gUnknown_846B694:: @ 846B694 + .incbin "baserom.gba", 0x46B694, 0x10 + +gUnknown_846B6A4:: @ 846B6A4 + .incbin "baserom.gba", 0x46B6A4, 0x8 + +gUnknown_846B6AC:: @ 846B6AC + .incbin "baserom.gba", 0x46B6AC, 0x8 + +gUnknown_846B6B4:: @ 846B6B4 + .incbin "baserom.gba", 0x46B6B4, 0x90 + +gUnknown_846B744:: @ 846B744 + .incbin "baserom.gba", 0x46B744, 0x18 + +gUnknown_846B75C:: @ 846B75C + .incbin "baserom.gba", 0x46B75C, 0x10 + +gUnknown_846B76C:: @ 846B76C + .incbin "baserom.gba", 0x46B76C, 0x28 + +gUnknown_846B794:: @ 846B794 + .incbin "baserom.gba", 0x46B794, 0x20 + +gUnknown_846B7B4:: @ 846B7B4 + .incbin "baserom.gba", 0x46B7B4, 0x20 + +gUnknown_846B7D4:: @ 846B7D4 + .incbin "baserom.gba", 0x46B7D4, 0x22C + +gUnknown_846BA00:: @ 846BA00 + .incbin "baserom.gba", 0x46BA00, 0x1B0 + +gUnknown_846BBB0:: @ 846BBB0 + .incbin "baserom.gba", 0x46BBB0, 0x20 + +gUnknown_846BBD0:: @ 846BBD0 + .incbin "baserom.gba", 0x46BBD0, 0x950 + +gUnknown_846C520:: @ 846C520 + .incbin "baserom.gba", 0x46C520, 0x3B8 + +gUnknown_846C8D8:: @ 846C8D8 + .incbin "baserom.gba", 0x46C8D8, 0x20 + +gUnknown_846C8F8:: @ 846C8F8 + .incbin "baserom.gba", 0x46C8F8, 0xAB0 + +gUnknown_846D3A8:: @ 846D3A8 + .incbin "baserom.gba", 0x46D3A8, 0x52C + +gUnknown_846D8D4:: @ 846D8D4 + .incbin "baserom.gba", 0x46D8D4, 0x10 + +gUnknown_846D8E4:: @ 846D8E4 + .incbin "baserom.gba", 0x46D8E4, 0x18 + +gUnknown_846D8FC:: @ 846D8FC + .incbin "baserom.gba", 0x46D8FC, 0x50 + +gUnknown_846D94C:: @ 846D94C + .incbin "baserom.gba", 0x46D94C, 0x4 + +gUnknown_846D950:: @ 846D950 + .incbin "baserom.gba", 0x46D950, 0x3 + +gUnknown_846D953:: @ 846D953 + .incbin "baserom.gba", 0x46D953, 0xD + +gUnknown_846D960:: @ 846D960 + .incbin "baserom.gba", 0x46D960, 0x8 + +gUnknown_846D968:: @ 846D968 + .incbin "baserom.gba", 0x46D968, 0x40 + +gUnknown_846D9A8:: @ 846D9A8 + .incbin "baserom.gba", 0x46D9A8, 0x2C + +gUnknown_846D9D4:: @ 846D9D4 + .incbin "baserom.gba", 0x46D9D4, 0x6DC + +gUnknown_846E0B0:: @ 846E0B0 + .incbin "baserom.gba", 0x46E0B0, 0x28 + +gUnknown_846E0D8:: @ 846E0D8 + .incbin "baserom.gba", 0x46E0D8, 0x10 + +gUnknown_846E0E8:: @ 846E0E8 + .incbin "baserom.gba", 0x46E0E8, 0x18 + +gUnknown_846E100:: @ 846E100 + .incbin "baserom.gba", 0x46E100, 0x50 + +gUnknown_846E150:: @ 846E150 + .incbin "baserom.gba", 0x46E150, 0x10 + +gUnknown_846E160:: @ 846E160 + .incbin "baserom.gba", 0x46E160, 0x154 + +gUnknown_846E2B4:: @ 846E2B4 + .incbin "baserom.gba", 0x46E2B4, 0x18 + +gUnknown_846E2CC:: @ 846E2CC + .incbin "baserom.gba", 0x46E2CC, 0x8 + +gUnknown_846E2D4:: @ 846E2D4 + .incbin "baserom.gba", 0x46E2D4, 0xC + +gUnknown_846E2E0:: @ 846E2E0 + .incbin "baserom.gba", 0x46E2E0, 0x8 + +gUnknown_846E2E8:: @ 846E2E8 + .incbin "baserom.gba", 0x46E2E8, 0x8 + +gUnknown_846E2F0:: @ 846E2F0 + .incbin "baserom.gba", 0x46E2F0, 0x24 + +gUnknown_846E314:: @ 846E314 + .incbin "baserom.gba", 0x46E314, 0x14 + +gUnknown_846E328:: @ 846E328 + .incbin "baserom.gba", 0x46E328, 0x24 + +gUnknown_846E34C:: @ 846E34C + .incbin "baserom.gba", 0x46E34C, 0x68 + +gUnknown_846E3B4:: @ 846E3B4 + .incbin "baserom.gba", 0x46E3B4, 0x10 + +gUnknown_846E3C4:: @ 846E3C4 + .incbin "baserom.gba", 0x46E3C4, 0x4 + +gUnknown_846E3C8:: @ 846E3C8 + .incbin "baserom.gba", 0x46E3C8, 0x4 + +gUnknown_846E3CC:: @ 846E3CC + .incbin "baserom.gba", 0x46E3CC, 0x4 + +gUnknown_846E3D0:: @ 846E3D0 + .incbin "baserom.gba", 0x46E3D0, 0xC + +gUnknown_846E3DC:: @ 846E3DC + .incbin "baserom.gba", 0x46E3DC, 0x3 + +gUnknown_846E3DF:: @ 846E3DF + .incbin "baserom.gba", 0x46E3DF, 0x3 + +gUnknown_846E3E2:: @ 846E3E2 + .incbin "baserom.gba", 0x46E3E2, 0x3 + +gUnknown_846E3E5:: @ 846E3E5 + .incbin "baserom.gba", 0x46E3E5, 0x6 + +gUnknown_846E3EB:: @ 846E3EB + .incbin "baserom.gba", 0x46E3EB, 0x5 + +gUnknown_846E3F0:: @ 846E3F0 + .incbin "baserom.gba", 0x46E3F0, 0x8 + +gUnknown_846E3F8:: @ 846E3F8 + .incbin "baserom.gba", 0x46E3F8, 0x50 + +gUnknown_846E448:: @ 846E448 + .incbin "baserom.gba", 0x46E448, 0x8 + +gUnknown_846E450:: @ 846E450 + .incbin "baserom.gba", 0x46E450, 0x940 + +gUnknown_846ED90:: @ 846ED90 + .incbin "baserom.gba", 0x46ED90, 0x130 + +gUnknown_846EEC0:: @ 846EEC0 + .incbin "baserom.gba", 0x46EEC0, 0x198 + +gUnknown_846F058:: @ 846F058 + .incbin "baserom.gba", 0x46F058, 0x228 + +gUnknown_846F280:: @ 846F280 + .incbin "baserom.gba", 0x46F280, 0x14 + +gUnknown_846F294:: @ 846F294 + .incbin "baserom.gba", 0x46F294, 0x3C + +gUnknown_846F2D0:: @ 846F2D0 + .incbin "baserom.gba", 0x46F2D0, 0x1 + +gUnknown_846F2D1:: @ 846F2D1 + .incbin "baserom.gba", 0x46F2D1, 0x5 + +gUnknown_846F2D6:: @ 846F2D6 + .incbin "baserom.gba", 0x46F2D6, 0x1 + +gUnknown_846F2D7:: @ 846F2D7 + .incbin "baserom.gba", 0x46F2D7, 0x15 + +gUnknown_846F2EC:: @ 846F2EC + .incbin "baserom.gba", 0x46F2EC, 0xC + +gUnknown_846F2F8:: @ 846F2F8 + .incbin "baserom.gba", 0x46F2F8, 0x28 + +gUnknown_846F320:: @ 846F320 + .incbin "baserom.gba", 0x46F320, 0xF0 + +gUnknown_846F410:: @ 846F410 + .incbin "baserom.gba", 0x46F410, 0x18 + +gUnknown_846F428:: @ 846F428 + .incbin "baserom.gba", 0x46F428, 0x18 + +gUnknown_846F440:: @ 846F440 + .incbin "baserom.gba", 0x46F440, 0x18 + +gUnknown_846F458:: @ 846F458 + .incbin "baserom.gba", 0x46F458, 0x18 + +gUnknown_846F470:: @ 846F470 + .incbin "baserom.gba", 0x46F470, 0x18 + +gUnknown_846F488:: @ 846F488 + .incbin "baserom.gba", 0x46F488, 0x30 + +gUnknown_846F4B8:: @ 846F4B8 + .incbin "baserom.gba", 0x46F4B8, 0x18 + +gUnknown_846F4D0:: @ 846F4D0 + .incbin "baserom.gba", 0x46F4D0, 0x200 + +gUnknown_846F6D0:: @ 846F6D0 + .incbin "baserom.gba", 0x46F6D0, 0x210 + +gUnknown_846F8E0:: @ 846F8E0 + .incbin "baserom.gba", 0x46F8E0, 0x194 + +gUnknown_846FA74:: @ 846FA74 + .incbin "baserom.gba", 0x46FA74, 0x8 + +gUnknown_846FA7C:: @ 846FA7C + .incbin "baserom.gba", 0x46FA7C, 0x30 + +gUnknown_846FAAC:: @ 846FAAC + .incbin "baserom.gba", 0x46FAAC, 0x14 + +gUnknown_846FAC0:: @ 846FAC0 + .incbin "baserom.gba", 0x46FAC0, 0x48 + +gUnknown_846FB08:: @ 846FB08 + .incbin "baserom.gba", 0x46FB08, 0x4 + +gUnknown_846FB0C:: @ 846FB0C + .incbin "baserom.gba", 0x46FB0C, 0x1000 + +gUnknown_8470B0C:: @ 8470B0C + .incbin "baserom.gba", 0x470B0C, 0xF40 + +gUnknown_8471A4C:: @ 8471A4C + .incbin "baserom.gba", 0x471A4C, 0x120 + +gUnknown_8471B6C:: @ 8471B6C + .incbin "baserom.gba", 0x471B6C, 0x280 + +gUnknown_8471DEC:: @ 8471DEC + .incbin "baserom.gba", 0x471DEC, 0xA0 + +gUnknown_8471E8C:: @ 8471E8C + .incbin "baserom.gba", 0x471E8C, 0x50 + +gUnknown_8471EDC:: @ 8471EDC + .incbin "baserom.gba", 0x471EDC, 0x74 + +gUnknown_8471F50:: @ 8471F50 + .incbin "baserom.gba", 0x471F50, 0x113 + +gUnknown_8472063:: @ 8472063 + .incbin "baserom.gba", 0x472063, 0x4B + +gUnknown_84720AE:: @ 84720AE + .incbin "baserom.gba", 0x4720AE, 0x4E + +gUnknown_84720FC:: @ 84720FC + .incbin "baserom.gba", 0x4720FC, 0x37 + +gUnknown_8472133:: @ 8472133 + .incbin "baserom.gba", 0x472133, 0x3409 + +gUnknown_847553C:: @ 847553C + .incbin "baserom.gba", 0x47553C, 0xC + +gUnknown_8475548:: @ 8475548 + .incbin "baserom.gba", 0x475548, 0x8 + +gUnknown_8475550:: @ 8475550 + .incbin "baserom.gba", 0x475550, 0x8 + +gUnknown_8475558:: @ 8475558 + .incbin "baserom.gba", 0x475558, 0x20 + +gUnknown_8475578:: @ 8475578 + .incbin "baserom.gba", 0x475578, 0x30 + +gUnknown_84755A8:: @ 84755A8 + .incbin "baserom.gba", 0x4755A8, 0x30 + +gUnknown_84755D8:: @ 84755D8 + .incbin "baserom.gba", 0x4755D8, 0x8 + +gUnknown_84755E0:: @ 84755E0 + .incbin "baserom.gba", 0x4755E0, 0x8 + +gUnknown_84755E8:: @ 84755E8 + .incbin "baserom.gba", 0x4755E8, 0x10 + +gUnknown_84755F8:: @ 84755F8 + .incbin "baserom.gba", 0x4755F8, 0x4 + +gUnknown_84755FC:: @ 84755FC + .incbin "baserom.gba", 0x4755FC, 0x6 + +gUnknown_8475602:: @ 8475602 + .incbin "baserom.gba", 0x475602, 0x6 + +gUnknown_8475608:: @ 8475608 + .incbin "baserom.gba", 0x475608, 0x40 + +gUnknown_8475648:: @ 8475648 + .incbin "baserom.gba", 0x475648, 0x14 + +gUnknown_847565C:: @ 847565C + .incbin "baserom.gba", 0x47565C, 0x18 + +gUnknown_8475674:: @ 8475674 + .incbin "baserom.gba", 0x475674, 0x10 + +gUnknown_8475684:: @ 8475684 + .incbin "baserom.gba", 0x475684, 0x8 + +gUnknown_847568C:: @ 847568C + .incbin "baserom.gba", 0x47568C, 0x10 + +gUnknown_847569C:: @ 847569C + .incbin "baserom.gba", 0x47569C, 0x8 + +gUnknown_84756A4:: @ 84756A4 + .incbin "baserom.gba", 0x4756A4, 0x204 + +gUnknown_84758A8:: @ 84758A8 + .incbin "baserom.gba", 0x4758A8, 0xC0 + +gUnknown_8475968:: @ 8475968 + .incbin "baserom.gba", 0x475968, 0x1D4 + +gUnknown_8475B3C:: @ 8475B3C + .incbin "baserom.gba", 0x475B3C, 0x890 + +gUnknown_84763CC:: @ 84763CC + .incbin "baserom.gba", 0x4763CC, 0xDCC + +gUnknown_8477198:: @ 8477198 + .incbin "baserom.gba", 0x477198, 0x94 + +gUnknown_847722C:: @ 847722C + .incbin "baserom.gba", 0x47722C, 0x148 + +gUnknown_8477374:: @ 8477374 + .incbin "baserom.gba", 0x477374, 0x121C + +gUnknown_8478590:: @ 8478590 + .incbin "baserom.gba", 0x478590, 0x26C + +gUnknown_84787FC:: @ 84787FC + .incbin "baserom.gba", 0x4787FC, 0x250 + +gUnknown_8478A4C:: @ 8478A4C + .incbin "baserom.gba", 0x478A4C, 0x24C + +gUnknown_8478C98:: @ 8478C98 + .incbin "baserom.gba", 0x478C98, 0x48 + +gUnknown_8478CE0:: @ 8478CE0 + .incbin "baserom.gba", 0x478CE0, 0xB0 + +gUnknown_8478D90:: @ 8478D90 + .incbin "baserom.gba", 0x478D90, 0x8 + +gUnknown_8478D98:: @ 8478D98 + .incbin "baserom.gba", 0x478D98, 0x8 + +gUnknown_8478DA0:: @ 8478DA0 + .incbin "baserom.gba", 0x478DA0, 0x8 + +gUnknown_8478DA8:: @ 8478DA8 + .incbin "baserom.gba", 0x478DA8, 0x24 + +gUnknown_8478DCC:: @ 8478DCC + .incbin "baserom.gba", 0x478DCC, 0x8 + +gUnknown_8478DD4:: @ 8478DD4 + .incbin "baserom.gba", 0x478DD4, 0x8 + +gUnknown_8478DDC:: @ 8478DDC + .incbin "baserom.gba", 0x478DDC, 0x18 + +gUnknown_8478DF4:: @ 8478DF4 + .incbin "baserom.gba", 0x478DF4, 0x18 + +gUnknown_8478E0C:: @ 8478E0C + .incbin "baserom.gba", 0x478E0C, 0x2 + +gUnknown_8478E0E:: @ 8478E0E + .incbin "baserom.gba", 0x478E0E, 0xA + +gUnknown_8478E18:: @ 8478E18 + .incbin "baserom.gba", 0x478E18, 0x8 + +gUnknown_8478E20:: @ 8478E20 + .incbin "baserom.gba", 0x478E20, 0x18 + +gUnknown_8478E38:: @ 8478E38 + .incbin "baserom.gba", 0x478E38, 0x3 + +gUnknown_8478E3B:: @ 8478E3B + .incbin "baserom.gba", 0x478E3B, 0x45 + +gUnknown_8478E80:: @ 8478E80 + .incbin "baserom.gba", 0x478E80, 0x14 + +gUnknown_8478E94:: @ 8478E94 + .incbin "baserom.gba", 0x478E94, 0x14 + +gUnknown_8478EA8:: @ 8478EA8 + .incbin "baserom.gba", 0x478EA8, 0x8 + +gUnknown_8478EB0:: @ 8478EB0 + .incbin "baserom.gba", 0x478EB0, 0xA + +gUnknown_8478EBA:: @ 8478EBA + .incbin "baserom.gba", 0x478EBA, 0xA + +gUnknown_8478EC4:: @ 8478EC4 + .incbin "baserom.gba", 0x478EC4, 0x50 + +gUnknown_8478F14:: @ 8478F14 + .incbin "baserom.gba", 0x478F14, 0x8 + +gUnknown_8478F1C:: @ 8478F1C + .incbin "baserom.gba", 0x478F1C, 0x144 + +gUnknown_8479060:: @ 8479060 + .incbin "baserom.gba", 0x479060, 0x78 + +gUnknown_84790D8:: @ 84790D8 + .incbin "baserom.gba", 0x4790D8, 0xC0 + +gUnknown_8479198:: @ 8479198 + .incbin "baserom.gba", 0x479198, 0x10 + +gUnknown_84791A8:: @ 84791A8 + .incbin "baserom.gba", 0x4791A8, 0x10 + +gUnknown_84791B8:: @ 84791B8 + .incbin "baserom.gba", 0x4791B8, 0x14 + +gUnknown_84791CC:: @ 84791CC + .incbin "baserom.gba", 0x4791CC, 0x1C + +gUnknown_84791E8:: @ 84791E8 + .incbin "baserom.gba", 0x4791E8, 0xE8 + +gUnknown_84792D0:: @ 84792D0 + .incbin "baserom.gba", 0x4792D0, 0x10 + +gUnknown_84792E0:: @ 84792E0 + .incbin "baserom.gba", 0x4792E0, 0x10 + +gUnknown_84792F0:: @ 84792F0 + .incbin "baserom.gba", 0x4792F0, 0x50 + +gUnknown_8479340:: @ 8479340 + .incbin "baserom.gba", 0x479340, 0x28 + +gUnknown_8479368:: @ 8479368 + .incbin "baserom.gba", 0x479368, 0x18 + +gUnknown_8479380:: @ 8479380 + .incbin "baserom.gba", 0x479380, 0x10 + +gUnknown_8479390:: @ 8479390 + .incbin "baserom.gba", 0x479390, 0x1B8 + +gUnknown_8479548:: @ 8479548 + .incbin "baserom.gba", 0x479548, 0x18 + +gUnknown_8479560:: @ 8479560 + .incbin "baserom.gba", 0x479560, 0x18 + +gUnknown_8479578:: @ 8479578 + .incbin "baserom.gba", 0x479578, 0x18 + +gUnknown_8479590:: @ 8479590 + .incbin "baserom.gba", 0x479590, 0x28 + +gUnknown_84795B8:: @ 84795B8 + .incbin "baserom.gba", 0x4795B8, 0x10 + +gUnknown_84795C8:: @ 84795C8 + .incbin "baserom.gba", 0x4795C8, 0x90 + +gUnknown_8479658:: @ 8479658 + .incbin "baserom.gba", 0x479658, 0x600 + +gUnknown_8479C58:: @ 8479C58 + .incbin "baserom.gba", 0x479C58, 0x30 + +gUnknown_8479C88:: @ 8479C88 + .incbin "baserom.gba", 0x479C88, 0x38 + +gUnknown_8479CC0:: @ 8479CC0 + .incbin "baserom.gba", 0x479CC0, 0x18 + +gUnknown_8479CD8:: @ 8479CD8 + .incbin "baserom.gba", 0x479CD8, 0x38 + +gUnknown_8479D10:: @ 8479D10 + .incbin "baserom.gba", 0x479D10, 0x14 + +gUnknown_8479D24:: @ 8479D24 + .incbin "baserom.gba", 0x479D24, 0x10 + +gUnknown_8479D34:: @ 8479D34 + .incbin "baserom.gba", 0x479D34, 0x4 + +gUnknown_8479D38:: @ 8479D38 + .incbin "baserom.gba", 0x479D38, 0x8 + +gUnknown_8479D40:: @ 8479D40 + .incbin "baserom.gba", 0x479D40, 0x8 + +gUnknown_8479D48:: @ 8479D48 + .incbin "baserom.gba", 0x479D48, 0x190 + +gUnknown_8479ED8:: @ 8479ED8 + .incbin "baserom.gba", 0x479ED8, 0x14C + +gUnknown_847A024:: @ 847A024 + .incbin "baserom.gba", 0x47A024, 0x50 + +gUnknown_847A074:: @ 847A074 + .incbin "baserom.gba", 0x47A074, 0x1A4 + +gUnknown_847A218:: @ 847A218 + .incbin "baserom.gba", 0x47A218, 0x14 + +gUnknown_847A22C:: @ 847A22C + .incbin "baserom.gba", 0x47A22C, 0x4 + +gUnknown_847A230:: @ 847A230 + .incbin "baserom.gba", 0x47A230, 0x54 + +gUnknown_847A284:: @ 847A284 + .incbin "baserom.gba", 0x47A284, 0x30 + +gUnknown_847A2B4:: @ 847A2B4 + .incbin "baserom.gba", 0x47A2B4, 0x1E + +gUnknown_847A2D2:: @ 847A2D2 + .incbin "baserom.gba", 0x47A2D2, 0x1C + +gUnknown_847A2EE:: @ 847A2EE + .incbin "baserom.gba", 0x47A2EE, 0x10 + +gUnknown_847A2FE:: @ 847A2FE + .incbin "baserom.gba", 0x47A2FE, 0x10 + +gUnknown_847A30E:: @ 847A30E + .incbin "baserom.gba", 0x47A30E, 0x48E + +gUnknown_847A79C:: @ 847A79C + .incbin "baserom.gba", 0x47A79C, 0x8 + +gUnknown_847A7A4:: @ 847A7A4 + .incbin "baserom.gba", 0x47A7A4, 0xBC + +gUnknown_847A860:: @ 847A860 + .incbin "baserom.gba", 0x47A860, 0x18 + +gUnknown_847A878:: @ 847A878 + .incbin "baserom.gba", 0x47A878, 0x18 + +gUnknown_847A890:: @ 847A890 + .incbin "baserom.gba", 0x47A890, 0x7F1C + +gUnknown_84827AC:: @ 84827AC + .incbin "baserom.gba", 0x4827AC, 0x8 + +gUnknown_84827B4:: @ 84827B4 + .incbin "baserom.gba", 0x4827B4, 0x5F34 + +gUnknown_84886E8:: @ 84886E8 + .incbin "baserom.gba", 0x4886E8, 0x588 + +gUnknown_8488C70:: @ 8488C70 + .incbin "baserom.gba", 0x488C70, 0x32 + +gUnknown_8488CA2:: @ 8488CA2 + .incbin "baserom.gba", 0x488CA2, 0x2C + +gUnknown_8488CCE:: @ 8488CCE + .incbin "baserom.gba", 0x488CCE, 0x28 + +gUnknown_8488CF6:: @ 8488CF6 + .incbin "baserom.gba", 0x488CF6, 0x34 + +gUnknown_8488D2A:: @ 8488D2A + .incbin "baserom.gba", 0x488D2A, 0x36 + +gUnknown_8488D60:: @ 8488D60 + .incbin "baserom.gba", 0x488D60, 0x1C + +gUnknown_8488D7C:: @ 8488D7C + .incbin "baserom.gba", 0x488D7C, 0x12 + +gUnknown_8488D8E:: @ 8488D8E + .incbin "baserom.gba", 0x488D8E, 0x2F + +gUnknown_8488DBD:: @ 8488DBD + .incbin "baserom.gba", 0x488DBD, 0x40 + +gUnknown_8488DFD:: @ 8488DFD + .incbin "baserom.gba", 0x488DFD, 0xB6B diff --git a/data/event_scripts.s b/data/event_scripts.s new file mode 100644 index 000000000..1af9edab1 --- /dev/null +++ b/data/event_scripts.s @@ -0,0 +1,418 @@ + .section script_data, "aw", %progbits + +gUnknown_815F9B4:: @ 815F9B4 + .incbin "baserom.gba", 0x15F9B4, 0x354 + +gUnknown_815FD08:: @ 815FD08 + .incbin "baserom.gba", 0x15FD08, 0x4 + +gUnknown_815FD0C:: @ 815FD0C + .incbin "baserom.gba", 0x15FD0C, 0x54 + +gUnknown_815FD60:: @ 815FD60 + .incbin "baserom.gba", 0x15FD60, 0x6F0 + +gUnknown_8160450:: @ 8160450 + .incbin "baserom.gba", 0x160450, 0x28 + +gUnknown_8160478:: @ 8160478 + .incbin "baserom.gba", 0x160478, 0x886C + +gUnknown_8168CE4:: @ 8168CE4 + .incbin "baserom.gba", 0x168CE4, 0x33 + +gUnknown_8168D17:: @ 8168D17 + .incbin "baserom.gba", 0x168D17, 0x3C19D + +gUnknown_81A4EB4:: @ 81A4EB4 + .incbin "baserom.gba", 0x1A4EB4, 0xD + +gUnknown_81A4EC1:: @ 81A4EC1 + .incbin "baserom.gba", 0x1A4EC1, 0x28 + +gUnknown_81A4EE9:: @ 81A4EE9 + .incbin "baserom.gba", 0x1A4EE9, 0x38 + +gUnknown_81A4F21:: @ 81A4F21 + .incbin "baserom.gba", 0x1A4F21, 0x1D + +gUnknown_81A4F3E:: @ 81A4F3E + .incbin "baserom.gba", 0x1A4F3E, 0x35 + +gUnknown_81A4F73:: @ 81A4F73 + .incbin "baserom.gba", 0x1A4F73, 0x117 + +gUnknown_81A508A:: @ 81A508A + .incbin "baserom.gba", 0x1A508A, 0x3EC + +gUnknown_81A5476:: @ 81A5476 + .incbin "baserom.gba", 0x1A5476, 0x100B + +gUnknown_81A6481:: @ 81A6481 + .incbin "baserom.gba", 0x1A6481, 0xCA + +gUnknown_81A654B:: @ 81A654B + .incbin "baserom.gba", 0x1A654B, 0x2F8 + +gUnknown_81A6843:: @ 81A6843 + .incbin "baserom.gba", 0x1A6843, 0x112 + +gUnknown_81A6955:: @ 81A6955 + .incbin "baserom.gba", 0x1A6955, 0x173 + +gUnknown_81A6AC8:: @ 81A6AC8 + .incbin "baserom.gba", 0x1A6AC8, 0x45 + +gUnknown_81A6B0D:: @ 81A6B0D + .incbin "baserom.gba", 0x1A6B0D, 0x125 + +gUnknown_81A6C32:: @ 81A6C32 + .incbin "baserom.gba", 0x1A6C32, 0xE5 + +gUnknown_81A6D17:: @ 81A6D17 + .incbin "baserom.gba", 0x1A6D17, 0x56 + +gUnknown_81A6D6D:: @ 81A6D6D + .incbin "baserom.gba", 0x1A6D6D, 0x72 + +gUnknown_81A6DDF:: @ 81A6DDF + .incbin "baserom.gba", 0x1A6DDF, 0x57 + +gUnknown_81A6E36:: @ 81A6E36 + .incbin "baserom.gba", 0x1A6E36, 0x6E + +gUnknown_81A6EA4:: @ 81A6EA4 + .incbin "baserom.gba", 0x1A6EA4, 0x67 + +gUnknown_81A6F0B:: @ 81A6F0B + .incbin "baserom.gba", 0x1A6F0B, 0x66 + +gUnknown_81A6F71:: @ 81A6F71 + .incbin "baserom.gba", 0x1A6F71, 0x3A + +gUnknown_81A6FAB:: @ 81A6FAB + .incbin "baserom.gba", 0x1A6FAB, 0x46 + +gUnknown_81A6FF1:: @ 81A6FF1 + .incbin "baserom.gba", 0x1A6FF1, 0x40 + +gUnknown_81A7031:: @ 81A7031 + .incbin "baserom.gba", 0x1A7031, 0x32 + +gUnknown_81A7063:: @ 81A7063 + .incbin "baserom.gba", 0x1A7063, 0x42 + +gUnknown_81A70A5:: @ 81A70A5 + .incbin "baserom.gba", 0x1A70A5, 0x33 + +gUnknown_81A70D8:: @ 81A70D8 + .incbin "baserom.gba", 0x1A70D8, 0x30 + +gUnknown_81A7108:: @ 81A7108 + .incbin "baserom.gba", 0x1A7108, 0x2F + +gUnknown_81A7137:: @ 81A7137 + .incbin "baserom.gba", 0x1A7137, 0x3E + +gUnknown_81A7175:: @ 81A7175 + .incbin "baserom.gba", 0x1A7175, 0x491 + +gUnknown_81A7606:: @ 81A7606 + .incbin "baserom.gba", 0x1A7606, 0x9 + +gUnknown_81A760F:: @ 81A760F + .incbin "baserom.gba", 0x1A760F, 0x9 + +gUnknown_81A7618:: @ 81A7618 + .incbin "baserom.gba", 0x1A7618, 0x9 + +gUnknown_81A7621:: @ 81A7621 + .incbin "baserom.gba", 0x1A7621, 0x9 + +gUnknown_81A762A:: @ 81A762A + .incbin "baserom.gba", 0x1A762A, 0x9 + +gUnknown_81A7633:: @ 81A7633 + .incbin "baserom.gba", 0x1A7633, 0x9 + +gUnknown_81A763C:: @ 81A763C + .incbin "baserom.gba", 0x1A763C, 0x9 + +gUnknown_81A7645:: @ 81A7645 + .incbin "baserom.gba", 0x1A7645, 0x9 + +gUnknown_81A764E:: @ 81A764E + .incbin "baserom.gba", 0x1A764E, 0x9 + +gUnknown_81A7657:: @ 81A7657 + .incbin "baserom.gba", 0x1A7657, 0x9 + +gUnknown_81A7660:: @ 81A7660 + .incbin "baserom.gba", 0x1A7660, 0x9 + +gUnknown_81A7669:: @ 81A7669 + .incbin "baserom.gba", 0x1A7669, 0x9 + +gUnknown_81A7672:: @ 81A7672 + .incbin "baserom.gba", 0x1A7672, 0x9 + +gUnknown_81A767B:: @ 81A767B + .incbin "baserom.gba", 0x1A767B, 0x9 + +gUnknown_81A7684:: @ 81A7684 + .incbin "baserom.gba", 0x1A7684, 0x9 + +gUnknown_81A768D:: @ 81A768D + .incbin "baserom.gba", 0x1A768D, 0x9 + +gUnknown_81A7696:: @ 81A7696 + .incbin "baserom.gba", 0x1A7696, 0x9 + +gUnknown_81A769F:: @ 81A769F + .incbin "baserom.gba", 0x1A769F, 0x9 + +gUnknown_81A76A8:: @ 81A76A8 + .incbin "baserom.gba", 0x1A76A8, 0x9 + +gUnknown_81A76B1:: @ 81A76B1 + .incbin "baserom.gba", 0x1A76B1, 0x9 + +gUnknown_81A76BA:: @ 81A76BA + .incbin "baserom.gba", 0x1A76BA, 0x9 + +gUnknown_81A76C3:: @ 81A76C3 + .incbin "baserom.gba", 0x1A76C3, 0x9 + +gUnknown_81A76CC:: @ 81A76CC + .incbin "baserom.gba", 0x1A76CC, 0x9 + +gUnknown_81A76D5:: @ 81A76D5 + .incbin "baserom.gba", 0x1A76D5, 0x9 + +gUnknown_81A76DE:: @ 81A76DE + .incbin "baserom.gba", 0x1A76DE, 0x9 + +gUnknown_81A76E7:: @ 81A76E7 + .incbin "baserom.gba", 0x1A76E7, 0x9 + +gUnknown_81A76F0:: @ 81A76F0 + .incbin "baserom.gba", 0x1A76F0, 0x9 + +gUnknown_81A76F9:: @ 81A76F9 + .incbin "baserom.gba", 0x1A76F9, 0x9 + +gUnknown_81A7702:: @ 81A7702 + .incbin "baserom.gba", 0x1A7702, 0x9E + +gUnknown_81A77A0:: @ 81A77A0 + .incbin "baserom.gba", 0x1A77A0, 0x33B + +gUnknown_81A7ADB:: @ 81A7ADB + .incbin "baserom.gba", 0x1A7ADB, 0x5 + +gUnknown_81A7AE0:: @ 81A7AE0 + .incbin "baserom.gba", 0x1A7AE0, 0x120D + +gUnknown_81A8CED:: @ 81A8CED + .incbin "baserom.gba", 0x1A8CED, 0x5C + +gUnknown_81A8D49:: @ 81A8D49 + .incbin "baserom.gba", 0x1A8D49, 0x4E + +gUnknown_81A8D97:: @ 81A8D97 + .incbin "baserom.gba", 0x1A8D97, 0x41 + +gUnknown_81A8DD8:: @ 81A8DD8 + .incbin "baserom.gba", 0x1A8DD8, 0x25 + +gUnknown_81A8DFD:: @ 81A8DFD + .incbin "baserom.gba", 0x1A8DFD, 0xA072 + +gUnknown_81B2E6F:: @ 81B2E6F + .incbin "baserom.gba", 0x1B2E6F, 0x15A + +gUnknown_81B2FC9:: @ 81B2FC9 + .incbin "baserom.gba", 0x1B2FC9, 0x88DE + +gUnknown_81BB8A7:: @ 81BB8A7 + .incbin "baserom.gba", 0x1BB8A7, 0x1C + +gUnknown_81BB8C3:: @ 81BB8C3 + .incbin "baserom.gba", 0x1BB8C3, 0xC + +gUnknown_81BB8CF:: @ 81BB8CF + .incbin "baserom.gba", 0x1BB8CF, 0xC + +gUnknown_81BB8DB:: @ 81BB8DB + .incbin "baserom.gba", 0x1BB8DB, 0x1D + +gUnknown_81BB8F8:: @ 81BB8F8 + .incbin "baserom.gba", 0x1BB8F8, 0x1D + +gUnknown_81BB915:: @ 81BB915 + .incbin "baserom.gba", 0x1BB915, 0x1D + +gUnknown_81BB932:: @ 81BB932 + .incbin "baserom.gba", 0x1BB932, 0x1E + +gUnknown_81BB950:: @ 81BB950 + .incbin "baserom.gba", 0x1BB950, 0xC + +gUnknown_81BB95C:: @ 81BB95C + .incbin "baserom.gba", 0x1BB95C, 0x24 + +gUnknown_81BB980:: @ 81BB980 + .incbin "baserom.gba", 0x1BB980, 0x1 + +gUnknown_81BB981:: @ 81BB981 + .incbin "baserom.gba", 0x1BB981, 0x11 + +gUnknown_81BB992:: @ 81BB992 + .incbin "baserom.gba", 0x1BB992, 0x11 + +gUnknown_81BB9A3:: @ 81BB9A3 + .incbin "baserom.gba", 0x1BB9A3, 0x31 + +gUnknown_81BB9D4:: @ 81BB9D4 + .incbin "baserom.gba", 0x1BB9D4, 0x1C + +gUnknown_81BB9F0:: @ 81BB9F0 + .incbin "baserom.gba", 0x1BB9F0, 0xC + +gUnknown_81BB9FC:: @ 81BB9FC + .incbin "baserom.gba", 0x1BB9FC, 0x5DC + +gUnknown_81BBFD8:: @ 81BBFD8 + .incbin "baserom.gba", 0x1BBFD8, 0x4D4 + +gUnknown_81BC4AC:: @ 81BC4AC + .incbin "baserom.gba", 0x1BC4AC, 0x22 + +gUnknown_81BC4CE:: @ 81BC4CE + .incbin "baserom.gba", 0x1BC4CE, 0x3F + +gUnknown_81BC50D:: @ 81BC50D + .incbin "baserom.gba", 0x1BC50D, 0x3F + +gUnknown_81BC54C:: @ 81BC54C + .incbin "baserom.gba", 0x1BC54C, 0x1A1F + +gUnknown_81BDF6B:: @ 81BDF6B + .incbin "baserom.gba", 0x1BDF6B, 0xF9 + +gUnknown_81BE064:: @ 81BE064 + .incbin "baserom.gba", 0x1BE064, 0x10A + +gUnknown_81BE16E:: @ 81BE16E + .incbin "baserom.gba", 0x1BE16E, 0x149 + +gUnknown_81BE2B7:: @ 81BE2B7 + .incbin "baserom.gba", 0x1BE2B7, 0x48 + +gUnknown_81BE2FF:: @ 81BE2FF + .incbin "baserom.gba", 0x1BE2FF, 0x265 + +gUnknown_81BE564:: @ 81BE564 + .incbin "baserom.gba", 0x1BE564, 0xFE2 + +gUnknown_81BF546:: @ 81BF546 + .incbin "baserom.gba", 0x1BF546, 0x619 + +gUnknown_81BFB5F:: @ 81BFB5F + .incbin "baserom.gba", 0x1BFB5F, 0x6 + +gUnknown_81BFB65:: @ 81BFB65 + .incbin "baserom.gba", 0x1BFB65, 0x22 + +gUnknown_81BFB87:: @ 81BFB87 + .incbin "baserom.gba", 0x1BFB87, 0x23 + +gUnknown_81BFBAA:: @ 81BFBAA + .incbin "baserom.gba", 0x1BFBAA, 0x1B + +gUnknown_81BFBC5:: @ 81BFBC5 + .incbin "baserom.gba", 0x1BFBC5, 0x12 + +gUnknown_81BFBD7:: @ 81BFBD7 + .incbin "baserom.gba", 0x1BFBD7, 0x178A + +gUnknown_81C1361:: @ 81C1361 + .incbin "baserom.gba", 0x1C1361, 0x1B + +gUnknown_81C137C:: @ 81C137C + .incbin "baserom.gba", 0x1C137C, 0x5A + +gUnknown_81C13D6:: @ 81C13D6 + .incbin "baserom.gba", 0x1C13D6, 0x53 + +gUnknown_81C1429:: @ 81C1429 + .incbin "baserom.gba", 0x1C1429, 0x4073 + +gUnknown_81C549C:: @ 81C549C + .incbin "baserom.gba", 0x1C549C, 0xBF + +gUnknown_81C555B:: @ 81C555B + .incbin "baserom.gba", 0x1C555B, 0x6E + +gUnknown_81C55C9:: @ 81C55C9 + .incbin "baserom.gba", 0x1C55C9, 0x21 + +gUnknown_81C55EA:: @ 81C55EA + .incbin "baserom.gba", 0x1C55EA, 0x3B + +gUnknown_81C5625:: @ 81C5625 + .incbin "baserom.gba", 0x1C5625, 0x22 + +gUnknown_81C5647:: @ 81C5647 + .incbin "baserom.gba", 0x1C5647, 0x23 + +gUnknown_81C566A:: @ 81C566A + .incbin "baserom.gba", 0x1C566A, 0xE5 + +gUnknown_81C574F:: @ 81C574F + .incbin "baserom.gba", 0x1C574F, 0xDE + +gUnknown_81C582D:: @ 81C582D + .incbin "baserom.gba", 0x1C582D, 0x1A8 + +gUnknown_81C59D5:: @ 81C59D5 + .incbin "baserom.gba", 0x1C59D5, 0x2A3 + +gUnknown_81C5C78:: @ 81C5C78 + .incbin "baserom.gba", 0x1C5C78, 0x8E + +gUnknown_81C5D06:: @ 81C5D06 + .incbin "baserom.gba", 0x1C5D06, 0xC + +gUnknown_81C5D12:: @ 81C5D12 + .incbin "baserom.gba", 0x1C5D12, 0x39 + +gUnknown_81C5D4B:: @ 81C5D4B + .incbin "baserom.gba", 0x1C5D4B, 0x72 + +gUnknown_81C5DBD:: @ 81C5DBD + .incbin "baserom.gba", 0x1C5DBD, 0x2D + +gUnknown_81C5DEA:: @ 81C5DEA + .incbin "baserom.gba", 0x1C5DEA, 0x29 + +gUnknown_81C5E13:: @ 81C5E13 + .incbin "baserom.gba", 0x1C5E13, 0x1B + +gUnknown_81C5E2E:: @ 81C5E2E + .incbin "baserom.gba", 0x1C5E2E, 0x63 + +gUnknown_81C5E91:: @ 81C5E91 + .incbin "baserom.gba", 0x1C5E91, 0x24 + +gUnknown_81C5EB5:: @ 81C5EB5 + .incbin "baserom.gba", 0x1C5EB5, 0x10 + +gUnknown_81C5EC5:: @ 81C5EC5 + .incbin "baserom.gba", 0x1C5EC5, 0x2F + +gUnknown_81C5EF4:: @ 81C5EF4 + .incbin "baserom.gba", 0x1C5EF4, 0x75 + +@ pokedude data + .incbin "baserom.gba", 0x1C5F69, 0x983 diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s new file mode 100644 index 000000000..e655f0502 --- /dev/null +++ b/data/field_effect_scripts.s @@ -0,0 +1,4 @@ + .section script_data, "aw", %progbits + +gUnknown_81D96AC:: @ 81D96AC + .incbin "baserom.gba", 0x1D96AC, 0x304 diff --git a/data/graphics.s b/data/graphics.s new file mode 100644 index 000000000..a81ff20c2 --- /dev/null +++ b/data/graphics.s @@ -0,0 +1,478 @@ + .section gfx_data, "aw", %progbits + +gUnknown_8D00000:: @ 8D00000 + .incbin "baserom.gba", 0xD00000, 0x4D8 + +gUnknown_8D004D8:: @ 8D004D8 + .incbin "baserom.gba", 0xD004D8, 0x44 + +gUnknown_8D0051C:: @ 8D0051C + .incbin "baserom.gba", 0xD0051C, 0x1DCC + +gUnknown_8D022E8:: @ 8D022E8 + .incbin "baserom.gba", 0xD022E8, 0x70F0 + +gUnknown_8D093D8:: @ 8D093D8 + .incbin "baserom.gba", 0xD093D8, 0x87EC + +gUnknown_8D11BC4:: @ 8D11BC4 + .incbin "baserom.gba", 0xD11BC4, 0xB660 + +gUnknown_8D1D224:: @ 8D1D224 + .incbin "baserom.gba", 0xD1D224, 0x13C + +gUnknown_8D1D360:: @ 8D1D360 + .incbin "baserom.gba", 0xD1D360, 0x28 + +gUnknown_8D1D388:: @ 8D1D388 + .incbin "baserom.gba", 0xD1D388, 0x34B4 + +gUnknown_8D2083C:: @ 8D2083C + .incbin "baserom.gba", 0xD2083C, 0x1C + +gUnknown_8D20858:: @ 8D20858 + .incbin "baserom.gba", 0xD20858, 0x1F8C + +gUnknown_8D227E4:: @ 8D227E4 + .incbin "baserom.gba", 0xD227E4, 0xCD0 + +gUnknown_8D234B4:: @ 8D234B4 + .incbin "baserom.gba", 0xD234B4, 0xA70 + +gUnknown_8D23F24:: @ 8D23F24 + .incbin "baserom.gba", 0xD23F24, 0x28 + +gUnknown_8D23F4C:: @ 8D23F4C + .incbin "baserom.gba", 0xD23F4C, 0xC58 + +gUnknown_8D24BA4:: @ 8D24BA4 + .incbin "baserom.gba", 0xD24BA4, 0x28 + +gUnknown_8D24BCC:: @ 8D24BCC + .incbin "baserom.gba", 0xD24BCC, 0x5C3C + +gUnknown_8D2A808:: @ 8D2A808 + .incbin "baserom.gba", 0xD2A808, 0xA0 + +gUnknown_8D2A8A8:: @ 8D2A8A8 + .incbin "baserom.gba", 0xD2A8A8, 0x18 + +gUnknown_8D2A8C0:: @ 8D2A8C0 + .incbin "baserom.gba", 0xD2A8C0, 0x27D0 + +gUnknown_8D2D090:: @ 8D2D090 + .incbin "baserom.gba", 0xD2D090, 0x24 + +gUnknown_8D2D0B4:: @ 8D2D0B4 + .incbin "baserom.gba", 0xD2D0B4, 0x240 + +gUnknown_8D2D2F4:: @ 8D2D2F4 + .incbin "baserom.gba", 0xD2D2F4, 0x600 + +gUnknown_8D2D8F4:: @ 8D2D8F4 + .incbin "baserom.gba", 0xD2D8F4, 0x210 + +gUnknown_8D2DB04:: @ 8D2DB04 + .incbin "baserom.gba", 0xD2DB04, 0x11C + +gUnknown_8D2DC20:: @ 8D2DC20 + .incbin "baserom.gba", 0xD2DC20, 0x11C + +gUnknown_8D2DD3C:: @ 8D2DD3C + .incbin "baserom.gba", 0xD2DD3C, 0x20 + +gUnknown_8D2DD5C:: @ 8D2DD5C + .incbin "baserom.gba", 0xD2DD5C, 0x20 + +gUnknown_8D2DD7C:: @ 8D2DD7C + .incbin "baserom.gba", 0xD2DD7C, 0x20 + +gUnknown_8D2DD9C:: @ 8D2DD9C + .incbin "baserom.gba", 0xD2DD9C, 0x20 + +gUnknown_8D2DDBC:: @ 8D2DDBC + .incbin "baserom.gba", 0xD2DDBC, 0x20 + +gUnknown_8D2DDDC:: @ 8D2DDDC + .incbin "baserom.gba", 0xD2DDDC, 0x20 + +gUnknown_8D2DDFC:: @ 8D2DDFC + .incbin "baserom.gba", 0xD2DDFC, 0x20 + +gUnknown_8D2DE1C:: @ 8D2DE1C + .incbin "baserom.gba", 0xD2DE1C, 0x20 + +gUnknown_8D2DE3C:: @ 8D2DE3C + .incbin "baserom.gba", 0xD2DE3C, 0x13C + +gUnknown_8D2DF78:: @ 8D2DF78 + .incbin "baserom.gba", 0xD2DF78, 0x20 + +gUnknown_8D2DF98:: @ 8D2DF98 + .incbin "baserom.gba", 0xD2DF98, 0xC8C + +gUnknown_8D2EC24:: @ 8D2EC24 + .incbin "baserom.gba", 0xD2EC24, 0x4C + +gUnknown_8D2EC70:: @ 8D2EC70 + .incbin "baserom.gba", 0xD2EC70, 0xF44 + +gUnknown_8D2FBB4:: @ 8D2FBB4 + .incbin "baserom.gba", 0xD2FBB4, 0x1477C8 + +gUnknown_8E7737C:: @ 8E7737C + .incbin "baserom.gba", 0xE7737C, 0xE8 + +gUnknown_8E77464:: @ 8E77464 + .incbin "baserom.gba", 0xE77464, 0x10C + +gUnknown_8E77570:: @ 8E77570 + .incbin "baserom.gba", 0xE77570, 0x28 + +gUnknown_8E77598:: @ 8E77598 + .incbin "baserom.gba", 0xE77598, 0x1DBC + +gUnknown_8E79354:: @ 8E79354 + .incbin "baserom.gba", 0xE79354, 0x17C + +gUnknown_8E794D0:: @ 8E794D0 + .incbin "baserom.gba", 0xE794D0, 0x52C + +gUnknown_8E799FC:: @ 8E799FC + .incbin "baserom.gba", 0xE799FC, 0x20B4 + +gUnknown_8E7BAB0:: @ 8E7BAB0 + .incbin "baserom.gba", 0xE7BAB0, 0x3744 + +gUnknown_8E7F1F4:: @ 8E7F1F4 + .incbin "baserom.gba", 0xE7F1F4, 0x2B8 + +gUnknown_8E7F4AC:: @ 8E7F4AC + .incbin "baserom.gba", 0xE7F4AC, 0x1E4 + +gUnknown_8E7F690:: @ 8E7F690 + .incbin "baserom.gba", 0xE7F690, 0x1E4 + +gUnknown_8E7F874:: @ 8E7F874 + .incbin "baserom.gba", 0xE7F874, 0x1158 + +gUnknown_8E809CC:: @ 8E809CC + .incbin "baserom.gba", 0xE809CC, 0x1320 + +gUnknown_8E81CEC:: @ 8E81CEC + .incbin "baserom.gba", 0xE81CEC, 0x28 + +gUnknown_8E81D14:: @ 8E81D14 + .incbin "baserom.gba", 0xE81D14, 0x2D0 + +gUnknown_8E81FE4:: @ 8E81FE4 + .incbin "baserom.gba", 0xE81FE4, 0x2D4 + +gUnknown_8E822B8:: @ 8E822B8 + .incbin "baserom.gba", 0xE822B8, 0x448 + +gUnknown_8E82700:: @ 8E82700 + .incbin "baserom.gba", 0xE82700, 0x2C8 + +gUnknown_8E829C8:: @ 8E829C8 + .incbin "baserom.gba", 0xE829C8, 0xE8 + +gUnknown_8E82AB0:: @ 8E82AB0 + .incbin "baserom.gba", 0xE82AB0, 0x61C + +gUnknown_8E830CC:: @ 8E830CC + .incbin "baserom.gba", 0xE830CC, 0x1F4 + +gUnknown_8E832C0:: @ 8E832C0 + .incbin "baserom.gba", 0xE832C0, 0x184 + +gUnknown_8E83444:: @ 8E83444 + .incbin "baserom.gba", 0xE83444, 0x170 + +gUnknown_8E835B4:: @ 8E835B4 + .incbin "baserom.gba", 0xE835B4, 0x50 + +gUnknown_8E83604:: @ 8E83604 + .incbin "baserom.gba", 0xE83604, 0xFD4 + +gUnknown_8E845D8:: @ 8E845D8 + .incbin "baserom.gba", 0xE845D8, 0x44C + +gUnknown_8E84A24:: @ 8E84A24 + .incbin "baserom.gba", 0xE84A24, 0x14C + +gUnknown_8E84B70:: @ 8E84B70 + .incbin "baserom.gba", 0xE84B70, 0x140 + +gUnknown_8E84CB0:: @ 8E84CB0 + .incbin "baserom.gba", 0xE84CB0, 0x70 + +gUnknown_8E84D20:: @ 8E84D20 + .incbin "baserom.gba", 0xE84D20, 0x200 + +gUnknown_8E84F20:: @ 8E84F20 + .incbin "baserom.gba", 0xE84F20, 0x148 + +gUnknown_8E85068:: @ 8E85068 + .incbin "baserom.gba", 0xE85068, 0x28 + +gUnknown_8E85090:: @ 8E85090 + .incbin "baserom.gba", 0xE85090, 0x378 + +gUnknown_8E85408:: @ 8E85408 + .incbin "baserom.gba", 0xE85408, 0x50 + +gUnknown_8E85458:: @ 8E85458 + .incbin "baserom.gba", 0xE85458, 0x578 + +gUnknown_8E859D0:: @ 8E859D0 + .incbin "baserom.gba", 0xE859D0, 0x1D4 + +gUnknown_8E85BA4:: @ 8E85BA4 + .incbin "baserom.gba", 0xE85BA4, 0x50 + +gUnknown_8E85BF4:: @ 8E85BF4 + .incbin "baserom.gba", 0xE85BF4, 0x50 + +gUnknown_8E85C44:: @ 8E85C44 + .incbin "baserom.gba", 0xE85C44, 0x184 + +gUnknown_8E85DC8:: @ 8E85DC8 + .incbin "baserom.gba", 0xE85DC8, 0x134 + +gUnknown_8E85EFC:: @ 8E85EFC + .incbin "baserom.gba", 0xE85EFC, 0x13C + +gUnknown_8E86038:: @ 8E86038 + .incbin "baserom.gba", 0xE86038, 0x138 + +gUnknown_8E86170:: @ 8E86170 + .incbin "baserom.gba", 0xE86170, 0xD0 + +gUnknown_8E86240:: @ 8E86240 + .incbin "baserom.gba", 0xE86240, 0x9A8 + +gUnknown_8E86BE8:: @ 8E86BE8 + .incbin "baserom.gba", 0xE86BE8, 0x184 + +gUnknown_8E86D6C:: @ 8E86D6C + .incbin "baserom.gba", 0xE86D6C, 0x22C + +gUnknown_8E86F98:: @ 8E86F98 + .incbin "baserom.gba", 0xE86F98, 0xCB7C + +gUnknown_8E93B14:: @ 8E93B14 + .incbin "baserom.gba", 0xE93B14, 0x24 + +gUnknown_8E93B38:: @ 8E93B38 + .incbin "baserom.gba", 0xE93B38, 0x2264 + +gUnknown_8E95D9C:: @ 8E95D9C + .incbin "baserom.gba", 0xE95D9C, 0x20 + +gUnknown_8E95DBC:: @ 8E95DBC + .incbin "baserom.gba", 0xE95DBC, 0x20 + +gUnknown_8E95DDC:: @ 8E95DDC + .incbin "baserom.gba", 0xE95DDC, 0x2000 + +gUnknown_8E97DDC:: @ 8E97DDC + .incbin "baserom.gba", 0xE97DDC, 0x20 + +gUnknown_8E97DFC:: @ 8E97DFC + .incbin "baserom.gba", 0xE97DFC, 0xC8 + +gUnknown_8E97EC4:: @ 8E97EC4 + .incbin "baserom.gba", 0xE97EC4, 0x120 + +gUnknown_8E97FE4:: @ 8E97FE4 + .incbin "baserom.gba", 0xE97FE4, 0x40 + +gUnknown_8E98024:: @ 8E98024 + .incbin "baserom.gba", 0xE98024, 0xC0 + +gUnknown_8E980E4:: @ 8E980E4 + .incbin "baserom.gba", 0xE980E4, 0x1D8 + +gUnknown_8E982BC:: @ 8E982BC + .incbin "baserom.gba", 0xE982BC, 0xDC + +gUnknown_8E98398:: @ 8E98398 + .incbin "baserom.gba", 0xE98398, 0xC0 + +gUnknown_8E98458:: @ 8E98458 + .incbin "baserom.gba", 0xE98458, 0xCC0 + +gUnknown_8E99118:: @ 8E99118 + .incbin "baserom.gba", 0xE99118, 0xE0 + +gUnknown_8E991F8:: @ 8E991F8 + .incbin "baserom.gba", 0xE991F8, 0x6D4 + +gUnknown_8E998CC:: @ 8E998CC + .incbin "baserom.gba", 0xE998CC, 0x4C0 + +gUnknown_8E99D8C:: @ 8E99D8C + .incbin "baserom.gba", 0xE99D8C, 0x20 + +gUnknown_8E99DAC:: @ 8E99DAC + .incbin "baserom.gba", 0xE99DAC, 0xC8 + +gUnknown_8E99E74:: @ 8E99E74 + .incbin "baserom.gba", 0xE99E74, 0x5EC + +gUnknown_8E9A460:: @ 8E9A460 + .incbin "baserom.gba", 0xE9A460, 0xEB0 + +gUnknown_8E9B310:: @ 8E9B310 + .incbin "baserom.gba", 0xE9B310, 0xC0 + +gUnknown_8E9B3D0:: @ 8E9B3D0 + .incbin "baserom.gba", 0xE9B3D0, 0x20 + +gUnknown_8E9B3F0:: @ 8E9B3F0 + .incbin "baserom.gba", 0xE9B3F0, 0xC8 + +gUnknown_8E9B4B8:: @ 8E9B4B8 + .incbin "baserom.gba", 0xE9B4B8, 0xC0 + +gUnknown_8E9B578:: @ 8E9B578 + .incbin "baserom.gba", 0xE9B578, 0x20 + +gUnknown_8E9B598:: @ 8E9B598 + .incbin "baserom.gba", 0xE9B598, 0x1B8 + +gUnknown_8E9B750:: @ 8E9B750 + .incbin "baserom.gba", 0xE9B750, 0x200 + +gUnknown_8E9B950:: @ 8E9B950 + .incbin "baserom.gba", 0xE9B950, 0x14C + +gUnknown_8E9BA9C:: @ 8E9BA9C + .incbin "baserom.gba", 0xE9BA9C, 0x130 + +gUnknown_8E9BBCC:: @ 8E9BBCC + .incbin "baserom.gba", 0xE9BBCC, 0x35C + +gUnknown_8E9BF28:: @ 8E9BF28 + .incbin "baserom.gba", 0xE9BF28, 0x20 + +gUnknown_8E9BF48:: @ 8E9BF48 + .incbin "baserom.gba", 0xE9BF48, 0x490 + +gUnknown_8E9C3D8:: @ 8E9C3D8 + .incbin "baserom.gba", 0xE9C3D8, 0x20 + +gUnknown_8E9C3F8:: @ 8E9C3F8 + .incbin "baserom.gba", 0xE9C3F8, 0x20 + +gUnknown_8E9C418:: @ 8E9C418 + .incbin "baserom.gba", 0xE9C418, 0x20 + +gUnknown_8E9C438:: @ 8E9C438 + .incbin "baserom.gba", 0xE9C438, 0x6B4 + +gUnknown_8E9CAEC:: @ 8E9CAEC + .incbin "baserom.gba", 0xE9CAEC, 0xB0 + +gUnknown_8E9CB9C:: @ 8E9CB9C + .incbin "baserom.gba", 0xE9CB9C, 0x20 + +gUnknown_8E9CBBC:: @ 8E9CBBC + .incbin "baserom.gba", 0xE9CBBC, 0x320 + +gUnknown_8E9CEDC:: @ 8E9CEDC + .incbin "baserom.gba", 0xE9CEDC, 0x80 + +gUnknown_8E9CF5C:: @ 8E9CF5C + .incbin "baserom.gba", 0xE9CF5C, 0x1AA0 + +gUnknown_8E9E9FC:: @ 8E9E9FC + .incbin "baserom.gba", 0xE9E9FC, 0x800 + +gUnknown_8E9F1FC:: @ 8E9F1FC + .incbin "baserom.gba", 0xE9F1FC, 0x24 + +gUnknown_8E9F220:: @ 8E9F220 + .incbin "baserom.gba", 0xE9F220, 0x40 + +gUnknown_8E9F260:: @ 8E9F260 + .incbin "baserom.gba", 0xE9F260, 0x14A0 + +gUnknown_8EA0700:: @ 8EA0700 + .incbin "baserom.gba", 0xEA0700, 0x800 + +gUnknown_8EA0F00:: @ 8EA0F00 + .incbin "baserom.gba", 0xEA0F00, 0x800 + +gUnknown_8EA1700:: @ 8EA1700 + .incbin "baserom.gba", 0xEA1700, 0x20 + +gUnknown_8EA1720:: @ 8EA1720 + .incbin "baserom.gba", 0xEA1720, 0x238 + +gUnknown_8EA1958:: @ 8EA1958 + .incbin "baserom.gba", 0xEA1958, 0x9098 + +gUnknown_8EAA9F0:: @ 8EAA9F0 + .incbin "baserom.gba", 0xEAA9F0, 0x20 + +gUnknown_8EAAA10:: @ 8EAAA10 + .incbin "baserom.gba", 0xEAAA10, 0x5C + +gUnknown_8EAAA6C:: @ 8EAAA6C + .incbin "baserom.gba", 0xEAAA6C, 0xAC + +gUnknown_8EAAB18:: @ 8EAAB18 + .incbin "baserom.gba", 0xEAAB18, 0x80 + +gUnknown_8EAAB98:: @ 8EAAB98 + .incbin "baserom.gba", 0xEAAB98, 0x774 + +gUnknown_8EAB30C:: @ 8EAB30C + .incbin "baserom.gba", 0xEAB30C, 0x3B8 + +gUnknown_8EAB6C4:: @ 8EAB6C4 + .incbin "baserom.gba", 0xEAB6C4, 0x200 + +gUnknown_8EAB8C4:: @ 8EAB8C4 + .incbin "baserom.gba", 0xEAB8C4, 0x1ACC + +gUnknown_8EAD390:: @ 8EAD390 + .incbin "baserom.gba", 0xEAD390, 0x258 + +gUnknown_8EAD5E8:: @ 8EAD5E8 + .incbin "baserom.gba", 0xEAD5E8, 0x20 + +gUnknown_8EAD608:: @ 8EAD608 + .incbin "baserom.gba", 0xEAD608, 0x8DC + +gUnknown_8EADEE4:: @ 8EADEE4 + .incbin "baserom.gba", 0xEADEE4, 0x1B0 + +gUnknown_8EAE094:: @ 8EAE094 + .incbin "baserom.gba", 0xEAE094, 0x20 + +gUnknown_8EAE0B4:: @ 8EAE0B4 + .incbin "baserom.gba", 0xEAE0B4, 0x2C0 + +gUnknown_8EAE374:: @ 8EAE374 + .incbin "baserom.gba", 0xEAE374, 0x114 + +gUnknown_8EAE488:: @ 8EAE488 + .incbin "baserom.gba", 0xEAE488, 0x598 + +gUnknown_8EAEA20:: @ 8EAEA20 + .incbin "baserom.gba", 0xEAEA20, 0x60 + +gUnknown_8EAEA80:: @ 8EAEA80 + .incbin "baserom.gba", 0xEAEA80, 0x1420 + +gUnknown_8EAFEA0:: @ 8EAFEA0 + .incbin "baserom.gba", 0xEAFEA0, 0x120 + +gUnknown_8EAFFC0:: @ 8EAFFC0 + .incbin "baserom.gba", 0xEAFFC0, 0xB1C + +gUnknown_8EB0ADC:: @ 8EB0ADC + .incbin "baserom.gba", 0xEB0ADC diff --git a/data/librfu_rodata.s b/data/librfu_rodata.s new file mode 100644 index 000000000..867a1a17c --- /dev/null +++ b/data/librfu_rodata.s @@ -0,0 +1,10 @@ + .section .rodata + +gUnknown_86FC03C:: @ 86FC03C + .incbin "baserom.gba", 0x6FC03C, 0x2C + +gUnknown_86FC068:: @ 86FC068 + .incbin "baserom.gba", 0x6FC068, 0xC + +gUnknown_86FC074:: @ 86FC074 + .incbin "baserom.gba", 0x6FC074, 0x18 diff --git a/data/multiboot_berry_glitch_fix.s b/data/multiboot_berry_glitch_fix.s new file mode 100644 index 000000000..0e4bcf384 --- /dev/null +++ b/data/multiboot_berry_glitch_fix.s @@ -0,0 +1,5 @@ + .section .rodata + +gMultiBootProgram_BerryGlitchFix_Start:: @ 86FFC6C + .incbin "baserom.gba", 0x6FFC6C, 0x3BF4 +gMultiBootProgram_BerryGlitchFix_End:: diff --git a/data/multiboot_pokemon_colosseum.s b/data/multiboot_pokemon_colosseum.s new file mode 100644 index 000000000..64df89692 --- /dev/null +++ b/data/multiboot_pokemon_colosseum.s @@ -0,0 +1,5 @@ + .section .rodata + +gMultiBootProgram_PokemonColosseum_Start:: @ 8703860 + .incbin "baserom.gba", 0x703860, 0x28000 +gMultiBootProgram_PokemonColosseum_End:: diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s new file mode 100644 index 000000000..76b7ab5a5 --- /dev/null +++ b/data/mystery_event_script_cmd_table.s @@ -0,0 +1,4 @@ + .section script_data, "aw", %progbits + +gUnknown_81DBCF0:: @ 81DBCF0 + .incbin "baserom.gba", 0x1DBCF0, 0x44 diff --git a/data/sound_data.s b/data/sound_data.s new file mode 100644 index 000000000..8991dd7bf --- /dev/null +++ b/data/sound_data.s @@ -0,0 +1,37 @@ + .section .rodata + +voicegroup_pokemon_cry:: @ 8489C8C + .incbin "baserom.gba", 0x489C8C, 0x2C88 + +gUnknown_848C914:: @ 848C914 + .incbin "baserom.gba", 0x48C914, 0x600 + +gUnknown_848CF14:: @ 848CF14 + .incbin "baserom.gba", 0x48CF14, 0x600 + +gUnknown_848D514:: @ 848D514 + .incbin "baserom.gba", 0x48D514, 0x600 + +gUnknown_848DB14:: @ 848DB14 + .incbin "baserom.gba", 0x48DB14, 0x30 + +gUnknown_848DB44:: @ 848DB44 + .incbin "baserom.gba", 0x48DB44, 0x600 + +gUnknown_848E144:: @ 848E144 + .incbin "baserom.gba", 0x48E144, 0x600 + +gUnknown_848E744:: @ 848E744 + .incbin "baserom.gba", 0x48E744, 0x600 + +gUnknown_848ED44:: @ 848ED44 + .incbin "baserom.gba", 0x48ED44, 0x14558 + +gMPlayTable:: @ 84A329C + .incbin "baserom.gba", 0x4A329C, 0x30 + +gSongTable:: @ 84A32CC + .incbin "baserom.gba", 0x4A32CC, 0x243840 + +gUnknown_86E6B0C:: @ 86E6B0C + .incbin "baserom.gba", 0x6E6B0C, 0x15398 diff --git a/data/unknown_serial_data.s b/data/unknown_serial_data.s new file mode 100644 index 000000000..57c979340 --- /dev/null +++ b/data/unknown_serial_data.s @@ -0,0 +1,5 @@ + .section .rodata + +gUnknownSerialData_Start:: @ 86FC50C + .incbin "baserom.gba", 0x6FC50C, 0x3760 +gUnknownSerialData_End:: diff --git a/firered.sha1 b/firered.sha1 new file mode 100644 index 000000000..a4d3b2fe2 --- /dev/null +++ b/firered.sha1 @@ -0,0 +1 @@ +41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc pokefirered.gba diff --git a/include/gba/defines.h b/include/gba/defines.h new file mode 100644 index 000000000..7fd429d9e --- /dev/null +++ b/include/gba/defines.h @@ -0,0 +1,62 @@ +#ifndef GUARD_GBA_DEFINES +#define GUARD_GBA_DEFINES + +#include + +#define TRUE 1 +#define FALSE 0 + +#define IWRAM_DATA __attribute__((section("iwram_data"))) +#define EWRAM_DATA __attribute__((section("ewram_data"))) + +#define ALIGNED(n) __attribute__((aligned(n))) + +#define SOUND_INFO_PTR (*(struct SoundInfo **)0x3007FF0) +#define INTR_CHECK (*(u16 *)0x3007FF8) +#define INTR_VECTOR (*(void **)0x3007FFC) + +#define PLTT 0x5000000 +#define PLTT_SIZE 0x400 + +#define BG_PLTT PLTT +#define BG_PLTT_SIZE 0x200 + +#define OBJ_PLTT (PLTT + 0x200) +#define OBJ_PLTT_SIZE 0x200 + +#define VRAM 0x6000000 +#define VRAM_SIZE 0x18000 + +#define BG_VRAM VRAM +#define BG_VRAM_SIZE 0x10000 +#define BG_CHAR_ADDR(n) (void *)(BG_VRAM + (0x4000 * (n))) +#define BG_SCREEN_ADDR(n) (void *)(BG_VRAM + (0x800 * (n))) +#define BG_TILE_ADDR(n) (void *)(BG_VRAM + (0x80 * (n))) + +// text-mode BG +#define OBJ_VRAM0 (void *)(VRAM + 0x10000) +#define OBJ_VRAM0_SIZE 0x8000 + +// bitmap-mode BG +#define OBJ_VRAM1 (void *)(VRAM + 0x14000) +#define OBJ_VRAM1_SIZE 0x4000 + +#define OAM 0x7000000 +#define OAM_SIZE 0x400 + +#define DISPLAY_WIDTH 240 +#define DISPLAY_HEIGHT 160 + +#define TILE_SIZE_4BPP 32 +#define TILE_SIZE_8BPP 64 + +#define TOTAL_OBJ_TILE_COUNT 1024 + +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) + +#define RGB_BLACK RGB(0, 0, 0) +#define RGB_WHITE RGB(31, 31, 31) + +#define WIN_RANGE(a, b) (((a) << 8) | (b)) + +#endif // GUARD_GBA_DEFINES diff --git a/include/gba/flash_internal.h b/include/gba/flash_internal.h new file mode 100644 index 000000000..39e14ef73 --- /dev/null +++ b/include/gba/flash_internal.h @@ -0,0 +1,83 @@ +#ifndef GUARD_GBA_FLASH_INTERNAL_H +#define GUARD_GBA_FLASH_INTERNAL_H + +#define FLASH_BASE ((u8 *)0xE000000) + +#define FLASH_WRITE(addr, data) ((*(vu8 *)(FLASH_BASE + (addr))) = (data)) + +#define FLASH_ROM_SIZE_1M 131072 // 1 megabit ROM + +#define SECTORS_PER_BANK 16 + +struct FlashSector +{ + u32 size; + u8 shift; + u16 count; + u16 top; +}; + +struct FlashType { + u32 romSize; + struct FlashSector sector; + u16 wait[2]; // game pak bus read/write wait + + // TODO: add support for anonymous unions/structs if possible + union { + struct { + u8 makerId; + u8 deviceId; + } separate; + u16 joined; + } ids; +}; + +struct FlashSetupInfo +{ + u16 (*programFlashByte)(u16, u32, u8); + u16 (*programFlashSector)(u16, void *); + u16 (*eraseFlashChip)(void); + u16 (*eraseFlashSector)(u16); + u16 (*WaitForFlashWrite)(u8, u8 *, u8); + const u16 *maxTime; + struct FlashType type; +}; + +extern u16 gFlashNumRemainingBytes; + +extern u16 (*ProgramFlashByte)(u16, u32, u8); +extern u16 (*ProgramFlashSector)(u16, void *); +extern u16 (*EraseFlashChip)(void); +extern u16 (*EraseFlashSector)(u16); +extern u16 (*WaitForFlashWrite)(u8, u8 *, u8); +extern const u16 *gFlashMaxTime; +extern const struct FlashType *gFlash; + +extern u8 (*PollFlashStatus)(u8 *); +extern u8 gFlashTimeoutFlag; + +extern const struct FlashSetupInfo MX29L010; +extern const struct FlashSetupInfo LE26FV10N1TS; +extern const struct FlashSetupInfo DefaultFlash; + +void SwitchFlashBank(u8 bankNum); +u16 ReadFlashId(void); +void StartFlashTimer(u8 phase); +void SetReadFlash1(u16 *dest); +void StopFlashTimer(void); +u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)); +u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src); +void ReadFlash(u16 sectorNum, u32 offset, void *dest, u32 size); +u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, void *dataSrc, u32 n); + +u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData); + +u16 EraseFlashChip_MX(void); +u16 EraseFlashSector_MX(u16 sectorNum); +u16 ProgramFlashByte_MX(u16 sectorNum, u32 offset, u8 data); +u16 ProgramFlashSector_MX(u16 sectorNum, void *src); + +// agb_flash_1m +u16 IdentifyFlash(void); + +#endif // GUARD_GBA_FLASH_INTERNAL_H diff --git a/include/gba/gba.h b/include/gba/gba.h new file mode 100644 index 000000000..42ae3cdde --- /dev/null +++ b/include/gba/gba.h @@ -0,0 +1,11 @@ +#ifndef GUARD_GBA_GBA_H +#define GUARD_GBA_GBA_H + +#include "gba/defines.h" +#include "gba/io_reg.h" +#include "gba/types.h" +#include "gba/multiboot.h" +#include "gba/syscall.h" +#include "gba/macro.h" + +#endif // GUARD_GBA_GBA_H diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h new file mode 100644 index 000000000..6dbe5e8ed --- /dev/null +++ b/include/gba/io_reg.h @@ -0,0 +1,727 @@ +#ifndef GUARD_GBA_IO_REG_H +#define GUARD_GBA_IO_REG_H + +#define REG_BASE 0x4000000 // I/O register base address + +// I/O register offsets + +#define REG_OFFSET_DISPCNT 0x0 +#define REG_OFFSET_DISPSTAT 0x4 +#define REG_OFFSET_VCOUNT 0x6 +#define REG_OFFSET_BG0CNT 0x8 +#define REG_OFFSET_BG1CNT 0xa +#define REG_OFFSET_BG2CNT 0xc +#define REG_OFFSET_BG3CNT 0xe +#define REG_OFFSET_BG0HOFS 0x10 +#define REG_OFFSET_BG0VOFS 0x12 +#define REG_OFFSET_BG1HOFS 0x14 +#define REG_OFFSET_BG1VOFS 0x16 +#define REG_OFFSET_BG2HOFS 0x18 +#define REG_OFFSET_BG2VOFS 0x1a +#define REG_OFFSET_BG3HOFS 0x1c +#define REG_OFFSET_BG3VOFS 0x1e +#define REG_OFFSET_BG2PA 0x20 +#define REG_OFFSET_BG2PB 0x22 +#define REG_OFFSET_BG2PC 0x24 +#define REG_OFFSET_BG2PD 0x26 +#define REG_OFFSET_BG2X 0x28 +#define REG_OFFSET_BG2X_L 0x28 +#define REG_OFFSET_BG2X_H 0x2a +#define REG_OFFSET_BG2Y 0x2c +#define REG_OFFSET_BG2Y_L 0x2c +#define REG_OFFSET_BG2Y_H 0x2e +#define REG_OFFSET_BG3PA 0x30 +#define REG_OFFSET_BG3PB 0x32 +#define REG_OFFSET_BG3PC 0x34 +#define REG_OFFSET_BG3PD 0x36 +#define REG_OFFSET_BG3X 0x38 +#define REG_OFFSET_BG3X_L 0x38 +#define REG_OFFSET_BG3X_H 0x3a +#define REG_OFFSET_BG3Y 0x3c +#define REG_OFFSET_BG3Y_L 0x3c +#define REG_OFFSET_BG3Y_H 0x3e +#define REG_OFFSET_WIN0H 0x40 +#define REG_OFFSET_WIN1H 0x42 +#define REG_OFFSET_WIN0V 0x44 +#define REG_OFFSET_WIN1V 0x46 +#define REG_OFFSET_WININ 0x48 +#define REG_OFFSET_WINOUT 0x4a +#define REG_OFFSET_MOSAIC 0x4c +#define REG_OFFSET_BLDCNT 0x50 +#define REG_OFFSET_BLDALPHA 0x52 +#define REG_OFFSET_BLDY 0x54 + +#define REG_OFFSET_SOUND1CNT_L 0x60 +#define REG_OFFSET_NR10 0x60 +#define REG_OFFSET_SOUND1CNT_H 0x62 +#define REG_OFFSET_NR11 0x62 +#define REG_OFFSET_NR12 0x63 +#define REG_OFFSET_SOUND1CNT_X 0x64 +#define REG_OFFSET_NR13 0x64 +#define REG_OFFSET_NR14 0x65 +#define REG_OFFSET_SOUND2CNT_L 0x68 +#define REG_OFFSET_NR21 0x68 +#define REG_OFFSET_NR22 0x69 +#define REG_OFFSET_SOUND2CNT_H 0x6c +#define REG_OFFSET_NR23 0x6c +#define REG_OFFSET_NR24 0x6d +#define REG_OFFSET_SOUND3CNT_L 0x70 +#define REG_OFFSET_NR30 0x70 +#define REG_OFFSET_SOUND3CNT_H 0x72 +#define REG_OFFSET_NR31 0x72 +#define REG_OFFSET_NR32 0x73 +#define REG_OFFSET_SOUND3CNT_X 0x74 +#define REG_OFFSET_NR33 0x74 +#define REG_OFFSET_NR34 0x75 +#define REG_OFFSET_SOUND4CNT_L 0x78 +#define REG_OFFSET_NR41 0x78 +#define REG_OFFSET_NR42 0x79 +#define REG_OFFSET_SOUND4CNT_H 0x7c +#define REG_OFFSET_NR43 0x7c +#define REG_OFFSET_NR44 0x7d +#define REG_OFFSET_SOUNDCNT_L 0x80 +#define REG_OFFSET_NR50 0x80 +#define REG_OFFSET_NR51 0x81 +#define REG_OFFSET_SOUNDCNT_H 0x82 +#define REG_OFFSET_SOUNDCNT_X 0x84 +#define REG_OFFSET_NR52 0x84 +#define REG_OFFSET_SOUNDBIAS 0x88 +#define REG_OFFSET_SOUNDBIAS_L 0x88 +#define REG_OFFSET_SOUNDBIAS_H 0x89 +#define REG_OFFSET_WAVE_RAM0 0x90 +#define REG_OFFSET_WAVE_RAM1 0x94 +#define REG_OFFSET_WAVE_RAM2 0x98 +#define REG_OFFSET_WAVE_RAM3 0x9c +#define REG_OFFSET_FIFO_A 0xa0 +#define REG_OFFSET_FIFO_B 0xa4 + +#define REG_OFFSET_DMA0 0xb0 +#define REG_OFFSET_DMA0SAD 0xb0 +#define REG_OFFSET_DMA0SAD_L 0xb0 +#define REG_OFFSET_DMA0SAD_H 0xb2 +#define REG_OFFSET_DMA0DAD 0xb4 +#define REG_OFFSET_DMA0DAD_L 0xb4 +#define REG_OFFSET_DMA0DAD_H 0xb6 +#define REG_OFFSET_DMA0CNT 0xb8 +#define REG_OFFSET_DMA0CNT_L 0xb8 +#define REG_OFFSET_DMA0CNT_H 0xba +#define REG_OFFSET_DMA1 0xbc +#define REG_OFFSET_DMA1SAD 0xbc +#define REG_OFFSET_DMA1SAD_L 0xbc +#define REG_OFFSET_DMA1SAD_H 0xbe +#define REG_OFFSET_DMA1DAD 0xc0 +#define REG_OFFSET_DMA1DAD_L 0xc0 +#define REG_OFFSET_DMA1DAD_H 0xc2 +#define REG_OFFSET_DMA1CNT 0xc4 +#define REG_OFFSET_DMA1CNT_L 0xc4 +#define REG_OFFSET_DMA1CNT_H 0xc6 +#define REG_OFFSET_DMA2 0xc8 +#define REG_OFFSET_DMA2SAD 0xc8 +#define REG_OFFSET_DMA2SAD_L 0xc8 +#define REG_OFFSET_DMA2SAD_H 0xca +#define REG_OFFSET_DMA2DAD 0xcc +#define REG_OFFSET_DMA2DAD_L 0xcc +#define REG_OFFSET_DMA2DAD_H 0xce +#define REG_OFFSET_DMA2CNT 0xd0 +#define REG_OFFSET_DMA2CNT_L 0xd0 +#define REG_OFFSET_DMA2CNT_H 0xd2 +#define REG_OFFSET_DMA3 0xd4 +#define REG_OFFSET_DMA3SAD 0xd4 +#define REG_OFFSET_DMA3SAD_L 0xd4 +#define REG_OFFSET_DMA3SAD_H 0xd6 +#define REG_OFFSET_DMA3DAD 0xd8 +#define REG_OFFSET_DMA3DAD_L 0xd8 +#define REG_OFFSET_DMA3DAD_H 0xda +#define REG_OFFSET_DMA3CNT 0xdc +#define REG_OFFSET_DMA3CNT_L 0xdc +#define REG_OFFSET_DMA3CNT_H 0xde + +#define REG_OFFSET_TMCNT 0x100 +#define REG_OFFSET_TM0CNT 0x100 +#define REG_OFFSET_TM0CNT_L 0x100 +#define REG_OFFSET_TM0CNT_H 0x102 +#define REG_OFFSET_TM1CNT 0x104 +#define REG_OFFSET_TM1CNT_L 0x104 +#define REG_OFFSET_TM1CNT_H 0x106 +#define REG_OFFSET_TM2CNT 0x108 +#define REG_OFFSET_TM2CNT_L 0x108 +#define REG_OFFSET_TM2CNT_H 0x10a +#define REG_OFFSET_TM3CNT 0x10c +#define REG_OFFSET_TM3CNT_L 0x10c +#define REG_OFFSET_TM3CNT_H 0x10e + +#define REG_OFFSET_SIOCNT 0x128 +#define REG_OFFSET_SIODATA8 0x12a +#define REG_OFFSET_SIODATA32 0x120 +#define REG_OFFSET_SIOMLT_SEND 0x12a +#define REG_OFFSET_SIOMLT_RECV 0x120 +#define REG_OFFSET_SIOMULTI0 0x120 +#define REG_OFFSET_SIOMULTI1 0x122 +#define REG_OFFSET_SIOMULTI2 0x124 +#define REG_OFFSET_SIOMULTI3 0x126 + +#define REG_OFFSET_KEYINPUT 0x130 +#define REG_OFFSET_KEYCNT 0x132 + +#define REG_OFFSET_RCNT 0x134 + +#define REG_OFFSET_JOYCNT 0x140 +#define REG_OFFSET_JOYSTAT 0x158 +#define REG_OFFSET_JOY_RECV 0x150 +#define REG_OFFSET_JOY_RECV_L 0x150 +#define REG_OFFSET_JOY_RECV_H 0x152 +#define REG_OFFSET_JOY_TRANS 0x154 +#define REG_OFFSET_JOY_TRANS_L 0x154 +#define REG_OFFSET_JOY_TRANS_H 0x156 + +#define REG_OFFSET_IME 0x208 +#define REG_OFFSET_IE 0x200 +#define REG_OFFSET_IF 0x202 + +#define REG_OFFSET_WAITCNT 0x204 + +// I/O register addresses + +#define REG_ADDR_DISPCNT (REG_BASE + REG_OFFSET_DISPCNT) +#define REG_ADDR_DISPSTAT (REG_BASE + REG_OFFSET_DISPSTAT) +#define REG_ADDR_VCOUNT (REG_BASE + REG_OFFSET_VCOUNT) +#define REG_ADDR_BG0CNT (REG_BASE + REG_OFFSET_BG0CNT) +#define REG_ADDR_BG1CNT (REG_BASE + REG_OFFSET_BG1CNT) +#define REG_ADDR_BG2CNT (REG_BASE + REG_OFFSET_BG2CNT) +#define REG_ADDR_BG3CNT (REG_BASE + REG_OFFSET_BG3CNT) +#define REG_ADDR_BG0HOFS (REG_BASE + REG_OFFSET_BG0HOFS) +#define REG_ADDR_BG0VOFS (REG_BASE + REG_OFFSET_BG0VOFS) +#define REG_ADDR_BG1HOFS (REG_BASE + REG_OFFSET_BG1HOFS) +#define REG_ADDR_BG1VOFS (REG_BASE + REG_OFFSET_BG1VOFS) +#define REG_ADDR_BG2HOFS (REG_BASE + REG_OFFSET_BG2HOFS) +#define REG_ADDR_BG2VOFS (REG_BASE + REG_OFFSET_BG2VOFS) +#define REG_ADDR_BG3HOFS (REG_BASE + REG_OFFSET_BG3HOFS) +#define REG_ADDR_BG3VOFS (REG_BASE + REG_OFFSET_BG3VOFS) +#define REG_ADDR_BG2PA (REG_BASE + REG_OFFSET_BG2PA) +#define REG_ADDR_BG2PB (REG_BASE + REG_OFFSET_BG2PB) +#define REG_ADDR_BG2PC (REG_BASE + REG_OFFSET_BG2PC) +#define REG_ADDR_BG2PD (REG_BASE + REG_OFFSET_BG2PD) +#define REG_ADDR_BG2X (REG_BASE + REG_OFFSET_BG2X) +#define REG_ADDR_BG2X_L (REG_BASE + REG_OFFSET_BG2X_L) +#define REG_ADDR_BG2X_H (REG_BASE + REG_OFFSET_BG2X_H) +#define REG_ADDR_BG2Y (REG_BASE + REG_OFFSET_BG2Y) +#define REG_ADDR_BG2Y_L (REG_BASE + REG_OFFSET_BG2Y_L) +#define REG_ADDR_BG2Y_H (REG_BASE + REG_OFFSET_BG2Y_H) +#define REG_ADDR_BG3PA (REG_BASE + REG_OFFSET_BG3PA) +#define REG_ADDR_BG3PB (REG_BASE + REG_OFFSET_BG3PB) +#define REG_ADDR_BG3PC (REG_BASE + REG_OFFSET_BG3PC) +#define REG_ADDR_BG3PD (REG_BASE + REG_OFFSET_BG3PD) +#define REG_ADDR_BG3X (REG_BASE + REG_OFFSET_BG3X) +#define REG_ADDR_BG3X_L (REG_BASE + REG_OFFSET_BG3X_L) +#define REG_ADDR_BG3X_H (REG_BASE + REG_OFFSET_BG3X_H) +#define REG_ADDR_BG3Y (REG_BASE + REG_OFFSET_BG3Y) +#define REG_ADDR_BG3Y_L (REG_BASE + REG_OFFSET_BG3Y_L) +#define REG_ADDR_BG3Y_H (REG_BASE + REG_OFFSET_BG3Y_H) +#define REG_ADDR_WIN0H (REG_BASE + REG_OFFSET_WIN0H) +#define REG_ADDR_WIN1H (REG_BASE + REG_OFFSET_WIN1H) +#define REG_ADDR_WIN0V (REG_BASE + REG_OFFSET_WIN0V) +#define REG_ADDR_WIN1V (REG_BASE + REG_OFFSET_WIN1V) +#define REG_ADDR_WININ (REG_BASE + REG_OFFSET_WININ) +#define REG_ADDR_WINOUT (REG_BASE + REG_OFFSET_WINOUT) +#define REG_ADDR_MOSAIC (REG_BASE + REG_OFFSET_MOSAIC) +#define REG_ADDR_BLDCNT (REG_BASE + REG_OFFSET_BLDCNT) +#define REG_ADDR_BLDALPHA (REG_BASE + REG_OFFSET_BLDALPHA) +#define REG_ADDR_BLDY (REG_BASE + REG_OFFSET_BLDY) + +#define REG_ADDR_SOUND1CNT_L (REG_BASE + REG_OFFSET_SOUND1CNT_L) +#define REG_ADDR_NR10 (REG_BASE + REG_OFFSET_NR10) +#define REG_ADDR_SOUND1CNT_H (REG_BASE + REG_OFFSET_SOUND1CNT_H) +#define REG_ADDR_NR11 (REG_BASE + REG_OFFSET_NR11) +#define REG_ADDR_NR12 (REG_BASE + REG_OFFSET_NR12) +#define REG_ADDR_SOUND1CNT_X (REG_BASE + REG_OFFSET_SOUND1CNT_X) +#define REG_ADDR_NR13 (REG_BASE + REG_OFFSET_NR13) +#define REG_ADDR_NR14 (REG_BASE + REG_OFFSET_NR14) +#define REG_ADDR_SOUND2CNT_L (REG_BASE + REG_OFFSET_SOUND2CNT_L) +#define REG_ADDR_NR21 (REG_BASE + REG_OFFSET_NR21) +#define REG_ADDR_NR22 (REG_BASE + REG_OFFSET_NR22) +#define REG_ADDR_SOUND2CNT_H (REG_BASE + REG_OFFSET_SOUND2CNT_H) +#define REG_ADDR_NR23 (REG_BASE + REG_OFFSET_NR23) +#define REG_ADDR_NR24 (REG_BASE + REG_OFFSET_NR24) +#define REG_ADDR_SOUND3CNT_L (REG_BASE + REG_OFFSET_SOUND3CNT_L) +#define REG_ADDR_NR30 (REG_BASE + REG_OFFSET_NR30) +#define REG_ADDR_SOUND3CNT_H (REG_BASE + REG_OFFSET_SOUND3CNT_H) +#define REG_ADDR_NR31 (REG_BASE + REG_OFFSET_NR31) +#define REG_ADDR_NR32 (REG_BASE + REG_OFFSET_NR32) +#define REG_ADDR_SOUND3CNT_X (REG_BASE + REG_OFFSET_SOUND3CNT_X) +#define REG_ADDR_NR33 (REG_BASE + REG_OFFSET_NR33) +#define REG_ADDR_NR34 (REG_BASE + REG_OFFSET_NR34) +#define REG_ADDR_SOUND4CNT_L (REG_BASE + REG_OFFSET_SOUND4CNT_L) +#define REG_ADDR_NR41 (REG_BASE + REG_OFFSET_NR41) +#define REG_ADDR_NR42 (REG_BASE + REG_OFFSET_NR42) +#define REG_ADDR_SOUND4CNT_H (REG_BASE + REG_OFFSET_SOUND4CNT_H) +#define REG_ADDR_NR43 (REG_BASE + REG_OFFSET_NR43) +#define REG_ADDR_NR44 (REG_BASE + REG_OFFSET_NR44) +#define REG_ADDR_SOUNDCNT_L (REG_BASE + REG_OFFSET_SOUNDCNT_L) +#define REG_ADDR_NR50 (REG_BASE + REG_OFFSET_NR50) +#define REG_ADDR_NR51 (REG_BASE + REG_OFFSET_NR51) +#define REG_ADDR_SOUNDCNT_H (REG_BASE + REG_OFFSET_SOUNDCNT_H) +#define REG_ADDR_SOUNDCNT_X (REG_BASE + REG_OFFSET_SOUNDCNT_X) +#define REG_ADDR_NR52 (REG_BASE + REG_OFFSET_NR52) +#define REG_ADDR_SOUNDBIAS (REG_BASE + REG_OFFSET_SOUNDBIAS) +#define REG_ADDR_SOUNDBIAS_L (REG_BASE + REG_OFFSET_SOUNDBIAS_L) +#define REG_ADDR_SOUNDBIAS_H (REG_BASE + REG_OFFSET_SOUNDBIAS_H) +#define REG_ADDR_WAVE_RAM0 (REG_BASE + REG_OFFSET_WAVE_RAM0) +#define REG_ADDR_WAVE_RAM1 (REG_BASE + REG_OFFSET_WAVE_RAM1) +#define REG_ADDR_WAVE_RAM2 (REG_BASE + REG_OFFSET_WAVE_RAM2) +#define REG_ADDR_WAVE_RAM3 (REG_BASE + REG_OFFSET_WAVE_RAM3) +#define REG_ADDR_FIFO_A (REG_BASE + REG_OFFSET_FIFO_A) +#define REG_ADDR_FIFO_B (REG_BASE + REG_OFFSET_FIFO_B) + +#define REG_ADDR_DMA0 (REG_BASE + REG_OFFSET_DMA0) +#define REG_ADDR_DMA0SAD (REG_BASE + REG_OFFSET_DMA0SAD) +#define REG_ADDR_DMA0DAD (REG_BASE + REG_OFFSET_DMA0DAD) +#define REG_ADDR_DMA0CNT (REG_BASE + REG_OFFSET_DMA0CNT) +#define REG_ADDR_DMA0CNT_L (REG_BASE + REG_OFFSET_DMA0CNT_L) +#define REG_ADDR_DMA0CNT_H (REG_BASE + REG_OFFSET_DMA0CNT_H) +#define REG_ADDR_DMA1 (REG_BASE + REG_OFFSET_DMA1) +#define REG_ADDR_DMA1SAD (REG_BASE + REG_OFFSET_DMA1SAD) +#define REG_ADDR_DMA1DAD (REG_BASE + REG_OFFSET_DMA1DAD) +#define REG_ADDR_DMA1CNT (REG_BASE + REG_OFFSET_DMA1CNT) +#define REG_ADDR_DMA1CNT_L (REG_BASE + REG_OFFSET_DMA1CNT_L) +#define REG_ADDR_DMA1CNT_H (REG_BASE + REG_OFFSET_DMA1CNT_H) +#define REG_ADDR_DMA2 (REG_BASE + REG_OFFSET_DMA2) +#define REG_ADDR_DMA2SAD (REG_BASE + REG_OFFSET_DMA2SAD) +#define REG_ADDR_DMA2DAD (REG_BASE + REG_OFFSET_DMA2DAD) +#define REG_ADDR_DMA2CNT (REG_BASE + REG_OFFSET_DMA2CNT) +#define REG_ADDR_DMA2CNT_L (REG_BASE + REG_OFFSET_DMA2CNT_L) +#define REG_ADDR_DMA2CNT_H (REG_BASE + REG_OFFSET_DMA2CNT_H) +#define REG_ADDR_DMA3 (REG_BASE + REG_OFFSET_DMA3) +#define REG_ADDR_DMA3SAD (REG_BASE + REG_OFFSET_DMA3SAD) +#define REG_ADDR_DMA3DAD (REG_BASE + REG_OFFSET_DMA3DAD) +#define REG_ADDR_DMA3CNT (REG_BASE + REG_OFFSET_DMA3CNT) +#define REG_ADDR_DMA3CNT_L (REG_BASE + REG_OFFSET_DMA3CNT_L) +#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H) + +#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT) +#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT) +#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L) +#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H) +#define REG_ADDR_TM1CNT (REG_BASE + REG_OFFSET_TM1CNT) +#define REG_ADDR_TM1CNT_L (REG_BASE + REG_OFFSET_TM1CNT_L) +#define REG_ADDR_TM1CNT_H (REG_BASE + REG_OFFSET_TM1CNT_H) +#define REG_ADDR_TM2CNT (REG_BASE + REG_OFFSET_TM2CNT) +#define REG_ADDR_TM2CNT_L (REG_BASE + REG_OFFSET_TM2CNT_L) +#define REG_ADDR_TM2CNT_H (REG_BASE + REG_OFFSET_TM2CNT_H) +#define REG_ADDR_TM3CNT (REG_BASE + REG_OFFSET_TM3CNT) +#define REG_ADDR_TM3CNT_L (REG_BASE + REG_OFFSET_TM3CNT_L) +#define REG_ADDR_TM3CNT_H (REG_BASE + REG_OFFSET_TM3CNT_H) + +#define REG_ADDR_SIOCNT (REG_BASE + REG_OFFSET_SIOCNT) +#define REG_ADDR_SIODATA8 (REG_BASE + REG_OFFSET_SIODATA8) +#define REG_ADDR_SIODATA32 (REG_BASE + REG_OFFSET_SIODATA32) +#define REG_ADDR_SIOMLT_SEND (REG_BASE + REG_OFFSET_SIOMLT_SEND) +#define REG_ADDR_SIOMLT_RECV (REG_BASE + REG_OFFSET_SIOMLT_RECV) +#define REG_ADDR_SIOMULTI0 (REG_BASE + REG_OFFSET_SIOMULTI0) +#define REG_ADDR_SIOMULTI1 (REG_BASE + REG_OFFSET_SIOMULTI1) +#define REG_ADDR_SIOMULTI2 (REG_BASE + REG_OFFSET_SIOMULTI2) +#define REG_ADDR_SIOMULTI3 (REG_BASE + REG_OFFSET_SIOMULTI3) + +#define REG_ADDR_KEYINPUT (REG_BASE + REG_OFFSET_KEYINPUT) +#define REG_ADDR_KEYCNT (REG_BASE + REG_OFFSET_KEYCNT) + +#define REG_ADDR_RCNT (REG_BASE + REG_OFFSET_RCNT) + +#define REG_ADDR_JOYCNT (REG_BASE + REG_OFFSET_JOYCNT) +#define REG_ADDR_JOYSTAT (REG_BASE + REG_OFFSET_JOYSTAT) +#define REG_ADDR_JOY_RECV (REG_BASE + REG_OFFSET_JOY_RECV) +#define REG_ADDR_JOY_RECV_L (REG_BASE + REG_OFFSET_JOY_RECV_L) +#define REG_ADDR_JOY_RECV_H (REG_BASE + REG_OFFSET_JOY_RECV_H) +#define REG_ADDR_JOY_TRANS (REG_BASE + REG_OFFSET_JOY_TRANS) +#define REG_ADDR_JOY_TRANS_L (REG_BASE + REG_OFFSET_JOY_TRANS_L) +#define REG_ADDR_JOY_TRANS_H (REG_BASE + REG_OFFSET_JOY_TRANS_H) + +#define REG_ADDR_IME (REG_BASE + REG_OFFSET_IME) +#define REG_ADDR_IE (REG_BASE + REG_OFFSET_IE) +#define REG_ADDR_IF (REG_BASE + REG_OFFSET_IF) + +#define REG_ADDR_WAITCNT (REG_BASE + REG_OFFSET_WAITCNT) + +// I/O registers + +#define REG_DISPCNT (*(vu16 *)REG_ADDR_DISPCNT) +#define REG_DISPSTAT (*(vu16 *)REG_ADDR_DISPSTAT) +#define REG_VCOUNT (*(vu16 *)REG_ADDR_VCOUNT) +#define REG_BG0CNT (*(vu16 *)REG_ADDR_BG0CNT) +#define REG_BG1CNT (*(vu16 *)REG_ADDR_BG1CNT) +#define REG_BG2CNT (*(vu16 *)REG_ADDR_BG2CNT) +#define REG_BG3CNT (*(vu16 *)REG_ADDR_BG3CNT) +#define REG_BG0HOFS (*(vu16 *)REG_ADDR_BG0HOFS) +#define REG_BG0VOFS (*(vu16 *)REG_ADDR_BG0VOFS) +#define REG_BG1HOFS (*(vu16 *)REG_ADDR_BG1HOFS) +#define REG_BG1VOFS (*(vu16 *)REG_ADDR_BG1VOFS) +#define REG_BG2HOFS (*(vu16 *)REG_ADDR_BG2HOFS) +#define REG_BG2VOFS (*(vu16 *)REG_ADDR_BG2VOFS) +#define REG_BG3HOFS (*(vu16 *)REG_ADDR_BG3HOFS) +#define REG_BG3VOFS (*(vu16 *)REG_ADDR_BG3VOFS) +#define REG_BG2PA (*(vu16 *)REG_ADDR_BG2PA) +#define REG_BG2PB (*(vu16 *)REG_ADDR_BG2PB) +#define REG_BG2PC (*(vu16 *)REG_ADDR_BG2PC) +#define REG_BG2PD (*(vu16 *)REG_ADDR_BG2PD) +#define REG_BG2X (*(vu32 *)REG_ADDR_BG2X) +#define REG_BG2X_L (*(vu16 *)REG_ADDR_BG2X_L) +#define REG_BG2X_H (*(vu16 *)REG_ADDR_BG2X_H) +#define REG_BG2Y (*(vu32 *)REG_ADDR_BG2Y) +#define REG_BG2Y_L (*(vu16 *)REG_ADDR_BG2Y_L) +#define REG_BG2Y_H (*(vu16 *)REG_ADDR_BG2Y_H) +#define REG_BG3PA (*(vu16 *)REG_ADDR_BG3PA) +#define REG_BG3PB (*(vu16 *)REG_ADDR_BG3PB) +#define REG_BG3PC (*(vu16 *)REG_ADDR_BG3PC) +#define REG_BG3PD (*(vu16 *)REG_ADDR_BG3PD) +#define REG_BG3X (*(vu32 *)REG_ADDR_BG3X) +#define REG_BG3X_L (*(vu16 *)REG_ADDR_BG3X_L) +#define REG_BG3X_H (*(vu16 *)REG_ADDR_BG3X_H) +#define REG_BG3Y (*(vu32 *)REG_ADDR_BG3Y) +#define REG_BG3Y_L (*(vu16 *)REG_ADDR_BG3Y_L) +#define REG_BG3Y_H (*(vu16 *)REG_ADDR_BG3Y_H) +#define REG_WIN0H (*(vu16 *)REG_ADDR_WIN0H) +#define REG_WIN1H (*(vu16 *)REG_ADDR_WIN1H) +#define REG_WIN0V (*(vu16 *)REG_ADDR_WIN0V) +#define REG_WIN1V (*(vu16 *)REG_ADDR_WIN1V) +#define REG_WININ (*(vu16 *)REG_ADDR_WININ) +#define REG_WINOUT (*(vu16 *)REG_ADDR_WINOUT) +#define REG_MOSAIC (*(vu16 *)REG_ADDR_MOSAIC) +#define REG_BLDCNT (*(vu16 *)REG_ADDR_BLDCNT) +#define REG_BLDALPHA (*(vu16 *)REG_ADDR_BLDALPHA) +#define REG_BLDY (*(vu16 *)REG_ADDR_BLDY) + +#define REG_SOUND1CNT_L (*(vu16 *)REG_ADDR_SOUND1CNT_L) +#define REG_NR10 (*(vu8 *)REG_ADDR_NR10) +#define REG_SOUND1CNT_H (*(vu16 *)REG_ADDR_SOUND1CNT_H) +#define REG_NR11 (*(vu8 *)REG_ADDR_NR11) +#define REG_NR12 (*(vu8 *)REG_ADDR_NR12) +#define REG_SOUND1CNT_X (*(vu16 *)REG_ADDR_SOUND1CNT_X) +#define REG_NR13 (*(vu8 *)REG_ADDR_NR13) +#define REG_NR14 (*(vu8 *)REG_ADDR_NR14) +#define REG_SOUND2CNT_L (*(vu16 *)REG_ADDR_SOUND2CNT_L) +#define REG_NR21 (*(vu8 *)REG_ADDR_NR21) +#define REG_NR22 (*(vu8 *)REG_ADDR_NR22) +#define REG_SOUND2CNT_H (*(vu16 *)REG_ADDR_SOUND2CNT_H) +#define REG_NR23 (*(vu8 *)REG_ADDR_NR23) +#define REG_NR24 (*(vu8 *)REG_ADDR_NR24) +#define REG_SOUND3CNT_L (*(vu16 *)REG_ADDR_SOUND3CNT_L) +#define REG_NR30 (*(vu8 *)REG_ADDR_NR30) +#define REG_SOUND3CNT_H (*(vu16 *)REG_ADDR_SOUND3CNT_H) +#define REG_NR31 (*(vu8 *)REG_ADDR_NR31) +#define REG_NR32 (*(vu8 *)REG_ADDR_NR32) +#define REG_SOUND3CNT_X (*(vu16 *)REG_ADDR_SOUND3CNT_X) +#define REG_NR33 (*(vu8 *)REG_ADDR_NR33) +#define REG_NR34 (*(vu8 *)REG_ADDR_NR34) +#define REG_SOUND4CNT_L (*(vu16 *)REG_ADDR_SOUND4CNT_L) +#define REG_NR41 (*(vu8 *)REG_ADDR_NR41) +#define REG_NR42 (*(vu8 *)REG_ADDR_NR42) +#define REG_SOUND4CNT_H (*(vu16 *)REG_ADDR_SOUND4CNT_H) +#define REG_NR43 (*(vu8 *)REG_ADDR_NR43) +#define REG_NR44 (*(vu8 *)REG_ADDR_NR44) +#define REG_SOUNDCNT_L (*(vu16 *)REG_ADDR_SOUNDCNT_L) +#define REG_NR50 (*(vu8 *)REG_ADDR_NR50) +#define REG_NR51 (*(vu8 *)REG_ADDR_NR51) +#define REG_SOUNDCNT_H (*(vu16 *)REG_ADDR_SOUNDCNT_H) +#define REG_SOUNDCNT_X (*(vu16 *)REG_ADDR_SOUNDCNT_X) +#define REG_NR52 (*(vu8 *)REG_ADDR_NR52) +#define REG_SOUNDBIAS (*(vu16 *)REG_ADDR_SOUNDBIAS) +#define REG_SOUNDBIAS_L (*(vu8 *)REG_ADDR_SOUNDBIAS_L) +#define REG_SOUNDBIAS_H (*(vu8 *)REG_ADDR_SOUNDBIAS_H) +#define REG_WAVE_RAM0 (*(vu32 *)REG_ADDR_WAVE_RAM0) +#define REG_WAVE_RAM1 (*(vu32 *)REG_ADDR_WAVE_RAM1) +#define REG_WAVE_RAM2 (*(vu32 *)REG_ADDR_WAVE_RAM2) +#define REG_WAVE_RAM3 (*(vu32 *)REG_ADDR_WAVE_RAM3) +#define REG_FIFO_A (*(vu32 *)REG_ADDR_FIFO_A) +#define REG_FIFO_B (*(vu32 *)REG_ADDR_FIFO_B) + +#define REG_DMA0SAD (*(vu32 *)REG_ADDR_DMA0SAD) +#define REG_DMA0DAD (*(vu32 *)REG_ADDR_DMA0DAD) +#define REG_DMA0CNT (*(vu32 *)REG_ADDR_DMA0CNT) +#define REG_DMA0CNT_L (*(vu16 *)REG_ADDR_DMA0CNT_L) +#define REG_DMA0CNT_H (*(vu16 *)REG_ADDR_DMA0CNT_H) + +#define REG_DMA1SAD (*(vu32 *)REG_ADDR_DMA1SAD) +#define REG_DMA1DAD (*(vu32 *)REG_ADDR_DMA1DAD) +#define REG_DMA1CNT (*(vu32 *)REG_ADDR_DMA1CNT) +#define REG_DMA1CNT_L (*(vu16 *)REG_ADDR_DMA1CNT_L) +#define REG_DMA1CNT_H (*(vu16 *)REG_ADDR_DMA1CNT_H) + +#define REG_DMA2SAD (*(vu32 *)REG_ADDR_DMA2SAD) +#define REG_DMA2DAD (*(vu32 *)REG_ADDR_DMA2DAD) +#define REG_DMA2CNT (*(vu32 *)REG_ADDR_DMA2CNT) +#define REG_DMA2CNT_L (*(vu16 *)REG_ADDR_DMA2CNT_L) +#define REG_DMA2CNT_H (*(vu16 *)REG_ADDR_DMA2CNT_H) + +#define REG_DMA3SAD (*(vu32 *)REG_ADDR_DMA3SAD) +#define REG_DMA3DAD (*(vu32 *)REG_ADDR_DMA3DAD) +#define REG_DMA3CNT (*(vu32 *)REG_ADDR_DMA3CNT) +#define REG_DMA3CNT_L (*(vu16 *)REG_ADDR_DMA3CNT_L) +#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H) + +#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4))) +#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT) +#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L) +#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H) +#define REG_TM1CNT (*(vu32 *)REG_ADDR_TM1CNT) +#define REG_TM1CNT_L (*(vu16 *)REG_ADDR_TM1CNT_L) +#define REG_TM1CNT_H (*(vu16 *)REG_ADDR_TM1CNT_H) +#define REG_TM2CNT (*(vu32 *)REG_ADDR_TM2CNT) +#define REG_TM2CNT_L (*(vu16 *)REG_ADDR_TM2CNT_L) +#define REG_TM2CNT_H (*(vu16 *)REG_ADDR_TM2CNT_H) +#define REG_TM3CNT (*(vu32 *)REG_ADDR_TM3CNT) +#define REG_TM3CNT_L (*(vu16 *)REG_ADDR_TM3CNT_L) +#define REG_TM3CNT_H (*(vu16 *)REG_ADDR_TM3CNT_H) + +#define REG_SIOCNT (*(vu16 *)REG_ADDR_SIOCNT) +#define REG_SIODATA8 (*(vu16 *)REG_ADDR_SIODATA8) +#define REG_SIODATA32 (*(vu32 *)REG_ADDR_SIODATA32) +#define REG_SIOMLT_SEND (*(vu16 *)REG_ADDR_SIOMLT_SEND) +#define REG_SIOMLT_RECV (*(vu64 *)REG_ADDR_SIOMLT_RECV) +#define REG_SIOMULTI0 (*(vu16 *)REG_ADDR_SIOMULTI0) +#define REG_SIOMULTI1 (*(vu16 *)REG_ADDR_SIOMULTI1) +#define REG_SIOMULTI2 (*(vu16 *)REG_ADDR_SIOMULTI2) +#define REG_SIOMULTI3 (*(vu16 *)REG_ADDR_SIOMULTI3) + +#define REG_KEYINPUT (*(vu16 *)REG_ADDR_KEYINPUT) +#define REG_KEYCNT (*(vu16 *)REG_ADDR_KEYCNT) + +#define REG_RCNT (*(vu16 *)REG_ADDR_RCNT) + +#define REG_IME (*(vu16 *)REG_ADDR_IME) +#define REG_IE (*(vu16 *)REG_ADDR_IE) +#define REG_IF (*(vu16 *)REG_ADDR_IF) + +#define REG_WAITCNT (*(vu16 *)REG_ADDR_WAITCNT) + +// I/O register fields + +// DISPCNT +#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text +#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off +#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine +#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color +#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette +#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color +#define DISPCNT_OBJ_1D_MAP 0x0040 +#define DISPCNT_FORCED_BLANK 0x0080 +#define DISPCNT_BG0_ON 0x0100 +#define DISPCNT_BG1_ON 0x0200 +#define DISPCNT_BG2_ON 0x0400 +#define DISPCNT_BG3_ON 0x0800 +#define DISPCNT_BG_ALL_ON 0x0F00 +#define DISPCNT_OBJ_ON 0x1000 +#define DISPCNT_WIN0_ON 0x2000 +#define DISPCNT_WIN1_ON 0x4000 +#define DISPCNT_OBJWIN_ON 0x8000 + +// DISPSTAT +#define DISPSTAT_VBLANK 0x0001 // in V-Blank +#define DISPSTAT_HBLANK 0x0002 // in H-Blank +#define DISPSTAT_VCOUNT 0x0004 // V-Count match +#define DISPSTAT_VBLANK_INTR 0x0008 // V-Blank interrupt enabled +#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled +#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled + +// BGCNT +#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs. +#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data. +#define BGCNT_MOSAIC 0x0040 +#define BGCNT_16COLOR 0x0000 // 4 bits per pixel +#define BGCNT_256COLOR 0x0080 // 8 bits per pixel +#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map. +#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default. +#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels. +#define BGCNT_TXT512x256 0x4000 +#define BGCNT_TXT256x512 0x8000 +#define BGCNT_TXT512x512 0xC000 +#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels. +#define BGCNT_AFF256x256 0x4000 +#define BGCNT_AFF512x512 0x8000 +#define BGCNT_AFF1024x1024 0xC000 + +// BLDCNT +// Bits 0-5 select layers for the 1st target +#define BLDCNT_TGT1_BG0 (1 << 0) +#define BLDCNT_TGT1_BG1 (1 << 1) +#define BLDCNT_TGT1_BG2 (1 << 2) +#define BLDCNT_TGT1_BG3 (1 << 3) +#define BLDCNT_TGT1_OBJ (1 << 4) +#define BLDCNT_TGT1_BD (1 << 5) +// Bits 6-7 select the special effect +#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect +#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) +#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) +#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) +// Bits 8-13 select layers for the 2nd target +#define BLDCNT_TGT2_BG0 (1 << 8) +#define BLDCNT_TGT2_BG1 (1 << 9) +#define BLDCNT_TGT2_BG2 (1 << 10) +#define BLDCNT_TGT2_BG3 (1 << 11) +#define BLDCNT_TGT2_OBJ (1 << 12) +#define BLDCNT_TGT2_BD (1 << 13) + +// BLDALPHA +#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1)) + +// SOUNDCNT_H +#define SOUND_CGB_MIX_QUARTER 0x0000 +#define SOUND_CGB_MIX_HALF 0x0001 +#define SOUND_CGB_MIX_FULL 0x0002 +#define SOUND_A_MIX_HALF 0x0000 +#define SOUND_A_MIX_FULL 0x0004 +#define SOUND_B_MIX_HALF 0x0000 +#define SOUND_B_MIX_FULL 0x0008 +#define SOUND_ALL_MIX_FULL 0x000E +#define SOUND_A_RIGHT_OUTPUT 0x0100 +#define SOUND_A_LEFT_OUTPUT 0x0200 +#define SOUND_A_TIMER_0 0x0000 +#define SOUND_A_TIMER_1 0x0400 +#define SOUND_A_FIFO_RESET 0x0800 +#define SOUND_B_RIGHT_OUTPUT 0x1000 +#define SOUND_B_LEFT_OUTPUT 0x2000 +#define SOUND_B_TIMER_0 0x0000 +#define SOUND_B_TIMER_1 0x4000 +#define SOUND_B_FIFO_RESET 0x8000 + +// SOUNDCNT_X +#define SOUND_1_ON 0x0001 +#define SOUND_2_ON 0x0002 +#define SOUND_3_ON 0x0004 +#define SOUND_4_ON 0x0008 +#define SOUND_MASTER_ENABLE 0x0080 + +// DMA +#define DMA_DEST_INC 0x0000 +#define DMA_DEST_DEC 0x0020 +#define DMA_DEST_FIXED 0x0040 +#define DMA_DEST_RELOAD 0x0060 +#define DMA_SRC_INC 0x0000 +#define DMA_SRC_DEC 0x0080 +#define DMA_SRC_FIXED 0x0100 +#define DMA_REPEAT 0x0200 +#define DMA_16BIT 0x0000 +#define DMA_32BIT 0x0400 +#define DMA_DREQ_ON 0x0800 +#define DMA_START_NOW 0x0000 +#define DMA_START_VBLANK 0x1000 +#define DMA_START_HBLANK 0x2000 +#define DMA_START_SPECIAL 0x3000 +#define DMA_START_MASK 0x3000 +#define DMA_INTR_ENABLE 0x4000 +#define DMA_ENABLE 0x8000 + +// timer +#define TIMER_1CLK 0x00 +#define TIMER_64CLK 0x01 +#define TIMER_256CLK 0x02 +#define TIMER_1024CLK 0x03 +#define TIMER_INTR_ENABLE 0x40 +#define TIMER_ENABLE 0x80 + +// serial +#define SIO_ID 0x0030 // Communication ID + +#define SIO_8BIT_MODE 0x0000 // Normal 8-bit communication mode +#define SIO_32BIT_MODE 0x1000 // Normal 32-bit communication mode +#define SIO_MULTI_MODE 0x2000 // Multi-player communication mode +#define SIO_UART_MODE 0x3000 // UART communication mode + +#define SIO_9600_BPS 0x0000 // baud rate 9600 bps +#define SIO_38400_BPS 0x0001 // 38400 bps +#define SIO_57600_BPS 0x0002 // 57600 bps +#define SIO_115200_BPS 0x0003 // 115200 bps + +#define SIO_MULTI_SI 0x0004 // Multi-player communication SI terminal +#define SIO_MULTI_SD 0x0008 // SD terminal +#define SIO_MULTI_BUSY 0x0080 + +#define SIO_ERROR 0x0040 // Detect error +#define SIO_START 0x0080 // Start transfer +#define SIO_ENABLE 0x0080 // Enable SIO + +#define SIO_INTR_ENABLE 0x4000 + +#define SIO_MULTI_SI_SHIFT 2 +#define SIO_MULTI_SI_MASK 0x1 +#define SIO_MULTI_DI_SHIFT 3 +#define SIO_MULTI_DI_MASK 0x1 + +// keys +#define A_BUTTON 0x0001 +#define B_BUTTON 0x0002 +#define SELECT_BUTTON 0x0004 +#define START_BUTTON 0x0008 +#define DPAD_RIGHT 0x0010 +#define DPAD_LEFT 0x0020 +#define DPAD_UP 0x0040 +#define DPAD_DOWN 0x0080 +#define R_BUTTON 0x0100 +#define L_BUTTON 0x0200 +#define KEYS_MASK 0x03FF +#define KEY_INTR_ENABLE 0x0400 +#define KEY_OR_INTR 0x0000 +#define KEY_AND_INTR 0x8000 +#define DPAD_ANY 0x00F0 +#define JOY_EXCL_DPAD 0x030F + +// interrupt flags +#define INTR_FLAG_VBLANK (1 << 0) +#define INTR_FLAG_HBLANK (1 << 1) +#define INTR_FLAG_VCOUNT (1 << 2) +#define INTR_FLAG_TIMER0 (1 << 3) +#define INTR_FLAG_TIMER1 (1 << 4) +#define INTR_FLAG_TIMER2 (1 << 5) +#define INTR_FLAG_TIMER3 (1 << 6) +#define INTR_FLAG_SERIAL (1 << 7) +#define INTR_FLAG_DMA0 (1 << 8) +#define INTR_FLAG_DMA1 (1 << 9) +#define INTR_FLAG_DMA2 (1 << 10) +#define INTR_FLAG_DMA3 (1 << 11) +#define INTR_FLAG_KEYPAD (1 << 12) +#define INTR_FLAG_GAMEPAK (1 << 13) + +// WAITCNT +#define WAITCNT_SRAM_4 (0 << 0) +#define WAITCNT_SRAM_3 (1 << 0) +#define WAITCNT_SRAM_2 (2 << 0) +#define WAITCNT_SRAM_8 (3 << 0) +#define WAITCNT_SRAM_MASK (3 << 0) + +#define WAITCNT_WS0_N_4 (0 << 2) +#define WAITCNT_WS0_N_3 (1 << 2) +#define WAITCNT_WS0_N_2 (2 << 2) +#define WAITCNT_WS0_N_8 (3 << 2) +#define WAITCNT_WS0_N_MASK (3 << 2) + +#define WAITCNT_WS0_S_2 (0 << 4) +#define WAITCNT_WS0_S_1 (1 << 4) + +#define WAITCNT_WS1_N_4 (0 << 5) +#define WAITCNT_WS1_N_3 (1 << 5) +#define WAITCNT_WS1_N_2 (2 << 5) +#define WAITCNT_WS1_N_8 (3 << 5) +#define WAITCNT_WS1_N_MASK (3 << 5) + +#define WAITCNT_WS1_S_4 (0 << 7) +#define WAITCNT_WS1_S_1 (1 << 7) + +#define WAITCNT_WS2_N_4 (0 << 8) +#define WAITCNT_WS2_N_3 (1 << 8) +#define WAITCNT_WS2_N_2 (2 << 8) +#define WAITCNT_WS2_N_8 (3 << 8) +#define WAITCNT_WS2_N_MASK (3 << 8) + +#define WAITCNT_WS2_S_8 (0 << 10) +#define WAITCNT_WS2_S_1 (1 << 10) + +#define WAITCNT_PHI_OUT_NONE (0 << 11) +#define WAITCNT_PHI_OUT_4MHZ (1 << 11) +#define WAITCNT_PHI_OUT_8MHZ (2 << 11) +#define WAITCNT_PHI_OUT_16MHZ (3 << 11) +#define WAITCNT_PHI_OUT_MASK (3 << 11) + +#define WAITCNT_PREFETCH_ENABLE (1 << 14) + +#define WAITCNT_AGB (0 << 15) +#define WAITCNT_CGB (1 << 15) + +#endif // GUARD_GBA_IO_REG_H diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h new file mode 100644 index 000000000..ff92fcc40 --- /dev/null +++ b/include/gba/m4a_internal.h @@ -0,0 +1,463 @@ +#ifndef GUARD_M4A_INTERNAL_H +#define GUARD_M4A_INTERNAL_H + +#include "gba/gba.h" + +// ASCII encoding of 'Smsh' in reverse +// This is presumably short for SMASH, the developer of MKS4AGB. +#define ID_NUMBER 0x68736D53 + +#define C_V 0x40 // center value for PAN, BEND, and TUNE + +#define SOUND_MODE_REVERB_VAL 0x0000007F +#define SOUND_MODE_REVERB_SET 0x00000080 +#define SOUND_MODE_MAXCHN 0x00000F00 +#define SOUND_MODE_MAXCHN_SHIFT 8 +#define SOUND_MODE_MASVOL 0x0000F000 +#define SOUND_MODE_MASVOL_SHIFT 12 +#define SOUND_MODE_FREQ_05734 0x00010000 +#define SOUND_MODE_FREQ_07884 0x00020000 +#define SOUND_MODE_FREQ_10512 0x00030000 +#define SOUND_MODE_FREQ_13379 0x00040000 +#define SOUND_MODE_FREQ_15768 0x00050000 +#define SOUND_MODE_FREQ_18157 0x00060000 +#define SOUND_MODE_FREQ_21024 0x00070000 +#define SOUND_MODE_FREQ_26758 0x00080000 +#define SOUND_MODE_FREQ_31536 0x00090000 +#define SOUND_MODE_FREQ_36314 0x000A0000 +#define SOUND_MODE_FREQ_40137 0x000B0000 +#define SOUND_MODE_FREQ_42048 0x000C0000 +#define SOUND_MODE_FREQ 0x000F0000 +#define SOUND_MODE_FREQ_SHIFT 16 +#define SOUND_MODE_DA_BIT_9 0x00800000 +#define SOUND_MODE_DA_BIT_8 0x00900000 +#define SOUND_MODE_DA_BIT_7 0x00A00000 +#define SOUND_MODE_DA_BIT_6 0x00B00000 +#define SOUND_MODE_DA_BIT 0x00B00000 +#define SOUND_MODE_DA_BIT_SHIFT 20 + +struct WaveData +{ + u16 type; + u16 status; + u32 freq; + u32 loopStart; + u32 size; // number of samples + s8 data[1]; // samples +}; + +#define TONEDATA_TYPE_CGB 0x07 +#define TONEDATA_TYPE_FIX 0x08 +#define TONEDATA_TYPE_SPL 0x40 // key split +#define TONEDATA_TYPE_RHY 0x80 // rhythm + +#define TONEDATA_P_S_PAN 0xc0 +#define TONEDATA_P_S_PAM TONEDATA_P_S_PAN + +struct ToneData +{ + u8 type; + u8 key; + u8 length; // sound length (compatible sound) + u8 pan_sweep; // pan or sweep (compatible sound ch. 1) + struct WaveData *wav; + u8 attack; + u8 decay; + u8 sustain; + u8 release; +}; + +struct CgbChannel +{ + u8 sf; + u8 ty; + u8 rightVolume; + u8 leftVolume; + u8 at; + u8 de; + u8 su; + u8 re; + u8 ky; + u8 ev; + u8 eg; + u8 ec; + u8 echoVolume; + u8 echoLength; + u8 d1; + u8 d2; + u8 gt; + u8 mk; + u8 ve; + u8 pr; + u8 rp; + u8 d3[3]; + u8 d5; + u8 sg; + u8 n4; + u8 pan; + u8 panMask; + u8 mo; + u8 le; + u8 sw; + u32 fr; + u32 wp; + u32 cp; + u32 tp; + u32 pp; + u32 np; + u8 d4[8]; +}; + +struct MusicPlayerTrack; + +struct SoundChannel +{ + u8 status; + u8 type; + u8 rightVolume; + u8 leftVolume; + u8 attack; + u8 decay; + u8 sustain; + u8 release; + u8 ky; + u8 ev; + u8 er; + u8 el; + u8 echoVolume; + u8 echoLength; + u8 d1; + u8 d2; + u8 gt; + u8 mk; + u8 ve; + u8 pr; + u8 rp; + u8 d3[3]; + u32 ct; + u32 fw; + u32 freq; + struct WaveData *wav; + u32 cp; + struct MusicPlayerTrack *track; + u32 pp; + u32 np; + u32 d4; + u16 xpi; + u16 xpc; +}; + +#define MAX_DIRECTSOUND_CHANNELS 12 + +#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer + +struct SoundInfo +{ + // This field is normally equal to ID_NUMBER but it is set to other + // values during sensitive operations for locking purposes. + // This field should be volatile but isn't. This could potentially cause + // race conditions. + u32 ident; + + vu8 pcmDmaCounter; + + // Direct Sound + u8 reverb; + u8 maxChans; + u8 masterVolume; + u8 freq; + + u8 mode; + u8 c15; + u8 pcmDmaPeriod; // number of V-blanks per PCM DMA + u8 maxLines; + u8 gap[3]; + s32 pcmSamplesPerVBlank; + s32 pcmFreq; + s32 divFreq; + struct CgbChannel *cgbChans; + u32 func; + u32 intp; + void (*CgbSound)(void); + void (*CgbOscOff)(u8); + u32 (*MidiKeyToCgbFreq)(u8, u8, u8); + u32 MPlayJumpTable; + u32 plynote; + u32 ExtVolPit; + u8 gap2[16]; + struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS]; + s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2]; +}; + +struct SongHeader +{ + u8 trackCount; + u8 blockCount; + u8 priority; + u8 reverb; + struct ToneData *tone; + u8 *part[1]; +}; + +struct PokemonCrySong +{ + u8 trackCount; + u8 blockCount; + u8 priority; + u8 reverb; + struct ToneData *tone; + u8 *part[2]; + u8 gap; + u8 part0; // 0x11 + u8 tuneValue; // 0x12 + u8 gotoCmd; // 0x13 + u32 gotoTarget; // 0x14 + u8 part1; // 0x18 + u8 tuneValue2; // 0x19 + u8 cont[2]; // 0x1A + u8 volCmd; // 0x1C + u8 volumeValue; // 0x1D + u8 unkCmd0D[2]; // 0x1E + u32 unkCmd0DParam; // 0x20 + u8 xreleCmd[2]; // 0x24 + u8 releaseValue; // 0x26 + u8 panCmd; + u8 panValue; // 0x28 + u8 tieCmd; // 0x29 + u8 tieKeyValue; // 0x2A + u8 tieVelocityValue; // 0x2B + u8 unkCmd0C[2]; // 0x2C + u16 unkCmd0CParam; // 0x2E + u8 end[2]; // 0x30 +}; + +#define MPT_FLG_VOLSET 0x01 +#define MPT_FLG_VOLCHG 0x03 +#define MPT_FLG_PITSET 0x04 +#define MPT_FLG_PITCHG 0x0C +#define MPT_FLG_START 0x40 +#define MPT_FLG_EXIST 0x80 + +struct MusicPlayerTrack +{ + u8 flags; + u8 wait; + u8 patternLevel; + u8 repN; + u8 gateTime; + u8 key; + u8 velocity; + u8 runningStatus; + u8 keyM; + u8 pitM; + s8 keyShift; + s8 keyShiftX; + s8 tune; + u8 pitX; + s8 bend; + u8 bendRange; + u8 volMR; + u8 volML; + u8 vol; + u8 volX; + s8 pan; + s8 panX; + s8 modM; + u8 mod; + u8 modT; + u8 lfoSpeed; + u8 lfoSpeedC; + u8 lfoDelay; + u8 lfoDelayC; + u8 priority; + u8 echoVolume; + u8 echoLength; + struct SoundChannel *chan; + struct ToneData tone; + u8 gap[10]; + u16 unk_3A; + u32 unk_3C; + u8 *cmdPtr; + u8 *patternStack[3]; +}; + +#define MUSICPLAYER_STATUS_TRACK 0x0000ffff +#define MUSICPLAYER_STATUS_PAUSE 0x80000000 + +#define MAX_MUSICPLAYER_TRACKS 16 + +#define TEMPORARY_FADE 0x0001 +#define FADE_IN 0x0002 +#define FADE_VOL_MAX 64 +#define FADE_VOL_SHIFT 2 + +struct MusicPlayerInfo +{ + struct SongHeader *songHeader; + u32 status; + u8 trackCount; + u8 priority; + u8 cmd; + u8 unk_B; + u32 clock; + u8 gap[8]; + u8 *memAccArea; + u16 tempoD; + u16 tempoU; + u16 tempoI; + u16 tempoC; + u16 fadeOI; + u16 fadeOC; + u16 fadeOV; + struct MusicPlayerTrack *tracks; + struct ToneData *tone; + u32 ident; + u32 func; + u32 intp; +}; + +struct MusicPlayer +{ + struct MusicPlayerInfo *info; + struct MusicPlayerTrack *track; + u8 unk_8; + u16 unk_A; +}; + +struct Song +{ + struct SongHeader *header; + u16 ms; + u16 me; +}; + +extern const struct MusicPlayer gMPlayTable[]; +extern const struct Song gSongTable[]; + + + +extern u8 gMPlayMemAccArea[]; + +//u8 gPokemonCrySong[52]; +//u8 gPokemonCrySongs[52 * MAX_POKEMON_CRIES]; + +#define MAX_POKEMON_CRIES 2 + +extern struct PokemonCrySong gPokemonCrySong; +extern struct PokemonCrySong gPokemonCrySongs[]; + +extern struct MusicPlayerInfo gPokemonCryMusicPlayers[]; +extern struct MusicPlayerTrack gPokemonCryTracks[]; + +extern char SoundMainRAM[]; + +extern void *gMPlayJumpTable[]; + +typedef void (*XcmdFunc)(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +extern const XcmdFunc gXcmdTable[]; + +extern struct CgbChannel gCgbChans[]; + +extern const u8 gScaleTable[]; +extern const u32 gFreqTable[]; +extern const u16 gPcmSamplesPerVBlankTable[]; + +extern const u8 gCgbScaleTable[]; +extern const s16 gCgbFreqTable[]; +extern const u8 gNoiseTable[]; + +extern const struct PokemonCrySong gPokemonCrySongTemplate; + +extern const struct ToneData voicegroup_pokemon_cry; + +extern char gNumMusicPlayers[]; +extern char gMaxLines[]; + +#define NUM_MUSIC_PLAYERS ((u16)gNumMusicPlayers) +#define MAX_LINES ((u32)gMaxLines) + +u32 umul3232H32(u32 multiplier, u32 multiplicand); +void SoundMain(void); +void SoundMainBTM(void); +void TrackStop(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track); +void MPlayMain(void); +void RealClearChain(void *x); + +void MPlayContinue(struct MusicPlayerInfo *mplayInfo); +void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader); +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); +void FadeOutBody(struct MusicPlayerInfo *mplayInfo); +void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track); +void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed); +void ClearChain(void *x); +void Clear64byte(void *addr); +void SoundInit(struct SoundInfo *soundInfo); +void MPlayExtender(struct CgbChannel *cgbChans); +void m4aSoundMode(u32 mode); +void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track, u8 a3); +void CgbSound(void); +void CgbOscOff(u8); +u32 MidiKeyToCgbFreq(u8, u8, u8); +void DummyFunc(void); +void MPlayJumpTableCopy(void **mplayJumpTable); +void SampleFreqSet(u32 freq); +void m4aSoundVSyncOn(void); +void m4aSoundVSyncOff(void); + +void ClearModM(struct MusicPlayerTrack *track); +void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth); +void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed); + +struct MusicPlayerInfo *SetPokemonCryTone(struct ToneData *tone); +void SetPokemonCryVolume(u8 val); +void SetPokemonCryPanpot(s8 val); +void SetPokemonCryPitch(s16 val); +void SetPokemonCryLength(u16 val); +void SetPokemonCryRelease(u8 val); +void SetPokemonCryProgress(u32 val); +int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo); +void SetPokemonCryChorus(s8 val); +void SetPokemonCryStereo(u32 val); +void SetPokemonCryPriority(u8 val); + +// sound command handler functions +void ply_fine(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_goto(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_patt(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_pend(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_rept(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_memacc(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_prio(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_tempo(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_keysh(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_voice(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_vol(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_pan(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_bend(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_bendr(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_lfos(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_lfodl(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_mod(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_modt(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *); + +// extended sound command handler functions +void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xwave(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xtype(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xatta(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xdeca(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xsust(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xrele(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xiecv(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xiecl(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xleng(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xswee(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xcmd_0C(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_xcmd_0D(struct MusicPlayerInfo *, struct MusicPlayerTrack *); + +#endif // GUARD_M4A_INTERNAL_H diff --git a/include/gba/macro.h b/include/gba/macro.h new file mode 100644 index 000000000..a0edf2a49 --- /dev/null +++ b/include/gba/macro.h @@ -0,0 +1,137 @@ +#ifndef GUARD_GBA_MACRO_H +#define GUARD_GBA_MACRO_H + +#define CPU_FILL(value, dest, size, bit) \ +{ \ + vu##bit tmp = (vu##bit)(value); \ + CpuSet((void *)&tmp, \ + dest, \ + CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size)/(bit/8) & 0x1FFFFF)); \ +} + +#define CpuFill16(value, dest, size) CPU_FILL(value, dest, size, 16) +#define CpuFill32(value, dest, size) CPU_FILL(value, dest, size, 32) + +#define CPU_COPY(src, dest, size, bit) CpuSet(src, dest, CPU_SET_##bit##BIT | ((size)/(bit/8) & 0x1FFFFF)) + +#define CpuCopy16(src, dest, size) CPU_COPY(src, dest, size, 16) +#define CpuCopy32(src, dest, size) CPU_COPY(src, dest, size, 32) + +#define CpuFastFill(value, dest, size) \ +{ \ + vu32 tmp = (vu32)(value); \ + CpuFastSet((void *)&tmp, \ + dest, \ + CPU_FAST_SET_SRC_FIXED | ((size)/(32/8) & 0x1FFFFF)); \ +} + +#define CpuFastFill16(value, dest, size) CpuFastFill(((value) << 16) | (value), (dest), (size)) + +#define CpuFastCopy(src, dest, size) CpuFastSet(src, dest, ((size)/(32/8) & 0x1FFFFF)) + +#define DmaSet(dmaNum, src, dest, control) \ +{ \ + vu32 *dmaRegs = (vu32 *)REG_ADDR_DMA##dmaNum; \ + dmaRegs[0] = (vu32)(src); \ + dmaRegs[1] = (vu32)(dest); \ + dmaRegs[2] = (vu32)(control); \ + dmaRegs[2]; \ +} + +#define DMA_FILL(dmaNum, value, dest, size, bit) \ +{ \ + vu##bit tmp = (vu##bit)(value); \ + DmaSet(dmaNum, \ + &tmp, \ + dest, \ + (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_FIXED | DMA_DEST_INC) << 16 \ + | ((size)/(bit/8))); \ +} + +#define DmaFill16(dmaNum, value, dest, size) DMA_FILL(dmaNum, value, dest, size, 16) +#define DmaFill32(dmaNum, value, dest, size) DMA_FILL(dmaNum, value, dest, size, 32) + +// Note that the DMA clear macros cause the DMA control value to be calculated +// at runtime rather than compile time. The size is divided by the DMA transfer +// unit size (2 or 4 bytes) and then combined with the DMA control flags using a +// bitwise OR operation. + +#define DMA_CLEAR(dmaNum, dest, size, bit) \ +{ \ + vu##bit *_dest = (vu##bit *)(dest); \ + u32 _size = size; \ + DmaFill##bit(dmaNum, 0, _dest, _size); \ +} + +#define DmaClear16(dmaNum, dest, size) DMA_CLEAR(dmaNum, dest, size, 16) +#define DmaClear32(dmaNum, dest, size) DMA_CLEAR(dmaNum, dest, size, 32) + +#define DMA_COPY(dmaNum, src, dest, size, bit) \ + DmaSet(dmaNum, \ + src, \ + dest, \ + (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 \ + | ((size)/(bit/8))) + +#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16) +#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32) + +#define DmaStop(dmaNum) \ +{ \ + vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \ + dmaRegs[5] &= ~(DMA_START_MASK | DMA_DREQ_ON | DMA_REPEAT); \ + dmaRegs[5] &= ~DMA_ENABLE; \ + dmaRegs[5]; \ +} + +#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, (block)); \ + _src += (block); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaClearLarge(dmaNum, dest, size, block, bit) \ +{ \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, dest, (block)); \ + dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) + +#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) + +#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ +} + +#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) +#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) + +#endif // GUARD_GBA_MACRO_H diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h new file mode 100644 index 000000000..e88b43a19 --- /dev/null +++ b/include/gba/multiboot.h @@ -0,0 +1,55 @@ +#ifndef GUARD_GBA_MULTIBOOT_H +#define GUARD_GBA_MULTIBOOT_H + +#define MULTIBOOT_NCHILD 3 // Maximum number of slaves +#define MULTIBOOT_HEADER_SIZE 0xc0 // Header size +#define MULTIBOOT_SEND_SIZE_MIN 0x100 // Minimum transmission size +#define MULTIBOOT_SEND_SIZE_MAX 0x40000 // Maximum transmission size + +struct MultiBootParam +{ + u32 system_work[5]; + u8 handshake_data; + u8 padding; + u16 handshake_timeout; + u8 probe_count; + u8 client_data[MULTIBOOT_NCHILD]; + u8 palette_data; + u8 response_bit; + u8 client_bit; + u8 reserved1; + u8 *boot_srcp; + u8 *boot_endp; + u8 *masterp; + u8 *reserved2[MULTIBOOT_NCHILD]; + u32 system_work2[4]; + u8 sendflag; + u8 probe_target_bit; + u8 check_wait; + u8 server_type; +}; + +#define MULTIBOOT_ERROR_04 0x04 +#define MULTIBOOT_ERROR_08 0x08 +#define MULTIBOOT_ERROR_0c 0x0c +#define MULTIBOOT_ERROR_40 0x40 +#define MULTIBOOT_ERROR_44 0x44 +#define MULTIBOOT_ERROR_48 0x48 +#define MULTIBOOT_ERROR_4c 0x4c +#define MULTIBOOT_ERROR_80 0x80 +#define MULTIBOOT_ERROR_84 0x84 +#define MULTIBOOT_ERROR_88 0x88 +#define MULTIBOOT_ERROR_8c 0x8c +#define MULTIBOOT_ERROR_NO_PROBE_TARGET 0x50 +#define MULTIBOOT_ERROR_NO_DLREADY 0x60 +#define MULTIBOOT_ERROR_BOOT_FAILURE 0x70 +#define MULTIBOOT_ERROR_HANDSHAKE_FAILURE 0x71 + +#define MULTIBOOT_CONNECTION_CHECK_WAIT 15 + +#define MULTIBOOT_SERVER_TYPE_NORMAL 0 +#define MULTIBOOT_SERVER_TYPE_QUICK 1 + +#define MULTIBOOT_HANDSHAKE_TIMEOUT 400 + +#endif // GUARD_GBA_MULTIBOOT_H diff --git a/include/gba/syscall.h b/include/gba/syscall.h new file mode 100644 index 000000000..deddec5ba --- /dev/null +++ b/include/gba/syscall.h @@ -0,0 +1,48 @@ +#ifndef GUARD_GBA_SYSCALL_H +#define GUARD_GBA_SYSCALL_H + +#define RESET_EWRAM 0x01 +#define RESET_IWRAM 0x02 +#define RESET_PALETTE 0x04 +#define RESET_VRAM 0x08 +#define RESET_OAM 0x10 +#define RESET_SIO_REGS 0x20 +#define RESET_SOUND_REGS 0x40 +#define RESET_REGS 0x80 +#define RESET_ALL 0xFF + +void SoftReset(u32 resetFlags); + +void RegisterRamReset(u32 resetFlags); + +void VBlankIntrWait(void); + +u16 Sqrt(u32 num); + +u16 ArcTan2(s16 x, s16 y); + +#define CPU_SET_SRC_FIXED 0x01000000 +#define CPU_SET_16BIT 0x00000000 +#define CPU_SET_32BIT 0x04000000 + +void CpuSet(const void *src, void *dest, u32 control); + +#define CPU_FAST_SET_SRC_FIXED 0x01000000 + +void CpuFastSet(const void *src, void *dest, u32 control); + +void BgAffineSet(struct BgAffineSrcData *src, struct BgAffineDstData *dest, s32 count); + +void ObjAffineSet(struct ObjAffineSrcData *src, void *dest, s32 count, s32 offset); + +void LZ77UnCompWram(const void *src, void *dest); + +void LZ77UnCompVram(const void *src, void *dest); + +void RLUnCompWram(const void *src, void *dest); + +void RLUnCompVram(const void *src, void *dest); + +int MultiBoot(struct MultiBootParam *mp); + +#endif // GUARD_GBA_SYSCALL_H diff --git a/include/gba/types.h b/include/gba/types.h new file mode 100644 index 000000000..480619d21 --- /dev/null +++ b/include/gba/types.h @@ -0,0 +1,129 @@ +#ifndef GUARD_GBA_TYPES_H +#define GUARD_GBA_TYPES_H + +#include + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; + +typedef volatile u8 vu8; +typedef volatile u16 vu16; +typedef volatile u32 vu32; +typedef volatile u64 vu64; +typedef volatile s8 vs8; +typedef volatile s16 vs16; +typedef volatile s32 vs32; +typedef volatile s64 vs64; + +typedef float f32; +typedef double f64; + +typedef u8 bool8; +typedef u16 bool16; +typedef u32 bool32; + +struct PlttData +{ + u16 r:5; // red + u16 g:5; // green + u16 b:5; // blue + u16 unused_15:1; +} /*__attribute__((packed))*/; + +struct OamData +{ + /*0x00*/ u32 y:8; + /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3 + u32 objMode:2; // 0x4, 0x8 = 0xC + u32 mosaic:1; // 0x10 + u32 bpp:1; // 0x20 + u32 shape:2; // 0x40, 0x80 + + /*0x02*/ u32 x:9; + u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode + u32 size:2; + + /*0x04*/ u16 tileNum:10; + u16 priority:2; + u16 paletteNum:4; + /*0x06*/ u16 affineParam; +}; + +#define ST_OAM_OBJ_NORMAL 0 +#define ST_OAM_OBJ_BLEND 1 +#define ST_OAM_OBJ_WINDOW 2 + +#define ST_OAM_AFFINE_OFF 0 +#define ST_OAM_AFFINE_NORMAL 1 +#define ST_OAM_AFFINE_ERASE 2 +#define ST_OAM_AFFINE_DOUBLE 3 + +#define ST_OAM_AFFINE_ON_MASK 1 +#define ST_OAM_AFFINE_DOUBLE_MASK 2 + +#define ST_OAM_4BPP 0 +#define ST_OAM_8BPP 1 + +#define ST_OAM_SQUARE 0 +#define ST_OAM_H_RECTANGLE 1 +#define ST_OAM_V_RECTANGLE 2 + +struct BgAffineSrcData +{ + s32 texX; + s32 texY; + s16 scrX; + s16 scrY; + s16 sx; + s16 sy; + u16 alpha; +}; + +struct BgAffineDstData +{ + s16 pa; + s16 pb; + s16 pc; + s16 pd; + s32 dx; + s32 dy; +}; + +struct ObjAffineSrcData +{ + s16 xScale; + s16 yScale; + u16 rotation; +}; + +// Multi-player SIO Control Structure +struct SioMultiCnt +{ + u16 baudRate:2; // baud rate + u16 si:1; // SI terminal + u16 sd:1; // SD terminal + u16 id:2; // ID + u16 error:1; // error flag + u16 enable:1; // SIO enable + u16 unused_11_8:4; + u16 mode:2; // communication mode (should equal 2) + u16 intrEnable:1; // IRQ enable + u16 unused_15:1; + u16 data; // data +}; + +#define ST_SIO_MULTI_MODE 2 // Multi-player communication mode + +// baud rate +#define ST_SIO_9600_BPS 0 // 9600 bps +#define ST_SIO_38400_BPS 1 // 38400 bps +#define ST_SIO_57600_BPS 2 // 57600 bps +#define ST_SIO_115200_BPS 3 // 115200 bps + +#endif // GUARD_GBA_TYPES_H diff --git a/ld_script.sed b/ld_script.sed new file mode 100644 index 000000000..b91542b6f --- /dev/null +++ b/ld_script.sed @@ -0,0 +1,14 @@ +// { + r sym_ewram.ld + d +} + +// { + r sym_bss.ld + d +} + +// { + r sym_common.ld + d +} diff --git a/ld_script.txt b/ld_script.txt new file mode 100644 index 000000000..e78e1120f --- /dev/null +++ b/ld_script.txt @@ -0,0 +1,483 @@ +ENTRY(Start) + +gNumMusicPlayers = 4; +gMaxLines = 0; + +SECTIONS { + . = 0x2000000; + + ewram (NOLOAD) : + SUBALIGN(4) + { + gHeap = .; + + . = 0x1C000; + + + + tools/agbcc/lib/libc.a:memcpy.o(.data); + tools/agbcc/lib/libc.a:memset.o(.data); + tools/agbcc/lib/libc.a:strcmp.o(.data); + tools/agbcc/lib/libc.a:strcpy.o(.data); + tools/agbcc/lib/libc.a:impure.o(.data); + tools/agbcc/lib/libc.a:vsprintf.o(.data); + tools/agbcc/lib/libc.a:vfprintf.o(.data); + tools/agbcc/lib/libc.a:wsetup.o(.data); + tools/agbcc/lib/libc.a:dtoa.o(.data); + tools/agbcc/lib/libc.a:fflush.o(.data); + tools/agbcc/lib/libc.a:findfp.o(.data); + tools/agbcc/lib/libc.a:freer.o(.data); + tools/agbcc/lib/libc.a:mtrim.o(.data); + tools/agbcc/lib/libc.a:fvwrite.o(.data); + tools/agbcc/lib/libc.a:fwalk.o(.data); + tools/agbcc/lib/libc.a:locale.o(.data); + tools/agbcc/lib/libc.a:makebuf.o(.data); + tools/agbcc/lib/libc.a:mallocr.o(.data); + tools/agbcc/lib/libc.a:mbtowc_r.o(.data); + tools/agbcc/lib/libc.a:memchr.o(.data); + tools/agbcc/lib/libc.a:memmove.o(.data); + tools/agbcc/lib/libc.a:mlock.o(.data); + tools/agbcc/lib/libc.a:mprec.o(.data); + tools/agbcc/lib/libc.a:s_isinf.o(.data); + tools/agbcc/lib/libc.a:s_isnan.o(.data); + tools/agbcc/lib/libc.a:sbrkr.o(.data); + tools/agbcc/lib/libc.a:stdio.o(.data); + tools/agbcc/lib/libc.a:strlen.o(.data); + tools/agbcc/lib/libc.a:syscalls.o(.data); + tools/agbcc/lib/libc.a:writer.o(.data); + tools/agbcc/lib/libc.a:callocr.o(.data); + tools/agbcc/lib/libc.a:closer.o(.data); + tools/agbcc/lib/libc.a:errno.o(.data); + tools/agbcc/lib/libc.a:fstatr.o(.data); + tools/agbcc/lib/libc.a:libcfunc.o(.data); + tools/agbcc/lib/libc.a:lseekr.o(.data); + tools/agbcc/lib/libc.a:readr.o(.data); + + . = 0x40000; + } + + . = 0x3000000; + + iwram (NOLOAD) : + SUBALIGN(4) + { + /* .bss starts at 0x3000000 */ + + + /* .bss.code starts at 0x30028E0 */ + src/m4a_2.o(.bss.code); + + /* COMMON starts at 0x30030E0 */ + + + tools/agbcc/lib/libc.a:sbrkr.o(COMMON); + end = .; + + . = 0x8000; + } + + . = 0x8000000; + + .text : + SUBALIGN(4) + { + asm/crt0.o(.text); + asm/main.o(.text); + asm/gpu_regs.o(.text); + asm/dma3_manager.o(.text); + asm/bg.o(.text); + asm/malloc.o(.text); + asm/text_printer.o(.text); + asm/window.o(.text); + asm/blit.o(.text); + asm/window_8bpp.o(.text); + asm/text.o(.text); + asm/sprite.o(.text); + asm/string_util.o(.text); + asm/link.o(.text); + asm/multiboot.o(.text); + asm/main_menu.o(.text); + asm/battle_controllers.o(.text); + asm/decompress.o(.text); + asm/battle_1.o(.text); + asm/battle_2.o(.text); + asm/battle_util.o(.text); + asm/battle_script_commands.o(.text); + asm/battle_util2.o(.text); + asm/battle_controller_player.o(.text); + asm/battle_gfx_sfx_util.o(.text); + asm/battle_controller_opponent.o(.text); + asm/battle_ai_switch_items.o(.text); + asm/battle_controller_link_opponent.o(.text); + asm/pokemon_1.o(.text); + asm/calculate_base_damage.o(.text); + asm/pokemon_2.o(.text); + asm/pokemon_item_effect.o(.text); + asm/pokemon_3.o(.text); + asm/trig.o(.text); + asm/random.o(.text); + asm/util.o(.text); + asm/blend_palette.o(.text); + asm/daycare.o(.text); + asm/egg_hatch.o(.text); + asm/battle_interface.o(.text); + asm/smokescreen.o(.text); + asm/pokeball.o(.text); + asm/load_save.o(.text); + asm/trade.o(.text); + asm/play_time.o(.text); + asm/new_game.o(.text); + asm/overworld.o(.text); + asm/fieldmap.o(.text); + asm/metatile_behavior.o(.text); + asm/field_camera.o(.text); + asm/field_door.o(.text); + asm/field_player_avatar.o(.text); + asm/field_map_obj.o(.text); + asm/field_ground_effect.o(.text); + asm/map_obj_80688E4.o(.text); + asm/field_message_box.o(.text); + asm/map_obj_lock.o(.text); + asm/text_window_graphics.o(.text); + asm/script.o(.text); + asm/scrcmd.o(.text); + asm/field_control_avatar.o(.text); + asm/event_data.o(.text); + asm/coord_event_weather.o(.text); + asm/field_tasks.o(.text); + asm/start_menu.o(.text); + asm/tileset_anims.o(.text); + asm/palette.o(.text); + asm/sound.o(.text); + asm/battle_anim.o(.text); + asm/battle_anim_8074480.o(.text); + asm/task.o(.text); + asm/reshow_battle_screen.o(.text); + asm/battle_anim_8078178.o(.text); + asm/title_screen.o(.text); + asm/reset_save_heap.o(.text); + asm/field_weather.o(.text); + asm/field_weather_effects.o(.text); + asm/field_fadetransition.o(.text); + asm/field_screen_effect.o(.text); + asm/battle_setup.o(.text); + asm/cable_club.o(.text); + asm/trainer_see.o(.text); + asm/wild_encounter.o(.text); + asm/field_effect.o(.text); + asm/unknown_task.o(.text); + asm/option_menu.o(.text); + asm/pokedex.o(.text); + asm/trainer_card.o(.text); + asm/pokemon_storage_system.o(.text); + asm/pokemon_icon.o(.text); + asm/script_movement.o(.text); + asm/fldeff_cut.o(.text); + asm/mail_data.o(.text); + asm/map_name_popup.o(.text); + asm/item_menu_icons.o(.text); + asm/battle_anim_80989F8.o(.text); + asm/item.o(.text); + asm/shop.o(.text); + asm/berry.o(.text); + asm/script_menu.o(.text); + asm/naming_screen.o(.text); + asm/money.o(.text); + asm/script_pokemon_util_80A0058.o(.text); + asm/field_poison.o(.text); + asm/pokemon_size_record.o(.text); + asm/pc_screen_effect.o(.text); + asm/fldeff_poison.o(.text); + asm/fldeff_berrytree.o(.text); + asm/field_special_scene.o(.text); + asm/safari_zone.o(.text); + asm/item_use.o(.text); + asm/battle_anim_80A22E8.o(.text); + asm/bike.o(.text); + asm/easy_chat.o(.text); + asm/mon_markings.o(.text); + asm/mail.o(.text); + asm/menu_helpers.o(.text); + asm/script_pokemon_util_80BF8FC.o(.text); + asm/heal_location.o(.text); + asm/region_map.o(.text); + asm/battle_ai_script_commands.o(.text); + asm/rom6.o(.text); + asm/fldeff_flash.o(.text); + asm/post_battle_event_funcs.o(.text); + asm/prof_pc.o(.text); + asm/hof_pc.o(.text); + asm/field_specials.o(.text); + asm/battle_records.o(.text); + asm/evolution_scene.o(.text); + asm/coins.o(.text); + asm/fldeff_strength.o(.text); + asm/battle_transition.o(.text); + asm/battle_controller_link_partner.o(.text); + asm/battle_message.o(.text); + asm/math_util.o(.text); + asm/roulette_util.o(.text); + asm/cable_car_util.o(.text); + asm/save.o(.text); + asm/mystery_event_script.o(.text); + asm/field_effect_helpers.o(.text); + asm/battle_anim_sound_tasks.o(.text); + asm/battle_controller_safari.o(.text); + asm/fldeff_sweetscent.o(.text); + asm/battle_anim_80DE2C0.o(.text); + asm/learn_move.o(.text); + asm/fldeff_softboiled.o(.text); + asm/battle_tower.o(.text); + asm/battle_controller_oak.o(.text); + asm/player_pc.o(.text); + asm/intro.o(.text); + asm/battle_anim_80EEC0C.o(.text); + asm/hall_of_fame.o(.text); + asm/credits.o(.text); + asm/diploma.o(.text); + asm/save_failed_screen.o(.text); + asm/clear_save_data_screen.o(.text); + asm/evolution_graphics.o(.text); + asm/fldeff_teleport.o(.text); + asm/new_menu_helpers.o(.text); + asm/box_party_pokemon_dropdown.o(.text); + asm/save_menu_util.o(.text); + asm/map_preview_screen.o(.text); + asm/link_rfu_2.o(.text); + asm/link_rfu.o(.text); + asm/pokedex_screen.o(.text); + asm/list_menu.o(.text); + asm/item_menu.o(.text); + asm/save_location.o(.text); + asm/bag.o(.text); + asm/battle_dome_cards.o(.text); + asm/unk_810C3A4.o(.text); + asm/vs_seeker.o(.text); + asm/item_pc.o(.text); + asm/mailbox_pc.o(.text); + asm/menu.o(.text); + asm/quest_log.o(.text); + asm/link_rfu_3.o(.text); + asm/pokemon_special_anim.o(.text); + asm/party_menu.o(.text); + asm/union_room_chat.o(.text); + asm/help_system_812B1E0.o(.text); + asm/quest_log_battle.o(.text); + asm/fame_checker.o(.text); + asm/menu2.o(.text); + asm/oak_speech.o(.text); + asm/tm_case.o(.text); + asm/menu_indicators.o(.text); + asm/pokedex_area_markers.o(.text); + asm/pokemon_summary_screen.o(.text); + asm/help_system.o(.text); + asm/wild_pokemon_area.o(.text); + asm/unk_text_util.o(.text); + asm/berry_pouch.o(.text); + asm/itemfinder.o(.text); + asm/buy_menu_helpers.o(.text); + asm/slot_machine.o(.text); + asm/roamer.o(.text); + asm/mystery_gift_menu.o(.text); + asm/link_rfu_4.o(.text); + asm/mevent.o(.text); + asm/mevent_server.o(.text); + asm/mevent_8145654.o(.text); + asm/menews_jisan.o(.text); + asm/seagallop.o(.text); + asm/unk_8147500.o(.text); + asm/unk_8147AA8.o(.text); + asm/unk_814B6F0.o(.text); + asm/unk_814BB4C.o(.text); + asm/unk_814D5C8.o(.text); + asm/wireless_communication_status_screen.o(.text); + asm/braille_text.o(.text); + asm/text_window.o(.text); + asm/quest_log_8150454.o(.text); + asm/unk_81507FC.o(.text); + asm/battle_controller_pokedude.o(.text); + asm/unk_8159F40.o(.text); + asm/teachy_tv.o(.text); + asm/unk_815C27C.o(.text); + asm/unk_815C980.o(.text); + asm/ss_anne.o(.text); + asm/cereader_tool.o(.text); + asm/trainer_tower.o(.text); + asm/unk_815EDDC.o(.text); + asm/unk_815F138.o(.text); + asm/berry_fix_program.o(.text); + } =0 + + script_data : + SUBALIGN(4) + { + data/event_scripts.o(script_data); + data/battle_anim_scripts.o(script_data); + data/battle_scripts_1.o(script_data); + data/field_effect_scripts.o(script_data); + data/battle_scripts_2.o(script_data); + data/battle_ai_scripts.o(script_data); + data/mystery_event_script_cmd_table.o(script_data); + } =0 + + lib_text : + SUBALIGN(4) + { + asm/libgcnmultiboot.o(.text); + asm/m4a_1.o(.text); + src/m4a_2.o(.text); + asm/m4a_3.o(.text); + src/m4a_4.o(.text); + src/agb_flash.o(.text); + src/agb_flash_1m.o(.text); + src/agb_flash_mx.o(.text); + src/agb_flash_le.o(.text); + asm/librfu.o(.text); + src/isagbprn.o(.text); + asm/libagbsyscall.o(.text); + tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); + tools/agbcc/lib/libgcc.a:_divdi3.o(.text); + tools/agbcc/lib/libgcc.a:_divsi3.o(.text); + tools/agbcc/lib/libgcc.a:_dvmd_tls.o(.text); + tools/agbcc/lib/libgcc.a:_fixunsdfsi.o(.text); + tools/agbcc/lib/libgcc.a:_modsi3.o(.text); + tools/agbcc/lib/libgcc.a:_muldi3.o(.text); + tools/agbcc/lib/libgcc.a:_udivdi3.o(.text); + tools/agbcc/lib/libgcc.a:_udivsi3.o(.text); + tools/agbcc/lib/libgcc.a:_umodsi3.o(.text); + tools/agbcc/lib/libgcc.a:dp-bit.o(.text); + tools/agbcc/lib/libgcc.a:fp-bit.o(.text); + tools/agbcc/lib/libgcc.a:_lshrdi3.o(.text); + tools/agbcc/lib/libgcc.a:_negdi2.o(.text); + tools/agbcc/lib/libc.a:memcpy.o(.text); + tools/agbcc/lib/libc.a:memset.o(.text); + tools/agbcc/lib/libc.a:strcmp.o(.text); + tools/agbcc/lib/libc.a:strcpy.o(.text); + tools/agbcc/lib/libc.a:impure.o(.text); + tools/agbcc/lib/libc.a:vsprintf.o(.text); + tools/agbcc/lib/libc.a:vfprintf.o(.text); + tools/agbcc/lib/libc.a:wsetup.o(.text); + tools/agbcc/lib/libc.a:dtoa.o(.text); + tools/agbcc/lib/libc.a:fflush.o(.text); + tools/agbcc/lib/libc.a:findfp.o(.text); + tools/agbcc/lib/libc.a:freer.o(.text); + tools/agbcc/lib/libc.a:mtrim.o(.text); + tools/agbcc/lib/libc.a:fvwrite.o(.text); + tools/agbcc/lib/libc.a:fwalk.o(.text); + tools/agbcc/lib/libc.a:locale.o(.text); + tools/agbcc/lib/libc.a:makebuf.o(.text); + tools/agbcc/lib/libc.a:mallocr.o(.text); + tools/agbcc/lib/libc.a:mbtowc_r.o(.text); + tools/agbcc/lib/libc.a:memchr.o(.text); + tools/agbcc/lib/libc.a:memmove.o(.text); + tools/agbcc/lib/libc.a:mlock.o(.text); + tools/agbcc/lib/libc.a:mprec.o(.text); + tools/agbcc/lib/libc.a:s_isinf.o(.text); + tools/agbcc/lib/libc.a:s_isnan.o(.text); + tools/agbcc/lib/libc.a:sbrkr.o(.text); + tools/agbcc/lib/libc.a:stdio.o(.text); + tools/agbcc/lib/libc.a:strlen.o(.text); + tools/agbcc/lib/libc.a:syscalls.o(.text); + tools/agbcc/lib/libc.a:writer.o(.text); + tools/agbcc/lib/libc.a:callocr.o(.text); + tools/agbcc/lib/libc.a:closer.o(.text); + tools/agbcc/lib/libc.a:errno.o(.text); + tools/agbcc/lib/libc.a:fstatr.o(.text); + tools/agbcc/lib/libc.a:libcfunc.o(.text); + tools/agbcc/lib/libc.a:lseekr.o(.text); + tools/agbcc/lib/libc.a:readr.o(.text); + } =0 + + .rodata : + SUBALIGN(4) + { + data/data.o(.rodata); + src/m4a_tables.o(.rodata); + data/sound_data.o(.rodata); + } =0 + + lib_rodata : + SUBALIGN(4) + { + src/agb_flash.o(.rodata); + src/agb_flash_1m.o(.rodata); + src/agb_flash_mx.o(.rodata); + src/agb_flash_le.o(.rodata); + data/librfu_rodata.o(.rodata); + src/isagbprn.o(.rodata); + tools/agbcc/lib/libgcc.a:_divdi3.o(.rodata); + tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata); + tools/agbcc/lib/libc.a:memcpy.o(.rodata); + tools/agbcc/lib/libc.a:memset.o(.rodata); + tools/agbcc/lib/libc.a:strcmp.o(.rodata); + tools/agbcc/lib/libc.a:strcpy.o(.rodata); + tools/agbcc/lib/libc.a:impure.o(.rodata); + tools/agbcc/lib/libc.a:vsprintf.o(.rodata); + tools/agbcc/lib/libc.a:vfprintf.o(.rodata); + tools/agbcc/lib/libc.a:wsetup.o(.rodata); + tools/agbcc/lib/libc.a:dtoa.o(.rodata); + tools/agbcc/lib/libc.a:fflush.o(.rodata); + tools/agbcc/lib/libc.a:findfp.o(.rodata); + tools/agbcc/lib/libc.a:freer.o(.rodata); + tools/agbcc/lib/libc.a:mtrim.o(.rodata); + tools/agbcc/lib/libc.a:fvwrite.o(.rodata); + tools/agbcc/lib/libc.a:fwalk.o(.rodata); + tools/agbcc/lib/libc.a:locale.o(.rodata); + tools/agbcc/lib/libc.a:makebuf.o(.rodata); + tools/agbcc/lib/libc.a:mallocr.o(.rodata); + tools/agbcc/lib/libc.a:mbtowc_r.o(.rodata); + tools/agbcc/lib/libc.a:memchr.o(.rodata); + tools/agbcc/lib/libc.a:memmove.o(.rodata); + tools/agbcc/lib/libc.a:mlock.o(.rodata); + tools/agbcc/lib/libc.a:mprec.o(.rodata); + tools/agbcc/lib/libc.a:s_isinf.o(.rodata); + tools/agbcc/lib/libc.a:s_isnan.o(.rodata); + tools/agbcc/lib/libc.a:sbrkr.o(.rodata); + tools/agbcc/lib/libc.a:stdio.o(.rodata); + tools/agbcc/lib/libc.a:strlen.o(.rodata); + tools/agbcc/lib/libc.a:syscalls.o(.rodata); + tools/agbcc/lib/libc.a:writer.o(.rodata); + tools/agbcc/lib/libc.a:callocr.o(.rodata); + tools/agbcc/lib/libc.a:closer.o(.rodata); + tools/agbcc/lib/libc.a:errno.o(.rodata); + tools/agbcc/lib/libc.a:fstatr.o(.rodata); + tools/agbcc/lib/libc.a:libcfunc.o(.rodata); + tools/agbcc/lib/libc.a:lseekr.o(.rodata); + tools/agbcc/lib/libc.a:readr.o(.rodata); + + . = ALIGN(4); + } =0 + + other_data : + SUBALIGN(4) + { + data/unknown_serial_data.o(.rodata); + data/multiboot_berry_glitch_fix.o(.rodata); + data/multiboot_pokemon_colosseum.o(.rodata); + } =0 + + . = 0x8D00000; + + gfx_data : + SUBALIGN(4) + { + data/graphics.o(gfx_data); + } =0 + + /* DWARF 2 sections */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + + /* Discard everything not specifically mentioned above. */ + /DISCARD/ : + { + *(*); + } +} diff --git a/src/agb_flash.c b/src/agb_flash.c new file mode 100644 index 000000000..5b171abcb --- /dev/null +++ b/src/agb_flash.c @@ -0,0 +1,295 @@ +#include "gba/gba.h" +#include "gba/flash_internal.h" + +static u8 sTimerNum; +static u16 sTimerCount; +static vu16 *sTimerReg; +static u16 sSavedIme; + +u8 gFlashTimeoutFlag; +u8 (*PollFlashStatus)(u8 *); +u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData); +u16 (*ProgramFlashSector)(u16 sectorNum, void *src); +const struct FlashType *gFlash; +u16 (*ProgramFlashByte)(u16 sectorNum, u32 offset, u8 data); +u16 gFlashNumRemainingBytes; +u16 (*EraseFlashChip)(); +u16 (*EraseFlashSector)(u16 sectorNum); +const u16 *gFlashMaxTime; + +void SetReadFlash1(u16 *dest); + +void SwitchFlashBank(u8 bankNum) +{ + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0xB0); + FLASH_WRITE(0x0000, bankNum); +} + +#define DELAY() \ +do { \ + vu16 i; \ + for (i = 20000; i != 0; i--) \ + ; \ +} while (0) + +u16 ReadFlashId(void) +{ + u16 flashId; + u16 readFlash1Buffer[0x20]; + u8 (*readFlash1)(u8 *); + + SetReadFlash1(readFlash1Buffer); + readFlash1 = (u8 (*)(u8 *))((s32)readFlash1Buffer + 1); + + // Enter ID mode. + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0x90); + DELAY(); + + flashId = readFlash1(FLASH_BASE + 1) << 8; + flashId |= readFlash1(FLASH_BASE); + + // Leave ID mode. + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0xF0); + FLASH_WRITE(0x5555, 0xF0); + DELAY(); + + return flashId; +} + +void FlashTimerIntr(void) +{ + if (sTimerCount != 0 && --sTimerCount == 0) + gFlashTimeoutFlag = 1; +} + +u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)) +{ + if (timerNum >= 4) + return 1; + + sTimerNum = timerNum; + sTimerReg = ®_TMCNT(sTimerNum); + *intrFunc = FlashTimerIntr; + return 0; +} + +void StartFlashTimer(u8 phase) +{ + const u16 *maxTime = &gFlashMaxTime[phase * 3]; + sSavedIme = REG_IME; + REG_IME = 0; + sTimerReg[1] = 0; + REG_IE |= (INTR_FLAG_TIMER0 << sTimerNum); + gFlashTimeoutFlag = 0; + sTimerCount = *maxTime++; + *sTimerReg++ = *maxTime++; + *sTimerReg-- = *maxTime++; + REG_IF = (INTR_FLAG_TIMER0 << sTimerNum); + REG_IME = 1; +} + +void StopFlashTimer(void) +{ + REG_IME = 0; + *sTimerReg++ = 0; + *sTimerReg-- = 0; + REG_IE &= ~(INTR_FLAG_TIMER0 << sTimerNum); + REG_IME = sSavedIme; +} + +u8 ReadFlash1(u8 *addr) +{ + return *addr; +} + +void SetReadFlash1(u16 *dest) +{ + u16 *src; + u16 i; + + PollFlashStatus = (u8 (*)(u8 *))((s32)dest + 1); + + src = (u16 *)ReadFlash1; + src = (u16 *)((s32)src ^ 1); + + i = ((s32)SetReadFlash1 - (s32)ReadFlash1) >> 1; + + while (i != 0) + { + *dest++ = *src++; + i--; + } +} + +void ReadFlash_Core(u8 *src, u8 *dest, u32 size) +{ + while (size-- != 0) + { + *dest++ = *src++; + } +} + +void ReadFlash(u16 sectorNum, u32 offset, void *dest, u32 size) +{ + u8 *src; + u16 i; + u16 readFlash_Core_Buffer[0x40]; + u16 *funcSrc; + u16 *funcDest; + void (*readFlash_Core)(u8 *, u8 *, u32); + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; + + if (gFlash->romSize == FLASH_ROM_SIZE_1M) + { + SwitchFlashBank(sectorNum / SECTORS_PER_BANK); + sectorNum %= SECTORS_PER_BANK; + } + + funcSrc = (u16 *)ReadFlash_Core; + funcSrc = (u16 *)((s32)funcSrc ^ 1); + funcDest = readFlash_Core_Buffer; + + i = ((s32)ReadFlash - (s32)ReadFlash_Core) >> 1; + + while (i != 0) + { + *funcDest++ = *funcSrc++; + i--; + } + + readFlash_Core = (void (*)(u8 *, u8 *, u32))((s32)readFlash_Core_Buffer + 1); + + src = FLASH_BASE + (sectorNum << gFlash->sector.shift) + offset; + + readFlash_Core(src, dest, size); +} + +u32 VerifyFlashSector_Core(u8 *src, u8 *tgt, u32 size) +{ + while (size-- != 0) + { + if (*tgt++ != *src++) + return (u32)(tgt - 1); + } + + return 0; +} + +u32 VerifyFlashSector(u16 sectorNum, u8 *src) +{ + u16 i; + u16 verifyFlashSector_Core_Buffer[0x80]; + u16 *funcSrc; + u16 *funcDest; + u8 *tgt; + u16 size; + u32 (*verifyFlashSector_Core)(u8 *, u8 *, u32); + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; + + if (gFlash->romSize == FLASH_ROM_SIZE_1M) + { + SwitchFlashBank(sectorNum / SECTORS_PER_BANK); + sectorNum %= SECTORS_PER_BANK; + } + + funcSrc = (u16 *)VerifyFlashSector_Core; + funcSrc = (u16 *)((s32)funcSrc ^ 1); + funcDest = verifyFlashSector_Core_Buffer; + + i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1; + + while (i != 0) + { + *funcDest++ = *funcSrc++; + i--; + } + + verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1); + + tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift); + size = gFlash->sector.size; + + return verifyFlashSector_Core(src, tgt, size); // return 0 if verified. +} + +u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n) +{ + u16 i; + u16 verifyFlashSector_Core_Buffer[0x80]; + u16 *funcSrc; + u16 *funcDest; + u8 *tgt; + u32 (*verifyFlashSector_Core)(u8 *, u8 *, u32); + + if (gFlash->romSize == FLASH_ROM_SIZE_1M) + { + SwitchFlashBank(sectorNum / SECTORS_PER_BANK); + sectorNum %= SECTORS_PER_BANK; + } + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; + + funcSrc = (u16 *)VerifyFlashSector_Core; + funcSrc = (u16 *)((s32)funcSrc ^ 1); + funcDest = verifyFlashSector_Core_Buffer; + + i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1; + + while (i != 0) + { + *funcDest++ = *funcSrc++; + i--; + } + + verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1); + + tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift); + + return verifyFlashSector_Core(src, tgt, n); +} + +u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src) +{ + u8 i; + u32 result; + + for (i = 0; i < 3; i++) // 3 attempts + { + result = ProgramFlashSector(sectorNum, src); + if (result != 0) + continue; + + result = VerifyFlashSector(sectorNum, src); + if (result == 0) + break; + } + + return result; // return 0 if verified and programmed. +} + +u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, void *dataSrc, u32 n) +{ + u8 i; + u32 result; + + for (i = 0; i < 3; i++) + { + result = ProgramFlashSector(sectorNum, dataSrc); + if (result != 0) + continue; + + result = VerifyFlashSectorNBytes(sectorNum, dataSrc, n); + if (result == 0) + break; + } + + return result; +} diff --git a/src/agb_flash_1m.c b/src/agb_flash_1m.c new file mode 100644 index 000000000..e249fab9a --- /dev/null +++ b/src/agb_flash_1m.c @@ -0,0 +1,86 @@ +#include "gba/gba.h" +#include "gba/flash_internal.h" + +static const char AgbLibFlashVersion[] = "FLASH1M_V103"; + +const struct FlashSetupInfo * const sSetupInfos[] = +{ + &MX29L010, + &LE26FV10N1TS, + &DefaultFlash +}; + +u16 IdentifyFlash(void) +{ + u16 result; + u16 flashId; + const struct FlashSetupInfo * const *setupInfo; + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; + + flashId = ReadFlashId(); + + setupInfo = sSetupInfos; + result = 1; + + for (;;) + { + if ((*setupInfo)->type.ids.separate.makerId == 0) + break; + + if (flashId == (*setupInfo)->type.ids.joined) + { + result = 0; + break; + } + + setupInfo++; + } + + ProgramFlashByte = (*setupInfo)->programFlashByte; + ProgramFlashSector = (*setupInfo)->programFlashSector; + EraseFlashChip = (*setupInfo)->eraseFlashChip; + EraseFlashSector = (*setupInfo)->eraseFlashSector; + WaitForFlashWrite = (*setupInfo)->WaitForFlashWrite; + gFlashMaxTime = (*setupInfo)->maxTime; + gFlash = &(*setupInfo)->type; + + return result; +} + +u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData) +{ + u16 result = 0; + u8 status; + + StartFlashTimer(phase); + + while ((status = PollFlashStatus(addr)) != lastData) + { + if (status & 0x20) + { + // The write operation exceeded the flash chip's time limit. + + if (PollFlashStatus(addr) == lastData) + break; + + FLASH_WRITE(0x5555, 0xF0); + result = phase | 0xA000u; + break; + } + + if (gFlashTimeoutFlag) + { + if (PollFlashStatus(addr) == lastData) + break; + + FLASH_WRITE(0x5555, 0xF0); + result = phase | 0xC000u; + break; + } + } + + StopFlashTimer(); + + return result; +} diff --git a/src/agb_flash_le.c b/src/agb_flash_le.c new file mode 100644 index 000000000..39d956e27 --- /dev/null +++ b/src/agb_flash_le.c @@ -0,0 +1,31 @@ +#include "gba/gba.h" +#include "gba/flash_internal.h" + +const u16 leMaxTime[] = +{ + 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, + 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, + 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, + 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, +}; + +const struct FlashSetupInfo LE26FV10N1TS = +{ + ProgramFlashByte_MX, + ProgramFlashSector_MX, + EraseFlashChip_MX, + EraseFlashSector_MX, + WaitForFlashWrite_Common, + leMaxTime, + { + 131072, // ROM size + { + 4096, // sector size + 12, // bit shift to multiply by sector size (4096 == 1 << 12) + 32, // number of sectors + 0 // appears to be unused + }, + { 3, 1 }, // wait state setup data + { { 0x62, 0x13 } } // ID + } +}; diff --git a/src/agb_flash_mx.c b/src/agb_flash_mx.c new file mode 100644 index 000000000..b4f710f36 --- /dev/null +++ b/src/agb_flash_mx.c @@ -0,0 +1,197 @@ +#include "gba/gba.h" +#include "gba/flash_internal.h" + +const u16 mxMaxTime[] = +{ + 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, + 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, + 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, + 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, +}; + +const struct FlashSetupInfo MX29L010 = +{ + ProgramFlashByte_MX, + ProgramFlashSector_MX, + EraseFlashChip_MX, + EraseFlashSector_MX, + WaitForFlashWrite_Common, + mxMaxTime, + { + 131072, // ROM size + { + 4096, // sector size + 12, // bit shift to multiply by sector size (4096 == 1 << 12) + 32, // number of sectors + 0 // appears to be unused + }, + { 3, 1 }, // wait state setup data +#if defined(GERMAN) && defined(SAPPHIRE) + { { 0xBF, 0xD4 } } // ID +#else + { { 0xC2, 0x09 } } // ID +#endif + } +}; + +const struct FlashSetupInfo DefaultFlash = +{ + ProgramFlashByte_MX, + ProgramFlashSector_MX, + EraseFlashChip_MX, + EraseFlashSector_MX, + WaitForFlashWrite_Common, + mxMaxTime, + { + 131072, // ROM size + { + 4096, // sector size + 12, // bit shift to multiply by sector size (4096 == 1 << 12) + 32, // number of sectors + 0 // appears to be unused + }, + { 3, 1 }, // wait state setup data + { { 0x00, 0x00 } } // ID of 0 + } +}; + +u16 EraseFlashChip_MX(void) +{ + u16 result; + u16 readFlash1Buffer[0x20]; + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; + + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0x80); + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0x10); + + SetReadFlash1(readFlash1Buffer); + + result = WaitForFlashWrite(3, FLASH_BASE, 0xFF); + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; + + return result; +} + +u16 EraseFlashSector_MX(u16 sectorNum) +{ + u16 numTries; + u16 result; + u8 *addr; + u16 readFlash1Buffer[0x20]; + + if (sectorNum >= gFlash->sector.count) + return 0x80FF; + + SwitchFlashBank(sectorNum / SECTORS_PER_BANK); + sectorNum %= SECTORS_PER_BANK; + + numTries = 0; + +try_erase: + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; + + addr = FLASH_BASE + (sectorNum << gFlash->sector.shift); + + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0x80); + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + *addr = 0x30; + + SetReadFlash1(readFlash1Buffer); + + result = WaitForFlashWrite(2, addr, 0xFF); + + if (!(result & 0xA000) || numTries > 3) + goto done; + + numTries++; + + goto try_erase; + +done: + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; + + return result; +} + +u16 ProgramFlashByte_MX(u16 sectorNum, u32 offset, u8 data) +{ + u8 *addr; + u16 readFlash1Buffer[0x20]; + + if (offset >= gFlash->sector.size) + return 0x8000; + + SwitchFlashBank(sectorNum / SECTORS_PER_BANK); + sectorNum %= SECTORS_PER_BANK; + + addr = FLASH_BASE + (sectorNum << gFlash->sector.shift) + offset; + + SetReadFlash1(readFlash1Buffer); + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; + + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0xA0); + *addr = data; + + return WaitForFlashWrite(1, addr, data); +} + +static u16 ProgramByte(u8 *src, u8 *dest) +{ + FLASH_WRITE(0x5555, 0xAA); + FLASH_WRITE(0x2AAA, 0x55); + FLASH_WRITE(0x5555, 0xA0); + *dest = *src; + + return WaitForFlashWrite(1, dest, *src); +} + +u16 ProgramFlashSector_MX(u16 sectorNum, void *src) +{ + u16 result; + u8 *dest; + u16 readFlash1Buffer[0x20]; + + if (sectorNum >= gFlash->sector.count) + return 0x80FF; + + result = EraseFlashSector_MX(sectorNum); + + if (result != 0) + return result; + + SwitchFlashBank(sectorNum / SECTORS_PER_BANK); + sectorNum %= SECTORS_PER_BANK; + + SetReadFlash1(readFlash1Buffer); + + REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; + + gFlashNumRemainingBytes = gFlash->sector.size; + dest = FLASH_BASE + (sectorNum << gFlash->sector.shift); + + while (gFlashNumRemainingBytes > 0) + { + result = ProgramByte(src, dest); + + if (result != 0) + break; + + gFlashNumRemainingBytes--; + src++; + dest++; + } + + return result; +} diff --git a/src/isagbprn.c b/src/isagbprn.c new file mode 100644 index 000000000..63e372ca2 --- /dev/null +++ b/src/isagbprn.c @@ -0,0 +1,148 @@ +#include +#include +#include "gba/gba.h" + +#define AGB_PRINT_FLUSH_ADDR 0x9FE209D +#define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 +#define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE +#define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) + +struct AGBPrintStruct +{ + u16 m_nRequest; + u16 m_nBank; + u16 m_nGet; + u16 m_nPut; +}; + +typedef void (*LPFN_PRINT_FLUSH)(void); + +void AGBPrintFlush1Block(void); + +void AGBPrintInit(void) +{ + struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + *pProtect = 0x20; + pPrint->m_nRequest = pPrint->m_nGet = pPrint->m_nPut = 0; + pPrint->m_nBank = 0xFD; + *pProtect = 0; + *pWSCNT = nOldWSCNT; +} + +static void AGBPutcInternal(const char cChr) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pPrintBuf = (u16 *)(0x8000000 + (pPrint->m_nBank << 16)); + u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + u16 nData = pPrintBuf[pPrint->m_nPut / 2]; + *pProtect = 0x20; + nData = (pPrint->m_nPut & 1) ? (nData & 0xFF) | (cChr << 8) : (nData & 0xFF00) | cChr; + pPrintBuf[pPrint->m_nPut / 2] = nData; + pPrint->m_nPut++; + *pProtect = 0; +} + +void AGBPutc(const char cChr) +{ + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + struct AGBPrintStruct *pPrint; + *pWSCNT = WSCNT_DATA; + AGBPutcInternal(cChr); + *pWSCNT = nOldWSCNT; + pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + if (pPrint->m_nPut == ((pPrint->m_nGet - 1) & 0xFFFF)) + AGBPrintFlush1Block(); +} + +void AGBPrint(const char *pBuf) +{ + struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; +} + +void AGBPrintf(const char *pBuf, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, pBuf); + vsprintf(bufPrint, pBuf, vArgv); + va_end(vArgv); + AGBPrint(bufPrint); +} + +static void AGBPrintTransferDataInternal(u32 bAllData) +{ + LPFN_PRINT_FLUSH lpfnFuncFlush; + u16 *pIME; + u16 nIME; + u16 *pWSCNT; + u16 nOldWSCNT; + u16 *pProtect; + volatile struct AGBPrintStruct *pPrint; + + pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + lpfnFuncFlush = (LPFN_PRINT_FLUSH)AGB_PRINT_FLUSH_ADDR; + pIME = (u16 *)REG_ADDR_IME; + nIME = *pIME; + pWSCNT = (u16 *)REG_ADDR_WAITCNT; + nOldWSCNT = *pWSCNT; + *pIME = nIME & ~1; + *pWSCNT = WSCNT_DATA; + + if (bAllData) + { + while (pPrint->m_nPut != pPrint->m_nGet) + { + *pProtect = 0x20; + lpfnFuncFlush(); + *pProtect = 0; + } + } + else if (pPrint->m_nPut != pPrint->m_nGet) + { + *pProtect = 0x20; + lpfnFuncFlush(); + *pProtect = 0; + } + + *pWSCNT = nOldWSCNT; + *pIME = nIME; +} + +void AGBPrintFlush1Block(void) +{ + AGBPrintTransferDataInternal(FALSE); +} + +void AGBPrintFlush(void) +{ + AGBPrintTransferDataInternal(TRUE); +} + +void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram) +{ + if (nStopProgram) + { + AGBPrintf("ASSERTION FAILED FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); + AGBPrintFlush(); + asm(".hword 0xEFFF"); + } + else + { + AGBPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); + } +} diff --git a/src/m4a_2.c b/src/m4a_2.c new file mode 100644 index 000000000..2d3c65848 --- /dev/null +++ b/src/m4a_2.c @@ -0,0 +1,912 @@ +#include "gba/m4a_internal.h" + +#define BSS_CODE __attribute__((section(".bss.code"))) + +BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0}; + +struct SoundInfo gSoundInfo; +struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES]; +struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES]; +void *gMPlayJumpTable[36]; +struct CgbChannel gCgbChans[4]; +struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2]; +struct PokemonCrySong gPokemonCrySong; +struct MusicPlayerInfo gMPlay_BGM; +struct MusicPlayerInfo gMPlay_SE1; +struct MusicPlayerInfo gMPlay_SE2; +struct MusicPlayerInfo gMPlay_SE3; +u8 gMPlayMemAccArea[0x10]; + +u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust) +{ + u32 val1; + u32 val2; + u32 fineAdjustShifted = fineAdjust << 24; + + if (key > 178) + { + key = 178; + fineAdjustShifted = 255 << 24; + } + + val1 = gScaleTable[key]; + val1 = gFreqTable[val1 & 0xF] >> (val1 >> 4); + + val2 = gScaleTable[key + 1]; + val2 = gFreqTable[val2 & 0xF] >> (val2 >> 4); + + return umul3232H32(wav->freq, val1 + umul3232H32(val2 - val1, fineAdjustShifted)); +} + +void UnusedDummyFunc() +{ +} + +void MPlayContinue(struct MusicPlayerInfo *mplayInfo) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE; + mplayInfo->ident = ID_NUMBER; + } +} + +void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->fadeOC = speed; + mplayInfo->fadeOI = speed; + mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT); + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aSoundInit(void) +{ + s32 i; + + CpuCopy32((void *)((s32)SoundMainRAM & ~1), SoundMainRAM_Buffer, sizeof(SoundMainRAM_Buffer)); + + SoundInit(&gSoundInfo); + MPlayExtender(gCgbChans); + m4aSoundMode(SOUND_MODE_DA_BIT_8 + | SOUND_MODE_FREQ_13379 + | (12 << SOUND_MODE_MASVOL_SHIFT) + | (5 << SOUND_MODE_MAXCHN_SHIFT)); + + for (i = 0; i < NUM_MUSIC_PLAYERS; i++) + { + struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info; + MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].unk_8); + mplayInfo->unk_B = gMPlayTable[i].unk_A; + mplayInfo->memAccArea = gMPlayMemAccArea; + } + + memcpy(&gPokemonCrySong, &gPokemonCrySongTemplate, sizeof(struct PokemonCrySong)); + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + { + struct MusicPlayerInfo *mplayInfo = &gPokemonCryMusicPlayers[i]; + struct MusicPlayerTrack *track = &gPokemonCryTracks[i * 2]; + MPlayOpen(mplayInfo, track, 2); + track->chan = 0; + } +} + +void m4aSoundMain(void) +{ + SoundMain(); +} + +void m4aSongNumStart(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + MPlayStart(mplay->info, song->header); +} + +void m4aSongNumStartOrChange(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader != song->header) + { + MPlayStart(mplay->info, song->header); + } + else + { + if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0 + || (mplay->info->status & MUSICPLAYER_STATUS_PAUSE)) + { + MPlayStart(mplay->info, song->header); + } + } +} + +void m4aSongNumStartOrContinue(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader != song->header) + MPlayStart(mplay->info, song->header); + else if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0) + MPlayStart(mplay->info, song->header); + else if (mplay->info->status & MUSICPLAYER_STATUS_PAUSE) + MPlayContinue(mplay->info); +} + +void m4aSongNumStop(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader == song->header) + m4aMPlayStop(mplay->info); +} + +void m4aSongNumContinue(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader == song->header) + MPlayContinue(mplay->info); +} + +void m4aMPlayAllStop(void) +{ + s32 i; + + for (i = 0; i < NUM_MUSIC_PLAYERS; i++) + m4aMPlayStop(gMPlayTable[i].info); + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + m4aMPlayStop(&gPokemonCryMusicPlayers[i]); +} + +void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo) +{ + MPlayContinue(mplayInfo); +} + +void m4aMPlayAllContinue(void) +{ + s32 i; + + for (i = 0; i < NUM_MUSIC_PLAYERS; i++) + MPlayContinue(gMPlayTable[i].info); + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + MPlayContinue(&gPokemonCryMusicPlayers[i]); +} + +void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + MPlayFadeOut(mplayInfo, speed); +} + +void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->fadeOC = speed; + mplayInfo->fadeOI = speed; + mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT) | TEMPORARY_FADE; + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->fadeOC = speed; + mplayInfo->fadeOI = speed; + mplayInfo->fadeOV = (0 << FADE_VOL_SHIFT) | FADE_IN; + mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE; + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo) +{ + s32 trackCount = mplayInfo->trackCount; + struct MusicPlayerTrack *track = mplayInfo->tracks; + + while (trackCount > 0) + { + if (track->flags & MPT_FLG_EXIST) + { + if (track->flags & MPT_FLG_START) + { + Clear64byte(track); + track->flags = MPT_FLG_EXIST; + track->bendRange = 2; + track->volX = 64; + track->lfoSpeed = 22; + track->tone.type = 1; + } + } + + trackCount--; + track++; + } +} + +void MPlayExtender(struct CgbChannel *cgbChans) +{ + struct SoundInfo *soundInfo; + u32 ident; + + REG_SOUNDCNT_X = SOUND_MASTER_ENABLE + | SOUND_4_ON + | SOUND_3_ON + | SOUND_2_ON + | SOUND_1_ON; + REG_SOUNDCNT_L = 0; // set master volume to zero + REG_NR12 = 0x8; + REG_NR22 = 0x8; + REG_NR42 = 0x8; + REG_NR14 = 0x80; + REG_NR24 = 0x80; + REG_NR44 = 0x80; + REG_NR30 = 0; + REG_NR50 = 0x77; + + soundInfo = SOUND_INFO_PTR; + + ident = soundInfo->ident; + + if (ident != ID_NUMBER) + return; + + soundInfo->ident++; + + gMPlayJumpTable[8] = ply_memacc; + gMPlayJumpTable[17] = ply_lfos; + gMPlayJumpTable[19] = ply_mod; + gMPlayJumpTable[28] = ply_xcmd; + gMPlayJumpTable[29] = ply_endtie; + gMPlayJumpTable[30] = SampleFreqSet; + gMPlayJumpTable[31] = TrackStop; + gMPlayJumpTable[32] = FadeOutBody; + gMPlayJumpTable[33] = TrkVolPitSet; + + soundInfo->cgbChans = (struct CgbChannel *)cgbChans; + soundInfo->CgbSound = CgbSound; + soundInfo->CgbOscOff = CgbOscOff; + soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq; + soundInfo->maxLines = MAX_LINES; + + CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4); + + cgbChans[0].ty = 1; + cgbChans[0].panMask = 0x11; + cgbChans[1].ty = 2; + cgbChans[1].panMask = 0x22; + cgbChans[2].ty = 3; + cgbChans[2].panMask = 0x44; + cgbChans[3].ty = 4; + cgbChans[3].panMask = 0x88; + + soundInfo->ident = ident; +} + +void MusicPlayerJumpTableCopy(void) +{ + asm("swi 0x2A"); +} + +void ClearChain(void *x) +{ + void (*func)(void *) = *(&gMPlayJumpTable[34]); + func(x); +} + +void Clear64byte(void *x) +{ + void (*func)(void *) = *(&gMPlayJumpTable[35]); + func(x); +} + +void SoundInit(struct SoundInfo *soundInfo) +{ + soundInfo->ident = 0; + + if (REG_DMA1CNT & (DMA_REPEAT << 16)) + REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + if (REG_DMA2CNT & (DMA_REPEAT << 16)) + REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + REG_DMA1CNT_H = DMA_32BIT; + REG_DMA2CNT_H = DMA_32BIT; + REG_SOUNDCNT_X = SOUND_MASTER_ENABLE + | SOUND_4_ON + | SOUND_3_ON + | SOUND_2_ON + | SOUND_1_ON; + REG_SOUNDCNT_H = SOUND_B_FIFO_RESET | SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT + | SOUND_A_FIFO_RESET | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT + | SOUND_ALL_MIX_FULL; + REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40; + + REG_DMA1SAD = (s32)soundInfo->pcmBuffer; + REG_DMA1DAD = (s32)®_FIFO_A; + REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; + REG_DMA2DAD = (s32)®_FIFO_B; + + SOUND_INFO_PTR = soundInfo; + CpuFill32(0, soundInfo, sizeof(struct SoundInfo)); + + soundInfo->maxChans = 8; + soundInfo->masterVolume = 15; + soundInfo->plynote = (u32)ply_note; + soundInfo->CgbSound = DummyFunc; + soundInfo->CgbOscOff = (void (*)(u8))DummyFunc; + soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc; + soundInfo->ExtVolPit = (u32)DummyFunc; + + MPlayJumpTableCopy(gMPlayJumpTable); + + soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable; + + SampleFreqSet(SOUND_MODE_FREQ_13379); + + soundInfo->ident = ID_NUMBER; +} + +void SampleFreqSet(u32 freq) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + freq = (freq & 0xF0000) >> 16; + soundInfo->freq = freq; + soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1]; + soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank; + + // LCD refresh rate 59.7275Hz + soundInfo->pcmFreq = (597275 * soundInfo->pcmSamplesPerVBlank + 5000) / 10000; + + // CPU frequency 16.78Mhz + soundInfo->divFreq = (16777216 / soundInfo->pcmFreq + 1) >> 1; + + // Turn off timer 0. + REG_TM0CNT_H = 0; + + // cycles per LCD fresh 280896 + REG_TM0CNT_L = -(280896 / soundInfo->pcmSamplesPerVBlank); + + m4aSoundVSyncOn(); + + while (*(vu8 *)REG_ADDR_VCOUNT == 159) + ; + + while (*(vu8 *)REG_ADDR_VCOUNT != 159) + ; + + REG_TM0CNT_H = TIMER_ENABLE | TIMER_1CLK; +} + +void m4aSoundMode(u32 mode) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + u32 temp; + + if (soundInfo->ident != ID_NUMBER) + return; + + soundInfo->ident++; + + temp = mode & (SOUND_MODE_REVERB_SET | SOUND_MODE_REVERB_VAL); + + if (temp) + soundInfo->reverb = temp & SOUND_MODE_REVERB_VAL; + + temp = mode & SOUND_MODE_MAXCHN; + + if (temp) + { + struct SoundChannel *chan; + + soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT; + + temp = MAX_DIRECTSOUND_CHANNELS; + chan = &soundInfo->chans[0]; + + while (temp != 0) + { + chan->status = 0; + temp--; + chan++; + } + } + + temp = mode & SOUND_MODE_MASVOL; + + if (temp) + soundInfo->masterVolume = temp >> SOUND_MODE_MASVOL_SHIFT; + + temp = mode & SOUND_MODE_DA_BIT; + + if (temp) + { + temp = (temp & 0x300000) >> 14; + REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | temp; + } + + temp = mode & SOUND_MODE_FREQ; + + if (temp) + { + m4aSoundVSyncOff(); + SampleFreqSet(temp); + } + + soundInfo->ident = ID_NUMBER; +} + +void SoundClear(void) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + s32 i; + void *chan; + + if (soundInfo->ident != ID_NUMBER) + return; + + soundInfo->ident++; + + i = MAX_DIRECTSOUND_CHANNELS; + chan = &soundInfo->chans[0]; + + while (i > 0) + { + ((struct SoundChannel *)chan)->status = 0; + i--; + chan = (void *)((s32)chan + sizeof(struct SoundChannel)); + } + + chan = soundInfo->cgbChans; + + if (chan) + { + i = 1; + + while (i <= 4) + { + soundInfo->CgbOscOff(i); + ((struct CgbChannel *)chan)->sf = 0; + i++; + chan = (void *)((s32)chan + sizeof(struct CgbChannel)); + } + } + + soundInfo->ident = ID_NUMBER; +} + +void m4aSoundVSyncOff(void) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1) + { + soundInfo->ident += 10; + + if (REG_DMA1CNT & (DMA_REPEAT << 16)) + REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + if (REG_DMA2CNT & (DMA_REPEAT << 16)) + REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + REG_DMA1CNT_H = DMA_32BIT; + REG_DMA2CNT_H = DMA_32BIT; + + CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer)); + } +} + +void m4aSoundVSyncOn(void) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + u32 ident = soundInfo->ident; + + if (ident == ID_NUMBER) + return; + + REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT; + REG_DMA2CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT; + + soundInfo->pcmDmaCounter = 0; + soundInfo->ident = ident - 10; +} + +void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tracks, u8 trackCount) +{ + struct SoundInfo *soundInfo; + + if (trackCount == 0) + return; + + if (trackCount > MAX_MUSICPLAYER_TRACKS) + trackCount = MAX_MUSICPLAYER_TRACKS; + + soundInfo = SOUND_INFO_PTR; + + if (soundInfo->ident != ID_NUMBER) + return; + + soundInfo->ident++; + + Clear64byte(mplayInfo); + + mplayInfo->tracks = tracks; + mplayInfo->trackCount = trackCount; + mplayInfo->status = MUSICPLAYER_STATUS_PAUSE; + + while (trackCount != 0) + { + tracks->flags = 0; + trackCount--; + tracks++; + } + + if (soundInfo->func != 0) + { + mplayInfo->func = soundInfo->func; + mplayInfo->intp = soundInfo->intp; + soundInfo->func = 0; + } + + soundInfo->intp = (u32)mplayInfo; + soundInfo->func = (u32)MPlayMain; + soundInfo->ident = ID_NUMBER; + mplayInfo->ident = ID_NUMBER; +} + +void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader) +{ + s32 i; + u8 unk_B; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + unk_B = mplayInfo->unk_B; + + if (!unk_B + || ((!mplayInfo->songHeader || !(mplayInfo->tracks[0].flags & MPT_FLG_START)) + && ((mplayInfo->status & MUSICPLAYER_STATUS_TRACK) == 0 + || (mplayInfo->status & MUSICPLAYER_STATUS_PAUSE))) + || (mplayInfo->priority <= songHeader->priority)) + { + mplayInfo->ident++; + mplayInfo->status = 0; + mplayInfo->songHeader = songHeader; + mplayInfo->tone = songHeader->tone; + mplayInfo->priority = songHeader->priority; + mplayInfo->clock = 0; + mplayInfo->tempoD = 150; + mplayInfo->tempoI = 150; + mplayInfo->tempoU = 0x100; + mplayInfo->tempoC = 0; + mplayInfo->fadeOI = 0; + + i = 0; + track = mplayInfo->tracks; + + while (i < songHeader->trackCount && i < mplayInfo->trackCount) + { + TrackStop(mplayInfo, track); + track->flags = MPT_FLG_EXIST | MPT_FLG_START; + track->chan = 0; + track->cmdPtr = songHeader->part[i]; + i++; + track++; + } + + while (i < mplayInfo->trackCount) + { + TrackStop(mplayInfo, track); + track->flags = 0; + i++; + track++; + } + + if (songHeader->reverb & 0x80) + m4aSoundMode(songHeader->reverb); + + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo) +{ + s32 i; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + + while (i > 0) + { + TrackStop(mplayInfo, track); + i--; + track++; + } + + mplayInfo->ident = ID_NUMBER; +} + +void FadeOutBody(struct MusicPlayerInfo *mplayInfo) +{ + s32 i; + struct MusicPlayerTrack *track; + u16 fadeOI = mplayInfo->fadeOI; + register u32 temp asm("r3"); + register u16 mask asm("r2"); + + if (fadeOI == 0) + return; + + mplayInfo->fadeOC--; + + temp = 0xFFFF; + mask = temp; + + if (mplayInfo->fadeOC != 0) + return; + + mplayInfo->fadeOC = fadeOI; + + if (mplayInfo->fadeOV & FADE_IN) + { + mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT); + + if ((u16)(mplayInfo->fadeOV & mask) >= (64 << FADE_VOL_SHIFT)) + { + mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT); + mplayInfo->fadeOI = 0; + } + } + else + { + mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT); + + if ((s16)(mplayInfo->fadeOV & mask) <= 0) + { + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + + while (i > 0) + { + register u32 fadeOV asm("r7"); + u32 val; + + TrackStop(mplayInfo, track); + + val = TEMPORARY_FADE; + fadeOV = mplayInfo->fadeOV; + val &= fadeOV; + + if (!val) + track->flags = 0; + + i--; + track++; + } + + if (mplayInfo->fadeOV & TEMPORARY_FADE) + mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; + else + mplayInfo->status = MUSICPLAYER_STATUS_PAUSE; + + mplayInfo->fadeOI = 0; + return; + } + } + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + + while (i > 0) + { + if (track->flags & MPT_FLG_EXIST) + { + track->volX = (mplayInfo->fadeOV >> FADE_VOL_SHIFT); + track->flags |= MPT_FLG_VOLCHG; + } + + i--; + track++; + } +} + +void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + if (track->flags & MPT_FLG_VOLSET) + { + s32 x; + s32 y; + + x = (u32)(track->vol * track->volX) >> 5; + + if (track->modT == 1) + x = (u32)(x * (track->modM + 128)) >> 7; + + y = 2 * track->pan + track->panX; + + if (track->modT == 2) + y += track->modM; + + if (y < -128) + y = -128; + else if (y > 127) + y = 127; + + track->volMR = (u32)((y + 128) * x) >> 8; + track->volML = (u32)((127 - y) * x) >> 8; + } + + if (track->flags & MPT_FLG_PITSET) + { + s32 bend = track->bend * track->bendRange; + register s32 x asm("r1") = track->tune; + x += bend; + x *= 4; + x += (track->keyShift << 8); + x += (track->keyShiftX << 8); + x += track->pitX; + + if (track->modT == 0) + x += 16 * track->modM; + + track->keyM = x >> 8; + track->pitM = x; + } + + track->flags &= ~(MPT_FLG_PITSET | MPT_FLG_VOLSET); +} + +u32 MidiKeyToCgbFreq(u8 chanNum, u8 key, u8 fineAdjust) +{ + if (chanNum == 4) + { + if (key <= 20) + { + key = 0; + } + else + { + key -= 21; + if (key > 59) + key = 59; + } + + return gNoiseTable[key]; + } + else + { + s32 val1; + s32 val2; + + if (key <= 35) + { + fineAdjust = 0; + key = 0; + } + else + { + key -= 36; + if (key > 130) + { + key = 130; + fineAdjust = 255; + } + } + + val1 = gCgbScaleTable[key]; + val1 = gCgbFreqTable[val1 & 0xF] >> (val1 >> 4); + + val2 = gCgbScaleTable[key + 1]; + val2 = gCgbFreqTable[val2 & 0xF] >> (val2 >> 4); + + return val1 + ((fineAdjust * (val2 - val1)) >> 8) + 2048; + } +} + +void CgbOscOff(u8 chanNum) +{ + switch (chanNum) + { + case 1: + REG_NR12 = 8; + REG_NR14 = 0x80; + break; + case 2: + REG_NR22 = 8; + REG_NR24 = 0x80; + break; + case 3: + REG_NR30 = 0; + break; + default: + REG_NR42 = 8; + REG_NR44 = 0x80; + } +} + +static inline int CgbPan(struct CgbChannel *chan) +{ + u32 rightVolume = chan->rightVolume; + u32 leftVolume = chan->leftVolume; + + if ((rightVolume = (u8)rightVolume) >= (leftVolume = (u8)leftVolume)) + { + if (rightVolume / 2 >= leftVolume) + { + chan->pan = 0x0F; + return 1; + } + } + else + { + if (leftVolume / 2 >= rightVolume) + { + chan->pan = 0xF0; + return 1; + } + } + + return 0; +} + +void CgbModVol(struct CgbChannel *chan) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if ((soundInfo->mode & 1) || !CgbPan(chan)) + { + chan->pan = 0xFF; + chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + } + else + { + // Force chan->rightVolume and chan->leftVolume to be read from memory again, + // even though there is no reason to do so. + // The command line option "-fno-gcse" achieves the same result as this. + asm("" : : : "memory"); + + chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + if (chan->eg > 15) + chan->eg = 15; + } + + chan->sg = (chan->eg * chan->su + 15) >> 4; + chan->pan &= chan->panMask; +} diff --git a/src/m4a_4.c b/src/m4a_4.c new file mode 100644 index 000000000..2e1d140b4 --- /dev/null +++ b/src/m4a_4.c @@ -0,0 +1,545 @@ +#include "gba/m4a_internal.h" + +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->tempoU = tempo; + mplayInfo->tempoI = (mplayInfo->tempoD * mplayInfo->tempoU) >> 8; + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->volX = volume / 4; + track->flags |= MPT_FLG_VOLCHG; + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->keyShiftX = (s16)pitch >> 8; + track->pitX = pitch; + track->flags |= MPT_FLG_PITCHG; + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->panX = pan; + track->flags |= MPT_FLG_VOLCHG; + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void ClearModM(struct MusicPlayerTrack *track) +{ + track->lfoSpeedC = 0; + track->modM = 0; + + if (track->modT == 0) + track->flags |= MPT_FLG_PITCHG; + else + track->flags |= MPT_FLG_VOLCHG; +} + +void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->mod = modDepth; + + if (!track->mod) + ClearModM(track); + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->lfoSpeed = lfoSpeed; + + if (!track->lfoSpeed) + ClearModM(track); + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +#define MEMACC_COND_JUMP(cond) \ +if (cond) \ + goto cond_true; \ +else \ + goto cond_false; \ + +void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 op; + u8 *addr; + u8 data; + + op = *track->cmdPtr; + track->cmdPtr++; + + addr = mplayInfo->memAccArea + *track->cmdPtr; + track->cmdPtr++; + + data = *track->cmdPtr; + track->cmdPtr++; + + switch (op) + { + case 0: + *addr = data; + return; + case 1: + *addr += data; + return; + case 2: + *addr -= data; + return; + case 3: + *addr = mplayInfo->memAccArea[data]; + return; + case 4: + *addr += mplayInfo->memAccArea[data]; + return; + case 5: + *addr -= mplayInfo->memAccArea[data]; + return; + case 6: + MEMACC_COND_JUMP(*addr == data) + return; + case 7: + MEMACC_COND_JUMP(*addr != data) + return; + case 8: + MEMACC_COND_JUMP(*addr > data) + return; + case 9: + MEMACC_COND_JUMP(*addr >= data) + return; + case 10: + MEMACC_COND_JUMP(*addr <= data) + return; + case 11: + MEMACC_COND_JUMP(*addr < data) + return; + case 12: + MEMACC_COND_JUMP(*addr == mplayInfo->memAccArea[data]) + return; + case 13: + MEMACC_COND_JUMP(*addr != mplayInfo->memAccArea[data]) + return; + case 14: + MEMACC_COND_JUMP(*addr > mplayInfo->memAccArea[data]) + return; + case 15: + MEMACC_COND_JUMP(*addr >= mplayInfo->memAccArea[data]) + return; + case 16: + MEMACC_COND_JUMP(*addr <= mplayInfo->memAccArea[data]) + return; + case 17: + MEMACC_COND_JUMP(*addr < mplayInfo->memAccArea[data]) + return; + default: + return; + } + +cond_true: + { + void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]); + func(mplayInfo, track); + return; + } + +cond_false: + track->cmdPtr += 4; +} + +void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 n = *track->cmdPtr; + track->cmdPtr++; + + gXcmdTable[n](mplayInfo, track); +} + +void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]); + func(mplayInfo, track); +} + +#define READ_XCMD_BYTE(var, n) \ +{ \ + u32 byte = track->cmdPtr[(n)]; \ + byte <<= n * 8; \ + (var) &= ~(0xFF << (n * 8)); \ + (var) |= byte; \ +} + +void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 wav; + + READ_XCMD_BYTE(wav, 0) // UB: uninitialized variable + READ_XCMD_BYTE(wav, 1) + READ_XCMD_BYTE(wav, 2) + READ_XCMD_BYTE(wav, 3) + + track->tone.wav = (struct WaveData *)wav; + track->cmdPtr += 4; +} + +void ply_xtype(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.type = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xatta(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.attack = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xdeca(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.decay = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xsust(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.sustain = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.release = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->echoVolume = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->echoLength = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xleng(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.length = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xswee(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.pan_sweep = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 unk; + + READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable + READ_XCMD_BYTE(unk, 1) + + if (track->unk_3A < (u16)unk) + { + track->unk_3A++; + track->cmdPtr -= 2; + track->wait = 1; + } + else + { + track->unk_3A = 0; + track->cmdPtr += 2; + } +} + +void ply_xcmd_0D(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 unk; + + READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable + READ_XCMD_BYTE(unk, 1) + READ_XCMD_BYTE(unk, 2) + READ_XCMD_BYTE(unk, 3) + + track->unk_3C = unk; + track->cmdPtr += 4; +} + +void DummyFunc(void) +{ +} + +struct MusicPlayerInfo *SetPokemonCryTone(struct ToneData *tone) +{ + u32 maxClock = 0; + s32 maxClockIndex = 0; + s32 i; + struct MusicPlayerInfo *mplayInfo; + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + { + struct MusicPlayerTrack *track = &gPokemonCryTracks[i * 2]; + + if (!track->flags && (!track->chan || track->chan->track != track)) + goto start_song; + + if (maxClock < gPokemonCryMusicPlayers[i].clock) + { + maxClock = gPokemonCryMusicPlayers[i].clock; + maxClockIndex = i; + } + } + + i = maxClockIndex; + +start_song: + mplayInfo = &gPokemonCryMusicPlayers[i]; + mplayInfo->ident++; + +#define CRY ((s32)&gPokemonCrySongs + i * sizeof(struct PokemonCrySong)) +#define CRY_OFS(field) offsetof(struct PokemonCrySong, field) + + memcpy((void *)CRY, &gPokemonCrySong, sizeof(struct PokemonCrySong)); + + *(u32 *)(CRY + CRY_OFS(tone)) = (u32)tone; + *(u32 *)(CRY + CRY_OFS(part)) = CRY + CRY_OFS(part0); + *(u32 *)(CRY + CRY_OFS(part) + 4) = CRY + CRY_OFS(part1); + *(u32 *)(CRY + CRY_OFS(gotoTarget)) = CRY + CRY_OFS(cont); + +#undef CRY_OFS +#undef CRY + + mplayInfo->ident = ID_NUMBER; + + MPlayStart(mplayInfo, (struct SongHeader *)(&gPokemonCrySongs[i])); + + return mplayInfo; +} + +void SetPokemonCryVolume(u8 val) +{ + gPokemonCrySong.volumeValue = val & 0x7F; +} + +void SetPokemonCryPanpot(s8 val) +{ + gPokemonCrySong.panValue = (val + C_V) & 0x7F; +} + +void SetPokemonCryPitch(s16 val) +{ + s16 b = val + 0x80; + u8 a = gPokemonCrySong.tuneValue2 - gPokemonCrySong.tuneValue; + gPokemonCrySong.tieKeyValue = (b >> 8) & 0x7F; + gPokemonCrySong.tuneValue = (b >> 1) & 0x7F; + gPokemonCrySong.tuneValue2 = (a + ((b >> 1) & 0x7F)) & 0x7F; +} + +void SetPokemonCryLength(u16 val) +{ + gPokemonCrySong.unkCmd0CParam = val; +} + +void SetPokemonCryRelease(u8 val) +{ + gPokemonCrySong.releaseValue = val; +} + +void SetPokemonCryProgress(u32 val) +{ + gPokemonCrySong.unkCmd0DParam = val; +} + +int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo) +{ + struct MusicPlayerTrack *track = mplayInfo->tracks; + + if (track->chan && track->chan->track == track) + return 1; + else + return 0; +} + +void SetPokemonCryChorus(s8 val) +{ + if (val) + { + gPokemonCrySong.trackCount = 2; + gPokemonCrySong.tuneValue2 = (val + gPokemonCrySong.tuneValue) & 0x7F; + } + else + { + gPokemonCrySong.trackCount = 1; + } +} + +void SetPokemonCryStereo(u32 val) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if (val) + { + REG_SOUNDCNT_H = SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT + | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT + | SOUND_ALL_MIX_FULL; + soundInfo->mode &= ~1; + } + else + { + REG_SOUNDCNT_H = SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT | SOUND_B_RIGHT_OUTPUT + | SOUND_A_TIMER_0 | SOUND_A_LEFT_OUTPUT | SOUND_A_RIGHT_OUTPUT + | SOUND_B_MIX_HALF | SOUND_A_MIX_HALF | SOUND_CGB_MIX_FULL; + soundInfo->mode |= 1; + } +} + +void SetPokemonCryPriority(u8 val) +{ + gPokemonCrySong.priority = val; +} diff --git a/src/m4a_tables.c b/src/m4a_tables.c new file mode 100644 index 000000000..91f00a31d --- /dev/null +++ b/src/m4a_tables.c @@ -0,0 +1,307 @@ +#include "gba/m4a_internal.h" + +// Some of these functions have different signatures, so we need to make this +// an array of void pointers or a struct. It's simpler to just make it an array +// for now. +void * const gMPlayJumpTableTemplate[] = +{ + ply_fine, + ply_goto, + ply_patt, + ply_pend, + ply_rept, + ply_fine, + ply_fine, + ply_fine, + ply_fine, + ply_prio, + ply_tempo, + ply_keysh, + ply_voice, + ply_vol, + ply_pan, + ply_bend, + ply_bendr, + ply_lfos, + ply_lfodl, + ply_mod, + ply_modt, + ply_fine, + ply_fine, + ply_tune, + ply_fine, + ply_fine, + ply_fine, + ply_port, + ply_fine, + ply_endtie, + SampleFreqSet, + TrackStop, + FadeOutBody, + TrkVolPitSet, + RealClearChain, + SoundMainBTM, +}; + +// This is a table of deltas between sample values in compressed PCM data. +const s8 gDeltaEncodingTable[] = +{ + 0, + 1, + 4, + 9, + 16, + 25, + 36, + 49, + -64, + -49, + -36, + -25, + -16, + -9, + -4, + -1, +}; + +const u8 gScaleTable[] = +{ + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, +}; + +const u32 gFreqTable[] = +{ + 2147483648u, + 2275179671u, + 2410468894u, + 2553802834u, + 2705659852u, + 2866546760u, + 3037000500u, + 3217589947u, + 3408917802u, + 3611622603u, + 3826380858u, + 4053909305u, +}; + +const u16 gPcmSamplesPerVBlankTable[] = +{ + 96, + 132, + 176, + 224, + 264, + 304, + 352, + 448, + 528, + 608, + 672, + 704, +}; + +const u8 gCgbScaleTable[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, +}; + +const s16 gCgbFreqTable[] = +{ + -2004, + -1891, + -1785, + -1685, + -1591, + -1501, + -1417, + -1337, + -1262, + -1192, + -1125, + -1062, +}; + +const u8 gNoiseTable[] = +{ + 0xD7, 0xD6, 0xD5, 0xD4, + 0xC7, 0xC6, 0xC5, 0xC4, + 0xB7, 0xB6, 0xB5, 0xB4, + 0xA7, 0xA6, 0xA5, 0xA4, + 0x97, 0x96, 0x95, 0x94, + 0x87, 0x86, 0x85, 0x84, + 0x77, 0x76, 0x75, 0x74, + 0x67, 0x66, 0x65, 0x64, + 0x57, 0x56, 0x55, 0x54, + 0x47, 0x46, 0x45, 0x44, + 0x37, 0x36, 0x35, 0x34, + 0x27, 0x26, 0x25, 0x24, + 0x17, 0x16, 0x15, 0x14, + 0x07, 0x06, 0x05, 0x04, + 0x03, 0x02, 0x01, 0x00, +}; + +const u8 gCgb3Vol[] = +{ + 0x00, 0x00, + 0x60, 0x60, 0x60, 0x60, + 0x40, 0x40, 0x40, 0x40, + 0x80, 0x80, 0x80, 0x80, + 0x20, 0x20, +}; + +const u8 gClockTable[] = +{ + 0x00, + 0x01, + 0x02, + 0x03, + 0x04, + 0x05, + 0x06, + 0x07, + 0x08, + 0x09, + 0x0A, + 0x0B, + 0x0C, + 0x0D, + 0x0E, + 0x0F, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x15, + 0x16, + 0x17, + 0x18, + 0x1C, + 0x1E, + 0x20, + 0x24, + 0x28, + 0x2A, + 0x2C, + 0x30, + 0x34, + 0x36, + 0x38, + 0x3C, + 0x40, + 0x42, + 0x44, + 0x48, + 0x4C, + 0x4E, + 0x50, + 0x54, + 0x58, + 0x5A, + 0x5C, + 0x60, +}; + +#define FINE 0xb1 +#define GOTO 0xb2 +#define PATT 0xb3 +#define PEND 0xb4 +#define REPT 0xb5 +#define MEMACC 0xb9 +#define PRIO 0xba +#define TEMPO 0xbb +#define KEYSH 0xbc +#define VOICE 0xbd +#define VOL 0xbe +#define PAN 0xbf +#define BEND 0xc0 +#define BENDR 0xc1 +#define LFOS 0xc2 +#define LFODL 0xc3 +#define MOD 0xc4 +#define MODT 0xc5 +#define TUNE 0xc8 + +#define XCMD 0xcd +#define xRELE 0x07 +#define xIECV 0x08 +#define xIECL 0x09 + +#define EOT 0xce +#define TIE 0xcf + +const struct PokemonCrySong gPokemonCrySongTemplate = +{ + 1, // track count + 0, // block count + 255, // priority + 0, // reverb + (struct ToneData *)&voicegroup_pokemon_cry, + NULL, + NULL, + 0, + TUNE, // part 0 + C_V, // TUNE value + GOTO, + 0, // GOTO target address + TUNE, // part 1 + C_V + 16, // TUNE value + {VOICE, 0}, // part 0 jumps here with GOTO + VOL, + 127, // volume + {XCMD, 0x0D}, + 0, // unk value + {XCMD, xRELE}, + 0, // release + PAN, + C_V, // PAN value + TIE, + 60, // TIE key (default is Cn3) + 127, // TIE velocity + {XCMD, 0x0C}, + 60, // unk value + {EOT, FINE} // end +}; + +const XcmdFunc gXcmdTable[] = +{ + ply_xxx, + ply_xwave, + ply_xtype, + ply_xxx, + ply_xatta, + ply_xdeca, + ply_xsust, + ply_xrele, + ply_xiecv, + ply_xiecl, + ply_xleng, + ply_xswee, + ply_xcmd_0C, + ply_xcmd_0D, +}; diff --git a/sym_bss.txt b/sym_bss.txt new file mode 100644 index 000000000..6ae993011 --- /dev/null +++ b/sym_bss.txt @@ -0,0 +1,395 @@ +gUnknown_3000000: @ 3000000 + .space 0x4 + +gUnknown_3000004: @ 3000004 + .space 0x5C + +gUnknown_3000060: @ 3000060 + .space 0x60 + +gUnknown_30000C0: @ 30000C0 + .space 0x1 + +gUnknown_30000C1: @ 30000C1 + .space 0x1 + +gUnknown_30000C2: @ 30000C2 + .space 0x6 + +gUnknown_30000C8: @ 30000C8 + .space 0xC + +gUnknown_30000D4: @ 30000D4 + .space 0x1C + +gUnknown_30000F0: @ 30000F0 + .space 0xA + +gUnknown_30000FA: @ 30000FA + .space 0x7CE + +gUnknown_30008C8: @ 30008C8 + .space 0x1 + +gUnknown_30008C9: @ 30008C9 + .space 0x7 + +gUnknown_30008D0: @ 30008D0 + .space 0x18 + +gUnknown_30008E8: @ 30008E8 + .space 0x4 + +gUnknown_30008EC: @ 30008EC + .space 0x8 + +gUnknown_30008F4: @ 30008F4 + .space 0x34 + +gUnknown_3000928: @ 3000928 + .space 0x10 + +gUnknown_3000938: @ 3000938 + .space 0x100 + +gUnknown_3000A38: @ 3000A38 + .space 0x4 + +gUnknown_3000A3C: @ 3000A3C + .space 0x4 + +gUnknown_3000A40: @ 3000A40 + .space 0xA2 + +gUnknown_3000AE2: @ 3000AE2 + .space 0x2 + +gUnknown_3000AE4: @ 3000AE4 + .space 0x2 + +gUnknown_3000AE6: @ 3000AE6 + .space 0x2 + +gUnknown_3000AE8: @ 3000AE8 + .space 0x80 + +gUnknown_3000B68: @ 3000B68 + .space 0x100 + +gUnknown_3000C68: @ 3000C68 + .space 0x180 + +gUnknown_3000DE8: @ 3000DE8 + .space 0x20 + +gUnknown_3000E08: @ 3000E08 + .space 0x10 + +gUnknown_3000E18: @ 3000E18 + .space 0x30 + +gUnknown_3000E48: @ 3000E48 + .space 0x4 + +gUnknown_3000E4C: @ 3000E4C + .space 0x4 + +gUnknown_3000E50: @ 3000E50 + .space 0x4 + +gUnknown_3000E54: @ 3000E54 + .space 0x4 + +gUnknown_3000E58: @ 3000E58 + .space 0x4 + +gUnknown_3000E5C: @ 3000E5C + .space 0x4 + +gUnknown_3000E60: @ 3000E60 + .space 0x4 + +gUnknown_3000E64: @ 3000E64 + .space 0x1 + +gUnknown_3000E65: @ 3000E65 + .space 0x1 + +gUnknown_3000E66: @ 3000E66 + .space 0x2 + +gUnknown_3000E68: @ 3000E68 + .space 0x2 + +gUnknown_3000E6A: @ 3000E6A + .space 0x1 + +gUnknown_3000E6B: @ 3000E6B + .space 0x1 + +gUnknown_3000E6C: @ 3000E6C + .space 0x8 + +gUnknown_3000E74: @ 3000E74 + .space 0x4 + +gUnknown_3000E78: @ 3000E78 + .space 0x4 + +gUnknown_3000E7C: @ 3000E7C + .space 0x4 + +gUnknown_3000E80: @ 3000E80 + .space 0x4 + +gUnknown_3000E84: @ 3000E84 + .space 0x4 + +gUnknown_3000E88: @ 3000E88 + .space 0x1 + +gUnknown_3000E89: @ 3000E89 + .space 0x7 + +gUnknown_3000E90: @ 3000E90 + .space 0x8 + +gUnknown_3000E98: @ 3000E98 + .space 0x2 + +gUnknown_3000E9A: @ 3000E9A + .space 0x2 + +gUnknown_3000E9C: @ 3000E9C + .space 0x4 + +gUnknown_3000EA0: @ 3000EA0 + .space 0x8 + +gUnknown_3000EA8: @ 3000EA8 + .space 0x8 + +gUnknown_3000EB0: @ 3000EB0 + .space 0x78 + +gUnknown_3000F28: @ 3000F28 + .space 0x74 + +gUnknown_3000F9C: @ 3000F9C + .space 0x1 + +gUnknown_3000F9D: @ 3000F9D + .space 0x1 + +gUnknown_3000F9E: @ 3000F9E + .space 0x1 + +gUnknown_3000F9F: @ 3000F9F + .space 0x1 + +gUnknown_3000FA0: @ 3000FA0 + .space 0x1 + +gUnknown_3000FA1: @ 3000FA1 + .space 0x3 + +gUnknown_3000FA4: @ 3000FA4 + .space 0x4 + +gUnknown_3000FA8: @ 3000FA8 + .space 0x1 + +gUnknown_3000FA9: @ 3000FA9 + .space 0x3 + +gUnknown_3000FAC: @ 3000FAC + .space 0x2 + +gUnknown_3000FAE: @ 3000FAE + .space 0x2 + +gUnknown_3000FB0: @ 3000FB0 + .space 0x2 + +gUnknown_3000FB2: @ 3000FB2 + .space 0x2 + +gUnknown_3000FB4: @ 3000FB4 + .space 0x4 + +gUnknown_3000FB8: @ 3000FB8 + .space 0x4 + +gUnknown_3000FBC: @ 3000FBC + .space 0x4 + +gUnknown_3000FC0: @ 3000FC0 + .space 0x2 + +gUnknown_3000FC2: @ 3000FC2 + .space 0x2 + +gUnknown_3000FC4: @ 3000FC4 + .space 0x1 + +gUnknown_3000FC5: @ 3000FC5 + .space 0x1 + +gUnknown_3000FC6: @ 3000FC6 + .space 0x2 + +gUnknown_3000FC8: @ 3000FC8 + .space 0x20 + +gUnknown_3000FE8: @ 3000FE8 + .space 0x184 + +gUnknown_300116C: @ 300116C + .space 0x4 + +gUnknown_3001170: @ 3001170 + .space 0x4 + +gUnknown_3001174: @ 3001174 + .space 0x4 + +gUnknown_3001178: @ 3001178 + .space 0x4 + +gUnknown_300117C: @ 300117C + .space 0x4 + +gUnknown_3001180: @ 3001180 + .space 0x4 + +gUnknown_3001184: @ 3001184 + .space 0x4 + +gUnknown_3001188: @ 3001188 + .space 0x8 + +gUnknown_3001190: @ 3001190 + .space 0xE68 + +gUnknown_3001FF8: @ 3001FF8 + .space 0x10 + +gUnknown_3002008: @ 3002008 + .space 0x10 + +gUnknown_3002018: @ 3002018 + .space 0x4 + +gUnknown_300201C: @ 300201C + .space 0x4 + +gUnknown_3002020: @ 3002020 + .space 0x4 + +gUnknown_3002024: @ 3002024 + .space 0x4 + +gUnknown_3002028: @ 3002028 + .space 0x4 + +gUnknown_300202C: @ 300202C + .space 0x4 + +gUnknown_3002030: @ 3002030 + .space 0x8 + +gUnknown_3002038: @ 3002038 + .space 0x8 + +gUnknown_3002040: @ 3002040 + .space 0x4 + +gUnknown_3002044: @ 3002044 + .space 0x4 + +gUnknown_3002048: @ 3002048 + .space 0x18 + +gUnknown_3002060: @ 3002060 + .space 0x2 + +gUnknown_3002062: @ 3002062 + .space 0x2 + +gUnknown_3002064: @ 3002064 + .space 0x2 + +gUnknown_3002066: @ 3002066 + .space 0x2 + +gUnknown_3002068: @ 3002068 + .space 0x4 + +gUnknown_300206C: @ 300206C + .space 0x2 + +gUnknown_300206E: @ 300206E + .space 0x2 + +gUnknown_3002070: @ 3002070 + .space 0x2 + +gUnknown_3002072: @ 3002072 + .space 0x2 + +gUnknown_3002074: @ 3002074 + .space 0x4 + +gUnknown_3002078: @ 3002078 + .space 0x4 + +gUnknown_300207C: @ 300207C + .space 0x4 + +gUnknown_3002080: @ 3002080 + .space 0x8 + + .include "asm/m4a_1.o" + .include "src/agb_flash.o" + + .space 0x4 @ This isn't needed for Ruby/Sapphire or Emerald. + + .include "tools/agbcc/lib/libgcc.a:dp-bit.o" + .include "tools/agbcc/lib/libgcc.a:fp-bit.o" + .include "tools/agbcc/lib/libc.a:memcpy.o" + .include "tools/agbcc/lib/libc.a:memset.o" + .include "tools/agbcc/lib/libc.a:strcmp.o" + .include "tools/agbcc/lib/libc.a:strcpy.o" + .include "tools/agbcc/lib/libc.a:impure.o" + .include "tools/agbcc/lib/libc.a:vsprintf.o" + .include "tools/agbcc/lib/libc.a:vfprintf.o" + .include "tools/agbcc/lib/libc.a:wsetup.o" + .include "tools/agbcc/lib/libc.a:dtoa.o" + .include "tools/agbcc/lib/libc.a:fflush.o" + .include "tools/agbcc/lib/libc.a:findfp.o" + .include "tools/agbcc/lib/libc.a:freer.o" + .include "tools/agbcc/lib/libc.a:mtrim.o" + .include "tools/agbcc/lib/libc.a:fvwrite.o" + .include "tools/agbcc/lib/libc.a:fwalk.o" + .include "tools/agbcc/lib/libc.a:locale.o" + .include "tools/agbcc/lib/libc.a:makebuf.o" + .include "tools/agbcc/lib/libc.a:mallocr.o" + .include "tools/agbcc/lib/libc.a:mbtowc_r.o" + .include "tools/agbcc/lib/libc.a:memchr.o" + .include "tools/agbcc/lib/libc.a:memmove.o" + .include "tools/agbcc/lib/libc.a:mlock.o" + .include "tools/agbcc/lib/libc.a:mprec.o" + .include "tools/agbcc/lib/libc.a:s_isinf.o" + .include "tools/agbcc/lib/libc.a:s_isnan.o" + .include "tools/agbcc/lib/libc.a:sbrkr.o" + .include "tools/agbcc/lib/libc.a:stdio.o" + .include "tools/agbcc/lib/libc.a:strlen.o" + .include "tools/agbcc/lib/libc.a:syscalls.o" + .include "tools/agbcc/lib/libc.a:writer.o" + .include "tools/agbcc/lib/libc.a:callocr.o" + .include "tools/agbcc/lib/libc.a:closer.o" + .include "tools/agbcc/lib/libc.a:errno.o" + .include "tools/agbcc/lib/libc.a:fstatr.o" + .include "tools/agbcc/lib/libc.a:libcfunc.o" + .include "tools/agbcc/lib/libc.a:lseekr.o" + .include "tools/agbcc/lib/libc.a:readr.o" diff --git a/sym_common.txt b/sym_common.txt new file mode 100644 index 000000000..2235b30fb --- /dev/null +++ b/sym_common.txt @@ -0,0 +1,497 @@ +gUnknown_30030E0: @ 30030E0 + .space 0x4 + +gUnknown_30030E4: @ 30030E4 + .space 0xC + +gUnknown_30030F0: @ 30030F0 + .space 0x2C + +gUnknown_300311C: @ 300311C + .space 0xC + +gUnknown_3003128: @ 3003128 + .space 0x400 + +gUnknown_3003528: @ 3003528 + .space 0x4 + +gUnknown_300352C: @ 300352C + .space 0x4 + +gUnknown_3003530: @ 3003530 + .space 0x10 + +gIntrTable: @ 3003540 + .space 0x4 + +gUnknown_3003544: @ 3003544 + .space 0x34 + +gUnknown_3003578: @ 3003578 + .space 0x4 + +gUnknown_300357C: @ 300357C + .space 0x4 + +gUnknown_3003580: @ 3003580 + .space 0x800 + +gUnknown_3003D80: @ 3003D80 + .space 0x4 + +gUnknown_3003D84: @ 3003D84 + .space 0x4 + +gUnknown_3003D88: @ 3003D88 + .space 0x4 + +gUnknown_3003D8C: @ 3003D8C + .space 0x4 + +gUnknown_3003D90: @ 3003D90 + .space 0x10 + +gUnknown_3003DA0: @ 3003DA0 + .space 0x20 + +gUnknown_3003DC0: @ 3003DC0 + .space 0x20 + +gUnknown_3003DE0: @ 3003DE0 + .space 0x20 + +gUnknown_3003E00: @ 3003E00 + .space 0x20 + +gUnknown_3003E20: @ 3003E20 + .space 0x10 + +gUnknown_3003E30: @ 3003E30 + .space 0x10 + +gUnknown_3003E40: @ 3003E40 + .space 0x10 + +gUnknown_3003E50: @ 3003E50 + .space 0x4 + +gUnknown_3003E54: @ 3003E54 + .space 0x4 + +gUnknown_3003E58: @ 3003E58 + .space 0x8 + +gUnknown_3003E60: @ 3003E60 + .space 0xC + +gUnknown_3003E6C: @ 3003E6C + .space 0x4 + +gUnknown_3003E70: @ 3003E70 + .space 0x3C + +gUnknown_3003EAC: @ 3003EAC + .space 0x4 + +gUnknown_3003EB0: @ 3003EB0 + .space 0x8 + +gUnknown_3003EB8: @ 3003EB8 + .space 0x4 + +gUnknown_3003EBC: @ 3003EBC + .space 0x8 + +gUnknown_3003EC4: @ 3003EC4 + .space 0xC + +gUnknown_3003ED0: @ 3003ED0 + .space 0x2 + +gUnknown_3003ED2: @ 3003ED2 + .space 0x2 + +gUnknown_3003ED4: @ 3003ED4 + .space 0x4C + +gUnknown_3003F20: @ 3003F20 + .space 0x4 + +gUnknown_3003F24: @ 3003F24 + .space 0x4 + +gUnknown_3003F28: @ 3003F28 + .space 0x4 + +gUnknown_3003F2C: @ 3003F2C + .space 0x4 + +gUnknown_3003F30: @ 3003F30 + .space 0x4 + +gUnknown_3003F34: @ 3003F34 + .space 0x4 + +gUnknown_3003F38: @ 3003F38 + .space 0x4 + +gUnknown_3003F3C: @ 3003F3C + .space 0x4 + +gUnknown_3003F40: @ 3003F40 + .space 0x10 + +gUnknown_3003F50: @ 3003F50 + .space 0x10 + +gUnknown_3003F60: @ 3003F60 + .space 0x4 + +gUnknown_3003F64: @ 3003F64 + .space 0xC + +gUnknown_3003F70: @ 3003F70 + .space 0x10 + +gUnknown_3003F80: @ 3003F80 + .space 0x4 + +gUnknown_3003F84: @ 3003F84 + .space 0x4 + +gUnknown_3003F88: @ 3003F88 + .space 0x8 + +gUnknown_3003F90: @ 3003F90 + .space 0x10 + +gUnknown_3003FA0: @ 3003FA0 + .space 0x10 + +gUnknown_3003FB0: @ 3003FB0 + .space 0x4 + +gUnknown_3003FB4: @ 3003FB4 + .space 0xFBC + +gUnknown_3004F70: @ 3004F70 + .space 0x4 + +gUnknown_3004F74: @ 3004F74 + .space 0xC + +gUnknown_3004F80: @ 3004F80 + .space 0x4 + +gUnknown_3004F84: @ 3004F84 + .space 0xC + +gUnknown_3004F90: @ 3004F90 + .space 0x44 + +gUnknown_3004FD4: @ 3004FD4 + .space 0xC + +gUnknown_3004FE0: @ 3004FE0 + .space 0x10 + +gUnknown_3004FF0: @ 3004FF0 + .space 0x4 + +gUnknown_3004FF4: @ 3004FF4 + .space 0x4 + +gUnknown_3004FF8: @ 3004FF8 + .space 0x4 + +gUnknown_3004FFC: @ 3004FFC + .space 0x4 + +gUnknown_3005000: @ 3005000 + .space 0x4 + +gUnknown_3005004: @ 3005004 + .space 0x4 + +gUnknown_3005008: @ 3005008 + .space 0x4 + +gUnknown_300500C: @ 300500C + .space 0x4 + +gUnknown_3005010: @ 3005010 + .space 0x4 + +gUnknown_3005014: @ 3005014 + .space 0x4 + +gUnknown_3005018: @ 3005018 + .space 0x4 + +gUnknown_300501C: @ 300501C + .space 0x4 + +gUnknown_3005020: @ 3005020 + .space 0x4 + +gUnknown_3005024: @ 3005024 + .space 0x4 + +gUnknown_3005028: @ 3005028 + .space 0x4 + +gUnknown_300502C: @ 300502C + .space 0x4 + +gUnknown_3005030: @ 3005030 + .space 0x10 + +gUnknown_3005040: @ 3005040 + .space 0x10 + +gUnknown_3005050: @ 3005050 + .space 0x18 + +gUnknown_3005068: @ 3005068 + .space 0x4 + +gUnknown_300506C: @ 300506C + .space 0x4 + +gUnknown_3005070: @ 3005070 + .space 0x4 + +gUnknown_3005074: @ 3005074 + .space 0x4 + +gUnknown_3005078: @ 3005078 + .space 0x4 + +gUnknown_300507C: @ 300507C + .space 0x4 + +gUnknown_3005080: @ 3005080 + .space 0x10 + +gUnknown_3005090: @ 3005090 + .space 0x8 + +gUnknown_3005098: @ 3005098 + .space 0x298 + +gUnknown_3005330: @ 3005330 + .space 0x4 + +gUnknown_3005334: @ 3005334 + .space 0x4 + +gUnknown_3005338: @ 3005338 + .space 0x4 + +gUnknown_300533C: @ 300533C + .space 0x4 + +gUnknown_3005340: @ 3005340 + .space 0x4 + +gUnknown_3005344: @ 3005344 + .space 0x4 + +gUnknown_3005348: @ 3005348 + .space 0x4 + +gUnknown_300534C: @ 300534C + .space 0x4 + +gUnknown_3005350: @ 3005350 + .space 0x4 + +gUnknown_3005354: @ 3005354 + .space 0xC + +gUnknown_3005360: @ 3005360 + .space 0x18 + +gUnknown_3005378: @ 3005378 + .space 0x4 + +gUnknown_300537C: @ 300537C + .space 0x4 + +gUnknown_3005380: @ 3005380 + .space 0x4 + +gUnknown_3005384: @ 3005384 + .space 0x4 + +gUnknown_3005388: @ 3005388 + .space 0x4 + +gUnknown_300538C: @ 300538C + .space 0x4 + +gUnknown_3005390: @ 3005390 + .space 0x4 + +gUnknown_3005394: @ 3005394 + .space 0x4 + +gUnknown_3005398: @ 3005398 + .space 0x8 + +gUnknown_30053A0: @ 30053A0 + .space 0x4 + +gUnknown_30053A4: @ 30053A4 + .space 0xC + +gUnknown_30053B0: @ 30053B0 + .space 0x70 + +gUnknown_3005420: @ 3005420 + .space 0x4 + +gUnknown_3005424: @ 3005424 + .space 0x4 + +gUnknown_3005428: @ 3005428 + .space 0x4 + +gUnknown_300542C: @ 300542C + .space 0x4 + +gUnknown_3005430: @ 3005430 + .space 0x10 + +gUnknown_3005440: @ 3005440 + .space 0x10 + +gUnknown_3005450: @ 3005450 + .space 0x14 + +gUnknown_3005464: @ 3005464 + .space 0x58 + +gUnknown_30054BC: @ 30054BC + .space 0x2 + +gUnknown_30054BE: @ 30054BE + .space 0x76 + +gUnknown_3005534: @ 3005534 + .space 0xE + +gUnknown_3005542: @ 3005542 + .space 0x18 + +gUnknown_300555A: @ 300555A + .space 0x1A + +gUnknown_3005574: @ 3005574 + .space 0x57C + +gUnknown_3005AF0: @ 3005AF0 + .space 0x29F + +gUnknown_3005D8F: @ 3005D8F + .space 0x47 + +gUnknown_3005DD6: @ 3005DD6 + .space 0x3 + +gUnknown_3005DD9: @ 3005DD9 + .space 0x4 + +gUnknown_3005DDD: @ 3005DDD + .space 0x9 + +gUnknown_3005DE6: @ 3005DE6 + .space 0x1A + +gUnknown_3005E00: @ 3005E00 + .space 0x10 + +gUnknown_3005E10: @ 3005E10 + .space 0x10 + +gUnknown_3005E20: @ 3005E20 + .space 0x40 + +gUnknown_3005E60: @ 3005E60 + .space 0x10 + +gUnknown_3005E70: @ 3005E70 + .space 0x18 + +gUnknown_3005E88: @ 3005E88 + .space 0x4 + +gUnknown_3005E8C: @ 3005E8C + .space 0x4 + +gUnknown_3005E90: @ 3005E90 + .space 0x4 + +gUnknown_3005E94: @ 3005E94 + .space 0x4 + +gUnknown_3005E98: @ 3005E98 + .space 0x4 + +gUnknown_3005E9C: @ 3005E9C + .space 0x4 + +gUnknown_3005EA0: @ 3005EA0 + .space 0x10 + +gUnknown_3005EB0: @ 3005EB0 + .space 0x18 + +gUnknown_3005EC8: @ 3005EC8 + .space 0x4 + +gUnknown_3005ECC: @ 3005ECC + .space 0x4 + +gUnknown_3005ED0: @ 3005ED0 + .space 0x10 + +gUnknown_3005EE0: @ 3005EE0 + .space 0x10 + +gUnknown_3005EF0: @ 3005EF0 + .space 0x4 + +gUnknown_3005EF4: @ 3005EF4 + .space 0x4 + +gUnknown_3005EF8: @ 3005EF8 + .space 0x8 + +gUnknown_3005F00: @ 3005F00 + .space 0x50 + + .include "m4a_2.o" + .include "agb_flash.o" + +gRfuState: @ 3007438 + .space 0x8 + +gUnknown_3007440: @ 3007440 + .space 0x10 + +gUnknown_3007450: @ 3007450 + .space 0x10 + +gUnknown_3007460: @ 3007460 + .space 0x4 + +gUnknown_3007464: @ 3007464 + .space 0x4 + +gUnknown_3007468: @ 3007468 + .space 0x8 + +gUnknown_3007470: @ 3007470 + .space 0xC diff --git a/sym_ewram.txt b/sym_ewram.txt new file mode 100644 index 000000000..f31a93d50 --- /dev/null +++ b/sym_ewram.txt @@ -0,0 +1,1979 @@ +gUnknown_201C000: @ 201C000 + .space 0x20 + +gUnknown_201C020: @ 201C020 + .space 0xA8 + +gUnknown_201C0C8: @ 201C0C8 + .space 0x22F8 + +gUnknown_201E3C0: @ 201E3C0 + .space 0x1040 + +gUnknown_201F400: @ 201F400 + .space 0x400 + +gUnknown_201F800: @ 201F800 + .space 0x500 + +gUnknown_201FD00: @ 201FD00 + .space 0x1E0 + +gUnknown_201FEE0: @ 201FEE0 + .space 0x20 + +gUnknown_201FF00: @ 201FF00 + .space 0x100 + +gUnknown_2020000: @ 2020000 + .space 0x4 + +gUnknown_2020004: @ 2020004 + .space 0x4 + +gUnknown_2020008: @ 2020008 + .space 0x4 + +gUnknown_202000C: @ 202000C + .space 0x4 + +gUnknown_2020010: @ 2020010 + .space 0x24 + +gUnknown_2020034: @ 2020034 + .space 0x480 + +gUnknown_20204B4: @ 20204B4 + .space 0x180 + +gUnknown_2020634: @ 2020634 + .space 0x4 + +gUnknown_2020638: @ 2020638 + .space 0x4 + +gUnknown_202063C: @ 202063C + .space 0x1C + +gUnknown_2020658: @ 2020658 + .space 0x1128 + +gUnknown_2021780: @ 2021780 + .space 0x80 + +gUnknown_2021800: @ 2021800 + .space 0x40 + +gUnknown_2021840: @ 2021840 + .space 0x1 + +gUnknown_2021841: @ 2021841 + .space 0x3 + +gUnknown_2021844: @ 2021844 + .space 0x300 + +gUnknown_2021B44: @ 2021B44 + .space 0x2 + +gUnknown_2021B46: @ 2021B46 + .space 0x2 + +gUnknown_2021B48: @ 2021B48 + .space 0x80 + +gUnknown_2021BC8: @ 2021BC8 + .space 0x2 + +gUnknown_2021BCA: @ 2021BCA + .space 0x2 + +gUnknown_2021BCC: @ 2021BCC + .space 0x100 + +gUnknown_2021CCC: @ 2021CCC + .space 0x4 + +gUnknown_2021CD0: @ 2021CD0 + .space 0x20 + +gUnknown_2021CF0: @ 2021CF0 + .space 0x14 + +gUnknown_2021D04: @ 2021D04 + .space 0x14 + +gUnknown_2021D18: @ 2021D18 + .space 0x3E8 + +gUnknown_2022100: @ 2022100 + .space 0x10 + +gUnknown_2022110: @ 2022110 + .space 0x1 + +gUnknown_2022111: @ 2022111 + .space 0x3 + +gUnknown_2022114: @ 2022114 + .space 0x4 + +gUnknown_2022118: @ 2022118 + .space 0x4 + +gUnknown_202211C: @ 202211C + .space 0x4FC + +gUnknown_2022618: @ 2022618 + .space 0x100 + +gUnknown_2022718: @ 2022718 + .space 0x2 + +gUnknown_202271A: @ 202271A + .space 0x2 + +gUnknown_202271C: @ 202271C + .space 0x4 + +gUnknown_2022720: @ 2022720 + .space 0x1C + +gUnknown_202273C: @ 202273C + .space 0x8 + +gUnknown_2022744: @ 2022744 + .space 0x1C + +gUnknown_2022760: @ 2022760 + .space 0x68 + +gUnknown_20227C8: @ 20227C8 + .space 0x8C + +gUnknown_2022854: @ 2022854 + .space 0x8 + +gUnknown_202285C: @ 202285C + .space 0x4 + +gUnknown_2022860: @ 2022860 + .space 0xC + +gUnknown_202286C: @ 202286C + .space 0x1 + +gUnknown_202286D: @ 202286D + .space 0x1 + +gUnknown_202286E: @ 202286E + .space 0x2 + +gUnknown_2022870: @ 2022870 + .space 0x4 + +gUnknown_2022874: @ 2022874 + .space 0x100 + +gUnknown_2022974: @ 2022974 + .space 0x2 + +gUnknown_2022976: @ 2022976 + .space 0x2 + +gUnknown_2022978: @ 2022978 + .space 0x2 + +gUnknown_202297A: @ 202297A + .space 0x2 + +gUnknown_202297C: @ 202297C + .space 0x2 + +gUnknown_202297E: @ 202297E + .space 0x2 + +gUnknown_2022980: @ 2022980 + .space 0x2 + +gUnknown_2022982: @ 2022982 + .space 0x2 + +gUnknown_2022984: @ 2022984 + .space 0x2 + +gUnknown_2022986: @ 2022986 + .space 0x2 + +gUnknown_2022988: @ 2022988 + .space 0x2 + +gUnknown_202298A: @ 202298A + .space 0x2 + +gUnknown_202298C: @ 202298C + .space 0x12C + +gUnknown_2022AB8: @ 2022AB8 + .space 0x10 + +gUnknown_2022AC8: @ 2022AC8 + .space 0x10 + +gUnknown_2022AD8: @ 2022AD8 + .space 0x10 + +gUnknown_2022AE8: @ 2022AE8 + .space 0x64 + +gUnknown_2022B4C: @ 2022B4C + .space 0x4 + +gUnknown_2022B50: @ 2022B50 + .space 0x4 + +gUnknown_2022B54: @ 2022B54 + .space 0x4 + +gUnknown_2022B58: @ 2022B58 + .space 0x60 + +gUnknown_2022BB8: @ 2022BB8 + .space 0x4 + +gUnknown_2022BBC: @ 2022BBC + .space 0x4 + +gUnknown_2022BC0: @ 2022BC0 + .space 0x4 + +gUnknown_2022BC4: @ 2022BC4 + .space 0x2 + +gUnknown_2022BC6: @ 2022BC6 + .space 0x1 + +gUnknown_2022BC7: @ 2022BC7 + .space 0x1 + +gUnknown_2022BC8: @ 2022BC8 + .space 0x7FC + +gUnknown_20233C4: @ 20233C4 + .space 0x4 + +gUnknown_20233C8: @ 20233C8 + .space 0x7FC + +gUnknown_2023BC4: @ 2023BC4 + .space 0x4 + +gUnknown_2023BC8: @ 2023BC8 + .space 0x4 + +gUnknown_2023BCC: @ 2023BCC + .space 0x2 + +gUnknown_2023BCE: @ 2023BCE + .space 0x8 + +gUnknown_2023BD6: @ 2023BD6 + .space 0x4 + +gUnknown_2023BDA: @ 2023BDA + .space 0x4 + +gUnknown_2023BDE: @ 2023BDE + .space 0x4 + +gUnknown_2023BE2: @ 2023BE2 + .space 0x1 + +gUnknown_2023BE3: @ 2023BE3 + .space 0x1 + +gUnknown_2023BE4: @ 2023BE4 + .space 0xC + +gUnknown_2023BF0: @ 2023BF0 + .space 0xC + +gUnknown_2023BFC: @ 2023BFC + .space 0xC + +gUnknown_2023C08: @ 2023C08 + .space 0x4 + +gUnknown_2023C0C: @ 2023C0C + .space 0x24 + +gUnknown_2023C30: @ 2023C30 + .space 0x4 + +gUnknown_2023C34: @ 2023C34 + .space 0x110 + +gUnknown_2023D44: @ 2023D44 + .space 0x4 + +gUnknown_2023D48: @ 2023D48 + .space 0x1 + +gUnknown_2023D49: @ 2023D49 + .space 0x1 + +gUnknown_2023D4A: @ 2023D4A + .space 0x2 + +gUnknown_2023D4C: @ 2023D4C + .space 0x2 + +gUnknown_2023D4E: @ 2023D4E + .space 0x2 + +gUnknown_2023D50: @ 2023D50 + .space 0x4 + +gUnknown_2023D54: @ 2023D54 + .space 0x4 + +gUnknown_2023D58: @ 2023D58 + .space 0x10 + +gUnknown_2023D68: @ 2023D68 + .space 0x2 + +gUnknown_2023D6A: @ 2023D6A + .space 0x1 + +gUnknown_2023D6B: @ 2023D6B + .space 0x1 + +gUnknown_2023D6C: @ 2023D6C + .space 0x1 + +gUnknown_2023D6D: @ 2023D6D + .space 0x1 + +gUnknown_2023D6E: @ 2023D6E + .space 0x1 + +gUnknown_2023D6F: @ 2023D6F + .space 0x1 + +gUnknown_2023D70: @ 2023D70 + .space 0x1 + +gUnknown_2023D71: @ 2023D71 + .space 0x1 + +gUnknown_2023D72: @ 2023D72 + .space 0x2 + +gUnknown_2023D74: @ 2023D74 + .space 0x8 + +gUnknown_2023D7C: @ 2023D7C + .space 0x4 + +gUnknown_2023D80: @ 2023D80 + .space 0x10 + +gUnknown_2023D90: @ 2023D90 + .space 0x8 + +gUnknown_2023D98: @ 2023D98 + .space 0x8 + +gUnknown_2023DA0: @ 2023DA0 + .space 0x8 + +gUnknown_2023DA8: @ 2023DA8 + .space 0x8 + +gUnknown_2023DB0: @ 2023DB0 + .space 0x8 + +gUnknown_2023DB8: @ 2023DB8 + .space 0x8 + +gUnknown_2023DC0: @ 2023DC0 + .space 0x4 + +gUnknown_2023DC4: @ 2023DC4 + .space 0x8 + +gUnknown_2023DCC: @ 2023DCC + .space 0x4 + +gUnknown_2023DD0: @ 2023DD0 + .space 0x4 + +gUnknown_2023DD4: @ 2023DD4 + .space 0x4 + +gUnknown_2023DD8: @ 2023DD8 + .space 0x4 + +gUnknown_2023DDC: @ 2023DDC + .space 0x2 + +gUnknown_2023DDE: @ 2023DDE + .space 0x6 + +gUnknown_2023DE4: @ 2023DE4 + .space 0x18 + +gUnknown_2023DFC: @ 2023DFC + .space 0x10 + +gUnknown_2023E0C: @ 2023E0C + .space 0x70 + +gUnknown_2023E7C: @ 2023E7C + .space 0x2 + +gUnknown_2023E7E: @ 2023E7E + .space 0x2 + +gUnknown_2023E80: @ 2023E80 + .space 0x2 + +gUnknown_2023E82: @ 2023E82 + .space 0x1 + +gUnknown_2023E83: @ 2023E83 + .space 0x7 + +gUnknown_2023E8A: @ 2023E8A + .space 0x2 + +gUnknown_2023E8C: @ 2023E8C + .space 0x40 + +gUnknown_2023ECC: @ 2023ECC + .space 0x50 + +gUnknown_2023F1C: @ 2023F1C + .space 0x4 + +gUnknown_2023F20: @ 2023F20 + .space 0x2C + +gUnknown_2023F4C: @ 2023F4C + .space 0x2 + +gUnknown_2023F4E: @ 2023F4E + .space 0x2 + +gUnknown_2023F50: @ 2023F50 + .space 0x2 + +gUnknown_2023F52: @ 2023F52 + .space 0x2 + +gUnknown_2023F54: @ 2023F54 + .space 0x8 + +gUnknown_2023F5C: @ 2023F5C + .space 0x68 + +gUnknown_2023FC4: @ 2023FC4 + .space 0x4 + +gUnknown_2023FC8: @ 2023FC8 + .space 0x20 + +gUnknown_2023FE8: @ 2023FE8 + .space 0x4 + +gUnknown_2023FEC: @ 2023FEC + .space 0x4 + +gUnknown_2023FF0: @ 2023FF0 + .space 0x4 + +gUnknown_2023FF4: @ 2023FF4 + .space 0x4 + +gUnknown_2023FF8: @ 2023FF8 + .space 0x4 + +gUnknown_2023FFC: @ 2023FFC + .space 0x4 + +gUnknown_2024000: @ 2024000 + .space 0x4 + +gUnknown_2024004: @ 2024004 + .space 0x1 + +gUnknown_2024005: @ 2024005 + .space 0x3 + +gUnknown_2024008: @ 2024008 + .space 0x10 + +gUnknown_2024018: @ 2024018 + .space 0x4 + +gUnknown_202401C: @ 202401C + .space 0x4 + +gUnknown_2024020: @ 2024020 + .space 0x2 + +gUnknown_2024022: @ 2024022 + .space 0x2 + +gUnknown_2024024: @ 2024024 + .space 0x4 + +gUnknown_2024028: @ 2024028 + .space 0x1 + +gUnknown_2024029: @ 2024029 + .space 0x1 + +gUnknown_202402A: @ 202402A + .space 0x2 + +gUnknown_202402C: @ 202402C + .space 0xC8 + +gUnknown_20240F4: @ 20240F4 + .space 0x64 + +gUnknown_2024158: @ 2024158 + .space 0x64 + +gUnknown_20241BC: @ 20241BC + .space 0x64 + +gUnknown_2024220: @ 2024220 + .space 0x64 + +gUnknown_2024284: @ 2024284 + .space 0x64 + +gUnknown_20242E8: @ 20242E8 + .space 0x64 + +gUnknown_202434C: @ 202434C + .space 0x64 + +gUnknown_20243B0: @ 20243B0 + .space 0x64 + +gUnknown_2024414: @ 2024414 + .space 0x64 + +gUnknown_2024478: @ 2024478 + .space 0x64 + +gUnknown_20244DC: @ 20244DC + .space 0x18 + +gUnknown_20244F4: @ 20244F4 + .space 0x4 + +gUnknown_20244F8: @ 20244F8 + .space 0x64 + +gUnknown_202455C: @ 202455C + .space 0x8 + +gUnknown_2024564: @ 2024564 + .space 0x8 + +gUnknown_202456C: @ 202456C + .space 0x14 + +gUnknown_2024580: @ 2024580 + .space 0x8 + +gUnknown_2024588: @ 2024588 + .space 0xFA4 + +gUnknown_202552C: @ 202552C + .space 0x3DE8 + +gUnknown_2029314: @ 2029314 + .space 0x8450 + +gUnknown_2031764: @ 2031764 + .space 0x528 + +gUnknown_2031C8C: @ 2031C8C + .space 0x4 + +gUnknown_2031C90: @ 2031C90 + .space 0x4 + +gUnknown_2031C94: @ 2031C94 + .space 0x38 + +gUnknown_2031CCC: @ 2031CCC + .space 0xD8 + +gUnknown_2031DA4: @ 2031DA4 + .space 0x4 + +gUnknown_2031DA8: @ 2031DA8 + .space 0x4 + +gUnknown_2031DAC: @ 2031DAC + .space 0x4 + +gUnknown_2031DB0: @ 2031DB0 + .space 0x4 + +gUnknown_2031DB4: @ 2031DB4 + .space 0x8 + +gUnknown_2031DBC: @ 2031DBC + .space 0x8 + +gUnknown_2031DC4: @ 2031DC4 + .space 0x8 + +gUnknown_2031DCC: @ 2031DCC + .space 0x8 + +gUnknown_2031DD4: @ 2031DD4 + .space 0x4 + +gUnknown_2031DD8: @ 2031DD8 + .space 0x2 + +gUnknown_2031DDA: @ 2031DDA + .space 0x2 + +gUnknown_2031DDC: @ 2031DDC + .space 0x4 + +gUnknown_2031DE0: @ 2031DE0 + .space 0x4 + +gUnknown_2031DE4: @ 2031DE4 + .space 0x4 + +gUnknown_2031DE8: @ 2031DE8 + .space 0x2 + +gUnknown_2031DEA: @ 2031DEA + .space 0x2 + +gUnknown_2031DEC: @ 2031DEC + .space 0x10 + +gUnknown_2031DFC: @ 2031DFC + .space 0x5000 + +gUnknown_2036DFC: @ 2036DFC + .space 0x1C + +gUnknown_2036E18: @ 2036E18 + .space 0xC + +gUnknown_2036E24: @ 2036E24 + .space 0x4 + +gUnknown_2036E28: @ 2036E28 + .space 0x4 + +gUnknown_2036E2C: @ 2036E2C + .space 0x4 + +gUnknown_2036E30: @ 2036E30 + .space 0x4 + +gUnknown_2036E34: @ 2036E34 + .space 0x4 + +gUnknown_2036E38: @ 2036E38 + .space 0x240 + +gUnknown_2037078: @ 2037078 + .space 0x20 + +gUnknown_2037098: @ 2037098 + .space 0x2 + +gUnknown_203709A: @ 203709A + .space 0x2 + +gUnknown_203709C: @ 203709C + .space 0x4 + +gUnknown_20370A0: @ 20370A0 + .space 0x4 + +gUnknown_20370A4: @ 20370A4 + .space 0x4 + +gUnknown_20370A8: @ 20370A8 + .space 0x4 + +gUnknown_20370AC: @ 20370AC + .space 0x2 + +gUnknown_20370AE: @ 20370AE + .space 0x2 + +gUnknown_20370B0: @ 20370B0 + .space 0x2 + +gUnknown_20370B2: @ 20370B2 + .space 0x2 + +gUnknown_20370B4: @ 20370B4 + .space 0x2 + +gUnknown_20370B6: @ 20370B6 + .space 0x2 + +gUnknown_20370B8: @ 20370B8 + .space 0x2 + +gUnknown_20370BA: @ 20370BA + .space 0x2 + +gUnknown_20370BC: @ 20370BC + .space 0x2 + +gUnknown_20370BE: @ 20370BE + .space 0x2 + +gUnknown_20370C0: @ 20370C0 + .space 0x2 + +gUnknown_20370C2: @ 20370C2 + .space 0x2 + +gUnknown_20370C4: @ 20370C4 + .space 0x2 + +gUnknown_20370C6: @ 20370C6 + .space 0x2 + +gUnknown_20370C8: @ 20370C8 + .space 0x2 + +gUnknown_20370CA: @ 20370CA + .space 0x2 + +gUnknown_20370CC: @ 20370CC + .space 0x2 + +gUnknown_20370CE: @ 20370CE + .space 0x2 + +gUnknown_20370D0: @ 20370D0 + .space 0x2 + +gUnknown_20370D2: @ 20370D2 + .space 0x2 + +gUnknown_20370D4: @ 20370D4 + .space 0x2 + +gUnknown_20370D6: @ 20370D6 + .space 0x2 + +gUnknown_20370D8: @ 20370D8 + .space 0x2 + +gUnknown_20370DA: @ 20370DA + .space 0x2 + +gUnknown_20370DC: @ 20370DC + .space 0x2 + +gUnknown_20370DE: @ 20370DE + .space 0x2 + +gUnknown_20370E0: @ 20370E0 + .space 0x10 + +gUnknown_20370F0: @ 20370F0 + .space 0x4 + +gUnknown_20370F4: @ 20370F4 + .space 0x1 + +gUnknown_20370F5: @ 20370F5 + .space 0x1 + +gUnknown_20370F6: @ 20370F6 + .space 0x9 + +gUnknown_20370FF: @ 20370FF + .space 0x1 + +gUnknown_2037100: @ 2037100 + .space 0x1 + +gUnknown_2037101: @ 2037101 + .space 0x3 + +gUnknown_2037104: @ 2037104 + .space 0x4 + +gUnknown_2037108: @ 2037108 + .space 0xF0 + +gUnknown_20371F8: @ 20371F8 + .space 0x2 + +gUnknown_20371FA: @ 20371FA + .space 0x1E + +gUnknown_2037218: @ 2037218 + .space 0x20 + +gUnknown_2037238: @ 2037238 + .space 0x20 + +gUnknown_2037258: @ 2037258 + .space 0x20 + +gUnknown_2037278: @ 2037278 + .space 0x120 + +gUnknown_2037398: @ 2037398 + .space 0x60 + +gUnknown_20373F8: @ 20373F8 + .space 0x10 + +gUnknown_2037408: @ 2037408 + .space 0x1F0 + +gUnknown_20375F8: @ 20375F8 + .space 0x2 + +gUnknown_20375FA: @ 20375FA + .space 0x3E + +gUnknown_2037638: @ 2037638 + .space 0x78 + +gUnknown_20376B0: @ 20376B0 + .space 0x148 + +gUnknown_20377F8: @ 20377F8 + .space 0x200 + +gUnknown_20379F8: @ 20379F8 + .space 0xC0 + +gUnknown_2037AB8: @ 2037AB8 + .space 0x10 + +gUnknown_2037AC8: @ 2037AC8 + .space 0x4 + +gUnknown_2037ACC: @ 2037ACC + .space 0x400 + +gUnknown_2037ECC: @ 2037ECC + .space 0x4 + +gUnknown_2037ED0: @ 2037ED0 + .space 0x4 + +gUnknown_2037ED4: @ 2037ED4 + .space 0x4 + +gUnknown_2037ED8: @ 2037ED8 + .space 0x4 + +gUnknown_2037EDC: @ 2037EDC + .space 0x4 + +gUnknown_2037EE0: @ 2037EE0 + .space 0x1 + +gUnknown_2037EE1: @ 2037EE1 + .space 0x1 + +gUnknown_2037EE2: @ 2037EE2 + .space 0x1 + +gUnknown_2037EE3: @ 2037EE3 + .space 0x1 + +gUnknown_2037EE4: @ 2037EE4 + .space 0x4 + +gUnknown_2037EE8: @ 2037EE8 + .space 0x4 + +gUnknown_2037EEC: @ 2037EEC + .space 0x2 + +gUnknown_2037EEE: @ 2037EEE + .space 0x10 + +gUnknown_2037EFE: @ 2037EFE + .space 0x2 + +gUnknown_2037F00: @ 2037F00 + .space 0x2 + +gUnknown_2037F02: @ 2037F02 + .space 0x10 + +gUnknown_2037F12: @ 2037F12 + .space 0x2 + +gUnknown_2037F14: @ 2037F14 + .space 0x2 + +gUnknown_2037F16: @ 2037F16 + .space 0x1 + +gUnknown_2037F17: @ 2037F17 + .space 0x1 + +gUnknown_2037F18: @ 2037F18 + .space 0x2 + +gUnknown_2037F1A: @ 2037F1A + .space 0x1 + +gUnknown_2037F1B: @ 2037F1B + .space 0x1 + +gUnknown_2037F1C: @ 2037F1C + .space 0x8 + +gUnknown_2037F24: @ 2037F24 + .space 0x4 + +gUnknown_2037F28: @ 2037F28 + .space 0x8 + +gUnknown_2037F30: @ 2037F30 + .space 0x4 + +gUnknown_2037F34: @ 2037F34 + .space 0x200 + +gUnknown_2038134: @ 2038134 + .space 0x260 + +gUnknown_2038394: @ 2038394 + .space 0x2F0 + +gUnknown_2038684: @ 2038684 + .space 0x20 + +gUnknown_20386A4: @ 20386A4 + .space 0x4 + +gUnknown_20386A8: @ 20386A8 + .space 0x4 + +gUnknown_20386AC: @ 20386AC + .space 0x2 + +gUnknown_20386AE: @ 20386AE + .space 0x2 + +gUnknown_20386B0: @ 20386B0 + .space 0x4 + +gUnknown_20386B4: @ 20386B4 + .space 0x4 + +gUnknown_20386B8: @ 20386B8 + .space 0x4 + +gUnknown_20386BC: @ 20386BC + .space 0x4 + +gUnknown_20386C0: @ 20386C0 + .space 0x4 + +gUnknown_20386C4: @ 20386C4 + .space 0x4 + +gUnknown_20386C8: @ 20386C8 + .space 0x4 + +gUnknown_20386CC: @ 20386CC + .space 0x4 + +gUnknown_20386D0: @ 20386D0 + .space 0xC + +gUnknown_20386DC: @ 20386DC + .space 0x4 + +gUnknown_20386E0: @ 20386E0 + .space 0x20 + +gUnknown_2038700: @ 2038700 + .space 0x2 + +gUnknown_2038702: @ 2038702 + .space 0x2 + +gUnknown_2038704: @ 2038704 + .space 0x27C + +gUnknown_2038980: @ 2038980 + .space 0x500 + +gUnknown_2038E80: @ 2038E80 + .space 0x140 + +gUnknown_2038FC0: @ 2038FC0 + .space 0x640 + +gUnknown_2039600: @ 2039600 + .space 0x1C + +gUnknown_203961C: @ 203961C + .space 0x4 + +gUnknown_2039620: @ 2039620 + .space 0x4 + +gUnknown_2039624: @ 2039624 + .space 0x14 + +gUnknown_2039638: @ 2039638 + .space 0x2 + +gUnknown_203963A: @ 203963A + .space 0x1A + +gUnknown_2039654: @ 2039654 + .space 0x150 + +gUnknown_20397A4: @ 20397A4 + .space 0x4 + +gUnknown_20397A8: @ 20397A8 + .space 0x4 + +gUnknown_20397AC: @ 20397AC + .space 0x4 + +gUnknown_20397B0: @ 20397B0 + .space 0x4 + +gUnknown_20397B4: @ 20397B4 + .space 0x1 + +gUnknown_20397B5: @ 20397B5 + .space 0x1 + +gUnknown_20397B6: @ 20397B6 + .space 0x1 + +gUnknown_20397B7: @ 20397B7 + .space 0x1 + +gUnknown_20397B8: @ 20397B8 + .space 0x2 + +gUnknown_20397BA: @ 20397BA + .space 0x2 + +gUnknown_20397BC: @ 20397BC + .space 0x64 + +gUnknown_2039820: @ 2039820 + .space 0x1 + +gUnknown_2039821: @ 2039821 + .space 0x1 + +gUnknown_2039822: @ 2039822 + .space 0x1 + +gUnknown_2039823: @ 2039823 + .space 0x1 + +gUnknown_2039824: @ 2039824 + .space 0x1 + +gUnknown_2039825: @ 2039825 + .space 0x1 + +gUnknown_2039826: @ 2039826 + .space 0x2 + +gUnknown_2039828: @ 2039828 + .space 0x4 + +gUnknown_203982C: @ 203982C + .space 0x4 + +gUnknown_2039830: @ 2039830 + .space 0x40 + +gUnknown_2039870: @ 2039870 + .space 0x4 + +gUnknown_2039874: @ 2039874 + .space 0x4 + +gUnknown_2039878: @ 2039878 + .space 0x1 + +gUnknown_2039879: @ 2039879 + .space 0x9 + +gUnknown_2039882: @ 2039882 + .space 0x2 + +gUnknown_2039884: @ 2039884 + .space 0x4 + +gUnknown_2039888: @ 2039888 + .space 0x4 + +gUnknown_203988C: @ 203988C + .space 0x18 + +gUnknown_20398A4: @ 20398A4 + .space 0x8 + +gUnknown_20398AC: @ 20398AC + .space 0x8 + +gUnknown_20398B4: @ 20398B4 + .space 0x4 + +gUnknown_20398B8: @ 20398B8 + .space 0x2 + +gUnknown_20398BA: @ 20398BA + .space 0x7A + +gUnknown_2039934: @ 2039934 + .space 0xE + +gUnknown_2039942: @ 2039942 + .space 0xE + +gUnknown_2039950: @ 2039950 + .space 0x4 + +gUnknown_2039954: @ 2039954 + .space 0x4 + +gUnknown_2039958: @ 2039958 + .space 0x4 + +gUnknown_203995C: @ 203995C + .space 0x4 + +gUnknown_2039960: @ 2039960 + .space 0x4 + +gUnknown_2039964: @ 2039964 + .space 0x4 + +gUnknown_2039968: @ 2039968 + .space 0x4 + +gUnknown_203996C: @ 203996C + .space 0x18 + +gUnknown_2039984: @ 2039984 + .space 0x4 + +gUnknown_2039988: @ 2039988 + .space 0x4 + +gUnknown_203998C: @ 203998C + .space 0x4 + +gUnknown_2039990: @ 2039990 + .space 0x4 + +gUnknown_2039994: @ 2039994 + .space 0x2 + +gUnknown_2039996: @ 2039996 + .space 0x2 + +gUnknown_2039998: @ 2039998 + .space 0x4 + +gUnknown_203999C: @ 203999C + .space 0x8 + +gUnknown_20399A4: @ 20399A4 + .space 0x10 + +gUnknown_20399B4: @ 20399B4 + .space 0x4 + +gUnknown_20399B8: @ 20399B8 + .space 0x4 + +gUnknown_20399BC: @ 20399BC + .space 0x4 + +gUnknown_20399C0: @ 20399C0 + .space 0x4 + +gUnknown_20399C4: @ 20399C4 + .space 0x4 + +gUnknown_20399C8: @ 20399C8 + .space 0x4 + +gUnknown_20399CC: @ 20399CC + .space 0x4 + +gUnknown_20399D0: @ 20399D0 + .space 0x4 + +gUnknown_20399D4: @ 20399D4 + .space 0x4 + +gUnknown_20399D8: @ 20399D8 + .space 0x4 + +gUnknown_20399DC: @ 20399DC + .space 0x4 + +gUnknown_20399E0: @ 20399E0 + .space 0x4 + +gUnknown_20399E4: @ 20399E4 + .space 0x4 + +gUnknown_20399E8: @ 20399E8 + .space 0x4 + +gUnknown_20399EC: @ 20399EC + .space 0x4 + +gUnknown_20399F0: @ 20399F0 + .space 0xC + +gUnknown_20399FC: @ 20399FC + .space 0x4 + +gUnknown_2039A00: @ 2039A00 + .space 0x4 + +gUnknown_2039A04: @ 2039A04 + .space 0x8 + +gUnknown_2039A0C: @ 2039A0C + .space 0x2 + +gUnknown_2039A0E: @ 2039A0E + .space 0x2 + +gUnknown_2039A10: @ 2039A10 + .space 0x4 + +gUnknown_2039A14: @ 2039A14 + .space 0x4 + +gUnknown_2039A18: @ 2039A18 + .space 0x2 + +gUnknown_2039A1A: @ 2039A1A + .space 0x1 + +gUnknown_2039A1B: @ 2039A1B + .space 0x1 + +gUnknown_2039A1C: @ 2039A1C + .space 0x4 + +gUnknown_2039A20: @ 2039A20 + .space 0x4 + +gUnknown_2039A24: @ 2039A24 + .space 0x4 + +gUnknown_2039A28: @ 2039A28 + .space 0x4 + +gUnknown_2039A2C: @ 2039A2C + .space 0x4 + +gUnknown_2039A30: @ 2039A30 + .space 0x4 + +gUnknown_2039A34: @ 2039A34 + .space 0x4 + +gUnknown_2039A38: @ 2039A38 + .space 0x1004 + +gUnknown_203AA3C: @ 203AA3C + .space 0x74 + +gUnknown_203AAB0: @ 203AAB0 + .space 0x4 + +gUnknown_203AAB4: @ 203AAB4 + .space 0x4 + +gUnknown_203AAB8: @ 203AAB8 + .space 0x4 + +gUnknown_203AABC: @ 203AABC + .space 0x4 + +gUnknown_203AAC0: @ 203AAC0 + .space 0x4 + +gUnknown_203AAC4: @ 203AAC4 + .space 0x2 + +gUnknown_203AAC6: @ 203AAC6 + .space 0xE + +gUnknown_203AAD4: @ 203AAD4 + .space 0x2C + +gUnknown_203AB00: @ 203AB00 + .space 0x2 + +gUnknown_203AB02: @ 203AB02 + .space 0x2 + +gUnknown_203AB04: @ 203AB04 + .space 0x2 + +gUnknown_203AB06: @ 203AB06 + .space 0x2 + +gUnknown_203AB08: @ 203AB08 + .space 0x2 + +gUnknown_203AB0A: @ 203AB0A + .space 0x2 + +gUnknown_203AB0C: @ 203AB0C + .space 0x2 + +gUnknown_203AB0E: @ 203AB0E + .space 0x2 + +gUnknown_203AB10: @ 203AB10 + .space 0x2 + +gUnknown_203AB12: @ 203AB12 + .space 0x2 + +gUnknown_203AB14: @ 203AB14 + .space 0x2 + +gUnknown_203AB16: @ 203AB16 + .space 0x2 + +gUnknown_203AB18: @ 203AB18 + .space 0x2 + +gUnknown_203AB1A: @ 203AB1A + .space 0x2 + +gUnknown_203AB1C: @ 203AB1C + .space 0x2 + +gUnknown_203AB1E: @ 203AB1E + .space 0x2 + +gUnknown_203AB20: @ 203AB20 + .space 0x2 + +gUnknown_203AB22: @ 203AB22 + .space 0x2 + +gUnknown_203AB24: @ 203AB24 + .space 0x4 + +gUnknown_203AB28: @ 203AB28 + .space 0x4 + +gUnknown_203AB2C: @ 203AB2C + .space 0x4 + +gUnknown_203AB30: @ 203AB30 + .space 0x4 + +gUnknown_203AB34: @ 203AB34 + .space 0x4 + +gUnknown_203AB38: @ 203AB38 + .space 0x4 + +gUnknown_203AB3C: @ 203AB3C + .space 0x4 + +gUnknown_203AB40: @ 203AB40 + .space 0x4 + +gUnknown_203AB44: @ 203AB44 + .space 0x4 + +gUnknown_203AB48: @ 203AB48 + .space 0x4 + +gUnknown_203AB4C: @ 203AB4C + .space 0x4 + +gUnknown_203AB50: @ 203AB50 + .space 0x4 + +gUnknown_203AB54: @ 203AB54 + .space 0x4 + +gUnknown_203AB58: @ 203AB58 + .space 0x4 + +gUnknown_203AB5C: @ 203AB5C + .space 0x4 + +gUnknown_203AB60: @ 203AB60 + .space 0x80 + +gUnknown_203ABE0: @ 203ABE0 + .space 0x4 + +gUnknown_203ABE4: @ 203ABE4 + .space 0x4 + +gUnknown_203ABE8: @ 203ABE8 + .space 0x4 + +gUnknown_203ABEC: @ 203ABEC + .space 0x1 + +gUnknown_203ABED: @ 203ABED + .space 0x3 + +gUnknown_203ABF0: @ 203ABF0 + .space 0x18 + +gUnknown_203AC08: @ 203AC08 + .space 0xDC + +gUnknown_203ACE4: @ 203ACE4 + .space 0x4 + +gUnknown_203ACE8: @ 203ACE8 + .space 0x4 + +gUnknown_203ACEC: @ 203ACEC + .space 0x4 + +gUnknown_203ACF0: @ 203ACF0 + .space 0x4 + +gUnknown_203ACF4: @ 203ACF4 + .space 0x8 + +gUnknown_203ACFC: @ 203ACFC + .space 0x6 + +gUnknown_203AD02: @ 203AD02 + .space 0x2 + +gUnknown_203AD04: @ 203AD04 + .space 0x6 + +gUnknown_203AD0A: @ 203AD0A + .space 0x6 + +gUnknown_203AD10: @ 203AD10 + .space 0x4 + +gUnknown_203AD14: @ 203AD14 + .space 0x4 + +gUnknown_203AD18: @ 203AD18 + .space 0x4 + +gUnknown_203AD1C: @ 203AD1C + .space 0x4 + +gUnknown_203AD20: @ 203AD20 + .space 0x4 + +gUnknown_203AD24: @ 203AD24 + .space 0x4 + +gUnknown_203AD28: @ 203AD28 + .space 0x4 + +gUnknown_203AD2C: @ 203AD2C + .space 0x4 + +gUnknown_203AD30: @ 203AD30 + .space 0x4 + +gUnknown_203AD34: @ 203AD34 + .space 0xC + +gUnknown_203AD40: @ 203AD40 + .space 0x18 + +gUnknown_203AD58: @ 203AD58 + .space 0x60 + +gUnknown_203ADB8: @ 203ADB8 + .space 0x4 + +gUnknown_203ADBC: @ 203ADBC + .space 0x4 + +gUnknown_203ADC0: @ 203ADC0 + .space 0x4 + +gUnknown_203ADC4: @ 203ADC4 + .space 0x4 + +gUnknown_203ADC8: @ 203ADC8 + .space 0x4 + +gUnknown_203ADCC: @ 203ADCC + .space 0x4 + +gUnknown_203ADD0: @ 203ADD0 + .space 0x8 + +gUnknown_203ADD8: @ 203ADD8 + .space 0x4 + +gUnknown_203ADDC: @ 203ADDC + .space 0x4 + +gUnknown_203ADE0: @ 203ADE0 + .space 0x4 + +gUnknown_203ADE4: @ 203ADE4 + .space 0xC + +gUnknown_203ADF0: @ 203ADF0 + .space 0x2 + +gUnknown_203ADF2: @ 203ADF2 + .space 0x1 + +gUnknown_203ADF3: @ 203ADF3 + .space 0x1 + +gUnknown_203ADF4: @ 203ADF4 + .space 0x4 + +gUnknown_203ADF8: @ 203ADF8 + .space 0x1 + +gUnknown_203ADF9: @ 203ADF9 + .space 0x1 + +gUnknown_203ADFA: @ 203ADFA + .space 0x2 + +gUnknown_203ADFC: @ 203ADFC + .space 0x2 + +gUnknown_203ADFE: @ 203ADFE + .space 0x6 + +gUnknown_203AE04: @ 203AE04 + .space 0x4 + +gUnknown_203AE08: @ 203AE08 + .space 0x4 + +gUnknown_203AE0C: @ 203AE0C + .space 0x80 + +gUnknown_203AE8C: @ 203AE8C + .space 0x4 + +gUnknown_203AE90: @ 203AE90 + .space 0x4 + +gUnknown_203AE94: @ 203AE94 + .space 0x4 + +gUnknown_203AE98: @ 203AE98 + .space 0x100 + +gUnknown_203AF98: @ 203AF98 + .space 0x2 + +gUnknown_203AF9A: @ 203AF9A + .space 0x80 + +gUnknown_203B01A: @ 203B01A + .space 0x2 + +gUnknown_203B01C: @ 203B01C + .space 0x2 + +gUnknown_203B01E: @ 203B01E + .space 0x2 + +gUnknown_203B020: @ 203B020 + .space 0x4 + +gUnknown_203B024: @ 203B024 + .space 0x20 + +gUnknown_203B044: @ 203B044 + .space 0x4 + +gUnknown_203B048: @ 203B048 + .space 0x1 + +gUnknown_203B049: @ 203B049 + .space 0x1 + +gUnknown_203B04A: @ 203B04A + .space 0x1 + +gUnknown_203B04B: @ 203B04B + .space 0x1 + +gUnknown_203B04C: @ 203B04C + .space 0xC + +gUnknown_203B058: @ 203B058 + .space 0x1 + +gUnknown_203B059: @ 203B059 + .space 0x3 + +gUnknown_203B05C: @ 203B05C + .space 0x8 + +gUnknown_203B064: @ 203B064 + .space 0x4 + +gUnknown_203B068: @ 203B068 + .space 0x2 + +gUnknown_203B06A: @ 203B06A + .space 0x2 + +gUnknown_203B06C: @ 203B06C + .space 0x18 + +gUnknown_203B084: @ 203B084 + .space 0x4 + +gUnknown_203B088: @ 203B088 + .space 0x4 + +gUnknown_203B08C: @ 203B08C + .space 0x4 + +gUnknown_203B090: @ 203B090 + .space 0x4 + +gUnknown_203B094: @ 203B094 + .space 0x4 + +gUnknown_203B098: @ 203B098 + .space 0x4 + +gUnknown_203B09C: @ 203B09C + .space 0x4 + +gUnknown_203B0A0: @ 203B0A0 + .space 0x9 + +gUnknown_203B0A9: @ 203B0A9 + .space 0x5 + +gUnknown_203B0AE: @ 203B0AE + .space 0x6 + +gUnknown_203B0B4: @ 203B0B4 + .space 0x4 + +gUnknown_203B0B8: @ 203B0B8 + .space 0x4 + +gUnknown_203B0BC: @ 203B0BC + .space 0x4 + +gUnknown_203B0C0: @ 203B0C0 + .space 0x1 + +gUnknown_203B0C1: @ 203B0C1 + .space 0x3 + +gUnknown_203B0C4: @ 203B0C4 + .space 0x4 + +gUnknown_203B0C8: @ 203B0C8 + .space 0x4 + +gUnknown_203B0CC: @ 203B0CC + .space 0x4 + +gUnknown_203B0D0: @ 203B0D0 + .space 0x4 + +gUnknown_203B0D4: @ 203B0D4 + .space 0x4 + +gUnknown_203B0D8: @ 203B0D8 + .space 0x4 + +gUnknown_203B0DC: @ 203B0DC + .space 0x4 + +gUnknown_203B0E0: @ 203B0E0 + .space 0x4 + +gUnknown_203B0E4: @ 203B0E4 + .space 0x4 + +gUnknown_203B0E8: @ 203B0E8 + .space 0x4 + +gUnknown_203B0EC: @ 203B0EC + .space 0x2 + +gUnknown_203B0EE: @ 203B0EE + .space 0x2 + +gUnknown_203B0F0: @ 203B0F0 + .space 0x4 + +gUnknown_203B0F4: @ 203B0F4 + .space 0x4 + +gUnknown_203B0F8: @ 203B0F8 + .space 0x4 + +gUnknown_203B0FC: @ 203B0FC + .space 0x4 + +gUnknown_203B100: @ 203B100 + .space 0x4 + +gUnknown_203B104: @ 203B104 + .space 0x4 + +gUnknown_203B108: @ 203B108 + .space 0x4 + +gUnknown_203B10C: @ 203B10C + .space 0xA + +gUnknown_203B116: @ 203B116 + .space 0x2 + +gUnknown_203B118: @ 203B118 + .space 0x4 + +gUnknown_203B11C: @ 203B11C + .space 0x4 + +gUnknown_203B120: @ 203B120 + .space 0x4 + +gUnknown_203B124: @ 203B124 + .space 0x4 + +gUnknown_203B128: @ 203B128 + .space 0x4 + +gUnknown_203B12C: @ 203B12C + .space 0x4 + +gUnknown_203B130: @ 203B130 + .space 0x10 + +gUnknown_203B140: @ 203B140 + .space 0x4 + +gUnknown_203B144: @ 203B144 + .space 0x4 + +gUnknown_203B148: @ 203B148 + .space 0x10 + +gUnknown_203B158: @ 203B158 + .space 0x4 + +gUnknown_203B15C: @ 203B15C + .space 0x4 + +gUnknown_203B160: @ 203B160 + .space 0x4 + +gUnknown_203B164: @ 203B164 + .space 0x4 + +gUnknown_203B168: @ 203B168 + .space 0x4 + +gUnknown_203B16C: @ 203B16C + .space 0x1 + +gUnknown_203B16D: @ 203B16D + .space 0x1 + +gUnknown_203B16E: @ 203B16E + .space 0x2 + +gUnknown_203B170: @ 203B170 + .space 0x4 + +gUnknown_203B174: @ 203B174 + .space 0x4000 + +gUnknown_203F174: @ 203F174 + .space 0x1 + +gUnknown_203F175: @ 203F175 + .space 0x1 + +gUnknown_203F176: @ 203F176 + .space 0x1 + +gUnknown_203F177: @ 203F177 + .space 0x1 + +gUnknown_203F178: @ 203F178 + .space 0x12 + +gUnknown_203F18A: @ 203F18A + .space 0x6 + +gUnknown_203F190: @ 203F190 + .space 0x1C + +gUnknown_203F1AC: @ 203F1AC + .space 0x1A0 + +gUnknown_203F34C: @ 203F34C + .space 0x20 + +gUnknown_203F36C: @ 203F36C + .space 0x4 + +gUnknown_203F370: @ 203F370 + .space 0xA + +gUnknown_203F37A: @ 203F37A + .space 0x2 + +gUnknown_203F37C: @ 203F37C + .space 0x4 + +gUnknown_203F380: @ 203F380 + .space 0x4 + +gUnknown_203F384: @ 203F384 + .space 0x4 + +gUnknown_203F388: @ 203F388 + .space 0x4 + +gUnknown_203F38C: @ 203F38C + .space 0x10 + +gUnknown_203F39C: @ 203F39C + .space 0x4 + +gUnknown_203F3A0: @ 203F3A0 + .space 0x4 + +gUnknown_203F3A4: @ 203F3A4 + .space 0x4 + +gUnknown_203F3A8: @ 203F3A8 + .space 0x6 + +gUnknown_203F3AE: @ 203F3AE + .space 0x2 + +gUnknown_203F3B0: @ 203F3B0 + .space 0x8 + +gUnknown_203F3B8: @ 203F3B8 + .space 0x4 + +gUnknown_203F3BC: @ 203F3BC + .space 0x4 + +gUnknown_203F3C0: @ 203F3C0 + .space 0x4 + +gUnknown_203F3C4: @ 203F3C4 + .space 0x4 + +gUnknown_203F3C8: @ 203F3C8 + .space 0x4 + +gUnknown_203F3CC: @ 203F3CC + .space 0x4 + +gUnknown_203F3D0: @ 203F3D0 + .space 0x4 + +gUnknown_203F3D4: @ 203F3D4 + .space 0x4 + +gUnknown_203F3D8: @ 203F3D8 + .space 0x4 + +gUnknown_203F3DC: @ 203F3DC + .space 0x4 + +gUnknown_203F3E0: @ 203F3E0 + .space 0x4 + +gUnknown_203F3E4: @ 203F3E4 + .space 0x14 + +gUnknown_203F3F8: @ 203F3F8 + .space 0x8 + +gUnknown_203F400: @ 203F400 + .space 0x2C + +gUnknown_203F42C: @ 203F42C + .space 0x10 + +gUnknown_203F43C: @ 203F43C + .space 0x4 + +gUnknown_203F440: @ 203F440 + .space 0x4 + +gUnknown_203F444: @ 203F444 + .space 0x6 + +gUnknown_203F44A: @ 203F44A + .space 0x6 + +gUnknown_203F450: @ 203F450 + .space 0x4 + +gUnknown_203F454: @ 203F454 + .space 0x4 + +gUnknown_203F458: @ 203F458 + .space 0x4 + +gUnknown_203F45C: @ 203F45C + .space 0x8 + +gUnknown_203F464: @ 203F464 + .space 0x1